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

index 17583b9..fb458d5 100644 (file)
@@ -2441,6 +2441,24 @@ define({ "api": [
     "groupTitle": "Chat_Interactions"
   },
   {
+    "type": "put",
+    "url": "/api/chat/interactions/{id}/close",
+    "title": "Close Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id}/close -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addMessage",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
     "type": "post",
     "url": "/api/chat/interactions/{id}/messages",
     "title": "Creates new messages",
@@ -2518,24 +2536,6 @@ define({ "api": [
     "groupTitle": "Chat_Interactions"
   },
   {
-    "type": "put",
-    "url": "/api/chat/interactions/{id}/close",
-    "title": "Close Interaction",
-    "examples": [
-      {
-        "title": "Example usage:",
-        "content": "curl https://{domain}/api/chat/interactions/{id}/close -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
-        "type": "json"
-      }
-    ],
-    "name": "addMessage",
-    "group": "Chat_Interactions",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
-    "version": "0.0.0",
-    "filename": "server/api/chatInteraction/index.js",
-    "groupTitle": "Chat_Interactions"
-  },
-  {
     "type": "post",
     "url": "/api/chat/interactions/{id}/attachment_upload",
     "title": "Add attachment",
@@ -10888,9 +10888,9 @@ define({ "api": [
     "groupTitle": "Fax_Messages"
   },
   {
-    "type": "post",
-    "url": "/api/fax/messages",
-    "title": "Create message and send Fax",
+    "type": "put",
+    "url": "/api/fax/messages/{id}/reject",
+    "title": "Rejects message",
     "examples": [
       {
         "title": "Example usage:",
@@ -10900,15 +10900,15 @@ define({ "api": [
     ],
     "name": "rejectMessage",
     "group": "Fax_Messages",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/faxMessage/index.js",
     "groupTitle": "Fax_Messages"
   },
   {
-    "type": "put",
-    "url": "/api/fax/messages/{id}/reject",
-    "title": "Rejects message",
+    "type": "post",
+    "url": "/api/fax/messages",
+    "title": "Create message and send Fax",
     "examples": [
       {
         "title": "Example usage:",
@@ -10918,7 +10918,7 @@ define({ "api": [
     ],
     "name": "rejectMessage",
     "group": "Fax_Messages",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/faxMessage/index.js",
     "groupTitle": "Fax_Messages"
@@ -19908,36 +19908,36 @@ define({ "api": [
   },
   {
     "type": "get",
-    "url": "/api/rpc/voice/queues",
-    "title": "Gets a list of RTVoiceQueues",
+    "url": "/api/rpc/outbound",
+    "title": "Gets a list of RTOutbound",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/rpc/voice/queues -v -u {name}:{password}",
+        "content": "curl https://{domain}/api/rpc/outbound -v -u {name}:{password}",
         "type": "json"
       }
     ],
     "name": "RTVoiceQueues",
     "group": "RPC_Realtime",
-    "description": "<p>Motion will return a list of realtime voice queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a list of realtime outbound parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/rpc/index.js",
     "groupTitle": "RPC_Realtime"
   },
   {
     "type": "get",
-    "url": "/api/rpc/outbound",
-    "title": "Gets a list of RTOutbound",
+    "url": "/api/rpc/voice/queues",
+    "title": "Gets a list of RTVoiceQueues",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/rpc/outbound -v -u {name}:{password}",
+        "content": "curl https://{domain}/api/rpc/voice/queues -v -u {name}:{password}",
         "type": "json"
       }
     ],
     "name": "RTVoiceQueues",
     "group": "RPC_Realtime",
-    "description": "<p>Motion will return a list of realtime outbound parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a list of realtime voice queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/rpc/index.js",
     "groupTitle": "RPC_Realtime"
@@ -22851,12 +22851,12 @@ define({ "api": [
   },
   {
     "type": "post",
-    "url": "/api/sms/accounts/{id}/status",
+    "url": "/api/sms/messages/{id}/status",
     "title": "Receive message status",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X POST",
+        "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST",
         "type": "json"
       }
     ],
@@ -22864,41 +22864,41 @@ define({ "api": [
     "group": "Sms_Accounts",
     "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/smsAccount/index.js",
+    "filename": "server/api/smsMessage/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
-    "type": "post",
-    "url": "/api/sms/messages/{id}/status",
-    "title": "Receive message status",
+    "type": "get",
+    "url": "/api/sms/accounts/{id}/status",
+    "title": "Receive message status as get request",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET",
         "type": "json"
       }
     ],
     "name": "statusMessage",
     "group": "Sms_Accounts",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/smsMessage/index.js",
+    "filename": "server/api/smsAccount/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
-    "type": "get",
+    "type": "post",
     "url": "/api/sms/accounts/{id}/status",
-    "title": "Receive message status as get request",
+    "title": "Receive message status",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X POST",
         "type": "json"
       }
     ],
     "name": "statusMessage",
     "group": "Sms_Accounts",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/smsAccount/index.js",
     "groupTitle": "Sms_Accounts"
@@ -26240,12 +26240,12 @@ define({ "api": [
   },
   {
     "type": "delete",
-    "url": "/api/whatsapp/queues/{id}/teams",
+    "url": "/api/fax/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26253,17 +26253,17 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/whatsappQueue/index.js",
+    "filename": "server/api/faxQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/openchannel/queues/{id}/teams",
+    "url": "/api/mail/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26271,17 +26271,17 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/openchannelQueue/index.js",
+    "filename": "server/api/mailQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/voice/queues/{id}/teams",
+    "url": "/api/openchannel/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26289,7 +26289,7 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/voiceQueue/index.js",
+    "filename": "server/api/openchannelQueue/index.js",
     "groupTitle": "Teams"
   },
   {
@@ -26312,30 +26312,12 @@ define({ "api": [
   },
   {
     "type": "delete",
-    "url": "/api/voice/Prefixes/{id}/teams",
-    "title": "Remove teams from a voice prefix",
-    "examples": [
-      {
-        "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -v -u {name}:{password} -X DELETE",
-        "type": "json"
-      }
-    ],
-    "name": "RemoveTeams",
-    "group": "Teams",
-    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
-    "version": "0.0.0",
-    "filename": "server/api/voicePrefix/index.js",
-    "groupTitle": "Teams"
-  },
-  {
-    "type": "delete",
-    "url": "/api/chat/queues/{id}/teams",
+    "url": "/api/whatsapp/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26343,17 +26325,17 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/chatQueue/index.js",
+    "filename": "server/api/whatsappQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/fax/queues/{id}/teams",
+    "url": "/api/voice/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26361,17 +26343,17 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/faxQueue/index.js",
+    "filename": "server/api/voiceQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/mail/queues/{id}/teams",
+    "url": "/api/chat/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
@@ -26379,7 +26361,7 @@ define({ "api": [
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/mailQueue/index.js",
+    "filename": "server/api/chatQueue/index.js",
     "groupTitle": "Teams"
   },
   {
@@ -31407,42 +31389,6 @@ define({ "api": [
   },
   {
     "type": "post",
-    "url": "/api/voice/prefixes/{id}/teams",
-    "title": "Add teams to voice prefix",
-    "examples": [
-      {
-        "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
-        "type": "json"
-      }
-    ],
-    "name": "AddTeams",
-    "group": "Voice_Prefix",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
-    "version": "0.0.0",
-    "filename": "server/api/voicePrefix/index.js",
-    "groupTitle": "Voice_Prefix"
-  },
-  {
-    "type": "get",
-    "url": "/api/voice/prefixes/{id}/teams",
-    "title": "Gets voice prefix team",
-    "examples": [
-      {
-        "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -v -u {name}:{password}  -X GET",
-        "type": "json"
-      }
-    ],
-    "name": "GetTeams",
-    "group": "Voice_Prefix",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
-    "version": "0.0.0",
-    "filename": "server/api/voicePrefix/index.js",
-    "groupTitle": "Voice_Prefix"
-  },
-  {
-    "type": "post",
     "url": "/api/voice/prefixes/{id}/users",
     "title": "Add agents to a prefix",
     "examples": [
@@ -33365,37 +33311,37 @@ define({ "api": [
     "groupTitle": "Voice_Recordings"
   },
   {
-    "type": "get",
+    "type": "post",
     "url": "/api/voice/recordings/{id}/transcribe",
     "title": "Run Transcribe Recording",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -v -u {name}:{password} -X GET",
+        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -d '{\"runSentiment\": \"true\"}' -v -u {name}:{password} -X POST",
         "type": "json"
       }
     ],
     "name": "transcribe",
     "group": "Voice_Recordings",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/voiceRecording/index.js",
     "groupTitle": "Voice_Recordings"
   },
   {
-    "type": "post",
+    "type": "get",
     "url": "/api/voice/recordings/{id}/transcribe",
     "title": "Run Transcribe Recording",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -d '{\"runSentiment\": \"true\"}' -v -u {name}:{password} -X POST",
+        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -v -u {name}:{password} -X GET",
         "type": "json"
       }
     ],
     "name": "transcribe",
     "group": "Voice_Recordings",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/voiceRecording/index.js",
     "groupTitle": "Voice_Recordings"
index 5c8c36e..726d908 100644 (file)
     "groupTitle": "Chat_Interactions"
   },
   {
+    "type": "put",
+    "url": "/api/chat/interactions/{id}/close",
+    "title": "Close Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id}/close -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addMessage",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
     "type": "post",
     "url": "/api/chat/interactions/{id}/messages",
     "title": "Creates new messages",
     "groupTitle": "Chat_Interactions"
   },
   {
-    "type": "put",
-    "url": "/api/chat/interactions/{id}/close",
-    "title": "Close Interaction",
-    "examples": [
-      {
-        "title": "Example usage:",
-        "content": "curl https://{domain}/api/chat/interactions/{id}/close -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
-        "type": "json"
-      }
-    ],
-    "name": "addMessage",
-    "group": "Chat_Interactions",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
-    "version": "0.0.0",
-    "filename": "server/api/chatInteraction/index.js",
-    "groupTitle": "Chat_Interactions"
-  },
-  {
     "type": "post",
     "url": "/api/chat/interactions/{id}/attachment_upload",
     "title": "Add attachment",
     "groupTitle": "Fax_Messages"
   },
   {
-    "type": "post",
-    "url": "/api/fax/messages",
-    "title": "Create message and send Fax",
+    "type": "put",
+    "url": "/api/fax/messages/{id}/reject",
+    "title": "Rejects message",
     "examples": [
       {
         "title": "Example usage:",
     ],
     "name": "rejectMessage",
     "group": "Fax_Messages",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/faxMessage/index.js",
     "groupTitle": "Fax_Messages"
   },
   {
-    "type": "put",
-    "url": "/api/fax/messages/{id}/reject",
-    "title": "Rejects message",
+    "type": "post",
+    "url": "/api/fax/messages",
+    "title": "Create message and send Fax",
     "examples": [
       {
         "title": "Example usage:",
     ],
     "name": "rejectMessage",
     "group": "Fax_Messages",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/faxMessage/index.js",
     "groupTitle": "Fax_Messages"
   },
   {
     "type": "get",
-    "url": "/api/rpc/voice/queues",
-    "title": "Gets a list of RTVoiceQueues",
+    "url": "/api/rpc/outbound",
+    "title": "Gets a list of RTOutbound",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/rpc/voice/queues -v -u {name}:{password}",
+        "content": "curl https://{domain}/api/rpc/outbound -v -u {name}:{password}",
         "type": "json"
       }
     ],
     "name": "RTVoiceQueues",
     "group": "RPC_Realtime",
-    "description": "<p>Motion will return a list of realtime voice queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a list of realtime outbound parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/rpc/index.js",
     "groupTitle": "RPC_Realtime"
   },
   {
     "type": "get",
-    "url": "/api/rpc/outbound",
-    "title": "Gets a list of RTOutbound",
+    "url": "/api/rpc/voice/queues",
+    "title": "Gets a list of RTVoiceQueues",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/rpc/outbound -v -u {name}:{password}",
+        "content": "curl https://{domain}/api/rpc/voice/queues -v -u {name}:{password}",
         "type": "json"
       }
     ],
     "name": "RTVoiceQueues",
     "group": "RPC_Realtime",
-    "description": "<p>Motion will return a list of realtime outbound parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a list of realtime voice queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/rpc/index.js",
     "groupTitle": "RPC_Realtime"
   },
   {
     "type": "post",
-    "url": "/api/sms/accounts/{id}/status",
+    "url": "/api/sms/messages/{id}/status",
     "title": "Receive message status",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X POST",
+        "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST",
         "type": "json"
       }
     ],
     "group": "Sms_Accounts",
     "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/smsAccount/index.js",
+    "filename": "server/api/smsMessage/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
-    "type": "post",
-    "url": "/api/sms/messages/{id}/status",
-    "title": "Receive message status",
+    "type": "get",
+    "url": "/api/sms/accounts/{id}/status",
+    "title": "Receive message status as get request",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET",
         "type": "json"
       }
     ],
     "name": "statusMessage",
     "group": "Sms_Accounts",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/smsMessage/index.js",
+    "filename": "server/api/smsAccount/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
-    "type": "get",
+    "type": "post",
     "url": "/api/sms/accounts/{id}/status",
-    "title": "Receive message status as get request",
+    "title": "Receive message status",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X POST",
         "type": "json"
       }
     ],
     "name": "statusMessage",
     "group": "Sms_Accounts",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/smsAccount/index.js",
     "groupTitle": "Sms_Accounts"
   },
   {
     "type": "delete",
-    "url": "/api/whatsapp/queues/{id}/teams",
+    "url": "/api/fax/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/whatsappQueue/index.js",
+    "filename": "server/api/faxQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/openchannel/queues/{id}/teams",
+    "url": "/api/mail/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/openchannelQueue/index.js",
+    "filename": "server/api/mailQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/voice/queues/{id}/teams",
+    "url": "/api/openchannel/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/voiceQueue/index.js",
+    "filename": "server/api/openchannelQueue/index.js",
     "groupTitle": "Teams"
   },
   {
   },
   {
     "type": "delete",
-    "url": "/api/voice/Prefixes/{id}/teams",
-    "title": "Remove teams from a voice prefix",
-    "examples": [
-      {
-        "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -v -u {name}:{password} -X DELETE",
-        "type": "json"
-      }
-    ],
-    "name": "RemoveTeams",
-    "group": "Teams",
-    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
-    "version": "0.0.0",
-    "filename": "server/api/voicePrefix/index.js",
-    "groupTitle": "Teams"
-  },
-  {
-    "type": "delete",
-    "url": "/api/chat/queues/{id}/teams",
+    "url": "/api/whatsapp/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/chatQueue/index.js",
+    "filename": "server/api/whatsappQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/fax/queues/{id}/teams",
+    "url": "/api/voice/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/faxQueue/index.js",
+    "filename": "server/api/voiceQueue/index.js",
     "groupTitle": "Teams"
   },
   {
     "type": "delete",
-    "url": "/api/mail/queues/{id}/teams",
+    "url": "/api/chat/queues/{id}/teams",
     "title": "Remove teams from a queue",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE",
         "type": "json"
       }
     ],
     "group": "Teams",
     "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
-    "filename": "server/api/mailQueue/index.js",
+    "filename": "server/api/chatQueue/index.js",
     "groupTitle": "Teams"
   },
   {
   },
   {
     "type": "post",
-    "url": "/api/voice/prefixes/{id}/teams",
-    "title": "Add teams to voice prefix",
-    "examples": [
-      {
-        "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
-        "type": "json"
-      }
-    ],
-    "name": "AddTeams",
-    "group": "Voice_Prefix",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
-    "version": "0.0.0",
-    "filename": "server/api/voicePrefix/index.js",
-    "groupTitle": "Voice_Prefix"
-  },
-  {
-    "type": "get",
-    "url": "/api/voice/prefixes/{id}/teams",
-    "title": "Gets voice prefix team",
-    "examples": [
-      {
-        "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/prefixes/{id}/teams -v -u {name}:{password}  -X GET",
-        "type": "json"
-      }
-    ],
-    "name": "GetTeams",
-    "group": "Voice_Prefix",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
-    "version": "0.0.0",
-    "filename": "server/api/voicePrefix/index.js",
-    "groupTitle": "Voice_Prefix"
-  },
-  {
-    "type": "post",
     "url": "/api/voice/prefixes/{id}/users",
     "title": "Add agents to a prefix",
     "examples": [
     "groupTitle": "Voice_Recordings"
   },
   {
-    "type": "get",
+    "type": "post",
     "url": "/api/voice/recordings/{id}/transcribe",
     "title": "Run Transcribe Recording",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -v -u {name}:{password} -X GET",
+        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -d '{\"runSentiment\": \"true\"}' -v -u {name}:{password} -X POST",
         "type": "json"
       }
     ],
     "name": "transcribe",
     "group": "Voice_Recordings",
-    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/voiceRecording/index.js",
     "groupTitle": "Voice_Recordings"
   },
   {
-    "type": "post",
+    "type": "get",
     "url": "/api/voice/recordings/{id}/transcribe",
     "title": "Run Transcribe Recording",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -d '{\"runSentiment\": \"true\"}' -v -u {name}:{password} -X POST",
+        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -v -u {name}:{password} -X GET",
         "type": "json"
       }
     ],
     "name": "transcribe",
     "group": "Voice_Recordings",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
     "version": "0.0.0",
     "filename": "server/api/voiceRecording/index.js",
     "groupTitle": "Voice_Recordings"
index 0c9382f..8542fcf 100644 (file)
@@ -1,6 +1,6 @@
 define({
   "name": "xCALLY Motion API",
-  "version": "2.5.35",
+  "version": "2.5.34",
   "description": "Thank you for choosing xCALLY MOTION, one of the first Omni Channel solution integrated with AsteriskTM and the most innovative real time solutions available on the market.",
   "title": "xCALLY MOTION API",
   "header": {
@@ -17,7 +17,7 @@ define({
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2021-09-10T08:21:38.468Z",
+    "time": "2021-09-10T08:59:14.535Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 966c017..20dd3fe 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "xCALLY Motion API",
-  "version": "2.5.35",
+  "version": "2.5.34",
   "description": "Thank you for choosing xCALLY MOTION, one of the first Omni Channel solution integrated with AsteriskTM and the most innovative real time solutions available on the market.",
   "title": "xCALLY MOTION API",
   "header": {
@@ -17,7 +17,7 @@
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2021-09-10T08:21:38.468Z",
+    "time": "2021-09-10T08:59:14.535Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 07334ea..3b53b1d 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "motion",
-  "version": "2.5.345",
+  "version": "2.5.34",
   "description": "xCALLY Motion is the new Realtime asynchronous solution for your multichannel contact center over Asterisk.",
   "main": "server/app.js",
   "engines": {
@@ -50,6 +50,7 @@
     "aws-sdk": "2.610.0",
     "bimedia-machine-uuid": "1.0.1",
     "bluebird": "3.7.2",
+    "html-entities": "^2.3.2",
     "body-parser": "1.19.0",
     "compare-versions": "3.6.0",
     "composable-middleware": "0.3.0",
index 5c4734e..53a27fb 100644 (file)
@@ -1,15 +1,15 @@
 {
   "FORGOTPASSWORD": {
-    "TITLE": "Passwort wiederherstellen",
-    "EMAIL_ADRESS": "E-Mail Adresse",
+    "TITLE": "Ihr Passwort wiederherstellen",
+    "EMAIL_ADRESS": "E-mail Adresse",
     "SEND_RESET_LINK": "LINK ZUM ZURÜCKSETZEN SENDEN",
     "GO_BACK": "Zurück zum Login",
     "LINK_SENT": "Link gesendet",
-    "LINNK_SENT_MESSAGE": "Eine E-Mail mit einem Link zum Zurücksetzen des Passwortes wurde an Ihre Adresse gesendet.",
-    "PASSWORD_RESET_ERROR": "Fehler beim Zurücksetzen des Passwortes",
+    "LINNK_SENT_MESSAGE": "Eine e-Mail mit einem Link zum Zurücksetzen des Kennworts wurde an Ihre Adresse gesendet!",
+    "PASSWORD_RESET_ERROR": "Passwort Fehler zurücksetzen",
     "ERRORS": {
-      "EMAIL_REQUIRED": "Eingabe E-Mail Adresse erforderlich",
-      "EMAIL_MUST_VALID": "Es muss eine gültige E-Mail Adresse eingegeben werden"
+      "EMAIL_REQUIRED": "Im Feld E-Mail ist erforderlich",
+      "EMAIL_MUST_VALID": "E-Mail muss eine gültige e-mail Adresse"
     }
   }
 }
index bced170..c090dfa 100644 (file)
@@ -1,16 +1,16 @@
 {
   "LOGIN": {
-    "TITLE": "Bitte mit Ihrem Konto anmelden",
+    "TITLE": "Melden Sie sich bei Ihrem Konto an",
     "EMAIL": "E-Mail",
     "PASSWORD": "Passwort",
-    "REMEMBER_ME": "Anmeldedaten merken",
+    "REMEMBER_ME": "Erinnere Dich an Mich",
     "FORGOT_PASSWORD": "Passwort vergessen?",
-    "LOG_IN": "ANMELDEN",
+    "LOG_IN": "LOG IN",
     "OR": "Oder",
-    "WITH_GOOGLE": "Anmeldung mit Google",
-    "WITH_FACEBOOK": "Anmeldung mit Facebook",
+    "WITH_GOOGLE": "Melden Sie sich mit Google",
+    "WITH_FACEBOOK": "Mit Facebook anmelden",
     "DONT_HAVE_ACCOUNT": "Sie haben noch kein Konto?",
-    "CREATE_ACCOUNT": "Konto erstellen",
+    "CREATE_ACCOUNT": "Erstellen Sie ein Konto",
     "ERRORS": {
       "EMAIL_REQUIRED": "Pflichtfeld",
       "EMAIL_MUST_VALID": "Falsches Format",
@@ -18,8 +18,8 @@
       "USERNAME_REQUIRED": "Pflichtfeld"
     },
     "USERNAME": "Benutzername",
-    "CANCEL": "Abbrechen",
-    "SELECT": "Auswählen",
+    "CANCEL": "Stornieren",
+    "SELECT": "Wählen",
     "TELEPHONES": "Telefone"
   }
 }
index e6b577a..e60162b 100644 (file)
@@ -13,7 +13,7 @@
       "METRIC_REQUIRED": "Pflichtfeld",
       "COLUMN_REQUIRED": "Pflichtfeld",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "CUSTOM_METRIC_REQUIRED": "Pflichtfeld",
+      "CUSTOM_METRIC_REQUIRED": "benutzerdefinierte Metrik (erforderlich)",
       "ALIAS_REQUIRED": "Pflichtfeld"
     },
     "NEW_METRIC": "Neue Metrik",
@@ -23,8 +23,8 @@
     "SAVE": "Speichern",
     "BACK": "Zurück",
     "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Keine auswählen",
     "TYPE": "Typ",
     "EXTRACTEDREPORTS": "Extrahierte Berichte",
     "DATE_RANGE_FROM": "Datum von",
     "GENERAL": "Allgemein",
     "FIELDS": "Felder",
     "CONDITION": "Bedingung",
-    "OPERATOR": "Operator",
+    "OPERATOR": "Betreiber",
     "GROUP": "Gruppe",
     "COLUMN": "Spalte",
     "VALUE": "Wert",
     "PREVIEW": "Vorschau",
-    "LIMITED_RESULT": "Ergebins begrenzt",
+    "LIMITED_RESULT": "BEGRENZTES ERGEBNIS",
     "NO_DATA": "Keine Daten",
     "CONDITIONS": "Bedingungen",
     "ALIAS": "Alias",
     "FUNCTION": "Funktion",
     "GROUP_BY": "Gruppieren nach",
-    "ORDER_BY": "Sortieren nach",
+    "ORDER_BY": "Bestellung von",
     "ADD_REPORTFIELD": "Feld hinzufügen",
     "EDIT_REPORTFIELD": "Feld bearbeiten",
     "DELETE_REPORTFIELD": "Feld löschen",
     "NO_METRIC_FOUND": "Keine Metrik gefunden",
     "NO_AVAILABLE_INFO": "keine Informationen verfügbar",
     "CUSTOM_METRIC": "Benutzerdefinierte Metrik",
-    "DELETE_EXTRACTEDREPORT": "Extrahierte Berichte löschen",
+    "DELETE_EXTRACTEDREPORT": "Löschen extrahierte Berichte",
     "EDIT_EXTRACTEDREPORT": "Extrahierte Berichte bearbeiten",
-    "DOWNLOAD_EXTRACTEDREPORT": "Extrahierte Berichte herunterladen",
+    "DOWNLOAD_EXTRACTEDREPORT": "Herunterladen extrahierte Berichte",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "DELETE": "Löschen",
     "REPORTNAME": "Berichtsname",
     "SEND_IF_EMPTY": "Senden, wenn leer",
index 02f4f10..4bc9896 100644 (file)
@@ -2,12 +2,12 @@
   "CHAT": {
     "AMAZONLEX": "Amazon Lex",
     "TEXT": "Text",
-    "TIMES": "Anzahl der Zeiten pro Interaktion",
+    "TIMES": "Anzahl von Malen pro Interaktion",
     "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
     "AUTOREPLY": "Automatische Antwort",
-    "NEW_CHATDISPOSITION": "Neue Chat-Qualifizierung",
+    "NEW_CHATDISPOSITION": "Neue Chat-Disposition",
     "ENABLECUSTOMERATTACHMENT": "Kundenanhänge aktivieren",
-    "OFFLINE_CHAT_BUTTON": "Button Chat offline",
+    "OFFLINE_CHAT_BUTTON": "Offline-Chat-Taste",
     "OFFLINESTATUS": "Offline Status",
     "NAME": "Name",
     "CHATQUEUES": "Chat-Warteschlangen",
     "STRATEGY": "Strategie",
     "AGENT_TIMEOUT": "Agent Timeout",
     "DESCRIPTION": "Beschreibung",
-    "KEY": "Schlüssel",
+    "KEY": "Key",
     "ALIAS": "Alias-Name",
     "VARIABLE": "Variable",
     "INTERVAL": "Intervall",
-    "EDIT_CLOSE": "Bearbeitung abschließen",
+    "EDIT_CLOSE": "Bearbeiten Schließen",
     "TIMEZONE": "Zeitzone",
     "MESSAGE": "Nachricht",
     "ADVANCED": "Erweitert",
     "FORWARDTRANSCRIPT": "Transkript weiterleiten",
     "FORWARDTRANSCRIPTMESSAGE": "Transkript-Nachricht weiterleiten",
-    "SKIPMESSAGEBUTTON": "Nachrichtenbutton überspringen",
+    "SKIPMESSAGEBUTTON": "Nachrichtentaste überspringen",
     "EDIT_MESSAGE": "Nachricht bearbeiten",
-    "CONDITION_AGREEMENT": "Konditionelle Vereinbarung",
-    "NONE": "Nichts",
+    "CONDITION_AGREEMENT": "Bedingungsvereinbarung",
+    "NONE": "Keine",
     "PRIORITY": "Priorität",
     "ONLINESTATUS": "Online Status",
-    "UNMANAGEDSTATUS": "Status nicht bearbeitet",
+    "UNMANAGEDSTATUS": "Nicht verwalteter Status",
     "AUTOCLOSE": "Automatisches Schließen aktivieren",
-    "ENABLEUNMANAGEDNOTE": "Unbearbeitete Nachricht aktivieren",
-    "UNMANAGEDMESSAGE": "Unbearbeitete Nachricht",
+    "ENABLEUNMANAGEDNOTE": "Nicht verwaltete Nachricht aktivieren",
+    "UNMANAGEDMESSAGE": "Nachricht",
     "SKIPUNMANAGED": "Nachricht überspringen",
     "SENDUNMANAGED": "Nachricht senden",
-    "WEBSITESCRIPT": "Webseiten-Skript",
+    "WEBSITESCRIPT": "Website-Script",
     "DELETE_OFFLINEMESSAGE": "Löschen",
     "OFFLINEMESSAGES": "Offline Nachrichten",
     "FORWARD_OFFLINE": "Offline weiterleiten",
     "FORWARD_OFFLINE_ADDRESS": "Offline-Adresse weiterleiten",
     "CLOSINGFORM": "Formular schließen",
     "ENABLERATING": "Bewertung aktivieren",
-    "ENABLECUSTOMERWRITING": "Kunde kann schreiben, bevor Chat akzeptiert wird",
+    "ENABLECUSTOMERWRITING": "Dem Kunden \"schreiben\" erlauben, bevor der Agent akzeptiert",
     "ENABLEFEEDBACK": "Feedback aktivieren",
     "RATINGTYPE": "Bewertungstyp",
-    "CLOSINGMESSAGE": "Abschluss Nachricht",
-    "CLOSINGMESSAGEBUTTON": "Button für Abschluss Nachricht",
+    "CLOSINGMESSAGE": "Nachricht schließen",
+    "CLOSINGMESSAGEBUTTON": "Nachrichtentaste schließen",
     "RATINGSTARSNUMBER": "Anzahl der Bewertungssterne",
     "EDIT_GOTOIF": "GotoIf bearbeiten",
     "CONDITION": "Bedingung",
-    "TRUEPRIORITY": "Wahre Priorität",
+    "TRUEPRIORITY": "Echte Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "VALUE": "Wert",
     "WEBSITEALIAS": "Website-Alias",
     "ERRORS": {
       "TEXT_REQUIRED": "Pflichtfeld",
       "SENDUNMANAGED_REQUIRED": "Pflichtfeld",
-      "SENDUNMANAGED_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "SKIPUNMANAGED_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "UNMANAGEDMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "WEBSITEALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "SENDUNMANAGED_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "SKIPUNMANAGED_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{{{max}} haben",
+      "UNMANAGEDMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{{{max}} haben",
+      "WEBSITEALIAS_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{{{max}} haben",
       "AGENT_REQUIRED": "Pflichtfeld",
       "QUEUE_REQUIRED": "Pflichtfeld",
       "CONDITION_REQUIRED": "Pflichtfeld",
       "TIMEOUT_REQUIRED": "Pflichtfeld",
       "REJECTURL_MUST_VALID_URL": "Falsches Format",
       "CLOSEURL_MUST_VALID_URL": "Falsches Format",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
       "WAITINGMESSAGE_REQUIRED": "Pflichtfeld",
       "WAITINGTITLE_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "KEY_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
       "KEY_REQUIRED": "Pflichtfeld",
-      "WAITINGMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "WAITINGTITLE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "HEADER_OFFLINE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "CLOSINGQUESTION_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "TEXT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "WAITINGMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "WAITINGTITLE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "HEADER_OFFLINE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "CLOSINGQUESTION_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "TEXT_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "OFFLINEMESSAGEBODY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "PLACEHOLDERMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "NOTETITLE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "OFFLINEMESSAGEBODY_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "PLACEHOLDERMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "NOTETITLE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
       "FONTSIZE_REQUIRED": "Pflichtfeld",
       "COMMAND_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
       "NAME_MUST_VALID_PATTERN": "Falsches Format",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
-      "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "VERTICALPOSITION_REQUIRED": "Pflichtfeld",
-      "CUSTOMERALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "CUSTOMERALIAS_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
       "TAG_REQUIRED": "Pflichtfeld",
-      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "MESSAGEFONTSIZE_REQUIRED": "Pflichtfeld",
       "AGENTALIAS_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "CUSTOMERALIAS_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "SYSTEMALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "SYSTEMALIAS_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
       "SYSTEMALIAS_REQUIRED": "Pflichtfeld",
       "ACCESSKEYID_REQUIRED": "Pflichtfeld",
       "BOTNAME_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld",
       "VIDAOOTOPIC_REQUIRED": "Pflichtfeld"
     },
-    "CM_FIELD": "Kontaktmanager-Feld",
-    "CHATPROACTIVEACTIONS": "Proaktive Anfragen",
-    "NEW_CHATPROACTIVEACTION": "Neue proaktive Anfrage",
-    "EDIT_CHATPROACTIVEACTION": "Proaktive Anfrage bearbeiten",
-    "DELETE_CHATPROACTIVEACTION": "Proaktive Anfrage löschen",
-    "ADD_CHATPROACTIVEACTION": "Proaktive Anfrage hinzufügen",
-    "NO_CHATPROACTIVEACTION_AVAILABLE": "Keine proaktiven Anfragen verfügbar",
+    "CM_FIELD": "Kontakt Manager Feld",
+    "CHATPROACTIVEACTIONS": "Proaktive Aktionen",
+    "NEW_CHATPROACTIVEACTION": "Neue proaktive Aktion",
+    "EDIT_CHATPROACTIVEACTION": "Proaktive Aktion bearbeiten",
+    "DELETE_CHATPROACTIVEACTION": "Proaktive Aktion löschen",
+    "ADD_CHATPROACTIVEACTION": "Proaktive Aktion hinzufügen",
+    "NO_CHATPROACTIVEACTION_AVAILABLE": "Keine proaktiven Aktionen verfügbar",
     "NO_OFFLINEMESSAGE_AVAILABLE": "Keine Offline-Nachrichten verfügbar",
-    "MOUSEOVER": "Mouse-Over",
+    "MOUSEOVER": "Maus über",
     "TIMEOUT": "Timeout",
     "TYPE": "Typ",
-    "SELECTOR": "Selektion",
+    "SELECTOR": "Wählschalter",
     "AGENT": "Agent",
     "GOTO": "Goto",
     "GOTOIF": "GotoIf",
     "QUEUE": "Warteschlange",
     "BUILDER": "Builder",
     "PREVIEW": "Vorschau",
-    "EDIT_AGENT": "Agenten bearbeiten",
+    "EDIT_AGENT": "Agent bearbeiten",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
     "EDIT_GOTO": "Goto bearbeiten",
     "EDIT_GOTOIf": "GotoIf bearbeiten",
     "LIST": "Liste",
     "SNIPPET": "Snippet",
     "FORMS": "Formulare",
-    "UP": "Nach Oben",
-    "DOWN": "Nach Unten",
-    "COLLAPSE": "Einklappen",
-    "PROACTIVEACTIONS": "Proaktive Anfragen",
-    "DISPOSITIONS": "Qualifizierungen",
+    "UP": "Bis",
+    "DOWN": "Unten",
+    "COLLAPSE": "Zusammenklappen",
+    "PROACTIVEACTIONS": "Proaktive Aktionen",
+    "DISPOSITIONS": "Dispositionen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "FIDELITY": "Treue",
-    "APPEARANCE": "Darstellung",
+    "APPEARANCE": "Aussehen",
     "MAINCOLOR": "Hauptfarbe",
     "FOCUSCOLOR": "Fokusfarbe",
-    "BUTTONCOLOR": "Buttonfarbe",
+    "BUTTONCOLOR": "Tastenfarbe",
     "HEADERSHAPE": "Kopfzeilenform",
     "ANIMATION": "Animation",
     "DEFAULT": "Standard",
     "LABELS": "Labels",
     "HEADER_ONLINE": "Online-Kopfzeile",
     "ONLINE_MESSAGE": "Online Nachricht",
-    "NAME_TITLE": "Name Titel",
-    "USERNAME_PLACEHOLDER": "Platzhalter für Nutzernamen",
-    "EMAIL_TITLE": "E-Mail Titel",
-    "EMAIL_PLACEHOLDER": "Platzhalter für E-Mail Adresse",
-    "START_CHAT_BUTTON": "'Chat starten' Button",
-    "AGENTS_BUSY": "Agenten besetzt",
+    "NAME_TITLE": "Name Eingabebezeichnung",
+    "USERNAME_PLACEHOLDER": "Benutzername Eingabe Platzhalter",
+    "EMAIL_TITLE": "E-Mail-Eingabe Label",
+    "EMAIL_PLACEHOLDER": "Platzhalter für E-Mail-Eingabe",
+    "START_CHAT_BUTTON": "'Chat starten' Taste",
+    "AGENTS_BUSY": "Meldung für besetzte Agenten",
     "HEADER_OFFLINE": "Offline-Kopfzeile",
     "OFFLINE_MESSAGE": "Offline Nachricht",
-    "MESSAGE_TITLE": "Nachricht Titel",
-    "ENQUIRY_MESSAGE_PLACEHOLDER": "Platzhalter für Nachrichteneingabe",
-    "ENQUIRY_BUTTON": "Anfrage-Button",
+    "MESSAGE_TITLE": "Nachrichtenbezeichnung",
+    "ENQUIRY_MESSAGE_PLACEHOLDER": "Platzhalter für die Eingabe von Anfragenachrichten",
+    "ENQUIRY_BUTTON": "Anfrage-Taste Text",
     "RATING_MESSAGE": "Bewertungsnachricht",
-    "RATING_SEND": "Button Bewertung senden",
-    "RATING_SKIP": "Button Bewertung überspringen",
+    "RATING_SEND": "Bewertung Senden Tasten-Text",
+    "RATING_SKIP": "Bewertung Überspringen Tasten-Text",
     "ONLINE": "Online",
     "OFFLINE": "Offline",
-    "PROACTIVE": "Proaktiv",
+    "PROACTIVE": "Proaktive",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Methode akzeptieren",
+    "ACCEPTMETHOD": "Methode",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "Schließen",
+    "CLOSE": "Schliessen",
     "CLOSEMETHOD": "Methode schließen",
     "CLOSEURL": "URL schließen",
-    "EMBEDDING": "Einbetten",
+    "EMBEDDING": "Einbettung",
     "GENERAL": "Allgemein",
     "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
     "BACK": "Zurück",
     "HELP": {
-      "MAPKEY": "Das folgende Feld aus dem Kontaktmanager:",
-      "FROMKEY": "wird in dem Chat-Snippet wie folgt zugeordnet:",
-      "TOKEN": "Automatisch generierter Token zur Verwendung im Skript",
+      "MAPKEY": "Das folgende Motion Contact Manager-Feld:",
+      "FROMKEY": "Wird in Ihrem Motion Chat-Snippet wie folgt zugeordnet:",
+      "TOKEN": "Automatisch generiertes Token, das im Skript verwendet wird",
       "COPYSCRIPTTOCLIPBOARD": "Kopieren Sie den Skripttext und fügen Sie ihn in Ihre Website ein",
       "FORWARD_OFFLINE": "Sie können mehrere durch Kommas getrennte Adressen hinzufügen (z. B. john.doe@xcally.com, jane.miller@xcally.com)",
       "MOTIONADDRESS": "Das Feld muss das folgende Format haben: ≪protocol>://<IP-Adresse>[:<port>]. Beispiel: https://X.Y.Z.W",
       "MOTIONPROXY": "Das Feld muss das folgende Format haben: ≪Protocol>:// ≪IP-Adresse>: ≪port>]. Beispiel: https://X.Y.Z.W",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "LIST": "Liste für die Zuordnung aus dem Kontaktmanager",
+      "LIST": "Contact Manager-Liste, die zum Zuordnen von Kontakten verwendet wird",
       "KEY": "Website-Kurzname (5 Zeichen), der auf der Registerkarte \"Agent\" angezeigt wird",
-      "INTEVAL": "Wählen aus der Liste der verfügbaren Intervalle",
-      "TIMEZONE": "Zeitzone auswählen (Standard = lokale Zeitzone)",
-      "ENABLERATING": "Bewertung nach Chat durch Kunden aktivieren",
-      "ENABLEFEEDBACK": "Feedback nach Chat durch Kunden aktivieren (Max. 150 Zeichen)",
-      "FORWARDTRANSCRIPT": "Chatprotokoll nach Abschluss per E-Mail senden",
-      "AUTOCLOSE": "Aktivieren Sie diese Option, wenn Chat-Sitzungen als nicht bearbeitet geschlossen werden sollen, sofern kein Agent verfügbar ist.",
-      "ENABLEUNMANAGEDNOTE": "Automatische Nachricht an den Kunden, wenn alle Agenten besetzt sind und somit der Chat nicht verfügbar ist",
-      "ENABLECUSTOMERWRITING": "Legt fest, ob der Kunde bereits im Chat schreiben kann, bevor ein Agent den Chat entgegen nimmmt. Hinweis: Dadurch kein Status \"unbearbeitet\"",
-      "INTERVAL": "Bitte aus der Liste wählen",
+      "INTEVAL": "Wird aus der Liste der verfügbaren Intervalle ausgewählt",
+      "TIMEZONE": "Wählen Sie eine aus der Liste aus (Standard = lokale Zeitzone)",
+      "ENABLERATING": "Aktivieren Sie es, wenn Sie möchten, dass der Webbesucher die Interaktion am Ende bewerten kann",
+      "ENABLEFEEDBACK": "Aktivieren Sie es, wenn Sie möchten, dass der Webbesucher am Ende ein Feedback (bis zu 150 Zeichen) senden kann",
+      "FORWARDTRANSCRIPT": "Aktivieren Sie diese Option, wenn der Webbesucher aufgefordert wird, ein Chat-Protokoll per E-Mail zu erhalten",
+      "AUTOCLOSE": "Aktivieren Sie diese Option, wenn Chat-Sitzungen als nicht verwaltet geschlossen werden sollen, wenn kein Agent verfügbar ist. Weitere Informationen finden Sie unter: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
+      "ENABLEUNMANAGEDNOTE": "Aktivieren Sie diese Option, wenn dem Besucher eine Nachricht angezeigt werden soll, wenn alle Agenten besetzt sind und der Chat nicht mehr verwaltet wird",
+      "ENABLECUSTOMERWRITING": "Aktivieren Sie es, wenn der Chat gestartet werden soll, ohne auf einen verfügbaren Agenten zu warten (Achtung: Wenn Sie ihn aktivieren, werden Ihre Chats niemals nicht verwaltet). Weitere Informationen finden Sie unter: https://wiki.xcallymotion.com/display/XMV/ Chat + Websites # ChatWebsites-Snippet ",
+      "INTERVAL": "Wählen Sie eins aus der Liste aus",
       "HIDEWHENOFFLINE": "Snippet ausblenden, wenn offline",
-      "AGENTIDENTIFIER": "Agentenkennung innerhalb der Chat-Sitzung im Snippet",
+      "AGENTIDENTIFIER": "Repräsentiert die Agentenkennung innerhalb der Chat-Sitzung im Snippet",
       "WEBSITEALIAS": "Ein Präfix, mit dem der Agentenname (Präfix + Agenten-ID) erstellt wird, der dem Webbesucher während der Chat-Sitzung angezeigt wird",
-      "VERTICALPOSITION": "Prozentualer Abstand in Prozent vom oberen Bildschirmrand",
-      "WELCOMEMESSAGE": "Leer lassen, um keine Nachricht zu senden",
-      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung"
+      "VERTICALPOSITION": "Stellt den Abstand in Prozent von oben dar",
+      "WELCOMEMESSAGE": "Lassen Sie das Feld leer, wenn Sie keine Willkommensnachricht senden möchten",
+      "MANDATORYDISPOSITION": "Obligatorische Disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Pausieren Sie die Verwendung, wenn die obligatorische Disposition aktiviert ist"
     },
     "ADDRESS": "Adresse",
     "ONLINESTATE": "Online Status",
     "RATINGSTATE": "Bewertungsstatus",
     "ENQUIRY": "Anfrage",
     "OFFLINETEMPLATE": "Offline Vorlage",
-    "CHATDISPOSITIONS": "Chat-Qualifizierungen",
-    "NO_CHATDISPOSITION_AVAILABLE": "Keine Qualifizierung verfügbar",
-    "ADD_CHATDISPOSITION": "Qualifizierung hinzufügen",
+    "CHATDISPOSITIONS": "Chat-Dispositionen",
+    "NO_CHATDISPOSITION_AVAILABLE": "Keine Chat-Dispositionen verfügbar",
+    "ADD_CHATDISPOSITION": "Chat Disposition hinzufügen",
     "DELETE": "Löschen",
-    "EDIT_CHATDISPOSITION": "Qualifizierung bearbeiten",
-    "DELETE_CHATDISPOSITION": "Qualifizierung löschen",
+    "EDIT_CHATDISPOSITION": "Chat-Disposition bearbeiten",
+    "DELETE_CHATDISPOSITION": "Chat-Disposition löschen",
     "CHAT": "Chat",
     "ID": "ID",
     "NEW_CHATQUEUE": "Neue Chat-Warteschlange",
     "NEW_CHATWEBSITE": "Neue Chat-Website",
-    "ROUNDED": "Rundes Design",
-    "SQUARED": "Eckiges Design",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ROUNDED": "Abgerundet",
+    "SQUARED": "Quadratisch",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
     "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "CONTACT": "Kontakt",
     "STARTEDAT": "Gestartet am",
     "STATUS": "Status",
     "CLOSED": "Geschlossen",
-    "OPENED": "Geöffnet",
-    "OPEN": "Offen",
+    "OPENED": "Öffnen",
+    "OPEN": "Öffnen",
     "ACCOUNT": "Konto",
     "INTERACTION": "Interaktion",
     "INTERACTIONS": "Interaktionen",
     "WEBSITE": "Website",
-    "ALL": "Alles",
-    "SELECT_STATUS": "Status auswählen",
+    "ALL": "Alle",
+    "SELECT_STATUS": "Wählen Sie einen Status",
     "FILTER": "Filter",
     "FILTERS": "Filter",
     "TEAMADD_CHATQUEUE": "Team zur Chat-Warteschlange hinzufügen",
-    "AGENTADD_CHATQUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
+    "AGENTADD_CHATQUEUE": "Agent zur Chat-Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CLOSEDAT": "Geschlossen am",
-    "DISPOSITION": "Qualifizierung",
+    "DISPOSITION": "Disposition",
     "CREATEDAT": "Erstellt am",
     "NOTES": "Notizen",
     "NO_INTERACTION_AVAILABLE": "Keine Interaktionen verfügbar",
-    "SELECTED_WEBSITE": "Ausgewählte Webseite",
+    "SELECTED_WEBSITE": "Wählen Sie eine Website",
     "GOTOP": "Gotop",
     "EDIT_GOTOP": "Gotop bearbeiten",
-    "SELECT_WEBSITE": "Webseite auswählen",
+    "SELECT_WEBSITE": "Wählen Sie eine Website",
     "INFO": "Info",
     "OFFLINEMESSAGES_CHATWEBSITE": "Zu Offline-Nachrichten gehen",
-    "WAITINGTITLE": "Titel während Warten",
-    "WAITINGMESSAGE": "Wartenachricht",
+    "WAITINGTITLE": "Wartetitel",
+    "WAITINGMESSAGE": "Wartende Nachricht",
     "RATING": "Bewertung",
     "NO_RATINGVALUE": "Keine Bewertung",
-    "AGENTSADD_QUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agent zur Chat-Warteschlange hinzufügen",
     "QUEUES": "Warteschlangen",
     "LOGGED_IN": "Angemeldet",
-    "PAUSED": "in Pause",
+    "PAUSED": "Pausiert",
     "READY": "Bereit",
-    "WAITING": "Wartezustand",
-    "WRITING": "am Schreiben",
+    "WAITING": "Warten",
+    "WRITING": "Schreiben",
     "MAIL": "E-Mail",
     "SMS": "SMS",
-    "OPENCHANNEL": "Offener Kanal",
+    "OPENCHANNEL": "Openchannel",
     "FAX": "Fax",
     "PAUSE": "Pause",
     "REALTIME": "Echtzeit",
     "AGENTS": "Agenten",
     "FULLNAME": "Vollständiger Name",
-    "INTERNAL": "Intern",
+    "INTERNAL": "Interne",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "LOGOUT": "Abmelden",
     "UNPAUSE": "Pause beenden",
-    "AGENTADD_QUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
+    "AGENTADD_QUEUE": "Agent zur Chat-Warteschlange hinzufügen",
     "DEFAULT_PAUSE": "Standard Pause",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Nicht registriert",
+    "UNREGISTERED": "Unregistrierte",
     "UNAVAILABLE": "Nicht verfügbar",
     "NOT_INUSE": "Nicht in Verwendung",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "In Verwendung",
-    "VOICE": "Anrufe",
+    "IN_USE": "Im Einsatz",
+    "VOICE": "Sprache",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_CHATQUEUE": "Zur Echtzeit-Warteschlange für Chat gehen",
+    "GOTOREALTIME_CHATQUEUE": "Go to Echtzeit-Chat-Warteschlange",
     "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "CAPACITY": "Kapazität",
     "TAGS": "Tags",
     "SHOWAGENTAVATAR": "Persönlichen Agenten-Avatar anzeigen",
-    "AGENTAVATAR": "Agenten-Avatar",
-    "SPYINTERACTION": "Mitlesen",
+    "AGENTAVATAR": "Agent Avatar",
+    "SPYINTERACTION": "Spion",
     "INTERACTIONS_CHATWEBSITE": "Zu den Interaktionen gehen",
     "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "CLOSINGQUESTION": "Abschlussfrage",
+    "CLOSINGQUESTION": "Frage schließen",
     "WEBSCRIPT": "Webskript",
-    "NO_CHATCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
-    "NEW_CHATCANNEDANSWER": "Neue Textvorlage",
-    "ADD_CHATCANNEDANSWER": "Textvorlage hinzufügen",
-    "EDIT_CHATCANNEDANSWER": "Textvorlage bearbeiten",
-    "DELETE_CHATCANNEDANSWER": "Textvorlage löschen",
-    "OFFLINEMESSAGESUBJECT": "Betreff der Nachricht bei Offline",
-    "OFFLINEMESSAGEBODY": "Test der Nachricht bei Offline",
-    "FORMSUBMITSUCCESSMESSAGE": "Meldung Formular erfolgreich gesendet",
-    "FORMSUBMITFAILUREMESSAGE": "Meldung Fehler beim Senden des Formulars",
-    "PLACEHOLDERMESSAGE": "Nachricht für Platzhalter",
+    "NO_CHATCANNEDANSWER_AVAILABLE": "Keine vordefinierten Antworten verfügbar",
+    "NEW_CHATCANNEDANSWER": "Neue vordefinierte Antwort",
+    "ADD_CHATCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
+    "EDIT_CHATCANNEDANSWER": "Vordefinierte Antwort bearbeiten",
+    "DELETE_CHATCANNEDANSWER": "Vordefinierte Antwort löschen",
+    "OFFLINEMESSAGESUBJECT": "Betreff der Nachricht",
+    "OFFLINEMESSAGEBODY": "Nachrichtentext",
+    "FORMSUBMITSUCCESSMESSAGE": "Erfolgsmeldung beim Absenden des Formulars",
+    "FORMSUBMITFAILUREMESSAGE": "Fehlermeldung beim Absenden des Formulars",
+    "PLACEHOLDERMESSAGE": "Platzhalter für Nachrichten",
     "NOTETITLE": "Titel der Notiz",
     "DELETE_INTERACTION": "Interaktion löschen",
     "FONTSIZE": "Schriftgröße",
     "TEXTCOLOR": "Textfarbe",
-    "COMMAND": "Eingabe",
+    "COMMAND": "Befehl",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "NOTIFICATION": "Benachrichtigung",
     "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Klingeln",
+    "NOTIFICATIONSOUND": "Ton",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "HIDEWHENOFFLINE": "Ausblenden, wenn offline",
-    "INSERT_MESSAGE_HERE": "Nachricht hier eingeben",
+    "HIDEWHENOFFLINE": "Ausblenden",
+    "INSERT_MESSAGE_HERE": "Fügen Sie hier Ihre Textnachricht ein",
     "AGENTALIAS": "Agent Alias",
     "AGENTFULLNAME": "Vollständiger Name des Agenten",
     "AGENTIDENTIFIER": "Identifikator",
-    "WAITFORTHEASSIGNEDAGENT": "Warten auf den zugewiesenen Mitarbeiter",
+    "WAITFORTHEASSIGNEDAGENT": "Warten auf den zugewiesenen Agenten",
     "ALIGNMENT": "Ausrichtung",
     "BOTTOM_RIGHT": "Unten rechts",
     "LEFT": "Links",
     "CUSTOMERALIAS": "Kunden-Alias",
     "EDIT_TAG": "Tag bearbeiten",
     "TAG": "Tag",
-    "AGENTADD_CHATWEBSITE": "Agenten zur Chat-Website hinzufügen",
+    "AGENTADD_CHATWEBSITE": "Agent zur Chat-Website hinzufügen",
     "BACKGROUNDCOLOR": "Hintergrundfarbe",
     "MESSAGEFONTSIZE": "Schriftgröße der Nachricht",
     "AGENTTRANSFER": "Agententransfer",
     "DIALOGFLOW": "Dialogflow",
     "EDIT_DIALOGFLOW": "Dialogflow bearbeiten",
     "LANGUAGE": "Sprache",
-    "QUEUETRANSFER": "Transfer in Warteschlange",
+    "QUEUETRANSFER": "Warteschlangenübertragung",
     "QUEUETRANSFERTIMEOUT": "Timeout bei der Warteschlangenübertragung",
     "SYSTEMALIAS": "Systemalias",
     "SYSTEMAVATAR": "System-Avatar",
     "TRANSFER": "Transfer",
     "WELCOMEMESSAGE": "Willkommensnachricht",
-    "ENABLECUSTOMERCHECKMARKS": "Bestätigung Nachricht erhalten/gelesen",
-    "CANNEDANSWERS": "Textvorlagen",
-    "CHATCANNEDANSWERS": "Textvorlagen",
+    "ENABLECUSTOMERCHECKMARKS": "Aktivieren vom Kunden gelieferten / gelesenen Benachrichtigungen",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
+    "CHATCANNEDANSWERS": "Vordefinierte Antworten",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
+    "LOGIN_TIME": "Login-Zeit",
+    "PAUSE_TIME": "Pausenzeit",
     "ACCESSKEYID": "Zugangsschlüssel-ID",
-    "BOTNAME": "Botname",
+    "BOTNAME": "Bot-Name",
     "EDIT_AMAZONLEX": "Amazon Lex bearbeiten",
     "LEXREGION": "Region",
     "SECRETACCESSKEY": "Geheimer Zugangsschlüssel",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
-    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "PausenID, wenn Qualifizierung erforderlich",
-    "ENABLESENDBUTTON": "Senden-Button aktivieren",
+    "TEAMS_ASSOCIATION": "Teams Verband",
+    "MANDATORYDISPOSITION": "Obligatorische Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Pausieren Sie die Verwendung, wenn die obligatorische Disposition aktiviert ist",
+    "ENABLESENDBUTTON": "Sendetaste aktivieren",
     "FEEDBACKTITLE": "Feedback-Titel",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterladen inkl. Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
     "LASTMESSAGE": "Letzte Nachricht",
     "VIDAOO": "Vidaoo",
     "VIDAOOAPIKEY": "Vidaoo Api Key",
     "CLIENTEMAIL": "Kunden-E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privater Schlüssel",
+    "PRIVATEKEY": "Privat Key",
     "PROJECTID": "Projekt-ID",
     "EMAIL_ACCOUNT": "Email-Konto",
     "OPEN_NEW_INTERACTION": "Neue Interaktion öffnen",
-    "SUBJECT": "Betreff",
+    "SUBJECT": "Gegenstand",
     "ADD_NOTE": "Notiz hinzufügen",
-    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
-    "NOTE": "Notiz",
+    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
+    "NOTE": "Hinweis",
     "VIDAOOMETADATA": "Vidaoo-Metadaten",
     "VIDAOONOTE": "Vidaoo-Hinweis",
     "VIDAOOTOPIC": "Vidaoo-Thema"
index 3c27f23..da8b00a 100644 (file)
@@ -1,8 +1,8 @@
 {
   "CONTACTMANAGER": {
-    "VOICEQUEUEID": "ID Warteschlange für Sprachanrufe",
-    "CAMPAIGNID": "Kampagnen-ID",
-    "STATE": "Status",
+    "VOICEQUEUEID": "Sprachwarteschlange ID",
+    "CAMPAIGNID": "Kampagne ID",
+    "STATE": "Zustand",
     "NAME": "Name",
     "LISTS": "Listen",
     "UNIQUEID": "Eindeutige ID",
@@ -11,8 +11,8 @@
     "ENDTIME": "Endzeit",
     "MOTION_BULL": "Motion Bull",
     "HOPPER": "Hopper",
-    "FINAL": "Hopper final",
-    "HISTORY": "Hopper historisch",
+    "FINAL": "Hopper Final",
+    "HISTORY": "Hopper Geschichte",
     "SCHEDULEDAT": "Geplant am",
     "SEARCH_FOR_ANYONE": "Suche",
     "EDIT_LIST": "Liste bearbeiten",
     "DELETE_HOPPER": "Hopper löschen",
     "RELOAD": "Neu laden",
     "NO_COMPANIES": "Kein Unternehmen",
-    "NO_AVAILABLE_ITEMS": "Keine Einträge verfügbar",
+    "NO_AVAILABLE_ITEMS": "Keine verfügbaren Artikel",
     "ADD": "Hinzufügen",
     "ERRORS": {
-      "NAME_REQUIRED": "Name ist erforderlich",
-      "FIRSTNAME_REQUIRED": "Vorname ist erforderlich",
-      "PHONE_REQUIRED": "Telefonnummer ist erforderlich",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "FIRSTNAME_REQUIRED": "Der Vorname ist erforderlich",
+      "PHONE_REQUIRED": "Die Telefonnummer ist erforderlich",
       "ALIAS_REQUIRED": "Alias ist erforderlich",
-      "VALUE_REQUIRED": "Wert ist erforderlich",
+      "VALUE_REQUIRED": "Der Wert ist erforderlich",
       "EMAIL_MUST_VALID": "Falsches Format",
-      "PHONEBAR_API": "Statusprüfung für die MotionBar und des Remote-Switches für den Agenten",
+      "PHONEBAR_API": "Prüfen, ob die MotionBar ausgeführt wird und der Fernbedienungsschalter für den Agenten eingeschaltet ist",
       "ACTIONTYPE_REQUIRED": "Pflichtfeld",
       "CLICKTOACTION_REQUIRED": "Pflichtfeld"
     },
     "DESCRIPTION": "Beschreibung",
-    "DISPOSITION": "Qualifizierung",
-    "DISPOSITIONS": "Qualifizierungen",
-    "VOICEDISPOSITIONS": "Anrufqualifizierungen",
-    "NEW_VOICEDISPOSITION": "Neue Anrufqualifizierung",
+    "DISPOSITION": "Disposition",
+    "DISPOSITIONS": "Dispositionen",
+    "VOICEDISPOSITIONS": "Sprachdispositionen",
+    "NEW_VOICEDISPOSITION": "Neue Sprachdisposition",
     "CUSTOM_FIELDS": "Benutzerdefinierte Felder",
     "ADD_LIST": "Liste hinzufügen",
     "BACK": "Zurück",
     "SELECTED": "Ausgewählt",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Keine auswählen",
     "COMPANIES": "Unternehmen",
     "EDIT_COMPANY": "Unternehmen bearbeiten",
     "DELETE_COMPANY": "Unternehmen löschen",
@@ -76,7 +76,7 @@
     "STREET": "Straße",
     "POSTALCODE": "Postleitzahl",
     "DELETE": "Löschen",
-    "DELETE_ALL": "Alles Löschen",
+    "DELETE_ALL": "Alle Löschen",
     "CONTACTMANAGER": "Kontaktmanager",
     "ID": "ID",
     "SETTINGS": "Einstellungen",
     "NEW_CONTACT": "Neuer Kontakt",
     "NEW_TAG": "Neuer Tag",
     "UPLOAD_CONTACTS": "Kontakte hochladen",
-    "FINISH": "Beenden",
-    "SUCCESS": "Erfolg",
+    "FINISH": "Fertig",
+    "SUCCESS": "Erfolgreich",
     "FAILURE": "Fehler",
     "ALL_CONTACTS": "Alle Kontakte",
     "NEW_CUSTOMFIELD": "Neues benutzerdefiniertes Feld",
-    "NO_VOICEDISPOSITION_AVAILABLE": "Keine Anrufqualifizierung verfügbar",
-    "ADD_VOICEDISPOSITION": "Anrufqualifizierung hinzufügen",
-    "EDIT_VOICEDISPOSITION": "Anrufqualifizierung bearbeiten",
-    "DELETE_VOICEDISPOSITION": "Anrufqualifizierung löschen",
-    "VAT": "Ust-ID.",
-    "COMPANYID": "Unternehmens-ID",
+    "NO_VOICEDISPOSITION_AVAILABLE": "Keine Sprachdispositionen verfügbar",
+    "ADD_VOICEDISPOSITION": "Sprachdisposition hinzufügen",
+    "EDIT_VOICEDISPOSITION": "Sprachdisposition bearbeiten",
+    "DELETE_VOICEDISPOSITION": "Sprachdisposition löschen",
+    "VAT": "Mwst.",
+    "COMPANYID": "Ihre Unternehmens-ID",
     "WEBSITE": "Website",
     "EMAIL_DOMAIN": "E-Mail Domain",
     "ADDRESS": "Adresse",
     "GOTOCONTACTS_COMPANY": "Kontakte anzeigen",
     "ADD_AGENT_TO_LIST": "Agenten zur Liste hinzufügen",
     "AGENTADD_LIST": "Agenten zur Liste hinzufügen",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Informationen",
-    "NONE": "Nichts",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "NONE": "Keine",
     "FULLNAME": "Vollständiger Name",
-    "CHECK_DUPLICATES": "auf Duplikate prüfen",
+    "CHECK_DUPLICATES": "Duplikate prüfen",
     "DUPLICATES": "Duplikate",
-    "UPLOAD_CSV": "Hochladen von CSV-Datei",
+    "UPLOAD_CSV": "Hochladen von CSV",
     "TAG": "Tag",
     "UPLOAD": "Hochladen",
     "ALL_AGENTS": "Alle Agenten",
     "DATE_OF_BIRTH": "Geburtsdatum",
     "DATEOFBIRTH": "Geburtsdatum",
     "NOTES": "Notizen",
-    "EXPORTCSVCONTACTS_LIST": "In CSV-Datei exportieren",
+    "EXPORTCSVCONTACTS_LIST": "In CSV exportieren",
     "GOTO_LIST": "Kontakte anzeigen",
     "GOTO_COMPANY": "Kontakte anzeigen",
     "REQUIRED": "Erforderlich",
     "SESSIONS": "Sitzungen",
     "AGENT": "Agent",
     "PROJECT": "Projekt",
-    "SELECT_LIST": "Liste auswählen",
-    "SELECT_COMPANY": "Unternehmen auswählen",
-    "SELECT_TAGS": "Tags auswählen",
+    "SELECT_LIST": "Wählen Sie eine Liste aus",
+    "SELECT_COMPANY": "Wählen Sie ein Unternehmen aus",
+    "SELECT_TAGS": "Wählen Sie ein oder mehrere Tags aus",
     "HELP": {
-      "PHONEBAR_API": "Um Click-to-Call zu aktivieren, geben Sie eine Telefonnummer ein und überprüfen Sie, ob der Remote-Switch für den Agenten eingeschaltet ist",
-      "PHONEBAR_API_MESSAGE": "Um Click-to-Call zu aktivieren, geben Sie eine Telefonnummer ein und überprüfen Sie, ob der Remote-Switch für den Agenten eingeschaltet ist"
+      "PHONEBAR_API": "Um Click-to-Call zu aktivieren, geben Sie eine Telefonnummer ein und überprüfen Sie, ob der Fernbedienungsschalter für den Agenten eingeschaltet ist",
+      "PHONEBAR_API_MESSAGE": "Um Click-to-Call zu aktivieren, geben Sie eine Telefonnummer ein und überprüfen Sie, ob der Fernbedienungsschalter für den Agenten eingeschaltet ist"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "SOCIAL": "Social",
     "ROW": "Reihe",
-    "EXPORT_ERRORS": "Fehler-Log exportieren",
+    "EXPORT_ERRORS": "Fehler exportieren",
     "UPLOAD_COMPLETED": "Hochladen abgeschlossen",
     "STOP": "Stopp",
-    "SELECT_FILE": "Datei auswählen",
+    "SELECT_FILE": "Datei aussuchen",
     "IMPORT_CONTACTS": "Kontakte importieren",
     "MOTIONDIALER": "Motion Bull",
     "PREFIX": "Vorwahl wählen",
     "PRIORITY": "Priorität",
     "USERID": "Agent-ID abrufen",
-    "CUSTOMER_JOURNEY": "Kundenhistorie",
-    "SELECT_TAG": "Tag auswählen",
+    "CUSTOMER_JOURNEY": "Kundenreise",
+    "SELECT_TAG": "Wählen Sie Tags aus",
     "ALL": "Alle",
     "BILLINGINFORMATION": "Abrechnungsdaten",
     "COMPANY_FISCAL_TYPE": "Unternehmenssteuerart",
     "CREATE": "Erstellen",
     "EUROPE": "Europa",
-    "EXPIREDAY": "Ablauftag",
+    "EXPIREDAY": "Ablauftage",
     "FLATDISCOUNT": "Firmenrabatt",
     "INVOICEARTICLE": "Gesetzliche Artikel",
     "ISOCODE": "Nationaler ISO-Code",
     "RELATIONSHIPCOMPANY": " ... mit",
     "SDICODE": "SDI-Code",
     "SOCIAL_CAPITAL": "Aktienkapital",
-    "VATNUMBER_CF": "Umsatzsteuer Identnummer / VAT",
-    "RECALLME": "Rückruf anfordern",
+    "VATNUMBER_CF": "Codice Fiscale / VAT",
+    "RECALLME": "Ruf mich zurück",
     "ACTIONTYPE": "Aktionstyp",
-    "CLICKTOACTION": "Klicken für Aktion"
+    "CLICKTOACTION": "Zur Aktion klicken"
   }
 }
index dbfb7c7..df9fabe 100644 (file)
@@ -1,10 +1,10 @@
 {
   "DASHBOARDS": {
-    "HOME": "Startseite",
+    "HOME": "Home",
     "CHAT": "Chat",
-    "MAIL": "E-Mail",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Offener Kanal",
+    "MAIL": "Email",
+    "SMS": "Sms",
+    "OPENCHANNEL": "Open Channel",
     "FAX": "Fax",
     "RATING": "Bewertung",
     "FEEDBACK": "Feedback",
     "AGENT": "Agent",
     "CREATED_AT": "Erstellt am",
     "CLOSED_AT": "Geschlossen am",
-    "DISPOSITION": "Qualifizierung",
+    "DISPOSITION": "Disposition",
     "CONTACT": "Kontakt",
     "INTERACTION": "Interaktion",
     "BROWSER_NAME": "Browser Name",
     "BROWSER_VERSION": "Browser Version",
-    "OS_NAME": "Betriebssystem Name",
-    "OS_VERSION": "Betriebssystem Version",
+    "OS_NAME": "Name des Betriebssystems",
+    "OS_VERSION": "Version des Betriebssystems",
     "DEVICE_MODEL": "Gerätemodell",
     "DEVICE_VENDOR": "Gerätehersteller",
     "DEVICE_TYPE": "Gerätetyp",
-    "RECALLME": "Rückruf anfordern",
-    "DROP_RATE": "Abbruchrate Anrufe",
+    "RECALLME": "Ruf mich zurück",
+    "DROP_RATE": "Abgebrochene Anrufrate",
     "DROPPED": "Abgebrochen",
-    "DROPPED_TEXT": "Abgebrochene Anrufe innerhalb der Warteschlange",
+    "DROPPED_TEXT": "Abgebrochene Anrufe aus der Warteschlange",
     "DETAIL": "Detail",
     "MOTION_BULL": "Motion Bull",
     "LIMITED": "Limitiert",
     "LIMITED_TEXT": "IVR-Kampagnen Anrufe getätigt/limitiert",
     "DASHBOARDS": "Dashboards",
-    "RECORDINGS": "Aufzeichnungen",
-    "TODAY_MOTION_BULL_STATS": "Tagesstatistiken Warteschlangen",
+    "RECORDINGS": "Aufnahmen",
+    "TODAY_MOTION_BULL_STATS": "Warteschlangen-Kampagnen Tagesstatistiken",
     "ORIGINATED": "Gewählt",
     "ORIGINATED_TEXT": "Anrufe aus der Warteschlange gewählt",
     "UPDATE": "Aktualisieren",
     "MORE": "Mehr",
     "MOTIONDIALER": "Motion Dialer",
-    "DISPOSE": "Qualifizieren",
+    "DISPOSE": "Entsorgen",
     "QUEUES": "Warteschlangen",
-    "DIALER_CALL": "Dialer-Anruf",
+    "DIALER_CALL": "Dialer Anruf",
     "ELAPSED_TIME": "Abgelaufene Zeit",
     "EDIT": "Bearbeiten",
     "MERGE": "Zusammenführen",
     "DUPLICATE": "Duplizieren",
     "UNIQUEID": "Eindeutige ID",
     "CAMPAIGN": "Kampagne",
-    "NONE": "Nichts",
+    "NONE": "Keine",
     "NAME": "Name",
     "ANSWER_MACHINE": "Anrufbeantworter",
     "INTERESTED": "Interessiert",
     "NOT_INTERESTED": "Kein Interesse",
     "PERSONAL_INFO": "Persönliche Infos",
     "SOLD": "Verkauft",
-    "SPECIAL": "Speziell",
+    "SPECIAL": "Spezielle",
     "BLACKLIST": "Blacklist",
-    "RESCHEDULE": "erneut Planen",
+    "RESCHEDULE": "Verschieben",
     "FIRSTNAME": "Vorname",
     "LASTNAME": "Nachname",
-    "MOBILE": "Mobilnummer",
+    "MOBILE": "Mobile",
     "DATE_OF_BIRTH": "Geburtsdatum",
     "COMPANY": "Unternehmen",
     "TAG": "Tag",
     "POSTALCODE": "Postleitzahl",
     "CUSTOM_FIELDS": "Benutzerdefinierte Felder",
     "GENERAL": "Allgemein",
-    "VOICE": "Sprachanrufe",
+    "VOICE": "Sprache",
     "TODAY_IVR_CAMPAIGNS_STATS": "IVR-Tagesstatistiken",
-    "TODAY_INBOUND_STATS": "Tagesstatistiken - eingehende Warteschlangen",
-    "TODAY_OUTBOUND_STATS": "Tagesstatistiken - ausgehende Warteschlangen",
-    "WAITING": "Anrufe in Warteschlange",
+    "TODAY_INBOUND_STATS": "Inbound Warteschlangen Tagesstatistiken",
+    "TODAY_OUTBOUND_STATS": "Outbound Warteschlangen Tagesstatistiken",
+    "WAITING": "Anrufe in der Warteschlange",
     "TALKING": "Im Gespräch",
-    "INBOUND_ANSWERED": "Angenommen eingehend",
-    "OUTBOUND_ANSWERED": "Angenommen ausgehend",
-    "ABANDONED": "Abgebrochen",
-    "TOTAL_OFFERED": "Gesamt angeboten",
+    "INBOUND_ANSWERED": "Angenommen",
+    "OUTBOUND_ANSWERED": "Angenommen",
+    "ABANDONED": "Verlassen",
+    "TOTAL_OFFERED": "Insgesamt",
     "AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "INBOUND_ANSWER_RATE": "Antwortrate eingehend",
-    "OUTBOUND_ANSWER_RATE": "Antwortrate ausgehend",
-    "ABANDON_RATE": "Abbruchrate",
-    "UNMANAGED": "Nicht bearbeitet",
-    "TOTAL": "Gesamt",
+    "INBOUND_ANSWER_RATE": "Angenommene Anrufrate",
+    "OUTBOUND_ANSWER_RATE": "Angenommene Anrufrate",
+    "ABANDON_RATE": "Verlassene Anrufrate",
+    "UNMANAGED": "Nicht verwaltete",
+    "TOTAL": "Insgesamt",
     "TOT_DURATION": "Gesamtdauer",
     "AVG_DURATION": "Durchschnittliche Dauer",
     "HELP": {
-      "ORIGINATEDLIMITED": "IVR Kampagnen gewählt/limitiert",
-      "DROPPED": "Gesamtzahl abgebrochener Anrufe innerhalb der Warteschlange",
-      "DROP_RATE": "Abbruchrate aller Anrufe in der Warteschlange",
-      "WAITING": "Gesamtzahl der wartenden Anrufe aus der Warteschlange",
-      "OUTBOUND_ANSWERED": "Gesamtzahl der angenommenen ausgehenden Anrufe",
-      "ABANDONED": "Gesamtzahl der abgebrochenen Anrufe innerhalb der Warteschlange",
-      "TOTAL_OFFERED": "Gesamtzahl der angebotenen Anrufe in der Warteschlange (angenommen + abgebrochen + nicht bearbeitet in der letzten Warteschlange des Callflows). Hinweis: Anrufe innerhalb der IVR werden nicht berücksichtigt.",
-      "AVG_HOLD_TIME": "Durchschnittliche Wartezeit einer Interaktion bis zur Beantwortung durch einen Agenten.",
-      "OUTBOUND_ANSWER_RATE": "Rate aller angenommenen ausgehenden Anrufe",
-      "ABANDON_RATE": "Rate aller abgebrochener Anrufe innerhalb der Warteschlange",
-      "UNMANAGED": "Gesamtzahl der nicht bearbeiteten Anrufe für alle Warteschlangen. Enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen wurden (siehe Asterisk-Dokumentation für weitere Informationen).",
-      "TOTAL": "Gesamtzahl der ausgehenden Anrufe",
-      "TOT_DURATION": "Gesamtdauer aller ausgehenden Anrufe",
-      "AVG_DURATION": "Durchschnittliche Dauer aller angenommenen ausgehenden Anrufe",
-      "ORIGINATED": "Gesamtzahl der in den Warteschlangen-Kampagnen gewählten Anrufe",
-      "ABANDONED_RATE": "Rate aller abgebrochenen Interaktionen",
-      "AVG_MANAGED_TIME": "Durchschnittliche Bearbeitungszeit einer Interaktion",
-      "MANAGED": "Gesamtzahl der abgeschlossenen Interaktionen",
-      "MANAGED_RATE": "Rate aller bearbeiteten Anrufe",
-      "OPENED": "Gesamtzahl der aktiven Interaktionen",
-      "UNMANAGED_RATE": "Rate aller unbearbeiteten Interaktionen",
-      "VOICE_ABANDONED": "Gesamtzahl der abgebrochenen Anrufe in der Warteschlange unter Berücksichtigung aller vorhandenen Warteschlangen. Hinweis: Anrufe, die wegen Timeout und joinempty abgebrochen wurden, werden nicht berücksichtigt.",
-      "VOICE_ANSWERED": "Gesamtzahl der abgeschlossenen Anrufe für alle vorhandenen Warteschlangen",
-      "VOICE_ANSWER_RATE": "Antwortrate aller Anrufe in der Warteschlange",
-      "VOICE_AVG_HOLD_TIME": "Durchschnittliche Wartezeit bis zur Beantwortung durch einen Agenten für alle vorhandenen Warteschlangen",
-      "VOICE_AVG_TALK_TIME": "Durchschnittliche Gesprächszeit für alle Anrufe aus der Warteschlange ",
-      "VOICE_TALKING": "Gesamtzahl der aktiven Anrufe für alle vorhandenen Warteschlangen",
-      "VOICE_TOTAL_OFFERED": "Gesamtzahl der Anrufe der Warteschlangen (angenommen + abgebrochen + nicht bearbeitet in der letzten Warteschlange des Callflows). Hinweis: Anrufe innerhalb der IVR werden nicht berücksichtigt.",
-      "VOICE_UNMANAGED": "Gesamtzahl der nicht bearbeiteten Anrufe für alle vorhandenen Warteschlangen. Enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen wurden (siehe Asterisk-Dokumentation für weitere Informationen).",
-      "VOICE_WAITING": "Gesamtanzahl der aktuell wartenden Anrufe für alle vorhandenen Warteschlangen",
-      "MANDATORY_DISPOSITION_ENABLED": "Kontaktqualifizierung erforderlich",
-      "EXACT_MATCH_FILTER": "Suche nach einer genauen Übereinstimmung der Suchbegriffe",
-      "LIKE_FILTER": "Suche nach variablen Übereinstimmungen der Suchbegriffe"
+      "ORIGINATEDLIMITED": "IVR Kampagnen gewählt/Limitiert",
+      "DROPPED": "Die Gesamtzahl abgebrochener Anrufe aus der Warteschlange",
+      "DROP_RATE": "Die Rate aller abgebrochener Anrufe aus der Warteschlange",
+      "WAITING": "Die Gesamtzahl der wartenden Anrufe aus der Warteschlange",
+      "OUTBOUND_ANSWERED": "Die Gesamtzahl der angenommenen ausgehenden Anrufe",
+      "ABANDONED": "Die Gesamtzahl der abgebrochenen Anrufe aus der Warteschlange",
+      "TOTAL_OFFERED": "Die Gesamtzahl der Warteschlangenanrufe (angenommen + verlassen + nicht verwaltet in der letzten Warteschlange des Datenflusses). Beachten Sie, dass Anrufe, die in ein IVR und nicht in eine Warteschlange eingehen, nicht berücksichtigt werden.",
+      "AVG_HOLD_TIME": "Die durchschnittliche Interaktionswartezeit, d.h. die durchschnittliche Wartezeit auf die Antwort eines Agenten für alle vorhandenen Interaktionen.",
+      "OUTBOUND_ANSWER_RATE": "Die Rate aller angenommenen ausgehenden Anrufe",
+      "ABANDON_RATE": "Die Rate aller verlassenen Anrufe aus der Warteschlange",
+      "UNMANAGED": "Die Gesamtzahl der nicht verwalteten Warteschlangenanfrufe für alle vorhandenen Warteschlangen. Es enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen werden (siehe Asterisk-Dokumentation für weitere Informationen).",
+      "TOTAL": "Die Gesamtzahl der ausgehenden Anrufe",
+      "TOT_DURATION": "Die Gesamtdauer aller ausgehenden Anrufe",
+      "AVG_DURATION": "Die durchschnittliche Dauer aller angenommenen ausgehenden Anrufe",
+      "ORIGINATED": "Die Gesamtzahl der in den Warteschlangenkampagnen gewählten Anrufe",
+      "ABANDONED_RATE": "Die Rate aller abgebrochenen Interaktionen",
+      "AVG_MANAGED_TIME": "Die durchschnittliche verwaltete Interaktionszeit, nämlich die durchschnittliche Zeit, die während des Gesprächs verbracht wird",
+      "MANAGED": "Die Gesamtzahl der abgeschlossenen Interaktionen",
+      "MANAGED_RATE": "Die verwaltete Rate aller Interaktionen",
+      "OPENED": "Die Gesamtzahl der aktiven Interaktionen",
+      "UNMANAGED_RATE": "Die nicht verwaltete Rate aller Interaktionen",
+      "VOICE_ABANDONED": "Die Gesamtzahl der aufgegebenen Warteschlangenanrufe unter Berücksichtigung aller vorhandenen Warteschlangen. Beachten Sie, dass Anrufe, die wegen Timeout und joinempty abgebrochen werden, nicht berücksichtigt werden",
+      "VOICE_ANSWERED": "Die Gesamtzahl der abgeschlossenen Warteschlangenanrufe für alle vorhandenen Warteschlangen",
+      "VOICE_ANSWER_RATE": "Die Antwortrate aller Warteschlangenanrufe",
+      "VOICE_AVG_HOLD_TIME": "Die durchschnittliche Wartezeit für Warteschlangen, nämlich die durchschnittliche Wartezeit auf die Antwort eines Agenten für alle vorhandenen Warteschlangen",
+      "VOICE_AVG_TALK_TIME": "Die durchschnittliche Gesprächszeit in der Warteschlange, nämlich die durchschnittliche Gesprächszeit für alle vorhandenen Warteschlangen",
+      "VOICE_TALKING": "Die Gesamtzahl der aktiven Warteschlangenanrufe für alle vorhandenen Warteschlangen",
+      "VOICE_TOTAL_OFFERED": "Die Gesamtzahl der Warteschlangenanrufe (angenommen + verlassen + nicht verwaltet in der letzten Warteschlange des Datenflusses). Beachten Sie, dass Anrufe, die in ein IVR und nicht in eine Warteschlange eingehen, nicht berücksichtigt werden.",
+      "VOICE_UNMANAGED": "Die Gesamtzahl der nicht verwalteten Warteschlangenanfrufe für alle vorhandenen Warteschlangen. Es enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen werden (siehe Asterisk-Dokumentation für weitere Informationen).",
+      "VOICE_WAITING": "Die Gesamtanzahl der wartenden Warteschlangenanrufe für alle vorhandenen Warteschlangen",
+      "MANDATORY_DISPOSITION_ENABLED": "Obligatorische Disposition für dieses Konto aktiviert",
+      "EXACT_MATCH_FILTER": "Suche nach einer genauen Übereinstimmung",
+      "LIKE_FILTER": "Suchen Sie nach dem angegebenen Muster"
     },
     "ERRORS": {
       "FIRSTNAME_REQUIRED": "Der erste Name ist erforderlich",
       "CAMPAIGN_REQUIRED": "Pflichtfeld",
       "FAILED_INITIALIZATION": "Fehler während der Initialisierung"
     },
-    "NO_AVAILABLE_INFO": "Keine Information vorhanden",
-    "WELCOME_TO_MOTION": "Willkommen zu Motion",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "WELCOME_TO_MOTION": "Willkommen bei Motion",
     "WELCOME_MESSAGE": "Verwenden Sie die linke Seitenleiste, um durch die verfügbaren Abschnitte zu navigieren",
     "ADD": "Hinzufügen",
-    "CONTACTMANAGER": "Kontaktmanager",
+    "CONTACTMANAGER": "Contact Manager",
     "DASHBOARD": "Dashboard",
     "EDIT_CONTACT": "Kontakt bearbeiten",
     "EMAIL": "E-Mail",
     "NEW_CONTACT": "Neuer Kontakt",
     "PHONE": "Telefon",
     "SAVE": "Speichern",
-    "INBOUND_WAITING_CALLS": "Wartende Anrufe (Eingehend)",
+    "INBOUND_WAITING_CALLS": "Eingehende Anrufe in der Warteschlange",
     "CONTACTS": "Kontakte",
     "MYCONTACTS": "Meine Kontakte",
     "ADD_CONTACT": "Kontakt hinzufügen",
-    "RELOAD": "Neu Laden",
+    "RELOAD": "Neu laden",
     "WAITING_TEXT": "Wartende Interaktionen",
-    "TALKING_TEXT": "Aktive Anrufe",
-    "INBOUND_ANSWERED_TEXT": "Angenommene Anrufe",
-    "ABANDONED_TEXT": "Abgebrochene Anrufe",
-    "DROP_RATE_TEXT": "Abbruchrate",
-    "TOTAL_OFFERED_TEXT": "Gesamt angebotene Interaktionen",
-    "AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit",
-    "AVG_TALK_TIME_TEXT": "Durchschnittliche Gesprächszeit",
-    "INBOUND_ANSWER_RATE_TEXT": "Antwortrate ",
-    "UNMANAGED_TEXT": "Nicht bearbeitete Interaktionen",
-    "TOTAL_TEXT": "Gesamt ausgehende Anrufe",
-    "OUTBOUND_ANSWERED_TEXT": "Beantwortete Anrufe (Ausgehend) ",
+    "TALKING_TEXT": "Aktive Anrufe in der Warteschlange",
+    "INBOUND_ANSWERED_TEXT": "Angenommene Anrufe in der Warteschlange",
+    "ABANDONED_TEXT": "Verlassene Anrufe in der Warteschlange",
+    "DROP_RATE_TEXT": "Rate abgebrochener Anrufe in der Warteschlange",
+    "TOTAL_OFFERED_TEXT": "Gesamtzahl der Interaktionen",
+    "AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit der Interaktionen",
+    "AVG_TALK_TIME_TEXT": "Gesprächszeit der Warteschlangenanrufe",
+    "INBOUND_ANSWER_RATE_TEXT": "Rate angenommener Anrufe in der Warteschlange ",
+    "UNMANAGED_TEXT": "Nicht verwaltete Interaktionen",
+    "TOTAL_TEXT": "Gesamtzahl ausgehender Anrufe",
+    "OUTBOUND_ANSWERED_TEXT": "Ausgehende angenommene Anrufe ",
     "TOT_DURATION_TEXT": "Gesamtdauer ausgehender Anrufe ",
     "AVG_DURATION_TEXT": "Durchschnittliche Dauer ausgehender Anrufe",
     "OUTBOUND_ANSWER_RATE_TEXT": "Rate angenommener ausgehender Anrufe",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
-    "REPLY_PLACEHOLDER": "Text eingeben und ENTER drücken zum Senden",
+    "OF": "Von",
+    "REPLY_PLACEHOLDER": "Geben Sie ein und drücken Sie die Eingabetaste, um eine Nachricht zu senden",
     "CONTACT_INFO": "Kontaktinformationen",
-    "CLOSE_AND_DISPOSE": "Schließen und Qualifizieren",
-    "DISPOSITIONS": "Qualifizierungen",
-    "CLOSE_WITHOUT_DISPOSE": "Schließen ohne Qualifizierung",
-    "ACCEPT": "Annehmen",
+    "CLOSE_AND_DISPOSE": "Schließen und Entsorgen",
+    "DISPOSITIONS": "Dispositionen",
+    "CLOSE_WITHOUT_DISPOSE": "Schließen ohne Entsorgen",
+    "ACCEPT": "Akzeptieren",
     "REJECT": "Ablehnen",
     "CLOSED": "Geschlossen",
-    "INFO": "Information",
+    "INFO": "Info",
     "NOTE": "Hinweis",
-    "ACCEPT_ELSEWHERE": "Von anderem Teilnehmer angenommen",
+    "ACCEPT_ELSEWHERE": "Anderswo akzeptiert",
     "ATTENTION": "Achtung",
     "SOCIAL": "Sozial",
     "NO_JSCRIPTY_PROJECTS_AVAILABLE": "Keine Jscripty-Projekte verfügbar",
     "FILTER": "Filter",
     "SELECT_STATUS": "Status auswählen",
     "SELECT_ACCOUNT": "Konto auswählen",
-    "SELECT_WEBSITE": "Webseite auswählen",
-    "ALL": "Alles",
+    "SELECT_WEBSITE": "Wählen Sie die Webseite",
+    "ALL": "Alle",
     "INTERACTIONS": "Interaktionen",
-    "STARTEDAT": "Begonnen am",
+    "STARTEDAT": "Gestartet am",
     "STATUS": "Status",
     "OPEN": "Öffnen",
-    "SHOW": "Anzeigen",
+    "SHOW": "Zeigen",
     "ME": "ICH",
     "NOT_ASSIGNED": "Nicht zugewiesen",
     "UNKNOWN": "Unbekannt",
-    "SELECT_USER": "Benutzer auswählen",
+    "SELECT_USER": "Wählen Sie einen Benutzer",
     "LAST_MESSAGE": "Letzte Nachricht",
     "USER": "Benutzer",
     "TAGS": "Tags",
     "SOURCE": "Quelle",
     "DESTINATION": "Ziel",
     "CALLERID": "Anrufer-ID",
-    "END_AT": "Beendet am",
+    "END_AT": "Ende am",
     "DURATION": "Dauer",
     "SHOW_DETAILS": "Details anzeigen",
     "HIDE_DETAILS": "Details ausblenden",
     "EXTERNAL_URL": "Externer Link",
     "SET_AS": "Festlegen als",
     "PENDING": "Ausstehend",
-    "CANNED_ANSWER_NOT_FOUND": "Keine Textbausteine gefunden",
-    "CANNED_ANSWER_SEARCH": "Hier nach einem Textbaustein suchen",
+    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
+    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
     "NO_MAIL_ACCOUNTS_AVAILABLE": "Keine E-Mail-Konten verfügbar",
     "NO_FAX_ACCOUNTS_AVAILABLE": "Keine Fax-Konten verfügbar",
     "NO_SMS_ACCOUNTS_AVAILABLE": "Keine SMS-Konten verfügbar",
-    "FILTER_VOICE_QUEUES": "Anrufwarteschlangen filtern",
-    "LOADING_INTERACTION": "Interaktion wird geladen",
+    "FILTER_VOICE_QUEUES": "Sprachwarteschlangen filtern",
+    "LOADING_INTERACTION": "Wir laden die Interaktion ...",
     "JANUARY": "Januar",
     "FEBRUARY": "Februar",
     "MARCH": "März",
     "SELECT_DATE": "Datum auswählen",
     "SELECT_DATE_RANGE": "Wählen Sie einen Datumsbereich",
     "CLEAR": "Löschen",
-    "CALL_NUMBER": "Anrufen",
+    "CALL_NUMBER": "Anruf",
     "TRANSFER_NUMBER": "Transfer",
-    "CALL_SAVED": "Anruf erfolgreich gespeichert",
-    "CALL_DISPOSED": "Anruf erfolgreich qualifiziert",
-    "CHANNEL_WAITING_TEXT": "Wartende Interaktionen",
+    "CALL_SAVED": "Anruf richtig gespeichert",
+    "CALL_DISPOSED": "Anruf richtig entsorgt",
+    "CHANNEL_WAITING_TEXT": "Wartende Warteschlangen-Interaktionen",
     "CHANNEL_QUEUE": "Warteschlange",
-    "CHANNEL_FROM": "von",
+    "CHANNEL_FROM": "Von",
     "MARK_AS_UNREAD": "Als ungelesen markieren",
-    "SELECT_AGENT": "Agenten auswählen",
+    "SELECT_AGENT": "Wählen Sie den Agenten aus",
     "READ": "Gelesen",
-    "SELECT_READ_UNREAD": "Wählen ob Lesen/Ungelesen",
-    "SELECT_SUBSTATUS": "Zwischenstatus auswählen",
+    "SELECT_READ_UNREAD": "Wählen Sie Lesen/Ungelesen",
+    "SELECT_SUBSTATUS": "Wählen Sie Substatus",
     "UNREAD": "Ungelesen",
-    "ABANDONAT": "Abgebrochen",
-    "ABANDONEDQUEUECALLS": "Abgebrochene Anrufe",
+    "ABANDONAT": "Verlassen",
+    "ABANDONEDQUEUECALLS": "Verlassene Warteschlangenanrufe",
     "FREE": "Frei",
     "LASTASSIGNEDTO": "Zuletzt zugewiesen an",
     "QUEUE": "Warteschlange",
     "QUEUECALLEREXITAT": "Abgebrochen",
     "QUEUECALLEREXITREASON": "Grund",
     "RESERVED": "Reserviert",
-    "SELECT_CAMPAIGN": "Warteschlange auswählen",
+    "SELECT_CAMPAIGN": "Wählen Sie eine Warteschlange",
     "ASSIGNTO": "Zuweisen",
-    "CLICKRELOAD": "Verpasste Anrufe! Bitte Seite erneut laden",
+    "CLICKRELOAD": "Neue verlassene Anrufe! Bitte neu laden",
     "NOTAVAILABLE": "Nicht verfügbar",
-    "CURRENTLY_IN_USE_BY": "Derzeit verwendet von",
-    "CUSTOMER_JOURNEY": "Kundenhistorie",
+    "CURRENTLY_IN_USE_BY": "Derzeit im Einsatz von",
+    "CUSTOMER_JOURNEY": "Kundenreise",
     "NO_DATA_AVAILABLE": "Keine Daten verfügbar",
     "AGENTS": "Agenten",
     "TRANSFER": "Transfer",
-    "NO_DISPOSITION_SET": "Keine Qualifizierungen definiert",
-    "ABANDONED_RATE": "Abbruchrate",
-    "ABANDONED_RATE_TEXT": "Rate der abgebrochenen Anrufe innerhalb der Warteschlange",
-    "AVG_MANAGED_TIME": "Durchschnittliche Bearbeitungszeit",
-    "AVG_MANAGED_TIME_TEXT": "Durchschnittliche Bearbeitungszeit aller Interkationen",
-    "MANAGED": "Bearbeitet",
-    "MANAGED_RATE": "Bearbeitungsrate",
-    "MANAGED_RATE_TEXT": "Rate der bearbeiteten Interaktionen",
-    "MANAGED_TEXT": "Interaktionen bearbeitet",
-    "OPENED_TEXT": "Interaktionen geöffnet",
+    "NO_DISPOSITION_SET": "Keine Disposition festgelegt",
+    "ABANDONED_RATE": "Verlassene Rate",
+    "ABANDONED_RATE_TEXT": "Rate verlassener Interaktionen",
+    "AVG_MANAGED_TIME": " Durchschnittliche Verwaltungszeit",
+    "AVG_MANAGED_TIME_TEXT": "Durchschnittliche Verwaltungszeit der Interkationen",
+    "MANAGED": "Verwaltet",
+    "MANAGED_RATE": "Verwaltete Rate",
+    "MANAGED_RATE_TEXT": "Verwaltete Interaktionsrate",
+    "MANAGED_TEXT": "Verwaltete Interaktionen",
+    "OPENED_TEXT": "Geöffnete Interaktionen",
     "TODAY_INTERACTIONS_STATS": "Interaktionen Tagesstatistiken",
-    "UNMANAGED_RATE": "Rate nicht Bearbeitet",
-    "UNMANAGED_RATE_TEXT": "Rate der nicht bearbeiteten Interaktionen in der Warteschlange",
-    "VOICE_ABANDONED": "Abgebrochen",
-    "VOICE_ABANDONED_TEXT": "Abgebrochene Anrufe innerhalb der Warteschlange",
-    "VOICE_ABANDON_RATE": "Abbruchrate",
-    "VOICE_ABANDON_RATE_TEXT": "Rate der abgebrochenen Anrufe innerhalb der Warteschlange",
+    "UNMANAGED_RATE": "Nicht verwaltete Rate",
+    "UNMANAGED_RATE_TEXT": "Nicht verwaltete Interaktionsate",
+    "VOICE_ABANDONED": "Verlassen",
+    "VOICE_ABANDONED_TEXT": "Verlassene Warteschlangenanrufe",
+    "VOICE_ABANDON_RATE": "Verlassene Rate",
+    "VOICE_ABANDON_RATE_TEXT": "Rate verlassener Warteschlangenanrufe",
     "VOICE_ANSWERED": "Angenommen",
     "VOICE_ANSWERED_TEXT": "Angenommene Anrufe in der Warteschlange",
-    "VOICE_ANSWER_RATE": "Antwortrate",
+    "VOICE_ANSWER_RATE": "Angenommene Rate",
     "VOICE_ANSWER_RATE_TEXT": "Rate angenommener Anrufe in der Warteschlange",
     "VOICE_AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "VOICE_AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit aller Sprachanrufe",
+    "VOICE_AVG_HOLD_TIME_TEXT": "Queue ruft AVG HOLD TIME an",
     "VOICE_AVG_TALK_TIME": "Durchschnittliche Gesprächszeit",
-    "VOICE_AVG_TALK_TIME_TEXT": "Durchschnittliche Gesprächszeit aller Anrufe nach der Warteschleife",
+    "VOICE_AVG_TALK_TIME_TEXT": "Gesprächszeit der Anrufe in der Warteschlage",
     "VOICE_TALKING": "IM GESPRÄCH",
     "VOICE_TALKING_TEXT": "Aktive Anrufe in der Warteschlange",
-    "VOICE_TOTAL_OFFERED": "Gesamt angeboten",
-    "VOICE_TOTAL_OFFERED_TEXT": "Gesamtzahl der angebotenen Anrufe in der Warteschlange",
-    "VOICE_UNMANAGED": "Nicht bearbeitet",
-    "VOICE_UNMANAGED_TEXT": "Nicht bearbeitete Anrufe in der Warteschlange",
+    "VOICE_TOTAL_OFFERED": "Insgesamt",
+    "VOICE_TOTAL_OFFERED_TEXT": "Gesamtzahl der Anrufe in der Warteschlange",
+    "VOICE_UNMANAGED": "Nicht verwaltet",
+    "VOICE_UNMANAGED_TEXT": "Nicht verwaltete Anrufe in der Warteschlange",
     "VOICE_WAITING": "Wartende Anrufe",
     "VOICE_WAITING_TEXT": "Wartende Anrufe in der Warteschlange",
     "DOWNLOAD": "Herunterladen",
     "SCHEDULED_CALLS": "Geplante Anrufe",
-    "PRIVATE": "Persönlich",
+    "PRIVATE": "Privat",
     "PUBLIC": "Öffentlich",
-    "PUBLIC_INTERACTION": "Öffentliche Interaktion",
+    "PUBLIC_INTERACTION": "Die Interaktion ist öffentlich",
     "VISIBILITY": "Sichtbarkeit",
-    "INTERACTION_CLOSED": "Interaktion erfolgreich geschlossen",
-    "INTERACTION_CLOSED_DISPOSED": "Interaktion erfolgreich geschlossen und qualifiziert",
-    "INTERACTION_DISPOSED": "Interaktion erfolgreich qualifiziert",
-    "ASSIGNED_TO_OTHERS": "An Andere zugewiesen",
-    "SELECT_ALL": "Alles auswählen",
+    "INTERACTION_CLOSED": "Interaktion korrekt geschlossen",
+    "INTERACTION_CLOSED_DISPOSED": "Interaktion korrekt geschlossen und entsorgt",
+    "INTERACTION_DISPOSED": "Interaktion korrekt entsorgt",
+    "ASSIGNED_TO_OTHERS": "An andere zugewiesen",
+    "SELECT_ALL": "Alle auswählen",
     "CHAT_INTERACTIONS": "Chat-Interaktionen",
     "FAX_INTERACTIONS": "Fax-Interaktionen",
-    "ID": "ID",
+    "ID": "Id",
     "MAIL_INTERACTIONS": "E-Mail-Interaktionen",
-    "OPENCHANNEL_INTERACTIONS": "Offener-Kanal-Interaktionen",
+    "OPENCHANNEL_INTERACTIONS": "Open Channel-Interaktionen",
     "SMS_INTERACTIONS": "SMS-Interaktionen",
-    "CANCEL": "Abbrechen",
-    "DRAFT": "Entwurf speichern",
-    "DRAFT_SAVE_WARNING_MESSAGE": "Für diese Interaktion ist bereits ein Entwurf gespeichert. Möchten Sie diesen überschreiben?",
+    "CANCEL": "Stornieren",
+    "DRAFT": "Entwurf",
+    "DRAFT_SAVE_WARNING_MESSAGE": "Für diese Interaktion ist bereits ein Entwurf gespeichert. Sind Sie sicher, dass Sie ihn überschreiben möchten?",
     "DRAFT_SAVE_WARNING_TITLE": "Vorhandenen Entwurf überschreiben?",
     "OVERWRITE": "Überschreiben",
     "SAVE_AS_DRAFT": "Als Entwurf speichern",
     "UNTITLED": "Ohne Titel",
     "UPDATE_DRAFT": "Entwurf aktualisieren",
     "NO_AVAILABLE_INTERACTION": "Keine Interaktionen verfügbar",
-    "ACCOUNTINGDOC": "Abrechnungsdokumente",
+    "ACCOUNTINGDOC": "Buchhaltung",
     "ADD_PRODUCTPRICELIST": "PRODUKT HINZUFÜGEN",
     "AGENTFULLNAME": "Agent",
     "ALL_COMPANIES": "Alle Unternehmen",
-    "ALL_PRODUCTS": "Alles",
-    "ALL_STATUS": "Alles",
-    "ALL_STEP": "Alles",
+    "ALL_PRODUCTS": "Alle",
+    "ALL_STATUS": "Alle",
+    "ALL_STEP": "Alle",
     "ALL_WORKFLOW": "Alle Arbeitsabläufe",
     "ATTENDACELASTINVOICE": "Letzte Rechnung",
     "ATTENDACENEXTINVOICE": "Nächste Rechnung",
     "AUTHORIZED": "AUTORISIERT",
     "AUTOINVOICE": "SELBSTABRECHNUNG",
     "AUTOPROFORMA": "SELBST-PROFORMA",
-    "BALANCE": "SALDO",
+    "BALANCE": "BALANCE",
     "BY": "Durch",
     "CLONEPROFORMA": "Klon",
     "COMPANIES": "Unternehmen",
     "DOSSIERS": "Dossiers",
     "DOSSIER_INFO": "Information",
     "ENDDATE": "Ablaufdatum",
-    "FROM": "von",
+    "FROM": "Von",
     "GRAPHINVOICES": "Diagramm der Rechnungsemission",
     "INASSET": "Kapital",
     "INVOICE": "RECHNUNG",
     "INVOICEPAYED": "Bezahlt",
     "INVOICES": "RECHNUNGEN",
     "INVOICESTATUS": "Status",
-    "INVOICETOTAL": "Gesamt",
+    "INVOICETOTAL": "Insgesamt",
     "INVOICE_INFO": "Rechnung",
     "MANAGESALES": "Abonnements",
     "MOVEASSET": "Kapital",
     "QUOTATIONSTATUS": "Status",
     "QUOTATIONSUBSCRIPTION": "Dauer",
     "QUOTATIONTAX": "MwSt",
-    "QUOTATIONTOTAL": "Gesamt",
+    "QUOTATIONTOTAL": "Insgesamt",
     "QUOTATIONTOTALPRICE": "Gesamt netto",
-    "QUOTATIONTOTALS": "Gesamt",
+    "QUOTATIONTOTALS": "Insgesamt",
     "QUOTATIONTOTALTAX": "Gesamtsteuer",
     "QUOTATIONUNIT": "Einheit",
     "QUOTATIONVAT": "VAT",
     "TOTALPAYMENTS": "Gesamtzahlungen",
     "UPDATED_AT": "Geändert am",
     "UPDATE_PRODUCT": "Produkt aktualisieren",
-    "WORKFLOW": "Arbeitsablauf wählen",
+    "WORKFLOW": "Wählen Sie einen Arbeitsablauf",
     "YEARS": "Jahre",
     "CUSTOMER_IP": "Ursprüngliche IP-Adresse",
     "CUSTOMER_PORT": "Ursprünglicher TCP-Port",
     "ADVANCED_SEARCH": "Erweiterte Suche",
-    "AND": "und",
+    "AND": "Und",
     "APPLY": "Anwenden",
-    "CONTAINS": "enthält",
+    "CONTAINS": "Enthält",
     "DISABLED": "Deaktiviert",
     "ENABLED": "Aktiviert",
     "ENDING_DATE": "Enddatum",
     "ENDING_VALUE": "Endwert",
-    "ENDS_WITH": "endet mit",
-    "EQUALS": "gleich",
-    "IS_AMONG": "ist unter",
-    "IS_BETWEEN": "ist zwischen",
-    "IS_GREATER_THAN": "ist größer als",
-    "IS_GREATER_THAN_OR_EQUAL_TO": "ist größer oder gleich",
-    "IS_LESS_THAN": "ist kleiner als",
-    "IS_LESS_THAN_OR_EQUAL_TO": "ist kleiner oder gleich",
-    "IS_NOT_AMONG": "ist nicht innerhalb",
-    "IS_NOT_EQUAL": "ist nicht gleich",
+    "ENDS_WITH": "Endet mit",
+    "EQUALS": "Gleich",
+    "IS_AMONG": "Ist unter",
+    "IS_BETWEEN": "Ist zwischen",
+    "IS_GREATER_THAN": "Ist größer als",
+    "IS_GREATER_THAN_OR_EQUAL_TO": "Ist größer oder gleich",
+    "IS_LESS_THAN": "Ist kleiner als",
+    "IS_LESS_THAN_OR_EQUAL_TO": "Ist kleiner oder gleich",
+    "IS_NOT_AMONG": "Ist nicht unter",
+    "IS_NOT_EQUAL": "Ist nicht gleich",
     "MEET_ALL_CONDITIONS": "Alle Bedingungen erfüllen",
     "MEET_ANY_CONDITIONS": "Mindestens eine Bedingung erfüllen",
     "NEW_CONDITION": "Neue Bedingung",
     "SELECT_OPERATOR": "Operator auswählen",
     "STARTING_DATE": "Startdatum",
     "STARTING_VALUE": "Startwert",
-    "STARTS_WITH": "beginnt mit",
+    "STARTS_WITH": "Beginnt mit",
     "VALUE": "Wert",
     "VALUES": "Werte",
     "VALUE_RANGE_CHECK": "Wert muss größer sein als",
-    "CHOOSE": "Auswählen",
+    "CHOOSE": "Wählen",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
     "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
-    "SELECT_QUEUE": "Warteschlange auswählen",
+    "SELECT_QUEUE": "Wählen Sie eine Warteschlange aus",
     "VIDAOOSESSION": "Videoanruf starten",
     "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPP_INTERACTIONS": "WhatsApp-Interaktionen",
+    "WHATSAPP_INTERACTIONS": "WhatsApp Connector-Interaktionen",
     "LAST_UPDATED": "Zuletzt aktualisiert",
     "MATCHING_FIELD": "Übereinstimmendes Feld",
     "MULTIPLE_CONTACTS_FOUND": "Mehrere Kontakte für Nummer gefunden",
-    "SELECT": "Auswählen",
+    "SELECT": "Wählen",
     "SELECT_CONTACT": "Kontakt auswählen",
-    "WHICH_ONE_TO_USE": "Welcher Eintrag soll verwendet werden?",
+    "WHICH_ONE_TO_USE": "Welches möchten Sie verwenden?",
     "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Kein WhatsApp-Konto verfügbar",
-    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Qualifizierung der dritten Ebene",
+    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
+    "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene",
     "LICENSE_EXPIRE_REMAINING_DAYS": "Ihre Lizenz läuft bald ab! Bitte wenden Sie sich an Ihren Administrator",
     "CREATEDAT": "Hergestellt in",
     "ELAPSED_ANSWERED": "Verstrichene Zeit seit dem Start des Anrufs",
     "ELAPSED_DISPOSED": "Verstrichene Zeit seit Beendigung des Anrufs",
-    "LOST_CONNECTION": "Probleme mit der Netzwerkkonnektivität. Bitte Internetverbindung prüfen.",
+    "LOST_CONNECTION": "Probleme mit der Netzwerkkonnektivität. Bitte überprüfe deine Internetverbindung.",
     "NO_RESULTS_AVAILABLE": "Keine Ergebnisse verfügbar",
-    "AUTOCLOSE": "Tab nach Qualifizierung automatisch schließen",
-    "AGENT_PRESENCE": "Bereitschaftsstatus",
-    "SELECT_TEAM": "Team auswählen"
+    "AUTOCLOSE": "Schließen Sie die Kontaktlasche nach der Entsorgung automatisch",
+    "AGENT_PRESENCE": "Agentenpräsenz",
+    "SELECT_TEAM": "Team auswählen",
+    "AVAILABLE": "Erhältlich"
   }
 }
index fd1c6a8..4b2f44e 100644 (file)
@@ -1,83 +1,83 @@
 {
   "MAIL": {
     "TEXT": "Text",
-    "TIMES": "Zeitstempel",
-    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
+    "TIMES": "Die Anzahl der Zeiten pro Interaktion",
+    "EDIT_AUTOREPLY": "Bearbeiten Sie automatische Antwort",
     "AUTOREPLY": "Automatische Antwort",
-    "SHOW_AUTOREPLY": "Automatische Antwort anzeigen",
+    "SHOW_AUTOREPLY": "Die automatische Antwort anzeigen",
     "SHOW_DETAILS": "Details anzeigen",
     "HIDE_DETAILS": "Details ausblenden",
-    "TO": "An",
+    "TO": "Zu",
     "FROM": "Von",
     "DATE": "Datum",
-    "CC": "CC",
-    "REPLY": "Antworten",
+    "CC": "Cc",
+    "REPLY": "Antwort",
     "REPLY_ALL": "Allen antworten",
-    "FORWARD": "Weiterleiten",
+    "FORWARD": "Vorwärts",
     "SUBJECT": "Betreff",
-    "BCC": "BCC",
+    "BCC": "Bcc",
     "SEND": "Senden",
     "ATTACHMENT": "Anhang",
     "ATTACHMENTS": "Anhänge",
     "NAME": "Name",
     "MAILQUEUES": "E-Mail Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "STRATEGY": "Strategie",
     "ERRORS": {
-      "TEXT_REQUIRED": "Feld \"Text\" ist erforderlich",
-      "NAME_REQUIRED": "Name ist erforderlich",
-      "AGENT_TIMEOUT_REQUIRED": "Agent Timeout ist erforderlich",
-      "EMAIL_ADDRESS_REQUIRED": "E-Mail-Adresse ist erforderlich",
-      "EMAIL_ADDRESS_MUST_VALID": "E-Mail ungültiges Format",
-      "HOST_REQUIRED": "Host wird benötigt",
-      "USERNAME_REQUIRED": "Benutzername ist erforderlich",
-      "PORT_REQUIRED": "Port ist erforderlich",
+      "TEXT_REQUIRED": "Das Feld \"Text\" ist erforderlich",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "AGENT_TIMEOUT_REQUIRED": "Der Agent Timeout ist erforderlich",
+      "EMAIL_ADDRESS_REQUIRED": "Die E-Mail-Adresse ist erforderlich",
+      "EMAIL_ADDRESS_MUST_VALID": "Die E-Mail Adresse muss in einem gültigen Format",
+      "HOST_REQUIRED": "Der Host wird benötigt",
+      "USERNAME_REQUIRED": "Der Benutzername ist erforderlich",
+      "PORT_REQUIRED": "Der Port ist erforderlich",
       "CONNTIMEOUT_REQUIRED": "Timeout der Verbindung ist erforderlich",
-      "AUTHTIMEOUT_REQUIRED": "Zeitlimit für die Authentifizierung ist erforderlich",
-      "ACCEPTURL_MUST_VALID_URL": "URL ungültiges Format",
-      "TIMEOUT_REQUIRED": "Timeout ist erforderlich",
-      "REJECTURL_MUST_VALID_URL": "URL ungültiges Format",
-      "CLOSEURL_MUST_VALID_URL": "URL ungültiges Format",
-      "AGENT_REQUIRED": "Agent ist erforderlich",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Timeout muss größer oder gleich sein als",
-      "DISPOSITION_REQUIRED": "Qualifizierung ist erforderlich",
-      "CONDITION_REQUIRED": "Bedingung ist erforderlich",
-      "TRUEPRIORITY_REQUIRED": "Wahre Priorität ist erforderlich",
-      "FALSEPRIORITY_REQUIRED": "Falsche Priorität ist erforderlich",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wahre Priorität muss größer oder gleich sein als",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Falsche Priorität muss größer oder gleich sein als",
-      "PRIORITY_REQUIRED": "Priorität ist erforderlich",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität muss größer oder gleich sein als",
-      "QUEUE_REQUIRED": "Warteschlange ist erforderlich",
-      "LIST_REQUIRED": "Liste ist erforderlich",
-      "PASSWORD_REQUIRED": "Passwort ist erforderlich",
-      "SERVICE_REQUIRED": "Dienst ist erforderlich,",
-      "IMAP_HOST_REQUIRED": "IMAP-Host ist erforderlich",
-      "IMAP_PORT_REQUIRED": "IMAP-Port erforderlich",
-      "SMTP_HOST_REQUIRED": "SMTP-Host ist erforderlich",
-      "SMTP_PORT_REQUIRED": "SMTP-Port ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
-      "KEY_MAX_LENGTH": "Schlüssel darf eine maximale Länge haben von {{max}}",
-      "KEY_REQUIRED": "Schlüssel ist erforderlich",
-      "TEXT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}}",
+      "AUTHTIMEOUT_REQUIRED": "Das Zeitlimit für die Authentifizierung erforderlich ist",
+      "ACCEPTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
+      "REJECTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "CLOSEURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "AGENT_REQUIRED": "Der Agent ist erforderlich",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Timeout muss größer als oder gleich",
+      "DISPOSITION_REQUIRED": "Die Disposition ist erforderlich",
+      "CONDITION_REQUIRED": "Der Zustand ist erforderlich",
+      "TRUEPRIORITY_REQUIRED": "Die wahre Priorität ist erforderlich",
+      "FALSEPRIORITY_REQUIRED": "Die falsche Priorität ist erforderlich",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die wahre Priorität muss größer als oder gleich",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die falsche Priorität muss größer als oder gleich",
+      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Priorität muss größer als oder gleich",
+      "QUEUE_REQUIRED": "Die Warteschlange ist erforderlich",
+      "LIST_REQUIRED": "Die Liste ist erforderlich",
+      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
+      "SERVICE_REQUIRED": "Der Dienst ist erforderlich,",
+      "IMAP_HOST_REQUIRED": "Der IMAP-Host wird benötigt",
+      "IMAP_PORT_REQUIRED": "Der IMAP-Anschluss erforderlich",
+      "SMTP_HOST_REQUIRED": "Der SMTP-Host ist erforderlich",
+      "SMTP_PORT_REQUIRED": "Der SMTP-Port ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Passwörter nicht übereinstimmen",
+      "KEY_MAX_LENGTH": "Schlüssel muss eine maximale Länge von {{max}}",
+      "KEY_REQUIRED": "Der Schlüssel ist erforderlich",
+      "TEXT_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "FONT_SIZE_REQUIRED": "Pflichtfeld",
       "COMMAND_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
       "NAME_MUST_VALID_PATTERN": "Falsches Format",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "REPLY_TYPE_REQUIRED": "Pflichtfeld"
@@ -93,9 +93,9 @@
     "MAILACCOUNTS": "E-Mail Konten",
     "EMAIL_ADDRESS": "E-Mail Adresse",
     "ADD_MAILACCOUNT": "E-Mail Konto hinzufügen",
-    "EDIT_MAILACCOUNT": "E-Mail Konto bearbeiten",
-    "DELETE_MAILACCOUNT": "E-Mail Konto löschen",
-    "DISPOSITIONS": "Qualifizierungen",
+    "EDIT_MAILACCOUNT": "E-Mail-Konto bearbeiten",
+    "DELETE_MAILACCOUNT": "E-Mail-Konten löschen",
+    "DISPOSITIONS": "Bestimmungen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "OTHERS": "Andere",
     "SERVICE": "Service",
     "CREATED_AT": "Erstellt am",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Methode akzeptieren",
+    "ACCEPTMETHOD": "Die Methode",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "Schließen",
-    "CLOSEMETHOD": "Methode schließen",
-    "CLOSEURL": "URL schließen",
+    "CLOSE": "In der Nähe",
+    "CLOSEMETHOD": "In der Nähe Methode",
+    "CLOSEURL": "Der URL",
     "WHITELABEL": "White Label",
-    "SIGNATURE": "Signatur",
+    "SIGNATURE": "Unterschrift",
     "IMAP": "IMAP",
     "HOST": "Host",
     "USERNAME": "Benutzername",
-    "PORT": "Port",
+    "PORT": "Hafen",
     "MAILBOX": "Mailbox",
     "FILTER": "Filter",
     "CONNTIMEOUT": "Connection Timeout [sek]",
     "SMTP": "SMTP",
     "SELECTED": "Ausgewählte",
     "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
     "BACK": "Zurück",
     "MAIL": "E-Mail",
-    "ID": "ID",
+    "ID": "Id",
     "TIMEOUT": "Timeout",
     "PASSWORD": "Passwort",
-    "NO_MAILDISPOSITION_AVAILABLE": "Keine E-Mail Qualifizierung verfügbar",
-    "ADD_MAILDISPOSITION": "Qualifizierung hinzufügen",
-    "NEW_MAILDISPOSITION": "Neue E-Mail Qualifizierung",
-    "EDIT_MAILDISPOSITION": "Qualifizierung bearbeiten",
-    "DELETE_MAILDISPOSITION": "Qualifizierung löschen",
-    "MAILDISPOSITIONS": "E-Mail Qualifizierungen",
+    "NO_MAILDISPOSITION_AVAILABLE": "Keine E-Mail zur Verfügung Verfügungen",
+    "ADD_MAILDISPOSITION": "E-Mail hinzufügen Disposition",
+    "NEW_MAILDISPOSITION": "Neue E-Mail zur Verfügung",
+    "EDIT_MAILDISPOSITION": "Bearbeiten von E-Mail zur Verfügung",
+    "DELETE_MAILDISPOSITION": "Löschen von E-Mail zur Verfügung",
+    "MAILDISPOSITIONS": "E-Mail Verfügungen",
     "NEW_MAILQUEUE": "Neue E-Mail Warteschlange",
-    "NEW_MAILACCOUNT": "Neues E-Mail Konto",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
-    "ALL_TEAMS": "Alle Teams",
+    "NEW_MAILACCOUNT": "Neue E-Mail Konto",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "ALL_TEAMS": "Alle Mannschaften",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "HELP": {
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "USERNAME": "Benutzername für die Authentifizierung",
-      "PASSWORD": "Passwort für die Authentifizierung",
-      "SECURE": "Bei true wird die Verbindung TLS verwenden, wenn eine Verbindung zum Server aufgebaut wird",
-      "FONT_FAMILY": "Standard-Schriften",
+      "USERNAME": "Benutzername für die Authentifizierung verwendet werden",
+      "PASSWORD": "Kennwort für die Authentifizierung verwendet werden",
+      "SECURE": "Bei true wird die Verbindung TLS verwenden, wenn eine Verbindung zu Server",
+      "FONT_FAMILY": "Standardschriftfamilie",
       "FONT_SIZE": "Standard Schriftgröße",
-      "MARK_AS_UNREAD": "Aktivieren / deaktivieren, um die letzte Nachricht einer Interaktion als ungelesen zu markieren",
-      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung"
+      "MARK_AS_UNREAD": "Agent aktivieren / deaktivieren, um die letzte Nachricht einer Interaktion als ungelesen zu markieren",
+      "MANDATORYDISPOSITION": "Zwingende Disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Anhalten, um zu verwenden, wenn die obligatorische Disposition aktiviert ist"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
-    "TEAMADD_MAILQUEUE": "Team zur Warteschlange hinzufügen",
-    "AGENTADD_MAILQUEUE": "Agenten zur Warteschlange hinzufügen",
+    "OF": "Von",
+    "TEAMADD_MAILQUEUE": "Team Chat Warteschlange hinzufügen",
+    "AGENTADD_MAILQUEUE": "Agent zu Chatten Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "AGENT": "Agent",
     "EDIT_AGENT": "Agent bearbeiten",
-    "EDIT_CLOSE": "Bearbeitung abschließen",
-    "DISPOSITION": "Qualifizierung",
-    "GOTOIF": "GoToIf",
+    "EDIT_CLOSE": "Bearbeiten Schließen",
+    "DISPOSITION": "Disposition",
+    "GOTOIF": "GotoIf",
     "EDIT_GOTOIF": "Bearbeiten GotoIf",
-    "CONDITION": "Bedingung",
+    "CONDITION": "Zustand",
     "TRUEPRIORITY": "Wahre Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "GOTOP": "GotoP",
     "VALUE": "Wert",
     "QUEUE": "Warteschlange",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "INTERACTIONS": "Interaktionen",
-    "STARTEDAT": "Startdatum",
+    "INTERACTIONS": "Wechselwirkungen",
+    "STARTEDAT": "Gestartet am",
     "CONTACT": "Kontakt",
     "CLOSEDAT": "Geschlossen",
-    "NOTES": "Anmerkungen",
-    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
+    "NOTES": "Hinweise",
+    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
     "ACTIVE": "Aktiv",
-    "SECURE": "Sicher",
+    "SECURE": "Sichere",
     "AUTHENTICATION": "Authentifizierung",
     "SMTP_HOST": "SMTP-Host",
     "SMTP_PORT": "SMTP-Port",
     "IMAP_PORT": "IMAP-Port",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "SELECT_STATUS": "Status auswählen",
-    "OPENED": "Geöffnet",
+    "OPENED": "Öffnen",
     "CLOSED": "Geschlossen",
     "ALL": "Alle",
     "SELECT_ACCOUNT": "Konto auswählen",
     "UNPAUSE": "Pause beenden",
     "DEFAULT_PAUSE": "Standard Pause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "VOICE": "Anrufe",
+    "AGENTADD_QUEUE": "Agent E-Mail Warteschlange hinzufügen",
+    "VOICE": "Voice",
     "CHAT": "Chat",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Offener Kanal",
+    "SMS": "Sms",
+    "OPENCHANNEL": "Channel öffnen",
     "FAX": "Fax",
     "REALTIME": "Echtzeit",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
     "ACCOUNTS": "Konten",
-    "FULLNAME": "Vollständiger Name",
-    "INTERNAL": "Intern",
+    "FULLNAME": "Voller Name",
+    "INTERNAL": "Interne",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "PAUSE": "Pause",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
     "READY": "Bereit",
-    "WAITING": "Wartezustand",
-    "TOTAL": "Gesamt",
-    "IN": "Eingehend",
-    "OUT": "Ausgehend",
+    "WAITING": "Warten",
+    "TOTAL": "Insgesamt",
+    "IN": "In",
+    "OUT": "Aus",
     "IMAP_STATUS": "IMAP-Status",
     "SMTP_STATUS": "SMTP-Status",
     "DISABLED": "Deaktiviert",
     "CONNECTED": "Verbunden",
-    "NEVER_VERIFIED": "Noch nicht verifiziert",
+    "NEVER_VERIFIED": "Nie verifiziert",
     "ERROR": "Fehler",
     "EDIT_ACCOUNT": "Konto bearbeiten",
-    "VERIFY_SMTP": "Bitte SMTP-Einstellungen prüfen",
+    "VERIFY_SMTP": "Überprüfen Sie die SMTP-",
     "VERIFIED": "Überprüft",
-    "VERIFYSMTP_MAILACCOUNT": "Bitte SMTP-Einstellungen prüfen",
-    "GOTOREALTIME_MAILACCOUNT": "Zum E-Mail-Konto Echtzeitmonitoring",
-    "GOTO_MAILACCOUNT": "Zum E-Mail Konto gehen",
+    "VERIFYSMTP_MAILACCOUNT": "Überprüfen Sie die SMTP-",
+    "GOTOREALTIME_MAILACCOUNT": "In Echtzeit, E-Mail Konto",
+    "GOTO_MAILACCOUNT": "In Echtzeit, E-Mail Konto",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Nicht registriert",
+    "UNREGISTERED": "Unregistrierte",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Verwendung",
+    "NOT_INUSE": "Nicht in Gebrauch",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "In Verwendung",
-    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "INFO": "Information",
+    "IN_USE": "Im Einsatz",
+    "AGENTSADD_QUEUE": "Agenten zu Warteschlange hinzufügen",
+    "INFO": "Info",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_MAILQUEUE": "Echtzeitmonitoring E-Mail Warteschlangen",
-    "PARTIALPAUSE": "Teilpause",
+    "GOTOREALTIME_MAILQUEUE": "In Echtzeit, E-Mail Warteschlange",
+    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
-    "SPYINTERACTION": "Mithören",
+    "SPYINTERACTION": "Spy",
     "ADD_NOTE": "Notiz hinzufügen",
-    "NOTE": "Notiz",
+    "NOTE": "Hinweis",
     "TAGS": "Tags",
-    "INTERACTIONS_MAILACCOUNT": "Zu den Interaktionen gehen",
-    "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "PENDING": "Warten auf Rückmeldung",
-    "SEND_AS_PENDING": "Senden und auf Rückmeldung warten",
-    "SEND_AND_CLOSE": "Senden und schließen",
-    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
-    "CANNED_ANSWER_SEARCH": "Nach Textvorlagen suchen",
-    "NO_MAILCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
-    "NEW_MAILCANNEDANSWER": "Neue Textvorlage",
-    "ADD_MAILCANNEDANSWER": "Textvorlage hinzufügen",
-    "EDIT_MAILCANNEDANSWER": "Textvorlage bearbeiten",
-    "DELETE_MAILCANNEDANSWER": "Textvorlage löschen",
+    "INTERACTIONS_MAILACCOUNT": "Zu Wechselwirkungen gehen",
+    "REFRESH_INTERACTIONS": "Aktualisieren Interaktionen",
+    "PENDING": "Ausstehend",
+    "SEND_AS_PENDING": "Senden als Ausstehend",
+    "SEND_AND_CLOSE": "Senden und Schließen",
+    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
+    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
+    "NO_MAILCANNEDANSWER_AVAILABLE": "Keine vordefinierten Antworten verfügbar",
+    "NEW_MAILCANNEDANSWER": "Neue vordefinierte Antowrt",
+    "ADD_MAILCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
+    "EDIT_MAILCANNEDANSWER": "Vordefiierte Antwort bearbeiten",
+    "DELETE_MAILCANNEDANSWER": "Vordefinierte Antwort löschen",
     "SHOW_ORIGINAL_MESSAGE": "Ursprüngliche Nachricht anzeigen",
     "DELETE_INTERACTION": "Interaktion löschen",
     "ACCEPTED": "Akzeptiert",
     "FONT_FAMILY": "Schriftfamilie",
     "FONT_SIZE": "Schriftgröße",
-    "MARK_AS_UNREAD": "Als ungelesen markieren",
-    "ADD_MAILSUBSTATUS": "SubStatus hinzufügen",
-    "DELETE_MAILSUBSTATUS": "SubStatus löschen",
-    "EDIT_MAILSUBSTATUS": "SubStatus bearbeiten",
-    "MAILSUBSTATUSES": "E-Mail SubStatus",
-    "NEW_MAILSUBSTATUS": "Neuer SubStatus",
-    "SEND_AS": "Senden als",
-    "COMMAND": "Eingabe",
+    "MARK_AS_UNREAD": "als ungelesen markieren",
+    "ADD_MAILSUBSTATUS": "Unterstatus hinzufügen",
+    "DELETE_MAILSUBSTATUS": "Löschen",
+    "EDIT_MAILSUBSTATUS": "Bearbeiten",
+    "MAILSUBSTATUSES": "E-Mail-Unterstatus",
+    "NEW_MAILSUBSTATUS": "Neuer Unterstatus",
+    "SEND_AS": "Senden Als",
+    "COMMAND": "Befehl",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "VARIABLE": "Variable",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Klingeln",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONSOUND": "Klingen",
     "NOTIFICATIONTEMPLATE": "Vorlage",
     "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
     "EDIT_TAG": "Tag bearbeiten",
-    "TAG": "Tag",
-    "AGENTTRANSFER": "Weiterleitung Agent",
-    "AGENTTRANSFERTIMEOUT": "Zeitlimit für Agententransfer",
-    "QUEUETRANSFER": "Weiterleitung Warteschlange",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
-    "TRANSFER": "Weiterleitung",
-    "AGENTADD_MAILACCOUNT": "Agenten zum E-Mail Konto hinzufügen",
+    "TAG": "Etikett",
+    "AGENTTRANSFER": "Agentenübertragung",
+    "AGENTTRANSFERTIMEOUT": "Zeitlimit für Agentenübertragungen",
+    "QUEUETRANSFER": "Warteschlangenübertragung",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangenübertragung",
+    "TRANSFER": "Transfer",
+    "AGENTADD_MAILACCOUNT": "Fügen Sie dem E-Mail-Konto Agent hinzu",
     "YOU_ARE_REGISTERED_AS_A": "Sie sind registriert als",
-    "CANNEDANSWERS": "Textvorlagen",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "MAILCANNEDANSWERS": "E-Mail Textvorlagen",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
+    "MAILCANNEDANSWERS": "Vordefinierte Antworten",
+    "LOGIN_TIME": "Login-Zeit",
+    "PAUSE_TIME": "Pausenzeit",
     "DOWNLOAD": "Herunterladen",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterlagen inkl. Anhänge",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
-    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "Qualifizierung pausieren, sofern sonst erforderlich",
-    "ADVANCED": "Erweitert",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung angehalten",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Herunterladen ohne Anhang",
-    "DOWNLOAD_WITH_ATTACHMENT": "Herunterladen inkl. Anhang",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download ohne Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
+    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
+    "MANDATORYDISPOSITION": "Zwingende Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Pause zur Verwendung, wenn die obligatorische Disposition aktiviert ist",
+    "ADVANCED": "Fortgeschritten",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Ohne Anhang herunterladen",
+    "DOWNLOAD_WITH_ATTACHMENT": "Download mit Anhang",
     "LASTMESSAGE": "Letzte Nachricht",
     "REPLY_TYPE": "Antworttyp"
   }
index 97c6fe2..235afae 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "وصف",
     "DOWNLOAD_PLUGIN": "تنزيل المكون الإضافي",
     "DROP_TO_UPLOAD": "إسقاط للتحميل",
-    "DROP_TO_UPLOAD_MESSAGE": "أسقط ملفك هنا للتحميل. فقط الرمز البريدي - ماكس. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "أسقط ملفك هنا للتحميل. فقط الرمز البريدي - ماكس. 2MB",
     "EDITOR": "محرر",
     "EDIT_PLUGIN": "تحرير المكوّن الإضافي",
     "FINISH": "إنهاء",
index 312c4ab..e80fbe2 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index 495ea1e..3bd5ad2 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beskrivelse",
     "DOWNLOAD_PLUGIN": "Download plugin",
     "DROP_TO_UPLOAD": "Drop til upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop din fil her for at uploade. Kun ZIP - Max. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop din fil her for at uploade. Kun ZIP - Max. 2MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Rediger plugin",
     "FINISH": "Afslut",
index 054564e..f150ff2 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beschreibung",
     "DOWNLOAD_PLUGIN": "Plugin herunterladen",
     "DROP_TO_UPLOAD": "Hochladen",
-    "DROP_TO_UPLOAD_MESSAGE": "Legen Sie Ihre Datei zum Hochladen hier ab. Nur PLZ - Max. 4 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Legen Sie Ihre Datei zum Hochladen hier ab. Nur PLZ - Max. 2 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Plugin bearbeiten",
     "FINISH": "Fertig",
index 312c4ab..e80fbe2 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index 56d6276..a85d3cb 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Descripción",
     "DOWNLOAD_PLUGIN": "Descargar plugin",
     "DROP_TO_UPLOAD": "Suelta para subir",
-    "DROP_TO_UPLOAD_MESSAGE": "Suelta tu archivo aquí para subirlo. Solo ZIP - Max. 4 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Suelta tu archivo aquí para subirlo. Solo ZIP - Max. 2 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Editar plugin",
     "FINISH": "Terminar",
index 312c4ab..e80fbe2 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index 0202268..bf299e5 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "شرح",
     "DOWNLOAD_PLUGIN": "دانلود پلاگین",
     "DROP_TO_UPLOAD": "قطره برای آپلود",
-    "DROP_TO_UPLOAD_MESSAGE": "فایل خود را اینجا بگذارید تا آپلود شود فقط ZIP - حداکثر. 4 مگابایت",
+    "DROP_TO_UPLOAD_MESSAGE": "فایل خود را اینجا بگذارید تا آپلود شود فقط ZIP - حداکثر. 2 مگابایت",
     "EDITOR": "ویرایشگر",
     "EDIT_PLUGIN": "ویرایش پلاگین",
     "FINISH": "پایان دادن",
index b934012..be3860b 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Kuvaus",
     "DOWNLOAD_PLUGIN": "Lataa laajennus",
     "DROP_TO_UPLOAD": "Pudota lähetettäväksi",
-    "DROP_TO_UPLOAD_MESSAGE": "Pudota tiedosto täällä lähetettäväksi. Vain ZIP - Max. 4 Mt",
+    "DROP_TO_UPLOAD_MESSAGE": "Pudota tiedosto täällä lähetettäväksi. Vain ZIP - Max. 2 Mt",
     "EDITOR": "toimittaja",
     "EDIT_PLUGIN": "Muokkaa lisäosaa",
     "FINISH": "Suorittaa loppuun",
index bbf8e7b..edbcd90 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "La description",
     "DOWNLOAD_PLUGIN": "Télécharger le plugin",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Déposez votre fichier ici pour le télécharger. Seulement ZIP - Max. 4 Mo",
+    "DROP_TO_UPLOAD_MESSAGE": "Déposez votre fichier ici pour le télécharger. Seulement ZIP - Max. 2 Mo",
     "EDITOR": "Éditeur",
     "EDIT_PLUGIN": "Modifier le plugin",
     "FINISH": "terminer",
index d5a9a13..c3cb181 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "שמור",
     "INSTALLING": "התקנה",
     "DROP_TO_UPLOAD": "שחרר כדי להעלות",
-    "DROP_TO_UPLOAD_MESSAGE": "כדי להעלות את הקובץ, שחרר אותו כאן. ZIP בלבד – מקס' 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "כדי להעלות את הקובץ, שחרר אותו כאן. ZIP בלבד – מקס' 2MB",
     "UPLOAD_PLUGIN": "יישום Plug-in להעלאות",
     "UPLOADING": "העלאה",
     "CREATED_AT": "נוצר ב-",
index 043d58e..1170227 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "विवरण",
     "DOWNLOAD_PLUGIN": "प्लगइन डाउनलोड करें",
     "DROP_TO_UPLOAD": "अपलोड करने के लिए ड्रॉप",
-    "DROP_TO_UPLOAD_MESSAGE": "अपलोड करने के लिए अपनी फाइल यहां ड्रॉप करें। केवल ज़िप - अधिकतम। 4 एमबी",
+    "DROP_TO_UPLOAD_MESSAGE": "अपलोड करने के लिए अपनी फाइल यहां ड्रॉप करें। केवल ज़िप - अधिकतम। 2 एमबी",
     "EDITOR": "संपादक",
     "EDIT_PLUGIN": "प्लगइन संपादित करें",
     "FINISH": "समाप्त",
index 86fb87a..c4fbe7e 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Deskripsi",
     "DOWNLOAD_PLUGIN": "Unduh plugin",
     "DROP_TO_UPLOAD": "Jatuhkan Untuk Mengunggah",
-    "DROP_TO_UPLOAD_MESSAGE": "Jatuhkan file Anda di sini untuk mengunggah. Hanya ZIP - Max. 4 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Jatuhkan file Anda di sini untuk mengunggah. Hanya ZIP - Max. 2 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Edit plugin",
     "FINISH": "Selesai",
index 212fdff..68e0c53 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Salva",
     "INSTALLING": "Installazione in corso",
     "DROP_TO_UPLOAD": "Trascina il file da caricare",
-    "DROP_TO_UPLOAD_MESSAGE": "Trascina qui il tuo plugin da caricare. Solo ZIP - Max. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Trascina qui il tuo plugin da caricare. Solo ZIP - Max. 2MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Upload in corso",
     "CREATED_AT": "Creato il",
index 190c600..3fd4f57 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "説明",
     "DOWNLOAD_PLUGIN": "プラグインをダウンロード",
     "DROP_TO_UPLOAD": "アップロードするドロップ",
-    "DROP_TO_UPLOAD_MESSAGE": "アップロードするファイルをここにドロップします。 ZIP  -  Max。 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "アップロードするファイルをここにドロップします。 ZIP  -  Max。 2MB",
     "EDITOR": "編集者",
     "EDIT_PLUGIN": "プラグインを編集",
     "FINISH": "フィニッシュ",
index a3774d1..29c0869 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "기술",
     "DOWNLOAD_PLUGIN": "플러그인 다운로드",
     "DROP_TO_UPLOAD": "올리기",
-    "DROP_TO_UPLOAD_MESSAGE": "여기에 파일을 올려 업로드하십시오. ZIP - Max. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "여기에 파일을 올려 업로드하십시오. ZIP - Max. 2MB",
     "EDITOR": "편집자",
     "EDIT_PLUGIN": "플러그인 편집",
     "FINISH": "끝",
index 312c4ab..e80fbe2 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index aad4d13..154c0b7 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Apraksts",
     "DOWNLOAD_PLUGIN": "Lejupielādēt spraudni",
     "DROP_TO_UPLOAD": "Pārvelciet šeit, lai augšupielādētu",
-    "DROP_TO_UPLOAD_MESSAGE": "Pārvelciet datni šeit, lai augšupielādētu Tikai<i> ZIP</i> – maks. 4 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Pārvelciet datni šeit, lai augšupielādētu Tikai<i> ZIP</i> – maks. 2 MB",
     "EDITOR": "Redaktors",
     "EDIT_PLUGIN": "Rediģēt spraudni",
     "FINISH": "Pabeigt",
index 0ab1946..361f77e 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beschrijving",
     "DOWNLOAD_PLUGIN": "Download plugin",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Zet je bestand hier neer om te uploaden. Alleen ZIP - Max. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Zet je bestand hier neer om te uploaden. Alleen ZIP - Max. 2MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Bewerk plugin",
     "FINISH": "Af hebben",
index 0fbd637..d49bd20 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beskrivelse",
     "DOWNLOAD_PLUGIN": "Last ned plugin",
     "DROP_TO_UPLOAD": "Drop til opplasting",
-    "DROP_TO_UPLOAD_MESSAGE": "Slett filen din her for å laste opp. Kun ZIP - Maks. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Slett filen din her for å laste opp. Kun ZIP - Maks. 2MB",
     "EDITOR": "Redaktør",
     "EDIT_PLUGIN": "Rediger plugin",
     "FINISH": "Bli ferdig",
index 2bda13c..d694357 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Opis",
     "DOWNLOAD_PLUGIN": "Pobierz wtyczkę",
     "DROP_TO_UPLOAD": "Upuść, aby przesłać",
-    "DROP_TO_UPLOAD_MESSAGE": "Upuść swój plik tutaj, aby przesłać. Tylko ZIP - Max. 4 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Upuść swój plik tutaj, aby przesłać. Tylko ZIP - Max. 2 MB",
     "EDITOR": "Redaktor",
     "EDIT_PLUGIN": "Edytuj wtyczkę",
     "FINISH": "koniec",
index 312c4ab..e80fbe2 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index e93ddba..ac5383c 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Descrição",
     "DOWNLOAD_PLUGIN": "Download do plugin",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Solte seu arquivo aqui para fazer o upload. Apenas ZIP - Máx. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Solte seu arquivo aqui para fazer o upload. Apenas ZIP - Máx. 2MB",
     "EDITOR": "editor",
     "EDIT_PLUGIN": "Editar plugin",
     "FINISH": "Terminar",
index 534d51d..39efe9f 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Описание",
     "DOWNLOAD_PLUGIN": "Скачать плагин",
     "DROP_TO_UPLOAD": "Загрузить",
-    "DROP_TO_UPLOAD_MESSAGE": "Отбросьте свой файл здесь, чтобы загрузить его. Только ZIP - Макс. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Отбросьте свой файл здесь, чтобы загрузить его. Только ZIP - Макс. 2MB",
     "EDITOR": "редактор",
     "EDIT_PLUGIN": "Изменить плагин",
     "FINISH": "Конец",
index 4085544..171327a 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beskrivning",
     "DOWNLOAD_PLUGIN": "Hämta plugin",
     "DROP_TO_UPLOAD": "Släpp för att ladda upp",
-    "DROP_TO_UPLOAD_MESSAGE": "Släpp din fil här för att ladda upp. Endast ZIP - Max. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Släpp din fil här för att ladda upp. Endast ZIP - Max. 2MB",
     "EDITOR": "Redaktör",
     "EDIT_PLUGIN": "Redigera plugin",
     "FINISH": "Avsluta",
index 0c17adc..4646459 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Açıklama",
     "DOWNLOAD_PLUGIN": "Eklentiyi indir",
     "DROP_TO_UPLOAD": "Yüklenmeye Bırak",
-    "DROP_TO_UPLOAD_MESSAGE": "Yüklemek için dosyanızı buraya bırakın. Sadece ZIP - Maks. 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Yüklemek için dosyanızı buraya bırakın. Sadece ZIP - Maks. 2MB",
     "EDITOR": "Editör",
     "EDIT_PLUGIN": "Eklentiyi düzenle",
     "FINISH": "Bitiş",
index ac2f84c..18246b8 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "描述",
     "DOWNLOAD_PLUGIN": "下载插件",
     "DROP_TO_UPLOAD": "删除上传",
-    "DROP_TO_UPLOAD_MESSAGE": "将您的文件放在此处上传。只有ZIP  -  Max。 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "将您的文件放在此处上传。只有ZIP  -  Max。 2MB",
     "EDITOR": "编辑",
     "EDIT_PLUGIN": "编辑插件",
     "FINISH": "完",
index 98dc201..2956f0d 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "描述",
     "DOWNLOAD_PLUGIN": "下載插件",
     "DROP_TO_UPLOAD": "刪除上傳",
-    "DROP_TO_UPLOAD_MESSAGE": "將您的文件放在此處上傳。只有ZIP  -  Max。 4MB",
+    "DROP_TO_UPLOAD_MESSAGE": "將您的文件放在此處上傳。只有ZIP  -  Max。 2MB",
     "EDITOR": "編輯",
     "EDIT_PLUGIN": "編輯插件",
     "FINISH": "完",
index d002733..0ef1225 100644 (file)
@@ -1,59 +1,59 @@
 {
   "OPENCHANNEL": {
     "TEXT": "Text",
-    "TIMES": "Zeitstempel",
-    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
+    "TIMES": "Die Anzahl der Zeiten pro Interaktion",
+    "EDIT_AUTOREPLY": "Bearbeiten Sie automatische Antwort",
     "AUTOREPLY": "Automatische Antwort",
     "NAME": "Name",
-    "OPENCHANNELQUEUES": "Warteschlangen offener Kanal",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "OPENCHANNELQUEUES": "Offener Kanal Warteschlangen",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "ERRORS": {
-      "TEXT_REQUIRED": "Feld \"Text\" ist erforderlich",
-      "NAME_REQUIRED": "Name ist erforderlich",
-      "AGENT_TIMEOUT_REQUIRED": "Agent Timeout ist erforderlich",
-      "MOTIONADDRESS_REQUIRED": "Adresse ist erforderlich",
-      "MOTIONADDRESS_MUST_VALID_URL": "Adresse ungültiges Format",
-      "ACCEPTURL_MUST_VALID_URL": "URL ungültiges Format",
-      "TIMEOUT_REQUIRED": "Timeout ist erforderlich",
-      "REJECTURL_MUST_VALID_URL": "URL ungültiges Format",
-      "CLOSEURL_MUST_VALID_URL": "URL ungültiges Format",
-      "REPLYURI_REQUIRED": "Antwort-URL ungültiges Format",
-      "REPLYURI_MUST_VALID_URL": "Antwort-URL ungültiges Format",
-      "PRIORITY_REQUIRED": "Priorität ist erforderlich",
-      "CONDITION_REQUIRED": "Bedingung ist erforderlich",
-      "TRUEPRIORITY_REQUIRED": "Wahre Priorität ist erforderlich",
-      "FALSEPRIORITY_REQUIRED": "Falsche Priorität ist erforderlich",
+      "TEXT_REQUIRED": "Das Feld \"Text\" ist erforderlich",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "AGENT_TIMEOUT_REQUIRED": "Der Agent Timeout ist erforderlich",
+      "MOTIONADDRESS_REQUIRED": "Die Adresse ist erforderlich",
+      "MOTIONADDRESS_MUST_VALID_URL": "Die Adresse muss in einem gültigen Format",
+      "ACCEPTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
+      "REJECTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "CLOSEURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "REPLYURI_REQUIRED": "Die Antwort URL ist erforderlich",
+      "REPLYURI_MUST_VALID_URL": "Die Antwort URL muss im gültigen Format geschrieben werden",
+      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
+      "CONDITION_REQUIRED": "Der Zustand ist erforderlich",
+      "TRUEPRIORITY_REQUIRED": "Die wahre Priorität ist erforderlich",
+      "FALSEPRIORITY_REQUIRED": "Die falsche Priorität ist erforderlich",
       "AGENT_REQUIRED": "Pflichtfeld",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
       "DISPOSITION_REQUIRED": "Pflichtfeld",
       "QUEUE_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Schlüssel darf eine maximale Länge haben von {{max}}",
-      "TEXT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}}",
+      "KEY_MAX_LENGTH": "Schlüssel muss eine maximale Länge von {{max}}",
+      "TEXT_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
       "VALUE_REQUIRED": "Pflichtfeld",
       "COMMAND_REQUIRED": "Pflichtfeld",
       "LIST_REQUIRED": "Pflichtfeld",
       "KEY_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "NAME_MUST_VALID_PATTERN": "Format ungültig",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "NAME_MUST_VALID_PATTERN": "Falsches Format",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "ACCESSKEYID_REQUIRED": "Zugangsschlüssel-ID ist erforderlich",
-      "BOTNAME_REQUIRED": "Bot-Name ist erforderlich",
-      "SECRETACCESSKEY_REQUIRED": "Geheimer Schlüssel ist erforderlich",
+      "BOTNAME_REQUIRED": "Der Bot-Name ist erforderlich",
+      "SECRETACCESSKEY_REQUIRED": "Zugangsschlüssel geheim ist erforderlich",
       "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
       "PRIVATEKEY_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld"
     "GOTOIF": "Gotoif",
     "NOOP": "Noop",
     "QUEUE": "Warteschlange",
-    "EDIT_AGENT": "Agenteb bearbeiten",
-    "EDIT_GOTO": "Gehe zu bearbeiten",
-    "EDIT_NOOP": "Noop bearbeiten",
-    "EDIT_GOTOIF": "GoToIf bearbeiten",
+    "EDIT_AGENT": "Agent bearbeiten",
+    "EDIT_GOTO": "Bearbeiten Gehe zu",
+    "EDIT_NOOP": "Bearbeiten Noop",
+    "EDIT_GOTOIF": "Bearbeiten Gotoif",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "CONDITION": "Bedingung",
+    "CONDITION": "Zustand",
     "TRUEPRIORITY": "Wahre Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "VALUE": "Wert",
     "PRIORITY": "Priorität",
     "AGENT_TIMEOUT": "Agent Timeout",
     "DESCRIPTION": "Beschreibung",
-    "ADD_OPENCHANNELQUEUE": "Warteschlange offener Kanal hinzufügen",
-    "EDIT_OPENCHANNELQUEUE": "Warteschlange offener Kanal bearbeiten",
-    "DELETE_OPENCHANNELQUEUE": "Warteschlange offener Kanal löschen",
-    "PENALTY": "Verzögerung",
+    "ADD_OPENCHANNELQUEUE": "Fügen Sie im Offenen Kanal Warteschlange",
+    "EDIT_OPENCHANNELQUEUE": "Offener Kanal Warteschlange bearbeiten",
+    "DELETE_OPENCHANNELQUEUE": "Löschen der Warteschlange im Offenen Kanal",
+    "PENALTY": "Strafe",
     "TEAMADD_OPENCHANNELQUEUE": "Team zur Warteschlange hinzufügen",
-    "AGENTADD_OPENCHANNELQUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTADD_OPENCHANNELQUEUE": "Agent zur Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CREATED_AT": "Erstellt am",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
     "GENERAL": "Allgemein",
-    "OPENCHANNELACCOUNTS": "Konten offener Kanal",
+    "OPENCHANNELACCOUNTS": "Offener Kanal Konten",
     "MOTIONADDRESS": "Motion Adresse",
-    "ADD_OPENCHANNELACCOUNT": "Konto offener Kanal hinzufügen",
-    "EDIT_OPENCHANNELACCOUNT": "Konto offener Kanal bearbeiten",
-    "DELETE_OPENCHANNELACCOUNT": "Konto offener Kanal löschen",
+    "ADD_OPENCHANNELACCOUNT": "Öffnen Sie den Channel Account hinzufügen",
+    "EDIT_OPENCHANNELACCOUNT": "Öffnen Sie den Channel Account bearbeiten",
+    "DELETE_OPENCHANNELACCOUNT": "Öffnen Sie den Channel Account löschen.",
     "API": "API",
-    "DISPOSITIONS": "Qualifizierungen",
+    "DISPOSITIONS": "Bestimmungen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "LIST": "Liste",
     "FIDELITY": "Treue",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Methode akzeptieren",
+    "ACCEPTMETHOD": "Die Methode",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "Schließen",
-    "CLOSEMETHOD": "Methode schließen",
-    "CLOSEURL": "URL schließen",
-    "SELECTED": "Ausgewählt",
+    "CLOSE": "In der Nähe",
+    "CLOSEMETHOD": "In der Nähe Methode",
+    "CLOSEURL": "Der URL",
+    "SELECTED": "Ausgewählte",
     "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
     "BACK": "Zurück",
     "OPENCHANNEL": "Offener Kanal",
-    "ID": "ID",
+    "ID": "Id",
     "TIMEOUT": "Timeout",
-    "OPENCHANNELDISPOSITIONS": "Qualifizierungen offener Kanal",
-    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Keine Qualifizierungen verfügbar",
-    "NEW_OPENCHANNELDISPOSITION": "Neue Qualifizierung",
-    "ADD_OPENCHANNELDISPOSITION": "Qualifizierung offener Kanal hinzufügen",
-    "EDIT_OPENCHANNELDISPOSITION": "Qualifizierung bearbeiten",
-    "DELETE_OPENCHANNELDISPOSITION": "Qualifizierung löschen",
-    "NEW_OPENCHANNELQUEUE": "Neue Warteschlange offener Kanal",
-    "NEW_OPENCHANNELACCOUNT": "Neues Konto offener Kanal",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
-    "ALL_TEAMS": "Alle Teams",
+    "OPENCHANNELDISPOSITIONS": "Offener Kanal Verfügungen",
+    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Keine offenen Kanal Dispositionen verfügbar",
+    "NEW_OPENCHANNELDISPOSITION": "Neue Offene Kanal inspektion",
+    "ADD_OPENCHANNELDISPOSITION": "Fügen Sie im Offenen Kanal inspektion",
+    "EDIT_OPENCHANNELDISPOSITION": "Bearbeiten Sie im Offenen Kanal inspektion",
+    "DELETE_OPENCHANNELDISPOSITION": "Löschen Sie im Offenen Kanal inspektion",
+    "NEW_OPENCHANNELQUEUE": "Neue Offene Kanal Warteschlange",
+    "NEW_OPENCHANNELACCOUNT": "Neue Open Channel Account",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "ALL_TEAMS": "Alle Mannschaften",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "REPLYURI": "Antwort URL",
     "RECEIVEURI": "Erhalten URL",
     "HELP": {
-      "RECEIVEURI": "Automatisch generierter API-String, um die Nachrichten über den offenen Kanal zu erhalten (POST-Methode). Zum Kopieren in die Zwischenablage klicken",
-      "REPLYURI": "URL des offenen Kanals zum Senden und Empfangen von Nachrichten",
+      "RECEIVEURI": "Dies ist die automatisch generierte API-String müssen Sie die Nachrichten in Ihrem offenen Kanal zu erhalten von der externen Anwendung (POST-Methode verwendet werden muss). Drücken Sie die Zwischenablage, um Sie in die Zwischenablage zu kopieren.",
+      "REPLYURI": "Dies ist die URL der Offene Kanal wird beim Senden oder Beantworten von Nachrichten",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
       "LIST": "Contact Manager Liste zu verknüpfen von Kontakten",
       "TOKEN": "Fügen Sie diese Eigenschaft als Abfragezeichenfolge in Ihrer Web-Service-URL hinzu. Weitere Informationen finden Sie im Dokument doc <a target = \"_ blank\" href = \"https://wiki.xcallymotion.com/display/XMV/New Channels Configuration Steps",
-      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
-      "WELCOMEMESSAGE": "Willkommensnachricht beim Eintreffen der ersten Anfrage"
+      "MANDATORYDISPOSITION": "Zwingende Disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Pause zur Verwendung, wenn die obligatorische Disposition aktiviert ist",
+      "WELCOMEMESSAGE": "Dies ist die erste Nachricht, die an das Schütz gesendet wird"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "CONTACT": "Kontakt",
-    "STARTEDAT": "Startdatum",
+    "STARTEDAT": "Gestartet am",
     "STATUS": "Status",
     "CLOSED": "Geschlossen",
-    "OPENED": "Geöffnet",
+    "OPENED": "Öffnen",
     "OPEN": "Öffnen",
     "ACCOUNT": "Konto",
     "INTERACTION": "Interaktion",
-    "INTERACTIONS": "Interaktionen",
+    "INTERACTIONS": "Wechselwirkungen",
     "ALL": "Alle",
-    "SELECT_STATUS": "Status auswählen",
+    "SELECT_STATUS": "Wählen Sie einen Status",
     "FILTER": "Filter",
     "FILTERS": "Filter",
     "CLOSEDAT": "Geschlossen",
-    "DISPOSITION": "Qualifizierung",
-    "NOTES": "Anmerkungen",
-    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
-    "SELECT_ACCOUNT": "Konto auswählen",
+    "DISPOSITION": "Disposition",
+    "NOTES": "Hinweise",
+    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
+    "SELECT_ACCOUNT": "Wählen Sie ein Konto",
     "GOTOP": "Gotop",
     "EDIT_GOTOP": "Gotop bearbeiten",
-    "EDIT_CLOSE": "Bearbeitung abschließen",
-    "INFO": "Information",
+    "EDIT_CLOSE": "Bearbeiten Schließen",
+    "INFO": "Info",
     "KEY": "Schlüssel",
     "REALTIME": "Echtzeit",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Nicht registriert",
+    "UNREGISTERED": "Unregistrierte",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Verwendung",
+    "NOT_INUSE": "Nicht in Gebrauch",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "In Verwendung",
+    "IN_USE": "Im Einsatz",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
-    "FULLNAME": "Vollständiger Name",
-    "INTERNAL": "Intern",
+    "FULLNAME": "Fullname",
+    "INTERNAL": "Interne",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "PAUSE": "Pause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agenten zur Warteschlange offener Kanal hinzufügen",
+    "AGENTADD_QUEUE": "Agent zu Offenen Kanal Warteschlange hinzufügen",
     "UNPAUSE": "Pause beenden",
     "DEFAULT_PAUSE": "Standard Pause",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
     "READY": "Bereit",
-    "WAITING": "Wartezustand",
-    "VOICE": "Anrufe",
+    "WAITING": "Warten",
+    "VOICE": "Voice",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "SMS": "SMS",
     "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Agenten zur Warteschlange offener Kanal hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten, die Offenen Kanal Warteschlange hinzufügen",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_OPENCHANNELQUEUE": "Zum offener Kanal Echtzeitmonitoring",
-    "PARTIALPAUSE": "Teilpause",
+    "GOTOREALTIME_OPENCHANNELQUEUE": "In Echtzeit, offenen Kanal Warteschlange",
+    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
     "TAGS": "Tags",
-    "SPYINTERACTION": "Mithören",
-    "INTERACTIONS_OPENCHANNELACCOUNT": "Zu Interaktionen gehen",
-    "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
+    "SPYINTERACTION": "Spy",
+    "INTERACTIONS_OPENCHANNELACCOUNT": "Zu Wechselwirkungen gehen",
+    "REFRESH_INTERACTIONS": "Aktualisieren Interaktionen",
     "DELETE": "Löschen",
-    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
-    "NEW_OPENCHANNELCANNEDANSWER": "Neue Textvorlage",
-    "ADD_OPENCHANNELCANNEDANSWER": "Textvorlage hinzufügen",
-    "EDIT_OPENCHANNELCANNEDANSWER": "Textvorlage bearbeiten",
-    "DELETE_OPENCHANNELCANNEDANSWER": "Textvorlage löschen",
-    "DELIVERYREPORTURL": "URL für Zustellungsbericht",
+    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "Keine vordefinierten Antworten verfügbar",
+    "NEW_OPENCHANNELCANNEDANSWER": "Neue vordefinierte Antwort",
+    "ADD_OPENCHANNELCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
+    "EDIT_OPENCHANNELCANNEDANSWER": "Vordefinierte Antwort bearbeiten",
+    "DELETE_OPENCHANNELCANNEDANSWER": "Vordefinierte Antwort löschen",
+    "DELIVERYREPORTURL": "Zustellungsbericht-URL",
     "DELETE_INTERACTION": "Interaktion löschen",
-    "COMMAND": "Eingabe",
+    "COMMAND": "Befehl",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "VARIABLE": "Variable",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Klingeln",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONSOUND": "Klingen",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "INSERT_MESSAGE_HERE": "Textnachricht hier eingeben",
+    "INSERT_MESSAGE_HERE": "Fügen Sie hier Ihre Textnachricht ein",
     "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
-    "ADVANCED": "Erweitert",
+    "ADVANCED": "Fortgeschritten",
     "PROXY": "Proxy",
-    "TOKEN": "Token",
+    "TOKEN": "Zeichen",
     "EDIT_TAG": "Tag bearbeiten",
-    "TAG": "Tag",
-    "AGENTADD_OPENCHANNELACCOUNT": "Konto offener Kanal hinzufügen",
-    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
-    "CANNED_ANSWER_SEARCH": "Nach Textvorlagen suchen",
-    "MAPKEY": "MAP-KEY",
+    "TAG": "Etikett",
+    "AGENTADD_OPENCHANNELACCOUNT": "Fügen Sie Agent zu Openchannel Account hinzu",
+    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
+    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
+    "MAPKEY": "Karten Schlüssel",
     "SEND": "Senden",
-    "TO": "An",
-    "AGENTTRANSFER": "Weiterleitung Agent",
+    "TO": "Zu",
+    "AGENTTRANSFER": "Agent Transfer",
     "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung für Agententransfer",
-    "QUEUETRANSFER": "Weiterleitung Warteschlange",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
-    "TRANSFER": "Weiterleitung",
-    "CANNEDANSWERS": "Textvorlagen",
+    "QUEUETRANSFER": "Warteschlangenübertragung",
+    "QUEUETRANSFERTIMEOUT": "Warteschlangenübertragungs-Timeout",
+    "TRANSFER": "Transfer",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "OPENCHANNELCANNEDANSWERS": "Textvorlagen offener Kanal",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
-    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "Qualifizierung pausieren, sofern sonst erforderlich",
-    "DIALOGFLOW": "DialogFlow",
-    "EDIT_DIALOGFLOW": "DialogFlow bearbeiten",
+    "OPENCHANNELCANNEDANSWERS": "Vordefinierte Antworten",
+    "LOGIN_TIME": "Login-Zeit",
+    "PAUSE_TIME": "Pausenzeit",
+    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
+    "MANDATORYDISPOSITION": "Zwingende Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Pause zur Verwendung, wenn die obligatorische Disposition aktiviert ist",
+    "DIALOGFLOW": "Dialogablauf",
+    "EDIT_DIALOGFLOW": "Bearbeiten Sie die Dialogflow-Konfiguration",
     "LANGUAGE": "Sprache",
-    "WELCOMEMESSAGE": "Willkommensnachricht",
+    "WELCOMEMESSAGE": "Willkommen Messsage",
     "ACCESSKEYID": "Zugangsschlüssel-ID",
     "AMAZONLEX": "AmazonLex",
-    "BOTNAME": "Botname",
-    "EDIT_AMAZONLEX": "Lex-Konfiguration bearbeiten",
-    "LEXREGION": "Lex Region",
-    "SECRETACCESSKEY": "Geheimer Schlüssel",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme angehalten",
+    "BOTNAME": "Bot-Name",
+    "EDIT_AMAZONLEX": "Bearbeiten Sie die Lex-Konfiguration",
+    "LEXREGION": "Region",
+    "SECRETACCESSKEY": "Zugangsschlüssel geheim",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
     "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterlagen ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterlagen inkl. Anhänge",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download ohne Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
     "LASTMESSAGE": "Letzte Nachricht",
-    "CLIENTEMAIL": "Kunden E-Mail",
+    "CLIENTEMAIL": "Kunden-E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privater Schlüssel",
+    "PRIVATEKEY": "Privat Schlüssel",
     "PROJECTID": "Projekt-ID",
     "ADD_NOTE": "Notiz hinzufügen",
-    "NOTE": "Notiz"
+    "NOTE": "Hinweis"
   }
 }
index ee88755..b5e8a7a 100644 (file)
 {
   "STAFF": {
     "CONTEXT": "Kontext",
-    "RINGINUSE": "Innerhalb Verteilungsgrupppe",
+    "RINGINUSE": "Ring im Einsatz",
     "USERS": "Benutzer",
     "AGENTS": "Agenten",
-    "TOGGLE_SIDENAV": "Navigationsleiste umschalten",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "TOGGLE_SIDENAV": "Um sidenav",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "BACK": "Zurück",
-    "MULTI_SELECT_TOGGLE": "Mehrfachauswahl ja/nein",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
-    "SELECTED": "Ausgewählt",
+    "MULTI_SELECT_TOGGLE": "Wählen Sie toggle multi",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECTED": "Ausgewählte",
     "DELETE_SELECTED": "Auswahl löschen",
     "EXPORT_SELECTED": "Auswahl exportieren",
     "ALL_USERS": "Alle Benutzer",
     "ALL_AGENTS": "Alle Agenten",
     "SORT": "Sortieren",
     "NAME": "Name",
-    "FULLNAME": "Vollständiger Name",
+    "FULLNAME": "Voller Name",
     "A_TO_Z": "(A bis Z)",
     "Z_TO_A": "(Z bis A)",
     "MORE": "Mehr",
     "DELETE_USER": "Benutzer löschen",
     "EDIT_USER": "Benutzer bearbeiten",
-    "DELETE_AGENT": "Agenten löschen",
-    "EDIT_AGENT": "Agenten bearbeiten",
+    "DELETE_AGENT": "Bedienplatz löschen",
+    "EDIT_AGENT": "Agent bearbeiten",
     "DELETE": "Löschen",
     "SAVE": "Speichern",
     "ADD_USER": "Benutzer hinzufügen",
     "ADD_AGENT": "AGENT HINZUFÜGEN",
-    "NO_RESULTS": "Keine Ergebnisse",
+    "NO_RESULTS": "Keine Ergebnisse.",
     "CLOSE_DIALOG": "Dialog schließen",
-    "NAME_REQUIRED": "Name (erforderlich)",
+    "NAME_REQUIRED": "Name (erforderlich).",
     "USERNAME": "Benutzername",
     "SHOW_ALL_FIELDS": "Alle Felder anzeigen",
     "PHONE_NUMBER": "Telefonnummer",
     "EMAIL": "E-Mail",
     "PASSWORD": "Passwort",
     "ERRORS": {
-      "FULLNAME_REQUIRED": "Vollständiger Name ist erforderlich",
-      "USERNAME_REQUIRED": "Benutzername ist erforderlich",
-      "EMAIL_REQUIRED": "E-Mail ist erforderlich",
-      "PASSWORD_REQUIRED": "Passwort ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
-      "EMAIL_MUST_VALID": "E-Mail Format ungültig",
-      "ACCOUNTNAME_REQUIRED": "Konto ist erforderlich",
-      "NAME_REQUIRED": "Name ist erforderlich",
-      "HOST_REQUIRED": "Host ist erforderlich",
-      "CHATCAPACITY_REQUIRED": "Kapazität Chat ist erforderlich",
-      "MAILCAPACITY_REQUIRED": "Kapazität E-Msil ist erforderlich",
-      "FAXCAPACITY_REQUIRED": "Kapazität Fax ist erforderlich",
-      "SMSCAPACITY_REQUIRED": "Kapazität SMS ist erforderlich",
-      "OPENCHANNELCAPACITY_REQUIRED": "Kapazität offener Kanal ist erforderlich",
-      "SIPEXPIRES_REQUIRED": "SIP-Ablaufdatum ist erforderlich",
-      "SIPPORT_REQUIRED": "SIP-Port ist erforderlich",
-      "UNCONDITIONALNUMBER_REQUIRED": "Zielrufnummer ist erforderlich",
-      "NOREPLYNUMBER_REQUIRED": "Nummer bei keiner Antwort ist erforderlich",
-      "BUSYNUMBER_REQUIRED": "Nummer bei Besetzt ist erforderlich",
-      "USERNAME_MUST_VALID_PATTERN": "Benutzername ungültig {{regex}}.",
-      "REMOTECONTROLPORT_REQUIRED": "Port für Remote ist erforderlich",
-      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität Chat muss größer oder gleich sein als",
-      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität E-Mail muss größer oder gleich sein als",
-      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität Fax muss größer oder gleich sein als",
-      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität offener Kanal muss größer oder gleich sein als",
-      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "FULLNAME_REQUIRED": "Der Fullname ist erforderlich",
+      "USERNAME_REQUIRED": "Der Benutzername ist erforderlich",
+      "EMAIL_REQUIRED": "Die E-Mail ist erforderlich",
+      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Kennwörter stimmen nicht überein.",
+      "EMAIL_MUST_VALID": "Die e-Mail muss in einem gültigen Format",
+      "ACCOUNTNAME_REQUIRED": "Der Account ist erforderlich.",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "HOST_REQUIRED": "Der Host wird benötigt",
+      "CHATCAPACITY_REQUIRED": "Die Kapazität ist erforderlich",
+      "MAILCAPACITY_REQUIRED": "Die E-Mail Kapazität erforderlich ist",
+      "FAXCAPACITY_REQUIRED": "Die Kapazität ist erforderlich",
+      "SMSCAPACITY_REQUIRED": "Die SMS-Kapazität erforderlich ist",
+      "OPENCHANNELCAPACITY_REQUIRED": "Der Offene Kanal Kapazität erforderlich ist",
+      "SIPEXPIRES_REQUIRED": "Der SIP-Ablauf ist erforderlich",
+      "SIPPORT_REQUIRED": "Die SIP-Port erforderlich.",
+      "UNCONDITIONALNUMBER_REQUIRED": "Die Zielrufnummer ist erforderlich",
+      "NOREPLYNUMBER_REQUIRED": "Die Nummer ist keine Antwort erforderlich",
+      "BUSYNUMBER_REQUIRED": "Die besetzt ist erforderlich",
+      "USERNAME_MUST_VALID_PATTERN": "Der Benutzername muss gültige {{regex}}.",
+      "REMOTECONTROLPORT_REQUIRED": "Die Fernbedienung Anschluss erforderlich",
+      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Chat Kapazität muss größer als oder gleich",
+      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die E-Mail Kapazität muss größer als oder gleich",
+      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Das Fax Kapazität muss größer als oder gleich",
+      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der offene Kanal Kapazität muss größer als oder gleich",
+      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
       "AUTOANSWERDELAY_REQUIRED": "Pflichtfeld",
       "MONITOREXTENSION_REQUIRED": "Pflichtfeld",
       "ENCRYPTION": "SRTP (Secure Realtime Protocol) Verschlüsselung",
       "DTLSCERTFILE_REQUIRED": "Pflichtfeld",
       "DTLSPRIVATEKEY_REQUIRED": "Pflichtfeld",
-      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstaben, 1 Großbuchstaben, 1 Zahl und 1 Sonderzeichen enthalten",
+      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen haben ~! @",
       "ALLOWCODECS_REQUIRED": "Pflichtfeld",
       "CRUDPERMISSIONS_REQUIRED": "Pflichtfeld",
       "USERPROFILE_REQUIRED": "Pflichtfeld",
-      "PASSWORD_OLDPASSWORD_MATCH": "Neues und altes Passwort dürfen nicht gleich sein",
+      "PASSWORD_OLDPASSWORD_MATCH": "Das neue Passwort muss sich vom vorherigen Passwort unterscheiden",
       "CONFIRM_REQUIRED": "Pflichtfeld",
       "WHATSAPPCAPACITY_REQUIRED": "Pflichtfeld"
     },
     "ACCOUNT": "Konto",
-    "VOICE": "Anrufe",
+    "VOICE": "Voice",
     "CREATED_AT": "Erstellt am",
     "ROLE": "Rolle",
-    "PERSONAL_INFO": "Persönliche Informationen",
+    "PERSONAL_INFO": "Persönliche Infos",
     "DESCRIPTION": "Beschreibung",
-    "CHANGE_AVATAR": "Avatar ändern",
+    "CHANGE_AVATAR": "Avatar ändern.",
     "GENERAL": "Allgemein",
-    "INTERNAL": "Intern",
-    "TRANSPORT": "Transport",
+    "INTERNAL": "Interne",
+    "TRANSPORT": "Verkehr",
     "ALLOWCODECS": "Codecs erlaubt",
     "HELP": {
       "ALLOWCODECS": "Erlaubt Codecs in der Reihenfolge ihrer Präferenz",
       "TRANSPORT": "Festlegen der Standardeinstellungen für Transporte. Die Reihenfolge bestimmt den primären Standard.",
-      "HOST": "Wie finden Sie die Client-IP oder den Host-Namen um das Telefon zu registrieren, verwenden Sie das Schlüsselwort Dynamic anstelle von Host-IP.",
-      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall. Wenn der Komma-getrennten Optionen ist \"Nein\", Asterisk ignoriert alle anderen Einstellungen und die nat=No.",
-      "SIPEXPIRES": "Standardeinstellung: 160",
+      "HOST": "Wie finden Sie die Client-IP oder den Host-Namen. Wenn Sie möchten, dass das Telefon zu registrieren, verwenden Sie das Schlüsselwort Dynamic anstelle von Host-IP.",
+      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall.Wenn der Komma-getrennten Optionen ist \"Nein\", Asterisk ignoriert alle anderen Einstellungen und die nat=No.",
+      "SIPEXPIRES": "Standardeinstellung: 120",
       "SIPPORT": "Standardeinstellung: 5160",
-      "TYPE": "Legt das SIP-Rolle innerhalb der Sternchen. User: eingehende Authentifizierung - Peer: für ausgehende Anrufe - Freund: Deckt beide Eigenschaften",
-      "CHATCAPACITY": "0 für unbegrenzt",
-      "MAILCAPACITY": "0 für unbegrenzt",
-      "FAXCAPACITY": "0 für unbegrenzt",
-      "SMSCAPACITY": "0 für unbegrenzt",
-      "OPENCHANNELCAPACITY": "0 für unbegrenzt",
-      "CALLGROUP": "Anrufgruppe",
-      "PICKUPGROUP": "Übernahmegruppe",
+      "TYPE": "Legt das SIP-Rolle innerhalb der Sternchen. User: Wird verwendet, um die Authentifizierung für eingehende - Peer: für ausgehende Anrufe - Freund: Deckt sowohl die Eigenschaften der oben genannten.",
+      "CHATCAPACITY": "Null bedeutet unbegrenzt.",
+      "MAILCAPACITY": "Null bedeutet unbegrenzt.",
+      "FAXCAPACITY": "Null bedeutet unbegrenzt.",
+      "SMSCAPACITY": "Null bedeutet unbegrenzt.",
+      "OPENCHANNELCAPACITY": "Null bedeutet unbegrenzt.",
+      "CALLGROUP": "Legt der Agent callgroup",
+      "PICKUPGROUP": "Definiert die Gruppen in denen der Agent Anrufe annehmen können",
       "USERNAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
       "ENCRYPTION": "SRTP (Secure Realtime Protocol) Verschlüsselung",
       "LAST_PASSWORD_RESET_AT": "Letztes Datum und Uhrzeit, zu der das Passwort geändert wurde. Wenn die Allgemeinen Einstellungen für Secure Suite aktiviert sind, läuft das Passwort nach 90 Tagen ab.",
       "DTLSCERTFILE": "Verknüpfen Sie mit dem gültigen TLS-Zertifikat (.crt-Datei). Standardwert: '/etc/pki/tls/certs/motion.crt'.",
       "DTLSPRIVATEKEY": "Verknüpfen Sie mit dem privaten Schlüssel des Zertifikats (.key-Datei). Standardwert: '/etc/pki/tls/private/motion.key'.",
       "SAVE_PERMISSIONS": "Jeder Abschnitt, der ausstehende Änderungen enthält, wird gespeichert",
-      "CUSTOM_DASHBOARDS_PERMISSIONS": "Berechtigungen für benutzerdefinierte Dashboards werden im Werkzeuge-Modul verwaltet",
+      "CUSTOM_DASHBOARDS_PERMISSIONS": "Berechtigungen für benutzerdefinierte Dashboards werden im Modul Tools verwaltet",
       "APIKEY": "Verwenden Sie die Schaltfläche \"API-Schlüsselmanager\" in der Symbolleiste, um diesen Schlüssel zu verwalten",
-      "ENABLEAUTOMATICSCREENRECORDING": "Funktionalität ist nur für Sprachkanäle verfügbar",
-      "BLOCKED": "Zugriff sperren/entsperren",
-      "DISABLED": "Auswählen zum Aktivieren",
-      "WHATSAPPCAPACITY": "Maximale Anzahl gleichzeitiger Whatsapp-Interaktionen pro Agent (0 = unbegrenzt)",
+      "ENABLEAUTOMATICSCREENRECORDING": "Die Funktionalität ist nur für Sprachkanäle verfügbar",
+      "BLOCKED": "Zugriff sperren / entsperren",
+      "DISABLED": "Zum Deaktivieren auswählen / Zum Reaktivieren deaktivieren",
+      "WHATSAPPCAPACITY": "Maximale Anzahl gleichzeitiger Kanalinteraktionen pro Agent (0 = unbegrenzt)",
       "MASK_SENSITIVE_DATA": "Maskieren Sie vertrauliche Daten in der gesamten Anwendung (z. B. Telefonnummern und E-Mail-Adressen).",
       "WSS_PORT": "Standard: 8089"
     },
-    "NEW_PASSWORD": "Neues Passwort",
+    "NEW_PASSWORD": "Neues Kennwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "CHANGE_PASSWORD": "Passwort ändern",
-    "CHANGEPASSWORD_AGENT": "Agent",
-    "CHANGEPASSWORD_USER": "Nutzer",
-    "CHANGEPASSWORD_TELEPHONE": "Telefon",
-    "LOGININPAUSE": "Pause nach Anmelden",
+    "CHANGEPASSWORD_AGENT": "Passwort ändern",
+    "CHANGEPASSWORD_USER": "Passwort ändern",
+    "CHANGEPASSWORD_TELEPHONE": "Passwort ändern",
+    "LOGININPAUSE": "Geben Sie Ihren Benutzernamen und Ihr Passwort In der Pause",
     "HOST": "Host",
     "NAT": "NAT",
-    "CHANSPY": "Listen-In",
+    "CHANSPY": "ChanSpy",
     "OTHER_CHANNELS": "Andere Kanäle",
-    "CHATCAPACITY": "Kapazität Chats",
-    "MAILCAPACITY": "Kapazität E-Mail",
-    "FAXCAPACITY": "Kapazität Fax",
-    "SMSCAPACITY": "Kapazität SMSW",
-    "OPENCHANNELCAPACITY": "Kapazität offener Kanal",
+    "CHATCAPACITY": "Chat Kapazität",
+    "MAILCAPACITY": "E-Kapazität",
+    "FAXCAPACITY": "Fax Kapazität",
+    "SMSCAPACITY": "Sms-Kapazität",
+    "OPENCHANNELCAPACITY": "Offener Kanal Kapazität",
     "MOTIONBAR": "Motion Bar",
     "SETTINGS": "Einstellungen",
-    "AUTOANSWER": "Auto-Antwort",
+    "AUTOANSWER": "\"Autom. Antwort\"",
     "ENABLESETTINGS": "Einstellungen aktivieren",
     "CALL_FORWARDING": "Anrufweiterleitung",
-    "UNCONDITIONAL": "Generell",
-    "UNCONDITIONALNUMBER": "Nummer Weiterleitung generell",
-    "NOREPLY": "Bei keiner Antwort",
-    "NOREPLYNUMBER": "Nummer Weiterleitung keine Antwort",
-    "BUSY": "Bei Besetzt",
-    "BUSYNUMBER": "Nummer Weiterleitung Besetzt",
-    "REMOTE_CONTROL": "Remote-Nebenstelle",
-    "REMOTECONTROL": "Remote-Nebenstelle",
-    "REMOTECONTROLPORT": "Port Remote-Nebenstelle",
+    "UNCONDITIONAL": "Unbedingte",
+    "UNCONDITIONALNUMBER": "Uneingeschränkte Anzahl",
+    "NOREPLY": "Keine Antwort",
+    "NOREPLYNUMBER": "\"Keine Antwort\"-Nummer",
+    "BUSY": "Besetzt",
+    "BUSYNUMBER": "Nummer besetzt",
+    "REMOTE_CONTROL": "Fernbedienung",
+    "REMOTECONTROL": "Fernbedienung",
+    "REMOTECONTROLPORT": "Fernbedienung",
     "SIP": "SIP",
-    "SIPEXPIRES": "SIP-Ablaufdatum",
+    "SIPEXPIRES": "SIP läuft [sec]",
     "SIPPORT": "SIP-Port",
-    "PENALTY": "Verzögerung",
+    "PENALTY": "Strafe",
     "ACCOUNTNAME": "Account Name",
     "ADD_TELEPHONE": "Telefon hinzufügen",
     "EDIT_TELEPHONE": "Telefon bearbeiten",
     "DELETE_TELEPHONE": "Telefon löschen",
     "TEAMS": "Teams",
     "DELETE_TEAM": "Team löschen",
-    "AGENTADD_TEAM": "Agenten zu einem Team hinzufügen",
-    "EDIT_TEAM": "Team bearbeiten",
+    "AGENTADD_TEAM": "Hinzufügen von Agenten zu einer Gruppe",
+    "EDIT_TEAM": "Team bearbeiten.",
     "TYPE": "Typ",
-    "TELEPHONES": "Telefonnummern",
-    "CALLERID": "Anrufer-ID",
-    "ENABLERECORDING": "Aufzeichnung aktiv",
+    "TELEPHONES": "Telefone",
+    "CALLERID": "Die Anrufer-ID",
+    "ENABLERECORDING": "Aktivieren der Aufzeichnung",
     "STAFF": "Personal",
-    "ID": "ID",
+    "ID": "Id",
     "NEW_USER": "Neuer Benutzer",
     "NEW_AGENT": "Neuer Agent",
     "NEW_TELEPHONE": "Neues Telefon",
     "NEW_TEAM": "Neues Team",
     "ADD_TEAM": "Team hinzufügen",
-    "JOIN_QUEUE": "In Warteschlange beitreten",
+    "JOIN_QUEUE": "Melden Sie Warteschlange",
     "CAPACITY": "Kapazität",
     "AUTOINTERNAL": "Interne Nummer automatisch generieren",
-    "ADD_AGENT_TO_TEAM": "Agenten zum Team hinzufügen",
-    "TEAMADD_AGENT": "Zum Team hinzufügen",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ADD_AGENT_TO_TEAM": "Hinzufügen von Agenten zu einer Gruppe",
+    "TEAMADD_AGENT": "Agent zu Gruppe hinzufügen",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
     "PERMISSIONS": "Berechtigungen",
-    "ADD_AGENT_TO_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "ADD_AGENT_TO_QUEUE": "Agent zur Warteschlange hinzufügen",
     "ALL_MODULES_AVAILABLE": "Alle Module verfügbar",
-    "CALLGROUP": "Gruppenanruf",
+    "CALLGROUP": "Gruppenruf",
     "PICKUPGROUP": "Übernahmegruppe",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Agenten hinzufügen - ausgehende Anrufe",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Agenten hinzufügen - eingehende Anrufe",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Agenten hinzufügen - Chat-Warteschlangen",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Agenten hinzufügen - E-Mail-Warteschlangen",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Agenten hinzufügen - SMS-Warteschlangen",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Agenten hinzufügen - offener Kanal-Warteschlangen",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Agenten hinzufügen - Fax-Warteschlangen",
-    "QUEUEADD_USER_VOICE_INBOUND": "Nutzer hinzufügen - eingehende Anrufe",
-    "QUEUEADD_USER_CHAT_INBOUND": "Nutzer hinzufügen - eingehende Chats",
-    "QUEUEADD_USER_MAIL_INBOUND": "Nutzer hinzufügen - eingehende E-Mails",
-    "QUEUEADD_USER_SMS_INBOUND": "Nutzer hinzufügen - eingehende SMS",
-    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Nutzer hinzufügen - eingehender offener Kanal",
-    "QUEUEADD_USER_FAX_INBOUND": "Nutzer hinzufügen - eingehende Faxe",
-    "ALL_TEAMS": "Alle Teams",
+    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Agent in der Warteschlange Kampagnen hinzufügen",
+    "QUEUEADD_AGENT_VOICE_INBOUND": "Agent Voice Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_CHAT_INBOUND": "Agent zu chatten Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_MAIL_INBOUND": "Agent Mail Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_SMS_INBOUND": "Agent sms-Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Agent zu offenen Kanal Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_FAX_INBOUND": "Agent fax Warteschlangen hinzufügen",
+    "QUEUEADD_USER_VOICE_INBOUND": "Benutzer stimme Warteschlangen hinzufügen",
+    "QUEUEADD_USER_CHAT_INBOUND": "Benutzer zu chatten Warteschlangen hinzufügen",
+    "QUEUEADD_USER_MAIL_INBOUND": "Benutzer Mail Warteschlangen hinzufügen",
+    "QUEUEADD_USER_SMS_INBOUND": "Benutzer von SMS-Warteschlangen hinzufügen",
+    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Benutzer zum offenen Kanal Warteschlangen hinzufügen",
+    "QUEUEADD_USER_FAX_INBOUND": "Benutzer fax Warteschlangen hinzufügen",
+    "ALL_TEAMS": "Alle Mannschaften",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Alle Warteschlangen - ausgehende Anrufe",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Gewählte Warteschlangen - ausgehende Anrufe",
-    "ALL_QUEUES_VOICE_INBOUND": "Alle Warteschlangen - eingehende Anrufe",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Ausgewählte Warteschlangen - eingehende Anrufe",
-    "ALL_QUEUES_CHAT_INBOUND": "Alle Warteschlangen - Chat",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Ausgewählte Warteschlangen - Chat",
-    "ALL_QUEUES_MAIL_INBOUND": "Alle Warteschlangen - E-Mail",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Ausgewählte Warteschlangen - E-Mail",
-    "ALL_QUEUES_SMS_INBOUND": "Alle Warteschlangen - SMS",
-    "SELECTED_QUEUES_SMS_INBOUND": "Ausgewählte Warteschlangen - SMS",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Alle Warteschlangen - offener Kanal",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Ausgewählte Warteschlangen - offener Kanal",
-    "ALL_QUEUES_FAX_INBOUND": "Alle Warteschlangen - Fax",
-    "SELECTED_QUEUES_FAX_INBOUND": "Ausgewählte Warteschlangen - Fax",
+    "ALL_QUEUES_VOICE_OUTBOUND": "Alle Queue Kampagnen",
+    "SELECTED_QUEUES_VOICE_OUTBOUND": "Ausgewählte Warteschlange Kampagnen",
+    "ALL_QUEUES_VOICE_INBOUND": "Alle Warteschlangen",
+    "SELECTED_QUEUES_VOICE_INBOUND": "Ausgewählte Voice Warteschlangen",
+    "ALL_QUEUES_CHAT_INBOUND": "Alle Chat Warteschlangen",
+    "SELECTED_QUEUES_CHAT_INBOUND": "Ausgewählte Chat-warteschlangen",
+    "ALL_QUEUES_MAIL_INBOUND": "Alle E-Mail-Warteschlangen",
+    "SELECTED_QUEUES_MAIL_INBOUND": "Ausgewählte Mail Warteschlangen",
+    "ALL_QUEUES_SMS_INBOUND": "Alle SMS-Warteschlangen",
+    "SELECTED_QUEUES_SMS_INBOUND": "Ausgewählte SMS-Warteschlangen",
+    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Alle offenen Kanal Warteschlangen",
+    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Ausgewählten Offenen Kanal Warteschlangen",
+    "ALL_QUEUES_FAX_INBOUND": "Alle Fax Warteschlangen",
+    "SELECTED_QUEUES_FAX_INBOUND": "Ausgewählte Fax Warteschlangen",
     "VOICEMAIL": "Voicemail",
-    "SHOWWEBCONTROL": "WebControl anzeigen",
+    "SHOWWEBCONTROL": "Anzeigen Web Control",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "CALLFORWARDING": "Anrufweiterleitung",
-    "DND": "Nicht stören",
-    "UNANSWEREDCALLBADGE": "Badge unbeantwortete Anrufe",
-    "ENABLEDTMFTONE": "DMFT-Töne aktivieren",
-    "AUTOANSWERDELAY": "Automatische Antwort nach",
+    "DND": "Während der Pause nicht stören",
+    "UNANSWEREDCALLBADGE": "Zeige unbeantwortete Anruf Abzeichen",
+    "ENABLEDTMFTONE": "Dtmf-Töne aktivieren",
+    "AUTOANSWERDELAY": "Auto Antwortverzögerung",
     "ENCRYPTION": "Verschlüsselung",
     "CHANNELS": "Kanäle",
     "CHAT": "Chat",
-    "SMS": "SMS",
+    "SMS": "Sms",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
-    "QUEUEADD_USER_VOICE_OUTBOUND": "Nutzer zu Warteschlange für eingehende Anrufe hinzufügen",
-    "MONITOREXTENSION": "Nebenstelle des Nutzers aufzeichnen",
+    "QUEUEADD_USER_VOICE_OUTBOUND": "Benutzer in Warteschlange Kampagnen hinzufügen",
+    "MONITOREXTENSION": "Anrufe an die Nebenstelle des Benutzers aufzeichnen",
     "NO_PASSWORD_CHANGE": "Keine Passwortänderung",
     "SECURITY_SUITE": "Sicherheitssuite",
-    "LAST_PASSWORD_RESET_AT": "Passwort zuletzt zurückgesetzt am:",
-    "SIP_WEBRTC": "SIP/WebRTC",
-    "SETTINGS_WEBRTC": "Einstellungen",
+    "LAST_PASSWORD_RESET_AT": "Letzte Passwort zurücksetzen um",
+    "SIP_WEBRTC": "Schluck",
+    "SETTINGS_WEBRTC": "die Einstellungen",
     "WEBRTC": "WebRTC",
     "DTLSCERTFILE": "TLS-Zertifikat",
-    "DTLSPRIVATEKEY": "Privater Schlüssel des TLS-Zertifikats",
-    "EDITPERMISSIONS": "Berechtigungen verwalten",
-    "READANDEDIT": "Lesen und Bearbeiten",
-    "READANDEDITANDDELETE": "Lesen, Bearbeiten und Löschen",
-    "GENERAL_PERMISSIONS": "Allgemein",
-    "ENABLEMESSENGER": "Internen Messenger aktivieren",
-    "OUTBOUNDPROXY": "Outbound-Proxy",
+    "DTLSPRIVATEKEY": "Der private Schlüssel des TLS-Zertifikats",
+    "EDITPERMISSIONS": "Bearbeiten von Berechtigungen",
+    "READANDEDIT": "Lesen, Bearbeiten",
+    "READANDEDITANDDELETE": "Lesen, Bearbeiten, Löschen",
+    "GENERAL_PERMISSIONS": "Allgemeines",
+    "ENABLEMESSENGER": "Aktivieren Sie den internen Messenger",
+    "OUTBOUNDPROXY": "Oubound-Proxy",
     "PHONE": "Telefon",
     "MOBILE": "Handy, Mobiltelefon",
     "ALIAS": "Alias",
     "ENABLEJAWSINTEGRATION": "Jaws-Integration aktivieren",
     "PREFIXREQUIRED": "Präfix erforderlich",
-    "ENABLEVIDEORECORDING": "Videoaufzeichnung aktivieren",
+    "ENABLEVIDEORECORDING": "Aktiviere Videoaufnahme",
     "OLD_PASSWORD": "Altes Passwort",
     "ALL_CHATQUEUES": "Alle Chat-Warteschlangen",
     "ALL_CHATWEBSITES": "Alle Chat-Websites",
     "ALL_FAXACCOUNTS": "Alle Faxkonten",
-    "ALL_FAXQUEUES": "Alle Fax-Warteschlangen",
+    "ALL_FAXQUEUES": "Alle Faxwarteschlangen",
     "ALL_MAILACCOUNTS": "Alle E-Mail-Konten",
     "ALL_MAILQUEUES": "Alle E-Mail-Warteschlangen",
-    "ALL_OPENCHANNELACCOUNTS": "Alle offener Kanal-Konten",
-    "ALL_OPENCHANNELQUEUES": "Alle offener Kanal-Warteschlangen",
+    "ALL_OPENCHANNELACCOUNTS": "Alle offenen Channel-Konten",
+    "ALL_OPENCHANNELQUEUES": "Alle offenen Kanalwarteschlangen",
     "ALL_PROJECTS": "Alle Cally Square-Projekte",
     "ALL_QUEUECAMPAIGNS": "Alle Queue-Kampagnen",
     "ALL_SMSACCOUNTS": "Alle SMS-Konten",
     "SELECTED_CHATQUEUES": "Ausgewählte E-Mail-Warteschlangen",
     "SELECTED_CHATWEBSITES": "Ausgewählte Chat-Websites",
     "SELECTED_FAXACCOUNTS": "Ausgewählte Faxkonten",
-    "SELECTED_FAXQUEUES": "Ausgewählte Fax-Warteschlangen",
+    "SELECTED_FAXQUEUES": "Ausgewählte Faxwarteschlangen",
     "SELECTED_MAILACCOUNTS": "Ausgewählte E-Mail-Konten",
     "SELECTED_MAILQUEUES": "Ausgewählte Chat-Warteschlangen",
-    "SELECTED_OPENCHANNELACCOUNTS": "Ausgewählte offener Kanal-Konten",
-    "SELECTED_OPENCHANNELQUEUES": "Ausgewählte offene Kanal-Warteschlangen",
+    "SELECTED_OPENCHANNELACCOUNTS": "Ausgewählte offene Channel-Konten",
+    "SELECTED_OPENCHANNELQUEUES": "Ausgewählte offene Kanalwarteschlangen",
     "SELECTED_PROJECTS": "Ausgewählte Projekte von Cally Square",
     "SELECTED_QUEUECAMPAIGNS": "Ausgewählte Queue-Kampagnen",
     "SELECTED_SMSACCOUNTS": "Ausgewählte SMS-Konten",
     "SELECTED_SMSQUEUES": "Ausgewählte SMS-Warteschlangen",
-    "SELECTED_VOICEQUEUES": "Ausgewählte Anruf-Warteschlangen",
+    "SELECTED_VOICEQUEUES": "Ausgewählte Sprachwarteschlangen",
     "USERADD_CHATQUEUES": "Chat-Warteschlange zum Benutzer hinzufügen",
     "USERADD_CHATWEBSITES": "Chat-Website zum Benutzer hinzufügen",
     "USERADD_FAXACCOUNTS": "Faxkonto zum Benutzer hinzufügen",
-    "USERADD_FAXQUEUES": "Fax-Warteschlange zum Benutzer hinzufügen",
+    "USERADD_FAXQUEUES": "Faxwarteschlange zum Benutzer hinzufügen",
     "USERADD_MAILACCOUNTS": "E-Mail-Konto zum Benutzer hinzufügen",
     "USERADD_MAILQUEUES": "E-Mail-Warteschlange zum Benutzer hinzufügen",
-    "USERADD_OPENCHANNELACCOUNTS": "Offener Kanal-Konto zum Benutzer hinzufügen",
-    "USERADD_OPENCHANNELQUEUES": "Offener Kanal-Warteschlange zum Benutzer hinzufügen",
+    "USERADD_OPENCHANNELACCOUNTS": "Open Channel-Konto zum Benutzer hinzufügen",
+    "USERADD_OPENCHANNELQUEUES": "Open Channel-Warteschlange zum Benutzer hinzufügen",
     "USERADD_PROJECTS": "Cally Square-Projekt zum Benutzer hinzufügen",
     "USERADD_QUEUECAMPAIGNS": "Queue-Kampagne zum Benutzer hinzufügen",
     "USERADD_SMSACCOUNTS": "SMS-Konto zum Benutzer hinzufügen",
     "USERADD_SMSQUEUES": "SMS-Warteschlange zum Benutzer hinzufügen",
-    "USERADD_VOICEQUEUES": "Anruf-Warteschlange zum Benutzer hinzufügen",
-    "HOTDESK": "Wechselnder Arbeitsplatz",
+    "USERADD_VOICEQUEUES": "Sprachwarteschlange zum Benutzer hinzufügen",
+    "HOTDESK": "Heißer Schreibtisch",
     "ADD_USERPROFILE": "Benutzerprofil hinzufügen",
-    "CANCEL": "Abbrechen",
+    "CANCEL": "Stornieren",
     "CLONE_USERPROFILE": "Benutzerprofil klonen",
     "CLOSE": "Schließen",
     "CONFIRM": "Bestätigen",
     "PERMISSIONS_SELECTED_RESOURCES": "Ausgewählte Ressourcen",
     "PERMISSIONS_SELECT_REPORT_TYPE": "Wählen Sie den Berichtstyp",
     "PERMISSIONS_SELECT_SECTION": "Wählen Sie einen Abschnitt aus",
-    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Kein Zugriff auf den ausgewählten Bereich",
+    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Sie dürfen nicht auf den ausgewählten Bereich zugreifen",
     "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Unbefugte Handlung",
-    "PERMISSIONS_WARNING_CLOSE": "Es wurden Änderungen nicht gespeichert. Fortfahren?",
+    "PERMISSIONS_WARNING_CLOSE": "Du hast nicht gespeicherte Änderungen. Möchten Sie den Vorgang wirklich ohne Speichern beenden?",
     "PERMISSIONS_WARNING_ENABLE_ALL": "Alle {{sectionName}} Unterabschnitte und ihre Ressourcen werden aktiviert. Sind Sie sicher, dass Sie fortfahren möchten?",
-    "QUEUES_ASSOCIATION": "{{channel}} Warteschlangen-Zuweisung",
+    "QUEUES_ASSOCIATION": "{{channel}} Queues Association",
     "READ_PERMISSION": "Lesen",
     "REPORT_TYPE": "Berichtstyp",
     "SECTIONS": "Abschnitte",
     "SUMMARY": "Zusammenfassung",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
     "USERPROFILE": "Benutzerprofil",
     "USERPROFILES": "Benutzerprofil",
-    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Keine Berechtigung zum Erstellen der Ressource",
-    "VIDEOSUPPORT": "Unterstützt Video",
+    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Sie dürfen die Ressource nicht erstellen",
+    "VIDEOSUPPORT": "Video-Unterstützung",
     "APIKEY": "API-Schlüssel",
     "APIKEYMANAGER_USER": "API Key Manager",
-    "GENERATE": "Erneut generieren",
+    "GENERATE": "(Regenerieren",
     "MANAGE_API_KEY": "API-Schlüsselmanager",
-    "REMOVE": "Entfernen",
-    "ENABLEAUTOMATICSCREENRECORDING": "Automatische Bildschirmaufzeichnung aktivieren",
-    "ENABLESCREENRECORDINGBYAGENT": "Bildschirmaufzeichnung durch Agenten aktivieren",
-    "ENABLEVIDEOECORDING": "Videoaufzeichnung aktivieren",
+    "REMOVE": "Löschen",
+    "ENABLEAUTOMATICSCREENRECORDING": "Aktivieren Sie die automatische Bildschirmaufnahme",
+    "ENABLESCREENRECORDINGBYAGENT": "Aktivieren Sie die Bildschirmaufzeichnung nach Agent",
+    "ENABLEVIDEOECORDING": "Videoaufnahme aktivieren",
     "BLOCKED": "Gesperrt",
     "DISABLED": "Deaktiviert",
-    "REGENERATE": "Erneut generieren",
+    "REGENERATE": "Regenerieren",
     "ALL_QUEUES_WHATSAPP_INBOUND": "Alle WhatsApp-Warteschlangen",
     "ALL_WHATSAPPACCOUNTS": "Alle WhatsApp-Konten",
     "ALL_WHATSAPPQUEUES": "Alle Whataspp-Warteschlangen",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agenten zu WhatsApp-Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agent zu WhatsApp-Warteschlangen hinzufügen",
     "QUEUEADD_USER_WHATSAPP_INBOUND": "Benutzer zu WhatsApp-Warteschlangen hinzufügen",
     "SELECTED_QUEUES_WHATSAPP_INBOUND": "Ausgewählte WhatsApp-Warteschlangen",
     "SELECTED_WHATSAPPACCOUNTS": "Ausgewählte WhatsApp-Konten",
     "SELECTED_WHATSAPPQUEUES": "Ausgewählte WhatsApp-Warteschlangen",
     "USERADD_WHATSAPPACCOUNTS": "WhatsApp-Konto zum Benutzer hinzufügen",
-    "USERADD_WHATSAPPQUEUES": "Whataspp-Warteschlange dem Benutzer hinzufügen",
+    "USERADD_WHATSAPPQUEUES": "Fügen Sie dem Benutzer die Whataspp-Warteschlange hinzu",
     "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPPCAPACITY": "Kapazität Whatsapp",
+    "WHATSAPPCAPACITY": "WhatsApp Connector-Kapazität",
     "MASK_SENSITIVE_DATA": "Sensitive Daten maskieren",
     "WSS_PORT": "WSS-Port",
     "ATTACHMENTS": "Anhänge",
     "CALLYSQUARE_RECORDINGS": "Cally Square-Aufnahmen",
-    "CONTACT_MANAGER_LISTS": "Kontaktmanager Listen",
+    "CONTACT_MANAGER_LISTS": "Kontaktmanagerlisten",
     "DOWNLOADS": "Downloads",
     "DOWNLOAD_PERMISSIONS": "Download-Berechtigungen",
     "JSCRIPTY_SESSIONS": "Jscripty-Sitzungen",
     "OMNICHANNEL_INTERACTIONS": "Omnichannel-Interaktionen",
-    "SCREEN_RECORDINGS": "Bildschirmaufzeichnungen",
-    "VOICE_RECORDINGS": "Sprachaufzeichnungen"
+    "SCREEN_RECORDINGS": "Bildschirmaufnahmen",
+    "VOICE_RECORDINGS": "Sprachaufnahmen"
   }
 }
index d62768d..6207bf0 100644 (file)
     "BOT": "Voicebot",
     "CALL": "Anruf",
     "NAME": "Name",
-    "TRUNKS": "Trunks",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "TRUNKS": "Amtsleitungen",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "ERRORS": {
-      "NAME_REQUIRED": "Name ist erforderlich",
-      "HOST_REQUIRED": "Host wird benötigt",
-      "DEFAULTUSER_REQUIRED": "Standardbenutzer ist erforderlich",
-      "CALLERID_REQUIRED": "Anrufer-ID ist erforderlich",
-      "KEY_REQUIRED": "Schlüssel ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
-      "VALIDITYSTART_REQUIRED": "Startzeit ist erforderlich",
-      "VALIDITYEND_REQUIRED": "Endzeit ist erforderlich",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "HOST_REQUIRED": "Der Host wird benötigt",
+      "DEFAULTUSER_REQUIRED": "Der Standardbenutzer ist erforderlich",
+      "CALLERID_REQUIRED": "Die Anrufer-ID ist erforderlich",
+      "KEY_REQUIRED": "Der Schlüssel ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Kennwörter nicht übereinstimmen",
+      "VALIDITYSTART_REQUIRED": "Die Startzeit ist erforderlich",
+      "VALIDITYEND_REQUIRED": "Das Ende der Zeit ist erforderlich",
       "MONTHDAY_REQUIRED": "Tag des Monats ist erforderlich",
-      "HOUR_REQUIRED": "Stunde ist erforderlich",
-      "CONTENT_REQUIRED": "Inhalt ist erforderlich",
-      "URL_REQUIRED": "URL ist erforderlich",
-      "URL_MUST_VALID_URL": "URL ungültiges Format",
-      "APPLICATION_REQUIRED": "Anwendung ist erforderlich",
-      "ARGUMENTS_REQUIRED": "Bedingungen sind erforderlich",
-      "NAME_MUST_VALID_PATTERN": "Name ungültiges Format",
-      "POLLING_INTERVAL_REQUIRED": "Abfrageintervall ist erforderlich",
-      "TITLE_REQUIRED": "Titel ist erforderlich",
-      "EMAILADDRESS_REQUIRED": "E-Mail Adresse ist erforderlich",
-      "EVENTVARIABLES_REQUIRED": "Variablen sind erforderlich",
-      "TYPE_REQUIRED": "Typ ist erforderlich",
-      "VALUE_REQUIRED": "Wert ist erforderlich",
-      "ACCOUNT_REQUIRED": "Konto ist erforderlich",
-      "FIELD_REQUIRED": "Feld ist erforderlich",
-      "INTEGRATION_REQUIRED": "Integration ist erforderlich",
-      "LIST_REQUIRED": "Liste ist erforderlich",
-      "TEMPLATE_REQUIRED": "Vorlage ist erforderlich",
-      "AUTOCREATECONTACT_REQUIRED": "Kontakterstellung erforderlich",
-      "OUTBOUNDROUTE_REQUIRED": "Ausgehende Route erforderlich",
-      "QUEUE_REQUIRED": "Warteschlange erforderlich",
-      "TIME_RANGE_TO_REQUIRED": "Zeitintervall erforderlich",
-      "WEEK_DAYS_TO_REQUIRED": "Wochentage erforderlich",
-      "MONTH_DAYS_TO_REQUIRED": "Tage des Monats erforderlich",
-      "MONTH_TO_REQUIRED": "Monat erforderlich",
+      "HOUR_REQUIRED": "Die Stunde ist erforderlich",
+      "CONTENT_REQUIRED": "Der Inhalt ist erforderlich",
+      "URL_REQUIRED": "Die URL ist erforderlich",
+      "URL_MUST_VALID_URL": "Die URL muss gültig sein",
+      "APPLICATION_REQUIRED": "Die Anwendung ist erforderlich",
+      "ARGUMENTS_REQUIRED": "Die Argumente sind erforderlich",
+      "NAME_MUST_VALID_PATTERN": "Der Name muss in einem gültigen Format geschrieben werden",
+      "POLLING_INTERVAL_REQUIRED": "Das Abfrageintervall ist erforderlich",
+      "TITLE_REQUIRED": "Der Titel ist erforderlich",
+      "EMAILADDRESS_REQUIRED": "Die E-Mail Adresse ist erforderlich",
+      "EVENTVARIABLES_REQUIRED": "Pflichtfeld",
+      "TYPE_REQUIRED": "Pflichtfeld",
+      "VALUE_REQUIRED": "Pflichtfeld",
+      "ACCOUNT_REQUIRED": "Pflichtfeld",
+      "FIELD_REQUIRED": "Pflichtfeld",
+      "INTEGRATION_REQUIRED": "Pflichtfeld",
+      "LIST_REQUIRED": "Pflichtfeld",
+      "TEMPLATE_REQUIRED": "Pflichtfeld",
+      "AUTOCREATECONTACT_REQUIRED": "Pflichtfeld",
+      "OUTBOUNDROUTE_REQUIRED": "Pflichtfeld",
+      "QUEUE_REQUIRED": "Pflichtfeld",
+      "TIME_RANGE_TO_REQUIRED": "Pflichtfeld",
+      "WEEK_DAYS_TO_REQUIRED": "Pflichtfeld",
+      "MONTH_DAYS_TO_REQUIRED": "Pflichtfeld",
+      "MONTH_TO_REQUIRED": "Pflichtfeld",
       "TIME_RANGE_FROM_INVALID": "Falsches Format",
       "TIME_RANGE_TO_INVALID": "Falsches Format",
-      "ACTION_REQUIRED": "Aktion erforderlich",
-      "CONFIGURATION_REQUIRED": "Konfiguration erforderlich",
-      "PROJECT_REQUIRED": "Projekt erforderlich",
-      "LOCATION_REQUIRED": "Standort erforderlich",
-      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "FONTSIZE_REQUIRED": "Schriftgröße erforderlich",
-      "PATH_REQUIRED": "Pfad erforderlich",
-      "FORMAT_REQUIRED": "Format erforderlich",
-      "REPORT_REQUIRED": "Report erforderlich",
-      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "REFRESH_REQUIRED": "Aktualisieren erforderlich",
-      "TITLE_MAX_LENGTH": "Titel darf eine maximale Länge haben von {{max}} ",
-      "NAME_MAX_LENGTH": "Name darf eine maximale Länge haben von {{max}} ",
-      "OUTPUT_REQUIRED": "Ausgabe erforderlich",
-      "REPORTFOLDER_REQUIRED": "Ordner erforderlich",
-      "REPORTSUBFOLDER_REQUIRED": "Unterordner erforderlich",
-      "REPORTTYPE_REQUIRED": "Reporttyp erforderlich",
-      "AGENT_REQUIRED": "Agent erforderlich",
-      "INFO_REQUIRED": "Information erforderlich",
-      "SCRIPT_REQUIRED": "Skript erforderlich",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "TIMEOUT_REQUIRED": "Timeout erforderlich",
-      "AUTOCREATE_FIELD_REQUIRED": "Automatisches Erstellen erforderlich"
+      "ACTION_REQUIRED": "Pflichtfeld",
+      "CONFIGURATION_REQUIRED": "Pflichtfeld",
+      "PROJECT_REQUIRED": "Pflichtfeld",
+      "LOCATION_REQUIRED": "Pflichtfeld",
+      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "FONTSIZE_REQUIRED": "Pflichtfeld",
+      "PATH_REQUIRED": "Pflichtfeld",
+      "FORMAT_REQUIRED": "Pflichtfeld",
+      "REPORT_REQUIRED": "Pflichtfeld",
+      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "REFRESH_REQUIRED": "Pflichtfeld",
+      "TITLE_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "NAME_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "OUTPUT_REQUIRED": "Pflichtfeld",
+      "REPORTFOLDER_REQUIRED": "Pflichtfeld",
+      "REPORTSUBFOLDER_REQUIRED": "Pflichtfeld",
+      "REPORTTYPE_REQUIRED": "Pflichtfeld",
+      "AGENT_REQUIRED": "Pflichtfeld",
+      "INFO_REQUIRED": "Pflichtfeld",
+      "SCRIPT_REQUIRED": "Pflichtfeld",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "TIMEOUT_REQUIRED": "Pflichtfeld",
+      "AUTOCREATE_FIELD_REQUIRED": "Pflichtfeld"
     },
     "HOST": "Host",
-    "SECRET": "Secret",
-    "DEFAULTUSER": "Standardnutzer",
+    "SECRET": "Geheimnis",
+    "DEFAULTUSER": "Default User",
     "DESCRIPTION": "Beschreibung",
-    "ADD_TRUNK": "Trunk hinzufügen",
+    "ADD_TRUNK": "Amtsleitung hinzufügen",
     "HELP": {
-      "SECRET": "Kennwort für die Authentifizierung, wenden Sie sich an den Systemadministrator.",
+      "SECRET": "Kennwort für die Authentifizierung, wenden Sie sich an den Anbieter.",
       "HOST": "Die Domäne oder den Hostnamen für den Anbieter.",
       "DEFAULTUSER": "Authentifizierung Benutzernamen, wenden Sie sich an den Anbieter.",
       "CALLERID": "Die Anrufer-ID im Format \"name\" <Nummer>.",
-      "REGISTRY": "Die SIP-Registry, die von einigen Anbietern, die in der Regel defaultuser:Secret@host.",
-      "FROMDOMAIN": "Legt Standardeinstellungen von:domain in SIP-Nachrichten als SIP-ua (Client).",
-      "FROMUSER": "SIP-Nutzereinstellungen. Nur gültig für den Typ=peer.",
+      "REGISTRY": "Die amtsleitung Registry, die von einigen Anbietern, die in der Regel defaultuser:Secret@host.",
+      "FROMDOMAIN": "Legt Standardeinstellungen von:domain in SIP-Nachrichten als SIP-ua (Client). Einige Ziele können die obligatorische Identität Name anstatt nur die IP-Adresse.",
+      "FROMUSER": "Rovider wie ihr sie kennt. Dies ist der Benutzer, um anstelle der Anrufer-ID beim Tätigen von Anrufen zu anderen Peer (SIP-Proxy). Nur gültig für den Typ=peer.",
       "OUTBOUNDPROXY": "IP-Adresse oder DNS-SRV-Ressourceneintrag name (ausgenommen die _sip._udp-Präfix): SRV Name, den Hostnamen oder die IP-Adresse des ausgehenden SIP-Proxy. Senden Sie ausgehende Signale zu diesem Proxy und nicht direkt an die Geräte. Nur gültig für den Typ=peer.",
-      "PORT": "Die Nummer des Ports, zu dem Sie eine Verbindung herstellen möchten.",
-      "CONTEXT": "Die nutzbaren Kontext für den Trunk.",
-      "TYPE": "Definiert die SIP-Rolle innerhalb der Anwendung. User: Authentifizierung für eingehende Verbindungen; Peer: für ausgehende Verbindungen - Freund: Beide Eigenschaften werden erfüllt",
-      "DTMFMODE": "Sendeart von DTMF-Tönen (Dual-Tone Multi-Frequency): RFC2833: Standardeinstellung, DMTF wird über RTP gesendet (außerhalb des Audiostreams) - INBAND DTMF wird innerhalb des Audiostreams gesendet, über die Lautsprecher hörbar. Erfordert eine höhere CPU-Last.",
-      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall. Wenn \"Nein\", ignoriert der Asterisk alle anderen Einstellungen und die nat=No.",
+      "PORT": "Die Nummer des Ports, zu dem Sie eine Verbindung herstellen möchten wir auf der anderen Seite.",
+      "CONTEXT": "Die nutzbaren Rahmen für den Trunk.",
+      "TYPE": "Legt das SIP-Rolle innerhalb der Sternchen. User: Wird verwendet, um die Authentifizierung für eingehende - Peer: für ausgehende Anrufe - Freund: Deckt sowohl die Eigenschaften der oben genannten.",
+      "DTMFMODE": "Wie DTMF (Dual-Tone Multi-Frequency): RFC2833: Die Standardeinstellung, die DTMF gesendet mit RTP, aber außerhalb der Audio Stream. INBAND DTMF gesendet wird: Die in der Audio Stream des aktuellen Gesprächs, wird über die Lautsprecher hörbar. Erfordert eine hohe CPU-Last. INFO: Diese Methode ist zwar sehr zuverlässig, es ist nicht für alle TK-Anlagen und viele SIP-Trunk.",
+      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall.Wenn der Komma-getrennten Optionen ist \"Nein\", Asterisk ignoriert alle anderen Einstellungen und die nat=No.",
       "QUALIFY": "Legt fest, wann die SIP erreichbar ist.",
       "ALLOWCODECS": "Erlaubt Codecs in der Reihenfolge ihrer Präferenz.",
-      "INSECURE": "Erlaubt unsichere Einstellungen für peer",
-      "CALL_LIMIT": "Maximale Anzahl aller gleichzeitigen ein- und ausgehenden Anrufe",
-      "DIRECTMEDIA": "Der Asterisk versucht, den RTP-Stream im Standard direkt zwischen dem Anrufer und dem Angerufenen aufzubauen. Manche Geräte (z.B. Firewalls) unterstützen diese Funktion nicht. Daher kann hier eine Umstellung erfolgen.",
-      "CALLCOUNTER": "Aktivieren der Anrufzähler für die Geräte",
-      "ADD_PHONE_TO_URI": "Fügt im SIP den user=phone zur URL hinzu",
-      "TRUST_REMOTE_PARTY_ID": "Soll der URL der anderen Partei vertraut werden?",
-      "SEND_REMOTE_PARTY_ID_HEADER": "Soll die ID der anderen Partei gesendet werden?",
-      "ENCRYPTION": "Legt fest, ob die Verbindung über SRTP verschlüsselt vorliegt. Sollte das peer kein SRTP unterstützen, werden Anrufe mit dem HANGUPCAUSE=58 beendet.",
+      "INSECURE": "Legt fest, wie Verbindungen mit Peer, dass unsichere Einstellungen.",
+      "CALL_LIMIT": "Die Anzahl der eingehenden und abgehenden Anrufe, die zu einer Zeit.",
+      "DIRECTMEDIA": "Sternchen standardmäßig versucht, die RTP-Stream direkt aus den Anrufer an den Angerufenen. Einige Geräte werden nicht unterstützt wird (vor allem, wenn einer von Ihnen hinter einem NAT-Gerät befindet). Die Standardeinstellung ist Ja. Wenn Sie alle Clients hinter einem NAT-Gerät befindet, oder aus einem anderen Grund nicht möchten, dass Sternchen in der Audiospur, können Sie diese ausschalten.",
+      "CALLCOUNTER": "Aktivieren Sie die Zähler auf Geräte.",
+      "ADD_PHONE_TO_URI": "Legen Sie fest, ob die Provider ';user=Telefon\" an den URL.",
+      "TRUST_REMOTE_PARTY_ID": "Wenn Remote-Party-ID definieren sollte.",
+      "SEND_REMOTE_PARTY_ID_HEADER": "Status",
+      "ENCRYPTION": "Festlegen, ob die Remote-Party-ID gesendet werden soll (standardmäßig auf Nein).",
       "TRANSPORT": "Festlegen der Standardeinstellungen für Transporte. Die Reihenfolge bestimmt den primären Standard.",
-      "OTHERFIELDS": "Weitere Felder hinzufügen, in der Trunks conf-Dateien. In Sternchen format (key=value), jedes Feld auf einer Zeile.",
-      "EMAILADDRESS": "Mehrere Adressen mit Komma getrennt eingeben: (z. b. John.doe@xcally.com, jane.miller@xcally.com)",
+      "OTHERFIELDS": "Weitere Felder hinzufügen, in der Amtsleitungen conf-Dateien. In Sternchen format (key=value), jedes Feld auf einer Zeile.",
+      "EMAILADDRESS": "Sie können mehrere Adressen mit Kommata (z. b. John.doe@xcally.com, jane.miller@xcally.com)",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "EVENTVARIABLES": "Fügt die Event-Variablen der URL hinzu",
+      "EVENTVARIABLES": "Wenn aktiviert, Es fügt alle Event Variablen an die Url",
       "T38PT_UDPTL": "Es: Ja, Redundanz, maxdatagram = 400",
       "EMAILBCCADDRESS": "Fügen Sie eine oder mehrere durch Kommas getrennte Adressen hinzu (z. B. john.doe@xcally.com, jane.miller@xcally.com).",
       "EMAILCCADDRESS": "Fügen Sie eine oder mehrere durch Kommas getrennte Adressen hinzu (z. B. john.doe@xcally.com, jane.miller@xcally.com).",
-      "BODY": "(RAW-JSON-Format) Wenn nicht ausgefüllt, wird der Standardwert verwendet",
+      "BODY": "Wenn nicht ausgefüllt, wird der Standardwert gesendet",
       "INFO": "Titel einfügen",
       "SCRIPT": "Skript einfügen",
       "SCRIPT_INFO": "Fügen Sie eine Beschreibung für das Skript ein",
       "SCRIPT_TYPE": "Geben Sie eine Typologie für das Skript ein (zB curl, bash ...)",
-      "HEADERS": "Hinweis: Der Header-Abschnitt muss im RAW-JSON-Format {\"key\": \"value\"} vorliegen.\nHinweis: Wenn nicht ausgefüllt, wird der Standardwert verwendet",
-      "TIMEOUT": "Zeitüberschreitung in Sekunden anfordern. Der Wert muss zwischen 1 und 10 liegen - Standardwert ist 5."
+      "HEADERS": "Hinweis: Der Header-Abschnitt muss im RAW-JSON-Format {\"key\": \"value\"} vorliegen.\nHinweis: Wenn nicht ausgefüllt, wird der Standardwert gesendet",
+      "TIMEOUT": "Zeitüberschreitung in Sekunden anfordern. Der Wert muss zwischen 1 und 10 liegen und der Standardwert ist 5."
     },
     "EDIT_TRUNK": "Trunk bearbeiten",
-    "DELETE_TRUNK": "Trunk löschen",
+    "DELETE_TRUNK": "Löschen Sie Trunk",
     "CREATED_AT": "Erstellt am",
     "SETTINGS": "Einstellungen",
-    "ADVANCED": "Erweitert",
+    "ADVANCED": "Erweiterte",
     "OTHER": "Andere",
     "ACTIVE": "Aktiv",
     "CONTEXT": "Kontext",
-    "CALLERID": "Anrufer-ID",
+    "CALLERID": "Die Anrufer-ID",
     "TYPE": "Typ",
-    "DTMFMODE": "DTMF-Modus",
+    "DTMFMODE": "Mfv-Modus",
     "NAT": "NAT",
     "QUALIFY": "Qualifizieren",
     "ALLOWCODECS": "Codecs erlaubt",
     "INSECURE": "Unsicher",
     "REGISTRY": "Registrierung",
-    "DIRECTMEDIA": "Direct Media",
+    "DIRECTMEDIA": "Direkte Medien",
     "CALLCOUNTER": "Anrufzähler",
-    "FROMDOMAIN": "From Domain",
-    "FROMUSER": "From Nutzer",
-    "OUTBOUNDPROXY": "Outbound Proxy",
-    "ADD_PHONE_TO_URI": "Telefon zur URL hinzufügen",
-    "TRUST_REMOTE_PARTY_ID": "Trust Remote Party ID",
-    "SEND_REMOTE_PARTY_ID_HEADER": "Remote Party im Header senden",
+    "FROMDOMAIN": "Aus der Domäne",
+    "FROMUSER": "Vom Benutzer",
+    "OUTBOUNDPROXY": "Ausgehender Proxy",
+    "ADD_PHONE_TO_URI": "Telefon hinzufügen, URL",
+    "TRUST_REMOTE_PARTY_ID": "Vertrauen Gegenstelle ID",
+    "SEND_REMOTE_PARTY_ID_HEADER": "Senden einer Partner-ID Header",
     "ENCRYPTION": "Verschlüsselung",
-    "PORT": "Port",
-    "TRANSPORT": "Transport",
+    "PORT": "Hafen",
+    "TRANSPORT": "Verkehr",
     "SAVE": "Speichern",
     "VARIABLES": "Variablen",
     "ADD_VARIABLE": "Variable hinzufügen",
     "EDIT_VARIABLE": "Variable bearbeiten",
     "DELETE_VARIABLE": "Variable löschen",
-    "SELECTED": "Ausgewählt",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECTED": "Ausgewählte",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
     "TAGS": "Tags",
-    "ADD_TAG": "Tag hinzufügen",
-    "EDIT_TAG": "Tag bearbeiten",
-    "DELETE_TAG": "Tag löschen",
+    "ADD_TAG": "Variable hinzufügen",
+    "EDIT_TAG": "Variable bearbeiten",
+    "DELETE_TAG": "Variable löschen",
     "PAUSES": "Pausen",
     "ADD_PAUSE": "Pause hinzufügen",
     "EDIT_PAUSE": "Pause bearbeiten",
     "DELETE_PAUSE": "Pause löschen",
-    "ADD_CANNEDANSWER": "Textvorlage hinzufügen",
-    "EDIT_CANNEDANSWER": "Textvorlage bearbeiten",
-    "DELETE_CANNEDANSWER": "Testvorlage löschen",
+    "ADD_CANNEDANSWER": "Vordefinierte Antwort hinzufügen",
+    "EDIT_CANNEDANSWER": "Vordefinierte Antwort bearbeiten",
+    "DELETE_CANNEDANSWER": "Vordefinierte Antwort löschen",
     "KEY": "Schlüssel",
     "VALUE": "Wert",
-    "SOUNDS": "Audiodateien",
-    "EDIT_SOUND": "Audiodatei bearbeiten",
-    "DELETE_SOUND": "Audiodatei löschen",
-    "FINISH": "Abschließen",
+    "SOUNDS": "Sounds",
+    "EDIT_SOUND": "Ton bearbeiten",
+    "DELETE_SOUND": "Sound löschen",
+    "FINISH": "Fertig stellen",
     "DROP_TO_UPLOAD": "Drop hochladen",
     "TRIGGERS": "Trigger",
-    "EDIT_TRIGGER": "Trigger bearbeiten",
-    "DELETE_TRIGGER": "Trigger löschen",
+    "EDIT_TRIGGER": "Auslöser bearbeiten",
+    "DELETE_TRIGGER": "Auslöser löschen",
     "ADD_TRIGGER": "Trigger hinzufügen",
     "DELETE": "Löschen",
-    "AUTOMATIONS": "Automation",
-    "EDIT_AUTOMATION": "Automation bearbeiten",
+    "AUTOMATIONS": "Automatisierungen",
+    "EDIT_AUTOMATION": "Bearbeiten einer Automation",
     "DELETE_AUTOMATION": "Automation löschen",
     "ADD_AUTOMATION": "Automation hinzufügen",
     "INTERVALS": "Intervalle",
     "EDIT_INTERVAL": "Intervall bearbeiten",
-    "DELETE_INTERVAL": "Intervall löschen",
+    "DELETE_INTERVAL": "Intervall für Löschen.",
     "ADD_INTERVAL": "Intervall hinzufügen",
     "TOOLS": "Werkzeuge",
-    "ID": "ID",
+    "ID": "Id",
     "AUDIO": "Audio",
-    "DOWNLOAD_SOUND": "Audiodatei herunterladen",
-    "UPLOAD_SOUND": "Audiodatei hochladen",
+    "DOWNLOAD_SOUND": "Download Sound",
+    "UPLOAD_SOUND": "Werkzeuge",
     "CHANNEL": "Kanal",
     "NEW_TRIGGER": "Neue Trigger",
     "GENERAL": "Allgemein",
     "STATUS": "Status",
     "CONDITIONS&ACTIONS": "Bedingungen und Aktionen",
-    "ALLCONDITIONS": "Alle Bedingungen werden erfüllt",
-    "ANYCONDITIONS": "Einige Bedingungen werden erfüllt",
-    "ACTIONS": "Aktionen",
+    "ALLCONDITIONS": "Alle diese Bedingungen erfüllen:",
+    "ANYCONDITIONS": "Treffen diese Voraussetzungen:",
+    "ACTIONS": "Aktionen:",
     "NEW_AUTOMATION": "Neue Automation",
     "TIMEOUT": "Timeout",
     "PEERSTATUS": "Peer Status",
-    "CALL_LIMIT": "Anrufe limitieren",
-    "OTHERFIELDS": "Weitere Felder",
+    "CALL_LIMIT": "Anrufe beschränken",
+    "OTHERFIELDS": "Andere Felder",
     "NEW_VARIABLE": "Neue Variable",
     "NEW_TAG": "Neuer Tag",
     "NEW_PAUSE": "Neue Pause",
-    "NEW_CANNEDANSWER": "Neue Textvorlage",
+    "NEW_CANNEDANSWER": "Neue vordefinierte Antwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
-    "NEW_TRUNK": "Neuer Trunk",
-    "FROM": "von",
-    "TO": "an",
-    "WEEKDAY": "Wochentag",
-    "MONTHDAY": "Monatstag",
+    "NEW_TRUNK": "Neue Leitung",
+    "FROM": "Von",
+    "TO": "Zu",
+    "WEEKDAY": "Woche Tag",
+    "MONTHDAY": "Monat Tag",
     "MONTH": "Monat",
     "ALWAYS": "Immer",
     "MON": "Montag",
     "PASSWORD": "Passwort",
     "CUSTOMDASHBOARDS": "Benutzerdefinierte Dashboards",
     "NEW_CUSTOMDASHBOARD": "Neues benutzerdefiniertes Dashboard",
-    "ADD_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard hinzufügen",
-    "EDIT_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard bearbeiten",
-    "DELETE_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard löschen",
-    "SCHEDULER": "Berichtsplanung",
-    "NEW_SCHEDULE": "Neue Planung",
-    "ADD_SCHEDULE": "Planung hinzufügen",
-    "EDIT_SCHEDULE": "Planung bearbeiten",
-    "DELETE_SCHEDULE": "Planung löschen",
+    "ADD_CUSTOMDASHBOARD": "Hinzufügen von benutzerdefinierten Dashboard",
+    "EDIT_CUSTOMDASHBOARD": "Benutzerdefinierte Dashboards bearbeiten",
+    "DELETE_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard löschen.",
+    "SCHEDULER": "Scheduler",
+    "NEW_SCHEDULE": "Neuer Zeitplan",
+    "ADD_SCHEDULE": "Zeitplan hinzufügen",
+    "EDIT_SCHEDULE": "Zeitplan bearbeiten",
+    "DELETE_SCHEDULE": "Zeitplan löschen",
     "SENDMAIL": "E-Mail senden",
     "CONFIGURATION": "Konfiguration",
     "MAIL": "E-Mail",
     "REPORTTYPE": "Berichtstyp",
     "REPORT": "Bericht",
-    "OUTPUT": "Ausgabe",
+    "OUTPUT": "Ausgang",
     "EXECUTEON": "Ausführung",
-    "REPORTRANGE": "Bereich",
+    "REPORTRANGE": "Berichtsbereich",
     "VALIDITYSTART": "Startzeit",
     "VALIDITYEND": "Endzeit",
     "EXECUTEEVERY": "Alle ausführen",
     "MONTHLY": "Monatlich",
     "PREVIOUS_DAY": "Vorheriger Tag",
     "LAST_SEVEN_DAYS": "Letzte sieben Tage",
-    "LAST_THIRTY_DAYS": "Letzte 30 Tage",
+    "LAST_THIRTY_DAYS": "33 verbotenen letzte Tage",
     "LAST_MONTH": "Letzter Monat",
-    "WEEKDAYS": "Wochentage",
+    "WEEKDAYS": "Woche Tage",
     "HOUR": "Stunde",
     "DEFAULT": "Standard",
     "CSV": "CSV",
     "15MIN": "15 Minuten",
     "30MIN": "30 Minuten",
     "1H": "1 Stunde",
-    "VOICE": "Sprachanrufe",
+    "VOICE": "Voice",
     "CHAT": "Chat",
     "SMS": "SMS",
     "OPENCHANNEL": "Offener Kanal",
     "ADD_ALLCONDITION": "Bedingung hinzufügen",
     "EDIT_ACTION": "Aktion bearbeiten",
     "DELETE_ACTION": "Aktion löschen",
-    "NEW_ACTION": "Neue Aktion",
+    "NEW_ACTION": "Neue Maßnahme",
     "ADD_ACTION": "Aktion hinzufügen",
     "QUEUE": "Warteschlange",
     "CALL_STATUS": "Anrufstatus",
-    "OUTBOUNDROUTE": "Ausgehende Routen",
-    "EQUALS": "ist gleich",
-    "NOT_EQUALS": "ist nicht gleich",
-    "CONTACT_MANAGER": "Kontaktmanager",
+    "OUTBOUNDROUTE": "Abgehende Routen",
+    "EQUALS": "Ist gleich",
+    "NOT_EQUALS": "Nicht gleich",
+    "CONTACT_MANAGER": "Contacts Manager",
     "INTEGRATIONS": "Integrationen",
     "MOTIONBAR": "Motion Bar",
     "JSCRIPTY": "Jscripty",
-    "URL_FORWARD": "URL-Weiterleitung",
-    "WEB_POPUP": "Web-Popup",
+    "URL_FORWARD": "URL Weiterleitung",
+    "WEB_POPUP": "Web Popup",
     "LIST": "Liste",
     "INTEGRATION": "Integration",
     "TEMPLATE": "Vorlage",
     "OPERATOR": "Betreiber",
     "NO_INTERVALS_AVAILABLE": "Keine Intervalle zur Verfügung",
     "YES": "Ja",
-    "NO": "Nein",
+    "NO": "Keine",
     "SUBJECT": "Betreff",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
     "BROWSER": "Browser",
     "INTERVAL": "Intervall",
-    "INFO": "Information",
+    "INFO": "Info",
     "TIME_RANGE": "Zeitbereich",
-    "WEEK_DAYS": "Wochentage",
-    "MONTH_DAYS": "Monatstage",
+    "WEEK_DAYS": "Woche Tage",
+    "MONTH_DAYS": "Monat Tage",
     "MONTHS": "Monate",
-    "DROP_TO_UPLOAD_MESSAGE": "Dateien hier hinein ziehen zum Hochladen. Unterstütze Formate: .mp3, .wav, .gsm; Max. Dateigröße: 15 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Sie können auch Audiodateien hier ablegen\" hochzuladen. Nur MP3-, WAV-, GSM-Max. 15 MB",
     "POLLING_INTERVAL": "Abfrageintervall (Sekunden)",
-    "DASHBOARD": "Dashboard",
-    "NEW_DASHBOARDITEM": "Neues Dashboard-Widget",
+    "DASHBOARD": "Armaturenbrett",
+    "NEW_DASHBOARDITEM": "Neue Dashboard Widget",
     "COUNTER": "Zähler",
     "IFRAME": "IFrame",
     "CLOCK": "Uhr",
-    "ADD_DASHBOARDITEM": "Dashboard-Widget hinzufügen",
-    "EDIT_WIDGET": "Widget bearbeiten",
-    "DELETE_WIDGET": "Widget löschen",
-    "FLIP_WIDGET": "Widget drehen",
+    "ADD_DASHBOARDITEM": "Dashboard Widget hinzufügen",
+    "EDIT_WIDGET": "Bearbeiten Widget",
+    "DELETE_WIDGET": "Löschen Widget",
+    "FLIP_WIDGET": "Flip Widget",
     "TITLE": "Titel",
     "UPDATE": "Aktualisieren",
     "LAYOUT": "Layout",
     "FOREGROUND_COLOR": "Vordergrundfarbe",
     "FOREGROUND_TITLE_COLOR": "Vordergrund Titel Farbe",
     "THEME": "Thema",
-    "LIGHT": "Hell",
+    "LIGHT": "Licht",
     "DARK": "Dunkel",
     "TIMEZONE": "Zeitzone",
-    "DIGITAL_FORMAT": "Digitales Datumsformat",
+    "DIGITAL_FORMAT": "Digitale Datum Format",
     "TOOLS_QUERY": "Abfrage",
-    "SELECT": "Auswählen",
+    "SELECT": "Wählen Sie",
     "WHERE": "Wo",
     "BACK": "Zurück",
     "PROJECT": "Projekt",
-    "GOTOREALTIME_TRUNK": "Zum Echtzeitmonitoring SIP-Trunks gehen",
-    "GOTO_TRUNK": "Zum SIP-Trunk gehen",
-    "CRON": "CrOn",
+    "GOTOREALTIME_TRUNK": "In Echtzeit, Trunk gehen",
+    "GOTO_TRUNK": "Um die Leitungsbündel gehen",
+    "CRON": "Cron",
     "MINUTES": "Minuten",
     "HOURLY": "Stündlich",
     "YEARLY": "Jährlich",
     "EVERY": "Jede",
     "MINUTE": "Minute",
-    "ON_SECOND": "Zur Sekunde",
-    "HOUR_ON_MINUTE": "Stunde zur Minute",
-    "AND_SECOND": "und Sekunde",
-    "DAY_AT": "Am Tag",
+    "ON_SECOND": "Im 2.",
+    "HOUR_ON_MINUTE": "Stunde Minute",
+    "AND_SECOND": "Und 2.",
+    "DAY_AT": "Tag an",
     "START_TIME": "Startzeit",
-    "ON_THE": "Am",
-    "OF_EVERY": "An jedem",
+    "ON_THE": "Auf der",
+    "OF_EVERY": "Jedes",
     "MONTH_AT": "Monat",
-    "AT": "Um",
+    "AT": "An",
     "LAST": "Letzte",
     "LASTUNIT": "Einheit",
     "MAILACCOUNT": "E-Mail Konto",
-    "OF": "von",
+    "OF": "Von",
     "PAST_THE_HOUR": "Nach der vollen Stunde",
     "DAY": "Tag",
     "WEEK": "Woche",
     "YEAR": "Jahr",
-    "ON": "Am",
+    "ON": "Auf",
     "PAI": "P-Asserted-Identity",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OUTBOUND_ROUTE": "Ausgehende Routen",
-    "EVENTVARIABLES": "Event-Variablen",
+    "OUTBOUND_ROUTE": "Abgehende Routen",
+    "EVENTVARIABLES": "Bei Variablen",
     "FAX": "Fax",
     "INTERACTION": "Interaktion",
     "MESSAGE": "Nachricht",
     "T38PT_UDPTL": "T38 pt Udptl",
-    "AUTOCREATECONTACT": "Automatische Kontakterstellung",
+    "AUTOCREATECONTACT": "Erstellen Sie automatisch",
     "COLOR": "Farbe",
-    "LOCATION": "Standort",
-    "NEW_TAB": "Neuer Tab",
+    "LOCATION": "Lage",
+    "NEW_TAB": "Neue Registerkarte",
     "NEW_WINDOW": "Neues Fenster",
-    "WINDOWWIDTH": "Fensterbreite (px)",
+    "WINDOWWIDTH": "Fenster Breite (px)",
     "WINDOWHEIGHT": "Fensterhöhe (px)",
     "EDIT_DASHBOARDITEM": "Dashboard-Widget bearbeiten",
     "FONTSIZE": "Schriftgröße",
     "FOREGROUND": "Vordergrund",
     "NONE": "Keiner",
     "TOTAL": "Gesamt",
-    "ABANDONED": "Abgebrochen",
+    "ABANDONED": "Verlassen",
     "WAITING": "Warten",
-    "TALKING": "im Gespräch",
-    "ANSWERED": "Beantwortet",
-    "UNMANAGED": "Nicht bearbeitet",
+    "TALKING": "Reden",
+    "ANSWERED": "Antwortete",
+    "UNMANAGED": "Nicht verwaltet",
     "CUSTOMTYPE": "Benutzerdefiniert [Pfad]",
     "WEBREPORT": "Webbericht",
     "PIECHART": "Kuchendiagramm",
     "MULTIBARCHART": "Multibar-Diagramm",
     "MOVE_WIDGET": "Widget verschieben",
-    "USERADD_CUSTOMDASHBOARD": "Berechtigungen hinzufügen",
-    "GOTODASHBOARD_CUSTOMDASHBOARD": "Vorschau Dashboard",
-    "GOTO_CUSTOMDASHBOARD": "Vorschau Dashboard",
+    "USERADD_CUSTOMDASHBOARD": "Hinzufügen von Benutzerberechtigungen",
+    "GOTODASHBOARD_CUSTOMDASHBOARD": "Gehe zum Vorschau-Dashboard",
+    "GOTO_CUSTOMDASHBOARD": "Gehe zum Vorschau-Dashboard",
     "METRIC": "Metrisch",
-    "FILTERVOICEQUEUES": "Anruf-Warteschlangen filtern",
+    "FILTERVOICEQUEUES": "Voice-Warteschlangen filtern",
     "SERIE1": "Serie 1",
     "SERIE2": "Serie 2",
     "SERIE3": "Serie 3",
     "ALL_USERS": "Alle Nutzer",
     "SELECTED_USERS": "Ausgewählte Benutzer",
     "ADD_WIDGET": "Widget hinzufügen",
-    "NEXTCONTACT": "Nächster Kontakt",
+    "NEXTCONTACT": "Nächster",
     "SENDIFEMPTY": "Senden, wenn leer",
-    "CANCEL": "Abbrechen",
+    "CANCEL": "Stornieren",
     "UPLOADING": "Hochladen",
-    "EMAILBCCADDRESS": "BCC",
-    "EMAILCCADDRESS": "CC",
-    "RUN_SCHEDULE": "Zeitplanung ausführen",
-    "ADD_DISPOSITION": "Qualifizierung hinzufügen",
-    "DELETE_DISPOSITION": "Qualifizierung löschen",
-    "DISPOSITIONS": "Qualifizierungen",
-    "EDIT_DISPOSITION": "Qualifizierung bearbeiten",
-    "NEW_DISPOSITION": "Neue Qualifizierung",
-    "CLONE_TRUNK": "Trunk klonen",
-    "BODY": "Textinhalt",
-    "CANNEDANSWERS": "Textvorlagen",
+    "EMAILBCCADDRESS": "Bcc",
+    "EMAILCCADDRESS": "Cc",
+    "RUN_SCHEDULE": "Zeitplan ausführen",
+    "ADD_DISPOSITION": "Disposition hinzufügen",
+    "DELETE_DISPOSITION": "Disposition löschen",
+    "DISPOSITIONS": "Dispositionen",
+    "EDIT_DISPOSITION": "Disposition bearbeiten",
+    "NEW_DISPOSITION": "Neue Disposition",
+    "CLONE_TRUNK": "Klon-Trunk",
+    "BODY": "Karosserie",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
     "REPORTFOLDER": "Berichtsordner",
-    "REPORTSUBFOLDER": "Unterordner",
-    "PREVIOUSCONTACT": "Vorherigen Kontakt",
+    "REPORTSUBFOLDER": "Unterordner melden",
+    "PREVIOUSCONTACT": "Bisherige",
     "VIDEOSUPPORT": "Video-Unterstützung",
     "AGENT": "Agent",
     "HEADERS": "Überschriften",
     "SCRIPT": "Skript",
-    "SCRIPT_INFO": "Information",
+    "SCRIPT_INFO": "Info",
     "SCRIPT_TYPE": "Art",
     "MOTION_TAB": "Neue Registerkarte \"Agent Dashboard\"",
     "WHATSAPP": "WhatsApp Connector",
     "AUTOCREATE_FIELD": "Feld automatisch erstellen",
-    "GLOBALS": "Globale Werte",
+    "GLOBALS": "Globals",
     "SEARCH_FIELDS": "Suchfelder",
     "STANDARD": "Standard",
     "MOTION_BAR": "Motion Bar",
     "ALL": "Alle",
-    "ALL_DISPOSITIONS": "Alle Qualifizierungen",
-    "FIRST_LEVEL_DISPOSITION": "Qualifizierung der ersten Ebene",
-    "LEVEL": "Ebene",
-    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
-    "SELECT_LEVEL": "Ebene auswählen",
-    "TITLEFONTSIZE": "Schriftgröße Titel"
+    "ALL_DISPOSITIONS": "Alle Dispositionen",
+    "FIRST_LEVEL_DISPOSITION": "First Level Disposition",
+    "LEVEL": "Niveau",
+    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
+    "SELECT_LEVEL": "Wählen Sie eine Ebene",
+    "TITLEFONTSIZE": "Schrifttitelgröße"
   }
 }
index 254759d..91d5165 100644 (file)
     "SERVICELEVEL": "مستوى الخدمة",
     "SECOND_LEVEL_DISPOSITION": "ترتيب المستوى الثاني",
     "THIRD_LEVEL_DISPOSITION": "الترتيب الثالث",
-    "TEAMADD_VOICEPREFIX": "أضف الفريق إلى البادئة",
     "ALIAS": "الاسم المستعار"
   }
 }
index 3f3b98d..5fe900e 100644 (file)
     "SERVICELEVEL": "Úroveň služby",
     "SECOND_LEVEL_DISPOSITION": "Dispozice druhé úrovně",
     "THIRD_LEVEL_DISPOSITION": "Dispozice třetí úrovně",
-    "TEAMADD_VOICEPREFIX": "Přidat tým k předponě",
     "ALIAS": "Alias"
   }
 }
index ea7f1fe..67570a2 100644 (file)
     "SERVICELEVEL": "Serviceniveau",
     "SECOND_LEVEL_DISPOSITION": "Andet niveau disposition",
     "THIRD_LEVEL_DISPOSITION": "Tredje niveau disposition",
-    "TEAMADD_VOICEPREFIX": "Føj team til præfiks",
     "ALIAS": "Alias"
   }
 }
index bd7bae8..c698d09 100644 (file)
@@ -1,68 +1,68 @@
 {
   "VOICE": {
-    "GOTO_VOICEQUEUE": "Zur Anruf-Warteschlange gehen",
-    "GOTOREALTIME_VOICEQUEUE": "Zur Echtzeitansicht Anruf-Warteschlange gehen",
+    "GOTO_VOICEQUEUE": "Zu Realtime Voice Warteschlangen gehen",
+    "GOTOREALTIME_VOICEQUEUE": "Zu Realtime Voice Warteschlangen gehen",
     "NAME": "Name",
     "LOGOUT": "An-/Abmelden",
-    "VOICEQUEUES": "Anruf-Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "VOICEQUEUES": "Voice Warteschlangen",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "BACK": "Zurück",
-    "SELECTED": "Ausgewählt",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
-    "DELETE_VOICEDISPOSITION": "Qualifizierung löschen",
-    "EDIT_VOICEDISPOSITION": "Qualifizierung bearbeiten",
-    "EDIT_VOICEQUEUE": "Anruf-Warteschlange bearbeiten",
-    "DELETE_VOICEQUEUE": "Anruf-Warteschlange löschen",
-    "MOHSOUNDS": "MOH-Töne",
+    "SELECTED": "Ausgewählte",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "DELETE_VOICEDISPOSITION": "Disposition löschen",
+    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
+    "EDIT_VOICEQUEUE": "Edit Voice Warteschlange",
+    "DELETE_VOICEQUEUE": "Warteschlange löschen",
+    "MOHSOUNDS": "Die MOH-Sounds",
     "STRATEGY": "Strategie",
     "DESCRIPTION": "Beschreibung",
-    "ADD_VOICEQUEUE": "Warteschlangen hinzufügen",
+    "ADD_VOICEQUEUE": "Hinzufügen von Warteschlangen",
     "CREATED_AT": "Erstellt am",
-    "CANT_PLAY_GSM_AUDIO_FILES": "Nicht GSM-Audiodateien",
+    "CANT_PLAY_GSM_AUDIO_FILES": "Nicht gsm-Audiodateien",
     "APPLICATIONS_LIST": "Liste der Anwendungen",
     "LEGEND": {
       "CUSTOM_APPLICATION": "(*) - Benutzerdefinierte Anwendung."
     },
     "ERRORS": {
-      "NAME_REQUIRED": "Name ist erforderlich",
-      "APPLICATION_NAME_REQUIRED": "Name der Anwendung ist erforderlich",
-      "TIMEOUT_REQUIRED": "Timeout ist erforderlich",
-      "PHONENUMBER_REQUIRED": "Telefonnummer ist erforderlich",
-      "CONTEXT_REQUIRED": "Kontext ist erforderlich",
-      "DESTINATIONPATTERN_REQUIRED": "Ziel-Pattern ist erforderlich",
-      "FULLNAME_REQUIRED": "Vollständiger Name ist erforderlich",
-      "EMAIL_REQUIRED": "E-Mail ist erforderlich",
-      "EMAIL_MUST_VALID": "E-Mail Format ungültig",
-      "MAILBOX_REQUIRED": "Mailbox ist erforderlich",
-      "PASSWORD_REQUIRED": "Passwort ist erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
-      "TIMEZONE_REQUIRED": "Zeitzone ist erforderlich",
-      "PREFIX_REQUIRED": "Präfix ist erforderlich",
-      "OPTIONS_REQUIRED": "Bedingungen sind Erforderlich",
-      "AFTERCALLWORKDURATION_REQUIRED": "Dauer Nacharbeit ist erforderlich",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Ressource ist erforderlich",
-      "PHONE_REQUIRED": "Telefonnummer ist erforderlich",
-      "VALUE_REQUIRED": "Wert ist erforderlich",
-      "EXTENSION_REQUIRED": "Nebenstelle ist erforderlich",
-      "PRIORITY_REQUIRED": "Priorität ist erforderlich",
-      "NAME_MUST_VALID_PATTERN": "Format Name ungültig",
-      "APPLICATION_REQUIRED": "Anwendung ist erforderlich",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Timeout muss größer oder gleich sein als",
-      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die max. Länge muss größer oder gleich sein als",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wiederversuche muss größer oder gleich sein als",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Nacharbeit Zeit muss größer oder gleich sein als",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gewichtung muss größer oder gleich sein als",
-      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Frequenz der Ansagen muss größer oder gleich sein als",
-      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min. Frequenz der Ansagen muss größer oder gleich sein als",
-      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wiederholende Frequenz der Ansagen muss größer oder gleich sein als",
-      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Nacharbeit Zeit muss größer oder gleich sein als",
-      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Verzögerung muss größer oder gleich sein als",
-      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Position muss größer oder gleich sein als",
-      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Schnitt muss größer oder gleich sein als",
-      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max. Sekundenmuss größer oder gleich sein als",
-      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max. Nachrichten muss größer oder gleich sein als",
-      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max. Nachrichten muss kleiner oder gleich sein als",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "APPLICATION_NAME_REQUIRED": "Der Name der Anwendung ist erforderlich",
+      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
+      "PHONENUMBER_REQUIRED": "Die Telefonnummer ist erforderlich",
+      "CONTEXT_REQUIRED": "Der Rahmen ist erforderlich",
+      "DESTINATIONPATTERN_REQUIRED": "Das Ziel-pattern ist erforderlich",
+      "FULLNAME_REQUIRED": "Der vollständige Name ist erforderlich",
+      "EMAIL_REQUIRED": "Die E-Mail ist erforderlich",
+      "EMAIL_MUST_VALID": "Die e-Mail muss in einem gültigen Format",
+      "MAILBOX_REQUIRED": "Die Mailbox ist erforderlich",
+      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Kennwörter stimmen nicht überein.",
+      "TIMEZONE_REQUIRED": "Die Zeitzone ist erforderlich",
+      "PREFIX_REQUIRED": "Das Präfix ist erforderlich",
+      "OPTIONS_REQUIRED": "Die Optionen sind Erforderlich",
+      "AFTERCALLWORKDURATION_REQUIRED": "Die Arbeit nach Anruf Dauer ist erforderlich",
+      "TECHNOLOGY/RESOURCE_REQUIRED": "Die Technologie/Ressource erforderlich ist",
+      "PHONE_REQUIRED": "Die Telefonnummer ist erforderlich",
+      "VALUE_REQUIRED": "Der Wert ist erforderlich",
+      "EXTENSION_REQUIRED": "Die Verlängerung ist erforderlich",
+      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
+      "NAME_MUST_VALID_PATTERN": "Der Name muss in einem gültigen Format geschrieben werden",
+      "APPLICATION_REQUIRED": "Die Anwendung ist erforderlich",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Timeout muss größer als oder gleich",
+      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die max. Länge muss größer als oder gleich",
+      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Wiederholung muss größer als oder gleich",
+      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Nachlese Zeit muss größer als oder gleich",
+      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Das Gewicht muss größer als oder gleich",
+      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Häufigkeit verkünden muss größer als oder gleich",
+      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Min Frequenz ankündigen muss größer als oder gleich",
+      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die periodische Frequenz ankündigen muss größer als oder gleich",
+      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Arbeit nach Anruf Dauer muss größer als oder gleich",
+      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Verzögerung muss größer als oder gleich",
+      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Position muss größer als oder gleich",
+      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den Schnitt stellen muss größer als oder gleich",
+      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Muss die Max Sekunden größer als oder gleich",
+      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Max Meldungen muss größer als oder gleich",
+      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die Max Meldungen muss kleiner als oder gleich",
       "CALLERIDALL_MUST_VALID_PATTERN": "Falsches Format",
       "OUTBOUNDROUTE_REQUIRED": "Pflichtfeld",
       "VARIABLE_REQUIRED": "Pflichtfeld",
       "TRUNK_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "PROJECT_REQUIRED": "Pflichtfeld",
-      "PENALTY_REQUIRED": "Wert für Verzögerung erforderlich"
+      "PENALTY_REQUIRED": "Sie müssen einen Wert für die Strafe angeben"
     },
     "GENERAL": "Allgemein",
     "TIMEOUT": "Timeout",
     "MAXLENGTH": "Maximale Länge",
-    "RETRY": "Bitte erneut versuchen",
-    "WRAPUPTIME": "Nacharbeit",
-    "WEIGHT": "Gewichtung",
-    "JOINWHENEMPTY": "Beitreten, wenn leer",
-    "LEAVEWHENEMPTY": "Verlassen, wenn leer",
+    "RETRY": "Versuchen Sie es erneut",
+    "WRAPUPTIME": "-Zeit",
+    "WEIGHT": "Gewicht",
+    "JOINWHENEMPTY": "Melden Sie wenn sie leer sind",
+    "LEAVEWHENEMPTY": "Wenn sie leer lassen",
     "HELP": {
-      "TIMEOUT": "Zeitüberschreitung in Sekunden",
-      "MAXLENGTH": "Maximaler Anrufer in der Warteschlange. Wenn Wert 0, dann keine Begrenzung.",
-      "RETRY": "Klingelzeit in Sekunden pro Mitglied. Danach erfolgt ein weiterer Versuch bei der nächsten freien Nebenstelle.",
-      "WRAPUPTIME": "Nacharbeitszeit in Sekunden, bis ein Nutzer nach einem Anruf wieder verfügbar ist.",
-      "WEIGHT": "Gewichtung der Warteschlange. Ein höherer Wert bedeutet eine Priorisierung gegenüber anderen Warteschlangen.",
-      "JOINWHENEMPTY": "Legt fest, ob ein Anruf in die Warteschlange eintreten kann, wenn dort keine Nutzer angemeldet sind.",
-      "LEAVEWHENEMPTY": "Wirft den Anruf aus der Warteschlange, wenn dort kein Nutzer angemeldet ist.",
-      "ANNOUNCEFREQUENCY": "Intervall für automatische Ansagen der Wartezeit, Position, etc. Der Wert 0 deaktiviert diese Option.",
-      "MINANNOUNCEFREQUENCY": "Minimales Intervall für die Ansagen der Wartezeit. Verhindert, dass ein Nutzer bei häufigen Wechsel der Warteposition zu viele Ansagen erhält.",
-      "PERIODICANNOUNCEFREQUENCY": "Legt fest, wie oft die sich wiederholenden Ansagen gespielt werden sollen",
-      "ANNOUNCEPOSITIONLIMIT": "Wird verwendet, wenn der Wert für die Warteposition auf \"Limitierung\" oder \"Mehr\" gestellt wird.",
-      "AFTERCALLWORKDURATION": "Die Dauer der Nacharbeit nach einem Anruf",
-      "MEMBERDELAY": "Erstellt eine Verzögerung des Anrufes für bestimmte Agenten. Kann zum Skillbasierten Routing verwendet werden.",
-      "MUSICONHOLD": "Legt die Haltemusik auf Basis der Warteschlange fest",
-      "ANNOUNCETOAGENT": "Legt fest, ob der Agent vor Annahme des Anrufes einen Hinweis auf die eingehende Warteschlange hört",
-      "RANDOMPERIODICANNOUNCE": "Bei ja, werden die zugewiesenen Ansagen zufällig abgespielt",
-      "ANNOUNCEHOLDTIME": "Spielt die geschätzte Wartezeit zusammen oder ohne die sich wiederholenden Ansagen ab.",
-      "ANNOUNCECALLERPOSITION": "Definiert die Ansage der Warteposition für den Anrufer. Nein = Niemals; Ja = Immer; Limitierung = nur, wenn die Zeit innerhalb dem eingetragenen Wert liegt; Mehr = nur, wenn die Zeit oberhalb dem eingetragenen Wert liegt ",
-      "REPORTHOLDTIMEAGENT": "Haltezeiten der Agenten in den Berichten verwenden",
-      "PERIODICANNOUNCE": "Sich wiederholende Ansagen; können je nach Konfiguration in definierter Reihenfolge oder zufällig abgespielt werden.",
-      "HOLDTIMEANNOUNCE": "Ansage der Wartezeit. Leer lassen zum Überspringen",
-      "YOUARENEXTANNOUNCE": "Ansage \"Sie sind an erster Position der Warteschlange\", Leer lassen zum Überspringen",
-      "THEREAREANNOUNCE": "Ansage \"Es befinden sich..\" Leer lassen zum Überspringen",
-      "WAITINGCALLSANNOUNCE": "Ansage \"...Anrufe in der Warteschlange\" Leer lassen zum Überspringen",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Ansage: \"Die geschätzte Wartezeit beträgt derzeit...\" Leer lassen zum Überspringen",
-      "MINUTESANNOUNCE": "Ansage \"Minuten\"",
-      "MINUTEANNOUNCE": "Ansage \"Minute\"",
-      "SECONDSANNOUNCE": "Ansage \"Sekunden\" Leer lassen zum Überspringen",
-      "THANKYOUANNOUNCE": "Ansage \"Vielen Dank für Ihre Geduld\" Leer lassen zum Überspringen",
-      "AFTERCALLWORK": "Wenn aktiviert, erhalten die Agenten eine kurze Pause nach jedem Anruf",
-      "AUTOPAUSE": "Aktiviert/Deaktiviert die automatische Pause der Agenten, bei einem verpassten Anruf. Hinweis: bezieht sich dann auf alle Anruf-Warteschlangen des Agenten.",
-      "RINGINUSE": "Verhindert das Klingeln bei Agenten, deren Nebenstelle in Verwendung ist",
-      "TIMEOUTRESTART": "Wenn ja, wird die Zeitüberschreitung bei Agenten mit \"Besetzt\" oder \"Verbindungsfehler\"-Status übersprungen",
-      "CONTEXT": "Ermöglicht einem Anrufer, durch Drücken einer einzelnen Taste, die Warteschlange zu verlassen.",
-      "SETINTERFACEVARIABLES": "Definiert die Variablen im Interface, welche bei einem Anruf übergeben werden können. ",
-      "SETQUEUEVARIABLES": "Definiert die Variablen in der Warteschlange, welche bei einem Anruf übergeben werden können. ",
-      "SETQUEUEENTRYVARIABLES": "Definiert die Variablen beim Eintritt in die Warteschlange, welche bei einem Anruf übergeben werden können. ",
+      "TIMEOUT": "Gibt die Anzahl von Sekunden an, die das Gerät.",
+      "MAXLENGTH": "Gibt die maximale Anzahl der Anrufer, die in der Warteschlange. Ein Wert von Null bedeutet, dass eine unbegrenzte Anzahl von Anrufern in der Warteschlange sind erlaubt.",
+      "RETRY": "Gibt die Anzahl der Sekunden, die gewartet wird, bevor das nächste Mitglied in die Warteschlange, wenn der Wert für die Zeitüberschreitung erschöpft ist, während versucht wird, den ein Mitglied der Warteschlange.",
+      "WRAPUPTIME": "Die Anzahl der Sekunden, die ein Mitglied in einer Warteschlange verfügbar, nachdem Sie einen Anruf.",
+      "WEIGHT": "Legt das Gewicht einer Warteschlange. Eine Warteschlange mit einem höheren Gewicht definiert werden erste Priorität, wenn Mitglieder, die mit mehreren Warteschlangen.",
+      "JOINWHENEMPTY": "Steuert, ob ein Anrufer wird zur Warteschlange hinzugefügt werden, wenn keine Mitglieder verfügbar sind.",
+      "LEAVEWHENEMPTY": "Zur Kontrolle, ob die Anrufer aus der Warteschlange, wenn die Mitglieder nicht mehr bereit sind, Anrufe zu beantworten.",
+      "ANNOUNCEFREQUENCY": "Legt fest, wie oft sollten wir den Anrufer ankündigen und/oder geschätzte Wartezeit in der Warteschlange. Setzen Sie diesen Wert auf Null, um die Funktion zu deaktivieren.",
+      "MINANNOUNCEFREQUENCY": "Gibt die minimale Zeit, die verstreichen müssen, bevor wir Ihnen die Anrufer in der Warteschlange wieder. Dieser wird verwendet, wenn der Anrufer die Position kann sich häufig ändern, um zu verhindern, dass der Anrufer hören mehrere Updates in einem kurzen Zeitraum.",
+      "PERIODICANNOUNCEFREQUENCY": "Gibt an, wie oft wir sollten regelmäßige Ansagen, die dem Anrufer vorgespielt werden.",
+      "ANNOUNCEPOSITIONLIMIT": "Sie kann verwendet werden, wenn Sie definiert haben, verkünden-Position entweder als Begrenzung oder mehr.",
+      "AFTERCALLWORKDURATION": "Die Dauer der Pause durch die Option \"Arbeit nach Anruf",
+      "MEMBERDELAY": "Sie kann verwendet werden, wenn Sie wollen, dass es eine Verzögerung, bevor der Anrufer und Mitglied der Warteschlange, die miteinander verbunden sind.",
+      "MUSICONHOLD": "Setzt die Musik klasse verwendet werden, die von einer bestimmten Warteschlange an.",
+      "ANNOUNCETOAGENT": "Für die Wiedergabe einer Ansage auf den Agenten, der den Anruf entgegengenommen hat, ihn wissen zu lassen, was der Anrufer die Warteschlange aus.",
+      "RANDOMPERIODICANNOUNCE": "Falls auf Ja eingestellt, wird die festgelegte regelmäßige Mitteilungen in einer zufälligen Reihenfolge.",
+      "ANNOUNCEHOLDTIME": "Legt fest, ob die geschätzte Wartezeit gespielt werden sollte zusammen mit den regelmäßigen Ankündigungen.",
+      "ANNOUNCECALLERPOSITION": "Legt fest, ob es sich bei dem Anrufer seine Position in der Warteschlange mitgeteilt werden sollten. Wenn die Einstellung Nein lautet, die Position wird nicht bekannt gegeben. Falls auf Ja eingestellt, wird die Position des Anrufers wird immer bekannt gegeben. Wenn der Wert überschritten wird, wird der Anrufer hört ihre Position in der Warteschlange nur, wenn er sich innerhalb der Grenze von AK-Position. Wenn der Wert auf Mehr, hört der Anrufer ihre Position, wenn es über die Zahl von AK-Position.",
+      "REPORTHOLDTIMEAGENT": "Die Berichterstattung über die CLI des Anrufers mit der Zeit in der Warteschleife in der Warteschlange vor.",
+      "PERIODICANNOUNCE": "Eine Reihe von regelmäßigen Mitteilungen gespielt zu werden, in der Reihenfolge wiedergegeben, in der sie definiert sind.",
+      "HOLDTIMEANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Hold\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "YOUARENEXTANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Sie sind jetzt in erster Linie\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "THEREAREANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Es gibt\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "WAITINGCALLSANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Wartende Anrufe\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Die voraussichtliche Wartezeit ist\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "MINUTESANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"min\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "MINUTEANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"min\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "SECONDSANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Sekunden\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "THANKYOUANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Vielen Dank für Ihre Geduld.\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "AFTERCALLWORK": "Wenn der Agent aktiv ist, wird auf eine Pause nach einer abgeschlossenen Anruf in der Warteschlange",
+      "AUTOPAUSE": "Aktiviert/Deaktiviert die automatische Unterbrechung der Mitglieder, die es versäumen, um einen Anruf zu beantworten. Wenn aktiv, wird diese Mitgliedstaaten angehalten zu werden in allen Warteschlangen er Mitglied ist.",
+      "RINGINUSE": "Verwendet werden, um zu vermeiden, Senden von Anrufen an Mitglieder, deren Status im Einsatz ist.",
+      "TIMEOUTRESTART": "Falls auf Ja eingestellt, wird das Timeout für einen Agenten zu beantworten, wenn entweder ein Besetztzeichen oder wird mit dem Status \"Überlastung des Kanals.",
+      "CONTEXT": "Ermöglicht einem Anrufer zu beenden, die die Warteschlange durch Drücken einer einzigen Taste MFV-Ziffer. Wenn Sie einen Kontext angegeben ist und der Anrufer gibt eine Zahl, Ziffer wird versuchen, die angepasst werden können, im Rahmen festgelegt, und es wird auch weiterhin die Ausführung Nummernplan.",
+      "SETINTERFACEVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange, die einige Variablen werden(siehe wiki)",
+      "SETQUEUEVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange und kurz vor dem Anrufer die Warteschlange verlassen einige Variablen werden(siehe wiki)",
+      "SETQUEUEENTRYVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange, die einige Variablen werden(siehe wiki)",
       "RECORDING": "Aktivieren der Aufzeichnung",
-      "VOICEMAIL_CONTEXT": "Kontext der verwendeten Nebenstellen",
+      "VOICEMAIL_CONTEXT": "Im Rahmen der relativen Erweiterung.",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
       "CALLERIDALL": "Unterstützte Formate: \"CallerId\" & lt; number & gt;",
       "CALLER_ID": "Unterstützte Formate: \"CallerId\" & lt; number & gt;",
-      "MANDATORYDISPOSITIONPAUSEID": "Pausenstatus, welcher während einer erforderlichen Qualifizierung verwendet wird",
-      "SERVICELEVEL": "Zweite Einstellungen für Service-Level (Standard = 0, kein SL). Wird für Service Level-Statistiken verwendet (Anrufe werden innerhalb des Service Level-Zeitrahmens beantwortet)",
-      "MONITORFORMAT": "Gibt das Format der Aufzeichnungsdatei an. Bei 'inaktiv', werden Anrufe nicht aufgezeichnet"
+      "MANDATORYDISPOSITIONPAUSEID": "Pausenstatus, der während der Zwangsdisposition festgelegt werden soll",
+      "SERVICELEVEL": "Zweite Einstellungen für Service Level (Standard = 0, kein SL). Wird für Service Level-Statistiken verwendet (Anrufe werden innerhalb des Service Level-Zeitrahmens beantwortet)",
+      "MONITORFORMAT": "Gibt das Format der Aufnahmedatei an. Wenn es auf 'inaktiv' gesetzt ist, werden Anrufe nicht aufgezeichnet",
+      "SAVE_ROUTES": "Die Streckenführung wurde geändert. Denken Sie daran, zu speichern, wenn Sie Ihre Änderungen nicht verlieren möchten."
     },
-    "MUSICONHOLD": "Wartemusik",
-    "ANNOUNCETOAGENT": "Ansage an Agenten",
-    "ANNOUNCEMENTS": "Ansagen",
-    "ADVANCED": "Erweitert",
-    "ANNOUNCEFREQUENCY": "Ansagefrequenz",
-    "MINANNOUNCEFREQUENCY": "Min. Ansagefrequenz",
-    "PERIODICANNOUNCEFREQUENCY": "Frequenz wiederholende Ansagen",
-    "RANDOMPERIODICANNOUNCE": "Zufällige Ansagen",
-    "ANNOUNCEHOLDTIME": "Wartezeit ansagen",
-    "ANNOUNCECALLERPOSITION": "Warteposition ansagen",
-    "ANNOUNCEPOSITIONLIMIT": "Limitierung Warteposition ansagen",
-    "REPORTHOLDTIMEAGENT": "Haltezeit in Agentenbericht",
-    "PERIODICANNOUNCE": "Wiederholende Ansagen",
-    "HOLDTIMEANNOUNCE": "Wartezeit ansagen",
-    "YOUARENEXTANNOUNCE": "Erste Position",
-    "THEREAREANNOUNCE": "Es befinden sich",
-    "WAITINGCALLSANNOUNCE": "Wartende Anrufe",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Geschätzte Wartezeit ansagen",
-    "MINUTESANNOUNCE": "Minuten",
-    "MINUTEANNOUNCE": "Minute",
-    "SECONDSANNOUNCE": "Sekunden",
+    "MUSICONHOLD": "Musik auf Halten",
+    "ANNOUNCETOAGENT": "Geben Sie Agent",
+    "ANNOUNCEMENTS": "Ankündigungen",
+    "ADVANCED": "Erweiterte",
+    "ANNOUNCEFREQUENCY": "Frequenz ankündigen",
+    "MINANNOUNCEFREQUENCY": "Minimale Frequenz ankündigen",
+    "PERIODICANNOUNCEFREQUENCY": "Periodische Frequenz ankündigen",
+    "RANDOMPERIODICANNOUNCE": "Random Periodische verkünden",
+    "ANNOUNCEHOLDTIME": "Geben Sie Zeit",
+    "ANNOUNCECALLERPOSITION": "Position des Anrufers bekannt",
+    "ANNOUNCEPOSITIONLIMIT": "Geben Position Limit",
+    "REPORTHOLDTIMEAGENT": "Bericht Agenten",
+    "PERIODICANNOUNCE": "Periodische verkünden",
+    "HOLDTIMEANNOUNCE": "Zeit in der Warteschleife verkünden",
+    "YOUARENEXTANNOUNCE": "\"Sie sind weiter' verkünden",
+    "THEREAREANNOUNCE": "'Es gibt' verkünden",
+    "WAITINGCALLSANNOUNCE": "Wartende Anrufe,",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Geschätzte Zeit halten,",
+    "MINUTESANNOUNCE": "Minuten ankündigen",
+    "MINUTEANNOUNCE": "Minute verkünden",
+    "SECONDSANNOUNCE": "Sekunden,",
     "THANKYOUANNOUNCE": "'Vielen Dank' verkünden",
     "AUTOPAUSE": "Auto Pause",
-    "AFTERCALLWORK": "Nacharbeit",
-    "AFTERCALLWORKDURATION": "Dauer Nacharbeit",
-    "RINGINUSE": "Klingeln bei Besetzt",
-    "MEMBERDELAY": "Verzögerung",
-    "TIMEOUTRESTART": "Zeitüberschreitung",
+    "AFTERCALLWORK": "Arbeit nach Anruf",
+    "AFTERCALLWORKDURATION": "Arbeit nach Anruf Dauer",
+    "RINGINUSE": "Ring in Verwendung",
+    "MEMBERDELAY": "Die Verzögerung",
+    "TIMEOUTRESTART": "Timeout starten",
     "MONITORFORMAT": "Aufzeichnungsformat",
-    "SETINTERFACEVARIABLES": "Interface-Variablen",
-    "SETQUEUEVARIABLES": "Warteschlangen-Variablen",
-    "SETQUEUEENTRYVARIABLES": "Warteschlangen-Eintritts-Variablen",
+    "SETINTERFACEVARIABLES": "Die Interface- Variablen",
+    "SETQUEUEVARIABLES": "Die Warteschlange Variablen",
+    "SETQUEUEENTRYVARIABLES": "Die Warteschlange ENTRY-Variablen",
     "VARIABLE": "Variable",
-    "CONTEXT": "Kontext Austritt aus Warteschlange",
+    "CONTEXT": "Kontext",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
-    "INBOUNDROUTES": "Eingehende Routen",
+    "INBOUNDROUTES": "Ankommende Routen",
     "PHONENUMBER": "Telefonnummer",
     "ADD_INBOUNDROUTE": "Eingehende Route hinzufügen",
-    "EDIT_INBOUNDROUTE": "Eingehende Route bearbeiten",
-    "DELETE_INBOUNDROUTE": "Eingehende Route löschen",
+    "EDIT_INBOUNDROUTE": "Route für eingehende Anrufe bearbeiten.",
+    "DELETE_INBOUNDROUTE": "Löschen der Route für eingehende Anrufe",
     "ACTIONS": "Aktionen",
-    "OUTBOUNDROUTES": "Ausgehende Routen",
-    "DESTINATIONPATTERN": "Ziel-Pattern",
+    "OUTBOUNDROUTES": "Abgehende Routen",
+    "DESTINATIONPATTERN": "Ziel Muster",
     "ADD_OUTBOUNDROUTE": "Ausgehende Route hinzufügen",
-    "EDIT_OUTBOUNDROUTE": "Ausgehende Route bearbeiten",
-    "DELETE_OUTBOUNDROUTE": "Ausgehende Route löschen",
-    "CUTDIGITS": "Ziffern",
-    "RECORDING": "Aufzeichnung",
+    "EDIT_OUTBOUNDROUTE": "Abgehende Route bearbeiten",
+    "DELETE_OUTBOUNDROUTE": "Abgehende Route löschen",
+    "CUTDIGITS": "Die Ziffern",
+    "RECORDING": "Aufnahme",
     "RECORDINGFORMAT": "Aufzeichnungsformat",
     "INTERNALROUTES": "Interne Routen",
-    "ADD_INTERNALROUTE": "Interne Route hinzufügen",
+    "ADD_INTERNALROUTE": "Fügen Sie interne Routen",
     "EDIT_INTERNALROUTE": "Interne Route bearbeiten",
-    "DELETE_INTERNALROUTE": "Interne Route löschen",
+    "DELETE_INTERNALROUTE": "Interne Routen löschen",
     "CONTEXTS": "Kontexte",
-    "ADD_CONTEXT": "Kontext hinzufügen",
+    "ADD_CONTEXT": "Rahmen hinzufügen",
     "EDIT_CONTEXT": "Kontext bearbeiten",
-    "DELETE_CONTEXT": "Kontext löschen",
-    "VOICEMAILS": "Voicemails",
-    "ADD_VOICEMAIL": "Voicemail hinzufügen",
-    "EDIT_VOICEMAIL": "Voicemail bearbeiten",
+    "DELETE_CONTEXT": "Löschen von Rahmen",
+    "VOICEMAILS": "Von Voicemails",
+    "ADD_VOICEMAIL": "Fügen Sie Voicemail",
+    "EDIT_VOICEMAIL": "Bearbeiten von Voicemail",
     "DELETE_VOICEMAIL": "Voicemail löschen",
-    "FULLNAME": "Vollständiger Name",
+    "FULLNAME": "Voller Name",
     "EMAIL": "E-Mail",
     "MAILBOX": "Mailbox",
     "PASSWORD": "Passwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "TIMEZONE": "Zeitzone",
-    "ATTACH": "Anhängen",
+    "ATTACH": "Befestigen Sie",
     "ENVELOPE": "Umschlag",
     "DELETE": "Löschen",
     "EMAILBODY": "E-Mail-Text",
     "EMAILSUBJECT": "Betreff der E-Mail",
-    "MAXSECONDS": "Max. Sekunden",
+    "MAXSECONDS": "In Sekunden",
     "MAXMESSAGES": "Max. Nachrichten",
     "MESSAGES": "Nachrichten",
     "SORT": "Sortieren",
-    "ADD_MUSICONHOLD": "Wartemusik hinzufügen",
-    "MUSICONHOLDS": "Wartemusik",
-    "EDIT_MUSICONHOLD": "Wartemusik bearbeiten",
-    "DELETE_MUSICONHOLD": "Wartemusik löschen",
+    "ADD_MUSICONHOLD": "Hinzufügen von Musik auf Halten",
+    "MUSICONHOLDS": "Musik auf Halten",
+    "EDIT_MUSICONHOLD": "Bearbeiten Musik auf Halten",
+    "DELETE_MUSICONHOLD": "Löschen Sie Musik auf Halten",
     "DIRECTORY": "Verzeichnis",
     "AUDIOFILES": "Audiodateien",
-    "RECORDINGS": "Aufzeichnungen",
-    "CHANSPY": "Listen-In",
+    "RECORDINGS": "Aufnahmen",
+    "CHANSPY": "ChanSpy",
     "PREFIX": "Präfix",
     "OPTIONS": "Optionen",
-    "AUTH": "Authentifizierung",
-    "ADD_CHANSPY": "Listen-In hinzufügen",
-    "EDIT_CHANSPY": "Listen-In bearbeiten",
-    "DELETE_CHANSPY": "Listen-In löschen",
+    "AUTH": "Auth",
+    "ADD_CHANSPY": "Fügen Sie ChanSpy",
+    "EDIT_CHANSPY": "Bearbeiten Sie ChanSpy",
+    "DELETE_CHANSPY": "Löschen Sie ChanSpy",
     "AGENTS": "Agenten",
     "TELEPHONES": "Telefone",
     "QUEUES": "Warteschlangen",
-    "QUEUE_CALLS": "Anrufe in Warteschlange",
-    "QUEUE_PARAMETERS": "Warteschlangen Parameter",
+    "QUEUE_CALLS": "Anrufe aus einer Warteschlange",
+    "QUEUE_PARAMETERS": "Queue Parameter",
     "ABANDONED_CALLS": "Abgebrochene Anrufe",
     "OUTBOUND_CALLS": "Ausgehende Anrufe",
     "AGI": "AGI",
-    "DIAL": "Wählen",
+    "DIAL": "Kurzwahl",
     "CALLYSQUARE": "CallySquare",
-    "INTERNALDIAL": "Interner Anruf",
-    "EXTERNALDIAL": "Externer Anruf",
-    "RINGGROUP": "Rufgruppe",
+    "INTERNALDIAL": "Interne Wahl",
+    "EXTERNALDIAL": "Externes Wählen",
+    "RINGGROUP": "Ring-Gruppe",
     "PLAYBACK": "Wiedergabe",
     "QUEUE": "Warteschlange",
-    "SET": "Einstellen",
+    "SET": "Set",
     "VOICEMAIL": "Voicemail",
     "GOTO": "Gehe zu",
     "HANGUP": "Auflegen",
-    "CUSTOM": "Benutzerdefiniert",
+    "CUSTOM": "Benutzerdefinierte",
     "PROJECT": "Cally-Square Projekt",
     "TECHNOLOGY/RESOURCE": "Technologie-/Ressourcen",
     "URL": "URL",
-    "EDIT_APP": "App bearbeiten.",
+    "EDIT_APP": "Anwendung bearbeiten.",
     "EDIT_INTERVAL": "Intervall bearbeiten",
-    "DELETE_APP": "App löschen",
+    "DELETE_APP": "Anwendung löschen",
     "INTERVALS": "Intervalle",
     "USER": "Benutzer",
-    "TRUNK": "Trunk",
+    "TRUNK": "Amtsleitung",
     "PHONE": "Telefon",
     "AUDIO_FILES": "Audiodateien",
-    "ANNOUNCE_OVERRIDES": "Überschreibungen ankündigen",
+    "ANNOUNCE_OVERRIDES": "Überschreibt ankündigen",
     "MACRO": "Makro",
     "GOSUB": "GoSub",
     "RULE": "Regel",
     "ANSWER": "Antwort",
     "VALUE": "Wert",
     "MAILBOX@CONTEXT": "Mailbox@Kontext",
-    "EXTENSION": "Nebenstelle",
+    "EXTENSION": "Erweiterung",
     "PRIORITY": "Priorität",
-    "HANGUP_CAUSE": "Ablehnungsgrund",
-    "OUTBOUNDDIAL": "Extern wählen",
-    "CALLER_ID": "Anrufer-ID",
+    "HANGUP_CAUSE": "Ursache auflegen",
+    "OUTBOUNDDIAL": "Wählen Sie für abgehende Anrufe",
+    "CALLER_ID": "Die Anrufer-ID",
     "NO_MESSAGE_AVAILABLE": "Keine Meldungen vorhanden",
     "NO_SOUND_AVAILABLE": "Kein Ton verfügbar",
-    "VOICERECORDINGS": "Sprachaufzeichnungen",
-    "CHANSPIES": "Listen-Ins",
-    "VOICE": "Anrufe",
+    "VOICERECORDINGS": "Sprachaufnahmen",
+    "CHANSPIES": "Chan Spies",
+    "VOICE": "Voice",
     "REALTIME": "Echtzeit",
-    "ID": "ID",
+    "ID": "Id",
     "VOICEMAIL_CONTEXT": "Kontext",
     "NO_MOHSOUND_AVAILABLE": "Keine Wartemusik verfügbar",
     "FILE": "Datei",
-    "ADD_MOHSOUND": "Musik bei Halten hinzufügen",
-    "DOWNLOAD_MOHSOUND": "Musik bei Halten herunterladen",
-    "DELETE_MOHSOUND": "Musik bei Halten löschen",
+    "ADD_MOHSOUND": "Hinzufügen von Musik auf Halten sound",
+    "DOWNLOAD_MOHSOUND": "Download Music-on-Hold sound",
+    "DELETE_MOHSOUND": "Löschen Sie Music On Hold sound",
     "UNIQUEID": "Eindeutige ID",
     "AGENT": "Agent",
     "TYPE": "Typ",
     "RATING": "Bewertung",
     "AUDIO": "Audio",
     "DATE": "Datum",
-    "NEW_VOICEQUEUE": "Neue Anruf-Warteschlange",
-    "NEW_INBOUNDROUTE": "Neue eingehende Route",
-    "NEW_OUTBOUNDROUTE": "Neue ausgehende Route",
-    "NEW_INTERNALROUTE": "Neue interne Route",
-    "NEW_CONTEXT": "Neuer Kontext",
+    "NEW_VOICEQUEUE": "Neue Stimme der Warteschlange",
+    "NEW_INBOUNDROUTE": "Neue Route für eingehende Anrufe",
+    "NEW_OUTBOUNDROUTE": "Neue abgehende Route",
+    "NEW_INTERNALROUTE": "Neue interne Routen",
+    "NEW_CONTEXT": "Neue Kontext",
     "NEW_VOICEMAIL": "Neue Voicemail",
-    "NEW_MUSICONHOLD": "Neue Haltemusik",
-    "NEW_CHANSPY": "Neuer Listen-In",
-    "PENALTY": "Verzögerung",
-    "ADD_TEAM_TO_VOICEQUEUE": "Team zur Warteschlange hinzufügen",
-    "ADD_AGENT_TO_VOICEQUEUE": "Agenten zur Warteschlange hinzufügen",
-    "EDIT_DIAL": "Wählen anpassen",
+    "NEW_MUSICONHOLD": "Neue Musik auf Halten",
+    "NEW_CHANSPY": "Neue ChanSpy",
+    "PENALTY": "Strafe",
+    "ADD_TEAM_TO_VOICEQUEUE": "Team hinzufügen, Warteschlange",
+    "ADD_AGENT_TO_VOICEQUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
+    "EDIT_DIAL": "Wählen Sie Bearbeiten.",
     "EDIT_AGI": "AGI bearbeiten",
-    "EDIT_INTERNALDIAL": "Internes Wählen bearbeiten",
-    "EDIT_EXTERNALDIAL": "Externes Wählen bearbeiten",
-    "EDIT_RINGGROUP": "Rufgruppe bearbeiten",
-    "EDIT_PLAYBACK": "Wiedergabe bearbeiten",
-    "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "EDIT_SET": "Set bearbeiten",
-    "EDIT_GOTO": "Gehe zu bearbeiten",
-    "EDIT_HANGUP": "Auflegen bearbeiten",
-    "EDIT_CUSTOM": "Benutzerdef. Einstellungen bearbeiten",
+    "EDIT_INTERNALDIAL": "Interne Wahl bearbeiten.",
+    "EDIT_EXTERNALDIAL": "Wählen Sie Externen bearbeiten",
+    "EDIT_RINGGROUP": "Gruppe bearbeiten",
+    "EDIT_PLAYBACK": "Bearbeiten Sie die Wiedergabe",
+    "EDIT_QUEUE": "Bearbeiten von Warteschlangen",
+    "EDIT_SET": "Bearbeiten",
+    "EDIT_GOTO": "Gehe zu bearbeiten.",
+    "EDIT_HANGUP": "Bearbeiten Sie Auflegen",
+    "EDIT_CUSTOM": "Bearbeiten von benutzerdefinierten",
     "DURATION": "Dauer",
-    "RECEIVED_AT": "Eingegangen am",
+    "RECEIVED_AT": "Empfangen am",
     "YES": "Ja",
-    "NO": "Nein",
-    "HANGUPCAUSE_1": "1 = Nummer nicht zugewiesen",
-    "HANGUPCAUSE_16": "16 = Beenden durch Nutzer",
-    "HANGUPCAUSE_17": "17 = Besetzt",
-    "HANGUPCAUSE_18": "18 = Keine Antwort (Nebenstelle nicht verbunden)",
+    "NO": "Keine",
+    "HANGUPCAUSE_1": "1 = Nicht zugewiesene Nummer",
+    "HANGUPCAUSE_16": "16 = Normail Anruf löschen",
+    "HANGUPCAUSE_17": "17 = Benutzer besetzt",
+    "HANGUPCAUSE_18": "18 = Keine Reaktion (Telefon Gerät nicht verbunden)",
     "HANGUPCAUSE_21": "21 = Anruf abgelehnt",
-    "HANGUPCAUSE_22": "22 = Nummer geändert",
-    "HANGUPCAUSE_27": "27 = Ziel nicht verfügbar",
-    "HANGUPCAUSE_38": "38 = Netzwerk nicht verfügbar",
+    "HANGUPCAUSE_22": "22 = Anzahl geändert",
+    "HANGUPCAUSE_27": "27 = Ziel nicht in Ordnung",
+    "HANGUPCAUSE_38": "38 = Netzwerk aus, um",
     "HANGUPCAUSE_41": "41 = vorübergehende Störung",
-    "RANDOM": "Zufall",
+    "RANDOM": "Random",
     "ALPHABETICAL": "Alphabetisch",
     "NO_APPS_AVAILABLE": "Keine Anwendungen verfügbar",
-    "DOWNLOAD_VOICERECORDING": "Sprachaufzeichnung herunterladen",
-    "DELETE_VOICERECORDING": "Sprachaufzeichnung löschen",
-    "INTERNAL": "Intern",
+    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
+    "DELETE_VOICERECORDING": "Löschen von Voice Recording",
+    "INTERNAL": "Interne",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "TRUNK_STATUS": "Trunk Status",
     "REGISTERED": "Registriert",
-    "UNREGISTERED": "Nicht registriert",
+    "UNREGISTERED": "Unregistrierte",
     "LAGGED": "Zurück",
     "REACHABLE": "Erreichbar",
     "UNREACHABLE": "Nicht erreichbar",
     "UNKNOWN": "Unbekannt",
-    "NOT_INUSE": "Nicht in Verwendung",
-    "INUSE": "In Verwendung",
+    "NOT_INUSE": "Nicht in Gebrauch",
+    "INUSE": "Im Einsatz",
     "BUSY": "Besetzt",
     "INVALID": "Ungültig",
     "UNAVAILABLE": "Nicht verfügbar",
     "RINGING": "Klingeln",
-    "ONHOLD": "Halten",
-    "RING": "Klingeln",
-    "UP": "Nach Oben",
-    "INFO": "Information",
-    "TRUNKS": "Trunks",
+    "ONHOLD": "Auf Halten",
+    "RING": "Ring",
+    "UP": "Bis",
+    "INFO": "Info",
+    "TRUNKS": "Amtsleitungen",
     "REGISTRY": "Registrierung",
-    "NO_REGISTRY": "Keine Registrierung",
+    "NO_REGISTRY": "Keine registry",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
-    "WAITING": "Wartezustand",
-    "TALKING": "Im Gespräch",
-    "DID": "DID",
+    "WAITING": "Warten",
+    "TALKING": "Sprechen",
+    "DID": "Haben",
     "CALLER": "Anrufer",
-    "TOTAL": "Gesamt",
+    "TOTAL": "Insgesamt",
     "ANSWERED": "Beantwortet",
     "ABANDONED": "Abgebrochen",
-    "UNMANAGED": "Nicht bearbeitet",
-    "AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "AVG_DURATION": "Durchschnittliche Dauer",
-    "AVG_BILLABLE": "Durchschnittliche abrechenbare Zeit",
-    "SOURCE": "Ursprung",
+    "UNMANAGED": "Nicht verwaltete",
+    "AVG_HOLD_TIME": "Durchschnittl. Warteschleifenzeit",
+    "AVG_DURATION": "Av-Dauer",
+    "AVG_BILLABLE": "Avg Fakturierbaren",
+    "SOURCE": "Quelle",
     "DESTINATION": "Ziel",
     "REJECTED": "Abgelehnt",
     "FAILED": "Fehlgeschlagen",
-    "CALLED": "Angerufen",
+    "CALLED": "Aufgerufen",
     "CONNECTED": "Verbunden",
     "NO_RATING": "Keine Bewertung",
-    "EDIT_VOICERECORDING": "Sprachaufzeichnungen verwalten",
+    "EDIT_VOICERECORDING": "Edit Voice Recording",
     "APPLICATION_NAME": "Name der Anwendung",
     "ARGUMENTS": "Argumente",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
-    "ADD_AGENT_TO_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "DEFAULT_PAUSE": "Standard Pause",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "ADD_AGENT_TO_QUEUE": "Agent zur Warteschlange hinzufügen",
+    "DEFAULT_PAUSE": "Standard PAUSE",
     "PAUSE": "Pause",
-    "UNPAUSE": "Fortsetzen",
-    "REDIRECT_TO_NUMBER": "Weiterleiten an Nummer",
-    "REDIRECT_TO_AGENT": "Weiterleiten an Agenten",
-    "AGENTADD_VOICEQUEUE": "Agenten zu Anruf-Warteschlange hinzufügen",
+    "UNPAUSE": "Pause",
+    "REDIRECT_TO_NUMBER": "Umleiten zu: Anzahl",
+    "REDIRECT_TO_AGENT": "Umleiten zu: Agent",
+    "AGENTADD_VOICEQUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
     "APPLICATION": "Anwendung",
     "FILES": "Dateien",
     "FORMAT": "Format",
     "MODE": "Modus",
     "RECORD": "Datensatz",
-    "TEAMADD_VOICEQUEUE": "Team zur Anruf-Warteschlange hinzufügen",
-    "NEW_MOHSOUND": "Neue Wartemusik",
-    "DOWNLOAD_MESSAGE": "Herunterladen",
+    "TEAMADD_VOICEQUEUE": "Hinzufügen Team voicequeue",
+    "NEW_MOHSOUND": "Neue Musik auf Halten",
+    "DOWNLOAD_MESSAGE": "Download",
     "DELETE_MESSAGE": "Löschen",
     "QUEUE_PARAMS": "Queue Parameter",
-    "TOTAL_OFFERED": "Gesamt",
+    "TOTAL_OFFERED": "Insgesamt",
     "READY": "Bereit",
-    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "AGENTSADD_QUEUE": "Agenten zur Warteschlangen hinzufügen",
-    "ALL_TEAMS": "Alle Teams",
+    "AGENTADD_QUEUE": "Agent hinzufügen Warteschlangen zu Voice",
+    "AGENTSADD_QUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
+    "ALL_TEAMS": "Alle Mannschaften",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CLOSING": "Schließen",
     "TAGS": "Tags",
     "WAITING_FOR_AGENT": "Warten auf Agenten",
-    "EDIT_OUTBOUNDDIAL": "Wählverhalten ausgehend bearbeiten",
-    "ACCOUNTNAME": "Kontoname",
+    "EDIT_OUTBOUNDDIAL": "Bearbeiten ausgehenden DFÜ",
+    "ACCOUNTNAME": "Konto Name",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
-    "DISPOSITION": "Qualifizierung",
+    "OF": "Von",
+    "DISPOSITION": "Disposition",
     "WAITING_FOR_AGENTS": "Warten auf Agenten",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "PARTIALPAUSE": "Teilpause",
+    "PARTIALPAUSE": "Teilweise Pause",
     "STATUS": "Status",
     "TIMER": "Timer",
     "ALL": "Alle",
     "IDLE": "Leerlauf",
-    "EDIT_TRUNK": "Trunk bearbeiten",
+    "EDIT_TRUNK": "Bearbeiten Trunk",
     "ACTIVE": "Aktiv",
-    "CLEAR": "Leeren",
+    "CLEAR": "klar",
     "CALLS": "Anrufe",
-    "STARTEDAT": "Startdatum",
-    "ENDEDAT": "Enddatum",
-    "TAG": "Tag",
-    "DETAILS": "Details",
+    "STARTEDAT": "Fing an bei",
+    "ENDEDAT": "Beendet bei",
+    "TAG": "Etikett",
+    "DETAILS": "Einzelheiten",
     "BILLABLESECONDS": "Abrechenbare Sekunden",
-    "ANSWEREDAT": "Beantwortet am",
-    "NOTE": "Notiz",
+    "ANSWEREDAT": "Beantwortet bei",
+    "NOTE": "Hinweis",
     "CLOSE": "Schließen",
-    "SELECT_DATE": "Startdatum auswählen",
-    "SELECT_TYPE": "Typ auswählen",
-    "ABANDONEDCALLS": "Abgebrochene Anrufe",
+    "SELECT_DATE": "Wählen Sie Startdatum",
+    "SELECT_TYPE": "Art auswählen",
+    "ABANDONEDCALLS": "Verlassene Warteschlangenanrufe",
     "ADD_VOICEPREFIX": "Präfix hinzufügen",
-    "AGENTADD_VOICEPREFIX": "Agentenpräfix hinzufügen",
+    "AGENTADD_VOICEPREFIX": "Fügen Sie Agent zu Präfix hinzu",
     "DELETE_VOICEPREFIX": "Präfix löschen",
     "EDIT_VOICEPREFIX": "Präfix bearbeiten",
     "NEW_VOICEPREFIX": "Neues Präfix",
-    "VOICEPREFIXES": "Präfixe für Sprachanrufe",
+    "VOICEPREFIXES": "Vorgegebene Präfixe",
     "CALLERIDALL": "Anruferidentifikation",
     "OUTBOUNDROUTE": "Ausgehende Route",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
+    "LOGIN_TIME": "Login-Zeit",
+    "PAUSE_TIME": "Pausenzeit",
     "DIALER": "Dialer",
-    "INBOUND": "Eingehend",
+    "INBOUND": "Eingehende",
     "OUTBOUND": "Ausgehend",
-    "MANDATORYDISPOSITION": "Qualifikation erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "MANDATORYDISPOSITION": "Zwingende Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Status der obligatorischen Dispositionspause",
+    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
     "CANT_DOWNLOAD_THIS_FILE": "Diese Datei kann nicht heruntergeladen werden",
     "FILE_NOT_FOUND": "Datei nicht gefunden",
     "SCREENRECORDING": "Bildschirmaufzeichnung verwalten",
-    "START_SCREENRECORDING": "Bildschirmaufzeichnung starten",
-    "STOP_SCREENRECORDING": "Bildschirmaufzeichnung beenden",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
-    "WRONG_EXTENSION": "Ungültige Dateiendung",
+    "START_SCREENRECORDING": "Starten Sie die Bildschirmaufnahme",
+    "STOP_SCREENRECORDING": "Beenden Sie die Bildschirmaufnahme",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
+    "WRONG_EXTENSION": "Die Datei weist die falsche Erweiterung auf",
     "DOWNLOADTRANSCRIBE_VOICERECORDING": "Transkript herunterladen",
     "FAILUREREASON": "Fehlergrund",
-    "RUNSENTIMENT_VOICERECORDING": "Starten Sprachaufzeichnung inkl. Sentiment",
-    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Transkription und Sentinemtaufzeichnung starten",
-    "RUNTRANSCRIBE_VOICERECORDING": "Transkription starten",
-    "SENTIMENT": "Sentiment",
-    "SENTIMENTANALYSIS": "Sentiment-Analyse",
+    "RUNSENTIMENT_VOICERECORDING": "Führen Sie Sentiment",
+    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Führen Sie Transcribe & Sentiment aus",
+    "RUNTRANSCRIBE_VOICERECORDING": "Führen Sie Transcribe aus",
+    "SENTIMENT": "Gefühl",
+    "SENTIMENTANALYSIS": "Stimmungsanalyse",
     "SENTIMENT_MIXED": "Gemischt",
     "SENTIMENT_NEGATIVE": "Negativ",
     "SENTIMENT_NEUTRAL": "Neutral",
     "SENTIMENT_POSITIVE": "Positiv",
     "TEXT": "Text",
     "TRANSCRIBE": "Transkribieren",
-    "TRANSCRIBESTATUS_COMPLETED": "Transkription abgeschlossen",
-    "TRANSCRIBESTATUS_FAILED": "Transkription fehlgeschlagen",
+    "TRANSCRIBESTATUS_COMPLETED": "Abgeschlossen",
+    "TRANSCRIBESTATUS_FAILED": "Gescheitert",
     "TRANSCRIBESTATUS_IN_PROGRESS": "In Bearbeitung",
     "TRANSCRIBESTATUS_NEW": "Neu",
     "TRANSCRIPT": "Transkript",
     "TRANSCRIPTANALYSIS": "Transkript & Analyse",
     "SERVICELEVEL": "Service Level",
-    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Qualifizierung der dritten Ebene",
-    "TEAMADD_VOICEPREFIX": "Team zum Präfix hinzufügen",
+    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
+    "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene",
     "ALIAS": "Alias"
   }
 }
index a06798a..0e070f7 100644 (file)
     "ADD_VOICEPREFIX": "Add Prefix",
     "EDIT_VOICEPREFIX": "Edit Prefix",
     "AGENTADD_VOICEPREFIX": "Add Agent to Prefix",
-    "TEAMADD_VOICEPREFIX": "Add Team to Prefix",
     "DELETE_VOICEPREFIX": "Delete Prefix",
     "OUTBOUNDROUTE": "Outbound Route",
     "CALLERIDALL": "Caller Id",
index b29a2d3..90b1016 100644 (file)
     "SERVICELEVEL": "Nivel de servicio",
     "SECOND_LEVEL_DISPOSITION": "Tipificación de segundo nivel",
     "THIRD_LEVEL_DISPOSITION": "Tipificación de tercer nivel",
-    "TEAMADD_VOICEPREFIX": "Agregar equipo al prefijo",
     "ALIAS": "Alias"
   }
 }
index b52a7e9..bd75c5e 100644 (file)
     "SERVICELEVEL": "Teenuse tase",
     "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
     "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme korraldus",
-    "TEAMADD_VOICEPREFIX": "Lisa meeskond eesliidesse",
     "ALIAS": "Teise nimega"
   }
 }
index 4c8f69b..64fd7ba 100644 (file)
     "SERVICELEVEL": "سطح سرویس",
     "SECOND_LEVEL_DISPOSITION": "دفع سطح دوم",
     "THIRD_LEVEL_DISPOSITION": "دفع سطح سوم",
-    "TEAMADD_VOICEPREFIX": "اضافه کردن تیم به پیشوند",
     "ALIAS": "نام مستعار"
   }
 }
index 664bc29..f1874d1 100644 (file)
     "SERVICELEVEL": "Palvelutaso",
     "SECOND_LEVEL_DISPOSITION": "Toisen tason sijoitus",
     "THIRD_LEVEL_DISPOSITION": "Kolmannen tason sijoitus",
-    "TEAMADD_VOICEPREFIX": "Lisää joukkue etuliitteeseen",
     "ALIAS": "Alias"
   }
 }
index 51099a3..ca6418d 100644 (file)
     "SERVICELEVEL": "Niveau de service",
     "SECOND_LEVEL_DISPOSITION": "Disposition de deuxième niveau",
     "THIRD_LEVEL_DISPOSITION": "Disposition de troisième niveau",
-    "TEAMADD_VOICEPREFIX": "Ajouter une équipe au préfixe",
     "ALIAS": "Alias"
   }
 }
index 61c740b..2da30a3 100644 (file)
     "SERVICELEVEL": "רמת שירות",
     "SECOND_LEVEL_DISPOSITION": "נטייה בדרגה שנייה",
     "THIRD_LEVEL_DISPOSITION": "נטייה ברמה השלישית",
-    "TEAMADD_VOICEPREFIX": "הוסף צוות לקידומת",
     "ALIAS": "כינוי"
   }
 }
index 905e9aa..2fbd46a 100644 (file)
     "SERVICELEVEL": "सेवा का स्तर",
     "SECOND_LEVEL_DISPOSITION": "दूसरा स्तर विवाद",
     "THIRD_LEVEL_DISPOSITION": "तीसरे स्तर का विवाद",
-    "TEAMADD_VOICEPREFIX": "उपसर्ग में टीम जोड़ें",
     "ALIAS": "उपनाम"
   }
 }
index eef7ebe..1fecba7 100644 (file)
     "SERVICELEVEL": "Tingkat layanan",
     "SECOND_LEVEL_DISPOSITION": "Disposisi Tingkat Kedua",
     "THIRD_LEVEL_DISPOSITION": "Disposisi Tingkat Ketiga",
-    "TEAMADD_VOICEPREFIX": "Tambahkan Tim ke Awalan",
     "ALIAS": "Alias"
   }
 }
index 527d7c5..3b739d4 100644 (file)
     "ADD_VOICEPREFIX": "Aggiungi Prefisso",
     "EDIT_VOICEPREFIX": "Modifica Prefisso",
     "AGENTADD_VOICEPREFIX": "Aggiungi Agente al Prefisso",
-    "TEAMADD_VOICEPREFIX": "Aggiungi Team al Prefisso",
     "DELETE_VOICEPREFIX": "Elimina Prefisso",
     "OUTBOUNDROUTE": "Rotta Outbound",
     "CALLERIDALL": "Numero Chiamante",
index d2accf3..c7d5d57 100644 (file)
     "SERVICELEVEL": "サービスレベル",
     "SECOND_LEVEL_DISPOSITION": "第2レベルの気質",
     "THIRD_LEVEL_DISPOSITION": "第3レベルの気質",
-    "TEAMADD_VOICEPREFIX": "プレフィックスにチームを追加",
     "ALIAS": "エイリアス"
   }
 }
index 9e4a917..bc9ce6e 100644 (file)
     "SERVICELEVEL": "서비스 수준",
     "SECOND_LEVEL_DISPOSITION": "두 번째 수준 처리",
     "THIRD_LEVEL_DISPOSITION": "3 단계 처리",
-    "TEAMADD_VOICEPREFIX": "접두사에 팀 추가",
     "ALIAS": "별명"
   }
 }
index 65172e6..1a07f3d 100644 (file)
     "SERVICELEVEL": "Aptarnavimo lygis",
     "SECOND_LEVEL_DISPOSITION": "Antro lygio disponavimas",
     "THIRD_LEVEL_DISPOSITION": "Trečiojo lygio disponavimas",
-    "TEAMADD_VOICEPREFIX": "Pridėti komandą prie priešdėlio",
     "ALIAS": "Pseudonimas"
   }
 }
index 499925d..3e683d8 100644 (file)
     "SERVICELEVEL": "Pakalpojuma līmenis",
     "SECOND_LEVEL_DISPOSITION": "Otrā līmeņa izvietojums",
     "THIRD_LEVEL_DISPOSITION": "Trešā līmeņa izvietojums",
-    "TEAMADD_VOICEPREFIX": "Pievienot komandu prefiksam",
     "ALIAS": "Pseidonīms"
   }
 }
index a1ad47d..103a753 100644 (file)
     "SERVICELEVEL": "Service Level",
     "SECOND_LEVEL_DISPOSITION": "Tweede niveau dispositie",
     "THIRD_LEVEL_DISPOSITION": "Dispositie op het derde niveau",
-    "TEAMADD_VOICEPREFIX": "Team toevoegen aan voorvoegsel",
     "ALIAS": "Alias"
   }
 }
index f979e88..729522a 100644 (file)
     "SERVICELEVEL": "Service nivå",
     "SECOND_LEVEL_DISPOSITION": "Andre nivå disposisjon",
     "THIRD_LEVEL_DISPOSITION": "Tredje nivå disposisjon",
-    "TEAMADD_VOICEPREFIX": "Legg Team til prefiks",
     "ALIAS": "Alias"
   }
 }
index 9974a58..3988cbe 100644 (file)
     "SERVICELEVEL": "Poziom usług",
     "SECOND_LEVEL_DISPOSITION": "Dyspozycja drugiego poziomu",
     "THIRD_LEVEL_DISPOSITION": "Dyspozycja trzeciego poziomu",
-    "TEAMADD_VOICEPREFIX": "Dodaj drużynę do prefiksu",
     "ALIAS": "Alias"
   }
 }
index 95abd15..5113530 100644 (file)
     "SERVICELEVEL": "Nível de serviço",
     "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível",
     "THIRD_LEVEL_DISPOSITION": "Disposição de terceiro nível",
-    "TEAMADD_VOICEPREFIX": "Adicionar equipe ao prefixo",
     "ALIAS": "Pseudônimo"
   }
 }
index 3c55740..a46bf2f 100644 (file)
     "SERVICELEVEL": "Nível de serviço",
     "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível",
     "THIRD_LEVEL_DISPOSITION": "Disposição de terceiro nível",
-    "TEAMADD_VOICEPREFIX": "Adicionar equipe ao prefixo",
     "ALIAS": "Pseudônimo"
   }
 }
index 022d0b1..672f53d 100644 (file)
     "SERVICELEVEL": "Уровень обслуживания",
     "SECOND_LEVEL_DISPOSITION": "Расположение второго уровня",
     "THIRD_LEVEL_DISPOSITION": "Расположение третьего уровня",
-    "TEAMADD_VOICEPREFIX": "Добавить команду к префиксу",
     "ALIAS": "Псевдоним"
   }
 }
index 6a741b4..83c6c54 100644 (file)
     "SERVICELEVEL": "Servicenivå",
     "SECOND_LEVEL_DISPOSITION": "Andra nivån disposition",
     "THIRD_LEVEL_DISPOSITION": "Tredje nivåens disposition",
-    "TEAMADD_VOICEPREFIX": "Lägg till Team i prefixet",
     "ALIAS": "Alias"
   }
 }
index 51a4ca4..6dd9d26 100644 (file)
     "SERVICELEVEL": "Servis seviyesi",
     "SECOND_LEVEL_DISPOSITION": "İkinci Düzey Tasarruf",
     "THIRD_LEVEL_DISPOSITION": "Üçüncü Düzey Tasarruf",
-    "TEAMADD_VOICEPREFIX": "Önek'e Takım Ekle",
     "ALIAS": "takma ad"
   }
 }
index 3abaa1b..2415dcc 100644 (file)
     "SERVICELEVEL": "服务等级",
     "SECOND_LEVEL_DISPOSITION": "二级处置",
     "THIRD_LEVEL_DISPOSITION": "第三级处置",
-    "TEAMADD_VOICEPREFIX": "将团队添加到前缀",
     "ALIAS": "别名"
   }
 }
index c78fea9..294b15a 100644 (file)
     "SERVICELEVEL": "服務等級",
     "SECOND_LEVEL_DISPOSITION": "二級處置",
     "THIRD_LEVEL_DISPOSITION": "第三級處置",
-    "TEAMADD_VOICEPREFIX": "將團隊添加到前綴",
     "ALIAS": "別名"
   }
 }
index 6f42238..03bcbeb 100644 (file)
     "LASTMESSAGE": "اخر رسالة",
     "LEXREGION": "منطقة",
     "LIST": "قائمة",
-    "LOGGED_IN": "تم تسجيل الدخول",
+    "LOGGED_IN": "تم تسجيل الدخول (SIP متصل)",
     "LOGIN_TIME": "وقت تسجيل الدخول",
     "LOGOUT": "تسجيل خروج",
     "MANDATORYDISPOSITION": "الترتيب الإلزامي",
index e361766..07beea8 100644 (file)
     "LASTMESSAGE": "Poslední zpráva",
     "LEXREGION": "Kraj",
     "LIST": "Seznam",
-    "LOGGED_IN": "Přihlášen",
+    "LOGGED_IN": "Přihlášen (připojeno SIP)",
     "LOGIN_TIME": "Čas přihlášení",
     "LOGOUT": "Odhlásit se",
     "MANDATORYDISPOSITION": "Povinná dispozice",
index 00e305d..67fc111 100644 (file)
     "LASTMESSAGE": "Sidste meddelelse",
     "LEXREGION": "Område",
     "LIST": "Liste",
-    "LOGGED_IN": "Logget ind",
+    "LOGGED_IN": "Logget ind (SIP tilsluttet)",
     "LOGIN_TIME": "Login tid",
     "LOGOUT": "Log ud",
     "MANDATORYDISPOSITION": "Obligatorisk disposition",
index f01cf37..80b51fd 100644 (file)
@@ -3,8 +3,8 @@
     "ERRORS": {
       "ACCESSKEYID_REQUIRED": "Pflichtfeld",
       "ACCOUNTSID_REQUIRED": "Pflichtfeld",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "AGENT_REQUIRED": "Pflichtfeld",
       "AGENT_TIMEOUT_REQUIRED": "Pflichtfeld",
@@ -14,9 +14,9 @@
       "CONDITION_REQUIRED": "Pflichtfeld",
       "DESCRIPTION_REQUIRED": "Pflichtfeld",
       "DISPOSITION_REQUIRED": "Pflichtfeld",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
       "FALSEPRIORITY_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "KEY_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
       "KEY_REQUIRED": "Pflichtfeld",
       "LANGUAGE_REQUIRED": "Pflichtfeld",
       "LEXREGION_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "NAME_REQUIRED": "Pflichtfeld",
       "PHONE_REQUIRED": "Pflichtfeld",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
       "PRIORITY_REQUIRED": "Pflichtfeld",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
       "QUEUE_REQUIRED": "Pflichtfeld",
       "SECRETACCESSKEY_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
       "TEXT_REQUIRED": "Pflichtfeld",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "TIMEOUT_REQUIRED": "Pflichtfeld",
       "TIMES_REQUIRED": "Pflichtfeld",
       "TOKEN_REQUIRED": "Pflichtfeld",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
       "TRUEPRIORITY_REQUIRED": "Pflichtfeld",
       "TYPE_REQUIRED": "Pflichtfeld",
       "VALUE_REQUIRED": "Pflichtfeld",
       "VARIABLE_REQUIRED": "Pflichtfeld",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
-      "WELCOMEMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "WELCOMEMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
       "WELCOMEMESSAGE_REQUIRED": "Pflichtfeld",
       "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
       "PRIVATEKEY_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld"
     },
     "HELP": {
-      "LIST": "Liste für die Zuordnung von Kontakten",
-      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
+      "LIST": "Kontaktmanagerliste zum Zuordnen von Kontakten",
+      "MANDATORYDISPOSITION": "Obligatorische Disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Pause, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
       "MOTIONPROXY": "Das Feld muss das folgende Format haben: <Protokoll>: // <IP-Adresse> [: <Port>]. Beispiel: https: //X.Y.Z.W",
       "NAME": "Es werden nur Zahlen, Buchstaben und bestimmte Zeichen (._) unterstützt",
       "RECEIVEURL": "Dies ist die automatisch generierte API-Zeichenfolge, die Sie zum Empfangen der Nachrichten in Ihrem Konto von Ihrem WhatsApp Connector-Anbieter verwenden müssen (POST-Methode muss verwendet werden): Klicken Sie auf die Schaltfläche in der Zwischenablage, um sie zu kopieren",
-      "WELCOMEMESSAGE": "Dies ist die erste Antwortnachricht, welche bei einer neuen Interaktion gesendet wird"
+      "WELCOMEMESSAGE": "Dies ist die erste Antwortnachricht, die an neue Interaktionen gesendet wird"
     },
     "ACCESSKEYID": "Zugriffsschlüssel-ID",
-    "ACCOUNTSID": "Konto-ID",
+    "ACCOUNTSID": "Konto-SID",
     "ACTIONS": "Aktionen",
     "ADD_NOTE": "Notiz hinzufügen",
-    "ADD_WHATSAPPACCOUNT": "Whatsapp Konto konzufügen",
-    "ADD_WHATSAPPCANNEDANSWER": "Textvorlage hinzufügen",
-    "ADD_WHATSAPPDISPOSITION": "Whatsapp-Qualifizierung hinzufügen",
+    "ADD_WHATSAPPACCOUNT": "Hinzufügen",
+    "ADD_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
+    "ADD_WHATSAPPDISPOSITION": "WhatsApp Disposition hinzufügen",
     "ADD_WHATSAPPQUEUE": "WhatsApp-Warteschlange hinzufügen",
-    "ADVANCED": "Erweitert",
+    "ADVANCED": "Fortgeschrittene",
     "AGENT": "Agent",
-    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "AGENTADD_WHATSAPPACCOUNT": "Agenten zum WhatsApp-Konto hinzufügen",
-    "AGENTADD_WHATSAPPQUEUE": "Agenten zur WhatsApp-Warteschlange hinzufügen",
+    "AGENTADD_QUEUE": "Agent zur WhatsApp-Warteschlange hinzufügen",
+    "AGENTADD_WHATSAPPACCOUNT": "Agent zum WhatsApp-Konto hinzufügen",
+    "AGENTADD_WHATSAPPQUEUE": "Agent zur WhatsApp-Warteschlange hinzufügen",
     "AGENTS": "Agenten",
-    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "AGENTTRANSFER": "Transfer Agent",
-    "AGENTTRANSFERTIMEOUT": "Timeout Agententransfer",
-    "AGENT_TIMEOUT": "Timeout Agent",
+    "AGENTSADD_QUEUE": "Hinzufügen von Agenten zur WhatsApp-Warteschlange",
+    "AGENTTRANSFER": "Agententransfer",
+    "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung bei der Agentenübertragung",
+    "AGENT_TIMEOUT": "Agent Timeout",
     "ALL": "Alles",
     "ALL_AGENTS": "Alle Agenten",
     "ALL_TEAMS": "Alle Teams",
     "AUTHTOKEN": "Auth Token",
     "AUTOREPLY": "Automatische Antwort",
     "BACK": "Zurück",
-    "BOTNAME": "Botname",
+    "BOTNAME": "Bot Name",
     "BUSY": "Beschäftigt",
-    "CANNEDANSWERS": "Textvorlagen",
-    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
-    "CANNED_ANSWER_SEARCH": "Suchen nach Textvorlagen",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
+    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
+    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
     "CAPACITY": "Kapazität",
     "CLOSE": "Schließen",
     "CLOSED": "Geschlossen",
     "CLOSEMETHOD": "Methode schließen",
     "CLOSEURL": "URL schließen",
-    "COMMAND": "Eingabe",
+    "COMMAND": "Befehl",
     "CONDITION": "Bedingung",
     "CONTACT": "Kontakt",
-    "CREATED_AT": "Erstellt am",
-    "DEFAULT_PAUSE": "Standard Pause",
+    "CREATED_AT": "Hergestellt in",
+    "DEFAULT_PAUSE": "STANDARD PAUSE",
     "DELETE": "Löschen",
     "DELETE_INTERACTION": "Interaktion löschen",
     "DELETE_SELECTED": "Ausgewählte löschen",
     "DELETE_WHATSAPPACCOUNT": "WhatsApp-Konto löschen",
-    "DELETE_WHATSAPPCANNEDANSWER": "Textvorlage löschen",
-    "DELETE_WHATSAPPDISPOSITION": "Qualifizierung löschen",
+    "DELETE_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort löschen",
+    "DELETE_WHATSAPPDISPOSITION": "WhatsApp-Disposition löschen",
     "DELETE_WHATSAPPQUEUE": "WhatsApp-Warteschlange löschen",
     "DESCRIPTION": "Beschreibung",
     "DIALOGFLOW": "DialogFlow",
-    "DISPOSITION": "Qualifizierung",
-    "DISPOSITIONS": "Qualifizierungen",
-    "DOWNLOAD_INTERACTION": "Interaktion herunterladen",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterladen inkl. Anhänge",
-    "EDIT_AGENT": "Agenten bearbeiten",
-    "EDIT_AMAZONLEX": "Lex-Konfiguration bearbeiten",
+    "DISPOSITION": "Anordnung",
+    "DISPOSITIONS": "Dispositionen",
+    "DOWNLOAD_INTERACTION": "Herunterladen",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Ohne Anhänge herunterladen",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
+    "EDIT_AGENT": "Agent bearbeiten",
+    "EDIT_AMAZONLEX": "Bearbeiten Sie die Lex-Konfiguration",
     "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
-    "EDIT_CLOSE": "Bearbeitung abschließen",
-    "EDIT_DIALOGFLOW": "DialogFlow-Konfiguration bearbeiten",
-    "EDIT_GOTOIF": "GoToIf bearbeiten",
-    "EDIT_GOTOP": "GoTop bearbeiten",
+    "EDIT_CLOSE": "Bearbeiten Schließen",
+    "EDIT_DIALOGFLOW": "Bearbeiten Sie die DialogFlow-Konfiguration",
+    "EDIT_GOTOIF": "Bearbeiten Sie Gotoif",
+    "EDIT_GOTOP": "Gotop bearbeiten",
     "EDIT_NOOP": "Noop bearbeiten",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
     "EDIT_SYSTEM": "System bearbeiten",
     "EDIT_TAG": "Tag bearbeiten",
     "EDIT_WHATSAPPACCOUNT": "WhatsApp-Konto bearbeiten",
-    "EDIT_WHATSAPPCANNEDANSWER": "Textvorlage bearbeiten",
-    "EDIT_WHATSAPPDISPOSITION": "Whatsapp-Qualifizierung bearbeiten",
-    "EDIT_WHATSAPPQUEUE": "Whatsapp-Warteschlange bearbeiten",
-    "FALSEPRIORITY": "Priorität falsch",
-    "GENERAL": "Allgemein",
+    "EDIT_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort bearbeiten",
+    "EDIT_WHATSAPPDISPOSITION": "WhatsApp-Disposition bearbeiten",
+    "EDIT_WHATSAPPQUEUE": "Bearbeiten Sie die WhatsApp-Warteschlange",
+    "FALSEPRIORITY": "Falsche Priorität",
+    "GENERAL": "Allgemeines",
     "GOTOIF": "Gotoif",
     "GOTOP": "Zum Seitenanfang",
-    "GOTOREALTIME_WHATSAPPQUEUE": "Zur Echtzeitansicht gehen",
-    "GO_TO_WHATSAPPACCOUNTS": "Zum Whatsapp-Konto gehen",
-    "ID": "ID",
+    "GOTOREALTIME_WHATSAPPQUEUE": "Wechseln Sie zur WhatsApp-Warteschlange in Echtzeit",
+    "GO_TO_WHATSAPPACCOUNTS": "Gehe zu Konto",
+    "ID": "Ich würde",
     "IDLE": "Leerlauf",
     "INSERT_MESSAGE_HERE": "Nachricht hier einfügen",
     "INTERACTIONS": "Interaktionen",
-    "INTERACTIONS_WHATSAPPACCOUNT": "Zu Interaktionen gehen",
+    "INTERACTIONS_WHATSAPPACCOUNT": "Gehen Sie zu Interaktionen",
     "KEY": "Schlüssel",
     "LANGUAGE": "Sprache",
     "LASTMESSAGE": "Letzte Nachricht",
-    "LEXREGION": "LexRegion",
-    "LIST": "Liste",
-    "LOGGED_IN": "Eingeloggt",
+    "LEXREGION": "Region",
+    "LIST": "Aufführen",
+    "LOGGED_IN": "Eingeloggt (SIP verbunden)",
     "LOGIN_TIME": "Anmeldezeit",
     "LOGOUT": "Ausloggen",
-    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "Qualifizierung pausieren, sofern erforderlich",
+    "MANDATORYDISPOSITION": "Obligatorische Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Pause, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
     "MORE": "Mehr",
-    "MOTIONPROXY": "Proxy",
+    "MOTIONPROXY": "Proxy- oder Bewegungsdomäne",
     "MULTI_SELECT_TOGGLE": "Mehrfachauswahl umschalten",
     "NAME": "Name",
     "NEW_WHATSAPPACCOUNT": "Neues WhatsApp-Konto",
-    "NEW_WHATSAPPCANNEDANSWER": "Neue WhatsApp-Textvorlage",
-    "NEW_WHATSAPPDISPOSITION": "Neue WhatsApp-Quailifizierung",
+    "NEW_WHATSAPPCANNEDANSWER": "Neue vordefinierte WhatsApp-Antwort",
+    "NEW_WHATSAPPDISPOSITION": "Neue WhatsApp-Disposition",
     "NEW_WHATSAPPQUEUE": "Neue WhatsApp-Warteschlange",
     "NOOP": "Noop",
-    "NOTE": "Anmerkung",
+    "NOTE": "Hinweis",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Klingeln",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONSOUND": "Klang",
     "NOTIFICATIONTEMPLATE": "Vorlage",
     "NO_AGENT_ONLINE": "Kein Agent online",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
-    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
-    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
-    "NO_WHATSAPPDISPOSITION_AVAILABLE": "Keine Qualifizierungen verfügbar",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Informationen",
+    "NO_INTERACTION_AVAILABLE": "Keine Interaktionen verfügbar",
+    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "Keine vordefinierten WhatsApp-Antworten verfügbar",
+    "NO_WHATSAPPDISPOSITION_AVAILABLE": "Keine WhatsApp-Dispositionen verfügbar",
     "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Keine WhatsApp-Konten verfügbar",
     "OF": "von",
     "OPENED": "Geöffnet",
     "PROXY": "Proxy",
     "QUEUE": "Warteschlange",
     "QUEUES": "Warteschlangen",
-    "QUEUETRANSFER": "Transfer an Warteschlange",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangentransfer",
+    "QUEUETRANSFER": "Warteschlangenübertragung",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangenübertragung",
     "READY": "Bereit",
     "REALTIME": "Echtzeit",
-    "RECEIVEURL": "URL für Erhalt",
+    "RECEIVEURL": "URL erhalten",
     "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "REMOTE": "Remote",
+    "REMOTE": "Fernbedienung",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "SAVE": "Speichern",
+    "SAVE": "sparen",
     "SCREENRECORDING": "Bildschirmaufzeichnung verwalten",
     "SEARCH_FOR_ANYONE": "Suche",
-    "SECRETACCESSKEY": "Geheimer Schlüssel",
+    "SECRETACCESSKEY": "Zugriffsschlüsselgeheimnis",
     "SELECTED": "Ausgewählt",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "SELECTED_TEAMS": "Ausgewählte Teams",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_ALL": "Wählen Sie Alle",
+    "SELECT_NONE": "Nichts ausgewählt",
     "SEND": "Senden",
-    "SETTINGS": "Einstellungen",
-    "SPYINTERACTION": "Mitlesen",
-    "STARTEDAT": "Startdatum",
-    "START_SCREENRECORDING": "Bildschirmaufzeichnung starten",
+    "SETTINGS": "die Einstellungen",
+    "SPYINTERACTION": "Spionage-Interaktion",
+    "STARTEDAT": "Fing an bei",
+    "START_SCREENRECORDING": "Bildschirmaufnahme starten",
     "STATUS": "Status",
     "STOP_SCREENRECORDING": "Bildschirmaufzeichnung stoppen",
     "STRATEGY": "Strategie",
     "SYSTEM": "System",
-    "TAG": "Tag",
-    "TAGS": "Tags",
+    "TAG": "Etikett",
+    "TAGS": "Stichworte",
     "TEAMADD_WHATSAPPQUEUE": "Team zur WhatsApp-Warteschlange hinzufügen",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "TEAMS_ASSOCIATION": "Mannschaftsverband",
     "TEXT": "Text",
-    "TIMEOUT": "Zeitüberschreitung",
+    "TIMEOUT": "Auszeit",
     "TIMER": "Timer",
-    "TIMES": "Zeiten",
-    "TO": "an",
-    "TOKEN": "Token",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
-    "TRANSFER": "Weiterleiten",
+    "TIMES": "Mal",
+    "TO": "Zu",
+    "TOKEN": "Zeichen",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
+    "TRANSFER": "Transfer",
     "TRUEPRIORITY": "Wahre Priorität",
-    "TYPE": "Typ",
+    "TYPE": "Art",
     "UNPAUSE": "Pause beenden",
     "VALUE": "Wert",
     "VARIABLE": "Variable",
-    "WAITFORTHEASSIGNEDAGENT": "Auf den zugewiesenen Mitarbeiter warten",
+    "WAITFORTHEASSIGNEDAGENT": "Warten Sie auf den zugewiesenen Agenten",
     "WAITING": "Warten",
     "WELCOMEMESSAGE": "Willkommensnachricht",
     "WHATSAPP": "WhatsApp Connector",
     "WHATSAPPACCOUNTS": "WhatsApp-Konten",
-    "WHATSAPPCANNEDANSWERS": "WhatsApp-Textvorlagen",
-    "WHATSAPPDISPOSITIONS": "WhatsApp-Qualifizierungen",
+    "WHATSAPPCANNEDANSWERS": "WhatsApp vordefinierte Antworten",
+    "WHATSAPPDISPOSITIONS": "WhatsApp Dispositionen",
     "WHATSAPPQUEUES": "WhatsApp-Warteschlangen",
-    "CLIENTEMAIL": "Kunden E-Mail",
+    "CLIENTEMAIL": "Kunden-E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privater Schlüssel",
+    "PRIVATEKEY": "Privat Schlüssel",
     "PROJECTID": "Projekt-ID"
   }
 }
index 8ac07bf..0920067 100644 (file)
     "LASTMESSAGE": "Last Message",
     "LEXREGION": "Region",
     "LIST": "List",
-    "LOGGED_IN": "Logged In",
+    "LOGGED_IN": "Logged In (SIP Connected)",
     "LOGIN_TIME": "Login Time",
     "LOGOUT": "Logout",
     "MANDATORYDISPOSITION": "Mandatory Disposition",
index a7cb714..03aafb4 100644 (file)
     "LASTMESSAGE": "Ultimo mensaje",
     "LEXREGION": "Región",
     "LIST": "Lista",
-    "LOGGED_IN": "Conectado",
+    "LOGGED_IN": "Conectado (SIP conectado)",
     "LOGIN_TIME": "Hora de inicio de sesión",
     "LOGOUT": "Cerrar sesión",
     "MANDATORYDISPOSITION": "Tipificación obligatoria",
index c40e5bd..5ff75f9 100644 (file)
     "LASTMESSAGE": "Viimane sõnum",
     "LEXREGION": "Piirkond",
     "LIST": "Loend",
-    "LOGGED_IN": "Sisse logitud",
+    "LOGGED_IN": "Sisse logitud (SIP ühendatud)",
     "LOGIN_TIME": "Sisselogimise aeg",
     "LOGOUT": "Logi välja",
     "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
index 76a3444..2bfad68 100644 (file)
     "LASTMESSAGE": "آخرین پیام",
     "LEXREGION": "منطقه",
     "LIST": "لیست",
-    "LOGGED_IN": "ورود به سیستم",
+    "LOGGED_IN": "ورود به سیستم (SIP متصل)",
     "LOGIN_TIME": "زمان ورود",
     "LOGOUT": "خروج",
     "MANDATORYDISPOSITION": "اختیار اجباری",
index 52f4f20..647eabf 100644 (file)
     "LASTMESSAGE": "Viimeinen viesti",
     "LEXREGION": "alue",
     "LIST": "Lista",
-    "LOGGED_IN": "Sisäänkirjautunut",
+    "LOGGED_IN": "Sisäänkirjautunut (SIP kytketty)",
     "LOGIN_TIME": "Sisäänkirjautumisaika",
     "LOGOUT": "Kirjautua ulos",
     "MANDATORYDISPOSITION": "Pakollinen sijoittaminen",
index 919bb35..b2e331a 100644 (file)
     "LASTMESSAGE": "Dernier message",
     "LEXREGION": "Région",
     "LIST": "liste",
-    "LOGGED_IN": "Connecté",
+    "LOGGED_IN": "Connecté (SIP connecté)",
     "LOGIN_TIME": "Heure de connexion",
     "LOGOUT": "Se déconnecter",
     "MANDATORYDISPOSITION": "Disposition obligatoire",
index a6c765d..00d0fa4 100644 (file)
     "LASTMESSAGE": "הודעה אחרונה",
     "LEXREGION": "אזור",
     "LIST": "רשימה",
-    "LOGGED_IN": "מחובר",
+    "LOGGED_IN": "מחובר (SIP מחובר)",
     "LOGIN_TIME": "זמן כניסה",
     "LOGOUT": "להתנתק",
     "MANDATORYDISPOSITION": "התנהגות חובה",
index 0550a1a..819f531 100644 (file)
     "LASTMESSAGE": "आखिरी सन्देश",
     "LEXREGION": "क्षेत्र",
     "LIST": "सूची",
-    "LOGGED_IN": "लॉग इन",
+    "LOGGED_IN": "लॉग इन (SIP कनेक्टेड)",
     "LOGIN_TIME": "लॉग इन टाइम",
     "LOGOUT": "लॉग आउट",
     "MANDATORYDISPOSITION": "अनिवार्य विवाद",
index 246085c..b2e703c 100644 (file)
     "LASTMESSAGE": "Pesan Terakhir",
     "LEXREGION": "Wilayah",
     "LIST": "Daftar",
-    "LOGGED_IN": "Masuk",
+    "LOGGED_IN": "Masuk (SIP Terhubung)",
     "LOGIN_TIME": "Waktu Login",
     "LOGOUT": "Keluar",
     "MANDATORYDISPOSITION": "Disposisi Wajib",
index d23db62..0350e8d 100644 (file)
     "LASTMESSAGE": "最後のメッセージ",
     "LEXREGION": "領域",
     "LIST": "リスト",
-    "LOGGED_IN": "ログイン済み",
+    "LOGGED_IN": "ログイン済み(SIP接続済み)",
     "LOGIN_TIME": "ログイン時間",
     "LOGOUT": "ログアウト",
     "MANDATORYDISPOSITION": "強制処分",
index 53a3344..d6c34e1 100644 (file)
     "LASTMESSAGE": "마지막 메시지",
     "LEXREGION": "부위",
     "LIST": "명부",
-    "LOGGED_IN": "로그인 됨",
+    "LOGGED_IN": "로그인 됨 (SIP 연결됨)",
     "LOGIN_TIME": "로그인 시간",
     "LOGOUT": "로그 아웃",
     "MANDATORYDISPOSITION": "필수 처분",
index a074057..282dd81 100644 (file)
     "LASTMESSAGE": "Paskutinė žinutė",
     "LEXREGION": "Regionas",
     "LIST": "Sąrašas",
-    "LOGGED_IN": "Prisijungęs",
+    "LOGGED_IN": "Prisijungęs (prijungtas prie SIP)",
     "LOGIN_TIME": "Prisijungimo laikas",
     "LOGOUT": "Atsijungti",
     "MANDATORYDISPOSITION": "Privalomas nusistatymas",
index fb7beca..2389947 100644 (file)
     "LASTMESSAGE": "Pēdējā ziņa",
     "LEXREGION": "Novads",
     "LIST": "Saraksts",
-    "LOGGED_IN": "Pieteicies",
+    "LOGGED_IN": "Pieteicies (savienots ar SIP)",
     "LOGIN_TIME": "Pieteikšanās laiks",
     "LOGOUT": "Izlogoties",
     "MANDATORYDISPOSITION": "Obligāta rīcība",
index 5eed559..85a42ac 100644 (file)
     "LASTMESSAGE": "Laatste bericht",
     "LEXREGION": "Regio",
     "LIST": "Lijst",
-    "LOGGED_IN": "Ingelogd",
+    "LOGGED_IN": "Ingelogd (SIP verbonden)",
     "LOGIN_TIME": "Login Tijd",
     "LOGOUT": "Uitloggen",
     "MANDATORYDISPOSITION": "Verplichte dispositie",
index efdafa2..b8c8675 100644 (file)
     "LASTMESSAGE": "Siste melding",
     "LEXREGION": "Region",
     "LIST": "Liste",
-    "LOGGED_IN": "Logget inn",
+    "LOGGED_IN": "Logget inn (SIP-tilkoblet)",
     "LOGIN_TIME": "Innloggingstid",
     "LOGOUT": "Logg ut",
     "MANDATORYDISPOSITION": "Obligatorisk disposisjon",
index 510b8e5..da5dad6 100644 (file)
     "LASTMESSAGE": "Ostatnia wiadomość",
     "LEXREGION": "Region",
     "LIST": "Lista",
-    "LOGGED_IN": "Zalogowano",
+    "LOGGED_IN": "Zalogowano (połączenie SIP)",
     "LOGIN_TIME": "Czas logowania",
     "LOGOUT": "Wyloguj",
     "MANDATORYDISPOSITION": "Obowiązkowa dyspozycja",
index 29fd2ec..ec3412a 100644 (file)
     "LASTMESSAGE": "Última mensagem",
     "LEXREGION": "Região",
     "LIST": "Lista",
-    "LOGGED_IN": "Conectado",
+    "LOGGED_IN": "Conectado (SIP conectado)",
     "LOGIN_TIME": "Hora de Login",
     "LOGOUT": "Sair",
     "MANDATORYDISPOSITION": "Disposição Obrigatória",
index 29fd2ec..ec3412a 100644 (file)
     "LASTMESSAGE": "Última mensagem",
     "LEXREGION": "Região",
     "LIST": "Lista",
-    "LOGGED_IN": "Conectado",
+    "LOGGED_IN": "Conectado (SIP conectado)",
     "LOGIN_TIME": "Hora de Login",
     "LOGOUT": "Sair",
     "MANDATORYDISPOSITION": "Disposição Obrigatória",
index 5131899..87a083a 100644 (file)
     "LASTMESSAGE": "Последнее сообщение",
     "LEXREGION": "Область",
     "LIST": "Список",
-    "LOGGED_IN": "Авторизован",
+    "LOGGED_IN": "Авторизован (SIP подключен)",
     "LOGIN_TIME": "Время входа",
     "LOGOUT": "Выйти",
     "MANDATORYDISPOSITION": "Обязательное распоряжение",
index ae13a80..f4f2b7e 100644 (file)
     "LASTMESSAGE": "Senaste meddelandet",
     "LEXREGION": "Område",
     "LIST": "Lista",
-    "LOGGED_IN": "Inloggad",
+    "LOGGED_IN": "Inloggad (SIP ansluten)",
     "LOGIN_TIME": "Inloggningstid",
     "LOGOUT": "Logga ut",
     "MANDATORYDISPOSITION": "Obligatorisk disposition",
index da1b4f9..e867462 100644 (file)
     "LASTMESSAGE": "Son Mesaj",
     "LEXREGION": "bölge",
     "LIST": "Liste",
-    "LOGGED_IN": "Oturum Açıldı",
+    "LOGGED_IN": "Oturum Açıldı (SIP Bağlı)",
     "LOGIN_TIME": "Giriş Zamanı",
     "LOGOUT": "Çıkış Yap",
     "MANDATORYDISPOSITION": "Zorunlu Elden Çıkarma",
index 4804111..b81f80a 100644 (file)
     "LASTMESSAGE": "最后留言",
     "LEXREGION": "地区",
     "LIST": "清单",
-    "LOGGED_IN": "已登录",
+    "LOGGED_IN": "已登录(已连接SIP)",
     "LOGIN_TIME": "登录时间",
     "LOGOUT": "登出",
     "MANDATORYDISPOSITION": "强制性",
index 6d85da7..cb5a2ee 100644 (file)
     "LASTMESSAGE": "最後留言",
     "LEXREGION": "地區",
     "LIST": "清單",
-    "LOGGED_IN": "已登錄",
+    "LOGGED_IN": "已登錄(已連接SIP)",
     "LOGIN_TIME": "登錄時間",
     "LOGOUT": "登出",
     "MANDATORYDISPOSITION": "強制性",
index fd8ccd9..3162f7a 100644 (file)
     "CHAT": "CHAT",
     "ACTIVITY": "Aktivität",
     "FRIENDS": "Freunde",
-    "APP_SERVERS": "Server Anwendung",
-    "USER_STATS": "Benutzer Statistiken",
-    "EVENTS": "Ereignisse",
-    "NOTES": "Notizen",
-    "QUICK_SETTINGS": "Schnelleinstellungen",
+    "APP_SERVERS": "Anwendungsserver",
+    "USER_STATS": "Benutzer Stats",
+    "EVENTS": "Veranstaltungen",
+    "NOTES": "Hinweise",
+    "QUICK_SETTINGS": "Schnelle Einstellungen",
     "NOTIFICATIONS": "Benachrichtigungen",
     "CLOUD_SYNC": "Cloud Synchronisieren",
-    "RETRO_THRUSTERS": "Retro Thrusters",
-    "RECENT": "Neuste",
+    "RETRO_THRUSTERS": "Retro Triebwerke",
+    "RECENT": "Die jüngsten",
     "START_NEW_CHAT": "Neuen Chat starten",
     "BACK": "Zurück",
-    "CALL": "Anrufen",
+    "CALL": "Anruf",
     "MORE": "Mehr",
     "SEND_MESSAGE": "Nachricht senden",
-    "REPLY_PLACEHOLDER": "Nachricht eingeben und Enter drücken zum Senden",
-    "CONTACT_XCALLY_MOTION_SUPPORT": "Support kontaktieren",
+    "REPLY_PLACEHOLDER": "Geben Sie ein, und drücken Sie die Eingabetaste, um Nachricht senden",
+    "CONTACT_XCALLY_MOTION_SUPPORT": "Kontakt xCALLY Motion Support",
     "EXPIRATION_DATE": "Ablaufdatum",
     "EXPIRATION_REASON": "Ablauf Grund",
     "LICENSE": "Lizenz",
-    "NEW_TOKEN": "Neuer Token",
-    "OLD_TOKEN": "Alter Token",
+    "NEW_TOKEN": "Neue Token",
+    "OLD_TOKEN": "Alte Token",
     "SEND_EMAIL_TO": "E-Mail senden an",
     "TOKEN": "Token",
-    "EXPIRATION_REASON_MESSAGE": "Ihre Lizenz ist abgelaufen oder Ihre eindeutige ID wurde aufgrund einer Änderung an Ihrem System aktualisiert. Bitte den Support kontaktieren",
-    "GRAY_PERIOD_EXPIRATION": "Ablauf Testphase",
+    "EXPIRATION_REASON_MESSAGE": "Ihre Lizenz ist abgelaufen oder Ihre Maschine eindeutige Id wurde aufgrund einer Änderung an Ihrem System aktualisiert. Die xCALLY Motion Support Team Ihre alte und Ihre neue uuid senden Kontakt.",
+    "GRAY_PERIOD_EXPIRATION": "Grau Zeitraum Ablauf",
     "ERRORS": {
       "NAME_REQUIRED": "Pflichtfeld"
     },
-    "EXPIRATION_GRAY_PERIOD": "Ablauf Testphase",
-    "NO_AVAILABLE_GROUPS": "Keine Gruppen verfügbar",
-    "SAVE": "Speichern",
-    "INFO": "Information",
+    "EXPIRATION_GRAY_PERIOD": "Ablauf Grauzeit",
+    "NO_AVAILABLE_GROUPS": "Keine verfügbaren Gruppen",
+    "SAVE": "sparen",
+    "INFO": "Info",
     "NEW_CHATGROUP": "Neue Gruppe",
     "NAME": "Name",
     "MEMBERS": "Mitglieder",
@@ -65,9 +65,9 @@
     "DELETE": "Löschen",
     "SEARCH": "Suche",
     "USERS": "Benutzer",
-    "EXPIRATION_REASON_MESSAGE_GRAY": "Ihre Lizenz ist abgelaufen oder wurde deaktiviert. Bitte den Support kontaktieren.",
-    "EXPIRATION_REASON_MESSAGE_CHANGED": "Ihre Lizenz ist abgelaufen oder Ihre eindeutige ID wurde aufgrund einer Änderung an Ihrem System aktualisiert. Bitte den Support kontaktieren",
-    "MESSENGER_DISABLED": "Internes Messaging für diesen Benutzer nicht aktiviert",
+    "EXPIRATION_REASON_MESSAGE_GRAY": "Ihre Lizenz ist abgelaufen oder wurde deaktiviert. Kontaktieren Sie xCALLY Motion Support Team.",
+    "EXPIRATION_REASON_MESSAGE_CHANGED": "Die eindeutige ID Ihres Rechners wurde aufgrund einer Änderung Ihres Systems aktualisiert. Kontaktieren Sie xCALLY Motion Support Team, das sowohl Ihren alten als auch Ihren neuen UUID sendet.",
+    "MESSENGER_DISABLED": "Das interne Messaging ist für diesen Agenten deaktiviert!",
     "WARNING": "Warnung"
   }
 }
index 6eb58fc..1d7248b 100644 (file)
@@ -1,20 +1,20 @@
 {
   "RESETPASSWORD": {
-    "TITLE": "Passwort zurücksetzen",
-    "EMAIL_ADRESS": "E-Mail Adresse",
-    "PASSWORD": "Passwort",
-    "PASSWORD_CONFIRM": "Passwort bestätigen",
-    "UPDATE_PASSWORD": "Passwort zurücksetzen",
+    "TITLE": "Ihr Kennwort zurücksetzen",
+    "EMAIL_ADRESS": "E-mail Adresse",
+    "PASSWORD": "Kennwort",
+    "PASSWORD_CONFIRM": "Kennwort (bestätigen)",
+    "UPDATE_PASSWORD": "Kennwort zurücksetzen",
     "GO_BACK": "Zurück zum Login",
-    "PASSWORD_RESET": "Passwort zurücksetzen",
-    "PASSWORD_RESET_MESSAGE": "Das Passwort wurde erfolgreich zurückgesetzt. Sie können sich nun erneut anmelden",
-    "PASSWORD_RESET_ERROR": "Fehler beim Zurücksetzen des Passwortes",
+    "PASSWORD_RESET": "Kennwort zurücksetzen",
+    "PASSWORD_RESET_MESSAGE": "Ihr Passwort wurde korrekt zurückgesetzt wurde, können Sie sich jetzt!",
+    "PASSWORD_RESET_ERROR": "Passwort Fehler zurücksetzen",
     "ERRORS": {
-      "EMAIL_REQUIRED": "E-Mail Adresse erfoderlich",
-      "EMAIL_MUST_VALID": "E-Mail Adresse ungültig",
-      "PASSWORD_REQUIRED": "Passwort erforderlich",
+      "EMAIL_REQUIRED": "Im Feld \"E-Mail ist erforderlich",
+      "EMAIL_MUST_VALID": "E-Mail muss eine gültige e-mail Adresse",
+      "PASSWORD_REQUIRED": "Kennwort Feld ist erforderlich.",
       "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein.",
-      "SECURE_PASSWORD_PATTERN": "Muss mindestens 8 Zeichen enthalten, Minimum von 1 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen ~!?*@#$%^&-_=+[{]}."
+      "SECURE_PASSWORD_PATTERN": "Muss mindestens 8 Zeichen enthalten, mit einem Minimum von 1 Kleinbuchstaben, Großbuchstaben, 1 numerisches und 1 Sonderzeichen ~!?*@#$%^&-_=+[{]}."
     }
   }
 }
index b6abdf2..a399ee6 100644 (file)
@@ -1,11 +1,11 @@
 {
   "TOOLBAR": {
-    "TOGGLE_NAVIGATION": "Navigation umschalten",
-    "TOGGLE_NAVIGATION_FOLD": "Navigation einklappen",
-    "TOGGLE_NAVIGATION_MODE": "Navigation Moduswechsel",
+    "TOGGLE_NAVIGATION": "Navigation wechseln",
+    "TOGGLE_NAVIGATION_FOLD": "Navigation wechseln Fach",
+    "TOGGLE_NAVIGATION_MODE": "Navigation Modus umschalten",
     "SEARCH": "Suche",
-    "USER_SETTINGS": "Nutzereinstellungen",
-    "TOGGLE_QUICK_PANEL": "Schnelles Panel umschalten",
+    "USER_SETTINGS": "Benutzereinstellungen",
+    "TOGGLE_QUICK_PANEL": "Um schnelle Panel",
     "ENGLISH": "Englisch",
     "ITALIAN": "Italienisch",
     "FRENCH": "Französisch",
     "CHINESESIMPLIFIED": "Vereinfachtes Chinesisch",
     "CHINESETRADITIONAL": "Traditionelles Chinesisch",
     "DUTCH": "Niederländisch",
-    "FINNISH": "Finnisch",
+    "FINNISH": "Finnische",
     "DANISH": "Dänisch",
     "PORTUGUESE": "Portugiesisch",
     "NORWEGIAN": "Norwegisch",
     "HINDI": "Hindi",
     "TURKISH": "Türkisch",
     "PERSIAN": "Persisch",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
+    "LOGIN_TIME": "Login Zeit",
+    "PAUSE_TIME": "Pausenzeit",
     "PREVIEW": "Vorschau",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "NEW_PASSWORD": "Neues Passwort",
     "OLD_PASSWORD": "Altes Passwort",
     "SAVE": "Speichern",
     "TRIAL_VERSION": "Testversion",
-    "SOMEONE_LOGGED_YOU_OUT": "Sie wurden von einem anderen Benutzer abgemeldet. Erneut anmelden?",
+    "SOMEONE_LOGGED_YOU_OUT": "Jemand eingeloggt haben, möchten Sie angemeldet bleiben?",
     "STAY_LOGGED": "Angemeldet bleiben",
     "WARNING": "Warnung",
     "PAUSE": "Pause",
-    "RESUME": "Fortsetzen",
-    "NO_PAUSES_AVAILABLE": "Keine Pausen verfügbar",
-    "LATVIAN": "Lettisch",
+    "RESUME": "Lebenslauf",
+    "NO_PAUSES_AVAILABLE": "Keine Pausen zur Verfügung",
+    "LATVIAN": "Lettische",
     "POLISH": "Polnisch",
     "ERRORS": {
       "FIELD_REQUIRED": "Pflichtfeld",
       "PASSWORD_REQUIRED": "Pflichtfeld",
       "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
-      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstaben, 1 Großbuchstaben, 1 Zahl und 1 Sonderzeichen enthalten.",
-      "PASSWORD_OLDPASSWORD_MATCH": "Die Passwörter stimmen nicht überein"
+      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen haben ~! @",
+      "PASSWORD_OLDPASSWORD_MATCH": "Das neue Passwort muss sich vom vorherigen Passwort unterscheiden"
     },
     "RESETPASSWORD": "Passwort zurücksetzen",
-    "PASSWORD_EXPIRE_REMAINING_DAYS": "Verbleibende Tage, bis zum Ablauf des Passwortes",
+    "PASSWORD_EXPIRE_REMAINING_DAYS": "Verbleibende Tage, bevor Ihr Passwort abläuft",
     "BROWSER_COMPATIBILITY": "Browserkompatibilität [Chrome, Opera, Safari]",
     "RECORDING": "Aufzeichnung",
-    "INVALID_LICENSE": "Lizenz ungültig",
+    "INVALID_LICENSE": "Ungültige Lizenz",
     "BROWSER": "Browser",
     "OS": "Betriebssystem",
-    "REQUIREMENTS": "Anforderungen",
+    "REQUIREMENTS": "Bedarf",
     "LICENSE": "Lizenz",
     "HTTPS": "HTTPS",
     "WEBRTCSUPPORT": "WebRTC-Unterstützung",
-    "REGISTERED": "Registriert",
+    "REGISTERED": "Eingetragen",
     "NOT_REGISTERED": "Nicht registriert",
-    "WEBRTC_LICENSE_NOT_ENABELD": "WebRTC-Lizenz ist nicht aktiviert",
-    "ATTENDED_TRANSFER": "Warmer Transfer",
+    "WEBRTC_LICENSE_NOT_ENABELD": "Die WebRTC-Lizenz ist nicht aktiviert",
+    "ATTENDED_TRANSFER": "Begleiteter Tranfer",
     "TRANSFER": "Transfer",
     "TARGET": "Ziel",
-    "CANCEL": "Abbrechen",
+    "CANCEL": "Stornieren",
     "FILENAME": "Dateiname",
     "STATUS": "Status",
     "ACTIONS": "Aktionen",
-    "SPEAKER": "Lautsprecher",
-    "RINGING": "Klingeln",
+    "SPEAKER": "Redner",
+    "RINGING": "Klingelton",
     "MICROPHONE": "Mikrofon",
     "PROFILE": "Profil",
-    "SERVICES": "Dienste",
+    "SERVICES": "Dienstleistungen",
     "AUDIO": "Audio",
     "FULLNAME": "Vollständiger Name",
     "NAME": "Name",
     "INTERNAL": "Intern",
-    "RINGINGDEVICE": "Klingeln auf Gerät",
-    "SPEAKERDEVICE": "Verwendeter Lautsprecher",
-    "MICROPHONEDEVICE": "Verwendetes Mikrofon",
+    "RINGINGDEVICE": "Klingelgerät",
+    "SPEAKERDEVICE": "Lautsprechergerät",
+    "MICROPHONEDEVICE": "Mikrofon Gerät",
     "CHANGEPASSWORD": "Passwort ändern",
-    "SETTINGS": "Einstellungen",
+    "SETTINGS": "die Einstellungen",
     "AUTOANSWER": "Automatische Antwort",
     "INDONESIAN": "Indonesisch",
     "ARABIC": "Arabisch",
-    "CALL": "Anrufen",
+    "CALL": "Anruf",
     "PREFIXES": "Präfixe",
     "HEBREW": "Hebräisch",
-    "ESTONIAN": "Estnisch",
+    "ESTONIAN": "estnisch",
     "CZECH": "Tschechisch",
-    "BRAZILIAN": "Brasilianisch",
-    "CONFERENCE": "Konferenz mit 2 aktiven Sitzungen",
-    "CHANGE_LANGUAGE_MESSAGE": "Bitte Seite aktualisieren, um Änderungen zu übernehmen",
+    "BRAZILIAN": "Brasilianer",
+    "CONFERENCE": "Konferenz mit 2 aktiven Sessions",
+    "CHANGE_LANGUAGE_MESSAGE": "Denken Sie daran, die Seite zu aktualisieren, um die RTL-Unterstützung anzuwenden (falls aktiviert).",
     "CHANGE_LANGUAGE_TITLE": "Sprache ändern",
     "WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "Keine Audiogeräte verfügbar",
     "WEBRTC_MICROPHONE_NOT_AVAILABLE": "Kein Mikrofon vorhanden",
     "WEBRTC_SPEAKER_NOT_AVAILABLE": "Kein Lautsprecher verfügbar",
     "NO_AVAILABLE_INFO": "Keine verfügbaren Informationen",
-    "LITHUANIAN": "Litauisch",
+    "LITHUANIAN": "litauisch",
     "NOTIFICATION_TITLE": "Neue Benachrichtigung von {{Absender}}",
     "NOTIFICATION_TITLE_RECIPIENT": "an {{Empfänger}}",
     "USER_FORCE_LOGOUT": "{{ip}} hat sich mit Ihren Anmeldeinformationen angemeldet.\nMehrfachanmeldungen sind nicht zulässig",
index e55bd75..4f9ba95 100644 (file)
@@ -16,7 +16,7 @@
 
   <link rel="stylesheet" href="styles/vendor.def00a0c.css">
 
-  <link rel="stylesheet" href="styles/app.54f03ce6.css">
+  <link rel="stylesheet" href="styles/app.0b303223.css">
 
   <!-- <link href='//fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700italic,700,900,900italic'
               rel='stylesheet' type='text/css'> -->
@@ -68,7 +68,7 @@
   <script src="assets/plugins/angular-material-form-builder/dist/angular-material-form-builder.min.js"></script>
   <!-- ANGULAR-MATERIAL-FORM-BUILDER -->
 
-  <script src="scripts/app.a4ec9e48.js"></script>
+  <script src="scripts/app.b7a358c4.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 54%
rename from public/scripts/app.a4ec9e48.js
rename to public/scripts/app.b7a358c4.js
index af604eb..3d6c0d3 100644 (file)
@@ -1 +1 @@
-!function(){"use strict";angular.module("app.auth",[])}(),function(){"use strict";angular.module("app.core",["ngAnimate","ngAria","ngCookies","ngMessages","ngResource","ngSanitize","ngMaterial","pascalprecht.translate","ui.router","ui.router.state.events","gridster","ds.clock","angucomplete-alt"])}(),function(){"use strict";function e(e,n){e.state("app.errors_error-404",{url:"/errors/error-404",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-404":{templateUrl:"app/errors/404/error-404.html",controller:"Error404Controller as vm"}},params:{status:404,statusText:"",data:{},config:{}},bodyClass:"error-404"}),n.addPart("app/errors/404")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-404",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.errors_error-500",{url:"/errors/error-500",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-500":{templateUrl:"app/errors/500/error-500.html",controller:"Error500Controller as vm"}},params:{status:500,statusText:"",data:{},config:{}},bodyClass:"error-500"}),n.addPart("app/errors/500")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-500",[]).config(e)}(),function(){"use strict";angular.module("app.errors",["app.errors.error-404","app.errors.error-500"])}(),function(){"use strict";function e(e){e.addPart("app/footer")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.footer",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.forgot",{url:"/forgot",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.forgot":{templateUrl:"app/forgot/forgot.html",controller:"ForgotPasswordController as vm"}},bodyClass:"forgot"}),n.addPart("app/forgot")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.forgot",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/header")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.header",[]).config(e)}(),function(){"use strict";angular.module("motion",["angular-toasty","app.core","app.auth","app.navigation","app.toolbar","app.quick-panel","app.header","app.footer","app.dashboards","app.staff","app.contactmanager","app.voice","app.chat","app.mail","app.sms","app.openchannel","app.fax","app.tools","app.callysquare","app.analytics","app.integrations","app.settings","app.motiondialer","app.help","app.jscripty","app.marketplace","app.plugins","app.video","app.whatsapp","app.login","app.forgot","app.reset","app.errors"])}(),function(){"use strict";function e(e,n){e.state("app.login",{url:"/login?token&userId",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.login":{templateUrl:"app/login/login.html",controller:"LoginController as vm"}},bodyClass:"login"}),n.addPart("app/login")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.login",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.analytics",{abstract:!0,url:"/analytics"}).state("app.analytics.metrics",{url:"/metrics",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/metrics/metrics.html",controller:"MetricsController as vm"}},resolve:{metrics:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticMetric@get",{fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Metrics",fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1201})}]},authenticate:!0,permissionId:1201,bodyClass:"analytics"}).state("app.analytics.extractedReports",{url:"/extractedReports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/extractedReports/extractedReports.html",controller:"ExtractedReportsController as vm"}},resolve:{extractedReports:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticExtractedReport@get",{fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ExtractedReports",fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1202})}]},authenticate:!0,permissionId:1202,bodyClass:"analytics"}),n.addPart("app/main/apps/analytics")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.analytics",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.analytics.reports"]).config(e)}(),function(){"use strict";function e(e){e.state("app.analytics.reports",{url:"/reports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/reports.html",controller:"ReportsController as vm"}},resolve:{treeReports:["apiResolver",function(e){return e.resolve("analyticTreeReport@get",{fields:"id,tree",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"}).state("app.analytics.reports.edit",{url:"/:id?tab",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/edit/view.html",controller:"ReportController as vm"}},resolve:{report:["apiResolver","$stateParams","$q","describeTable",function(e,n,a,i){var s;return e.resolve("analyticCustomReport@get",{fields:"createdAt,updatedAt,id,name,description,table,conditions,joins",id:n.id}).then(function(e){var n=[];if((s=e).joins)try{s.joins=JSON.parse(s.joins);for(var t=0;t<s.joins.length;t+=1)n.push(i.getColumns(s.joins[t].foreignTable))}catch(e){console.log(e)}return a.all(n)}).then(function(e){for(var n=0;n<e.length;n+=1)s.joins[n].foreignTableFields=_.difference(_.keys(e[n]),["$promise","$resolved"]);return s})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"})}e.$inject=["$stateProvider"],angular.module("app.analytics.reports",["ngJsTree"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.callysquare",{abstract:!0,url:"/callysquare"}).state("app.callysquare.odbcs",{url:"/odbcs",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/odbcs/odbcs.html",controller:"OdbcsController as vm"}},resolve:{odbcs:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1101})}]},authenticate:!0,permissionId:1101,bodyClass:"callysquare"}).state("app.callysquare.squareRecordings",{url:"/squareRecordings",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",controller:"SquareRecordingsController as vm"}},resolve:{squareRecordings:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareRecording@get",{fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareRecordings",fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadCallySquareRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1102})}]},authenticate:!0,permissionId:1102,bodyClass:"callysquare"}),n.addPart("app/main/apps/callysquare")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.callysquare",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.callysquare.projects"]).config(e)}(),function(){"use strict";function e(e){e.state("app.callysquare.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/projects.html",controller:"ProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"}).state("app.callysquare.projects.edit",{url:"/:id",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/edit/view.html",controller:"ProjectController as vm"}},params:{crudPermissions:void 0},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("squareProject@get",{id:n.id})}],users:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,role",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Users",mergeResources:!0,fields:"id,fullname,role",sort:"name",nolimit:!0})}],trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",sort:"name",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",type:"inbound",fields:"id,name",sort:"name",nolimit:!0})}],sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"id,name",sort:"name",nolimit:!0})}],variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"id,name",sort:"name",nolimit:!0})}],databases:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"id,name",sort:"name",nolimit:!0})}],projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name",sort:"name",nolimit:!0})}],contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"id,name",sort:"name",nolimit:!0})}],intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"id,name,IntervalId",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"id,name,IntervalId",sort:"name",nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"name",nolimit:!0})}],templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"id,name",sort:"name",nolimit:!0})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"name",nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"name",nolimit:!0})}],pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"id,name",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"})}e.$inject=["$stateProvider"],angular.module("app.callysquare.projects",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.chat",{abstract:!0,url:"/chat"}).state("app.chat.chatQueues",{url:"/chatQueues",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/chatQueues.html",controller:"ChatQueuesController as vm"}},resolve:{chatQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatQueues.edit",{url:"/:id?tab",params:{chatQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/edit/view.html",controller:"ChatQueueController as vm"}},resolve:{chatQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatWebsites",{url:"/chatWebsites",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/chatWebsites.html",controller:"ChatWebsitesController as vm"}},resolve:{chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}).state("app.chat.chatWebsites.edit",{url:"/:id?tab",params:{chatWebsite:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/edit/view.html",controller:"ChatWebsiteController as vm"}},resolve:{chatWebsite:["apiResolver","$stateParams",function(e,n){return e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),n.addPart("app/main/apps/chat")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.chat",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.chat.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.chat.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/chat/views/realtime/realtime.html",controller:"ChatRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:510})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.agents",{url:"/agents",controller:"AgentsChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",controller:"QueuesChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return a=e,n.resolve("rpc@getVoiceQueues")}).then(function(e){if(e)for(var n,t=0;t<e.rows.length;t+=1)(n=_.find(a.rows,{id:e.rows[t].id}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged","abandoned"]));return a})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:100})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth",function(e,n,t){return t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.mail",{url:"/mail",data:{selectedTab:3},views:{mail:{templateUrl:"app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",controller:"UserMailDashboardGeneralController as vm"}},resolve:{mailInteractions:["apiResolver",function(e){return e.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.sms",{url:"/sms",data:{selectedTab:4},views:{sms:{templateUrl:"app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",controller:"UserSmsDashboardGeneralController as vm"}},resolve:{smsInteractions:["apiResolver",function(e){return e.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.openchannel",{url:"/openchannel",data:{selectedTab:5},views:{openchannel:{templateUrl:"app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",controller:"UserOpenchannelDashboardGeneralController as vm"}},resolve:{openchannelInteractions:["apiResolver",function(e){return e.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.fax",{url:"/fax",data:{selectedTab:6},views:{fax:{templateUrl:"app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",controller:"UserFaxDashboardGeneralController as vm"}},resolve:{faxInteractions:["apiResolver",function(e){return e.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.whatsapp",{url:"/whatsapp",data:{selectedTab:7},views:{whatsapp:{templateUrl:"app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",controller:"UserWhatsappDashboardGeneralController as vm"}},resolve:{whatsappInteractions:["apiResolver",function(e){return e.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general.user",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.fax",{abstract:!0,url:"/fax"}).state("app.fax.faxQueues",{url:"/faxQueues",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/faxQueues.html",controller:"FaxQueuesController as vm"}},resolve:{faxQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxQueues.edit",{url:"/:id?tab",params:{faxQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/edit/view.html",controller:"FaxQueueController as vm"}},resolve:{faxQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxAccounts",{url:"/faxAccounts",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/faxAccounts.html",controller:"FaxAccountsController as vm"}},resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}).state("app.fax.faxAccounts.edit",{url:"/:id?tab",params:{faxAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/edit/view.html",controller:"FaxAccountController as vm"}},resolve:{faxAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),n.addPart("app/main/apps/fax")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.fax",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.fax.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.fax.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/fax/views/realtime/realtime.html",controller:"FaxRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:910})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.agents",{url:"/agents",controller:"AgentsFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.trunks",{url:"/trunks",controller:"TrunksFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",controller:"QueuesFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dynamics365Accounts",fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts.edit",{url:"/:id?tab",params:{dynamics365Account:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",controller:"Dynamics365AccountController as vm"}},resolve:{dynamics365Account:["apiResolver","$stateParams",function(e,n){return e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts",{url:"/servicenowAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",controller:"ServicenowAccountsController as vm"}},resolve:{servicenowAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ServicenowAccounts",fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts.edit",{url:"/:id?tab",params:{servicenowAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/view.html",controller:"ServicenowAccountController as vm"}},resolve:{servicenowAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts",{url:"/freshsalesAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",controller:"FreshsalesAccountsController as vm"}},resolve:{freshsalesAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshsalesAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts.edit",{url:"/:id?tab",params:{freshsalesAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",controller:"FreshsalesAccountController as vm"}},resolve:{freshsalesAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}),n.addPart("app/main/apps/integrations")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.integrations",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.jscripty",{abstract:!0,url:"/jscripty"}).state("app.jscripty.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/projects.html",controller:"JscriptyProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}).state("app.jscripty.projects.edit",{url:"/:id?tab",params:{project:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/edit/view.html",controller:"JscriptyProjectController as vm"}},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),n.addPart("app/main/apps/jscripty")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.jscripty",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.mail",{abstract:!0,url:"/mail"}).state("app.mail.mailQueues",{url:"/mailQueues",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/mailQueues.html",controller:"MailQueuesController as vm"}},resolve:{mailQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailQueues.edit",{url:"/:id?tab",params:{mailQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/edit/view.html",controller:"MailQueueController as vm"}},resolve:{mailQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailAccounts",{url:"/mailAccounts",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/mailAccounts.html",controller:"MailAccountsController as vm"}},resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailAccounts.edit",{url:"/:id?tab",params:{mailAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/edit/view.html",controller:"MailAccountController as vm"}},resolve:{mailAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailSubtatuses",{url:"/mailSubtatuses",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",controller:"MailSubstatusesController as vm"}},resolve:{mailSubtatuses:["apiResolver","Auth",function(e,n){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),n.addPart("app/main/apps/mail")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.mail",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.mail.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.mail.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/mail/views/realtime/realtime.html",controller:"MailRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:610})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.agents",{url:"/agents",controller:"AgentsMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",controller:"QueuesMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.queueCampaigns.edit",{url:"/:id?tab",params:{queueCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",controller:"QueueCampaignController as vm"}},resolve:{queueCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns",{url:"/ivrCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",controller:"IvrCampaignsController as vm"}},resolve:{ivrCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns.edit",{url:"/:id?tab",params:{ivrCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",controller:"IvrCampaignController as vm"}},resolve:{ivrCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}),n.addPart("app/main/apps/motiondialer")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.motiondialer",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.motiondialer.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/realtime/realtime.html",controller:"MotionDialerRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1510})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.agents",{url:"/agents",controller:"AgentsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",controller:"QueuesMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.ivr_campaigns",{url:"/ivr_campaigns",controller:"IvrCampaignsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",resolve:{campaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,permissionId:1510})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.openchannel",{abstract:!0,url:"/openchannel"}).state("app.openchannel.openchannelQueues",{url:"/openchannelQueues",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",controller:"OpenchannelQueuesController as vm"}},resolve:{openchannelQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelQueues.edit",{url:"/:id?tab",params:{openchannelQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/view.html",controller:"OpenchannelQueueController as vm"}},resolve:{openchannelQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts",{url:"/openchannelAccounts",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",controller:"OpenchannelAccountsController as vm"}},resolve:{openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts.edit",{url:"/:id?tab",params:{openchannelAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",controller:"OpenchannelAccountController as vm"}},resolve:{openchannelAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",controller:"AgentsOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",controller:"QueuesOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.settings",{abstract:!0,url:"/settings"}).state("app.settings.generals",{url:"/generals",views:{"content@app":{templateUrl:"app/main/apps/settings/views/generals/generals.html",controller:"GeneralsController as vm"}},resolve:{generals:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,min_internal,securePassword,callRecordingEncryption,chatTimeout,phoneBarAutoUpdater,defaultScreenRecordingPath,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,searchOnEnterKey,messagesAlignment,phoneBarRememberMeEnabled,rtlSupport,allowedLoginAttempts,blockDuration,loginMailFrequency,language,bucket,transcribe,transcribeRegion,transcribeAccountId,sentiment,sentimentRegion,sentimentAccountId,googleSsoEnabled,enforcePasswordHistory,passwordHistoryLimit,enablePrivacyPolicyEmail,privacyPolicyEmail,enablePrivacyPolicyName,privacyPolicyName,enablePrivacyPolicyNumber,privacyPolicyNumber,chatInteractionsReloadTimeout,mailInteractionsReloadTimeout,openchannelInteractionsReloadTimeout,smsInteractionsReloadTimeout,whatsappInteractionsReloadTimeout,stopRecordingOnTransfer",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.smtps",{url:"/smtps",views:{"content@app":{templateUrl:"app/main/apps/settings/views/smtps/smtps.html",controller:"SmtpController as vm"}},resolve:{smtps:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.networks",{url:"/networks",views:{"content@app":{templateUrl:"app/main/apps/settings/views/networks/networks.html",controller:"NetworksController as vm"}},resolve:{networks:["apiResolver",function(e){return e.resolve("network@get",{fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.customizations",{url:"/customizations",views:{"content@app":{templateUrl:"app/main/apps/settings/views/customizations/customizations.html",controller:"CustomizationsController as vm"}},resolve:{customizations:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,defaultLogo,defaultLoginLogo,defaultFavicon,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.cloudProviders",{url:"/cloudProviders",views:{"content@app":{templateUrl:"app/main/apps/settings/views/cloudProviders/cloudProviders.html",controller:"CloudProvidersController as vm"}},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.settings",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.settings.updates","app.settings.license","app.settings.system"]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.license",{url:"/license",views:{"content@app":{templateUrl:"app/main/apps/settings/views/license/license.html",controller:"LicenseController as vm"}},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.license",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.system",{url:"/system?tab",views:{"content@app":{templateUrl:"app/main/apps/settings/views/system/system.html",controller:"SystemController as vm"}},resolve:{system:["apiResolver",function(e){return e.resolve("system@get")}],processes:["apiResolver",function(e){return e.resolve("pm2@get")}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.system",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.updates",{url:"/updates",views:{"content@app":{templateUrl:"app/main/apps/settings/views/updates/updates.html",controller:"UpdatesController as vm"}},resolve:{version:["apiResolver",function(e){return e.resolve("version@get",{latest:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1400})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.updates",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.sms",{abstract:!0,url:"/sms"}).state("app.sms.smsQueues",{url:"/smsQueues",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/smsQueues.html",controller:"SmsQueuesController as vm"}},resolve:{smsQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsQueues.edit",{url:"/:id?tab",params:{smsQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/edit/view.html",controller:"SmsQueueController as vm"}},resolve:{smsQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsAccounts",{url:"/smsAccounts",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/smsAccounts.html",controller:"SmsAccountsController as vm"}},resolve:{smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}).state("app.sms.smsAccounts.edit",{url:"/:id?tab",params:{smsAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/edit/view.html",controller:"SmsAccountController as vm"}},resolve:{smsAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",controller:"AgentsSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",controller:"QueuesSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver","Auth",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",role:"admin,user",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.users.edit",{url:"/:id?tab",params:{user:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/edit/view.html",controller:"UserController as vm"}},resolve:{user:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.agents",{url:"/agents",views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/agents.html",controller:"AgentsController as vm"}},resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",role:"agent",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",role:"agent",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.agents.edit",{url:"/:id?tab",params:{agent:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/edit/view.html",controller:"AgentController as vm"}},resolve:{agent:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.telephones",{url:"/telephones",views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/telephones.html",controller:"TelephonesController as vm"}},resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.telephones.edit",{url:"/:id?tab",params:{telephone:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/edit/view.html",controller:"TelephoneController as vm"}},resolve:{telephone:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.teams",{url:"/teams",views:{"content@app":{templateUrl:"app/main/apps/staff/views/teams/teams.html",controller:"TeamsController as vm"}},resolve:{teams:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("team@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Teams",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:204})}]},authenticate:!0,permissionId:204,bodyClass:"staff"}).state("app.staff.userProfiles",{url:"/userProfiles",views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/userProfiles.html",controller:"UserProfilesController as vm"}},resolve:{userProfiles:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}).state("app.staff.userProfiles.edit",{url:"/:id?tab",params:{userProfile:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/edit/view.html",controller:"UserProfileController as vm"}},resolve:{userProfile:["apiResolver","$stateParams",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}),n.addPart("app/main/apps/staff")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.staff",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.tools",{abstract:!0,url:"/tools"}).state("app.tools.cannedAnswers",{url:"/cannedAnswers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",controller:"CannedAnswersController as vm"}},resolve:{cannedAnswers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cannedAnswer@get",{fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CannedAnswers",fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1001})}]},authenticate:!0,permissionId:1001,bodyClass:"tools"}).state("app.tools.customDashboards",{url:"/customDashboards",views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/customDashboards.html",controller:"CustomDashboardsController as vm"}},resolve:{customDashboards:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CustomDashboards",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.customDashboards.edit",{url:"/:id?tab",params:{customDashboard:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/edit/view.html",controller:"CustomDashboardController as vm"}},resolve:{customDashboard:["apiResolver","$stateParams",function(e,n){return e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.intervals",{url:"/intervals",views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/intervals.html",controller:"IntervalsController as vm"}},resolve:{intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.intervals.edit",{url:"/:id?tab",params:{interval:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/edit/view.html",controller:"IntervalController as vm"}},resolve:{interval:["apiResolver","$stateParams",function(e,n){return e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.pauses",{url:"/pauses",views:{"content@app":{templateUrl:"app/main/apps/tools/views/pauses/pauses.html",controller:"PausesController as vm"}},resolve:{pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1005})}]},authenticate:!0,permissionId:1005,bodyClass:"tools"}).state("app.tools.schedules",{url:"/schedules",views:{"content@app":{templateUrl:"app/main/apps/tools/views/schedules/schedules.html",controller:"SchedulesController as vm"}},resolve:{schedules:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("schedule@get",{fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Scheduler",fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1006})}]},authenticate:!0,permissionId:1006,bodyClass:"tools"}).state("app.tools.sounds",{url:"/sounds",views:{"content@app":{templateUrl:"app/main/apps/tools/views/sounds/sounds.html",controller:"SoundsController as vm"}},resolve:{sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1007})}]},authenticate:!0,permissionId:1007,bodyClass:"tools"}).state("app.tools.tags",{url:"/tags",views:{"content@app":{templateUrl:"app/main/apps/tools/views/tags/tags.html",controller:"TagsController as vm"}},resolve:{tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1008})}]},authenticate:!0,permissionId:1008,bodyClass:"tools"}).state("app.tools.templates",{url:"/templates",views:{"content@app":{templateUrl:"app/main/apps/tools/views/templates/templates.html",controller:"TemplatesController as vm"}},resolve:{templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1009})}]},authenticate:!0,permissionId:1009,bodyClass:"tools"}).state("app.tools.trunks",{url:"/trunks",views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/trunks.html",controller:"TrunksController as vm"}},resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.trunks.edit",{url:"/:id?tab",params:{trunk:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/edit/view.html",controller:"TrunkController as vm"}},resolve:{trunk:["apiResolver","$stateParams",function(e,n){return e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.variables",{url:"/variables",views:{"content@app":{templateUrl:"app/main/apps/tools/views/variables/variables.html",controller:"VariablesController as vm"}},resolve:{variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1012})}]},authenticate:!0,permissionId:1012,bodyClass:"tools"}),n.addPart("app/main/apps/tools")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.tools",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.tools.dispositions","app.tools.triggers"]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.dispositions",{url:"/dispositions",views:{"content@app":{templateUrl:"app/main/apps/tools/views/dispositions/dispositions.html",controller:"DispositionsController as vm"}},resolve:{dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1002})}]},authenticate:!0,permissionId:1002,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.dispositions",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.triggers",{url:"/triggers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/triggers.html",controller:"TriggersController as vm"}},resolve:{triggers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Triggers",fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"}).state("app.tools.triggers.edit",{url:"/:id?tab",params:{trigger:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/edit/view.html",controller:"TriggerController as vm"}},resolve:{trigger:["apiResolver","$stateParams",function(e,n){return e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.triggers",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.video",{abstract:!0,url:"/video"}).state("app.video.screenRecordings",{url:"/screenRecordings",views:{"content@app":{templateUrl:"app/main/apps/video/views/screenRecordings/screenRecordings.html",controller:"ScreenRecordingsController as vm"}},resolve:{screenRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("screenRecording@get",{fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ScreenRecordings",fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadScreenRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2001})}]},authenticate:!0,permissionId:2001,bodyClass:"video"}),n.addPart("app/main/apps/video")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.video",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.inboundRoutes",{url:"/inboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",controller:"InboundRoutesController as vm"}},resolve:{inboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InboundRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"}).state("app.voice.inboundRoutes.edit",{url:"/:id?tab",params:{inboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/edit/view.html",controller:"InboundRouteController as vm"}},resolve:{inboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.inboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.internalRoutes",{url:"/internalRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/internalRoutes.html",controller:"InternalRoutesController as vm"}},resolve:{internalRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InternalRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"}).state("app.voice.internalRoutes.edit",{url:"/:id?tab",params:{internalRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/edit/view.html",controller:"InternalRouteController as vm"}},resolve:{internalRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.internalRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.outboundRoutes",{url:"/outboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",controller:"OutboundRoutesController as vm"}},resolve:{outboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OutboundRoutes",fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"}).state("app.voice.outboundRoutes.edit",{url:"/:id?tab",params:{outboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/edit/view.html",controller:"OutboundRouteController as vm"}},resolve:{outboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.outboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/voice/views/realtime/realtime.html",controller:"VoiceRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:411})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.agents",{url:"/agents",controller:"AgentsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.telephones",{url:"/telephones",controller:"TelephonesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/telephones/view.html",resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}],rpcTelephones:["apiResolver",function(e){return e.resolve("rpc@getTelephones")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.trunks",{url:"/trunks",controller:"TrunksVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",controller:"QueuesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",controller:"AgentsWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",controller:"QueuesWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";function e(e){e.interceptors.push("authInterceptor")}e.$inject=["$httpProvider"],angular.module("app.auth").config(e)}(),function(){"use strict";function e(e){e.onBefore({to:function(e){return!0===e.authenticate}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;return n.isLoggedIn()?n.retrieveUser().catch(function(){return t.target("app.login",void 0,{reload:!0})}):t.target("app.login",void 0,{reload:!0})}),e.onStart({to:function(e){return"app.login"!==e.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("agent")&&"app.dashboards.general"!=a.name)return t.target("app.dashboards.general",{redirect:!1},{reload:!0})}),e.onFinish({to:function(e){return e.permissionId}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("user")){if(!n.hasPermission(a.permissionId))return t.target("app.dashboards.general",{redirect:!1},{reload:!0});var i=e.params().id?Number(e.params().id):void 0;if(i)return n.hasResourcePermission(a.permissionId,i).catch(function(){return t.target(a.parent.name,{redirect:!1},{reload:!0})})}}),e.onFinish({to:function(e){return"app.dashboards.general"===e.parent.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;e.$to();if(n.hasRole("user")&&!n.hasPermission(100))return t.target("app.dashboards.general",{redirect:!1},{reload:!0})})}e.$inject=["$transitions"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,i,o,n,s,r,l){var d;return{getToken:e,getCurrentUser:function(){return d},getPermissions:h,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){g()?a(!0):r.userProfileSection.get({userProfileId:d.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a(!1);else{var t=_.filter(n,function(e){return e.enabled});a(_.some(t,["category",i]))}}).catch(function(e){n(e)})})},hasModulesPermissions:function(s){return o(function(a,n){var i={};g()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:d.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a({});else{var t=_(n).filter(function(e){return e.enabled&&_.includes(s,e.category)}).uniqBy(function(e){return e.category}).map(function(e){return e.category}).value();t.forEach(function(e){i[e]=!0}),a(i)}}).catch(function(e){n(e)})})},hasRole:function(e){return!!d&&d.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:d.userProfileId,sectionId:e}).$promise.then(function(e){var n=e.rows[0];if(n.autoAssociation)return a();var t=l.getActiveItem().node;return t.permissions&&!1===t.permissions.association?a():r.userProfileResource.get({sectionId:n.id,nolimit:!0}).$promise.then(function(e){var n=e.rows;_.some(n,["resourceId",s])?a():i()})}).catch(function(e){i("Error retrieving user profile permissions",e)})})},hasSectionPermissions:function(a){return o(function(e,n){var t={};return f().then(function(){_.includes(d.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!g())return f().then(function(){a.forEach(function(e){_.includes(d.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:p,isAdmin:g,isLoggedIn:function(){return!!e()},isTelephone:function(){return"telephone"===d.role},isUser:v,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return i.put("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(d=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),b("LOCAL_LOGIN")}).then(function(){if(p()&&1===d.showWebBar&&d.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return p()&&0!==d.showWebBar?c(e):g()||v()?m(!0):void 0}).then(function(e){d=_.assign(d,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(u(),e()):o.resolve().then(function(){return p()&&0!==d.showWebBar?o(function(e,n){r.user.logout({id:d.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):g()||v()?m(!1):void 0}).then(function(){u(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return g()?{readOnly:!1,canEdit:!0,canDelete:!0}:e?{readOnly:!(!_.includes(e,"r")||1!==e.length),canEdit:!!_.includes(e,"e"),canDelete:!!_.includes(e,"d")}:{readOnly:!0,canEdit:!1,canDelete:!1}},queueLogin:c,reloadPermissions:f,removeCookies:u,retrieveUser:function(){return o(function(n,t){r.user.whoami().$promise.then(function(n){return"user"===n.role?h(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(d=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){d=_.merge(d,e)},getAuthenticationType:function(){return n.localStorage["motion.authenticationtype"]||"NONE"},loginSSO:function(e){return b("SSO_LOGIN"),"/api/auth/"+e}};function e(){return i.get("motion.token")}function c(e){return o(function(n,t){r.user.login({id:d.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function m(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:d.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function u(){i.remove("motion.token"),d&&(n.localStorage.removeItem("motion.user:"+d.id),n.localStorage.removeItem("motion.authenticationtype"),d=null)}function p(){return"agent"===d.role}function g(){return"admin"===d.role}function v(){return"user"===d.role}function t(e){return!!d&&_.includes(d.permissions,e)}function h(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function f(){return o(function(n,t){h(d.userProfileId).then(function(e){d.permissions=e,n()}).catch(function(e){t(e)})})}function b(e){n.localStorage["motion.authenticationtype"]=e}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";angular.module("app.core").provider("motionConfig",function(){var t={disableCustomScrollbars:!1,disableMdInkRippleOnMobile:!0,disableCustomScrollbarsOnMobile:!0};this.config=function(e){t=angular.extend({},t,e)},this.$get=function(){var e={getConfig:function(e){if(angular.isUndefined(t[e]))return!1;return t[e]},setConfig:function(e,n){t[e]=n}};return e}})}(),function(){"use strict";function e(e,n,t,a){n.debugEnabled(!0),e.config({tabindex:!1}),a.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0}),t.config({wheelPropagation:!0})}e.$inject=["$ariaProvider","$logProvider","msScrollConfigProvider","motionConfigProvider"],angular.module("app.core").config(e)}(),function(){"use strict";function e(e,n,t){(n.generate(),t.getConfig("disableMdInkRippleOnMobile")&&e.isMobile())&&angular.element("body").attr("md-no-ink",!0);e.isMobile()&&angular.element("html").addClass("is-mobile");var a=e.detectBrowser();if(a){var i=a.browser+" "+a.version+" "+a.os;angular.element("html").addClass(i)}}e.$inject=["msUtils","motionGenerator","motionConfig"],angular.module("app.core").run(e)}(),function(){"use strict";function e(n,e,t,a,i,s){var l=this;function o(){var e=_.filter(l.searchOptions.conditions,["disabled",!1]),o=[],r="";if(_(e).groupBy("name").forEach(function(e){var n=e[0],t=1<e.length,a=n.query.column;if(t){var i=_(e).groupBy(function(e){return e.query.operator}).mapValues(function(e){return _.chain(e).map(function(e){return e.query.value}).flattenDeep().value()}).value(),s=[];_.keys(i).forEach(function(e){var n=i[e],t=e;_.includes(["$between","$in","$notIn"],e)?t+="["+n+"]":n.forEach(function(e){t+="["+e+"]"}),s.push(t)}),r+=a+":="+s.join(":=")}else r=a+":="+n.query.operator+"["+n.query.value+"]";o.push(r)}),0!==o.length){var n="["+l.searchOptions.matchType+"]";return n+=o.join("||")}}function r(){var e=n.localStorage.getItem("motion2."+s+":"+l.currentUser.id);return e?JSON.parse(e):{}}function d(e){n.localStorage.setItem("motion2."+s+":"+l.currentUser.id,JSON.stringify(e))}function c(){if(s){var e=r();e.advancedSearch=_.omit(l.searchOptions,"fields"),d(e)}}function m(){return!!r().advancedSearch}l.currentUser=t.getCurrentUser(),l.searchOptions={matchType:"$and",conditions:[],fields:i},l.toolbarColor=a,l.onInit=function(){if(s){var e=r();e.hasOwnProperty("advancedSearch")&&(l.searchOptions=_.merge(l.searchOptions,e.advancedSearch))}},l.applyFilter=function(){c(),e.hide({apply:!0,value:o()})},l.clearConditions=function(){l.searchOptions.conditions=[],function(){if(s){var e=r();delete e.advancedSearch,e.query&&delete e.query.search,d(e)}}()},l.minimize=function(){c(),e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})},l.close=function(){e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})}}e.$inject=["$window","$mdDialog","Auth","color","fields","storagePath"],angular.module("app.core").controller("AdvancedSearchController",e)}(),function(){"use strict";function e(a){return{restrict:"A",link:function(e,n,t){e.$watch(t.focusOn,function(e){a(function(){e?n[0].focus():n[0].blur()})})}}}e.$inject=["$timeout"],angular.module("app.core").directive("focusOn",e)}(),function(){"use strict";function e(o,l,d){return{restrict:"E",compile:function(e,n){var s;return n.code||(s=e.html(),e.empty()),function(t,a,r){r.code&&(s=t.$eval(r.code));var i=t.$eval(r.shouldInterpolate);l.when(s).then(function(e){if(e){i&&(e=d(e)(t));var n=angular.element('<pre><code class="highlight" ng-non-bindable></code></pre>');a.append(n),o(function(){!function(e,n){var t=n.find("code"),a=e.split("\n"),i=(a=a.filter(function(e){return e.trim().length}))[0].match(/^\s*/)[0],s=new RegExp("^"+i);a=a.map(function(e){return e.replace(s,"").replace(/\s+$/,"")});var o=hljs.highlight(r.language||r.lang,a.join("\n"),!0);o.value=o.value.replace(/=<span class="hljs-value">""<\/span>/gi,"").replace("<head>","").replace("<head/>",""),t.append(o.value).addClass("highlight")}(e,n)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),function(){"use strict";function e(a,i,s,o){var r=this;function n(){var a=r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators),i=r.selectedField.options&&!_.isEmpty(r.selectedField.options.excludedOperators);r.availableOperators=_.filter(r.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,r.selectedField.type);n.isExtra=a&&_.some(r.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,r.selectedField.type)||i&&_.includes(r.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function t(){!r.value||_.isArray(r.value)&&_.isEmpty(r.value)?r.isValidCondition=!1:r.selectedOperator&&"$between"===r.selectedOperator.type?r.isValidCondition=!(!r.endRangeValue||!r.isValidRange):r.isValidCondition=!0}function e(){"number"===r.selectedField.type?_.isNumber(r.endRangeValue)?r.isValidRange=Number(r.endRangeValue)>Number(r.value):r.isValidRange=!0:"date"===r.selectedField.type&&(r.maxDateRange=moment(r.endRangeValue).subtract(1,"day"),r.isValidRange=!0),t()}function l(){var e=c();r.options.conditions.push(e),u()}function d(){var e=c(),n=_.findIndex(r.options.conditions,"style");r.options.conditions.splice(n,1,e),u(),r.pendingCondition.style=null,r.pendingCondition=void 0}function c(){return{name:r.selectedField.name,operator:a.instant("DASHBOARDS."+r.selectedOperator.translate),value:r.value,endValue:r.endRangeValue,displayValue:m(r.value),displayEndValue:m(r.endRangeValue),query:{column:r.selectedField.column,operator:r.selectedOperator.type,value:function(){var e,n=r.value,t=r.endRangeValue;switch(r.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===r.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===r.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=r.selectedField.options.field||"id";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=r.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function m(e){var n;if(e){switch(r.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===r.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=r.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function u(){r.value=null,r.endRangeValue=null,r.minDateRange=null,r.maxDateRange=null,r.isValidCondition=!1}r.operators=r.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],r.addCondition=l,r.editCondition=function(e){r.pendingCondition=e,r.pendingCondition.style="md-amber-200-bg",r.selectedField=_.find(r.options.fields,["name",r.pendingCondition.name]),n(),r.selectedOperator=_.find(r.availableOperators,["type",r.pendingCondition.query.operator]),"date"===r.selectedField.type&&"string"==typeof r.pendingCondition.value?(r.value=new Date(r.pendingCondition.value),r.minDateRange=moment(r.value).add(1,"day"),r.endRangeValue=r.pendingCondition.endValue?new Date(r.pendingCondition.endValue):void 0):(r.value=r.pendingCondition.value,r.endRangeValue=r.pendingCondition.endValue);r.isValidRange=!0,r.isValidCondition=!0},r.updateCondition=d,r.cancelUpdateCondition=function(){r.pendingCondition.style=null,r.pendingCondition=void 0},r.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},r.removeCondition=function(){_.isEmpty(r.options.conditions)&&r.clearFilter()},r.getValues=function(){var n=angular.copy(r.selectedField.options.route);if("autocomplete"===r.selectedField.type)for(var e=0;e<Object.keys(n.params).length;e++){var t=Object.keys(n.params)[e];"@autocomplete"===n.params[t]&&(n.params[t]=r.searchText)}{if(!r.selectedField.values)return s[n.model][n.action](n.params).$promise.then(function(e){if("autocomplete"!==r.selectedField.type)return r.selectedField.values=e.rows;var n=r.searchText?_.filter(e.rows,function(e){e.displayValue="";for(var n=0;n<r.selectedField.options.searchFields.length;n++){var t=r.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),_.includes(e.displayValue.toLowerCase(),r.searchText.toLowerCase())}):[];return i.when(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})});r.selectedField.values.forEach(function(e){e.translate&&(e.name=a.instant(e.translate))})}},r.onFieldChange=function(){r.value=void 0,r.endRangeValue=void 0,r.searchText=void 0,r.isValidCondition=!1,n(),r.autoSelectOperator=1===r.availableOperators.length,r.autoSelectOperator||(r.selectedOperator=void 0)},r.onOperatorChange=function(e){r.isValidRange=!0,r.selectedOperator&&(e?e.applyTo?0<_.difference(r.selectedOperator.applyTo,e.applyTo).length&&(r.value=null):r.selectedOperator.applyTo&&(r.value=null):r.value=null,"between"!=r.selectedOperator.type&&(r.endRangeValue=null),r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators)&&(r.selectedOperator.isExtra=_.some(r.selectedField.options.extraOperators,function(e){return e===r.selectedOperator.type})));t()},r.onValueChange=function(){r.selectedOperator&&"$between"===r.selectedOperator.type?"number"===r.selectedField.type?e():"date"===r.selectedField.type&&(r.minDateRange=moment(r.value).add(1,"day"),t()):t()},r.checkRange=e,r.handleKeyboardAction=function(){r.pendingCondition?d():l()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('<div layout="row" class="spinner-overlay" layout-sm="column" layout-align="center center" aria-label="wait"><md-progress-circular md-mode="indeterminate"></md-progress-circular></div>')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&n.push(e[s]);for(s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=n}o.options.transferCallback&&o.options.transferCallback(i,a)}o.canTransfer=function(e,n,t){if(void 0!==e.isValid&&e.isValid)return t?a(n.selectedItems,n.items,n.selectedItems.indexOf(e),t):a(n.items,n.selectedItems,n.items.indexOf(e),t)},o.transfer=a,o.getLine=function(e,n){var t="";if(_.isNil(n))return t;{if(_.isArray(n)){for(var a=0;a<n.length;a++)t+=" "+(e[n[a]]?e[n[a]]:"");return t}return e[n]?e[n]:""}}}angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"=",readOnly:"=",addDisabled:"<"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html"}})}(),function(){"use strict";function e(a){return{restrict:"E",replace:!0,scope:{onReply:"&",ngModel:"=",ctrlMethods:"=",pickerPosition:"=",search:"=",recentEmojis:"=",placeholder:"="},template:'<textarea class="emojionearea"></textarea>',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0<n.selectedIndex&&angular.isDefined(n.forms[n.selectedIndex-1])&&n.forms[n.selectedIndex-1].$invalid},n.formsIncomplete=function(){for(var e=0;e<n.forms.length;e++)if(n.forms[e].$invalid)return!0;return!1},n.resetForm=function(){for(var e=n.selectedIndex=0;e<n.forms.length;e++)n.forms[e].$setPristine(),n.forms[e].$setUntouched()}}).directive("msFormWizard",function(){return{restrict:"E",scope:!0,controller:"MsFormWizardController as msWizard",compile:function(e){return e.addClass("ms-form-wizard"),function(){}}}}).directive("msFormWizardForm",function(){return{restrict:"A",require:["form","^msFormWizard"],compile:function(e){return e.addClass("ms-form-wizard-form"),function(e,n,t,a){var i=a[0],s=a[1];s.registerForm(i)}}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{onClose:"&"},transclude:!0,templateUrl:"app/core/directives/ms-info-bar/ms-info-bar.html",link:function(e,n){var t=i.find("ms-info-bar-active"),a="ms-info-bar-active";t.addClass(a),e.removeInfoBar=function(){t.removeClass(a),n.remove(),e.onClose&&e.onClose(),e.$destroy()}}}}e.$inject=["$document"],angular.module("app.core").directive("msInfoBar",e)}(),function(){"use strict";function e(r,a,l,e){var d=this,n={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},t=!0;function i(){t&&e.cancel(t),t=e(function(){!function(){d.containerPos=d.container[0].getBoundingClientRect(),function(){d.columnCount=d.options.columnCount,l("gt-md")?d.columnCount=d.options.columnCount:l("md")?d.columnCount=d.columnCount>d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n<d.items.length;n++){var t,a,i,s,o=d.items[n];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=n%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,t=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+t+"px,"+a+"px,0px)"}),o.addClass("placed"),o.scope()&&o.scope().$broadcast("msMasonryItem:finishReLayout")}}(),r.$broadcast("msMasonry:relayoutFinished")},d.options.reLayoutDebounce)}d.options=null,d.container=[],d.containerPos="",d.columnWidth="",d.items=[],d.reLayout=i,d.initialize=function(){d.options=d.options?angular.extend(n,d.options):n,r.$watch(function(){return d.container.width()},function(e,n){e!==n&&i()})},d.waitImagesLoaded=function(e,n){if("undefined"!=typeof imagesLoaded){var t=a.imagesLoaded(e);t.on("done",function(){n()})}else n()},r.$on("msMasonry:relayout",function(){i()})}function n(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,n,t,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,n,t,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",n).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,n,t,a){a.waitImagesLoaded(n,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return n.height()},function(e,n){e!==n&&a.reLayout()})}),n.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(t,e,a,i){var s=this;function o(e,n){s.selectedPalette=e,s.selectedHues=n}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,n){s.selectedColor={palette:e,hue:n,class:"md-"+e+"-"+n+"-bg",bgColorValue:i.rgba(s.palettes[e][n].value),fgColorValue:i.rgba(s.palettes[e][n].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),t.$selectedColor=s.selectedColor}function d(){"class"===s.msModelType?s.modelCtrl.$setViewValue(s.selectedColor.class):"obj"===s.msModelType&&s.modelCtrl.$setViewValue(s.selectedColor)}s.palettes=e,s.selectedPalette=!1,s.selectedHues=!1,t.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,n){l(e,n),d(),a.hide()},s.removeColor=r,t.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,n;if("class"===s.msModelType){var t=s.modelCtrl.$viewValue.split("-");n=5<=t.length?(e=t[1]+"-"+t[2],t[3]):(e=t[1],t[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,n=s.modelCtrl.$viewValue.hue||500);l(e,n)})}e.$inject=["$scope","$mdColorPalette","$mdMenu","motionGenerator"],angular.module("app.core").controller("msMaterialColorPickerController",e).directive("msMaterialColorPicker",function(){return{require:["msMaterialColorPicker","ngModel"],restrict:"E",scope:{ngModel:"=",msModelType:"@?"},controller:"msMaterialColorPickerController as vm",transclude:!0,templateUrl:"app/core/directives/ms-material-color-picker/ms-material-color-picker.html",link:function(e,n,t,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,n){return 1===n.nodeType})).length&&n.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,n,t){var a="true"===t.msNavIsFolded,i=!1,s=angular.element(p[0].body),o=angular.element('<div id="ms-nav-fold-open-overlay"></div>'),r=angular.element('<div id="ms-nav-fold-close-overlay"></div>'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('<div id="ms-navigation-fold-expander"></div>'),i=angular.element('<div id="ms-navigation-fold-collapser"></div>'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0<o.node.children.length,o.group=!(!angular.isDefined(o.node.group)||!0!==o.node.group),!o.hasChildren||o.group?o.collapsable=!1:o.collapsable=!(!angular.isUndefined(o.node.collapsable)&&"boolean"==typeof o.node.collapsable&&!0!==o.node.collapsable);o.collapsable?o.collapsed=!(!angular.isUndefined(o.node.collapsed)&&"boolean"==typeof o.node.collapsed&&!0!==o.node.collapsed):o.collapsed=!1;if(o.node.state===n.current.name||n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,t)}t.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&t.$evalAsync(function(){o.collapsed=!1})}),t.$on("msNavigation::collapse",function(e,n){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(n))o.collapse();else{var t=n.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<t.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),t.$on("$stateChangeSuccess",function(){if(o.node.state===n.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;s.setActiveItem(o.node,t),a.$broadcast("msNavigation::collapse",o.node._path)}if(n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched")}})}()}function a(n){return{restrict:"E",scope:{root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/horizontal.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation-horizontal"),function(e){n.setNavigationScope(e)}}}}function i(t,e,n,a,i){var s=this;s.element=e,s.node=t.node,s.hasChildren=void 0,s.group=void 0,s.getClass=function(){return s.node.class},function(){if(s.isActive=!1,s.hasChildren=0<s.node.children.length,s.group=!(!angular.isDefined(s.node.group)||!0!==s.node.group),s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;t.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,t)}t.$on("msNavigation::stateMatched",function(){s.hasChildren&&t.$evalAsync(function(){s.isActive=!0})}),t.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],n=i.getActiveItem();n&&(e=n.node._path.split(".")),-1<e.indexOf(s.node._id)?t.$evalAsync(function(){s.isActive=!0}):t.$evalAsync(function(){s.isActive=!1})}}),t.$on("$stateChangeSuccess",function(){if(s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;i.setActiveItem(s.node,t),n.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,n,t,a){n.on("click",function(){if(!a.hasChildren||i("gt-md"))return;n.toggleClass("expanded")}),e.$on("$destroy",function(){n.off("click")})}}}}e.$inject=["$scope","msNavigationService"],n.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],t.$inject=["$scope","$element","$rootScope","$animate","$state","msNavigationService"],a.$inject=["msNavigationService"],i.$inject=["$scope","$element","$rootScope","$state","msNavigationService"],s.$inject=["$mdMedia"],angular.module("app.core").provider("msNavigationService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function d(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=u(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=u(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function c(e){if(angular.isString(e)){for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1}r.error("path must be a string (eg. `dashboard.project`)")}function m(e){e||(e=l).sort(a);for(var n=0;n<e.length;n++){var t=e[n].children;1<t.length&&t.sort(a),0<t.length&&m(t)}}function a(e,n){return parseInt(e.weight)-parseInt(n.weight)}function u(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=d,this.deleteItem=c,this.sortByWeight=m,this.$get=function(){var t=null,n=null,a=null,i=null,e={saveItem:d,deleteItem:c,sort:m,clearNavigation:function(){l=[],n&&(n.vm.navigation=l)},setActiveItem:function(e,n){t={node:e,scope:n}},getActiveItem:function(){return t},getNavigation:s,getFlatNavigation:o,setNavigationScope:function(e){n=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){n.toggleFolded()},getSectionId:function(n,t){var e=o(),a=_.find(e,function(e){return t?e.route===n&&e.title.toLowerCase()===t.toLowerCase():e.route===n});return a?a.id:0}};return e;function s(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}function o(e){var n=s(e);return function e(n){var t=[];for(var a=0;a<n.length;a++){var i=angular.copy(n[a]);i.children=[],t.push(i),0<n[a].children.length&&(t=t.concat(e(n[a].children)))}return t}(n)}}}).controller("MsNavigationController",e).directive("msNavigation",n).controller("MsNavigationNodeController",t).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,n,t,a){a.collapsable&&n.on("click",a.toggleCollapsed),e.$on("$destroy",function(){n.off("click")})}}}}).directive("msNavigationHorizontal",a).controller("MsNavigationHorizontalNodeController",i).directive("msNavigationHorizontalNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationHorizontalNode"},controller:"MsNavigationHorizontalNodeController as vm",compile:function(e){return e.addClass("ms-navigation-horizontal-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(u,t,p,e,a,i,n,g,s,v,h,f,b,o,A){var E=this,r=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],l=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};function d(l){var d,c,m;return E.initDeviceInProgress=!0,navigator.mediaDevices.getUserMedia({audio:!0}).then(function(e){return E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/silence.ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}),e.getTracks().forEach(function(e){e.stop()}),navigator.mediaDevices.enumerateDevices()}).then(function(e){var n=_.filter(e,function(e){return"audioinput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<n.length){var t=_.find(e,function(e){return"default"===e.deviceId&&"audioinput"===e.kind});if(m=_.find(n,function(e){return e.groupId===t.groupId}),E.conf.microphoneId&&!l){var a=_.find(n,function(e){return e.deviceId===E.conf.microphoneId});a&&(m=a)}E.conf.microphoneId=m.deviceId}else v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_MICROPHONE_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,R("microphone",!1);var i=_.filter(e,function(e){return"audiooutput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<i.length){var s=_.find(e,function(e){return"default"===e.deviceId&&"audiooutput"===e.kind});if(c=d=_.find(i,function(e){return e.groupId===s.groupId}),E.conf.speakerId&&!l){var o=_.find(i,function(e){return e.deviceId===E.conf.speakerId});o&&(c=o)}if(E.conf.speakerId=c.deviceId,E.conf.ringingId&&!l){var r=_.find(i,function(e){return e.deviceId===E.conf.ringingId});r&&(d=r)}E.conf.ringingId=d.deviceId}else v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return R("speaker",!1)}).then(function(){return R("ringing",!1)}).then(function(){if(jabra)return jabra.init().then(function(){return E.isJabraInitialized=!0,jabra.getInstallInfo()}).then(function(){return jabra.getUserDeviceMediaExt()}).then(function(e){m&&c&&d&&e&&_.includes([m.groupId,c.groupId,d.groupId],e.deviceInfo.browserGroupId)&&(console.log("Jabra library correctly initialized and device correctly installed"),E.isJabraEnabled=!0,jabra.onHook(),jabra.addEventListener("acceptcall",function(e){var n=_.last(E.sessions);n?"incoming"===n.direction&&n.isInProgress()?E.answer(n):console.error("Unable to find a valid call to answer",e):console.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){R("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,R("microphone",!0)}.bind(this)),jabra.addEventListener("flash",function(){E.jabraSession.localHold?E.unhold(E.jabraSession):E.hold(E.jabraSession)}.bind(this)),jabra.addEventListener("endcall",function(){new Promise(function(e){for(var n=null,t=0;t<E.sessions.length;t++)_.has(E.sessions[t],"localHold")&&E.sessions[t].localHold||(n=E.sessions[t]);e(n)}).then(function(e){null!==e&&E.terminate(e)})}.bind(this)))}).catch(function(e){console.warn("Error initializing Jabra integration",e)})}).catch(function(e){console.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,y(),DetectRTC.load(function(){E.conf.hasMicrophone=DetectRTC.hasMicrophone,E.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,E.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,E.conf.osName=DetectRTC.osName,E.conf.osVersion=DetectRTC.osVersion,E.conf.browserName=DetectRTC.browser.name,E.conf.browserVersion=DetectRTC.browser.version,E.conf.license&&E.conf.isWebRTCSupported&&E.conf.hasMicrophone&&E.conf.hasSpeakers&&"https"===E.conf.protocol&&("chrome"===E.conf.browserName.toLowerCase()||"opera"===E.conf.browserName.toLowerCase()||"safari"===E.conf.browserName.toLowerCase())?E.register||E.ua.start():E.conf.license||v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function y(){l.webrtc=_.pick(E.conf,r),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(l))}function S(e,n,t){console.debug("addCall -> target, inbound, fullname",e,n,t),E.calls.unshift({target:e,fullname:t||e,inbound:n,time:moment().format("HH:mm")}),50<E.calls.length&&E.calls.pop()}function T(e){console.debug("answer -> session",e),e.notification&&(e.notification.close(),e.notification=null),E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,e.answer(E.sessionConf),E.isJabraEnabled&&(jabra.offHook(),E.jabraSession=e)}function I(e,n){console.debug("terminate -> session",e),e.notification&&(e.notification.close(),e.notification=null);var t={};if(n?t.status_code=n:e.isEstablished()||(t.status_code=603),e.terminate(t),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var a=_.last(E.sessions);a.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=a):jabra.offHook()}}function C(t){return console.debug("getVoiceChannels -> session",t),h.rpc.getVoiceChannels().$promise.then(function(e){var n=_.find(e.rows,function(e){return e.sipcalllinkedid===t.call_id?e:e.sipcalluniqueid===t.call_id?e:null});n&&(t.monitor=n.monitor,t.uniqueid=n.uniqueid,t.monitors=n.monitors)})}function O(e){console.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function w(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function R(e,n){switch(e){case"ringing":E.soundPlayer.muted=E.conf.ringingMute,E.conf.ringingId&&E.soundPlayer.setSinkId(E.conf.ringingId).then(function(){E.soundPlayer.volume=E.conf.ringingVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.ringingId)});break;case"speaker":E.remotePlayer.muted=E.conf.speakerMute,E.conf.speakerId&&E.remotePlayer.setSinkId(E.conf.speakerId).then(function(){E.remotePlayer.volume=E.conf.speakerVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.speakerId)});break;case"microphone":for(var t=0;t<E.sessions.length;t+=1)E.conf.microphoneMute?E.sessions[t].mute():E.sessions[t].unmute();jabra&&E.isJabraEnabled&&(E.conf.microphoneMute?jabra.mute():jabra.unmute()),n&&y();break;default:console.log("unknown device")}}function c(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",u.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function m(n){return h.user.getVoicePrefixes({id:E.conf.id}).$promise.then(function(e){if(e.count)return a.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{prefixes:e,required:E.conf.phoneBarPrefixRequired}})}).then(function(e){if(E.conf.phoneBarPrefixRequired){if(e&&-1!==e)return e+n}else{if(e&&-1!==e)return e+n;if(!e)return n}})}function x(){if(E.isInConference){var e=E.sessions[0].connection.getReceivers()[0],n=E.sessions[1].connection.getReceivers()[0],t=new MediaStream;t.addTrack(e.track),t.addTrack(n.track);var a=document.getElementById("remote-audio");a.srcObject=t;var i=a.play();void 0!==i&&i.then(function(){}).catch(function(e){console.log(e)})}}function N(e,n,t,a){return console.debug("onReferCallback -> session, textContent, position, delay",e,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),I(e)}}function D(n){return console.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function P(e,n){return console.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}e(function(){},999),E.currentUser=b.getCurrentUser(),E.direction="right",E.selectedMode="md-scale",E.target="",E.showDialpad=!1,E.soundPlayer=document.getElementById(E.conf.soundPlayerId),E.remotePlayer=document.getElementById(E.conf.remotePlayerId),E.soundPlayer.volume=1,E.sessionConf={mediaConstraints:{audio:!0,video:!1},pcConfig:{iceServers:[]}},E.sessions=[],E.calls=[],E.callbackQueue=[],E.canGoInConference=!1,E.isInConference=!1,E.currentConferenceSessions=[],E.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+E.conf.host+":"+E.conf.wssPort+"/ws")],uri:new JsSIP.URI("sip",E.conf.name,E.conf.host,5060,null,null).toString(),authorization_user:E.conf.name,ha1:E.conf.ha1,realm:E.conf.realm,user_agent:E.conf.ua,session_timers_refresh_method:"invite",register_expires:E.conf.phoneBarExpires||60,register:!0}),E.conf=_.merge(l.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:p(function(){E.showDialpad=!1})}}),E.$onInit=function(){d(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(!(E.isJabraEnabled=!1))}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];Promise.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){console.debug("onNewRTCSession -> data",e);var n,t,a,i,s,o=e.session,r=!0,l="",d=0;switch(e.originator){case"local":o.outgoing=!0,o.name=e.request.ruri.user,o.user=e.request.ruri.user,S(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();if(c.voicePause&&c.phoneBarDnd||E.originateInProgress)r=!1;else if(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){console.debug("getNotification -> session",n);var e=n.name?n.name+" <"+n.user+">":n.user;E.currentUser.privacyEnabled&&(e=A.mask(e)),f.create("Incoming call from: ",e,null,function(){T(n)},function(){I(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){console.error("Error creating notification for incoming call",e)})}(e.session),S(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&p(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),console.debug("xAnswerMode",l),console.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase()){var m=0==d?500:1e3*d;console.debug("auto answer enabled after:"+m+" ms"),p(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},m)}}r?(o.call_id=e.request.call_id,n&&P(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=O.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){console.debug("onProgress -> session, data",e,n);var t=!1;switch(n.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),t=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),t=!0}E.originateInProgress&&(E.originateInProgress=!1),t&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){console.log(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&P(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){console.debug("onConfirmed -> session, data",e,n);var t=document.getElementById("div_session_"+e.id.substr(0,32));t&&$(t).scope().$broadcast("timer-start"),e.confirmed=!0,"remote"===n.originator&&e.connection&&(e.connection.onaddstream=O.bind(this),_.head(e.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(e.connection.getRemoteStreams()),this.remotePlayer.play())),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(e),e.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){console.log("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){console.debug("onHold -> session, data",e,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){console.debug("onUnhold -> session, data",e,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(console.debug("onEnded -> session, data",e,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(w(),E.buttonClicked=!0),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}0===E.sessions.length&&E.currentUser.voicePause&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})}.bind(this,o)),o.on("failed",function(e,n){if(console.debug("onFailed -> session, data",e,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&w(),E.originateInProgress&&(E.originateInProgress=!1),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}}.bind(this,o)),o.on("icecandidate",function(e,n){console.debug("onIcecandidate -> session, data",e,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),p(function(){u.$apply(),console.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):I(o,486)}.bind(this)),o.on("webbar:originate",function(e){console.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),o.on("webbar:hangup",function(e){console.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];console.log("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),o.on("webbar:answer",function(e){var n;console.debug("answerHook -> payload",e),n=e.sessionId?D(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&console.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),o.on("webbar:hold",function(e){console.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.hold(a)}}.bind(this)),o.on("webbar:unhold",function(e){if(console.debug("holdHook -> payload",e),e.sessionId){var n=D(e.sessionId);n?E.unhold(n):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("sessionId required")}.bind(this)),o.on("webbar:transfer",function(e){if(console.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=D(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(n,"requestFailed","top right",3e3)}}):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("transferNumber required");else console.error("sessionId required")}.bind(this)),o.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}));for(var a=0;a<E.sessions.length;a+=1)E.sessions[a].isEstablished()&&!E.sessions[a].isOnHold().local&&E.sessions[a].sendDTMF(e)},E.call=function(){if(E.target&&E.target!==E.conf.name&&E.target!==E.conf.internal){E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var e=E.target.replace(/ /g,"");return m(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){c()})}},E.hold=function(e){console.debug("hold -> session",e),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){console.debug("refer -> session",n);var e=a.prompt().title("Transfer").textContent("Type the target").placeholder("Target").ariaLabel("Target").ok("Transfer").cancel("Cancel");a.show(e).then(function(e){return m(e)}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(n,"requestFailed","top right",3e3)}})})},E.record=function(e){console.debug("record -> session",e),a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:E.sessions}})},E.unhold=function(e){console.debug("unhold -> session",e),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=T,E.terminate=I,E.selectSession=function(e){console.debug("selectSession -> session",e),E.unhold(e)},E.typeWrapper=function(e){switch(e.key.toLowerCase()){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"*":case"#":E.type(e.key);break;case"enter":E.call()}},E.toggleDialpad=function(){E.showDialpad=!E.showDialpad},E.referAttended=function(e){console.debug("referAttended -> session",e),a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(E.sessions,{id:e.id}),isJabraEnabled:E.isJabraEnabled}})},E.closeDialpad=function(){E.showDialpad=!1},E.initDevice=R,E.putOtherCallsOnHold=function(e){if(console.debug("putOtherCallsOnHold -> session",e),1<E.sessions.length)for(var n=0;n<E.sessions.length;n+=1)E.sessions[n].id===e.id||E.sessions[n].isOnHold().remote||E.sessions[n].hold({useUpdate:!1})},E.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|-)*$/.test(e)?(E.target=e,u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):c():c()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),c())},E.start3WayConf=function(){E.isInConference=!0,E.canGoInConference=!1,E.currentConferenceSessions.push(E.sessions[0].id),E.currentConferenceSessions.push(E.sessions[1].id);var e=new AudioContext,n=E.sessions[0].connection.getSenders()[0],t=E.sessions[0].connection.getReceivers()[0];t.track.addEventListener("unmute",function(){setTimeout(function(){x()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){x()},1e3)},!1),E.sessions[0].unhold({useUpdate:!1}),E.sessions[1].unhold({useUpdate:!1}),t.track.enabled=!0,i.track.enabled=!0;var s=new MediaStream,o=e.createMediaStreamDestination();o=(e=new AudioContext).createMediaStreamDestination();var r=e.createMediaStreamSource(new MediaStream([i.track]));r.connect(o),(r=e.createMediaStreamSource(new MediaStream([n.track]))).connect(o),n.replaceTrack(o.stream.getTracks()[0]).then(function(){}),o=e.createMediaStreamDestination(),(r=e.createMediaStreamSource(new MediaStream([t.track]))).connect(o),(r=e.createMediaStreamSource(new MediaStream([a.track]))).connect(o),a.replaceTrack(o.stream.getTracks()[0]).then(function(){s.addTrack(t.track),s.addTrack(i.track);var e=document.getElementById("remote-audio");e.srcObject=s;var n=e.play();void 0!==n&&n.then(function(){}).catch(function(e){console.log(e)})})},E.patchConference=x,u.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:E.conf}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(E.isJabraEnabled=!1)}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!1)))})}),u.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),u.$on("webrtc::call",function(e,n){console.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),u.$on("webrtc::transfer",function(e,n){if(console.debug("onRemoteTransfer -> evt, data",e,n),n.target)for(var t=0;t<E.sessions.length;t+=1)if(E.sessions[t].isEstablished()&&!E.sessions[t].isOnHold().local)return m(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:N(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:N(E.sessions[t],"requestFailed","top right",3e3)}})})}),u.$on("$destroy",function(){console.debug("$destroy event fired"),o.removeAllListeners("webbar:originate"),o.removeAllListeners("webbar:hangup"),o.removeAllListeners("webbar:answer"),o.removeAllListeners("webbar:hold"),o.removeAllListeners("webbar:unhold"),o.removeAllListeners("webbar:transfer"),o.removeAllListeners("webbar:stopmonitors")})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","toasty","api","motNotification","Auth","socket","privacyManager"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(n,e,t){var a=this;a.prefixes=e,a.required=t,a.closeDialog=function(e){n.hide(e)},a.keyPress=function(e){13===e.keyCode&&this.call()},a.call=function(){n.hide(a.prefix)}}e.$inject=["$mdDialog","prefixes","required"],angular.module("app.core").controller("PrefixDialogController",e)}(),function(){"use strict";function e(i){return{restrict:"C",controller:["$scope","$element",function(e,n){function t(){n.css("display","inline"),i(a,1e3)}function a(){n.css("display","none"),i(t,1e3)}t()}],replace:!0}}function n(n,i,s,e,t){var o=this;function a(n,e){console.log("startMonitor");var t=i.defer(),a=(e||n.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){n.filename=a+".wav",n.mixmonitorid=e.mixmonitorid,n.status="rec",o.session.monitor=!0,t.resolve(n)}).catch(function(e){t.reject(e)}),t.promise}o.title="Record",o.sessions=e,o.session=t,o.closeDialog=function(){n.hide()},o.addRecording=function(){var e=n.prompt({skipHide:!0}).title("Start new recording").textContent("Type the file name.").placeholder("File name").ariaLabel("File name").initialValue(function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}()).ok("Start").cancel("Cancel");n.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(n){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:n.mixmonitorid}).$promise.then(function(e){n.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],n.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",n)}(),function(){"use strict";function e(n,s,a,i,e){var o=this;function r(e,n,t,a,i){return console.debug("onTransferCallback -> session, textContent, position, delay",e,n,t,a),function(){s.show(s.simple().textContent(n).position(t).hideDelay(a)),e.terminate(),jabra&&i&&jabra.onHook(),l()}}function l(e){n.hide(e)}o.title="Refer Attended",o.sessions=a,o.session=i,o.isJabraEnabled=e,o.sessionTarget=null,a.length&&(o.target=a[0].user),o.closeDialog=l,o.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===o.target)return e});n=t.outgoing?(e=t,o.session):(e=o.session,t);n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:r(i,"requestSucceeded","top right",3e3,o.isJabraEnabled),requestFailed:r(i,"requestFailed","top right",3e3,o.isJabraEnabled)}})}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n){var t=this;function a(e,n,t){var a;if(s[t]){if(a=_.find(e,function(e){return e.deviceId===s[t]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===n});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===n}))&&(s[t]=a.deviceId);return s[t]||null}_.remove(n,function(e){return"audioinput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)||"audiooutput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)}),s.ringingId=a(n,"audiooutput","ringingId"),s.speakerId=a(n,"audiooutput","speakerId"),s.microphoneId=a(n,"audioinput","microphoneId"),s.ringingVolume=s.ringingVolume||.5,s.speakerVolume=s.speakerVolume||.5,s.microphoneVolume=s.microphoneVolume||1,s.ringingMute=s.ringingMute||!1,s.speakerMute=s.speakerMute||!1,s.microphoneMute=s.microphoneMute||!1,t.conf=angular.copy(s),t.devices=n,t.saveSettings=function(){e.hide(t.conf)},t.closeDialog=function(){e.hide()},t.isCompatibleBrowser=function(){return"chrome"===t.conf.browserName.toLowerCase()||"opera"===t.conf.browserName.toLowerCase()||"safari"===t.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(t,a){var i=this;function s(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){s(e)},i.onDateRangeInit=function(e){var n=e.key;i.query[n]?i.pickerModels[n]=t.setSelectedDate(i.query[n]):i.pickerModels[n]={dateStart:null}},i.onMultiselectSelection=function(e,n){n&&(s(e),i.search())},i.onDateRangeSelection=function(e){var n=e.key;i.pickerModels[n].dateStart?!0===e.useFromToKeys?i.query[n]={from:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),to:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]={$gte:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),$lte:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]=void 0;i.search()},i.clearDate=function(e){var n=e.key;i.pickerModels[n]={dateStart:null},delete i.query[n],i.search()},i.clearSelection=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=!1===e.clearAll?[_.head(e.options)[t]]:[],s(e),i.search()},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),s(e),i.search()}}function n(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}n.$inject=["$filter","dateFilterLocalizationFactory"],e.$inject=["dateRangeManager","quickFilterManager"],angular.module("app.core").directive("msQuickFilter",function(){return{restrict:"E",scope:{query:"=",filters:"=",search:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-quick-filter/ms-quick-filter.html"}}).factory("dateRangeManager",n)}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,n){var t=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];n.addClass(t)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(n,e){var t=!1,a=document.createElement("audio");n.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){t||(t=!0,e.preventDefault(),i[n.model||"voiceRecording"].download({id:n.id}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(t)),a.play()}).catch(function(e){console.error(e)}))},e.append(a)}}}e.$inject=["api"],angular.module("app.core").directive("msRecording",e)}(),function(){"use strict";angular.module("app.core").directive("msResponsiveTable",function(){return{restrict:"A",link:function(e,n){var t=angular.element('<div class="ms-responsive-table-wrapper"></div>');n.after(t),t.append(n)}}})}(),function(){"use strict";function e(s,o,n,t){return{restrict:"AE",compile:function(e){if(!(t.getConfig("disableCustomScrollbars")||t.getConfig("disableCustomScrollbarsOnMobile")&&n.isMobile()))return e.addClass("ms-scroll"),function(e,n,t){var a={};function i(){PerfectScrollbar.update(n[0])}t.msScroll&&(a=e.$eval(t.msScroll)),a=angular.extend({},o.getConfig(),a),s(function(){PerfectScrollbar.initialize(n[0],a)},0),n.on("mouseenter",i),e.$watch(function(){return n.prop("scrollHeight")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$watch(function(){return n.prop("scrollWidth")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$on("$destroy",function(){n.off("mouseenter"),PerfectScrollbar.destroy(n[0])})}}}}e.$inject=["$timeout","msScrollConfig","msUtils","motionConfig"],angular.module("app.core").provider("msScrollConfig",function(){var n={wheelSpeed:1,wheelPropagation:!1,swipePropagation:!0,minScrollbarLength:null,maxScrollbarLength:null,useBothWheelAxes:!1,useKeyboard:!0,suppressScrollX:!1,suppressScrollY:!1,scrollXMarginOffset:0,scrollYMarginOffset:0,stopPropagationOnClick:!0};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){var e={getConfig:function(){return n}};return e}}).directive("msScroll",e)}(),function(){"use strict";function e(n,i,s,e){var o=this;function t(){angular.isArray(o.onSearch)?a(o.onSearch):o.onResultClick?(o.resultsLoading=!0,n.$parent.$eval("vm.search(query)",{query:o.query.filter}).then(function(e){a(e)}).catch(function(){a([])}).finally(function(){o.resultsLoading=!1})):o.onSearch()}function a(e){o.expanded&&(void 0===e||angular.isArray(e)||null===e)&&(o.selectedResultIndex=0,o.results=e)}function r(){o.expanded=!0,o.displayOn=!0,n.expand()}function l(e){!1!==e&&(o.query.filter=void 0,o.onResultClick?a(null):t()),o.expanded=!1,n.collapse()}function d(e){o.onResultClick&&o.onResultClick({item:e}),l()}function c(){var e=i.find(".ms-search-bar-results"),n=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;o.ignoreMouseEvents=!0,s.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=s(function(){o.ignoreMouseEvents=!1},250),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}}o.queryOptions={debounce:o.debounce||0},o.searchOnEnterKey=e.get().searchOnEnterKey||!1,o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.expandBar=r,o.collapseBar=l,o.blurCollapse=function(){if(!o.collapseOnBlur)return;l()},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner animate-rotate"></span></div>');n.append(i);var s={scrollEl:"#content"};s=angular.extend(s,e.msTimeline,{});var o=angular.element(s.scrollEl);a.setScrollEl(o);var r=144;function l(){o.scrollTop()+o.height()+r>i.position().top&&(i.addClass("show"),c(),e.loadMore&&e.loadMore().then(function(){i.removeClass("show"),d()},function(){i.remove()}))}function d(){o.on("scroll",l)}function c(){o.off("scroll",l)}d(),e.$on("$destroy",function(){c()})}}}}).directive("msTimelineItem",e)}(),function(){"use strict";function e(a,e,n,i,t){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0<r.days?r.days+"d ":r.hours+":"+r.minutes+":"+r.seconds}(),r.timeoutId=setTimeout(function(){s(),a.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(a.serverDateOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){n(function(n,t){try{if(a.serverDateOffset)return void n(l());i.setting.getDate().$promise.then(function(e){a.serverDateOffset=e.offset,n(moment(e.now))})}catch(e){t(e)}}).then(function(e){var n=r.startTime?moment(r.startTime):void 0;r.startTime?n.isAfter(e,"hour")||n.isBefore(e,"hour")?r.startingTime=l(n):r.startingTime=n:r.startingTime=e,s()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),a.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),a.$on("timer-start",function(){r.startTime=void 0,o()}),e.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","api","toasty"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?"},template:"<span ng-cloak>{{ vm.timer }}</span>",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.timezone=[{name:"Europe/Andorra",utcOffset:60,offsetStr:"+01:00",countries:["AD"]},{name:"Asia/Dubai",utcOffset:240,offsetStr:"+04:00",countries:["AE","OM"]},{name:"Asia/Kabul",utcOffset:270,offsetStr:"+04:30",countries:["AF"]},{name:"Europe/Tirane",utcOffset:60,offsetStr:"+01:00",countries:["AL"]},{name:"Asia/Yerevan",utcOffset:240,offsetStr:"+04:00",countries:["AM"]},{name:"Antarctica/Rothera",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Palmer",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Mawson",utcOffset:300,offsetStr:"+05:00",countries:["AQ"]},{name:"Antarctica/Davis",utcOffset:420,offsetStr:"+07:00",countries:["AQ"]},{name:"Antarctica/Casey",utcOffset:480,offsetStr:"+08:00",countries:["AQ"]},{name:"Antarctica/Vostok",utcOffset:360,offsetStr:"+06:00",countries:["AQ"]},{name:"Antarctica/DumontDUrville",utcOffset:600,offsetStr:"+10:00",countries:["AQ"]},{name:"Antarctica/Syowa",utcOffset:180,offsetStr:"+03:00",countries:["AQ"]},{name:"Antarctica/Troll",utcOffset:0,offsetStr:"+00:00",countries:["AQ"]},{name:"America/Argentina/Buenos_Aires",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Cordoba",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Salta",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Jujuy",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Tucuman",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Catamarca",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/La_Rioja",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Juan",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Mendoza",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Luis",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Rio_Gallegos",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Ushuaia",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"Pacific/Pago_Pago",utcOffset:-660,offsetStr:"-11:00",countries:["AS","UM"]},{name:"Europe/Vienna",utcOffset:60,offsetStr:"+01:00",countries:["AT"]},{name:"Australia/Lord_Howe",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Antarctica/Macquarie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Hobart",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Currie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Melbourne",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Sydney",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Broken_Hill",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Brisbane",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Lindeman",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Adelaide",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Darwin",utcOffset:570,offsetStr:"+09:30",countries:["AU"]},{name:"Australia/Perth",utcOffset:480,offsetStr:"+08:00",countries:["AU"]},{name:"Australia/Eucla",utcOffset:525,offsetStr:"+08:45",countries:["AU"]},{name:"Asia/Baku",utcOffset:240,offsetStr:"+04:00",countries:["AZ"]},{name:"America/Barbados",utcOffset:-240,offsetStr:"-04:00",countries:["BB"]},{name:"Asia/Dhaka",utcOffset:360,offsetStr:"+06:00",countries:["BD"]},{name:"Europe/Brussels",utcOffset:60,offsetStr:"+01:00",countries:["BE"]},{name:"Europe/Sofia",utcOffset:120,offsetStr:"+02:00",countries:["BG"]},{name:"Atlantic/Bermuda",utcOffset:-240,offsetStr:"-04:00",countries:["BM"]},{name:"Asia/Brunei",utcOffset:480,offsetStr:"+08:00",countries:["BN"]},{name:"America/La_Paz",utcOffset:-240,offsetStr:"-04:00",countries:["BO"]},{name:"America/Noronha",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Belem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Fortaleza",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Recife",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Araguaina",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Maceio",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Bahia",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Sao_Paulo",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Campo_Grande",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Cuiaba",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Santarem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Porto_Velho",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Boa_Vista",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Manaus",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Eirunepe",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Rio_Branco",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Nassau",utcOffset:-300,offsetStr:"-05:00",countries:["BS"]},{name:"Asia/Thimphu",utcOffset:360,offsetStr:"+06:00",countries:["BT"]},{name:"Europe/Minsk",utcOffset:180,offsetStr:"+03:00",countries:["BY"]},{name:"America/Belize",utcOffset:-360,offsetStr:"-06:00",countries:["BZ"]},{name:"America/St_Johns",utcOffset:-210,offsetStr:"-03:30",countries:["CA"]},{name:"America/Halifax",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Glace_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Moncton",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Goose_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Blanc-Sablon",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Toronto",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Nipigon",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Thunder_Bay",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Iqaluit",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Pangnirtung",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Resolute",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Atikokan",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Rankin_Inlet",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Winnipeg",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Rainy_River",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Regina",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Swift_Current",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Edmonton",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Cambridge_Bay",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Yellowknife",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Inuvik",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Creston",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Dawson_Creek",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Fort_Nelson",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Vancouver",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Whitehorse",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Dawson",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"Indian/Cocos",utcOffset:390,offsetStr:"+06:30",countries:["CC"]},{name:"Europe/Zurich",utcOffset:60,offsetStr:"+01:00",countries:["CH","DE","LI"]},{name:"Africa/Abidjan",utcOffset:0,offsetStr:"+00:00",countries:["CI","BF","GM","GN","ML","MR","SH","SL","SN","ST","TG"]},{name:"Pacific/Rarotonga",utcOffset:-600,offsetStr:"-10:00",countries:["CK"]},{name:"America/Santiago",utcOffset:-180,offsetStr:"-03:00",countries:["CL"]},{name:"Pacific/Easter",utcOffset:-300,offsetStr:"-05:00",countries:["CL"]},{name:"Asia/Shanghai",utcOffset:480,offsetStr:"+08:00",countries:["CN"]},{name:"Asia/Urumqi",utcOffset:360,offsetStr:"+06:00",countries:["CN"]},{name:"America/Bogota",utcOffset:-300,offsetStr:"-05:00",countries:["CO"]},{name:"America/Costa_Rica",utcOffset:-360,offsetStr:"-06:00",countries:["CR"]},{name:"America/Havana",utcOffset:-300,offsetStr:"-05:00",countries:["CU"]},{name:"Atlantic/Cape_Verde",utcOffset:-60,offsetStr:"-01:00",countries:["CV"]},{name:"America/Curacao",utcOffset:-240,offsetStr:"-04:00",countries:["CW","AW","BQ","SX"]},{name:"Indian/Christmas",utcOffset:420,offsetStr:"+07:00",countries:["CX"]},{name:"Asia/Nicosia",utcOffset:120,offsetStr:"+02:00",countries:["CY"]},{name:"Europe/Prague",utcOffset:60,offsetStr:"+01:00",countries:["CZ","SK"]},{name:"Europe/Berlin",utcOffset:60,offsetStr:"+01:00",countries:["DE"]},{name:"Europe/Copenhagen",utcOffset:60,offsetStr:"+01:00",countries:["DK"]},{name:"America/Santo_Domingo",utcOffset:-240,offsetStr:"-04:00",countries:["DO"]},{name:"Africa/Algiers",utcOffset:60,offsetStr:"+01:00",countries:["DZ"]},{name:"America/Guayaquil",utcOffset:-300,offsetStr:"-05:00",countries:["EC"]},{name:"Pacific/Galapagos",utcOffset:-360,offsetStr:"-06:00",countries:["EC"]},{name:"Europe/Tallinn",utcOffset:120,offsetStr:"+02:00",countries:["EE"]},{name:"Africa/Cairo",utcOffset:120,offsetStr:"+02:00",countries:["EG"]},{name:"Africa/El_Aaiun",utcOffset:0,offsetStr:"+00:00",countries:["EH"]},{name:"Europe/Madrid",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Africa/Ceuta",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Atlantic/Canary",utcOffset:0,offsetStr:"+00:00",countries:["ES"]},{name:"Europe/Helsinki",utcOffset:120,offsetStr:"+02:00",countries:["FI","AX"]},{name:"Pacific/Fiji",utcOffset:720,offsetStr:"+12:00",countries:["FJ"]},{name:"Atlantic/Stanley",utcOffset:-180,offsetStr:"-03:00",countries:["FK"]},{name:"Pacific/Chuuk",utcOffset:600,offsetStr:"+10:00",countries:["FM"]},{name:"Pacific/Pohnpei",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Pacific/Kosrae",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Atlantic/Faroe",utcOffset:0,offsetStr:"+00:00",countries:["FO"]},{name:"Europe/Paris",utcOffset:60,offsetStr:"+01:00",countries:["FR"]},{name:"Europe/London",utcOffset:0,offsetStr:"+00:00",countries:["GB","GG","IM","JE"]},{name:"Asia/Tbilisi",utcOffset:240,offsetStr:"+04:00",countries:["GE"]},{name:"America/Cayenne",utcOffset:-180,offsetStr:"-03:00",countries:["GF"]},{name:"Africa/Accra",utcOffset:0,offsetStr:"+00:00",countries:["GH"]},{name:"Europe/Gibraltar",utcOffset:60,offsetStr:"+01:00",countries:["GI"]},{name:"America/Godthab",utcOffset:-180,offsetStr:"-03:00",countries:["GL"]},{name:"America/Danmarkshavn",utcOffset:0,offsetStr:"+00:00",countries:["GL"]},{name:"America/Scoresbysund",utcOffset:-60,offsetStr:"-01:00",countries:["GL"]},{name:"America/Thule",utcOffset:-240,offsetStr:"-04:00",countries:["GL"]},{name:"Europe/Athens",utcOffset:120,offsetStr:"+02:00",countries:["GR"]},{name:"Atlantic/South_Georgia",utcOffset:-120,offsetStr:"-02:00",countries:["GS"]},{name:"America/Guatemala",utcOffset:-360,offsetStr:"-06:00",countries:["GT"]},{name:"Pacific/Guam",utcOffset:600,offsetStr:"+10:00",countries:["GU","MP"]},{name:"Africa/Bissau",utcOffset:0,offsetStr:"+00:00",countries:["GW"]},{name:"America/Guyana",utcOffset:-240,offsetStr:"-04:00",countries:["GY"]},{name:"Asia/Hong_Kong",utcOffset:480,offsetStr:"+08:00",countries:["HK"]},{name:"America/Tegucigalpa",utcOffset:-360,offsetStr:"-06:00",countries:["HN"]},{name:"America/Port-au-Prince",utcOffset:-300,offsetStr:"-05:00",countries:["HT"]},{name:"Europe/Budapest",utcOffset:60,offsetStr:"+01:00",countries:["HU"]},{name:"Asia/Jakarta",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Pontianak",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Makassar",utcOffset:480,offsetStr:"+08:00",countries:["ID"]},{name:"Asia/Jayapura",utcOffset:540,offsetStr:"+09:00",countries:["ID"]},{name:"Europe/Dublin",utcOffset:0,offsetStr:"+00:00",countries:["IE"]},{name:"Asia/Jerusalem",utcOffset:120,offsetStr:"+02:00",countries:["IL"]},{name:"Asia/Kolkata",utcOffset:330,offsetStr:"+05:30",countries:["IN"]},{name:"Indian/Chagos",utcOffset:360,offsetStr:"+06:00",countries:["IO"]},{name:"Asia/Baghdad",utcOffset:180,offsetStr:"+03:00",countries:["IQ"]},{name:"Asia/Tehran",utcOffset:210,offsetStr:"+03:30",countries:["IR"]},{name:"Atlantic/Reykjavik",utcOffset:0,offsetStr:"+00:00",countries:["IS"]},{name:"Europe/Rome",utcOffset:60,offsetStr:"+01:00",countries:["IT","SM","VA"]},{name:"America/Jamaica",utcOffset:-300,offsetStr:"-05:00",countries:["JM"]},{name:"Asia/Amman",utcOffset:120,offsetStr:"+02:00",countries:["JO"]},{name:"Asia/Tokyo",utcOffset:540,offsetStr:"+09:00",countries:["JP"]},{name:"Africa/Nairobi",utcOffset:180,offsetStr:"+03:00",countries:["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{name:"Asia/Bishkek",utcOffset:360,offsetStr:"+06:00",countries:["KG"]},{name:"Pacific/Tarawa",utcOffset:720,offsetStr:"+12:00",countries:["KI"]},{name:"Pacific/Enderbury",utcOffset:780,offsetStr:"+13:00",countries:["KI"]},{name:"Pacific/Kiritimati",utcOffset:840,offsetStr:"+14:00",countries:["KI"]},{name:"Asia/Pyongyang",utcOffset:510,offsetStr:"+08:30",countries:["KP"]},{name:"Asia/Seoul",utcOffset:540,offsetStr:"+09:00",countries:["KR"]},{name:"America/Cayman",utcOffset:-300,offsetStr:"-05:00",countries:["KY"]},{name:"Asia/Almaty",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Qyzylorda",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Aqtobe",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Aqtau",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Oral",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Beirut",utcOffset:120,offsetStr:"+02:00",countries:["LB"]},{name:"Asia/Colombo",utcOffset:330,offsetStr:"+05:30",countries:["LK"]},{name:"Africa/Monrovia",utcOffset:0,offsetStr:"+00:00",countries:["LR"]},{name:"Europe/Vilnius",utcOffset:120,offsetStr:"+02:00",countries:["LT"]},{name:"Europe/Luxembourg",utcOffset:60,offsetStr:"+01:00",countries:["LU"]},{name:"Europe/Riga",utcOffset:120,offsetStr:"+02:00",countries:["LV"]},{name:"Africa/Tripoli",utcOffset:120,offsetStr:"+02:00",countries:["LY"]},{name:"Africa/Casablanca",utcOffset:0,offsetStr:"+00:00",countries:["MA"]},{name:"Europe/Monaco",utcOffset:60,offsetStr:"+01:00",countries:["MC"]},{name:"Europe/Chisinau",utcOffset:120,offsetStr:"+02:00",countries:["MD"]},{name:"Pacific/Majuro",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Pacific/Kwajalein",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Asia/Rangoon",utcOffset:390,offsetStr:"+06:30",countries:["MM"]},{name:"Asia/Ulaanbaatar",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Hovd",utcOffset:420,offsetStr:"+07:00",countries:["MN"]},{name:"Asia/Choibalsan",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Macau",utcOffset:480,offsetStr:"+08:00",countries:["MO"]},{name:"America/Martinique",utcOffset:-240,offsetStr:"-04:00",countries:["MQ"]},{name:"Europe/Malta",utcOffset:60,offsetStr:"+01:00",countries:["MT"]},{name:"Indian/Mauritius",utcOffset:240,offsetStr:"+04:00",countries:["MU"]},{name:"Indian/Maldives",utcOffset:300,offsetStr:"+05:00",countries:["MV"]},{name:"America/Mexico_City",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Cancun",utcOffset:-300,offsetStr:"-05:00",countries:["MX"]},{name:"America/Merida",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Monterrey",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Matamoros",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Mazatlan",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Chihuahua",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Ojinaga",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Hermosillo",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Tijuana",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Santa_Isabel",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Bahia_Banderas",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"Asia/Kuala_Lumpur",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Asia/Kuching",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Africa/Maputo",utcOffset:120,offsetStr:"+02:00",countries:["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{name:"Africa/Windhoek",utcOffset:120,offsetStr:"+02:00",countries:["NA"]},{name:"Pacific/Noumea",utcOffset:660,offsetStr:"+11:00",countries:["NC"]},{name:"Pacific/Norfolk",utcOffset:660,offsetStr:"+11:00",countries:["NF"]},{name:"Africa/Lagos",utcOffset:60,offsetStr:"+01:00",countries:["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{name:"America/Managua",utcOffset:-360,offsetStr:"-06:00",countries:["NI"]},{name:"Europe/Amsterdam",utcOffset:60,offsetStr:"+01:00",countries:["NL"]},{name:"Europe/Oslo",utcOffset:60,offsetStr:"+01:00",countries:["NO","SJ"]},{name:"Asia/Kathmandu",utcOffset:345,offsetStr:"+05:45",countries:["NP"]},{name:"Pacific/Nauru",utcOffset:720,offsetStr:"+12:00",countries:["NR"]},{name:"Pacific/Niue",utcOffset:-660,offsetStr:"-11:00",countries:["NU"]},{name:"Pacific/Auckland",utcOffset:780,offsetStr:"+13:00",countries:["NZ","AQ"]},{name:"Pacific/Chatham",utcOffset:825,offsetStr:"+13:45",countries:["NZ"]},{name:"America/Panama",utcOffset:-300,offsetStr:"-05:00",countries:["PA"]},{name:"America/Lima",utcOffset:-300,offsetStr:"-05:00",countries:["PE"]},{name:"Pacific/Tahiti",utcOffset:-600,offsetStr:"-10:00",countries:["PF"]},{name:"Pacific/Marquesas",utcOffset:-570,offsetStr:"-09:30",countries:["PF"]},{name:"Pacific/Gambier",utcOffset:-540,offsetStr:"-09:00",countries:["PF"]},{name:"Pacific/Port_Moresby",utcOffset:600,offsetStr:"+10:00",countries:["PG"]},{name:"Pacific/Bougainville",utcOffset:660,offsetStr:"+11:00",countries:["PG"]},{name:"Asia/Manila",utcOffset:480,offsetStr:"+08:00",countries:["PH"]},{name:"Asia/Karachi",utcOffset:300,offsetStr:"+05:00",countries:["PK"]},{name:"Europe/Warsaw",utcOffset:60,offsetStr:"+01:00",countries:["PL"]},{name:"America/Miquelon",utcOffset:-180,offsetStr:"-03:00",countries:["PM"]},{name:"Pacific/Pitcairn",utcOffset:-480,offsetStr:"-08:00",countries:["PN"]},{name:"America/Puerto_Rico",utcOffset:-240,offsetStr:"-04:00",countries:["PR"]},{name:"Asia/Gaza",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Asia/Hebron",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Europe/Lisbon",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Madeira",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Azores",utcOffset:-60,offsetStr:"-01:00",countries:["PT"]},{name:"Pacific/Palau",utcOffset:540,offsetStr:"+09:00",countries:["PW"]},{name:"America/Asuncion",utcOffset:-180,offsetStr:"-03:00",countries:["PY"]},{name:"Asia/Qatar",utcOffset:180,offsetStr:"+03:00",countries:["QA","BH"]},{name:"Indian/Reunion",utcOffset:240,offsetStr:"+04:00",countries:["RE","TF"]},{name:"Europe/Bucharest",utcOffset:120,offsetStr:"+02:00",countries:["RO"]},{name:"Europe/Belgrade",utcOffset:60,offsetStr:"+01:00",countries:["RS","BA","HR","ME","MK","SI"]},{name:"Europe/Kaliningrad",utcOffset:120,offsetStr:"+02:00",countries:["RU"]},{name:"Europe/Moscow",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Simferopol",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Volgograd",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Samara",utcOffset:240,offsetStr:"+04:00",countries:["RU"]},{name:"Asia/Yekaterinburg",utcOffset:300,offsetStr:"+05:00",countries:["RU"]},{name:"Asia/Omsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novosibirsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novokuznetsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Krasnoyarsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Irkutsk",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Chita",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Yakutsk",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Khandyga",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Vladivostok",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Sakhalin",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Ust-Nera",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Magadan",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Srednekolymsk",utcOffset:660,offsetStr:"+11:00",countries:["RU"]},{name:"Asia/Kamchatka",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Anadyr",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Riyadh",utcOffset:180,offsetStr:"+03:00",countries:["SA","KW","YE"]},{name:"Pacific/Guadalcanal",utcOffset:660,offsetStr:"+11:00",countries:["SB"]},{name:"Indian/Mahe",utcOffset:240,offsetStr:"+04:00",countries:["SC"]},{name:"Africa/Khartoum",utcOffset:180,offsetStr:"+03:00",countries:["SD","SS"]},{name:"Europe/Stockholm",utcOffset:60,offsetStr:"+01:00",countries:["SE"]},{name:"Asia/Singapore",utcOffset:480,offsetStr:"+08:00",countries:["SG"]},{name:"America/Paramaribo",utcOffset:-180,offsetStr:"-03:00",countries:["SR"]},{name:"America/El_Salvador",utcOffset:-360,offsetStr:"-06:00",countries:["SV"]},{name:"Asia/Damascus",utcOffset:120,offsetStr:"+02:00",countries:["SY"]},{name:"America/Grand_Turk",utcOffset:-240,offsetStr:"-04:00",countries:["TC"]},{name:"Africa/Ndjamena",utcOffset:60,offsetStr:"+01:00",countries:["TD"]},{name:"Indian/Kerguelen",utcOffset:300,offsetStr:"+05:00",countries:["TF"]},{name:"Asia/Bangkok",utcOffset:420,offsetStr:"+07:00",countries:["TH","KH","LA","VN"]},{name:"Asia/Dushanbe",utcOffset:300,offsetStr:"+05:00",countries:["TJ"]},{name:"Pacific/Fakaofo",utcOffset:780,offsetStr:"+13:00",countries:["TK"]},{name:"Asia/Dili",utcOffset:540,offsetStr:"+09:00",countries:["TL"]},{name:"Asia/Ashgabat",utcOffset:300,offsetStr:"+05:00",countries:["TM"]},{name:"Africa/Tunis",utcOffset:60,offsetStr:"+01:00",countries:["TN"]},{name:"Pacific/Tongatapu",utcOffset:780,offsetStr:"+13:00",countries:["TO"]},{name:"Europe/Istanbul",utcOffset:120,offsetStr:"+02:00",countries:["TR"]},{name:"America/Port_of_Spain",utcOffset:-240,offsetStr:"-04:00",countries:["TT","AG","AI","BL","DM","GD","GP","KN","LC","MF","MS","VC","VG","VI"]},{name:"Pacific/Funafuti",utcOffset:720,offsetStr:"+12:00",countries:["TV"]},{name:"Asia/Taipei",utcOffset:480,offsetStr:"+08:00",countries:["TW"]},{name:"Europe/Kiev",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Uzhgorod",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Zaporozhye",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Pacific/Wake",utcOffset:720,offsetStr:"+12:00",countries:["UM"]},{name:"America/New_York",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Detroit",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Louisville",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Monticello",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Indianapolis",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vincennes",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Winamac",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Marengo",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Petersburg",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vevay",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Chicago",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Tell_City",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Knox",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Menominee",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Center",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/New_Salem",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Beulah",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Denver",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Boise",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Phoenix",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Los_Angeles",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Metlakatla",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Anchorage",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Juneau",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Sitka",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Yakutat",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Nome",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Adak",utcOffset:-600,offsetStr:"-10:00",countries:["US"]},{name:"Pacific/Honolulu",utcOffset:-600,offsetStr:"-10:00",countries:["US","UM"]},{name:"America/Montevideo",utcOffset:-180,offsetStr:"-03:00",countries:["UY"]},{name:"Asia/Samarkand",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"Asia/Tashkent",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"America/Caracas",utcOffset:-270,offsetStr:"-04:30",countries:["VE"]},{name:"Asia/Ho_Chi_Minh",utcOffset:420,offsetStr:"+07:00",countries:["VN"]},{name:"Pacific/Efate",utcOffset:660,offsetStr:"+11:00",countries:["VU"]},{name:"Pacific/Wallis",utcOffset:720,offsetStr:"+12:00",countries:["WF"]},{name:"Pacific/Apia",utcOffset:840,offsetStr:"+14:00",countries:["WS"]},{name:"Africa/Johannesburg",utcOffset:120,offsetStr:"+02:00",countries:["ZA","LS","SZ"]}]}],templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var a=this;a.filter=[],a.filtered=!1,a.fontSize=20,a.getCount=function(e){var n=0;if(e){a.fontSize=e.attrs[2]&&e.attrs[2].value?parseInt(e.attrs[2].value)-parseInt(e.attrs[2].value)%2:20,e.attrs[1].value&&e.attrs[1].value.length?(a.filtered=!0,a.filter=_.intersection(e.voiceQueuesSelected,e.attrs[1].value)):(a.filtered=!1,a.filter=e.voiceQueuesSelected);for(var t=0;t<e.voiceQueues.rows.length;t+=1)_.includes(a.filter,e.voiceQueues.rows[t].id)&&(n+=e.voiceQueues.rows[t][e.attrs[0].value]?parseInt(e.voiceQueues.rows[t][e.attrs[0].value]):0)}return n}})}(),function(){"use strict";function e(o,e){var r=this;r.filter=[],r.filtered=!1,r.properties=[],r.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},r.getMultiBarChart=function(e){e&&(e.attrs&&function(e){r.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(r.filtered=!0,r.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(r.filtered=!1,r.filter=e.voiceQueuesSelected);if(r.multiBarChart.series.length>r.properties.length){var n=r.multiBarChart.series.length-r.properties.length;r.multiBarChart.series.splice(0,n),r.multiBarChart.data.splice(0,n)}for(var t=0;t<r.properties.length;t+=1){if(r.multiBarChart.series[t]=o.instant("TOOLS."+r.properties[t].toUpperCase()),_.isNil(r.multiBarChart.data[t])&&(r.multiBarChart.data[t]=[]),r.multiBarChart.labels.length>r.filter.length){var a=r.multiBarChart.labels.length-r.filter.length;r.multiBarChart.labels.splice(0,a),r.multiBarChart.data[t].splice(0,a)}for(var i=0,s=0;i<e.voiceQueues.rows.length;i+=1)_.includes(r.filter,e.voiceQueues.rows[i].id)&&(r.multiBarChart.labels[s]=e.voiceQueues.rows[i].name,r.multiBarChart.data[t][s]=e.voiceQueues.rows[i][r.properties[t]]?parseInt(e.voiceQueues.rows[i][r.properties[t]]):0,s+=1)}}(e),e.foreground&&function(e){r.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<r.multiBarChart.options.scales.xAxes.length;n+=1)r.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<r.multiBarChart.options.scales.yAxes.length;t+=1)r.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase());for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return Promise.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(t,a,n,i,s){var o={},r={},l={},d={};function c(){r=i.getCurrentUser();var e=n.localStorage.getItem("motion2.home:"+r.id);if(l=e?JSON.parse(e).currentSidebarTab:"dashboard",d=n.localStorage.getItem("motion2.home."+l+":"+r.id)){var a=JSON.parse(d);a.drafts?r.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,s.mask(t))}):a.drafts={},d=a}else d={drafts:{}};return d.drafts}function m(){_.isEmpty(o.drafts)?delete d.drafts:d.drafts=o.drafts,n.localStorage.setItem("motion2.home."+l+":"+r.id,JSON.stringify(d))}return o.init=function(){o.drafts=c()},o.getByInteraction=function(n){return o.drafts=c(),_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n})},o.removeByInteraction=function(n){o.drafts=c();var e=_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete o.drafts[e.id],m())},o.add=function(e){o.drafts=c();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};o.drafts[t.id]=t,m()},o.update=function(e){o.drafts=c();var n=o.drafts[e.id];n&&(n.content=e.message,o.drafts[e.id]=n,m())},o.open=function(e){o.drafts=c();var n=o.drafts[e];n&&t.$broadcast("open"+_.startCase(l)+"Draft",n)},o.remove=function(e){o.drafts=c(),o.drafts[e]&&(delete o.drafts[e],m())},o}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function o(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:s,set:o,update:function(e,n,t){var a=s(e);t?a[t]=n:a=n;return o(e,a)}}}e.$inject=["$window"],angular.module("app.core").factory("localStorageManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.get(),a=0;if(t)switch(n){case"email":a=t.privacyPolicyEmail;break;case"number":a=t.privacyPolicyNumber;break;default:a=t.privacyPolicyName}return _.isNil(a)?e:0===a||a>e.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(e,s){return{setPlaceholder:function(a){var i;return e(function(n,e){try{if(_.isEmpty(a.resources))i=s.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))i=a.placeholder?s.instant(a.placeholder):s.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)i=s.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";i=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(i)}catch(e){console.log("QuickFilterManager::setPlaceholder",e),n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";angular.module("app.core").factory("settingsManager",function(){var n={};return{get:function(){return n},set:function(e){e&&(n=e.toJSON())}}})}(),function(){"use strict";function e(c,m){function u(e,n,t){if(_.isEmpty(n))return t;for(var a=0;a<n.length;a++){var i=n[a].key,s=_.find(e,function(e){return e[i]===n[a].value});s&&(_.some(t,["id",s.id])||(s.canSelect=!1,t.push(s)))}return t}return{getResources:function(a,i,s,o,r,l,d){return c(function(t,n){o||(o={}),d||(d="get"),a[s][d](o).$promise.then(function(e){var t=e.rows;if("admin"===i.role)return t;var n=m.getSectionId(s,l);return a.userProfileSection.get({userProfileId:i.userProfileId,sectionId:n}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n)return n.autoAssociation?t:a.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(t,{id:e.resourceId})});return u(t,r,n)});c.resolve().then(function(){return e=s,_.includes(["voiceContext"],e)?(o.defaultEntry=1,a[s][d](o).$promise.then(function(e){return e.rows})):[];var e}).then(function(e){return u(t,r,e)})})}).then(function(e){var n={rows:_.orderBy(e,[o.sort]),count:e.length};t(n)}).catch(function(e){n(e)})})}}}e.$inject=["$q","msNavigationService"],angular.module("app.core").factory("userProfileManager",e)}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var n=Date.now()-new Date(e);return n<36e5?moment(e).fromNow():n<864e5?moment(e).format("HH:mm"):n<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(n){return function(e){return n.trustAsHtml(e)}}e.$inject=["$sce"],angular.module("app.core").filter("toTrusted",e).filter("htmlToPlaintext",function(){return function(e){return String(e).replace(/<[^>]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<n.length;o++){var r=n[o];if(i.id===r){s=!0;break}}s&&t.push(i)}return t}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,n,t){if(0===e.length||!t||0===t.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<t.length;r++){var l=t[r];if(-1<s[n].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("orderByDate",function(){return function(e){var n=[];return angular.forEach(e,function(e){n.push(e)}),n.sort(function(e,n){return e.hasOwnProperty("openedAt")&&n.hasOwnProperty("openedAt")?e.openedAt>n.openedAt?1:-1:1}),n}})}(),function(){"use strict";angular.module("app.core").filter("snakecase",function(){return function(e){return e?_.snakeCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("startcase",function(){return function(e){return e?_.startCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,t){if(0===e.length||0===t.length)return e;var a=[];return e.forEach(function(e){var n=t.every(function(n){var t=!1;return e.tags.forEach(function(e){e.name!==n.name||(t=!0)}),t});n&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,n){if(0!==e.length&&0!==n.length){if(e.length<n.length)return[];var t=[],a=n.every(function(n){var t=!1;return e.forEach(function(e){e.name!==n.name||(t=!0)}),t});return a&&t.push(e),t}}})}(),function(){"use strict";angular.module("app.core").filter("toInteger",function(){return function(e){if(e&&"string"==typeof e)return parseInt(e)}})}(),function(){"use strict";function m(e,n,t,a){this.id=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),this.title=e,this.body=n,this.accept=t,this.reject=a,this.close=i}function u(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}function i(){var t=this;navigator.serviceWorker.ready.then(function(e){e.getNotifications().then(function(e){var n=_.find(e,function(e){return e.data.id===t.id});n&&n.close()})})}angular.module("app.dashboards").provider("motNotification",function(){return{$get:[function(){var d,t,c=[];"serviceWorker"in navigator&&u()?navigator.serviceWorker.register("notification.js").then(function(e){(d=e).update(),d.installing?t=d.installing:d.waiting?t=d.waiting:d.active&&(t=d.active)}).catch(function(e){console.error("Service worker registration failed",e)}):console.error("Service Worker is not supported");return navigator.serviceWorker.addEventListener("message",function(e){if(e.source===t){var n=_.find(c,{id:e.data.id});if(n)switch(e.data.action){case"accept":n.accept&&n.accept();break;case"reject":n.reject&&n.reject()}}}),{create:function(e,i,s,o,r,l){return new Promise(function(t,n){var a;u()&&(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)?(a=new m(e||"MyTitle",i||"MyBody",o,r),c.push(a),a?window.Notification.requestPermission().then(function(e){if("granted"===e)return d.showNotification(a.title,{body:a.body,requireInteraction:!0,icon:s||"assets/images/business/queueCampaigns.jpg",data:{id:a.id},actions:[{action:"accept",title:"Accept"},{action:"reject",title:"Reject"}]})}).then(function(e){if(l){for(var n=0;n<c.length;n++)c[n].close();t()}else t(a)}).catch(function(e){n(e)}):n(new Error("Notification creating error"))):t()})}}}]}})}(),function(){"use strict";function e(l,d,c){return{resolve:function(e,n){var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return d.error("apiResolver.resolve requires correct action parameter (ResourceName@methodName)"),!1;var o=l.defer(),r=function(e){for(var n=e.split("."),t=c,a=0;a<n.length;a++){if(angular.isUndefined(t[n[a]])){d.error('Resource part "'+n[a]+'" is not defined!'),t=!1;break}t=t[n[a]]}return t||!1}(a);r?r[i](s,function(e){o.resolve(e)},function(e){o.reject(e)}):(d.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!'));return o.promise}}}e.$inject=["$q","$log","api"],angular.module("app.core").factory("apiResolver",e)}(),function(){"use strict";function e(e){return{showLoadingIndicator:function(){e.loadingProgress=!0},hideLoadingIndicator:function(){e.loadingProgress=!1}}}e.$inject=["$rootScope"],angular.module("app.core").factory("LoadingIndicatorService",e)}(),function(){"use strict";angular.module("app.core").provider("msApi",function(){var t=angular.injector(["ng"]).get("$log"),a="",v=[];function n(e){a=e}function i(){return a}function s(e,n){angular.isString(e)?angular.isArray(n)?v[e]={url:a+(n[0]||""),paramDefaults:n[1]||[],actions:n[2]||[],options:n[3]||{}}:t.error('"resource" must be an array and it must follow $resource definition'):t.error('"path" must be a string (eg. `dashboard.project`)')}this.setBaseUrl=n,this.getBaseUrl=i,this.getApiObject=function(){return v},this.register=s,this.$get=["$log","$q","$resource","$rootScope",function(m,u,p,g){var e={setBaseUrl:n,getBaseUrl:i,register:s,resolve:function(e,n){g.$broadcast("msApi::resolveStart");var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var o=u.defer(),r=v[a];if(r){var l=p(r.url,r.paramDefaults,r.actions,r.options);l[i](s,function(e){o.resolve(e),g.$broadcast("msApi::resolveSuccess")},function(e){o.reject(e),g.$broadcast("msApi::resolveError")})}else m.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!');return o.promise},request:function(e,n,t,a){g.$broadcast("msApi::requestStart");var i=e.split("@"),s=i[0],o=i[1],r=n||{};if(!s||!o)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var l=u.defer(),d=v[s];if(d){var c=p(d.url,d.paramDefaults,d.actions,d.options);c[o](r,function(e){g.$broadcast("msApi::requestSuccess"),l.resolve(e),angular.isDefined(t)&&angular.isFunction(t)&&t(e)},function(e){g.$broadcast("msApi::requestError"),l.reject(e),angular.isDefined(a)&&angular.isFunction(a)&&a(e)})}else m.error('Resource "'+s+'" is not defined in the api service!'),l.reject('Resource "'+s+'" is not defined in the api service!');return l.promise}};return e}]})}(),function(){"use strict";function e(l){var e=new MobileDetect(l.navigator.userAgent),d=null;return{exists:function(e,n){return-1<n.indexOf(e)},detectBrowser:function(){if(d)return d;var e=[{string:l.navigator.userAgent,subString:"Edge",versionSearch:"Edge",identity:"Edge"},{string:l.navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:l.navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:l.navigator.vendor,subString:"Apple",versionSearch:"Version",identity:"Safari"},{prop:l.opera,identity:"Opera"},{string:l.navigator.vendor,subString:"iCab",identity:"iCab"},{string:l.navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:l.navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:l.navigator.vendor,subString:"Camino",identity:"Camino"},{string:l.navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:l.navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:l.navigator.userAgent,subString:"Trident/7",identity:"Explorer",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],n=[{string:l.navigator.platform,subString:"Win",identity:"Windows"},{string:l.navigator.platform,subString:"Mac",identity:"Mac"},{string:l.navigator.platform,subString:"Linux",identity:"Linux"},{string:l.navigator.platform,subString:"iPhone",identity:"iPhone"},{string:l.navigator.platform,subString:"iPod",identity:"iPod"},{string:l.navigator.platform,subString:"iPad",identity:"iPad"},{string:l.navigator.platform,subString:"Android",identity:"Android"}],i="";function t(e){for(var n=0;n<e.length;n++){var t=e[n].string,a=e[n].prop;if(i=e[n].versionSearch||e[n].identity,t){if(-1!==t.indexOf(e[n].subString))return e[n].identity}else if(a)return e[n].identity}}function a(e){var n=e.indexOf(i);if(-1!==n)return parseInt(e.substring(n+i.length+1))}var s=t(e)||"unknown-browser",o=a(l.navigator.userAgent)||a(l.navigator.appVersion)||"unknown-version",r=t(n)||"unknown-os";return s=s.toLowerCase(),o=s+"-"+o,r=r.toLowerCase(),d={browser:s,version:o,os:r}},guidGenerator:function(){var e=function(){return(65536*(1+Math.random())||0).toString(16).substring(1)};return e()+e()+e()+e()+e()+e()},isMobile:function(){return e.mobile()},toggleInArray:function(e,n){-1===n.indexOf(e)?n.push(e):n.splice(n.indexOf(e),1)},firstLastDayMonth:function(){return{$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()}}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,n){var t=this;t.themes=n.themes,t.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],t.layoutStyles=[{label:"Vertical Navigation",value:"verticalNavigation",figure:"/assets/images/theme-options/vertical-nav.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar",value:"verticalNavigationFullwidthToolbar",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar 2",value:"verticalNavigationFullwidthToolbar2",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar-2.jpg"},{label:"Horizontal Navigation",value:"horizontalNavigation",figure:"/assets/images/theme-options/horizontal-nav.jpg"},{label:"Content with Toolbar",value:"contentWithToolbar",figure:"/assets/images/theme-options/content-with-toolbar.jpg"},{label:"Content Only",value:"contentOnly",figure:"/assets/images/theme-options/content-only.jpg"}],t.layoutMode="wide",t.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",t.setActiveTheme=function(e){n.setActiveTheme(e)},t.getActiveTheme=function(){return n.themes.active},t.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===t.layoutMode)},t.updateLayoutStyle=function(){e.put("motion.layoutStyle",t.layoutStyle),location.reload()}}function n(n){return{restrict:"E",scope:{},controller:"MsThemeOptionsController as vm",templateUrl:"app/core/theme-options/theme-options.html",compile:function(e){return e.addClass("ms-theme-options"),function(e){e.toggleOptionsSidenav=function(){n("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],n.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",n)}(),function(){"use strict";function e(i,a,s){var o={};return{generate:function(){var e=angular.copy(s.getRegisteredThemes()),a=angular.copy(s.getRegisteredPalettes());angular.forEach(e,function(t){o[t.name]={},angular.forEach(t.colors,function(e,n){o[t.name][n]={name:e.name,levels:{default:{color:l(a[e.name][e.hues.default].value),contrast1:l(a[e.name][e.hues.default].contrast,1),contrast2:l(a[e.name][e.hues.default].contrast,2),contrast3:l(a[e.name][e.hues.default].contrast,3),contrast4:l(a[e.name][e.hues.default].contrast,4)},hue1:{color:l(a[e.name][e.hues["hue-1"]].value),contrast1:l(a[e.name][e.hues["hue-1"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-1"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-1"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-1"]].contrast,4)},hue2:{color:l(a[e.name][e.hues["hue-2"]].value),contrast1:l(a[e.name][e.hues["hue-2"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-2"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-2"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-2"]].contrast,4)},hue3:{color:l(a[e.name][e.hues["hue-3"]].value),contrast1:l(a[e.name][e.hues["hue-3"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-3"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-3"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-3"]].contrast,4)}}}})}),function(e){var n=angular.copy(e);angular.forEach(n,function(t){angular.forEach(t,function(e,n){t[n]=e.levels,t[n].color=e.levels.default.color,t[n].contrast1=e.levels.default.contrast1,t[n].contrast2=e.levels.default.contrast2,t[n].contrast3=e.levels.default.contrast3,t[n].contrast4=e.levels.default.contrast4,delete t[n].default})}),s.setThemesList(n);var t=i.get("motion.selectedTheme");t?s.setActiveTheme(t):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,n){var t,a,i,s,o;(r={})["@themeName"]=n,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,t){angular.forEach(e,function(e,n){r["@"+a+d(t)+d(n)]=e})})}),t=r,a=new RegExp(Object.keys(t).join("|"),"gi"),i='/* Content hack because they wont fix */\n/* https://github.com/angular/material/pull/8067 */\n[md-theme="@themeName"] md-content.md-hue-1,\nmd-content.md-@themeName-theme.md-hue-1 {\n    color: @backgroundHue1Contrast1;\n    background-color: @backgroundHue1Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-2,\nmd-content.md-@themeName-theme.md-hue-2 {\n    color: @backgroundHue2Contrast1;\n    background-color: @backgroundHue2Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-3,\n md-content.md-@themeName-theme.md-hue-3 {\n    color: @backgroundHue3Contrast1;\n    background-color: @backgroundHue3Color;\n}\n\n/* Text Colors */\n[md-theme="@themeName"] a {\n    color: @accentDefaultColor;\n}\n\n[md-theme="@themeName"] .secondary-text,\n[md-theme="@themeName"] .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .hint-text,\n[md-theme="@themeName"] .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .fade-text,\n[md-theme="@themeName"] .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Primary */\n[md-theme="@themeName"] .md-primary-bg {\n    background-color: @primaryDefaultColor;\n    color: @primaryDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg .secondary-text,\n[md-theme="@themeName"] .md-primary-bg .icon {\n    color: @primaryDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg .hint-text,\n[md-theme="@themeName"] .md-primary-bg .disabled-text {\n    color: @primaryDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg .fade-text,\n[md-theme="@themeName"] .md-primary-bg .divider {\n    color: @primaryDefaultContrast4;\n}\n\n/* Primary, Hue-1 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 {\n    background-color: @primaryHue1Color;\n    color: @primaryHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .icon {\n    color: @primaryHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .disabled-text {\n    color: @primaryHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .divider {\n    color: @primaryHue1Contrast4;\n}\n\n/* Primary, Hue-2 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 {\n    background-color: @primaryHue2Color;\n    color: @primaryHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .icon {\n    color: @primaryHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .disabled-text {\n    color: @primaryHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .divider {\n    color: @primaryHue2Contrast4;\n}\n\n/* Primary, Hue-3 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 {\n    background-color: @primaryHue3Color;\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .icon {\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .disabled-text {\n    color: @primaryHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .divider {\n    color: @primaryHue3Contrast4;\n}\n\n/* Primary foreground */\n[md-theme="@themeName"] .md-primary-fg {\n    color: @primaryDefaultColor !important;\n}\n\n/* Primary foreground, Hue-1 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-1 {\n    color: @primaryHue1Color !important;\n}\n\n/* Primary foreground, Hue-2 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-2 {\n    color: @primaryHue2Color !important;\n}\n\n/* Primary foreground, Hue-3 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-3 {\n    color: @primaryHue3Color !important;\n}\n\n/* Accent */\n[md-theme="@themeName"] .md-accent-bg {\n    background-color: @accentDefaultColor;\n    color: @accentDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg .secondary-text,\n[md-theme="@themeName"] .md-accent-bg .icon {\n    color: @accentDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg .hint-text,\n[md-theme="@themeName"] .md-accent-bg .disabled-text {\n    color: @accentDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg .fade-text,\n[md-theme="@themeName"] .md-accent-bg .divider {\n    color: @accentDefaultContrast4;\n}\n\n/* Accent, Hue-1 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 {\n    background-color: @accentHue1Color;\n    color: @accentHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .icon {\n    color: @accentHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .disabled-text {\n    color: @accentHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .divider {\n    color: @accentHue1Contrast4;\n}\n\n/* Accent, Hue-2 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 {\n    background-color: @accentHue2Color;\n    color: @accentHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .icon {\n    color: @accentHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .disabled-text {\n    color: @accentHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .divider {\n    color: @accentHue2Contrast4;\n}\n\n/* Accent, Hue-3 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 {\n    background-color: @accentHue3Color;\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .icon {\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .disabled-text {\n    color: @accentHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .divider {\n    color: @accentHue3Contrast4;\n}\n\n/* Accent foreground */\n[md-theme="@themeName"] .md-accent-fg {\n    color: @accentDefaultColor !important;\n}\n\n/* Accent foreground, Hue-1 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-1 {\n    color: @accentHue1Color !important;\n}\n\n/* Accent foreground, Hue-2 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-2 {\n    color: @accentHue2Color !important;\n}\n\n/* Accent foreground, Hue-3 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-3 {\n    color: @accentHue3Color !important;\n}\n\n/* Warn */\n[md-theme="@themeName"] .md-warn-bg {\n    background-color: @warnDefaultColor;\n    color: @warnDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg .secondary-text,\n[md-theme="@themeName"] .md-warn-bg .icon {\n    color: @warnDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg .hint-text,\n[md-theme="@themeName"] .md-warn-bg .disabled-text {\n    color: @warnDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg .fade-text,\n[md-theme="@themeName"] .md-warn-bg .divider {\n    color: @warnDefaultContrast4;\n}\n\n/* Warn, Hue-1 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 {\n    background-color: @warnHue1Color;\n    color: @warnHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .icon {\n    color: @warnHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .disabled-text {\n    color: @warnHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .divider {\n    color: @warnHue1Contrast4;\n}\n\n/* Warn, Hue-2 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 {\n    background-color: @warnHue2Color;\n    color: @warnHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .icon {\n    color: @warnHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .disabled-text {\n    color: @warnHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .divider {\n    color: @warnHue2Contrast4;\n}\n\n/* Warn, Hue-3 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 {\n    background-color: @warnHue3Color;\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .icon {\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .disabled-text {\n    color: @warnHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .divider {\n    color: @warnHue3Contrast4;\n}\n\n/* Warn foreground */\n[md-theme="@themeName"] .md-warn-fg {\n    color: @warnDefaultColor !important;\n}\n\n/* Warn foreground, Hue-1 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-1 {\n    color: @warnHue1Color !important;\n}\n\n/* Warn foreground, Hue-2 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-2 {\n    color: @warnHue2Color !important;\n}\n\n/* Warn foreground, Hue-3 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-3 {\n    color: @warnHue3Color !important;\n}\n\n/* Background */\n[md-theme="@themeName"] .md-background-bg {\n    background-color: @backgroundDefaultColor;\n    color: @backgroundDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg .secondary-text,\n[md-theme="@themeName"] .md-background-bg .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg .hint-text,\n[md-theme="@themeName"] .md-background-bg .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg .fade-text,\n[md-theme="@themeName"] .md-background-bg .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Background, Hue-1 */\n[md-theme="@themeName"] .md-background-bg.md-hue-1 {\n    background-color: @backgroundHue1Color;\n    color: @backgroundHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .icon {\n    color: @backgroundHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .disabled-text {\n    color: @backgroundHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .divider {\n    color: @backgroundHue1Contrast4;\n}\n\n/* Background, Hue-2 */\n[md-theme="@themeName"] .md-background-bg.md-hue-2 {\n    background-color: @backgroundHue2Color;\n    color: @backgroundHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .icon {\n    color: @backgroundHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .disabled-text {\n    color: @backgroundHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .divider {\n    color: @backgroundHue2Contrast4;\n}\n\n/* Background, Hue-3 */\n[md-theme="@themeName"] .md-background-bg.md-hue-3 {\n    background-color: @backgroundHue3Color;\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .icon {\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .disabled-text {\n    color: @backgroundHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .divider {\n    color: @backgroundHue3Contrast4;\n}\n\n/* Background foreground */\n[md-theme="@themeName"] .md-background-fg {\n    color: @backgroundDefaultColor !important;\n}\n\n/* Background foreground, Hue-1 */\n[md-theme="@themeName"] .md-background-fg.md-hue-1 {\n    color: @backgroundHue1Color !important;\n}\n\n/* Background foreground, Hue-2 */\n[md-theme="@themeName"] .md-background-fg.md-hue-2 {\n    color: @backgroundHue2Color !important;\n}\n\n/* Background foreground, Hue-3 */\n[md-theme="@themeName"] .md-background-fg.md-hue-3 {\n    color: @backgroundHue3Color !important;\n}'.replace(a,function(e){return t[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i<t.length;i+=1)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.code="",t.send=!1,t.error=e.params,t.sendReport=function(){n.post("/api/jira",t.error).then(function(e){t.send=!0,e.data&&(t.code=e.data.id)},function(e){t.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.cookieAlertHide=n.get("motion.cookieAlertHide:"+t.currentUser.id)||!1,t.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){n.success({title:t.instant("FORGOTPASSWORD.LINK_SENT"),msg:t.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&n.error({title:t.instant("FORGOTPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},s.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general")}}e.$inject=["Auth","toasty","$translate","$state","api"],angular.module("app.forgot").controller("ForgotPasswordController",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.newsAlertHide=n.get("motion.newsAlertHide:"+t.currentUser.id)||!1,t.newsAlertOnClose=function(){n.put("motion.newsAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e,o){var r={getResourcesByRole:function(e,n,t,a,i,s){return o.getResources(r,e,n,t,a,i,s)}};return r.baseUrl="api/",r.auth=e(r.baseUrl+"auth/local",{},{local:{method:"post",url:r.baseUrl+"auth/local"},forgot:{method:"post",url:r.baseUrl+"auth/local/forgot"},reset:{method:"post",url:r.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},user:{method:"get",url:r.baseUrl+"auth/local/user/:token",params:{token:"@token"}},google:{method:"post",url:r.baseUrl+"auth/google"}}),r.jira=e(r.baseUrl+"jira"),r.rpc=e(r.baseUrl+"rpc",{},{startMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:r.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:r.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:r.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:r.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:r.baseUrl+"rpc/sms/queues"},getWhatsappQueues:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues"},getOpenchannelQueues:{method:"get",url:r.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:r.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:r.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:r.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:r.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:r.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:r.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:r.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:r.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:r.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:r.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:r.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getOpenchannelQueuesIdWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/:id/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/fax/queues/waitinginteractions"},getWhatsappQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:r.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:r.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:r.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:r.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:r.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:r.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),r.version=e(r.baseUrl+"version",{},{fetch:{method:"get",url:r.baseUrl+"version/fetch"},reset:{method:"get",url:r.baseUrl+"version/reset"},pull:{method:"get",url:r.baseUrl+"version/pull"},restart:{method:"get",url:r.baseUrl+"version/restart"},migrations:{method:"get",url:r.baseUrl+"version/migrations"}}),r.system=e(r.baseUrl+"system",{},{killProcess:{method:"get",url:r.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),r.pm2=e(r.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),r.user=e(r.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"users/describe"},clone:{method:"post",url:r.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/contacts"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"users/create_many"},changePassword:{isArray:!1,method:"put",url:r.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/avatar"},getOpenTabs:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/open_tabs"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/recordings"},getScreenRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/screen_recordings"},getChatInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax/interactions"},getWhatsappInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp/interactions"},login:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/unpause"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_interactions"},addWhatsappInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_interactions"},removeWhatsappInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_websites"},getWhatsappAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp_accounts"},addWhatsappAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_accounts"},removeWhatsappAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_accounts"},getSquareProjects:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/square_projects"},addSquareProjects:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/square_projects"},removeSquareProjects:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/square_projects"},getScheduledCalls:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/scheduled_calls"},getApiKey:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/api_key"},createApiKey:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/api_key"},removeApiKey:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/api_key"},whoami:{isArray:!1,method:"get",url:r.baseUrl+"users/whoami"},getPresence:{isArray:!1,method:"get",url:r.baseUrl+"users/presence"}}),r.voiceChanSpy=e(r.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:r.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceContext=e(r.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:r.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceExtension=e(r.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:r.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"voice/extensions/:id/applications"}}),r.voiceMusicOnHold=e(r.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:r.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:r.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:r.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:r.baseUrl+"voice/mohs/:id/sounds"}}),r.voiceQueue=e(r.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/blacklists"}}),r.voiceRecording=e(r.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:r.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},downloads:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/downloads"},runTranscribe:{isArray:!1,method:"post",url:r.baseUrl+"voice/recordings/:id/transcribe"},downloadTranscribe:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/transcribe",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.screenRecording=e(r.baseUrl+"screen/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"screen/recordings/describe"},clone:{method:"post",url:r.baseUrl+"screen/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"screen/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceMail=e(r.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/:id/messages"}}),r.voiceMailMessage=e(r.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceCallReport=e(r.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceDialReport=e(r.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceAgentReport=e(r.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueueReport=e(r.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/reports/index"}}),r.memberReport=e(r.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"members/reports/describe"},clone:{method:"post",url:r.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.trunk=e(r.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"trunks/describe"},clone:{method:"post",url:r.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceTransferReport=e(r.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailServerOut=e(r.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:r.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailAccount=e(r.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:r.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/users"}}),r.mailQueue=e(r.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/queues/describe"},clone:{method:"post",url:r.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/users"}}),r.mailSubstatus=e(r.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:r.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailInteraction=e(r.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:r.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailMessage=e(r.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/messages/describe"},clone:{method:"post",url:r.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailApplication=e(r.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/applications/describe"},clone:{method:"post",url:r.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailQueueReport=e(r.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.dashboard=e(r.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:r.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:r.baseUrl+"dashboards/:id/items"}}),r.dashboardItem=e(r.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxAccount=e(r.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:r.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/users"}}),r.faxApplication=e(r.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/applications/describe"},clone:{method:"post",url:r.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxInteraction=e(r.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:r.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxMessage=e(r.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/messages/describe"},clone:{method:"post",url:r.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxQueue=e(r.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/queues/describe"},clone:{method:"post",url:r.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/users"}}),r.faxQueueReport=e(r.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsAccount=e(r.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:r.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/users"}}),r.smsApplication=e(r.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/applications/describe"},clone:{method:"post",url:r.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsInteraction=e(r.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:r.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.smsMessage=e(r.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/messages/describe"},clone:{method:"post",url:r.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/messages/:id/status"}}),r.smsQueue=e(r.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/queues/describe"},clone:{method:"post",url:r.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/users"}}),r.openchannelAccount=e(r.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/send"}}),r.openchannelApplication=e(r.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelInteraction=e(r.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.openchannelMessage=e(r.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/reject"}}),r.openchannelQueue=e(r.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/users"}}),r.chatWebsite=e(r.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/websites/describe"},clone:{method:"post",url:r.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/users"}}),r.openchannelQueueReport=e(r.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatApplication=e(r.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/applications/describe"},clone:{method:"post",url:r.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInteraction=e(r.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:r.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},createVidaooSession:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/vidaoo"},customUpdate:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.chatMessage=e(r.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/reject"}}),r.chatOfflineMessage=e(r.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueue=e(r.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/queues/describe"},clone:{method:"post",url:r.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/users"}}),r.chatGroup=e(r.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/groups/describe"},clone:{method:"post",url:r.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:r.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/messages"}}),r.chatProactiveAction=e(r.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:r.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCompany=e(r.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/companies/describe"},clone:{method:"post",url:r.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/companies/:id/contacts"}}),r.cmContact=e(r.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:r.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/tags"},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_finals"},getJscriptySessions:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/jscripty_sessions"},uploadCsv:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/csv"},upload:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload"},import:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload/:id"},getJourney:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/journey"}}),r.cmHopper=e(r.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/preview"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"}}),r.cmHopperBlack=e(r.baseUrl+"cm/hopper_black/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_black/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_black/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperFinal=e(r.baseUrl+"cm/hopper_final/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_final/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_final/:id/clone",params:{includeAll:"@includeAll"}},countContactsQueueCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/voice/queue/countAttributes/:id"},countContactsIvrCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/campaign/countAttributes/:id"},moveContactsQueueCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/queue/moveContacts/:id"},moveContactsIvrCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/campaign/moveContacts/:id"},checkContactHopper:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper_final/checkContactHopper"}}),r.cmHopperHistory=e(r.baseUrl+"cm/hopper_history/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_history/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_history/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCustomField=e(r.baseUrl+"cm/custom_fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/custom_fields/describe"},clone:{method:"post",url:r.baseUrl+"cm/custom_fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.action=e(r.baseUrl+"actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"actions/describe"},clone:{method:"post",url:r.baseUrl+"actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.automation=e(r.baseUrl+"automations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"automations/describe"},clone:{method:"post",url:r.baseUrl+"automations/:id/clone",params:{includeAll:"@includeAll"}},addConditions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/conditions"},getConditions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/conditions"},addActions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/actions"}}),r.cannedAnswer=e(r.baseUrl+"canned_answers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"canned_answers/describe"},clone:{method:"post",url:r.baseUrl+"canned_answers/:id/clone",params:{includeAll:"@includeAll"}}}),r.disposition=e(r.baseUrl+"dispositions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dispositions/describe"},clone:{method:"post",url:r.baseUrl+"dispositions/:id/clone",params:{includeAll:"@includeAll"}}}),r.condition=e(r.baseUrl+"conditions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"conditions/describe"},clone:{method:"post",url:r.baseUrl+"conditions/:id/clone",params:{includeAll:"@includeAll"}}}),r.interval=e(r.baseUrl+"intervals/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"intervals/describe"},clone:{method:"post",url:r.baseUrl+"intervals/:id/clone",params:{includeAll:"@includeAll"}},addInterval:{isArray:!1,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals"},getIntervals:{isArray:!1,method:"get",url:r.baseUrl+"intervals/:id/sub_intervals"},addIntervals:{isArray:!0,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals/create_many"}}),r.pause=e(r.baseUrl+"pauses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"pauses/describe"},clone:{method:"post",url:r.baseUrl+"pauses/:id/clone",params:{includeAll:"@includeAll"}}}),r.cdr=e(r.baseUrl+"cdr/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cdr/describe"},clone:{method:"post",url:r.baseUrl+"cdr/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueuesLog=e(r.baseUrl+"voiceQueuesLog/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voiceQueuesLog/describe"},clone:{method:"post",url:r.baseUrl+"voiceQueuesLog/:id/clone",params:{includeAll:"@includeAll"}}}),r.schedule=e(r.baseUrl+"schedules/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"schedules/describe"},clone:{method:"post",url:r.baseUrl+"schedules/:id/clone",params:{includeAll:"@includeAll"}},run:{isArray:!1,method:"get",url:r.baseUrl+"schedules/:id/run"}}),r.sound=e(r.baseUrl+"sounds/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sounds/describe"},clone:{method:"post",url:r.baseUrl+"sounds/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"sounds/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},delete:{isArray:!1,method:"delete",url:r.baseUrl+"sounds/:id"}}),r.tag=e(r.baseUrl+"tags/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"tags/describe"},clone:{method:"post",url:r.baseUrl+"tags/:id/clone",params:{includeAll:"@includeAll"}}}),r.template=e(r.baseUrl+"templates/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"templates/describe"},clone:{method:"post",url:r.baseUrl+"templates/:id/clone",params:{includeAll:"@includeAll"}}}),r.trigger=e(r.baseUrl+"triggers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"triggers/describe"},clone:{method:"post",url:r.baseUrl+"triggers/:id/clone",params:{includeAll:"@includeAll"}},addAllCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/all_conditions"},addAnyCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/any_conditions"},getAllConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/all_conditions"},getAnyConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/any_conditions"},addAction:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/actions"}}),r.variable=e(r.baseUrl+"variables/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"variables/describe"},clone:{method:"post",url:r.baseUrl+"variables/:id/clone",params:{includeAll:"@includeAll"}}}),r.integration=e(r.baseUrl+"integrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.integrationReport=e(r.baseUrl+"integrations/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/reports/describe"},clone:{method:"post",url:r.baseUrl+"integrations/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticCustomReport=e(r.baseUrl+"analytics/custom_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/custom_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/custom_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/query"}}),r.analyticDefaultReport=e(r.baseUrl+"analytics/default_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/default_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/default_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/default_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/query"}}),r.analyticExtractedReport=e(r.baseUrl+"analytics/extracted_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/extracted_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/extracted_reports/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"analytics/extracted_reports/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.analyticMetric=e(r.baseUrl+"analytics/metrics/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/metrics/describe"},clone:{method:"post",url:r.baseUrl+"analytics/metrics/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticFieldReport=e(r.baseUrl+"analytics/field_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/field_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/field_reports/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:r.baseUrl+"analytics/field_reports/create_many",isArray:!0},bulkDestroy:{method:"delete",url:r.baseUrl+"analytics/field_reports/destroy_many",isArray:!0},addFields:{isArray:!0,method:"post",url:r.baseUrl+"analytics/field_reports/:id/create_many"}}),r.analyticTreeReport=e(r.baseUrl+"analytics/tree_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/tree_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/tree_reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSalesforceAccount=e(r.baseUrl+"integrations/salesforce/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/fields"}}),r.intSalesforceConfiguration=e(r.baseUrl+"integrations/salesforce/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/descriptions"}}),r.intSalesforceField=e(r.baseUrl+"integrations/salesforce/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSugarcrmAccount=e(r.baseUrl+"integrations/sugarcrm/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/fields"}}),r.intSugarcrmConfiguration=e(r.baseUrl+"integrations/sugarcrm/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/descriptions"}}),r.intSugarcrmField=e(r.baseUrl+"integrations/sugarcrm/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDeskAccount=e(r.baseUrl+"integrations/desk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/fields"}}),r.intDeskConfiguration=e(r.baseUrl+"integrations/desk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/tags"}}),r.intDeskField=e(r.baseUrl+"integrations/desk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZohoAccount=e(r.baseUrl+"integrations/zoho/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/fields"}}),r.intZohoConfiguration=e(r.baseUrl+"integrations/zoho/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/descriptions"}}),r.intZohoField=e(r.baseUrl+"integrations/zoho/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZendeskAccount=e(r.baseUrl+"integrations/zendesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/fields"}}),r.intZendeskConfiguration=e(r.baseUrl+"integrations/zendesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"}}),r.intZendeskField=e(r.baseUrl+"integrations/zendesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshdeskAccount=e(r.baseUrl+"integrations/freshdesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/fields"}}),r.intFreshdeskConfiguration=e(r.baseUrl+"integrations/freshdesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"}}),r.intFreshdeskField=e(r.baseUrl+"integrations/freshdesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intVtigerAccount=e(r.baseUrl+"integrations/vtiger/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/fields"}}),r.intVtigerConfiguration=e(r.baseUrl+"integrations/vtiger/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/descriptions"}}),r.intVtigerField=e(r.baseUrl+"integrations/vtiger/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intServicenowAccount=e(r.baseUrl+"integrations/servicenow/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/fields"}}),r.intServicenowConfiguration=e(r.baseUrl+"integrations/servicenow/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/descriptions"}}),r.intServicenowField=e(r.baseUrl+"integrations/servicenow/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDynamics365Account=e(r.baseUrl+"integrations/dynamics365/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/fields"}}),r.intDynamics365Configuration=e(r.baseUrl+"integrations/dynamics365/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/descriptions"}}),r.intDynamics365Field=e(r.baseUrl+"integrations/dynamics365/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshsalesAccount=e(r.baseUrl+"integrations/freshsales/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/fields"}}),r.intFreshsalesConfiguration=e(r.baseUrl+"integrations/freshsales/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/configurations/:id/clone",params:{includeAll:"@includeAll"}},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/descriptions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/fields"}}),r.intFreshsalesField=e(r.baseUrl+"integrations/freshsales/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.network=e(r.baseUrl+"networks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"networks/describe"},clone:{method:"post",url:r.baseUrl+"networks/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueueReport=e(r.baseUrl+"chat/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInternalMessage=e(r.baseUrl+"chat/internal/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/internal/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/internal/messages/:id/clone",params:{includeAll:"@includeAll"}},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"chat/internal/messages/users"}}),r.jscriptyAnswerReport=e(r.baseUrl+"jscripty/answers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/answers/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/answers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyQuestionReport=e(r.baseUrl+"jscripty/questions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/questions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/questions/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptySessionReport=e(r.baseUrl+"jscripty/sessions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/sessions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/sessions/reports/:id/clone",params:{includeAll:"@includeAll"}},getQuestions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/sessions/reports/:id/questions"}}),r.smsQueueReport=e(r.baseUrl+"sms/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReport=e(r.baseUrl+"square/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReportDetail=e(r.baseUrl+"square/details/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/details/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/details/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyProject=e(r.baseUrl+"jscripty/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/projects/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/projects/:id/clone",params:{includeAll:"@includeAll"}},getSessions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/sessions"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/answers"},getSummary:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/summary",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.setting=e(r.baseUrl+"settings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"settings/describe"},clone:{method:"post",url:r.baseUrl+"settings/:id/clone",params:{includeAll:"@includeAll"}},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo"},addLogoLogin:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo_login"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo"},getLogoLogin:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo_login"},gdpr:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/gdpr"},addPreferred:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/preferred"},getPreferred:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/preferred"},addFavicon:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/favicon"},getFavicon:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/favicon"},getDate:{isArray:!1,method:"get",url:r.baseUrl+"settings/now"}}),r.squareOdbc=e(r.baseUrl+"square/odbc/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/odbc/describe"},clone:{method:"post",url:r.baseUrl+"square/odbc/:id/clone",params:{includeAll:"@includeAll"}},test:{isArray:!1,method:"get",url:r.baseUrl+"square/odbc/:id/test"}}),r.squareProject=e(r.baseUrl+"square/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/projects/describe"},clone:{method:"post",url:r.baseUrl+"square/projects/:id/clone",params:{includeAll:"@includeAll"}},addUsers:{isArray:!0,method:"post",url:r.baseUrl+"square/projects/:id/users"},removeUsers:{isArray:!1,method:"delete",url:r.baseUrl+"square/projects/:id/users"},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"square/projects/:id/users"}}),r.squareRecording=e(r.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/recordings/describe"},clone:{method:"post",url:r.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.squareMessage=e(r.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/messages/describe"},clone:{method:"post",url:r.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.team=e(r.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"teams/describe"},clone:{method:"post",url:r.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:r.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"teams/:id/users"}}),r.license=e(r.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"license/describe"},clone:{method:"post",url:r.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}}}),r.campaign=e(r.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"campaigns/describe"},clone:{method:"post",url:r.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/blacklists"}}),r.migration=e(r.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"migrations/describe"},clone:{method:"post",url:r.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.attachment=e(r.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"attachments/describe"},clone:{method:"post",url:r.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.plugin=e(r.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"plugins/describe"},clone:{method:"post",url:r.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:r.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:r.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:r.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:r.baseUrl+"plugins/webhook"}}),r.mailTransferReport=e(r.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatTransferReport=e(r.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxTransferReport=e(r.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelTransferReport=e(r.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsTransferReport=e(r.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmList=e(r.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/lists/describe"},clone:{method:"post",url:r.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:r.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/fields"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/users"}}),r.voicePrefix=e(r.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:r.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/users"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/teams"}}),r.userProfile=e(r.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfiles/describe"},clone:{method:"post",url:r.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/sections"},getSections:{isArray:!0,method:"get",url:r.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:r.baseUrl+"userProfiles/:id/resources"}}),r.userProfileSection=e(r.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),r.userProfileResource=e(r.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),r.userNotification=e(r.baseUrl+"userNotifications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userNotifications/describe"},clone:{method:"post",url:r.baseUrl+"userNotifications/:id/clone",params:{includeAll:"@includeAll"}},sendUserNotification:{isArray:!1,method:"post",url:r.baseUrl+"userNotifications/"}}),r.whatsappAccount=e(r.baseUrl+"whatsapp/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/accounts/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/users"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/applications"},notify:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/notify"},send:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/send"}}),r.whatsappApplication=e(r.baseUrl+"whatsapp/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/applications/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappInteraction=e(r.baseUrl+"whatsapp/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/interactions/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.whatsappMessage=e(r.baseUrl+"whatsapp/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/messages/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/messages/:id/status"}}),r.whatsappQueueReport=e(r.baseUrl+"whatsapp/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappTransferReport=e(r.baseUrl+"whatsapp/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappQueue=e(r.baseUrl+"whatsapp/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/queues/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/users"}}),r.cloudProvider=e(r.baseUrl+"cloudProviders/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cloudProviders/describe"},clone:{method:"post",url:r.baseUrl+"cloudProviders/:id/clone",params:{includeAll:"@includeAll"}}}),r.realtime=e(r.baseUrl+"realtime",{},{getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),r}e.$inject=["$resource","userProfileManager"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,n){n.setConfig({position:"top-right",sound:!1,html:!0,theme:"material"}),e.useLoader("$translatePartialLoader",{urlTemplate:"{part}/i18n/{lang}.json"}),e.preferredLanguage("en"),e.fallbackLanguage("en"),e.useSanitizeValueStrategy(null)}e.$inject=["$translateProvider","toastyConfigProvider"],angular.module("motion").config(e)}(),function(){"use strict";angular.module("motion")}(),function(){"use strict";function e(e,n,t,a){var i=this;i.themes=e.themes,i.direction="ltr";var s=t.get("motion.language");s&&(n.use(s),0<=["ar","fa","he"].indexOf(s)&&a.setting.get({id:1}).$promise.then(function(e){e&&e.rtlSupport&&(i.direction="rtl")}).catch(function(e){e&&toasty.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})}))}e.$inject=["motionTheming","$translate","$cookies","api"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var n=new Date,t=new Date(e);return t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?a("date")(t.getTime(),"shortTime"):t.getDate()===n.getDate()-1&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(t.getTime(),"shortTime"):a("date")(t.getTime(),"MMM d, y h:mm a")}}function n(e){return{Today:e.instant("DASHBOARDS.TODAY"),Yesterday:e.instant("DASHBOARDS.YESTERDAY"),"This Week":e.instant("DASHBOARDS.THIS_WEEK"),"Last Week":e.instant("DASHBOARDS.LAST_WEEK"),"This Month":e.instant("DASHBOARDS.THIS_MONTH"),"Last Month":e.instant("DASHBOARDS.LAST_MONTH"),"This Year":e.instant("DASHBOARDS.THIS_YEAR"),"Last Year":e.instant("DASHBOARDS.LAST_YEAR"),January:e.instant("DASHBOARDS.JANUARY"),February:e.instant("DASHBOARDS.FEBRUARY"),March:e.instant("DASHBOARDS.MARCH"),April:e.instant("DASHBOARDS.APRIL"),May:e.instant("DASHBOARDS.MAY"),June:e.instant("DASHBOARDS.JUNE"),July:e.instant("DASHBOARDS.JULY"),August:e.instant("DASHBOARDS.AUGUST"),September:e.instant("DASHBOARDS.SEPTEMBER"),October:e.instant("DASHBOARDS.OCTOBER"),November:e.instant("DASHBOARDS.NOVEMBER"),December:e.instant("DASHBOARDS.DECEMBER"),Mon:e.instant("DASHBOARDS.MON"),Tue:e.instant("DASHBOARDS.TUE"),Wed:e.instant("DASHBOARDS.WED"),Thu:e.instant("DASHBOARDS.THU"),Fri:e.instant("DASHBOARDS.FRI"),Sat:e.instant("DASHBOARDS.SAT"),Sun:e.instant("DASHBOARDS.SUN")}}e.$inject=["$filter","$translate"],n.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,n,t){var a,i={},s=0;for(a in e)if(t<=s&&(i[a]=e[a]),++s===t+n)break;return i}}).filter("formatdate",e).factory("IndexFactory",function(){var e=[{value:"jan"},{value:"feb"},{value:"mar"},{value:"apr"},{value:"may"},{value:"jun"},{value:"jul"},{value:"aug"},{value:"sep"},{value:"oct"},{value:"nov"},{value:"dec"}],n=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],t=[{value:"mon"},{value:"tue"},{value:"wed"},{value:"thu"},{value:"fri"},{value:"sat"},{value:"sun"}],a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];return{getMonthName:function(){return e},getMonthNumber:function(){return n},getDaysOfWeek:function(){return t},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",n).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,n,t){var a;t.html5Mode(!0),n.otherwise("/dashboards/general"),angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.get("motion.layoutStyle")||"verticalNavigation",s={verticalNavigation:{main:"app/core/layouts/vertical-navigation.html",toolbar:"app/toolbar/layouts/vertical-navigation/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html",header:"app/header/layouts/vertical-navigation/header.html",footer:"app/footer/layouts/vertical-navigation/footer.html"},verticalNavigationFullwidthToolbar:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html"},verticalNavigationFullwidthToolbar2:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar-2/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html"},horizontalNavigation:{main:"app/core/layouts/horizontal-navigation.html",toolbar:"app/toolbar/layouts/horizontal-navigation/toolbar.html",navigation:"app/navigation/layouts/horizontal-navigation/navigation.html"},contentOnly:{main:"app/core/layouts/content-only.html",toolbar:"",navigation:""},contentWithToolbar:{main:"app/core/layouts/content-with-toolbar.html",toolbar:"app/toolbar/layouts/content-with-toolbar/toolbar.html",navigation:""}};e.state("app",{abstract:!0,views:{"main@":{templateUrl:s[i].main,controller:"MainController as vm"},"toolbar@app":{templateUrl:s[i].toolbar,controller:"ToolbarController as vm"},"navigation@app":{templateUrl:s[i].navigation,controller:"NavigationController as vm"},"quickPanel@app":{templateUrl:"app/quick-panel/quick-panel.html",controller:"QuickPanelController as vm"},"header@app":{templateUrl:s[i].header,controller:"HeaderController as vm"},"footer@app":{templateUrl:s[i].footer,controller:"FooterController as vm"}},resolve:{license:["apiResolver",function(e){return e.resolve("license@get")}],setting:["apiResolver","settingsManager",function(e,n){return e.resolve("setting@get",{id:1}).then(function(e){return n.set(e),e})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,n){e.onStart({},n.showLoadingIndicator),e.onFinish({},n.hideLoadingIndicator)}e.$inject=["$transitions","LoadingIndicatorService"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i,o={};function s(){a.$broadcast("socket:connect"),i&&i.connected||(i=io({query:e.getCurrentUser()?"id="+e.getCurrentUser().id:void 0,transports:["websocket","polling"]})).once("disconnect",n)}function n(e){i.once("connect",s),"logout"===e?i.removeAllListeners():a.$broadcast("socket:disconnect"),i&&i.connected&&i.disconnect()}function r(e,n,t){o[e]||(o[e]=[]),o[e].push({wrapper:n,fn:t})}return{connect:s,disconnect:n,getListeners:function(e){return e?o[e]:o},on:function(e,n){n=n||angular.noop,i||s();var t=function(){var e=arguments;a.$applyAsync(function(){n.apply(i,e)})};r(e,t,n),i.on(e,t)},onWithoutApply:function(e,n){n=n||angular.noop,i||s();var t=function(){n.apply(i,arguments)};r(e,t,n),i.on(e,t)},emit:function(e,n,t){t=t||angular.noop,i||s(),i.emit(e,n,function(){var e=arguments;a.$applyAsync(function(){t.apply(i,e)})})},removeAllListeners:function(e){var n;i||s(),i.removeAllListeners(e),n=e,_.isEmpty(o[n])||delete o[n]},removeListener:function(e,n){i||s();var t=function(e,n){var t=o[e];if(!_.isEmpty(t))for(var a=0;a<t.length;a++){var i=t[a];if(i.fn===n){var s=i.wrapper;return t.splice(a,1),s}}}(e,n);i.removeListener(e,t)}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.progresslogin=!1,r.googleSsoEnabled=!1,r.login=function(){return r.progresslogin=!0,r.message="",s.login(r.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){r.message=e.data?e.data.message:e.message}).finally(function(){r.progresslogin=!1})},r.loginOauth=function(e){r.message="",t.location.href=s.loginSSO(e)},r.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),r.progresslogin=!0,e.put("motion.token",n.params.token),i.user.get({id:n.params.userId}).$promise.then(function(e){e&&(s.setCurrentUser(e),n.go("app.dashboards.general"))}).finally(function(){r.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}r.googleSsoEnabled=o.googleSsoEnabled},r.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting"],angular.module("app.login").controller("LoginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_EXTRACTEDREPORT",g.extractedReport=angular.copy(l),g.extractedReports=r,g.newExtractedReport=!1,g.extractedReport||(g.extractedReport={},g.title="ANALYTICS.NEW_EXTRACTEDREPORT",g.newExtractedReport=!0),g.addNewExtractedReport=function(){g.errors=[],d.analyticExtractedReport.save(g.extractedReport).$promise.then(function(e){g.extractedReports.unshift(e.toJSON()),o.success({title:"ExtractedReport properly created",msg:g.extractedReport.name?g.extractedReport.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveExtractedReport=function(){g.errors=[],d.analyticExtractedReport.update({id:g.extractedReport.id},g.extractedReport).$promise.then(function(e){var n=_.find(g.extractedReports,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ExtractedReport properly saved!",msg:g.extractedReport.name?g.extractedReport.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteExtractedReport=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The extractedReport will be deleted.").ariaLabel("Delete ExtractedReport").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticExtractedReport.delete({id:g.extractedReport.id}).$promise.then(function(){_.remove(g.extractedReports,{id:g.extractedReport.id}),o.success({title:"ExtractedReport properly deleted!",msg:(g.extractedReport.name||"extractedReport")+" has been deleted!"}),v(g.extractedReport)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","extractedReports","extractedReport","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditExtractedReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.extractedReports=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="extractedReports",f.listOrder="",f.listOrderAsc=null,f.selectedExtractedReports=[],f.query={fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{extractedReport:e,extractedReports:f.extractedReports.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.analyticExtractedReport.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.savename;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("extractedReport")+"?").htmlContent("<b>"+(e.name||"extractedReport")+"</b> will be deleted.").ariaLabel("delete extractedReport").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getExtractedReports=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticExtractedReport.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ExtractedReports",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditExtractedReport=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{extractedReport:n,extractedReports:f.extractedReports.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteExtractedReport=y,f.exportSelectedExtractedReports=function(){var e=angular.copy(f.selectedExtractedReports);return f.selectedExtractedReports=[],e},f.deleteSelectedExtractedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent("<b>"+f.selectedExtractedReports.length+" selected</b> will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedExtractedReports.forEach(function(e){y(e)}),f.selectedExtractedReports=[]})},f.deselectExtractedReports=function(){f.selectedExtractedReports=[]},f.selectAllExtractedReports=function(){f.selectedExtractedReports=f.extractedReports.rows};var b=!0,A=1;function E(e){f.extractedReports=e||{count:0,rows:[]}}function y(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(f.extractedReports.rows,{id:e.id}),f.extractedReports.count-=1,f.extractedReports.rows.length||f.getExtractedReports(),p.success({title:_.startCase("ExtractedReport")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticExtractedReport",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getExtractedReports())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","extractedReports","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("ExtractedReportsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_METRIC",g.metric=angular.copy(l),g.metrics=r,g.newMetric=!1,g.metric||(g.metric={table:"report_agent"},g.title="ANALYTICS.NEW_METRIC",g.newMetric=!0),g.addNewMetric=function(){g.errors=[],d.analyticMetric.save(g.metric).$promise.then(function(e){g.metrics.unshift(e.toJSON()),o.success({title:"Metric properly created",msg:g.metric.name?g.metric.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMetric=function(){g.errors=[],d.analyticMetric.update({id:g.metric.id},g.metric).$promise.then(function(e){var n=_.find(g.metrics,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Metric properly saved!",msg:g.metric.name?g.metric.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMetric=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The metric will be deleted.").ariaLabel("Delete Metric").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticMetric.delete({id:g.metric.id}).$promise.then(function(){_.remove(g.metrics,{id:g.metric.id}),o.success({title:"Metric properly deleted!",msg:(g.metric.name||"metric")+" has been deleted!"}),v(g.metric)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","metrics","metric","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditMetricDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.metrics=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="metrics",f.listOrder="",f.listOrderAsc=null,f.selectedMetrics=[],f.query={fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,page:1},f.arraytable=_.keyBy([{option:"Agent Report",value:"'report_agent'"},{option:"Call Report",value:"'report_call'"},{option:"CDR",value:"'cdr'"},{option:"Chat Website",value:"'chat_websites'"},{option:"Chat Interaction",value:"'chat_interactions'"},{option:"Chat Messages",value:"'chat_messages'"},{option:"Chat Offline Messages",value:"'chat_offline_messages'"},{option:"Chat Queues",value:"'chat_queues'"},{option:"Chat Report Queue",value:"'report_chat_queue'"},{option:"Chat Report Transfer",value:"'report_chat_transfer'"},{option:"Companies",value:"'cm_companies'"},{option:"Call transfer report",value:"'report_call_transfer'"},{option:"Contacts",value:"'cm_contacts'"},{option:"CSquare Report",value:"'report_square'"},{option:"CSquare Details Report",value:"'report_square_details'"},{option:"Dial Report",value:"'report_dial'"},{option:"Dialer Hopper Processing",value:"'cm_hopper'"},{option:"Dialer Hopper Logs",value:"'cm_hopper_history'"},{option:"Dialer Hopper Final",value:"'cm_hopper_final'"},{option:"Email Account",value:"'mail_accounts'"},{option:"Email Interaction",value:"'mail_interactions'"},{option:"Email Messages",value:"'mail_messages'"},{option:"Email Queues",value:"'mail_queues'"},{option:"Email Report Queue",value:"'report_mail_queue'"},{option:"Email Report Transfer",value:"'report_mail_transfer'"},{option:"Fax Account",value:"'fax_accounts'"},{option:"Fax Interaction",value:"'fax_interactions'"},{option:"Fax Messages",value:"'fax_messages'"},{option:"Fax Queues",value:"'fax_queues'"},{option:"Fax Report Queue",value:"'report_fax_queue'"},{option:"Fax Report Transfer",value:"'report_fax_transfer'"},{option:"Jscripty Sessions",value:"'report_jscripty_sessions'"},{option:"Jscripty Questions",value:"'report_jscripty_questions'"},{option:"Jscripty Answers",value:"'report_jscripty_answers'"},{option:"Lists",value:"'cm_lists'"},{option:"Member Report",value:"'report_member'"},{option:"Openchannel Account",value:"'openchannel_accounts'"},{option:"Openchannel Interaction",value:"'openchannel_interactions'"},{option:"Openchannel Messages",value:"'openchannel_messages'"},{option:"Openchannel Queues",value:"'openchannel_queues'"},{option:"Openchannel Report Queue",value:"'report_openchannel_queue'"},{option:"Openchannel Report Transfer",value:"'report_openchannel_transfer'"},{option:"Queue Report",value:"'report_queue'"},{option:"SMS Account",value:"'sms_accounts'"},{option:"SMS Interaction",value:"'sms_interactions'"},{option:"SMS Messages",value:"'sms_messages'"},{option:"SMS Queues",value:"'sms_queues'"},{option:"SMS Report Queue",value:"'report_sms_queue'"},{option:"SMS Report Transfer",value:"'report_sms_transfer'"},{option:"Users",value:"'users'"},{option:"Voice Recordings",value:"'voice_recordings'"},{option:"Whatsapp Account",value:"'whatsapp_accounts'"},{option:"Whatsapp Interaction",value:"'whatsapp_interactions'"},{option:"Whatsapp Messages",value:"'whatsapp_messages'"},{option:"Whatsapp Queues",value:"'whatsapp_queues'"},{option:"Whatsapp Report Queue",value:"'report_whatsapp_queue'"},{option:"Whatsapp Report Transfer",value:"'report_whatsapp_transfer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{metric:e,metrics:f.metrics.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("metric")+"?").htmlContent("<b>"+(e.name||"metric")+"</b> will be deleted.").ariaLabel("delete metric").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMetrics=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticMetric.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Metrics",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMetric=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{metric:n,metrics:f.metrics.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMetric=y,f.exportSelectedMetrics=function(){var e=angular.copy(f.selectedMetrics);return f.selectedMetrics=[],e},f.deleteSelectedMetrics=function(e){var n=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent("<b>"+f.selectedMetrics.length+" selected</b> will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMetrics.forEach(function(e){y(e)}),f.selectedMetrics=[]})},f.deselectMetrics=function(){f.selectedMetrics=[]},f.selectAllMetrics=function(){f.selectedMetrics=f.metrics.rows};var b=!0,A=1;function E(e){f.metrics=e||{count:0,rows:[]}}function y(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(f.metrics.rows,{id:e.id}),f.metrics.count-=1,f.metrics.rows.length||f.getMetrics(),p.success({title:_.startCase("Metric")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticMetric",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMetrics())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","metrics","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("MetricsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o){var r=this;function l(){n.hide()}r.errors=[],r.report=angular.copy(t),r.report.name+="-copy",r.treeCustomData=o,r.treeCustomConfig={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},r.treeCustomEvents={select_node:function(e,n){r.currentNode=n.node}},r.copyReport=function(){var t;r.errors=[],i.analyticCustomReport.save({name:r.report.name,description:r.report.description,table:r.report.table,conditions:r.report.conditions,joins:r.report.joins,parent:r.currentNode.id}).$promise.then(function(e){t=e,a.success({title:"Report properly copied!",msg:r.report.name?r.report.name+" has been copied!":""});var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=r.report.id,i.analyticFieldReport.get(n).$promise}).then(function(e){var e=_.map(e.rows,function(e){return _.extend({},e,{CustomReportId:t.id})});return i.analyticFieldReport.bulkCreate(e).$promise}).then(function(){a.success({title:"Fields copied!",msg:"Fields has been copied!"}),l()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:COPYREPORT",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","treeCustomData"],angular.module("app.analytics").controller("CopyReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){n.hide()}c.errors=[],c.joinTables=[],c.title="ANALYTICS.EDIT_REPORT",c.crudPermissions=d,c.report=angular.copy(i),c.reports=a,c.newReport=!1,c.tables=l.getMap(),c.joinTypes=[{key:"join",value:"Join"},{key:"left_join",value:"Left Join"},{key:"right_join",value:"Right Join"},{key:"cross_join",value:"Cross Join"}],c.report||(c.report={name:"",table:"report_agent",description:"",parent:r.id},c.title="ANALYTICS.NEW_REPORT",c.newReport=!0),c.addNewReport=function(){c.errors=[],c.report.joins=_.map(c.joinTables||[],function(e){return{parentKey:e.parentKey,foreignTable:e.name,foreignKey:e.foreignKey,type:e.type.toLowerCase()}}),c.report.joins=JSON.stringify(c.report.joins),s[o].save(c.report).$promise.then(function(e){c.reports.unshift(e),t.success({title:"Report properly created",msg:c.report.name?c.report.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.save"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveReport=function(){c.errors=[],s[o].update({id:c.report.id},c.report).$promise.then(function(e){var n=_.find(c.reports,{id:e.id});n&&_.merge(n,e),t.success({title:"Report properly saved!",msg:c.report.name?c.report.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteReport=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The report will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){s[o].delete({id:c.report.id}).$promise.then(function(){_.remove(c.reports,{id:c.report.id}),t.success({title:"Report properly deleted!",msg:c.report.name?c.report.name+" has been deleted!":""}),m()}).catch(function(e){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.delete"}]})},function(){})},c.closeDialog=m,c.selectedTableChange=function(e){e&&(delete c.selectedItem,c.joinTables.push(e))},c.removeJoin=function(e){c.joinTables.splice(e,1)},c.getFields=function(n,t,e){var a=_.find(c.tables,{name:e});a&&a.api&&s[a.api].describe().$promise.then(function(e){n[t]=_.difference(_.keys(e),["$promise","$resolved"])}).catch(function(e){console.error(e)})}}e.$inject=["$location","$mdDialog","toasty","reports","report","api","apiName","currentNode","describeTable","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportDialogController",e)}(),function(){"use strict";function e(i,s,o,e){var r=this;r.report={},r.conditions=e.getConditions,r.init=function(e,n){r.report=e,r.report.condition=angular.fromJson(e.conditions)||{group:{operator:"AND",rules:[]}},r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1};for(var t=0;t<r.report.condition.group.rules.length;t++)if(r.report.condition.group.rules[t].field){var a=r.report.condition.group.rules[t].field.split(".");1===a.length&&(r.report.condition.group.rules[t].field=r.report.table+"."+r.report.condition.group.rules[t].field)}s.getColumns(r.report.table).then(function(e){r.columns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt"])}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.addCondition=function(e){e.unshift({condition:"=",field:"",value:""})},r.addGroup=function(e){e.push({group:{operator:"AND",rules:[]}})},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the item?").htmlContent("The item will be deleted.").ariaLabel("delete item").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){e.splice(n,1)},function(){console.log("CANCEL")})},r.isValueByCondition=function(e){return!_.includes(["IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"],e)}}e.$inject=["$mdDialog","describeTable","toasty","sqlUtil"],angular.module("app.analytics").controller("ReportConditionsController",e)}(),function(){"use strict";function e(n){var a={report_call_transfer:"voiceTransferReport",cm_companies:"cmCompany",cm_contacts:"cmContact",cm_hopper:"cmHopper",cm_hopper_final:"cmHopperFinal",cm_hopper_history:"cmHopperHistory",cm_lists:"cmList",chat_websites:"chatWebsite",chat_queues:"chatQueue",chat_interactions:"chatInteraction",chat_messages:"chatMessage",chat_offline_messages:"chatOfflineMessage",report_chat_queue:"chatQueueReport",report_chat_transfer:"chatTransferReport",mail_accounts:"mailAccount",mail_queues:"mailQueue",mail_interactions:"mailInteraction",mail_messages:"mailMessage",report_mail_queue:"mailQueueReport",report_mail_transfer:"mailTransferReport",openchannel_accounts:"openchannelAccount",openchannel_queues:"openchannelQueue",openchannel_interactions:"openchannelInteraction",openchannel_messages:"openchannelMessage",report_openchannel_queue:"openchannelQueueReport",report_openchannel_transfer:"openchannelTransferReport",sms_accounts:"smsAccount",sms_queues:"smsQueue",sms_interactions:"smsInteraction",sms_messages:"smsMessage",report_sms_queue:"smsQueueReport",report_sms_transfer:"smsTransferReport",fax_accounts:"faxAccount",fax_queues:"faxQueue",fax_interactions:"faxInteraction",fax_messages:"faxMessage",report_fax_transfer:"faxTransferReport",report_fax_queue:"faxQueueReport",report_call:"voiceCallReport",report_agent:"voiceAgentReport",report_square:"squareReport",report_member:"memberReport",report_queue:"voiceQueueReport",report_square_details:"squareReportDetail",report_dial:"voiceDialReport",report_jscripty_sessions:"jscriptySessionReport",report_jscripty_questions:"jscriptyQuestionReport",report_jscripty_answers:"jscriptyAnswerReport",users:"user",voice_recordings:"voiceRecording",cdr:"cdr",whatsapp_accounts:"whatsappAccount",whatsapp_queues:"whatsappQueue",whatsapp_interactions:"whatsappInteraction",whatsapp_messages:"whatsappMessage",report_whatsapp_queue:"whatsappQueueReport",report_whatsapp_transfer:"whatsappTransferReport"};return{getMap:function(){var t=[];return _.forIn(a,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){return n[a[e]].describe().$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;(u.errors=[],u.title="Edit Report Field",u.report=i,u.reportField=angular.copy(o),u.reportFields=s,u.metrics=r,u.columns=l,u.sqlUtil=d,u.newReportField=!1,u.crudPermissions=m,u.reportField)?(u.reportField.type=u.reportField.custom?"custom":u.reportField.MetricId?"metric":"column",u.reportField.field&&!u.reportField.custom&&_.isNil(u.reportField.MetricId)&&1===u.reportField.field.split(".").length&&(u.reportField.field=u.report.table+"."+u.reportField.field)):(u.reportField={type:"column",function:null,format:null,groupBy:!1,orderBy:null},u.title="New Report Field",u.newReportField=!0);function p(){t.hide()}u.addNewReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,u.reportField.CustomReportId=u.report.id,c.analyticFieldReport.save(u.reportField).$promise.then(function(e){u.reportFields.push(e),a.success({title:"Report field properly created",msg:u.reportField.field?u.reportField.field+" has been created!":u.reportField.type+" has been created!"}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.save"}]})},u.saveReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,c.analyticFieldReport.update({id:u.reportField.id},u.reportField).$promise.then(function(e){var n=_.find(u.reportFields,{id:e.id});n&&_.merge(n,e),a.success({title:"Report Field properly saved!",msg:u.reportField.field?u.reportField.field+" has been saved!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.update"}]})},u.deleteReportField=function(e){u.errors=[];var n=t.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){c.analyticFieldReport.delete({id:u.reportField.id}).$promise.then(function(){_.remove(u.reportFields,{id:u.reportField.id}),a.success({title:"Report Field properly deleted!",msg:u.reportField.field?u.reportField.field+" has been deleted!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReportField.delete"}]})},function(){})},u.closeDialog=p}e.$inject=["$scope","$location","$mdDialog","toasty","report","reportFields","reportField","metrics","columns","sqlUtil","api","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;c.report={},c.reportFields={count:0,rows:[]},c.functions=_.keyBy(l.getFunctions,"value"),c.formats=_.keyBy(l.getFormats,"value"),c.groupBy=_.keyBy(l.getGroupBy,"value"),c.orderBy=_.keyBy(l.getOrderBy,"value"),c.selectedReportFields=[],c.query={fields:"createdAt,updatedAt,id,field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0},c.sortableTable={animation:100,onSort:function(e){o.analyticFieldReport.addFields({id:c.report.id},e.models).$promise.then(function(e){c.reportFields.rows=e}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDFIELDS"})})}},c.init=function(e,n){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,r.getColumns(c.report.table).then(function(e){return c.columns=_.difference(_.keys(e),["$promise","$resolved"]),o.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise}).then(function(e){c.metrics=e.rows}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.getReportFields()},c.deleteConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+c.selectedReportFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n<e.rows.length;n+=1)e.rows[n].MetricId&&(e.rows[n].field=i[e.rows[n].MetricId].metric,e.rows[n].custom=!0),delete e.rows[n].MetricId;var t=o.document.createElement("a");t.href="data:text/json;charset=utf-8,"+o.encodeURIComponent(angular.toJson({name:a.name,description:a.description,table:a.table,conditions:a.conditions,joins:a.joins,fields:e.rows})),t.download=a.name+".json",t.target="_self",t.click(),m.success({title:"Report downloaded!",msg:a.name?a.name+" has been downloaded!":""})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent("<b>"+p.selectedReports.length+" selected</b> will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),h({count:t.length,rows:t})}return h(null)}):h(null)})}}function b(e){p.apiName&&d[p.apiName].delete({id:e.id}).$promise.then(function(){_.remove(p.reports.rows,{id:e.id}),p.reports.count-=1,p.reports.rows.length||p.getReports(),m.success({title:"Report deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.analyticreport.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticreport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function A(e,n){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=n.node.id,f()}function E(e,n){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=n.node.id,f()}function y(e,n){var t=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:t}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=t),m.success({title:"Node Updated",msg:n.node.text?n.node.text+" has been updated!":"Node has been updated!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEanalyticTreeReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}function S(e){return{core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:e?["contextmenu","dnd","search","state","wholerow"]:["search","state","wholerow"],contextmenu:{items:function(t){var e={};return p.crudPermissions.canEdit&&_.assign(e,{create:{label:n.instant("ANALYTICS.CREATE"),action:function(){t=p.treeCustomInstance.jstree(!0).create_node(t),p.treeCustomInstance.jstree(!0).edit(t)}},rename:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.RENAME"),action:function(){p.treeCustomInstance.jstree(!0).edit(t)}}}),p.crudPermissions.canDelete&&_.assign(e,{remove:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.REMOVE"),action:function(){var e=i.confirm().title("Are you sure want to delete the node?").htmlContent("<b>"+(t.text?t.text:"Node")+"</b> and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n=p.treeCustomInstance.jstree(!0).get_parent(t);n=p.treeCustomInstance.jstree(!0).get_node(n),p.treeCustomInstance.jstree(!0).delete_node(t),e=[t.id].concat(t.children_d||[]),d.analyticCustomReport.get({parent:e.join(","),fields:"id,name"}).$promise.then(function(e){e&&e.rows&&e.rows.forEach(function(e){b(e)})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEreportsByParents",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.treeCustomInstance.jstree(!0).select_node(n)})}}}),e}}}}function T(e){return e?{create_node:y,rename_node:y,move_node:y,delete_node:y,select_node:A}:{select_node:E}}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,n){p.treeDefaultInstance&&p.treeDefaultInstance.jstree(!0).search(e),p.treeCustomInstance&&p.treeCustomInstance.jstree(!0).search(e)})}e.$inject=["$scope","$timeout","$document","$mdDialog","$state","$window","$translate","userProfile","userProfileSection","api","treeReports","toasty","Auth"],angular.module("app.analytics").controller("ReportsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r){var l=this;function d(){l.export={id:l.report.id,name:l.report.name,startDate:new Date(moment().startOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,i,s,e,o,r,l,d){var c=this;function m(e){n.hide(e)}c.errors=[],c.title="CALLYSQUARE.EDIT_PROJECT",c.crudPermissions=d,c.project=angular.copy(o),c.newWindow=!0,c.projects=e,c.newProject=!1,c.openFromEditor=l,c.project||(c.project={name:"",description:""},c.title="CALLYSQUARE.NEW_PROJECT",c.newProject=!0),c.addNewProject=function(){c.errors=[],r.squareProject.save(c.project).$promise.then(function(e){return r.user.addSquareProjects({id:i.getCurrentUser().id,ids:[e.id]}).$promise,e}).then(function(e){c.projects.unshift(e),s.success({title:"Project properly created",msg:c.project.name?c.project.name+" has been created!":""}),m(e),c.openFromEditor&&(c.newWindow?t.open("/callysquare/projects/"+e.id,"_blank"):a.go("app.callysquare.projects.edit",{id:e.id}))}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveProject=function(){c.errors=[],r.squareProject.update({id:c.project.id},c.project).$promise.then(function(e){var n=_.find(c.projects,{id:e.id});n&&_.merge(n,e),s.success({title:"Project properly saved!",msg:c.project.name?c.project.name+" has been saved!":""}),m(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteProject=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){r.squareProject.delete({id:c.project.id}).$promise.then(function(){return r.squareProject.getUsers({id:c.project.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(r.user.removeSquareProjects({id:i.getCurrentUser().id,ids:[c.project.id]}).$promise);return $q.all(n)}).then(function(){_.remove(c.projects,{id:c.project.id}),s.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,C,O,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.sms_account_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(C,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.pause_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(O,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(C,"id","name"),pause_id:U(O,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"am",option:"Amharic"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"az",option:"Azerbaijani"},{value:"eu",option:"Basque"},{value:"be",option:"Belarusian"},{value:"bn",option:"Bengali"},{value:"bh",option:"Bihari"},{value:"bs",option:"Bosnian"},{value:"br",option:"Breton"},{value:"bg",option:"Bulgarian"},{value:"km",option:"Cambodian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"co",option:"Corsican"},{value:"hr",option:"Croatian"},{value:"cs",option:"Czech"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"eo",option:"Esperanto"},{value:"et",option:"Estonian"},{value:"fo",option:"Faroese"},{value:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"fy",option:"Frisian"},{value:"gl",option:"Galician"},{value:"ka",option:"Georgian"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gn",option:"Guarani"},{value:"gu",option:"Gujarati"},{value:"xx-hacker",option:"Hacker"},{value:"ha",option:"Hausa"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"ia",option:"Interlingua"},{value:"ga",option:"Irish"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"kk",option:"Kazakh"},{value:"rw",option:"Kinyarwanda"},{value:"rn",option:"Kirundi"},{value:"xx-klingon",option:"Klingon"},{value:"ku",option:"Kurdish"},{value:"ko",option:"Korean"},{value:"ky",option:"Kyrgyz"},{value:"lo",option:"Laothian"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"ln",option:"Lingala"},{value:"lt",option:"Lithuanian"},{value:"mk",option:"Macedonian"},{value:"mg",option:"Malagasy"},{value:"ml",option:"Malayalam"},{value:"mt",option:"Maltese"},{value:"mi",option:"Maori"},{value:"mr",option:"Marathi"},{value:"mo",option:"Moldavian"},{value:"mn",option:"Mongolian"},{value:"sr-ME",option:"Montenegrin"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"nn",option:"Norwegian (Nynorsk)"},{value:"oc",option:"Occitan"},{value:"or",option:"Oriya"},{value:"om",option:"Oromo"},{value:"ps",option:"Pashto"},{value:"fa",option:"Persian"},{value:"xx-pirate",option:"Pirate"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"pa",option:"Punjabi"},{value:"qu",option:"Quechua"},{value:"ro",option:"Romanian"},{value:"rm",option:"Romansh"},{value:"ru",option:"Russian"},{value:"gd",option:"Scots Gaelic"},{value:"sr",option:"Serbian"},{value:"sh",option:"Serbo-Croatian"},{value:"st",option:"Sesotho"},{value:"sn",option:"Shona"},{value:"sd",option:"Sindhi"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"sl",option:"Slovenian"},{value:"so",option:"Somali"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"tg",option:"Tajik"},{value:"ta",option:"Tamil"},{value:"tt",option:"Tatar"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"ti",option:"Tigrinya"},{value:"to",option:"Tonga"},{value:"tr",option:"Turkish"},{value:"tk",option:"Turkmen"},{value:"tw",option:"Twi"},{value:"ug",option:"Uighur"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"uz",option:"Uzbek"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"},{value:"xh",option:"Xhosa"},{value:"yi",option:"Yiddish"},{value:"yo",option:"Yoruba"},{value:"zu",option:"Zulu"}]}).factory("googleAsrLanguage",function(){return[{option:"Afrikaans (South Africa)",value:"af-ZA"},{option:"Albanian (Albania)",value:"sq-AL"},{option:"Amharic (Ethiopia)",value:"am-ET"},{option:"Arabic (Algeria)",value:"ar-DZ"},{option:"Arabic (Bahrain)",value:"ar-BH"},{option:"Arabic (Egypt)",value:"ar-EG"},{option:"Arabic (Iraq)",value:"ar-IQ"},{option:"Arabic (Israel)",value:"ar-IL"},{option:"Arabic (Jordan)",value:"ar-JO"},{option:"Arabic (Kuwait)",value:"ar-KW"},{option:"Arabic (Lebanon)",value:"ar-LB"},{option:"Arabic (Morocco)",value:"ar-MA"},{option:"Arabic (Oman)",value:"ar-OM"},{option:"Arabic (Qatar)",value:"ar-QA"},{option:"Arabic (Saudi Arabia)",value:"ar-SA"},{option:"Arabic (State of Palestine)",value:"ar-PS"},{option:"Arabic (Tunisia)",value:"ar-TN"},{option:"Arabic (United Arab Emirates)",value:"ar-AE"},{option:"Arabic (Yemen)",value:"ar-YE"},{option:"Armenian (Armenia)",value:"hy-AM"},{option:"Azerbaijani (Azerbaijan)",value:"az-AZ"},{option:"Basque (Spain)",value:"eu-ES"},{option:"Bengali (Bangladesh)",value:"bn-BD"},{option:"Bengali (India)",value:"bn-IN"},{option:"Bosnian (Bosnia and Herzegovina)",value:"bs-BA"},{option:"Bulgarian (Bulgaria)",value:"bg-BG"},{option:"Burmese (Myanmar)",value:"my-MM"},{option:"Catalan (Spain)",value:"ca-ES"},{option:"Chinese, Cantonese (Traditional Hong Kong)",value:"yue-Hant-HK"},{option:"Chinese, Mandarin (Simplified, China)",value:"cmn-Hans-CN"},{option:"Croatian (Croatia)",value:"hr-HR"},{option:"Czech (Czech Republic)",value:"cs-CZ"},{option:"Danish (Denmark)",value:"da-DK"},{option:"Dutch (Belgium)",value:"nl-BE"},{option:"Dutch (Netherlands)",value:"nl-NL"},{option:"English (Australia)",value:"en-AU"},{option:"English (Canada)",value:"en-CA"},{option:"English (Ghana)",value:"en-GH"},{option:"English (Hong Kong)",value:"en-HK"},{option:"English (India)",value:"en-IN"},{option:"English (Ireland)",value:"en-IE"},{option:"English (Kenya)",value:"en-KE"},{option:"English (New Zealand)",value:"en-NZ"},{option:"English (Nigeria)",value:"en-NG"},{option:"English (Pakistan)",value:"en-PK"},{option:"English (Philippines)",value:"en-PH"},{option:"English (Singapore)",value:"en-SG"},{option:"English (South Africa)",value:"en-ZA"},{option:"English (Tanzania)",value:"en-TZ"},{option:"English (United Kingdom)",value:"en-GB"},{option:"English (United States)",value:"en-US"},{option:"Estonian (Estonia)",value:"et-EE"},{option:"Filipino (Philippines)",value:"fil-PH"},{option:"Finnish (Finland)",value:"fi-FI"},{option:"French (Belgium)",value:"fr-BE"},{option:"French (Canada)",value:"fr-CA"},{option:"French (France)",value:"fr-FR"},{option:"French (Switzerland)",value:"fr-CH"},{option:"Galician (Spain)",value:"gl-ES"},{option:"Georgian (Georgia)",value:"ka-GE"},{option:"German (Austria)",value:"de-AT"},{option:"German (Germany)",value:"de-DE"},{option:"German (Switzerland)",value:"de-CH"},{option:"Greek (Greece)",value:"el-GR"},{option:"Gujarati (India)",value:"gu-IN"},{option:"Hebrew (Israel)",value:"iw-IL"},{option:"Hindi (India)",value:"hi-IN"},{option:"Hungarian (Hungary)",value:"hu-HU"},{option:"Icelandic (Iceland)",value:"is-IS"},{option:"Indonesian (Indonesia)",value:"id-ID"},{option:"Italian (Italy)",value:"it-IT"},{option:"Italian (Switzerland)",value:"it-CH"},{option:"Japanese (Japan)",value:"ja-JP"},{option:"Javanese (Indonesia)",value:"jv-ID"},{option:"Kannada (India)",value:"kn-IN"},{option:"Kazakh (Kazakhstan)",value:"kk-KZ"},{option:"Khmer (Cambodia)",value:"km-KH"},{option:"Korean (South Korea)",value:"ko-KR"},{option:"Lao (Laos)",value:"lo-LA"},{option:"Latvian (Latvia)",value:"lv-LV"},{option:"Lithuanian (Lithuania)",value:"lt-LT"},{option:"Macedonian (North Macedonia)",value:"mk-MK"},{option:"Malay (Malaysia)",value:"ms-MY"},{option:"Malayalam (India)",value:"ml-IN"},{option:"Marathi (India)",value:"mr-IN"},{option:"Mongolian (Mongolia)",value:"mn-MN"},{option:"Nepali (Nepal)",value:"ne-NP"},{option:"Norwegian Bokmål (Norway)",value:"no-NO"},{option:"Persian (Iran)",value:"fa-IR"},{option:"Polish (Poland)",value:"pl-PL"},{option:"Portuguese (Brazil)",value:"pt-BR"},{option:"Portuguese (Portugal)",value:"pt-PT"},{option:"Punjabi (Gurmukhi India)",value:"pa-Guru-IN"},{option:"Romanian (Romania)",value:"ro-RO"},{option:"Russian (Russia)",value:"ru-RU"},{option:"Serbian (Serbia)",value:"sr-RS"},{option:"Sinhala (Sri Lanka)",value:"si-LK"},{option:"Slovak (Slovakia)",value:"sk-SK"},{option:"Slovenian (Slovenia)",value:"sl-SI"},{option:"Spanish (Argentina)",value:"es-AR"},{option:"Spanish (Bolivia)",value:"es-BO"},{option:"Spanish (Chile)",value:"es-CL"},{option:"Spanish (Colombia)",value:"es-CO"},{option:"Spanish (Costa Rica)",value:"es-CR"},{option:"Spanish (Dominican Republic)",value:"es-DO"},{option:"Spanish (Ecuador)",value:"es-EC"},{option:"Spanish (El Salvador)",value:"es-SV"},{option:"Spanish (Guatemala)",value:"es-GT"},{option:"Spanish (Honduras)",value:"es-HN"},{option:"Spanish (Mexico)",value:"es-MX"},{option:"Spanish (Nicaragua)",value:"es-NI"},{option:"Spanish (Panama)",value:"es-PA"},{option:"Spanish (Paraguay)",value:"es-PY"},{option:"Spanish (Peru)",value:"es-PE"},{option:"Spanish (Puerto Rico)",value:"es-PR"},{option:"Spanish (Spain)",value:"es-ES"},{option:"Spanish (United States)",value:"es-US"},{option:"Spanish (Uruguay)",value:"es-UY"},{option:"Spanish (Venezuela)",value:"es-VE"},{option:"Sundanese (Indonesia)",value:"su-ID"},{option:"Swahili (Kenya)",value:"sw-KE"},{option:"Swahili (Tanzania)",value:"sw-TZ"},{option:"Swedish (Sweden)",value:"sv-SE"},{option:"Tamil (India)",value:"ta-IN"},{option:"Tamil (Malaysia)",value:"ta-MY"},{option:"Tamil (Singapore)",value:"ta-SG"},{option:"Tamil (Sri Lanka)",value:"ta-LK"},{option:"Telugu (India)",value:"te-IN"},{option:"Thai (Thailand)",value:"th-TH"},{option:"Turkish (Turkey)",value:"tr-TR"},{option:"Ukrainian (Ukraine)",value:"uk-UA"},{option:"Urdu (India)",value:"ur-IN"},{option:"Urdu (Pakistan)",value:"ur-PK"},{option:"Uzbek (Uzbekistan)",value:"uz-UZ"},{option:"Vietnamese (Vietnam)",value:"vi-VN"},{option:"Zulu (South Africa)",value:"zu-ZA"}]}).factory("awsPollyVoice",function(){return[{value:"Amy",option:"Amy (English, British, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Conchita",option:"Conchita (Spanish, Castilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Enrique",option:"Enrique (Spanish, Castilian, Male)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Gwineth",option:"Gwineth (Welsh, Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Nicole",option:"Nicole (English, Austrialian, Female)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"}]}).factory("awsPollyRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-east-2",option:"US East (Ohio)"},{value:"us-west-1",option:"US West (N. California)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"ca-central-1",option:"Canada (Central)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"eu-central-1",option:"EU (Frankfurt)"},{value:"eu-west-2",option:"EU (London)"},{value:"eu-west-3",option:"EU (Paris)"},{value:"ap-southeast-1",option:"Asia Pacific (Singapore)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"},{value:"ap-northeast-2",option:"Asia Pacific (Seoul)"},{value:"ap-northeast-1",option:"Asia Pacific (Tokyo)"},{value:"ap-south-1",option:"Asia Pacific (Mumbai)"},{value:"sa-east-1",option:"South America (São Paulo)"}]}).factory("awsLexRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"}]}).factory("dialogFlowLanguage",function(){return[{value:"da",option:"Danish"},{value:"en",option:"English"},{value:"de",option:"German"},{value:"it",option:"Italian"},{value:"es",option:"Spanish"},{value:"fr",option:"French"},{value:"id",option:"Indonesian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean (South Korea)"},{value:"nl",option:"Dutch"},{value:"no",option:"Norwegian"},{value:"pt",option:"Portuguese (European)"},{value:"pt-br",option:"Portuguese (Nrazilian)"},{value:"ru",option:"Russian"},{value:"sv",option:"Swedish"},{value:"th",option:"Thai"},{value:"uk",option:"Ukrainian"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-HK",option:"Chinese (Hong Kong)"},{value:"zh-TW",option:"Chinese (Traditional)"}]}).factory("dialogFlowV2Language",function(){return[{value:"zh-HK",option:"Chinese (Cantonese)"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"en-AU",option:"English (Australia)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (Great Britain)"},{value:"en-IN",option:"English (India)"},{value:"en-US",option:"English (US)"},{value:"fr",option:"French"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"France (France)"},{value:"de",option:"German"},{value:"hi",option:"Hindi"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ru",option:"Russian"},{value:"es",option:"Spanish"},{value:"es-419",option:"Spanish (Latin America)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"sw",option:"Swedish"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"}]})}(),function(){"use strict";function e(n,e,t,a){var i=this;i.project={preproduction:t},i.closeDialog=function(e){e?(a(i.project.preproduction),n.hide(i.project.preproduction)):n.hide()}}e.$inject=["$mdDialog","toasty","currentXML","saveCallback"],angular.module("app.callysquare").controller("MxGraphEditXMLController",e)}(),function(){"use strict";function e(n,t){var a=this;function i(e){e?(t(e),n.hide(e)):n.hide()}a.errors=[],a.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:5242880,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},a.ngFlow={flow:{}},a.dropping=!1,a.closeDialog=i,a.fileAdded=function(e){a.errors=[];_.includes(["xml"],e.getExtension())||a.errors.push({message:"The extension "+e.getExtension()+" is not supported!"});5242880<e.size&&a.errors.push({message:"The file is too big. The max allowed size is 5MB"});if(!a.errors.length){var n=new FileReader;n.onload=function(e){i(e.target.result)},n.readAsText(e.file)}}}e.$inject=["$mdDialog","saveCallback"],angular.module("app.callysquare").controller("MxGraphImportXMLController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;i.project=_.clone(e),i.closeDialog=function(){n.hide()},i.save=function(){i.errors=[],a.squareProject.update({id:i.project.id},{notes:i.project.notes,description:i.project.description}).$promise.then(function(e){t.success({title:"Project updated!",msg:i.project.name?i.project.name+" has been updated!":""}),n.hide(e)}).catch(function(e){console.error(e),i.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}]})}}e.$inject=["$mdDialog","toasty","project","api"],angular.module("app.callysquare").controller("MxGraphUpdateInfoController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.projects=t,s.id="",s.newWindow=!0,s.closeDialog=function(e){s.errors=[],e?(n.hide(),s.newWindow?a.open("/callysquare/projects/"+s.id,"_blank"):i.go("app.callysquare.projects.edit",{id:s.id})):n.hide()}}e.$inject=["$mdDialog","toasty","projects","$window","$state"],angular.module("app.callysquare").controller("MxGraphOpenProjectController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o){var r=this;function l(){return a.squareProject.getUsers({id:r.project.id,fields:"id,name,fullname,internal",nolimit:!0,role:"user"}).$promise.then(function(e){return r.selectedItems=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.selectedItems=r.selectedItems,a.user.get({fields:"id,fullname,name,internal",role:"user",nolimit:!0}).$promise}).then(function(e){r.items=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.items=_.differenceBy(r.items,r.selectedItems,"id")}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}r.project=n,r.penalty=0,r.items=[],r.selectedItems=[],r.closeDialog=function(){e.hide()},r.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("CALLYSQUARE.ALL_USERS"),labelSelected:s.instant("CALLYSQUARE.SELECTED_USERS"),transferCallback:function(e,n){a.squareProject[n?"removeUsers":"addUsers"]({id:r.project.id,ids:_.map(e,"id"),penalty:r.penalty||0}).$promise.then(function(){t.success({title:"Project properly "+(n?"removed":"added"),msg:"Project has been "+(n?"removed":"added")+"!"}),n||l()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:squareProjects.ADDUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},l()}e.$inject=["$mdDialog","toasty","api","project","projects","$translate","Auth"],angular.module("app.callysquare").controller("ProjectspermissionaddController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATQUEUE",g.chatQueue=angular.copy(l),g.chatQueues=r,g.newChatQueue=!1,g.chatQueue||(g.chatQueue={strategy:"beepall",timeout:10},g.title="CHAT.NEW_CHATQUEUE",g.newChatQueue=!0),g.addNewChatQueue=function(){g.errors=[],d.chatQueue.save(g.chatQueue).$promise.then(function(e){g.chatQueues.unshift(e.toJSON()),o.success({title:"ChatQueue properly created",msg:g.chatQueue.name?g.chatQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatQueue=function(){g.errors=[],d.chatQueue.update({id:g.chatQueue.id},g.chatQueue).$promise.then(function(e){var n=_.find(g.chatQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ChatQueue properly saved!",msg:g.chatQueue.name?g.chatQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatQueue.delete({id:g.chatQueue.id}).$promise.then(function(){_.remove(g.chatQueues,{id:g.chatQueue.id}),o.success({title:"ChatQueue properly deleted!",msg:(g.chatQueue.name||"chatQueue")+" has been deleted!"}),v(g.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatQueues","chatQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,u).$promise}function g(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getChatWebsiteInteractions=p,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=g,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){g(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"chat",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsChatRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("chat_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userChatQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userChatQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.chatPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.chatPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("chat_queue:save"),o.removeAllListeners("userChatQueue:remove"),o.removeAllListeners("userChatQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.chat").controller("QueuesChatRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(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(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(this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=4,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"IvrCampaign properly saved!",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteIvrCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.campaign.delete({id:g.ivrCampaign.id}).$promise.then(function(){_.remove(g.ivrCampaigns,{id:g.ivrCampaign.id}),o.success({title:"IvrCampaign properly deleted!",msg:(g.ivrCampaign.name||"ivrCampaign")+" has been deleted!"}),v(g.ivrCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})});g.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.trunks=n})}else g.trunks=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.projects,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.projects,{id:t.id});a.canSelect=!1,n.push(a)}g.projects=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++)a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,t.push(g.projects[i]));g.projects=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","ivrCampaigns","ivrCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditIvrCampaignDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newIvrCampaign=!0,r.ivrCampaign=angular.copy(i),r.ivrCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_IVRCAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneIvrCampaign=function(){return e.campaign.clone({id:i.id},r.ivrCampaign).$promise.then(function(e){r.ivrCampaigns.unshift(e.toJSON()),a.success({title:"IvrCampaign properly cloned",msg:r.ivrCampaign.name?r.ivrCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","ivrCampaign","ivrCampaigns","$translate"],angular.module("app.motiondialer").controller("IvrCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperBlacks.rows,{id:e.id}),m.ivrCampaignHopperBlacks.count-=1,m.ivrCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperBlacks={count:0,rows:[]},m.selectedIvrCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperBlacks=p,m.createOrEditIvrCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperBlack:n,hopperBlacks:m.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(m.selectedIvrCampaignHopperBlacks);return m.selectedIvrCampaignHopperBlacks=[],e},m.deleteIvrCampaignHopperBlack=g,m.deleteSelectedIvrCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperFinals.rows,{id:e.id}),m.ivrCampaignHopperFinals.count-=1,m.ivrCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.ivrCampaign={},m.ivrCampaignHopperFinals={count:0,rows:[]},m.selectedIvrCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperFinals=p,m.createOrEditIvrCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperFinal:n,hopperFinals:m.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(m.selectedIvrCampaignHopperFinals);return m.selectedIvrCampaignHopperFinals=[],e},m.deleteIvrCampaignHopperFinal=g,m.deleteSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperFinals=[]})},m.moveIvrCampaignHopperFinal=v,m.moveContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedIvrCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperHistories.rows,{id:e.id}),m.ivrCampaignHopperHistories.count-=1,m.ivrCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperHistories={count:0,rows:[]},m.selectedIvrCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperHistories=p,m.createOrEditIvrCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperHistory:n,hopperHistories:m.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(m.selectedIvrCampaignHopperHistories);return m.selectedIvrCampaignHopperHistories=[],e},m.deleteIvrCampaignHopperHistory=g,m.deleteSelectedIvrCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHoppers.rows,{id:e.id}),m.ivrCampaignHoppers.count-=1,m.ivrCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHoppers={count:0,rows:[]},m.selectedIvrCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHoppers=p,m.createOrEditIvrCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopper:n,hoppers:m.ivrCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(m.selectedIvrCampaignHoppers);return m.selectedIvrCampaignHoppers=[],e},m.deleteIvrCampaignHopper=g,m.deleteSelectedIvrCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),m.selectedIvrCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})});m.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),m.agents=n})}else m.agents=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.CampaignId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.campaign.get({raw:!1,id:a.CampaignId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})});g.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.agents=n})}else g.agents=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperCampaignIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.ivrCampaign={},i.init=function(n){i.ivrCampaign=n,t.cmHopper.get({limit:0,CampaignId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,CampaignId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,CampaignId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("IvrCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return i.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","ivrCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("IvrCampaignresetlistController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||t.params.ivrCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(n,t){r.campaign.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.ivrCampaign.id,n=a.rows[0],t=n.id,r.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return r.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ivrCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"IvrCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{ivrCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){t.go("app.motiondialer.ivrCampaigns",{},{reload:"app.motiondialer.ivrCampaigns"})},u.saveIvrCampaign=function(){r.campaign.update({id:u.ivrCampaign.id},u.ivrCampaign).$promise.then(function(){l.success({title:"IvrCampaign updated!",msg:u.ivrCampaign.name?u.ivrCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})});u.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.trunks=n})}else u.trunks=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","ivrCampaign","userProfileSection"],angular.module("app.motiondialer").controller("IvrCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.ivrCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="ivrCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedIvrCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("ivrCampaign")+"?").htmlContent("<b>"+(e.name||"ivrCampaign")+"</b> will be deleted.").ariaLabel("delete ivrCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},f.success=E,f.getIvrCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.campaign.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="IvrCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditIvrCampaign=function(e,n){i.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:f.ivrCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteIvrCampaign=y,f.exportSelectedIvrCampaigns=function(){var e=angular.copy(f.selectedIvrCampaigns);return f.selectedIvrCampaigns=[],e},f.deleteSelectedIvrCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+f.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIvrCampaigns.forEach(function(e){y(e)}),f.selectedIvrCampaigns=[]})},f.deselectIvrCampaigns=function(){f.selectedIvrCampaigns=[]},f.selectAllIvrCampaigns=function(){f.selectedIvrCampaigns=f.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})});f.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.trunks=n})}else f.trunks=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.projects,{id:e.resourceId})}),a=null;a=[],f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),f.projects=t})}else{var t=[],a=[];f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)});for(var i=0;i<f.projects.length;i++){_.some(a,{id:f.projects[i].id})&&(f.projects[i].canSelect=!1,t.push(f.projects[i]))}f.projects=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.ivrCampaign&&(t=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.ivrCampaign&&(a=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.ivrCampaigns=e||{count:0,rows:[]}}function y(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(f.ivrCampaigns.rows,{id:e.id}),f.ivrCampaigns.count-=1,f.ivrCampaigns.rows.length||f.getIvrCampaigns(),p.success({title:_.startCase("IvrCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("IvrCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_QUEUECAMPAIGN",g.queueCampaign=angular.copy(l),g.queueCampaigns=r,g.newQueueCampaign=!1,g.queueCampaign||(g.queueCampaign={dialActive:!0,type:"outbound",dialCheckDuplicateType:"always",dialCutDigit:0,autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no",dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3,dialMethod:"progressive",dialPowerLevel:1,dialPredictiveOptimization:"dropRate",dialPredictiveOptimizationPercentage:3,dialPredictiveInterval:10,dialLimitQueue:0,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialQueueOptions:"tTxX",dialQueueTimeout:3,strategy:"rrmemory",timeout:3,retry:3,weight:1,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialPredictiveIntervalMaxThreshold:20,dialPredictiveIntervalMinThreshold:10},g.title="MOTIONDIALER.NEW_QUEUECAMPAIGN",g.newQueueCampaign=!0),g.addNewQueueCampaign=function(){g.errors=[],d.voiceQueue.save(g.queueCampaign).$promise.then(function(e){g.queueCampaigns.unshift(e.toJSON()),o.success({title:"QueueCampaign properly created",msg:g.queueCampaign.name?g.queueCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveQueueCampaign=function(){g.errors=[],d.voiceQueue.update({id:g.queueCampaign.id},g.queueCampaign).$promise.then(function(e){var n=_.find(g.queueCampaigns,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"QueueCampaign properly saved!",msg:g.queueCampaign.name?g.queueCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteQueueCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.queueCampaign.id}).$promise.then(function(){_.remove(g.queueCampaigns,{id:g.queueCampaign.id}),o.success({title:"QueueCampaign properly deleted!",msg:(g.queueCampaign.name||"queueCampaign")+" has been deleted!"}),v(g.queueCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","queueCampaigns","queueCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditQueueCampaignDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","queueCampaigns","realtime","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newQueueCampaign=!0,r.queueCampaign=angular.copy(i),r.queueCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_QUEUECAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneQueueCampaign=function(){return e.voiceQueue.clone({id:i.id},r.queueCampaign).$promise.then(function(e){r.queueCampaigns.unshift(e.toJSON()),a.success({title:"QueueCampaign properly cloned",msg:r.queueCampaign.name?r.queueCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.queueCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","queueCampaign","queueCampaigns","$translate"],angular.module("app.motiondialer").controller("QueueCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperBlacks.rows,{id:e.id}),m.queueCampaignHopperBlacks.count-=1,m.queueCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperBlacks={count:0,rows:[]},m.selectedQueueCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperBlacks=p,m.createOrEditQueueCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperBlack:n,hopperBlacks:m.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(m.selectedQueueCampaignHopperBlacks);return m.selectedQueueCampaignHopperBlacks=[],e},m.deleteQueueCampaignHopperBlack=g,m.deleteSelectedQueueCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperFinals.rows,{id:e.id}),m.queueCampaignHopperFinals.count-=1,m.queueCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.queueCampaign={},m.queueCampaignHopperFinals={count:0,rows:[]},m.selectedQueueCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,secondDisposition,thirdDisposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperFinals=p,m.createOrEditQueueCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperFinal:n,hopperFinals:m.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(m.selectedQueueCampaignHopperFinals);return m.selectedQueueCampaignHopperFinals=[],e},m.deleteQueueCampaignHopperFinal=g,m.deleteSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperFinals=[]})},m.moveQueueCampaignHopperFinal=v,m.moveContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedQueueCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperHistories.rows,{id:e.id}),m.queueCampaignHopperHistories.count-=1,m.queueCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperHistories={count:0,rows:[]},m.selectedQueueCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperHistories=p,m.createOrEditQueueCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperHistory:n,hopperHistories:m.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(m.selectedQueueCampaignHopperHistories);return m.selectedQueueCampaignHopperHistories=[],e},m.deleteQueueCampaignHopperHistory=g,m.deleteSelectedQueueCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHoppers.rows,{id:e.id}),m.queueCampaignHoppers.count-=1,m.queueCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHoppers={count:0,rows:[]},m.selectedQueueCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHoppers=p,m.createOrEditQueueCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopper:n,hoppers:m.queueCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHoppers=function(){var e=angular.copy(m.selectedQueueCampaignHoppers);return m.selectedQueueCampaignHoppers=[],e},m.deleteQueueCampaignHopper=g,m.deleteSelectedQueueCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedQueueCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHoppers.forEach(function(e){g(e)}),m.selectedQueueCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})}),t=null;if(m.queueCampaign&&(t=_.find(m.agents,{id:Number(m.queueCampaign.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.agents,{id:t.id});a.canSelect=!1,n.push(a)}m.agents=n})}else{var t=[],a=null;m.queueCampaign&&(a=_.find(m.agents,{id:Number(m.queueCampaign.UserId)}));for(var i=0;i<m.agents.length;i++)a&&m.agents[i].id===a.id&&(m.agents[i].canSelect=!1,t.push(m.agents[i]));m.agents=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.VoiceQueueId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})}),t=null;if(g.hopper&&(t=_.find(g.agents,{id:Number(g.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.agents,{id:t.id});a.canSelect=!1,n.push(a)}g.agents=n})}else{var t=[],a=null;g.hopper&&(a=_.find(g.agents,{id:Number(g.hopper.UserId)}));for(var i=0;i<g.agents.length;i++)a&&g.agents[i].id===a.id&&(g.agents[i].canSelect=!1,t.push(g.agents[i]));g.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperVoiceQueueIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.queueCampaign={},i.init=function(n){i.queueCampaign=n,t.cmHopper.get({limit:0,VoiceQueueId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,VoiceQueueId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,VoiceQueueId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("QueueCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return i.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","queueCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("QueueCampaignresetlistController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.queueCampaign=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("MOTIONDIALER.ALL_TEAMS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.queueCampaign.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignteamaddController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.queueCampaign=c||t.params.queueCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.resetlistdialog=function(n,t){r.voiceQueue.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.queueCampaign.id,n=a.rows[0],t=n.id,r.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return r.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"QueueCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{queueCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},u.alert=l.info,u.gotoQueueCampaigns=function(){t.go("app.motiondialer.queueCampaigns",{},{reload:"app.motiondialer.queueCampaigns"})},u.saveQueueCampaign=function(){r.voiceQueue.update({id:u.queueCampaign.id},u.queueCampaign).$promise.then(function(){l.success({title:"QueueCampaign updated!",msg:u.queueCampaign.name?u.queueCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.musiconholds,{name:u.queueCampaign.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.trunks,{id:t.id});a.canSelect=!1,n.push(a)}u.trunks=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)}));for(var i=0;i<u.trunks.length;i++)a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,t.push(u.trunks[i]));u.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.projects,{name:u.queueCampaign.dialQueueProject})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.projects,{name:u.queueCampaign.dialQueueProject}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","queueCampaign","userProfileSection"],angular.module("app.motiondialer").controller("QueueCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.queueCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="queueCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedQueueCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialMethod=_.keyBy([{option:"Progressive",value:"'progressive'"},{option:"PowerDialing",value:"'power'"},{option:"Predictive",value:"'predictive'"},{option:"Preview",value:"'preview'"},{option:"BookedProgressive",value:"'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraystrategy=_.keyBy([{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Round Robin",value:"'roundrobin'",ngIf:"vm.queueCampaign.dialMethod === 'booked'"},{option:"Least Recent",value:"'leastrecent'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Fewest Calls",value:"'fewestcalls'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Random",value:"'random'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Linear",value:"'linear'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Weight Random",value:"'wrandom'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("queueCampaign")+"?").htmlContent("<b>"+(e.name||"queueCampaign")+"</b> will be deleted.").ariaLabel("delete queueCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},f.success=E,f.getQueueCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="QueueCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditQueueCampaign=function(e,n){i.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:f.queueCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteQueueCampaign=y,f.exportSelectedQueueCampaigns=function(){var e=angular.copy(f.selectedQueueCampaigns);return f.selectedQueueCampaigns=[],e},f.deleteSelectedQueueCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+f.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedQueueCampaigns.forEach(function(e){y(e)}),f.selectedQueueCampaigns=[]})},f.deselectQueueCampaigns=function(){f.selectedQueueCampaigns=[]},f.selectAllQueueCampaigns=function(){f.selectedQueueCampaigns=f.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.queueCampaign&&(t=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.queueCampaign&&(a=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.queueCampaigns=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.queueCampaigns.rows,{id:e.id}),f.queueCampaigns.count-=1,f.queueCampaigns.rows.length||f.getQueueCampaigns(),p.success({title:_.startCase("QueueCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"outbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"outbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m){var u=this,p=["name","active","limitCalls","message","originated","IntervalId","SquareProjectId","Trunk","TrunkId","ivrAnswerCallsDay","dialQueueProject","ivrTotalCallsDays","description"];function g(){_.forIn(u.campaigns,function(e,n){u.rpcCampaigns[n]&&_.merge(e,_.pick(u.rpcCampaigns[n],p))})}u.currentUser=m.getCurrentUser(),u.count=o.count,u.campaigns=o?_.keyBy(o.rows?o.rows:[],"id"):{},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"-updatedAt",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){u.campaigns[e.id]&&(_.merge(u.campaigns[e.id],_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.count=e.count,u.campaigns=e?_.keyBy(e.rows?e.rows:[],"id"):{},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"outbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"outbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:m.queues.rows,realtime:!0,crudPermissions:m.crudPermissions}})},m.showPredictiveQueueCampaignInfo=function(e,n){t.show({controller:"PredictiveQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}})},o.onWithoutApply("voice_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&(_.merge(n,_.pick(e,u)),_.isNil(e.startPredictive)&&(n.startPredictive=void 0))}),o.on("userVoiceQueueRt:save",function(e){var n=_.find(m.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("user:agentconnect",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available-=1)})}),o.on("user:agentcomplete",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available+=1)})}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.voicePause?(n.paused=!0,e.paused+=1,e.available-=1):!t.voicePause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),o.removeAllListeners("userVoiceQueueRt:save"),o.removeAllListeners("user:agentconnect"),o.removeAllListeners("user:agentcomplete"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueuesMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t){this.queueCampaign=t,this.addMinutes=function(e,n){return moment(e).add("m",n).format("HH:mm:ss")},this.setFormatTime=function(e){return moment(e).format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$interval","queueCampaign"],angular.module("app.motiondialer").controller("PredictiveQueueCampaignDialogController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(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(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(this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,u).$promise}function g(e){d.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountInteractions.rows,{id:e.id}),m.smsAccountInteractions.count-=1,m.smsAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountInteractions={count:0,rows:[]},m.selectedSmsAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.smsInteractionDownload=function(s,e,n){return d.smsInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getSmsAccountInteractions=p,m.createOrEditSmsAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,interaction:n,interactions:m.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spysmsInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"sms",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"sms.smsAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||SmsAccountId:=$eq["+m.smsAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(m.selectedSmsAccountInteractions);return m.selectedSmsAccountInteractions=[],e},m.deleteSmsAccountInteraction=g,m.deleteSelectedSmsAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountInteractions.forEach(function(e){g(e)}),m.selectedSmsAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountSmsCannedAnswers.rows,{id:e.id}),m.smsAccountSmsCannedAnswers.count-=1,m.smsAccountSmsCannedAnswers.rows.length||p(),l.success({title:"SmsCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountSmsCannedAnswers={count:0,rows:[]},m.selectedSmsAccountSmsCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("smsCannedAnswer #")+e.id||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getSmsAccountSmsCannedAnswers=p,m.createOrEditSmsAccountSmsCannedAnswer=function(e,n){o.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,smsCannedAnswer:n,smsCannedAnswers:m.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(m.selectedSmsAccountSmsCannedAnswers);return m.selectedSmsAccountSmsCannedAnswers=[],e},m.deleteSmsAccountSmsCannedAnswer=g,m.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+m.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),m.selectedSmsAccountSmsCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSCANNEDANSWER",g.smsCannedAnswer=angular.copy(l),g.smsCannedAnswers=r,g.newSmsCannedAnswer=!1,g.smsCannedAnswer||(g.smsCannedAnswer={},g.title="SMS.NEW_SMSCANNEDANSWER",g.newSmsCannedAnswer=!0),n.params.id&&(g.smsCannedAnswer.SmsAccountId=n.params.id),g.addNewSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.smsCannedAnswer).$promise.then(function(e){g.smsCannedAnswers.unshift(e.toJSON()),o.success({title:"SmsCannedAnswer properly created",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.smsCannedAnswer.id},g.smsCannedAnswer).$promise.then(function(e){var n=_.find(g.smsCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SmsCannedAnswer properly saved!",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.smsCannedAnswer.id}).$promise.then(function(){_.remove(g.smsCannedAnswers,{id:g.smsCannedAnswer.id}),o.success({title:"SmsCannedAnswer properly deleted!",msg:(g.smsCannedAnswer.name||"smsCannedAnswer")+" has been deleted!"}),v(g.smsCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsCannedAnswers","smsCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.smsAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.smsAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.smsAccount.id,field:"SmsAccountId",route:"smsAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.sms").controller("SmsAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.smsAccount=c||e.params.smsAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:p.smsAccounts?p.smsAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts",{},{reload:"app.sms.smsAccounts"})},p.saveSmsAccount=function(){r.smsAccount.update({id:p.smsAccount.id},p.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:p.smsAccount.name?p.smsAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.smsAccount&&(t=_.find(p.lists,{id:Number(p.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.smsAccount&&(a=_.find(p.lists,{id:Number(p.smsAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfile","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSmsAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Skebby",value:"'skebby'"},{option:"Connectel",value:"'connectel'"},{option:"ClickSend",value:"'clicksend'"},{option:"Plivo",value:"'plivo'"},{option:"Infobip",value:"'infobip'"},{option:"Clickatell",value:"'clickatell'"},{option:"Bandwidth",value:"'bandwidth'"},{option:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:f.smsAccounts?f.smsAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsAccount")+"?").htmlContent("<b>"+(e.name||"smsAccount")+"</b> will be deleted.").ariaLabel("delete smsAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSmsAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsAccount=function(e,n){i.show({controller:"CreateOrEditSmsAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:n,smsAccounts:f.smsAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsAccount=y,f.exportSelectedSmsAccounts=function(){var e=angular.copy(f.selectedSmsAccounts);return f.selectedSmsAccounts=[],e},f.deleteSelectedSmsAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+f.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsAccounts.forEach(function(e){y(e)}),f.selectedSmsAccounts=[]})},f.deselectSmsAccounts=function(){f.selectedSmsAccounts=[]},f.selectAllSmsAccounts=function(){f.selectedSmsAccounts=f.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.smsAccount&&(t=_.find(f.lists,{id:Number(f.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.smsAccount&&(a=_.find(f.lists,{id:Number(f.smsAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.smsAccounts=e||{count:0,rows:[]}}function y(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.smsAccounts.rows,{id:e.id}),f.smsAccounts.count-=1,f.smsAccounts.rows.length||f.getSmsAccounts(),p.success({title:_.startCase("SmsAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSQUEUE",g.smsQueue=angular.copy(l),g.smsQueues=r,g.newSmsQueue=!1,g.smsQueue||(g.smsQueue={strategy:"beepall",timeout:10},g.title="SMS.NEW_SMSQUEUE",g.newSmsQueue=!0),g.addNewSmsQueue=function(){g.errors=[],d.smsQueue.save(g.smsQueue).$promise.then(function(e){g.smsQueues.unshift(e.toJSON()),o.success({title:"SmsQueue properly created",msg:g.smsQueue.name?g.smsQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsQueue=function(){g.errors=[],d.smsQueue.update({id:g.smsQueue.id},g.smsQueue).$promise.then(function(e){var n=_.find(g.smsQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SmsQueue properly saved!",msg:g.smsQueue.name?g.smsQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsQueue.delete({id:g.smsQueue.id}).$promise.then(function(){_.remove(g.smsQueues,{id:g.smsQueue.id}),o.success({title:"SmsQueue properly deleted!",msg:(g.smsQueue.name||"smsQueue")+" has been deleted!"}),v(g.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsQueues","smsQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.agents=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="agents",f.listOrder="",f.listOrderAsc=null,f.selectedAgents=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",role:"agent",sort:"-updatedAt",limit:10,page:1},f.arrayshowWebBar=_.keyBy([{option:"Phonebar",value:"0"},{option:"External",value:"1"},{option:"WebRTC",value:"2"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'",ngIf:"vm.agent.showWebBar == 1"},{option:"wss",value:"'wss'",ngIf:"vm.agent.showWebBar == 1"},{option:"tls",value:"'tls'",ngIf:"vm.agent.showWebBar == 1"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayextensionMonitor=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'WAV'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:f.agents?f.agents.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getAgents=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Agents",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditAgent=function(e,n){i.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:f.agents.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteAgent=y,f.exportSelectedAgents=function(){var e=angular.copy(f.selectedAgents);return f.selectedAgents=[],e},f.deleteSelectedAgents=function(e){var n=i.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+f.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedAgents.forEach(function(e){y(e)}),f.selectedAgents=[]})},f.deselectAgents=function(){f.selectedAgents=[]},f.selectAllAgents=function(){f.selectedAgents=f.agents.rows};var b=!0,A=1;function E(e){f.agents=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.agents.rows,{id:e.id}),f.agents.count-=1,f.agents.rows.length||f.getAgents(),p.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getAgents())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","agents","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_AGENT",g.agent=angular.copy(l),g.agents=r,g.newAgent=!1,g.agent||(g.agent={role:"agent",showWebBar:"0",autointernal:!0,wssPort:8089,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!0,downloadAttachments:!0,downloadOmnichannelInteractions:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_AGENT",g.newAgent=!0),g.addNewAgent=function(){g.errors=[],d.user.save(g.agent).$promise.then(function(e){g.agents.unshift(e.toJSON()),o.success({title:"Agent properly created",msg:g.agent.name?g.agent.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveAgent=function(){g.errors=[],d.user.update({id:g.agent.id},g.agent).$promise.then(function(e){var n=_.find(g.agents,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Agent properly saved!",msg:g.agent.name?g.agent.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteAgent=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.agent.id}).$promise.then(function(){_.remove(g.agents,{id:g.agent.id}),o.success({title:"Agent properly deleted!",msg:(g.agent.name||"agent")+" has been deleted!"}),v(g.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","agents","agent","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:"bull"===c.channel?"voice":c.channel,type:c.direction,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:c.direction,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.QUEUEADD_AGENT_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),labelSelected:s.instant("STAFF.SELECTED_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentqueueaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=a,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.agent=c||e.params.agent||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.queueaddchannel=function(e,n,t,a){i.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,setting:o,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){u.agent.phoneBarEnableScreenRecordingByAgent&&(u.agent[e]=!u.agent.phoneBarEnableScreenRecordingByAgent)})},u.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){u.agent.phoneBarEnableAutomaticScreenRecording&&(u.agent[e]=!u.agent.phoneBarEnableAutomaticScreenRecording)})},u.alert=l.info,u.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},u.saveAgent=function(){u.agent=_.omit(u.agent,"userpic"),r.user.update({id:u.agent.id},u.agent).$promise.then(function(){l.success({title:"Agent updated!",msg:u.agent.name?u.agent.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.agent&&(t=_.find(u.contexts,{name:u.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USER",g.user=angular.copy(l),g.users=r,g.newUser=!1,g.user||(g.user={role:"user",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_USER",g.newUser=!0),g.addNewUser=function(){g.errors=[],d.user.save(g.user).$promise.then(function(e){g.users.unshift(e.toJSON()),o.success({title:"User properly created",msg:g.user.name?g.user.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUser=function(){g.errors=[],d.user.update({id:g.user.id},g.user).$promise.then(function(e){var n=_.find(g.users,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"User properly saved!",msg:g.user.name?g.user.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUser=function(e){if(c.getCurrentUser().id===g.user.id)return o.error({title:"User not deleted!",msg:"You can't remove yourself"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.user.id}).$promise.then(function(){_.remove(g.users,{id:g.user.id}),o.success({title:"User properly deleted!",msg:(g.user.name||"user")+" has been deleted!"}),v(g.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","users","user","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.currentUser=i.getCurrentUser(),s.errors=[],s.user=a,s.generateApiKey=function(){s.errors=[],t.user.createApiKey({id:s.user.id}).$promise.then(function(e){s.user.apiKey=e.api_key||"N/A",n.success({title:"User API key updated!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.createApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.createApiKey"}]})},s.removeApiKey=function(){s.errors=[],t.user.removeApiKey({id:s.user.id}).$promise.then(function(){s.user.apiKey="N/A",n.success({title:"User API key removed!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.removeApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.removeApiKey"}]})},s.closeDialog=o}e.$inject=["$mdDialog","toasty","api","user","Auth"],angular.module("app.staff").controller("UserapikeymanagerController",e)}(),function(){"use strict";function e(e,a){var i=this;i.user={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.user.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.user=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.user.id+"/avatar",i.user.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Userchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.user=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.user.id,newPassword:r.password};r.currentUser.id==r.user.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"User password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.userForm.password.$setValidity("oldPasswordMatch",!1):t.userForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.user=c||e.params.user||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.apikeymanagerdialog=function(e,n){t.show({controller:"UserapikeymanagerController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){t.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,setting:o,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},u.saveUser=function(){u.user=_.omit(u.user,"userpic"),r.user.update({id:u.user.id},u.user).$promise.then(function(){l.success({title:"User updated!",msg:u.user.name?u.user.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.userProfiles=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.user.getApiKey({id:u.user.id}).$promise.then(function(e){u.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_APIKEY",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.users=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="users",f.listOrder="",f.listOrderAsc=null,f.selectedUsers=[],f.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",role:"admin,user",sort:"-updatedAt",limit:10,page:1},f.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("user")+"?").htmlContent("<b>"+(e.name||"user")+"</b> will be deleted.").ariaLabel("delete user").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUsers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Users",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUser=function(e,n){i.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:f.users.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUser=y,f.exportSelectedUsers=function(){var e=angular.copy(f.selectedUsers);return f.selectedUsers=[],e},f.deleteSelectedUsers=function(e){var n=i.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+f.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUsers.forEach(function(e){y(e)}),f.selectedUsers=[]})},f.deselectUsers=function(){f.selectedUsers=[]},f.selectAllUsers=function(){f.selectedUsers=f.users.rows},m.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.userProfiles=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.users=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.users.rows,{id:e.id}),f.users.count-=1,f.users.rows.length||f.getUsers(),p.success({title:_.startCase("User")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUsers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","users","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,e,i,s){var o=this;function r(e,n,t){return s.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}o.customDashboard={},o.voiceQueues=s.rpc.getVoiceQueues({fields:"id,name"}),o.init=function(e,n){return o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},o.customDashboard=e,o.customDashboard.draggable={enabled:!0,handle:".draggable",stop:r},o.customDashboard.resizable={enabled:!0,handle:".resizable",stop:r},o.customDashboard.widgets=[],s.dashboard.getItems({id:e.id}).$promise.then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].voiceQueues=o.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",o.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})},o.createOrEditWidget=function(e){if(e&&e.attrs)for(var n=0;n<e.attrs.length;n+=1)"attrReport"===e.attrs[n].name&&(e.reportType=e.attrs[n].type),e[e.attrs[n].name]=e.attrs[n].value;t.show({controller:"CreateOrEditDashboardItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",parent:angular.element(a.body),clickOutsideToClose:!0,locals:{dashboarditem:e,dashboard:o.customDashboard.widgets,license:null,setting:null,crudPermissions:o.crudPermissions}}).then(function(e){if(e)for(var n=0;n<o.customDashboard.widgets.length;n+=1)o.customDashboard.widgets[n].id===e.id&&(o.customDashboard.widgets[n].attrs=e.attrs,o.customDashboard.widgets[n].voiceQueues=o.voiceQueues,o.customDashboard.widgets[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),o.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+o.customDashboard.widgets[n].type+"/ms-widget-engine."+o.customDashboard.widgets[n].type+".html")})},o.deleteWidget=function(n){var e=t.confirm().title("Would you like to delete "+n.title+"?").textContent("").ariaLabel("Delete Widget").ok("YES").cancel("NO");t.show(e).then(function(){return s.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(o.customDashboard.widgets,{id:n.id}),i.success({title:"Widget deleted!",msg:n.name?n.name+" has been deleted!":"Widget has been deleted!"})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","socket","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var n="disposition";l?n=l.route:"user"===m.currentUser.role&&(n="userProfile");var t="get";l?t="getDispositions":"user"===m.currentUser.role&&(t="getResources");var e={fields:"id,name,level,ParentId",id:l?l.id:void 0,section:"user"===m.currentUser.role?"Dispositions":void 0,MailAccountId:l?void 0:"null",FaxAccountId:l?void 0:"null",SmsAccountId:l?void 0:"null",OpenchannelAccountId:l?void 0:"null",ChatWebsiteId:l?void 0:"null",WhatsappAccountId:l?void 0:"null",ListId:l?void 0:"null",sort:"id",nolimit:"true"};(a=n,i=t,s=e,o(function(t,n){d[a][i](s).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})).then(function(e){m.dispositions=angular.copy(e),m.newDisposition||function(){if("first"===m.disposition.level)return;if(m.parentDisposition=_.find(m.dispositions,["id",m.disposition.ParentId]),!m.parentDisposition)return p().then(function(e){m.allDispositions=e;for(var n=0;n<m.allDispositions.length;n++){var t=m.allDispositions[n];if(t.id===m.disposition.ParentId){g(t),t.canSelect=!1,m.dispositions.push(t);break}}});g(m.parentDisposition)}()}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:["api",n,t].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAllId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAllConditions=r,u.createOrEditAllCondition=function(e,n){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,allCondition:n,allConditions:u.allConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.allConditions={count:e.length,rows:e},s())})},u.exportSelectedAllConditions=function(){var e=angular.copy(u.selectedAllConditions);return u.selectedAllConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteSelectedAllConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAllConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAllConditions.forEach(function(e){p(e)}),u.selectedAllConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.allCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.allConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAnyId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAnyConditions=r,u.createOrEditAnyCondition=function(e,n){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,anyCondition:n,anyConditions:u.anyConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.anyConditions={count:e.length,rows:e},s())})},u.exportSelectedAnyConditions=function(){var e=angular.copy(u.selectedAnyConditions);return u.selectedAnyConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteAnyCondition=p,u.deleteSelectedAnyConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAnyConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAnyConditions.forEach(function(e){p(e)}),u.selectedAnyConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.anyCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.anyConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function m(e){switch(e){case"sound":if(!d.application.appdata)return;return[{key:"save_name",value:d.application.appdata.split("/").pop()}];case"squareProject":if(!d.application.project)return;return[{key:"name",value:d.application.project.split(",")[1]}];case"tag":if(!d.application.tag)return;return[{key:"name",value:d.application.tag}];case"trunk":if(!d.application.trunk)return;return[{key:"name",value:d.application.trunk}];case"user":if(!d.application.user&&!d.application.users)return;return d.application.user?[{key:"name",value:d.application.user.split("/")[1]}]:_.map(d.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!d.application.name)return;return[{key:"name",value:d.application.name}];case"voiceContext":if(!d.application.context)return;return[{key:"name",value:d.application.context}];case"voiceMail":if(!d.application.voiceMail)return;return[{key:"mailbox",value:d.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!d.application.queue)return;return[{key:"name",value:d.application.queue}]}}function u(){o.getResourcesByRole(d.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},m("trunk")).then(function(e){d.trunks=e}).catch(function(){s.error({title:i.instant("TOOLS.TRUNKS"),msg:i.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function p(){o.getResourcesByRole(d.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},m("sound")).then(function(e){d.sounds=e}).catch(function(){s.error({title:i.instant("TOOLS.SOUNDS"),msg:i.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function g(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=m("user"),t=[o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();d.users={rows:n,count:n.length}}).catch(function(){s.error({title:i.instant("STAFF.USERS"),msg:i.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function v(){(d.application.appdata||"custom"===d.application.appType)&&e.hide(d.application),e.hide()}d.currentUser=r.getCurrentUser(),d.application=angular.copy(n),d.crudPermissions=l,d.errors=[],d.init=function(){d.application.appdata&&function(){var e=[];switch(d.application.appType){case"agi":d.application.project=d.application.appdata;break;case"dial":e=d.application.appdata.split(","),d.application.tech=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"externalDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"goTo":e=d.application.appdata.split(","),d.application.context=c(e[0]),d.application.extension=c(e[1]),d.application.priority=c(e[2]);break;case"internalDial":e=d.application.appdata.split(","),d.application.user=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"outboundDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]),d.application.prefix=d.application.phone?d.application.phone.split("$")[0]:void 0,d.application.callerId=d.application.callerID?"CALLERID(all)="+d.application.callerID:void 0;break;case"playback":e=d.application.appdata.split(","),d.application.appdata=c(e[0]),d.application.options=c(e[1]);break;case"queue":e=d.application.appdata.split(","),d.application.queue=c(e[0]),d.application.options=c(e[1]),d.application.URL=c(e[2]),d.application.sound=c(e[3]),d.application.timeout=c(e[4]),d.application.agi=c(e[5]),d.application.macro=c(e[6]),d.application.gosub=c(e[7]),d.application.rule=c(e[8]),d.application.position=c(e[9]);break;case"ringGroup":e=d.application.appdata.split(","),d.application.users=e[0].split("&"),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"set":e=d.application.appdata.split("="),d.application.name=e[0],d.application.value=e[1];break;case"voicemail":e=d.application.appdata.split(","),d.application.voiceMail=c(e[0]),d.application.options=c(e[1])}}();switch(d.application.appType){case"agi":o.getResourcesByRole(d.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},m("squareProject")).then(function(e){d.projects=e}).catch(function(){s.error({title:i.instant("CALLYSQUARE.CALLYSQUARE")+" "+i.instant("CALLYSQUARE.PROJECTS"),msg:i.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":u();break;case"goTo":o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},m("voiceContext")).then(function(e){d.contexts=e}).catch(function(){s.error({title:i.instant("VOICE.CONTEXTS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":g();break;case"outboundDial":o.getResourcesByRole(d.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},m("tag")).then(function(e){d.tags=e}).catch(function(){s.error({title:i.instant("TOOLS.TAGS"),msg:i.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),u();break;case"playback":p();break;case"queue":p(),o.getResourcesByRole(d.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},m("voiceQueue")).then(function(e){d.queues=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEQUEUES"),msg:i.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":g();break;case"set":o.getResourcesByRole(d.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},m("variable")).then(function(e){d.variables=e}).catch(function(){s.error({title:i.instant("TOOLS.VARIABLES"),msg:i.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":o.getResourcesByRole(d.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},m("voiceMail")).then(function(e){d.voiceMails=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEMAILS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},d.saveRoutingApp=function(){d.errors=[],function(){var e=[];switch(d.application.appType){case"agi":d.application.appdata=d.application.project;break;case"dial":e[0]=d.application.tech,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"goTo":e[0]=d.application.context,e[1]=d.application.extension,e[2]=d.application.priority,d.application.appdata=e.join(",");break;case"internalDial":e[0]=d.application.user,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"outboundDial":d.application.phone=t.cutdigits?(d.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(d.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?d.application.options=d.application.options.replace("U(xcally-mixmonitor-context)",""):d.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(d.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"playback":e[0]=d.application.appdata,e[1]=d.application.options,d.application.appdata=e.join(",");break;case"queue":e[0]=d.application.queue,e[1]=d.application.options,e[2]=d.application.URL,e[3]=d.application.sound,e[4]=d.application.timeout,e[5]=d.application.agi,e[6]=d.application.macro,e[7]=d.application.gosub,e[8]=d.application.rule,e[9]=d.application.position,d.application.appdata=e.join(",");break;case"ringGroup":e[0]=d.application.users.join("&"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"set":e[0]=d.application.name,e[1]=d.application.value,d.application.appdata=e.join("=");break;case"voicemail":e[0]=d.application.voiceMail,e[1]=d.application.options,d.application.appdata=e.join(",")}}(),v()},d.closeDialog=v}e.$inject=["$mdDialog","$q","$translate","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r,l){var d=this;function c(){var e=[{key:"name",value:d.interval.IntervalId}];s.getResourcesByRole(d.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){d.intervals=e}).catch(function(){i.error({title:t.instant("TOOLS.INTERVALS"),msg:t.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function m(e){n.hide(e)}d.currentUser=o.getCurrentUser(),d.interval=angular.copy(e),d.intervals=a||{rows:[],count:0},d.types=["always","custom","list"],d.crudPermissions=r,d.errors=[],d.daysOfWeek=l.getDaysOfWeek(),d.monthNumber=l.getMonthNumber(),d.monthName=l.getMonthName(),d.daysOfMonth=l.getDaysOfMonth(),d.initialize=function(){if("*,*,*,*"===d.interval.interval)return d.type=d.interval.IntervalId&&d.interval.application?"list":"always",void("list"===d.type&&c());d.type="custom";var e=d.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),d.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),d.timeRangeTo=s}"*"!==t&&(d.dayOfWeekFrom=t.split("-")[0],d.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(d.monthDayFrom=a.split("-")[0],d.monthDayTo=a.split("-")[1]);"*"!==i&&(d.monthFrom=i.split("-")[0],d.monthTo=i.split("-")[1])},d.onTypeChange=function(){"list"===d.type&&0===d.intervals.count&&c()},d.saveInterval=function(){d.errors=[],d.interval.interval=function(){if(["always","list"].includes(d.type))return"*,*,*,*";var e=[];if("*"!==d.timeRangeFrom&&d.timeRangeFrom&&d.timeRangeTo){var n=(d.timeRangeFrom.getHours()<10?"0":"")+d.timeRangeFrom.getHours()+":"+(d.timeRangeFrom.getMinutes()<10?"0":"")+d.timeRangeFrom.getMinutes(),t=(d.timeRangeTo.getHours()<10?"0":"")+d.timeRangeTo.getHours()+":"+(d.timeRangeTo.getMinutes()<10?"0":"")+d.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return d.dayOfWeekFrom?d.dayOfWeekTo?e.push(d.dayOfWeekFrom+"-"+d.dayOfWeekTo):e.push(d.dayOfWeekFrom):e.push("*"),d.monthDayFrom?d.monthDayTo?e.push(d.monthDayFrom+"-"+d.monthDayTo):e.push(d.monthDayFrom):e.push("*"),d.monthFrom?d.monthTo?e.push(d.monthFrom+"-"+d.monthTo):e.push(d.monthFrom):e.push("*"),e.join()}(),"list"!==d.type&&(d.interval.IntervalId=null);m(d.interval)},d.closeDialog=m}e.$inject=["$mdDialog","$translate","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-sip"},d.newInboundRoute=!0);e=[{key:"name",value:d.inboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newinboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.inboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInboundRoute=function(){d.errors=[],o.voiceExtension.save(d.inboundRoute).$promise.then(function(e){c(e.id).then(function(){d.inboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.inboundRoute.id},d.inboundRoute).$promise.then(function(e){var n=_.find(d.inboundRoutes,{id:e.id});if(n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),d.applications)return c(d.inboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.inboundRoute.exten})).ariaLabel("Delete inbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.inboundRoute.id}).$promise.then(function(){_.remove(d.inboundRoutes,{id:d.inboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.inboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","inboundRoutes","inboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.inboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.inboundRoute=l||e.params.inboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.inboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Inbound",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Inbound",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Inbound",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Inbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.inboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInboundRoutes=function(){e.go("app.voice.inboundRoutes",{},{reload:"app.voice.inboundRoutes"})},m.saveInboundRoute=function(){o.voiceExtension.update({id:m.inboundRoute.id},m.inboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.inboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","inboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.inboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.inboundRoutes.rows,{id:e.id}),g.inboundRoutes.count-=1,g.inboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.inboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.inboundRoutes.edit",{id:e.id,inboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInboundRoute=function(e,n){a.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundRoute:n,inboundRoutes:g.inboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInboundRoutes=function(){var e=angular.copy(g.selectedInboundRoutes);return g.selectedInboundRoutes=[],e},g.deleteSelectedInboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInboundRoutes.forEach(function(e){f(e)}),g.selectedInboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","inboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.internalRoute=angular.copy(s),d.internalRoutes=n,d.newInternalRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.internalRoute||(d.internalRoute={appdata:"Internal Call",type:"internal",context:"from-sip"},d.newInternalRoute=!0);e=[{key:"name",value:d.internalRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInternalRoute)return;var e={sort:"priority",VoiceExtensionId:d.internalRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInternalRoute=function(){d.errors=[],o.voiceExtension.save(d.internalRoute).$promise.then(function(e){c(e.id).then(function(){d.internalRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInternalRoute=function(){d.errors=[],o.voiceExtension.update({id:d.internalRoute.id},d.internalRoute).$promise.then(function(e){var n=_.find(d.internalRoutes,{id:e.id});if(n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),d.applications)return c(d.internalRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInternalRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.internalRoute.exten})).ariaLabel("Delete internal route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.internalRoute.id}).$promise.then(function(){_.remove(d.internalRoutes,{id:d.internalRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.internalRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","internalRoutes","internalRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.internalRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.internalRoute=l||e.params.internalRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.internalRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Internal",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.internalRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInternalRoutes=function(){e.go("app.voice.internalRoutes",{},{reload:"app.voice.internalRoutes"})},m.saveInternalRoute=function(){o.voiceExtension.update({id:m.internalRoute.id},m.internalRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.internalRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","internalRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.internalRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InternalRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.internalRoutes.rows,{id:e.id}),g.internalRoutes.count-=1,g.internalRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.internalRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInternalRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.internalRoutes.edit",{id:e.id,internalRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInternalRoute=function(e,n){a.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalRoute:n,internalRoutes:g.internalRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInternalRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInternalRoutes=function(){var e=angular.copy(g.selectedInternalRoutes);return g.selectedInternalRoutes=[],e},g.deleteSelectedInternalRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInternalRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInternalRoutes.forEach(function(e){f(e)}),g.selectedInternalRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","internalRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InternalRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MUSICONHOLD",g.musiconhold=angular.copy(l),g.musiconholds=r,g.newMusicOnHold=!1,g.musiconhold||(g.musiconhold={mode:"files"},g.title="VOICE.NEW_MUSICONHOLD",g.newMusicOnHold=!0),g.addNewMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.save(g.musiconhold).$promise.then(function(e){g.musiconholds.unshift(e.toJSON()),o.success({title:"MusicOnHold properly created",msg:g.musiconhold.name?g.musiconhold.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.musiconhold.id},g.musiconhold).$promise.then(function(e){var n=_.find(g.musiconholds,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MusicOnHold properly saved!",msg:g.musiconhold.name?g.musiconhold.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMusicOnHold=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.musiconhold.id}).$promise.then(function(){_.remove(g.musiconholds,{id:g.musiconhold.id}),o.success({title:"MusicOnHold properly deleted!",msg:(g.musiconhold.name||"musiconhold")+" has been deleted!"}),v(g.musiconhold)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","musiconholds","musiconhold","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMusicOnHoldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.musiconholdMohSounds=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMusicOnHold.getSounds(m.query,u).$promise}function g(e){d.voiceMusicOnHold.removeSound({id:t.params.id,id2:e.id}).$promise.then(function(){_.remove(m.musiconholdMohSounds.rows,{id:e.id}),m.musiconholdMohSounds.count-=1,m.musiconholdMohSounds.rows.length||p(),l.success({title:"MohSound deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.musiconhold={},m.musiconholdMohSounds={count:0,rows:[]},m.selectedMusicOnHoldMohSounds=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},m.init=function(e,n){m.musiconhold=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceMusicOnHoldId=m.musiconhold.id,m.query.id=m.musiconhold.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mohSound #")+e.id||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMusicOnHoldDownload=function(s,e,n){return d.sound.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mohSound"+s.id,a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMusicOnHoldMohSounds=p,m.createOrEditMusicOnHoldMohSound=function(e,n){o.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:m.musiconhold,mohSound:n,mohSounds:m.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(m.selectedMusicOnHoldMohSounds);return m.selectedMusicOnHoldMohSounds=[],e},m.deleteMusicOnHoldMohSound=g,m.deleteSelectedMusicOnHoldMohSounds=function(e){var n=o.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+m.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),m.selectedMusicOnHoldMohSounds=[]})},c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.sounds,{id:e.resourceId})}),t=null;if(m.musiconhold&&(t=_.find(m.sounds,{id:Number(m.musiconhold.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.sounds,{id:t.id});a.canSelect=!1,n.push(a)}m.sounds=n})}else{var t=[],a=null;m.musiconhold&&(a=_.find(m.sounds,{id:Number(m.musiconhold.id)}));for(var i=0;i<m.sounds.length;i++)a&&m.sounds[i].id===a.id&&(m.sounds[i].canSelect=!1,t.push(m.sounds[i]));m.sounds=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MOHSOUND",g.mohSound=angular.copy(l),g.mohSounds=r,g.newMohSound=!1,g.mohSound||(g.mohSound={},g.title="VOICE.NEW_MOHSOUND",g.newMohSound=!0),n.params.id&&(g.mohSound.VoiceMusicOnHoldId=n.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:n.params.id},g.mohSound).$promise.then(function(e){g.mohSounds.unshift(e.toJSON()),o.success({title:"MohSound properly created",msg:g.mohSound.name?g.mohSound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMohSound=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.mohSound.id},g.mohSound).$promise.then(function(e){var n=_.find(g.mohSounds,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MohSound properly saved!",msg:g.mohSound.name?g.mohSound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMohSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.mohSound.id}).$promise.then(function(){_.remove(g.mohSounds,{id:g.mohSound.id}),o.success({title:"MohSound properly deleted!",msg:(g.mohSound.name||"mohSound")+" has been deleted!"}),v(g.mohSound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.sounds,{id:e.resourceId})}),t=null;if(g.mohSound&&(t=_.find(g.sounds,{id:Number(g.mohSound.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.sounds,{id:t.id});a.canSelect=!1,n.push(a)}g.sounds=n})}else{var t=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++)a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,t.push(g.sounds[i]));g.sounds=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mohSounds","mohSound","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMohSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.musiconhold=c||e.params.musiconhold||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoMusicOnHolds=function(){e.go("app.voice.musiconholds",{},{reload:"app.voice.musiconholds"})},u.saveMusicOnHold=function(){r.voiceMusicOnHold.update({id:u.musiconhold.id},u.musiconhold).$promise.then(function(){l.success({title:"MusicOnHold updated!",msg:u.musiconhold.name?u.musiconhold.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","musiconhold","userProfileSection"],angular.module("app.voice").controller("MusicOnHoldController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.musiconholds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="musiconholds",f.listOrder="",f.listOrderAsc=null,f.selectedMusicOnHolds=[],f.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},f.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("musiconhold")+"?").htmlContent("<b>"+(e.name||"musiconhold")+"</b> will be deleted.").ariaLabel("delete musiconhold").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMusicOnHolds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMusicOnHold.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MusicOnHolds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMusicOnHold=function(e,n){i.show({controller:"CreateOrEditMusicOnHoldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:n,musiconholds:f.musiconholds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMusicOnHold=y,f.exportSelectedMusicOnHolds=function(){var e=angular.copy(f.selectedMusicOnHolds);return f.selectedMusicOnHolds=[],e},f.deleteSelectedMusicOnHolds=function(e){var n=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+f.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMusicOnHolds.forEach(function(e){y(e)}),f.selectedMusicOnHolds=[]})},f.deselectMusicOnHolds=function(){f.selectedMusicOnHolds=[]},f.selectAllMusicOnHolds=function(){f.selectedMusicOnHolds=f.musiconholds.rows};var b=!0,A=1;function E(e){f.musiconholds=e||{count:0,rows:[]}}function y(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(f.musiconholds.rows,{id:e.id}),f.musiconholds.count-=1,f.musiconholds.rows.length||f.getMusicOnHolds(),p.success({title:_.startCase("MusicOnHold")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.outboundRoute=angular.copy(s),d.outboundRoutes=n,d.newOutboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.outboundRoute||(d.outboundRoute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},d.newOutboundRoute=!0);e=[{key:"name",value:d.outboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newOutboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.outboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewOutboundRoute=function(){d.errors=[],o.voiceExtension.save(d.outboundRoute).$promise.then(function(e){c(e.id).then(function(){d.outboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveOutboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.outboundRoute.id},d.outboundRoute).$promise.then(function(e){var n=_.find(d.outboundRoutes,{id:e.id});if(n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),d.applications)return c(d.outboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteOutboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.outboundRoute.exten})).ariaLabel("Delete outbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.outboundRoute.id}).$promise.then(function(){_.remove(d.outboundRoutes,{id:d.outboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.outboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","outboundRoutes","outboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.outboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.outboundRoute=l||e.params.outboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.outboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",options:"xX",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Outbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.outboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoOutboundRoutes=function(){e.go("app.voice.outboundRoutes",{},{reload:"app.voice.outboundRoutes"})},m.saveOutboundRoute=function(){o.voiceExtension.update({id:m.outboundRoute.id},m.outboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.outboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","outboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.outboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="OutboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.outboundRoutes.rows,{id:e.id}),g.outboundRoutes.count-=1,g.outboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.outboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedOutboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.outboundRoutes.edit",{id:e.id,outboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditOutboundRoute=function(e,n){a.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundRoute:n,outboundRoutes:g.outboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getOutboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedOutboundRoutes=function(){var e=angular.copy(g.selectedOutboundRoutes);return g.selectedOutboundRoutes=[],e},g.deleteSelectedOutboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedOutboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedOutboundRoutes.forEach(function(e){f(e)}),g.selectedOutboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","outboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording","routealias"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.channelStatusOut,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","helperClasses"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"inbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"inbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","talking","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:m.queues.rows,realtime:!0,crudPermissions:m.crudPermissions}})},o.onWithoutApply("voice_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&(e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting),_.merge(n,_.pick(e,u)))}),o.on("userVoiceQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userVoiceQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:agentconnect",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available-=1)})}),o.on("user:agentcomplete",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available+=1)})}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.voicePause?(n.paused=!0,e.paused+=1,e.available-=1):!t.voicePause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),o.removeAllListeners("userVoiceQueue:remove"),o.removeAllListeners("userVoiceQueue:save"),o.removeAllListeners("user:agentconnect"),o.removeAllListeners("user:agentcomplete"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueuesVoiceRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){var a=this;switch(a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.status,m.stateClass=r.state,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","helperClasses","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getTeams({id:l.voicePrefix.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voicePrefix=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.teamadddialog=function(e,n){i.show({controller:"voicePrefixteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEQUEUE",g.voiceQueue=angular.copy(l),g.voiceQueues=r,g.newVoiceQueue=!1,g.voiceQueue||(g.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},g.title="VOICE.NEW_VOICEQUEUE",g.newVoiceQueue=!0),g.addNewVoiceQueue=function(){g.errors=[],d.voiceQueue.save(g.voiceQueue).$promise.then(function(e){g.voiceQueues.unshift(e.toJSON()),o.success({title:"VoiceQueue properly created",msg:g.voiceQueue.name?g.voiceQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceQueue=function(){g.errors=[],d.voiceQueue.update({id:g.voiceQueue.id},g.voiceQueue).$promise.then(function(e){var n=_.find(g.voiceQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"VoiceQueue properly saved!",msg:g.voiceQueue.name?g.voiceQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.voiceQueue.id}).$promise.then(function(){_.remove(g.voiceQueues,{id:g.voiceQueue.id}),o.success({title:"VoiceQueue properly deleted!",msg:(g.voiceQueue.name||"voiceQueue")+" has been deleted!"}),v(g.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceQueues","voiceQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voiceRecording=c||e.params.voiceRecording||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},u.saveVoiceRecording=function(){r.voiceRecording.update({id:u.voiceRecording.id},u.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:u.voiceRecording.name?u.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h){var f=this;function b(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceRecordings=r||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceRecordings=[],f.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:f.crudPermissions})},f.runtranscriberuntranscribesentiment=b,f.runtranscribesentimentruntranscribesentiment=A,f.runsentimentruntranscribesentiment=E,f.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){I(e)},function(){console.log("CANCEL")})},f.success=T,f.getVoiceRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceRecording.get(f.query,T).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceRecordings",f.promise=m.userProfile.getResources(f.query,T).$promise)},f.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:f.voiceRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceRecording=I,f.exportSelectedVoiceRecordings=function(){var e=angular.copy(f.selectedVoiceRecordings);return f.selectedVoiceRecordings=[],e},f.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+f.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceRecordings.forEach(function(e){I(e)}),f.selectedVoiceRecordings=[]})},f.deselectVoiceRecordings=function(){f.selectedVoiceRecordings=[]},f.selectAllVoiceRecordings=function(){f.selectedVoiceRecordings=f.voiceRecordings.rows},f.runtranscribeSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){b(e,n)}),f.selectedVoiceRecordings=[]},f.runtranscribesentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){A(e,n)}),f.selectedVoiceRecordings=[]},f.runsentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){E(e,n)}),f.selectedVoiceRecordings=[]};var y=!0,S=1;function T(e){f.voiceRecordings=e||{count:0,rows:[]}}function I(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceRecordings.rows,{id:e.id}),f.voiceRecordings.count-=1,f.voiceRecordings.rows.length||f.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){y?o(function(){y=!1}):(n||(S=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=S),f.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"whatsapp",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsWhatsappRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("whatsapp_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userWhatsappQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userWhatsappQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.whatsappPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.whatsappPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("whatsapp_queue:save"),o.removeAllListeners("userWhatsappQueue:remove"),o.removeAllListeners("userWhatsappQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.whatsapp").controller("QueuesWhatsappRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(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              \x3c!-- ng-style="{top: \'-\' + ((($index % 10) + 1) * 18) + \'px\'}" --\x3e\n              <md-card class="tooltip-preview-text" >\n                <md-card-content><span class="email-preview-message">{{ interaction.lastMsgText }}</span>\n                </md-card-content>\n              </md-card>\n            </div>\n            <span ng-if="!interaction.lastMsgText || !vm.setting.enableEmailPreview" class="text-truncate font-size-12">{{ interaction.subject }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="mailAccount">\n            {{ vm.getMailAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showMailInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Mail\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailInteractions.count}}" md-on-paginate="vm.getMailInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.MYCONTACTS">My Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact($event)" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="firstName" privacy ng-cloak>\n            {{contact.firstName}} {{contact.lastName}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="fax" privacy ng-cloak>\n            {{contact.fax}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="createdAt">{{contact.createdAt |\n            formatdate}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="list">\n            {{vm.listsMap[contact.ListId].name}}</td>\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact($event, contact)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.OPENCHANNEL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getOpenchannelInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getOpenchannelInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getOpenchannelInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.openchannelAccounts.rows && vm.openchannelAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeOpenchannelInteraction($event, openchannelAccount)" ng-disabled="!openchannelAccount.replyUri">\n              {{ openchannelAccount.name }} ({{ openchannelAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.openchannelInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.openchannelInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="openchannelAccount">\n            {{ vm.getOpenchannelAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showOpenchannelInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Openchannel\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelInteractions.count}}" md-on-paginate="vm.getOpenchannelInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html",'<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab label="{{\'DASHBOARDS.AGENTS\' | translate}}" md-on-select="vm.onAgentsTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html\'">\n        </md-content>\n      </md-tab>\n      <md-tab label="{{\'DASHBOARDS.QUEUES\' | translate}}" md-on-select="vm.onQueuesTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html\'">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.AGENTS"></span>\n      <ms-search-bar on-search="vm.getAgents()" query="vm.agentsQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.agentsQuery" search="vm.getAgents()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getAgents()">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.agentsQuery.sort" md-on-reorder="vm.getAgents">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="internal">{{\'VOICE.INTERNAL\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.agents.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="agent in vm.agents.rows">\n          <td md-cell>{{agent.id}}</td>\n          <td md-cell>{{agent.name}}</td>\n          <td md-cell>{{agent.internal}}</td>\n          <td md-cell>\n            <div layout="row">\n              <div layout="column" layout-align="center center">\n                <span class="text-boxed width-70 text-center md-background-bg bl bt padding-5" ng-class="{\'online\':\'lime-300-bg\',\'offline\':\'red-A200-bg\',\'pause\':\'amber-200-bg\',\'busy\':\'indigo-100-bg\'}[agent.status]">{{\n                  agent.status | uppercase }}</span>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages" ng-switch="vm.tab.channel">\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-default>\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html\'">\n            </div>\n          </div>\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n\n      \x3c!-- FOOTER --\x3e\n      <div ng-if="\n            !vm.interaction.closed && ( vm.tab.channel == \'chat\' \n            || (vm.tab.channel == \'openchannel\' && vm.account.replyUri) \n            || (vm.tab.channel == \'sms\' && !vm.tab.spy) \n            || (vm.tab.channel == \'whatsapp\' && !vm.tab.spy) )\n             && (vm.user.role !== \'admin\' && vm.user.role !== \'user\')" class="interaction-footer flex-noshrink" layout="row" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html\'">\n      </div>\n      \x3c!-- / FOOTER--\x3e\n    </md-card>\n\n    <md-card layout="column" flex class="info" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html\'">\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="CHAT.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="CHAT.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="CHAT.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="CHAT.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'CHAT.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'CHAT.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.ChatAccountId" md-font-icon="icon-earth" aria-label="alert chat" class="s16"></md-icon>\n          <md-icon ng-if="item.ChatAccountId" md-font-icon="icon-message-text" aria-label="alert chat" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="CHAT.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="FAX.SEND">SEND</span>\n          </md-button>\n          <md-button ng-disabled="vm.message.attachments.length === 1" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="FAX.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block to">\n        <label translate="FAX.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete ng-hide="vm.message.to.length === 1" md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.fax" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" ng-if="composeForm.$dirty">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n          <div ng-message="md-max-chips">You reached the maximum amount of chips</div>\n        </div>\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="FAX.DELETE_ATTACHMENT">\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message" ng-class="{\'mail-no-secret\': !vm.secret}" ng-cloak>\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar ng-class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <div ng-if="!vm.secret" class="md-button md-raised blue-bg no-padding">\n            <button class="white-fg margin-horizontal-10" aria-label="Send message" ng-disabled="!vm.verifySmtp" ng-click="vm.send($event, false, null)">\n              <span>{{ \'MAIL.SEND\' | translate | uppercase }}</span>\n            </button>\n            <span class="white-fg secondary-text vertical-divider"></span>\n            <md-menu>\n              <button ng-disabled="!vm.verifySmtp" class="white-fg margin-left-0" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-menu-down" class="icon s24"></md-icon>\n              </button>\n              <md-menu-content width="2">\n                <md-menu-item ng-if="vm.subStatuses.rows.length">\n                  <md-menu>\n                    <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="MAIL.SEND_AS">\n                      Send as\n                    </md-button>\n                    <md-menu-content>\n                      <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                        <md-button ng-click="vm.send($event, false, subStatus.name)">\n                          {{subStatus.name}}\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.send($event, true, null)" translate="MAIL.SEND_AND_CLOSE">\n                    Send and Close\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </div>\n          <md-button ng-if="!vm.secret" class=" md-button md-raised blue-bg white-fg margin-horizontal-10" aria-label="Save draft" ng-click="vm.saveDraft()">\n            <span>{{ (vm.isDraft ? \'DASHBOARDS.UPDATE_DRAFT\' : \'DASHBOARDS.SAVE_AS_DRAFT\') | translate | uppercase }}</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="MAIL.ADD_NOTE">Add note</span>\n          </md-button>\n          <md-button ng-disabled="!vm.verifySmtp" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload($files)" flow-init="vm.ngFlowOptions" flow-file-success="vm.fileSuccess($file, $message)" flow-file-added="vm.fileAdded($file)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="MAIL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to" ng-class="{\'hidden-cc\': vm.hiddenCC, \'hidden-bcc\': vm.hiddenBCC}">\n        <label translate="MAIL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.to)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n        <div class="cc-bcc" layout="row" layout-align="start center">\n          <div class="show-cc" ng-show="vm.hiddenCC" ng-click="vm.hiddenCC = false">CC</div>\n          <div class="show-bcc" ng-show="vm.hiddenBCC" ng-click="vm.hiddenBCC = false">BCC</div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenCC">\n        <label translate="MAIL.CC">Cc</label>\n        <md-chips name="cc" ng-model="vm.message.cc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.cc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchCc" md-items="contact in vm.contactSearch(vm.searchCc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenBCC">\n        <label translate="MAIL.BCC">Bcc</label>\n        <md-chips name="bcc" ng-model="vm.message.bcc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.bcc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchBcc" md-items="contact in vm.contactSearch(vm.searchBcc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block no-margin">\n        <label translate="MAIL.SUBJECT">Subject</label>\n        <input ng-model="vm.message.subject" type="text" ng-keypress="vm.keyPress($event)">\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size" ng-if="attachment.size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button ng-click="vm.removeAttachment(attachment)" class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="MAIL.DELETE_ATTACHMENT">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="padding-top-5">\n        <textarea ckeditor="vm.ckeditor" id="html-area" ng-model="vm.message.body" md-select-on-focus="" ready="vm.onReadyEditor()"></textarea>\n      </div>\n      <md-switch ng-if="!vm.message.showLastMessage && !vm.secret" ng-model="vm.message.showLastMessage" ng-change="vm.loadLastMessage()" aria-label="load last message"><span translate="MAIL.SHOW_ORIGINAL_MESSAGE">Show original message</span></md-switch>\n      <md-autocomplete ng-if="!vm.secret" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'MAIL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin" ng-keypress="vm.keyPress($event)">\n        <md-item-template>\n          <md-icon ng-if="!item.MailAccountId" md-font-icon="icon-earth" aria-label="alert email" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.MailAccountId" md-font-icon="icon-email" aria-label="alert email" class="s16 teal-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{ item.key }} -\n            {{ item.value | htmlToPlaintext }}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="MAIL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="OPENCHANNEL.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="OPENCHANNEL.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="OPENCHANNEL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="OPENCHANNEL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mapkey" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'OPENCHANNEL.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'OPENCHANNEL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.OpenchannelAccountId" md-font-icon="icon-earth" aria-label="alert openchannel" class="s16"></md-icon>\n          <md-icon ng-if="item.OpenchannelAccountId" md-font-icon="icon-message-text" aria-label="alert openchannel" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="OPENCHANNEL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="SMS.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="SMS.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="SMS.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="SMS.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'SMS.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'SMS.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.SmsAccountId" md-font-icon="icon-earth" aria-label="alert sms" class="s16"></md-icon>\n          <md-icon ng-if="item.SmsAccountId" md-font-icon="icon-message-text" aria-label="alert sms" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="SMS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="WHATSAPP.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="WHATSAPP.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="WHATSAPP.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="WHATSAPP.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'WHATSAPP.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'WHATSAPP.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.WhatsappAccountId" md-font-icon="icon-earth" aria-label="alert whatsapp" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.WhatsappAccountId" md-font-icon="icon-message-text" aria-label="alert whatsapp" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="WHATSAPP.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition" ng-init="vm.onInit()">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="!vm.interaction.closed" class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <span ng-if="vm.interaction.closed" class="title" translate="DASHBOARDS.INFO"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n        <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n          <md-option ng-value="null" ng-if="!vm.mandatoryDisposition">NONE</md-option>\n          <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n            {{ disposition.name }}</md-option>\n        </md-select>\n        <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n          <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.NOTE">Note</label>\n        <textarea ng-model="vm.interaction.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && (vm.firstLevelDisposition || vm.secondLevelDisposition || vm.thirdLevelDisposition)" aria-label="CLOSE_AND_DISPOSE" translate="DASHBOARDS.CLOSE_AND_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_AND_DISPOSE">\n          CLOSE AND DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition(false)" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && !vm.firstLevelDisposition" ng-disabled="vm.mandatoryDisposition" aria-label="CLOSE_WITHOUT_DISPOSE" translate="DASHBOARDS.CLOSE_WITHOUT_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_WITHOUT_DISPOSE">\n          CLOSE WITHOUT DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="vm.interaction.closed" ng-disabled="vm.mandatoryDisposition && !vm.firstLevelDisposition" aria-label="DISPOSE" translate="DASHBOARDS.DISPOSE" translate-attr-aria-label="DASHBOARDS.DISPOSE">\n          DISPOSE\n        </md-button>\n        <div ng-if="vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Mandatory Disposition"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="DASHBOARDS.HELP.MANDATORY_DISPOSITION_ENABLED"></span>\n        </div>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",'<md-dialog class="tag-dialog" aria-label="tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TAGS"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-chips ng-model="vm.interaction.Tags" md-autocomplete-snap md-require-match="vm.autocompleteRequireMatch">\n          <md-autocomplete ng-blur="vm.searchText = \'\'" md-min-length="0" md-selected-item-change="vm.selectedItemChange" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="item in vm.tags.rows | filter:{ name: vm.searchText }" md-item-text="item.name" placeholder="Search for a tag">\n            <span md-highlight-text="vm.searchText">{{item.name}}</span>\n          </md-autocomplete>\n          <md-chip-template>\n            <span>\n              <strong>{{$chip.name}}</strong>\n            </span>\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveTag(false)" ng-disabled="tagForm.$pristine" class="send-button md-accent md-raised" aria-label="TAG" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition">\n  <form name="transferForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TRANSFER"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(false)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.transfer.type">\n          <md-option ng-value="\'queue\'" ng-if="vm.account.queueTransfer">Queue</md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.account.agentTransfer">Agent</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'queue\'">\n        <label translate="DASHBOARDS.QUEUES">Queues</label>\n        <md-select name="queue" ng-model="vm.transfer.id" required>\n          <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.queue.$error" ng-show="transferForm.queue.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'agent\'">\n        <label translate="DASHBOARDS.AGENTS">Agents</label>\n        <md-select name="agent" ng-model="vm.transfer.id" required>\n          <md-option ng-value="agent.id" ng-repeat="agent in vm.agents.rows">{{\n            agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.agent.$error" ng-show="transferForm.agent.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.onTransfer(true)" ng-disabled="transferForm.$pristine" class="send-button md-accent md-raised" aria-label="DASHBOARDS.TRANSFER" translate="DASHBOARDS.TRANSFER" translate-attr-aria-label="DASHBOARDS.TRANSFER">\n          TRANSFER\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html",'\x3c!-- REPLY FORM --\x3e\n<div ng-show="vm.showFooter" layout="column" layout-align="center center" flex>\n  <div layout="row" layout-align="center center" style="flex-grow: 1; align-self: stretch" flex>\n    \x3c!-- msEmojyArea directive --\x3e\n    <ms-emoji-area ng-if="vm.tab.channel != \'fax\'" on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.tab.areaText" placeholder="vm.tab.channel.toUpperCase() + \'.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n    \x3c!-- / msEmojyArea directive --\x3e\n\n    <div layout="row" layout-align="end center">\n      <md-button ng-if="vm.tab.channel != \'fax\'" style="margin:1px;" class="md-icon-button md-mini" ng-click="vm.changeDisplayCannedAnswerInputValue()" aria-label="Search canned answer" translate translate-attr-aria-label="DASHBOARDS.SEND_MESSAGE">\n        <md-icon md-font-icon="icon-auto-fix" class="green-fg"></md-icon>\n      </md-button>\n\n      <md-button ng-if="vm.tab.channel == \'openchannel\' || vm.tab.channel == \'chat\' || vm.tab.channel == \'fax\'" style="margin:1px;" class="md-icon-button md-warn md-mini" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n        <md-icon md-font-icon="icon-paperclip"></md-icon>\n      </md-button>\n    </div>\n  </div>\n\n  <md-autocomplete ng-hide="!vm.displayCannedAnswerInput" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" placeholder="{{ \'DASHBOARDS.CANNED_ANSWER_SEARCH\' | translate}}" class="cannedarea input-show-hide">\n    <md-item-template>\n      <md-icon ng-if="!item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="icon-earth" aria-label="alert channel" class="s16"></md-icon>\n      <md-icon ng-if="item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" aria-label="alert channel" class="s16" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n      <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n    </md-item-template>\n\n    <md-not-found>\n      <span translate="DASHBOARDS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n    </md-not-found>\n  </md-autocomplete>\n</div>\n\x3c!-- / REPLY FORM --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.browserName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.BROWSER_NAME">Browser Name</p>\n      <h4>{{ item.browserName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.osName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.OS_NAME">OS Name</p>\n      <h4>{{ item.osName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.deviceModel">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DEVICE_MODEL">Device Model</p>\n      <h4>{{ item.deviceModel }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.referer">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.REFERER">Referer</p>\n      <h4>{{ item.referer }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerIp">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_IP">Originating IP Address</p>\n      <h4>{{ item.customerIp }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerPort">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_PORT">Originating TCP Port</p>\n      <h4>{{ item.customerPort }}</h4>\n    </div>\n  </md-list-item>\n  <md-divider ng-if="item.closed && item.ratingValue != null || item.ratingMessage"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.ratingValue != null">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.RATING">Rating</p>\n      <md-icon md-font-icon="icon-star" style="color:red" ng-show="!item.ratingType || item.ratingType == \'star\'" ng-repeat="ratingValue in [1,2,3,4,5] | limitTo:item.ratingValue"></md-icon>\n      <md-icon md-font-icon="icon-thumb-up" style="color:green" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 1"></md-icon>\n      <md-icon md-font-icon="icon-thumb-down" style="color:red" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 0"></md-icon>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.ratingMessage">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.FEEDBACK">Feedback</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.ratingMessage }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html",'<md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CONTACT">Contact</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <form name="contactForm" class="md-inline-form" novalidate>\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-account"></md-icon>\n            <label translate="DASHBOARDS.NAME">Name</label>\n            <input type="text" name="firstName" ng-model="vm.contact.firstName" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-email"></md-icon>\n            <label translate="DASHBOARDS.EMAIL">Email</label>\n            <input type="email" name="email" ng-model="vm.contact.email" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n            <label translate="DASHBOARDS.PHONE">Phone</label>\n            <input type="text" name="phone" ng-model="vm.contact.phone" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n            <label translate="DASHBOARDS.MOBILE">Mobile</label>\n            <input type="text" name="mobile" ng-model="vm.contact.mobile" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-deskphone"></md-icon>\n            <label translate="DASHBOARDS.FAX">Fax</label>\n            <input type="text" name="fax" ng-model="vm.contact.fax" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <div ng-if="!vm.tab.spy" layout="row" layout-align="center center">\n            <md-button class="md-raised md-accent" ng-click="vm.openContact(ev)" translate="DASHBOARDS.MORE">\n              More\n            </md-button>\n          </div>\n        </form>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.INTERACTION">Interaction</span>\n    </md-tab-label>\n    <md-tab-body>\n      <div layout="column" layout-align="space-between center" class="md-padding">\n        <md-icon class="s42" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n        <span ng-if="vm.interaction.closed" class="md-background-bg red-fg font-size-14">#{{vm.interaction.id}} - <span translate="DASHBOARDS.CLOSED"></span></span>\n        <span ng-if="!vm.interaction.closed" class="md-background-bg green-fg font-size-14">#{{vm.interaction.id}} -\n          <span translate="DASHBOARDS.OPENED"></span></span>\n        <span ng-if="!vm.interaction.closed && vm.interaction.substatus" class="md-background-bg green-fg font-size-14">{{vm.interaction.substatus}}</span>\n      </div>\n      <md-divider></md-divider>\n      <md-list flex>\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.WEBSITE" ng-if="vm.tab.channel == \'chat\'">Website</p>\n            <p translate="DASHBOARDS.ACCOUNT" ng-if="vm.tab.channel != \'chat\'">Account</p>\n            <h4>{{vm.account.name}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.AGENT">Agent</p>\n            <h4>{{vm.agent.fullname || vm.usersMap[vm.interaction.UserId]}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.externalUrl">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n            <a href="{{vm.interaction.externalUrl}}" target="_blank">\n              <h4>{{vm.interaction.externalUrl}}</h4>\n            </a>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n            <h4>{{vm.interaction.createdAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n\n        <div ng-switch="vm.tab.channel">\n          <div ng-switch-when="chat">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="openchannel">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html\'">\n            </div>\n          </div>\n        </div>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.Tags.length">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.TAGS">Tags</p>\n            <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n              <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n                <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n                <div class="tag-label">{{tag.name}}</div>\n              </div>\n            </div>\n          </div>\n        </md-list-item>\n\n        <md-divider ng-if="vm.interaction.closed"></md-divider>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n            <h4>{{vm.interaction.closedAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.disposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n            <h4>{{ vm.interaction.disposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.secondDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n            <h4>{{ vm.interaction.secondDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.thirdDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n            <h4>{{ vm.interaction.thirdDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-3-line md-long-text" ng-if="vm.interaction.closed && vm.interaction.note">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.NOTE">NOTE</p>\n            <h4 style="overflow-wrap: break-word; white-space: normal">{{ vm.interaction.note }}</h4>\n          </div>\n        </md-list-item>\n      </md-list>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html",'<md-divider></md-divider>\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.AGENT">Agent</p>\n      <h4>{{ vm.agent.fullname || vm.usersMap[item.UserId] || \'DASHBOARDS.NOT_ASSIGNED\' | translate }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.externalUrl">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n      <a href="{{ item.externalUrl }}" target="_blank">\n        <h4>{{ item.externalUrl }}</h4>\n      </a>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n      <h4>{{ item.createdAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <div ng-if="item.channel === \'chat\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n    </div>\n  </div>\n  <div ng-if="item.channel === \'mail\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n    </div>\n  </div>\n  <md-divider ng-if="item.closed"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n      <h4>{{ item.closedAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.disposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n      <h4>{{ item.disposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.secondDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n      <h4>{{ item.secondDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.thirdDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n      <h4>{{ item.thirdDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-3-line md-long-text" ng-if="item.closed && item.note">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">NOTE</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.note }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item ng-if="item.Tags.length">\n    <p class="padding-horizontal-15 grey-fg">Tags</p>\n    <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n      <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in item.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{ tag.name }}</div>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html",'<div layout-margin layout="row" layout-align="center center">\n  <ms-quick-filter filters="vm.quickFilters" query="vm.journeyOptions" search="vm.getCustomerJourney()">\n  </ms-quick-filter>\n</div>\n\n<md-content id="journey-content" flex ms-scroll layout-wrap>\n  <div ng-if="vm.journeyIsLoading" layout="row" layout-align="center center">\n    <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n  </div>\n  <div id="timeline" layout="column" ng-if="vm.journey && vm.journey.length && !vm.journeyIsLoading" ms-timeline="vm.journeyTimelineOptions" ms-timeline-load-more="vm.loadMoreJourney()">\n    \x3c!-- TIMELINE ITEM --\x3e\n    <div class="ms-timeline-item" layout-align="center center" ng-repeat="item in vm.journey">\n      <div class="timeline-card">\n        <md-card class="channel" ng-class="{\'md-grey-200-bg\': item.id == vm.interaction.id}">\n          <div layout="row" layout-align="space-between center">\n            <div class="header p-6" layout="row" layout-align="start center" ng-cloak>\n              <md-button class="md-fab md-mini no-click" aria-label="icon-channel" ng-class="{{ \'item.style.color\' }} + \'-bg\'">\n                <md-icon md-font-icon="{{ item.style.icon }}"></md-icon>\n              </md-button>\n              <div class="info" layout="column" ng-init="item.showMore = false">\n                <span class="font-size-12 text-truncate" ng-if="item.destination">\n                  #{{item.id}} - <span privacy ng-cloak>{{ item.destination }}</span>\n                </span>\n                <span class="font-size-12 text-truncate" ng-if="!item.destination">\n                  #{{item.id}} - {{ item.Account.key }}\n                </span>\n                <span class="font-size-10">{{item.createdAt | date: \'medium\'}}</span>\n                <span>\n                  <a class="toggle-details md-accent-color" ng-click="item.showMore = !item.showMore" translate="{{ item.showMore ? \'DASHBOARDS.HIDE_DETAILS\' : \'DASHBOARDS.SHOW_DETAILS\' }}">\n                  </a>\n                </span>\n              </div>\n            </div>\n            <span>\n              <img ng-if="item.UserId" class="avatar" ng-src="api/users/{{item.UserId}}/avatar">\n              <md-tooltip md-direction="left">{{item.Owner.fullname || item.User.fullname}}</md-tooltip>\n            </span>\n          </div>\n          <div ng-if="item.showMore">\n            <div ng-if="item.channel !== \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html\'">\n            </div>\n            <div ng-if="item.channel === \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html\'">\n            </div>\n          </div>\n          <md-divider></md-divider>\n          <div ng-if="item.id != vm.interaction.id" layout="row" layout-align="space-around center">\n            <div ng-if="item.closed && item.channel !== \'voice\'" class="text-truncate text-boxed-light">\n              <span class="red-fg" title="{{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate }} {{ item.dispositionsValues }}">\n                {{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate}} {{ item.dispositionsValues\n                }}\n              </span>\n            </div>\n            <span class="text-boxed md-background-bg green-fg" ng-if="!item.closed && item.channel !== \'voice\'" title="{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.OPENED\' | translate}}">\n              {{ \'DASHBOARDS.STATUS\' | translate}}:\n              {{ \'DASHBOARDS.OPENED\' | translate}}\n              <span ng-if="item.substatus"> - {{ item.substatus }}</span>\n            </span>\n            <span ng-if="item.channel === \'voice\'" class="text-boxed md-background-bg red-fg" title="{{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n                item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}">\n              {{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n              item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userSecondDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}: {{ item.userSecondDisposition }}">\n              {{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userSecondDisposition }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userThirdDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}: {{ item.userThirdDisposition }}">\n              {{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userThirdDisposition }}\n            </span>\n            <div flex></div>\n            <md-button ng-if="!vm.tab.spy && vm.user.role === \'agent\' && item.canOpen && item.channel !== \'voice\'" class="md-icon-button" aria-label="go" ng-click="vm.openInteraction(item)">\n              <md-icon md-font-icon="icon-open-in-new" class="s20"></md-icon>\n            </md-button>\n          </div>\n        </md-card>\n      </div>\n    </div>\n\n    <div ng-if="vm.canLoadMoreJourney" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row keep-on-top">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm.loadMoreJourney()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / TIMELINE ITEM --\x3e\n</md-content>\n\n<div ng-if="!vm.journey || vm.journey.length === 0" layout="row" layout-align="center center">\n  <em translate="DASHBOARDS.NO_DATA_AVAILABLE">No data available</em>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html",'<md-divider></md-divider>\n\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.TYPE">Type</p>\n      <h4>{{ item.type ? item.type : \'no type\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SOURCE">Source</p>\n      <h4 privacy ng-cloak>{{ item.source ? item.source : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DESTINATION">Destination</p>\n      <h4 privacy ng-cloak>{{ item.destination ? item.destination : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.UNIQUEID">Uniqueid</p>\n      <h4>{{ item.uniqueid ? item.uniqueid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CALLERID">Caller Id</p>\n      <h4 privacy ng-cloak>{{ item.callerid ? item.callerid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.STARTEDAT">Started At</p>\n      <h4>{{ item.starttime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.END_AT">End At</p>\n      <h4>{{ item.endtime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DURATION">Duration</p>\n      <h4>{{ item.duration ? item.duration : \'--\' }}s</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">Note</p>\n      <h4>{{ item.note ? item.note : \'--\' }}</h4>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.subject">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SUBJECT">Subject</p>\n      <h4>{{ item.subject }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.VISIBILITY">Visibility</p>\n      <h4 translate="{{ item.threadId ? \'DASHBOARDS.PUBLIC\' : \'DASHBOARDS.PRIVATE\'}}"></h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html",'\x3c!-- MESSAGES --\x3e\n<div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n  <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && !message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n  <md-button ng-if="vm.tab.channel === \'fax\'" class="md-fab md-mini no-margin" aria-label="Download" ng-click="vm.downloadMessage(message)">\n    <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n  </md-button>\n\n  <div class="bubble" ng-class="{\'md-yellow-200-bg\': message.secret}" ng-switch="message.direction">\n    <div ng-if="message.secret">\n      <div class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id">\n          <md-icon class="s18" md-font-icon="icon-lock"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="!message.secret">\n      <div ng-switch-when="in" class="time secondary-text" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n        <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n        <span> - {{message.createdAt | date: \'medium\'}}</span>\n      </div>\n      <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id && vm.tab.channel !== \'fax\'">\n          <md-icon ng-if="!message.read" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n        <div ng-if="message.id && vm.tab.channel === \'fax\'">\n          <md-icon ng-if="!message.read && !(message.failMessage )" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n          <span ng-if="!message.read && message.failMessage" class="s18 red-900-fg"> {{ message.failMessage }}</span>\n          <md-icon ng-if="!message.read && message.failMessage" class="s18 red-900-fg" md-font-icon="icon-close md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="message.AttachmentId" layout="row" layout-align="end center">\n      <md-button ng-if="vm.downloadPermissions.attachments" class="md-raised md-accent" ng-click="vm.getAttachment({id: message.AttachmentId, name: vm.htmlToPlaintext(message.body)})">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <div ng-if="!vm.downloadPermissions.attachments" class="disabled-button">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </div>\n    </div>\n    <div ng-if="!message.AttachmentId" class="message" layout="row" layout-align="end center">\n      <span ng-bind-html="message.body | embed: vm.embedOptions"></span>\n    </div>\n  </div>\n</div>\n\x3c!-- / MESSAGES --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html",'<div ms-timeline="vm.interactionTimelineOptions" ms-timeline-load-more="vm.loadNextPage()">\n  <div ng-repeat="message in vm.messages.rows track by message.id" ng-init="vm.selectedMailShowSystemMessage[message.id] = false">\n    <md-card ng-if="message.secret" class="md-padding md-yellow-100-bg" layout="column">\n      <div layout="row" layout-align="start center">\n        <img class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n        <div layout="column">\n          <span class="grey-fg">{{vm.agent.fullname || vm.usersMap[message.UserId]}}</span>\n          <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n        </div>\n      </div>\n      <div layout="row" layout-align="center center" layout-fill ng-if="message.attach && vm.downloadPermissions.attachments">\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n        <md-menu>\n          <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n            <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </md-tooltip>\n            <div layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n              <span>{{message.attach}}</span>\n            </div>\n          </md-button>\n          <md-menu-content width="4">\n            <div layout="column" layout-align="center center" ng-if="!message.attachments">\n              <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n              <span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </div>\n            <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n              <md-button ng-click="vm.getAttachment(attachment)">\n                {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n      </div>\n      <div class="padding-top-5" ng-bind-html-unsafe="message.body"></div>\n    </md-card>\n    <div ng-if="!message.secret">\n      <div layout="row" layout-align="center center" ng-if="message.direction == \'out\' && !message.UserId && !vm.selectedMailShowSystemMessage[message.id]">\n        <md-button class="md-raised blue-grey-300-bg white-fg" ng-click="vm.selectedMailShowSystemMessage[message.id] = !vm.selectedMailShowSystemMessage[message.id]">\n          [{{message.createdAt | date: \'medium\'}}] {{ \'MAIL.SHOW_AUTOREPLY\' | translate }}</md-button>\n      </div>\n      <md-card layout="column" class="md-padding message-row" ng-if="message.direction == \'in\' || (message.direction == \'out\' && (message.UserId || vm.selectedMailShowSystemMessage[message.id]))">\n        <md-content class="mail-content">\n          <div class="info" layout="row" layout-align="space-between start">\n            <div layout="column" layout-align="start start">\n              <div layout="row" layout-align="start start">\n                <div layout="column" layout-align="start start">\n                  <div class="name" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n                    <strong privacy ng-cloak>{{message.from}}</strong>\n                    <md-icon ng-if="message.attach" md-font-icon="icon-paperclip" class="s16">\n                    </md-icon>\n                  </div>\n                  <div class="name">\n                    <div>{{message.subject}}</div>\n                  </div>\n                  <div class="name" layout="row" layout-align="start center"><span translate="MAIL.TO">To</span>: <span class="padding-left-5 subject text-truncate" privacy ng-cloak>{{ message.originTo || message.to\n                      }}</span>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.originCc && message.originCc.indexOf(vm.account.email) >= 0">\n                    <em><span class="blue-grey" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="blue-grey">CC</span></em>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.bcc && message.bcc.indexOf(vm.account.email) >= 0">\n                    <em><span class="red-fg" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="red-fg">BCC</span></em>\n                  </div>\n                </div>\n              </div>\n\n              <a class="toggle-details md-accent-color" ng-hide="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.SHOW_DETAILS">\n                Show Details\n              </a>\n              <a class="toggle-details md-accent-color" ng-show="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.HIDE_DETAILS">\n                Hide Details\n              </a>\n              <div ng-show="vm.selectedMailShowDetails[message.id]" class="details" layout="row" layout-align="start start">\n                <div layout="column">\n                  <span class="title" translate="MAIL.DATE">Date:</span>\n                  <span class="title" translate="MAIL.FROM">From:</span>\n                  <span class="title" translate="MAIL.TO">To:</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && message.originCc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'out\' && message.cc">Cc:</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="title" translate="MAIL.BCC" ng-if="message.bcc">Bcc:</span>\n                  <span class="title" translate="MAIL.ACCEPTED" ng-if="message.UserId && message.direction ===\'in\'">Accepted:</span>\n                </div>\n\n                <div layout="column">\n                  <span class="detail">{{message.createdAt | date:\'medium\'}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.from}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.originTo || message.to}}</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="detail" ng-if="message.direction === \'in\' && message.originCc" privacy ng-cloak>{{\n                    message.originCc }}</span>\n                  <span class="detail" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc" privacy ng-cloak>{{ message.cc }}</span>\n                  <span class="detail" ng-if="message.direction === \'out\' && message.cc" privacy ng-cloak>{{ message.cc\n                    }}</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="detail" ng-if="message.bcc" privacy ng-cloak>{{message.bcc}}</span>\n                  <span class="detail" ng-if="message.UserId && message.direction ===\'in\'">{{vm.usersMap[message.UserId]}}</span>\n                </div>\n              </div>\n            </div>\n\n            <div layout="row" layout-align="center center">\n              <div layout="column" layout-align="center end" class="md-padding">\n                <span class="grey-fg" ng-if="message.direction ===\'in\'" privacy>{{message.from.indexOf(vm.contact.email)\n                  >= 0 ? vm.contact.firstName + \' \' + vm.contact.lastName : \'*\' + message.from}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && message.UserId">{{vm.agent.fullname ||\n                  vm.usersMap[message.UserId]}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && !message.UserId">System</span>\n                <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n              </div>\n              <img ng-if="message.direction ===\'in\'" ng-src="assets/images/avatars/customer.png" class="avatar" alt="customer" />\n              <img ng-if="message.direction ===\'out\' && message.UserId" class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n              <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n            </div>\n          </div>\n\n          <div layout="row" layout-align="center center" layout-fill>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n            <div>\n              <div class="interaction-reply-button-container">\n                <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span>\n                </md-tooltip>\n                <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft(message.id)">\n                  <md-icon md-font-icon="icon-pencil-box" class="icon s24"></md-icon>\n                </md-button>\n              </div>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n                <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!message.attach && vm.downloadPermissions.interactions" class="md-icon-button" aria-label="forward" ng-click="vm.downloadMessage(message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n              </md-button>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n                <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                  </md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n                <md-menu-content width="2">\n                  <md-menu-item ng-if="vm.downloadPermissions.attachments">\n                    <md-button ng-click="vm.downloadMessage(message, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                      Download with attachments\n                    </md-button>\n                  </md-menu-item>\n                  <md-menu-item>\n                    <md-button ng-click="vm.downloadMessage(message)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                      Download without attachments\n                    </md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.attachments">\n                <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span></md-tooltip>\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n                    <span>{{message.attach}}</span>\n                  </div>\n                </md-button>\n                <md-menu-content width="4">\n                  <div layout="column" layout-align="center center" ng-if="!message.attachments">\n                    <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n                    <span translate="MAIL.ATTACHMENTS">Attachments</span>\n                  </div>\n                  <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n                    <md-button ng-click="vm.getAttachment(attachment)">\n                      {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n            </div>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n          </div>\n\n          <md-content ng-bind-html-unsafe="message.body"></md-content>\n        </md-content>\n      </md-card>\n    </div>\n    <div ng-hide="!(vm.BTNLoadMore > 0)" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-disabled="!(vm.BTNLoadMore > 0)" ng-click="vm.loadNextPage()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html",'<div class="big-circle md-whiteframe-4dp">\n  <md-icon class="s128 md-accent" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n</div>\n<span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n<span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n  interaction...</span>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeChatInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="CHAT.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html",'<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeFaxInteraction(\'new\')">\n  <md-tooltip md-direction="bottom"><span translate="FAX.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html",'<div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n  <md-icon md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" class="s20" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n  <div class="padding-left-10" layout="column" layout-align="center start" flex>\n    <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n      <span>#{{vm.interaction.id}} - {{vm.account.key}}</span>\n      <div layout="row" layout-align="center center" class="p-8">\n        <md-icon ng-if="vm.tab.channel === \'openchannel\' && vm.interaction.threadId" md-font-icon="fas fa-users" class="s16">\n          <md-tooltip><span translate="DASHBOARDS.PUBLIC_INTERACTION">The interaction is public</span></md-tooltip>\n        </md-icon>\n        <md-icon ng-if="vm.interaction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n      </div>\n      <span class="red-fg padding-left-25" ng-if="vm.interaction.closed" translate="DASHBOARDS.CLOSED">CLOSED</span>\n      <span class="green-fg padding-left-25" ng-if="!vm.interaction.closed"><span translate="DASHBOARDS.OPENED">OPENED</span><span ng-if="vm.interaction.substatus"> -\n          {{vm.interaction.substatus}}</span></span>\n      <div layout="row" layout-align="center center" class="blue-grey-300-fg padding-left-40" ng-if="!vm.interaction.closed">\n        <timer start-time="vm.interaction.createdAt"></timer>\n        <md-icon md-font-icon="icon-timelapse" class="s16 padding-left-5"></md-icon>\n      </div>\n    </div>\n    <div class="tags" layout="row" layout-align="start center" ng-if="vm.interaction.Tags.length" ng-class="{\'padding-top-5\': vm.interaction.Tags.length}">\n      <div class="tag margin-right-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{tag.name}}</div>\n      </div>\n    </div>\n  </div>\n  <div layout="row" layout-align="end center">\n    <div ng-switch="vm.tab.channel">\n      <div ng-switch-when="mail">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html\'">\n        </div>\n      </div>\n    </div>\n    <md-menu ng-if="[\'fax\', \'sms\', \'whatsapp\'].indexOf(vm.tab.channel) < 0 && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n        <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <md-menu-content width="2">\n        <md-menu-item ng-if="vm.downloadPermissions.attachments">\n          <md-button ng-click="vm.downloadInteraction(vm.interaction, true)" translate="DASHBOARDS.DOWNLOAD_WITH_ATTACHMENTS">\n            Download with attachments\n          </md-button>\n        </md-menu-item>\n        <md-menu-item>\n          <md-button ng-click="vm.downloadInteraction(vm.interaction)" translate="DASHBOARDS.DOWNLOAD_WITHOUT_ATTACHMENTS">\n            Download without attachments\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n    <md-menu class="no-margin" ng-if="!vm.interaction.disposition" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="more">\n        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n      </md-button>\n\n      <md-menu-content width="2">\n\n        <md-menu-item ng-if="vm.tab.channel === \'chat\' && !vm.interaction.closed && !vm.tab.spy && vm.account.vidaooEscalation && vm.account.vidaooApiKey">\n          <md-button ng-click="vm.createVidaooSession(vm.interaction)" translate="DASHBOARDS.VIDAOOSESSION">\n            Start Video Call\n          </md-button>\n        </md-menu-item>\n\n        <md-menu-item>\n          <md-button ng-click="vm.tagInteraction()" translate="DASHBOARDS.TAG">\n            Tag\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="vm.account.queueTransfer || vm.account.agentTransfer">\n          <md-button ng-click="vm.transferLastMessage()" translate="DASHBOARDS.TRANSFER">\n            Transfer\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && (vm.subStatuses.rows.length || vm.interaction.substatus != null)">\n          <md-menu>\n            <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.SET_AS">\n              Set as\n            </md-button>\n            <md-menu-content>\n              <md-menu-item ng-if="vm.interaction.substatus != null">\n                <md-button ng-click="vm.setAs(null)" translate="DASHBOARDS.NONE">\n                  None\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                <md-button ng-click="vm.setAs(subStatus.name)">\n                  {{subStatus.name}}\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && vm.account.markAsUnread">\n          <md-button ng-click="vm.markAsUnread()" translate="DASHBOARDS.MARK_AS_UNREAD">\n            Unread\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && !vm.interaction.closed">\n          <md-button ng-click="vm.disposeInteraction()" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n            Close and Dispose\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && vm.interaction.closed && !vm.interaction.disposition">\n          <md-button ng-click="vm.disposeInteraction(ev)" translate="DASHBOARDS.DISPOSE">\n            Dispose\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html",'<div class="interaction-reply-button-container">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span></md-tooltip>\n  <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft()">\n    <md-icon ng-cloak md-font-icon="icon-pencil-box" class="icon s24" ng-class="vm.draft ? \'red-500-fg\' : \'grey-fg\'"></md-icon>\n  </md-button>\n</div>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span></md-tooltip>\n  <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeMailInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeOpenchannelInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="OPENCHANNEL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeSmsInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="SMS.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeWhatsappInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="WHATSAPP.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html",'<md-content class="md-padding" layout="column" layout-align="center center">\n  <div layout="row" layout-align="center center">\n    <span ng-if="!vm.tab.saved" class="text-boxed md-green-bg">\n      <timer start-time="vm.starttime"></timer>\n    </span>\n    <span ng-if="vm.contact" class="text-boxed md-gray-bg font-weight-900">{{vm.contact.firstName}} {{vm.contact.lastName}} {{vm.contact.phone}}</span>\n    <md-button ng-if="vm.showResetButton" ng-click="vm.resetViewer()" md-no-ink class="md-raised md-accent orange-bg">\n      <md-icon md-font-icon="icon-rotate-left" class="icon s16"></md-icon> {{\'JSCRIPTY.RESET_SESSION\' | translate}}\n    </md-button>\n    <md-button ng-if="vm.contact" ng-click="vm.openContact($event, vm.contact)" md-no-ink class="md-raised md-accent" translate="JSCRIPTY.OPEN_CONTACT"></md-button>\n    <md-button ng-if="vm.showIncompleteSubmitButton" ng-click="vm.onSubmit($event, true)" md-no-ink class="md-raised md-accent green-bg" translate="JSCRIPTY.SUBMIT"></md-button>\n  </div>\n  <h1 ng-if="!vm.project.formData"><span translate="JSCRIPTY.PROJECT_NOT_AVAILABLE">Project is not available. Please contact the administrator</span></h1>\n  <mw-form-viewer ng-if="vm.project.formData" form-data="vm.project.formData" response-data="vm.project.responseData" on-submit="vm.onSubmit($event)" template-data="call" api="vm.formViewer"></mw-form-viewer>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/notification/dialog.html",'\x3c!-- <md-toast> --\x3e\n<div class="md-padding" layout="column" layout-align="center center">\n  <span class="md-title">#{{vm.notification.id}} {{vm.notification.title}}</span>\n  <span class="md-subhead" ng-if="vm.notification.queue">{{vm.notification.queue}}</span>\n  <div class="padding-top-5" layout="row">\n    <md-button class="md-raised md-accent" ng-click="vm.accept($event)" translate="DASHBOARDS.ACCEPT">\n      ACCEPT\n    </md-button>\n    <md-button class="md-raised md-warn" ng-click="vm.reject($event)" translate="DASHBOARDS.REJECT">\n      REJECT\n    </md-button>\n  </div>\n</div>\n\x3c!-- </md-toast> --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html",'<md-content class="md-padding" flex>\n  <div ng-if="vm.html" ng-bind-html="vm.html"></div>\n  <h1 ng-if="!vm.html">Template is empty. Please contact the administrator</h1>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-hangouts" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_MANAGED_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_MANAGED_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_MANAGED_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_MOTION_BULL_STATS">Today Motion Bull STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{(vm.inbound.talking || 0) + (vm.inbound.pTalking || 0)}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayCallersExit || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayTimeout || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROPPED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.DROPPED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROPPED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.originated || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.ORIGINATED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundanswerRate || 0 |number : 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundAbandonRate || 0}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundDropRate }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROP_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.DROP_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROP_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e\n\n\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_IVR_CAMPAIGNS_STATS">Today IVR campaigns stats</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.ivr.originated || 0}}/{{vm.ivr.limitCalls || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}/{{\'DASHBOARDS.LIMITED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.LIMITED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATEDLIMITED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET IVR --\x3e'),e.put("app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-deskphone" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-email" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-google-earth" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-message-text" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/user.general.html",'<div id="dashboard-general" ng-init="vm.onInit()" class="page-layout simple right-sidenav" layout="row">\n  \x3c!-- CENTER --\x3e\n  <div class="center" flex ms-scroll>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n      <md-tabs ng-if="vm.hasDashboardPermissions" md-selected="vm.selectedTab" md-dynamic-height>\n        <md-tab ng-if="vm.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}" ui-sref="app.dashboards.general.voice">\n          <div ui-view="voice"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.dialer" label="{{\'DASHBOARDS.MOTIONDIALER\' | translate}}" ui-sref="app.dashboards.general.dialer">\n          <div ui-view="dialer"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}" ui-sref="app.dashboards.general.chat">\n          <div ui-view="chat"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}" ui-sref="app.dashboards.general.mail">\n          <div ui-view="mail"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}" ui-sref="app.dashboards.general.sms">\n          <div ui-view="sms"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}" ui-sref="app.dashboards.general.openchannel">\n          <div ui-view="openchannel"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}" ui-sref="app.dashboards.general.fax">\n          <div ui-view="fax"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}" ui-sref="app.dashboards.general.whatsapp">\n          <div ui-view="whatsapp"></div>\n        </md-tab>\n      </md-tabs>\n    </div>\n    \x3c!-- END CONTENT --\x3e\n\n    <md-content ng-if="!vm.hasDashboardPermissions" layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n      <div layout="column" layout-align="space-around center" flex="50">\n        <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n        <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to\n          navigate through available sections.</span>\n      </div>\n\n      <div layout="column" flex="50">\n        <img src="assets/images/avatars/permissions.png" alt="permissions">\n      </div>\n    </md-content>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-incoming" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INBOUND_STATS">Today Inbound STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-incoming"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timer-sand"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e\n\n\x3c!-- WIDGET OUTBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_OUTBOUND_STATS">Today Outbound STATS</div>\n  </div>\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.outbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.outbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-clock"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{vm.outbound.sumDuration || 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOT_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.TOT_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOT_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-division"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? ((vm.outbound.sumDuration / vm.outbound.total) | number: 0) : 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? (vm.outbound.answered / vm.outbound.total * 100) : 0 | number: 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-whatsapp" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/fax/views/faxAccounts/create/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="faxAccountForm[\'name\'].$error" ng-show="faxAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="faxAccountForm[\'key\'].$error" ng-show="faxAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUNK">trunk</label>\n        <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'TrunkId\'].$error" ng-show="faxAccountForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LOCALSTATIONID">localstationid</label>\n        <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true">\n\n        <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n        <div ng-messages="faxAccountForm[\'localstationid\'].$error" ng-show="faxAccountForm[\'localstationid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.faxAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'ListId\'].$error" ng-show="faxAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxAccount.description">\n\n        <div ng-messages="faxAccountForm[\'description\'].$error" ng-show="faxAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxAccount" ng-click="vm.saveFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid || faxAccountForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxAccount" ng-click="vm.addNewFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXACCOUNT" translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n          ADD FAXACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxAccount" ng-click="vm.deleteFaxAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",'<md-dialog class="faxAccount-dialog" aria-label="faxAccount" ng-init="vm.onInit()">\n  <form name="faxAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXACCOUNT">Add Agent to faxAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/agent/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'agent\'].$error" ng-show="faxAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/close/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'disposition\'].$error" ng-show="faxAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'condition\'].$error" ng-show="faxAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'truepriority\'].$error" ng-show="faxAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'falsepriority\'].$error" ng-show="faxAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'priority\'].$error" ng-show="faxAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/noop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'value\'].$error" ng-show="faxAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/queue/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'queue\'].$error" ng-show="faxAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/system/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'command\'].$error" ng-show="faxAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'variable\'].$error" ng-show="faxAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/tag/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'tag\'].$error" ng-show="faxAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/view.html",'<div id="fax-faxAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxAccounts-button md-icon-button" aria-label="Go to faxAccounts" ng-click="vm.gotoFaxAccounts()" translate translate-attr-aria-label="FAX.GO_TO_FAXACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxAccount-image" hide-xs>\n          <img ng-src="assets/images/business/faxAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxAccount.id}}\n            <span ng-if="vm.faxAccount.name">{{vm.faxAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="FAX.GOTO_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (advancedForm.$invalid) || (dispositionForm.$invalid) || (faxDispositionsForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.HEADERINFO">headerinfo</label>\n                <input type="text" name="headerinfo" ng-model="vm.faxAccount.headerinfo" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.HEADERINFO"></span></div>\n                <div ng-messages="generalForm[\'headerinfo\'].$error" ng-show="generalForm[\'headerinfo\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.HEADERINFO_REQUIRED">headerinfo field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.TRUNK">trunk</label>\n                <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LOCALSTATIONID">localstationid</label>\n                <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n                <div ng-messages="generalForm[\'localstationid\'].$error" ng-show="generalForm[\'localstationid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.faxAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.faxAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="FAX.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.faxAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.queueTransfer == true" class="md-block">\n                <label translate="FAX.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.faxAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.agentTransfer == true" class="md-block">\n                <label translate="FAX.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.faxAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.ECM">ECM</label>\n                <md-select name="ecm" ng-model="vm.faxAccount.ecm" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.ECM"></span></div>\n                <div ng-messages="advancedForm[\'ecm\'].$error" ng-show="advancedForm[\'ecm\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.ECM_REQUIRED">ECM field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MINRATE">minrate</label>\n                <md-select name="minrate" ng-model="vm.faxAccount.minrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MINRATE"></span></div>\n                <div ng-messages="advancedForm[\'minrate\'].$error" ng-show="advancedForm[\'minrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MINRATE_REQUIRED">minrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MAXRATE">maxrate</label>\n                <md-select name="maxrate" ng-model="vm.faxAccount.maxrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MAXRATE"></span></div>\n                <div ng-messages="advancedForm[\'maxrate\'].$error" ng-show="advancedForm[\'maxrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MAXRATE_REQUIRED">maxrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MODEM">modem</label>\n                <input type="text" name="modem" ng-model="vm.faxAccount.modem" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.MODEM"></span></div>\n                <div ng-messages="advancedForm[\'modem\'].$error" ng-show="advancedForm[\'modem\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MODEM_REQUIRED">modem field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.GATEWAY">gateway</label>\n                <input type="text" name="gateway" ng-model="vm.faxAccount.gateway" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.GATEWAY"></span></div>\n                <div ng-messages="advancedForm[\'gateway\'].$error" ng-show="advancedForm[\'gateway\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.GATEWAY_REQUIRED">gateway field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.FAXDETECT">faxdetect</label>\n                <input type="text" name="faxdetect" ng-model="vm.faxAccount.faxdetect" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.FAXDETECT"></span></div>\n                <div ng-messages="advancedForm[\'faxdetect\'].$error" ng-show="advancedForm[\'faxdetect\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.FAXDETECT_REQUIRED">faxdetect field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.T38TIMEOUT">t38timeout</label>\n                <input type="number" name="t38timeout" ng-model="vm.faxAccount.t38timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.T38TIMEOUT"></span></div>\n                <div ng-messages="advancedForm[\'t38timeout\'].$error" ng-show="advancedForm[\'t38timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.T38TIMEOUT_REQUIRED">t38timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.SIP">SIP</label>\n                <md-select name="tech" ng-model="vm.faxAccount.tech" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SIP\'">SIP</md-option>\n                  <md-option ng-value="\'IAX\'">IAX</md-option>\n                  <md-option ng-value="\'DADHI\'">DADHI</md-option>\n                  <md-option ng-value="\'KHOMP\'">KHOMP</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'tech\'].$error" ng-show="advancedForm[\'tech\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.SIP_REQUIRED">SIP field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.mandatoryDisposition" class="md-block">\n                <label translate="FAX.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.faxAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="FaxAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="faxAccount-detail-form-container faxdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="FAX.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add fax dispositions" translate translate-attr-label="FAX.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="faxAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.faxAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="FAX.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedFaxAccountApps.length}} {{vm_ac.selectedFaxAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedFaxAccountApps($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedFaxAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.faxAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span class="text-truncate" 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\n      <md-input-container ng-if="vm.allCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAllCondition" ng-click="vm.saveAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid || allConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAllCondition" ng-click="vm.addNewAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ALLCONDITION" translate-attr-aria-label="TOOLS.ADD_ALLCONDITION">\n          ADD ALLCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAllCondition" ng-click="vm.deleteAllCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html",'<div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n      <ms-search-bar on-search="vm_dc.getAnyConditions()" query="vm_dc.query" debounce="300" direction="down"></ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAnyConditions.length }}\n        {{ vm_dc.selectedAnyConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAnyConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAnyConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAnyConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.anyConditions.rows">\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.id}}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[anyCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + anyCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>\n            {{ anyCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':anyCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':anyCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>\n            {{ anyCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" translate="TOOLS.EDIT_ANYCONDITION">\n                    Edit AnyCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(anyCondition, $event)" translate="TOOLS.DELETE_ANYCONDITION">\n                    Delete AnyCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.anyConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.anyConditions.count }}" md-on-paginate="vm_dc.getAnyConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",'<md-dialog class="anyCondition-dialog" aria-label="New AnyCondition">\n  <form name="anyConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAnyCondition ? \'TOOLS.NEW_ANYCONDITION\' : \'TOOLS.EDIT_ANYCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.anyCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'field\'].$error" ng-show="anyConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.anyCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'operator\'].$error" ng-show="anyConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAnyCondition" ng-click="vm.saveAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid || anyConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAnyCondition" ng-click="vm.addNewAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ANYCONDITION" translate-attr-aria-label="TOOLS.ADD_ANYCONDITION">\n          ADD ANYCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAnyCondition" ng-click="vm.deleteAnyCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/view.html",'<div id="tools-trigger" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-triggers-button md-icon-button" aria-label="Go to triggers" ng-click="vm.gotoTriggers()" translate translate-attr-aria-label="TOOLS.GO_TO_TRIGGERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="trigger-image" hide-xs>\n          <img ng-src="assets/images/business/triggers.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">#{{ vm.trigger.id }}\n            <span ng-if="vm.trigger.name">{{ vm.trigger.name }}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{ vm.trigger.createdAt | date:\'medium\' }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrigger()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (allconditionsForm.$invalid) || (anyconditionsForm.$invalid) || (actionsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trigger.name" required autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CHANNEL">Channel</label>\n                <md-select name="channel" ng-model="vm.trigger.channel" required disabled>\n                  <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n                  <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel">\n                    {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n                  <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n                  <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n                  <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n                  <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n                  <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }}\n                  </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'channel\'].$error" ng-show="generalForm[\'channel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trigger.status" aria-label="Status" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="TOOLS.STATUS">Status</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trigger.description" ng-disabled="!vm.crudPermissions.canEdit">\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.CONDITIONS&ACTIONS">CONDITIONS&ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container allconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/actions/actions.html\'">\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/triggers.html",'<div id="triggers" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRIGGERS">Triggers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTriggers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedTriggers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-triggers-count">\n          <span>{{ vm.selectedTriggers.length }}</span>\n          <span translate="TOOLS.SELECTED">Selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTriggers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTriggers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTriggers" csv-label="true" filename="triggers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTriggers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- TRIGGER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTriggers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTriggers">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="channel">{{ \'TOOLS.CHANNEL\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'TOOLS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.triggers.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trigger" md-select-id="id" ng-repeat="trigger in vm.triggers.rows">\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="id ">{{ trigger.id }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="name ">{{ trigger.name }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="channel ">\n                  {{ \'TOOLS.\' + trigger.channel | uppercase | translate }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="status ">\n                  <md-icon md-colors="{color: {{ trigger.status ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ trigger.status ? \'icon-check\' : \'icon-close\' }}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="description ">\n                  {{ trigger.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.goToEditState(trigger)" translate="TOOLS.EDIT_TRIGGER">\n                          Edit Trigger\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(trigger, $event)" translate="TOOLS.DELETE_TRIGGER">\n                          Delete Trigger\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.triggers.count }}" md-on-paginate="vm.getTriggers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRIGGER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD TRIGGER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trigger-button" ng-click="vm.createOrEditTrigger($event)" aria-label="add trigger" translate translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRIGGER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/trunks/create/dialog.html",'<md-dialog class="trunk-dialog" aria-label="New Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.HOST">host</label>\n        <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n        <div ng-messages="trunkForm[\'host\'].$error" ng-show="trunkForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.SECRET">secret</label>\n        <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n        <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n        <div ng-messages="trunkForm[\'secret\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n        <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser">\n\n        <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n        <div ng-messages="trunkForm[\'defaultuser\'].$error" ng-show="trunkForm[\'defaultuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REGISTRY">registry</label>\n        <input type="text" name="registry" ng-model="vm.trunk.registry">\n\n        <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n        <div ng-messages="trunkForm[\'registry\'].$error" ng-show="trunkForm[\'registry\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trunk.description">\n\n        <div ng-messages="trunkForm[\'description\'].$error" ng-show="trunkForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrunk" ng-click="vm.saveTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid || trunkForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrunk" ng-click="vm.addNewTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRUNK" translate-attr-aria-label="TOOLS.ADD_TRUNK">\n          ADD TRUNK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrunk" ng-click="vm.deleteTrunk($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/clone/clone.html",'<md-dialog class="trunk-dialog" aria-label="Clone Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_TRUNK" translate-attr-aria-label="TOOLS.CLONE_TRUNK">\n        CLONE TRUNK\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/view.html",'<div id="tools-trunk" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-trunks-button md-icon-button" aria-label="Go to trunks" ng-click="vm.gotoTrunks()" translate translate-attr-aria-label="TOOLS.GO_TO_TRUNKS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="trunk-image" hide-xs>\n          <img ng-src="assets/images/business/trunks.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.trunk.id}}\n            <span ng-if="vm.trunk.name">{{vm.trunk.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.trunk.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.trunk, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.trunk, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrunk()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (otherFieldsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trunk.active" aria-label="active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.HOST">host</label>\n                <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SECRET">secret</label>\n                <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n                <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n                <div ng-messages="generalForm[\'secret\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n                <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n                <div ng-messages="generalForm[\'defaultuser\'].$error" ng-show="generalForm[\'defaultuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CONTEXT">context</label>\n                <md-select name="context" ng-model="vm.trunk.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CONTEXT_REQUIRED">context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLERID">callerid</label>\n                <input type="text" name="callerid" ng-model="vm.trunk.callerid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALLERID"></span></div>\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLERID_REQUIRED">callerid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.trunk.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DTMFMODE">dtmfmode</label>\n                <md-select name="dtmfmode" ng-model="vm.trunk.dtmfmode" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rfc2833\'">rfc2833</md-option>\n                  <md-option ng-value="\'info\'">info</md-option>\n                  <md-option ng-value="\'shortinfo\'">shortinfo</md-option>\n                  <md-option ng-value="\'inband\'">inband</md-option>\n                  <md-option ng-value="\'auto\'">auto</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DTMFMODE"></span></div>\n                <div ng-messages="generalForm[\'dtmfmode\'].$error" ng-show="generalForm[\'dtmfmode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DTMFMODE_REQUIRED">dtmfmode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAT">nat</label>\n                <md-select name="nat" ng-model="vm.trunk.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAT_REQUIRED">nat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.QUALIFY">qualify</label>\n                <md-select name="qualify" ng-model="vm.trunk.qualify" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.QUALIFY"></span></div>\n                <div ng-messages="generalForm[\'qualify\'].$error" ng-show="generalForm[\'qualify\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.QUALIFY_REQUIRED">qualify field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.trunk.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g723\'">g723</md-option>\n                  <md-option ng-value="\'g726\'">g726</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'ilbc\'">ilbc</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.INSECURE">insecure</label>\n                <md-select name="insecure" ng-model="vm.trunk.insecure" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'port\'">port</md-option>\n                  <md-option ng-value="\'invite\'">invite</md-option>\n                  <md-option ng-value="\'very\'">very</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.INSECURE"></span></div>\n                <div ng-messages="generalForm[\'insecure\'].$error" ng-show="generalForm[\'insecure\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.INSECURE_REQUIRED">insecure field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALL_LIMIT">call_limit</label>\n                <input type="number" name="call_limit" ng-model="vm.trunk.call_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALL_LIMIT"></span></div>\n                <div ng-messages="generalForm[\'call_limit\'].$error" ng-show="generalForm[\'call_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALL_LIMIT_REQUIRED">call_limit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trunk.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.REGISTRY">registry</label>\n                <input type="text" name="registry" ng-model="vm.trunk.registry" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n                <div ng-messages="advancedForm[\'registry\'].$error" ng-show="advancedForm[\'registry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DIRECTMEDIA">directmedia</label>\n                <md-select name="directmedia" ng-model="vm.trunk.directmedia" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'nonat\'">nonat</md-option>\n                  <md-option ng-value="\'update\'">update</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DIRECTMEDIA"></span></div>\n                <div ng-messages="advancedForm[\'directmedia\'].$error" ng-show="advancedForm[\'directmedia\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DIRECTMEDIA_REQUIRED">directmedia field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLCOUNTER">callcounter</label>\n                <md-select name="callcounter" ng-model="vm.trunk.callcounter" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CALLCOUNTER"></span></div>\n                <div ng-messages="advancedForm[\'callcounter\'].$error" ng-show="advancedForm[\'callcounter\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLCOUNTER_REQUIRED">callcounter field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMDOMAIN">fromdomain</label>\n                <input type="text" name="fromdomain" ng-model="vm.trunk.fromdomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMDOMAIN"></span></div>\n                <div ng-messages="advancedForm[\'fromdomain\'].$error" ng-show="advancedForm[\'fromdomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMDOMAIN_REQUIRED">fromdomain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMUSER">fromuser</label>\n                <input type="text" name="fromuser" ng-model="vm.trunk.fromuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMUSER"></span></div>\n                <div ng-messages="advancedForm[\'fromuser\'].$error" ng-show="advancedForm[\'fromuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMUSER_REQUIRED">fromuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OUTBOUNDPROXY">outboundproxy</label>\n                <input type="text" name="outboundproxy" ng-model="vm.trunk.outboundproxy" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.OUTBOUNDPROXY"></span></div>\n                <div ng-messages="advancedForm[\'outboundproxy\'].$error" ng-show="advancedForm[\'outboundproxy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.OUTBOUNDPROXY_REQUIRED">outboundproxy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ADD_PHONE_TO_URI">Add_phone_to_URI</label>\n                <md-select name="usereqphone" ng-model="vm.trunk.usereqphone" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ADD_PHONE_TO_URI"></span></div>\n                <div ng-messages="advancedForm[\'usereqphone\'].$error" ng-show="advancedForm[\'usereqphone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ADD_PHONE_TO_URI_REQUIRED">Add_phone_to_URI field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRUST_REMOTE_PARTY_ID">Trust_Remote_Party_ID</label>\n                <md-select name="trustrpid" ng-model="vm.trunk.trustrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRUST_REMOTE_PARTY_ID"></span></div>\n                <div ng-messages="advancedForm[\'trustrpid\'].$error" ng-show="advancedForm[\'trustrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRUST_REMOTE_PARTY_ID_REQUIRED">Trust_Remote_Party_ID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SEND_REMOTE_PARTY_ID_HEADER">Send_Remote_Party_ID_header</label>\n                <md-select name="sendrpid" ng-model="vm.trunk.sendrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n\n                  <md-option ng-value="\'pai\'"> {{ \'TOOLS.PAI\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.SEND_REMOTE_PARTY_ID_HEADER"></span></div>\n                <div ng-messages="advancedForm[\'sendrpid\'].$error" ng-show="advancedForm[\'sendrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.SEND_REMOTE_PARTY_ID_HEADER_REQUIRED">Send_Remote_Party_ID_header field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ENCRYPTION">encryption</label>\n                <md-select name="encryption" ng-model="vm.trunk.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="advancedForm[\'encryption\'].$error" ng-show="advancedForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ENCRYPTION_REQUIRED">encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.PORT">port</label>\n                <input type="number" name="port" ng-model="vm.trunk.port" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.PORT"></span></div>\n                <div ng-messages="advancedForm[\'port\'].$error" ng-show="advancedForm[\'port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PORT_REQUIRED">port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.trunk.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRANSPORT"></span></div>\n                <div ng-messages="advancedForm[\'transport\'].$error" ng-show="advancedForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.T38PT_UDPTL">t38pt_udptl</label>\n                <input type="string" name="t38pt_udptl" ng-model="vm.trunk.t38pt_udptl" value="no" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.T38PT_UDPTL"></span></div>\n                <div ng-messages="advancedForm[\'t38pt_udptl\'].$error" ng-show="advancedForm[\'t38pt_udptl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.T38PT_UDPTL_REQUIRED">t38pt_udptl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.trunk.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'videosupport\'].$error" ng-show="advancedForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.OTHERFIELDS">OTHERFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container otherfields md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.OTHERFIELDS">OTHERFIELDS</div>\n            </div>\n            <form name="otherFieldsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OTHERFIELDS">otherFields</label>\n                <textarea name="otherFields" ng-model="vm.trunk.otherFields" autofocus></textarea>\n                <div class="hint"><span translate="TOOLS.HELP.OTHERFIELDS"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/trunks/trunks.html",'<div id="trunks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRUNKS">Trunks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTrunks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTrunks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-trunks-count">\n          <span>{{vm.selectedTrunks.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTrunks()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTrunks()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTrunks" csv-label="true" filename="trunks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTrunks($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TRUNK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTrunks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'TOOLS.HOST\' | translate }}</th>\n                <th md-column md-order-by="registry">{{ \'TOOLS.REGISTRY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.trunks.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trunk" md-select-id="id" ng-repeat="trunk in vm.trunks.rows">\n                <td md-cell ng-if="trunk.userpic"><img class="avatar" alt="{{trunk.name}}" ng-src="api/users/{{trunk.id}}/avatar" /></td>\n                <td md-cell ng-if="!trunk.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{trunk.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="id ">{{trunk.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="name ">{{trunk.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{trunk.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{trunk.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="host ">{{trunk.host}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="registry ">{{trunk.registry}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="description ">{{trunk.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(trunk, $event    )" translate="TOOLS.EDIT_TRUNK">\n                          Edit Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(trunk, $event    )" translate="TOOLS.CLONE_TRUNK">\n                          clone Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(trunk, $event    )" translate="TOOLS.GOTOREALTIME_TRUNK">\n                          goToRealtime Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(trunk, $event    )" translate="TOOLS.DELETE_TRUNK">\n                          Delete Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.trunks.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRUNK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TRUNK BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trunk-button" ng-click="vm.createOrEditTrunk($event)" aria-label="add trunk" translate translate-attr-aria-label="TOOLS.ADD_TRUNK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRUNK BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/variables/create/dialog.html",'<md-dialog class="variable-dialog" aria-label="New Variable">\n  <form name="variableForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.variable.name" ng-required="true" autofocus>\n\n        <div ng-messages="variableForm[\'name\'].$error" ng-show="variableForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.variable.description">\n\n        <div ng-messages="variableForm[\'description\'].$error" ng-show="variableForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVariable" ng-click="vm.saveVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid || variableForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVariable" ng-click="vm.addNewVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_VARIABLE" translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n          ADD VARIABLE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVariable" ng-click="vm.deleteVariable($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/variables/variables.html",'<div id="variables" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.VARIABLES">Variables</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVariables.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVariables =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-variables-count">\n          <span>{{vm.selectedVariables.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVariables()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVariables()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVariables" csv-label="true" filename="variables.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVariables($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VARIABLE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVariables" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVariables">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.variables.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="variable" md-select-id="id" ng-repeat="variable in vm.variables.rows">\n                <td md-cell ng-if="variable.userpic"><img class="avatar" alt="{{variable.name}}" ng-src="api/users/{{variable.id}}/avatar" /></td>\n                <td md-cell ng-if="!variable.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{variable.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="id ">{{variable.id}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="name ">{{variable.name}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="description ">{{variable.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(variable, $event    )" translate="TOOLS.EDIT_VARIABLE">\n                          Edit Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(variable, $event    )" translate="TOOLS.DELETE_VARIABLE">\n                          Delete Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.variables.count}}" md-on-paginate="vm.getVariables" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VARIABLE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VARIABLE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-variable-button" ng-click="vm.createOrEditVariable($event)" aria-label="add variable" translate translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VARIABLE BUTTON --\x3e\n</div>'),e.put("app/main/apps/video/views/screenRecordings/create/dialog.html",'<md-dialog class="screenRecording-dialog" aria-label="New screenRecording">\n  <form name="screenRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VIDEO.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.screenRecording.rating" autofocus ng-disabled="!vm.newscreenRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VIDEO.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="screenRecordingForm[\'rating\'].$error" ng-show="screenRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VIDEO.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newscreenRecording" ng-click="vm.savescreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid || screenRecordingForm.$pristine" aria-label="SAVE" translate="VIDEO.SAVE" translate-attr-aria-label="VIDEO.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newscreenRecording" ng-click="vm.addNewscreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid" aria-label="ADD" translate="VIDEO.ADD_SCREENRECORDING" translate-attr-aria-label="VIDEO.ADD_SCREENRECORDING">\n          ADD SCREENRECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newscreenRecording" ng-click="vm.deletescreenRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VIDEO.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VIDEO.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/partialViews/play.html",'<md-dialog class="play-dialog" aria-label="play">\n  <form name="playForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="{{ vm.app.toUpperCase() }}.{{  vm.label.toUpperCase() }}">Play Recording</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-sm flex>\n        \x3c!-- VIRTUAL field --\x3e\n        <md-card>\n\n          <md-card-title ng-if="vm.actionOptions.upperTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>: {{ vm.recording.updatedAt}}</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          \x3c!-- video recording directive --\x3e\n          <ms-dialog-recording ng-if="vm.format" id="vm.recording.id" title="vm.filename" element="vm.element" model="vm.route" path="vm.path" class="md-card-image"></ms-dialog-recording>\n          \x3c!-- / video recording directive --\x3e\n\n          <span ng-if="!vm.format">\n            <em ng-if="vm.found">{{ vm.app.toUpperCase() + \'.CANT_PLAY_THIS_FILE\' | translate }}</em>\n            <em ng-if="!vm.found">{{ vm.app.toUpperCase() + \'.FILE_NOT_FOUND\' | translate }}</em>\n          </span>\n\n          <md-card-title ng-if="vm.actionOptions.lowerTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>:{{ vm.recording.updatedAt}}</span>\n              <span ng-if="vm.actionOptions.properties" class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.PROPERTIES"></span>:</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          <md-card-content ng-if="vm.actionOptions.properties">\n            <md-list>\n              <md-list-item class="md-2-line" ng-repeat="(key,value) in vm.properties" ng-click="null" ng-if="key != \'value\' && key != \'updatedAt\' && key != \'queue\'">\n\n                <md-icon ng-if="vm.icon" class="md-avatar-icon" md-font-icon="vm.actionOptions.propertiesIcon" class="s24"></md-icon>\n\n                <div class="md-list-item-text" layout="column">\n                  <p><b><span translate="{{ vm.app.toUpperCase() }}.{{ key.toUpperCase() }}"></span></b></p>\n                  <p>{{ value }}\n                    <p>\n                </div>\n              </md-list-item>\n            </md-list>\n          </md-card-content>\n\n\n        </md-card>\n      </div>\n    </md-dialog-content>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/screenRecordings.html",'<div id="screenRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-video" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VIDEO.SCREENRECORDINGS">ScreenRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VIDEO.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScreenRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScreenRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScreenRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VIDEO.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-screenRecordings-count">\n          <span>{{vm.selectedScreenRecordings.length}}</span>\n          <span translate="VIDEO.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VIDEO.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScreenRecordings()" translate="VIDEO.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScreenRecordings()" translate="VIDEO.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScreenRecordings" csv-label="true" filename="screenRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScreenRecordings($event)" aria-label="delete selected" translate translate-attr-label="VIDEO.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCREENRECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScreenRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScreenRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VIDEO.ID\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VIDEO.RATING\' | translate }}</th>\n                <th md-column md-order-by="UserId">{{ \'VIDEO.AGENT\' | translate }}</th>\n                <th md-column md-order-by="duration">{{ \'VIDEO.DURATION\' | translate }}</th>\n                <th md-column md-order-by="startedAt">{{ \'VIDEO.RECORDSTARTTIME\' | translate }}</th>\n                <th md-column md-order-by="closedAt">{{ \'VIDEO.RECORDENDTIME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.screenRecordings.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VIDEO.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="screenRecording" md-select-id="id" ng-repeat="screenRecording in vm.screenRecordings.rows">\n                <td md-cell ng-if="screenRecording.userpic"><img class="avatar" alt="{{screenRecording.name}}" ng-src="api/users/{{screenRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!screenRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{screenRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="id ">{{screenRecording.id}}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="screenRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:screenRecording.rating"></md-icon><span ng-hide="screenRecording.rating" translate="VIDEO.NO_RATING">No rating</span>\n                </td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="UserId ">{{ (vm.users | filter : {\'id\':screenRecording.UserId} : true)[0].fullname }}</td>\n                <td md-cell><span ng-bind="vm.convertDuration(screenRecording.duration)"></span></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="startedAt ">{{screenRecording.startedAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="closedAt ">{{screenRecording.closedAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VIDEO.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.playrecording(screenRecording, $event  , \'value\'  , \'play_screenrecording\'  , \'video\' )" translate="VIDEO.PLAY_SCREENRECORDING">\n                          play screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadScreenRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(screenRecording, $event  , \'screen/recordings\'   )" translate="VIDEO.DOWNLOAD_SCREENRECORDING">\n                          Download screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(screenRecording, $event    )" translate="VIDEO.DELETE_SCREENRECORDING">\n                          Delete screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VIDEO.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VIDEO.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VIDEO.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.screenRecordings.count}}" md-on-paginate="vm.getScreenRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCREENRECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/routing/dialog.html",'<md-dialog ng-init="vm.init()" class="voice-routing-dialog" aria-label="New routing application">\n  <form name="routingAppForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'VOICE.EDIT_\' + vm.application.appType | uppercase | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-switch="vm.application.appType" ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div ng-switch-when="agi">\n        <div ng-include="\'app/main/apps/voice/routing/views/agi.html\'"></div>\n      </div>\n      <div ng-switch-when="custom">\n        <div ng-include="\'app/main/apps/voice/routing/views/custom.html\'"></div>\n      </div>\n      <div ng-switch-when="dial">\n        <div ng-include="\'app/main/apps/voice/routing/views/dial.html\'"></div>\n      </div>\n      <div ng-switch-when="externalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/externalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="goTo">\n        <div ng-include="\'app/main/apps/voice/routing/views/goTo.html\'"></div>\n      </div>\n      <div ng-switch-when="hangup">\n        <div ng-include="\'app/main/apps/voice/routing/views/hangup.html\'"></div>\n      </div>\n      <div ng-switch-when="internalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/internalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="outboundDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/outboundDial.html\'"></div>\n      </div>\n      <div ng-switch-when="playback">\n        <div ng-include="\'app/main/apps/voice/routing/views/playback.html\'"></div>\n      </div>\n      <div ng-switch-when="queue">\n        <div ng-include="\'app/main/apps/voice/routing/views/queue.html\'"></div>\n      </div>\n      <div ng-switch-when="ringGroup">\n        <div ng-include="\'app/main/apps/voice/routing/views/ringGroup.html\'"></div>\n      </div>\n      <div ng-switch-when="set">\n        <div ng-include="\'app/main/apps/voice/routing/views/set.html\'"></div>\n      </div>\n      <div ng-switch-when="voicemail">\n        <div ng-include="\'app/main/apps/voice/routing/views/voicemail.html\'"></div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveRoutingApp()" class="send-button md-accent md-raised" ng-disabled="routingAppForm.$invalid || routingAppForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/interval/dialog.html",'<md-dialog ng-init="vm.initialize()" class="interval-dialog" aria-label="Edit Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'TOOLS.EDIT_INTERVAL\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.crudPermissions.canEdit" ng-change="vm.onTypeChange()">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | startcase }}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.crudPermissions.canEdit" required>\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals.rows" ng-disabled="interval.canSelect === false">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="start center">\n      <md-button type="submit" ng-if="vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/views/agi.html",'<md-input-container class="md-block">\n  <label translate="VOICE.PROJECT">Project</label>\n  <md-select name="project" ng-model="vm.application.project" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'agi://127.0.0.1/square,{{project.name}}\'" ng-repeat="project in vm.projects.rows" ng-disabled="project.canSelect === false">{{ project.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'project\'].$error" ng-show="routingAppForm[\'project\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/custom.html",'<md-input-container class="md-block">\n  <label translate="VOICE.APPLICATION_NAME">Application_Name</label>\n  <input type="text" name="app" ng-model="vm.application.app" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'app\'].$error" ng-show="routingAppForm[\'app\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.APPLICATION_NAME_REQUIRED">Application_Name field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ARGUMENTS">Arguments</label>\n  <input type="text" name="appdata" ng-model="vm.application.appdata" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'appdata\'].$error" ng-show="routingAppForm[\'appdata\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/dial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TECHNOLOGY/RESOURCE">Technology/Resource</label>\n  <input type="text" name="tech" ng-model="vm.application.tech" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'tech\'].$error" ng-show="routingAppForm[\'tech\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TECHNOLOGY/RESOURCE_REQUIRED">Technology/Resource field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/externalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PHONE">Phone</label>\n  <input type="text" name="phone" ng-model="vm.application.phone" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'phone\'].$error" ng-show="routingAppForm[\'phone\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/goTo.html",'<md-input-container class="md-block">\n  <label translate="VOICE.CONTEXT">Context</label>\n  <md-select name="context" ng-model="vm.application.context" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{\n      context.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'context\'].$error" ng-show="routingAppForm[\'context\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.EXTENSION">Extension</label>\n  <input type="text" name="extension" ng-model="vm.application.extension" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'extension\'].$error" ng-show="routingAppForm[\'extension\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.EXTENSION_REQUIRED">Extension field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PRIORITY">Priority</label>\n  <input type="text" name="priority" ng-model="vm.application.priority" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'priority\'].$error" ng-show="routingAppForm[\'priority\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/hangup.html","<md-input-container class=\"md-block\">\n  <label translate=\"VOICE.HANGUP_CAUSE\">Hangup_Cause</label>\n  <md-select name=\"appdata\" ng-model=\"vm.application.appdata\" autofocus required ng-disabled=\"!vm.crudPermissions.canEdit\">\n    <md-option ng-value=\"'1'\"> {{ 'VOICE.HANGUPCAUSE_1' | translate }} </md-option>\n    <md-option ng-value=\"'16'\"> {{ 'VOICE.HANGUPCAUSE_16' | translate }} </md-option>\n    <md-option ng-value=\"'17'\"> {{ 'VOICE.HANGUPCAUSE_17' | translate }} </md-option>\n    <md-option ng-value=\"'18'\"> {{ 'VOICE.HANGUPCAUSE_18' | translate }} </md-option>\n    <md-option ng-value=\"'21'\"> {{ 'VOICE.HANGUPCAUSE_21' | translate }} </md-option>\n    <md-option ng-value=\"'22'\"> {{ 'VOICE.HANGUPCAUSE_22' | translate }} </md-option>\n    <md-option ng-value=\"'27'\"> {{ 'VOICE.HANGUPCAUSE_27' | translate }} </md-option>\n    <md-option ng-value=\"'38'\"> {{ 'VOICE.HANGUPCAUSE_38' | translate }} </md-option>\n    <md-option ng-value=\"'41'\"> {{ 'VOICE.HANGUPCAUSE_41' | translate }} </md-option>\n  </md-select>\n  <div ng-messages=\"routingAppForm['appdata'].$error\" ng-show=\"routingAppForm['appdata'].$touched\" role=\"alert\">\n    <div ng-message=\"required\">\n      <span translate=\"VOICE.ERRORS.HANGUP_CAUSE_REQUIRED\">Hangup_Cause field is required</span>\n    </div>\n  </div>\n</md-input-container>"),e.put("app/main/apps/voice/routing/views/internalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.user" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/outboundDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.CALLER_ID">Caller_ID</label>\n  <input type="text" name="callerID" ng-model="vm.application.callerID" ng-disabled="!vm.crudPermissions.canEdit">\n  <div class="hint"><span translate="VOICE.HELP.CALLER_ID"></span></div>\n  <div ng-messages="routingAppForm[\'callerID\'].$error" ng-show="routingAppForm[\'callerID\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CALLER_ID_REQUIRED">Caller_ID field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PREFIX">Prefix</label>\n  <input type="text" name="prefix" ng-model="vm.application.prefix" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'prefix\'].$error" ng-show="routingAppForm[\'prefix\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TAGS">Tags</label>\n  <md-select name="tag" ng-model="vm.application.tag" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'--\'">None</md-option>\n    <md-option ng-value="tag.name" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{ tag.name }}\n    </md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'tag\'].$error" ng-show="routingAppForm[\'tag\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TAGS_REQUIRED">Tags field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/playback.html",'<md-input-container class="md-block">\n  <label translate="VOICE.AUDIO_FILES">Audio_Files</label>\n  <md-select name="sound" ng-model="vm.application.appdata" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AUDIO_FILES_REQUIRED">Audio_Files field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/queue.html",'<md-input-container class="md-block">\n  <label translate="VOICE.QUEUE">Queue</label>\n  <md-select name="queue" ng-model="vm.application.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows" ng-disabled="queue.canSelect === false">{{\n      queue.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'queue\'].$error" ng-show="routingAppForm[\'queue\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="URL" ng-model="vm.application.URL" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'URL\'].$error" ng-show="routingAppForm[\'URL\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ANNOUNCE_OVERRIDES">Announce_Overrides</label>\n  <md-select name="sound" ng-model="vm.application.sound" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'\'">None</md-option>\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ANNOUNCE_OVERRIDES_REQUIRED">Announce_Overrides field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.AGI">Agi</label>\n  <input type="text" name="agi" ng-model="vm.application.agi" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'agi\'].$error" ng-show="routingAppForm[\'agi\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AGI_REQUIRED">Agi field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.MACRO">Macro</label>\n  <input type="text" name="macro" ng-model="vm.application.macro" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'macro\'].$error" ng-show="routingAppForm[\'macro\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MACRO_REQUIRED">Macro field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.GOSUB">GoSub</label>\n  <input type="text" name="gosub" ng-model="vm.application.gosub" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'gosub\'].$error" ng-show="routingAppForm[\'gosub\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.GOSUB_REQUIRED">GoSub field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.RULE">Rule</label>\n  <input type="text" name="rule" ng-model="vm.application.rule" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'rule\'].$error" ng-show="routingAppForm[\'rule\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.RULE_REQUIRED">Rule field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.POSITION">Position</label>\n  <input type="number" name="position" ng-model="vm.application.position" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'position\'].$error" ng-show="routingAppForm[\'position\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.POSITION_REQUIRED">Position field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Position must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/ringGroup.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.users" autofocus multiple required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/set.html",'<md-input-container class="md-block">\n  <label translate="VOICE.VARIABLE">Variable</label>\n  <md-select name="variable" ng-model="vm.application.name" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="variable.name" ng-repeat="variable in vm.variables.rows" ng-disabled="variable.canSelect === false">{{\n      variable.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'variable\'].$error" ng-show="routingAppForm[\'variable\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.VALUE">Value</label>\n  <input type="text" name="value" ng-model="vm.application.value" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'value\'].$error" ng-show="routingAppForm[\'value\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VALUE_REQUIRED">Value field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/voicemail.html",'<md-input-container class="md-block">\n  <label translate="VOICE.MAILBOX@CONTEXT">Mailbox@Context</label>\n  <md-select name="voiceMail" ng-model="vm.application.voiceMail" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'{{voiceMail.mailbox}}@from-voicemail\'" ng-repeat="voiceMail in vm.voiceMails.rows" ng-disabled="voiceMail.canSelect === false">{{ voiceMail.mailbox }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'voiceMail\'].$error" ng-show="routingAppForm[\'voiceMail\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MAILBOX@CONTEXT_REQUIRED">Mailbox@Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/views/chanSpies/chanSpies.html",'<div id="chanSpies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CHANSPIES">ChanSpies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChanSpies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChanSpies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chanSpies-count">\n          <span>{{vm.selectedChanSpies.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChanSpies()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChanSpies()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChanSpies" csv-label="true" filename="chanSpies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChanSpies($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHANSPY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChanSpies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChanSpies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="prefix">{{ \'VOICE.PREFIX\' | translate }}</th>\n                <th md-column md-order-by="auth">{{ \'VOICE.AUTH\' | translate }}</th>\n                <th md-column md-order-by="record">{{ \'VOICE.RECORD\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chanSpies.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chanSpy" md-select-id="id" ng-repeat="chanSpy in vm.chanSpies.rows">\n                <td md-cell ng-if="chanSpy.userpic"><img class="avatar" alt="{{chanSpy.name}}" ng-src="api/users/{{chanSpy.id}}/avatar" /></td>\n                <td md-cell ng-if="!chanSpy.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chanSpy.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="id ">{{chanSpy.id}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="name ">{{chanSpy.name}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="prefix ">{{chanSpy.prefix}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="auth ">\n                  <md-icon md-colors="{color: {{chanSpy.auth ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.auth ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="record ">\n                  <md-icon md-colors="{color: {{chanSpy.record ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.record ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="description ">{{chanSpy.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(chanSpy, $event    )" translate="VOICE.EDIT_CHANSPY">\n                          Edit chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chanSpy, $event    )" translate="VOICE.DELETE_CHANSPY">\n                          Delete chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chanSpies.count}}" md-on-paginate="vm.getChanSpies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHANSPY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHANSPY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chanSpy-button" ng-click="vm.createOrEditchanSpy($event)" aria-label="add chanSpy" translate translate-attr-aria-label="VOICE.ADD_CHANSPY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHANSPY BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/chanSpies/create/dialog.html",'<md-dialog class="chanSpy-dialog" aria-label="New chanSpy">\n  <form name="chanSpyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chanSpy.name" ng-required="true" autofocus>\n\n        <div ng-messages="chanSpyForm[\'name\'].$error" ng-show="chanSpyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PREFIX">Prefix</label>\n        <input type="text" name="prefix" ng-model="vm.chanSpy.prefix" ng-required="true">\n\n        <div ng-messages="chanSpyForm[\'prefix\'].$error" ng-show="chanSpyForm[\'prefix\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OPTIONS">Options</label>\n        <md-select name="options" ng-model="vm.chanSpy.options" multiple required>\n          <md-option ng-value="\'b\'">b: Only spy on channels involved in a bridged call.</md-option>\n          <md-option ng-value="\'B\'">B: Instead of whispering on a single channel barge in on both channels involved in the call.</md-option>\n          <md-option ng-value="\'E\'">E: Exit when the spied-on channel hangs up.</md-option>\n          <md-option ng-value="\'o\'">o: Only listen to audio coming from this channel.</md-option>\n          <md-option ng-value="\'q\'">q: Don\'t play a beep when beginning to spy on a channel, or speak the selected channel name.</md-option>\n          <md-option ng-value="\'s\'">s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.</md-option>\n          <md-option ng-value="\'S\'">S: Stop when no more channels are left to spy on.</md-option>\n          <md-option ng-value="\'w\'">w: Enable whisper mode, so the spying channel can talk to the spied-on channel.</md-option>\n          <md-option ng-value="\'W\'">W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'options\'].$error" ng-show="chanSpyForm[\'options\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.auth" aria-label="Auth"><span translate="VOICE.AUTH">Auth</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.chanSpy.auth">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.chanSpy.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="chanSpyForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.record" aria-label="Record"><span translate="VOICE.RECORD">Record</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.chanSpy.record" class="md-block">\n        <label translate="VOICE.RECORDINGFORMAT">recordingFormat</label>\n        <md-select name="recordingFormat" ng-model="vm.chanSpy.recordingFormat" required>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'recordingFormat\'].$error" ng-show="chanSpyForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDINGFORMAT_REQUIRED">recordingFormat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chanSpy.description">\n\n        <div ng-messages="chanSpyForm[\'description\'].$error" ng-show="chanSpyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newchanSpy" ng-click="vm.savechanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid || chanSpyForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newchanSpy" ng-click="vm.addNewchanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CHANSPY" translate-attr-aria-label="VOICE.ADD_CHANSPY">\n          ADD CHANSPY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newchanSpy" ng-click="vm.deletechanSpy($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/contexts/contexts.html",'<div id="contexts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CONTEXTS">Contexts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContexts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContexts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contexts-count">\n          <span>{{vm.selectedContexts.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContexts()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContexts()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContexts" csv-label="true" filename="contexts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContexts($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CONTEXT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContexts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContexts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contexts.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="context" md-select-id="id" ng-repeat="context in vm.contexts.rows">\n                <td md-cell ng-if="context.userpic"><img class="avatar" alt="{{context.name}}" ng-src="api/users/{{context.id}}/avatar" /></td>\n                <td md-cell ng-if="!context.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{context.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="id ">{{context.id}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="name ">{{context.name}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="description ">{{context.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(context, $event    )" translate="VOICE.EDIT_CONTEXT">\n                          Edit Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(context, $event    )" translate="VOICE.DELETE_CONTEXT">\n                          Delete Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contexts.count}}" md-on-paginate="vm.getContexts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTEXT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTEXT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-context-button" ng-click="vm.createOrEditContext($event)" aria-label="add context" translate translate-attr-aria-label="VOICE.ADD_CONTEXT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTEXT BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/contexts/create/dialog.html",'<md-dialog class="context-dialog" aria-label="New Context">\n  <form name="contextForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.context.name" ng-required="true" autofocus>\n\n        <div ng-messages="contextForm[\'name\'].$error" ng-show="contextForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.context.description">\n\n        <div ng-messages="contextForm[\'description\'].$error" ng-show="contextForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContext" ng-click="vm.saveContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid || contextForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContext" ng-click="vm.addNewContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CONTEXT" translate-attr-aria-label="VOICE.ADD_CONTEXT">\n          ADD CONTEXT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContext" ng-click="vm.deleteContext($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="inbound-route-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInboundRoute ? \'VOICE.NEW_INBOUNDROUTE\' : \'VOICE.EDIT_INBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="inboundrouteForm[\'exten\'].$error" ng-show="inboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.inboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteForm[\'context\'].$error" ng-show="inboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="inboundrouteForm[\'alias\'].$error" ng-show="inboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.inboundRoute.description">\n        <div ng-messages="inboundrouteForm[\'description\'].$error" ng-show="inboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInboundRoute" ng-click="vm.saveInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid || inboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInboundRoute" ng-click="vm.addNewInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n          ADD INBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInboundRoute" ng-click="vm.deleteInboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-inbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-inbound-routes-button md-icon-button" aria-label="Go to inbound routes" ng-click="vm.gotoInboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="inbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/inboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.inboundRoute.id}}\n            <span ng-if="vm.inboundRoute.exten">{{vm.inboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.inboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.inboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.inboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate" 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/edit/teamadd/teamadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",'<div id="voicePrefixes" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEPREFIXES">VoicePrefixes</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicePrefixes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicePrefixes =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicePrefixes-count">\n          <span>{{vm.selectedVoicePrefixes.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicePrefixes()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicePrefixes()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicePrefixes" csv-label="true" filename="voicePrefixes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicePrefixes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEPREFIX TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicePrefixes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicePrefixes">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="VoiceExtensionId">{{ \'VOICE.OUTBOUNDROUTE\' | translate }}</th>\n                <th md-column md-order-by="callerIdAll">{{ \'VOICE.CALLERIDALL\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicePrefixes.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicePrefix" md-select-id="id" ng-repeat="voicePrefix in vm.voicePrefixes.rows">\n                <td md-cell ng-if="voicePrefix.userpic"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="api/users/{{voicePrefix.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicePrefix.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="id ">{{voicePrefix.id}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="name ">{{voicePrefix.name}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="VoiceExtensionId ">{{ (vm.outboundRoutes | filter : {\'id\':voicePrefix.VoiceExtensionId} : true)[0].exten }}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="callerIdAll ">{{voicePrefix.callerIdAll}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="description ">{{voicePrefix.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(voicePrefix, $event    )" translate="VOICE.EDIT_VOICEPREFIX">\n                          Edit voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voicePrefix, $event    )" translate="VOICE.AGENTADD_VOICEPREFIX">\n                          AgentAdd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voicePrefix, $event    )" translate="VOICE.TEAMADD_VOICEPREFIX">\n                          teamadd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicePrefix, $event    )" translate="VOICE.DELETE_VOICEPREFIX">\n                          Delete voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicePrefixes.count}}" md-on-paginate="vm.getVoicePrefixes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEPREFIX TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEPREFIX BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicePrefix-button" ng-click="vm.createOrEditvoicePrefix($event)" aria-label="add voicePrefix" translate translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEPREFIX BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/create/dialog.html",'<md-dialog class="voiceQueue-dialog" aria-label="New VoiceQueue">\n  <form name="voiceQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newVoiceQueue">\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voiceQueueForm[\'name\'].$error" ng-show="voiceQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required>\n          <md-option ng-value="\'ringall\'">Ringall</md-option>\n          <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n          <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n          <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n          <md-option ng-value="\'random\'">Random</md-option>\n          <md-option ng-value="\'linear\'">Linear</md-option>\n          <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n        </md-select>\n        <div ng-messages="voiceQueueForm[\'strategy\'].$error" ng-show="voiceQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voiceQueue.description">\n\n        <div ng-messages="voiceQueueForm[\'description\'].$error" ng-show="voiceQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceQueue" ng-click="vm.saveVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid || voiceQueueForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceQueue" ng-click="vm.addNewVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEQUEUE" translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n          ADD VOICEQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceQueue" ng-click="vm.deleteVoiceQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEQUEUE">Add Agent to voiceQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/view.html",'<div id="voice-voiceQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceQueues-button md-icon-button" aria-label="Go to voiceQueues" ng-click="vm.gotoVoiceQueues()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceQueue-image" hide-xs>\n          <img ng-src="assets/images/business/voiceQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceQueue.id}}\n            <span ng-if="vm.voiceQueue.name">{{vm.voiceQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.voiceQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="VOICE.TEAMADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.voiceQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="VOICE.AGENTADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.voiceQueue, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="VOICE.GOTO_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (settingsForm.$invalid) || (announcementsForm.$invalid) || (advancedForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ringall\'">Ringall</md-option>\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'">Random</md-option>\n                  <md-option ng-value="\'linear\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.voiceQueue.timeout" min="0" value="15" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUT"></span></div>\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXLENGTH">MaxLength</label>\n                <input type="number" name="maxlen" ng-model="vm.voiceQueue.maxlen" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MAXLENGTH"></span></div>\n                <div ng-messages="generalForm[\'maxlen\'].$error" ng-show="generalForm[\'maxlen\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_REQUIRED">MaxLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.voiceQueue.retry" min="0" value="2" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.RETRY"></span></div>\n                <div ng-messages="generalForm[\'retry\'].$error" ng-show="generalForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.voiceQueue.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="generalForm[\'wrapuptime\'].$error" ng-show="generalForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.voiceQueue.weight" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WEIGHT"></span></div>\n                <div ng-messages="generalForm[\'weight\'].$error" ng-show="generalForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.JOINWHENEMPTY">JoinWhenEmpty</label>\n                <md-select name="joinempty" ng-model="vm.voiceQueue.joinempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.JOINWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'joinempty\'].$error" ng-show="generalForm[\'joinempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.JOINWHENEMPTY_REQUIRED">JoinWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.LEAVEWHENEMPTY">LeaveWhenEmpty</label>\n                <md-select name="leavewhenempty" ng-model="vm.voiceQueue.leavewhenempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.LEAVEWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'leavewhenempty\'].$error" ng-show="generalForm[\'leavewhenempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.LEAVEWHENEMPTY_REQUIRED">LeaveWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.voiceQueue.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="generalForm[\'musiconhold\'].$error" ng-show="generalForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCETOAGENT">AnnounceToAgent</label>\n                <md-select name="announce" ng-model="vm.voiceQueue.announce" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'FALSE\'">None</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + announce.save_name" ng-repeat="announce in vm.sounds" ng-disabled="announce.canSelect === false">{{ announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCETOAGENT"></span></div>\n                <div ng-messages="generalForm[\'announce\'].$error" ng-show="generalForm[\'announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCETOAGENT_REQUIRED">AnnounceToAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.voiceQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEFREQUENCY">AnnounceFrequency</label>\n                <input type="number" name="announce_frequency" ng-model="vm.voiceQueue.announce_frequency" min="0" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'announce_frequency\'].$error" ng-show="settingsForm[\'announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_REQUIRED">AnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINANNOUNCEFREQUENCY">MinAnnounceFrequency</label>\n                <input type="number" name="min_announce_frequency" ng-model="vm.voiceQueue.min_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MINANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'min_announce_frequency\'].$error" ng-show="settingsForm[\'min_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_REQUIRED">MinAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MinAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCEFREQUENCY">PeriodicAnnounceFrequency</label>\n                <input type="number" name="periodic_announce_frequency" ng-model="vm.voiceQueue.periodic_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'periodic_announce_frequency\'].$error" ng-show="settingsForm[\'periodic_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_REQUIRED">PeriodicAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">PeriodicAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RANDOMPERIODICANNOUNCE">RandomPeriodicAnnounce</label>\n                <md-select name="random_periodic_announce" ng-model="vm.voiceQueue.random_periodic_announce" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RANDOMPERIODICANNOUNCE"></span></div>\n                <div ng-messages="settingsForm[\'random_periodic_announce\'].$error" ng-show="settingsForm[\'random_periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RANDOMPERIODICANNOUNCE_REQUIRED">RandomPeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEHOLDTIME">AnnounceHoldtime</label>\n                <md-select name="announce_holdtime" ng-model="vm.voiceQueue.announce_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'once\'">Once</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEHOLDTIME"></span></div>\n                <div ng-messages="settingsForm[\'announce_holdtime\'].$error" ng-show="settingsForm[\'announce_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEHOLDTIME_REQUIRED">AnnounceHoldtime field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCECALLERPOSITION">AnnounceCallerPosition</label>\n                <md-select name="announce_position" ng-model="vm.voiceQueue.announce_position" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'limit\'">Limit</md-option>\n                  <md-option ng-value="\'more\'">More</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCECALLERPOSITION"></span></div>\n                <div ng-messages="settingsForm[\'announce_position\'].$error" ng-show="settingsForm[\'announce_position\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCECALLERPOSITION_REQUIRED">AnnounceCallerPosition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEPOSITIONLIMIT">AnnouncePositionLimit</label>\n                <input type="number" name="announce_position_limit" ng-model="vm.voiceQueue.announce_position_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEPOSITIONLIMIT"></span></div>\n                <div ng-messages="settingsForm[\'announce_position_limit\'].$error" ng-show="settingsForm[\'announce_position_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEPOSITIONLIMIT_REQUIRED">AnnouncePositionLimit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.REPORTHOLDTIMEAGENT">ReportHoldtimeAgent</label>\n                <md-select name="reportholdtime" ng-model="vm.voiceQueue.reportholdtime" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.REPORTHOLDTIMEAGENT"></span></div>\n                <div ng-messages="settingsForm[\'reportholdtime\'].$error" ng-show="settingsForm[\'reportholdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.REPORTHOLDTIMEAGENT_REQUIRED">ReportHoldtimeAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceQueue-detail-form-container announcements md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</div>\n            </div>\n            <form name="announcementsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCE">PeriodicAnnounce</label>\n                <md-select name="periodic_announce" ng-model="vm.voiceQueue.periodic_announce" autofocus multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Default</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + periodic_announce.save_name" ng-repeat="periodic_announce in vm.sounds" ng-disabled="periodic_announce.canSelect === false">{{ periodic_announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'periodic_announce\'].$error" ng-show="announcementsForm[\'periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCE_REQUIRED">PeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.HOLDTIMEANNOUNCE">HoldTimeAnnounce</label>\n                <md-select name="queue_reporthold" ng-model="vm.voiceQueue.queue_reporthold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_reporthold.save_name" ng-repeat="queue_reporthold in vm.sounds" ng-disabled="queue_reporthold.canSelect === false">{{ queue_reporthold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.HOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_reporthold\'].$error" ng-show="announcementsForm[\'queue_reporthold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.HOLDTIMEANNOUNCE_REQUIRED">HoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.YOUARENEXTANNOUNCE">YouareNextAnnounce</label>\n                <md-select name="queue_youarenext" ng-model="vm.voiceQueue.queue_youarenext" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_youarenext.save_name" ng-repeat="queue_youarenext in vm.sounds" ng-disabled="queue_youarenext.canSelect === false">{{ queue_youarenext.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.YOUARENEXTANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_youarenext\'].$error" ng-show="announcementsForm[\'queue_youarenext\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.YOUARENEXTANNOUNCE_REQUIRED">YouareNextAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THEREAREANNOUNCE">ThereareAnnounce</label>\n                <md-select name="queue_thereare" ng-model="vm.voiceQueue.queue_thereare" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thereare.save_name" ng-repeat="queue_thereare in vm.sounds" ng-disabled="queue_thereare.canSelect === false">{{ queue_thereare.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THEREAREANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thereare\'].$error" ng-show="announcementsForm[\'queue_thereare\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THEREAREANNOUNCE_REQUIRED">ThereareAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WAITINGCALLSANNOUNCE">WaitingCallsAnnounce</label>\n                <md-select name="queue_callswaiting" ng-model="vm.voiceQueue.queue_callswaiting" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_callswaiting.save_name" ng-repeat="queue_callswaiting in vm.sounds" ng-disabled="queue_callswaiting.canSelect === false">{{ queue_callswaiting.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.WAITINGCALLSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_callswaiting\'].$error" ng-show="announcementsForm[\'queue_callswaiting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WAITINGCALLSANNOUNCE_REQUIRED">WaitingCallsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ESTIMATEDHOLDTIMEANNOUNCE">EstimatedHoldTimeAnnounce</label>\n                <md-select name="queue_holdtime" ng-model="vm.voiceQueue.queue_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_holdtime.save_name" ng-repeat="queue_holdtime in vm.sounds" ng-disabled="queue_holdtime.canSelect === false">{{ queue_holdtime.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ESTIMATEDHOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_holdtime\'].$error" ng-show="announcementsForm[\'queue_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ESTIMATEDHOLDTIMEANNOUNCE_REQUIRED">EstimatedHoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTESANNOUNCE">MinutesAnnounce</label>\n                <md-select name="queue_minutes" ng-model="vm.voiceQueue.queue_minutes" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minutes.save_name" ng-repeat="queue_minutes in vm.sounds" ng-disabled="queue_minutes.canSelect === false">{{ queue_minutes.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTESANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minutes\'].$error" ng-show="announcementsForm[\'queue_minutes\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTESANNOUNCE_REQUIRED">MinutesAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTEANNOUNCE">MinuteAnnounce</label>\n                <md-select name="queue_minute" ng-model="vm.voiceQueue.queue_minute" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minute.save_name" ng-repeat="queue_minute in vm.sounds" ng-disabled="queue_minute.canSelect === false">{{ queue_minute.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minute\'].$error" ng-show="announcementsForm[\'queue_minute\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTEANNOUNCE_REQUIRED">MinuteAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECONDSANNOUNCE">SecondsAnnounce</label>\n                <md-select name="queue_seconds" ng-model="vm.voiceQueue.queue_seconds" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_seconds.save_name" ng-repeat="queue_seconds in vm.sounds" ng-disabled="queue_seconds.canSelect === false">{{ queue_seconds.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SECONDSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_seconds\'].$error" ng-show="announcementsForm[\'queue_seconds\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECONDSANNOUNCE_REQUIRED">SecondsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THANKYOUANNOUNCE">ThankYouAnnounce</label>\n                <md-select name="queue_thankyou" ng-model="vm.voiceQueue.queue_thankyou" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thankyou.save_name" ng-repeat="queue_thankyou in vm.sounds" ng-disabled="queue_thankyou.canSelect === false">{{ queue_thankyou.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THANKYOUANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thankyou\'].$error" ng-show="announcementsForm[\'queue_thankyou\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THANKYOUANNOUNCE_REQUIRED">ThankYouAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.acw" class="md-block">\n                <label translate="VOICE.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.voiceQueue.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.voiceQueue.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.voiceQueue.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.voiceQueue.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.voiceQueue.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.voiceQueue.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.voiceQueue.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.voiceQueue.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.voiceQueue.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.voiceQueue.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SERVICELEVEL">ServiceLevel</label>\n                <input type="number" name="servicelevel" ng-model="vm.voiceQueue.servicelevel" min="0" max="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.SERVICELEVEL"></span></div>\n                <div ng-messages="advancedForm[\'servicelevel\'].$error" ng-show="advancedForm[\'servicelevel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_REQUIRED">ServiceLevel field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.mandatoryDisposition" class="md-block">\n                <label translate="VOICE.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.voiceQueue.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/voiceQueues.html",'<div id="voiceQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEQUEUES">VoiceQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceQueues-count">\n          <span>{{vm.selectedVoiceQueues.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceQueues()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceQueues()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceQueues" csv-label="true" filename="voiceQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceQueues($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'VOICE.STRATEGY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceQueues.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceQueue" md-select-id="id" ng-repeat="voiceQueue in vm.voiceQueues.rows">\n                <td md-cell ng-if="voiceQueue.userpic"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="api/users/{{voiceQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="id ">{{voiceQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="name ">{{voiceQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="strategy ">{{ vm.arraystrategy[voiceQueue.strategy].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="description ">{{voiceQueue.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceQueue, $event    )" translate="VOICE.EDIT_VOICEQUEUE">\n                          Edit VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voiceQueue, $event    )" translate="VOICE.TEAMADD_VOICEQUEUE">\n                          teamadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voiceQueue, $event    )" translate="VOICE.AGENTADD_VOICEQUEUE">\n                          agentadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceQueue, $event    )" translate="VOICE.DELETE_VOICEQUEUE">\n                          Delete VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(voiceQueue, $event    )" translate="VOICE.GOTOREALTIME_VOICEQUEUE">\n                          goToRealtime VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voiceQueue-button" ng-click="vm.createOrEditVoiceQueue($event)" aria-label="add voiceQueue" translate translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/create/dialog.html",'<md-dialog class="voiceRecording-dialog" aria-label="New VoiceRecording">\n  <form name="voiceRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceRecordings-count">\n          <span>{{vm.selectedVoiceRecordings.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceRecordings()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceRecordings()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceRecordings" csv-label="true" filename="voiceRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribesentimentSelectedVoiceRecordings($event)" aria-label="transcribesentiment selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBESENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-text-to-speech"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribeSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBE_SELECTED">\n          <md-icon md-font-icon="icon-format-size"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBE_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runsentimentSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.SENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-heart-outline"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNSENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceRecordings($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'WHATSAPP.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'WHATSAPP.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'WHATSAPP.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'WHATSAPP.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'WHATSAPP.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'WHATSAPP.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'WHATSAPP.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'WHATSAPP.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'WHATSAPP.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"WHATSAPP.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"WHATSAPP.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"WHATSAPP.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"WHATSAPP.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"WHATSAPP.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"WHATSAPP.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"WHATSAPP.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"WHATSAPP.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'WHATSAPP.PAGE' | translate}}:', rowsPerPage: '{{'WHATSAPP.ROWSPERPAGE' | translate}}:', of: '{{'WHATSAPP.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/whatsapp/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="WHATSAPP.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="WHATSAPP.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus ng-disabled="!vm.newWhatsappAccount">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappAccountForm[\'name\'].$error" ng-show="whatsappAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'key\'].$error" ng-show="whatsappAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n        <div ng-messages="whatsappAccountForm[\'ListId\'].$error" ng-show="whatsappAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="whatsappAccountForm[\'remote\'].$error" ng-show="whatsappAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.whatsappAccount.type">\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountForm[\'type\'].$error" ng-show="whatsappAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n        <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'accountSid\'].$error" ng-show="whatsappAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n        <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PHONE">phone</label>\n        <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'phone\'].$error" ng-show="whatsappAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappAccount.description">\n\n        <div ng-messages="whatsappAccountForm[\'description\'].$error" ng-show="whatsappAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappAccount" ng-click="vm.saveWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid || whatsappAccountForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappAccount" ng-click="vm.addNewWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPACCOUNT" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n          ADD WHATSAPPACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappAccount" ng-click="vm.deleteWhatsappAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",'<md-dialog class="whatsappAccount-dialog" aria-label="whatsappAccount" ng-init="vm.onInit()">\n  <form name="whatsappAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">Add Agent to whatsappAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/agent/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'agent\'].$error" ng-show="whatsappAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'accesskeyid\'].$error" ng-show="whatsappAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'secretaccesskey\'].$error" ng-show="whatsappAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'lexregion\'].$error" ng-show="whatsappAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'botname\'].$error" ng-show="whatsappAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'times\'].$error" ng-show="whatsappAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'text\'].$error" ng-show="whatsappAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/close/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'disposition\'].$error" ng-show="whatsappAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'key\'].$error" ng-show="whatsappAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'projectId\'].$error" ng-show="whatsappAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'clientEmail\'].$error" ng-show="whatsappAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'privateKey\'].$error" ng-show="whatsappAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'condition\'].$error" ng-show="whatsappAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'truepriority\'].$error" ng-show="whatsappAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'falsepriority\'].$error" ng-show="whatsappAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'priority\'].$error" ng-show="whatsappAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/noop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'value\'].$error" ng-show="whatsappAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/queue/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'queue\'].$error" ng-show="whatsappAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/system/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'command\'].$error" ng-show="whatsappAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'variable\'].$error" ng-show="whatsappAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/tag/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'tag\'].$error" ng-show="whatsappAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",'<div id="whatsapp-whatsappAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappAccounts-button md-icon-button" aria-label="Go to whatsappAccounts" ng-click="vm.gotoWhatsappAccounts()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappAccount-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappAccount.id}}\n            <span ng-if="vm.whatsappAccount.name">{{vm.whatsappAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (whatsappDispositionsForm.$invalid) || (whatsappCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n                <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n                <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.PHONE">phone</label>\n                <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/notify?token=\' + vm.whatsappAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twillo\'" class="md-block">\n                <label translate="WHATSAPP.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/status?token=\' + vm.whatsappAccount.token + (vm.whatsappAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.whatsappAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="WHATSAPP.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.whatsappAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.queueTransfer == true" class="md-block">\n                <label translate="WHATSAPP.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.whatsappAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.agentTransfer == true" class="md-block">\n                <label translate="WHATSAPP.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.whatsappAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.whatsappAccount.token" disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.mandatoryDisposition" class="md-block">\n                <label translate="WHATSAPP.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.whatsappAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="WhatsappAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="whatsappAccount-detail-form-container whatsappdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="WHATSAPP.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add whatsapp dispositions" translate translate-attr-label="WHATSAPP.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="whatsappAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container whatsappcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountWhatsappCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.WHATSAPPCANNEDANSWERS">WhatsappCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountWhatsappCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event)" aria-label="add whatsappCannedAnswer" translate translate-attr-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length}} {{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountWhatsappCannedAnswers" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountWhatsappCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountWhatsappCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'WHATSAPP.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'WHATSAPP.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="whatsappCannedAnswer" md-select-id="id" ng-repeat="whatsappCannedAnswer in vm_dc.whatsappAccountWhatsappCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{ whatsappCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" translate="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER">\n                                Edit WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(whatsappCannedAnswer, $event)" translate="WHATSAPP.DELETE_WHATSAPPCANNEDANSWER">\n                                Delete WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountWhatsappCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_WHATSAPPCANNEDANSWER_AVAILABLE">No whatsappcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountWhatsappCannedAnswers.count}}" md-on-paginate="vm_dc.getWhatsappAccountWhatsappCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.whatsappAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="WHATSAPP.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedWhatsappAccountApps.length}} {{vm_ac.selectedWhatsappAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedWhatsappAccountApps($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedWhatsappAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.whatsappAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editWhatsappAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.whatsappAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getWhatsappAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getWhatsappAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="WHATSAPP.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountInteractions.length}} {{vm_dc.selectedWhatsappAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountInteractions" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'WHATSAPP.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'WHATSAPP.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'WHATSAPP.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'WHATSAPP.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'WHATSAPP.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.whatsappAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'WHATSAPP.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'WHATSAPP.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spywhatsappInteraction($event, interaction)" translate="WHATSAPP.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.whatsappInteractionDownload(interaction, $event)" translate="WHATSAPP.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="WHATSAPP.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountInteractions.count}}" md-on-paginate="vm_dc.getWhatsappAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",'<md-dialog class="whatsappCannedAnswer-dialog" aria-label="New WhatsappCannedAnswer">\n  <form name="whatsappCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.whatsappCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'key\'].$error" ng-show="whatsappCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.whatsappCannedAnswer.value" required></textarea>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'value\'].$error" ng-show="whatsappCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappCannedAnswer.description">\n\n        <div ng-messages="whatsappCannedAnswerForm[\'description\'].$error" ng-show="whatsappCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappCannedAnswer" ng-click="vm.saveWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid || whatsappCannedAnswerForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappCannedAnswer" ng-click="vm.addNewWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPCANNEDANSWER" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n          ADD WHATSAPPCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappCannedAnswer" ng-click="vm.deleteWhatsappCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",'<div id="whatsappAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPACCOUNTS">WhatsappAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappAccounts-count">\n          <span>{{vm.selectedWhatsappAccounts.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappAccounts()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappAccounts()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappAccounts" csv-label="true" filename="whatsappAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappAccounts($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'WHATSAPP.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'WHATSAPP.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'WHATSAPP.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'WHATSAPP.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappAccount" md-select-id="id" ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n                <td md-cell ng-if="whatsappAccount.userpic"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="api/users/{{whatsappAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="id ">{{whatsappAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="name ">{{whatsappAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="key ">{{whatsappAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':whatsappAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="type ">{{ vm.arraytype[whatsappAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="phone ">{{whatsappAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="description ">{{whatsappAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappAccount, $event    )" translate="WHATSAPP.EDIT_WHATSAPPACCOUNT">\n                          Edit WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(whatsappAccount, $event    )" translate="WHATSAPP.INTERACTIONS_WHATSAPPACCOUNT">\n                          Interactions WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappAccount, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">\n                          AgentAdd WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappAccount, $event    )" translate="WHATSAPP.DELETE_WHATSAPPACCOUNT">\n                          Delete WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappAccounts.count}}" md-on-paginate="vm.getWhatsappAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappAccount-button" ng-click="vm.createOrEditWhatsappAccount($event)" aria-label="add whatsappAccount" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",'<md-dialog class="whatsappQueue-dialog" aria-label="New WhatsappQueue">\n  <form name="whatsappQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newWhatsappQueue">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappQueueForm[\'name\'].$error" ng-show="whatsappQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="whatsappQueueForm[\'strategy\'].$error" ng-show="whatsappQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="whatsappQueueForm[\'timeout\'].$error" ng-show="whatsappQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappQueue.description">\n\n        <div ng-messages="whatsappQueueForm[\'description\'].$error" ng-show="whatsappQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappQueue" ng-click="vm.saveWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid || whatsappQueueForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappQueue" ng-click="vm.addNewWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPQUEUE" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n          ADD WHATSAPPQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappQueue" ng-click="vm.deleteWhatsappQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">Add Agent to whatsappQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",'<div id="whatsapp-whatsappQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappQueues-button md-icon-button" aria-label="Go to whatsappQueues" ng-click="vm.gotoWhatsappQueues()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappQueue-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappQueue.id}}\n            <span ng-if="vm.whatsappQueue.name">{{vm.whatsappQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.whatsappQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",'<div id="whatsappQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPQUEUES">WhatsappQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappQueues-count">\n          <span>{{vm.selectedWhatsappQueues.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappQueues()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappQueues()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappQueues" csv-label="true" filename="whatsappQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappQueues($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'WHATSAPP.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappQueue" md-select-id="id" ng-repeat="whatsappQueue in vm.whatsappQueues.rows">\n                <td md-cell ng-if="whatsappQueue.userpic"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="api/users/{{whatsappQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="id ">{{whatsappQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="name ">{{whatsappQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="strategy ">{{ vm.arraystrategy[whatsappQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappQueue, $event    )" translate="WHATSAPP.EDIT_WHATSAPPQUEUE">\n                          Edit WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(whatsappQueue, $event    )" translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE">\n                          teamadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappQueue, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">\n                          agentadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappQueue, $event    )" translate="WHATSAPP.DELETE_WHATSAPPQUEUE">\n                          Delete WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(whatsappQueue, $event    )" translate="WHATSAPP.GOTOREALTIME_WHATSAPPQUEUE">\n                          goToRealtime WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappQueues.count}}" md-on-paginate="vm.getWhatsappQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappQueue-button" ng-click="vm.createOrEditWhatsappQueue($event)" aria-label="add whatsappQueue" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPQUEUE BUTTON --\x3e\n</div>'),e.put("app/navigation/layouts/horizontal-navigation/navigation.html",'<div layout="row" layout-align="start center">\n  <ms-navigation-horizontal></ms-navigation-horizontal>\n</div>'),e.put("app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html",'<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/navigation/layouts/vertical-navigation/navigation.html",'<md-toolbar class="navigation-header md-whiteframe-1dp" layout="row" layout-align="space-between center">\n  <div class="logo" layout="row" layout-align="start center">\n    <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n    \x3c!-- <span class="logo-image"><img src="assets/images/logos/whisker_32x32.png" alt="motion_whisker_32x32" /></span> --\x3e\n    <span class="logo-text text-truncate">{{vm.getLogo() | uppercase}}</span>\n  </div>\n  <md-icon class="fold-toggle s18" md-font-icon="icon-backburger" hide show-gt-sm ng-click="vm.toggleMsNavigationFolded()"></md-icon>\n</md-toolbar>\n\n<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/quick-panel/quick-panel.html",'<md-content>\n  <md-tabs md-no-pagination md-swipe-content md-stretch-tabs="always">\n    <md-tab>\n      <md-tab-label>\n        <span translate="QUICKPANEL.TODAY">TODAY</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="today-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/today/today-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'" ng-controller="ChatInternalController as vm_ct" ng-init="vm_ct.init(vm.license)" md-on-deselect="vm_ct.user = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalMessages}}</div>\n        <span>MESSENGER</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="chat-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'" ng-controller="ChatGroupController as vm_cg" ng-init="vm_cg.init(vm.license)" md-on-deselect="vm_cg.group = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalGroupMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalGroupMessages}}</div>\n        <span translate="QUICKPANEL.GROUPS">GROUPS</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="group-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n  </md-tabs>\n</md-content>'),e.put("app/quick-panel/tabs/activity/activity-tab.html",'<md-list class="friends">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.FRIENDS">Friends</span>\n  </md-subheader>\n\n  <md-list-item class="friend md-3-line" ng-repeat="friend in vm.activities.friends">\n    <img ng-src="{{friend.avatar}}" class="md-avatar" alt="{{friend.name}}" />\n\n    <div class="status {{friend.status}}"></div>\n\n    <div ng-if="contact.unread" class="md-accent-bg unread-message-count">{{contact.unread}}</div>\n\n    <div class="md-list-item-text">\n      <h3 class="message">{{friend.message}}</h3>\n      <p class="time">{{friend.time}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="servers">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.APP_SERVERS">Application Servers</span>\n  </md-subheader>\n\n  <md-list-item class="server md-3-line" ng-repeat="server in vm.activities.servers">\n    <md-icon md-font-icon="icon-checkbox-blank-circle" class="s16 status" ng-class="server.status"></md-icon>\n\n    <div class="md-list-item-text">\n      <h3>{{server.location}}</h3>\n      <p>{{server.detail}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="stats">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.USER_STATS">User Stats</span>\n  </md-subheader>\n\n  <md-list-item class="stat md-2-line" ng-repeat="stat in vm.activities.stats">\n    <div class="md-list-item-text">\n      <span>{{stat.title}} ({{stat.current}} / {{stat.total}})</span>\n      <md-progress-linear ng-class="stat.status" md-mode="determinate" value="{{stat.percent}}"></md-progress-linear>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/quick-panel/tabs/chat/chat-tab.html",'<div class="main animate-slide-left" ng-hide="vm_ct.user">\n  <md-subheader class="md-no-sticky">\n    <div class="search" layout="row" layout-align="space-between center">\n      <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n      <input class="search-input" ng-model="vm_ct.search.$" type="text" placeholder="Search by fullname.." translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      <md-select ng-model="vm_ct.search.online" class="height-50 no-padding no-margin" aria-label="Chat Tab Search">\n        <md-option ng-value="undefined">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online\n        </md-option>\n        <md-option ng-value="false">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  \x3c!-- <select ng-model="vm_ct.filterOnline" class="height-50 no-padding no-margin">\n            <option ng-value="undefined">All</option>\n            <option ng-value="true"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online</option>\n            <option ng-value="false"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline</option>\n        </select> --\x3e\n  <md-divider></md-divider>\n  <md-list class="recent">\n    <md-list-item class="contact md-3-line" ng-if="user.id != vm_ct.currentUser.id" ng-repeat="user in vm_ct.users.rows | orderBy: \'-lastMessageAt\' | filter:vm_ct.search" ng-click="vm_ct.toggleChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="md-avatar" alt="{{user.fullname}}" />\n      <div class="status" ng-class="{true: \'online\', false: \'offline\'}[user.online]"></div>\n      <div ng-if="vm_ct.unreadMessage[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessage[user.id]}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{user.fullname}}</h3>\n          <md-icon ng-if="!user.allowmessenger && user.role === \'agent\'" class="s16 margin-left-5" ng-style="{\'color\': \'red\' }" md-font-icon="icon-block-helper"></md-icon>\n        </div>\n        <p>{{user.name}} &#60;{{user.internal}}&#62;</p>\n        <div layout="row" layout-align="start center">\n          <md-icon ng-if="!user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check-all md-accent"></md-icon>\n          <p>{{user.lastMessage.body | limitTo:20 }}{{user.lastMessage.body.length > 20 ? \'...\' : \'\' }}</p>\n          <span flex></span>\n          <p class="last-message" ng-if="user.lastMessageAt != vm_ct.standardDate">\n            {{user.lastMessageAt | formatdate}}</p>\n        </div>\n      </div>\n    </md-list-item>\n  </md-list>\n</div>\n\n<div class="chat animate-slide-right" ng-show="vm_ct.user" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n\n      <div layout="row" layout-align="start center">\n        <md-button class="md-icon-button" ng-click="vm_ct.toggleChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-dialog">\n    <div layout="row" ng-repeat="message in vm_ct.user.messages.rows" class="md-padding message-row" ng-class="message.FromId === vm_ct.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId === vm_ct.user.id" ng-src="{{vm_ct.user.userpic ? \'api/users/\' + vm_ct.user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n      <img ng-if="message.FromId === vm_ct.currentUser.id" class="avatar" ng-src="{{vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="!message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-submit="vm_ct.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 && !vm_ct.disabled? vm_ct.reply() : null" flex ng-model="vm_ct.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button ng-disable="vm_ct.disabled" class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/create/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      \x3c!--START Error--\x3e\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      \x3c!--END Error--\x3e\n\n      \x3c!--START NAME--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.group.name" required autofocus>\n        <div ng-messages="groupForm[\'name\'].$error" ng-show="groupForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="QUICKPANEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END NAME--\x3e\n\n      \x3c!--START Members--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.MEMBERS">Members</label>\n        <md-contact-chips ng-model="vm.group.members" md-contacts="vm.querySearch($query)" md-contact-name="name" md-contact-image="image" md-require-match="true" md-highlight-flags="i" placeholder="{{\'QUICKPANEL.MEMBERS\' | translate}}">\n        </md-contact-chips>\n        <div ng-messages="groupForm[\'strategy\'].$error" ng-show="groupForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.MEMBERS_REQUIRED">Members field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END Members--\x3e\n\n      \x3c!--START Writing--\x3e\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.group.write" aria-label="Write">\n          {{\'QUICKPANEL.ENABLE_WRITING\' | translate}}\n        </md-switch>\n      </md-input-container>\n      \x3c!--END Writing--\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.newChatGroup" ng-click="vm.saveChatGroup()" class="send-button md-accent md-raised" ng-disabled="groupForm.$invalid || groupForm.$pristine || (vm.group.members.length < 1)" aria-label="SAVE" translate="QUICKPANEL.SAVE" translate-attr-aria-label="QUICKPANEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/groups/group-tab.html",'<div class="main animate-slide-left" ng-if="!vm_cg.group">\n  <md-subheader>\n    <div layout="row">\n      \x3c!-- START Search --\x3e\n      <div class="search" layout="row" layout-align="start center" flex>\n        <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n        <input ng-model="vm_cg.search" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      </div>\n      \x3c!-- END Search --\x3e\n\n      \x3c!-- START New Group --\x3e\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-icon-button" aria-label="New" ng-click="vm_cg.addGroup(null, $event)">\n        <md-icon md-font-icon="icon-account-multiple-plus" class="icon"></md-icon>\n      </md-button>\n      \x3c!-- END New Group --\x3e\n    </div>\n  </md-subheader>\n\n  <md-divider></md-divider>\n\n  \x3c!-- START Groups --\x3e\n  <md-list class="recent no-padding">\n    \x3c!-- START Group --\x3e\n    <md-list-item class="contact" ng-repeat="group in vm_cg.groupsToArray() | filter:vm_cg.search" ng-click="vm_cg.toggleChat(group)">\n      <img src="assets/images/avatars/group.png" class="md-avatar" alt="{{group.name}}" />\n      <div ng-if="group.unreadGroupMessages" class="md-accent-bg unread-message-count">{{group.unreadGroupMessages}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{group.name}}</h3>\n        </div>\n      </div>\n\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-secondary md-icon-button" aria-label="Remove" ng-click="vm_cg.deleteGroup(group, $event)">\n        <md-icon md-font-icon="icon-delete" class="icon s18"></md-icon>\n      </md-button>\n\n      <md-divider ng-if="!$last"></md-divider>\n    </md-list-item>\n    <md-list-item>\n      <div ng-if="!vm_cg.groupsToArray().length" layout="row" layout-align="center center" flex>\n        <span>{{\'QUICKPANEL.NO_AVAILABLE_GROUPS\' | translate}}</span>\n      </div>\n    </md-list-item>\n    \x3c!-- END Group --\x3e\n  </md-list>\n  \x3c!-- END Groups --\x3e\n</div>\n\n<div class="chat animate-slide-right" ng-if="vm_cg.group" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools " layout="row" layout-align="space-between center">\n      <md-button class="md-icon-button" ng-click="vm_cg.back()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK" flex="15">\n        <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n      </md-button>\n      <h4 flex layout-align="start center" style="max-height: 100%; overflow-y:auto;">\n        <span translate="QUICKPANEL.YOU" translate-values=\'{participants: vm_cg.participants}\'></span>\n      </h4>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_cg.license.webrtc && vm_cg.currentUser.role === \'agent\' && vm_cg.currentUser.showWebBar === 2 && vm_cg.user.role === \'agent\' && vm_cg.user.showWebBar === 2" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_cg.webcall(vm_cg.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-group-dialog">\n    <div layout="row" ng-repeat="message in vm_cg.group.messages" class="message-row" ng-class="message.FromId === vm_cg.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId !== vm_cg.currentUser.id" ng-src="{{\'api/users/\' + message.FromId + \'/avatar\'}}" class="avatar" alt="{{vm_cg.user.fullname}}" />\n      <img ng-if="message.FromId === vm_cg.currentUser.id" class="avatar" ng-src="{{vm_cg.currentUser.userpic ? \'api/users/\' + vm_cg.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <div ng-if="message.FromId !== vm_cg.currentUser.id">\n          <span style="font-size: 12px;">{{vm_cg.group.membersByKeys[message.FromId].fullname}}</span>\n        </div>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text" style="margin-top: 0px;">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="message.FromId === vm_cg.currentUser.id" class="s16 margin-5" style="cursor: pointer;" md-font-icon="icon-information-outline" ng-click="vm_cg.showMessageInfo($event, message)"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-if="(vm_cg.currentUser.role !== \'agent\') || vm_cg.group.write" ng-submit="vm_cg.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 ? vm_cg.reply() : null" flex ng-model="vm_cg.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/info/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div ng-if="vm.data.messages[$index].FromId !== vm.data.messages[$index].ToId" ng-repeat="user in vm.data.users" layout-margin>\n        <div layout="row">\n          <div layout="row" layout-align="start center">\n            <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{user.fullname}}" />\n            <span>{{user.fullname}}</span>\n          </div>\n          <div layout="row" layout-align="end center" flex>\n            <md-icon class="s16 margin-5" md-font-icon="{{vm.data.messages[$index].read ? \'icon-check-all md-accent\' : \'icon-check\'}}"></md-icon>\n            <span class="time secondary-text">{{vm.data.messages[$index].updatedAt | formatdate }}</span>\n          </div>\n        </div>\n        <div>\n          <md-divider ng-if="!$last"></md-divider>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/today/today-tab.html",'<md-list class="date">\n  <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.TODAY">Today</span></md-subheader>\n  <md-list-item class="md-display-1 md-2-line">\n    <div class="secondary-text">\n      <div translate="QUICKPANEL.{{ (vm.date | date:\'EEEE\').toUpperCase() }}"></div>\n      <div layout="row" layout-align="start start">\n        <span> {{vm.date | date:\'d\'}}</span>\n        <span class="md-subhead">th</span>\n        <span translate="QUICKPANEL.{{ (vm.date | date:\'MMMM\').toUpperCase() }}"></span>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>\n\n\x3c!-- <md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.EVENTS">Events</span></md-subheader>\n\n    <md-list-item class="md-2-line" ng-repeat="event in vm.events" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{event.title}}</h3>\n\n            <p>{{event.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.NOTES">Notes</span></md-subheader>\n    <md-list-item class="md-2-line" ng-repeat="note in vm.notes" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{note.title}}</h3>\n\n            <p>{{note.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.QUICK_SETTINGS">Quick Settings</span></md-subheader>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.NOTIFICATIONS">Notifications</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.notify" aria-label="Notifications" translate\n                   translate-attr-aria-label="QUICKPANEL.NOTIFICATIONS"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.CLOUD_SYNC">Cloud Sync</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.cloud" aria-label="Cloud Sync" translate\n                   translate-attr-aria-label="QUICKPANEL.CLOUD_SYNC"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.RETRO_THRUSTERS">Retro Thrusters</h3>\n        <md-switch class="md-secondary md-warn" ng-model="vm.settings.retro" aria-label="Retro Thrusters" translate\n                   translate-attr-aria-label="QUICKPANEL.RETRO_THRUSTERS"></md-switch>\n    </md-list-item>\n</md-list> --\x3e'),e.put("app/reset/reset.html",'<div id="reset-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()" ms-scroll>\n  <div id="reset-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="reset-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="RESETPASSWORD.TITLE">Reset your password</div>\n\n      <form name="resetPasswordForm" novalidate>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" ng-pattern="vm.passwordPattern" placeholder="Password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD" required>\n          <div ng-messages="resetPasswordForm.password.$error" role="alert">\n            <div ng-message="required">\n              <span translate="RESETPASSWORD.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="RESETPASSWORD.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="passwordConfirm" ng-model="vm.form.passwordConfirm" placeholder="Password (Confirm)" match-password="password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD_CONFIRM">\n          <div ng-messages="resetPasswordForm.passwordConfirm.$error" role="alert">\n            <div ng-message="passwordMatch">\n              <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.resetPassword()" class="md-raised md-accent submit-button" aria-label="UPDATE MY PASSWORD" ng-disabled="resetPasswordForm.$invalid || resetPasswordForm.$pristine" translate="RESETPASSWORD.UPDATE_PASSWORD" translate-attr-aria-label="RESETPASSWORD.UPDATE_PASSWORD">\n          RESET MY PASSWORD\n        </md-button>\n      </form>\n    </div>\n  </div>\n</div>'),e.put("app/toolbar/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="changePasswordForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="vm.reset" class="title" translate="TOOLBAR.RESETPASSWORD">Reset Password</span>\n        <span ng-if="!vm.reset" class="title" translate="TOOLBAR.CHANGEPASSWORD">Change Password</span>\n        <md-button ng-if="!vm.reset" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="TOOLBAR.OLD_PASSWORD" required>\n        <div ng-messages="changePasswordForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="TOOLBAR.NEW_PASSWORD" required>\n        <div ng-messages="changePasswordForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLBAR.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="changePasswordForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="changePasswordForm.$invalid || changePasswordForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/layouts/vertical-navigation/toolbar.html",'<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="start center" flex>\n    <md-button id="navigation-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'navigation\')" hide-gt-sm aria-label="Toggle navigation" translate translate-attr-aria-label="TOOLBAR.TOGGLE_NAVIGATION">\n      <md-icon md-font-icon="icon-menu" class="icon"></md-icon>\n    </md-button>\n\n    <ms-shortcuts ng-if="!vm.isAgent()"></ms-shortcuts>\n\n    <div class="toolbar-separator"></div>\n\n    <div ng-if="vm.license.demo" class="blink md-padding">\n      <span class="md-warn-fg" translate="TOOLBAR.TRIAL_VERSION">Trial Version</span>\n    </div>\n\n    <div ng-if="vm.isAgent()" class="logo" layout-padding-left-8 layout="row" layout-align="start center">\n      <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n      <span ng-show="vm.isAgent() && (vm.user.showWebBar != 2)" class="logo-text text-truncate">{{ vm.getLogo() |\n        uppercase }}</span>\n    </div>\n\n    \x3c!-- phonebar directive WebRtc type--\x3e\n    <ms-phonebar class="ms-phonebar" ng-if="vm.isAgent() && (vm.user.showWebBar == 2)" conf="vm.conf" sessions="vm.webRTCSessions" flex></ms-phonebar>\n    \x3c!-- phonebar directive --\x3e\n  </div>\n\n  <div layout="row" layout-align="start center">\n\n    <md-progress-circular id="toolbar-progress" ng-if="$root.loadingProgress" class="md-accent" md-diameter="32">\n    </md-progress-circular>\n\n    \x3c!-- Pause Management --\x3e\n    <div ng-if="vm.isAgent() && (vm.user.showWebBar != 0)" layout="row" layout-align="end center">\n      <div class="toolbar-separator"></div>\n\n      <div class="border brad-5" layout="row" layout-align="center center" layout-margin>\n        <md-button ng-if="vm.user.voicePause" class="md-icon-button no-margin" ng-click="vm.unpause()">\n          <md-icon md-font-icon="icon-play-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.RESUME\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-button ng-disabled="vm.user.voicePause && \'DEFAULT PAUSE\' === vm.user.pauseType" class="md-icon-button no-margin" ng-click="vm.pause()">\n          <md-icon md-font-icon="icon-pause-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.PAUSE\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-menu>\n          <md-button aria-label="Pauses" class="md-icon-button no-margin" ng-click="$mdOpenMenu($event)">\n            <md-icon md-menu-origin md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-menu-content width="4">\n            <md-menu-item ng-if="!vm.pauses.length">\n              <md-button disabled="disabled">\n                <md-icon md-font-icon="icon-pause-octagon" md-menu-align-target></md-icon>\n                {{\'TOOLBAR.NO_PAUSES_AVAILABLE\' | translate}}\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-repeat="pause in vm.pauses">\n              <md-button ng-disabled="vm.user.voicePause && pause.name === vm.user.pauseType" ng-click="vm.pause(pause.name)">\n                <md-icon md-font-icon="icon-pause-circle" md-menu-align-target></md-icon>\n                {{pause.name}}\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n    \x3c!-- Pause Management --\x3e\n\n    <div class="h5 padding-10" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)">\n      <div layout="row" layout-align="space-between center">\n        <timer ng-if="vm.user.lastLoginAt" start-time="vm.user.lastLoginAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.LOGIN_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-timelapse" class="icon s16"></md-icon>\n      </div>\n      <div layout="row" layout-align="center center" ng-if="vm.user.voicePause">\n        <timer start-time="vm.user.lastPauseAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.PAUSE_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-coffee" class="icon s16"></md-icon>\n      </div>\n      <div ng-if="vm.user.voicePause">\n        <span class="blink red-fg">{{vm.user.pauseType || \'default\' | uppercase}}</span>\n      </div>\n    </div>\n\n    <div class="toolbar-separator" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)"></div>\n\n    <md-menu-bar id="user-menu">\n      <md-menu md-position-mode="left bottom">\n        <md-button class="user-button" ng-click="$mdOpenMenu()" aria-label="User settings" translate translate-attr-aria-label="TOOLBAR.USER_SETTINGS">\n          <div layout="row" layout-align="space-between center">\n            <div class="avatar-wrapper">\n              <img md-menu-align-target class="avatar" src="assets/images/avatars/profile.png" ng-if="!vm.user.userpic">\n              <img md-menu-align-target class="avatar" ng-src="api/users/{{vm.user.id}}/avatar" ng-if="vm.user.userpic">\n              <md-icon md-font-icon ng-class="vm.userStatus.icon" ng-style="{\'color\': vm.userStatus.color }" class="icon status s16"></md-icon>\n            </div>\n            <div layout="column" layout-align="center center" class="padding-horizontal-5">\n              <span class="font-size-14 md-subhead">{{vm.user.fullname}}</span>\n              <span class="font-size-12 md-subhead">{{vm.user.name}} &#60;{{vm.user.internal}}&#62;</span>\n            </div>\n\n            <md-icon md-font-icon="icon-chevron-down" class="icon s16" hide-xs></md-icon>\n          </div>\n        </md-button>\n\n        <md-menu-content width="3">\n          <md-menu-item ng-if="vm.user.showWebBar == 2 && vm.user.phoneBarEnableSettings" class="md-indent">\n            <md-icon md-font-icon="icon-cog" class="icon"></md-icon>\n            <md-button ng-click="vm.openSettings($event)" ng-disabled="!vm.license.webrtc"><span translate="TOOLBAR.SETTINGS">SETTINGS</span></md-button>\n          </md-menu-item>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-key-variant" class="icon"></md-icon>\n            <md-button ng-click="vm.changePassword($event)"><span translate="TOOLBAR.CHANGEPASSWORD">Change\n                Password</span></md-button>\n          </md-menu-item>\n\n          <md-menu-divider></md-menu-divider>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-logout" class="icon"></md-icon>\n            <md-button ng-click="vm.logout()">Logout</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </md-menu-bar>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.user.role === \'agent\' && vm.license.dialer" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.preview($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.contacts" class="md-accent-bg open-contact-count">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span translate="{{lang.translation}}">{{lang.title}}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">Preview</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div layout="row" ng-if="vm.preview">\n        <div class="md-padding md-margin" layout="column" flex="30">\n          <md-input-container ng-if="vm.preview.Contact.id" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.ID">ID</label>\n            <input type="text" ng-model="vm.preview.Contact.id" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.Queue.name" class="md-block no-margin">\n            <label translate="VOICE.QUEUE">Queue</label>\n            <input type="text" ng-model="vm.preview.Queue.name" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.List.name" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <input type="text" ng-model="vm.preview.List.name" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.Contact.tags && vm.preview.Contact.tags.length" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.TAGS">Tags</label>\n            <input type="text" ng-model="vm.preview.Contact.tags" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.Contact.Company && vm.preview.Contact.Company.name" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <input type="text" ng-model="vm.preview.Contact.Company.name" disabled="true">\n          </md-input-container>\n        </div>\n        <md-divider></md-divider>\n        <div class="md-padding md-margin" layout="column" flex="35">\n          <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && !vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n            <label>{{ \'CONTACTMANAGER.\' + key.toUpperCase() | translate}}</label>\n            <input type="text" ng-model="value" disabled="true" privacy=\'vm.currentUser.privacyEnabled && (key === "firstName" || key === "lastName" || key === "phone" || key === "mobile" || key === "email" || key === "fax") \' ng-cloak>\n          </md-input-container>\n        </div>\n        <div class="md-padding md-margin" layout="column" flex="35">\n          <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n            <label>{{ vm.customFieldsMap[key] || key }}</label>\n            <input type="text" ng-model="value" disabled="true">\n          </md-input-container>\n        </div>\n      </div>\n      <div layout="row" ng-if="!vm.preview">\n        <span>no contacts available</span>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n      <md-button class="md-icon-button md-primary" ng-hide="vm.hopperIds.length <= 1" ng-disabled="vm.disableGetContact" ng-click="vm.previousContact()" aria-label="PREVIOUSCONTACT" translate-attr-aria-label="TOOLS.PREVIOUSCONTACT">\n        <md-icon md-font-icon="icon-chevron-left"></md-icon>\n      </md-button>\n      <md-button class="md-fab green-bg" aria-label="CALL" translate-attr-aria-label="TOOLS.CALL" ng-disabled="vm.disable" ng-click="vm.originatePreview($event)">\n        <md-icon md-font-icon="icon-phone"></md-icon>\n      </md-button>\n      <md-button class="md-icon-button md-primary" ng-disabled="vm.disableGetContact" ng-click="vm.nextContact()" aria-label="NEXTCONTACT" translate-attr-aria-label="TOOLS.NEXTCONTACT">\n        <md-icon md-font-icon="icon-chevron-right"></md-icon>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>')}]);
\ No newline at end of file
+!function(){"use strict";angular.module("app.auth",[])}(),function(){"use strict";angular.module("app.core",["ngAnimate","ngAria","ngCookies","ngMessages","ngResource","ngSanitize","ngMaterial","pascalprecht.translate","ui.router","ui.router.state.events","gridster","ds.clock","angucomplete-alt"])}(),function(){"use strict";function e(e,n){e.state("app.errors_error-404",{url:"/errors/error-404",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-404":{templateUrl:"app/errors/404/error-404.html",controller:"Error404Controller as vm"}},params:{status:404,statusText:"",data:{},config:{}},bodyClass:"error-404"}),n.addPart("app/errors/404")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-404",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.errors_error-500",{url:"/errors/error-500",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-500":{templateUrl:"app/errors/500/error-500.html",controller:"Error500Controller as vm"}},params:{status:500,statusText:"",data:{},config:{}},bodyClass:"error-500"}),n.addPart("app/errors/500")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-500",[]).config(e)}(),function(){"use strict";angular.module("app.errors",["app.errors.error-404","app.errors.error-500"])}(),function(){"use strict";function e(e){e.addPart("app/footer")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.footer",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.forgot",{url:"/forgot",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.forgot":{templateUrl:"app/forgot/forgot.html",controller:"ForgotPasswordController as vm"}},bodyClass:"forgot"}),n.addPart("app/forgot")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.forgot",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/header")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.header",[]).config(e)}(),function(){"use strict";angular.module("motion",["angular-toasty","app.core","app.auth","app.navigation","app.toolbar","app.quick-panel","app.header","app.footer","app.dashboards","app.staff","app.contactmanager","app.voice","app.chat","app.mail","app.sms","app.openchannel","app.fax","app.tools","app.callysquare","app.analytics","app.integrations","app.settings","app.motiondialer","app.help","app.jscripty","app.marketplace","app.plugins","app.video","app.whatsapp","app.login","app.forgot","app.reset","app.errors"])}(),function(){"use strict";function e(e,n){e.state("app.login",{url:"/login?token&userId",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.login":{templateUrl:"app/login/login.html",controller:"LoginController as vm"}},bodyClass:"login"}),n.addPart("app/login")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.login",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.analytics",{abstract:!0,url:"/analytics"}).state("app.analytics.metrics",{url:"/metrics",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/metrics/metrics.html",controller:"MetricsController as vm"}},resolve:{metrics:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticMetric@get",{fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Metrics",fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1201})}]},authenticate:!0,permissionId:1201,bodyClass:"analytics"}).state("app.analytics.extractedReports",{url:"/extractedReports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/extractedReports/extractedReports.html",controller:"ExtractedReportsController as vm"}},resolve:{extractedReports:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticExtractedReport@get",{fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ExtractedReports",fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1202})}]},authenticate:!0,permissionId:1202,bodyClass:"analytics"}),n.addPart("app/main/apps/analytics")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.analytics",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.analytics.reports"]).config(e)}(),function(){"use strict";function e(e){e.state("app.analytics.reports",{url:"/reports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/reports.html",controller:"ReportsController as vm"}},resolve:{treeReports:["apiResolver",function(e){return e.resolve("analyticTreeReport@get",{fields:"id,tree",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"}).state("app.analytics.reports.edit",{url:"/:id?tab",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/edit/view.html",controller:"ReportController as vm"}},resolve:{report:["apiResolver","$stateParams","$q","describeTable",function(e,n,a,i){var s;return e.resolve("analyticCustomReport@get",{fields:"createdAt,updatedAt,id,name,description,table,conditions,joins",id:n.id}).then(function(e){var n=[];if((s=e).joins)try{s.joins=JSON.parse(s.joins);for(var t=0;t<s.joins.length;t+=1)n.push(i.getColumns(s.joins[t].foreignTable))}catch(e){console.log(e)}return a.all(n)}).then(function(e){for(var n=0;n<e.length;n+=1)s.joins[n].foreignTableFields=_.difference(_.keys(e[n]),["$promise","$resolved"]);return s})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"})}e.$inject=["$stateProvider"],angular.module("app.analytics.reports",["ngJsTree"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.callysquare",{abstract:!0,url:"/callysquare"}).state("app.callysquare.odbcs",{url:"/odbcs",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/odbcs/odbcs.html",controller:"OdbcsController as vm"}},resolve:{odbcs:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1101})}]},authenticate:!0,permissionId:1101,bodyClass:"callysquare"}).state("app.callysquare.squareRecordings",{url:"/squareRecordings",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",controller:"SquareRecordingsController as vm"}},resolve:{squareRecordings:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareRecording@get",{fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareRecordings",fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadCallySquareRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1102})}]},authenticate:!0,permissionId:1102,bodyClass:"callysquare"}),n.addPart("app/main/apps/callysquare")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.callysquare",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.callysquare.projects"]).config(e)}(),function(){"use strict";function e(e){e.state("app.callysquare.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/projects.html",controller:"ProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"}).state("app.callysquare.projects.edit",{url:"/:id",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/edit/view.html",controller:"ProjectController as vm"}},params:{crudPermissions:void 0},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("squareProject@get",{id:n.id})}],users:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,role",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Users",mergeResources:!0,fields:"id,fullname,role",sort:"name",nolimit:!0})}],trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",sort:"name",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",type:"inbound",fields:"id,name",sort:"name",nolimit:!0})}],sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"id,name",sort:"name",nolimit:!0})}],variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"id,name",sort:"name",nolimit:!0})}],databases:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"id,name",sort:"name",nolimit:!0})}],projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name",sort:"name",nolimit:!0})}],contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"id,name",sort:"name",nolimit:!0})}],intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"id,name,IntervalId",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"id,name,IntervalId",sort:"name",nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"name",nolimit:!0})}],templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"id,name",sort:"name",nolimit:!0})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"name",nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"name",nolimit:!0})}],pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"id,name",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"})}e.$inject=["$stateProvider"],angular.module("app.callysquare.projects",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.chat",{abstract:!0,url:"/chat"}).state("app.chat.chatQueues",{url:"/chatQueues",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/chatQueues.html",controller:"ChatQueuesController as vm"}},resolve:{chatQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatQueues.edit",{url:"/:id?tab",params:{chatQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/edit/view.html",controller:"ChatQueueController as vm"}},resolve:{chatQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatWebsites",{url:"/chatWebsites",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/chatWebsites.html",controller:"ChatWebsitesController as vm"}},resolve:{chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}).state("app.chat.chatWebsites.edit",{url:"/:id?tab",params:{chatWebsite:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/edit/view.html",controller:"ChatWebsiteController as vm"}},resolve:{chatWebsite:["apiResolver","$stateParams",function(e,n){return e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),n.addPart("app/main/apps/chat")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.chat",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.chat.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.chat.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/chat/views/realtime/realtime.html",controller:"ChatRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:510})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.agents",{url:"/agents",controller:"AgentsChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",controller:"QueuesChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return a=e,n.resolve("rpc@getVoiceQueues")}).then(function(e){if(e)for(var n,t=0;t<e.rows.length;t+=1)(n=_.find(a.rows,{id:e.rows[t].id}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged","abandoned"]));return a})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:100})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth",function(e,n,t){return t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,header_offline,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardTranscript,forwardOffline,forwardOfflineAddress,IntervalId,timezone,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.mail",{url:"/mail",data:{selectedTab:3},views:{mail:{templateUrl:"app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",controller:"UserMailDashboardGeneralController as vm"}},resolve:{mailInteractions:["apiResolver",function(e){return e.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.sms",{url:"/sms",data:{selectedTab:4},views:{sms:{templateUrl:"app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",controller:"UserSmsDashboardGeneralController as vm"}},resolve:{smsInteractions:["apiResolver",function(e){return e.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,smsMethod,applicationId,accountId,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.openchannel",{url:"/openchannel",data:{selectedTab:5},views:{openchannel:{templateUrl:"app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",controller:"UserOpenchannelDashboardGeneralController as vm"}},resolve:{openchannelInteractions:["apiResolver",function(e){return e.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,description,receiveUri,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.fax",{url:"/fax",data:{selectedTab:6},views:{fax:{templateUrl:"app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",controller:"UserFaxDashboardGeneralController as vm"}},resolve:{faxInteractions:["apiResolver",function(e){return e.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,acceptMethod,acceptUrl,rejectMethod,rejectUrl,closeMethod,closeUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.whatsapp",{url:"/whatsapp",data:{selectedTab:7},views:{whatsapp:{templateUrl:"app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",controller:"UserWhatsappDashboardGeneralController as vm"}},resolve:{whatsappInteractions:["apiResolver",function(e){return e.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,phone,type,accountSid,authId,authToken,whatsappMethod,username,password,senderString,deliveryReport,waitForTheAssignedAgent,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general.user",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.fax",{abstract:!0,url:"/fax"}).state("app.fax.faxQueues",{url:"/faxQueues",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/faxQueues.html",controller:"FaxQueuesController as vm"}},resolve:{faxQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxQueues.edit",{url:"/:id?tab",params:{faxQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/edit/view.html",controller:"FaxQueueController as vm"}},resolve:{faxQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxAccounts",{url:"/faxAccounts",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/faxAccounts.html",controller:"FaxAccountsController as vm"}},resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}).state("app.fax.faxAccounts.edit",{url:"/:id?tab",params:{faxAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/edit/view.html",controller:"FaxAccountController as vm"}},resolve:{faxAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),n.addPart("app/main/apps/fax")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.fax",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.fax.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.fax.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/fax/views/realtime/realtime.html",controller:"FaxRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:910})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.agents",{url:"/agents",controller:"AgentsFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.trunks",{url:"/trunks",controller:"TrunksFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",controller:"QueuesFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dynamics365Accounts",fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts.edit",{url:"/:id?tab",params:{dynamics365Account:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",controller:"Dynamics365AccountController as vm"}},resolve:{dynamics365Account:["apiResolver","$stateParams",function(e,n){return e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts",{url:"/servicenowAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",controller:"ServicenowAccountsController as vm"}},resolve:{servicenowAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ServicenowAccounts",fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts.edit",{url:"/:id?tab",params:{servicenowAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/view.html",controller:"ServicenowAccountController as vm"}},resolve:{servicenowAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts",{url:"/freshsalesAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",controller:"FreshsalesAccountsController as vm"}},resolve:{freshsalesAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshsalesAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts.edit",{url:"/:id?tab",params:{freshsalesAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",controller:"FreshsalesAccountController as vm"}},resolve:{freshsalesAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}),n.addPart("app/main/apps/integrations")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.integrations",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.jscripty",{abstract:!0,url:"/jscripty"}).state("app.jscripty.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/projects.html",controller:"JscriptyProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}).state("app.jscripty.projects.edit",{url:"/:id?tab",params:{project:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/edit/view.html",controller:"JscriptyProjectController as vm"}},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),n.addPart("app/main/apps/jscripty")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.jscripty",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.mail",{abstract:!0,url:"/mail"}).state("app.mail.mailQueues",{url:"/mailQueues",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/mailQueues.html",controller:"MailQueuesController as vm"}},resolve:{mailQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailQueues.edit",{url:"/:id?tab",params:{mailQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/edit/view.html",controller:"MailQueueController as vm"}},resolve:{mailQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailAccounts",{url:"/mailAccounts",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/mailAccounts.html",controller:"MailAccountsController as vm"}},resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailAccounts.edit",{url:"/:id?tab",params:{mailAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/edit/view.html",controller:"MailAccountController as vm"}},resolve:{mailAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailSubtatuses",{url:"/mailSubtatuses",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",controller:"MailSubstatusesController as vm"}},resolve:{mailSubtatuses:["apiResolver","Auth",function(e,n){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),n.addPart("app/main/apps/mail")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.mail",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.mail.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.mail.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/mail/views/realtime/realtime.html",controller:"MailRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:610})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.agents",{url:"/agents",controller:"AgentsMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",controller:"QueuesMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.queueCampaigns.edit",{url:"/:id?tab",params:{queueCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",controller:"QueueCampaignController as vm"}},resolve:{queueCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns",{url:"/ivrCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",controller:"IvrCampaignsController as vm"}},resolve:{ivrCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns.edit",{url:"/:id?tab",params:{ivrCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",controller:"IvrCampaignController as vm"}},resolve:{ivrCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}),n.addPart("app/main/apps/motiondialer")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.motiondialer",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.motiondialer.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/realtime/realtime.html",controller:"MotionDialerRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1510})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.agents",{url:"/agents",controller:"AgentsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",controller:"QueuesMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.ivr_campaigns",{url:"/ivr_campaigns",controller:"IvrCampaignsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",resolve:{campaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,permissionId:1510})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.openchannel",{abstract:!0,url:"/openchannel"}).state("app.openchannel.openchannelQueues",{url:"/openchannelQueues",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",controller:"OpenchannelQueuesController as vm"}},resolve:{openchannelQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelQueues.edit",{url:"/:id?tab",params:{openchannelQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/view.html",controller:"OpenchannelQueueController as vm"}},resolve:{openchannelQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts",{url:"/openchannelAccounts",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",controller:"OpenchannelAccountsController as vm"}},resolve:{openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts.edit",{url:"/:id?tab",params:{openchannelAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",controller:"OpenchannelAccountController as vm"}},resolve:{openchannelAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",controller:"AgentsOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",controller:"QueuesOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.settings",{abstract:!0,url:"/settings"}).state("app.settings.generals",{url:"/generals",views:{"content@app":{templateUrl:"app/main/apps/settings/views/generals/generals.html",controller:"GeneralsController as vm"}},resolve:{generals:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,min_internal,securePassword,callRecordingEncryption,chatTimeout,phoneBarAutoUpdater,defaultScreenRecordingPath,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,searchOnEnterKey,messagesAlignment,phoneBarRememberMeEnabled,rtlSupport,allowedLoginAttempts,blockDuration,loginMailFrequency,language,bucket,transcribe,transcribeRegion,transcribeAccountId,sentiment,sentimentRegion,sentimentAccountId,googleSsoEnabled,enforcePasswordHistory,passwordHistoryLimit,enablePrivacyPolicyEmail,privacyPolicyEmail,enablePrivacyPolicyName,privacyPolicyName,enablePrivacyPolicyNumber,privacyPolicyNumber,chatInteractionsReloadTimeout,mailInteractionsReloadTimeout,openchannelInteractionsReloadTimeout,smsInteractionsReloadTimeout,whatsappInteractionsReloadTimeout,stopRecordingOnTransfer",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.smtps",{url:"/smtps",views:{"content@app":{templateUrl:"app/main/apps/settings/views/smtps/smtps.html",controller:"SmtpController as vm"}},resolve:{smtps:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.networks",{url:"/networks",views:{"content@app":{templateUrl:"app/main/apps/settings/views/networks/networks.html",controller:"NetworksController as vm"}},resolve:{networks:["apiResolver",function(e){return e.resolve("network@get",{fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.customizations",{url:"/customizations",views:{"content@app":{templateUrl:"app/main/apps/settings/views/customizations/customizations.html",controller:"CustomizationsController as vm"}},resolve:{customizations:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,defaultLogo,defaultLoginLogo,defaultFavicon,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.cloudProviders",{url:"/cloudProviders",views:{"content@app":{templateUrl:"app/main/apps/settings/views/cloudProviders/cloudProviders.html",controller:"CloudProvidersController as vm"}},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.settings",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.settings.updates","app.settings.license","app.settings.system"]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.license",{url:"/license",views:{"content@app":{templateUrl:"app/main/apps/settings/views/license/license.html",controller:"LicenseController as vm"}},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.license",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.system",{url:"/system?tab",views:{"content@app":{templateUrl:"app/main/apps/settings/views/system/system.html",controller:"SystemController as vm"}},resolve:{system:["apiResolver",function(e){return e.resolve("system@get")}],processes:["apiResolver",function(e){return e.resolve("pm2@get")}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.system",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.updates",{url:"/updates",views:{"content@app":{templateUrl:"app/main/apps/settings/views/updates/updates.html",controller:"UpdatesController as vm"}},resolve:{version:["apiResolver",function(e){return e.resolve("version@get",{latest:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1400})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.updates",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.sms",{abstract:!0,url:"/sms"}).state("app.sms.smsQueues",{url:"/smsQueues",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/smsQueues.html",controller:"SmsQueuesController as vm"}},resolve:{smsQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsQueues.edit",{url:"/:id?tab",params:{smsQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/edit/view.html",controller:"SmsQueueController as vm"}},resolve:{smsQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsAccounts",{url:"/smsAccounts",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/smsAccounts.html",controller:"SmsAccountsController as vm"}},resolve:{smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}).state("app.sms.smsAccounts.edit",{url:"/:id?tab",params:{smsAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/edit/view.html",controller:"SmsAccountController as vm"}},resolve:{smsAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",controller:"AgentsSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",controller:"QueuesSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver","Auth",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",role:"admin,user",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.users.edit",{url:"/:id?tab",params:{user:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/edit/view.html",controller:"UserController as vm"}},resolve:{user:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.agents",{url:"/agents",views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/agents.html",controller:"AgentsController as vm"}},resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",role:"agent",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",role:"agent",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.agents.edit",{url:"/:id?tab",params:{agent:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/edit/view.html",controller:"AgentController as vm"}},resolve:{agent:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.telephones",{url:"/telephones",views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/telephones.html",controller:"TelephonesController as vm"}},resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.telephones.edit",{url:"/:id?tab",params:{telephone:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/edit/view.html",controller:"TelephoneController as vm"}},resolve:{telephone:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.teams",{url:"/teams",views:{"content@app":{templateUrl:"app/main/apps/staff/views/teams/teams.html",controller:"TeamsController as vm"}},resolve:{teams:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("team@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Teams",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:204})}]},authenticate:!0,permissionId:204,bodyClass:"staff"}).state("app.staff.userProfiles",{url:"/userProfiles",views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/userProfiles.html",controller:"UserProfilesController as vm"}},resolve:{userProfiles:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}).state("app.staff.userProfiles.edit",{url:"/:id?tab",params:{userProfile:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/edit/view.html",controller:"UserProfileController as vm"}},resolve:{userProfile:["apiResolver","$stateParams",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}),n.addPart("app/main/apps/staff")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.staff",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.tools",{abstract:!0,url:"/tools"}).state("app.tools.cannedAnswers",{url:"/cannedAnswers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",controller:"CannedAnswersController as vm"}},resolve:{cannedAnswers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cannedAnswer@get",{fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CannedAnswers",fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1001})}]},authenticate:!0,permissionId:1001,bodyClass:"tools"}).state("app.tools.customDashboards",{url:"/customDashboards",views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/customDashboards.html",controller:"CustomDashboardsController as vm"}},resolve:{customDashboards:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CustomDashboards",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.customDashboards.edit",{url:"/:id?tab",params:{customDashboard:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/edit/view.html",controller:"CustomDashboardController as vm"}},resolve:{customDashboard:["apiResolver","$stateParams",function(e,n){return e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.intervals",{url:"/intervals",views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/intervals.html",controller:"IntervalsController as vm"}},resolve:{intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.intervals.edit",{url:"/:id?tab",params:{interval:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/edit/view.html",controller:"IntervalController as vm"}},resolve:{interval:["apiResolver","$stateParams",function(e,n){return e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.pauses",{url:"/pauses",views:{"content@app":{templateUrl:"app/main/apps/tools/views/pauses/pauses.html",controller:"PausesController as vm"}},resolve:{pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1005})}]},authenticate:!0,permissionId:1005,bodyClass:"tools"}).state("app.tools.schedules",{url:"/schedules",views:{"content@app":{templateUrl:"app/main/apps/tools/views/schedules/schedules.html",controller:"SchedulesController as vm"}},resolve:{schedules:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("schedule@get",{fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Scheduler",fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1006})}]},authenticate:!0,permissionId:1006,bodyClass:"tools"}).state("app.tools.sounds",{url:"/sounds",views:{"content@app":{templateUrl:"app/main/apps/tools/views/sounds/sounds.html",controller:"SoundsController as vm"}},resolve:{sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1007})}]},authenticate:!0,permissionId:1007,bodyClass:"tools"}).state("app.tools.tags",{url:"/tags",views:{"content@app":{templateUrl:"app/main/apps/tools/views/tags/tags.html",controller:"TagsController as vm"}},resolve:{tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1008})}]},authenticate:!0,permissionId:1008,bodyClass:"tools"}).state("app.tools.templates",{url:"/templates",views:{"content@app":{templateUrl:"app/main/apps/tools/views/templates/templates.html",controller:"TemplatesController as vm"}},resolve:{templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1009})}]},authenticate:!0,permissionId:1009,bodyClass:"tools"}).state("app.tools.trunks",{url:"/trunks",views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/trunks.html",controller:"TrunksController as vm"}},resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.trunks.edit",{url:"/:id?tab",params:{trunk:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/edit/view.html",controller:"TrunkController as vm"}},resolve:{trunk:["apiResolver","$stateParams",function(e,n){return e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.variables",{url:"/variables",views:{"content@app":{templateUrl:"app/main/apps/tools/views/variables/variables.html",controller:"VariablesController as vm"}},resolve:{variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1012})}]},authenticate:!0,permissionId:1012,bodyClass:"tools"}),n.addPart("app/main/apps/tools")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.tools",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.tools.dispositions","app.tools.triggers"]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.dispositions",{url:"/dispositions",views:{"content@app":{templateUrl:"app/main/apps/tools/views/dispositions/dispositions.html",controller:"DispositionsController as vm"}},resolve:{dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1002})}]},authenticate:!0,permissionId:1002,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.dispositions",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.triggers",{url:"/triggers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/triggers.html",controller:"TriggersController as vm"}},resolve:{triggers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Triggers",fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"}).state("app.tools.triggers.edit",{url:"/:id?tab",params:{trigger:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/edit/view.html",controller:"TriggerController as vm"}},resolve:{trigger:["apiResolver","$stateParams",function(e,n){return e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.triggers",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.video",{abstract:!0,url:"/video"}).state("app.video.screenRecordings",{url:"/screenRecordings",views:{"content@app":{templateUrl:"app/main/apps/video/views/screenRecordings/screenRecordings.html",controller:"ScreenRecordingsController as vm"}},resolve:{screenRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("screenRecording@get",{fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ScreenRecordings",fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadScreenRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2001})}]},authenticate:!0,permissionId:2001,bodyClass:"video"}),n.addPart("app/main/apps/video")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.video",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.inboundRoutes",{url:"/inboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",controller:"InboundRoutesController as vm"}},resolve:{inboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InboundRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"}).state("app.voice.inboundRoutes.edit",{url:"/:id?tab",params:{inboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/edit/view.html",controller:"InboundRouteController as vm"}},resolve:{inboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.inboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.internalRoutes",{url:"/internalRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/internalRoutes.html",controller:"InternalRoutesController as vm"}},resolve:{internalRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InternalRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"}).state("app.voice.internalRoutes.edit",{url:"/:id?tab",params:{internalRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/edit/view.html",controller:"InternalRouteController as vm"}},resolve:{internalRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.internalRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.outboundRoutes",{url:"/outboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",controller:"OutboundRoutesController as vm"}},resolve:{outboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OutboundRoutes",fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"}).state("app.voice.outboundRoutes.edit",{url:"/:id?tab",params:{outboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/edit/view.html",controller:"OutboundRouteController as vm"}},resolve:{outboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.outboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/voice/views/realtime/realtime.html",controller:"VoiceRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:411})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.agents",{url:"/agents",controller:"AgentsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.telephones",{url:"/telephones",controller:"TelephonesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/telephones/view.html",resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}],rpcTelephones:["apiResolver",function(e){return e.resolve("rpc@getTelephones")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.trunks",{url:"/trunks",controller:"TrunksVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",controller:"QueuesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",controller:"AgentsWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",role:"agent",sort:"fullname",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],rpcAgents:["apiResolver",function(e){return e.resolve("rpc@getAgents")}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",controller:"QueuesWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";function e(e){e.interceptors.push("authInterceptor")}e.$inject=["$httpProvider"],angular.module("app.auth").config(e)}(),function(){"use strict";function e(e){e.onBefore({to:function(e){return!0===e.authenticate}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;return n.isLoggedIn()?n.retrieveUser().catch(function(){return t.target("app.login",void 0,{reload:!0})}):t.target("app.login",void 0,{reload:!0})}),e.onStart({to:function(e){return"app.login"!==e.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("agent")&&"app.dashboards.general"!=a.name)return t.target("app.dashboards.general",{redirect:!1},{reload:!0})}),e.onFinish({to:function(e){return e.permissionId}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("user")){if(!n.hasPermission(a.permissionId))return t.target("app.dashboards.general",{redirect:!1},{reload:!0});var i=e.params().id?Number(e.params().id):void 0;if(i)return n.hasResourcePermission(a.permissionId,i).catch(function(){return t.target(a.parent.name,{redirect:!1},{reload:!0})})}}),e.onFinish({to:function(e){return"app.dashboards.general"===e.parent.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;e.$to();if(n.hasRole("user")&&!n.hasPermission(100))return t.target("app.dashboards.general",{redirect:!1},{reload:!0})})}e.$inject=["$transitions"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,i,o,n,s,r,l){var d;return{getToken:e,getCurrentUser:function(){return d},getPermissions:h,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){g()?a(!0):r.userProfileSection.get({userProfileId:d.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a(!1);else{var t=_.filter(n,function(e){return e.enabled});a(_.some(t,["category",i]))}}).catch(function(e){n(e)})})},hasModulesPermissions:function(s){return o(function(a,n){var i={};g()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:d.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a({});else{var t=_(n).filter(function(e){return e.enabled&&_.includes(s,e.category)}).uniqBy(function(e){return e.category}).map(function(e){return e.category}).value();t.forEach(function(e){i[e]=!0}),a(i)}}).catch(function(e){n(e)})})},hasRole:function(e){return!!d&&d.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:d.userProfileId,sectionId:e}).$promise.then(function(e){var n=e.rows[0];if(n.autoAssociation)return a();var t=l.getActiveItem().node;return t.permissions&&!1===t.permissions.association?a():r.userProfileResource.get({sectionId:n.id,nolimit:!0}).$promise.then(function(e){var n=e.rows;_.some(n,["resourceId",s])?a():i()})}).catch(function(e){i("Error retrieving user profile permissions",e)})})},hasSectionPermissions:function(a){return o(function(e,n){var t={};return f().then(function(){_.includes(d.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!g())return f().then(function(){a.forEach(function(e){_.includes(d.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:p,isAdmin:g,isLoggedIn:function(){return!!e()},isTelephone:function(){return"telephone"===d.role},isUser:v,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return i.put("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(d=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),b("LOCAL_LOGIN")}).then(function(){if(p()&&1===d.showWebBar&&d.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return p()&&0!==d.showWebBar?c(e):g()||v()?m(!0):void 0}).then(function(e){d=_.assign(d,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(u(),e()):o.resolve().then(function(){return p()&&0!==d.showWebBar?o(function(e,n){r.user.logout({id:d.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):g()||v()?m(!1):void 0}).then(function(){u(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return g()?{readOnly:!1,canEdit:!0,canDelete:!0}:e?{readOnly:!(!_.includes(e,"r")||1!==e.length),canEdit:!!_.includes(e,"e"),canDelete:!!_.includes(e,"d")}:{readOnly:!0,canEdit:!1,canDelete:!1}},queueLogin:c,reloadPermissions:f,removeCookies:u,retrieveUser:function(){return o(function(n,t){r.user.whoami().$promise.then(function(n){return"user"===n.role?h(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(d=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){d=_.merge(d,e)},getAuthenticationType:function(){return n.localStorage["motion.authenticationtype"]||"NONE"},loginSSO:function(e){return b("SSO_LOGIN"),"/api/auth/"+e}};function e(){return i.get("motion.token")}function c(e){return o(function(n,t){r.user.login({id:d.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function m(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:d.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function u(){i.remove("motion.token"),d&&(n.localStorage.removeItem("motion.user:"+d.id),n.localStorage.removeItem("motion.authenticationtype"),d=null)}function p(){return"agent"===d.role}function g(){return"admin"===d.role}function v(){return"user"===d.role}function t(e){return!!d&&_.includes(d.permissions,e)}function h(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function f(){return o(function(n,t){h(d.userProfileId).then(function(e){d.permissions=e,n()}).catch(function(e){t(e)})})}function b(e){n.localStorage["motion.authenticationtype"]=e}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";angular.module("app.core").provider("motionConfig",function(){var t={disableCustomScrollbars:!1,disableMdInkRippleOnMobile:!0,disableCustomScrollbarsOnMobile:!0};this.config=function(e){t=angular.extend({},t,e)},this.$get=function(){var e={getConfig:function(e){if(angular.isUndefined(t[e]))return!1;return t[e]},setConfig:function(e,n){t[e]=n}};return e}})}(),function(){"use strict";function e(e,n,t,a){n.debugEnabled(!0),e.config({tabindex:!1}),a.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0}),t.config({wheelPropagation:!0})}e.$inject=["$ariaProvider","$logProvider","msScrollConfigProvider","motionConfigProvider"],angular.module("app.core").config(e)}(),function(){"use strict";function e(e,n,t){(n.generate(),t.getConfig("disableMdInkRippleOnMobile")&&e.isMobile())&&angular.element("body").attr("md-no-ink",!0);e.isMobile()&&angular.element("html").addClass("is-mobile");var a=e.detectBrowser();if(a){var i=a.browser+" "+a.version+" "+a.os;angular.element("html").addClass(i)}}e.$inject=["msUtils","motionGenerator","motionConfig"],angular.module("app.core").run(e)}(),function(){"use strict";function e(n,e,t,a,i,s){var l=this;function o(){var e=_.filter(l.searchOptions.conditions,["disabled",!1]),o=[],r="";if(_(e).groupBy("name").forEach(function(e){var n=e[0],t=1<e.length,a=n.query.column;if(t){var i=_(e).groupBy(function(e){return e.query.operator}).mapValues(function(e){return _.chain(e).map(function(e){return e.query.value}).flattenDeep().value()}).value(),s=[];_.keys(i).forEach(function(e){var n=i[e],t=e;_.includes(["$between","$in","$notIn"],e)?t+="["+n+"]":n.forEach(function(e){t+="["+e+"]"}),s.push(t)}),r+=a+":="+s.join(":=")}else r=a+":="+n.query.operator+"["+n.query.value+"]";o.push(r)}),0!==o.length){var n="["+l.searchOptions.matchType+"]";return n+=o.join("||")}}function r(){var e=n.localStorage.getItem("motion2."+s+":"+l.currentUser.id);return e?JSON.parse(e):{}}function d(e){n.localStorage.setItem("motion2."+s+":"+l.currentUser.id,JSON.stringify(e))}function c(){if(s){var e=r();e.advancedSearch=_.omit(l.searchOptions,"fields"),d(e)}}function m(){return!!r().advancedSearch}l.currentUser=t.getCurrentUser(),l.searchOptions={matchType:"$and",conditions:[],fields:i},l.toolbarColor=a,l.onInit=function(){if(s){var e=r();e.hasOwnProperty("advancedSearch")&&(l.searchOptions=_.merge(l.searchOptions,e.advancedSearch))}},l.applyFilter=function(){c(),e.hide({apply:!0,value:o()})},l.clearConditions=function(){l.searchOptions.conditions=[],function(){if(s){var e=r();delete e.advancedSearch,e.query&&delete e.query.search,d(e)}}()},l.minimize=function(){c(),e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})},l.close=function(){e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})}}e.$inject=["$window","$mdDialog","Auth","color","fields","storagePath"],angular.module("app.core").controller("AdvancedSearchController",e)}(),function(){"use strict";function e(a){return{restrict:"A",link:function(e,n,t){e.$watch(t.focusOn,function(e){a(function(){e?n[0].focus():n[0].blur()})})}}}e.$inject=["$timeout"],angular.module("app.core").directive("focusOn",e)}(),function(){"use strict";function e(o,l,d){return{restrict:"E",compile:function(e,n){var s;return n.code||(s=e.html(),e.empty()),function(t,a,r){r.code&&(s=t.$eval(r.code));var i=t.$eval(r.shouldInterpolate);l.when(s).then(function(e){if(e){i&&(e=d(e)(t));var n=angular.element('<pre><code class="highlight" ng-non-bindable></code></pre>');a.append(n),o(function(){!function(e,n){var t=n.find("code"),a=e.split("\n"),i=(a=a.filter(function(e){return e.trim().length}))[0].match(/^\s*/)[0],s=new RegExp("^"+i);a=a.map(function(e){return e.replace(s,"").replace(/\s+$/,"")});var o=hljs.highlight(r.language||r.lang,a.join("\n"),!0);o.value=o.value.replace(/=<span class="hljs-value">""<\/span>/gi,"").replace("<head>","").replace("<head/>",""),t.append(o.value).addClass("highlight")}(e,n)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),function(){"use strict";function e(a,i,s,o){var r=this;function n(){var a=r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators),i=r.selectedField.options&&!_.isEmpty(r.selectedField.options.excludedOperators);r.availableOperators=_.filter(r.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,r.selectedField.type);n.isExtra=a&&_.some(r.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,r.selectedField.type)||i&&_.includes(r.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function t(){!r.value||_.isArray(r.value)&&_.isEmpty(r.value)?r.isValidCondition=!1:r.selectedOperator&&"$between"===r.selectedOperator.type?r.isValidCondition=!(!r.endRangeValue||!r.isValidRange):r.isValidCondition=!0}function e(){"number"===r.selectedField.type?_.isNumber(r.endRangeValue)?r.isValidRange=Number(r.endRangeValue)>Number(r.value):r.isValidRange=!0:"date"===r.selectedField.type&&(r.maxDateRange=moment(r.endRangeValue).subtract(1,"day"),r.isValidRange=!0),t()}function l(){var e=c();r.options.conditions.push(e),u()}function d(){var e=c(),n=_.findIndex(r.options.conditions,"style");r.options.conditions.splice(n,1,e),u(),r.pendingCondition.style=null,r.pendingCondition=void 0}function c(){return{name:r.selectedField.name,operator:a.instant("DASHBOARDS."+r.selectedOperator.translate),value:r.value,endValue:r.endRangeValue,displayValue:m(r.value),displayEndValue:m(r.endRangeValue),query:{column:r.selectedField.column,operator:r.selectedOperator.type,value:function(){var e,n=r.value,t=r.endRangeValue;switch(r.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===r.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===r.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=r.selectedField.options.field||"id";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=r.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function m(e){var n;if(e){switch(r.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===r.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=r.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function u(){r.value=null,r.endRangeValue=null,r.minDateRange=null,r.maxDateRange=null,r.isValidCondition=!1}r.operators=r.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],r.addCondition=l,r.editCondition=function(e){r.pendingCondition=e,r.pendingCondition.style="md-amber-200-bg",r.selectedField=_.find(r.options.fields,["name",r.pendingCondition.name]),n(),r.selectedOperator=_.find(r.availableOperators,["type",r.pendingCondition.query.operator]),"date"===r.selectedField.type&&"string"==typeof r.pendingCondition.value?(r.value=new Date(r.pendingCondition.value),r.minDateRange=moment(r.value).add(1,"day"),r.endRangeValue=r.pendingCondition.endValue?new Date(r.pendingCondition.endValue):void 0):(r.value=r.pendingCondition.value,r.endRangeValue=r.pendingCondition.endValue);r.isValidRange=!0,r.isValidCondition=!0},r.updateCondition=d,r.cancelUpdateCondition=function(){r.pendingCondition.style=null,r.pendingCondition=void 0},r.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},r.removeCondition=function(){_.isEmpty(r.options.conditions)&&r.clearFilter()},r.getValues=function(){var n=angular.copy(r.selectedField.options.route);if("autocomplete"===r.selectedField.type)for(var e=0;e<Object.keys(n.params).length;e++){var t=Object.keys(n.params)[e];"@autocomplete"===n.params[t]&&(n.params[t]=r.searchText)}{if(!r.selectedField.values)return s[n.model][n.action](n.params).$promise.then(function(e){if("autocomplete"!==r.selectedField.type)return r.selectedField.values=e.rows;var n=r.searchText?_.filter(e.rows,function(e){e.displayValue="";for(var n=0;n<r.selectedField.options.searchFields.length;n++){var t=r.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),_.includes(e.displayValue.toLowerCase(),r.searchText.toLowerCase())}):[];return i.when(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})});r.selectedField.values.forEach(function(e){e.translate&&(e.name=a.instant(e.translate))})}},r.onFieldChange=function(){r.value=void 0,r.endRangeValue=void 0,r.searchText=void 0,r.isValidCondition=!1,n(),r.autoSelectOperator=1===r.availableOperators.length,r.autoSelectOperator||(r.selectedOperator=void 0)},r.onOperatorChange=function(e){r.isValidRange=!0,r.selectedOperator&&(e?e.applyTo?0<_.difference(r.selectedOperator.applyTo,e.applyTo).length&&(r.value=null):r.selectedOperator.applyTo&&(r.value=null):r.value=null,"between"!=r.selectedOperator.type&&(r.endRangeValue=null),r.selectedField.options&&!_.isEmpty(r.selectedField.options.extraOperators)&&(r.selectedOperator.isExtra=_.some(r.selectedField.options.extraOperators,function(e){return e===r.selectedOperator.type})));t()},r.onValueChange=function(){r.selectedOperator&&"$between"===r.selectedOperator.type?"number"===r.selectedField.type?e():"date"===r.selectedField.type&&(r.minDateRange=moment(r.value).add(1,"day"),t()):t()},r.checkRange=e,r.handleKeyboardAction=function(){r.pendingCondition?d():l()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('<div layout="row" class="spinner-overlay" layout-sm="column" layout-align="center center" aria-label="wait"><md-progress-circular md-mode="indeterminate"></md-progress-circular></div>')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&n.push(e[s]);for(s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=n}o.options.transferCallback&&o.options.transferCallback(i,a)}o.canTransfer=function(e,n,t){if(void 0!==e.isValid&&e.isValid)return t?a(n.selectedItems,n.items,n.selectedItems.indexOf(e),t):a(n.items,n.selectedItems,n.items.indexOf(e),t)},o.transfer=a,o.getLine=function(e,n){var t="";if(_.isNil(n))return t;{if(_.isArray(n)){for(var a=0;a<n.length;a++)t+=" "+(e[n[a]]?e[n[a]]:"");return t}return e[n]?e[n]:""}}}angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"=",readOnly:"=",addDisabled:"<"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html"}})}(),function(){"use strict";function e(a){return{restrict:"E",replace:!0,scope:{onReply:"&",ngModel:"=",ctrlMethods:"=",pickerPosition:"=",search:"=",recentEmojis:"=",placeholder:"="},template:'<textarea class="emojionearea"></textarea>',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0<n.selectedIndex&&angular.isDefined(n.forms[n.selectedIndex-1])&&n.forms[n.selectedIndex-1].$invalid},n.formsIncomplete=function(){for(var e=0;e<n.forms.length;e++)if(n.forms[e].$invalid)return!0;return!1},n.resetForm=function(){for(var e=n.selectedIndex=0;e<n.forms.length;e++)n.forms[e].$setPristine(),n.forms[e].$setUntouched()}}).directive("msFormWizard",function(){return{restrict:"E",scope:!0,controller:"MsFormWizardController as msWizard",compile:function(e){return e.addClass("ms-form-wizard"),function(){}}}}).directive("msFormWizardForm",function(){return{restrict:"A",require:["form","^msFormWizard"],compile:function(e){return e.addClass("ms-form-wizard-form"),function(e,n,t,a){var i=a[0],s=a[1];s.registerForm(i)}}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{onClose:"&"},transclude:!0,templateUrl:"app/core/directives/ms-info-bar/ms-info-bar.html",link:function(e,n){var t=i.find("ms-info-bar-active"),a="ms-info-bar-active";t.addClass(a),e.removeInfoBar=function(){t.removeClass(a),n.remove(),e.onClose&&e.onClose(),e.$destroy()}}}}e.$inject=["$document"],angular.module("app.core").directive("msInfoBar",e)}(),function(){"use strict";function e(r,a,l,e){var d=this,n={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},t=!0;function i(){t&&e.cancel(t),t=e(function(){!function(){d.containerPos=d.container[0].getBoundingClientRect(),function(){d.columnCount=d.options.columnCount,l("gt-md")?d.columnCount=d.options.columnCount:l("md")?d.columnCount=d.columnCount>d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n<d.items.length;n++){var t,a,i,s,o=d.items[n];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=n%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,t=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+t+"px,"+a+"px,0px)"}),o.addClass("placed"),o.scope()&&o.scope().$broadcast("msMasonryItem:finishReLayout")}}(),r.$broadcast("msMasonry:relayoutFinished")},d.options.reLayoutDebounce)}d.options=null,d.container=[],d.containerPos="",d.columnWidth="",d.items=[],d.reLayout=i,d.initialize=function(){d.options=d.options?angular.extend(n,d.options):n,r.$watch(function(){return d.container.width()},function(e,n){e!==n&&i()})},d.waitImagesLoaded=function(e,n){if("undefined"!=typeof imagesLoaded){var t=a.imagesLoaded(e);t.on("done",function(){n()})}else n()},r.$on("msMasonry:relayout",function(){i()})}function n(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,n,t,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,n,t,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",n).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,n,t,a){a.waitImagesLoaded(n,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return n.height()},function(e,n){e!==n&&a.reLayout()})}),n.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(t,e,a,i){var s=this;function o(e,n){s.selectedPalette=e,s.selectedHues=n}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,n){s.selectedColor={palette:e,hue:n,class:"md-"+e+"-"+n+"-bg",bgColorValue:i.rgba(s.palettes[e][n].value),fgColorValue:i.rgba(s.palettes[e][n].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),t.$selectedColor=s.selectedColor}function d(){"class"===s.msModelType?s.modelCtrl.$setViewValue(s.selectedColor.class):"obj"===s.msModelType&&s.modelCtrl.$setViewValue(s.selectedColor)}s.palettes=e,s.selectedPalette=!1,s.selectedHues=!1,t.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,n){l(e,n),d(),a.hide()},s.removeColor=r,t.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,n;if("class"===s.msModelType){var t=s.modelCtrl.$viewValue.split("-");n=5<=t.length?(e=t[1]+"-"+t[2],t[3]):(e=t[1],t[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,n=s.modelCtrl.$viewValue.hue||500);l(e,n)})}e.$inject=["$scope","$mdColorPalette","$mdMenu","motionGenerator"],angular.module("app.core").controller("msMaterialColorPickerController",e).directive("msMaterialColorPicker",function(){return{require:["msMaterialColorPicker","ngModel"],restrict:"E",scope:{ngModel:"=",msModelType:"@?"},controller:"msMaterialColorPickerController as vm",transclude:!0,templateUrl:"app/core/directives/ms-material-color-picker/ms-material-color-picker.html",link:function(e,n,t,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,n){return 1===n.nodeType})).length&&n.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,n,t){var a="true"===t.msNavIsFolded,i=!1,s=angular.element(p[0].body),o=angular.element('<div id="ms-nav-fold-open-overlay"></div>'),r=angular.element('<div id="ms-nav-fold-close-overlay"></div>'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('<div id="ms-navigation-fold-expander"></div>'),i=angular.element('<div id="ms-navigation-fold-collapser"></div>'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0<o.node.children.length,o.group=!(!angular.isDefined(o.node.group)||!0!==o.node.group),!o.hasChildren||o.group?o.collapsable=!1:o.collapsable=!(!angular.isUndefined(o.node.collapsable)&&"boolean"==typeof o.node.collapsable&&!0!==o.node.collapsable);o.collapsable?o.collapsed=!(!angular.isUndefined(o.node.collapsed)&&"boolean"==typeof o.node.collapsed&&!0!==o.node.collapsed):o.collapsed=!1;if(o.node.state===n.current.name||n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,t)}t.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&t.$evalAsync(function(){o.collapsed=!1})}),t.$on("msNavigation::collapse",function(e,n){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(n))o.collapse();else{var t=n.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<t.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),t.$on("$stateChangeSuccess",function(){if(o.node.state===n.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;s.setActiveItem(o.node,t),a.$broadcast("msNavigation::collapse",o.node._path)}if(n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched")}})}()}function a(n){return{restrict:"E",scope:{root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/horizontal.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation-horizontal"),function(e){n.setNavigationScope(e)}}}}function i(t,e,n,a,i){var s=this;s.element=e,s.node=t.node,s.hasChildren=void 0,s.group=void 0,s.getClass=function(){return s.node.class},function(){if(s.isActive=!1,s.hasChildren=0<s.node.children.length,s.group=!(!angular.isDefined(s.node.group)||!0!==s.node.group),s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;t.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,t)}t.$on("msNavigation::stateMatched",function(){s.hasChildren&&t.$evalAsync(function(){s.isActive=!0})}),t.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],n=i.getActiveItem();n&&(e=n.node._path.split(".")),-1<e.indexOf(s.node._id)?t.$evalAsync(function(){s.isActive=!0}):t.$evalAsync(function(){s.isActive=!1})}}),t.$on("$stateChangeSuccess",function(){if(s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;i.setActiveItem(s.node,t),n.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,n,t,a){n.on("click",function(){if(!a.hasChildren||i("gt-md"))return;n.toggleClass("expanded")}),e.$on("$destroy",function(){n.off("click")})}}}}e.$inject=["$scope","msNavigationService"],n.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],t.$inject=["$scope","$element","$rootScope","$animate","$state","msNavigationService"],a.$inject=["msNavigationService"],i.$inject=["$scope","$element","$rootScope","$state","msNavigationService"],s.$inject=["$mdMedia"],angular.module("app.core").provider("msNavigationService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function d(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=u(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=u(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function c(e){if(angular.isString(e)){for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1}r.error("path must be a string (eg. `dashboard.project`)")}function m(e){e||(e=l).sort(a);for(var n=0;n<e.length;n++){var t=e[n].children;1<t.length&&t.sort(a),0<t.length&&m(t)}}function a(e,n){return parseInt(e.weight)-parseInt(n.weight)}function u(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=d,this.deleteItem=c,this.sortByWeight=m,this.$get=function(){var t=null,n=null,a=null,i=null,e={saveItem:d,deleteItem:c,sort:m,clearNavigation:function(){l=[],n&&(n.vm.navigation=l)},setActiveItem:function(e,n){t={node:e,scope:n}},getActiveItem:function(){return t},getNavigation:s,getFlatNavigation:o,setNavigationScope:function(e){n=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){n.toggleFolded()},getSectionId:function(n,t){var e=o(),a=_.find(e,function(e){return t?e.route===n&&e.title.toLowerCase()===t.toLowerCase():e.route===n});return a?a.id:0}};return e;function s(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}function o(e){var n=s(e);return function e(n){var t=[];for(var a=0;a<n.length;a++){var i=angular.copy(n[a]);i.children=[],t.push(i),0<n[a].children.length&&(t=t.concat(e(n[a].children)))}return t}(n)}}}).controller("MsNavigationController",e).directive("msNavigation",n).controller("MsNavigationNodeController",t).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,n,t,a){a.collapsable&&n.on("click",a.toggleCollapsed),e.$on("$destroy",function(){n.off("click")})}}}}).directive("msNavigationHorizontal",a).controller("MsNavigationHorizontalNodeController",i).directive("msNavigationHorizontalNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationHorizontalNode"},controller:"MsNavigationHorizontalNodeController as vm",compile:function(e){return e.addClass("ms-navigation-horizontal-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(u,t,p,e,a,i,n,g,s,v,h,f,b,o,A){var E=this,r=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],l=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};function d(l){var d,c,m;return E.initDeviceInProgress=!0,navigator.mediaDevices.getUserMedia({audio:!0}).then(function(e){return E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/silence.ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}),e.getTracks().forEach(function(e){e.stop()}),navigator.mediaDevices.enumerateDevices()}).then(function(e){var n=_.filter(e,function(e){return"audioinput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<n.length){var t=_.find(e,function(e){return"default"===e.deviceId&&"audioinput"===e.kind});if(m=_.find(n,function(e){return e.groupId===t.groupId}),E.conf.microphoneId&&!l){var a=_.find(n,function(e){return e.deviceId===E.conf.microphoneId});a&&(m=a)}E.conf.microphoneId=m.deviceId}else v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_MICROPHONE_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,R("microphone",!1);var i=_.filter(e,function(e){return"audiooutput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<i.length){var s=_.find(e,function(e){return"default"===e.deviceId&&"audiooutput"===e.kind});if(c=d=_.find(i,function(e){return e.groupId===s.groupId}),E.conf.speakerId&&!l){var o=_.find(i,function(e){return e.deviceId===E.conf.speakerId});o&&(c=o)}if(E.conf.speakerId=c.deviceId,E.conf.ringingId&&!l){var r=_.find(i,function(e){return e.deviceId===E.conf.ringingId});r&&(d=r)}E.conf.ringingId=d.deviceId}else v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return R("speaker",!1)}).then(function(){return R("ringing",!1)}).then(function(){if(jabra)return jabra.init().then(function(){return E.isJabraInitialized=!0,jabra.getInstallInfo()}).then(function(){return jabra.getUserDeviceMediaExt()}).then(function(e){m&&c&&d&&e&&_.includes([m.groupId,c.groupId,d.groupId],e.deviceInfo.browserGroupId)&&(console.log("Jabra library correctly initialized and device correctly installed"),E.isJabraEnabled=!0,jabra.onHook(),jabra.addEventListener("acceptcall",function(e){var n=_.last(E.sessions);n?"incoming"===n.direction&&n.isInProgress()?E.answer(n):console.error("Unable to find a valid call to answer",e):console.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){R("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,R("microphone",!0)}.bind(this)),jabra.addEventListener("flash",function(){E.jabraSession.localHold?E.unhold(E.jabraSession):E.hold(E.jabraSession)}.bind(this)),jabra.addEventListener("endcall",function(){new Promise(function(e){for(var n=null,t=0;t<E.sessions.length;t++)_.has(E.sessions[t],"localHold")&&E.sessions[t].localHold||(n=E.sessions[t]);e(n)}).then(function(e){null!==e&&E.terminate(e)})}.bind(this)))}).catch(function(e){console.warn("Error initializing Jabra integration",e)})}).catch(function(e){console.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,y(),DetectRTC.load(function(){E.conf.hasMicrophone=DetectRTC.hasMicrophone,E.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,E.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,E.conf.osName=DetectRTC.osName,E.conf.osVersion=DetectRTC.osVersion,E.conf.browserName=DetectRTC.browser.name,E.conf.browserVersion=DetectRTC.browser.version,E.conf.license&&E.conf.isWebRTCSupported&&E.conf.hasMicrophone&&E.conf.hasSpeakers&&"https"===E.conf.protocol&&("chrome"===E.conf.browserName.toLowerCase()||"opera"===E.conf.browserName.toLowerCase()||"safari"===E.conf.browserName.toLowerCase())?E.register||E.ua.start():E.conf.license||v.warning({title:g.instant("TOOLBAR.WARNING"),msg:g.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function y(){l.webrtc=_.pick(E.conf,r),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(l))}function S(e,n,t){console.debug("addCall -> target, inbound, fullname",e,n,t),E.calls.unshift({target:e,fullname:t||e,inbound:n,time:moment().format("HH:mm")}),50<E.calls.length&&E.calls.pop()}function T(e){console.debug("answer -> session",e),e.notification&&(e.notification.close(),e.notification=null),E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,e.answer(E.sessionConf),E.isJabraEnabled&&(jabra.offHook(),E.jabraSession=e)}function I(e,n){console.debug("terminate -> session",e),e.notification&&(e.notification.close(),e.notification=null);var t={};if(n?t.status_code=n:e.isEstablished()||(t.status_code=603),e.terminate(t),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var a=_.last(E.sessions);a.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=a):jabra.offHook()}}function C(t){return console.debug("getVoiceChannels -> session",t),h.rpc.getVoiceChannels().$promise.then(function(e){var n=_.find(e.rows,function(e){return e.sipcalllinkedid===t.call_id?e:e.sipcalluniqueid===t.call_id?e:null});n&&(t.monitor=n.monitor,t.uniqueid=n.uniqueid,t.monitors=n.monitors)})}function O(e){console.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function w(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function R(e,n){switch(e){case"ringing":E.soundPlayer.muted=E.conf.ringingMute,E.conf.ringingId&&E.soundPlayer.setSinkId(E.conf.ringingId).then(function(){E.soundPlayer.volume=E.conf.ringingVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.ringingId)});break;case"speaker":E.remotePlayer.muted=E.conf.speakerMute,E.conf.speakerId&&E.remotePlayer.setSinkId(E.conf.speakerId).then(function(){E.remotePlayer.volume=E.conf.speakerVolume}).then(function(){n&&y()}).catch(function(e){console.info(e.message,E.conf.speakerId)});break;case"microphone":for(var t=0;t<E.sessions.length;t+=1)E.conf.microphoneMute?E.sessions[t].mute():E.sessions[t].unmute();jabra&&E.isJabraEnabled&&(E.conf.microphoneMute?jabra.mute():jabra.unmute()),n&&y();break;default:console.log("unknown device")}}function c(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",u.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function m(n){return h.user.getVoicePrefixes({id:E.conf.id}).$promise.then(function(e){if(e.count)return a.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{prefixes:e,required:E.conf.phoneBarPrefixRequired}})}).then(function(e){if(E.conf.phoneBarPrefixRequired){if(e&&-1!==e)return e+n}else{if(e&&-1!==e)return e+n;if(!e)return n}})}function x(){if(E.isInConference){var e=E.sessions[0].connection.getReceivers()[0],n=E.sessions[1].connection.getReceivers()[0],t=new MediaStream;t.addTrack(e.track),t.addTrack(n.track);var a=document.getElementById("remote-audio");a.srcObject=t;var i=a.play();void 0!==i&&i.then(function(){}).catch(function(e){console.log(e)})}}function N(e,n,t,a){return console.debug("onReferCallback -> session, textContent, position, delay",e,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),I(e)}}function D(n){return console.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function P(e,n){return console.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}e(function(){},999),E.currentUser=b.getCurrentUser(),E.direction="right",E.selectedMode="md-scale",E.target="",E.showDialpad=!1,E.soundPlayer=document.getElementById(E.conf.soundPlayerId),E.remotePlayer=document.getElementById(E.conf.remotePlayerId),E.soundPlayer.volume=1,E.sessionConf={mediaConstraints:{audio:!0,video:!1},pcConfig:{iceServers:[]}},E.sessions=[],E.calls=[],E.callbackQueue=[],E.canGoInConference=!1,E.isInConference=!1,E.currentConferenceSessions=[],E.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+E.conf.host+":"+E.conf.wssPort+"/ws")],uri:new JsSIP.URI("sip",E.conf.name,E.conf.host,5060,null,null).toString(),authorization_user:E.conf.name,ha1:E.conf.ha1,realm:E.conf.realm,user_agent:E.conf.ua,session_timers_refresh_method:"invite",register_expires:E.conf.phoneBarExpires||60,register:!0}),E.conf=_.merge(l.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:p(function(){E.showDialpad=!1})}}),E.$onInit=function(){d(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(!(E.isJabraEnabled=!1))}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];Promise.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){console.debug("onNewRTCSession -> data",e);var n,t,a,i,s,o=e.session,r=!0,l="",d=0;switch(e.originator){case"local":o.outgoing=!0,o.name=e.request.ruri.user,o.user=e.request.ruri.user,S(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();if(c.voicePause&&c.phoneBarDnd||E.originateInProgress)r=!1;else if(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){console.debug("getNotification -> session",n);var e=n.name?n.name+" <"+n.user+">":n.user;E.currentUser.privacyEnabled&&(e=A.mask(e)),f.create("Incoming call from: ",e,null,function(){T(n)},function(){I(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){console.error("Error creating notification for incoming call",e)})}(e.session),S(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&p(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),console.debug("xAnswerMode",l),console.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase()){var m=0==d?500:1e3*d;console.debug("auto answer enabled after:"+m+" ms"),p(function(){o.isInProgress()&&(o.autoAnswer=!0,T(o))},m)}}r?(o.call_id=e.request.call_id,n&&P(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=O.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){console.debug("onProgress -> session, data",e,n);var t=!1;switch(n.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),t=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),t=!0}E.originateInProgress&&(E.originateInProgress=!1),t&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){console.log(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&P(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){console.log('callbackurl:"'+n+'" called successfully')}).catch(function(e){console.log('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){console.debug("onConfirmed -> session, data",e,n);var t=document.getElementById("div_session_"+e.id.substr(0,32));t&&$(t).scope().$broadcast("timer-start"),e.confirmed=!0,"remote"===n.originator&&e.connection&&(e.connection.onaddstream=O.bind(this),_.head(e.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(e.connection.getRemoteStreams()),this.remotePlayer.play())),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(e),e.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){console.log("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){console.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){console.debug("onHold -> session, data",e,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){console.debug("onUnhold -> session, data",e,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(console.debug("onEnded -> session, data",e,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(w(),E.buttonClicked=!0),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}0===E.sessions.length&&E.currentUser.voicePause&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})}.bind(this,o)),o.on("failed",function(e,n){if(console.debug("onFailed -> session, data",e,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&w(),E.originateInProgress&&(E.originateInProgress=!1),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}}.bind(this,o)),o.on("icecandidate",function(e,n){console.debug("onIcecandidate -> session, data",e,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),p(function(){u.$apply(),console.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):I(o,486)}.bind(this)),o.on("webbar:originate",function(e){console.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),o.on("webbar:hangup",function(e){console.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];console.log("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),o.on("webbar:answer",function(e){var n;console.debug("answerHook -> payload",e),n=e.sessionId?D(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&console.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),o.on("webbar:hold",function(e){console.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(D(e.sessionId)),0==n.length))console.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.hold(a)}}.bind(this)),o.on("webbar:unhold",function(e){if(console.debug("holdHook -> payload",e),e.sessionId){var n=D(e.sessionId);n?E.unhold(n):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("sessionId required")}.bind(this)),o.on("webbar:transfer",function(e){if(console.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=D(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(n,"requestFailed","top right",3e3)}}):console.warn("call with session Id "+e.sessionId+" not found")}else console.error("transferNumber required");else console.error("sessionId required")}.bind(this)),o.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){console.log(e.message)}));for(var a=0;a<E.sessions.length;a+=1)E.sessions[a].isEstablished()&&!E.sessions[a].isOnHold().local&&E.sessions[a].sendDTMF(e)},E.call=function(){if(E.target&&E.target!==E.conf.name&&E.target!==E.conf.internal){E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var e=E.target.replace(/ /g,"");return m(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){c()})}},E.hold=function(e){console.debug("hold -> session",e),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){console.debug("refer -> session",n);var e=a.prompt().title("Transfer").textContent("Type the target").placeholder("Target").ariaLabel("Target").ok("Transfer").cancel("Cancel");a.show(e).then(function(e){return m(e)}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:N(n,"requestSucceeded","top right",3e3),requestFailed:N(n,"requestFailed","top right",3e3)}})})},E.record=function(e){console.debug("record -> session",e),a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:E.sessions}})},E.unhold=function(e){console.debug("unhold -> session",e),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=T,E.terminate=I,E.selectSession=function(e){console.debug("selectSession -> session",e),E.unhold(e)},E.typeWrapper=function(e){switch(e.key.toLowerCase()){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"*":case"#":E.type(e.key);break;case"enter":E.call()}},E.toggleDialpad=function(){E.showDialpad=!E.showDialpad},E.referAttended=function(e){console.debug("referAttended -> session",e),a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(E.sessions,{id:e.id}),isJabraEnabled:E.isJabraEnabled}})},E.closeDialpad=function(){E.showDialpad=!1},E.initDevice=R,E.putOtherCallsOnHold=function(e){if(console.debug("putOtherCallsOnHold -> session",e),1<E.sessions.length)for(var n=0;n<E.sessions.length;n+=1)E.sessions[n].id===e.id||E.sessions[n].isOnHold().remote||E.sessions[n].hold({useUpdate:!1})},E.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|-)*$/.test(e)?(E.target=e,u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?u.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):c():c()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),c())},E.start3WayConf=function(){E.isInConference=!0,E.canGoInConference=!1,E.currentConferenceSessions.push(E.sessions[0].id),E.currentConferenceSessions.push(E.sessions[1].id);var e=new AudioContext,n=E.sessions[0].connection.getSenders()[0],t=E.sessions[0].connection.getReceivers()[0];t.track.addEventListener("unmute",function(){setTimeout(function(){x()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){x()},1e3)},!1),E.sessions[0].unhold({useUpdate:!1}),E.sessions[1].unhold({useUpdate:!1}),t.track.enabled=!0,i.track.enabled=!0;var s=new MediaStream,o=e.createMediaStreamDestination();o=(e=new AudioContext).createMediaStreamDestination();var r=e.createMediaStreamSource(new MediaStream([i.track]));r.connect(o),(r=e.createMediaStreamSource(new MediaStream([n.track]))).connect(o),n.replaceTrack(o.stream.getTracks()[0]).then(function(){}),o=e.createMediaStreamDestination(),(r=e.createMediaStreamSource(new MediaStream([t.track]))).connect(o),(r=e.createMediaStreamSource(new MediaStream([a.track]))).connect(o),a.replaceTrack(o.stream.getTracks()[0]).then(function(){s.addTrack(t.track),s.addTrack(i.track);var e=document.getElementById("remote-audio");e.srcObject=s;var n=e.play();void 0!==n&&n.then(function(){}).catch(function(e){console.log(e)})})},E.patchConference=x,u.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:E.conf}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,d(E.isJabraEnabled=!1)}).catch(function(e){console.error("Unable to shutdown Jabra library",e)}):d(!1)))})}),u.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),u.$on("webrtc::call",function(e,n){console.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),u.$on("webrtc::transfer",function(e,n){if(console.debug("onRemoteTransfer -> evt, data",e,n),n.target)for(var t=0;t<E.sessions.length;t+=1)if(E.sessions[t].isEstablished()&&!E.sessions[t].isOnHold().local)return m(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:N(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:N(E.sessions[t],"requestFailed","top right",3e3)}})})}),u.$on("$destroy",function(){console.debug("$destroy event fired"),o.removeAllListeners("webbar:originate"),o.removeAllListeners("webbar:hangup"),o.removeAllListeners("webbar:answer"),o.removeAllListeners("webbar:hold"),o.removeAllListeners("webbar:unhold"),o.removeAllListeners("webbar:transfer"),o.removeAllListeners("webbar:stopmonitors")})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","toasty","api","motNotification","Auth","socket","privacyManager"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(n,e,t){var a=this;a.prefixes=e,a.required=t,a.closeDialog=function(e){n.hide(e)},a.keyPress=function(e){13===e.keyCode&&this.call()},a.call=function(){n.hide(a.prefix)}}e.$inject=["$mdDialog","prefixes","required"],angular.module("app.core").controller("PrefixDialogController",e)}(),function(){"use strict";function e(i){return{restrict:"C",controller:["$scope","$element",function(e,n){function t(){n.css("display","inline"),i(a,1e3)}function a(){n.css("display","none"),i(t,1e3)}t()}],replace:!0}}function n(n,i,s,e,t){var o=this;function a(n,e){console.log("startMonitor");var t=i.defer(),a=(e||n.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){n.filename=a+".wav",n.mixmonitorid=e.mixmonitorid,n.status="rec",o.session.monitor=!0,t.resolve(n)}).catch(function(e){t.reject(e)}),t.promise}o.title="Record",o.sessions=e,o.session=t,o.closeDialog=function(){n.hide()},o.addRecording=function(){var e=n.prompt({skipHide:!0}).title("Start new recording").textContent("Type the file name.").placeholder("File name").ariaLabel("File name").initialValue(function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}()).ok("Start").cancel("Cancel");n.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(n){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:n.mixmonitorid}).$promise.then(function(e){n.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],n.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",n)}(),function(){"use strict";function e(n,s,a,i,e){var o=this;function r(e,n,t,a,i){return console.debug("onTransferCallback -> session, textContent, position, delay",e,n,t,a),function(){s.show(s.simple().textContent(n).position(t).hideDelay(a)),e.terminate(),jabra&&i&&jabra.onHook(),l()}}function l(e){n.hide(e)}o.title="Refer Attended",o.sessions=a,o.session=i,o.isJabraEnabled=e,o.sessionTarget=null,a.length&&(o.target=a[0].user),o.closeDialog=l,o.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===o.target)return e});n=t.outgoing?(e=t,o.session):(e=o.session,t);n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:r(i,"requestSucceeded","top right",3e3,o.isJabraEnabled),requestFailed:r(i,"requestFailed","top right",3e3,o.isJabraEnabled)}})}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n){var t=this;function a(e,n,t){var a;if(s[t]){if(a=_.find(e,function(e){return e.deviceId===s[t]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===n});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===n}))&&(s[t]=a.deviceId);return s[t]||null}_.remove(n,function(e){return"audioinput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)||"audiooutput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)}),s.ringingId=a(n,"audiooutput","ringingId"),s.speakerId=a(n,"audiooutput","speakerId"),s.microphoneId=a(n,"audioinput","microphoneId"),s.ringingVolume=s.ringingVolume||.5,s.speakerVolume=s.speakerVolume||.5,s.microphoneVolume=s.microphoneVolume||1,s.ringingMute=s.ringingMute||!1,s.speakerMute=s.speakerMute||!1,s.microphoneMute=s.microphoneMute||!1,t.conf=angular.copy(s),t.devices=n,t.saveSettings=function(){e.hide(t.conf)},t.closeDialog=function(){e.hide()},t.isCompatibleBrowser=function(){return"chrome"===t.conf.browserName.toLowerCase()||"opera"===t.conf.browserName.toLowerCase()||"safari"===t.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(t,a){var i=this;function s(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){s(e)},i.onDateRangeInit=function(e){var n=e.key;i.query[n]?i.pickerModels[n]=t.setSelectedDate(i.query[n]):i.pickerModels[n]={dateStart:null}},i.onMultiselectSelection=function(e,n){n&&(s(e),i.search())},i.onDateRangeSelection=function(e){var n=e.key;i.pickerModels[n].dateStart?!0===e.useFromToKeys?i.query[n]={from:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),to:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]={$gte:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),$lte:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]=void 0;i.search()},i.clearDate=function(e){var n=e.key;i.pickerModels[n]={dateStart:null},delete i.query[n],i.search()},i.clearSelection=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=!1===e.clearAll?[_.head(e.options)[t]]:[],s(e),i.search()},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),s(e),i.search()}}function n(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}n.$inject=["$filter","dateFilterLocalizationFactory"],e.$inject=["dateRangeManager","quickFilterManager"],angular.module("app.core").directive("msQuickFilter",function(){return{restrict:"E",scope:{query:"=",filters:"=",search:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-quick-filter/ms-quick-filter.html"}}).factory("dateRangeManager",n)}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,n){var t=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];n.addClass(t)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(n,e){var t=!1,a=document.createElement("audio");n.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){t||(t=!0,e.preventDefault(),i[n.model||"voiceRecording"].download({id:n.id}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(t)),a.play()}).catch(function(e){console.error(e)}))},e.append(a)}}}e.$inject=["api"],angular.module("app.core").directive("msRecording",e)}(),function(){"use strict";angular.module("app.core").directive("msResponsiveTable",function(){return{restrict:"A",link:function(e,n){var t=angular.element('<div class="ms-responsive-table-wrapper"></div>');n.after(t),t.append(n)}}})}(),function(){"use strict";function e(s,o,n,t){return{restrict:"AE",compile:function(e){if(!(t.getConfig("disableCustomScrollbars")||t.getConfig("disableCustomScrollbarsOnMobile")&&n.isMobile()))return e.addClass("ms-scroll"),function(e,n,t){var a={};function i(){PerfectScrollbar.update(n[0])}t.msScroll&&(a=e.$eval(t.msScroll)),a=angular.extend({},o.getConfig(),a),s(function(){PerfectScrollbar.initialize(n[0],a)},0),n.on("mouseenter",i),e.$watch(function(){return n.prop("scrollHeight")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$watch(function(){return n.prop("scrollWidth")},function(e,n){angular.isUndefined(e)||angular.equals(e,n)||i()}),e.$on("$destroy",function(){n.off("mouseenter"),PerfectScrollbar.destroy(n[0])})}}}}e.$inject=["$timeout","msScrollConfig","msUtils","motionConfig"],angular.module("app.core").provider("msScrollConfig",function(){var n={wheelSpeed:1,wheelPropagation:!1,swipePropagation:!0,minScrollbarLength:null,maxScrollbarLength:null,useBothWheelAxes:!1,useKeyboard:!0,suppressScrollX:!1,suppressScrollY:!1,scrollXMarginOffset:0,scrollYMarginOffset:0,stopPropagationOnClick:!0};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){var e={getConfig:function(){return n}};return e}}).directive("msScroll",e)}(),function(){"use strict";function e(n,i,s,e){var o=this;function t(){angular.isArray(o.onSearch)?a(o.onSearch):o.onResultClick?(o.resultsLoading=!0,n.$parent.$eval("vm.search(query)",{query:o.query.filter}).then(function(e){a(e)}).catch(function(){a([])}).finally(function(){o.resultsLoading=!1})):o.onSearch()}function a(e){o.expanded&&(void 0===e||angular.isArray(e)||null===e)&&(o.selectedResultIndex=0,o.results=e)}function r(){o.expanded=!0,o.displayOn=!0,n.expand()}function l(e){!1!==e&&(o.query.filter=void 0,o.onResultClick?a(null):t()),o.expanded=!1,n.collapse()}function d(e){o.onResultClick&&o.onResultClick({item:e}),l()}function c(){var e=i.find(".ms-search-bar-results"),n=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;o.ignoreMouseEvents=!0,s.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=s(function(){o.ignoreMouseEvents=!1},250),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}}o.queryOptions={debounce:o.debounce||0},o.searchOnEnterKey=e.get().searchOnEnterKey||!1,o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.expandBar=r,o.collapseBar=l,o.blurCollapse=function(){if(!o.collapseOnBlur)return;l()},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner animate-rotate"></span></div>');n.append(i);var s={scrollEl:"#content"};s=angular.extend(s,e.msTimeline,{});var o=angular.element(s.scrollEl);a.setScrollEl(o);var r=144;function l(){o.scrollTop()+o.height()+r>i.position().top&&(i.addClass("show"),c(),e.loadMore&&e.loadMore().then(function(){i.removeClass("show"),d()},function(){i.remove()}))}function d(){o.on("scroll",l)}function c(){o.off("scroll",l)}d(),e.$on("$destroy",function(){c()})}}}}).directive("msTimelineItem",e)}(),function(){"use strict";function e(a,e,n,i,t){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0<r.days?r.days+"d ":r.hours+":"+r.minutes+":"+r.seconds}(),r.timeoutId=setTimeout(function(){s(),a.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(a.serverDateOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){n(function(n,t){try{if(a.serverDateOffset)return void n(l());i.setting.getDate().$promise.then(function(e){a.serverDateOffset=e.offset,n(moment(e.now))})}catch(e){t(e)}}).then(function(e){var n=r.startTime?moment(r.startTime):void 0;r.startTime?n.isAfter(e,"hour")||n.isBefore(e,"hour")?r.startingTime=l(n):r.startingTime=n:r.startingTime=e,s()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),a.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),a.$on("timer-start",function(){r.startTime=void 0,o()}),e.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","api","toasty"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?"},template:"<span ng-cloak>{{ vm.timer }}</span>",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.timezone=[{name:"Europe/Andorra",utcOffset:60,offsetStr:"+01:00",countries:["AD"]},{name:"Asia/Dubai",utcOffset:240,offsetStr:"+04:00",countries:["AE","OM"]},{name:"Asia/Kabul",utcOffset:270,offsetStr:"+04:30",countries:["AF"]},{name:"Europe/Tirane",utcOffset:60,offsetStr:"+01:00",countries:["AL"]},{name:"Asia/Yerevan",utcOffset:240,offsetStr:"+04:00",countries:["AM"]},{name:"Antarctica/Rothera",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Palmer",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Mawson",utcOffset:300,offsetStr:"+05:00",countries:["AQ"]},{name:"Antarctica/Davis",utcOffset:420,offsetStr:"+07:00",countries:["AQ"]},{name:"Antarctica/Casey",utcOffset:480,offsetStr:"+08:00",countries:["AQ"]},{name:"Antarctica/Vostok",utcOffset:360,offsetStr:"+06:00",countries:["AQ"]},{name:"Antarctica/DumontDUrville",utcOffset:600,offsetStr:"+10:00",countries:["AQ"]},{name:"Antarctica/Syowa",utcOffset:180,offsetStr:"+03:00",countries:["AQ"]},{name:"Antarctica/Troll",utcOffset:0,offsetStr:"+00:00",countries:["AQ"]},{name:"America/Argentina/Buenos_Aires",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Cordoba",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Salta",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Jujuy",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Tucuman",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Catamarca",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/La_Rioja",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Juan",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Mendoza",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Luis",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Rio_Gallegos",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Ushuaia",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"Pacific/Pago_Pago",utcOffset:-660,offsetStr:"-11:00",countries:["AS","UM"]},{name:"Europe/Vienna",utcOffset:60,offsetStr:"+01:00",countries:["AT"]},{name:"Australia/Lord_Howe",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Antarctica/Macquarie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Hobart",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Currie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Melbourne",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Sydney",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Broken_Hill",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Brisbane",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Lindeman",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Adelaide",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Darwin",utcOffset:570,offsetStr:"+09:30",countries:["AU"]},{name:"Australia/Perth",utcOffset:480,offsetStr:"+08:00",countries:["AU"]},{name:"Australia/Eucla",utcOffset:525,offsetStr:"+08:45",countries:["AU"]},{name:"Asia/Baku",utcOffset:240,offsetStr:"+04:00",countries:["AZ"]},{name:"America/Barbados",utcOffset:-240,offsetStr:"-04:00",countries:["BB"]},{name:"Asia/Dhaka",utcOffset:360,offsetStr:"+06:00",countries:["BD"]},{name:"Europe/Brussels",utcOffset:60,offsetStr:"+01:00",countries:["BE"]},{name:"Europe/Sofia",utcOffset:120,offsetStr:"+02:00",countries:["BG"]},{name:"Atlantic/Bermuda",utcOffset:-240,offsetStr:"-04:00",countries:["BM"]},{name:"Asia/Brunei",utcOffset:480,offsetStr:"+08:00",countries:["BN"]},{name:"America/La_Paz",utcOffset:-240,offsetStr:"-04:00",countries:["BO"]},{name:"America/Noronha",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Belem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Fortaleza",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Recife",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Araguaina",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Maceio",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Bahia",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Sao_Paulo",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Campo_Grande",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Cuiaba",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Santarem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Porto_Velho",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Boa_Vista",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Manaus",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Eirunepe",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Rio_Branco",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Nassau",utcOffset:-300,offsetStr:"-05:00",countries:["BS"]},{name:"Asia/Thimphu",utcOffset:360,offsetStr:"+06:00",countries:["BT"]},{name:"Europe/Minsk",utcOffset:180,offsetStr:"+03:00",countries:["BY"]},{name:"America/Belize",utcOffset:-360,offsetStr:"-06:00",countries:["BZ"]},{name:"America/St_Johns",utcOffset:-210,offsetStr:"-03:30",countries:["CA"]},{name:"America/Halifax",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Glace_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Moncton",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Goose_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Blanc-Sablon",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Toronto",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Nipigon",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Thunder_Bay",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Iqaluit",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Pangnirtung",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Resolute",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Atikokan",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Rankin_Inlet",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Winnipeg",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Rainy_River",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Regina",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Swift_Current",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Edmonton",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Cambridge_Bay",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Yellowknife",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Inuvik",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Creston",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Dawson_Creek",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Fort_Nelson",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Vancouver",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Whitehorse",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Dawson",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"Indian/Cocos",utcOffset:390,offsetStr:"+06:30",countries:["CC"]},{name:"Europe/Zurich",utcOffset:60,offsetStr:"+01:00",countries:["CH","DE","LI"]},{name:"Africa/Abidjan",utcOffset:0,offsetStr:"+00:00",countries:["CI","BF","GM","GN","ML","MR","SH","SL","SN","ST","TG"]},{name:"Pacific/Rarotonga",utcOffset:-600,offsetStr:"-10:00",countries:["CK"]},{name:"America/Santiago",utcOffset:-180,offsetStr:"-03:00",countries:["CL"]},{name:"Pacific/Easter",utcOffset:-300,offsetStr:"-05:00",countries:["CL"]},{name:"Asia/Shanghai",utcOffset:480,offsetStr:"+08:00",countries:["CN"]},{name:"Asia/Urumqi",utcOffset:360,offsetStr:"+06:00",countries:["CN"]},{name:"America/Bogota",utcOffset:-300,offsetStr:"-05:00",countries:["CO"]},{name:"America/Costa_Rica",utcOffset:-360,offsetStr:"-06:00",countries:["CR"]},{name:"America/Havana",utcOffset:-300,offsetStr:"-05:00",countries:["CU"]},{name:"Atlantic/Cape_Verde",utcOffset:-60,offsetStr:"-01:00",countries:["CV"]},{name:"America/Curacao",utcOffset:-240,offsetStr:"-04:00",countries:["CW","AW","BQ","SX"]},{name:"Indian/Christmas",utcOffset:420,offsetStr:"+07:00",countries:["CX"]},{name:"Asia/Nicosia",utcOffset:120,offsetStr:"+02:00",countries:["CY"]},{name:"Europe/Prague",utcOffset:60,offsetStr:"+01:00",countries:["CZ","SK"]},{name:"Europe/Berlin",utcOffset:60,offsetStr:"+01:00",countries:["DE"]},{name:"Europe/Copenhagen",utcOffset:60,offsetStr:"+01:00",countries:["DK"]},{name:"America/Santo_Domingo",utcOffset:-240,offsetStr:"-04:00",countries:["DO"]},{name:"Africa/Algiers",utcOffset:60,offsetStr:"+01:00",countries:["DZ"]},{name:"America/Guayaquil",utcOffset:-300,offsetStr:"-05:00",countries:["EC"]},{name:"Pacific/Galapagos",utcOffset:-360,offsetStr:"-06:00",countries:["EC"]},{name:"Europe/Tallinn",utcOffset:120,offsetStr:"+02:00",countries:["EE"]},{name:"Africa/Cairo",utcOffset:120,offsetStr:"+02:00",countries:["EG"]},{name:"Africa/El_Aaiun",utcOffset:0,offsetStr:"+00:00",countries:["EH"]},{name:"Europe/Madrid",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Africa/Ceuta",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Atlantic/Canary",utcOffset:0,offsetStr:"+00:00",countries:["ES"]},{name:"Europe/Helsinki",utcOffset:120,offsetStr:"+02:00",countries:["FI","AX"]},{name:"Pacific/Fiji",utcOffset:720,offsetStr:"+12:00",countries:["FJ"]},{name:"Atlantic/Stanley",utcOffset:-180,offsetStr:"-03:00",countries:["FK"]},{name:"Pacific/Chuuk",utcOffset:600,offsetStr:"+10:00",countries:["FM"]},{name:"Pacific/Pohnpei",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Pacific/Kosrae",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Atlantic/Faroe",utcOffset:0,offsetStr:"+00:00",countries:["FO"]},{name:"Europe/Paris",utcOffset:60,offsetStr:"+01:00",countries:["FR"]},{name:"Europe/London",utcOffset:0,offsetStr:"+00:00",countries:["GB","GG","IM","JE"]},{name:"Asia/Tbilisi",utcOffset:240,offsetStr:"+04:00",countries:["GE"]},{name:"America/Cayenne",utcOffset:-180,offsetStr:"-03:00",countries:["GF"]},{name:"Africa/Accra",utcOffset:0,offsetStr:"+00:00",countries:["GH"]},{name:"Europe/Gibraltar",utcOffset:60,offsetStr:"+01:00",countries:["GI"]},{name:"America/Godthab",utcOffset:-180,offsetStr:"-03:00",countries:["GL"]},{name:"America/Danmarkshavn",utcOffset:0,offsetStr:"+00:00",countries:["GL"]},{name:"America/Scoresbysund",utcOffset:-60,offsetStr:"-01:00",countries:["GL"]},{name:"America/Thule",utcOffset:-240,offsetStr:"-04:00",countries:["GL"]},{name:"Europe/Athens",utcOffset:120,offsetStr:"+02:00",countries:["GR"]},{name:"Atlantic/South_Georgia",utcOffset:-120,offsetStr:"-02:00",countries:["GS"]},{name:"America/Guatemala",utcOffset:-360,offsetStr:"-06:00",countries:["GT"]},{name:"Pacific/Guam",utcOffset:600,offsetStr:"+10:00",countries:["GU","MP"]},{name:"Africa/Bissau",utcOffset:0,offsetStr:"+00:00",countries:["GW"]},{name:"America/Guyana",utcOffset:-240,offsetStr:"-04:00",countries:["GY"]},{name:"Asia/Hong_Kong",utcOffset:480,offsetStr:"+08:00",countries:["HK"]},{name:"America/Tegucigalpa",utcOffset:-360,offsetStr:"-06:00",countries:["HN"]},{name:"America/Port-au-Prince",utcOffset:-300,offsetStr:"-05:00",countries:["HT"]},{name:"Europe/Budapest",utcOffset:60,offsetStr:"+01:00",countries:["HU"]},{name:"Asia/Jakarta",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Pontianak",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Makassar",utcOffset:480,offsetStr:"+08:00",countries:["ID"]},{name:"Asia/Jayapura",utcOffset:540,offsetStr:"+09:00",countries:["ID"]},{name:"Europe/Dublin",utcOffset:0,offsetStr:"+00:00",countries:["IE"]},{name:"Asia/Jerusalem",utcOffset:120,offsetStr:"+02:00",countries:["IL"]},{name:"Asia/Kolkata",utcOffset:330,offsetStr:"+05:30",countries:["IN"]},{name:"Indian/Chagos",utcOffset:360,offsetStr:"+06:00",countries:["IO"]},{name:"Asia/Baghdad",utcOffset:180,offsetStr:"+03:00",countries:["IQ"]},{name:"Asia/Tehran",utcOffset:210,offsetStr:"+03:30",countries:["IR"]},{name:"Atlantic/Reykjavik",utcOffset:0,offsetStr:"+00:00",countries:["IS"]},{name:"Europe/Rome",utcOffset:60,offsetStr:"+01:00",countries:["IT","SM","VA"]},{name:"America/Jamaica",utcOffset:-300,offsetStr:"-05:00",countries:["JM"]},{name:"Asia/Amman",utcOffset:120,offsetStr:"+02:00",countries:["JO"]},{name:"Asia/Tokyo",utcOffset:540,offsetStr:"+09:00",countries:["JP"]},{name:"Africa/Nairobi",utcOffset:180,offsetStr:"+03:00",countries:["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{name:"Asia/Bishkek",utcOffset:360,offsetStr:"+06:00",countries:["KG"]},{name:"Pacific/Tarawa",utcOffset:720,offsetStr:"+12:00",countries:["KI"]},{name:"Pacific/Enderbury",utcOffset:780,offsetStr:"+13:00",countries:["KI"]},{name:"Pacific/Kiritimati",utcOffset:840,offsetStr:"+14:00",countries:["KI"]},{name:"Asia/Pyongyang",utcOffset:510,offsetStr:"+08:30",countries:["KP"]},{name:"Asia/Seoul",utcOffset:540,offsetStr:"+09:00",countries:["KR"]},{name:"America/Cayman",utcOffset:-300,offsetStr:"-05:00",countries:["KY"]},{name:"Asia/Almaty",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Qyzylorda",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Aqtobe",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Aqtau",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Oral",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Beirut",utcOffset:120,offsetStr:"+02:00",countries:["LB"]},{name:"Asia/Colombo",utcOffset:330,offsetStr:"+05:30",countries:["LK"]},{name:"Africa/Monrovia",utcOffset:0,offsetStr:"+00:00",countries:["LR"]},{name:"Europe/Vilnius",utcOffset:120,offsetStr:"+02:00",countries:["LT"]},{name:"Europe/Luxembourg",utcOffset:60,offsetStr:"+01:00",countries:["LU"]},{name:"Europe/Riga",utcOffset:120,offsetStr:"+02:00",countries:["LV"]},{name:"Africa/Tripoli",utcOffset:120,offsetStr:"+02:00",countries:["LY"]},{name:"Africa/Casablanca",utcOffset:0,offsetStr:"+00:00",countries:["MA"]},{name:"Europe/Monaco",utcOffset:60,offsetStr:"+01:00",countries:["MC"]},{name:"Europe/Chisinau",utcOffset:120,offsetStr:"+02:00",countries:["MD"]},{name:"Pacific/Majuro",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Pacific/Kwajalein",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Asia/Rangoon",utcOffset:390,offsetStr:"+06:30",countries:["MM"]},{name:"Asia/Ulaanbaatar",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Hovd",utcOffset:420,offsetStr:"+07:00",countries:["MN"]},{name:"Asia/Choibalsan",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Macau",utcOffset:480,offsetStr:"+08:00",countries:["MO"]},{name:"America/Martinique",utcOffset:-240,offsetStr:"-04:00",countries:["MQ"]},{name:"Europe/Malta",utcOffset:60,offsetStr:"+01:00",countries:["MT"]},{name:"Indian/Mauritius",utcOffset:240,offsetStr:"+04:00",countries:["MU"]},{name:"Indian/Maldives",utcOffset:300,offsetStr:"+05:00",countries:["MV"]},{name:"America/Mexico_City",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Cancun",utcOffset:-300,offsetStr:"-05:00",countries:["MX"]},{name:"America/Merida",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Monterrey",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Matamoros",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Mazatlan",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Chihuahua",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Ojinaga",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Hermosillo",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Tijuana",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Santa_Isabel",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Bahia_Banderas",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"Asia/Kuala_Lumpur",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Asia/Kuching",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Africa/Maputo",utcOffset:120,offsetStr:"+02:00",countries:["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{name:"Africa/Windhoek",utcOffset:120,offsetStr:"+02:00",countries:["NA"]},{name:"Pacific/Noumea",utcOffset:660,offsetStr:"+11:00",countries:["NC"]},{name:"Pacific/Norfolk",utcOffset:660,offsetStr:"+11:00",countries:["NF"]},{name:"Africa/Lagos",utcOffset:60,offsetStr:"+01:00",countries:["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{name:"America/Managua",utcOffset:-360,offsetStr:"-06:00",countries:["NI"]},{name:"Europe/Amsterdam",utcOffset:60,offsetStr:"+01:00",countries:["NL"]},{name:"Europe/Oslo",utcOffset:60,offsetStr:"+01:00",countries:["NO","SJ"]},{name:"Asia/Kathmandu",utcOffset:345,offsetStr:"+05:45",countries:["NP"]},{name:"Pacific/Nauru",utcOffset:720,offsetStr:"+12:00",countries:["NR"]},{name:"Pacific/Niue",utcOffset:-660,offsetStr:"-11:00",countries:["NU"]},{name:"Pacific/Auckland",utcOffset:780,offsetStr:"+13:00",countries:["NZ","AQ"]},{name:"Pacific/Chatham",utcOffset:825,offsetStr:"+13:45",countries:["NZ"]},{name:"America/Panama",utcOffset:-300,offsetStr:"-05:00",countries:["PA"]},{name:"America/Lima",utcOffset:-300,offsetStr:"-05:00",countries:["PE"]},{name:"Pacific/Tahiti",utcOffset:-600,offsetStr:"-10:00",countries:["PF"]},{name:"Pacific/Marquesas",utcOffset:-570,offsetStr:"-09:30",countries:["PF"]},{name:"Pacific/Gambier",utcOffset:-540,offsetStr:"-09:00",countries:["PF"]},{name:"Pacific/Port_Moresby",utcOffset:600,offsetStr:"+10:00",countries:["PG"]},{name:"Pacific/Bougainville",utcOffset:660,offsetStr:"+11:00",countries:["PG"]},{name:"Asia/Manila",utcOffset:480,offsetStr:"+08:00",countries:["PH"]},{name:"Asia/Karachi",utcOffset:300,offsetStr:"+05:00",countries:["PK"]},{name:"Europe/Warsaw",utcOffset:60,offsetStr:"+01:00",countries:["PL"]},{name:"America/Miquelon",utcOffset:-180,offsetStr:"-03:00",countries:["PM"]},{name:"Pacific/Pitcairn",utcOffset:-480,offsetStr:"-08:00",countries:["PN"]},{name:"America/Puerto_Rico",utcOffset:-240,offsetStr:"-04:00",countries:["PR"]},{name:"Asia/Gaza",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Asia/Hebron",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Europe/Lisbon",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Madeira",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Azores",utcOffset:-60,offsetStr:"-01:00",countries:["PT"]},{name:"Pacific/Palau",utcOffset:540,offsetStr:"+09:00",countries:["PW"]},{name:"America/Asuncion",utcOffset:-180,offsetStr:"-03:00",countries:["PY"]},{name:"Asia/Qatar",utcOffset:180,offsetStr:"+03:00",countries:["QA","BH"]},{name:"Indian/Reunion",utcOffset:240,offsetStr:"+04:00",countries:["RE","TF"]},{name:"Europe/Bucharest",utcOffset:120,offsetStr:"+02:00",countries:["RO"]},{name:"Europe/Belgrade",utcOffset:60,offsetStr:"+01:00",countries:["RS","BA","HR","ME","MK","SI"]},{name:"Europe/Kaliningrad",utcOffset:120,offsetStr:"+02:00",countries:["RU"]},{name:"Europe/Moscow",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Simferopol",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Volgograd",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Samara",utcOffset:240,offsetStr:"+04:00",countries:["RU"]},{name:"Asia/Yekaterinburg",utcOffset:300,offsetStr:"+05:00",countries:["RU"]},{name:"Asia/Omsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novosibirsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novokuznetsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Krasnoyarsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Irkutsk",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Chita",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Yakutsk",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Khandyga",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Vladivostok",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Sakhalin",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Ust-Nera",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Magadan",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Srednekolymsk",utcOffset:660,offsetStr:"+11:00",countries:["RU"]},{name:"Asia/Kamchatka",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Anadyr",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Riyadh",utcOffset:180,offsetStr:"+03:00",countries:["SA","KW","YE"]},{name:"Pacific/Guadalcanal",utcOffset:660,offsetStr:"+11:00",countries:["SB"]},{name:"Indian/Mahe",utcOffset:240,offsetStr:"+04:00",countries:["SC"]},{name:"Africa/Khartoum",utcOffset:180,offsetStr:"+03:00",countries:["SD","SS"]},{name:"Europe/Stockholm",utcOffset:60,offsetStr:"+01:00",countries:["SE"]},{name:"Asia/Singapore",utcOffset:480,offsetStr:"+08:00",countries:["SG"]},{name:"America/Paramaribo",utcOffset:-180,offsetStr:"-03:00",countries:["SR"]},{name:"America/El_Salvador",utcOffset:-360,offsetStr:"-06:00",countries:["SV"]},{name:"Asia/Damascus",utcOffset:120,offsetStr:"+02:00",countries:["SY"]},{name:"America/Grand_Turk",utcOffset:-240,offsetStr:"-04:00",countries:["TC"]},{name:"Africa/Ndjamena",utcOffset:60,offsetStr:"+01:00",countries:["TD"]},{name:"Indian/Kerguelen",utcOffset:300,offsetStr:"+05:00",countries:["TF"]},{name:"Asia/Bangkok",utcOffset:420,offsetStr:"+07:00",countries:["TH","KH","LA","VN"]},{name:"Asia/Dushanbe",utcOffset:300,offsetStr:"+05:00",countries:["TJ"]},{name:"Pacific/Fakaofo",utcOffset:780,offsetStr:"+13:00",countries:["TK"]},{name:"Asia/Dili",utcOffset:540,offsetStr:"+09:00",countries:["TL"]},{name:"Asia/Ashgabat",utcOffset:300,offsetStr:"+05:00",countries:["TM"]},{name:"Africa/Tunis",utcOffset:60,offsetStr:"+01:00",countries:["TN"]},{name:"Pacific/Tongatapu",utcOffset:780,offsetStr:"+13:00",countries:["TO"]},{name:"Europe/Istanbul",utcOffset:120,offsetStr:"+02:00",countries:["TR"]},{name:"America/Port_of_Spain",utcOffset:-240,offsetStr:"-04:00",countries:["TT","AG","AI","BL","DM","GD","GP","KN","LC","MF","MS","VC","VG","VI"]},{name:"Pacific/Funafuti",utcOffset:720,offsetStr:"+12:00",countries:["TV"]},{name:"Asia/Taipei",utcOffset:480,offsetStr:"+08:00",countries:["TW"]},{name:"Europe/Kiev",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Uzhgorod",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Zaporozhye",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Pacific/Wake",utcOffset:720,offsetStr:"+12:00",countries:["UM"]},{name:"America/New_York",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Detroit",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Louisville",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Monticello",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Indianapolis",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vincennes",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Winamac",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Marengo",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Petersburg",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vevay",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Chicago",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Tell_City",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Knox",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Menominee",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Center",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/New_Salem",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Beulah",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Denver",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Boise",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Phoenix",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Los_Angeles",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Metlakatla",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Anchorage",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Juneau",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Sitka",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Yakutat",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Nome",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Adak",utcOffset:-600,offsetStr:"-10:00",countries:["US"]},{name:"Pacific/Honolulu",utcOffset:-600,offsetStr:"-10:00",countries:["US","UM"]},{name:"America/Montevideo",utcOffset:-180,offsetStr:"-03:00",countries:["UY"]},{name:"Asia/Samarkand",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"Asia/Tashkent",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"America/Caracas",utcOffset:-270,offsetStr:"-04:30",countries:["VE"]},{name:"Asia/Ho_Chi_Minh",utcOffset:420,offsetStr:"+07:00",countries:["VN"]},{name:"Pacific/Efate",utcOffset:660,offsetStr:"+11:00",countries:["VU"]},{name:"Pacific/Wallis",utcOffset:720,offsetStr:"+12:00",countries:["WF"]},{name:"Pacific/Apia",utcOffset:840,offsetStr:"+14:00",countries:["WS"]},{name:"Africa/Johannesburg",utcOffset:120,offsetStr:"+02:00",countries:["ZA","LS","SZ"]}]}],templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var a=this;a.filter=[],a.filtered=!1,a.fontSize=20,a.getCount=function(e){var n=0;if(e){a.fontSize=e.attrs[2]&&e.attrs[2].value?parseInt(e.attrs[2].value)-parseInt(e.attrs[2].value)%2:20,e.attrs[1].value&&e.attrs[1].value.length?(a.filtered=!0,a.filter=_.intersection(e.voiceQueuesSelected,e.attrs[1].value)):(a.filtered=!1,a.filter=e.voiceQueuesSelected);for(var t=0;t<e.voiceQueues.rows.length;t+=1)_.includes(a.filter,e.voiceQueues.rows[t].id)&&(n+=e.voiceQueues.rows[t][e.attrs[0].value]?parseInt(e.voiceQueues.rows[t][e.attrs[0].value]):0)}return n}})}(),function(){"use strict";function e(o,e){var r=this;r.filter=[],r.filtered=!1,r.properties=[],r.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},r.getMultiBarChart=function(e){e&&(e.attrs&&function(e){r.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(r.filtered=!0,r.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(r.filtered=!1,r.filter=e.voiceQueuesSelected);if(r.multiBarChart.series.length>r.properties.length){var n=r.multiBarChart.series.length-r.properties.length;r.multiBarChart.series.splice(0,n),r.multiBarChart.data.splice(0,n)}for(var t=0;t<r.properties.length;t+=1){if(r.multiBarChart.series[t]=o.instant("TOOLS."+r.properties[t].toUpperCase()),_.isNil(r.multiBarChart.data[t])&&(r.multiBarChart.data[t]=[]),r.multiBarChart.labels.length>r.filter.length){var a=r.multiBarChart.labels.length-r.filter.length;r.multiBarChart.labels.splice(0,a),r.multiBarChart.data[t].splice(0,a)}for(var i=0,s=0;i<e.voiceQueues.rows.length;i+=1)_.includes(r.filter,e.voiceQueues.rows[i].id)&&(r.multiBarChart.labels[s]=e.voiceQueues.rows[i].name,r.multiBarChart.data[t][s]=e.voiceQueues.rows[i][r.properties[t]]?parseInt(e.voiceQueues.rows[i][r.properties[t]]):0,s+=1)}}(e),e.foreground&&function(e){r.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<r.multiBarChart.options.scales.xAxes.length;n+=1)r.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<r.multiBarChart.options.scales.yAxes.length;t+=1)r.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase());for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return Promise.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(t,a,n,i,s){var o={},r={},l={},d={};function c(){r=i.getCurrentUser();var e=n.localStorage.getItem("motion2.home:"+r.id);if(l=e?JSON.parse(e).currentSidebarTab:"dashboard",d=n.localStorage.getItem("motion2.home."+l+":"+r.id)){var a=JSON.parse(d);a.drafts?r.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,s.mask(t))}):a.drafts={},d=a}else d={drafts:{}};return d.drafts}function m(){_.isEmpty(o.drafts)?delete d.drafts:d.drafts=o.drafts,n.localStorage.setItem("motion2.home."+l+":"+r.id,JSON.stringify(d))}return o.init=function(){o.drafts=c()},o.getByInteraction=function(n){return o.drafts=c(),_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n})},o.removeByInteraction=function(n){o.drafts=c();var e=_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete o.drafts[e.id],m())},o.add=function(e){o.drafts=c();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};o.drafts[t.id]=t,m()},o.update=function(e){o.drafts=c();var n=o.drafts[e.id];n&&(n.content=e.message,o.drafts[e.id]=n,m())},o.open=function(e){o.drafts=c();var n=o.drafts[e];n&&t.$broadcast("open"+_.startCase(l)+"Draft",n)},o.remove=function(e){o.drafts=c(),o.drafts[e]&&(delete o.drafts[e],m())},o}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function o(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:s,set:o,update:function(e,n,t){var a=s(e);t?a[t]=n:a=n;return o(e,a)}}}e.$inject=["$window"],angular.module("app.core").factory("localStorageManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.get(),a=0;if(t)switch(n){case"email":a=t.privacyPolicyEmail;break;case"number":a=t.privacyPolicyNumber;break;default:a=t.privacyPolicyName}return _.isNil(a)?e:0===a||a>e.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(e,s){return{setPlaceholder:function(a){var i;return e(function(n,e){try{if(_.isEmpty(a.resources))i=s.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))i=a.placeholder?s.instant(a.placeholder):s.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)i=s.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";i=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(i)}catch(e){console.log("QuickFilterManager::setPlaceholder",e),n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";angular.module("app.core").factory("settingsManager",function(){var n={};return{get:function(){return n},set:function(e){e&&(n=e.toJSON())}}})}(),function(){"use strict";function e(c,m){function u(e,n,t){if(_.isEmpty(n))return t;for(var a=0;a<n.length;a++){var i=n[a].key,s=_.find(e,function(e){return e[i]===n[a].value});s&&(_.some(t,["id",s.id])||(s.canSelect=!1,t.push(s)))}return t}return{getResources:function(a,i,s,o,r,l,d){return c(function(t,n){o||(o={}),d||(d="get"),a[s][d](o).$promise.then(function(e){var t=e.rows;if("admin"===i.role)return t;var n=m.getSectionId(s,l);return a.userProfileSection.get({userProfileId:i.userProfileId,sectionId:n}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n)return n.autoAssociation?t:a.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(t,{id:e.resourceId})});return u(t,r,n)});c.resolve().then(function(){return e=s,_.includes(["voiceContext"],e)?(o.defaultEntry=1,a[s][d](o).$promise.then(function(e){return e.rows})):[];var e}).then(function(e){return u(t,r,e)})})}).then(function(e){var n={rows:_.orderBy(e,[o.sort]),count:e.length};t(n)}).catch(function(e){n(e)})})}}}e.$inject=["$q","msNavigationService"],angular.module("app.core").factory("userProfileManager",e)}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var n=Date.now()-new Date(e);return n<36e5?moment(e).fromNow():n<864e5?moment(e).format("HH:mm"):n<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(n){return function(e){return n.trustAsHtml(e)}}e.$inject=["$sce"],angular.module("app.core").filter("toTrusted",e).filter("htmlToPlaintext",function(){return function(e){return String(e).replace(/<[^>]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<n.length;o++){var r=n[o];if(i.id===r){s=!0;break}}s&&t.push(i)}return t}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,n,t){if(0===e.length||!t||0===t.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<t.length;r++){var l=t[r];if(-1<s[n].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("orderByDate",function(){return function(e){var n=[];return angular.forEach(e,function(e){n.push(e)}),n.sort(function(e,n){return e.hasOwnProperty("openedAt")&&n.hasOwnProperty("openedAt")?e.openedAt>n.openedAt?1:-1:1}),n}})}(),function(){"use strict";angular.module("app.core").filter("snakecase",function(){return function(e){return e?_.snakeCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("startcase",function(){return function(e){return e?_.startCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,t){if(0===e.length||0===t.length)return e;var a=[];return e.forEach(function(e){var n=t.every(function(n){var t=!1;return e.tags.forEach(function(e){e.name!==n.name||(t=!0)}),t});n&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,n){if(0!==e.length&&0!==n.length){if(e.length<n.length)return[];var t=[],a=n.every(function(n){var t=!1;return e.forEach(function(e){e.name!==n.name||(t=!0)}),t});return a&&t.push(e),t}}})}(),function(){"use strict";angular.module("app.core").filter("toInteger",function(){return function(e){if(e&&"string"==typeof e)return parseInt(e)}})}(),function(){"use strict";function m(e,n,t,a){this.id=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),this.title=e,this.body=n,this.accept=t,this.reject=a,this.close=i}function u(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}function i(){var t=this;navigator.serviceWorker.ready.then(function(e){e.getNotifications().then(function(e){var n=_.find(e,function(e){return e.data.id===t.id});n&&n.close()})})}angular.module("app.dashboards").provider("motNotification",function(){return{$get:[function(){var d,t,c=[];"serviceWorker"in navigator&&u()?navigator.serviceWorker.register("notification.js").then(function(e){(d=e).update(),d.installing?t=d.installing:d.waiting?t=d.waiting:d.active&&(t=d.active)}).catch(function(e){console.error("Service worker registration failed",e)}):console.error("Service Worker is not supported");return navigator.serviceWorker.addEventListener("message",function(e){if(e.source===t){var n=_.find(c,{id:e.data.id});if(n)switch(e.data.action){case"accept":n.accept&&n.accept();break;case"reject":n.reject&&n.reject()}}}),{create:function(e,i,s,o,r,l){return new Promise(function(t,n){var a;u()&&(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)?(a=new m(e||"MyTitle",i||"MyBody",o,r),c.push(a),a?window.Notification.requestPermission().then(function(e){if("granted"===e)return d.showNotification(a.title,{body:a.body,requireInteraction:!0,icon:s||"assets/images/business/queueCampaigns.jpg",data:{id:a.id},actions:[{action:"accept",title:"Accept"},{action:"reject",title:"Reject"}]})}).then(function(e){if(l){for(var n=0;n<c.length;n++)c[n].close();t()}else t(a)}).catch(function(e){n(e)}):n(new Error("Notification creating error"))):t()})}}}]}})}(),function(){"use strict";function e(l,d,c){return{resolve:function(e,n){var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return d.error("apiResolver.resolve requires correct action parameter (ResourceName@methodName)"),!1;var o=l.defer(),r=function(e){for(var n=e.split("."),t=c,a=0;a<n.length;a++){if(angular.isUndefined(t[n[a]])){d.error('Resource part "'+n[a]+'" is not defined!'),t=!1;break}t=t[n[a]]}return t||!1}(a);r?r[i](s,function(e){o.resolve(e)},function(e){o.reject(e)}):(d.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!'));return o.promise}}}e.$inject=["$q","$log","api"],angular.module("app.core").factory("apiResolver",e)}(),function(){"use strict";function e(e){return{showLoadingIndicator:function(){e.loadingProgress=!0},hideLoadingIndicator:function(){e.loadingProgress=!1}}}e.$inject=["$rootScope"],angular.module("app.core").factory("LoadingIndicatorService",e)}(),function(){"use strict";angular.module("app.core").provider("msApi",function(){var t=angular.injector(["ng"]).get("$log"),a="",v=[];function n(e){a=e}function i(){return a}function s(e,n){angular.isString(e)?angular.isArray(n)?v[e]={url:a+(n[0]||""),paramDefaults:n[1]||[],actions:n[2]||[],options:n[3]||{}}:t.error('"resource" must be an array and it must follow $resource definition'):t.error('"path" must be a string (eg. `dashboard.project`)')}this.setBaseUrl=n,this.getBaseUrl=i,this.getApiObject=function(){return v},this.register=s,this.$get=["$log","$q","$resource","$rootScope",function(m,u,p,g){var e={setBaseUrl:n,getBaseUrl:i,register:s,resolve:function(e,n){g.$broadcast("msApi::resolveStart");var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var o=u.defer(),r=v[a];if(r){var l=p(r.url,r.paramDefaults,r.actions,r.options);l[i](s,function(e){o.resolve(e),g.$broadcast("msApi::resolveSuccess")},function(e){o.reject(e),g.$broadcast("msApi::resolveError")})}else m.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!');return o.promise},request:function(e,n,t,a){g.$broadcast("msApi::requestStart");var i=e.split("@"),s=i[0],o=i[1],r=n||{};if(!s||!o)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var l=u.defer(),d=v[s];if(d){var c=p(d.url,d.paramDefaults,d.actions,d.options);c[o](r,function(e){g.$broadcast("msApi::requestSuccess"),l.resolve(e),angular.isDefined(t)&&angular.isFunction(t)&&t(e)},function(e){g.$broadcast("msApi::requestError"),l.reject(e),angular.isDefined(a)&&angular.isFunction(a)&&a(e)})}else m.error('Resource "'+s+'" is not defined in the api service!'),l.reject('Resource "'+s+'" is not defined in the api service!');return l.promise}};return e}]})}(),function(){"use strict";function e(l){var e=new MobileDetect(l.navigator.userAgent),d=null;return{exists:function(e,n){return-1<n.indexOf(e)},detectBrowser:function(){if(d)return d;var e=[{string:l.navigator.userAgent,subString:"Edge",versionSearch:"Edge",identity:"Edge"},{string:l.navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:l.navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:l.navigator.vendor,subString:"Apple",versionSearch:"Version",identity:"Safari"},{prop:l.opera,identity:"Opera"},{string:l.navigator.vendor,subString:"iCab",identity:"iCab"},{string:l.navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:l.navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:l.navigator.vendor,subString:"Camino",identity:"Camino"},{string:l.navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:l.navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:l.navigator.userAgent,subString:"Trident/7",identity:"Explorer",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],n=[{string:l.navigator.platform,subString:"Win",identity:"Windows"},{string:l.navigator.platform,subString:"Mac",identity:"Mac"},{string:l.navigator.platform,subString:"Linux",identity:"Linux"},{string:l.navigator.platform,subString:"iPhone",identity:"iPhone"},{string:l.navigator.platform,subString:"iPod",identity:"iPod"},{string:l.navigator.platform,subString:"iPad",identity:"iPad"},{string:l.navigator.platform,subString:"Android",identity:"Android"}],i="";function t(e){for(var n=0;n<e.length;n++){var t=e[n].string,a=e[n].prop;if(i=e[n].versionSearch||e[n].identity,t){if(-1!==t.indexOf(e[n].subString))return e[n].identity}else if(a)return e[n].identity}}function a(e){var n=e.indexOf(i);if(-1!==n)return parseInt(e.substring(n+i.length+1))}var s=t(e)||"unknown-browser",o=a(l.navigator.userAgent)||a(l.navigator.appVersion)||"unknown-version",r=t(n)||"unknown-os";return s=s.toLowerCase(),o=s+"-"+o,r=r.toLowerCase(),d={browser:s,version:o,os:r}},guidGenerator:function(){var e=function(){return(65536*(1+Math.random())||0).toString(16).substring(1)};return e()+e()+e()+e()+e()+e()},isMobile:function(){return e.mobile()},toggleInArray:function(e,n){-1===n.indexOf(e)?n.push(e):n.splice(n.indexOf(e),1)},firstLastDayMonth:function(){return{$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()}}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,n){var t=this;t.themes=n.themes,t.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],t.layoutStyles=[{label:"Vertical Navigation",value:"verticalNavigation",figure:"/assets/images/theme-options/vertical-nav.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar",value:"verticalNavigationFullwidthToolbar",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar 2",value:"verticalNavigationFullwidthToolbar2",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar-2.jpg"},{label:"Horizontal Navigation",value:"horizontalNavigation",figure:"/assets/images/theme-options/horizontal-nav.jpg"},{label:"Content with Toolbar",value:"contentWithToolbar",figure:"/assets/images/theme-options/content-with-toolbar.jpg"},{label:"Content Only",value:"contentOnly",figure:"/assets/images/theme-options/content-only.jpg"}],t.layoutMode="wide",t.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",t.setActiveTheme=function(e){n.setActiveTheme(e)},t.getActiveTheme=function(){return n.themes.active},t.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===t.layoutMode)},t.updateLayoutStyle=function(){e.put("motion.layoutStyle",t.layoutStyle),location.reload()}}function n(n){return{restrict:"E",scope:{},controller:"MsThemeOptionsController as vm",templateUrl:"app/core/theme-options/theme-options.html",compile:function(e){return e.addClass("ms-theme-options"),function(e){e.toggleOptionsSidenav=function(){n("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],n.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",n)}(),function(){"use strict";function e(i,a,s){var o={};return{generate:function(){var e=angular.copy(s.getRegisteredThemes()),a=angular.copy(s.getRegisteredPalettes());angular.forEach(e,function(t){o[t.name]={},angular.forEach(t.colors,function(e,n){o[t.name][n]={name:e.name,levels:{default:{color:l(a[e.name][e.hues.default].value),contrast1:l(a[e.name][e.hues.default].contrast,1),contrast2:l(a[e.name][e.hues.default].contrast,2),contrast3:l(a[e.name][e.hues.default].contrast,3),contrast4:l(a[e.name][e.hues.default].contrast,4)},hue1:{color:l(a[e.name][e.hues["hue-1"]].value),contrast1:l(a[e.name][e.hues["hue-1"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-1"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-1"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-1"]].contrast,4)},hue2:{color:l(a[e.name][e.hues["hue-2"]].value),contrast1:l(a[e.name][e.hues["hue-2"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-2"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-2"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-2"]].contrast,4)},hue3:{color:l(a[e.name][e.hues["hue-3"]].value),contrast1:l(a[e.name][e.hues["hue-3"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-3"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-3"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-3"]].contrast,4)}}}})}),function(e){var n=angular.copy(e);angular.forEach(n,function(t){angular.forEach(t,function(e,n){t[n]=e.levels,t[n].color=e.levels.default.color,t[n].contrast1=e.levels.default.contrast1,t[n].contrast2=e.levels.default.contrast2,t[n].contrast3=e.levels.default.contrast3,t[n].contrast4=e.levels.default.contrast4,delete t[n].default})}),s.setThemesList(n);var t=i.get("motion.selectedTheme");t?s.setActiveTheme(t):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,n){var t,a,i,s,o;(r={})["@themeName"]=n,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,t){angular.forEach(e,function(e,n){r["@"+a+d(t)+d(n)]=e})})}),t=r,a=new RegExp(Object.keys(t).join("|"),"gi"),i='/* Content hack because they wont fix */\n/* https://github.com/angular/material/pull/8067 */\n[md-theme="@themeName"] md-content.md-hue-1,\nmd-content.md-@themeName-theme.md-hue-1 {\n    color: @backgroundHue1Contrast1;\n    background-color: @backgroundHue1Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-2,\nmd-content.md-@themeName-theme.md-hue-2 {\n    color: @backgroundHue2Contrast1;\n    background-color: @backgroundHue2Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-3,\n md-content.md-@themeName-theme.md-hue-3 {\n    color: @backgroundHue3Contrast1;\n    background-color: @backgroundHue3Color;\n}\n\n/* Text Colors */\n[md-theme="@themeName"] a {\n    color: @accentDefaultColor;\n}\n\n[md-theme="@themeName"] .secondary-text,\n[md-theme="@themeName"] .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .hint-text,\n[md-theme="@themeName"] .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .fade-text,\n[md-theme="@themeName"] .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Primary */\n[md-theme="@themeName"] .md-primary-bg {\n    background-color: @primaryDefaultColor;\n    color: @primaryDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg .secondary-text,\n[md-theme="@themeName"] .md-primary-bg .icon {\n    color: @primaryDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg .hint-text,\n[md-theme="@themeName"] .md-primary-bg .disabled-text {\n    color: @primaryDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg .fade-text,\n[md-theme="@themeName"] .md-primary-bg .divider {\n    color: @primaryDefaultContrast4;\n}\n\n/* Primary, Hue-1 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 {\n    background-color: @primaryHue1Color;\n    color: @primaryHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .icon {\n    color: @primaryHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .disabled-text {\n    color: @primaryHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .divider {\n    color: @primaryHue1Contrast4;\n}\n\n/* Primary, Hue-2 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 {\n    background-color: @primaryHue2Color;\n    color: @primaryHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .icon {\n    color: @primaryHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .disabled-text {\n    color: @primaryHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .divider {\n    color: @primaryHue2Contrast4;\n}\n\n/* Primary, Hue-3 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 {\n    background-color: @primaryHue3Color;\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .icon {\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .disabled-text {\n    color: @primaryHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .divider {\n    color: @primaryHue3Contrast4;\n}\n\n/* Primary foreground */\n[md-theme="@themeName"] .md-primary-fg {\n    color: @primaryDefaultColor !important;\n}\n\n/* Primary foreground, Hue-1 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-1 {\n    color: @primaryHue1Color !important;\n}\n\n/* Primary foreground, Hue-2 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-2 {\n    color: @primaryHue2Color !important;\n}\n\n/* Primary foreground, Hue-3 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-3 {\n    color: @primaryHue3Color !important;\n}\n\n/* Accent */\n[md-theme="@themeName"] .md-accent-bg {\n    background-color: @accentDefaultColor;\n    color: @accentDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg .secondary-text,\n[md-theme="@themeName"] .md-accent-bg .icon {\n    color: @accentDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg .hint-text,\n[md-theme="@themeName"] .md-accent-bg .disabled-text {\n    color: @accentDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg .fade-text,\n[md-theme="@themeName"] .md-accent-bg .divider {\n    color: @accentDefaultContrast4;\n}\n\n/* Accent, Hue-1 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 {\n    background-color: @accentHue1Color;\n    color: @accentHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .icon {\n    color: @accentHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .disabled-text {\n    color: @accentHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .divider {\n    color: @accentHue1Contrast4;\n}\n\n/* Accent, Hue-2 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 {\n    background-color: @accentHue2Color;\n    color: @accentHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .icon {\n    color: @accentHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .disabled-text {\n    color: @accentHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .divider {\n    color: @accentHue2Contrast4;\n}\n\n/* Accent, Hue-3 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 {\n    background-color: @accentHue3Color;\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .icon {\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .disabled-text {\n    color: @accentHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .divider {\n    color: @accentHue3Contrast4;\n}\n\n/* Accent foreground */\n[md-theme="@themeName"] .md-accent-fg {\n    color: @accentDefaultColor !important;\n}\n\n/* Accent foreground, Hue-1 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-1 {\n    color: @accentHue1Color !important;\n}\n\n/* Accent foreground, Hue-2 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-2 {\n    color: @accentHue2Color !important;\n}\n\n/* Accent foreground, Hue-3 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-3 {\n    color: @accentHue3Color !important;\n}\n\n/* Warn */\n[md-theme="@themeName"] .md-warn-bg {\n    background-color: @warnDefaultColor;\n    color: @warnDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg .secondary-text,\n[md-theme="@themeName"] .md-warn-bg .icon {\n    color: @warnDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg .hint-text,\n[md-theme="@themeName"] .md-warn-bg .disabled-text {\n    color: @warnDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg .fade-text,\n[md-theme="@themeName"] .md-warn-bg .divider {\n    color: @warnDefaultContrast4;\n}\n\n/* Warn, Hue-1 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 {\n    background-color: @warnHue1Color;\n    color: @warnHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .icon {\n    color: @warnHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .disabled-text {\n    color: @warnHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .divider {\n    color: @warnHue1Contrast4;\n}\n\n/* Warn, Hue-2 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 {\n    background-color: @warnHue2Color;\n    color: @warnHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .icon {\n    color: @warnHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .disabled-text {\n    color: @warnHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .divider {\n    color: @warnHue2Contrast4;\n}\n\n/* Warn, Hue-3 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 {\n    background-color: @warnHue3Color;\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .icon {\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .disabled-text {\n    color: @warnHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .divider {\n    color: @warnHue3Contrast4;\n}\n\n/* Warn foreground */\n[md-theme="@themeName"] .md-warn-fg {\n    color: @warnDefaultColor !important;\n}\n\n/* Warn foreground, Hue-1 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-1 {\n    color: @warnHue1Color !important;\n}\n\n/* Warn foreground, Hue-2 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-2 {\n    color: @warnHue2Color !important;\n}\n\n/* Warn foreground, Hue-3 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-3 {\n    color: @warnHue3Color !important;\n}\n\n/* Background */\n[md-theme="@themeName"] .md-background-bg {\n    background-color: @backgroundDefaultColor;\n    color: @backgroundDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg .secondary-text,\n[md-theme="@themeName"] .md-background-bg .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg .hint-text,\n[md-theme="@themeName"] .md-background-bg .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg .fade-text,\n[md-theme="@themeName"] .md-background-bg .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Background, Hue-1 */\n[md-theme="@themeName"] .md-background-bg.md-hue-1 {\n    background-color: @backgroundHue1Color;\n    color: @backgroundHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .icon {\n    color: @backgroundHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .disabled-text {\n    color: @backgroundHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .divider {\n    color: @backgroundHue1Contrast4;\n}\n\n/* Background, Hue-2 */\n[md-theme="@themeName"] .md-background-bg.md-hue-2 {\n    background-color: @backgroundHue2Color;\n    color: @backgroundHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .icon {\n    color: @backgroundHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .disabled-text {\n    color: @backgroundHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .divider {\n    color: @backgroundHue2Contrast4;\n}\n\n/* Background, Hue-3 */\n[md-theme="@themeName"] .md-background-bg.md-hue-3 {\n    background-color: @backgroundHue3Color;\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .icon {\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .disabled-text {\n    color: @backgroundHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .divider {\n    color: @backgroundHue3Contrast4;\n}\n\n/* Background foreground */\n[md-theme="@themeName"] .md-background-fg {\n    color: @backgroundDefaultColor !important;\n}\n\n/* Background foreground, Hue-1 */\n[md-theme="@themeName"] .md-background-fg.md-hue-1 {\n    color: @backgroundHue1Color !important;\n}\n\n/* Background foreground, Hue-2 */\n[md-theme="@themeName"] .md-background-fg.md-hue-2 {\n    color: @backgroundHue2Color !important;\n}\n\n/* Background foreground, Hue-3 */\n[md-theme="@themeName"] .md-background-fg.md-hue-3 {\n    color: @backgroundHue3Color !important;\n}'.replace(a,function(e){return t[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i<t.length;i+=1)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.code="",t.send=!1,t.error=e.params,t.sendReport=function(){n.post("/api/jira",t.error).then(function(e){t.send=!0,e.data&&(t.code=e.data.id)},function(e){t.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.cookieAlertHide=n.get("motion.cookieAlertHide:"+t.currentUser.id)||!1,t.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){n.success({title:t.instant("FORGOTPASSWORD.LINK_SENT"),msg:t.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&n.error({title:t.instant("FORGOTPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},s.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general")}}e.$inject=["Auth","toasty","$translate","$state","api"],angular.module("app.forgot").controller("ForgotPasswordController",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.newsAlertHide=n.get("motion.newsAlertHide:"+t.currentUser.id)||!1,t.newsAlertOnClose=function(){n.put("motion.newsAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e,o){var r={getResourcesByRole:function(e,n,t,a,i,s){return o.getResources(r,e,n,t,a,i,s)}};return r.baseUrl="api/",r.auth=e(r.baseUrl+"auth/local",{},{local:{method:"post",url:r.baseUrl+"auth/local"},forgot:{method:"post",url:r.baseUrl+"auth/local/forgot"},reset:{method:"post",url:r.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},user:{method:"get",url:r.baseUrl+"auth/local/user/:token",params:{token:"@token"}},google:{method:"post",url:r.baseUrl+"auth/google"}}),r.jira=e(r.baseUrl+"jira"),r.rpc=e(r.baseUrl+"rpc",{},{startMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:r.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:r.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:r.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:r.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:r.baseUrl+"rpc/sms/queues"},getWhatsappQueues:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues"},getOpenchannelQueues:{method:"get",url:r.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:r.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:r.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:r.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:r.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:r.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:r.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:r.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:r.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:r.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:r.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:r.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getOpenchannelQueuesIdWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/:id/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/fax/queues/waitinginteractions"},getWhatsappQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:r.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:r.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:r.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:r.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:r.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:r.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),r.version=e(r.baseUrl+"version",{},{fetch:{method:"get",url:r.baseUrl+"version/fetch"},reset:{method:"get",url:r.baseUrl+"version/reset"},pull:{method:"get",url:r.baseUrl+"version/pull"},restart:{method:"get",url:r.baseUrl+"version/restart"},migrations:{method:"get",url:r.baseUrl+"version/migrations"}}),r.system=e(r.baseUrl+"system",{},{killProcess:{method:"get",url:r.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),r.pm2=e(r.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),r.user=e(r.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"users/describe"},clone:{method:"post",url:r.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/contacts"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"users/create_many"},changePassword:{isArray:!1,method:"put",url:r.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/avatar"},getOpenTabs:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/open_tabs"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/recordings"},getScreenRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/screen_recordings"},getChatInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax/interactions"},getWhatsappInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp/interactions"},login:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/unpause"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_interactions"},addWhatsappInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_interactions"},removeWhatsappInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_websites"},getWhatsappAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp_accounts"},addWhatsappAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_accounts"},removeWhatsappAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_accounts"},getSquareProjects:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/square_projects"},addSquareProjects:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/square_projects"},removeSquareProjects:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/square_projects"},getScheduledCalls:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/scheduled_calls"},getApiKey:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/api_key"},createApiKey:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/api_key"},removeApiKey:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/api_key"},whoami:{isArray:!1,method:"get",url:r.baseUrl+"users/whoami"},getPresence:{isArray:!1,method:"get",url:r.baseUrl+"users/presence"}}),r.voiceChanSpy=e(r.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:r.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceContext=e(r.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:r.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceExtension=e(r.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:r.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"voice/extensions/:id/applications"}}),r.voiceMusicOnHold=e(r.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:r.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:r.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:r.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:r.baseUrl+"voice/mohs/:id/sounds"}}),r.voiceQueue=e(r.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/blacklists"}}),r.voiceRecording=e(r.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:r.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},downloads:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/downloads"},runTranscribe:{isArray:!1,method:"post",url:r.baseUrl+"voice/recordings/:id/transcribe"},downloadTranscribe:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/transcribe",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.screenRecording=e(r.baseUrl+"screen/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"screen/recordings/describe"},clone:{method:"post",url:r.baseUrl+"screen/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"screen/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceMail=e(r.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/:id/messages"}}),r.voiceMailMessage=e(r.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceCallReport=e(r.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceDialReport=e(r.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceAgentReport=e(r.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueueReport=e(r.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/reports/index"}}),r.memberReport=e(r.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"members/reports/describe"},clone:{method:"post",url:r.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.trunk=e(r.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"trunks/describe"},clone:{method:"post",url:r.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceTransferReport=e(r.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailServerOut=e(r.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:r.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailAccount=e(r.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:r.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/users"}}),r.mailQueue=e(r.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/queues/describe"},clone:{method:"post",url:r.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/users"}}),r.mailSubstatus=e(r.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:r.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailInteraction=e(r.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:r.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailMessage=e(r.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/messages/describe"},clone:{method:"post",url:r.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailApplication=e(r.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/applications/describe"},clone:{method:"post",url:r.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailQueueReport=e(r.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.dashboard=e(r.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:r.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:r.baseUrl+"dashboards/:id/items"}}),r.dashboardItem=e(r.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxAccount=e(r.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:r.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/users"}}),r.faxApplication=e(r.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/applications/describe"},clone:{method:"post",url:r.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxInteraction=e(r.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:r.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxMessage=e(r.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/messages/describe"},clone:{method:"post",url:r.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxQueue=e(r.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/queues/describe"},clone:{method:"post",url:r.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/users"}}),r.faxQueueReport=e(r.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsAccount=e(r.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:r.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/users"}}),r.smsApplication=e(r.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/applications/describe"},clone:{method:"post",url:r.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsInteraction=e(r.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:r.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.smsMessage=e(r.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/messages/describe"},clone:{method:"post",url:r.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/messages/:id/status"}}),r.smsQueue=e(r.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/queues/describe"},clone:{method:"post",url:r.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/users"}}),r.openchannelAccount=e(r.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/send"}}),r.openchannelApplication=e(r.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelInteraction=e(r.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.openchannelMessage=e(r.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/reject"}}),r.openchannelQueue=e(r.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/users"}}),r.chatWebsite=e(r.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/websites/describe"},clone:{method:"post",url:r.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/users"}}),r.openchannelQueueReport=e(r.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatApplication=e(r.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/applications/describe"},clone:{method:"post",url:r.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInteraction=e(r.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:r.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},createVidaooSession:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/vidaoo"},customUpdate:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.chatMessage=e(r.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/reject"}}),r.chatOfflineMessage=e(r.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueue=e(r.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/queues/describe"},clone:{method:"post",url:r.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/users"}}),r.chatGroup=e(r.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/groups/describe"},clone:{method:"post",url:r.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:r.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/messages"}}),r.chatProactiveAction=e(r.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:r.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCompany=e(r.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/companies/describe"},clone:{method:"post",url:r.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/companies/:id/contacts"}}),r.cmContact=e(r.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:r.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/tags"},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_finals"},getJscriptySessions:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/jscripty_sessions"},uploadCsv:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/csv"},upload:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload"},import:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload/:id"},getJourney:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/journey"}}),r.cmHopper=e(r.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/preview"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"}}),r.cmHopperBlack=e(r.baseUrl+"cm/hopper_black/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_black/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_black/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperFinal=e(r.baseUrl+"cm/hopper_final/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_final/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_final/:id/clone",params:{includeAll:"@includeAll"}},countContactsQueueCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/voice/queue/countAttributes/:id"},countContactsIvrCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/campaign/countAttributes/:id"},moveContactsQueueCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/queue/moveContacts/:id"},moveContactsIvrCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/campaign/moveContacts/:id"},checkContactHopper:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper_final/checkContactHopper"}}),r.cmHopperHistory=e(r.baseUrl+"cm/hopper_history/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_history/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_history/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCustomField=e(r.baseUrl+"cm/custom_fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/custom_fields/describe"},clone:{method:"post",url:r.baseUrl+"cm/custom_fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.action=e(r.baseUrl+"actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"actions/describe"},clone:{method:"post",url:r.baseUrl+"actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.automation=e(r.baseUrl+"automations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"automations/describe"},clone:{method:"post",url:r.baseUrl+"automations/:id/clone",params:{includeAll:"@includeAll"}},addConditions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/conditions"},getConditions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/conditions"},addActions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/actions"}}),r.cannedAnswer=e(r.baseUrl+"canned_answers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"canned_answers/describe"},clone:{method:"post",url:r.baseUrl+"canned_answers/:id/clone",params:{includeAll:"@includeAll"}}}),r.disposition=e(r.baseUrl+"dispositions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dispositions/describe"},clone:{method:"post",url:r.baseUrl+"dispositions/:id/clone",params:{includeAll:"@includeAll"}}}),r.condition=e(r.baseUrl+"conditions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"conditions/describe"},clone:{method:"post",url:r.baseUrl+"conditions/:id/clone",params:{includeAll:"@includeAll"}}}),r.interval=e(r.baseUrl+"intervals/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"intervals/describe"},clone:{method:"post",url:r.baseUrl+"intervals/:id/clone",params:{includeAll:"@includeAll"}},addInterval:{isArray:!1,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals"},getIntervals:{isArray:!1,method:"get",url:r.baseUrl+"intervals/:id/sub_intervals"},addIntervals:{isArray:!0,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals/create_many"}}),r.pause=e(r.baseUrl+"pauses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"pauses/describe"},clone:{method:"post",url:r.baseUrl+"pauses/:id/clone",params:{includeAll:"@includeAll"}}}),r.cdr=e(r.baseUrl+"cdr/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cdr/describe"},clone:{method:"post",url:r.baseUrl+"cdr/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueuesLog=e(r.baseUrl+"voiceQueuesLog/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voiceQueuesLog/describe"},clone:{method:"post",url:r.baseUrl+"voiceQueuesLog/:id/clone",params:{includeAll:"@includeAll"}}}),r.schedule=e(r.baseUrl+"schedules/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"schedules/describe"},clone:{method:"post",url:r.baseUrl+"schedules/:id/clone",params:{includeAll:"@includeAll"}},run:{isArray:!1,method:"get",url:r.baseUrl+"schedules/:id/run"}}),r.sound=e(r.baseUrl+"sounds/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sounds/describe"},clone:{method:"post",url:r.baseUrl+"sounds/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"sounds/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},delete:{isArray:!1,method:"delete",url:r.baseUrl+"sounds/:id"}}),r.tag=e(r.baseUrl+"tags/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"tags/describe"},clone:{method:"post",url:r.baseUrl+"tags/:id/clone",params:{includeAll:"@includeAll"}}}),r.template=e(r.baseUrl+"templates/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"templates/describe"},clone:{method:"post",url:r.baseUrl+"templates/:id/clone",params:{includeAll:"@includeAll"}}}),r.trigger=e(r.baseUrl+"triggers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"triggers/describe"},clone:{method:"post",url:r.baseUrl+"triggers/:id/clone",params:{includeAll:"@includeAll"}},addAllCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/all_conditions"},addAnyCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/any_conditions"},getAllConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/all_conditions"},getAnyConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/any_conditions"},addAction:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/actions"}}),r.variable=e(r.baseUrl+"variables/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"variables/describe"},clone:{method:"post",url:r.baseUrl+"variables/:id/clone",params:{includeAll:"@includeAll"}}}),r.integration=e(r.baseUrl+"integrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.integrationReport=e(r.baseUrl+"integrations/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/reports/describe"},clone:{method:"post",url:r.baseUrl+"integrations/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticCustomReport=e(r.baseUrl+"analytics/custom_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/custom_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/custom_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/query"}}),r.analyticDefaultReport=e(r.baseUrl+"analytics/default_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/default_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/default_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/default_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/query"}}),r.analyticExtractedReport=e(r.baseUrl+"analytics/extracted_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/extracted_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/extracted_reports/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"analytics/extracted_reports/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.analyticMetric=e(r.baseUrl+"analytics/metrics/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/metrics/describe"},clone:{method:"post",url:r.baseUrl+"analytics/metrics/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticFieldReport=e(r.baseUrl+"analytics/field_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/field_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/field_reports/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:r.baseUrl+"analytics/field_reports/create_many",isArray:!0},bulkDestroy:{method:"delete",url:r.baseUrl+"analytics/field_reports/destroy_many",isArray:!0},addFields:{isArray:!0,method:"post",url:r.baseUrl+"analytics/field_reports/:id/create_many"}}),r.analyticTreeReport=e(r.baseUrl+"analytics/tree_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/tree_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/tree_reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSalesforceAccount=e(r.baseUrl+"integrations/salesforce/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/fields"}}),r.intSalesforceConfiguration=e(r.baseUrl+"integrations/salesforce/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/descriptions"}}),r.intSalesforceField=e(r.baseUrl+"integrations/salesforce/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSugarcrmAccount=e(r.baseUrl+"integrations/sugarcrm/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/fields"}}),r.intSugarcrmConfiguration=e(r.baseUrl+"integrations/sugarcrm/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/descriptions"}}),r.intSugarcrmField=e(r.baseUrl+"integrations/sugarcrm/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDeskAccount=e(r.baseUrl+"integrations/desk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/fields"}}),r.intDeskConfiguration=e(r.baseUrl+"integrations/desk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/tags"}}),r.intDeskField=e(r.baseUrl+"integrations/desk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZohoAccount=e(r.baseUrl+"integrations/zoho/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/fields"}}),r.intZohoConfiguration=e(r.baseUrl+"integrations/zoho/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/descriptions"}}),r.intZohoField=e(r.baseUrl+"integrations/zoho/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZendeskAccount=e(r.baseUrl+"integrations/zendesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/fields"}}),r.intZendeskConfiguration=e(r.baseUrl+"integrations/zendesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"}}),r.intZendeskField=e(r.baseUrl+"integrations/zendesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshdeskAccount=e(r.baseUrl+"integrations/freshdesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/fields"}}),r.intFreshdeskConfiguration=e(r.baseUrl+"integrations/freshdesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"}}),r.intFreshdeskField=e(r.baseUrl+"integrations/freshdesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intVtigerAccount=e(r.baseUrl+"integrations/vtiger/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/fields"}}),r.intVtigerConfiguration=e(r.baseUrl+"integrations/vtiger/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/descriptions"}}),r.intVtigerField=e(r.baseUrl+"integrations/vtiger/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intServicenowAccount=e(r.baseUrl+"integrations/servicenow/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/fields"}}),r.intServicenowConfiguration=e(r.baseUrl+"integrations/servicenow/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/descriptions"}}),r.intServicenowField=e(r.baseUrl+"integrations/servicenow/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDynamics365Account=e(r.baseUrl+"integrations/dynamics365/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/fields"}}),r.intDynamics365Configuration=e(r.baseUrl+"integrations/dynamics365/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/descriptions"}}),r.intDynamics365Field=e(r.baseUrl+"integrations/dynamics365/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshsalesAccount=e(r.baseUrl+"integrations/freshsales/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/fields"}}),r.intFreshsalesConfiguration=e(r.baseUrl+"integrations/freshsales/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/configurations/:id/clone",params:{includeAll:"@includeAll"}},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/descriptions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/fields"}}),r.intFreshsalesField=e(r.baseUrl+"integrations/freshsales/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.network=e(r.baseUrl+"networks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"networks/describe"},clone:{method:"post",url:r.baseUrl+"networks/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueueReport=e(r.baseUrl+"chat/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInternalMessage=e(r.baseUrl+"chat/internal/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/internal/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/internal/messages/:id/clone",params:{includeAll:"@includeAll"}},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"chat/internal/messages/users"}}),r.jscriptyAnswerReport=e(r.baseUrl+"jscripty/answers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/answers/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/answers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyQuestionReport=e(r.baseUrl+"jscripty/questions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/questions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/questions/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptySessionReport=e(r.baseUrl+"jscripty/sessions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/sessions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/sessions/reports/:id/clone",params:{includeAll:"@includeAll"}},getQuestions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/sessions/reports/:id/questions"}}),r.smsQueueReport=e(r.baseUrl+"sms/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReport=e(r.baseUrl+"square/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReportDetail=e(r.baseUrl+"square/details/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/details/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/details/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyProject=e(r.baseUrl+"jscripty/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/projects/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/projects/:id/clone",params:{includeAll:"@includeAll"}},getSessions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/sessions"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/answers"},getSummary:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/summary",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.setting=e(r.baseUrl+"settings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"settings/describe"},clone:{method:"post",url:r.baseUrl+"settings/:id/clone",params:{includeAll:"@includeAll"}},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo"},addLogoLogin:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo_login"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo"},getLogoLogin:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo_login"},gdpr:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/gdpr"},addPreferred:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/preferred"},getPreferred:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/preferred"},addFavicon:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/favicon"},getFavicon:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/favicon"},getDate:{isArray:!1,method:"get",url:r.baseUrl+"settings/now"}}),r.squareOdbc=e(r.baseUrl+"square/odbc/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/odbc/describe"},clone:{method:"post",url:r.baseUrl+"square/odbc/:id/clone",params:{includeAll:"@includeAll"}},test:{isArray:!1,method:"get",url:r.baseUrl+"square/odbc/:id/test"}}),r.squareProject=e(r.baseUrl+"square/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/projects/describe"},clone:{method:"post",url:r.baseUrl+"square/projects/:id/clone",params:{includeAll:"@includeAll"}},addUsers:{isArray:!0,method:"post",url:r.baseUrl+"square/projects/:id/users"},removeUsers:{isArray:!1,method:"delete",url:r.baseUrl+"square/projects/:id/users"},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"square/projects/:id/users"}}),r.squareRecording=e(r.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/recordings/describe"},clone:{method:"post",url:r.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.squareMessage=e(r.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/messages/describe"},clone:{method:"post",url:r.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.team=e(r.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"teams/describe"},clone:{method:"post",url:r.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:r.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"teams/:id/users"}}),r.license=e(r.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"license/describe"},clone:{method:"post",url:r.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}}}),r.campaign=e(r.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"campaigns/describe"},clone:{method:"post",url:r.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/blacklists"}}),r.migration=e(r.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"migrations/describe"},clone:{method:"post",url:r.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.attachment=e(r.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"attachments/describe"},clone:{method:"post",url:r.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.plugin=e(r.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"plugins/describe"},clone:{method:"post",url:r.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:r.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:r.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:r.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:r.baseUrl+"plugins/webhook"}}),r.mailTransferReport=e(r.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatTransferReport=e(r.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxTransferReport=e(r.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelTransferReport=e(r.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsTransferReport=e(r.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmList=e(r.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/lists/describe"},clone:{method:"post",url:r.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:r.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/fields"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/users"}}),r.voicePrefix=e(r.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:r.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/users"}}),r.userProfile=e(r.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfiles/describe"},clone:{method:"post",url:r.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/sections"},getSections:{isArray:!0,method:"get",url:r.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:r.baseUrl+"userProfiles/:id/resources"}}),r.userProfileSection=e(r.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),r.userProfileResource=e(r.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),r.userNotification=e(r.baseUrl+"userNotifications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userNotifications/describe"},clone:{method:"post",url:r.baseUrl+"userNotifications/:id/clone",params:{includeAll:"@includeAll"}},sendUserNotification:{isArray:!1,method:"post",url:r.baseUrl+"userNotifications/"}}),r.whatsappAccount=e(r.baseUrl+"whatsapp/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/accounts/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/users"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/applications"},notify:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/notify"},send:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/send"}}),r.whatsappApplication=e(r.baseUrl+"whatsapp/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/applications/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappInteraction=e(r.baseUrl+"whatsapp/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/interactions/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.whatsappMessage=e(r.baseUrl+"whatsapp/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/messages/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/messages/:id/status"}}),r.whatsappQueueReport=e(r.baseUrl+"whatsapp/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappTransferReport=e(r.baseUrl+"whatsapp/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappQueue=e(r.baseUrl+"whatsapp/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/queues/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/users"}}),r.cloudProvider=e(r.baseUrl+"cloudProviders/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cloudProviders/describe"},clone:{method:"post",url:r.baseUrl+"cloudProviders/:id/clone",params:{includeAll:"@includeAll"}}}),r.realtime=e(r.baseUrl+"realtime",{},{getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),r}e.$inject=["$resource","userProfileManager"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,n){n.setConfig({position:"top-right",sound:!1,html:!0,theme:"material"}),e.useLoader("$translatePartialLoader",{urlTemplate:"{part}/i18n/{lang}.json"}),e.preferredLanguage("en"),e.fallbackLanguage("en"),e.useSanitizeValueStrategy(null)}e.$inject=["$translateProvider","toastyConfigProvider"],angular.module("motion").config(e)}(),function(){"use strict";angular.module("motion")}(),function(){"use strict";function e(e,n,t,a){var i=this;i.themes=e.themes,i.direction="ltr";var s=t.get("motion.language");s&&(n.use(s),0<=["ar","fa","he"].indexOf(s)&&a.setting.get({id:1}).$promise.then(function(e){e&&e.rtlSupport&&(i.direction="rtl")}).catch(function(e){e&&toasty.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})}))}e.$inject=["motionTheming","$translate","$cookies","api"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var n=new Date,t=new Date(e);return t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?a("date")(t.getTime(),"shortTime"):t.getDate()===n.getDate()-1&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(t.getTime(),"shortTime"):a("date")(t.getTime(),"MMM d, y h:mm a")}}function n(e){return{Today:e.instant("DASHBOARDS.TODAY"),Yesterday:e.instant("DASHBOARDS.YESTERDAY"),"This Week":e.instant("DASHBOARDS.THIS_WEEK"),"Last Week":e.instant("DASHBOARDS.LAST_WEEK"),"This Month":e.instant("DASHBOARDS.THIS_MONTH"),"Last Month":e.instant("DASHBOARDS.LAST_MONTH"),"This Year":e.instant("DASHBOARDS.THIS_YEAR"),"Last Year":e.instant("DASHBOARDS.LAST_YEAR"),January:e.instant("DASHBOARDS.JANUARY"),February:e.instant("DASHBOARDS.FEBRUARY"),March:e.instant("DASHBOARDS.MARCH"),April:e.instant("DASHBOARDS.APRIL"),May:e.instant("DASHBOARDS.MAY"),June:e.instant("DASHBOARDS.JUNE"),July:e.instant("DASHBOARDS.JULY"),August:e.instant("DASHBOARDS.AUGUST"),September:e.instant("DASHBOARDS.SEPTEMBER"),October:e.instant("DASHBOARDS.OCTOBER"),November:e.instant("DASHBOARDS.NOVEMBER"),December:e.instant("DASHBOARDS.DECEMBER"),Mon:e.instant("DASHBOARDS.MON"),Tue:e.instant("DASHBOARDS.TUE"),Wed:e.instant("DASHBOARDS.WED"),Thu:e.instant("DASHBOARDS.THU"),Fri:e.instant("DASHBOARDS.FRI"),Sat:e.instant("DASHBOARDS.SAT"),Sun:e.instant("DASHBOARDS.SUN")}}e.$inject=["$filter","$translate"],n.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,n,t){var a,i={},s=0;for(a in e)if(t<=s&&(i[a]=e[a]),++s===t+n)break;return i}}).filter("formatdate",e).factory("IndexFactory",function(){var e=[{value:"jan"},{value:"feb"},{value:"mar"},{value:"apr"},{value:"may"},{value:"jun"},{value:"jul"},{value:"aug"},{value:"sep"},{value:"oct"},{value:"nov"},{value:"dec"}],n=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],t=[{value:"mon"},{value:"tue"},{value:"wed"},{value:"thu"},{value:"fri"},{value:"sat"},{value:"sun"}],a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];return{getMonthName:function(){return e},getMonthNumber:function(){return n},getDaysOfWeek:function(){return t},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",n).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,n,t){var a;t.html5Mode(!0),n.otherwise("/dashboards/general"),angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.get("motion.layoutStyle")||"verticalNavigation",s={verticalNavigation:{main:"app/core/layouts/vertical-navigation.html",toolbar:"app/toolbar/layouts/vertical-navigation/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html",header:"app/header/layouts/vertical-navigation/header.html",footer:"app/footer/layouts/vertical-navigation/footer.html"},verticalNavigationFullwidthToolbar:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html"},verticalNavigationFullwidthToolbar2:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar-2/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html"},horizontalNavigation:{main:"app/core/layouts/horizontal-navigation.html",toolbar:"app/toolbar/layouts/horizontal-navigation/toolbar.html",navigation:"app/navigation/layouts/horizontal-navigation/navigation.html"},contentOnly:{main:"app/core/layouts/content-only.html",toolbar:"",navigation:""},contentWithToolbar:{main:"app/core/layouts/content-with-toolbar.html",toolbar:"app/toolbar/layouts/content-with-toolbar/toolbar.html",navigation:""}};e.state("app",{abstract:!0,views:{"main@":{templateUrl:s[i].main,controller:"MainController as vm"},"toolbar@app":{templateUrl:s[i].toolbar,controller:"ToolbarController as vm"},"navigation@app":{templateUrl:s[i].navigation,controller:"NavigationController as vm"},"quickPanel@app":{templateUrl:"app/quick-panel/quick-panel.html",controller:"QuickPanelController as vm"},"header@app":{templateUrl:s[i].header,controller:"HeaderController as vm"},"footer@app":{templateUrl:s[i].footer,controller:"FooterController as vm"}},resolve:{license:["apiResolver",function(e){return e.resolve("license@get")}],setting:["apiResolver","settingsManager",function(e,n){return e.resolve("setting@get",{id:1}).then(function(e){return n.set(e),e})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,n){e.onStart({},n.showLoadingIndicator),e.onFinish({},n.hideLoadingIndicator)}e.$inject=["$transitions","LoadingIndicatorService"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i,o={};function s(){a.$broadcast("socket:connect"),i&&i.connected||(i=io({query:e.getCurrentUser()?"id="+e.getCurrentUser().id:void 0,transports:["websocket","polling"]})).once("disconnect",n)}function n(e){i.once("connect",s),"logout"===e?i.removeAllListeners():a.$broadcast("socket:disconnect"),i&&i.connected&&i.disconnect()}function r(e,n,t){o[e]||(o[e]=[]),o[e].push({wrapper:n,fn:t})}return{connect:s,disconnect:n,getListeners:function(e){return e?o[e]:o},on:function(e,n){n=n||angular.noop,i||s();var t=function(){var e=arguments;a.$applyAsync(function(){n.apply(i,e)})};r(e,t,n),i.on(e,t)},onWithoutApply:function(e,n){n=n||angular.noop,i||s();var t=function(){n.apply(i,arguments)};r(e,t,n),i.on(e,t)},emit:function(e,n,t){t=t||angular.noop,i||s(),i.emit(e,n,function(){var e=arguments;a.$applyAsync(function(){t.apply(i,e)})})},removeAllListeners:function(e){var n;i||s(),i.removeAllListeners(e),n=e,_.isEmpty(o[n])||delete o[n]},removeListener:function(e,n){i||s();var t=function(e,n){var t=o[e];if(!_.isEmpty(t))for(var a=0;a<t.length;a++){var i=t[a];if(i.fn===n){var s=i.wrapper;return t.splice(a,1),s}}}(e,n);i.removeListener(e,t)}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.progresslogin=!1,r.googleSsoEnabled=!1,r.login=function(){return r.progresslogin=!0,r.message="",s.login(r.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){r.message=e.data?e.data.message:e.message}).finally(function(){r.progresslogin=!1})},r.loginOauth=function(e){r.message="",t.location.href=s.loginSSO(e)},r.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),r.progresslogin=!0,e.put("motion.token",n.params.token),i.user.get({id:n.params.userId}).$promise.then(function(e){e&&(s.setCurrentUser(e),n.go("app.dashboards.general"))}).finally(function(){r.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}r.googleSsoEnabled=o.googleSsoEnabled},r.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting"],angular.module("app.login").controller("LoginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_EXTRACTEDREPORT",g.extractedReport=angular.copy(l),g.extractedReports=r,g.newExtractedReport=!1,g.extractedReport||(g.extractedReport={},g.title="ANALYTICS.NEW_EXTRACTEDREPORT",g.newExtractedReport=!0),g.addNewExtractedReport=function(){g.errors=[],d.analyticExtractedReport.save(g.extractedReport).$promise.then(function(e){g.extractedReports.unshift(e.toJSON()),o.success({title:"ExtractedReport properly created",msg:g.extractedReport.name?g.extractedReport.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveExtractedReport=function(){g.errors=[],d.analyticExtractedReport.update({id:g.extractedReport.id},g.extractedReport).$promise.then(function(e){var n=_.find(g.extractedReports,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ExtractedReport properly saved!",msg:g.extractedReport.name?g.extractedReport.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteExtractedReport=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The extractedReport will be deleted.").ariaLabel("Delete ExtractedReport").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticExtractedReport.delete({id:g.extractedReport.id}).$promise.then(function(){_.remove(g.extractedReports,{id:g.extractedReport.id}),o.success({title:"ExtractedReport properly deleted!",msg:(g.extractedReport.name||"extractedReport")+" has been deleted!"}),v(g.extractedReport)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","extractedReports","extractedReport","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditExtractedReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.extractedReports=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="extractedReports",f.listOrder="",f.listOrderAsc=null,f.selectedExtractedReports=[],f.query={fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{extractedReport:e,extractedReports:f.extractedReports.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.analyticExtractedReport.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.savename;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("extractedReport")+"?").htmlContent("<b>"+(e.name||"extractedReport")+"</b> will be deleted.").ariaLabel("delete extractedReport").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getExtractedReports=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticExtractedReport.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ExtractedReports",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditExtractedReport=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{extractedReport:n,extractedReports:f.extractedReports.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteExtractedReport=y,f.exportSelectedExtractedReports=function(){var e=angular.copy(f.selectedExtractedReports);return f.selectedExtractedReports=[],e},f.deleteSelectedExtractedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent("<b>"+f.selectedExtractedReports.length+" selected</b> will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedExtractedReports.forEach(function(e){y(e)}),f.selectedExtractedReports=[]})},f.deselectExtractedReports=function(){f.selectedExtractedReports=[]},f.selectAllExtractedReports=function(){f.selectedExtractedReports=f.extractedReports.rows};var b=!0,A=1;function E(e){f.extractedReports=e||{count:0,rows:[]}}function y(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(f.extractedReports.rows,{id:e.id}),f.extractedReports.count-=1,f.extractedReports.rows.length||f.getExtractedReports(),p.success({title:_.startCase("ExtractedReport")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticExtractedReport",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getExtractedReports())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","extractedReports","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("ExtractedReportsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_METRIC",g.metric=angular.copy(l),g.metrics=r,g.newMetric=!1,g.metric||(g.metric={table:"report_agent"},g.title="ANALYTICS.NEW_METRIC",g.newMetric=!0),g.addNewMetric=function(){g.errors=[],d.analyticMetric.save(g.metric).$promise.then(function(e){g.metrics.unshift(e.toJSON()),o.success({title:"Metric properly created",msg:g.metric.name?g.metric.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMetric=function(){g.errors=[],d.analyticMetric.update({id:g.metric.id},g.metric).$promise.then(function(e){var n=_.find(g.metrics,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Metric properly saved!",msg:g.metric.name?g.metric.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMetric=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The metric will be deleted.").ariaLabel("Delete Metric").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticMetric.delete({id:g.metric.id}).$promise.then(function(){_.remove(g.metrics,{id:g.metric.id}),o.success({title:"Metric properly deleted!",msg:(g.metric.name||"metric")+" has been deleted!"}),v(g.metric)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","metrics","metric","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditMetricDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.metrics=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="metrics",f.listOrder="",f.listOrderAsc=null,f.selectedMetrics=[],f.query={fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,page:1},f.arraytable=_.keyBy([{option:"Agent Report",value:"'report_agent'"},{option:"Call Report",value:"'report_call'"},{option:"CDR",value:"'cdr'"},{option:"Chat Website",value:"'chat_websites'"},{option:"Chat Interaction",value:"'chat_interactions'"},{option:"Chat Messages",value:"'chat_messages'"},{option:"Chat Offline Messages",value:"'chat_offline_messages'"},{option:"Chat Queues",value:"'chat_queues'"},{option:"Chat Report Queue",value:"'report_chat_queue'"},{option:"Chat Report Transfer",value:"'report_chat_transfer'"},{option:"Companies",value:"'cm_companies'"},{option:"Call transfer report",value:"'report_call_transfer'"},{option:"Contacts",value:"'cm_contacts'"},{option:"CSquare Report",value:"'report_square'"},{option:"CSquare Details Report",value:"'report_square_details'"},{option:"Dial Report",value:"'report_dial'"},{option:"Dialer Hopper Processing",value:"'cm_hopper'"},{option:"Dialer Hopper Logs",value:"'cm_hopper_history'"},{option:"Dialer Hopper Final",value:"'cm_hopper_final'"},{option:"Email Account",value:"'mail_accounts'"},{option:"Email Interaction",value:"'mail_interactions'"},{option:"Email Messages",value:"'mail_messages'"},{option:"Email Queues",value:"'mail_queues'"},{option:"Email Report Queue",value:"'report_mail_queue'"},{option:"Email Report Transfer",value:"'report_mail_transfer'"},{option:"Fax Account",value:"'fax_accounts'"},{option:"Fax Interaction",value:"'fax_interactions'"},{option:"Fax Messages",value:"'fax_messages'"},{option:"Fax Queues",value:"'fax_queues'"},{option:"Fax Report Queue",value:"'report_fax_queue'"},{option:"Fax Report Transfer",value:"'report_fax_transfer'"},{option:"Jscripty Sessions",value:"'report_jscripty_sessions'"},{option:"Jscripty Questions",value:"'report_jscripty_questions'"},{option:"Jscripty Answers",value:"'report_jscripty_answers'"},{option:"Lists",value:"'cm_lists'"},{option:"Member Report",value:"'report_member'"},{option:"Openchannel Account",value:"'openchannel_accounts'"},{option:"Openchannel Interaction",value:"'openchannel_interactions'"},{option:"Openchannel Messages",value:"'openchannel_messages'"},{option:"Openchannel Queues",value:"'openchannel_queues'"},{option:"Openchannel Report Queue",value:"'report_openchannel_queue'"},{option:"Openchannel Report Transfer",value:"'report_openchannel_transfer'"},{option:"Queue Report",value:"'report_queue'"},{option:"SMS Account",value:"'sms_accounts'"},{option:"SMS Interaction",value:"'sms_interactions'"},{option:"SMS Messages",value:"'sms_messages'"},{option:"SMS Queues",value:"'sms_queues'"},{option:"SMS Report Queue",value:"'report_sms_queue'"},{option:"SMS Report Transfer",value:"'report_sms_transfer'"},{option:"Users",value:"'users'"},{option:"Voice Recordings",value:"'voice_recordings'"},{option:"Whatsapp Account",value:"'whatsapp_accounts'"},{option:"Whatsapp Interaction",value:"'whatsapp_interactions'"},{option:"Whatsapp Messages",value:"'whatsapp_messages'"},{option:"Whatsapp Queues",value:"'whatsapp_queues'"},{option:"Whatsapp Report Queue",value:"'report_whatsapp_queue'"},{option:"Whatsapp Report Transfer",value:"'report_whatsapp_transfer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{metric:e,metrics:f.metrics.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("metric")+"?").htmlContent("<b>"+(e.name||"metric")+"</b> will be deleted.").ariaLabel("delete metric").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMetrics=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticMetric.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Metrics",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMetric=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{metric:n,metrics:f.metrics.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMetric=y,f.exportSelectedMetrics=function(){var e=angular.copy(f.selectedMetrics);return f.selectedMetrics=[],e},f.deleteSelectedMetrics=function(e){var n=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent("<b>"+f.selectedMetrics.length+" selected</b> will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMetrics.forEach(function(e){y(e)}),f.selectedMetrics=[]})},f.deselectMetrics=function(){f.selectedMetrics=[]},f.selectAllMetrics=function(){f.selectedMetrics=f.metrics.rows};var b=!0,A=1;function E(e){f.metrics=e||{count:0,rows:[]}}function y(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(f.metrics.rows,{id:e.id}),f.metrics.count-=1,f.metrics.rows.length||f.getMetrics(),p.success({title:_.startCase("Metric")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticMetric",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMetrics())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","metrics","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("MetricsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o){var r=this;function l(){n.hide()}r.errors=[],r.report=angular.copy(t),r.report.name+="-copy",r.treeCustomData=o,r.treeCustomConfig={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},r.treeCustomEvents={select_node:function(e,n){r.currentNode=n.node}},r.copyReport=function(){var t;r.errors=[],i.analyticCustomReport.save({name:r.report.name,description:r.report.description,table:r.report.table,conditions:r.report.conditions,joins:r.report.joins,parent:r.currentNode.id}).$promise.then(function(e){t=e,a.success({title:"Report properly copied!",msg:r.report.name?r.report.name+" has been copied!":""});var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=r.report.id,i.analyticFieldReport.get(n).$promise}).then(function(e){var e=_.map(e.rows,function(e){return _.extend({},e,{CustomReportId:t.id})});return i.analyticFieldReport.bulkCreate(e).$promise}).then(function(){a.success({title:"Fields copied!",msg:"Fields has been copied!"}),l()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:COPYREPORT",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","treeCustomData"],angular.module("app.analytics").controller("CopyReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){n.hide()}c.errors=[],c.joinTables=[],c.title="ANALYTICS.EDIT_REPORT",c.crudPermissions=d,c.report=angular.copy(i),c.reports=a,c.newReport=!1,c.tables=l.getMap(),c.joinTypes=[{key:"join",value:"Join"},{key:"left_join",value:"Left Join"},{key:"right_join",value:"Right Join"},{key:"cross_join",value:"Cross Join"}],c.report||(c.report={name:"",table:"report_agent",description:"",parent:r.id},c.title="ANALYTICS.NEW_REPORT",c.newReport=!0),c.addNewReport=function(){c.errors=[],c.report.joins=_.map(c.joinTables||[],function(e){return{parentKey:e.parentKey,foreignTable:e.name,foreignKey:e.foreignKey,type:e.type.toLowerCase()}}),c.report.joins=JSON.stringify(c.report.joins),s[o].save(c.report).$promise.then(function(e){c.reports.unshift(e),t.success({title:"Report properly created",msg:c.report.name?c.report.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.save"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveReport=function(){c.errors=[],s[o].update({id:c.report.id},c.report).$promise.then(function(e){var n=_.find(c.reports,{id:e.id});n&&_.merge(n,e),t.success({title:"Report properly saved!",msg:c.report.name?c.report.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteReport=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The report will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){s[o].delete({id:c.report.id}).$promise.then(function(){_.remove(c.reports,{id:c.report.id}),t.success({title:"Report properly deleted!",msg:c.report.name?c.report.name+" has been deleted!":""}),m()}).catch(function(e){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.delete"}]})},function(){})},c.closeDialog=m,c.selectedTableChange=function(e){e&&(delete c.selectedItem,c.joinTables.push(e))},c.removeJoin=function(e){c.joinTables.splice(e,1)},c.getFields=function(n,t,e){var a=_.find(c.tables,{name:e});a&&a.api&&s[a.api].describe().$promise.then(function(e){n[t]=_.difference(_.keys(e),["$promise","$resolved"])}).catch(function(e){console.error(e)})}}e.$inject=["$location","$mdDialog","toasty","reports","report","api","apiName","currentNode","describeTable","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportDialogController",e)}(),function(){"use strict";function e(i,s,o,e){var r=this;r.report={},r.conditions=e.getConditions,r.init=function(e,n){r.report=e,r.report.condition=angular.fromJson(e.conditions)||{group:{operator:"AND",rules:[]}},r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1};for(var t=0;t<r.report.condition.group.rules.length;t++)if(r.report.condition.group.rules[t].field){var a=r.report.condition.group.rules[t].field.split(".");1===a.length&&(r.report.condition.group.rules[t].field=r.report.table+"."+r.report.condition.group.rules[t].field)}s.getColumns(r.report.table).then(function(e){r.columns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt"])}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.addCondition=function(e){e.unshift({condition:"=",field:"",value:""})},r.addGroup=function(e){e.push({group:{operator:"AND",rules:[]}})},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the item?").htmlContent("The item will be deleted.").ariaLabel("delete item").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){e.splice(n,1)},function(){console.log("CANCEL")})},r.isValueByCondition=function(e){return!_.includes(["IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"],e)}}e.$inject=["$mdDialog","describeTable","toasty","sqlUtil"],angular.module("app.analytics").controller("ReportConditionsController",e)}(),function(){"use strict";function e(n){var a={report_call_transfer:"voiceTransferReport",cm_companies:"cmCompany",cm_contacts:"cmContact",cm_hopper:"cmHopper",cm_hopper_final:"cmHopperFinal",cm_hopper_history:"cmHopperHistory",cm_lists:"cmList",chat_websites:"chatWebsite",chat_queues:"chatQueue",chat_interactions:"chatInteraction",chat_messages:"chatMessage",chat_offline_messages:"chatOfflineMessage",report_chat_queue:"chatQueueReport",report_chat_transfer:"chatTransferReport",mail_accounts:"mailAccount",mail_queues:"mailQueue",mail_interactions:"mailInteraction",mail_messages:"mailMessage",report_mail_queue:"mailQueueReport",report_mail_transfer:"mailTransferReport",openchannel_accounts:"openchannelAccount",openchannel_queues:"openchannelQueue",openchannel_interactions:"openchannelInteraction",openchannel_messages:"openchannelMessage",report_openchannel_queue:"openchannelQueueReport",report_openchannel_transfer:"openchannelTransferReport",sms_accounts:"smsAccount",sms_queues:"smsQueue",sms_interactions:"smsInteraction",sms_messages:"smsMessage",report_sms_queue:"smsQueueReport",report_sms_transfer:"smsTransferReport",fax_accounts:"faxAccount",fax_queues:"faxQueue",fax_interactions:"faxInteraction",fax_messages:"faxMessage",report_fax_transfer:"faxTransferReport",report_fax_queue:"faxQueueReport",report_call:"voiceCallReport",report_agent:"voiceAgentReport",report_square:"squareReport",report_member:"memberReport",report_queue:"voiceQueueReport",report_square_details:"squareReportDetail",report_dial:"voiceDialReport",report_jscripty_sessions:"jscriptySessionReport",report_jscripty_questions:"jscriptyQuestionReport",report_jscripty_answers:"jscriptyAnswerReport",users:"user",voice_recordings:"voiceRecording",cdr:"cdr",whatsapp_accounts:"whatsappAccount",whatsapp_queues:"whatsappQueue",whatsapp_interactions:"whatsappInteraction",whatsapp_messages:"whatsappMessage",report_whatsapp_queue:"whatsappQueueReport",report_whatsapp_transfer:"whatsappTransferReport"};return{getMap:function(){var t=[];return _.forIn(a,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){return n[a[e]].describe().$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;(u.errors=[],u.title="Edit Report Field",u.report=i,u.reportField=angular.copy(o),u.reportFields=s,u.metrics=r,u.columns=l,u.sqlUtil=d,u.newReportField=!1,u.crudPermissions=m,u.reportField)?(u.reportField.type=u.reportField.custom?"custom":u.reportField.MetricId?"metric":"column",u.reportField.field&&!u.reportField.custom&&_.isNil(u.reportField.MetricId)&&1===u.reportField.field.split(".").length&&(u.reportField.field=u.report.table+"."+u.reportField.field)):(u.reportField={type:"column",function:null,format:null,groupBy:!1,orderBy:null},u.title="New Report Field",u.newReportField=!0);function p(){t.hide()}u.addNewReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,u.reportField.CustomReportId=u.report.id,c.analyticFieldReport.save(u.reportField).$promise.then(function(e){u.reportFields.push(e),a.success({title:"Report field properly created",msg:u.reportField.field?u.reportField.field+" has been created!":u.reportField.type+" has been created!"}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.save"}]})},u.saveReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,c.analyticFieldReport.update({id:u.reportField.id},u.reportField).$promise.then(function(e){var n=_.find(u.reportFields,{id:e.id});n&&_.merge(n,e),a.success({title:"Report Field properly saved!",msg:u.reportField.field?u.reportField.field+" has been saved!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.update"}]})},u.deleteReportField=function(e){u.errors=[];var n=t.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){c.analyticFieldReport.delete({id:u.reportField.id}).$promise.then(function(){_.remove(u.reportFields,{id:u.reportField.id}),a.success({title:"Report Field properly deleted!",msg:u.reportField.field?u.reportField.field+" has been deleted!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReportField.delete"}]})},function(){})},u.closeDialog=p}e.$inject=["$scope","$location","$mdDialog","toasty","report","reportFields","reportField","metrics","columns","sqlUtil","api","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;c.report={},c.reportFields={count:0,rows:[]},c.functions=_.keyBy(l.getFunctions,"value"),c.formats=_.keyBy(l.getFormats,"value"),c.groupBy=_.keyBy(l.getGroupBy,"value"),c.orderBy=_.keyBy(l.getOrderBy,"value"),c.selectedReportFields=[],c.query={fields:"createdAt,updatedAt,id,field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0},c.sortableTable={animation:100,onSort:function(e){o.analyticFieldReport.addFields({id:c.report.id},e.models).$promise.then(function(e){c.reportFields.rows=e}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDFIELDS"})})}},c.init=function(e,n){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,r.getColumns(c.report.table).then(function(e){return c.columns=_.difference(_.keys(e),["$promise","$resolved"]),o.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise}).then(function(e){c.metrics=e.rows}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.getReportFields()},c.deleteConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+c.selectedReportFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n<e.rows.length;n+=1)e.rows[n].MetricId&&(e.rows[n].field=i[e.rows[n].MetricId].metric,e.rows[n].custom=!0),delete e.rows[n].MetricId;var t=o.document.createElement("a");t.href="data:text/json;charset=utf-8,"+o.encodeURIComponent(angular.toJson({name:a.name,description:a.description,table:a.table,conditions:a.conditions,joins:a.joins,fields:e.rows})),t.download=a.name+".json",t.target="_self",t.click(),m.success({title:"Report downloaded!",msg:a.name?a.name+" has been downloaded!":""})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent("<b>"+p.selectedReports.length+" selected</b> will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),h({count:t.length,rows:t})}return h(null)}):h(null)})}}function b(e){p.apiName&&d[p.apiName].delete({id:e.id}).$promise.then(function(){_.remove(p.reports.rows,{id:e.id}),p.reports.count-=1,p.reports.rows.length||p.getReports(),m.success({title:"Report deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.analyticreport.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticreport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function A(e,n){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=n.node.id,f()}function E(e,n){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=n.node.id,f()}function y(e,n){var t=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:t}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=t),m.success({title:"Node Updated",msg:n.node.text?n.node.text+" has been updated!":"Node has been updated!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEanalyticTreeReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}function S(e){return{core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:e?["contextmenu","dnd","search","state","wholerow"]:["search","state","wholerow"],contextmenu:{items:function(t){var e={};return p.crudPermissions.canEdit&&_.assign(e,{create:{label:n.instant("ANALYTICS.CREATE"),action:function(){t=p.treeCustomInstance.jstree(!0).create_node(t),p.treeCustomInstance.jstree(!0).edit(t)}},rename:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.RENAME"),action:function(){p.treeCustomInstance.jstree(!0).edit(t)}}}),p.crudPermissions.canDelete&&_.assign(e,{remove:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.REMOVE"),action:function(){var e=i.confirm().title("Are you sure want to delete the node?").htmlContent("<b>"+(t.text?t.text:"Node")+"</b> and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n=p.treeCustomInstance.jstree(!0).get_parent(t);n=p.treeCustomInstance.jstree(!0).get_node(n),p.treeCustomInstance.jstree(!0).delete_node(t),e=[t.id].concat(t.children_d||[]),d.analyticCustomReport.get({parent:e.join(","),fields:"id,name"}).$promise.then(function(e){e&&e.rows&&e.rows.forEach(function(e){b(e)})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEreportsByParents",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.treeCustomInstance.jstree(!0).select_node(n)})}}}),e}}}}function T(e){return e?{create_node:y,rename_node:y,move_node:y,delete_node:y,select_node:A}:{select_node:E}}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,n){p.treeDefaultInstance&&p.treeDefaultInstance.jstree(!0).search(e),p.treeCustomInstance&&p.treeCustomInstance.jstree(!0).search(e)})}e.$inject=["$scope","$timeout","$document","$mdDialog","$state","$window","$translate","userProfile","userProfileSection","api","treeReports","toasty","Auth"],angular.module("app.analytics").controller("ReportsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r){var l=this;function d(){l.export={id:l.report.id,name:l.report.name,startDate:new Date(moment().startOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,i,s,e,o,r,l,d){var c=this;function m(e){n.hide(e)}c.errors=[],c.title="CALLYSQUARE.EDIT_PROJECT",c.crudPermissions=d,c.project=angular.copy(o),c.newWindow=!0,c.projects=e,c.newProject=!1,c.openFromEditor=l,c.project||(c.project={name:"",description:""},c.title="CALLYSQUARE.NEW_PROJECT",c.newProject=!0),c.addNewProject=function(){c.errors=[],r.squareProject.save(c.project).$promise.then(function(e){return r.user.addSquareProjects({id:i.getCurrentUser().id,ids:[e.id]}).$promise,e}).then(function(e){c.projects.unshift(e),s.success({title:"Project properly created",msg:c.project.name?c.project.name+" has been created!":""}),m(e),c.openFromEditor&&(c.newWindow?t.open("/callysquare/projects/"+e.id,"_blank"):a.go("app.callysquare.projects.edit",{id:e.id}))}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveProject=function(){c.errors=[],r.squareProject.update({id:c.project.id},c.project).$promise.then(function(e){var n=_.find(c.projects,{id:e.id});n&&_.merge(n,e),s.success({title:"Project properly saved!",msg:c.project.name?c.project.name+" has been saved!":""}),m(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteProject=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){r.squareProject.delete({id:c.project.id}).$promise.then(function(){return r.squareProject.getUsers({id:c.project.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(r.user.removeSquareProjects({id:i.getCurrentUser().id,ids:[c.project.id]}).$promise);return $q.all(n)}).then(function(){_.remove(c.projects,{id:c.project.id}),s.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,C,O,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.sms_account_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(C,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.pause_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(O,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(C,"id","name"),pause_id:U(O,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"am",option:"Amharic"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"az",option:"Azerbaijani"},{value:"eu",option:"Basque"},{value:"be",option:"Belarusian"},{value:"bn",option:"Bengali"},{value:"bh",option:"Bihari"},{value:"bs",option:"Bosnian"},{value:"br",option:"Breton"},{value:"bg",option:"Bulgarian"},{value:"km",option:"Cambodian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"co",option:"Corsican"},{value:"hr",option:"Croatian"},{value:"cs",option:"Czech"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"eo",option:"Esperanto"},{value:"et",option:"Estonian"},{value:"fo",option:"Faroese"},{value:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"fy",option:"Frisian"},{value:"gl",option:"Galician"},{value:"ka",option:"Georgian"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gn",option:"Guarani"},{value:"gu",option:"Gujarati"},{value:"xx-hacker",option:"Hacker"},{value:"ha",option:"Hausa"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"ia",option:"Interlingua"},{value:"ga",option:"Irish"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"kk",option:"Kazakh"},{value:"rw",option:"Kinyarwanda"},{value:"rn",option:"Kirundi"},{value:"xx-klingon",option:"Klingon"},{value:"ku",option:"Kurdish"},{value:"ko",option:"Korean"},{value:"ky",option:"Kyrgyz"},{value:"lo",option:"Laothian"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"ln",option:"Lingala"},{value:"lt",option:"Lithuanian"},{value:"mk",option:"Macedonian"},{value:"mg",option:"Malagasy"},{value:"ml",option:"Malayalam"},{value:"mt",option:"Maltese"},{value:"mi",option:"Maori"},{value:"mr",option:"Marathi"},{value:"mo",option:"Moldavian"},{value:"mn",option:"Mongolian"},{value:"sr-ME",option:"Montenegrin"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"nn",option:"Norwegian (Nynorsk)"},{value:"oc",option:"Occitan"},{value:"or",option:"Oriya"},{value:"om",option:"Oromo"},{value:"ps",option:"Pashto"},{value:"fa",option:"Persian"},{value:"xx-pirate",option:"Pirate"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"pa",option:"Punjabi"},{value:"qu",option:"Quechua"},{value:"ro",option:"Romanian"},{value:"rm",option:"Romansh"},{value:"ru",option:"Russian"},{value:"gd",option:"Scots Gaelic"},{value:"sr",option:"Serbian"},{value:"sh",option:"Serbo-Croatian"},{value:"st",option:"Sesotho"},{value:"sn",option:"Shona"},{value:"sd",option:"Sindhi"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"sl",option:"Slovenian"},{value:"so",option:"Somali"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"tg",option:"Tajik"},{value:"ta",option:"Tamil"},{value:"tt",option:"Tatar"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"ti",option:"Tigrinya"},{value:"to",option:"Tonga"},{value:"tr",option:"Turkish"},{value:"tk",option:"Turkmen"},{value:"tw",option:"Twi"},{value:"ug",option:"Uighur"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"uz",option:"Uzbek"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"},{value:"xh",option:"Xhosa"},{value:"yi",option:"Yiddish"},{value:"yo",option:"Yoruba"},{value:"zu",option:"Zulu"}]}).factory("googleAsrLanguage",function(){return[{option:"Afrikaans (South Africa)",value:"af-ZA"},{option:"Albanian (Albania)",value:"sq-AL"},{option:"Amharic (Ethiopia)",value:"am-ET"},{option:"Arabic (Algeria)",value:"ar-DZ"},{option:"Arabic (Bahrain)",value:"ar-BH"},{option:"Arabic (Egypt)",value:"ar-EG"},{option:"Arabic (Iraq)",value:"ar-IQ"},{option:"Arabic (Israel)",value:"ar-IL"},{option:"Arabic (Jordan)",value:"ar-JO"},{option:"Arabic (Kuwait)",value:"ar-KW"},{option:"Arabic (Lebanon)",value:"ar-LB"},{option:"Arabic (Morocco)",value:"ar-MA"},{option:"Arabic (Oman)",value:"ar-OM"},{option:"Arabic (Qatar)",value:"ar-QA"},{option:"Arabic (Saudi Arabia)",value:"ar-SA"},{option:"Arabic (State of Palestine)",value:"ar-PS"},{option:"Arabic (Tunisia)",value:"ar-TN"},{option:"Arabic (United Arab Emirates)",value:"ar-AE"},{option:"Arabic (Yemen)",value:"ar-YE"},{option:"Armenian (Armenia)",value:"hy-AM"},{option:"Azerbaijani (Azerbaijan)",value:"az-AZ"},{option:"Basque (Spain)",value:"eu-ES"},{option:"Bengali (Bangladesh)",value:"bn-BD"},{option:"Bengali (India)",value:"bn-IN"},{option:"Bosnian (Bosnia and Herzegovina)",value:"bs-BA"},{option:"Bulgarian (Bulgaria)",value:"bg-BG"},{option:"Burmese (Myanmar)",value:"my-MM"},{option:"Catalan (Spain)",value:"ca-ES"},{option:"Chinese, Cantonese (Traditional Hong Kong)",value:"yue-Hant-HK"},{option:"Chinese, Mandarin (Simplified, China)",value:"cmn-Hans-CN"},{option:"Croatian (Croatia)",value:"hr-HR"},{option:"Czech (Czech Republic)",value:"cs-CZ"},{option:"Danish (Denmark)",value:"da-DK"},{option:"Dutch (Belgium)",value:"nl-BE"},{option:"Dutch (Netherlands)",value:"nl-NL"},{option:"English (Australia)",value:"en-AU"},{option:"English (Canada)",value:"en-CA"},{option:"English (Ghana)",value:"en-GH"},{option:"English (Hong Kong)",value:"en-HK"},{option:"English (India)",value:"en-IN"},{option:"English (Ireland)",value:"en-IE"},{option:"English (Kenya)",value:"en-KE"},{option:"English (New Zealand)",value:"en-NZ"},{option:"English (Nigeria)",value:"en-NG"},{option:"English (Pakistan)",value:"en-PK"},{option:"English (Philippines)",value:"en-PH"},{option:"English (Singapore)",value:"en-SG"},{option:"English (South Africa)",value:"en-ZA"},{option:"English (Tanzania)",value:"en-TZ"},{option:"English (United Kingdom)",value:"en-GB"},{option:"English (United States)",value:"en-US"},{option:"Estonian (Estonia)",value:"et-EE"},{option:"Filipino (Philippines)",value:"fil-PH"},{option:"Finnish (Finland)",value:"fi-FI"},{option:"French (Belgium)",value:"fr-BE"},{option:"French (Canada)",value:"fr-CA"},{option:"French (France)",value:"fr-FR"},{option:"French (Switzerland)",value:"fr-CH"},{option:"Galician (Spain)",value:"gl-ES"},{option:"Georgian (Georgia)",value:"ka-GE"},{option:"German (Austria)",value:"de-AT"},{option:"German (Germany)",value:"de-DE"},{option:"German (Switzerland)",value:"de-CH"},{option:"Greek (Greece)",value:"el-GR"},{option:"Gujarati (India)",value:"gu-IN"},{option:"Hebrew (Israel)",value:"iw-IL"},{option:"Hindi (India)",value:"hi-IN"},{option:"Hungarian (Hungary)",value:"hu-HU"},{option:"Icelandic (Iceland)",value:"is-IS"},{option:"Indonesian (Indonesia)",value:"id-ID"},{option:"Italian (Italy)",value:"it-IT"},{option:"Italian (Switzerland)",value:"it-CH"},{option:"Japanese (Japan)",value:"ja-JP"},{option:"Javanese (Indonesia)",value:"jv-ID"},{option:"Kannada (India)",value:"kn-IN"},{option:"Kazakh (Kazakhstan)",value:"kk-KZ"},{option:"Khmer (Cambodia)",value:"km-KH"},{option:"Korean (South Korea)",value:"ko-KR"},{option:"Lao (Laos)",value:"lo-LA"},{option:"Latvian (Latvia)",value:"lv-LV"},{option:"Lithuanian (Lithuania)",value:"lt-LT"},{option:"Macedonian (North Macedonia)",value:"mk-MK"},{option:"Malay (Malaysia)",value:"ms-MY"},{option:"Malayalam (India)",value:"ml-IN"},{option:"Marathi (India)",value:"mr-IN"},{option:"Mongolian (Mongolia)",value:"mn-MN"},{option:"Nepali (Nepal)",value:"ne-NP"},{option:"Norwegian Bokmål (Norway)",value:"no-NO"},{option:"Persian (Iran)",value:"fa-IR"},{option:"Polish (Poland)",value:"pl-PL"},{option:"Portuguese (Brazil)",value:"pt-BR"},{option:"Portuguese (Portugal)",value:"pt-PT"},{option:"Punjabi (Gurmukhi India)",value:"pa-Guru-IN"},{option:"Romanian (Romania)",value:"ro-RO"},{option:"Russian (Russia)",value:"ru-RU"},{option:"Serbian (Serbia)",value:"sr-RS"},{option:"Sinhala (Sri Lanka)",value:"si-LK"},{option:"Slovak (Slovakia)",value:"sk-SK"},{option:"Slovenian (Slovenia)",value:"sl-SI"},{option:"Spanish (Argentina)",value:"es-AR"},{option:"Spanish (Bolivia)",value:"es-BO"},{option:"Spanish (Chile)",value:"es-CL"},{option:"Spanish (Colombia)",value:"es-CO"},{option:"Spanish (Costa Rica)",value:"es-CR"},{option:"Spanish (Dominican Republic)",value:"es-DO"},{option:"Spanish (Ecuador)",value:"es-EC"},{option:"Spanish (El Salvador)",value:"es-SV"},{option:"Spanish (Guatemala)",value:"es-GT"},{option:"Spanish (Honduras)",value:"es-HN"},{option:"Spanish (Mexico)",value:"es-MX"},{option:"Spanish (Nicaragua)",value:"es-NI"},{option:"Spanish (Panama)",value:"es-PA"},{option:"Spanish (Paraguay)",value:"es-PY"},{option:"Spanish (Peru)",value:"es-PE"},{option:"Spanish (Puerto Rico)",value:"es-PR"},{option:"Spanish (Spain)",value:"es-ES"},{option:"Spanish (United States)",value:"es-US"},{option:"Spanish (Uruguay)",value:"es-UY"},{option:"Spanish (Venezuela)",value:"es-VE"},{option:"Sundanese (Indonesia)",value:"su-ID"},{option:"Swahili (Kenya)",value:"sw-KE"},{option:"Swahili (Tanzania)",value:"sw-TZ"},{option:"Swedish (Sweden)",value:"sv-SE"},{option:"Tamil (India)",value:"ta-IN"},{option:"Tamil (Malaysia)",value:"ta-MY"},{option:"Tamil (Singapore)",value:"ta-SG"},{option:"Tamil (Sri Lanka)",value:"ta-LK"},{option:"Telugu (India)",value:"te-IN"},{option:"Thai (Thailand)",value:"th-TH"},{option:"Turkish (Turkey)",value:"tr-TR"},{option:"Ukrainian (Ukraine)",value:"uk-UA"},{option:"Urdu (India)",value:"ur-IN"},{option:"Urdu (Pakistan)",value:"ur-PK"},{option:"Uzbek (Uzbekistan)",value:"uz-UZ"},{option:"Vietnamese (Vietnam)",value:"vi-VN"},{option:"Zulu (South Africa)",value:"zu-ZA"}]}).factory("awsPollyVoice",function(){return[{value:"Amy",option:"Amy (English, British, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Conchita",option:"Conchita (Spanish, Castilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Enrique",option:"Enrique (Spanish, Castilian, Male)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Gwineth",option:"Gwineth (Welsh, Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Nicole",option:"Nicole (English, Austrialian, Female)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"}]}).factory("awsPollyRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-east-2",option:"US East (Ohio)"},{value:"us-west-1",option:"US West (N. California)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"ca-central-1",option:"Canada (Central)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"eu-central-1",option:"EU (Frankfurt)"},{value:"eu-west-2",option:"EU (London)"},{value:"eu-west-3",option:"EU (Paris)"},{value:"ap-southeast-1",option:"Asia Pacific (Singapore)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"},{value:"ap-northeast-2",option:"Asia Pacific (Seoul)"},{value:"ap-northeast-1",option:"Asia Pacific (Tokyo)"},{value:"ap-south-1",option:"Asia Pacific (Mumbai)"},{value:"sa-east-1",option:"South America (São Paulo)"}]}).factory("awsLexRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"}]}).factory("dialogFlowLanguage",function(){return[{value:"da",option:"Danish"},{value:"en",option:"English"},{value:"de",option:"German"},{value:"it",option:"Italian"},{value:"es",option:"Spanish"},{value:"fr",option:"French"},{value:"id",option:"Indonesian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean (South Korea)"},{value:"nl",option:"Dutch"},{value:"no",option:"Norwegian"},{value:"pt",option:"Portuguese (European)"},{value:"pt-br",option:"Portuguese (Nrazilian)"},{value:"ru",option:"Russian"},{value:"sv",option:"Swedish"},{value:"th",option:"Thai"},{value:"uk",option:"Ukrainian"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-HK",option:"Chinese (Hong Kong)"},{value:"zh-TW",option:"Chinese (Traditional)"}]}).factory("dialogFlowV2Language",function(){return[{value:"zh-HK",option:"Chinese (Cantonese)"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"en-AU",option:"English (Australia)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (Great Britain)"},{value:"en-IN",option:"English (India)"},{value:"en-US",option:"English (US)"},{value:"fr",option:"French"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"France (France)"},{value:"de",option:"German"},{value:"hi",option:"Hindi"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ru",option:"Russian"},{value:"es",option:"Spanish"},{value:"es-419",option:"Spanish (Latin America)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"sw",option:"Swedish"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"}]})}(),function(){"use strict";function e(n,e,t,a){var i=this;i.project={preproduction:t},i.closeDialog=function(e){e?(a(i.project.preproduction),n.hide(i.project.preproduction)):n.hide()}}e.$inject=["$mdDialog","toasty","currentXML","saveCallback"],angular.module("app.callysquare").controller("MxGraphEditXMLController",e)}(),function(){"use strict";function e(n,t){var a=this;function i(e){e?(t(e),n.hide(e)):n.hide()}a.errors=[],a.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:5242880,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},a.ngFlow={flow:{}},a.dropping=!1,a.closeDialog=i,a.fileAdded=function(e){a.errors=[];_.includes(["xml"],e.getExtension())||a.errors.push({message:"The extension "+e.getExtension()+" is not supported!"});5242880<e.size&&a.errors.push({message:"The file is too big. The max allowed size is 5MB"});if(!a.errors.length){var n=new FileReader;n.onload=function(e){i(e.target.result)},n.readAsText(e.file)}}}e.$inject=["$mdDialog","saveCallback"],angular.module("app.callysquare").controller("MxGraphImportXMLController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;i.project=_.clone(e),i.closeDialog=function(){n.hide()},i.save=function(){i.errors=[],a.squareProject.update({id:i.project.id},{notes:i.project.notes,description:i.project.description}).$promise.then(function(e){t.success({title:"Project updated!",msg:i.project.name?i.project.name+" has been updated!":""}),n.hide(e)}).catch(function(e){console.error(e),i.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}]})}}e.$inject=["$mdDialog","toasty","project","api"],angular.module("app.callysquare").controller("MxGraphUpdateInfoController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.projects=t,s.id="",s.newWindow=!0,s.closeDialog=function(e){s.errors=[],e?(n.hide(),s.newWindow?a.open("/callysquare/projects/"+s.id,"_blank"):i.go("app.callysquare.projects.edit",{id:s.id})):n.hide()}}e.$inject=["$mdDialog","toasty","projects","$window","$state"],angular.module("app.callysquare").controller("MxGraphOpenProjectController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o){var r=this;function l(){return a.squareProject.getUsers({id:r.project.id,fields:"id,name,fullname,internal",nolimit:!0,role:"user"}).$promise.then(function(e){return r.selectedItems=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.selectedItems=r.selectedItems,a.user.get({fields:"id,fullname,name,internal",role:"user",nolimit:!0}).$promise}).then(function(e){r.items=e.rows?_.map(e.rows,function(e){return e}):[],r.dualMultiselectOptions.items=_.differenceBy(r.items,r.selectedItems,"id")}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}r.project=n,r.penalty=0,r.items=[],r.selectedItems=[],r.closeDialog=function(){e.hide()},r.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("CALLYSQUARE.ALL_USERS"),labelSelected:s.instant("CALLYSQUARE.SELECTED_USERS"),transferCallback:function(e,n){a.squareProject[n?"removeUsers":"addUsers"]({id:r.project.id,ids:_.map(e,"id"),penalty:r.penalty||0}).$promise.then(function(){t.success({title:"Project properly "+(n?"removed":"added"),msg:"Project has been "+(n?"removed":"added")+"!"}),n||l()}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:squareProjects.ADDUSERS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},l()}e.$inject=["$mdDialog","toasty","api","project","projects","$translate","Auth"],angular.module("app.callysquare").controller("ProjectspermissionaddController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATQUEUE",g.chatQueue=angular.copy(l),g.chatQueues=r,g.newChatQueue=!1,g.chatQueue||(g.chatQueue={strategy:"beepall",timeout:10},g.title="CHAT.NEW_CHATQUEUE",g.newChatQueue=!0),g.addNewChatQueue=function(){g.errors=[],d.chatQueue.save(g.chatQueue).$promise.then(function(e){g.chatQueues.unshift(e.toJSON()),o.success({title:"ChatQueue properly created",msg:g.chatQueue.name?g.chatQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatQueue=function(){g.errors=[],d.chatQueue.update({id:g.chatQueue.id},g.chatQueue).$promise.then(function(e){var n=_.find(g.chatQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ChatQueue properly saved!",msg:g.chatQueue.name?g.chatQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatQueue.delete({id:g.chatQueue.id}).$promise.then(function(){_.remove(g.chatQueues,{id:g.chatQueue.id}),o.success({title:"ChatQueue properly deleted!",msg:(g.chatQueue.name||"chatQueue")+" has been deleted!"}),v(g.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatQueues","chatQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,u).$promise}function g(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getChatWebsiteInteractions=p,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=g,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){g(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"chat",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsChatRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("chat_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userChatQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userChatQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.chatPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.chatPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("chat_queue:save"),o.removeAllListeners("userChatQueue:remove"),o.removeAllListeners("userChatQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.chat").controller("QueuesChatRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){C(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=C,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){C(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.hasPermission=function(){return f.hasPermission(303)||f.hasRole("admin")},A.fileAdded=function(e){var n=["csv"];if(!_.includes(n,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>y)return h.error({title:"File too big",msg:"The max allowed size is "+E+"MB"}),!1;return!0},a.params.ListId&&(A.selectedList=a.params.ListId),a.params.CompanyId&&(A.selectedCompany=a.params.CompanyId),n.$watch("vm.options.isOpen",function(e){e?t(function(){n.tooltipVisible=A.options.isOpen},600):n.tooltipVisible=A.options.isOpen});var S=!0,T=1;function I(e){A.contacts=e||{count:0,rows:[]}}function C(e){d.cmContact.delete({id:e.id}).$promise.then(function(){_.remove(A.contacts.rows,{id:e.id}),A.contacts.count-=1,A.contacts.rows.length||A.getContacts(),h.success({title:"Contact deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}];for(var n=0;n<e.data.errors.length;n++)h.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}n.$watch("vm.query.filter",function(e,n){S?t(function(){S=!1}):(n||(T=A.query.page),e!==n&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),n.$watch("vm.selectedList",function(e,n){e!==n&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),n.$watch("vm.selectedCompany",function(e,n){e!==n&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),n.$watch("vm.selectedTags",function(e,n){(e.length||n.length)&&A.getContacts()})}e.$inject=["$scope","$document","$timeout","$state","$stateParams","$mdDialog","$q","userProfile","userProfileSection","api","contacts","lists","listsMap","companies","companiesMap","tags","toasty","Auth","license"],angular.module("app.contactmanager").controller("ContactsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o,r,l,d){var c=this;function m(){t.hide()}c.errors=[],c.title="CONTACTMANAGER.EDIT_CONTACT",c.crudPermissions=d,c.contact=angular.copy(s),c.contacts=e||{rows:[],count:0},c.lists=n||{rows:[],count:0},c.companies=i||{rows:[],count:0},c.customFields={rows:[],count:0},c.newContact=!1,c.contact?(delete c.contact.List,c.ListId=c.contact.ListId||void 0):(c.contact={ListId:o?parseInt(o,10):void 0,CompanyId:r?parseInt(r,10):void 0},c.title="CONTACTMANAGER.NEW_CONTACT",c.newContact=!0),c.addNewContact=function(){c.errors=[],l.cmContact.save(c.contact).$promise.then(function(e){c.contacts.unshift(e),a.success({title:"Contact properly created",msg:c.contact.name?c.contact.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contacts.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveContact=function(){c.errors=[],l.cmContact.update({id:c.contact.id},c.contact).$promise.then(function(e){var n=_.find(c.contacts,{id:e.id});n&&_.merge(n,e),a.success({title:"Contact properly saved!",msg:c.contact.name?c.contact.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteContact=function(e){c.errors=[];var n=t.confirm().title("Are you sure?").content("The contact will be deleted.").ariaLabel("Delete Contact").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){l.cmContact.delete({id:c.contact.id}).$promise.then(function(){_.remove(c.contacts,{id:c.contact.id}),a.success({title:"Contact properly deleted!",msg:c.contact.name?c.contact.name+" has been deleted!":""}),m()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},c.closeDialog=m,c.getCustomFields=function(e){{if(e)return l.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){c.customFields=e;var n=_.map(c.customFields.rows,function(e){return"cf_"+e.id});l.cmContact.get({id:c.contact.id,attributes:n,raw:!0}).$promise.then(function(e){c.contact=_.merge(c.contact,e)})}}).catch(function(e){console.error(e)});c.customFields={rows:[],count:0}}},c.getDateFromString=function(e){return null===e?void 0:new Date(e)}}e.$inject=["$mdDialog","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(t),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[],delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){a.unshift(e),n.success({title:"Contact properly created",msg:o.contact.name?o.contact.name+" has been created!":""}),r()}).catch(function(e){console.error(e),o.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("DuplicateContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="CONTACTMANAGER.EDIT_HOPPER",d.hopper=angular.copy(o),d.hoppers=s,d.newHopper=!1,d.crudPermissions=l,d.hopper||(d.hopper={},d.title="CONTACTMANAGER.NEW_HOPPER",d.newHopper=!0),d.saveHopper=function(){d.errors=[],r.cmHopper.update({id:d.hopper.id},d.hopper).$promise.then(function(e){var n=_.find(d.hoppers,{id:e.id});n&&_.merge(n,e),i.success({title:"Hopper properly saved!",msg:d.hopper.name?d.hopper.name+" has been saved!":""}),c(e)}).catch(function(e){console.error(e),d.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}]})},d.getDateFromString=function(e){return null===e?void 0:new Date(e)},d.closeDialog=c}e.$inject=["$scope","$state","$location","$mdDialog","toasty","hoppers","hopper","api","crudPermissions"],angular.module("app.contactmanager.contacts").controller("EditHopperDialogController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S=this;function T(n){return function(e){S[n]=e||{count:0,rows:[]}}}function I(){S.queryHopper.offset=(S.queryHopper.page-1)*S.queryHopper.limit,S.queryHopper.id=S.contact.id,S.promise=r.cmContact.getHoppers(S.queryHopper,T("hoppers")).$promise}function C(){S.queryFinal.offset=(S.queryFinal.page-1)*S.queryFinal.limit,S.queryFinal.id=S.contact.id,S.promise=r.cmContact.getHopperFinals(S.queryFinal,T("finals")).$promise}function O(){S.queryHistory.offset=(S.queryHistory.page-1)*S.queryHistory.limit,S.queryHistory.id=S.contact.id,S.promise=r.cmContact.getHopperHistories(S.queryHistory,T("histories")).$promise}function w(e){S.journeyIsLoading=!0;var n=_.merge(S.journeyOptions,{id:S.contact.id,offset:e||0});return y.get(S.journey,n).then(function(e){S.journey=e.journey,S.canLoadMoreJourney=e.loadMore}).finally(function(){S.journeyIsLoading=!1})}S.currentUser=A.getCurrentUser(),S.license=b,S.journey=[],S.contact=l||{},S.hoppers=d||{rows:[],count:0},S.finals=c||{rows:[],count:0},S.histories=m||{rows:[],count:0},S.companies=p||{rows:[],count:0},S.lists=g||{rows:[],count:0},S.customFields=v||{rows:[],count:0},S.tags=h||{rows:[],count:0},S.jscriptySessions=f||{rows:[],count:0},S.journeyOptions=y.getQuery(),S.quickFilters=y.getQuickFilters(),S.journeyTimelineOptions={scrollEl:"#journey-content"},S.userProfileSection=E&&1==E.count?E.rows[0]:null,S.crudPermissions=A.parseCrudPermissions(S.userProfileSection?S.userProfileSection.crudPermissions:null),S.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),S.queryHopper={fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,page:1},S.queryFinal={fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-id",limit:10,page:1},S.queryHistory={fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-id",limit:10,page:1},S.queryJscriptySession={fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,page:1},S.selectedTab=n.params.tab||0,S.onInit=function(){A.hasRole("admin")||(function(){if(!_.some(S.companies.rows,{id:S.contact.CompanyId}))r.cmCompany.get({id:S.contact.CompanyId,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,S.companies.rows.push(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}(),function(){var e=_.map(S.contact.Tags,function(e){return{id:e.id,name:e.name}});if(!_.isEmpty(e))for(var n=0;n<e.length;n++)_.some(S.tags.rows,{id:e.id})||(e[n].canSelect=!1,S.tags.rows.push(e[n]))}());return r.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){S.users=e||{count:0,rows:[]},S.usersMap=_.mapValues(_.keyBy(S.users.rows,"id"),"fullname"),S.Tags=_.map(S.contact.Tags,"id")}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){n.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:S.currentUser.userProfileId,section:"Lists",fields:"id,name"})}]},locals:{contacts:u.rows,contact:l}})},S.saveContact=function(){r.cmContact.update({id:S.contact.id},S.contact).$promise.then(function(){o.success({title:"Contact updated!",msg:S.contact.name?S.contact.name+" has been updated!":""})}).then(function(){return r.cmContact.setTags({id:S.contact.id,ids:S.Tags}).$promise}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEcontact",msg:e.data?JSON.stringify(e.data):e.toString()})})},S.editCompany=function(e,n){var t=_.find(S.companies.rows,{id:n});i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{companies:[],license:null,setting:null,crudPermissions:!1===t.canSelect?{readOnly:!0,canEdit:!1,canDelete:!1}:r.userProfileSection.get({userProfileId:S.currentUser.userProfileId,sectionId:302}).$promise.then(function(e){var n=e.rows?e.rows[0]:null;return A.parseCrudPermissions(n?n.crudPermissions:null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:GET_COMPANY_SECTION",msg:e.data?JSON.stringify(e.data):e.toString()})})},resolve:{company:["apiResolver",function(e){return e.resolve("cmCompany@get",{id:n})}]}})},S.onSelectList=function(e){if(S.contact.ListId){var n=i.confirm().title("You are selecting the list number: "+S.contact.ListId).textContent("Warning! You won't select a different list for the contact "+S.contact.firstName||S.contact.lastName||S.contact.id).targetEvent(e).ok("Ok").cancel("Cancel");return i.show(n).then(S.onSelectListSuccess).catch(function(){S.contact.ListId=null})}},S.onSelectListSuccess=function(){return r.cmList.getCustomFields({id:S.contact.ListId}).$promise.then(function(e){S.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},S.getDateFromString=function(e){return null===e?void 0:new Date(e)},S.getHoppers=I,S.getFinals=C,S.getHistories=O,S.getJscriptySessions=function(){S.queryJscriptySession.offset=(S.queryJscriptySession.page-1)*S.queryJscriptySession.limit,S.queryJscriptySession.id=S.contact.id,S.promise=r.cmContact.getJscriptySessions(S.queryJscriptySession,T("jscriptySessions")).$promise},S.deleteconfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the agent?").htmlContent("<b>"+(n.phone||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(S.hoppers.rows,{id:e.id}),S.hoppers.count--,S.hoppers.rows.length||S.getHoppers(),o.success({title:"Hopper deleted!",msg:e.phone?e.phone+" has been deleted!":""})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEhopper",msg:e.data?JSON.stringify(e.data):e.toString()})})},function(){console.log("CANCEL")})},S.editHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.getCustomerJourney=w,S.loadMoreJourney=function(){return s(function(e,n){var t=S.journey.length;return e(w(t))})};var R=!0,x=1;e.$watch("vm.queryHopper.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHopper.page),e!==n&&(S.queryHopper.page=1),e||(S.queryHopper.page=x),I())}),e.$watch("vm.queryFinal.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryFinal.page),e!==n&&(S.queryFinal.page=1),e||(S.queryFinal.page=x),C())}),e.$watch("vm.queryHistory.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHistory.page),e!==n&&(S.queryHistory.page=1),e||(S.queryHistory.page=x),O())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","$q","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection","customerJourneyManager"],angular.module("app.contactmanager.contacts").controller("ContactController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"firstName",required:!0},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1}],g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.import({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=s.getCurrentUser(),d.userProfile=r,d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=s.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null),d.customDashboard={},d.voiceQueues=o&&o.count?o:{count:0,rows:[]},d.voiceQueuesSelected=o&&o.count?_.map(o.rows,"id"):[],d.interval=n(function(){},1e3),d.onChangeVoiceQueues=function(){for(var e=0;e<d.customDashboard.widgets.length;e+=1)d.customDashboard.widgets[e].voiceQueuesSelected=d.voiceQueuesSelected},d.goToEdit=function(){e.go("app.tools.customDashboards.edit",{id:d.customDashboard.id,tab:1})},i.onWithoutApply("voice_queue:save",function(e){var n=_.find(d.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return d.customDashboard=e,d.customDashboard.widgets=[],d.customDashboard.preview=!0,d.customDashboard.draggable={enabled:!1},d.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:d.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=d.voiceQueues,e.rows[n].voiceQueuesSelected=d.voiceQueuesSelected,d.customDashboard.widgets.push(e.rows[n])}).catch(function(e){d.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),d.interval&&n.cancel(d.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","voiceQueues","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,i,s,o,r,l,n,d,t,a,c,m,u,p,g,v,h,f,b){var A=this;function E(e){var n={};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&(n[t]=_.pick(A.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(A.tabs[t].contact)||(n[t].contact=_.pick(A.tabs[t].contact,["id","ListId"])),_.isNil(A.tabs[t].calls)||(n[t].calls=A.tabs[t].calls),A.tabs[t].interaction&&(n[t].interaction=_.pick(A.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(s.localStorage.getItem("motion2.user:"+A.user.id));a?(a.tabs=n,a.currentTab=A.currentTab,a.autoClose=A.autoClose):a={tabs:n,currentTab:A.currentTab,autoClose:A.autoClose},s.localStorage.setItem("motion2.user:"+A.user.id,JSON.stringify(a)),e&&y(e)}function y(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:A.user.id,online:!0,capacity:{mail:0,fax:0,sms:0,whatsapp:0,openchannel:0,chat:0},interaction:{mail:[],fax:[],sms:[],whatsapp:[],openchannel:[],chat:[]}};for(var t in A.tabs)A.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(A.tabs[t].channel)&&A.tabs[t].interaction&&!A.tabs[t].interaction.closed&&(n.capacity[A.tabs[t].channel]+=1,n.interaction[A.tabs[t].channel].push(A.tabs[t].interaction.id));if(!_.isEqual(A.agentCapacity,n.capacity))return A.agentCapacity=n.capacity,d.rpc.setAgentCapacity(n)}}function S(e){A.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)d.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:A.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){console.error(e)})}(A.tabs[e.id]),delete A.tabs[e.id],A.currentTab=0,E(e))}function T(e){e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,A.tabs[e.id]=e,A.currentTab=e.id,E(e)}function I(n){return _.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function C(n,t){var e,a,i={type:"contact",title:n?(e=n,a="",e&&(e.firstName||e.lastName?(e.firstName&&(a+=e.firstName+" "),e.lastName&&(a+=e.lastName)):e.phone&&(a=e.phone)),a=A.user.privacyEnabled?b.mask(a):a):o.instant("DASHBOARDS.NEW_CONTACT"),icon:"icon-account-circle",color:"red",contact:n,calls:t?[t]:[],autoCreate:t?t.autoCreate:0};if(t&&(t.answertime||(t.answertime=t.agentconnectAt),(t.agentcompleteAt||t.endtime)&&N(t)),n){var s=_.find(A.tabs,function(e){return e.contact&&e.contact.id?"contact"===e.type&&e.contact&&e.contact.id==n.id:"contact"===e.type&&e.contact&&e.contact.phone==n.phone});if(s){if(t)return d.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){(e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime),s.calls)?_.find(s.calls,function(e){return e.uniqueid===t.uniqueid})||s.calls.push(t):s.calls=[t];A.currentTab=s.id})}else{if(n.ListId)return d.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,d.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(D()).finally(function(){T(i)});T(i)}}else T(i)}function O(n,t){var e=_.find(A.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,A.currentTab=e.id):T(e={type:"interaction",title:n?n.toUpperCase():"openchannel",icon:function(e){switch(e){case"chat":return"icon-hangouts";case"mail":return"icon-email";case"sms":return"icon-message-text";case"openchannel":return"icon-google-earth";case"fax":return"icon-deskphone";case"whatsapp":return"icon-whatsapp";default:return"icon-hangouts"}}(n),color:function(e){switch(e){case"chat":return"green-A700";case"mail":return"teal";case"sms":return"orange";case"openchannel":return"amber-A200";case"fax":return"blue-grey-A200";case"whatsapp":return"lime-A700";default:return"grey"}}(n),channel:n,interaction:t,isDraft:t.isDraft||!1})}function w(e){e&&e.uniqueid&&A.notifications[e.uniqueid]&&(a.clear(A.notifications[e.uniqueid]),delete A.notifications[e.uniqueid])}function R(n){var t=n.uniqueid;for(var e in console.debug("onVoiceChannelRemove -> evt",n),A.tabs)if(A.tabs.hasOwnProperty(e)){var a=A.tabs[e];if(a.calls){console.debug("onVoiceChannelRemove ->  key, tab, tab.calls",e,a,a.calls);var i=_.findIndex(a.calls,function(e){return e.uniqueid===t});i<0&&0<=(i=_.findIndex(a.calls,function(e){return e.uniqueid===n.linkedid}))&&(t=n.linkedid),0<=i&&!a.calls[i].disposedAt?(console.debug("Allowing disposition for call %s",a.calls[i].uniqueid),N(a.calls[i])):console.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&l(x(t,a.contact.id,a),1e3)}}E()}function x(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return d.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){console.error(e)})}}function N(e){e.disposedAt=new Date}function D(){return function(e){if(404===e.status)a.warning({title:o.instant("DASHBOARDS.ATTENTION"),msg:o.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}A.license=g,A.setting=v,A.detectBrowser=f.detectBrowser(),A.user=n.getCurrentUser(),A.currentTab=0,A.notifications={},A.tabs={},A.agentCapacity={},A.autoClose=!1,A.globalUserLists=c||{count:0,rows:[]},A.globalLists=m||{count:0,rows:[]},A.globalCompanies=u||{count:0,rows:[]},A.globalTags=p||{count:0,rows:[]},A.onClickTab=function(e){A.currentTab=e,E(A.tabs[e])},A.isActiveTab=function(e){return e===A.currentTab},A.alreadyExistsTab=I,A.addContactTab=C,A.addInteractionTab=O,A.addTab=T,A.removeTab=S,A.updateLocalStorage=E,A.closeTab=function(e){var n=i.confirm().title("interaction"===e.type?"Do you want to close the interaction?":"Are you sure want to close the "+e.type+"?").textContent("interaction"===e.type?"":"The "+e.type+" has been modified. Closing will lose all changes!").ariaLabel("Close Contact").ok("interaction"===e.type?"YES":"OK").cancel("interaction"===e.type?"NO":"CANCEL");{if(!e.saved){var t=A.user.voicePause||A.user.chatPause||A.user.mailPause||A.user.openchannelPause||A.user.faxPause,a=!1;return"interaction"===e.type&&(a=e.interaction.Account.mandatoryDisposition),i.show(n).then(function(){"interaction"===e.type&&i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(r.body),onRemoving:function(e,n){A.user&&a&&!t&&d.user.unpause({id:A.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:!a,escapeToClose:!a,locals:{user:A.user,channel:e.channel,interaction:e.interaction}}),S(e)}).catch(function(){"interaction"===e.type&&S(e)})}var a=!1;if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(a=!0)}),"contact"===e.type&&0<e.calls.length){if(!a)return n._options.textContent="There is a call that hasn't been disposed yet.",i.show(n).then(function(){S(e)});alert=i.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK"),i.show(alert).finally(function(){alert=void 0})}else S(e)}},t.on("trigger:contactmanager",function(n){if(!_.isNil(n.contacts)&&1===n.contacts.length)return void C(n.contact,n.evt);i.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(r.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){C(e,n.evt)})}),t.on("trigger:jscripty",function(t){return d.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return d.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user,contact:e}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(D());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:A.user}))}catch(e){console.error(e)}T({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(D())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return d.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&T({type:"bot",title:t+" <"+a+">",icon:"fas fa-robot",color:"pink",data:{uniqueid:n.uniqueid}})})}),t.on("trigger:browser:url",function(e){if(e&&e.uri)if(e.uri=_.replace(e.uri,"&lt%3B",""),e.uri=_.replace(e.uri,"=&gt%3B=",""),e.uriLocation)switch(e.uriLocation){case"0":s.open(e.uri);break;case"1":s.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":var n={type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri};T(n);break;default:s.open(e.uri)}else s.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&T({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(e){if(e&&e.uniqueid){t=e,h.isSupported()?h.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"../../../../../../../assets/images/avatars/customer.png",body:(e=t).queue?"Queue: "+e.queue:"",focusOnclick:!0,closeOnClick:!0},h.show(e.title,n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.");var n=I(e);if(n){if(d[e.channel+"Message"])return A.currentTab!==n.id&&(n.badges+=1),d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id}).$promise.catch(D())}else a.wait({title:e.title,msg:e.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:e.sound,html:!0,shake:e.shake||!1,onAdd:function(){A.notifications[e.uniqueid]=this.id},onAccept:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].accept({id:e.id,UserId:A.user.id,manual:!0}).$promise.then(function(e){O(e.channel,e.interaction),a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(D())},onReject:function(){if(w(e),d[e.channel+"Message"])return d[e.channel+"Message"].reject({id:e.id,UserId:A.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(D())}})}var t}),t.on("notification:remove",w),t.on("voice_queue_channel:remove",R),t.on("voice_outbound_channel:remove",R),function(){var e=s.localStorage.getItem("motion2.user:"+A.user.id);if(e)try{e=JSON.parse(e),A.tabs=e.tabs?e.tabs:{},A.currentTab=e.currentTab?e.currentTab:0,A.autoClose=!!e.autoClose&&e.autoClose,y(A.tabs[A.currentTab])}catch(e){console.error(e)}}(),e.$on("$destroy",function(){for(var e in A.notifications)A.notifications.hasOwnProperty(e)&&w({uniqueid:e});t.removeAllListeners("trigger:contactmanager"),t.removeAllListeners("trigger:jscripty"),t.removeAllListeners("trigger:browser:url"),t.removeAllListeners("trigger:browser:popup"),t.removeAllListeners("notification:save"),t.removeAllListeners("notification:remove"),t.removeAllListeners("voice_queue_channel:remove"),t.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager"],angular.module("app.dashboards").controller("AgentDashboardGeneralController",e)}(),function(){"use strict";angular.module("app.dashboards").provider("desktopNotification",function(){var f={autoClose:!0,duration:5,showOnPageHidden:!1};return{config:function(e){for(var n in e)f.hasOwnProperty(n)&&null!=e[n]&&(f[n]=e[n])},$get:["$q","$timeout","$window","PERMISSIONS",function(e,u,n,p){var g=n.Notification||n.mozNotification||n.webkitNotification;return{isSupported:v,currentPermission:h,requestPermission:function(){if(!v())return e.reject("Notification API not supported");var t=e.defer();Promise.resolve(g.requestPermission)==g.requestPermission?g.requestPermission().then(function(e){p.GRANTED===e?t.resolve(e):t.reject(e)}):g.requestPermission(function(e,n){p.GRANTED===e?t.resolve(e):t.reject(e)});return t.promise},show:function(e,n){if(n=n||{},!v()||(t=e,a=n,i=angular.isString(t),s=!a.onClick||angular.isFunction(a.onClick),!i||!s)||function(e){if(e||f.showOnPageHidden)return!(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)}(n.showOnPageHidden)||h()!==p.GRANTED)return;var t,a,i,s;var o=new g(e,n),r=n.duration||f.duration,l=void 0===n.autoClose?f.autoClose:n.autoClose;o.onclick=function(){n.onClick&&n.onClick(),n.focusOnclick&&window.focus(),n.closeOnClick&&o.close()},l&&(d=o,c=r,m=1e3*c,u(d.close.bind(d),m,!1));var d,c,m;return o},permissions:{default:p.DEFAULT,granted:p.GRANTED,denied:p.DENIED}};function v(){return!(void 0===g)}function h(){return(g||{}).permission}}]}}).provider("msNavigationAgentService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function n(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=d(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=d(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=n,this.deleteItem=function(e){if(!angular.isString(e))return void r.error("path must be a string (eg. `dashboard.project`)");for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1},this.$get=function(){var e={saveItem:n,getNavigation:function(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}};return e}}).constant("PERMISSIONS",{DEFAULT:"default",GRANTED:"granted",DENIED:"denied"})}(),function(){"use strict";function e(t){var a=this;a.setting={},a.messages={count:0,rows:[]},a.showInteraction=!1,a.init=function(e,n){{if(a.setting=n,a.tab=e,a.tab.saved=!0,a.tab&&a.tab.data&&a.tab.data.uniqueid)return t.squareMessage.get({uniqueid:a.tab.data.uniqueid}).$promise.then(function(e){a.messages=e}).finally(function(){a.showInteraction=!0});a.showInteraction=!0}},a.getMessagesAlignment=function(e){switch(a.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}}}e.$inject=["api"],angular.module("app.dashboards").controller("AgentGeneralBotController",e)}(),function(){"use strict";function e(a,d,c,t,m,i,u,p,s,o,e,r,n,l){var g=this;function v(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function h(n){return function(e){g[n]=e||{count:0,rows:[]}}}function f(){g.contact&&g.contact.id&&(g.queryHopper.ContactId=g.contact.id,g.queryHopper.offset=(g.queryHopper.page-1)*g.queryHopper.limit,g.promise=u.cmHopper.get(g.queryHopper,h("hoppers")).$promise)}function b(){g.contact&&g.contact.id&&(g.queryFinal.ContactId=g.contact.id,g.queryFinal.offset=(g.queryFinal.page-1)*g.queryFinal.limit,g.promise=u.cmHopperFinal.get(g.queryFinal,h("finals")).$promise)}function A(){g.contact&&g.contact.id&&(g.queryHistory.ContactId=g.contact.id,g.queryHistory.offset=(g.queryHistory.page-1)*g.queryHistory.limit,g.promise=u.cmHopperHistory.get(g.queryHistory,h("histories")).$promise)}function E(e){return null===e?void 0:new Date(e)}function y(e){g.journeyIsLoading=!0;var n=_.merge(g.journeyOptions,{id:g.contact.id,offset:e||0});return r.get(g.journey,n).then(function(e){g.journey=e.journey,g.canLoadMoreJourney=e.loadMore}).finally(function(){g.journeyIsLoading=!1})}g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.journey=[],g.queryHopper={fields:"id,phone,scheduledat",sort:"-updatedAt",limit:10,page:1},g.queryFinal={fields:"uniqueid,calleridnum,statedesc,starttime,disposition,secondDisposition,thirdDisposition",sort:"-updatedAt",limit:10,page:1},g.queryHistory={fields:"uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,page:1},g.hoppers={rows:[],count:0},g.finals={rows:[],count:0},g.histories={rows:[],count:0},g.journeyOptions=r.getQuery(),g.quickFilters=r.getQuickFilters(),g.addNewContact=v,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly updated!",msg:g.contact.name?g.contact.name+" has been updated!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.getCustomFields=function(e){return u.cmList.getCustomFields({id:e}).$promise.then(function(e){g.tab.customFields=e}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"LIST:GETCustomFields",msg:e.data?JSON.stringify(e.data):e.toString()})})},g.call=m.$parent.vm.call,g.disposeCall=function(e,i){if(g.newContact)return void p.error({title:"ATTENTION",msg:"Please save the contact before disposing!"});d.show({controller:"DisposeCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",parent:angular.element(c.body),targetEvent:i,clickOutsideToClose:!i.mandatoryDisposition,escapeToClose:!i.mandatoryDisposition,resolve:{globalDispositions:["apiResolver",function(e){return e.resolve("disposition@get",{MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}]},onRemoving:function(e,n){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},locals:{dispositions:g.tab.dispositions,contact:g.contact,call:i,availableCalls:g.tab.calls.length,autoClose:m.$parent.vm.autoClose}}).then(function(e){var n=e[0];for(var t in m.$parent.vm.autoClose=e[1],n&&("BLACKLIST"===n?p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_DISPOSED")+" "+n}):"RECALLME"===n||"RESCHEDULE"===n||p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_SAVED")})),m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(t)){var a=m.$parent.$parent.$parent.vm.tabs[t];_.remove(a.calls,function(e){return e.uniqueid===i.uniqueid})}0===g.tab.calls.length&&m.$parent.vm.autoClose&&m.$parent.vm.removeTab(g.tab),m.$parent.vm.updateLocalStorage()})},g.checkCallStatus=function(n){return g.checkingCallStatus=!0,u.voiceCallReport.get({uniqueid:n.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(n.disposedAt=_.first(e.rows).endtime)}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"VOICE_CALL_REPORT:GET",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){g.checkingCallStatus=!1})},g.duplicateContact=function(e){d.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}})},g.mergeContact=function(e){d.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}}).then(function(e){if(e){for(var n in m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(n)){var t=m.$parent.$parent.$parent.vm.tabs[n];t&&t.contact&&(e.from&&e.from.id&&e.from.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t),e.to&&e.to.id&&e.to.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t))}e.new&&m.$parent.$parent.$parent.vm.addContactTab(e.new)}})},g.getDateFromString=E,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){console.error(e)}try{m.$parent.$parent.$parent.vm.addTab({type:"jscripty",title:e.name,icon:"icon-script",color:"grey",project:e,contact:g.contact})}catch(e){p.error({title:"ERROR OPENING JSCRIPTY PROJECT",msg:"The project cannot be started"+JSON.stringify(e)})}},g.getHoppers=f,g.getFinals=b,g.getHistories=A,g.getJscriptyProjects=function(){if(g.jscriptyProjects)return;return g.loadingJscriptyProjects=!0,u.jscriptyProject.get({fields:"createdAt,updatedAt,id,name,description,createdAt,formData,enableUncompleteSave",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.jscriptyProjects=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant("JSCRIPTY.JSCRIPTY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.JSCRIPTY_GET_ERROR")})}).finally(function(){g.loadingJscriptyProjects=!1})},g.getAccounts=function(n){if(g[n+"Accounts"])return;var e="get"+_.startCase(n)+"Accounts";return g.loadingAccounts=!0,u.user[e]({id:g.user.id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){g[n+"Accounts"]=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant(n.toUpperCase()+"."+n.toUpperCase()+"ACCOUNTS"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.ACCOUNTS_GET_ERROR",{channel:o.instant("DASHBOARDS."+n.toUpperCase())})})}).finally(function(){g.loadingAccounts=!1})},g.composeInteraction=function(e,o,r,n){var l=o.toLowerCase();d.show({controller:"Compose"+o+"InteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/"+o.toLowerCase()+"/dialog.html",parent:angular.element(c.body),clickOutsideToClose:!1,locals:{account:r,message:{to:"mail"==l?n:n.split(",")},type:"new",interaction:{Contact:g.contact}},fullscreen:!0}).then(function(s){if(!s||_.isNil(s.message)||!s.message.savedAsDraft)return u[l+"Account"].send({id:r.id},s).$promise.then(function(e){if("Mail"===o){var n=e;if(n&&n.Messages&&n.Messages.length){if(s.attachments&&s.attachments.length)for(var t=0;t<s.attachments.length;t+=1)u.attachment.update({id:s.attachments[t].id},{MailMessageId:_.head(n.Messages).id});if(p.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.closed){n.disposition=null;var a=!r.mandatoryDisposition,i=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause;d.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(c.body),onRemoving:function(e,n){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:a,escapeToClose:a,locals:{user:g.user,channel:"mail",interaction:n}})}else m.$parent.vm.addInteractionTab("mail",n)}}else p.success({title:"Message properly sent!",msg:"Message has been sent!"}),m.$parent.vm.addInteractionTab(l,e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"fax"===l?p.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.toUpperCase()+"ACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var e={type:"draft",channel:"mail",account:r,contact:g.contact,id:g.tab.id,openedAt:new Date,saved:!1,title:r.key+" - Untitled",content:s.message},n=a.localStorage.getItem("motion2.home.mail:"+g.user.id);if(n){var t=JSON.parse(n);t.drafts||(t.drafts={}),n=t}else n={drafts:{}};n.drafts[g.tab.id]=e,a.localStorage.setItem("motion2.home.mail:"+g.user.id,JSON.stringify(n))})},g.init=function(n,e){return g.tab=n,m.$watchGroup(["vm.detailForm.$pristine","vm.customFieldsForm.$pristine"],function(e){g.tab.saved=e[0]&&e[1]}),g.license=e,g.contact=g.tab.contact,g.newContact=!1,g.currentTab=0,u.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){g.users=e||{count:0,rows:[]},g.usersMap=_.mapValues(_.keyBy(g.users.rows,"id"),"fullname")}).then(function(){for(var e=[],n=0;n<g.tab.calls.length;n++){var t=g.tab.calls[n];e.push(u.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime)}))}return i.all(e)}).then(function(){return u.user.getLists({id:g.user.id,nolimit:!0}).$promise}).then(function(e){if(g.lists=e||{count:0,rows:[]},g.contact&&g.contact.ListId){if(g.list=_.find(g.lists.rows,{id:g.contact.ListId}),g.list)return;return u.cmList.get({id:g.contact.ListId}).$promise.then(function(e){e&&(g.list=e,g.lists.rows=_.unionBy(g.lists.rows,[g.list]))})}}).then(function(){if(g.contact&&g.contact.id){var e={id:g.contact.id,ListId:g.contact.ListId,limit:1,offset:0,sort:"-updatedAt"};return u.cmContact.get(e).$promise.then(function(e){return g.contact=e,g.tab.contact=e,u.user.addContacts({id:g.user.id,ids:[g.contact.id]})}).then(function(){if(g.contact.ListId)return u.disposition.get({ListId:g.contact.ListId,nolimit:!0}).$promise.then(function(e){return g.tab.dispositions=e,u.cmList.getCustomFields({id:g.contact.ListId,nolimit:!0}).$promise}).then(function(e){g.tab.customFields=e})}).then(function(){try{g.tab.companies=m.$parent.$parent.$parent.vm.globalCompanies,g.tab.tags=m.$parent.$parent.$parent.vm.globalTags,g.tab.autoCreate=0}catch(e){}f(),b(),A()}).then(function(){return u.cmContact.getTags({id:g.contact.id}).$promise.then(function(e){g.tab.Tags=_.map(e.rows,"id")})})}return g.newContact=!0,n.autoCreate?v():void 0}).finally(function(){g.contact&&g.contact.id&&(y(),g.contact.dateOfBirth=E(g.contact.dateOfBirth))})},g.hasPermission=function(e){return s.hasPermission(e)},g.openInteraction=function(e){try{return m.$parent.$parent.$parent.vm.addInteractionTab(e.channel,e)}catch(e){p.error({title:o.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.INTERACTION_OPEN_ERROR")})}},g.getCustomerJourney=y,g.loadMoreJourney=function(){return i(function(e,n){var t=g.journey.length;return e(y(t))})},m.$on("$destroy",function(){}),m.$watch("currentTab",function(e,n){1===g.currentTab&&(f(),b(),A())});var S=!0,T=1;m.$watch("queryHopper.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=T),f())}),m.$watch("queryFinal.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=T),b())}),m.$watch("queryHistory.filter",function(e,n){S?t(function(){S=!1}):(n||(T=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=T),A())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","draftManager","privacyManager"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,i,s,o,e,t,a,r,l,d,c,m){var u=this;function p(){var e=u.selectedDisposition?u.selectedDisposition.name.toLowerCase():void 0;return{id:u.call.uniqueid,disposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,secondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,thirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?l.getCurrentUser().id:null,OwnerId:l.getCurrentUser().id}}function g(e){n.hide([e,u.autoClose])}u.isReschedule=!1,u.recallme=!1,u.queueCampaign=void 0,u.queueCampaigns={count:0,rows:[]},u.dispositions=_.orderBy(_.concat([],e.rows,t.rows),["name"],["asc"]),u.contact=r,u.call=a,u.note=u.call.note||void 0,u.dialerCall=!1,u.hasBlackLists=!1,u.availableCalls=c,u.autoClose=m,u.hopper={minDate:new Date,dateTime:new Date},u.call&&u.call.variables&&u.call.variables["xmd-voicequeueid"]?(u.dialerCall=!0,o.voiceQueue.getBlackLists({id:u.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(u.hasBlackLists=!0)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})):o.user.getQueues({id:l.getCurrentUser().id,fields:"id,name,dialActive",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){u.queueCampaigns=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),u.onDispositionChange=function(e){switch(e){case"first":u.selectedDisposition=u.firstLevelDisposition,u.anySecondLevelDisposition=_.some(u.dispositions,["ParentId",u.firstLevelDisposition.id]),u.secondLevelDisposition=void 0,u.thirdLevelDisposition=void 0,u.anyThirdLevelDisposition=!1;break;case"second":u.selectedDisposition=u.secondLevelDisposition,u.anyThirdLevelDisposition=_.some(u.dispositions,["ParentId",u.secondLevelDisposition.id]);break;case"third":u.selectedDisposition=u.thirdLevelDisposition}},u.clearDispositionSelection=function(e){"second"===e?(u.secondLevelDisposition=void 0,u.thirdLevelDisposition=void 0,u.selectedDisposition=u.firstLevelDisposition):"third"===e&&(u.thirdLevelDisposition=void 0,u.selectedDisposition=u.secondLevelDisposition)},u.saveDisposition=function(e){u.selectedDisposition=_.isNil(e)?u.selectedDisposition:{name:e},e&&(u.firstLevelDisposition=u.selectedDisposition);u.call.note=u.note,o.voiceCallReport.update({id:u.call.uniqueid,userDisposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,userSecondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,userThirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null,note:u.note,UserId:l.getCurrentUser().id,ContactId:u.contact.id}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICECALLREPORT",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.voiceRecording.get({uniqueid:u.call.uniqueid}).$promise.then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)o.voiceRecording.update({id:e.rows[n].id,userDisposition:u.firstLevelDisposition?u.firstLevelDisposition.name:null,userSecondDisposition:u.secondLevelDisposition?u.secondLevelDisposition.name:null,userThirdDisposition:u.thirdLevelDisposition?u.thirdLevelDisposition.name:null}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.dialerCall&&(o.cmHopperFinal.update(p()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERFINAL",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.cmHopperHistory.update(p()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERHISTORY",msg:e.data?JSON.stringify(e.data):e.toString()})}));if(_.isNil(u.selectedDisposition))g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"");else switch(u.selectedDisposition.name.toLowerCase()){case"blacklist":u.call&&u.call.variables&&u.call.variables["xmd-voicequeueid"]&&function(e){if(e)o.voiceQueue.getBlackLists({id:e,type:"outbound",fields:"id"}).$promise.then(function(e){var n=[];if(e&&0<e.count){for(var t=0;t<e.rows.length;t+=1){var a=angular.copy(u.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.NOTAVAILABLE")+" "+u.selectedDisposition}),u.selectedDisposition=void 0}).then(function(e){e&&g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEBLACKLIST",msg:e.data?JSON.stringify(e.data):e.toString()}),g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")})}(u.call.variables["xmd-voicequeueid"]);break;case"reschedule":u.isReschedule=!0,u.recallme=!1;break;case"recallme":u.isReschedule=!0,u.recallme=!0;break;default:g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}},u.closeDialog=function(){n.cancel()},u.saveReschedule=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:u.recallme?l.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:u.dialerCall?Number(u.call["xmd-voicequeueid"]):u.queueCampaign?u.queueCampaign.id:null,scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:u.recallme,OwnerId:l.getCurrentUser().id}).$promise.then(function(){u.dialerCall&&o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:u.recallme}).$promise.catch(function(e){console.log(e)})}).then(function(){s.success({title:d.instant("DASHBOARDS.INFO"),msg:d.instant("DASHBOARDS.CALL_DISPOSED")+" "+(u.recallme?d.instant("DASHBOARDS.RECALLME"):d.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")}).finally(function(){u.disable=!1,g(u.selectedDisposition?u.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose"],angular.module("app.staff").controller("DisposeCallDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.call=l,u.contact=r,u.hopper={minDate:new Date,dateTime:new Date},u.closeDialog=function(){a.cancel()},u.saveDialog=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:c?d.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:Number(u.call["xmd-voicequeueid"]),scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:c,OwnerId:d.getCurrentUser().id}).$promise.then(function(){o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:c}).$promise}).then(function(){s.success({title:m.instant("DASHBOARDS.INFO"),msg:m.instant("DASHBOARDS.CALL_DISPOSED")+" "+(c?m.instant("DASHBOARDS.RECALLME"):m.instant("DASHBOARDS.RESCHEDULE"))}),a.hide()}).catch(function(e){a.cancel(e)}).finally(function(){u.disable=!1})}}e.$inject=["$scope","$state","$location","$mdDialog","$timeout","toasty","api","contact","call","Auth","recallme","$translate"],angular.module("app.staff").controller("RescheduleCallDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s){var o=this;o.callNumber=i,o.page=1,o.onInit=function(){n.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){o.lists=_.chain(e.rows).keyBy("id").mapValues("name").value(),n.cmCustomField.get({fields:"id,alias",nolimit:!0}).$promise.then(function(e){o.customFields=e.rows,o.contacts=_.map(t,function(t){return Object.keys(t).forEach(function(e){if(Number(t[e])===Number(o.callNumber))if(e.startsWith("cf_")){var n=_.find(o.customFields,["id",Number(_.trimStart(e,"cf_"))]);t.matchingField=n?n.alias:a.instant("DASHBOARDS.UNKNOWN")}else t.matchingField=e}),t})})}).then(function(){o.paginatedContacts=_.chunk(t,4)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectContact=function(){e.hide(o.selectedContact)}}e.$inject=["$mdDialog","$translate","api","contacts","callNumber","toasty"],angular.module("app.dashboards").controller("ContactSelectionController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeAbandonedController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,e,t){var a=this;a.dispositions=e,a.call=t,a.note=a.call.note||void 0,a.onDispositionChange=function(e){switch(e){case"first":a.selectedDisposition=a.firstLevelDisposition,a.anySecondLevelDisposition=_.some(a.dispositions,["ParentId",a.firstLevelDisposition.id]),a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.anyThirdLevelDisposition=!1;break;case"second":a.selectedDisposition=a.secondLevelDisposition,a.anyThirdLevelDisposition=_.some(a.dispositions,["ParentId",a.secondLevelDisposition.id]);break;case"third":a.selectedDisposition=a.thirdLevelDisposition}},a.clearDispositionSelection=function(e){"second"===e?(a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.selectedDisposition=a.firstLevelDisposition):"third"===e&&(a.thirdLevelDisposition=void 0,a.selectedDisposition=a.secondLevelDisposition)},a.saveDisposition=function(){a.call.note=a.note;var e={firstLevel:a.firstLevelDisposition?a.firstLevelDisposition.name:void 0,secondLevel:a.secondLevelDisposition?a.secondLevelDisposition.name:void 0,thirdLevel:a.thirdLevelDisposition?a.thirdLevelDisposition.name:void 0};n.hide(e)},a.closeDialog=function(){n.cancel()}}e.$inject=["$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"inbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedVoiceController",e)}(),function(){"use strict";function e(n,a,t,e,i){var s=this;s.user=t.getCurrentUser(),s.license={},s.plugin={},s.setting={},s.sidebar="dashboard",s.draftManager=i,s.navigation=e.getNavigation(),s.addContactTab=n.$parent.vm.addContactTab,s.addInteractionTab=n.$parent.vm.addInteractionTab,s.init=function(e,n){s.license=e,s.setting=n;var t=a.localStorage.getItem("motion2.home:"+s.user.id);if(t){try{t=JSON.parse(t),s.sidebar=t.currentSidebarTab?t.currentSidebarTab:"dashboard"}catch(e){console.error(e),s.sidebar="dashboard"}"mail"===s.sidebar&&s.draftManager.init()}},s.changeSidebarTab=function(e){s.sidebar=e.view,"plugin"===s.sidebar&&(s.plugin=e.stateParams,s.pluginId=e.id,n.$broadcast("pluginUpdated",{plugin:s.plugin}));a.localStorage.setItem("motion2.home:"+s.user.id,JSON.stringify({currentSidebarTab:e.view}))},s.hasPermission=function(e){return t.hasPermission(e)},n.$watch("vm_home.sidebar",function(e,n){"mail"===e?s.draftManager.init():s.draftManager.drafts={}})}e.$inject=["$scope","$window","Auth","msNavigationAgentService","draftManager"],angular.module("app.dashboards").controller("AgentGeneralHomeController",e)}(),function(){"use strict";function e(t,n,i,s,a,o,r,e,l,d){var c=this;function m(e){!c.reloadingInteractions&&0<c.setting.chatInteractionsReloadTimeout&&A(!0),c.searchInProgress=!1,c.reloadingInteractions=!1,c.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<c.chatInteractions.rows.length;n+=1)p(c.chatInteractions.rows[n])}function u(e,n){c.searchInProgress=!0,e||(c.query.page=1),c.query.offset=(c.query.page-1)*c.query.limit;var t=a.localStorage.getItem("motion2.home.chat:"+c.user.id);(t=t?JSON.parse(t):{}).query=c.query,a.localStorage.setItem("motion2.home.chat:"+c.user.id,JSON.stringify(t)),c.promise=r.chatInteraction.get(c.query,m).$promise}function p(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function g(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function v(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function h(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),c.query.sort){var t=_.startsWith(c.query.sort,"-")?"desc":"asc";c.chatInteractions.rows=_.orderBy(c.chatInteractions.rows,_.trimStart(c.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===c.setting.chatInteractionsReloadTimeout&&u(c.query.page)}}function f(e){if(e){var n=_.find(c.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function b(e){if(e&&!e.secret){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function A(e){e&&c.interactionsInterval&&n.cancel(c.interactionsInterval),c.interactionsInterval=n(function(){c.reloadingInteractions=!0,c.searchInProgress||u()},1e3*c.setting.chatInteractionsReloadTimeout)}c.user=e.getCurrentUser(),c.license={},c.setting={},c.tags={count:0,rows:[]},c.chatInteractions={count:0,rows:[]},c.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},c.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Website",column:"ChatWebsiteId",type:"multiselect",options:{route:{model:"user",action:"getChatWebsites",params:{id:c.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},c.sectionColor="green-A700",c.onInit=function(e,n){return c.license=e,c.setting=n,r.user["get"+_.upperFirst("ChatWebsites")]({id:c.user.id,nolimit:!0}).$promise.then(function(e){return c.chatAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){c.tags=e||{count:0,rows:[]}}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Website",key:"ChatWebsiteId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:c.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:c.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.chat:"+c.user.id);if(e)try{(e=JSON.parse(e)).query&&(c.query=_.merge(c.query,e.query),_.isEmpty(c.chatAccounts.rows)?c.query.ChatWebsiteId=[]:_.isEmpty(c.query.ChatWebsiteId)&&(c.query.ChatWebsiteId=_(c.chatAccounts.rows).map("id").take().value()),c.query.sort&&0<=c.query.sort.indexOf("lastMessage")&&(c.query=_.omit(c.query,"sort")),c.query.includeAll=!0,c.isSearchBarVisible=!(c.query.search||!c.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={ChatWebsiteId:_.map(c.chatAccounts.rows,"id"),createdAt:n};c.query=_.merge(c.query,t)}l.on("chatInteraction:save",h),l.on("chatInteraction:update",h),l.on("chatInteractionTags:save",f),l.on("chatMessage:save",b),l.on("chatMessage:update",b),l.on("user_has_chat_interactions:save",g),l.on("user_has_chat_interactions:remove",v),u(c.query.page),0<c.setting.chatInteractionsReloadTimeout&&A()})},c.success=m,c.getChatInteractions=u,c.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},c.downloadChatInteraction=function(e,s,n){r.chatInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="chat-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.disposeInteraction=function(e,t){var a=c.user.voicePause||c.user.chatPause||c.user.mailPause||c.user.openchannelPause||c.user.faxPause,n=!t.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){c.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:c.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:c.user,channel:"chat",interaction:t}})},c.getContactLabel=p,c.getAgentLabel=function(e){if(e.UserId)return e.UserId===c.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},c.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},c.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:c.sectionColor,fields:c.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){c.isSearchBarVisible=!(e.value||!c.query.filter),e.apply&&(c.query.search=e.value,u())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},t.$on("$destroy",function(){l.removeAllListeners("chatMessage:save"),l.removeAllListeners("chatMessage:update"),l.removeAllListeners("chatInteraction:save"),l.removeAllListeners("chatInteractionTags:save"),l.removeAllListeners("chatInteraction:update"),l.removeAllListeners("user_has_chat_interactions:save"),l.removeAllListeners("user_has_chat_interactions:remove"),c.interactionsInterval&&n.cancel(c.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,o.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,i.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify(t)),l.promise=o.cmContact.get(l.query,d).$promise}l.currentUser=s.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){a.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){a.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e){return o.cmContact.get({id:e}).$promise.then(function(e){n.$parent.vm.addContactTab(e)})},l.call=n.$parent.vm.call,l.onInit=function(){o.user.getLists({id:l.currentUser.id,fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),o.tag.get().$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.log(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){a.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.contacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","$window","Auth","api","toasty"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"outbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"outbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.rpc.getVoiceQueues().$promise.then(function(e){return c.rpcVoiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,{type:"outbound",queuecallerleaveAt:null}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardBullController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcChatQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.chatQueuesTotal=e.count?e.count:0,c.chatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.chatQueues,function(e,n){c.rpcChatQueues[n]&&(c.chatQueues[n].waiting=c.rpcChatQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.chatQueues={},c.chatQueuesTotal=0,c.rpcChatQueues={},c.paginatedInteractions=[],c.deleteChatQueuesWaitingInteractions=[],c.rpcChatQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"chat",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getChatQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.chatQueues[e.id]&&c.rpcChatQueues[e.id]&&(_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onSaveChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]=_.pick(e,m))},c.onUpdateChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]&&_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),c.chatQueues[e.id]&&_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onRemoveChatQueue=function(e){_.isNil(e)||(delete c.rpcChatQueues[e.id],delete c.chatQueues[e.id])},c.onSaveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onRemoveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onSaveChatQueueChannel=function(e){c.chatQueues[e.queue_id]&&(c.rpcChatQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveChatQueueChannel=function(e){delete c.rpcChatQueuesWaitingInteractions[e.id],u&&c.deleteChatQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("chat_queue:save",c.onSaveQueue),l.onWithoutApply("chatQueue:save",c.onSaveChatQueue),l.onWithoutApply("chatQueue:update",c.onUpdateChatQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveChatQueue),l.onWithoutApply("userChatQueue:save",c.onSaveUserChatQueue),l.onWithoutApply("userChatQueue:remove",c.onRemoveUserChatQueue),l.onWithoutApply("chat_queue_waiting_interaction:save",c.onSaveChatQueueChannel),l.onWithoutApply("chat_queue_waiting_interaction:remove",c.onRemoveChatQueueChannel),o.rpc.getChatQueues().$promise.then(function(e){c.rpcChatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"chat"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getChatQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcChatQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteChatQueuesWaitingInteractions.length;e+=1)delete c.rpcChatQueuesWaitingInteractions[c.deleteChatQueuesWaitingInteractions[e]];u=!1,c.deleteChatQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getChatQueues())}),e.$on("$destroy",function(){l.removeAllListeners("chat_queue:save"),l.removeAllListeners("chatQueue:save"),l.removeAllListeners("chatQueue:update"),l.removeAllListeners("chatQueue:remove"),l.removeAllListeners("userChatQueue:save"),l.removeAllListeners("userChatQueue:remove"),l.removeAllListeners("chat_queue_waiting_interaction:save"),l.removeAllListeners("chat_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelChatController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcFaxQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.faxQueuesTotal=e.count?e.count:0,c.faxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.faxQueues,function(e,n){c.rpcFaxQueues[n]&&(c.faxQueues[n].waiting=c.rpcFaxQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.faxQueues={},c.faxQueuesTotal=0,c.rpcFaxQueues={},c.paginatedInteractions=[],c.deleteFaxQueuesWaitingInteractions=[],c.rpcFaxQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"fax",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getFaxQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.faxQueues[e.id]&&c.rpcFaxQueues[e.id]&&(_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onSaveFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]=_.pick(e,m))},c.onUpdateFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]&&_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),c.faxQueues[e.id]&&_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onRemoveFaxQueue=function(e){_.isNil(e)||(delete c.rpcFaxQueues[e.id],delete c.faxQueues[e.id])},c.onSaveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onRemoveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onSaveFaxQueueChannel=function(e){c.faxQueues[e.queue_id]&&(c.rpcFaxQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveFaxQueueChannel=function(e){delete c.rpcFaxQueuesWaitingInteractions[e.id],u&&c.deleteFaxQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("fax_queue:save",c.onSaveQueue),l.onWithoutApply("faxQueue:save",c.onSaveFaxQueue),l.onWithoutApply("faxQueue:update",c.onUpdateFaxQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveFaxQueue),l.onWithoutApply("userFaxQueue:save",c.onSaveUserFaxQueue),l.onWithoutApply("userFaxQueue:remove",c.onRemoveUserFaxQueue),l.onWithoutApply("fax_queue_waiting_interaction:save",c.onSaveFaxQueueChannel),l.onWithoutApply("fax_queue_waiting_interaction:remove",c.onRemoveFaxQueueChannel),o.rpc.getFaxQueues().$promise.then(function(e){c.rpcFaxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"fax"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getFaxQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcFaxQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteFaxQueuesWaitingInteractions.length;e+=1)delete c.rpcFaxQueuesWaitingInteractions[c.deleteFaxQueuesWaitingInteractions[e]];u=!1,c.deleteFaxQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getFaxQueues())}),e.$on("$destroy",function(){l.removeAllListeners("fax_queue:save"),l.removeAllListeners("faxQueue:save"),l.removeAllListeners("faxQueue:update"),l.removeAllListeners("faxQueue:remove"),l.removeAllListeners("userFaxQueue:save"),l.removeAllListeners("userFaxQueue:remove"),l.removeAllListeners("fax_queue_waiting_interaction:save"),l.removeAllListeners("fax_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelFaxController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcMailQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.mailQueuesTotal=e.count?e.count:0,c.mailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.mailQueues,function(e,n){c.rpcMailQueues[n]&&(c.mailQueues[n].waiting=c.rpcMailQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.mailQueues={},c.mailQueuesTotal=0,c.rpcMailQueues={},c.paginatedInteractions=[],c.deleteMailQueuesWaitingInteractions=[],c.rpcMailQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"mail",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getMailQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.mailQueues[e.id]&&c.rpcMailQueues[e.id]&&(_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onSaveMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]=_.pick(e,m))},c.onUpdateMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]&&_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),c.mailQueues[e.id]&&_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onRemoveMailQueue=function(e){_.isNil(e)||(delete c.rpcMailQueues[e.id],delete c.mailQueues[e.id])},c.onSaveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onRemoveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onSaveMailQueueChannel=function(e){c.mailQueues[e.queue_id]&&(c.rpcMailQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveMailQueueChannel=function(e){delete c.rpcMailQueuesWaitingInteractions[e.id],u&&c.deleteMailQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("mail_queue:save",c.onSaveQueue),l.onWithoutApply("mailQueue:save",c.onSaveMailQueue),l.onWithoutApply("mailQueue:update",c.onUpdateMailQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveMailQueue),l.onWithoutApply("userMailQueue:save",c.onSaveUserMailQueue),l.onWithoutApply("userMailQueue:remove",c.onRemoveUserMailQueue),l.onWithoutApply("mail_queue_waiting_interaction:save",c.onSaveMailQueueChannel),l.onWithoutApply("mail_queue_waiting_interaction:remove",c.onRemoveMailQueueChannel),o.rpc.getMailQueues().$promise.then(function(e){c.rpcMailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"mail"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getMailQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcMailQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteMailQueuesWaitingInteractions.length;e+=1)delete c.rpcMailQueuesWaitingInteractions[c.deleteMailQueuesWaitingInteractions[e]];u=!1,c.deleteMailQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getMailQueues())}),e.$on("$destroy",function(){l.removeAllListeners("mail_queue:save"),l.removeAllListeners("mailQueue:save"),l.removeAllListeners("mailQueue:update"),l.removeAllListeners("mailQueue:remove"),l.removeAllListeners("userMailQueue:save"),l.removeAllListeners("userMailQueue:remove"),l.removeAllListeners("mail_queue_waiting_interaction:save"),l.removeAllListeners("mail_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelMailController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcOpenchannelQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.openchannelQueuesTotal=e.count?e.count:0,c.openchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.openchannelQueues,function(e,n){c.rpcOpenchannelQueues[n]&&(c.openchannelQueues[n].waiting=c.rpcOpenchannelQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.openchannelQueues={},c.openchannelQueuesTotal=0,c.rpcOpenchannelQueues={},c.paginatedInteractions=[],c.deleteOpenchannelQueuesWaitingInteractions=[],c.rpcOpenchannelQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"openchannel",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getOpenchannelQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.openchannelQueues[e.id]&&c.rpcOpenchannelQueues[e.id]&&(_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onSaveOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]=_.pick(e,m))},c.onUpdateOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]&&_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),c.openchannelQueues[e.id]&&_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onRemoveOpenchannelQueue=function(e){_.isNil(e)||(delete c.rpcOpenchannelQueues[e.id],delete c.openchannelQueues[e.id])},c.onSaveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onRemoveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onSaveOpenchannelQueueChannel=function(e){c.openchannelQueues[e.queue_id]&&(c.rpcOpenchannelQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveOpenchannelQueueChannel=function(e){delete c.rpcOpenchannelQueuesWaitingInteractions[e.id],u&&c.deleteOpenchannelQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("openchannel_queue:save",c.onSaveQueue),l.onWithoutApply("openchannelQueue:save",c.onSaveOpenchannelQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateOpenchannelQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:save",c.onSaveUserOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:remove",c.onRemoveUserOpenchannelQueue),l.onWithoutApply("openchannel_queue_waiting_interaction:save",c.onSaveOpenchannelQueueChannel),l.onWithoutApply("openchannel_queue_waiting_interaction:remove",c.onRemoveOpenchannelQueueChannel),o.rpc.getOpenchannelQueues().$promise.then(function(e){c.rpcOpenchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"openchannel"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getOpenchannelQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcOpenchannelQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteOpenchannelQueuesWaitingInteractions.length;e+=1)delete c.rpcOpenchannelQueuesWaitingInteractions[c.deleteOpenchannelQueuesWaitingInteractions[e]];u=!1,c.deleteOpenchannelQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getOpenchannelQueues())}),e.$on("$destroy",function(){l.removeAllListeners("openchannel_queue:save"),l.removeAllListeners("openchannelQueue:save"),l.removeAllListeners("openchannelQueue:update"),l.removeAllListeners("openchannelQueue:remove"),l.removeAllListeners("userOpenchannelQueue:save"),l.removeAllListeners("userOpenchannelQueue:remove"),l.removeAllListeners("openchannel_queue_waiting_interaction:save"),l.removeAllListeners("openchannel_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcSmsQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.smsQueuesTotal=e.count?e.count:0,c.smsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.smsQueues,function(e,n){c.rpcSmsQueues[n]&&(c.smsQueues[n].waiting=c.rpcSmsQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.smsQueues={},c.smsQueuesTotal=0,c.rpcSmsQueues={},c.paginatedInteractions=[],c.deleteSmsQueuesWaitingInteractions=[],c.rpcSmsQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"sms",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getSmsQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.smsQueues[e.id]&&c.rpcSmsQueues[e.id]&&(_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onSaveSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]=_.pick(e,m))},c.onUpdateSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]&&_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),c.smsQueues[e.id]&&_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onRemoveSmsQueue=function(e){_.isNil(e)||(delete c.rpcSmsQueues[e.id],delete c.smsQueues[e.id])},c.onSaveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onRemoveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onSaveSmsQueueChannel=function(e){c.smsQueues[e.queue_id]&&(c.rpcSmsQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveSmsQueueChannel=function(e){delete c.rpcSmsQueuesWaitingInteractions[e.id],u&&c.deleteSmsQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("sms_queue:save",c.onSaveQueue),l.onWithoutApply("smsQueue:save",c.onSaveSmsQueue),l.onWithoutApply("smsQueue:update",c.onUpdateSmsQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveSmsQueue),l.onWithoutApply("userSmsQueue:save",c.onSaveUserSmsQueue),l.onWithoutApply("userSmsQueue:remove",c.onRemoveUserSmsQueue),l.onWithoutApply("sms_queue_waiting_interaction:save",c.onSaveSmsQueueChannel),l.onWithoutApply("sms_queue_waiting_interaction:remove",c.onRemoveSmsQueueChannel),o.rpc.getSmsQueues().$promise.then(function(e){c.rpcSmsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"sms"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getSmsQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcSmsQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteSmsQueuesWaitingInteractions.length;e+=1)delete c.rpcSmsQueuesWaitingInteractions[c.deleteSmsQueuesWaitingInteractions[e]];u=!1,c.deleteSmsQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getSmsQueues())}),e.$on("$destroy",function(){l.removeAllListeners("sms_queue:save"),l.removeAllListeners("smsQueue:save"),l.removeAllListeners("smsQueue:update"),l.removeAllListeners("smsQueue:remove"),l.removeAllListeners("userSmsQueue:save"),l.removeAllListeners("userSmsQueue:remove"),l.removeAllListeners("sms_queue_waiting_interaction:save"),l.removeAllListeners("sms_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelSmsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.user.getQueues(c.query).$promise.then(function(e){return c.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<c.myQueues.count;a++){var i=c.myQueues.rows[a];c.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(c.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(i,t,s,o,a,n,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.faxInteractionsReloadTimeout&&function(e){e&&m.interactionsInterval&&t.cancel(m.interactionsInterval);m.interactionsInterval=t(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.faxInteractionsReloadTimeout)}(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxInteractions.rows.length;n+=1)g(m.faxInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.fax:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.fax:"+m.user.id,JSON.stringify(t)),m.promise=r.faxInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.faxInteractions.rows=_.orderBy(m.faxInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else p(m.query.page)}}function b(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.faxInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"FaxAccountId",type:"multiselect",options:{route:{model:"user",action:"getFaxAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="blue-grey",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("faxAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.faxAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.fax:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.faxAccounts.rows)?m.query.FaxAccountId=[]:_.isEmpty(m.query.FaxAccountId)&&(m.query.FaxAccountId=_(m.faxAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={FaxAccountId:_.map(m.faxAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("faxInteraction:save",f),l.on("faxInteraction:update",f),l.on("faxInteractionTags:save",b),l.on("faxMessage:save",A),l.on("faxMessage:update",A),l.on("user_has_fax_interactions:save",v),l.on("user_has_fax_interactions:remove",h),p(m.query.page)})},m.success=u,m.getFaxInteractions=p,m.showFaxInteraction=function(e,n){i.$parent.vm.addInteractionTab("fax",n)},m.downloadFaxInteraction=function(e,s,n){r.faxInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="fax-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"fax",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},m.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},m.composeFaxInteraction=function(e,a){s.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.faxAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}var t={channel:"fax",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("faxMessage:save"),l.removeAllListeners("faxMessage:update"),l.removeAllListeners("faxInteraction:save"),l.removeAllListeners("faxInteractionTags:save"),l.removeAllListeners("faxInteraction:update"),l.removeAllListeners("user_has_fax_interactions:save"),l.removeAllListeners("user_has_fax_interactions:remove"),m.interactionsInterval&&t.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,a,t,d,e,i,c,m){var u=this;function s(e){!u.reloadingInteractions&&0<u.setting.mailInteractionsReloadTimeout&&y(!0),u.searchInProgress=!1,u.reloadingInteractions=!1,u.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<u.mailInteractions.rows.length;n+=1)v(u.mailInteractions.rows[n])}function p(e,n){u.searchInProgress=!0,e||(u.query.page=1),(void 0===u.query.closed||null===u.query.closed||u.query.closed)&&delete u.query.substatus,u.query.offset=(u.query.page-1)*u.query.limit;var t=a.localStorage.getItem("motion2.home.mail:"+u.user.id);(t=t?JSON.parse(t):{}).query=u.query,a.localStorage.setItem("motion2.home.mail:"+u.user.id,JSON.stringify(t)),u.promise=d.mailInteraction.get(u.query,s).$promise}function g(e,n){o.$parent.vm.addInteractionTab("mail",n)}function v(e){_.isEmpty(e.to)||!e.Account||_.includes(e.to,e.Account.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:e.contactInfo=e.to.split("<").pop().split(">")[0],"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function h(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function f(e){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),u.query.sort){var t=_.startsWith(u.query.sort,"-")?"desc":"asc";u.mailInteractions.rows=_.orderBy(u.mailInteractions.rows,_.trimStart(u.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===u.setting.mailInteractionsReloadTimeout&&p(u.query.page)}}function A(e){if(e){var n=_.find(u.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function E(e){if(e&&!e.secret){var n=_.find(u.mailInteractions.rows,{id:e.MailInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function y(e){e&&u.interactionsInterval&&n.cancel(u.interactionsInterval),u.interactionsInterval=n(function(){u.reloadingInteractions=!0,u.searchInProgress||p()},1e3*u.setting.mailInteractionsReloadTimeout)}u.user=e.getCurrentUser(),u.license={},u.setting={},u.tags={count:0,rows:[]},u.mailInteractions={count:0,rows:[]},u.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},u.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"MailAccountId",type:"multiselect",options:{route:{model:"user",action:"getMailAccounts",params:{id:u.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},u.sectionColor="teal",u.onInit=function(e,n){return u.license=e,u.setting=n,d.user["get"+_.upperFirst("mailAccounts")]({id:u.user.id,nolimit:!0}).$promise.then(function(e){return u.mailAccounts=e||{count:0,rows:[]},d.tag.get().$promise}).then(function(e){u.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){u.subStatuses=e||{count:0,rows:[]}}).then(function(){u.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:u.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Account",key:"MailAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:u.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:u.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:u.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.mail:"+u.user.id);if(e)try{(e=JSON.parse(e)).query&&(u.query=_.merge(u.query,e.query),_.isEmpty(u.mailAccounts.rows)?u.query.MailAccountId=[]:_.isEmpty(u.query.MailAccountId)&&(u.query.MailAccountId=_(u.mailAccounts.rows).map("id").take().value()),u.query.sort&&0<=u.query.sort.indexOf("lastMessage")&&(u.query=_.omit(u.query,"sort")),u.query.includeAll=!0,u.isSearchBarVisible=!(u.query.search||!u.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={MailAccountId:_.map(u.mailAccounts.rows,"id"),createdAt:n};u.query=_.merge(u.query,t)}i.on("mailInteraction:save",b),i.on("mailInteraction:update",b),i.on("mailInteractionTags:save",A),i.on("mailMessage:save",E),i.on("mailMessage:update",E),i.on("user_has_mail_interactions:save",h),i.on("user_has_mail_interactions:remove",f),p(u.query.page),0<u.setting.mailInteractionsReloadTimeout&&y()})},u.success=s,u.getMailInteractions=p,u.showMailInteraction=g,u.downloadMailInteraction=function(e,s,n){d.mailInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mail-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadMailInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.disposeInteraction=function(e,t){var a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause,n=!t.Account.mandatoryDisposition;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){u.user&&t.Account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:u.user,channel:"mail",interaction:t}})},u.getContactLabel=v,u.getAgentLabel=function(e){if(e.UserId)return e.UserId===u.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},u.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},u.composeMailInteraction=function(e,s){r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.id},i).$promise.then(function(e){if(e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={channel:"mail",account:s,message:e.message,contact:e.contact};m.add(n)}})},u.openAdvancedSearch=function(){r.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{color:u.sectionColor,fields:u.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){u.isSearchBarVisible=!(e.value||!u.query.filter),e.apply&&(u.query.search=e.value,p())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,g(null,s.interaction)):r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s.account,message:s.content,type:"draft",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.account.id},i).$promise.then(function(e){if(m.remove(s.id),e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.account.mandatoryDisposition,a=u.user.voicePause||u.user.chatPause||u.user.mailPause||u.user.openchannelPause||u.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(e,n){u.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:u.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:u.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={id:s.id,channel:"mail",account:e.account,message:e.message};m.update(n)}})}),o.$on("$destroy",function(){i.removeAllListeners("mailMessage:save"),i.removeAllListeners("mailMessage:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteractionTags:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("user_has_mail_interactions:save"),i.removeAllListeners("user_has_mail_interactions:remove"),u.interactionsInterval&&n.cancel(u.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(t,a,e,i,n,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,s.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,o.localStorage.setItem("motion2.home.mycontacts:"+l.currentUser.id,JSON.stringify(t)),l.query.search&&(l.advancedQuery=_.omit(l.query,"id")),l.promise=l.query.search?s.cmContact.get(l.advancedQuery,d).$promise:s.user.getContacts(l.query,d).$promise}l.currentUser=n.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,id:l.currentUser.id,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e,n){a.$parent.vm.addContactTab(n)},l.call=a.$parent.vm.call,l.onInit=function(){s.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),s.tag.get().$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.error(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.mycontacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value?e.value+="||User:=$eq["+l.currentUser.id+"]":e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window","toasty"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.openchannelInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelInteractions.rows.length;n+=1)g(m.openchannelInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.openchannel:"+m.user.id,JSON.stringify(t)),m.promise=r.openchannelInteraction.get(m.query,u).$promise}function g(e){"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.openchannelInteractions.rows=_.orderBy(m.openchannelInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.openchannelInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.openchannelInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.openchannelInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"OpenchannelAccountId",type:"multiselect",options:{route:{model:"user",action:"getOpenchannelAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="amber",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("openchannelAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.openchannelAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.openchannelAccounts.rows)?m.query.OpenchannelAccountId=[]:_.isEmpty(m.query.OpenchannelAccountId)&&(m.query.OpenchannelAccountId=_(m.openchannelAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={OpenchannelAccountId:_.map(m.openchannelAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("openchannelInteraction:save",f),l.on("openchannelInteraction:update",f),l.on("openchannelInteractionTags:save",b),l.on("openchannelMessage:save",A),l.on("openchannelMessage:update",A),l.on("user_has_openchannel_interactions:save",v),l.on("user_has_openchannel_interactions:remove",h),p(m.query.page),0<m.setting.openchannelInteractionsReloadTimeout&&E()})},m.success=u,m.getOpenchannelInteractions=p,m.showOpenchannelInteraction=function(e,n){i.$parent.vm.addInteractionTab("openchannel",n)},m.downloadOpenchannelInteraction=function(e,s,n){r.openchannelInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="openchannel-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"openchannel",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeOpenchannelInteraction=function(e,a){s.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.openchannelAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("openchannel",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"openchannel",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("openchannelMessage:save"),l.removeAllListeners("openchannelMessage:update"),l.removeAllListeners("openchannelInteraction:save"),l.removeAllListeners("openchannelInteractionTags:save"),l.removeAllListeners("openchannelInteraction:update"),l.removeAllListeners("user_has_openchannel_interactions:save"),l.removeAllListeners("user_has_openchannel_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeOpenchannelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e,n,t){d.license=e,d.setting=n,d.plugin=t}d.currentUser=o.getCurrentUser(),d.plugin={},d.onInit=c,d.getTrustedURL=function(){return s.trustAsResourceUrl(d.plugin.agentUrl)},c(),n.$on("pluginUpdated",function(e,n){d.plugin=n.plugin})}e.$inject=["$document","$scope","$timeout","$mdDialog","$stateParams","$sce","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(){d.agentsQuery.offset=(d.agentsQuery.page-1)*d.agentsQuery.limit,l.update("motion2.home.presence.agents:"+d.currentUser.id,d.agentsQuery,"query"),i.user.getPresence(d.agentsQuery).$promise.then(function(e){d.agents={count:e.count,rows:_.filter(e.rows,function(e){return e.id!==d.currentUser.id})}}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function m(){d.queuesQuery.offset=(d.queuesQuery.page-1)*d.queuesQuery.limit,l.update("motion2.home.presence.queues:"+d.currentUser.id,d.queuesQuery,"query"),i.voiceQueue.get(d.queuesQuery).$promise.then(function(e){return d.voiceQueues=e||{rows:[],count:0},i.rpc.getVoiceQueuesChannels().$promise.then(function(e){e.rows.forEach(function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);n&&(n.calls||(n.calls=[]),n.calls.push(e))})})}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function u(e){return 0===d.selectedTab?e:"xcallyQueueExtension"+e}function p(e,n,t,a){var i=_.find(d.agents.rows,["id",e]);i&&(i.status=!1===n?"offline":a?"pause":"unavailable"===t?t:_.includes(["idle","unknown","ringing",null,void 0],t)?"online":"busy")}function g(e){e.id!==d.currentUser.id&&p(e.id,e.online,e.voiceStatus,e.voicePause)}d.currentUser=s.getCurrentUser(),d.agents={count:0,rows:[]},d.agentsQuery={fields:"id,name,internal,online",role:"agent",sort:"name",limit:10,page:1},d.queuesQuery={fields:"id,name",type:"inbound",sort:"name",limit:10,page:1},d.onAgentsTabSelection=function(){if(d.agentsQuery.filter||d.agentsQuery.teams||d.agentsQuery.queues)return;_.merge(d.agentsQuery,l.get("motion2.home.presence.agents:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.agentsQuery.filter,a.all([a(function(n,e){i.team.get({fields:"id,name",sort:"name",nolimit:!0}).$promise.then(function(e){d.teams=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("STAFF.TEAMS"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})}),a(function(n,e){i.voiceQueue.get({fields:"id,name",type:"inbound",sort:"name",nolimit:!0}).$promise.then(function(e){d.queues=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})})]).then(function(){d.quickFilters=[{name:"Team",key:"teams",type:"multiselect",label:"DASHBOARDS.SELECT_TEAM",options:d.teams.rows},{name:"Queue",key:"queues",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:d.queues.rows}],c()}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("DASHBOARDS.ERRORS.FAILED_INITIALIZATION")})})},d.onQueuesTabSelection=function(){if(d.queuesQuery.filter)return;_.merge(d.queuesQuery,l.get("motion2.home.presence.queues:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.queuesQuery.filter,m()},d.getAgents=c,d.getVoiceQueues=m,d.originateCall=function(e){n.$broadcast("webrtc::call",{target:u(e)})},d.transferCall=function(e){n.$broadcast("webrtc::transfer",{target:u(e)})},o.on("user:presence",function(e){if(e.id===d.currentUser.id)return;p(e.id,e.online,e.voiceStatus,e.voicePause)}),o.on("user:update",g),o.on("voice_queue_presence:save",function(e){if(!d.voiceQueues&&d.voiceQueues.rows)return;var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;n.calls||(n.calls=[]);if(_.some(n.calls,["uniqueid",e.uniqueid]))return;n.calls.push(e)}),o.on("voice_queue_presence:remove",function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;_.remove(n.calls,["uniqueid",e.uniqueid])}),e.$on("$destroy",function(){o.removeListener("user:update",g),o.removeAllListeners("user:presence"),o.removeAllListeners("voice_queue_presence:save"),o.removeAllListeners("voice_queue_presence:remove")})}e.$inject=["$scope","$rootScope","$translate","$q","api","Auth","socket","toasty","localStorageManager"],angular.module("app.dashboards").controller("AgentHomePresenceController",e)}(),function(){"use strict";function e(e,t,n,a,o,i){var s=this;function r(e){s.searchInProgress=!1,s.voiceRecordings=e||{count:0,rows:[]}}function l(){s.searchInProgress=!0,s.query.offset=(s.query.page-1)*s.query.limit;var e={query:s.query};t.localStorage.setItem("motion2.home.recordings:"+s.currentUser.id,JSON.stringify(e)),s.promise=a.voiceRecording.get(s.query,r).$promise}s.currentUser=i.getCurrentUser(),s.voiceRecordings={},s.table="voiceRecordings",s.query={UserId:s.currentUser.id,fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,transcribeStatus,UserId",sort:"-updatedAt",limit:10,page:1,type:null},s.downloadfile=function(i,e){return a.voiceRecording.download({id:i.id,exists:!0}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download",i.uniqueid+i.format),a.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.downloadtranscribe=function(s,e){return a.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.success=r,s.getVoiceRecordings=l,s.onInit=function(){s.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}];var e=t.localStorage.getItem("motion2.home.recordings:"+s.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(s.query=_.merge(s.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};s.query.createdAt=n}s.isSearchBarVisible=!!s.query.filter,l()}}e.$inject=["$scope","$window","$timeout","api","toasty","Auth"],angular.module("app.dashboards").controller("AgentHomeRecordingsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n){var l=this;function d(e){l.searchInProgress=!1,l.scheduledCalls=e||{count:0,rows:[]}}l.currentUser=n.getCurrentUser(),l.priorities=["Lowest","Low","Medium","High","Highest"],l.crudPermissions={readOnly:!1,canEdit:!0,canDelete:!0},l.scheduledCalls={},l.query={id:l.currentUser.id,fields:"id,phone,scheduledat,recallme,priority,UserId,OwnerId",sort:"scheduledat",limit:10,page:1},l.queueCampaigns={rows:[],count:0},l.success=d,l.getScheduledCalls=function(){l.searchInProgress=!0,l.query.id=l.currentUser.id,l.query.includeAll=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};t.localStorage.setItem("motion2.home.scheduled:"+l.currentUser.id,JSON.stringify(e)),l.promise=r.user.getScheduledCalls(l.query,d).$promise},l.onInit=function(){r.user.getQueues({id:n.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){l.queueCampaigns=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"scheduledat",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Campaigns",key:"VoiceQueueId",type:"multiselect",label:"MOTIONDIALER.SELECT_CAMPAIGN",options:l.queueCampaigns.rows}]}).catch(function(e){console.error(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.scheduled:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.omit(e.query,["filter"]))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.scheduledat=n}l.getScheduledCalls()})},l.isDateBeforeToday=function(e){return moment(e).isBefore(moment())},l.createOrEditQueueCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:null,hopper:n,hoppers:l.scheduledCalls.rows,license:null,setting:null,crudPermissions:l.crudPermissions}})},l.deleteConfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the scheduled call?").htmlContent("<b>Scheduled call</b> will be deleted.").ariaLabel("delete scheduled call").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(l.scheduledCalls.rows,{id:e.id}),l.scheduledCalls.count-=1,l.scheduledCalls.rows.length||l.getScheduledCalls(),o.success({title:"Scheduled call deleted!",msg:e.name?"Scheduled call has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE_HOPPER"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETE_HOPPER",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})};var c=!0,m=1;e.$watch("vm.query.filter",function(e,n){c?a(function(){c=!1}):(n||(m=l.query.page),e!==n&&(l.query.page=1),e||(l.query.page=m),l.getScheduledCalls())})}e.$inject=["$scope","$window","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.dashboards").controller("AgentHomeScheduledCallsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.smsInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsInteractions.rows.length;n+=1)g(m.smsInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.sms:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.sms:"+m.user.id,JSON.stringify(t)),m.promise=r.smsInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.smsInteractions.rows=_.orderBy(m.smsInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.smsInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.smsInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.smsInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"SmsAccountId",type:"multiselect",options:{route:{model:"user",action:"getSmsAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="orange",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("smsAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.smsAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.sms:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.smsAccounts.rows)?m.query.SmsAccountId=[]:_.isEmpty(m.query.SmsAccountId)&&(m.query.SmsAccountId=_(m.smsAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={SmsAccountId:_.map(m.smsAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("smsInteraction:save",f),l.on("smsInteraction:update",f),l.on("smsInteractionTags:save",b),l.on("smsMessage:save",A),l.on("smsMessage:update",A),l.on("user_has_sms_interactions:save",v),l.on("user_has_sms_interactions:remove",h),p(m.query.page),0<m.setting.smsInteractionsReloadTimeout&&E()})},m.success=u,m.getSmsInteractions=p,m.showSmsInteraction=function(e,n){i.$parent.vm.addInteractionTab("sms",n)},m.downloadSmsInteraction=function(e,s,n){r.smsInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="sms-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"sms",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeSmsInteraction=function(e,a){s.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.smsAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("sms",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"sms",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("smsMessage:save"),l.removeAllListeners("smsMessage:update"),l.removeAllListeners("smsInteraction:save"),l.removeAllListeners("smsInteractionTags:save"),l.removeAllListeners("smsInteraction:update"),l.removeAllListeners("user_has_sms_interactions:save"),l.removeAllListeners("user_has_sms_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.voiceCalls=e||{count:0,rows:[]}}function c(){l.searchInProgress=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};s.localStorage.setItem("motion2.home.voice:"+l.currentUser.id,JSON.stringify(e)),l.promise=a.voiceCallReport.get(l.query,d).$promise}l.currentUser=e.getCurrentUser(),l.voiceCalls={},l.table="voiceCalls",l.query={UserId:l.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,userSecondDisposition,userThirdDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},l.success=d,l.getVoiceCalls=c,l.onInit=function(){return a.tag.get().$promise.then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}]}).catch(function(e){i.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),l.tags={count:0,rows:[]}}).finally(function(){var e=s.localStorage.getItem("motion2.home.voice:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.createdAt=n}l.isSearchBarVisible=!!l.query.filter,c()})},l.showDetails=function(e){n.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{call:e}})}}e.$inject=["$mdDialog","$document","api","toasty","Auth","$window","$scope","$timeout"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,n){this.call=n,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(i,n,s,o,a,t,r,e,l,d,c){var m=this;function u(e){!m.reloadingInteractions&&0<m.setting.whatsappInteractionsReloadTimeout&&E(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappInteractions.rows.length;n+=1)g(m.whatsappInteractions.rows[n])}function p(e,n){m.searchInProgress=!0,e||(m.query.page=1),m.query.offset=(m.query.page-1)*m.query.limit;var t=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);(t=t?JSON.parse(t):{}).query=m.query,a.localStorage.setItem("motion2.home.whatsapp:"+m.user.id,JSON.stringify(t)),m.promise=r.whatsappInteraction.get(m.query,u).$promise}function g(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function v(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function h(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),m.query.sort){var t=_.startsWith(m.query.sort,"-")?"desc":"asc";m.whatsappInteractions.rows=_.orderBy(m.whatsappInteractions.rows,_.trimStart(m.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===m.setting.whatsappInteractionsReloadTimeout&&p(m.query.page)}}function b(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function A(e){if(e&&!e.secret){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function E(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||p()},1e3*m.setting.whatsappInteractionsReloadTimeout)}m.user=e.getCurrentUser(),m.license={},m.setting={},m.tags={count:0,rows:[]},m.whatsappInteractions={count:0,rows:[]},m.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"WhatsappAccountId",type:"multiselect",options:{route:{model:"user",action:"getWhatsappAccounts",params:{id:m.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},m.sectionColor="lime-A700",m.onInit=function(e,n){return m.license=e,m.setting=n,r.user["get"+_.upperFirst("whatsappAccounts")]({id:m.user.id,nolimit:!0}).$promise.then(function(e){return m.whatsappAccounts=e||{count:0,rows:[]},r.tag.get().$promise}).then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:m.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:m.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);if(e)try{(e=JSON.parse(e)).query&&(m.query=_.merge(m.query,e.query),_.isEmpty(m.whatsappAccounts.rows)?m.query.WhatsappAccountId=[]:_.isEmpty(m.query.WhatsappAccountId)&&(m.query.WhatsappAccountId=_(m.whatsappAccounts.rows).map("id").take().value()),m.query.sort&&0<=m.query.sort.indexOf("lastMessage")&&(m.query=_.omit(m.query,"sort")),m.query.includeAll=!0,m.isSearchBarVisible=!(m.query.search||!m.query.filter))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},t={WhatsappAccountId:_.map(m.whatsappAccounts.rows,"id"),createdAt:n};m.query=_.merge(m.query,t)}l.on("whatsappInteraction:save",f),l.on("whatsappInteraction:update",f),l.on("whatsappInteractionTags:save",b),l.on("whatsappMessage:save",A),l.on("whatsappMessage:update",A),l.on("user_has_whatsapp_interactions:save",v),l.on("user_has_whatsapp_interactions:remove",h),p(m.query.page),0<m.setting.whatsappInteractionsReloadTimeout&&E()})},m.success=u,m.getWhatsappInteractions=p,m.showWhatsappInteraction=function(e,n){i.$parent.vm.addInteractionTab("whatsapp",n)},m.downloadWhatsappInteraction=function(e,s,n){r.whatsappInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="whatsapp-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.disposeInteraction=function(e,t){var a=m.user.voicePause||m.user.chatPause||m.user.mailPause||m.user.openchannelPause||m.user.faxPause,n=!t.Account.mandatoryDisposition;s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(e,n){m.user&&t.Account.mandatoryDisposition&&!a&&r.user.unpause({id:m.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:m.user,channel:"whatsapp",interaction:t}})},m.getContactLabel=g,m.getAgentLabel=function(e){if(e.UserId)return e.UserId===m.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},m.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},m.composeWhatsappInteraction=function(e,a){s.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{account:a,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var n=e;return r.whatsappAccount.send({id:a.id},n).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),i.$parent.vm.addInteractionTab("whatsapp",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var t={channel:"whatsapp",account:a,message:e.message,contact:e.contact};c.add(t)}})},m.openAdvancedSearch=function(){s.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(o.body),clickOutsideToClose:!1,locals:{color:m.sectionColor,fields:m.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply&&(m.query.search=e.value,p())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},i.$on("$destroy",function(){l.removeAllListeners("whatsappMessage:save"),l.removeAllListeners("whatsappMessage:update"),l.removeAllListeners("whatsappInteraction:save"),l.removeAllListeners("whatsappInteractionTags:save"),l.removeAllListeners("whatsappInteraction:update"),l.removeAllListeners("user_has_whatsapp_interactions:save"),l.removeAllListeners("user_has_whatsapp_interactions:remove"),m.interactionsInterval&&n.cancel(m.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty","draftManager"],angular.module("app.dashboards").controller("AgentHomeWhatsappController",e)}(),function(){"use strict";function e(e,n){var t=this;t.setting={},t.messages={count:0,rows:[]},t.showInteraction=!1,t.init=function(e,n){t.setting=n,t.tab=e,t.tab.saved=!0},t.getTrustedURL=function(){return n.trustAsResourceUrl(t.tab.src)}}e.$inject=["$scope","$sce"],angular.module("app.dashboards").controller("AgentGeneralIframeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=25,b=1024*f*1024;function A(){var e=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,n=!h.tab.interaction.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(t.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(){h.user&&h.interaction.Account.mandatoryDisposition&&!e&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:h.tab.message,type:e,interaction:h.interaction},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){if(e)if(e.message&&e.message.savedAsDraft)h.draft?p.update({id:h.draft.id,channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}):p.add({channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}),h.draft=p.getByInteraction(h.tab.interaction.id);else{var n=e;n&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":h.draft.content.originalMessage=e?_.find(h.interaction.Messages,["id",e]):h.interaction.Messages[h.interaction.Messages.length-1],E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[];if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.replace(/\n$/,"")))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&(h.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}};g.ckEditorInstance.insertHtml(e(t))}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&g.message.body)if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage?g.message.body:g.message.body+T(g.message.type),inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage?o.originalMessage.body:o.body;return n+="<br><br>",n+=(t=i?_.replace(i,'<div id="xm-mail-content"',"<div"):"",(a=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?a[1]:t),n+="</blockquote></div>",e?n:""}l.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){g.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),g.secret||l.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){g.verifySmtp=!1,g.errors.push({message:e.data,type:e.status}),g.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","$translate","account","message","type","api","toasty","$q","Auth","interaction","draftManager"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e[s.mapKey]&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(n+=e.lastName+" ");return n+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var n="firstName,lastName,phone,mobile";return s.mapKey&&(n+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:n}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e[s.mapKey];return n},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeOpenchannelInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeSmsInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,WhatsappAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").filter("secToTime",function(){return function(e){return new Date(1e3*e).toISOString().substr(11,8)}}).factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="FAX.NEW_FAXACCOUNT",g.newFaxAccount=!0),n.params.id&&(g.faxAccount.FaxAccountId=n.params.id),g.addNewFaxAccount=function(){g.errors=[],d.faxAccount.addAccountApplications(g.faxAccount).$promise.then(function(e){g.faxAccounts.unshift(e.toJSON()),o.success({title:"FaxAccount properly created",msg:g.faxAccount.name?g.faxAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxAccount=function(){g.errors=[],d.faxAccount.updateAccountApplications(g.faxAccount).$promise.then(function(e){var n=_.find(g.faxAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FaxAccount properly saved!",msg:g.faxAccount.name?g.faxAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxAccount will be deleted.").ariaLabel("Delete FaxAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxAccount.delete({id:g.faxAccount.id}).$promise.then(function(){_.remove(g.faxAccounts,{id:g.faxAccount.id}),o.success({title:"FaxAccount properly deleted!",msg:(g.faxAccount.name||"faxAccount")+" has been deleted!"}),v(g.faxAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.lists,{id:Number(g.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.lists,{id:Number(g.faxAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxAccounts","faxAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccountApp:t,faxAccount:r.faxAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.faxAccountApps.rows[n]=e:r.faxAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.faxAccountApps.rows.length;t++,0){var a=r.faxAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.faxAccount.context,a.exten=r.faxAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.faxAccount.addApplications({id:r.faxAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.faxAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.faxAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.faxAccount={},r.faxAccountApps={count:0,rows:[]},r.selectedFaxAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"FaxQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"faxQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:901}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.faxAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getFaxAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.faxAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getFaxAccountApps=function(){r.promise=o.faxAccount.getApplications(r.query,t).$promise},r.editFaxAccountApp=n,r.editInterval=function(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteFaxAccountApp=function(e){_.remove(r.faxAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedFaxAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedFaxAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedFaxAccountApps.forEach(function(e){_.remove(r.faxAccountApps.rows,{id:e.id})}),r.selectedFaxAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.fax").controller("FaxAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxAccount.getAgents({id:c.faxAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxAccount?"penalty "+e.UserFaxAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.removeAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.addAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxAccount","faxAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditFaxAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("fax")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:901}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.faxAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.faxAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.FaxAccountId=m.faxAccount.id,m.query.id=m.faxAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.faxAccount.id,field:"FaxAccountId",route:"faxAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.fax").controller("FaxAccountDispositionsController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,u).$promise}function g(e){d.faxInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.faxAccountInteractions.rows,{id:e.id}),m.faxAccountInteractions.count-=1,m.faxAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.faxAccount={},m.faxAccountInteractions={count:0,rows:[]},m.selectedFaxAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.faxAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.FaxAccountId=m.faxAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.faxInteractionDownload=function(s,e,n){return d.faxInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="fax-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getFaxAccountInteractions=p,m.createOrEditFaxAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:m.faxAccount,interaction:n,interactions:m.faxAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyfaxInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"fax",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"fax.faxAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||FaxAccountId:=$eq["+m.faxAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedFaxAccountInteractions=function(){var e=angular.copy(m.selectedFaxAccountInteractions);return m.selectedFaxAccountInteractions=[],e},m.deleteFaxAccountInteraction=g,m.deleteSelectedFaxAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedFaxAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedFaxAccountInteractions.forEach(function(e){g(e)}),m.selectedFaxAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountInteractionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.faxAccount=c||t.params.faxAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:p.faxAccounts?p.faxAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoFaxAccounts=function(){t.go("app.fax.faxAccounts",{},{reload:"app.fax.faxAccounts"})},p.saveFaxAccount=function(){r.faxAccount.updateAccountApplications(p.faxAccount).$promise.then(function(){l.success({title:"FaxAccount updated!",msg:p.faxAccount.name?p.faxAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.trunks,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.trunks,{id:t.id});a.canSelect=!1,n.push(a)}p.trunks=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)}));for(var i=0;i<p.trunks.length;i++)a&&p.trunks[i].id===a.id&&(p.trunks[i].canSelect=!1,t.push(p.trunks[i]));p.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.lists,{id:Number(p.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.lists,{id:Number(p.faxAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxAccount","userProfile","userProfileSection"],angular.module("app.fax").controller("FaxAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFaxAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayminrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymaxrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytech=_.keyBy([{option:"SIP",value:"'SIP'"},{option:"IAX",value:"'IAX'"},{option:"DADHI",value:"'DADHI'"},{option:"KHOMP",value:"'KHOMP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:f.faxAccounts?f.faxAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxAccount")+"?").htmlContent("<b>"+(e.name||"faxAccount")+"</b> will be deleted.").ariaLabel("delete faxAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFaxAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxAccount=function(e,n){i.show({controller:"CreateOrEditFaxAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:n,faxAccounts:f.faxAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxAccount=y,f.exportSelectedFaxAccounts=function(){var e=angular.copy(f.selectedFaxAccounts);return f.selectedFaxAccounts=[],e},f.deleteSelectedFaxAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+f.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxAccounts.forEach(function(e){y(e)}),f.selectedFaxAccounts=[]})},f.deselectFaxAccounts=function(){f.selectedFaxAccounts=[]},f.selectAllFaxAccounts=function(){f.selectedFaxAccounts=f.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.faxAccount&&(t=_.find(f.lists,{id:Number(f.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.faxAccount&&(a=_.find(f.lists,{id:Number(f.faxAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.faxAccounts=e||{count:0,rows:[]}}function y(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.faxAccounts.rows,{id:e.id}),f.faxAccounts.count-=1,f.faxAccounts.rows.length||f.getFaxAccounts(),p.success({title:_.startCase("FaxAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXQUEUE",g.faxQueue=angular.copy(l),g.faxQueues=r,g.newFaxQueue=!1,g.faxQueue||(g.faxQueue={strategy:"beepall",timeout:10},g.title="FAX.NEW_FAXQUEUE",g.newFaxQueue=!0),g.addNewFaxQueue=function(){g.errors=[],d.faxQueue.save(g.faxQueue).$promise.then(function(e){g.faxQueues.unshift(e.toJSON()),o.success({title:"FaxQueue properly created",msg:g.faxQueue.name?g.faxQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxQueue=function(){g.errors=[],d.faxQueue.update({id:g.faxQueue.id},g.faxQueue).$promise.then(function(e){var n=_.find(g.faxQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FaxQueue properly saved!",msg:g.faxQueue.name?g.faxQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxQueue.delete({id:g.faxQueue.id}).$promise.then(function(){_.remove(g.faxQueues,{id:g.faxQueue.id}),o.success({title:"FaxQueue properly deleted!",msg:(g.faxQueue.name||"faxQueue")+" has been deleted!"}),v(g.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxQueues","faxQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"fax",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsFaxRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("fax_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userFaxQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userFaxQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.faxPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.faxPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("fax_queue:save"),o.removeAllListeners("userFaxQueue:remove"),o.removeAllListeners("userFaxQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("QueuesFaxRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",g.dynamics365Account=angular.copy(l),g.dynamics365Accounts=r,g.newDynamics365Account=!1,g.dynamics365Account||(g.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",g.newDynamics365Account=!0),g.addNewDynamics365Account=function(){g.errors=[],d.intDynamics365Account.save(g.dynamics365Account).$promise.then(function(e){g.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Account=function(){g.errors=[],d.intDynamics365Account.update({id:g.dynamics365Account.id},g.dynamics365Account).$promise.then(function(e){var n=_.find(g.dynamics365Accounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Dynamics365Account properly saved!",msg:g.dynamics365Account.name?g.dynamics365Account.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Account=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Account will be deleted.").ariaLabel("Delete Dynamics365Account").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Account.delete({id:g.dynamics365Account.id}).$promise.then(function(){_.remove(g.dynamics365Accounts,{id:g.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(g.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),v(g.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.dynamics365Accounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="dynamics365Accounts",f.listOrder="",f.listOrderAsc=null,f.selectedDynamics365Accounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDynamics365Accounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDynamics365Account.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Dynamics365Accounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDynamics365Account=function(e,n){i.show({controller:"CreateOrEditDynamics365AccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Account:n,dynamics365Accounts:f.dynamics365Accounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDynamics365Account=y,f.exportSelectedDynamics365Accounts=function(){var e=angular.copy(f.selectedDynamics365Accounts);return f.selectedDynamics365Accounts=[],e},f.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+f.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDynamics365Accounts.forEach(function(e){y(e)}),f.selectedDynamics365Accounts=[]})},f.deselectDynamics365Accounts=function(){f.selectedDynamics365Accounts=[]},f.selectAllDynamics365Accounts=function(){f.selectedDynamics365Accounts=f.dynamics365Accounts.rows};var b=!0,A=1;function E(e){f.dynamics365Accounts=e||{count:0,rows:[]}}function y(e){m.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(f.dynamics365Accounts.rows,{id:e.id}),f.dynamics365Accounts.count-=1,f.dynamics365Accounts.rows.length||f.getDynamics365Accounts(),p.success({title:_.startCase("Dynamics365Account")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDynamics365Account",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.dynamics365Account=c||e.params.dynamics365Account||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},u.saveDynamics365Account=function(){r.intDynamics365Account.update({id:u.dynamics365Account.id},u.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:u.dynamics365Account.name?u.dynamics365Account.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDynamics365Account",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","dynamics365Account","userProfileSection"],angular.module("app.integrations").controller("Dynamics365AccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKACCOUNT",g.freshdeskAccount=angular.copy(l),g.freshdeskAccounts=r,g.newFreshdeskAccount=!1,g.freshdeskAccount||(g.freshdeskAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHDESKACCOUNT",g.newFreshdeskAccount=!0),g.addNewFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.save(g.freshdeskAccount).$promise.then(function(e){g.freshdeskAccounts.unshift(e.toJSON()),o.success({title:"FreshdeskAccount properly created",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.update({id:g.freshdeskAccount.id},g.freshdeskAccount).$promise.then(function(e){var n=_.find(g.freshdeskAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FreshdeskAccount properly saved!",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskAccount.delete({id:g.freshdeskAccount.id}).$promise.then(function(){_.remove(g.freshdeskAccounts,{id:g.freshdeskAccount.id}),o.success({title:"FreshdeskAccount properly deleted!",msg:(g.freshdeskAccount.name||"freshdeskAccount")+" has been deleted!"}),v(g.freshdeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshdeskAccounts","freshdeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshdeskAccount={},o.freshdeskConfiguration={},o.configurations=[],o.selectedFreshdeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshdeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshdeskAccount.getConfigurations({id:o.freshdeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshdeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshdeskConfiguration=function(e){o.freshdeskConfiguration=o.configurations[e],o.selectedFreshdeskConfiguration=e,i.intFreshdeskConfiguration.getSubjects({id:o.freshdeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshdeskConfiguration.getDescriptions({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshdeskConfiguration.getFields({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intFreshdeskConfiguration.getTags({id:o.freshdeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshdeskConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(n.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshdeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshdeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intFreshdeskConfiguration.setTags({id:o.freshdeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshdeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKCONFIGURATION",g.freshdeskConfiguration=angular.copy(l),g.configurations=r,g.newFreshdeskConfiguration=!1,g.freshdeskConfiguration||(g.freshdeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHDESKCONFIGURATION",g.newFreshdeskConfiguration=!0),g.addNewFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskAccount.addConfiguration({id:n.params.id},g.freshdeskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshdeskConfiguration properly created",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskConfiguration.update({id:g.freshdeskConfiguration.id},g.freshdeskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FreshdeskConfiguration properly saved!",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskConfiguration.delete({id:g.freshdeskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshdeskConfiguration.id}),o.success({title:"FreshdeskConfiguration properly deleted!",msg:(g.freshdeskConfiguration.name||"freshdeskConfiguration")+" has been deleted!"}),v(g.freshdeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshdeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshdeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshdeskAccount=c||e.params.freshdeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshdeskAccounts=function(){e.go("app.integrations.freshdeskAccounts",{},{reload:"app.integrations.freshdeskAccounts"})},u.saveFreshdeskAccount=function(){r.intFreshdeskAccount.update({id:u.freshdeskAccount.id},u.freshdeskAccount).$promise.then(function(){l.success({title:"FreshdeskAccount updated!",msg:u.freshdeskAccount.name?u.freshdeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshdeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshdeskAccount","userProfileSection"],angular.module("app.integrations").controller("FreshdeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshdeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshdeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshdeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshdeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshdeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshdeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshdeskAccount")+"?").htmlContent("<b>"+(e.name||"freshdeskAccount")+"</b> will be deleted.").ariaLabel("delete freshdeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshdeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshdeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshdeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshdeskAccount=function(e,n){i.show({controller:"CreateOrEditFreshdeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskAccount:n,freshdeskAccounts:f.freshdeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshdeskAccount=y,f.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(f.selectedFreshdeskAccounts);return f.selectedFreshdeskAccounts=[],e},f.deleteSelectedFreshdeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+f.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshdeskAccounts.forEach(function(e){y(e)}),f.selectedFreshdeskAccounts=[]})},f.deselectFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=[]},f.selectAllFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=f.freshdeskAccounts.rows};var b=!0,A=1;function E(e){f.freshdeskAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshdeskAccounts.rows,{id:e.id}),f.freshdeskAccounts.count-=1,f.freshdeskAccounts.rows.length||f.getFreshdeskAccounts(),p.success({title:_.startCase("FreshdeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshdeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshdeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESACCOUNT",g.freshsalesAccount=angular.copy(l),g.freshsalesAccounts=r,g.newFreshsalesAccount=!1,g.freshsalesAccount||(g.freshsalesAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHSALESACCOUNT",g.newFreshsalesAccount=!0),g.addNewFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.save(g.freshsalesAccount).$promise.then(function(e){g.freshsalesAccounts.unshift(e.toJSON()),o.success({title:"FreshsalesAccount properly created",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.update({id:g.freshsalesAccount.id},g.freshsalesAccount).$promise.then(function(e){var n=_.find(g.freshsalesAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FreshsalesAccount properly saved!",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesAccount will be deleted.").ariaLabel("Delete FreshsalesAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesAccount.delete({id:g.freshsalesAccount.id}).$promise.then(function(){_.remove(g.freshsalesAccounts,{id:g.freshsalesAccount.id}),o.success({title:"FreshsalesAccount properly deleted!",msg:(g.freshsalesAccount.name||"freshsalesAccount")+" has been deleted!"}),v(g.freshsalesAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshsalesAccounts","freshsalesAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshsalesAccount={},o.freshsalesConfiguration={},o.configurations=[],o.selectedFreshsalesConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshsalesAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshsalesAccount.getConfigurations({id:o.freshsalesAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshsalesConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshsalesConfiguration=function(e){o.freshsalesConfiguration=o.configurations[e],o.selectedFreshsalesConfiguration=e,i.intFreshsalesConfiguration.getSubjects({id:o.freshsalesConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshsalesConfiguration.getDescriptions({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshsalesConfiguration.getFields({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshsalesConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshsalesConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshsalesConfiguration(0)})},o.deleteFreshsalesConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshsalesConfiguration?").htmlContent("<b>"+(n.name||"freshsalesConfiguration")+"</b> will be deleted.").ariaLabel("delete freshsalesConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshsalesConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshsalesConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshsalesConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshsalesAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESCONFIGURATION",g.freshsalesConfiguration=angular.copy(l),g.configurations=r,g.newFreshsalesConfiguration=!1,g.freshsalesConfiguration||(g.freshsalesConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHSALESCONFIGURATION",g.newFreshsalesConfiguration=!0),g.addNewFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesAccount.addConfiguration({id:n.params.id},g.freshsalesConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshsalesConfiguration properly created",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesConfiguration.update({id:g.freshsalesConfiguration.id},g.freshsalesConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"FreshsalesConfiguration properly saved!",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesConfiguration will be deleted.").ariaLabel("Delete FreshsalesConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesConfiguration.delete({id:g.freshsalesConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshsalesConfiguration.id}),o.success({title:"FreshsalesConfiguration properly deleted!",msg:(g.freshsalesConfiguration.name||"freshsalesConfiguration")+" has been deleted!"}),v(g.freshsalesConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshsalesConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshsalesField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshsalesAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshsalesAccount=c||e.params.freshsalesAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshsalesAccounts=function(){e.go("app.integrations.freshsalesAccounts",{},{reload:"app.integrations.freshsalesAccounts"})},u.saveFreshsalesAccount=function(){r.intFreshsalesAccount.update({id:u.freshsalesAccount.id},u.freshsalesAccount).$promise.then(function(){l.success({title:"FreshsalesAccount updated!",msg:u.freshsalesAccount.name?u.freshsalesAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshsalesAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshsalesAccount","userProfileSection"],angular.module("app.integrations").controller("FreshsalesAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshsalesAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshsalesAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshsalesAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshsalesAccounts.edit",{id:e.id,freshsalesAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshsalesAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshsalesAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshsalesAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshsalesAccount")+"?").htmlContent("<b>"+(e.name||"freshsalesAccount")+"</b> will be deleted.").ariaLabel("delete freshsalesAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshsalesAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshsalesAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshsalesAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshsalesAccount=function(e,n){i.show({controller:"CreateOrEditFreshsalesAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesAccount:n,freshsalesAccounts:f.freshsalesAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshsalesAccount=y,f.exportSelectedFreshsalesAccounts=function(){var e=angular.copy(f.selectedFreshsalesAccounts);return f.selectedFreshsalesAccounts=[],e},f.deleteSelectedFreshsalesAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshsalesAccounts?").htmlContent("<b>"+f.selectedFreshsalesAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshsalesAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshsalesAccounts.forEach(function(e){y(e)}),f.selectedFreshsalesAccounts=[]})},f.deselectFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=[]},f.selectAllFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=f.freshsalesAccounts.rows};var b=!0,A=1;function E(e){f.freshsalesAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshsalesAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshsalesAccounts.rows,{id:e.id}),f.freshsalesAccounts.count-=1,f.freshsalesAccounts.rows.length||f.getFreshsalesAccounts(),p.success({title:_.startCase("FreshsalesAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshsalesAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshsalesAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshsalesAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshsalesAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshsalesAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCEACCOUNT",g.salesforceAccount=angular.copy(l),g.salesforceAccounts=r,g.newSalesforceAccount=!1,g.salesforceAccount||(g.salesforceAccount={type:"integrationTab",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SALESFORCEACCOUNT",g.newSalesforceAccount=!0),g.addNewSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.save(g.salesforceAccount).$promise.then(function(e){g.salesforceAccounts.unshift(e.toJSON()),o.success({title:"SalesforceAccount properly created",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.update({id:g.salesforceAccount.id},g.salesforceAccount).$promise.then(function(e){var n=_.find(g.salesforceAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SalesforceAccount properly saved!",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceAccount.delete({id:g.salesforceAccount.id}).$promise.then(function(){_.remove(g.salesforceAccounts,{id:g.salesforceAccount.id}),o.success({title:"SalesforceAccount properly deleted!",msg:(g.salesforceAccount.name||"salesforceAccount")+" has been deleted!"}),v(g.salesforceAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","salesforceAccounts","salesforceAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function n(){return"Case"===o.salesforceConfiguration.ticketType&&("lead"===o.salesforceConfiguration.moduleCreate||_.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch))}function r(){return _.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function l(){return _.includes(["contact","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function d(){return _.includes(["account","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function c(){return i.intSalesforceConfiguration.update({id:o.salesforceConfiguration.id},o.salesforceConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function m(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function u(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.salesforceAccount={},o.salesforceConfiguration={},o.configurations=[],o.selectedSalesforceConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.salesforceAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSalesforceAccount.getConfigurations({id:o.salesforceAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSalesforceConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSalesforceConfiguration=function(e){o.salesforceConfiguration=o.configurations[e],o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),o.selectedSalesforceConfiguration=e,i.intSalesforceConfiguration.getSubjects({id:o.salesforceConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSalesforceConfiguration.getDescriptions({id:o.salesforceConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSalesforceConfiguration.getFields({id:o.salesforceConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSalesforceConfiguration=function(e,n){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(n.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSalesforceConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SalesforceConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSalesforceConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),c()},o.salesforceConfiguration.isLead=!1,o.salesforceConfiguration.isLeadSearch=!1,o.salesforceConfiguration.isContactSearch=!1,o.salesforceConfiguration.isAccountSearch=!1,o.checkIsLead=n,o.checkIsLeadSearch=r,o.checkIsContactSearch=l,o.checkIsAccountSearch=d,o.saveSalesforceConfiguration=c,o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){m(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){m(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){u(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){u(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){p(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCECONFIGURATION",g.salesforceConfiguration=angular.copy(l),g.configurations=r,g.newSalesforceConfiguration=!1,g.salesforceConfiguration||(g.salesforceConfiguration={channel:"voice",type:"inbound",ticketType:"Task"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:n.params.id},g.salesforceConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SalesforceConfiguration properly created",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceConfiguration=function(){g.errors=[],d.intSalesforceConfiguration.update({id:g.salesforceConfiguration.id},g.salesforceConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SalesforceConfiguration properly saved!",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceConfiguration.delete({id:g.salesforceConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.salesforceConfiguration.id}),o.success({title:"SalesforceConfiguration properly deleted!",msg:(g.salesforceConfiguration.name||"salesforceConfiguration")+" has been deleted!"}),v(g.salesforceConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","salesforceConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSalesforceField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.salesforceAccount=c||e.params.salesforceAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSalesforceAccounts=function(){e.go("app.integrations.salesforceAccounts",{},{reload:"app.integrations.salesforceAccounts"})},u.saveSalesforceAccount=function(){r.intSalesforceAccount.update({id:u.salesforceAccount.id},u.salesforceAccount).$promise.then(function(){l.success({title:"SalesforceAccount updated!",msg:u.salesforceAccount.name?u.salesforceAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSalesforceAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","salesforceAccount","userProfileSection"],angular.module("app.integrations").controller("SalesforceAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.salesforceAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="salesforceAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSalesforceAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSalesforceAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SalesforceAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SalesforceAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("salesforceAccount")+"?").htmlContent("<b>"+(e.name||"salesforceAccount")+"</b> will be deleted.").ariaLabel("delete salesforceAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSalesforceAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSalesforceAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SalesforceAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSalesforceAccount=function(e,n){i.show({controller:"CreateOrEditSalesforceAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceAccount:n,salesforceAccounts:f.salesforceAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSalesforceAccount=y,f.exportSelectedSalesforceAccounts=function(){var e=angular.copy(f.selectedSalesforceAccounts);return f.selectedSalesforceAccounts=[],e},f.deleteSelectedSalesforceAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+f.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSalesforceAccounts.forEach(function(e){y(e)}),f.selectedSalesforceAccounts=[]})},f.deselectSalesforceAccounts=function(){f.selectedSalesforceAccounts=[]},f.selectAllSalesforceAccounts=function(){f.selectedSalesforceAccounts=f.salesforceAccounts.rows};var b=!0,A=1;function E(e){f.salesforceAccounts=e||{count:0,rows:[]}}function y(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.salesforceAccounts.rows,{id:e.id}),f.salesforceAccounts.count-=1,f.salesforceAccounts.rows.length||f.getSalesforceAccounts(),p.success({title:_.startCase("SalesforceAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSalesforceAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SalesforceAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWACCOUNT",g.servicenowAccount=angular.copy(l),g.servicenowAccounts=r,g.newServicenowAccount=!1,g.servicenowAccount||(g.servicenowAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SERVICENOWACCOUNT",g.newServicenowAccount=!0),g.addNewServicenowAccount=function(){g.errors=[],d.intServicenowAccount.save(g.servicenowAccount).$promise.then(function(e){g.servicenowAccounts.unshift(e.toJSON()),o.success({title:"ServicenowAccount properly created",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowAccount=function(){g.errors=[],d.intServicenowAccount.update({id:g.servicenowAccount.id},g.servicenowAccount).$promise.then(function(e){var n=_.find(g.servicenowAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ServicenowAccount properly saved!",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowAccount will be deleted.").ariaLabel("Delete ServicenowAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowAccount.delete({id:g.servicenowAccount.id}).$promise.then(function(){_.remove(g.servicenowAccounts,{id:g.servicenowAccount.id}),o.success({title:"ServicenowAccount properly deleted!",msg:(g.servicenowAccount.name||"servicenowAccount")+" has been deleted!"}),v(g.servicenowAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","servicenowAccounts","servicenowAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.servicenowAccount={},o.servicenowConfiguration={},o.configurations=[],o.selectedServicenowConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.servicenowAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intServicenowAccount.getConfigurations({id:o.servicenowAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getServicenowConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getServicenowConfiguration=function(e){o.servicenowConfiguration=o.configurations[e],o.selectedServicenowConfiguration=e,i.intServicenowConfiguration.getSubjects({id:o.servicenowConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intServicenowConfiguration.getDescriptions({id:o.servicenowConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intServicenowConfiguration.getFields({id:o.servicenowConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditServicenowConfiguration=function(e,n){a.show({controller:"CreateOrEditServicenowConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getServicenowConfiguration(0)})},o.deleteServicenowConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the servicenowConfiguration?").htmlContent("<b>"+(n.name||"servicenowConfiguration")+"</b> will be deleted.").ariaLabel("delete servicenowConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intServicenowConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ServicenowConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getServicenowConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ServicenowAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWCONFIGURATION",g.servicenowConfiguration=angular.copy(l),g.configurations=r,g.newServicenowConfiguration=!1,g.servicenowConfiguration||(g.servicenowConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SERVICENOWCONFIGURATION",g.newServicenowConfiguration=!0),g.addNewServicenowConfiguration=function(){g.errors=[],d.intServicenowAccount.addConfiguration({id:n.params.id},g.servicenowConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ServicenowConfiguration properly created",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowConfiguration=function(){g.errors=[],d.intServicenowConfiguration.update({id:g.servicenowConfiguration.id},g.servicenowConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ServicenowConfiguration properly saved!",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowConfiguration will be deleted.").ariaLabel("Delete ServicenowConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowConfiguration.delete({id:g.servicenowConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.servicenowConfiguration.id}),o.success({title:"ServicenowConfiguration properly deleted!",msg:(g.servicenowConfiguration.name||"servicenowConfiguration")+" has been deleted!"}),v(g.servicenowConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","servicenowConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intServicenowField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intServicenowAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.servicenowAccount=c||e.params.servicenowAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoServicenowAccounts=function(){e.go("app.integrations.servicenowAccounts",{},{reload:"app.integrations.servicenowAccounts"})},u.saveServicenowAccount=function(){r.intServicenowAccount.update({id:u.servicenowAccount.id},u.servicenowAccount).$promise.then(function(){l.success({title:"ServicenowAccount updated!",msg:u.servicenowAccount.name?u.servicenowAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintServicenowAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","servicenowAccount","userProfileSection"],angular.module("app.integrations").controller("ServicenowAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.servicenowAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="servicenowAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedServicenowAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.servicenowAccounts.edit",{id:e.id,servicenowAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intServicenowAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ServicenowAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ServicenowAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("servicenowAccount")+"?").htmlContent("<b>"+(e.name||"servicenowAccount")+"</b> will be deleted.").ariaLabel("delete servicenowAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getServicenowAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intServicenowAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ServicenowAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditServicenowAccount=function(e,n){i.show({controller:"CreateOrEditServicenowAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowAccount:n,servicenowAccounts:f.servicenowAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteServicenowAccount=y,f.exportSelectedServicenowAccounts=function(){var e=angular.copy(f.selectedServicenowAccounts);return f.selectedServicenowAccounts=[],e},f.deleteSelectedServicenowAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected servicenowAccounts?").htmlContent("<b>"+f.selectedServicenowAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ServicenowAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedServicenowAccounts.forEach(function(e){y(e)}),f.selectedServicenowAccounts=[]})},f.deselectServicenowAccounts=function(){f.selectedServicenowAccounts=[]},f.selectAllServicenowAccounts=function(){f.selectedServicenowAccounts=f.servicenowAccounts.rows};var b=!0,A=1;function E(e){f.servicenowAccounts=e||{count:0,rows:[]}}function y(e){m.intServicenowAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.servicenowAccounts.rows,{id:e.id}),f.servicenowAccounts.count-=1,f.servicenowAccounts.rows.length||f.getServicenowAccounts(),p.success({title:_.startCase("ServicenowAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintServicenowAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintServicenowAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getServicenowAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","servicenowAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ServicenowAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMACCOUNT",g.sugarcrmAccount=angular.copy(l),g.sugarcrmAccounts=r,g.newSugarcrmAccount=!1,g.sugarcrmAccount||(g.sugarcrmAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SUGARCRMACCOUNT",g.newSugarcrmAccount=!0),g.addNewSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.save(g.sugarcrmAccount).$promise.then(function(e){g.sugarcrmAccounts.unshift(e.toJSON()),o.success({title:"SugarcrmAccount properly created",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.update({id:g.sugarcrmAccount.id},g.sugarcrmAccount).$promise.then(function(e){var n=_.find(g.sugarcrmAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SugarcrmAccount properly saved!",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmAccount.delete({id:g.sugarcrmAccount.id}).$promise.then(function(){_.remove(g.sugarcrmAccounts,{id:g.sugarcrmAccount.id}),o.success({title:"SugarcrmAccount properly deleted!",msg:(g.sugarcrmAccount.name||"sugarcrmAccount")+" has been deleted!"}),v(g.sugarcrmAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sugarcrmAccounts","sugarcrmAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.sugarcrmAccount={},o.sugarcrmConfiguration={},o.configurations=[],o.selectedSugarcrmConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.sugarcrmAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSugarcrmAccount.getConfigurations({id:o.sugarcrmAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSugarcrmConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSugarcrmConfiguration=function(e){o.sugarcrmConfiguration=o.configurations[e],o.selectedSugarcrmConfiguration=e,i.intSugarcrmConfiguration.getSubjects({id:o.sugarcrmConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSugarcrmConfiguration.getDescriptions({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSugarcrmConfiguration.getFields({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSugarcrmConfiguration=function(e,n){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(n.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSugarcrmConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSugarcrmConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SugarcrmAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMCONFIGURATION",g.sugarcrmConfiguration=angular.copy(l),g.configurations=r,g.newSugarcrmConfiguration=!1,g.sugarcrmConfiguration||(g.sugarcrmConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SUGARCRMCONFIGURATION",g.newSugarcrmConfiguration=!0),g.addNewSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmAccount.addConfiguration({id:n.params.id},g.sugarcrmConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SugarcrmConfiguration properly created",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmConfiguration.update({id:g.sugarcrmConfiguration.id},g.sugarcrmConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SugarcrmConfiguration properly saved!",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmConfiguration.delete({id:g.sugarcrmConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.sugarcrmConfiguration.id}),o.success({title:"SugarcrmConfiguration properly deleted!",msg:(g.sugarcrmConfiguration.name||"sugarcrmConfiguration")+" has been deleted!"}),v(g.sugarcrmConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","sugarcrmConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSugarcrmField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.sugarcrmAccount=c||e.params.sugarcrmAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSugarcrmAccounts=function(){e.go("app.integrations.sugarcrmAccounts",{},{reload:"app.integrations.sugarcrmAccounts"})},u.saveSugarcrmAccount=function(){r.intSugarcrmAccount.update({id:u.sugarcrmAccount.id},u.sugarcrmAccount).$promise.then(function(){l.success({title:"SugarcrmAccount updated!",msg:u.sugarcrmAccount.name?u.sugarcrmAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSugarcrmAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","sugarcrmAccount","userProfileSection"],angular.module("app.integrations").controller("SugarcrmAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sugarcrmAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sugarcrmAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSugarcrmAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSugarcrmAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SugarcrmAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SugarcrmAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sugarcrmAccount")+"?").htmlContent("<b>"+(e.name||"sugarcrmAccount")+"</b> will be deleted.").ariaLabel("delete sugarcrmAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSugarcrmAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSugarcrmAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SugarcrmAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSugarcrmAccount=function(e,n){i.show({controller:"CreateOrEditSugarcrmAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmAccount:n,sugarcrmAccounts:f.sugarcrmAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSugarcrmAccount=y,f.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(f.selectedSugarcrmAccounts);return f.selectedSugarcrmAccounts=[],e},f.deleteSelectedSugarcrmAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+f.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSugarcrmAccounts.forEach(function(e){y(e)}),f.selectedSugarcrmAccounts=[]})},f.deselectSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=[]},f.selectAllSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=f.sugarcrmAccounts.rows};var b=!0,A=1;function E(e){f.sugarcrmAccounts=e||{count:0,rows:[]}}function y(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.sugarcrmAccounts.rows,{id:e.id}),f.sugarcrmAccounts.count-=1,f.sugarcrmAccounts.rows.length||f.getSugarcrmAccounts(),p.success({title:_.startCase("SugarcrmAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSugarcrmAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SugarcrmAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERACCOUNT",g.vtigerAccount=angular.copy(l),g.vtigerAccounts=r,g.newVtigerAccount=!1,g.vtigerAccount||(g.vtigerAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_VTIGERACCOUNT",g.newVtigerAccount=!0),g.addNewVtigerAccount=function(){g.errors=[],d.intVtigerAccount.save(g.vtigerAccount).$promise.then(function(e){g.vtigerAccounts.unshift(e.toJSON()),o.success({title:"VtigerAccount properly created",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerAccount=function(){g.errors=[],d.intVtigerAccount.update({id:g.vtigerAccount.id},g.vtigerAccount).$promise.then(function(e){var n=_.find(g.vtigerAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"VtigerAccount properly saved!",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerAccount.delete({id:g.vtigerAccount.id}).$promise.then(function(){_.remove(g.vtigerAccounts,{id:g.vtigerAccount.id}),o.success({title:"VtigerAccount properly deleted!",msg:(g.vtigerAccount.name||"vtigerAccount")+" has been deleted!"}),v(g.vtigerAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","vtigerAccounts","vtigerAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.vtigerAccount={},o.vtigerConfiguration={},o.configurations=[],o.selectedVtigerConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.vtigerAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intVtigerAccount.getConfigurations({id:o.vtigerAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getVtigerConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getVtigerConfiguration=function(e){o.vtigerConfiguration=o.configurations[e],o.selectedVtigerConfiguration=e,i.intVtigerConfiguration.getSubjects({id:o.vtigerConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intVtigerConfiguration.getDescriptions({id:o.vtigerConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intVtigerConfiguration.getFields({id:o.vtigerConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditVtigerConfiguration=function(e,n){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(n.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intVtigerConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"VtigerConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getVtigerConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("VtigerAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERCONFIGURATION",g.vtigerConfiguration=angular.copy(l),g.configurations=r,g.newVtigerConfiguration=!1,g.vtigerConfiguration||(g.vtigerConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_VTIGERCONFIGURATION",g.newVtigerConfiguration=!0),g.addNewVtigerConfiguration=function(){g.errors=[],d.intVtigerAccount.addConfiguration({id:n.params.id},g.vtigerConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"VtigerConfiguration properly created",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerConfiguration=function(){g.errors=[],d.intVtigerConfiguration.update({id:g.vtigerConfiguration.id},g.vtigerConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"VtigerConfiguration properly saved!",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerConfiguration.delete({id:g.vtigerConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.vtigerConfiguration.id}),o.success({title:"VtigerConfiguration properly deleted!",msg:(g.vtigerConfiguration.name||"vtigerConfiguration")+" has been deleted!"}),v(g.vtigerConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","vtigerConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intVtigerField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.vtigerAccount=c||e.params.vtigerAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVtigerAccounts=function(){e.go("app.integrations.vtigerAccounts",{},{reload:"app.integrations.vtigerAccounts"})},u.saveVtigerAccount=function(){r.intVtigerAccount.update({id:u.vtigerAccount.id},u.vtigerAccount).$promise.then(function(){l.success({title:"VtigerAccount updated!",msg:u.vtigerAccount.name?u.vtigerAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintVtigerAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","vtigerAccount","userProfileSection"],angular.module("app.integrations").controller("VtigerAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.vtigerAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="vtigerAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedVtigerAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intVtigerAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"VtigerAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"VtigerAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("vtigerAccount")+"?").htmlContent("<b>"+(e.name||"vtigerAccount")+"</b> will be deleted.").ariaLabel("delete vtigerAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVtigerAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intVtigerAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VtigerAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVtigerAccount=function(e,n){i.show({controller:"CreateOrEditVtigerAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerAccount:n,vtigerAccounts:f.vtigerAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVtigerAccount=y,f.exportSelectedVtigerAccounts=function(){var e=angular.copy(f.selectedVtigerAccounts);return f.selectedVtigerAccounts=[],e},f.deleteSelectedVtigerAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+f.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVtigerAccounts.forEach(function(e){y(e)}),f.selectedVtigerAccounts=[]})},f.deselectVtigerAccounts=function(){f.selectedVtigerAccounts=[]},f.selectAllVtigerAccounts=function(){f.selectedVtigerAccounts=f.vtigerAccounts.rows};var b=!0,A=1;function E(e){f.vtigerAccounts=e||{count:0,rows:[]}}function y(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.vtigerAccounts.rows,{id:e.id}),f.vtigerAccounts.count-=1,f.vtigerAccounts.rows.length||f.getVtigerAccounts(),p.success({title:_.startCase("VtigerAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintVtigerAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("VtigerAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKACCOUNT",g.zendeskAccount=angular.copy(l),g.zendeskAccounts=r,g.newZendeskAccount=!1,g.zendeskAccount||(g.zendeskAccount={type:"integrationTab",authType:"password",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZENDESKACCOUNT",g.newZendeskAccount=!0),g.addNewZendeskAccount=function(){g.errors=[],d.intZendeskAccount.save(g.zendeskAccount).$promise.then(function(e){g.zendeskAccounts.unshift(e.toJSON()),o.success({title:"ZendeskAccount properly created",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskAccount=function(){g.errors=[],d.intZendeskAccount.update({id:g.zendeskAccount.id},g.zendeskAccount).$promise.then(function(e){var n=_.find(g.zendeskAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ZendeskAccount properly saved!",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskAccount.delete({id:g.zendeskAccount.id}).$promise.then(function(){_.remove(g.zendeskAccounts,{id:g.zendeskAccount.id}),o.success({title:"ZendeskAccount properly deleted!",msg:(g.zendeskAccount.name||"zendeskAccount")+" has been deleted!"}),v(g.zendeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskAccounts","zendeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZendeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zendeskAccount=c||e.params.zendeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZendeskAccounts=function(){e.go("app.integrations.zendeskAccounts",{},{reload:"app.integrations.zendeskAccounts"})},u.saveZendeskAccount=function(){r.intZendeskAccount.update({id:u.zendeskAccount.id},u.zendeskAccount).$promise.then(function(){l.success({title:"ZendeskAccount updated!",msg:u.zendeskAccount.name?u.zendeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZendeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zendeskAccount","userProfileSection"],angular.module("app.integrations").controller("ZendeskAccountController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zendeskAccount={},o.zendeskConfiguration={},o.zendeskConfigurations=[],o.selectedZendeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zendeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZendeskAccount.getConfigurations({id:o.zendeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.zendeskConfigurations=e.rows?e.rows:[],o.zendeskConfigurations.length&&o.getZendeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZendeskConfiguration=function(e){o.zendeskConfiguration=o.zendeskConfigurations[e],o.selectedZendeskConfiguration=e,i.intZendeskConfiguration.getSubjects({id:o.zendeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZendeskConfiguration.getDescriptions({id:o.zendeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZendeskConfiguration.getFields({id:o.zendeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intZendeskConfiguration.getTags({id:o.zendeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZendeskConfiguration=function(e,n){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:n,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(n.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZendeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:n.id}),s.success({title:"ZendeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZendeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intZendeskConfiguration.setTags({id:o.zendeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZendeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKCONFIGURATION",g.zendeskConfiguration=angular.copy(l),g.zendeskConfigurations=r,g.newZendeskConfiguration=!1,g.zendeskConfiguration||(g.zendeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZENDESKCONFIGURATION",g.newZendeskConfiguration=!0),g.addNewZendeskConfiguration=function(){g.errors=[],d.intZendeskAccount.addConfiguration({id:n.params.id},g.zendeskConfiguration).$promise.then(function(e){g.zendeskConfigurations.unshift(e.toJSON()),o.success({title:"ZendeskConfiguration properly created",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskConfiguration=function(){g.errors=[],d.intZendeskConfiguration.update({id:g.zendeskConfiguration.id},g.zendeskConfiguration).$promise.then(function(e){var n=_.find(g.zendeskConfigurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ZendeskConfiguration properly saved!",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskConfiguration.delete({id:g.zendeskConfiguration.id}).$promise.then(function(){_.remove(g.zendeskConfigurations,{id:g.zendeskConfiguration.id}),o.success({title:"ZendeskConfiguration properly deleted!",msg:(g.zendeskConfiguration.name||"zendeskConfiguration")+" has been deleted!"}),v(g.zendeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskConfigurations","zendeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zendeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zendeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZendeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZendeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZendeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZendeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zendeskAccount")+"?").htmlContent("<b>"+(e.name||"zendeskAccount")+"</b> will be deleted.").ariaLabel("delete zendeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZendeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZendeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZendeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZendeskAccount=function(e,n){i.show({controller:"CreateOrEditZendeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskAccount:n,zendeskAccounts:f.zendeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZendeskAccount=y,f.exportSelectedZendeskAccounts=function(){var e=angular.copy(f.selectedZendeskAccounts);return f.selectedZendeskAccounts=[],e},f.deleteSelectedZendeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+f.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZendeskAccounts.forEach(function(e){y(e)}),f.selectedZendeskAccounts=[]})},f.deselectZendeskAccounts=function(){f.selectedZendeskAccounts=[]},f.selectAllZendeskAccounts=function(){f.selectedZendeskAccounts=f.zendeskAccounts.rows};var b=!0,A=1;function E(e){f.zendeskAccounts=e||{count:0,rows:[]}}function y(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zendeskAccounts.rows,{id:e.id}),f.zendeskAccounts.count-=1,f.zendeskAccounts.rows.length||f.getZendeskAccounts(),p.success({title:_.startCase("ZendeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZendeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZendeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOACCOUNT",g.zohoAccount=angular.copy(l),g.zohoAccounts=r,g.newZohoAccount=!1,g.zohoAccount||(g.zohoAccount={host:"zoho.com",zone:"EU",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZOHOACCOUNT",g.newZohoAccount=!0),g.addNewZohoAccount=function(){g.errors=[],d.intZohoAccount.save(g.zohoAccount).$promise.then(function(e){g.zohoAccounts.unshift(e.toJSON()),o.success({title:"ZohoAccount properly created",msg:g.zohoAccount.name?g.zohoAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoAccount=function(){g.errors=[],d.intZohoAccount.update({id:g.zohoAccount.id},g.zohoAccount).$promise.then(function(e){var n=_.find(g.zohoAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ZohoAccount properly saved!",msg:g.zohoAccount.name?g.zohoAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoAccount.delete({id:g.zohoAccount.id}).$promise.then(function(){_.remove(g.zohoAccounts,{id:g.zohoAccount.id}),o.success({title:"ZohoAccount properly deleted!",msg:(g.zohoAccount.name||"zohoAccount")+" has been deleted!"}),v(g.zohoAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zohoAccounts","zohoAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zohoAccount={},o.zohoConfiguration={},o.configurations=[],o.selectedZohoConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zohoAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZohoAccount.getConfigurations({id:o.zohoAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getZohoConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZohoConfiguration=function(e){o.zohoConfiguration=o.configurations[e],o.selectedZohoConfiguration=e,i.intZohoConfiguration.getSubjects({id:o.zohoConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZohoConfiguration.getDescriptions({id:o.zohoConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZohoConfiguration.getFields({id:o.zohoConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZohoConfiguration=function(e,n){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(n.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZohoConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ZohoConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZohoConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){i.intZohoConfiguration.update({id:o.zohoConfiguration.id},o.zohoConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZohoAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOCONFIGURATION",g.zohoConfiguration=angular.copy(l),g.configurations=r,g.newZohoConfiguration=!1,g.zohoConfiguration||(g.zohoConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZOHOCONFIGURATION",g.newZohoConfiguration=!0),g.addNewZohoConfiguration=function(){g.errors=[],d.intZohoAccount.addConfiguration({id:n.params.id},g.zohoConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ZohoConfiguration properly created",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoConfiguration=function(){g.errors=[],d.intZohoConfiguration.update({id:g.zohoConfiguration.id},g.zohoConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ZohoConfiguration properly saved!",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoConfiguration.delete({id:g.zohoConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.zohoConfiguration.id}),o.success({title:"ZohoConfiguration properly deleted!",msg:(g.zohoConfiguration.name||"zohoConfiguration")+" has been deleted!"}),v(g.zohoConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","zohoConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZohoField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zohoAccount=c||e.params.zohoAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZohoAccounts=function(){e.go("app.integrations.zohoAccounts",{},{reload:"app.integrations.zohoAccounts"})},u.saveZohoAccount=function(){r.intZohoAccount.update({id:u.zohoAccount.id},u.zohoAccount).$promise.then(function(){l.success({title:"ZohoAccount updated!",msg:u.zohoAccount.name?u.zohoAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZohoAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zohoAccount","userProfileSection"],angular.module("app.integrations").controller("ZohoAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zohoAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zohoAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZohoAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayzone=_.keyBy([{option:"US",value:"'US'"},{option:"AU",value:"'AU'"},{option:"EU",value:"'EU'"},{option:"IN",value:"'IN'"},{option:"CN",value:"'CN'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZohoAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZohoAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZohoAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zohoAccount")+"?").htmlContent("<b>"+(e.name||"zohoAccount")+"</b> will be deleted.").ariaLabel("delete zohoAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZohoAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZohoAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZohoAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZohoAccount=function(e,n){i.show({controller:"CreateOrEditZohoAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoAccount:n,zohoAccounts:f.zohoAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZohoAccount=y,f.exportSelectedZohoAccounts=function(){var e=angular.copy(f.selectedZohoAccounts);return f.selectedZohoAccounts=[],e},f.deleteSelectedZohoAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+f.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZohoAccounts.forEach(function(e){y(e)}),f.selectedZohoAccounts=[]})},f.deselectZohoAccounts=function(){f.selectedZohoAccounts=[]},f.selectAllZohoAccounts=function(){f.selectedZohoAccounts=f.zohoAccounts.rows};var b=!0,A=1;function E(e){f.zohoAccounts=e||{count:0,rows:[]}}function y(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zohoAccounts.rows,{id:e.id}),f.zohoAccounts.count-=1,f.zohoAccounts.rows.length||f.getZohoAccounts(),p.success({title:_.startCase("ZohoAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZohoAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZohoAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="JSCRIPTY.EDIT_PROJECT",g.project=angular.copy(l),g.projects=r,g.newProject=!1,g.project||(g.project={enableUncompleteSave:!0,sendUnpauseOnSubmit:!0},g.title="JSCRIPTY.NEW_PROJECT",g.newProject=!0),g.addNewProject=function(){g.errors=[],d.jscriptyProject.save(g.project).$promise.then(function(e){g.projects.unshift(e.toJSON()),o.success({title:"Project properly created",msg:g.project.name?g.project.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveProject=function(){g.errors=[],d.jscriptyProject.update({id:g.project.id},g.project).$promise.then(function(e){var n=_.find(g.projects,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Project properly saved!",msg:g.project.name?g.project.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteProject=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.jscriptyProject.delete({id:g.project.id}).$promise.then(function(){_.remove(g.projects,{id:g.project.id}),o.success({title:"Project properly deleted!",msg:(g.project.name||"project")+" has been deleted!"}),v(g.project)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","projects","project","api","Auth","license","setting","crudPermissions"],angular.module("app.jscripty").controller("CreateOrEditProjectDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;r.currentUser=i.getCurrentUser(),r.project={},r.localizationMap=o;var l=new Date;r.pickerModel={dateStart:new Date(l.getFullYear(),l.getMonth(),1),dateEnd:new Date(l.getFullYear(),l.getMonth()+1,0),selectedTemplate:"TM"},r.init=function(e,n){r.project=e,r.userProfile=n,r.getAnswers()},r.getSummary=function(){return a.jscriptyProject.getSummary({id:r.project.id,startTime:{$gte:r.pickerModel.dateStart,$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").format()},nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","jscriptyProjectSummary_"+r.project.id+".csv"),a.click()}else s.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.getAnswers=function(){return r.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:r.project.id,sort:"-createdAt,questionId",createdAt:{$gte:moment(r.pickerModel.dateStart).add(0,"hours").add(0,"minutes").add(0,"seconds").utcOffset(0,!0).format(),$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").utcOffset(0,!0).format()},nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){r.answers={};for(var n=0,t=e.count;n<t;n++)e.rows[n].questionId&&(r.hasIdAnswers=!0,r.answers.hasOwnProperty(e.rows[n].questionId)||(r.answers[e.rows[n].questionId]={question:e.rows[n].question,answers:{},sum:0}),""===e.rows[n].answer&&(e.rows[n].answer="NO_ANSWER"),r.answers[e.rows[n].questionId].answers[e.rows[n].answer]?r.answers[e.rows[n].questionId].answers[e.rows[n].answer]+=1:r.answers[e.rows[n].questionId].answers[e.rows[n].answer]=1,r.answers[e.rows[n].questionId].sum+=1)}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETANSWERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$mdDialog","$document","$window","api","Auth","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var n=this;n.project={},n.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},n.init=function(e){n.project=e,_.isObjectLike(e.formData)?n.project.formData=e.formData:n.isJsonString(e.formData)?n.project.formData=JSON.parse(e.formData):n.project.formData={}},n.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newProject=!0,r.project=angular.copy(i),r.projects=s,r.title=o.instant("JSCRIPTY.CLONE_PROJECT"),i&&i.name&&(r.title+=": "+i.name),r.cloneProject=function(){return e.jscriptyProject.clone({id:i.id},r.project).$promise.then(function(e){r.projects.unshift(e.toJSON()),a.success({title:"Project properly cloned",msg:r.project.name?r.project.name+" has been cloned!":""}),t.go("app.jscripty.projects.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","project","projects","$translate"],angular.module("app.jscripty").controller("ProjectcloneController",e)}(),function(){"use strict";function e(a,i,n){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,n.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&o.project.formData&&o.project.formData.pages)for(var t=0,a=o.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&o.project.formData.pages[t].elements)for(var i=0,s=o.project.formData.pages[t].elements.length;i<s;i++)"question"===o.project.formData.pages[t].elements[i].type&&o.project.formData.pages[t].elements[i].question&&delete o.responseData[o.project.formData.pages[t].elements[i].question.id]})},o.onSubmit=function(e){var n=a.defer(),t=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(t).then(function(){n.resolve(!0)},function(){n.reject()}),n.promise},o.resetViewer=function(){o.formViewer.reset&&o.formViewer.reset()}}e.$inject=["$q","$mdDialog","$scope"],angular.module("app.jscripty").controller("ProjectViewerController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.projectSessions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.jscriptyProject.getSessions(m.query,u).$promise}function g(e){d.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(m.projectSessions.rows,{id:e.id}),m.projectSessions.count-=1,m.projectSessions.rows.length||p(),l.success({title:"Session deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.project={},m.projectSessions={count:0,rows:[]},m.selectedProjectSessions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},m.init=function(e,n,t){m.project=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.project.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("session #")+e.id||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getProjectSessions=p,m.createOrEditProjectSession=function(e,n){o.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:m.project,session:n,sessions:m.projectSessions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showQuestionsProjectSession=function(e,t){o.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:t.id})}]},locals:{project:m.project,session:t}})},m.exportSelectedProjectSessions=function(){var e=angular.copy(m.selectedProjectSessions);return m.selectedProjectSessions=[],e},m.deleteProjectSession=g,m.deleteSelectedProjectSessions=function(e){var n=o.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+m.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedProjectSessions.forEach(function(e){g(e)}),m.selectedProjectSessions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){this.title="JSCRIPTY.SESSION_RESULTS",this.session=s,this.questions=o,this.project=r,this.closeDialog=function(e){a.hide(e)}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","session","questions","project","api"],angular.module("app.jscripty").controller("ShowQuestionsSessionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.project=c||e.params.project||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.clonedialog=function(e,n){t.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:p.projects?p.projects.rows:[],crudPermissions:p.crudPermissions}})},p.alert=l.info,p.gotoProjects=function(){e.go("app.jscripty.projects",{},{reload:"app.jscripty.projects"})},p.saveProject=function(){r.jscriptyProject.update({id:p.project.id},p.project).$promise.then(function(){l.success({title:"Project updated!",msg:p.project.name?p.project.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","project","userProfile","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.projects=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="projects",f.listOrder="",f.listOrderAsc=null,f.selectedProjects=[],f.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:f.projects?f.projects.rows:[],crudPermissions:f.crudPermissions}})},f.sessionsgoto=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,tab:3})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("project")+"?").htmlContent("<b>"+(e.name||"project")+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getProjects=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.jscriptyProject.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Projects",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditProject=function(e,n){i.show({controller:"CreateOrEditProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:f.projects.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteProject=y,f.exportSelectedProjects=function(){var e=angular.copy(f.selectedProjects);return f.selectedProjects=[],e},f.deleteSelectedProjects=function(e){var n=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+f.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedProjects.forEach(function(e){y(e)}),f.selectedProjects=[]})},f.deselectProjects=function(){f.selectedProjects=[]},f.selectAllProjects=function(){f.selectedProjects=f.projects.rows};var b=!0,A=1;function E(e){f.projects=e||{count:0,rows:[]}}function y(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(f.projects.rows,{id:e.id}),f.projects.count-=1,f.projects.rows.length||f.getProjects(),p.success({title:_.startCase("Project")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.jscripty").controller("JscriptyProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILACCOUNT",g.mailAccount=angular.copy(l),g.mailAccounts=r,g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,cservice:"null",cauthentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="MAIL.NEW_MAILACCOUNT",g.newMailAccount=!0),n.params.id&&(g.mailAccount.MailAccountId=n.params.id),g.addNewMailAccount=function(){g.errors=[],d.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),o.success({title:"MailAccount properly created",msg:g.mailAccount.name?g.mailAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],d.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailAccount properly saved!",msg:g.mailAccount.name?g.mailAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return o.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailAccount will be deleted.").ariaLabel("Delete MailAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),o.success({title:"MailAccount properly deleted!",msg:(g.mailAccount.name||"mailAccount")+" has been deleted!"}),v(g.mailAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.mailAccount&&(t=_.find(g.lists,{id:Number(g.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.mailAccount&&(a=_.find(g.lists,{id:Number(g.mailAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailAccounts","mailAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccountApp:t,mailAccount:r.mailAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.mailAccountApps.rows[n]=e:r.mailAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.mailAccountApps.rows.length;t++,0){var a=r.mailAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.mailAccount.context,a.exten=r.mailAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.mailAccount.addApplications({id:r.mailAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.mailAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.mailAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.mailAccount={},r.mailAccountApps={count:0,rows:[]},r.selectedMailAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"MailQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"mailQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:601}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Reply_Type",name:"replyType",type:"select",defaultValue:"1",values:[{option:"Reply",value:"0"},{option:"Reply All",value:"1"}],required:!0,param:1},{title:"Text",name:"text",type:"html",required:!0,param:2}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.mailAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getMailAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.mailAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getMailAccountApps=function(){r.promise=o.mailAccount.getApplications(r.query,t).$promise},r.editMailAccountApp=n,r.editInterval=function(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteMailAccountApp=function(e){_.remove(r.mailAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedMailAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedMailAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedMailAccountApps.forEach(function(e){_.remove(r.mailAccountApps.rows,{id:e.id})}),r.selectedMailAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.mail").controller("MailAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailAccount.getAgents({id:c.mailAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailAccount?"penalty "+e.UserMailAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.removeAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.addAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailAccount","mailAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.agent.text=d.slice(2,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.autoreply.text=d.slice(2,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.replyType=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.autoreply.text=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.autoreply.times=1,l.autoreply.replyType=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.replyType,e[2]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.close.text=d.slice(2,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotoif.text=d.slice(2,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotop.text=d.slice(2,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditMailAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.noop.text=d.slice(2,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.queue.text=d.slice(2,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("mail")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:601}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.system.text=d.slice(2,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.tag.text=d.slice(2,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,(void 0===m.query.closed||null===m.query.closed||m.query.closed)&&delete m.query.substatus,m.promise=d.mailInteraction.get(m.query,u).$promise}function g(e){d.mailInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountInteractions.rows,{id:e.id}),m.mailAccountInteractions.count-=1,m.mailAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.email||""):e.contactName=i.instant("MAIL.UNKNOWN"):(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0])}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountInteractions={count:0,rows:[]},m.selectedMailAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){m.subStatuses=e||{count:0,rows:[]}})}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:m.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.mailInteractionDownload=function(s,e,n){return d.mailInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="mail-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMailAccountInteractions=p,m.createOrEditMailAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,interaction:n,interactions:m.mailAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spymailInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"mail",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"mail.mailAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||MailAccountId:=$eq["+m.mailAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedMailAccountInteractions=function(){var e=angular.copy(m.selectedMailAccountInteractions);return m.selectedMailAccountInteractions=[],e},m.deleteMailAccountInteraction=g,m.deleteSelectedMailAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedMailAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountInteractions.forEach(function(e){g(e)}),m.selectedMailAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountMailCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.mailAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountMailCannedAnswers.rows,{id:e.id}),m.mailAccountMailCannedAnswers.count-=1,m.mailAccountMailCannedAnswers.rows.length||p(),l.success({title:"MailCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountMailCannedAnswers={count:0,rows:[]},m.selectedMailAccountMailCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mailCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mailCannedAnswer #")+e.id||"mailCannedAnswer")+"</b> will be deleted.").ariaLabel("delete mailCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getMailAccountMailCannedAnswers=p,m.createOrEditMailAccountMailCannedAnswer=function(e,n){o.show({controller:"CreateOrEditMailCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,mailCannedAnswer:n,mailCannedAnswers:m.mailAccountMailCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMailAccountMailCannedAnswers=function(){var e=angular.copy(m.selectedMailAccountMailCannedAnswers);return m.selectedMailAccountMailCannedAnswers=[],e},m.deleteMailAccountMailCannedAnswer=g,m.deleteSelectedMailAccountMailCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected mailCannedAnswers?").htmlContent("<b>"+m.selectedMailAccountMailCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete mailCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountMailCannedAnswers.forEach(function(e){g(e)}),m.selectedMailAccountMailCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILCANNEDANSWER",g.mailCannedAnswer=angular.copy(l),g.mailCannedAnswers=r,g.newMailCannedAnswer=!1,g.mailCannedAnswer||(g.mailCannedAnswer={},g.title="MAIL.NEW_MAILCANNEDANSWER",g.newMailCannedAnswer=!0),n.params.id&&(g.mailCannedAnswer.MailAccountId=n.params.id),g.addNewMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.mailCannedAnswer).$promise.then(function(e){g.mailCannedAnswers.unshift(e.toJSON()),o.success({title:"MailCannedAnswer properly created",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.mailCannedAnswer.id},g.mailCannedAnswer).$promise.then(function(e){var n=_.find(g.mailCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailCannedAnswer properly saved!",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailCannedAnswer will be deleted.").ariaLabel("Delete MailCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.mailCannedAnswer.id}).$promise.then(function(){_.remove(g.mailCannedAnswers,{id:g.mailCannedAnswer.id}),o.success({title:"MailCannedAnswer properly deleted!",msg:(g.mailCannedAnswer.name||"mailCannedAnswer")+" has been deleted!"}),v(g.mailCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailCannedAnswers","mailCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.mailAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.mailAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.mailAccount.id,field:"MailAccountId",route:"mailAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.mail").controller("MailAccountDispositionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.mailAccount=c||t.params.mailAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:p.mailAccounts?p.mailAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},p.saveMailAccount=function(){r.mailAccount.update({id:p.mailAccount.id},p.mailAccount).$promise.then(function(){l.success({title:"MailAccount updated!",msg:p.mailAccount.name?p.mailAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.mailAccount&&(t=_.find(p.lists,{id:Number(p.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.mailAccount&&(a=_.find(p.lists,{id:Number(p.mailAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailAccount","userProfile","userProfileSection"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedMailAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,email,ListId,active,cservice,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraycservice=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arrayImap.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f["arraySmtp.service"]=_.keyBy([{option:"Custom",value:"null"},{option:"Gmail",value:"'gmail'"},{option:"Hotmail",value:"'hotmail'"},{option:"Yahoo",value:"'yahoo'"},{option:"Outlook365",value:"'outlook365'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:f.crudPermissions})},f.verifysmtpverifysmtp=function(e,n){{if(e&&e.id)return m.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){p.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});p.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},f.interactionsgoto=function(e,n){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:7})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailAccount")+"?").htmlContent("<b>"+(e.name||"mailAccount")+"</b> will be deleted.").ariaLabel("delete mailAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailAccount=function(e,n){i.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:f.mailAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailAccount=y,f.exportSelectedMailAccounts=function(){var e=angular.copy(f.selectedMailAccounts);return f.selectedMailAccounts=[],e},f.deleteSelectedMailAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailAccounts?").htmlContent("<b>"+f.selectedMailAccounts.length+" selected</b> will be deleted.").ariaLabel("delete MailAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailAccounts.forEach(function(e){y(e)}),f.selectedMailAccounts=[]})},f.deselectMailAccounts=function(){f.selectedMailAccounts=[]},f.selectAllMailAccounts=function(){f.selectedMailAccounts=f.mailAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.mailAccount&&(t=_.find(f.lists,{id:Number(f.mailAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.mailAccount&&(a=_.find(f.lists,{id:Number(f.mailAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.mailAccounts=e||{count:0,rows:[]}}function y(e){if(e.service)return p.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});m.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.mailAccounts.rows,{id:e.id}),f.mailAccounts.count-=1,f.mailAccounts.rows.length||f.getMailAccounts(),p.success({title:_.startCase("MailAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILQUEUE",g.mailQueue=angular.copy(l),g.mailQueues=r,g.newMailQueue=!1,g.mailQueue||(g.mailQueue={strategy:"beepall",timeout:10},g.title="MAIL.NEW_MAILQUEUE",g.newMailQueue=!0),g.addNewMailQueue=function(){g.errors=[],d.mailQueue.save(g.mailQueue).$promise.then(function(e){g.mailQueues.unshift(e.toJSON()),o.success({title:"MailQueue properly created",msg:g.mailQueue.name?g.mailQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailQueue=function(){g.errors=[],d.mailQueue.update({id:g.mailQueue.id},g.mailQueue).$promise.then(function(e){var n=_.find(g.mailQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailQueue properly saved!",msg:g.mailQueue.name?g.mailQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailQueue.delete({id:g.mailQueue.id}).$promise.then(function(){_.remove(g.mailQueues,{id:g.mailQueue.id}),o.success({title:"MailQueue properly deleted!",msg:(g.mailQueue.name||"mailQueue")+" has been deleted!"}),v(g.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailQueues","mailQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,n){p.rpcMailAccounts[n]&&_.merge(e,p.rpcMailAccounts[n])}),_.forIn(p.mailAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.mailAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcMailAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getMailAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.mailAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="MailAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.mailAccounts[e.id]&&_.merge(p.mailAccounts[e.id],e)},p.onMailMessageSave=function(e){p.mailAccounts[e.MailAccountId]&&("in"==e.direction?(p.mailAccounts[e.MailAccountId].in+=1,p.mailAccounts[e.MailAccountId].lastIn=e.createdAt):(p.mailAccounts[e.MailAccountId].out+=1,p.mailAccounts[e.MailAccountId].lastOut=e.createdAt))},p.goToMailAccount=function(e,n){i.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},p.verifySmtp=function(e,n){{if(n&&n.id)return s.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){r.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){r.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});r.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},p.order=[],_.forIn(p.mailAccounts,function(e,n){p.order.push(e.id)}),o.on("mailAccount:save",p.onSave),o.on("mailAccount:update",p.onSave),o.on("mailMessage:save",p.onMailMessageSave);var v=!0,h=1;function f(e){if(p.mailAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getMailAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("mailAccount:save"),o.removeAllListeners("mailAccount:update"),o.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","mailAccounts","rpcMailAccounts","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"mail",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMailRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("mail_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userMailQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userMailQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.mailPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.mailPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("mail_queue:save"),o.removeAllListeners("userMailQueue:remove"),o.removeAllListeners("userMailQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("QueuesMailRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=2,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"IvrCampaign properly saved!",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteIvrCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.campaign.delete({id:g.ivrCampaign.id}).$promise.then(function(){_.remove(g.ivrCampaigns,{id:g.ivrCampaign.id}),o.success({title:"IvrCampaign properly deleted!",msg:(g.ivrCampaign.name||"ivrCampaign")+" has been deleted!"}),v(g.ivrCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})});g.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.trunks=n})}else g.trunks=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.projects,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.projects,{id:t.id});a.canSelect=!1,n.push(a)}g.projects=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++)a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,t.push(g.projects[i]));g.projects=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","ivrCampaigns","ivrCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditIvrCampaignDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newIvrCampaign=!0,r.ivrCampaign=angular.copy(i),r.ivrCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_IVRCAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneIvrCampaign=function(){return e.campaign.clone({id:i.id},r.ivrCampaign).$promise.then(function(e){r.ivrCampaigns.unshift(e.toJSON()),a.success({title:"IvrCampaign properly cloned",msg:r.ivrCampaign.name?r.ivrCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","ivrCampaign","ivrCampaigns","$translate"],angular.module("app.motiondialer").controller("IvrCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperBlacks.rows,{id:e.id}),m.ivrCampaignHopperBlacks.count-=1,m.ivrCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperBlacks={count:0,rows:[]},m.selectedIvrCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperBlacks=p,m.createOrEditIvrCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperBlack:n,hopperBlacks:m.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(m.selectedIvrCampaignHopperBlacks);return m.selectedIvrCampaignHopperBlacks=[],e},m.deleteIvrCampaignHopperBlack=g,m.deleteSelectedIvrCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperFinals.rows,{id:e.id}),m.ivrCampaignHopperFinals.count-=1,m.ivrCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.ivrCampaign={},m.ivrCampaignHopperFinals={count:0,rows:[]},m.selectedIvrCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperFinals=p,m.createOrEditIvrCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperFinal:n,hopperFinals:m.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(m.selectedIvrCampaignHopperFinals);return m.selectedIvrCampaignHopperFinals=[],e},m.deleteIvrCampaignHopperFinal=g,m.deleteSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperFinals=[]})},m.moveIvrCampaignHopperFinal=v,m.moveContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedIvrCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperHistories.rows,{id:e.id}),m.ivrCampaignHopperHistories.count-=1,m.ivrCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperHistories={count:0,rows:[]},m.selectedIvrCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperHistories=p,m.createOrEditIvrCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperHistory:n,hopperHistories:m.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(m.selectedIvrCampaignHopperHistories);return m.selectedIvrCampaignHopperHistories=[],e},m.deleteIvrCampaignHopperHistory=g,m.deleteSelectedIvrCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHoppers.rows,{id:e.id}),m.ivrCampaignHoppers.count-=1,m.ivrCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHoppers={count:0,rows:[]},m.selectedIvrCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHoppers=p,m.createOrEditIvrCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopper:n,hoppers:m.ivrCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(m.selectedIvrCampaignHoppers);return m.selectedIvrCampaignHoppers=[],e},m.deleteIvrCampaignHopper=g,m.deleteSelectedIvrCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),m.selectedIvrCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})});m.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),m.agents=n})}else m.agents=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.CampaignId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.campaign.get({raw:!1,id:a.CampaignId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})});g.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.agents=n})}else g.agents=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperCampaignIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.ivrCampaign={},i.init=function(n){i.ivrCampaign=n,t.cmHopper.get({limit:0,CampaignId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,CampaignId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,CampaignId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("IvrCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return i.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","ivrCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("IvrCampaignresetlistController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||t.params.ivrCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(n,t){r.campaign.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.ivrCampaign.id,n=a.rows[0],t=n.id,r.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return r.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ivrCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"IvrCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{ivrCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){t.go("app.motiondialer.ivrCampaigns",{},{reload:"app.motiondialer.ivrCampaigns"})},u.saveIvrCampaign=function(){r.campaign.update({id:u.ivrCampaign.id},u.ivrCampaign).$promise.then(function(){l.success({title:"IvrCampaign updated!",msg:u.ivrCampaign.name?u.ivrCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})});u.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.trunks=n})}else u.trunks=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","ivrCampaign","userProfileSection"],angular.module("app.motiondialer").controller("IvrCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.ivrCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="ivrCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedIvrCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("ivrCampaign")+"?").htmlContent("<b>"+(e.name||"ivrCampaign")+"</b> will be deleted.").ariaLabel("delete ivrCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},f.success=E,f.getIvrCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.campaign.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="IvrCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditIvrCampaign=function(e,n){i.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:f.ivrCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteIvrCampaign=y,f.exportSelectedIvrCampaigns=function(){var e=angular.copy(f.selectedIvrCampaigns);return f.selectedIvrCampaigns=[],e},f.deleteSelectedIvrCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+f.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIvrCampaigns.forEach(function(e){y(e)}),f.selectedIvrCampaigns=[]})},f.deselectIvrCampaigns=function(){f.selectedIvrCampaigns=[]},f.selectAllIvrCampaigns=function(){f.selectedIvrCampaigns=f.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})});f.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.trunks=n})}else f.trunks=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.projects,{id:e.resourceId})}),a=null;a=[],f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),f.projects=t})}else{var t=[],a=[];f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)});for(var i=0;i<f.projects.length;i++){_.some(a,{id:f.projects[i].id})&&(f.projects[i].canSelect=!1,t.push(f.projects[i]))}f.projects=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.ivrCampaign&&(t=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.ivrCampaign&&(a=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.ivrCampaigns=e||{count:0,rows:[]}}function y(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(f.ivrCampaigns.rows,{id:e.id}),f.ivrCampaigns.count-=1,f.ivrCampaigns.rows.length||f.getIvrCampaigns(),p.success({title:_.startCase("IvrCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("IvrCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_QUEUECAMPAIGN",g.queueCampaign=angular.copy(l),g.queueCampaigns=r,g.newQueueCampaign=!1,g.queueCampaign||(g.queueCampaign={dialActive:!0,type:"outbound",dialCheckDuplicateType:"always",dialCutDigit:0,autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no",dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3,dialMethod:"progressive",dialPowerLevel:1,dialPredictiveOptimization:"dropRate",dialPredictiveOptimizationPercentage:3,dialPredictiveInterval:10,dialLimitQueue:0,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialQueueOptions:"tTxX",dialQueueTimeout:3,strategy:"rrmemory",timeout:3,retry:3,weight:1,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialPredictiveIntervalMaxThreshold:20,dialPredictiveIntervalMinThreshold:10},g.title="MOTIONDIALER.NEW_QUEUECAMPAIGN",g.newQueueCampaign=!0),g.addNewQueueCampaign=function(){g.errors=[],d.voiceQueue.save(g.queueCampaign).$promise.then(function(e){g.queueCampaigns.unshift(e.toJSON()),o.success({title:"QueueCampaign properly created",msg:g.queueCampaign.name?g.queueCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveQueueCampaign=function(){g.errors=[],d.voiceQueue.update({id:g.queueCampaign.id},g.queueCampaign).$promise.then(function(e){var n=_.find(g.queueCampaigns,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"QueueCampaign properly saved!",msg:g.queueCampaign.name?g.queueCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteQueueCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.queueCampaign.id}).$promise.then(function(){_.remove(g.queueCampaigns,{id:g.queueCampaign.id}),o.success({title:"QueueCampaign properly deleted!",msg:(g.queueCampaign.name||"queueCampaign")+" has been deleted!"}),v(g.queueCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","queueCampaigns","queueCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditQueueCampaignDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","queueCampaigns","realtime","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newQueueCampaign=!0,r.queueCampaign=angular.copy(i),r.queueCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_QUEUECAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneQueueCampaign=function(){return e.voiceQueue.clone({id:i.id},r.queueCampaign).$promise.then(function(e){r.queueCampaigns.unshift(e.toJSON()),a.success({title:"QueueCampaign properly cloned",msg:r.queueCampaign.name?r.queueCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.queueCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","queueCampaign","queueCampaigns","$translate"],angular.module("app.motiondialer").controller("QueueCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperBlacks.rows,{id:e.id}),m.queueCampaignHopperBlacks.count-=1,m.queueCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperBlacks={count:0,rows:[]},m.selectedQueueCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperBlacks=p,m.createOrEditQueueCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperBlack:n,hopperBlacks:m.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(m.selectedQueueCampaignHopperBlacks);return m.selectedQueueCampaignHopperBlacks=[],e},m.deleteQueueCampaignHopperBlack=g,m.deleteSelectedQueueCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperFinals.rows,{id:e.id}),m.queueCampaignHopperFinals.count-=1,m.queueCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.queueCampaign={},m.queueCampaignHopperFinals={count:0,rows:[]},m.selectedQueueCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,secondDisposition,thirdDisposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperFinals=p,m.createOrEditQueueCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperFinal:n,hopperFinals:m.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(m.selectedQueueCampaignHopperFinals);return m.selectedQueueCampaignHopperFinals=[],e},m.deleteQueueCampaignHopperFinal=g,m.deleteSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperFinals=[]})},m.moveQueueCampaignHopperFinal=v,m.moveContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedQueueCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperHistories.rows,{id:e.id}),m.queueCampaignHopperHistories.count-=1,m.queueCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperHistories={count:0,rows:[]},m.selectedQueueCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperHistories=p,m.createOrEditQueueCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperHistory:n,hopperHistories:m.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(m.selectedQueueCampaignHopperHistories);return m.selectedQueueCampaignHopperHistories=[],e},m.deleteQueueCampaignHopperHistory=g,m.deleteSelectedQueueCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHoppers.rows,{id:e.id}),m.queueCampaignHoppers.count-=1,m.queueCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHoppers={count:0,rows:[]},m.selectedQueueCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHoppers=p,m.createOrEditQueueCampaignHopper=function(e,n){o.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopper:n,hoppers:m.queueCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHoppers=function(){var e=angular.copy(m.selectedQueueCampaignHoppers);return m.selectedQueueCampaignHoppers=[],e},m.deleteQueueCampaignHopper=g,m.deleteSelectedQueueCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedQueueCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHoppers.forEach(function(e){g(e)}),m.selectedQueueCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})}),t=null;if(m.queueCampaign&&(t=_.find(m.agents,{id:Number(m.queueCampaign.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.agents,{id:t.id});a.canSelect=!1,n.push(a)}m.agents=n})}else{var t=[],a=null;m.queueCampaign&&(a=_.find(m.agents,{id:Number(m.queueCampaign.UserId)}));for(var i=0;i<m.agents.length;i++)a&&m.agents[i].id===a.id&&(m.agents[i].canSelect=!1,t.push(m.agents[i]));m.agents=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.VoiceQueueId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})}),t=null;if(g.hopper&&(t=_.find(g.agents,{id:Number(g.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.agents,{id:t.id});a.canSelect=!1,n.push(a)}g.agents=n})}else{var t=[],a=null;g.hopper&&(a=_.find(g.agents,{id:Number(g.hopper.UserId)}));for(var i=0;i<g.agents.length;i++)a&&g.agents[i].id===a.id&&(g.agents[i].canSelect=!1,t.push(g.agents[i]));g.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperVoiceQueueIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.queueCampaign={},i.init=function(n){i.queueCampaign=n,t.cmHopper.get({limit:0,VoiceQueueId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,VoiceQueueId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,VoiceQueueId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("QueueCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return i.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","queueCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("QueueCampaignresetlistController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.queueCampaign=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("MOTIONDIALER.ALL_TEAMS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.queueCampaign.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignteamaddController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.queueCampaign=c||t.params.queueCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.resetlistdialog=function(n,t){r.voiceQueue.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.queueCampaign.id,n=a.rows[0],t=n.id,r.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return r.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"QueueCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{queueCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},u.alert=l.info,u.gotoQueueCampaigns=function(){t.go("app.motiondialer.queueCampaigns",{},{reload:"app.motiondialer.queueCampaigns"})},u.saveQueueCampaign=function(){r.voiceQueue.update({id:u.queueCampaign.id},u.queueCampaign).$promise.then(function(){l.success({title:"QueueCampaign updated!",msg:u.queueCampaign.name?u.queueCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.musiconholds,{name:u.queueCampaign.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.trunks,{id:t.id});a.canSelect=!1,n.push(a)}u.trunks=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)}));for(var i=0;i<u.trunks.length;i++)a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,t.push(u.trunks[i]));u.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.projects,{name:u.queueCampaign.dialQueueProject})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.projects,{name:u.queueCampaign.dialQueueProject}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","queueCampaign","userProfileSection"],angular.module("app.motiondialer").controller("QueueCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.queueCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="queueCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedQueueCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialMethod=_.keyBy([{option:"Progressive",value:"'progressive'"},{option:"PowerDialing",value:"'power'"},{option:"Predictive",value:"'predictive'"},{option:"Preview",value:"'preview'"},{option:"BookedProgressive",value:"'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraystrategy=_.keyBy([{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Round Robin",value:"'roundrobin'",ngIf:"vm.queueCampaign.dialMethod === 'booked'"},{option:"Least Recent",value:"'leastrecent'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Fewest Calls",value:"'fewestcalls'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Random",value:"'random'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Linear",value:"'linear'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Weight Random",value:"'wrandom'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("queueCampaign")+"?").htmlContent("<b>"+(e.name||"queueCampaign")+"</b> will be deleted.").ariaLabel("delete queueCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},f.success=E,f.getQueueCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="QueueCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditQueueCampaign=function(e,n){i.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:f.queueCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteQueueCampaign=y,f.exportSelectedQueueCampaigns=function(){var e=angular.copy(f.selectedQueueCampaigns);return f.selectedQueueCampaigns=[],e},f.deleteSelectedQueueCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+f.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedQueueCampaigns.forEach(function(e){y(e)}),f.selectedQueueCampaigns=[]})},f.deselectQueueCampaigns=function(){f.selectedQueueCampaigns=[]},f.selectAllQueueCampaigns=function(){f.selectedQueueCampaigns=f.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.queueCampaign&&(t=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.queueCampaign&&(a=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.queueCampaigns=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.queueCampaigns.rows,{id:e.id}),f.queueCampaigns.count-=1,f.queueCampaigns.rows.length||f.getQueueCampaigns(),p.success({title:_.startCase("QueueCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"outbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"outbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m){var u=this,p=["name","active","limitCalls","message","originated","IntervalId","SquareProjectId","Trunk","TrunkId","ivrAnswerCallsDay","dialQueueProject","ivrTotalCallsDays","description"];function g(){_.forIn(u.campaigns,function(e,n){u.rpcCampaigns[n]&&_.merge(e,_.pick(u.rpcCampaigns[n],p))})}u.currentUser=m.getCurrentUser(),u.count=o.count,u.campaigns=o?_.keyBy(o.rows?o.rows:[],"id"):{},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"-updatedAt",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){u.campaigns[e.id]&&(_.merge(u.campaigns[e.id],_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.count=e.count,u.campaigns=e?_.keyBy(e.rows?e.rows:[],"id"):{},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"outbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"outbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:m.queues.rows,realtime:!0,crudPermissions:m.crudPermissions}})},m.showPredictiveQueueCampaignInfo=function(e,n){t.show({controller:"PredictiveQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}})},o.onWithoutApply("voice_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&(_.merge(n,_.pick(e,u)),_.isNil(e.startPredictive)&&(n.startPredictive=void 0))}),o.on("userVoiceQueueRt:save",function(e){var n=_.find(m.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("user:agentconnect",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available-=1)})}),o.on("user:agentcomplete",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available+=1)})}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.voicePause?(n.paused=!0,e.paused+=1,e.available-=1):!t.voicePause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),o.removeAllListeners("userVoiceQueueRt:save"),o.removeAllListeners("user:agentconnect"),o.removeAllListeners("user:agentcomplete"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueuesMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t){this.queueCampaign=t,this.addMinutes=function(e,n){return moment(e).add("m",n).format("HH:mm:ss")},this.setFormatTime=function(e){return moment(e).format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$interval","queueCampaign"],angular.module("app.motiondialer").controller("PredictiveQueueCampaignDialogController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,u).$promise}function g(e){d.openchannelInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountInteractions.rows,{id:e.id}),m.openchannelAccountInteractions.count-=1,m.openchannelAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountInteractions={count:0,rows:[]},m.selectedOpenchannelAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.openchannelInteractionDownload=function(s,e,n){return d.openchannelInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="openchannel-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getOpenchannelAccountInteractions=p,m.createOrEditOpenchannelAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,interaction:n,interactions:m.openchannelAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyopenchannelInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"openchannel",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"openchannel.openchannelAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||OpenchannelAccountId:=$eq["+m.openchannelAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedOpenchannelAccountInteractions=function(){var e=angular.copy(m.selectedOpenchannelAccountInteractions);return m.selectedOpenchannelAccountInteractions=[],e},m.deleteOpenchannelAccountInteraction=g,m.deleteSelectedOpenchannelAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedOpenchannelAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountInteractions.forEach(function(e){g(e)}),m.selectedOpenchannelAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountOpenchannelCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountOpenchannelCannedAnswers.rows,{id:e.id}),m.openchannelAccountOpenchannelCannedAnswers.count-=1,m.openchannelAccountOpenchannelCannedAnswers.rows.length||p(),l.success({title:"OpenchannelCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountOpenchannelCannedAnswers={count:0,rows:[]},m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the openchannelCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("openchannelCannedAnswer #")+e.id||"openchannelCannedAnswer")+"</b> will be deleted.").ariaLabel("delete openchannelCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getOpenchannelAccountOpenchannelCannedAnswers=p,m.createOrEditOpenchannelAccountOpenchannelCannedAnswer=function(e,n){o.show({controller:"CreateOrEditOpenchannelCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,openchannelCannedAnswer:n,openchannelCannedAnswers:m.openchannelAccountOpenchannelCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedOpenchannelAccountOpenchannelCannedAnswers=function(){var e=angular.copy(m.selectedOpenchannelAccountOpenchannelCannedAnswers);return m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],e},m.deleteOpenchannelAccountOpenchannelCannedAnswer=g,m.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected openchannelCannedAnswers?").htmlContent("<b>"+m.selectedOpenchannelAccountOpenchannelCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete openchannelCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountOpenchannelCannedAnswers.forEach(function(e){g(e)}),m.selectedOpenchannelAccountOpenchannelCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER",g.openchannelCannedAnswer=angular.copy(l),g.openchannelCannedAnswers=r,g.newOpenchannelCannedAnswer=!1,g.openchannelCannedAnswer||(g.openchannelCannedAnswer={},g.title="OPENCHANNEL.NEW_OPENCHANNELCANNEDANSWER",g.newOpenchannelCannedAnswer=!0),n.params.id&&(g.openchannelCannedAnswer.OpenchannelAccountId=n.params.id),g.addNewOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.openchannelCannedAnswer).$promise.then(function(e){g.openchannelCannedAnswers.unshift(e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly created",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.openchannelCannedAnswer.id},g.openchannelCannedAnswer).$promise.then(function(e){var n=_.find(g.openchannelCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"OpenchannelCannedAnswer properly saved!",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelCannedAnswer will be deleted.").ariaLabel("Delete OpenchannelCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.openchannelCannedAnswer.id}).$promise.then(function(){_.remove(g.openchannelCannedAnswers,{id:g.openchannelCannedAnswer.id}),o.success({title:"OpenchannelCannedAnswer properly deleted!",msg:(g.openchannelCannedAnswer.name||"openchannelCannedAnswer")+" has been deleted!"}),v(g.openchannelCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelCannedAnswers","openchannelCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.openchannelAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.openchannelAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.openchannelAccount.id,field:"OpenchannelAccountId",route:"openchannelAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.openchannelAccount=c||e.params.openchannelAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:p.openchannelAccounts?p.openchannelAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoOpenchannelAccounts=function(){e.go("app.openchannel.openchannelAccounts",{},{reload:"app.openchannel.openchannelAccounts"})},p.saveOpenchannelAccount=function(){r.openchannelAccount.update({id:p.openchannelAccount.id},p.openchannelAccount).$promise.then(function(){l.success({title:"OpenchannelAccount updated!",msg:p.openchannelAccount.name?p.openchannelAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.openchannelAccount&&(t=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.openchannelAccount&&(a=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.cmContact.describe({id:p.openchannelAccount.ListId}).$promise.then(function(e){p.fields=[];e=_.values(e.toJSON());for(var n=["id","createdAt","updatedAt","deletedAt","scheduledat","ListId","CompanyId"],t=0;t<e.length;t++)_.includes(n,e[t].columnName)||p.fields.push(e[t])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelAccount","userProfile","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,openchannelAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:f.openchannelAccounts?f.openchannelAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelAccount")+"?").htmlContent("<b>"+(e.name||"openchannelAccount")+"</b> will be deleted.").ariaLabel("delete openchannelAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getOpenchannelAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelAccount=function(e,n){i.show({controller:"CreateOrEditOpenchannelAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:n,openchannelAccounts:f.openchannelAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelAccount=y,f.exportSelectedOpenchannelAccounts=function(){var e=angular.copy(f.selectedOpenchannelAccounts);return f.selectedOpenchannelAccounts=[],e},f.deleteSelectedOpenchannelAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelAccounts?").htmlContent("<b>"+f.selectedOpenchannelAccounts.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelAccounts.forEach(function(e){y(e)}),f.selectedOpenchannelAccounts=[]})},f.deselectOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=[]},f.selectAllOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=f.openchannelAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.openchannelAccount&&(t=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.openchannelAccount&&(a=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.openchannelAccounts=e||{count:0,rows:[]}}function y(e){m.openchannelAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelAccounts.rows,{id:e.id}),f.openchannelAccounts.count-=1,f.openchannelAccounts.rows.length||f.getOpenchannelAccounts(),p.success({title:_.startCase("OpenchannelAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",g.openchannelQueue=angular.copy(l),g.openchannelQueues=r,g.newOpenchannelQueue=!1,g.openchannelQueue||(g.openchannelQueue={strategy:"beepall",timeout:10},g.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",g.newOpenchannelQueue=!0),g.addNewOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.save(g.openchannelQueue).$promise.then(function(e){g.openchannelQueues.unshift(e.toJSON()),o.success({title:"OpenchannelQueue properly created",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.update({id:g.openchannelQueue.id},g.openchannelQueue).$promise.then(function(e){var n=_.find(g.openchannelQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"OpenchannelQueue properly saved!",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelQueue.delete({id:g.openchannelQueue.id}).$promise.then(function(){_.remove(g.openchannelQueues,{id:g.openchannelQueue.id}),o.success({title:"OpenchannelQueue properly deleted!",msg:(g.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),v(g.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelQueues","openchannelQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"openchannel",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsOpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("openchannel_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userOpenchannelQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userOpenchannelQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.openchannelPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.openchannelPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("openchannel_queue:save"),o.removeAllListeners("userOpenchannelQueue:remove"),o.removeAllListeners("userOpenchannelQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.openchannel").controller("QueuesOpenchannelRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.cloudProviders=l||{count:0,rows:[]},v.table="cloudProviders",v.listOrder="",v.listOrderAsc=null,v.selectedAiTools=[],v.query={fields:"createdAt,updatedAt,id,name,service,data2,data1",sort:"-updatedAt",limit:10,page:1},v.arrayservice=_.keyBy([{option:"AmazonAWS",value:"'AmazonAWS'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:v.cloudProviders.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cloudProvider")+"?").htmlContent("<b>"+(e.name||"cloudProvider")+"</b> will be deleted.").ariaLabel("delete cloudProvider").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getAiTools=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.cloudProvider.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="AiTools",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditCloudProvider=function(e,n){i.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:v.cloudProviders.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteCloudProvider=A,v.exportSelectedAiTools=function(){var e=angular.copy(v.selectedAiTools);return v.selectedAiTools=[],e},v.deleteSelectedAiTools=function(e){var n=i.confirm().title("Are you sure want to delete the selected cloudProviders?").htmlContent("<b>"+v.selectedAiTools.length+" selected</b> will be deleted.").ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedAiTools.forEach(function(e){A(e)}),v.selectedAiTools=[]})},v.deselectAiTools=function(){v.selectedAiTools=[]},v.selectAllAiTools=function(){v.selectedAiTools=v.cloudProviders.rows};var h=!0,f=1;function b(e){v.cloudProviders=e||{count:0,rows:[]}}function A(e){d.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(v.cloudProviders.rows,{id:e.id}),v.cloudProviders.count-=1,v.cloudProviders.rows.length||v.getAiTools(),m.success({title:_.startCase("CloudProvider")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getAiTools())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cloudProviders","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_CLOUDPROVIDER",p.cloudProvider=angular.copy(l),p.cloudProviders=r,p.newCloudProvider=!1,p.cloudProvider||(p.cloudProvider={},p.title="SETTINGS.NEW_CLOUDPROVIDER",p.newCloudProvider=!0),p.addNewCloudProvider=function(){p.errors=[],d.cloudProvider.save(p.cloudProvider).$promise.then(function(e){p.cloudProviders.unshift(e.toJSON()),o.success({title:"CloudProvider properly created",msg:p.cloudProvider.name?p.cloudProvider.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveCloudProvider=function(){p.errors=[],d.cloudProvider.update({id:p.cloudProvider.id},p.cloudProvider).$promise.then(function(e){var n=_.find(p.cloudProviders,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CloudProvider properly saved!",msg:p.cloudProvider.name?p.cloudProvider.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteCloudProvider=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The cloudProvider will be deleted.").ariaLabel("Delete CloudProvider").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cloudProvider.delete({id:p.cloudProvider.id}).$promise.then(function(){_.remove(p.cloudProviders,{id:p.cloudProvider.id}),o.success({title:"CloudProvider properly deleted!",msg:(p.cloudProvider.name||"cloudProvider")+" has been deleted!"}),g(p.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s){var o=this;o.license=i||{},o.agents=0,o.users=0,o.telephones=0,o.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],o.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],o.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],o.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],o.others=[{name:"update",icon:"icon-cloud-download"}],o.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:o.channels,modules:o.modules,addons:o.addons,sessions:o.sessions,others:o.others}})},o.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},o.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},s.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return o.agents=e&&e.count?e.count:0,s.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return o.users=e&&e.count?e.count:0,s.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){o.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$mdDialog","$state","license","toasty","api"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_SMTP",g.smtp=angular.copy(l),g.smtps=r,g.newSmtp=!1,g.smtp||(g.smtp={service:!0},g.title="SETTINGS.NEW_SMTP",g.newSmtp=!0),g.addNewSmtp=function(){g.errors=[],d.mailAccount.save(g.smtp).$promise.then(function(e){g.smtps.unshift(e.toJSON()),o.success({title:"Smtp properly created",msg:g.smtp.name?g.smtp.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmtp=function(){g.errors=[],d.mailAccount.update({id:g.smtp.id},g.smtp).$promise.then(function(e){var n=_.find(g.smtps,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Smtp properly saved!",msg:g.smtp.name?g.smtp.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmtp=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smtp will be deleted.").ariaLabel("Delete Smtp").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailAccount.delete({id:g.smtp.id}).$promise.then(function(){_.remove(g.smtps,{id:g.smtp.id}),o.success({title:"Smtp properly deleted!",msg:(g.smtp.name||"smtp")+" has been deleted!"}),v(g.smtp)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smtps","smtp","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditSmtpDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.smtps=e,s.smtp={},s.smtps&&s.smtps.rows&&s.smtps.rows.length?s.smtp=s.smtps.rows[0]:s.smtp={service:!0,Smtp:{service:null}},s.saveSmtp=function(){s.smtp.id?n.mailAccount.update({id:s.smtp.id},s.smtp).$promise.then(function(){t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.mailAccount.save(s.smtp).$promise.then(function(e){_.merge(s.smtp,e),t.success({title:"Smtp updated!",msg:s.smtp.name?s.smtp.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.verifySmtp=function(){s.smtp.id&&n.mailAccount.verifySmtp({id:s.smtp.id}).$promise.then(function(){t.success({title:"Smtp verified!",msg:s.smtp.name?s.smtp.name+" has been verified!":""})}).catch(function(e){t.error({title:"Smtp not verified! Remember to save before to verify!",msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})}}e.$inject=["smtps","api","toasty","license","Auth"],angular.module("app.settings").controller("SmtpController",e)}(),function(){"use strict";function e(e,i,s,n,t,a,o,r){var l,d=this;d.system=t||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=n.params.tab||0,d.getInfo=function(){return r.system.get().$promise.then(function(e){_.merge(d.system,e)}).catch(d.cancelInterval)},d.getProcesses=function(){return r.pm2.get().$promise.then(function(e){_.merge(d.processes,e?e.rows:[])}).catch(d.cancelInterval)},d.cancelInterval=function(e){i.cancel(l)},d.updateProcess=function(e,n,t){var a=s.confirm().title("Would you like to change the status of the process #"+n+"?").textContent("The status will be changed to: "+t.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:n,status:t})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+t})})},l=i(d.getInfo,5e3),e.$on("$destroy",function(){d.cancelInterval()})}e.$inject=["$scope","$interval","$mdDialog","$state","system","processes","toasty","api"],angular.module("app.settings.system").controller("SystemController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=n(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){t.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(n.cancel(s.interval),s.interval=void 0);s.progress=100,s.updating=!1},i.version.fetch().$promise.then(function(e){return s.output=e.output+"...",i.version.reset().$promise}).then(function(e){return s.output=e.output+"...",i.version.pull().$promise}).then(function(e){return s.output=e.output+"...",i.version.migrations().$promise}).then(function(e){return s.output=e.output+"...",i.version.restart().$promise}).then(function(e){s.output="Waiting to restart motion...",a(function(){s.stopInterval()},3e4)}).catch(function(e){s.success=!1,s.stopInterval(),s.output=JSON.stringify(e)})}e.$inject=["$mdDialog","$interval","$window","$timeout","api"],angular.module("app.settings").controller("UpdateDialogController",e)}(),function(){"use strict";function e(t,e,a,n,i){this.version=n||{},this.updateConfirm=function(e){var n=t.confirm().title("Would you like to update your system?").htmlContent('The system request time for the update should be below 1 minute.<br><br>Do you agree the terms of this <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">End User License Agreement<a>?').ariaLabel("").targetEvent(e).clickOutsideToClose(!0).parent(angular.element(a.body)).ok("I agree").cancel("Disagree");t.show(n).then(function(){t.show({controller:"UpdateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/updates/update/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!1})})}}e.$inject=["$mdDialog","$interval","$document","version","toasty"],angular.module("app.settings").controller("UpdatesController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"sms",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsSmsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("sms_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userSmsQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userSmsQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.smsPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.smsPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("sms_queue:save"),o.removeAllListeners("userSmsQueue:remove"),o.removeAllListeners("userSmsQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.sms").controller("QueuesSmsRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,u).$promise}function g(e){d.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountInteractions.rows,{id:e.id}),m.smsAccountInteractions.count-=1,m.smsAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountInteractions={count:0,rows:[]},m.selectedSmsAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.smsInteractionDownload=function(s,e,n){return d.smsInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getSmsAccountInteractions=p,m.createOrEditSmsAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,interaction:n,interactions:m.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spysmsInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"sms",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"sms.smsAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||SmsAccountId:=$eq["+m.smsAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(m.selectedSmsAccountInteractions);return m.selectedSmsAccountInteractions=[],e},m.deleteSmsAccountInteraction=g,m.deleteSelectedSmsAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountInteractions.forEach(function(e){g(e)}),m.selectedSmsAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountSmsCannedAnswers.rows,{id:e.id}),m.smsAccountSmsCannedAnswers.count-=1,m.smsAccountSmsCannedAnswers.rows.length||p(),l.success({title:"SmsCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountSmsCannedAnswers={count:0,rows:[]},m.selectedSmsAccountSmsCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("smsCannedAnswer #")+e.id||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getSmsAccountSmsCannedAnswers=p,m.createOrEditSmsAccountSmsCannedAnswer=function(e,n){o.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,smsCannedAnswer:n,smsCannedAnswers:m.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(m.selectedSmsAccountSmsCannedAnswers);return m.selectedSmsAccountSmsCannedAnswers=[],e},m.deleteSmsAccountSmsCannedAnswer=g,m.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+m.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),m.selectedSmsAccountSmsCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSCANNEDANSWER",g.smsCannedAnswer=angular.copy(l),g.smsCannedAnswers=r,g.newSmsCannedAnswer=!1,g.smsCannedAnswer||(g.smsCannedAnswer={},g.title="SMS.NEW_SMSCANNEDANSWER",g.newSmsCannedAnswer=!0),n.params.id&&(g.smsCannedAnswer.SmsAccountId=n.params.id),g.addNewSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.smsCannedAnswer).$promise.then(function(e){g.smsCannedAnswers.unshift(e.toJSON()),o.success({title:"SmsCannedAnswer properly created",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.smsCannedAnswer.id},g.smsCannedAnswer).$promise.then(function(e){var n=_.find(g.smsCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SmsCannedAnswer properly saved!",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.smsCannedAnswer.id}).$promise.then(function(){_.remove(g.smsCannedAnswers,{id:g.smsCannedAnswer.id}),o.success({title:"SmsCannedAnswer properly deleted!",msg:(g.smsCannedAnswer.name||"smsCannedAnswer")+" has been deleted!"}),v(g.smsCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsCannedAnswers","smsCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.smsAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.smsAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.smsAccount.id,field:"SmsAccountId",route:"smsAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.sms").controller("SmsAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.smsAccount=c||e.params.smsAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:p.smsAccounts?p.smsAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts",{},{reload:"app.sms.smsAccounts"})},p.saveSmsAccount=function(){r.smsAccount.update({id:p.smsAccount.id},p.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:p.smsAccount.name?p.smsAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.smsAccount&&(t=_.find(p.lists,{id:Number(p.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.smsAccount&&(a=_.find(p.lists,{id:Number(p.smsAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfile","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSmsAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Skebby",value:"'skebby'"},{option:"Connectel",value:"'connectel'"},{option:"ClickSend",value:"'clicksend'"},{option:"Plivo",value:"'plivo'"},{option:"Infobip",value:"'infobip'"},{option:"Clickatell",value:"'clickatell'"},{option:"Bandwidth",value:"'bandwidth'"},{option:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:f.smsAccounts?f.smsAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsAccount")+"?").htmlContent("<b>"+(e.name||"smsAccount")+"</b> will be deleted.").ariaLabel("delete smsAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSmsAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsAccount=function(e,n){i.show({controller:"CreateOrEditSmsAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:n,smsAccounts:f.smsAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsAccount=y,f.exportSelectedSmsAccounts=function(){var e=angular.copy(f.selectedSmsAccounts);return f.selectedSmsAccounts=[],e},f.deleteSelectedSmsAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+f.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsAccounts.forEach(function(e){y(e)}),f.selectedSmsAccounts=[]})},f.deselectSmsAccounts=function(){f.selectedSmsAccounts=[]},f.selectAllSmsAccounts=function(){f.selectedSmsAccounts=f.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.smsAccount&&(t=_.find(f.lists,{id:Number(f.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.smsAccount&&(a=_.find(f.lists,{id:Number(f.smsAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.smsAccounts=e||{count:0,rows:[]}}function y(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.smsAccounts.rows,{id:e.id}),f.smsAccounts.count-=1,f.smsAccounts.rows.length||f.getSmsAccounts(),p.success({title:_.startCase("SmsAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSQUEUE",g.smsQueue=angular.copy(l),g.smsQueues=r,g.newSmsQueue=!1,g.smsQueue||(g.smsQueue={strategy:"beepall",timeout:10},g.title="SMS.NEW_SMSQUEUE",g.newSmsQueue=!0),g.addNewSmsQueue=function(){g.errors=[],d.smsQueue.save(g.smsQueue).$promise.then(function(e){g.smsQueues.unshift(e.toJSON()),o.success({title:"SmsQueue properly created",msg:g.smsQueue.name?g.smsQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsQueue=function(){g.errors=[],d.smsQueue.update({id:g.smsQueue.id},g.smsQueue).$promise.then(function(e){var n=_.find(g.smsQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"SmsQueue properly saved!",msg:g.smsQueue.name?g.smsQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsQueue.delete({id:g.smsQueue.id}).$promise.then(function(){_.remove(g.smsQueues,{id:g.smsQueue.id}),o.success({title:"SmsQueue properly deleted!",msg:(g.smsQueue.name||"smsQueue")+" has been deleted!"}),v(g.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsQueues","smsQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.agents=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="agents",f.listOrder="",f.listOrderAsc=null,f.selectedAgents=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings",role:"agent",sort:"-updatedAt",limit:10,page:1},f.arrayshowWebBar=_.keyBy([{option:"Phonebar",value:"0"},{option:"External",value:"1"},{option:"WebRTC",value:"2"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'",ngIf:"vm.agent.showWebBar == 1"},{option:"wss",value:"'wss'",ngIf:"vm.agent.showWebBar == 1"},{option:"tls",value:"'tls'",ngIf:"vm.agent.showWebBar == 1"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayextensionMonitor=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'WAV'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:f.agents?f.agents.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getAgents=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Agents",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditAgent=function(e,n){i.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:f.agents.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteAgent=y,f.exportSelectedAgents=function(){var e=angular.copy(f.selectedAgents);return f.selectedAgents=[],e},f.deleteSelectedAgents=function(e){var n=i.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+f.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedAgents.forEach(function(e){y(e)}),f.selectedAgents=[]})},f.deselectAgents=function(){f.selectedAgents=[]},f.selectAllAgents=function(){f.selectedAgents=f.agents.rows};var b=!0,A=1;function E(e){f.agents=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.agents.rows,{id:e.id}),f.agents.count-=1,f.agents.rows.length||f.getAgents(),p.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getAgents())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","agents","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_AGENT",g.agent=angular.copy(l),g.agents=r,g.newAgent=!1,g.agent||(g.agent={role:"agent",showWebBar:"0",autointernal:!0,wssPort:8089,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!0,downloadAttachments:!0,downloadOmnichannelInteractions:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_AGENT",g.newAgent=!0),g.addNewAgent=function(){g.errors=[],d.user.save(g.agent).$promise.then(function(e){g.agents.unshift(e.toJSON()),o.success({title:"Agent properly created",msg:g.agent.name?g.agent.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveAgent=function(){g.errors=[],d.user.update({id:g.agent.id},g.agent).$promise.then(function(e){var n=_.find(g.agents,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Agent properly saved!",msg:g.agent.name?g.agent.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteAgent=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.agent.id}).$promise.then(function(){_.remove(g.agents,{id:g.agent.id}),o.success({title:"Agent properly deleted!",msg:(g.agent.name||"agent")+" has been deleted!"}),v(g.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","agents","agent","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:"bull"===c.channel?"voice":c.channel,type:c.direction,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:c.direction,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.QUEUEADD_AGENT_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),labelSelected:s.instant("STAFF.SELECTED_QUEUES_"+c.channel.toUpperCase()+"_"+c.direction.toUpperCase()),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentqueueaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=a,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.agent=c||e.params.agent||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.queueaddchannel=function(e,n,t,a){i.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,setting:o,agents:u.agents?u.agents.rows:[],crudPermissions:u.crudPermissions}})},u.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){u.agent.phoneBarEnableScreenRecordingByAgent&&(u.agent[e]=!u.agent.phoneBarEnableScreenRecordingByAgent)})},u.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){u.agent.phoneBarEnableAutomaticScreenRecording&&(u.agent[e]=!u.agent.phoneBarEnableAutomaticScreenRecording)})},u.alert=l.info,u.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},u.saveAgent=function(){u.agent=_.omit(u.agent,"userpic"),r.user.update({id:u.agent.id},u.agent).$promise.then(function(){l.success({title:"Agent updated!",msg:u.agent.name?u.agent.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.agent&&(t=_.find(u.contexts,{name:u.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USER",g.user=angular.copy(l),g.users=r,g.newUser=!1,g.user||(g.user={role:"user",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_USER",g.newUser=!0),g.addNewUser=function(){g.errors=[],d.user.save(g.user).$promise.then(function(e){g.users.unshift(e.toJSON()),o.success({title:"User properly created",msg:g.user.name?g.user.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUser=function(){g.errors=[],d.user.update({id:g.user.id},g.user).$promise.then(function(e){var n=_.find(g.users,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"User properly saved!",msg:g.user.name?g.user.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUser=function(e){if(c.getCurrentUser().id===g.user.id)return o.error({title:"User not deleted!",msg:"You can't remove yourself"});g.errors=[];var n=a.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.user.id}).$promise.then(function(){_.remove(g.users,{id:g.user.id}),o.success({title:"User properly deleted!",msg:(g.user.name||"user")+" has been deleted!"}),v(g.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","users","user","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.currentUser=i.getCurrentUser(),s.errors=[],s.user=a,s.generateApiKey=function(){s.errors=[],t.user.createApiKey({id:s.user.id}).$promise.then(function(e){s.user.apiKey=e.api_key||"N/A",n.success({title:"User API key updated!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.createApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.createApiKey"}]})},s.removeApiKey=function(){s.errors=[],t.user.removeApiKey({id:s.user.id}).$promise.then(function(){s.user.apiKey="N/A",n.success({title:"User API key removed!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.removeApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.removeApiKey"}]})},s.closeDialog=o}e.$inject=["$mdDialog","toasty","api","user","Auth"],angular.module("app.staff").controller("UserapikeymanagerController",e)}(),function(){"use strict";function e(e,a){var i=this;i.user={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.user.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.user=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.user.id+"/avatar",i.user.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Userchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.user=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.user.id,newPassword:r.password};r.currentUser.id==r.user.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"User password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.userForm.password.$setValidity("oldPasswordMatch",!1):t.userForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.user=c||e.params.user||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.apikeymanagerdialog=function(e,n){t.show({controller:"UserapikeymanagerController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.changepassworddialog=function(e,n){t.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,setting:o,users:u.users?u.users.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},u.saveUser=function(){u.user=_.omit(u.user,"userpic"),r.user.update({id:u.user.id},u.user).$promise.then(function(){l.success({title:"User updated!",msg:u.user.name?u.user.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.userProfiles=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.user.getApiKey({id:u.user.id}).$promise.then(function(e){u.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_APIKEY",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.users=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="users",f.listOrder="",f.listOrderAsc=null,f.selectedUsers=[],f.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked",role:"admin,user",sort:"-updatedAt",limit:10,page:1},f.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("user")+"?").htmlContent("<b>"+(e.name||"user")+"</b> will be deleted.").ariaLabel("delete user").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUsers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Users",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUser=function(e,n){i.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:f.users.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUser=y,f.exportSelectedUsers=function(){var e=angular.copy(f.selectedUsers);return f.selectedUsers=[],e},f.deleteSelectedUsers=function(e){var n=i.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+f.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUsers.forEach(function(e){y(e)}),f.selectedUsers=[]})},f.deselectUsers=function(){f.selectedUsers=[]},f.selectAllUsers=function(){f.selectedUsers=f.users.rows},m.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.userProfiles=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.users=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.users.rows,{id:e.id}),f.users.count-=1,f.users.rows.length||f.getUsers(),p.success({title:_.startCase("User")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUsers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","users","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,e,i,s){var o=this;function r(e,n,t){return s.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}o.customDashboard={},o.voiceQueues=s.rpc.getVoiceQueues({fields:"id,name"}),o.init=function(e,n){return o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},o.customDashboard=e,o.customDashboard.draggable={enabled:!0,handle:".draggable",stop:r},o.customDashboard.resizable={enabled:!0,handle:".resizable",stop:r},o.customDashboard.widgets=[],s.dashboard.getItems({id:e.id}).$promise.then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].voiceQueues=o.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",o.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})},o.createOrEditWidget=function(e){if(e&&e.attrs)for(var n=0;n<e.attrs.length;n+=1)"attrReport"===e.attrs[n].name&&(e.reportType=e.attrs[n].type),e[e.attrs[n].name]=e.attrs[n].value;t.show({controller:"CreateOrEditDashboardItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",parent:angular.element(a.body),clickOutsideToClose:!0,locals:{dashboarditem:e,dashboard:o.customDashboard.widgets,license:null,setting:null,crudPermissions:o.crudPermissions}}).then(function(e){if(e)for(var n=0;n<o.customDashboard.widgets.length;n+=1)o.customDashboard.widgets[n].id===e.id&&(o.customDashboard.widgets[n].attrs=e.attrs,o.customDashboard.widgets[n].voiceQueues=o.voiceQueues,o.customDashboard.widgets[n].voiceQueuesSelected=_.map(o.voiceQueues.rows,"id"),o.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+o.customDashboard.widgets[n].type+"/ms-widget-engine."+o.customDashboard.widgets[n].type+".html")})},o.deleteWidget=function(n){var e=t.confirm().title("Would you like to delete "+n.title+"?").textContent("").ariaLabel("Delete Widget").ok("YES").cancel("NO");t.show(e).then(function(){return s.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(o.customDashboard.widgets,{id:n.id}),i.success({title:"Widget deleted!",msg:n.name?n.name+" has been deleted!":"Widget has been deleted!"})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","socket","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var n="disposition";l?n=l.route:"user"===m.currentUser.role&&(n="userProfile");var t="get";l?t="getDispositions":"user"===m.currentUser.role&&(t="getResources");var e={fields:"id,name,level,ParentId",id:l?l.id:void 0,section:"user"===m.currentUser.role?"Dispositions":void 0,MailAccountId:l?void 0:"null",FaxAccountId:l?void 0:"null",SmsAccountId:l?void 0:"null",OpenchannelAccountId:l?void 0:"null",ChatWebsiteId:l?void 0:"null",WhatsappAccountId:l?void 0:"null",ListId:l?void 0:"null",sort:"id",nolimit:"true"};(a=n,i=t,s=e,o(function(t,n){d[a][i](s).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})).then(function(e){m.dispositions=angular.copy(e),m.newDisposition||function(){if("first"===m.disposition.level)return;if(m.parentDisposition=_.find(m.dispositions,["id",m.disposition.ParentId]),!m.parentDisposition)return p().then(function(e){m.allDispositions=e;for(var n=0;n<m.allDispositions.length;n++){var t=m.allDispositions[n];if(t.id===m.disposition.ParentId){g(t),t.canSelect=!1,m.dispositions.push(t);break}}});g(m.parentDisposition)}()}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:["api",n,t].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAllId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAllConditions=r,u.createOrEditAllCondition=function(e,n){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,allCondition:n,allConditions:u.allConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.allConditions={count:e.length,rows:e},s())})},u.exportSelectedAllConditions=function(){var e=angular.copy(u.selectedAllConditions);return u.selectedAllConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteSelectedAllConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAllConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAllConditions.forEach(function(e){p(e)}),u.selectedAllConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.allCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.allConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAnyId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAnyConditions=r,u.createOrEditAnyCondition=function(e,n){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,anyCondition:n,anyConditions:u.anyConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.anyConditions={count:e.length,rows:e},s())})},u.exportSelectedAnyConditions=function(){var e=angular.copy(u.selectedAnyConditions);return u.selectedAnyConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteAnyCondition=p,u.deleteSelectedAnyConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAnyConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAnyConditions.forEach(function(e){p(e)}),u.selectedAnyConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.anyCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.anyConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}()}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function m(e){switch(e){case"sound":if(!d.application.appdata)return;return[{key:"save_name",value:d.application.appdata.split("/").pop()}];case"squareProject":if(!d.application.project)return;return[{key:"name",value:d.application.project.split(",")[1]}];case"tag":if(!d.application.tag)return;return[{key:"name",value:d.application.tag}];case"trunk":if(!d.application.trunk)return;return[{key:"name",value:d.application.trunk}];case"user":if(!d.application.user&&!d.application.users)return;return d.application.user?[{key:"name",value:d.application.user.split("/")[1]}]:_.map(d.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!d.application.name)return;return[{key:"name",value:d.application.name}];case"voiceContext":if(!d.application.context)return;return[{key:"name",value:d.application.context}];case"voiceMail":if(!d.application.voiceMail)return;return[{key:"mailbox",value:d.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!d.application.queue)return;return[{key:"name",value:d.application.queue}]}}function u(){o.getResourcesByRole(d.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},m("trunk")).then(function(e){d.trunks=e}).catch(function(){s.error({title:i.instant("TOOLS.TRUNKS"),msg:i.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function p(){o.getResourcesByRole(d.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},m("sound")).then(function(e){d.sounds=e}).catch(function(){s.error({title:i.instant("TOOLS.SOUNDS"),msg:i.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function g(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=m("user"),t=[o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();d.users={rows:n,count:n.length}}).catch(function(){s.error({title:i.instant("STAFF.USERS"),msg:i.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function v(){(d.application.appdata||"custom"===d.application.appType)&&e.hide(d.application),e.hide()}d.currentUser=r.getCurrentUser(),d.application=angular.copy(n),d.crudPermissions=l,d.errors=[],d.init=function(){d.application.appdata&&function(){var e=[];switch(d.application.appType){case"agi":d.application.project=d.application.appdata;break;case"dial":e=d.application.appdata.split(","),d.application.tech=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"externalDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"goTo":e=d.application.appdata.split(","),d.application.context=c(e[0]),d.application.extension=c(e[1]),d.application.priority=c(e[2]);break;case"internalDial":e=d.application.appdata.split(","),d.application.user=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"outboundDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]),d.application.prefix=d.application.phone?d.application.phone.split("$")[0]:void 0,d.application.callerId=d.application.callerID?"CALLERID(all)="+d.application.callerID:void 0;break;case"playback":e=d.application.appdata.split(","),d.application.appdata=c(e[0]),d.application.options=c(e[1]);break;case"queue":e=d.application.appdata.split(","),d.application.queue=c(e[0]),d.application.options=c(e[1]),d.application.URL=c(e[2]),d.application.sound=c(e[3]),d.application.timeout=c(e[4]),d.application.agi=c(e[5]),d.application.macro=c(e[6]),d.application.gosub=c(e[7]),d.application.rule=c(e[8]),d.application.position=c(e[9]);break;case"ringGroup":e=d.application.appdata.split(","),d.application.users=e[0].split("&"),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"set":e=d.application.appdata.split("="),d.application.name=e[0],d.application.value=e[1];break;case"voicemail":e=d.application.appdata.split(","),d.application.voiceMail=c(e[0]),d.application.options=c(e[1])}}();switch(d.application.appType){case"agi":o.getResourcesByRole(d.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},m("squareProject")).then(function(e){d.projects=e}).catch(function(){s.error({title:i.instant("CALLYSQUARE.CALLYSQUARE")+" "+i.instant("CALLYSQUARE.PROJECTS"),msg:i.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":u();break;case"goTo":o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},m("voiceContext")).then(function(e){d.contexts=e}).catch(function(){s.error({title:i.instant("VOICE.CONTEXTS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":g();break;case"outboundDial":o.getResourcesByRole(d.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},m("tag")).then(function(e){d.tags=e}).catch(function(){s.error({title:i.instant("TOOLS.TAGS"),msg:i.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),u();break;case"playback":p();break;case"queue":p(),o.getResourcesByRole(d.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},m("voiceQueue")).then(function(e){d.queues=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEQUEUES"),msg:i.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":g();break;case"set":o.getResourcesByRole(d.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},m("variable")).then(function(e){d.variables=e}).catch(function(){s.error({title:i.instant("TOOLS.VARIABLES"),msg:i.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":o.getResourcesByRole(d.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},m("voiceMail")).then(function(e){d.voiceMails=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEMAILS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},d.saveRoutingApp=function(){d.errors=[],function(){var e=[];switch(d.application.appType){case"agi":d.application.appdata=d.application.project;break;case"dial":e[0]=d.application.tech,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"goTo":e[0]=d.application.context,e[1]=d.application.extension,e[2]=d.application.priority,d.application.appdata=e.join(",");break;case"internalDial":e[0]=d.application.user,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"outboundDial":d.application.phone=t.cutdigits?(d.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(d.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?d.application.options=d.application.options.replace("U(xcally-mixmonitor-context)",""):d.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(d.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"playback":e[0]=d.application.appdata,e[1]=d.application.options,d.application.appdata=e.join(",");break;case"queue":e[0]=d.application.queue,e[1]=d.application.options,e[2]=d.application.URL,e[3]=d.application.sound,e[4]=d.application.timeout,e[5]=d.application.agi,e[6]=d.application.macro,e[7]=d.application.gosub,e[8]=d.application.rule,e[9]=d.application.position,d.application.appdata=e.join(",");break;case"ringGroup":e[0]=d.application.users.join("&"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"set":e[0]=d.application.name,e[1]=d.application.value,d.application.appdata=e.join("=");break;case"voicemail":e[0]=d.application.voiceMail,e[1]=d.application.options,d.application.appdata=e.join(",")}}(),v()},d.closeDialog=v}e.$inject=["$mdDialog","$q","$translate","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r,l){var d=this;function c(){var e=[{key:"name",value:d.interval.IntervalId}];s.getResourcesByRole(d.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){d.intervals=e}).catch(function(){i.error({title:t.instant("TOOLS.INTERVALS"),msg:t.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function m(e){n.hide(e)}d.currentUser=o.getCurrentUser(),d.interval=angular.copy(e),d.intervals=a||{rows:[],count:0},d.types=["always","custom","list"],d.crudPermissions=r,d.errors=[],d.daysOfWeek=l.getDaysOfWeek(),d.monthNumber=l.getMonthNumber(),d.monthName=l.getMonthName(),d.daysOfMonth=l.getDaysOfMonth(),d.initialize=function(){if("*,*,*,*"===d.interval.interval)return d.type=d.interval.IntervalId&&d.interval.application?"list":"always",void("list"===d.type&&c());d.type="custom";var e=d.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),d.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),d.timeRangeTo=s}"*"!==t&&(d.dayOfWeekFrom=t.split("-")[0],d.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(d.monthDayFrom=a.split("-")[0],d.monthDayTo=a.split("-")[1]);"*"!==i&&(d.monthFrom=i.split("-")[0],d.monthTo=i.split("-")[1])},d.onTypeChange=function(){"list"===d.type&&0===d.intervals.count&&c()},d.saveInterval=function(){d.errors=[],d.interval.interval=function(){if(["always","list"].includes(d.type))return"*,*,*,*";var e=[];if("*"!==d.timeRangeFrom&&d.timeRangeFrom&&d.timeRangeTo){var n=(d.timeRangeFrom.getHours()<10?"0":"")+d.timeRangeFrom.getHours()+":"+(d.timeRangeFrom.getMinutes()<10?"0":"")+d.timeRangeFrom.getMinutes(),t=(d.timeRangeTo.getHours()<10?"0":"")+d.timeRangeTo.getHours()+":"+(d.timeRangeTo.getMinutes()<10?"0":"")+d.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return d.dayOfWeekFrom?d.dayOfWeekTo?e.push(d.dayOfWeekFrom+"-"+d.dayOfWeekTo):e.push(d.dayOfWeekFrom):e.push("*"),d.monthDayFrom?d.monthDayTo?e.push(d.monthDayFrom+"-"+d.monthDayTo):e.push(d.monthDayFrom):e.push("*"),d.monthFrom?d.monthTo?e.push(d.monthFrom+"-"+d.monthTo):e.push(d.monthFrom):e.push("*"),e.join()}(),"list"!==d.type&&(d.interval.IntervalId=null);m(d.interval)},d.closeDialog=m}e.$inject=["$mdDialog","$translate","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-sip"},d.newInboundRoute=!0);e=[{key:"name",value:d.inboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newinboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.inboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInboundRoute=function(){d.errors=[],o.voiceExtension.save(d.inboundRoute).$promise.then(function(e){c(e.id).then(function(){d.inboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.inboundRoute.id},d.inboundRoute).$promise.then(function(e){var n=_.find(d.inboundRoutes,{id:e.id});if(n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),d.applications)return c(d.inboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.inboundRoute.exten})).ariaLabel("Delete inbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.inboundRoute.id}).$promise.then(function(){_.remove(d.inboundRoutes,{id:d.inboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.inboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","inboundRoutes","inboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.inboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.inboundRoute=l||e.params.inboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.inboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Inbound",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Inbound",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Inbound",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Inbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.inboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInboundRoutes=function(){e.go("app.voice.inboundRoutes",{},{reload:"app.voice.inboundRoutes"})},m.saveInboundRoute=function(){o.voiceExtension.update({id:m.inboundRoute.id},m.inboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.inboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","inboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.inboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.inboundRoutes.rows,{id:e.id}),g.inboundRoutes.count-=1,g.inboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.inboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.inboundRoutes.edit",{id:e.id,inboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInboundRoute=function(e,n){a.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundRoute:n,inboundRoutes:g.inboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInboundRoutes=function(){var e=angular.copy(g.selectedInboundRoutes);return g.selectedInboundRoutes=[],e},g.deleteSelectedInboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInboundRoutes.forEach(function(e){f(e)}),g.selectedInboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","inboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.internalRoute=angular.copy(s),d.internalRoutes=n,d.newInternalRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.internalRoute||(d.internalRoute={appdata:"Internal Call",type:"internal",context:"from-sip"},d.newInternalRoute=!0);e=[{key:"name",value:d.internalRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInternalRoute)return;var e={sort:"priority",VoiceExtensionId:d.internalRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInternalRoute=function(){d.errors=[],o.voiceExtension.save(d.internalRoute).$promise.then(function(e){c(e.id).then(function(){d.internalRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInternalRoute=function(){d.errors=[],o.voiceExtension.update({id:d.internalRoute.id},d.internalRoute).$promise.then(function(e){var n=_.find(d.internalRoutes,{id:e.id});if(n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),d.applications)return c(d.internalRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInternalRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.internalRoute.exten})).ariaLabel("Delete internal route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.internalRoute.id}).$promise.then(function(){_.remove(d.internalRoutes,{id:d.internalRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.internalRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","internalRoutes","internalRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.internalRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.internalRoute=l||e.params.internalRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.internalRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Internal",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.internalRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInternalRoutes=function(){e.go("app.voice.internalRoutes",{},{reload:"app.voice.internalRoutes"})},m.saveInternalRoute=function(){o.voiceExtension.update({id:m.internalRoute.id},m.internalRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.internalRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","internalRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.internalRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InternalRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.internalRoutes.rows,{id:e.id}),g.internalRoutes.count-=1,g.internalRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.internalRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInternalRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.internalRoutes.edit",{id:e.id,internalRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInternalRoute=function(e,n){a.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalRoute:n,internalRoutes:g.internalRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInternalRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInternalRoutes=function(){var e=angular.copy(g.selectedInternalRoutes);return g.selectedInternalRoutes=[],e},g.deleteSelectedInternalRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInternalRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInternalRoutes.forEach(function(e){f(e)}),g.selectedInternalRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","internalRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InternalRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MUSICONHOLD",g.musiconhold=angular.copy(l),g.musiconholds=r,g.newMusicOnHold=!1,g.musiconhold||(g.musiconhold={mode:"files"},g.title="VOICE.NEW_MUSICONHOLD",g.newMusicOnHold=!0),g.addNewMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.save(g.musiconhold).$promise.then(function(e){g.musiconholds.unshift(e.toJSON()),o.success({title:"MusicOnHold properly created",msg:g.musiconhold.name?g.musiconhold.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.musiconhold.id},g.musiconhold).$promise.then(function(e){var n=_.find(g.musiconholds,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MusicOnHold properly saved!",msg:g.musiconhold.name?g.musiconhold.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMusicOnHold=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.musiconhold.id}).$promise.then(function(){_.remove(g.musiconholds,{id:g.musiconhold.id}),o.success({title:"MusicOnHold properly deleted!",msg:(g.musiconhold.name||"musiconhold")+" has been deleted!"}),v(g.musiconhold)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","musiconholds","musiconhold","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMusicOnHoldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.musiconholdMohSounds=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMusicOnHold.getSounds(m.query,u).$promise}function g(e){d.voiceMusicOnHold.removeSound({id:t.params.id,id2:e.id}).$promise.then(function(){_.remove(m.musiconholdMohSounds.rows,{id:e.id}),m.musiconholdMohSounds.count-=1,m.musiconholdMohSounds.rows.length||p(),l.success({title:"MohSound deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.musiconhold={},m.musiconholdMohSounds={count:0,rows:[]},m.selectedMusicOnHoldMohSounds=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},m.init=function(e,n){m.musiconhold=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceMusicOnHoldId=m.musiconhold.id,m.query.id=m.musiconhold.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mohSound #")+e.id||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMusicOnHoldDownload=function(s,e,n){return d.sound.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mohSound"+s.id,a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMusicOnHoldMohSounds=p,m.createOrEditMusicOnHoldMohSound=function(e,n){o.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:m.musiconhold,mohSound:n,mohSounds:m.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(m.selectedMusicOnHoldMohSounds);return m.selectedMusicOnHoldMohSounds=[],e},m.deleteMusicOnHoldMohSound=g,m.deleteSelectedMusicOnHoldMohSounds=function(e){var n=o.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+m.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),m.selectedMusicOnHoldMohSounds=[]})},c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.sounds,{id:e.resourceId})}),t=null;if(m.musiconhold&&(t=_.find(m.sounds,{id:Number(m.musiconhold.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.sounds,{id:t.id});a.canSelect=!1,n.push(a)}m.sounds=n})}else{var t=[],a=null;m.musiconhold&&(a=_.find(m.sounds,{id:Number(m.musiconhold.id)}));for(var i=0;i<m.sounds.length;i++)a&&m.sounds[i].id===a.id&&(m.sounds[i].canSelect=!1,t.push(m.sounds[i]));m.sounds=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MOHSOUND",g.mohSound=angular.copy(l),g.mohSounds=r,g.newMohSound=!1,g.mohSound||(g.mohSound={},g.title="VOICE.NEW_MOHSOUND",g.newMohSound=!0),n.params.id&&(g.mohSound.VoiceMusicOnHoldId=n.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:n.params.id},g.mohSound).$promise.then(function(e){g.mohSounds.unshift(e.toJSON()),o.success({title:"MohSound properly created",msg:g.mohSound.name?g.mohSound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMohSound=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.mohSound.id},g.mohSound).$promise.then(function(e){var n=_.find(g.mohSounds,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"MohSound properly saved!",msg:g.mohSound.name?g.mohSound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMohSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.mohSound.id}).$promise.then(function(){_.remove(g.mohSounds,{id:g.mohSound.id}),o.success({title:"MohSound properly deleted!",msg:(g.mohSound.name||"mohSound")+" has been deleted!"}),v(g.mohSound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.sounds,{id:e.resourceId})}),t=null;if(g.mohSound&&(t=_.find(g.sounds,{id:Number(g.mohSound.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.sounds,{id:t.id});a.canSelect=!1,n.push(a)}g.sounds=n})}else{var t=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++)a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,t.push(g.sounds[i]));g.sounds=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mohSounds","mohSound","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMohSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.musiconhold=c||e.params.musiconhold||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoMusicOnHolds=function(){e.go("app.voice.musiconholds",{},{reload:"app.voice.musiconholds"})},u.saveMusicOnHold=function(){r.voiceMusicOnHold.update({id:u.musiconhold.id},u.musiconhold).$promise.then(function(){l.success({title:"MusicOnHold updated!",msg:u.musiconhold.name?u.musiconhold.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","musiconhold","userProfileSection"],angular.module("app.voice").controller("MusicOnHoldController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.musiconholds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="musiconholds",f.listOrder="",f.listOrderAsc=null,f.selectedMusicOnHolds=[],f.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},f.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("musiconhold")+"?").htmlContent("<b>"+(e.name||"musiconhold")+"</b> will be deleted.").ariaLabel("delete musiconhold").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMusicOnHolds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMusicOnHold.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MusicOnHolds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMusicOnHold=function(e,n){i.show({controller:"CreateOrEditMusicOnHoldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:n,musiconholds:f.musiconholds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMusicOnHold=y,f.exportSelectedMusicOnHolds=function(){var e=angular.copy(f.selectedMusicOnHolds);return f.selectedMusicOnHolds=[],e},f.deleteSelectedMusicOnHolds=function(e){var n=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+f.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMusicOnHolds.forEach(function(e){y(e)}),f.selectedMusicOnHolds=[]})},f.deselectMusicOnHolds=function(){f.selectedMusicOnHolds=[]},f.selectAllMusicOnHolds=function(){f.selectedMusicOnHolds=f.musiconholds.rows};var b=!0,A=1;function E(e){f.musiconholds=e||{count:0,rows:[]}}function y(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(f.musiconholds.rows,{id:e.id}),f.musiconholds.count-=1,f.musiconholds.rows.length||f.getMusicOnHolds(),p.success({title:_.startCase("MusicOnHold")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.outboundRoute=angular.copy(s),d.outboundRoutes=n,d.newOutboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.outboundRoute||(d.outboundRoute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},d.newOutboundRoute=!0);e=[{key:"name",value:d.outboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newOutboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.outboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewOutboundRoute=function(){d.errors=[],o.voiceExtension.save(d.outboundRoute).$promise.then(function(e){c(e.id).then(function(){d.outboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveOutboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.outboundRoute.id},d.outboundRoute).$promise.then(function(e){var n=_.find(d.outboundRoutes,{id:e.id});if(n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),d.applications)return c(d.outboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteOutboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.outboundRoute.exten})).ariaLabel("Delete outbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.outboundRoute.id}).$promise.then(function(){_.remove(d.outboundRoutes,{id:d.outboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.outboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","outboundRoutes","outboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.outboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.outboundRoute=l||e.params.outboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.outboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",options:"xX",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Outbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.outboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoOutboundRoutes=function(){e.go("app.voice.outboundRoutes",{},{reload:"app.voice.outboundRoutes"})},m.saveOutboundRoute=function(){o.voiceExtension.update({id:m.outboundRoute.id},m.outboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.outboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","outboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.outboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="OutboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.outboundRoutes.rows,{id:e.id}),g.outboundRoutes.count-=1,g.outboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.outboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedOutboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.outboundRoutes.edit",{id:e.id,outboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditOutboundRoute=function(e,n){a.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundRoute:n,outboundRoutes:g.outboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getOutboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedOutboundRoutes=function(){var e=angular.copy(g.selectedOutboundRoutes);return g.selectedOutboundRoutes=[],e},g.deleteSelectedOutboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedOutboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedOutboundRoutes.forEach(function(e){f(e)}),g.selectedOutboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","outboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording","routealias"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"voice",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.channelStatusOut,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","helperClasses"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"inbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"inbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","talking","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:m.queues.rows,realtime:!0,crudPermissions:m.crudPermissions}})},o.onWithoutApply("voice_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&(e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting),_.merge(n,_.pick(e,u)))}),o.on("userVoiceQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userVoiceQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:agentconnect",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available-=1)})}),o.on("user:agentcomplete",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(e.available+=1)})}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.voicePause?(n.paused=!0,e.paused+=1,e.available-=1):!t.voicePause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),o.removeAllListeners("userVoiceQueue:remove"),o.removeAllListeners("userVoiceQueue:save"),o.removeAllListeners("user:agentconnect"),o.removeAllListeners("user:agentcomplete"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueuesVoiceRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){var a=this;switch(n.disconnect(),n.connect(),a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.status,m.stateClass=r.state,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","helperClasses","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEQUEUE",g.voiceQueue=angular.copy(l),g.voiceQueues=r,g.newVoiceQueue=!1,g.voiceQueue||(g.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},g.title="VOICE.NEW_VOICEQUEUE",g.newVoiceQueue=!0),g.addNewVoiceQueue=function(){g.errors=[],d.voiceQueue.save(g.voiceQueue).$promise.then(function(e){g.voiceQueues.unshift(e.toJSON()),o.success({title:"VoiceQueue properly created",msg:g.voiceQueue.name?g.voiceQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceQueue=function(){g.errors=[],d.voiceQueue.update({id:g.voiceQueue.id},g.voiceQueue).$promise.then(function(e){var n=_.find(g.voiceQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"VoiceQueue properly saved!",msg:g.voiceQueue.name?g.voiceQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.voiceQueue.id}).$promise.then(function(){_.remove(g.voiceQueues,{id:g.voiceQueue.id}),o.success({title:"VoiceQueue properly deleted!",msg:(g.voiceQueue.name||"voiceQueue")+" has been deleted!"}),v(g.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceQueues","voiceQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voiceRecording=c||e.params.voiceRecording||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},u.saveVoiceRecording=function(){r.voiceRecording.update({id:u.voiceRecording.id},u.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:u.voiceRecording.name?u.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h){var f=this;function b(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceRecordings=r||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceRecordings=[],f.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:f.crudPermissions})},f.runtranscriberuntranscribesentiment=b,f.runtranscribesentimentruntranscribesentiment=A,f.runsentimentruntranscribesentiment=E,f.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){I(e)},function(){console.log("CANCEL")})},f.success=T,f.getVoiceRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceRecording.get(f.query,T).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceRecordings",f.promise=m.userProfile.getResources(f.query,T).$promise)},f.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:f.voiceRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceRecording=I,f.exportSelectedVoiceRecordings=function(){var e=angular.copy(f.selectedVoiceRecordings);return f.selectedVoiceRecordings=[],e},f.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+f.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceRecordings.forEach(function(e){I(e)}),f.selectedVoiceRecordings=[]})},f.deselectVoiceRecordings=function(){f.selectedVoiceRecordings=[]},f.selectAllVoiceRecordings=function(){f.selectedVoiceRecordings=f.voiceRecordings.rows},f.runtranscribeSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){b(e,n)}),f.selectedVoiceRecordings=[]},f.runtranscribesentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){A(e,n)}),f.selectedVoiceRecordings=[]},f.runsentimentSelectedVoiceRecordings=function(n){f.selectedVoiceRecordings.forEach(function(e){E(e,n)}),f.selectedVoiceRecordings=[]};var y=!0,S=1;function T(e){f.voiceRecordings=e||{count:0,rows:[]}}function I(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceRecordings.rows,{id:e.id}),f.voiceRecordings.count-=1,f.voiceRecordings.rows.length||f.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){y?o(function(){y=!1}):(n||(S=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=S),f.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,o,n,t,a,i,s,r,l,d,c,m,u,p,g,v,h,f){var b=this,A=["userpic","online","lastLoginAt","lastPauseAt","pauseType","lastPauseAt","internal","address","chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","chatCapacity","openchannelCapacity","mailCapacity","smsCapacity","whatsappCapacity","faxCapacity","chatCurrentCapacity","openchannelCurrentCapacity","mailCurrentCapacity","smsCurrentCapacity","whatsappCurrentCapacity","faxCurrentCapacity","chatStatus","openchannelStatus","mailStatus","smsStatus","whatsappStatus","faxStatus","voiceStatus","chatStatusTime","openchannelStatusTime","mailStatusTime","smsStatusTime","whatsappStatusTime","faxStatusTime","voiceStatusTime","queue","destconnectedlinenum","screenrecording","phoneBarEnableScreenRecordingByAgent","phoneBarEnableAutomaticScreenRecording"],E=["chatPause","openchannelPause","mailPause","smsPause","whatsappPause","faxPause","voicePause","online"];for(var y in b.currentUser=v.getCurrentUser(),b.availableStates=["ringing","inuse","busy","onhold","not_inuse"],b.pauses=s||{count:0,rows:[]},b.license=h,b.userProfile=p,b.userProfileSection=g&&1==g.count?g.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.agents=r?_.keyBy(r.rows?r.rows:[],"id"):{},b.rpcAgents=l?_.keyBy(l.rows?l.rows:[],"id"):{},b.paginatedAgents={},b.load=!1,b.order=[],b.agentInternal={},b.agents)b.agents.hasOwnProperty(y)&&(b.agents[y].init=!0);b.query={limit:10,page:1,order:"fullname",globalStatusFilter:"",pauseTypeFilter:""},b.logout=function(e,n){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"}),b.agents[e.id]&&(b.agents[e.id].online=!1),b.rpcAgents[e.id]&&(b.rpcAgents[e.id].online=!1),T()}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.queueAdd=function(e,n){t.show({controller:"AgentqueueaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:[],channel:"whatsapp",direction:"inbound",crudPermissions:b.crudPermissions}})},b.pause=function(n,e){return d.user.pause({id:n.id,type:e}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.unPause=function(n){return d.user.unpause({id:n.id}).$promise.then(function(e){b.agents[n.id]&&_.merge(b.agents[n.id],_.pick(e,A)),b.rpcAgents[n.id]&&_.merge(b.rpcAgents[n.id],_.pick(e,A)),w(b.agents[n.id])}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.staff.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.showInfo=function(e){t.show(t.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},b.getAgentStatus=O,b.getAgentGlobalStatus=w,b.isPause=I,b.checkPause=function(e){return"pause"===e},b.isPartialPause=function(e){return"*pause"===e},b.onSave=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(_.omit(e,E),A)),_.merge(b.rpcAgents[e.id],_.pick(_.omit(e,E),A)),w(b.agents[e.id]))},b.onUpdate=function(e){b.agents[e.id]&&(_.merge(b.agents[e.id],_.pick(e,A)),_.merge(b.rpcAgents[e.id],_.pick(e,A)),e.lastPauseAt&&(b.agents[e.id].globalStatusTime=e.lastPauseAt,b.rpcAgents[e.id].globalStatusTime=e.lastPauseAt),w(b.agents[e.id]))},b.onInit=T,b.onConnect=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(_.merge(b.agents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])),_.merge(b.rpcAgents[b.agentInternal[e.destaccountcode]],_.pick(e,["queue","destconnectedlinenum","routealias"])))},b.onComplete=function(e){b.agents[b.agentInternal[e.destaccountcode]]&&(b.agents[b.agentInternal[e.destaccountcode]]=_.omit(b.agents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]),b.rpcAgents[b.agentInternal[e.destaccountcode]]=_.omit(b.rpcAgents[b.agentInternal[e.destaccountcode]],["queue","destconnectedlinenum"]))},b.screenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.on("user:save",b.onSave),c.on("user:update",b.onUpdate),c.on("user:agentconnect",b.onConnect),c.on("user:agentcomplete",b.onComplete),T();var S=f(function(){b.load&&(b.load=!1,T())},999);function T(e){b.load=!1;var n,t,a=o.defer();b.promise=a.promise,b.filteredAgents=[],b.order=[],_.forIn(b.agents,function(e,n){b.rpcAgents[n]&&_.merge(e,_.pick(_.omit(b.rpcAgents[n],E),A)),w(e),e.online?(b.filteredAgents.push(e),b.agentInternal[e.internal]=n):e.globalStatusTime=_.toNumber(moment().format("x"))}),b.query.globalStatusFilter&&_.remove(b.filteredAgents,function(e){return e.globalStatus!==b.query.globalStatusFilter}),b.query.pauseTypeFilter&&_.remove(b.filteredAgents,function(e){return e.pauseType!==b.query.pauseTypeFilter}),b.query.filter&&_.remove(b.filteredAgents,function(e){return e.fullname.toLowerCase().indexOf(b.query.filter.toLowerCase())<0}),b.filteredAgents=(n=b.filteredAgents,t=_.startsWith(b.query.order,"-")?"desc":"asc",_.orderBy(n,[b.query.order.replace("-","")],[t]));var i=(b.query.page-1)*b.query.limit;b.paginatedAgents=_.drop(b.filteredAgents,i).slice(0,b.query.limit);for(var s=0;s<b.paginatedAgents.length;s+=1)b.order.push(b.paginatedAgents[s].id);a.resolve(),b.load=!0}function I(e){return"pause"===e||"*pause"===e}function C(e){return"idle"===e||"unknown"===e||"unavailable"===e||"ringing"===e||_.isNil(e)}function O(e,n){return"voice"===n?"idle"!==e[n+"Status"]?e[n+"Status"]:e[n+"Pause"]?e[n+"Status"]="pause":"idle":e[n+"Pause"]?e[n+"Status"]="pause":e[n+"Status"]}function w(e){var n="unknown";n=_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"pause":_.some([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],I)?"*pause":_.every([O(e,"voice"),O(e,"chat"),O(e,"mail"),O(e,"openchannel"),O(e,"sms"),O(e,"whatsapp"),O(e,"fax")],C)?"idle":"busy",e.globalStatus!==n&&(e.globalStatus=n,e.init?(e.init=!1,e.globalStatusTime=I(n)?_.toNumber(moment(e.lastPauseAt).format("x")):_.max([e.voiceStatusTime,e.chatStatusTime,e.mailStatusTime,e.smsStatusTime,e.whatsappStatusTime,e.openchannelStatusTime,e.faxStatusTime])):e.globalStatusTime=_.toNumber(moment().format("x")))}e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),S&&(f.cancel(S),S=null)})}e.$inject=["$scope","$q","$timeout","$mdDialog","$document","$filter","pauses","agents","rpcAgents","api","socket","toasty","helperClasses","userProfile","userProfileSection","Auth","license","$interval"],angular.module("app.voice").controller("AgentsWhatsappRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this,u=["loggedIn","available","waiting","paused"],p=n(function(){},999);m.currentUser=c.getCurrentUser(),m.queues=i,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={id:c.isUser()?m.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},m.getQueues=function(){m.query.offset=(m.query.page-1)*m.query.limit,s.realtime.getQueues(m.query).$promise.then(function(e){m.queues=e}).catch(function(e){console.error(e)})},m.editQueue=function(e,n){t.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:m.queues.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.addAgent=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:m.queues.rows,realtime:!1,crudPermissions:m.crudPermissions}})},o.on("whatsapp_queue:save",function(e){var n=_.find(m.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,u))}),o.on("userWhatsappQueue:save",function(e){var n=_.find(m.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),o.on("userWhatsappQueue:remove",function(e){var n=_.find(m.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),o.on("user:update",function(t){m.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(!1===t.online?(n.online=!1,e.loggedInDb-=1,n.paused?(n.paused=!1,e.paused-=1):e.available-=1):n.online?t.whatsappPause?(n.paused=!0,e.paused+=1,e.available-=1):!t.whatsappPause&&n.paused&&(n.paused=!1,e.paused-=1,e.available+=1):(n.online=!0,e.loggedInDb+=1,e.available+=1))})}),e.$on("$destroy",function(){o.removeAllListeners("whatsapp_queue:save"),o.removeAllListeners("userWhatsappQueue:remove"),o.removeAllListeners("userWhatsappQueue:save"),o.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","queues","api","socket","toasty","userProfile","userProfileSection","Auth"],angular.module("app.whatsapp").controller("QueuesWhatsappRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(n.disconnect(),n.connect(),this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,agentTransferTimeout:300},g.title="WHATSAPP.NEW_WHATSAPPACCOUNT",g.newWhatsappAccount=!0),n.params.id&&(g.whatsappAccount.WhatsappAccountId=n.params.id),g.addNewWhatsappAccount=function(){g.errors=[],d.whatsappAccount.save(g.whatsappAccount).$promise.then(function(e){g.whatsappAccounts.unshift(e.toJSON()),o.success({title:"WhatsappAccount properly created",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappAccount=function(){g.errors=[],d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappAccount will be deleted.").ariaLabel("Delete WhatsappAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappAccount.delete({id:g.whatsappAccount.id}).$promise.then(function(){_.remove(g.whatsappAccounts,{id:g.whatsappAccount.id}),o.success({title:"WhatsappAccount properly deleted!",msg:(g.whatsappAccount.name||"whatsappAccount")+" has been deleted!"}),v(g.whatsappAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];v(t),t.Owner.name=h(t)}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,u).$promise}function g(e){d.whatsappInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountInteractions.rows,{id:e.id}),m.whatsappAccountInteractions.count-=1,m.whatsappAccountInteractions.rows.length||p(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function h(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountInteractions={count:0,rows:[]},m.selectedWhatsappAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}}]},d.tag.get().$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.whatsappInteractionDownload=function(s,e,n){return d.whatsappInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="whatsapp-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getWhatsappAccountInteractions=p,m.createOrEditWhatsappAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,interaction:n,interactions:m.whatsappAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spywhatsappInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"whatsapp",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"whatsapp.whatsappAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||WhatsappAccountId:=$eq["+m.whatsappAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,p()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedWhatsappAccountInteractions=function(){var e=angular.copy(m.selectedWhatsappAccountInteractions);return m.selectedWhatsappAccountInteractions=[],e},m.deleteWhatsappAccountInteraction=g,m.deleteSelectedWhatsappAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedWhatsappAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountInteractions.forEach(function(e){g(e)}),m.selectedWhatsappAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.whatsappAccount=c||e.params.whatsappAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:p.whatsappAccounts?p.whatsappAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoWhatsappAccounts=function(){e.go("app.whatsapp.whatsappAccounts",{},{reload:"app.whatsapp.whatsappAccounts"})},p.saveWhatsappAccount=function(){r.whatsappAccount.update({id:p.whatsappAccount.id},p.whatsappAccount).$promise.then(function(){l.success({title:"WhatsappAccount updated!",msg:p.whatsappAccount.name?p.whatsappAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.whatsappAccount&&(t=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.whatsappAccount&&(a=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappAccount","userProfile","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountWhatsappCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountWhatsappCannedAnswers.rows,{id:e.id}),m.whatsappAccountWhatsappCannedAnswers.count-=1,m.whatsappAccountWhatsappCannedAnswers.rows.length||p(),l.success({title:"WhatsappCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountWhatsappCannedAnswers={count:0,rows:[]},m.selectedWhatsappAccountWhatsappCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the whatsappCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("whatsappCannedAnswer #")+e.id||"whatsappCannedAnswer")+"</b> will be deleted.").ariaLabel("delete whatsappCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getWhatsappAccountWhatsappCannedAnswers=p,m.createOrEditWhatsappAccountWhatsappCannedAnswer=function(e,n){o.show({controller:"CreateOrEditWhatsappCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,whatsappCannedAnswer:n,whatsappCannedAnswers:m.whatsappAccountWhatsappCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedWhatsappAccountWhatsappCannedAnswers=function(){var e=angular.copy(m.selectedWhatsappAccountWhatsappCannedAnswers);return m.selectedWhatsappAccountWhatsappCannedAnswers=[],e},m.deleteWhatsappAccountWhatsappCannedAnswer=g,m.deleteSelectedWhatsappAccountWhatsappCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected whatsappCannedAnswers?").htmlContent("<b>"+m.selectedWhatsappAccountWhatsappCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete whatsappCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountWhatsappCannedAnswers.forEach(function(e){g(e)}),m.selectedWhatsappAccountWhatsappCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountWhatsappCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER",g.whatsappCannedAnswer=angular.copy(l),g.whatsappCannedAnswers=r,g.newWhatsappCannedAnswer=!1,g.whatsappCannedAnswer||(g.whatsappCannedAnswer={},g.title="WHATSAPP.NEW_WHATSAPPCANNEDANSWER",g.newWhatsappCannedAnswer=!0),n.params.id&&(g.whatsappCannedAnswer.WhatsappAccountId=n.params.id),g.addNewWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.whatsappCannedAnswer).$promise.then(function(e){g.whatsappCannedAnswers.unshift(e.toJSON()),o.success({title:"WhatsappCannedAnswer properly created",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.whatsappCannedAnswer.id},g.whatsappCannedAnswer).$promise.then(function(e){var n=_.find(g.whatsappCannedAnswers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"WhatsappCannedAnswer properly saved!",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappCannedAnswer will be deleted.").ariaLabel("Delete WhatsappCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.whatsappCannedAnswer.id}).$promise.then(function(){_.remove(g.whatsappCannedAnswers,{id:g.whatsappCannedAnswer.id}),o.success({title:"WhatsappCannedAnswer properly deleted!",msg:(g.whatsappCannedAnswer.name||"whatsappCannedAnswer")+" has been deleted!"}),v(g.whatsappCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappCannedAnswers","whatsappCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.whatsappAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.whatsappAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.whatsappAccount.id,field:"WhatsappAccountId",route:"whatsappAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,whatsappAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:f.whatsappAccounts?f.whatsappAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappAccount")+"?").htmlContent("<b>"+(e.name||"whatsappAccount")+"</b> will be deleted.").ariaLabel("delete whatsappAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getWhatsappAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappAccount=function(e,n){i.show({controller:"CreateOrEditWhatsappAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:n,whatsappAccounts:f.whatsappAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappAccount=y,f.exportSelectedWhatsappAccounts=function(){var e=angular.copy(f.selectedWhatsappAccounts);return f.selectedWhatsappAccounts=[],e},f.deleteSelectedWhatsappAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappAccounts?").htmlContent("<b>"+f.selectedWhatsappAccounts.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappAccounts.forEach(function(e){y(e)}),f.selectedWhatsappAccounts=[]})},f.deselectWhatsappAccounts=function(){f.selectedWhatsappAccounts=[]},f.selectAllWhatsappAccounts=function(){f.selectedWhatsappAccounts=f.whatsappAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.whatsappAccount&&(t=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.whatsappAccount&&(a=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.pauses,{id:e.resourceId})});f.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.pauses=n})}else f.pauses=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.whatsappAccounts=e||{count:0,rows:[]}}function y(e){m.whatsappAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappAccounts.rows,{id:e.id}),f.whatsappAccounts.count-=1,f.whatsappAccounts.rows.length||f.getWhatsappAccounts(),p.success({title:_.startCase("WhatsappAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPQUEUE",g.whatsappQueue=angular.copy(l),g.whatsappQueues=r,g.newWhatsappQueue=!1,g.whatsappQueue||(g.whatsappQueue={strategy:"beepall",timeout:10},g.title="WHATSAPP.NEW_WHATSAPPQUEUE",g.newWhatsappQueue=!0),g.addNewWhatsappQueue=function(){g.errors=[],d.whatsappQueue.save(g.whatsappQueue).$promise.then(function(e){g.whatsappQueues.unshift(e.toJSON()),o.success({title:"WhatsappQueue properly created",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappQueue=function(){g.errors=[],d.whatsappQueue.update({id:g.whatsappQueue.id},g.whatsappQueue).$promise.then(function(e){var n=_.find(g.whatsappQueues,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"WhatsappQueue properly saved!",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappQueue.delete({id:g.whatsappQueue.id}).$promise.then(function(){_.remove(g.whatsappQueues,{id:g.whatsappQueue.id}),o.success({title:"WhatsappQueue properly deleted!",msg:(g.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),v(g.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappQueues","whatsappQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,s,a,i,o,r,l,d,c){var m=this;function u(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function p(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(e)&&!o.hasRole("admin")}}}function g(e,n){var t={user:_.pick(o.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),a.saveItem("apps.home.plugin_"+e,{id:e,title:n.name,translate:n.name,state:"plugin_"+n.id,stateParams:n,view:"plugin",icon:n.icon,weight:12,hidden:function(){return!o.hasPermission(e)}})}function v(e){return _.map(e.children,function(e){return e.id})}i.clear(),m.isAgent=function(){return o.getCurrentUser()&&o.hasRole("agent")},s.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return o.hasRole("agent")}}),l.version.get().$promise.then(function(e){m.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(e){m.version="UNKNOWN"}).finally(function(){s.saveItem("version",{title:"VERSION "+m.version,group:!0,weight:2,hidden:function(){return o.hasRole("agent")}})}),o.isLoggedIn()&&(r.gray&&i.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),l.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,s.saveItem("apps.dashboards.custom_"+n,u(n,e.rows[t]))}),l.plugin.get({active:!0}).$promise.then(function(e){var n=0;if(e.count){var t=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"agentOnly"!=e.sidebar});if(0<t.length){s.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,s.saveItem("apps.plugins.plugin_"+n,p(n,t[a]));s.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(a=0;a<i.length;a+=1)g(n=88888+i[a].id,i[a])}})),r.custom&&!d.defaultPageTitle&&d.pageTitle&&angular.element("#pageTitle").html(d.pageTitle),s.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(101)&&!o.hasRole("admin")}}),s.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.staff.users",{id:201,title:"Users",route:"user",translate:"STAFF.USERS",state:"app.staff.users",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||o.hasRole("user")||!o.hasPermission(201)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(202)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(203)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(204)&&!o.hasRole("admin")}}),s.saveItem("apps.staff.userProfiles",{id:205,title:"UserProfiles",route:"userProfile",translate:"STAFF.USERPROFILES",state:"app.staff.userProfiles",permissions:{hidden:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(205)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!r.cm||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(301)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(302)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.globalCustomFields",{id:304,title:"GlobalCustomFields",route:"cmCustomField",translate:"CONTACTMANAGER.GLOBALCUSTOMFIELDS",state:"app.contactmanager.globalCustomFields",permissions:{association:!1},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(304)&&!o.hasRole("admin")}}),s.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(303)&&!o.hasRole("admin")}}),s.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(401)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(405)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(406)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(407)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voiceRecordings",{id:408,title:"VoiceRecordings",route:"voiceRecording",translate:"VOICE.VOICERECORDINGS",state:"app.voice.voiceRecordings",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(408)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(409)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(410)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(402)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(403)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(404)&&!o.hasRole("admin")}}),s.saveItem("apps.voice.realtime",{id:411,title:"Realtime",route:"",translate:"VOICE.REALTIME",state:"app.voice.realtime",permissions:{association:!1,crud:!1},weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(411)&&!o.hasRole("admin")}}),s.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!r.chat||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(501)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(502)&&!o.hasRole("admin")}}),s.saveItem("apps.chat.realtime",{id:510,title:"Realtime",route:"",translate:"CHAT.REALTIME",state:"app.chat.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(510)&&!o.hasRole("admin")}}),s.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!r.mail||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(601)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(602)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.mailSubtatuses",{id:603,title:"MailSubstatuses",route:"mailSubstatus",channel:"mail",translate:"MAIL.MAILSUBSTATUSES",state:"app.mail.mailSubtatuses",permissions:{association:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(603)&&!o.hasRole("admin")}}),s.saveItem("apps.mail.realtime",{id:610,title:"Realtime",route:"",translate:"MAIL.REALTIME",state:"app.mail.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(610)&&!o.hasRole("admin")}}),s.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!r.messaging||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(701)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(702)&&!o.hasRole("admin")}}),s.saveItem("apps.sms.realtime",{id:710,title:"Realtime",route:"",translate:"SMS.REALTIME",state:"app.sms.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(710)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!r.openchannel||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(801)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(802)&&!o.hasRole("admin")}}),s.saveItem("apps.openchannel.realtime",{id:810,title:"Realtime",route:"",translate:"OPENCHANNEL.REALTIME",state:"app.openchannel.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(810)&&!o.hasRole("admin")}}),s.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!r.fax||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(901)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(902)&&!o.hasRole("admin")}}),s.saveItem("apps.fax.realtime",{id:910,title:"Realtime",route:"",translate:"FAX.REALTIME",state:"app.fax.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(910)&&!o.hasRole("admin")}}),s.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1001)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1003)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1004)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1005)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1006)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1007)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1008)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1009)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1011)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1012)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1002)&&!o.hasRole("admin")}}),s.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1010)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!r.voice||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1101)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.squareRecordings",{id:1102,title:"SquareRecordings",route:"squareRecording",translate:"CALLYSQUARE.SQUARERECORDINGS",state:"app.callysquare.squareRecordings",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1102)&&!o.hasRole("admin")}}),s.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1103)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1201)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.extractedReports",{id:1202,title:"ExtractedReports",route:"analyticExtractedReport",translate:"ANALYTICS.EXTRACTEDREPORTS",state:"app.analytics.extractedReports",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1202)&&!o.hasRole("admin")}}),s.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1203)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zendeskAccounts",{id:1301,title:"ZendeskAccounts",route:"intZendeskAccount",translate:"INTEGRATIONS.ZENDESKACCOUNTS",state:"app.integrations.zendeskAccounts",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1301)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.salesforceAccounts",{id:1302,title:"SalesforceAccounts",route:"intSalesforceAccount",translate:"INTEGRATIONS.SALESFORCEACCOUNTS",state:"app.integrations.salesforceAccounts",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1302)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshdeskAccounts",{id:1303,title:"FreshdeskAccounts",route:"intFreshdeskAccount",translate:"INTEGRATIONS.FRESHDESKACCOUNTS",state:"app.integrations.freshdeskAccounts",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1303)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.sugarcrmAccounts",{id:1305,title:"SugarcrmAccounts",route:"intSugarcrmAccount",translate:"INTEGRATIONS.SUGARCRMACCOUNTS",state:"app.integrations.sugarcrmAccounts",permissions:{association:!1,loading:!0},weight:4,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1305)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.deskAccounts",{id:1306,title:"DeskAccounts",route:"intDeskAccount",translate:"INTEGRATIONS.DESKACCOUNTS",state:"app.integrations.deskAccounts",permissions:{association:!1,loading:!0},weight:5,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1306)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.zohoAccounts",{id:1307,title:"ZohoAccounts",route:"intZohoAccount",translate:"INTEGRATIONS.ZOHOACCOUNTS",state:"app.integrations.zohoAccounts",permissions:{association:!1,loading:!0},weight:6,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1307)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.vtigerAccounts",{id:1308,title:"VtigerAccounts",route:"intVtigerAccount",translate:"INTEGRATIONS.VTIGERACCOUNTS",state:"app.integrations.vtigerAccounts",permissions:{association:!1,loading:!0},weight:7,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1308)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.dynamics365Accounts",{id:1309,title:"Dynamics365Accounts",route:"intDynamics365Account",translate:"INTEGRATIONS.DYNAMICS365ACCOUNTS",state:"app.integrations.dynamics365Accounts",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1309)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.servicenowAccounts",{id:1310,title:"ServicenowAccounts",route:"intServicenowAccount",translate:"INTEGRATIONS.SERVICENOWACCOUNTS",state:"app.integrations.servicenowAccounts",permissions:{association:!1,loading:!0},weight:9,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1310)&&!o.hasRole("admin")}}),s.saveItem("apps.integrations.freshsalesAccounts",{id:1304,title:"FreshsalesAccounts",route:"intFreshsalesAccount",translate:"INTEGRATIONS.FRESHSALESACCOUNTS",state:"app.integrations.freshsalesAccounts",permissions:{association:!1,loading:!0},weight:10,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1304)&&!o.hasRole("admin")}}),s.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")||o.hasRole("admin")&&!o.getCurrentUser().settingsEnabled}}),s.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!r.custom||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.AITOOLS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return!r.ai||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!r.update||o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1400)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!r.dialer||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1501)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1502)&&!o.hasRole("admin")}}),s.saveItem("apps.motiondialer.realtime",{id:1510,title:"Realtime",route:"",translate:"MOTIONDIALER.REALTIME",state:"app.motiondialer.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1510)&&!o.hasRole("admin")}}),s.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1600)&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!r.jscripty||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1701)&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(1801)&&!o.hasRole("admin")}}),s.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!r.screenrecording||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.video.screenRecordings",{id:2001,title:"ScreenRecordings",route:"screenRecording",translate:"VIDEO.SCREENRECORDINGS",state:"app.video.screenRecordings",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2001)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!r.whatsapp||o.hasRole("agent")||!o.hasChildrenPermissions(v(this))&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2101)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2102)&&!o.hasRole("admin")}}),s.saveItem("apps.whatsapp.realtime",{id:2110,title:"Realtime",route:"",translate:"WHATSAPP.REALTIME",state:"app.whatsapp.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return o.hasRole("agent")||!o.hasPermission(2110)&&!o.hasRole("admin")}}),s.sort(),a.saveItem("apps",{title:"APPS",group:!0,weight:1}),a.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),a.saveItem("apps.home.dashboard",{id:101,title:"Dashboard",translate:"DASHBOARDS.DASHBOARD",state:"dashboard",view:"dashboard",icon:"icon-tile-four",iconClass:"cyan-500-fg",weight:1,hidden:function(){return!o.hasPermission(101)}}),a.saveItem("apps.home.agentPresence",{id:115,title:"AgentPresence",translate:"DASHBOARDS.AGENT_PRESENCE",state:"agentPresence",view:"agentPresence",icon:"icon-webcam",iconClass:"xenialab-violet-light-fg",weight:2,hidden:function(){return!o.hasPermission(115)}}),a.saveItem("apps.home.contacts",{id:102,title:"Contacts",translate:"DASHBOARDS.CONTACTS",state:"contacts",view:"contacts",icon:"icon-account-circle",iconClass:"red-fg",weight:3,hidden:function(){return!r.cm||!o.hasPermission(102)}}),a.saveItem("apps.home.mycontacts",{id:103,title:"Contacts",translate:"DASHBOARDS.MYCONTACTS",state:"mycontacts",view:"mycontacts",icon:"icon-account-multiple",iconClass:"red-fg",weight:4,hidden:function(){return!r.cm||!o.hasPermission(103)}}),a.saveItem("apps.home.scheduled",{id:113,title:"Scheduled Calls",translate:"DASHBOARDS.SCHEDULED_CALLS",state:"scheduled",view:"scheduled",icon:"icon-calendar-clock",iconClass:"blue-grey-fg",weight:5,hidden:function(){return!r.dialer||!o.hasPermission(113)}}),a.saveItem("apps.home.voice",{id:110,title:"Voice",translate:"DASHBOARDS.VOICE",state:"voice",view:"voice",icon:"icon-phone",iconClass:"blue-A700-fg",weight:6,hidden:function(){return!r.voice||!o.hasPermission(110)}}),a.saveItem("apps.home.abandoned",{id:111,title:"Abandoned",translate:"DASHBOARDS.ABANDONED",state:"abandoned",view:"abandoned",icon:"icon-phone-missed",iconClass:"blue-fg",weight:7,hidden:function(){return!r.voice||!o.hasPermission(111)}}),a.saveItem("apps.home.recordings",{id:104,title:"Recordings",translate:"DASHBOARDS.RECORDINGS",state:"recordings",view:"recordings",icon:"icon-audiobook",iconClass:"indigo-A100-fg",weight:8,hidden:function(){return!r.voice||!o.hasPermission(104)}}),a.saveItem("apps.home.chat",{id:105,title:"Chat",translate:"DASHBOARDS.CHAT",state:"chat",view:"chat",icon:"icon-hangouts",iconClass:"green-A700-fg",weight:9,hidden:function(){return!r.chat||!o.hasPermission(105)}}),a.saveItem("apps.home.mail",{id:106,title:"Mail",translate:"DASHBOARDS.MAIL",state:"mail",view:"mail",icon:"icon-email",iconClass:"teal-fg",weight:10,hidden:function(){return!r.mail||!o.hasPermission(106)}}),a.saveItem("apps.home.sms",{id:107,title:"Sms",translate:"DASHBOARDS.SMS",state:"sms",view:"sms",icon:"icon-message-text",iconClass:"orange-fg",weight:11,hidden:function(){return!r.messaging||!o.hasPermission(107)}}),a.saveItem("apps.home.openchannel",{id:108,title:"Openchannel",translate:"DASHBOARDS.OPENCHANNEL",state:"openchannel",view:"openchannel",icon:"icon-google-earth",iconClass:"amber-fg",weight:12,hidden:function(){return!r.openchannel||!o.hasPermission(108)}}),a.saveItem("apps.home.fax",{id:109,title:"Fax",translate:"DASHBOARDS.FAX",state:"fax",view:"fax",icon:"icon-deskphone",iconClass:"blue-grey-A200-fg",weight:13,hidden:function(){return!r.fax||!o.hasPermission(109)}}),a.saveItem("apps.home.whatsapp",{id:114,title:"Whatsapp",translate:"DASHBOARDS.WHATSAPP",state:"whatsapp",view:"whatsapp",icon:"icon-whatsapp",iconClass:"lime-A700-fg",weight:14,hidden:function(){return!r.whatsapp||!o.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(i.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||i.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})})}e.$inject=["$scope","$rootScope","$translate","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","socket"],angular.module("motion").controller("MainController",e)}(),function(){"use strict";function e(e,n,t,a,o,r){var i=this;function s(e){if(e&&e.id){var n=99999+e.id;o.saveItem("apps.dashboards.custom_"+n,{id:n,title:e.name||"NONAME",state:"app.dashboards.custom",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}})}}function l(e){if(e&&e.id&&"never"!=e.sidebar)if(e.active){if("always"==e.sidebar||"adminOnly"==e.sidebar){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1900)&&!r.hasRole("admin")}});var n=88888+e.id;o.saveItem("apps.plugins.plugin_"+n,{id:n,title:e.name||"NONAME",state:"app.plugins.plugin",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}}),o.sort()}}else{n=88888+e.id;t=1900,a=n,i=o.getNavigation(),(s=_.find(i[0].children,{id:t}))&&_.some(s.children,{id:a})&&("always"==e.sidebar||"adminOnly"==e.sidebar)&&(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}var t,a,i,s}function d(e){var n=o.getNavigation(),t=_.find(n[0].children,{id:e});return!!(t&&0<t.children.length)}i.bodyEl=angular.element("body"),i.msScrollOptions={suppressScrollX:!0},i.setting=t,i.$onInit=function(){i.folded="true"===n.get("motion.folded")||!1},i.toggleMsNavigationFolded=function(){i.folded=!i.folded,n.put("motion.folded",i.folded)},i.getLogo=function(){return i.setting.defaultHeaderWhiteLabel?"xCALLY Motion":i.setting.headerWhiteLabel},a.on("dashboard:save",s),a.on("dashboard:update",s),a.on("dashboard:remove",function(e){if(e&&e.id){var n=99999+e.id;o.deleteItem("apps.dashboards.custom_"+n)}}),a.on("plugin:save",l),a.on("plugin:update",l),a.on("plugin:remove",function(e){if(e&&e.id&&"never"!=e.sidebar){var n=88888+e.id;"always"!=e.sidebar&&"adminOnly"!=e.sidebar||(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}}),e.$on("$stateChangeSuccess",function(){i.bodyEl.removeClass("ms-navigation-horizontal-mobile-menu-active")})}e.$inject=["$scope","$cookies","setting","socket","msNavigationService","Auth"],angular.module("app.navigation").controller("NavigationController",e)}(),function(){"use strict";function e(e,a,i,n,t,s,o,r){var l=this;function d(t){o.isSupported()?o.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"api/users/"+(e=t).FromId+"/avatar",body:e.body||"",focusOnclick:!0,closeOnClick:!0},o.show(a.instant("QUICKPANEL.NEW_INTERNAL_MESSAGE"),n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}l.date=moment().format(),l.currentUser=n.getCurrentUser(),l.license=r,l.unreadTotalMessages=0,l.unreadTotalGroupMessages=0,l.userIsNotPhonebar=function(){return"admin"===l.currentUser.role||"user"===l.currentUser.role||"agent"===l.currentUser.role&&0!==l.currentUser.showWebBar},l.onMessageSave=function(e){e.ToId===l.currentUser.id&&e.FromId!==l.currentUser.id&&!e.read&&e.ChatGroupId&&(l.unreadTotalGroupMessages++,d(e));e.ToId!==l.currentUser.id||e.ChatGroupId||(l.unreadTotalMessages+=1,d(e))},l.onMessageUpdate=function(e){e.ToId===l.currentUser.id&&e.read&&0<l.unreadTotalMessages&&!e.ChatGroupId&&(l.unreadTotalMessages-=1);e.ToId==l.currentUser.id&&e.FromId!==l.currentUser.id&&e.ChatGroupId&&e.read&&0<l.unreadTotalGroupMessages&&l.unreadTotalGroupMessages--},t.on("chatInternalMessage:save",l.onMessageSave),t.on("chatInternalMessage:update",l.onMessageUpdate),s.chatInternalMessage.get({fields:"FromId",ToId:l.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){return e&&e.count&&(l.unreadTotalMessages=e.count),s.user.getGroups({id:l.currentUser.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(s.chatGroup.getUnread({id:t[a].id}).$promise);return i.all(n)}).then(function(e){for(var n=0;n<e.length;n++)l.unreadTotalGroupMessages+=e[n].count}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){t.removeAllListeners("chatInternalMessage:save"),t.removeAllListeners("chatInternalMessage:update")})}e.$inject=["$scope","$translate","$q","Auth","socket","api","desktopNotification","license"],angular.module("app.quick-panel").controller("QuickPanelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;function p(e){var n=angular.element("#chat-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return m.get(e).success(function(){n.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){n.error({title:"PhoneBar API Error",msg:d.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}u.currentUser=i.getCurrentUser(),u.user=void 0,u.users={count:0,rows:[]},u.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),u.unreadMessage={},u.replyMessage="",u.disabled=!1,u.init=function(e){u.license=e},u.toggleChat=function(e){if(e){if(!e.allowmessenger&&"agent"===e.role)return n.warning({title:d.instant("QUICKPANEL.WARNING"),msg:d.instant("QUICKPANEL.MESSENGER_DISABLED")}),void(u.user=void 0);u.user=e,u.replyMessage="",t.chatInternalMessage.get({sort:"createdAt",FromId:u.currentUser.id+","+e.id,ToId:u.currentUser.id+","+e.id,ChatGroupId:"null"}).$promise.then(function(e){if(e&&e.rows){u.user.messages=e;for(var n=0;n<u.user.messages.rows.length;n+=1)!1===u.user.messages.rows[n].read&&u.user.messages.rows[n].ToId===u.currentUser.id&&t.chatInternalMessage.update({id:u.user.messages.rows[n].id,read:!0})}}).finally(function(){p(0)})}else u.user=void 0},u.reply=function(){u.disabled=!0;Date.now();if(""===u.replyMessage)return void(u.disabled=!1);var e={FromId:u.currentUser.id,ToId:u.user.id,body:u.replyMessage,read:!1};u.replyMessage="",t.chatInternalMessage.save(e).$promise.then(function(e){u.user.messages.rows.push(e),u.user.lastMessageAt=e.createdAt,u.user.lastMessage=e,p(400)}).catch(function(e){}).finally(function(){u.disabled=!1})},u.onMessageSave=function(e){if(e.ToId===u.currentUser.id&&!e.ChatGroupId){u.user&&u.user.id===e.FromId?(u.user.messages.rows.push(e),p(0),t.chatInternalMessage.update({id:e.id,read:!0})):u.unreadMessage[e.FromId]=u.unreadMessage[e.FromId]?u.unreadMessage[e.FromId]+1:1;var n=_.find(u.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}},u.onMessageUpdate=function(e){if((e.FromId===u.currentUser.id||e.ToId===u.currentUser.id)&&!e.ChatGroupId){if(u.user){var n=_.find(u.user.messages.rows,{id:e.id});n&&_.merge(n,e)}var t=_.find(u.users.rows,{id:u.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===u.currentUser.id&&e.read&&0<u.unreadMessage[e.FromId]&&(u.unreadMessage[e.FromId]-=1)}},u.onUserUpdate=function(e){var n=_.find(u.users.rows,{id:e.id});n&&(_.isNil(e.online)||n.online===e.online||(n.online=e.online),_.isNil(e.allowmessenger)||n.allowmessenger===e.allowmessenger||(n.allowmessenger=e.allowmessenger))},u.webcall=function(e){c.$broadcast("webrtc::call",{target:g(e)})},u.call=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},u.transfer=function(e){return v("http://127.0.0.1:"+(u.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},s.on("chatInternalMessage:save",u.onMessageSave),s.on("chatInternalMessage:update",u.onMessageUpdate),s.on("user:update",u.onUserUpdate),o("quick-panel").onClose(function(){u.user=void 0}),t.chatInternalMessage.get({fields:"FromId",ToId:u.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){u.unreadMessage=_.countBy(e.rows,"FromId")}).catch(function(e){}),t.chatInternalMessage.getUsers().$promise.then(function(e){u.users=e}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){s.removeAllListeners("chatInternalMessage:save"),s.removeAllListeners("chatInternalMessage:update"),s.removeAllListeners("user:update")})}e.$inject=["$scope","toasty","api","$timeout","Auth","socket","$mdSidenav","$q","$interval","$translate","$rootScope","$http"],angular.module("app.quick-panel").controller("ChatInternalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="QUICKPANEL.EDIT_CHATGROUP",d.group=angular.copy(r),d.currentUser=o.getCurrentUser(),d.members=l,d.newChatGroup=!0,d.group||(d.group={write:!0,members:[]},d.title="QUICKPANEL.NEW_CHATGROUP"),d.saveChatGroup=function(){var t;return d.errors=[],s.chatGroup.save({name:d.group.name,write:d.group.write}).$promise.then(function(e){var n=_.map(d.group.members,"id");return n.unshift(d.currentUser.id),t=e,s.chatGroup.addMembers({id:t.id,ids:n}).$promise}).then(function(){i.success({title:"Group properly saved!",msg:t.name+" has been saved!"}),c(t)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.closeDialog=c,d.querySearch=function(e){return e?d.members.rows.filter((n=e,t=angular.lowercase(n),function(e){var n=e.name.toLowerCase();return-1!=n.indexOf(t)})):[];var n,t}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","group","members"],angular.module("app.quick-panel").controller("CreateOrEditChatGroupDialogController",e)}(),function(){"use strict";function e(e,t,a,s,n,o,i,r,l,d){var c=this;function m(){delete c.group}function u(e){var n=angular.element("#chat-group-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}c.currentUser=i.getCurrentUser(),c.unreadGroupMessages={},c.groups={},c.participants,c.group,c.init=function(e){return c.license=e,r.user.getGroups({id:c.currentUser.id}).$promise.then(function(e){for(var n=0,t=[];n<e.rows.length;n++)e.rows[n].unreadGroupMessages=0,c.groups[e.rows[n].id]=e.rows[n],t.push(r.chatGroup.getUnread({id:e.rows[n].id}).$promise);return o.all(t)}).then(function(e){for(var n=0;n<e.length;n++)c.groups[e[n].id].unreadGroupMessages+=e[n].count}).catch(function(e){console.error(e)})},c.back=m,c.addGroup=function(e,n){s.show({controller:"CreateOrEditChatGroupDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{group:e,me:c.currentUser,license:null,setting:null},resolve:{members:function(){return i.hasRole("admin")?r.user.get({role:"agent"}).$promise:r.userProfile.getResources({id:i.getCurrentUser().userProfileId,section:"Agents",role:"agent"}).$promise}}}).then(function(e){e&&(c.groups[e.id]=e)}).catch(function(e){e&&console.error(e.message)})},c.deleteGroup=function(e,n){var t=s.confirm().title("Are you sure want to delete the selected group?").htmlContent("Group <b>"+e.name+"</b> will be deleted.").ariaLabel("delete Group").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){return r.chatGroup.delete({id:e.id}).$promise}).then(function(){delete c.groups[e.id],d.success({title:"Group properly deleted!",msg:e.name+" has been deleted!"})}).catch(function(e){e&&d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatGroup.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.groupsToArray=function(){return _.values(c.groups)},c.showMessageInfo=function(e,i){s.show({controller:"ShowMessageInfoDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/info/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{message:i},resolve:{data:function(){var a={messages:[]};return r.chatInternalMessage.get({ChatInternalMessageId:i.id}).$promise.then(function(e){var n=[];a.messages=e.rows,a.messages.unshift(i);for(var t=0;t<a.messages.length;t++)n.push(r.user.get({id:a.messages[t].ToId,fields:"id,name,fullname,userpic"}).$promise);return o.all(n)}).then(function(e){return a.users=e,a}).catch(function(e){e&&console.error(e)})}}}).then(function(){}).catch(function(e){e&&console.error(e.message)})},c.toggleChat=function(n){c.group={id:n.id,write:n.write,messages:{}},r.chatGroup.getMembers({id:n.id,fields:"id,name,fullname"}).$promise.then(function(e){return c.group.membersByKeys=_.keyBy(e.rows,"id"),c.group.members=_.differenceBy(e.rows,[{id:c.currentUser.id}],"id"),c.participants=_.map(c.group.members,"fullname").join(", "),r.chatGroup.getMessages({id:n.id,nolimit:!0}).$promise}).then(function(e){for(var n,t=0,a=[];t<e.count;t++)e.rows[t].ToId===c.currentUser.id&&(n=e.rows[t],c.group.messages[n.id]=n,e.rows[t].ToId!=c.currentUser.id||e.rows[t].FromId===c.currentUser.id||n.read||a.push(r.chatInternalMessage.update({id:n.id,read:!0})));return o.all(a)}).then(function(){u(400)}).catch(function(e){console.error(e.message)})},c.reply=function(){if(!c.replyMessage)return;var t={id:c.group.id,FromId:c.currentUser.id,ToId:c.currentUser.id,body:c.replyMessage,read:!0},a=[];c.replyMessage="",r.chatGroup.addMessage(t).$promise.then(function(e){t.read=!1,t.ChatInternalMessageId=e.id;for(var n=0;n<c.group.members.length;n++)c.group.members[n].id!==c.currentUser.id&&(t.ToId=c.group.members[n].id,a.push(r.chatGroup.addMessage(angular.copy(t)).$promise));return o.all(a)}).catch(function(e){console.log(e)})},l.on("chatInternalMessage:save",function(n){if(!c.group&&n.ToId===c.currentUser.id&&n.FromId!==c.currentUser.id&&!n.read&&n.ChatGroupId){var e=c.groups[n.ChatGroupId];if(!e)return r.chatGroup.get({id:n.ChatGroupId}).$promise.then(function(e){e.unreadGroupMessages=1,c.groups[e.id]=e});e.unreadGroupMessages||(e.unreadGroupMessages=0),e.unreadGroupMessages++}c.group&&n.ChatGroupId===c.group.id&&n.ToId===c.currentUser.id&&r.chatInternalMessage.update({id:n.id,read:!0}).$promise.then(function(){var e;e=n,c.group.messages[e.id]=e,u(400)})}),l.on("chatInternalMessage:update",function(e){e.ToId==c.currentUser.id&&e.FromId!==c.currentUser.id&&e.ChatGroupId&&e.read&&(0<c.groups[e.ChatGroupId].unreadGroupMessages&&c.groups[e.ChatGroupId].unreadGroupMessages--,c.group.messages[e.id]&&(c.group.messages[e.id].read=!0))}),l.on("chatGroup:remove",function(e){c.groups[e.id]&&delete c.groups[e.id]}),n("quick-panel").onClose(m),e.$on("$destroy",function(){l.removeAllListeners("chatInternalMessage:save"),l.removeAllListeners("chatInternalMessage:update"),l.removeAllListeners("chatGroup:remove")})}e.$inject=["$scope","$document","$timeout","$mdDialog","$mdSidenav","$q","Auth","api","socket","toasty"],angular.module("app.quick-panel").controller("ChatGroupController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){this.data=r,this.title="QUICKPANEL.INFO",this.closeDialog=function(){a.hide()}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","data"],angular.module("app.quick-panel").controller("ShowMessageInfoDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.form={token:s.token},o.setting={},o.resetPassword=function(){return i.auth.reset(o.form).$promise.then(function(){n.success({title:t.instant("RESETPASSWORD.PASSWORD_RESET"),msg:t.instant("RESETPASSWORD.PASSWORD_RESET_MESSAGE")}),a.go("app.login")}).catch(function(e){e&&n.error({title:t.instant("RESETPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},o.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general");return i.setting.gdpr({id:1}).$promise.then(function(e){o.setting=e,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:""}).catch(function(e){e&&n.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})})}}e.$inject=["Auth","toasty","$translate","$state","api","$stateParams"],angular.module("app.reset").controller("ResetPasswordController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.errors=[],r.user=i,r.setting=s,r.reset=o,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.savePassword=function(){r.errors=[],a.user.changePassword({id:r.user.id},{oldPassword:r.oldPassword,newPassword:r.password}).$promise.then(function(){n.show(n.simple().textContent("Your password properly updated").position("top right").hideDelay(5e3)),l()}).catch(function(e){console.error(e),r.errors=e.data.errors&&e.data.errors.length?e.data.errors:[{message:e.data.message||"Authorization error",type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.changePasswordForm.password.$setValidity("oldPasswordMatch",!1):t.changePasswordForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","$mdToast","api","user","setting","reset"],angular.module("app.toolbar").controller("ChangePasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){_.isNil(e)&&s.cmHopper.update({id:d.preview.id,UserId:null}),a.hide()}d.customFieldsMap=l&&l.rows?_.mapValues(_.keyBy(l.rows,function(e){return"cf_"+e.id}),"name"):{},d.errors=[],d.hopperIds=[],d.preview=o,d.currentUser=r,d.originated=!1,d.disable=!1,d.disableGetContact=!1,d.hopperIds.push(d.preview.id),d.originatePreview=function(){d.originated=!0,d.disable=!0,_.isEmpty(d.preview)?(i.error({title:"Message",msg:"Contact not available"}),d.disable=!1,d.hopperIds=[],c(!0)):s.rpc.getVoiceQueuesPreview({id:d.preview.id}).$promise.then(function(e){c(!0)}).catch(function(e){i.error({title:"Message",msg:e.data}),c(!0)}).finally(function(){d.disable=!1,d.hopperIds=[]})},d.closeDialog=c,d.nextContact=function(){return d.disableGetContact=!0,s.cmHopper.getPreview({hopperIds:d.hopperIds,direction:"next"}).$promise.then(function(e){d.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(d.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e,d.hopperIds.push(d.preview.id))}).catch(function(e){if(d.disableGetContact=!1,d.hopperIds=[],404===e.status)d.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.previousContact=function(){if(d.disableGetContact=!0,1<d.hopperIds.length){var e=_.without(d.hopperIds,d.preview.id);return s.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){d.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(d.hopperIds=[],a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(_.remove(d.hopperIds,function(e){return e==d.preview.id}),d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e)}).catch(function(e){if(404===e.status)d.hopperIds=[d.preview.id],i.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){d.hopperIds=[],a.hide();for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.hopperIds=[],a.hide(),i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},d.getFirstAvailableContact=function(){return d.disableGetContact=!0,i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),s.cmHopper.getPreview({hopperIds:[d.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(a.hide(),i.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(d.originated||s.cmHopper.update({id:d.preview.id,UserId:null}),d.preview=e,d.hopperIds.push(d.preview.id))}).catch(function(e){if(a.hide(),404===e.status)i.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){d.disableGetContact=!1})},d.isCustomField=function(e){return _.startsWith(e,"cf_")},d.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},d.isNil=function(e){return _.isNil(e)},e.$on("$destroy",function(){d.originated||s.cmHopper.update({id:d.preview.id,UserId:null})})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","preview","currentUser","customFields"],angular.module("app.toolbar").controller("PreviewDialogController",e)}(),function(){"use strict";function e(n,t,s,a,o,e,i,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S,T=this;T.voiceQueues={},T.polling=!0,t.global={search:""},T.pauses=[],T.license=b,T.currentUser=v.getCurrentUser(),T.unreadTotalMessages=0,T.unreadTotalGroupMessages=0,T.contacts=0,"agent"===T.currentUser.role&&(S=E(function(){_.some(T.voiceQueues,{dialMethod:"preview",dialActive:!0})&&T.license.dialer&&T.polling?(T.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(T.contacts=e.contacts)}).finally(function(){T.polling=!0})):T.contacts=0},14999)),T.setting=A,T.bodyEl=angular.element("body"),T.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:T.license.webrtc,phoneBarExpires:T.currentUser.phoneBarExpires,phoneBarPrefixRequired:T.currentUser.phoneBarPrefixRequired,wssPort:T.currentUser.wssPort},T.webRTCSessions=[],T.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},T.userStatusOptions=[{title:"Online",icon:"icon-checkbox-marked-circle",color:"#4CAF50"},{title:"Away",icon:"icon-clock",color:"#FFC107"},{title:"Do not Disturb",icon:"icon-minus-circle",color:"#F44336"},{title:"Invisible",icon:"icon-checkbox-blank-circle-outline",color:"#BDBDBD"},{title:"Offline",icon:"icon-checkbox-blank-circle-outline",color:"#616161"}],T.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}};var I=["ar","fa","he"];function C(){h.connect(),h.on("user:update",T.onUserUpdate),h.on("user:called",T.onUserCalled),h.on("chatInternalMessage:save",T.onInternalMessageSave),h.on("chatInternalMessage:update",T.onInternalMessageUpdate),h.on("userVoiceQueue:save",T.onUserVoiceQueue),h.on("voiceQueue:save",T.onVoiceQueue),h.on("userVoiceQueue:remove",T.onUserVoiceQueue),h.on("voiceQueue:remove",T.onVoiceQueue),h.on("voiceQueue:update",T.onVoiceQueue),h.on("user:forcelogout",D),h.on("userNotification:send",P)}function O(){h.disconnect("logout")}function w(e){T.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function R(){T.promise=f.user.getQueues(T.query,w).$promise}function x(e){return O(),v.logout(e).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){console.error(e)})}function N(e,n){c.show({controller:"ChangePasswordController",controllerAs:"vm",templateUrl:"app/toolbar/changepassword/changepassword.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!n,escapeToClose:!n,locals:{user:T.user,setting:A,reset:n}})}function D(e){if(console.debug("onForceLogout -> data",e),e.user.id===T.user.id&&0!==T.user.showWebBar)return O(),v.logout(!0).then(function(){t.$broadcast("webrtc::logout"),c.show(c.alert().parent(angular.element(m.body)).clickOutsideToClose(!1).escapeToClose(!1).title(r.instant("TOOLBAR.WARNING")).textContent(r.instant("TOOLBAR.USER_FORCE_LOGOUT",{ip:e.ip})).ok("OK")).then(function(){return a.go("app.login")})}).catch(function(e){console.error(e)})}function P(e){var n=e;if(T.currentUser.id===n.recipient){var t=r.instant("TOOLBAR.NOTIFICATION_TITLE",{sender:n.sender}),a=n.description?r.instant("TOOLBAR.NOTIFICATION_TITLE_RECIPIENT",{recipient:n.description}):null;p.wait({title:a?t+" "+a:t,msg:n.content,clickToClose:!1,timeout:!1,sound:n.beep,html:!0})}}T.toggleSidenav=function(e){i(e).toggle()},T.logout=x,T.changeLanguage=function(e){if(!T.languages.hasOwnProperty(e.code)){return void l.show({template:'<md-toast id="language-message" layout="column" layout-align="center start"><div class="md-toast-content">Motion supports multiple translations through angular-translate module, but currently we do not support the selected language. If you want to help us, send us a message.</div></md-toast>',hideDelay:7e3,position:"top right",parent:"#content"})}T.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=I.indexOf(e.code)?p.info({title:r.instant("TOOLBAR.CHANGE_LANGUAGE_TITLE"),msg:r.instant("TOOLBAR.CHANGE_LANGUAGE_MESSAGE")}):n.$parent.$parent.vm.direction="ltr"},T.setUserStatus=function(e){T.userStatus=e},T.toggleHorizontalMobileMenu=function(){T.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},T.toggleMsNavigationFolded=function(){g.toggleFolded()},T.search=function(n){for(var e=[],t=g.getFlatNavigation(),a=s.defer(),i=0;i<t.length;i++)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return o(function(){a.resolve(e)},1e3),a.promise},T.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},T.openSettings=function(e){t.$broadcast("webrtc::settings")},T.changePassword=N,T.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},T.onUserUpdate=function(e){if(e.id===T.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==T.user.showWebBar){var t;O();var n=c.confirm({title:r.instant("TOOLBAR.WARNING")+"!",htmlContent:"<span>"+r.instant("TOOLBAR.SOMEONE_LOGGED_YOU_OUT")+"</span><br><span>"+r.instant("TOOLBAR.SESSION_TIMEOUT")+"</span>",ariaLabel:r.instant("TOOLBAR.WARNING")+"!",ok:r.instant("TOOLBAR.STAY_LOGGED"),cancel:r.instant("TOOLBAR.LOGOUT"),onComplete:function(e,n){t=setTimeout(function(){c.cancel()},6e4)}});c.show(n).then(function(){return clearTimeout(t),v.queueLogin().then(function(){C(),_.merge(T.user,e),v.setCurrentUser(T.user)})}).catch(function(e){clearTimeout(t),x(!0)})}else x(!0);else _.merge(T.user,e),v.setCurrentUser(T.user)},T.onUserCalled=function(e){if(2===T.currentUser.showWebBar&&"agent"===T.currentUser.role&&T.currentUser.name===e.membername){var n=T.currentUser.privacyEnabled?y.mask(e.calleridnum):e.calleridnum;p.info({title:"WebRTC Popup",msg:"<div>            <span>Call from: "+n+"</span><br>            <span>Queue: "+e.queue+"</span><br>            <span>Extra: "+(e.variables&&e.variables.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}},T.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(T.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:T.user.id,type:n}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.unpause=function(){return f.user.unpause({id:T.user.id}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UNPAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},T.preview=function(n){return T.disable=!0,f.cmHopper.getPreview().$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?p.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"}):c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:n,clickOutsideToClose:!0,locals:{preview:e,currentUser:T.currentUser},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}).catch(function(e){if(404===e.status)p.info({title:"PREVIEW",msg:"CONTACT NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){T.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){T.disable=!1})},T.getLogo=function(){return T.setting.defaultHeaderWhiteLabel?"xCALLY Motion":T.setting.headerWhiteLabel},T.userIsNotPhonebar=function(){return"admin"===T.currentUser.role||"user"===T.currentUser.role||"agent"===T.currentUser.role&&0!==T.currentUser.showWebBar},T.onInternalMessageSave=function(e){e.ToId!==T.currentUser.id||e.ChatGroupId||(T.unreadTotalMessages+=1);e.ToId===T.currentUser.id&&e.FromId!==T.currentUser.id&&!e.read&&e.ChatGroupId&&T.unreadTotalGroupMessages++},T.onInternalMessageUpdate=function(e){e.ToId===T.currentUser.id&&e.read&&0<T.unreadTotalMessages&&!e.ChatGroupId&&(T.unreadTotalMessages-=1);e.ToId===T.currentUser.id&&e.read&&e.ChatGroupId&&0<T.unreadTotalGroupMessages&&T.unreadTotalGroupMessages--},T.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&R()},T.onVoiceQueue=function(e){R()},function(){T.user=v.getCurrentUser(),T.conf.ha1=T.user.md5secret,T.conf.id=T.user.id,T.conf.name=T.user.name,T.conf.fullname=T.user.fullname,T.conf.internal=T.user.internal,T.conf.recording=T.user.phoneBarEnableRecording,T.conf.autoAnswer=T.user.phoneBarAutoAnswer,T.conf.enableSettings=T.user.phoneBarEnableSettings,T.conf.enableDtmfTone=T.user.phoneBarEnableDtmfTone,T.conf.autoAnswerDelay=T.user.phoneBarAutoAnswerDelay,T.userStatus=T.userStatusOptions[0];var e=u.get("motion.language");e&&T.languages.hasOwnProperty(e)?T.selectedLanguage=T.languages[e]:T.selectedLanguage=T.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){T.pauses=e.rows?e.rows:[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETPAUSES",msg:e.status?JSON.stringify(e.data):e.toString()})}),"LOCAL_LOGIN"==v.getAuthenticationType()&&T.setting.securePassword)if(T.user.passwordResetAt){var n=moment(T.user.passwordResetAt).add(T.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?N(null,!0):moment().add(15,"day").isAfter(n)&&p.warning({title:r.instant("TOOLBAR.WARNING")+"!",msg:r.instant("TOOLBAR.PASSWORD_EXPIRE_REMAINING_DAYS")+": "+Math.ceil(n.diff(moment(),"days",!0)),timeout:2e4})}else N(null,!0)}(),R(),C(),f.chatInternalMessage.get({fields:"FromId",ToId:T.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){T.unreadTotalMessages=e.rows.length}),n.$on("$destroy",function(){h.removeAllListeners("user:called"),h.removeAllListeners("user:update"),h.removeAllListeners("chatInternalMessage:save"),h.removeAllListeners("chatInternalMessage:update"),h.removeAllListeners("userVoiceQueue:save"),h.removeAllListeners("voiceQueue:save"),h.removeAllListeners("userVoiceQueue:remove"),h.removeAllListeners("voiceQueue:remove"),h.removeAllListeners("voiceQueue:update"),h.removeAllListeners("user:forcelogout"),h.removeAllListeners("userNotification:send"),S&&(E.cancel(S),S=null)})}e.$inject=["$scope","$rootScope","$q","$state","$timeout","$location","$mdSidenav","$translate","$mdToast","$window","$mdDialog","$document","$cookies","toasty","msNavigationService","Auth","socket","api","license","setting","$interval","privacyManager"],angular.module("app.toolbar").controller("ToolbarController",e)}();var urlParams=function(e){var n=new Object,t=e.lastIndexOf("?");if(0<t)for(var a=e.substring(t+1).split("&"),i=0;i<a.length;i++)0<(t=a[i].indexOf("="))&&(n[a[i].substring(0,t)]=a[i].substring(t+1));return n}(window.location.href),t0=new Date,MAX_REQUEST_SIZE=10485760,MAX_WIDTH=12e3,MAX_HEIGHT=12e3,EXPORT_URL="http://exp.draw.io/ImageExport2/export",SHARE_HOST="http://localhost:3000",SAVE_URL="api/square/projects/",VARIABLE_URL="/api/variables",STENCIL_PATH="/assets/plugins/square/stencils",SHAPES_PATH="/assets/plugins/square/shapes",IMAGE_PATH="/assets/plugins/square/images",STYLE_PATH="/assets/plugins/square/styles",CSS_PATH="/assets/plugins/square/styles",OPEN_FORM="api/square/projects/open",TEMPLATE_PATH="/assets/plugins/square/templates",RESOURCES_PATH="/assets/plugins/square/resources",RESOURCE_BASE=RESOURCES_PATH+"/grapheditor",CRUD_PERMISSIONS={readOnly:!1,canEdit:!1,canDelete:!1},tapAndHoldStartsConnection=!0,showConnectorImg=!0,mxLoadResources=!1,mxLanguages=["it","fr","ko","es","sv","ru","de","ja","zh-CN","zh-TW","nl","fi","da","pt-BR","pt-PT","no","hi","tr","fa"],mxLanguage="en",match=document.cookie.match(new RegExp("(^| )motion.language=([^;]+)"));match&&mxLanguages.includes(match[2])&&(mxLanguage=match[2]);var mxBasePath="assets/plugins/mxgraph",mxClient={VERSION:"2.0.0.0",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&navigator.userAgent.indexOf("MSIE")<0,IS_OP:0<=navigator.userAgent.indexOf("Opera/"),IS_OT:navigator.userAgent.indexOf("Presto/2.4.")<0&&navigator.userAgent.indexOf("Presto/2.3.")<0&&navigator.userAgent.indexOf("Presto/2.2.")<0&&navigator.userAgent.indexOf("Presto/2.1.")<0&&navigator.userAgent.indexOf("Presto/2.0.")<0&&navigator.userAgent.indexOf("Presto/1.")<0,IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&navigator.userAgent.indexOf("Chrome/")<0,IS_GC:0<=navigator.userAgent.indexOf("Chrome/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&navigator.userAgent.indexOf("Firefox/1.")<0&&navigator.userAgent.indexOf("Firefox/2.")<0||0<=navigator.userAgent.indexOf("Iceweasel/")&&navigator.userAgent.indexOf("Iceweasel/1.")<0&&navigator.userAgent.indexOf("Iceweasel/2.")<0||0<=navigator.userAgent.indexOf("SeaMonkey/")&&navigator.userAgent.indexOf("SeaMonkey/1.")<0||0<=navigator.userAgent.indexOf("Iceape/")&&navigator.userAgent.indexOf("Iceape/1.")<0,IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||0<=navigator.userAgent.indexOf("Epiphany/")||0<=navigator.userAgent.indexOf("AppleWebKit/")||0<=navigator.userAgent.indexOf("Gecko/")||0<=navigator.userAgent.indexOf("Opera/"),NO_FO:0<=navigator.userAgent.indexOf("Firefox/1.")||0<=navigator.userAgent.indexOf("Iceweasel/1.")||0<=navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/1.")||0<=navigator.userAgent.indexOf("Camino/1.")||0<=navigator.userAgent.indexOf("Epiphany/2.")||0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("MSIE")||0<=navigator.userAgent.indexOf("Mozilla/2."),IS_VML:"MICROSOFT INTERNET EXPLORER"==navigator.appName.toUpperCase(),IS_MAC:0<navigator.userAgent.toUpperCase().indexOf("MACINTOSH"),IS_TOUCH:0<navigator.userAgent.toUpperCase().indexOf("IPAD")||0<navigator.userAgent.toUpperCase().indexOf("IPOD")||0<navigator.userAgent.toUpperCase().indexOf("IPHONE")||0<navigator.userAgent.toUpperCase().indexOf("ANDROID"),IS_LOCAL:document.location.href.indexOf("http://")<0&&document.location.href.indexOf("https://")<0,isBrowserSupported:function(){return mxClient.IS_VML||mxClient.IS_SVG},link:function(e,n,t){if(t=t||document,mxClient.IS_IE6)t.write('<link rel="'+e+'" href="'+n+'" charset="ISO-8859-1" type="text/css"/>');else{var a=t.createElement("link");a.setAttribute("rel",e),a.setAttribute("href",n),a.setAttribute("charset","ISO-8859-1"),a.setAttribute("type","text/css"),t.getElementsByTagName("head")[0].appendChild(a)}},include:function(e){document.write('<script src="'+e+'"><\/script>')},dispose:function(){for(var e=0;e<mxEvent.objects.length;e++)null!=mxEvent.objects[e].mxListenerList&&mxEvent.removeAllListeners(mxEvent.objects[e])}};if(mxClient.IS_OP&&mxClient.IS_OT?mxClient.CSS_PREFIX="O":mxClient.IS_SF||mxClient.IS_GC?mxClient.CSS_PREFIX="Webkit":mxClient.IS_MT?mxClient.CSS_PREFIX="Moz":mxClient.IS_IE&&9<=document.documentMode&&(mxClient.CSS_PREFIX="ms"),void 0===mxLoadResources&&(mxLoadResources=!0),"undefined"==typeof mxResourceExtension&&(mxResourceExtension=".txt"),"undefined"==typeof mxLoadStylesheets&&(mxLoadStylesheets=!0),void 0!==mxBasePath&&0<mxBasePath.length?("/"==mxBasePath.substring(mxBasePath.length-1)&&(mxBasePath=mxBasePath.substring(0,mxBasePath.length-1)),mxClient.basePath=mxBasePath):mxClient.basePath=".","undefined"!=typeof mxImageBasePath&&0<mxImageBasePath.length?("/"==mxImageBasePath.substring(mxImageBasePath.length-1)&&(mxImageBasePath=mxImageBasePath.substring(0,mxImageBasePath.length-1)),mxClient.imageBasePath=mxImageBasePath):mxClient.imageBasePath=mxClient.basePath+"/images",mxClient.language=void 0!==mxLanguage?mxLanguage:mxClient.IS_IE?navigator.userLanguage:navigator.language,mxClient.defaultLanguage="undefined"!=typeof mxDefaultLanguage?mxDefaultLanguage:"en",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/common.css"),void 0!==mxLanguages&&(mxClient.languages=mxLanguages),mxClient.IS_IE){if(9<=document.documentMode)mxClient.IS_VML=!1,mxClient.IS_SVG=!0;else{8==document.documentMode?(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml","#default#VML"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office","#default#VML")):(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office"));var ss=document.createStyleSheet();ss.cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css")}window.attachEvent("onunload",mxClient.dispose)}var mxLog={consoleName:"Console",TRACE:!1,DEBUG:!0,WARN:!0,buffer:"",init:function(){if(null==mxLog.window&&null!=document.body){var e=mxLog.consoleName+" - mxGraph "+mxClient.VERSION,n=document.createElement("table");n.setAttribute("width","100%"),n.setAttribute("height","100%");var t=document.createElement("tbody"),a=document.createElement("tr"),i=document.createElement("td");if(i.style.verticalAlign="top",mxLog.textarea=document.createElement("textarea"),mxLog.textarea.setAttribute("readOnly","true"),mxLog.textarea.style.height="100%",mxLog.textarea.style.resize="none",mxLog.textarea.value=mxLog.buffer,mxLog.textarea.style.width=mxClient.IS_NS&&"BackCompat"!=document.compatMode?"99%":"100%",i.appendChild(mxLog.textarea),a.appendChild(i),t.appendChild(a),a=document.createElement("tr"),mxLog.td=document.createElement("td"),mxLog.td.style.verticalAlign="top",mxLog.td.setAttribute("height","30px"),a.appendChild(mxLog.td),t.appendChild(a),n.appendChild(t),mxLog.addButton("Info",function(e){mxLog.info()}),mxLog.addButton("DOM",function(e){e=mxUtils.getInnerHtml(document.body),mxLog.debug(e)}),mxLog.addButton("Trace",function(e){mxLog.TRACE=!mxLog.TRACE,mxLog.TRACE?mxLog.debug("Tracing enabled"):mxLog.debug("Tracing disabled")}),mxLog.addButton("Copy",function(e){try{mxUtils.copy(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Show",function(e){try{mxUtils.popup(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Clear",function(e){mxLog.textarea.value=""}),a=t=0,a="number"==typeof window.innerWidth?(t=window.innerHeight,window.innerWidth):(t=document.documentElement.clientHeight||document.body.clientHeight,document.body.clientWidth),mxLog.window=new mxWindow(e,n,Math.max(0,a-320),Math.max(0,t-210),300,160),mxLog.window.setMaximizable(!0),mxLog.window.setScrollable(!1),mxLog.window.setResizable(!0),mxLog.window.setClosable(!0),mxLog.window.destroyOnClose=!1,(mxClient.IS_NS||mxClient.IS_IE)&&!mxClient.IS_GC&&!mxClient.IS_SF&&"BackCompat"!=document.compatMode){var s=mxLog.window.getElement();e=function(e,n){mxLog.textarea.style.height=Math.max(0,s.offsetHeight-70)+"px"};mxLog.window.addListener(mxEvent.RESIZE_END,e),mxLog.window.addListener(mxEvent.MAXIMIZE,e),mxLog.window.addListener(mxEvent.NORMALIZE,e),mxLog.textarea.style.height="92px"}}},info:function(){mxLog.writeln(mxUtils.toString(navigator))},addButton:function(e,n){var t=document.createElement("button");mxUtils.write(t,e),mxEvent.addListener(t,"click",n),mxLog.td.appendChild(t)},isVisible:function(){return null!=mxLog.window&&mxLog.window.isVisible()},show:function(){mxLog.setVisible(!0)},setVisible:function(e){null==mxLog.window&&mxLog.init(),null!=mxLog.window&&mxLog.window.setVisible(e)},enter:function(e){if(mxLog.TRACE)return mxLog.writeln("Entering "+e),(new Date).getTime()},leave:function(e,n){if(mxLog.TRACE){var t=0!=n?" ("+((new Date).getTime()-n)+" ms)":"";mxLog.writeln("Leaving "+e+t)}},debug:function(){mxLog.DEBUG&&mxLog.writeln.apply(this,arguments)},warn:function(){mxLog.WARN&&mxLog.writeln.apply(this,arguments)},write:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");null!=mxLog.textarea?(mxLog.textarea.value+=e,0<=navigator.userAgent.indexOf("Presto/2.5")&&(mxLog.textarea.style.visibility="hidden",mxLog.textarea.style.visibility="visible"),mxLog.textarea.scrollTop=mxLog.textarea.scrollHeight):mxLog.buffer+=e},writeln:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");mxLog.write(e+"\n")}},mxObjectIdentity={FIELD_NAME:"mxObjectId",counter:0,get:function(e){if("object"==typeof e&&null==e[mxObjectIdentity.FIELD_NAME]){var n=mxUtils.getFunctionName(e.constructor);e[mxObjectIdentity.FIELD_NAME]=n+"#"+mxObjectIdentity.counter++}return e[mxObjectIdentity.FIELD_NAME]},clear:function(e){"object"==typeof e&&delete e[mxObjectIdentity.FIELD_NAME]}};function mxDictionary(){this.clear()}mxDictionary.prototype.map=null,mxDictionary.prototype.clear=function(){this.map={}},mxDictionary.prototype.get=function(e){return e=mxObjectIdentity.get(e),this.map[e]},mxDictionary.prototype.put=function(e,n){var t=mxObjectIdentity.get(e),a=this.map[t];return this.map[t]=n,a},mxDictionary.prototype.remove=function(e){e=mxObjectIdentity.get(e);var n=this.map[e];return delete this.map[e],n},mxDictionary.prototype.getKeys=function(){var e,n=[];for(e in this.map)n.push(e);return n},mxDictionary.prototype.getValues=function(){var e,n=[];for(e in this.map)n.push(this.map[e]);return n},mxDictionary.prototype.visit=function(e){for(var n in this.map)e(n,this.map[n])};var mxResources={resources:[],extension:mxResourceExtension,resourcesEncoded:!1,loadDefaultBundle:!0,loadSpecialBundle:!0,isLanguageSupported:function(e){return null==mxClient.languages||0<=mxUtils.indexOf(mxClient.languages,e)},getDefaultBundle:function(e,n){return mxResources.loadDefaultBundle||!mxResources.isLanguageSupported(n)?e+mxResources.extension:null},getSpecialBundle:function(e,n){if(null==mxClient.languages||!this.isLanguageSupported(n)){var t=n.indexOf("-");0<t&&(n=n.substring(0,t))}return mxResources.loadSpecialBundle&&mxResources.isLanguageSupported(n)&&n!=mxClient.defaultLanguage?e+"_"+n+mxResources.extension:null},add:function(e,n){if((n=null!=n?n:mxClient.language)!=mxConstants.NONE){var t=mxResources.getDefaultBundle(e,n);if(null!=t)try{var a=mxUtils.load(t);a.isReady()&&mxResources.parse(a.getText())}catch(e){}if(null!=(t=mxResources.getSpecialBundle(e,n)))try{(a=mxUtils.load(t)).isReady()&&mxResources.parse(a.getText())}catch(e){}}},parse:function(e){if(null!=e){e=e.split("\n");for(var n=0;n<e.length;n++)if("#"!=e[n].charAt(0)){var t=e[n].indexOf("=");if(0<t){var a=e[n].substring(0,t),i=e[n].length;13==e[n].charCodeAt(i-1)&&i--,t=e[n].substring(t+1,i),this.resourcesEncoded?(t=t.replace(/\\(?=u[a-fA-F\d]{4})/g,"%"),mxResources.resources[a]=unescape(t)):mxResources.resources[a]=t}}}},get:function(e,n,t){if(null==(e=mxResources.resources[e])&&(e=t),null!=e&&null!=n){t=[];for(var a=null,i=0;i<e.length;i++){var s=e.charAt(i);"{"==s?a="":null!=a&&"}"==s?(0<=(a=parseInt(a)-1)&&a<n.length&&t.push(n[a]),a=null):null!=a?a+=s:t.push(s)}e=t.join("")}return e}};function mxPoint(e,n){this.x=null!=e?e:0,this.y=null!=n?n:0}function mxRectangle(e,n,t,a){mxPoint.call(this,e,n),this.width=null!=t?t:0,this.height=null!=a?a:0}mxPoint.prototype.x=null,mxPoint.prototype.y=null,mxPoint.prototype.equals=function(e){return e.x==this.x&&e.y==this.y},mxPoint.prototype.clone=function(){return mxUtils.clone(this)},mxRectangle.prototype=new mxPoint,mxRectangle.prototype.constructor=mxRectangle,mxRectangle.prototype.width=null,mxRectangle.prototype.height=null,mxRectangle.prototype.setRect=function(e,n,t,a){this.x=e,this.y=n,this.width=t,this.height=a},mxRectangle.prototype.getCenterX=function(){return this.x+this.width/2},mxRectangle.prototype.getCenterY=function(){return this.y+this.height/2},mxRectangle.prototype.add=function(e){if(null!=e){var n=Math.min(this.x,e.x),t=Math.min(this.y,e.y),a=Math.max(this.x+this.width,e.x+e.width);e=Math.max(this.y+this.height,e.y+e.height),this.x=n,this.y=t,this.width=a-n,this.height=e-t}},mxRectangle.prototype.grow=function(e){this.x-=e,this.y-=e,this.width+=2*e,this.height+=2*e},mxRectangle.prototype.getPoint=function(){return new mxPoint(this.x,this.y)},mxRectangle.prototype.equals=function(e){return e.x==this.x&&e.y==this.y&&e.width==this.width&&e.height==this.height};var mxEffects={animateChanges:function(l,d,c){var m=0,u=function(){for(var e=!1,n=0;n<d.length;n++){var t=d[n];if(t instanceof mxGeometryChange||t instanceof mxTerminalChange||t instanceof mxValueChange||t instanceof mxChildChange||t instanceof mxStyleChange){var a=l.getView().getState(t.cell||t.child,!1);if(null!=a)if(e=!0,t.constructor!=mxGeometryChange||l.model.isEdge(t.cell))mxUtils.setOpacity(a.shape.node,100*m/10);else{var i=l.getView().scale,s=(t.geometry.x-t.previous.x)*i,o=(t.geometry.y-t.previous.y)*i,r=(t.geometry.width-t.previous.width)*i;i=(t.geometry.height-t.previous.height)*i;0==m?(a.x-=s,a.y-=o,a.width-=r,a.height-=i):(a.x+=s/10,a.y+=o/10,a.width+=r/10,a.height+=i/10),l.cellRenderer.redraw(a),mxEffects.cascadeOpacity(l,t.cell,100*m/10)}}}m<10&&e?(m++,window.setTimeout(u,p)):null!=c&&c()},p=30;u()},cascadeOpacity:function(e,n,t){for(var a=e.model.getChildCount(n),i=0;i<a;i++){var s=e.model.getChildAt(n,i),o=e.getView().getState(s);null!=o&&(mxUtils.setOpacity(o.shape.node,t),mxEffects.cascadeOpacity(e,s,t))}if(null!=(n=e.model.getEdges(n)))for(i=0;i<n.length;i++)null!=(a=e.getView().getState(n[i]))&&mxUtils.setOpacity(a.shape.node,t)},fadeOut:function(e,n,t,a,i,s){a=a||40,i=i||30;var o=n||100;if(mxUtils.setOpacity(e,o),s||null==s){var r=function(){o=Math.max(o-a,0),mxUtils.setOpacity(e,o),0<o?window.setTimeout(r,i):(e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e))};window.setTimeout(r,i)}else e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e)}},mxUtils={errorResource:"none"!=mxClient.language?"error":"",closeResource:"none"!=mxClient.language?"close":"",errorImage:mxClient.imageBasePath+"/error.gif",removeCursors:function(e){if(null!=e.style&&(e.style.cursor=""),null!=(e=e.childNodes))for(var n=e.length,t=0;t<n;t+=1)mxUtils.removeCursors(e[t])},getCurrentStyle:mxClient.IS_IE?function(e){return null!=e?e.currentStyle:null}:function(e){return null!=e?window.getComputedStyle(e,""):null},hasScrollbars:function(e){return null!=(e=mxUtils.getCurrentStyle(e))&&("scroll"==e.overflow||"auto"==e.overflow)},bind:function(e,n){return function(){return n.apply(e,arguments)}},eval:function(a){var b=null;if(0<=a.indexOf("function"))try{eval("var _mxJavaScriptExpression="+a),b=_mxJavaScriptExpression,_mxJavaScriptExpression=null}catch(e){mxLog.warn(e.message+" while evaluating "+a)}else try{b=eval(a)}catch(e){mxLog.warn(e.message+" while evaluating "+a)}return b},findNode:function(e,n,t){var a=e.getAttribute(n);if(null!=a&&a==t)return e;for(e=e.firstChild;null!=e;){if(null!=(a=mxUtils.findNode(e,n,t)))return a;e=e.nextSibling}return null},findNodeByAttribute:9<=document.documentMode?function(e,n,t){var a=null;if(null!=e)if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&e.getAttribute(n)==t)a=e;else for(e=e.firstChild;null!=e&&null==a;)a=mxUtils.findNodeByAttribute(e,n,t),e=e.nextSibling;return a}:mxClient.IS_IE?function(e,n,t){return null==e?null:e.ownerDocument.selectSingleNode("//*[@"+n+"='"+t+"']")}:function(e,n,t){return null==e?null:e.ownerDocument.evaluate("//*[@"+n+"='"+t+"']",e.ownerDocument,null,XPathResult.ANY_TYPE,null).iterateNext()},getFunctionName:function(e){var n=null;if(null!=e)if(null!=e.name)n=e.name;else{for(e=e.toString(),n=9;" "==e.charAt(n);)n++;var t=e.indexOf("(",n);n=e.substring(n,t)}return n},indexOf:function(e,n){if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n)return t;return-1},remove:function(e,n){var t=null;if("object"==typeof n)for(var a=mxUtils.indexOf(n,e);0<=a;)n.splice(a,1),t=e,a=mxUtils.indexOf(n,e);for(var i in n)n[i]==e&&(delete n[i],t=e);return t},isNode:function(e,n,t,a){return!(null==e||isNaN(e.nodeType)||null!=n&&e.nodeName.toLowerCase()!=n.toLowerCase())&&(null==t||e.getAttribute(t)==a)},getChildNodes:function(e,n){n=n||mxConstants.NODETYPE_ELEMENT;for(var t=[],a=e.firstChild;null!=a;)a.nodeType==n&&t.push(a),a=a.nextSibling;return t},createXmlDocument:function(){var e=null;return document.implementation&&document.implementation.createDocument?e=document.implementation.createDocument("","",null):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLDOM")),e},parseXml:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){var n=mxUtils.createXmlDocument();return n.async="false",n.loadXML(e),n}:function(e){return(new DOMParser).parseFromString(e,"text/xml")},clearSelection:document.selection?function(){document.selection.empty()}:window.getSelection?function(){window.getSelection().removeAllRanges()}:void 0,getPrettyXml:function(e,n,t){var a=[];if(null!=e)if(n=n||"  ",t=t||"",e.nodeType==mxConstants.NODETYPE_TEXT)a.push(e.nodeValue);else{a.push(t+"<"+e.nodeName);var i=e.attributes;if(null!=i)for(var s=0;s<i.length;s++){var o=mxUtils.htmlEntities(i[s].nodeValue);a.push(" "+i[s].nodeName+'="'+o+'"')}if(null!=(i=e.firstChild)){for(a.push(">\n");null!=i;)a.push(mxUtils.getPrettyXml(i,n,t+n)),i=i.nextSibling;a.push(t+"</"+e.nodeName+">\n")}else a.push("/>\n")}return a.join("")},removeWhitespace:function(e,n){for(var t=n?e.previousSibling:e.nextSibling;null!=t&&t.nodeType==mxConstants.NODETYPE_TEXT;){var a=n?t.previousSibling:t.nextSibling,i=mxUtils.getTextContent(t);0==mxUtils.trim(i).length&&t.parentNode.removeChild(t),t=a}},htmlEntities:function(e,n){return e=(e=(e=(e=(e=(e||"").replace(/&/g,"&amp;")).replace(/"/g,"&quot;")).replace(/\'/g,"&#39;")).replace(/</g,"&lt;")).replace(/>/g,"&gt;"),(null==n||n)&&(e=e.replace(/\n/g,"&#xa;")),e},isVml:function(e){return null!=e&&"urn:schemas-microsoft-com:vml"==e.tagUrn},getXml:function(e,n){var t="";return null!=e&&(t=null==(t=e.xml)?e.innerHTML?e.innerHTML:(new XMLSerializer).serializeToString(e):t.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n")),t.replace(/\n/g,n||"&#xa;")},getTextContent:function(e){var n="";return null!=e&&(null!=e.firstChild&&(e=e.firstChild),n=e.nodeValue||""),n},getInnerHtml:mxClient.IS_IE?function(e){return null!=e?e.innerHTML:""}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},getOuterHtml:mxClient.IS_IE?function(e){if(null==e)return"";if(null!=e.outerHTML)return e.outerHTML;var n=[];n.push("<"+e.nodeName);var t=e.attributes;if(null!=t)for(var a=0;a<t.length;a++){var i=t[a].nodeValue;null!=i&&0<i.length&&(n.push(" "),n.push(t[a].nodeName),n.push('="'),n.push(i),n.push('"'))}return 0==e.innerHTML.length?n.push("/>"):(n.push(">"),n.push(e.innerHTML),n.push("</"+e.nodeName+">")),n.join("")}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},write:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&e.appendChild(t),t},writeln:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&(e.appendChild(t),e.appendChild(document.createElement("br"))),t},br:function(e,n){n=n||1;for(var t=null,a=0;a<n;a++)null!=e&&(t=e.ownerDocument.createElement("br"),e.appendChild(t));return t},button:function(e,n,t){return t=(t=null!=t?t:document).createElement("button"),mxUtils.write(t,e),mxEvent.addListener(t,"click",function(e){n(e)}),t},para:function(e,n){var t=document.createElement("p");return mxUtils.write(t,n),null!=e&&e.appendChild(t),t},addTransparentBackgroundFilter:function(e){e.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(e,n,t,a,i){return mxUtils.link(e,n,function(){t.execute(a)},i)},linkInvoke:function(e,n,t,a,i,s){return mxUtils.link(e,n,function(){t[a](i)},s)},link:function(e,n,t,a){var i=document.createElement("span");return i.style.color="blue",i.style.textDecoration="underline",i.style.cursor="pointer",null!=a&&(i.style.paddingLeft=a+"px"),mxEvent.addListener(i,"click",t),mxUtils.write(i,n),null!=e&&e.appendChild(i),i},fit:function(e){var n=parseInt(e.offsetLeft),t=parseInt(e.offsetWidth),a=document.body,i=document.documentElement,s=(a.scrollLeft||i.scrollLeft)+(a.clientWidth||i.clientWidth);s<n+t&&(e.style.left=Math.max(a.scrollLeft||i.scrollLeft,s-t)+"px"),n=parseInt(e.offsetTop),t=parseInt(e.offsetHeight),(s=(a.scrollTop||i.scrollTop)+Math.max(a.clientHeight||0,i.clientHeight))<n+t&&(e.style.top=Math.max(a.scrollTop||i.scrollTop,s-t)+"px")},open:function(e){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return mxUtils.alert("Permission to read file denied."),""}var n=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);return n.initWithPath(e),n.exists()?((e=Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream)).init(n,1,4,null),(n=Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream)).init(e),n.read(n.available())):(mxUtils.alert("File not found."),"")}return e=(n=new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(e,1)).readAll(),n.close(),e},save:function(e,n){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return void mxUtils.alert("Permission to write file denied.")}var t=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);t.initWithPath(e),t.exists()||t.create(0,420);var a=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);a.init(t,34,4,null),a.write(n,n.length),a.flush(),a.close()}else(t=new ActiveXObject("Scripting.FileSystemObject").CreateTextFile(e,!0)).Write(n),t.Close()},saveAs:function(e){var n=document.createElement("iframe");n.setAttribute("src",""),n.style.visibility="hidden",document.body.appendChild(n);try{if(mxClient.IS_NS){var t=n.contentDocument;t.open(),t.write(e),t.close();try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"),n.focus(),saveDocument(t)}catch(e){mxUtils.alert("Permission to save document denied.")}}else(t=n.contentWindow.document).write(e),t.execCommand("SaveAs",!1,document.location)}finally{document.body.removeChild(n)}},copy:function(e){if(window.clipboardData)window.clipboardData.setData("Text",e);else{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");var n=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);if(n){var t=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(t){t.addDataFlavor("text/unicode");var a=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);a.data=e,t.setTransferData("text/unicode",a,2*e.length),n.setData(t,null,Components.interfaces.nsIClipboard.kGlobalClipboard)}}}},load:function(e){return(e=new mxXmlRequest(e,null,"GET",!1)).send(),e},get:function(e,n,t){return new mxXmlRequest(e,null,"GET").send(n,t)},post:function(e,n,t,a){return new mxXmlRequest(e,n).send(t,a)},submit:function(e,n,t,a){return new mxXmlRequest(e,n).simulate(t,a)},loadInto:function(e,n,t){mxClient.IS_IE?n.onreadystatechange=function(){4==n.readyState&&t()}:n.addEventListener("load",t,!1),n.load(e)},getValue:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t),e},getNumber:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t||0),Number(e)},getColor:function(e,n,t){return null==(e=null!=e?e[n]:null)?e=t:e==mxConstants.NONE&&(e=null),e},clone:function(e,n,t){t=null!=t&&t;var a=null;if(null!=e&&"function"==typeof e.constructor){var i;a=new e.constructor;for(i in e)i!=mxObjectIdentity.FIELD_NAME&&(null==n||mxUtils.indexOf(n,i)<0)&&(a[i]=t||"object"!=typeof e[i]?e[i]:mxUtils.clone(e[i]))}return a},equalPoints:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n[t]||null!=e[t]&&!e[t].equals(n[t]))return!1;return!0},equalEntries:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t in e)if(e[t]!=n[t])return!1;return!0},extend:function(e,n){var t=function(){};t.prototype=n.prototype,e.prototype=new t,e.prototype.constructor=e},toString:function(e){var n,t="";for(n in e)try{if(null==e[n])t+=n+" = [null]\n";else if("function"==typeof e[n])t+=n+" => [Function]\n";else if("object"==typeof e[n])t=t+(n+" => [")+mxUtils.getFunctionName(e[n].constructor)+"]\n";else t+=n+" = "+e[n]+"\n"}catch(e){t+=n+"="+e.message}return t},toRadians:function(e){return Math.PI*e/180},arcToCurves:function(e,n,t,a,i,s,o,r,l){if(r-=e,l-=n,0===t||0===a)return h;t=Math.abs(t),a=Math.abs(a);var d=-r/2,c=-l/2,m=Math.cos(i*Math.PI/180);i=m*d+(h=Math.sin(i*Math.PI/180))*c;d=-1*h*d+m*c;r=m*(c=(s=1<(v=(c=i*i)/(g=t*t)+(p=d*d)/(A=a*a))?(t*=Math.sqrt(v),a*=Math.sqrt(v),0):(v=1,s===o&&(v=-1),v*Math.sqrt((g*A-g*p-A*c)/(g*p+A*c))))*t*d/a)-h*(p=-1*s*a*i/t)+r/2,l=h*c+m*p+l/2,s=0<=(g=Math.atan2((d-p)/a,(i-c)/t)-Math.atan2(0,1))?g:2*Math.PI+g,i=0<=(g=Math.atan2((-d-p)/a,(-i-c)/t)-Math.atan2((d-p)/a,(i-c)/t))?g:2*Math.PI+g,0==o&&0<i?i-=2*Math.PI:0!=o&&i<0&&(i+=2*Math.PI),o=2*i/Math.PI,i/=o=Math.ceil(o<0?-1*o:o),d=8/3*Math.sin(i/4)*Math.sin(i/4)/Math.sin(i/2),c=m*t,m*=a,t*=h,a*=h;for(var u=Math.cos(s),p=-d*(c*(b=Math.sin(s))+a*u),g=-d*(t*b-m*u),v=A=0,h=[],f=0;f<o;++f){s+=i;var b,A=c*(u=Math.cos(s))-a*(b=Math.sin(s))+r,E=(v=t*u+m*b+l,-d*(c*b+a*u));u=-d*(t*b-m*u);h[b=6*f]=Number(p+e),h[b+1]=Number(g+n),h[b+2]=Number(A-E+e),h[b+3]=Number(v-u+n),h[b+4]=Number(A+e),h[b+5]=Number(v+n),p=A+E,g=v+u}return h},getBoundingBox:function(e,n){var t=null;if(null!=e&&null!=n&&0!=n){var a=mxUtils.toRadians(n),i=(t=Math.cos(a),Math.sin(a)),s=new mxPoint(e.x+e.width/2,e.y+e.height/2),o=new mxPoint(e.x,e.y),r=new mxPoint((a=new mxPoint(e.x+e.width,e.y)).x,e.y+e.height),l=new mxPoint(e.x,r.y);o=mxUtils.getRotatedPoint(o,t,i,s),a=mxUtils.getRotatedPoint(a,t,i,s),r=mxUtils.getRotatedPoint(r,t,i,s),l=mxUtils.getRotatedPoint(l,t,i,s);(t=new mxRectangle(o.x,o.y,0,0)).add(new mxRectangle(a.x,a.y,0,0)),t.add(new mxRectangle(r.x,r.y,0,0)),t.add(new mxRectangle(l.x,l.y,0,0))}return t},getRotatedPoint:function(e,n,t,a){a=null!=a?a:new mxPoint;var i=e.x-a.x;return new mxPoint(i*n-(e=e.y-a.y)*t+a.x,e*n+i*t+a.y)},getPortConstraints:function(e,n,t,a){return null==(e=mxUtils.getValue(e.style,mxConstants.STYLE_PORT_CONSTRAINT,null))?a:(a=e.toString(),e=mxConstants.DIRECTION_MASK_NONE,0<=a.indexOf(mxConstants.DIRECTION_NORTH)&&(e|=mxConstants.DIRECTION_MASK_NORTH),0<=a.indexOf(mxConstants.DIRECTION_WEST)&&(e|=mxConstants.DIRECTION_MASK_WEST),0<=a.indexOf(mxConstants.DIRECTION_SOUTH)&&(e|=mxConstants.DIRECTION_MASK_SOUTH),0<=a.indexOf(mxConstants.DIRECTION_EAST)&&(e|=mxConstants.DIRECTION_MASK_EAST),e)},reversePortConstraints:function(e){return(e&mxConstants.DIRECTION_MASK_WEST)<<3|(e&mxConstants.DIRECTION_MASK_NORTH)<<1|(e&mxConstants.DIRECTION_MASK_SOUTH)>>1|(e&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(e,n,t){var a=-1;if(0<e.absolutePoints.length)for(var i=e.absolutePoints[0],s=null,o=1;o<e.absolutePoints.length;o++){var r=e.absolutePoints[o];i=mxUtils.ptSegDistSq(i.x,i.y,r.x,r.y,n,t);(null==s||i<s)&&(s=i,a=o-1),i=r}return a},rectangleIntersectsSegment:function(e,n,t){var a=e.y,i=e.x,s=a+e.height,o=i+e.width;e=n.x;var r=t.x;if(n.x>t.x&&(e=t.x,r=n.x),o<r&&(r=o),e<i&&(e=i),r<e)return!1;i=n.y,o=t.y;var l=t.x-n.x;return 1e-7<Math.abs(l)&&(i=(t=(t.y-n.y)/l)*e+(n=n.y-t*n.x),o=t*r+n),o<i&&(n=o,o=i,i=n),s<o&&(o=s),i<a&&(i=a),!(o<i)},contains:function(e,n,t){return e.x<=n&&e.x+e.width>=n&&e.y<=t&&e.y+e.height>=t},intersects:function(e,n){var t=e.width,a=e.height,i=n.width,s=n.height;if(i<=0||s<=0||t<=0||a<=0)return!1;var o=e.x,r=e.y,l=n.x,d=n.y;s+=d,t+=o,a+=r;return((i=i+l)<l||o<i)&&(s<d||r<s)&&(t<o||l<t)&&(a<r||d<a)},intersectsHotspot:function(e,n,t,a,i,s){if(i=null!=i?i:0,s=null!=s?s:0,0<(a=null!=a?a:1)){var o=e.getCenterX(),r=e.getCenterY(),l=e.width,d=e.height,c=mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE)*e.view.scale;return 0<c&&(mxUtils.getValue(e.style,mxConstants.STYLE_HORIZONTAL,!0)?(r=e.y+c/2,d=c):(o=e.x+c/2,l=c)),l=Math.max(i,l*a),d=Math.max(i,d*a),0<s&&(l=Math.min(l,s),d=Math.min(d,s)),a=new mxRectangle(o-l/2,r-d/2,l,d),0!=(o=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(i=Math.cos(-o),s=Math.sin(-o),o=new mxPoint(e.getCenterX(),e.getCenterY()),n=(e=mxUtils.getRotatedPoint(new mxPoint(n,t),i,s,o)).x,t=e.y),mxUtils.contains(a,n,t)}return!0},getOffset:function(e,n){var t=0,a=0;if(null!=n&&n){var i=document.body,s=document.documentElement;t=t+(i.scrollLeft||s.scrollLeft),a=a+(i.scrollTop||s.scrollTop)}for(;e.offsetParent;)t+=e.offsetLeft,a+=e.offsetTop,e=e.offsetParent;return new mxPoint(t,a)},getScrollOrigin:function(e){for(var n=document.body,t=document.documentElement,a=new mxPoint(n.scrollLeft||t.scrollLeft,n.scrollTop||t.scrollTop);null!=e&&e!=n&&e!=t;)!isNaN(e.scrollLeft)&&!isNaN(e.scrollTop)&&(a.x+=e.scrollLeft,a.y+=e.scrollTop),e=e.parentNode;return a},convertPoint:function(e,n,t){var a=mxUtils.getScrollOrigin(e);return(e=mxUtils.getOffset(e)).x-=a.x,e.y-=a.y,new mxPoint(n-e.x,t-e.y)},ltrim:function(e,n){return e.replace(RegExp("^["+(n||"\\s")+"]+","g"),"")},rtrim:function(e,n){return e.replace(RegExp("["+(n||"\\s")+"]+$","g"),"")},trim:function(e,n){return mxUtils.ltrim(mxUtils.rtrim(e,n),n)},isNumeric:function(e){return null!=e&&(null==e.length||0<e.length&&e.indexOf("0x")<0&&e.indexOf("0X")<0)&&!isNaN(e)},mod:function(e,n){return(e%n+n)%n},intersection:function(e,n,t,a,i,s,o,r){var l=(r-s)*(t-e)-(o-i)*(a-n);return o=((o-i)*(n-s)-(r-s)*(e-i))/l,i=((t-e)*(n-s)-(a-n)*(e-i))/l,0<=o&&o<=1&&0<=i&&i<=1?new mxPoint(e+o*(t-e),n+o*(a-n)):null},ptSegDistSq:function(e,n,t,a,i,s){return t=(i-=e)*(t-=e)+(s-=n)*(a-=n)<=0?0:(e=(i=t-i)*t+(s=a-s)*a)<=0?0:e*e/(t*t+a*a),(i=i*i+s*s-t)<0&&(i=0),i},relativeCcw:function(e,n,t,a,i,s){return 0==(e=(i-=e)*(a-=n)-(s-=n)*(t-=e))&&(0<(e=i*t+s*a)&&((e=(i-t)*t+(s-a)*a)<0&&(e=0))),e<0?-1:0<e?1:0},animateChanges:function(e,n){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(e,n,t){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(e,n,t,a,i,s){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(e,n){mxUtils.isVml(e)?e.style.filter=100<=n?null:"alpha(opacity="+n/5+")":mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?e.style.filter=100<=n?null:"alpha(opacity="+n+")":e.style.opacity=n/100},createImage:function(e){var n=null;return mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?((n=document.createElement(mxClient.VML_PREFIX+":image")).setAttribute("src",e),n.style.borderStyle="none"):((n=document.createElement("img")).setAttribute("src",e),n.setAttribute("border","0")),n},sortCells:function(e,i){i=null==i||i;var s=new mxDictionary;return e.sort(function(e,n){var t=s.get(e);null==t&&(t=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),s.put(e,t));var a=s.get(n);return null==a&&(a=mxCellPath.create(n).split(mxCellPath.PATH_SEPARATOR),s.put(n,a)),0==(t=mxCellPath.compare(t,a))?0:0<t==i?1:-1}),e},getStylename:function(e){return null!=e&&(e=e.split(";")[0]).indexOf("=")<0?e:""},getStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)e[t].indexOf("=")<0&&n.push(e[t])}return n},indexOfStylename:function(e,n){if(null!=e&&null!=n)for(var t=e.split(";"),a=0,i=0;i<t.length;i++){if(t[i]==n)return a;a+=t[i].length+1}return-1},addStylename:function(e,n){return mxUtils.indexOfStylename(e,n)<0&&(null==e?e="":0<e.length&&";"!=e.charAt(e.length-1)&&(e+=";"),e+=n),e},removeStylename:function(e,n){var t=[];if(null!=e)for(var a=e.split(";"),i=0;i<a.length;i++)a[i]!=n&&t.push(a[i]);return t.join(";")},removeAllStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)0<=e[t].indexOf("=")&&n.push(e[t])}return n.join(";")},setCellStyles:function(e,n,t,a){if(null!=n&&0<n.length){e.beginUpdate();try{for(var i=0;i<n.length;i++)if(null!=n[i]){var s=mxUtils.setStyle(e.getStyle(n[i]),t,a);e.setStyle(n[i],s)}}finally{e.endUpdate()}}},setStyle:function(e,n,t){var a=null!=t&&(void 0===t.length||0<t.length);if(null==e||0==e.length)a&&(e=n+"="+t);else{var i=e.indexOf(n+"=");i<0?a&&(a=";"==e.charAt(e.length-1)?"":";",e=e+a+n+"="+t):(n=a?n+"="+t:"",t=e.indexOf(";",i),a||t++,e=e.substring(0,i)+n+(i<t?e.substring(t):""))}return e},setCellStyleFlags:function(e,n,t,a,i){if(null!=n&&0<n.length){e.beginUpdate();try{for(var s=0;s<n.length;s++)if(null!=n[s]){var o=mxUtils.setStyleFlag(e.getStyle(n[s]),t,a,i);e.setStyle(n[s],o)}}finally{e.endUpdate()}}},setStyleFlag:function(e,n,t,a){if(null==e||0==e.length)e=a||null==a?n+"="+t:n+"=0";else{var i=e.indexOf(n+"=");if(i<0)i=";"==e.charAt(e.length-1)?"":";",e=a||null==a?e+i+n+"="+t:e+i+n+"=0";else{var s=e.indexOf(";",i),o="";o=s<0?e.substring(i+n.length+1):e.substring(i+n.length+1,s),o=null==a?parseInt(o)^t:a?parseInt(o)|t:parseInt(o)&~t;e=e.substring(0,i)+n+"="+o+(0<=s?e.substring(s):"")}}return e},getAlignmentAsPoint:function(e,n){var t=0,a=0;return e==mxConstants.ALIGN_CENTER?t=-.5:e==mxConstants.ALIGN_RIGHT&&(t=-1),n==mxConstants.ALIGN_MIDDLE?a=-.5:n==mxConstants.ALIGN_BOTTOM&&(a=-1),new mxPoint(t,a)},getSizeForString:function(e,n,t){n=null!=n?n:mxConstants.DEFAULT_FONTSIZE,t=null!=t?t:mxConstants.DEFAULT_FONTFAMILY;var a=document.createElement("div");return a.style.fontFamily=t,a.style.fontSize=Math.round(n)+"px",a.style.lineHeight=Math.round(n*mxConstants.LINE_HEIGHT)+"px",a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,document.body.appendChild(a),e=new mxRectangle(0,0,a.offsetWidth,a.offsetHeight),document.body.removeChild(a),e},getViewXml:function(e,n,t,a,i){a=null!=a?a:0,i=null!=i?i:0,n=null!=n?n:1,null==t&&(t=[e.getModel().getRoot()]);var s=e.getView(),o=null,r=s.isEventsEnabled();s.setEventsEnabled(!1);var l=s.drawPane,d=s.overlayPane;e.dialect==mxConstants.DIALECT_SVG?(s.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),s.canvas.appendChild(s.drawPane),s.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(s.drawPane=s.drawPane.cloneNode(!1),s.canvas.appendChild(s.drawPane),s.overlayPane=s.overlayPane.cloneNode(!1)),s.canvas.appendChild(s.overlayPane);var c=s.getTranslate();s.translate=new mxPoint(a,i),n=new mxTemporaryCellStates(e.getView(),n,t);try{o=(new mxCodec).encode(e.getView())}finally{n.destroy(),s.translate=c,s.canvas.removeChild(s.drawPane),s.canvas.removeChild(s.overlayPane),s.drawPane=l,s.overlayPane=d,s.setEventsEnabled(r)}return o},getScaleForPageCount:function(e,n,t,a){if(e<1)return 1;a=null!=a?a:0;var i=(t=null!=t?t:mxConstants.PAGE_FORMAT_A4_PORTRAIT).width-2*a;t=t.height-2*a,a=n.getGraphBounds().clone(),n=n.getView().getScale(),a.width/=n,a.height/=n,t=(n=a.width)/a.height/(i/t),a=Math.sqrt(e);var s=Math.sqrt(t);if(t=a*s,a/=s,t<1&&e<a){var o=a/e;a=e,t/=o}for(a<1&&e<t&&(o=t/e,t=e,a/=o),o=Math.ceil(t)*Math.ceil(a),s=0;e<o;){o=Math.floor(t)/t;var r=Math.floor(a)/a;if(1==o&&(o=Math.floor(t-1)/t),1==r&&(r=Math.floor(a-1)/a),t*=o=r<o?o:r,a*=o,o=Math.ceil(t)*Math.ceil(a),10<++s)break}return i*t/n*.99999},show:function(e,n,t,a){if(t=null!=t?t:0,a=null!=a?a:0,null==n?n=window.open().document:n.open(),t=-(i=e.getGraphBounds()).x+t,a=-i.y+a,mxClient.IS_IE){for(var i="<html><head>",s=document.getElementsByTagName("base"),o=0;o<s.length;o++)i+=s[o].outerHTML;for(i+="<style>",o=0;o<document.styleSheets.length;o++)try{i+=document.styleSheets(o).cssText}catch(e){}i+="</style></head>",i+="<body>",i+=e.container.innerHTML,i+="</body>",i+="<html>",n.writeln(i),n.close(),null!=(e=n.body.getElementsByTagName("DIV")[0])&&(e.style.position="absolute",e.style.left=t+"px",e.style.top=a+"px")}else{for(n.writeln("<html"),n.writeln("<head>"),s=document.getElementsByTagName("base"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("link"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("style"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(n.writeln("</head>"),n.writeln("</html>"),n.close(),null==n.body&&n.documentElement.appendChild(n.createElement("body")),n.body.style.overflow="auto",e=e.container.firstChild;null!=e;)o=e.cloneNode(!0),n.body.appendChild(o),e=e.nextSibling;null!=(e=n.getElementsByTagName("g")[0])&&(e.setAttribute("transform","translate("+t+","+a+")"),(t=e.ownerSVGElement).setAttribute("width",i.width+Math.max(i.x,0)+3),t.setAttribute("height",i.height+Math.max(i.y,0)+3))}return mxUtils.removeCursors(n.body),n},printScreen:function(e){var n=window.open();mxUtils.show(e,n.document),e=function(){n.focus(),n.print(),n.close()},mxClient.IS_GC?n.setTimeout(e,500):e()},popup:function(e,n){if(n){var t=document.createElement("div");t.style.overflow="scroll",t.style.width="636px",t.style.height="460px";var a=document.createElement("pre");a.innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.appendChild(a),(t=new mxWindow("Popup Window",t,document.body.clientWidth/2-320,(document.body.clientHeight||document.documentElement.clientHeight)/2-240,640,480,!1,!0)).setClosable(!0),t.setVisible(!0)}else mxClient.IS_NS?((t=window.open()).document.writeln("<pre>"+mxUtils.htmlEntities(e)+"</pre"),t.document.close()):((a=(t=window.open()).document.createElement("pre")).innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.document.body.appendChild(a))},alert:function(e){alert(e)},prompt:function(e,n){return prompt(e,n)},confirm:function(e){return confirm(e)},error:function(e,n,t,a){var i=document.createElement("div");i.style.padding="20px";var s=document.createElement("img");s.setAttribute("src",a||mxUtils.errorImage),s.setAttribute("valign","bottom"),s.style.verticalAlign="middle",i.appendChild(s),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),mxUtils.write(i,e),e=document.body.clientWidth,a=document.body.clientHeight||document.documentElement.clientHeight;var o=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,i,(e-n)/2,a/4,n,null,!1,!0);return t&&(mxUtils.br(i),n=document.createElement("p"),t=document.createElement("button"),mxClient.IS_IE?t.style.cssText="float:right":t.setAttribute("style","float:right"),mxEvent.addListener(t,"click",function(e){o.destroy()}),mxUtils.write(t,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),n.appendChild(t),i.appendChild(n),mxUtils.br(i),o.setClosable(!0)),o.setVisible(!0),o},makeDraggable:function(e,n,t,i,a,s,o,r,l,d){return(e=new mxDragSource(e,t)).dragOffset=new mxPoint(null!=a?a:0,null!=s?s:mxConstants.TOOLTIP_VERTICAL_OFFSET),e.autoscroll=o,e.setGuidesEnabled(!1),null!=l&&(e.highlightDropTargets=l),null!=d&&(e.getDropTarget=d),e.getGraphForEvent=function(e){return"function"==typeof n?n(e):n},null!=i&&(e.createDragElement=function(){return i.cloneNode(!0)},r&&(e.createPreviewElement=function(e){var n=i.cloneNode(!0),t=parseInt(n.style.width),a=parseInt(n.style.height);return n.style.width=Math.round(t*e.view.scale)+"px",n.style.height=Math.round(a*e.view.scale)+"px",n})),e}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",HIGHLIGHT_STROKEWIDTH:3,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_BEND_HANDLE:"pointer",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:7,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,LINE_HEIGHT:1.2,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,ARROW_SPACING:10,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,826,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,826),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_OPACITY:"opacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_OVERFLOW:"overflow",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_SMOOTH:"smooth",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_LOOP:"loopStyle",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_SHADOW:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_BLOCK:"block",ARROW_OPEN:"open",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(e){this.name=e,this.properties=[];for(var n=1;n<arguments.length;n+=2)null!=arguments[n+1]&&(this.properties[arguments[n]]=arguments[n+1])}function mxMouseEvent(e,n){this.evt=e,this.state=n}function mxEventSource(e){this.setEventSource(e)}mxEventObject.prototype.name=null,mxEventObject.prototype.properties=null,mxEventObject.prototype.consumed=!1,mxEventObject.prototype.getName=function(){return this.name},mxEventObject.prototype.getProperties=function(){return this.properties},mxEventObject.prototype.getProperty=function(e){return this.properties[e]},mxEventObject.prototype.isConsumed=function(){return this.consumed},mxEventObject.prototype.consume=function(){this.consumed=!0},mxMouseEvent.prototype.consumed=!1,mxMouseEvent.prototype.evt=null,mxMouseEvent.prototype.graphX=null,mxMouseEvent.prototype.graphY=null,mxMouseEvent.prototype.state=null,mxMouseEvent.prototype.getEvent=function(){return this.evt},mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)},mxMouseEvent.prototype.isSource=function(e){if(null!=e)for(var n=this.getSource();null!=n;){if(n==e.node)return!0;n=n.parentNode}return!1},mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())},mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())},mxMouseEvent.prototype.getGraphX=function(){return this.graphX},mxMouseEvent.prototype.getGraphY=function(){return this.graphY},mxMouseEvent.prototype.getState=function(){return this.state},mxMouseEvent.prototype.getCell=function(){var e=this.getState();return null!=e?e.cell:null},mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())},mxMouseEvent.prototype.isConsumed=function(){return this.consumed},mxMouseEvent.prototype.consume=function(e){(null==e||e)&&this.evt.preventDefault&&this.evt.preventDefault(),this.evt.returnValue=!1,this.consumed=!0},mxEventSource.prototype.eventListeners=null,mxEventSource.prototype.eventsEnabled=!0,mxEventSource.prototype.eventSource=null,mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled},mxEventSource.prototype.setEventsEnabled=function(e){this.eventsEnabled=e},mxEventSource.prototype.getEventSource=function(){return this.eventSource},mxEventSource.prototype.setEventSource=function(e){this.eventSource=e},mxEventSource.prototype.addListener=function(e,n){null==this.eventListeners&&(this.eventListeners=[]),this.eventListeners.push(e),this.eventListeners.push(n)},mxEventSource.prototype.removeListener=function(e){if(null!=this.eventListeners)for(var n=0;n<this.eventListeners.length;)this.eventListeners[n+1]==e?this.eventListeners.splice(n,2):n+=2},mxEventSource.prototype.fireEvent=function(e,n){if(null!=this.eventListeners&&this.isEventsEnabled()){null==e&&(e=new mxEventObject),null==n&&(n=this.getEventSource()),null==n&&(n=this);for(var t=[n,e],a=0;a<this.eventListeners.length;a+=2){var i=this.eventListeners[a];(null==i||i==e.getName())&&this.eventListeners[a+1].apply(this,t)}}};var mxEvent={objects:[],addListener:function(){var a=function(e,n,t){null==e.mxListenerList&&(e.mxListenerList=[],mxEvent.objects.push(e)),e.mxListenerList.push({name:n,f:t})};return window.addEventListener?function(e,n,t){e.addEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.attachEvent("on"+n,t),a(e,n,t)}}(),removeListener:function(){var a=function(e,n,t){if(null!=e.mxListenerList){n=e.mxListenerList.length;for(var a=0;a<n;a++)if(e.mxListenerList[a].f==t){e.mxListenerList.splice(a,1);break}0==e.mxListenerList.length&&(e.mxListenerList=null)}};return window.removeEventListener?function(e,n,t){e.removeEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.detachEvent("on"+n,t),a(e,n,t)}}(),removeAllListeners:function(e){var n=e.mxListenerList;if(null!=n)for(;0<n.length;){var t=n[0];mxEvent.removeListener(e,t.name,t.f)}},addGestureListeners:function(e,n,t,a){null!=n&&mxEvent.addListener(e,"mousedown",n),null!=t&&mxEvent.addListener(e,"mousemove",t),null!=a&&mxEvent.addListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.addListener(e,"touchstart",n),null!=t&&mxEvent.addListener(e,"touchmove",t),null!=a&&mxEvent.addListener(e,"touchend",a))},removeGestureListeners:function(e,n,t,a){null!=n&&mxEvent.removeListener(e,"mousedown",n),null!=t&&mxEvent.removeListener(e,"mousemove",t),null!=a&&mxEvent.removeListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.removeListener(e,"touchstart",n),null!=t&&mxEvent.removeListener(e,"touchmove",t),null!=a&&mxEvent.removeListener(e,"touchend",a))},redirectMouseEvents:function(e,t,n,a,i,s,o){var r=function(e){return"function"==typeof n?n(e):n};mxEvent.addGestureListeners(e,function(e){null!=a?a(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,r(e)))},function(e){null!=i?i(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,r(e)))},function(e){null!=s?s(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,r(e)))}),mxEvent.addListener(e,"dblclick",function(e){if(null!=o)o(e);else if(!mxEvent.isConsumed(e)){var n=r(e);t.dblClick(e,null!=n?n.cell:null)}})},release:function(e){if(null!=e&&(mxEvent.removeAllListeners(e),null!=(e=e.childNodes)))for(var n=e.length,t=0;t<n;t+=1)mxEvent.release(e[t])},addMouseWheelListener:function(t){if(null!=t){var e=function(e){null==e&&(e=window.event);var n=0;0!=(n=!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC?e.wheelDelta/120:-e.detail/2)&&t(e,0<n)};mxClient.IS_NS?mxEvent.addListener(window,mxClient.IS_SF||mxClient.IS_GC?"mousewheel":"DOMMouseScroll",e):mxEvent.addListener(document,"mousewheel",e)}},disableContextMenu:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){mxEvent.addListener(e,"contextmenu",function(){return!1})}:function(e){e.setAttribute("oncontextmenu","return false;")},getSource:function(e){return null!=e.srcElement?e.srcElement:e.target},isConsumed:function(e){return null!=e.isConsumed&&e.isConsumed},isLeftMouseButton:function(e){return e.button==(mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?1:0)},isRightMouseButton:function(e){return 2==e.button},isPopupTrigger:function(e){return mxEvent.isRightMouseButton(e)||mxEvent.isShiftDown(e)&&!mxEvent.isControlDown(e)},isShiftDown:function(e){return null!=e&&e.shiftKey},isAltDown:function(e){return null!=e&&e.altKey},isControlDown:function(e){return null!=e&&e.ctrlKey},isMetaDown:function(e){return null!=e&&e.metaKey},getMainEvent:function(e){return"touchstart"!=e.type&&"touchmove"!=e.type||null==e.touches||null==e.touches[0]?"touchend"==e.type&&null!=e.changedTouches&&null!=e.changedTouches[0]&&(e=e.changedTouches[0]):e=e.touches[0],e},getClientX:function(e){return mxEvent.getMainEvent(e).clientX},getClientY:function(e){return mxEvent.getMainEvent(e).clientY},consume:function(e,n,t){t=null==t||t,(null==n||n)&&(e.preventDefault?(t&&e.stopPropagation(),e.preventDefault()):t&&(e.cancelBubble=!0)),e.isConsumed=!0,e.returnValue=!1},LABEL_HANDLE:-1,ROTATION_HANDLE:-2,MOUSE_DOWN:"mouseDown",MOUSE_MOVE:"mouseMove",MOUSE_UP:"mouseUp",ACTIVATE:"activate",RESIZE_START:"resizeStart",RESIZE:"resize",RESIZE_END:"resizeEnd",MOVE_START:"moveStart",MOVE:"move",MOVE_END:"moveEnd",PAN_START:"panStart",PAN:"pan",PAN_END:"panEnd",MINIMIZE:"minimize",NORMALIZE:"normalize",MAXIMIZE:"maximize",HIDE:"hide",SHOW:"show",CLOSE:"close",DESTROY:"destroy",REFRESH:"refresh",SIZE:"size",SELECT:"select",FIRED:"fired",GET:"get",RECEIVE:"receive",CONNECT:"connect",DISCONNECT:"disconnect",SUSPEND:"suspend",RESUME:"resume",MARK:"mark",SESSION:"session",ROOT:"root",POST:"post",OPEN:"open",SAVE:"save",BEFORE_ADD_VERTEX:"beforeAddVertex",ADD_VERTEX:"addVertex",AFTER_ADD_VERTEX:"afterAddVertex",DONE:"done",EXECUTE:"execute",EXECUTED:"executed",BEGIN_UPDATE:"beginUpdate",START_EDIT:"startEdit",END_UPDATE:"endUpdate",END_EDIT:"endEdit",BEFORE_UNDO:"beforeUndo",UNDO:"undo",REDO:"redo",CHANGE:"change",NOTIFY:"notify",LAYOUT_CELLS:"layoutCells",CLICK:"click",SCALE:"scale",TRANSLATE:"translate",SCALE_AND_TRANSLATE:"scaleAndTranslate",UP:"up",DOWN:"down",ADD:"add",REMOVE:"remove",CLEAR:"clear",ADD_CELLS:"addCells",CELLS_ADDED:"cellsAdded",MOVE_CELLS:"moveCells",CELLS_MOVED:"cellsMoved",RESIZE_CELLS:"resizeCells",CELLS_RESIZED:"cellsResized",TOGGLE_CELLS:"toggleCells",CELLS_TOGGLED:"cellsToggled",ORDER_CELLS:"orderCells",CELLS_ORDERED:"cellsOrdered",REMOVE_CELLS:"removeCells",CELLS_REMOVED:"cellsRemoved",GROUP_CELLS:"groupCells",UNGROUP_CELLS:"ungroupCells",REMOVE_CELLS_FROM_PARENT:"removeCellsFromParent",FOLD_CELLS:"foldCells",CELLS_FOLDED:"cellsFolded",ALIGN_CELLS:"alignCells",LABEL_CHANGED:"labelChanged",CONNECT_CELL:"connectCell",CELL_CONNECTED:"cellConnected",SPLIT_EDGE:"splitEdge",FLIP_EDGE:"flipEdge",START_EDITING:"startEditing",ADD_OVERLAY:"addOverlay",REMOVE_OVERLAY:"removeOverlay",UPDATE_CELL_SIZE:"updateCellSize",ESCAPE:"escape",CLICK:"click",DOUBLE_CLICK:"doubleClick",START:"start",RESET:"reset"};function mxXmlRequest(e,n,t,a,i,s){this.url=e,this.params=n,this.method=t||"POST",this.async=null==a||a,this.username=i,this.password=s}mxXmlRequest.prototype.url=null,mxXmlRequest.prototype.params=null,mxXmlRequest.prototype.method=null,mxXmlRequest.prototype.async=null,mxXmlRequest.prototype.binary=!1,mxXmlRequest.prototype.username=null,mxXmlRequest.prototype.password=null,mxXmlRequest.prototype.request=null,mxXmlRequest.prototype.isBinary=function(){return this.binary},mxXmlRequest.prototype.setBinary=function(e){this.binary=e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.isReady=function(){return 4==this.request.readyState},mxXmlRequest.prototype.getDocumentElement=function(){var e=this.getXml();return null!=e?e.documentElement:null},mxXmlRequest.prototype.getXml=function(){var e=this.request.responseXML;return(9<=document.documentMode||null==e||null==e.documentElement)&&(e=mxUtils.parseXml(this.request.responseText)),e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.getStatus=function(){return this.request.status},mxXmlRequest.prototype.create=window.XMLHttpRequest?function(){var e=new XMLHttpRequest;return this.isBinary()&&e.overrideMimeType&&e.overrideMimeType("text/plain; charset=x-user-defined"),e}:"undefined"!=typeof ActiveXObject?function(){return new ActiveXObject("Microsoft.XMLHTTP")}:void 0,mxXmlRequest.prototype.send=function(e,n){this.request=this.create(),null!=this.request&&(null!=e&&(this.request.onreadystatechange=mxUtils.bind(this,function(){this.isReady()&&(e(this),this.onreadystatechaange=null)})),this.request.open(this.method,this.url,this.async,this.username,this.password),this.setRequestHeaders(this.request,this.params),this.request.send(this.params))},mxXmlRequest.prototype.setRequestHeaders=function(e,n){null!=n&&e.setRequestHeader("Content-Type","application/x-www-form-urlencoded")},mxXmlRequest.prototype.simulate=function(e,n){var t=null;(e=e||document)==document&&(t=window.onbeforeunload,window.onbeforeunload=null);var a=e.createElement("form");a.setAttribute("method",this.method),a.setAttribute("action",this.url),null!=n&&a.setAttribute("target",n),a.style.display="none",a.style.visibility="hidden";for(var i=0<this.params.indexOf("&")?this.params.split("&"):this.params.split(),s=0;s<i.length;s++){if(0<(o=i[s].indexOf("="))){var o,r=i[s].substring(0,o),l=i[s].substring(o+1);(o=e.createElement("textarea")).setAttribute("name",r),l=l.replace(/\n/g,"&#xa;"),r=e.createTextNode(l),o.appendChild(r),a.appendChild(o)}}e.body.appendChild(a),a.submit(),e.body.removeChild(a),null!=t&&(window.onbeforeunload=t)};var mxClipboard={STEPSIZE:10,insertCount:1,cells:null,isEmpty:function(){return null==mxClipboard.cells},cut:function(e,n){return n=mxClipboard.copy(e,n),mxClipboard.insertCount=0,mxClipboard.removeCells(e,n),n},removeCells:function(e,n){e.removeCells(n)},copy:function(e,n){n=n||e.getSelectionCells();var t=e.getExportableCells(n);return mxClipboard.insertCount=1,mxClipboard.cells=e.cloneCells(t),t},paste:function(e){if(null!=mxClipboard.cells){var n=e.getImportableCells(mxClipboard.cells),t=mxClipboard.insertCount*mxClipboard.STEPSIZE,a=e.getDefaultParent();n=e.importCells(n,t,t,a);mxClipboard.insertCount++,e.setSelectionCells(n)}}};function mxWindow(e,n,t,a,i,s,o,r,l,d){null!=n&&(o=null==o||o,this.content=n,this.init(t,a,i,s,d),this.installMaximizeHandler(),this.installMinimizeHandler(),this.installCloseHandler(),this.setMinimizable(o),this.setTitle(e),(null==r||r)&&this.installMoveHandler(),null!=l&&null!=l.parentNode?l.parentNode.replaceChild(this.div,l):document.body.appendChild(this.div))}function mxForm(e){this.table=document.createElement("table"),this.table.className=e,this.body=document.createElement("tbody"),this.table.appendChild(this.body)}function mxImage(e,n,t){this.src=e,this.width=n,this.height=t}function mxDivResizer(e,n){if("div"==e.nodeName.toLowerCase()){null==n&&(n=window),this.div=e;var t=mxUtils.getCurrentStyle(e);null!=t&&(this.resizeWidth="auto"==t.width,this.resizeHeight="auto"==t.height),mxEvent.addListener(n,"resize",mxUtils.bind(this,function(e){this.handlingResize||(this.handlingResize=!0,this.resize(),this.handlingResize=!1)})),this.resize()}}function mxDragSource(e,n){this.element=e,this.dropHandler=n,mxEvent.addGestureListeners(e,mxUtils.bind(this,this.mouseDown))}function mxToolbar(e){this.container=e}function mxSession(n,e,t,a){this.model=n,this.urlInit=e,this.urlPoll=t,this.urlNotify=a,null!=n&&(this.codec=new mxCodec,this.codec.lookup=function(e){return n.getCell(e)}),n.addListener(mxEvent.NOTIFY,mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");(null!=t&&this.debug||this.connected&&!this.suspended)&&this.notify("<edit>"+this.encodeChanges(t.changes,t.undone)+"</edit>")}))}function mxUndoableEdit(e,n){this.source=e,this.changes=[],this.significant=null==n||n}function mxUndoManager(e){this.size=null!=e?e:100,this.clear()}mxWindow.prototype=new mxEventSource,mxWindow.prototype.constructor=mxWindow,mxWindow.prototype.closeImage=mxClient.imageBasePath+"/close.gif",mxWindow.prototype.minimizeImage=mxClient.imageBasePath+"/minimize.gif",mxWindow.prototype.normalizeImage=mxClient.imageBasePath+"/normalize.gif",mxWindow.prototype.maximizeImage=mxClient.imageBasePath+"/maximize.gif",mxWindow.prototype.resizeImage=mxClient.imageBasePath+"/resize.gif",mxWindow.prototype.visible=!1,mxWindow.prototype.content=!1,mxWindow.prototype.minimumSize=new mxRectangle(0,0,50,40),mxWindow.prototype.title=!1,mxWindow.prototype.content=!1,mxWindow.prototype.destroyOnClose=!0,mxWindow.prototype.init=function(e,n,t,a,i){i=null!=i?i:"mxWindow",this.div=document.createElement("div"),this.div.className=i,this.div.style.left=e+"px",this.div.style.top=n+"px",this.table=document.createElement("table"),this.table.className=i,null!=t&&(mxClient.IS_IE||(this.div.style.width=t+"px"),this.table.style.width=t+"px"),null!=a&&(mxClient.IS_IE||(this.div.style.height=a+"px"),this.table.style.height=a+"px"),e=document.createElement("tbody"),n=document.createElement("tr"),this.title=document.createElement("td"),this.title.className=i+"Title",n.appendChild(this.title),e.appendChild(n),n=document.createElement("tr"),this.td=document.createElement("td"),this.td.className=i+"Pane",this.contentWrapper=document.createElement("div"),this.contentWrapper.className=i+"Pane",this.contentWrapper.style.width="100%",this.contentWrapper.appendChild(this.content),(mxClient.IS_IE||"DIV"!=this.content.nodeName.toUpperCase())&&(this.contentWrapper.style.height="100%"),this.td.appendChild(this.contentWrapper),n.appendChild(this.td),e.appendChild(n),this.table.appendChild(e),this.div.appendChild(this.table),i=mxUtils.bind(this,function(e){this.activate()}),mxEvent.addListener(this.title,"mousedown",i),mxEvent.addListener(this.table,"mousedown",i),mxClient.IS_TOUCH&&(mxEvent.addListener(this.title,"touchstart",i),mxEvent.addListener(this.table,"touchstart",i)),this.hide()},mxWindow.prototype.setTitle=function(e){for(var n=this.title.firstChild;null!=n;){var t=n.nextSibling;n.nodeType==mxConstants.NODETYPE_TEXT&&n.parentNode.removeChild(n),n=t}mxUtils.write(this.title,e||"")},mxWindow.prototype.setScrollable=function(e){navigator.userAgent.indexOf("Presto/2.5")<0&&(this.contentWrapper.style.overflow=e?"auto":"hidden")},mxWindow.prototype.activate=function(){if(mxWindow.activeWindow!=this){var e=null!=(e=mxUtils.getCurrentStyle(this.getElement()))?e.zIndex:3;if(mxWindow.activeWindow){var n=mxWindow.activeWindow.getElement();null!=n&&null!=n.style&&(n.style.zIndex=e)}n=mxWindow.activeWindow,this.getElement().style.zIndex=parseInt(e)+1,(mxWindow.activeWindow=this).fireEvent(new mxEventObject(mxEvent.ACTIVATE,"previousWindow",n))}},mxWindow.prototype.getElement=function(){return this.div},mxWindow.prototype.fit=function(){mxUtils.fit(this.div)},mxWindow.prototype.isResizable=function(){return null!=this.resize&&"none"!=this.resize.style.display},mxWindow.prototype.setResizable=function(e){e?null==this.resize?(this.resize=document.createElement("img"),this.resize.style.position="absolute",this.resize.style.bottom="2px",this.resize.style.right="2px",this.resize.setAttribute("src",mxClient.imageBasePath+"/resize.gif"),this.resize.style.cursor="nw-resize",mxEvent.addGestureListeners(this.resize,mxUtils.bind(this,function(e){this.activate();var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.div.offsetWidth,o=this.div.offsetHeight,n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setSize(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.RESIZE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_START,"event",e)),mxEvent.consume(e)}),null,null),this.div.appendChild(this.resize)):this.resize.style.display="inline":null!=this.resize&&(this.resize.style.display="none")},mxWindow.prototype.setSize=function(e,n){e=Math.max(this.minimumSize.width,e),n=Math.max(this.minimumSize.height,n),mxClient.IS_IE||(this.div.style.width=e+"px",this.div.style.height=n+"px"),this.table.style.width=e+"px",this.table.style.height=n+"px",mxClient.IS_IE||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")},mxWindow.prototype.setMinimizable=function(e){this.minimize.style.display=e?"":"none"},mxWindow.prototype.getMinimumSize=function(){return new mxRectangle(0,0,0,this.title.offsetHeight)},mxWindow.prototype.installMinimizeHandler=function(){this.minimize=document.createElement("img"),this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("align","right"),this.minimize.setAttribute("title","Minimize"),this.minimize.style.cursor="pointer",this.minimize.style.marginRight="1px",this.minimize.style.display="none",this.title.appendChild(this.minimize);var t=!1,a=null,i=null,e=mxUtils.bind(this,function(e){if(this.activate(),t)t=!1,this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("title","Minimize"),this.contentWrapper.style.display="",this.maximize.style.display=a,mxClient.IS_IE||(this.div.style.height=i),this.table.style.height=i,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{t=!0,this.minimize.setAttribute("src",this.normalizeImage),this.minimize.setAttribute("title","Normalize"),this.contentWrapper.style.display="none",a=this.maximize.style.display,this.maximize.style.display="none",i=this.table.style.height;var n=this.getMinimumSize();0<n.height&&(mxClient.IS_IE||(this.div.style.height=n.height+"px"),this.table.style.height=n.height+"px"),0<n.width&&(mxClient.IS_IE||(this.div.style.width=n.width+"px"),this.table.style.width=n.width+"px"),null!=this.resize&&(this.resize.style.visibility="hidden"),this.fireEvent(new mxEventObject(mxEvent.MINIMIZE,"event",e))}mxEvent.consume(e)});mxEvent.addListener(this.minimize,"mousedown",e),mxClient.IS_TOUCH&&mxEvent.addListener(this.minimize,"touchstart",e)},mxWindow.prototype.setMaximizable=function(e){this.maximize.style.display=e?"":"none"},mxWindow.prototype.installMaximizeHandler=function(){this.maximize=document.createElement("img"),this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("align","right"),this.maximize.setAttribute("title","Maximize"),this.maximize.style.cursor="default",this.maximize.style.marginLeft="1px",this.maximize.style.cursor="pointer",this.maximize.style.display="none",this.title.appendChild(this.maximize);var t=!1,a=null,i=null,s=null,o=null,e=mxUtils.bind(this,function(e){if(this.activate(),"none"!=this.maximize.style.display){if(t)t=!1,this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("title","Maximize"),this.contentWrapper.style.display="",this.minimize.style.visibility="",this.div.style.left=a+"px",this.div.style.top=i+"px",mxClient.IS_IE||(this.div.style.height=s,this.div.style.width=o,"auto"!=(n=mxUtils.getCurrentStyle(this.contentWrapper)).overflow&&null==this.resize)||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.table.style.height=s,this.table.style.width=o,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{if(t=!0,this.maximize.setAttribute("src",this.normalizeImage),this.maximize.setAttribute("title","Normalize"),this.contentWrapper.style.display="",this.minimize.style.visibility="hidden",a=parseInt(this.div.style.left),i=parseInt(this.div.style.top),s=this.table.style.height,o=this.table.style.width,this.div.style.left="0px",this.div.style.top="0px",mxClient.IS_IE||(this.div.style.height=document.body.clientHeight-2+"px",this.div.style.width=document.body.clientWidth-2+"px"),this.table.style.width=document.body.clientWidth-2+"px",this.table.style.height=document.body.clientHeight-2+"px",null!=this.resize&&(this.resize.style.visibility="hidden"),!mxClient.IS_IE){var n=mxUtils.getCurrentStyle(this.contentWrapper);"auto"!=n.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")}this.fireEvent(new mxEventObject(mxEvent.MAXIMIZE,"event",e))}mxEvent.consume(e)}});mxEvent.addGestureListeners(this.maximize,e),mxEvent.addListener(this.title,"dblclick",e)},mxWindow.prototype.installMoveHandler=function(){this.title.style.cursor="move",mxEvent.addGestureListeners(this.title,mxUtils.bind(this,function(e){var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.getX(),o=this.getY(),n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setLocation(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.MOVE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_START,"event",e)),mxEvent.consume(e)}))},mxWindow.prototype.setLocation=function(e,n){this.div.style.left=e+"px",this.div.style.top=n+"px"},mxWindow.prototype.getX=function(){return parseInt(this.div.style.left)},mxWindow.prototype.getY=function(){return parseInt(this.div.style.top)},mxWindow.prototype.installCloseHandler=function(){this.closeImg=document.createElement("img"),this.closeImg.setAttribute("src",this.closeImage),this.closeImg.setAttribute("align","right"),this.closeImg.setAttribute("title","Close"),this.closeImg.style.marginLeft="2px",this.closeImg.style.cursor="pointer",this.closeImg.style.display="none",this.title.insertBefore(this.closeImg,this.title.firstChild),mxEvent.addGestureListeners(this.closeImg,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.CLOSE,"event",e)),this.destroyOnClose?this.destroy():this.setVisible(!1),mxEvent.consume(e)}))},mxWindow.prototype.setImage=function(e){this.image=document.createElement("img"),this.image.setAttribute("src",e),this.image.setAttribute("align","left"),this.image.style.marginRight="4px",this.image.style.marginLeft="0px",this.image.style.marginTop="-2px",this.title.insertBefore(this.image,this.title.firstChild)},mxWindow.prototype.setClosable=function(e){this.closeImg.style.display=e?"":"none"},mxWindow.prototype.isVisible=function(){return null!=this.div&&"hidden"!=this.div.style.visibility},mxWindow.prototype.setVisible=function(e){null!=this.div&&this.isVisible()!=e&&(e?this.show():this.hide())},mxWindow.prototype.show=function(){this.div.style.visibility="",this.activate();var e=mxUtils.getCurrentStyle(this.contentWrapper);mxClient.IS_IE||"auto"!=e.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.fireEvent(new mxEventObject(mxEvent.SHOW))},mxWindow.prototype.hide=function(){this.div.style.visibility="hidden",this.fireEvent(new mxEventObject(mxEvent.HIDE))},mxWindow.prototype.destroy=function(){this.fireEvent(new mxEventObject(mxEvent.DESTROY)),null!=this.div&&(mxEvent.release(this.div),this.div.parentNode.removeChild(this.div),this.div=null),this.contentWrapper=this.content=this.title=null},mxForm.prototype.table=null,mxForm.prototype.body=!1,mxForm.prototype.getTable=function(){return this.table},mxForm.prototype.addButtons=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");t.appendChild(a);a=document.createElement("td");var i=document.createElement("button");mxUtils.write(i,mxResources.get("ok")||"OK"),a.appendChild(i),mxEvent.addListener(i,"click",function(){e()}),i=document.createElement("button"),mxUtils.write(i,mxResources.get("cancel")||"Cancel"),a.appendChild(i),mxEvent.addListener(i,"click",function(){n()}),t.appendChild(a),this.body.appendChild(t)},mxForm.prototype.addText=function(e,n){var t=document.createElement("input");return t.setAttribute("type","text"),t.value=n,this.addField(e,t)},mxForm.prototype.addCheckbox=function(e,n){var t=document.createElement("input");return t.setAttribute("type","checkbox"),this.addField(e,t),n&&(t.checked=!0),t},mxForm.prototype.addTextarea=function(e,n,t){var a=document.createElement("textarea");return mxClient.IS_NS&&t--,a.setAttribute("rows",t||2),a.value=n,this.addField(e,a)},mxForm.prototype.addCombo=function(e,n,t){var a=document.createElement("select");return null!=t&&a.setAttribute("size",t),n&&a.setAttribute("multiple","true"),this.addField(e,a)},mxForm.prototype.addOption=function(e,n,t,a){var i=document.createElement("option");mxUtils.writeln(i,n),i.setAttribute("value",t),a&&i.setAttribute("selected",a),e.appendChild(i)},mxForm.prototype.addField=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");return mxUtils.write(a,e),t.appendChild(a),(a=document.createElement("td")).appendChild(n),t.appendChild(a),this.body.appendChild(t),n},mxImage.prototype.src=null,mxImage.prototype.width=null,mxImage.prototype.height=null,mxDivResizer.prototype.resizeWidth=!0,mxDivResizer.prototype.resizeHeight=!0,mxDivResizer.prototype.handlingResize=!1,mxDivResizer.prototype.resize=function(){var e=this.getDocumentWidth(),n=this.getDocumentHeight(),t=parseInt(this.div.style.left),a=parseInt(this.div.style.right),i=parseInt(this.div.style.top),s=parseInt(this.div.style.bottom);this.resizeWidth&&!isNaN(t)&&!isNaN(a)&&0<=t&&0<=a&&0<e-a-t&&(this.div.style.width=e-a-t+"px"),this.resizeHeight&&!isNaN(i)&&!isNaN(s)&&0<=i&&0<=s&&0<n-i-s&&(this.div.style.height=n-i-s+"px")},mxDivResizer.prototype.getDocumentWidth=function(){return document.body.clientWidth},mxDivResizer.prototype.getDocumentHeight=function(){return document.body.clientHeight},mxDragSource.prototype.element=null,mxDragSource.prototype.dropHandler=null,mxDragSource.prototype.dragOffset=null,mxDragSource.prototype.dragElement=null,mxDragSource.prototype.previewElement=null,mxDragSource.prototype.enabled=!0,mxDragSource.prototype.currentGraph=null,mxDragSource.prototype.currentDropTarget=null,mxDragSource.prototype.currentPoint=null,mxDragSource.prototype.currentGuide=null,mxDragSource.prototype.currentHighlight=null,mxDragSource.prototype.autoscroll=!0,mxDragSource.prototype.guidesEnabled=!0,mxDragSource.prototype.gridEnabled=!0,mxDragSource.prototype.highlightDropTargets=!0,mxDragSource.prototype.dragElementZIndex=100,mxDragSource.prototype.dragElementOpacity=70,mxDragSource.prototype.isEnabled=function(){return this.enabled},mxDragSource.prototype.setEnabled=function(e){this.enabled=e},mxDragSource.prototype.isGuidesEnabled=function(){return this.guidesEnabled},mxDragSource.prototype.setGuidesEnabled=function(e){this.guidesEnabled=e},mxDragSource.prototype.isGridEnabled=function(){return this.gridEnabled},mxDragSource.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxDragSource.prototype.getGraphForEvent=function(e){return null},mxDragSource.prototype.getDropTarget=function(e,n,t){return e.getCellAt(n,t)},mxDragSource.prototype.createDragElement=function(e){return this.element.cloneNode(!0)},mxDragSource.prototype.createPreviewElement=function(e){return null},mxDragSource.prototype.mouseDown=function(e){this.enabled&&!mxEvent.isConsumed(e)&&null==this.mouseMoveHandler&&(this.startDrag(e),this.mouseMoveHandler=mxUtils.bind(this,this.mouseMove),this.mouseUpHandler=mxUtils.bind(this,this.mouseUp),mxEvent.addGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),mxEvent.consume(e,!0,!1))},mxDragSource.prototype.startDrag=function(e){this.dragElement=this.createDragElement(e),this.dragElement.style.position="absolute",this.dragElement.style.zIndex=this.dragElementZIndex,mxUtils.setOpacity(this.dragElement,this.dragElementOpacity)},mxDragSource.prototype.stopDrag=function(e){null!=this.dragElement&&(null!=this.dragElement.parentNode&&this.dragElement.parentNode.removeChild(this.dragElement),this.dragElement=null)},mxDragSource.prototype.graphContainsEvent=function(e,n){var t=mxEvent.getClientX(n),a=mxEvent.getClientY(n),i=mxUtils.getOffset(e.container),s=mxUtils.getScrollOrigin();return t>=i.x-s.x&&a>=i.y-s.y&&t<=i.x-s.x+e.container.offsetWidth&&a<=i.y-s.y+e.container.offsetHeight},mxDragSource.prototype.mouseMove=function(e){if(null!=(n=this.getGraphForEvent(e))&&!this.graphContainsEvent(n,e)&&(n=null),n!=this.currentGraph&&(null!=this.currentGraph&&this.dragExit(this.currentGraph),this.currentGraph=n,null!=this.currentGraph&&this.dragEnter(this.currentGraph)),null!=this.currentGraph&&this.dragOver(this.currentGraph,e),null==this.dragElement||null!=this.previewElement&&"visible"==this.previewElement.style.visibility)null!=this.dragElement&&(this.dragElement.style.visibility="hidden");else{var n=mxEvent.getClientX(e),t=mxEvent.getClientY(e);null==this.dragElement.parentNode&&document.body.appendChild(this.dragElement),this.dragElement.style.visibility="visible",null!=this.dragOffset&&(n+=this.dragOffset.x,t+=this.dragOffset.y),n+=document.body.scrollLeft||document.documentElement.scrollLeft,t+=document.body.scrollTop||document.documentElement.scrollTop,this.dragElement.style.left=n+"px",this.dragElement.style.top=t+"px"}mxEvent.consume(e)},mxDragSource.prototype.mouseUp=function(e){if(null!=this.currentGraph){if(null!=this.currentPoint&&(null==this.previewElement||"hidden"!=this.previewElement.style.visibility)){var n=this.currentGraph.view.scale,t=this.currentGraph.view.translate;this.drop(this.currentGraph,e,this.currentDropTarget,this.currentPoint.x/n-t.x,this.currentPoint.y/n-t.y)}this.dragExit(this.currentGraph)}this.stopDrag(e),mxEvent.removeGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),this.currentGraph=this.mouseUpHandler=this.mouseMoveHandler=null,mxEvent.consume(e)},mxDragSource.prototype.dragEnter=function(e){e.isMouseDown=!0,this.previewElement=this.createPreviewElement(e),this.isGuidesEnabled()&&null!=this.previewElement&&(this.currentGuide=new mxGuide(e,e.graphHandler.getGuideStates())),this.highlightDropTargets&&(this.currentHighlight=new mxCellHighlight(e,mxConstants.DROP_TARGET_COLOR))},mxDragSource.prototype.dragExit=function(e){this.currentPoint=this.currentDropTarget=null,e.isMouseDown=!1,null!=this.previewElement&&(null!=this.previewElement.parentNode&&this.previewElement.parentNode.removeChild(this.previewElement),this.previewElement=null),null!=this.currentGuide&&(this.currentGuide.destroy(),this.currentGuide=null),null!=this.currentHighlight&&(this.currentHighlight.destroy(),this.currentHighlight=null)},mxDragSource.prototype.dragOver=function(e,n){var t=mxUtils.getOffset(e.container),a=mxUtils.getScrollOrigin(e.container),i=mxEvent.getClientX(n)-t.x+a.x;t=mxEvent.getClientY(n)-t.y+a.y;if(e.autoScroll&&(null==this.autoscroll||this.autoscroll)&&e.scrollPointToVisible(i,t,e.autoExtend),null!=this.currentHighlight&&e.isDropEnabled()&&(this.currentDropTarget=this.getDropTarget(e,i,t),a=e.getView().getState(this.currentDropTarget),this.currentHighlight.highlight(a)),null!=this.previewElement){null==this.previewElement.parentNode&&(e.container.appendChild(this.previewElement),this.previewElement.style.zIndex="3",this.previewElement.style.position="absolute");a=this.isGridEnabled()&&e.isGridEnabledEvent(n);var s=!0;if(null!=this.currentGuide&&this.currentGuide.isEnabledForEvent(n))s=new mxRectangle(0,0,s=parseInt(this.previewElement.style.width),o=parseInt(this.previewElement.style.height)),t=new mxPoint(i,t),t=this.currentGuide.move(s,t,a),s=!1,i=t.x,t=t.y;else if(a){a=e.view.scale;var o=e.view.translate,r=e.gridSize/2;i=(e.snap(i/a-o.x-r)+o.x)*a,t=(e.snap(t/a-o.y-r)+o.y)*a}null!=this.currentGuide&&s&&this.currentGuide.hide(),null!=this.previewOffset&&(i+=this.previewOffset.x,t+=this.previewOffset.y),this.previewElement.style.left=Math.round(i)+"px",this.previewElement.style.top=Math.round(t)+"px",this.previewElement.style.visibility="visible"}this.currentPoint=new mxPoint(i,t)},mxDragSource.prototype.drop=function(e,n,t,a,i){this.dropHandler(e,n,t,a,i),e.container.focus()},mxToolbar.prototype=new mxEventSource,mxToolbar.prototype.constructor=mxToolbar,mxToolbar.prototype.container=null,mxToolbar.prototype.enabled=!0,mxToolbar.prototype.noReset=!1,mxToolbar.prototype.updateDefaultMode=!0,mxToolbar.prototype.addItem=function(e,n,t,a,i,s){var o=document.createElement(null!=n?"img":"button"),r=i||(null!=s?"mxToolbarMode":"mxToolbarItem");return o.className=r,o.setAttribute("src",n),null!=e&&(null!=n?o.setAttribute("title",e):mxUtils.write(o,e)),this.container.appendChild(o),null!=t&&(mxEvent.addListener(o,"click",t),mxClient.IS_TOUCH&&mxEvent.addListener(o,"touchend",t)),e=mxUtils.bind(this,function(e){null!=a?o.setAttribute("src",n):o.style.backgroundColor=""}),mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){if(null!=a?o.setAttribute("src",a):o.style.backgroundColor="gray",null!=s){null==this.menu&&(this.menu=new mxPopupMenu,this.menu.init());var n=this.currentImg;this.menu.isMenuShowing()&&this.menu.hideMenu(),n!=o&&(this.currentImg=o,this.menu.factoryMethod=s,n=new mxPoint(o.offsetLeft,o.offsetTop+o.offsetHeight),this.menu.popup(n.x,n.y,null,e),this.menu.isMenuShowing()&&(o.className=r+"Selected",this.menu.hideMenu=function(){mxPopupMenu.prototype.hideMenu.apply(this),o.className=r,this.currentImg=null}))}}),null,e),mxEvent.addListener(o,"mouseout",e),o},mxToolbar.prototype.addCombo=function(e){var n=document.createElement("div");n.style.display="inline",n.className="mxToolbarComboContainer";var t=document.createElement("select");return t.className=e||"mxToolbarCombo",n.appendChild(t),this.container.appendChild(n),t},mxToolbar.prototype.addActionCombo=function(e,n){var t=document.createElement("select");return t.className=n||"mxToolbarCombo",this.addOption(t,e,null),mxEvent.addListener(t,"change",function(e){var n=t.options[t.selectedIndex];t.selectedIndex=0,null!=n.funct&&n.funct(e)}),this.container.appendChild(t),t},mxToolbar.prototype.addOption=function(e,n,t){var a=document.createElement("option");return mxUtils.writeln(a,n),"function"==typeof t?a.funct=t:a.setAttribute("value",t),e.appendChild(a),a},mxToolbar.prototype.addSwitchMode=function(e,n,t,a,i){var s=document.createElement("img");return s.initialClassName=i||"mxToolbarMode",s.className=s.initialClassName,s.setAttribute("src",n),s.altIcon=a,null!=e&&s.setAttribute("title",e),mxEvent.addListener(s,"click",mxUtils.bind(this,function(e){null!=(e=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",e)):this.selectedMode.className=this.selectedMode.initialClassName,this.updateDefaultMode&&(this.defaultMode=s),null!=(e=(this.selectedMode=s).altIcon)?(s.altIcon=s.getAttribute("src"),s.setAttribute("src",e)):s.className=s.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT)),t()})),this.container.appendChild(s),null==this.defaultMode&&(this.defaultMode=s,this.selectMode(s),t()),s},mxToolbar.prototype.addMode=function(e,n,t,a,i,s){s=null==s||s;var o=document.createElement(null!=n?"img":"button");return o.initialClassName=i||"mxToolbarMode",o.className=o.initialClassName,o.setAttribute("src",n),o.altIcon=a,null!=e&&o.setAttribute("title",e),this.enabled&&s&&(mxEvent.addListener(o,"click",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!1})),mxEvent.addListener(o,"dblclick",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!0})),null==this.defaultMode&&(this.defaultMode=o,this.defaultFunction=t,this.selectMode(o,t))),this.container.appendChild(o),o},mxToolbar.prototype.selectMode=function(e,n){if(this.selectedMode!=e){if(null!=this.selectedMode){var t=this.selectedMode.altIcon;null!=t?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName}this.selectedMode=e,null!=(t=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT,"function",n))}},mxToolbar.prototype.resetMode=function(e){(e||!this.noReset)&&this.selectedMode!=this.defaultMode&&this.selectMode(this.defaultMode,this.defaultFunction)},mxToolbar.prototype.addSeparator=function(e){return this.addItem(null,e,null)},mxToolbar.prototype.addBreak=function(){mxUtils.br(this.container)},mxToolbar.prototype.addLine=function(){var e=document.createElement("hr");e.style.marginRight="6px",e.setAttribute("size","1"),this.container.appendChild(e)},mxToolbar.prototype.destroy=function(){mxEvent.release(this.container),this.selectedMode=this.defaultFunction=this.defaultMode=this.container=null,null!=this.menu&&this.menu.destroy()},mxSession.prototype=new mxEventSource,mxSession.prototype.constructor=mxSession,mxSession.prototype.model=null,mxSession.prototype.urlInit=null,mxSession.prototype.urlPoll=null,mxSession.prototype.urlNotify=null,mxSession.prototype.codec=null,mxSession.prototype.linefeed="&#xa;",mxSession.prototype.escapePostData=!0,mxSession.prototype.significantRemoteChanges=!0,mxSession.prototype.sent=0,mxSession.prototype.received=0,mxSession.prototype.debug=!1,mxSession.prototype.connected=!1,mxSession.prototype.suspended=!1,mxSession.prototype.polling=!1,mxSession.prototype.start=function(){this.debug?(this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT))):this.connected||this.get(this.urlInit,mxUtils.bind(this,function(e){this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT)),this.poll()}))},mxSession.prototype.suspend=function(){this.connected&&!this.suspended&&(this.suspended=!0,this.fireEvent(new mxEventObject(mxEvent.SUSPEND)))},mxSession.prototype.resume=function(e,n,t){this.connected&&this.suspended&&(this.suspended=!1,this.fireEvent(new mxEventObject(mxEvent.RESUME)),this.polling||this.poll())},mxSession.prototype.stop=function(e){this.connected&&(this.connected=!1),this.fireEvent(new mxEventObject(mxEvent.DISCONNECT,"reason",e))},mxSession.prototype.poll=function(){this.connected&&!this.suspended&&null!=this.urlPoll?(this.polling=!0,this.get(this.urlPoll,mxUtils.bind(this,function(){this.poll()}))):this.polling=!1},mxSession.prototype.notify=function(e,n,t){null!=e&&0<e.length&&(null!=this.urlNotify&&(this.debug?(mxLog.show(),mxLog.debug("mxSession.notify: "+this.urlNotify+" xml="+e)):(e="<message><delta>"+e+"</delta></message>",this.escapePostData&&(e=encodeURIComponent(e)),mxUtils.post(this.urlNotify,"xml="+e,n,t))),this.sent+=e.length,this.fireEvent(new mxEventObject(mxEvent.NOTIFY,"url",this.urlNotify,"xml",e)))},mxSession.prototype.get=function(t,a,n){if(void 0!==mxUtils){var i=mxUtils.bind(this,function(e){null!=n?n(e):this.stop(e)});mxUtils.get(t,mxUtils.bind(this,function(e){if(void 0!==mxUtils)if(e.isReady()&&404!=e.getStatus()){if(this.received+=e.getText().length,this.fireEvent(new mxEventObject(mxEvent.GET,"url",t,"request",e)),this.isValidResponse(e)){if(0<e.getText().length){var n=e.getDocumentElement();null==n?i("Invalid response: "+e.getText()):this.receive(n)}null!=a&&a(e)}}else i("Response not ready")}),function(e){i("Transmission error")})}},mxSession.prototype.isValidResponse=function(e){return e.getText().indexOf("<?php")<0},mxSession.prototype.encodeChanges=function(e,n){for(var t="",a=n?-1:1,i=n?e.length-1:0;0<=i&&i<e.length;i+=a){var s=this.codec.encode(e[i]);t=t+mxUtils.getXml(s,this.linefeed)}return t},mxSession.prototype.receive=function(e){if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var n=e.getAttribute("namespace");for(null!=n&&(this.model.prefix=n+"-"),n=e.firstChild;null!=n;){var t=n.nodeName.toLowerCase();"state"==t?this.processState(n):"delta"==t&&this.processDelta(n),n=n.nextSibling}this.fireEvent(new mxEventObject(mxEvent.RECEIVE,"node",e))}},mxSession.prototype.processState=function(e){new mxCodec(e.ownerDocument).decode(e.firstChild,this.model)},mxSession.prototype.processDelta=function(e){for(e=e.firstChild;null!=e;)"edit"==e.nodeName&&this.processEdit(e),e=e.nextSibling},mxSession.prototype.processEdit=function(e){if(0<(e=this.decodeChanges(e)).length){var n=this.createUndoableEdit(e);this.model.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",e)),this.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",n)),this.fireEvent(new mxEventObject(mxEvent.FIRED,"edit",n))}},mxSession.prototype.createUndoableEdit=function(e){var n=new mxUndoableEdit(this.model,this.significantRemoteChanges);return n.changes=e,n.notify=function(){n.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",n.changes)),n.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",n,"changes",n.changes))},n},mxSession.prototype.decodeChanges=function(e){this.codec.document=e.ownerDocument;var n=[];for(e=e.firstChild;null!=e;){var t=this.decodeChange(e);null!=t&&n.push(t),e=e.nextSibling}return n},mxSession.prototype.decodeChange=function(e){var n=null;return e.nodeType==mxConstants.NODETYPE_ELEMENT&&(null!=(n="mxRootChange"==e.nodeName?new mxCodec(e.ownerDocument).decode(e):this.codec.decode(e))&&(n.model=this.model,n.execute(),"mxChildChange"==e.nodeName&&null==n.parent&&this.cellRemoved(n.child))),n},mxSession.prototype.cellRemoved=function(e,n){this.codec.putObject(e.getId(),e);for(var t=this.model.getChildCount(e),a=0;a<t;a++)this.cellRemoved(this.model.getChildAt(e,a))},mxUndoableEdit.prototype.source=null,mxUndoableEdit.prototype.changes=null,mxUndoableEdit.prototype.significant=null,mxUndoableEdit.prototype.undone=!1,mxUndoableEdit.prototype.redone=!1,mxUndoableEdit.prototype.isEmpty=function(){return 0==this.changes.length},mxUndoableEdit.prototype.isSignificant=function(){return this.significant},mxUndoableEdit.prototype.add=function(e){this.changes.push(e)},mxUndoableEdit.prototype.notify=function(){},mxUndoableEdit.prototype.die=function(){},mxUndoableEdit.prototype.undo=function(){if(!this.undone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length-1;0<=e;e--){var n=this.changes[e];null!=n.execute?n.execute():null!=n.undo&&n.undo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",n))}this.undone=!0,this.redone=!1,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoableEdit.prototype.redo=function(){if(!this.redone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length,n=0;n<e;n++){var t=this.changes[n];null!=t.execute?t.execute():null!=t.redo&&t.redo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",t))}this.undone=!1,this.redone=!0,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoManager.prototype=new mxEventSource,mxUndoManager.prototype.constructor=mxUndoManager,mxUndoManager.prototype.size=null,mxUndoManager.prototype.history=null,mxUndoManager.prototype.indexOfNextAdd=0,mxUndoManager.prototype.isEmpty=function(){return 0==this.history.length},mxUndoManager.prototype.clear=function(){this.history=[],this.indexOfNextAdd=0,this.fireEvent(new mxEventObject(mxEvent.CLEAR))},mxUndoManager.prototype.canUndo=function(){return 0<this.indexOfNextAdd},mxUndoManager.prototype.undo=function(){for(;0<this.indexOfNextAdd;){var e=this.history[--this.indexOfNextAdd];if(e.undo(),e.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e));break}}},mxUndoManager.prototype.canRedo=function(){return this.indexOfNextAdd<this.history.length},mxUndoManager.prototype.redo=function(){for(var e=this.history.length;this.indexOfNextAdd<e;){var n=this.history[this.indexOfNextAdd++];if(n.redo(),n.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.REDO,"edit",n));break}}},mxUndoManager.prototype.undoableEditHappened=function(e){this.trim(),0<this.size&&this.size==this.history.length&&this.history.shift(),this.history.push(e),this.indexOfNextAdd=this.history.length,this.fireEvent(new mxEventObject(mxEvent.ADD,"edit",e))},mxUndoManager.prototype.trim=function(){if(this.history.length>this.indexOfNextAdd)for(var e=this.history.splice(this.indexOfNextAdd,this.history.length-this.indexOfNextAdd),n=0;n<e.length;n++)e[n].die()};var mxUrlConverter=function(e){var t=!0,a=null,i=null;return{isEnabled:function(){return t},setEnabled:function(e){t=e},getBaseUrl:function(){return a},setBaseUrl:function(e){a=e},getBaseDomain:function(){return a},setBaseDomain:function(e){a=e},isRelativeUrl:function(e){return"http://"!=e.substring(0,7)&&"https://"!=e.substring(0,8)&&"data:image"!=e.substring(0,10)},convert:function(e){if(t&&this.isRelativeUrl(e)){if(null==a){i=location.protocol+"//"+location.host;var n=(a=i+location.pathname).lastIndexOf("/");0<n&&(a=a.substring(0,n+1))}e="/"==e.charAt(0)?i+e:a+e}return e}}};function mxPanningManager(s){this.thread=null,this.active=!1,this.dy=this.dx=this.t0y=this.t0x=this.tdy=this.tdx=0,this.scrollbars=!1,this.scrollTop=this.scrollLeft=0,this.mouseListener={mouseDown:function(e,n){},mouseMove:function(e,n){},mouseUp:mxUtils.bind(this,function(e,n){this.active&&this.stop()})},s.addMouseListener(this.mouseListener),mxEvent.addListener(document,"mouseup",mxUtils.bind(this,function(){this.active&&this.stop()}));var o=mxUtils.bind(this,function(){return this.scrollbars=mxUtils.hasScrollbars(s.container),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,window.setInterval(mxUtils.bind(this,function(){if(this.tdx-=this.dx,this.tdy-=this.dy,this.scrollbars){var e=-s.container.scrollLeft-Math.ceil(this.dx),n=-s.container.scrollTop-Math.ceil(this.dy);s.panGraph(e,n),s.panDx=this.scrollLeft-s.container.scrollLeft,s.panDy=this.scrollTop-s.container.scrollTop,s.fireEvent(new mxEventObject(mxEvent.PAN))}else s.panGraph(this.getDx(),this.getDy())}),this.delay)});this.isActive=function(){return active},this.getDx=function(){return Math.round(this.tdx)},this.getDy=function(){return Math.round(this.tdy)},this.start=function(){this.t0x=s.view.translate.x,this.t0y=s.view.translate.y,this.active=!0},this.panTo=function(e,n,t,a){this.active||this.start(),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,a=null!=a?a:0;var i=s.container;this.dx=e+(null!=t?t:0)-i.scrollLeft-i.clientWidth,this.dx<0&&Math.abs(this.dx)<this.border?this.dx=this.border+this.dx:this.dx=this.handleMouseOut?Math.max(this.dx,0):0,0==this.dx&&(this.dx=e-i.scrollLeft,this.dx=0<this.dx&&this.dx<this.border?this.dx-this.border:this.handleMouseOut?Math.min(0,this.dx):0),this.dy=n+a-i.scrollTop-i.clientHeight,this.dy<0&&Math.abs(this.dy)<this.border?this.dy=this.border+this.dy:this.dy=this.handleMouseOut?Math.max(this.dy,0):0,0==this.dy&&(this.dy=n-i.scrollTop,this.dy=0<this.dy&&this.dy<this.border?this.dy-this.border:this.handleMouseOut?Math.min(0,this.dy):0),0!=this.dx||0!=this.dy?(this.dx*=this.damper,this.dy*=this.damper,null==this.thread&&(this.thread=o())):null!=this.thread&&(window.clearInterval(this.thread),this.thread=null)},this.stop=function(){if(this.active)if(this.active=!1,null!=this.thread&&(window.clearInterval(this.thread),this.thread=null),this.tdy=this.tdx=0,this.scrollbars)s.panDx=0,s.panDy=0,s.fireEvent(new mxEventObject(mxEvent.PAN));else{var e=s.panDx,n=s.panDy;0==e&&0==n||(s.panGraph(0,0),s.view.setTranslate(this.t0x+e/s.view.scale,this.t0y+n/s.view.scale))}},this.destroy=function(){s.removeMouseListener(this.mouseListener)}}function mxPopupMenu(e){null!=(this.factoryMethod=e)&&this.init()}function mxAutoSaveManager(e){this.changeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.graphModelChanged(n.getProperty("edit").changes)}),this.setGraph(e)}function mxAnimation(e){this.delay=null!=e?e:20}function mxMorphing(e,n,t,a){mxAnimation.call(this,a),this.graph=e,this.steps=null!=n?n:6,this.ease=null!=t?t:1.5}function mxImageBundle(e){this.images=[],this.alt=null!=e&&e}function mxImageExport(){}function mxAbstractCanvas2D(){this.converter=this.createUrlConverter(),this.reset()}function mxXmlCanvas2D(e){mxAbstractCanvas2D.call(this),this.root=e,this.writeDefaults()}function mxSvgCanvas2D(e,n){mxAbstractCanvas2D.call(this),this.root=e,this.gradients=[],this.defs=null,this.styleEnabled=null!=n&&n;var t=null;if(e.ownerDocument!=document)for(t=e;null!=t&&"svg"!=t.nodeName;)t=t.parentNode;null!=t&&(0<t.getElementsByTagName("defs").length&&(this.defs=t.getElementsByTagName("defs")[0]),null==this.defs&&(this.defs=this.createElement("defs"),null!=t.firstChild?t.insertBefore(this.defs,t.firstChild):t.appendChild(this.defs)),this.styleEnabled&&this.defs.appendChild(this.createStyle()))}mxPanningManager.prototype.damper=1/6,mxPanningManager.prototype.delay=10,mxPanningManager.prototype.handleMouseOut=!0,mxPanningManager.prototype.border=0,mxPopupMenu.prototype=new mxEventSource,mxPopupMenu.prototype.constructor=mxPopupMenu,mxPopupMenu.prototype.submenuImage=mxClient.imageBasePath+"/submenu.gif",mxPopupMenu.prototype.zIndex=10006,mxPopupMenu.prototype.factoryMethod=null,mxPopupMenu.prototype.useLeftButtonForPopup=!1,mxPopupMenu.prototype.enabled=!0,mxPopupMenu.prototype.itemCount=0,mxPopupMenu.prototype.autoExpand=!1,mxPopupMenu.prototype.smartSeparators=!1,mxPopupMenu.prototype.labels=!0,mxPopupMenu.prototype.init=function(){this.table=document.createElement("table"),this.table.className="mxPopupMenu",this.tbody=document.createElement("tbody"),this.table.appendChild(this.tbody),this.div=document.createElement("div"),this.div.className="mxPopupMenu",this.div.style.display="inline",this.div.style.zIndex=this.zIndex,this.div.appendChild(this.table),mxEvent.disableContextMenu(this.div)},mxPopupMenu.prototype.isEnabled=function(){return this.enabled},mxPopupMenu.prototype.setEnabled=function(e){this.enabled=e},mxPopupMenu.prototype.isPopupTrigger=function(e){return e.isPopupTrigger()||this.useLeftButtonForPopup&&mxEvent.isLeftMouseButton(e.getEvent())},mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){a=a||this,this.itemCount++,a.willAddSeparator&&(a.containsItems&&this.addSeparator(a,!0),a.willAddSeparator=!1),a.containsItems=!0;var o=document.createElement("tr");o.className="mxPopupMenuItem";var r=document.createElement("td");return r.className="mxPopupMenuIcon",null!=n?((i=document.createElement("img")).src=n,r.appendChild(i)):null!=i&&((n=document.createElement("div")).className=i,r.appendChild(n)),o.appendChild(r),this.labels&&((r=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),mxUtils.write(r,e),r.align="left",o.appendChild(r),(e=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),e.style.paddingRight="6px",e.style.textAlign="right",o.appendChild(e),null==a.div&&this.createSubmenu(a)),a.tbody.appendChild(o),(null==s||s)&&(mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){this.eventReceiver=o,a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),mxEvent.consume(e)}),mxUtils.bind(this,function(e){a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),this.autoExpand&&null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),o.className="mxPopupMenuItemHover"}),mxUtils.bind(this,function(e){this.eventReceiver==o&&(a.activeRow!=o&&this.hideMenu(),null!=t&&t(e)),this.eventReceiver=null,mxEvent.consume(e)})),mxEvent.addListener(o,"mouseout",mxUtils.bind(this,function(e){o.className="mxPopupMenuItem"}))),o},mxPopupMenu.prototype.createSubmenu=function(e){e.table=document.createElement("table"),e.table.className="mxPopupMenu",e.tbody=document.createElement("tbody"),e.table.appendChild(e.tbody),e.div=document.createElement("div"),e.div.className="mxPopupMenu",e.div.style.position="absolute",e.div.style.display="inline",e.div.style.zIndex=this.zIndex,e.div.appendChild(e.table);var n=document.createElement("img");n.setAttribute("src",this.submenuImage),td=e.firstChild.nextSibling.nextSibling,td.appendChild(n)},mxPopupMenu.prototype.showSubmenu=function(e,n){if(null!=n.div){n.div.style.left=e.div.offsetLeft+n.offsetLeft+n.offsetWidth-1+"px",n.div.style.top=e.div.offsetTop+n.offsetTop+"px",document.body.appendChild(n.div);var t=parseInt(n.div.offsetLeft),a=parseInt(n.div.offsetWidth),i=document.body,s=document.documentElement;t+a>(i.scrollLeft||s.scrollLeft)+(i.clientWidth||s.clientWidth)&&(n.div.style.left=e.div.offsetLeft-a+(mxClient.IS_IE?6:-6)+"px"),mxUtils.fit(n.div)}},mxPopupMenu.prototype.addSeparator=function(e,n){if(e=e||this,this.smartSeparators&&!n)e.willAddSeparator=!0;else if(null!=e.tbody){e.willAddSeparator=!1;var t=document.createElement("tr"),a=document.createElement("td");a.className="mxPopupMenuIcon",a.style.padding="0 0 0 0px",t.appendChild(a),(a=document.createElement("td")).style.padding="0 0 0 0px",a.setAttribute("colSpan","2");var i=document.createElement("hr");i.setAttribute("size","1"),a.appendChild(i),t.appendChild(a),e.tbody.appendChild(t)}},mxPopupMenu.prototype.popup=function(e,n,t,a){if(null!=this.div&&null!=this.tbody&&null!=this.factoryMethod){for(this.div.style.left=e+"px",this.div.style.top=n+"px";null!=this.tbody.firstChild;)mxEvent.release(this.tbody.firstChild),this.tbody.removeChild(this.tbody.firstChild);this.itemCount=0,this.factoryMethod(this,t,a),0<this.itemCount&&(this.showMenu(),this.fireEvent(new mxEventObject(mxEvent.SHOW)))}},mxPopupMenu.prototype.isMenuShowing=function(){return null!=this.div&&this.div.parentNode==document.body},mxPopupMenu.prototype.showMenu=function(){9<=document.documentMode&&(this.div.style.filter="none"),document.body.appendChild(this.div),mxUtils.fit(this.div)},mxPopupMenu.prototype.hideMenu=function(){null!=this.div&&(null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.hideSubmenu(this),this.containsItems=!1)},mxPopupMenu.prototype.hideSubmenu=function(e){null!=e.activeRow&&(this.hideSubmenu(e.activeRow),null!=e.activeRow.div.parentNode&&e.activeRow.div.parentNode.removeChild(e.activeRow.div),e.activeRow=null)},mxPopupMenu.prototype.destroy=function(){null!=this.div&&(mxEvent.release(this.div),null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null)},mxAutoSaveManager.prototype=new mxEventSource,mxAutoSaveManager.prototype.constructor=mxAutoSaveManager,mxAutoSaveManager.prototype.graph=null,mxAutoSaveManager.prototype.autoSaveDelay=10,mxAutoSaveManager.prototype.autoSaveThrottle=2,mxAutoSaveManager.prototype.autoSaveThreshold=5,mxAutoSaveManager.prototype.ignoredChanges=0,mxAutoSaveManager.prototype.lastSnapshot=0,mxAutoSaveManager.prototype.enabled=!0,mxAutoSaveManager.prototype.changeHandler=null,mxAutoSaveManager.prototype.isEnabled=function(){return this.enabled},mxAutoSaveManager.prototype.setEnabled=function(e){this.enabled=e},mxAutoSaveManager.prototype.setGraph=function(e){null!=this.graph&&this.graph.getModel().removeListener(this.changeHandler),this.graph=e,null!=this.graph&&this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler)},mxAutoSaveManager.prototype.save=function(){},mxAutoSaveManager.prototype.graphModelChanged=function(e){(e=((new Date).getTime()-this.lastSnapshot)/1e3)>this.autoSaveDelay||this.ignoredChanges>=this.autoSaveThreshold&&e>this.autoSaveThrottle?(this.save(),this.reset()):this.ignoredChanges++},mxAutoSaveManager.prototype.reset=function(){this.lastSnapshot=(new Date).getTime(),this.ignoredChanges=0},mxAutoSaveManager.prototype.destroy=function(){this.setGraph(null)},mxAnimation.prototype=new mxEventSource,mxAnimation.prototype.constructor=mxAnimation,mxAnimation.prototype.delay=null,mxAnimation.prototype.thread=null,mxAnimation.prototype.startAnimation=function(){null==this.thread&&(this.thread=window.setInterval(mxUtils.bind(this,this.updateAnimation),this.delay))},mxAnimation.prototype.updateAnimation=function(){this.fireEvent(new mxEventObject(mxEvent.EXECUTE))},mxAnimation.prototype.stopAnimation=function(){null!=this.thread&&(window.clearInterval(this.thread),this.thread=null,this.fireEvent(new mxEventObject(mxEvent.DONE)))},mxMorphing.prototype=new mxAnimation,mxMorphing.prototype.constructor=mxMorphing,mxMorphing.prototype.graph=null,mxMorphing.prototype.steps=null,mxMorphing.prototype.step=0,mxMorphing.prototype.ease=null,mxMorphing.prototype.cells=null,mxMorphing.prototype.updateAnimation=function(){var e=new mxCellStatePreview(this.graph);if(null!=this.cells)for(var n=0;n<this.cells.length;n++)this.animateCell(cells[n],e,!1);else this.animateCell(this.graph.getModel().getRoot(),e,!0);this.show(e),(e.isEmpty()||this.step++>=this.steps)&&this.stopAnimation()},mxMorphing.prototype.show=function(e){e.show()},mxMorphing.prototype.animateCell=function(e,n,t){var a=this.graph.getView().getState(e),i=null;if(null!=a&&(i=this.getDelta(a),this.graph.getModel().isVertex(e)&&(0!=i.x||0!=i.y))){var s=this.graph.view.getTranslate(),o=this.graph.view.getScale();i.x+=s.x*o,i.y+=s.y*o,n.moveState(a,-i.x/this.ease,-i.y/this.ease)}if(t&&!this.stopRecursion(a,i))for(a=this.graph.getModel().getChildCount(e),i=0;i<a;i++)this.animateCell(this.graph.getModel().getChildAt(e,i),n,t)},mxMorphing.prototype.stopRecursion=function(e,n){return null!=n&&(0!=n.x||0!=n.y)},mxMorphing.prototype.getDelta=function(e){var n=this.getOriginForCell(e.cell),t=this.graph.getView().getTranslate(),a=this.graph.getView().getScale();return e=new mxPoint(e.x/a-t.x,e.y/a-t.y),new mxPoint((n.x-e.x)*a,(n.y-e.y)*a)},mxMorphing.prototype.getOriginForCell=function(e){var n=null;return null!=e&&(n=this.getOriginForCell(this.graph.getModel().getParent(e)),null!=(e=this.graph.getCellGeometry(e))&&(n.x+=e.x,n.y+=e.y)),null==n&&(n=new mxPoint(-(n=this.graph.view.getTranslate()).x,-n.y)),n},mxImageBundle.prototype.images=null,mxImageBundle.prototype.images=null,mxImageBundle.prototype.putImage=function(e,n,t){this.images[e]={value:n,fallback:t}},mxImageBundle.prototype.getImage=function(e){var n=null;return null!=e&&(null!=(e=this.images[e])&&(n=this.alt?e.fallback:e.value)),n},mxImageExport.prototype.includeOverlays=!1,mxImageExport.prototype.drawState=function(e,n){null!=e&&(this.visitStatesRecursive(e,n,this.drawCellState),this.includeOverlays&&this.visitStatesRecursive(e,n,this.drawOverlays))},mxImageExport.prototype.visitStatesRecursive=function(e,n,t){if(null!=e){t(e,n);for(var a=e.view.graph,i=a.model.getChildCount(e.cell),s=0;s<i;s++){var o=a.view.getState(a.model.getChildAt(e.cell,s));this.visitStatesRecursive(o,n,t)}}},mxImageExport.prototype.drawCellState=function(e,n){e.shape instanceof mxShape&&(n.save(),e.shape.paint(n),n.restore()),null!=e.text&&(n.save(),e.text.paint(n),n.restore())},mxImageExport.prototype.drawOverlays=function(e,t){null!=e.overlays&&e.overlays.visit(function(e,n){n instanceof mxShape&&n.paint(t)})},mxAbstractCanvas2D.prototype.state=null,mxAbstractCanvas2D.prototype.states=null,mxAbstractCanvas2D.prototype.path=null,mxAbstractCanvas2D.prototype.rotateHtml=!0,mxAbstractCanvas2D.prototype.lastX=0,mxAbstractCanvas2D.prototype.lastY=0,mxAbstractCanvas2D.prototype.moveOp="M",mxAbstractCanvas2D.prototype.lineOp="L",mxAbstractCanvas2D.prototype.quadOp="Q",mxAbstractCanvas2D.prototype.curveOp="C",mxAbstractCanvas2D.prototype.closeOp="Z",mxAbstractCanvas2D.prototype.pointerEvents=!1,mxAbstractCanvas2D.prototype.createUrlConverter=function(){return new mxUrlConverter},mxAbstractCanvas2D.prototype.reset=function(){this.state=this.createState(),this.states=[]},mxAbstractCanvas2D.prototype.createState=function(){return{dx:0,dy:0,scale:1,alpha:1,fillColor:null,fillAlpha:1,gradientColor:null,gradientAlpha:1,gradientDirection:null,strokeColor:null,strokeWidth:1,dashed:!1,dashPattern:"3 3",lineCap:"flat",lineJoin:"miter",miterLimit:10,fontColor:"#000000",fontBackgroundColor:null,fontBorderColor:null,fontSize:mxConstants.DEFAULT_FONTSIZE,fontFamily:mxConstants.DEFAULT_FONTFAMILY,fontStyle:0,shadow:!1,shadowColor:mxConstants.SHADOWCOLOR,shadowAlpha:mxConstants.SHADOW_OPACITY,shadowDx:mxConstants.SHADOW_OFFSET_X,shadowDy:mxConstants.SHADOW_OFFSET_Y,rotation:0,rotationCx:0,rotationCy:0}},mxAbstractCanvas2D.prototype.format=function(e){return Math.round(parseFloat(e))},mxAbstractCanvas2D.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var e=this.state,n=2;n<arguments.length;n+=2)this.lastX=arguments[n-1],this.lastY=arguments[n],this.path.push(this.format((this.lastX+e.dx)*e.scale)),this.path.push(this.format((this.lastY+e.dy)*e.scale))},mxAbstractCanvas2D.prototype.rotatePoint=function(e,n,t,a,i){return t*=Math.PI/180,mxUtils.getRotatedPoint(new mxPoint(e,n),Math.cos(t),Math.sin(t),new mxPoint(a,i))},mxAbstractCanvas2D.prototype.save=function(){this.states.push(this.state),this.state=mxUtils.clone(this.state)},mxAbstractCanvas2D.prototype.restore=function(){this.state=this.states.pop()},mxAbstractCanvas2D.prototype.scale=function(e){this.state.scale*=e,this.state.strokeWidth*=e},mxAbstractCanvas2D.prototype.translate=function(e,n){this.state.dx+=e,this.state.dy+=n},mxAbstractCanvas2D.prototype.setAlpha=function(e){this.state.alpha=e},mxAbstractCanvas2D.prototype.setFillColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fillColor=e,this.state.gradientColor=null},mxAbstractCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){(t=this.state).fillColor=e,t.fillAlpha=null!=r?r:1,t.gradientColor=n,t.gradientAlpha=null!=l?l:1,t.gradientDirection=o},mxAbstractCanvas2D.prototype.setStrokeColor=function(e){e==mxConstants.NONE&&(e=null),this.state.strokeColor=e},mxAbstractCanvas2D.prototype.setStrokeWidth=function(e){this.state.strokeWidth=e},mxAbstractCanvas2D.prototype.setDashed=function(e){this.state.dashed=e},mxAbstractCanvas2D.prototype.setDashPattern=function(e){this.state.dashPattern=e},mxAbstractCanvas2D.prototype.setLineCap=function(e){this.state.lineCap=e},mxAbstractCanvas2D.prototype.setLineJoin=function(e){this.state.lineJoin=e},mxAbstractCanvas2D.prototype.setMiterLimit=function(e){this.state.miterLimit=e},mxAbstractCanvas2D.prototype.setFontColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontColor=e},mxAbstractCanvas2D.prototype.setFontBackgroundColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBackgroundColor=e},mxAbstractCanvas2D.prototype.setFontBorderColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBorderColor=e},mxAbstractCanvas2D.prototype.setFontSize=function(e){this.state.fontSize=e},mxAbstractCanvas2D.prototype.setFontFamily=function(e){this.state.fontFamily=e},mxAbstractCanvas2D.prototype.setFontStyle=function(e){null==e&&(e=0),this.state.fontStyle=e},mxAbstractCanvas2D.prototype.setShadow=function(e){this.state.shadow=e},mxAbstractCanvas2D.prototype.setShadowColor=function(e){e==mxConstants.NONE&&(e=null),this.state.shadowColor=e},mxAbstractCanvas2D.prototype.setShadowAlpha=function(e){this.state.shadowAlpha=e},mxAbstractCanvas2D.prototype.setShadowOffset=function(e,n){this.state.shadowDx=e,this.state.shadowDy=n},mxAbstractCanvas2D.prototype.begin=function(){this.lastY=this.lastX=0,this.path=[]},mxAbstractCanvas2D.prototype.moveTo=function(e,n){this.addOp(this.moveOp,e,n)},mxAbstractCanvas2D.prototype.lineTo=function(e,n){this.addOp(this.lineOp,e,n)},mxAbstractCanvas2D.prototype.quadTo=function(e,n,t,a){this.addOp(this.quadOp,e,n,t,a)},mxAbstractCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){this.addOp(this.curveOp,e,n,t,a,i,s)},mxAbstractCanvas2D.prototype.arcTo=function(e,n,t,a,i,s,o){for(e=mxUtils.arcToCurves(this.lastX,this.lastY,e,n,t,a,i,s,o),n=0;n<e.length;n+=6)this.curveTo(e[n],e[n+1],e[n+2],e[n+3],e[n+4],e[n+5])},mxAbstractCanvas2D.prototype.close=function(e,n,t,a,i,s){this.addOp(this.closeOp)},mxAbstractCanvas2D.prototype.end=function(){},mxUtils.extend(mxXmlCanvas2D,mxAbstractCanvas2D),mxXmlCanvas2D.prototype.textEnabled=!0,mxXmlCanvas2D.prototype.compressed=!0,mxXmlCanvas2D.prototype.writeDefaults=function(){var e;(e=this.createElement("fontfamily")).setAttribute("family",mxConstants.DEFAULT_FONTFAMILY),this.root.appendChild(e),(e=this.createElement("fontsize")).setAttribute("size",mxConstants.DEFAULT_FONTSIZE),this.root.appendChild(e),(e=this.createElement("shadowcolor")).setAttribute("color",mxConstants.SHADOWCOLOR),this.root.appendChild(e),(e=this.createElement("shadowalpha")).setAttribute("alpha",mxConstants.SHADOW_OPACITY),this.root.appendChild(e),(e=this.createElement("shadowoffset")).setAttribute("dx",mxConstants.SHADOW_OFFSET_X),e.setAttribute("dy",mxConstants.SHADOW_OFFSET_Y),this.root.appendChild(e)},mxXmlCanvas2D.prototype.format=function(e){return parseFloat(parseFloat(e).toFixed(2))},mxXmlCanvas2D.prototype.createElement=function(e){return this.root.ownerDocument.createElement(e)},mxXmlCanvas2D.prototype.save=function(){this.compressed&&mxAbstractCanvas2D.prototype.save.apply(this,arguments),this.root.appendChild(this.createElement("save"))},mxXmlCanvas2D.prototype.restore=function(){this.compressed&&mxAbstractCanvas2D.prototype.restore.apply(this,arguments),this.root.appendChild(this.createElement("restore"))},mxXmlCanvas2D.prototype.scale=function(e){if(this.compressed){if(this.state.scale==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("scale");n.setAttribute("scale",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.translate=function(e,n){var t=this.createElement("translate");t.setAttribute("dx",this.format(e)),t.setAttribute("dy",this.format(n)),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rotate=function(e,n,t,a,i){var s=this.createElement("rotate");(0!=e||n||t)&&(s.setAttribute("theta",this.format(e)),s.setAttribute("flipH",n?"1":"0"),s.setAttribute("flipV",t?"1":"0"),s.setAttribute("cx",this.format(a)),s.setAttribute("cy",this.format(i)),this.root.appendChild(s))},mxXmlCanvas2D.prototype.setAlpha=function(e){if(this.compressed){if(this.state.alpha==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("alpha");n.setAttribute("alpha",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFillColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fillColor==e)return;mxAbstractCanvas2D.prototype.setFillColor.apply(this,arguments)}var n=this.createElement("fillcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){if(null!=e&&null!=n){mxAbstractCanvas2D.prototype.setGradient.apply(this,arguments);var d=this.createElement("gradient");d.setAttribute("c1",e),d.setAttribute("c2",n),d.setAttribute("x",this.format(t)),d.setAttribute("y",this.format(a)),d.setAttribute("w",this.format(i)),d.setAttribute("h",this.format(s)),null!=o&&d.setAttribute("direction",o),null!=r&&d.setAttribute("alpha1",r),null!=l&&d.setAttribute("alpha2",l),this.root.appendChild(d)}},mxXmlCanvas2D.prototype.setStrokeColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.strokeColor==e)return;mxAbstractCanvas2D.prototype.setStrokeColor.apply(this,arguments)}var n=this.createElement("strokecolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setStrokeWidth=function(e){if(this.compressed){if(this.state.strokeWidth==e)return;mxAbstractCanvas2D.prototype.setStrokeWidth.apply(this,arguments)}var n=this.createElement("strokewidth");n.setAttribute("width",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashed=function(e){if(this.compressed){if(this.state.dashed==e)return;mxAbstractCanvas2D.prototype.setDashed.apply(this,arguments)}var n=this.createElement("dashed");n.setAttribute("dashed",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashPattern=function(e){if(this.compressed){if(this.state.dashPattern==e)return;mxAbstractCanvas2D.prototype.setDashPattern.apply(this,arguments)}var n=this.createElement("dashpattern");n.setAttribute("pattern",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineCap=function(e){if(this.compressed){if(this.state.lineCap==e)return;mxAbstractCanvas2D.prototype.setLineCap.apply(this,arguments)}var n=this.createElement("linecap");n.setAttribute("cap",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineJoin=function(e){if(this.compressed){if(this.state.lineJoin==e)return;mxAbstractCanvas2D.prototype.setLineJoin.apply(this,arguments)}var n=this.createElement("linejoin");n.setAttribute("join",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setMiterLimit=function(e){if(this.compressed){if(this.state.miterLimit==e)return;mxAbstractCanvas2D.prototype.setMiterLimit.apply(this,arguments)}var n=this.createElement("miterlimit");n.setAttribute("limit",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFontColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontColor==e)return;mxAbstractCanvas2D.prototype.setFontColor.apply(this,arguments)}var n=this.createElement("fontcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBackgroundColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBackgroundColor==e)return;mxAbstractCanvas2D.prototype.setFontBackgroundColor.apply(this,arguments)}var n=this.createElement("fontbackgroundcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBorderColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBorderColor==e)return;mxAbstractCanvas2D.prototype.setFontBorderColor.apply(this,arguments)}var n=this.createElement("fontbordercolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontSize=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontSize==e)return;mxAbstractCanvas2D.prototype.setFontSize.apply(this,arguments)}var n=this.createElement("fontsize");n.setAttribute("size",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontFamily=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontFamily==e)return;mxAbstractCanvas2D.prototype.setFontFamily.apply(this,arguments)}var n=this.createElement("fontfamily");n.setAttribute("family",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontStyle=function(e){if(this.textEnabled){if(null==e&&(e=0),this.compressed){if(this.state.fontStyle==e)return;mxAbstractCanvas2D.prototype.setFontStyle.apply(this,arguments)}var n=this.createElement("fontstyle");n.setAttribute("style",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setShadow=function(e){if(this.compressed){if(this.state.shadow==e)return;mxAbstractCanvas2D.prototype.setShadow.apply(this,arguments)}var n=this.createElement("shadow");n.setAttribute("enabled",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowColor=function(e){if(this.compressed){if(e==mxConstants.NONE&&(e=null),this.state.shadowColor==e)return;mxAbstractCanvas2D.prototype.setShadowColor.apply(this,arguments)}var n=this.createElement("shadowcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowAlpha=function(e){if(this.compressed){if(this.state.shadowAlpha==e)return;mxAbstractCanvas2D.prototype.setShadowAlpha.apply(this,arguments)}var n=this.createElement("shadowalpha");n.setAttribute("alpha",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowOffset=function(e,n){if(this.compressed){if(this.state.shadowDx==e&&this.state.shadowDy==n)return;mxAbstractCanvas2D.prototype.setShadowOffset.apply(this,arguments)}var t=this.createElement("shadowoffset");t.setAttribute("dx",e),t.setAttribute("dy",n),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rect=function(e,n,t,a){var i=this.createElement("rect");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){var o=this.createElement("roundrect");o.setAttribute("x",this.format(e)),o.setAttribute("y",this.format(n)),o.setAttribute("w",this.format(t)),o.setAttribute("h",this.format(a)),o.setAttribute("dx",this.format(i)),o.setAttribute("dy",this.format(s)),this.root.appendChild(o)},mxXmlCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.createElement("ellipse");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i);var l=this.createElement("image");l.setAttribute("x",this.format(e)),l.setAttribute("y",this.format(n)),l.setAttribute("w",this.format(t)),l.setAttribute("h",this.format(a)),l.setAttribute("src",i),l.setAttribute("aspect",s?"1":"0"),l.setAttribute("flipH",o?"1":"0"),l.setAttribute("flipV",r?"1":"0"),this.root.appendChild(l)},mxXmlCanvas2D.prototype.begin=function(){this.root.appendChild(this.createElement("begin")),this.lastY=this.lastX=0},mxXmlCanvas2D.prototype.moveTo=function(e,n){var t=this.createElement("move");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.lineTo=function(e,n){var t=this.createElement("line");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.createElement("quad");i.setAttribute("x1",this.format(e)),i.setAttribute("y1",this.format(n)),i.setAttribute("x2",this.format(t)),i.setAttribute("y2",this.format(a)),this.root.appendChild(i),this.lastX=t,this.lastY=a},mxXmlCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){var o=this.createElement("curve");o.setAttribute("x1",this.format(e)),o.setAttribute("y1",this.format(n)),o.setAttribute("x2",this.format(t)),o.setAttribute("y2",this.format(a)),o.setAttribute("x3",this.format(i)),o.setAttribute("y3",this.format(s)),this.root.appendChild(o),this.lastX=i,this.lastY=s},mxXmlCanvas2D.prototype.close=function(){this.root.appendChild(this.createElement("close"))},mxXmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){mxUtils.isNode(i)&&(i=mxUtils.getOuterHtml(i));var u=this.createElement("text");u.setAttribute("x",this.format(e)),u.setAttribute("y",this.format(n)),u.setAttribute("w",this.format(t)),u.setAttribute("h",this.format(a)),u.setAttribute("str",i),null!=s&&u.setAttribute("align",s),null!=o&&u.setAttribute("valign",o),u.setAttribute("wrap",r?"1":"0"),null==l&&(l=""),u.setAttribute("format",l),null!=d&&u.setAttribute("fill",d?"1":"0"),null!=c&&u.setAttribute("clip",c?"1":"0"),null!=m&&u.setAttribute("rotation",m),this.root.appendChild(u)}},mxXmlCanvas2D.prototype.stroke=function(){this.root.appendChild(this.createElement("stroke"))},mxXmlCanvas2D.prototype.fill=function(){this.root.appendChild(this.createElement("fill"))},mxXmlCanvas2D.prototype.fillAndStroke=function(){this.root.appendChild(this.createElement("fillstroke"))},mxUtils.extend(mxSvgCanvas2D,mxAbstractCanvas2D),mxSvgCanvas2D.prototype.node=null,mxSvgCanvas2D.prototype.matchHtmlAlignment=!0,mxSvgCanvas2D.prototype.textEnabled=!0,mxSvgCanvas2D.prototype.foEnabled=!0,mxSvgCanvas2D.prototype.strokeTolerance=0,mxSvgCanvas2D.prototype.refCount=0,mxSvgCanvas2D.prototype.blockImagePointerEvents=!1,mxSvgCanvas2D.prototype.reset=function(){mxAbstractCanvas2D.prototype.reset.apply(this,arguments),this.gradients=[]},mxSvgCanvas2D.prototype.createStyle=function(e){return(e=this.createElement("style")).setAttribute("type","text/css"),mxUtils.write(e,"svg{font-family:"+mxConstants.DEFAULT_FONTFAMILY+";font-size:"+mxConstants.DEFAULT_FONTSIZE+";fill:none;stroke-miterlimit:10}"),e},mxSvgCanvas2D.prototype.createElement=function(e,n){if(null!=this.root.ownerDocument.createElementNS)return this.root.ownerDocument.createElementNS(n||mxConstants.NS_SVG,e);var t=this.root.ownerDocument.createElement(e);return null!=n&&t.setAttribute("xmlns",n),t},mxSvgCanvas2D.prototype.createGradientId=function(e,n,t,a,i){return"#"==e.charAt(0)&&(e=e.substring(1)),"#"==n.charAt(0)&&(n=n.substring(1)),e=e.toLowerCase()+"-"+t,n=n.toLowerCase()+"-"+a,(t=null)==i||i==mxConstants.DIRECTION_SOUTH?t="s":i==mxConstants.DIRECTION_EAST?t="e":(a=e,e=n,n=a,i==mxConstants.DIRECTION_NORTH?t="s":i==mxConstants.DIRECTION_WEST&&(t="e")),"mx-gradient-"+e+"-"+n+"-"+t},mxSvgCanvas2D.prototype.getSvgGradient=function(e,n,t,a,i){var s=this.createGradientId(e,n,t,a,i),o=this.gradients[s];if(null==o){var r=this.root.ownerSVGElement,l=0,d=s+"-"+l;if(null!=r)for(o=r.ownerDocument.getElementById(d);null!=o&&o.ownerSVGElement!=r;)d=s+"-"+l++,o=r.ownerDocument.getElementById(d);else d="id"+ ++this.refCount;null==o&&((o=this.createSvgGradient(e,n,t,a,i)).setAttribute("id",d),null!=this.defs?this.defs.appendChild(o):r.appendChild(o)),this.gradients[s]=o}return o.getAttribute("id")},mxSvgCanvas2D.prototype.createSvgGradient=function(e,n,t,a,i){var s=this.createElement("linearGradient");return s.setAttribute("x1","0%"),s.setAttribute("y1","0%"),s.setAttribute("x2","0%"),s.setAttribute("y2","0%"),null==i||i==mxConstants.DIRECTION_SOUTH?s.setAttribute("y2","100%"):i==mxConstants.DIRECTION_EAST?s.setAttribute("x2","100%"):i==mxConstants.DIRECTION_NORTH?s.setAttribute("y1","100%"):i==mxConstants.DIRECTION_WEST&&s.setAttribute("x1","100%"),t=t<1?";stop-opacity:"+t:"",(i=this.createElement("stop")).setAttribute("offset","0%"),i.setAttribute("style","stop-color:"+e+t),s.appendChild(i),t=a<1?";stop-opacity:"+a:"",(i=this.createElement("stop")).setAttribute("offset","100%"),i.setAttribute("style","stop-color:"+n+t),s.appendChild(i),s},mxSvgCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("path"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.setAttribute("d",this.path.join(" "))}e&&null!=a.fillColor?this.updateFill():this.styleEnabled||("ellipse"!=t.nodeName||!mxClient.IS_NS||mxClient.IS_GC||mxClient.IS_SF?t.setAttribute("fill","none"):t.setAttribute("fill","transparent"),e=!1),n&&null!=a.strokeColor?this.updateStroke():this.styleEnabled||t.setAttribute("stroke","none"),null!=a.transform&&0<a.transform.length&&t.setAttribute("transform",a.transform),a.shadow&&this.root.appendChild(this.createShadow(t)),0<this.strokeTolerance&&!e&&this.root.appendChild(this.createTolerance(t)),this.pointerEvents&&("path"!=t.nodeName||this.path[this.path.length-1]==this.closeOp)&&t.setAttribute("pointer-events","all"),this.root.appendChild(t)}},mxSvgCanvas2D.prototype.updateFill=function(){var e=this.state;e.alpha<1&&this.node.setAttribute("fill-opacity",e.alpha),null!=e.fillColor&&(null!=e.gradientColor?(e=this.getSvgGradient(e.fillColor,e.gradientColor,e.fillAlpha,e.gradientAlpha,e.gradientDirection),this.node.setAttribute("fill","url(#"+e+")")):this.node.setAttribute("fill",e.fillColor.toLowerCase()))},mxSvgCanvas2D.prototype.updateStroke=function(){var e=this.state;this.node.setAttribute("stroke",e.strokeColor.toLowerCase()),e.alpha<1&&this.node.setAttribute("stroke-opacity",e.alpha);var n=Math.max(1,this.format(e.strokeWidth*e.scale));1!=n&&this.node.setAttribute("stroke-width",n),"path"==this.node.nodeName&&this.updateStrokeAttributes(),e.dashed&&this.node.setAttribute("stroke-dasharray",this.createDashPattern(n))},mxSvgCanvas2D.prototype.updateStrokeAttributes=function(){var e=this.state;if(null!=e.lineJoin&&"miter"!=e.lineJoin&&this.node.setAttribute("stroke-linejoin",e.lineJoin),null!=e.lineCap){var n=e.lineCap;"flat"==n&&(n="butt"),"butt"!=n&&this.node.setAttribute("stroke-linecap",n)}null!=e.miterLimit&&(!this.styleEnabled||10!=e.miterLimit)&&this.node.setAttribute("stroke-miterlimit",e.miterLimit)},mxSvgCanvas2D.prototype.createDashPattern=function(e){var n=this.state.dashPattern.split(" "),t=[];if(0<n.length)for(var a=0;a<n.length;a++)t[a]=Number(n[a])*e;return t.join(" ")},mxSvgCanvas2D.prototype.createTolerance=function(e){e=e.cloneNode(!0);var n=parseFloat(e.getAttribute("stroke-width")||1)+this.strokeTolerance;return e.setAttribute("pointer-events","stroke"),e.setAttribute("visibility","hidden"),e.removeAttribute("stroke-dasharray"),e.setAttribute("stroke-width",n),e.setAttribute("fill","none"),e.setAttribute("stroke",mxClient.IS_OP?"none":"white"),e},mxSvgCanvas2D.prototype.createShadow=function(e){e=e.cloneNode(!0);var n=this.state;return"none"!=e.getAttribute("fill")&&e.setAttribute("fill",n.shadowColor),"none"!=e.getAttribute("stroke")&&e.setAttribute("stroke",n.shadowColor),e.setAttribute("transform","translate("+this.format(n.shadowDx*n.scale)+","+this.format(n.shadowDy*n.scale)+")"+(n.transform||"")),e.setAttribute("opacity",n.shadowAlpha),e},mxSvgCanvas2D.prototype.rotate=function(e,n,t,a,i){if(0!=e||n||t){var s=this.state;if(a+=s.dx,i+=s.dy,a*=s.scale,i*=s.scale,s.transform=s.transform||"",n&&t)e+=180;else if(n^t){var o=n?a:0,r=n?-1:1,l=t?i:0,d=t?-1:1;s.transform+="translate("+this.format(o)+","+this.format(l)+")scale("+this.format(r)+","+this.format(d)+")translate("+this.format(-o)+","+this.format(-l)+")"}(n?!t:t)&&(e*=-1),0!=e&&(s.transform+="rotate("+this.format(e)+","+this.format(a)+","+this.format(i)+")"),s.rotation+=e,s.rotationCx=a,s.rotationCy=i}},mxSvgCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=this.createElement("path")},mxSvgCanvas2D.prototype.rect=function(e,n,t,a){var i=this.state,s=this.createElement("rect");s.setAttribute("x",this.format((e+i.dx)*i.scale)),s.setAttribute("y",this.format((n+i.dy)*i.scale)),s.setAttribute("width",this.format(t*i.scale)),s.setAttribute("height",this.format(a*i.scale)),this.node=s},mxSvgCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.rect(e,n,t,a),0<i&&this.node.setAttribute("rx",this.format(i*this.state.scale)),0<s&&this.node.setAttribute("ry",this.format(s*this.state.scale))},mxSvgCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.state,s=this.createElement("ellipse");s.setAttribute("cx",Math.round((e+t/2+i.dx)*i.scale)),s.setAttribute("cy",Math.round((n+a/2+i.dy)*i.scale)),s.setAttribute("rx",t/2*i.scale),s.setAttribute("ry",a/2*i.scale),this.node=s},mxSvgCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i),s=null==s||s,o=null!=o&&o,r=null!=r&&r;var l=this.state;e+=l.dx,n+=l.dy;var d=this.createElement("image");if(d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),null==d.setAttributeNS?d.setAttribute("xlink:href",i):d.setAttributeNS(mxConstants.NS_XLINK,"href",i),s||d.setAttribute("preserveAspectRatio","none"),l.alpha<1&&d.setAttribute("opacity",l.alpha),i=this.state.transform||"",o||r){var c=s=1,m=0,u=0;o&&(s=-1,m=-t-2*e),r&&(c=-1,u=-a-2*n),i+="scale("+s+","+c+")translate("+m+","+u+")"}0<i.length&&d.setAttribute("transform",i),this.root.appendChild(d),this.blockImagePointerEvents&&(d.setAttribute("style","pointer-events:none"),(d=this.createElement("rect")).setAttribute("visibility","hidden"),d.setAttribute("pointer-events","fill"),d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),this.root.appendChild(d))},mxSvgCanvas2D.prototype.createDiv=function(e,n,t,a,i){return t=this.state,a="display:inline-block;font-size:"+Math.round(t.fontSize)+"px;font-family:"+t.fontFamily+";color:"+t.fontColor+";line-height:"+Math.round(t.fontSize*mxConstants.LINE_HEIGHT)+"px;"+a,(t.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="font-weight:bold;"),(t.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="font-style:italic;"),(t.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a+="font-decoration:underline;"),n==mxConstants.ALIGN_CENTER?a+="text-align:center;":n==mxConstants.ALIGN_RIGHT&&(a+="text-align:right;"),n="",null!=t.fontBackgroundColor&&(n+="background-color:"+t.fontBackgroundColor+";"),null!=t.fontBorderColor&&(n+="border:1px solid "+t.fontBorderColor+";"),mxUtils.isNode(e)||((t=document.createElement("textarea")).innerHTML=e.replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=t.value,i?a+=n:0<n.length&&(e='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;'+n+'">'+e+"</div>")),!mxClient.IS_IE&&document.createElementNS?((i=document.createElementNS("http://www.w3.org/1999/xhtml","div")).setAttribute("style",a),mxUtils.isNode(e)?this.root.ownerDocument!=document?i.appendChild(e.cloneNode(!0)):i.appendChild(e):i.innerHTML=e,i):(mxUtils.isNode(e)&&this.root.ownerDocument!=document&&(e=e.outerHTML),e=e.replace(/<br>/g,"<br />").replace(/<hr>/g,"<hr />"),mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+a+'">'+e+"</div>").documentElement)},mxSvgCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){m=null!=m?m:0;var u=this.state;if(e+=u.dx,n+=u.dy,this.foEnabled&&"html"==l){var p="vertical-align:top;";if(c?(p+="overflow:hidden;",0<a&&(p+="max-height:"+Math.round(a)+"px;"),0<t&&(p+="width:"+Math.round(t)+"px;")):d&&(p+="width:"+Math.round(t)+"px;",0<a&&(p+="max-height:"+Math.round(a)+"px;")),r?(!c&&0<t&&(p+="width:"+Math.round(t)+"px;"),p+="white-space:normal;"):p+="white-space:nowrap;",r=this.createElement("g"),u.alpha<1&&r.setAttribute("opacity",u.alpha),(l=this.createElement("foreignObject")).setAttribute("pointer-events","all"),null!=(p=this.createDiv(i,s,o,p,d))){r.appendChild(l),this.root.appendChild(r);var g=0;if(mxClient.IS_IE&&!mxClient.IS_SVG){var v=document.createElement("div");v.style.cssText=p.getAttribute("style"),v.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",v.style.visibility="hidden",v.innerHTML=mxUtils.isNode(i)?i.outerHTML:i,document.body.appendChild(v),g=v.offsetWidth,a=mxClient.IS_QUIRKS&&0<a&&c?Math.min(a,v.offsetHeight+2):v.offsetHeight,v.parentNode.removeChild(v),l.appendChild(p)}else this.root.ownerDocument!=document?(p.style.visibility="hidden",document.body.appendChild(p),g=p.offsetWidth,a=p.offsetHeight,l.appendChild(p),p.style.visibility=""):(l.appendChild(p),g=p.offsetWidth,a=p.offsetHeight);t=d?Math.max(t,g):g,u.alpha<1&&r.setAttribute("opacity",u.alpha),d=i=0,s==mxConstants.ALIGN_CENTER?i-=t/2:s==mxConstants.ALIGN_RIGHT&&(i-=t),e+=i,o==mxConstants.ALIGN_MIDDLE?d-=a/2:o==mxConstants.ALIGN_BOTTOM&&(d-=a),n+=d,s=1!=u.scale?"scale("+u.scale+")":"",0!=u.rotation&&this.rotateHtml?(s+="rotate("+u.rotation+","+t/2+","+a/2+")",e=(n=this.rotatePoint((e+t/2)*u.scale,(n+a/2)*u.scale,u.rotation,u.rotationCx,u.rotationCy)).x-t*u.scale/2,n=n.y-a*u.scale/2):(e*=u.scale,n*=u.scale),0!=m&&(s+="rotate("+m+","+-i+","+-d+")"),r.setAttribute("transform","translate("+Math.round(e)+","+Math.round(n)+")"+s),l.setAttribute("width",Math.round(Math.max(1,t))),l.setAttribute("height",Math.round(Math.max(1,a)))}}else this.plainText(e,n,t,a,i,s,o,r,d,c,m)}},mxSvgCanvas2D.prototype.createClip=function(e,n,t,a){for(var i="mx-clip-"+(e=Math.round(e))+"-"+(n=Math.round(n))+"-"+(t=Math.round(t))+"-"+(a=Math.round(a)),s=0,o=i+"-"+s;null!=document.getElementById(o);)o=i+"-"+ ++s;return clip=this.createElement("clipPath"),clip.setAttribute("id",o),(i=this.createElement("rect")).setAttribute("x",e),i.setAttribute("y",n),i.setAttribute("width",t),i.setAttribute("height",a),clip.appendChild(i),clip},mxSvgCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c){c=null!=c?c:0,r=this.state;var m=Math.round(r.fontSize),u=this.createElement("g"),p=r.transform||"";if(0!=c&&(p+="rotate("+c+","+this.format(e*r.scale)+","+this.format(n*r.scale)+")"),d&&0<t&&0<a){var g=e;c=n,s==mxConstants.ALIGN_CENTER?g-=t/2:s==mxConstants.ALIGN_RIGHT&&(g-=t),o==mxConstants.ALIGN_MIDDLE?c-=a/2:o==mxConstants.ALIGN_BOTTOM&&(c-=a),c=this.createClip(g*r.scale-2,c*r.scale-2,t*r.scale+4,a*r.scale+4),null!=this.defs?this.defs.appendChild(c):this.root.appendChild(c),u.setAttribute("clip-path","url(#"+c.getAttribute("id")+")")}this.updateFont(u,s),"start"!=(c=s==mxConstants.ALIGN_RIGHT?"end":s==mxConstants.ALIGN_CENTER?"middle":"start")&&u.setAttribute("text-anchor",c),(!this.styleEnabled||m!=mxConstants.DEFAULT_FONTSIZE)&&u.setAttribute("font-size",Math.round(m*r.scale)+"px"),0<p.length&&u.setAttribute("transform",p),r.alpha<1&&u.setAttribute("opacity",r.alpha);p=i.split("\n"),g=Math.round(m*mxConstants.LINE_HEIGHT);var v=m+(p.length-1)*g;for(c=n+m-1,o==mxConstants.ALIGN_MIDDLE?c-=(a=(this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)/2)+1:o==mxConstants.ALIGN_BOTTOM&&(c-=(a=this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)+2),a=0;a<p.length;a++)0<p[a].length&&0<mxUtils.trim(p[a]).length&&((d=this.createElement("text")).setAttribute("x",this.format(e*r.scale)),d.setAttribute("y",this.format(c*r.scale)),mxUtils.write(d,p[a]),u.appendChild(d)),c+=g;this.root.appendChild(u),this.addTextBackground(u,i,e,n,t,v,s,o,l)},mxSvgCanvas2D.prototype.updateFont=function(e){var n=this.state;e.setAttribute("fill",n.fontColor),(!this.styleEnabled||n.fontFamily!=mxConstants.DEFAULT_FONTFAMILY)&&e.setAttribute("font-family",n.fontFamily),(n.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&e.setAttribute("font-weight","bold"),(n.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&e.setAttribute("font-style","italic"),(n.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.setAttribute("text-decoration","underline")},mxSvgCanvas2D.prototype.addTextBackground=function(e,n,t,a,i,s,o,r,l){var d=this.state;if(null!=d.fontBackgroundColor||null!=d.fontBorderColor){var c=null;null!=(c=l?(o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,a*d.scale,(i-2)*d.scale,(s+2)*d.scale)):null!=e.getBBox&&this.root.ownerDocument==document?(c=e.getBBox(),n=mxClient.IS_IE&&mxClient.IS_SVG,new mxRectangle(c.x,c.y+(n?0:1),c.width,c.height+(n?1:0))):((c=document.createElement("div")).style.lineHeight=Math.round(d.fontSize*mxConstants.LINE_HEIGHT)+"px",c.style.fontSize=Math.round(d.fontSize)+"px",c.style.fontFamily=d.fontFamily,c.style.whiteSpace="nowrap",c.style.position="absolute",c.style.visibility="hidden",c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",c.style.zoom="1",(d.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(c.style.fontWeight="bold"),(d.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(c.style.fontStyle="italic"),n=mxUtils.htmlEntities(n,!1),c.innerHTML=n.replace(/\n/g,"<br/>"),document.body.appendChild(c),i=c.offsetWidth,s=c.offsetHeight,c.parentNode.removeChild(c),o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,(a+2)*d.scale,i*d.scale,(s+1)*d.scale)))&&((n=this.createElement("rect")).setAttribute("fill",d.fontBackgroundColor||"none"),n.setAttribute("stroke",d.fontBorderColor||"none"),n.setAttribute("x",Math.floor(c.x-1)),n.setAttribute("y",Math.floor(c.y-1)),n.setAttribute("width",Math.ceil(c.width+2)),n.setAttribute("height",Math.ceil(c.height)),d=null!=d.fontBorderColor?Math.max(1,this.format(d.scale)):0,n.setAttribute("stroke-width",d),this.root.ownerDocument==document&&1==mxUtils.mod(d,2)&&n.setAttribute("transform","translate(0.5, 0.5)"),e.insertBefore(n,e.firstChild))}},mxSvgCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxSvgCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxSvgCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)};var mxVmlCanvas2D=function(e){mxAbstractCanvas2D.call(this),this.root=e};function mxGuide(e,n){this.graph=e,this.setStates(n)}function mxStencil(e){this.desc=e,this.parseDescription(),this.parseConstraints()}function mxShape(e){this.stencil=e,this.strokewidth=1,this.rotation=0,this.opacity=100,this.flipV=this.flipH=!1}mxUtils.extend(mxVmlCanvas2D,mxAbstractCanvas2D),mxVmlCanvas2D.prototype.node=null,mxVmlCanvas2D.prototype.textEnabled=!0,mxVmlCanvas2D.prototype.moveOp="m",mxVmlCanvas2D.prototype.lineOp="l",mxVmlCanvas2D.prototype.curveOp="c",mxVmlCanvas2D.prototype.closeOp="x",mxVmlCanvas2D.prototype.rotatedHtmlBackground="",mxVmlCanvas2D.prototype.vmlScale=1,mxVmlCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("shape"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.path=this.path.join(" ")+" e",t.style.width=this.root.style.width,t.style.height=this.root.style.height,t.coordsize=parseInt(t.style.width)+" "+parseInt(t.style.height)}t.strokeweight=this.format(Math.max(1,a.strokeWidth*a.scale/this.vmlScale))+"px",a.shadow&&this.root.appendChild(this.createShadow(t,e&&null!=a.fillColor,n&&null!=a.strokeColor)),n&&null!=a.strokeColor?(t.stroked="true",t.strokecolor=a.strokeColor):t.stroked="false",t.appendChild(this.createStroke()),e&&null!=a.fillColor?t.appendChild(this.createFill()):!this.pointerEvents||"shape"==t.nodeName&&this.path[this.path.length-1]!=this.closeOp?t.filled="false":t.appendChild(this.createTransparentFill()),this.root.appendChild(t)}},mxVmlCanvas2D.prototype.createTransparentFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.src=mxClient.imageBasePath+"/transparent.gif",e.type="tile",e},mxVmlCanvas2D.prototype.createFill=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":fill");if(n.color=e.fillColor,null!=e.gradientColor){n.type="gradient",n.method="none",n.color2=e.gradientColor;var t=180-e.rotation;t=e.gradientDirection==mxConstants.DIRECTION_WEST?t-(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_EAST?t+(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_NORTH?t-(180+("y"==this.root.style.flip?-180:0)):t+("y"==this.root.style.flip?-180:0);"x"!=this.root.style.flip&&"y"!=this.root.style.flip||(t*=-1),n.angle=mxUtils.mod(t,360),n.opacity=100*e.alpha*e.fillAlpha+"%",n.setAttribute(mxClient.OFFICE_PREFIX+":opacity2",100*e.alpha*e.gradientAlpha+"%")}else e.alpha<1&&(n.opacity=100*e.alpha+"%");return n},mxVmlCanvas2D.prototype.createStroke=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":stroke");return n.endcap=e.lineCap||"flat",n.joinstyle=e.lineJoin||"miter",n.miterlimit=e.miterLimit||"10",e.alpha<1&&(n.opacity=100*e.alpha+"%"),e.dashed&&(n.dashstyle=this.getVmlDashStyle()),n},mxVmlCanvas2D.prototype.getVmlDashStyle=function(){var e="dash";if(null!=this.state.dashPattern){var n=this.state.dashPattern.split(" ");0<n.length&&1==n[0]&&(e="0 2")}return e},mxVmlCanvas2D.prototype.createShadow=function(e,n,t){var a=this.state,i=-a.rotation*(Math.PI/180),s=Math.cos(i),o=(i=Math.sin(i),a.shadowDx*a.scale),r=a.shadowDy*a.scale;"x"==this.root.style.flip?o*=-1:"y"==this.root.style.flip&&(r*=-1);var l=e.cloneNode(!0);return l.style.marginLeft=Math.round(o*s-r*i)+"px",l.style.marginTop=Math.round(o*i+r*s)+"px",8==document.documentMode&&(l.strokeweight=e.strokeweight,"shape"==e.nodeName&&(l.path=this.path.join(" ")+" e",l.style.width=this.root.style.width,l.style.height=this.root.style.height,l.coordsize=parseInt(e.style.width)+" "+parseInt(e.style.height))),t?(l.strokecolor=a.shadowColor,l.appendChild(this.createShadowStroke())):l.stroked="false",n?l.appendChild(this.createShadowFill()):l.filled="false",l},mxVmlCanvas2D.prototype.createShadowFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.color=this.state.shadowColor,e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.createShadowStroke=function(){var e=this.createStroke();return e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.rotate=function(e,n,t,a,i){n&&t?e+=180:n?this.root.style.flip="x":t&&(this.root.style.flip="y"),(n?!t:t)&&(e*=-1),this.root.style.rotation=e,this.state.rotation+=e,this.state.rotationCx=a,this.state.rotationCy=i},mxVmlCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=document.createElement(mxClient.VML_PREFIX+":shape"),this.node.style.position="absolute"},mxVmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.state,s=(this.lastX+i.dx)*i.scale,o=(this.lastY+i.dy)*i.scale;e=(e+i.dx)*i.scale;o+=2/3*((n=(n+i.dy)*i.scale)-o);var r=(t=(t+i.dx)*i.scale)+2/3*(e-t);n=(a=(a+i.dy)*i.scale)+2/3*(n-a),this.path.push("c "+this.format(s+2/3*(e-s))+" "+this.format(o)+" "+this.format(r)+" "+this.format(n)+" "+this.format(t)+" "+this.format(a)),this.lastX=t/i.scale-i.dx,this.lastY=a/i.scale-i.dy},mxVmlCanvas2D.prototype.createRect=function(e,n,t,a,i){var s=this.state;return(e=document.createElement(e)).style.position="absolute",e.style.left=this.format((n+s.dx)*s.scale)+"px",e.style.top=this.format((t+s.dy)*s.scale)+"px",e.style.width=this.format(a*s.scale)+"px",e.style.height=this.format(i*s.scale)+"px",e},mxVmlCanvas2D.prototype.rect=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)},mxVmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.node=this.createRect(mxClient.VML_PREFIX+":roundrect",e,n,t,a),this.node.setAttribute("arcsize",Math.max(100*i/t,100*s/a)+"%")},mxVmlCanvas2D.prototype.ellipse=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":oval",e,n,t,a)},mxVmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){var l=null;s?((l=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)).stroked="false",(e=document.createElement(mxClient.VML_PREFIX+":fill")).aspect=s?"atmost":"ignore",e.rotate="true",e.type="frame",e.src=i,l.appendChild(e)):(l=this.createRect(mxClient.VML_PREFIX+":image",e,n,t,a)).src=i,o&&r?l.style.rotation="180":o?l.style.flip="x":r&&(l.style.flip="y"),this.state.alpha<1&&(l.style.filter+="alpha(opacity="+100*this.state.alpha+")"),this.root.appendChild(l)},mxVmlCanvas2D.prototype.createDiv=function(e,n,t,a){t=document.createElement("div");var i=this.state,s="";return null!=i.fontBackgroundColor&&(s+="background-color:"+i.fontBackgroundColor+";"),null!=i.fontBorderColor&&(s+="border:1px solid "+i.fontBorderColor+";"),mxUtils.isNode(e)?t.appendChild(e):0<s.length&&!a?((a=document.createElement("div")).style.cssText=s,a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,t.appendChild(a)):(t.style.cssText=s,t.innerHTML=e),(e=t.style).fontSize=Math.round(i.fontSize/this.vmlScale)+"px",e.fontFamily=i.fontFamily,e.color=i.fontColor,e.verticalAlign="top",e.textAlign=n||"left",e.lineHeight=Math.round(i.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale)+"px",(i.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(e.fontWeight="bold"),(i.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(e.fontStyle="italic"),(i.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(e.fontDecoration="underline"),t},mxVmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){var u=this.state;if("html"==l){null!=u.rotation&&(e=(n=this.rotatePoint(e,n,u.rotation,u.rotationCx,u.rotationCy)).x,n=n.y),8==document.documentMode?(e+=u.dx,n+=u.dy):(e*=u.scale,n*=u.scale),(l=8==document.documentMode?document.createElement(mxClient.VML_PREFIX+":group"):document.createElement("div")).style.position="absolute",l.style.display="inline",l.style.left=this.format(e)+"px",l.style.top=this.format(n)+"px",l.style.zoom=u.scale;var p=document.createElement("div");p.style.position="relative",p.style.display="inline";var g=(v=mxUtils.getAlignmentAsPoint(s,o)).x,v=v.y;if(i=this.createDiv(i,s,o,d),s=document.createElement("div"),r?(!c&&0<t&&(i.style.width=Math.round(t)+"px"),i.style.whiteSpace="normal"):i.style.whiteSpace="nowrap",r=u.rotation+(m||0),this.rotateHtml&&0!=r?(s.style.display="inline",s.style.zoom="1",s.appendChild(i),8==document.documentMode&&"DIV"!=this.root.nodeName?(p.appendChild(s),l.appendChild(p)):l.appendChild(s)):8==document.documentMode?(p.appendChild(i),l.appendChild(p)):(i.style.display="inline",l.appendChild(i)),"DIV"!=this.root.nodeName?((m=document.createElement(mxClient.VML_PREFIX+":rect")).stroked="false",m.filled="false",m.appendChild(l),this.root.appendChild(m)):this.root.appendChild(l),c?(i.style.overflow="hidden",0<t&&(i.style.width=Math.round(t)+"px"),0<a&&8==document.documentMode&&(i.style.maxHeight=Math.round(a)+"px")):d&&(i.style.width=t+"px",0<a&&(i.style.maxHeight=Math.round(a)+"px")),this.rotateHtml&&0!=r){t=r*(Math.PI/180),r=parseFloat(parseFloat(Math.cos(t)).toFixed(8)),m=parseFloat(parseFloat(Math.sin(-t)).toFixed(8)),(t%=2*Math.PI)<0&&(t+=2*Math.PI),(t%=Math.PI)>Math.PI/2&&(t=Math.PI-t),o=Math.cos(t);var h=Math.sin(t);8==document.documentMode&&(i.style.display="inline-block",s.style.display="inline-block",p.style.display="inline-block"),i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&(c||d)&&a<p&&(p=a,i.style.height=p+"px"),c=((a=p)-a*o+t*-h)/2-m*t*(g+.5)+r*a*(v+.5),d=(t-t*o+a*-h)/2+r*t*(g+.5)+m*a*(v+.5),"group"==l.nodeName&&"DIV"==this.root.nodeName?((g=document.createElement("div")).style.display="inline-block",g.style.position="absolute",g.style.left=this.format(e+(d-t/2)*u.scale)+"px",g.style.top=this.format(n+(c-a/2)*u.scale)+"px",l.parentNode.appendChild(g),g.appendChild(l)):(u=8==document.documentMode?1:u.scale,l.style.left=this.format(e+(d-t/2)*u)+"px",l.style.top=this.format(n+(c-a/2)*u)+"px"),s.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+r+", M12="+m+", M21="+-m+", M22="+r+", sizingMethod='auto expand')",s.style.backgroundColor=this.rotatedHtmlBackground,this.state.alpha<1&&(s.style.filter+="alpha(opacity="+100*this.state.alpha+")"),i.style.visibility="",s.appendChild(i)}else 8!=document.documentMode?(i.style.verticalAlign="top",this.state.alpha<1&&(l.style.filter="alpha(opacity="+100*this.state.alpha+")"),u=i.parentNode,i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&c&&a<p&&(p=a,i.style.height=p+"px"),a=p,i.style.visibility="",u.appendChild(i),l.style.left=this.format(e+t*g*this.state.scale)+"px",l.style.top=this.format(n+a*v*this.state.scale)+"px"):(this.state.alpha<1&&(i.style.filter="alpha(opacity="+100*this.state.alpha+")"),p.style.left=100*g+"%",p.style.top=100*v+"%")}else this.plainText(e,n,t,a,mxUtils.htmlEntities(i,!1),s,o,r,l,d,c,m)}},mxVmlCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c,m){e=(e+(a=this.state).dx)*a.scale,n=(n+a.dy)*a.scale,(t=document.createElement(mxClient.VML_PREFIX+":shape")).style.width="1px",t.style.height="1px",t.stroked="false",(d=document.createElement(mxClient.VML_PREFIX+":fill")).color=a.fontColor,d.opacity=100*a.alpha+"%",t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":path")).textpathok="true",d.v="m "+this.format(0)+" "+this.format(0)+" l "+this.format(1)+" "+this.format(0),t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":textpath")).style.cssText="v-text-align:"+s,d.style.align=s,d.style.fontFamily=a.fontFamily,d.string=i,d.on="true",s=Math.round(a.fontSize*a.scale/this.vmlScale),d.style.fontSize=s+"px",(a.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(d.style.fontWeight="bold"),(a.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(d.style.fontStyle="italic"),(a.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d.style.textDecoration="underline"),a=s+((i=i.split("\n")).length-1)*s*mxConstants.LINE_HEIGHT,s=i=0,o==mxConstants.ALIGN_BOTTOM?s=-a/2:o!=mxConstants.ALIGN_MIDDLE&&(s=a/2),null!=m&&(o=(t.style.rotation=m)*(Math.PI/180),i=Math.sin(o)*s,s*=Math.cos(o)),t.appendChild(d),t.style.left=this.format(e-i)+"px",t.style.top=this.format(n+s)+"px",this.root.appendChild(t)},mxVmlCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxVmlCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxVmlCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)},mxGuide.prototype.graph=null,mxGuide.prototype.states=null,mxGuide.prototype.horizontal=!0,mxGuide.prototype.vertical=!0,mxGuide.prototype.guideX=null,mxGuide.prototype.guideY=null,mxGuide.prototype.setStates=function(e){this.states=e},mxGuide.prototype.isEnabledForEvent=function(e){return!0},mxGuide.prototype.getGuideTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxGuide.prototype.createGuideShape=function(e){return(e=new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)).isDashed=!0,e},mxGuide.prototype.move=function(a,e,n){if(null!=this.states&&(this.horizontal||this.vertical)&&null!=a&&null!=e){var t=this.graph.getView().translate,i=this.graph.getView().scale,s=e.x,o=e.y,r=!1,l=!1,d=f=this.getGuideTolerance(),c=f;(f=a.clone()).x+=e.x,f.y+=e.y;var m=f.x,u=f.x+f.width,p=f.getCenterX(),g=f.y,v=f.y+f.height,h=f.getCenterY();e=function(e){e+=this.graph.panDx;var n=!1;if(Math.abs(e-p)<d?(s=e-a.getCenterX(),d=Math.abs(e-p),n=!0):Math.abs(e-m)<d?(s=e-a.x,d=Math.abs(e-m),n=!0):Math.abs(e-u)<d&&(s=e-a.x-a.width,d=Math.abs(e-u),n=!0),n){null==this.guideX&&(this.guideX=this.createGuideShape(!0),this.guideX.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideX.pointerEvents=!1,this.guideX.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDx,this.guideX.points=[new mxPoint(e,-this.graph.panDy),new mxPoint(e,t.scrollHeight-3-this.graph.panDy)]}r=r||n};for(var f=function(e){e+=this.graph.panDy;var n=!1;if(Math.abs(e-h)<c?(o=e-a.getCenterY(),c=Math.abs(e-h),n=!0):Math.abs(e-g)<c?(o=e-a.y,c=Math.abs(e-g),n=!0):Math.abs(e-v)<c&&(o=e-a.y-a.height,c=Math.abs(e-v),n=!0),n){null==this.guideY&&(this.guideY=this.createGuideShape(!1),this.guideY.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideY.pointerEvents=!1,this.guideY.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDy,this.guideY.points=[new mxPoint(-this.graph.panDx,e),new mxPoint(t.scrollWidth-3-this.graph.panDx,e)]}l=l||n},b=0;b<this.states.length;b++){var A=this.states[b];null!=A&&(this.horizontal&&(e.call(this,A.getCenterX()),e.call(this,A.x),e.call(this,A.x+A.width)),this.vertical&&(f.call(this,A.getCenterY()),f.call(this,A.y),f.call(this,A.y+A.height)))}r||null==this.guideX?null!=this.guideX&&(this.guideX.node.style.visibility="visible",this.guideX.redraw()):this.guideX.node.style.visibility="hidden",l||null==this.guideY?null!=this.guideY&&(this.guideY.node.style.visibility="visible",this.guideY.redraw()):this.guideY.node.style.visibility="hidden",n&&(r||(n=a.x-(this.graph.snap(a.x/i-t.x)+t.x)*i,s=this.graph.snap(s/i)*i-n),l||(t=a.y-(this.graph.snap(a.y/i-t.y)+t.y)*i,o=this.graph.snap(o/i)*i-t)),e=new mxPoint(s,o)}return e},mxGuide.prototype.hide=function(){null!=this.guideX&&(this.guideX.node.style.visibility="hidden"),null!=this.guideY&&(this.guideY.node.style.visibility="hidden")},mxGuide.prototype.destroy=function(){null!=this.guideX&&(this.guideX.destroy(),this.guideX=null),null!=this.guideY&&(this.guideY.destroy(),this.guideY=null)},mxStencil.defaultLocalized=!1,mxStencil.prototype.desc=null,mxStencil.prototype.constraints=null,mxStencil.prototype.aspect=null,mxStencil.prototype.w0=null,mxStencil.prototype.h0=null,mxStencil.prototype.bgNode=null,mxStencil.prototype.fgNode=null,mxStencil.prototype.strokewidth=null,mxStencil.prototype.parseDescription=function(){this.fgNode=this.desc.getElementsByTagName("foreground")[0],this.bgNode=this.desc.getElementsByTagName("background")[0],this.w0=Number(this.desc.getAttribute("w")||100),this.h0=Number(this.desc.getAttribute("h")||100);var e=this.desc.getAttribute("aspect");this.aspect=null!=e?e:"variable",e=this.desc.getAttribute("strokewidth"),this.strokewidth=null!=e?e:"1"},mxStencil.prototype.parseConstraints=function(){var e=this.desc.getElementsByTagName("connections")[0];if(null!=e&&(null!=(e=mxUtils.getChildNodes(e))&&0<e.length)){this.constraints=[];for(var n=0;n<e.length;n++)this.constraints.push(this.parseConstraint(e[n]))}},mxStencil.prototype.parseConstraint=function(e){var n=Number(e.getAttribute("x")),t=Number(e.getAttribute("y"));return e="1"==e.getAttribute("perimeter"),new mxConnectionConstraint(new mxPoint(n,t),e)},mxStencil.prototype.evaluateTextAttribute=function(e,n,t){return n=this.evaluateAttribute(e,n,t),e=e.getAttribute("localized"),(mxStencil.defaultLocalized&&null==e||"1"==e)&&(n=mxResources.get(n)),n},mxStencil.prototype.evaluateAttribute=function(e,n,t){return null==(n=e.getAttribute(n))&&(null!=(e=mxUtils.getTextContent(e))&&("function"==typeof(e=mxUtils.eval(e))&&(n=e(t)))),n},mxStencil.prototype.drawShape=function(e,n,t,a,i,s){this.drawChildren(e,n,t,a,i,s,this.bgNode,!1),this.drawChildren(e,n,t,a,i,s,this.fgNode,!0)},mxStencil.prototype.drawChildren=function(e,n,t,a,i,s,o,r){if(null!=o){var l=mxUtils.getValue(n.style,mxConstants.STYLE_DIRECTION,null);for(t=this.computeAspect(n.style,t,a,i,s,l),a=Math.min(t.width,t.height),a="inherit"==this.strokewidth?Number(mxUtils.getNumber(n.style,mxConstants.STYLE_STROKEWIDTH,1)):Number(this.strokewidth)*a,e.setStrokeWidth(a),o=o.firstChild;null!=o;)o.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,o,t,r),o=o.nextSibling}},mxStencil.prototype.computeAspect=function(e,n,t,a,i,s){e=n,n=a/this.w0;var o=i/this.h0;if(s="north"==s||"south"==s){o=a/this.h0,n=i/this.w0;var r=(a-i)/2;e+=r,t-=r}return"fixed"==this.aspect&&(n=o=Math.min(n,o),s?(e+=(i-this.w0*n)/2,t+=(a-this.h0*o)/2):(e+=(a-this.w0*n)/2,t+=(i-this.h0*o)/2)),new mxRectangle(e,t,n,o)},mxStencil.prototype.drawNode=function(e,n,t,a,i){var s=t.nodeName,o=a.x,r=a.y,l=a.width,d=a.height,c=Math.min(l,d);if("save"==s)e.save();else if("restore"==s)e.restore();else if("path"==s)for(e.begin(),t=t.firstChild;null!=t;)t.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,t,a,i),t=t.nextSibling;else if("close"==s)e.close();else if("move"==s)e.moveTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("line"==s)e.lineTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("quad"==s)e.quadTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d);else if("curve"==s)e.curveTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d,o+Number(t.getAttribute("x3"))*l,r+Number(t.getAttribute("y3"))*d);else if("arc"==s)e.arcTo(Number(t.getAttribute("rx"))*l,Number(t.getAttribute("ry"))*d,Number(t.getAttribute("x-axis-rotation")),Number(t.getAttribute("large-arc-flag")),Number(t.getAttribute("sweep-flag")),o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("rect"==s)e.rect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("roundrect"==s)0==(n=t.getAttribute("arcsize"))&&(n=100*mxConstants.RECTANGLE_ROUNDING_FACTOR),c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,n=Number(n)/100,n=Math.min(c*n,a*n),e.roundrect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,c,a,n,n);else if("ellipse"==s)e.ellipse(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("image"==s)n=this.evaluateAttribute(t,"src",n),e.image(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d,n,!1,"1"==t.getAttribute("flipH"),"1"==t.getAttribute("flipV"));else if("text"==s){if(c=this.evaluateTextAttribute(t,"str",n),a="1"==t.getAttribute("vertical")?-90:0,"0"==t.getAttribute("align-shape")){var m=n.rotation,u=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPH,0);n=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPV,0),a=u&&n?a-m:u||n?a+m:a-m}a-=t.getAttribute("rotation"),e.text(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,0,0,c,t.getAttribute("align")||"left",t.getAttribute("valign")||"top",!1,"",!1,!1,a)}else if("include-shape"==s)null!=(m=mxStencilRegistry.getStencil(t.getAttribute("name")))&&(o+=Number(t.getAttribute("x"))*l,r+=Number(t.getAttribute("y"))*d,c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,m.drawShape(e,n,o,r,c,a));else if("fillstroke"==s)e.fillAndStroke();else if("fill"==s)e.fill();else if("stroke"==s)e.stroke();else if("strokewidth"==s)e.setStrokeWidth(Number(t.getAttribute("width"))*c);else if("dashed"==s)e.setDashed("1"==t.getAttribute("dashed"));else if("dashpattern"==s){if(null!=(t=t.getAttribute("pattern"))){for(t=t.split(" "),l=[],d=0;d<t.length;d++)0<t[d].length&&l.push(Number(t[d])*c);t=l.join(" "),e.setDashPattern(t)}}else"strokecolor"==s?e.setStrokeColor(t.getAttribute("color")):"linecap"==s?e.setLineCap(t.getAttribute("cap")):"linejoin"==s?e.setLineJoin(t.getAttribute("join")):"miterlimit"==s?e.setMiterLimit(Number(t.getAttribute("limit"))):"fillcolor"==s?e.setFillColor(t.getAttribute("color")):"alpha"==s?e.setAlpha(t.getAttribute("alpha")):"fontcolor"==s?e.setFontColor(t.getAttribute("color")):"fontstyle"==s?e.setFontStyle(t.getAttribute("style")):"fontfamily"==s?e.setFontFamily(t.getAttribute("family")):"fontsize"==s&&e.setFontSize(Number(t.getAttribute("size"))*c);i&&("fillstroke"==s||"fill"==s||"stroke"==s)&&e.setShadow(!1)},mxShape.prototype.dialect=null,mxShape.prototype.scale=1,mxShape.prototype.bounds=null,mxShape.prototype.points=null,mxShape.prototype.node=null,mxShape.prototype.style=null,mxShape.prototype.style=null,mxShape.prototype.boundingBox=null,mxShape.prototype.stencil=null,mxShape.prototype.svgStrokeTolerance=6,mxShape.prototype.pointerEvents=!0,mxShape.prototype.stencilPointerEvents=!1,mxShape.prototype.vmlScale=1,mxShape.prototype.init=function(e){null==this.node&&(this.node=this.create(e),null!=e&&e.appendChild(this.node))},mxShape.prototype.isParseVml=function(){return!0},mxShape.prototype.isHtmlAllowed=function(){return!1},mxShape.prototype.getSvgScreenOffset=function(){return 1==mxUtils.mod(Math.max(1,Math.round(this.strokewidth*this.scale)),2)?.5:0},mxShape.prototype.create=function(e){return null!=e.ownerSVGElement?this.createSvg(e):8==document.documentMode||this.dialect==mxConstants.DIALECT_SVG||this.dialect!=mxConstants.DIALECT_VML&&this.isHtmlAllowed()?this.createHtml(e):this.createVml(e)},mxShape.prototype.createSvg=function(){return document.createElementNS(mxConstants.NS_SVG,"g")},mxShape.prototype.createVml=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e},mxShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxShape.prototype.reconfigure=function(){this.redraw()},mxShape.prototype.redraw=function(){this.updateBoundsFromPoints(),this.checkBounds()?(this.node.style.visibility="","DIV"==this.node.nodeName&&this.isHtmlAllowed()?this.redrawHtmlShape():this.redrawShape(),this.updateBoundingBox()):(this.node.style.visibility="hidden",this.boundingBox=null)},mxShape.prototype.updateBoundsFromPoints=function(){var e=this.points;if(null!=e&&0<e.length&&null!=e[0]){this.bounds=new mxRectangle(Number(e[0].x),Number(e[0].y),1,1);for(var n=1;n<this.points.length;n++)null!=e[n]&&this.bounds.add(new mxRectangle(Number(e[n].x),Number(e[n].y),1,1))}},mxShape.prototype.checkBounds=function(){return null!=this.bounds&&!isNaN(this.bounds.x)&&!isNaN(this.bounds.y)&&!isNaN(this.bounds.width)&&!isNaN(this.bounds.height)&&0<this.bounds.width&&0<this.bounds.height},mxShape.prototype.createVmlGroup=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e.style.width=this.node.style.width,e.style.height=this.node.style.height,e},mxShape.prototype.redrawShape=function(){var e=this.createCanvas();for(e.pointerEvents=this.pointerEvents;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);this.paint(e),this.node!=e.root&&this.node.insertAdjacentHTML("beforeend",e.root.outerHTML),"DIV"==this.node.nodeName&&8==document.documentMode&&(this.node.style.filter="",(null==this.stencil||!this.stencilPointerEvents)&&mxUtils.addTransparentBackgroundFilter(this.node)),this.destroyCanvas(e)},mxShape.prototype.createCanvas=function(){var e=null,n=null;if(null!=this.node.ownerSVGElement)(e=new mxSvgCanvas2D(this.node,!1)).strokeTolerance=this.svgStrokeTolerance,e.blockImagePointerEvents=mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC,0!=(n=this.getSvgScreenOffset())?this.node.setAttribute("transform","translate("+n+","+n+")"):this.node.removeAttribute("transform");else{this.updateVmlContainer();var t=Math.max(1,Math.round(this.bounds.width)),a=Math.max(1,Math.round(this.bounds.height));n=8==document.documentMode&&this.isParseVml()?this.createVmlGroup():this.node,e=new mxVmlCanvas2D(n,!1);""!=n.tagUrn&&(n.coordsize=t*this.vmlScale+","+a*this.vmlScale,e.scale(this.vmlScale),e.vmlScale=this.vmlScale),n=this.scale,e.translate(-Math.round(this.bounds.x/n),-Math.round(this.bounds.y/n))}return e},mxShape.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px";var e=Math.max(1,Math.round(this.bounds.width)),n=Math.max(1,Math.round(this.bounds.height));this.node.style.width=e+"px",this.node.style.height=n+"px",this.node.style.overflow="visible"},mxShape.prototype.destroyCanvas=function(e){if(e instanceof mxSvgCanvas2D){for(var n in e.gradients){var t=e.gradients[n];t.mxRefCount=(t.mxRefCount||0)+1}this.releaseSvgGradients(this.oldGradients),this.oldGradients=e.gradients}},mxShape.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n,s=this.bounds.height/n;if(this.isPaintBoundsInverted()){t=t+(o=(i-s)/2),a=a-o;var o=i;i=s,s=o}if(this.updateTransform(e,t,a,i,s),this.configureCanvas(e,t,a,i,s),null!=this.stencil)this.paintStencilShape(e,t,a,i,s);else if(e.setStrokeWidth(this.strokewidth),null!=this.points){for(t=[],a=0;a<this.points.length;a++)t.push(new mxPoint(this.points[a].x/n,this.points[a].y/n));this.paintEdgeShape(e,t)}else this.paintVertexShape(e,t,a,i,s)},mxShape.prototype.configureCanvas=function(e,n,t,a,i){var s=null;null!=this.style&&(s=this.style.dashPattern),e.setAlpha(this.opacity/100),null!=this.isShadow&&e.setShadow(this.isShadow),null!=this.isDashed&&e.setDashed(this.isDashed),null!=s&&e.setDashPattern(s),null!=this.gradient?(n=this.getGradientBounds(e,n,t,a,i),e.setGradient(this.fill,this.gradient,n.x,n.y,n.width,n.height,this.gradientDirection)):e.setFillColor(this.fill),e.setStrokeColor(this.stroke)},mxShape.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,i)},mxShape.prototype.updateTransform=function(e,n,t,a,i){e.scale(this.scale),e.rotate(this.getShapeRotation(),this.flipH,this.flipV,n+a/2,t+i/2)},mxShape.prototype.paintStencilShape=function(e,n,t,a,i){this.stencilPointerEvents&&(this.dialect==mxConstants.DIALECT_SVG?this.addTransparentBackgroundRectangle(this.node,n,t,a,i):8!=document.documentMode&&this.setTransparentBackgroundImage(this.node)),this.stencil.drawShape(e,this,n,t,a,i)},mxShape.prototype.paintVertexShape=function(e,n,t,a,i){this.paintBackground(e,n,t,a,i),e.setShadow(!1),this.paintForeground(e,n,t,a,i)},mxShape.prototype.paintBackground=function(e,n,t,a,i){},mxShape.prototype.paintForeground=function(e,n,t,a,i){},mxShape.prototype.paintEdgeShape=function(e,n){},mxShape.prototype.getArcSize=function(e,n){var t=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;return Math.min(e*t,n*t)},mxShape.prototype.paintGlassEffect=function(e,n,t,a,i,s){var o=Math.ceil(this.strokewidth/2);e.setGradient("#ffffff","#ffffff",n,t,a,.6*i,"south",.9,.1),e.begin(),s+=2*o,this.isRounded?(e.moveTo(n-o+s,t-o),e.quadTo(n-o,t-o,n-o,t-o+s),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o+s),e.quadTo(n+a+o,t-o,n+a+o-s,t-o)):(e.moveTo(n-o,t-o),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o)),e.close(),e.fill()},mxShape.prototype.apply=function(e){this.state=e,this.style=e.style,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_FILLCOLOR,this.fill),this.gradient=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENTCOLOR,this.gradient),this.gradientDirection=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENT_DIRECTION,this.gradientDirection),this.opacity=mxUtils.getValue(this.style,mxConstants.STYLE_OPACITY,this.opacity),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,this.stroke),this.strokewidth=mxUtils.getNumber(this.style,mxConstants.STYLE_STROKEWIDTH,this.strokewidth),this.spacing=mxUtils.getValue(this.style,mxConstants.STYLE_SPACING,this.spacing),this.startSize=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,this.startSize),this.endSize=mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,this.endSize),this.startArrow=mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,this.startArrow),this.endArrow=mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,this.endArrow),this.rotation=mxUtils.getValue(this.style,mxConstants.STYLE_ROTATION,this.rotation),this.direction=mxUtils.getValue(this.style,mxConstants.STYLE_DIRECTION,this.direction),this.flipH=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPH,0),this.flipV=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPV,0),null!=this.stencil&&(this.flipH=1==mxUtils.getValue(this.style,"stencilFlipH",0)||this.flipH,this.flipV=1==mxUtils.getValue(this.style,"stencilFlipV",0)||this.flipV),"north"!=this.direction&&"south"!=this.direction||(e=this.flipH,this.flipH=this.flipV,this.flipV=e),this.isShadow=1==mxUtils.getValue(this.style,mxConstants.STYLE_SHADOW,this.isShadow),this.isDashed=1==mxUtils.getValue(this.style,mxConstants.STYLE_DASHED,this.isDashed),this.isRounded=1==mxUtils.getValue(this.style,mxConstants.STYLE_ROUNDED,this.isRounded),this.glass=1==mxUtils.getValue(this.style,mxConstants.STYLE_GLASS,this.glass),"none"==this.fill&&(this.fill=null),"none"==this.gradient&&(this.gradient=null),"none"==this.stroke&&(this.stroke=null))},mxShape.prototype.setCursor=function(e){null==e&&(e=""),this.cursor=e,null!=this.node&&(this.node.style.cursor=e)},mxShape.prototype.getCursor=function(){return this.cursor},mxShape.prototype.updateBoundingBox=function(){if(null!=this.bounds){var e=this.createBoundingBox();if(null!=e){this.augmentBoundingBox(e);var n=this.getShapeRotation();0!=n&&(e=mxUtils.getBoundingBox(e,n)),e.x=Math.floor(e.x),e.y=Math.floor(e.y),e.width=Math.ceil(e.width),e.height=Math.ceil(e.height)}this.boundingBox=e}},mxShape.prototype.createBoundingBox=function(){var e=this.bounds.clone();if(this.isPaintBoundsInverted()){var n=(e.width-e.height)/2;e.x+=n,e.y-=n,n=e.width,e.width=e.height,e.height=n}return e},mxShape.prototype.augmentBoundingBox=function(e){this.isShadow&&(e.width+=Math.ceil(mxConstants.SHADOW_OFFSET_X*this.scale),e.height+=Math.ceil(mxConstants.SHADOW_OFFSET_Y*this.scale));var n=Math.ceil(this.strokewidth*this.scale);e.grow(Math.ceil(n/2))},mxShape.prototype.isPaintBoundsInverted=function(){return null==this.stencil&&("north"==this.direction||"south"==this.direction)},mxShape.prototype.getRotation=function(){return null!=this.rotation?this.rotation:0},mxShape.prototype.getTextRotation=function(){var e=this.getRotation();return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxShape.prototype.getShapeRotation=function(){var e=this.getRotation();return null!=this.direction&&("north"==this.direction?e+=270:"west"==this.direction?e+=180:"south"==this.direction&&(e+=90)),e},mxShape.prototype.addTransparentBackgroundRectangle=function(e,n,t,a,i){(e=document.createElementNS(mxConstants.NS_SVG,"rect")).setAttribute("x",n),e.setAttribute("y",t),e.setAttribute("width",a),e.setAttribute("height",i),e.setAttribute("fill","none"),e.setAttribute("stroke","none"),e.setAttribute("pointer-events","all"),this.node.appendChild(e)},mxShape.prototype.setTransparentBackgroundImage=function(e){e.style.backgroundImage="url('"+mxClient.imageBasePath+"/transparent.gif')"},mxShape.prototype.releaseSvgGradients=function(e){if(null!=e)for(var n in e){var t=e[n];t.mxRefCount=(t.mxRefCount||0)-1,0==t.mxRefCount&&null!=t.parentNode&&t.parentNode.removeChild(t)}},mxShape.prototype.destroy=function(){null!=this.node&&(mxEvent.release(this.node),null!=this.node.parentNode&&this.node.parentNode.removeChild(this.node),this.node=null),this.releaseSvgGradients(this.oldGradients),this.oldGradients=null};var mxStencilRegistry={stencils:[],addStencil:function(e,n){mxStencilRegistry.stencils[e]=n},getStencil:function(e){return mxStencilRegistry.stencils[e]}},mxMarker={markers:[],addMarker:function(e,n){mxMarker.markers[e]=n},createMarker:function(e,n,t,a,i,s,o,r,l,d){var c=mxMarker.markers[t];return null!=c?c(e,n,t,a,i,s,o,r,l,d):null}};function mxActor(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxCloud(e,n,t,a){mxActor.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRectangleShape(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxDoubleEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRhombus(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxPolyline(e,n,t){mxShape.call(this),this.points=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxArrow(e,n,t,a,i,s,o){mxShape.call(this),this.points=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1,this.arrowWidth=null!=i?i:mxConstants.ARROW_WIDTH,this.spacing=null!=s?s:mxConstants.ARROW_SPACING,this.endSize=null!=o?o:mxConstants.ARROW_SIZE}function mxText(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A){mxShape.call(this),this.value=e,this.bounds=n,this.color=null!=i?i:"black",this.align=null!=t?t:"",this.valign=null!=a?a:"",this.family=null!=s?s:mxConstants.DEFAULT_FONTFAMILY,this.size=null!=o?o:mxConstants.DEFAULT_FONTSIZE,this.fontStyle=null!=r?r:mxConstants.DEFAULT_FONTSTYLE,this.spacing=parseInt(l||2),this.spacingTop=this.spacing+parseInt(d||0),this.spacingRight=this.spacing+parseInt(c||0),this.spacingBottom=this.spacing+parseInt(m||0),this.spacingLeft=this.spacing+parseInt(u||0),this.horizontal=null==p||p,this.background=g,this.border=v,this.wrap=null!=h&&h,this.clipped=null!=f&&f,this.overflow=null!=b?b:"visible",this.labelPadding=null!=A?A:0,this.rotation=0}function mxTriangle(){mxActor.call(this)}function mxHexagon(){mxActor.call(this)}function mxLine(e,n,t){mxShape.call(this),this.bounds=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxImageShape(e,n,t,a,i){mxShape.call(this),this.bounds=e,this.image=n,this.fill=t,this.stroke=a,this.strokewidth=null!=i?i:1,this.shadow=!1}function mxLabel(e,n,t,a){mxRectangleShape.call(this,e,n,t,a)}function mxCylinder(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxConnector(e,n,t){mxPolyline.call(this,e,n,t)}function mxSwimlane(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxGraphLayout(e){this.graph=e}function mxStackLayout(e,n,t,a,i,s){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=null!=t?t:0,this.x0=null!=a?a:0,this.y0=null!=i?i:0,this.border=null!=s?s:0}function mxPartitionLayout(e,n,t,a){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=t||0,this.border=a||0}function mxCompactTreeLayout(e,n,t){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.invert=null!=t&&t}function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxFastOrganicLayout(e){mxGraphLayout.call(this,e)}function mxCircleLayout(e,n){mxGraphLayout.call(this,e),this.radius=null!=n?n:100}function mxParallelEdgeLayout(e){mxGraphLayout.call(this,e)}function mxCompositeLayout(e,n,t){mxGraphLayout.call(this,e),this.layouts=n,this.master=t}function mxEdgeLabelLayout(e,n){mxGraphLayout.call(this,e)}function mxGraphAbstractHierarchyCell(){this.x=[],this.y=[],this.temp=[]}function mxGraphHierarchyNode(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.cell=e}function mxGraphHierarchyEdge(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.edges=e}function mxGraphHierarchyModel(e,n,t,a,i){for(e.getGraph(),this.tightenToSource=i,this.roots=t,this.parent=a,this.vertexMapper={},this.edgeMapper={},this.maxRank=0,t=[],null==n&&(n=this.graph.getChildVertices(a)),this.maxRank=this.SOURCESCANSTARTRANK,this.createInternalCells(e,n,t),a=0;a<n.length;a++){i=t[a].connectsAsSource;for(var s=0;s<i.length;s++){var o=i[s];if(null!=(r=o.edges)&&0<r.length){var r=r[0],l=e.getVisibleTerminal(r,!1);l=mxCellPath.create(l),l=this.vertexMapper[l];t[a]==l&&(l=e.getVisibleTerminal(r,!0),l=mxCellPath.create(l),l=this.vertexMapper[l]),null!=l&&t[a]!=l&&(0==(o.target=l).connectsAsTarget.length&&(l.connectsAsTarget=[]),mxUtils.indexOf(l.connectsAsTarget,o)<0&&l.connectsAsTarget.push(o))}}t[a].temp[0]=1}}function mxHierarchicalLayoutStage(){}function mxMedianHybridCrossingReduction(e){this.layout=e}function MedianCellSorter(){}function mxMinimumCycleRemover(e){this.layout=e}function mxCoordinateAssignment(e,n,t,a,i,s){this.layout=e,this.intraCellSpacing=n,this.interRankCellSpacing=t,this.orientation=a,this.initialX=i,this.parallelEdgeSpacing=s}!function(){function e(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,r=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=r,o=t!=mxConstants.ARROW_CLASSIC?1:.75,a.x+=-i*o-n,a.y+=-s*o-r,function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i-s/2,c.y-s+i/2),t==mxConstants.ARROW_CLASSIC&&e.lineTo(c.x-3*i/4,c.y-3*s/4),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.close(),d?e.fillAndStroke():e.stroke()}}function n(e,n,t,a,i,s,o,r,l,d){r=t==mxConstants.ARROW_DIAMOND?.7071:.9862,n=i*l*r,r*=s*l,i*=o+l,s*=o+l;var c=a.clone();c.x-=n,c.y-=r,a.x+=-i-n,a.y+=-s-r;var m=t==mxConstants.ARROW_DIAMOND?2:3.4;return function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i/2-s/m,c.y+i/m-s/2),e.lineTo(c.x-i,c.y-s),e.lineTo(c.x-i/2+s/m,c.y-s/2-i/m),e.close(),d?e.fillAndStroke():e.stroke()}}mxMarker.addMarker("classic",e),mxMarker.addMarker("block",e),mxMarker.addMarker("open",function(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,t=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=t,a.x+=2*-n,a.y+=2*-t,function(){e.begin(),e.moveTo(c.x-i-s/2,c.y-s+i/2),e.lineTo(c.x,c.y),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.stroke()}}),mxMarker.addMarker("oval",function(e,n,t,a,i,s,o,r,l,d){var c=o/2,m=a.clone();return a.x-=i*c,a.y-=s*c,function(){e.ellipse(m.x-c,m.y-c,o,o),d?e.fillAndStroke():e.stroke()}}),mxMarker.addMarker("diamond",n),mxMarker.addMarker("diamondThin",n)}(),mxUtils.extend(mxActor,mxShape),mxActor.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i),e.fillAndStroke()},mxActor.prototype.redrawPath=function(e,n,t,a,i){n=a/3,e.moveTo(0,i),e.curveTo(0,3*i/5,0,2*i/5,a/2,2*i/5),e.curveTo(a/2-n,2*i/5,a/2-n,0,a/2,0),e.curveTo(a/2+n,0,a/2+n,2*i/5,a/2,2*i/5),e.curveTo(a,2*i/5,a,3*i/5,a,i),e.close()},mxUtils.extend(mxCloud,mxActor),mxCloud.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,.25*i),e.curveTo(.05*a,.25*i,0,.5*i,.16*a,.55*i),e.curveTo(0,.66*i,.18*a,.9*i,.31*a,.8*i),e.curveTo(.4*a,i,.7*a,i,.8*a,.8*i),e.curveTo(a,.8*i,a,.6*i,.875*a,.5*i),e.curveTo(a,.3*i,.8*a,.1*i,.625*a,.2*i),e.curveTo(.5*a,.05*i,.3*a,.05*i,.25*a,.25*i),e.close()},mxUtils.extend(mxRectangleShape,mxShape),mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.isRounded&&!this.glass&&0==this.rotation},mxRectangleShape.prototype.paintBackground=function(e,n,t,a,i){if(this.isRounded){var s=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;s=Math.min(a*s,i*s);e.roundrect(n,t,a,i,s,s)}else e.rect(n,t,a,i);e.fillAndStroke()},mxRectangleShape.prototype.paintForeground=function(e,n,t,a,i){this.glass&&this.paintGlassEffect(e,n,t,a,i,this.getArcSize(a+this.strokewidth,i+this.strokewidth))},mxRectangleShape.prototype.redrawHtmlShape=function(){this.updateHtmlBounds(this.node),this.updateHtmlFilters(this.node),this.updateHtmlColors(this.node)},mxRectangleShape.prototype.updateHtmlBounds=function(e){var n=9<=document.documentMode?0:Math.ceil(this.strokewidth*this.scale);e.style.borderWidth=Math.max(1,n)+"px",e.style.overflow="hidden",e.style.left=Math.round(this.bounds.x-n/2)+"px",e.style.top=Math.round(this.bounds.y-n/2)+"px","CSS1Compat"==document.compatMode&&(n=-n),e.style.width=Math.round(Math.max(0,this.bounds.width+n))+"px",e.style.height=Math.round(Math.max(0,this.bounds.height+n))+"px"},mxRectangleShape.prototype.updateHtmlColors=function(e){var n=this.stroke;null!=n&&n!=mxConstants.NONE?(e.style.borderColor=n,this.isDashed?e.style.borderStyle="dashed":0<this.strokewidth&&(e.style.borderStyle="solid"),e.style.borderWidth=Math.max(1,Math.ceil(this.strokewidth*this.scale))+"px"):e.style.borderWidth="0px",null!=(n=this.fill)&&n!=mxConstants.NONE?(e.style.backgroundColor=n,e.style.backgroundImage="none"):this.pointerEvents?e.style.backgroundColor="transparent":8==document.documentMode?mxUtils.addTransparentBackgroundFilter(e):this.setTransparentBackgroundImage(e)},mxRectangleShape.prototype.updateHtmlFilters=function(e){var n="";if(this.opacity<100&&(n+="alpha(opacity="+this.opacity+")"),this.isShadow&&(n+="progid:DXImageTransform.Microsoft.dropShadow (OffX='"+Math.round(mxConstants.SHADOW_OFFSET_X*this.scale)+"', OffY='"+Math.round(mxConstants.SHADOW_OFFSET_Y*this.scale)+"', Color='"+mxConstants.SHADOWCOLOR+"')"),this.gradient){var t=this.fill,a=this.gradient,i="0",s={east:0,south:1,west:2,north:3},o=null!=this.direction?s[this.direction]:0;null!=this.gradientDirection&&(o=mxUtils.mod(o+s[this.gradientDirection]-1,4)),1==o?(i="1",s=t,t=a,a=s):2==o?(s=t,t=a,a=s):3==o&&(i="1"),n+="progid:DXImageTransform.Microsoft.gradient(startColorStr='"+t+"', endColorStr='"+a+"', gradientType='"+i+"')"}e.style.filter=n},mxUtils.extend(mxEllipse,mxShape),mxEllipse.prototype.paintVertexShape=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxUtils.extend(mxDoubleEllipse,mxShape),mxDoubleEllipse.prototype.vmlScale=10,mxDoubleEllipse.prototype.paintBackground=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxDoubleEllipse.prototype.paintForeground=function(e,n,t,a,i){var s=Math.min(4,Math.min(a/5,i/5));i-=2*s,0<(a-=2*s)&&0<i&&e.ellipse(n+s,t+s,a,i),e.stroke()},mxUtils.extend(mxRhombus,mxShape),mxRhombus.prototype.paintVertexShape=function(e,n,t,a,i){var s=a/2,o=i/2;e.begin(),e.moveTo(n+s,t),e.lineTo(n+a,t+o),e.lineTo(n+s,t+i),e.lineTo(n,t+o),e.close(),e.fillAndStroke()},mxUtils.extend(mxPolyline,mxShape),mxPolyline.prototype.getRotation=function(){return 0},mxPolyline.prototype.paintEdgeShape=function(e,n){this.paintLine(e,n,this.isRounded)},mxPolyline.prototype.paintLine=function(e,n,t){var a=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,i=n[0],s=n[n.length-1];e.begin(),e.moveTo(i.x,i.y);for(var o=1;o<n.length-1;o++){var r=n[o],l=i.x-r.x;i=i.y-r.y;if(t&&o<n.length-1&&(0!=l||0!=i)){var d=Math.sqrt(l*l+i*i);l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d;e.lineTo(r.x+l,r.y+i),l=(i=n[o+1]).x-r.x,i=i.y-r.y,d=Math.max(1,Math.sqrt(l*l+i*i)),l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d,l=r.x+l,i=r.y+i,e.quadTo(r.x,r.y,l,i),r=new mxPoint(l,i)}else e.lineTo(r.x,r.y);i=r}e.lineTo(s.x,s.y),e.stroke()},mxUtils.extend(mxArrow,mxShape),mxArrow.prototype.paintEdgeShape=function(e,n){var t=mxConstants.ARROW_SPACING,a=mxConstants.ARROW_WIDTH,i=mxConstants.ARROW_SIZE,s=n[0],o=n[n.length-1],r=o.x-s.x,l=o.y-s.y,d=(c=Math.sqrt(r*r+l*l))-2*t-i,c=(r=r/c,a*(l=l/c)/3),m=(a=-a*r/3,(i=s.x-c/2+t*r)+c),u=(s=s.y-a/2+t*l)+a,p=m+d*r,g=p+c,v=(d=u+d*l)+a,h=g-3*c,f=v-3*a;e.begin(),e.moveTo(i,s),e.lineTo(m,u),e.lineTo(p,d),e.lineTo(g,v),e.lineTo(o.x-t*r,o.y-t*l),e.lineTo(h,f),e.lineTo(h+c,f+a),e.close(),e.fillAndStroke()},mxUtils.extend(mxText,mxShape),mxText.prototype.baseSpacingTop=0,mxText.prototype.baseSpacingBottom=0,mxText.prototype.baseSpacingLeft=0,mxText.prototype.baseSpacingRight=0,mxText.prototype.replaceLinefeeds=!0,mxText.prototype.verticalTextRotation=-90,mxText.prototype.ignoreClippedStringSize=!0,mxText.prototype.ignoreStringSize=!1,mxText.prototype.isParseVml=function(){return!1},mxText.prototype.isHtmlAllowed=function(){return 8!=document.documentMode},mxText.prototype.getSvgScreenOffset=function(){return 0},mxText.prototype.checkBounds=function(){return!(null==this.bounds||isNaN(this.bounds.x)||isNaN(this.bounds.y)||isNaN(this.bounds.width)||isNaN(this.bounds.height))},mxText.prototype.updateBoundingBox=function(){var e=this.node;8==document.documentMode&&null!=e.firstChild&&(null!=(e=e.firstChild).firstChild&&(e=e.firstChild)),this.boundingBox=this.bounds.clone();var n=this.getTextRotation();if(this.ignoreStringSize||null==e||"fill"==this.overflow||this.clipped&&this.ignoreClippedStringSize)this.boundingBox.x+=this.margin.x*this.boundingBox.width,this.boundingBox.y+=this.margin.y*this.boundingBox.height;else{var t=null,a=null;if(null!=e.ownerSVGElement)if(null!=e.firstChild&&null!=e.firstChild.firstChild&&"foreignObject"==e.firstChild.firstChild.nodeName)e=e.firstChild.firstChild,t=this.wrap?this.bounds.width:parseInt(e.getAttribute("width"))*this.scale,a=parseInt(e.getAttribute("height"))*this.scale;else{if(0==(n=e.getBBox()).width&&0==n.height)return;this.boundingBox=new mxRectangle(n.x,n.y,n.width,n.height),n=0}else a=this.state.view.textDiv,a=null!=this.offsetWidth&&null!=this.offsetHeight?(t=this.wrap?this.bounds.width:this.offsetWidth*this.scale,this.offsetHeight*this.scale):null!=a?(this.updateFont(a),this.updateSize(a),mxUtils.isNode(this.value)?a.innerHTML=this.value.outerHTML:(t=this.replaceLinefeeds?this.value.replace(/\n/g,"<br/>"):this.value,a.innerHTML=t),t=this.wrap?this.bounds.width:a.offsetWidth*this.scale,a.offsetHeight*this.scale):(t=this.wrap?this.bounds.width:e.offsetWidth*this.scale,e.offsetHeight*this.scale);null!=t&&null!=a&&(this.boundingBox=new mxRectangle(this.bounds.x+this.margin.x*t,this.bounds.y+this.margin.y*a,t,a))}null!=this.boundingBox&&(0!=n&&(n=mxUtils.getBoundingBox(this.boundingBox,n),this.boundingBox.x=n.x,this.boundingBox.y=n.y,mxClient.IS_QUIRKS||(this.boundingBox.width=n.width,this.boundingBox.height=n.height)),this.boundingBox.x=Math.floor(this.boundingBox.x),this.boundingBox.y=Math.floor(this.boundingBox.y),this.boundingBox.width=Math.ceil(this.boundingBox.width),this.boundingBox.height=Math.ceil(this.boundingBox.height))},mxText.prototype.getShapeRotation=function(){return 0},mxText.prototype.getTextRotation=function(){return null!=this.state&&null!=this.state.shape?this.state.shape.getTextRotation():0},mxText.prototype.isPaintBoundsInverted=function(){return!this.horizontal&&null!=this.state&&this.state.view.graph.model.isVertex(this.state.cell)},mxText.prototype.configureCanvas=function(e,n,t,a,i){mxShape.prototype.configureCanvas.apply(this,arguments),e.setFontColor(this.color),e.setFontBackgroundColor(this.background),e.setFontBorderColor(this.border),e.setFontFamily(this.family),e.setFontSize(this.size),e.setFontStyle(this.fontStyle)},mxText.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width="1px",this.node.style.height="1px",this.node.style.overflow="visible"},mxText.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n;n=this.bounds.height/n;this.updateTransform(e,t,a,i,n),this.configureCanvas(e,t,a,i,n);var s=mxUtils.isNode(this.value)||this.dialect==mxConstants.DIALECT_STRICTHTML,o=s||e instanceof mxVmlCanvas2D?"html":"",r=this.value;!s&&"html"==o&&(r=mxUtils.htmlEntities(r,!1)),r=!mxUtils.isNode(this.value)&&this.replaceLinefeeds&&"html"==o?r.replace(/\n/g,"<br/>"):r,e.text(t,a,i,n,r,this.align,this.valign,this.wrap,o,"fill"==this.overflow,this.clipped,this.getTextRotation())},mxText.prototype.redrawHtmlShape=function(){var e=this.node.style;e.opacity=this.opacity<1?this.opacity:"",e.overflow="",e.width="",e.height="",this.updateFont(this.node),this.updateSize(this.node),this.updateValue(),this.offsetHeight=this.offsetWidth=null,null!=mxClient.CSS_PREFIX?this.updateHtmlTransform():this.updateHtmlFilter()},mxText.prototype.updateHtmlTransform=function(){var e=this.getTextRotation(),n=this.node.style,t=this.margin.x,a=this.margin.y;0!=e?(n[mxClient.CSS_PREFIX+"TransformOrigin"]=100*-t+"% "+100*-a+"%",n[mxClient.CSS_PREFIX+"Transform"]="translate("+100*t+"%,"+100*a+"%)scale("+this.scale+") rotate("+e+"deg)"):(n[mxClient.CSS_PREFIX+"TransformOrigin"]="0% 0%",n[mxClient.CSS_PREFIX+"Transform"]="scale("+this.scale+")translate("+100*t+"%,"+100*a+"%)"),n.left=Math.round(this.bounds.x)+"px",n.top=Math.round(this.bounds.y)+"px"},mxText.prototype.updateHtmlFilter=function(){var e=this.node.style,n=this.margin.x,t=this.margin.y,a=this.scale;e.filter="";var i=0,s=0;if(null!=(r=null!=this.state?this.state.view.textDiv:null)){if(r.style.overflow="",r.style.height="",r.style.width="",this.updateFont(r),this.updateSize(r),mxUtils.isNode(this.value))r.innerHTML=this.value.outerHTML;else{var o=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(o=mxUtils.htmlEntities(o,!1)),o=this.replaceLinefeeds?o.replace(/\n/g,"<br/>"):o,r.innerHTML=o}i=r.offsetWidth+2,s=r.offsetHeight+2}else i=this.node.offsetWidth,s=this.node.offsetHeight+1;this.offsetWidth=i,this.offsetHeight=s,r=this.bounds.width/a,o=this.bounds.height/a,mxClient.IS_QUIRKS&&(this.clipped||"fill"==this.overflow)&&0<o?(o=Math.min(o,s),e.height=Math.round(o+1)+"px"):o=s,"fill"!=this.overflow&&(mxClient.IS_QUIRKS&&(this.clipped||this.wrap)&&0<r?(r=Math.min(r,i),e.width=Math.round(r)+"px"):r=i);o*=a;var r=r*a,l=(i=this.getTextRotation()*(Math.PI/180),s=parseFloat(parseFloat(Math.cos(i)).toFixed(8)),parseFloat(parseFloat(Math.sin(-i)).toFixed(8)));(i=i%(2*Math.PI))<0&&(i+=2*Math.PI),(i%=Math.PI)>Math.PI/2&&(i=Math.PI-i);var d=Math.cos(i),c=Math.sin(-i),m=(o-o*d+r*c)/2+l*(n=r*-(n+.5))-s*(t=o*-(t+.5));0!=i&&(e.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+s+", M12="+l+", M21="+-l+", M22="+s+", sizingMethod='auto expand')"),e.zoom=a,e.left=Math.round(this.bounds.x+((r-r*d+o*c)/2-s*n-l*t)-r/2)+"px",e.top=Math.round(this.bounds.y+m-o/2)+"px"},mxText.prototype.updateValue=function(){if(mxUtils.isNode(this.value))this.node.innerHTML="",this.node.appendChild(this.value);else{var e=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(e=mxUtils.htmlEntities(e,!1));e=this.replaceLinefeeds?e.replace(/\n/g,"<br/>"):e;var n=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,t=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if(null!=n||null!=t)if("fill"==this.overflow)null!=n&&(this.node.style.backgroundColor=n),null!=t&&(this.node.style.border="1px solid "+t);else{var a="";null!=n&&(a+="background-color:"+n+";"),null!=t&&(a+="border:1px solid "+t+";"),e='<div style="zoom:1;'+a+"display:inline-block;_display:inline;padding-bottom:1px;padding-right:1px;line-height:"+this.node.style.lineHeight+'">'+e+"</div>",this.node.style.lineHeight=""}this.node.innerHTML=e}},mxText.prototype.updateFont=function(e){(e=e.style).lineHeight=Math.round(this.size*mxConstants.LINE_HEIGHT)+"px",e.fontSize=Math.round(this.size)+"px",e.fontFamily=this.family,e.verticalAlign="top",e.color=this.color,e.fontWeight=(this.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?"bold":"",e.fontStyle=(this.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?"italic":"",e.fontDecoration=(this.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE?"underline":"",e.textAlign=this.align==mxConstants.ALIGN_CENTER?"center":this.align==mxConstants.ALIGN_RIGHT?"right":"left"},mxText.prototype.updateSize=function(e){var n=Math.round(this.bounds.width/this.scale),t=Math.round(this.bounds.height/this.scale);e=e.style,this.clipped?(e.overflow="hidden",0<t&&(e.maxHeight=t+"px"),0<n&&(e.width=n+"px")):"fill"==this.overflow&&(e.width=n+"px",0<t&&(e.maxHeight=t+"px")),this.wrap?(!this.clipped&&0<n&&(e.width=n+"px"),e.whiteSpace="normal"):e.whiteSpace="nowrap"},mxText.prototype.updateMargin=function(){this.margin=mxUtils.getAlignmentAsPoint(this.align,this.valign)},mxText.prototype.getSpacing=function(){return new mxPoint(this.align==mxConstants.ALIGN_CENTER?(this.spacingLeft-this.spacingRight)/2:this.align==mxConstants.ALIGN_RIGHT?-this.spacingRight-this.baseSpacingRight:this.spacingLeft+this.baseSpacingLeft,this.valign==mxConstants.ALIGN_MIDDLE?(this.spacingTop-this.spacingBottom)/2:this.valign==mxConstants.ALIGN_BOTTOM?-this.spacingBottom-this.baseSpacingBottom:this.spacingTop+this.baseSpacingTop)},mxUtils.extend(mxTriangle,mxActor),mxTriangle.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(0,0),e.lineTo(a,.5*i),e.lineTo(0,i),e.close()},mxUtils.extend(mxHexagon,mxActor),mxHexagon.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,0),e.lineTo(.75*a,0),e.lineTo(a,.5*i),e.lineTo(.75*a,i),e.lineTo(.25*a,i),e.lineTo(0,.5*i),e.close()},mxUtils.extend(mxLine,mxShape),mxLine.prototype.paintVertexShape=function(e,n,t,a,i){t+=i/2,e.begin(),e.moveTo(n,t),e.lineTo(n+a,t),e.stroke()},mxUtils.extend(mxImageShape,mxRectangleShape),mxImageShape.prototype.preserveImageAspect=!0,mxImageShape.prototype.getSvgScreenOffset=function(){return mxClient.IS_IE?0:.5},mxImageShape.prototype.apply=function(e){mxShape.prototype.apply.apply(this,arguments),this.gradient=this.stroke=this.fill=null,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER),this.preserveImageAspect=1==mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_ASPECT,1),this.flipH=this.flipH||1==mxUtils.getValue(this.style,"imageFlipH",0),this.flipV=this.flipV||1==mxUtils.getValue(this.style,"imageFlipV",0))},mxImageShape.prototype.isHtmlAllowed=function(){return!this.preserveImageAspect},mxImageShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxImageShape.prototype.paintVertexShape=function(e,n,t,a,i){if(null!=this.image){var s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND,null),o=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER,null);null==s&&null==o||(e.setFillColor(s),e.setStrokeColor(o),e.rect(n,t,a,i),e.fillAndStroke()),e.image(n,t,a,i,this.image,this.preserveImageAspect,!1,!1)}else mxRectangleShape.prototype.paintBackground.apply(this,arguments)},mxImageShape.prototype.redrawHtmlShape=function(){if(this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width=Math.max(0,Math.round(this.bounds.width))+"px",this.node.style.height=Math.max(0,Math.round(this.bounds.height))+"px",this.node.style.backgroundColor=this.fill||"",this.node.style.borderColor=this.stroke||"",this.node.innerHTML="",null!=this.image){var e=document.createElement(mxClient.IS_IE6||null==mxClient.CSS_PREFIX&&0!=this.rotation?mxClient.VML_PREFIX+":image":"img");e.style.position="absolute",e.src=this.image;var n=this.opacity<100?"alpha(opacity="+this.opacity+")":"";this.node.style.filter=n,this.flipH&&this.flipV?n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)":this.flipH?n+="progid:DXImageTransform.Microsoft.BasicImage(mirror=1)":this.flipV&&(n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"),e.style.filter!=n&&(e.style.filter=n),"image"==e.nodeName?e.style.rotation=this.rotation:e.style[mxClient.CSS_PREFIX+"Transform"]="rotate("+this.rotation+"deg)",e.style.width=this.node.style.width,e.style.height=this.node.style.height,this.node.style.backgroundImage="",this.node.appendChild(e)}else this.setTransparentBackgroundImage(this.node)},mxUtils.extend(mxLabel,mxRectangleShape),mxLabel.prototype.imageSize=mxConstants.DEFAULT_IMAGESIZE,mxLabel.prototype.spacing=2,mxLabel.prototype.indicatorSize=10,mxLabel.prototype.indicatorSpacing=2,mxLabel.prototype.init=function(e){mxShape.prototype.init.apply(this,arguments),null!=this.indicatorColor&&null!=this.indicatorShape&&(this.indicator=new this.indicatorShape,this.indicator.dialect=this.dialect,this.indicator.bounds=this.bounds,this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection,this.indicator.init(this.node))},mxLabel.prototype.redraw=function(){null!=this.indicator&&(this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection),mxShape.prototype.redraw.apply(this,arguments)},mxLabel.prototype.isHtmlAllowed=function(){return mxRectangleShape.prototype.isHtmlAllowed.apply(this,arguments)&&null==this.indicatorColor&&null==this.indicatorShape},mxLabel.prototype.paintForeground=function(e,n,t,a,i){this.paintImage(e,n,t,a,i),this.paintIndicator(e,n,t,a,i),mxRectangleShape.prototype.paintForeground.apply(this,arguments)},mxLabel.prototype.paintImage=function(e,n,t,a,i){null!=this.image&&(n=this.getImageBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.image,!1,!1,!1))},mxLabel.prototype.getImageBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_WIDTH,mxConstants.DEFAULT_IMAGESIZE),r=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_HEIGHT,mxConstants.DEFAULT_IMAGESIZE),l=mxUtils.getNumber(this.style,mxConstants.STYLE_SPACING,this.spacing)+5;return new mxRectangle(e=i==mxConstants.ALIGN_CENTER?e+(t-o)/2:i==mxConstants.ALIGN_RIGHT?e+(t-o-l):e+l,n=s==mxConstants.ALIGN_TOP?n+l:s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):n+(a-r)/2,o,r)},mxLabel.prototype.paintIndicator=function(e,n,t,a,i){null!=this.indicator?(this.indicator.bounds=this.getIndicatorBounds(n,t,a,i),this.indicator.paint(e)):null!=this.indicatorImage&&(n=this.getIndicatorBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.indicatorImage,!1,!1,!1))},mxLabel.prototype.getIndicatorBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_WIDTH,this.indicatorSize),r=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_HEIGHT,this.indicatorSize),l=this.spacing+5;return new mxRectangle(e=i==mxConstants.ALIGN_RIGHT?e+(t-o-l):i==mxConstants.ALIGN_CENTER?e+(t-o)/2:e+l,n=s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):s==mxConstants.ALIGN_TOP?n+l:n+(a-r)/2,o,r)},mxLabel.prototype.redrawHtmlShape=function(){for(mxRectangleShape.prototype.redrawHtmlShape.apply(this,arguments);this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);if(null!=this.image){var e=document.createElement("img");e.style.position="relative",e.setAttribute("border","0");var n=this.getImageBounds(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height);n.x-=this.bounds.x,n.y-=this.bounds.y,e.style.left=Math.round(n.x)+"px",e.style.top=Math.round(n.y)+"px",e.style.width=Math.round(n.width)+"px",e.style.height=Math.round(n.height)+"px",e.src=this.image,this.node.appendChild(e)}},mxUtils.extend(mxCylinder,mxShape),mxCylinder.prototype.maxHeight=40,mxCylinder.prototype.svgStrokeTolerance=0,mxCylinder.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i,!1),e.fillAndStroke(),e.setShadow(!1),e.begin(),this.redrawPath(e,n,t,a,i,!0),e.stroke()},mxCylinder.prototype.redrawPath=function(e,n,t,a,i,s){n=Math.min(this.maxHeight,Math.round(i/5)),(s&&null!=this.fill||!s&&null==this.fill)&&(e.moveTo(0,n),e.curveTo(0,2*n,a,2*n,a,n),s||(e.stroke(),e.begin())),s||(e.moveTo(0,n),e.curveTo(0,-n/3,a,-n/3,a,n),e.lineTo(a,i-n),e.curveTo(a,i+n/3,0,i+n/3,0,i-n),e.close())},mxUtils.extend(mxConnector,mxPolyline),mxConnector.prototype.paintEdgeShape=function(e,n){var t=this.createMarker(e,n,!0),a=this.createMarker(e,n,!1);null==this.style||1!=this.style[mxConstants.STYLE_CURVED]?this.paintLine(e,n,this.isRounded):this.paintCurvedLine(e,n),e.setFillColor(this.stroke),e.setShadow(!1),e.setDashed(!1),null!=t&&t(),null!=a&&a()},mxConnector.prototype.paintCurvedLine=function(e,n){e.begin();var t=n[0],a=n.length;for(e.moveTo(t.x,t.y),t=1;t<a-2;t++){var i=n[t],s=n[t+1];e.quadTo(i.x,i.y,(i.x+s.x)/2,(i.y+s.y)/2)}i=n[a-2],s=n[a-1],e.quadTo(i.x,i.y,s.x,s.y),e.stroke()},mxConnector.prototype.createMarker=function(e,n,t){var a=n.length,i=t?n[1]:n[a-2],s=(a=(n=t?n[0]:n[a-1]).x-i.x,n.y-i.y),o=(i=a/(o=Math.max(1,Math.sqrt(a*a+s*s))),a=s/o,s=mxUtils.getNumber(this.style,t?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),mxUtils.getValue(this.style,t?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW));return mxMarker.createMarker(e,this,o,n,i,a,s,t,this.strokewidth,0!=this.style[t?mxConstants.STYLE_STARTFILL:mxConstants.STYLE_ENDFILL])},mxConnector.prototype.augmentBoundingBox=function(e){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var n=0;mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)+1),mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=Math.max(n,mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE))+1),e.grow(Math.ceil(n*this.scale))},mxUtils.extend(mxSwimlane,mxShape),mxSwimlane.prototype.imageSize=16,mxSwimlane.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)))},mxSwimlane.prototype.getRotation=function(){var e=mxShape.prototype.getRotation.apply(this,arguments);return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxSwimlane.prototype.getTextRotation=function(){return this.getRotation()},mxSwimlane.prototype.isPaintBoundsInverted=function(){return mxShape.prototype.isPaintBoundsInverted.apply(this,arguments)||1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)},mxSwimlane.prototype.getArcSize=function(e,n,t){return 3*t*(mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100)},mxSwimlane.prototype.paintVertexShape=function(e,n,t,a,i){var s=Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),o=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE),r=1==mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_LINE,1),l=0;e.translate(n,t),this.isRounded?(l=this.getArcSize(a,i,s),this.paintRoundedSwimlane(e,n,t,a,i,s,l,o,r)):this.paintSwimlane(e,n,t,a,i,s,o,r),o=mxUtils.getValue(this.style,mxConstants.STYLE_SEPARATORCOLOR,mxConstants.NONE),this.paintSeparator(e,a,s,i,o),null!=this.image&&(i=this.getImageBounds(n,s,a,i),e.image(i.x-n,i.y-t,i.width,i.height,this.image,!1,!1,!1)),this.glass&&(e.setShadow(!1),this.paintGlassEffect(e,0,0,a,s,l))},mxSwimlane.prototype.paintSwimlane=function(e,n,t,a,i,s,o,r){o!=mxConstants.NONE&&(e.save(),e.setFillColor(o),e.rect(0,0,a,i),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(0,s),e.lineTo(0,0),e.lineTo(a,0),e.lineTo(a,s),r&&e.close(),e.fillAndStroke(),s<i&&o==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i),e.lineTo(a,i),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintRoundedSwimlane=function(e,n,t,a,i,s,o,r,l){r!=mxConstants.NONE&&(e.save(),e.setFillColor(r),e.roundrect(0,0,a,i,o,o),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(a,s),e.lineTo(a,o),e.quadTo(a,0,a-Math.min(a/2,o),0),e.lineTo(Math.min(a/2,o),0),e.quadTo(0,0,0,o),e.lineTo(0,s),l&&e.close(),e.fillAndStroke(),s<i&&r==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i-o),e.quadTo(0,i,Math.min(a/2,o),i),e.lineTo(a-Math.min(a/2,o),i),e.quadTo(a,i,a,i-o),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintSeparator=function(e,n,t,a,i){i!=mxConstants.NONE&&(e.setStrokeColor(i),e.setDashed(!0),e.begin(),e.moveTo(n,t),e.lineTo(n,a),e.stroke(),e.setDashed(!1))},mxSwimlane.prototype.getImageBounds=function(e,n,t,a){return new mxRectangle(e+t-this.imageSize,n,this.imageSize,this.imageSize)},mxGraphLayout.prototype.graph=null,mxGraphLayout.prototype.useBoundingBox=!0,mxGraphLayout.prototype.parent=null,mxGraphLayout.prototype.moveCell=function(e,n,t){},mxGraphLayout.prototype.execute=function(e){},mxGraphLayout.prototype.getGraph=function(){return this.graph},mxGraphLayout.prototype.getConstraint=function(e,n,t,a){return null!=(n=null!=(t=this.graph.view.getState(n))?t.style:this.graph.getCellStyle(n))?n[e]:null},mxGraphLayout.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.graph.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.graph.model.getEdgeAt(e,s),r=this.graph.model.getTerminal(o,!0)==e;n&&!r||(r=this.graph.view.getVisibleTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraphLayout.prototype.isVertexMovable=function(e){return this.graph.isCellMovable(e)},mxGraphLayout.prototype.isVertexIgnored=function(e){return!this.graph.getModel().isVertex(e)||!this.graph.isCellVisible(e)},mxGraphLayout.prototype.isEdgeIgnored=function(e){var n=this.graph.getModel();return!n.isEdge(e)||!this.graph.isCellVisible(e)||null==n.getTerminal(e,!0)||null==n.getTerminal(e,!1)},mxGraphLayout.prototype.setEdgeStyleEnabled=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_NOEDGESTYLE,n?"0":"1",[e])},mxGraphLayout.prototype.setOrthogonalEdge=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_ORTHOGONAL,n?"1":"0",[e])},mxGraphLayout.prototype.getParentOffset=function(e){var n=new mxPoint;if(null!=e&&e!=this.parent){var t=this.graph.getModel();if(t.isAncestor(this.parent,e))for(var a=t.getGeometry(e);e!=this.parent;)n.x+=a.x,n.y+=a.y,e=t.getParent(e),a=t.getGeometry(e)}return n},mxGraphLayout.prototype.setEdgePoints=function(e,n){if(null!=e){var t=this.graph.model,a=t.getGeometry(e);if(null==a?(a=new mxGeometry).setRelative(!0):a=a.clone(),null!=this.parent&&null!=n)for(var i=t.getParent(e),s=(i=this.getParentOffset(i),0);s<n.length;s++)n[s].x-=i.x,n[s].y-=i.y;a.points=n,t.setGeometry(e,a)}},mxGraphLayout.prototype.setVertexLocation=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e),s=null;if(null!=i){if(s=new mxRectangle(n,t,i.width,i.height),this.useBoundingBox){var o=this.graph.getView().getState(e);if(null!=o&&null!=o.text&&null!=o.text.boundingBox){var r=this.graph.getView().scale,l=o.text.boundingBox;o.text.boundingBox.x<o.x&&(n+=(o.x-l.x)/r,s.width=l.width),o.text.boundingBox.y<o.y&&(t+=(o.y-l.y)/r,s.height=l.height)}}null!=this.parent&&(null!=(o=a.getParent(e))&&o!=this.parent&&(n-=(o=this.getParentOffset(o)).x,t-=o.y)),i.x==n&&i.y==t||((i=i.clone()).x=n,i.y=t,a.setGeometry(e,i))}return s},mxGraphLayout.prototype.getVertexBounds=function(e){var n=this.graph.getModel().getGeometry(e);if(this.useBoundingBox&&(null!=(r=this.graph.getView().getState(e))&&null!=r.text&&null!=r.text.boundingBox)){var t=this.graph.getView().scale,a=r.text.boundingBox,i=Math.max(r.x-a.x,0)/t,s=Math.max(r.y-a.y,0)/t,o=Math.max(a.x+a.width-(r.x+r.width),0)/t,r=Math.max(a.y+a.height-(r.y+r.height),0)/t;n=new mxRectangle(n.x-i,n.y-s,n.width+i+o,n.height+s+r)}return null!=this.parent&&(e=this.graph.getModel().getParent(e),n=n.clone(),null!=e&&e!=this.parent&&(e=this.getParentOffset(e),n.x+=e.x,n.y+=e.y)),new mxRectangle(n.x,n.y,n.width,n.height)},mxGraphLayout.prototype.arrangeGroups=function(e,n){this.graph.getModel().beginUpdate();try{for(var t=e.length-1;0<=t;t--){var a=e[t],i=this.graph.getChildVertices(a),s=this.graph.getBoundingBoxFromGeometry(i),o=this.graph.getCellGeometry(a),r=0,l=0;if(this.graph.isSwimlane(a)){var d=this.graph.getStartSize(a);r=d.width,l=d.height}null!=s&&null!=o&&((o=o.clone()).x=o.x+s.x-n-r,o.y=o.y+s.y-n-l,o.width=s.width+2*n+r,o.height=s.height+2*n+l,this.graph.getModel().setGeometry(a,o),this.graph.moveCells(i,n+r-s.x,n+l-s.y))}}finally{this.graph.getModel().endUpdate()}},mxStackLayout.prototype=new mxGraphLayout,mxStackLayout.prototype.constructor=mxStackLayout,mxStackLayout.prototype.horizontal=null,mxStackLayout.prototype.spacing=null,mxStackLayout.prototype.x0=null,mxStackLayout.prototype.y0=null,mxStackLayout.prototype.border=0,mxStackLayout.prototype.keepFirstLocation=!1,mxStackLayout.prototype.fill=!1,mxStackLayout.prototype.resizeParent=!1,mxStackLayout.prototype.resizeLast=!1,mxStackLayout.prototype.wrap=null,mxStackLayout.prototype.isHorizontal=function(){return this.horizontal},mxStackLayout.prototype.moveCell=function(e,n,t){var a=this.graph.getModel(),i=a.getParent(e),s=this.isHorizontal();if(null!=e&&null!=i){var o=0,r=0,l=a.getChildCount(i);for(n=s?n:t,null!=(o=this.graph.getView().getState(i))&&(n-=s?o.x:o.y),o=0;o<l;o++)if((t=a.getChildAt(i,o))!=e&&null!=(t=a.getGeometry(t))){if(t=s?t.x+t.width/2:t.y+t.height/2,r<n&&n<t)break;r=t}s=i.getIndex(e),s=Math.max(0,o-(s<o?1:0)),a.add(i,e,s)}},mxStackLayout.prototype.getParentSize=function(e){var n=this.graph.getModel(),t=n.getGeometry(e);return null!=this.graph.container&&(null==t&&n.isLayer(e)||e==this.graph.getView().currentRoot)&&(t=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),t},mxStackLayout.prototype.execute=function(e){if(null!=e){var n=this.isHorizontal(),t=this.graph.getModel(),a=this.getParentSize(e),i=0;null!=a&&(i=n?a.height:a.width);i=i-(2*this.spacing+2*this.border);var s=this.x0+this.border,o=this.y0+this.border;if(this.graph.isSwimlane(e)){var r=this.graph.getCellStyle(e),l=mxUtils.getValue(r,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);n==(r=mxUtils.getValue(r,mxConstants.STYLE_HORIZONTAL,!0))&&(i-=l),n?o+=l:s+=l}t.beginUpdate();try{l=0,r=null;for(var d=t.getChildCount(e),c=0;c<d;c++){var m=t.getChildAt(e,c);if(!this.isVertexIgnored(m)&&this.isVertexMovable(m)){var u=t.getGeometry(m);null!=u&&(u=u.clone(),null!=this.wrap&&null!=r&&(n&&r.x+r.width+u.width+2*this.spacing>this.wrap||!n&&r.y+r.height+u.height+2*this.spacing>this.wrap)&&(r=null,n?o+=l+this.spacing:s+=l+this.spacing,l=0),l=Math.max(l,n?u.height:u.width),null!=r?n?u.x=r.x+r.width+this.spacing:u.y=r.y+r.height+this.spacing:this.keepFirstLocation||(n?u.x=s:u.y=o),n?u.y=o:u.x=s,this.fill&&0<i&&(n?u.height=i:u.width=i),t.setGeometry(m,u),r=u)}}this.resizeParent&&null!=a&&null!=r&&!this.graph.isCellCollapsed(e)?(a=a.clone(),n?a.width=r.x+r.width+this.spacing:a.height=r.y+r.height+this.spacing,t.setGeometry(e,a)):this.resizeLast&&null!=a&&null!=r&&(n?r.width=a.width-r.x-this.spacing:r.height=a.height-r.y-this.spacing)}finally{t.endUpdate()}}},mxPartitionLayout.prototype=new mxGraphLayout,mxPartitionLayout.prototype.constructor=mxPartitionLayout,mxPartitionLayout.prototype.horizontal=null,mxPartitionLayout.prototype.spacing=null,mxPartitionLayout.prototype.border=null,mxPartitionLayout.prototype.resizeVertices=!0,mxPartitionLayout.prototype.isHorizontal=function(){return this.horizontal},mxPartitionLayout.prototype.moveCell=function(e,n,t){var a=(t=this.graph.getModel()).getParent(e);if(null!=e&&null!=a){var i=0,s=0,o=t.getChildCount(a);for(i=0;i<o;i++){var r=t.getChildAt(a,i);if(null!=(r=this.getVertexBounds(r))){if(r=r.x+r.width/2,s<n&&n<r)break;s=r}}n=a.getIndex(e),n=Math.max(0,i-(n<i?1:0)),t.add(a,e,n)}},mxPartitionLayout.prototype.execute=function(e){var n=this.isHorizontal(),t=this.graph.getModel(),a=t.getGeometry(e);if(null!=this.graph.container&&(null==a&&t.isLayer(e)||e==this.graph.getView().currentRoot)&&(a=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),null!=a){for(var i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);!this.isVertexIgnored(r)&&this.isVertexMovable(r)&&i.push(r)}if(0<(s=i.length)){var l=this.border,d=this.border,c=(c=n?a.height:a.width)-2*this.border;if(e=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle,c-=n?e.height:e.width,l+=e.width,d+=e.height,e=this.border+(s-1)*this.spacing,0<(a=n?(a.width-l-e)/s:(a.height-d-e)/s)){t.beginUpdate();try{for(o=0;o<s;o++){r=i[o];var m=t.getGeometry(r);null!=m&&((m=m.clone()).x=l,m.y=d,n?(this.resizeVertices&&(m.width=a,m.height=c),l+=a+this.spacing):(this.resizeVertices&&(m.height=a,m.width=c),d+=a+this.spacing),t.setGeometry(r,m))}}finally{t.endUpdate()}}}}},mxCompactTreeLayout.prototype=new mxGraphLayout,mxCompactTreeLayout.prototype.constructor=mxCompactTreeLayout,mxCompactTreeLayout.prototype.horizontal=null,mxCompactTreeLayout.prototype.invert=null,mxCompactTreeLayout.prototype.resizeParent=!0,mxCompactTreeLayout.prototype.groupPadding=10,mxCompactTreeLayout.prototype.parentsChanged=null,mxCompactTreeLayout.prototype.moveTree=!1,mxCompactTreeLayout.prototype.levelDistance=10,mxCompactTreeLayout.prototype.nodeDistance=20,mxCompactTreeLayout.prototype.resetEdges=!0,mxCompactTreeLayout.prototype.prefHozEdgeSep=5,mxCompactTreeLayout.prototype.prefVertEdgeOff=4,mxCompactTreeLayout.prototype.minEdgeJetty=8,mxCompactTreeLayout.prototype.channelBuffer=4,mxCompactTreeLayout.prototype.edgeRouting=!0,mxCompactTreeLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxCompactTreeLayout.prototype.isHorizontal=function(){return this.horizontal},mxCompactTreeLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.getModel();if(null==n)if(0<this.graph.getEdges(e,t.getParent(e),this.invert,!this.invert,!1).length)n=e;else{if(0<(o=this.graph.findTreeRoots(e,!0,this.invert)).length)for(var a=0;a<o.length;a++)if(!this.isVertexIgnored(o[a])&&0<this.graph.getEdges(o[a],null,this.invert,!this.invert,!1).length){n=o[a];break}}if(null!=n){this.parentsChanged=this.resizeParent?{}:null,t.beginUpdate();try{var i=this.dfs(n,e);if(null!=i){this.layout(i);var s=this.graph.gridSize,o=s;if(!this.moveTree){var r=this.getVertexBounds(n);null!=r&&(s=r.x,o=r.y)}if((r=null)!=(r=this.isHorizontal()?this.horizontalLayout(i,s,o):this.verticalLayout(i,null,s,o))){var l=a=0;r.x<0&&(a=Math.abs(s-r.x)),r.y<0&&(l=Math.abs(o-r.y)),(0!=a||0!=l)&&this.moveNode(i,a,l),this.resizeParent&&this.adjustParents(),this.edgeRouting&&this.localEdgeProcessing(i)}}}finally{t.endUpdate()}}},mxCompactTreeLayout.prototype.moveNode=function(e,n,t){for(e.x+=n,e.y+=t,this.apply(e),e=e.child;null!=e;)this.moveNode(e,n,t),e=e.next},mxCompactTreeLayout.prototype.dfs=function(e,n,t){t=null!=t?t:[];var a=mxCellPath.create(e),i=null;if(null!=e&&null==t[a]&&!this.isVertexIgnored(e)){t[a]=e;i=this.createNode(e),a=this.graph.getModel();var s=null;e=this.graph.getEdges(e,n,this.invert,!this.invert,!1,!0);for(var o=this.graph.getView(),r=0;r<e.length;r++){var l=e[r];if(!this.isEdgeIgnored(l)){this.resetEdges&&this.setEdgePoints(l,null),this.edgeRouting&&(this.setEdgeStyleEnabled(l,!1),this.setEdgePoints(l,null));var d;l=null!=(d=o.getState(l))?d.getVisibleTerminal(this.invert):o.getVisibleTerminal(l,this.invert);null!=(d=this.dfs(l,n,t))&&null!=a.getGeometry(l)&&(null==s?i.child=d:s.next=d,s=d)}}}return i},mxCompactTreeLayout.prototype.layout=function(e){if(null!=e){for(var n=e.child;null!=n;)this.layout(n),n=n.next;null!=e.child?this.attachParent(e,this.join(e)):this.layoutLeaf(e)}},mxCompactTreeLayout.prototype.horizontalLayout=function(e,n,t,a){if(e.x+=n+e.offsetX,e.y+=t+e.offsetY,a=this.apply(e,a),null!=(n=e.child)){a=this.horizontalLayout(n,e.x,e.y,a),t=e.y+n.offsetY;for(var i=n.next;null!=i;)a=this.horizontalLayout(i,e.x+n.offsetX,t,a),t+=i.offsetY,i=i.next}return a},mxCompactTreeLayout.prototype.verticalLayout=function(e,n,t,a,i){if(e.x+=t+e.offsetY,e.y+=a+e.offsetX,i=this.apply(e,i),null!=(n=e.child))for(i=this.verticalLayout(n,e,e.x,e.y,i),t=e.x+n.offsetY,a=n.next;null!=a;)i=this.verticalLayout(a,e,t,e.y+n.offsetX,i),t+=a.offsetY,a=a.next;return i},mxCompactTreeLayout.prototype.attachParent=function(e,n){var t=this.nodeDistance+this.levelDistance,a=(n-e.width)/2-this.nodeDistance,i=a+e.width+2*this.nodeDistance-n;e.child.offsetX=t+e.height,e.child.offsetY=i,e.contour.upperHead=this.createLine(e.height,0,this.createLine(t,i,e.contour.upperHead)),e.contour.lowerHead=this.createLine(e.height,0,this.createLine(t,a,e.contour.lowerHead))},mxCompactTreeLayout.prototype.layoutLeaf=function(e){var n=2*this.nodeDistance;e.contour.upperTail=this.createLine(e.height+n,0),e.contour.upperHead=e.contour.upperTail,e.contour.lowerTail=this.createLine(0,-e.width-n),e.contour.lowerHead=this.createLine(e.height+n,0,e.contour.lowerTail)},mxCompactTreeLayout.prototype.join=function(e){var n=2*this.nodeDistance,t=e.child;e.contour=t.contour;var a=t.width+n,i=a;for(t=t.next;null!=t;){var s=this.merge(e.contour,t.contour);t.offsetY=s+a,t.offsetX=0,i+=s+(a=t.width+n),t=t.next}return i},mxCompactTreeLayout.prototype.merge=function(e,n){for(var t=0,a=0,i=0,s=e.lowerHead,o=n.upperHead;null!=o&&null!=s;){var r=this.offset(t,a,o.dx,o.dy,s.dx,s.dy);a=a+r,i=i+r;t+o.dx<=s.dx?(t+=o.dx,a+=o.dy,o=o.next):(t-=s.dx,a-=s.dy,s=s.next)}return null!=o?(t=this.bridge(e.upperTail,0,0,o,t,a),e.upperTail=null!=t.next?n.upperTail:t,e.lowerTail=n.lowerTail):null==(t=this.bridge(n.lowerTail,t,a,s,0,0)).next&&(e.lowerTail=t),e.lowerHead=n.lowerHead,i},mxCompactTreeLayout.prototype.offset=function(e,n,t,a,i,s){var o;return i<=e||e+t<=0?0:0<(o=0<i*a-t*s?e<0?e*a/t-n:0<e?e*s/i-n:-n:i<e+t?s-(n+(i-e)*a/t):e+t<i?(t+e)*s/i-(n+a):s-(n+a))?o:0},mxCompactTreeLayout.prototype.bridge=function(e,n,t,a,i,s){return n=i+a.dx-n,i=i=0,0==a.dx?i=a.dy:(i=n*a.dy,i/=a.dx),n=this.createLine(n,i,a.next),e.next=this.createLine(0,s+a.dy-i-t,n),n},mxCompactTreeLayout.prototype.createNode=function(e){var n={};return n.cell=e,n.x=0,n.y=0,n.width=0,n.height=0,null!=(e=this.getVertexBounds(e))&&(this.isHorizontal()?(n.width=e.height,n.height=e.width):(n.width=e.width,n.height=e.height)),n.offsetX=0,n.offsetY=0,n.contour={},n},mxCompactTreeLayout.prototype.apply=function(e,n){var t=this.graph.getModel(),a=e.cell,i=t.getGeometry(a);return null!=a&&null!=i&&(this.isVertexMovable(a)&&(i=this.setVertexLocation(a,e.x,e.y),this.resizeParent&&(t=t.getParent(a),a=mxCellPath.create(t),null==this.parentsChanged[a]&&(this.parentsChanged[a]=t))),n=null==n?new mxRectangle(i.x,i.y,i.width,i.height):new mxRectangle(Math.min(n.x,i.x),Math.min(n.y,i.y),Math.max(n.x+n.width,i.x+i.width),Math.max(n.y+n.height,i.y+i.height))),n},mxCompactTreeLayout.prototype.createLine=function(e,n,t){var a={};return a.dx=e,a.dy=n,a.next=t,a},mxCompactTreeLayout.prototype.adjustParents=function(){var e,n=[];for(e in this.parentsChanged)n.push(this.parentsChanged[e]);this.arrangeGroups(mxUtils.sortCells(n,!0),this.groupPadding)},mxCompactTreeLayout.prototype.localEdgeProcessing=function(e){for(this.processNodeOutgoing(e),e=e.child;null!=e;)this.localEdgeProcessing(e),e=e.next},mxCompactTreeLayout.prototype.processNodeOutgoing=function(e){for(var n=e.child,t=e.cell,a=0,i=[];null!=n;){a++;var s=n.x;this.horizontal&&(s=n.y),i.push(new WeightedCellSorter(n,s)),n=n.next}i.sort(WeightedCellSorter.prototype.compare),(s=e.width)>(o=(a+1)*this.prefHozEdgeSep)+2*this.prefHozEdgeSep&&(s-=2*this.prefHozEdgeSep),n=(e=s/a)/2,s>o+2*this.prefHozEdgeSep&&(n+=this.prefHozEdgeSep);s=this.minEdgeJetty-this.prefVertEdgeOff;for(var o=0,r=this.getVertexBounds(t),l=0;l<i.length;l++){for(var d=i[l].cell.cell,c=this.getVertexBounds(d),m=(d=this.graph.getEdgesBetween(t,d,!1),[]),u=0,p=0,g=0;g<d.length;g++)this.horizontal?(u=r.x+r.width,p=r.y+n,m.push(new mxPoint(u,p)),u=r.x+r.width+s,m.push(new mxPoint(u,p)),p=c.y+c.height/2):(u=r.x+n,p=r.y+r.height,m.push(new mxPoint(u,p)),p=r.y+r.height+s,m.push(new mxPoint(u,p)),u=c.x+c.width/2),m.push(new mxPoint(u,p)),this.setEdgePoints(d[g],m);l<a/2?s+=this.prefVertEdgeOff:a/2<l&&(s-=this.prefVertEdgeOff),n+=e,o=Math.max(o,s)}},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?1:n.weightedValue<e.weightedValue?-1:n.nudge?1:-1:0},mxFastOrganicLayout.prototype=new mxGraphLayout,mxFastOrganicLayout.prototype.constructor=mxFastOrganicLayout,mxFastOrganicLayout.prototype.useInputOrigin=!0,mxFastOrganicLayout.prototype.resetEdges=!0,mxFastOrganicLayout.prototype.disableEdgeStyle=!0,mxFastOrganicLayout.prototype.forceConstant=50,mxFastOrganicLayout.prototype.forceConstantSquared=0,mxFastOrganicLayout.prototype.minDistanceLimit=2,mxFastOrganicLayout.prototype.maxDistanceLimit=500,mxFastOrganicLayout.prototype.minDistanceLimitSquared=4,mxFastOrganicLayout.prototype.initialTemp=200,mxFastOrganicLayout.prototype.temperature=0,mxFastOrganicLayout.prototype.maxIterations=0,mxFastOrganicLayout.prototype.iteration=0,mxFastOrganicLayout.prototype.allowedToRun=!0,mxFastOrganicLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxFastOrganicLayout.prototype.execute=function(e){var n=this.graph.getModel();this.vertexArray=[];for(var t=this.graph.getChildVertices(e),a=0;a<t.length;a++)this.isVertexIgnored(t[a])||this.vertexArray.push(t[a]);var i=this.useInputOrigin?this.graph.view.getBounds(this.vertexArray):null,s=this.vertexArray.length;for(this.indices=[],this.dispX=[],this.dispY=[],this.cellLocation=[],this.isMoveable=[],this.neighbours=[],this.radius=[],this.radiusSquared=[],this.forceConstant<.001&&(this.forceConstant=.001),this.forceConstantSquared=this.forceConstant*this.forceConstant,a=0;a<this.vertexArray.length;a++){var o=this.vertexArray[a];this.cellLocation[a]=[];var r=mxCellPath.create(o);this.indices[r]=a;var l=this.getVertexBounds(o),d=l.width,c=l.height,m=l.x,u=l.y;this.cellLocation[a][0]=m+d/2,this.cellLocation[a][1]=u+c/2,this.radius[a]=Math.min(d,c),this.radiusSquared[a]=this.radius[a]*this.radius[a]}n.beginUpdate();try{for(a=0;a<s;a++){this.dispX[a]=0,this.dispY[a]=0,this.isMoveable[a]=this.isVertexMovable(this.vertexArray[a]);var p=this.graph.getConnections(this.vertexArray[a],e);t=this.graph.getOpposites(p,this.vertexArray[a]);for(this.neighbours[a]=[],d=0;d<t.length;d++){this.resetEdges&&this.graph.resetEdge(p[d]),this.disableEdgeStyle&&this.setEdgeStyleEnabled(p[d],!1);r=mxCellPath.create(t[d]);var g=this.indices[r];this.neighbours[a][d]=null!=g?g:a}}for(this.temperature=this.initialTemp,0==this.maxIterations&&(this.maxIterations=20*Math.sqrt(s)),this.iteration=0;this.iteration<this.maxIterations;this.iteration++){if(!this.allowedToRun)return;this.calcRepulsion(),this.calcAttraction(),this.calcPositions(),this.reduceTemperature()}for(e=t=null,a=0;a<this.vertexArray.length;a++)o=this.vertexArray[a],this.isVertexMovable(o)&&(null!=(l=this.getVertexBounds(o))&&(this.cellLocation[a][0]-=l.width/2,this.cellLocation[a][1]-=l.height/2,m=this.graph.snap(this.cellLocation[a][0]),u=this.graph.snap(this.cellLocation[a][1]),this.setVertexLocation(o,m,u),t=null==t?m:Math.min(t,m),e=null==e?u:Math.min(e,u)));a=1-(t||0),o=1-(e||0),null!=i&&(a+=i.x,o+=i.y),this.graph.moveCells(this.vertexArray,a,o)}finally{n.endUpdate()}},mxFastOrganicLayout.prototype.calcPositions=function(){for(var e=0;e<this.vertexArray.length;e++)if(this.isMoveable[e]){(t=Math.sqrt(this.dispX[e]*this.dispX[e]+this.dispY[e]*this.dispY[e]))<.001&&(t=.001);var n=this.dispX[e]/t*Math.min(t,this.temperature),t=this.dispY[e]/t*Math.min(t,this.temperature);this.dispX[e]=0,this.dispY[e]=0,this.cellLocation[e][0]+=n,this.cellLocation[e][1]+=t}},mxFastOrganicLayout.prototype.calcAttraction=function(){for(var e=0;e<this.vertexArray.length;e++)for(var n=0;n<this.neighbours[e].length;n++){var t=this.neighbours[e][n];if(e!=t&&this.isMoveable[e]&&this.isMoveable[t]){(a=(s=this.cellLocation[e][0]-this.cellLocation[t][0])*s+(o=this.cellLocation[e][1]-this.cellLocation[t][1])*o-this.radiusSquared[e]-this.radiusSquared[t])<this.minDistanceLimitSquared&&(a=this.minDistanceLimitSquared);var a,i=Math.sqrt(a),s=s/i*(a=a/this.forceConstant),o=o/i*a;this.dispX[e]-=s,this.dispY[e]-=o,this.dispX[t]+=s,this.dispY[t]+=o}}},mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var e=this.vertexArray.length,n=0;n<e;n++)for(var t=n;t<e;t++){if(!this.allowedToRun)return;if(t!=n&&this.isMoveable[n]&&this.isMoveable[t]){var a=this.cellLocation[n][0]-this.cellLocation[t][0],i=this.cellLocation[n][1]-this.cellLocation[t][1];0==a&&(a=.01+Math.random()),0==i&&(i=.01+Math.random());var s=Math.sqrt(a*a+i*i),o=s-this.radius[n]-this.radius[t];o>this.maxDistanceLimit||(o<this.minDistanceLimit&&(o=this.minDistanceLimit),a=a/s*(o=this.forceConstantSquared/o),i=i/s*o,this.dispX[n]+=a,this.dispY[n]+=i,this.dispX[t]-=a,this.dispY[t]-=i)}}},mxFastOrganicLayout.prototype.reduceTemperature=function(){this.temperature=this.initialTemp*(1-this.iteration/this.maxIterations)},mxCircleLayout.prototype=new mxGraphLayout,mxCircleLayout.prototype.constructor=mxCircleLayout,mxCircleLayout.prototype.radius=null,mxCircleLayout.prototype.moveCircle=!1,mxCircleLayout.prototype.x0=0,mxCircleLayout.prototype.y0=0,mxCircleLayout.prototype.resetEdges=!0,mxCircleLayout.prototype.disableEdgeStyle=!0,mxCircleLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0,a=null,i=null,s=[],o=n.getChildCount(e),r=0;r<o;r++){var l=n.getChildAt(e,r);if(this.isVertexIgnored(l))this.isEdgeIgnored(l)||(this.resetEdges&&this.graph.resetEdge(l),this.disableEdgeStyle&&this.setEdgeStyleEnabled(l,!1));else{s.push(l);var d=this.getVertexBounds(l);a=null==a?d.y:Math.min(a,d.y),i=null==i?d.x:Math.min(i,d.x),t=Math.max(t,Math.max(d.width,d.height))}}var c=this.getRadius(s.length,t);this.moveCircle&&(i=this.x0,a=this.y0),this.circle(s,c,i,a)}finally{n.endUpdate()}},mxCircleLayout.prototype.getRadius=function(e,n){return Math.max(e*n/Math.PI,this.radius)},mxCircleLayout.prototype.circle=function(e,n,t,a){for(var i=e.length,s=2*Math.PI/i,o=0;o<i;o++)this.isVertexMovable(e[o])&&this.setVertexLocation(e[o],t+n+n*Math.sin(o*s),a+n+n*Math.cos(o*s))},mxParallelEdgeLayout.prototype=new mxGraphLayout,mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout,mxParallelEdgeLayout.prototype.spacing=20,mxParallelEdgeLayout.prototype.execute=function(e){e=this.findParallels(e),this.graph.model.beginUpdate();try{for(var n in e){var t=e[n];1<t.length&&this.layout(t)}}finally{this.graph.model.endUpdate()}},mxParallelEdgeLayout.prototype.findParallels=function(e){for(var n=this.graph.getModel(),t=[],a=n.getChildCount(e),i=0;i<a;i++){var s=n.getChildAt(e,i);if(!this.isEdgeIgnored(s)){var o=this.getEdgeId(s);null!=o&&(null==t[o]&&(t[o]=[]),t[o].push(s))}}return t},mxParallelEdgeLayout.prototype.getEdgeId=function(e){var n=this.graph.getView(),t=n.getState(e),a=null!=t?t.getVisibleTerminal(!0):n.getVisibleTerminal(e,!0);return e=null!=t?t.getVisibleTerminal(!1):n.getVisibleTerminal(e,!1),null!=a&&null!=e?(a=mxCellPath.create(a),(e=mxCellPath.create(e))<a?e+"-"+a:a+"-"+e):null},mxParallelEdgeLayout.prototype.layout=function(e){var n=e[0];if((o=(t=this.graph.getModel()).getGeometry(t.getTerminal(n,!0)))==(s=t.getGeometry(t.getTerminal(n,!1)))){n=o.x+o.width+this.spacing;for(var t=o.y+o.height/2,a=0;a<e.length;a++)this.route(e[a],n,t),n+=this.spacing}else if(null!=o&&null!=s){n=o.x+o.width/2,t=o.y+o.height/2,a=s.x+s.width/2-n;var i=s.y+s.height/2-t,s=Math.sqrt(a*a+i*i),o=i*this.spacing/s;for(s=a*this.spacing/s,n=n+a/2+o*(e.length-1)/2,t=t+i/2-s*(e.length-1)/2,a=0;a<e.length;a++)this.route(e[a],n,t),n-=o,t+=s}},mxParallelEdgeLayout.prototype.route=function(e,n,t){this.graph.isCellMovable(e)&&this.setEdgePoints(e,[new mxPoint(n,t)])},mxCompositeLayout.prototype=new mxGraphLayout,mxCompositeLayout.prototype.constructor=mxCompositeLayout,mxCompositeLayout.prototype.layouts=null,mxCompositeLayout.prototype.master=null,mxCompositeLayout.prototype.moveCell=function(e,n,t){null!=this.master?this.master.move.apply(this.master,arguments):this.layouts[0].move.apply(this.layouts[0],arguments)},mxCompositeLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<this.layouts.length;t++)this.layouts[t].execute.apply(this.layouts[t],arguments)}finally{n.endUpdate()}},mxEdgeLabelLayout.prototype=new mxGraphLayout,mxEdgeLabelLayout.prototype.constructor=mxEdgeLabelLayout,mxEdgeLabelLayout.prototype.execute=function(e){for(var n=this.graph.view,t=this.graph.getModel(),a=[],i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o),l=n.getState(r);null!=l&&(this.isVertexIgnored(r)?this.isEdgeIgnored(r)||a.push(l):i.push(l))}this.placeLabels(i,a)},mxEdgeLabelLayout.prototype.placeLabels=function(e,n){var t=this.graph.getModel();t.beginUpdate();try{for(var a=0;a<n.length;a++){var i=n[a];if(null!=i&&null!=i.text&&null!=i.text.boundingBox)for(var s=0;s<e.length;s++){var o=e[s];null!=o&&this.avoid(i,o)}}}finally{t.endUpdate()}},mxEdgeLabelLayout.prototype.avoid=function(e,n){var t=this.graph.getModel(),a=e.text.boundingBox;if(mxUtils.intersects(a,n)){var i=-a.y-a.height+n.y,s=-a.y+n.y+n.height;i=Math.abs(i)<Math.abs(s)?i:s,s=-a.x-a.width+n.x,a=-a.x+n.x+n.width,a=Math.abs(s)<Math.abs(a)?s:a;Math.abs(a)<Math.abs(i)?i=0:a=0,null!=(s=t.getGeometry(e.cell))&&(null!=(s=s.clone()).offset?(s.offset.x+=a,s.offset.y+=i):s.offset=new mxPoint(a,i),t.setGeometry(e.cell,s))}},mxGraphAbstractHierarchyCell.prototype.maxRank=-1,mxGraphAbstractHierarchyCell.prototype.minRank=-1,mxGraphAbstractHierarchyCell.prototype.x=null,mxGraphAbstractHierarchyCell.prototype.y=null,mxGraphAbstractHierarchyCell.prototype.width=0,mxGraphAbstractHierarchyCell.prototype.height=0,mxGraphAbstractHierarchyCell.prototype.nextLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.previousLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.temp=null,mxGraphAbstractHierarchyCell.prototype.getNextLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.isEdge=function(){return!1},mxGraphAbstractHierarchyCell.prototype.isVertex=function(){return!1},mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable=function(e){return null},mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable=function(e,n){return null},mxGraphAbstractHierarchyCell.prototype.setX=function(e,n){this.isVertex()?this.x[0]=n:this.isEdge()&&(this.x[e-this.minRank-1]=n)},mxGraphAbstractHierarchyCell.prototype.getX=function(e){return this.isVertex()?this.x[0]:this.isEdge()?this.x[e-this.minRank-1]:0},mxGraphAbstractHierarchyCell.prototype.setY=function(e,n){this.isVertex()?this.y[0]=n:this.isEdge()&&(this.y[e-this.minRank-1]=n)},mxGraphHierarchyNode.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyNode.prototype.constructor=mxGraphHierarchyNode,mxGraphHierarchyNode.prototype.cell=null,mxGraphHierarchyNode.prototype.connectsAsTarget=[],mxGraphHierarchyNode.prototype.connectsAsSource=[],mxGraphHierarchyNode.prototype.hashCode=!1,mxGraphHierarchyNode.prototype.getRankValue=function(e){return this.maxRank},mxGraphHierarchyNode.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[],this.nextLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsTarget.length;n++){var t=this.connectsAsTarget[n];-1==t.maxRank||t.maxRank==e+1?this.nextLayerConnectedCells[0].push(t.source):this.nextLayerConnectedCells[0].push(t)}}return this.nextLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[],this.previousLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsSource.length;n++){var t=this.connectsAsSource[n];-1==t.minRank||t.minRank==e-1?this.previousLayerConnectedCells[0].push(t.target):this.previousLayerConnectedCells[0].push(t)}}return this.previousLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.isVertex=function(){return!0},mxGraphHierarchyNode.prototype.getGeneralPurposeVariable=function(e){return this.temp[0]},mxGraphHierarchyNode.prototype.setGeneralPurposeVariable=function(e,n){this.temp[0]=n},mxGraphHierarchyNode.prototype.isAncestor=function(e){if(null!=e&&null!=this.hashCode&&null!=e.hashCode&&this.hashCode.length<e.hashCode.length){if(this.hashCode==e.hashCode)return!0;if(null==this.hashCode||null==this.hashCode)return!1;for(var n=0;n<this.hashCode.length;n++)if(this.hashCode[n]!=e.hashCode[n])return!1;return!0}return!1},mxGraphHierarchyNode.prototype.getCoreCell=function(){return this.cell},mxGraphHierarchyEdge.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyEdge.prototype.constructor=mxGraphHierarchyEdge,mxGraphHierarchyEdge.prototype.edges=null,mxGraphHierarchyEdge.prototype.source=null,mxGraphHierarchyEdge.prototype.target=null,mxGraphHierarchyEdge.prototype.isReversed=!1,mxGraphHierarchyEdge.prototype.invert=function(e){e=this.source,this.source=this.target,this.target=e,this.isReversed=!this.isReversed},mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.nextLayerConnectedCells[n]=[],n==this.temp.length-1?this.nextLayerConnectedCells[n].push(this.source):this.nextLayerConnectedCells[n].push(this)}return this.nextLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.previousLayerConnectedCells[n]=[],0==n?this.previousLayerConnectedCells[n].push(this.target):this.previousLayerConnectedCells[n].push(this)}return this.previousLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.isEdge=function(){return!0},mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable=function(e){return this.temp[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable=function(e,n){this.temp[e-this.minRank-1]=n},mxGraphHierarchyEdge.prototype.getCoreCell=function(){return null!=this.edges&&0<this.edges.length?this.edges[0]:null},mxGraphHierarchyModel.prototype.maxRank=null,mxGraphHierarchyModel.prototype.vertexMapper=null,mxGraphHierarchyModel.prototype.edgeMapper=null,mxGraphHierarchyModel.prototype.ranks=null,mxGraphHierarchyModel.prototype.roots=null,mxGraphHierarchyModel.prototype.parent=null,mxGraphHierarchyModel.prototype.dfsCount=0,mxGraphHierarchyModel.prototype.SOURCESCANSTARTRANK=1e8,mxGraphHierarchyModel.prototype.tightenToSource=!1,mxGraphHierarchyModel.prototype.createInternalCells=function(e,n,t){for(var a=e.getGraph(),i=0;i<n.length;i++){t[i]=new mxGraphHierarchyNode(n[i]);var s=mxCellPath.create(n[i]);this.vertexMapper[s]=t[i],s=e.getEdges(n[i]),t[i].connectsAsSource=[];for(var o=0;o<s.length;o++){if((d=e.getVisibleTerminal(s[o],!1))!=n[i]&&d!=n[i]&&e.graph.model.isVertex(d)&&!e.isVertexIgnored(d)){var r=e.getEdgesBetween(n[i],d,!1),l=e.getEdgesBetween(n[i],d,!0),d=mxCellPath.create(r[0]);if(null!=r&&0<r.length&&null==this.edgeMapper[d]&&2*l.length>=r.length){l=new mxGraphHierarchyEdge(r);for(var c=0;c<r.length;c++){var m=r[c];d=mxCellPath.create(m);this.edgeMapper[d]=l,a.resetEdge(m),e.disableEdgeStyle&&(e.setEdgeStyleEnabled(m,!1),e.setOrthogonalEdge(m,!0))}l.source=t[i],mxUtils.indexOf(t[i].connectsAsSource,l)<0&&t[i].connectsAsSource.push(l)}}}t[i].temp[0]=0}},mxGraphHierarchyModel.prototype.initialRank=function(){var e=[];if(null!=this.roots)for(var n=0;n<this.roots.length;n++){var t=mxCellPath.create(this.roots[n]);null!=(t=this.vertexMapper[t])&&e.push(t)}for(var a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]=-1;for(var i=e.slice();0<e.length;){var s,o;s=(t=e[0]).connectsAsTarget,o=t.connectsAsSource;var r=!0,l=this.SOURCESCANSTARTRANK;for(n=0;n<s.length;n++){var d=s[n];if(5270620!=d.temp[0]){r=!1;break}d=d.source,l=Math.min(l,d.temp[0]-1)}if(r){if(t.temp[0]=l,this.maxRank=Math.min(this.maxRank,l),null!=o)for(n=0;n<o.length;n++)(d=o[n]).temp[0]=5270620,-1==(d=d.target).temp[0]&&(e.push(d),d.temp[0]=-2);e.shift()}else if(n=e.shift(),e.push(t),n==t&&1==e.length)break}for(a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]-=this.maxRank;for(n=0;n<i.length;n++)for(e=0,s=(t=i[n]).connectsAsSource,a=0;a<s.length;a++)d=(d=s[a]).target,t.temp[0]=Math.max(e,d.temp[0]+1),e=t.temp[0];this.maxRank=this.SOURCESCANSTARTRANK-this.maxRank},mxGraphHierarchyModel.prototype.fixRanks=function(){var s=[];this.ranks=[];for(var e=0;e<this.maxRank+1;e++)s[e]=[],this.ranks[e]=s[e];var n=null;if(null!=this.roots){var t=this.roots;for(n=[],e=0;e<t.length;e++){var a=mxCellPath.create(t[e]);n[e]=this.vertexMapper[a]}}this.visit(function(e,n,t,a,i){if(0==i&&n.maxRank<0&&n.minRank<0&&(s[n.temp[0]].push(n),n.maxRank=n.temp[0],n.minRank=n.temp[0],n.temp[0]=s[n.maxRank].length-1),null!=e&&null!=t&&1<e.maxRank-n.maxRank)for(t.maxRank=e.maxRank,t.minRank=n.maxRank,t.temp=[],t.x=[],t.y=[],e=t.minRank+1;e<t.maxRank;e++)s[e].push(t),t.setGeneralPurposeVariable(e,s[e].length-1)},n,!1,null)},mxGraphHierarchyModel.prototype.visit=function(e,n,t,a){if(null!=n){for(var i=0;i<n.length;i++){var s=n[i];null!=s&&(null==a&&(a={}),t?(s.hashCode=[],s.hashCode[0]=this.dfsCount,s.hashCode[1]=i,this.extendedDfs(null,s,null,e,a,s.hashCode,i,0)):this.dfs(null,s,null,e,a,0))}this.dfsCount++}},mxGraphHierarchyModel.prototype.dfs=function(e,n,t,a,i,s){if(null!=n){var o=mxCellPath.create(n.cell);if(null==i[o])for(a(e,i[o]=n,t,s,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.dfs(n,o.target,o,a,i,s+1);else a(e,n,t,s,1)}},mxGraphHierarchyModel.prototype.extendedDfs=function(e,n,t,a,i,s,o,r){if(null!=n)if(null==e||null!=n.hashCode&&n.hashCode[0]==e.hashCode[0]||(s=e.hashCode.length+1,n.hashCode=e.hashCode.slice(),n.hashCode[s-1]=o),null==i[o=mxCellPath.create(n.cell)])for(a(e,i[o]=n,t,r,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.extendedDfs(n,o.target,o,a,i,n.hashCode,t,r+1);else a(e,n,t,r,1)},mxHierarchicalLayoutStage.prototype.execute=function(e){},mxMedianHybridCrossingReduction.prototype=new mxHierarchicalLayoutStage,mxMedianHybridCrossingReduction.prototype.constructor=mxMedianHybridCrossingReduction,mxMedianHybridCrossingReduction.prototype.layout=null,mxMedianHybridCrossingReduction.prototype.maxIterations=24,mxMedianHybridCrossingReduction.prototype.nestedBestRanks=null,mxMedianHybridCrossingReduction.prototype.currentBestCrossings=0,mxMedianHybridCrossingReduction.prototype.iterationsWithoutImprovement=0,mxMedianHybridCrossingReduction.prototype.maxNoImprovementIterations=2,mxMedianHybridCrossingReduction.prototype.execute=function(e){e=this.layout.getModel(),this.nestedBestRanks=[];for(var n=0;n<e.ranks.length;n++)this.nestedBestRanks[n]=e.ranks[n].slice();var t=0,a=this.calculateCrossings(e);for(n=0;n<this.maxIterations&&t<this.maxNoImprovementIterations;n++){this.weightedMedian(n,e),this.transpose(n,e);var i=this.calculateCrossings(e);if(i<a)for(a=i,i=t=0;i<this.nestedBestRanks.length;i++)for(var s=e.ranks[i],o=0;o<s.length;o++){var r=s[o];this.nestedBestRanks[i][r.getGeneralPurposeVariable(i)]=r}else for(t++,i=0;i<this.nestedBestRanks.length;i++)for(s=e.ranks[i],o=0;o<s.length;o++)(r=s[o]).setGeneralPurposeVariable(i,o);if(0==a)break}for(t=[],a=[],n=0;n<e.maxRank+1;n++)a[n]=[],t[n]=a[n];for(n=0;n<this.nestedBestRanks.length;n++)for(i=0;i<this.nestedBestRanks[n].length;i++)a[n].push(this.nestedBestRanks[n][i]);e.ranks=t},mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(e){for(var n=e.ranks.length,t=0,a=1;a<n;a++)t+=this.calculateRankCrossing(a,e);return t},mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(e,n){for(var t=0,a=n.ranks[e],i=a.length,s=n.ranks[e-1].length,o=[],r=0;r<i;r++)o[r]=[];for(r=0;r<a.length;r++)for(var l=(c=a[r]).getGeneralPurposeVariable(e),d=c.getPreviousLayerConnectedCells(e),c=0;c<d.length;c++){var m=d[c].getGeneralPurposeVariable(e-1);o[l][m]=201207}for(r=0;r<i;r++)for(c=0;c<s;c++)if(201207==o[r][c]){for(a=r+1;a<i;a++)for(l=0;l<c;l++)201207==o[a][l]&&t++;for(a=0;a<r;a++)for(l=c+1;l<s;l++)201207==o[a][l]&&t++}return t/2},mxMedianHybridCrossingReduction.prototype.transpose=function(e,n){for(var t=!0,a=0;t&&a++<10;)for(var i=1==e%2&&1==a%2,s=(t=!1,0);s<n.ranks.length;s++){for(var o=n.ranks[s],r=[],l=0;l<o.length;l++){(b=(f=o[l]).getGeneralPurposeVariable(s))<0&&(b=l),r[b]=f}var d=b=f=null,c=null,m=null,u=null,p=null,g=null,v=null,h=null;for(l=0;l<o.length-1;l++){if(0==l){for(var f=(v=r[l]).getNextLayerConnectedCells(s),b=v.getPreviousLayerConnectedCells(s),A=(m=[],u=[],0);A<f.length;A++)m[A]=f[A].getGeneralPurposeVariable(s+1);for(A=0;A<b.length;A++)u[A]=b[A].getGeneralPurposeVariable(s-1)}else f=d,b=c,m=p,u=g,v=h;for(d=(h=r[l+1]).getNextLayerConnectedCells(s),c=h.getPreviousLayerConnectedCells(s),p=[],g=[],A=0;A<d.length;A++)p[A]=d[A].getGeneralPurposeVariable(s+1);for(A=0;A<c.length;A++)g[A]=c[A].getGeneralPurposeVariable(s-1);var E=0,y=0;for(A=0;A<m.length;A++)for(var S=0;S<p.length;S++)m[A]>p[S]&&E++,m[A]<p[S]&&y++;for(A=0;A<u.length;A++)for(S=0;S<g.length;S++)u[A]>g[S]&&E++,u[A]<g[S]&&y++;(y<E||y==E&&i)&&(d=v.getGeneralPurposeVariable(s),v.setGeneralPurposeVariable(s,h.getGeneralPurposeVariable(s)),h.setGeneralPurposeVariable(s,d),d=f,c=b,p=m,g=u,h=v,i||(t=!0))}}},mxMedianHybridCrossingReduction.prototype.weightedMedian=function(e,n){var t=0==e%2;if(t)for(var a=n.maxRank-1;0<=a;a--)this.medianRank(a,t);else for(a=1;a<n.maxRank;a++)this.medianRank(a,t)},mxMedianHybridCrossingReduction.prototype.medianRank=function(e,n){for(var t=this.nestedBestRanks[e].length,a=[],i=[],s=0;s<t;s++){var o,r,l=this.nestedBestRanks[e][s],d=new MedianCellSorter;d.cell=l,r=n?e+1:e-1,null!=(o=n?l.getNextLayerConnectedCells(e):l.getPreviousLayerConnectedCells(e))&&0!=o.length?(d.medianValue=this.medianValue(o,r),a.push(d)):i[l.getGeneralPurposeVariable(e)]=!0}for(a.sort(MedianCellSorter.prototype.compare),s=0;s<t;s++)null==i[s]&&(l=a.shift().cell).setGeneralPurposeVariable(e,s)},mxMedianHybridCrossingReduction.prototype.medianValue=function(e,n){for(var t=[],a=0,i=0;i<e.length;i++){var s=e[i];t[a++]=s.getGeneralPurposeVariable(n)}return t.sort(function(e,n){return e-n}),1==a%2?t[Math.floor(a/2)]:2==a?(t[0]+t[1])/2:(s=t[(i=a/2)-1]-t[0],a=t[a-1]-t[i],(t[i-1]*a+t[i]*s)/(s+a))},MedianCellSorter.prototype.medianValue=0,MedianCellSorter.prototype.cell=!1,MedianCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.medianValue>e.medianValue?-1:n.medianValue<e.medianValue?1:0:0},mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage,mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover,mxMinimumCycleRemover.prototype.layout=null,mxMinimumCycleRemover.prototype.execute=function(e){var n=this.layout.getModel(),s={},o=mxUtils.clone(n.vertexMapper,null,!0),t=null;if(null!=n.roots){var a=n.roots;t=[];for(e=0;e<a.length;e++){var i=mxCellPath.create(a[e]);t[e]=n.vertexMapper[i]}}if(n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget),n.connectsAsSource.push(t)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},t,!0,null),t=null,0<o.lenth&&(t=mxUtils.clone(o,null,!0)),e=mxUtils.clone(s,null,!0),n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),n.connectsAsSource.push(t),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},o,!0,e),a=this.layout.getGraph(),null!=t&&0<t.length)for(n=n.roots,e=0;e<t.length;e++)i=t[e].cell,0==a.getIncomingEdges(i).length&&n.push(i)};var mxHierarchicalEdgeStyle={ORTHOGONAL:1,POLYLINE:2,STRAIGHT:3,CURVE:4};function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxHierarchicalLayout(e,n,t){mxGraphLayout.call(this,e),this.orientation=null!=n?n:mxConstants.DIRECTION_NORTH,this.deterministic=null==t||t}function mxGraphModel(e){this.currentEdit=this.createUndoableEdit(),null!=e?this.setRoot(e):this.clear()}function mxRootChange(e,n){this.model=e,this.previous=this.root=n}function mxChildChange(e,n,t,a){this.model=e,this.previous=this.parent=n,this.child=t,this.previousIndex=this.index=a}function mxTerminalChange(e,n,t,a){this.model=e,this.cell=n,this.previous=this.terminal=t,this.source=a}function mxValueChange(e,n,t){this.model=e,this.cell=n,this.previous=this.value=t}function mxStyleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.style=t}function mxGeometryChange(e,n,t){this.model=e,this.cell=n,this.previous=this.geometry=t}function mxCollapseChange(e,n,t){this.model=e,this.cell=n,this.previous=this.collapsed=t}function mxVisibleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.visible=t}function mxCellAttributeChange(e,n,t){this.cell=e,this.attribute=n,this.previous=this.value=t}function mxCell(e,n,t){this.value=e,this.setGeometry(n),this.setStyle(t),null!=this.onInit&&this.onInit()}function mxGeometry(e,n,t,a){mxRectangle.call(this,e,n,t,a)}mxCoordinateAssignment.prototype=new mxHierarchicalLayoutStage,mxCoordinateAssignment.prototype.constructor=mxCoordinateAssignment,mxCoordinateAssignment.prototype.layout=null,mxCoordinateAssignment.prototype.intraCellSpacing=30,mxCoordinateAssignment.prototype.interRankCellSpacing=100,mxCoordinateAssignment.prototype.parallelEdgeSpacing=10,mxCoordinateAssignment.prototype.maxIterations=8,mxCoordinateAssignment.prototype.prefHozEdgeSep=5,mxCoordinateAssignment.prototype.prefVertEdgeOff=2,mxCoordinateAssignment.prototype.minEdgeJetty=12,mxCoordinateAssignment.prototype.channelBuffer=4,mxCoordinateAssignment.prototype.jettyPositions=null,mxCoordinateAssignment.prototype.orientation=mxConstants.DIRECTION_NORTH,mxCoordinateAssignment.prototype.initialX=null,mxCoordinateAssignment.prototype.limitX=null,mxCoordinateAssignment.prototype.currentXDelta=null,mxCoordinateAssignment.prototype.widestRank=null,mxCoordinateAssignment.prototype.rankTopY=null,mxCoordinateAssignment.prototype.rankBottomY=null,mxCoordinateAssignment.prototype.widestRankValue=null,mxCoordinateAssignment.prototype.rankWidths=null,mxCoordinateAssignment.prototype.rankY=null,mxCoordinateAssignment.prototype.fineTuning=!0,mxCoordinateAssignment.prototype.edgeStyle=mxHierarchicalEdgeStyle.POLYLINE,mxCoordinateAssignment.prototype.nextLayerConnectedCache=null,mxCoordinateAssignment.prototype.previousLayerConnectedCache=null,mxCoordinateAssignment.prototype.groupPadding=10,mxCoordinateAssignment.prototype.printStatus=function(){var e=this.layout.getModel();mxLog.show(),mxLog.writeln("======Coord assignment debug=======");for(var n=0;n<e.ranks.length;n++){mxLog.write("Rank ",n," : ");for(var t=e.ranks[n],a=0;a<t.length;a++)mxLog.write(t[a].getGeneralPurposeVariable(n),"  ");mxLog.writeln()}mxLog.writeln("====================================")},mxCoordinateAssignment.prototype.execute=function(e){this.jettyPositions=[],e=this.layout.getModel(),this.currentXDelta=0,this.initialCoords(this.layout.getGraph(),e),this.fineTuning&&this.minNode(e);var n=1e8;if(this.fineTuning)for(var t=0;t<this.maxIterations;t++){if(0!=t&&(this.medianPos(t,e),this.minNode(e)),this.currentXDelta<n){for(var a=0;a<e.ranks.length;a++)for(var i=e.ranks[a],s=0;s<i.length;s++){var o=i[s];o.setX(a,o.getGeneralPurposeVariable(a))}n=this.currentXDelta}else for(a=0;a<e.ranks.length;a++)for(i=e.ranks[a],s=0;s<i.length;s++)(o=i[s]).setGeneralPurposeVariable(a,o.getX(a));this.minPath(this.layout.getGraph(),e),this.currentXDelta=0}this.setCellLocations(this.layout.getGraph(),e)},mxCoordinateAssignment.prototype.minNode=function(e){for(var n=[],t=[],a=[],i=0;i<=e.maxRank;i++){a[i]=e.ranks[i];for(var s=0;s<a[i].length;s++){var o=a[i][s];(r=new WeightedCellSorter(o,i)).rankIndex=s,r.visited=!0,n.push(r),t[o=mxCellPath.create(o.getCoreCell())]=r}}for(e=10*n.length,s=0;0<n.length&&s<=e;){i=(r=n.shift()).cell;var r,l=r.weightedValue,d=parseInt(r.rankIndex),c=(o=i.getNextLayerConnectedCells(l),i.getPreviousLayerConnectedCells(l)),m=o.length,u=c.length,p=this.medianXValue(o,l+1),g=this.medianXValue(c,l-1),v=m+u,h=i.getGeneralPurposeVariable(l),f=h;if(0<v&&(f=(p*m+g*u)/v),m=!1,f<h-1?0==d?(i.setGeneralPurposeVariable(l,f),m=!0):(h=(h=(d=a[l][d-1]).getGeneralPurposeVariable(l))+d.width/2+this.intraCellSpacing+i.width/2)<f?(i.setGeneralPurposeVariable(l,f),m=!0):h<i.getGeneralPurposeVariable(l)-1&&(i.setGeneralPurposeVariable(l,h),m=!0):h+1<f&&(d==a[l].length-1?(i.setGeneralPurposeVariable(l,f),m=!0):f<(h=(h=(d=a[l][d+1]).getGeneralPurposeVariable(l))-d.width/2-this.intraCellSpacing-i.width/2)?(i.setGeneralPurposeVariable(l,f),m=!0):h>i.getGeneralPurposeVariable(l)+1&&(i.setGeneralPurposeVariable(l,h),m=!0)),m){for(i=0;i<o.length;i++)l=o[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l));for(i=0;i<c.length;i++)l=c[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l))}r.visited=!1,s++}},mxCoordinateAssignment.prototype.medianPos=function(e,n){if(0==e%2)for(var t=n.maxRank;0<t;t--)this.rankMedianPosition(t-1,n,t);else for(t=0;t<n.maxRank-1;t++)this.rankMedianPosition(t+1,n,t)},mxCoordinateAssignment.prototype.rankMedianPosition=function(e,n,t){n=n.ranks[e];for(var a=[],i=[],s=0;s<n.length;s++){var o=n[s];a[s]=new WeightedCellSorter,a[s].cell=o,a[s].rankIndex=s;var r=mxCellPath.create(o.getCoreCell());i[r]=a[s];var l=null;l=t<e?o.getPreviousLayerConnectedCells(e):o.getNextLayerConnectedCells(e);a[s].weightedValue=this.calculatedWeightedValue(o,l)}for(a.sort(WeightedCellSorter.prototype.compare),s=0;s<a.length;s++){r=0,o=a[s].cell,r=0,null!=(l=t<e?o.getPreviousLayerConnectedCells(e).slice():o.getNextLayerConnectedCells(e).slice())&&(r=0<(r=l.length)?this.medianXValue(l,t):o.getGeneralPurposeVariable(e));for(var d=0,c=(l=-1e8,a[s].rankIndex-1);0<=c;){var m;if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var u=m.cell;m.visited?(l=u.getGeneralPurposeVariable(e)+u.width/2+this.intraCellSpacing+d+o.width/2,c=-1):(d+=u.width+this.intraCellSpacing,c--)}}for(d=0,u=1e8,c=a[s].rankIndex+1;c<a.length;)if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var p=m.cell;m.visited?(u=p.getGeneralPurposeVariable(e)-p.width/2-this.intraCellSpacing-d-o.width/2,c=a.length):(d+=p.width+this.intraCellSpacing,c++)}l<=r&&r<=u?o.setGeneralPurposeVariable(e,r):r<l?(o.setGeneralPurposeVariable(e,l),this.currentXDelta+=l-r):u<r&&(o.setGeneralPurposeVariable(e,u),this.currentXDelta+=r-u),a[s].visited=!0}},mxCoordinateAssignment.prototype.calculatedWeightedValue=function(e,n){for(var t=0,a=0;a<n.length;a++){var i=n[a];e.isVertex()&&i.isVertex()?t++:t=e.isEdge()&&i.isEdge()?t+8:t+2}return t},mxCoordinateAssignment.prototype.medianXValue=function(e,n){if(0==e.length)return 0;for(var t=[],a=0;a<e.length;a++)t[a]=e[a].getGeneralPurposeVariable(n);return t.sort(function(e,n){return e-n}),1==e.length%2?t[Math.floor(e.length/2)]:(t[(a=e.length/2)-1]+t[a])/2},mxCoordinateAssignment.prototype.initialCoords=function(e,n){this.calculateWidestRank(e,n);for(var t=this.widestRank;0<=t;t--)t<n.maxRank&&this.rankCoordinates(t,e,n);for(t=this.widestRank+1;t<=n.maxRank;t++)0<t&&this.rankCoordinates(t,e,n)},mxCoordinateAssignment.prototype.rankCoordinates=function(e,n,t){n=t.ranks[e],t=0;for(var a=this.initialX+(this.widestRankValue-this.rankWidths[e])/2,i=!1,s=0;s<n.length;s++){var o=n[s];if(o.isVertex()){var r=this.layout.getVertexBounds(o.cell);null!=r?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(o.width=r.width,o.height=r.height):(o.width=r.height,o.height=r.width):i=!0,t=Math.max(t,o.height)}else o.isEdge()&&(r=1,null!=o.edges?r=o.edges.length:mxLog.warn("edge.edges is null"),o.width=(r-1)*this.parallelEdgeSpacing);a+=o.width/2,o.setX(e,a),o.setGeneralPurposeVariable(e,a),a+=o.width/2,a+=this.intraCellSpacing}1==i&&mxLog.warn("At least one cell has no bounds")},mxCoordinateAssignment.prototype.calculateWidestRank=function(e,n){var t=-this.interRankCellSpacing,a=0;this.rankWidths=[],this.rankY=[];for(var i=n.maxRank;0<=i;i--){for(var s=0,o=n.ranks[i],r=this.initialX,l=!1,d=0;d<o.length;d++){var c=o[d];if(c.isVertex()){var m=this.layout.getVertexBounds(c.cell);null!=m?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(c.width=m.width,c.height=m.height):(c.width=m.height,c.height=m.width):l=!0,s=Math.max(s,c.height)}else c.isEdge()&&(m=1,null!=c.edges?m=c.edges.length:mxLog.warn("edge.edges is null"),c.width=(m-1)*this.parallelEdgeSpacing);r+=c.width/2,c.setX(i,r),c.setGeneralPurposeVariable(i,r),r+=c.width/2,(r+=this.intraCellSpacing)>this.widestRankValue&&(this.widestRankValue=r,this.widestRank=i),this.rankWidths[i]=r}for(1==l&&mxLog.warn("At least one cell has no bounds"),this.rankY[i]=t,r=s/2+a/2+this.interRankCellSpacing,a=s,t=this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_WEST?t+r:t-r,d=0;d<o.length;d++)o[d].setY(i,t)}},mxCoordinateAssignment.prototype.minPath=function(e,n){var t,a=n.edgeMapper;for(t in a){var i=a[t];if(!(i.maxRank-i.minRank-1<1)){for(var s=i.getGeneralPurposeVariable(i.minRank+1),o=!0,r=0,l=i.minRank+2;l<i.maxRank;l++){s!=(d=i.getGeneralPurposeVariable(l))?(o=!1,s=d):r++}if(!o){o=s=0;var d=[],c=[],m=i.getGeneralPurposeVariable(i.minRank+1);for(l=i.minRank+1;l<i.maxRank-1;l++){var u=i.getX(l+1);m==u?(d[l-i.minRank-1]=m,s++):this.repositionValid(n,i,l+1,m)?(d[l-i.minRank-1]=m,s++):m=d[l-i.minRank-1]=u}for(m=i.getX(l),l=i.maxRank-1;l>i.minRank+1;l--)m==(u=i.getX(l-1))?(c[l-i.minRank-2]=m,o++):this.repositionValid(n,i,l-1,m)?(c[l-i.minRank-2]=m,o++):(c[l-i.minRank-2]=i.getX(l-1),m=u);if(r<o||r<s)if(s<=o)for(l=i.maxRank-2;l>i.minRank;l--)i.setX(l,c[l-i.minRank-1]);else if(o<s)for(l=i.minRank+2;l<i.maxRank;l++)i.setX(l,d[l-i.minRank-2])}}}},mxCoordinateAssignment.prototype.repositionValid=function(e,n,t,a){e=e.ranks[t];for(var i=-1,s=0;s<e.length;s++)if(n==e[s]){i=s;break}if(i<0)return!1;if(a<(s=n.getGeneralPurposeVariable(t))){if(0==i)return!0;if(!((t=(t=(e=e[i-1]).getGeneralPurposeVariable(t))+e.width/2+this.intraCellSpacing+n.width/2)<=a))return!1}else if(s<a){if(i==e.length-1)return!0;if(!(a<=(t=(t=(e=e[i+1]).getGeneralPurposeVariable(t))-e.width/2-this.intraCellSpacing-n.width/2)))return!1}return!0},mxCoordinateAssignment.prototype.setCellLocations=function(e,n){this.rankTopY=[],this.rankBottomY=[];for(var t=0;t<n.ranks.length;t++)this.rankTopY[t]=Number.MAX_VALUE,this.rankBottomY[t]=0;t=null,this.layout.resizeParent&&(t={});var a,i=n.edgeMapper,s=n.vertexMapper;for(a in s){var o=s[a];if(this.setVertexLocation(o),this.layout.resizeParent){o=e.model.getParent(o.cell);var r=mxCellPath.create(o);null==t[r]&&(t[r]=o)}}for(a in this.layout.resizeParent&&null!=t&&this.adjustParents(t),(this.edgeStyle==mxHierarchicalEdgeStyle.ORTHOGONAL||this.edgeStyle==mxHierarchicalEdgeStyle.POLYLINE||this.edgeStyle==mxHierarchicalEdgeStyle.CURVE)&&this.localEdgeProcessing(n),i)this.setEdgePosition(i[a])},mxCoordinateAssignment.prototype.adjustParents=function(e){var n,t=[];for(n in e)t.push(e[n]);this.layout.arrangeGroups(mxUtils.sortCells(t,!0),this.groupPadding)},mxCoordinateAssignment.prototype.localEdgeProcessing=function(e){for(var n=0;n<e.ranks.length;n++)for(var t=e.ranks[n],a=0;a<t.length;a++){var i=t[a];if(i.isVertex())for(var s=i.getPreviousLayerConnectedCells(n),o=n-1,r=0;r<2;r++){if(-1<o&&o<e.ranks.length&&null!=s&&0<s.length){for(var l=[],d=0;d<s.length;d++){var c=new WeightedCellSorter(s[d],s[d].getX(o));l.push(c)}l.sort(WeightedCellSorter.prototype.compare);var m=(c=i.x[0]-i.width/2)+i.width,u=s=0;for(o=[],d=0;d<l.length;d++){var p,g=l[d].cell;if(g.isVertex()){p=0==r?i.connectsAsSource:i.connectsAsTarget;for(var v=0;v<p.length;v++)p[v].source!=g&&p[v].target!=g||(s+=p[v].edges.length,u++,o.push(p[v]))}else s+=g.edges.length,u++,o.push(g)}for(i.width>(s+1)*this.prefHozEdgeSep+2*this.prefHozEdgeSep&&(c+=this.prefHozEdgeSep,m-=this.prefHozEdgeSep),c+=(l=(m-c)/s)/2,m=this.minEdgeJetty-this.prefVertEdgeOff,d=u=0;d<o.length;d++){for(g=o[d].edges.length,v=mxCellPath.create(o[d].edges[0]),null==(p=this.jettyPositions[v])&&(p=[],this.jettyPositions[v]=p),d<s/2?m+=this.prefVertEdgeOff:s/2<d&&(m-=this.prefVertEdgeOff),v=0;v<g;v++)p[4*v+2*r]=c,c+=l,p[4*v+2*r+1]=m;u=Math.max(u,m)}}s=i.getNextLayerConnectedCells(n),o=n+1}}},mxCoordinateAssignment.prototype.setEdgePosition=function(e){var n=0;if(101207!=e.temp[0]){var t=e.maxRank,a=e.minRank;t==a&&(t=e.source.maxRank,a=e.target.minRank);for(var i=0,s=mxCellPath.create(e.edges[0]),o=(s=this.jettyPositions[s],e.isReversed?e.target.cell:e.source.cell),r=this.layout.graph,l=0;l<e.edges.length;l++){var d=e.edges[l],c=this.layout.getVisibleTerminal(d,!0),m=r.model.getTerminal(d,!0),u=[],p=e.isReversed;if(c!=o&&(p=!p),null!=s){var g=p?2:0,v=p?this.rankTopY[a]:this.rankBottomY[t],h=s[4*i+1+g];p&&(h=-h),v+=h,g=s[4*i+g],m=r.model.getTerminal(d,!0),this.layout.isPort(m)&&r.model.getParent(m)==c&&(g=null!=(g=r.view.getState(m))?g.x:c.geometry.x+e.source.width*m.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(g,v)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v+h))):(u.push(new mxPoint(v,g)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v+h,g)))}for(g=e.x.length-1,v=h=-1,c=e.maxRank-1,p&&(g=0,h=e.x.length,v=1,c=e.minRank+1);e.maxRank!=e.minRank&&g!=h;g+=v){m=e.x[g]+n;var f=(this.rankTopY[c]+this.rankBottomY[c+1])/2,b=(this.rankTopY[c-1]+this.rankBottomY[c])/2;if(p){var A=f;f=b,b=A}this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(m,f)),u.push(new mxPoint(m,b))):(u.push(new mxPoint(f,m)),u.push(new mxPoint(b,m))),this.limitX=Math.max(this.limitX,m),c+=v}null!=s&&(g=p?2:0,v=p?this.rankBottomY[t]:this.rankTopY[a],h=s[4*i+3-g],p&&(h=-h),v-=h,g=s[4*i+2-g],p=r.model.getTerminal(d,!1),c=this.layout.getVisibleTerminal(d,!1),this.layout.isPort(p)&&r.model.getParent(p)==c&&(g=null!=(g=r.view.getState(p))?g.x:c.geometry.x+e.target.width*p.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v-h)),u.push(new mxPoint(g,v))):(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v-h,g)),u.push(new mxPoint(v,g)))),e.isReversed&&this.processReversedEdge(e,d),this.layout.setEdgePoints(d,u),n=0==n?this.parallelEdgeSpacing:0<n?-n:-n+this.parallelEdgeSpacing,i++}e.temp[0]=101207}},mxCoordinateAssignment.prototype.setVertexLocation=function(e){var n=e.cell,t=e.x[0]-e.width/2,a=e.y[0]-e.height/2;this.rankTopY[e.minRank]=Math.min(this.rankTopY[e.minRank],a),this.rankBottomY[e.minRank]=Math.max(this.rankBottomY[e.minRank],a+e.height),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?this.layout.setVertexLocation(n,t,a):this.layout.setVertexLocation(n,a,t),this.limitX=Math.max(this.limitX,t+e.width)},mxCoordinateAssignment.prototype.processReversedEdge=function(e,n){},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?-1:n.weightedValue<e.weightedValue?1:n.nudge?-1:1:0},mxHierarchicalLayout.prototype=new mxGraphLayout,mxHierarchicalLayout.prototype.constructor=mxHierarchicalLayout,mxHierarchicalLayout.prototype.roots=null,mxHierarchicalLayout.prototype.resizeParent=!1,mxHierarchicalLayout.prototype.moveParent=!1,mxHierarchicalLayout.prototype.parentBorder=0,mxHierarchicalLayout.prototype.intraCellSpacing=30,mxHierarchicalLayout.prototype.interRankCellSpacing=100,mxHierarchicalLayout.prototype.interHierarchySpacing=60,mxHierarchicalLayout.prototype.parallelEdgeSpacing=10,mxHierarchicalLayout.prototype.orientation=mxConstants.DIRECTION_NORTH,mxHierarchicalLayout.prototype.fineTuning=!0,mxHierarchicalLayout.prototype.tightenToSource=!0,mxHierarchicalLayout.prototype.disableEdgeStyle=!0,mxHierarchicalLayout.prototype.traverseAncestors=!0,mxHierarchicalLayout.prototype.model=null,mxHierarchicalLayout.prototype.edgesCache=null,mxHierarchicalLayout.prototype.getModel=function(){return this.model},mxHierarchicalLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.model;if(this.edgesCache={},null!=n||null!=e){if(null!=n&&null!=e){for(var a=[],i=0;i<n.length;i++)t.isAncestor(e,n[i])&&a.push(n[i]);this.roots=a}else this.roots=n;t.beginUpdate();try{this.run(e),this.resizeParent&&!this.graph.isCellCollapsed(e)&&this.graph.updateGroupBounds([e],this.parentBorder,this.moveParent)}finally{t.endUpdate()}}},mxHierarchicalLayout.prototype.findRoots=function(e,n){var t=[];if(null!=e&&null!=n){var a,i=this.graph.model,s=null,o=-1e5;for(a in n){var r=n[a];if(i.isVertex(r)&&this.graph.isCellVisible(r)){for(var l=this.getEdges(r),d=0,c=0,m=0;m<l.length;m++)this.getVisibleTerminal(l[m],!0)==r?d++:c++;0==c&&0<d&&t.push(r),o<(l=d-c)&&(o=l,s=r)}}0==t.length&&null!=s&&t.push(s)}return t},mxHierarchicalLayout.prototype.getEdges=function(e){var n=mxCellPath.create(e);if(null!=this.edgesCache[n])return this.edgesCache[n];for(var t=this.graph.model,a=[],i=this.graph.isCellCollapsed(e),s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);this.isPort(r)?a=a.concat(t.getEdges(r,!0,!0)):!i&&this.graph.isCellVisible(r)||(a=a.concat(t.getEdges(r,!0,!0)))}for(a=a.concat(t.getEdges(e,!0,!0)),t=[],o=0;o<a.length;o++)((i=this.getVisibleTerminal(a[o],!0))==(s=this.getVisibleTerminal(a[o],!1))||i!=s&&(s==e&&(null==this.parent||this.graph.isValidAncestor(i,this.parent,this.traverseAncestors))||i==e&&(null==this.parent||this.graph.isValidAncestor(s,this.parent,this.traverseAncestors))))&&t.push(a[o]);return this.edgesCache[n]=t},mxHierarchicalLayout.prototype.getVisibleTerminal=function(e,n){var t=null!=(t=this.graph.view.getState(e))?t.getVisibleTerminal(n):this.graph.view.getVisibleTerminal(e,n);return this.isPort(t)&&(t=this.graph.model.getParent(t)),t},mxHierarchicalLayout.prototype.run=function(e){var n=[],t=[];if(null==this.roots&&null!=e){var a={};this.filterDescendants(e,a),this.roots=[];var i,s=!0;for(i in a)if(null!=a[i]){s=!1;break}for(;!s;){var o=this.findRoots(e,a);for(s=0;s<o.length;s++){var r=[];n.push(r),this.traverse(o[s],!0,null,t,r,n,a)}for(s=0;s<o.length;s++)this.roots.push(o[s]);for(i in s=!0,a)if(null!=a[i]){s=!1;break}}}else for(s=0;s<roots.length;s++)r=[],n.push(r),traverse(roots.get(s),!0,null,t,r,n,null);for(s=t=0;s<n.length;s++){for(i in a=[],r=n[s])a.push(r[i]);this.model=new mxGraphHierarchyModel(this,a,this.roots,e,this.tightenToSource),this.cycleStage(e),this.layeringStage(),this.crossingStage(e),t=this.placementStage(t,e)}},mxHierarchicalLayout.prototype.filterDescendants=function(e,n){var t=this.graph.model;if(t.isVertex(e)&&e!=this.parent&&this.graph.isCellVisible(e)&&(n[mxCellPath.create(e)]=e),this.traverseAncestors||e==this.parent&&this.graph.isCellVisible(e))for(var a=t.getChildCount(e),i=0;i<a;i++){var s=t.getChildAt(e,i);this.isPort(s)||this.filterDescendants(s,n)}},mxHierarchicalLayout.prototype.isPort=function(e){return!!e.geometry.relative},mxHierarchicalLayout.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=this.getVisibleTerminal(a[s],!0),r=this.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxHierarchicalLayout.prototype.traverse=function(e,n,t,a,i,s,o){if(null!=e&&null!=a){var r=mxCellPath.create(e);if(null!=a[r]||null!=o&&null==o[r]){if(null==i[r])for(t=0;t<s.length;t++)if(null!=(e=s[t])[r]){for(l in i)e[l]=i[l];return s.pop(),e}}else{null==i[r]&&(i[r]=e),null==a[r]&&(a[r]=e),delete o[r];var l=this.getEdges(e);for(t=0;t<l.length;t++)r=this.getVisibleTerminal(l[t],!0)==e,(!n||r)&&(r=this.getVisibleTerminal(l[t],!r),i=this.traverse(r,n,l[t],a,i,s,o))}}return i},mxHierarchicalLayout.prototype.cycleStage=function(e){new mxMinimumCycleRemover(this).execute(e)},mxHierarchicalLayout.prototype.layeringStage=function(){this.model.initialRank(),this.model.fixRanks()},mxHierarchicalLayout.prototype.crossingStage=function(e){new mxMedianHybridCrossingReduction(this).execute(e)},mxHierarchicalLayout.prototype.placementStage=function(e,n){var t=new mxCoordinateAssignment(this,this.intraCellSpacing,this.interRankCellSpacing,this.orientation,e,this.parallelEdgeSpacing);return t.fineTuning=this.fineTuning,t.execute(n),t.limitX+this.interHierarchySpacing},mxGraphModel.prototype=new mxEventSource,mxGraphModel.prototype.constructor=mxGraphModel,mxGraphModel.prototype.root=null,mxGraphModel.prototype.cells=null,mxGraphModel.prototype.maintainEdgeParent=!0,mxGraphModel.prototype.createIds=!0,mxGraphModel.prototype.prefix="",mxGraphModel.prototype.postfix="",mxGraphModel.prototype.nextId=0,mxGraphModel.prototype.currentEdit=null,mxGraphModel.prototype.updateLevel=0,mxGraphModel.prototype.endingUpdate=!1,mxGraphModel.prototype.clear=function(){this.setRoot(this.createRoot())},mxGraphModel.prototype.isCreateIds=function(){return this.createIds},mxGraphModel.prototype.setCreateIds=function(e){this.createIds=e},mxGraphModel.prototype.createRoot=function(){var e=new mxCell;return e.insert(new mxCell),e},mxGraphModel.prototype.getCell=function(e){return null!=this.cells?this.cells[e]:null},mxGraphModel.prototype.filterCells=function(e,n){var t=null;if(null!=e){t=[];for(var a=0;a<e.length;a++)n(e[a])&&t.push(e[a])}return t},mxGraphModel.prototype.getDescendants=function(e){return this.filterDescendants(null,e)},mxGraphModel.prototype.filterDescendants=function(e,n){var t=[];n=n||this.getRoot(),(null==e||e(n))&&t.push(n);for(var a=this.getChildCount(n),i=0;i<a;i++){var s=this.getChildAt(n,i);t=t.concat(this.filterDescendants(e,s))}return t},mxGraphModel.prototype.getRoot=function(e){var n=e||this.root;if(null!=e)for(;null!=e;)n=e,e=this.getParent(e);return n},mxGraphModel.prototype.setRoot=function(e){return this.execute(new mxRootChange(this,e)),e},mxGraphModel.prototype.rootChanged=function(e){var n=this.root;return this.root=e,this.nextId=0,this.cells=null,this.cellAdded(e),n},mxGraphModel.prototype.isRoot=function(e){return null!=e&&this.root==e},mxGraphModel.prototype.isLayer=function(e){return this.isRoot(this.getParent(e))},mxGraphModel.prototype.isAncestor=function(e,n){for(;null!=n&&n!=e;)n=this.getParent(n);return n==e},mxGraphModel.prototype.contains=function(e){return this.isAncestor(this.root,e)},mxGraphModel.prototype.getParent=function(e){return null!=e?e.getParent():null},mxGraphModel.prototype.add=function(e,n,t){if(n!=e&&null!=e&&null!=n){null==t&&(t=this.getChildCount(e));var a=e!=this.getParent(n);this.execute(new mxChildChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParents(n)}return n},mxGraphModel.prototype.cellAdded=function(e){if(null!=e){if(null==e.getId()&&this.createIds&&e.setId(this.createId(e)),null!=e.getId())if((n=this.getCell(e.getId()))!=e){for(;null!=n;)e.setId(this.createId(e)),n=this.getCell(e.getId());null==this.cells&&(this.cells={}),this.cells[e.getId()]=e}mxUtils.isNumeric(e.getId())&&(this.nextId=Math.max(this.nextId,e.getId()));for(var n=this.getChildCount(e),t=0;t<n;t++)this.cellAdded(this.getChildAt(e,t))}},mxGraphModel.prototype.createId=function(e){return e=this.nextId,this.nextId++,this.prefix+e+this.postfix},mxGraphModel.prototype.updateEdgeParents=function(e,n){n=n||this.getRoot(e);for(var t=this.getChildCount(e),a=0;a<t;a++){var i=this.getChildAt(e,a);this.updateEdgeParents(i,n)}for(i=this.getEdgeCount(e),t=[],a=0;a<i;a++)t.push(this.getEdgeAt(e,a));for(a=0;a<t.length;a++)i=t[a],this.isAncestor(n,i)&&this.updateEdgeParent(i,n)},mxGraphModel.prototype.updateEdgeParent=function(e,n){for(var t=this.getTerminal(e,!0),a=this.getTerminal(e,!1),i=null;null!=t&&!this.isEdge(t)&&null!=t.geometry&&t.geometry.relative;)t=this.getParent(t);for(;null!=a&&!this.isEdge(a)&&null!=a.geometry&&a.geometry.relative;)a=this.getParent(a);if(this.isAncestor(n,t)&&this.isAncestor(n,a)&&(null!=(i=t==a?this.getParent(t):this.getNearestCommonAncestor(t,a))&&(this.getParent(i)!=this.root||this.isAncestor(i,e))&&this.getParent(e)!=i)){if(null!=(t=this.getGeometry(e))){var s=this.getOrigin(this.getParent(e)),o=this.getOrigin(i);a=o.x-s.x,s=o.y-s.y;(t=t.clone()).translate(-a,-s),this.setGeometry(e,t)}this.add(i,e,this.getChildCount(i))}},mxGraphModel.prototype.getOrigin=function(e){var n=null;return null!=e?(n=this.getOrigin(this.getParent(e)),this.isEdge(e)||null!=(e=this.getGeometry(e))&&(n.x+=e.x,n.y+=e.y)):n=new mxPoint,n},mxGraphModel.prototype.getNearestCommonAncestor=function(e,n){if(null!=e&&null!=n&&(null!=(s=mxCellPath.create(n))&&0<s.length)){var t=e,a=mxCellPath.create(t);if(s.length<a.length){t=n;var i=a,s=(a=s,i)}for(;null!=t;){if(i=this.getParent(t),0==s.indexOf(a+mxCellPath.PATH_SEPARATOR)&&null!=i)return t;a=mxCellPath.getParentPath(a),t=i}}return null},mxGraphModel.prototype.remove=function(e){return e==this.root?this.setRoot(null):null!=this.getParent(e)&&this.execute(new mxChildChange(this,null,e)),e},mxGraphModel.prototype.cellRemoved=function(e){if(null!=e&&null!=this.cells){for(var n=this.getChildCount(e)-1;0<=n;n--)this.cellRemoved(this.getChildAt(e,n));null!=this.cells&&null!=e.getId()&&delete this.cells[e.getId()]}},mxGraphModel.prototype.parentForCellChanged=function(e,n,t){var a=this.getParent(e);return null!=n?(n!=a||a.getIndex(e)!=t)&&n.insert(e,t):null!=a&&(t=a.getIndex(e),a.remove(t)),this.contains(a)||null==n?null==n&&this.cellRemoved(e):this.cellAdded(e),a},mxGraphModel.prototype.getChildCount=function(e){return null!=e?e.getChildCount():0},mxGraphModel.prototype.getChildAt=function(e,n){return null!=e?e.getChildAt(n):null},mxGraphModel.prototype.getChildren=function(e){return null!=e?e.children:null},mxGraphModel.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraphModel.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraphModel.prototype.getChildCells=function(e,n,t){n=null!=n&&n,t=null!=t&&t;for(var a=this.getChildCount(e),i=[],s=0;s<a;s++){var o=this.getChildAt(e,s);(!t&&!n||t&&this.isEdge(o)||n&&this.isVertex(o))&&i.push(o)}return i},mxGraphModel.prototype.getTerminal=function(e,n){return null!=e?e.getTerminal(n):null},mxGraphModel.prototype.setTerminal=function(e,n,t){var a=n!=this.getTerminal(e,t);return this.execute(new mxTerminalChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParent(e,this.getRoot()),n},mxGraphModel.prototype.setTerminals=function(e,n,t){this.beginUpdate();try{this.setTerminal(e,n,!0),this.setTerminal(e,t,!1)}finally{this.endUpdate()}},mxGraphModel.prototype.terminalForCellChanged=function(e,n,t){var a=this.getTerminal(e,t);return null!=n?n.insertEdge(e,t):null!=a&&a.removeEdge(e,t),a},mxGraphModel.prototype.getEdgeCount=function(e){return null!=e?e.getEdgeCount():0},mxGraphModel.prototype.getEdgeAt=function(e,n){return null!=e?e.getEdgeAt(n):null},mxGraphModel.prototype.getDirectedEdgeCount=function(e,n,t){for(var a=0,i=this.getEdgeCount(e),s=0;s<i;s++){var o=this.getEdgeAt(e,s);o!=t&&this.getTerminal(o,n)==e&&a++}return a},mxGraphModel.prototype.getConnections=function(e){return this.getEdges(e,!0,!0,!1)},mxGraphModel.prototype.getIncomingEdges=function(e){return this.getEdges(e,!0,!1,!1)},mxGraphModel.prototype.getOutgoingEdges=function(e){return this.getEdges(e,!1,!0,!1)},mxGraphModel.prototype.getEdges=function(e,n,t,a){n=null==n||n,t=null==t||t,a=null==a||a;for(var i=this.getEdgeCount(e),s=[],o=0;o<i;o++){var r=this.getEdgeAt(e,o),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(a&&l==d||l!=d&&(n&&d==e||t&&l==e))&&s.push(r)}return s},mxGraphModel.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;var a=this.getEdgeCount(e),i=this.getEdgeCount(n),s=e,o=a;for(i<a&&(o=i,s=n),a=[],i=0;i<o;i++){var r=this.getEdgeAt(s,i),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(l==e&&d==n||!t&&(d==e&&l==n))&&a.push(r)}return a},mxGraphModel.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[];if(null!=e)for(var s=0;s<e.length;s++){var o=this.getTerminal(e[s],!0),r=this.getTerminal(e[s],!1);o==n&&null!=r&&r!=n&&a?i.push(r):r==n&&null!=o&&o!=n&&t&&i.push(o)}return i},mxGraphModel.prototype.getTopmostCells=function(e){for(var n=[],t=0;t<e.length;t++){for(var a=e[t],i=!0,s=this.getParent(a);null!=s;){if(0<=mxUtils.indexOf(e,s)){i=!1;break}s=this.getParent(s)}i&&n.push(a)}return n},mxGraphModel.prototype.isVertex=function(e){return null!=e&&e.isVertex()},mxGraphModel.prototype.isEdge=function(e){return null!=e&&e.isEdge()},mxGraphModel.prototype.isConnectable=function(e){return null!=e&&e.isConnectable()},mxGraphModel.prototype.getValue=function(e){return null!=e?e.getValue():null},mxGraphModel.prototype.setValue=function(e,n){return this.execute(new mxValueChange(this,e,n)),n},mxGraphModel.prototype.valueForCellChanged=function(e,n){return e.valueChanged(n)},mxGraphModel.prototype.getGeometry=function(e,n){return null!=e?e.getGeometry():null},mxGraphModel.prototype.setGeometry=function(e,n){return n!=this.getGeometry(e)&&this.execute(new mxGeometryChange(this,e,n)),n},mxGraphModel.prototype.geometryForCellChanged=function(e,n){var t=this.getGeometry(e);return e.setGeometry(n),t},mxGraphModel.prototype.getStyle=function(e){return null!=e?e.getStyle():null},mxGraphModel.prototype.setStyle=function(e,n){return n!=this.getStyle(e)&&this.execute(new mxStyleChange(this,e,n)),n},mxGraphModel.prototype.styleForCellChanged=function(e,n){var t=this.getStyle(e);return e.setStyle(n),t},mxGraphModel.prototype.isCollapsed=function(e){return null!=e&&e.isCollapsed()},mxGraphModel.prototype.setCollapsed=function(e,n){return n!=this.isCollapsed(e)&&this.execute(new mxCollapseChange(this,e,n)),n},mxGraphModel.prototype.collapsedStateForCellChanged=function(e,n){var t=this.isCollapsed(e);return e.setCollapsed(n),t},mxGraphModel.prototype.isVisible=function(e){return null!=e&&e.isVisible()},mxGraphModel.prototype.setVisible=function(e,n){return n!=this.isVisible(e)&&this.execute(new mxVisibleChange(this,e,n)),n},mxGraphModel.prototype.visibleStateForCellChanged=function(e,n){var t=this.isVisible(e);return e.setVisible(n),t},mxGraphModel.prototype.execute=function(e){e.execute(),this.beginUpdate(),this.currentEdit.add(e),this.fireEvent(new mxEventObject(mxEvent.EXECUTE,"change",e)),this.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",e)),this.endUpdate()},mxGraphModel.prototype.beginUpdate=function(){this.updateLevel++,this.fireEvent(new mxEventObject(mxEvent.BEGIN_UPDATE)),1==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.START_EDIT))},mxGraphModel.prototype.endUpdate=function(){if(this.updateLevel--,0==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.END_EDIT)),!this.endingUpdate){this.endingUpdate=0==this.updateLevel,this.fireEvent(new mxEventObject(mxEvent.END_UPDATE,"edit",this.currentEdit));try{if(this.endingUpdate&&!this.currentEdit.isEmpty()){this.fireEvent(new mxEventObject(mxEvent.BEFORE_UNDO,"edit",this.currentEdit));var e=this.currentEdit;this.currentEdit=this.createUndoableEdit(),e.notify(),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e))}}finally{this.endingUpdate=!1}}},mxGraphModel.prototype.createUndoableEdit=function(){var e=new mxUndoableEdit(this,!0);return e.notify=function(){e.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",e,"changes",e.changes)),e.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",e,"changes",e.changes))},e},mxGraphModel.prototype.mergeChildren=function(e,n,t){t=null==t||t,this.beginUpdate();try{var a={};for(var i in this.mergeChildrenImpl(e,n,t,a),a){var s=a[i],o=this.getTerminal(s,!0);null!=o&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!0)),null!=(o=this.getTerminal(s,!1))&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!1))}}finally{this.endUpdate()}},mxGraphModel.prototype.mergeChildrenImpl=function(e,n,t,a){this.beginUpdate();try{for(var i=e.getChildCount(),s=0;s<i;s++){var o=e.getChildAt(s);if("function"==typeof o.getId){var r=o.getId(),l=null==r||this.isEdge(o)&&t?null:this.getCell(r);if(null==l){var d=o.clone();d.setId(r),d.setTerminal(o.getTerminal(!0),!0),d.setTerminal(o.getTerminal(!1),!1),l=n.insert(d),this.cellAdded(l)}a[mxCellPath.create(o)]=l,this.mergeChildrenImpl(o,l,t,a)}}}finally{this.endUpdate()}},mxGraphModel.prototype.getParents=function(e){var n=[];if(null!=e)for(var t={},a=0;a<e.length;a++){var i=this.getParent(e[a]);if(null!=i){var s=mxCellPath.create(i);null==t[s]&&(t[s]=i,n.push(i))}}return n},mxGraphModel.prototype.cloneCell=function(e){return null!=e?this.cloneCells([e],!0)[0]:null},mxGraphModel.prototype.cloneCells=function(e,n){for(var t={},a=[],i=0;i<e.length;i++)null!=e[i]?a.push(this.cloneCellImpl(e[i],t,n)):a.push(null);for(i=0;i<a.length;i++)null!=a[i]&&this.restoreClone(a[i],e[i],t);return a},mxGraphModel.prototype.cloneCellImpl=function(e,n,t){var a=this.cellCloned(e);if(n[mxObjectIdentity.get(e)]=a,t){t=this.getChildCount(e);for(var i=0;i<t;i++){var s=this.cloneCellImpl(this.getChildAt(e,i),n,!0);a.insert(s)}}return a},mxGraphModel.prototype.cellCloned=function(e){return e.clone()},mxGraphModel.prototype.restoreClone=function(e,n,t){null!=(a=this.getTerminal(n,!0))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!0)),null!=(a=this.getTerminal(n,!1))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!1));for(var a=this.getChildCount(e),i=0;i<a;i++)this.restoreClone(this.getChildAt(e,i),this.getChildAt(n,i),t)},mxRootChange.prototype.execute=function(){this.root=this.previous,this.previous=this.model.rootChanged(this.previous)},mxChildChange.prototype.execute=function(){var e=this.model.getParent(this.child),n=null!=e?e.getIndex(this.child):0;null==this.previous&&this.connect(this.child,!1),e=this.model.parentForCellChanged(this.child,this.previous,this.previousIndex),null!=this.previous&&this.connect(this.child,!0),this.parent=this.previous,this.previous=e,this.index=this.previousIndex,this.previousIndex=n},mxChildChange.prototype.connect=function(e,n){n=null==n||n;var t=e.getTerminal(!0),a=e.getTerminal(!1);for(null!=t&&(n?this.model.terminalForCellChanged(e,t,!0):this.model.terminalForCellChanged(e,null,!0)),null!=a&&(n?this.model.terminalForCellChanged(e,a,!1):this.model.terminalForCellChanged(e,null,!1)),e.setTerminal(t,!0),e.setTerminal(a,!1),t=this.model.getChildCount(e),a=0;a<t;a++)this.connect(this.model.getChildAt(e,a),n)},mxTerminalChange.prototype.execute=function(){this.terminal=this.previous,this.previous=this.model.terminalForCellChanged(this.cell,this.previous,this.source)},mxValueChange.prototype.execute=function(){this.value=this.previous,this.previous=this.model.valueForCellChanged(this.cell,this.previous)},mxStyleChange.prototype.execute=function(){this.style=this.previous,this.previous=this.model.styleForCellChanged(this.cell,this.previous)},mxGeometryChange.prototype.execute=function(){this.geometry=this.previous,this.previous=this.model.geometryForCellChanged(this.cell,this.previous)},mxCollapseChange.prototype.execute=function(){this.collapsed=this.previous,this.previous=this.model.collapsedStateForCellChanged(this.cell,this.previous)},mxVisibleChange.prototype.execute=function(){this.visible=this.previous,this.previous=this.model.visibleStateForCellChanged(this.cell,this.previous)},mxCellAttributeChange.prototype.execute=function(){var e=this.cell.getAttribute(this.attribute);null==this.previous?this.cell.value.removeAttribute(this.attribute):this.cell.setAttribute(this.attribute,this.previous),this.previous=e},mxCell.prototype.id=null,mxCell.prototype.value=null,mxCell.prototype.geometry=null,mxCell.prototype.style=null,mxCell.prototype.vertex=!1,mxCell.prototype.edge=!1,mxCell.prototype.connectable=!0,mxCell.prototype.visible=!0,mxCell.prototype.collapsed=!1,mxCell.prototype.parent=null,mxCell.prototype.source=null,mxCell.prototype.target=null,mxCell.prototype.children=null,mxCell.prototype.edges=null,mxCell.prototype.mxTransient="id value parent source target children edges".split(" "),mxCell.prototype.getId=function(){return this.id},mxCell.prototype.setId=function(e){this.id=e},mxCell.prototype.getValue=function(){return this.value},mxCell.prototype.setValue=function(e){this.value=e},mxCell.prototype.valueChanged=function(e){var n=this.getValue();return this.setValue(e),n},mxCell.prototype.getGeometry=function(){return this.geometry},mxCell.prototype.setGeometry=function(e){this.geometry=e},mxCell.prototype.getStyle=function(){return this.style},mxCell.prototype.setStyle=function(e){this.style=e},mxCell.prototype.isVertex=function(){return this.vertex},mxCell.prototype.setVertex=function(e){this.vertex=e},mxCell.prototype.isEdge=function(){return this.edge},mxCell.prototype.setEdge=function(e){this.edge=e},mxCell.prototype.isConnectable=function(){return this.connectable},mxCell.prototype.setConnectable=function(e){this.connectable=e},mxCell.prototype.isVisible=function(){return this.visible},mxCell.prototype.setVisible=function(e){this.visible=e},mxCell.prototype.isCollapsed=function(){return this.collapsed},mxCell.prototype.setCollapsed=function(e){this.collapsed=e},mxCell.prototype.getParent=function(){return this.parent},mxCell.prototype.setParent=function(e){this.parent=e},mxCell.prototype.getTerminal=function(e){return e?this.source:this.target},mxCell.prototype.setTerminal=function(e,n){return n?this.source=e:this.target=e,e},mxCell.prototype.getChildCount=function(){return null==this.children?0:this.children.length},mxCell.prototype.getIndex=function(e){return mxUtils.indexOf(this.children,e)},mxCell.prototype.getChildAt=function(e){return null==this.children?null:this.children[e]},mxCell.prototype.insert=function(e,n){return null!=e&&(null==n&&(n=this.getChildCount(),e.getParent()==this&&n--),e.removeFromParent(),e.setParent(this),null==this.children?(this.children=[],this.children.push(e)):this.children.splice(n,0,e)),e},mxCell.prototype.remove=function(e){var n=null;return null!=this.children&&0<=e&&(null!=(n=this.getChildAt(e))&&(this.children.splice(e,1),n.setParent(null))),n},mxCell.prototype.removeFromParent=function(){if(null!=this.parent){var e=this.parent.getIndex(this);this.parent.remove(e)}},mxCell.prototype.getEdgeCount=function(){return null==this.edges?0:this.edges.length},mxCell.prototype.getEdgeIndex=function(e){return mxUtils.indexOf(this.edges,e)},mxCell.prototype.getEdgeAt=function(e){return null==this.edges?null:this.edges[e]},mxCell.prototype.insertEdge=function(e,n){return null!=e&&(e.removeFromTerminal(n),e.setTerminal(this,n),null==this.edges||e.getTerminal(!n)!=this||mxUtils.indexOf(this.edges,e)<0)&&(null==this.edges&&(this.edges=[]),this.edges.push(e)),e},mxCell.prototype.removeEdge=function(e,n){if(null!=e){if(e.getTerminal(!n)!=this&&null!=this.edges){var t=this.getEdgeIndex(e);0<=t&&this.edges.splice(t,1)}e.setTerminal(null,n)}return e},mxCell.prototype.removeFromTerminal=function(e){var n=this.getTerminal(e);null!=n&&n.removeEdge(this,e)},mxCell.prototype.getAttribute=function(e,n){var t=this.getValue();return(null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT?t.getAttribute(e):null)||n},mxCell.prototype.setAttribute=function(e,n){var t=this.getValue();null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT&&t.setAttribute(e,n)},mxCell.prototype.clone=function(){var e=mxUtils.clone(this,this.mxTransient);return e.setValue(this.cloneValue()),e},mxCell.prototype.cloneValue=function(){var e=this.getValue();return null!=e&&("function"==typeof e.clone?e=e.clone():isNaN(e.nodeType)||(e=e.cloneNode(!0))),e},mxGeometry.prototype=new mxRectangle,mxGeometry.prototype.constructor=mxGeometry,mxGeometry.prototype.TRANSLATE_CONTROL_POINTS=!0,mxGeometry.prototype.alternateBounds=null,mxGeometry.prototype.sourcePoint=null,mxGeometry.prototype.targetPoint=null,mxGeometry.prototype.points=null,mxGeometry.prototype.offset=null,mxGeometry.prototype.relative=!1,mxGeometry.prototype.swap=function(){if(null!=this.alternateBounds){var e=new mxRectangle(this.x,this.y,this.width,this.height);this.x=this.alternateBounds.x,this.y=this.alternateBounds.y,this.width=this.alternateBounds.width,this.height=this.alternateBounds.height,this.alternateBounds=e}},mxGeometry.prototype.getTerminalPoint=function(e){return e?this.sourcePoint:this.targetPoint},mxGeometry.prototype.setTerminalPoint=function(e,n){return n?this.sourcePoint=e:this.targetPoint=e,e},mxGeometry.prototype.translate=function(e,n){if(this.clone(),this.relative||(this.x+=e,this.y+=n),null!=this.sourcePoint&&(this.sourcePoint.x+=e,this.sourcePoint.y+=n),null!=this.targetPoint&&(this.targetPoint.x+=e,this.targetPoint.y+=n),this.TRANSLATE_CONTROL_POINTS&&null!=this.points)for(var t=this.points.length,a=0;a<t;a++){var i=this.points[a];null!=i&&(i.x+=e,i.y+=n)}};var mxCellPath={PATH_SEPARATOR:".",create:function(e){var n="";if(null!=e)for(var t=e.getParent();null!=t;)n=t.getIndex(e)+mxCellPath.PATH_SEPARATOR+n,t=(e=t).getParent();return 1<(e=n.length)&&(n=n.substring(0,e-1)),n},getParentPath:function(e){if(null!=e){var n=e.lastIndexOf(mxCellPath.PATH_SEPARATOR);if(0<=n)return e.substring(0,n);if(0<e.length)return""}return null},resolve:function(e,n){var t=e;if(null!=n)for(var a=n.split(mxCellPath.PATH_SEPARATOR),i=0;i<a.length;i++)t=t.getChildAt(parseInt(a[i]));return t},compare:function(e,n){for(var t=Math.min(e.length,n.length),a=0,i=0;i<t;i++)if(e[i]!=n[i]){a=0==e[i].length||0==n[i].length?e[i]==n[i]?0:e[i]>n[i]?1:-1:(t=parseInt(e[i]))==(i=parseInt(n[i]))?0:i<t?1:-1;break}return 0==a&&((t=e.length)!=(i=n.length)&&(a=i<t?1:-1)),a}},mxPerimeter={RectanglePerimeter:function(e,n,t,a){n=e.getCenterX();var i=e.getCenterY(),s=Math.atan2(t.y-i,t.x-n),o=new mxPoint(0,0),r=Math.PI,l=Math.PI/2-s,d=Math.atan2(e.height,e.width);return s<-r+d||r-d<s?(o.x=e.x,o.y=i-e.width*Math.tan(s)/2):s<-d?(o.y=e.y,o.x=n-e.height*Math.tan(l)/2):s<d?(o.x=e.x+e.width,o.y=i+e.width*Math.tan(s)/2):(o.y=e.y+e.height,o.x=n+e.height*Math.tan(l)/2),a&&(t.x>=e.x&&t.x<=e.x+e.width?o.x=t.x:t.y>=e.y&&t.y<=e.y+e.height&&(o.y=t.y),t.x<e.x?o.x=e.x:t.x>e.x+e.width&&(o.x=e.x+e.width),t.y<e.y?o.y=e.y:t.y>e.y+e.height&&(o.y=e.y+e.height)),o},EllipsePerimeter:function(e,n,t,a){var i=e.x,s=e.y,o=e.width/2,r=e.height/2,l=i+o,d=s+r;n=t.x,t=t.y;var c=parseInt(n-l),m=parseInt(t-d);if(0==c&&0!=m)return new mxPoint(l,d+r*m/Math.abs(m));if(0==c&&0==m)return new mxPoint(n,t);if(a){if(s<=t&&t<=s+e.height)return e=t-d,e=Math.sqrt(o*o*(1-e*e/(r*r)))||0,n<=i&&(e=-e),new mxPoint(l+e,t);if(i<=n&&n<=i+e.width)return e=n-l,e=Math.sqrt(r*r*(1-e*e/(o*o)))||0,t<=s&&(e=-e),new mxPoint(n,d+e)}return d-=(i=m/c)*l,l=i*(o=(-(e=-2*l*(s=o*o*i*i+r*r))+(r=Math.sqrt(e*e-4*s*(o*o*i*i*l*l+r*r*l*l-o*o*r*r))))/(2*s))+d,d=i*(r=(-e-r)/(2*s))+d,i=Math.sqrt(Math.pow(o-n,2)+Math.pow(l-t,2)),n=Math.sqrt(Math.pow(r-n,2)+Math.pow(d-t,2)),s=t=0,s=i<n?(t=o,l):(t=r,d),new mxPoint(t,s)},RhombusPerimeter:function(e,n,t,a){n=e.x;var i=e.y,s=e.width,o=n+s/2,r=i+(e=e.height)/2,l=t.x;if(t=t.y,o==l)return new mxPoint(o,t<r?i:i+e);if(r==t)return new mxPoint(l<o?n:n+s,r);var d=o,c=r;return a&&(n<=l&&l<=n+s?d=l:i<=t&&t<=i+e&&(c=t)),l<o?t<r?mxUtils.intersection(l,t,d,c,o,i,n,r):mxUtils.intersection(l,t,d,c,o,i+e,n,r):t<r?mxUtils.intersection(l,t,d,c,o,i,n+s,r):mxUtils.intersection(l,t,d,c,o,i+e,n+s,r)},TrianglePerimeter:function(e,n,t,a){var i=(n=null!=n?n.style[mxConstants.STYLE_DIRECTION]:null)==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_SOUTH,s=e.x,o=e.y,r=e.width,l=s+r/2,d=o+(e=e.height)/2,c=new mxPoint(s,o),m=new mxPoint(s+r,d),u=new mxPoint(s,o+e);n==mxConstants.DIRECTION_NORTH?(c=u,m=new mxPoint(l,o),u=new mxPoint(s+r,o+e)):n==mxConstants.DIRECTION_SOUTH?(m=new mxPoint(l,o+e),u=new mxPoint(s+r,o)):n==mxConstants.DIRECTION_WEST&&(c=new mxPoint(s+r,o),m=new mxPoint(s,d),u=new mxPoint(s+r,o+e));var p=t.x-l,g=t.y-d,v=(p=i?Math.atan2(p,g):Math.atan2(g,p),i?Math.atan2(r,e):Math.atan2(e,r));g=!1,g=n==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_WEST?-v<p&&p<v:p<-Math.PI+v||p>Math.PI-v,v=null;return null==(v=g?a&&(i&&t.x>=c.x&&t.x<=u.x||!i&&t.y>=c.y&&t.y<=u.y)?i?new mxPoint(t.x,c.y):new mxPoint(c.x,t.y):n==mxConstants.DIRECTION_NORTH?new mxPoint(s+r/2+e*Math.tan(p)/2,o+e):n==mxConstants.DIRECTION_SOUTH?new mxPoint(s+r/2-e*Math.tan(p)/2,o):n==mxConstants.DIRECTION_WEST?new mxPoint(s+r,o+e/2+r*Math.tan(p)/2):new mxPoint(s,o+e/2-r*Math.tan(p)/2):(a&&(a=new mxPoint(l,d),t.y>=o&&t.y<=o+e?(a.x=i?l:n==mxConstants.DIRECTION_WEST?s+r:s,a.y=t.y):t.x>=s&&t.x<=s+r&&(a.x=t.x,a.y=i?n==mxConstants.DIRECTION_NORTH?o+e:o:d),l=a.x,d=a.y),i&&t.x<=s+r/2||!i&&t.y<=o+e/2?mxUtils.intersection(t.x,t.y,l,d,c.x,c.y,m.x,m.y):mxUtils.intersection(t.x,t.y,l,d,m.x,m.y,u.x,u.y)))&&(v=new mxPoint(l,d)),v}};function mxPrintPreview(e,n,t,a,i,s,o,r,l){this.graph=e,this.scale=null!=n?n:1/e.pageScale,this.border=null!=a?a:0,this.pageFormat=null!=t?t:e.pageFormat,this.title=null!=r?r:"Printer-friendly version",this.x0=null!=i?i:0,this.y0=null!=s?s:0,this.borderColor=o,this.pageSelector=null==l||l}function mxStylesheet(){this.styles={},this.putDefaultVertexStyle(this.createDefaultVertexStyle()),this.putDefaultEdgeStyle(this.createDefaultEdgeStyle())}function mxCellState(e,n,t){this.view=e,this.cell=n,this.style=t,this.origin=new mxPoint,this.absoluteOffset=new mxPoint}function mxGraphSelectionModel(e){this.graph=e,this.cells=[]}function mxSelectionChange(e,n,t){this.selectionModel=e,this.added=null!=n?n.slice():null,this.removed=null!=t?t.slice():null}function mxCellEditor(e){this.graph=e}function mxCellRenderer(){}mxPrintPreview.prototype.graph=null,mxPrintPreview.prototype.pageFormat=null,mxPrintPreview.prototype.scale=null,mxPrintPreview.prototype.border=0,mxPrintPreview.prototype.x0=0,mxPrintPreview.prototype.y0=0,mxPrintPreview.prototype.autoOrigin=!0,mxPrintPreview.prototype.printOverlays=!1,mxPrintPreview.prototype.borderColor=null,mxPrintPreview.prototype.title=null,mxPrintPreview.prototype.pageSelector=null,mxPrintPreview.prototype.wnd=null,mxPrintPreview.prototype.pageCount=0,mxPrintPreview.prototype.getWindow=function(){return this.wnd},mxPrintPreview.prototype.getDoctype=function(){var e="";return 8==document.documentMode&&(e='<meta http-equiv="X-UA-Compatible" content="IE=8">'),e},mxPrintPreview.prototype.open=function(e){var n=this.graph.cellRenderer.initializeOverlay,t=null;try{if(this.printOverlays&&(this.graph.cellRenderer.initializeOverlay=function(e,n){n.init(e.view.getDrawPane())}),null==this.wnd){this.wnd=window.open();var a=this.wnd.document,i=this.getDoctype();null!=i&&0<i.length&&a.writeln(i),a.writeln("<html>"),a.writeln("<head>"),this.writeHead(a,e),a.writeln("</head>"),a.writeln('<body class="mxPage">'),mxClient.link("stylesheet",mxClient.basePath+"/css/common.css",a),mxClient.IS_VML&&(a.namespaces.add("v","urn:schemas-microsoft-com:vml"),a.namespaces.add("o","urn:schemas-microsoft-com:office:office"),a.createStyleSheet().cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css",a));var s=this.graph.getGraphBounds().clone(),o=this.graph.getView().getScale(),r=o/this.scale,l=this.graph.getView().getTranslate();this.autoOrigin||(this.x0=-l.x*this.scale,this.y0=-l.y*this.scale,s.width+=s.x,s.height+=s.y,s.x=0,this.border=s.y=0),s.width/=r,s.height/=r;var d=this.pageFormat.width-2*this.border,c=this.pageFormat.height-2*this.border,m=Math.max(1,Math.ceil((s.width+this.x0)/d)),u=Math.max(1,Math.ceil((s.height+this.y0)/c));this.pageCount=m*u;var p=mxUtils.bind(this,function(){if(this.pageSelector&&(1<u||1<m)){var e=this.createPageSelector(u,m);if(a.body.appendChild(e),mxClient.IS_IE){e.style.position="absolute";var n=function(){e.style.top=a.body.scrollTop+10+"px"};mxEvent.addListener(this.wnd,"scroll",function(e){n()}),mxEvent.addListener(this.wnd,"resize",function(e){n()})}}});if(e=function(e,n){if(null!=this.borderColor&&(e.style.borderColor=this.borderColor,e.style.borderStyle="solid",e.style.borderWidth="1px"),e.style.background="white",n&&(e.style.pageBreakAfter="always"),mxClient.IS_IE?(a.writeln(e.outerHTML),e.parentNode.removeChild(e)):(e.parentNode.removeChild(e),a.body.appendChild(e)),n){var t=a.createElement("hr");t.className="mxPageBreak",a.body.appendChild(t)}},null!=(f=this.getCoverPages(this.pageFormat.width,this.pageFormat.height)))for(var g=0;g<f.length;g++)e(f[g],!0);var v=this.getAppendices(this.pageFormat.width,this.pageFormat.height);for(g=0;g<u;g++)for(var h=g*c/this.scale-this.y0/this.scale+(s.y-l.y*o)/o,f=0;f<m;f++){if(null==this.wnd)return null;var b=f*d/this.scale-this.x0/this.scale+(s.x-l.x*o)/o,A=g*m+f+1;(t=this.renderPage(this.pageFormat.width,this.pageFormat.height,mxUtils.bind(this,function(e){this.addGraphFragment(-b,-h,this.scale,A,e)}))).setAttribute("id","mxPage-"+A),e(t,null!=v||g<u-1||f<m-1)}if(null!=v)for(g=0;g<v.length;g++)e(v[g],g<v.length);a.writeln("</body>"),a.writeln("</html>"),a.close(),p(),mxEvent.release(a.body)}this.wnd.focus()}catch(e){null!=t&&null!=t.parentNode&&t.parentNode.removeChild(t)}finally{this.graph.cellRenderer.initializeOverlay=n}return this.wnd},mxPrintPreview.prototype.writeHead=function(e,n){null!=this.title&&e.writeln("<title>"+this.title+"</title>"),e.writeln('<style type="text/css">'),e.writeln("@media print {"),e.writeln("  table.mxPageSelector { display: none; }"),e.writeln("  hr.mxPageBreak { display: none; }"),e.writeln("}"),e.writeln("@media screen {"),e.writeln("  table.mxPageSelector { position: fixed; right: 10px; top: 10px;font-family: Arial; font-size:10pt; border: solid 1px darkgray;background: white; border-collapse:collapse; }"),e.writeln("  table.mxPageSelector td { border: solid 1px gray; padding:4px; }"),e.writeln("  body.mxPage { background: gray; }"),e.writeln("}"),null!=n&&e.writeln(n),e.writeln("</style>")},mxPrintPreview.prototype.createPageSelector=function(e,n){var t=this.wnd.document,a=t.createElement("table");a.className="mxPageSelector",a.setAttribute("border","0");for(var i=t.createElement("tbody"),s=0;s<e;s++){for(var o=t.createElement("tr"),r=0;r<n;r++){var l=s*n+r+1,d=t.createElement("td");if(!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC){var c=t.createElement("a");c.setAttribute("href","#mxPage-"+l),mxUtils.write(c,l,t),d.appendChild(c)}else mxUtils.write(d,l,t);o.appendChild(d)}i.appendChild(o)}return a.appendChild(i),a},mxPrintPreview.prototype.renderPage=function(e,n,t){var a=document.createElement("div");try{a.style.width=e+"px",a.style.height=n+"px",a.style.overflow="hidden",a.style.pageBreakInside="avoid",a.style.position="relative";var i=document.createElement("div");i.style.top=this.border+"px",i.style.left=this.border+"px",i.style.width=e-2*this.border+"px",i.style.height=n-2*this.border+"px",i.style.overflow="hidden",this.graph.dialect==mxConstants.DIALECT_VML&&(i.style.position="absolute"),a.appendChild(i),document.body.appendChild(a),t(i)}catch(e){throw a.parentNode.removeChild(a),e}return a},mxPrintPreview.prototype.addGraphFragment=function(e,n,t,a,i){a=this.graph.getView();var s=this.graph.container;this.graph.container=i;var o=a.getCanvas(),r=a.getBackgroundPane(),l=a.getDrawPane(),d=a.getOverlayPane();this.graph.dialect==mxConstants.DIALECT_SVG?a.createSvg():this.graph.dialect==mxConstants.DIALECT_VML?a.createVml():a.createHtml();var c=a.isEventsEnabled();a.setEventsEnabled(!1);var m=this.graph.isEnabled();this.graph.setEnabled(!1);var u=a.getTranslate();a.translate=new mxPoint(e,n),e=null;try{var p=[this.graph.getModel().getRoot()];e=new mxTemporaryCellStates(a,t,p)}finally{if(mxClient.IS_IE)a.overlayPane.innerHTML="";else for(t=i.firstChild;null!=t;)p=t.nextSibling,"svg"==(n=t.nodeName.toLowerCase())?(t.setAttribute("width",parseInt(i.style.width)),t.setAttribute("height",parseInt(i.style.height))):"default"!=t.style.cursor&&"table"!=n&&t.parentNode.removeChild(t),t=p;a.overlayPane.parentNode.removeChild(a.overlayPane),this.graph.setEnabled(m),this.graph.container=s,a.canvas=o,a.backgroundPane=r,a.drawPane=l,a.overlayPane=d,a.translate=u,e.destroy(),a.setEventsEnabled(c)}},mxPrintPreview.prototype.getCoverPages=function(){return null},mxPrintPreview.prototype.getAppendices=function(){return null},mxPrintPreview.prototype.print=function(){var e=this.open();null!=e&&e.print()},mxPrintPreview.prototype.close=function(){null!=this.wnd&&(this.wnd.close(),this.wnd=null)},mxStylesheet.prototype.createDefaultVertexStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_RECTANGLE,e[mxConstants.STYLE_PERIMETER]=mxPerimeter.RectanglePerimeter,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_FILLCOLOR]="#C3D9FF",e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#774400",e},mxStylesheet.prototype.createDefaultEdgeStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_CONNECTOR,e[mxConstants.STYLE_ENDARROW]=mxConstants.ARROW_CLASSIC,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#446299",e},mxStylesheet.prototype.putDefaultVertexStyle=function(e){this.putCellStyle("defaultVertex",e)},mxStylesheet.prototype.putDefaultEdgeStyle=function(e){this.putCellStyle("defaultEdge",e)},mxStylesheet.prototype.getDefaultVertexStyle=function(){return this.styles.defaultVertex},mxStylesheet.prototype.getDefaultEdgeStyle=function(){return this.styles.defaultEdge},mxStylesheet.prototype.putCellStyle=function(e,n){this.styles[e]=n},mxStylesheet.prototype.getCellStyle=function(e,n){var t=n;if(null!=e&&0<e.length)for(var a=e.split(";"),i=(t=null!=t&&";"!=e.charAt(0)?mxUtils.clone(t):{},0);i<a.length;i++){var s=(o=a[i]).indexOf("=");if(0<=s){var o,r=o.substring(0,s);(o=o.substring(s+1))==mxConstants.NONE?delete t[r]:mxUtils.isNumeric(o)?t[r]=parseFloat(o):t[r]=o}else if(null!=(o=this.styles[o]))for(r in o)t[r]=o[r]}return t},mxCellState.prototype=new mxRectangle,mxCellState.prototype.constructor=mxCellState,mxCellState.prototype.view=null,mxCellState.prototype.cell=null,mxCellState.prototype.style=null,mxCellState.prototype.invalid=!0,mxCellState.prototype.invalidOrder=!1,mxCellState.prototype.orderChanged=!1,mxCellState.prototype.origin=null,mxCellState.prototype.absolutePoints=null,mxCellState.prototype.absoluteOffset=null,mxCellState.prototype.visibleSourceState=null,mxCellState.prototype.visibleTargetState=null,mxCellState.prototype.terminalDistance=0,mxCellState.prototype.length=0,mxCellState.prototype.segments=null,mxCellState.prototype.shape=null,mxCellState.prototype.text=null,mxCellState.prototype.getPerimeterBounds=function(e,n){if(e=e||0,n=null!=n?n:new mxRectangle(this.x,this.y,this.width,this.height),null!=this.shape&&null!=this.shape.stencil){var t=this.shape.stencil.computeAspect(this.style,n.x,n.y,n.width,n.height);n.x=t.x,n.y=t.y,n.width=this.shape.stencil.w0*t.width,n.height=this.shape.stencil.h0*t.height}return 0!=e&&n.grow(e),n},mxCellState.prototype.setAbsoluteTerminalPoint=function(e,n){n?(null==this.absolutePoints&&(this.absolutePoints=[]),0==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[0]=e):null==this.absolutePoints?(this.absolutePoints=[],this.absolutePoints.push(null),this.absolutePoints.push(e)):1==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[this.absolutePoints.length-1]=e},mxCellState.prototype.setCursor=function(e){null!=this.shape&&this.shape.setCursor(e),null!=this.text&&this.text.setCursor(e)},mxCellState.prototype.getVisibleTerminal=function(e){return null!=(e=this.getVisibleTerminalState(e))?e.cell:null},mxCellState.prototype.getVisibleTerminalState=function(e){return e?this.visibleSourceState:this.visibleTargetState},mxCellState.prototype.setVisibleTerminalState=function(e,n){n?this.visibleSourceState=e:this.visibleTargetState=e},mxCellState.prototype.destroy=function(){this.view.graph.cellRenderer.destroy(this)},mxCellState.prototype.clone=function(){var e=new mxCellState(this.view,this.cell,this.style);if(null!=this.absolutePoints){e.absolutePoints=[];for(var n=0;n<this.absolutePoints.length;n++)e.absolutePoints[n]=this.absolutePoints[n].clone()}return null!=this.origin&&(e.origin=this.origin.clone()),null!=this.absoluteOffset&&(e.absoluteOffset=this.absoluteOffset.clone()),null!=this.boundingBox&&(e.boundingBox=this.boundingBox.clone()),e.terminalDistance=this.terminalDistance,e.segments=this.segments,e.length=this.length,e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e},mxGraphSelectionModel.prototype=new mxEventSource,mxGraphSelectionModel.prototype.constructor=mxGraphSelectionModel,mxGraphSelectionModel.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphSelectionModel.prototype.updatingSelectionResource="none"!=mxClient.language?"updatingSelection":"",mxGraphSelectionModel.prototype.graph=null,mxGraphSelectionModel.prototype.singleSelection=!1,mxGraphSelectionModel.prototype.isSingleSelection=function(){return this.singleSelection},mxGraphSelectionModel.prototype.setSingleSelection=function(e){this.singleSelection=e},mxGraphSelectionModel.prototype.isSelected=function(e){return null!=e&&0<=mxUtils.indexOf(this.cells,e)},mxGraphSelectionModel.prototype.isEmpty=function(){return 0==this.cells.length},mxGraphSelectionModel.prototype.clear=function(){this.changeSelection(null,this.cells)},mxGraphSelectionModel.prototype.setCell=function(e){null!=e&&this.setCells([e])},mxGraphSelectionModel.prototype.setCells=function(e){if(null!=e){this.singleSelection&&(e=[this.getFirstSelectableCell(e)]);for(var n=[],t=0;t<e.length;t++)this.graph.isCellSelectable(e[t])&&n.push(e[t]);this.changeSelection(n,this.cells)}},mxGraphSelectionModel.prototype.getFirstSelectableCell=function(e){if(null!=e)for(var n=0;n<e.length;n++)if(this.graph.isCellSelectable(e[n]))return e[n];return null},mxGraphSelectionModel.prototype.addCell=function(e){null!=e&&this.addCells([e])},mxGraphSelectionModel.prototype.addCells=function(e){if(null!=e){var n=null;this.singleSelection&&(n=this.cells,e=[this.getFirstSelectableCell(e)]);for(var t=[],a=0;a<e.length;a++)!this.isSelected(e[a])&&this.graph.isCellSelectable(e[a])&&t.push(e[a]);this.changeSelection(t,n)}},mxGraphSelectionModel.prototype.removeCell=function(e){null!=e&&this.removeCells([e])},mxGraphSelectionModel.prototype.removeCells=function(e){if(null!=e){for(var n=[],t=0;t<e.length;t++)this.isSelected(e[t])&&n.push(e[t]);this.changeSelection(null,n)}},mxGraphSelectionModel.prototype.changeSelection=function(e,n){if(null!=e&&0<e.length&&null!=e[0]||null!=n&&0<n.length&&null!=n[0]){var t=new mxSelectionChange(this,e,n);t.execute();var a=new mxUndoableEdit(this,!1);a.add(t),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",a))}},mxGraphSelectionModel.prototype.cellAdded=function(e){null!=e&&!this.isSelected(e)&&this.cells.push(e)},mxGraphSelectionModel.prototype.cellRemoved=function(e){null!=e&&(0<=(e=mxUtils.indexOf(this.cells,e))&&this.cells.splice(e,1))},mxSelectionChange.prototype.execute=function(){var e=mxLog.enter("mxSelectionChange.execute");if(window.status=mxResources.get(this.selectionModel.updatingSelectionResource)||this.selectionModel.updatingSelectionResource,null!=this.removed)for(var n=0;n<this.removed.length;n++)this.selectionModel.cellRemoved(this.removed[n]);if(null!=this.added)for(n=0;n<this.added.length;n++)this.selectionModel.cellAdded(this.added[n]);n=this.added,this.added=this.removed,this.removed=n,window.status=mxResources.get(this.selectionModel.doneResource)||this.selectionModel.doneResource,mxLog.leave("mxSelectionChange.execute",e),this.selectionModel.fireEvent(new mxEventObject(mxEvent.CHANGE,"added",this.added,"removed",this.removed))},mxCellEditor.prototype.graph=null,mxCellEditor.prototype.textarea=null,mxCellEditor.prototype.editingCell=null,mxCellEditor.prototype.trigger=null,mxCellEditor.prototype.modified=!1,mxCellEditor.prototype.autoSize=!0,mxCellEditor.prototype.emptyLabelText="",mxCellEditor.prototype.textNode="",mxCellEditor.prototype.init=function(){this.textarea=document.createElement("textarea"),this.textarea.className="mxCellEditor",this.textarea.style.position="absolute",this.textarea.style.overflow="visible",this.textarea.setAttribute("cols","20"),this.textarea.setAttribute("rows","4"),mxClient.IS_NS&&(this.textarea.style.resize="none"),mxEvent.addListener(this.textarea,"blur",mxUtils.bind(this,function(e){this.focusLost()})),mxEvent.addListener(this.textarea,"keydown",mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(113==e.keyCode||this.graph.isEnterStopsCellEditing()&&13==e.keyCode&&!mxEvent.isControlDown(e)&&!mxEvent.isShiftDown(e)?(this.graph.stopEditing(!1),mxEvent.consume(e)):27==e.keyCode?(this.graph.stopEditing(!0),mxEvent.consume(e)):(this.clearOnChange&&(this.clearOnChange=!1,this.textarea.value=""),this.setModified(!0)))})),mxEvent.addListener(this.textarea,"keypress",mxUtils.bind(this,function(e){this.autoSize&&!mxEvent.isConsumed(e)&&setTimeout(mxUtils.bind(this,function(){this.resize()}),0)}))},mxCellEditor.prototype.resize=function(){if(null!=this.textDiv){var e=this.graph.getView().getState(this.editingCell),n=this.graph.isLabelClipped(e.cell),t=this.graph.isWrapping(e.cell);if(this.graph.getModel().isEdge(e.cell))this.bounds.x=e.absoluteOffset.x,this.bounds.y=e.absoluteOffset.y,this.bounds.width=0,this.bounds.height=0;else if(null!=this.bounds){this.bounds.x=e.x,this.bounds.y=e.y,this.bounds.width=e.width,this.bounds.height=e.height,(a=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?this.bounds.x-=e.width:a==mxConstants.ALIGN_RIGHT&&(this.bounds.x+=e.width),(a=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?this.bounds.y-=e.height:a==mxConstants.ALIGN_BOTTOM&&(this.bounds.y+=e.height)}"\n"!=(a=this.textarea.value).charAt(a.length-1)&&""!=a||(a+="&nbsp;"),a=mxUtils.htmlEntities(a,!1),t?(this.textDiv.style.whiteSpace="normal",this.textDiv.style.width=this.bounds.width+"px"):a=a.replace(/ /g,"&nbsp;"),a=a.replace(/\n/g,"<br/>"),this.textDiv.innerHTML=a;var a=this.textDiv.offsetWidth+30,i=this.textDiv.offsetHeight+16;a=Math.max(a,40),i=Math.max(i,20);n&&(a=Math.min(this.bounds.width-4,a),i=Math.min(this.bounds.height,i));var s=null!=e.text?e.text.margin:null;null==s&&(s=mxUtils.getValue(e.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),e=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),s=mxUtils.getAlignmentAsPoint(s,e)),null!=s&&(!n&&t||(this.textarea.style.left=Math.max(0,Math.round(this.bounds.x-s.x*this.bounds.width+s.x*a)-3)+"px"),this.textarea.style.top=Math.max(0,Math.round(this.bounds.y-s.y*this.bounds.height+s.y*i)+4)+"px"),!n&&t||(this.textarea.style.width=a+"px"),this.textarea.style.height=i+"px"}},mxCellEditor.prototype.isModified=function(){return this.modified},mxCellEditor.prototype.setModified=function(e){this.modified=e},mxCellEditor.prototype.focusLost=function(){this.stopEditing(!this.graph.isInvokesStopCellEditing())},mxCellEditor.prototype.startEditing=function(e,n){null==this.textarea&&this.init(),this.stopEditing(!0);var t=this.graph.getView().getState(e);if(null!=t){this.editingCell=e,this.trigger=n,(this.textNode=null)!=t.text&&this.isHideLabel(t)&&(this.textNode=t.text.node,this.textNode.style.visibility="hidden");var a=this.graph.getView().scale,i=(a=mxUtils.getValue(t.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)*a,mxUtils.getValue(t.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)),s=mxUtils.getValue(t.style,mxConstants.STYLE_FONTCOLOR,"black"),o=mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),r=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,d=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.fontSize=Math.round(a)+"px",this.textarea.style.lineHeight=Math.round(a*mxConstants.LINE_HEIGHT)+"px",this.textarea.style.fontFamily=i,this.textarea.style.textAlign=o,this.textarea.style.color=s,this.textarea.style.fontWeight=r?"bold":"normal",this.textarea.style.fontStyle=l?"italic":"",this.textarea.style.textDecoration=d?"underline":"",this.textarea.style.overflow="auto",this.textarea.style.outline="none",this.bounds=a=this.getEditorBounds(t),this.textarea.style.left=a.x+"px",this.textarea.style.top=a.y+"px",this.textarea.style.width=a.width+"px",this.textarea.style.height=a.height+"px",this.textarea.style.zIndex=5,null==(t=this.getInitialValue(t,n))||0==t.length?(t=this.getEmptyLabelText(),this.clearOnChange=!0):this.clearOnChange=!1,this.setModified(!1),this.textarea.value=t,this.graph.container.appendChild(this.textarea),"none"!=this.textarea.style.display&&(this.autoSize&&(this.textDiv=this.createTextDiv(),document.body.appendChild(this.textDiv),this.resize()),this.textarea.focus(),this.textarea.select())}},mxCellEditor.prototype.createTextDiv=function(){var e=document.createElement("div"),n=e.style;return n.position="absolute",n.whiteSpace="nowrap",n.visibility="hidden",n.display=mxClient.IS_QUIRKS?"inline":"inline-block",n.zoom="1",n.verticalAlign="top",n.lineHeight=this.textarea.style.lineHeight,n.fontSize=this.textarea.style.fontSize,n.fontFamily=this.textarea.style.fontFamily,n.fontWeight=this.textarea.style.fontWeight,n.textAlign=this.textarea.style.textAlign,n.fontStyle=this.textarea.style.fontStyle,n.textDecoration=this.textarea.style.textDecoration,e},mxCellEditor.prototype.stopEditing=function(e){null!=this.editingCell&&(null!=this.textNode&&(this.textNode.style.visibility="visible",this.textNode=null),!e&&this.isModified()&&this.graph.labelChanged(this.editingCell,this.getCurrentValue(),this.trigger),null!=this.textDiv&&(document.body.removeChild(this.textDiv),this.textDiv=null),this.bounds=this.trigger=this.editingCell=null,this.textarea.blur(),this.textarea.parentNode.removeChild(this.textarea))},mxCellEditor.prototype.getInitialValue=function(e,n){return this.graph.getEditingValue(e.cell,n)},mxCellEditor.prototype.getCurrentValue=function(){return this.textarea.value.replace(/\r/g,"")},mxCellEditor.prototype.isHideLabel=function(e){return!0},mxCellEditor.prototype.getMinimumSize=function(e){var n=this.graph.getView().scale;return new mxRectangle(0,0,null==e.text?30:e.text.size*n+20,"left"==this.textarea.style.textAlign?120:40)},mxCellEditor.prototype.getEditorBounds=function(e){var n=this.graph.getModel().isEdge(e.cell),t=this.graph.getView().scale,a=(i=this.getMinimumSize(e)).width,i=i.height,s=parseInt(e.style[mxConstants.STYLE_SPACING]||2)*t,o=parseInt(e.style[mxConstants.STYLE_SPACING_TOP]||0)*t+s,r=parseInt(e.style[mxConstants.STYLE_SPACING_RIGHT]||0)*t+s,l=parseInt(e.style[mxConstants.STYLE_SPACING_BOTTOM]||0)*t+s;t=parseInt(e.style[mxConstants.STYLE_SPACING_LEFT]||0)*t+s,r=new mxRectangle(e.x,e.y,Math.max(a,e.width-t-r),Math.max(i,e.height-o-l));return n?(r.x=e.absoluteOffset.x,r.y=e.absoluteOffset.y,null!=e.text&&null!=e.text.boundingBox&&(0<e.text.boundingBox.x&&(r.x=e.text.boundingBox.x),0<e.text.boundingBox.y&&(r.y=e.text.boundingBox.y))):null!=e.text&&null!=e.text.boundingBox&&(r.x=Math.min(r.x,e.text.boundingBox.x),r.y=Math.min(r.y,e.text.boundingBox.y)),r.x+=t,r.y+=o,null!=e.text&&null!=e.text.boundingBox&&(n?(r.width=Math.max(a,e.text.boundingBox.width),r.height=Math.max(i,e.text.boundingBox.height)):(r.width=Math.max(r.width,e.text.boundingBox.width),r.height=Math.max(r.height,e.text.boundingBox.height))),this.graph.getModel().isVertex(e.cell)&&((n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?r.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(r.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?r.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(r.y+=e.height)),r},mxCellEditor.prototype.getEmptyLabelText=function(e){return this.emptyLabelText},mxCellEditor.prototype.getEditingCell=function(){return this.editingCell},mxCellEditor.prototype.destroy=function(){null!=this.textarea&&(mxEvent.release(this.textarea),null!=this.textarea.parentNode&&this.textarea.parentNode.removeChild(this.textarea),this.textarea=null)},mxCellRenderer.prototype.defaultEdgeShape=mxConnector,mxCellRenderer.prototype.defaultVertexShape=mxRectangleShape,mxCellRenderer.prototype.defaultTextShape=mxText,mxCellRenderer.prototype.legacyControlPosition=!0,mxCellRenderer.prototype.defaultShapes={},mxCellRenderer.registerShape=function(e,n){mxCellRenderer.prototype.defaultShapes[e]=n},mxCellRenderer.registerShape(mxConstants.SHAPE_RECTANGLE,mxRectangleShape),mxCellRenderer.registerShape(mxConstants.SHAPE_ELLIPSE,mxEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_RHOMBUS,mxRhombus),mxCellRenderer.registerShape(mxConstants.SHAPE_CYLINDER,mxCylinder),mxCellRenderer.registerShape(mxConstants.SHAPE_CONNECTOR,mxConnector),mxCellRenderer.registerShape(mxConstants.SHAPE_ACTOR,mxActor),mxCellRenderer.registerShape(mxConstants.SHAPE_TRIANGLE,mxTriangle),mxCellRenderer.registerShape(mxConstants.SHAPE_HEXAGON,mxHexagon),mxCellRenderer.registerShape(mxConstants.SHAPE_CLOUD,mxCloud),mxCellRenderer.registerShape(mxConstants.SHAPE_LINE,mxLine),mxCellRenderer.registerShape(mxConstants.SHAPE_ARROW,mxArrow),mxCellRenderer.registerShape(mxConstants.SHAPE_DOUBLE_ELLIPSE,mxDoubleEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_SWIMLANE,mxSwimlane),mxCellRenderer.registerShape(mxConstants.SHAPE_IMAGE,mxImageShape),mxCellRenderer.registerShape(mxConstants.SHAPE_LABEL,mxLabel),mxCellRenderer.prototype.initialize=function(e,n){var t=e.view.graph.getModel();null!=e.view.graph.container&&null==e.shape&&e.cell!=e.view.currentRoot&&(t.isVertex(e.cell)||t.isEdge(e.cell))&&(this.createShape(e),null==e.shape||null!=n&&!n||(this.initializeShape(e),e.view.graph.ordered||t.isEdge(e.cell)?e.invalidOrder=!0:e.view.graph.keepEdgesInForeground&&null!=this.firstEdge&&(this.firstEdge.parentNode==e.shape.node.parentNode?this.insertState(e,this.firstEdge):this.firstEdge=null),e.shape.scale=e.view.scale,this.createCellOverlays(e),this.installListeners(e)))},mxCellRenderer.prototype.initializeShape=function(e){e.shape.init(e.view.getDrawPane())},mxCellRenderer.prototype.getPreviousStateInContainer=function(e,n){for(var t=null,a=e.view.graph,i=a.getModel(),s=e.cell,o=i.getParent(s);null!=o&&null==t;)t=this.findPreviousStateInContainer(a,o,s,n),s=o,o=i.getParent(s);return t},mxCellRenderer.prototype.findPreviousStateInContainer=function(e,n,t,a){var i=null,s=e.getModel();for(t=null!=t?n.getIndex(t)-1:s.getChildCount(n)-1;0<=t&&null==i;t--)i=this.findPreviousStateInContainer(e,s.getChildAt(n,t),null,a);return null!=i||(null==(i=e.view.getState(n))||null!=i.shape&&null!=i.shape.node&&i.shape.node.parentNode==a)||(i=null),i},mxCellRenderer.prototype.order=function(e){var n=e.shape.node.parentNode,t=this.getPreviousStateInContainer(e,n),a=n.firstChild;null!=t&&(a=t.shape.node,null!=t.text&&null!=t.text.node&&t.text.node.parentNode==n&&(a=t.text.node),a=a.nextSibling),this.insertState(e,a)},mxCellRenderer.prototype.orderEdge=function(e){var n=(t=e.view).graph.getModel();if(t.graph.keepEdgesInForeground)null!=this.firstEdge&&null!=this.firstEdge.parentNode&&this.firstEdge.parentNode==e.shape.node.parentNode||(this.firstEdge=e.shape.node);else if(t.graph.keepEdgesInBackground){var t,a=e.shape.node,i=a.parentNode;n=n.getParent(e.cell);null!=(i=null!=(t=t.getState(n))&&null!=t.shape&&null!=t.shape.node?t.shape.node.nextSibling:i.firstChild)&&i!=a&&this.insertState(e,i)}},mxCellRenderer.prototype.insertState=function(e,n){e.shape.node.parentNode.insertBefore(e.shape.node,n),null!=e.text&&null!=e.text.node&&e.text.node.parentNode==e.shape.node.parentNode&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling)},mxCellRenderer.prototype.createShape=function(e){if(null!=e.style){var n=mxStencilRegistry.getStencil(e.style[mxConstants.STYLE_SHAPE]);null!=n?e.shape=new mxShape(n):(n=this.getShapeConstructor(e),e.shape=new n),e.shape.points=e.absolutePoints,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.dialect=e.view.graph.dialect,this.configureShape(e)}},mxCellRenderer.prototype.getShape=function(e){return null!=e?mxCellRenderer.prototype.defaultShapes[e]:null},mxCellRenderer.prototype.getShapeConstructor=function(e){var n=this.getShape(e.style[mxConstants.STYLE_SHAPE]);return null==n&&(n=e.view.graph.getModel().isEdge(e.cell)?this.defaultEdgeShape:this.defaultVertexShape),n},mxCellRenderer.prototype.configureShape=function(e){e.shape.apply(e),e.shape.image=e.view.graph.getImage(e),e.shape.indicatorShape=this.getShape(e.view.graph.getIndicatorShape(e)),e.shape.indicatorColor=e.view.graph.getIndicatorColor(e),e.shape.indicatorGradientColor=e.view.graph.getIndicatorGradientColor(e),e.shape.indicatorDirection=e.style[mxConstants.STYLE_INDICATOR_DIRECTION],e.shape.indicatorImage=e.view.graph.getIndicatorImage(e),this.postConfigureShape(e)},mxCellRenderer.prototype.postConfigureShape=function(e){null!=e.shape&&(this.resolveColor(e,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(e,"fill",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(e,"gradient",mxConstants.STYLE_GRADIENTCOLOR))},mxCellRenderer.prototype.resolveColor=function(e,n,t){var a=e.shape[n],i=e.view.graph,s=null;"inherit"==a?s=i.model.getParent(e.cell):"swimlane"==a?(s=null!=i.model.getTerminal(e.cell,!1)?i.model.getTerminal(e.cell,!1):e.cell,s=i.getSwimlane(s),t=i.swimlaneIndicatorColorAttribute):"indicated"==a&&(e.shape[n]=e.shape.indicatorColor),null!=s&&(a=i.getView().getState(s),(e.shape[n]=null)!=a&&(e.shape[n]=null!=a.shape&&"indicatorColor"!=n?a.shape[n]:a.style[t]))},mxCellRenderer.prototype.getLabelValue=function(e){return e.view.graph.getLabel(e.cell)},mxCellRenderer.prototype.createLabel=function(t,e){var a=t.view.graph;if(a.getModel().isEdge(t.cell),0<t.style[mxConstants.STYLE_FONTSIZE]||null==t.style[mxConstants.STYLE_FONTSIZE]){var n=a.isHtmlLabel(t.cell)||null!=e&&mxUtils.isNode(e);t.text=new this.defaultTextShape(e,new mxRectangle,t.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,a.getVerticalAlign(t),t.style[mxConstants.STYLE_FONTCOLOR],t.style[mxConstants.STYLE_FONTFAMILY],t.style[mxConstants.STYLE_FONTSIZE],t.style[mxConstants.STYLE_FONTSTYLE],t.style[mxConstants.STYLE_SPACING],t.style[mxConstants.STYLE_SPACING_TOP],t.style[mxConstants.STYLE_SPACING_RIGHT],t.style[mxConstants.STYLE_SPACING_BOTTOM],t.style[mxConstants.STYLE_SPACING_LEFT],t.style[mxConstants.STYLE_HORIZONTAL],t.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],t.style[mxConstants.STYLE_LABEL_BORDERCOLOR],a.isWrapping(t.cell)&&a.isHtmlLabel(t.cell),a.isLabelClipped(t.cell),t.style[mxConstants.STYLE_OVERFLOW],t.style[mxConstants.STYLE_LABEL_PADDING]),t.text.opacity=mxUtils.getValue(t.style,mxConstants.STYLE_TEXT_OPACITY,100),t.text.dialect=n?mxConstants.DIALECT_STRICTHTML:t.view.graph.dialect,t.text.state=t,this.initializeLabel(t);var i=!1,s=function(e){var n=t;return(mxClient.IS_TOUCH||i)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n};mxEvent.addGestureListeners(t.text.node,mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,t)),i=a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName)}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,s(e)))}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,s(e))),i=!1)})),mxEvent.addListener(t.text.node,"dblclick",mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.dblClick(e,t.cell),mxEvent.consume(e))}))}},mxCellRenderer.prototype.initializeLabel=function(e){var n=e.view.graph;e.text.dialect!=mxConstants.DIALECT_SVG&&(mxClient.IS_SVG&&mxClient.NO_FO?e.text.init(n.container):mxUtils.isVml(e.view.getDrawPane())&&(null!=e.shape.label?e.text.init(e.shape.label):e.text.init(e.shape.node))),null==e.text.node&&(e.text.init(e.view.getDrawPane()),null!=e.shape&&null!=e.text&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling))},mxCellRenderer.prototype.createCellOverlays=function(e){var n=e.view.graph.getCellOverlays(e.cell),t=null;if(null!=n){t=new mxDictionary;for(var a=0;a<n.length;a++){var i=null!=e.overlays?e.overlays.remove(n[a]):null;null==i&&((i=new mxImageShape(new mxRectangle,n[a].image.src)).dialect=e.view.graph.dialect,i.preserveImageAspect=!1,i.overlay=n[a],this.initializeOverlay(e,i),this.installCellOverlayListeners(e,n[a],i),null!=n[a].cursor&&(i.node.style.cursor=n[a].cursor)),t.put(n[a],i)}}null!=e.overlays&&e.overlays.visit(function(e,n){n.destroy()}),e.overlays=t},mxCellRenderer.prototype.initializeOverlay=function(e,n){n.init(e.view.getOverlayPane())},mxCellRenderer.prototype.installCellOverlayListeners=function(n,t,e){var a=n.view.graph;mxEvent.addListener(e.node,"click",function(e){a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))}),mxEvent.addGestureListeners(e.node,function(e){mxEvent.consume(e)},function(e){a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),mxClient.IS_TOUCH&&mxEvent.addListener(e.node,"touchend",function(e){t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))})},mxCellRenderer.prototype.createControl=function(t){var a=t.view.graph,e=a.getFoldingImage(t);if(a.foldingEnabled&&null!=e){if(null==t.control){var n=new mxRectangle(0,0,e.width,e.height);t.control=new mxImageShape(n,e.src),t.control.preserveImageAspect=!1,t.control.dialect=a.dialect,this.initControl(t,t.control,!0,function(e){if(a.isEnabled()){var n=!a.isCellCollapsed(t.cell);a.foldCells(n,!1,[t.cell]),mxEvent.consume(e)}})}}else null!=t.control&&(t.control.destroy(),t.control=null)},mxCellRenderer.prototype.initControl=function(n,e,t,a){var i=n.view.graph;return i.isHtmlLabel(n.cell)&&mxClient.NO_FO&&i.dialect==mxConstants.DIALECT_SVG?(e.dialect=mxConstants.DIALECT_PREFERHTML,e.init(i.container),e.node.style.zIndex=1):e.init(n.view.getOverlayPane()),e=e.innerNode||e.node,a&&(i.isEnabled()&&(e.style.cursor="pointer"),mxEvent.addListener(e,"click",a)),t&&mxEvent.addGestureListeners(e,function(e){i.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,n)),mxEvent.consume(e)},function(e){i.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),e},mxCellRenderer.prototype.isShapeEvent=function(e,n){return!0},mxCellRenderer.prototype.isLabelEvent=function(e,n){return!0},mxCellRenderer.prototype.installListeners=function(t){var a=t.view.graph,n=function(e){var n=t;return(a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName||mxClient.IS_TOUCH)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n},i=!1;mxEvent.addListener(t.shape.node,"gesturestart",mxUtils.bind(this,function(e){a.lastTouchTime=0,i=!0,mxEvent.consume(e)})),mxEvent.addGestureListeners(t.shape.node,mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t)):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}));var s=mxClient.IS_TOUCH?"gestureend":"dblclick";mxEvent.addListener(t.shape.node,s,mxUtils.bind(this,function(e){i=!1,"gestureend"==s?(a.lastTouchTime=0,a.gestureEnabled&&(a.handleGesture(t,e),mxEvent.consume(e))):this.isShapeEvent(t,e)&&(a.dblClick(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t.cell),mxEvent.consume(e))}))},mxCellRenderer.prototype.redrawLabel=function(e,n){var t=this.getLabelValue(e);if(null==e.text&&null!=t&&(mxUtils.isNode(t)||0<t.length)?this.createLabel(e,t):null==e.text||null!=t&&0!=t.length||(e.text.destroy(),e.text=null),null!=e.text){var a=(i=e.view.graph).isWrapping(e.cell),i=i.isLabelClipped(e.cell),s=this.getLabelBounds(e);!n&&e.text.value==t&&e.text.isWrapping==a&&e.text.isClipping==i&&e.text.scale==e.view.scale&&e.text.bounds.equals(s)||(e.text.value=t,e.text.bounds=s,e.text.scale=this.getTextScale(e),e.text.isWrapping=a,e.text.isClipping=i,e.text.redraw())}},mxCellRenderer.prototype.getTextScale=function(e){return e.view.scale},mxCellRenderer.prototype.getLabelBounds=function(e){var n=e.view.graph,t=e.view.scale,a=n.getModel().isEdge(e.cell),i=new mxRectangle(e.absoluteOffset.x,e.absoluteOffset.y);return e.text.updateMargin(),a?(a=e.text.getSpacing(),i.x+=a.x*t,i.y+=a.y*t,null!=(n=n.getCellGeometry(e.cell))&&(i.width=Math.max(0,e.text.margin.x*n.width*t-e.text.spacingLeft*t-e.text.spacingRight*t),i.height=Math.max(0,e.text.margin.y*n.height*t-e.text.spacingTop*t-e.text.spacingBottom*t))):(e.text.isPaintBoundsInverted()&&(a=i.x,i.x=i.y,i.y=a),i.x+=e.x,i.y+=e.y,i.width=Math.max(1,e.width),i.height=Math.max(1,e.height),n.isSwimlane(e.cell)&&(0<(n=n.getStartSize(e.cell)).width?(a=Math.min(i.width,n.width*t),e.shape.flipH&&(i.x+=i.width-a),i.width=a):0<n.height&&(a=Math.min(i.height,n.height*t),e.shape.flipV&&(i.y+=i.height-a),i.height=a)),this.rotateLabelBounds(e,i)),i},mxCellRenderer.prototype.rotateLabelBounds=function(e,n){if(e.text.isPaintBoundsInverted()){var t=(e.width-e.height)/2;n.x+=t,n.y-=t,t=n.width,n.width=n.height,n.height=t}if(n.x-=e.text.margin.x*n.width,n.y-=e.text.margin.y*n.height,"fill"!=e.style[mxConstants.STYLE_OVERFLOW]){t=e.view.scale;var a=e.text.getSpacing();n.x+=a.x*t,n.y+=a.y*t,n.width=Math.max(0,n.width-e.text.spacingLeft*t-e.text.spacingRight*t),n.height=Math.max(0,n.height-e.text.spacingTop*t-e.text.spacingBottom*t)}var i=e.text.getTextRotation();0!=i&&null!=e&&e.view.graph.model.isVertex(e.cell)&&(t=e.getCenterX(),a=e.getCenterY(),n.x!=t||n.y!=a)&&(i*=Math.PI/180,pt=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(i),Math.sin(i),new mxPoint(t,a)),n.x=pt.x,n.y=pt.y)},mxCellRenderer.prototype.redrawCellOverlays=function(s,o){if(this.createCellOverlays(s),null!=s.overlays){var r=mxUtils.mod(mxUtils.getValue(s.style,mxConstants.STYLE_ROTATION,0),90),e=mxUtils.toRadians(r),l=Math.cos(e),d=Math.sin(e);s.overlays.visit(function(e,n){var t=n.overlay.getBounds(s);if(!s.view.graph.getModel().isEdge(s.cell)&&null!=s.shape&&0!=r){var a=t.getCenterX(),i=t.getCenterY();a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),l,d,new mxPoint(s.getCenterX(),s.getCenterY()))).x,i=i.y;t.x=Math.round(a-t.width/2),t.y=Math.round(i-t.height/2)}!o&&null!=n.bounds&&n.scale==s.view.scale&&n.bounds.equals(t)||(n.bounds=t,n.scale=s.view.scale,n.redraw())})}},mxCellRenderer.prototype.redrawControl=function(e,n){if(null!=e.control){var t=this.getControlBounds(e),a=this.legacyControlPosition?mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0):e.shape.getTextRotation(),i=e.view.scale;!n&&e.control.scale==i&&e.control.bounds.equals(t)&&e.control.rotation==a||(e.control.rotation=a,e.control.bounds=t,e.control.scale=i,e.control.redraw())}},mxCellRenderer.prototype.getControlBounds=function(e){if(null==e.control)return null;var n=e.control.scale,t=e.control.bounds.width/n,a=(n=e.control.bounds.height/n,e.view.scale),i=e.getCenterX(),s=e.getCenterY();if(!e.view.graph.getModel().isEdge(e.cell)&&(i=e.x+t*a,s=e.y+n*a,null!=e.shape)){var o=e.shape.getShapeRotation();if(this.legacyControlPosition)o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0);else if(e.shape.isPaintBoundsInverted()){var r=(e.width-e.height)/2;i=i+r,s=s-r}0!=o&&(r=mxUtils.toRadians(o),o=Math.cos(r),r=Math.sin(r),i=(s=mxUtils.getRotatedPoint(new mxPoint(i,s),o,r,new mxPoint(e.getCenterX(),e.getCenterY()))).x,s=s.y)}return e.view.graph.getModel().isEdge(e.cell),new mxRectangle(Math.round(i-t/2*a),Math.round(s-n/2*a),Math.round(t*a),Math.round(n*a))},mxCellRenderer.prototype.redraw=function(e,n,t){if(null!=e.shape){var a=!1;e.view.graph.getModel().isEdge(e.cell),reconfigure=null!=n&&n,this.createControl(e),(e.orderChanged||e.invalidOrder)&&(e.view.graph.ordered?this.order(e):this.orderEdge(e)),!e.orderChanged&&mxUtils.equalEntries(e.shape.style,e.style)||(this.configureShape(e),n=!0),delete e.invalidOrder,delete e.orderChanged,!n&&null!=e.shape.bounds&&e.shape.scale==e.view.scale&&e.shape.bounds.equals(e)&&mxUtils.equalPoints(e.shape.points,e.absolutePoints)||(a=!0,e.shape.points=null!=e.absolutePoints?e.absolutePoints.slice():null,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.scale=e.view.scale,null==t||t?e.shape.redraw():e.shape.updateBoundingBox()),(null==t||t)&&(this.redrawLabel(e,a),this.redrawCellOverlays(e,a),this.redrawControl(e,a))}},mxCellRenderer.prototype.destroy=function(e){null!=e.shape&&(null!=e.text&&(e.text.destroy(),e.text=null),null!=e.overlays&&(e.overlays.visit(function(e,n){n.destroy()}),e.overlays=null),null!=e.control&&(e.control.destroy(),e.control=null),e.shape.destroy(),e.shape=null)};var mxEdgeStyle={EntityRelation:function(e,n,t,a,i){var s=e.view,o=s.graph;a=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,mxConstants.ENTITY_SEGMENT)*s.scale;var r=(d=e.absolutePoints)[0],l=d[d.length-1],d=!1;if(null!=r)(n=new mxCellState).x=r.x,n.y=r.y;else{if(null==n)return;var c=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_NONE);c!=mxConstants.DIRECTION_MASK_NONE?d=c==mxConstants.DIRECTION_MASK_WEST:(r=o.getCellGeometry(n.cell)).relative?d=r.x<=.5:null!=t&&(d=t.x+t.width<n.x)}r=!0,null!=l?((t=new mxCellState).x=l.x,t.y=l.y):null!=t&&((c=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_NONE))!=mxConstants.DIRECTION_MASK_NONE?r=c==mxConstants.DIRECTION_MASK_WEST:(e=o.getCellGeometry(t.cell)).relative?r=e.x<=.5:null!=n&&(r=n.x+n.width<t.x)),null!=n&&null!=t&&(e=d?n.x:n.x+n.width,n=s.getRoutingCenterY(n),o=r?t.x:t.x+t.width,t=s.getRoutingCenterY(t),s=new mxPoint(e+(d?-a:a),n),l=new mxPoint(o+(r?-a:a),t),d==r?(a=d?Math.min(e,o)-a:Math.max(e,o)+a,i.push(new mxPoint(a,n)),i.push(new mxPoint(a,t))):(s.x<l.x==d?(a=n+(t-n)/2,i.push(s),i.push(new mxPoint(s.x,a)),i.push(new mxPoint(l.x,a))):i.push(s),i.push(l)))},Loop:function(e,n,t,a,i){if(null!=n){var s=(t=e.view).graph;null!=(a=null!=a&&0<a.length?a[0]:null)&&(a=t.transformControlPoint(e,a),mxUtils.contains(n,a.x,a.y)&&(a=null));var o=0,r=0,l=0,d=0;s=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,s.gridSize)*t.scale;(e=mxUtils.getValue(e.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_WEST))==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH?(o=t.getRoutingCenterX(n),r=s):(l=t.getRoutingCenterY(n),d=s),null==a||a.x<n.x||a.x>n.x+n.width?null!=a?(o=a.x,d=Math.max(Math.abs(l-a.y),d)):e==mxConstants.DIRECTION_NORTH?l=n.y-2*r:e==mxConstants.DIRECTION_SOUTH?l=n.y+n.height+2*r:o=e==mxConstants.DIRECTION_EAST?n.x-2*d:n.x+n.width+2*d:null!=a&&(o=t.getRoutingCenterX(n),r=Math.max(Math.abs(o-a.x),d),l=a.y,d=0),i.push(new mxPoint(o-r,l-d)),i.push(new mxPoint(o+r,l+d))}},ElbowConnector:function(e,n,t,a,i){var s=null!=a&&0<a.length?a[0]:null,o=!1,r=!1;if(null!=n&&null!=t)if(null!=s){var l=Math.min(n.x,t.x),d=Math.max(n.x+n.width,t.x+t.width),c=(r=Math.min(n.y,t.y),Math.max(n.y+n.height,t.y+t.height));o=(s=e.view.transformControlPoint(e,s)).y<r||s.y>c,r=s.x<l||s.x>d}else(o=(l=Math.max(n.x,t.x))==(d=Math.min(n.x+n.width,t.x+t.width)))||(r=(r=Math.max(n.y,t.y))==(c=Math.min(n.y+n.height,t.y+t.height)));r||!o&&e.style[mxConstants.STYLE_ELBOW]!=mxConstants.ELBOW_VERTICAL?mxEdgeStyle.SideToSide(e,n,t,a,i):mxEdgeStyle.TopToBottom(e,n,t,a,i)},SideToSide:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(e=Math.max(n.x,t.x),o=Math.min(n.x+n.width,t.x+t.width),e=null!=a?a.x:o+(e-o)/2,o=s.getRoutingCenterY(n),s=s.getRoutingCenterY(t),null!=a&&(a.y>=n.y&&a.y<=n.y+n.height&&(o=a.y),a.y>=t.y&&a.y<=t.y+t.height&&(s=a.y)),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),!mxUtils.contains(t,e,s)&&!mxUtils.contains(n,e,s)&&i.push(new mxPoint(e,s)),1==i.length&&(null!=a?!mxUtils.contains(t,e,a.y)&&!mxUtils.contains(n,e,a.y)&&i.push(new mxPoint(e,a.y)):(s=Math.max(n.y,t.y),n=Math.min(n.y+n.height,t.y+t.height),i.push(new mxPoint(e,s+(n-s)/2)))))},TopToBottom:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(o=Math.max(n.y,t.y),r=Math.min(n.y+n.height,t.y+t.height),e=s.getRoutingCenterX(n),null!=a&&a.x>=n.x&&a.x<=n.x+n.width&&(e=a.x),o=null!=a?a.y:r+(o-r)/2,!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),e=null!=a&&a.x>=t.x&&a.x<=t.x+t.width?a.x:s.getRoutingCenterX(t),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),1==i.length&&(null!=a&&1==i.length?!mxUtils.contains(t,a.x,o)&&!mxUtils.contains(n,a.x,o)&&i.push(new mxPoint(a.x,o)):(s=Math.max(n.x,t.x),n=Math.min(n.x+n.width,t.x+t.width),i.push(new mxPoint(s+(n-s)/2,o)))))},SegmentConnector:function(e,n,t,a,i){var s=e.absolutePoints,o=!0,r=null,l=s[0];null==l&&null!=n?l=new mxPoint(e.view.getRoutingCenterX(n),e.view.getRoutingCenterY(n)):null!=l&&(l=l.clone());var d=s.length-1;if(null!=a&&0<a.length){r=e.view.transformControlPoint(e,a[0]);for(var c=n,m=s[0],u=!1,p=!1,g=(u=r,a.length),v=0;v<2;v++){var h=null!=m&&m.x==u.x,f=null!=m&&m.y==u.y,b=null!=c&&u.y>=c.y&&u.y<=c.y+c.height;c=null!=c&&u.x>=c.x&&u.x<=c.x+c.width,u=f||null==m&&b,p=h||null==m&&c;if(null!=m&&!f&&!h&&(b||c)){o=!b;break}if(p||u){o=u,1==v&&(o=0==a.length%2?u:p);break}c=t,m=s[d],u=e.view.transformControlPoint(e,a[g-1])}for(o&&(null!=s[0]&&s[0].y!=r.y||null==s[0]&&null!=n&&(r.y<n.y||r.y>n.y+n.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[0]&&s[0].x!=r.x||null==s[0]&&null!=n&&(r.x<n.x||r.x>n.x+n.width))&&i.push(new mxPoint(r.x,l.y)),o?l.y=r.y:l.x=r.x,v=0;v<a.length;v++)o=!o,r=e.view.transformControlPoint(e,a[v]),o?l.y=r.y:l.x=r.x,i.push(l.clone())}else r=l,o=!0;if(null==(l=s[d])&&null!=t&&(l=new mxPoint(e.view.getRoutingCenterX(t),e.view.getRoutingCenterY(t))),o&&(null!=s[d]&&s[d].y!=r.y||null==s[d]&&null!=t&&(r.y<t.y||r.y>t.y+t.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[d]&&s[d].x!=r.x||null==s[d]&&null!=t&&(r.x<t.x||r.x>t.x+t.width))&&i.push(new mxPoint(r.x,l.y)),null==s[0]&&null!=n)for(;1<i.length&&mxUtils.contains(n,i[1].x,i[1].y);)i=i.splice(1,1);if(null==s[d]&&null!=t)for(;1<i.length&&mxUtils.contains(t,i[i.length-1].x,i[i.length-1].y);)i=i.splice(i.length-1,1)},orthBuffer:10,dirVectors:[[-1,0],[0,-1],[1,0],[0,1],[-1,0],[0,-1],[1,0]],wayPoints1:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],routePatterns:[[[513,2308,2081,2562],[513,1090,514,2184,2114,2561],[513,1090,514,2564,2184,2562],[513,2308,2561,1090,514,2568,2308]],[[514,1057,513,2308,2081,2562],[514,2184,2114,2561],[514,2184,2562,1057,513,2564,2184],[514,1057,513,2568,2308,2561]],[[1090,514,1057,513,2308,2081,2562],[2114,2561],[1090,2562,1057,513,2564,2184],[1090,514,1057,513,2308,2561,2568]],[[2081,2562],[1057,513,1090,514,2184,2114,2561],[1057,513,1090,514,2184,2562,2564],[1057,2561,1090,514,2568,2308]]],inlineRoutePatterns:[[null,[2114,2568],null,null],[null,[514,2081,2114,2568],null,null],[null,[2114,2561],null,null],[[2081,2562],[1057,2114,2568],[2184,2562],null]],vertexSeperations:[],limits:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]],LEFT_MASK:32,TOP_MASK:64,RIGHT_MASK:128,BOTTOM_MASK:256,LEFT:1,TOP:2,RIGHT:4,BOTTOM:8,SIDE_MASK:480,CENTER_MASK:512,SOURCE_MASK:1024,TARGET_MASK:2048,VERTEX_MASK:3072,OrthConnector:function(e,n,t,a,i){var s=e.view.graph,o=null!=n&&s.getModel().isEdge(n.cell);s=null!=t&&s.getModel().isEdge(t.cell);if(null!=a&&0<a.length||o||s)mxEdgeStyle.SegmentConnector(e,n,t,a,i);else{var r=(a=e.absolutePoints)[0],l=a[a.length-1];a=null!=n?n.x:r.x;o=null!=n?n.y:r.y;var d=null!=n?n.width:1,c=null!=n?n.height:1,m=null!=t?t.x:l.x,u=null!=t?t.y:l.y,p=null!=t?t.width:1,g=null!=t?t.height:1,v=(s=e.view.scale*mxEdgeStyle.orthBuffer,[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL]);for(null!=n&&(v[0]=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_ALL)),null!=t&&(v[1]=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_ALL)),e=[0,0],a=[[a,o,d,c],[m,u,p,g]],d=0;d<2;d++)mxEdgeStyle.limits[d][1]=a[d][0]-s,mxEdgeStyle.limits[d][2]=a[d][1]-s,mxEdgeStyle.limits[d][4]=a[d][0]+a[d][2]+s,mxEdgeStyle.limits[d][8]=a[d][1]+a[d][3]+s;for(d=a[0][0]+a[0][2]/2-(a[1][0]+a[1][2]/2),c=a[0][1]+a[0][3]/2-(a[1][1]+a[1][3]/2),d<(o=0)?o=c<0?2:1:c<=0&&(o=3,0==d&&(o=2)),(c=null)!=n&&(c=r),n=[[.5,.5],[.5,.5]],d=0;d<2;d++)null!=c&&(n[d][0]=(c.x-a[d][0])/a[d][2],n[d][0]<.01?e[d]=mxConstants.DIRECTION_MASK_WEST:.99<n[d][0]&&(e[d]=mxConstants.DIRECTION_MASK_EAST),n[d][1]=(c.y-a[d][1])/a[d][3],n[d][1]<.01?e[d]=mxConstants.DIRECTION_MASK_NORTH:.99<n[d][1]&&(e[d]=mxConstants.DIRECTION_MASK_SOUTH)),(c=null)!=t&&(c=l);for(d=a[0][1]-(a[1][1]+a[1][3]),c=a[0][0]-(a[1][0]+a[1][2]),m=a[1][1]-(a[0][1]+a[0][3]),u=a[1][0]-(a[0][0]+a[0][2]),mxEdgeStyle.vertexSeperations[1]=Math.max(c-2*s,0),mxEdgeStyle.vertexSeperations[2]=Math.max(d-2*s,0),mxEdgeStyle.vertexSeperations[4]=Math.max(m-2*s,0),mxEdgeStyle.vertexSeperations[3]=Math.max(u-2*s,0),t=[],l=[],(r=[])[0]=u<=c?mxConstants.DIRECTION_MASK_WEST:mxConstants.DIRECTION_MASK_EAST,l[0]=m<=d?mxConstants.DIRECTION_MASK_NORTH:mxConstants.DIRECTION_MASK_SOUTH,r[1]=mxUtils.reversePortConstraints(r[0]),l[1]=mxUtils.reversePortConstraints(l[0]),c=u<=c?c:u,m=m<=d?d:m,p=!(u=[[0,0],[0,0]]),d=0;d<2;d++)0==e[d]&&(0==(r[d]&v[d])&&(r[d]=mxUtils.reversePortConstraints(r[d])),0==(l[d]&v[d])&&(l[d]=mxUtils.reversePortConstraints(l[d])),u[d][0]=l[d],u[d][1]=r[d]);for(2*s<m&&2*s<c&&(0<(r[0]&v[0])&&0<(l[1]&v[1])?(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=l[1],u[1][1]=r[1],p=!0):0<(l[0]&v[0])&&0<(r[1]&v[1])&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=r[1],u[1][1]=l[1],p=!0)),2*s<m&&!p&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=l[1],u[1][1]=r[1],p=!0),2*s<c&&!p&&(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=r[1],u[1][1]=l[1]),d=0;d<2;d++)0==e[d]&&(0==(u[d][0]&v[d])&&(u[d][0]=u[d][1]),t[d]=u[d][0]&v[d],t[d]|=(u[d][1]&v[d])<<8,t[d]|=(u[1-d][d]&v[d])<<16,t[d]|=(u[1-d][1-d]&v[d])<<24,0==(15&t[d])&&(t[d]<<=8),0==(3840&t[d])&&(t[d]=15&t[d]|t[d]>>8),0==(983040&t[d])&&(t[d]=65535&t[d]|(251658240&t[d])>>8),e[d]=15&t[d],v[d]==mxConstants.DIRECTION_MASK_WEST||v[d]==mxConstants.DIRECTION_MASK_NORTH||v[d]==mxConstants.DIRECTION_MASK_EAST||v[d]==mxConstants.DIRECTION_MASK_SOUTH)&&(e[d]=v[d]);switch(d=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0],v=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(d-=o)<1&&(d+=4),(v-=o)<1&&(v+=4),v=mxEdgeStyle.routePatterns[d-1][v-1],mxEdgeStyle.wayPoints1[0][0]=a[0][0],mxEdgeStyle.wayPoints1[0][1]=a[0][1],e[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-=s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]+=a[0][3]+s;break;case mxConstants.DIRECTION_MASK_EAST:mxEdgeStyle.wayPoints1[0][0]+=a[0][2]+s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]-=s}for(r=t=(s=0)<(e[0]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1,d=l=0;d<v.length;d++){g=(l=15&v[d])==mxConstants.DIRECTION_MASK_EAST?3:l,4<(g+=o)&&(g-=4),c=mxEdgeStyle.dirVectors[g-1],(l=0<g%2?0:1)!=t&&(s++,mxEdgeStyle.wayPoints1[s][0]=mxEdgeStyle.wayPoints1[s-1][0],mxEdgeStyle.wayPoints1[s][1]=mxEdgeStyle.wayPoints1[s-1][1]);var h=0<(v[d]&mxEdgeStyle.TARGET_MASK);p=0<(v[d]&mxEdgeStyle.SOURCE_MASK);15<(m=(m=(v[d]&mxEdgeStyle.SIDE_MASK)>>5)<<o)&&(m>>=4),u=0<(v[d]&mxEdgeStyle.CENTER_MASK),(p||h)&&m<9?(g=0,p=p?0:1,g=u&&0==l?a[p][0]+n[p][0]*a[p][2]:u?a[p][1]+n[p][1]*a[p][3]:mxEdgeStyle.limits[p][m],0==l?0<(m=(g-mxEdgeStyle.wayPoints1[s][0])*c[0])&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*m):0<(m=(g-mxEdgeStyle.wayPoints1[s][1])*c[1])&&(mxEdgeStyle.wayPoints1[s][1]+=c[1]*m)):u&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2),mxEdgeStyle.wayPoints1[s][1]+=c[1]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2)),0<s&&mxEdgeStyle.wayPoints1[s][l]==mxEdgeStyle.wayPoints1[s-1][l]?s--:t=l}for(d=0;d<=s&&(d!=s||((0<(e[1]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1)==r?0:1)==(s+1)%2);d++)i.push(new mxPoint(mxEdgeStyle.wayPoints1[d][0],mxEdgeStyle.wayPoints1[d][1]))}},getRoutePattern:function(e,n,t,a){var i=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0];return e=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(i-=n)<1&&(i+=4),(e-=n)<1&&(e+=4),n=routePatterns[i-1][e-1],0!=t&&0!=a||null!=inlineRoutePatterns[i-1][e-1]&&(n=inlineRoutePatterns[i-1][e-1]),n}},mxStyleRegistry={values:[],putValue:function(e,n){mxStyleRegistry.values[e]=n},getValue:function(e){return mxStyleRegistry.values[e]},getName:function(e){for(var n in mxStyleRegistry.values)if(mxStyleRegistry.values[n]==e)return n;return null}};function mxGraphView(e){this.graph=e,this.translate=new mxPoint,this.graphBounds=new mxRectangle,this.states=new mxDictionary}function mxCurrentRootChange(e,n){if(this.view=e,this.previous=this.root=n,this.isUp=null==n,!this.isUp)for(var t=this.view.currentRoot,a=this.view.graph.getModel();null!=t;){if(t==n){this.isUp=!0;break}t=a.getParent(t)}}function mxGraph(e,n,t,a){this.mouseListeners=null,this.renderHint=t,this.dialect=mxClient.IS_SVG?mxConstants.DIALECT_SVG:t==mxConstants.RENDERING_HINT_EXACT&&mxClient.IS_VML?mxConstants.DIALECT_VML:t==mxConstants.RENDERING_HINT_FASTEST?mxConstants.DIALECT_STRICTHTML:t==mxConstants.RENDERING_HINT_FASTER?mxConstants.DIALECT_PREFERHTML:mxConstants.DIALECT_MIXEDHTML,this.model=null!=n?n:new mxGraphModel,this.multiplicities=[],this.imageBundles=[],this.cellRenderer=this.createCellRenderer(),this.setSelectionModel(this.createSelectionModel()),this.setStylesheet(null!=a?a:this.createStylesheet()),this.view=this.createGraphView(),this.graphModelChangeListener=mxUtils.bind(this,function(e,n){this.graphModelChanged(n.getProperty("edit").changes)}),this.model.addListener(mxEvent.CHANGE,this.graphModelChangeListener),this.createHandlers(),null!=e&&this.init(e),this.view.revalidate()}function mxCellOverlay(e,n,t,a,i,s){this.image=e,this.tooltip=n,this.align=null!=t?t:this.align,this.verticalAlign=null!=a?a:this.verticalAlign,this.offset=null!=i?i:new mxPoint,this.cursor=null!=s?s:"help"}function mxOutline(e,n){this.source=e,null!=n&&this.init(n)}function mxMultiplicity(e,n,t,a,i,s,o,r,l,d){this.source=e,this.type=n,this.attr=t,this.value=a,this.min=null!=i?i:0,this.max=null!=s?s:"n",this.validNeighbors=o,this.countError=mxResources.get(r)||r,this.typeError=mxResources.get(l)||l,this.validNeighborsAllowed=null==d||d}function mxLayoutManager(e){this.undoHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.beforeUndo(n.getProperty("edit"))}),this.moveHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsMoved(n.getProperty("cells"),n.getProperty("event"))}),this.setGraph(e)}function mxSpaceManager(e,n,t,a){this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.foldHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.shiftRightwards=null==n||n,this.shiftDownwards=null==t||t,this.extendParents=null==a||a,this.setGraph(e)}function mxSwimlaneManager(e,n,t,a){this.horizontal=null==n||n,this.addEnabled=null==t||t,this.resizeEnabled=null==a||a,this.addHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isAddEnabled()&&this.cellsAdded(n.getProperty("cells"))}),this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isResizeEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.setGraph(e)}function mxTemporaryCellStates(e,n,t){if(this.view=e,n=null!=n?n:1,this.oldBounds=e.getGraphBounds(),this.oldStates=e.getStates(),this.oldScale=e.getScale(),e.setStates(new mxDictionary),e.setScale(n),null!=t){n=e.createState(new mxCell);for(var a=0;a<t.length;a++)e.validateBounds(n,t[a]);var i=null;for(a=0;a<t.length;a++){var s=e.validatePoints(n,t[a]);null==i?i=s:i.add(s)}null==i&&(i=new mxRectangle),e.setGraphBounds(i)}}function mxCellStatePreview(e){this.graph=e,this.deltas={}}function mxConnectionConstraint(e,n){this.point=e,this.perimeter=null==n||n}function mxGraphHandler(e){this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.updatePreviewShape()}),this.graph.addListener(mxEvent.PAN,this.panHandler)}function mxPanningHandler(e,n){null!=e&&(this.graph=e,this.factoryMethod=n,this.graph.addMouseListener(this),this.init())}function mxCellMarker(e,n,t,a){mxEventSource.call(this),null!=e&&(this.graph=e,this.validColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.invalidColor=null!=n?t:mxConstants.DEFAULT_INVALID_COLOR,this.hotspot=null!=a?a:mxConstants.DEFAULT_HOTSPOT,this.highlight=new mxCellHighlight(e))}function mxSelectionCellsHandler(e){mxEventSource.call(this),this.graph=e,this.handlers=new mxDictionary,this.graph.addMouseListener(this),this.refreshHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.refresh()}),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE,this.refreshHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.DOWN,this.refreshHandler),this.graph.getView().addListener(mxEvent.UP,this.refreshHandler)}function mxConnectionHandler(e,n){mxEventSource.call(this),null!=e&&(this.graph=e,this.factoryMethod=n,this.init())}function mxConstraintHandler(e){this.graph=e}function mxRubberband(e){null!=e&&(this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.addListener(mxEvent.PAN,this.panHandler),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxVertexHandler(e){null!=e&&(this.state=e,this.init())}function mxEdgeHandler(e){null!=e&&(this.state=e,this.init())}function mxElbowEdgeHandler(e){mxEdgeHandler.call(this,e)}function mxEdgeSegmentHandler(e){mxEdgeHandler.call(this,e)}function mxKeyHandler(e,n){null!=e&&(this.graph=e,this.target=n||document.documentElement,this.normalKeys=[],this.shiftKeys=[],this.controlKeys=[],this.controlShiftKeys=[],mxEvent.addListener(this.target,"keydown",mxUtils.bind(this,function(e){this.keyDown(e)})),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxTooltipHandler(e,n){null!=e&&(this.graph=e,this.delay=n||500,this.graph.addMouseListener(this))}function mxCellTracker(e,n,t){mxCellMarker.call(this,e,n),this.graph.addMouseListener(this),null!=t&&(this.getCell=t),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()}))}function mxCellHighlight(e,n,t,a){null!=e&&(this.graph=e,this.highlightColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.strokeWidth=null!=t?t:mxConstants.HIGHLIGHT_STROKEWIDTH,this.dashed=null!=a&&a,this.repaintHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.getView().addListener(mxEvent.SCALE,this.repaintHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.repaintHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.repaintHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.repaintHandler),this.resetHandler=mxUtils.bind(this,function(){this.hide()}),this.graph.getView().addListener(mxEvent.DOWN,this.resetHandler),this.graph.getView().addListener(mxEvent.UP,this.resetHandler))}function mxDefaultKeyHandler(n){if(null!=n){this.editor=n,this.handler=new mxKeyHandler(n.graph);var t=this.handler.escape;this.handler.escape=function(e){t.apply(this,arguments),n.hideProperties(),n.fireEvent(new mxEventObject(mxEvent.ESCAPE,"event",e))}}}function mxDefaultPopupMenu(e){this.config=e}function mxDefaultToolbar(e,n){this.editor=n,null!=e&&null!=n&&this.init(e)}function mxEditor(e){this.actions=[],this.addActions(),null!=document.body&&(this.cycleAttributeValues=[],this.popupHandler=new mxDefaultPopupMenu,this.undoManager=new mxUndoManager,this.graph=this.createGraph(),this.toolbar=this.createToolbar(),this.keyHandler=new mxDefaultKeyHandler(this),this.configure(e),this.graph.swimlaneIndicatorColorAttribute=this.cycleAttributeName,!mxClient.IS_LOCAL&&null!=this.urlInit&&(this.session=this.createSession()),null!=this.onInit&&this.onInit(),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_LOOP,mxEdgeStyle.Loop),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SIDETOSIDE,mxEdgeStyle.SideToSide),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_TOPTOBOTTOM,mxEdgeStyle.TopToBottom),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ORTHOGONAL,mxEdgeStyle.OrthConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SEGMENT,mxEdgeStyle.SegmentConnector),mxStyleRegistry.putValue(mxConstants.PERIMETER_ELLIPSE,mxPerimeter.EllipsePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RECTANGLE,mxPerimeter.RectanglePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RHOMBUS,mxPerimeter.RhombusPerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_TRIANGLE,mxPerimeter.TrianglePerimeter),mxGraphView.prototype=new mxEventSource,mxGraphView.prototype.constructor=mxGraphView,mxGraphView.prototype.EMPTY_POINT=new mxPoint,mxGraphView.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphView.prototype.updatingDocumentResource="none"!=mxClient.language?"updatingDocument":"",mxGraphView.prototype.allowEval=!1,mxGraphView.prototype.captureDocumentGesture=!0,mxGraphView.prototype.optimizeVmlReflows=!0,mxGraphView.prototype.rendering=!0,mxGraphView.prototype.graph=null,mxGraphView.prototype.currentRoot=null,mxGraphView.prototype.graphBounds=null,mxGraphView.prototype.scale=1,mxGraphView.prototype.translate=null,mxGraphView.prototype.updateStyle=!1,mxGraphView.prototype.getGraphBounds=function(){return this.graphBounds},mxGraphView.prototype.setGraphBounds=function(e){this.graphBounds=e},mxGraphView.prototype.getBounds=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.getState(e[a]);null!=i&&(null==n?n=new mxRectangle(i.x,i.y,i.width,i.height):n.add(i))}return n},mxGraphView.prototype.setCurrentRoot=function(e){if(this.currentRoot!=e){var n=new mxCurrentRootChange(this,e);n.execute();var t=new mxUndoableEdit(this,!1);t.add(n),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",t)),this.graph.sizeDidChange()}return e},mxGraphView.prototype.scaleAndTranslate=function(e,n,t){var a=this.scale,i=new mxPoint(this.translate.x,this.translate.y);this.scale==e&&this.translate.x==n&&this.translate.y==t||(this.scale=e,this.translate.x=n,this.translate.y=t,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE_AND_TRANSLATE,"scale",e,"previousScale",a,"translate",this.translate,"previousTranslate",i))},mxGraphView.prototype.getScale=function(){return this.scale},mxGraphView.prototype.setScale=function(e){var n=this.scale;this.scale!=e&&(this.scale=e,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE,"scale",e,"previousScale",n))},mxGraphView.prototype.getTranslate=function(){return this.translate},mxGraphView.prototype.setTranslate=function(e,n){var t=new mxPoint(this.translate.x,this.translate.y);this.translate.x==e&&this.translate.y==n||(this.translate.x=e,this.translate.y=n,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.TRANSLATE,"translate",this.translate,"previousTranslate",t))},mxGraphView.prototype.refresh=function(){null!=this.currentRoot&&this.clear(),this.revalidate()},mxGraphView.prototype.revalidate=function(){this.invalidate(),this.validate()},mxGraphView.prototype.clear=function(e,n,t){var a=this.graph.getModel();if(e=e||a.getRoot(),n=null!=n&&n,t=null==t||t,this.removeState(e),t&&(n||e!=this.currentRoot)){t=a.getChildCount(e);for(var i=0;i<t;i++)this.clear(a.getChildAt(e,i),n)}else this.invalidate(e)},mxGraphView.prototype.invalidate=function(e,n,t,a){var i=this.graph.getModel();if(e=e||i.getRoot(),n=null==n||n,t=null==t||t,a=null!=a&&a,null!=(o=this.getState(e))&&(o.invalid=!0,a&&(o.orderChanged=!0)),n)for(var s=i.getChildCount(e),o=0;o<s;o++){var r=i.getChildAt(e,o);this.invalidate(r,n,t,a)}if(t)for(a=i.getEdgeCount(e),o=0;o<a;o++)this.invalidate(i.getEdgeAt(e,o),n,t)},mxGraphView.prototype.validate=function(e){var n=mxLog.enter("mxGraphView.validate");window.status=mxResources.get(this.updatingDocumentResource)||this.updatingDocumentResource;var t=null;if(this.optimizeVmlReflows&&null!=this.canvas&&null==this.textDiv&&(8==document.documentMode||mxClient.IS_QUIRKS)){t=this.canvas.style.display,this.canvas.style.display="none";var a=document.createElement("div");a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",document.body.appendChild(a),this.textDiv=a}e=e||(null!=this.currentRoot?this.currentRoot:this.graph.getModel().getRoot()),this.validateBounds(null,e),null==(e=this.validatePoints(null,e))&&(e=new mxRectangle),this.setGraphBounds(e),this.validateBackground(),null!=t&&(this.canvas.style.display=t,document.body.removeChild(this.textDiv),this.textDiv=null),window.status=mxResources.get(this.doneResource)||this.doneResource,mxLog.leave("mxGraphView.validate",n)},mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,"white","black")},mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);this.graph.pageVisible?(n=this.getBackgroundPageBounds(),null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=this.graph.dialect,this.backgroundPageShape.init(this.backgroundPane),this.backgroundPageShape.redraw(),mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw())):null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.graph.pageFormat,n=this.scale*this.graph.pageScale;return new mxRectangle(this.scale*this.translate.x,this.scale*this.translate.y,e.width*n,e.height*n)},mxGraphView.prototype.redrawBackgroundImage=function(e,n){e.scale=this.scale,e.bounds.x=this.scale*this.translate.x,e.bounds.y=this.scale*this.translate.y,e.bounds.width=this.scale*n.width,e.bounds.height=this.scale*n.height,e.redraw()},mxGraphView.prototype.validateBounds=function(e,n){var t=this.graph.getModel(),a=this.getState(n,!0);if(null!=a&&a.invalid){if(this.graph.isCellVisible(n)){if(n!=this.currentRoot&&null!=e)if(a.absoluteOffset.x=0,a.absoluteOffset.y=0,a.origin.x=e.origin.x,a.origin.y=e.origin.y,null!=(s=this.graph.getCellGeometry(n))){if(!t.isEdge(n)){var i=s.offset||this.EMPTY_POINT;s.relative?(a.origin.x+=s.x*e.width/this.scale+i.x,a.origin.y+=s.y*e.height/this.scale+i.y):(a.absoluteOffset.x=this.scale*i.x,a.absoluteOffset.y=this.scale*i.y,a.origin.x+=s.x,a.origin.y+=s.y)}if(a.x=this.scale*(this.translate.x+a.origin.x),a.y=this.scale*(this.translate.y+a.origin.y),a.width=this.scale*s.width,a.height=this.scale*s.height,t.isVertex(n)){if(s.relative&&0!=(i=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"))){var s=Math.cos(i),o=(i=Math.sin(i),new mxPoint(a.getCenterX(),a.getCenterY())),r=new mxPoint(e.getCenterX(),e.getCenterY());s=mxUtils.getRotatedPoint(o,s,i,r);a.x=s.x-a.width/2,a.y=s.y-a.height/2}this.updateVertexLabelOffset(a)}}}else this.removeState(n);null!=(i=this.graph.getChildOffsetForCell(n))&&(a.origin.x+=i.x,a.origin.y+=i.y)}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),i=0;i<s;i++)o=t.getChildAt(n,i),this.validateBounds(a,o)},mxGraphView.prototype.updateVertexLabelOffset=function(e){var n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);n==mxConstants.ALIGN_LEFT?e.absoluteOffset.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(e.absoluteOffset.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?e.absoluteOffset.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(e.absoluteOffset.y+=e.height)},mxGraphView.prototype.validatePoints=function(e,n){var t=this.graph.getModel(),a=this.getState(n),i=null;if(null!=a){if(a.invalid){var s=this.graph.getCellGeometry(n);if(null!=s&&t.isEdge(n)){var o=this.getState(this.getVisibleTerminal(n,!0));if(a.setVisibleTerminalState(o,!0),null!=o&&t.isEdge(o.cell)&&!t.isAncestor(o.cell,n)){var r=this.getState(t.getParent(o.cell));this.validatePoints(r,o.cell)}var l=this.getState(this.getVisibleTerminal(n,!1));a.setVisibleTerminalState(l,!1),null!=l&&t.isEdge(l.cell)&&!t.isAncestor(l.cell,n)&&(r=this.getState(t.getParent(l.cell)),this.validatePoints(r,l.cell)),this.updateFixedTerminalPoints(a,o,l),this.updatePoints(a,s.points,o,l),this.updateFloatingTerminalPoints(a,o,l),this.updateEdgeBounds(a),this.updateEdgeLabelOffset(a)}else null!=s&&s.relative&&null!=e&&t.isEdge(e.cell)&&(null!=(s=this.getPoint(e,s))&&(a.x=s.x,a.y=s.y,s.x=s.x/this.scale-this.translate.x,s.y=s.y/this.scale-this.translate.y,a.origin=s,this.childMoved(e,a)));a.invalid=!1,n!=this.currentRoot&&this.graph.cellRenderer.redraw(a,!1,this.isRendering())}(t.isEdge(n)||t.isVertex(n))&&(null!=a.shape&&null!=a.shape.boundingBox&&(i=a.shape.boundingBox.clone()),null!=a.text&&!this.graph.isLabelClipped(a.cell)&&null!=a.text.boundingBox&&(null!=i?i.add(a.text.boundingBox):i=a.text.boundingBox.clone()))}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),o=0;o<s;o++)r=t.getChildAt(n,o),null!=(r=this.validatePoints(a,r))&&(null==i?i=r:i.add(r));return i},mxGraphView.prototype.childMoved=function(e,n){var t=n.cell;if(!this.graph.isCellCollapsed(t)||t==this.currentRoot)for(var a=this.graph.getModel(),i=a.getChildCount(t),s=0;s<i;s++)this.validateBounds(n,a.getChildAt(t,s))},mxGraphView.prototype.updateFixedTerminalPoints=function(e,n,t){this.updateFixedTerminalPoint(e,n,!0,this.graph.getConnectionConstraint(e,n,!0)),this.updateFixedTerminalPoint(e,t,!1,this.graph.getConnectionConstraint(e,t,!1))},mxGraphView.prototype.updateFixedTerminalPoint=function(e,n,t,a){var i=null;if(null!=a&&(i=this.graph.getConnectionPoint(n,a)),null==i&&null==n){n=this.scale,a=this.translate;var s=e.origin;null!=(i=this.graph.getCellGeometry(e.cell).getTerminalPoint(t))&&(i=new mxPoint(n*(a.x+i.x+s.x),n*(a.y+i.y+s.y)))}e.setAbsoluteTerminalPoint(i,t)},mxGraphView.prototype.updatePoints=function(e,n,t,a){if(null!=e){var i=[];i.push(e.absolutePoints[0]);var s=this.getEdgeStyle(e,n,t,a);if(null!=s)s(e,t=this.getTerminalPort(e,t,!0),a=this.getTerminalPort(e,a,!1),n,i);else if(null!=n)for(s=0;s<n.length;s++)null!=n[s]&&(a=mxUtils.clone(n[s]),i.push(this.transformControlPoint(e,a)));n=e.absolutePoints,i.push(n[n.length-1]),e.absolutePoints=i}},mxGraphView.prototype.transformControlPoint=function(e,n){var t=e.origin;return new mxPoint(this.scale*(n.x+this.translate.x+t.x),this.scale*(n.y+this.translate.y+t.y))},mxGraphView.prototype.getEdgeStyle=function(e,n,t,a){return"string"==typeof(e=null!=t&&t==a?mxUtils.getValue(e.style,mxConstants.STYLE_LOOP,this.graph.defaultLoopStyle):mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,!1)?null:e.style[mxConstants.STYLE_EDGE])&&(null==(n=mxStyleRegistry.getValue(e))&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n),"function"==typeof e?e:null},mxGraphView.prototype.updateFloatingTerminalPoints=function(e,n,t){var a=e.absolutePoints,i=a[0];null==a[a.length-1]&&null!=t&&this.updateFloatingTerminalPoint(e,t,n,!1),null==i&&null!=n&&this.updateFloatingTerminalPoint(e,n,t,!0)},mxGraphView.prototype.updateFloatingTerminalPoint=function(e,n,t,a){n=this.getTerminalPort(e,n,a);var i=this.getNextPoint(e,t,a),s=this.graph.isOrthogonal(e);t=mxUtils.toRadians(Number(n.style[mxConstants.STYLE_ROTATION]||"0"));var o=new mxPoint(n.getCenterX(),n.getCenterY());if(0!=t){var r=Math.cos(-t),l=Math.sin(-t);i=mxUtils.getRotatedPoint(i,r,l,o)}r=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0),r+=parseFloat(e.style[a?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0),n=this.getPerimeterPoint(n,i,0==t&&s,r),0!=t&&(r=Math.cos(t),l=Math.sin(t),n=mxUtils.getRotatedPoint(n,r,l,o)),e.setAbsoluteTerminalPoint(n,a)},mxGraphView.prototype.getTerminalPort=function(e,n,t){return null!=(e=mxUtils.getValue(e.style,t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT))&&(null!=(e=this.getState(this.graph.getModel().getCell(e)))&&(n=e)),n},mxGraphView.prototype.getPerimeterPoint=function(e,n,t,a){var i=null;if(null!=e){var s=this.getPerimeterFunction(e);null!=s&&null!=n&&(0<(a=this.getPerimeterBounds(e,a)).width||0<a.height)&&(i=s(a,e,n,t)),null==i&&(i=this.getPoint(e))}return i},mxGraphView.prototype.getRoutingCenterX=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_X])||0;return e.getCenterX()+n*e.width},mxGraphView.prototype.getRoutingCenterY=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0;return e.getCenterY()+n*e.height},mxGraphView.prototype.getPerimeterBounds=function(e,n){return n=null!=n?n:0,null!=e&&(n+=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0)),e.getPerimeterBounds(n*this.scale)},mxGraphView.prototype.getPerimeterFunction=function(e){if("string"==typeof(e=e.style[mxConstants.STYLE_PERIMETER])){var n=mxStyleRegistry.getValue(e);null==n&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n}return"function"==typeof e?e:null},mxGraphView.prototype.getNextPoint=function(e,n,t){var a=null;return null!=(e=e.absolutePoints)&&(t||2<e.length||null==n)&&(a=e.length,a=e[t?Math.min(1,a-1):Math.max(0,a-2)]),null==a&&null!=n&&(a=new mxPoint(n.getCenterX(),n.getCenterY())),a},mxGraphView.prototype.getVisibleTerminal=function(e,n){for(var t=this.graph.getModel(),a=t.getTerminal(e,n),i=a;null!=a&&a!=this.currentRoot;)this.graph.isCellVisible(i)&&!this.graph.isCellCollapsed(a)||(i=a),a=t.getParent(a);return t.getParent(i)==t.getRoot()&&(i=null),i},mxGraphView.prototype.updateEdgeBounds=function(e){var n=e.absolutePoints;if(e.length=0,null!=n&&0<n.length){var t=n[0],a=n[n.length-1];if(null==t||null==a)e.cell!=this.currentRoot&&this.clear(e.cell,!0);else{if(t.x!=a.x||t.y!=a.y){var i=a.x-t.x,s=a.y-t.y;e.terminalDistance=Math.sqrt(i*i+s*s)}else e.terminalDistance=0;a=0;var o=[];if(null!=(s=t)){t=s.x;for(var r=s.y,l=t,d=r,c=1;c<n.length;c++){var m=n[c];null!=m&&(i=s.x-m.x,s=s.y-m.y,i=Math.sqrt(i*i+s*s),o.push(i),a+=i,s=m,t=Math.min(s.x,t),r=Math.min(s.y,r),l=Math.max(s.x,l),d=Math.max(s.y,d))}e.length=a,e.segments=o,e.x=t,e.y=r,e.width=Math.max(1,l-t),e.height=Math.max(1,d-r)}}}},mxGraphView.prototype.getPoint=function(e,n){var t=e.getCenterX(),a=e.getCenterY();if(null==e.segments||null!=n&&!n.relative)null!=n&&(null!=(d=n.offset)&&(t+=d.x,a+=d.y));else{for(var i=e.absolutePoints.length,s=(.5+(null!=n?n.x/2:0))*e.length,o=e.segments[0],r=0,l=1;r+o<s&&l<i-1;)r+=o,o=e.segments[l++];if(i=0==o?0:(s-r)/o,s=e.absolutePoints[l-1],l=e.absolutePoints[l],null!=s&&null!=l){if(r=t=a=0,null!=n){a=n.y;var d=n.offset;null!=d&&(t=d.x,r=d.y)}d=l.x-s.x,l=l.y-s.y,t=s.x+d*i+((0==o?0:l/o)*a+t)*this.scale,a=s.y+l*i-((0==o?0:d/o)*a-r)*this.scale}}return new mxPoint(t,a)},mxGraphView.prototype.getRelativePoint=function(e,n,t){if(null!=(i=this.graph.getModel().getGeometry(e.cell))){var a=e.absolutePoints.length;if(i.relative&&1<a){for(var i=e.length,s=e.segments,o=e.absolutePoints[0],r=e.absolutePoints[1],l=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t),d=0,c=0,m=0,u=2;u<a;u++)c+=s[u-2],r=e.absolutePoints[u],(o=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t))<=l&&(l=o,d=u-1,m=c),o=r;return a=s[d],o=e.absolutePoints[d],l=(r=e.absolutePoints[d+1]).x,s=r.y,s=(l=(e=o.x-l)-(l=n-l))*e+(s=(d=o.y-s)-(s=t-s))*d,a<(e=Math.sqrt(s<=0?0:s*s/(e*e+d*d)))&&(e=a),a=Math.sqrt(mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t)),-1==mxUtils.relativeCcw(o.x,o.y,r.x,r.y,n,t)&&(a=-a),new mxPoint((i/2-m-e)/i*-2,a/this.scale)}}return new mxPoint},mxGraphView.prototype.updateEdgeLabelOffset=function(e){var n=e.absolutePoints;if(e.absoluteOffset.x=e.getCenterX(),e.absoluteOffset.y=e.getCenterY(),null!=n&&0<n.length&&null!=e.segments)if((i=this.graph.getCellGeometry(e.cell)).relative){null!=(t=this.getPoint(e,i))&&(e.absoluteOffset=t)}else{var t=n[0],a=n[n.length-1];if(null!=t&&null!=a){n=a.x-t.x;var i,s=a.y-t.y,o=a=0;null!=(i=i.offset)&&(a=i.x,o=i.y),i=t.y+s/2+o*this.scale,e.absoluteOffset.x=t.x+n/2+a*this.scale,e.absoluteOffset.y=i}}},mxGraphView.prototype.getState=function(e,n){n=n||!1;var t=null;return null!=e&&(t=this.states.get(e),this.graph.isCellVisible(e)&&(null==t&&n&&this.graph.isCellVisible(e)?(t=this.createState(e),this.states.put(e,t)):n&&null!=t&&this.updateStyle&&(t.style=this.graph.getCellStyle(e)))),t},mxGraphView.prototype.isRendering=function(){return this.rendering},mxGraphView.prototype.setRendering=function(e){this.rendering=e},mxGraphView.prototype.isAllowEval=function(){return this.allowEval},mxGraphView.prototype.setAllowEval=function(e){this.allowEval=e},mxGraphView.prototype.getStates=function(){return this.states},mxGraphView.prototype.setStates=function(e){this.states=e},mxGraphView.prototype.getCellStates=function(e){if(null==e)return this.states;for(var n=[],t=0;t<e.length;t++){var a=this.getState(e[t]);null!=a&&n.push(a)}return n},mxGraphView.prototype.removeState=function(e){var n=null;return null!=e&&(null!=(n=this.states.remove(e))&&(this.graph.cellRenderer.destroy(n),n.destroy())),n},mxGraphView.prototype.createState=function(e){var n=this.graph.getCellStyle(e);return e=new mxCellState(this,e,n),this.graph.cellRenderer.initialize(e,this.isRendering()),e},mxGraphView.prototype.getCanvas=function(){return this.canvas},mxGraphView.prototype.getBackgroundPane=function(){return this.backgroundPane},mxGraphView.prototype.getDrawPane=function(){return this.drawPane},mxGraphView.prototype.getOverlayPane=function(){return this.overlayPane},mxGraphView.prototype.isContainerEvent=function(e){return(e=mxEvent.getSource(e))==this.graph.container||e.parentNode==this.backgroundPane||null!=e.parentNode&&e.parentNode.parentNode==this.backgroundPane||e==this.canvas.parentNode||e==this.canvas||e==this.backgroundPane||e==this.drawPane||e==this.overlayPane},mxGraphView.prototype.isScrollEvent=function(e){var n=mxUtils.getOffset(this.graph.container);e=new mxPoint(e.clientX-n.x,e.clientY-n.y);n=this.graph.container.offsetWidth;var t=this.graph.container.clientWidth;return t<n&&e.x>t+2&&e.x<=n||(n=this.graph.container.offsetHeight,(t=this.graph.container.clientHeight)<n&&e.y>t+2&&e.y<=n)},mxGraphView.prototype.init=function(){this.installListeners();var e=this.graph;e.dialect==mxConstants.DIALECT_SVG?this.createSvg():e.dialect==mxConstants.DIALECT_VML?this.createVml():this.createHtml()},mxGraphView.prototype.installListeners=function(){var a=this.graph,i=a.container;if(null!=i){mxEvent.addGestureListeners(i,mxUtils.bind(this,function(e){mxClient.IS_TOUCH&&a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),this.isContainerEvent(e)&&(!mxClient.IS_IE&&!mxClient.IS_GC&&!mxClient.IS_OP&&!mxClient.IS_SF||!this.isScrollEvent(e))&&a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))})),mxEvent.addListener(i,"dblclick",mxUtils.bind(this,function(e){a.dblClick(e)}));a.addMouseListener({mouseDown:function(e,n){a.panningHandler.hideMenu()},mouseMove:function(){},mouseUp:function(){}}),this.moveHandler=mxUtils.bind(this,function(e){var n,t;null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide(),this.captureDocumentGesture&&a.isMouseDown&&!mxEvent.isConsumed(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,(n=e,t=null,mxClient.IS_TOUCH&&(t=mxEvent.getClientX(n),n=mxEvent.getClientY(n),n=mxUtils.convertPoint(i,t,n),t=a.view.getState(a.getCellAt(n.x,n.y))),t)))}),this.endHandler=mxUtils.bind(this,function(e){this.captureDocumentGesture&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}),mxEvent.addGestureListeners(document,null,this.moveHandler,this.endHandler)}},mxGraphView.prototype.createHtml=function(){var e=this.graph.container;null!=e&&(this.canvas=this.createHtmlPane("100%","100%"),this.backgroundPane=this.createHtmlPane("1px","1px"),this.drawPane=this.createHtmlPane("1px","1px"),this.overlayPane=this.createHtmlPane("1px","1px"),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas),mxClient.IS_QUIRKS&&(e=mxUtils.bind(this,function(e){e=this.getGraphBounds(),this.updateHtmlCanvasSize(e.x+e.width+this.graph.border,e.y+e.height+this.graph.border)}),mxEvent.addListener(window,"resize",e)))},mxGraphView.prototype.updateHtmlCanvasSize=function(e,n){if(null!=this.graph.container){var t=this.graph.container.offsetHeight;this.canvas.style.width=this.graph.container.offsetWidth<e?e+"px":"100%",this.canvas.style.height=t<n?n+"px":"100%"}},mxGraphView.prototype.createHtmlPane=function(e,n){var t=document.createElement("DIV");return null!=e&&null!=n?(t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e,t.style.height=n):t.style.position="relative",t},mxGraphView.prototype.createVml=function(){var e=this.graph.container;if(null!=e){var n=e.offsetWidth,t=e.offsetHeight;this.canvas=this.createVmlPane(n,t),this.backgroundPane=this.createVmlPane(n,t),this.drawPane=this.createVmlPane(n,t),this.overlayPane=this.createVmlPane(n,t),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas)}},mxGraphView.prototype.createVmlPane=function(e,n){var t=document.createElement(mxClient.VML_PREFIX+":group");return t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e+"px",t.style.height=n+"px",t.setAttribute("coordsize",e+","+n),t.setAttribute("coordorigin","0,0"),t},mxGraphView.prototype.createSvg=function(){var e=this.graph.container;this.canvas=document.createElementNS(mxConstants.NS_SVG,"g"),this.backgroundPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.backgroundPane),this.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.drawPane),this.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.overlayPane);var n=document.createElementNS(mxConstants.NS_SVG,"svg");n.style.width="100%",n.style.height="100%",n.style.display="block",n.appendChild(this.canvas),null!=e&&(e.appendChild(n),"static"==mxUtils.getCurrentStyle(e).position&&(e.style.position="relative"))},mxGraphView.prototype.destroy=function(){var e=null!=this.canvas?this.canvas.ownerSVGElement:null;null==e&&(e=this.canvas),null!=e&&null!=e.parentNode&&(this.clear(this.currentRoot,!0),mxEvent.removeGestureListeners(document,null,this.moveHandler,this.endHandler),mxEvent.release(this.graph.container),e.parentNode.removeChild(e),this.overlayPane=this.drawPane=this.backgroundPane=this.canvas=this.endHandler=this.moveHandler=null)},mxCurrentRootChange.prototype.execute=function(){var e=this.view.currentRoot;this.view.currentRoot=this.previous,this.previous=e,null!=(e=this.view.graph.getTranslateForRoot(this.view.currentRoot))&&(this.view.translate=new mxPoint(-e.x,-e.y)),this.view.fireEvent(new mxEventObject(this.isUp?mxEvent.UP:mxEvent.DOWN,"root",this.view.currentRoot,"previous",this.previous)),this.isUp?(this.view.clear(this.view.currentRoot,!0),this.view.validate()):this.view.refresh(),this.isUp=!this.isUp},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/graph"),mxGraph.prototype=new mxEventSource,mxGraph.prototype.constructor=mxGraph,mxGraph.prototype.EMPTY_ARRAY=[],mxGraph.prototype.mouseListeners=null,mxGraph.prototype.isMouseDown=!1,mxGraph.prototype.model=null,mxGraph.prototype.view=null,mxGraph.prototype.stylesheet=null,mxGraph.prototype.selectionModel=null,mxGraph.prototype.cellEditor=null,mxGraph.prototype.cellRenderer=null,mxGraph.prototype.multiplicities=null,mxGraph.prototype.renderHint=null,mxGraph.prototype.dialect=null,mxGraph.prototype.gridSize=10,mxGraph.prototype.gridEnabled=!0,mxGraph.prototype.portsEnabled=!0,mxGraph.prototype.doubleTapEnabled=!0,mxGraph.prototype.doubleTapTimeout=700,mxGraph.prototype.doubleTapTolerance=25,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchTime=0,mxGraph.prototype.gestureEnabled=!0,mxGraph.prototype.tolerance=4,mxGraph.prototype.defaultOverlap=.5,mxGraph.prototype.defaultParent=null,mxGraph.prototype.alternateEdgeStyle=null,mxGraph.prototype.backgroundImage=null,mxGraph.prototype.pageVisible=!1,mxGraph.prototype.pageBreaksVisible=!1,mxGraph.prototype.pageBreakColor="gray",mxGraph.prototype.pageBreakDashed=!0,mxGraph.prototype.minPageBreakDist=20,mxGraph.prototype.preferPageSize=!1,mxGraph.prototype.pageFormat=mxConstants.PAGE_FORMAT_A4_PORTRAIT,mxGraph.prototype.pageScale=1.5,mxGraph.prototype.enabled=!0,mxGraph.prototype.escapeEnabled=!0,mxGraph.prototype.invokesStopCellEditing=!0,mxGraph.prototype.enterStopsCellEditing=!1,mxGraph.prototype.useScrollbarsForPanning=!0,mxGraph.prototype.exportEnabled=!0,mxGraph.prototype.importEnabled=!0,mxGraph.prototype.cellsLocked=!1,mxGraph.prototype.cellsCloneable=!0,mxGraph.prototype.foldingEnabled=!0,mxGraph.prototype.cellsEditable=!0,mxGraph.prototype.cellsDeletable=!0,mxGraph.prototype.cellsMovable=!0,mxGraph.prototype.edgeLabelsMovable=!0,mxGraph.prototype.vertexLabelsMovable=!1,mxGraph.prototype.dropEnabled=!1,mxGraph.prototype.splitEnabled=!0,mxGraph.prototype.cellsResizable=!0,mxGraph.prototype.cellsBendable=!0,mxGraph.prototype.cellsSelectable=!0,mxGraph.prototype.cellsDisconnectable=!0,mxGraph.prototype.autoSizeCells=!1,mxGraph.prototype.autoScroll=!0,mxGraph.prototype.timerAutoScroll=!1,mxGraph.prototype.allowAutoPanning=!1,mxGraph.prototype.ignoreScrollbars=!1,mxGraph.prototype.autoExtend=!0,mxGraph.prototype.maximumGraphBounds=null,mxGraph.prototype.minimumGraphSize=null,mxGraph.prototype.minimumContainerSize=null,mxGraph.prototype.maximumContainerSize=null,mxGraph.prototype.resizeContainer=!1,mxGraph.prototype.border=0,mxGraph.prototype.ordered=!0,mxGraph.prototype.keepEdgesInForeground=!1,mxGraph.prototype.keepEdgesInBackground=!0,mxGraph.prototype.allowNegativeCoordinates=!0,mxGraph.prototype.constrainChildren=!0,mxGraph.prototype.extendParents=!0,mxGraph.prototype.extendParentsOnAdd=!0,mxGraph.prototype.collapseToPreferredSize=!0,mxGraph.prototype.zoomFactor=1.2,mxGraph.prototype.keepSelectionVisibleOnZoom=!1,mxGraph.prototype.centerZoom=!0,mxGraph.prototype.resetViewOnRootChange=!0,mxGraph.prototype.resetEdgesOnResize=!1,mxGraph.prototype.resetEdgesOnMove=!1,mxGraph.prototype.resetEdgesOnConnect=!0,mxGraph.prototype.allowLoops=!1,mxGraph.prototype.defaultLoopStyle=mxEdgeStyle.Loop,mxGraph.prototype.multigraph=!0,mxGraph.prototype.connectableEdges=!1,mxGraph.prototype.allowDanglingEdges=!0,mxGraph.prototype.cloneInvalidEdges=!1,mxGraph.prototype.disconnectOnMove=!0,mxGraph.prototype.labelsVisible=!0,mxGraph.prototype.htmlLabels=!1,mxGraph.prototype.swimlaneSelectionEnabled=!0,mxGraph.prototype.swimlaneNesting=!0,mxGraph.prototype.swimlaneIndicatorColorAttribute=mxConstants.STYLE_FILLCOLOR,mxGraph.prototype.imageBundles=null,mxGraph.prototype.minFitScale=.1,mxGraph.prototype.maxFitScale=8,mxGraph.prototype.panDx=0,mxGraph.prototype.panDy=0,mxGraph.prototype.collapsedImage=new mxImage(mxClient.imageBasePath+"/collapsed.gif",9,9),mxGraph.prototype.expandedImage=new mxImage(mxClient.imageBasePath+"/expanded.gif",9,9),mxGraph.prototype.warningImage=new mxImage("/assets/plugins/mxgraph/images/warning.gif",16,16),mxGraph.prototype.alreadyConnectedResource="none"!=mxClient.language?"alreadyConnected":"",mxGraph.prototype.containsValidationErrorsResource="none"!=mxClient.language?"containsValidationErrors":"",mxGraph.prototype.collapseExpandResource="none"!=mxClient.language?"collapse-expand":"",mxGraph.prototype.init=function(e){this.container=e,this.cellEditor=this.createCellEditor(),this.view.init(),this.sizeDidChange(),mxClient.IS_IE&&(mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})),mxEvent.addListener(e,"selectstart",mxUtils.bind(this,function(){return this.isEditing()}))),8==document.documentMode&&e.insertAdjacentHTML("beforeend",'<v:group style="DISPLAY: none;"></v:group>')},mxGraph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)},mxGraph.prototype.createStylesheet=function(){return new mxStylesheet},mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)},mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer},mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)},mxGraph.prototype.getModel=function(){return this.model},mxGraph.prototype.getView=function(){return this.view},mxGraph.prototype.getStylesheet=function(){return this.stylesheet},mxGraph.prototype.setStylesheet=function(e){this.stylesheet=e},mxGraph.prototype.getSelectionModel=function(){return this.selectionModel},mxGraph.prototype.setSelectionModel=function(e){this.selectionModel=e},mxGraph.prototype.getSelectionCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a.constructor!=mxRootChange){var i=null;a instanceof mxChildChange&&null==a.previous?i=a.child:null!=a.cell&&a.cell instanceof mxCell&&(i=a.cell),null!=i&&mxUtils.indexOf(n,i)<0&&n.push(i)}}return this.getModel().getTopmostCells(n)},mxGraph.prototype.graphModelChanged=function(e){for(var n=0;n<e.length;n++)this.processChange(e[n]);this.removeSelectionCells(this.getRemovedCellsForChanges(e)),this.view.validate(),this.sizeDidChange()},mxGraph.prototype.getRemovedCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a instanceof mxRootChange)break;a instanceof mxChildChange?null!=a.previous&&null==a.parent&&(n=n.concat(this.model.getDescendants(a.child))):a instanceof mxVisibleChange&&(n=n.concat(this.model.getDescendants(a.cell)))}return n},mxGraph.prototype.processChange=function(e){if(e instanceof mxRootChange)this.clearSelection(),this.removeStateForCell(e.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(e instanceof mxChildChange){var n=this.model.getParent(e.child);null!=n?this.view.invalidate(e.child,!0,!1,null!=e.previous):(this.removeStateForCell(e.child),this.view.currentRoot==e.child&&this.home()),n!=e.previous&&(null!=n&&this.view.invalidate(n,!1,!1),null!=e.previous&&this.view.invalidate(e.previous,!1,!1))}else e instanceof mxTerminalChange||e instanceof mxGeometryChange?this.view.invalidate(e.cell):e instanceof mxValueChange?this.view.invalidate(e.cell,!1,!1):e instanceof mxStyleChange?(this.view.invalidate(e.cell,!0,!0,!1),this.view.removeState(e.cell)):null!=e.cell&&e.cell instanceof mxCell&&this.removeStateForCell(e.cell)},mxGraph.prototype.removeStateForCell=function(e){for(var n=this.model.getChildCount(e),t=0;t<n;t++)this.removeStateForCell(this.model.getChildAt(e,t));this.view.removeState(e)},mxGraph.prototype.addCellOverlay=function(e,n){null==e.overlays&&(e.overlays=[]),e.overlays.push(n);var t=this.view.getState(e);return null!=t&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.ADD_OVERLAY,"cell",e,"overlay",n)),n},mxGraph.prototype.getCellOverlays=function(e){return e.overlays},mxGraph.prototype.removeCellOverlay=function(e,n){if(null==n)this.removeCellOverlays(e);else{var t=mxUtils.indexOf(e.overlays,n);0<=t?(e.overlays.splice(t,1),0==e.overlays.length&&(e.overlays=null),null!=(t=this.view.getState(e))&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n))):n=null}return n},mxGraph.prototype.removeCellOverlays=function(e){var n=e.overlays;if(null!=n){e.overlays=null;var t=this.view.getState(e);for(null!=t&&this.cellRenderer.redraw(t),t=0;t<n.length;t++)this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n[t]))}return n},mxGraph.prototype.clearCellOverlays=function(e){e=null!=e?e:this.model.getRoot(),this.removeCellOverlays(e);for(var n=this.model.getChildCount(e),t=0;t<n;t++){var a=this.model.getChildAt(e,t);this.clearCellOverlays(a)}},mxGraph.prototype.setCellWarning=function(t,e,n,a){return null!=e&&0<e.length?(e=new mxCellOverlay(n=null!=n?n:this.warningImage,"<font color=red>"+e+"</font>"),a&&e.addListener(mxEvent.CLICK,mxUtils.bind(this,function(e,n){this.isEnabled()&&this.setSelectionCell(t)})),this.addCellOverlay(t,e)):(this.removeCellOverlays(t),null)},mxGraph.prototype.startEditing=function(e){this.startEditingAtCell(null,e)},mxGraph.prototype.startEditingAtCell=function(e,n){null==e&&(null!=(e=this.getSelectionCell())&&!this.isCellEditable(e)&&(e=null)),null!=e&&(this.fireEvent(new mxEventObject(mxEvent.START_EDITING,"cell",e,"event",n)),this.cellEditor.startEditing(e,n))},mxGraph.prototype.getEditingValue=function(e,n){return this.convertValueToString(e)},mxGraph.prototype.stopEditing=function(e){this.cellEditor.stopEditing(e)},mxGraph.prototype.labelChanged=function(e,n,t){this.model.beginUpdate();try{this.cellLabelChanged(e,n,this.isAutoSizeCell(e)),this.fireEvent(new mxEventObject(mxEvent.LABEL_CHANGED,"cell",e,"value",n,"event",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellLabelChanged=function(e,n,t){this.model.beginUpdate();try{this.model.setValue(e,n),t&&this.cellSizeUpdated(e,!1)}finally{this.model.endUpdate()}},mxGraph.prototype.escape=function(e){this.stopEditing(!0),this.connectionHandler.reset(),this.graphHandler.reset(),e=this.getSelectionCells();for(var n=0;n<e.length;n++){var t=this.view.getState(e[n]);null!=t&&null!=t.handler&&t.handler.reset()}},mxGraph.prototype.click=function(e){var n=e.getEvent(),t=e.getCell(),a=new mxEventObject(mxEvent.CLICK,"event",n,"cell",t);e.isConsumed()&&a.consume(),this.fireEvent(a),this.isEnabled()&&!mxEvent.isConsumed(n)&&!a.isConsumed()&&(null!=t?this.selectCellForEvent(t,n):(t=null,this.isSwimlaneSelectionEnabled()&&(t=this.getSwimlaneAt(e.getGraphX(),e.getGraphY())),null!=t?this.selectCellForEvent(t,n):this.isToggleEvent(n)||this.clearSelection()))},mxGraph.prototype.dblClick=function(e,n){var t=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",n);this.fireEvent(t),this.isEnabled()&&!mxEvent.isConsumed(e)&&!t.isConsumed()&&null!=n&&this.isCellEditable(n)&&this.startEditingAtCell(n,e)},mxGraph.prototype.scrollPointToVisible=function(e,n,t,a){if(this.timerAutoScroll||!this.ignoreScrollbars&&!mxUtils.hasScrollbars(this.container))this.allowAutoPanning&&!this.panningHandler.active&&(null==this.panningManager&&(this.panningManager=this.createPanningManager()),this.panningManager.panTo(e+this.panDx,n+this.panDy));else{var i=this.container;if(a=null!=a?a:20,e>=i.scrollLeft&&n>=i.scrollTop&&e<=i.scrollLeft+i.clientWidth&&n<=i.scrollTop+i.clientHeight){var s=i.scrollLeft+i.clientWidth-e;if(s<a){if(e=i.scrollLeft,i.scrollLeft+=a-s,t&&e==i.scrollLeft){if(this.dialect==mxConstants.DIALECT_SVG){e=this.view.getDrawPane().ownerSVGElement;var o=this.container.scrollWidth+a-s}else o=Math.max(i.clientWidth,i.scrollWidth)+a-s,e=this.view.getCanvas();e.style.width=o+"px",i.scrollLeft+=a-s}}else(s=e-i.scrollLeft)<a&&(i.scrollLeft-=a-s);(s=i.scrollTop+i.clientHeight-n)<a?(e=i.scrollTop,i.scrollTop+=a-s,e==i.scrollTop&&t&&(this.dialect==mxConstants.DIALECT_SVG?(e=this.view.getDrawPane().ownerSVGElement,n=this.container.scrollHeight+a-s):(n=Math.max(i.clientHeight,i.scrollHeight)+a-s,e=this.view.getCanvas()),e.style.height=n+"px",i.scrollTop+=a-s)):(s=n-i.scrollTop)<a&&(i.scrollTop-=a-s)}}},mxGraph.prototype.createPanningManager=function(){return new mxPanningManager(this)},mxGraph.prototype.getBorderSizes=function(){function e(e){var n=0;n="thin"==e?2:"medium"==e?4:"thick"==e?6:parseInt(e);return isNaN(n)&&(n=0),n}var n=mxUtils.getCurrentStyle(this.container),t=new mxRectangle;return t.x=e(n.borderLeftWidth)+parseInt(n.paddingLeft||0),t.y=e(n.borderTopWidth)+parseInt(n.paddingTop||0),t.width=e(n.borderRightWidth)+parseInt(n.paddingRight||0),t.height=e(n.borderBottomWidth)+parseInt(n.paddingBottom||0),t},mxGraph.prototype.getPreferredPageSize=function(e,n,t){e=this.view.scale;var a=this.view.translate,i=this.pageFormat,s=e*this.pageScale;i=new mxRectangle(0,0,i.width*s,i.height*s);return n=this.pageBreaksVisible?Math.ceil(n/i.width):1,t=this.pageBreaksVisible?Math.ceil(t/i.height):1,new mxRectangle(0,0,n*i.width+2+a.x/e,t*i.height+2+a.y/e)},mxGraph.prototype.sizeDidChange=function(){var e=this.getGraphBounds();if(null!=this.container){var n=this.getBorder(),t=Math.max(0,e.x+e.width+1+n);n=Math.max(0,e.y+e.height+1+n);if(null!=this.minimumContainerSize&&(t=Math.max(t,this.minimumContainerSize.width),n=Math.max(n,this.minimumContainerSize.height)),this.resizeContainer&&this.doResizeContainer(t,n),this.preferPageSize||!mxClient.IS_IE&&this.pageVisible){var a=this.getPreferredPageSize(e,t,n);null!=a&&(t=a.width,n=a.height)}null!=this.minimumGraphSize&&(t=Math.max(t,this.minimumGraphSize.width*this.view.scale),n=Math.max(n,this.minimumGraphSize.height*this.view.scale)),t=Math.ceil(t-1),n=Math.ceil(n-1),this.dialect==mxConstants.DIALECT_SVG?((a=this.view.getDrawPane().ownerSVGElement).style.minWidth=Math.max(1,t)+"px",a.style.minHeight=Math.max(1,n)+"px",a.style.width="100%",a.style.height="100%"):mxClient.IS_QUIRKS?this.view.updateHtmlCanvasSize(Math.max(1,t),Math.max(1,n)):(this.view.canvas.style.minWidth=Math.max(1,t)+"px",this.view.canvas.style.minHeight=Math.max(1,n)+"px"),this.updatePageBreaks(this.pageBreaksVisible,t-1,n-1)}this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",e))},mxGraph.prototype.doResizeContainer=function(e,n){if(mxClient.IS_IE)if(mxClient.IS_QUIRKS){var t=this.getBorderSizes();e+=Math.max(2,t.x+t.width+1),n+=Math.max(2,t.y+t.height+1)}else 9<=document.documentMode?(e+=3,n+=5):(e+=1,n+=1);else n+=1;null!=this.maximumContainerSize&&(e=Math.min(this.maximumContainerSize.width,e),n=Math.min(this.maximumContainerSize.height,n)),this.container.style.width=Math.ceil(e)+"px",this.container.style.height=Math.ceil(n)+"px"},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale;i=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o);if(e=e&&Math.min(i.width,i.height)>this.minPageBreakDist,i.x=mxUtils.mod(i.x,i.width),i.y=mxUtils.mod(i.y,i.height),s=e?Math.ceil((n-i.x)/i.width):0,e=e?Math.ceil((t-i.y)/i.height):0,null==this.horizontalPageBreaks&&0<s&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(o=0;o<=s;o++){var r=[new mxPoint(i.x+o*i.width,1),new mxPoint(i.x+o*i.width,t)];null!=this.horizontalPageBreaks[o]?(this.horizontalPageBreaks[o].scale=1,this.horizontalPageBreaks[o].points=r,this.horizontalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,this.scale)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.horizontalPageBreaks[o]=r)}for(o=s;o<this.horizontalPageBreaks.length;o++)this.horizontalPageBreaks[o].destroy();this.horizontalPageBreaks.splice(s,this.horizontalPageBreaks.length-s)}if(null==this.verticalPageBreaks&&0<e&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(o=0;o<=e;o++)r=[new mxPoint(1,i.y+o*i.height),new mxPoint(n,i.y+o*i.height)],null!=this.verticalPageBreaks[o]?(this.verticalPageBreaks[o].scale=1,this.verticalPageBreaks[o].points=r,this.verticalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,a)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.verticalPageBreaks[o]=r);for(o=e;o<this.verticalPageBreaks.length;o++)this.verticalPageBreaks[o].destroy();this.verticalPageBreaks.splice(e,this.verticalPageBreaks.length-e)}},mxGraph.prototype.getCellStyle=function(e){var n=this.model.getStyle(e),t=null;t=this.model.isEdge(e)?this.stylesheet.getDefaultEdgeStyle():this.stylesheet.getDefaultVertexStyle();return null!=n&&(t=this.postProcessCellStyle(this.stylesheet.getCellStyle(n,t))),null==t&&(t=mxGraph.prototype.EMPTY_ARRAY),t},mxGraph.prototype.postProcessCellStyle=function(e){if(null!=e){var n=e[mxConstants.STYLE_IMAGE],t=this.getImageFromBundles(n);null!=t?e[mxConstants.STYLE_IMAGE]=t:t=n,null!=t&&"data:image/"==t.substring(0,11)&&(0<(n=t.indexOf(","))&&(t=t.substring(0,n)+";base64,"+t.substring(n+1)),e[mxConstants.STYLE_IMAGE]=t)}return e},mxGraph.prototype.setCellStyle=function(e,n){if(null!=(n=n||this.getSelectionCells())){this.model.beginUpdate();try{for(var t=0;t<n.length;t++)this.model.setStyle(n[t],e)}finally{this.model.endUpdate()}}},mxGraph.prototype.toggleCellStyle=function(e,n,t){t=t||this.getSelectionCell(),this.toggleCellStyles(e,n,[t])},mxGraph.prototype.toggleCellStyles=function(e,n,t){var a;(n=null!=n&&n,null!=(t=t||this.getSelectionCells())&&0<t.length)&&(null!=(a=null!=(a=this.view.getState(t[0]))?a.style:this.getCellStyle(t[0]))&&(n=mxUtils.getValue(a,e,n)?0:1,this.setCellStyles(e,n,t)))},mxGraph.prototype.setCellStyles=function(e,n,t){t=t||this.getSelectionCells(),mxUtils.setCellStyles(this.model,t,e,n)},mxGraph.prototype.toggleCellStyleFlags=function(e,n,t){this.setCellStyleFlags(e,n,null,t)},mxGraph.prototype.setCellStyleFlags=function(e,n,t,a){if(null!=(a=a||this.getSelectionCells())&&0<a.length){var i;if(null==t)null!=(i=null!=(i=this.view.getState(a[0]))?i.style:this.getCellStyle(a[0]))&&(t=(parseInt(i[e]||0)&n)!=n);mxUtils.setCellStyleFlags(this.model,a,e,n,t)}},mxGraph.prototype.alignCells=function(e,n,t){if(null==n&&(n=this.getSelectionCells()),null!=n&&1<n.length){if(null==t)for(var a=0;a<n.length;a++){var i=this.getCellGeometry(n[a]);if(null!=i&&!this.model.isEdge(n[a]))if(null==t){if(e==mxConstants.ALIGN_CENTER){t=i.x+i.width/2;break}if(e==mxConstants.ALIGN_RIGHT)t=i.x+i.width;else if(e==mxConstants.ALIGN_TOP)t=i.y;else{if(e==mxConstants.ALIGN_MIDDLE){t=i.y+i.height/2;break}t=e==mxConstants.ALIGN_BOTTOM?i.y+i.height:i.x}}else t=e==mxConstants.ALIGN_RIGHT?Math.max(t,i.x+i.width):e==mxConstants.ALIGN_TOP?Math.min(t,i.y):e==mxConstants.ALIGN_BOTTOM?Math.max(t,i.y+i.height):Math.min(t,i.x)}if(null!=t){this.model.beginUpdate();try{for(a=0;a<n.length;a++)null!=(i=this.getCellGeometry(n[a]))&&!this.model.isEdge(n[a])&&(i=i.clone(),e==mxConstants.ALIGN_CENTER?i.x=t-i.width/2:e==mxConstants.ALIGN_RIGHT?i.x=t-i.width:e==mxConstants.ALIGN_TOP?i.y=t:e==mxConstants.ALIGN_MIDDLE?i.y=t-i.height/2:e==mxConstants.ALIGN_BOTTOM?i.y=t-i.height:i.x=t,this.model.setGeometry(n[a],i));this.fireEvent(new mxEventObject(mxEvent.ALIGN_CELLS,"align",e,"cells",n))}finally{this.model.endUpdate()}}}return n},mxGraph.prototype.flipEdge=function(e){if(null!=e&&null!=this.alternateEdgeStyle){this.model.beginUpdate();try{var n=this.model.getStyle(e);null==n||0==n.length?this.model.setStyle(e,this.alternateEdgeStyle):this.model.setStyle(e,null),this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.FLIP_EDGE,"edge",e))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.addImageBundle=function(e){this.imageBundles.push(e)},mxGraph.prototype.removeImageBundle=function(e){for(var n=[],t=0;t<this.imageBundles.length;t++)this.imageBundles[t]!=e&&n.push(this.imageBundles[t]);this.imageBundles=n},mxGraph.prototype.getImageFromBundles=function(e){if(null!=e)for(var n=0;n<this.imageBundles.length;n++){var t=this.imageBundles[n].getImage(e);if(null!=t)return t}return null},mxGraph.prototype.orderCells=function(e,n){null==n&&(n=mxUtils.sortCells(this.getSelectionCells(),!0)),this.model.beginUpdate();try{this.cellsOrdered(n,e),this.fireEvent(new mxEventObject(mxEvent.ORDER_CELLS,"back",e,"cells",n))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsOrdered=function(e,n){if(null!=e){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=this.model.getParent(e[t]);n?this.model.add(a,e[t],t):this.model.add(a,e[t],this.model.getChildCount(a)-1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ORDERED,"back",n,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.groupCells=function(e,n,t){null==t&&(t=mxUtils.sortCells(this.getSelectionCells(),!0)),t=this.getCellsForGroup(t),null==e&&(e=this.createGroupCell(t));var a=this.getBoundsForGroup(e,t,n);if(0<t.length&&null!=a){var i=this.model.getParent(e);null==i&&(i=this.model.getParent(t[0])),this.model.beginUpdate();try{null==this.getCellGeometry(e)&&this.model.setGeometry(e,new mxGeometry);var s=this.model.getChildCount(i);this.cellsAdded([e],i,s,null,null,!1),s=this.model.getChildCount(e),this.cellsAdded(t,e,s,null,null,!1,!1),this.cellsMoved(t,-a.x,-a.y,!1,!0),this.cellsResized([e],[a]),this.fireEvent(new mxEventObject(mxEvent.GROUP_CELLS,"group",e,"border",n,"cells",t))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.getCellsForGroup=function(e){var n=[];if(null!=e&&0<e.length){var t=this.model.getParent(e[0]);n.push(e[0]);for(var a=1;a<e.length;a++)this.model.getParent(e[a])==t&&n.push(e[a])}return n},mxGraph.prototype.getBoundsForGroup=function(e,n,t){return null!=(n=this.getBoundingBoxFromGeometry(n))&&(this.isSwimlane(e)&&(e=this.getStartSize(e),n.x-=e.width,n.y-=e.height,n.width+=e.width,n.height+=e.height),n.x-=t,n.y-=t,n.width+=2*t,n.height+=2*t),n},mxGraph.prototype.createGroupCell=function(e){return(e=new mxCell("")).setVertex(!0),e.setConnectable(!1),e},mxGraph.prototype.ungroupCells=function(e){var n=[];if(null==e){e=this.getSelectionCells();for(var t=[],a=0;a<e.length;a++)0<this.model.getChildCount(e[a])&&t.push(e[a]);e=t}if(null!=e&&0<e.length){this.model.beginUpdate();try{for(a=0;a<e.length;a++){if(null!=(i=this.model.getChildren(e[a]))&&0<i.length){var i=i.slice(),s=this.model.getParent(e[a]),o=this.model.getChildCount(s);this.cellsAdded(i,s,o,null,null,!0),n=n.concat(i)}}this.cellsRemoved(this.addAllEdges(e)),this.fireEvent(new mxEventObject(mxEvent.UNGROUP_CELLS,"cells",e))}finally{this.model.endUpdate()}}return n},mxGraph.prototype.removeCellsFromParent=function(e){null==e&&(e=this.getSelectionCells()),this.model.beginUpdate();try{var n=this.getDefaultParent(),t=this.model.getChildCount(n);this.cellsAdded(e,n,t,null,null,!0),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS_FROM_PARENT,"cells",e))}finally{this.model.endUpdate()}return e},mxGraph.prototype.updateGroupBounds=function(e,n,t){null==e&&(e=this.getSelectionCells()),n=null!=n?n:0,t=null!=t&&t,this.model.beginUpdate();try{for(var a=0;a<e.length;a++){if(null!=(r=this.getCellGeometry(e[a]))){var i=this.getChildCells(e[a]);if(null!=i&&0<i.length){var s=this.getBoundingBoxFromGeometry(i);if(0<s.width&&0<s.height){var o=this.isSwimlane(e[a])?this.getStartSize(e[a]):new mxRectangle,r=r.clone();t&&(r.x+=s.x-o.width-n,r.y+=s.y-o.height-n),r.width=s.width+o.width+2*n,r.height=s.height+o.height+2*n,this.model.setGeometry(e[a],r),this.moveCells(i,-s.x+o.width+n,-s.y+o.height+n)}}}}}finally{this.model.endUpdate()}return e},mxGraph.prototype.cloneCells=function(e,n){n=null==n||n;var t=null;if(null!=e){for(var a={},i=(t=[],0);i<e.length;i++){a[s=mxCellPath.create(e[i])]=e[i],t.push(e[i])}if(0<t.length){var s=this.view.scale,o=this.view.translate;for(t=this.model.cloneCells(e,!0),i=0;i<e.length;i++)if(!n&&this.model.isEdge(t[i])&&null!=this.getEdgeValidationError(t[i],this.model.getTerminal(t[i],!0),this.model.getTerminal(t[i],!1)))t[i]=null;else{var r=this.model.getGeometry(t[i]);if(null!=r){var l=this.view.getState(e[i]),d=this.view.getState(this.model.getParent(e[i]));if(null!=l&&null!=d){var c=d.origin.x;d=d.origin.y;if(this.model.isEdge(t[i])){l=l.absolutePoints;for(var m=this.model.getTerminal(e[i],!0),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);for(null==m&&r.setTerminalPoint(new mxPoint(l[0].x/s-o.x,l[0].y/s-o.y),!0),m=this.model.getTerminal(e[i],!1),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);if(null==m&&(m=l.length-1,r.setTerminalPoint(new mxPoint(l[m].x/s-o.x,l[m].y/s-o.y),!1)),null!=(r=r.points))for(l=0;l<r.length;l++)r[l].x+=c,r[l].y+=d}else r.x+=c,r.y+=d}}}}else t=[]}return t},mxGraph.prototype.insertVertex=function(e,n,t,a,i,s,o,r,l){return n=this.createVertex(e,n,t,a,i,s,o,r,l),this.addCell(n,e)},mxGraph.prototype.createVertex=function(e,n,t,a,i,s,o,r,l){return(e=new mxGeometry(a,i,s,o)).relative=null!=l&&l,(t=new mxCell(t,e,r)).setId(n),t.setVertex(!0),t.setConnectable(!0),t},mxGraph.prototype.insertEdge=function(e,n,t,a,i,s){return n=this.createEdge(e,n,t,a,i,s),this.addEdge(n,e,a,i)},mxGraph.prototype.createEdge=function(e,n,t,a,i,s){return(e=new mxCell(t,new mxGeometry,s)).setId(n),e.setEdge(!0),e.geometry.relative=!0,e},mxGraph.prototype.addEdge=function(e,n,t,a,i){return this.addCell(e,n,i,t,a)},mxGraph.prototype.addCell=function(e,n,t,a,i){return this.addCells([e],n,t,a,i)[0]},mxGraph.prototype.addCells=function(e,n,t,a,i){null==n&&(n=this.getDefaultParent()),null==t&&(t=this.model.getChildCount(n)),this.model.beginUpdate();try{this.cellsAdded(e,n,t,a,i,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",e,"parent",n,"index",t,"source",a,"target",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsAdded=function(e,n,t,a,i,s,o){if(null!=e&&null!=n&&null!=t){this.model.beginUpdate();try{for(var r=null!=(d=s?this.view.getState(n):null)?d.origin:null,l=new mxPoint(0,0),d=0;d<e.length;d++)if(null==e[d])t--;else{var c=this.model.getParent(e[d]);if(null!=r&&e[d]!=n&&n!=c){var m=this.view.getState(c),u=null!=m?m.origin:l;if(null!=(p=this.model.getGeometry(e[d]))){var p,g=u.x-r.x,v=u.y-r.y;(p=p.clone()).translate(g,v),!p.relative&&this.model.isVertex(e[d])&&!this.isAllowNegativeCoordinates()&&(p.x=Math.max(0,p.x),p.y=Math.max(0,p.y)),this.model.setGeometry(e[d],p)}}n==c&&t+d>this.model.getChildCount(n)&&t--,this.model.add(n,e[d],t+d),this.isExtendParentsOnAdd()&&this.isExtendParent(e[d])&&this.extendParent(e[d]),(null==o||o)&&this.constrainChild(e[d]),null!=a&&this.cellConnected(e[d],a,!0),null!=i&&this.cellConnected(e[d],i,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",e,"parent",n,"index",t,"source",a,"target",i,"absolute",s))}finally{this.model.endUpdate()}}},mxGraph.prototype.removeCells=function(e,n){n=null==n||n,null==e&&(e=this.getDeletableCells(this.getSelectionCells())),n&&(e=this.getDeletableCells(this.addAllEdges(e))),this.model.beginUpdate();try{this.cellsRemoved(e),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells",e,"includeEdges",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsRemoved=function(e){if(null!=e&&0<e.length){var n=this.view.scale,t=this.view.translate;this.model.beginUpdate();try{for(var a={},i=0;i<e.length;i++){var s=mxCellPath.create(e[i]);a[s]=e[i]}for(i=0;i<e.length;i++){for(var o=this.getConnections(e[i]),r=0;r<o.length;r++)if(null==a[s=mxCellPath.create(o[r])]){if(null!=(d=this.model.getGeometry(o[r]))){var l=this.view.getState(o[r]);if(null!=l){var d=d.clone(),c=l.getVisibleTerminal(!0)==e[i],m=l.absolutePoints,u=c?0:m.length-1;d.setTerminalPoint(new mxPoint(m[u].x/n-t.x,m[u].y/n-t.y),c),this.model.setTerminal(o[r],null,c),this.model.setGeometry(o[r],d)}}}this.model.remove(e[i])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.splitEdge=function(e,n,t,a,i){a=a||0,i=i||0,null==t&&(t=this.cloneCells([e])[0]);var s=this.model.getParent(e),o=this.model.getTerminal(e,!0);this.model.beginUpdate();try{this.cellsMoved(n,a,i,!1,!1),this.cellsAdded(n,s,this.model.getChildCount(s),null,null,!0),this.cellsAdded([t],s,this.model.getChildCount(s),o,n[0],!1),this.cellConnected(e,n[0],!0),this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",e,"cells",n,"newEdge",t,"dx",a,"dy",i))}finally{this.model.endUpdate()}return t},mxGraph.prototype.toggleCells=function(e,n,t){null==n&&(n=this.getSelectionCells()),t&&(n=this.addAllEdges(n)),this.model.beginUpdate();try{this.cellsToggled(n,e),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",e,"cells",n,"includeEdges",t))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsToggled=function(e,n){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++)this.model.setVisible(e[t],n)}finally{this.model.endUpdate()}}},mxGraph.prototype.foldCells=function(e,n,t,a){n=null!=n&&n,null==t&&(t=this.getFoldableCells(this.getSelectionCells(),e)),this.stopEditing(!1),this.model.beginUpdate();try{this.cellsFolded(t,e,n,a),this.fireEvent(new mxEventObject(mxEvent.FOLD_CELLS,"collapse",e,"recurse",n,"cells",t))}finally{this.model.endUpdate()}return t},mxGraph.prototype.cellsFolded=function(e,n,t,a){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var i=0;i<e.length;i++)if((!a||this.isCellFoldable(e[i],n))&&n!=this.isCellCollapsed(e[i])&&(this.model.setCollapsed(e[i],n),this.swapBounds(e[i],n),this.isExtendParent(e[i])&&this.extendParent(e[i]),t)){var s=this.model.getChildren(e[i]);this.foldCells(s,n,t)}this.fireEvent(new mxEventObject(mxEvent.CELLS_FOLDED,"cells",e,"collapse",n,"recurse",t))}finally{this.model.endUpdate()}}},mxGraph.prototype.swapBounds=function(e,n){if(null!=e){var t=this.model.getGeometry(e);null!=t&&(t=t.clone(),this.updateAlternateBounds(e,t,n),t.swap(),this.model.setGeometry(e,t))}},mxGraph.prototype.updateAlternateBounds=function(e,n,t){if(null!=e&&null!=n){if(t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e),null==n.alternateBounds){var a=n;this.collapseToPreferredSize&&(null!=(e=this.getPreferredSizeForCell(e))&&(a=e,0<(e=mxUtils.getValue(t,mxConstants.STYLE_STARTSIZE))&&(a.height=Math.max(a.height,e)))),n.alternateBounds=new mxRectangle(0,0,a.width,a.height)}if(null!=n.alternateBounds){n.alternateBounds.x=n.x,n.alternateBounds.y=n.y;var i=mxUtils.toRadians(t[mxConstants.STYLE_ROTATION]||"0");0!=i&&(e=n.alternateBounds.getCenterX()-n.getCenterX(),t=n.alternateBounds.getCenterY()-n.getCenterY(),a=Math.cos(i),i=Math.sin(i),n.alternateBounds.x+=a*e-i*t-e,n.alternateBounds.y+=i*e+a*t-t)}}},mxGraph.prototype.addAllEdges=function(e){var n=e.slice();return n.concat(this.getAllEdges(e))},mxGraph.prototype.getAllEdges=function(e){var n=[];if(null!=e)for(var t=0;t<e.length;t++){for(var a=this.model.getEdgeCount(e[t]),i=0;i<a;i++)n.push(this.model.getEdgeAt(e[t],i));a=this.model.getChildren(e[t]),n=n.concat(this.getAllEdges(a))}return n},mxGraph.prototype.updateCellSize=function(e,n){n=null!=n&&n,this.model.beginUpdate();try{this.cellSizeUpdated(e,n),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",e,"ignoreChildren",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellSizeUpdated=function(e,n){if(null!=e){this.model.beginUpdate();try{var t=this.getPreferredSizeForCell(e),a=this.model.getGeometry(e);if(null!=t&&null!=a){var i=this.isCellCollapsed(e);a=a.clone();if(this.isSwimlane(e)){var s=this.view.getState(e),o=null!=s?s.style:this.getCellStyle(e),r=this.model.getStyle(e);null==r&&(r=""),mxUtils.getValue(o,mxConstants.STYLE_HORIZONTAL,!0)?(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.height+8),i&&(a.height=t.height+8),a.width=t.width):(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.width+8),i&&(a.width=t.width+8),a.height=t.height),this.model.setStyle(e,r)}else a.width=t.width,a.height=t.height;if(!n&&!i){var l=this.view.getBounds(this.model.getChildren(e));if(null!=l){var d=this.view.translate,c=this.view.scale,m=(l.y+l.height)/c-a.y-d.y;a.width=Math.max(a.width,(l.x+l.width)/c-a.x-d.x),a.height=Math.max(a.height,m)}}this.cellsResized([e],[a])}}finally{this.model.endUpdate()}}},mxGraph.prototype.getPreferredSizeForCell=function(e){var n=null;if(null!=e){var t=this.view.getState(e),a=null!=t?t.style:this.getCellStyle(e);if(null!=a&&!this.model.isEdge(e)){var i=a[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE,s=0;n=0;null==this.getImage(t)&&null==a[mxConstants.STYLE_IMAGE]||a[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(a[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(s+=parseFloat(a[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),a[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&(n+=parseFloat(a[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize)),s+=2*(a[mxConstants.STYLE_SPACING]||0),s+=a[mxConstants.STYLE_SPACING_LEFT]||0,s+=a[mxConstants.STYLE_SPACING_RIGHT]||0,n+=2*(a[mxConstants.STYLE_SPACING]||0),n+=a[mxConstants.STYLE_SPACING_TOP]||0,n+=a[mxConstants.STYLE_SPACING_BOTTOM]||0,null!=(t=this.getFoldingImage(t))&&(s+=t.width+8),n=null!=(t=this.getLabel(e))&&0<t.length?(this.isHtmlLabel(e)||(t=t.replace(/\n/g,"<br>")),e=(i=mxUtils.getSizeForString(t,i,a[mxConstants.STYLE_FONTFAMILY])).width+s,n=i.height+n,mxUtils.getValue(a,mxConstants.STYLE_HORIZONTAL,!0)||(a=n,n=e,e=a),this.gridEnabled&&(e=this.snap(e+this.gridSize/2),n=this.snap(n+this.gridSize/2)),new mxRectangle(0,0,e,n)):new mxRectangle(0,0,a=4*this.gridSize,a)}}return n},mxGraph.prototype.handleGesture=function(e,n){if(.2<Math.abs(1-n.scale)){var t=this.view.scale,a=this.view.translate,i=e.width*n.scale,s=e.height*n.scale,o=e.y-(s-e.height)/2;t=new mxRectangle(this.snap((e.x-(i-e.width)/2)/t)-a.x,this.snap(o/t)-a.y,this.snap(i/t),this.snap(s/t));this.resizeCell(e.cell,t)}},mxGraph.prototype.resizeCell=function(e,n){return this.resizeCells([e],[n])[0]},mxGraph.prototype.resizeCells=function(e,n){this.model.beginUpdate();try{this.cellsResized(e,n),this.fireEvent(new mxEventObject(mxEvent.RESIZE_CELLS,"cells",e,"bounds",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsResized=function(e,n){if(null!=e&&null!=n&&e.length==n.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=n[t],i=this.model.getGeometry(e[t]);if(null!=i&&(i.x!=a.x||i.y!=a.y||i.width!=a.width||i.height!=a.height)){if((i=i.clone()).relative){var s=i.offset;null!=s&&(s.x+=a.x-i.x,s.y+=a.y-i.y)}else i.x=a.x,i.y=a.y;i.width=a.width,i.height=a.height,!i.relative&&this.model.isVertex(e[t])&&!this.isAllowNegativeCoordinates()&&(i.x=Math.max(0,i.x),i.y=Math.max(0,i.y)),this.model.setGeometry(e[t],i),this.isExtendParent(e[t])&&this.extendParent(e[t])}}this.resetEdgesOnResize&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_RESIZED,"cells",e,"bounds",n))}finally{this.model.endUpdate()}}},mxGraph.prototype.extendParent=function(e){if(null!=e){var n=this.model.getParent(e),t=this.model.getGeometry(n);null!=n&&null!=t&&!this.isCellCollapsed(n)&&(null!=(e=this.model.getGeometry(e))&&(t.width<e.x+e.width||t.height<e.y+e.height))&&((t=t.clone()).width=Math.max(t.width,e.x+e.width),t.height=Math.max(t.height,e.y+e.height),this.cellsResized([n],[t]))}},mxGraph.prototype.importCells=function(e,n,t,a,i){return this.moveCells(e,n,t,!0,a,i)},mxGraph.prototype.moveCells=function(e,n,t,a,i,s){if(n=null!=n?n:0,t=null!=t?t:0,a=null!=a&&a,null!=e&&(0!=n||0!=t||a||null!=i)){this.model.beginUpdate();try{a&&(e=this.cloneCells(e,this.isCloneInvalidEdges()),null==i&&(i=this.getDefaultParent()));var o=this.isAllowNegativeCoordinates();if(null!=i&&this.setAllowNegativeCoordinates(!0),this.cellsMoved(e,n,t,!a&&this.isDisconnectOnMove()&&this.isAllowDanglingEdges(),null==i),this.setAllowNegativeCoordinates(o),null!=i){var r=this.model.getChildCount(i);this.cellsAdded(e,i,r,null,null,!0)}this.fireEvent(new mxEventObject(mxEvent.MOVE_CELLS,"cells",e,"dx",n,"dy",t,"clone",a,"target",i,"event",s))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.cellsMoved=function(e,n,t,a,i){if(null!=e&&(0!=n||0!=t)){this.model.beginUpdate();try{a&&this.disconnectGraph(e);for(var s=0;s<e.length;s++)this.translateCell(e[s],n,t),i&&this.constrainChild(e[s]);this.resetEdgesOnMove&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_MOVED,"cells",e,"dx",t,"dy",t,"disconnect",a))}finally{this.model.endUpdate()}}},mxGraph.prototype.translateCell=function(e,n,t){var a=this.model.getGeometry(e);null!=a&&((a=a.clone()).translate(n,t),!a.relative&&this.model.isVertex(e)&&!this.isAllowNegativeCoordinates()&&(a.x=Math.max(0,a.x),a.y=Math.max(0,a.y)),a.relative&&!this.model.isEdge(e)&&(null==a.offset?a.offset=new mxPoint(n,t):(a.offset.x+=n,a.offset.y+=t)),this.model.setGeometry(e,a))},mxGraph.prototype.getCellContainmentArea=function(e){if(null!=e&&!this.model.isEdge(e)){var n=this.model.getParent(e);if(n==this.getDefaultParent()||n==this.getCurrentRoot())return this.getMaximumGraphBounds();if(null!=n&&n!=this.getDefaultParent())if(null!=(i=this.model.getGeometry(n))){var t=e=0,a=i.width,i=i.height;return this.isSwimlane(n)&&(e=(n=this.getStartSize(n)).width,a-=n.width,t=n.height,i-=n.height),new mxRectangle(e,t,a,i)}}return null},mxGraph.prototype.getMaximumGraphBounds=function(){return this.maximumGraphBounds},mxGraph.prototype.constrainChild=function(e){if(null!=e){var n=this.model.getGeometry(e),t=this.isConstrainChild(e)?this.getCellContainmentArea(e):this.getMaximumGraphBounds();null!=n&&null!=t&&!n.relative&&(n.x<t.x||n.y<t.y||t.width<n.x+n.width||t.height<n.y+n.height)&&(e=this.getOverlap(e),0<t.width&&(n.x=Math.min(n.x,t.x+t.width-(1-e)*n.width)),0<t.height&&(n.y=Math.min(n.y,t.y+t.height-(1-e)*n.height)),n.x=Math.max(n.x,t.x-n.width*e),n.y=Math.max(n.y,t.y-n.height*e))}},mxGraph.prototype.resetEdges=function(e){if(null!=e){for(var n={},t=0;t<e.length;t++){var a=mxCellPath.create(e[t]);n[a]=e[t]}this.model.beginUpdate();try{for(t=0;t<e.length;t++){var i=this.model.getEdges(e[t]);if(null!=i)for(a=0;a<i.length;a++){var s=this.view.getState(i[a]),o=null!=s?s.getVisibleTerminal(!0):this.view.getVisibleTerminal(i[a],!0),r=null!=s?s.getVisibleTerminal(!1):this.view.getVisibleTerminal(i[a],!1),l=mxCellPath.create(o),d=mxCellPath.create(r);(null==n[l]||null==n[d])&&this.resetEdge(i[a])}this.resetEdges(this.model.getChildren(e[t]))}}finally{this.model.endUpdate()}}},mxGraph.prototype.resetEdge=function(e){var n=this.model.getGeometry(e);return null!=n&&null!=n.points&&0<n.points.length&&((n=n.clone()).points=[],this.model.setGeometry(e,n)),e},mxGraph.prototype.getAllConnectionConstraints=function(e,n){return null!=e&&null!=e.shape&&null!=e.shape.stencil?e.shape.stencil.constraints:null},mxGraph.prototype.getConnectionConstraint=function(e,n,t){n=null;var a=e.style[t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=a){var i=e.style[t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=i&&(n=new mxPoint(parseFloat(a),parseFloat(i)))}return a=!1,null!=n&&(a=mxUtils.getValue(e.style,t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0)),new mxConnectionConstraint(n,a)},mxGraph.prototype.setConnectionConstraint=function(e,n,t,a){if(null!=a){this.model.beginUpdate();try{null==a||null==a.point?(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e])):null!=a.point&&(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,a.point.x,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,a.point.y,[e]),a.perimeter?this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e]):this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[e]))}finally{this.model.endUpdate()}}},mxGraph.prototype.getConnectionPoint=function(e,n){var t=null;if(null!=e){var a=this.view.getPerimeterBounds(e),i=new mxPoint(a.getCenterX(),a.getCenterY()),s=e.style[mxConstants.STYLE_DIRECTION],o=0;if(null!=s&&("north"==s?o+=270:"west"==s?o+=180:"south"==s&&(o+=90),"north"==s||"south"==s)){a.x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var r=a.width;a.width=a.height,a.height=r}if(null!=n.point){var l=t=1,d=0,c=0;if(this.getModel().isVertex(e.cell)){var m=e.style[mxConstants.STYLE_FLIPH],u=e.style[mxConstants.STYLE_FLIPV];null!=e.shape.stencil&&(m=1==mxUtils.getValue(e.style,"stencilFlipH",0)||m,u=1==mxUtils.getValue(e.style,"stencilFlipV",0)||u),"north"!=s&&"south"!=s||(r=m,m=u,u=r),m&&(t=-1,d=-a.width),u&&(l=-1,c=-a.height)}t=new mxPoint(a.x+n.point.x*a.width*t-d,a.y+n.point.y*a.height*l-c)}s=e.style[mxConstants.STYLE_ROTATION]||0,n.perimeter?(0!=o&&null!=t&&(r=a=0,90==o?r=1:180==o?a=-1:270==s&&(r=-1),t=mxUtils.getRotatedPoint(t,a,r,i)),null!=t&&n.perimeter&&(t=this.view.getPerimeterPoint(e,t,!1))):s+=o,0!=s&&null!=t&&(o=mxUtils.toRadians(s),a=Math.cos(o),r=Math.sin(o),t=mxUtils.getRotatedPoint(t,a,r,i))}return t},mxGraph.prototype.connectCell=function(e,n,t,a){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.cellConnected(e,n,t,a),this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellConnected=function(e,n,t,a){if(null!=e){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.setConnectionConstraint(e,n,t,a),this.isPortsEnabled()&&(a=null,this.isPort(n)&&(a=n.getId(),n=this.getTerminalForPort(n,t)),this.setCellStyles(t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,a,[e])),this.model.setTerminal(e,n,t),this.resetEdgesOnConnect&&this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}}},mxGraph.prototype.disconnectGraph=function(e){if(null!=e){this.model.beginUpdate();try{for(var n=this.view.scale,t=this.view.translate,a={},i=0;i<e.length;i++){a[mxCellPath.create(e[i])]=e[i]}for(i=0;i<e.length;i++)if(this.model.isEdge(e[i])){if(null!=(r=this.model.getGeometry(e[i]))){var s=this.view.getState(e[i]),o=this.view.getState(this.model.getParent(e[i]));if(null!=s&&null!=o){var r=r.clone(),l=-o.origin.x,d=-o.origin.y,c=s.absolutePoints,m=this.model.getTerminal(e[i],!0);if(null!=m&&this.isCellDisconnectable(e[i],m,!0)){for(var u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);null==m&&(r.setTerminalPoint(new mxPoint(c[0].x/n-t.x+l,c[0].y/n-t.y+d),!0),this.model.setTerminal(e[i],null,!0))}var p=this.model.getTerminal(e[i],!1);if(null!=p&&this.isCellDisconnectable(e[i],p,!1)){for(var g=mxCellPath.create(p);null!=p&&null==a[g];)p=this.model.getParent(p),g=mxCellPath.create(p);if(null==p){var v=c.length-1;r.setTerminalPoint(new mxPoint(c[v].x/n-t.x+l,c[v].y/n-t.y+d),!1),this.model.setTerminal(e[i],null,!1)}}this.model.setGeometry(e[i],r)}}}}finally{this.model.endUpdate()}}},mxGraph.prototype.getCurrentRoot=function(){return this.view.currentRoot},mxGraph.prototype.getTranslateForRoot=function(e){return null},mxGraph.prototype.isPort=function(e){return!1},mxGraph.prototype.getTerminalForPort=function(e,n){return this.model.getParent(e)},mxGraph.prototype.getChildOffsetForCell=function(e){return null},mxGraph.prototype.enterGroup=function(e){null!=(e=e||this.getSelectionCell())&&this.isValidRoot(e)&&(this.view.setCurrentRoot(e),this.clearSelection())},mxGraph.prototype.exitGroup=function(){var e=this.model.getRoot(),n=this.getCurrentRoot();if(null!=n){for(var t=this.model.getParent(n);t!=e&&!this.isValidRoot(t)&&this.model.getParent(t)!=e;)t=this.model.getParent(t);t==e||this.model.getParent(t)==e?this.view.setCurrentRoot(null):this.view.setCurrentRoot(t),null!=this.view.getState(n)&&this.setSelectionCell(n)}},mxGraph.prototype.home=function(){var e=this.getCurrentRoot();null!=e&&(this.view.setCurrentRoot(null),null!=this.view.getState(e)&&this.setSelectionCell(e))},mxGraph.prototype.isValidRoot=function(e){return null!=e},mxGraph.prototype.getGraphBounds=function(){return this.view.getGraphBounds()},mxGraph.prototype.getCellBounds=function(e,n,t){var a=[e];if(n&&(a=a.concat(this.model.getEdges(e))),a=this.view.getBounds(a),t){t=this.model.getChildCount(e);for(var i=0;i<t;i++){var s=this.getCellBounds(this.model.getChildAt(e,i),n,!0);null!=a?a.add(s):a=s}}return a},mxGraph.prototype.getBoundingBoxFromGeometry=function(e,n){n=null!=n&&n;var t=null;if(null!=e)for(var a=0;a<e.length;a++)if(n||this.model.isVertex(e[a])){var i=this.getCellGeometry(e[a]);if(null!=i){var s=i.points;if(null!=s&&0<s.length){for(var o=new mxRectangle(s[0].x,s[0].y,0,0),r=function(e){null!=e&&o.add(new mxRectangle(e.x,e.y,0,0))},l=1;l<s.length;l++)r(s[l]);r(i.getTerminalPoint(!0)),r(i.getTerminalPoint(!1))}null==t?t=new mxRectangle(i.x,i.y,i.width,i.height):t.add(i)}}return t},mxGraph.prototype.refresh=function(e){this.view.clear(e,null==e),this.view.validate(),this.sizeDidChange(),this.fireEvent(new mxEventObject(mxEvent.REFRESH))},mxGraph.prototype.snap=function(e){return this.gridEnabled&&(e=Math.round(e/this.gridSize)*this.gridSize),e},mxGraph.prototype.panGraph=function(e,n){if(this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container))this.container.scrollLeft=-e,this.container.scrollTop=-n;else{var t=this.view.getCanvas();if(this.dialect==mxConstants.DIALECT_SVG)if(0==e&&0==n){if(mxClient.IS_IE?t.setAttribute("transform","translate("+e+","+n+")"):t.removeAttribute("transform"),null!=this.shiftPreview1){for(var a=this.shiftPreview1.firstChild;null!=a;){var i=a.nextSibling;this.container.appendChild(a),a=i}for(this.shiftPreview1.parentNode.removeChild(this.shiftPreview1),this.shiftPreview1=null,this.container.appendChild(t.parentNode),a=this.shiftPreview2.firstChild;null!=a;)i=a.nextSibling,this.container.appendChild(a),a=i;this.shiftPreview2.parentNode.removeChild(this.shiftPreview2),this.shiftPreview2=null}}else{if(t.setAttribute("transform","translate("+e+","+n+")"),null==this.shiftPreview1){this.shiftPreview1=document.createElement("div"),this.shiftPreview1.style.position="absolute",this.shiftPreview1.style.overflow="visible",this.shiftPreview2=document.createElement("div"),this.shiftPreview2.style.position="absolute",this.shiftPreview2.style.overflow="visible";var s=this.shiftPreview1;for(a=this.container.firstChild;null!=a;)i=a.nextSibling,a!=t.parentNode?s.appendChild(a):s=this.shiftPreview2,a=i;this.container.insertBefore(this.shiftPreview1,t.parentNode),this.container.appendChild(this.shiftPreview2)}this.shiftPreview1.style.left=e+"px",this.shiftPreview1.style.top=n+"px",this.shiftPreview2.style.left=e+"px",this.shiftPreview2.style.top=n+"px"}else t.style.left=e+"px",t.style.top=n+"px";this.panDx=e,this.panDy=n,this.fireEvent(new mxEventObject(mxEvent.PAN))}},mxGraph.prototype.zoomIn=function(){this.zoom(this.zoomFactor)},mxGraph.prototype.zoomOut=function(){this.zoom(1/this.zoomFactor)},mxGraph.prototype.zoomActual=function(){1==this.view.scale?this.view.setTranslate(0,0):(this.view.translate.x=0,this.view.translate.y=0,this.view.setScale(1))},mxGraph.prototype.zoomTo=function(e,n){this.zoom(e/this.view.scale,n)},mxGraph.prototype.zoom=function(e,n){n=null!=n?n:this.centerZoom;var t=this.view.scale*e,a=this.view.getState(this.getSelectionCell());if(this.keepSelectionVisibleOnZoom&&null!=a)a=new mxRectangle(a.x*e,a.y*e,a.width*e,a.height*e),this.view.scale=t,this.scrollRectToVisible(a)||(this.view.revalidate(),this.view.setScale(t));else if(n&&!mxUtils.hasScrollbars(this.container)){a=this.container.offsetWidth;var i=this.container.offsetHeight;if(1<e){var s=(e-1)/(2*t);a=a*-s,i=i*-s}else a*=s=(1/e-1)/(2*this.view.scale),i*=s;this.view.scaleAndTranslate(t,this.view.translate.x+a,this.view.translate.y+i)}else this.view.setScale(t),mxUtils.hasScrollbars(this.container)&&(i=a=0,n&&(a=this.container.offsetWidth*(e-1)/2,i=this.container.offsetHeight*(e-1)/2),this.container.scrollLeft=Math.round(this.container.scrollLeft*e+a),this.container.scrollTop=Math.round(this.container.scrollTop*e+i))},mxGraph.prototype.zoomToRect=function(e){var n=this.container.clientWidth/e.width/(this.container.clientHeight/e.height);e.x=Math.max(0,e.x),e.y=Math.max(0,e.y);var t=Math.min(this.container.scrollWidth,e.x+e.width),a=Math.min(this.container.scrollHeight,e.y+e.height);e.width=t-e.x,e.height=a-e.y,n<1?(t=((n=e.height/n)-e.height)/2,e.height=n,n=Math.min(e.y,t),e.y-=n,a=Math.min(this.container.scrollHeight,e.y+e.height),e.height=a-e.y):(t=((n*=e.width)-e.width)/2,e.width=n,n=Math.min(e.x,t),e.x-=n,t=Math.min(this.container.scrollWidth,e.x+e.width),e.width=t-e.x),n=this.container.clientWidth/e.width,t=this.view.scale*n,mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),this.container.scrollLeft=Math.round(e.x*n),this.container.scrollTop=Math.round(e.y*n)):this.view.scaleAndTranslate(t,this.view.translate.x-e.x/this.view.scale,this.view.translate.y-e.y/this.view.scale)},mxGraph.prototype.fit=function(e,n){if(null!=this.container){e=null!=e?e:0,n=null!=n&&n;var t=this.container.clientWidth,a=this.container.clientHeight,i=this.view.getGraphBounds();n&&null!=i.x&&null!=i.y&&(i.width+=i.x,i.height+=i.y,i.x=0,i.y=0);var s=this.view.scale,o=i.width/s,r=i.height/s;null!=this.backgroundImage&&(o=Math.max(o,this.backgroundImage.width-i.x/s),r=Math.max(r,this.backgroundImage.height-i.y/s));var l=n?e:2*e;t=Math.floor(100*Math.min(t/(o+l),a/(r+l)))/100;null!=this.minFitScale&&(t=Math.max(t,this.minFitScale)),null!=this.maxFitScale&&(t=Math.min(t,this.maxFitScale)),n?this.view.scale!=t&&this.view.setScale(t):mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),null!=i.x&&(this.container.scrollLeft=Math.round(i.x/s)*t-e-Math.max(0,(this.container.clientWidth-o*t)/2)),null!=i.y&&(this.container.scrollTop=Math.round(i.y/s)*t-e-Math.max(0,(this.container.clientHeight-r*t)/2))):this.view.scaleAndTranslate(t,null!=i.x?Math.floor(this.view.translate.x-i.x/s+e+1):e,null!=i.y?Math.floor(this.view.translate.y-i.y/s+e+1):e)}return this.view.scale},mxGraph.prototype.scrollCellToVisible=function(e,n){var t=-this.view.translate.x,a=-this.view.translate.y,i=this.view.getState(e);null!=i&&(t=new mxRectangle(t+i.x,a+i.y,i.width,i.height),n&&null!=this.container&&(a=this.container.clientWidth,i=this.container.clientHeight,t.x=t.getCenterX()-a/2,t.width=a,t.y=t.getCenterY()-i/2,t.height=i),this.scrollRectToVisible(t)&&this.view.setTranslate(this.view.translate.x,this.view.translate.y))},mxGraph.prototype.scrollRectToVisible=function(e){var n=!1;if(null!=e){var t=this.container.offsetWidth,a=this.container.offsetHeight,i=Math.min(t,e.width),s=Math.min(a,e.height);if(mxUtils.hasScrollbars(this.container)){t=this.container,e.x+=this.view.translate.x,e.y+=this.view.translate.y;var o=t.scrollLeft-e.x;a=Math.max(o-t.scrollLeft,0);0<o?t.scrollLeft-=o+2:0<(o=e.x+i-t.scrollLeft-t.clientWidth)&&(t.scrollLeft+=o+2),i=t.scrollTop-e.y,o=Math.max(0,i-t.scrollTop),0<i?t.scrollTop-=i+2:0<(i=e.y+s-t.scrollTop-t.clientHeight)&&(t.scrollTop+=i+2),!this.useScrollbarsForPanning&&(0!=a||0!=o)&&this.view.setTranslate(a,o)}else{o=-this.view.translate.x;var r=-this.view.translate.y,l=this.view.scale;e.x+i>o+t&&(this.view.translate.x-=(e.x+i-t-o)/l,n=!0),e.y+s>r+a&&(this.view.translate.y-=(e.y+s-a-r)/l,n=!0),e.x<o&&(this.view.translate.x+=(o-e.x)/l,n=!0),e.y<r&&(this.view.translate.y+=(r-e.y)/l,n=!0),n&&(this.view.refresh(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.refresh())}}return n},mxGraph.prototype.getCellGeometry=function(e){return this.model.getGeometry(e)},mxGraph.prototype.isCellVisible=function(e){return this.model.isVisible(e)},mxGraph.prototype.isCellCollapsed=function(e){return this.model.isCollapsed(e)},mxGraph.prototype.isCellConnectable=function(e){return this.model.isConnectable(e)},mxGraph.prototype.isOrthogonal=function(e){var n=e.style[mxConstants.STYLE_ORTHOGONAL];return null!=n?n:(e=this.view.getEdgeStyle(e))==mxEdgeStyle.SegmentConnector||e==mxEdgeStyle.ElbowConnector||e==mxEdgeStyle.SideToSide||e==mxEdgeStyle.TopToBottom||e==mxEdgeStyle.EntityRelation||e==mxEdgeStyle.OrthConnector},mxGraph.prototype.isLoop=function(e){var n=e.getVisibleTerminalState(!0);return e=e.getVisibleTerminalState(!1),null!=n&&n==e},mxGraph.prototype.isCloneEvent=function(e){return mxEvent.isControlDown(e)},mxGraph.prototype.isToggleEvent=function(e){return mxClient.IS_MAC?mxEvent.isMetaDown(e):mxEvent.isControlDown(e)},mxGraph.prototype.isGridEnabledEvent=function(e){return null!=e&&!mxEvent.isAltDown(e)},mxGraph.prototype.isConstrainedEvent=function(e){return mxEvent.isShiftDown(e)},mxGraph.prototype.isForceMarqueeEvent=function(e){return mxEvent.isAltDown(e)},mxGraph.prototype.validationAlert=function(e){mxUtils.alert(e)},mxGraph.prototype.isEdgeValid=function(e,n,t){return null==this.getEdgeValidationError(e,n,t)},mxGraph.prototype.getEdgeValidationError=function(e,n,t){if(null!=e&&!this.isAllowDanglingEdges()&&(null==n||null==t))return"";if(null!=e&&null==this.model.getTerminal(e,!0)&&null==this.model.getTerminal(e,!1))return null;if(!this.allowLoops&&n==t&&null!=n||!this.isValidConnection(n,t))return"";if(null==n||null==t)return this.allowDanglingEdges?null:"";var a="";this.multigraph||(1<(i=this.model.getEdgesBetween(n,t,!0)).length||1==i.length&&i[0]!=e)&&(a+=(mxResources.get(this.alreadyConnectedResource)||this.alreadyConnectedResource)+"\n");var i=this.model.getDirectedEdgeCount(n,!0,e),s=this.model.getDirectedEdgeCount(t,!1,e);if(null!=this.multiplicities)for(var o=0;o<this.multiplicities.length;o++){var r=this.multiplicities[o].check(this,e,n,t,i,s);null!=r&&(a+=r)}return null!=(r=this.validateEdge(e,n,t))&&(a+=r),0<a.length?a:null},mxGraph.prototype.validateEdge=function(e,n,t){return null},mxGraph.prototype.validateGraph=function(e,n){e=null!=e?e:this.model.getRoot(),n=null!=n?n:{};for(var t=!0,a=this.model.getChildCount(e),i=0;i<a;i++){var s=this.model.getChildAt(e,i),o=n;this.isValidRoot(s)&&(o={}),null!=(o=this.validateGraph(s,o))?this.setCellWarning(s,o.replace(/\n/g,"<br>")):this.setCellWarning(s,null),t=t&&null==o}return a="",this.isCellCollapsed(e)&&!t&&(a+=(mxResources.get(this.containsValidationErrorsResource)||this.containsValidationErrorsResource)+"\n"),a=this.model.isEdge(e)?a+(this.getEdgeValidationError(e,this.model.getTerminal(e,!0),this.model.getTerminal(e,!1))||""):a+(this.getCellValidationError(e)||""),null!=(i=this.validateCell(e,n))&&(a+=i),null==this.model.getParent(e)&&this.view.validate(),0<a.length||!t?a:null},mxGraph.prototype.getCellValidationError=function(e){var n=this.model.getDirectedEdgeCount(e,!0),t=this.model.getDirectedEdgeCount(e,!1);e=this.model.getValue(e);var a="";if(null!=this.multiplicities)for(var i=0;i<this.multiplicities.length;i++){var s=this.multiplicities[i];s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<n||1==s.min&&0==n||1==s.max&&1<n)?a+=s.countError+"\n":!s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<t||1==s.min&&0==t||1==s.max&&1<t)&&(a+=s.countError+"\n")}return 0<a.length?a:null},mxGraph.prototype.validateCell=function(e,n){return null},mxGraph.prototype.getBackgroundImage=function(){return this.backgroundImage},mxGraph.prototype.setBackgroundImage=function(e){this.backgroundImage=e},mxGraph.prototype.getFoldingImage=function(e){if(null!=e&&this.foldingEnabled&&!this.getModel().isEdge(e.cell)){var n=this.isCellCollapsed(e.cell);if(this.isCellFoldable(e.cell,!n))return n?this.collapsedImage:this.expandedImage}return null},mxGraph.prototype.convertValueToString=function(e){if(null!=(e=this.model.getValue(e))){if(mxUtils.isNode(e))return e.nodeName;if("function"==typeof e.toString)return e.toString()}return""},mxGraph.prototype.getLabel=function(e){var n="";if(this.labelsVisible&&null!=e){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);mxUtils.getValue(t,mxConstants.STYLE_NOLABEL,!1)||(n=this.convertValueToString(e))}return n},mxGraph.prototype.isHtmlLabel=function(e){return this.isHtmlLabels()},mxGraph.prototype.isHtmlLabels=function(){return this.htmlLabels},mxGraph.prototype.setHtmlLabels=function(e){this.htmlLabels=e},mxGraph.prototype.isWrapping=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"wrap"==e[mxConstants.STYLE_WHITE_SPACE]},mxGraph.prototype.isLabelClipped=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"hidden"==e[mxConstants.STYLE_OVERFLOW]},mxGraph.prototype.getTooltip=function(e,t,n,a){var i=null;return null!=e&&(null==e.control||t!=e.control.node&&t.parentNode!=e.control.node||(i=this.collapseExpandResource,i=mxResources.get(i)||i),null==i&&null!=e.overlays&&e.overlays.visit(function(e,n){null!=i||t!=n.node&&t.parentNode!=n.node||(i=n.overlay.toString())}),null==i&&(null!=(n=this.selectionCellsHandler.getHandler(e.cell))&&"function"==typeof n.getTooltipForNode&&(i=n.getTooltipForNode(t))),null==i&&(i=this.getTooltipForCell(e.cell))),i},mxGraph.prototype.getTooltipForCell=function(e){return null!=e&&null!=e.getTooltip?e.getTooltip():this.convertValueToString(e)},mxGraph.prototype.getCursorForCell=function(e){return null},mxGraph.prototype.getStartSize=function(e){var n=new mxRectangle,t=this.view.getState(e);return null!=(e=null!=t?t.style:this.getCellStyle(e))&&(t=parseInt(mxUtils.getValue(e,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)?n.height=t:n.width=t),n},mxGraph.prototype.getImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_IMAGE]:null},mxGraph.prototype.getVerticalAlign=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_VERTICAL_ALIGN]||mxConstants.ALIGN_MIDDLE:null},mxGraph.prototype.getIndicatorColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_COLOR]:null},mxGraph.prototype.getIndicatorGradientColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_GRADIENTCOLOR]:null},mxGraph.prototype.getIndicatorShape=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_SHAPE]:null},mxGraph.prototype.getIndicatorImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_IMAGE]:null},mxGraph.prototype.getBorder=function(){return this.border},mxGraph.prototype.setBorder=function(e){this.border=e},mxGraph.prototype.isSwimlane=function(e){var n;if(null!=e&&this.model.getParent(e)!=this.model.getRoot()&&(null!=(n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e))&&!this.model.isEdge(e)))return n[mxConstants.STYLE_SHAPE]==mxConstants.SHAPE_SWIMLANE;return!1},mxGraph.prototype.isResizeContainer=function(){return this.resizeContainer},mxGraph.prototype.setResizeContainer=function(e){this.resizeContainer=e},mxGraph.prototype.isEnabled=function(){return this.enabled},mxGraph.prototype.setEnabled=function(e){this.enabled=e},mxGraph.prototype.isEscapeEnabled=function(){return this.escapeEnabled},mxGraph.prototype.setEscapeEnabled=function(e){this.escapeEnabled=e},mxGraph.prototype.isInvokesStopCellEditing=function(){return this.invokesStopCellEditing},mxGraph.prototype.setInvokesStopCellEditing=function(e){this.invokesStopCellEditing=e},mxGraph.prototype.isEnterStopsCellEditing=function(){return this.enterStopsCellEditing},mxGraph.prototype.setEnterStopsCellEditing=function(e){this.enterStopsCellEditing=e},mxGraph.prototype.isCellLocked=function(e){var n=this.model.getGeometry(e);return this.isCellsLocked()||null!=n&&this.model.isVertex(e)&&n.relative},mxGraph.prototype.isCellsLocked=function(){return this.cellsLocked},mxGraph.prototype.setCellsLocked=function(e){this.cellsLocked=e},mxGraph.prototype.getCloneableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellCloneable(e)}))},mxGraph.prototype.isCellCloneable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsCloneable()&&0!=e[mxConstants.STYLE_CLONEABLE]},mxGraph.prototype.isCellsCloneable=function(){return this.cellsCloneable},mxGraph.prototype.setCellsCloneable=function(e){this.cellsCloneable=e},mxGraph.prototype.getExportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canExportCell(e)}))},mxGraph.prototype.canExportCell=function(e){return this.exportEnabled},mxGraph.prototype.getImportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canImportCell(e)}))},mxGraph.prototype.canImportCell=function(e){return this.importEnabled},mxGraph.prototype.isCellSelectable=function(e){return this.isCellsSelectable()},mxGraph.prototype.isCellsSelectable=function(){return this.cellsSelectable},mxGraph.prototype.setCellsSelectable=function(e){this.cellsSelectable=e},mxGraph.prototype.getDeletableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellDeletable(e)}))},mxGraph.prototype.isCellDeletable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsDeletable()&&0!=e[mxConstants.STYLE_DELETABLE]},mxGraph.prototype.isCellsDeletable=function(){return this.cellsDeletable},mxGraph.prototype.setCellsDeletable=function(e){this.cellsDeletable=e},mxGraph.prototype.isLabelMovable=function(e){return!this.isCellLocked(e)&&(this.model.isEdge(e)&&this.edgeLabelsMovable||this.model.isVertex(e)&&this.vertexLabelsMovable)},mxGraph.prototype.getMovableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellMovable(e)}))},mxGraph.prototype.isCellMovable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsMovable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_MOVABLE]},mxGraph.prototype.isCellsMovable=function(){return this.cellsMovable},mxGraph.prototype.setCellsMovable=function(e){this.cellsMovable=e},mxGraph.prototype.isGridEnabled=function(){return this.gridEnabled},mxGraph.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxGraph.prototype.isPortsEnabled=function(){return this.portsEnabled},mxGraph.prototype.setPortsEnabled=function(e){this.portsEnabled=e},mxGraph.prototype.getGridSize=function(){return this.gridSize},mxGraph.prototype.setGridSize=function(e){this.gridSize=e},mxGraph.prototype.getTolerance=function(){return this.tolerance},mxGraph.prototype.setTolerance=function(e){this.tolerance=e},mxGraph.prototype.isVertexLabelsMovable=function(){return this.vertexLabelsMovable},mxGraph.prototype.setVertexLabelsMovable=function(e){this.vertexLabelsMovable=e},mxGraph.prototype.isEdgeLabelsMovable=function(){return this.edgeLabelsMovable},mxGraph.prototype.setEdgeLabelsMovable=function(e){this.edgeLabelsMovable=e},mxGraph.prototype.isSwimlaneNesting=function(){return this.swimlaneNesting},mxGraph.prototype.setSwimlaneNesting=function(e){this.swimlaneNesting=e},mxGraph.prototype.isSwimlaneSelectionEnabled=function(){return this.swimlaneSelectionEnabled},mxGraph.prototype.setSwimlaneSelectionEnabled=function(e){this.swimlaneSelectionEnabled=e},mxGraph.prototype.isMultigraph=function(){return this.multigraph},mxGraph.prototype.setMultigraph=function(e){this.multigraph=e},mxGraph.prototype.isAllowLoops=function(){return this.allowLoops},mxGraph.prototype.setAllowDanglingEdges=function(e){this.allowDanglingEdges=e},mxGraph.prototype.isAllowDanglingEdges=function(){return this.allowDanglingEdges},mxGraph.prototype.setConnectableEdges=function(e){this.connectableEdges=e},mxGraph.prototype.isConnectableEdges=function(){return this.connectableEdges},mxGraph.prototype.setCloneInvalidEdges=function(e){this.cloneInvalidEdges=e},mxGraph.prototype.isCloneInvalidEdges=function(){return this.cloneInvalidEdges},mxGraph.prototype.setAllowLoops=function(e){this.allowLoops=e},mxGraph.prototype.isDisconnectOnMove=function(){return this.disconnectOnMove},mxGraph.prototype.setDisconnectOnMove=function(e){this.disconnectOnMove=e},mxGraph.prototype.isDropEnabled=function(){return this.dropEnabled},mxGraph.prototype.setDropEnabled=function(e){this.dropEnabled=e},mxGraph.prototype.isSplitEnabled=function(){return this.splitEnabled},mxGraph.prototype.setSplitEnabled=function(e){this.splitEnabled=e},mxGraph.prototype.isCellResizable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsResizable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_RESIZABLE]},mxGraph.prototype.isCellsResizable=function(){return this.cellsResizable},mxGraph.prototype.setCellsResizable=function(e){this.cellsResizable=e},mxGraph.prototype.isTerminalPointMovable=function(e,n){return!0},mxGraph.prototype.isCellBendable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsBendable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_BENDABLE]},mxGraph.prototype.isCellsBendable=function(){return this.cellsBendable},mxGraph.prototype.setCellsBendable=function(e){this.cellsBendable=e},mxGraph.prototype.isCellEditable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsEditable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_EDITABLE]},mxGraph.prototype.isCellsEditable=function(){return this.cellsEditable},mxGraph.prototype.setCellsEditable=function(e){this.cellsEditable=e},mxGraph.prototype.isCellDisconnectable=function(e,n,t){return this.isCellsDisconnectable()&&!this.isCellLocked(e)},mxGraph.prototype.isCellsDisconnectable=function(){return this.cellsDisconnectable},mxGraph.prototype.setCellsDisconnectable=function(e){this.cellsDisconnectable=e},mxGraph.prototype.isValidSource=function(e){return null==e&&this.allowDanglingEdges||null!=e&&(!this.model.isEdge(e)||this.connectableEdges)&&this.isCellConnectable(e)},mxGraph.prototype.isValidTarget=function(e){return this.isValidSource(e)},mxGraph.prototype.isValidConnection=function(e,n){return this.isValidSource(e)&&this.isValidTarget(n)},mxGraph.prototype.setConnectable=function(e){this.connectionHandler.setEnabled(e)},mxGraph.prototype.isConnectable=function(e){return this.connectionHandler.isEnabled()},mxGraph.prototype.setTooltips=function(e){this.tooltipHandler.setEnabled(e)},mxGraph.prototype.setPanning=function(e){this.panningHandler.panningEnabled=e},mxGraph.prototype.isEditing=function(e){if(null==this.cellEditor)return!1;var n=this.cellEditor.getEditingCell();return null==e?null!=n:e==n},mxGraph.prototype.isAutoSizeCell=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isAutoSizeCells()||1==e[mxConstants.STYLE_AUTOSIZE]},mxGraph.prototype.isAutoSizeCells=function(){return this.autoSizeCells},mxGraph.prototype.setAutoSizeCells=function(e){this.autoSizeCells=e},mxGraph.prototype.isExtendParent=function(e){return!this.getModel().isEdge(e)&&this.isExtendParents()},mxGraph.prototype.isExtendParents=function(){return this.extendParents},mxGraph.prototype.setExtendParents=function(e){this.extendParents=e},mxGraph.prototype.isExtendParentsOnAdd=function(){return this.extendParentsOnAdd},mxGraph.prototype.setExtendParentsOnAdd=function(e){this.extendParentsOnAdd=e},mxGraph.prototype.isConstrainChild=function(e){return this.isConstrainChildren()&&!this.getModel().isEdge(this.getModel().getParent(e))},mxGraph.prototype.isConstrainChildren=function(){return this.constrainChildren},mxGraph.prototype.setConstrainChildren=function(e){this.constrainChildren=e},mxGraph.prototype.isAllowNegativeCoordinates=function(){return this.allowNegativeCoordinates},mxGraph.prototype.setAllowNegativeCoordinates=function(e){this.allowNegativeCoordinates=e},mxGraph.prototype.getOverlap=function(e){return this.isAllowOverlapParent(e)?this.defaultOverlap:0},mxGraph.prototype.isAllowOverlapParent=function(e){return!1},mxGraph.prototype.getFoldableCells=function(e,n){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellFoldable(e,n)}))},mxGraph.prototype.isCellFoldable=function(e,n){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return 0<this.model.getChildCount(e)&&0!=t[mxConstants.STYLE_FOLDABLE]},mxGraph.prototype.isValidDropTarget=function(e,n,t){return null!=e&&(this.isSplitEnabled()&&this.isSplitTarget(e,n,t)||!this.model.isEdge(e)&&(this.isSwimlane(e)||0<this.model.getChildCount(e)&&!this.isCellCollapsed(e)))},mxGraph.prototype.isSplitTarget=function(e,n,t){return!(!this.model.isEdge(e)||null==n||1!=n.length||!this.isCellConnectable(n[0])||null!=this.getEdgeValidationError(e,this.model.getTerminal(e,!0),n[0]))&&(t=this.model.getTerminal(e,!0),e=this.model.getTerminal(e,!1),!this.model.isAncestor(n[0],t)&&!this.model.isAncestor(n[0],e))},mxGraph.prototype.getDropTarget=function(e,n,t){if(!this.isSwimlaneNesting())for(var a=0;a<e.length;a++)if(this.isSwimlane(e[a]))return null;if((a=mxUtils.convertPoint(this.container,mxEvent.getClientX(n),mxEvent.getClientY(n))).x-=this.panDx,a.y-=this.panDy,a=this.getSwimlaneAt(a.x,a.y),null==t)t=a;else if(null!=a){for(var i=this.model.getParent(a);null!=i&&this.isSwimlane(i)&&i!=t;)i=this.model.getParent(i);i==t&&(t=a)}for(;null!=t&&!this.isValidDropTarget(t,e,n)&&!this.model.isLayer(t);)t=this.model.getParent(t);return!this.model.isLayer(t)&&mxUtils.indexOf(e,t)<0?t:null},mxGraph.prototype.getDefaultParent=function(){var e=this.defaultParent;return null==e&&(null==(e=this.getCurrentRoot())&&(e=this.model.getRoot(),e=this.model.getChildAt(e,0))),e},mxGraph.prototype.setDefaultParent=function(e){this.defaultParent=e},mxGraph.prototype.getSwimlane=function(e){for(;null!=e&&!this.isSwimlane(e);)e=this.model.getParent(e);return e},mxGraph.prototype.getSwimlaneAt=function(e,n,t){if(null!=(t=t||this.getDefaultParent()))for(var a=this.model.getChildCount(t),i=0;i<a;i++){var s=this.model.getChildAt(t,i),o=this.getSwimlaneAt(e,n,s);if(null!=o)return o;if(this.isSwimlane(s)&&(o=this.view.getState(s),this.intersects(o,e,n)))return s}return null},mxGraph.prototype.getCellAt=function(e,n,t,a,i){if(a=null==a||a,i=null==i||i,null!=(t=null!=t?t:this.getDefaultParent()))for(var s=this.model.getChildCount(t)-1;0<=s;s--){var o=this.model.getChildAt(t,s),r=this.getCellAt(e,n,o,a,i);if(null!=r)return r;if(this.isCellVisible(o)&&(i&&this.model.isEdge(o)||a&&this.model.isVertex(o))&&(r=this.view.getState(o),this.intersects(r,e,n)))return o}return null},mxGraph.prototype.intersects=function(e,n,t){if(null!=e){var a=e.absolutePoints;if(null!=a){e=this.tolerance*this.tolerance;for(var i=a[0],s=1;s<a.length;s++){var o=a[s];if(mxUtils.ptSegDistSq(i.x,i.y,o.x,o.y,n,t)<=e)return!0;i=o}}else if(0!=(i=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(a=Math.cos(-i),i=Math.sin(-i),s=new mxPoint(e.getCenterX(),e.getCenterY()),n=(i=mxUtils.getRotatedPoint(new mxPoint(n,t),a,i,s)).x,t=i.y),mxUtils.contains(e,n,t))return!0}return!1},mxGraph.prototype.hitsSwimlaneContent=function(e,n,t){var a=this.getView().getState(e);if(e=this.getStartSize(e),null!=a){var i=this.getView().getScale();if(n-=a.x,t-=a.y,0<e.width&&0<n&&n>e.width*i||0<e.height&&0<t&&t>e.height*i)return!0}return!1},mxGraph.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraph.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraph.prototype.getChildCells=function(e,n,t){for(e=null!=e?e:this.getDefaultParent(),e=this.model.getChildCells(e,null!=n&&n,null!=t&&t),n=[],t=0;t<e.length;t++)this.isCellVisible(e[t])&&n.push(e[t]);return n},mxGraph.prototype.getConnections=function(e,n){return this.getEdges(e,n,!0,!0,!1)},mxGraph.prototype.getIncomingEdges=function(e,n){return this.getEdges(e,n,!0,!1,!1)},mxGraph.prototype.getOutgoingEdges=function(e,n){return this.getEdges(e,n,!1,!0,!1)},mxGraph.prototype.getEdges=function(e,n,t,a,i,s){t=null==t||t,a=null==a||a,i=null==i||i,s=null!=s&&s;for(var o=[],r=this.isCellCollapsed(e),l=this.model.getChildCount(e),d=0;d<l;d++){var c=this.model.getChildAt(e,d);!r&&this.isCellVisible(c)||(o=o.concat(this.model.getEdges(c,t,a)))}for(o=o.concat(this.model.getEdges(e,t,a)),r=[],d=0;d<o.length;d++)l=null!=(c=this.view.getState(o[d]))?c.getVisibleTerminal(!0):this.view.getVisibleTerminal(o[d],!0),c=null!=c?c.getVisibleTerminal(!1):this.view.getVisibleTerminal(o[d],!1),(i&&l==c||l!=c&&(t&&c==e&&(null==n||this.isValidAncestor(l,n,s))||a&&l==e&&(null==n||this.isValidAncestor(c,n,s))))&&r.push(o[d]);return r},mxGraph.prototype.isValidAncestor=function(e,n,t){return t?this.model.isAncestor(n,e):this.model.getParent(e)==n},mxGraph.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[],s={};if(null!=e)for(var o=0;o<e.length;o++){var r=null!=(l=this.view.getState(e[o]))?l.getVisibleTerminal(!0):this.view.getVisibleTerminal(e[o],!0),l=null!=l?l.getVisibleTerminal(!1):this.view.getVisibleTerminal(e[o],!1);if(r==n&&null!=l&&l!=n&&a){var d=mxCellPath.create(l);null==s[d]&&(s[d]=l,i.push(l))}else l==n&&null!=r&&r!=n&&t&&(null==s[d=mxCellPath.create(r)]&&(s[d]=r,i.push(r)))}return i},mxGraph.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=null!=(r=this.view.getState(a[s]))?r.getVisibleTerminal(!0):this.view.getVisibleTerminal(a[s],!0),r=null!=r?r.getVisibleTerminal(!1):this.view.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxGraph.prototype.getPointForEvent=function(e,n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a=this.view.scale,i=this.view.translate,s=0!=n?this.gridSize/2:0;return t.x=this.snap(t.x/a-i.x-s),t.y=this.snap(t.y/a-i.y-s),t},mxGraph.prototype.getCells=function(e,n,t,a,i,s){if(s=null!=s?s:[],0<t||0<a){var o=e+t,r=n+a;if(null!=(i=i||this.getDefaultParent()))for(var l=this.model.getChildCount(i),d=0;d<l;d++){var c=this.model.getChildAt(i,d),m=this.view.getState(c);if(this.isCellVisible(c)&&null!=m){var u=m;0!=(m=mxUtils.getValue(m.style,mxConstants.STYLE_ROTATION)||0)&&(u=mxUtils.getBoundingBox(u,m)),u.x>=e&&u.y+u.height<=r&&u.y>=n&&u.x+u.width<=o?s.push(c):this.getCells(e,n,t,a,c,s)}}}return s},mxGraph.prototype.getCellsBeyond=function(e,n,t,a,i){var s=[];if((a||i)&&(null==t&&(t=this.getDefaultParent()),null!=t))for(var o=this.model.getChildCount(t),r=0;r<o;r++){var l=this.model.getChildAt(t,r),d=this.view.getState(l);this.isCellVisible(l)&&null!=d&&(!a||d.x>=e)&&(!i||d.y>=n)&&s.push(l)}return s},mxGraph.prototype.findTreeRoots=function(e,n,t){n=null!=n&&n,t=null!=t&&t;var a=[];if(null!=e){for(var i=this.getModel(),s=i.getChildCount(e),o=null,r=0,l=0;l<s;l++){var d=i.getChildAt(e,l);if(this.model.isVertex(d)&&this.isCellVisible(d)){for(var c=this.getConnections(d,n?e:null),m=0,u=0,p=0;p<c.length;p++)this.view.getVisibleTerminal(c[p],!0)==d?m++:u++;(t&&0==m&&0<u||!t&&0==u&&0<m)&&a.push(d),r<(c=t?u-m:m-u)&&(r=c,o=d)}}0==a.length&&null!=o&&a.push(o)}return a},mxGraph.prototype.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.model.getEdgeAt(e,s),r=this.model.getTerminal(o,!0)==e;n&&!r||(r=this.model.getTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraph.prototype.isCellSelected=function(e){return this.getSelectionModel().isSelected(e)},mxGraph.prototype.isSelectionEmpty=function(){return this.getSelectionModel().isEmpty()},mxGraph.prototype.clearSelection=function(){return this.getSelectionModel().clear()},mxGraph.prototype.getSelectionCount=function(){return this.getSelectionModel().cells.length},mxGraph.prototype.getSelectionCell=function(){return this.getSelectionModel().cells[0]},mxGraph.prototype.getSelectionCells=function(){return this.getSelectionModel().cells.slice()},mxGraph.prototype.setSelectionCell=function(e){this.getSelectionModel().setCell(e)},mxGraph.prototype.setSelectionCells=function(e){this.getSelectionModel().setCells(e)},mxGraph.prototype.addSelectionCell=function(e){this.getSelectionModel().addCell(e)},mxGraph.prototype.addSelectionCells=function(e){this.getSelectionModel().addCells(e)},mxGraph.prototype.removeSelectionCell=function(e){this.getSelectionModel().removeCell(e)},mxGraph.prototype.removeSelectionCells=function(e){this.getSelectionModel().removeCells(e)},mxGraph.prototype.selectRegion=function(e,n){var t=this.getCells(e.x,e.y,e.width,e.height);return this.selectCellsForEvent(t,n),t},mxGraph.prototype.selectNextCell=function(){this.selectCell(!0)},mxGraph.prototype.selectPreviousCell=function(){this.selectCell()},mxGraph.prototype.selectParentCell=function(){this.selectCell(!1,!0)},mxGraph.prototype.selectChildCell=function(){this.selectCell(!1,!1,!0)},mxGraph.prototype.selectCell=function(e,n,t){var a=0<(i=this.selectionModel).cells.length?i.cells[0]:null;1<i.cells.length&&i.clear();var i=null!=a?this.model.getParent(a):this.getDefaultParent(),s=this.model.getChildCount(i);null==a&&0<s?(e=this.model.getChildAt(i,0),this.setSelectionCell(e)):null!=a&&!n||null==this.view.getState(i)||null==this.model.getGeometry(i)?null!=a&&t?0<this.model.getChildCount(a)&&(e=this.model.getChildAt(a,0),this.setSelectionCell(e)):0<s&&(n=i.getIndex(a),e=e?(n++,this.model.getChildAt(i,n%s)):(n--,this.model.getChildAt(i,n<0?s-1:n)),this.setSelectionCell(e)):this.getCurrentRoot()!=i&&this.setSelectionCell(i)},mxGraph.prototype.selectAll=function(e){e=e||this.getDefaultParent(),null!=(e=this.model.getChildren(e))&&this.setSelectionCells(e)},mxGraph.prototype.selectVertices=function(e){this.selectCells(!0,!1,e)},mxGraph.prototype.selectEdges=function(e){this.selectCells(!1,!0,e)},mxGraph.prototype.selectCells=function(n,t,e){e=e||this.getDefaultParent();var a=mxUtils.bind(this,function(e){return null!=this.view.getState(e)&&0==this.model.getChildCount(e)&&(this.model.isVertex(e)&&n||this.model.isEdge(e)&&t)});e=this.model.filterDescendants(a,e),this.setSelectionCells(e)},mxGraph.prototype.selectCellForEvent=function(e,n){var t=this.isCellSelected(e);this.isToggleEvent(n)?t?this.removeSelectionCell(e):this.addSelectionCell(e):(!t||1!=this.getSelectionCount())&&this.setSelectionCell(e)},mxGraph.prototype.selectCellsForEvent=function(e,n){this.isToggleEvent(n)?this.addSelectionCells(e):this.setSelectionCells(e)},mxGraph.prototype.createHandler=function(e){var n=null;return null!=e&&(n=this.model.isEdge(e.cell)?(n=this.view.getEdgeStyle(e),this.isLoop(e)||n==mxEdgeStyle.ElbowConnector||n==mxEdgeStyle.SideToSide||n==mxEdgeStyle.TopToBottom?new mxElbowEdgeHandler(e):n==mxEdgeStyle.SegmentConnector||n==mxEdgeStyle.OrthConnector?new mxEdgeSegmentHandler(e):new mxEdgeHandler(e)):new mxVertexHandler(e)),n},mxGraph.prototype.addMouseListener=function(e){null==this.mouseListeners&&(this.mouseListeners=[]),this.mouseListeners.push(e)},mxGraph.prototype.removeMouseListener=function(e){if(null!=this.mouseListeners)for(var n=0;n<this.mouseListeners.length;n++)if(this.mouseListeners[n]==e){this.mouseListeners.splice(n,1);break}},mxGraph.prototype.updateMouseEvent=function(e){if(null==e.graphX||null==e.graphY){var n=mxUtils.convertPoint(this.container,e.getX(),e.getY());e.graphX=n.x-this.panDx,e.graphY=n.y-this.panDy}},mxGraph.prototype.fireMouseEvent=function(e,n,t){if(null==t&&(t=this),this.updateMouseEvent(n),e==mxEvent.MOUSE_DOWN&&(this.isMouseDown=!0),mxClient.IS_TOUCH&&this.doubleTapEnabled&&e==mxEvent.MOUSE_DOWN){var a=(new Date).getTime();a-this.lastTouchTime<this.doubleTapTimeout&&Math.abs(this.lastTouchX-n.getX())<this.doubleTapTolerance&&Math.abs(this.lastTouchY-n.getY())<this.doubleTapTolerance?(this.lastTouchTime=0,this.dblClick(n.getEvent(),n.getCell()),n.getEvent().cancelBubble=!0):(this.lastTouchX=n.getX(),this.lastTouchY=n.getY(),this.lastTouchTime=a)}if(a=2!=n.getEvent().detail,mxClient.IS_IE&&"CSS1Compat"==document.compatMode&&((null!=this.lastMouseX&&Math.abs(this.lastMouseX-n.getX())>this.doubleTapTolerance||null!=this.lastMouseY&&Math.abs(this.lastMouseY-n.getY())>this.doubleTapTolerance)&&(a=!0),e==mxEvent.MOUSE_UP&&(this.lastMouseX=n.getX(),this.lastMouseY=n.getY())),(e!=mxEvent.MOUSE_UP||this.isMouseDown)&&a){if(e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1),!this.isEditing()&&(mxClient.IS_OP||mxClient.IS_SF||mxClient.IS_GC||mxClient.IS_IE&&mxClient.IS_SVG||n.getEvent().target!=this.container)){if(e==mxEvent.MOUSE_MOVE&&this.isMouseDown&&this.autoScroll&&this.scrollPointToVisible(n.getGraphX(),n.getGraphY(),this.autoExtend),null!=this.mouseListeners)for(t=[t,n],n.getEvent().returnValue=!0,a=0;a<this.mouseListeners.length;a++){var i=this.mouseListeners[a];e==mxEvent.MOUSE_DOWN?i.mouseDown.apply(i,t):e==mxEvent.MOUSE_MOVE?i.mouseMove.apply(i,t):e==mxEvent.MOUSE_UP&&i.mouseUp.apply(i,t)}e==mxEvent.MOUSE_UP&&this.click(n)}}else e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1)},mxGraph.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tooltipHandler&&this.tooltipHandler.destroy(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.destroy(),null!=this.panningHandler&&this.panningHandler.destroy(),null!=this.connectionHandler&&this.connectionHandler.destroy(),null!=this.graphHandler&&this.graphHandler.destroy(),null!=this.cellEditor&&this.cellEditor.destroy(),null!=this.view&&this.view.destroy(),null!=this.model&&null!=this.graphModelChangeListener&&(this.model.removeListener(this.graphModelChangeListener),this.graphModelChangeListener=null),this.container=null)},mxCellOverlay.prototype=new mxEventSource,mxCellOverlay.prototype.constructor=mxCellOverlay,mxCellOverlay.prototype.image=null,mxCellOverlay.prototype.tooltip=null,mxCellOverlay.prototype.align=mxConstants.ALIGN_RIGHT,mxCellOverlay.prototype.verticalAlign=mxConstants.ALIGN_BOTTOM,mxCellOverlay.prototype.offset=null,mxCellOverlay.prototype.cursor=null,mxCellOverlay.prototype.defaultOverlap=.5,mxCellOverlay.prototype.getBounds=function(e){var n=e.view.graph.getModel().isEdge(e.cell),t=e.view.scale,a=null,i=this.image.width,s=this.image.height;return n?a=1==(n=e.absolutePoints).length%2?n[Math.floor(n.length/2)]:(e=n[(a=n.length/2)-1],n=n[a],new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2)):((a=new mxPoint).x=this.align==mxConstants.ALIGN_LEFT?e.x:this.align==mxConstants.ALIGN_CENTER?e.x+e.width/2:e.x+e.width,a.y=this.verticalAlign==mxConstants.ALIGN_TOP?e.y:this.verticalAlign==mxConstants.ALIGN_MIDDLE?e.y+e.height/2:e.y+e.height),new mxRectangle(Math.round(a.x-(i*this.defaultOverlap-this.offset.x)*t),Math.round(a.y-(s*this.defaultOverlap-this.offset.y)*t),i*t,s*t)},mxCellOverlay.prototype.toString=function(){return this.tooltip},mxOutline.prototype.source=null,mxOutline.prototype.outline=null,mxOutline.prototype.graphRenderHint=mxConstants.RENDERING_HINT_FASTER,mxOutline.prototype.enabled=!0,mxOutline.prototype.showViewport=!0,mxOutline.prototype.border=10,mxOutline.prototype.sizerSize=8,mxOutline.prototype.updateOnPan=!1,mxOutline.prototype.sizerImage=null,mxOutline.prototype.suspended=!1,mxOutline.prototype.init=function(e){this.outline=new mxGraph(e,this.source.getModel(),this.graphRenderHint,this.source.getStylesheet()),this.outline.foldingEnabled=!1,this.outline.autoScroll=!1;var n=this.outline.graphModelChanged;this.outline.graphModelChanged=mxUtils.bind(this,function(e){!this.suspended&&null!=this.outline&&n.apply(this.outline,arguments)}),mxClient.IS_SVG&&((e=this.outline.getView().getCanvas().parentNode).setAttribute("shape-rendering","optimizeSpeed"),e.setAttribute("image-rendering","optimizeSpeed")),this.outline.labelsVisible=!1,this.outline.setEnabled(!1),this.updateHandler=mxUtils.bind(this,function(e,n){!this.suspended&&!this.active&&this.update()}),this.source.getModel().addListener(mxEvent.CHANGE,this.updateHandler),this.outline.addMouseListener(this),(e=this.source.getView()).addListener(mxEvent.SCALE,this.updateHandler),e.addListener(mxEvent.TRANSLATE,this.updateHandler),e.addListener(mxEvent.SCALE_AND_TRANSLATE,this.updateHandler),e.addListener(mxEvent.DOWN,this.updateHandler),e.addListener(mxEvent.UP,this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.panHandler=mxUtils.bind(this,function(e){this.updateOnPan&&this.updateHandler.apply(this,arguments)}),this.source.addListener(mxEvent.PAN,this.panHandler),this.refreshHandler=mxUtils.bind(this,function(e){this.outline.setStylesheet(this.source.getStylesheet()),this.outline.refresh()}),this.source.addListener(mxEvent.REFRESH,this.refreshHandler),this.bounds=new mxRectangle(0,0,0,0),this.selectionBorder=new mxRectangleShape(this.bounds,null,mxConstants.OUTLINE_COLOR,mxConstants.OUTLINE_STROKEWIDTH),this.selectionBorder.dialect=this.outline.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.init(this.outline.getView().getOverlayPane()),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.outline),this.selectionBorder.node.style.background="",this.sizer=this.createSizer(),this.sizer.init(this.outline.getView().getOverlayPane()),this.enabled&&(this.sizer.node.style.cursor="pointer"),mxEvent.addListener(this.sizer.node,mxClient.IS_TOUCH?"touchstart":"mousedown",mxUtils.bind(this,function(e){this.outline.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))})),this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display,this.selectionBorder.node.style.cursor="move",this.update(!1)},mxOutline.prototype.isEnabled=function(){return this.enabled},mxOutline.prototype.setEnabled=function(e){this.enabled=e},mxOutline.prototype.setZoomEnabled=function(e){this.sizer.node.style.visibility=e?"visible":"hidden"},mxOutline.prototype.refresh=function(){this.update(!0)},mxOutline.prototype.createSizer=function(){var e=null!=this.sizerImage?new mxImageShape(new mxRectangle(0,0,this.sizerImage.width,this.sizerImage.height),this.sizerImage.src):new mxRectangleShape(new mxRectangle(0,0,this.sizerSize,this.sizerSize),mxConstants.OUTLINE_HANDLE_FILLCOLOR,mxConstants.OUTLINE_HANDLE_STROKECOLOR);return e.dialect=this.outline.dialect,e},mxOutline.prototype.getSourceContainerSize=function(){return new mxRectangle(0,0,this.source.container.scrollWidth,this.source.container.scrollHeight)},mxOutline.prototype.getOutlineOffset=function(e){return null},mxOutline.prototype.update=function(e){if(null!=this.source){var n=this.source.view.scale,t=new mxRectangle((t=this.source.getGraphBounds()).x/n+this.source.panDx,t.y/n+this.source.panDy,t.width/n,t.height/n),a=new mxRectangle(0,0,this.source.container.clientWidth/n,this.source.container.clientHeight/n);(s=t.clone()).add(a);var i=this.getSourceContainerSize(),s=(a=Math.max(i.width/n,s.width),n=Math.max(i.height/n,s.height),Math.max(0,this.outline.container.clientWidth-this.border));i=Math.max(0,this.outline.container.clientHeight-this.border);if(0<(s=Math.min(s/a,i/n))){this.outline.getView().scale!=s&&(this.outline.getView().scale=s,e=!0),(a=this.outline.getView()).currentRoot!=this.source.getView().currentRoot&&a.setCurrentRoot(this.source.getView().currentRoot);i=(n=this.source.view.translate).x+this.source.panDx;var o=n.y+this.source.panDy;null!=(s=this.getOutlineOffset(s))&&(i+=s.x,o+=s.y),t.x<0&&(i-=t.x),t.y<0&&(o-=t.y),a.translate.x==i&&a.translate.y==o||(a.translate.x=i,a.translate.y=o,e=!0);t=a.translate,i=(s=this.source.getView().scale)/a.scale,o=1/a.scale;var r=this.source.container;this.bounds=new mxRectangle((t.x-n.x-this.source.panDx)/o,(t.y-n.y-this.source.panDy)/o,r.clientWidth/i,r.clientHeight/i),this.bounds.x+=this.source.container.scrollLeft*a.scale/s,this.bounds.y+=this.source.container.scrollTop*a.scale/s,(t=this.selectionBorder.bounds).x==this.bounds.x&&t.y==this.bounds.y&&t.width==this.bounds.width&&t.height==this.bounds.height||(this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()),t=this.sizer.bounds,a=new mxRectangle(this.bounds.x+this.bounds.width-t.width/2,this.bounds.y+this.bounds.height-t.height/2,t.width,t.height),t.x==a.x&&t.y==a.y&&t.width==a.width&&t.height==a.height||(this.sizer.bounds=a,"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw()),e&&this.outline.view.revalidate()}}},mxOutline.prototype.mouseDown=function(e,n){this.enabled&&this.showViewport&&(this.zoom=n.isSource(this.sizer),this.startX=n.getX(),this.startY=n.getY(),this.active=!0,this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)?(this.dx0=this.source.container.scrollLeft,this.dy0=this.source.container.scrollTop):this.dy0=this.dx0=0),n.consume()},mxOutline.prototype.mouseMove=function(e,n){if(this.active){this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display;var t=n.getX()-this.startX,a=n.getY()-this.startY,i=null;if(this.zoom)a=t/((i=this.source.container).clientWidth/i.clientHeight),i=new mxRectangle(this.bounds.x,this.bounds.y,Math.max(1,this.bounds.width+t),Math.max(1,this.bounds.height+a)),this.selectionBorder.bounds=i,this.selectionBorder.redraw();else{var s=this.outline.getView().scale;i=new mxRectangle(this.bounds.x+t,this.bounds.y+a,this.bounds.width,this.bounds.height);this.selectionBorder.bounds=i,this.selectionBorder.redraw(),t=t/s*this.source.getView().scale,a=a/s*this.source.getView().scale,this.source.panGraph(-t-this.dx0,-a-this.dy0)}t=this.sizer.bounds,this.sizer.bounds=new mxRectangle(i.x+i.width-t.width/2,i.y+i.height-t.height/2,t.width,t.height),"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw(),n.consume()}},mxOutline.prototype.mouseUp=function(e,n){if(this.active){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(0<Math.abs(t)||0<Math.abs(a)){if(this.zoom){a=this.selectionBorder.bounds.width;var i=this.source.getView().scale;this.source.zoomTo(i-t*i/a,!1)}else this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)||(this.source.panGraph(0,0),t/=this.outline.getView().scale,a/=this.outline.getView().scale,i=this.source.getView().translate,this.source.getView().setTranslate(i.x-t,i.y-a));this.update(),n.consume()}this.index=null,this.active=!1}},mxOutline.prototype.destroy=function(){null!=this.source&&(this.source.removeListener(this.panHandler),this.source.removeListener(this.refreshHandler),this.source.getModel().removeListener(this.updateHandler),this.source.getView().removeListener(this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.source=null),null!=this.outline&&(this.outline.removeMouseListener(this),this.outline.destroy(),this.outline=null),null!=this.selectionBorder&&(this.selectionBorder.destroy(),this.selectionBorder=null),null!=this.sizer&&(this.sizer.destroy(),this.sizer=null)},mxMultiplicity.prototype.type=null,mxMultiplicity.prototype.attr=null,mxMultiplicity.prototype.value=null,mxMultiplicity.prototype.source=null,mxMultiplicity.prototype.min=null,mxMultiplicity.prototype.max=null,mxMultiplicity.prototype.validNeighbors=null,mxMultiplicity.prototype.validNeighborsAllowed=!0,mxMultiplicity.prototype.countError=null,mxMultiplicity.prototype.typeError=null,mxMultiplicity.prototype.check=function(e,n,t,a,i,s){var o="";return(this.source&&this.checkTerminal(e,t,n)||!this.source&&this.checkTerminal(e,a,n))&&(null!=this.countError&&(this.source&&(0==this.max||i>=this.max)||!this.source&&(0==this.max||s>=this.max))&&(o+=this.countError+"\n"),null!=this.validNeighbors&&null!=this.typeError&&0<this.validNeighbors.length&&(this.checkNeighbors(e,n,t,a)||(o+=this.typeError+"\n"))),0<o.length?o:null},mxMultiplicity.prototype.checkNeighbors=function(e,n,t,a){n=e.model.getValue(t),a=e.model.getValue(a),t=!this.validNeighborsAllowed;for(var i=this.validNeighbors,s=0;s<i.length;s++){if(this.source&&this.checkType(e,a,i[s])){t=this.validNeighborsAllowed;break}if(!this.source&&this.checkType(e,n,i[s])){t=this.validNeighborsAllowed;break}}return t},mxMultiplicity.prototype.checkTerminal=function(e,n,t){return n=e.model.getValue(n),this.checkType(e,n,this.type,this.attr,this.value)},mxMultiplicity.prototype.checkType=function(e,n,t,a,i){return null!=n&&(isNaN(n.nodeType)?n==t:mxUtils.isNode(n,t,a,i))},mxLayoutManager.prototype=new mxEventSource,mxLayoutManager.prototype.constructor=mxLayoutManager,mxLayoutManager.prototype.graph=null,mxLayoutManager.prototype.bubbling=!0,mxLayoutManager.prototype.enabled=!0,mxLayoutManager.prototype.updateHandler=null,mxLayoutManager.prototype.moveHandler=null,mxLayoutManager.prototype.isEnabled=function(){return this.enabled},mxLayoutManager.prototype.setEnabled=function(e){this.enabled=e},mxLayoutManager.prototype.isBubbling=function(){return this.bubbling},mxLayoutManager.prototype.setBubbling=function(e){this.bubbling=e},mxLayoutManager.prototype.getGraph=function(){return this.graph},mxLayoutManager.prototype.setGraph=function(e){if(null!=this.graph){var n=this.graph.getModel();n.removeListener(this.undoHandler),this.graph.removeListener(this.moveHandler)}this.graph=e,null!=this.graph&&((n=this.graph.getModel()).addListener(mxEvent.BEFORE_UNDO,this.undoHandler),this.graph.addListener(mxEvent.MOVE_CELLS,this.moveHandler))},mxLayoutManager.prototype.getLayout=function(e){return null},mxLayoutManager.prototype.beforeUndo=function(e){e=this.getCellsForChanges(e.changes);var n=this.getGraph().getModel();if(this.isBubbling())for(var t=n.getParents(e);0<t.length;)e=e.concat(t),t=n.getParents(t);this.layoutCells(mxUtils.sortCells(e,!1))},mxLayoutManager.prototype.cellsMoved=function(e,n){if(null!=e&&null!=n)for(var t=mxUtils.convertPoint(this.getGraph().container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.getGraph().getModel(),i=0;i<e.length;i++){var s=this.getLayout(a.getParent(e[i]));null!=s&&s.moveCell(e[i],t.x,t.y)}},mxLayoutManager.prototype.getCellsForChanges=function(e){for(var n=[],t={},a=0;a<e.length;a++){if((i=e[a])instanceof mxRootChange)return[];for(var i=this.getCellsForChange(i),s=0;s<i.length;s++)if(null!=i[s]){var o=mxCellPath.create(i[s]);null==t[o]&&(t[o]=i[s],n.push(i[s]))}}return n},mxLayoutManager.prototype.getCellsForChange=function(e){var n=this.getGraph().getModel();return e instanceof mxChildChange?[e.child,e.previous,n.getParent(e.child)]:e instanceof mxTerminalChange||e instanceof mxGeometryChange?[e.cell,n.getParent(e.cell)]:[]},mxLayoutManager.prototype.layoutCells=function(e){if(0<e.length){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=null,a=0;a<e.length;a++)e[a]!=n.getRoot()&&e[a]!=t&&(t=e[a],this.executeLayout(this.getLayout(t),t));this.fireEvent(new mxEventObject(mxEvent.LAYOUT_CELLS,"cells",e))}finally{n.endUpdate()}}},mxLayoutManager.prototype.executeLayout=function(e,n){null!=e&&null!=n&&e.execute(n)},mxLayoutManager.prototype.destroy=function(){this.setGraph(null)},mxSpaceManager.prototype=new mxEventSource,mxSpaceManager.prototype.constructor=mxSpaceManager,mxSpaceManager.prototype.graph=null,mxSpaceManager.prototype.enabled=!0,mxSpaceManager.prototype.shiftRightwards=!0,mxSpaceManager.prototype.shiftDownwards=!0,mxSpaceManager.prototype.extendParents=!0,mxSpaceManager.prototype.resizeHandler=null,mxSpaceManager.prototype.foldHandler=null,mxSpaceManager.prototype.isCellIgnored=function(e){return!this.getGraph().getModel().isVertex(e)},mxSpaceManager.prototype.isCellShiftable=function(e){return this.getGraph().getModel().isVertex(e)&&this.getGraph().isCellMovable(e)},mxSpaceManager.prototype.isEnabled=function(){return this.enabled},mxSpaceManager.prototype.setEnabled=function(e){this.enabled=e},mxSpaceManager.prototype.isShiftRightwards=function(){return this.shiftRightwards},mxSpaceManager.prototype.setShiftRightwards=function(e){this.shiftRightwards=e},mxSpaceManager.prototype.isShiftDownwards=function(){return this.shiftDownwards},mxSpaceManager.prototype.setShiftDownwards=function(e){this.shiftDownwards=e},mxSpaceManager.prototype.isExtendParents=function(){return this.extendParents},mxSpaceManager.prototype.setExtendParents=function(e){this.extendParents=e},mxSpaceManager.prototype.getGraph=function(){return this.graph},mxSpaceManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.resizeHandler),this.graph.removeListener(this.foldHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.RESIZE_CELLS,this.resizeHandler),this.graph.addListener(mxEvent.FOLD_CELLS,this.foldHandler))},mxSpaceManager.prototype.cellsResized=function(e){if(null!=e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isCellIgnored(e[t])){this.cellResized(e[t]);break}}finally{n.endUpdate()}}},mxSpaceManager.prototype.cellResized=function(e){var n=this.getGraph(),t=n.getView(),a=n.getModel(),i=t.getState(e),s=t.getState(a.getParent(e));if(null!=i&&null!=s){var o=this.getCellsToShift(i),r=a.getGeometry(e);if(null!=o&&null!=r){var l=t.translate,d=t.scale,c=(t=i.x-s.origin.x-l.x*d,s=i.y-s.origin.y-l.y*d,l=i.x+i.width,i.y+i.height),m=i.width-r.width*d+t-r.x*d,u=i.height-r.height*d+s-r.y*d,p=1-r.width*d/i.width;i=1-r.height*d/i.height;a.beginUpdate();try{for(r=0;r<o.length;r++)o[r]!=e&&this.isCellShiftable(o[r])&&this.shiftCell(o[r],m,u,t,s,l,c,p,i,this.isExtendParents()&&n.isExtendParent(o[r]))}finally{a.endUpdate()}}}},mxSpaceManager.prototype.shiftCell=function(e,n,t,a,i,s,o,r,l,d){var c=(a=this.getGraph()).getView().getState(e);if(null!=c){var m=a.getModel();if(null!=(p=m.getGeometry(e))){m.beginUpdate();try{if(this.isShiftRightwards())if(c.x>=s)(p=p.clone()).translate(-n,0);else{var u=Math.max(0,c.x-x0);(p=p.clone()).translate(-r*u,0)}if(this.isShiftDownwards())if(c.y>=o)(p=p.clone()).translate(0,-t);else{var p,g=Math.max(0,c.y-i);(p=p.clone()).translate(0,-l*g)}p!=m.getGeometry(e)&&(m.setGeometry(e,p),d&&a.extendParent(e))}finally{m.endUpdate()}}}},mxSpaceManager.prototype.getCellsToShift=function(e){var n=this.getGraph(),t=n.getModel().getParent(e.cell),a=this.isShiftDownwards(),i=this.isShiftRightwards();return n.getCellsBeyond(e.x+(a?0:e.width),e.y+(a&&i?0:e.height),t,i,a)},mxSpaceManager.prototype.destroy=function(){this.setGraph(null)},mxSwimlaneManager.prototype=new mxEventSource,mxSwimlaneManager.prototype.constructor=mxSwimlaneManager,mxSwimlaneManager.prototype.graph=null,mxSwimlaneManager.prototype.enabled=!0,mxSwimlaneManager.prototype.horizontal=!0,mxSwimlaneManager.prototype.addEnabled=!0,mxSwimlaneManager.prototype.resizeEnabled=!0,mxSwimlaneManager.prototype.addHandler=null,mxSwimlaneManager.prototype.resizeHandler=null,mxSwimlaneManager.prototype.isEnabled=function(){return this.enabled},mxSwimlaneManager.prototype.setEnabled=function(e){this.enabled=e},mxSwimlaneManager.prototype.isHorizontal=function(){return this.horizontal},mxSwimlaneManager.prototype.setHorizontal=function(e){this.horizontal=e},mxSwimlaneManager.prototype.isAddEnabled=function(){return this.addEnabled},mxSwimlaneManager.prototype.setAddEnabled=function(e){this.addEnabled=e},mxSwimlaneManager.prototype.isResizeEnabled=function(){return this.resizeEnabled},mxSwimlaneManager.prototype.setResizeEnabled=function(e){this.resizeEnabled=e},mxSwimlaneManager.prototype.getGraph=function(){return this.graph},mxSwimlaneManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.addHandler),this.graph.removeListener(this.resizeHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.ADD_CELLS,this.addHandler),this.graph.addListener(mxEvent.CELLS_RESIZED,this.resizeHandler))},mxSwimlaneManager.prototype.isSwimlaneIgnored=function(e){return!this.getGraph().isSwimlane(e)},mxSwimlaneManager.prototype.isCellHorizontal=function(e){if(this.graph.isSwimlane(e)){var n=this.graph.view.getState(e);return e=null!=n?n.style:this.graph.getCellStyle(e),1==mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,1)}return!this.isHorizontal()},mxSwimlaneManager.prototype.cellsAdded=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)this.isSwimlaneIgnored(e[t])||this.swimlaneAdded(e[t])}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.swimlaneAdded=function(e){for(var n=this.getGraph().getModel(),t=n.getParent(e),a=n.getChildCount(t),i=null,s=0;s<a;s++){var o=n.getChildAt(t,s);if(o!=e&&!this.isSwimlaneIgnored(o)&&null!=(i=n.getGeometry(o)))break}null!=i&&this.resizeSwimlane(e,i.width,i.height)},mxSwimlaneManager.prototype.cellsResized=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isSwimlaneIgnored(e[t])){var a=n.getGeometry(e[t]);if(null!=a){for(var i=new mxRectangle(0,0,a.width,a.height),s=o=e[t];null!=s;){var o=s,r=(s=n.getParent(s),this.graph.isSwimlane(s)?this.graph.getStartSize(s):new mxRectangle);i.width+=r.width,i.height+=r.height}this.resizeSwimlane(o,i.width,i.height)}}}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.resizeSwimlane=function(e,n,t){var a=this.getGraph().getModel();a.beginUpdate();try{if(!this.isSwimlaneIgnored(e))if(null!=(r=a.getGeometry(e))){var i=this.isCellHorizontal(e);(i&&r.height!=t||!i&&r.width!=n)&&(r=r.clone(),i?r.height=t:r.width=n,a.setGeometry(e,r))}var s=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle;n-=s.width,t-=s.height;for(var o=a.getChildCount(e),r=0;r<o;r++){var l=a.getChildAt(e,r);this.resizeSwimlane(l,n,t)}}finally{a.endUpdate()}},mxSwimlaneManager.prototype.destroy=function(){this.setGraph(null)},mxTemporaryCellStates.prototype.view=null,mxTemporaryCellStates.prototype.oldStates=null,mxTemporaryCellStates.prototype.oldBounds=null,mxTemporaryCellStates.prototype.oldScale=null,mxTemporaryCellStates.prototype.destroy=function(){this.view.setScale(this.oldScale),this.view.setStates(this.oldStates),this.view.setGraphBounds(this.oldBounds)},mxCellStatePreview.prototype.graph=null,mxCellStatePreview.prototype.deltas=null,mxCellStatePreview.prototype.count=0,mxCellStatePreview.prototype.isEmpty=function(){return 0==this.count},mxCellStatePreview.prototype.moveState=function(e,n,t,a,i){a=null==a||a,i=null==i||i;var s=mxCellPath.create(e.cell),o=this.deltas[s];return null==o?(o=new mxPoint(n,t),this.deltas[s]=o,this.count++):a?(o.X+=n,o.Y+=t):(o.X=n,o.Y=t),i&&this.addEdges(e),o},mxCellStatePreview.prototype.show=function(e){var n,t=this.graph.getModel(),a=t.getRoot();for(n in this.deltas){var i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n];i=this.graph.view.getState(t.getParent(i));this.translateState(i,s,o.x,o.y)}for(n in this.deltas)i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n],i=this.graph.view.getState(t.getParent(i)),this.revalidateState(i,s,o.x,o.y,e)},mxCellStatePreview.prototype.translateState=function(e,n,t,a){if(null!=n){var i=this.graph.getModel();if(i.isVertex(n.cell)){n.invalid=!0,this.graph.view.validateBounds(e,n.cell),e=i.getGeometry(n.cell);var s=mxCellPath.create(n.cell);0==t&&0==a||null==e||e.relative&&null==this.deltas[s]||(n.x+=t,n.y+=a)}for(e=i.getChildCount(n.cell),s=0;s<e;s++)this.translateState(n,this.graph.view.getState(i.getChildAt(n.cell,s)),t,a)}},mxCellStatePreview.prototype.revalidateState=function(e,n,t,a,i){if(null!=n){n.invalid=!0,this.graph.view.validatePoints(e,n.cell);var s=mxCellPath.create(n.cell),o=this.graph.getModel(),r=this.graph.getCellGeometry(n.cell);for(0==t&&0==a||null==r||!r.relative||!o.isVertex(n.cell)||null!=e&&!o.isVertex(e.cell)&&null==this.deltas[s]||(n.x+=t,n.y+=a,this.graph.cellRenderer.redraw(n)),null!=i&&i(n),e=o.getChildCount(n.cell),s=0;s<e;s++)this.revalidateState(n,this.graph.view.getState(o.getChildAt(n.cell,s)),t,a,i)}},mxCellStatePreview.prototype.addEdges=function(e){for(var n=this.graph.getModel(),t=n.getEdgeCount(e.cell),a=0;a<t;a++){var i=this.graph.view.getState(n.getEdgeAt(e.cell,a));null!=i&&this.moveState(i,0,0)}},mxConnectionConstraint.prototype.point=null,mxConnectionConstraint.prototype.perimeter=null,mxGraphHandler.prototype.graph=null,mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50,mxGraphHandler.prototype.enabled=!0,mxGraphHandler.prototype.highlightEnabled=!0,mxGraphHandler.prototype.cloneEnabled=!0,mxGraphHandler.prototype.moveEnabled=!0,mxGraphHandler.prototype.guidesEnabled=!1,mxGraphHandler.prototype.guide=null,mxGraphHandler.prototype.currentDx=null,mxGraphHandler.prototype.currentDy=null,mxGraphHandler.prototype.updateCursor=!0,mxGraphHandler.prototype.selectEnabled=!0,mxGraphHandler.prototype.removeCellsFromParent=!0,mxGraphHandler.prototype.connectOnDrop=!1,mxGraphHandler.prototype.scrollOnMove=!0,mxGraphHandler.prototype.minimumSize=6,mxGraphHandler.prototype.previewColor="black",mxGraphHandler.prototype.htmlPreview=!1,mxGraphHandler.prototype.shape=null,mxGraphHandler.prototype.scaleGrid=!1,mxGraphHandler.prototype.rotationEnabled=!0,mxGraphHandler.prototype.isEnabled=function(){return this.enabled},mxGraphHandler.prototype.setEnabled=function(e){this.enabled=e},mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled},mxGraphHandler.prototype.setCloneEnabled=function(e){this.cloneEnabled=e},mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled},mxGraphHandler.prototype.setMoveEnabled=function(e){this.moveEnabled=e},mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled},mxGraphHandler.prototype.setSelectEnabled=function(e){this.selectEnabled=e},mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent},mxGraphHandler.prototype.setRemoveCellsFromParent=function(e){this.removeCellsFromParent=e},mxGraphHandler.prototype.getInitialCellForEvent=function(e){return e.getCell()},mxGraphHandler.prototype.isDelayedSelection=function(e){return this.graph.isCellSelected(e)},mxGraphHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&null!=n.getState()){var t=this.getInitialCellForEvent(n);if(this.cell=null,this.delayedSelection=this.isDelayedSelection(t),this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(t,n.getEvent()),this.isMoveEnabled()){var a=this.graph.model,i=a.getGeometry(t);this.graph.isCellMovable(t)&&(!a.isEdge(t)||1<this.graph.getSelectionCount()||null!=i.points&&0<i.points.length||null==a.getTerminal(t,!0)||null==a.getTerminal(t,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(n.getEvent())&&this.graph.isCellsCloneable())&&this.start(t,n.getX(),n.getY()),this.cellWasClicked=!0,!mxClient.IS_SF&&!mxClient.IS_GC||"SELECT"!=n.getSource().nodeName?n.consume():mxClient.IS_SF&&"SELECT"==n.getSource().nodeName&&(this.cellWasClicked=!1,this.first=null)}}},mxGraphHandler.prototype.getGuideStates=function(){var e=this.graph.getDefaultParent(),n=this.graph.getModel(),t=mxUtils.bind(this,function(e){return null!=this.graph.view.getState(e)&&n.isVertex(e)&&null!=n.getGeometry(e)&&!n.getGeometry(e).relative});return this.graph.view.getCellStates(n.filterDescendants(t,e))},mxGraphHandler.prototype.getCells=function(e){return!this.delayedSelection&&this.graph.isCellMovable(e)?[e]:this.graph.getMovableCells(this.graph.getSelectionCells())},mxGraphHandler.prototype.getPreviewBounds=function(e){return null!=(e=this.getBoundingBox(e))&&(e.grow(-1,-1),e.width<this.minimumSize&&(e.x-=(this.minimumSize-e.width)/2,e.width=this.minimumSize),e.height<this.minimumSize&&(e.y-=(this.minimumSize-e.height)/2,e.height=this.minimumSize)),e},mxGraphHandler.prototype.getBoundingBox=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.graph.view.getState(e[a]);if(null!=i){var s=i;t.isVertex(e[a])&&null!=i.shape&&null!=i.shape.boundingBox&&(s=i.shape.boundingBox),null==n?n=new mxRectangle(s.x,s.y,s.width,s.height):n.add(s)}}return n},mxGraphHandler.prototype.createPreviewShape=function(e){return(e=new mxRectangleShape(e,null,this.previewColor)).isDashed=!0,this.htmlPreview?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.pointerEvents=!1),e},mxGraphHandler.prototype.start=function(e,n,t){this.cell=e,this.first=mxUtils.convertPoint(this.graph.container,n,t),this.cells=this.getCells(this.cell),this.bounds=this.graph.getView().getBounds(this.cells),this.pBounds=this.getPreviewBounds(this.cells),this.guidesEnabled&&(this.guide=new mxGuide(this.graph,this.getGuideStates()))},mxGraphHandler.prototype.useGuidesForEvent=function(e){return null==this.guide||this.guide.isEnabledForEvent(e.getEvent())},mxGraphHandler.prototype.snap=function(e){var n=this.scaleGrid?this.graph.view.scale:1;return e.x=this.graph.snap(e.x/n)*n,e.y=this.graph.snap(e.y/n)*n,e},mxGraphHandler.prototype.mouseMove=function(e,n){var t=this.graph;if(!n.isConsumed()&&t.isMouseDown&&null!=this.cell&&null!=this.first&&null!=this.bounds){var a=(s=mxUtils.convertPoint(t.container,n.getX(),n.getY())).x-this.first.x,i=s.y-this.first.y,s=t.tolerance;if(null!=this.shape||Math.abs(a)>s||Math.abs(i)>s){null==this.highlight&&(this.highlight=new mxCellHighlight(this.graph,mxConstants.DROP_TARGET_COLOR,3)),null==this.shape&&(this.shape=this.createPreviewShape(this.bounds));var o=t.isGridEnabledEvent(n.getEvent());s=!0;if(null!=this.guide&&this.useGuidesForEvent(n))s=!1,a=(i=this.guide.move(this.bounds,new mxPoint(a,i),o)).x,i=i.y;else if(o){var r=t.getView().translate,l=t.getView().scale;o=this.bounds.x-(t.snap(this.bounds.x/l-r.x)+r.x)*l,r=this.bounds.y-(t.snap(this.bounds.y/l-r.y)+r.y)*l,a=(i=this.snap(new mxPoint(a,i))).x-o,i=i.y-r}for(null!=this.guide&&s&&this.guide.hide(),t.isConstrainedEvent(n.getEvent())&&(Math.abs(a)>Math.abs(i)?i=0:a=0),this.currentDx=a,this.currentDy=i,this.updatePreviewShape(),s=null,i=n.getCell(),t.isDropEnabled()&&this.highlightEnabled&&(s=t.getDropTarget(this.cells,n.getEvent(),i)),o=s,r=t.getModel();null!=o&&o!=this.cells[0];)o=r.getParent(o);l=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled();var d=!1;null==(a=t.getView().getState(s))||null!=o||r.getParent(this.cell)==s&&!l?(this.target=null,this.connectOnDrop&&null!=i&&1==this.cells.length&&t.getModel().isVertex(i)&&t.isCellConnectable(i)&&(null!=(a=t.getView().getState(i))&&(t=null==t.getEdgeValidationError(null,this.cell,i)?mxConstants.VALID_COLOR:mxConstants.INVALID_CONNECT_TARGET_COLOR,this.setHighlightColor(t),d=!0))):(this.target!=s&&(this.target=s,this.setHighlightColor(mxConstants.DROP_TARGET_COLOR)),d=!0),null!=a&&d?this.highlight.highlight(a):this.highlight.hide()}n.consume(),mxEvent.consume(n.getEvent())}else!this.isMoveEnabled()&&!this.isCloneEnabled()||!this.updateCursor||n.isConsumed()||null==n.getState()||t.isMouseDown||(null==(a=t.getCursorForCell(n.getCell()))&&t.isEnabled()&&t.isCellMovable(n.getCell())&&(a=t.getModel().isEdge(n.getCell())?mxConstants.CURSOR_MOVABLE_EDGE:mxConstants.CURSOR_MOVABLE_VERTEX),n.getState().setCursor(a),n.consume())},mxGraphHandler.prototype.updatePreviewShape=function(){null!=this.shape&&(this.shape.bounds=new mxRectangle(Math.round(this.pBounds.x+this.currentDx-this.graph.panDx),Math.round(this.pBounds.y+this.currentDy-this.graph.panDy),this.pBounds.width,this.pBounds.height),this.shape.redraw())},mxGraphHandler.prototype.setHighlightColor=function(e){null!=this.highlight&&this.highlight.setHighlightColor(e)},mxGraphHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()){var t=this.graph;if(null!=this.cell&&null!=this.first&&null!=this.shape&&null!=this.currentDx&&null!=this.currentDy){var a=t.getView().scale,i=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled(),s=this.currentDx/a,o=(a=this.currentDy/a,n.getCell());this.connectOnDrop&&null==this.target&&null!=o&&t.getModel().isVertex(o)&&t.isCellConnectable(o)&&t.isEdgeValid(null,this.cell,o)?t.connectionHandler.connect(this.cell,o,n.getEvent()):(o=this.target,t.isSplitEnabled()&&t.isSplitTarget(o,this.cells,n.getEvent())?t.splitEdge(o,this.cells,null,s,a):this.moveCells(this.cells,s,a,i,this.target,n.getEvent()))}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(n)}this.cellWasClicked&&n.consume(),this.reset()},mxGraphHandler.prototype.selectDelayed=function(e){this.graph.selectCellForEvent(this.cell,e.getEvent())},mxGraphHandler.prototype.reset=function(){this.destroyShapes(),this.delayedSelection=this.cellWasClicked=!1,this.target=this.cell=this.first=this.guides=this.currentDy=this.currentDx=null},mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){if(this.graph.getModel().isVertex(e)){if(e=this.graph.getView().getState(e),t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(t),mxEvent.getClientY(t)),0!=(a=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))){n=Math.cos(-a);var a=Math.sin(-a),i=new mxPoint(e.getCenterX(),e.getCenterY());t=mxUtils.getRotatedPoint(t,n,a,i)}return null!=e&&!mxUtils.contains(e,t.x,t.y)}return!1},mxGraphHandler.prototype.moveCells=function(e,n,t,a,i,s){a&&(e=this.graph.getCloneableCells(e)),null==i&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(this.graph.getModel().getParent(this.cell),e,s)&&(i=this.graph.getDefaultParent()),e=this.graph.moveCells(e,n-this.graph.panDx/this.graph.view.scale,t-this.graph.panDy/this.graph.view.scale,a,i,s),this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(e[0]),a&&this.graph.setSelectionCells(e)},mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.guide&&(this.guide.destroy(),this.guide=null),null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)},mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.destroyShapes()},mxPanningHandler.prototype=new mxPopupMenu,mxPanningHandler.prototype.constructor=mxPanningHandler,mxPanningHandler.prototype.graph=null,mxPanningHandler.prototype.triggerX=null,mxPanningHandler.prototype.triggerY=null,mxPanningHandler.prototype.usePopupTrigger=!0,mxPanningHandler.prototype.useLeftButtonForPanning=!1,mxPanningHandler.prototype.selectOnPopup=!0,mxPanningHandler.prototype.clearSelectionOnBackground=!0,mxPanningHandler.prototype.ignoreCell=!1,mxPanningHandler.prototype.previewEnabled=!0,mxPanningHandler.prototype.useGrid=!1,mxPanningHandler.prototype.panningEnabled=!0,mxPanningHandler.prototype.isPanningEnabled=function(){return this.panningEnabled},mxPanningHandler.prototype.setPanningEnabled=function(e){this.panningEnabled=e},mxPanningHandler.prototype.init=function(){mxPopupMenu.prototype.init.apply(this),mxEvent.addListener(this.div,mxClient.IS_TOUCH?"touchmove":"mousemove",mxUtils.bind(this,function(e){this.graph.tooltipHandler.hide()}))},mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())&&mxEvent.isLeftMouseButton(n)||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)},mxPanningHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()){this.hideMenu(),this.dx0=-this.graph.container.scrollLeft,this.dy0=-this.graph.container.scrollTop;var t=mxUtils.convertPoint(this.graph.container,n.getX(),n.getY());this.triggerX=t.x,this.triggerY=t.y,this.popupTrigger=this.isPopupTrigger(n),this.panningTrigger=this.isPanningEnabled()&&this.isPanningTrigger(n),this.startX=n.getX(),this.startY=n.getY(),this.panningTrigger&&this.consumePanningTrigger(n)}},mxPanningHandler.prototype.consumePanningTrigger=function(e){e.consume()},mxPanningHandler.prototype.mouseMove=function(e,n){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(this.active)this.previewEnabled&&(this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a)),this.graph.panGraph(t+this.dx0,a+this.dy0)),this.fireEvent(new mxEventObject(mxEvent.PAN,"event",n)),n.consume();else if(this.panningTrigger){var i=this.active;this.active=Math.abs(t)>this.graph.tolerance||Math.abs(a)>this.graph.tolerance,!i&&this.active&&this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",n))}},mxPanningHandler.prototype.mouseUp=function(e,n){var t=Math.abs(n.getX()-this.startX),a=Math.abs(n.getY()-this.startY);if(this.active){if(!this.graph.useScrollbarsForPanning||!mxUtils.hasScrollbars(this.graph.container)){t=n.getX()-this.startX,a=n.getY()-this.startY,this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a));var i=this.graph.getView().scale,s=this.graph.getView().translate;this.graph.panGraph(0,0),this.panGraph(s.x+t/i,s.y+a/i)}this.active=!1,this.fireEvent(new mxEventObject(mxEvent.PAN_END,"event",n)),n.consume()}else this.popupTrigger&&t<this.graph.tolerance&&a<this.graph.tolerance&&(t=this.getCellForPopupEvent(n),this.graph.isEnabled()&&this.selectOnPopup&&null!=t&&!this.graph.isCellSelected(t)?this.graph.setSelectionCell(t):this.clearSelectionOnBackground&&null==t&&this.graph.clearSelection(),this.graph.tooltipHandler.hide(),a=mxUtils.getScrollOrigin(),a=new mxPoint(n.getX()+a.x,n.getY()+a.y),this.popup(a.x+1,a.y+1,t,n.getEvent()),n.consume());this.popupTrigger=this.panningTrigger=!1},mxPanningHandler.prototype.getCellForPopupEvent=function(e){return e.getCell()},mxPanningHandler.prototype.panGraph=function(e,n){this.graph.getView().setTranslate(e,n)},mxPanningHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxPopupMenu.prototype.destroy.apply(this)},mxUtils.extend(mxCellMarker,mxEventSource),mxCellMarker.prototype.graph=null,mxCellMarker.prototype.enabled=!0,mxCellMarker.prototype.hotspot=mxConstants.DEFAULT_HOTSPOT,mxCellMarker.prototype.hotspotEnabled=!1,mxCellMarker.prototype.validColor=null,mxCellMarker.prototype.invalidColor=null,mxCellMarker.prototype.currentColor=null,mxCellMarker.prototype.validState=null,mxCellMarker.prototype.markedState=null,mxCellMarker.prototype.setEnabled=function(e){this.enabled=e},mxCellMarker.prototype.isEnabled=function(){return this.enabled},mxCellMarker.prototype.setHotspot=function(e){this.hotspot=e},mxCellMarker.prototype.getHotspot=function(){return this.hotspot},mxCellMarker.prototype.setHotspotEnabled=function(e){this.hotspotEnabled=e},mxCellMarker.prototype.isHotspotEnabled=function(){return this.hotspotEnabled},mxCellMarker.prototype.hasValidState=function(){return null!=this.validState},mxCellMarker.prototype.getValidState=function(){return this.validState},mxCellMarker.prototype.getMarkedState=function(){return this.markedState},mxCellMarker.prototype.reset=function(){(this.validState=null)!=this.markedState&&(this.markedState=null,this.unmark())},mxCellMarker.prototype.process=function(e){var n=null;if(this.isEnabled()){var t=null!=(n=this.getState(e))&&this.isValidState(n);e=this.getMarkerColor(e.getEvent(),n,t),this.validState=t?n:null,n==this.markedState&&e==this.currentColor||(this.currentColor=e,null!=n&&null!=this.currentColor?(this.markedState=n,this.mark()):null!=this.markedState&&(this.markedState=null,this.unmark()))}return n},mxCellMarker.prototype.markCell=function(e,n){var t=this.graph.getView().getState(e);null!=t&&(this.currentColor=null!=n?n:this.validColor,this.markedState=t,this.mark())},mxCellMarker.prototype.mark=function(){this.highlight.setHighlightColor(this.currentColor),this.highlight.highlight(this.markedState),this.fireEvent(new mxEventObject(mxEvent.MARK,"state",this.markedState))},mxCellMarker.prototype.unmark=function(){this.mark()},mxCellMarker.prototype.isValidState=function(e){return!0},mxCellMarker.prototype.getMarkerColor=function(e,n,t){return t?this.validColor:this.invalidColor},mxCellMarker.prototype.getState=function(e){var n=this.graph.getView();return cell=this.getCell(e),null!=(n=this.getStateToMark(n.getState(cell)))&&this.intersects(n,e)?n:null},mxCellMarker.prototype.getCell=function(e){return e.getCell()},mxCellMarker.prototype.getStateToMark=function(e){return e},mxCellMarker.prototype.intersects=function(e,n){return!this.hotspotEnabled||mxUtils.intersectsHotspot(e,n.getGraphX(),n.getGraphY(),this.hotspot,mxConstants.MIN_HOTSPOT_SIZE,mxConstants.MAX_HOTSPOT_SIZE)},mxCellMarker.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),this.highlight.destroy()},mxUtils.extend(mxSelectionCellsHandler,mxEventSource),mxSelectionCellsHandler.prototype.graph=null,mxSelectionCellsHandler.prototype.enabled=!0,mxSelectionCellsHandler.prototype.refreshHandler=null,mxSelectionCellsHandler.prototype.maxHandlers=100,mxSelectionCellsHandler.prototype.handlers=null,mxSelectionCellsHandler.prototype.isEnabled=function(){return this.enabled},mxSelectionCellsHandler.prototype.setEnabled=function(e){this.enabled=e},mxSelectionCellsHandler.prototype.getHandler=function(e){return this.handlers.get(e)},mxSelectionCellsHandler.prototype.reset=function(){this.handlers.visit(function(e,n){n.reset.apply(n)})},mxSelectionCellsHandler.prototype.refresh=function(){var e=this.handlers;this.handlers=new mxDictionary;for(var n=this.graph.getSelectionCells(),t=0;t<n.length;t++){var a=this.graph.view.getState(n[t]);if(null!=a){var i=e.remove(n[t]);null!=i&&(i.state!=a?(i.destroy(),i=null):i.redraw()),null==i&&(i=this.graph.createHandler(a),this.fireEvent(new mxEventObject(mxEvent.ADD,"state",a))),null!=i&&this.handlers.put(n[t],i)}}e.visit(mxUtils.bind(this,function(e,n){this.fireEvent(new mxEventObject(mxEvent.REMOVE,"state",n.state)),n.destroy()}))},mxSelectionCellsHandler.prototype.mouseDown=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseDown.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseMove=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseMove.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseUp=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseUp.apply(n,t)})}},mxSelectionCellsHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.refreshHandler&&(this.graph.getSelectionModel().removeListener(this.refreshHandler),this.graph.getModel().removeListener(this.refreshHandler),this.graph.getView().removeListener(this.refreshHandler),this.refreshHandler=null)},mxUtils.extend(mxConnectionHandler,mxEventSource),mxConnectionHandler.prototype.graph=null,mxConnectionHandler.prototype.factoryMethod=!0,mxConnectionHandler.prototype.moveIconFront=!1,mxConnectionHandler.prototype.moveIconBack=!1,mxConnectionHandler.prototype.connectImage=null,mxConnectionHandler.prototype.targetConnectImage=!1,mxConnectionHandler.prototype.enabled=!0,mxConnectionHandler.prototype.select=!0,mxConnectionHandler.prototype.createTarget=!1;mxConnectionHandler.prototype.marker=null,mxConnectionHandler.prototype.constraintHandler=null,mxConnectionHandler.prototype.error=null,mxConnectionHandler.prototype.waypointsEnabled=!1,mxConnectionHandler.prototype.tapAndHoldEnabled=!0,mxConnectionHandler.prototype.tapAndHoldDelay=500,mxConnectionHandler.prototype.tapAndHoldInProgress=!1,mxConnectionHandler.prototype.tapAndHoldValid=!1,mxConnectionHandler.prototype.tapAndHoldTolerance=4,mxConnectionHandler.prototype.initialTouchX=0,mxConnectionHandler.prototype.initialTouchY=0,mxConnectionHandler.prototype.ignoreMouseDown=!1,mxConnectionHandler.prototype.first=null,mxConnectionHandler.prototype.connectIconOffset=new mxPoint(0,mxConstants.TOOLTIP_VERTICAL_OFFSET),mxConnectionHandler.prototype.edgeState=null,mxConnectionHandler.prototype.changeHandler=null,mxConnectionHandler.prototype.drillHandler=null,mxConnectionHandler.prototype.mouseDownCounter=0,mxConnectionHandler.prototype.movePreviewAway=mxClient.IS_VML,mxConnectionHandler.prototype.isEnabled=function(){return this.enabled},mxConnectionHandler.prototype.setEnabled=function(e){this.enabled=e},mxConnectionHandler.prototype.isCreateTarget=function(){return this.createTarget},mxConnectionHandler.prototype.setCreateTarget=function(e){this.createTarget=e},mxConnectionHandler.prototype.createShape=function(){var e=new mxPolyline([],mxConstants.INVALID_COLOR);if(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=!0,this.graph.dialect==mxConstants.DIALECT_SVG)e.node.setAttribute("pointer-events","none");else{var n=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(e.node,this.graph,n)}return e},mxConnectionHandler.prototype.init=function(){this.graph.addMouseListener(this),this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.changeHandler=mxUtils.bind(this,function(e){null!=this.iconState&&(this.iconState=this.graph.getView().getState(this.iconState.cell)),null!=this.iconState?this.redrawIcons(this.icons,this.iconState):(this.destroyIcons(this.icons),this.previous=null),this.constraintHandler.reset()}),this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE,this.changeHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.changeHandler),this.drillHandler=mxUtils.bind(this,function(e){this.destroyIcons(this.icons)}),this.graph.addListener(mxEvent.START_EDITING,this.drillHandler),this.graph.getView().addListener(mxEvent.DOWN,this.drillHandler),this.graph.getView().addListener(mxEvent.UP,this.drillHandler)},mxConnectionHandler.prototype.isConnectableCell=function(e){return!0},mxConnectionHandler.prototype.createMarker=function(){var a=new mxCellMarker(this.graph);return a.hotspotEnabled=!0,a.getCell=mxUtils.bind(this,function(e,n){return n=mxCellMarker.prototype.getCell.apply(a,arguments),this.error=null,this.isConnectableCell(n)?(null!=n?this.isConnecting()?null!=this.previous&&(this.error=this.validateConnection(this.previous.cell,n),null!=this.error&&0==this.error.length&&(n=null,this.isCreateTarget()&&(this.error=null))):this.isValidSource(n)||(n=null):this.isConnecting()&&!this.isCreateTarget()&&!this.graph.allowDanglingEdges&&(this.error=""),n):null}),a.isValidState=mxUtils.bind(this,function(e){return this.isConnecting()?null==this.error:mxCellMarker.prototype.isValidState.apply(a,arguments)}),a.getMarkerColor=mxUtils.bind(this,function(e,n,t){return null==this.connectImage||this.isConnecting()?mxCellMarker.prototype.getMarkerColor.apply(a,arguments):null}),a.intersects=mxUtils.bind(this,function(e,n){return!(null==this.connectImage&&!this.isConnecting())||mxCellMarker.prototype.intersects.apply(a,arguments)}),a},mxConnectionHandler.prototype.start=function(e,n,t,a){this.previous=e,this.first=new mxPoint(n,t),this.edgeState=null!=a?a:this.createEdgeState(null),this.marker.currentColor=this.marker.validColor,this.marker.markedState=e,this.marker.mark(),this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous))},mxConnectionHandler.prototype.isConnecting=function(){return null!=this.first&&null!=this.shape},mxConnectionHandler.prototype.isValidSource=function(e){return this.graph.isValidSource(e)},mxConnectionHandler.prototype.isValidTarget=function(e){return!0},mxConnectionHandler.prototype.validateConnection=function(e,n){return this.isValidTarget(n)?this.graph.getEdgeValidationError(null,e,n):""},mxConnectionHandler.prototype.getConnectImage=function(e){return this.connectImage},mxConnectionHandler.prototype.isMoveIconToFrontForState=function(e){return null!=e.text&&e.text.node.parentNode==this.graph.container||this.moveIconFront},mxConnectionHandler.prototype.createIcons=function(e){if(null==(i=this.getConnectImage(e))||null==e)return null;this.iconState=e;var n=[],t=new mxImageShape(new mxRectangle(0,0,i.width,i.height),i.src,null,null,0);t.preserveImageAspect=!1,this.isMoveIconToFrontForState(e)?(t.dialect=mxConstants.DIALECT_STRICTHTML,t.init(this.graph.container)):(t.dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.moveIconBack&&null!=t.node.previousSibling&&t.node.parentNode.insertBefore(t.node,t.node.parentNode.firstChild)),t.node.style.cursor=mxConstants.CURSOR_CONNECT;var a=mxUtils.bind(this,function(){return null!=this.currentState?this.currentState:e}),i=mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(this.icon=t,this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,a())))});return mxEvent.redirectMouseEvents(t.node,this.graph,a,i),n.push(t),this.redrawIcons(n,this.iconState),n},mxConnectionHandler.prototype.redrawIcons=function(e,n){if(null!=e&&null!=e[0]&&null!=n){var t=this.getIconPosition(e[0],n);e[0].bounds.x=t.x,e[0].bounds.y=t.y,e[0].redraw()}},mxConnectionHandler.prototype.getIconPosition=function(e,n){var t=this.graph.getView().scale,a=n.getCenterX(),i=n.getCenterY();if(this.graph.isSwimlane(n.cell)){a=0!=(s=this.graph.getStartSize(n.cell)).width?n.x+s.width*t/2:a,i=0!=s.height?n.y+s.height*t/2:i;if(0!=(s=mxUtils.toRadians(mxUtils.getValue(n.style,mxConstants.STYLE_ROTATION)||0))){t=Math.cos(s);var s=Math.sin(s),o=new mxPoint(n.getCenterX(),n.getCenterY());a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),t,s,o)).x,i=i.y}}return new mxPoint(a-e.bounds.width/2,i-e.bounds.height/2)},mxConnectionHandler.prototype.destroyIcons=function(e){if(null!=e){this.iconState=null;for(var n=0;n<e.length;n++)e[n].destroy()}},mxConnectionHandler.prototype.isStartEvent=function(e){return!this.graph.isForceMarqueeEvent(e.getEvent())&&(null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint||null!=this.previous&&null==this.error&&(null==this.icons||null!=this.icons&&null!=this.icon))},mxConnectionHandler.prototype.mouseDown=function(e,n){if(this.mouseDownCounter++,this.isEnabled()&&this.graph.isEnabled()&&!n.isConsumed()&&!this.isConnecting()&&this.isStartEvent(n)){if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint?(this.sourceConstraint=this.constraintHandler.currentConstraint,this.previous=this.constraintHandler.currentFocus,this.first=this.constraintHandler.currentPoint.clone()):this.first=new mxPoint(n.getGraphX(),n.getGraphY()),this.edgeState=this.createEdgeState(n),this.mouseDownCounter=1,this.waypointsEnabled&&null==this.shape&&(this.waypoints=null,this.shape=this.createShape()),null==this.previous&&null!=this.edgeState){var t=this.graph.getPointForEvent(n.getEvent());this.edgeState.cell.geometry.setTerminalPoint(t,!0)}this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)),n.consume()}else if(mxClient.IS_TOUCH&&this.tapAndHoldEnabled&&!this.tapAndHoldInProgress&&this.isEnabled()&&this.graph.isEnabled()&&!this.isConnecting()){this.tapAndHoldInProgress=!0,this.initialTouchX=n.getX(),this.initialTouchY=n.getY();var a=this.graph.view.getState(this.marker.getCell(n));this.tapAndHoldThread&&window.clearTimeout(this.tapAndHoldThread),this.tapAndHoldThread=window.setTimeout(mxUtils.bind(this,function(){this.tapAndHoldValid&&this.tapAndHold(n,a),this.tapAndHoldValid=this.tapAndHoldInProgress=!1}),this.tapAndHoldDelay),this.tapAndHoldValid=!0}this.selectedIcon=this.icon,this.icon=null},mxConnectionHandler.prototype.tapAndHold=function(e,n){null!=n&&(this.marker.currentColor=this.marker.validColor,this.marker.markedState=n,this.marker.mark(),this.first=new mxPoint(e.getGraphX(),e.getGraphY()),this.edgeState=this.createEdgeState(e),this.previous=n,this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)))},mxConnectionHandler.prototype.isImmediateConnectSource=function(e){return!this.graph.isCellMovable(e.cell)},mxConnectionHandler.prototype.createEdgeState=function(e){return null},mxConnectionHandler.prototype.updateCurrentState=function(e){var n=this.marker.process(e);this.constraintHandler.update(e,null==this.first),this.currentState=n},mxConnectionHandler.prototype.convertWaypoint=function(e){var n=this.graph.getView().getScale(),t=this.graph.getView().getTranslate();e.x=e.x/n-t.x,e.y=e.y/n-t.y},mxConnectionHandler.prototype.mouseMove=function(e,n){if(this.tapAndHoldValid&&(this.tapAndHoldValid=Math.abs(this.initialTouchX-n.getX())<this.tapAndHoldTolerance&&Math.abs(this.initialTouchY-n.getY())<this.tapAndHoldTolerance),n.isConsumed()||!this.ignoreMouseDown&&null==this.first&&this.graph.isMouseDown)this.constraintHandler.reset();else{if(!this.isEnabled()&&null!=this.currentState&&(this.destroyIcons(this.icons),this.currentState=null),(null!=this.first||this.isEnabled()&&this.graph.isEnabled())&&this.updateCurrentState(n),null!=this.first){var t=this.graph.getView().scale,a=null,i=t=new mxPoint(this.graph.snap(n.getGraphX()/t)*t,this.graph.snap(n.getGraphY()/t)*t);null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint&&(a=this.constraintHandler.currentConstraint,i=this.constraintHandler.currentPoint.clone());var s=this.first;if(null!=this.selectedIcon){var o=this.selectedIcon.bounds.width,r=this.selectedIcon.bounds.height;null!=this.currentState&&this.targetConnectImage?(o=this.getIconPosition(this.selectedIcon,this.currentState),this.selectedIcon.bounds.x=o.x,this.selectedIcon.bounds.y=o.y):(o=new mxRectangle(n.getGraphX()+this.connectIconOffset.x,n.getGraphY()+this.connectIconOffset.y,o,r),this.selectedIcon.bounds=o),this.selectedIcon.redraw()}if(null!=this.edgeState){if(this.edgeState.absolutePoints=[null,null!=this.currentState?null:i],this.graph.view.updateFixedTerminalPoint(this.edgeState,this.previous,!0,this.sourceConstraint),null!=this.currentState&&(null==a&&(a=this.graph.getConnectionConstraint(this.edgeState,this.previous,!1)),this.edgeState.setAbsoluteTerminalPoint(null,!1),this.graph.view.updateFixedTerminalPoint(this.edgeState,this.currentState,!1,a)),(s=null)!=this.waypoints)for(s=[],i=0;i<this.waypoints.length;i++)a=this.waypoints[i].clone(),this.convertWaypoint(a),s[i]=a;this.graph.view.updatePoints(this.edgeState,s,this.previous,this.currentState),this.graph.view.updateFloatingTerminalPoints(this.edgeState,this.previous,this.currentState),i=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-1],s=this.edgeState.absolutePoints[0]}else null!=this.currentState&&null==this.constraintHandler.currentConstraint&&(null!=(o=this.getTargetPerimeterPoint(this.currentState,n))&&(i=o)),null==this.sourceConstraint&&null!=this.previous&&(null!=(o=this.getSourcePerimeterPoint(this.previous,null!=this.waypoints&&0<this.waypoints.length?this.waypoints[0]:i,n))&&(s=o));if(null==this.currentState&&this.movePreviewAway){if(o=s,null!=this.edgeState&&2<this.edgeState.absolutePoints.length&&(null!=(a=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-2])&&(o=a)),a=i.x-o.x,o=i.y-o.y,0==(r=Math.sqrt(a*a+o*o)))return;i.x-=4*a/r,i.y-=4*o/r}null==this.shape&&(a=Math.abs(t.x-this.first.x),o=Math.abs(t.y-this.first.y),a>this.graph.tolerance||o>this.graph.tolerance)&&(this.shape=this.createShape(),this.updateCurrentState(n)),null!=this.shape&&(null!=this.edgeState?this.shape.points=this.edgeState.absolutePoints:(t=[s],null!=this.waypoints&&(t=t.concat(this.waypoints)),t.push(i),this.shape.points=t),this.drawPreview()),mxEvent.consume(n.getEvent()),n.consume()}else this.isEnabled()&&this.graph.isEnabled()?this.previous!=this.currentState&&null==this.edgeState?(this.destroyIcons(this.icons),(this.icons=null)!=this.currentState&&null==this.error&&(this.icons=this.createIcons(this.currentState),null==this.icons&&(this.currentState.setCursor(mxConstants.CURSOR_CONNECT),n.consume())),this.previous=this.currentState):this.previous==this.currentState&&null!=this.currentState&&null==this.icons&&!this.graph.isMouseDown&&n.consume():this.constraintHandler.reset();if(null!=this.constraintHandler.currentConstraint&&this.marker.reset(),!this.graph.isMouseDown&&null!=this.currentState&&null!=this.icons){for(t=!1,s=n.getSource(),i=0;i<this.icons.length&&!t;i++)t=s==this.icons[i].node||s.parentNode==this.icons[i].node;t||this.updateIcons(this.currentState,this.icons,n)}}},mxConnectionHandler.prototype.getTargetPerimeterPoint=function(e,n){var t=null,a=(i=e.view).getPerimeterFunction(e);if(null!=a){var i,s=null!=this.waypoints&&0<this.waypoints.length?this.waypoints[this.waypoints.length-1]:new mxPoint(this.previous.getCenterX(),this.previous.getCenterY());null!=(i=a(i.getPerimeterBounds(e),this.edgeState,s,!1))&&(t=i)}else t=new mxPoint(e.getCenterX(),e.getCenterY());return t},mxConnectionHandler.prototype.getSourcePerimeterPoint=function(e,n,t){t=null;var a=e.view,i=a.getPerimeterFunction(e),s=new mxPoint(e.getCenterX(),e.getCenterY());if(null!=i){var o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0),r=-o*(Math.PI/180);0!=o&&(n=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(r),Math.sin(r),s)),null!=(e=i(a.getPerimeterBounds(e),e,n,!1))&&(0!=o&&(e=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),Math.cos(-r),Math.sin(-r),s)),t=e)}else t=s;return t},mxConnectionHandler.prototype.updateIcons=function(e,n,t){},mxConnectionHandler.prototype.isStopEvent=function(e){return null!=e.getState()},mxConnectionHandler.prototype.addWaypointForEvent=function(e){var n=mxUtils.convertPoint(this.graph.container,e.getX(),e.getY()),t=Math.abs(n.x-this.first.x);n=Math.abs(n.y-this.first.y);(null!=this.waypoints||1<this.mouseDownCounter&&(t>this.graph.tolerance||n>this.graph.tolerance))&&(null==this.waypoints&&(this.waypoints=[]),t=this.graph.view.scale,n=new mxPoint(this.graph.snap(e.getGraphX()/t)*t,this.graph.snap(e.getGraphY()/t)*t),this.waypoints.push(n))},mxConnectionHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&this.isConnecting()){if(this.waypointsEnabled&&!this.isStopEvent(n))return this.addWaypointForEvent(n),void n.consume();if(null==this.error){var t=null!=this.previous?this.previous.cell:null,a=null;null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),this.connect(t,a,n.getEvent(),n.getCell())}else null!=this.previous&&null!=this.marker.validState&&this.previous.cell==this.marker.validState.cell&&this.graph.selectCellForEvent(this.marker.source,evt),0<this.error.length&&this.graph.validationAlert(this.error);this.destroyIcons(this.icons),n.consume()}null!=this.first&&this.reset(),this.tapAndHoldValid=this.tapAndHoldInProgress=!1},mxConnectionHandler.prototype.reset=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),this.destroyIcons(this.icons),this.icons=null,this.marker.reset(),this.constraintHandler.reset(),this.sourceConstraint=this.error=this.previous=this.edgeState=this.selectedIcon=null,this.mouseDownCounter=0,this.icon=this.first=null,this.fireEvent(new mxEventObject(mxEvent.RESET))},mxConnectionHandler.prototype.drawPreview=function(){var e=null==this.error;this.shape.strokewidth=this.getEdgeWidth(e),e=this.getEdgeColor(e),this.shape.stroke=e,this.shape.redraw()},mxConnectionHandler.prototype.getEdgeColor=function(e){return e?mxConstants.VALID_COLOR:mxConstants.INVALID_COLOR},mxConnectionHandler.prototype.getEdgeWidth=function(e){return e?3:1},mxConnectionHandler.prototype.connect=function(e,n,t,a){if(null!=n||this.isCreateTarget()||this.graph.allowDanglingEdges){var i=this.graph.getModel(),s=null;i.beginUpdate();try{if(null!=e&&null==n&&this.isCreateTarget()&&null!=(n=this.createTargetVertex(t,e))){if(null!=(a=this.graph.getDropTarget([n],t,a))&&this.graph.getModel().isEdge(a))a=this.graph.getDefaultParent();else{var o=this.graph.getView().getState(a);if(null!=o){var r=i.getGeometry(n);r.x-=o.origin.x,r.y-=o.origin.y}}this.graph.addCell(n,a)}var l=this.graph.getDefaultParent();if(null!=e&&null!=n&&i.getParent(e)==i.getParent(n)&&i.getParent(i.getParent(e))!=i.getRoot()&&(l=i.getParent(e),null!=e.geometry&&e.geometry.relative&&null!=n.geometry&&n.geometry.relative&&(l=i.getParent(l))),r=o=null,null!=this.edgeState&&(o=this.edgeState.cell.value,r=this.edgeState.cell.style),null!=(s=this.insertEdge(l,null,o,e,n,r))){this.graph.setConnectionConstraint(s,e,!0,this.sourceConstraint),this.graph.setConnectionConstraint(s,n,!1,this.constraintHandler.currentConstraint),null!=this.edgeState&&i.setGeometry(s,this.edgeState.cell.geometry);var d=i.getGeometry(s);if(null==d&&((d=new mxGeometry).relative=!0,i.setGeometry(s,d)),null!=this.waypoints&&0<this.waypoints.length){var c=this.graph.view.scale,m=this.graph.view.translate;for(d.points=[],e=0;e<this.waypoints.length;e++){var u=this.waypoints[e];d.points.push(new mxPoint(u.x/c-m.x,u.y/c-m.y))}}null==n&&((u=this.graph.getPointForEvent(t,!1)).x-=this.graph.panDx/this.graph.view.scale,u.y-=this.graph.panDy/this.graph.view.scale,d.setTerminalPoint(u,!1)),this.fireEvent(new mxEventObject(mxEvent.CONNECT,"cell",s,"event",t,"target",a))}}catch(e){mxLog.show(),mxLog.debug(e.message)}finally{i.endUpdate()}this.select&&this.selectCells(s,n)}},mxConnectionHandler.prototype.selectCells=function(e,n){this.graph.setSelectionCell(e)},mxConnectionHandler.prototype.insertEdge=function(e,n,t,a,i,s){return null==this.factoryMethod?this.graph.insertEdge(e,n,t,a,i,s):(n=this.createEdge(t,a,i,s),this.graph.addEdge(n,e,a,i))},mxConnectionHandler.prototype.createTargetVertex=function(e,n){for(var t=this.graph.getCellGeometry(n);null!=t&&t.relative;)n=this.graph.getModel().getParent(n),t=this.graph.getCellGeometry(n);var a=this.graph.cloneCells([n])[0];if(null!=(t=this.graph.getModel().getGeometry(a))){var i=this.graph.getPointForEvent(e);if(t.x=this.graph.snap(i.x-t.width/2)-this.graph.panDx/this.graph.view.scale,t.y=this.graph.snap(i.y-t.height/2)-this.graph.panDy/this.graph.view.scale,null!=this.first){var s=this.graph.view.getState(n);if(null!=s){var o=this.getAlignmentTolerance();Math.abs(this.graph.snap(this.first.x)-this.graph.snap(i.x))<=o?t.x=s.x:Math.abs(this.graph.snap(this.first.y)-this.graph.snap(i.y))<=o&&(t.y=s.y)}}}return a},mxConnectionHandler.prototype.getAlignmentTolerance=function(){return this.graph.isGridEnabled()?this.graph.gridSize:this.graph.tolerance},mxConnectionHandler.prototype.createEdge=function(e,n,t,a){var i=null;return null!=this.factoryMethod&&(i=this.factoryMethod(n,t,a)),null==i&&((i=new mxCell(e||"")).setEdge(!0),i.setStyle(a),(e=new mxGeometry).relative=!0,i.setGeometry(e)),i},mxConnectionHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getView().removeListener(this.changeHandler),this.changeHandler=null),null!=this.drillHandler&&(this.graph.removeListener(this.drillHandler),this.graph.getView().removeListener(this.drillHandler),this.drillHandler=null)},mxConstraintHandler.prototype.pointImage=new mxImage(mxClient.imageBasePath+"/point.gif",5,5),mxConstraintHandler.prototype.graph=null,mxConstraintHandler.prototype.enabled=!0,mxConstraintHandler.prototype.highlightColor=mxConstants.DEFAULT_VALID_COLOR,mxConstraintHandler.prototype.isEnabled=function(){return this.enabled},mxConstraintHandler.prototype.setEnabled=function(e){this.enabled=e},mxConstraintHandler.prototype.reset=function(){if(null!=this.focusIcons){for(var e=0;e<this.focusIcons.length;e++)this.focusIcons[e].destroy();this.focusIcons=null}null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),this.focusPoints=this.currentFocus=this.currentPoint=this.currentFocusArea=this.currentConstraint=null},mxConstraintHandler.prototype.getTolerance=function(){return this.graph.getTolerance()},mxConstraintHandler.prototype.getImageForConstraint=function(e,n,t){return this.pointImage},mxConstraintHandler.prototype.isEventIgnored=function(e,n){return!1},mxConstraintHandler.prototype.update=function(e,n){if(this.isEnabled()&&!this.isEventIgnored(e)){var t=this.getTolerance(),a=new mxRectangle(e.getGraphX()-t,e.getGraphY()-t,2*t,2*t),i=null!=e.getCell()&&this.graph.isCellConnectable(e.getCell());if((null==this.currentFocusArea||!mxUtils.intersects(this.currentFocusArea,a)||null!=e.getState()&&null!=this.currentFocus&&i)&&(this.currentFocusArea=null,e.getState()!=this.currentFocus))if(this.currentFocus=null,this.constraints=null!=e.getState()&&i?this.graph.getAllConnectionConstraints(e.getState(),n):null,null!=this.constraints){if(this.currentFocus=e.getState(),this.currentFocusArea=new mxRectangle(e.getState().x,e.getState().y,e.getState().width,e.getState().height),null!=this.focusIcons){for(i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}for(this.focusIcons=[],this.focusPoints=[],i=0;i<this.constraints.length;i++){var s,o=this.graph.getConnectionPoint(e.getState(),this.constraints[i]),r=(s=this.getImageForConstraint(e.getState(),this.constraints[i],o)).src;(s=new mxImageShape(s=new mxRectangle(o.x-s.width/2,o.y-s.height/2,s.width,s.height),r)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,s.preserveImageAspect=!1,s.init(this.graph.getView().getOverlayPane()),null!=s.node.previousSibling&&s.node.parentNode.insertBefore(s.node,s.node.parentNode.firstChild),r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),s.redraw(),mxEvent.redirectMouseEvents(s.node,this.graph,r),this.currentFocusArea.add(s.bounds),this.focusIcons.push(s),this.focusPoints.push(o)}this.currentFocusArea.grow(t)}else if(null!=this.focusIcons){for(null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}if(this.currentPoint=this.currentConstraint=null,null!=this.focusIcons&&null!=this.constraints&&(null==e.getState()||this.currentFocus==e.getState()))for(i=0;i<this.focusIcons.length;i++)if(mxUtils.intersects(this.focusIcons[i].bounds,a)){this.currentConstraint=this.constraints[i],this.currentPoint=this.focusPoints[i],(t=this.focusIcons[i].bounds.clone()).grow(mxClient.IS_IE?3:2),mxClient.IS_IE&&(t.width-=1,t.height-=1),null==this.focusHighlight?((t=new mxRectangleShape(t,null,this.highlightColor,3)).dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.focusHighlight=t,r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),mxEvent.redirectMouseEvents(t.node,this.graph,r)):(this.focusHighlight.bounds=t,this.focusHighlight.redraw());break}null==this.currentConstraint&&null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null)}},mxConstraintHandler.prototype.destroy=function(){this.reset()},mxRubberband.prototype.defaultOpacity=20,mxRubberband.prototype.enabled=!0,mxRubberband.prototype.div=null,mxRubberband.prototype.sharedDiv=null,mxRubberband.prototype.currentX=0,mxRubberband.prototype.currentY=0,mxRubberband.prototype.isEnabled=function(){return this.enabled},mxRubberband.prototype.setEnabled=function(e){this.enabled=e},mxRubberband.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&(this.graph.isForceMarqueeEvent(n.getEvent())||null==n.getState())){var t=mxUtils.getOffset(this.graph.container),a=mxUtils.getScrollOrigin(this.graph.container);if(a.x-=t.x,a.y-=t.y,this.start(n.getX()+a.x,n.getY()+a.y),mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC){var i=this.graph.container,s=function(e){e=new mxMouseEvent(e);var n=mxUtils.convertPoint(i,e.getX(),e.getY());return e.graphX=n.x,e.graphY=n.y,e};this.dragHandler=mxUtils.bind(this,function(e){this.mouseMove(this.graph,s(e))}),this.dropHandler=mxUtils.bind(this,function(e){this.mouseUp(this.graph,s(e))}),mxEvent.addListener(document,"mousemove",this.dragHandler),mxEvent.addListener(document,"mouseup",this.dropHandler)}n.consume(!1)}},mxRubberband.prototype.start=function(e,n){this.first=new mxPoint(e,n)},mxRubberband.prototype.mouseMove=function(e,n){if(!n.isConsumed()&&null!=this.first){var t=mxUtils.getScrollOrigin(this.graph.container),a=mxUtils.getOffset(this.graph.container);t.x-=a.x,t.y-=a.y;a=n.getX()+t.x,t=n.getY()+t.y;var i=this.first.x-a,s=this.first.y-t,o=this.graph.tolerance;(null!=this.div||Math.abs(i)>o||Math.abs(s)>o)&&(null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(a,t),n.consume())}},mxRubberband.prototype.createShape=function(){return null==this.sharedDiv&&(this.sharedDiv=document.createElement("div"),this.sharedDiv.className="mxRubberband",mxUtils.setOpacity(this.sharedDiv,this.defaultOpacity)),this.graph.container.appendChild(this.sharedDiv),this.sharedDiv},mxRubberband.prototype.mouseUp=function(e,n){var t=null!=this.div;this.reset(),t&&(t=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(t,n.getEvent()),n.consume())},mxRubberband.prototype.reset=function(){null!=this.div&&this.div.parentNode.removeChild(this.div),null!=this.dragHandler&&(mxEvent.removeListener(document,"mousemove",this.dragHandler),this.dragHandler=null),null!=this.dropHandler&&(mxEvent.removeListener(document,"mouseup",this.dropHandler),this.dropHandler=null),this.currentY=this.currentX=0,this.div=this.first=null},mxRubberband.prototype.update=function(e,n){this.currentX=e,this.currentY=n,this.repaint()},mxRubberband.prototype.repaint=function(){if(null!=this.div){var e=this.currentX-this.graph.panDx,n=this.currentY-this.graph.panDy;this.x=Math.min(this.first.x,e),this.y=Math.min(this.first.y,n),this.width=Math.max(this.first.x,e)-this.x,this.height=Math.max(this.first.y,n)-this.y,e=mxClient.IS_VML?this.graph.panDy:0,this.div.style.left=this.x+(mxClient.IS_VML?this.graph.panDx:0)+"px",this.div.style.top=this.y+e+"px",this.div.style.width=Math.max(1,this.width)+"px",this.div.style.height=Math.max(1,this.height)+"px"}},mxRubberband.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.reset(),null!=this.sharedDiv&&(this.sharedDiv=null))},mxVertexHandler.prototype.graph=null,mxVertexHandler.prototype.state=null,mxVertexHandler.prototype.singleSizer=!1,mxVertexHandler.prototype.index=null,mxVertexHandler.prototype.allowHandleBoundsCheck=!0,mxVertexHandler.prototype.handleImage=null,mxVertexHandler.prototype.tolerance=0,mxVertexHandler.prototype.rotationEnabled=!1,mxVertexHandler.prototype.rotationRaster=!0,mxVertexHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.selectionBorder=this.createSelectionShape(this.bounds),this.selectionBorder.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.pointerEvents=!1,this.selectionBorder.init(this.graph.getView().getOverlayPane()),this.graph.isCellMovable(this.state.cell)&&(this.selectionBorder.node.style.cursor=mxConstants.CURSOR_MOVABLE_VERTEX),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.graph,this.state),mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells){var e=this.graph.isCellResizable(this.state.cell);if(this.sizers=[],e||this.graph.isLabelMovable(this.state.cell)&&2<=this.state.width&&2<=this.state.height){var n=0;e&&(this.singleSizer||(this.sizers.push(this.createSizer("nw-resize",n++)),this.sizers.push(this.createSizer("n-resize",n++)),this.sizers.push(this.createSizer("ne-resize",n++)),this.sizers.push(this.createSizer("w-resize",n++)),this.sizers.push(this.createSizer("e-resize",n++)),this.sizers.push(this.createSizer("sw-resize",n++)),this.sizers.push(this.createSizer("s-resize",n++))),this.sizers.push(this.createSizer("se-resize",n++))),null!=(e=this.graph.model.getGeometry(this.state.cell))&&!e.relative&&!this.graph.isSwimlane(this.state.cell)&&this.graph.isLabelMovable(this.state.cell)&&(this.labelShape=this.createSizer(mxConstants.CURSOR_LABEL_HANDLE,mxEvent.LABEL_HANDLE,mxConstants.LABEL_HANDLE_SIZE,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}else this.graph.isCellMovable(this.state.cell)&&!this.graph.isCellResizable(this.state.cell)&&this.state.width<2&&this.state.height<2&&(this.labelShape=this.createSizer(mxConstants.CURSOR_MOVABLE_VERTEX,null,null,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}this.rotationEnabled&&(mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)&&(this.rotationShape=this.createSizer("pointer",mxEvent.ROTATION_HANDLE,mxConstants.HANDLE_SIZE+3,mxConstants.HANDLE_FILLCOLOR),this.sizers.push(this.rotationShape)),this.redraw()},mxVertexHandler.prototype.getSelectionBounds=function(e){return new mxRectangle(Math.round(e.x),Math.round(e.y),Math.round(e.width),Math.round(e.height))},mxVertexHandler.prototype.createSelectionShape=function(e){return(e=new mxRectangleShape(e,null,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxVertexHandler.prototype.getSelectionColor=function(){return mxConstants.VERTEX_SELECTION_COLOR},mxVertexHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.VERTEX_SELECTION_STROKEWIDTH},mxVertexHandler.prototype.isSelectionDashed=function(){return mxConstants.VERTEX_SELECTION_DASHED},mxVertexHandler.prototype.createSizer=function(e,n,t,a){return t=new mxRectangle(0,0,t=t||mxConstants.HANDLE_SIZE,t),(a=this.createSizerShape(t,n,a)).isHtmlAllowed()&&null!=this.state.text&&this.state.text.node.parentNode==this.graph.container?(a.bounds.height-=1,a.bounds.width-=1,a.dialect=mxConstants.DIALECT_STRICTHTML,a.init(this.graph.container)):(a.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,a.init(this.graph.getView().getOverlayPane())),mxEvent.redirectMouseEvents(a.node,this.graph,this.state),this.graph.isEnabled()&&(a.node.style.cursor=e),this.isSizerVisible(n)||(a.node.style.visibility="hidden"),a},mxVertexHandler.prototype.isSizerVisible=function(e){return!0},mxVertexHandler.prototype.createSizerShape=function(e,n,t){return null!=this.handleImage?(e.width=this.handleImage.width,e.height=this.handleImage.height,new mxImageShape(e,this.handleImage.src)):n==mxEvent.ROTATION_HANDLE?new mxEllipse(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR):new mxRectangleShape(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)},mxVertexHandler.prototype.moveSizerTo=function(e,n,t){null!=e&&(e.bounds.x=Math.round(n-e.bounds.width/2),e.bounds.y=Math.round(t-e.bounds.height/2),e.redraw())},mxVertexHandler.prototype.getHandleForEvent=function(e){if(e.isSource(this.rotationShape))return mxEvent.ROTATION_HANDLE;if(e.isSource(this.labelShape))return mxEvent.LABEL_HANDLE;if(null!=this.sizers)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.sizers.length;t++)if(e.isSource(this.sizers[t])||null!=n&&mxUtils.intersects(this.sizers[t].bounds,n))return t;return null},mxVertexHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(0<this.tolerance||n.getState()==this.state)){var t=this.getHandleForEvent(n);null!=t&&(this.start(n.getX(),n.getY(),t),n.consume())}},mxVertexHandler.prototype.start=function(e,n,t){e=mxUtils.convertPoint(this.graph.container,e,n),this.startX=e.x,this.startY=e.y,this.index=t,this.selectionBorder.node.style.display=t==mxEvent.ROTATION_HANDLE?"inline":"none",this.preview=this.createSelectionShape(this.bounds),mxClient.IS_SVG&&0!=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")||null==this.state.text||this.state.text.node.parentNode!=this.graph.container?(this.preview.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.preview.init(this.graph.view.getOverlayPane())):(this.preview.dialect=mxConstants.DIALECT_STRICTHTML,this.preview.init(this.graph.container))},mxVertexHandler.prototype.mouseMove=function(e,n){if(n.isConsumed()||null==this.index)null!=this.getHandleForEvent(n)&&n.consume(!1);else{var t=new mxPoint(n.getGraphX(),n.getGraphY()),a=this.graph.isGridEnabledEvent(n.getEvent()),i=this.graph.getView().scale;if(this.index==mxEvent.LABEL_HANDLE)a&&(t.x=this.graph.snap(t.x/i)*i,t.y=this.graph.snap(t.y/i)*i),this.moveSizerTo(this.sizers[this.sizers.length-1],t.x,t.y);else if(this.index==mxEvent.ROTATION_HANDLE){var s=this.state.x+this.state.width/2-t.x,o=this.state.y+this.state.height/2-t.y;this.currentAlpha=0!=s?180*Math.atan(o/s)/Math.PI+90:o<0?180:0,0<s&&(this.currentAlpha-=180),this.rotationRaster&&(s=t.x-this.state.getCenterX(),o=t.y-this.state.getCenterY(),s=Math.abs(Math.sqrt(s*s+o*o)-this.state.height/2-20),s=Math.max(1,5*Math.min(3,Math.max(0,Math.round(80/Math.abs(s))))),this.currentAlpha=Math.round(this.currentAlpha/s)*s),this.selectionBorder.rotation=this.currentAlpha,this.selectionBorder.redraw()}else{var r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),l=Math.cos(-r),d=Math.sin(-r),c=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),m=(s=t.x-this.startX,o=t.y-this.startY,t=this.graph.view.translate,d*s+l*o);s=l*s-d*o;this.bounds=this.union(this.selectionBounds,s,m,this.index,a,i,t),l=Math.cos(r),c=(d=Math.sin(r))*(s=(o=new mxPoint(this.bounds.getCenterX(),this.bounds.getCenterY())).x-c.x)+l*(o=o.y-c.y)-o,this.bounds.x+=l*s-d*o-s,this.bounds.y+=c,this.drawPreview()}n.consume()}},mxVertexHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&null!=this.index&&null!=this.state){var t=new mxPoint(n.getGraphX(),n.getGraphY());this.graph.getModel().beginUpdate();try{if(this.index==mxEvent.ROTATION_HANDLE)null!=this.currentAlpha&&this.rotateCell(this.state.cell,this.currentAlpha-(this.state.style[mxConstants.STYLE_ROTATION]||0));else{var a=this.graph.isGridEnabledEvent(n.getEvent()),i=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),s=Math.cos(-i),o=Math.sin(-i),r=(t=o*(r=t.x-this.startX)+s*(l=t.y-this.startY),s*r-o*l),l=t,d=this.graph.view.scale;this.resizeCell(this.state.cell,r/d,l/d,this.index,a)}}finally{this.graph.getModel().endUpdate()}this.reset(),n.consume()}},mxVertexHandler.prototype.rotateCell=function(e,n){var t=this.graph.getModel();if(t.isVertex(e)){if(null!=(s=e==this.state?this.state:this.graph.view.getState(e))&&this.graph.setCellStyles(mxConstants.STYLE_ROTATION,(s.style[mxConstants.STYLE_ROTATION]||0)+n,[e]),this.state.cell!=e&&(null!=(s=this.graph.getCellGeometry(e))&&!s.relative))if(0!=n){var a=this.graph.getModel().getParent(e),i=this.graph.getCellGeometry(a);if(!s.relative&&null!=i){var s,o=mxUtils.toRadians(n),r=(a=Math.cos(o),o=Math.sin(o),new mxPoint(s.getCenterX(),s.getCenterY()));i=new mxPoint(i.width/2,i.height/2),a=mxUtils.getRotatedPoint(r,a,o,i);(s=s.clone()).x=a.x-s.width/2,s.y=a.y-s.height/2,t.setGeometry(e,s)}}else(s=s.clone()).x+=dx,s.y+=dy,t.setGeometry(e,s);for(s=t.getChildCount(e),a=0;a<s;a++)this.rotateCell(t.getChildAt(e,a),n)}},mxVertexHandler.prototype.reset=function(){this.index=this.currentAlpha=null,null!=this.preview&&(this.preview.destroy(),this.preview=null),null!=this.selectionBorder&&(this.selectionBorder.node.style.display="inline",this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.drawPreview())},mxVertexHandler.prototype.resizeCell=function(e,n,t,a,i){var s=this.graph.model.getGeometry(e);if(null!=s)if(a==mxEvent.LABEL_HANDLE)a=this.graph.view.scale,n=(this.labelShape.bounds.getCenterX()-this.startX)/a,t=(this.labelShape.bounds.getCenterY()-this.startY)/a,null==(s=s.clone()).offset?s.offset=new mxPoint(n,t):(s.offset.x+=n,s.offset.y+=t),this.graph.model.setGeometry(e,s);else{if(a=this.union(s,n,t,a,i,1,new mxPoint(0,0)),0!=(r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"))){n=a.getCenterX()-s.getCenterX(),t=a.getCenterY()-s.getCenterY(),i=Math.cos(r);var o=Math.sin(r),r=i*n-o*t-n;n=o*n+i*t-t,t=a.x-s.x;var l=a.y-s.y,d=i*t-o*l;i=o*t+i*l,a.x+=r,a.y+=n,this.graph.isCellCollapsed(e)||0==r&&0==n||(t=s.x-a.x+d,l=s.y-a.y+i,this.moveChildren(e,t,l))}this.graph.resizeCell(e,a)}},mxVertexHandler.prototype.moveChildren=function(e,n,t){for(var a=this.graph.getModel(),i=a.getChildCount(e),s=0;s<i;s++){var o=a.getChildAt(e,s);if(a.isVertex(o)){var r=this.graph.getCellGeometry(o);null!=r&&!r.relative&&((r=r.clone()).x+=n,r.y+=t,a.setGeometry(o,r))}}},mxVertexHandler.prototype.union=function(e,n,t,a,i,s,o){if(this.singleSizer){o=e.x+e.width+n;var r=e.y+e.height+t;return i&&(o=this.graph.snap(o/s)*s,r=this.graph.snap(r/s)*s),(s=new mxRectangle(e.x,e.y,0,0)).add(new mxRectangle(o,r,0,0)),s}var l=(r=e.x-o.x*s)+e.width,d=e.y-o.y*s;return e=d+e.height,4<a?(e+=t,i&&(e=this.graph.snap(e/s)*s)):a<3&&(d+=t,i&&(d=this.graph.snap(d/s)*s)),0==a||3==a||5==a?(r+=n,i&&(r=this.graph.snap(r/s)*s)):2!=a&&4!=a&&7!=a||(l+=n,i&&(l=this.graph.snap(l/s)*s)),e-=d,(i=l-r)<0&&(r+=i,i=Math.abs(i)),e<0&&(d+=e,e=Math.abs(e)),new mxRectangle(r+o.x*s,d+o.y*s,i,e)},mxVertexHandler.prototype.redraw=function(){this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.state.x,this.state.y,this.state.width,this.state.height);var e=this.state;if(null!=this.sizers){var n=e.x+e.width,t=e.y+e.height;if(this.singleSizer)this.moveSizerTo(this.sizers[0],n,t);else{var a=e.x+e.width/2,i=e.y+e.height/2;if(1<this.sizers.length){var s=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),r=(s=Math.sin(s),new mxPoint(e.getCenterX(),e.getCenterY())),l=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),o,s,r);this.moveSizerTo(this.sizers[0],l.x,l.y),l.x=a,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[1],l.x,l.y),l.x=n,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[2],l.x,l.y),l.x=e.x,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[3],l.x,l.y),l.x=n,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[4],l.x,l.y),l.x=e.x,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[5],l.x,l.y),l.x=a,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[6],l.x,l.y),l.x=n,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[7],l.x,l.y),this.moveSizerTo(this.sizers[8],a+e.absoluteOffset.x,i+e.absoluteOffset.y)}else 2<=this.state.width&&2<=this.state.height?this.moveSizerTo(this.sizers[0],a+e.absoluteOffset.x,i+e.absoluteOffset.y):this.moveSizerTo(this.sizers[0],e.x,e.y)}}null!=this.rotationShape&&(s=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),s=Math.sin(s),r=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),l=mxUtils.getRotatedPoint(new mxPoint(e.x+e.width/2,e.y-16),o,s,r),this.moveSizerTo(this.rotationShape,l.x,l.y)),this.selectionBorder.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.drawPreview()},mxVertexHandler.prototype.drawPreview=function(){null!=this.preview&&(this.preview.bounds=this.bounds,this.preview.node.parentNode==this.graph.container&&(this.preview.bounds.width=Math.max(0,this.preview.bounds.width-1),this.preview.bounds.height=Math.max(0,this.preview.bounds.height-1)),this.preview.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.preview.redraw()),this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()},mxVertexHandler.prototype.destroy=function(){if(null!=this.preview&&(this.preview.destroy(),this.preview=null),this.selectionBorder.destroy(),this.labelShape=this.selectionBorder=null,null!=this.sizers)for(var e=0;e<this.sizers.length;e++)this.sizers[e].destroy(),this.sizers[e]=null},mxEdgeHandler.prototype.graph=null,mxEdgeHandler.prototype.state=null,mxEdgeHandler.prototype.marker=null,mxEdgeHandler.prototype.constraintHandler=null,mxEdgeHandler.prototype.error=null,mxEdgeHandler.prototype.shape=null,mxEdgeHandler.prototype.bends=null,mxEdgeHandler.prototype.labelShape=null,mxEdgeHandler.prototype.cloneEnabled=!0,mxEdgeHandler.prototype.addEnabled=!1,mxEdgeHandler.prototype.removeEnabled=!1,mxEdgeHandler.prototype.preferHtml=!1,mxEdgeHandler.prototype.allowHandleBoundsCheck=!0,mxEdgeHandler.prototype.snapToTerminals=!1,mxEdgeHandler.prototype.handleImage=null,mxEdgeHandler.prototype.tolerance=0,mxEdgeHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.points=[],this.abspoints=this.getSelectionPoints(this.state),this.shape=this.createSelectionShape(this.abspoints),this.shape.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,this.shape.init(this.graph.getView().getOverlayPane()),this.shape.svgStrokeTolerance=0,this.shape.node.style.cursor=mxConstants.CURSOR_MOVABLE_EDGE,mxEvent.addListener(this.shape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e,this.state.cell)})),mxEvent.addGestureListeners(this.shape.node,mxUtils.bind(this,function(e){this.addEnabled&&this.isAddPointEvent(e)?this.addPoint(this.state,e):this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,this.state))}),mxUtils.bind(this,function(e){var n=this.state.cell;if(null!=this.index){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.graph.getCellAt(t.x,t.y);this.graph.isSwimlane(n)&&this.graph.hitsSwimlaneContent(n,t.x,t.y)&&(n=null)}this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,this.graph.getView().getState(n)))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,this.state))})),this.preferHtml=null!=this.state.text&&this.state.text.node.parentNode==this.graph.container,!this.preferHtml){var e=this.state.getVisibleTerminalState(!0);null!=e&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container),this.preferHtml||null!=(e=this.state.getVisibleTerminalState(!1))&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container)}(this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells||mxGraphHandler.prototype.maxCells<=0)&&(this.bends=this.createBends()),this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape=new mxRectangleShape(new mxRectangle,mxConstants.LABEL_HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR),this.labelShape.pointerEvents=!1,this.initBend(this.labelShape),this.labelShape.node.style.cursor=mxConstants.CURSOR_LABEL_HANDLE,mxEvent.redirectMouseEvents(this.labelShape.node,this.graph,this.state),this.redraw()},mxEdgeHandler.prototype.isAddPointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.isRemovePointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.getSelectionPoints=function(e){return e.absolutePoints},mxEdgeHandler.prototype.createSelectionShape=function(e){return(e=new mxPolyline(e,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxEdgeHandler.prototype.getSelectionColor=function(){return mxConstants.EDGE_SELECTION_COLOR},mxEdgeHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.EDGE_SELECTION_STROKEWIDTH},mxEdgeHandler.prototype.isSelectionDashed=function(){return mxConstants.EDGE_SELECTION_DASHED},mxEdgeHandler.prototype.isConnectableCell=function(e){return!0},mxEdgeHandler.prototype.createMarker=function(){var e=new mxCellMarker(this.graph),a=this;return e.getCell=function(e){var n=mxCellMarker.prototype.getCell.apply(this,arguments);if(!a.isConnectableCell(n))return null;var t=a.graph.getModel();return(n==a.state.cell||null!=n&&!a.graph.connectableEdges&&t.isEdge(n))&&(n=null),n},e.isValidState=function(e){var n=a.graph.getModel();n=null!=(n=a.graph.view.getTerminalPort(e,a.graph.view.getState(n.getTerminal(a.state.cell,!a.isSource)),!a.isSource))?n.cell:null;return a.error=a.validateConnection(a.isSource?e.cell:n,a.isSource?n:e.cell),null==a.error},e},mxEdgeHandler.prototype.validateConnection=function(e,n){return this.graph.getEdgeValidationError(this.state.cell,e,n)},mxEdgeHandler.prototype.createBends=function(){for(var e=this.state.cell,n=[],t=0;t<this.abspoints.length;t++)if(this.isHandleVisible(t)){var a=t==this.abspoints.length-1;if((a=0==t||a)||this.graph.isCellBendable(e)){var i=this.createHandleShape(t);if(this.initBend(i),mxClient.IS_TOUCH&&i.node.setAttribute("pointer-events","none"),this.isHandleEnabled(t))if(mxClient.IS_TOUCH){var s=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(i.node,this.graph,s)}else i.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(i.node,this.graph,this.state);n.push(i),a||(this.points.push(new mxPoint(0,0)),i.node.style.visibility="hidden")}}return n},mxEdgeHandler.prototype.isHandleEnabled=function(e){return!0},mxEdgeHandler.prototype.isHandleVisible=function(e){return!0},mxEdgeHandler.prototype.createHandleShape=function(e){return null!=this.handleImage?new mxImageShape(new mxRectangle(0,0,this.handleImage.width,this.handleImage.height),this.handleImage.src):(e=mxConstants.HANDLE_SIZE,this.preferHtml&&(e-=1),new mxRectangleShape(new mxRectangle(0,0,e,e),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR))},mxEdgeHandler.prototype.initBend=function(e){this.preferHtml?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()))},mxEdgeHandler.prototype.getHandleForEvent=function(e){if(null!=this.bends)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.bends.length;t++)if((e.isSource(this.bends[t])||null!=n&&mxUtils.intersects(this.bends[t].bounds,n))&&"hidden"!=this.bends[t].node.style.visibility)return t;return!(e.isSource(this.labelShape)&&"hidden"!=this.labelShape.node.style.visibility||e.isSource(this.state.text))||(mxClient.IS_SF||mxClient.IS_GC)&&"SELECT"==e.getSource().nodeName?null:mxEvent.LABEL_HANDLE},mxEdgeHandler.prototype.mouseDown=function(e,n){var t=null;null!=(t=this.getHandleForEvent(n))&&!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(this.removeEnabled&&this.isRemovePointEvent(n.getEvent())?this.removePoint(this.state,t):(t!=mxEvent.LABEL_HANDLE||this.graph.isLabelMovable(n.getCell()))&&this.start(n.getX(),n.getY(),t),n.consume())},mxEdgeHandler.prototype.start=function(e,n,t){this.startX=e,this.startY=n,this.isSource=null!=this.bends&&0==t,this.isTarget=null!=this.bends&&t==this.bends.length-1,this.isLabel=t==mxEvent.LABEL_HANDLE,this.isSource||this.isTarget?(e=this.state.cell,(null==(n=this.graph.model.getTerminal(e,this.isSource))&&this.graph.isTerminalPointMovable(e,this.isSource)||null!=n&&this.graph.isCellDisconnectable(e,n,this.isSource))&&(this.index=t)):this.index=t},mxEdgeHandler.prototype.clonePreviewState=function(e,n){return this.state.clone()},mxEdgeHandler.prototype.getSnapToTerminalTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxEdgeHandler.prototype.getPointForEvent=function(e){var t=new mxPoint(e.getGraphX(),e.getGraphY()),a=this.getSnapToTerminalTolerance(),n=this.graph.getView(),i=!1,s=!1;if(this.snapToTerminals&&0<a){var o=function(e){if(null!=e){var n=e.x;Math.abs(t.x-n)<a&&(t.x=n,i=!0),e=e.y,Math.abs(t.y-e)<a&&(t.y=e,s=!0)}},r=function(e){null!=e&&o.call(this,new mxPoint(n.getRoutingCenterX(e),n.getRoutingCenterY(e)))};if(r.call(this,this.state.getVisibleTerminalState(!0)),r.call(this,this.state.getVisibleTerminalState(!1)),null!=this.abspoints)for(r=0;r<this.abspoints;r++)r!=this.index&&o.call(this,this.abspoints[r])}return this.graph.isGridEnabledEvent(e.getEvent())&&(e=n.scale,r=n.translate,i||(t.x=(this.graph.snap(t.x/e-r.x)+r.x)*e),s||(t.y=(this.graph.snap(t.y/e-r.y)+r.y)*e)),t},mxEdgeHandler.prototype.getPreviewTerminalState=function(e){this.constraintHandler.update(e,this.isSource),this.marker.process(e),e=this.marker.getValidState();var n=null;return null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint&&this.marker.reset(),null!=e?n=e:null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(n=this.constraintHandler.currentFocus),n},mxEdgeHandler.prototype.getPreviewPoints=function(e){var n=null!=(n=this.graph.getCellGeometry(this.state.cell)).points?n.points.slice():null;return this.isSource||this.isTarget?this.graph.resetEdgesOnConnect&&(n=null):(this.convertPoint(e,!1),null==n?n=[e]:n[this.index-1]=e),n},mxEdgeHandler.prototype.updatePreviewState=function(e,n,t){var a=this.isSource?t:this.state.getVisibleTerminalState(!0),i=this.isTarget?t:this.state.getVisibleTerminalState(!1),s=this.graph.getConnectionConstraint(e,a,!0),o=this.graph.getConnectionConstraint(e,i,!1),r=this.constraintHandler.currentConstraint;null==r&&(r=new mxConnectionConstraint),this.isSource?s=r:this.isTarget&&(o=r),(!this.isSource||null!=a)&&e.view.updateFixedTerminalPoint(e,a,!0,s),(!this.isTarget||null!=i)&&e.view.updateFixedTerminalPoint(e,i,!1,o),(this.isSource||this.isTarget)&&null==t&&(e.setAbsoluteTerminalPoint(n,this.isSource),null==this.marker.getMarkedState()&&(this.error=this.graph.allowDanglingEdges?null:"")),e.view.updatePoints(e,this.points,a,i),e.view.updateFloatingTerminalPoints(e,a,i)},mxEdgeHandler.prototype.mouseMove=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.getPointForEvent(n);if(this.isLabel)this.label.x=t.x,this.label.y=t.y;else{this.points=this.getPreviewPoints(t);var a=this.isSource||this.isTarget?this.getPreviewTerminalState(n):null,i=this.clonePreviewState(t,null!=a?a.cell:null);this.updatePreviewState(i,t,a),this.setPreviewColor(null==this.error?this.marker.validColor:this.marker.invalidColor),this.abspoints=i.absolutePoints,this.active=!0}this.drawPreview(),mxEvent.consume(n.getEvent()),n.consume()}else mxClient.IS_IE&&null!=this.getHandleForEvent(n)&&n.consume(!1)},mxEdgeHandler.prototype.mouseUp=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.state.cell;if(n.getX()!=this.startX||n.getY()!=this.startY)if(null!=this.error)0<this.error.length&&this.graph.validationAlert(this.error);else if(this.isLabel)this.moveLabel(this.state,this.label.x,this.label.y);else if(this.isSource||this.isTarget){var a=null;if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),null!=a)t=this.connect(t,a,this.isSource,this.graph.isCloneEvent(n.getEvent())&&this.cloneEnabled&&this.graph.isCellsCloneable(),n);else if(this.graph.isAllowDanglingEdges()){(a=this.abspoints[this.isSource?0:this.abspoints.length-1]).x=a.x/this.graph.view.scale-this.graph.view.translate.x,a.y=a.y/this.graph.view.scale-this.graph.view.translate.y;var i=this.graph.getView().getState(this.graph.getModel().getParent(t));null!=i&&(a.x-=i.origin.x,a.y-=i.origin.y),a.x-=this.graph.panDx/this.graph.view.scale,a.y-=this.graph.panDy/this.graph.view.scale,this.changeTerminalPoint(t,a,this.isSource)}}else this.active?this.changePoints(t,this.points):(this.graph.getView().invalidate(this.state.cell),this.graph.getView().revalidate(this.state.cell));null!=this.marker&&(this.reset(),t!=this.state.cell&&this.graph.setSelectionCell(t)),n.consume()}},mxEdgeHandler.prototype.reset=function(){this.points=this.label=this.index=this.error=null,this.isTarget=this.isSource=this.isLabel=this.active=!1,this.marker.reset(),this.constraintHandler.reset(),this.setPreviewColor(mxConstants.EDGE_SELECTION_COLOR),this.redraw()},mxEdgeHandler.prototype.setPreviewColor=function(e){null!=this.shape&&(this.shape.stroke=e)},mxEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate();return n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x),e.y=Math.round(e.y/t-a.y),null!=(t=this.graph.getView().getState(this.graph.getModel().getParent(this.state.cell)))&&(e.x-=t.origin.x,e.y-=t.origin.y),e},mxEdgeHandler.prototype.moveLabel=function(e,n,t){var a=this.graph.getModel();if(null!=(i=a.getGeometry(e.cell))){var i=i.clone(),s=this.graph.getView().getRelativePoint(e,n,t);i.x=s.x,i.y=s.y;var o=this.graph.getView().scale;i.offset=new mxPoint(0,0),s=this.graph.view.getPoint(e,i),i.offset=new mxPoint((n-s.x)/o,(t-s.y)/o),a.setGeometry(e.cell,i)}},mxEdgeHandler.prototype.connect=function(e,n,t,a,i){var s=(i=this.graph.getModel()).getParent(e);i.beginUpdate();try{if(a){var o=e.clone();i.add(s,o,i.getChildCount(s));var r=i.getTerminal(e,!t);this.graph.connectCell(o,r,!t),e=o}var l=this.constraintHandler.currentConstraint;null==l&&(l=new mxConnectionConstraint),this.graph.connectCell(e,n,t,l)}finally{i.endUpdate()}return e},mxEdgeHandler.prototype.changeTerminalPoint=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e);if(null!=i){a.beginUpdate();try{(i=i.clone()).setTerminalPoint(n,t),a.setGeometry(e,i),this.graph.connectCell(e,null,t,new mxConnectionConstraint)}finally{a.endUpdate()}}},mxEdgeHandler.prototype.changePoints=function(e,n){var t=this.graph.getModel(),a=t.getGeometry(e);null!=a&&((a=a.clone()).points=n,t.setGeometry(e,a))},mxEdgeHandler.prototype.addPoint=function(e,n){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.graph.isGridEnabledEvent(n);this.convertPoint(t,a),this.addPointAt(e,t.x,t.y),mxEvent.consume(n)},mxEdgeHandler.prototype.addPointAt=function(e,n,t){var a=this.graph.getCellGeometry(e.cell);if(n=new mxPoint(n,t),null!=a){a=a.clone(),t=this.graph.view.translate;var i=this.graph.view.scale;t=mxUtils.findNearestSegment(e,(n.x+t.x)*i,(n.y+t.y)*i),null==a.points?a.points=[n]:a.points.splice(t,0,n),this.graph.getModel().setGeometry(e.cell,a),this.destroy(),this.init()}},mxEdgeHandler.prototype.removePoint=function(e,n){if(0<n&&n<this.abspoints.length-1){var t=this.graph.getCellGeometry(this.state.cell);null!=t&&null!=t.points&&((t=t.clone()).points.splice(n-1,1),this.graph.getModel().setGeometry(e.cell,t),this.destroy(),this.init())}},mxEdgeHandler.prototype.getHandleFillColor=function(e){e=0==e;var n=this.state.cell,t=this.graph.getModel().getTerminal(n,e),a=mxConstants.HANDLE_FILLCOLOR;return null!=t&&!this.graph.isCellDisconnectable(n,t,e)||null==t&&!this.graph.isTerminalPointMovable(n,e)?a=mxConstants.LOCKED_HANDLE_FILLCOLOR:null!=t&&this.graph.isCellDisconnectable(n,t,e)&&(a=mxConstants.CONNECT_HANDLE_FILLCOLOR),a},mxEdgeHandler.prototype.redraw=function(){this.abspoints=this.state.absolutePoints.slice();var e=this.state.cell,n=mxConstants.LABEL_HANDLE_SIZE;if(this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape.bounds=new mxRectangle(Math.round(this.label.x-n/2),Math.round(this.label.y-n/2),n,n),this.labelShape.redraw(),null!=(n=this.graph.getLabel(e))&&0<n.length&&this.graph.isLabelMovable(e)?this.labelShape.node.style.visibility="visible":this.labelShape.node.style.visibility="hidden",null!=this.bends&&0<this.bends.length){var t=this.abspoints.length-1,a=(e=this.abspoints[0],this.abspoints[0].y);n=this.bends[0].bounds;this.bends[0].bounds=new mxRectangle(Math.round(this.abspoints[0].x-n.width/2),Math.round(a-n.height/2),n.width,n.height),this.bends[0].fill=this.getHandleFillColor(0),this.bends[0].redraw();a=this.abspoints[t];var i=this.abspoints[t].x,s=(t=this.abspoints[t].y,this.bends.length-1);n=this.bends[s].bounds;this.bends[s].bounds=new mxRectangle(Math.round(i-n.width/2),Math.round(t-n.height/2),n.width,n.height),this.bends[s].fill=this.getHandleFillColor(s),this.bends[s].redraw(),this.redrawInnerBends(e,a)}this.drawPreview()},mxEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=this.graph.getModel().getGeometry(this.state.cell).points;if(null!=t){null==this.points&&(this.points=[]);for(var a=1;a<this.bends.length-1;a++)if(null!=this.bends[a])if(null!=this.abspoints[a]){var i=this.abspoints[a].x,s=this.abspoints[a].y,o=this.bends[a].bounds;this.bends[a].node.style.visibility="visible",this.bends[a].bounds=new mxRectangle(Math.round(i-o.width/2),Math.round(s-o.height/2),o.width,o.height),this.bends[a].redraw(),this.points[a-1]=t[a-1]}else this.bends[a].destroy(),this.bends[a]=null}},mxEdgeHandler.prototype.drawPreview=function(){if(this.isLabel){var e=mxConstants.LABEL_HANDLE_SIZE;e=new mxRectangle(Math.round(this.label.x-e/2),Math.round(this.label.y-e/2),e,e);this.labelShape.bounds=e,this.labelShape.redraw()}else this.shape.points=this.abspoints,this.shape.redraw()},mxEdgeHandler.prototype.destroy=function(){if(null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.labelShape&&(this.labelShape.destroy(),this.labelShape=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.bends)for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null)},mxUtils.extend(mxElbowEdgeHandler,mxEdgeHandler),mxElbowEdgeHandler.prototype=new mxEdgeHandler,mxElbowEdgeHandler.prototype.constructor=mxElbowEdgeHandler,mxElbowEdgeHandler.prototype.flipEnabled=!0,mxElbowEdgeHandler.prototype.doubleClickOrientationResource="none"!=mxClient.language?"doubleClickOrientation":"",mxElbowEdgeHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);return this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e.push(this.createVirtualBend()),this.points.push(new mxPoint(0,0)),n=this.createHandleShape(2),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxElbowEdgeHandler.prototype.createVirtualBend=function(){var e=this.createHandleShape();this.initBend(e);var n=this.getCursorForBend();return e.node.style.cursor=n,n=mxUtils.bind(this,function(e){!mxEvent.isConsumed(e)&&this.flipEnabled&&(this.graph.flipEdge(this.state.cell,e),mxEvent.consume(e))}),mxEvent.redirectMouseEvents(e.node,this.graph,this.state,null,null,null,n),this.graph.isCellBendable(this.state.cell)||(e.node.style.display="none"),e},mxElbowEdgeHandler.prototype.getCursorForBend=function(){return this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.TopToBottom||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_TOPTOBOTTOM||(this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.ElbowConnector||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_ELBOW)&&this.state.style[mxConstants.STYLE_ELBOW]==mxConstants.ELBOW_VERTICAL?"row-resize":"col-resize"},mxElbowEdgeHandler.prototype.getTooltipForNode=function(e){var n=null;return null==this.bends||null==this.bends[1]||e!=this.bends[1].node&&e.parentNode!=this.bends[1].node||(n=this.doubleClickOrientationResource,n=mxResources.get(n)||n),n},mxElbowEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate(),i=this.state.origin;n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x-i.x),e.y=Math.round(e.y/t-a.y-i.y)},mxElbowEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=null==(t=null!=(t=this.graph.getModel().getGeometry(this.state.cell).points)?t[0]:null)?new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2):new mxPoint(this.graph.getView().scale*(t.x+this.graph.getView().translate.x+this.state.origin.x),this.graph.getView().scale*(t.y+this.graph.getView().translate.y+this.state.origin.y)),a=(i=this.bends[1].bounds).width,i=i.height;null==this.handleImage&&(i=a=mxConstants.HANDLE_SIZE);var s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i);null==this.handleImage&&"hidden"!=this.labelShape.node.style.visibility&&mxUtils.intersects(s,this.labelShape.bounds)&&(a+=3,i+=3,s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i)),this.bends[1].bounds=s,this.bends[1].redraw()},mxUtils.extend(mxEdgeSegmentHandler,mxEdgeHandler),mxEdgeSegmentHandler.prototype=new mxElbowEdgeHandler,mxEdgeSegmentHandler.prototype.constructor=mxEdgeSegmentHandler,mxEdgeSegmentHandler.prototype.getPreviewPoints=function(e){if(this.isSource||this.isTarget)return mxElbowEdgeHandler.prototype.getPreviewPoints.apply(this,arguments);this.convertPoint(e,!1);var n=this.state.absolutePoints,t=n[0].clone();this.convertPoint(t,!1);for(var a=[],i=1;i<n.length;i++){var s=n[i].clone();this.convertPoint(s,!1),i==this.index&&(t.x==s.x?(t.x=e.x,s.x=e.x):(t.y=e.y,s.y=e.y)),i<n.length-1&&a.push(s),t=s}if(1==a.length){if(t=this.state.view,i=this.state.getVisibleTerminalState(!0),null!=(s=this.state.getVisibleTerminalState(!1))&null!=i){var o=this.state.origin.x,r=this.state.origin.y;mxUtils.contains(s,a[0].x+o,a[0].y+r)?n[1].y==n[2].y?a[0].y=t.getRoutingCenterY(i)-r:a[0].x=t.getRoutingCenterX(i)-o:mxUtils.contains(i,a[0].x+o,a[0].y+r)&&(n[1].y==n[0].y?a[0].y=t.getRoutingCenterY(s)-r:a[0].x=t.getRoutingCenterX(s)-o)}}else 0==a.length&&(a=[e]);return a},mxEdgeSegmentHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none");var t=this.state.absolutePoints;if(this.graph.isCellBendable(this.state.cell)){null==this.points&&(this.points=[]);for(var a=0;a<t.length-1;a++)n=this.createVirtualBend(),e.push(n),n.node.style.cursor=0==t[a].x-t[a+1].x?"col-resize":"row-resize",this.points.push(new mxPoint(0,0)),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none")}return n=this.createHandleShape(t.length),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxEdgeSegmentHandler.prototype.redraw=function(){this.refresh(),mxEdgeHandler.prototype.redraw.apply(this,arguments)},mxEdgeSegmentHandler.prototype.refresh=function(){if(null!=this.bends){for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null);this.bends=this.createBends()}},mxEdgeSegmentHandler.prototype.redrawInnerBends=function(e,n){if(this.graph.isCellBendable(this.state.cell)){var t=mxConstants.HANDLE_SIZE,a=this.state.absolutePoints;if(null!=a&&1<a.length)for(var i=0;i<this.state.absolutePoints.length-1;i++)if(null!=this.bends[i+1]){e=a[i],n=a[i+1];var s=new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2);this.bends[i+1].bounds=new mxRectangle(Math.round(s.x-t/2),Math.round(s.y-t/2),t,t),this.bends[i+1].redraw()}}},mxEdgeSegmentHandler.prototype.changePoints=function(e,n){n=[];var t=this.abspoints;if(1<t.length)for(var a=t[0],i=t[1],s=2;s<t.length;s++){var o=t[s];Math.round(a.x)==Math.round(i.x)&&Math.round(i.x)==Math.round(o.x)||Math.round(a.y)==Math.round(i.y)&&Math.round(i.y)==Math.round(o.y)||(i=(a=i).clone(),this.convertPoint(i,!1),n.push(i)),i=o}mxElbowEdgeHandler.prototype.changePoints.apply(this,arguments)},mxKeyHandler.prototype.graph=null,mxKeyHandler.prototype.target=null,mxKeyHandler.prototype.normalKeys=null,mxKeyHandler.prototype.shiftKeys=null,mxKeyHandler.prototype.controlKeys=null,mxKeyHandler.prototype.controlShiftKeys=null,mxKeyHandler.prototype.enabled=!0,mxKeyHandler.prototype.isEnabled=function(){return this.enabled},mxKeyHandler.prototype.setEnabled=function(e){this.enabled=e},mxKeyHandler.prototype.bindKey=function(e,n){this.normalKeys[e]=n},mxKeyHandler.prototype.bindShiftKey=function(e,n){this.shiftKeys[e]=n},mxKeyHandler.prototype.bindControlKey=function(e,n){this.controlKeys[e]=n},mxKeyHandler.prototype.bindControlShiftKey=function(e,n){this.controlShiftKeys[e]=n},mxKeyHandler.prototype.isControlDown=function(e){return mxEvent.isControlDown(e)},mxKeyHandler.prototype.getFunction=function(e){return null!=e?this.isControlDown(e)?mxEvent.isShiftDown(e)?this.controlShiftKeys[e.keyCode]:this.controlKeys[e.keyCode]:mxEvent.isShiftDown(e)?this.shiftKeys[e.keyCode]:this.normalKeys[e.keyCode]:null},mxKeyHandler.prototype.isGraphEvent=function(e){if((e=mxEvent.getSource(e))==this.target||e.parentNode==this.target||null!=this.graph.cellEditor&&e==this.graph.cellEditor.textarea)return!0;for(;null!=e;){if(e==this.graph.container)return!0;e=e.parentNode}return!1},mxKeyHandler.prototype.keyDown=function(e){if(this.graph.isEnabled()&&!mxEvent.isConsumed(e)&&this.isGraphEvent(e)&&this.isEnabled())if(27==e.keyCode)this.escape(e);else if(!this.graph.isEditing()){var n=this.getFunction(e);null!=n&&(n(e),mxEvent.consume(e))}},mxKeyHandler.prototype.escape=function(e){this.graph.isEscapeEnabled()&&this.graph.escape(e)},mxKeyHandler.prototype.destroy=function(){this.target=null},mxTooltipHandler.prototype.zIndex=10005,mxTooltipHandler.prototype.graph=null,mxTooltipHandler.prototype.delay=null,mxTooltipHandler.prototype.hideOnHover=!1,mxTooltipHandler.prototype.enabled=!0,mxTooltipHandler.prototype.isEnabled=function(){return this.enabled},mxTooltipHandler.prototype.setEnabled=function(e){this.enabled=e},mxTooltipHandler.prototype.isHideOnHover=function(){return this.hideOnHover},mxTooltipHandler.prototype.setHideOnHover=function(e){this.hideOnHover=e},mxTooltipHandler.prototype.init=function(){null!=document.body&&(this.div=document.createElement("div"),this.div.className="mxTooltip",this.div.style.visibility="hidden",this.div.style.zIndex=this.zIndex,document.body.appendChild(this.div),mxEvent.addListener(this.div,"mousedown",mxUtils.bind(this,function(e){this.hideTooltip()})))},mxTooltipHandler.prototype.mouseDown=function(e,n){this.reset(n,!1),this.hideTooltip()},mxTooltipHandler.prototype.mouseMove=function(e,n){n.getX()==this.lastX&&n.getY()==this.lastY||(this.reset(n,!0),(this.isHideOnHover()||n.getState()!=this.state||n.getSource()!=this.node&&(!this.stateSource||null!=n.getState()&&this.stateSource==(n.isSource(n.getState().shape)||!n.isSource(n.getState().text))))&&this.hideTooltip()),this.lastX=n.getX(),this.lastY=n.getY()},mxTooltipHandler.prototype.mouseUp=function(e,n){this.reset(n,!0),this.hideTooltip()},mxTooltipHandler.prototype.resetTimer=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null)},mxTooltipHandler.prototype.reset=function(e,n){if(this.resetTimer(),n&&this.isEnabled()&&null!=e.getState()&&(null==this.div||"hidden"==this.div.style.visibility)){var t=e.getState(),a=e.getSource(),i=e.getX(),s=e.getY(),o=e.isSource(t.shape)||e.isSource(t.text);this.thread=window.setTimeout(mxUtils.bind(this,function(){if(!this.graph.isEditing()&&!this.graph.panningHandler.isMenuShowing()){var e=this.graph.getTooltip(t,a,i,s);this.show(e,i,s),this.state=t,this.node=a,this.stateSource=o}}),this.delay)}},mxTooltipHandler.prototype.hide=function(){this.resetTimer(),this.hideTooltip()},mxTooltipHandler.prototype.hideTooltip=function(){null!=this.div&&(this.div.style.visibility="hidden")},mxTooltipHandler.prototype.show=function(e,n,t){if(null!=e&&0<e.length){null==this.div&&this.init();var a=mxUtils.getScrollOrigin();this.div.style.left=n+a.x+"px",this.div.style.top=t+mxConstants.TOOLTIP_VERTICAL_OFFSET+a.y+"px",mxUtils.isNode(e)?(this.div.innerHTML="",this.div.appendChild(e)):this.div.innerHTML=e.replace(/\n/g,"<br>"),this.div.style.visibility="",mxUtils.fit(this.div)}},mxTooltipHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxEvent.release(this.div),null!=this.div&&null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null},mxUtils.extend(mxCellTracker,mxCellMarker),mxCellTracker.prototype.mouseDown=function(e,n){},mxCellTracker.prototype.mouseMove=function(e,n){this.isEnabled()&&this.process(n)},mxCellTracker.prototype.mouseUp=function(e,n){this.reset()},mxCellTracker.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),mxCellMarker.prototype.destroy.apply(this))},mxCellHighlight.prototype.keepOnTop=!1,mxCellHighlight.prototype.graph=!0,mxCellHighlight.prototype.state=null,mxCellHighlight.prototype.spacing=2,mxCellHighlight.prototype.resetHandler=null,mxCellHighlight.prototype.setHighlightColor=function(e){this.highlightColor=e,null!=this.shape&&(this.shape.stroke=e)},mxCellHighlight.prototype.drawHighlight=function(){this.shape=this.createShape(),this.repaint(),!this.keepOnTop&&this.shape.node.parentNode.firstChild!=this.shape.node&&this.shape.node.parentNode.insertBefore(this.shape.node,this.shape.node.parentNode.firstChild)},mxCellHighlight.prototype.createShape=function(){var e=null;return(e=this.graph.model.isEdge(this.state.cell)?new mxPolyline(this.state.absolutePoints,this.highlightColor,this.strokeWidth):new mxRectangleShape(new mxRectangle,null,this.highlightColor,this.strokeWidth)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),mxEvent.redirectMouseEvents(e.node,this.graph,this.state),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=this.dashed,e},mxCellHighlight.prototype.repaint=function(){if(null!=this.state&&null!=this.shape){var e=0;this.graph.model.isEdge(this.state.cell)?this.shape.points=this.state.absolutePoints:(this.shape.bounds=new mxRectangle(this.state.x-this.spacing,this.state.y-this.spacing,this.state.width+2*this.spacing,this.state.height+2*this.spacing),e=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),0!=e&&(this.shape.rotation=e),this.shape.redraw()}},mxCellHighlight.prototype.hide=function(){this.highlight(null)},mxCellHighlight.prototype.highlight=function(e){this.state!=e&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=e,null!=this.state&&this.drawHighlight())},mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.repaintHandler),this.graph.getModel().removeListener(this.repaintHandler),this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),null!=this.shape&&(this.shape.destroy(),this.shape=null)},mxDefaultKeyHandler.prototype.editor=null,mxDefaultKeyHandler.prototype.handler=null,mxDefaultKeyHandler.prototype.bindAction=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(n)});t?this.handler.bindControlKey(e,a):this.handler.bindKey(e,a)},mxDefaultKeyHandler.prototype.destroy=function(){this.handler.destroy(),this.handler=null},mxDefaultPopupMenu.prototype.imageBasePath=null,mxDefaultPopupMenu.prototype.config=null,mxDefaultPopupMenu.prototype.createMenu=function(e,n,t,a){if(null!=this.config){var i=this.createConditions(e,t,a);this.addItems(e,n,t,a,i,this.config.firstChild,null)}},mxDefaultPopupMenu.prototype.addItems=function(e,n,t,a,i,s,o){for(var r=!1;null!=s;){if("add"==s.nodeName){if(null==(l=s.getAttribute("if"))||i[l]){var l=s.getAttribute("as"),d=(l=mxResources.get(l)||l,mxUtils.eval(mxUtils.getTextContent(s))),c=s.getAttribute("action"),m=s.getAttribute("icon"),u=s.getAttribute("iconCls");r&&(n.addSeparator(o),r=!1),null!=m&&this.imageBasePath&&(m=this.imageBasePath+m),l=this.addAction(n,e,l,m,d,c,t,o,u),this.addItems(e,n,t,a,i,s.firstChild,l)}}else"separator"==s.nodeName&&(r=!0);s=s.nextSibling}},mxDefaultPopupMenu.prototype.addAction=function(e,n,t,a,i,s,o,r,l){return e.addItem(t,a,function(e){"function"==typeof i&&i.call(n,n,o,e),null!=s&&n.execute(s,o,e)},r,l)},mxDefaultPopupMenu.prototype.createConditions=function(e,n,t){var a=e.graph.getModel(),i=a.getChildCount(n),s=[];for(s.nocell=null==n,s.ncells=1<e.graph.getSelectionCount(),s.notRoot=a.getRoot()!=a.getParent(e.graph.getDefaultParent()),s.cell=null!=n,a=null!=n&&1==e.graph.getSelectionCount(),s.nonEmpty=a&&0<i,s.expandable=a&&e.graph.isCellFoldable(n,!1),s.collapsable=a&&e.graph.isCellFoldable(n,!0),s.validRoot=a&&e.graph.isValidRoot(n),s.emptyValidRoot=s.validRoot&&0==i,s.swimlane=a&&e.graph.isSwimlane(n),i=this.config.getElementsByTagName("condition"),a=0;a<i.length;a++){var o=mxUtils.eval(mxUtils.getTextContent(i[a])),r=i[a].getAttribute("name");null!=r&&"function"==typeof o&&(s[r]=o(e,n,t))}return s},mxDefaultToolbar.prototype.editor=null,mxDefaultToolbar.prototype.toolbar=null,mxDefaultToolbar.prototype.resetHandler=null,mxDefaultToolbar.prototype.spacing=4,mxDefaultToolbar.prototype.connectOnDrop=!1,mxDefaultToolbar.prototype.init=function(e){null!=e&&(this.toolbar=new mxToolbar(e),this.toolbar.addListener(mxEvent.SELECT,mxUtils.bind(this,function(e,n){var t=n.getProperty("function");this.editor.insertFunction=null!=t?mxUtils.bind(this,function(){t.apply(this,arguments),this.toolbar.resetMode()}):null})),this.resetHandler=mxUtils.bind(this,function(){null!=this.toolbar&&this.toolbar.resetMode(!0)}),this.editor.graph.addListener(mxEvent.DOUBLE_CLICK,this.resetHandler),this.editor.addListener(mxEvent.ESCAPE,this.resetHandler))},mxDefaultToolbar.prototype.addItem=function(e,n,t,a){var i=mxUtils.bind(this,function(){null!=t&&0<t.length&&this.editor.execute(t)});return this.toolbar.addItem(e,n,i,a)},mxDefaultToolbar.prototype.addSeparator=function(e){e=e||mxClient.imageBasePath+"/separator.gif",this.toolbar.addSeparator(e)},mxDefaultToolbar.prototype.addCombo=function(){return this.toolbar.addCombo()},mxDefaultToolbar.prototype.addActionCombo=function(e){return this.toolbar.addActionCombo(e)},mxDefaultToolbar.prototype.addActionOption=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(t)});this.addOption(e,n,a)},mxDefaultToolbar.prototype.addOption=function(e,n,t){return this.toolbar.addOption(e,n,t)},mxDefaultToolbar.prototype.addMode=function(e,n,t,a,i){var s=mxUtils.bind(this,function(){this.editor.setMode(t),null!=i&&i(this.editor)});return this.toolbar.addSwitchMode(e,n,s,a)},mxDefaultToolbar.prototype.addPrototype=function(e,n,t,a,i,s){var o=function(){return"function"==typeof t?t():null!=t?t.clone():null},r=mxUtils.bind(this,function(e,n){"function"==typeof i?i(this.editor,o(),e,n):this.drop(o(),e,n),this.toolbar.resetMode(),mxEvent.consume(e)});return e=this.toolbar.addMode(e,n,r,a,null,s),this.installDropHandler(e,function(e,n,t){r(n,t)}),e},mxDefaultToolbar.prototype.drop=function(e,n,t){var a=this.editor.graph,i=a.getModel();if(null!=t&&!i.isEdge(t)&&this.connectOnDrop&&a.isCellConnectable(t))this.connect(e,n,t);else{for(;null!=t&&!a.isValidDropTarget(t,[e],n);)t=i.getParent(t);this.insert(e,n,t)}},mxDefaultToolbar.prototype.insert=function(e,n,t){var a=this.editor.graph;if(a.canImportCell(e)){var i=mxEvent.getClientX(n),s=mxEvent.getClientY(n);i=mxUtils.convertPoint(a.container,i,s);return a.isSplitEnabled()&&a.isSplitTarget(t,[e],n)?a.splitEdge(t,[e],null,i.x,i.y):this.editor.addVertex(t,e,i.x,i.y)}return null},mxDefaultToolbar.prototype.connect=function(e,n,t){var a=(n=this.editor.graph).getModel();if(null!=t&&n.isCellConnectable(e)&&n.isEdgeValid(null,t,e)){var i=null;a.beginUpdate();try{var s=a.getGeometry(t),o=a.getGeometry(e).clone();o.x=s.x+(s.width-o.width)/2,o.y=s.y+(s.height-o.height)/2;var r=this.spacing*n.gridSize,l=20*a.getDirectedEdgeCount(t,!0);this.editor.horizontalFlow?o.x+=(o.width+s.width)/2+r+l:o.y+=(o.height+s.height)/2+r+l,e.setGeometry(o);var d=a.getParent(t);if(n.addCell(e,d),n.constrainChild(e),i=this.editor.createEdge(t,e),null==a.getGeometry(i)){var c=new mxGeometry;c.relative=!0,a.setGeometry(i,c)}n.addEdge(i,d,t,e)}finally{a.endUpdate()}n.setSelectionCells([e,i]),n.scrollCellToVisible(e)}},mxDefaultToolbar.prototype.installDropHandler=function(n,t){var a=document.createElement("img");a.setAttribute("src",n.getAttribute("src"));var i=mxUtils.bind(this,function(e){a.style.width=2*n.offsetWidth+"px",a.style.height=2*n.offsetHeight+"px",mxUtils.makeDraggable(n,this.editor.graph,t,a),mxEvent.removeListener(a,"load",i)});mxClient.IS_IE?i():mxEvent.addListener(a,"load",i)},mxDefaultToolbar.prototype.destroy=function(){null!=this.resetHandler&&(this.editor.graph.removeListener("dblclick",this.resetHandler),this.editor.removeListener("escape",this.resetHandler),this.resetHandler=null),null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null)},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/editor"),mxEditor.prototype=new mxEventSource,mxEditor.prototype.constructor=mxEditor,mxEditor.prototype.askZoomResource="none"!=mxClient.language?"askZoom":"",mxEditor.prototype.lastSavedResource="none"!=mxClient.language?"lastSaved":"",mxEditor.prototype.currentFileResource="none"!=mxClient.language?"currentFile":"",mxEditor.prototype.propertiesResource="none"!=mxClient.language?"properties":"",mxEditor.prototype.tasksResource="none"!=mxClient.language?"tasks":"",mxEditor.prototype.helpResource="none"!=mxClient.language?"help":"",mxEditor.prototype.outlineResource="none"!=mxClient.language?"outline":"",mxEditor.prototype.outline=null,mxEditor.prototype.graph=null,mxEditor.prototype.graphRenderHint=null,mxEditor.prototype.toolbar=null,mxEditor.prototype.session=null,mxEditor.prototype.status=null,mxEditor.prototype.popupHandler=null,mxEditor.prototype.undoManager=null,mxEditor.prototype.keyHandler=null,mxEditor.prototype.actions=null,mxEditor.prototype.dblClickAction="edit",mxEditor.prototype.swimlaneRequired=!1,mxEditor.prototype.disableContextMenu=!0,mxEditor.prototype.insertFunction=null,mxEditor.prototype.forcedInserting=!1,mxEditor.prototype.templates=null,mxEditor.prototype.defaultEdge=null,mxEditor.prototype.defaultEdgeStyle=null,mxEditor.prototype.defaultGroup=null,mxEditor.prototype.groupBorderSize=null,mxEditor.prototype.filename=null,mxEditor.prototype.linefeed="&#xa;",mxEditor.prototype.postParameterName="xml",mxEditor.prototype.escapePostData=!0,mxEditor.prototype.urlPost=null,mxEditor.prototype.urlImage=null,mxEditor.prototype.urlInit=null,mxEditor.prototype.urlNotify=null,mxEditor.prototype.urlPoll=null,mxEditor.prototype.horizontalFlow=!1,mxEditor.prototype.layoutDiagram=!1,mxEditor.prototype.swimlaneSpacing=0,mxEditor.prototype.maintainSwimlanes=!1,mxEditor.prototype.layoutSwimlanes=!1,mxEditor.prototype.cycleAttributeValues=null,mxEditor.prototype.cycleAttributeIndex=0,mxEditor.prototype.cycleAttributeName="fillColor",mxEditor.prototype.tasks=null,mxEditor.prototype.tasksWindowImage=null,mxEditor.prototype.tasksTop=20,mxEditor.prototype.help=null,mxEditor.prototype.helpWindowImage=null,mxEditor.prototype.urlHelp=null,mxEditor.prototype.helpWidth=300,mxEditor.prototype.helpHeight=260,mxEditor.prototype.propertiesWidth=240,mxEditor.prototype.propertiesHeight=null,mxEditor.prototype.movePropertiesDialog=!1,mxEditor.prototype.validating=!1,mxEditor.prototype.modified=!1,mxEditor.prototype.isModified=function(){return this.modified},mxEditor.prototype.setModified=function(e){this.modified=e},mxEditor.prototype.addActions=function(){this.addAction("save",function(e){e.save()}),this.addAction("print",function(e){new mxPrintPreview(e.graph,1).open()}),this.addAction("show",function(e){mxUtils.show(e.graph,null,10,10)}),this.addAction("exportImage",function(e){var n=e.getUrlImage();if(null==n||mxClient.IS_LOCAL)e.execute("show");else{var t=mxUtils.getViewXml(e.graph,1);t=mxUtils.getXml(t,"\n");mxUtils.submit(n,e.postParameterName+"="+encodeURIComponent(t),document,"_blank")}}),this.addAction("refresh",function(e){e.graph.refresh()}),this.addAction("cut",function(e){e.graph.isEnabled()&&mxClipboard.cut(e.graph)}),this.addAction("copy",function(e){e.graph.isEnabled()&&mxClipboard.copy(e.graph)}),this.addAction("paste",function(e){e.graph.isEnabled()&&mxClipboard.paste(e.graph)}),this.addAction("delete",function(e){e.graph.isEnabled()&&e.graph.removeCells()}),this.addAction("group",function(e){e.graph.isEnabled()&&e.graph.setSelectionCell(e.groupCells())}),this.addAction("ungroup",function(e){e.graph.isEnabled()&&e.graph.setSelectionCells(e.graph.ungroupCells())}),this.addAction("removeFromParent",function(e){e.graph.isEnabled()&&e.graph.removeCellsFromParent()}),this.addAction("undo",function(e){e.graph.isEnabled()&&e.undo()}),this.addAction("redo",function(e){e.graph.isEnabled()&&e.redo()}),this.addAction("zoomIn",function(e){e.graph.zoomIn()}),this.addAction("zoomOut",function(e){e.graph.zoomOut()}),this.addAction("actualSize",function(e){e.graph.zoomActual()}),this.addAction("fit",function(e){e.graph.fit()}),this.addAction("showProperties",function(e,n){e.showProperties(n)}),this.addAction("selectAll",function(e){e.graph.isEnabled()&&e.graph.selectAll()}),this.addAction("selectNone",function(e){e.graph.isEnabled()&&e.graph.clearSelection()}),this.addAction("selectVertices",function(e){e.graph.isEnabled()&&e.graph.selectVertices()}),this.addAction("selectEdges",function(e){e.graph.isEnabled()&&e.graph.selectEdges()}),this.addAction("edit",function(e,n){e.graph.isEnabled()&&e.graph.isCellEditable(n)&&e.graph.startEditingAtCell(n)}),this.addAction("toBack",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!0)}),this.addAction("toFront",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!1)}),this.addAction("enterGroup",function(e,n){e.graph.enterGroup(n)}),this.addAction("exitGroup",function(e){e.graph.exitGroup()}),this.addAction("home",function(e){e.graph.home()}),this.addAction("selectPrevious",function(e){e.graph.isEnabled()&&e.graph.selectPreviousCell()}),this.addAction("selectNext",function(e){e.graph.isEnabled()&&e.graph.selectNextCell()}),this.addAction("selectParent",function(e){e.graph.isEnabled()&&e.graph.selectParentCell()}),this.addAction("selectChild",function(e){e.graph.isEnabled()&&e.graph.selectChildCell()}),this.addAction("collapse",function(e){e.graph.isEnabled()&&e.graph.foldCells(!0)}),this.addAction("collapseAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!0,!1,n)}}),this.addAction("expand",function(e){e.graph.isEnabled()&&e.graph.foldCells(!1)}),this.addAction("expandAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!1,!1,n)}}),this.addAction("bold",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_BOLD)}),this.addAction("italic",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_ITALIC)}),this.addAction("underline",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_UNDERLINE)}),this.addAction("shadow",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_SHADOW)}),this.addAction("alignCellsLeft",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_LEFT)}),this.addAction("alignCellsCenter",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_CENTER)}),this.addAction("alignCellsRight",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_RIGHT)}),this.addAction("alignCellsTop",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_TOP)}),this.addAction("alignCellsMiddle",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_MIDDLE)}),this.addAction("alignCellsBottom",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_BOTTOM)}),this.addAction("alignFontLeft",function(e){e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT)}),this.addAction("alignFontCenter",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER)}),this.addAction("alignFontRight",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_RIGHT)}),this.addAction("alignFontTop",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_TOP)}),this.addAction("alignFontMiddle",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)}),this.addAction("alignFontBottom",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_BOTTOM)}),this.addAction("zoom",function(e){var n=100*e.graph.getView().scale;n=parseFloat(mxUtils.prompt(mxResources.get(e.askZoomResource)||e.askZoomResource,n))/100;isNaN(n)||e.graph.getView().setScale(n)}),this.addAction("toggleTasks",function(e){null!=e.tasks?e.tasks.setVisible(!e.tasks.isVisible()):e.showTasks()}),this.addAction("toggleHelp",function(e){null!=e.help?e.help.setVisible(!e.help.isVisible()):e.showHelp()}),this.addAction("toggleOutline",function(e){null==e.outline?e.showOutline():e.outline.setVisible(!e.outline.isVisible())}),this.addAction("toggleConsole",function(e){mxLog.setVisible(!mxLog.isVisible())})},mxEditor.prototype.createSession=function(){var e=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.SESSION,"session",e))});return this.connect(this.urlInit,this.urlPoll,this.urlNotify,e)},mxEditor.prototype.configure=function(e){null!=e&&(new mxCodec(e.ownerDocument).decode(e,this),this.resetHistory())},mxEditor.prototype.resetFirstTime=function(){document.cookie="mxgraph=seen; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/"},mxEditor.prototype.resetHistory=function(){this.lastSnapshot=(new Date).getTime(),this.undoManager.clear(),this.ignoredChanges=0,this.setModified(!1)},mxEditor.prototype.addAction=function(e,n){this.actions[e]=n},mxEditor.prototype.execute=function(n,e,t){var a=this.actions[n];if(null!=a)try{var i=arguments;i[0]=this,a.apply(this,i)}catch(e){throw mxUtils.error("Cannot execute "+n+": "+e.message,280,!0),e}else mxUtils.error("Cannot find action "+n,280,!0)},mxEditor.prototype.addTemplate=function(e,n){this.templates[e]=n},mxEditor.prototype.getTemplate=function(e){return this.templates[e]},mxEditor.prototype.createGraph=function(){var e=new mxGraph(null,null,this.graphRenderHint);return e.setTooltips(!0),e.setPanning(!0),this.installDblClickHandler(e),this.installUndoHandler(e),this.installDrillHandler(e),this.installChangeHandler(e),this.installInsertHandler(e),e.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){return this.createPopupMenu(e,n,t)}),e.connectionHandler.factoryMethod=mxUtils.bind(this,function(e,n){return this.createEdge(e,n)}),this.createSwimlaneManager(e),this.createLayoutManager(e),e},mxEditor.prototype.createSwimlaneManager=function(e){return(e=new mxSwimlaneManager(e,!1)).isHorizontal=mxUtils.bind(this,function(){return this.horizontalFlow}),e.isEnabled=mxUtils.bind(this,function(){return this.maintainSwimlanes}),e},mxEditor.prototype.createLayoutManager=function(a){var e=new mxLayoutManager(a),i=this;return e.getLayout=function(e){var n=null,t=i.graph.getModel();return null!=t.getParent(e)&&(i.layoutSwimlanes&&a.isSwimlane(e)?(null==i.swimlaneLayout&&(i.swimlaneLayout=i.createSwimlaneLayout()),n=i.swimlaneLayout):i.layoutDiagram&&(a.isValidRoot(e)||null==t.getParent(t.getParent(e)))&&(null==i.diagramLayout&&(i.diagramLayout=i.createDiagramLayout()),n=i.diagramLayout)),n},e},mxEditor.prototype.setGraphContainer=function(e){null==this.graph.container&&(this.graph.init(e),this.rubberband=new mxRubberband(this.graph),this.disableContextMenu&&mxEvent.disableContextMenu(e),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.installDblClickHandler=function(a){a.addListener(mxEvent.DOUBLE_CLICK,mxUtils.bind(this,function(e,n){var t=n.getProperty("cell");null!=t&&a.isEnabled()&&null!=this.dblClickAction&&(this.execute(this.dblClickAction,t),n.consume())}))},mxEditor.prototype.installUndoHandler=function(a){var e=mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");this.undoManager.undoableEditHappened(t)});a.getModel().addListener(mxEvent.UNDO,e),a.getView().addListener(mxEvent.UNDO,e),e=function(e,n){var t=n.getProperty("edit").changes;a.setSelectionCells(a.getSelectionCellsForChanges(t))},this.undoManager.addListener(mxEvent.UNDO,e),this.undoManager.addListener(mxEvent.REDO,e)},mxEditor.prototype.installDrillHandler=function(e){var n=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.ROOT))});e.getView().addListener(mxEvent.DOWN,n),e.getView().addListener(mxEvent.UP,n)},mxEditor.prototype.installChangeHandler=function(s){var e=mxUtils.bind(this,function(e,n){this.setModified(!0),1==this.validating&&s.validateGraph();for(var t=n.getProperty("edit").changes,a=0;a<t.length;a++){var i=t[a];if(i instanceof mxRootChange||i instanceof mxValueChange&&i.cell==this.graph.model.root||i instanceof mxCellAttributeChange&&i.cell==this.graph.model.root){this.fireEvent(new mxEventObject(mxEvent.ROOT));break}}});s.getModel().addListener(mxEvent.CHANGE,e)},mxEditor.prototype.installInsertHandler=function(e){var t=this;e.addMouseListener({mouseDown:function(e,n){null==t.insertFunction||n.isPopupTrigger()||!t.forcedInserting&&null!=n.getState()||(t.graph.clearSelection(),t.insertFunction(n.getEvent(),n.getCell()),this.isActive=!0,n.consume())},mouseMove:function(e,n){this.isActive&&n.consume()},mouseUp:function(e,n){this.isActive&&(this.isActive=!1,n.consume())}})},mxEditor.prototype.createDiagramLayout=function(){var e=this.graph.gridSize,n=new mxStackLayout(this.graph,!this.horizontalFlow,this.swimlaneSpacing,2*e,2*e);return n.isVertexIgnored=function(e){return!n.graph.isSwimlane(e)},n},mxEditor.prototype.createSwimlaneLayout=function(){return new mxCompactTreeLayout(this.graph,this.horizontalFlow)},mxEditor.prototype.createToolbar=function(){return new mxDefaultToolbar(null,this)},mxEditor.prototype.setToolbarContainer=function(e){this.toolbar.init(e),mxClient.IS_QUIRKS&&new mxDivResizer(e)},mxEditor.prototype.setStatusContainer=function(e){null==this.status&&(this.status=e,this.addListener(mxEvent.SAVE,mxUtils.bind(this,function(){var e=(new Date).toLocaleString();this.setStatus((mxResources.get(this.lastSavedResource)||this.lastSavedResource)+": "+e)})),this.addListener(mxEvent.OPEN,mxUtils.bind(this,function(){this.setStatus((mxResources.get(this.currentFileResource)||this.currentFileResource)+": "+this.filename)})),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.setStatus=function(e){null!=this.status&&null!=e&&(this.status.innerHTML=e)},mxEditor.prototype.setTitleContainer=function(n){this.addListener(mxEvent.ROOT,mxUtils.bind(this,function(e){n.innerHTML=this.getTitle()})),mxClient.IS_QUIRKS&&new mxDivResizer(n)},mxEditor.prototype.treeLayout=function(e,n){null!=e&&new mxCompactTreeLayout(this.graph,n).execute(e)},mxEditor.prototype.getTitle=function(){for(var e="",n=this.graph,t=n.getCurrentRoot();null!=t&&null!=n.getModel().getParent(n.getModel().getParent(t));)n.isValidRoot(t)&&(e=" > "+n.convertValueToString(t)+e),t=n.getModel().getParent(t);return this.getRootTitle()+e},mxEditor.prototype.getRootTitle=function(){var e=this.graph.getModel().getRoot();return this.graph.convertValueToString(e)},mxEditor.prototype.undo=function(){this.undoManager.undo()},mxEditor.prototype.redo=function(){this.undoManager.redo()},mxEditor.prototype.groupCells=function(){var e=null!=this.groupBorderSize?this.groupBorderSize:this.graph.gridSize;return this.graph.groupCells(this.createGroup(),e)},mxEditor.prototype.createGroup=function(){return this.graph.getModel().cloneCell(this.defaultGroup)},mxEditor.prototype.open=function(e){if(null!=e){var n=mxUtils.load(e).getXml();this.readGraphModel(n.documentElement),this.filename=e,this.fireEvent(new mxEventObject(mxEvent.OPEN,"filename",e))}},mxEditor.prototype.readGraphModel=function(e){new mxCodec(e.ownerDocument).decode(e,this.graph.getModel()),this.resetHistory()},mxEditor.prototype.save=function(e,n){if(null!=(e=e||this.getUrlPost())&&0<e.length){var t=this.writeGraphModel(n);this.postDiagram(e,t),this.setModified(!1)}this.fireEvent(new mxEventObject(mxEvent.SAVE,"url",e))},mxEditor.prototype.postDiagram=function(n,t){this.escapePostData&&(t=encodeURIComponent(t)),mxUtils.post(n,this.postParameterName+"="+t,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.POST,"request",e,"url",n,"data",t))}))},mxEditor.prototype.writeGraphModel=function(e){e=null!=e?e:this.linefeed;var n=(new mxCodec).encode(this.graph.getModel());return mxUtils.getXml(n,e)},mxEditor.prototype.getUrlPost=function(){return this.urlPost},mxEditor.prototype.getUrlImage=function(){return this.urlImage},mxEditor.prototype.connect=function(e,n,t,a){var i=null;return mxClient.IS_LOCAL||((i=new mxSession(this.graph.getModel(),e,n,t)).addListener(mxEvent.RECEIVE,mxUtils.bind(this,function(e,n){null!=n.getProperty("node").getAttribute("namespace")&&this.resetHistory()})),i.addListener(mxEvent.DISCONNECT,a),i.addListener(mxEvent.CONNECT,a),i.addListener(mxEvent.NOTIFY,a),i.addListener(mxEvent.GET,a),i.start()),i},mxEditor.prototype.swapStyles=function(e,n){var t=this.graph.getStylesheet().styles[n];this.graph.getView().getStylesheet().putCellStyle(n,this.graph.getStylesheet().styles[e]),this.graph.getStylesheet().putCellStyle(e,t),this.graph.refresh()},mxEditor.prototype.showProperties=function(e){if(null==(e=e||this.graph.getSelectionCell())&&(null==(e=this.graph.getCurrentRoot())&&(e=this.graph.getModel().getRoot())),null!=e){this.graph.stopEditing(!0);var n=(t=mxUtils.getOffset(this.graph.container)).x+10,t=t.y;if(null==this.properties||this.movePropertiesDialog){var a=this.graph.getCellBounds(e);null!=a&&(n+=a.x+Math.min(200,a.width),t+=a.y)}else n=this.properties.getX(),t=this.properties.getY();this.hideProperties(),null!=(e=this.createProperties(e))&&(this.properties=new mxWindow(mxResources.get(this.propertiesResource)||this.propertiesResource,e,n,t,this.propertiesWidth,this.propertiesHeight,!1),this.properties.setVisible(!0))}},mxEditor.prototype.isPropertiesVisible=function(){return null!=this.properties},mxEditor.prototype.createProperties=function(t){var a=this.graph.getModel(),e=a.getValue(t);if(mxUtils.isNode(e)){var n=new mxForm("properties");n.addText("ID",t.getId()).setAttribute("readonly","true");var i=null,s=null,o=null,r=null,l=null;a.isVertex(t)&&(null!=(i=a.getGeometry(t))&&(s=n.addText("top",i.y),o=n.addText("left",i.x),r=n.addText("width",i.width),l=n.addText("height",i.height)));var d=a.getStyle(t),c=n.addText("Style",d||""),m=e.attributes,u=[];for(e=0;e<m.length;e++)u[e]=n.addTextarea(m[e].nodeName,m[e].nodeValue,"label"==m[e].nodeName?4:2);return e=mxUtils.bind(this,function(){this.hideProperties(),a.beginUpdate();try{null!=i&&((i=i.clone()).x=parseFloat(o.value),i.y=parseFloat(s.value),i.width=parseFloat(r.value),i.height=parseFloat(l.value),a.setGeometry(t,i)),0<c.value.length?a.setStyle(t,c.value):a.setStyle(t,null);for(var e=0;e<m.length;e++){var n=new mxCellAttributeChange(t,m[e].nodeName,u[e].value);a.execute(n)}this.graph.isAutoSizeCell(t)&&this.graph.updateCellSize(t)}finally{a.endUpdate()}}),d=mxUtils.bind(this,function(){this.hideProperties()}),n.addButtons(e,d),n.table}return null},mxEditor.prototype.hideProperties=function(){null!=this.properties&&(this.properties.destroy(),this.properties=null)},mxEditor.prototype.showTasks=function(){if(null==this.tasks){var n=document.createElement("div");n.style.padding="4px",n.style.paddingLeft="20px";var e=document.body.clientWidth;(e=new mxWindow(mxResources.get(this.tasksResource)||this.tasksResource,n,e-220,this.tasksTop,200)).setClosable(!0),e.destroyOnClose=!1;var t=mxUtils.bind(this,function(e){mxEvent.release(n),n.innerHTML="",this.createTasks(n)});this.graph.getModel().addListener(mxEvent.CHANGE,t),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,t),this.graph.addListener(mxEvent.ROOT,t),null!=this.tasksWindowImage&&e.setImage(this.tasksWindowImage),this.tasks=e,this.createTasks(n)}this.tasks.setVisible(!0)},mxEditor.prototype.refreshTasks=function(e){null!=this.tasks&&(e=this.tasks.content,mxEvent.release(e),e.innerHTML="",this.createTasks(e))},mxEditor.prototype.createTasks=function(e){},mxEditor.prototype.showHelp=function(e){if(null==this.help){var n=document.createElement("iframe");n.setAttribute("src",mxResources.get("urlHelp")||this.urlHelp),n.setAttribute("height","100%"),n.setAttribute("width","100%"),n.setAttribute("frameBorder","0"),n.style.backgroundColor="white",e=document.body.clientWidth;var t=document.body.clientHeight||document.documentElement.clientHeight,a=new mxWindow(mxResources.get(this.helpResource)||this.helpResource,n,(e-this.helpWidth)/2,(t-this.helpHeight)/3,this.helpWidth,this.helpHeight);a.setMaximizable(!0),a.setClosable(!0),a.destroyOnClose=!1,a.setResizable(!0),null!=this.helpWindowImage&&a.setImage(this.helpWindowImage),mxClient.IS_NS&&(e=function(e){n.setAttribute("height",a.div.offsetHeight-26+"px")},a.addListener(mxEvent.RESIZE_END,e),a.addListener(mxEvent.MAXIMIZE,e),a.addListener(mxEvent.NORMALIZE,e),a.addListener(mxEvent.SHOW,e)),this.help=a}this.help.setVisible(!0)},mxEditor.prototype.showOutline=function(){if(null==this.outline){var e=document.createElement("div");e.style.overflow="hidden",e.style.width="100%",e.style.height="100%",e.style.background="white",e.style.cursor="move";var n=new mxWindow(mxResources.get(this.outlineResource)||this.outlineResource,e,600,480,200,200,!1),t=new mxOutline(this.graph,e);n.setClosable(!0),n.setResizable(!0),n.destroyOnClose=!1,n.addListener(mxEvent.RESIZE_END,function(){t.update()}),this.outline=n,this.outline.outline=t}this.outline.setVisible(!0),this.outline.outline.update(!0)},mxEditor.prototype.setMode=function(e){"select"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!1)):"connect"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!0)):"pan"==e&&(this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.setConnectable(!1))},mxEditor.prototype.createPopupMenu=function(e,n,t){this.popupHandler.createMenu(this,e,n,t)},mxEditor.prototype.createEdge=function(e,n){var t=null;if(null!=this.defaultEdge)t=this.graph.getModel().cloneCell(this.defaultEdge);else{(t=new mxCell("")).setEdge(!0);var a=new mxGeometry;a.relative=!0,t.setGeometry(a)}return null!=(a=this.getEdgeStyle())&&t.setStyle(a),t},mxEditor.prototype.getEdgeStyle=function(){return this.defaultEdgeStyle},mxEditor.prototype.consumeCycleAttribute=function(e){return null!=this.cycleAttributeValues&&0<this.cycleAttributeValues.length&&this.graph.isSwimlane(e)?this.cycleAttributeValues[this.cycleAttributeIndex++%this.cycleAttributeValues.length]:null},mxEditor.prototype.cycleAttribute=function(e){if(null!=this.cycleAttributeName){var n=this.consumeCycleAttribute(e);null!=n&&e.setStyle(e.getStyle()+";"+this.cycleAttributeName+"="+n)}},mxEditor.prototype.addVertex=function(e,n,t,a){for(var i=this.graph.getModel();null!=e&&!this.graph.isValidDropTarget(e);)e=i.getParent(e);e=null!=e?e:this.graph.getSwimlaneAt(t,a);var s=this.graph.getView().scale,o=i.getGeometry(n),r=i.getGeometry(e);if(this.graph.isSwimlane(n)&&!this.graph.swimlaneNesting)e=null;else{if(null==e&&this.swimlaneRequired)return null;if(null!=e&&null!=r){var l=this.graph.getView().getState(e);if(null!=l){if(t-=l.origin.x*s,a-=l.origin.y*s,this.graph.isConstrainedMoving){r=o.width;var d=o.height,c=l.x+l.width;c<t+r&&(t-=t+r-c),(c=l.y+l.height)<a+d&&(a-=a+d-c)}}else null!=r&&(t-=r.x*s,a-=r.y*s)}}(o=o.clone()).x=this.graph.snap(t/s-this.graph.getView().translate.x-this.graph.gridSize/2),o.y=this.graph.snap(a/s-this.graph.getView().translate.y-this.graph.gridSize/2),n.setGeometry(o),null==e&&(e=this.graph.getDefaultParent()),this.cycleAttribute(n),this.fireEvent(new mxEventObject(mxEvent.BEFORE_ADD_VERTEX,"vertex",n,"parent",e)),i.beginUpdate();try{null!=(n=this.graph.addCell(n,e))&&(this.graph.constrainChild(n),this.fireEvent(new mxEventObject(mxEvent.ADD_VERTEX,"vertex",n)))}finally{i.endUpdate()}return null!=n&&(this.graph.setSelectionCell(n),this.graph.scrollCellToVisible(n),this.fireEvent(new mxEventObject(mxEvent.AFTER_ADD_VERTEX,"vertex",n))),n},mxEditor.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tasks&&this.tasks.destroy(),null!=this.outline&&this.outline.destroy(),null!=this.properties&&this.properties.destroy(),null!=this.keyHandler&&this.keyHandler.destroy(),null!=this.rubberband&&this.rubberband.destroy(),null!=this.toolbar&&this.toolbar.destroy(),null!=this.graph&&this.graph.destroy(),this.templates=this.status=null)};var mxCodecRegistry={codecs:[],aliases:[],register:function(e){if(null!=e){var n=e.getName();mxCodecRegistry.codecs[n]=e;var t=mxUtils.getFunctionName(e.template.constructor);t!=n&&mxCodecRegistry.addAlias(t,n)}return e},addAlias:function(e,n){mxCodecRegistry.aliases[e]=n},getCodec:function(e){var n=null;if(null!=e){n=mxUtils.getFunctionName(e);var t=mxCodecRegistry.aliases[n];if(null!=t&&(n=t),null==(n=mxCodecRegistry.codecs[n]))try{n=new mxObjectCodec(new e),mxCodecRegistry.register(n)}catch(e){}}return n}};function mxCodec(e){this.document=e||mxUtils.createXmlDocument(),this.objects=[]}function mxObjectCodec(e,n,t,a){for(var i in this.template=e,this.exclude=null!=n?n:[],this.idrefs=null!=t?t:[],this.mapping=null!=a?a:[],this.reverse={},this.mapping)this.reverse[this.mapping[i]]=i}mxCodec.prototype.document=null,mxCodec.prototype.objects=null,mxCodec.prototype.encodeDefaults=!1,mxCodec.prototype.putObject=function(e,n){return this.objects[e]=n},mxCodec.prototype.getObject=function(e){var n=null;return null!=e&&(null==(n=this.objects[e])&&(null==(n=this.lookup(e))&&(null!=(e=this.getElementById(e))&&(n=this.decode(e))))),n},mxCodec.prototype.lookup=function(e){return null},mxCodec.prototype.getElementById=function(e,n){return mxUtils.findNodeByAttribute(this.document.documentElement,null!=n?n:"id",e)},mxCodec.prototype.getId=function(e){var n=null;return null!=e&&(null==(n=this.reference(e))&&e instanceof mxCell&&(null==(n=e.getId())&&(0==(n=mxCellPath.create(e)).length&&(n="root")))),n},mxCodec.prototype.reference=function(e){return null},mxCodec.prototype.encode=function(e){var n=null;if(null!=e&&null!=e.constructor){var t=mxCodecRegistry.getCodec(e.constructor);null!=t?n=t.encode(this,e):mxUtils.isNode(e)?n=mxClient.IS_IE?e.cloneNode(!0):this.document.importNode(e,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(e.constructor))}return n},mxCodec.prototype.decode=function(a,b){var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){var d=null;try{d=eval(a.nodeName)}catch(e){}try{var f=mxCodecRegistry.getCodec(d);null!=f?c=f.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}catch(e){mxLog.debug("Cannot decode "+a.nodeName+": "+e.message)}}return c},mxCodec.prototype.encodeCell=function(e,n,t){if(n.appendChild(this.encode(e)),null==t||t){t=e.getChildCount();for(var a=0;a<t;a++)this.encodeCell(e.getChildAt(a),n)}},mxCodec.prototype.isCellCodec=function(e){return null!=e&&"function"==typeof e.isCellCodec&&e.isCellCodec()},mxCodec.prototype.decodeCell=function(e,n){n=null==n||n;var t=null;if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){if(t=mxCodecRegistry.getCodec(e.nodeName),!this.isCellCodec(t))for(var a=e.firstChild;null!=a&&!this.isCellCodec(t);)t=mxCodecRegistry.getCodec(a.nodeName),a=a.nextSibling;this.isCellCodec(t)||(t=mxCodecRegistry.getCodec(mxCell)),t=t.decode(this,e),n&&this.insertIntoGraph(t)}return t},mxCodec.prototype.insertIntoGraph=function(e){var n=e.parent,t=e.getTerminal(!0),a=e.getTerminal(!1);e.setTerminal(null,!1),e.setTerminal(null,!0),(e.parent=null)!=n&&n.insert(e),null!=t&&t.insertEdge(e,!0),null!=a&&a.insertEdge(e,!1)},mxCodec.prototype.setAttribute=function(e,n,t){null!=n&&null!=t&&e.setAttribute(n,t)},mxObjectCodec.prototype.template=null,mxObjectCodec.prototype.exclude=null,mxObjectCodec.prototype.idrefs=null,mxObjectCodec.prototype.mapping=null,mxObjectCodec.prototype.reverse=null,mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)},mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor},mxObjectCodec.prototype.getFieldName=function(e){if(null!=e){var n=this.reverse[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.getAttributeName=function(e){if(null!=e){var n=this.mapping[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.isExcluded=function(e,n,t,a){return n==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,n)},mxObjectCodec.prototype.isReference=function(e,n,t,a){return 0<=mxUtils.indexOf(this.idrefs,n)},mxObjectCodec.prototype.encode=function(e,n){var t=e.document.createElement(this.getName());return n=this.beforeEncode(e,n,t),this.encodeObject(e,n,t),this.afterEncode(e,n,t)},mxObjectCodec.prototype.encodeObject=function(e,n,t){for(var a in e.setAttribute(t,"id",e.getId(n)),n){var i=a,s=n[i];null!=s&&!this.isExcluded(n,i,s,!0)&&(mxUtils.isNumeric(i)&&(i=null),this.encodeValue(e,n,i,s,t))}},mxObjectCodec.prototype.encodeValue=function(e,n,t,a,i){if(null!=a){if(this.isReference(n,t,a,!0)){var s=e.getId(a);if(null==s)return void mxLog.warn("mxObjectCodec.encode: No ID for "+this.getName()+"."+t+"="+a);a=s}s=this.template[t],(null==t||e.encodeDefaults||s!=a)&&(t=this.getAttributeName(t),this.writeAttribute(e,n,t,a,i))}},mxObjectCodec.prototype.writeAttribute=function(e,n,t,a,i){"object"!=typeof a?this.writePrimitiveAttribute(e,n,t,a,i):this.writeComplexAttribute(e,n,t,a,i)},mxObjectCodec.prototype.writePrimitiveAttribute=function(e,n,t,a,i){a=this.convertValueToXml(a),null==t?(n=e.document.createElement("add"),"function"==typeof a?n.appendChild(e.document.createTextNode(a)):e.setAttribute(n,"value",a),i.appendChild(n)):"function"!=typeof a&&e.setAttribute(i,t,a)},mxObjectCodec.prototype.writeComplexAttribute=function(e,n,t,a,i){null!=(e=e.encode(a))?(null!=t&&e.setAttribute("as",t),i.appendChild(e)):mxLog.warn("mxObjectCodec.encode: No node for "+this.getName()+"."+t+": "+a)},mxObjectCodec.prototype.convertValueToXml=function(e){return void 0!==e.length||1!=e&&0!=e||(e=1==e?"1":"0"),e},mxObjectCodec.prototype.convertValueFromXml=function(e){return mxUtils.isNumeric(e)&&(e=parseFloat(e)),e},mxObjectCodec.prototype.beforeEncode=function(e,n,t){return n},mxObjectCodec.prototype.afterEncode=function(e,n,t){return t},mxObjectCodec.prototype.decode=function(e,n,t){var a=n.getAttribute("id"),i=e.objects[a];return null==i&&(i=t||this.cloneTemplate(),null!=a&&e.putObject(a,i)),n=this.beforeDecode(e,n,i),this.decodeNode(e,n,i),this.afterDecode(e,n,i)},mxObjectCodec.prototype.decodeNode=function(e,n,t){null!=n&&(this.decodeAttributes(e,n,t),this.decodeChildren(e,n,t))},mxObjectCodec.prototype.decodeAttributes=function(e,n,t){if(null!=(n=n.attributes))for(var a=0;a<n.length;a++)this.decodeAttribute(e,n[a],t)},mxObjectCodec.prototype.decodeAttribute=function(e,n,t){var a=n.nodeName;if("as"!=a&&"id"!=a){n="value"==a?n.nodeValue:this.convertValueFromXml(n.nodeValue);var i=this.getFieldName(a);if(this.isReference(t,i,n,!1)){if(null==(e=e.getObject(n)))return void mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+a+"="+n);n=e}this.isExcluded(t,a,n,!1)||(t[a]=n)}},mxObjectCodec.prototype.decodeChildren=function(e,n,t){for(n=n.firstChild;null!=n;){var a=n.nextSibling;n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t)&&this.decodeChild(e,n,t),n=a}},mxObjectCodec.prototype.decodeChild=function(e,n,t){var a=this.getFieldName(n.getAttribute("as"));if(null==a||!this.isExcluded(t,a,n,!1)){var i=this.getFieldTemplate(t,a,n),s=null;"add"==n.nodeName?null==(s=n.getAttribute("value"))&&(s=mxUtils.eval(mxUtils.getTextContent(n))):s=e.decode(n,i),this.addObjectValue(t,a,s,i)}},mxObjectCodec.prototype.getFieldTemplate=function(e,n,t){return(e=e[n])instanceof Array&&0<e.length&&(e=null),e},mxObjectCodec.prototype.addObjectValue=function(e,n,t,a){null!=t&&t!=a&&(null!=n&&0<n.length?e[n]=t:e.push(t))},mxObjectCodec.prototype.processInclude=function(e,n,t){if("include"!=n.nodeName)return!1;if(null!=(n=n.getAttribute("name")))try{var a=mxUtils.load(n).getDocumentElement();null!=a&&e.decode(a,t)}catch(e){}return!0},mxObjectCodec.prototype.beforeDecode=function(e,n,t){return n},mxObjectCodec.prototype.afterDecode=function(e,n,t){return t},mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);return e.isCellCodec=function(){return!0},e.isExcluded=function(e,n,t,a){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||a&&"value"==n&&t.nodeType==mxConstants.NODETYPE_ELEMENT},e.afterEncode=function(e,n,t){if(null!=n.value&&n.value.nodeType==mxConstants.NODETYPE_ELEMENT){var a=t;(t=mxClient.IS_IE?n.value.cloneNode(!0):e.document.importNode(n.value,!0)).appendChild(a),e=a.getAttribute("id"),t.setAttribute("id",e),a.removeAttribute("id")}return t},e.beforeDecode=function(e,n,t){var a=n,i=this.getName();if(n.nodeName!=i?(null!=(a=n.getElementsByTagName(i)[0])&&a.parentNode==n?(mxUtils.removeWhitespace(a,!0),mxUtils.removeWhitespace(a,!1),a.parentNode.removeChild(a)):a=null,t.value=n.cloneNode(!0),null!=(n=t.value.getAttribute("id"))&&(t.setId(n),t.value.removeAttribute("id"))):t.setId(n.getAttribute("id")),null!=a)for(n=0;n<this.idrefs.length;n++){i=this.idrefs[n];var s=a.getAttribute(i);if(null!=s){a.removeAttribute(i);var o=e.objects[s]||e.lookup(s);null==o&&(null!=(s=e.getElementById(s))&&(o=(mxCodecRegistry.codecs[s.nodeName]||this).decode(e,s))),t[i]=o}}return a},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphModel);return e.encodeObject=function(e,n,t){var a=e.document.createElement("root");e.encodeCell(n.getRoot(),a),t.appendChild(a)},e.decodeChild=function(e,n,t){"root"==n.nodeName?this.decodeRoot(e,n,t):mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeRoot=function(e,n,t){var a=null;for(n=n.firstChild;null!=n;){var i=e.decodeCell(n);null!=i&&null==i.getParent()&&(a=i),n=n.nextSibling}null!=a&&t.setRoot(a)},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxRootChange,["model","previous","root"]);return e.afterEncode=function(e,n,t){return e.encodeCell(n.root,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.root=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;)t=a.nextSibling,e.decodeCell(a),a.parentNode.removeChild(a),a=t}return n},e.afterDecode=function(e,n,t){return t.previous=t.root,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxChildChange,["model","child","previousIndex"],["parent","previous"]);return e.isReference=function(e,n,t,a){return!("child"!=n||null==e.previous&&a)||0<=mxUtils.indexOf(this.idrefs,n)},e.afterEncode=function(e,n,t){return this.isReference(n,"child",n.child,!0)?t.setAttribute("child",e.getId(n.child)):e.encodeCell(n.child,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.child=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;){if(t=a.nextSibling,a.nodeType==mxConstants.NODETYPE_ELEMENT){var i=a.getAttribute("id");null==e.lookup(i)&&e.decodeCell(a)}a.parentNode.removeChild(a),a=t}}else a=n.getAttribute("child"),t.child=e.getObject(a);return n},e.afterDecode=function(e,n,t){return t.child.parent=t.previous,t.previous=t.parent,t.previousIndex=t.index,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxTerminalChange,["model","previous"],["cell","terminal"]);return e.afterDecode=function(e,n,t){return t.previous=t.terminal,t},e}());var mxGenericChangeCodec=function(e,a){var n=new mxObjectCodec(e,["model","previous"],["cell"]);return n.afterDecode=function(e,n,t){return mxUtils.isNode(t.cell)&&(t.cell=e.decodeCell(t.cell,!1)),t.previous=t[a],t},n};mxCodecRegistry.register(mxGenericChangeCodec(new mxValueChange,"value")),mxCodecRegistry.register(mxGenericChangeCodec(new mxStyleChange,"style")),mxCodecRegistry.register(mxGenericChangeCodec(new mxGeometryChange,"geometry")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCollapseChange,"collapsed")),mxCodecRegistry.register(mxGenericChangeCodec(new mxVisibleChange,"visible")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCellAttributeChange,"value")),mxCodecRegistry.register(new mxObjectCodec(new mxGraph,"graphListeners eventListeners view container cellRenderer editor selection".split(" "))),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphView);return e.encode=function(e,n){return this.encodeCell(e,n,n.graph.getModel().getRoot())},e.encodeCell=function(e,n,t){var a=n.graph.getModel(),i=n.getState(t),s=a.getParent(t);if(null==s||null!=i){var o=a.getChildCount(t),r=n.graph.getCellGeometry(t),l=null;if(s==a.getRoot()?l="layer":null==s?l="graph":a.isEdge(t)?l="edge":0<o&&null!=r?l="group":a.isVertex(t)&&(l="vertex"),null!=l){var d=e.document.createElement(l);if(null!=n.graph.getLabel(t)&&(d.setAttribute("label",n.graph.getLabel(t)),n.graph.isHtmlLabel(t)&&d.setAttribute("html",!0)),null==s){var c=n.getGraphBounds();null!=c&&(d.setAttribute("x",Math.round(c.x)),d.setAttribute("y",Math.round(c.y)),d.setAttribute("width",Math.round(c.width)),d.setAttribute("height",Math.round(c.height))),d.setAttribute("scale",n.scale)}else if(null!=i&&null!=r){for(c in i.style)"function"==typeof(s=i.style[c])&&"object"==typeof s&&(s=mxStyleRegistry.getName(s)),null!=s&&"function"!=typeof s&&"object"!=typeof s&&d.setAttribute(c,s);if(null!=(s=i.absolutePoints)&&0<s.length){for(r=Math.round(s[0].x)+","+Math.round(s[0].y),c=1;c<s.length;c++)r+=" "+Math.round(s[c].x)+","+Math.round(s[c].y);d.setAttribute("points",r)}else d.setAttribute("x",Math.round(i.x)),d.setAttribute("y",Math.round(i.y)),d.setAttribute("width",Math.round(i.width)),d.setAttribute("height",Math.round(i.height));null!=(c=i.absoluteOffset)&&(0!=c.x&&d.setAttribute("dx",Math.round(c.x)),0!=c.y&&d.setAttribute("dy",Math.round(c.y)))}for(c=0;c<o;c++)null!=(i=this.encodeCell(e,n,a.getChildAt(t,c)))&&d.appendChild(i)}}return d},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxStylesheet);return e.encode=function(e,n){var t,a=e.document.createElement(this.getName());for(t in n.styles){var i=n.styles[t],s=e.document.createElement("add");if(null!=t){for(var o in s.setAttribute("as",t),i){var r=this.getStringValue(o,i[o]);if(null!=r){var l=e.document.createElement("add");l.setAttribute("value",r),l.setAttribute("as",o),s.appendChild(l)}}0<s.childNodes.length&&a.appendChild(s)}}return a},e.getStringValue=function(e,n){var t=typeof n;return"function"==t?n=mxStyleRegistry.getName(style[j]):"object"==t&&(n=null),n},e.decode=function(e,n,t){t=t||new this.template.constructor;var a=n.getAttribute("id");for(null!=a&&(e.objects[a]=t),n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName&&null!=(a=n.getAttribute("as"))){var i=n.getAttribute("extend"),s=null!=i?mxUtils.clone(t.styles[i]):null;for(null==s&&(null!=i&&mxLog.warn("mxStylesheetCodec.decode: stylesheet "+i+" not found to extend"),s={}),i=n.firstChild;null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT){var o=i.getAttribute("as");if("add"==i.nodeName){var r=mxUtils.getTextContent(i),l=null;null!=r&&0<r.length?l=mxUtils.eval(r):(l=i.getAttribute("value"),mxUtils.isNumeric(l)&&(l=parseFloat(l))),null!=l&&(s[o]=l)}else"remove"==i.nodeName&&delete s[o]}i=i.nextSibling}t.putCellStyle(a,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultKeyHandler);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t)for(n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName){var a=n.getAttribute("as"),i=n.getAttribute("action"),s=n.getAttribute("control");t.bindAction(a,i,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultToolbar);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t){var a=t.editor;for(n=n.firstChild;null!=n;){if(n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t))if("separator"==n.nodeName)t.addSeparator();else if("br"==n.nodeName)t.toolbar.addBreak();else if("hr"==n.nodeName)t.toolbar.addLine();else if("add"==n.nodeName){var i=n.getAttribute("as"),s=(i=mxResources.get(i)||i,n.getAttribute("icon")),o=n.getAttribute("pressedIcon"),r=n.getAttribute("action"),l=n.getAttribute("mode"),d=n.getAttribute("template"),c="0"!=n.getAttribute("toggle"),m=mxUtils.getTextContent(n),u=null;if(null!=r)u=t.addItem(i,s,r,o);else if(null!=l){var p=mxUtils.eval(m);u=t.addMode(i,s,l,o,p)}else if(null!=d||null!=m&&0<m.length)u=a.templates[d],d=n.getAttribute("style"),null!=u&&null!=d&&(u=u.clone()).setStyle(d),(d=null)!=m&&0<m.length&&(d=mxUtils.eval(m)),u=t.addPrototype(i,s,u,o,d,c);else if(0<(o=mxUtils.getChildNodes(n)).length)if(null==s)for(d=t.addActionCombo(i),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(d,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),c=c.getAttribute("action"),t.addActionOption(d,s,c));else{var g=null,v=t.addPrototype(i,s,function(){if(null==(e=a.templates[g.value]))return mxLog.warn("Template "+e+" not found"),null;var e=e.clone(),n=g.options[g.selectedIndex].cellStyle;return null!=n&&e.setStyle(n),e},null,null,c);g=t.addCombo();for(mxEvent.addListener(g,"change",function(){t.toolbar.selectMode(v,function(e){return e=mxUtils.convertPoint(a.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a.addVertex(null,p(),e.x,e.y)}),t.toolbar.noReset=!1}),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(g,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),m=c.getAttribute("template"),t.addOption(g,s,m||d).cellStyle=c.getAttribute("style"))}null!=u&&(null!=(d=n.getAttribute("id"))&&0<d.length&&u.setAttribute("id",d))}n=n.nextSibling}}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultPopupMenu);return e.encode=function(e,n){return null},e.decode=function(e,n,t){var a=n.getElementsByTagName("include")[0];return null!=a?this.processInclude(e,a,t):null!=t&&(t.config=n),t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxEditor,"modified lastSnapshot ignoredChanges undoManager graphContainer toolbarContainer".split(" "));return e.afterDecode=function(e,n,t){return null!=(e=n.getAttribute("defaultEdge"))&&(n.removeAttribute("defaultEdge"),t.defaultEdge=t.templates[e]),null!=(e=n.getAttribute("defaultGroup"))&&(n.removeAttribute("defaultGroup"),t.defaultGroup=t.templates[e]),t},e.decodeChild=function(e,n,t){if("Array"==n.nodeName){if("templates"==n.getAttribute("as"))return void this.decodeTemplates(e,n,t)}else if("ui"==n.nodeName)return void this.decodeUi(e,n,t);mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeUi=function(e,n,t){for(e=n.firstChild;null!=e;){if("add"==e.nodeName){n=e.getAttribute("as");var a=e.getAttribute("element"),i=e.getAttribute("style"),s=null;if(null!=a)null!=(s=document.getElementById(a))&&null!=i&&(s.style.cssText+=";"+i);else{a=parseInt(e.getAttribute("x"));var o=parseInt(e.getAttribute("y")),r=e.getAttribute("width"),l=e.getAttribute("height");(s=document.createElement("div")).style.cssText=i,new mxWindow(mxResources.get(n)||n,s,a,o,r,l,!1,!0).setVisible(!0)}"graph"==n?t.setGraphContainer(s):"toolbar"==n?t.setToolbarContainer(s):"title"==n?t.setTitleContainer(s):"status"==n?t.setStatusContainer(s):"map"==n&&t.setMapContainer(s)}else"resource"==e.nodeName?mxResources.add(e.getAttribute("basename")):"stylesheet"==e.nodeName&&mxClient.link("stylesheet",e.getAttribute("name"));e=e.nextSibling}},e.decodeTemplates=function(e,n,t){null==t.templates&&(t.templates=[]),n=mxUtils.getChildNodes(n);for(var a=0;a<n.length;a++){for(var i=n[a].getAttribute("as"),s=n[a].firstChild;null!=s&&1!=s.nodeType;)s=s.nextSibling;null!=s&&(t.templates[i]=e.decodeCell(s))}},e}()),EditorUi=function(e,n,t){this.projectDesignController=e,this.editor=n||new Editor,this.container=t||document.body;var a=n.graph,i=this;CRUD_PERMISSIONS=this.projectDesignController.crudPermissions;var s=mxUtils.bind(this,function(e){return null==e&&(e=window.event),!!this.isEditingEnabled()&&a.isEditing()});this.container.style.overflow="hidden",(new Image).src=mxPopupMenu.prototype.submenuImage,null!=mxConnectionHandler.prototype.connectImage&&((new Image).src=mxConnectionHandler.prototype.connectImage.src),this.actions=new Actions(this),this.menus=new Menus(this),this.createDivs(),this.refresh(),this.createUi(),this.container==document.body&&(this.menubarContainer.onselectstart=s,this.menubarContainer.onmousedown=s,this.toolbarContainer.onselectstart=s,this.toolbarContainer.onmousedown=s,this.diagramContainer.onselectstart=s,this.diagramContainer.onmousedown=s,this.sidebarContainer.onselectstart=s,this.sidebarContainer.onmousedown=s,this.footerContainer.onselectstart=s,this.footerContainer.onmousedown=s),mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?(mxEvent.addListener(this.diagramContainer,"contextmenu",s),mxEvent.addListener(this.sidebarContainer,"contextmenu",s)):(this.diagramContainer.oncontextmenu=s,this.sidebarContainer.oncontextmenu=s),a.init(this.diagramContainer),a.refresh(),a.setEnabled(this.isEditingEnabled()),a.container.setAttribute("tabindex","0"),a.container.style.cursor="default",a.container.style.backgroundImage="url("+n.gridImage+")",a.container.style.backgroundPosition="-1px -1px",a.container.focus();var o=a.fireMouseEvent;a.fireMouseEvent=function(e,n,t){e==mxEvent.MOUSE_DOWN&&this.container.focus(),o.apply(this,arguments)},this.createMultiplicities(a.multiplicities,["start","finally","end"],[[1,1],[1,1],[0,0]],[[0,0],[0,0],[1,"n"]]),this.createMultiplicities(a.multiplicities,["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[[1,1],[0,0],[0,1],[0,1],[0,1],[1,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["login","pause","unpause","logout"],[[1,2],[1,2],[1,2],[1,2]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["set","math"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["background","playback","menu","saydigits","saynumber","sayphonetic","google_cloud_tts","tts","ispeechtts","awspolly","getdigits","getsecretdigits","lumenvoxtts","sestektts","mrcpsynth"],[[1,"n"],[1,1],[1,"n"],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,"n"],[1,"n"],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["record"],[[1,1]],[[1,"n"]]),this.createMultiplicities(a.multiplicities,["database","ispeechasr","sendSMS","sendMail","sendFax","googleasr","lumenvoxasr","tildeasr","dialogflow","dialogflowV2","awslex","sesteknda","sestekasr","restapi","mrcprecog"],[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["gotoc","gotoif","gotoiftime","vswitch"],[[0,0],[1,2],[1,2],[1,"n"]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["queuelog","goal"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["noop","system","agi","subproject","custom_app"],[[1,1],[1,1],[0,1],[0,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),a.dblClick=function(e,t){var n=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",t);this.fireEvent(n),mxEvent.isConsumed(e)||n.isConsumed()||(this.getModel().isEdge(t)?0<=["background","gotoif","gotoiftime","menu","getdigits","getsecretdigits","vswitch","login","pause","unpause","logout"].indexOf(t.source.value.tagName)&&this.startEditingAtCell(t):this.getModel().isVertex(t)&&i.projectDesignController.openDialog(t.getValue(),function(e){for(var n=0;n<e.length;n+=1)t.setAttribute(e[n].name,e[n].value);a.refresh(t)}),n.consume())},a.panningHandler.autoExpand=!0,a.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){this.isEditingEnabled()&&this.menus.createPopupMenu(e,n,t)}),n.outline.init(this.outlineContainer),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){a.panningHandler.hideMenu()})),mxClient.IS_TOUCH&&(mxEvent.addListener(a.container,"gesturechange",mxUtils.bind(this,function(e){a.view.getDrawPane().setAttribute("transform","scale("+e.scale+")"),a.view.getOverlayPane().style.visibility="hidden"})),mxEvent.addListener(a.container,"gestureend",mxUtils.bind(this,function(e){a.view.getDrawPane().removeAttribute("transform"),a.zoomToCenter=!0,a.zoom(e.scale),a.view.getOverlayPane().style.visibility="visible"})));var r=this.isEditingEnabled()?this.createKeyHandler(n):null;this.getKeyHandler=function(){return r},mxEvent.addListener(window,"resize",mxUtils.bind(this,function(){this.refresh(),a.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.init(),this.open(),this.refresh()},EditorUi.prototype.splitSize=mxClient.IS_TOUCH?16:8,EditorUi.prototype.menubarHeight=33,EditorUi.prototype.toolbarHeight=36,EditorUi.prototype.footerHeight=0,EditorUi.prototype.hsplitPosition=204,EditorUi.prototype.vsplitPosition=190,EditorUi.prototype.init=function(){this.addUndoListener(),this.addSelectionListener();var e=this.actions.get("paste"),n=function(){e.setEnabled(!mxClipboard.isEmpty())},t=mxClipboard.cut;mxClipboard.cut=function(){t.apply(this,arguments),n()};var a=mxClipboard.copy;mxClipboard.copy=function(){a.apply(this,arguments),n()}},EditorUi.prototype.isEditingEnabled=function(){return!!CRUD_PERMISSIONS.canEdit},EditorUi.prototype.exportXML=function(e){var n=window.document.createElement("a");n.href="data:attachment/text;charset=utf-8,"+encodeURIComponent(e),n.download=this.editor.filename+".xml",n.target="_self",n.click()},EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(e,n){try{var t=mxUtils.parseXml(e);this.editor.setGraphXml(t.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(e){}},EditorUi.prototype.openString=function(e,n,t){try{var a=mxUtils.parseXml(e);this.editor.setGraphXml(a.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n),null!=t&&(this.editor.data=t)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}},EditorUi.prototype.validate=function(e,n){for(var t=this.editor.graph,a=(e=null!=e?e:t.model.getRoot(),n=null!=n?n:{},!0),i=t.model.getChildCount(e),s=0;s<i;s++){var o=t.model.getChildAt(e,s),r=n;t.isValidRoot(o)&&(r={}),null!=(r=this.validate(o,r))?t.setCellWarning(o,r.replace(/\n/g,"<br>")):t.setCellWarning(o,null),a=a&&null==r}if(i="",t.model.isVertex(e))switch(e.value.nodeName){case"start":i=this.validateBlock("start")?"":"Only one Start block is allowed\n";break;case"finally":i=this.validateBlock("finally")?"":"Only one Finally block is allowed\n";break;case"playback":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n";break;case"answer":i=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"menu":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("digit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("response")?"":mxResources.get("invalidTimeout")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getsecretdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("hiddendigitsnum")?"":mxResources.get("wrongHiddenDigitsnum")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"vswitch":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"database":i=0<e.value.getAttribute("odbc_id")?"":mxResources.get("noDatabaseSelected")+"\n",i+=""!==e.value.getAttribute("query")?"":mxResources.get("missingQuery")+"\n";break;case"set":case"math":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"gotoc":i=""!==e.value.getAttribute("context")?"":mxResources.get("noContextSelected")+"\n",i+=""!==e.value.getAttribute("extension")?"":mxResources.get("noExtensionSelected")+"\n",i+=1<=e.value.getAttribute("priority")?"":mxResources.get("invalidPriority")+"\n";break;case"system":case"agi":i=""!==e.value.getAttribute("command")?"":mxResources.get("noCommandSelected")+"\n";break;case"gotoif":i=""!==e.value.getAttribute("condition")?"":mxResources.get("noConditionSelected")+"\n";break;case"saydigits":i=""!==e.value.getAttribute("digits")?"":mxResources.get("noDigitsSelected")+"\n";break;case"saynumber":i=""!==e.value.getAttribute("number")?"":mxResources.get("noNumberSelected")+"\n";break;case"sayphonetic":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"record":i=""!==e.value.getAttribute("file")?"":mxResources.get("noFileSelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"goal":i=""!==e.value.getAttribute("goalname")?"":mxResources.get("noGoalSelected")+"\n";break;case"ext_dial":i="-1"!==e.value.getAttribute("trunk_name")?"":mxResources.get("noTrunkSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"dial":i=0<e.value.getAttribute("sip_id")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"queue":i="-1"!==e.value.getAttribute("queue_id")?"":mxResources.get("noQueueSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"callback":i="-1"!==e.value.getAttribute("list_id")?"":mxResources.get("noListSelected")+"\n",i+=""!==e.value.getAttribute("name")?"":mxResources.get("noFirstNameSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noPhoneSelected")+"\n",i+=""!==e.value.getAttribute("delay")?"":mxResources.get("invalidDelay")+"\n";break;case"gotoiftime":i=0<e.value.getAttribute("interval_id")?"":mxResources.get("noIntervalSelected")+"\n";break;case"voicemail":i=""!==e.value.getAttribute("mailbox")?"":mxResources.get("noBoxNumberSelected")+"\n";break;case"subproject":i=0<e.value.getAttribute("project_id")?"":mxResources.get("noProjectSelected")+"\n";break;case"sendSMS":i=0<e.value.getAttribute("sms_account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("sms_text")?"":mxResources.get("noTextSelected")+"\n";break;case"sendMail":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n";break;case"sendFax":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("attachment_path")?"":mxResources.get("noAttachmentSelected")+"\n";break;case"google_cloud_tts":i=""!==e.value.getAttribute("apiKey")?"":mxResources.get("noApiKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"tts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"awspolly":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"awslex":i=""!==e.value.getAttribute("aws_bot_name")?"":mxResources.get("noNameSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"ispeechtts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-10<=e.value.getAttribute("speed")&&e.value.getAttribute("speed")<=10?"":mxResources.get("invalidSpeed")+"\n";break;case"lumenvoxtts":case"sestektts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"lumenvoxasr":case"sestekasr":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"ispeechasr":case"googleasr":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"tildeasr":i=""!==e.value.getAttribute("appid")?"":mxResources.get("noAppIdInserted")+"\n",i+=""!==e.value.getAttribute("appsecret")?"":mxResources.get("noAppSecretInserted")+"\n",i+=""!==e.value.getAttribute("uri")?"":mxResources.get("noUrlInserted")+"\n";break;case"custom_app":i=""!==e.value.getAttribute("application")?"":mxResources.get("noApplicationSelected")+"\n";break;case"login":case"pause":case"unpause":case"logout":i=""!==e.value.getAttribute("findBy")?"":mxResources.get("noFindBySelected")+"\n";break;case"sesteknda":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("ndauth_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("ndassistant_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("username")?"":mxResources.get("noUsernameSelected")+"\n",i+=""!==e.value.getAttribute("password")?"":mxResources.get("noPasswordSelected")+"\n";break;case"restapi":i=""!==e.value.getAttribute("url")?"":mxResources.get("noUrlSelected")+"\n",i+=""!==e.value.getAttribute("method")?"":mxResources.get("noMethodSelected")+"\n";case"mrcpsynth":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"mrcprecog":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"dialogflow":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("dialogflow_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n";break;case"dialogflowV2":i=""!==e.value.getAttribute("dialogflowV2_project_id")?"":mxResources.get("noDialogflowProjectSelected")+"\n",i+=""!==e.value.getAttribute("client_email")?"":mxResources.get("noClientEmailSelected")+"\n",i+=""!==e.value.getAttribute("private_key")?"":mxResources.get("noPrivateKeySelected")+"\n",i+=""!==e.value.getAttribute("dialogflowV2_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n"}if(t.model.isEdge(e))switch(t.model.getCell(e.source.getId()).value.nodeName){case"background":case"menu":if(void 0!==e.getValue()){var l=/^[0-9]+$|^[-]{1}$|^[i]{1}$|^[t]{1}$|^[*]{1}$|^[#]{1}$/;String(e.getValue()).split(",").forEach(function(e){i+=l.test(e)?"":mxResources.get("numberOrAll")+"\n"})}else i=i+mxResources.get("numberOrAll")+"\n";break;case"getsecretdigits":case"getdigits":if(void 0!==e.getValue())i+=(l=/^(x|i|-)$/).test(String(e.getValue()))?"":mxResources.get("numberOrInvalidOrDefault")+"\n";else i=i+mxResources.get("numberOrInvalidOrDefault")+"\n";break;case"gotoif":case"gotoiftime":if(void 0!==e.getValue())i+=(l=/^(true){1}$|^(false){1}$/).test(String(e.getValue()))?"":mxResources.get("trueOrFalse")+"\n";else i=i+mxResources.get("trueOrFalse")+"\n";break;case"login":case"pause":case"unpause":case"logout":if(void 0!==e.getValue())i+=(l=/^(success){1}$|^(failure){1}$/).test(String(e.getValue()))?"":mxResources.get("successOrFailure")+"\n";else i=i+mxResources.get("successOrFailure")+"\n"}return t.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(t.containsValidationErrorsResource)||t.containsValidationErrorsResource)+"\n"),i=t.model.isEdge(e)?i+(t.getEdgeValidationError(e,t.model.getTerminal(e,!0),t.model.getTerminal(e,!1))||""):i+(t.getCellValidationError(e)||""),null!=(s=t.validateCell(e,n))&&(i+=s),null==t.model.getParent(e)&&t.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(n){var t=this.editor.graph,e=t.getDefaultParent(),a=0;return e.children.forEach(function(e){t.model.isVertex(e)&&e.value.nodeName==n&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var n=null!=e?e:window.location.pathname,t=0<n.indexOf("?")?1:0;for(var a in urlParams)n+=0==t?"?":"&",n+=a+"="+urlParams[a],t++;return n},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),n=this.actions.get("redo"),t=this.editor.undoManager,a=function(){e.setEnabled(t.canUndo()),n.setEnabled(t.canRedo())};t.addListener(mxEvent.ADD,a),t.addListener(mxEvent.UNDO,a),t.addListener(mxEvent.REDO,a),t.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,n=!e.isSelectionEmpty(),t=!1,a=!1,i=e.getSelectionCells();if(null!=i)for(var s=0;s<i.length;s++){var o=i[s];if(e.getModel().isEdge(o)&&(a=!0),e.getModel().isVertex(o)&&(t=!0),a&&t)break}var r=["cut","copy","delete","duplicate","bold","italic","style","underline","toFront","toBack","dashed","rounded","shadow","tilt","autosize"];for(s=0;s<r.length;s++)this.actions.get(r[s]).setEnabled(n);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(t),this.actions.get("wordWrap").setEnabled(t),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=t&&1==e.getSelectionCount();this.actions.get("removeFromGroup").setEnabled(l&&e.getModel().isVertex(e.getModel().getParent(e.getSelectionCell())));var d=["fontFamily","fontSize","alignment","position","text","format","arrange","linewidth","spacing"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(n);d=["line","lineend","linestart"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(a);this.actions.get("setAsDefaultEdge").setEnabled(a),this.menus.get("align").setEnabled(1<e.getSelectionCount()),this.menus.get("direction").setEnabled(t||a&&e.isLoop(e.view.getState(e.getSelectionCell()))),this.menus.get("navigation").setEnabled(e.foldingEnabled&&(null!=e.view.currentRoot||1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell()))),this.actions.get("home").setEnabled(null!=e.view.currentRoot),this.actions.get("exitGroup").setEnabled(null!=e.view.currentRoot);var c=1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell());this.actions.get("enterGroup").setEnabled(c),this.actions.get("expand").setEnabled(c),this.actions.get("collapse").setEnabled(c),this.actions.get("editLink").setEnabled(1==e.getSelectionCount()),this.actions.get("openLink").setEnabled(1==e.getSelectionCount()&&null!=e.getLinkForCell(e.getSelectionCell()))});this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},EditorUi.prototype.refresh=function(){var e=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),n=this.container.clientWidth+390,t=this.container.clientHeight+190;this.container==document.body&&(n=document.body.clientWidth||document.documentElement.clientWidth,t=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,n-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,t-this.menubarHeight-this.toolbarHeight-this.splitSize-1));this.menubarContainer.style.height=this.menubarHeight+"px",this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px";var s=this.menubarHeight+this.toolbarHeight;if(mxClient.IS_QUIRKS||(s+=1),this.sidebarContainer.style.top=s+"px",this.sidebarContainer.style.width=a+"px",this.outlineContainer.style.width=a+"px",this.outlineContainer.style.height=i+"px",this.diagramContainer.style.left=this.isEditingEnabled()?a+this.splitSize+"px":"0px",this.diagramContainer.style.top=this.sidebarContainer.style.top,this.hsplit.style.top=this.sidebarContainer.style.top,this.hsplit.style.bottom=this.outlineContainer.style.bottom,this.hsplit.style.left=a+"px",this.vsplit.style.width=this.sidebarContainer.style.width,this.vsplit.style.bottom=i+this.footerHeight+"px",e){this.menubarContainer.style.width=n+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=t-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=n-a-this.splitSize+"px";var r=t-this.menubarHeight-this.toolbarHeight;this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"}else this.sidebarContainer.style.bottom=i+this.splitSize+"px",this.diagramContainer.style.bottom=this.outlineContainer.style.bottom},EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer"),this.toolbarContainer=this.createDiv("geToolbarContainer"),this.sidebarContainer=this.createDiv("geSidebarContainer"),this.outlineContainer=this.createDiv("geOutlineContainer"),this.diagramContainer=this.createDiv("geDiagramContainer"),this.footerContainer=this.createDiv("geFooterContainer"),this.hsplit=this.createDiv("geHsplit"),this.vsplit=this.createDiv("geVsplit"),this.menubarContainer.style.top="0px",this.menubarContainer.style.left="0px",this.menubarContainer.style.right="0px",this.toolbarContainer.style.left="0px",this.toolbarContainer.style.right="0px",this.sidebarContainer.style.left="0px",this.outlineContainer.style.bottom="0px",this.outlineContainer.style.left="0px",this.diagramContainer.style.overflow="scroll",this.diagramContainer.style.right="0px",this.footerContainer.style.left="0px",this.footerContainer.style.right="0px",this.footerContainer.style.bottom="0px",this.vsplit.style.left="0px",this.vsplit.style.height=this.splitSize+"px",this.hsplit.style.width=this.splitSize+"px"},EditorUi.prototype.createUi=function(){this.menubar=this.menus.createMenubar(this.createDiv("geMenubar")),this.menubarContainer.appendChild(this.menubar.container),this.toolbar=this.createToolbar(this.createDiv("geToolbar")),this.toolbarContainer.appendChild(this.toolbar.container),this.sidebar=this.createSidebar(this.sidebarContainer),this.footerContainer.appendChild(this.createFooter()),this.statusContainer=this.createStatusContainer(),this.editor.addListener("statusChanged",mxUtils.bind(this,function(){this.setStatusText(this.editor.getStatus())})),this.setStatusText(this.editor.getStatus()),this.menubar.container.appendChild(this.statusContainer),this.isEditingEnabled()&&(this.container.appendChild(this.sidebarContainer),this.container.appendChild(this.hsplit),this.container.appendChild(this.vsplit)),this.container.appendChild(this.diagramContainer),this.container.appendChild(this.menubarContainer),this.container.appendChild(this.toolbarContainer),this.container.appendChild(this.outlineContainer),this.container.appendChild(this.footerContainer),this.addSplitHandler(this.hsplit,!0,0,mxUtils.bind(this,function(e){this.hsplitPosition=e,this.refresh(),this.editor.graph.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.addSplitHandler(this.vsplit,!1,this.footerHeight,mxUtils.bind(this,function(e){this.vsplitPosition=e,this.refresh(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()}))},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.setStatusText=function(e){this.statusContainer.innerHTML=e},EditorUi.prototype.createToolbar=function(e){return new Toolbar(this,e)},EditorUi.prototype.createSidebar=function(e){return new Sidebar(this,e)},EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")},EditorUi.prototype.createDiv=function(e){var n=document.createElement("div");return n.className=e,n},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var n=document.createElement("form");return n.className=e,n},EditorUi.prototype.addSplitHandler=function(n,t,a,i){var s=null,o=null;function r(e){if(null!=s){var n=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(t?n.x-s.x:s.y-n.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(n,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(t?n.style.left:n.style.bottom),mxEvent.consume(e)}),mxEvent.addListener(document,"mousemove",r),mxEvent.addListener(document,"touchmove",r),mxEvent.addListener(document,"mouseup",e),mxEvent.addListener(document,"touchend",e)},EditorUi.prototype.executeLayout=function(e,n,t){var a=this.editor.graph,i=a.getSelectionCell();n=null!=this.animate?this.animate:n,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(n&&navigator.userAgent.indexOf("Camino")<0){var s=new mxMorphing(a);s.addListener(mxEvent.DONE,mxUtils.bind(this,function(){a.getModel().endUpdate()})),s.startAnimation()}else a.getModel().endUpdate()}},EditorUi.prototype.createKeyHandler=function(e){var a=this.editor.graph,o=new mxKeyHandler(a);function n(e){if(!a.isSelectionEmpty()){var n=0,t=0;37==e?n=-1:38==e?t=-1:39==e?n=1:40==e&&(t=1),a.moveCells(a.getSelectionCells(),n,t),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var t=mxUtils.bind(this,function(e,n,t,a){var i=this.actions.get(t);if(null!=i){var s=function(){i.enabled&&i.funct()};n?a?o.bindControlShiftKey(e,s):o.bindControlKey(e,s):a?o.bindShiftKey(e,s):o.bindKey(e,s)}});return o.enter=function(){},o.bindKey(8,function(){a.foldCells(!0)}),o.bindKey(13,function(){a.foldCells(!1)}),o.bindKey(33,function(){a.exitGroup()}),o.bindKey(34,function(){a.enterGroup()}),o.bindKey(36,function(){a.home()}),o.bindKey(35,function(){a.refresh()}),o.bindKey(37,function(){n(37)}),o.bindKey(38,function(){n(38)}),o.bindKey(39,function(){n(39)}),o.bindKey(40,function(){n(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),t(46,!1,"delete"),t(82,!0,"tilt"),t(83,!0,"save"),t(83,!0,"saveAs",!0),t(107,!1,"zoomIn"),t(109,!1,"zoomOut"),t(65,!0,"selectAll"),t(86,!0,"selectVertices",!0),t(69,!0,"selectEdges",!0),t(69,!0,"export"),t(66,!0,"toBack"),t(70,!0,"toFront"),t(68,!0,"duplicate"),t(90,!0,"undo"),t(89,!0,"redo"),t(88,!0,"cut"),t(67,!0,"copy"),t(81,!0,"connect"),t(86,!0,"paste"),t(71,!0,"group"),t(71,!0,"grid",!0),t(85,!0,"ungroup"),t(112,!1,"about"),t(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,n,t,a){for(var i=0;i<n.length;i++)e.push(new mxMultiplicity(!0,n[i],null,null,t[i][0],t[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+t[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,n[i],null,null,a[i][0],a[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+a[i][0]+mxResources.get("incomingedge"),null))};var useLocalStorage=(mxClient.IS_TOUCH||"local"==urlParams.storage)&&"undefined"!=typeof localStorage,fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList,touchStyle=mxClient.IS_TOUCH||"1"==urlParams.touch,counter=0;try{for(var op=window;null!=op.opener&&!isNaN(op.opener.counter);)op=op.opener;null!=op&&(op.counter++,counter=op.counter)}catch(e){}function Sidebar(e,n){this.editorUi=e,this.container=n,this.palettes=new Object,this.taglist=new Object,this.showTooltips=!0,this.graph=new Graph(document.createElement("div"),null,null,this.editorUi.editor.graph.getStylesheet()),this.graph.resetViewOnRootChange=!1,this.graph.foldingEnabled=!1,this.graph.setConnectable(!1),this.graph.autoScroll=!1,this.graph.setTooltips(!1),this.graph.setEnabled(!1),this.graph.container.style.visibility="hidden",this.graph.container.style.position="absolute",this.graph.container.style.overflow="hidden",this.graph.container.style.height="1px",this.graph.container.style.width="1px",mxClient.IS_IE||mxClient.IS_IE11||(this.graph.container.style.display="none"),document.body.appendChild(this.graph.container),this.pointerUpHandler=mxUtils.bind(this,function(){this.showTooltips=!0}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerDownHandler=mxUtils.bind(this,function(){this.showTooltips=!1,this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),this.pointerMoveHandler=mxUtils.bind(this,function(e){for(var n=mxEvent.getSource(e);null!=n;){if(n==this.currentElt)return;n=n.parentNode}this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerOutHandler=mxUtils.bind(this,function(e){null==e.toElement&&null==e.relatedTarget&&this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),mxEvent.addListener(n,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0})),this.init(),mxClient.IS_SVG||((new Image).src=IMAGE_PATH+"/tooltip.png")}function Actions(e){this.editorUi=e,this.actions=new Object,this.init()}function Action(e,n,t,a,i){mxEventSource.call(this),this.label=e,this.funct=n,this.enabled=null==t||t,this.iconCls=a,this.shortcut=i}function Menubar(e,n){this.editorUi=e,this.container=n,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,n){mxEventSource.call(this),this.funct=e,this.enabled=null==n||n}function Toolbar(e,n){this.editorUi=e,this.container=n,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var n=document.createElement("input");return n.setAttribute("type","checkbox"),e&&n.setAttribute("checked",!0),n}function createDropdownFromApi(e,t,a,i,n,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+n.editor.data.token),l.send(null);var d=[];200===l.status&&(d=JSON.parse(l.response));var c=document.createElement("select"),m=document.createElement("option");return m.text="-- None --",m.value="-1",c.appendChild(m),d.rows.forEach(function(n){r&&n[a]==r||((m=document.createElement("option")).text=n[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",n[e])}),m.selected=m.value==t):(m.value=n[i],m.selected=n[i]==t),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");d.text="-- None --",d.value="-1",l.appendChild(d);var c=_.groupBy(r.rows,s);for(var m in c)if(c.hasOwnProperty(m)){var u=document.createElement("optgroup");u.label=_.capitalize(m),c[m].forEach(function(e){(d=document.createElement("option")).text=e[t],d.value=e[a],d.selected=e[a]==n,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");return d.text="-- None --",d.value="0",l.appendChild(d),r.rows.forEach(function(e){(d=document.createElement("option")).className="select-group-father",d.text=e[t].toUpperCase(),d.value=e[a],d.selected=e[a]==n,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[t]),d.value=e[a],d.selected=e[a]==n,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,n){var t=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<n||""!=n)&&(i.selected=n===a),t.appendChild(i)}return t.className="form-control select2",t}function createDropdownFromTigerDialList(e){var n=document.createElement("select"),t=[],a=new XMLHttpRequest;try{if(a.open("POST","/api/rest/list/list",!1),a.send(JSON.stringify({page:1,size:6e5})),200===a.status){var i=JSON.parse(a.response);if(0<i.status){var s=i.response.RMI.rows;for(var o in s)t[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in t){var l=document.createElement("option");l.text=t[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),n.appendChild(l)}return n.className="form-control select2",n}function Dialog(e,n,t,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),t+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-t)/2)),Math.max(0,Math.round((Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-a)/3));var l=e.createDiv("geDialog");l.className="modal fade in center",l.style.display="block",l.style.paddingRight="12px";var d=e.createDiv("geModalDialog");d.className="modal-dialog",d.appendChild(n),l.appendChild(d),null==this.bg&&(this.bg=e.createDiv("background"),this.bg.className="modal-backdrop fade in",mxClient.IS_QUIRKS&&new mxDivResizer(this.bg)),i&&document.body.appendChild(this.bg),document.body.appendChild(l),this.onDialogClose=o,this.container=l}function ImportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("import")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-12"),d=document.createElement("textarea");d.style.width="100%",d.style.height="374px";var c=document.createElement("input");c.type="file",c.setAttribute("accept","text/xml"),c.addEventListener("change",function(e){var n=e.target.files[0];if(console.log(n),n)if("text/xml"===n.type){var t=new FileReader;t.onload=function(e){var n=e.target.result;mxUtils.write(d,n)},t.readAsText(n)}else alert("Failed to load format file");else alert("Failed to load file")},!1),l.appendChild(c),l.appendChild(d),r.appendChild(l),a.appendChild(r);var m=mxUtils.button(mxResources.get("import"),mxUtils.bind(this,function(e){var n=mxUtils.parseXml(d.value);t.editor.setGraphXml(n.documentElement),t.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("about")+" Cally Square");var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=document.createElement("img");r.style.border="0px",r.setAttribute("width","176"),r.setAttribute("width","151"),r.setAttribute("src",IMAGE_PATH+"/logo.png"),a.appendChild(r),mxUtils.br(a),mxUtils.write(a,"Powered by Xenialab "+mxClient.VERSION),mxUtils.br(a);var l=document.createElement("a");l.setAttribute("href","http://www.callysquare.com/"),l.setAttribute("target","_blank"),mxUtils.write(l,"www.callysquare.com"),a.appendChild(l),mxUtils.br(a),mxUtils.br(a);var d=mxUtils.button(mxResources.get("close"),function(){e.hideDialog()});d.className="btn default",i.appendChild(d),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function SaveDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("saveAs"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_copy"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("save"),function(){e.saveAs(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function NewDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("new"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_new"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("new"),function(){e.new(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function DescriptionDialog(e){console.log(e.editor.data);var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("description"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="description",d=e.editor.data.description||"",c=e.createDiv("form-group"),m=document.createElement("label");m.className="col-sm-4 control-label",mxUtils.write(m,mxResources.get(l)),c.appendChild(m);var u=document.createElement("input");u.setAttribute("value",d),u.className="form-control",u.setAttribute("id","_description");var p=e.createDiv("col-sm-8");p.appendChild(u),c.appendChild(p),r.appendChild(c),a.appendChild(r);var g=mxUtils.button(mxResources.get("update"),function(){e.description(u.value),e.hideDialog()});g.className="btn blue";var v=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});v.className="btn default",i.appendChild(g),i.appendChild(v),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function VariableDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("variable"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="name",d="_"+l,c="variable name",m=e.createDiv("form-group"),u=document.createElement("label");u.className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var p=document.createElement("input");p.setAttribute("value",c),p.className="form-control",p.setAttribute("id",d);var g=e.createDiv("col-sm-8");g.appendChild(p),m.appendChild(g),r.appendChild(m),d="_"+(l="description"),c="variable description",m=e.createDiv("form-group last"),(u=document.createElement("label")).className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var v=document.createElement("input");v.setAttribute("value",c),v.className="form-control",v.setAttribute("id",d),(g=e.createDiv("col-sm-8")).appendChild(v),m.appendChild(g),r.appendChild(m),a.appendChild(r);var h=mxUtils.button(mxResources.get("new"),function(){e.variable(p.value,v.value),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function OpenDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("open"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("row"),l=e.createDiv("col-md-4"),d=e.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=new XMLHttpRequest;m.open("GET","/api/square/projects",!1),m.setRequestHeader("Authorization","Bearer "+e.editor.data.token),m.send(null);var u=[];200===m.status&&(u=JSON.parse(m.response));for(var p=document.createElement("select"),g=0;g<u.length;g++){var v=document.createElement("option");v.text=u[g].name,v.value=u[g].id,p.appendChild(v)}p.className="form-control",d.appendChild(p),r.appendChild(l),r.appendChild(d),a.appendChild(r);var h=mxUtils.button(mxResources.get("open"),function(){console.log(p),console.log(p.value),window.open("square/project/"+p.value,"_blank"),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function RenameDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("rename"));var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-4"),d=t.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=t.editor.filename,u=document.createElement("input");u.setAttribute("value",m),u.className="form-control",d.appendChild(u),r.appendChild(l),r.appendChild(d),a.appendChild(r);var p=mxUtils.button(mxResources.get("save"),function(){var n=new XMLHttpRequest;n.open("PUT",SAVE_URL+t.editor.data.id,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.setRequestHeader("Authorization","Bearer "+t.editor.data.token),n.send("name="+u.value),n.onload=function(e){200===n.status?(t.editor.setStatus("Project successfully renamed"),t.editor.filename=u.value):(console.log(n.response),t.editor.setStatus(JSON.parse(n.response).errors[0].message))},n.onerror=function(e){mxUtils.alert(n.statusText)},t.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("edit"));var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("row"),l=n.createDiv("col-md-12"),d=document.createElement("textarea");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(n.editor.getGraphXml()),fileSupport){d.addEventListener("dragover",function(e){e.stopPropagation(),e.preventDefault()},!1),d.addEventListener("drop",function(e){if(e.stopPropagation(),e.preventDefault(),0<e.dataTransfer.files.length){var n=e.dataTransfer.files[0],t=new FileReader;t.onload=function(e){d.value=e.target.result},t.readAsText(n)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);n.editor.setGraphXml(e.documentElement),n.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body form"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("form-horizontal form-row-seperated"),l=n.createDiv("form-group last"),d=document.createElement("label");d.className="col-sm-4 control-label",mxUtils.write(d,mxResources.get("filename"));var c=document.createElement("input");c.setAttribute("value",n.editor.getOrCreateFilename()),c.className="form-control";var m=n.createDiv("col-sm-8");m.appendChild(c),l.appendChild(d),l.appendChild(m),r.appendChild(l),a.appendChild(r);var u=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(e){n.save(!1);encodeURIComponent(mxUtils.getXml(n.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+n.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),n.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function GeneralDialog(i,s){console.log("general");var o=i.editor.graph,e=i.createDiv("md-dialog"),n=i.createDiv("md-toolbar"),t=i.createDiv("md-dialog-content"),a=i.createDiv("md-dialog-actions"),r=i.createHeader("h4");mxUtils.write(r,mxResources.get("edit")+" "+mxResources.get(s.value.nodeName));var l=mxUtils.button("",function(){i.hideDialog()});l.className="close",n.appendChild(l),n.appendChild(r);for(var d=s.value.attributes.length,c=i.createDiv("form-horizontal form-row-seperated"),m=0;m<d;m++){var u,p=s.value.attributes[m].name,g="_"+p,v=s.value.attributes[m].value,h=i.createDiv(m==d-1?"form-group last":"form-group"),f=document.createElement("label");switch(f.className="col-sm-4 control-label",mxUtils.write(f,mxResources.get(p)),h.appendChild(f),p){case"sip_id":u=createDropdownWithOptgroupFromApi("/api/users/all",v,"fullname","id",i,"role");break;case"queue_id":u=createDropdownFromApi("/api/voice/queues",v,"name","name",i);break;case"trunk_name":u=createDropdownFromApi("/api/trunks",v,"name","name",i);break;case"variable_id":u=createDropdownFromApi("/api/variables",v,"name","id",i);break;case"account_id":u="sendMail"==s.value.nodeName?createDropdownFromApi("/api/mail/servers/out",v,"username","id",i):createDropdownFromApi("/api/sms/accounts",v,"name","id",i);break;case"template_id":u=createDropdownFromApi("/api/templates",v,"name","id",i);break;case"context":u=createDropdownFromApi("/api/voice/contexts",v,"name","name",i);break;case"mailbox":u=createDropdownFromApi("/api/voice/voicemails",v,"mailbox","id",i,["mailbox","context"],"%mailbox%@%context%");break;case"model":u=createDropdownFromArray(ISPEECHASRMODEL,v);break;case"ispeech_asr_language":u=createDropdownFromArray(ISPEECHASRLANG,v);break;case"beep":u=createDropdownFromArray(ISPEECHBEEP,v);break;case"hiddendigitspos":u=createDropdownFromArray(SECRETDIGITSPOS,v);break;case"ispeech_tts_language":u=createDropdownFromArray(ISPEECHLANG,v);break;case"google_tts_language":u=createDropdownFromArray(GOOGLETTSLANG,v);break;case"intKey":u=createDropdownFromArray(ASRINTKEYS,v);break;case"recordingFormat":u=createDropdownFromArray(RECORDINGFORMAT,v);break;case"answer":u=createDropdownFromArray(BOOLSELECT,v);break;case"list_id":u=createDropdownFromTigerDialList(v);break;case"interval_id":u=createGroupedDropdownFromApi("/api/intervals",v,"name","id",i,"SubIntervals");break;case"project_id":u=createDropdownFromApi("/api/square/projects",v,"name","id",i,null,null,i.editor.getOrCreateFilename());break;case"odbc_id":u=createDropdownFromApi("/api/square/odbc",v,"name","id",i);break;case"file_id":u=createDropdownFromApi("/api/sounds",v,"display_name","id",i);break;case"timeout":case"digit":case"mindigit":case"maxdigit":case"response":case"retry":case"speed":(u=document.createElement("input")).setAttribute("type","number"),u.setAttribute("min",0),u.setAttribute("max",1e3),u.setAttribute("value",v),u.className="form-control";break;case"text":case"key":case"query":case"condition":case"command":case"body":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control";break;case"sms_text":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control",u.setAttribute("maxlength","160");break;default:(u=document.createElement("input")).setAttribute("value",v),u.className="form-control"}u.setAttribute("id",g);var b=i.createDiv("col-sm-8");if(b.appendChild(u),mxResources.get("help_"+p)){var A=i.createDiv("p");A.className="help-block",mxUtils.write(A,mxResources.get("help_"+p)),b.appendChild(A)}h.appendChild(b),c.appendChild(h)}t.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var n=0;n<s.value.attributes.length;n++){var t="_"+s.value.attributes[n].name,a=s.value.attributes[n].name;s.setAttribute(a,document.getElementById(t).value)}o.refresh(s),i.hideDialog()}));E.className="btn blue";var y=mxUtils.button(mxResources.get("cancel"),function(){i.hideDialog()});y.className="btn default",a.appendChild(E),a.appendChild(y),e.appendChild(n),e.appendChild(t),e.appendChild(a),this.container=e}Editor=function(){mxEventSource.call(this),this.init(),this.initStencilRegistry(),this.graph=new Graph,this.outline=new mxOutline(this.graph),this.outline.updateOnPan=!0,this.undoManager=this.createUndoManager(),this.status="",this.filename=null,this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[counter])+".xml"},this.getFilename=function(){return this.filename},this.setStatus=function(e){this.status=e,this.fireEvent(new mxEventObject("statusChanged"))},this.getStatus=function(){return this.status},this.modified=!1,this.graphChangeListener=function(){this.modified=!0},this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)})),window.onbeforeunload=mxUtils.bind(this,function(){if(this.modified)return mxResources.get("allChangesLost")}),this.graph.resetViewOnRootChange=!1,this.graph.scrollbars=!0,this.graph.background=null},mxUtils.extend(Editor,mxEventSource),Editor.prototype.gridImage=IMAGE_PATH+"/grid.gif",Editor.prototype.transparentImage=IMAGE_PATH+"/transparent.gif",Editor.prototype.setGraphXml=function(e){var n=new mxCodec(e.ownerDocument);if("mxGraphModel"==e.nodeName){this.graph.view.scale=Number(e.getAttribute("scale")||1),this.graph.gridEnabled="0"!=e.getAttribute("grid"),this.graph.graphHandler.guidesEnabled="0"!=e.getAttribute("guides"),this.graph.setTooltips("0"!=e.getAttribute("tooltips")),this.graph.setConnectable("0"!=e.getAttribute("connect")),this.graph.foldingEnabled="0"!=e.getAttribute("fold"),this.graph.scrollbars="0"!=e.getAttribute("scrollbars"),this.graph.scrollbars||(this.graph.container.scrollLeft=0,this.graph.container.scrollTop=0,this.graph.view.translate.x=Number(e.getAttribute("dx")||0),this.graph.view.translate.y=Number(e.getAttribute("dy")||0)),this.graph.pageVisible="1"==e.getAttribute("page"),this.graph.pageBreaksVisible=this.graph.pageVisible,this.graph.preferPageSize=this.graph.pageBreaksVisible;var t=e.getAttribute("pageScale");this.graph.pageScale=null!=t?t:1.5;var a=e.getAttribute("pageWidth"),i=e.getAttribute("pageHeight");null!=a&&null!=i&&(this.graph.pageFormat=new mxRectangle(0,0,parseFloat(a),parseFloat(i)),this.outline.outline.pageFormat=this.graph.pageFormat);var s=e.getAttribute("background");null!=s&&0<s.length&&(this.graph.background=s),n.decode(e,this.graph.getModel()),this.updateGraphComponents()}},Editor.prototype.getGraphXml=function(){var e=new mxCodec(mxUtils.createXmlDocument()).encode(this.graph.getModel());return 0==this.graph.view.translate.x&&0==this.graph.view.translate.y||(e.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),e.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100)),1!=this.graph.view.scale&&e.setAttribute("scale",Math.round(1e3*this.graph.view.scale)/1e3),e.setAttribute("grid",this.graph.isGridEnabled()?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0"),e.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0"),e.setAttribute("fold",this.graph.foldingEnabled?"1":"0"),e.setAttribute("page",this.graph.pageVisible?"1":"0"),e.setAttribute("pageScale",this.graph.pageScale),e.setAttribute("pageWidth",this.graph.pageFormat.width),e.setAttribute("pageHeight",this.graph.pageFormat.height),this.graph.scrollbars||e.setAttribute("scrollbars","0"),null!=this.graph.background&&e.setAttribute("background",this.graph.background),e},Editor.prototype.updateGraphComponents=function(){var e=this.graph,n=this.outline;if(null!=e.container&&null!=n.outline.container){null!=e.background?"none"==e.background?e.container.style.backgroundColor="transparent":(null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.fill=e.background,e.view.backgroundPageShape.reconfigure()),e.container.style.backgroundColor=e.background):e.container.style.backgroundColor="",e.pageVisible?(e.container.style.backgroundColor="#ebebeb",e.container.style.borderStyle="solid",e.container.style.borderColor="#e5e5e5",e.container.style.borderTopWidth="1px",e.container.style.borderLeftWidth="1px",e.container.style.borderRightWidth="0px",e.container.style.borderBottomWidth="0px"):e.container.style.border="",n.outline.container.style.backgroundColor=e.container.style.backgroundColor,n.outline.pageVisible==e.pageVisible&&n.outline.pageScale==e.pageScale||(n.outline.pageScale=e.pageScale,n.outline.pageVisible=e.pageVisible,n.outline.view.validate()),e.scrollbars&&"hidden"==e.container.style.overflow&&!touchStyle?e.container.style.overflow="auto":e.scrollbars&&!touchStyle||(e.container.style.overflow="hidden");var t=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":t,null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+this.gridImage+")":"none")}},Editor.prototype.init=function(){mxClient.IS_IE6&&mxClient.link("stylesheet",CSS_PATH+"/grapheditor-ie6.css"),mxResources.loadDefaultBundle=!1,mxResources.add(RESOURCE_BASE),mxConstants.DEFAULT_HOTSPOT=.3;var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=e.apply(this,arguments);return t.intersects=mxUtils.bind(this,function(e,n){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(t,arguments)}),t},mxConstants.SHADOWCOLOR="#d0d0d0",mxConstants.HANDLE_FILLCOLOR="#99ccff",mxConstants.HANDLE_STROKECOLOR="#0088cf",mxConstants.VERTEX_SELECTION_COLOR="#00a8ff",mxConstants.OUTLINE_COLOR="#00a8ff",mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff",mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff",mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff",mxConstants.EDGE_SELECTION_COLOR="#00a8ff",mxConstants.DEFAULT_VALID_COLOR="#00a8ff",mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff",mxConstants.GUIDE_COLOR="#0088cf",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,mxRubberband.prototype.defaultOpacity=30,mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,this.graph.background||"white","#cacaca")},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.getGraphBounds(),n=0<e.width?e.x/this.scale-this.translate.x:0,t=0<e.height?e.y/this.scale-this.translate.y:0,a=e.width/this.scale,i=e.height/this.scale,s=this.graph.pageFormat,o=this.graph.pageScale,r=s.width*o,l=s.height*o,d=Math.floor(Math.min(0,n)/r),c=Math.floor(Math.min(0,t)/l),m=Math.ceil(Math.max(1,n+a)/r)-d,u=Math.ceil(Math.max(1,t+i)/l)-c;return new mxRectangle(this.scale*(this.translate.x+d*r),this.scale*(this.translate.y+c*l),this.scale*m*r,this.scale*u*l)};var t=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,n){t.apply(this,arguments),this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=e+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var a=this;mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);if(this.graph.pageVisible){n=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(this.graph.container),this.graph.container.firstChild.style.position="absolute",this.graph.container.insertBefore(this.backgroundPageShape.node,this.graph.container.firstChild),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",this.backgroundPageShape.node.style.backgroundPosition="-1px -1px",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw()),this.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+a.gridImage+")":"none"}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();n=r.width,t=r.height;var l=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o),d=(e=e&&Math.min(l.width,l.height)>this.minPageBreakDist)?Math.ceil(n/l.width)-1:0,c=e?Math.ceil(t/l.height)-1:0,m=r.x+n,u=r.y+t;if(null==this.horizontalPageBreaks&&0<d&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(var p=0;p<=d;p++){var g=[new mxPoint(r.x+(p+1)*l.width,r.y),new mxPoint(r.x+(p+1)*l.width,u)];if(null!=this.horizontalPageBreaks[p])this.horizontalPageBreaks[p].scale=1,this.horizontalPageBreaks[p].points=g,this.horizontalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,this.scale)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.horizontalPageBreaks[p]=v}for(p=d;p<this.horizontalPageBreaks.length;p++)this.horizontalPageBreaks[p].destroy();this.horizontalPageBreaks.splice(d,this.horizontalPageBreaks.length-d)}if(null==this.verticalPageBreaks&&0<c&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(p=0;p<=c;p++){var v;g=[new mxPoint(r.x,r.y+(p+1)*l.height),new mxPoint(m,r.y+(p+1)*l.height)];if(null!=this.verticalPageBreaks[p])this.verticalPageBreaks[p].scale=1,this.verticalPageBreaks[p].points=g,this.verticalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,a)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.verticalPageBreaks[p]=v}for(p=c;p<this.verticalPageBreaks.length;p++)this.verticalPageBreaks[p].destroy();this.verticalPageBreaks.splice(c,this.verticalPageBreaks.length-c)}},mxEdgeHandler.prototype.snapToTerminals=!0,mxGraphHandler.prototype.guidesEnabled=!0;var s=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){for(var a=0;a<n.length;a++)if(this.graph.getModel().isVertex(n[a])){var i=this.graph.getCellGeometry(n[a]);if(null!=i&&i.relative)return!1}return s.apply(this,arguments)},mxGuide.prototype.isEnabledForEvent=function(e){return!mxEvent.isAltDown(e)};var r=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){var o=r.apply(this,arguments);return null==s||s||mxEvent.addListener(o,"mousedown",function(e){mxEvent.consume(e)}),o};var o=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(e){var n=this.graph.getModel(),t=n.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=n.getParent(a);if(null==t||t!=a&&t!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&n.isVertex(i)&&!this.graph.isValidRoot(i);)a=i,i=this.graph.getModel().getParent(a);return a};var l=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(e){var n=l.apply(this,arguments),t=this.graph.getModel(),a=t.getParent(this.graph.getSelectionCell()),i=t.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!t.isVertex(i)||this.graph.isValidRoot(i)||(n=!0)),n},mxGraphHandler.prototype.selectDelayed=function(e){var n=e.getCell();null==n&&(n=this.cell);for(var t=this.graph.getModel(),a=t.getParent(n);this.graph.isCellSelected(n)&&t.isVertex(a)&&!this.graph.isValidRoot(a);)n=a,a=t.getParent(n);this.graph.selectCellForEvent(n,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var n=e.getCell(),t=this.graph.getModel(),a=t.getParent(n);t.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(n=a),a=t.getParent(a);return n}},Editor.prototype.createUndoManager=function(){var s=this.graph,t=new mxUndoManager,e=function(e,n){t.undoableEditHappened(n.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var n=function(e,n){for(var t=s.getSelectionCellsForChanges(n.getProperty("edit").changes),a=[],i=1;i<t.length;i++)null!=s.view.getState(t[i])&&a.push(t[i]);s.setSelectionCells(a)};return t.addListener(mxEvent.UNDO,n),t.addListener(mxEvent.REDO,n),t},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var n=mxStencilRegistry.stencils[e];if(null==n){var t=mxStencilRegistry.getBasenameForStencil(e);if(null!=t){var a=mxStencilRegistry.libraries[t];if(null!=a){if(null==mxStencilRegistry.packages[t]){mxStencilRegistry.packages[t]=1;for(var i=0;i<a.length;i++){var s=a[i];if(".xml"==s.toLowerCase().substring(s.length-4,s.length))mxStencilRegistry.loadStencilSet(s,null);else if(".js"==s.toLowerCase().substring(s.length-3,s.length)){var o=mxUtils.load(s);null!=o&&eval.call(window,o.getText())}}}}else mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+t+".xml",null);n=mxStencilRegistry.stencils[e]}}return n},mxStencilRegistry.getBasenameForStencil=function(e){var n=e.split("."),t=null;if(0<n.length&&"mxgraph"==n[0]){t=n[1];for(var a=2;a<n.length-1;a++)t+="/"+n[a]}return t},mxStencilRegistry.loadStencilSet=function(e,n,t){t=null!=t&&t;var a=mxStencilRegistry.packages[e];if(t||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,n,i)}},mxStencilRegistry.parseStencilSet=function(e,n,t){t=null==t||t;var a=e.documentElement,i=a.firstChild,s="",o=a.getAttribute("name");for(null!=o&&(s=o+".");null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=(o=i.getAttribute("name"))){s=s.toLowerCase();var r=o.replace(/ /g,"_");if(t&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=n){var l=i.getAttribute("w"),d=i.getAttribute("h");n(s,r,o,l=null==l?80:parseInt(l,10),d=null==d?80:parseInt(d,10))}}i=i.nextSibling}},OpenFile=function(e){this.producer=null,this.consumer=null,this.done=e},OpenFile.prototype.setConsumer=function(e){this.consumer=e,this.execute()},OpenFile.prototype.setData=function(e,n){this.data=e,this.filename=n,this.execute()},OpenFile.prototype.error=function(e){this.cancel(),mxUtils.alert(e)},OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.data&&(this.consumer(this.data,this.filename),this.cancel())},OpenFile.prototype.cancel=function(){null!=this.done&&this.done()},Sidebar.prototype.init=function(){var e=STENCIL_PATH;this.addSearchPalette(!0),this.addImagePalette("entry",mxResources.get("entry"),e+"/entry/","_128x128.png",["start","finally","end"],[mxResources.get("start"),mxResources.get("finally"),mxResources.get("end")]),this.addImagePalette("call_management",mxResources.get("call_management"),e+"/call_management/","_128x128.png",["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[mxResources.get("answer"),mxResources.get("hangup"),mxResources.get("dial"),mxResources.get("ext_dial"),mxResources.get("queue"),mxResources.get("voicemail"),mxResources.get("callback")]),this.addImagePalette("agent_management",mxResources.get("agent_management"),e+"/agent_management/","_128x128.png",["login","pause","unpause","logout"],[mxResources.get("login"),mxResources.get("pause"),mxResources.get("unpause"),mxResources.get("logout")]),this.addImagePalette("variable",mxResources.get("variable"),e+"/variable/","_128x128.png",["set","math"],[mxResources.get("set"),mxResources.get("math")]),this.addImagePalette("playback",mxResources.get("playback"),e+"/playback/","_128x128.png",["playback","menu","saydigits","saynumber","sayphonetic","getdigits","getsecretdigits"],[mxResources.get("playback"),mxResources.get("menu"),mxResources.get("saydigits"),mxResources.get("saynumber"),mxResources.get("sayphonetic"),mxResources.get("getdigits"),mxResources.get("getsecretdigits")]),this.addImagePalette("recording",mxResources.get("recording"),e+"/recording/","_128x128.png",["record"],[mxResources.get("record")]),this.addImagePalette("tts","TTS",e+"/tts/","_128x128.png",["google_cloud_tts","tts","ispeechtts","awspolly","lumenvoxtts","sestektts","mrcpsynth"],["Google Cloud TTS","GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS","MRCPSynth"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr","mrcprecog"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR","MRCPRecog"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","dialogflowV2","awslex","sesteknda","restapi"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","DialogflowV2","AWSLex","SestekNDA","RestAPI"]),this.addImagePalette("callflow",mxResources.get("callflow"),e+"/callflow/","_128x128.png",["gotoc","gotoif","gotoiftime","vswitch"],[mxResources.get("gotoc"),mxResources.get("gotoif"),mxResources.get("gotoiftime"),mxResources.get("vswitch")]),this.addImagePalette("stats",mxResources.get("stats"),e+"/stats/","_128x128.png",["goal"],[mxResources.get("goal")]),this.addImagePalette("general",mxResources.get("general"),e+"/general/","_128x128.png",["noop","system","agi","subproject","custom_app"],[mxResources.get("noop"),mxResources.get("system"),mxResources.get("agi"),mxResources.get("subproject"),mxResources.get("custom_app")])},Sidebar.prototype.collapsedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNUQyRTJFNjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNUQyRTJFNzZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MEUxNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MEUyNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhSMj6lrwAjcC1GyahV+dcZJgeIIFgA7":IMAGE_PATH+"/collapsed.gif",Sidebar.prototype.expandedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxREY3NzBERjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxREY3NzBFMDZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MERENkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MERFNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7":IMAGE_PATH+"/expanded.gif",Sidebar.prototype.tooltipImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAbCAMAAAB7jU7LAAAACVBMVEX///+ZmZn///9Y2COLAAAAA3RSTlP//wDXyg1BAAAAOElEQVR42mXQMQ4AMAgDsWv//+iutcJmIQSk+9dJpVKpVCqVSqVSqZTdncWzF8/NeP7FkxWenPEDOnUBiL3jWx0AAAAASUVORK5CYII=":IMAGE_PATH+"/tooltip.png",Sidebar.prototype.searchImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEaSURBVHjabNGxS5VxFIfxz71XaWuQUJCG/gCHhgTD9VpEETg4aMOlQRp0EoezObgcd220KQiXmpretTAHQRBdojlQEJyukPdt+b1ywfvAGc7wnHP4nlZd1yKijQW8xzNc4Su+ZOYfQ3T6/f4YNvEJYzjELXp4VVXVz263+7cR2niBxAFeZ2YPi3iHR/gYERPDwhpOsd6sz8x/mfkNG3iOlWFhFj8y89J9KvzGXER0GuEaD42mgwHqUtoljbcRsTBCeINpfM/MgZLKPpaxFxGbOCqDXmILN7hoJrTKH+axhxmcYRxP0MIDnOBDZv5q1XUNIuJxifJp+UNV7t7BFM6xeic0RMQ4Bpl5W/ol7GISx/eEUUTECrbx+f8A8xhiZht9zsgAAAAASUVORK5CYII=":IMAGE_PATH+"/search.png",Sidebar.prototype.enableTooltips=!0,Sidebar.prototype.tooltipBorder=16,Sidebar.prototype.tooltipDelay=300,Sidebar.prototype.dropTargetDelay=200,Sidebar.prototype.thumbWidth=36,Sidebar.prototype.thumbHeight=36,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2,Sidebar.prototype.sidebarTitleSize=9,Sidebar.prototype.sidebarTitles=!1,Sidebar.prototype.tooltipTitles=!0,Sidebar.prototype.maxTooltipWidth=400,Sidebar.prototype.maxTooltipHeight=400,Sidebar.prototype.addStencilsToIndex=!0,Sidebar.prototype.defaultImageWidth=80,Sidebar.prototype.defaultImageHeight=80,Sidebar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Sidebar.prototype.showTooltip=function(c,m,u,p,g,v){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=c){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var e=mxUtils.bind(this,function(){null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),this.graph2.resetViewOnRootChange=!1,this.graph2.foldingEnabled=!1,this.graph2.gridEnabled=!1,this.graph2.autoScroll=!1,this.graph2.setTooltips(!1),this.graph2.setConnectable(!1),this.graph2.setEnabled(!1),mxClient.IS_SVG||(this.graph2.view.canvas.style.position="relative"),this.tooltipImage=mxUtils.createImage(this.tooltipImage),this.tooltipImage.className="geSidebarTooltipImage",this.tooltipImage.style.zIndex=mxPopupMenu.prototype.zIndex-1,this.tooltipImage.style.position="absolute",this.tooltipImage.style.width="14px",this.tooltipImage.style.height="27px",document.body.appendChild(this.tooltipImage)),this.graph2.model.clear(),this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder),u>this.maxTooltipWidth||p>this.maxTooltipHeight?this.graph2.view.scale=Math.round(100*Math.min(this.maxTooltipWidth/u,this.maxTooltipHeight/p))/100:this.graph2.view.scale=1,this.tooltip.style.display="block",this.graph2.labelsVisible=null==v||v,this.graph2.addCells(m);var e=this.graph2.getGraphBounds(),n=e.width+2*this.tooltipBorder+4,t=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(t+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=n+"px",this.tooltipTitles&&null!=g&&0<g.length){null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",mxClient.IS_SVG||(this.tooltipTitle.style.position="absolute"),this.tooltipTitle.style.paddingTop="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,g);var a=this.tooltipTitle.offsetHeight+10;t+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(t-=6,this.tooltipTitle.style.top=t-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=t+"px";var i=-Math.round(e.x-this.tooltipBorder),s=-Math.round(e.y-this.tooltipBorder),o=document.body,r=document.documentElement,l=(o.clientHeight||r.clientHeight,document.getElementById("vertical-navigation").offsetWidth+this.container.clientWidth),d=Math.max(0,this.getOffset(c).top-this.container.scrollTop-t/2+16);mxClient.IS_SVG?0!=i||0!=s?this.graph2.view.canvas.setAttribute("transform","translate("+i+","+s+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=i+"px",this.graph2.view.drawPane.style.top=s+"px"),this.tooltip.style.position="absolute",this.tooltip.style.left=l+"px",this.tooltip.style.top=d+"px",this.tooltipImage.style.left=l-13+"px",this.tooltipImage.style.top=d+t/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?e():this.thread=window.setTimeout(e,this.tooltipDelay),this.currentElt=c}},Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null),null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)},Sidebar.prototype.addEntry=function(e,n){if(null!=this.taglist&&null!=e&&0<e.length)for(var t=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<t.length;a++)if(t[a]=t[a].replace(/\.*\d*$/,""),1<t[a].length){var i=this.taglist[t[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[t[a]]=i),null==i.dict.get(n)&&(i.dict.put(n,n),i.entries.push(n))}return n},Sidebar.prototype.searchEntries=function(e,n,t,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(t+1)*n,l=[],d=0,c=0;c<s.length;c++)if(0<s[c].length){var m=this.taglist[s[c]],u=new mxDictionary;if(null!=m){var p=m.entries;l=[];for(var g=0;g<p.length;g++){m=p[g];if(0==d==(null==o.get(m))&&(u.put(m,m),l.push(m),c==s.length-1&&l.length==r))return void a(l.slice(t*n,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(t*n,(t+1)*n),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var n=e.split(" "),t=[],a={},i=0;i<n.length;i++)null==a[n[i]]&&(a[n[i]]="1",t.push(n[i]));return t.join(" ")},Sidebar.prototype.cloneCell=function(e,n){var t=e.clone();return null!=n&&(t.value=n),t},Sidebar.prototype.addSearchPalette=function(e){var n=document.createElement("div");n.style.visibility="hidden",this.container.appendChild(n);var r=document.createElement("div");r.className="geSidebar",r.style.boxSizing="border-box",r.style.overflow="hidden",r.style.width="100%",r.style.padding="8px",r.style.paddingTop="14px",r.style.paddingBottom="0px",e||(r.style.display="none");var t=document.createElement("div");t.style.whiteSpace="nowrap",t.style.textOverflow="clip",t.style.paddingBottom="8px",t.style.cursor="default";var a=document.createElement("input");a.setAttribute("placeholder",mxResources.get("searchShapes")),a.setAttribute("type","text"),a.style.fontSize="12px",a.style.overflow="hidden",a.style.boxSizing="border-box",a.style.border="solid 1px #d5d5d5",a.style.borderRadius="4px",a.style.width="100%",a.style.outline="none",a.style.padding="6px",t.appendChild(a);var i,s=document.createElement("img");s.setAttribute("src",Sidebar.prototype.searchImage),s.setAttribute("title",mxResources.get("search")),s.style.position="relative",s.style.left="-18px",mxClient.IS_QUIRKS?(a.style.height="28px",s.style.top="-4px"):s.style.top="2px",s.style.background="url('"+this.editorUi.editor.transparentImage+"')",t.appendChild(s),r.appendChild(t);var l=document.createElement("center"),d=mxUtils.button(mxResources.get("moreResults"),function(){i()});d.style.display="none",d.style.lineHeight="normal",d.style.marginTop="4px",d.style.marginBottom="8px",l.style.paddingTop="4px",l.style.paddingBottom="8px",l.appendChild(d),r.appendChild(l);var c="",m=!1,u=!1,p=0,g=new Object,v=12,h=mxUtils.bind(this,function(){m=!1,this.currentSearch=null;for(var e=r.firstChild;null!=e;){var n=e.nextSibling;e!=t&&e!=l&&e.parentNode.removeChild(e),e=n}});i=mxUtils.bind(this,function(){if(v=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10))),this.hideTooltip(),""!=a.value){if(null!=l.parentNode&&(c!=a.value&&(h(),c=a.value,g=new Object,u=!1,p=0),!m&&!u)){d.setAttribute("disabled","true"),d.style.display="",d.style.cursor="wait",d.innerHTML=mxResources.get("loading")+"...",m=!0;var o=new Object;this.currentSearch=o,this.searchEntries(c,v,p,mxUtils.bind(this,function(e,n,t){if(this.currentSearch==o){e=null!=e?e:[],m=!1,p++,l.parentNode.removeChild(l);for(var a=0;a<e.length;a++){var i=e[a]();null==g[i.innerHTML]&&(g[i.innerHTML]="1",r.appendChild(e[a]()))}if(t?(d.removeAttribute("disabled"),d.innerHTML=mxResources.get("moreResults")):(d.innerHTML=mxResources.get("reset"),d.style.display="none",u=!0),d.style.cursor="",0==e.length&&1==p){var s=document.createElement("div");s.className="geTitle",s.style.backgroundColor="transparent",s.style.borderColor="transparent",s.style.color="gray",s.style.padding="0px",s.style.margin="0px 8px 0px 8px",s.style.paddingTop="6px",s.style.textAlign="center",s.style.cursor="default",mxUtils.write(s,mxResources.get("noResultsFor",[c])),r.appendChild(s)}r.appendChild(l)}}),mxUtils.bind(this,function(){d.style.cursor=""}))}}else h(),a.value="",c="",g=new Object,d.style.display="none",u=!1,a.focus()}),mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(e){13==e.keyCode&&i()})),mxEvent.addListener(a,"focus",function(){a.style.paddingRight="",s.style.display="none"}),mxEvent.addListener(a,"blur",function(){a.style.paddingRight="20px",s.style.display=""}),a.style.paddingRight="20px",mxEvent.addListener(a,"keyup",mxUtils.bind(this,function(e){""==a.value?(u=!0,d.style.display="none"):a.value!=c?(d.style.display="none",u=!1):m||(d.style.display=u?"none":"")})),mxEvent.addListener(a,"mousedown",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0}),mxEvent.addListener(a,"selectstart",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0});var o=document.createElement("div");o.appendChild(r),this.container.appendChild(o),this.palettes.search=[n,o]},Sidebar.prototype.createTitle=function(e){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.setAttribute("title",mxResources.get("sidebarTooltip")),n.className="geTitle",mxUtils.write(n,e),n},Sidebar.prototype.createThumb=function(e,n,t,a,i,s,o,r,l){this.graph.labelsVisible=null==s||s;var d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,this.graph.view.scaleAndTranslate(1,0,0),this.graph.addCells(e);var c=this.graph.getGraphBounds(),m=Math.floor(100*Math.min((n-2*this.thumbBorder)/c.width,(t-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((n-c.width*m)/2/m-c.x),Math.floor((t-c.height*m)/2/m-c.y));var u=null;if(this.graph.dialect!=mxConstants.DIALECT_SVG||mxClient.NO_FO?(u=this.graph.container.cloneNode(!1)).innerHTML=this.graph.container.innerHTML:u=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0),this.graph.getModel().clear(),mxClient.NO_FO=d,mxClient.IS_IE6&&(a.style.backgroundImage="url("+this.editorUi.editor.transparentImage+")"),u.style.position="relative",u.style.overflow="hidden",u.style.cursor="move",u.style.left=this.thumbBorder+"px",u.style.top=this.thumbBorder+"px",u.style.width=n+"px",u.style.height=t+"px",u.style.visibility="",u.style.minWidth="",u.style.minHeight="",a.appendChild(u),this.sidebarTitles&&null!=i&&0!=o){var p=mxClient.IS_QUIRKS?2*this.thumbPadding+2:0;a.style.height=this.thumbHeight+p+this.sidebarTitleSize+8+"px";var g=document.createElement("div");g.style.fontSize=this.sidebarTitleSize+"px",g.style.color="#303030",g.style.textAlign="center",g.style.whiteSpace="nowrap",mxClient.IS_IE&&(g.style.height=this.sidebarTitleSize+12+"px"),g.style.paddingTop="4px",mxUtils.write(g,i),a.appendChild(g)}return c},Sidebar.prototype.createItem=function(n,t,a,e,i,s,o){var r=document.createElement("a");r.setAttribute("href","javascript:void(0);"),r.className="geItem",r.style.overflow="hidden";var l=mxClient.IS_QUIRKS?8+2*this.thumbPadding:2*this.thumbBorder;r.style.width=this.thumbWidth+l+"px",r.style.height=this.thumbHeight+l+"px",r.style.padding=this.thumbPadding+"px",mxEvent.addListener(r,"click",function(e){mxEvent.consume(e)}),this.createThumb(n,this.thumbWidth,this.thumbHeight,r,t,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<n.length||n[0].vertex){var c=this.createDragSource(r,this.createDropHandler(n,!0,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=n[0]&&n[0].edge){c=this.createDragSource(r,this.createDropHandler(n,!1,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,n,d.width,d.height,t,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,n,t,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=t&&e.isValidDropTarget(t,g,n),o=null;if(null==t||s||(t=null),!e.isCellLocked(t||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(t,g,n)){var r=e.cloneCells(g);e.splitEdge(t,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,t));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(t);if(null!=l)for(var d=e.view.scale,c=e.view.translate,m=(a+c.x)*d,u=(i+c.y)*d,p=0;p<o.length;p++)l.moveCell(o[p],m,u)}h&&e.fireEvent(new mxEventObject("cellsInserted","cells",o))}finally{e.model.endUpdate()}null!=o&&0<o.length&&(e.scrollCellToVisible(o[0]),e.setSelectionCells(o))}}mxEvent.consume(n)}})},Sidebar.prototype.createDragPreview=function(e,n){var t=document.createElement("div");return t.style.border="1px dashed black",t.style.width=e+"px",t.style.height=n+"px",t},Sidebar.prototype.createDragSource=function(e,n,t){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,n,t,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,n,t){var a=mxDragSource.prototype.getDropTarget.apply(this,arguments);return e.isValidRoot(a)||(a=null),a},a},Sidebar.prototype.addClickHandler=function(e,a){var i=this.editorUi.editor.graph,s=null;mxEvent.addGestureListeners(e,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e))});var o=a.mouseUp;a.mouseUp=function(e){if(!mxEvent.isPopupTrigger(e)&&null==this.currentGraph&&null!=s){var n=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=n&&Math.abs(s.y-mxEvent.getClientY(e))<=n){var t=i.getGridSize();a.drop(i,e,null,t,t)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,n,t,a,i,s,o,r){return r=null!=r&&0<r.length?r:i.toLowerCase(),this.addEntry(r,mxUtils.bind(this,function(){return this.createVertexTemplate(e,n,t,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,n,t,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",n),t.forEach(function(e,n){i.setAttribute(e,a[n]?a[n]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,n,t,a,i,s,o,r){var l=[],d=[];switch(a){case"answer":l=["timeout"],d=["0"];break;case"start":l=["answer"],d=["yes"];break;case"googleasr":l=["key","google_asr_language","timeout","intKey","beep"],d=["","it-IT","10","#","BEEP"];break;case"tildeasr":l=["uri","appid","appsecret","timeout","intKey","beep"],d=["wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE","","","10","#","BEEP"];break;case"ispeechasr":l=["key","model","ispeech_asr_language","timeout","intKey","beep"],d=["","","it-IT","10","#","BEEP"];break;case"playback":l=["file_id","opts"],d=["0"];break;case"background":l=["file_id","response","digit"],d=["0","5","1"];break;case"menu":l=["file_id","response","digit","retry","variable_id"],d=["0","5","1","1","0"];break;case"getdigits":l=["file_id","response","mindigit","maxdigit","retry","variable_id"],d=["0","5","1","10","1","0"];break;case"getsecretdigits":l=["file_id","response","mindigit","maxdigit","retry","hiddendigitsnum","hiddendigitspos","variable_id"],d=["0","5","1","10","1","0","first","0"];break;case"custom_app":l=["application","options"],d=["",""];break;case"set":l=["variable_id","variable_value"],d=["0",""];break;case"database":l=["odbc_id","query","variable_id"],d=["0","",""];break;case"noop":l=["output"],d=[];break;case"gotoc":l=["context","extension","priority"],d=["","","1"];break;case"system":l=["variable_id","command"],d=[];break;case"agi":l=["command","args"],d=[];break;case"gotoif":l=["condition"],d=[];break;case"gotoiftime":l=["interval_id"],d=["0"];break;case"vswitch":l=["variable_id"],d=["0"];break;case"saydigits":l=["digits","escape_digits"],d=["","#"];break;case"saynumber":l=["number","escape_digits"],d=["","#"];break;case"sayphonetic":l=["text","escape_digits"],d=["","#"];break;case"record":l=["file","recordingFormat","timeout","escape_digits"],d=["","wav","-1","#"];break;case"dial":l=["sip_id","timeout","opts","url"],d=["0","60"];break;case"ext_dial":l=["phone","trunk_name","timeout","opts","url"],d=["","-1","60"];break;case"google_cloud_tts":l=["apiKey","google_cloud_tts_text_type","text","languageCode","ssmlGender"],d=["","text","","en-US","FEMALE"];break;case"tts":l=["text","google_tts_language"],d=["","it"];break;case"ispeechtts":l=["text","key","ispeech_tts_language","speed","intKey"],d=["","","euritalianfemale","0","#"];break;case"lumenvoxtts":case"sestektts":l=["text","options"],d=["",""];break;case"lumenvoxasr":l=["grammar","options"],d=["",""];break;case"sestekasr":l=["grammar","options"],d=["/usr/local/unimrcp/data/grammar.xml",""];break;case"awspolly":l=["aws_access_key_id","aws_secret_access_key","aws_polly_region","aws_polly_voice","text","aws_text_type"],d=["","","eu-west-1","Amy","","text"];break;case"awslex":l=["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],d=["","","eu-west-1","",""];break;case"queue":l=["queue_id","opts","url","file_id","timeout","agi","macro","gosub","position"],d=["-1","xX","","","300"];break;case"voicemail":l=["mailbox","options"],d=["",""];break;case"subproject":l=["project_id"],d=["0"];break;case"math":l=["operation","variable_id"],d=["","0"];break;case"queuelog":l=["queuename","agent","queue_event","data1","data2","data3","data4","data5"],d=[];break;case"goal":l=["goalname"],d=[];break;case"callback":l=["name","lastName","phone","list_id","delay","callback_priority"],d=["{CALLERID(name)}","","{CALLERID(num)}","-1","5","2"];break;case"sendSMS":l=["sms_account_id","to","sms_text"],d=["0"];break;case"sendMail":l=["account_id","to","cc","bcc","subject","text"],d=["0"];break;case"sendFax":l=["account_id","to","choose_attachment","attachment_name","attachment_type","attachment_path"],d=["0"];break;case"login":case"unpause":case"logout":l=["findBy"],d=["internal"];break;case"pause":l=["findBy","pause_id"],d=["internal",""];break;case"dialogflow":l=["key","text","dialogflow_language"],d=["","","it"];break;case"sesteknda":l=["ndauth_url","username","password","ndassistant_url","text","project","ndagenerate_audio","custom_action","custom_action_data","ndaactivity_type"],d=["","","","","","",1,"","","message"];break;case"restapi":l=["url","method","timeout","computedVariables","rawHeaders","rawBody","variable_id"],d=["","GET","5","","","",""];break;case"mrcpsynth":l=["text","options"],d=["",""];break;case"mrcprecog":l=["grammar","options"],d=["",""];break;case"dialogflowV2":l=["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"],d=["","","","en",""];break;default:l=[],d=[]}var c=[new mxCell(this.createXmlDocument(a,i,l,d),new mxGeometry(0,0,n,t),e)];return c[0].vertex=!0,this.createVertexTemplateFromCells(c,n,t,i,s,o,r)},Sidebar.prototype.createVertexTemplateFromCells=function(e,n,t,a,i,s,o){return this.createItem(e,a,i,s,n,t,o)},Sidebar.prototype.createEdgeTemplate=function(e,n,t,a,i,s,o){var r=new mxCell(null!=a?a:"",new mxGeometry(0,0,n,t),e);return r.geometry.setTerminalPoint(new mxPoint(0,t),!0),r.geometry.setTerminalPoint(new mxPoint(n,0),!1),r.geometry.relative=!0,r.edge=!0,this.createEdgeTemplateFromCells([r],n,t,i,s,o)},Sidebar.prototype.createEdgeTemplateFromCells=function(e,n,t,a,i,s){return this.createItem(e,a,i,!0,n,t,s)},Sidebar.prototype.addPaletteFunctions=function(e,n,t,a){this.addPalette(e,n,t,mxUtils.bind(this,function(e){for(var n=0;n<a.length;n++)e.appendChild(a[n](e))}))},Sidebar.prototype.addPalette=function(e,n,t,a){var i=this.createTitle(n);this.container.appendChild(i);var s=document.createElement("div");s.className="geSidebar",mxClient.IS_POINTER&&(s.style.touchAction="none"),mxEvent.addListener(s,"mousemove",mxUtils.bind(this,function(e){mxEvent.getSource(e)==s?s.setAttribute("title",mxResources.get("sidebarTooltip")):s.removeAttribute("title")})),t?(a(s),a=null):s.style.display="none",this.addFoldingHandler(i,s,a);var o=document.createElement("div");return o.appendChild(s),this.container.appendChild(o),null!=e&&(this.palettes[e]=[i,o]),s},Sidebar.prototype.addFoldingHandler=function(t,a,i){var s=!1;(!mxClient.IS_IE||8<=document.documentMode)&&(t.style.backgroundImage="none"==a.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')"),t.style.backgroundRepeat="no-repeat",t.style.backgroundPosition="0% 50%",mxEvent.addListener(t,"click",mxUtils.bind(this,function(e){if("none"==a.style.display){if(s)a.style.display="block";else if(s=!0,null!=i){t.style.cursor="wait";var n=t.innerHTML;t.innerHTML=mxResources.get("loading")+"...",window.setTimeout(function(){var e=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,i(a),mxClient.NO_FO=e,a.style.display="block",t.style.cursor="",t.innerHTML=n},0)}else a.style.display="block";t.style.backgroundImage="url('"+this.expandedImage+"')"}else t.style.backgroundImage="url('"+this.collapsedImage+"')",a.style.display="none";mxEvent.consume(e)}))},Sidebar.prototype.addImagePalette=function(e,n,s,o,r,t,a){for(var l=[],d=0;d<r.length;d++)mxUtils.bind(this,function(e,n,t){if(null==t){var a=e.lastIndexOf("/"),i=e.lastIndexOf(".");t=e.substring(0<=a?a+1:0,0<=i?i:e.length).replace(/[-_]/g," ")}l.push(this.createVertexTemplateEntry("image;html=1;image="+s+e+o,this.defaultImageWidth,this.defaultImageHeight,r[d],n,!1,!0,this.filterTags(t)))})(r[d],null!=t?t[d]:null,null!=a?a[r[d]]:null);this.addPaletteFunctions(e,n,!1,l)},"undefined"!=typeof html4&&(html4.ATTRIBS["a::target"]=0),mxConstants.SHADOW_OPACITY=.25,mxConstants.SHADOWCOLOR="#000000",mxConstants.VML_SHADOWCOLOR="#d0d0d0",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,function(){try{if(null!=navigator&&null!=navigator.language){var e=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===e||"en-ca"===e||"es-mx"===e?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(e){}}(),mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,mxGraphModel.prototype.ignoreRelativeEdgeParent=!1,mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif",mxGraphView.prototype.gridSteps=4,mxGraphView.prototype.minGridSize=4,mxGraphView.prototype.gridColor="#e0e0e0",mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]",Graph=function(e,n,t,a){mxGraph.call(this,e,n,t,a),this.setConnectable(!0),this.setDropEnabled(!1),this.setPanning(!0),this.setTooltips(!mxClient.IS_TOUCH),this.setAllowLoops(!1),this.setMultigraph(!1),this.allowAutoPanning=!0,this.resetEdgesOnConnect=!1,this.constrainChildren=!1,this.connectionHandler.targetConnectImage=!0,this.setAllowDanglingEdges(!1),this.connectionHandler.setCreateTarget(!1),this.connectionHandler.isValidSource=function(){return mxConnectionHandler.prototype.isValidSource.apply(this,arguments)&&"2"!=urlParams.connect},this.alternateEdgeStyle="vertical",null==a&&this.loadStylesheet();var i=new mxRubberband(this);this.getRubberband=function(){return i},this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.container.style.cursor="pointer"})),this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.container.style.cursor="default"})),this.isHtmlLabel=function(e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);return"1"==t.html||"wrap"==t.whiteSpace},this.cellRenderer.getLabelValue=function(e){var n=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);return"wrap"==e.style.whiteSpace&&1!=e.style.html&&(n=mxUtils.htmlEntities(n,!1)),n},this.isCellLocked=function(e){return!1},this.connectionHandler.tapAndHoldTolerance=16;var s=this.connectionHandler.tapAndHold;this.connectionHandler.tapAndHold=function(e,n){null==n?this.graph.panningHandler.active||(i.start(e.getGraphX(),e.getGraphY()),this.graph.panningHandler.panningTrigger=!1):tapAndHoldStartsConnection?s.apply(this,arguments):this.graph.isCellSelected(n.cell)&&1<this.graph.getSelectionCount()&&this.graph.removeSelectionCell(n.cell)},touchStyle&&this.initTouch()},mxUtils.extend(Graph,mxGraph),Graph.prototype.minFitScale=null,Graph.prototype.maxFitScale=null,Graph.prototype.loadStylesheet=function(){var e=mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement();new mxCodec(e.ownerDocument).decode(e,this.getStylesheet())},Graph.prototype.flipEdge=function(e){if(null!=e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);if(null!=t){var a=mxUtils.getValue(t,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,a,[e])}}},Graph.prototype.setDefaultEdge=function(e){if(null!=e&&this.getModel().isEdge(e)){var n=this.getModel().cloneCells([e])[0];null!=n.geometry&&(n.geometry.points=null);var t=n.getStyle();t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_Y,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_Y,null),n.setStyle(t),this.connectionHandler.createEdgeState=function(e){return this.graph.view.createState(n)},this.connectionHandler.factoryMethod=function(){return this.graph.cloneCells([n])[0]}}},Graph.prototype.isCellFoldable=function(e){return this.foldingEnabled&&this.isSwimlane(e)},Graph.prototype.isValidRoot=function(e){return this.isSwimlane(e)},Graph.prototype.createGroupCell=function(){var e=mxGraph.prototype.createGroupCell.apply(this,arguments);return e.setStyle("group"),e},Graph.prototype.getTooltipForCell=function(e){var n="";return this.getModel().isVertex(e)?n+=mxResources.get("description_"+e.value.nodeName)||"":this.getModel().isEdge(e)&&(n=mxGraph.prototype.getTooltipForCell.apply(this,arguments)),n},Graph.prototype.convertValueToString=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("label"):mxGraph.prototype.convertValueToString.apply(this,arguments)},Graph.prototype.cellLabelChanged=function(e,n,t){if(null!=e.value&&"object"==typeof e.value){var a=e.value.cloneNode(!0);a.setAttribute("label",n),n=a}mxGraph.prototype.cellLabelChanged.apply(this,arguments)},Graph.prototype.setLinkForCell=function(e,n){var t=null;null!=e.value&&"object"==typeof e.value?t=e.value.cloneNode(!0):(t=mxUtils.createXmlDocument().createElement("UserObject")).setAttribute("label",e.value);null!=n&&0<n.length?t.setAttribute("link",n):t.removeAttribute("link"),this.model.setValue(e,t)},Graph.prototype.getLinkForCell=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("link"):null},Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first},this.addListener(mxEvent.START_EDITING,function(e,n){this.panningHandler.hideMenu()});var s=!1,o=null;this.updateMouseEvent=function(e){if(mxGraph.prototype.updateMouseEvent.apply(this,arguments),null==e.getState()){var n=this.getCellAt(e.graphX,e.graphY);this.getModel().isEdge(n)&&(e.state=this.view.getState(n),null!=e.state&&null!=e.state.shape&&(this.container.style.cursor=e.state.shape.node.style.cursor))}null==e.getState()&&(this.container.style.cursor="default")},this.fireMouseEvent=function(e,n,t){if(e==mxEvent.MOUSE_DOWN)this.panningHandler.isMenuShowing()?(s=!1,o=null):(o=n.getCell(),s=null!=o?this.isCellSelected(o):this.isSelectionEmpty());else if(e==mxEvent.MOUSE_UP){if(s&&!this.isEditing()){if(!this.panningHandler.isMenuShowing()){var a=mxEvent.getClientX(n.getEvent()),i=mxEvent.getClientY(n.getEvent());this.panningHandler.popup(a+16,i,o,n.getEvent())}return s=!1,o=null,void n.consume()}s=!1,o=null}mxGraph.prototype.fireMouseEvent.apply(this,arguments),e==mxEvent.MOUSE_MOVE&&n.isConsumed()&&(s=!1,o=null)}},function(){if(mxVertexHandler.prototype.rotationEnabled=!0,mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,touchStyle){mxConstants.HANDLE_SIZE=16,mxConstants.LABEL_HANDLE_SIZE=7,mxClient.IS_TOUCH&&(mxVertexHandler.prototype.tolerance=4,mxEdgeHandler.prototype.tolerance=6,Graph.prototype.tolerance=14,Graph.prototype.gridSize=20,mxPanningHandler.prototype.selectOnPopup=!1,mxPanningHandler.prototype.useLeftButtonForPanning=!0,mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)});var t=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(e,n){t.apply(this,arguments),this.graph.isCellSelected(n.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)},Graph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxConnectionHandler.prototype.selectCells=function(e,n){touchStyle&&null!=n?this.graph.setSelectionCell(n):this.graph.setSelectionCell(e)};var a=mxGraph.prototype.dblClick;Graph.prototype.dblClick=function(e,n){if(null==n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.getCellAt(t.x,t.y)}a.call(this,e,n)};var e=new mxImage(IMAGE_PATH+"/touch-handle.png",16,16);mxVertexHandler.prototype.handleImage=e,mxEdgeHandler.prototype.handleImage=e,mxOutline.prototype.sizerImage=e,(new Image).src=e.src;var n=IMAGE_PATH+"/touch-connector.png",i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(this.connectorImg=mxUtils.createImage(n),this.connectorImg.style.cursor="pointer",this.connectorImg.style.width="29px",this.connectorImg.style.height="29px",this.connectorImg.style.position="absolute",mxClient.IS_TOUCH||(this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state)),this.connectorImg.style.padding="2px",mxEvent.addGestureListeners(this.connectorImg,mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};var s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+4+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};var o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)},(new Image).src=n}else{var r=new mxImage(IMAGE_PATH+"/connector.png",15,15);if(mxConnectionHandler.prototype.connectImage=r,(new Image).src=r.src,"2"==urlParams.connect){r=new mxImage(IMAGE_PATH+"/connector.png",15,15),i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(mxClient.IS_IE&&!mxClient.IS_SVG?(this.connectorImg=document.createElement("div"),this.connectorImg.style.backgroundImage="url("+r.src+")",this.connectorImg.style.backgroundPosition="center",this.connectorImg.style.backgroundRepeat="no-repeat",this.connectorImg.style.width=r.width+4+"px",this.connectorImg.style.height=r.height+4+"px",this.connectorImg.style.display=mxClient.IS_QUIRKS?"inline":"inline-block"):(this.connectorImg=mxUtils.createImage(r.src),this.connectorImg.style.width=r.width+"px",this.connectorImg.style.height=r.height+"px"),this.connectorImg.style.cursor="pointer",this.connectorImg.style.position="absolute",this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state),this.connectorImg.style.padding="2px",mxEvent.addListener(this.connectorImg,"mousedown",mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+2+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)}}}}(),Actions.prototype.init=function(){var n=this.editorUi,l=n.editor,d=l.graph;this.addAction("new",function(){n.projectDesignController.newProject()},CRUD_PERMISSIONS.canEdit),this.addAction("open",function(){n.projectDesignController.openProject()},CRUD_PERMISSIONS.canEdit),this.addAction("save",function(){n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml())),n.editor.modified=!1},CRUD_PERMISSIONS.canEdit,null,"Ctrl+S"),this.addAction("saveAs",function(){n.projectDesignController.saveProjectAs(mxUtils.getPrettyXml(l.getGraphXml()))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+S"),this.addAction("publish",function(){n.editor.setStatus(""),null===n.validate()?(n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml()),!0),n.editor.modified=!1):(n.editor.setStatus("...Error publishing! Please check the project and try again!"),setTimeout(function(){n.editor.setStatus("")},3e3))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+P"),this.addAction("variable",function(){n.projectDesignController.newVariable()},CRUD_PERMISSIONS.canEdit),this.addAction("import",function(){n.projectDesignController.importXML(function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("export",function(){n.exportXML(mxUtils.getPrettyXml(l.getGraphXml()))},null,null,"Ctrl+E"),this.addAction("editFile",function(){n.projectDesignController.editXML(mxUtils.getPrettyXml(l.getGraphXml()),function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("print",function(){mxUtils.printScreen(d)},null,"sprite-print","Ctrl+P"),this.addAction("preview",function(){mxUtils.show(d,null,10,10)}),this.addAction("undo",function(){l.undoManager.undo()},null,"sprite-undo","Ctrl+Z"),this.addAction("redo",function(){l.undoManager.redo()},null,"sprite-redo","Ctrl+Y"),this.addAction("cut",function(){mxClipboard.cut(d)},null,"sprite-cut","Ctrl+X"),this.addAction("copy",function(){mxClipboard.copy(d)},null,"sprite-copy","Ctrl+C"),this.addAction("paste",function(){mxClipboard.paste(d)},!1,"sprite-paste","Ctrl+V"),this.addAction("delete",function(){d.removeCells()},null,null,"Delete"),this.addAction("duplicate",function(){var e=d.gridSize;d.setSelectionCells(d.moveCells(d.getSelectionCells(),e,e,!0))},null,null,"Ctrl+D"),this.addAction("selectVertices",function(){d.selectVertices()},null,null,"Ctrl+Shift+V"),this.addAction("selectEdges",function(){d.selectEdges()},null,null,"Ctrl+Shift+E"),this.addAction("selectAll",function(){d.selectAll()},null,null,"Ctrl+A"),this.addAction("home",function(){d.home()},null,null,"Home"),this.addAction("exitGroup",function(){d.exitGroup()},null,null,"Page Up"),this.addAction("enterGroup",function(){d.enterGroup()},null,null,"Page Down"),this.addAction("expand",function(){d.foldCells(!1)},null,null,"Enter"),this.addAction("collapse",function(){d.foldCells(!0)},null,null,"Backspace"),this.addAction("toFront",function(){d.orderCells(!1)},null,null,"Ctrl+F"),this.addAction("toBack",function(){d.orderCells(!0)},null,null,"Ctrl+B"),this.addAction("group",function(){d.setSelectionCell(d.groupCells(null,0))},null,null,"Ctrl+G"),this.addAction("ungroup",function(){d.setSelectionCells(d.ungroupCells())},null,null,"Ctrl+U"),this.addAction("removeFromGroup",function(){d.removeCellsFromParent()}),this.addAction("editLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null==n&&(n=""),null!=(n=mxUtils.prompt(mxResources.get("enterValue"),n))&&d.setLinkForCell(e,n)}),this.addAction("openLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null!=n&&window.open(n)}),this.addAction("autosize",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];d.getModel().getChildCount(t)?d.updateGroupBounds([t],20):d.updateCellSize(t)}}finally{d.getModel().endUpdate()}}}),this.addAction("wordWrap",function(){var e=d.getView().getState(d.getSelectionCell()),n="wrap";null!=e&&"wrap"==e.style[mxConstants.STYLE_WHITE_SPACE]&&(n=null),d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,n)}),this.addAction("rotation",function(){var e="0",n=d.getView().getState(d.getSelectionCell());null!=n&&(e=n.style[mxConstants.STYLE_ROTATION]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)",e))&&d.setCellStyles(mxConstants.STYLE_ROTATION,e)}),this.addAction("tilt",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];if(d.getModel().isVertex(t)&&0==d.getModel().getChildCount(t)){var a=d.getCellGeometry(t);if(null!=a){(a=a.clone()).x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var i=a.width;a.width=a.height,a.height=i,d.getModel().setGeometry(t,a);var s=d.view.getState(t);if(null!=s){var o=s.style[mxConstants.STYLE_DIRECTION]||"east";"east"==o?o="south":"south"==o?o="west":"west"==o?o="north":"north"==o&&(o="east"),d.setCellStyles(mxConstants.STYLE_DIRECTION,o,[t])}}}}}finally{d.getModel().endUpdate()}}},null,null,"Ctrl+R"),this.addAction("actualSize",function(){d.zoomTo(1)}),this.addAction("zoomIn",function(){d.zoomIn()},null,null,"Add"),this.addAction("zoomOut",function(){d.zoomOut()},null,null,"Subtract"),this.addAction("fitWindow",function(){d.fit()}),this.addAction("fitPage",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=d.container.clientHeight-20,i=Math.floor(100*Math.min(t/e.width/n,a/e.height/n))/100;d.zoomTo(i),d.container.scrollLeft=Math.round(d.view.translate.x*i-Math.max(10,(d.container.clientWidth-e.width*n*i)/2)),d.container.scrollTop=Math.round(d.view.translate.y*i-Math.max(10,(d.container.clientHeight-e.height*n*i)/2))})),this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=Math.floor(100*t/e.width/n)/100;d.zoomTo(a),d.container.scrollLeft=Math.round(d.view.translate.x*a-Math.max(10,(d.container.clientWidth-e.width*n*a)/2)),d.container.scrollTop=Math.round(d.view.translate.y*a-Math.max(10,(d.container.clientHeight-e.height*n*a)/2))})),this.put("customZoom",new Action(mxResources.get("custom"),function(){var e=mxUtils.prompt(mxResources.get("enterValue")+" (%)",parseInt(100*d.getView().getScale()));null!=e&&0<e.length&&!isNaN(parseInt(e))&&d.zoomTo(parseInt(e)/100)}));var e=null;(e=this.addAction("grid",function(){d.setGridEnabled(!d.isGridEnabled()),l.updateGraphComponents()},null,null,"Ctrl+Shift+G")).setToggleAction(!0),e.setSelectedCallback(function(){return d.isGridEnabled()}),(e=this.addAction("guides",function(){d.graphHandler.guidesEnabled=!d.graphHandler.guidesEnabled})).setToggleAction(!0),e.setSelectedCallback(function(){return d.graphHandler.guidesEnabled}),(e=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()}),(e=this.addAction("navigation",function(){d.foldingEnabled=!d.foldingEnabled,d.view.revalidate()})).setToggleAction(!0),e.setSelectedCallback(function(){return d.foldingEnabled}),(e=this.addAction("scrollbars",function(){if(d.scrollbars=!d.scrollbars,l.updateGraphComponents(),d.scrollbars){var e=d.view.translate.x,n=d.view.translate.y;d.view.translate.x=0,d.view.translate.y=0,d.sizeDidChange(),d.container.scrollLeft-=Math.round(e*d.view.scale),d.container.scrollTop-=Math.round(n*d.view.scale)}else{var t=d.view.translate;d.view.setTranslate(t.x-d.container.scrollLeft/d.view.scale,t.y-d.container.scrollTop/d.view.scale),d.container.scrollLeft=0,d.container.scrollTop=0,d.sizeDidChange()}},!mxClient.IS_TOUCH)).setToggleAction(!0),e.setSelectedCallback(function(){return"auto"==d.container.style.overflow}),(e=this.addAction("pageView",mxUtils.bind(this,function(){d.pageVisible=!d.pageVisible,d.pageBreaksVisible=d.pageVisible,d.preferPageSize=d.pageBreaksVisible,d.view.validate(),d.sizeDidChange(),l.updateGraphComponents(),l.outline.update(),mxUtils.hasScrollbars(d.container)&&(d.pageVisible?(d.container.scrollLeft-=20,d.container.scrollTop-=20):(d.container.scrollLeft+=20,d.container.scrollTop+=20))}))).setToggleAction(!0),e.setSelectedCallback(function(){return d.pageVisible}),(e=this.addAction("connect",function(){d.setConnectable(!d.connectionHandler.isEnabled())},null,null,"Ctrl+Q")).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isEnabled()}),(e=this.addAction("copyConnect",function(){d.connectionHandler.setCreateTarget(!d.connectionHandler.isCreateTarget())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isCreateTarget()}),this.addAction("help",function(){window.open("https://wiki.xcallymotion.com/display/XMV/Cally+Square")}),this.put("about",new Action(mxResources.get("about")+" Cally Square",function(){window.open("http://callysquare.com/")},null,null,null));var t=mxUtils.bind(this,function(e,n){this.addAction(e,function(){d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,n)})});t("bold",mxConstants.FONT_BOLD),t("italic",mxConstants.FONT_ITALIC),t("underline",mxConstants.FONT_UNDERLINE),this.addAction("shadow",function(){d.toggleCellStyles(mxConstants.STYLE_SHADOW)}),this.addAction("dashed",function(){d.toggleCellStyles(mxConstants.STYLE_DASHED)}),this.addAction("rounded",function(){d.toggleCellStyles(mxConstants.STYLE_ROUNDED)}),this.addAction("curved",function(){d.toggleCellStyles(mxConstants.STYLE_CURVED)}),this.addAction("style",function(){var e=d.getSelectionCells();if(null!=e&&0<e.length){var n=d.getModel(),t=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("style")+")",n.getStyle(e[0])||"");null!=t&&d.setCellStyle(t,e)}}),this.addAction("setAsDefaultEdge",function(){d.setDefaultEdge(d.getSelectionCell())}),this.addAction("addWaypoint",function(){var e=d.getSelectionCell();if(null!=e&&d.getModel().isEdge(e)){var n=l.graph.selectionCellsHandler.getHandler(e);if(n instanceof mxEdgeHandler){var t=d.view.translate,a=d.view.scale,i=t.x,s=t.y,o=d.getModel().getParent(e),r=d.getCellGeometry(o);d.getModel().isVertex(o)&&null!=r&&(i+=r.x,s+=r.y),n.addPointAt(n.state,d.panningHandler.triggerX/a-i,d.panningHandler.triggerY/a-s)}}}),this.addAction("removeWaypoint",function(){var e=n.actions.get("removeWaypoint");null!=e.handler&&e.handler.removePoint(e.handler.state,e.index)}),this.addAction("image",function(){var e="",n=d.getView().getState(d.getSelectionCell());if(null!=n&&(e=n.style[mxConstants.STYLE_IMAGE]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("url")+")",e))&&0<e.length){var t=new Image;t.onload=function(){!function(e,n,t){var a=null,i=d.getSelectionCells();d.getModel().beginUpdate();try{if(0==i.length){var s=d.getGridSize();a=i=[d.insertVertex(d.getDefaultParent(),null,"",s,s,n,t)]}if(d.setCellStyles(mxConstants.STYLE_IMAGE,e,i),d.setCellStyles(mxConstants.STYLE_SHAPE,"image",i),1==d.getSelectionCount()&&null!=n&&null!=t){var o=i[0],r=d.getModel().getGeometry(o);null!=r&&((r=r.clone()).width=n,r.height=t,d.getModel().setGeometry(o,r))}}finally{d.getModel().endUpdate()}null!=a&&(d.setSelectionCells(a),d.scrollCellToVisible(a[0]))}(e,t.width,t.height)},t.onerror=function(){mxUtils.alert(mxResources.get("fileNotFound"))},t.src=e}})},Actions.prototype.addAction=function(e,n,t,a,i){return this.put(e,new Action(mxResources.get(e),n,t,a,i))},Actions.prototype.put=function(e,n){return this.actions[e]=n},Actions.prototype.get=function(e){return this.actions[e]},mxUtils.extend(Action,mxEventSource),Action.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Action.prototype.setToggleAction=function(e){this.toggleAction=e},Action.prototype.setSelectedCallback=function(e){this.selectedCallback=e},Action.prototype.isSelected=function(){return this.selectedCallback()},Menus=function(e){this.editorUi=e,this.menus=new Object,this.init(),(new Image).src=IMAGE_PATH+"/checkmark.gif"},Menus.prototype.init=function(){var i=this.editorUi.editor.graph;this.put("fontFamily",new Menu(mxUtils.bind(this,function(e,n){for(var t=["Helvetica","Verdana","Times New Roman","Garamond","Comic Sans MS","Courier New","Georgia","Lucida Console","Tahoma"],a=0;a<t.length;a++){this.styleChange(e,t[a],[mxConstants.STYLE_FONTFAMILY],[t[a]],null,n).firstChild.nextSibling.style.fontFamily=t[a]}e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,n)}))),this.put("fontSize",new Menu(mxUtils.bind(this,function(e,n){for(var t=[6,8,9,10,11,12,14,18,24,36,48,72],a=0;a<t.length;a++)this.styleChange(e,t[a],[mxConstants.STYLE_FONTSIZE],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(pt)","12",mxConstants.STYLE_FONTSIZE,n)}))),this.put("linewidth",new Menu(mxUtils.bind(this,function(e,n){for(var t=[1,2,3,4,8,12,16,24],a=0;a<t.length;a++)this.styleChange(e,t[a]+"px",[mxConstants.STYLE_STROKEWIDTH],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(px)","1",mxConstants.STYLE_STROKEWIDTH,n)}))),this.put("line",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("straight"),[mxConstants.STYLE_EDGE],[null],null,n),this.styleChange(e,mxResources.get("entityRelation"),[mxConstants.STYLE_EDGE],["entityRelationEdgeStyle"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("horizontal"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","horizontal"],null,n),this.styleChange(e,mxResources.get("vertical"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","vertical"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("manual"),[mxConstants.STYLE_EDGE],["segmentEdgeStyle"],null,n),this.styleChange(e,mxResources.get("automatic"),[mxConstants.STYLE_EDGE],["orthogonalEdgeStyle"],null,n)}))),this.put("lineend",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_ENDARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("endFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_ENDSIZE,n)}))),this.put("linestart",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_STARTARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("startFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_STARTSIZE,n)}))),this.put("spacing",new Menu(mxUtils.bind(this,function(e,n){var t=this.editorUi.actions.get("shadow").enabled,a=this.get("line").enabled;(t||e.showDisabled)&&(this.promptChange(e,mxResources.get("top"),"(px)","0",mxConstants.STYLE_SPACING_TOP,n,t),this.promptChange(e,mxResources.get("right"),"(px)","0",mxConstants.STYLE_SPACING_RIGHT,n,t),this.promptChange(e,mxResources.get("bottom"),"(px)","0",mxConstants.STYLE_SPACING_BOTTOM,n,t),this.promptChange(e,mxResources.get("left"),"(px)","0",mxConstants.STYLE_SPACING_LEFT,n,t),e.addSeparator(n),this.promptChange(e,mxResources.get("global"),"(px)","0",mxConstants.STYLE_SPACING,n,t),this.promptChange(e,mxResources.get("perimeter"),"(px)","0",mxConstants.STYLE_PERIMETER_SPACING,n,t)),(a||e.showDisabled)&&(e.addSeparator(n),this.promptChange(e,mxResources.get("sourceSpacing"),"(px)","0",mxConstants.STYLE_SOURCE_PERIMETER_SPACING,n,a),this.promptChange(e,mxResources.get("targetSpacing"),"(px)","0",mxConstants.STYLE_TARGET_PERIMETER_SPACING,n,a))}))),this.put("format",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItem(e,"style",n)}))),this.put("text",new Menu(mxUtils.bind(this,function(e,n){var t=this.get("text").enabled;e.addSeparator(n),this.addSubmenu("fontFamily",e,n),this.addSubmenu("fontSize",e,n),this.addMenuItems(e,["-","bold","italic","underline","-"],n),this.addSubmenu("alignment",e,n),this.addMenuItem(e,"wordWrap",n),e.addSeparator(n),this.promptChange(e,mxResources.get("textOpacity"),"(%)","100",mxConstants.STYLE_TEXT_OPACITY,n,t),e.addItem(mxResources.get("hide"),null,function(){i.toggleCellStyles(mxConstants.STYLE_NOLABEL,!1)},n,null,t)}))),this.put("alignment",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("leftAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("rightAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("topAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottomAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM],null,n),e.addSeparator(n),this.addSubmenu("position",e,n),this.addSubmenu("spacing",e,n),e.addSeparator(n);var t=this.get("text").enabled;e.addItem(mxResources.get("vertical"),null,function(){i.toggleCellStyles(mxConstants.STYLE_HORIZONTAL,!0)},n,null,t)}))),this.put("position",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("left"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_RIGHT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("right"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_LEFT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("top"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP,mxConstants.ALIGN_BOTTOM],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottom"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_TOP],null,n)}))),this.put("direction",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("flipH"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)},n),e.addItem(mxResources.get("flipV"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},n),this.addMenuItems(e,["-","tilt","rotation"],n)}))),this.put("align",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("leftAlign"),null,function(){i.alignCells(mxConstants.ALIGN_LEFT)},n),e.addItem(mxResources.get("center"),null,function(){i.alignCells(mxConstants.ALIGN_CENTER)},n),e.addItem(mxResources.get("rightAlign"),null,function(){i.alignCells(mxConstants.ALIGN_RIGHT)},n),e.addSeparator(n),e.addItem(mxResources.get("topAlign"),null,function(){i.alignCells(mxConstants.ALIGN_TOP)},n),e.addItem(mxResources.get("middle"),null,function(){i.alignCells(mxConstants.ALIGN_MIDDLE)},n),e.addItem(mxResources.get("bottomAlign"),null,function(){i.alignCells(mxConstants.ALIGN_BOTTOM)},n)}))),this.put("layout",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(e,!0,!0)}),n),e.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(e,!0,!0)}),n)}))),this.put("navigation",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["home","-","exitGroup","enterGroup","-","expand","collapse"],n)}))),this.put("arrange",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["toFront","toBack","-"],n),this.addSubmenu("layout",e,n),e.addSeparator(n),this.addMenuItems(e,["-","group","ungroup","removeFromGroup"],n)}))),this.put("view",new Menu(mxUtils.bind(this,function(n,t){this.addMenuItems(n,["actualSize"],t),n.addSeparator();for(var e=[.25,.5,.75,1,2,4],a=0;a<e.length;a++)!function(e){n.addItem(100*e+"%",null,function(){i.zoomTo(e)},t)}(e[a]);this.addMenuItems(n,["-","zoomIn","zoomOut","-","fitWindow","customZoom","-","fitPage","fitPageWidth"],t)}))),this.put("file",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["new","open","-","save","saveAs","publish","-","variable","-","import","export","-","editFile","description","-","print"],n)}))),this.put("edit",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["undo","redo","-","cut","copy","paste","delete","-","duplicate","-","selectVertices","selectEdges","selectAll"])}))),this.put("help",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["help","-","about"])})))},Menus.prototype.put=function(e,n){this.menus[e]=n},Menus.prototype.get=function(e){return this.menus[e]},Menus.prototype.addSubmenu=function(e,n,t){var a=this.get(e).enabled;if(n.showDisabled||a){var i=n.addItem(mxResources.get(e),null,null,t,null,a);this.addMenu(e,n,i)}},Menus.prototype.addMenu=function(e,n,t){var a=this.get(e);null!=a&&(n.showDisabled||a.enabled)&&this.get(e).execute(n,t)},Menus.prototype.styleChange=function(e,n,t,a,i,s){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph;e.getModel().beginUpdate();try{for(var n=0;n<t.length;n++)e.setCellStyles(t[n],a[n])}finally{e.getModel().endUpdate()}}),s,i)},Menus.prototype.promptChange=function(e,n,a,i,s,t,o){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph,n=i,t=e.getView().getState(e.getSelectionCell());null!=t&&(n=t.style[s]||n),null!=(n=mxUtils.prompt(mxResources.get("enterValue")+(0<a.length?" "+a:""),n))&&0<n.length&&e.setCellStyles(s,n)}),t,null,o)},Menus.prototype.addMenuItem=function(e,n,t){var a=this.editorUi.actions.get(n);if(null==a||!e.showDisabled&&!a.enabled)return null;var i=e.addItem(a.label,null,a.funct,t,null,a.enabled);return a.toggleAction&&a.isSelected()&&this.addCheckmark(i),this.addShortcut(i,a),i},Menus.prototype.addShortcut=function(e,n){if(null!=n.shortcut){var t=e.firstChild.nextSibling.nextSibling,a=document.createElement("span");a.style.color="gray",mxUtils.write(a,n.shortcut),t.appendChild(a)}},Menus.prototype.addCheckmark=function(e){var n=e.firstChild.nextSibling;n.style.backgroundImage="url("+IMAGE_PATH+"/checkmark.gif)",n.style.backgroundRepeat="no-repeat",n.style.backgroundPosition="2px 50%"},Menus.prototype.addMenuItems=function(e,n,t){for(var a=0;a<n.length;a++)"-"==n[a]?e.addSeparator(t):this.addMenuItem(e,n[a],t)},Menus.prototype.createPopupMenu=function(e,n,t){var a=this.editorUi.editor.graph;if(e.smartSeparators=!0,a.isSelectionEmpty()?this.addMenuItems(e,["undo","redo","-","paste","-"]):(this.addMenuItems(e,["delete","-","cut","copy","-","duplicate"]),1==a.getSelectionCount()&&a.getModel().isEdge(a.getSelectionCell())&&this.addMenuItems(e,["setAsDefaultEdge"]),e.addSeparator()),0<a.getSelectionCount()){if(this.addMenuItems(e,["toFront","toBack","-"]),a.getModel().isEdge(a.getSelectionCell())){var i=!1;if(null!=(n=a.getSelectionCell())&&a.getModel().isEdge(n)){var s=a.selectionCellsHandler.getHandler(n);if(s instanceof mxEdgeHandler&&null!=s.bends&&2<s.bends.length){var o=s.getHandleForEvent(new mxMouseEvent(t)),r=this.editorUi.actions.get("removeWaypoint");r.handler=s,i=0<(r.index=o)&&o<s.bends.length}}this.addMenuItems(e,["-",i?"removeWaypoint":"addWaypoint"])}else 1<a.getSelectionCount()&&(e.addSeparator(),this.addMenuItems(e,["group"]));if(e.addSeparator(),1==a.getSelectionCount())null!=a.getLinkForCell(a.getSelectionCell())&&this.addMenuItems(e,["openLink"])}else this.addMenuItems(e,["-","selectVertices","selectEdges","-","selectAll"])},Menus.prototype.createMenubar=function(e){var n=new Menubar(this.editorUi,e),t=[];t=CRUD_PERMISSIONS.canEdit?["file","edit","view","format","text","arrange","help"]:["file","view","help"];for(var a=0;a<t.length;a++)n.addMenu(mxResources.get(t[a]),this.get(t[a]).funct);return n},Menubar.prototype.hideMenu=function(){null!=this.currentMenu&&this.currentMenu.hideMenu()},Menubar.prototype.addMenu=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geItem",mxUtils.write(t,e),this.addMenuHandler(t,n),this.container.appendChild(t),t},Menubar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Menubar.prototype.addMenuHandler=function(i,s){if(null!=s){var o=!0,n=mxUtils.bind(this,function(e){if(o&&null==i.enabled||i.enabled){this.editorUi.editor.graph.panningHandler.hideMenu();var n=new mxPopupMenu(s);n.div.className+=" geMenubarMenu",n.smartSeparators=!0,n.showDisabled=!0,n.autoExpand=!0,n.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(n,arguments),n.destroy(),this.currentMenu=null,this.currentElt=null});var t=this.getOffset(i).left,a=this.getOffset(i).top+i.offsetHeight;n.popup(t,a,null,e),this.currentMenu=n,this.currentElt=i}o=!0,mxEvent.consume(e)});mxEvent.addListener(i,"mousemove",mxUtils.bind(this,function(e){null!=this.currentMenu&&this.currentElt!=i&&(this.hideMenu(),n(e))})),mxEvent.addListener(i,"mousedown",mxUtils.bind(this,function(){o=this.currentElt!=i})),mxEvent.addListener(i,"click",n)}},mxUtils.extend(Menu,mxEventSource),Menu.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Menu.prototype.execute=function(e,n){this.funct(e,n)},Toolbar.prototype.init=function(){CRUD_PERMISSIONS.canEdit?this.addItems(["save","publish","-","print","undo","redo","-","copy","cut","paste","delete","-","duplicate","-","actualSize","zoomIn","zoomOut","-"]):this.addItems(["print","actualSize","zoomIn","zoomOut","-"])},Toolbar.prototype.hideMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.currentMenu.destroy(),this.currentMenu=null)},Toolbar.prototype.addMenu=function(e,n,t,a){var i=this.editorUi.menus.get(a),s=this.addMenuFunction(e,n,t,i.funct);return i.addListener("stateChanged",function(){s.setEnabled(i.enabled)}),s},Toolbar.prototype.addMenuFunction=function(e,n,t,a){var i=t?this.createLabel(e):this.createButton(e);return this.initElement(i,n),this.addMenuHandler(i,t,a),this.container.appendChild(i),i},Toolbar.prototype.addSeparator=function(){var e=document.createElement("div");return e.className="geSeparator",this.container.appendChild(e),e},Toolbar.prototype.addItems=function(e){for(var n=0;n<e.length;n++){var t=e[n];"-"==t?this.addSeparator():this.addItem("geSprite-"+t.toLowerCase(),t)}},Toolbar.prototype.addItem=function(e,n){var t=this.editorUi.actions.get(n),a=null;return null!=t&&((a=this.addButton(e,t.label,t.funct)).setEnabled(t.enabled),t.addListener("stateChanged",function(){a.setEnabled(t.enabled)})),a},Toolbar.prototype.addButton=function(e,n,t){var a=this.createButton(e);return this.initElement(a,n),this.addClickHandler(a,t),this.container.appendChild(a),a},Toolbar.prototype.addSelectionHandler=function(t){var a=this.editorUi.editor.graph,e=function(){for(var e=!a.isSelectionEmpty(),n=0;n<t.length;n++)t[n].setEnabled(e)};a.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.addEdgeSelectionHandler=function(a){var i=this.editorUi.editor.graph,e=function(){var e=!1;if(!i.isSelectionEmpty())for(var n=i.getSelectionCells(),t=0;t<n.length;t++)if(i.getModel().isEdge(n[t])){e=!0;break}for(t=0;t<a.length;t++)a[t].setEnabled(e)};i.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.initElement=function(e,n){e.setAttribute("tabindex","0"),null!=n&&e.setAttribute("title",n),this.addEnabledState(e)},Toolbar.prototype.addEnabledState=function(n){var t=n.className;n.setEnabled=function(e){n.enabled=e,n.className=e?t:t+" geDisabled"},n.setEnabled(!0)},Toolbar.prototype.addClickHandler=function(n,t){null!=t&&mxEvent.addListener(n,"click",function(e){n.enabled&&t(e),mxEvent.consume(e)})},Toolbar.prototype.createButton=function(e){var n=document.createElement("a");n.setAttribute("href","javascript:void(0);"),n.className="geButton";var t=document.createElement("div");return t.className="geSprite "+e,n.appendChild(t),n},Toolbar.prototype.createLabel=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geLabel",mxUtils.write(t,e),t},Toolbar.prototype.addMenuHandler=function(n,t,a,i){if(null!=a){var s=this.editorUi.editor.graph,o=null;mxEvent.addListener(n,"click",mxUtils.bind(this,function(e){(null==n.enabled||n.enabled)&&(s.panningHandler.hideMenu(),(o=new mxPopupMenu(a)).div.className+=" geToolbarMenu",o.showDisabled=i,o.labels=t,o.autoExpand=!0,o.popup(n.offsetLeft,n.offsetTop+n.offsetHeight+34,null,e),this.currentMenu=o),mxEvent.consume(e)}))}},Dialog.prototype.close=function(){null!=this.onDialogClose&&(this.onDialogClose(),this.onDialogClose=null),this.container.parentNode.removeChild(this.container),this.bg.parentNode.removeChild(this.bg)},angular.module("motion").run(["$templateCache",function(e){"use strict";e.put("app/auth/services/hotdesk/dialog.html",'<md-dialog aria-label="Telephone">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="LOGIN.TELEPHONES">Telephones</span>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-select ng-model="vm.name" placeholder="Select a telephone">\n        <md-option value="{{telephone.name}}" ng-repeat="telephone in vm.telephones.rows">{{telephone.fullname}}</md-option>\n      </md-select>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.closeDialog(vm.name)" class="send-button md-accent md-raised" aria-label="call" ng-disabled="!vm.name">\n        <span translate="LOGIN.SELECT">SELECT</span>\n      </md-button>\n      \x3c!-- <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n                <span translate="LOGIN.CANCEL">Cancel</span>\n            </md-button> --\x3e\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/dialogs/advanced-search/dialog.html",'<md-dialog class="advanced-search-dialog" aria-label="Advanced search" flex="70" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="advanced-search-dialog-header" ng-class="{{ \'vm.toolbarColor\' }} + \'-bg\'">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="DASHBOARDS.ADVANCED_SEARCH"></span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.minimize()">\n            <md-icon class="no-margin" md-font-icon="icon-window-minimize" aria-label="Minimize dialog"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.close()">\n            <md-icon class="no-margin" md-font-icon="icon-window-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <ms-advanced-search options="vm.searchOptions" clear-filter="vm.clearConditions()"></ms-advanced-search>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button class="md-primary md-raised" aria-label="Clear" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.CLEAR" translate-attr-aria-label="DASHBOARDS.CLEAR" ng-click="vm.clearConditions()"></md-button>\n      <md-button class="md-primary md-accent md-raised" aria-label="Apply" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.APPLY" translate-attr-aria-label="DASHBOARDS.APPLY" ng-click="vm.applyFilter()"></md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-advanced-search/ms-advanced-search.html",'<div layout="column" class="advanced-search-container" flex>\n  <div layout-margin>\n    <md-radio-group ng-model="vm.options.matchType" class="md-primary" layout="row">\n      <md-radio-button value="$and" class="md-primary">{{ \'DASHBOARDS.MEET_ALL_CONDITIONS\' | translate }}\n      </md-radio-button>\n      <md-radio-button value="$or">{{ \'DASHBOARDS.MEET_ANY_CONDITIONS\' | translate }}</md-radio-button>\n    </md-radio-group>\n  </div>\n\n  \x3c!-- ACTIVE CONDITIONS --\x3e\n  <div layout="row" ng-if="vm.options.conditions.length > 0" class="advanced-search-conditions">\n    <md-list>\n      <md-list-item>\n        <md-chips ng-model="vm.options.conditions" class="advanced-search-chips" readonly="true" md-removable="true" md-on-remove="vm.removeCondition()">\n          <md-chip-template ms-chip-color="{{ $chip.style }}">\n            <md-menu md-offset="50 0" ng-class="{\'no-click\': vm.pendingCondition}">\n              <span>\n                <p class="filter-text">{{ $chip.name }}</p>\n                <em ng-show="$chip.operator" class="text-lowercase">{{ $chip.operator }}</em>\n                <strong>{{ $chip.displayValue }}</strong>\n                <em ng-show="$chip.displayEndValue" class="text-lowercase">{{ \'DASHBOARDS.AND\' | translate }}</em>\n                <strong>{{ $chip.displayEndValue }}</strong>\n              </span>\n              <md-menu-content width=2 class="md-dense">\n                <md-menu-item ng-hide="$chip.disabled">\n                  <md-button ng-click="vm.editCondition($chip)">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.setConditionStatus($chip)">\n                    {{ $chip.disabled ? \'Enable\' : \'Disable\' }}\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </md-chip-template>\n          <button type="button" md-chip-remove class="md-primary remove-filter">\n            <md-icon md-font-icon="icon-cancel" aria-label="Remove Filter"></md-icon>\n          </button>\n        </md-chips>\n      </md-list-item>\n    </md-list>\n  </div>\n\n  \x3c!-- FILTERS --\x3e\n  <div layout="row">\n    <div layout="row" class="advanced-search-bar" layout-margin flex>\n      \x3c!-- FIELD --\x3e\n      <md-input-container flex="35">\n        <md-icon md-font-icon="icon-filter-variant"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedField" ng-change="vm.onFieldChange()" placeholder="{{ \'DASHBOARDS.SELECT_FIELD\' | translate }}" aria-label="Field">\n          <md-option ng-value="field" ng-repeat="field in vm.options.fields">{{ field.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- OPERATOR --\x3e\n      <md-input-container flex="30">\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedOperator" ng-change="vm.onOperatorChange(oldValue)" ng-focus="oldValue=vm.selectedOperator" md-selected-text="vm.selectedOperator ? (\'DASHBOARDS.\' + vm.selectedOperator.translate | translate) : (\'DASHBOARDS.SELECT_OPERATOR\' | translate)" ng-disabled="!vm.selectedField" aria-label="Operator">\n          <md-option ng-value="operator" ng-repeat="operator in vm.availableOperators" ng-selected="vm.autoSelectOperator">\n            <div layout="row" class="operators-list">\n              <span class="operator-symbol">\n                {{ operator.symbol }}\n              </span>\n              <span>\n                {{ \'DASHBOARDS.\' + operator.translate | translate }}\n              </span>\n            </div>\n          </md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TEXT INPUT --\x3e\n      <md-input-container ng-if="!vm.selectedField.type || vm.selectedField.type === \'text\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n      \x3c!-- NUMERIC INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'number\'" flex layout="row" layout-margin class="no-margin">\n        <md-input-container class="no-errors" flex>\n          <md-icon md-font-icon="icon-numeric"></md-icon>\n          <input type="number" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" min="0" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_VALUE\' : \'DASHBOARDS.VALUE\' | translate }}">\n        </md-input-container>\n        <md-input-container class="no-errors" ng-if="vm.selectedOperator.type === \'$between\'" ng-class="{\'md-input-invalid\': !vm.isValidRange}" flex>\n          <md-icon md-font-icon=" icon-numeric">\n          </md-icon>\n          <input class="md-input" type="number" aria-label="Value" ng-model="vm.endRangeValue" ng-change="vm.checkRange()" ng-disabled="!vm.value" min="vm.value" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.ENDING_VALUE\' | translate }}">\n          <div ng-if="!vm.isValidRange" class="md-input-message-animation md-input-messages-animation">\n            {{ (\'DASHBOARDS.VALUE_RANGE_CHECK\' | translate) + \' \' + vm.value }}\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- SELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'select\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- MULTISELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'multiselect\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" multiple ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- DATE INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'date\'" flex layout="row">\n        <mdp-date-picker mdp-open-on-click ng-model="vm.value" ng-change="vm.onValueChange()" mdp-max-date="vm.maxDateRange" mdp-placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_DATE\' : \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n        <mdp-date-picker mdp-open-on-click ng-if="vm.selectedOperator.type === \'$between\'" ng-change="vm.checkRange()" ng-model="vm.endRangeValue" mdp-min-date="vm.minDateRange" mdp-disabled="!vm.value" mdp-placeholder="{{ \'DASHBOARDS.ENDING_DATE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n      </div>\n      \x3c!-- AUTOCOMPLETE --\x3e\n      <div layout="row" layout-align="start start" ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type != \'$substring\'" class=" autocomplete-input" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-autocomplete md-selected-item="vm.value" md-selected-item-change="vm.onValueChange()" md-items="item in vm.getValues()" md-search-text="vm.searchText" md-item-text="item.displayValue" md-min-length="4" md-no-cache="true" md-floating-label="{{ \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n          <md-item-template>\n            <span md-highlight-text="vm.searchText" md-highlight-flags="i">{{item.displayValue}}</span>\n          </md-item-template>\n        </md-autocomplete>\n      </div>\n      <md-input-container ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type === \'$substring\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n    </div>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="!vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Add filter" ng-click="vm.addCondition()" translate-attr-aria-label="DASHBOARDS.ADD">\n      <md-icon md-font-icon="icon-plus"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini mt-20" ng-if="vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Update filter" ng-click="vm.updateCondition()" translate-attr-aria-label="DASHBOARDS.UPDATE">\n      <md-icon md-font-icon="icon-check"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="vm.pendingCondition" aria-label="Cancel filter update" ng-click="vm.cancelUpdateCondition()" translate-attr-aria-label="DASHBOARDS.CANCEL">\n      <md-icon md-font-icon="icon-close"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-1/template-1.html",'<div class="template-1">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-10/template-10.html",'<div class="template-10 p-16">\n  <div class="pb-16" layout="row" layout-align="space-between center">\n    <div class="info">\n      <div class="title secondary-text" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h2" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="media ml-16">\n      <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n    </div>\n  </div>\n\n  <div class="text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-2/template-2.html",'<div class="template-2">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="text p-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-3/template-3.html",'<div class="template-3 p-16 teal-bg white-fg" layout="row" layout-align="space-between">\n  <div layout="column" layout-align="space-between">\n    <div class="info">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h3 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="cta">\n      <md-button class="m-0">{{card.cta}}</md-button>\n    </div>\n  </div>\n\n  <div class="media pl-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-4/template-4.html",'<div class="template-4">\n  <div class="info white-fg ph-16 pv-24">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-5/template-5.html",'<div class="template-5 p-16" layout="row" layout-align="space-between start">\n  <div class="info">\n    <div class="title secondary-text" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="event h2" ng-if="card.event">\n      {{card.event}}\n    </div>\n  </div>\n\n  <div class="media ml-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-6/template-6.html",'<div class="template-6">\n  <div class="content pv-24 ph-16">\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="title h2" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text pt-8" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-7/template-7.html",'<div class="template-7" layout="row" layout-align="space-between">\n  <div class="info" layout="column" layout-align="space-between" layout-fill flex>\n    <div class="p-16">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h4 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n      <div class="text h4 pt-8" ng-if="card.text">\n        {{card.text}}\n      </div>\n    </div>\n\n    <div>\n      <md-divider></md-divider>\n      <div class="p-8" layout="row">\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-8/template-8.html",'<div class="template-8">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="buttons pt-16">\n      <md-button class="m-0">{{card.button1}}</md-button>\n      <md-button class="m-0 md-accent">{{card.button2}}</md-button>\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-9/template-9.html",'<div class="template-9">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n    </div>\n  </div>\n\n  <div class="text ph-16 pb-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="buttons m-8">\n    <md-button class="md-icon-button mr-16" aria-label="Favorite">\n      <md-icon md-font-icon="icon-heart-outline" class="s24"></md-icon>\n    </md-button>\n    <md-button class="md-icon-button" aria-label="Share">\n      <md-icon md-font-icon="icon-share" class="s24"></md-icon>\n    </md-button>\n  </div>\n\n</div>'),e.put("app/core/directives/ms-click-to-call/ms-click-to-call.html",'<section ng-if="type !== \'button\'">\n  <span ng-if="!showMenu()" privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n  <md-menu ng-if="showMenu()">\n    <a aria-label="Target" ng-click="$mdOpenMenu($event)">\n      <span ng-if="prefix" privacy="{{ privacy }}" ng-cloak>{{prefix}}-</span>\n      <span privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n    </a>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>\n<section ng-if="type === \'button\'">\n  <md-button ng-if="!showMenu()" ng-disabled="true" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" aria-label="NEW CALL">\n    <md-icon md-font-icon="icon-phone"></md-icon>\n  </md-button>\n  <md-menu ng-if="showMenu()">\n    <md-button class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" ng-click="$mdOpenMenu($event)" aria-label="NEW CALL">\n      <md-icon md-font-icon="icon-phone"></md-icon>\n    </md-button>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>'),e.put("app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html",'<div ng-cloak layout-gt-sm="row" layout="column">\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="query" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || vm.addDisabled}" ng-disabled="vm.readOnly || vm.addDisabled" ng-repeat="item in availableItems = (vm.options.items | filter: query) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, false)">\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-icon ng-hide="vm.readOnly && !vm.addDisabled" ng-class="{\'add-disabled\': vm.addDisabled}" md-font-icon="icon-arrow-right-bold" aria-label="swap">\n          </md-icon>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <span class="h4" flex>{{vm.options.labelAll || \'All Items\'}} ({{availableItems.length}})</span>\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" ng-class="{\'add-disabled\': vm.addDisabled}" ng-disabled="vm.addDisabled" md-font-icon="icon-chevron-double-right" aria-label="swap" ng-click="vm.transfer(vm.options.items, vm.options.selectedItems, -1, false)"></md-icon>\n    </div>\n  </div>\n\n  <div flex="10" layout="row" layout-align="center center">\n    <md-icon md-font-icon="icon-swap-horizontal" aria-label="swap"></md-icon>\n  </div>\n\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="selectedQuery" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || !item.isValid}" ng-disabled="vm.readOnly" ng-repeat="item in associatedItems = (vm.options.selectedItems | filter: selectedQuery) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, true)">\n          <md-icon ng-class="{\'hidden\': vm.readOnly || !item.isValid}" md-font-icon="icon-arrow-left-bold" aria-label="swap"></md-icon>\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" md-font-icon="icon-chevron-double-left" aria-label="swap" ng-click="vm.transfer(vm.options.selectedItems, vm.options.items, -1, true)"></md-icon>\n      <span class="h4 text-right" flex>{{vm.options.labelSelected || \'Selected Items\'}}\n        ({{associatedItems.length}})</span>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-font-family/ms-font-family.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-repeat="font in fonts" ng-value="font.value"><span ng-style="{\'font-family\': font.value}">{{font.option}}</span>\n  </md-option>\n</md-select>'),e.put("app/core/directives/ms-info-bar/ms-info-bar.html",'<div id="ms-info-bar" layout="row" layout-align="start center" flex>\n  <div id="ms-info-bar-message" ng-transclude flex></div>\n  <md-button id="ms-info-bar-close" class="md-icon-button" aria-label="Close" ng-click="removeInfoBar()">\n    <md-icon md-font-icon="icon-close s20"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-material-color-picker/ms-material-color-picker.html",'<md-menu md-position-mode="target-right target">\n\n  <div ng-click="$mdOpenMenu($event)">\n    <ms-color-picker-button>\n      <md-button aria-label="Row Color" md-menu-origin ng-click="$mdOpenMenu($event)" ng-class="vm.selectedColor.class">\n\n        <span ng-show="vm.selectedColor.palette">\n          {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n        </span>\n        <span ng-show="!vm.selectedColor.palette">\n          Select Color\n        </span>\n      </md-button>\n    </ms-color-picker-button>\n  </div>\n\n  <md-menu-content class="ms-material-color-picker-menu-content" layout-column>\n\n    <header ng-class="vm.selectedColor.class || \'md-accent-bg\'" class="md-whiteframe-4dp" layout="row" layout-align="space-between center">\n      <md-button md-prevent-menu-close ng-click="vm.activateHueSelection(false,false)" class="md-icon-button" ng-class="{\'hidden\':!vm.selectedPalette}" aria-label="Palette">\n        <md-icon md-font-icon="icon-arrow-left" class="s20"></md-icon>\n      </md-button>\n\n      <span ng-if="vm.selectedColor.palette">\n        {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n      </span>\n\n      <span ng-if="!vm.selectedColor.palette">\n        Select Color\n      </span>\n\n      <md-button class="remove-color-button md-icon-button" ng-click="vm.removeColor()" aria-label="Remove Color">\n        <md-icon md-font-icon="icon-delete" class="s20"></md-icon>\n      </md-button>\n    </header>\n\n    <div class="colors" ms-scroll>\n      <div ng-show="!vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+palette+\'-500-bg\'" ng-repeat="(palette, hues) in vm.palettes" ng-click="vm.activateHueSelection(palette,hues)" layout="row" layout-align="start end" md-prevent-menu-close md-ink-ripple>\n          <span class="label">\n            {{palette}}\n          </span>\n        </div>\n      </div>\n\n      <div ng-show="vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+vm.selectedPalette+\'-\'+hue+\'-bg\'" ng-repeat="(hue, values) in vm.selectedHues" ng-click="vm.selectColor(vm.selectedPalette,hue)" layout="row" layout-align="start end" md-ink-ripple>\n          <span class="label">\n            {{hue}}\n          </span>\n          <i ng-if="vm.selectedPalette == vm.selectedColor.palette && hue == vm.selectedColor.hue" class="s16 icon-check">\n          </i>\n        </div>\n      </div>\n\n    </div>\n\n  </md-menu-content>\n</md-menu>'),e.put("app/core/directives/ms-navigation/templates/horizontal.html",'<div class="navigation-toggle" hide-gt-sm>\n  <md-button class="md-icon-button" ng-click="vm.toggleHorizontalMobileMenu()" aria-label="Toggle Mobile Navigation">\n    <md-icon md-font-icon="icon-menu"></md-icon>\n  </md-button>\n</div>\n\n<ul class="horizontal">\n  <li ng-repeat="node in vm.navigation" ms-navigation-horizontal-node="node" ng-class="{\'has-children\': vm.hasChildren}" ng-include="\'navigation-horizontal-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested horizontal navigation template --\x3e\n<script type="text/ng-template" id="navigation-horizontal-nested.html">\n\n  <div ms-navigation-horizontal-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-horizontal-button" ng-if="!node.uisref && node.title"\n             ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-horizontal-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg"\n           ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}"\n           ng-if="node.uisref && node.title">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-horizontal-node="node"\n            ng-class="{\'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-horizontal-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("app/core/directives/ms-navigation/templates/vertical.html",'<ul>\n  <li ng-repeat="node in vm.navigation" ms-navigation-node="node" ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}" ng-include="\'navigation-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested navigation template --\x3e\n<script type="text/ng-template" id="navigation-nested.html">\n\n  <div id="{{ node.id }}" ms-navigation-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-button" ng-if="!node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg" ng-if="node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-node="node"\n            ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-dialpad.html",'\x3c!-- Dialpad --\x3e\n<md-content ng-if="vm_pb.showDialpad" class="num-pad" layout="column">\n  <section layout="row" layout-align="start center">\n    <span><img class="num-pad-logo" layout-padding src="/api/settings/1/logo" alt="logo" /></span>\n    <span class="md-subhead">Dialpad</span>\n    <div layout="row" layout-align="end center" flex>\n      <md-button class="md-icon-button" ng-click="vm_pb.closeDialpad()">\n        <md-icon md-font-icon="icon-close"></md-icon>\n      </md-button>\n    </div>\n  </section>\n  <md-divider></md-divider>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 1, l: []}, {n: 2, l: [\'a\', \'b\', \'c\']}, {n: 3, l: [\'d\', \'e\', \'f\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 4, l: [\'g\', \'h\', \'i\']}, {n: 5, l: [\'j\', \'k\', \'l\']}, {n: 6, l: [\'m\', \'n\', \'o\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 7, l: [\'p\', \'q\', \'r\', \'s\']}, {n: 8, l: [\'t\', \'u\', \'v\']}, {n: 9, l: [\'w\', \'x\', \'y\', \'z\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: \'*\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: 0, l: [\'+\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: \'#\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n  </section>\n</md-content>\n\x3c!-- Dialpad --\x3e\n\n\x3c!-- Input&Media Area --\x3e\n<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="center center">\n    \x3c!-- START Ringing Tone--\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Ringing" ng-click="vm_pb.conf.ringingMute = !vm_pb.conf.ringingMute; vm_pb.initDevice(\'ringing\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.ringingMute ? \'icon-bell-off\' : \'icon-bell-ring\'}}" class="icon s14" ng-class="vm_pb.conf.ringingMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.RINGING">Ringing</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Ringing Tone --\x3e\n\n    \x3c!-- START Speaker --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Speaker" ng-click="vm_pb.conf.speakerMute = !vm_pb.conf.speakerMute; vm_pb.initDevice(\'speaker\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.speakerMute ? \'icon-volume-off\' : \'icon-volume\'}}" class="icon s14" ng-class="vm_pb.conf.speakerMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.SPEAKER">Speaker</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Speaker --\x3e\n\n    \x3c!-- START Microphone --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Microphone" ng-click="vm_pb.conf.microphoneMute = !vm_pb.conf.microphoneMute; vm_pb.initDevice(\'microphone\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.microphoneMute ? \'icon-microphone-off\' : \'icon-microphone\'}}" class="icon s14" ng-class="vm_pb.conf.microphoneMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.MICROPHONE">Microphone</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Microphone --\x3e\n\n    \x3c!-- START Registered --\x3e\n    <span>\n      <span class="quantity-indicator md-red-500-bg" ng-class="vm_pb.registered ? \'md-green-500-bg\' : \'md-red-500-bg\'"></span>\n      <md-tooltip><span>{{vm_pb.conf.license ? (vm_pb.registered ? \'TOOLBAR.REGISTERED\' : \'TOOLBAR.NOT_REGISTERED\') : \'TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD\' | translate}}\n          <timer ng-if="vm_pb.registered"></timer>\n        </span>\n      </md-tooltip>\n    </span>\n    \x3c!-- END Registered --\x3e\n  </div>\n  <div layout="column" layout-align="center start">\n    <div layout="row" layout-align="start center">\n      \x3c!-- START Target --\x3e\n      <angucomplete-alt id="ms-target-wrap" pause="10" local-data="vm_pb.calls" search-fields="target" title-field="target" minlength="0" input-class="input-number" disable-input="!vm_pb.registered" match-class="highlight" template-url="assets/ms-phonebar/ms-phonebar-input.html" input-changed="vm_pb.targetChanged" selected-object="vm_pb.targetSelected" clear-selected="true" ng-keypress="vm_pb.typeWrapper($event)" focus-first="true" disable-autocomplete="vm_pb.currentUser.privacyEnabled" />\n      \x3c!-- END Target --\x3e\n\n      \x3c!-- Auto Answer --\x3e\n      <div ng-if="vm_pb.conf.autoAnswer" class="red-fg" style="padding-left: 10px;">\n        <span class="font-size-20">A<span class="font-size-16">A</span></span>\n      </div>\n      \x3c!-- Auto Answer --\x3e\n\n      <md-button class="md-fab md-mini white-bg width-30 height-30" aria-label="Dialpad" ng-click="vm_pb.toggleDialpad()" ng-disabled="!vm_pb.registered">\n        <md-icon md-font-icon="icon-apps" class="icon grey-fg s16"></md-icon>\n      </md-button>\n      <md-button ng-if="vm_pb.target" class="md-fab md-mini white-bg width-25 height-25" aria-label="Call" style="margin-left: 0px;" ng-click="vm_pb.call()">\n        <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n\x3c!-- Input&Media Area --\x3e\n\n\x3c!-- START 3WC --\x3e\n<md-button ng-if="vm_pb.canGoInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="3Way" ng-click="vm_pb.start3WayConf();  $event.stopPropagation();">\n  <md-icon md-font-icon="icon-account-multiple-plus" class="icon orange-fg s14"></md-icon>\n  <md-tooltip><span translate="TOOLBAR.CONFERENCE">Conference</span></md-tooltip>\n</md-button>\n\x3c!-- END 3Way --\x3e\n\n\n<div class="toolbar-separator"></div>\n\n\x3c!-- Sessions Area --\x3e\n<div class="sessions" layout="row" layout-align="start center" flex>\n  <div layout="row" layout-align="center center" ng-if="!vm_pb.conf.license">\n    <md-icon md-font-icon="icon-account-alert" class="icon s36 red-fg"></md-icon>\n    <span layout-margin translate="TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"></span>\n  </div>\n\n  <div id="{{\'div_session_\'+session.id.substr(0,32)}}" ng-repeat="session in vm_pb.sessions" class="session" layout="row" ng-click="(vm_pb.sessions.length > 1) && vm_pb.selectSession(session)">\n    <md-button ng-if="vm_pb.conf.recording && session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Record" ng-click="vm_pb.record(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-radiobox-marked" class="icon s14" ng-class="session.monitor ? \'red-fg\' : \'grey-fg\'"></md-icon>\n    </md-button>\n    <div layout="column" layout-align="center start">\n      <span class="session-info">\n        <span ng-if="session.user == session.name" privacy ng-cloak>{{session.user}}</span>\n        <span ng-if="session.user != session.name" privacy ng-cloak>{{session.name}}</span> <span ng-if="session.user != session.name" privacy ng-cloak>{{session.user}}</span>\n      </span>\n      <span class="session-info" layout="row" layout="start center">\n        <timer></timer>\n      </span>\n    </div>\n\n    \x3c!-- START Answer --\x3e\n    <md-button ng-if="session.incoming && !session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Anser" ng-click="vm_pb.answer(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Answer --\x3e\n\n    \x3c!-- START Hangup --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Terminate" ng-click="vm_pb.terminate(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-hangup" class="icon red-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hangup --\x3e\n\n    \x3c!-- START Hold/Unhold --\x3e\n    <md-button ng-if="session.confirmed && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Hold" ng-click="(session.localHold ? vm_pb.unhold(session) : vm_pb.hold(session)); $event.stopPropagation();">\n      <md-icon md-font-icon="{{session.localHold ? \'icon-play\' : \'icon-pause\'}}" class="icon grey-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hold/Unhold --\x3e\n\n    \x3c!-- START Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length == 1 && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer" ng-click="vm_pb.refer(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END transfer --\x3e\n\n    \x3c!-- START Attended Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length>1" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer Attended" ng-click="vm_pb.referAttended(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Attended Transfer --\x3e\n  </div>\n</div>\n\x3c!-- Sessions Area --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-input.html",'<div class="angucomplete-holder" ng-class="{\'angucomplete-dropdown-visible\': showDropdown}">\n  <input id="ms-target" ng-model="searchStr" ng-disabled="disableInput" type="text" placeholder="{{placeholder}}" ng-focus="onFocusHandler()" class="{{inputClass}}" ng-focus="resetHideResults()" ng-blur="hideResults($event)" autocapitalize="off" autocorrect="off" autocomplete="off" ng-change="inputChangeHandler(searchStr)" />\n  <div class="angucomplete-dropdown" ng-show="showDropdown && !(!searching && (!results || results.length == 0))">\n    <div class="angucomplete-row" ng-repeat="result in results" ng-click="selectResult(result)" ng-mouseenter="hoverRow($index)" ng-class="{\'angucomplete-selected-row\': $index == currentIndex}">\n      <div layout="row" layout-align="start center">\n        <md-icon md-font-icon="{{result.originalObject.inbound ? \'icon-arrow-bottom-left\' : \'icon-arrow-top-right\'}}" class="icon no-margin s22"></md-icon>\n        <span style="margin-left: 8px;">({{result.originalObject.time}}) - <span class="angucomplete-title" ng-if="matchClass" ng-bind-html="result.title" privacy ng-cloak></span></span>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("assets/ms-phonebar/ms-phonebar.html",'<div layout="row" layout-align="start center" flex>\n  \x3c!-- Audio stream --\x3e\n  <audio id="local-audio" autoplay hidden=true></audio>\n  <audio id="remote-audio" autoplay hidden=true></audio>\n  \x3c!-- Audio stream --\x3e\n\n  \x3c!-- WebRtc PhoneBar --\x3e\n  <div class="phonebar-container" ng-include="\'assets/ms-phonebar/ms-phonebar-dialpad.html\'" layout="row" layout-align="start center" flex></div>\n  \x3c!-- WebRtc PhoneBar --\x3e\n</div>'),e.put("assets/ms-phonebar/prefix/dialog.html",'<md-dialog aria-label="Prefix">\n  <form ng-cloak ng-keypress="vm.keyPress($event)">\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.PREFIXES">Prefixes</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog(-1)">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-radio-group ng-model="vm.prefix">\n        <md-radio-button ng-repeat="prefix in vm.prefixes.rows" value="{{prefix.prefix}}" class="md-primary">{{prefix.name}}</md-radio-button>\n        <md-radio-button ng-if="!vm.required" ng-value="null" class="md-primary">no prefix</md-radio-button>\n      </md-radio-group>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.call()" class="send-button md-accent md-raised" aria-label="call" md-autofocus ng-disabled="!vm.prefix && vm.required">\n        <span translate="TOOLBAR.CALL">CALL</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog(-1)" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/record/dialog.html",'<md-dialog aria-label="Recording" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.RECORDING">Recording</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding">\n            <md-icon class="no-margin" md-font-icon="icon-plus" aria-label="Add" ng-click="vm.addRecording()"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-table-container>\n      <table md-table layout-padding>\n        <thead md-head>\n          <tr md-row>\n            <th md-column><span translate="TOOLBAR.FILENAME">File name</span></th>\n            <th md-column><span translate="TOOLBAR.STATUS">Status</span></th>\n            <th md-column><span translate="TOOLBAR.ACTIONS">Actions</span></th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm.session.monitors.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="TOOLBAR.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="monitor in vm.session.monitors">\n            <td md-cell>{{monitor.filename}}</td>\n            <td md-cell class="no-padding">\n              <md-icon md-font-icon="icon-radiobox-marked" class="icon s16" ng-class="(monitor.status == \'rec\') ? \'red-fg ms-blink\' : \'grey-fg\'"></md-icon>\n            </td>\n            <td md-cell class="no-padding">\n              <md-button class="md-fab md-mini white-bg width-35 height-35 margin-5" aria-label="Record" ng-click="(monitor.status == \'rec\') ? vm.stop(monitor) : vm.start(monitor)">\n'+"                <md-icon md-font-icon=\"{{monitor.status == 'rec' ? 'icon-stop' : 'icon-play'}}\" class=\"icon s16\" ng-class=\"monitor.status == 'rec' ? 'grey-fg' : 'red-fg'\"></md-icon>\n              </md-button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n  </form>\n</md-dialog>"),e.put("assets/ms-phonebar/referAttended/dialog.html",'<md-dialog aria-label="Transfer">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.ATTENDED_TRANSFER">Transfer</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <label translate="TOOLBAR.TARGET">Target</label>\n      <md-input-container class="md-block">\n        <md-select ng-model="vm.target">\n          <md-option ng-repeat="session in vm.sessions" ng-value="session.user">\n            {{ session.name }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.transfer()" class="send-button md-accent md-raised" aria-label="transfer" ng-disabled="!vm.target && !vm.sessionId">\n        <span translate="TOOLBAR.TRANSFER">TRANSFER</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/settings/settings.html",'<md-dialog class="md-phonebar-dialog" aria-label="{{vm.name}}">\n  <form name="settingsForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="TOOLBAR.SETTINGS">Settings</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content class="no-padding" ms-scroll>\n      <md-tabs md-no-pagination md-stretch-tabs="always">\n        <md-tab label="{{ \'TOOLBAR.PROFILE\' | translate}}">\n          <md-content layout-padding layout="column">\n            <span><span translate="TOOLBAR.FULLNAME">Fullname</span>: {{vm.conf.fullname}}</span>\n            <span><span translate="TOOLBAR.NAME">Name</span>: {{vm.conf.name}}</span>\n            <span><span translate="TOOLBAR.INTERNAL">Internal</span>: {{vm.conf.internal}}</span>\n            <span><span translate="TOOLBAR.BROWSER">Browser</span>: {{vm.conf.browserName}} {{vm.conf.browserVersion}}</span>\n            <span><span translate="TOOLBAR.OS">OS</span>: {{vm.conf.osName}} {{vm.conf.osVersion}}</span>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.SERVICES\' | translate}}">\n          <md-content layout-padding>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.conf.autoAnswer" aria-label="Auto Answer">\n                <span translate="TOOLBAR.AUTOANSWER">Auto Answer</span>\n                <span>{{ vm.conf.autoAnswerDelay }} [s]</span>\n              </md-switch>\n            </md-input-container>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.AUDIO\' | translate}}">\n          <md-content layout-padding>\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.RINGINGDEVICE">Ringing Device</label>\n                <md-select name="ringingDevice" ng-model="vm.conf.ringingId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'ringingDevice\'].$error" ng-show="settingsForm[\'ringingDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.ringingMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.ringingVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.SPEAKERDEVICE">Speaker Device</label>\n                <md-select name="speakerDevice" ng-model="vm.conf.speakerId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'speakerDevice\'].$error" ng-show="settingsForm[\'speakerDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between cetner">\n                <md-switch ng-model="vm.conf.speakerMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.speakerVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audioinput\' }).length">\n                <label translate="TOOLBAR.MICROPHONEDEVICE">Microphone Device</label>\n                <md-select name="microphoneDevice" ng-model="vm.conf.microphoneId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audioinput\' }">{{ device.label || (\'Microphone \' + ($index + 1))}}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'microphoneDevice\'].$error" ng-show="settingsForm[\'microphoneDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.microphoneMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n              </div>\n            </div>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.REQUIREMENTS\' | translate}}">\n          <md-content layout-padding>\n            <md-list>\n              <md-list-item>\n                <h3 translate="TOOLBAR.LICENSE">License</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.license ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.license ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.BROWSER_COMPATIBILITY">Browser Compatibility</h3>\n                <md-icon class="md-secondary" ng-class="vm.isCompatibleBrowser() ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.isCompatibleBrowser() ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.HTTPS">HTTPS</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.protocol === \'https\' ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.protocol === \'https\' ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.WEBRTCSUPPORT">WebRTC Support</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.isWebRTCSupported ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.isWebRTCSupported ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.MICROPHONE">Microphone</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasMicrophone ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasMicrophone ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.SPEAKER">Speaker</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasSpeakers ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasSpeakers ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n            </md-list>\n          </md-content>\n        </md-tab>\n      </md-tabs>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSettings()" class="send-button md-accent md-raised" ng-disabled="settingsForm.$invalid || settingsForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-quick-filter/ms-quick-filter.html",'<div ng-cloak layout="row" class="quick-filter-container" flex>\n  <div ng-repeat="filter in vm.filters" ng-if="filter.ngIf ? $eval(\'vm.query.\' + filter.ngIf) : true" layout="column" class="padding-horizontal-16">\n    <span class="font-size-10" translate="{{ filter.label }}" />\n    <md-select ng-if="filter.type === \'select\'" class="font-size-12 no-margin" ng-model="vm.query[filter.key]" ng-change="vm.search()" aria-label="Filter {{ filter.name }}">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id">\n        {{ option.name }}</md-option>\n      <md-option ng-repeat="option in filter.customOptions" ng-value="option.value" translate="{{ option.translate }}">\n      </md-option>\n    </md-select>\n\n    <md-select ng-if="filter.type === \'multiselect\'" multiple class="font-size-12 no-margin" ng-init="vm.onMultiselectInit(filter)" ng-model="vm.query[filter.key]" ng-disabled="filter.options.length === 0" ng-change="vm.onMultiselectSelection(filter, isOpened)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpened = true" md-on-close="isOpened = false">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id" ng-disabled="filter.clearAll === false && vm.query[filter.key].length === 1 && vm.query[filter.key][0] === (filter.ngValue ? option[filter.ngValue] : option.id)">\n        {{ option.name }}</md-option>\n      <md-button ng-if="vm.query[filter.key].length &lt; filter.options.length" ng-click="vm.selectAll(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-button ng-if="vm.query[filter.key].length === filter.options.length" ng-click="vm.clearSelection(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n\n    <div ng-if="filter.type === \'date\'" layout="row" layout-align="center center">\n      <md-date-range ng-init="vm.onDateRangeInit(filter)" localization-map="vm.localizationMap" ng-model="vm.pickerModels[filter.key]" auto-confirm="true" show-template="true" md-on-select="vm.onDateRangeSelection(filter)" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}">\n      </md-date-range>\n      <md-button ng-if="vm.pickerModels[filter.key].dateStart" ng-click="vm.clearDate(filter)" class="md-icon-button no-margin no-padding width-20 height-20" aria-label="Clear date filter">\n        <md-icon md-font-icon="icon-close" class="quick-filter-date-clear-button s16"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-search-bar/ms-search-bar.html",'<div flex layout="row" layout-align="start center">\n  <label>\n    <md-button class="ms-search-bar-expander md-icon-button" aria-label="Expand Search Bar" ng-click="vm.expandBar()" ng-if="!vm.resultsLoading || !vm.expanded" ng-class="{\'ms-search-button-expanded\': vm.expanded }">\n      <md-icon id="ms-search-bar-icon" md-font-icon="icon-magnify" class="s24" ng-class="{\'{{ vm.iconColor }}\': vm.iconColor && !vm.expanded }"></md-icon>\n    </md-button>\n    <div class="ms-search-bar-loader" layout="row" layout-align="center center" ng-if="vm.resultsLoading && vm.expanded">\n      <md-progress-circular class="md-accent" md-diameter="32" md-mode="indeterminate"></md-progress-circular>\n    </div>\n  </label>\n  <input ng-if="vm.expanded" focus-on="vm.expanded" type="text" placeholder="{{ \'TOOLBAR.SEARCH\' | translate }}" flex ng-model="vm.query.filter" ng-model-options="vm.queryOptions" ng-blur="vm.blurCollapse()" ng-keydown="vm.onKeyDown($event)" />\n  <md-button class="ms-search-bar-collapser md-icon-button" ng-click="vm.collapseBar()" aria-label="Collapse Search Bar">\n    <md-icon md-font-icon="icon-close" class="icon s24"></md-icon>\n  </md-button>\n  <div class="ms-search-bar-results" ng-if="vm.results" ms-scroll>\n    <div class="no-results" ng-if="vm.results.length === 0">{{ \'DASHBOARDS.NO_RESULTS_AVAILABLE\' | translate }}</div>\n    <div class="result" ng-repeat="result in vm.results" ng-click="vm.handleResultClick(result)" ng-mouseenter="vm.handleMouseEnter($index)" ng-mousedown="vm.absorbEvent($event)" ng-class="{\'selected\': $index == vm.selectedResultIndex}" md-ink-ripple>\n      <div layout="row" layout-align="start center">\n        <div class="icon-container" layout="row" layout-align="center center">\n          <i ng-if="result.icon" class="icon {{ result.icon }}"></i>\n          <div ng-if="!result.icon" class="square md-accent-bg"></div>\n        </div>\n        <div>\n          <div class="title">{{ result.title }}</div>\n          <div class="description" ng-if="result.description">{{ result.description }}</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-shortcuts/ms-shortcuts.html",'<div class="shortcuts-container" layout="row" layout-align="space-between center" flex ng-class="{\'mobile-bar-active\': MsShortcuts.mobileBarActive}">\n\n  <div class="flex-noshrink" layout="row" layout-align="start center" flex>\n    <div class="shortcuts hide show-gt-xs" layout="row" layout-align="start center" ms-scroll ng-if="MsShortcuts.shortcuts.length > 0" ng-sortable="MsShortcuts.sortableOptions">\n      <div ng-repeat="shortcut in MsShortcuts.shortcuts" layout="row" layout-align="center center">\n        <md-button class="md-icon-button shortcut" aria-label="{{shortcut.title}}" ui-sref="{{shortcut.uisref}}">\n          <md-icon ng-if="shortcut.icon" md-font-icon="{{shortcut.icon}}" class="icon s24"></md-icon>\n          <div ng-if="!shortcut.icon" class="first-letter">{{shortcut.title.charAt(0)}}</div>\n          <md-tooltip md-direction="bottom">{{shortcut.title}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n\n    \x3c!-- <md-menu md-offset="8 56" class="shortcut-menu hide show-gt-xs">\n            <md-button class="md-icon-button add-shortcut-button" aria-label="Add shortcut"\n                       ng-click="$mdOpenMenu($event)">\n                <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24"></md-icon>\n                <md-tooltip md-direction="bottom">Click to add/remove shortcut</md-tooltip>\n            </md-button>\n\n            <md-menu-content>\n                <div id="ms-shortcut-add-menu">\n                    <div class="shortcut-search" layout="row" layout-align="start center">\n                        <div class="search-icon" layout="row" layout-align="center center"\n                             ng-if="!MsShortcuts.resultsLoading">\n                            <md-icon md-menu-align-target md-font-icon="icon-magnify" class="icon s24"></md-icon>\n                        </div>\n                        <div class="shortcut-loader" layout="row" layout-align="center center"\n                             ng-if="MsShortcuts.resultsLoading">\n                            <md-progress-circular class="md-accent" md-diameter="20" md-mode="indeterminate">\n                            </md-progress-circular>\n                        </div>\n\n                        <input type="text" placeholder="Search" flex\n                               ng-model="MsShortcuts.query"\n                               ng-model-options="MsShortcuts.queryOptions"\n                               ng-keydown="MsShortcuts.handleKeydown($event)">\n                    </div>\n\n                    <div class="results" ng-if="MsShortcuts.results" ms-scroll>\n                        <div class="no-results" ng-if="MsShortcuts.results.length === 0">No Results!</div>\n\n                        <div class="result" ng-repeat="result in MsShortcuts.results"\n                             ng-click="MsShortcuts.handleResultClick(result)"\n                             ng-mouseenter="MsShortcuts.handleMouseenter($index)"\n                             ng-mousedown="MsShortcuts.absorbEvent($event)"\n                             ng-class="{\'selected\': $index == MsShortcuts.selectedResultIndex}"\n                             md-prevent-menu-close="md-prevent-menu-close"\n                             md-ink-ripple>\n                            <div layout="row" layout-align="start space-between">\n                                <div layout="row" layout-align="start center" flex>\n                                    <div class="icon icon-container" layout="row" layout-align="center center">\n                                        <i ng-if="result.icon" class="{{result.icon}}"></i>\n                                        <div ng-if="!result.icon" class="square md-accent-bg"></div>\n                                    </div>\n                                    <div>\n                                        <div class="title">{{result.title}}</div>\n                                    </div>\n                                </div>\n                                <md-icon md-font-icon="icon-pin" class="icon s18"\n                                         ng-class="{\'fade-text\': !result.hasShortcut}"></md-icon>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </md-menu-content>\n        </md-menu> --\x3e\n  </div>\n\n  <md-button class="md-icon-button toggle-mobile-menu hide-gt-xs" aria-label="Add shortcut" ng-click="MsShortcuts.toggleMobileBar()">\n    <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24" ng-hide="MsShortcuts.mobileBarActive"></md-icon>\n    <md-icon md-menu-origin md-font-icon="icon-close" class="icon s24" ng-hide="!MsShortcuts.mobileBarActive"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/horizontal/horizontal.html",'<div class="ms-stepper-horizontal">\n  <div class="ms-stepper-navigation-wrapper">\n    <div class="ms-stepper-navigation" layout="row" layout-align="center center">\n      <md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(step.stepNumber), \'valid\': MsStepper.isStepValid(step.stepNumber), \'disabled\': MsStepper.isStepDisabled(step.stepNumber), \'optional\': MsStepper.isStepOptional(step.stepNumber)}" ng-click="MsStepper.gotoStep(step.stepNumber)" ng-disabled="MsStepper.isStepDisabled(step.stepNumber)" ng-repeat="step in MsStepper.steps | filter:MsStepper.filterHiddenStep" layout="row" layout-align="start center">\n\n        <div class="step md-accent-bg" layout="row" layout-align="center center">\n          <span ng-if="!MsStepper.isStepValid(step.stepNumber) || MsStepper.isStepOptional(step.stepNumber)">\n            {{$index + 1}}\n          </span>\n          <span ng-if="MsStepper.isStepValid(step.stepNumber) && !MsStepper.isStepOptional(step.stepNumber)">\n            <i class="icon icon-check s18"></i>\n          </span>\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="title" translate="{{step.stepTitleTranslate}}">{{step.stepTitle}}</div>\n          <div class="subtitle" ng-if="MsStepper.isStepOptional(step.stepNumber)">Optional</div>\n        </div>\n      </md-button>\n    </div>\n  </div>\n\n  <div class="ms-stepper-steps" ng-transclude></div>\n\n  <div class="ms-stepper-controls" layout="row" layout-align="center center">\n    <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n      Back\n    </md-button>\n\n    <div class="ms-stepper-dots">\n      <span ng-repeat="step in MsStepper.steps" ng-hide="MsStepper.isStepHidden(step.stepNumber)" ng-class="{\'selected md-accent-bg\':MsStepper.currentStepNumber === $index + 1}">\n      </span>\n    </div>\n\n    <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n      Next\n    </md-button>\n\n    <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n      Submit\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",'<md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(stepInfo.stepNumber), \'valid\': MsStepper.isStepValid(stepInfo.stepNumber), \'disabled\': MsStepper.isStepDisabled(stepInfo.stepNumber), \'optional\': MsStepper.isStepOptional(stepInfo.stepNumber)}" ng-click="MsStepper.gotoStep(stepInfo.stepNumber)" ng-disabled="MsStepper.isStepDisabled(stepInfo.stepNumber)" ng-hide="MsStepper.isStepHidden(stepInfo.stepNumber)" aria-label="Stepper navigation button" layout="row" layout-align="start center">\n\n  <div class="step" layout="row" layout-align="center center">\n    <span ng-if="!MsStepper.isStepValid(stepInfo.stepNumber) || MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-checkbox-blank-circle-outline s18 md-accent-fg"></i>\n    </span>\n    <span ng-if="MsStepper.isStepValid(stepInfo.stepNumber) && !MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-check-circle s18 md-accent-fg"></i>\n    </span>\n  </div>\n\n  <div layout="column" layout-align="start start">\n    <div class="title" ng-if="stepInfo.stepTitleTranslate">{{stepInfo.stepTitleTranslate | translate }}</div>\n    <div class="title" ng-if="!stepInfo.stepTitleTranslate">{{stepInfo.stepTitle}}</div>\n    <div class="subtitle" ng-if="MsStepper.isStepOptional(stepInfo.stepNumber)">Optional</div>\n  </div>\n</md-button>\n\n<div class="ms-stepper-step-content" ng-transclude></div>\n\n<div class="ms-stepper-controls" layout="row" layout-align="start center" ng-show="MsStepper.isStepCurrent(stepInfo.stepNumber)">\n  <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n    Back\n  </md-button>\n\n  <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n    Next\n  </md-button>\n\n  <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n    Submit\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/vertical.html",'<div class="ms-stepper-vertical">\n  <div class="ms-stepper-vertical-line"></div>\n  <div class="ms-stepper-steps" ng-transclude></div>\n</div>'),e.put("app/core/directives/ms-tab-scroll/ms-tab-scroll.html",'<div layout="row">\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'left\')" ng-if="vm.canScroll(\'left\') == true">\n    <md-icon md-font-icon="icon-chevron-left" class="icon s26"></md-icon>\n  </md-button>\n  <div id="bar-container" layout="row" class="bar-container">\n    <div ng-transclude id="tab-container" layout="row" layout-align="start center" class="scroll-container">\n    </div>\n  </div>\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'right\')" ng-if="vm.canScroll(\'right\') == true">\n    <md-icon md-font-icon="icon-chevron-right" class="icon s26"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-timezone/ms-timezone.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-value="null">NONE</md-option>\n  <md-option ng-repeat="t in timezone | orderBy:\'utcOffset\'" value="{{t.name}}">{{t.name}} ({{t.offsetStr}})</md-option>\n</md-select>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-counter/ms-widget-engine.counter.html",'<div class="pt-8 pb-32" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 3)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' + widget.attrs[0].value | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview" class="draggable md-icon-button width-30 no-margin no-padding" aria-label="Move">\n              <md-tooltip><span translate="TOOLS.MOVE_WIDGET">Move</span></md-tooltip>\n              <md-icon md-font-icon="icon-cursor-move" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n            </md-button>\n            <md-menu ng-if="!vm.config.preview">\n              <md-button ng-click="$mdOpenMenu($event)" class="md-icon-button width-30 no-margin no-padding" aria-label="More">\n                <md-icon md-font-icon="icon-dots-vertical" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n              </md-button>\n              <md-menu-content>\n                <md-menu-item>\n                  <md-button ng-click="vm.onEdit({widget: widget})" translate="TOOLS.EDIT_WIDGET">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">\n                    Delete</md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n\n          </div>\n        </md-toolbar>\n        <md-card-content class="resizable" layout="column" layout-align="center center" flex ng-style="{\'background-color\': widget.background, \'color\': widget.foreground}">\n          <div ng-switch="widget.type" layout-fill>\n            <iframe ng-switch-when="iframe|custom" ng-switch-when-separator="|" ng-src="{{vm.getTrustedURL(widget.attrs[0].value)}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n            <ds-widget-clock ng-class="\'font-size-\' + (widget.attrs[2].value || 12)" ng-switch-when="clock" digital-format="widget.attrs[0].value" gmt-offset="widget.attrs[1].value" data-show-digital show-gmt-info></ds-widget-clock>\n            <div ng-switch-default layout-fill>\n              <div ng-include="widget.templateUrl" layout-fill></div>\n            </div>\n          </div>\n        </md-card-content>\n      </md-card>\n    </li>\n  </ul>\n</div>'),e.put("app/core/layouts/content-only.html",'<div id="layout-content-only" class="template-layout" layout="column" flex>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n</div>'),e.put("app/core/layouts/content-with-toolbar.html",'<div id="layout-content-with-toolbar" class="template-layout" layout="column" flex>\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n  <md-content id="content" class="animate-slide-up md-hue-2" ui-view="content" flex></md-content>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n</div>'),e.put("app/core/layouts/horizontal-navigation.html",'<div id="layout-horizontal-navigation" class="template-layout" layout="column" flex>\n\n  <div id="toolbar-navigation-container" class="md-whiteframe-1dp" layout="column" layout-align="space-between start">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n    <div id="horizontal-navigation" ui-view="navigation" layout="row" layout-align="start end" flex></div>\n  </div>\n\n  <div id="content-container" flex layout="column">\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",'<div id="layout-vertical-navigation-fullwidth-toolbar-2" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar.html",'<div id="layout-vertical-navigation-fullwidth-toolbar" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation.html",'<div id="header" ui-view="header"></div>\n\n<div id="layout-vertical-navigation" class="template-layout" layout="row" flex>\n\n  <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ms-scroll ui-view="navigation" ng-if="!vm.isAgent()"></md-sidenav>\n\n  <div id="content-container" flex layout="column">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n\n    <md-content id="content" class="animate-slide-up md-hue-2" ms-scroll ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ms-scroll ui-view="quickPanel"></md-sidenav>\n\n</div>\n\n<div id="footer" ui-view="footer"></div>'),e.put("app/core/theme-options/theme-options.html",'<div class="ms-theme-options-button md-primary-bg" ng-click="toggleOptionsSidenav()">\n  <md-icon md-font-icon="icon-cog" class="white-text"></md-icon>\n</div>\n\n<md-sidenav md-component-id="motion-theme-options" class="md-sidenav-right">\n\n  <div class="ms-theme-options-list" layout="column">\n    <div class="theme-option layout-options">\n      <div class="option-title">Layout Style:</div>\n      <md-radio-group layout="row" layout-align="start start" layout-wrap ng-model="vm.layoutStyle" ng-change="vm.updateLayoutStyle()">\n        <md-radio-button ng-repeat="layoutStyle in vm.layoutStyles" ng-value="layoutStyle.value">\n          <div layout="column" layout-align="center center">\n            <img ng-src="{{layoutStyle.figure}}">\n            <span class="text-center font-size-12 mt-8">{{layoutStyle.label}}</span>\n          </div>\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option">\n      <div class="option-title">Layout Mode:</div>\n      <md-radio-group layout="row" layout-align="start center" ng-model="vm.layoutMode" ng-change="vm.updateLayoutMode()">\n        <md-radio-button ng-repeat="layoutMode in vm.layoutModes" ng-value="layoutMode.value">\n          {{layoutMode.label}}\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option color-palettes">\n      <div class="option-title">Color Palette:</div>\n      <div layout="row" layout-align="start start" layout-wrap>\n        <md-button ng-repeat="(themeName, theme) in vm.themes.list" class="md-raised theme-button" layout="row" layout-align="center center" aria-label="{{themeName}}" ng-click="vm.setActiveTheme(themeName)" ng-style="{\'background-color\': theme.primary.color,\'border-color\': theme.accent.color,\'color\': theme.primary.contrast1}" ng-class="{active: vm.getActiveTheme().name === themeName}">\n          <md-icon ng-style="{\'color\': theme.primary.contrast1}" md-font-icon="icon-palette" class="icon s32"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n</md-sidenav>'),e.put("app/errors/404/error-404.html",'<div id="error-404" layout="column" layout-align="center center">\n  <div class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR404.CODE">404</div>\n\n    <div class="message" translate="ERROR404.MESSAGE">Sorry but we couldn’t find the page you are looking for</div>\n    <ms-search-bar on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300">Search for anything</ms-search-bar>\n\n    \x3c!-- <div class="search md-whiteframe-1dp" layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-magnify" class="icon s24"></md-icon>\n            <input ng-model="vm.search" type="text" placeholder="Search for anything" translate translate-attr-placeholder="ERROR404.SEARCH" flex>\n        </div> --\x3e\n\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR404.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/errors/500/error-500.html",'<div id="error-500" layout="column" layout-align="center center">\n  <div ng-if="!vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR500.CODE">500</div>\n    <div class="message" translate="ERROR500.MESSAGE">Well, you broke the internet!</div>\n    <div class="sub-message" translate="ERROR500.SUBMESSAGE">Just kidding, looks like we have an internal issue, please try again in couple minutes\n    </div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n    <md-button class="md-raised md-warn" ng-click="vm.sendReport()" translate="ERROR500.REPORT">Report this problem</md-button>\n  </div>\n  <pre ng-if="!vm.send">\n  {{vm.error}}\n  </pre>\n  <div ng-if="vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code">#{{vm.code}}</div>\n    <div class="message" translate="ERROR500.JIRA_MESSAGE">Your request has been received and will be processed shortly.</div>\n    <div class="sub-message" translate="ERROR500.JIRA_SUBMESSAGE">Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.</div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/footer/layouts/vertical-navigation/footer.html",'<div layout="row" layout-align="start center">\n  <ms-info-bar ng-if="!vm.cookieAlertHide" on-close="vm.cookieAlertOnClose()" class="grey-100-bg">\n    <div layout="row" layout-align="start center">\n      <span translate="FOOTER.COOKIE_LAW" flex class="text-center grey-600-fg"></span>\n    </div>\n  </ms-info-bar>\n</div>'),e.put("app/forgot/forgot.html",'<div id="forgot-password" class="flex-scrollable" layout="column" ms-scroll ng-init="vm.onInit()">\n  <div id="forgot-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="forgot-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="FORGOTPASSWORD.TITLE">Recover your password</div>\n\n      <form name="forgotPasswordForm" novalidate>\n        <md-input-container class="md-block" md-no-float>\n          <input type="email" name="email" ng-model="vm.form.email" placeholder="Email address" translate translate-attr-placeholder="FORGOTPASSWORD.EMAIL_ADRESS" ng-pattern="/^.+@.+\\..+$/" required>\n          <div ng-messages="forgotPasswordForm.email.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.forgotPassword()" class="md-raised md-accent submit-button" aria-label="RESET MY PASSWORD" ng-disabled="forgotPasswordForm.$invalid || forgotPasswordForm.$pristine" translate="FORGOTPASSWORD.SEND_RESET_LINK" translate-attr-aria-label="FORGOTPASSWORD.SEND_RESET_LINK">\n          SEND RESET LINK\n        </md-button>\n      </form>\n\n      <div class="login" layout="row" layout-align="center center">\n        <a class="link" ui-sref="app.login" translate="FORGOTPASSWORD.GO_BACK">Go back to login</a>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/header/layouts/vertical-navigation/header.html",'\x3c!-- <div layout="row" layout-align="start center">\n    <ms-info-bar ng-if="vm.currentUser.role == \'admin\' && !vm.newsAlertHide" on-close="vm.newsAlertOnClose()" class="green-600-bg white-fg">\n        <div layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-message-text-outline" class="icon margin-right-10 s20"></md-icon>\n            <div flex hide-xs translate="HEADER.NEWS"></div>\n        </div>\n    </ms-info-bar>\n</div> --\x3e'),e.put("app/login/login.html",'<div id="login" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="login-form-wrapper" layout="column" layout-align="center center">\n    <div id="login-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n      \x3c!-- <img src="assets/images/logos/login.png" alt="motion_logo_login" /> --\x3e\n\n      <div class="md-subhead padding-top-45" translate="LOGIN.TITLE">Log in to your account</div>\n\n      <form name="loginForm" novalidate ng-if="!vm.progressLogin">\n        <md-input-container class="md-block" md-no-float>\n          <input type="input" name="name" ng-model="vm.form.name" autofocus aria-label="username" translate translate-attr-placeholder="LOGIN.USERNAME" required>\n          <div ng-messages="loginForm.name.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" aria-label="password" translate translate-attr-placeholder="LOGIN.PASSWORD" required>\n          <div ng-messages="loginForm.password.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <div class="remember-forgot-password" layout="row" layout-xs="column" layout-align="end center">\n          \x3c!-- <md-checkbox class="remember-me" ng-model="data.cb1" aria-label="Remember Me">\n                        <span translate="LOGIN.REMEMBER_ME">Remember Me</span>\n                    </md-checkbox> --\x3e\n          <a ui-sref="app.forgot" class="forgot-password md-accent-color" style="cursor:pointer;" translate="LOGIN.FORGOT_PASSWORD">Forgot Password?</a>\n        </div>\n\n        <b layout="row" layout-align="center center" class="md-padding" ng-if="vm.message">\n          <font color="red">{{vm.message}}</font>\n        </b>\n        <md-button type="submit" ng-click="vm.login()" class="md-raised md-accent submit-button" aria-label="LOGIN" translate="LOGIN.LOG_IN" translate-attr-aria-label="LOGIN.LOG_IN">\n          LOG IN\n        </md-button>\n      </form>\n\n      <md-progress-circular ng-if="vm.progressLogin" md-diameter="96"></md-progress-circular>\n\n      <div ng-if="vm.googleSsoEnabled" class="separator">\n        <span class="text" translate="LOGIN.OR">OR</span>\n      </div>\n\n      <md-button ng-if="vm.googleSsoEnabled" ng-click="vm.loginOauth(\'google\')" class="md-raised google">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fab fa-google" class="s16"></md-icon>\n            <span translate="LOGIN.WITH_GOOGLE">Log in with Google</span>\n          </span>\n        </div>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/analytics/views/extractedReports/create/dialog.html",'<md-dialog class="extractedReport-dialog" aria-label="New ExtractedReport">\n  <form name="extractedReportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.REPORTNAME">ReportName</label>\n        <input type="" name="name" ng-model="vm.extractedReport.name" ng-required="true" autofocus>\n\n        <div ng-messages="extractedReportForm[\'name\'].$error" ng-show="extractedReportForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.REPORTNAME_REQUIRED">ReportName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="basename" ng-model="vm.extractedReport.basename" ng-required="true">\n\n        <div ng-messages="extractedReportForm[\'basename\'].$error" ng-show="extractedReportForm[\'basename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newExtractedReport" ng-click="vm.saveExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid || extractedReportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newExtractedReport" ng-click="vm.addNewExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_EXTRACTEDREPORT" translate-attr-aria-label="ANALYTICS.ADD_EXTRACTEDREPORT">\n          ADD EXTRACTEDREPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newExtractedReport" ng-click="vm.deleteExtractedReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/extractedReports/extractedReports.html",'<div id="extractedReports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.EXTRACTEDREPORTS">ExtractedReports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedExtractedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedExtractedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-extractedReports-count">\n          <span>{{vm.selectedExtractedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllExtractedReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectExtractedReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedExtractedReports" csv-label="true" filename="extractedReports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedExtractedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- EXTRACTEDREPORT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedExtractedReports" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getExtractedReports">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.REPORTNAME\' | translate }}</th>\n                <th md-column md-order-by="basename">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'ANALYTICS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="startDate">{{ \'ANALYTICS.DATE_RANGE_FROM\' | translate }}</th>\n                <th md-column md-order-by="endDate">{{ \'ANALYTICS.DATE_RANGE_TO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'ANALYTICS.GENERATED_AT\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'ANALYTICS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="output">{{ \'ANALYTICS.OUTPUT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.extractedReports.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="extractedReport" md-select-id="id" ng-repeat="extractedReport in vm.extractedReports.rows">\n                <td md-cell ng-if="extractedReport.userpic"><img class="avatar" alt="{{extractedReport.name}}" ng-src="api/users/{{extractedReport.id}}/avatar" /></td>\n                <td md-cell ng-if="!extractedReport.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{extractedReport.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="id ">{{extractedReport.id}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="name ">{{extractedReport.name}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="basename ">{{extractedReport.basename}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="type ">{{extractedReport.type}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="startDate ">{{extractedReport.startDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="endDate ">{{extractedReport.endDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="createdAt ">{{extractedReport.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="status ">{{extractedReport.status}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="output ">{{extractedReport.output}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(extractedReport, $event    )" translate="ANALYTICS.EDIT_EXTRACTEDREPORT">\n                          Edit ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="extractedReport.status == \'Completed\'">\n\n                        <md-button ng-click="vm.downloadfile2(extractedReport, $event  , \'analytics/extracted_reports\'   )" translate="ANALYTICS.DOWNLOAD_EXTRACTEDREPORT">\n                          Download ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(extractedReport, $event    )" translate="ANALYTICS.DELETE_EXTRACTEDREPORT">\n                          Delete ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.extractedReports.count}}" md-on-paginate="vm.getExtractedReports" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / EXTRACTEDREPORT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/metrics/create/dialog.html",'<md-dialog class="metric-dialog" aria-label="New Metric">\n  <form name="metricForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.metric.name" ng-required="true" autofocus>\n\n        <div ng-messages="metricForm[\'name\'].$error" ng-show="metricForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select name="table" ng-model="vm.metric.table" required>\n          <md-option ng-value="\'report_agent\'">Agent Report</md-option>\n          <md-option ng-value="\'report_call\'">Call Report</md-option>\n          <md-option ng-value="\'cdr\'">CDR</md-option>\n          <md-option ng-value="\'chat_websites\'">Chat Website</md-option>\n          <md-option ng-value="\'chat_interactions\'">Chat Interaction</md-option>\n          <md-option ng-value="\'chat_messages\'">Chat Messages</md-option>\n          <md-option ng-value="\'chat_offline_messages\'">Chat Offline Messages</md-option>\n          <md-option ng-value="\'chat_queues\'">Chat Queues</md-option>\n          <md-option ng-value="\'report_chat_queue\'">Chat Report Queue</md-option>\n          <md-option ng-value="\'report_chat_transfer\'">Chat Report Transfer</md-option>\n          <md-option ng-value="\'cm_companies\'">Companies</md-option>\n          <md-option ng-value="\'report_call_transfer\'">Call transfer report</md-option>\n          <md-option ng-value="\'cm_contacts\'">Contacts</md-option>\n          <md-option ng-value="\'report_square\'">CSquare Report</md-option>\n          <md-option ng-value="\'report_square_details\'">CSquare Details Report</md-option>\n          <md-option ng-value="\'report_dial\'">Dial Report</md-option>\n          <md-option ng-value="\'cm_hopper\'">Dialer Hopper Processing</md-option>\n          <md-option ng-value="\'cm_hopper_history\'">Dialer Hopper Logs</md-option>\n          <md-option ng-value="\'cm_hopper_final\'">Dialer Hopper Final</md-option>\n          <md-option ng-value="\'mail_accounts\'">Email Account</md-option>\n          <md-option ng-value="\'mail_interactions\'">Email Interaction</md-option>\n          <md-option ng-value="\'mail_messages\'">Email Messages</md-option>\n          <md-option ng-value="\'mail_queues\'">Email Queues</md-option>\n          <md-option ng-value="\'report_mail_queue\'">Email Report Queue</md-option>\n          <md-option ng-value="\'report_mail_transfer\'">Email Report Transfer</md-option>\n          <md-option ng-value="\'fax_accounts\'">Fax Account</md-option>\n          <md-option ng-value="\'fax_interactions\'">Fax Interaction</md-option>\n          <md-option ng-value="\'fax_messages\'">Fax Messages</md-option>\n          <md-option ng-value="\'fax_queues\'">Fax Queues</md-option>\n          <md-option ng-value="\'report_fax_queue\'">Fax Report Queue</md-option>\n          <md-option ng-value="\'report_fax_transfer\'">Fax Report Transfer</md-option>\n          <md-option ng-value="\'report_jscripty_sessions\'">Jscripty Sessions</md-option>\n          <md-option ng-value="\'report_jscripty_questions\'">Jscripty Questions</md-option>\n          <md-option ng-value="\'report_jscripty_answers\'">Jscripty Answers</md-option>\n          <md-option ng-value="\'cm_lists\'">Lists</md-option>\n          <md-option ng-value="\'report_member\'">Member Report</md-option>\n          <md-option ng-value="\'openchannel_accounts\'">Openchannel Account</md-option>\n          <md-option ng-value="\'openchannel_interactions\'">Openchannel Interaction</md-option>\n          <md-option ng-value="\'openchannel_messages\'">Openchannel Messages</md-option>\n          <md-option ng-value="\'openchannel_queues\'">Openchannel Queues</md-option>\n          <md-option ng-value="\'report_openchannel_queue\'">Openchannel Report Queue</md-option>\n          <md-option ng-value="\'report_openchannel_transfer\'">Openchannel Report Transfer</md-option>\n          <md-option ng-value="\'report_queue\'">Queue Report</md-option>\n          <md-option ng-value="\'sms_accounts\'">SMS Account</md-option>\n          <md-option ng-value="\'sms_interactions\'">SMS Interaction</md-option>\n          <md-option ng-value="\'sms_messages\'">SMS Messages</md-option>\n          <md-option ng-value="\'sms_queues\'">SMS Queues</md-option>\n          <md-option ng-value="\'report_sms_queue\'">SMS Report Queue</md-option>\n          <md-option ng-value="\'report_sms_transfer\'">SMS Report Transfer</md-option>\n          <md-option ng-value="\'users\'">Users</md-option>\n          <md-option ng-value="\'voice_recordings\'">Voice Recordings</md-option>\n          <md-option ng-value="\'whatsapp_accounts\'">Whatsapp Account</md-option>\n          <md-option ng-value="\'whatsapp_interactions\'">Whatsapp Interaction</md-option>\n          <md-option ng-value="\'whatsapp_messages\'">Whatsapp Messages</md-option>\n          <md-option ng-value="\'whatsapp_queues\'">Whatsapp Queues</md-option>\n          <md-option ng-value="\'report_whatsapp_queue\'">Whatsapp Report Queue</md-option>\n          <md-option ng-value="\'report_whatsapp_transfer\'">Whatsapp Report Transfer</md-option>\n        </md-select>\n        <div ng-messages="metricForm[\'table\'].$error" ng-show="metricForm[\'table\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.METRIC">Metric</label>\n        <input type="text" name="metric" ng-model="vm.metric.metric" ng-required="true">\n\n        <div ng-messages="metricForm[\'metric\'].$error" ng-show="metricForm[\'metric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.metric.description">\n\n        <div ng-messages="metricForm[\'description\'].$error" ng-show="metricForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMetric" ng-click="vm.saveMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid || metricForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMetric" ng-click="vm.addNewMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_METRIC" translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n          ADD METRIC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMetric" ng-click="vm.deleteMetric($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/metrics/metrics.html",'<div id="metrics" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.METRICS">Metrics</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMetrics.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMetrics =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-metrics-count">\n          <span>{{vm.selectedMetrics.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMetrics()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMetrics()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMetrics" csv-label="true" filename="metrics.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMetrics($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- METRIC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMetrics" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMetrics">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="table">{{ \'ANALYTICS.TABLE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.metrics.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="metric" md-select-id="id" ng-repeat="metric in vm.metrics.rows">\n                <td md-cell ng-if="metric.userpic"><img class="avatar" alt="{{metric.name}}" ng-src="api/users/{{metric.id}}/avatar" /></td>\n                <td md-cell ng-if="!metric.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{metric.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="id ">{{metric.id}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="name ">{{metric.name}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="table ">{{ vm.arraytable[metric.table].option }}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="description ">{{metric.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(metric, $event    )" translate="ANALYTICS.EDIT_METRIC">\n                          Edit Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(metric, $event    )" translate="ANALYTICS.DELETE_METRIC">\n                          Delete Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.metrics.count}}" md-on-paginate="vm.getMetrics" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / METRIC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD METRIC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-metric-button" ng-click="vm.createOrEditMetric($event)" aria-label="add metric" translate translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD METRIC BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/copy/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.COPY_REPORT">Copy Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="ANALYTICS.SELECT_NODE">Select Node</label>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.copyReport()" class="send-button md-accent md-raised" ng-disabled="!vm.currentNode" aria-label="COPY" translate="ANALYTICS.COPY_REPORT" translate-attr-aria-label="ANALYTICS.COPY_REPORT">\n          COPY REPORT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/create/dialog.html",'<md-dialog class="report-dialog" aria-label="New Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newReport">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select ng-model="vm.report.table" required>\n          <md-option ng-repeat="table in vm.tables | orderBy:\'name\'" ng-value="table.name">{{table.name}}</md-option>\n        </md-select>\n        <div ng-messages="reportForm.table.$error" ng-show="reportForm.table.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.report.description">\n        <div ng-messages="reportForm.description.$error" ng-show="reportForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-autocomplete ng-if="vm.newReport" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="table in vm.tables | filter:vm.searchText" md-item-text="table.name" md-min-length="0" md-selected-item-change="vm.selectedTableChange(table)" placeholder="Select the table to Join">\n        <md-item-template>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{table.name}}</span>\n        </md-item-template>\n        <md-not-found>\n          No states matching "{{vm.searchText}}" were found.\n        </md-not-found>\n      </md-autocomplete>\n\n      <md-card ng-if="vm.newReport" md-theme="default" md-theme-watch ng-repeat="table in vm.joinTables">\n        <md-card-title>\n          <md-card-title-text layout="row">\n            <div layout="row" flex="50">\n              <span class="md-subhead">{{table.name}}</span>\n            </div>\n            <div layout="row" layout-align="end center" flex>\n              <md-button class="md-icon-button" ng-click="vm.removeJoin($index)">\n                <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n              </md-button>\n            </div>\n          </md-card-title-text>\n        </md-card-title>\n        <md-card-content>\n          <md-select ng-model="table.parentKey" placeholder="Select the parent key" ng-init="table.parentFields = []; vm.getFields(table, \'parentFields\', vm.report.table)" required>\n            <md-option ng-repeat="field in table.parentFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.foreignKey" placeholder="Select the foreign key" ng-init="table.foreignFields = []; vm.getFields(table, \'foreignFields\', table.name)" required>\n            <md-option ng-repeat="field in table.foreignFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.type" placeholder="Select join type" required>\n            <md-option ng-repeat="join in vm.joinTypes" ng-value="join.key">{{join.value}}</md-option>\n          </md-select>\n        </md-card-content>\n      </md-card>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReport" ng-click="vm.saveReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReport" ng-click="vm.addNewReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORT" translate-attr-aria-label="ANALYTICS.ADD_REPORT">\n          ADD REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReport" ng-click="vm.deleteReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/condition/group.html",'<md-card class="padding-horizontal-15 padding-top-15">\n  <div layout="row" ng-if="vm_rc.crudPermissions.canEdit">\n    <md-input-container class="md-block" flex>\n      <label translate="ANALYTICS.OPERATOR">Operator</label>\n      <md-select ng-model="group.operator" required>\n        <md-option value="AND">AND</md-option>\n        <md-option value="OR">OR</md-option>\n      </md-select>\n      <div ng-messages="conditionsForm.operator.$error" ng-show="conditionsForm.operator.$touched" role="alert">\n        <div ng-message="required">\n          <span translate="ANALYTICS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n        </div>\n      </div>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addCondition(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.CONDITION\' | translate}}\n      </md-button>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addGroup(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n    <div flex></div>\n    <md-input-container class="md-block" ng-if="parent">\n      <md-button class="md-raised md-warn" ng-click="vm_rc.deleteConfirm(parent, index, $event)">\n        <md-icon md-font-icon="icon-delete"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n  </div>\n  <div layout="column" ng-repeat="rule in group.rules track by $index">\n    <div layout="row" ng-if="!rule.group">\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.COLUMN">COLUMN</label>\n        <md-select name="field" ng-model="rule.field" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-optgroup label="{{vm_rc.report.table}}">\n            <md-option ng-repeat="column in vm_rc.columns" value="{{vm_rc.report.table}}.{{column}}">{{column}}</md-option>\n          </md-optgroup>\n          <md-optgroup ng-if="vm_rc.report.joins" ng-repeat="join in vm_rc.report.joins" label="{{join.foreignTable}}">\n            <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="conditionsForm.field.$error" ng-show="conditionsForm.field.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.CONDITION">CONDITION</label>\n        <md-select name="condition" ng-model="rule.condition" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-option ng-repeat="condition in vm_rc.conditions" ng-value="condition">{{condition}}</md-option>\n        </md-select>\n        <div ng-messages="conditionsForm.condition.$error" ng-show="conditionsForm.condition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm_rc.isValueByCondition(rule.condition)" class="md-block" flex>\n        <label translate="ANALYTICS.VALUE">VALUE</label>\n        <input type="text" name="value" ng-model="rule.value" ng-disabled="!vm_rc.crudPermissions.canEdit" required md-autofocus>\n        <div ng-messages="conditionsForm.value.$error" ng-show="conditionsForm.value.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm_rc.crudPermissions.canEdit" flex>\n        <md-button class="md-fab md-mini md-warn" aria-label="Delete row" ng-click="vm_rc.deleteConfirm(group.rules, $index, $event)">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </md-input-container>\n    </div>\n    <div ng-if="rule.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="parent=group.rules;index=$index;group=rule.group"></div>\n  </div>\n</md-card>'),e.put("app/main/apps/analytics/views/reports/edit/field/dialog.html",'<md-dialog class="reportField-dialog" aria-label="New Report Field">\n  <form name="reportFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <pre></pre>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.reportField.type" ng-change="vm.reportField.field = undefined" required>\n          <md-option value="column">Select a column</md-option>\n          <md-option value="metric">Select an existing metric</md-option>\n          <md-option value="custom">Write a custom metric</md-option>\n        </md-select>\n        <div ng-messages="reportForm.type.$error" ng-show="reportForm.type.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-switch on="vm.reportField.type">\n        <md-input-container class="md-block" ng-switch-when="column">\n          <label translate="ANALYTICS.COLUMN">Column Name</label>\n          <md-select name="column" ng-model="vm.reportField.field" required>\n            <md-optgroup label="{{vm.report.table}}">\n              <md-option ng-repeat="column in vm.columns" value="{{vm.report.table}}.{{column}}">{{column}}</md-option>\n              \x3c!-- <md-option ng-repeat="column in vm.columns" ng-value="">{{column}}</md-option> --\x3e\n            </md-optgroup>\n            <md-optgroup ng-if="vm.report.joins" ng-repeat="join in vm.report.joins" label="{{join.foreignTable}}">\n              <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n            </md-optgroup>\n          </md-select>\n          <div ng-messages="reportForm.column.$error" ng-show="reportForm.column.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="metric">\n          <label translate="ANALYTICS.METRIC_NAME">Metric Name</label>\n          <md-select name="metric" ng-model="vm.reportField.MetricId" required>\n            <md-option ng-repeat="metric in vm.metrics" ng-value="metric.id">{{metric.name}}</md-option>\n          </md-select>\n          <div ng-messages="reportForm.metric.$error" ng-show="reportForm.metric.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="custom">\n          <label translate="ANALYTICS.CUSTOM_METRIC">Custom Metric</label>\n          <input type="text" name="field" ng-model="vm.reportField.field" required md-autofocus>\n          <div ng-messages="reportFieldForm.field.$error" ng-show="reportFieldForm.field.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.CUSTOM_METRIC_REQUIRED">Custom Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.reportField.alias" ng-required="vm.reportField.type === \'custom\' || vm.reportField.type === \'metric\'">\n        <div ng-messages="reportFieldForm.alias.$error" ng-show="reportFieldForm.alias.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FUNCTION">Function</label>\n        <md-select name="function" ng-model="vm.reportField.function">\n          <md-option ng-value="null">No Function</md-option>\n          <md-option ng-repeat="function in vm.sqlUtil.getFunctions" ng-value="function.value">{{function.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FORMAT">Format</label>\n        <md-select name="format" ng-model="vm.reportField.format">\n          <md-option ng-value="null">No Format</md-option>\n          <md-option ng-repeat="format in vm.sqlUtil.getFormats" ng-value="format.value">{{format.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.GROUP_BY">Group By</label>\n        <md-select name="groupBy" ng-model="vm.reportField.groupBy">\n          <md-option ng-repeat="gb in vm.sqlUtil.getGroupBy" ng-value="gb.value">{{gb.value ? \'Yes\' : \'No\'}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ORDER_BY">Order By</label>\n        <md-select name="orderBy" ng-model="vm.reportField.orderBy">\n          <md-option ng-value="null">No Order</md-option>\n          <md-option ng-repeat="ob in vm.sqlUtil.getOrderBy" ng-value="ob.value">{{ob.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReportField" ng-click="vm.saveReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReportField" ng-click="vm.addNewReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORTFIELD" translate-attr-aria-label="ANALYTICS.ADD_REPORTFIELD">\n          ADD REPORT FIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReportField" ng-click="vm.deleteReportField($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/view.html",'<div id="analytics-report" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-reports-button md-icon-button" aria-label="Go to reports" ng-click="vm.gotoReports()" translate translate-attr-aria-label="ANALYTICS.GO_TO_ANALYTICSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="report-image" hide-xs>\n          <img ng-src="assets/images/business/reports.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.report.id}} {{vm.report.name}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="ANALYTICS.CREATED_AT"></span> <span>{{vm.report.createdAt | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span>{{vm.report.description}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveReport()" ng-disabled="generalForm.$pristine && conditionsForm.$pristine" class="send-button md-accent md-raised" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="ANALYTICS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.NAME">Name</label>\n                <input type="text" name="name" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.name" required md-autofocus>\n                <div ng-messages="generalForm.name.$error" ng-show="generalForm.name.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.description">\n                <div ng-messages="generalForm.description.$error" ng-show="generalForm.description.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.FIELDS">FIELDS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container fields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportFieldsController as vm_rf" ng-init="vm_rf.init(vm.report, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <div layout="row" layout-align="start center">\n                    <div layout="column" layout-align="start start">\n                      <div class="md-subhead" translate="ANALYTICS.FIELDS">\n                        <span translate="ANALYTICS.FIELDS">FIELDS</span>\n                      </div>\n                      <div class="h4">\n                        <span translate="ANALYTICS.TABLE">TABLE</span> <span class="text-bold">{{vm.report.table}}</span>\n                      </div>\n                      <div class="h4" ng-if="vm.report.joins && vm.report.joins.length && vm.isArray(vm.report.joins)">\n                        <span>Join</span> <span class="text-bold">{{ vm.mapArray(vm.report.joins, \'foreignTable\') }}</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm_rf.query.filter = query" on-collapse="vm_rf.query.filter = undefined" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-if="vm_rf.crudPermissions.canEdit" ng-click="vm_rf.createOrEditReportField($event)" aria-label="add field" translate translate-attr-label="ANALYTICS.ADD_FIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_rf.selectedReportFields.length}} {{vm_rf.selectedReportFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_rf.deleteSelectedReportFields($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table md-row-select="vm_rf.crudPermissions.canDelete" multiple ng-model="vm_rf.selectedReportFields" md-progress="vm_rf.promise">\n                  <thead md-head md-order="vm_rf.query.sort" md-on-reorder="vm_rf.getReportFields">\n                    <tr md-row>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical"></md-icon>\n                      </th>\n                      <th md-column>Type</th>\n                      <th md-column>Column or Metric</th>\n                      <th md-column>Alias</th>\n                      <th md-column>Function</th>\n                      <th md-column>Format</th>\n                      <th md-column>Group By</th>\n                      <th md-column>Order By</th>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_rf.sortableTable">\n                    <tr md-row md-select="reportField" md-select-id="id" ng-repeat="reportField in vm_rf.reportFields.rows">\n                      <td md-cell class="handle" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16"></md-icon>\n                      </td>\n                      <td md-cell>\n                        <div ng-if="reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-shape-plus s16"></div>\n                        <div ng-if="!reportField.MetricId && reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-pencil-box-outline s16"></div>\n                        <div ng-if="!reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-view-column s16"></div>\n                      </td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.MetricId ? vm_rf.getMetricName(reportField.MetricId) : reportField.field}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.alias}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.function">{{reportField.function}}</span><span ng-if="!reportField.function">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.format">{{reportField.format}}</span><span ng-if="!reportField.format">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.groupBy">YES</span><span ng-if="!reportField.groupBy">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.orderBy">{{reportField.orderBy}}</span><span ng-if="!reportField.orderBy">--</span></td>\n                      <td md-cell class="actions" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.createOrEditReportField($event, reportField)" translate="ANALYTICS.EDIT_REPORTFIELD">\n                                Edit Field\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.deleteConfirm(reportField, $event)" translate="ANALYTICS.DELETE_REPORTFIELD">\n                                Delete Field\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.CONDITIONS">CONDITIONS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container conditions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportConditionsController as vm_rc" ng-init="vm_rc.init(vm.report, vm.crudPermissions)">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="ANALYTICS.CONDITION">CONDITION</div>\n              </div>\n              <form name="conditionsForm" novalidate>\n                <div ng-if="vm_rc.report.condition.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="group=vm_rc.report.condition.group"></div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.previewReport()">\n        <md-tab-label>\n          <span translate="ANALYTICS.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <md-table-container ng-if="!vm.error">\n              <table md-table>\n                <thead md-head>\n                  <tr md-row>\n                    <th ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n                  </tr>\n                </thead>\n                <tbody md-body>\n                  <tr md-row ng-repeat="row in vm.rows">\n                    <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n                  </tr>\n                  <tr md-row ng-if="!vm.rows.length">\n                    <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n                  </tr>\n                </tbody>\n              </table>\n            </md-table-container>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.queryReport()">\n        <md-tab-label>\n          <span>Query</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text">SQL</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <div ng-if="!vm.error">\n              {{vm.queryResult}}\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/analytics/views/reports/preview/dialog.html",'<md-dialog aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.PREVIEW_REPORT">Preview Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n          <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/reports.html",'<div id="reports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.REPORTS">Reports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedReports.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-reports-count">\n          <span>{{vm.selectedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedReports" csv-label="true" filename="reports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom" class="md-icon-button" ng-click="vm.deleteSelectedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div layout="column" flex="30">\n      <md-card class="padding-top-5 padding-horizontal-10 padding-bottom-0">\n        \x3c!-- SEARCH --\x3e\n        <div layout="row" layout-align="start center">\n          <label for="searchFolder" class="m-0">\n            <md-icon md-font-icon="icon-magnify"></md-icon>\n          </label>\n          <md-input-container md-no-float class="margin-horizontal-0 margin-bottom-0 margin-top-10" flex>\n            <input id="searchFolder" placeholder="Search folder" type="text" ng-model="vm.search" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_FOLDER">\n          </md-input-container>\n        </div>\n        \x3c!-- / SEARCH --\x3e\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeDefaultConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n      </md-card>\n      <md-card class="padding-10 scrollable" ms-scroll>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </md-card>\n    </div>\n    <md-card flex="70">\n      <md-toolbar class="md-table-toolbar md-default">\n        <div class="md-toolbar-tools">\n          <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n          <p ng-if="vm.currentPath">\n            <span class="text-boxed">{{vm.currentPath}}</span>\n          </p>\n          <div flex></div>\n          <ms-search-bar on-search="vm.getReports()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n          <div flow-init flow-file-added="vm.importReport($file, $event, $flow)">\n            <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" aria-label="import report" translate translate-attr-label="ANALYTICS.IMPORT_REPORT" flow-btn>\n              <md-icon md-font-icon="icon-upload"></md-icon>\n            </md-button>\n          </div>\n          <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" ng-click="vm.createOrEditReport($event)" aria-label="add report" translate translate-attr-label="ANALYTICS.ADD_REPORT">\n            <md-icon md-font-icon="icon-plus"></md-icon>\n          </md-button>\n        </div>\n      </md-toolbar>\n      <md-table-container>\n        <table md-table md-row-select multiple ng-model="vm.selectedReports" md-progress="vm.promise">\n          <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n            <tr md-row>\n              <th md-column md-order-by="id" width="10px">{{ \'ANALYTICS.ID\' | translate }}</th>\n              <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n              <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n              <th md-column md-order-by="createdAt">{{ \'ANALYTICS.CREATED_AT\' | translate }}</th>\n              <th md-column width="10px"></th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-hide="vm.reports.rows.length">\n              <td md-cell colspan="5">\n                <div layout="row" layout-align="center center">\n                  <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                </div>\n              </td>\n            </tr>\n            <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="id">{{report.id}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="name">{{report.name}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="description">{{report.description}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="createdAt">{{report.createdAt | date:\'medium\'}}</td>\n              <td md-cell class="actions">\n                <md-menu>\n                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                  </md-button>\n\n                  <md-menu-content width="3">\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                      <md-button ng-click="vm.copydialog(report, $event)" translate="ANALYTICS.COPY_REPORT">\n                        Copy Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.previewdialog(report, $event)" translate="ANALYTICS.PREVIEW_REPORT">\n                        Preview Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.rundialog(report, $event)" translate="ANALYTICS.RUN_REPORT">\n                        Run Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.downloadfile(report, $event)" translate="ANALYTICS.DOWNLOAD_JSON_REPORT">\n                        Download Json Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete && vm.currentNode.custom">\n                    </md-menu-divider>\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom">\n                      <md-button ng-click="vm.editstate(report, $event)" translate="ANALYTICS.EDIT_REPORT">\n                        Edit Report\n                      </md-button>\n                    </md-menu-item>\n\n                    <md-menu-item ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom">\n                      <md-button ng-click="vm.deleteconfirm(report, $event)" translate="ANALYTICS.DELETE_REPORT">\n                        Delete Report\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n\n      <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.reports.count}}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n    </md-card>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/run/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.RUN_REPORT">Run Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.export.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.FORMAT">FORMAT</label>\n        <md-select name="format" ng-model="vm.export.output" required>\n          <md-option value="csv">CSV</md-option>\n          <md-option value="xlsx">Excel (XLSX)</md-option>\n          <md-option value="pdf">PDF</md-option>\n          <md-option value="web">Web</md-option>\n        </md-select>\n        <div ng-messages="reportForm.format.$error" ng-show="reportForm.format.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeFrom" mdp-placeholder="Date Range From" mdp-format="YYYY-MM-DD" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.dateRangeFrom.$error" ng-show="reportForm.dateRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="maxDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MAX_INVALID">Date Range From Max field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeTo" mdp-placeholder="Date Range To" mdp-format="YYYY-MM-DD" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.dateRangeTo.$error" ng-show="reportForm.dateRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="minDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MIN_INVALID">Date Range From Min field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n      </div>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeFrom" mdp-placeholder="Time Range From" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.timeRangeFrom.$error" ng-show="reportForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeTo" mdp-placeholder="Time Range To" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.timeRangeTo.$error" ng-show="reportForm.timeRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.runReport($event)" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid" aria-label="RUN" translate="ANALYTICS.RUN_REPORT" translate-attr-aria-label="ANALYTICS.RUN_REPORT">\n          RUN REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.refreshDate()" aria-label="REFRESH" translate translate-attr-aria-label="ANALYTICS.REFRESH">\n          <md-icon md-font-icon="icon-refresh"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.REFRESH">REFRESH</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/run/web/dialog.html",'<md-dialog class="web-dialog" aria-label="Show Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.WEB_REPORT">Web Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.results.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.results.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_DATA">NO DATA</span>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/create/dialog.html",'<md-dialog class="odbc-dialog" aria-label="New Odbc">\n  <form name="odbcForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.odbc.name" ng-required="true" autofocus>\n\n        <div ng-messages="odbcForm[\'name\'].$error" ng-show="odbcForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DSN">DSN</label>\n        <input type="text" name="dsn" ng-model="vm.odbc.dsn" ng-required="true">\n\n        <div class="hint"><span translate="CALLYSQUARE.HELP.DSN"></span></div>\n        <div ng-messages="odbcForm[\'dsn\'].$error" ng-show="odbcForm[\'dsn\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DSN_REQUIRED">DSN field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.odbc.description">\n\n        <div ng-messages="odbcForm[\'description\'].$error" ng-show="odbcForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOdbc" ng-click="vm.saveOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid || odbcForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOdbc" ng-click="vm.addNewOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_ODBC" translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n          ADD ODBC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOdbc" ng-click="vm.deleteOdbc($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/odbcs.html",'<div id="odbcs" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.ODBC">ODBC</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedODBC.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedODBC =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-odbcs-count">\n          <span>{{vm.selectedODBC.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllODBC()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectODBC()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedODBC" csv-label="true" filename="odbcs.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedODBC($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ODBC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedODBC" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getODBC">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="dsn">{{ \'CALLYSQUARE.DSN\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.odbcs.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="odbc" md-select-id="id" ng-repeat="odbc in vm.odbcs.rows">\n                <td md-cell ng-if="odbc.userpic"><img class="avatar" alt="{{odbc.name}}" ng-src="api/users/{{odbc.id}}/avatar" /></td>\n                <td md-cell ng-if="!odbc.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{odbc.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="id ">{{odbc.id}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="name ">{{odbc.name}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="dsn ">{{odbc.dsn}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="description ">{{odbc.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(odbc, $event    )" translate="CALLYSQUARE.EDIT_ODBC">\n                          Edit Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestOdbc(odbc, $event    )" translate="CALLYSQUARE.TEST_ODBC">\n                          Test Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(odbc, $event    )" translate="CALLYSQUARE.DELETE_ODBC">\n                          Delete Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.odbcs.count}}" md-on-paginate="vm.getODBC" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ODBC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ODBC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-odbc-button" ng-click="vm.createOrEditOdbc($event)" aria-label="add odbc" translate translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ODBC BUTTON --\x3e\n</div>'),e.put("app/main/apps/callysquare/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title | translate}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-disabled="!vm.newProject">\n        <div ng-messages="projectForm.name.$error" ng-show="projectForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description">\n        <div ng-messages="projectForm.description.$error" ng-show="projectForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.openFromEditor" class="md-block">\n        \x3c!-- Added to check if I\'m opening the dialog directly from the square editor --\x3e\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="ADD" translate="CALLYSQUARE.ADD_PROJECT" translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",'<md-dialog class="project-dialog" aria-label="New dialog" ng-init="vm.onInit()">\n  <form name="dialogForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT"></span> <span translate="CALLYSQUARE.{{vm.cellName | uppercase}}"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block" ng-repeat="attribute in vm.attributes" ng-switch="attribute.name">\n        <label translate="CALLYSQUARE.{{attribute.name | uppercase}}">{{attribute.name | ucfirst }}</label>\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="answer|trunk_name|trunk_id|queue_id|file_id|variable_id|google_cloud_tts_text_type|google_tts_language|ispeech_tts_language|ispeech_asr_language|google_asr_language|hiddendigitspos|odbc_id|project_id|beep|account_id|interval_id|template_id|list_id|recordingFormat|callback_priority|aws_polly_voice|aws_polly_region|aws_lex_region|sms_account_id|findBy|pause_id|aws_text_type|dialogflow_language|ndagenerate_audio|ndaactivity_type|languageCode|ssmlGender|method|dialogflowV2_language" ng-required="attribute.required">\n          <md-option ng-if="attribute.defaultValue" ng-value="\'\'"> - None - </md-option>\n          <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="sip_id" ng-required="attribute.required">\n          <md-optgroup label="{{\'CALLYSQUARE.AGENTS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'agent\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.TELEPHONES\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'telephone\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.USERS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'admin\' || v.group === \'user\'">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START NUMBER INPUT --\x3e\n        <div ng-switch-when="timeout">\n          <div ng-switch="vm.cellName">\n            <input ng-switch-when-separator="|" ng-switch-when="answer|ext_dial|dial|queue" type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="record|ispeechasr|googleasr" type="number" step="any" name="{{attribute.name}}" min="-1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="restapi" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-default type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n          </div>\n        </div>\n        <input ng-switch-when-separator="|" ng-switch-when="speed" type="number" step="any" name="{{attribute.name}}" min="-10" max="-10" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="maxdigit|mindigit|digit" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="retry|response|hiddendigitsnum|priority" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        \x3c!--  END NUMBER INPUT --\x3e\n\n        \x3c!--  START TEXTAREA INPUT --\x3e\n        <textarea name="{{attribute.name}}" ng-model="attribute.value" ng-switch-when-separator="|" ng-switch-when="query|sms_text|condition|text|custom_action_data|headers|body|rawHeaders|rawBody|private_key" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n        \x3c!--  END TEXTAREA INPUT --\x3e\n\n        \x3c!-- START URL INPUT --\x3e\n        <input ng-switch-when-separator="|" ng-switch-when="ndauth_url|ndassistant_url|url" type="url" name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required">\n        \x3c!-- END URL INPUT --\x3e\n\n        \x3c!--  START TEXT INPUT --\x3e\n        <input ng-switch-default name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit">\n        <div class=\'hint\' ng-if="attribute.name === \'text\' && vm.cellName === \'tts\' ">\n          <span translate="CALLYSQUARE.HELP.MAX_TEXT_TTS" class="ng-scope">Max 250 chars are supported</span>\n        </div>\n        \x3c!--  END TEXT INPUT--\x3e\n\n        <div class="hint" ng-if="attribute.help">\n          <span translate="CALLYSQUARE.HELP.{{attribute.name | uppercase}}"></span>\n        </div>\n        <div ng-messages="dialogForm[attribute.name].$error" ng-show="dialogForm[attribute.name].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FIELD_REQUIRED">The field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="vm.crudPermissions.canEdit">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="dialogForm.$invalid || dialogForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/edit/edit.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="editForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label>XML</label>\n        <textarea name="preproduction" ng-model="vm.project.preproduction"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="editForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/import/import.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.IMPORT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="xml-uploader" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-file-added="vm.fileAdded($file)" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="CALLYSQUARE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="CALLYSQUARE.DROP_TO_UPLOAD_MESSAGE">You can also drop files here to upload. Only XML - Max. 5MB</span>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" ng-disabled="importForm.$invalid" aria-label="CLOSE" translate="CALLYSQUARE.CLOSE" translate-attr-aria-label="CALLYSQUARE.CLOSE">\n          CLOSE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/info/info.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="descriptionFrom" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.UPDATE_INFO"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description" md-autofocus>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NOTES">Description</label>\n        <textarea name="notes" ng-model="vm.project.notes"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="descriptionFrom.$invalid" aria-label="SAVE" translate="CALLYSQUARE.UPDATE_INFO" translate-attr-aria-label="CALLYSQUARE.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/open/open.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="openForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.OPEN_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.PROJECT">Project</label>\n        <md-select name="id" ng-model="vm.id" required>\n          <md-option value="{{p.id}}" ng-repeat="p in vm.projects">{{p.name}}</md-option>\n        </md-select>\n        <div ng-messages="openForm.id.$error" ng-show="openForm.id.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.PROJECT_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="openForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.OPEN_PROJECT" translate-attr-aria-label="CALLYSQUARE.OPEN">\n          OPEN\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/permissionadd/permissionadd.html",'<md-dialog class="projects-dialog" aria-label="projects">\n  <form name="projectsForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CALLYSQUARE.PERMISSIONADD_PROJECTS">Add User Permissions</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions"></ms-dual-multiselect>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="newForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.COPY_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus>\n        <div ng-messages="newForm.name.$error" ng-show="newForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="newForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.COPY_PROJECT" translate-attr-aria-label="CALLYSQUARE.COPY">\n          COPY\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/view.html",'<div id="callysquare-project" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="CALLYSQUARE.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/cprojects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}} {{vm.project.name}}\n          </div>\n          <div class="subtitle secondary-text text-truncate">\n            <span ng-if="vm.project.description">{{vm.project.description}} - </span><span translate="CALLYSQUARE.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-if="vm.crudPermissions.canEdit" ng-click="vm.updateInfo($event)" class="md-fab md-yellow-700-bg md-icon-button" aria-label="edit">\n        <md-icon md-font-icon="icon-tooltip-edit"></md-icon>\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <md-content class="callysquare-content">\n\n    <div id="geEditor" class="geEditor"></div>\n\n  </md-content>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-vector-square" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="notes">{{ \'CALLYSQUARE.NOTES\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="notes ">{{project.notes}}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(project, ev)" translate="CALLYSQUARE.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(project, ev)" translate="CALLYSQUARE.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button class="md-fab md-accent md-icon-button" id="add-project-button" ng-if="vm.crudPermissions.canEdit" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/squareRecordings/create/dialog.html",'<md-dialog class="squareRecording-dialog" aria-label="New SquareRecording">\n  <form name="squareRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.FILENAME">Filename</label>\n        <input type="" name="filename" ng-model="vm.squareRecording.filename" ng-required="true" autofocus>\n\n        <div ng-messages="squareRecordingForm[\'filename\'].$error" ng-show="squareRecordingForm[\'filename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FILENAME_REQUIRED">Filename field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSquareRecording" ng-click="vm.saveSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid || squareRecordingForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSquareRecording" ng-click="vm.addNewSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_SQUARERECORDING" translate-attr-aria-label="CALLYSQUARE.ADD_SQUARERECORDING">\n          ADD SQUARERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSquareRecording" ng-click="vm.deleteSquareRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",'<div id="squareRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.SQUARERECORDINGS">SquareRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSquareRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSquareRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-squareRecordings-count">\n          <span>{{vm.selectedSquareRecordings.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSquareRecordings()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSquareRecordings()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSquareRecordings" csv-label="true" filename="squareRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSquareRecordings($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SQUARERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSquareRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSquareRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="filename">{{ \'CALLYSQUARE.FILENAME\' | translate }}</th>\n                <th md-column md-order-by="projectName">{{ \'CALLYSQUARE.PROJECT\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'CALLYSQUARE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="callerid">{{ \'CALLYSQUARE.PHONE\' | translate }}</th>\n                <th md-column md-order-by="extension">{{ \'CALLYSQUARE.EXTEN\' | translate }}</th>\n                <th md-column>{{ \'CALLYSQUARE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'CALLYSQUARE.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.squareRecordings.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="squareRecording" md-select-id="id" ng-repeat="squareRecording in vm.squareRecordings.rows">\n                <td md-cell ng-if="squareRecording.userpic"><img class="avatar" alt="{{squareRecording.name}}" ng-src="api/users/{{squareRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!squareRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{squareRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="filename ">{{squareRecording.filename}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="projectName ">{{squareRecording.projectName}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="uniqueid ">{{squareRecording.uniqueid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="callerid ">{{squareRecording.callerid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="extension ">{{squareRecording.extension}}</td>\n                <td md-cell class="audio " ng-switch="squareRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="squareRecording.id" model="\'squareRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="createdAt ">{{squareRecording.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadCallySquareRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(squareRecording, $event  , \'square/recordings\'   )" translate="CALLYSQUARE.DOWNLOAD_SQUARERECORDING">\n                          Download SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(squareRecording, $event    )" translate="CALLYSQUARE.DELETE_SQUARERECORDING">\n                          Delete SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.squareRecordings.count}}" md-on-paginate="vm.getSquareRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SQUARERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/chatQueues.html",'<div id="chatQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATQUEUES">ChatQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatQueues-count">\n          <span>{{vm.selectedChatQueues.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatQueues()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatQueues()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatQueues" csv-label="true" filename="chatQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatQueues($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'CHAT.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatQueue" md-select-id="id" ng-repeat="chatQueue in vm.chatQueues.rows">\n                <td md-cell ng-if="chatQueue.userpic"><img class="avatar" alt="{{chatQueue.name}}" ng-src="api/users/{{chatQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="id ">{{chatQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="name ">{{chatQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="strategy ">{{ vm.arraystrategy[chatQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatQueue, $event    )" translate="CHAT.EDIT_CHATQUEUE">\n                          Edit ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(chatQueue, $event    )" translate="CHAT.TEAMADD_CHATQUEUE">\n                          teamadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatQueue, $event    )" translate="CHAT.AGENTADD_CHATQUEUE">\n                          agentadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatQueue, $event    )" translate="CHAT.DELETE_CHATQUEUE">\n                          Delete ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(chatQueue, $event    )" translate="CHAT.GOTOREALTIME_CHATQUEUE">\n                          goToRealtime ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatQueues.count}}" md-on-paginate="vm.getChatQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatQueue-button" ng-click="vm.createOrEditChatQueue($event)" aria-label="add chatQueue" translate translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/create/dialog.html",'<md-dialog class="chatQueue-dialog" aria-label="New ChatQueue">\n  <form name="chatQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newChatQueue">\n\n        <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n        <div ng-messages="chatQueueForm[\'name\'].$error" ng-show="chatQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.chatQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="chatQueueForm[\'strategy\'].$error" ng-show="chatQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="chatQueueForm[\'timeout\'].$error" ng-show="chatQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatQueue.description">\n\n        <div ng-messages="chatQueueForm[\'description\'].$error" ng-show="chatQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatQueue" ng-click="vm.saveChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid || chatQueueForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatQueue" ng-click="vm.addNewChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATQUEUE" translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n          ADD CHATQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatQueue" ng-click="vm.deleteChatQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATQUEUE">Add Agent to chatQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/view.html",'<div id="chat-chatQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatQueues-button md-icon-button" aria-label="Go to chatQueues" ng-click="vm.gotoChatQueues()" translate translate-attr-aria-label="CHAT.GO_TO_CHATQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatQueue-image" hide-xs>\n          <img ng-src="assets/images/business/chatQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatQueue.id}}\n            <span ng-if="vm.chatQueue.name">{{vm.chatQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.chatQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="CHAT.TEAMADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.chatQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/chatWebsites.html",'<div id="chatWebsites" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATWEBSITES">ChatWebsites</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatWebsites.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatWebsites =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatWebsites-count">\n          <span>{{vm.selectedChatWebsites.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatWebsites()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatWebsites()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatWebsites" csv-label="true" filename="chatWebsites.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatWebsites($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHATWEBSITE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatWebsites" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatWebsites">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'CHAT.KEY\' | translate }}</th>\n                <th md-column md-order-by="address">{{ \'CHAT.MOTIONADDRESS\' | translate }}</th>\n                <th md-column md-order-by="remote">{{ \'CHAT.MOTIONPROXY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatWebsites.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatWebsite" md-select-id="id" ng-repeat="chatWebsite in vm.chatWebsites.rows">\n                <td md-cell ng-if="chatWebsite.userpic"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="api/users/{{chatWebsite.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatWebsite.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="id ">{{chatWebsite.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="name ">{{chatWebsite.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="key ">{{chatWebsite.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="address ">{{chatWebsite.address}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="remote ">{{chatWebsite.remote}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="description ">{{chatWebsite.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatWebsite, $event    )" translate="CHAT.EDIT_CHATWEBSITE">\n                          Edit ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(chatWebsite, $event    )" translate="CHAT.INTERACTIONS_CHATWEBSITE">\n                          Interactions ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.offlinemessagesgoto(chatWebsite, $event    )" translate="CHAT.OFFLINEMESSAGES_CHATWEBSITE">\n                          OfflineMessages ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatWebsite, $event    )" translate="CHAT.AGENTADD_CHATWEBSITE">\n                          AgentAdd ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatWebsite, $event    )" translate="CHAT.DELETE_CHATWEBSITE">\n                          Delete ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatWebsites.count}}" md-on-paginate="vm.getChatWebsites" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATWEBSITE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATWEBSITE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatWebsite-button" ng-click="vm.createOrEditChatWebsite($event)" aria-label="add chatWebsite" translate translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATWEBSITE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/create/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus ng-disabled="!vm.newChatWebsite">\n\n        <div ng-messages="chatWebsiteForm[\'name\'].$error" ng-show="chatWebsiteForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'key\'].$error" ng-show="chatWebsiteForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n        <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'address\'].$error" ng-show="chatWebsiteForm[\'address\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.chatWebsite.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="chatWebsiteForm[\'remote\'].$error" ng-show="chatWebsiteForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n        <div ng-messages="chatWebsiteForm[\'ListId\'].$error" ng-show="chatWebsiteForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId">\n          <md-option ng-value="null">Always</md-option>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteForm[\'IntervalId\'].$error" ng-show="chatWebsiteForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatWebsite.description">\n\n        <div ng-messages="chatWebsiteForm[\'description\'].$error" ng-show="chatWebsiteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatWebsite" ng-click="vm.saveChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid || chatWebsiteForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatWebsite" ng-click="vm.addNewChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATWEBSITE" translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n          ADD CHATWEBSITE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatWebsite" ng-click="vm.deleteChatWebsite($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",'<md-dialog class="chatWebsite-dialog" aria-label="chatWebsite" ng-init="vm.onInit()">\n  <form name="chatWebsiteForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATWEBSITE">Add Agent to chatWebsite</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/agent/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'agent\'].$error" ng-show="chatWebsiteFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/amazonlex/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'accesskeyid\'].$error" ng-show="chatWebsiteFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'secretaccesskey\'].$error" ng-show="chatWebsiteFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'lexregion\'].$error" ng-show="chatWebsiteFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'botname\'].$error" ng-show="chatWebsiteFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/autoreply/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'times\'].$error" ng-show="chatWebsiteFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'text\'].$error" ng-show="chatWebsiteFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/close/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'disposition\'].$error" ng-show="chatWebsiteFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflow/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'key\'].$error" ng-show="chatWebsiteFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'projectId\'].$error" ng-show="chatWebsiteFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'clientEmail\'].$error" ng-show="chatWebsiteFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'privateKey\'].$error" ng-show="chatWebsiteFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotoif/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'condition\'].$error" ng-show="chatWebsiteFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'truepriority\'].$error" ng-show="chatWebsiteFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'falsepriority\'].$error" ng-show="chatWebsiteFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'priority\'].$error" ng-show="chatWebsiteFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/noop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'value\'].$error" ng-show="chatWebsiteFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/queue/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'queue\'].$error" ng-show="chatWebsiteFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/system/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'command\'].$error" ng-show="chatWebsiteFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'variable\'].$error" ng-show="chatWebsiteFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tag/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'tag\'].$error" ng-show="chatWebsiteFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",'<md-dialog class="chatCannedAnswer-dialog" aria-label="New ChatCannedAnswer">\n  <form name="chatCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.chatCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="chatCannedAnswerForm[\'key\'].$error" ng-show="chatCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.chatCannedAnswer.value" required></textarea>\n\n        <div ng-messages="chatCannedAnswerForm[\'value\'].$error" ng-show="chatCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatCannedAnswer.description">\n\n        <div ng-messages="chatCannedAnswerForm[\'description\'].$error" ng-show="chatCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatCannedAnswer" ng-click="vm.saveChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid || chatCannedAnswerForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatCannedAnswer" ng-click="vm.addNewChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATCANNEDANSWER" translate-attr-aria-label="CHAT.ADD_CHATCANNEDANSWER">\n          ADD CHATCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatCannedAnswer" ng-click="vm.deleteChatCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",'<md-dialog class="offlineMessage-dialog" aria-label="New OfflineMessage">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.title | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-content flex layout-padding>\n    <pre ng-if="vm.isHtml">{{vm.message.body}}</pre>\n    <div ng-if="!vm.isHtml" ng-bind-html-unsafe="vm.message.body"></div>\n\n    <span ng-repeat="attachment in vm.attachments">\n      <md-button class="md-icon-button no-margin no-padding" ng-click="vm.download(attachment)">\n        <md-icon class="no-margin material-icons" aria-label="Attachment">attach_file</md-icon>\n      </md-button>\n      <span>{{attachment.name}}</span><br />\n    </span>\n  </md-content>\n\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",'<md-dialog class="chatProactiveAction-dialog" aria-label="New ChatProactiveAction">\n  <form name="chatProactiveActionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.chatProactiveAction.name" ng-required="true" autofocus>\n\n        <div ng-messages="chatProactiveActionForm[\'name\'].$error" ng-show="chatProactiveActionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.chatProactiveAction.type">\n\n          <md-option ng-value="\'mouseOver\'"> {{ \'CHAT.MOUSEOVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'timeout\'"> {{ \'CHAT.TIMEOUT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="chatProactiveActionForm[\'type\'].$error" ng-show="chatProactiveActionForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'mouseOver\'" class="md-block">\n        <label translate="CHAT.SELECTOR">Selector</label>\n        <input type="" name="selector" ng-model="vm.chatProactiveAction.selector" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'selector\'].$error" ng-show="chatProactiveActionForm[\'selector\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SELECTOR_REQUIRED">Selector field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'timeout\'" class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatProactiveAction.timeout" min="1" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'timeout\'].$error" ng-show="chatProactiveActionForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatProactiveAction" ng-click="vm.saveChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid || chatProactiveActionForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatProactiveAction" ng-click="vm.addNewChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATPROACTIVEACTION" translate-attr-aria-label="CHAT.ADD_CHATPROACTIVEACTION">\n          ADD CHATPROACTIVEACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatProactiveAction" ng-click="vm.deleteChatProactiveAction($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/view.html",'<div id="chat-chatWebsite" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatWebsites-button md-icon-button" aria-label="Go to chatWebsites" ng-click="vm.gotoChatWebsites()" translate translate-attr-aria-label="CHAT.GO_TO_CHATWEBSITES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatWebsite-image" hide-xs>\n          <img ng-src="assets/images/business/chatWebsites.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatWebsite.id}}\n            <span ng-if="vm.chatWebsite.name">{{vm.chatWebsite.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatWebsite.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatWebsite, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATWEBSITE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatWebsite()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (scriptForm.$invalid) || (intervalForm.$invalid) || (dispositionForm.$invalid) || (appearanceForm.$invalid) || (onlinestatusForm.$invalid) || (offlinestatusForm.$invalid) || (closingformForm.$invalid) || (unmanagedstatusForm.$invalid) || (interactionForm.$invalid) || (whitelabelForm.$invalid) || (logoForm.$invalid) || (agentAvatarForm.$invalid) || (customerAvatarForm.$invalid) || (systemAvatarForm.$invalid) || (chatFormOnlineForm.$invalid) || (chatFormOfflineForm.$invalid) || (proactiveForm.$invalid) || (chatDispositionsForm.$invalid) || (chatCannedAnswersForm.$invalid) || (vidaooForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid) || (offlineMessagesForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n                <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'address\'].$error" ng-show="generalForm[\'address\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.fidelity" class="md-block">\n                <label translate="CHAT.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatWebsite.timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.chatWebsite.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatWebsite.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="CHAT.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.chatWebsite.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.queueTransfer == true" class="md-block">\n                <label translate="CHAT.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.chatWebsite.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentTransfer == true" class="md-block">\n                <label translate="CHAT.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.chatWebsite.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container script md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteScriptController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite)" class="content" md-background-bg>\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="CHAT.SCRIPT">SCRIPT</div>\n              </div>\n\n              <form name="scriptForm" flex="100" novalidate>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.TOKEN">Token</label>\n                  <input type="text" name="token" ng-model="vm_ac.chatWebsite.token" autofocus ng-disabled="true">\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n                  <input type="url" name="remote" ng-model="vm_ac.chatWebsite.remote" required>\n                  <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n                  <div ng-messages="scriptForm[\'remote\'].$error" ng-show="scriptForm[\'remote\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">Motion Proxy field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">Motion Proxy must be a valid url e.g.: http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.WEBSITESCRIPT">WebsiteScript</label>\n                  <div>\n                    <pre style="font-size: 13px;">\n                    {{vm_ac.start}} {{vm_ac.script}} {{vm_ac.end}}\n                    </pre>\n                  </div>\n                  <div class="hint"><span translate="CHAT.HELP.COPYSCRIPTTOCLIPBOARD"></span></div>\n                </md-input-container>\n              </form>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container interval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERVAL">INTERVAL</div>\n            </div>\n            <form name="intervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Always</md-option>\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="intervalForm[\'IntervalId\'].$error" ng-show="intervalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.TIMEZONE">Timezone</label>\n                <ms-timezone name="timezone" ng-model="vm.chatWebsite.timezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="CHAT.HELP.TIMEZONE"></span></div>\n                <div ng-messages="intervalForm[\'timezone\'].$error" ng-show="intervalForm[timezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.mandatoryDisposition" class="md-block">\n                <label translate="CHAT.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.chatWebsite.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SNIPPET">SNIPPET</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container appearance md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.APPEARANCE">APPEARANCE</div>\n            </div>\n            <form name="appearanceForm" novalidate>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color" label="{{\'CHAT.MAINCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color_button" label="{{\'CHAT.BUTTONCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textColor" label="{{\'CHAT.TEXTCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.backgroundColor" label="{{\'CHAT.BACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FONTSIZE">fontSize</label>\n                <input type="number" name="fontSize" ng-model="vm.chatWebsite.fontSize" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'fontSize\'].$error" ng-show="appearanceForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FONTSIZE_REQUIRED">fontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">fontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADERSHAPE">headershape</label>\n                <md-select name="header_shape" ng-model="vm.chatWebsite.header_shape" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'rounded\'"> {{ \'CHAT.ROUNDED\' | translate }} </md-option>\n\n                  <md-option ng-value="\'squared\'"> {{ \'CHAT.SQUARED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'header_shape\'].$error" ng-show="appearanceForm[\'header_shape\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADERSHAPE_REQUIRED">headershape field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showAgentAvatar" aria-label="ShowAgentAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWAGENTAVATAR">ShowAgentAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showCustomerAvatar" aria-label="showCustomerAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWCUSTOMERAVATAR">showCustomerAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SNIPPETSWIPEOUT">snippetSwipeOut</label>\n                <md-select name="alignment" ng-model="vm.chatWebsite.alignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'bottom_right\'"> {{ \'CHAT.BOTTOM_RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'right\'"> {{ \'CHAT.RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'left\'"> {{ \'CHAT.LEFT\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'alignment\'].$error" ng-show="appearanceForm[\'alignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SNIPPETSWIPEOUT_REQUIRED">snippetSwipeOut field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.alignment !== \'bottom_right\'" class="md-block">\n                <label translate="CHAT.VERTICALPOSITION">verticalPosition</label>\n                <input type="number" name="verticalAlignment" ng-model="vm.chatWebsite.verticalAlignment" min="0" max="100" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.VERTICALPOSITION"></span></div>\n                <div ng-messages="appearanceForm[\'verticalAlignment\'].$error" ng-show="appearanceForm[\'verticalAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_REQUIRED">verticalPosition field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGESALIGNMENT">messagesAlignment</label>\n                <md-select name="messagesAlignment" ng-model="vm.chatWebsite.messagesAlignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'alternate\'"> {{ \'CHAT.ALTERNATE\' | translate }} </md-option>\n\n                  <md-option ng-value="\'centered\'"> {{ \'CHAT.CENTERED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'messagesAlignment\'].$error" ng-show="appearanceForm[\'messagesAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DEFAULTTITLE">defaultTitle</label>\n                <input type="text" name="defaultTitle" ng-model="vm.chatWebsite.defaultTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'defaultTitle\'].$error" ng-show="appearanceForm[\'defaultTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_REQUIRED">defaultTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>defaultTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container onlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.ONLINESTATUS">ONLINESTATUS</div>\n            </div>\n            <form name="onlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_ONLINE">header_online</label>\n                <input type="text" name="header_online" ng-model="vm.chatWebsite.header_online" md-maxlength="255" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'header_online\'].$error" ng-show="onlinestatusForm[\'header_online\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_REQUIRED">header_online field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_online must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.START_CHAT_BUTTON">start_chat_button</label>\n                <input type="text" name="start_chat_button" ng-model="vm.chatWebsite.start_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'start_chat_button\'].$error" ng-show="onlinestatusForm[\'start_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_REQUIRED">start_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>start_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container offlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.OFFLINESTATUS">OFFLINESTATUS</div>\n            </div>\n            <form name="offlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.hideWhenOffline" aria-label="hideWhenOffline" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.HIDEWHENOFFLINE">hideWhenOffline</span></md-switch>\n                <div class="hint"><span translate="CHAT.HELP.HIDEWHENOFFLINE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_OFFLINE">header_offline</label>\n                <input type="text" name="header_offline" ng-model="vm.chatWebsite.header_offline" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'header_offline\'].$error" ng-show="offlinestatusForm[\'header_offline\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_REQUIRED">header_offline field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_offline must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINE_CHAT_BUTTON">offline_chat_button</label>\n                <input type="text" name="offline_chat_button" ng-model="vm.chatWebsite.offline_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offline_chat_button\'].$error" ng-show="offlinestatusForm[\'offline_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_REQUIRED">offline_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>offline_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGESUBJECT">offlineMessageSubject</label>\n                <input type="text" name="offlineMessageSubject" ng-model="vm.chatWebsite.offlineMessageSubject" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageSubject\'].$error" ng-show="offlinestatusForm[\'offlineMessageSubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_REQUIRED">offlineMessageSubject field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageSubject must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGEBODY">offlineMessageBody</label>\n                <input type="text" name="offlineMessageBody" ng-model="vm.chatWebsite.offlineMessageBody" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageBody\'].$error" ng-show="offlinestatusForm[\'offlineMessageBody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_REQUIRED">offlineMessageBody field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageBody must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container closingform md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CLOSINGFORM">CLOSINGFORM</div>\n            </div>\n            <form name="closingformForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGE">closingMessage</label>\n                <textarea name="closingMessage" ng-model="vm.chatWebsite.closingMessage" md-maxlength="255" required autofocus></textarea>\n\n                <div ng-messages="closingformForm[\'closingMessage\'].$error" ng-show="closingformForm[\'closingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_REQUIRED">closingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPMESSAGEBUTTON">skipMessageButton</label>\n                <input type="text" name="skipMessageButton" ng-model="vm.chatWebsite.skipMessageButton" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'skipMessageButton\'].$error" ng-show="closingformForm[\'skipMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_REQUIRED">skipMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>skipMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableRating" aria-label="enableRating" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLERATING">enableRating</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating" class="md-block">\n                <label translate="CHAT.RATINGTYPE">ratingType</label>\n                <md-select name="ratingType" ng-model="vm.chatWebsite.ratingType" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'star\'">Star</md-option>\n                  <md-option ng-value="\'thumb\'">Thumb</md-option>\n                </md-select>\n                <div ng-messages="closingformForm[\'ratingType\'].$error" ng-show="closingformForm[\'ratingType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGTYPE_REQUIRED">ratingType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating && vm.chatWebsite.ratingType === \'star\'" class="md-block">\n                <label translate="CHAT.RATINGSTARSNUMBER">ratingStarsNumber</label>\n                <input type="number" name="ratingStarsNumber" ng-model="vm.chatWebsite.ratingStarsNumber" min="2" max="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'ratingStarsNumber\'].$error" ng-show="closingformForm[\'ratingStarsNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_REQUIRED">ratingStarsNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>2</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableFeedback" aria-label="enableFeedback" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEFEEDBACK">enableFeedback</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableFeedback" class="md-block">\n                <label translate="CHAT.FEEDBACKTITLE">feedbackTitle</label>\n                <input type="text" name="feedbackTitle" ng-model="vm.chatWebsite.feedbackTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'feedbackTitle\'].$error" ng-show="closingformForm[\'feedbackTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_REQUIRED">feedbackTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>feedbackTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.forwardTranscript" aria-label="forwardTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.FORWARDTRANSCRIPT">forwardTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.forwardTranscript" class="md-block">\n                <label translate="CHAT.FORWARDTRANSCRIPTMESSAGE">forwardTranscriptMessage</label>\n                <input type="text" name="forwardTranscriptMessage" ng-model="vm.chatWebsite.forwardTranscriptMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'forwardTranscriptMessage\'].$error" ng-show="closingformForm[\'forwardTranscriptMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_REQUIRED">forwardTranscriptMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>forwardTranscriptMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGEBUTTON">closingMessageButton</label>\n                <input type="text" name="closingMessageButton" ng-model="vm.chatWebsite.closingMessageButton" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'closingMessageButton\'].$error" ng-show="closingformForm[\'closingMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_REQUIRED">closingMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container unmanagedstatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.UNMANAGEDSTATUS">UNMANAGEDSTATUS</div>\n            </div>\n            <form name="unmanagedstatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.autoclose" aria-label="autoclose" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AUTOCLOSE">autoclose</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableUnmanagedNote" aria-label="enableUnmanagedNote" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEUNMANAGEDNOTE">enableUnmanagedNote</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.UNMANAGEDMESSAGE">unmanagedMessage</label>\n                <input type="text" name="unmanagedMessage" ng-model="vm.chatWebsite.unmanagedMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'unmanagedMessage\'].$error" ng-show="unmanagedstatusForm[\'unmanagedMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_REQUIRED">unmanagedMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>unmanagedMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPUNMANAGED">skipUnmanaged</label>\n                <input type="text" name="skipUnmanaged" ng-model="vm.chatWebsite.skipUnmanaged" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'skipUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'skipUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_REQUIRED">skipUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>skipUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.SENDUNMANAGED">sendUnmanaged</label>\n                <input type="text" name="sendUnmanaged" ng-model="vm.chatWebsite.sendUnmanaged" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'sendUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'sendUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_REQUIRED">sendUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>sendUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.NOTETITLE">noteTitle</label>\n                <input type="text" name="noteTitle" ng-model="vm.chatWebsite.noteTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'noteTitle\'].$error" ng-show="unmanagedstatusForm[\'noteTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NOTETITLE_REQUIRED">noteTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.NOTETITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>noteTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interaction md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERACTION">INTERACTION</div>\n            </div>\n            <form name="interactionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENTIDENTIFIER">agentIdentifier</label>\n                <md-select name="agentIdentifier" ng-model="vm.chatWebsite.agentIdentifier" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'website_alias\'"> {{ \'CHAT.WEBSITEALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_alias\'"> {{ \'CHAT.AGENTALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_fullname\'"> {{ \'CHAT.AGENTFULLNAME\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.AGENTIDENTIFIER"></span></div>\n                <div ng-messages="interactionForm[\'agentIdentifier\'].$error" ng-show="interactionForm[\'agentIdentifier\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTIDENTIFIER_REQUIRED">agentIdentifier field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CUSTOMERALIAS">customerAlias</label>\n                <input type="text" name="customerAlias" ng-model="vm.chatWebsite.customerAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'customerAlias\'].$error" ng-show="interactionForm[\'customerAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_REQUIRED">customerAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>customerAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGEFONTSIZE">messageFontSize</label>\n                <input type="number" name="messageFontSize" ng-model="vm.chatWebsite.messageFontSize" min="0" max="20" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'messageFontSize\'].$error" ng-show="interactionForm[\'messageFontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_REQUIRED">messageFontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>20</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentIdentifier === \'website_alias\'" class="md-block">\n                <label translate="CHAT.WEBSITEALIAS">WebsiteAlias</label>\n                <input type="text" name="agentAlias" ng-model="vm.chatWebsite.agentAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.WEBSITEALIAS"></span></div>\n                <div ng-messages="interactionForm[\'agentAlias\'].$error" ng-show="interactionForm[\'agentAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_REQUIRED">WebsiteAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>WebsiteAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGQUESTION">closingQuestion</label>\n                <input type="text" name="closingQuestion" ng-model="vm.chatWebsite.closingQuestion" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'closingQuestion\'].$error" ng-show="interactionForm[\'closingQuestion\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_REQUIRED">closingQuestion field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_MAX_LENGTH" translate-values=\'{max: 255}\'>closingQuestion must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITSUCCESSMESSAGE">formSubmitSuccessMessage</label>\n                <input type="text" name="formSubmitSuccessMessage" ng-model="vm.chatWebsite.formSubmitSuccessMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitSuccessMessage\'].$error" ng-show="interactionForm[\'formSubmitSuccessMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_REQUIRED">formSubmitSuccessMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitSuccessMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITFAILUREMESSAGE">formSubmitFailureMessage</label>\n                <input type="text" name="formSubmitFailureMessage" ng-model="vm.chatWebsite.formSubmitFailureMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitFailureMessage\'].$error" ng-show="interactionForm[\'formSubmitFailureMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_REQUIRED">formSubmitFailureMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitFailureMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerWriting" aria-label="enableCustomerWriting" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERWRITING">enableCustomerWriting</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGTITLE">waitingTitle</label>\n                <input type="text" name="waitingTitle" ng-model="vm.chatWebsite.waitingTitle" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'waitingTitle\'].$error" ng-show="interactionForm[\'waitingTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_REQUIRED">waitingTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGMESSAGE">waitingMessage</label>\n                <textarea name="waitingMessage" ng-model="vm.chatWebsite.waitingMessage" md-maxlength="255" required></textarea>\n\n                <div ng-messages="interactionForm[\'waitingMessage\'].$error" ng-show="interactionForm[\'waitingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_REQUIRED">waitingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.PLACEHOLDERMESSAGE">placeholderMessage</label>\n                <input type="text" name="placeholderMessage" ng-model="vm.chatWebsite.placeholderMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'placeholderMessage\'].$error" ng-show="interactionForm[\'placeholderMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_REQUIRED">placeholderMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>placeholderMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.download_transcript" aria-label="downloadTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DOWNLOADTRANSCRIPT">downloadTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerAttachment" aria-label="enableCustomerAttachment" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERATTACHMENT">enableCustomerAttachment</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableSendButton" aria-label="enableSendButton" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLESENDBUTTON">enableSendButton</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerCheckmarks" aria-label="enableCustomerCheckmarks" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERCHECKMARKS">enableCustomerCheckmarks</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SYSTEMALIAS">systemAlias</label>\n                <input type="text" name="systemAlias" ng-model="vm.chatWebsite.systemAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'systemAlias\'].$error" ng-show="interactionForm[\'systemAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_REQUIRED">systemAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>systemAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container whitelabel md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.WHITELABEL">WHITELABEL</div>\n            </div>\n            <form name="whitelabelForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.defaultWhiteLabel" aria-label="default" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DEFAULT">default</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.defaultWhiteLabel" class="md-block">\n                <label translate="CHAT.WHITELABEL">whiteLabel</label>\n                <textarea name="whiteLabel" ng-model="vm.chatWebsite.whiteLabel" md-maxlength="255" required></textarea>\n\n                <div ng-messages="whitelabelForm[\'whiteLabel\'].$error" ng-show="whitelabelForm[\'whiteLabel\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WHITELABEL_REQUIRED">whiteLabel field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WHITELABEL_MAX_LENGTH" translate-values=\'{max: 255}\'>whiteLabel must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container logo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.LOGO">LOGO</div>\n            </div>\n            <div ng-controller="ChatWebsitelogoController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="logoimage in vm_ca.chatWebsite.images" ng-switch="logoimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="logoimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{logoimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container agentavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.AGENTAVATAR">AGENTAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsiteagentAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="agentAvatarimage in vm_ca.chatWebsite.images" ng-switch="agentAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{agentAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="agentAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{agentAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container customeravatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CUSTOMERAVATAR">CUSTOMERAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitecustomerAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="customerAvatarimage in vm_ca.chatWebsite.images" ng-switch="customerAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{customerAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="customerAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{customerAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container systemavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.SYSTEMAVATAR">SYSTEMAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitesystemAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="systemAvatarimage in vm_ca.chatWebsite.images" ng-switch="systemAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{systemAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="systemAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{systemAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ONLINE">ONLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformonline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteonlineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="onlineForm" novalidate>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKey">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.onlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.onlineForm.fromKey != null ? vm_fonc.chatWebsite.onlineForm.items[vm_fonc.chatWebsite.onlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items track by $index" md-component-id="{{\'onlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.VARIABLE">Variable</label>\n                                <md-select ng-model="item.variable">\n                                  <md-option ng-value="null">None</md-option>\n                                  <md-option ng-repeat="variable in vm_fonc.variables" ng-value="variable.name">{{ variable.name }}</md-option>\n                                </md-select>\n                              </md-input-container>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.onlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINE">OFFLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformoffline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteofflineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="offlineForm" novalidate>\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.forwardOffline" aria-label="forwardOffline"><span translate="CHAT.FORWARD_OFFLINE">forwardOffline</span></md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.forwardOffline">\n                          <label translate="CHAT.FORWARD_OFFLINE_ADDRESS">FORWARD OFFLINE ADDRESS</label>\n                          <input type="text" name="forwardOfflineAddress" ng-model="vm_fonc.chatWebsite.forwardOfflineAddress">\n                          <div class="hint"><span translate="CHAT.HELP.FORWARD_OFFLINE"></span></div>\n                          <div ng-messages="offlineForm[\'forwardOfflineAddress\'].$error" ng-show="offlineForm[\'forwardOfflineAddress\'].$touched" role="alert">\n                            <div ng-message="email">\n                              <span translate="CHAT.ERRORS.EMAIL_MUST_BE_VALID">forwardOffline must be a valid e-mail address</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.openNewInteraction" aria-label="openNewInteraction">\n                            <span translate="CHAT.OPEN_NEW_INTERACTION">openNewInteraction</span>\n                          </md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction">\n                          <label translate="CHAT.EMAIL_ACCOUNT">Email account</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.MailAccountId">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction && vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.SUBJECT">Subject</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.subjectOffline" md-selected-text="vm_fonc.chatWebsite.subjectOffline != null ? vm_fonc.chatWebsite.subjectOffline : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="item.props.title">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKeyOffline">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.offlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.offlineForm.fromKey != null ? vm_fonc.chatWebsite.offlineForm.items[vm_fonc.chatWebsite.offlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items track by $index" md-component-id="{{\'offlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n\n                              <md-input-container class="md-block" ng-if="item.type != \'upload\'">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.offlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.PROACTIVEACTIONS">PROACTIVEACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container proactive md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteProactiveActionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.PROACTIVEACTIONS">ProactiveActions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteProactiveActions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event)" aria-label="add chatProactiveAction" translate translate-attr-label="CHAT.ADD_CHATPROACTIVEACTION">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteProactiveActions.length}} {{vm_dc.selectedChatWebsiteProactiveActions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteProactiveActions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteProactiveActions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteProactiveActions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteProactiveActions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'CHAT.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CHAT.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="selector">\n                        {{ \'CHAT.SELECTOR\' | translate }}\n                      </th>\n                      <th md-column md-order-by="timeout">\n                        {{ \'CHAT.TIMEOUT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatProactiveAction" md-select-id="id" ng-repeat="chatProactiveAction in vm_dc.chatWebsiteProactiveActions.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ \'CHAT.\' + vm_dc.arraytype[chatProactiveAction.type].option | uppercase | translate }}\n                      </td>\n\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.selector}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.timeout}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ chatProactiveAction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" translate="CHAT.EDIT_CHATPROACTIVEACTION">\n                                Edit ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatProactiveAction, $event)" translate="CHAT.DELETE_CHATPROACTIVEACTION">\n                                Delete ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteProactiveActions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATPROACTIVEACTION_AVAILABLE">No chatproactiveaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteProactiveActions.count}}" md-on-paginate="vm_dc.getChatWebsiteProactiveActions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ChatWebsiteDispositionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="chatWebsite-detail-form-container chatdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CHAT.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add chat dispositions" translate translate-attr-label="CHAT.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="chatWebsites.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteChatCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.CHATCANNEDANSWERS">ChatCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteChatCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event)" aria-label="add chatCannedAnswer" translate translate-attr-label="CHAT.ADD_CHATCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteChatCannedAnswers.length}} {{vm_dc.selectedChatWebsiteChatCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteChatCannedAnswers" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteChatCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteChatCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteChatCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'CHAT.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'CHAT.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'CHAT.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatCannedAnswer" md-select-id="id" ng-repeat="chatCannedAnswer in vm_dc.chatWebsiteChatCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{ chatCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" translate="CHAT.EDIT_CHATCANNEDANSWER">\n                                Edit ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatCannedAnswer, $event)" translate="CHAT.DELETE_CHATCANNEDANSWER">\n                                Delete ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteChatCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATCANNEDANSWER_AVAILABLE">No chatcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteChatCannedAnswers.count}}" md-on-paginate="vm_dc.getChatWebsiteChatCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.VIDEO">VIDEO</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container vidaoo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.VIDAOO">VIDAOO</div>\n            </div>\n            <form name="vidaooForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.vidaooEscalation" aria-label="vidaooEscalation" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.VIDAOOESCALATION">vidaooEscalation</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOAPIKEY">vidaooApiKey</label>\n                <input type="text" name="vidaooApiKey" ng-model="vm.chatWebsite.vidaooApiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooApiKey\'].$error" ng-show="vidaooForm[\'vidaooApiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOAPIKEY_REQUIRED">vidaooApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOTOPIC">vidaooTopic</label>\n                <input type="text" name="vidaooTopic" ng-model="vm.chatWebsite.vidaooTopic" value="Generated by XCALLY Motion" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooTopic\'].$error" ng-show="vidaooForm[\'vidaooTopic\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOTOPIC_REQUIRED">vidaooTopic field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOONOTE">vidaooNote</label>\n                <input type="text" name="vidaooNote" ng-model="vm.chatWebsite.vidaooNote" value="Meeting generated for interaction #{{interaction.id}} by {{agent.name}}" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooNote\'].$error" ng-show="vidaooForm[\'vidaooNote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOONOTE_REQUIRED">vidaooNote field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOMETADATA">vidaooMetadata</label>\n                <textarea name="vidaooMetadata" ng-model="vm.chatWebsite.vidaooMetadata"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteActionsController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="CHAT.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedChatWebsiteApps.length}} {{vm_ac.selectedChatWebsiteApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedChatWebsiteApps($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedChatWebsiteApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.chatWebsiteApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editChatWebsiteApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.chatWebsiteApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteInteractionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getChatWebsiteInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getChatWebsiteInteractions()" aria-label="refresh Interactions" translate translate-attr-label="CHAT.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteInteractions.length}} {{vm_dc.selectedChatWebsiteInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteInteractions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteInteractions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'CHAT.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'CHAT.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'CHAT.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.chatWebsiteInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'CHAT.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'CHAT.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spychatInteraction($event, interaction)" translate="CHAT.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="CHAT.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteInteractions.count}}" md-on-paginate="vm_dc.getChatWebsiteInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINEMESSAGES">OFFLINEMESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container offlinemessages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteOfflineMessagesController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.OFFLINEMESSAGES">OfflineMessages</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteOfflineMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteOfflineMessages.length}} {{vm_dc.selectedChatWebsiteOfflineMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteOfflineMessages" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteOfflineMessages($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteOfflineMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteOfflineMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="offlineMessage" md-select-id="id" ng-repeat="offlineMessage in vm_dc.chatWebsiteOfflineMessages.rows">\n                      <td md-cell>\n                        {{offlineMessage.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="offlineMessage.Attachments.length > 0">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{offlineMessage.Contact.firstName}}\n                      </td>\n                      <td md-cell>\n                        {{ offlineMessage.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showOfflineMessageChatWebsiteOfflineMessage($event, offlineMessage)" translate="CHAT.SHOW_OFFLINEMESSAGE">\n                                SHOW OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(offlineMessage, $event)" translate="CHAT.DELETE_OFFLINEMESSAGE">\n                                Delete OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteOfflineMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_OFFLINEMESSAGE_AVAILABLE">No offlinemessage available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteOfflineMessages.count}}" md-on-paginate="vm_dc.getChatWebsiteOfflineMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'CHAT.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'CHAT.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'CHAT.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'CHAT.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'CHAT.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'CHAT.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'CHAT.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'CHAT.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'CHAT.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'CHAT.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'CHAT.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'CHAT.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"CHAT.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"CHAT.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"CHAT.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"CHAT.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"CHAT.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"CHAT.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"CHAT.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"CHAT.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'CHAT.PAGE' | translate}}:', rowsPerPage: '{{'CHAT.ROWSPERPAGE' | translate}}:', of: '{{'CHAT.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/chat/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n        <th md-column>{{ \'CHAT.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'CHAT.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'CHAT.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="CHAT.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="CHAT.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/chat/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCompanies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-companies-count">\n          <span>{{vm.selectedCompanies.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCompanies()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCompanies()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCompanies" csv-label="true" filename="companies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCompanies($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- COMPANY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCompanies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCompanies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.companies.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="company" md-select-id="id" ng-repeat="company in vm.companies.rows">\n                <td md-cell ng-if="company.userpic"><img class="avatar" alt="{{company.name}}" ng-src="api/users/{{company.id}}/avatar" /></td>\n                <td md-cell ng-if="!company.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{company.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="id ">{{company.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="name ">{{company.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="description ">{{company.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(company, $event    )" translate="CONTACTMANAGER.EDIT_COMPANY">\n                          Edit Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(company, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_COMPANY">\n                          goToContacts Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(company, $event    )" translate="CONTACTMANAGER.DELETE_COMPANY">\n                          Delete Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.companies.count}}" md-on-paginate="vm.getCompanies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / COMPANY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD COMPANY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-company-button" ng-click="vm.createOrEditCompany($event)" aria-label="add company" translate translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD COMPANY BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/create/dialog.html",'<md-dialog class="company-dialog" aria-label="New Company">\n  <form name="companyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus>\n\n        <div ng-messages="companyForm[\'name\'].$error" ng-show="companyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.company.phone">\n\n        <div ng-messages="companyForm[\'phone\'].$error" ng-show="companyForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.VAT">Vat</label>\n        <input type="text" name="vat" ng-model="vm.company.vat">\n\n        <div ng-messages="companyForm[\'vat\'].$error" ng-show="companyForm[\'vat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input type="text" name="fax" ng-model="vm.company.fax">\n\n        <div ng-messages="companyForm[\'fax\'].$error" ng-show="companyForm[\'fax\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n        <input type="text" name="companyId" ng-model="vm.company.companyId">\n\n        <div ng-messages="companyForm[\'companyId\'].$error" ng-show="companyForm[\'companyId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.company.type">\n\n        <div ng-messages="companyForm[\'type\'].$error" ng-show="companyForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n        <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255">\n\n        <div ng-messages="companyForm[\'website\'].$error" ng-show="companyForm[\'website\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n        <input type="text" name="emailDomain" ng-model="vm.company.emailDomain">\n\n        <div ng-messages="companyForm[\'emailDomain\'].$error" ng-show="companyForm[\'emailDomain\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.company.email">\n\n        <div ng-messages="companyForm[\'email\'].$error" ng-show="companyForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.company.description">\n\n        <div ng-messages="companyForm[\'description\'].$error" ng-show="companyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCompany" ng-click="vm.saveCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid || companyForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCompany" ng-click="vm.addNewCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_COMPANY" translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n          ADD COMPANY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCompany" ng-click="vm.deleteCompany($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/companies/edit/view.html",'<div id="contactmanager-company" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-companies-button md-icon-button" aria-label="Go to companies" ng-click="vm.gotoCompanies()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_COMPANIES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="company-image" hide-xs>\n          <img ng-src="assets/images/business/companies.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.company.id}}\n            <span ng-if="vm.company.name">{{vm.company.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.company.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.company, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_COMPANY"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCompany()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (addressForm.$invalid) || (shipmentAddressForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.company.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.VAT">Vat</label>\n                <input type="text" name="vat" ng-model="vm.company.vat" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'vat\'].$error" ng-show="generalForm[\'vat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.FAX">Fax</label>\n                <input type="text" name="fax" ng-model="vm.company.fax" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fax\'].$error" ng-show="generalForm[\'fax\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n                <input type="text" name="companyId" ng-model="vm.company.companyId" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'companyId\'].$error" ng-show="generalForm[\'companyId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.company.type" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n                <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'website\'].$error" ng-show="generalForm[\'website\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n                <input type="text" name="emailDomain" ng-model="vm.company.emailDomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'emailDomain\'].$error" ng-show="generalForm[\'emailDomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.company.email" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.company.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.ADDRESS">ADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container address md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.ADDRESS">ADDRESS</div>\n            </div>\n            <form name="addressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="street" ng-model="vm.company.street" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'street\'].$error" ng-show="addressForm[\'street\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="postalCode" ng-model="vm.company.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'postalCode\'].$error" ng-show="addressForm[\'postalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="city" ng-model="vm.company.city" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'city\'].$error" ng-show="addressForm[\'city\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="country" ng-model="vm.company.country" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'country\'].$error" ng-show="addressForm[\'country\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container shipmentaddress md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</div>\n            </div>\n            <form name="shipmentAddressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="sStreet" ng-model="vm.company.sStreet" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sStreet\'].$error" ng-show="shipmentAddressForm[\'sStreet\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="sPostalCode" ng-model="vm.company.sPostalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sPostalCode\'].$error" ng-show="shipmentAddressForm[\'sPostalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="sCity" ng-model="vm.company.sCity" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCity\'].$error" ng-show="shipmentAddressForm[\'sCity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="sCountry" ng-model="vm.company.sCountry" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCountry\'].$error" ng-show="shipmentAddressForm[\'sCountry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/contacts.html",'<div id="contacts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.CONTACTS">Contacts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContacts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedContacts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-contacts-count">\n          <span>{{vm.selectedContacts.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContacts()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContacts()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContacts" csv-label="true" filename="contacts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedContacts($event)" aria-label="delete selected" translate translate-attr-label="CONTACTS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.selectedList = null; vm.selectedCompany = null; vm.selectedTags = []">\n                <md-icon md-font-icon="icon-refresh"></md-icon>{{ \'CONTACTMANAGER.ALL_CONTACTS\' | translate }}\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_LIST">Select a list</label>\n                <md-select placeholder="Select a list" ng-model="vm.selectedList" ng-disabled="vm.lists.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_COMPANY">Select a company</label>\n                <md-select placeholder="Select a company" flex="100" ng-model="vm.selectedCompany" ng-disabled="vm.companies.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_TAGS">Select one or more tags</label>\n                <md-select multiple placeholder="Select one or more tags" flex="100" ng-model="vm.query.tag" ng-change="vm.getContacts()">\n                  <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows">{{tag.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n\n        \x3c!-- USER TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container ng-init="vm.getAssignedCompanies()">\n            <table md-table md-row-select multiple ng-model="vm.selectedContacts" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n                <tr md-row>\n                  <th md-column md-order-by="id">ID</th>\n                  <th md-column md-order-by="firstName">{{\'CONTACTMANAGER.FULLNAME\' | translate}}</th>\n                  <th md-column md-order-by="phone">{{\'CONTACTMANAGER.PHONE\' | translate}}</th>\n                  <th md-column md-order-by="email">{{\'CONTACTMANAGER.EMAIL\' | translate}}</th>\n                  <th md-column md-order-by="createdAt">{{\'CONTACTMANAGER.CREATED_AT\' | translate}}</th>\n                  <th md-column md-order-by="ListId">{{\'CONTACTMANAGER.LIST\' | translate}}</th>\n                  <th md-column md-order-by="CompanyId">{{\'CONTACTMANAGER.COMPANY\' | translate}}</th>\n                  <th md-column md-order-by="tags">{{\'CONTACTMANAGER.TAGS\' | translate}}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.contacts.rows.length">\n                  <td md-cell colspan="8">\n                    <div layout="row" layout-align="center center">\n                      <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="contact" md-select-id="id" ng-repeat="contact in vm.contacts.rows">\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}} {{contact.lastName}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="phone" privacy ng-cloak>{{contact.phone}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="createdAt">{{contact.createdAt | date:\'medium\'}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="list">{{vm.listsMap[contact.ListId]}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="company">{{vm.companiesMap[contact.CompanyId]}}</td>\n                  <td md-cell class="tag">\n                    <div ng-if="contact.Tags.length">\n                      <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                        <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                        <span class="text-truncate">{{contact.Tags[0].name}}</span>\n                      </div>\n                      <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                        <md-tooltip md-direction="left" layout="row">\n                          <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                        </md-tooltip>\n                        <md-icon md-font-icon="icon-tag"></md-icon>\n                      </div>\n                    </div>\n                  </td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.editdialog(contact, ev)" translate="CONTACTMANAGER.EDIT_CONTACT">\n                            Edit Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.mergeContact(ev, contact)" translate="CONTACTMANAGER.MERGE_CONTACT">\n                            Merge Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.duplicateContact(ev, contact)" translate="CONTACTMANAGER.DUPLICATE_CONTACT">\n                            Duplicate Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete">\n                        </md-menu-divider>\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(contact, ev)" translate="CONTACTMANAGER.DELETE_CONTACT">\n                            Delete Contact\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n\n          <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n        </md-card>\n        \x3c!-- / USER TABLE --\x3e\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-fab-speed-dial id="add-contact-button" ng-if="vm.crudPermissions.canEdit" ng-hide="vm.options.hidden" md-direction="up" md-open="vm.options.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm.options.hover }" ng-mouseenter="vm.options.isOpen=true" ng-mouseleave="vm.options.isOpen=false">\n    <md-fab-trigger>\n      <md-button aria-label="menu" class="md-fab md-accent">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </md-fab-trigger>\n    <md-fab-actions>\n      <md-button class="md-fab md-mini md-warn" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContacts($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.IMPORT_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.IMPORT_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-accent" ng-click="vm.createOrEditContact($event)" aria-label="add contact" translate translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.ADD_CONTACT\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </md-fab-actions>\n  </md-fab-speed-dial>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/create/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="New Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FIRSTNAME">First name</label>\n        <input name="firstName" ng-model="vm.contact.firstName" required md-autofocus privacy="!vm.crudPermissions.canEdit" ng-cloak>\n\n        <div ng-messages="contactForm.firstName.$error" ng-show="contactForm.firstName.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LASTNAME">Last name</label>\n        <input name="lastName" ng-model="vm.contact.lastName" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input name="phone" ng-model="vm.contact.phone" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input name="email" type="email" ng-model="vm.contact.email" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n        <input name="mobile" ng-model="vm.contact.mobile" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input name="fax" ng-model="vm.contact.fax" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId" ng-disabled="vm.contact.id && vm.contact.ListId" ng-init="vm.getCustomFields(vm.contact.ListId)" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n          <md-optgroup label="Lists">\n            <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-optgroup>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-repeat="customField in vm.customFields.rows" class="md-block" ng-switch="customField.type">\n        <div ng-switch-when="datetime">\n          <label>{{customField.alias}}</label>\n\n          <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n            <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n            <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n            </mdp-time-picker>\n          </div>\n        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n\n          <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n            <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-select>\n        </div>\n\n        <div ng-switch-when="switch">\n          <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n            {{customField.alias}}\n          </md-switch>\n        </div>\n\n        <md-input-container ng-switch-default>\n          <label>{{customField.alias}}</label>\n\n          <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANY">Company</label>\n        <md-select name="company" ng-model="vm.contact.CompanyId">\n          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-hide="!vm.contact.CompanyId && company.canSelect === false" ng-disabled="company.canSelect === false">\n            {{company.name}}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All\n          Fields</md-button>\n      </div>\n\n      <md-input-container class="md-block" ng-if="vm.allFields" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n        <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n        <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth">\n        </mdp-date-picker>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n        <input type="text" name="country" ng-model="vm.contact.country">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.CITY">City</label>\n        <input type="text" name="city" ng-model="vm.contact.city">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.STREET">Street</label>\n        <input type="text" name="street" ng-model="vm.contact.street">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.POSTAL_CODE">Postal Code</label>\n        <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.NOTES">Notes</label>\n        <input type="text" name="description" ng-model="vm.contact.description">\n      </md-input-container>\n\n      <div ng-if="vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer\n          Fields</md-button>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newContact" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newContact" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContact" ng-click="vm.deleteContact($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="{{ \'CONTACTMANAGER.DUPLICATE_CONTACT\' | translate }}">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId">\n          <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div flex class="md-block">\n        <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_REQUIRED">Date is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_INVALID">Date is invalid</span>\n            </div>\n          </div>\n        </mdp-date-picker>\n      </div>\n\n      <div flex class="md-block">\n        <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_REQUIRED">Time is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_INVALID">Time is invalid</span>\n            </div>\n          </div>\n        </mdp-time-picker>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_HOPPER" translate-attr-aria-label="CONTACTMANAGER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="!vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/view.html",'<div id="cm-contact" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-contacts-button md-icon-button" aria-label="Go to contacts" ng-click="vm.gotoContacts()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_CONTACTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="contact-image" hide-xs>\n          <img ng-src="assets/images/business/contacts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.contact.id}} {{vm.contact.firstName}} {{vm.contact.lastName}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-if="vm.contact.role && vm.contact.role !== \'admin\'" ng-controller="ContactQueueAddButtonController as vm_contact_qa" ng-cloak>\n      <md-fab-speed-dial ng-hide="vm_contact_qa.hidden" md-direction="left" md-open="vm_contact_qa.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm_contact_qa.hover }" ng-mouseenter="vm_contact_qa.isOpen=true" ng-mouseleave="vm_contact_qa.isOpen=false">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="tooltipVisible">Channels</md-tooltip>\n            <md-icon md-font-icon="icon-eye" aria-label="channels"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <div ng-repeat="channel in vm_contact_qa.channels">\n            <md-button aria-label="{{channel.name}}" class="md-fab md-raised md-icon-button md-mini" ng-click="vm_contact_qa.openDialog($event, vm.contact, channel)">\n              <md-tooltip md-direction="{{channel.direction}}" md-visible="tooltipVisible" md-autohide="false">\n                {{channel.name}}\n              </md-tooltip>\n              <md-icon md-font-icon="{{channel.icon}}" aria-label="{{channel.name}}"></md-icon>\n            </md-button>\n          </div>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.duplicateContact($event)" class="md-fab md-warn md-icon-button" aria-label="DUPLICATE">\n        <md-icon md-font-icon="icon-file-multiple"></md-icon>\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="detailForm.$pristine && customFieldsForm.$pristine && socialForm.$pristine" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DETAIL">DETAIL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div layout="column" flex="70">\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.PERSONAL_INFO">PERSONAL_INFO\n                  </div>\n                </div>\n                <form name="detailForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- fistName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- lastName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.LASTNAME">Last Name</label>\n                      <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- phone --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- mobile --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- email --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail\n                            address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- fax --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n                      <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n                      <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth" mdp-disabled="!vm.crudPermissions.canEdit"></mdp-date-picker>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.companies.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.COMPANY">Company</label>\n                      <md-icon md-font-icon="icon-domain"></md-icon>\n                      <md-select name="company" ng-model="vm.contact.CompanyId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Companies">\n                          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-disabled="company.canSelect === false">{{company.name}}</md-option>\n                          <md-option ng-value=" null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                        </md-optgroup>\n                      </md-select>\n                      <md-icon class="pointer" ng-show="vm.contact.CompanyId" md-font-icon="icon-information-outline" ng-click="vm.editCompany($event, vm.contact.CompanyId)"></md-icon>\n                    </md-input-container>\n                    <section ng-if="!vm.companies.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-briefcase"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_COMPANIES">No Companies</label>\n                    </section>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.tags.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TAGS">Tags</label>\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <md-select ng-model="vm.Tags" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Tags">\n                          <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{tag.name}}</md-option>\n                        </md-optgroup>\n                      </md-select>\n                    </md-input-container>\n                    <section ng-if="!vm.tags.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_TAG">No Tags</label>\n                      <md-button class="md-accent" translate="CONTACTMANAGER.ADD_TAG">Add Tag</md-button>\n                    </section>\n                  </div>\n\n                  <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n                    <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All Fields</md-button>\n                  </div>\n\n                  <div ng-if="vm.allFields">\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      \x3c!-- country --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                        <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                        <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- city --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.CITY">City</label>\n                        <input type="text" name="city" ng-model="vm.contact.city" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <div flex="5"></div>\n                      \x3c!-- street --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.STREET">Street</label>\n                        <input type="text" name="street" ng-model="vm.contact.street" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- postalCode --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.POSTALCODE">Postal Code</label>\n                        <input type="text" name="postalCode" ng-model="vm.contact.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate translate-attr-placeholder="CONTACTMANAGER.NOTES">Notes</label>\n                        <md-icon md-font-icon="icon-note"></md-icon>\n                        <textarea ng-model="vm.contact.description" type="text" max-rows="4" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n                      </md-input-container>\n                    </div>\n\n                    <div layout="row" layout-align="center center">\n                      <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer Fields\n                      </md-button>\n                    </div>\n\n                  </div>\n                </form>\n              </md-card>\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.SOCIAL">Social</div>\n                </div>\n                <form name="socialForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Facebook</label>\n                      <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                      <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Twitter</label>\n                      <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                      <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Line</label>\n                      <md-icon md-font-icon="fab fa-line"></md-icon>\n                      <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Viber</label>\n                      <md-icon md-font-icon="fab fa-viber"></md-icon>\n                      <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>WeChat</label>\n                      <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                      <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Telegram</label>\n                      <md-icon md-font-icon="icon-telegram"></md-icon>\n                      <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                </form>\n              </md-card>\n            </div>\n\n            <div flex></div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.CUSTOM_FIELDS">CUSTOM FIELDS\n                </div>\n              </div>\n              <form name="customFieldsForm" novalidate>\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="CONTACTMANAGER.LIST">List</label>\n                  <md-select name="list" ng-model="vm.contact.ListId" md-on-close="vm.onSelectList($event)" ng-disabled="vm.contact.ListId">\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                <div ng-repeat="customField in vm.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}</label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}</label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <label>{{customField.alias}}</label>\n                    <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                  </md-input-container>\n                </div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.dialer">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.MOTION_BULL">MOTION BULL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HOPPER">Hopper</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHopper.filter = query;" on-collapse="vm.queryHopper.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHoppers()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHopper.sort" md-on-reorder="vm.getHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="phone">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n                      <th md-column md-order-by="recallme">{{ \'CONTACTMANAGER.RECALLME\' | translate }}</th>\n                      <th md-column md-order-by="VoiceQueueId">{{ \'CONTACTMANAGER.VOICEQUEUEID\' | translate }}</th>\n                      <th md-column md-order-by="CampaignId">{{ \'CONTACTMANAGER.CAMPAIGNID\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.hoppers.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, hopper) in vm.hoppers.rows">\n                      <td md-cell>{{hopper.id}}</td>\n                      <td md-cell privacy ng-cloak>{{hopper.phone}}</td>\n                      <td md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{ vm.arraypriority[hopper.priority].option }}</td>\n                      <td md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell>{{hopper.VoiceQueueId}}</td>\n                      <td md-cell>{{hopper.CampaignId}}</td>\n                      <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="2">\n                            <md-menu-item>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.VoiceQueueId" ng-click="vm.editHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.CampaignId" ng-click="vm.createOrEditIvrCampaignHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm.crudPermissions.canDelete && vm.deleteconfirm(hopper, $event)" translate="CONTACTMANAGER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.FINAL">Final</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryFinal.filter = query;" on-collapse="vm.queryFinal.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getFinals()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryFinal.sort" md-on-reorder="vm.getFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="disposition">{{ \'CONTACTMANAGER.DISPOSITION\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.finals.count">\n                      <td md-cell colspan="5">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, final) in vm.finals.rows">\n                      <td md-cell>{{final.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{final.calleridnum}}</td>\n                      <td md-cell>{{final.statedesc}}</td>\n                      <td md-cell>{{final.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{final.disposition}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryFinal.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryFinal.page" md-total="{{vm.finals.count}}" md-on-paginate="vm.getFinals" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HISTORY">History</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHistory.filter = query;" on-collapse="vm.queryHistory.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHistories()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHistory.sort" md-on-reorder="vm.getHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.histories.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, history) in vm.histories.rows">\n                      <td md-cell>{{history.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{history.calleridnum}}</td>\n                      <td md-cell>{{history.statedesc}}</td>\n                      <td md-cell>{{history.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{history.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{history.endtime | date:\'medium\'}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHistory.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHistory.page" md-total="{{vm.histories.count}}" md-on-paginate="vm.getHistories" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.jscripty">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.JSCRIPTY">JSCRIPTY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.SESSIONS">Sessions</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryJscriptySession.filter = query;" on-collapse="vm.queryJscriptySession.filter = undefined;" debounce="300"></ms-search-bar>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- SESSION TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryJscriptySession.sort" md-on-reorder="vm.getJscriptySessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                      <th md-column md-order-by="agent">{{ \'CONTACTMANAGER.AGENT\' | translate }}</th>\n                      <th md-column md-order-by="project">{{ \'CONTACTMANAGER.PROJECT\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.jscriptySessions.count">\n                      <td md-cell colspan="6">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, session) in vm.jscriptySessions.rows">\n                      <td md-cell>{{session.id}}</td>\n                      <td md-cell>{{session.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.endtime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.membername}}</td>\n                      <td md-cell>{{session.projectname}}</td>\n                      <td md-cell class="actions"></td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / SESSION TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMER_JOURNEY">CUSTOMER JOURNEY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <md-content class="md-padding" id="journey-content">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n            </div>\n          </md-content>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/import/import.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.IMPORT_CONTACTS">Import Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/merge/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Merge Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block" flex-gt-sm>\n        <label>Filter</label>\n        <input ng-model="vm.searchTerm" name="searchTerm" ng-model-options="{ debounce: 300 }" ng-change="vm.change()">\n      </md-input-container>\n\n      <md-list flex>\n        <md-subheader class="md-no-sticky" ng-hide="vm.contacts.length"><em>Filter doesn\'t match any contact</em></md-subheader>\n        <md-list-item class="md-3-line" ng-repeat="contact in vm.contacts | filter:{ id: \'!\' + vm.contact.id}" ng-click="vm.showConfirm($event, vm.contact, contact)">\n          <img ng-src="assets/images/avatars/profile.png" class="md-avatar" alt="{{contact.who}}" />\n          <div class="md-list-item-text" layout="column">\n            <h3>#{{ contact.id }} - {{ contact.firstName }} {{ contact.lastName }}</h3>\n            <h4>{{ contact.email }}</h4>\n            <p>{{ contact.phone }}</p>\n          </div>\n        </md-list-item>\n      </md-list>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",'<md-dialog class="globalCustomField-dialog" aria-label="New GlobalCustomField">\n  <form name="globalCustomFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.globalCustomField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="globalCustomFieldForm[\'alias\'].$error" ng-show="globalCustomFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.globalCustomField.type" required ng-disabled="!vm.newGlobalCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'type\'].$error" ng-show="globalCustomFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.globalCustomField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.globalCustomField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.globalCustomField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.globalCustomField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.globalCustomField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.globalCustomField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.globalCustomField.clickToAction" aria-label="ClickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">ClickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">ActionType</label>\n        <md-select name="actionType" ng-model="vm.globalCustomField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'actionType\'].$error" ng-show="globalCustomFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">ActionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGlobalCustomField" ng-click="vm.saveGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid || globalCustomFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGlobalCustomField" ng-click="vm.addNewGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n          ADD GLOBALCUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGlobalCustomField" ng-click="vm.deleteGlobalCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",'<div id="globalCustomFields" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.GLOBALCUSTOMFIELDS">GlobalCustomFields</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedGlobalCustomFields.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedGlobalCustomFields =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-globalCustomFields-count">\n          <span>{{vm.selectedGlobalCustomFields.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedGlobalCustomFields" csv-label="true" filename="globalCustomFields.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedGlobalCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- GLOBALCUSTOMFIELD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedGlobalCustomFields" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getGlobalCustomFields">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="alias">{{ \'CONTACTMANAGER.ALIAS\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'CONTACTMANAGER.TYPE\' | translate }}</th>\n                <th md-column md-order-by="required">{{ \'CONTACTMANAGER.REQUIRED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.globalCustomFields.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="globalCustomField" md-select-id="id" ng-repeat="globalCustomField in vm.globalCustomFields.rows">\n                <td md-cell ng-if="globalCustomField.userpic"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="api/users/{{globalCustomField.id}}/avatar" /></td>\n                <td md-cell ng-if="!globalCustomField.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="id ">{{globalCustomField.id}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="alias ">{{globalCustomField.alias}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="type ">{{ vm.arraytype[globalCustomField.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(globalCustomField, ev) : vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="required ">\n                  <md-icon md-colors="{color: {{globalCustomField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{globalCustomField.required ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(globalCustomField, $event    )" translate="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD">\n                          Edit GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(globalCustomField, $event    )" translate="CONTACTMANAGER.DELETE_GLOBALCUSTOMFIELD">\n                          Delete GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.globalCustomFields.count}}" md-on-paginate="vm.getGlobalCustomFields" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / GLOBALCUSTOMFIELD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-globalCustomField-button" ng-click="vm.createOrEditGlobalCustomField($event)" aria-label="add globalCustomField" translate translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/lists/create/dialog.html",'<md-dialog class="list-dialog" aria-label="New List">\n  <form name="listForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus>\n\n        <div ng-messages="listForm[\'name\'].$error" ng-show="listForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.list.description">\n\n        <div ng-messages="listForm[\'description\'].$error" ng-show="listForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newList" ng-click="vm.saveList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid || listForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newList" ng-click="vm.addNewList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_LIST" translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n          ADD LIST\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newList" ng-click="vm.deleteList($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",'<md-dialog class="list-dialog" aria-label="list" ng-init="vm.onInit()">\n  <form name="listForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CONTACTMANAGER.AGENTADD_LIST">Add Agent to list</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",'<md-dialog class="customField-dialog" aria-label="New CustomField">\n  <form name="customFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.customField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="customFieldForm[\'alias\'].$error" ng-show="customFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.customField.type" required ng-disabled="!vm.newCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'type\'].$error" ng-show="customFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.customField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.customField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.customField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.customField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.customField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.customField.clickToAction" aria-label="clickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">clickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">actionType</label>\n        <md-select name="actionType" ng-model="vm.customField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'actionType\'].$error" ng-show="customFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">actionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomField" ng-click="vm.saveCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid || customFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomField" ng-click="vm.addNewCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n          ADD CUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomField" ng-click="vm.deleteCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/view.html",'<div id="contactmanager-list" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-lists-button md-icon-button" aria-label="Go to lists" ng-click="vm.gotoLists()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_LISTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="list-image" hide-xs>\n          <img ng-src="assets/images/business/lists.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.list.id}}\n            <span ng-if="vm.list.name">{{vm.list.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.list.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CONTACTMANAGER.AGENTADD_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-eye"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveList()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (customFieldsForm.$invalid) || (voiceDispositionsForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.list.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.list.dialPrefix" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialPrefix\'].$error" ng-show="generalForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMFIELDS">CUSTOMFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container customfields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ListCustomFieldsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.CUSTOMFIELDS">CustomFields</span>\n                  <ms-search-bar on-search="vm_dc.getListCustomFields()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditListCustomField($event)" aria-label="add customField" translate translate-attr-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedListCustomFields.length}} {{vm_dc.selectedListCustomFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedListCustomFields" csv-label="true" filename="lists.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedListCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedListCustomFields" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getListCustomFields">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CONTACTMANAGER.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="alias">\n                        {{ \'CONTACTMANAGER.ALIAS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CONTACTMANAGER.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="required">\n                        {{ \'CONTACTMANAGER.REQUIRED\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="customField" md-select-id="id" ng-repeat="customField in vm_dc.listCustomFields.rows">\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.alias}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{ vm_dc.arraytype[customField.type].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell class="required ">\n                        <md-icon md-colors="{color: {{customField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{customField.required? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditListCustomField($event, customField)" translate="CONTACTMANAGER.EDIT_CUSTOMFIELD">\n                                Edit CustomField\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(customField, $event)" translate="CONTACTMANAGER.DELETE_CUSTOMFIELD">\n                                Delete CustomField\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.listCustomFields.rows.length">\n                      <td md-cell colspan="9">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CONTACTMANAGER.NO_CUSTOMFIELD_AVAILABLE">No customfield available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.listCustomFields.count}}" md-on-paginate="vm_dc.getListCustomFields" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ListDispositionsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="list-detail-form-container voicedispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CONTACTMANAGER.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add contactmanager dispositions" translate translate-attr-label="CONTACTMANAGER.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="lists.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/lists/lists.html",'<div id="lists" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.LISTS">Lists</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedLists.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedLists =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-lists-count">\n          <span>{{vm.selectedLists.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllLists()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectLists()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedLists" csv-label="true" filename="lists.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedLists($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <div layout="column">\n          <span class="font-size-10" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.onChangeVoiceQueues()" ng-model="vm.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.voiceQueues.rows">{{ voiceQueue.name }}</md-option>\n          </md-select>\n        </div>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  <div layout="row" class="agent-content" ng-if="vm.isActiveTab(0)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.html\'" ng-controller="AgentGeneralHomeController as vm_home" ng-init="vm_home.init(vm.license, vm.setting)"></div>\n  <div ng-if="!vm.isActiveTab(0)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type">\n    <div ng-switch-when="contact">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html\'" ng-controller="AgentGeneralContactController as vm" ng-init="vm.init(tab,$parent.vm.license)"></div>\n    </div>\n    <div ng-switch-when="popup">\n      <div ng-if="vm.isActiveTab(tab.id)" ms-scroll ng-include="\'app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html\'" ng-controller="AgentGeneralPopupController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="jscripty">\n      <div class="agent-content" ms-scroll ng-if="vm.isActiveTab(tab.id)" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html\'" ng-controller="AgentGeneralJscriptyController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="bot">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html\'" ng-controller="AgentGeneralBotController as vm" ng-init="vm.init(tab, $parent.vm.setting)"></div>\n    </div>\n    <div ng-switch-when="interaction">\n      <div id="interaction-app" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'" ng-controller="AgentGeneralInteractionController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n    <div ng-switch-when="iframe">\n      <div id="iframe" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-style="{\'top\': vm.detectBrowser.browser == \'safari\' ? \'100px\' : \'36px\'}" ng-include="\'app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html\'" ng-controller="AgentGeneralIframeController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center">\n    <div class="big-circle md-whiteframe-4dp">\n      <md-icon class="s128 md-accent pink-fg" md-font-icon="fas fa-robot"></md-icon>\n    </div>\n    <span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n    <span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n      interaction...</span>\n  </div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n    <md-card flex="100" class="interaction">\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar">\n        <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="fas fa-robot" class="s20 pink-fg"></md-icon>\n          <div class="padding-left-10" layout="column" layout-align="center start" flex>\n            <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n              <span>#{{vm.tab.data.uniqueid}} - {{vm.tab.title}}</span>\n            </div>\n          </div>\n          <div layout="row" layout-align="end center">\n\n          </div>\n        </div>\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages">\n          \x3c!-- MESSAGES --\x3e\n          <div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n            <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n            <img ng-if="message.direction ===\'out\'" class="avatar" src="assets/images/avatars/robot.png">\n\n            <div class="bubble" ng-switch="message.direction">\n              <div>\n                <div ng-switch-when="in" class="time secondary-text">\n                  {{vm.tab.title}} - {{message.createdAt | date: \'medium\'}}\n                </div>\n                <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n                  <div layout-padding>\n                    System - {{message.createdAt | date: \'medium\'}}\n                  </div>\n                  <div>\n                    <md-icon class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n                  </div>\n                </div>\n              </div>\n              <div ng-bind-html="message.body | embed:vm.emojiOptions" class="message" layout="row" layout-align="end center"></div>\n            </div>\n          </div>\n          \x3c!-- / MESSAGES --\x3e\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html",'<md-tabs md-selected="vm.currentTab" md-dynamic-height>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.DETAIL">Detail</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content>\n        <div layout="row">\n          <md-card ng-repeat="call in vm.tab.calls track by call.uniqueid" class="call-info-card">\n            <md-progress-linear md-mode="indeterminate" ng-if="vm.checkingCallStatus"></md-progress-linear>\n            <md-card-header layout="row" layout-align="space-between">\n              <span ng-if="call.answertime" class="text-boxed indigo-100-bg ml-0">\n                <timer start-time="call.answertime"></timer>\n                <md-tooltip md-direction="bottom">\n                  {{ \'DASHBOARDS.ELAPSED_ANSWERED\' | translate }}\n                </md-tooltip>\n              </span>\n              <span ng-if="call.disposedAt" class="text-boxed amber-200-bg mr-0">\n                <timer start-time="call.disposedAt"></timer>\n                <md-tooltip md-direction="bottom">\n                  {{ \'DASHBOARDS.ELAPSED_DISPOSED\' | translate }}\n                </md-tooltip>\n              </span>\n            </md-card-header>\n            <md-divider></md-divider>\n            <md-card-content>\n              <div layout="row" layout-align="end center" class="reload-container">\n                <md-button class="md-icon-button no-margin reload-button" ng-click="vm.checkCallStatus(call)" ng-disabled="vm.checkingCallStatus">\n                  <md-icon md-font-icon="icon-reload"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </div>\n              <div layout="column" layout-align="space-between start" class="mr-16">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="{{ call.routeId ? \'icon-phone-outgoing\' : \'icon-phone-incoming\'}}" class="mr-8">\n                  </md-icon>\n                  <span class="h1" privacy ng-cloak>{{ call.routeId ? call.destcalleridnum : call.calleridnum }}</span>\n                </div>\n\n                <div class="subtitle h4 secondary-text" ng-if="call.calleridname && call.calleridname != \'<unknown>\' && !call.routeId">\n                  <md-icon md-font-icon="icon-account"></md-icon>\n                  Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                </div>\n\n                <div class="text h4 pt-8" ng-if="call.queue">\n                  <md-icon md-font-icon="icon-stackoverflow"></md-icon>\n                  Queue: {{call.queue}}\n                </div>\n                <div class="text h4 pt-8" ng-if="call.variables.extravar">\n                  <md-icon md-font-icon="icon-minus"></md-icon>\n                  Extra: {{call.variables.extravar}}\n                </div>\n              </div>\n              <div layout="row" layout-align="end center">\n                <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised">\n                  {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                </md-button>\n              </div>\n            </md-card-content>\n          </md-card>\n          <div flex layout="row" layout-align="end center">\n            <md-button type="submit" ng-click="vm.mergeContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="merge">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.MERGE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-source-fork"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.duplicateContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="duplicate">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.DUPLICATE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.addNewContact($event)" class="send-button md-accent md-raised" ng-if="vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="add">\n              {{ \'DASHBOARDS.ADD\'| translate }}\n            </md-button>\n            <md-button type="submit" ng-click="vm.saveContact($event)" class="send-button md-accent md-raised" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="save">\n              {{ \'DASHBOARDS.SAVE\' | translate }}\n            </md-button>\n          </div>\n        </div>\n        <div layout="row">\n          <div layout="column" flex="75">\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.PERSONAL_INFO">\n                PERSONAL_INFO</div>\n              <div class="subtitle secondary-text">\n                <span translate="CONTACTMANAGER.CREATED_AT"></span>\n                <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n              </div>\n\n              <form name="vm.detailForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="DASHBOARDS.ERRORS.FIRSTNAME_REQUIRED">First name\n                            field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.jscripty" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="JSCRIPTY PROJECTS" ng-click="$mdOpenMenu($event); vm.getJscriptyProjects();" aria-label="jscripty">\n                          <md-icon md-font-icon="icon-script"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingJscriptyProjects">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && vm.jscriptyProjects.count > 0" ng-repeat="project in vm.jscriptyProjects.rows">\n                            <md-button ng-click="vm.addJscriptyTab(project, $event)">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                              {{project.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && (!vm.jscriptyProjects || vm.jscriptyProjects.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.LASTNAME">Last Name</label>\n                    <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" privacy ng-cloak>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.phone" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.phone" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.mobile" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.mobile" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.messaging || !vm.hasPermission(107) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW SMS" ng-click="$mdOpenMenu($event); vm.getAccounts(\'sms\')" aria-label="sms">\n                          <md-icon md-font-icon="icon-message-text"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.smsAccounts.count > 0" ng-repeat="account in vm.smsAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Sms\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.smsAccounts || vm.smsAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.whatsapp || !vm.hasPermission(114) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW WHATSAPP" ng-click="$mdOpenMenu($event); vm.getAccounts(\'whatsapp\')" aria-label="whatsapp">\n                          <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.whatsappAccounts.count > 0" ng-repeat="account in vm.whatsappAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Whatsapp\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.whatsappAccounts || vm.whatsappAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_WHATSAPP_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="DASHBOARDS.ERRORS.EMAIL_MUST_VALID">Email must be a\n                            valid e-mail address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.mail || !vm.hasPermission(106) || !vm.contact.email" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW EMAIL" ng-click="$mdOpenMenu($event); vm.getAccounts(\'mail\')" aria-label="email">\n                          <md-icon md-font-icon="icon-email"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.mailAccounts.count > 0" ng-repeat="account in vm.mailAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Mail\', account, vm.contact.email)">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.mailAccounts || vm.mailAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" privacy ng-cloak>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.fax || !vm.hasPermission(109) || !vm.contact.fax" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW FAX" ng-click="$mdOpenMenu($event); vm.getAccounts(\'fax\')" aria-label="fax">\n                          <md-icon md-font-icon="icon-deskphone"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.faxAccounts.count > 0" ng-repeat="account in vm.faxAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Fax\', account, vm.contact.fax)">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.faxAccounts || vm.faxAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DATE_OF_BIRTH">Date of Birth</label>\n                    <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth"></mdp-date-picker>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COMPANY">Company</label>\n                    <md-icon md-font-icon="icon-domain" class="email"></md-icon>\n                    <md-select name="company" ng-model="vm.contact.CompanyId">\n                      <md-option ng-value="company.id" ng-repeat="company in vm.tab.companies.rows">{{company.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="DASHBOARDS.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.TAG">TAG</label>\n                    <md-icon md-font-icon="icon-tag"></md-icon>\n                    <md-select ng-model="vm.tab.Tags" multiple>\n                      <md-option ng-value="tag.id" ng-repeat="tag in vm.tab.tags.rows">\n                        {{tag.name}}</md-option>\n                    </md-select>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COUNTRY">Country</label>\n                    <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                    <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.CITY">City</label>\n                    <input type="text" name="city" ng-model="vm.contact.city">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.STREET">Street</label>\n                    <input type="text" name="street" ng-model="vm.contact.street">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.POSTALCODE">Postal Code</label>\n                    <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate translate-attr-placeholder="DASHBOARDS.NOTES">Notes</label>\n                    <md-icon md-font-icon="icon-note"></md-icon>\n                    <textarea ng-model="vm.contact.description" type="text" max-rows="4"></textarea>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.SOCIAL">Social</div>\n              <form name="vm.socialForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Facebook</label>\n                    <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                    <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Twitter</label>\n                    <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                    <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Line</label>\n                    <md-icon md-font-icon="fab fa-line"></md-icon>\n                    <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Viber</label>\n                    <md-icon md-font-icon="fab fa-viber"></md-icon>\n                    <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>WeChat</label>\n                    <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                    <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Telegram</label>\n                    <md-icon md-font-icon="icon-telegram"></md-icon>\n                    <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n          <div flex="25" layout="column" layout-padding>\n            <md-card flex="100" layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.CUSTOM_FIELDS">CUSTOM\n                FIELDS</div>\n              <form name="vm.customFieldsForm" novalidate>\n\n                \x3c!-- START INPUT LIST --\x3e\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                  <md-select name="list" ng-disabled="!vm.newContact" ng-model="vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                \x3c!-- END INPUT LIST --\x3e\n\n                <div ng-repeat="customField in vm.tab.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">\n                        {{value.value}}</md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}<span ng-if="customField.required">*</span>\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <div layout-gt-sm="row" class="layout-gt-sm-row"></div>\n                    <div layout="row" flex>\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                        <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      </md-input-container>\n                      <ms-click-to-call ng-if="customField.clickToAction && customField.actionType === \'voice\'" target="vm.contact[\'cf_\' + customField.id]" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                    </div>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Customer Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding" id="journey-content">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.call.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div ng-if="!vm.isReschedule">\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n        <md-input-container class="md-block" ng-if="vm.availableCalls === 1">\n          <md-switch ng-model="vm.autoClose" aria-label="Auto Close">\n            <span translate="DASHBOARDS.AUTOCLOSE">Automatically close contact tab after disposal</span>\n          </md-switch>\n        </md-input-container>\n      </div>\n      <div ng-if="vm.isReschedule">\n        <div layout="row">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.date.$error" ng-show="disposition.date.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <md-input-container ng-if="!vm.dialerCall" class="md-block">\n          <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n          <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n            <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n              {{ queueCampaign.name }} ({{ queueCampaign.dialActive ? \'Active\' : \'Not Active\' }})</md-option>\n          </md-select>\n          <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex class="md-block">\n          <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.date.$error" ng-show="dateTime.date.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n\n        <div flex class="md-block">\n          <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.time.$error" ng-show="dateTime.time.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-disabled="vm.disable" ng-click="vm.saveDialog()" class="send-button md-accent md-raised" ng-disabled="dateTime.$invalid || dateTime.$pristine" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",'<md-dialog ng-init="vm.onInit()" class="contact-trigger-dialog" aria-label="Select contact" ng-cloak>\n  <md-toolbar class="red-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ \'DASHBOARDS.SELECT_CONTACT\' | translate }}</span>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="h-400 pv-16" ms-scroll>\n    <div layout="row" class="p-10">\n      <span class="font-size-16">{{ \'DASHBOARDS.MULTIPLE_CONTACTS_FOUND\' | translate }}<strong>&nbsp;{{ vm.callNumber }}</strong>.</span>\n      <span class="font-size-16">&nbsp;{{ \'DASHBOARDS.WHICH_ONE_TO_USE\' | translate }}</span>\n    </div>\n    <md-grid-list md-cols-xs="1" md-cols="2" md-row-height="fit" ng-class="vm.paginatedContacts[vm.page - 1].length > 2 ? \'two-rows-layout\' : \'one-row-layout\'" flex>\n      <md-grid-tile ng-repeat="contact in vm.paginatedContacts[vm.page - 1]" md-rowspan="1">\n        <md-card layout="column" class="contact-info" no-padding no-margin ng-click="vm.selectedContact = contact;" ng-class="{ \'light-blue-50-bg\' : vm.selectedContact && vm.selectedContact.id === contact.id }" flex>\n          <md-card-title class="pt-16">\n            <md-card-title-text layout-align="center start">\n              <span class="font-size-16 text-bold">#{{ contact.id }} -\n                <span privacy ng-cloak>{{ contact.firstName }} {{ contact.lastName }}</span>\n              </span>\n              <em class="font-size-12">{{ \'DASHBOARDS.LAST_UPDATED\' | translate }}: {{ contact.updatedAt }}</em>\n              <span class="font-size-12">{{ \'DASHBOARDS.LIST\' | translate }}: {{ vm.lists[contact.ListId] }}</span>\n            </md-card-title-text>\n            <md-button class="md-icon-button no-margin" aria-label="Selected">\n              <md-icon md-font-icon="{{ vm.selectedContact && vm.selectedContact.id === contact.id ? \'icon-checkbox-marked-circle\' : \'icon-checkbox-blank-circle-outline\' }}" ng-class="{ \'green-fg\': vm.selectedContact && vm.selectedContact.id === contact.id }"></md-icon>\n            </md-button>\n          </md-card-title>\n          <md-divider></md-divider>\n          <md-card-content layout="row" layout-align="center start" class="p-10">\n            <span class="font-size-16">{{ \'DASHBOARDS.MATCHING_FIELD\' | translate }}:\n              <strong privacy ng-cloak>{{ contact.matchingField }}</strong>\n            </span>\n          </md-card-content>\n        </md-card>\n      </md-grid-tile>\n    </md-grid-list>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <div ng-if="vm.paginatedContacts.length > 1" layout="row" layout-align="center center" flex>\n      <md-button ng-click="vm.page = vm.page - 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': vm.page <= 1 }" aria-label="Previous page">\n        <md-icon md-font-icon="icon-chevron-double-left"></md-icon>\n      </md-button>\n      <span>{{ \'DASHBOARDS.PAGE\' | translate }} {{ vm.page }} {{ \'DASHBOARDS.OF\' | translate }}\n        {{ vm.paginatedContacts.length }}</span>\n      <md-button ng-click="vm.page = vm.page + 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': !vm.paginatedContacts[vm.page] }" aria-label="Next page">\n        <md-icon md-font-icon="icon-chevron-double-right"></md-icon>\n      </md-button>\n    </div>\n    <md-button ng-click="vm.selectContact()" class="select-button md-accent md-raised" ng-disabled="!vm.selectedContact" aria-label="Select" translate="DASHBOARDS.SELECT" translate-attr-aria-label="DASHBOARDS.SELECT">\n      SELECT\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>vc'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110)" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 0" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html\'" ng-controller="AgentHomeAbandonedVoiceController as vm_voice">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 1" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html\'" ng-controller="AgentHomeAbandonedBullController as vm_bull">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_bull.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_bull.getAbandonedCalls()" query="vm_bull.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_bull.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_bull.quickFilters" query="vm_bull.query" search="vm_bull.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_bull.refresh && vm_bull.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_bull.showTooltip" md-visible="vm_bull.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_bull.promise">\n      <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}\n          </th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_bull.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_bull.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_bull.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_bull.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerexitAt ? (abandonedCall.queuecallerexitAt | formatdate) : undefined }}\n          </td>\n          <td md-cell class="list">{{abandonedCall.queuecallerexitreason}}</td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_bull.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_bull.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_bull.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.abandonedCalls.count}}" md-on-paginate="vm_bull.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()">\n'+"          {{(vm.selectedDisposition.name ? 'DASHBOARDS.DISPOSE' : 'DASHBOARDS.SAVE') | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>"),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_voice.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_voice.getAbandonedCalls()" query="vm_voice.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_voice.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_voice.quickFilters" query="vm_voice.query" search="vm_voice.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_voice.refresh && vm_voice.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_voice.promise">\n      <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_voice.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_voice.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_voice.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_voice.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_voice.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_voice.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_voice.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.abandonedCalls.count}}" md-on-paginate="vm_voice.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.html",'<div layout="column" layout-align="start center" class="md-primary-bg width-50" ms-scroll>\n  <div ng-repeat="node in vm_home.navigation">\n    <div ng-repeat="home in node.children">\n      <md-button ng-repeat="button in home.children  | orderBy:\'weight\'" ng-if="!button.hidden()" class="md-raised width-50 height-50 no-margin" style="border-radius: 0px" aria-label="{{button.state}}" ng-click="vm_home.changeSidebarTab(button)" ng-class="{\'md-primary\': vm_home.sidebar != button.state}">\n        <md-tooltip md-direction="right" md-delay="500"><span translate="{{button.translate}}"></span>\n        </md-tooltip>\n        <md-icon md-font-icon="{{button.icon}}" ng-class="button.iconClass"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n<div layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto" flex>\n      <div ng-switch-when="agentPresence">\n        <div ng-if="vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html\'" ng-controller="AgentHomePresenceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="contacts">\n        <div ng-if="vm_home.hasPermission(102) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html\'" ng-controller="AgentHomeContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(102) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mycontacts">\n        <div ng-if="vm_home.hasPermission(103) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html\'" ng-controller="AgentHomeMyContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(103) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="scheduled">\n        <div ng-if="vm_home.hasPermission(113) && vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html\'" ng-controller="AgentHomeScheduledCallsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(113) || !vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="voice">\n        <div ng-if="vm_home.hasPermission(110) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html\'" ng-controller="AgentHomeVoiceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(110) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="abandoned">\n        <div ng-if="vm_home.hasPermission(111) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html\'" ng-controller="AgentHomeAbandonedController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(111) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="recordings">\n        <div ng-if="vm_home.hasPermission(104) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html\'" ng-controller="AgentHomeRecordingsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(104) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-if="vm_home.hasPermission(105) && vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html\'" ng-controller="AgentHomeChatController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(105) || !vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mail">\n        <div ng-if="vm_home.hasPermission(106) && vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html\'" ng-controller="AgentHomeMailController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(106) || !vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html\'" ng-controller="AgentHomeSmsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(107) || !vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html\'" ng-controller="AgentHomeOpenchannelController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(108) || !vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-if="vm_home.hasPermission(109) && vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html\'" ng-controller="AgentHomeFaxController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(109) || !vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html\'" ng-controller="AgentHomeWhatsappController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(114) || !vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="plugin" layout-fill>\n        <div ng-if="vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html\'" ng-controller="AgentHomePluginsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting, vm_home.plugin)" layout-fill></div>\n        <div ng-if="!vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-default>\n        <div ng-if="vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html\'" ng-controller=" AgentHomeDashboardController  as vm"></div>\n        <div ng-if="!vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n    </div>\n  </div>\n  <div ng-if="(vm_home.draftManager.drafts | json) != \'{}\'" layout="column" class="draft-manager-bar">\n    <ms-tab-scroll>\n      <div layout="column" ng-repeat="(key, draft) in vm_home.draftManager.drafts" class="grey-50-bg" ng-click="vm_home.draftManager.open(draft.id)">\n        <div class="draft-manager-tab" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="icon-pencil" class="icon s16 margin-horizontal-5 black-fg"></md-icon>\n          <span class="text-truncate font-size-12 black-fg">{{draft.title}}</span>\n          <md-button class="md-icon-button md-mini no-margin md-primary" aria-label="close" ng-click="vm_home.draftManager.remove(draft.id)">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html",'<md-content layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n  <div layout="column" layout-align="space-around center" flex="50">\n    <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n    <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to navigate through available sections.</span>\n  </div>\n\n  <div layout="column" flex="50">\n    <img src="assets/images/avatars/permissions.png" alt="permissions">\n  </div>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.CHAT_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getChatInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getChatInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getChatInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.WEBSITE\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.chatInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.chatInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="chatAccount">\n            {{ vm.getChatWebsiteLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showChatInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Chat\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatInteractions.count}}" md-on-paginate="vm.getChatInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.CONTACTS">Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact()" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact(contact.id)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}}\n            {{contact.lastName}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="fax" privacy ng-cloak>{{contact.fax}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="createdAt">{{contact.createdAt | formatdate}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="list">{{vm.listsMap[contact.ListId].name}}\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact(contact.id)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html\'" ng-controller="AgentHomeDashboardVoiceController as vm_voice" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html\'" ng-controller="AgentHomeDashboardBullController as vm_bull" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(105) && vm_home.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html\'" ng-controller="AgentHomeDashboardMultiChannelChatController as vm_chat" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(106) && vm_home.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html\'" ng-controller="AgentHomeDashboardMultiChannelMailController as vm_mail" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html\'" ng-controller="AgentHomeDashboardMultiChannelSmsController as vm_sms" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html\'" ng-controller="AgentHomeDashboardMultiChannelOpenchannelController as vm_openchannel" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(109) && vm_home.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html\'" ng-controller="AgentHomeDashboardMultiChannelFaxController as vm_fax" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html\'" ng-controller="AgentHomeDashboardMultiChannelWhatsappController as vm_whatsapp" class="md-padding">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_bull.promise">\n        <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.TYPE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.voiceQueues)">\n            <td md-cell colspan="4">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_bull.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.voiceQueuesTotal}}" md-on-paginate="vm_bull.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_bull.rpcVoiceQueuesChannels | limitObjectFromTo: vm_bull.queryChannels.limit:(vm_bull.queryChannels.page - 1) * vm_bull.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.queryChannels.limit" md-page="vm_bull.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_chat.promise">\n        <thead md-head md-order="vm_chat.query.sort" md-on-reorder="vm_chat.getChatQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.getSize(vm_chat.chatQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_chat.chatQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_chat.query.page" md-total="{{vm_chat.chatQueuesTotal}}" md-on-paginate="vm_chat.getChatQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_chat.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.queryChannels.limit" md-page="vm_chat.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_chat.paginatedInteractions.length}}" md-on-paginate="vm_chat.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_fax.promise">\n        <thead md-head md-order="vm_fax.query.sort" md-on-reorder="vm_fax.getFaxQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.getSize(vm_fax.faxQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_fax.faxQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_fax.query.page" md-total="{{vm_fax.faxQueuesTotal}}" md-on-paginate="vm_fax.getFaxQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_fax.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.queryChannels.limit" md-page="vm_fax.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_fax.paginatedInteractions.length}}" md-on-paginate="vm_fax.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_mail.promise">\n        <thead md-head md-order="vm_mail.query.sort" md-on-reorder="vm_mail.getMailQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.getSize(vm_mail.mailQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_mail.mailQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_mail.query.page" md-total="{{vm_mail.mailQueuesTotal}}" md-on-paginate="vm_mail.getMailQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_mail.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.queryChannels.limit" md-page="vm_mail.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_mail.paginatedInteractions.length}}" md-on-paginate="vm_mail.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_openchannel.promise">\n        <thead md-head md-order="vm_openchannel.query.sort" md-on-reorder="vm_openchannel.getOpenchannelQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.getSize(vm_openchannel.openchannelQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_openchannel.openchannelQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_openchannel.query.page" md-total="{{vm_openchannel.openchannelQueuesTotal}}" md-on-paginate="vm_openchannel.getOpenchannelQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_openchannel.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.queryChannels.limit" md-page="vm_openchannel.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_openchannel.paginatedInteractions.length}}" md-on-paginate="vm_openchannel.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_sms.promise">\n        <thead md-head md-order="vm_sms.query.sort" md-on-reorder="vm_sms.getSmsQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.getSize(vm_sms.smsQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_sms.smsQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_sms.query.page" md-total="{{vm_sms.smsQueuesTotal}}" md-on-paginate="vm_sms.getSmsQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_sms.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.queryChannels.limit" md-page="vm_sms.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_sms.paginatedInteractions.length}}" md-on-paginate="vm_sms.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_voice.promise">\n        <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.voiceQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_voice.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.voiceQueuesTotal}}" md-on-paginate="vm_voice.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_voice.rpcVoiceQueuesChannels | limitObjectFromTo: vm_voice.queryChannels.limit:(vm_voice.queryChannels.page - 1) * vm_voice.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.queryChannels.limit" md-page="vm_voice.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_whatsapp.promise">\n        <thead md-head md-order="vm_whatsapp.query.sort" md-on-reorder="vm_whatsapp.getWhatsappQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.getSize(vm_whatsapp.whatsappQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_whatsapp.whatsappQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_whatsapp.query.page" md-total="{{vm_whatsapp.whatsappQueuesTotal}}" md-on-paginate="vm_whatsapp.getWhatsappQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_whatsapp.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.queryChannels.limit" md-page="vm_whatsapp.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_whatsapp.paginatedInteractions.length}}" md-on-paginate="vm_whatsapp.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.FAX_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getFaxInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getFaxInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getFaxInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.faxAccounts.rows && vm.faxAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="faxAccount in vm.faxAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeFaxInteraction($event, faxAccount)">\n              {{ faxAccount.name }} ({{ faxAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.faxInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.faxInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="faxAccount">\n            {{ vm.getFaxAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showFaxInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadFaxInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxInteractions.count}}" md-on-paginate="vm.getFaxInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.MAIL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getMailInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getMailInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getMailInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.mailAccounts.rows && vm.mailAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="mailAccount in vm.mailAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeMailInteraction($event, mailAccount)">\n              {{ mailAccount.name }} ({{ mailAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="subject">{{\'DASHBOARDS.SUBJECT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.mailInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.mailInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div ng-if="vm.setting.enableEmailPreview && interaction.lastMsgText" class="tooltip-preview">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              <md-card class="tooltip-preview-text" ng-style="{top: \'-\' + ((($index % 10) + 1) * 18) + \'px\'}">\n                <md-card-content><span class="email-preview-message">{{ interaction.lastMsgText }}</span>\n                </md-card-content>\n              </md-card>\n            </div>\n            <span ng-if="!interaction.lastMsgText || !vm.setting.enableEmailPreview" class="text-truncate font-size-12">{{ interaction.subject }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="mailAccount">\n            {{ vm.getMailAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showMailInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Mail\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailInteractions.count}}" md-on-paginate="vm.getMailInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.MYCONTACTS">My Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact($event)" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="firstName" privacy ng-cloak>\n            {{contact.firstName}} {{contact.lastName}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="fax" privacy ng-cloak>\n            {{contact.fax}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="createdAt">{{contact.createdAt |\n            formatdate}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="list">\n            {{vm.listsMap[contact.ListId].name}}</td>\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact($event, contact)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.OPENCHANNEL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getOpenchannelInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getOpenchannelInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getOpenchannelInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.openchannelAccounts.rows && vm.openchannelAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeOpenchannelInteraction($event, openchannelAccount)" ng-disabled="!openchannelAccount.replyUri">\n              {{ openchannelAccount.name }} ({{ openchannelAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.openchannelInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.openchannelInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="openchannelAccount">\n            {{ vm.getOpenchannelAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showOpenchannelInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Openchannel\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelInteractions.count}}" md-on-paginate="vm.getOpenchannelInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html",'<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab label="{{\'DASHBOARDS.AGENTS\' | translate}}" md-on-select="vm.onAgentsTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html\'">\n        </md-content>\n      </md-tab>\n      <md-tab label="{{\'DASHBOARDS.QUEUES\' | translate}}" md-on-select="vm.onQueuesTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html\'">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.AGENTS"></span>\n      <ms-search-bar on-search="vm.getAgents()" query="vm.agentsQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.agentsQuery" search="vm.getAgents()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getAgents()">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.agentsQuery.sort" md-on-reorder="vm.getAgents">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="internal">{{\'VOICE.INTERNAL\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.agents.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="agent in vm.agents.rows">\n          <td md-cell>{{agent.id}}</td>\n          <td md-cell>{{agent.name}}</td>\n          <td md-cell>{{agent.internal}}</td>\n          <td md-cell>\n            <div layout="row">\n              <div layout="column" layout-align="center center">\n                <span class="text-boxed width-70 text-center md-background-bg bl bt padding-5" ng-class="{\'online\':\'lime-300-bg\',\'offline\':\'red-A200-bg\',\'pause\':\'amber-200-bg\',\'busy\':\'indigo-100-bg\'}[agent.status]">{{\n                  agent.status | uppercase }}</span>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex ms-scroll layout-wrap>\n        <div class="interaction-messages" ng-switch="vm.tab.channel">\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-default>\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html\'">\n            </div>\n          </div>\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n\n      \x3c!-- FOOTER --\x3e\n      <div ng-if="\n            !vm.interaction.closed && ( vm.tab.channel == \'chat\' \n            || (vm.tab.channel == \'openchannel\' && vm.account.replyUri) \n            || (vm.tab.channel == \'sms\' && !vm.tab.spy) \n            || (vm.tab.channel == \'whatsapp\' && !vm.tab.spy) )\n             && (vm.user.role !== \'admin\' && vm.user.role !== \'user\')" class="interaction-footer flex-noshrink" layout="row" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html\'">\n      </div>\n      \x3c!-- / FOOTER--\x3e\n    </md-card>\n\n    <md-card layout="column" flex class="info" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html\'">\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="CHAT.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="CHAT.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="CHAT.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="CHAT.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'CHAT.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'CHAT.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.ChatAccountId" md-font-icon="icon-earth" aria-label="alert chat" class="s16"></md-icon>\n          <md-icon ng-if="item.ChatAccountId" md-font-icon="icon-message-text" aria-label="alert chat" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="CHAT.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="FAX.SEND">SEND</span>\n          </md-button>\n          <md-button ng-disabled="vm.message.attachments.length === 1" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="FAX.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block to">\n        <label translate="FAX.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete ng-hide="vm.message.to.length === 1" md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.fax" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" ng-if="composeForm.$dirty">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n          <div ng-message="md-max-chips">You reached the maximum amount of chips</div>\n        </div>\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="FAX.DELETE_ATTACHMENT">\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message" ng-class="{\'mail-no-secret\': !vm.secret}" ng-cloak>\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar ng-class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <div ng-if="!vm.secret" class="md-button md-raised blue-bg no-padding">\n            <button class="white-fg margin-horizontal-10" aria-label="Send message" ng-disabled="!vm.verifySmtp" ng-click="vm.send($event, false, null)">\n              <span>{{ \'MAIL.SEND\' | translate | uppercase }}</span>\n            </button>\n            <span class="white-fg secondary-text vertical-divider"></span>\n            <md-menu>\n              <button ng-disabled="!vm.verifySmtp" class="white-fg margin-left-0" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-menu-down" class="icon s24"></md-icon>\n              </button>\n              <md-menu-content width="2">\n                <md-menu-item ng-if="vm.subStatuses.rows.length">\n                  <md-menu>\n                    <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="MAIL.SEND_AS">\n                      Send as\n                    </md-button>\n                    <md-menu-content>\n                      <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                        <md-button ng-click="vm.send($event, false, subStatus.name)">\n                          {{subStatus.name}}\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.send($event, true, null)" translate="MAIL.SEND_AND_CLOSE">\n                    Send and Close\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </div>\n          <md-button ng-if="!vm.secret" class=" md-button md-raised blue-bg white-fg margin-horizontal-10" aria-label="Save draft" ng-click="vm.saveDraft()">\n            <span>{{ (vm.isDraft ? \'DASHBOARDS.UPDATE_DRAFT\' : \'DASHBOARDS.SAVE_AS_DRAFT\') | translate | uppercase }}</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="MAIL.ADD_NOTE">Add note</span>\n          </md-button>\n          <md-button ng-disabled="!vm.verifySmtp" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload($files)" flow-init="vm.ngFlowOptions" flow-file-success="vm.fileSuccess($file, $message)" flow-file-added="vm.fileAdded($file)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="MAIL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to" ng-class="{\'hidden-cc\': vm.hiddenCC, \'hidden-bcc\': vm.hiddenBCC}">\n        <label translate="MAIL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.to)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n        <div class="cc-bcc" layout="row" layout-align="start center">\n          <div class="show-cc" ng-show="vm.hiddenCC" ng-click="vm.hiddenCC = false">CC</div>\n          <div class="show-bcc" ng-show="vm.hiddenBCC" ng-click="vm.hiddenBCC = false">BCC</div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenCC">\n        <label translate="MAIL.CC">Cc</label>\n        <md-chips name="cc" ng-model="vm.message.cc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.cc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchCc" md-items="contact in vm.contactSearch(vm.searchCc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenBCC">\n        <label translate="MAIL.BCC">Bcc</label>\n        <md-chips name="bcc" ng-model="vm.message.bcc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.bcc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchBcc" md-items="contact in vm.contactSearch(vm.searchBcc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block no-margin">\n        <label translate="MAIL.SUBJECT">Subject</label>\n        <input ng-model="vm.message.subject" type="text" ng-keypress="vm.keyPress($event)">\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size" ng-if="attachment.size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button ng-click="vm.removeAttachment(attachment)" class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="MAIL.DELETE_ATTACHMENT">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="padding-top-5">\n        <textarea ckeditor="vm.ckeditor" id="html-area" ng-model="vm.message.body" md-select-on-focus="" ready="vm.onReadyEditor()"></textarea>\n      </div>\n      <md-switch ng-if="!vm.message.showLastMessage && !vm.secret" ng-model="vm.message.showLastMessage" ng-change="vm.loadLastMessage()" aria-label="load last message"><span translate="MAIL.SHOW_ORIGINAL_MESSAGE">Show original message</span></md-switch>\n      <md-autocomplete ng-if="!vm.secret" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'MAIL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin" ng-keypress="vm.keyPress($event)">\n        <md-item-template>\n          <md-icon ng-if="!item.MailAccountId" md-font-icon="icon-earth" aria-label="alert email" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.MailAccountId" md-font-icon="icon-email" aria-label="alert email" class="s16 teal-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{ item.key }} -\n            {{ item.value | htmlToPlaintext }}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="MAIL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="OPENCHANNEL.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="OPENCHANNEL.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="OPENCHANNEL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="OPENCHANNEL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mapkey" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'OPENCHANNEL.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'OPENCHANNEL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.OpenchannelAccountId" md-font-icon="icon-earth" aria-label="alert openchannel" class="s16"></md-icon>\n          <md-icon ng-if="item.OpenchannelAccountId" md-font-icon="icon-message-text" aria-label="alert openchannel" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="OPENCHANNEL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="SMS.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="SMS.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="SMS.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="SMS.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'SMS.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'SMS.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.SmsAccountId" md-font-icon="icon-earth" aria-label="alert sms" class="s16"></md-icon>\n          <md-icon ng-if="item.SmsAccountId" md-font-icon="icon-message-text" aria-label="alert sms" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="SMS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="WHATSAPP.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="WHATSAPP.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="WHATSAPP.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="WHATSAPP.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'WHATSAPP.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'WHATSAPP.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.WhatsappAccountId" md-font-icon="icon-earth" aria-label="alert whatsapp" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.WhatsappAccountId" md-font-icon="icon-message-text" aria-label="alert whatsapp" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="WHATSAPP.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition" ng-init="vm.onInit()">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="!vm.interaction.closed" class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <span ng-if="vm.interaction.closed" class="title" translate="DASHBOARDS.INFO"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n        <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n          <md-option ng-value="null" ng-if="!vm.mandatoryDisposition">NONE</md-option>\n          <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n            {{ disposition.name }}</md-option>\n        </md-select>\n        <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n          <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.NOTE">Note</label>\n        <textarea ng-model="vm.interaction.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && (vm.firstLevelDisposition || vm.secondLevelDisposition || vm.thirdLevelDisposition)" aria-label="CLOSE_AND_DISPOSE" translate="DASHBOARDS.CLOSE_AND_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_AND_DISPOSE">\n          CLOSE AND DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition(false)" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && !vm.firstLevelDisposition" ng-disabled="vm.mandatoryDisposition" aria-label="CLOSE_WITHOUT_DISPOSE" translate="DASHBOARDS.CLOSE_WITHOUT_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_WITHOUT_DISPOSE">\n          CLOSE WITHOUT DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="vm.interaction.closed" ng-disabled="vm.mandatoryDisposition && !vm.firstLevelDisposition" aria-label="DISPOSE" translate="DASHBOARDS.DISPOSE" translate-attr-aria-label="DASHBOARDS.DISPOSE">\n          DISPOSE\n        </md-button>\n        <div ng-if="vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Mandatory Disposition"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="DASHBOARDS.HELP.MANDATORY_DISPOSITION_ENABLED"></span>\n        </div>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",'<md-dialog class="tag-dialog" aria-label="tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TAGS"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-chips ng-model="vm.interaction.Tags" md-autocomplete-snap md-require-match="vm.autocompleteRequireMatch">\n          <md-autocomplete ng-blur="vm.searchText = \'\'" md-min-length="0" md-selected-item-change="vm.selectedItemChange" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="item in vm.tags.rows | filter:{ name: vm.searchText }" md-item-text="item.name" placeholder="Search for a tag">\n            <span md-highlight-text="vm.searchText">{{item.name}}</span>\n          </md-autocomplete>\n          <md-chip-template>\n            <span>\n              <strong>{{$chip.name}}</strong>\n            </span>\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveTag(false)" ng-disabled="tagForm.$pristine" class="send-button md-accent md-raised" aria-label="TAG" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition">\n  <form name="transferForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TRANSFER"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(false)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.transfer.type">\n          <md-option ng-value="\'queue\'" ng-if="vm.account.queueTransfer">Queue</md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.account.agentTransfer">Agent</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'queue\'">\n        <label translate="DASHBOARDS.QUEUES">Queues</label>\n        <md-select name="queue" ng-model="vm.transfer.id" required>\n          <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.queue.$error" ng-show="transferForm.queue.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'agent\'">\n        <label translate="DASHBOARDS.AGENTS">Agents</label>\n        <md-select name="agent" ng-model="vm.transfer.id" required>\n          <md-option ng-value="agent.id" ng-repeat="agent in vm.agents.rows">{{\n            agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.agent.$error" ng-show="transferForm.agent.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.onTransfer(true)" ng-disabled="transferForm.$pristine" class="send-button md-accent md-raised" aria-label="DASHBOARDS.TRANSFER" translate="DASHBOARDS.TRANSFER" translate-attr-aria-label="DASHBOARDS.TRANSFER">\n          TRANSFER\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html",'\x3c!-- REPLY FORM --\x3e\n<div ng-show="vm.showFooter" layout="column" layout-align="center center" flex>\n  <div layout="row" layout-align="center center" style="flex-grow: 1; align-self: stretch" flex>\n    \x3c!-- msEmojyArea directive --\x3e\n    <ms-emoji-area ng-if="vm.tab.channel != \'fax\'" on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.tab.areaText" placeholder="vm.tab.channel.toUpperCase() + \'.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n    \x3c!-- / msEmojyArea directive --\x3e\n\n    <div layout="row" layout-align="end center">\n      <md-button ng-if="vm.tab.channel != \'fax\'" style="margin:1px;" class="md-icon-button md-mini" ng-click="vm.changeDisplayCannedAnswerInputValue()" aria-label="Search canned answer" translate translate-attr-aria-label="DASHBOARDS.SEND_MESSAGE">\n        <md-icon md-font-icon="icon-auto-fix" class="green-fg"></md-icon>\n      </md-button>\n\n      <md-button ng-if="vm.tab.channel == \'openchannel\' || vm.tab.channel == \'chat\' || vm.tab.channel == \'fax\'" style="margin:1px;" class="md-icon-button md-warn md-mini" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n        <md-icon md-font-icon="icon-paperclip"></md-icon>\n      </md-button>\n    </div>\n  </div>\n\n  <md-autocomplete ng-hide="!vm.displayCannedAnswerInput" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" placeholder="{{ \'DASHBOARDS.CANNED_ANSWER_SEARCH\' | translate}}" class="cannedarea input-show-hide">\n    <md-item-template>\n      <md-icon ng-if="!item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="icon-earth" aria-label="alert channel" class="s16"></md-icon>\n      <md-icon ng-if="item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" aria-label="alert channel" class="s16" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n      <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n    </md-item-template>\n\n    <md-not-found>\n      <span translate="DASHBOARDS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n    </md-not-found>\n  </md-autocomplete>\n</div>\n\x3c!-- / REPLY FORM --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.browserName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.BROWSER_NAME">Browser Name</p>\n      <h4>{{ item.browserName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.osName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.OS_NAME">OS Name</p>\n      <h4>{{ item.osName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.deviceModel">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DEVICE_MODEL">Device Model</p>\n      <h4>{{ item.deviceModel }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.referer">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.REFERER">Referer</p>\n      <h4>{{ item.referer }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerIp">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_IP">Originating IP Address</p>\n      <h4>{{ item.customerIp }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerPort">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_PORT">Originating TCP Port</p>\n      <h4>{{ item.customerPort }}</h4>\n    </div>\n  </md-list-item>\n  <md-divider ng-if="item.closed && item.ratingValue != null || item.ratingMessage"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.ratingValue != null">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.RATING">Rating</p>\n      <md-icon md-font-icon="icon-star" style="color:red" ng-show="!item.ratingType || item.ratingType == \'star\'" ng-repeat="ratingValue in [1,2,3,4,5] | limitTo:item.ratingValue"></md-icon>\n      <md-icon md-font-icon="icon-thumb-up" style="color:green" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 1"></md-icon>\n      <md-icon md-font-icon="icon-thumb-down" style="color:red" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 0"></md-icon>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.ratingMessage">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.FEEDBACK">Feedback</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.ratingMessage }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html",'<md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CONTACT">Contact</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <form name="contactForm" class="md-inline-form" novalidate>\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-account"></md-icon>\n            <label translate="DASHBOARDS.NAME">Name</label>\n            <input type="text" name="firstName" ng-model="vm.contact.firstName" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-email"></md-icon>\n            <label translate="DASHBOARDS.EMAIL">Email</label>\n            <input type="email" name="email" ng-model="vm.contact.email" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n            <label translate="DASHBOARDS.PHONE">Phone</label>\n            <input type="text" name="phone" ng-model="vm.contact.phone" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n            <label translate="DASHBOARDS.MOBILE">Mobile</label>\n            <input type="text" name="mobile" ng-model="vm.contact.mobile" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-deskphone"></md-icon>\n            <label translate="DASHBOARDS.FAX">Fax</label>\n            <input type="text" name="fax" ng-model="vm.contact.fax" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <div ng-if="!vm.tab.spy" layout="row" layout-align="center center">\n            <md-button class="md-raised md-accent" ng-click="vm.openContact(ev)" translate="DASHBOARDS.MORE">\n              More\n            </md-button>\n          </div>\n        </form>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.INTERACTION">Interaction</span>\n    </md-tab-label>\n    <md-tab-body>\n      <div layout="column" layout-align="space-between center" class="md-padding">\n        <md-icon class="s42" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n        <span ng-if="vm.interaction.closed" class="md-background-bg red-fg font-size-14">#{{vm.interaction.id}} - <span translate="DASHBOARDS.CLOSED"></span></span>\n        <span ng-if="!vm.interaction.closed" class="md-background-bg green-fg font-size-14">#{{vm.interaction.id}} -\n          <span translate="DASHBOARDS.OPENED"></span></span>\n        <span ng-if="!vm.interaction.closed && vm.interaction.substatus" class="md-background-bg green-fg font-size-14">{{vm.interaction.substatus}}</span>\n      </div>\n      <md-divider></md-divider>\n      <md-list flex>\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.WEBSITE" ng-if="vm.tab.channel == \'chat\'">Website</p>\n            <p translate="DASHBOARDS.ACCOUNT" ng-if="vm.tab.channel != \'chat\'">Account</p>\n            <h4>{{vm.account.name}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.AGENT">Agent</p>\n            <h4>{{vm.agent.fullname || vm.usersMap[vm.interaction.UserId]}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.externalUrl">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n            <a href="{{vm.interaction.externalUrl}}" target="_blank">\n              <h4>{{vm.interaction.externalUrl}}</h4>\n            </a>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n            <h4>{{vm.interaction.createdAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n\n        <div ng-switch="vm.tab.channel">\n          <div ng-switch-when="chat">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="openchannel">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html\'">\n            </div>\n          </div>\n        </div>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.Tags.length">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.TAGS">Tags</p>\n            <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n              <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n                <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n                <div class="tag-label">{{tag.name}}</div>\n              </div>\n            </div>\n          </div>\n        </md-list-item>\n\n        <md-divider ng-if="vm.interaction.closed"></md-divider>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n            <h4>{{vm.interaction.closedAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.disposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n            <h4>{{ vm.interaction.disposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.secondDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n            <h4>{{ vm.interaction.secondDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.thirdDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n            <h4>{{ vm.interaction.thirdDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-3-line md-long-text" ng-if="vm.interaction.closed && vm.interaction.note">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.NOTE">NOTE</p>\n            <h4 style="overflow-wrap: break-word; white-space: normal">{{ vm.interaction.note }}</h4>\n          </div>\n        </md-list-item>\n      </md-list>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html",'<md-divider></md-divider>\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.AGENT">Agent</p>\n      <h4>{{ vm.agent.fullname || vm.usersMap[item.UserId] || \'DASHBOARDS.NOT_ASSIGNED\' | translate }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.externalUrl">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n      <a href="{{ item.externalUrl }}" target="_blank">\n        <h4>{{ item.externalUrl }}</h4>\n      </a>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n      <h4>{{ item.createdAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <div ng-if="item.channel === \'chat\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n    </div>\n  </div>\n  <div ng-if="item.channel === \'mail\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n    </div>\n  </div>\n  <md-divider ng-if="item.closed"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n      <h4>{{ item.closedAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.disposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n      <h4>{{ item.disposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.secondDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n      <h4>{{ item.secondDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.thirdDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n      <h4>{{ item.thirdDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-3-line md-long-text" ng-if="item.closed && item.note">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">NOTE</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.note }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item ng-if="item.Tags.length">\n    <p class="padding-horizontal-15 grey-fg">Tags</p>\n    <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n      <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in item.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{ tag.name }}</div>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html",'<div layout-margin layout="row" layout-align="center center">\n  <ms-quick-filter filters="vm.quickFilters" query="vm.journeyOptions" search="vm.getCustomerJourney()">\n  </ms-quick-filter>\n</div>\n\n<md-content id="journey-content" flex ms-scroll layout-wrap>\n  <div ng-if="vm.journeyIsLoading" layout="row" layout-align="center center">\n    <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n  </div>\n  <div id="timeline" layout="column" ng-if="vm.journey && vm.journey.length && !vm.journeyIsLoading" ms-timeline="vm.journeyTimelineOptions" ms-timeline-load-more="vm.loadMoreJourney()">\n    \x3c!-- TIMELINE ITEM --\x3e\n    <div class="ms-timeline-item" layout-align="center center" ng-repeat="item in vm.journey">\n      <div class="timeline-card">\n        <md-card class="channel" ng-class="{\'md-grey-200-bg\': item.id == vm.interaction.id}">\n          <div layout="row" layout-align="space-between center">\n            <div class="header p-6" layout="row" layout-align="start center" ng-cloak>\n              <md-button class="md-fab md-mini no-click" aria-label="icon-channel" ng-class="{{ \'item.style.color\' }} + \'-bg\'">\n                <md-icon md-font-icon="{{ item.style.icon }}"></md-icon>\n              </md-button>\n              <div class="info" layout="column" ng-init="item.showMore = false">\n                <span class="font-size-12 text-truncate" ng-if="item.destination">\n                  #{{item.id}} - <span privacy ng-cloak>{{ item.destination }}</span>\n                </span>\n                <span class="font-size-12 text-truncate" ng-if="!item.destination">\n                  #{{item.id}} - {{ item.Account.key }}\n                </span>\n                <span class="font-size-10">{{item.createdAt | date: \'medium\'}}</span>\n                <span>\n                  <a class="toggle-details md-accent-color" ng-click="item.showMore = !item.showMore" translate="{{ item.showMore ? \'DASHBOARDS.HIDE_DETAILS\' : \'DASHBOARDS.SHOW_DETAILS\' }}">\n                  </a>\n                </span>\n              </div>\n            </div>\n            <span>\n              <img ng-if="item.UserId" class="avatar" ng-src="api/users/{{item.UserId}}/avatar">\n              <md-tooltip md-direction="left">{{item.Owner.fullname || item.User.fullname}}</md-tooltip>\n            </span>\n          </div>\n          <div ng-if="item.showMore">\n            <div ng-if="item.channel !== \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html\'">\n            </div>\n            <div ng-if="item.channel === \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html\'">\n            </div>\n          </div>\n          <md-divider></md-divider>\n          <div ng-if="item.id != vm.interaction.id" layout="row" layout-align="space-around center">\n            <div ng-if="item.closed && item.channel !== \'voice\'" class="text-truncate text-boxed-light">\n              <span class="red-fg" title="{{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate }} {{ item.dispositionsValues }}">\n                {{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate}} {{ item.dispositionsValues\n                }}\n              </span>\n            </div>\n            <span class="text-boxed md-background-bg green-fg" ng-if="!item.closed && item.channel !== \'voice\'" title="{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.OPENED\' | translate}}">\n              {{ \'DASHBOARDS.STATUS\' | translate}}:\n              {{ \'DASHBOARDS.OPENED\' | translate}}\n              <span ng-if="item.substatus"> - {{ item.substatus }}</span>\n            </span>\n            <span ng-if="item.channel === \'voice\'" class="text-boxed md-background-bg red-fg" title="{{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n                item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}">\n              {{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n              item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userSecondDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}: {{ item.userSecondDisposition }}">\n              {{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userSecondDisposition }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userThirdDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}: {{ item.userThirdDisposition }}">\n              {{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userThirdDisposition }}\n            </span>\n            <div flex></div>\n            <md-button ng-if="!vm.tab.spy && vm.user.role === \'agent\' && item.canOpen && item.channel !== \'voice\'" class="md-icon-button" aria-label="go" ng-click="vm.openInteraction(item)">\n              <md-icon md-font-icon="icon-open-in-new" class="s20"></md-icon>\n            </md-button>\n          </div>\n        </md-card>\n      </div>\n    </div>\n\n    <div ng-if="vm.canLoadMoreJourney" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row keep-on-top">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm.loadMoreJourney()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / TIMELINE ITEM --\x3e\n</md-content>\n\n<div ng-if="!vm.journey || vm.journey.length === 0" layout="row" layout-align="center center">\n  <em translate="DASHBOARDS.NO_DATA_AVAILABLE">No data available</em>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html",'<md-divider></md-divider>\n\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.TYPE">Type</p>\n      <h4>{{ item.type ? item.type : \'no type\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SOURCE">Source</p>\n      <h4 privacy ng-cloak>{{ item.source ? item.source : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DESTINATION">Destination</p>\n      <h4 privacy ng-cloak>{{ item.destination ? item.destination : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.UNIQUEID">Uniqueid</p>\n      <h4>{{ item.uniqueid ? item.uniqueid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CALLERID">Caller Id</p>\n      <h4 privacy ng-cloak>{{ item.callerid ? item.callerid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.STARTEDAT">Started At</p>\n      <h4>{{ item.starttime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.END_AT">End At</p>\n      <h4>{{ item.endtime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DURATION">Duration</p>\n      <h4>{{ item.duration ? item.duration : \'--\' }}s</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">Note</p>\n      <h4>{{ item.note ? item.note : \'--\' }}</h4>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.subject">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SUBJECT">Subject</p>\n      <h4>{{ item.subject }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.VISIBILITY">Visibility</p>\n      <h4 translate="{{ item.threadId ? \'DASHBOARDS.PUBLIC\' : \'DASHBOARDS.PRIVATE\'}}"></h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html",'\x3c!-- MESSAGES --\x3e\n<div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n  <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && !message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n  <md-button ng-if="vm.tab.channel === \'fax\'" class="md-fab md-mini no-margin" aria-label="Download" ng-click="vm.downloadMessage(message)">\n    <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n  </md-button>\n\n  <div class="bubble" ng-class="{\'md-yellow-200-bg\': message.secret}" ng-switch="message.direction">\n    <div ng-if="message.secret">\n      <div class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id">\n          <md-icon class="s18" md-font-icon="icon-lock"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="!message.secret">\n      <div ng-switch-when="in" class="time secondary-text" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n        <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n        <span> - {{message.createdAt | date: \'medium\'}}</span>\n      </div>\n      <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id && vm.tab.channel !== \'fax\'">\n          <md-icon ng-if="!message.read" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n        <div ng-if="message.id && vm.tab.channel === \'fax\'">\n          <md-icon ng-if="!message.read && !(message.failMessage )" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n          <span ng-if="!message.read && message.failMessage" class="s18 red-900-fg"> {{ message.failMessage }}</span>\n          <md-icon ng-if="!message.read && message.failMessage" class="s18 red-900-fg" md-font-icon="icon-close md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="message.AttachmentId" layout="row" layout-align="end center">\n      <md-button ng-if="vm.downloadPermissions.attachments" class="md-raised md-accent" ng-click="vm.getAttachment({id: message.AttachmentId, name: vm.htmlToPlaintext(message.body)})">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <div ng-if="!vm.downloadPermissions.attachments" class="disabled-button">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </div>\n    </div>\n    <div ng-if="!message.AttachmentId" class="message" layout="row" layout-align="end center">\n      <span ng-bind-html="message.body | embed: vm.embedOptions"></span>\n    </div>\n  </div>\n</div>\n\x3c!-- / MESSAGES --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html",'<div ms-timeline="vm.interactionTimelineOptions" ms-timeline-load-more="vm.loadNextPage()">\n  <div ng-repeat="message in vm.messages.rows track by message.id" ng-init="vm.selectedMailShowSystemMessage[message.id] = false">\n    <md-card ng-if="message.secret" class="md-padding md-yellow-100-bg" layout="column">\n      <div layout="row" layout-align="start center">\n        <img class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n        <div layout="column">\n          <span class="grey-fg">{{vm.agent.fullname || vm.usersMap[message.UserId]}}</span>\n          <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n        </div>\n      </div>\n      <div layout="row" layout-align="center center" layout-fill ng-if="message.attach && vm.downloadPermissions.attachments">\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n        <md-menu>\n          <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n            <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </md-tooltip>\n            <div layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n              <span>{{message.attach}}</span>\n            </div>\n          </md-button>\n          <md-menu-content width="4">\n            <div layout="column" layout-align="center center" ng-if="!message.attachments">\n              <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n              <span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </div>\n            <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n              <md-button ng-click="vm.getAttachment(attachment)">\n                {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n      </div>\n      <div class="padding-top-5" ng-bind-html-unsafe="message.body"></div>\n    </md-card>\n    <div ng-if="!message.secret">\n      <div layout="row" layout-align="center center" ng-if="message.direction == \'out\' && !message.UserId && !vm.selectedMailShowSystemMessage[message.id]">\n        <md-button class="md-raised blue-grey-300-bg white-fg" ng-click="vm.selectedMailShowSystemMessage[message.id] = !vm.selectedMailShowSystemMessage[message.id]">\n          [{{message.createdAt | date: \'medium\'}}] {{ \'MAIL.SHOW_AUTOREPLY\' | translate }}</md-button>\n      </div>\n      <md-card layout="column" class="md-padding message-row" ng-if="message.direction == \'in\' || (message.direction == \'out\' && (message.UserId || vm.selectedMailShowSystemMessage[message.id]))">\n        <md-content class="mail-content">\n          <div class="info" layout="row" layout-align="space-between start">\n            <div layout="column" layout-align="start start">\n              <div layout="row" layout-align="start start">\n                <div layout="column" layout-align="start start">\n                  <div class="name" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n                    <strong privacy ng-cloak>{{message.from}}</strong>\n                    <md-icon ng-if="message.attach" md-font-icon="icon-paperclip" class="s16">\n                    </md-icon>\n                  </div>\n                  <div class="name">\n                    <div>{{message.subject}}</div>\n                  </div>\n                  <div class="name" layout="row" layout-align="start center"><span translate="MAIL.TO">To</span>: <span class="padding-left-5 subject text-truncate" privacy ng-cloak>{{ message.originTo || message.to\n                      }}</span>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.originCc && message.originCc.indexOf(vm.account.email) >= 0">\n                    <em><span class="blue-grey" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="blue-grey">CC</span></em>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.bcc && message.bcc.indexOf(vm.account.email) >= 0">\n                    <em><span class="red-fg" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="red-fg">BCC</span></em>\n                  </div>\n                </div>\n              </div>\n\n              <a class="toggle-details md-accent-color" ng-hide="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.SHOW_DETAILS">\n                Show Details\n              </a>\n              <a class="toggle-details md-accent-color" ng-show="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.HIDE_DETAILS">\n                Hide Details\n              </a>\n              <div ng-show="vm.selectedMailShowDetails[message.id]" class="details" layout="row" layout-align="start start">\n                <div layout="column">\n                  <span class="title" translate="MAIL.DATE">Date:</span>\n                  <span class="title" translate="MAIL.FROM">From:</span>\n                  <span class="title" translate="MAIL.TO">To:</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && message.originCc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'out\' && message.cc">Cc:</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="title" translate="MAIL.BCC" ng-if="message.bcc">Bcc:</span>\n                  <span class="title" translate="MAIL.ACCEPTED" ng-if="message.UserId && message.direction ===\'in\'">Accepted:</span>\n                </div>\n\n                <div layout="column">\n                  <span class="detail">{{message.createdAt | date:\'medium\'}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.from}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.originTo || message.to}}</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="detail" ng-if="message.direction === \'in\' && message.originCc" privacy ng-cloak>{{\n                    message.originCc }}</span>\n                  <span class="detail" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc" privacy ng-cloak>{{ message.cc }}</span>\n                  <span class="detail" ng-if="message.direction === \'out\' && message.cc" privacy ng-cloak>{{ message.cc\n                    }}</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="detail" ng-if="message.bcc" privacy ng-cloak>{{message.bcc}}</span>\n                  <span class="detail" ng-if="message.UserId && message.direction ===\'in\'">{{vm.usersMap[message.UserId]}}</span>\n                </div>\n              </div>\n            </div>\n\n            <div layout="row" layout-align="center center">\n              <div layout="column" layout-align="center end" class="md-padding">\n                <span class="grey-fg" ng-if="message.direction ===\'in\'" privacy>{{message.from.indexOf(vm.contact.email)\n                  >= 0 ? vm.contact.firstName + \' \' + vm.contact.lastName : \'*\' + message.from}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && message.UserId">{{vm.agent.fullname ||\n                  vm.usersMap[message.UserId]}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && !message.UserId">System</span>\n                <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n              </div>\n              <img ng-if="message.direction ===\'in\'" ng-src="assets/images/avatars/customer.png" class="avatar" alt="customer" />\n              <img ng-if="message.direction ===\'out\' && message.UserId" class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n              <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n            </div>\n          </div>\n\n          <div layout="row" layout-align="center center" layout-fill>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n            <div>\n              <div class="interaction-reply-button-container">\n                <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span>\n                </md-tooltip>\n                <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft(message.id)">\n                  <md-icon md-font-icon="icon-pencil-box" class="icon s24"></md-icon>\n                </md-button>\n              </div>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n                <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!message.attach && vm.downloadPermissions.interactions" class="md-icon-button" aria-label="forward" ng-click="vm.downloadMessage(message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n              </md-button>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n                <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                  </md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n                <md-menu-content width="2">\n                  <md-menu-item ng-if="vm.downloadPermissions.attachments">\n                    <md-button ng-click="vm.downloadMessage(message, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                      Download with attachments\n                    </md-button>\n                  </md-menu-item>\n                  <md-menu-item>\n                    <md-button ng-click="vm.downloadMessage(message)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                      Download without attachments\n                    </md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.attachments">\n                <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span></md-tooltip>\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n                    <span>{{message.attach}}</span>\n                  </div>\n                </md-button>\n                <md-menu-content width="4">\n                  <div layout="column" layout-align="center center" ng-if="!message.attachments">\n                    <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n                    <span translate="MAIL.ATTACHMENTS">Attachments</span>\n                  </div>\n                  <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n                    <md-button ng-click="vm.getAttachment(attachment)">\n                      {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n            </div>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n          </div>\n\n          <md-content ng-bind-html-unsafe="message.body"></md-content>\n        </md-content>\n      </md-card>\n    </div>\n    <div ng-hide="!(vm.BTNLoadMore > 0)" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-disabled="!(vm.BTNLoadMore > 0)" ng-click="vm.loadNextPage()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html",'<div class="big-circle md-whiteframe-4dp">\n  <md-icon class="s128 md-accent" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n</div>\n<span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n<span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n  interaction...</span>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeChatInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="CHAT.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html",'<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeFaxInteraction(\'new\')">\n  <md-tooltip md-direction="bottom"><span translate="FAX.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html",'<div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n  <md-icon md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" class="s20" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n  <div class="padding-left-10" layout="column" layout-align="center start" flex>\n    <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n      <span>#{{vm.interaction.id}} - {{vm.account.key}}</span>\n      <div layout="row" layout-align="center center" class="p-8">\n        <md-icon ng-if="vm.tab.channel === \'openchannel\' && vm.interaction.threadId" md-font-icon="fas fa-users" class="s16">\n          <md-tooltip><span translate="DASHBOARDS.PUBLIC_INTERACTION">The interaction is public</span></md-tooltip>\n        </md-icon>\n        <md-icon ng-if="vm.interaction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n      </div>\n      <span class="red-fg padding-left-25" ng-if="vm.interaction.closed" translate="DASHBOARDS.CLOSED">CLOSED</span>\n      <span class="green-fg padding-left-25" ng-if="!vm.interaction.closed"><span translate="DASHBOARDS.OPENED">OPENED</span><span ng-if="vm.interaction.substatus"> -\n          {{vm.interaction.substatus}}</span></span>\n      <div layout="row" layout-align="center center" class="blue-grey-300-fg padding-left-40" ng-if="!vm.interaction.closed">\n        <timer start-time="vm.interaction.createdAt"></timer>\n        <md-icon md-font-icon="icon-timelapse" class="s16 padding-left-5"></md-icon>\n      </div>\n    </div>\n    <div class="tags" layout="row" layout-align="start center" ng-if="vm.interaction.Tags.length" ng-class="{\'padding-top-5\': vm.interaction.Tags.length}">\n      <div class="tag margin-right-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{tag.name}}</div>\n      </div>\n    </div>\n  </div>\n  <div layout="row" layout-align="end center">\n    <div ng-switch="vm.tab.channel">\n      <div ng-switch-when="mail">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html\'">\n        </div>\n      </div>\n    </div>\n    <md-menu ng-if="[\'fax\', \'sms\', \'whatsapp\'].indexOf(vm.tab.channel) < 0 && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n        <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <md-menu-content width="2">\n        <md-menu-item ng-if="vm.downloadPermissions.attachments">\n          <md-button ng-click="vm.downloadInteraction(vm.interaction, true)" translate="DASHBOARDS.DOWNLOAD_WITH_ATTACHMENTS">\n            Download with attachments\n          </md-button>\n        </md-menu-item>\n        <md-menu-item>\n          <md-button ng-click="vm.downloadInteraction(vm.interaction)" translate="DASHBOARDS.DOWNLOAD_WITHOUT_ATTACHMENTS">\n            Download without attachments\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n    <md-menu class="no-margin" ng-if="!vm.interaction.disposition" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="more">\n        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n      </md-button>\n\n      <md-menu-content width="2">\n\n        <md-menu-item ng-if="vm.tab.channel === \'chat\' && !vm.interaction.closed && !vm.tab.spy && vm.account.vidaooEscalation && vm.account.vidaooApiKey">\n          <md-button ng-click="vm.createVidaooSession(vm.interaction)" translate="DASHBOARDS.VIDAOOSESSION">\n            Start Video Call\n          </md-button>\n        </md-menu-item>\n\n        <md-menu-item>\n          <md-button ng-click="vm.tagInteraction()" translate="DASHBOARDS.TAG">\n            Tag\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="vm.account.queueTransfer || vm.account.agentTransfer">\n          <md-button ng-click="vm.transferLastMessage()" translate="DASHBOARDS.TRANSFER">\n            Transfer\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && (vm.subStatuses.rows.length || vm.interaction.substatus != null)">\n          <md-menu>\n            <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.SET_AS">\n              Set as\n            </md-button>\n            <md-menu-content>\n              <md-menu-item ng-if="vm.interaction.substatus != null">\n                <md-button ng-click="vm.setAs(null)" translate="DASHBOARDS.NONE">\n                  None\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                <md-button ng-click="vm.setAs(subStatus.name)">\n                  {{subStatus.name}}\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && vm.account.markAsUnread">\n          <md-button ng-click="vm.markAsUnread()" translate="DASHBOARDS.MARK_AS_UNREAD">\n            Unread\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && !vm.interaction.closed">\n          <md-button ng-click="vm.disposeInteraction()" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n            Close and Dispose\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && vm.interaction.closed && !vm.interaction.disposition">\n          <md-button ng-click="vm.disposeInteraction(ev)" translate="DASHBOARDS.DISPOSE">\n            Dispose\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html",'<div class="interaction-reply-button-container">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span></md-tooltip>\n  <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft()">\n    <md-icon ng-cloak md-font-icon="icon-pencil-box" class="icon s24" ng-class="vm.draft ? \'red-500-fg\' : \'grey-fg\'"></md-icon>\n  </md-button>\n</div>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span></md-tooltip>\n  <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeMailInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeOpenchannelInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="OPENCHANNEL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeSmsInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="SMS.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeWhatsappInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="WHATSAPP.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html",'<md-content class="md-padding" layout="column" layout-align="center center">\n  <div layout="row" layout-align="center center">\n    <span ng-if="!vm.tab.saved" class="text-boxed md-green-bg">\n      <timer start-time="vm.starttime"></timer>\n    </span>\n    <span ng-if="vm.contact" class="text-boxed md-gray-bg font-weight-900">{{vm.contact.firstName}} {{vm.contact.lastName}} {{vm.contact.phone}}</span>\n    <md-button ng-if="vm.showResetButton" ng-click="vm.resetViewer()" md-no-ink class="md-raised md-accent orange-bg">\n      <md-icon md-font-icon="icon-rotate-left" class="icon s16"></md-icon> {{\'JSCRIPTY.RESET_SESSION\' | translate}}\n    </md-button>\n    <md-button ng-if="vm.contact" ng-click="vm.openContact($event, vm.contact)" md-no-ink class="md-raised md-accent" translate="JSCRIPTY.OPEN_CONTACT"></md-button>\n    <md-button ng-if="vm.showIncompleteSubmitButton" ng-click="vm.onSubmit($event, true)" md-no-ink class="md-raised md-accent green-bg" translate="JSCRIPTY.SUBMIT"></md-button>\n  </div>\n  <h1 ng-if="!vm.project.formData"><span translate="JSCRIPTY.PROJECT_NOT_AVAILABLE">Project is not available. Please contact the administrator</span></h1>\n  <mw-form-viewer ng-if="vm.project.formData" form-data="vm.project.formData" response-data="vm.project.responseData" on-submit="vm.onSubmit($event)" template-data="call" api="vm.formViewer"></mw-form-viewer>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/notification/dialog.html",'\x3c!-- <md-toast> --\x3e\n<div class="md-padding" layout="column" layout-align="center center">\n  <span class="md-title">#{{vm.notification.id}} {{vm.notification.title}}</span>\n  <span class="md-subhead" ng-if="vm.notification.queue">{{vm.notification.queue}}</span>\n  <div class="padding-top-5" layout="row">\n    <md-button class="md-raised md-accent" ng-click="vm.accept($event)" translate="DASHBOARDS.ACCEPT">\n      ACCEPT\n    </md-button>\n    <md-button class="md-raised md-warn" ng-click="vm.reject($event)" translate="DASHBOARDS.REJECT">\n      REJECT\n    </md-button>\n  </div>\n</div>\n\x3c!-- </md-toast> --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html",'<md-content class="md-padding" flex>\n  <div ng-if="vm.html" ng-bind-html="vm.html"></div>\n  <h1 ng-if="!vm.html">Template is empty. Please contact the administrator</h1>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-hangouts" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_MANAGED_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_MANAGED_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_MANAGED_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_MOTION_BULL_STATS">Today Motion Bull STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{(vm.inbound.talking || 0) + (vm.inbound.pTalking || 0)}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayCallersExit || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayTimeout || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROPPED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.DROPPED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROPPED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.originated || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.ORIGINATED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundanswerRate || 0 |number : 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundAbandonRate || 0}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundDropRate }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROP_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.DROP_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROP_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e\n\n\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_IVR_CAMPAIGNS_STATS">Today IVR campaigns stats</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.ivr.originated || 0}}/{{vm.ivr.limitCalls || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}/{{\'DASHBOARDS.LIMITED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.LIMITED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATEDLIMITED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET IVR --\x3e'),e.put("app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-deskphone" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-email" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-google-earth" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-message-text" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/user.general.html",'<div id="dashboard-general" ng-init="vm.onInit()" class="page-layout simple right-sidenav" layout="row">\n  \x3c!-- CENTER --\x3e\n  <div class="center" flex ms-scroll>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n      <md-tabs ng-if="vm.hasDashboardPermissions" md-selected="vm.selectedTab" md-dynamic-height>\n        <md-tab ng-if="vm.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}" ui-sref="app.dashboards.general.voice">\n          <div ui-view="voice"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.dialer" label="{{\'DASHBOARDS.MOTIONDIALER\' | translate}}" ui-sref="app.dashboards.general.dialer">\n          <div ui-view="dialer"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}" ui-sref="app.dashboards.general.chat">\n          <div ui-view="chat"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}" ui-sref="app.dashboards.general.mail">\n          <div ui-view="mail"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}" ui-sref="app.dashboards.general.sms">\n          <div ui-view="sms"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}" ui-sref="app.dashboards.general.openchannel">\n          <div ui-view="openchannel"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}" ui-sref="app.dashboards.general.fax">\n          <div ui-view="fax"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}" ui-sref="app.dashboards.general.whatsapp">\n          <div ui-view="whatsapp"></div>\n        </md-tab>\n      </md-tabs>\n    </div>\n    \x3c!-- END CONTENT --\x3e\n\n    <md-content ng-if="!vm.hasDashboardPermissions" layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n      <div layout="column" layout-align="space-around center" flex="50">\n        <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n        <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to\n          navigate through available sections.</span>\n      </div>\n\n      <div layout="column" flex="50">\n        <img src="assets/images/avatars/permissions.png" alt="permissions">\n      </div>\n    </md-content>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-incoming" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INBOUND_STATS">Today Inbound STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-incoming"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timer-sand"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e\n\n\x3c!-- WIDGET OUTBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_OUTBOUND_STATS">Today Outbound STATS</div>\n  </div>\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.outbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.outbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-clock"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{vm.outbound.sumDuration || 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOT_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.TOT_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOT_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-division"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? ((vm.outbound.sumDuration / vm.outbound.total) | number: 0) : 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? (vm.outbound.answered / vm.outbound.total * 100) : 0 | number: 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-whatsapp" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/fax/views/faxAccounts/create/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="faxAccountForm[\'name\'].$error" ng-show="faxAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="faxAccountForm[\'key\'].$error" ng-show="faxAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUNK">trunk</label>\n        <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'TrunkId\'].$error" ng-show="faxAccountForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LOCALSTATIONID">localstationid</label>\n        <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true">\n\n        <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n        <div ng-messages="faxAccountForm[\'localstationid\'].$error" ng-show="faxAccountForm[\'localstationid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.faxAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'ListId\'].$error" ng-show="faxAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxAccount.description">\n\n        <div ng-messages="faxAccountForm[\'description\'].$error" ng-show="faxAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxAccount" ng-click="vm.saveFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid || faxAccountForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxAccount" ng-click="vm.addNewFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXACCOUNT" translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n          ADD FAXACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxAccount" ng-click="vm.deleteFaxAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",'<md-dialog class="faxAccount-dialog" aria-label="faxAccount" ng-init="vm.onInit()">\n  <form name="faxAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXACCOUNT">Add Agent to faxAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/agent/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'agent\'].$error" ng-show="faxAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/close/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'disposition\'].$error" ng-show="faxAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'condition\'].$error" ng-show="faxAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'truepriority\'].$error" ng-show="faxAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'falsepriority\'].$error" ng-show="faxAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'priority\'].$error" ng-show="faxAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/noop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'value\'].$error" ng-show="faxAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/queue/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'queue\'].$error" ng-show="faxAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/system/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'command\'].$error" ng-show="faxAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'variable\'].$error" ng-show="faxAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/tag/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'tag\'].$error" ng-show="faxAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/view.html",'<div id="fax-faxAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxAccounts-button md-icon-button" aria-label="Go to faxAccounts" ng-click="vm.gotoFaxAccounts()" translate translate-attr-aria-label="FAX.GO_TO_FAXACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxAccount-image" hide-xs>\n          <img ng-src="assets/images/business/faxAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxAccount.id}}\n            <span ng-if="vm.faxAccount.name">{{vm.faxAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="FAX.GOTO_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (advancedForm.$invalid) || (dispositionForm.$invalid) || (faxDispositionsForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.HEADERINFO">headerinfo</label>\n                <input type="text" name="headerinfo" ng-model="vm.faxAccount.headerinfo" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.HEADERINFO"></span></div>\n                <div ng-messages="generalForm[\'headerinfo\'].$error" ng-show="generalForm[\'headerinfo\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.HEADERINFO_REQUIRED">headerinfo field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.TRUNK">trunk</label>\n                <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LOCALSTATIONID">localstationid</label>\n                <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n                <div ng-messages="generalForm[\'localstationid\'].$error" ng-show="generalForm[\'localstationid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.faxAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.faxAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="FAX.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.faxAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.queueTransfer == true" class="md-block">\n                <label translate="FAX.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.faxAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.agentTransfer == true" class="md-block">\n                <label translate="FAX.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.faxAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.ECM">ECM</label>\n                <md-select name="ecm" ng-model="vm.faxAccount.ecm" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.ECM"></span></div>\n                <div ng-messages="advancedForm[\'ecm\'].$error" ng-show="advancedForm[\'ecm\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.ECM_REQUIRED">ECM field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MINRATE">minrate</label>\n                <md-select name="minrate" ng-model="vm.faxAccount.minrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MINRATE"></span></div>\n                <div ng-messages="advancedForm[\'minrate\'].$error" ng-show="advancedForm[\'minrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MINRATE_REQUIRED">minrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MAXRATE">maxrate</label>\n                <md-select name="maxrate" ng-model="vm.faxAccount.maxrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MAXRATE"></span></div>\n                <div ng-messages="advancedForm[\'maxrate\'].$error" ng-show="advancedForm[\'maxrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MAXRATE_REQUIRED">maxrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MODEM">modem</label>\n                <input type="text" name="modem" ng-model="vm.faxAccount.modem" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.MODEM"></span></div>\n                <div ng-messages="advancedForm[\'modem\'].$error" ng-show="advancedForm[\'modem\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MODEM_REQUIRED">modem field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.GATEWAY">gateway</label>\n                <input type="text" name="gateway" ng-model="vm.faxAccount.gateway" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.GATEWAY"></span></div>\n                <div ng-messages="advancedForm[\'gateway\'].$error" ng-show="advancedForm[\'gateway\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.GATEWAY_REQUIRED">gateway field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.FAXDETECT">faxdetect</label>\n                <input type="text" name="faxdetect" ng-model="vm.faxAccount.faxdetect" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.FAXDETECT"></span></div>\n                <div ng-messages="advancedForm[\'faxdetect\'].$error" ng-show="advancedForm[\'faxdetect\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.FAXDETECT_REQUIRED">faxdetect field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.T38TIMEOUT">t38timeout</label>\n                <input type="number" name="t38timeout" ng-model="vm.faxAccount.t38timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.T38TIMEOUT"></span></div>\n                <div ng-messages="advancedForm[\'t38timeout\'].$error" ng-show="advancedForm[\'t38timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.T38TIMEOUT_REQUIRED">t38timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.SIP">SIP</label>\n                <md-select name="tech" ng-model="vm.faxAccount.tech" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SIP\'">SIP</md-option>\n                  <md-option ng-value="\'IAX\'">IAX</md-option>\n                  <md-option ng-value="\'DADHI\'">DADHI</md-option>\n                  <md-option ng-value="\'KHOMP\'">KHOMP</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'tech\'].$error" ng-show="advancedForm[\'tech\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.SIP_REQUIRED">SIP field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.mandatoryDisposition" class="md-block">\n                <label translate="FAX.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.faxAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="FaxAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="faxAccount-detail-form-container faxdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="FAX.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add fax dispositions" translate translate-attr-label="FAX.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="faxAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.faxAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="FAX.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedFaxAccountApps.length}} {{vm_ac.selectedFaxAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedFaxAccountApps($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedFaxAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.faxAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editFaxAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.faxAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="FAX.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getFaxAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getFaxAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getFaxAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="FAX.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedFaxAccountInteractions.length}} {{vm_dc.selectedFaxAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedFaxAccountInteractions" csv-label="true" filename="faxAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedFaxAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedFaxAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getFaxAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'FAX.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'FAX.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'FAX.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'FAX.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'FAX.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'FAX.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'FAX.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.faxAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'FAX.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'FAX.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyfaxInteraction($event, interaction)" translate="FAX.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.faxInteractionDownload(interaction, $event)" translate="FAX.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="FAX.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.faxAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="FAX.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.faxAccountInteractions.count}}" md-on-paginate="vm_dc.getFaxAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxAccounts/faxAccounts.html",'<div id="faxAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXACCOUNTS">FaxAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxAccounts-count">\n          <span>{{vm.selectedFaxAccounts.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxAccounts()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxAccounts()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxAccounts" csv-label="true" filename="faxAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxAccounts($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'FAX.KEY\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'FAX.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="localstationid">{{ \'FAX.LOCALSTATIONID\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxAccount" md-select-id="id" ng-repeat="faxAccount in vm.faxAccounts.rows">\n                <td md-cell ng-if="faxAccount.userpic"><img class="avatar" alt="{{faxAccount.name}}" ng-src="api/users/{{faxAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="id ">{{faxAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="name ">{{faxAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="key ">{{faxAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':faxAccount.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="localstationid ">{{faxAccount.localstationid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="description ">{{faxAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxAccount, $event    )" translate="FAX.EDIT_FAXACCOUNT">\n                          Edit FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(faxAccount, $event    )" translate="FAX.INTERACTIONS_FAXACCOUNT">\n                          Interactions FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxAccount, $event    )" translate="FAX.GOTOREALTIME_FAXACCOUNT">\n                          goToRealtime FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxAccount, $event    )" translate="FAX.AGENTADD_FAXACCOUNT">\n                          AgentAdd FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxAccount, $event    )" translate="FAX.DELETE_FAXACCOUNT">\n                          Delete FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxAccount-button" ng-click="vm.createOrEditFaxAccount($event)" aria-label="add faxAccount" translate translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/faxQueues/create/dialog.html",'<md-dialog class="faxQueue-dialog" aria-label="New FaxQueue">\n  <form name="faxQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newFaxQueue">\n\n        <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n        <div ng-messages="faxQueueForm[\'name\'].$error" ng-show="faxQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.faxQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="faxQueueForm[\'strategy\'].$error" ng-show="faxQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="faxQueueForm[\'timeout\'].$error" ng-show="faxQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxQueue.description">\n\n        <div ng-messages="faxQueueForm[\'description\'].$error" ng-show="faxQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxQueue" ng-click="vm.saveFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid || faxQueueForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxQueue" ng-click="vm.addNewFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXQUEUE" translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n          ADD FAXQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxQueue" ng-click="vm.deleteFaxQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXQUEUE">Add Agent to faxQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/view.html",'<div id="fax-faxQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxQueues-button md-icon-button" aria-label="Go to faxQueues" ng-click="vm.gotoFaxQueues()" translate translate-attr-aria-label="FAX.GO_TO_FAXQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxQueue-image" hide-xs>\n          <img ng-src="assets/images/business/faxQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxQueue.id}}\n            <span ng-if="vm.faxQueue.name">{{vm.faxQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.faxQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="FAX.TEAMADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.faxQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxQueues/faxQueues.html",'<div id="faxQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXQUEUES">FaxQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxQueues-count">\n          <span>{{vm.selectedFaxQueues.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxQueues()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxQueues()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxQueues" csv-label="true" filename="faxQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxQueues($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FAXQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'FAX.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxQueue" md-select-id="id" ng-repeat="faxQueue in vm.faxQueues.rows">\n                <td md-cell ng-if="faxQueue.userpic"><img class="avatar" alt="{{faxQueue.name}}" ng-src="api/users/{{faxQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="id ">{{faxQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="name ">{{faxQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="strategy ">{{ vm.arraystrategy[faxQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxQueue, $event    )" translate="FAX.EDIT_FAXQUEUE">\n                          Edit FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(faxQueue, $event    )" translate="FAX.TEAMADD_FAXQUEUE">\n                          teamadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxQueue, $event    )" translate="FAX.AGENTADD_FAXQUEUE">\n                          agentadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxQueue, $event    )" translate="FAX.DELETE_FAXQUEUE">\n                          Delete FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxQueue, $event    )" translate="FAX.GOTOREALTIME_FAXQUEUE">\n                          goToRealtime FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxQueues.count}}" md-on-paginate="vm.getFaxQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxQueue-button" ng-click="vm.createOrEditFaxQueue($event)" aria-label="add faxQueue" translate translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getFaxAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate}}</th>\n        <th md-column>{{\'FAX.KEY\' | translate}}</th>\n        <th md-column>{{\'FAX.TOTAL\' | translate}}</th>\n        <th md-column>{{\'FAX.IN\' | translate}}</th>\n        <th md-column>{{\'FAX.OUT\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.faxAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.faxAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.faxAccounts[value].name}}</td>\n        <td md-cell>{{vm.faxAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.faxAccounts[value].in || 0) + (vm.faxAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.faxAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.faxAccounts[value].lastIn ?  (vm.faxAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.faxAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.faxAccounts[value].lastOut ?  (vm.faxAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToFaxAccount($event, vm.faxAccounts[value])" translate="FAX.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/fax/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'FAX.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'FAX.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'FAX.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'FAX.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'FAX.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'FAX.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'FAX.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'FAX.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'FAX.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'FAX.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'FAX.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'FAX.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"FAX.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"FAX.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"FAX.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"FAX.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"FAX.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"FAX.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"FAX.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"FAX.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'FAX.PAGE' | translate}}:', rowsPerPage: '{{'FAX.ROWSPERPAGE' | translate}}:', of: '{{'FAX.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/fax/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n        <th md-column>{{ \'FAX.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'FAX.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'FAX.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="FAX.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="FAX.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n          <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column" ms-scroll>\n  <div id="maintenance-form-wrapper" layout="column" layout-align="center center">\n    <div id="maintenance-form" class="md-whiteframe-8dp">\n      <div>\n        <img src="/api/settings/1/logo_login" alt="logo_login" />\n      </div>\n\n      <br>\n\n      <div>\n        <div class="info-line">\n          <div class="title">Useful pages</div>\n        </div>\n        <section layout="row" flex layout-sm="column" layout-align="center center" layout-wrap>\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button grey-bg" href="https://wiki.xcallymotion.com/display/XMV" target="_blank">\n              <md-icon md-font-icon="icon-wikipedia"></md-icon>\n            </a>\n            <div class="info"><a href="https://wiki.xcallymotion.com/display/XMV" target="_blank">Wiki</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button md-accent" href="/apidoc" target="_blank">\n              <md-icon md-font-icon="icon-apple-mobileme"></md-icon>\n            </a>\n            <div class="info"><a href="/apidoc" target="_blank">Motion API</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button orange-bg" href="http://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">\n              <md-icon md-font-icon="icon-headphones"></md-icon>\n            </a>\n            <div class="info"><a href="https://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">Phonebar Download</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button green-bg" href="/demo" target="_blank">\n              <md-icon md-font-icon="icon-console"></md-icon>\n            </a>\n            <div class="info"><a href="/demo" target="_blank">Playground</a></div>\n          </div>\n\n        </section>\n\n        <br>\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title">Follow us on</div>\n        </div>\n        <section ng-if="!vm.license.custom" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n          <a class="md-fab md-mini md-button blue-900-bg" href="https://www.facebook.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-facebook"></md-icon>\n          </a>\n\n          <a class="md-fab md-mini md-button" href="https://twitter.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-twitter"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button md-warn" href="https://plus.google.com/+Xcally" target="_blank">\n            <md-icon md-font-icon="icon-google-plus"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button light-blue-800-bg" href="https://www.linkedin.com/company/xcally" target="_blank">\n            <md-icon md-font-icon="icon-linkedin"></md-icon>\n          </a>\n        </section>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title" translate="HELP.CONTACT_US">Contact Us</div>\n        </div>\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="info"><a href="mailto:support@xcally.com" target="_top">support@xcally.com</a></div>\n        </div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info">xCALLY Motion <u>{{vm.info.current}}</u> | <a href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.info.current}}" target="_blank">Changelog</a></div>\n\n        <br>\n\n        <div class="info" ng-if="!vm.license.custom">xCALLY© 2016 - 2018 | Powered by Xenialab | <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">EULA</a></div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info" ng-if="!vm.license.custom"><a href="https://www.xenialab.com/" target="_blank">www.xenialab.com</a> | <a href="https://www.xcallymotion.com/" target="_blank">www.xcallymotion.com</a></div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/create/dialog.html",'<md-dialog class="deskAccount-dialog" aria-label="New DeskAccount">\n  <form name="deskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskAccountForm[\'name\'].$error" ng-show="deskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'type\'].$error" ng-show="deskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'remoteUri\'].$error" ng-show="deskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.deskAccount.authType" required>\n          <md-option ng-value="\'basic\'">Basic</md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'authType\'].$error" ng-show="deskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'username\'].$error" ng-show="deskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="deskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="deskAccountForm[\'serverUrl\'].$error" ng-show="deskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.deskAccount.description">\n\n        <div ng-messages="deskAccountForm[\'description\'].$error" ng-show="deskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskAccount" ng-click="vm.saveDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid || deskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskAccount" ng-click="vm.addNewDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n          ADD DESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskAccount" ng-click="vm.deleteDeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/deskAccounts.html",'<div id="deskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DESKACCOUNTS">DeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-deskAccounts-count">\n          <span>{{vm.selectedDeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDeskAccounts" csv-label="true" filename="deskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.deskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="deskAccount" md-select-id="id" ng-repeat="deskAccount in vm.deskAccounts.rows">\n                <td md-cell ng-if="deskAccount.userpic"><img class="avatar" alt="{{deskAccount.name}}" ng-src="api/users/{{deskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!deskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{deskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="id ">{{deskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="name ">{{deskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="remoteUri ">{{deskAccount.remoteUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="username ">{{deskAccount.username}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(deskAccount, $event    )" translate="INTEGRATIONS.EDIT_DESKACCOUNT">\n                          Edit DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(deskAccount, $event    )" translate="INTEGRATIONS.TEST_DESKACCOUNT">\n                          Test DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(deskAccount, $event    )" translate="INTEGRATIONS.DELETE_DESKACCOUNT">\n                          Delete DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.deskAccounts.count}}" md-on-paginate="vm.getDeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-deskAccount-button" ng-click="vm.createOrEditDeskAccount($event)" aria-label="add deskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",'<md-dialog class="deskConfiguration-dialog" aria-label="New DeskConfiguration">\n  <form name="deskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.deskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskConfigurationForm[\'name\'].$error" ng-show="deskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.deskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'channel\'].$error" ng-show="deskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'type\'].$error" ng-show="deskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskConfiguration" ng-click="vm.saveDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid || deskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskConfiguration" ng-click="vm.addNewDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DESKCONFIGURATION">\n          ADD DESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskConfiguration" ng-click="vm.deleteDeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",'<md-dialog class="deskAccount-item-dialog" aria-label="New Item">\n  <form name="deskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.key.$error" ng-show="deskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.keyType.$error" ng-show="deskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.keyContent.$error" ng-show="deskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="deskAccountItemForm.customField.$error" ng-show="deskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="deskAccountItemForm.option.$error" ng-show="deskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="deskAccountItemForm.content.$error"\n          ng-show="deskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="deskAccountItemForm.variableName.$error"\n          ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/view.html",'<div id="integrations-deskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-deskAccounts-button md-icon-button" aria-label="Go to deskAccounts" ng-click="vm.gotoDeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="deskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/deskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.deskAccount.id}}\n            <span ng-if="vm.deskAccount.name">{{vm.deskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.deskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.deskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.deskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'basic\'">Basic</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.deskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="DeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.deskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" class="md-icon-button" aria-label="create deskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="deskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ deskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDeskConfiguration($event, deskConfiguration)" translate="INTEGRATIONS.DELETE_DESKCONFIGURATION">\n                            Delete DeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",'<md-dialog class="dynamics365Account-dialog" aria-label="New Dynamics365Account">\n  <form name="dynamics365AccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365AccountForm[\'name\'].$error" ng-show="dynamics365AccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'username\'].$error" ng-show="dynamics365AccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="dynamics365AccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'remoteUri\'].$error" ng-show="dynamics365AccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n        <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'tenantId\'].$error" ng-show="dynamics365AccountForm[\'tenantId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientId\'].$error" ng-show="dynamics365AccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'clientSecret\'].$error" ng-show="dynamics365AccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="dynamics365AccountForm[\'serverUrl\'].$error" ng-show="dynamics365AccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.dynamics365Account.description">\n\n        <div ng-messages="dynamics365AccountForm[\'description\'].$error" ng-show="dynamics365AccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Account" ng-click="vm.saveDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid || dynamics365AccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Account" ng-click="vm.addNewDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n          ADD DYNAMICS365ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Account" ng-click="vm.deleteDynamics365Account($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",'<div id="dynamics365Accounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DYNAMICS365ACCOUNTS">Dynamics365Accounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDynamics365Accounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDynamics365Accounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-dynamics365Accounts-count">\n          <span>{{vm.selectedDynamics365Accounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDynamics365Accounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDynamics365Accounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDynamics365Accounts" csv-label="true" filename="dynamics365Accounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDynamics365Accounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- DYNAMICS365ACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDynamics365Accounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDynamics365Accounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.dynamics365Accounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="dynamics365Account" md-select-id="id" ng-repeat="dynamics365Account in vm.dynamics365Accounts.rows">\n                <td md-cell ng-if="dynamics365Account.userpic"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="api/users/{{dynamics365Account.id}}/avatar" /></td>\n                <td md-cell ng-if="!dynamics365Account.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="id ">{{dynamics365Account.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="name ">{{dynamics365Account.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="username ">{{dynamics365Account.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="remoteUri ">{{dynamics365Account.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(dynamics365Account, $event    )" translate="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT">\n                          Edit Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(dynamics365Account, $event    )" translate="INTEGRATIONS.TEST_DYNAMICS365ACCOUNT">\n                          Test Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(dynamics365Account, $event    )" translate="INTEGRATIONS.DELETE_DYNAMICS365ACCOUNT">\n                          Delete Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dynamics365Accounts.count}}" md-on-paginate="vm.getDynamics365Accounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DYNAMICS365ACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-dynamics365Account-button" ng-click="vm.createOrEditDynamics365Account($event)" aria-label="add dynamics365Account" translate translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",'<md-dialog class="dynamics365Configuration-dialog" aria-label="New Dynamics365Configuration">\n  <form name="dynamics365ConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.dynamics365Configuration.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365ConfigurationForm[\'name\'].$error" ng-show="dynamics365ConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.dynamics365Configuration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'channel\'].$error" ng-show="dynamics365ConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dynamics365Configuration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'type\'].$error" ng-show="dynamics365ConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.dynamics365Configuration.ticketType" required>\n\n          <md-option ng-value="\'incident\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n\n          <md-option ng-value="\'phonecall\'"> {{ \'INTEGRATIONS.PHONECALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'ticketType\'].$error" ng-show="dynamics365ConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Configuration" ng-click="vm.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid || dynamics365ConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Configuration" ng-click="vm.addNewDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION">\n          ADD DYNAMICS365CONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Configuration" ng-click="vm.deleteDynamics365Configuration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",'<md-dialog class="dynamics365Account-item-dialog" aria-label="New Item">\n  <form name="dynamics365AccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.key.$error" ng-show="dynamics365AccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.keyType.$error" ng-show="dynamics365AccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.keyContent.$error" ng-show="dynamics365AccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.customField.$error" ng-show="dynamics365AccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="dynamics365AccountItemForm.option.$error" ng-show="dynamics365AccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="dynamics365AccountItemForm.content.$error"\n          ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="dynamics365AccountItemForm.variableName.$error"\n          ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",'<div id="integrations-dynamics365Account" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-dynamics365Accounts-button md-icon-button" aria-label="Go to dynamics365Accounts" ng-click="vm.gotoDynamics365Accounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DYNAMICS365ACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="dynamics365Account-image" hide-xs>\n          <img ng-src="assets/images/business/dynamics365Accounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.dynamics365Account.id}}\n            <span ng-if="vm.dynamics365Account.name">{{vm.dynamics365Account.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.dynamics365Account.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDynamics365Account()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n                <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'tenantId\'].$error" ng-show="generalForm[\'tenantId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.dynamics365Account.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="Dynamics365AccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.dynamics365Account, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" class="md-icon-button" aria-label="create dynamics365Configuration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="dynamics365Configuration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDynamics365Configuration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDynamics365Configuration($index)">\n                    <span class="text-truncate" flex="80">{{ dynamics365Configuration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDynamics365Configuration($event, dynamics365Configuration)" translate="INTEGRATIONS.DELETE_DYNAMICS365CONFIGURATION">\n                            Delete Dynamics365Configuration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",'<md-dialog class="freshdeskAccount-dialog" aria-label="New FreshdeskAccount">\n  <form name="freshdeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskAccountForm[\'name\'].$error" ng-show="freshdeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'username\'].$error" ng-show="freshdeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'remoteUri\'].$error" ng-show="freshdeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'apiKey\'].$error" ng-show="freshdeskAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshdeskAccountForm[\'serverUrl\'].$error" ng-show="freshdeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshdeskAccount.description">\n\n        <div ng-messages="freshdeskAccountForm[\'description\'].$error" ng-show="freshdeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskAccount" ng-click="vm.saveFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid || freshdeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskAccount" ng-click="vm.addNewFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n          ADD FRESHDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskAccount" ng-click="vm.deleteFreshdeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",'<md-dialog class="freshdeskConfiguration-dialog" aria-label="New FreshdeskConfiguration">\n  <form name="freshdeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshdeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskConfigurationForm[\'name\'].$error" ng-show="freshdeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshdeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'channel\'].$error" ng-show="freshdeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshdeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'type\'].$error" ng-show="freshdeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskConfiguration" ng-click="vm.saveFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid || freshdeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskConfiguration" ng-click="vm.addNewFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION">\n          ADD FRESHDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskConfiguration" ng-click="vm.deleteFreshdeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",'<md-dialog class="freshdeskAccount-item-dialog" aria-label="New Item">\n  <form name="freshdeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.key.$error" ng-show="freshdeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.keyType.$error" ng-show="freshdeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.keyContent.$error" ng-show="freshdeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.customField.$error" ng-show="freshdeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshdeskAccountItemForm.option.$error" ng-show="freshdeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshdeskAccountItemForm.content.$error"\n          ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshdeskAccountItemForm.variableName.$error"\n          ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",'<div id="integrations-freshdeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshdeskAccounts-button md-icon-button" aria-label="Go to freshdeskAccounts" ng-click="vm.gotoFreshdeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshdeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshdeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshdeskAccount.id}}\n            <span ng-if="vm.freshdeskAccount.name">{{vm.freshdeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshdeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshdeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshdeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshdeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshdeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" class="md-icon-button" aria-label="create freshdeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshdeskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshdeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshdeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshdeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshdeskConfiguration($event, freshdeskConfiguration)" translate="INTEGRATIONS.DELETE_FRESHDESKCONFIGURATION">\n                            Delete FreshdeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",'<div id="freshdeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHDESKACCOUNTS">FreshdeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshdeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshdeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshdeskAccounts-count">\n          <span>{{vm.selectedFreshdeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshdeskAccounts" csv-label="true" filename="freshdeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshdeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshdeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshdeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshdeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshdeskAccount" md-select-id="id" ng-repeat="freshdeskAccount in vm.freshdeskAccounts.rows">\n                <td md-cell ng-if="freshdeskAccount.userpic"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="api/users/{{freshdeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshdeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="id ">{{freshdeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="name ">{{freshdeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="username ">{{freshdeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="remoteUri ">{{freshdeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshdeskAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHDESKACCOUNT">\n                          Edit FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshdeskAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHDESKACCOUNT">\n                          Test FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshdeskAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHDESKACCOUNT">\n                          Delete FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshdeskAccounts.count}}" md-on-paginate="vm.getFreshdeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshdeskAccount-button" ng-click="vm.createOrEditFreshdeskAccount($event)" aria-label="add freshdeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",'<md-dialog class="freshsalesAccount-dialog" aria-label="New FreshsalesAccount">\n  <form name="freshsalesAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesAccountForm[\'name\'].$error" ng-show="freshsalesAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'username\'].$error" ng-show="freshsalesAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'remoteUri\'].$error" ng-show="freshsalesAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'apiKey\'].$error" ng-show="freshsalesAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshsalesAccountForm[\'serverUrl\'].$error" ng-show="freshsalesAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshsalesAccount.description">\n\n        <div ng-messages="freshsalesAccountForm[\'description\'].$error" ng-show="freshsalesAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesAccount" ng-click="vm.saveFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid || freshsalesAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesAccount" ng-click="vm.addNewFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n          ADD FRESHSALESACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesAccount" ng-click="vm.deleteFreshsalesAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",'<md-dialog class="freshsalesConfiguration-dialog" aria-label="New FreshsalesConfiguration">\n  <form name="freshsalesConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshsalesConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesConfigurationForm[\'name\'].$error" ng-show="freshsalesConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshsalesConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'channel\'].$error" ng-show="freshsalesConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshsalesConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'type\'].$error" ng-show="freshsalesConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesConfiguration" ng-click="vm.saveFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid || freshsalesConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesConfiguration" ng-click="vm.addNewFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION">\n          ADD FRESHSALESCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesConfiguration" ng-click="vm.deleteFreshsalesConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",'<md-dialog class="freshsalesAccount-item-dialog" aria-label="New Item">\n  <form name="freshsalesAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.key.$error" ng-show="freshsalesAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.keyType.$error" ng-show="freshsalesAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.keyContent.$error" ng-show="freshsalesAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.customField.$error" ng-show="freshsalesAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshsalesAccountItemForm.option.$error" ng-show="freshsalesAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshsalesAccountItemForm.content.$error"\n          ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshsalesAccountItemForm.variableName.$error"\n          ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",'<div id="integrations-freshsalesAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshsalesAccounts-button md-icon-button" aria-label="Go to freshsalesAccounts" ng-click="vm.gotoFreshsalesAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHSALESACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshsalesAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshsalesAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshsalesAccount.id}}\n            <span ng-if="vm.freshsalesAccount.name">{{vm.freshsalesAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshsalesAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshsalesAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshsalesAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshsalesAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshsalesAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" class="md-icon-button" aria-label="create freshsalesConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshsalesConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshsalesConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshsalesConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshsalesConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshsalesConfiguration($event, freshsalesConfiguration)" translate="INTEGRATIONS.DELETE_FRESHSALESCONFIGURATION">\n                            Delete FreshsalesConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",'<div id="freshsalesAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHSALESACCOUNTS">FreshsalesAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshsalesAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshsalesAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshsalesAccounts-count">\n          <span>{{vm.selectedFreshsalesAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshsalesAccounts" csv-label="true" filename="freshsalesAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshsalesAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- FRESHSALESACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshsalesAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshsalesAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshsalesAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshsalesAccount" md-select-id="id" ng-repeat="freshsalesAccount in vm.freshsalesAccounts.rows">\n                <td md-cell ng-if="freshsalesAccount.userpic"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="api/users/{{freshsalesAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshsalesAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="id ">{{freshsalesAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="name ">{{freshsalesAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="username ">{{freshsalesAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="remoteUri ">{{freshsalesAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshsalesAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHSALESACCOUNT">\n                          Edit FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshsalesAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHSALESACCOUNT">\n                          Test FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshsalesAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHSALESACCOUNT">\n                          Delete FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshsalesAccounts.count}}" md-on-paginate="vm.getFreshsalesAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHSALESACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHSALESACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshsalesAccount-button" ng-click="vm.createOrEditFreshsalesAccount($event)" aria-label="add freshsalesAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHSALESACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",'<md-dialog class="salesforceAccount-dialog" aria-label="New SalesforceAccount">\n  <form name="salesforceAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceAccountForm[\'name\'].$error" ng-show="salesforceAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceAccountForm[\'type\'].$error" ng-show="salesforceAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'username\'].$error" ng-show="salesforceAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'remoteUri\'].$error" ng-show="salesforceAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="salesforceAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientId\'].$error" ng-show="salesforceAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientSecret\'].$error" ng-show="salesforceAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n        <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'securityToken\'].$error" ng-show="salesforceAccountForm[\'securityToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="salesforceAccountForm[\'serverUrl\'].$error" ng-show="salesforceAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.salesforceAccount.description">\n\n        <div ng-messages="salesforceAccountForm[\'description\'].$error" ng-show="salesforceAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceAccount" ng-click="vm.saveSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid || salesforceAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceAccount" ng-click="vm.addNewSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCEACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n          ADD SALESFORCEACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceAccount" ng-click="vm.deleteSalesforceAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",'<md-dialog class="salesforceConfiguration-dialog" aria-label="New SalesforceConfiguration">\n  <form name="salesforceConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.salesforceConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceConfigurationForm[\'name\'].$error" ng-show="salesforceConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.salesforceConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'channel\'].$error" ng-show="salesforceConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'type\'].$error" ng-show="salesforceConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.salesforceConfiguration.ticketType" required>\n\n          <md-option ng-value="\'Task\'"> {{ \'INTEGRATIONS.TASK\' | translate }} </md-option>\n\n          <md-option ng-value="\'Case\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'ticketType\'].$error" ng-show="salesforceConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceConfiguration" ng-click="vm.saveSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid || salesforceConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceConfiguration" ng-click="vm.addNewSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCECONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCECONFIGURATION">\n          ADD SALESFORCECONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceConfiguration" ng-click="vm.deleteSalesforceConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",'<md-dialog class="salesforceAccount-item-dialog" aria-label="New Item">\n  <form name="salesforceAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.key.$error" ng-show="salesforceAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.keyType.$error" ng-show="salesforceAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.keyContent.$error" ng-show="salesforceAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.customField.$error" ng-show="salesforceAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="salesforceAccountItemForm.option.$error" ng-show="salesforceAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="salesforceAccountItemForm.content.$error"\n          ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="salesforceAccountItemForm.variableName.$error"\n          ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/view.html",'<div id="integrations-salesforceAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-salesforceAccounts-button md-icon-button" aria-label="Go to salesforceAccounts" ng-click="vm.gotoSalesforceAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SALESFORCEACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="salesforceAccount-image" hide-xs>\n          <img ng-src="assets/images/business/salesforceAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.salesforceAccount.id}}\n            <span ng-if="vm.salesforceAccount.name">{{vm.salesforceAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.salesforceAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSalesforceAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.salesforceAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n                <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'securityToken\'].$error" ng-show="generalForm[\'securityToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.salesforceAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SalesforceAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.salesforceAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" class="md-icon-button" aria-label="create salesforceConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="salesforceConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSalesforceConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSalesforceConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ salesforceConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSalesforceConfiguration($event, salesforceConfiguration)" translate="INTEGRATIONS.DELETE_SALESFORCECONFIGURATION">\n                            Delete SalesforceConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'account_contact_lead\', value: \'Account & Contact & Lead\'}, {key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLead">\n                        <label translate="INTEGRATIONS.LEADID"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.leadId" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.LEADID"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isAccountSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHACCOUNT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchAccount" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHACCOUNT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isContactSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchContact" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHCONTACT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLeadSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHLEAD"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchLead" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHLEAD"></span></div>\n                      </div>\n\n                      <md-button type="submit" ng-click="vm_cc.saveSalesforceConfiguration()" ng-disabled="!vm_cc.crudPermissions.canEdit" class="send-button md-accent md-raised" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                        SAVE\n                      </md-button>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",'<div id="salesforceAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SALESFORCEACCOUNTS">SalesforceAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSalesforceAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSalesforceAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-salesforceAccounts-count">\n          <span>{{vm.selectedSalesforceAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSalesforceAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSalesforceAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSalesforceAccounts" csv-label="true" filename="salesforceAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSalesforceAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SALESFORCEACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSalesforceAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSalesforceAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.salesforceAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="salesforceAccount" md-select-id="id" ng-repeat="salesforceAccount in vm.salesforceAccounts.rows">\n                <td md-cell ng-if="salesforceAccount.userpic"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="api/users/{{salesforceAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!salesforceAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="id ">{{salesforceAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="name ">{{salesforceAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="username ">{{salesforceAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="remoteUri ">{{salesforceAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(salesforceAccount, $event    )" translate="INTEGRATIONS.EDIT_SALESFORCEACCOUNT">\n                          Edit SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(salesforceAccount, $event    )" translate="INTEGRATIONS.TEST_SALESFORCEACCOUNT">\n                          Test SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(salesforceAccount, $event    )" translate="INTEGRATIONS.DELETE_SALESFORCEACCOUNT">\n                          Delete SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.salesforceAccounts.count}}" md-on-paginate="vm.getSalesforceAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SALESFORCEACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SALESFORCEACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-salesforceAccount-button" ng-click="vm.createOrEditSalesforceAccount($event)" aria-label="add salesforceAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SALESFORCEACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",'<md-dialog class="servicenowAccount-dialog" aria-label="New ServicenowAccount">\n  <form name="servicenowAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowAccountForm[\'name\'].$error" ng-show="servicenowAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'username\'].$error" ng-show="servicenowAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="servicenowAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'email\'].$error" ng-show="servicenowAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'remoteUri\'].$error" ng-show="servicenowAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="servicenowAccountForm[\'serverUrl\'].$error" ng-show="servicenowAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.servicenowAccount.description">\n\n        <div ng-messages="servicenowAccountForm[\'description\'].$error" ng-show="servicenowAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowAccount" ng-click="vm.saveServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid || servicenowAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowAccount" ng-click="vm.addNewServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n          ADD SERVICENOWACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowAccount" ng-click="vm.deleteServicenowAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",'<md-dialog class="servicenowConfiguration-dialog" aria-label="New ServicenowConfiguration">\n  <form name="servicenowConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.servicenowConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowConfigurationForm[\'name\'].$error" ng-show="servicenowConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.servicenowConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'channel\'].$error" ng-show="servicenowConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.servicenowConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'type\'].$error" ng-show="servicenowConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowConfiguration" ng-click="vm.saveServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid || servicenowConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowConfiguration" ng-click="vm.addNewServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION">\n          ADD SERVICENOWCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowConfiguration" ng-click="vm.deleteServicenowConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",'<md-dialog class="servicenowAccount-item-dialog" aria-label="New Item">\n  <form name="servicenowAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.key.$error" ng-show="servicenowAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.keyType.$error" ng-show="servicenowAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.keyContent.$error" ng-show="servicenowAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.customField.$error" ng-show="servicenowAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="servicenowAccountItemForm.option.$error" ng-show="servicenowAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="servicenowAccountItemForm.content.$error"\n          ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="servicenowAccountItemForm.variableName.$error"\n          ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/view.html",'<div id="integrations-servicenowAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-servicenowAccounts-button md-icon-button" aria-label="Go to servicenowAccounts" ng-click="vm.gotoServicenowAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SERVICENOWACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="servicenowAccount-image" hide-xs>\n          <img ng-src="assets/images/business/servicenowAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.servicenowAccount.id}}\n            <span ng-if="vm.servicenowAccount.name">{{vm.servicenowAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.servicenowAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveServicenowAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.servicenowAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ServicenowAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.servicenowAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" class="md-icon-button" aria-label="create servicenowConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="servicenowConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedServicenowConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getServicenowConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ servicenowConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteServicenowConfiguration($event, servicenowConfiguration)" translate="INTEGRATIONS.DELETE_SERVICENOWCONFIGURATION">\n                            Delete ServicenowConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",'<div id="servicenowAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SERVICENOWACCOUNTS">ServicenowAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedServicenowAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedServicenowAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-servicenowAccounts-count">\n          <span>{{vm.selectedServicenowAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllServicenowAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectServicenowAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedServicenowAccounts" csv-label="true" filename="servicenowAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedServicenowAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SERVICENOWACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedServicenowAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getServicenowAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'INTEGRATIONS.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.servicenowAccounts.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="servicenowAccount" md-select-id="id" ng-repeat="servicenowAccount in vm.servicenowAccounts.rows">\n                <td md-cell ng-if="servicenowAccount.userpic"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="api/users/{{servicenowAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!servicenowAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="id ">{{servicenowAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="name ">{{servicenowAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="username ">{{servicenowAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="email ">{{servicenowAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="remoteUri ">{{servicenowAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(servicenowAccount, $event    )" translate="INTEGRATIONS.EDIT_SERVICENOWACCOUNT">\n                          Edit ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(servicenowAccount, $event    )" translate="INTEGRATIONS.TEST_SERVICENOWACCOUNT">\n                          Test ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(servicenowAccount, $event    )" translate="INTEGRATIONS.DELETE_SERVICENOWACCOUNT">\n                          Delete ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.servicenowAccounts.count}}" md-on-paginate="vm.getServicenowAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SERVICENOWACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SERVICENOWACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-servicenowAccount-button" ng-click="vm.createOrEditServicenowAccount($event)" aria-label="add servicenowAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SERVICENOWACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",'<md-dialog class="sugarcrmAccount-dialog" aria-label="New SugarcrmAccount">\n  <form name="sugarcrmAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmAccountForm[\'name\'].$error" ng-show="sugarcrmAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'username\'].$error" ng-show="sugarcrmAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'remoteUri\'].$error" ng-show="sugarcrmAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="sugarcrmAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="sugarcrmAccountForm[\'serverUrl\'].$error" ng-show="sugarcrmAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sugarcrmAccount.description">\n\n        <div ng-messages="sugarcrmAccountForm[\'description\'].$error" ng-show="sugarcrmAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmAccount" ng-click="vm.saveSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid || sugarcrmAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmAccount" ng-click="vm.addNewSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n          ADD SUGARCRMACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmAccount" ng-click="vm.deleteSugarcrmAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",'<md-dialog class="sugarcrmConfiguration-dialog" aria-label="New SugarcrmConfiguration">\n  <form name="sugarcrmConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.sugarcrmConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmConfigurationForm[\'name\'].$error" ng-show="sugarcrmConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.sugarcrmConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'channel\'].$error" ng-show="sugarcrmConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.sugarcrmConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'type\'].$error" ng-show="sugarcrmConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmConfiguration" ng-click="vm.saveSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid || sugarcrmConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmConfiguration" ng-click="vm.addNewSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION">\n          ADD SUGARCRMCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmConfiguration" ng-click="vm.deleteSugarcrmConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",'<md-dialog class="sugarcrmAccount-item-dialog" aria-label="New Item">\n  <form name="sugarcrmAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.key.$error" ng-show="sugarcrmAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.keyType.$error" ng-show="sugarcrmAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.keyContent.$error" ng-show="sugarcrmAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.customField.$error" ng-show="sugarcrmAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="sugarcrmAccountItemForm.option.$error" ng-show="sugarcrmAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="sugarcrmAccountItemForm.content.$error"\n          ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="sugarcrmAccountItemForm.variableName.$error"\n          ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",'<div id="integrations-sugarcrmAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-sugarcrmAccounts-button md-icon-button" aria-label="Go to sugarcrmAccounts" ng-click="vm.gotoSugarcrmAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SUGARCRMACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="sugarcrmAccount-image" hide-xs>\n          <img ng-src="assets/images/business/sugarcrmAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.sugarcrmAccount.id}}\n            <span ng-if="vm.sugarcrmAccount.name">{{vm.sugarcrmAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.sugarcrmAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSugarcrmAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.sugarcrmAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SugarcrmAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.sugarcrmAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" class="md-icon-button" aria-label="create sugarcrmConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="sugarcrmConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSugarcrmConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSugarcrmConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ sugarcrmConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSugarcrmConfiguration($event, sugarcrmConfiguration)" translate="INTEGRATIONS.DELETE_SUGARCRMCONFIGURATION">\n                            Delete SugarcrmConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",'<div id="sugarcrmAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SUGARCRMACCOUNTS">SugarcrmAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSugarcrmAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSugarcrmAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sugarcrmAccounts-count">\n          <span>{{vm.selectedSugarcrmAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSugarcrmAccounts" csv-label="true" filename="sugarcrmAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSugarcrmAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SUGARCRMACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSugarcrmAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSugarcrmAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sugarcrmAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sugarcrmAccount" md-select-id="id" ng-repeat="sugarcrmAccount in vm.sugarcrmAccounts.rows">\n                <td md-cell ng-if="sugarcrmAccount.userpic"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="api/users/{{sugarcrmAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!sugarcrmAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="id ">{{sugarcrmAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="name ">{{sugarcrmAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="username ">{{sugarcrmAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="remoteUri ">{{sugarcrmAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(sugarcrmAccount, $event    )" translate="INTEGRATIONS.EDIT_SUGARCRMACCOUNT">\n                          Edit SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(sugarcrmAccount, $event    )" translate="INTEGRATIONS.TEST_SUGARCRMACCOUNT">\n                          Test SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(sugarcrmAccount, $event    )" translate="INTEGRATIONS.DELETE_SUGARCRMACCOUNT">\n                          Delete SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sugarcrmAccounts.count}}" md-on-paginate="vm.getSugarcrmAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SUGARCRMACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SUGARCRMACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-sugarcrmAccount-button" ng-click="vm.createOrEditSugarcrmAccount($event)" aria-label="add sugarcrmAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SUGARCRMACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",'<md-dialog class="vtigerAccount-dialog" aria-label="New VtigerAccount">\n  <form name="vtigerAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerAccountForm[\'name\'].$error" ng-show="vtigerAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.vtigerAccount.description">\n\n        <div ng-messages="vtigerAccountForm[\'description\'].$error" ng-show="vtigerAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n        <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'username\'].$error" ng-show="vtigerAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n        <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'accessKey\'].$error" ng-show="vtigerAccountForm[\'accessKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'remoteUri\'].$error" ng-show="vtigerAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="vtigerAccountForm[\'serverUrl\'].$error" ng-show="vtigerAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerAccount" ng-click="vm.saveVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid || vtigerAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerAccount" ng-click="vm.addNewVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n          ADD VTIGERACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerAccount" ng-click="vm.deleteVtigerAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",'<md-dialog class="vtigerConfiguration-dialog" aria-label="New VtigerConfiguration">\n  <form name="vtigerConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.vtigerConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerConfigurationForm[\'name\'].$error" ng-show="vtigerConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.vtigerConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'channel\'].$error" ng-show="vtigerConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.vtigerConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'type\'].$error" ng-show="vtigerConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerConfiguration" ng-click="vm.saveVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid || vtigerConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerConfiguration" ng-click="vm.addNewVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERCONFIGURATION">\n          ADD VTIGERCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerConfiguration" ng-click="vm.deleteVtigerConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",'<md-dialog class="vtigerAccount-item-dialog" aria-label="New Item">\n  <form name="vtigerAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.key.$error" ng-show="vtigerAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.keyType.$error" ng-show="vtigerAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.keyContent.$error" ng-show="vtigerAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.customField.$error" ng-show="vtigerAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="vtigerAccountItemForm.option.$error" ng-show="vtigerAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="vtigerAccountItemForm.content.$error"\n          ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="vtigerAccountItemForm.variableName.$error"\n          ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/view.html",'<div id="integrations-vtigerAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-vtigerAccounts-button md-icon-button" aria-label="Go to vtigerAccounts" ng-click="vm.gotoVtigerAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_VTIGERACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="vtigerAccount-image" hide-xs>\n          <img ng-src="assets/images/business/vtigerAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.vtigerAccount.id}}\n            <span ng-if="vm.vtigerAccount.name">{{vm.vtigerAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.vtigerAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVtigerAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.vtigerAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n                <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n                <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accessKey\'].$error" ng-show="generalForm[\'accessKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="VtigerAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.vtigerAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" class="md-icon-button" aria-label="create vtigerConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="vtigerConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedVtigerConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getVtigerConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ vtigerConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteVtigerConfiguration($event, vtigerConfiguration)" translate="INTEGRATIONS.DELETE_VTIGERCONFIGURATION">\n                            Delete VtigerConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",'<div id="vtigerAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.VTIGERACCOUNTS">VtigerAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVtigerAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVtigerAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-vtigerAccounts-count">\n          <span>{{vm.selectedVtigerAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVtigerAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVtigerAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVtigerAccounts" csv-label="true" filename="vtigerAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVtigerAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VTIGERACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVtigerAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVtigerAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.VTIGER_USER_NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.vtigerAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="vtigerAccount" md-select-id="id" ng-repeat="vtigerAccount in vm.vtigerAccounts.rows">\n                <td md-cell ng-if="vtigerAccount.userpic"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="api/users/{{vtigerAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!vtigerAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="id ">{{vtigerAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="name ">{{vtigerAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="username ">{{vtigerAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="remoteUri ">{{vtigerAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(vtigerAccount, $event    )" translate="INTEGRATIONS.EDIT_VTIGERACCOUNT">\n                          Edit VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(vtigerAccount, $event    )" translate="INTEGRATIONS.TEST_VTIGERACCOUNT">\n                          Test VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(vtigerAccount, $event    )" translate="INTEGRATIONS.DELETE_VTIGERACCOUNT">\n                          Delete VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.vtigerAccounts.count}}" md-on-paginate="vm.getVtigerAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VTIGERACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VTIGERACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-vtigerAccount-button" ng-click="vm.createOrEditVtigerAccount($event)" aria-label="add vtigerAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VTIGERACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",'<md-dialog class="zendeskAccount-dialog" aria-label="New ZendeskAccount">\n  <form name="zendeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskAccountForm[\'name\'].$error" ng-show="zendeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'type\'].$error" ng-show="zendeskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'username\'].$error" ng-show="zendeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'remoteUri\'].$error" ng-show="zendeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.zendeskAccount.authType" required>\n          <md-option ng-value="\'password\'">Password</md-option>\n          <md-option ng-value="\'token\'">Token</md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'authType\'].$error" ng-show="zendeskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="zendeskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n        <label translate="INTEGRATIONS.TOKEN">Token</label>\n        <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'token\'].$error" ng-show="zendeskAccountForm[\'token\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zendeskAccountForm[\'serverUrl\'].$error" ng-show="zendeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zendeskAccount.description">\n\n        <div ng-messages="zendeskAccountForm[\'description\'].$error" ng-show="zendeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskAccount" ng-click="vm.saveZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid || zendeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskAccount" ng-click="vm.addNewZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n          ADD ZENDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskAccount" ng-click="vm.deleteZendeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",'<md-dialog class="zendeskAccount-item-dialog" aria-label="New Item">\n  <form name="zendeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.key.$error" ng-show="zendeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.keyType.$error" ng-show="zendeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.keyContent.$error" ng-show="zendeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.customField.$error" ng-show="zendeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zendeskAccountItemForm.option.$error" ng-show="zendeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zendeskAccountItemForm.content.$error"\n          ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zendeskAccountItemForm.variableName.$error"\n          ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/view.html",'<div id="integrations-zendeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zendeskAccounts-button md-icon-button" aria-label="Go to zendeskAccounts" ng-click="vm.gotoZendeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZENDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zendeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zendeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zendeskAccount.id}}\n            <span ng-if="vm.zendeskAccount.name">{{vm.zendeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zendeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZendeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (zendeskConfigurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.zendeskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.zendeskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'password\'">Password</md-option>\n                  <md-option ng-value="\'token\'">Token</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n                <label translate="INTEGRATIONS.TOKEN">Token</label>\n                <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'token\'].$error" ng-show="generalForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zendeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container zendeskconfigurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.ZENDESKCONFIGURATIONS">ZENDESKCONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZendeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zendeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" class="md-icon-button" aria-label="create zendeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zendeskConfiguration in vm_cc.zendeskConfigurations" class="border-top" md-colors="{background: (vm_cc.selectedZendeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZendeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zendeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZendeskConfiguration($event, zendeskConfiguration)" translate="INTEGRATIONS.DELETE_ZENDESKCONFIGURATION">\n                            Delete ZendeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.zendeskConfigurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.zendeskConfigurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",'<md-dialog class="zendeskConfiguration-dialog" aria-label="New ZendeskConfiguration">\n  <form name="zendeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zendeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskConfigurationForm[\'name\'].$error" ng-show="zendeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zendeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'channel\'].$error" ng-show="zendeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'type\'].$error" ng-show="zendeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskConfiguration" ng-click="vm.saveZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid || zendeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskConfiguration" ng-click="vm.addNewZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKCONFIGURATION">\n          ADD ZENDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskConfiguration" ng-click="vm.deleteZendeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",'<div id="zendeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZENDESKACCOUNTS">ZendeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZendeskAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZendeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zendeskAccounts-count">\n          <span>{{vm.selectedZendeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZendeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZendeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZendeskAccounts" csv-label="true" filename="zendeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZendeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZENDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZendeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZendeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zendeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zendeskAccount" md-select-id="id" ng-repeat="zendeskAccount in vm.zendeskAccounts.rows">\n                <td md-cell ng-if="zendeskAccount.userpic"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="api/users/{{zendeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zendeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="id ">{{zendeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="name ">{{zendeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="username ">{{zendeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="remoteUri ">{{zendeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zendeskAccount, $event    )" translate="INTEGRATIONS.EDIT_ZENDESKACCOUNT">\n                          Edit ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zendeskAccount, $event    )" translate="INTEGRATIONS.TEST_ZENDESKACCOUNT">\n                          Test ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zendeskAccount, $event    )" translate="INTEGRATIONS.DELETE_ZENDESKACCOUNT">\n                          Delete ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zendeskAccounts.count}}" md-on-paginate="vm.getZendeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZENDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZENDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zendeskAccount-button" ng-click="vm.createOrEditZendeskAccount($event)" aria-label="add zendeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZENDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/create/dialog.html",'<md-dialog class="zohoAccount-dialog" aria-label="New ZohoAccount">\n  <form name="zohoAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoAccountForm[\'name\'].$error" ng-show="zohoAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <md-select name="host" ng-model="vm.zohoAccount.host" required>\n          <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n          <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n        </md-select>\n        <div ng-messages="zohoAccountForm[\'host\'].$error" ng-show="zohoAccountForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ZONE">Zone</label>\n        <md-select name="zone" ng-model="vm.zohoAccount.zone" required>\n          <md-option ng-value="\'US\'">US</md-option>\n          <md-option ng-value="\'AU\'">AU</md-option>\n          <md-option ng-value="\'EU\'">EU</md-option>\n          <md-option ng-value="\'IN\'">IN</md-option>\n          <md-option ng-value="\'CN\'">CN</md-option>\n        </md-select>\n        <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n        <div ng-messages="zohoAccountForm[\'zone\'].$error" ng-show="zohoAccountForm[\'zone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientId\'].$error" ng-show="zohoAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientSecret\'].$error" ng-show="zohoAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CODE">Code</label>\n        <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n        <div ng-messages="zohoAccountForm[\'code\'].$error" ng-show="zohoAccountForm[\'code\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zohoAccountForm[\'serverUrl\'].$error" ng-show="zohoAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zohoAccount.description">\n\n        <div ng-messages="zohoAccountForm[\'description\'].$error" ng-show="zohoAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoAccount" ng-click="vm.saveZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid || zohoAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoAccount" ng-click="vm.addNewZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n          ADD ZOHOACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoAccount" ng-click="vm.deleteZohoAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",'<md-dialog class="zohoConfiguration-dialog" aria-label="New ZohoConfiguration">\n  <form name="zohoConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zohoConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoConfigurationForm[\'name\'].$error" ng-show="zohoConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zohoConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'channel\'].$error" ng-show="zohoConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zohoConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'type\'].$error" ng-show="zohoConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoConfiguration" ng-click="vm.saveZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid || zohoConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoConfiguration" ng-click="vm.addNewZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOCONFIGURATION">\n          ADD ZOHOCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoConfiguration" ng-click="vm.deleteZohoConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",'<md-dialog class="zohoAccount-item-dialog" aria-label="New Item">\n  <form name="zohoAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.key.$error" ng-show="zohoAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.keyType.$error" ng-show="zohoAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.keyContent.$error" ng-show="zohoAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.customField.$error" ng-show="zohoAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zohoAccountItemForm.option.$error" ng-show="zohoAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zohoAccountItemForm.content.$error"\n          ng-show="zohoAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zohoAccountItemForm.variableName.$error"\n          ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/view.html",'<div id="integrations-zohoAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zohoAccounts-button md-icon-button" aria-label="Go to zohoAccounts" ng-click="vm.gotoZohoAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZOHOACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zohoAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zohoAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zohoAccount.id}}\n            <span ng-if="vm.zohoAccount.name">{{vm.zohoAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zohoAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZohoAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <md-select name="host" ng-model="vm.zohoAccount.host" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n                  <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ZONE">Zone</label>\n                <md-select name="zone" ng-model="vm.zohoAccount.zone" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'US\'">US</md-option>\n                  <md-option ng-value="\'AU\'">AU</md-option>\n                  <md-option ng-value="\'EU\'">EU</md-option>\n                  <md-option ng-value="\'IN\'">IN</md-option>\n                  <md-option ng-value="\'CN\'">CN</md-option>\n                </md-select>\n                <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n                <div ng-messages="generalForm[\'zone\'].$error" ng-show="generalForm[\'zone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CODE">Code</label>\n                <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n                <div ng-messages="generalForm[\'code\'].$error" ng-show="generalForm[\'code\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.REFRESHTOKEN">RefreshToken</label>\n                <input type="text" name="refreshToken" ng-model="vm.zohoAccount.refreshToken" disabled>\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.REFRESHTOKEN"></span></div>\n                <div ng-messages="generalForm[\'refreshToken\'].$error" ng-show="generalForm[\'refreshToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.REFRESHTOKEN_REQUIRED">RefreshToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zohoAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZohoAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zohoAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" class="md-icon-button" aria-label="create zohoConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zohoConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedZohoConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZohoConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zohoConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZohoConfiguration($event, zohoConfiguration)" translate="INTEGRATIONS.DELETE_ZOHOCONFIGURATION">\n                            Delete ZohoConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",'<div id="zohoAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZOHOACCOUNTS">ZohoAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZohoAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZohoAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zohoAccounts-count">\n          <span>{{vm.selectedZohoAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZohoAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZohoAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZohoAccounts" csv-label="true" filename="zohoAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZohoAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- ZOHOACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZohoAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZohoAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column md-order-by="zone">{{ \'INTEGRATIONS.ZONE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zohoAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zohoAccount" md-select-id="id" ng-repeat="zohoAccount in vm.zohoAccounts.rows">\n                <td md-cell ng-if="zohoAccount.userpic"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="api/users/{{zohoAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zohoAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="id ">{{zohoAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="name ">{{zohoAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="host ">{{ vm.arrayhost[zohoAccount.host].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="zone ">{{ vm.arrayzone[zohoAccount.zone].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zohoAccount, $event    )" translate="INTEGRATIONS.EDIT_ZOHOACCOUNT">\n                          Edit ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zohoAccount, $event    )" translate="INTEGRATIONS.TEST_ZOHOACCOUNT">\n                          Test ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zohoAccount, $event    )" translate="INTEGRATIONS.DELETE_ZOHOACCOUNT">\n                          Delete ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zohoAccounts.count}}" md-on-paginate="vm.getZohoAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZOHOACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZOHOACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zohoAccount-button" ng-click="vm.createOrEditZohoAccount($event)" aria-label="add zohoAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZOHOACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/jscripty/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.project.description">\n\n        <div ng-messages="projectForm[\'description\'].$error" ng-show="projectForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="ADD" translate="JSCRIPTY.ADD_PROJECT" translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="JSCRIPTY.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="JSCRIPTY.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/clone/clone.html",'<md-dialog class="project-dialog" aria-label="Clone Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="CLONE" translate="JSCRIPTY.CLONE_PROJECT" translate-attr-aria-label="JSCRIPTY.CLONE_PROJECT">\n        CLONE PROJECT\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",'<md-dialog class="session-dialog" aria-label="New Session">\n  <form name="sessionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <md-list>\n        <md-subheader class="md-no-sticky">\n          <div class="margin-bottom-5"><span translate="JSCRIPTY.ANSWERS">Answers</span></div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.STARTTIME" class="ng-scope font-weight-700">Start Time</span>: <span class="ng-binding">{{vm.session.starttime | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.MEMBERNAME" class="ng-scope font-weight-700">Member Name</span>: <span class="ng-binding">{{vm.session.membername}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.PROJECT" class="ng-scope font-weight-700">Project</span>: <span class="ng-binding">{{vm.project.name}}</span>\n          </div>\n        </md-subheader>\n        <md-list-item ng-if="vm.questions.rows.length" class="md-2-line contact-item" ng-repeat="question in vm.questions.rows">\n          <div class="md-list-item-text compact">\n            <h3>{{$index+1}}. {{question.question}}</h3>\n            <p>{{question.answer}}</p>\n          </div>\n          <md-divider ng-if="!$last"></md-divider>\n        </md-list-item>\n        <md-list-item ng-if="!vm.questions.rows.length" class="md-2-line contact-item">\n          <div class="md-list-item-text compact">\n            <h3><span class="text-boxed-light" translate="JSCRIPTY.NO_RESULTS_AVAILABLE">No results available</span></h3>\n          </div>\n        </md-list-item>\n      </md-list>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/view.html",'<div id="jscripty-project" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="JSCRIPTY.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/projects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}}\n            <span ng-if="vm.project.name">{{vm.project.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.project, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="JSCRIPTY.CLONE_PROJECT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveProject()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (builderForm.$invalid) || (previewForm.$invalid) || (sessionsForm.$invalid) || (answersForm.$invalid)" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="JSCRIPTY.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.enableUncompleteSave" aria-label="EnableUncompleteSave" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.ENABLEUNCOMPLETESAVE">EnableUncompleteSave</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.ENABLEUNCOMPLETESAVE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.sendUnpauseOnSubmit" aria-label="SendUnpauseOnSubmit" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.SENDUNPAUSEONSUBMIT">SendUnpauseOnSubmit</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.SENDUNPAUSEONSUBMIT"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.project.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.BUILDER">BUILDER</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container builder md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectBuilderController as vm_bc" ng-init="vm_bc.init(vm.project)">\n              <mw-form-builder ng-if="vm_bc.project.formData" form-data="vm_bc.project.formData" options="vm_bc.optionsBuilder" read-only="false"></mw-form-builder>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container preview md-background-bg md-whiteframe-1dp">\n            <div layout="column" layout-align="center" ng-controller="ProjectViewerController as vm_vc" ng-init="vm_vc.init(vm.project)">\n              <div layout="row" layout-align="center">\n                <md-button class="md-raised md-accent" aria-label="Reset" ng-click="vm_vc.resetViewer()">\n                  Reset\n                </md-button>\n              </div>\n              <mw-form-viewer ng-if="vm_vc.project.formData" form-data="vm_vc.project.formData" response-data="vm_vc.responseData" on-submit="vm_vc.onSubmit($event)" api="vm_vc.formViewer"></mw-form-viewer>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SESSIONS">SESSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container sessions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectSessionsController as vm_dc" ng-init="vm_dc.init(vm.project, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="JSCRIPTY.SESSIONS">Sessions</span>\n                  <ms-search-bar on-search="vm_dc.getProjectSessions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedProjectSessions.length}} {{vm_dc.selectedProjectSessions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedProjectSessions" csv-label="true" filename="projects.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedProjectSessions($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedProjectSessions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getProjectSessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'JSCRIPTY.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'JSCRIPTY.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'JSCRIPTY.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="membername">\n                        {{ \'JSCRIPTY.MEMBERNAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'JSCRIPTY.CALLERIDNUM\' | translate }}\n                      </th>\n                      <th md-column md-order-by="completed">\n                        {{ \'JSCRIPTY.COMPLETE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="session" md-select-id="id" ng-repeat="session in vm_dc.projectSessions.rows">\n                      <td md-cell>\n                        {{session.id}}\n                      </td>\n                      <td md-cell>\n                        {{ session.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ session.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{session.membername}}\n                      </td>\n                      <td md-cell>\n                        {{session.calleridnum}}\n                      </td>\n                      <td md-cell class="completed ">\n                        <md-icon md-colors="{color: {{session.completed ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{session.completed? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showQuestionsProjectSession($event, session)" translate="JSCRIPTY.SHOW_QUESTIONS_SESSION">\n                                Results Session\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(session, $event)" translate="JSCRIPTY.DELETE_SESSION">\n                                Delete Session\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.projectSessions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="JSCRIPTY.NO_SESSION_AVAILABLE">No session available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.projectSessions.count}}" md-on-paginate="vm_dc.getProjectSessions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.ANSWERS">ANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container answers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectAnswersController as vm_an" ng-init="vm_an.init(vm.project, vm.userProfile)">\n              <div class="pb-16" layout="row">\n                <div class="h2 secondary-text" translate="JSCRIPTY.ANSWERS" flex>Answers</div>\n                <div layout="row" layout-align="space-between center" flex>\n                  <md-date-range localization-map="vm_an.localizationMap" ng-model="vm_an.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm_an.getAnswers()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                  <md-button type="button" ng-if="vm_an.currentUser.role === \'admin\' || vm_an.userProfile.downloadJscriptySessions" ng-disabled="!vm_an.answers" ng-click="vm_an.getSummary($event)" class="md-accent md-raised md-button ng-scope md-default-theme md-ink-ripple md-green-500-bg md-icon-button" title="{{\'JSCRIPTY.EXPORT_TO_CSV\' | translate}}">\n                    <md-icon md-font-icon="icon-file-excel" class="md-default-theme md-font material-icons icon-file-excel"></md-icon>\n                  </md-button>\n                </div>\n              </div>\n              <div layout="row">\n                <md-card class="md-whiteframe-1dp" ng-if="vm_an.answers && vm_an.hasIdAnswers" flex>\n                  <md-list>\n                    <md-list-item class="md-2-line contact-item" ng-repeat="(key, question) in vm_an.answers">\n                      <div class="md-list-item-text compact" layout-padding>\n                        <h3>{{question.question}}</h3>\n                        <md-table-container>\n                          <table md-table>\n                            <thead md-head>\n                              <tr md-row>\n                                <th md-column></th>\n                                <th md-column>#</th>\n                                <th md-column>%</th>\n                              </tr>\n                            </thead>\n                            <tbody md-body>\n                              <tr md-row ng-repeat="(key, value) in question.answers">\n                                <td md-cell>{{key}}</td>\n                                <td md-cell width="20px">{{value}}</td>\n                                <td md-cell width="20px">{{value*100/question.sum | number:1}}</td>\n                              </tr>\n                              <tr md-row>\n                                <td md-cell><b>{{\'JSCRIPTY.TOTAL\' | translate}}</b></td>\n                                <td md-cell width="20px"><b>{{question.sum}}</b></td>\n                                <td md-cell width="20px"><b>100</b></td>\n                              </tr>\n                            </tbody>\n                          </table>\n                        </md-table-container>\n                      </div>\n                      <md-divider ng-if="!$last"></md-divider>\n                    </md-list-item>\n                  </md-list>\n                </md-card>\n                <span ng-if="!vm_an.answers || !vm_an.hasIdAnswers" class="text-boxed-light" translate="JSCRIPTY.NO_ANSWERS_AVAILABLE">No answers available</span>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/jscripty/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-script" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="JSCRIPTY.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="JSCRIPTY.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="JSCRIPTY.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="JSCRIPTY.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="JSCRIPTY.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="JSCRIPTY.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="JSCRIPTY.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'JSCRIPTY.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'JSCRIPTY.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'JSCRIPTY.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'JSCRIPTY.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="JSCRIPTY.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td md-cell ng-if="project.userpic"><img class="avatar" alt="{{project.name}}" ng-src="api/users/{{project.id}}/avatar" /></td>\n                <td md-cell ng-if="!project.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{project.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="createdAt ">{{project.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(project, $event    )" translate="JSCRIPTY.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(project, $event    )" translate="JSCRIPTY.CLONE_PROJECT">\n                          clone Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.sessionsgoto(project, $event    )" translate="JSCRIPTY.SESSIONS_PROJECT">\n                          Sessions Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(project, $event    )" translate="JSCRIPTY.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-project-button" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/create/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailAccountForm[\'name\'].$error" ng-show="mailAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'key\'].$error" ng-show="mailAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n        <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'email\'].$error" ng-show="mailAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.mailAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'ListId\'].$error" ng-show="mailAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.mailAccount.active" aria-label="Active"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.newMailAccount" class="md-block">\n        <label translate="MAIL.SERVICE">Service</label>\n        <md-select name="cservice" ng-model="vm.mailAccount.cservice" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'cservice\'].$error" ng-show="mailAccountForm[\'cservice\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n        <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n        <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Imap.host\'].$error" ng-show="mailAccountForm[\'Imap.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n        <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n        <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Imap.port\'].$error" ng-show="mailAccountForm[\'Imap.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n        <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Smtp.host\'].$error" ng-show="mailAccountForm[\'Smtp.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n        <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'Smtp.port\'].$error" ng-show="mailAccountForm[\'Smtp.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.mailAccount.cservice !== undefined && vm.mailAccount.cservice == null && vm.newMailAccount" class="md-block">\n        <md-switch ng-model="vm.mailAccount.cauthentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount" class="md-block">\n        <label translate="MAIL.USERNAME">Username</label>\n        <input type="text" name="cuser" ng-model="vm.mailAccount.cuser" ng-required="true">\n\n        <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n        <div ng-messages="mailAccountForm[\'cuser\'].$error" ng-show="mailAccountForm[\'cuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="(vm.mailAccount.cauthentication == true || vm.mailAccount.cservice != null) && vm.newMailAccount">\n        <label translate="MAIL.PASSWORD">Password</label>\n        <input type="password" name="cpassword" ng-model="vm.mailAccount.cpassword" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n        <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n        <div ng-messages="mailAccountForm[\'cpassword\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailAccount.description">\n\n        <div ng-messages="mailAccountForm[\'description\'].$error" ng-show="mailAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailAccount" ng-click="vm.saveMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid || mailAccountForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailAccount" ng-click="vm.addNewMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILACCOUNT" translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n          ADD MAILACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailAccount" ng-click="vm.deleteMailAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",'<md-dialog class="mailAccount-dialog" aria-label="mailAccount" ng-init="vm.onInit()">\n  <form name="mailAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILACCOUNT">Add Agent to mailAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/agent/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'agent\'].$error" ng-show="mailAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'times\'].$error" ng-show="mailAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.REPLY_TYPE">Reply_Type</label>\n        <md-select name="replyType" ng-model="vm.autoreply.replyType" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="0">Reply</md-option>\n          <md-option ng-value="1">Reply All</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'replyType\'].$error" ng-show="mailAccountFormApp[\'replyType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.REPLY_TYPE_REQUIRED">Reply_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.TEXT">Text</label>\n        <textarea aria-label="Text text" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.autoreply.text"></textarea>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/close/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'disposition\'].$error" ng-show="mailAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'condition\'].$error" ng-show="mailAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'truepriority\'].$error" ng-show="mailAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'falsepriority\'].$error" ng-show="mailAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'priority\'].$error" ng-show="mailAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/noop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'value\'].$error" ng-show="mailAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/queue/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'queue\'].$error" ng-show="mailAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/system/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'command\'].$error" ng-show="mailAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'variable\'].$error" ng-show="mailAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/tag/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'tag\'].$error" ng-show="mailAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",'<md-dialog class="mailCannedAnswer-dialog" aria-label="New MailCannedAnswer">\n  <form name="mailCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.mailCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="mailCannedAnswerForm[\'key\'].$error" ng-show="mailCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.VALUE">Value</label>\n        <textarea aria-label="Value value" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailCannedAnswer.value"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailCannedAnswer.description">\n\n        <div ng-messages="mailCannedAnswerForm[\'description\'].$error" ng-show="mailCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailCannedAnswer" ng-click="vm.saveMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid || mailCannedAnswerForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailCannedAnswer" ng-click="vm.addNewMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILCANNEDANSWER" translate-attr-aria-label="MAIL.ADD_MAILCANNEDANSWER">\n          ADD MAILCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailCannedAnswer" ng-click="vm.deleteMailCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/view.html",'<div id="mail-mailAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailAccounts-button md-icon-button" aria-label="Go to mailAccounts" ng-click="vm.gotoMailAccounts()" translate translate-attr-aria-label="MAIL.GO_TO_MAILACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailAccount-image" hide-xs>\n          <img ng-src="assets/images/business/mailAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailAccount.id}}\n            <span ng-if="vm.mailAccount.name">{{vm.mailAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MAIL.GOTO_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (imapForm.$invalid) || (smtpForm.$invalid) || (dispositionForm.$invalid) || (mailDispositionsForm.$invalid) || (mailCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n                <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.mailAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_FAMILY">Font_Family</label>\n                <ms-font-family name="fontFamily" ng-model="vm.mailAccount.fontFamily" required></ms-font-family>\n                <div class="hint"><span translate="MAIL.HELP.FONT_FAMILY"></span></div>\n                <div ng-messages="generalForm[\'fontFamily\'].$error" ng-show="generalForm[fontFamily].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_FAMILY_REQUIRED">Font_Family field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_SIZE">Font_Size</label>\n                <input type="number" name="fontSize" ng-model="vm.mailAccount.fontSize" min="8" max="72" value="13" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.FONT_SIZE"></span></div>\n                <div ng-messages="generalForm[\'fontSize\'].$error" ng-show="generalForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_REQUIRED">Font_Size field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>8</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>72</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.TEMPLATE">Template</label>\n                <textarea aria-label="Template template" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.template"></textarea>\n              </div>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.markAsUnread" aria-label="mark_as_unread" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MARK_AS_UNREAD">mark_as_unread</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.MARK_AS_UNREAD"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.mailAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="mailAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="mailAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.queueTransfer == true" class="md-block">\n                <label translate="MAIL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.mailAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.agentTransfer == true" class="md-block">\n                <label translate="MAIL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.mailAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.IMAP">IMAP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="Imap.service" ng-model="vm.mailAccount.Imap.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="imapForm[\'Imap.service\'].$error" ng-show="imapForm[\'Imap.service\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n                <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n                <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.host\'].$error" ng-show="imapForm[\'Imap.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Imap.service == null)" class="md-block">\n                <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n                <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.port\'].$error" ng-show="imapForm[\'Imap.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.authentication == true || vm.mailAccount.Imap.service != null" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Imap.user" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="imapForm[\'Imap.user\'].$error" ng-show="imapForm[\'Imap.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Imap.authentication == true || vm.mailAccount.Imap.service != null">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Imap.password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="imapForm[\'Imap.password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">connTimeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">connTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">connTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">authTimeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">authTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">authTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SMTP">SMTP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container smtp md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.SMTP">SMTP</div>\n            </div>\n            <form name="smtpForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="Smtp.service" ng-model="vm.mailAccount.Smtp.service" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Custom</md-option>\n                  <md-option ng-value="\'gmail\'">Gmail</md-option>\n                  <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n                  <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n                  <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n                </md-select>\n                <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n                <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n                <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.newMailAccount && vm.mailAccount.cservice == null) || (vm.newMailAccount == undefined && vm.mailAccount.Smtp.service == null)" class="md-block">\n                <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n                <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="Secure" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SECURE">Secure</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.SECURE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.service == null" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.authentication == true || vm.mailAccount.Smtp.service != null" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Smtp.user" ng-model="vm.mailAccount.Smtp.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Smtp.authentication == true || vm.mailAccount.Smtp.service != null">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Smtp.pass" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.mandatoryDisposition" class="md-block">\n                <label translate="MAIL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.mailAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="MailAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="mailAccount-detail-form-container maildispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="MAIL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add mail dispositions" translate translate-attr-label="MAIL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="mailAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container mailcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountMailCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.MAILCANNEDANSWERS">MailCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountMailCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event)" aria-label="add mailCannedAnswer" translate translate-attr-label="MAIL.ADD_MAILCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountMailCannedAnswers.length}} {{vm_dc.selectedMailAccountMailCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountMailCannedAnswers" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountMailCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountMailCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountMailCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'MAIL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'MAIL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'MAIL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mailCannedAnswer" md-select-id="id" ng-repeat="mailCannedAnswer in vm_dc.mailAccountMailCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.value | htmlToPlaintext }}</td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{ mailCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" translate="MAIL.EDIT_MAILCANNEDANSWER">\n                                Edit MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mailCannedAnswer, $event)" translate="MAIL.DELETE_MAILCANNEDANSWER">\n                                Delete MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountMailCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_MAILCANNEDANSWER_AVAILABLE">No mailcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountMailCannedAnswers.count}}" md-on-paginate="vm_dc.getMailAccountMailCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.mailAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="MAIL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedMailAccountApps.length}} {{vm_ac.selectedMailAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedMailAccountApps($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedMailAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.mailAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editMailAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.mailAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getMailAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getMailAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="MAIL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountInteractions.length}} {{vm_dc.selectedMailAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountInteractions" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'MAIL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="subject">\n                        {{ \'MAIL.SUBJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'MAIL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'MAIL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'MAIL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'MAIL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.mailAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <div class="width-300">\n                          <span class="text-truncate font-size-12">\n                            {{interaction.subject}}\n                          </span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'MAIL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'MAIL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spymailInteraction($event, interaction)" translate="MAIL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="MAIL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountInteractions.rows.length">\n                      <td md-cell colspan="13">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountInteractions.count}}" md-on-paginate="vm_dc.getMailAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailAccounts-count">\n          <span>{{vm.selectedMailAccounts.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailAccounts()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailAccounts()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailAccounts" csv-label="true" filename="mailAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailAccounts($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'MAIL.KEY\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'MAIL.EMAIL_ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MAIL.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailAccount" md-select-id="id" ng-repeat="mailAccount in vm.mailAccounts.rows">\n                <td md-cell ng-if="mailAccount.userpic"><img class="avatar" alt="{{mailAccount.name}}" ng-src="api/users/{{mailAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="id ">{{mailAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="name ">{{mailAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="key ">{{mailAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="email ">{{mailAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{mailAccount.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{mailAccount.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)" md-cell class="description ">{{mailAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailAccount, $event    )" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.verifysmtpverifysmtp(mailAccount, $event    )" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          verifysmtp MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(mailAccount, $event    )" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Interactions MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailAccount, $event    )" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          goToRealtime MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailAccount, $event    )" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          AgentAdd MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event    )" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete MailAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailAccount-button" ng-click="vm.createOrEditMailAccount($event)" aria-label="add mailAccount" translate translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailQueues/create/dialog.html",'<md-dialog class="mailQueue-dialog" aria-label="New MailQueue">\n  <form name="mailQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newMailQueue">\n\n        <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n        <div ng-messages="mailQueueForm[\'name\'].$error" ng-show="mailQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.mailQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="mailQueueForm[\'strategy\'].$error" ng-show="mailQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="mailQueueForm[\'timeout\'].$error" ng-show="mailQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailQueue.description">\n\n        <div ng-messages="mailQueueForm[\'description\'].$error" ng-show="mailQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailQueue" ng-click="vm.saveMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid || mailQueueForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailQueue" ng-click="vm.addNewMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILQUEUE" translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n          ADD MAILQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailQueue" ng-click="vm.deleteMailQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILQUEUE">Add Agent to mailQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/view.html",'<div id="mail-mailQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailQueues-button md-icon-button" aria-label="Go to mailQueues" ng-click="vm.gotoMailQueues()" translate translate-attr-aria-label="MAIL.GO_TO_MAILQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailQueue-image" hide-xs>\n          <img ng-src="assets/images/business/mailQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailQueue.id}}\n            <span ng-if="vm.mailQueue.name">{{vm.mailQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.mailQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MAIL.TEAMADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.mailQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/mailQueues.html",'<div id="mailQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILQUEUES">MailQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailQueues-count">\n          <span>{{vm.selectedMailQueues.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailQueues()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailQueues()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailQueues" csv-label="true" filename="mailQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailQueues($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MAIL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailQueue" md-select-id="id" ng-repeat="mailQueue in vm.mailQueues.rows">\n                <td md-cell ng-if="mailQueue.userpic"><img class="avatar" alt="{{mailQueue.name}}" ng-src="api/users/{{mailQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="id ">{{mailQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="name ">{{mailQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="strategy ">{{ vm.arraystrategy[mailQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailQueue, $event    )" translate="MAIL.EDIT_MAILQUEUE">\n                          Edit MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(mailQueue, $event    )" translate="MAIL.TEAMADD_MAILQUEUE">\n                          teamadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailQueue, $event    )" translate="MAIL.AGENTADD_MAILQUEUE">\n                          agentadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailQueue, $event    )" translate="MAIL.DELETE_MAILQUEUE">\n                          Delete MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailQueue, $event    )" translate="MAIL.GOTOREALTIME_MAILQUEUE">\n                          goToRealtime MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailQueues.count}}" md-on-paginate="vm.getMailQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailQueue-button" ng-click="vm.createOrEditMailQueue($event)" aria-label="add mailQueue" translate translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailSubtatuses/create/dialog.html",'<md-dialog class="mailSubstatus-dialog" aria-label="New MailSubstatus">\n  <form name="mailSubstatusForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailSubstatus.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailSubstatusForm[\'name\'].$error" ng-show="mailSubstatusForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailSubstatus.description">\n\n        <div ng-messages="mailSubstatusForm[\'description\'].$error" ng-show="mailSubstatusForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailSubstatus" ng-click="vm.saveMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid || mailSubstatusForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailSubstatus" ng-click="vm.addNewMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILSUBSTATUS" translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n          ADD MAILSUBSTATUS\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailSubstatus" ng-click="vm.deleteMailSubstatus($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",'<div id="mailSubtatuses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILSUBSTATUSES">MailSubstatuses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailSubstatuses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailSubstatuses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailSubtatuses-count">\n          <span>{{vm.selectedMailSubstatuses.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailSubstatuses()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailSubstatuses()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailSubstatuses" csv-label="true" filename="mailSubtatuses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailSubstatuses($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MAILSUBSTATUS TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailSubstatuses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailSubstatuses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailSubtatuses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailSubstatus" md-select-id="id" ng-repeat="mailSubstatus in vm.mailSubtatuses.rows">\n                <td md-cell ng-if="mailSubstatus.userpic"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="api/users/{{mailSubstatus.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailSubstatus.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="id ">{{mailSubstatus.id}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="name ">{{mailSubstatus.name}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="description ">{{mailSubstatus.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(mailSubstatus, $event    )" translate="MAIL.EDIT_MAILSUBSTATUS">\n                          Edit MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailSubstatus, $event    )" translate="MAIL.DELETE_MAILSUBSTATUS">\n                          Delete MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailSubtatuses.count}}" md-on-paginate="vm.getMailSubstatuses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILSUBSTATUS TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILSUBSTATUS BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailSubstatus-button" ng-click="vm.createOrEditMailSubstatus($event)" aria-label="add mailSubstatus" translate translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILSUBSTATUS BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate}}</th>\n        <th md-column>{{\'MAIL.KEY\' | translate}}</th>\n        <th md-column>{{\'MAIL.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MAIL.IN\' | translate}}</th>\n        <th md-column>{{\'MAIL.OUT\' | translate}}</th>\n        <th md-column>{{\'MAIL.IMAP_STATUS\' | translate}}</th>\n        <th md-column>{{\'MAIL.SMTP_STATUS\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.mailAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.mailAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.mailAccounts[value].name}}</td>\n        <td md-cell>{{vm.mailAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.mailAccounts[value].in || 0) + (vm.mailAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.mailAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.mailAccounts[value].lastIn ?  (vm.mailAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.mailAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.mailAccounts[value].lastOut ?  (vm.mailAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="vm.mailAccounts[value].Imap.status">\n                  <md-icon ng-switch-when="error" md-font-icon="icon-alert yellow-fg"></md-icon>\n                  <md-icon ng-switch-when="disabled" md-font-icon="icon-close grey-fg"></md-icon>\n                  <md-icon ng-switch-default md-font-icon="icon-checkbox-marked-circle-outline green-fg"></md-icon>\n                </div>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="vm.mailAccounts[value].active && (vm.mailAccounts[value].Imap.lastSync && vm.mailAccounts[value].Imap.lastSync != \'\')">{{vm.mailAccounts[value].Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="vm.mailAccounts[value].Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ vm.mailAccounts[value].Smtp.status == \'error\' ? \'icon-alert yellow-fg\' : \'icon-checkbox-marked-circle-outline green-fg\'}}"></md-icon>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{vm.mailAccounts[value].Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!vm.mailAccounts[value].Smtp.status">{{ \'MAIL.NEVER_VERIFIED\' | translate }}</span>\n        </td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToMailAccount($event, vm.mailAccounts[value])" translate="MAIL.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.verifySmtp($event, vm.mailAccounts[value])" translate="MAIL.VERIFY_SMTP">\n                  Verify Smtp\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/mail/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MAIL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MAIL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MAIL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MAIL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MAIL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MAIL.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'MAIL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MAIL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MAIL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MAIL.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MAIL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MAIL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"MAIL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MAIL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MAIL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MAIL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MAIL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MAIL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MAIL.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MAIL.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'MAIL.PAGE' | translate}}:', rowsPerPage: '{{'MAIL.ROWSPERPAGE' | translate}}:', of: '{{'MAIL.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/mail/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n        <th md-column>{{ \'MAIL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MAIL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MAIL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MAIL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MAIL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus>\n\n        <div ng-messages="pluginForm[\'name\'].$error" ng-show="pluginForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.plugin.type" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'type\'].$error" ng-show="pluginForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="!vm.newPlugin"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.plugin.description">\n\n        <div ng-messages="pluginForm[\'description\'].$error" ng-show="pluginForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.ICON">Icon</label>\n        <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true">\n\n        <div ng-messages="pluginForm[\'icon\'].$error" ng-show="pluginForm[\'icon\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n        <md-select name="sidebar" ng-model="vm.plugin.sidebar" required>\n          <md-option ng-value="\'always\'">Always</md-option>\n          <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n          <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n          <md-option ng-value="\'never\'">Never</md-option>\n        </md-select>\n        <div ng-messages="pluginForm[\'sidebar\'].$error" ng-show="pluginForm[\'sidebar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n        <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n        <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl">\n\n        <div ng-messages="pluginForm[\'adminUrl\'].$error" ng-show="pluginForm[\'adminUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n        <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n        <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl">\n\n        <div ng-messages="pluginForm[\'agentUrl\'].$error" ng-show="pluginForm[\'agentUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n        <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'scriptName\'].$error" ng-show="pluginForm[\'scriptName\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n        <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true">\n\n        <div ng-messages="pluginForm[\'scriptPath\'].$error" ng-show="pluginForm[\'scriptPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.VERSION">Version</label>\n        <input type="text" name="version" ng-model="vm.plugin.version" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'version\'].$error" ng-show="pluginForm[\'version\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPlugin" ng-click="vm.savePlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid || pluginForm.$pristine" aria-label="SAVE" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPlugin" ng-click="vm.addNewPlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid" aria-label="ADD" translate="MARKETPLACE.ADD_PLUGIN" translate-attr-aria-label="MARKETPLACE.ADD_PLUGIN">\n          ADD PLUGIN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPlugin" ng-click="vm.deletePlugin($event)" aria-label="DELETE" translate translate-attr-aria-label="MARKETPLACE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MARKETPLACE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/marketplace/views/plugins/edit/view.html",'<div id="marketplace-plugin" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-plugins-button md-icon-button" aria-label="Go to plugins" ng-click="vm.gotoPlugins()" translate translate-attr-aria-label="MARKETPLACE.GO_TO_PLUGINS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="plugin-image" hide-xs>\n          <img ng-src="assets/images/business/plugins.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.plugin.id}}\n            <span ng-if="vm.plugin.name">{{vm.plugin.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MARKETPLACE.CREATED_AT"></span> <span>{{vm.plugin.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.savePlugin()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MARKETPLACE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="plugin-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MARKETPLACE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.plugin.type" disabled>\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="true"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.plugin.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.ICON">Icon</label>\n                <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'icon\'].$error" ng-show="generalForm[\'icon\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n                <md-select name="sidebar" ng-model="vm.plugin.sidebar" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'always\'">Always</md-option>\n                  <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n                  <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n                  <md-option ng-value="\'never\'">Never</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sidebar\'].$error" ng-show="generalForm[\'sidebar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n                <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n                <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'adminUrl\'].$error" ng-show="generalForm[\'adminUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n                <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n                <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'agentUrl\'].$error" ng-show="generalForm[\'agentUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n                <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" disabled>\n\n                <div ng-messages="generalForm[\'scriptName\'].$error" ng-show="generalForm[\'scriptName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n                <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'scriptPath\'].$error" ng-show="generalForm[\'scriptPath\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.VERSION">Version</label>\n                <input type="text" name="version" ng-model="vm.plugin.version" disabled>\n\n                <div ng-messages="generalForm[\'version\'].$error" ng-show="generalForm[\'version\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/marketplace/views/plugins/plugins.html",'<div id="plugins" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MARKETPLACE.PLUGINS">Plugins</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MARKETPLACE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPlugins.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPlugins =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MARKETPLACE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-plugins-count">\n          <span>{{vm.selectedPlugins.length}}</span>\n          <span translate="MARKETPLACE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MARKETPLACE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPlugins()" translate="MARKETPLACE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPlugins()" translate="MARKETPLACE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPlugins" csv-label="true" filename="plugins.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPlugins($event)" aria-label="delete selected" translate translate-attr-label="MARKETPLACE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div ng-if="vm.installing">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="MARKETPLACE.INSTALLING">Installing</span>\n            <md-progress-linear md-mode="indeterminate" class="md-accent padding-20"></md-progress-linear>\n          </div>\n        </md-card>\n      </div>\n\n      \x3c!-- PLUGIN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPlugins" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPlugins">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="name">{{ \'MARKETPLACE.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'MARKETPLACE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MARKETPLACE.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MARKETPLACE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="version">{{ \'MARKETPLACE.VERSION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.plugins.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MARKETPLACE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="plugin" md-select-id="id" ng-repeat="plugin in vm.plugins.rows">\n                <td md-cell ng-if="plugin.userpic"><img class="avatar" alt="{{plugin.name}}" ng-src="api/users/{{plugin.id}}/avatar" /></td>\n                <td md-cell ng-if="!plugin.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{plugin.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="name ">{{plugin.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="type ">{{plugin.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{plugin.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{plugin.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="description ">{{plugin.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="version ">{{plugin.version}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MARKETPLACE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && !plugin.active">\n\n                        <md-button ng-click="vm.installplugin(plugin, $event    )" translate="MARKETPLACE.INSTALL_PLUGIN">\n                          Install Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(plugin, $event    )" translate="MARKETPLACE.EDIT_PLUGIN">\n                          Edit Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.stopplugin(plugin, $event    )" translate="MARKETPLACE.STOP_PLUGIN">\n                          Stop Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.restartplugin(plugin, $event    )" translate="MARKETPLACE.RESTART_PLUGIN">\n                          Restart Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(plugin, $event  , \'plugins\'   )" translate="MARKETPLACE.DOWNLOAD_PLUGIN">\n                          Download Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active">\n\n                        <md-button ng-click="vm.uninstallplugin(plugin, $event    )" translate="MARKETPLACE.UNINSTALL_PLUGIN">\n                          Uninstall Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(plugin, $event    )" translate="MARKETPLACE.DELETE_PLUGIN">\n                          Delete Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MARKETPLACE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MARKETPLACE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MARKETPLACE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.plugins.count}}" md-on-paginate="vm.getPlugins" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PLUGIN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD PLUGIN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-plugin-button" ng-click="vm.uploadPlugin($event)" aria-label="upload plugin" translate translate-attr-aria-label="MARKETPLACE.UPLOAD_PLUGIN">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD PLUGIN BUTTON --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="plugin-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="MARKETPLACE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="MARKETPLACE.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="MARKETPLACE.UPLOADING">Uploading</span>\n          <span>{{vm.plugin.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="MARKETPLACE.FINISH" translate-attr-aria-label="MARKETPLACE.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",'<md-dialog class="ivrCampaign-dialog" aria-label="New IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'TrunkId\'].$error" ng-show="ivrCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'IntervalId\'].$error" ng-show="ivrCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="ivrCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n        <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" required>\n          <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'SquareProjectId\'].$error" ng-show="ivrCampaignForm[\'SquareProjectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n        <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n        <div ng-messages="ivrCampaignForm[\'limitCalls\'].$error" ng-show="ivrCampaignForm[\'limitCalls\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.ivrCampaign.description">\n\n        <div ng-messages="ivrCampaignForm[\'description\'].$error" ng-show="ivrCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newIvrCampaign" ng-click="vm.saveIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid || ivrCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newIvrCampaign" ng-click="vm.addNewIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n          ADD IVRCAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newIvrCampaign" ng-click="vm.deleteIvrCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",'<md-dialog class="ivrCampaign-dialog" aria-label="Clone IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n        CLONE IVRCAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",'<div id="motiondialer-ivrCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-ivrCampaigns-button md-icon-button" aria-label="Go to ivrCampaigns" ng-click="vm.gotoIvrCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_IVRCAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="ivrCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/ivrCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.ivrCampaign.id}}\n            <span ng-if="vm.ivrCampaign.name">{{vm.ivrCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.ivrCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveIvrCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.ivrCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.ivrCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.ivrCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n                </md-select>\n                <div ng-messages="campaignForm[\'SquareProjectId\'].$error" ng-show="campaignForm[\'SquareProjectId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n                <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'limitCalls\'].$error" ng-show="campaignForm[\'limitCalls\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.ivrCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.ivrCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.ivrCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.ivrCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.ivrCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.ivrCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.ivrCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.ivrCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.ivrCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.ivrCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.ivrCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.ivrCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.ivrCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.ivrCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.ivrCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.ivrCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.ivrCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.ivrCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.ivrCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.ivrCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.ivrCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.ivrCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.ivrCampaign.dialOrderByScheduledAt" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.ivrCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.ivrCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.ivrCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.ivrCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.ivrCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.ivrCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.ivrCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.ivrCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.ivrCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.ivrCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.ivrCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.ivrCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.ivrCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="ivrCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHoppers.length}} {{vm_dc.selectedIvrCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHoppers" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIvrCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.ivrCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHoppers.rows.length">\n                      <td md-cell colspan="15">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHoppers.count}}" md-on-paginate="vm_dc.getIvrCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperHistories.length}} {{vm_dc.selectedIvrCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperHistories" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.ivrCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsIvrCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperFinals.length}} {{vm_dc.selectedIvrCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperFinals" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedIvrCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.ivrCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="28">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperBlacks.length}} {{vm_dc.selectedIvrCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperBlacks" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.ivrCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",'<div id="ivrCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.IVRCAMPAIGNS">IvrCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIvrCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIvrCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-ivrCampaigns-count">\n          <span>{{vm.selectedIvrCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIvrCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIvrCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIvrCampaigns" csv-label="true" filename="ivrCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIvrCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- IVRCAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIvrCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIvrCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="SquareProjectId">{{ \'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.ivrCampaigns.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="ivrCampaign" md-select-id="id" ng-repeat="ivrCampaign in vm.ivrCampaigns.rows">\n                <td md-cell ng-if="ivrCampaign.userpic"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="api/users/{{ivrCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!ivrCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="id ">{{ivrCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="name ">{{ivrCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{ivrCampaign.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{ivrCampaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':ivrCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="SquareProjectId ">{{ (vm.projects | filter : {\'id\':ivrCampaign.SquareProjectId} : true)[0].name }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(ivrCampaign, $event    )" translate="MOTIONDIALER.EDIT_IVRCAMPAIGN">\n                          Edit IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(ivrCampaign, $event    )" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n                          clone IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">\n                          listadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">\n                          blacklistadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(ivrCampaign, $event    )" translate="MOTIONDIALER.DELETE_IVRCAMPAIGN">\n                          Delete IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(ivrCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_IVRCAMPAIGN">\n                          goToRealtime IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.ivrCampaigns.count}}" md-on-paginate="vm.getIvrCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / IVRCAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD IVRCAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-ivrCampaign-button" ng-click="vm.createOrEditIvrCampaign($event)" aria-label="add ivrCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD IVRCAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",'<md-dialog class="queueCampaign-dialog" aria-label="New QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'TrunkId\'].$error" ng-show="queueCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'IntervalId\'].$error" ng-show="queueCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="queueCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.METHOD">Method</label>\n        <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" required>\n          <md-option ng-value="\'progressive\'">Progressive</md-option>\n          <md-option ng-value="\'power\'">PowerDialing</md-option>\n          <md-option ng-value="\'predictive\'">Predictive</md-option>\n          <md-option ng-value="\'preview\'">Preview</md-option>\n          <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialMethod\'].$error" ng-show="queueCampaignForm[\'dialMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n        <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n        <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization">\n\n          <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n          <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialPredictiveOptimization\'].$error" ng-show="queueCampaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n        <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialLimitQueue\'].$error" ng-show="queueCampaignForm[\'dialLimitQueue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n        <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n        <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialQueueTimeout\'].$error" ng-show="queueCampaignForm[\'dialQueueTimeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n        <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'timeout\'].$error" ng-show="queueCampaignForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.queueCampaign.description">\n\n        <div ng-messages="queueCampaignForm[\'description\'].$error" ng-show="queueCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newQueueCampaign" ng-click="vm.saveQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid || queueCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newQueueCampaign" ng-click="vm.addNewQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n          ADD QUEUECAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newQueueCampaign" ng-click="vm.deleteQueueCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">Add Agent to queueCampaign</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",'<md-dialog class="queueCampaign-dialog" aria-label="Clone QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n        CLONE QUEUECAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",'<div id="motiondialer-queueCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-queueCampaigns-button md-icon-button" aria-label="Go to queueCampaigns" ng-click="vm.gotoQueueCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_QUEUECAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="queueCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/queueCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.queueCampaign.id}}\n            <span ng-if="vm.queueCampaign.name">{{vm.queueCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.queueCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.queueCampaign, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.queueCampaign, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveQueueCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (queueForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (advancedpreviewForm.$invalid) || (thresholdsForm.$invalid) || (recallmeForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.queueCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.queueCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.queueCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.METHOD">Method</label>\n                <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'progressive\'">Progressive</md-option>\n                  <md-option ng-value="\'power\'">PowerDialing</md-option>\n                  <md-option ng-value="\'predictive\'">Predictive</md-option>\n                  <md-option ng-value="\'preview\'">Preview</md-option>\n                  <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n                <div ng-messages="campaignForm[\'dialMethod\'].$error" ng-show="campaignForm[\'dialMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n                <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n                <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n                  <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n                <div ng-messages="campaignForm[\'dialPredictiveOptimization\'].$error" ng-show="campaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n                <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'dialLimitQueue\'].$error" ng-show="campaignForm[\'dialLimitQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n                <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n                <div ng-messages="campaignForm[\'timeout\'].$error" ng-show="campaignForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container queue md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.QUEUE">QUEUE</div>\n            </div>\n            <form name="queueForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUEOPTIONS">QueueOptions</label>\n                <input type="text" name="dialQueueOptions" ng-model="vm.queueCampaign.dialQueueOptions" value="tTxX" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="queueForm[\'dialQueueOptions\'].$error" ng-show="queueForm[\'dialQueueOptions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUEOPTIONS_REQUIRED">QueueOptions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n                <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueTimeout\'].$error" ng-show="queueForm[\'dialQueueTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'booked\' || vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.queueCampaign.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'roundrobin\'" ng-if="vm.queueCampaign.dialMethod === \'booked\'">Round Robin</md-option>\n                  <md-option ng-value="\'leastrecent\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Random</md-option>\n                  <md-option ng-value="\'linear\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="queueForm[\'strategy\'].$error" ng-show="queueForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.queueCampaign.retry" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RETRY"></span></div>\n                <div ng-messages="queueForm[\'retry\'].$error" ng-show="queueForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.queueCampaign.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="queueForm[\'wrapuptime\'].$error" ng-show="queueForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.queueCampaign.weight" min="0" value="1" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WEIGHT"></span></div>\n                <div ng-messages="queueForm[\'weight\'].$error" ng-show="queueForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.queueCampaign.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="queueForm[\'musiconhold\'].$error" ng-show="queueForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT2">CallySquareProject2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT2_REQUIRED">CallySquareProject2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW">CallySquareProjectPreview</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW_REQUIRED">CallySquareProjectPreview field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW2">CallySquareProjectPreview2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW2_REQUIRED">CallySquareProjectPreview2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialQueueProject2 && (vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\')" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAgiAfterHangupAgent" aria-label="RunIfHangupAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.RUNIFHANGUPAGENT">RunIfHangupAgent</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RUNIFHANGUPAGENT"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.queueCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.queueCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.queueCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.queueCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.queueCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.queueCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.queueCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.queueCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.queueCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.queueCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.queueCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.queueCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.queueCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.queueCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.queueCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.queueCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.queueCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.queueCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.queueCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.queueCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.queueCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.queueCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.queueCampaign.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.queueCampaign.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.queueCampaign.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.queueCampaign.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.queueCampaign.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.queueCampaign.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.queueCampaign.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.queueCampaign.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="queueCampaign-detail-form-container advancedpreview md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCEDPREVIEW">ADVANCEDPREVIEW</div>\n            </div>\n            <form name="advancedpreviewForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedpreviewForm[\'acwTimeout\'].$error" ng-show="advancedpreviewForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'monitor_format\'].$error" ng-show="advancedpreviewForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedpreviewForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'predictive\'" class="queueCampaign-detail-form-container thresholds md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.THRESHOLDS">THRESHOLDS</div>\n            </div>\n            <form name="thresholdsForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMAXTHRESHOLD">PredictiveMaxThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMAXTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMaxThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMINTHRESHOLD">PredictiveMinThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMINTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMinThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container recallme md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.RECALLME">RECALLME</div>\n            </div>\n            <form name="recallmeForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALRECALLMETIMEOUT">DialRecallMeTimeout</label>\n                <input type="number" name="dialRecallMeTimeout" ng-model="vm.queueCampaign.dialRecallMeTimeout" min="1" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLMETIMEOUT"></span></div>\n                <div ng-messages="recallmeForm[\'dialRecallMeTimeout\'].$error" ng-show="recallmeForm[\'dialRecallMeTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_REQUIRED">DialRecallMeTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DialRecallMeTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialRecallInQueue" aria-label="DialRecallInQueue" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.DIALRECALLINQUEUE">DialRecallInQueue</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLINQUEUE"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.queueCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.queueCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.queueCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.queueCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.queueCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.queueCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.queueCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.queueCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.queueCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.queueCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.queueCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.queueCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.queueCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="queueCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHoppers.length}} {{vm_dc.selectedQueueCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHoppers" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedQueueCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="recallme">\n                        {{ \'MOTIONDIALER.RECALLAGENT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.queueCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHoppers.rows.length">\n                      <td md-cell colspan="17">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHoppers.count}}" md-on-paginate="vm_dc.getQueueCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperHistories.length}} {{vm_dc.selectedQueueCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperHistories" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.queueCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsQueueCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperFinals.length}} {{vm_dc.selectedQueueCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperFinals" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedQueueCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="secondDisposition">\n                        {{ \'MOTIONDIALER.SECOND_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="thirdDisposition">\n                        {{ \'MOTIONDIALER.THIRD_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.queueCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.secondDisposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.thirdDisposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="30">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperBlacks.length}} {{vm_dc.selectedQueueCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperBlacks" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.queueCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",'<div id="queueCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.QUEUECAMPAIGNS">QueueCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedQueueCampaigns.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedQueueCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-queueCampaigns-count">\n          <span>{{vm.selectedQueueCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllQueueCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectQueueCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedQueueCampaigns" csv-label="true" filename="queueCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedQueueCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- QUEUECAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedQueueCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueueCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="dialMethod">{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MOTIONDIALER.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.queueCampaigns.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="queueCampaign" md-select-id="id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <td md-cell ng-if="queueCampaign.userpic"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="api/users/{{queueCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!queueCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="id ">{{queueCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="name ">{{queueCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialActive ">\n                  <md-icon md-colors="{color: {{queueCampaign.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queueCampaign.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':queueCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialMethod ">{{ vm.arraydialMethod[queueCampaign.dialMethod].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="strategy ">{{ vm.arraystrategy[queueCampaign.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(queueCampaign, $event    )" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                          Edit QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(queueCampaign, $event    )" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                          clone QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                          listadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                          blacklistadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                          teamadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                          agentadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(queueCampaign, $event    )" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                          Delete QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                          goToRealtime QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queueCampaigns.count}}" md-on-paginate="vm.getQueueCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / QUEUECAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD QUEUECAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-queueCampaign-button" ng-click="vm.createOrEditQueueCampaign($event)" aria-label="add queueCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD QUEUECAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitAt ? (call.queuecallerexitAt | formatdate) : undefined }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitreason}}</td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'MOTIONDIALER.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'MOTIONDIALER.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'MOTIONDIALER.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'MOTIONDIALER.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'MOTIONDIALER.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'MOTIONDIALER.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'MOTIONDIALER.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'MOTIONDIALER.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'MOTIONDIALER.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'MOTIONDIALER.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"MOTIONDIALER.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"MOTIONDIALER.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MOTIONDIALER.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"MOTIONDIALER.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"MOTIONDIALER.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"MOTIONDIALER.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"MOTIONDIALER.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"MOTIONDIALER.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'MOTIONDIALER.PAGE' | translate}}:', rowsPerPage: '{{'MOTIONDIALER.ROWSPERPAGE' | translate}}:', of: '{{'MOTIONDIALER.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getCampaigns()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCampaigns">\n      <tr md-row>\n        <th md-column>{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, campaign) in vm.campaigns">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'MOTIONDIALER.DID\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.CALLER\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'MOTIONDIALER.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="MOTIONDIALER.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="MOTIONDIALER.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                                MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} Info</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center" ms-scroll>\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                                    <td md-cell>Dropped Calls Timeout</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                                </tr>\n                                <tr md-row>\n                                    <td md-cell>Dropped Calls Caller Exit</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                                    </td>\n                                </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n\n\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TALKING\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.WAITING\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.ORIGINATED_TEXT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.MESSAGE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking  + queue.pTalking}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\'+queue.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MOTIONDIALER.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if="queue.dialMethod == \'predictive\'">\n                <md-button ng-click="vm.showPredictiveQueueCampaignInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n                  Show Predictive Info\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MOTIONDIALER.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelAccount">\n\n        <div ng-messages="openchannelAccountForm[\'name\'].$error" ng-show="openchannelAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="openchannelAccountForm[\'key\'].$error" ng-show="openchannelAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n        <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n        <div ng-messages="openchannelAccountForm[\'replyUri\'].$error" ng-show="openchannelAccountForm[\'replyUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n        <div ng-messages="openchannelAccountForm[\'ListId\'].$error" ng-show="openchannelAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelAccount.description">\n\n        <div ng-messages="openchannelAccountForm[\'description\'].$error" ng-show="openchannelAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelAccount" ng-click="vm.saveOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid || openchannelAccountForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelAccount" ng-click="vm.addNewOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELACCOUNT" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n          ADD OPENCHANNELACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelAccount" ng-click="vm.deleteOpenchannelAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",'<md-dialog class="openchannelAccount-dialog" aria-label="openchannelAccount" ng-init="vm.onInit()">\n  <form name="openchannelAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">Add Agent to openchannelAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/agent/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'agent\'].$error" ng-show="openchannelAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'accesskeyid\'].$error" ng-show="openchannelAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'secretaccesskey\'].$error" ng-show="openchannelAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'lexregion\'].$error" ng-show="openchannelAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'botname\'].$error" ng-show="openchannelAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'times\'].$error" ng-show="openchannelAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'text\'].$error" ng-show="openchannelAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/close/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'disposition\'].$error" ng-show="openchannelAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'key\'].$error" ng-show="openchannelAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'projectId\'].$error" ng-show="openchannelAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'clientEmail\'].$error" ng-show="openchannelAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'privateKey\'].$error" ng-show="openchannelAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'condition\'].$error" ng-show="openchannelAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'truepriority\'].$error" ng-show="openchannelAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'falsepriority\'].$error" ng-show="openchannelAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'priority\'].$error" ng-show="openchannelAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/noop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'value\'].$error" ng-show="openchannelAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/queue/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'queue\'].$error" ng-show="openchannelAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/system/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'command\'].$error" ng-show="openchannelAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'variable\'].$error" ng-show="openchannelAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/tag/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'tag\'].$error" ng-show="openchannelAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",'<md-dialog class="openchannelCannedAnswer-dialog" aria-label="New OpenchannelCannedAnswer">\n  <form name="openchannelCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.openchannelCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'key\'].$error" ng-show="openchannelCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.openchannelCannedAnswer.value" required></textarea>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'value\'].$error" ng-show="openchannelCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelCannedAnswer.description">\n\n        <div ng-messages="openchannelCannedAnswerForm[\'description\'].$error" ng-show="openchannelCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelCannedAnswer" ng-click="vm.saveOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid || openchannelCannedAnswerForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelCannedAnswer" ng-click="vm.addNewOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n          ADD OPENCHANNELCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelCannedAnswer" ng-click="vm.deleteOpenchannelCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",'<div id="openchannel-openchannelAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelAccounts-button md-icon-button" aria-label="Go to openchannelAccounts" ng-click="vm.gotoOpenchannelAccounts()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelAccount-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelAccount.id}}\n            <span ng-if="vm.openchannelAccount.name">{{vm.openchannelAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (openchannelDispositionsForm.$invalid) || (openchannelCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n                <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n                <div ng-messages="generalForm[\'replyUri\'].$error" ng-show="generalForm[\'replyUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.openchannelAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.MAPKEY">MapKey</label>\n                <md-select name="mapKey" ng-model="vm.openchannelAccount.mapKey" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">None</md-option>\n                  <md-optgroup label="standard">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="!mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                  <md-optgroup label="custom">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                </md-select>\n                <div ng-messages="generalForm[\'mapKey\'].$error" ng-show="generalForm[\'mapKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MAPKEY_REQUIRED">MapKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.RECEIVEURI">receiveUri</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUri" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUri" name="receiveUri" ng-value="vm.location + \'/api/openchannel/accounts/\' + vm.openchannelAccount.id + \'/notify\'" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.RECEIVEURI"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="OPENCHANNEL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.openchannelAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.queueTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.openchannelAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.agentTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.openchannelAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.openchannelAccount.token" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.TOKEN"></span></div>\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.mandatoryDisposition" class="md-block">\n                <label translate="OPENCHANNEL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.openchannelAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="OpenchannelAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="openchannelAccount-detail-form-container openchanneldispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="OPENCHANNEL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add openchannel dispositions" translate translate-attr-label="OPENCHANNEL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="openchannelAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container openchannelcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountOpenchannelCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.OPENCHANNELCANNEDANSWERS">OpenchannelCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event)" aria-label="add openchannelCannedAnswer" translate translate-attr-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length}} {{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountOpenchannelCannedAnswers" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'OPENCHANNEL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'OPENCHANNEL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="openchannelCannedAnswer" md-select-id="id" ng-repeat="openchannelCannedAnswer in vm_dc.openchannelAccountOpenchannelCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{ openchannelCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" translate="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER">\n                                Edit OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(openchannelCannedAnswer, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELCANNEDANSWER">\n                                Delete OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountOpenchannelCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_OPENCHANNELCANNEDANSWER_AVAILABLE">No openchannelcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountOpenchannelCannedAnswers.count}}" md-on-paginate="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.openchannelAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="OPENCHANNEL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedOpenchannelAccountApps.length}} {{vm_ac.selectedOpenchannelAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedOpenchannelAccountApps($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedOpenchannelAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.openchannelAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editOpenchannelAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.openchannelAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getOpenchannelAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getOpenchannelAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="OPENCHANNEL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountInteractions.length}} {{vm_dc.selectedOpenchannelAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountInteractions" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'OPENCHANNEL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'OPENCHANNEL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'OPENCHANNEL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'OPENCHANNEL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'OPENCHANNEL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.openchannelAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'OPENCHANNEL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'OPENCHANNEL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyopenchannelInteraction($event, interaction)" translate="OPENCHANNEL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="OPENCHANNEL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountInteractions.count}}" md-on-paginate="vm_dc.getOpenchannelAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",'<div id="openchannelAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELACCOUNTS">OpenchannelAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelAccounts-count">\n          <span>{{vm.selectedOpenchannelAccounts.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelAccounts" csv-label="true" filename="openchannelAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelAccounts($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'OPENCHANNEL.KEY\' | translate }}</th>\n                <th md-column md-order-by="replyUri">{{ \'OPENCHANNEL.REPLYURI\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'OPENCHANNEL.LIST\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelAccount" md-select-id="id" ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n                <td md-cell ng-if="openchannelAccount.userpic"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="api/users/{{openchannelAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="id ">{{openchannelAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="name ">{{openchannelAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="key ">{{openchannelAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="replyUri ">{{openchannelAccount.replyUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':openchannelAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="description ">{{openchannelAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelAccount, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT">\n                          Edit OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(openchannelAccount, $event    )" translate="OPENCHANNEL.INTERACTIONS_OPENCHANNELACCOUNT">\n                          Interactions OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelAccount, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">\n                          AgentAdd OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelAccount, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELACCOUNT">\n                          Delete OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelAccounts.count}}" md-on-paginate="vm.getOpenchannelAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelAccount-button" ng-click="vm.createOrEditOpenchannelAccount($event)" aria-label="add openchannelAccount" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",'<md-dialog class="openchannelQueue-dialog" aria-label="New OpenchannelQueue">\n  <form name="openchannelQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelQueue">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n        <div ng-messages="openchannelQueueForm[\'name\'].$error" ng-show="openchannelQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="openchannelQueueForm[\'strategy\'].$error" ng-show="openchannelQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="openchannelQueueForm[\'timeout\'].$error" ng-show="openchannelQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelQueue.description">\n\n        <div ng-messages="openchannelQueueForm[\'description\'].$error" ng-show="openchannelQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelQueue" ng-click="vm.saveOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid || openchannelQueueForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelQueue" ng-click="vm.addNewOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELQUEUE" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n          ADD OPENCHANNELQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelQueue" ng-click="vm.deleteOpenchannelQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">Add Agent to openchannelQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/view.html",'<div id="openchannel-openchannelQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelQueues-button md-icon-button" aria-label="Go to openchannelQueues" ng-click="vm.gotoOpenchannelQueues()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelQueue-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelQueue.id}}\n            <span ng-if="vm.openchannelQueue.name">{{vm.openchannelQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.openchannelQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",'<div id="openchannelQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELQUEUES">OpenchannelQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelQueues-count">\n          <span>{{vm.selectedOpenchannelQueues.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelQueues()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelQueues()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelQueues" csv-label="true" filename="openchannelQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelQueues($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- OPENCHANNELQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'OPENCHANNEL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelQueue" md-select-id="id" ng-repeat="openchannelQueue in vm.openchannelQueues.rows">\n                <td md-cell ng-if="openchannelQueue.userpic"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="api/users/{{openchannelQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="id ">{{openchannelQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="name ">{{openchannelQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="strategy ">{{ vm.arraystrategy[openchannelQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelQueue, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELQUEUE">\n                          Edit OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE">\n                          teamadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">\n                          agentadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelQueue, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELQUEUE">\n                          Delete OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(openchannelQueue, $event    )" translate="OPENCHANNEL.GOTOREALTIME_OPENCHANNELQUEUE">\n                          goToRealtime OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelQueues.count}}" md-on-paginate="vm.getOpenchannelQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelQueue-button" ng-click="vm.createOrEditOpenchannelQueue($event)" aria-label="add openchannelQueue" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'OPENCHANNEL.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'OPENCHANNEL.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'OPENCHANNEL.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'OPENCHANNEL.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'OPENCHANNEL.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'OPENCHANNEL.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'OPENCHANNEL.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'OPENCHANNEL.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'OPENCHANNEL.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'OPENCHANNEL.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"OPENCHANNEL.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"OPENCHANNEL.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"OPENCHANNEL.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"OPENCHANNEL.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"OPENCHANNEL.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"OPENCHANNEL.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"OPENCHANNEL.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"OPENCHANNEL.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'OPENCHANNEL.PAGE' | translate}}:', rowsPerPage: '{{'OPENCHANNEL.ROWSPERPAGE' | translate}}:', of: '{{'OPENCHANNEL.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/openchannel/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="OPENCHANNEL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="OPENCHANNEL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/openchannel/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.AITOOLS">AiTools</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAiTools =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cloudProviders-count">\n          <span>{{vm.selectedAiTools.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAiTools()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAiTools()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAiTools" csv-label="true" filename="cloudProviders.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedAiTools($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CLOUDPROVIDER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAiTools" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAiTools">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SETTINGS.NAME\' | translate }}</th>\n                <th md-column md-order-by="service">{{ \'SETTINGS.SERVICE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cloudProviders.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cloudProvider" md-select-id="id" ng-repeat="cloudProvider in vm.cloudProviders.rows">\n                <td md-cell ng-if="cloudProvider.userpic"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="api/users/{{cloudProvider.id}}/avatar" /></td>\n                <td md-cell ng-if="!cloudProvider.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cloudProvider.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="id ">{{cloudProvider.id}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="name ">{{cloudProvider.name}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="service ">{{ vm.arrayservice[cloudProvider.service].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event    )" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event    )" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cloudProviders.count}}" md-on-paginate="vm.getAiTools" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CLOUDPROVIDER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CLOUDPROVIDER BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-cloudProvider-button" ng-click="vm.createOrEditCloudProvider($event)" aria-label="add cloudProvider" translate translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CLOUDPROVIDER BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/create/dialog.html",'<md-dialog class="cloudProvider-dialog" aria-label="New CloudProvider">\n  <form name="cloudProviderForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.cloudProvider.name" ng-required="true" autofocus>\n\n        <div ng-messages="cloudProviderForm[\'name\'].$error" ng-show="cloudProviderForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SERVICE">Service</label>\n        <md-select name="service" ng-model="vm.cloudProvider.service" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'service\'].$error" ng-show="cloudProviderForm[\'service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.ACCESSKEY">AccessKey</label>\n        <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCESSKEY_REQUIRED">AccessKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.SECRETACCESSKEY">SecretAccesskey</label>\n        <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SECRETACCESSKEY_REQUIRED">SecretAccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newCloudProvider" ng-click="vm.saveCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid || cloudProviderForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newCloudProvider" ng-click="vm.addNewCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CLOUDPROVIDER" translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n          ADD CLOUDPROVIDER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteCloudProvider($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/create/dialog.html",'<md-dialog class="customization-dialog" aria-label="New Customization">\n  <form name="customizationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n        <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n        <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n        <div ng-messages="customizationForm[\'headerWhiteLabel\'].$error" ng-show="customizationForm[\'headerWhiteLabel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n        <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n        <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n        <div ng-messages="customizationForm[\'pageTitle\'].$error" ng-show="customizationForm[\'pageTitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.license.preferred" class="md-block">\n        <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomization" ng-click="vm.saveCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid || customizationForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomization" ng-click="vm.addNewCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CUSTOMIZATION" translate-attr-aria-label="SETTINGS.ADD_CUSTOMIZATION">\n          ADD CUSTOMIZATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomization" ng-click="vm.deleteCustomization($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/customizations.html",'<div id="customizations" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CUSTOMIZATIONS">Customizations</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomization()" ng-disabled="(customizationsForm.$pristine && logoForm.$pristine && logologinForm.$pristine && preferredForm.$pristine && faviconForm.$pristine) || (customizationsForm.$invalid || logoForm.$invalid || logologinForm.$invalid || preferredForm.$invalid || faviconForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="customization-detail-form-container customizations md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.CUSTOMIZATIONS">CUSTOMIZATIONS</div>\n        </div>\n        <form name="customizationsForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n            <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n            <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'headerWhiteLabel\'].$error" ng-show="customizationsForm[\'headerWhiteLabel\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n            <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n            <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'pageTitle\'].$error" ng-show="customizationsForm[\'pageTitle\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.license.preferred" class="md-block">\n            <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="!vm.customization.defaultLogo" class="customization-detail-form-container logo md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGO">LOGO</div>\n        </div>\n        <div ng-controller="CustomizationlogoController as vm_cl" ng-init="vm_cl.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cl.ngFlowOptions" flow-name="vm_cl.ngFlow.flow" flow-files-submitted="vm_cl.upload()" flow-file-added="vm_cl.fileAdded($file)" flow-file-success="vm_cl.fileSuccess($file, $message)" flow-complete="vm_cl.uploadComplete()" flow-drop flow-drag-enter="vm_cl.dropping=true" flow-drag-leave="vm_cl.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logoimage in vm_cl.customization.images" ng-switch="logoimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logoimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logoimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultLoginLogo" class="customization-detail-form-container logologin md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGOLOGIN">LOGOLOGIN</div>\n        </div>\n        <div ng-controller="CustomizationlogologinController as vm_cll" ng-init="vm_cll.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cll.ngFlowOptions" flow-name="vm_cll.ngFlow.flow" flow-files-submitted="vm_cll.upload()" flow-file-added="vm_cll.fileAdded($file)" flow-file-success="vm_cll.fileSuccess($file, $message)" flow-complete="vm_cll.uploadComplete()" flow-drop flow-drag-enter="vm_cll.dropping=true" flow-drag-leave="vm_cll.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logologinimage in vm_cll.customization.images" ng-switch="logologinimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logologinimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logologinimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logologinimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultPreferred && vm.license.preferred" class="customization-detail-form-container preferred md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.PREFERRED">PREFERRED</div>\n        </div>\n        <div ng-controller="CustomizationpreferredController as vm_cp" ng-init="vm_cp.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cp.ngFlowOptions" flow-name="vm_cp.ngFlow.flow" flow-files-submitted="vm_cp.upload()" flow-file-added="vm_cp.fileAdded($file)" flow-file-success="vm_cp.fileSuccess($file, $message)" flow-complete="vm_cp.uploadComplete()" flow-drop flow-drag-enter="vm_cp.dropping=true" flow-drag-leave="vm_cp.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="preferredimage in vm_cp.customization.images" ng-switch="preferredimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{preferredimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="preferredimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{preferredimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultFavicon" class="customization-detail-form-container favicon md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.FAVICON">FAVICON</div>\n        </div>\n        <div ng-controller="CustomizationfaviconController as vm_cf" ng-init="vm_cf.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cf.ngFlowOptions" flow-name="vm_cf.ngFlow.flow" flow-files-submitted="vm_cf.upload()" flow-file-added="vm_cf.fileAdded($file)" flow-file-success="vm_cf.fileSuccess($file, $message)" flow-complete="vm_cf.uploadComplete()" flow-drop flow-drag-enter="vm_cf.dropping=true" flow-drag-leave="vm_cf.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG, ICO - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="faviconimage in vm_cf.customization.images" ng-switch="faviconimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{faviconimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="faviconimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{faviconimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/generals/create/dialog.html",'<md-dialog class="general-dialog" aria-label="New General">\n  <form name="generalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGeneral" ng-click="vm.saveGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid || generalForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGeneral" ng-click="vm.addNewGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_GENERAL" translate-attr-aria-label="SETTINGS.ADD_GENERAL">\n          ADD GENERAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGeneral" ng-click="vm.deleteGeneral($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/generals/generals.html",'<div id="generals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.GENERAL">General</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveGeneral()" ng-disabled="(globalForm.$pristine && motionbarForm.$pristine && reportForm.$pristine && agentOmniDesktopInterfaceForm.$pristine && screenRecordingForm.$pristine && securityForm.$pristine && imapGeneralSettingsForm.$pristine && SSOForm.$pristine && aiToolsForm.$pristine) || (globalForm.$invalid || motionbarForm.$invalid || reportForm.$invalid || agentOmniDesktopInterfaceForm.$invalid || screenRecordingForm.$invalid || securityForm.$invalid || imapGeneralSettingsForm.$invalid || SSOForm.$invalid || aiToolsForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="general-detail-form-container global md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GLOBAL">GLOBAL</div>\n        </div>\n        <form name="globalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MIN_INTERNAL">Min_Internal</label>\n            <input type="number" name="min_internal" ng-model="vm.general.min_internal" min="0" value="1000" ng-required="true" autofocus>\n\n            <div ng-messages="globalForm[\'min_internal\'].$error" ng-show="globalForm[\'min_internal\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_REQUIRED">Min_Internal field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Min_Internal must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHATTIMEOUT">chatTimeout</label>\n            <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" value="30" ng-required="true">\n\n            <div ng-messages="globalForm[\'chatTimeout\'].$error" ng-show="globalForm[\'chatTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_REQUIRED">chatTimeout field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">chatTimeout must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.rtlSupport" aria-label="RtlSupport"><span translate="SETTINGS.RTLSUPPORT">RtlSupport</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.RTLSUPPORT"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.stopRecordingOnTransfer" aria-label="Stop_Recording_On_Voice_Call_Transfer"><span translate="SETTINGS.STOP_RECORDING_ON_VOICE_CALL_TRANSFER">Stop_Recording_On_Voice_Call_Transfer</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container motionbar md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.MOTIONBAR">MOTIONBAR</div>\n        </div>\n        <form name="motionbarForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarAutoUpdater" aria-label="MotionbarAutoUpdater"><span translate="SETTINGS.MOTIONBARAUTOUPDATER">MotionbarAutoUpdater</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.phoneBarAutoUpdater" class="md-block">\n            <label translate="SETTINGS.MOTIONBARAUTOUPDATERURL">MotionbarAutoUpdaterUrl</label>\n            <input type="url" name="phoneBarAutoUpdaterUrl" ng-model="vm.general.phoneBarAutoUpdaterUrl" value="https://www.xcally.com/bar/phonebar/autoupdater.xml" ng-required="vm.general.phoneBarAutoUpdater">\n\n            <div ng-messages="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$error" ng-show="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_REQUIRED">MotionbarAutoUpdaterUrl field is required</span>\n              </div>\n              <div ng-message="url">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_MUST_VALID_URL">MotionbarAutoUpdaterUrl must be a valid url http://www.xcally.com</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarRememberMeEnabled" aria-label="MotionbarRememberMe"><span translate="SETTINGS.MOTIONBARREMEMBERME">MotionbarRememberMe</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.MOTIONBARREMEMBERME"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container report md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.REPORT">REPORT</div>\n        </div>\n        <form name="reportForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.split" aria-label="Split"><span translate="SETTINGS.SPLIT">Split</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZECSV">SplitSizeCsv</label>\n            <input type="number" name="splitSizeCsv" ng-model="vm.general.splitSizeCsv" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeCsv\'].$error" ng-show="reportForm[\'splitSizeCsv\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZECSV_REQUIRED">SplitSizeCsv field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEPDF">SplitSizePdf</label>\n            <input type="number" name="splitSizePdf" ng-model="vm.general.splitSizePdf" value="1000">\n\n            <div ng-messages="reportForm[\'splitSizePdf\'].$error" ng-show="reportForm[\'splitSizePdf\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEPDF_REQUIRED">SplitSizePdf field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEXLSX">SplitSizeXlsx</label>\n            <input type="number" name="splitSizeXlsx" ng-model="vm.general.splitSizeXlsx" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeXlsx\'].$error" ng-show="reportForm[\'splitSizeXlsx\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEXLSX_REQUIRED">SplitSizeXlsx field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container agentomnidesktopinterface md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AGENTOMNIDESKTOPINTERFACE">AGENTOMNIDESKTOPINTERFACE</div>\n        </div>\n        <form name="agentOmniDesktopInterfaceForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enableEmailPreview" aria-label="EnableEmailPreview"><span translate="SETTINGS.ENABLEEMAILPREVIEW">EnableEmailPreview</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.searchOnEnterKey" aria-label="Search_On_Enter_Key"><span translate="SETTINGS.SEARCH_ON_ENTER_KEY">Search_On_Enter_Key</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SEARCH_ON_ENTER_KEY"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MESSAGESALIGNMENT">messagesAlignment</label>\n            <md-select name="messagesAlignment" ng-model="vm.general.messagesAlignment">\n              <md-option ng-value="\'alternate\'">Alternate</md-option>\n              <md-option ng-value="\'left\'">Left</md-option>\n              <md-option ng-value="\'right\'">Right</md-option>\n            </md-select>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHAT_INTERACTIONS_RELOAD_TIMEOUT">Chat_Interactions_Reload_Timeout</label>\n            <input type="number" name="chatInteractionsReloadTimeout" ng-model="vm.general.chatInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHAT_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Chat_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MAIL_INTERACTIONS_RELOAD_TIMEOUT">Mail_Interactions_Reload_Timeout</label>\n            <input type="number" name="mailInteractionsReloadTimeout" ng-model="vm.general.mailInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MAIL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Mail_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT">Openchannel_Interactions_Reload_Timeout</label>\n            <input type="number" name="openchannelInteractionsReloadTimeout" ng-model="vm.general.openchannelInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Openchannel_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMS_INTERACTIONS_RELOAD_TIMEOUT">Sms_Interactions_Reload_Timeout</label>\n            <input type="number" name="smsInteractionsReloadTimeout" ng-model="vm.general.smsInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMS_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Sms_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT">Whatsapp_Interactions_Reload_Timeout</label>\n            <input type="number" name="whatsappInteractionsReloadTimeout" ng-model="vm.general.whatsappInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Whatsapp_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.screenrecording" class="general-detail-form-container screenrecording md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SCREENRECORDING">SCREENRECORDING</div>\n        </div>\n        <form name="screenRecordingForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DEFAULTSCREENRECORDINGPATH">defaultScreenRecordingPath</label>\n            <input type="text" name="defaultScreenRecordingPath" ng-model="vm.general.defaultScreenRecordingPath" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.DEFAULTSCREENRECORDINGPATH"></span></div>\n            <div ng-messages="screenRecordingForm[\'defaultScreenRecordingPath\'].$error" ng-show="screenRecordingForm[\'defaultScreenRecordingPath\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DEFAULTSCREENRECORDINGPATH_REQUIRED">defaultScreenRecordingPath field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container security md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SECURITY">SECURITY</div>\n        </div>\n        <form name="securityForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.securePassword" aria-label="Security_Suite"><span translate="SETTINGS.SECURITY_SUITE">Security_Suite</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SECURITY_SUITE"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.callRecordingEncryption" aria-label="Call_Recording_Encryption"><span translate="SETTINGS.CALL_RECORDING_ENCRYPTION">Call_Recording_Encryption</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ALLOWEDLOGINATTEMPTS">allowedLoginAttempts</label>\n            <input type="number" name="allowedLoginAttempts" ng-model="vm.general.allowedLoginAttempts" value="5" ng-required="true">\n\n            <div ng-messages="securityForm[\'allowedLoginAttempts\'].$error" ng-show="securityForm[\'allowedLoginAttempts\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ALLOWEDLOGINATTEMPTS_REQUIRED">allowedLoginAttempts field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BLOCKDURATION">blockDuration</label>\n            <input type="number" name="blockDuration" ng-model="vm.general.blockDuration" value="10" ng-required="true">\n\n            <div ng-messages="securityForm[\'blockDuration\'].$error" ng-show="securityForm[\'blockDuration\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BLOCKDURATION_REQUIRED">blockDuration field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enforcePasswordHistory" aria-label="Enforce_Password_History"><span translate="SETTINGS.ENFORCE_PASSWORD_HISTORY">Enforce_Password_History</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.ENFORCE_PASSWORD_HISTORY"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enforcePasswordHistory" class="md-block">\n            <label translate="SETTINGS.PASSWORD_HISTORY_LIMIT">Password_History_Limit</label>\n            <input type="number" name="passwordHistoryLimit" ng-model="vm.general.passwordHistoryLimit" min="2" max="5" value="3">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PASSWORD_HISTORY_LIMIT"></span></div>\n            <div ng-messages="securityForm[\'passwordHistoryLimit\'].$error" ng-show="securityForm[\'passwordHistoryLimit\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_REQUIRED">Password_History_Limit field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>2</span>\n              </div>\n              <div ng-message="max">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>5</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'email\')" ng-model="vm.general.enablePrivacyPolicyEmail" aria-label="Privacy_Policy_Email"><span translate="SETTINGS.PRIVACY_POLICY_EMAIL">Privacy_Policy_Email</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyEmail" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyEmail" ng-model="vm.general.privacyPolicyEmail" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyEmail\'].$error" ng-show="securityForm[\'privacyPolicyEmail\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_REQUIRED">Privacy_Policy_Email field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Email must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'name\')" ng-model="vm.general.enablePrivacyPolicyName" aria-label="Privacy_Policy_Name"><span translate="SETTINGS.PRIVACY_POLICY_NAME">Privacy_Policy_Name</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyName" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyName" ng-model="vm.general.privacyPolicyName" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyName\'].$error" ng-show="securityForm[\'privacyPolicyName\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_REQUIRED">Privacy_Policy_Name field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Name must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'number\')" ng-model="vm.general.enablePrivacyPolicyNumber" aria-label="Privacy_Policy_Number"><span translate="SETTINGS.PRIVACY_POLICY_NUMBER">Privacy_Policy_Number</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyNumber" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyNumber" ng-model="vm.general.privacyPolicyNumber" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyNumber\'].$error" ng-show="securityForm[\'privacyPolicyNumber\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_REQUIRED">Privacy_Policy_Number field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Number must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container imapgeneralsettings md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.IMAPGENERALSETTINGS">IMAPGENERALSETTINGS</div>\n        </div>\n        <form name="imapGeneralSettingsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LOGINMAILFREQUENCY">loginMailFrequency</label>\n            <input type="number" name="loginMailFrequency" ng-model="vm.general.loginMailFrequency" min="10" value="10" ng-required="true" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.LOGINMAILFREQUENCY"></span></div>\n            <div ng-messages="imapGeneralSettingsForm[\'loginMailFrequency\'].$error" ng-show="imapGeneralSettingsForm[\'loginMailFrequency\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_REQUIRED">loginMailFrequency field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">loginMailFrequency must be a valid greater or equal than</span> <span>10</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container sso md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SSO">SSO</div>\n        </div>\n        <form name="SSOForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.googleSsoEnabled" aria-label="Google_SSO_enabled"><span translate="SETTINGS.GOOGLE_SSO_ENABLED">Google_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.ai" class="general-detail-form-container aitools md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AITOOLS">AITOOLS</div>\n        </div>\n        <form name="aiToolsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LANGUAGE">Language</label>\n            <md-select name="language" ng-model="vm.general.language" autofocus required>\n              <md-option ng-value="\'en-US\'">US English</md-option>\n              <md-option ng-value="\'en-AU\'">Australian English</md-option>\n              <md-option ng-value="\'en-GB\'">British English</md-option>\n              <md-option ng-value="\'en-AB\'">Scottish English</md-option>\n              <md-option ng-value="\'en-WL\'">Welsh English</md-option>\n              <md-option ng-value="\'en-IE\'">English (Ireland)</md-option>\n              <md-option ng-value="\'en-IN\'">Indian English</md-option>\n              <md-option ng-value="\'hi-IN\'">Hindi (India)</md-option>\n              <md-option ng-value="\'fr-CA\'">Canadian French</md-option>\n              <md-option ng-value="\'fr-FR\'">French</md-option>\n              <md-option ng-value="\'de-DE\'">German</md-option>\n              <md-option ng-value="\'de-CH\'">German (Switzerland)</md-option>\n              <md-option ng-value="\'it-IT\'">Italian</md-option>\n              <md-option ng-value="\'es-ES\'">Spanish</md-option>\n              <md-option ng-value="\'es-Us\'">US Spanish</md-option>\n              <md-option ng-value="\'pt-BR\'">Brazilian Portuguese</md-option>\n              <md-option ng-value="\'pt-PT\'">Portuguese(Portugal)</md-option>\n              <md-option ng-value="\'ar-SA\'">Modern Standard Arabic</md-option>\n              <md-option ng-value="\'ar-AE\'">Arabic</md-option>\n              <md-option ng-value="\'zh-CN\'">Chinese Mandarin - Mainland</md-option>\n              <md-option ng-value="\'ja-JP\'">Japanese (Japan)</md-option>\n              <md-option ng-value="\'ko-KR\'">Korean (Korea)</md-option>\n              <md-option ng-value="\'he-IL\'">Hebrew (Israel) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ms-MY\'">Malay (Malaysia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'fa-IR\'">Farsi (Iran) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ru-RU\'">Russian (Russia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'te-IN\'">Telugu(India) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ta-IN\'">Tamil - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'nl-NL\'">Dutch - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'tr-TR\'">Turkish (Turkey) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'id-ID\'">Indonesian(Indonesia) - This language is not available for the Sentiment Analysis</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'language\'].$error" ng-show="aiToolsForm[\'language\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LANGUAGE_REQUIRED">Language field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BUCKET">Bucket</label>\n            <input type="text" name="bucket" ng-model="vm.general.bucket" ng-required="true">\n\n            <div ng-messages="aiToolsForm[\'bucket\'].$error" ng-show="aiToolsForm[\'bucket\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BUCKET_REQUIRED">Bucket field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.transcribe" aria-label="Transcribe"><span translate="SETTINGS.TRANSCRIBE">Transcribe</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEREGION">TranscribeRegion</label>\n            <md-select name="transcribeRegion" ng-model="vm.general.transcribeRegion" required>\n              <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n              <md-option ng-value="\'us-east-2\'">US East (Ohio)</md-option>\n              <md-option ng-value="\'us-east-2\'">US West (N. California)</md-option>\n              <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n              <md-option ng-value="\'ap-south-1\'">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value="\'ap-east-1\'">Asia Pacific (Hong Kong)</md-option>\n              <md-option ng-value="\'ap-northeast-2\'">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value="\'ap-southeast-1\'">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value="\'ap-northeast-1\'">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value="\'ca-central-1\'">Canada (Central)</md-option>\n              <md-option ng-value="\'eu-central-1\'">Europe (Frankfurt)</md-option>\n              <md-option ng-value="\'eu-west-1\'">Europe (Ireland)</md-option>\n              <md-option ng-value="\'eu-west-2\'">Europe (London)</md-option>\n              <md-option ng-value="\'eu-west-3\'">Europe (Paris)</md-option>\n              <md-option ng-value="\'me-south-1\'">Middle East (Bahrain)</md-option>\n              <md-option ng-value="\'sa-east-1\'">South America (São Paulo)</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeRegion\'].$error" ng-show="aiToolsForm[\'transcribeRegion\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEREGION_REQUIRED">TranscribeRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEACCOUNT">TranscribeAccount</label>\n            <md-select name="transcribeAccountId" ng-model="vm.general.transcribeAccountId" required>\n              <md-option ng-value="transcribeAccountId.id" ng-repeat="transcribeAccountId in vm.cloudProviders" ng-disabled="transcribeAccountId.canSelect === false">{{ transcribeAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeAccountId\'].$error" ng-show="aiToolsForm[\'transcribeAccountId\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEACCOUNT_REQUIRED">TranscribeAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n'+"          <md-input-container ng-if=\"vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <md-switch ng-model=\"vm.general.sentiment\" aria-label=\"SentimentAnalysis\"><span translate=\"SETTINGS.SENTIMENTANALYSIS\">SentimentAnalysis</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTREGION\">SentimentRegion</label>\n            <md-select name=\"sentimentRegion\" ng-model=\"vm.general.sentimentRegion\" required>\n              <md-option ng-value=\"'us-east-1'\">US East (N. Virginia)</md-option>\n              <md-option ng-value=\"'us-east-2'\">US East (Ohio)</md-option>\n              <md-option ng-value=\"'us-west-2'\">US West (Oregon)</md-option>\n              <md-option ng-value=\"'ap-south-1'\">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value=\"'ap-northeast-2'\">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value=\"'ap-southeast-1'\">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value=\"'ap-southeast-2'\">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value=\"'ap-northeast-1'\">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value=\"'ca-central-1'\">Canada (Central)</md-option>\n              <md-option ng-value=\"'eu-central-1'\">Europe (Frankfurt)</md-option>\n              <md-option ng-value=\"'eu-west-1'\">Europe (Ireland)</md-option>\n              <md-option ng-value=\"'eu-west-2'\">Europe (London)</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentRegion'].$error\" ng-show=\"aiToolsForm['sentimentRegion'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTREGION_REQUIRED\">SentimentRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTACCOUNT\">SentimentAccount</label>\n            <md-select name=\"sentimentAccountId\" ng-model=\"vm.general.sentimentAccountId\" required>\n              <md-option ng-value=\"sentimentAccountId.id\" ng-repeat=\"sentimentAccountId in vm.cloudProviders\" ng-disabled=\"sentimentAccountId.canSelect === false\">{{ sentimentAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentAccountId'].$error\" ng-show=\"aiToolsForm['sentimentAccountId'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTACCOUNT_REQUIRED\">SentimentAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/license.html",'<div id="license" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.LICENSE">LICENSE</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    \x3c!-- <div>\n                <md-button type="submit" ng-click="vm.requestLicense()" class="send-button md-raised" translate="SETTINGS.REQUEST_LICENSE" translate-attr-aria-label="SETTINGS.REQUEST_LICENSE">\n                    REQUEST LICENSE\n                </md-button>\n            </div> --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- LICENSE CARD --\x3e\n      <div layout="row" flex>\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="row" layout-align="center">\n            <div flex layout="row" layout-align="start center">\n              <div ng-if="!vm.license.custom">\n                <a href="https://www.xcally.com/plans.html" target="_blank" class="md-button md-fab green-A700-bg" aria-label="Eat cake">\n                  <md-tooltip><span translate="SETTINGS.PRICES">Prices</span></md-tooltip>\n                  <md-icon md-font-icon="icon-coin"></md-icon>\n                </a>\n              </div>\n            </div>\n            <div flex>\n              <div ng-switch="vm.license.months" class="text-center">\n                <span ng-switch-when="1" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></span>\n                <span ng-switch-when="12" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.ANNUALLY">ANNUALLY</span></span>\n                <span ng-switch-when="36" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.PERPETUAL">PERPETUAL</span></span>\n              </div>\n            </div>\n            <div flex layout="row" layout-align="end center">\n              <div>\n                <md-button type="submit" ng-click="vm.updateLicense()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.UPDATE_LICENSE">License</span></md-tooltip>\n                  <md-icon md-font-icon="icon-pencil"></md-icon>\n                </md-button>\n              </div>\n            </div>\n          </div>\n\n          <span ng-if="!vm.license.demo && !vm.license.gray && vm.license.months != 36" class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_DATE\' | translate }}: {{vm.license.expiration | date: \'longDate\'}}</span>\n          <span class="text-center padding-bottom-10"> {{ vm.license.machineUuid !== vm.license.uuid ? \'SETTINGS.OLD_TOKEN\' : \'SETTINGS.TOKEN\' | translate }}: <span class="text-italic text-bold">{{vm.license.uuid}}</span></span>\n\n          <div layout="column">\n            <span ng-if="vm.license.grayReason == \'changed\'" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.NEW_TOKEN_DETECTED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.NEW_TOKEN\' | translate }}: <span class="text-italic text-bold">{{vm.license.machineUuid}}</span></span>\n            <span ng-if="vm.license.gray" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_GRAY_PERIOD\' | translate }}: {{vm.license.deadline | date: \'longDate\'}}</span>\n            <span ng-if="vm.license.gray" class="text-center padding-bottom-10 text-italic text-bold"> {{\'SETTINGS.EXPIRATION_REASON\' | translate }} </span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_DISABLED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_CHANGED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_CHANGED_ADVISE\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, New Token: {{vm.license.machineUuid}}, Old token: {{vm.license.uuid}}">license@xcally.com</a>.</span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=License%20disabled&body=Hi xCALLY, My Token: {{vm.license.machineUuid}}">license@xcally.com</a>.</span>\n          </div>\n\n          <div ng-if="vm.license.demo" layout="column">\n            <span class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.TRIAL_VERSION\' | translate }}</span>\n            <span class="md-subhead md-warn-fg text-center"><a href="https://www.xcally.com/en/index.html#pricing-table2-h" target="_blank">{{ \'SETTINGS.PRICES\' | translate}}</a></span>\n          </div>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-account" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.users || 0 }} <span ng-class="{\'red-fg\': vm.license.users <= vm.users && vm.license.users > 0}">({{vm.license.users >= vm.users ? vm.users : vm.license.users}})</span></h3>\n                <p translate="SETTINGS.USERS">Users</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-headphones" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.agents || 0 }} <span ng-class="{\'red-fg\': (vm.license.agents <= vm.agents && vm.license.agents > 0) }">({{vm.license.agents >= vm.agents ? vm.agents : vm.license.agents}})</span></h3>\n                <p translate="SETTINGS.AGENTS">Agents</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-phone" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.telephones || 0 }} <span ng-class="{\'red-fg\': vm.license.telephones <= vm.telephones && vm.license.telephones > 0}">({{vm.license.telephones >= vm.telephones ? vm.telephones : vm.license.telephones}})</span></h3>\n                <p translate="SETTINGS.TELEPHONES">Telephones</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:6">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="module in vm.modules" flex="33">\n              <md-icon md-font-icon="{{module.icon}}" class="md-avatar-icon" ng-class="vm.license[module.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{module.name | uppercase}}"></h3>\n                <p ng-class="vm.license[module.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[module.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <div ng-repeat="session in vm.sessions" flex="33">\n              <md-list-item class="md-2-line">\n                <md-icon md-font-icon="{{session.icon}}" class="md-avatar-icon" ng-class="vm.license[session.enabled] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n                <div class="md-list-item-text">\n                  <div layout="row" layout="start center">\n                    <h3 translate="SETTINGS.{{session.name | uppercase}}"></h3>\n                    <button ng-if="session.restart" ng-click="vm.gotoProcess($event)" class="md-mini" aria-label="restart">\n                      <md-tooltip>Restart</md-tooltip>\n                      <md-icon md-font-icon="icon-reload"></md-icon>\n                    </button>\n                  </div>\n                  <p ng-if="vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">{{vm.license[session.name]}} {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">UNLIMITED {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.enabled]" class="red-A700-fg">{{ \'SETTINGS.DISABLED\' | translate }}</p>\n                </div>\n              </md-list-item>\n\n            </div>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n                <p ng-class="vm.license[other.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[other.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n'+"                <p ng-class=\"vm.license[other.name] ? 'green-A700-fg' : 'red-A700-fg'\">{{ 'SETTINGS.' + (vm.license[other.name] ? 'ENABLED' : 'DISABLED') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n        </md-card>\n      </div>\n      \x3c!-- / LICENSE CARD --\x3e\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/request/dialog.html",'<md-dialog class="request-dialog" aria-label="Send Request">\n  <form name="requestForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.REQUEST_LICENSE">Request License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.license.name" required>\n        <div ng-messages="requestForm.name.$error" ng-show="requestForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.license.email" required>\n        <div ng-messages="requestForm.email.$error" ng-show="requestForm.email.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.PLAN">Plan</label>\n        <md-select name="plan" ng-model="vm.license.months" required>\n          <md-option ng-value="1"><span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></md-option>\n          <md-option ng-value="12"><span translate="SETTINGS.ANNUALLY">ANNUALLY</span></md-option>\n          <md-option ng-value="36"><span translate="SETTINGS.PERPETUAL">PERPETUAL</span></md-option>\n        </md-select>\n        <div ng-messages="requestForm.plan.$error" ng-show="requestForm.plan.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PLAN_REQUIRED">Plan field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.USERS">Users</label>\n          <input type="number" name="users" ng-model="vm.license.users" required>\n          <div ng-messages="requestForm.users.$error" ng-show="requestForm.users.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.USERS_REQUIRED">Users field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.AGENTS">Agents</label>\n          <input type="number" name="agents" ng-model="vm.license.agents" required>\n          <div ng-messages="requestForm.agents.$error" ng-show="requestForm.agents.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.AGENTS_REQUIRED">Agents field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.TELEPHONES">Telephones</label>\n          <input type="number" name="telephones" ng-model="vm.license.telephones" required>\n          <div ng-messages="requestForm.telephones.$error" ng-show="requestForm.telephones.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.TELEPHONES_REQUIRED">Telephones field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[module.name]" aria-label="{{module.name}}" ng-repeat="module in vm.modules"><span translate="SETTINGS.{{module.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n      <div layout="row">\n        <md-input-container ng-repeat="session in vm.sessions" class="md-block" flex="50">\n          <label>{{ \'SETTINGS.\' + session.name | uppercase | translate }} ({{ \'SETTINGS.\' + session.label | uppercase | translate }})</label>\n          <input type="number" name="{{session.name}}" ng-model="vm.license[session.name]" required>\n          <div class="hint"><span>0={{ \'SETTINGS.UNLIMITED_CHANNELS\' | translate }}</span></div>\n          <div ng-messages="requestForm[session.name].$error" ng-show="requestForm[session.name].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.CHANNEL_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[addon.name]" aria-label="{{module.name}}" ng-repeat="addon in vm.addons"><span translate="SETTINGS.{{addon.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[other.name]" aria-label="{{other.name}}" ng-repeat="other in vm.others"><span translate="SETTINGS.{{other.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <textarea name="description" ng-model="vm.license.description"></textarea>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.sendRequest()" class="send-button md-accent md-raised" ng-disabled="requestForm.$invalid || requestForm.$pristine" aria-label="SEND" translate="SETTINGS.SEND" translate-attr-aria-label="SETTINGS.SEND">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/license/update/dialog.html",'<md-dialog class="update-dialog" aria-label="Update License">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.UPDATE_LICENSE">Update License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-content layout="row">\n        <span class="md-title" translate="SETTINGS.UPDATE_LICENSE_MANUALLY">Do you want to update your license manually?</span>\n      </md-content>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ENTER_LICENSE">Enter your license</label>\n        <textarea name="key" ng-model="vm.licenseKey" required></textarea>\n        <div ng-messages="updateForm.name.$error" ng-show="updateForm.key.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LICENSE_REQUIRED">License key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.updateLicense()" class="send-button md-accent md-raised" ng-disabled="updateForm.$invalid || updateForm.$pristine" aria-label="UPDATE" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/create/dialog.html",'<md-dialog class="network-dialog" aria-label="New Network">\n  <form name="networkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.network.type" autofocus required>\n          <md-option ng-value="\'localnet\'">LocalNET</md-option>\n          <md-option ng-value="\'externip\'">ExternIP</md-option>\n          <md-option ng-value="\'turn\'">Turn</md-option>\n          <md-option ng-value="\'stun\'">Stun</md-option>\n        </md-select>\n        <div ng-messages="networkForm[\'type\'].$error" ng-show="networkForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'localnet\'" class="md-block">\n        <label translate="SETTINGS.LOCALNETADDRESS">localNetAddress</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.LOCALNETADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_REQUIRED">localNetAddress field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">localNetAddress must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'externip\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.ADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.ADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">Address must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\' || vm.network.type == \'stun\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-required="true">\n\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.network.username" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.USERNAME"></span></div>\n        <div ng-messages="networkForm[\'username\'].$error" ng-show="networkForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.PASSWORD">Password</label>\n        <input type="text" name="password" ng-model="vm.network.password" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.PASSWORD"></span></div>\n        <div ng-messages="networkForm[\'password\'].$error" ng-show="networkForm[\'password\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newNetwork" ng-click="vm.saveNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid || networkForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newNetwork" ng-click="vm.addNewNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_NETWORK" translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n          ADD NETWORK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteNetwork($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/networks.html",'<div id="networks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.NETWORKS">Networks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedNetworks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedNetworks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-networks-count">\n          <span>{{vm.selectedNetworks.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllNetworks()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectNetworks()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedNetworks" csv-label="true" filename="networks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedNetworks($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- NETWORK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedNetworks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getNetworks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SETTINGS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'SETTINGS.ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'SETTINGS.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.networks.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="network" md-select-id="id" ng-repeat="network in vm.networks.rows">\n                <td md-cell ng-if="network.userpic"><img class="avatar" alt="{{network.name}}" ng-src="api/users/{{network.id}}/avatar" /></td>\n                <td md-cell ng-if="!network.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{network.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="id ">{{network.id}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="type ">{{ vm.arraytype[network.type].option }}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="value ">{{network.value}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="createdAt ">{{network.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(network, $event    )" translate="SETTINGS.EDIT_NETWORK">\n                          Edit Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(network, $event    )" translate="SETTINGS.DELETE_NETWORK">\n                          Delete Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.networks.count}}" md-on-paginate="vm.getNetworks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / NETWORK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD NETWORK BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-network-button" ng-click="vm.createOrEditNetwork($event)" aria-label="add network" translate translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD NETWORK BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/smtps/create/dialog.html",'<md-dialog class="smtp-dialog" aria-label="New Smtp">\n  <form name="smtpForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n        <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n        <div ng-messages="smtpForm[\'name\'].$error" ng-show="smtpForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCOUNTNAME_REQUIRED">AccountName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAILADDRESS">EmailAddress</label>\n        <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="smtpForm[\'email\'].$error" ng-show="smtpForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SMTP_SERVICE">SMTP_Service</label>\n        <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n          <md-option ng-value="null">Custom</md-option>\n          <md-option ng-value="\'gmail\'">Gmail</md-option>\n          <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n          <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n          <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n        </md-select>\n        <div ng-messages="smtpForm[\'Smtp.service\'].$error" ng-show="smtpForm[\'Smtp.service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n        <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n        <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n        <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n        <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n        <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n        <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n        <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n        <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n        <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n        <input type="password" name="Smtp.pass" ng-model="vm.smtp.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n        <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n        <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.smtp.description">\n\n        <div ng-messages="smtpForm[\'description\'].$error" ng-show="smtpForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmtp" ng-click="vm.saveSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid || smtpForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmtp" ng-click="vm.addNewSmtp()" class="send-button md-accent md-raised" ng-disabled="smtpForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_SMTP" translate-attr-aria-label="SETTINGS.ADD_SMTP">\n          ADD SMTP\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmtp" ng-click="vm.deleteSmtp($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/smtps/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SMTP">Smtp</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.smtp.id" class="send-button md-accent md-raised" translate="SETTINGS.VERIFY" translate-attr-aria-label="SETTINGS.VERIFY">\n        VERIFY\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveSmtp()" ng-disabled="(generalForm.$pristine) || (generalForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      <div class="smtp-detail-form-container general md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GENERAL">GENERAL</div>\n        </div>\n        <form name="generalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">AccountName</label>\n            <input type="text" name="name" ng-model="vm.smtp.name" ng-required="true" autofocus>\n\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ACCOUNTNAME_REQUIRED">AccountName field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.EMAILADDRESS">EmailAddress</label>\n            <input type="email" name="email" ng-model="vm.smtp.email" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n            <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.EMAILADDRESS_MUST_VALID">EmailAddress must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMTP_SERVICE">SMTP_Service</label>\n            <md-select name="Smtp.service" ng-model="vm.smtp.Smtp.service" required>\n              <md-option ng-value="null">Custom</md-option>\n              <md-option ng-value="\'gmail\'">Gmail</md-option>\n              <md-option ng-value="\'hotmail\'">Hotmail</md-option>\n              <md-option ng-value="\'yahoo\'">Yahoo</md-option>\n              <md-option ng-value="\'outlook365\'">Outlook365</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'Smtp.service\'].$error" ng-show="generalForm[\'Smtp.service\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_SERVICE_REQUIRED">SMTP_Service field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_HOST">SMTP_Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.smtp.Smtp.host" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.host\'].$error" ng-show="generalForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <label translate="SETTINGS.SMTP_PORT">SMTP_Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.smtp.Smtp.port" value="465" ng-required="true">\n\n            <div ng-messages="generalForm[\'Smtp.port\'].$error" ng-show="generalForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.secure" aria-label="SMTP_Secure"><span translate="SETTINGS.SMTP_SECURE">SMTP_Secure</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.service == null" class="md-block">\n            <md-switch ng-model="vm.smtp.Smtp.authentication" aria-label="SMTP_Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">SMTP_Authentication</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null" class="md-block">\n            <label translate="SETTINGS.SMTP_USERNAME">SMTP_Username</label>\n            <input type="text" name="Smtp.user" ng-model="vm.smtp.Smtp.user" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n            <div ng-messages="generalForm[\'Smtp.user\'].$error" ng-show="generalForm[\'Smtp.user\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMTP_USERNAME_REQUIRED">SMTP_Username field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.smtp.Smtp.authentication == true || vm.smtp.Smtp.service != null">\n            <label translate="SETTINGS.SMTP_PASSWORD">SMTP_Password</label>\n            <input type="password" name="Smtp.pass" ng-model="vm.smtp.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n            <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n            <div ng-messages="generalForm[\'Smtp.pass\'].$error" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n              </div>\n              <div ng-message="pattern">\n                <span translate="SETTINGS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.smtp.description">\n\n            <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/system/system.html",'<div id="system" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SYSTEM">SYSTEM</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" md-border-bottom flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.GENERAL">GENERAL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget flex="50" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg">\n                    <div class="h3">OS</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{vm.system.system.manufacturer}} {{vm.system.system.model}}</div>\n                        <div class="h4">{{vm.system.cpu.manufacturer}} {{vm.system.cpu.brand}} - {{vm.system.cpu.speed}} GHz - {{vm.system.cpu.cores}} Cores</div>\n                        <div class="h4">{{vm.system.os.distro}} - {{vm.system.os.release}} - Kernel: {{vm.system.os.kernel}}</div>\n                        <div class="h4">Node.js: {{vm.system.node}}</div>\n                        <div class="h4">Host: {{vm.system.os.hostname}} - Uptime: {{vm.system.time.uptime / 60 | number:0}} m</div>\n                        <div class="h4">TimeZone: {{vm.system.time.timezone}} ({{vm.system.time.timezoneName}})</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-1">\n                    <div class="h3">CPU</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.AVG_LOAD">AVG Load</span>\n                          <span class="h3 secondary-text font-weight-500">{{vm.system.currentLoad.avgload * 100 | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{vm.system.currentLoad.avgload * 100 | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">MEM</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{vm.system.mem.total / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.FREE\' | translate}}: {{vm.system.mem.available / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{vm.system.mem.active / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h3 secondary-text font-weight-500">{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0}}%</span>\n                        </div>\n                        <md-progress-linear class="md-warn" md-mode="determinate" value="{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0 }}"></md-progress-linear>\n\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="disk in vm.system.fsSize" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">DISK {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.FILE_SYSTEM\' | translate}}: {{disk.fs}}</div>\n                        <div class="h4">{{\'SETTINGS.MOUNT_POINT\' | translate}}: "{{disk.mount}}"</div>\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{disk.size / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{disk.used / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h4 secondary-text font-weight-500">{{disk.use | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{disk.use | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="net in vm.system.net" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">NET {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.INTERFACE\' | translate}}: {{net.iface}}</div>\n                        <div class="h4">IPv4: {{net.ip4}}</div>\n                        <div class="h4">IPv6: {{net.ip6}}</div>\n                        <div class="h4">MAC: {{net.mac}}</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row">\n              <div flex>\n                <md-toolbar class="md-table-toolbar md-default">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SETTINGS.TOP_N_PROCESSES" translate-values="{value: vm.processLimit}"></span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm.searchTerm1 = query" on-collapse="vm.searchTerm1 = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table>\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column>pid</th>\n                        <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                        <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                        <th md-column>pmem</th>\n                        <th md-column>pcpu</th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-repeat="process in vm.system.processes.list | limitTo: vm.processLimit | filter: vm.searchTerm1 | orderBy:\'-pcpu\'">\n                        <td md-cell>{{process.pid}}</td>\n                        <td md-cell>{{process.command}}</td>\n                        <td md-cell>\n                          <span class="text-boxed white-fg" ng-class="{\n                          \'green-600-bg\': process.state == \'running\',\n                          \'yellow-600-bg\': process.state == \'sleeping\',\n                          \'red-600-bg\': process.state == \'blocked\'}">{{process.state | uppercase}}</span>\n                        </td>\n                        <td md-cell>{{process.pmem}}%</td>\n                        <td md-cell>{{process.pcpu}}%</td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n              </div>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.PROCESSES">PROCESSES</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.MOTION_PROCESS_MANAGEMENT"></span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.searchTerm2 = query" on-collapse="vm.searchTerm2 = undefined" debounce="300"></ms-search-bar>\n                  <md-button ng-click="vm.getProcesses()" class="md-icon-button" aria-label="Reload">\n                    <md-icon md-font-icon="icon-reload" class="s24"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column>id</th>\n                      <th md-column>pid</th>\n                      <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                      <th md-column>MEM</th>\n                      <th md-column>CPU</th>\n                      <th md-column width="20px">Actions</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-repeat="process in vm.processes | filter: vm.searchTerm2 | orderBy:\'-monit.cpu\'">\n                      <td md-cell>{{process.pm_id}}</td>\n                      <td md-cell>{{process.pid}}</td>\n                      <td md-cell>{{process.name == \'agi\' ? \'agi (Cally Square IVR)\' : process.name}}</td>\n                      <td md-cell>\n                        <span class="text-boxed white-fg" ng-class="{\'green-600-bg\': process.pm2_env.status == \'online\', \'red-600-bg\': process.pm2_env.status == \'stopped\'}">{{process.pm2_env.status | uppercase}}</span>\n                      </td>\n                      <td md-cell>{{process.monit.memory / 1024 / 1024 | number:0}} MB</td>\n                      <td md-cell>{{process.monit.cpu}}%</td>\n                      <td md-cell>\n                        <md-button ng-if="process.pm2_env.status !== \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'online\')" class="md-icon-button" aria-label="Play">\n                          <md-icon md-font-icon="icon-play" class="s24"></md-icon>\n                        </md-button>\n                        <md-button ng-if="process.pm2_env.status === \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'stopped\')" class="md-icon-button" aria-label="Stop">\n                          <md-icon md-font-icon="icon-stop" class="s24"></md-icon>\n                        </md-button>\n                      </td>\n                    </tr>\n                  </tbody>\n                  <tfoot md-foot>\n                    <tr md-row>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell>{{ (vm.processes | map: \'monit.memory\' | sum) / 1024 / 1024 | number:0 }} MB</td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                    </tr>\n                  </tfoot>\n                </table>\n              </md-table-container>\n            </md-card>\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.USEFUL_COMMANDS"></span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column width="30%">{{\'SETTINGS.COMMAND\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.DESCRIPTION\' | translate}}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr>\n                      <td md-cell class="no-border">pm2 list</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LIST\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 start &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_START\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 stop &lt;id | name | all&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_STOP\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 restart &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_RESTART\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 logs [id | name]</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LOGS\' | translate}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/settings/views/updates/update/dialog.html",'<md-dialog aria-label="Update">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear md-mode="determinate" value="{{vm.progress}}" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div layout="row" layout-align="center center">\n        <div ng-if="vm.updating" layout="column" layout-align="center center">\n          <span class="text-center md-title">Grab a quick coffee and</span>\n          <span class="text-center md-title">get back here as soon as completed!</span>\n          <span class="text-center md-title">{{vm.output}}</span>\n        </div>\n        <div ng-if="!vm.updating">\n          <div ng-if="vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Completed! Thank you for your time.</span>\n            <span class="text-center md-title">In order to complete the update,</span>\n            <span class="text-center md-title">please click on reload button</span>\n          </div>\n          <div ng-if="!vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Error!</span>\n            <span class="text-center md-title">Please contact your administrator!</span>\n            <span class="text-center md-title">{{vm.output}}</span>\n          </div>\n        </div>\n        <img src="assets/images/business/users.jpg" alt="" width="128" height="128" />\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions ng-if="!vm.updating" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.reload()" class="send-button md-warm md-raised" aria-label="RELOAD" translate="SETTINGS.RELOAD" translate-attr-aria-label="SETTINGS.RELOAD">\n          RELOAD\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/updates/updates.html",'<div id="updates" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.UPDATES">UPDATES</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n      \x3c!-- UPDATE CARD --\x3e\n      <div layout="row" ng-if="!vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.CURRENT_VERSION">CURRENT VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.current}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.current}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-20dp padding-20" flex ng-if="vm.version.current != vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.NEW_VERSION">NEW VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.latest}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.latest}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n            <md-button ng-click="vm.updateConfirm($event)" class="md-raised md-warn" aria-label="CHANGELOG" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">UPDATE</md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-1dp padding-20" flex ng-if="vm.version.current == vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.REMOTE_VERSION">REMOTE VERSION</span>\n\n            <span class="md-subhead padding-20" translate="SETTINGS.NO_NEW_VERSION_AVAILABLE">NO NEW VERSION AVAILABLE</span>\n          </div>\n        </md-card>\n      </div>\n      \x3c!-- / UPDATE CARD --\x3e\n\n      <div ng-if="vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.UPDATING">...</span>\n            <md-progress-linear md-mode="determinate" class="md-accent padding-20" value="{{vm.progress}}"></md-progress-linear>\n            <span class="md-display-1 padding-5 text-center">Grab a quick coffee and</span>\n            <span class="md-display-1 padding-5 text-center">get back here as soon as completed</span>\n            <img src="assets/images/business/users.jpg" alt="" width="40%" height="40%" />\n          </div>\n        </md-card>\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'SMS.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'SMS.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'SMS.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'SMS.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'SMS.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'SMS.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'SMS.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'SMS.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'SMS.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'SMS.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'SMS.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'SMS.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"SMS.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"SMS.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"SMS.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"SMS.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"SMS.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"SMS.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"SMS.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"SMS.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'SMS.PAGE' | translate}}:', rowsPerPage: '{{'SMS.ROWSPERPAGE' | translate}}:', of: '{{'SMS.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/sms/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n        <th md-column>{{ \'SMS.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'SMS.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'SMS.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="SMS.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="SMS.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus ng-disabled="!vm.newSmsAccount">\n\n        <div ng-messages="smsAccountForm[\'name\'].$error" ng-show="smsAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'key\'].$error" ng-show="smsAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="smsAccountForm[\'remote\'].$error" ng-show="smsAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.smsAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n        <div ng-messages="smsAccountForm[\'ListId\'].$error" ng-show="smsAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.smsAccount.type" required>\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'skebby\'">Skebby</md-option>\n          <md-option ng-value="\'connectel\'">Connectel</md-option>\n          <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n          <md-option ng-value="\'plivo\'">Plivo</md-option>\n          <md-option ng-value="\'infobip\'">Infobip</md-option>\n          <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n          <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n          <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n          <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'type\'].$error" ng-show="smsAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'phone\'].$error" ng-show="smsAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n        <label translate="SMS.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountSid\'].$error" ng-show="smsAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHID">AuthID</label>\n        <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authId\'].$error" ng-show="smsAccountForm[\'authId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authToken\'].$error" ng-show="smsAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n        <label translate="SMS.METHOD">Method</label>\n        <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required>\n          <md-option ng-value="\'SI\'">Basic</md-option>\n          <md-option ng-value="\'TI\'">Classic</md-option>\n          <md-option ng-value="\'GP\'">Classic+</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'smsMethod\'].$error" ng-show="smsAccountForm[\'smsMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'username\'].$error" ng-show="smsAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n        <label translate="SMS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n        <div ng-messages="smsAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n        <label translate="SMS.BASEURL">BaseURL</label>\n        <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'baseUrl\'].$error" ng-show="smsAccountForm[\'baseUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n        <label translate="SMS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'apiKey\'].$error" ng-show="smsAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.ACCOUNTID">AccountId</label>\n        <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountId\'].$error" ng-show="smsAccountForm[\'accountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.APPLICATIONID">ApplicationID</label>\n        <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'applicationId\'].$error" ng-show="smsAccountForm[\'applicationId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsAccount.description">\n\n        <div ng-messages="smsAccountForm[\'description\'].$error" ng-show="smsAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsAccount" ng-click="vm.saveSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid || smsAccountForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsAccount" ng-click="vm.addNewSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSACCOUNT" translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n          ADD SMSACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsAccount" ng-click="vm.deleteSmsAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",'<md-dialog class="smsAccount-dialog" aria-label="smsAccount" ng-init="vm.onInit()">\n  <form name="smsAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSACCOUNT">Add Agent to smsAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/agent/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'agent\'].$error" ng-show="smsAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'accesskeyid\'].$error" ng-show="smsAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'secretaccesskey\'].$error" ng-show="smsAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'lexregion\'].$error" ng-show="smsAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'botname\'].$error" ng-show="smsAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'times\'].$error" ng-show="smsAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'text\'].$error" ng-show="smsAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/close/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'disposition\'].$error" ng-show="smsAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'key\'].$error" ng-show="smsAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'projectId\'].$error" ng-show="smsAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'clientEmail\'].$error" ng-show="smsAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'privateKey\'].$error" ng-show="smsAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'condition\'].$error" ng-show="smsAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'truepriority\'].$error" ng-show="smsAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'falsepriority\'].$error" ng-show="smsAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'priority\'].$error" ng-show="smsAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/noop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'value\'].$error" ng-show="smsAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/queue/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'queue\'].$error" ng-show="smsAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/system/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'command\'].$error" ng-show="smsAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'variable\'].$error" ng-show="smsAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/tag/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'tag\'].$error" ng-show="smsAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",'<md-dialog class="smsCannedAnswer-dialog" aria-label="New SmsCannedAnswer">\n  <form name="smsCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.smsCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="smsCannedAnswerForm[\'key\'].$error" ng-show="smsCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.smsCannedAnswer.value" required></textarea>\n\n        <div ng-messages="smsCannedAnswerForm[\'value\'].$error" ng-show="smsCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsCannedAnswer.description">\n\n        <div ng-messages="smsCannedAnswerForm[\'description\'].$error" ng-show="smsCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsCannedAnswer" ng-click="vm.saveSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid || smsCannedAnswerForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsCannedAnswer" ng-click="vm.addNewSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSCANNEDANSWER" translate-attr-aria-label="SMS.ADD_SMSCANNEDANSWER">\n          ADD SMSCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsCannedAnswer" ng-click="vm.deleteSmsCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/view.html",'<div id="sms-smsAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsAccounts-button md-icon-button" aria-label="Go to smsAccounts" ng-click="vm.gotoSmsAccounts()" translate translate-attr-aria-label="SMS.GO_TO_SMSACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsAccount-image" hide-xs>\n          <img ng-src="assets/images/business/smsAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsAccount.id}}\n            <span ng-if="vm.smsAccount.name">{{vm.smsAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (smsDispositionsForm.$invalid) || (smsCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.smsAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.smsAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'twilio\'">Twilio</md-option>\n                  <md-option ng-value="\'skebby\'">Skebby</md-option>\n                  <md-option ng-value="\'connectel\'">Connectel</md-option>\n                  <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n                  <md-option ng-value="\'plivo\'">Plivo</md-option>\n                  <md-option ng-value="\'infobip\'">Infobip</md-option>\n                  <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n                  <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n                  <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n                  <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n                <label translate="SMS.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHID">AuthID</label>\n                <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authId\'].$error" ng-show="generalForm[\'authId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n                <label translate="SMS.METHOD">Method</label>\n                <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SI\'">Basic</md-option>\n                  <md-option ng-value="\'TI\'">Classic</md-option>\n                  <md-option ng-value="\'GP\'">Classic+</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'smsMethod\'].$error" ng-show="generalForm[\'smsMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n                <label translate="SMS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n                <label translate="SMS.BASEURL">BaseURL</label>\n                <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.ACCOUNTID">AccountId</label>\n                <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountId\'].$error" ng-show="generalForm[\'accountId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.APPLICATIONID">ApplicationID</label>\n                <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'applicationId\'].$error" ng-show="generalForm[\'applicationId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'plivo\'|| vm.smsAccount.type == \'csc\'|| vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.SENDERSTRING">SenderString</label>\n                <input type="text" name="senderString" ng-model="vm.smsAccount.senderString" md-maxlength="11" ng-pattern="/^[A-Za-z0-9\\.\\s]*$/i" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'senderString\'].$error" ng-show="generalForm[\'senderString\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.SENDERSTRING_REQUIRED">SenderString field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\s]*$/i\' }">SenderString must be valid pattern </span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MAX_LENGTH" translate-values=\'{max: 11}\'>SenderString must have a maximum length equal to 11</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\'" class="md-block">\n                <md-switch ng-model="vm.smsAccount.deliveryReport" aria-label="deliveryReport" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.DELIVERYREPORT">deliveryReport</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.smsAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/notify?token=\' + vm.smsAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="( ((vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\') && vm.smsAccount.deliveryReport) || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/status?token=\' + vm.smsAccount.token + (vm.smsAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="SMS.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.smsAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.queueTransfer == true" class="md-block">\n                <label translate="SMS.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.smsAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.agentTransfer == true" class="md-block">\n                <label translate="SMS.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.smsAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.smsAccount.token" autofocus disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.mandatoryDisposition" class="md-block">\n                <label translate="SMS.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.smsAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="SmsAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="smsAccount-detail-form-container smsdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SMS.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add sms dispositions" translate translate-attr-label="SMS.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="smsAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container smscannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountSmsCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.SMSCANNEDANSWERS">SmsCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountSmsCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event)" aria-label="add smsCannedAnswer" translate translate-attr-label="SMS.ADD_SMSCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountSmsCannedAnswers.length}} {{vm_dc.selectedSmsAccountSmsCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountSmsCannedAnswers" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountSmsCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountSmsCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountSmsCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'SMS.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'SMS.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'SMS.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="smsCannedAnswer" md-select-id="id" ng-repeat="smsCannedAnswer in vm_dc.smsAccountSmsCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{ smsCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" translate="SMS.EDIT_SMSCANNEDANSWER">\n                                Edit SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(smsCannedAnswer, $event)" translate="SMS.DELETE_SMSCANNEDANSWER">\n                                Delete SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountSmsCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_SMSCANNEDANSWER_AVAILABLE">No smscannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountSmsCannedAnswers.count}}" md-on-paginate="vm_dc.getSmsAccountSmsCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.smsAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="SMS.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedSmsAccountApps.length}} {{vm_ac.selectedSmsAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedSmsAccountApps($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedSmsAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.smsAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editSmsAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.smsAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getSmsAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getSmsAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="SMS.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountInteractions.length}} {{vm_dc.selectedSmsAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountInteractions" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'SMS.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'SMS.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'SMS.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'SMS.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'SMS.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.smsAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'SMS.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'SMS.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spysmsInteraction($event, interaction)" translate="SMS.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.smsInteractionDownload(interaction, $event)" translate="SMS.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="SMS.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountInteractions.count}}" md-on-paginate="vm_dc.getSmsAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/smsAccounts.html",'<div id="smsAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSACCOUNTS">SmsAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsAccounts-count">\n          <span>{{vm.selectedSmsAccounts.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsAccounts()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsAccounts()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsAccounts" csv-label="true" filename="smsAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsAccounts($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'SMS.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'SMS.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SMS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'SMS.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsAccount" md-select-id="id" ng-repeat="smsAccount in vm.smsAccounts.rows">\n                <td md-cell ng-if="smsAccount.userpic"><img class="avatar" alt="{{smsAccount.name}}" ng-src="api/users/{{smsAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="id ">{{smsAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="name ">{{smsAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="key ">{{smsAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':smsAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="type ">{{ vm.arraytype[smsAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="phone ">{{smsAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="description ">{{smsAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsAccount, $event    )" translate="SMS.EDIT_SMSACCOUNT">\n                          Edit SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(smsAccount, $event    )" translate="SMS.INTERACTIONS_SMSACCOUNT">\n                          Interactions SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsAccount, $event    )" translate="SMS.AGENTADD_SMSACCOUNT">\n                          AgentAdd SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsAccount, $event    )" translate="SMS.DELETE_SMSACCOUNT">\n                          Delete SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsAccounts.count}}" md-on-paginate="vm.getSmsAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsAccount-button" ng-click="vm.createOrEditSmsAccount($event)" aria-label="add smsAccount" translate translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsQueues/create/dialog.html",'<md-dialog class="smsQueue-dialog" aria-label="New SmsQueue">\n  <form name="smsQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newSmsQueue">\n\n        <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n        <div ng-messages="smsQueueForm[\'name\'].$error" ng-show="smsQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.smsQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="smsQueueForm[\'strategy\'].$error" ng-show="smsQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="smsQueueForm[\'timeout\'].$error" ng-show="smsQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsQueue.description">\n\n        <div ng-messages="smsQueueForm[\'description\'].$error" ng-show="smsQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsQueue" ng-click="vm.saveSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid || smsQueueForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsQueue" ng-click="vm.addNewSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSQUEUE" translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n          ADD SMSQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsQueue" ng-click="vm.deleteSmsQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSQUEUE">Add Agent to smsQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/view.html",'<div id="sms-smsQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsQueues-button md-icon-button" aria-label="Go to smsQueues" ng-click="vm.gotoSmsQueues()" translate translate-attr-aria-label="SMS.GO_TO_SMSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsQueue-image" hide-xs>\n          <img ng-src="assets/images/business/smsQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsQueue.id}}\n            <span ng-if="vm.smsQueue.name">{{vm.smsQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.smsQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="SMS.TEAMADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.smsQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsQueues/smsQueues.html",'<div id="smsQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSQUEUES">SmsQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsQueues-count">\n          <span>{{vm.selectedSmsQueues.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsQueues()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsQueues()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsQueues" csv-label="true" filename="smsQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsQueues($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SMSQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'SMS.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsQueue" md-select-id="id" ng-repeat="smsQueue in vm.smsQueues.rows">\n                <td md-cell ng-if="smsQueue.userpic"><img class="avatar" alt="{{smsQueue.name}}" ng-src="api/users/{{smsQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="id ">{{smsQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="name ">{{smsQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="strategy ">{{ vm.arraystrategy[smsQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsQueue, $event    )" translate="SMS.EDIT_SMSQUEUE">\n                          Edit SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(smsQueue, $event    )" translate="SMS.TEAMADD_SMSQUEUE">\n                          teamadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsQueue, $event    )" translate="SMS.AGENTADD_SMSQUEUE">\n                          agentadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsQueue, $event    )" translate="SMS.DELETE_SMSQUEUE">\n                          Delete SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(smsQueue, $event    )" translate="SMS.GOTOREALTIME_SMSQUEUE">\n                          goToRealtime SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsQueues.count}}" md-on-paginate="vm.getSmsQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsQueue-button" ng-click="vm.createOrEditSmsQueue($event)" aria-label="add smsQueue" translate translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/agents.html",'<div id="agents" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.AGENTS">Agents</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAgents.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAgents =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAgents()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAgents()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAgents" csv-label="true" filename="agents.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedAgents($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- AGENT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAgents" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="showWebBar">{{ \'STAFF.SHOWWEBCONTROL\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.agents.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n                <td md-cell ng-if="agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="api/users/{{agent.id}}/avatar" /></td>\n                <td md-cell ng-if="!agent.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{agent.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="fullname font-weight-600">{{agent.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="name ">{{agent.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="showWebBar ">{{ vm.arrayshowWebBar[agent.showWebBar].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="email ">{{agent.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="phone ">{{agent.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="mobile ">{{agent.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="internal ">{{agent.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{agent.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{agent.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / AGENT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD AGENT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-agent-button" ng-click="vm.createOrEditAgent($event)" aria-label="add agent" translate translate-attr-aria-label="STAFF.ADD_AGENT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD AGENT BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/create/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="agentForm[\'fullname\'].$error" ng-show="agentForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="agentForm[\'name\'].$error" ng-show="agentForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.agent.alias">\n\n        <div ng-messages="agentForm[\'alias\'].$error" ng-show="agentForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n        <md-select name="showWebBar" ng-model="vm.agent.showWebBar">\n          <md-option ng-value="0">Phonebar</md-option>\n          <md-option ng-value="1">External</md-option>\n          <md-option ng-value="2">WebRTC</md-option>\n        </md-select>\n        <div ng-messages="agentForm[\'showWebBar\'].$error" ng-show="agentForm[\'showWebBar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.agent.email" ng-required="true">\n\n        <div ng-messages="agentForm[\'email\'].$error" ng-show="agentForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.agent.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="agentForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newAgent  && (vm.newAgent)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div ng-messages="agentForm[\'internal\'].$error" ng-show="agentForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.agent.description">\n\n        <div ng-messages="agentForm[\'description\'].$error" ng-show="agentForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n        <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n        <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n        <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true">\n\n        <div ng-messages="agentForm[\'phoneBarRemoteControlPort\'].$error" ng-show="agentForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAgent" ng-click="vm.saveAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAgent" ng-click="vm.addNewAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid" aria-label="ADD" translate="STAFF.ADD_AGENT" translate-attr-aria-label="STAFF.ADD_AGENT">\n          ADD AGENT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAgent" ng-click="vm.deleteAgent($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",'<md-dialog class="agent-dialog" aria-label="{{vm.name}}">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.agent.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="agentForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="agentForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin" ng-if="vm.agent.role === \'agent\' && vm.channel === \'voice\'">\n        <label translate="STAFF.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="agentForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" add-disabled="vm.channel === \'voice\' && vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveQueues()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/view.html",'<div id="staff-agent" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-agents-button md-icon-button" aria-label="Go to agents" ng-click="vm.gotoAgents()" translate translate-attr-aria-label="STAFF.GO_TO_AGENTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.agent.id}}\n            <span ng-if="vm.agent.name">{{vm.agent.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.agent.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak>\n      <md-fab-speed-dial md-direction="left" class="md-scale md-fab">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="false"><span translate="STAFF.CHANNELS">Channels</span></md-tooltip>\n            <md-icon md-font-icon="icon-stackoverflow" aria-label="queueadd"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <md-button aria-label="voice" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'inbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="VOICE.VOICE">Voice</span></md-tooltip>\n            <md-icon md-font-icon="icon-phone" aria-label="voice"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.dialer" aria-label="motion bull" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'outbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MOTIONDIALER.MOTIONDIALER">Motion Bull</span></md-tooltip>\n            <md-icon md-font-icon="icon-fire" aria-label="motion bull"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.chat" aria-label="chat" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'chat\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="CHAT.CHAT">Chat</span></md-tooltip>\n            <md-icon md-font-icon="icon-hangouts" aria-label="chat"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.mail" aria-label="mail" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'mail\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MAIL.MAIL">Email</span></md-tooltip>\n            <md-icon md-font-icon="icon-email" aria-label="mail"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.messaging" aria-label="sms" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'sms\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="SMS.SMS">Sms</span></md-tooltip>\n            <md-icon md-font-icon="icon-message-text" aria-label="sms"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.openchannel" aria-label="openchannel" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'openchannel\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="OPENCHANNEL.OPENCHANNEL">Openchannel</span></md-tooltip>\n            <md-icon md-font-icon="icon-google-earth" aria-label="openchannel"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.fax" aria-label="fax" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'fax\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="FAX.FAX">Fax</span></md-tooltip>\n            <md-icon md-font-icon="icon-deskphone" aria-label="fax"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.whatsapp" aria-label="whatsapp" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'whatsapp\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="WHATSAPP.WHATSAPP">whatsapp</span></md-tooltip>\n            <md-icon md-font-icon="icon-whatsapp" aria-label="whatsapp"></md-icon>\n          </md-button>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.agent, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="STAFF.TEAMADD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.agent, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveAgent()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid) || (capacityForm.$invalid) || (settingsForm.$invalid) || (remote_controlForm.$invalid) || (sipForm.$invalid) || (callforwardingForm.$invalid) || (settings_webrtcForm.$invalid) || (sip_webrtcForm.$invalid) || (general_permissionsForm.$invalid) || (download_permissionsForm.$invalid) || (permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.agent.alias" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'alias\'].$error" ng-show="personal_infoForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n                <md-select name="showWebBar" ng-model="vm.agent.showWebBar" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="0">Phonebar</md-option>\n                  <md-option ng-value="1">External</md-option>\n                  <md-option ng-value="2">WebRTC</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'showWebBar\'].$error" ng-show="personal_infoForm[\'showWebBar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.agent.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.agent.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.agent.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 1" class="md-block">\n                <md-switch ng-model="vm.agent.hotdesk" aria-label="Hotdesk" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.HOTDESK">Hotdesk</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.loginInPause" aria-label="LoginInPause" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.LOGININPAUSE">LoginInPause</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.agent.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.agent.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.agent.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Agentchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="agent-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.agent.images" ng-switch="change_avatarimage.type">\n                    <div class="agent-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="agent-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar != 2" class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.agent.transport" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'" ng-if="vm.agent.showWebBar == 1">ws</md-option>\n                  <md-option ng-value="\'wss\'" ng-if="vm.agent.showWebBar == 1">wss</md-option>\n                  <md-option ng-value="\'tls\'" ng-if="vm.agent.showWebBar == 1">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.HOST">Host</label>\n                <input type="text" name="host" ng-model="vm.agent.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.agent.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.agent.type" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.agent.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.agent.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.agent.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.agent.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.agent.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.chanspy" aria-label="chanSpy" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CHANSPY">chanSpy</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.agent.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MONITOREXTENSION">MonitorExtension</label>\n                <md-select name="extensionMonitor" ng-model="vm.agent.extensionMonitor" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'extensionMonitor\'].$error" ng-show="generalForm[\'extensionMonitor\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MONITOREXTENSION_REQUIRED">MonitorExtension field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.OTHER_CHANNELS">OTHER_CHANNELS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container capacity md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CAPACITY">CAPACITY</div>\n            </div>\n            <form name="capacityForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <label translate="STAFF.CHATCAPACITY">ChatCapacity</label>\n                <input type="number" name="chatCapacity" ng-model="vm.agent.chatCapacity" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CHATCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'chatCapacity\'].$error" ng-show="capacityForm[\'chatCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_REQUIRED">ChatCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ChatCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <label translate="STAFF.MAILCAPACITY">MailCapacity</label>\n                <input type="number" name="mailCapacity" ng-model="vm.agent.mailCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.MAILCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'mailCapacity\'].$error" ng-show="capacityForm[\'mailCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_REQUIRED">MailCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MailCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <label translate="STAFF.SMSCAPACITY">SMSCapacity</label>\n                <input type="number" name="smsCapacity" ng-model="vm.agent.smsCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SMSCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'smsCapacity\'].$error" ng-show="capacityForm[\'smsCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_REQUIRED">SMSCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">SMSCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <label translate="STAFF.OPENCHANNELCAPACITY">OpenchannelCapacity</label>\n                <input type="number" name="openchannelCapacity" ng-model="vm.agent.openchannelCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.OPENCHANNELCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'openchannelCapacity\'].$error" ng-show="capacityForm[\'openchannelCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_REQUIRED">OpenchannelCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OpenchannelCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <label translate="STAFF.FAXCAPACITY">FaxCapacity</label>\n                <input type="number" name="faxCapacity" ng-model="vm.agent.faxCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.FAXCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'faxCapacity\'].$error" ng-show="capacityForm[\'faxCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_REQUIRED">FaxCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FaxCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <label translate="STAFF.WHATSAPPCAPACITY">WhatsappCapacity</label>\n                <input type="number" name="whatsappCapacity" ng-model="vm.agent.whatsappCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WHATSAPPCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'whatsappCapacity\'].$error" ng-show="capacityForm[\'whatsappCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_REQUIRED">WhatsappCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WhatsappCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 0">\n        <md-tab-label>\n          <span translate="STAFF.MOTIONBAR">MOTIONBAR</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settingsForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settingsForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRingInUse" aria-label="RingInUse" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.RINGINUSE">RingInUse</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnansweredCallBadge" aria-label="UnansweredCallBadge" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNANSWEREDCALLBADGE">UnansweredCallBadge</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableJaws" aria-label="EnableJawsIntegration" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEJAWSINTEGRATION">EnableJawsIntegration</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableScreenRecordingByAgentSelection()" ng-model="vm.agent.phoneBarEnableScreenRecordingByAgent" aria-label="EnableScreenRecordingByAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESCREENRECORDINGBYAGENT">EnableScreenRecordingByAgent</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableAutomaticScreenRecordingSelection()" ng-model="vm.agent.phoneBarEnableAutomaticScreenRecording" aria-label="EnableAutomaticScreenRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEAUTOMATICSCREENRECORDING">EnableAutomaticScreenRecording</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.ENABLEAUTOMATICSCREENRECORDING"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container remote_control md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.REMOTE_CONTROL">REMOTE_CONTROL</div>\n            </div>\n            <form name="remote_controlForm" novalidate>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n                <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n                <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="remote_controlForm[\'phoneBarRemoteControlPort\'].$error" ng-show="remote_controlForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP">SIP</div>\n            </div>\n            <form name="sipForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sipForm[\'phoneBarExpires\'].$error" ng-show="sipForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPPORT">SipPort</label>\n                <input type="number" name="phoneBarListenPort" ng-model="vm.agent.phoneBarListenPort" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPPORT"></span></div>\n                <div ng-messages="sipForm[\'phoneBarListenPort\'].$error" ng-show="sipForm[\'phoneBarListenPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPPORT_REQUIRED">SipPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container callforwarding md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CALLFORWARDING">CALLFORWARDING</div>\n            </div>\n            <form name="callforwardingForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnconditional" aria-label="Unconditional" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNCONDITIONAL">Unconditional</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarUnconditional" class="md-block">\n                <label translate="STAFF.UNCONDITIONALNUMBER">UnconditionalNumber</label>\n                <input type="text" name="phoneBarUnconditionalNumber" ng-model="vm.agent.phoneBarUnconditionalNumber" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="callforwardingForm[\'phoneBarUnconditionalNumber\'].$error" ng-show="callforwardingForm[\'phoneBarUnconditionalNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.UNCONDITIONALNUMBER_REQUIRED">UnconditionalNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 2">\n        <md-tab-label>\n          <span translate="STAFF.WEBRTC">WEBRTC</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS_WEBRTC">SETTINGS_WEBRTC</div>\n            </div>\n            <form name="settings_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSCERTFILE">dtlscertfile</label>\n                <input type="text" name="dtlscertfile" ng-model="vm.agent.dtlscertfile" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSCERTFILE"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlscertfile\'].$error" ng-show="settings_webrtcForm[\'dtlscertfile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSCERTFILE_REQUIRED">dtlscertfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSPRIVATEKEY">dtlsprivatekey</label>\n                <input type="text" name="dtlsprivatekey" ng-model="vm.agent.dtlsprivatekey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.DTLSPRIVATEKEY"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlsprivatekey\'].$error" ng-show="settings_webrtcForm[\'dtlsprivatekey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSPRIVATEKEY_REQUIRED">dtlsprivatekey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.WSS_PORT">WSS_Port</label>\n                <input type="number" name="wssPort" ng-model="vm.agent.wssPort" min="0" value="8089" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.WSS_PORT"></span></div>\n                <div ng-messages="settings_webrtcForm[\'wssPort\'].$error" ng-show="settings_webrtcForm[\'wssPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WSS_PORT_REQUIRED">WSS_Port field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WSS_PORT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WSS_Port must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP_WEBRTC">SIP_WEBRTC</div>\n            </div>\n            <form name="sip_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sip_webrtcForm[\'phoneBarExpires\'].$error" ng-show="sip_webrtcForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL_PERMISSIONS">GENERAL_PERMISSIONS</div>\n            </div>\n            <form name="general_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.allowmessenger" aria-label="EnableMessenger" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEMESSENGER">EnableMessenger</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarPrefixRequired" aria-label="PrefixRequired" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.PREFIXREQUIRED">PrefixRequired</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="agent-detail-form-container permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERMISSIONS">PERMISSIONS</div>\n            </div>\n            <div ng-controller="AgentPermissionsController as vm_pc" ng-init="vm_pc.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container">\n              <md-list ng-repeat="father in vm_pc.navigation[0].children" ng-include="\'permission-nested.html\'" ng-if="vm_pc.agent.role !== \'admin\' && !father.hidden()"></md-list>\n\n              \x3c!-- Nested navigation template --\x3e\n              <script type="text/ng-template" id="permission-nested.html">\n                <md-list-item>\n        <md-icon md-font-icon="{{father.icon}}"></md-icon>\n        <p translate="{{father.translate}}">{{ father.title }}</p>\n        <md-switch class="md-secondary" ng-model="father.enabled" ng-change="vm_pc.onChange(father)" ng-init="father.enabled = vm_pc.agent.permissions.includes(father.id)" \n                  ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n      </md-list-item>\n\n      <md-divider></md-divider>\n\n      <md-list>\n        <md-list-item ng-repeat="child in father.children" ng-if="child.id !== 201">\n          <md-icon ng-if="child.icon" md-font-icon="{{child.icon}}"></md-icon>\n          <p translate="{{child.translate}}">{{ child.title }}</p>\n          <md-switch ng-model="child.enabled" ng-change="vm_pc.onChange(father, child)" ng-init="child.enabled = vm_pc.agent.permissions.includes(child.id)"\n                    ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n          </md-list-item>\n      </md-list>\n  <\/script>\n              \x3c!-- / Nested navigation template --\x3e\n\n              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/teams/create/dialog.html",'<md-dialog class="team-dialog" aria-label="New Team">\n  <form name="teamForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.team.name" ng-required="true" autofocus>\n\n        <div ng-messages="teamForm[\'name\'].$error" ng-show="teamForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.team.description">\n\n        <div ng-messages="teamForm[\'description\'].$error" ng-show="teamForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTeam" ng-click="vm.saveTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid || teamForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTeam" ng-click="vm.addNewTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TEAM" translate-attr-aria-label="STAFF.ADD_TEAM">\n          ADD TEAM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTeam" ng-click="vm.deleteTeam($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",'<md-dialog class="team-dialog" aria-label="team" ng-init="vm.onInit()">\n  <form name="teamForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.AGENTADD_TEAM">Add Agent to team</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/teams.html",'<div id="teams" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TEAMS">Teams</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTeams.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTeams =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-teams-count">\n          <span>{{vm.selectedTeams.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTeams()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTeams()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTeams" csv-label="true" filename="teams.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTeams($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEAM TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTeams" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTeams">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.teams.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="team" md-select-id="id" ng-repeat="team in vm.teams.rows">\n                <td md-cell ng-if="team.userpic"><img class="avatar" alt="{{team.name}}" ng-src="api/users/{{team.id}}/avatar" /></td>\n                <td md-cell ng-if="!team.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{team.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="id ">{{team.id}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="name ">{{team.name}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="description ">{{team.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(team, $event    )" translate="STAFF.EDIT_TEAM">\n                          Edit Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(team, $event    )" translate="STAFF.AGENTADD_TEAM">\n                          AgentAdd Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(team, $event    )" translate="STAFF.DELETE_TEAM">\n                          Delete Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.teams.count}}" md-on-paginate="vm.getTeams" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEAM TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEAM BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-team-button" ng-click="vm.createOrEditTeam($event)" aria-label="add team" translate translate-attr-aria-label="STAFF.ADD_TEAM">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEAM BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/telephones/create/dialog.html",'<md-dialog class="telephone-dialog" aria-label="New Telephone">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n        <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="telephoneForm[\'fullname\'].$error" ng-show="telephoneForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="telephoneForm[\'name\'].$error" ng-show="telephoneForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true">\n\n        <div ng-messages="telephoneForm[\'email\'].$error" ng-show="telephoneForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newTelephone">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.telephone.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="telephoneForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newTelephone  && (vm.newTelephone)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.telephone.description">\n\n        <div ng-messages="telephoneForm[\'description\'].$error" ng-show="telephoneForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div ng-messages="telephoneForm[\'internal\'].$error" ng-show="telephoneForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTelephone" ng-click="vm.saveTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTelephone" ng-click="vm.addNewTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TELEPHONE" translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n          ADD TELEPHONE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTelephone" ng-click="vm.deleteTelephone($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",'<md-dialog class="telephone-dialog" aria-label="{{vm.name}}">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.telephone.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="telephoneForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="telephoneForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/view.html",'<div id="staff-telephone" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-telephones-button md-icon-button" aria-label="Go to telephones" ng-click="vm.gotoTelephones()" translate translate-attr-aria-label="STAFF.GO_TO_TELEPHONES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="telephone-image" hide-xs>\n          <img ng-src="assets/images/business/telephones.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.telephone.id}}\n            <span ng-if="vm.telephone.name">{{vm.telephone.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.telephone.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.telephone, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_TELEPHONE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTelephone()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(accountForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container account md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.ACCOUNT">ACCOUNT</div>\n            </div>\n            <form name="accountForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n                <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'fullname\'].$error" ng-show="accountForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="accountForm[\'name\'].$error" ng-show="accountForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'email\'].$error" ng-show="accountForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.telephone.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'description\'].$error" ng-show="accountForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.telephone.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'phone\'].$error" ng-show="accountForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.telephone.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'mobile\'].$error" ng-show="accountForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.telephone.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.telephone.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.telephone.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.telephone.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.telephone.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.telephone.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.telephone.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.telephone.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ENCRYPTION">Encryption</label>\n                <md-select name="encryption" ng-model="vm.telephone.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="generalForm[\'encryption\'].$error" ng-show="generalForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ENCRYPTION_REQUIRED">Encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/telephones/telephones.html",'<div id="telephones" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TELEPHONES">Telephones</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTelephones.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTelephones =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-telephones-count">\n          <span>{{vm.selectedTelephones.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTelephones()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTelephones()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTelephones" csv-label="true" filename="telephones.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTelephones($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TELEPHONE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTelephones" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.ACCOUNTNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.telephones.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="telephone" md-select-id="id" ng-repeat="telephone in vm.telephones.rows">\n                <td md-cell ng-if="telephone.userpic"><img class="avatar" alt="{{telephone.name}}" ng-src="api/users/{{telephone.id}}/avatar" /></td>\n                <td md-cell ng-if="!telephone.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{telephone.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="fullname font-weight-600">{{telephone.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="name ">{{telephone.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="email ">{{telephone.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="internal ">{{telephone.internal}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(telephone, $event    )" translate="STAFF.EDIT_TELEPHONE">\n                          Edit Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(telephone, $event    )" translate="STAFF.DELETE_TELEPHONE">\n                          Delete Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.telephones.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TELEPHONE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TELEPHONE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-telephone-button" ng-click="vm.createOrEditTelephone($event)" aria-label="add telephone" translate translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TELEPHONE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/userProfiles/create/dialog.html",'<md-dialog class="userProfile-dialog" aria-label="New UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUserProfile" ng-click="vm.saveUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid || userProfileForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUserProfile" ng-click="vm.addNewUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USERPROFILE" translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n          ADD USERPROFILE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUserProfile" ng-click="vm.deleteUserProfile($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/clone/clone.html",'<md-dialog class="userProfile-dialog" aria-label="Clone UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="CLONE" translate="STAFF.CLONE_USERPROFILE" translate-attr-aria-label="STAFF.CLONE_USERPROFILE">\n        CLONE USERPROFILE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",'<md-dialog class="userProfile-dialog" aria-label="userProfile">\n  <form name="userProfileForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog($event)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div layout="column" class="padding-bottom-10">\n        <div layout="row" class="padding-bottom-10">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.SECTIONS">Sections</label>\n            <md-select name="sections" ng-model="vm.selectedSection" placeholder="{{\'STAFF.PERMISSIONS_SELECT_SECTION\' | translate}}" ng-change="vm.onChangeSection()" required>\n              <md-option ng-value="subsection" ng-repeat="subsection in vm.subsections" ng-selected="{{vm.subsections.length === 1 ? \'true\' : \'false\'}}">{{subsection.translate | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n          <div layout="row" ng-show="vm.selectedSection" class="margin-left-10">\n            <md-button ng-switch="vm.selectedSection.enabled" class="md-icon-button md-fab md-mini size-8 padding-10" ng-class="vm.selectedSection.enabled ? \'blue-500-bg\' : \'grey-A400-bg\'" ng-click="vm.onChangeVisibility()" aria-label="Visibility">\n              <md-icon ng-switch-when="true" md-font-icon="icon-eye" aria-label="Visible section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_HIDE\' | translate}}</md-tooltip>\n              </md-icon>\n              <md-icon ng-switch-when="false" md-font-icon="icon-eye-off" aria-label="Hidden section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_SHOW\' | translate}}</md-tooltip>\n              </md-icon>\n            </md-button>\n            <div>\n              <md-button class="md-icon-button md-fab md-mini size-8 green-A700-bg no-margin" ng-disabled="true">\n                <md-icon md-font-icon="icon-monitor" class="md-background-fg" aria-label="Read permission">\n                  <md-tooltip>{{\'STAFF.READ_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowEdit ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'edit\')">\n                <md-icon md-font-icon="icon-pencil" aria-label="Edit permission">\n                  <md-tooltip>{{\'STAFF.EDIT_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowDelete ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'delete\')">\n                <md-icon md-font-icon="icon-delete" aria-label="Delete permission">\n                  <md-tooltip>{{\'STAFF.DELETE_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n            </div>\n          </div>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection" class="margin-left-10" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-switch ng-model="vm.selectedSection.autoAssociation" class="no-margin padding-right-10" aria-label="Auto association" ng-change="vm.onChangeAutoAssociation()">\n          </md-switch>\n          <p class="no-margin font-size-12 line-height-30">{{\'STAFF.PERMISSIONS_AUTO_ASSOCIATION_INFO\' | translate}}</p>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection && vm.selectedSection.title === \'Reports\' && !vm.selectedSection.autoAssociation" class="margin-bottom-10 margin-top-30" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.REPORT_TYPE">Report Type</label>\n            <md-select name="type" ng-model="vm.selectedSection.reportType" placeholder="{{\'STAFF.PERMISSIONS_SELECT_REPORT_TYPE\' | translate}}" ng-change="vm.onChangeReportType()" required>\n              <md-option ng-value="\'default\'">Default</md-option>\n              <md-option ng-value="\'custom\'">Custom</md-option>\n            </md-select>\n          </md-input-container>\n        </div>\n        <div ng-show="vm.selectedSection && vm.selectedSection.title === \'Dashboards\'" class="user-profile-section-help margin-bottom-10 margin-top-20">\n          <md-icon md-font-icon="icon-help" aria-label="Dashboards help"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.CUSTOM_DASHBOARDS_PERMISSIONS"></span>\n        </div>\n      </div>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association" ng-hide="vm.selectedSection.autoAssociation"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center">\n      <div>\n        <md-icon md-font-icon="icon-information-outline" aria-label="Delete permission"></md-icon>\n        <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.SAVE_PERMISSIONS"></span>\n      </div>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveSection()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/view.html",'<div id="staff-userProfile" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-userProfiles-button md-icon-button" aria-label="Go to userProfiles" ng-click="vm.gotoUserProfiles()" translate translate-attr-aria-label="STAFF.GO_TO_USERPROFILES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="userProfile-image" hide-xs>\n          <img ng-src="assets/images/business/userProfiles.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.userProfile.id}}\n            <span ng-if="vm.userProfile.name">{{vm.userProfile.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.userProfile.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.userProfile, $event)" class="md-fab md-amber-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="STAFF.CLONE_USERPROFILE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUserProfile()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (modulesForm.$invalid) || (download_permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.userProfile.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n                <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'crudPermissions\'].$error" ng-show="generalForm[\'crudPermissions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container modules md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.MODULES">MODULES</div>\n            </div>\n            <div ng-controller="UserProfilePermissionsController as vm_pc" ng-init="vm_pc.init(vm.userProfile, vm.license)" class="userProfile-detail-form-container">\n              <md-grid-list flex md-cols-gt-xs="2" md-cols-gt-sm="2" md-cols-gt-md="4" md-cols-gt-lg="6" md-row-height-gt-xs="2:1" md-row-height-gt-sm="3:1" md-row-height-gt-md="3:1" gt-xs-gutter="4px" gt-sm-gutter="4px" gt-md-gutter="16px" gt-lg-gutter="16px">\n                <md-grid-tile ng-repeat="father in vm_pc.modules" ng-if="vm_pc.userProfile.role !== \'admin\' && !father.permissions.hidden" md-colspan="2">\n                  <md-card flex-xs flex-gt-xs="90" layout="column" no-padding no-margin>\n                    <md-card-header>\n                      <md-card-avatar>\n                        <md-icon class="md-avatar-icon auto-size" md-font-icon="{{father.icon}}" ng-class="{ true: father.status.color }[true]">\n                          <md-tooltip>{{ father.status.info }}</md-tooltip>\n                        </md-icon>\n                      </md-card-avatar>\n                      <md-card-header-text layout-align="center start">\n                        <span class="md-title" translate="{{father.translate}}">{{ father.title }}</span>\n                      </md-card-header-text>\n                      <md-card-actions class="no-margin" layout="row" ng-init="vm_pc.checkSectionResources(father)" ng-if="father.status.tag != \'unlicensed\'">\n                        <md-switch class="auto-height no-margin" ng-model="father.allResourcesEnabled" ng-change="vm_pc.onChangeEnableAllResources(father)" aria-label="Enable all"></md-switch>\n                        <md-button class="md-mini auto-width" aria-label="Manage" ng-click="vm_pc.manageResources(father)" ng-hide="father.permissions && !father.permissions.association">\n                          <md-tooltip>{{\'STAFF.PERMISSIONS_MANAGE\' | translate}}\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-cog"></md-icon>\n                        </md-button>\n                      </md-card-actions>\n                      <md-card-header-text ng-if="father.status.tag === \'unlicensed\'" layout-align="center end">\n                        <span class="md-subhead red-A700-fg">{{ father.status.name }}</span>\n                      </md-card-header-text>\n                    </md-card-header>\n                  </md-card>\n                </md-grid-tile>\n              </md-grid-list>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.DOWNLOADS">DOWNLOADS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadCallySquareRecordings" aria-label="CallySquare_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CALLYSQUARE_RECORDINGS">CallySquare_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadContactManagerLists" aria-label="Contact_Manager_Lists" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CONTACT_MANAGER_LISTS">Contact_Manager_Lists</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadJscriptySessions" aria-label="Jscripty_Sessions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.JSCRIPTY_SESSIONS">Jscripty_Sessions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadScreenRecordings" aria-label="Screen_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SCREEN_RECORDINGS">Screen_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/userProfiles/userProfiles.html",'<div id="userProfiles" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERPROFILES">UserProfiles</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUserProfiles.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUserProfiles =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-userProfiles-count">\n          <span>{{vm.selectedUserProfiles.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUserProfiles()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUserProfiles()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUserProfiles" csv-label="true" filename="userProfiles.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedUserProfiles($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USERPROFILE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUserProfiles" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUserProfiles">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="crudPermissions">{{ \'STAFF.CRUDPERMISSIONS\' | translate }}</th>\n                <th md-column md-order-by="privacyEnabled">{{ \'STAFF.MASK_SENSITIVE_DATA\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.userProfiles.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="userProfile" md-select-id="id" ng-repeat="userProfile in vm.userProfiles.rows">\n                <td md-cell ng-if="userProfile.userpic"><img class="avatar" alt="{{userProfile.name}}" ng-src="api/users/{{userProfile.id}}/avatar" /></td>\n                <td md-cell ng-if="!userProfile.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{userProfile.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="id ">{{userProfile.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="name ">{{userProfile.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="description ">{{userProfile.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="crudPermissions ">{{userProfile.selectedcrudPermissions}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="privacyEnabled ">\n                  <md-icon md-colors="{color: {{userProfile.privacyEnabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{userProfile.privacyEnabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(userProfile, $event    )" translate="STAFF.EDIT_USERPROFILE">\n                          Edit UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(userProfile, $event    )" translate="STAFF.CLONE_USERPROFILE">\n                          clone UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(userProfile, $event    )" translate="STAFF.DELETE_USERPROFILE">\n                          Delete UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.userProfiles.count}}" md-on-paginate="vm.getUserProfiles" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USERPROFILE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USERPROFILE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-userProfile-button" ng-click="vm.createOrEditUserProfile($event)" aria-label="add userProfile" translate translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USERPROFILE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/create/dialog.html",'<md-dialog class="user-dialog" aria-label="New User">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ROLE">Role</label>\n        <md-select name="role" ng-model="vm.user.role" autofocus required ng-disabled="!vm.newUser">\n          <md-option ng-value="\'admin\'">Admin</md-option>\n          <md-option ng-value="\'user\'">User</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'role\'].$error" ng-show="userForm[\'role\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n        <label translate="STAFF.USERPROFILE">UserProfile</label>\n        <md-select name="userProfileId" ng-model="vm.user.userProfileId" required>\n          <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'userProfileId\'].$error" ng-show="userForm[\'userProfileId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true">\n\n        <div ng-messages="userForm[\'fullname\'].$error" ng-show="userForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="userForm[\'name\'].$error" ng-show="userForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.user.email" ng-required="true">\n\n        <div ng-messages="userForm[\'email\'].$error" ng-show="userForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.user.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="userForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newUser  && (vm.newUser)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.user.description">\n\n        <div ng-messages="userForm[\'description\'].$error" ng-show="userForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.user.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div ng-messages="userForm[\'internal\'].$error" ng-show="userForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUser" ng-click="vm.saveUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUser" ng-click="vm.addNewUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USER" translate-attr-aria-label="STAFF.ADD_USER">\n          ADD USER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUser" ng-click="vm.deleteUser($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.MANAGE_API_KEY\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-card layout-fill layout-padding>\n      <textarea class="api-key-area" ng-model="vm.user.apiKey" rows="6" disabled></textarea>\n    </md-card>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.generateApiKey()" class="send-button md-accent md-raised" aria-label="Generate" translate="{{ vm.user.apiKey === \'N/A\' ? \'STAFF.GENERATE\' : \'STAFF.REGENERATE\' }}" translate-attr-aria-label="STAFF.GENERATE">\n          Generate\n        </md-button>\n        <md-button type="submit" ng-click="vm.removeApiKey()" class="send-button md-accent md-raised" aria-label="Remove" translate="STAFF.REMOVE" translate-attr-aria-label="STAFF.DELETE">\n          Delete\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="userForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="userForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/view.html",'<div id="staff-user" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-users-button md-icon-button" aria-label="Go to users" ng-click="vm.gotoUsers()" translate translate-attr-aria-label="STAFF.GO_TO_USERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.user.id}}\n            <span ng-if="vm.user.name">{{vm.user.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.user.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.apikeymanagerdialog(vm.user, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="apikeymanager">\n        <md-tooltip><span translate="STAFF.APIKEYMANAGER_USER"></span></md-tooltip>\n        <md-icon md-font-icon="fab fa-hubspot"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.user, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_USER"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUser()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ROLE">Role</label>\n                <md-select name="role" ng-model="vm.user.role" autofocus required disabled>\n                  <md-option ng-value="\'admin\'">Admin</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'role\'].$error" ng-show="personal_infoForm[\'role\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n                <label translate="STAFF.USERPROFILE">UserProfile</label>\n                <md-select name="userProfileId" ng-model="vm.user.userProfileId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'userProfileId\'].$error" ng-show="personal_infoForm[\'userProfileId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.user.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.user.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.user.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.user.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.user.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" autofocus disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" disabled>\n\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\'" class="md-block">\n                <md-switch ng-model="vm.user.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\' && vm.user.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.user.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Userchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.user, vm.crudPermissions)" class="user-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="user-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.user.images" ng-switch="change_avatarimage.type">\n                    <div class="user-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n\n                    <div class="user-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.user.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.user.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.user.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.user.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.user.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.user.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.user.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/users/users.html",'<div id="users" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERS">Users</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUsers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUsers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUsers()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUsers()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUsers" csv-label="true" filename="users.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- USER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUsers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUsers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="role">{{ \'STAFF.ROLE\' | translate }}</th>\n                <th md-column md-order-by="userProfileId">{{ \'STAFF.USERPROFILE\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.users.rows.length">\n                <td md-cell colspan="11">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="user" md-select-id="id" ng-repeat="user in vm.users.rows">\n                <td md-cell ng-if="user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="api/users/{{user.id}}/avatar" /></td>\n                <td md-cell ng-if="!user.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{user.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="role ">{{ vm.arrayrole[user.role].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="userProfileId font-weight-600">{{ (vm.userProfiles | filter : {\'id\':user.userProfileId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="fullname font-weight-600">{{user.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="name ">{{user.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="email ">{{user.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="phone ">{{user.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="mobile ">{{user.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="internal ">{{user.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{user.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{user.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.users.count}}" md-on-paginate="vm.getUsers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-user-button" ng-click="vm.createOrEditUser($event)" aria-label="add user" translate translate-attr-aria-label="STAFF.ADD_USER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",'<div id="cannedAnswers" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CANNEDANSWERS">CannedAnswers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCannedAnswers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCannedAnswers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cannedAnswers-count">\n          <span>{{vm.selectedCannedAnswers.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCannedAnswers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCannedAnswers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCannedAnswers" csv-label="true" filename="cannedAnswers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CANNEDANSWER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCannedAnswers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCannedAnswers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'TOOLS.KEY\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'TOOLS.VALUE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cannedAnswers.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cannedAnswer" md-select-id="id" ng-repeat="cannedAnswer in vm.cannedAnswers.rows">\n                <td md-cell ng-if="cannedAnswer.userpic"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="api/users/{{cannedAnswer.id}}/avatar" /></td>\n                <td md-cell ng-if="!cannedAnswer.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="id ">{{cannedAnswer.id}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="key ">{{cannedAnswer.key}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="value ">{{cannedAnswer.value}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="description ">{{cannedAnswer.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(cannedAnswer, $event    )" translate="TOOLS.EDIT_CANNEDANSWER">\n                          Edit CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(cannedAnswer, $event    )" translate="TOOLS.DELETE_CANNEDANSWER">\n                          Delete CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cannedAnswers.count}}" md-on-paginate="vm.getCannedAnswers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CANNEDANSWER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CANNEDANSWER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-cannedAnswer-button" ng-click="vm.createOrEditCannedAnswer($event)" aria-label="add cannedAnswer" translate translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CANNEDANSWER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/create/dialog.html",'<md-dialog class="cannedAnswer-dialog" aria-label="New CannedAnswer">\n  <form name="cannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.cannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="cannedAnswerForm[\'key\'].$error" ng-show="cannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 255}\'>Key must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.cannedAnswer.value" required></textarea>\n\n        <div ng-messages="cannedAnswerForm[\'value\'].$error" ng-show="cannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.cannedAnswer.description">\n\n        <div ng-messages="cannedAnswerForm[\'description\'].$error" ng-show="cannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCannedAnswer" ng-click="vm.saveCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid || cannedAnswerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCannedAnswer" ng-click="vm.addNewCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CANNEDANSWER" translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n          ADD CANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCannedAnswer" ng-click="vm.deleteCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/create/dialog.html",'<md-dialog class="customDashboard-dialog" aria-label="New CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.customDashboard.description">\n\n        <div ng-messages="customDashboardForm[\'description\'].$error" ng-show="customDashboardForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomDashboard" ng-click="vm.saveCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid || customDashboardForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomDashboard" ng-click="vm.addNewCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n          ADD CUSTOMDASHBOARD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomDashboard" ng-click="vm.deleteCustomDashboard($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/customDashboards.html",'<div id="customDashboards" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CUSTOMDASHBOARDS">CustomDashboards</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCustomDashboards.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCustomDashboards =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-customDashboards-count">\n          <span>{{vm.selectedCustomDashboards.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCustomDashboards()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCustomDashboards()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCustomDashboards" csv-label="true" filename="customDashboards.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCustomDashboards($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CUSTOMDASHBOARD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCustomDashboards" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCustomDashboards">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.customDashboards.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="customDashboard" md-select-id="id" ng-repeat="customDashboard in vm.customDashboards.rows">\n                <td md-cell ng-if="customDashboard.userpic"><img class="avatar" alt="{{customDashboard.name}}" ng-src="api/users/{{customDashboard.id}}/avatar" /></td>\n                <td md-cell ng-if="!customDashboard.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{customDashboard.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="id ">{{customDashboard.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="name ">{{customDashboard.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="description ">{{customDashboard.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(customDashboard, $event    )" translate="TOOLS.EDIT_CUSTOMDASHBOARD">\n                          Edit CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(customDashboard, $event    )" translate="TOOLS.CLONE_CUSTOMDASHBOARD">\n                          clone CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotodashboardgoto(customDashboard, $event    )" translate="TOOLS.GOTODASHBOARD_CUSTOMDASHBOARD">\n                          goToDashboard CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(customDashboard, $event    )" translate="TOOLS.DELETE_CUSTOMDASHBOARD">\n                          Delete CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.customDashboards.count}}" md-on-paginate="vm.getCustomDashboards" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CUSTOMDASHBOARD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CUSTOMDASHBOARD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-customDashboard-button" ng-click="vm.createOrEditCustomDashboard($event)" aria-label="add customDashboard" translate translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CUSTOMDASHBOARD BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/customDashboards/edit/clone/clone.html",'<md-dialog class="customDashboard-dialog" aria-label="Clone CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.CLONE_CUSTOMDASHBOARD">\n        CLONE CUSTOMDASHBOARD\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",'<md-dialog class="dashboarditem-dialog" aria-label="New DashboardItem">\n  <form name="dashboarditemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" autofocus ng-disabled="!vm.newDashboardItem">\n\n          <md-option ng-value="\'counter\'"> {{ \'TOOLS.COUNTER\' | translate }} </md-option>\n\n          <md-option ng-value="\'multibar-chart\'"> {{ \'TOOLS.MULTIBARCHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'pie-chart\'"> {{ \'TOOLS.PIECHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'web-report\'"> {{ \'TOOLS.WEBREPORT\' | translate }} </md-option>\n\n          <md-option ng-value="\'iframe\'"> {{ \'TOOLS.IFRAME\' | translate }} </md-option>\n\n          <md-option ng-value="\'clock\'"> {{ \'TOOLS.CLOCK\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'TOOLS.CUSTOMTYPE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'type\'].$error" ng-show="dashboarditemForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLE">Title</label>\n        <input type="text" name="title" ng-model="vm.dashboarditem.title" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'title\'].$error" ng-show="dashboarditemForm[\'title\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLE_REQUIRED">Title field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.TITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>Title must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLEFONTSIZE">TitleFontSize</label>\n        <input type="number" name="titleFontSize" ng-model="vm.dashboarditem.titleFontSize" value="12">\n\n        <div ng-messages="dashboarditemForm[\'titleFontSize\'].$error" ng-show="dashboarditemForm[\'titleFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLEFONTSIZE_REQUIRED">TitleFontSize field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'iframe\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="attrUrl" ng-model="vm.dashboarditem.attrUrl" value="https://" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrUrl\'].$error" ng-show="dashboarditemForm[\'attrUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'custom\'" class="md-block">\n        <label translate="TOOLS.PATH">Path</label>\n        <input type="text" name="attrPath" ng-model="vm.dashboarditem.attrPath" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrPath\'].$error" ng-show="dashboarditemForm[\'attrPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PATH_REQUIRED">Path field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.FORMAT">Format</label>\n        <input type="text" name="attrHourFormat" ng-model="vm.dashboarditem.attrHourFormat" value="HH:mm:ss" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrHourFormat\'].$error" ng-show="dashboarditemForm[\'attrHourFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.TIMEZONE">Timezone</label>\n        <md-select name="attrTimezone" ng-model="vm.dashboarditem.attrTimezone" required>\n          <md-option ng-value="\'-12.00\'">GMT-12.00</md-option>\n          <md-option ng-value="\'-11.00\'">GMT-11.00</md-option>\n          <md-option ng-value="\'-10.00\'">GMT-10.00</md-option>\n          <md-option ng-value="\'-9.00\'">GMT-9.00</md-option>\n          <md-option ng-value="\'-8.00\'">GMT-8.00</md-option>\n          <md-option ng-value="\'-7.00\'">GMT-7.00</md-option>\n          <md-option ng-value="\'-6.00\'">GMT-6.00</md-option>\n          <md-option ng-value="\'-5.00\'">GMT-5.00</md-option>\n          <md-option ng-value="\'-4.00\'">GMT-4.00</md-option>\n          <md-option ng-value="\'-3.30\'">GMT-3.30</md-option>\n          <md-option ng-value="\'-3.00\'">GMT-3.00</md-option>\n          <md-option ng-value="\'-2.00\'">GMT-2.00</md-option>\n          <md-option ng-value="\'-1.00\'">GMT-1.00</md-option>\n          <md-option ng-value="\'0.00\'">GMT 0.00</md-option>\n          <md-option ng-value="\'1.00\'">GMT+1.00</md-option>\n          <md-option ng-value="\'2.00\'">GMT+2.00</md-option>\n          <md-option ng-value="\'3.00\'">GMT+3.00</md-option>\n          <md-option ng-value="\'3.30\'">GMT+3.30</md-option>\n          <md-option ng-value="\'4.00\'">GMT+4.00</md-option>\n          <md-option ng-value="\'4.30\'">GMT+4.30</md-option>\n          <md-option ng-value="\'5.00\'">GMT+5.00</md-option>\n          <md-option ng-value="\'5.30\'">GMT+5.30</md-option>\n          <md-option ng-value="\'5.45\'">GMT+5.45</md-option>\n          <md-option ng-value="\'6.00\'">GMT+6.00</md-option>\n          <md-option ng-value="\'6.30\'">GMT+6.30</md-option>\n          <md-option ng-value="\'7.00\'">GMT+7.00</md-option>\n          <md-option ng-value="\'8.00\'">GMT+8.00</md-option>\n          <md-option ng-value="\'9.00\'">GMT+9.00</md-option>\n          <md-option ng-value="\'9.30\'">GMT+9.30</md-option>\n          <md-option ng-value="\'10.00\'">GMT+10.00</md-option>\n          <md-option ng-value="\'11.00\'">GMT+11.00</md-option>\n          <md-option ng-value="\'12.00\'">GMT+12.00</md-option>\n          <md-option ng-value="\'13.00\'">GMT+13.00</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrTimezone\'].$error" ng-show="dashboarditemForm[\'attrTimezone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'counter\'" class="md-block">\n        <label translate="TOOLS.METRIC">Metric</label>\n        <md-select name="attrMetric" ng-model="vm.dashboarditem.attrMetric" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrMetric\'].$error" ng-show="dashboarditemForm[\'attrMetric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE1">Serie1</label>\n        <md-select name="attrSerie1" ng-model="vm.dashboarditem.attrSerie1" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie1\'].$error" ng-show="dashboarditemForm[\'attrSerie1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE1_REQUIRED">Serie1 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE2">Serie2</label>\n        <md-select name="attrSerie2" ng-model="vm.dashboarditem.attrSerie2">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie2\'].$error" ng-show="dashboarditemForm[\'attrSerie2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE2_REQUIRED">Serie2 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE3">Serie3</label>\n        <md-select name="attrSerie3" ng-model="vm.dashboarditem.attrSerie3">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie3\'].$error" ng-show="dashboarditemForm[\'attrSerie3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE3_REQUIRED">Serie3 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.dashboarditem.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="dashboarditemForm[\'report\'].$error" ng-show="dashboarditemForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REFRESH">Refresh</label>\n        <input type="number" name="attrRefresh" ng-model="vm.dashboarditem.attrRefresh" min="5" value="10" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrRefresh\'].$error" ng-show="dashboarditemForm[\'attrRefresh\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REFRESH_REQUIRED">Refresh field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Refresh must be a valid greater or equal than</span> <span>5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FILTERVOICEQUEUES">FilterVoiceQueues</label>\n        <md-select name="attrVoiceQueues" ng-model="vm.dashboarditem.attrVoiceQueues" multiple>\n          <md-option ng-value="attrVoiceQueues.id" ng-repeat="attrVoiceQueues in vm.voiceQueues" ng-disabled="attrVoiceQueues.canSelect === false">{{ attrVoiceQueues.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrVoiceQueues\'].$error" ng-show="dashboarditemForm[\'attrVoiceQueues\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERVOICEQUEUES_REQUIRED">FilterVoiceQueues field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'counter\', \'clock\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FONTSIZE">FontSize</label>\n        <input type="number" name="attrFontSize" ng-model="vm.dashboarditem.attrFontSize" min="12" max="40" value="20" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrFontSize\'].$error" ng-show="dashboarditemForm[\'attrFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FONTSIZE_REQUIRED">FontSize field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>12</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>40</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.dashboarditem.foreground" label="{{\'TOOLS.FOREGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <div flex md-color-picker ng-model="vm.dashboarditem.background" label="{{\'TOOLS.BACKGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LINK">link</label>\n        <input type="url" name="link" ng-model="vm.dashboarditem.link">\n\n        <div ng-messages="dashboarditemForm[\'link\'].$error" ng-show="dashboarditemForm[\'link\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LINK_REQUIRED">link field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.LINK_MUST_VALID_URL">link must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDashboardItem" ng-click="vm.saveDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid || dashboarditemForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDashboardItem" ng-click="vm.addNewDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DASHBOARDITEM" translate-attr-aria-label="TOOLS.ADD_DASHBOARDITEM">\n          ADD DASHBOARDITEM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDashboardItem" ng-click="vm.deleteDashboardItem($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/view.html",'<div id="tools-customDashboard" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-customDashboards-button md-icon-button" aria-label="Go to customDashboards" ng-click="vm.gotoCustomDashboards()" translate translate-attr-aria-label="TOOLS.GO_TO_CUSTOMDASHBOARDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="customDashboard-image" hide-xs>\n          <img ng-src="assets/images/business/customDashboards.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.customDashboard.id}}\n            <span ng-if="vm.customDashboard.name">{{vm.customDashboard.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.customDashboard.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.customDashboard, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.customDashboard, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomDashboard()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (dashboardForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.customDashboard.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.DASHBOARD">DASHBOARD</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container dashboard md-background-bg md-whiteframe-1dp">\n            <div ng-controller="CustomDashboardItemsController as vm_cd" ng-init="vm_cd.init(vm.customDashboard, vm.crudPermissions)" class="customDashboard-detail-form-container no-padding no-margin" layout="column">\n              <div ng-if="vm_cd.customDashboard.widgets.length">\n                <md-button class="md-fab md-mini md-accent" ng-click="vm_cd.createOrEditWidget()" ng-if="vm_cd.crudPermissions.canEdit" aria-label="add item">\n                  <md-tooltip>{{ \'TOOLS.ADD_WIDGET\' | translate }}</md-tooltip>\n                  <md-icon md-font-icon="icon-plus"></md-icon>\n                </md-button>\n                <md-content flex>\n                  <ms-widget-engine config="vm_cd.customDashboard" on-edit="vm_cd.createOrEditWidget(widget)" on-delete="vm_cd.deleteWidget(widget)"></ms-widget-engine>\n                </md-content>\n              </div>\n              <div ng-if="!vm_cd.customDashboard.widgets.length" layout="row" layout-align="center center" flex>\n                <md-button class="width-130 height-130 md-accent md-raised" ng-click="vm_cd.createOrEditWidget()" aria-label="add item" layout="column">\n                  <md-icon md-font-icon="icon-plus-circle" class="s50"></md-icon>\n                  <span layout-wrap translate="TOOLS.ADD_WIDGET"></span>\n                </md-button>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/create/dialog.html",'<md-dialog ng-init="vm.onInit()" class="disposition-dialog" aria-label="New Disposition">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newDisposition ? \'TOOLS.NEW_DISPOSITION\' : \'TOOLS.EDIT_DISPOSITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.disposition.name" md-maxlength="255" required md-autofocus>\n        <div ng-messages="dispositionForm[\'name\'].$error" ng-show="dispositionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.NAME_MAX_LENGTH" translate-values=\'{max: 255}\'>Name must have a maximum length\n              equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.disposition.description" md-maxlength="255">\n        <div ng-messages="dispositionForm[\'description\'].$error" ng-show="dispositionForm[\'description\'].$touched" role="alert">\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_MAX_LENGTH" translate-values=\'{max: 255}\'>Description must have a\n              maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newDisposition && vm.dispositions.length > 0 || vm.disposition.ParentId" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.FIRST_LEVEL_DISPOSITION">First Level Disposition</label>\n          <md-select name="firstLevelDisposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onFirstLevelSelection()">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.firstLevelDisposition" ng-click="vm.clearSelection(\'first\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition">\n            <md-option ng-value="disposition" ng-if="disposition.id != vm.disposition.id" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearSelection(\'second\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDisposition" ng-click="vm.saveDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid || dispositionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDisposition" ng-click="vm.addNewDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DISPOSITION" translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n          ADD DISPOSITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDisposition" ng-click="vm.deleteDisposition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/dispositions.html",'<div id="dispositions" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.DISPOSITIONS">Dispositions</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDispositions.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedDispositions = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-dispositions-count">\n          <span>{{vm.selectedDispositions.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDispositions()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDispositions()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDispositions" csv-label="true" filename="dispositions.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.query.level = null; vm.getDispositions()">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="icon-refresh"></md-icon>\n                  <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                </div>\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm.query.level" ng-change="vm.getDispositions()">\n                  <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                  <md-option ng-value="key" ng-repeat="(key, value) in vm.levels">{{ value }}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n        \x3c!-- DISPOSITION TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container>\n            <table md-table md-row-select multiple ng-model="vm.selectedDispositions" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDispositions">\n                <tr md-row>\n                  <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                  <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                  <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                  <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.dispositions.rows.length">\n                  <td md-cell colspan="5">\n                    <div layout="row" layout-align="center center">\n                      <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm.dispositions.rows">\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                  </td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                    {{ vm.levels[disposition.level] }}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                    {{disposition.name}}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                    {{disposition.description}}</td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                            Edit Disposition\n                          </md-button>\n                        </md-menu-item>\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                            Delete Disposition\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n          <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dispositions.count}}" md-on-paginate="vm.getDispositions" md-page-select>\n          </md-table-pagination>\n        </md-card>\n        \x3c!-- / DISPOSITION TABLE --\x3e\n      </div>\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD DISPOSITION BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-disposition-button" ng-click="vm.createOrEditDisposition($event)" aria-label="add disposition" translate translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DISPOSITION BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/intervals/create/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.interval.description">\n\n        <div ng-messages="intervalForm[\'description\'].$error" ng-show="intervalForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input ng-model="vm.interval.name" type="text" name="name" placeholder="{{\'TOOLS.NAME\' | translate}}" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" md-autofocus required>\n        <div ng-messages="intervalForm.name.$error" ng-show="intervalForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/intervals/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/view.html",'<div id="tools-interval" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-intervals-button md-icon-button" aria-label="Go to intervals" ng-click="vm.gotoIntervals()" translate translate-attr-aria-label="TOOLS.GO_TO_INTERVALS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="interval-image" hide-xs>\n          <img ng-src="assets/images/business/intervals.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.interval.id}}\n            <span ng-if="vm.interval.name">{{vm.interval.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.interval.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInterval()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (intervalsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.interval.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.INTERVALS">INTERVALS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container intervals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IntervalIntervalsController as vm_dc" ng-init="vm_dc.init(vm.interval, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="TOOLS.INTERVALS">Intervals</span>\n                  <ms-search-bar on-search="vm_dc.getIntervalIntervals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditIntervalInterval($event)" aria-label="add interval" translate translate-attr-label="TOOLS.ADD_INTERVAL">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIntervalIntervals.length}} {{vm_dc.selectedIntervalIntervals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIntervalIntervals" csv-label="true" filename="intervals.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIntervalIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIntervalIntervals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIntervalIntervals">\n                    <tr md-row>\n                      <th md-column width="10px"></th>\n                      <th md-column md-order-by="id">\n                        {{ \'TOOLS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'TOOLS.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="interval">\n                        {{ \'TOOLS.INTERVAL\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'TOOLS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_dc.sortableTable">\n                    <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm_dc.intervalIntervals.rows">\n                      <td md-cell>\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.interval}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{ interval.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" translate="TOOLS.EDIT_INTERVAL">\n                                Edit Interval\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interval, $event)" translate="TOOLS.DELETE_INTERVAL">\n                                Delete Interval\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.intervalIntervals.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="TOOLS.NO_INTERVALS_AVAILABLE">No intervals available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/intervals/intervals.html",'<div id="intervals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.INTERVALS">Intervals</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIntervals.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIntervals =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-intervals-count">\n          <span>{{vm.selectedIntervals.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIntervals()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIntervals()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIntervals" csv-label="true" filename="intervals.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- INTERVAL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIntervals" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIntervals">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.intervals.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm.intervals.rows">\n                <td md-cell ng-if="interval.userpic"><img class="avatar" alt="{{interval.name}}" ng-src="api/users/{{interval.id}}/avatar" /></td>\n                <td md-cell ng-if="!interval.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{interval.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="id ">{{interval.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="name ">{{interval.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="description ">{{interval.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(interval, $event    )" translate="TOOLS.EDIT_INTERVAL">\n                          Edit Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(interval, $event    )" translate="TOOLS.DELETE_INTERVAL">\n                          Delete Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.intervals.count}}" md-on-paginate="vm.getIntervals" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / INTERVAL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD INTERVAL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-interval-button" ng-click="vm.createOrEditInterval($event)" aria-label="add interval" translate translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD INTERVAL BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/pauses/create/dialog.html",'<md-dialog class="pause-dialog" aria-label="New Pause">\n  <form name="pauseForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.pause.name" ng-required="true" autofocus>\n\n        <div ng-messages="pauseForm[\'name\'].$error" ng-show="pauseForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.pause.description">\n\n        <div ng-messages="pauseForm[\'description\'].$error" ng-show="pauseForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPause" ng-click="vm.savePause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid || pauseForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPause" ng-click="vm.addNewPause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_PAUSE" translate-attr-aria-label="TOOLS.ADD_PAUSE">\n          ADD PAUSE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPause" ng-click="vm.deletePause($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/pauses/pauses.html",'<div id="pauses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.PAUSES">Pauses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPauses.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPauses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-pauses-count">\n          <span>{{vm.selectedPauses.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPauses()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPauses()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPauses" csv-label="true" filename="pauses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPauses($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- PAUSE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPauses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPauses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.pauses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="pause" md-select-id="id" ng-repeat="pause in vm.pauses.rows">\n                <td md-cell ng-if="pause.userpic"><img class="avatar" alt="{{pause.name}}" ng-src="api/users/{{pause.id}}/avatar" /></td>\n                <td md-cell ng-if="!pause.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{pause.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="id ">{{pause.id}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="name ">{{pause.name}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="description ">{{pause.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(pause, $event    )" translate="TOOLS.EDIT_PAUSE">\n                          Edit Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(pause, $event    )" translate="TOOLS.DELETE_PAUSE">\n                          Delete Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.pauses.count}}" md-on-paginate="vm.getPauses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PAUSE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PAUSE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-pause-button" ng-click="vm.createOrEditPause($event)" aria-label="add pause" translate translate-attr-aria-label="TOOLS.ADD_PAUSE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PAUSE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/schedules/create/dialog.html",'<md-dialog class="schedule-dialog" aria-label="New Schedule">\n  <form name="scheduleForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.schedule.name" ng-required="true" autofocus>\n\n        <div ng-messages="scheduleForm[\'name\'].$error" ng-show="scheduleForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.schedule.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="scheduleForm[\'report\'].$error" ng-show="scheduleForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OUTPUT">Output</label>\n        <md-select name="output" ng-model="vm.schedule.output" required>\n          <md-option ng-value="\'csv\'">CSV</md-option>\n          <md-option ng-value="\'pdf\'">PDF</md-option>\n          <md-option ng-value="\'xlsx\'">Excel</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'output\'].$error" ng-show="scheduleForm[\'output\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTPUT_REQUIRED">Output field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.active" aria-label="Active"><span translate="TOOLS.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYSTART">ValidityStart</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="startAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="startAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYEND">ValidityEnd</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="endAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="endAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div flex class="md-block">\n        <label> {{ \'TOOLS.CRON\' | translate }} ({{vm.schedule.cron}})</label>\n        <cron-selection name="cron" ng-model="vm.schedule.cron" template="assets/angular-cron-jobs/template.html" required></cron-selection>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LAST">Last</label>\n        <input type="number" name="subtractNumber" ng-model="vm.schedule.subtractNumber" value="1" ng-required="true">\n\n        <div ng-messages="scheduleForm[\'subtractNumber\'].$error" ng-show="scheduleForm[\'subtractNumber\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LAST_REQUIRED">Last field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LASTUNIT">LastUnit</label>\n        <md-select name="subtractUnit" ng-model="vm.schedule.subtractUnit" required>\n          <md-option ng-value="\'minutes\'">Minutes</md-option>\n          <md-option ng-value="\'hours\'">Hours</md-option>\n          <md-option ng-value="\'days\'">Days</md-option>\n          <md-option ng-value="\'weeks\'">Weeks</md-option>\n          <md-option ng-value="\'months\'">Months</md-option>\n          <md-option ng-value="\'quarters\'">Quarters</md-option>\n          <md-option ng-value="\'years\'">Years</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'subtractUnit\'].$error" ng-show="scheduleForm[\'subtractUnit\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LASTUNIT_REQUIRED">LastUnit field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.sendMail" aria-label="SendMail"><span translate="TOOLS.SENDMAIL">SendMail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.MAILACCOUNT">MailAccount</label>\n        <md-select name="MailAccountId" ng-model="vm.schedule.MailAccountId" required>\n          <md-option ng-value="MailAccountId.id" ng-repeat="MailAccountId in vm.mailAccounts" ng-disabled="MailAccountId.canSelect === false">{{ MailAccountId.name }}</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'MailAccountId\'].$error" ng-show="scheduleForm[\'MailAccountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.MAILACCOUNT_REQUIRED">MailAccount field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILADDRESS">EmailAddress</label>\n        <input type="text" name="email" ng-model="vm.schedule.email" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'email\'].$error" ng-show="scheduleForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILCCADDRESS">EmailCcAddress</label>\n        <input type="text" name="cc" ng-model="vm.schedule.cc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'cc\'].$error" ng-show="scheduleForm[\'cc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILCCADDRESS_REQUIRED">EmailCcAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILBCCADDRESS">EmailBccAddress</label>\n        <input type="text" name="bcc" ng-model="vm.schedule.bcc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILBCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'bcc\'].$error" ng-show="scheduleForm[\'bcc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILBCCADDRESS_REQUIRED">EmailBccAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <md-switch ng-model="vm.schedule.sendIfEmpty" aria-label="SendIfEmpty"><span translate="TOOLS.SENDIFEMPTY">SendIfEmpty</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.schedule.description">\n\n        <div ng-messages="scheduleForm[\'description\'].$error" ng-show="scheduleForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSchedule" ng-click="vm.saveSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid || scheduleForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSchedule" ng-click="vm.addNewSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SCHEDULE" translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n          ADD SCHEDULE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSchedule" ng-click="vm.deleteSchedule($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable" ms-scroll>\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/schedules.html",'<div id="schedules" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SCHEDULER">Scheduler</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScheduler.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScheduler =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-schedules-count">\n          <span>{{vm.selectedScheduler.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScheduler()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScheduler()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScheduler" csv-label="true" filename="schedules.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScheduler($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCHEDULE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScheduler" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduler">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="startAt">{{ \'TOOLS.VALIDITYSTART\' | translate }}</th>\n                <th md-column md-order-by="endAt">{{ \'TOOLS.VALIDITYEND\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.schedules.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="schedule" md-select-id="id" ng-repeat="schedule in vm.schedules.rows">\n                <td md-cell ng-if="schedule.userpic"><img class="avatar" alt="{{schedule.name}}" ng-src="api/users/{{schedule.id}}/avatar" /></td>\n                <td md-cell ng-if="!schedule.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{schedule.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="id ">{{schedule.id}}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="name ">{{schedule.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(schedule, ev) : vm.createOrEditSchedule($event, schedule)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{schedule.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{schedule.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="startAt ">{{schedule.startAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="endAt ">{{schedule.endAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="description ">{{schedule.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(schedule, $event    )" translate="TOOLS.EDIT_SCHEDULE">\n                          Edit Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.runconfirm(schedule, $event    )" translate="TOOLS.RUN_SCHEDULE">\n                          Run Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(schedule, $event    )" translate="TOOLS.DELETE_SCHEDULE">\n                          Delete Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.schedules.count}}" md-on-paginate="vm.getScheduler" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCHEDULE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SCHEDULE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-schedule-button" ng-click="vm.createOrEditSchedule($event)" aria-label="add schedule" translate translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SCHEDULE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/create/dialog.html",'<md-dialog class="sound-dialog" aria-label="New Sound">\n  <form name="soundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sound.name" ng-required="true" autofocus>\n\n        <div ng-messages="soundForm[\'name\'].$error" ng-show="soundForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sound.description">\n\n        <div ng-messages="soundForm[\'description\'].$error" ng-show="soundForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSound" ng-click="vm.saveSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid || soundForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSound" ng-click="vm.addNewSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SOUND" translate-attr-aria-label="TOOLS.ADD_SOUND">\n          ADD SOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSound" ng-click="vm.deleteSound($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/sounds/sounds.html",'<div id="sounds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SOUNDS">Sounds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSounds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSounds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sounds-count">\n          <span>{{vm.selectedSounds.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSounds()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSounds()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSounds" csv-label="true" filename="sounds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSounds($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SOUND TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSounds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSounds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="audio">{{ \'TOOLS.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sounds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sound" md-select-id="id" ng-repeat="sound in vm.sounds.rows">\n                <td md-cell ng-if="sound.userpic"><img class="avatar" alt="{{sound.name}}" ng-src="api/users/{{sound.id}}/avatar" /></td>\n                <td md-cell ng-if="!sound.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sound.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="id ">{{sound.id}}</td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="name ">{{sound.name}}</td>\n                <td md-cell class="audio ">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording id="sound.id" model="\'sound\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                </td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="description ">{{sound.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(sound, $event    )" translate="TOOLS.EDIT_SOUND">\n                          Edit Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(sound, $event  , \'sounds\'   )" translate="TOOLS.DOWNLOAD_SOUND">\n                          Download Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(sound, $event    )" translate="TOOLS.DELETE_SOUND">\n                          Delete Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sounds.count}}" md-on-paginate="vm.getSounds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SOUND TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD SOUND BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-sound-button" ng-click="vm.uploadSound($event)" aria-label="upload sound" translate translate-attr-aria-label="TOOLS.UPLOAD_SOUND">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD SOUND BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="sound-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="TOOLS.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="TOOLS.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="TOOLS.UPLOADING">Uploading</span>\n          <span>{{vm.sound.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="TOOLS.FINISH" translate-attr-aria-label="TOOLS.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/create/dialog.html",'<md-dialog class="tag-dialog" aria-label="New Tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.tag.name" ng-required="true" autofocus>\n\n        <div ng-messages="tagForm[\'name\'].$error" ng-show="tagForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.tag.description">\n\n        <div ng-messages="tagForm[\'description\'].$error" ng-show="tagForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.tag.color" label="{{\'TOOLS.COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTag" ng-click="vm.saveTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid || tagForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTag" ng-click="vm.addNewTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TAG" translate-attr-aria-label="TOOLS.ADD_TAG">\n          ADD TAG\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTag" ng-click="vm.deleteTag($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/tags.html",'<div id="tags" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TAGS">Tags</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTags.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTags =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-tags-count">\n          <span>{{vm.selectedTags.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTags()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTags()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTags" csv-label="true" filename="tags.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTags($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TAG TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTags" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTags">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="color">{{ \'TOOLS.COLOR\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.tags.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="tag" md-select-id="id" ng-repeat="tag in vm.tags.rows">\n                <td md-cell ng-if="tag.userpic"><img class="avatar" alt="{{tag.name}}" ng-src="api/users/{{tag.id}}/avatar" /></td>\n                <td md-cell ng-if="!tag.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{tag.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="id ">{{tag.id}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="name ">{{tag.name}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="description ">{{tag.description}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="color ">{{tag.color}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(tag, $event    )" translate="TOOLS.EDIT_TAG">\n                          Edit Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(tag, $event    )" translate="TOOLS.DELETE_TAG">\n                          Delete Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.tags.count}}" md-on-paginate="vm.getTags" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TAG TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TAG BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-tag-button" ng-click="vm.createOrEditTag($event)" aria-label="add tag" translate translate-attr-aria-label="TOOLS.ADD_TAG">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TAG BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/templates/create/dialog.html",'<md-dialog class="template-dialog" aria-label="New Template">\n  <form name="templateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.template.name" ng-required="true" autofocus>\n\n        <div ng-messages="templateForm[\'name\'].$error" ng-show="templateForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="TOOLS.CONTENT">Content</label>\n        <textarea aria-label="Content html" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.template.html"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.template.description">\n\n        <div ng-messages="templateForm[\'description\'].$error" ng-show="templateForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTemplate" ng-click="vm.saveTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid || templateForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTemplate" ng-click="vm.addNewTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TEMPLATE" translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n          ADD TEMPLATE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTemplate" ng-click="vm.deleteTemplate($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/templates/templates.html",'<div id="templates" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TEMPLATES">Templates</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTemplates.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTemplates =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-templates-count">\n          <span>{{vm.selectedTemplates.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTemplates()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTemplates()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTemplates" csv-label="true" filename="templates.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTemplates($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TEMPLATE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTemplates" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTemplates">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.templates.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="template" md-select-id="id" ng-repeat="template in vm.templates.rows">\n                <td md-cell ng-if="template.userpic"><img class="avatar" alt="{{template.name}}" ng-src="api/users/{{template.id}}/avatar" /></td>\n                <td md-cell ng-if="!template.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{template.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="id ">{{template.id}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="name ">{{template.name}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="description ">{{template.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(template, $event    )" translate="TOOLS.EDIT_TEMPLATE">\n                          Edit Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(template, $event    )" translate="TOOLS.DELETE_TEMPLATE">\n                          Delete Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.templates.count}}" md-on-paginate="vm.getTemplates" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEMPLATE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEMPLATE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-template-button" ng-click="vm.createOrEditTemplate($event)" aria-label="add template" translate translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEMPLATE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/create/dialog.html",'<md-dialog class="trigger-dialog" aria-label="New Trigger">\n  <form name="triggerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newTrigger ? \'TOOLS.NEW_TRIGGER\' : \'TOOLS.EDIT_TRIGGER\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trigger.name" required md-autofocus>\n        <div ng-messages="triggerForm[\'name\'].$error" ng-show="triggerForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.trigger.channel" required ng-disabled="!vm.newTrigger">\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n          <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel"> {{ \'TOOLS.OPENCHANNEL\' | translate }}\n          </md-option>\n          <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n          <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n          <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n          <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n          <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="triggerForm[\'channel\'].$error" ng-show="triggerForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trigger.status" aria-label="Status"><span translate="TOOLS.STATUS">Status</span>\n        </md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trigger.description">\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{ error.message }}</span>\n            <span class="type">({{ error.type }})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrigger" ng-click="vm.saveTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid || triggerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrigger" ng-click="vm.addNewTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRIGGER" translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n          ADD TRIGGER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrigger" ng-click="vm.deleteTrigger($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/actions/actions.html",'<div ng-controller="TriggerActionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\r\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead" translate="TOOLS.ACTIONS">Actions</span>\r\n      <ms-search-bar on-search="vm_dc.getTriggerActions()" query="vm_dc.query" debounce="300" direction="down">\r\n      </ms-search-bar>\r\n      <div flex></div>\r\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAction($event)" aria-label="add action" translate translate-attr-label="TOOLS.ADD_ACTION">\r\n        <md-icon md-font-icon="icon-plus"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead">{{ vm_dc.selectedTriggerActions.length }}\r\n        {{ vm_dc.selectedTriggerActions.length > 1 ? \'items\' : \'item\' }} selected</span>\r\n      <div flex></div>\r\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerActions" csv-label="true" filename="triggers.csv">\r\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\r\n      </button>\r\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedTriggerActions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\r\n        <md-icon md-font-icon="icon-delete"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-table-container class="font-size-12">\r\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedTriggerActions" md-progress="vm_dc.promise">\r\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerActions">\r\n        <tr md-row>\r\n          <th md-column md-order-by="id">\r\n            {{ \'TOOLS.ID\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="action">\r\n            {{ \'TOOLS.ACTION\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data1">\r\n            {{ \'TOOLS.TYPE\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data2">\r\n            {{ \'TOOLS.INFO\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="createdAt">\r\n            {{ \'TOOLS.CREATED_AT\' | translate }}\r\n          </th>\r\n          <th md-column width="10px"></th>\r\n        </tr>\r\n      </thead>\r\n      <tbody md-body>\r\n        <tr md-row md-select="action" md-select-id="id" ng-repeat="action in vm_dc.triggerActions.rows">\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.id }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ \'TOOLS.\' + (action.action | snakecase | uppercase) | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\'" md-cell>\r\n            {{ action.data1 === \'1\' ? \'CTI URL\' : \'Popup\' }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ (vm_dc.lists | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ action.data2 === \'1\' ? \'TOOLS.YES\' : \'TOOLS.NO\' | uppercase | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data1 }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'jscripty\'" md-cell>\r\n            {{ (vm_dc.projects | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\'" md-cell>\r\n            {{ vm_dc.integrationTypes[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zendesk\'" md-cell>\r\n            {{ (vm_dc.zendeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'desk\'" md-cell>\r\n            {{ (vm_dc.deskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zoho\'" md-cell>\r\n            {{ (vm_dc.zohoAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'salesforce\'" md-cell>\r\n            {{ (vm_dc.salesforceAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'sugarcrm\'" md-cell>\r\n            {{ (vm_dc.sugarcrmAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshdesk\'" md-cell>\r\n            {{ (vm_dc.freshdeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'vtiger\'" md-cell>\r\n            {{ (vm_dc.vtigerAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'dynamics365\'" md-cell>\r\n            {{ (vm_dc.dynamics365Accounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'servicenow\'" md-cell>\r\n            {{ (vm_dc.servicenowAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshsales\'" md-cell>\r\n            {{ (vm_dc.freshsalesAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\'" md-cell>\r\n            {{ vm_dc.motionBarOptions[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'2\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.createdAt | formatdate }}\r\n          </td>\r\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\r\n            <md-menu>\r\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\r\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\r\n              </md-button>\r\n              <md-menu-content width="3">\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\r\n                  <md-button ng-click="vm_dc.createOrEditTriggerAction($event, action)" translate="TOOLS.EDIT_ACTION">\r\n                    Edit Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\r\n                  <md-button ng-click="vm_dc.deleteConfirm(action, $event)" translate="TOOLS.DELETE_ACTION">\r\n                    Delete Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n              </md-menu-content>\r\n            </md-menu>\r\n          </td>\r\n        </tr>\r\n        <tr md-row ng-if="!vm_dc.triggerActions.rows.length">\r\n          <td md-cell colspan="5">\r\n            <div layout="row" layout-align="center center">\r\n              <span class="text-boxed-light" translate="TOOLS.NO_ACTION_AVAILABLE">No action\r\n                available</span>\r\n            </div>\r\n          </td>\r\n        </tr>\r\n      </tbody>\r\n    </table>\r\n  </md-table-container>\r\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.triggerActions.count }}" md-on-paginate="vm_dc.getTriggerActions" md-page-select>\r\n  </md-table-pagination>\r\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",'<md-dialog class="action-dialog" aria-label="New Action">\n  <form name="actionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAction ? \'TOOLS.NEW_ACTION\' : \'TOOLS.EDIT_ACTION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ACTION">Action</label>\n        <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" ng-change="vm.onActionSelection()" md-autofocus required ng-disabled="!vm.newAction">\n          <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'">\n            {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n          <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasIntegrationsPermissions) || !vm.newAction)">\n            {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n          <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTIONBAR\' | translate }} </md-option>\n          <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n          <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n          <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n          <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | translate }} </md-option>\n          <md-option ng-value="\'script\'"> {{ \'TOOLS.SCRIPT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'action\'].$error" ng-show="actionForm[\'action\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACTION_REQUIRED">Action field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'jscripty\'" class="md-block">\n        <label translate="TOOLS.PROJECT">Project</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.projects" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.LIST">List</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onListSelection()" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.SEARCH_FIELDS">Search fields</label>\n        <md-select name="fields" ng-model="vm.action.data3" ng-init="vm.onSearchFieldsInit()" multiple required>\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SEARCH_FIELDS_REQUIRED">Search fields field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATECONTACT">Create contact automatically</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onAutocreateSelection()" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATECONTACT_REQUIRED">AutoCreateContact field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\' && vm.action.data2 === \'1\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATE_FIELD">Autocreate field</label>\n        <md-select name="autocreateField" ng-model="vm.action.data4" ng-required="vm.action.data2 === \'1\'">\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATE_FIELD_REQUIRED">Autocreate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'GET\'">GET</md-option>\n          <md-option ng-value="\'POST\'">POST</md-option>\n          <md-option ng-value="\'PUT\'">PUT</md-option>\n          <md-option ng-value="\'DELETE\'">DELETE</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TIMEOUT">Timeout</label>\n        <input type="number" name="data5" ng-model="vm.action.data5" min="1" max="10" ng-required="true">\n        <div class="hint"><span translate="TOOLS.HELP.TIMEOUT"></span></div>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>10</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.HEADERS">Headers</label>\n        <textarea name="data6" ng-model="vm.action.data6"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.HEADERS"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\' && (vm.action.data1 == \'POST\' || vm.action.data1 == \'PUT\')" class="md-block">\n        <label translate="TOOLS.BODY">Body</label>\n        <textarea name="data7" ng-model="vm.action.data7"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.BODY"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_TYPE">Script_Type</label>\n        <input type="input" name="data2" ng-model="vm.action.data2">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_TYPE"></span></div>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_TYPE_REQUIRED">Script_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_INFO">Script_Info</label>\n        <input type="input" name="data1" ng-model="vm.action.data1">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_INFO"></span></div>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_INFO_REQUIRED">Script_Info field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT">Script</label>\n        <textarea name="data3" ng-model="vm.action.data3" required></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_REQUIRED">Script field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'" class="md-block">\n        <label translate="TOOLS.INTEGRATION">Integration</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-init="vm.onIntegrationInit()" ng-change="vm.onIntegrationSelection()" required>\n          <md-option ng-value="\'desk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1306])">Desk</md-option>\n          <md-option ng-value="\'dynamics365\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1309]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1309])">Dynamics365</md-option>\n          <md-option ng-value="\'freshdesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1303])">Freshdesk</md-option>\n          <md-option ng-value="\'freshsales\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1304]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1304])">Freshsales</md-option>\n          <md-option ng-value="\'salesforce\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1302])">Salesforce</md-option>\n          <md-option ng-value="\'servicenow\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1310]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1310])">ServiceNow</md-option>\n          <md-option ng-value="\'sugarcrm\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1305])">SugarCRM</md-option>\n          <md-option ng-value="\'vtiger\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1308])">vTiger</md-option>\n          <md-option ng-value="\'zendesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1301])">Zendesk</md-option>\n          <md-option ng-value="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.INTEGRATION_REQUIRED">Integration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\' && vm.action.data1" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onIntegrationAccountSelection()" ng-disabled="vm.action.isIntegrationDisabled" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.accounts">{{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'  && vm.action.data1 && vm.action.data2" class="md-block">\n        <label translate="TOOLS.CONFIGURATION">Configuration</label>\n        <md-select name="data3" ng-model="vm.action.data3" required ng-disabled="vm.action.isIntegrationDisabled">\n          <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.configurations | filter : { AccountId: (vm.action.data2 | toInteger) } : true">{{\n            data3.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CONFIGURATION_REQUIRED">Configuration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n          <md-option ng-value="\'2\'">Windows App</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.APPLICATION">Application</label>\n        <input type="text" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.ARGUMENTS">Arguments</label>\n        <input type="text" name="data3" ng-model="vm.action.data3">\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.action.action == \'motionbar\' || vm.action.action == \'browser\') && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.EVENTVARIABLES">EventVariables</label>\n        <md-select name="data3" ng-model="vm.action.data3" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="TOOLS.HELP.EVENTVARIABLES"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EVENTVARIABLES_REQUIRED">EventVariables field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.LOCATION">Location</label>\n        <md-select name="data4" ng-model="vm.action.data4" required ng-change="vm.onActionLocationChange()">\n          <md-option ng-value="0"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n          <md-option ng-value="1"> {{ \'TOOLS.NEW_WINDOW\' | translate }} </md-option>\n          <md-option ng-value="2"> {{ \'TOOLS.MOTION_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LOCATION_REQUIRED">Location field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWWIDTH">WindowWidth</label>\n        <input type="text" name="data5" ng-model="vm.action.data5">\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWWIDTH_REQUIRED">WindowWidth field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWHEIGHT">WindowHeight</label>\n        <input type="text" name="data6" ng-model="vm.action.data6">\n        <div ng-messages="actionForm[\'data6\'].$error" ng-show="actionForm[\'data6\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWHEIGHT_REQUIRED">WindowHeight field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAction" ng-click="vm.saveAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid || actionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAction" ng-click="vm.addNewAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ACTION" translate-attr-aria-label="TOOLS.ADD_ACTION">\n          ADD ACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAction" ng-click="vm.deleteAction($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html",'<div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">All Conditions</span>\n      <ms-search-bar on-search="vm_dc.getAllConditions()" query="vm_dc.query" debounce="300" direction="down">\n      </ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAllConditions.length }}\n        {{ vm_dc.selectedAllConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAllConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAllConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAllConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.allConditions.rows">\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.id }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[allCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + allCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>\n            {{ allCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':allCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':allCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>\n            {{ allCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" translate="TOOLS.EDIT_ALLCONDITION">\n                    Edit AllCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(allCondition, $event)" translate="TOOLS.DELETE_ALLCONDITION">\n                    Delete AllCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.allConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ALLCONDITION_AVAILABLE">No condition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.allConditions.count }}" md-on-paginate="vm_dc.getAllConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",'<md-dialog class="allCondition-dialog" aria-label="New AllCondition">\n  <form name="allConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAllCondition ? \'TOOLS.NEW_ALLCONDITION\' : \'TOOLS.EDIT_ALLCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.allCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'field\'].$error" ng-show="allConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.allCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'operator\'].$error" ng-show="allConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAllCondition" ng-click="vm.saveAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid || allConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAllCondition" ng-click="vm.addNewAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ALLCONDITION" translate-attr-aria-label="TOOLS.ADD_ALLCONDITION">\n          ADD ALLCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAllCondition" ng-click="vm.deleteAllCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html",'<div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n      <ms-search-bar on-search="vm_dc.getAnyConditions()" query="vm_dc.query" debounce="300" direction="down"></ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAnyConditions.length }}\n        {{ vm_dc.selectedAnyConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAnyConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAnyConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAnyConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.anyConditions.rows">\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.id}}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[anyCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + anyCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>\n            {{ anyCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':anyCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':anyCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>\n            {{ anyCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" translate="TOOLS.EDIT_ANYCONDITION">\n                    Edit AnyCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(anyCondition, $event)" translate="TOOLS.DELETE_ANYCONDITION">\n                    Delete AnyCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.anyConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.anyConditions.count }}" md-on-paginate="vm_dc.getAnyConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",'<md-dialog class="anyCondition-dialog" aria-label="New AnyCondition">\n  <form name="anyConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAnyCondition ? \'TOOLS.NEW_ANYCONDITION\' : \'TOOLS.EDIT_ANYCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.anyCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'field\'].$error" ng-show="anyConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.anyCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'operator\'].$error" ng-show="anyConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAnyCondition" ng-click="vm.saveAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid || anyConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAnyCondition" ng-click="vm.addNewAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ANYCONDITION" translate-attr-aria-label="TOOLS.ADD_ANYCONDITION">\n          ADD ANYCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAnyCondition" ng-click="vm.deleteAnyCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/view.html",'<div id="tools-trigger" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-triggers-button md-icon-button" aria-label="Go to triggers" ng-click="vm.gotoTriggers()" translate translate-attr-aria-label="TOOLS.GO_TO_TRIGGERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="trigger-image" hide-xs>\n          <img ng-src="assets/images/business/triggers.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">#{{ vm.trigger.id }}\n            <span ng-if="vm.trigger.name">{{ vm.trigger.name }}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{ vm.trigger.createdAt | date:\'medium\' }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrigger()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (allconditionsForm.$invalid) || (anyconditionsForm.$invalid) || (actionsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trigger.name" required autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CHANNEL">Channel</label>\n                <md-select name="channel" ng-model="vm.trigger.channel" required disabled>\n                  <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n                  <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel">\n                    {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n                  <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n                  <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n                  <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n                  <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n                  <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }}\n                  </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'channel\'].$error" ng-show="generalForm[\'channel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trigger.status" aria-label="Status" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="TOOLS.STATUS">Status</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trigger.description" ng-disabled="!vm.crudPermissions.canEdit">\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.CONDITIONS&ACTIONS">CONDITIONS&ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container allconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/actions/actions.html\'">\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/triggers.html",'<div id="triggers" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRIGGERS">Triggers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTriggers.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedTriggers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-triggers-count">\n          <span>{{ vm.selectedTriggers.length }}</span>\n          <span translate="TOOLS.SELECTED">Selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTriggers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTriggers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTriggers" csv-label="true" filename="triggers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTriggers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n      \x3c!-- TRIGGER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTriggers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTriggers">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="channel">{{ \'TOOLS.CHANNEL\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'TOOLS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.triggers.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trigger" md-select-id="id" ng-repeat="trigger in vm.triggers.rows">\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="id ">{{ trigger.id }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="name ">{{ trigger.name }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="channel ">\n                  {{ \'TOOLS.\' + trigger.channel | uppercase | translate }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="status ">\n                  <md-icon md-colors="{color: {{ trigger.status ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ trigger.status ? \'icon-check\' : \'icon-close\' }}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="description ">\n                  {{ trigger.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.goToEditState(trigger)" translate="TOOLS.EDIT_TRIGGER">\n                          Edit Trigger\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(trigger, $event)" translate="TOOLS.DELETE_TRIGGER">\n                          Delete Trigger\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.triggers.count }}" md-on-paginate="vm.getTriggers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRIGGER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD TRIGGER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trigger-button" ng-click="vm.createOrEditTrigger($event)" aria-label="add trigger" translate translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRIGGER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/trunks/create/dialog.html",'<md-dialog class="trunk-dialog" aria-label="New Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.HOST">host</label>\n        <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n        <div ng-messages="trunkForm[\'host\'].$error" ng-show="trunkForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.SECRET">secret</label>\n        <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n        <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n        <div ng-messages="trunkForm[\'secret\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n        <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser">\n\n        <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n        <div ng-messages="trunkForm[\'defaultuser\'].$error" ng-show="trunkForm[\'defaultuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REGISTRY">registry</label>\n        <input type="text" name="registry" ng-model="vm.trunk.registry">\n\n        <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n        <div ng-messages="trunkForm[\'registry\'].$error" ng-show="trunkForm[\'registry\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trunk.description">\n\n        <div ng-messages="trunkForm[\'description\'].$error" ng-show="trunkForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrunk" ng-click="vm.saveTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid || trunkForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrunk" ng-click="vm.addNewTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRUNK" translate-attr-aria-label="TOOLS.ADD_TRUNK">\n          ADD TRUNK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrunk" ng-click="vm.deleteTrunk($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/clone/clone.html",'<md-dialog class="trunk-dialog" aria-label="Clone Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_TRUNK" translate-attr-aria-label="TOOLS.CLONE_TRUNK">\n        CLONE TRUNK\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/view.html",'<div id="tools-trunk" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-trunks-button md-icon-button" aria-label="Go to trunks" ng-click="vm.gotoTrunks()" translate translate-attr-aria-label="TOOLS.GO_TO_TRUNKS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="trunk-image" hide-xs>\n          <img ng-src="assets/images/business/trunks.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.trunk.id}}\n            <span ng-if="vm.trunk.name">{{vm.trunk.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.trunk.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.trunk, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.trunk, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrunk()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (otherFieldsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trunk.active" aria-label="active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.HOST">host</label>\n                <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SECRET">secret</label>\n                <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n                <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n                <div ng-messages="generalForm[\'secret\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n                <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n                <div ng-messages="generalForm[\'defaultuser\'].$error" ng-show="generalForm[\'defaultuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CONTEXT">context</label>\n                <md-select name="context" ng-model="vm.trunk.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CONTEXT_REQUIRED">context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLERID">callerid</label>\n                <input type="text" name="callerid" ng-model="vm.trunk.callerid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALLERID"></span></div>\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLERID_REQUIRED">callerid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.trunk.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DTMFMODE">dtmfmode</label>\n                <md-select name="dtmfmode" ng-model="vm.trunk.dtmfmode" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rfc2833\'">rfc2833</md-option>\n                  <md-option ng-value="\'info\'">info</md-option>\n                  <md-option ng-value="\'shortinfo\'">shortinfo</md-option>\n                  <md-option ng-value="\'inband\'">inband</md-option>\n                  <md-option ng-value="\'auto\'">auto</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DTMFMODE"></span></div>\n                <div ng-messages="generalForm[\'dtmfmode\'].$error" ng-show="generalForm[\'dtmfmode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DTMFMODE_REQUIRED">dtmfmode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAT">nat</label>\n                <md-select name="nat" ng-model="vm.trunk.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAT_REQUIRED">nat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.QUALIFY">qualify</label>\n                <md-select name="qualify" ng-model="vm.trunk.qualify" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.QUALIFY"></span></div>\n                <div ng-messages="generalForm[\'qualify\'].$error" ng-show="generalForm[\'qualify\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.QUALIFY_REQUIRED">qualify field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.trunk.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g723\'">g723</md-option>\n                  <md-option ng-value="\'g726\'">g726</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'ilbc\'">ilbc</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.INSECURE">insecure</label>\n                <md-select name="insecure" ng-model="vm.trunk.insecure" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'port\'">port</md-option>\n                  <md-option ng-value="\'invite\'">invite</md-option>\n                  <md-option ng-value="\'very\'">very</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.INSECURE"></span></div>\n                <div ng-messages="generalForm[\'insecure\'].$error" ng-show="generalForm[\'insecure\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.INSECURE_REQUIRED">insecure field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALL_LIMIT">call_limit</label>\n                <input type="number" name="call_limit" ng-model="vm.trunk.call_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALL_LIMIT"></span></div>\n                <div ng-messages="generalForm[\'call_limit\'].$error" ng-show="generalForm[\'call_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALL_LIMIT_REQUIRED">call_limit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trunk.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.REGISTRY">registry</label>\n                <input type="text" name="registry" ng-model="vm.trunk.registry" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n                <div ng-messages="advancedForm[\'registry\'].$error" ng-show="advancedForm[\'registry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DIRECTMEDIA">directmedia</label>\n                <md-select name="directmedia" ng-model="vm.trunk.directmedia" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'nonat\'">nonat</md-option>\n                  <md-option ng-value="\'update\'">update</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DIRECTMEDIA"></span></div>\n                <div ng-messages="advancedForm[\'directmedia\'].$error" ng-show="advancedForm[\'directmedia\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DIRECTMEDIA_REQUIRED">directmedia field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLCOUNTER">callcounter</label>\n                <md-select name="callcounter" ng-model="vm.trunk.callcounter" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CALLCOUNTER"></span></div>\n                <div ng-messages="advancedForm[\'callcounter\'].$error" ng-show="advancedForm[\'callcounter\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLCOUNTER_REQUIRED">callcounter field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMDOMAIN">fromdomain</label>\n                <input type="text" name="fromdomain" ng-model="vm.trunk.fromdomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMDOMAIN"></span></div>\n                <div ng-messages="advancedForm[\'fromdomain\'].$error" ng-show="advancedForm[\'fromdomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMDOMAIN_REQUIRED">fromdomain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMUSER">fromuser</label>\n                <input type="text" name="fromuser" ng-model="vm.trunk.fromuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMUSER"></span></div>\n                <div ng-messages="advancedForm[\'fromuser\'].$error" ng-show="advancedForm[\'fromuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMUSER_REQUIRED">fromuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OUTBOUNDPROXY">outboundproxy</label>\n                <input type="text" name="outboundproxy" ng-model="vm.trunk.outboundproxy" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.OUTBOUNDPROXY"></span></div>\n                <div ng-messages="advancedForm[\'outboundproxy\'].$error" ng-show="advancedForm[\'outboundproxy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.OUTBOUNDPROXY_REQUIRED">outboundproxy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ADD_PHONE_TO_URI">Add_phone_to_URI</label>\n                <md-select name="usereqphone" ng-model="vm.trunk.usereqphone" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ADD_PHONE_TO_URI"></span></div>\n                <div ng-messages="advancedForm[\'usereqphone\'].$error" ng-show="advancedForm[\'usereqphone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ADD_PHONE_TO_URI_REQUIRED">Add_phone_to_URI field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRUST_REMOTE_PARTY_ID">Trust_Remote_Party_ID</label>\n                <md-select name="trustrpid" ng-model="vm.trunk.trustrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRUST_REMOTE_PARTY_ID"></span></div>\n                <div ng-messages="advancedForm[\'trustrpid\'].$error" ng-show="advancedForm[\'trustrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRUST_REMOTE_PARTY_ID_REQUIRED">Trust_Remote_Party_ID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SEND_REMOTE_PARTY_ID_HEADER">Send_Remote_Party_ID_header</label>\n                <md-select name="sendrpid" ng-model="vm.trunk.sendrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n\n                  <md-option ng-value="\'pai\'"> {{ \'TOOLS.PAI\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.SEND_REMOTE_PARTY_ID_HEADER"></span></div>\n                <div ng-messages="advancedForm[\'sendrpid\'].$error" ng-show="advancedForm[\'sendrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.SEND_REMOTE_PARTY_ID_HEADER_REQUIRED">Send_Remote_Party_ID_header field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ENCRYPTION">encryption</label>\n                <md-select name="encryption" ng-model="vm.trunk.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="advancedForm[\'encryption\'].$error" ng-show="advancedForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ENCRYPTION_REQUIRED">encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.PORT">port</label>\n                <input type="number" name="port" ng-model="vm.trunk.port" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.PORT"></span></div>\n                <div ng-messages="advancedForm[\'port\'].$error" ng-show="advancedForm[\'port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PORT_REQUIRED">port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.trunk.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRANSPORT"></span></div>\n                <div ng-messages="advancedForm[\'transport\'].$error" ng-show="advancedForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.T38PT_UDPTL">t38pt_udptl</label>\n                <input type="string" name="t38pt_udptl" ng-model="vm.trunk.t38pt_udptl" value="no" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.T38PT_UDPTL"></span></div>\n                <div ng-messages="advancedForm[\'t38pt_udptl\'].$error" ng-show="advancedForm[\'t38pt_udptl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.T38PT_UDPTL_REQUIRED">t38pt_udptl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.trunk.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'videosupport\'].$error" ng-show="advancedForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.OTHERFIELDS">OTHERFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container otherfields md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.OTHERFIELDS">OTHERFIELDS</div>\n            </div>\n            <form name="otherFieldsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OTHERFIELDS">otherFields</label>\n                <textarea name="otherFields" ng-model="vm.trunk.otherFields" autofocus></textarea>\n                <div class="hint"><span translate="TOOLS.HELP.OTHERFIELDS"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/trunks/trunks.html",'<div id="trunks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRUNKS">Trunks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTrunks.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTrunks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-trunks-count">\n          <span>{{vm.selectedTrunks.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTrunks()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTrunks()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTrunks" csv-label="true" filename="trunks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTrunks($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- TRUNK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTrunks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'TOOLS.HOST\' | translate }}</th>\n                <th md-column md-order-by="registry">{{ \'TOOLS.REGISTRY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.trunks.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trunk" md-select-id="id" ng-repeat="trunk in vm.trunks.rows">\n                <td md-cell ng-if="trunk.userpic"><img class="avatar" alt="{{trunk.name}}" ng-src="api/users/{{trunk.id}}/avatar" /></td>\n                <td md-cell ng-if="!trunk.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{trunk.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="id ">{{trunk.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="name ">{{trunk.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{trunk.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{trunk.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="host ">{{trunk.host}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="registry ">{{trunk.registry}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="description ">{{trunk.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(trunk, $event    )" translate="TOOLS.EDIT_TRUNK">\n                          Edit Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(trunk, $event    )" translate="TOOLS.CLONE_TRUNK">\n                          clone Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(trunk, $event    )" translate="TOOLS.GOTOREALTIME_TRUNK">\n                          goToRealtime Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(trunk, $event    )" translate="TOOLS.DELETE_TRUNK">\n                          Delete Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.trunks.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRUNK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TRUNK BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trunk-button" ng-click="vm.createOrEditTrunk($event)" aria-label="add trunk" translate translate-attr-aria-label="TOOLS.ADD_TRUNK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRUNK BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/variables/create/dialog.html",'<md-dialog class="variable-dialog" aria-label="New Variable">\n  <form name="variableForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.variable.name" ng-required="true" autofocus>\n\n        <div ng-messages="variableForm[\'name\'].$error" ng-show="variableForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.variable.description">\n\n        <div ng-messages="variableForm[\'description\'].$error" ng-show="variableForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVariable" ng-click="vm.saveVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid || variableForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVariable" ng-click="vm.addNewVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_VARIABLE" translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n          ADD VARIABLE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVariable" ng-click="vm.deleteVariable($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/variables/variables.html",'<div id="variables" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.VARIABLES">Variables</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVariables.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVariables =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-variables-count">\n          <span>{{vm.selectedVariables.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVariables()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVariables()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVariables" csv-label="true" filename="variables.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVariables($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VARIABLE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVariables" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVariables">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.variables.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="variable" md-select-id="id" ng-repeat="variable in vm.variables.rows">\n                <td md-cell ng-if="variable.userpic"><img class="avatar" alt="{{variable.name}}" ng-src="api/users/{{variable.id}}/avatar" /></td>\n                <td md-cell ng-if="!variable.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{variable.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="id ">{{variable.id}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="name ">{{variable.name}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="description ">{{variable.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(variable, $event    )" translate="TOOLS.EDIT_VARIABLE">\n                          Edit Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(variable, $event    )" translate="TOOLS.DELETE_VARIABLE">\n                          Delete Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.variables.count}}" md-on-paginate="vm.getVariables" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VARIABLE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VARIABLE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-variable-button" ng-click="vm.createOrEditVariable($event)" aria-label="add variable" translate translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VARIABLE BUTTON --\x3e\n</div>'),e.put("app/main/apps/video/views/screenRecordings/create/dialog.html",'<md-dialog class="screenRecording-dialog" aria-label="New screenRecording">\n  <form name="screenRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VIDEO.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.screenRecording.rating" autofocus ng-disabled="!vm.newscreenRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VIDEO.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="screenRecordingForm[\'rating\'].$error" ng-show="screenRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VIDEO.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newscreenRecording" ng-click="vm.savescreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid || screenRecordingForm.$pristine" aria-label="SAVE" translate="VIDEO.SAVE" translate-attr-aria-label="VIDEO.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newscreenRecording" ng-click="vm.addNewscreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid" aria-label="ADD" translate="VIDEO.ADD_SCREENRECORDING" translate-attr-aria-label="VIDEO.ADD_SCREENRECORDING">\n          ADD SCREENRECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newscreenRecording" ng-click="vm.deletescreenRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VIDEO.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VIDEO.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/partialViews/play.html",'<md-dialog class="play-dialog" aria-label="play">\n  <form name="playForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="{{ vm.app.toUpperCase() }}.{{  vm.label.toUpperCase() }}">Play Recording</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-sm flex>\n        \x3c!-- VIRTUAL field --\x3e\n        <md-card>\n\n          <md-card-title ng-if="vm.actionOptions.upperTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>: {{ vm.recording.updatedAt}}</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          \x3c!-- video recording directive --\x3e\n          <ms-dialog-recording ng-if="vm.format" id="vm.recording.id" title="vm.filename" element="vm.element" model="vm.route" path="vm.path" class="md-card-image"></ms-dialog-recording>\n          \x3c!-- / video recording directive --\x3e\n\n          <span ng-if="!vm.format">\n            <em ng-if="vm.found">{{ vm.app.toUpperCase() + \'.CANT_PLAY_THIS_FILE\' | translate }}</em>\n            <em ng-if="!vm.found">{{ vm.app.toUpperCase() + \'.FILE_NOT_FOUND\' | translate }}</em>\n          </span>\n\n          <md-card-title ng-if="vm.actionOptions.lowerTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>:{{ vm.recording.updatedAt}}</span>\n              <span ng-if="vm.actionOptions.properties" class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.PROPERTIES"></span>:</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          <md-card-content ng-if="vm.actionOptions.properties">\n            <md-list>\n              <md-list-item class="md-2-line" ng-repeat="(key,value) in vm.properties" ng-click="null" ng-if="key != \'value\' && key != \'updatedAt\' && key != \'queue\'">\n\n                <md-icon ng-if="vm.icon" class="md-avatar-icon" md-font-icon="vm.actionOptions.propertiesIcon" class="s24"></md-icon>\n\n                <div class="md-list-item-text" layout="column">\n                  <p><b><span translate="{{ vm.app.toUpperCase() }}.{{ key.toUpperCase() }}"></span></b></p>\n                  <p>{{ value }}\n                    <p>\n                </div>\n              </md-list-item>\n            </md-list>\n          </md-card-content>\n\n\n        </md-card>\n      </div>\n    </md-dialog-content>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/screenRecordings.html",'<div id="screenRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-video" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VIDEO.SCREENRECORDINGS">ScreenRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VIDEO.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScreenRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScreenRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScreenRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VIDEO.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-screenRecordings-count">\n          <span>{{vm.selectedScreenRecordings.length}}</span>\n          <span translate="VIDEO.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VIDEO.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScreenRecordings()" translate="VIDEO.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScreenRecordings()" translate="VIDEO.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScreenRecordings" csv-label="true" filename="screenRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScreenRecordings($event)" aria-label="delete selected" translate translate-attr-label="VIDEO.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- SCREENRECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScreenRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScreenRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VIDEO.ID\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VIDEO.RATING\' | translate }}</th>\n                <th md-column md-order-by="UserId">{{ \'VIDEO.AGENT\' | translate }}</th>\n                <th md-column md-order-by="duration">{{ \'VIDEO.DURATION\' | translate }}</th>\n                <th md-column md-order-by="startedAt">{{ \'VIDEO.RECORDSTARTTIME\' | translate }}</th>\n                <th md-column md-order-by="closedAt">{{ \'VIDEO.RECORDENDTIME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.screenRecordings.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VIDEO.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="screenRecording" md-select-id="id" ng-repeat="screenRecording in vm.screenRecordings.rows">\n                <td md-cell ng-if="screenRecording.userpic"><img class="avatar" alt="{{screenRecording.name}}" ng-src="api/users/{{screenRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!screenRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{screenRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="id ">{{screenRecording.id}}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="screenRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:screenRecording.rating"></md-icon><span ng-hide="screenRecording.rating" translate="VIDEO.NO_RATING">No rating</span>\n                </td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="UserId ">{{ (vm.users | filter : {\'id\':screenRecording.UserId} : true)[0].fullname }}</td>\n                <td md-cell><span ng-bind="vm.convertDuration(screenRecording.duration)"></span></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="startedAt ">{{screenRecording.startedAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="closedAt ">{{screenRecording.closedAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VIDEO.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.playrecording(screenRecording, $event  , \'value\'  , \'play_screenrecording\'  , \'video\' )" translate="VIDEO.PLAY_SCREENRECORDING">\n                          play screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadScreenRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(screenRecording, $event  , \'screen/recordings\'   )" translate="VIDEO.DOWNLOAD_SCREENRECORDING">\n                          Download screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(screenRecording, $event    )" translate="VIDEO.DELETE_SCREENRECORDING">\n                          Delete screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VIDEO.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VIDEO.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VIDEO.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.screenRecordings.count}}" md-on-paginate="vm.getScreenRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCREENRECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/routing/dialog.html",'<md-dialog ng-init="vm.init()" class="voice-routing-dialog" aria-label="New routing application">\n  <form name="routingAppForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'VOICE.EDIT_\' + vm.application.appType | uppercase | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-switch="vm.application.appType" ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div ng-switch-when="agi">\n        <div ng-include="\'app/main/apps/voice/routing/views/agi.html\'"></div>\n      </div>\n      <div ng-switch-when="custom">\n        <div ng-include="\'app/main/apps/voice/routing/views/custom.html\'"></div>\n      </div>\n      <div ng-switch-when="dial">\n        <div ng-include="\'app/main/apps/voice/routing/views/dial.html\'"></div>\n      </div>\n      <div ng-switch-when="externalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/externalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="goTo">\n        <div ng-include="\'app/main/apps/voice/routing/views/goTo.html\'"></div>\n      </div>\n      <div ng-switch-when="hangup">\n        <div ng-include="\'app/main/apps/voice/routing/views/hangup.html\'"></div>\n      </div>\n      <div ng-switch-when="internalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/internalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="outboundDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/outboundDial.html\'"></div>\n      </div>\n      <div ng-switch-when="playback">\n        <div ng-include="\'app/main/apps/voice/routing/views/playback.html\'"></div>\n      </div>\n      <div ng-switch-when="queue">\n        <div ng-include="\'app/main/apps/voice/routing/views/queue.html\'"></div>\n      </div>\n      <div ng-switch-when="ringGroup">\n        <div ng-include="\'app/main/apps/voice/routing/views/ringGroup.html\'"></div>\n      </div>\n      <div ng-switch-when="set">\n        <div ng-include="\'app/main/apps/voice/routing/views/set.html\'"></div>\n      </div>\n      <div ng-switch-when="voicemail">\n        <div ng-include="\'app/main/apps/voice/routing/views/voicemail.html\'"></div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveRoutingApp()" class="send-button md-accent md-raised" ng-disabled="routingAppForm.$invalid || routingAppForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/interval/dialog.html",'<md-dialog ng-init="vm.initialize()" class="interval-dialog" aria-label="Edit Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'TOOLS.EDIT_INTERVAL\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.crudPermissions.canEdit" ng-change="vm.onTypeChange()">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | startcase }}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.crudPermissions.canEdit" required>\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals.rows" ng-disabled="interval.canSelect === false">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="start center">\n      <md-button type="submit" ng-if="vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/views/agi.html",'<md-input-container class="md-block">\n  <label translate="VOICE.PROJECT">Project</label>\n  <md-select name="project" ng-model="vm.application.project" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'agi://127.0.0.1/square,{{project.name}}\'" ng-repeat="project in vm.projects.rows" ng-disabled="project.canSelect === false">{{ project.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'project\'].$error" ng-show="routingAppForm[\'project\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/custom.html",'<md-input-container class="md-block">\n  <label translate="VOICE.APPLICATION_NAME">Application_Name</label>\n  <input type="text" name="app" ng-model="vm.application.app" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'app\'].$error" ng-show="routingAppForm[\'app\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.APPLICATION_NAME_REQUIRED">Application_Name field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ARGUMENTS">Arguments</label>\n  <input type="text" name="appdata" ng-model="vm.application.appdata" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'appdata\'].$error" ng-show="routingAppForm[\'appdata\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/dial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TECHNOLOGY/RESOURCE">Technology/Resource</label>\n  <input type="text" name="tech" ng-model="vm.application.tech" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'tech\'].$error" ng-show="routingAppForm[\'tech\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TECHNOLOGY/RESOURCE_REQUIRED">Technology/Resource field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/externalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PHONE">Phone</label>\n  <input type="text" name="phone" ng-model="vm.application.phone" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'phone\'].$error" ng-show="routingAppForm[\'phone\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/goTo.html",'<md-input-container class="md-block">\n  <label translate="VOICE.CONTEXT">Context</label>\n  <md-select name="context" ng-model="vm.application.context" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{\n      context.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'context\'].$error" ng-show="routingAppForm[\'context\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.EXTENSION">Extension</label>\n  <input type="text" name="extension" ng-model="vm.application.extension" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'extension\'].$error" ng-show="routingAppForm[\'extension\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.EXTENSION_REQUIRED">Extension field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PRIORITY">Priority</label>\n  <input type="text" name="priority" ng-model="vm.application.priority" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'priority\'].$error" ng-show="routingAppForm[\'priority\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/hangup.html","<md-input-container class=\"md-block\">\n  <label translate=\"VOICE.HANGUP_CAUSE\">Hangup_Cause</label>\n  <md-select name=\"appdata\" ng-model=\"vm.application.appdata\" autofocus required ng-disabled=\"!vm.crudPermissions.canEdit\">\n    <md-option ng-value=\"'1'\"> {{ 'VOICE.HANGUPCAUSE_1' | translate }} </md-option>\n    <md-option ng-value=\"'16'\"> {{ 'VOICE.HANGUPCAUSE_16' | translate }} </md-option>\n    <md-option ng-value=\"'17'\"> {{ 'VOICE.HANGUPCAUSE_17' | translate }} </md-option>\n    <md-option ng-value=\"'18'\"> {{ 'VOICE.HANGUPCAUSE_18' | translate }} </md-option>\n    <md-option ng-value=\"'21'\"> {{ 'VOICE.HANGUPCAUSE_21' | translate }} </md-option>\n    <md-option ng-value=\"'22'\"> {{ 'VOICE.HANGUPCAUSE_22' | translate }} </md-option>\n    <md-option ng-value=\"'27'\"> {{ 'VOICE.HANGUPCAUSE_27' | translate }} </md-option>\n    <md-option ng-value=\"'38'\"> {{ 'VOICE.HANGUPCAUSE_38' | translate }} </md-option>\n    <md-option ng-value=\"'41'\"> {{ 'VOICE.HANGUPCAUSE_41' | translate }} </md-option>\n  </md-select>\n  <div ng-messages=\"routingAppForm['appdata'].$error\" ng-show=\"routingAppForm['appdata'].$touched\" role=\"alert\">\n    <div ng-message=\"required\">\n      <span translate=\"VOICE.ERRORS.HANGUP_CAUSE_REQUIRED\">Hangup_Cause field is required</span>\n    </div>\n  </div>\n</md-input-container>"),e.put("app/main/apps/voice/routing/views/internalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.user" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/outboundDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.CALLER_ID">Caller_ID</label>\n  <input type="text" name="callerID" ng-model="vm.application.callerID" ng-disabled="!vm.crudPermissions.canEdit">\n  <div class="hint"><span translate="VOICE.HELP.CALLER_ID"></span></div>\n  <div ng-messages="routingAppForm[\'callerID\'].$error" ng-show="routingAppForm[\'callerID\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CALLER_ID_REQUIRED">Caller_ID field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PREFIX">Prefix</label>\n  <input type="text" name="prefix" ng-model="vm.application.prefix" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'prefix\'].$error" ng-show="routingAppForm[\'prefix\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TAGS">Tags</label>\n  <md-select name="tag" ng-model="vm.application.tag" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'--\'">None</md-option>\n    <md-option ng-value="tag.name" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{ tag.name }}\n    </md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'tag\'].$error" ng-show="routingAppForm[\'tag\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TAGS_REQUIRED">Tags field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/playback.html",'<md-input-container class="md-block">\n  <label translate="VOICE.AUDIO_FILES">Audio_Files</label>\n  <md-select name="sound" ng-model="vm.application.appdata" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AUDIO_FILES_REQUIRED">Audio_Files field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/queue.html",'<md-input-container class="md-block">\n  <label translate="VOICE.QUEUE">Queue</label>\n  <md-select name="queue" ng-model="vm.application.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows" ng-disabled="queue.canSelect === false">{{\n      queue.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'queue\'].$error" ng-show="routingAppForm[\'queue\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="URL" ng-model="vm.application.URL" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'URL\'].$error" ng-show="routingAppForm[\'URL\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ANNOUNCE_OVERRIDES">Announce_Overrides</label>\n  <md-select name="sound" ng-model="vm.application.sound" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'\'">None</md-option>\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ANNOUNCE_OVERRIDES_REQUIRED">Announce_Overrides field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.AGI">Agi</label>\n  <input type="text" name="agi" ng-model="vm.application.agi" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'agi\'].$error" ng-show="routingAppForm[\'agi\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AGI_REQUIRED">Agi field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.MACRO">Macro</label>\n  <input type="text" name="macro" ng-model="vm.application.macro" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'macro\'].$error" ng-show="routingAppForm[\'macro\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MACRO_REQUIRED">Macro field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.GOSUB">GoSub</label>\n  <input type="text" name="gosub" ng-model="vm.application.gosub" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'gosub\'].$error" ng-show="routingAppForm[\'gosub\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.GOSUB_REQUIRED">GoSub field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.RULE">Rule</label>\n  <input type="text" name="rule" ng-model="vm.application.rule" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'rule\'].$error" ng-show="routingAppForm[\'rule\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.RULE_REQUIRED">Rule field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.POSITION">Position</label>\n  <input type="number" name="position" ng-model="vm.application.position" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'position\'].$error" ng-show="routingAppForm[\'position\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.POSITION_REQUIRED">Position field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Position must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/ringGroup.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.users" autofocus multiple required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/set.html",'<md-input-container class="md-block">\n  <label translate="VOICE.VARIABLE">Variable</label>\n  <md-select name="variable" ng-model="vm.application.name" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="variable.name" ng-repeat="variable in vm.variables.rows" ng-disabled="variable.canSelect === false">{{\n      variable.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'variable\'].$error" ng-show="routingAppForm[\'variable\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.VALUE">Value</label>\n  <input type="text" name="value" ng-model="vm.application.value" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'value\'].$error" ng-show="routingAppForm[\'value\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VALUE_REQUIRED">Value field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/voicemail.html",'<md-input-container class="md-block">\n  <label translate="VOICE.MAILBOX@CONTEXT">Mailbox@Context</label>\n  <md-select name="voiceMail" ng-model="vm.application.voiceMail" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'{{voiceMail.mailbox}}@from-voicemail\'" ng-repeat="voiceMail in vm.voiceMails.rows" ng-disabled="voiceMail.canSelect === false">{{ voiceMail.mailbox }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'voiceMail\'].$error" ng-show="routingAppForm[\'voiceMail\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MAILBOX@CONTEXT_REQUIRED">Mailbox@Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/views/chanSpies/chanSpies.html",'<div id="chanSpies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CHANSPIES">ChanSpies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChanSpies.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChanSpies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chanSpies-count">\n          <span>{{vm.selectedChanSpies.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChanSpies()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChanSpies()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChanSpies" csv-label="true" filename="chanSpies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChanSpies($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CHANSPY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChanSpies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChanSpies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="prefix">{{ \'VOICE.PREFIX\' | translate }}</th>\n                <th md-column md-order-by="auth">{{ \'VOICE.AUTH\' | translate }}</th>\n                <th md-column md-order-by="record">{{ \'VOICE.RECORD\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chanSpies.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chanSpy" md-select-id="id" ng-repeat="chanSpy in vm.chanSpies.rows">\n                <td md-cell ng-if="chanSpy.userpic"><img class="avatar" alt="{{chanSpy.name}}" ng-src="api/users/{{chanSpy.id}}/avatar" /></td>\n                <td md-cell ng-if="!chanSpy.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chanSpy.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="id ">{{chanSpy.id}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="name ">{{chanSpy.name}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="prefix ">{{chanSpy.prefix}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="auth ">\n                  <md-icon md-colors="{color: {{chanSpy.auth ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.auth ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="record ">\n                  <md-icon md-colors="{color: {{chanSpy.record ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.record ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="description ">{{chanSpy.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(chanSpy, $event    )" translate="VOICE.EDIT_CHANSPY">\n                          Edit chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chanSpy, $event    )" translate="VOICE.DELETE_CHANSPY">\n                          Delete chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chanSpies.count}}" md-on-paginate="vm.getChanSpies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHANSPY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHANSPY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chanSpy-button" ng-click="vm.createOrEditchanSpy($event)" aria-label="add chanSpy" translate translate-attr-aria-label="VOICE.ADD_CHANSPY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHANSPY BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/chanSpies/create/dialog.html",'<md-dialog class="chanSpy-dialog" aria-label="New chanSpy">\n  <form name="chanSpyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chanSpy.name" ng-required="true" autofocus>\n\n        <div ng-messages="chanSpyForm[\'name\'].$error" ng-show="chanSpyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PREFIX">Prefix</label>\n        <input type="text" name="prefix" ng-model="vm.chanSpy.prefix" ng-required="true">\n\n        <div ng-messages="chanSpyForm[\'prefix\'].$error" ng-show="chanSpyForm[\'prefix\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OPTIONS">Options</label>\n        <md-select name="options" ng-model="vm.chanSpy.options" multiple required>\n          <md-option ng-value="\'b\'">b: Only spy on channels involved in a bridged call.</md-option>\n          <md-option ng-value="\'B\'">B: Instead of whispering on a single channel barge in on both channels involved in the call.</md-option>\n          <md-option ng-value="\'E\'">E: Exit when the spied-on channel hangs up.</md-option>\n          <md-option ng-value="\'o\'">o: Only listen to audio coming from this channel.</md-option>\n          <md-option ng-value="\'q\'">q: Don\'t play a beep when beginning to spy on a channel, or speak the selected channel name.</md-option>\n          <md-option ng-value="\'s\'">s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.</md-option>\n          <md-option ng-value="\'S\'">S: Stop when no more channels are left to spy on.</md-option>\n          <md-option ng-value="\'w\'">w: Enable whisper mode, so the spying channel can talk to the spied-on channel.</md-option>\n          <md-option ng-value="\'W\'">W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'options\'].$error" ng-show="chanSpyForm[\'options\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.auth" aria-label="Auth"><span translate="VOICE.AUTH">Auth</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.chanSpy.auth">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.chanSpy.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="chanSpyForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.record" aria-label="Record"><span translate="VOICE.RECORD">Record</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.chanSpy.record" class="md-block">\n        <label translate="VOICE.RECORDINGFORMAT">recordingFormat</label>\n        <md-select name="recordingFormat" ng-model="vm.chanSpy.recordingFormat" required>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'recordingFormat\'].$error" ng-show="chanSpyForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDINGFORMAT_REQUIRED">recordingFormat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chanSpy.description">\n\n        <div ng-messages="chanSpyForm[\'description\'].$error" ng-show="chanSpyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newchanSpy" ng-click="vm.savechanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid || chanSpyForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newchanSpy" ng-click="vm.addNewchanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CHANSPY" translate-attr-aria-label="VOICE.ADD_CHANSPY">\n          ADD CHANSPY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newchanSpy" ng-click="vm.deletechanSpy($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/contexts/contexts.html",'<div id="contexts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CONTEXTS">Contexts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContexts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContexts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contexts-count">\n          <span>{{vm.selectedContexts.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContexts()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContexts()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContexts" csv-label="true" filename="contexts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContexts($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CONTEXT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContexts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContexts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contexts.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="context" md-select-id="id" ng-repeat="context in vm.contexts.rows">\n                <td md-cell ng-if="context.userpic"><img class="avatar" alt="{{context.name}}" ng-src="api/users/{{context.id}}/avatar" /></td>\n                <td md-cell ng-if="!context.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{context.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="id ">{{context.id}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="name ">{{context.name}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="description ">{{context.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(context, $event    )" translate="VOICE.EDIT_CONTEXT">\n                          Edit Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(context, $event    )" translate="VOICE.DELETE_CONTEXT">\n                          Delete Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contexts.count}}" md-on-paginate="vm.getContexts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTEXT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTEXT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-context-button" ng-click="vm.createOrEditContext($event)" aria-label="add context" translate translate-attr-aria-label="VOICE.ADD_CONTEXT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTEXT BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/contexts/create/dialog.html",'<md-dialog class="context-dialog" aria-label="New Context">\n  <form name="contextForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.context.name" ng-required="true" autofocus>\n\n        <div ng-messages="contextForm[\'name\'].$error" ng-show="contextForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.context.description">\n\n        <div ng-messages="contextForm[\'description\'].$error" ng-show="contextForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContext" ng-click="vm.saveContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid || contextForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContext" ng-click="vm.addNewContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CONTEXT" translate-attr-aria-label="VOICE.ADD_CONTEXT">\n          ADD CONTEXT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContext" ng-click="vm.deleteContext($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="inbound-route-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInboundRoute ? \'VOICE.NEW_INBOUNDROUTE\' : \'VOICE.EDIT_INBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="inboundrouteForm[\'exten\'].$error" ng-show="inboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.inboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteForm[\'context\'].$error" ng-show="inboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="inboundrouteForm[\'alias\'].$error" ng-show="inboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.inboundRoute.description">\n        <div ng-messages="inboundrouteForm[\'description\'].$error" ng-show="inboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInboundRoute" ng-click="vm.saveInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid || inboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInboundRoute" ng-click="vm.addNewInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n          ADD INBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInboundRoute" ng-click="vm.deleteInboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-inbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-inbound-routes-button md-icon-button" aria-label="Go to inbound routes" ng-click="vm.gotoInboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="inbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/inboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.inboundRoute.id}}\n            <span ng-if="vm.inboundRoute.exten">{{vm.inboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.inboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.inboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.inboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate" style="width:200px">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",'<div id="inbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INBOUNDROUTES">InboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-inbound-routes-count">\n          <span>{{ vm.selectedInboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = vm.inboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInboundRoutes" csv-label="true" filename="inbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.inboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.inboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INBOUNDROUTE">\n                          Edit InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INBOUNDROUTE">\n                          Delete InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.inboundRoutes.count }}" md-on-paginate="vm.getInboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-inbound-route-button" ng-click="vm.createOrEditInboundRoute($event)" aria-label="add inbound route" translate translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="internal-route-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInternalRoute ? \'VOICE.NEW_INTERNALROUTE\' : \'VOICE.EDIT_INTERNALROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="internalrouteForm[\'exten\'].$error" ng-show="internalrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.internalRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteForm[\'context\'].$error" ng-show="internalrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="internalrouteForm[\'alias\'].$error" ng-show="internalrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.internalRoute.description">\n        <div ng-messages="internalrouteForm[\'description\'].$error" ng-show="internalrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInternalRoute" ng-click="vm.saveInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid || internalrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInternalRoute" ng-click="vm.addNewInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INTERNALROUTE" translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n          ADD INTERNALROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInternalRoute" ng-click="vm.deleteInternalRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/internalRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-internal-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-internal-routes-button md-icon-button" aria-label="Go to internal routes" ng-click="vm.gotoInternalRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INTERNALROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="internal-route-image" hide-xs>\n          <img ng-src="assets/images/business/internalroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.internalRoute.id}}\n            <span ng-if="vm.internalRoute.exten">{{vm.internalRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.internalRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInternalRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.internalRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.internalRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate" style="width:200px">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/internalRoutes.html",'<div id="internal-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INTERNALROUTES">InternalRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInternalRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInternalRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-internal-routes-count">\n          <span>{{ vm.selectedInternalRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = vm.internalRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInternalRoutes" csv-label="true" filename="internal_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInternalRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInternalRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInternalRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.internalRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.internalRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INTERNALROUTE">\n                          Edit InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INTERNALROUTE">\n                          Delete InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.internalRoutes.count }}" md-on-paginate="vm.getInternalRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-internal-route-button" ng-click="vm.createOrEditInternalRoute($event)" aria-label="add internal route" translate translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/musiconholds/create/dialog.html",'<md-dialog class="musiconhold-dialog" aria-label="New MusicOnHold">\n  <form name="musiconholdForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus ng-disabled="!vm.newMusicOnHold">\n\n        <div ng-messages="musiconholdForm[\'name\'].$error" ng-show="musiconholdForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.MODE">Mode</label>\n        <md-select name="mode" ng-model="vm.musiconhold.mode" required ng-disabled="!vm.newMusicOnHold">\n\n          <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'mode\'].$error" ng-show="musiconholdForm[\'mode\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.DIRECTORY">Directory</label>\n        <input type="" name="directory" ng-model="vm.musiconhold.directory">\n\n        <div ng-messages="musiconholdForm[\'directory\'].$error" ng-show="musiconholdForm[\'directory\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.APPLICATION">Application</label>\n        <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true">\n\n        <div ng-messages="musiconholdForm[\'application\'].$error" ng-show="musiconholdForm[\'application\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n        <label translate="VOICE.SORT">Sort</label>\n        <md-select name="sort" ng-model="vm.musiconhold.sort">\n\n          <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n          <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'sort\'].$error" ng-show="musiconholdForm[\'sort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMusicOnHold" ng-click="vm.saveMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid || musiconholdForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMusicOnHold" ng-click="vm.addNewMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MUSICONHOLD" translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n          ADD MUSICONHOLD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMusicOnHold" ng-click="vm.deleteMusicOnHold($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",'<md-dialog class="mohSound-dialog" aria-label="New MohSound">\n  <form name="mohSoundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FILE">File</label>\n        <md-select name="id" ng-model="vm.mohSound.id" autofocus>\n          <md-option ng-value="id.id" ng-repeat="id in vm.sounds" ng-disabled="id.canSelect === false">{{ id.name }}</md-option>\n        </md-select>\n        <div ng-messages="mohSoundForm[\'id\'].$error" ng-show="mohSoundForm[\'id\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FILE_REQUIRED">File field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMohSound" ng-click="vm.saveMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid || mohSoundForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMohSound" ng-click="vm.addNewMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MOHSOUND" translate-attr-aria-label="VOICE.ADD_MOHSOUND">\n          ADD MOHSOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMohSound" ng-click="vm.deleteMohSound($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/view.html",'<div id="voice-musiconhold" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-musiconholds-button md-icon-button" aria-label="Go to musiconholds" ng-click="vm.gotoMusicOnHolds()" translate translate-attr-aria-label="VOICE.GO_TO_MUSICONHOLDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="musiconhold-image" hide-xs>\n          <img ng-src="assets/images/business/musiconholds.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.musiconhold.id}}\n            <span ng-if="vm.musiconhold.name">{{vm.musiconhold.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.musiconhold.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMusicOnHold()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (mohSoundsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MODE">Mode</label>\n                <md-select name="mode" ng-model="vm.musiconhold.mode" required disabled>\n\n                  <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'mode\'].$error" ng-show="generalForm[\'mode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.DIRECTORY">Directory</label>\n                <input type="" name="directory" ng-model="vm.musiconhold.directory" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'directory\'].$error" ng-show="generalForm[\'directory\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.APPLICATION">Application</label>\n                <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'application\'].$error" ng-show="generalForm[\'application\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n                <label translate="VOICE.SORT">Sort</label>\n                <md-select name="sort" ng-model="vm.musiconhold.sort" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n                  <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sort\'].$error" ng-show="generalForm[\'sort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AUDIOFILES">AUDIOFILES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container mohsounds md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MusicOnHoldMohSoundsController as vm_dc" ng-init="vm_dc.init(vm.musiconhold, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MOHSOUNDS">MohSounds</span>\n                  <ms-search-bar on-search="vm_dc.getMusicOnHoldMohSounds()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMusicOnHoldMohSound($event)" aria-label="add mohSound" translate translate-attr-label="VOICE.ADD_MOHSOUND">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMusicOnHoldMohSounds.length}} {{vm_dc.selectedMusicOnHoldMohSounds.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMusicOnHoldMohSounds" csv-label="true" filename="musiconholds.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMusicOnHoldMohSounds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMusicOnHoldMohSounds" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMusicOnHoldMohSounds">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'VOICE.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mohSound" md-select-id="id" ng-repeat="mohSound in vm_dc.musiconholdMohSounds.rows">\n                      <td md-cell>\n                        {{mohSound.id}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="mohSound.id" model="\'sound\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ mohSound.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mohSound, $event)" translate="VOICE.DELETE_MOHSOUND">\n                                Delete MohSound\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.musiconholdMohSounds.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MOHSOUND_AVAILABLE">No mohsound available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.musiconholdMohSounds.count}}" md-on-paginate="vm_dc.getMusicOnHoldMohSounds" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/musiconholds/musiconholds.html",'<div id="musiconholds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.MUSICONHOLDS">MusicOnHolds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMusicOnHolds.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMusicOnHolds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-musiconholds-count">\n          <span>{{vm.selectedMusicOnHolds.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMusicOnHolds()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMusicOnHolds()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMusicOnHolds" csv-label="true" filename="musiconholds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMusicOnHolds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- MUSICONHOLD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMusicOnHolds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMusicOnHolds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="mode">{{ \'VOICE.MODE\' | translate }}</th>\n                <th md-column md-order-by="sort">{{ \'VOICE.SORT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.musiconholds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="musiconhold" md-select-id="id" ng-repeat="musiconhold in vm.musiconholds.rows">\n                <td md-cell ng-if="musiconhold.userpic"><img class="avatar" alt="{{musiconhold.name}}" ng-src="api/users/{{musiconhold.id}}/avatar" /></td>\n                <td md-cell ng-if="!musiconhold.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{musiconhold.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="id ">{{musiconhold.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="name ">{{musiconhold.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="mode ">{{ \'VOICE.\' + vm.arraymode[musiconhold.mode].option | uppercase | translate }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="sort ">{{ \'VOICE.\' + vm.arraysort[musiconhold.sort].option | uppercase | translate }}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(musiconhold, $event    )" translate="VOICE.EDIT_MUSICONHOLD">\n                          Edit MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(musiconhold, $event    )" translate="VOICE.DELETE_MUSICONHOLD">\n                          Delete MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.musiconholds.count}}" md-on-paginate="vm.getMusicOnHolds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MUSICONHOLD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MUSICONHOLD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-musiconhold-button" ng-click="vm.createOrEditMusicOnHold($event)" aria-label="add musiconhold" translate translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MUSICONHOLD BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="outbound-route-dialog" aria-label="New OutboundRoute">\n  <form name="outboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newOutboundRoute ? \'VOICE.NEW_OUTBOUNDROUTE\' : \'VOICE.EDIT_OUTBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="outboundrouteForm[\'exten\'].$error" ng-show="outboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.outboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="outboundrouteForm[\'context\'].$error" ng-show="outboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RECORDING">Recording</label>\n        <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" required>\n          <md-option ng-value="\'none\'">none</md-option>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n        </md-select>\n        <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n        <div ng-messages="outboundrouteForm[\'recordingFormat\'].$error" ng-show="outboundrouteForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CUTDIGITS">CutDigits</label>\n        <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0">\n        <div ng-messages="outboundrouteForm[\'cutdigits\'].$error" ng-show="outboundrouteForm[\'cutdigits\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid greater\n              or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="outboundrouteForm[\'alias\'].$error" ng-show="outboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.outboundRoute.description">\n        <div ng-messages="outboundrouteForm[\'description\'].$error" ng-show="outboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOutboundRoute" ng-click="vm.saveOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid || outboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOutboundRoute" ng-click="vm.addNewOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_OUTBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n          ADD OUTBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOutboundRoute" ng-click="vm.deleteOutboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/outboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-outbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-outbound-routes-button md-icon-button" aria-label="Go to outbound routes" ng-click="vm.gotoOutboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_OUTBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="outbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/outboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.outboundRoute.id}}\n            <span ng-if="vm.outboundRoute.exten">{{vm.outboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.outboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOutboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.outboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RECORDING">Recording</label>\n                <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'none\'">none</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n                <div ng-messages="generalForm[\'recordingFormat\'].$error" ng-show="generalForm[\'recordingFormat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CUTDIGITS">CutDigits</label>\n                <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'cutdigits\'].$error" ng-show="generalForm[\'cutdigits\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid\n                      greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.outboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate" style="width:200px">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",'<div id="outbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.OUTBOUNDROUTES">OutboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedOutboundRoutes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedOutboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-outbound-routes-count">\n          <span>{{ vm.selectedOutboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = vm.outboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOutboundRoutes" csv-label="true" filename="outbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOutboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable" ms-scroll>\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOutboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOutboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.outboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.outboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_OUTBOUNDROUTE">\n                          Edit OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_OUTBOUNDROUTE">\n                          Delete OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.outboundRoutes.count }}" md-on-paginate="vm.getOutboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-outbound-route-button" ng-click="vm.createOrEditOutboundRoute($event)" aria-label="add outbound route" translate translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'VOICE.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'VOICE.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'VOICE.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'VOICE.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'VOICE.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"VOICE.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"VOICE.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"VOICE.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"VOICE.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"VOICE.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'VOICE.PAGE' | translate}}:', rowsPerPage: '{{'VOICE.ROWSPERPAGE' | translate}}:', of: '{{'VOICE.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/voice/views/realtime/outbound_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.OUTBOUND_CALLS">Ooutbound Calls</span>\n  </div>\n</md-toolbar>\n\n\x3c!-- OUTBOUNDS TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.SOURCE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DESTINATION\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.calls.rows.length">\n        <td md-cell colspan="5">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.calls.rows | filter: vm.query.filter | limitTo: vm.query.limit: (vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <i ng-class="vm.channelStatus[call.channelstatedesc.toLowerCase()]"></i>\n        </td>\n        <td md-cell privacy ng-cloak>\n          {{call.calleridname}}, {{call.calleridnum}}\n          <span class="text-boxed" ng-if="call.answered">\n            <timer ng-if="call.answertime" start-time="call.answertime"></timer>\n          </span>\n        </td>\n        <td md-cell privacy ng-cloak>{{call.exten}}</td>\n        <td md-cell>{{call.routealias}}</td>\n        <td md-cell>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() !== \'hangup\'">\n            <timer ng-if="call.starttime" start-time="call.starttime"></timer>\n          </span>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() === \'hangup\'" translate="VOICE.CLOSING">Closing</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.calls.count}}"></md-table-pagination>\n\x3c!-- / OUTBOUNDS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TALKING\' | translate }}</th>\n        <th md-column>{{ \'VOICE.BUSY\' | translate }}</th>\n        <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="VOICE.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="VOICE.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n          <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FULLNAME">FullName</label>\n        <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="voicemailForm[\'fullname\'].$error" ng-show="voicemailForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'">\n\n        <div ng-messages="voicemailForm[\'email\'].$error" ng-show="voicemailForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="voicemailForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n        <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="voicemailForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="VOICE.MAILBOX">MailBox</label>\n        <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" ng-disabled="!vm.newVoicemail">\n\n        <div ng-messages="voicemailForm[\'mailbox\'].$error" ng-show="voicemailForm[\'mailbox\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ATTACH">Attach</label>\n        <md-select name="attach" ng-model="vm.voicemail.attach">\n\n          <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n          <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="voicemailForm[\'attach\'].$error" ng-show="voicemailForm[\'attach\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoicemail" ng-click="vm.saveVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid || voicemailForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoicemail" ng-click="vm.addNewVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEMAIL" translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n          ADD VOICEMAIL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoicemail" ng-click="vm.deleteVoicemail($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicemails/edit/view.html",'<div id="voice-voicemail" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voicemails-button md-icon-button" aria-label="Go to voicemails" ng-click="vm.gotoVoicemails()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEMAILS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voicemail-image" hide-xs>\n          <img ng-src="assets/images/business/voicemails.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voicemail.id}}\n            <span ng-if="vm.voicemail.name">{{vm.voicemail.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voicemail.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoicemail()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (messagesForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.FULLNAME">FullName</label>\n                <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fullname\'].$error" ng-show="generalForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n                <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n                <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n                <div ng-messages="generalForm.confirmPassword.$error" role="alert" multiple>\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n                  </div>\n                  <div ng-message="passwordMatch">\n                    <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAILBOX">MailBox</label>\n                <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" disabled>\n\n                <div ng-messages="generalForm[\'mailbox\'].$error" ng-show="generalForm[\'mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.VOICEMAIL_CONTEXT">Voicemail_Context</label>\n                <md-select name="context" ng-model="vm.voicemail.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.VOICEMAIL_CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.VOICEMAIL_CONTEXT_REQUIRED">Voicemail_Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEZONE">TimeZone</label>\n                <input type="text" name="tz" ng-model="vm.voicemail.tz" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'tz\'].$error" ng-show="advancedForm[\'tz\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEZONE_REQUIRED">TimeZone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ATTACH">Attach</label>\n                <md-select name="attach" ng-model="vm.voicemail.attach" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'attach\'].$error" ng-show="advancedForm[\'attach\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ENVELOPE">Envelope</label>\n                <md-select name="envelope" ng-model="vm.voicemail.envelope" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'envelope\'].$error" ng-show="advancedForm[\'envelope\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ENVELOPE_REQUIRED">Envelope field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DELETE">Delete</label>\n                <md-select name="delete" ng-model="vm.voicemail.delete" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'delete\'].$error" ng-show="advancedForm[\'delete\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DELETE_REQUIRED">Delete field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILBODY">EmailBody</label>\n                <input type="text" name="emailbody" ng-model="vm.voicemail.emailbody" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailbody\'].$error" ng-show="advancedForm[\'emailbody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILBODY_REQUIRED">EmailBody field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILSUBJECT">EmailSubject</label>\n                <input type="text" name="emailsubject" ng-model="vm.voicemail.emailsubject" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailsubject\'].$error" ng-show="advancedForm[\'emailsubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILSUBJECT_REQUIRED">EmailSubject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXSECONDS">MaxSeconds</label>\n                <input type="number" name="maxsecs" ng-model="vm.voicemail.maxsecs" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxsecs\'].$error" ng-show="advancedForm[\'maxsecs\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_REQUIRED">MaxSeconds field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxSeconds must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXMESSAGES">MaxMessages</label>\n                <input type="number" name="maxmsg" ng-model="vm.voicemail.maxmsg" min="0" max="9999" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxmsg\'].$error" ng-show="advancedForm[\'maxmsg\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_REQUIRED">MaxMessages field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.MESSAGES">MESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container messages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoicemailMessagesController as vm_dc" ng-init="vm_dc.init(vm.voicemail, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MESSAGES">Messages</span>\n                  <ms-search-bar on-search="vm_dc.getVoicemailMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedVoicemailMessages.length}} {{vm_dc.selectedVoicemailMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedVoicemailMessages" csv-label="true" filename="voicemails.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedVoicemailMessages($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedVoicemailMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getVoicemailMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="callerid">\n                        {{ \'VOICE.CALLER_ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="duration">\n                        {{ \'VOICE.DURATION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="stamp">\n                        {{ \'VOICE.RECEIVED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="message" md-select-id="id" ng-repeat="message in vm_dc.voicemailMessages.rows">\n                      <td md-cell>\n                        {{message.id}}\n                      </td>\n                      <td md-cell>\n                        {{message.callerid}}\n                      </td>\n                      <td md-cell>\n                        {{message.duration}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="message.id" model="\'voiceMailMessage\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ message.stamp | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(message, $event)" translate="VOICE.DELETE_MESSAGE">\n                                Delete Message\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.voicemailMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MESSAGE_AVAILABLE">No message available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.voicemailMessages.count}}" md-on-paginate="vm_dc.getVoicemailMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voicemails/voicemails.html",'<div id="voicemails" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEMAILS">Voicemails</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicemails.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicemails =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicemails-count">\n          <span>{{vm.selectedVoicemails.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicemails()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicemails()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicemails" csv-label="true" filename="voicemails.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicemails($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEMAIL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicemails" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicemails">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'VOICE.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'VOICE.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="mailbox">{{ \'VOICE.MAILBOX\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicemails.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicemail" md-select-id="id" ng-repeat="voicemail in vm.voicemails.rows">\n                <td md-cell ng-if="voicemail.userpic"><img class="avatar" alt="{{voicemail.name}}" ng-src="api/users/{{voicemail.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicemail.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicemail.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="id ">{{voicemail.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="fullname ">{{voicemail.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="email ">{{voicemail.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="mailbox ">{{voicemail.mailbox}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voicemail, $event    )" translate="VOICE.EDIT_VOICEMAIL">\n                          Edit Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicemail, $event    )" translate="VOICE.DELETE_VOICEMAIL">\n                          Delete Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicemails.count}}" md-on-paginate="vm.getVoicemails" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEMAIL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEMAIL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicemail-button" ng-click="vm.createOrEditVoicemail($event)" aria-label="add voicemail" translate translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEMAIL BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voicePrefixes/create/dialog.html",'<md-dialog class="voicePrefix-dialog" aria-label="New voicePrefix">\n  <form name="voicePrefixForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voicePrefix.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus>\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voicePrefixForm[\'name\'].$error" ng-show="voicePrefixForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="VoiceExtensionId" ng-model="vm.voicePrefix.VoiceExtensionId" required>\n          <md-option ng-value="VoiceExtensionId.id" ng-repeat="VoiceExtensionId in vm.outboundRoutes" ng-disabled="VoiceExtensionId.canSelect === false">{{ VoiceExtensionId.exten }}</md-option>\n        </md-select>\n        <div ng-messages="voicePrefixForm[\'VoiceExtensionId\'].$error" ng-show="voicePrefixForm[\'VoiceExtensionId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CALLERIDALL">CallerIdAll</label>\n        <input type="text" name="callerIdAll" ng-model="vm.voicePrefix.callerIdAll" ng-pattern="/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/">\n\n        <div class="hint"><span translate="VOICE.HELP.CALLERIDALL"></span></div>\n        <div ng-messages="voicePrefixForm[\'callerIdAll\'].$error" ng-show="voicePrefixForm[\'callerIdAll\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CALLERIDALL_REQUIRED">CallerIdAll field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.CALLERIDALL_MUST_VALID_PATTERN" translate-values="{ regex: \'/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/\' }">CallerIdAll must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voicePrefix.description">\n\n        <div ng-messages="voicePrefixForm[\'description\'].$error" ng-show="voicePrefixForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newvoicePrefix" ng-click="vm.savevoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid || voicePrefixForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newvoicePrefix" ng-click="vm.addNewvoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEPREFIX" translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n          ADD VOICEPREFIX\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newvoicePrefix" ng-click="vm.deletevoicePrefix($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEPREFIX">Add Agent to voicePrefix</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",'<div id="voicePrefixes" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEPREFIXES">VoicePrefixes</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicePrefixes.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicePrefixes =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicePrefixes-count">\n          <span>{{vm.selectedVoicePrefixes.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicePrefixes()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicePrefixes()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicePrefixes" csv-label="true" filename="voicePrefixes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicePrefixes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEPREFIX TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicePrefixes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicePrefixes">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="VoiceExtensionId">{{ \'VOICE.OUTBOUNDROUTE\' | translate }}</th>\n                <th md-column md-order-by="callerIdAll">{{ \'VOICE.CALLERIDALL\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicePrefixes.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicePrefix" md-select-id="id" ng-repeat="voicePrefix in vm.voicePrefixes.rows">\n                <td md-cell ng-if="voicePrefix.userpic"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="api/users/{{voicePrefix.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicePrefix.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="id ">{{voicePrefix.id}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="name ">{{voicePrefix.name}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="VoiceExtensionId ">{{ (vm.outboundRoutes | filter : {\'id\':voicePrefix.VoiceExtensionId} : true)[0].exten }}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="callerIdAll ">{{voicePrefix.callerIdAll}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="description ">{{voicePrefix.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(voicePrefix, $event    )" translate="VOICE.EDIT_VOICEPREFIX">\n                          Edit voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voicePrefix, $event    )" translate="VOICE.AGENTADD_VOICEPREFIX">\n                          AgentAdd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicePrefix, $event    )" translate="VOICE.DELETE_VOICEPREFIX">\n                          Delete voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicePrefixes.count}}" md-on-paginate="vm.getVoicePrefixes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEPREFIX TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEPREFIX BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicePrefix-button" ng-click="vm.createOrEditvoicePrefix($event)" aria-label="add voicePrefix" translate translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEPREFIX BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/create/dialog.html",'<md-dialog class="voiceQueue-dialog" aria-label="New VoiceQueue">\n  <form name="voiceQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newVoiceQueue">\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voiceQueueForm[\'name\'].$error" ng-show="voiceQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required>\n          <md-option ng-value="\'ringall\'">Ringall</md-option>\n          <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n          <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n          <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n          <md-option ng-value="\'random\'">Random</md-option>\n          <md-option ng-value="\'linear\'">Linear</md-option>\n          <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n        </md-select>\n        <div ng-messages="voiceQueueForm[\'strategy\'].$error" ng-show="voiceQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voiceQueue.description">\n\n        <div ng-messages="voiceQueueForm[\'description\'].$error" ng-show="voiceQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceQueue" ng-click="vm.saveVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid || voiceQueueForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceQueue" ng-click="vm.addNewVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEQUEUE" translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n          ADD VOICEQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceQueue" ng-click="vm.deleteVoiceQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEQUEUE">Add Agent to voiceQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/view.html",'<div id="voice-voiceQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceQueues-button md-icon-button" aria-label="Go to voiceQueues" ng-click="vm.gotoVoiceQueues()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceQueue-image" hide-xs>\n          <img ng-src="assets/images/business/voiceQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceQueue.id}}\n            <span ng-if="vm.voiceQueue.name">{{vm.voiceQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.voiceQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="VOICE.TEAMADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.voiceQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="VOICE.AGENTADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.voiceQueue, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="VOICE.GOTO_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (settingsForm.$invalid) || (announcementsForm.$invalid) || (advancedForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ringall\'">Ringall</md-option>\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'">Random</md-option>\n                  <md-option ng-value="\'linear\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.voiceQueue.timeout" min="0" value="15" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUT"></span></div>\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXLENGTH">MaxLength</label>\n                <input type="number" name="maxlen" ng-model="vm.voiceQueue.maxlen" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MAXLENGTH"></span></div>\n                <div ng-messages="generalForm[\'maxlen\'].$error" ng-show="generalForm[\'maxlen\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_REQUIRED">MaxLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.voiceQueue.retry" min="0" value="2" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.RETRY"></span></div>\n                <div ng-messages="generalForm[\'retry\'].$error" ng-show="generalForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.voiceQueue.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="generalForm[\'wrapuptime\'].$error" ng-show="generalForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.voiceQueue.weight" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WEIGHT"></span></div>\n                <div ng-messages="generalForm[\'weight\'].$error" ng-show="generalForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.JOINWHENEMPTY">JoinWhenEmpty</label>\n                <md-select name="joinempty" ng-model="vm.voiceQueue.joinempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.JOINWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'joinempty\'].$error" ng-show="generalForm[\'joinempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.JOINWHENEMPTY_REQUIRED">JoinWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.LEAVEWHENEMPTY">LeaveWhenEmpty</label>\n                <md-select name="leavewhenempty" ng-model="vm.voiceQueue.leavewhenempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.LEAVEWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'leavewhenempty\'].$error" ng-show="generalForm[\'leavewhenempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.LEAVEWHENEMPTY_REQUIRED">LeaveWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.voiceQueue.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="generalForm[\'musiconhold\'].$error" ng-show="generalForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCETOAGENT">AnnounceToAgent</label>\n                <md-select name="announce" ng-model="vm.voiceQueue.announce" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'FALSE\'">None</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + announce.save_name" ng-repeat="announce in vm.sounds" ng-disabled="announce.canSelect === false">{{ announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCETOAGENT"></span></div>\n                <div ng-messages="generalForm[\'announce\'].$error" ng-show="generalForm[\'announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCETOAGENT_REQUIRED">AnnounceToAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.voiceQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEFREQUENCY">AnnounceFrequency</label>\n                <input type="number" name="announce_frequency" ng-model="vm.voiceQueue.announce_frequency" min="0" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'announce_frequency\'].$error" ng-show="settingsForm[\'announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_REQUIRED">AnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINANNOUNCEFREQUENCY">MinAnnounceFrequency</label>\n                <input type="number" name="min_announce_frequency" ng-model="vm.voiceQueue.min_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MINANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'min_announce_frequency\'].$error" ng-show="settingsForm[\'min_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_REQUIRED">MinAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MinAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCEFREQUENCY">PeriodicAnnounceFrequency</label>\n                <input type="number" name="periodic_announce_frequency" ng-model="vm.voiceQueue.periodic_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'periodic_announce_frequency\'].$error" ng-show="settingsForm[\'periodic_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_REQUIRED">PeriodicAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">PeriodicAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RANDOMPERIODICANNOUNCE">RandomPeriodicAnnounce</label>\n                <md-select name="random_periodic_announce" ng-model="vm.voiceQueue.random_periodic_announce" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RANDOMPERIODICANNOUNCE"></span></div>\n                <div ng-messages="settingsForm[\'random_periodic_announce\'].$error" ng-show="settingsForm[\'random_periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RANDOMPERIODICANNOUNCE_REQUIRED">RandomPeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEHOLDTIME">AnnounceHoldtime</label>\n                <md-select name="announce_holdtime" ng-model="vm.voiceQueue.announce_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'once\'">Once</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEHOLDTIME"></span></div>\n                <div ng-messages="settingsForm[\'announce_holdtime\'].$error" ng-show="settingsForm[\'announce_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEHOLDTIME_REQUIRED">AnnounceHoldtime field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCECALLERPOSITION">AnnounceCallerPosition</label>\n                <md-select name="announce_position" ng-model="vm.voiceQueue.announce_position" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'limit\'">Limit</md-option>\n                  <md-option ng-value="\'more\'">More</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCECALLERPOSITION"></span></div>\n                <div ng-messages="settingsForm[\'announce_position\'].$error" ng-show="settingsForm[\'announce_position\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCECALLERPOSITION_REQUIRED">AnnounceCallerPosition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEPOSITIONLIMIT">AnnouncePositionLimit</label>\n                <input type="number" name="announce_position_limit" ng-model="vm.voiceQueue.announce_position_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEPOSITIONLIMIT"></span></div>\n                <div ng-messages="settingsForm[\'announce_position_limit\'].$error" ng-show="settingsForm[\'announce_position_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEPOSITIONLIMIT_REQUIRED">AnnouncePositionLimit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.REPORTHOLDTIMEAGENT">ReportHoldtimeAgent</label>\n                <md-select name="reportholdtime" ng-model="vm.voiceQueue.reportholdtime" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.REPORTHOLDTIMEAGENT"></span></div>\n                <div ng-messages="settingsForm[\'reportholdtime\'].$error" ng-show="settingsForm[\'reportholdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.REPORTHOLDTIMEAGENT_REQUIRED">ReportHoldtimeAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceQueue-detail-form-container announcements md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</div>\n            </div>\n            <form name="announcementsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCE">PeriodicAnnounce</label>\n                <md-select name="periodic_announce" ng-model="vm.voiceQueue.periodic_announce" autofocus multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Default</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + periodic_announce.save_name" ng-repeat="periodic_announce in vm.sounds" ng-disabled="periodic_announce.canSelect === false">{{ periodic_announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'periodic_announce\'].$error" ng-show="announcementsForm[\'periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCE_REQUIRED">PeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.HOLDTIMEANNOUNCE">HoldTimeAnnounce</label>\n                <md-select name="queue_reporthold" ng-model="vm.voiceQueue.queue_reporthold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_reporthold.save_name" ng-repeat="queue_reporthold in vm.sounds" ng-disabled="queue_reporthold.canSelect === false">{{ queue_reporthold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.HOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_reporthold\'].$error" ng-show="announcementsForm[\'queue_reporthold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.HOLDTIMEANNOUNCE_REQUIRED">HoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.YOUARENEXTANNOUNCE">YouareNextAnnounce</label>\n                <md-select name="queue_youarenext" ng-model="vm.voiceQueue.queue_youarenext" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_youarenext.save_name" ng-repeat="queue_youarenext in vm.sounds" ng-disabled="queue_youarenext.canSelect === false">{{ queue_youarenext.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.YOUARENEXTANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_youarenext\'].$error" ng-show="announcementsForm[\'queue_youarenext\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.YOUARENEXTANNOUNCE_REQUIRED">YouareNextAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THEREAREANNOUNCE">ThereareAnnounce</label>\n                <md-select name="queue_thereare" ng-model="vm.voiceQueue.queue_thereare" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thereare.save_name" ng-repeat="queue_thereare in vm.sounds" ng-disabled="queue_thereare.canSelect === false">{{ queue_thereare.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THEREAREANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thereare\'].$error" ng-show="announcementsForm[\'queue_thereare\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THEREAREANNOUNCE_REQUIRED">ThereareAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WAITINGCALLSANNOUNCE">WaitingCallsAnnounce</label>\n                <md-select name="queue_callswaiting" ng-model="vm.voiceQueue.queue_callswaiting" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_callswaiting.save_name" ng-repeat="queue_callswaiting in vm.sounds" ng-disabled="queue_callswaiting.canSelect === false">{{ queue_callswaiting.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.WAITINGCALLSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_callswaiting\'].$error" ng-show="announcementsForm[\'queue_callswaiting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WAITINGCALLSANNOUNCE_REQUIRED">WaitingCallsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ESTIMATEDHOLDTIMEANNOUNCE">EstimatedHoldTimeAnnounce</label>\n                <md-select name="queue_holdtime" ng-model="vm.voiceQueue.queue_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_holdtime.save_name" ng-repeat="queue_holdtime in vm.sounds" ng-disabled="queue_holdtime.canSelect === false">{{ queue_holdtime.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ESTIMATEDHOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_holdtime\'].$error" ng-show="announcementsForm[\'queue_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ESTIMATEDHOLDTIMEANNOUNCE_REQUIRED">EstimatedHoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTESANNOUNCE">MinutesAnnounce</label>\n                <md-select name="queue_minutes" ng-model="vm.voiceQueue.queue_minutes" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minutes.save_name" ng-repeat="queue_minutes in vm.sounds" ng-disabled="queue_minutes.canSelect === false">{{ queue_minutes.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTESANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minutes\'].$error" ng-show="announcementsForm[\'queue_minutes\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTESANNOUNCE_REQUIRED">MinutesAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTEANNOUNCE">MinuteAnnounce</label>\n                <md-select name="queue_minute" ng-model="vm.voiceQueue.queue_minute" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minute.save_name" ng-repeat="queue_minute in vm.sounds" ng-disabled="queue_minute.canSelect === false">{{ queue_minute.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minute\'].$error" ng-show="announcementsForm[\'queue_minute\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTEANNOUNCE_REQUIRED">MinuteAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECONDSANNOUNCE">SecondsAnnounce</label>\n                <md-select name="queue_seconds" ng-model="vm.voiceQueue.queue_seconds" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_seconds.save_name" ng-repeat="queue_seconds in vm.sounds" ng-disabled="queue_seconds.canSelect === false">{{ queue_seconds.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SECONDSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_seconds\'].$error" ng-show="announcementsForm[\'queue_seconds\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECONDSANNOUNCE_REQUIRED">SecondsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THANKYOUANNOUNCE">ThankYouAnnounce</label>\n                <md-select name="queue_thankyou" ng-model="vm.voiceQueue.queue_thankyou" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thankyou.save_name" ng-repeat="queue_thankyou in vm.sounds" ng-disabled="queue_thankyou.canSelect === false">{{ queue_thankyou.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THANKYOUANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thankyou\'].$error" ng-show="announcementsForm[\'queue_thankyou\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THANKYOUANNOUNCE_REQUIRED">ThankYouAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.acw" class="md-block">\n                <label translate="VOICE.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.voiceQueue.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.voiceQueue.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.voiceQueue.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.voiceQueue.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.voiceQueue.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.voiceQueue.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.voiceQueue.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.voiceQueue.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.voiceQueue.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.voiceQueue.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SERVICELEVEL">ServiceLevel</label>\n                <input type="number" name="servicelevel" ng-model="vm.voiceQueue.servicelevel" min="0" max="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.SERVICELEVEL"></span></div>\n                <div ng-messages="advancedForm[\'servicelevel\'].$error" ng-show="advancedForm[\'servicelevel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_REQUIRED">ServiceLevel field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.mandatoryDisposition" class="md-block">\n                <label translate="VOICE.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.voiceQueue.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/voiceQueues.html",'<div id="voiceQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEQUEUES">VoiceQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceQueues-count">\n          <span>{{vm.selectedVoiceQueues.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceQueues()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceQueues()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceQueues" csv-label="true" filename="voiceQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceQueues($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICEQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'VOICE.STRATEGY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceQueues.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceQueue" md-select-id="id" ng-repeat="voiceQueue in vm.voiceQueues.rows">\n                <td md-cell ng-if="voiceQueue.userpic"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="api/users/{{voiceQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="id ">{{voiceQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="name ">{{voiceQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="strategy ">{{ vm.arraystrategy[voiceQueue.strategy].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="description ">{{voiceQueue.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceQueue, $event    )" translate="VOICE.EDIT_VOICEQUEUE">\n                          Edit VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voiceQueue, $event    )" translate="VOICE.TEAMADD_VOICEQUEUE">\n                          teamadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voiceQueue, $event    )" translate="VOICE.AGENTADD_VOICEQUEUE">\n                          agentadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceQueue, $event    )" translate="VOICE.DELETE_VOICEQUEUE">\n                          Delete VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(voiceQueue, $event    )" translate="VOICE.GOTOREALTIME_VOICEQUEUE">\n                          goToRealtime VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voiceQueue-button" ng-click="vm.createOrEditVoiceQueue($event)" aria-label="add voiceQueue" translate translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/create/dialog.html",'<md-dialog class="voiceRecording-dialog" aria-label="New VoiceRecording">\n  <form name="voiceRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceRecordings-count">\n          <span>{{vm.selectedVoiceRecordings.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceRecordings()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceRecordings()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceRecordings" csv-label="true" filename="voiceRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribesentimentSelectedVoiceRecordings($event)" aria-label="transcribesentiment selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBESENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-text-to-speech"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribeSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBE_SELECTED">\n          <md-icon md-font-icon="icon-format-size"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBE_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runsentimentSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.SENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-heart-outline"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNSENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceRecordings($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/agents/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.onInit()" query="vm.query" on-collapse="vm.query.filter = undefined; vm.onInit()" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = \'\'; vm.onInit()">\n      <md-option ng-value="\'\'">{{ \'WHATSAPP.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'WHATSAPP.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'WHATSAPP.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'WHATSAPP.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'WHATSAPP.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.isPause(vm.query.globalStatusFilter)" ng-model="vm.query.pauseTypeFilter" class="md-caption" ng-change="vm.onInit()">\n      <md-option ng-value="\'\'">All</md-option>\n      <md-option value="DEFAULT PAUSE">DEFAULT PAUSE</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">LOGININPAUSE</md-option>\n      <md-option value="Auto-Pause">AUTOPAUSE</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n  </div>\n</md-toolbar>\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.order" md-on-reorder="vm.onInit">\n      <tr md-row border="1">\n        <th class="bv text-center" colspan="5">{{ \'WHATSAPP.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'WHATSAPP.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'WHATSAPP.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.order.length">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'WHATSAPP.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="vm.agents[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{vm.agents[value].userpic && \'api/users/\'+vm.agents[value].id+\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{vm.agents[value].fullname}}</span>\n              <span>{{vm.agents[value].internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (vm.agents[value].phoneBarEnableScreenRecordingByAgent || vm.agents[value].phoneBarEnableAutomaticScreenRecording)">\n            <div class="column" ng-if="vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: green; font-size: 36px;" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_ON\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n            <div class="column" ng-if="!vm.agents[value].screenrecording">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" style="color: gray" aria-label="icon-camcorder-box26">\n                  <md-tooltip>\n                    {{ \'WHATSAPP.TOOLTIP_SCREENRECORDING_OFF\' | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[vm.agents[value].globalStatus]\">{{\n            vm.isPause(vm.agents[value].globalStatus) ? '' : vm.agents[value].globalStatus | uppercase }}\n            {{ vm.isPause(vm.agents[value].globalStatus) ? (vm.isPartialPause(vm.agents[value].globalStatus) ?\n            '*'+vm.agents[value].pauseType || 'DEFAULT PAUSE' : vm.agents[value].pauseType || 'DEFAULT PAUSE') :\n            ''}}</span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"vm.agents[value].lastLoginAt\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"vm.isPause(vm.agents[value].globalStatus) || vm.isPartialPause(vm.agents[value].globalStatus)\" start-time=\"vm.agents[value].lastPauseAt\"></timer>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"row\">\n            <span ng-if=\"!vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].voiceStatus | uppercase }}</span>\n            <span ng-if=\"vm.agents[value].onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">ONHOLD</span>\n          </div>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\">\n            <span ng-if=\"vm.agents[value].queue\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].queue }}</span>\n            <span ng-if=\"vm.agents[value].destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\" privacy ng-cloak>{{\n              vm.agents[value].destconnectedlinenum }}</span>\n            <span ng-if=\"vm.agents[value].routealias\" class=\"padding-5\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">{{\n              vm.agents[value].routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"vm.agents[value].queue || vm.agents[value].destconnectedlinenum\">\n              <timer start-time=\"vm.agents[value].voiceStatusTime\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl\" ng-if=\"vm.license.chat\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].chatStatus]\">{{\n                vm.agents[value].chatStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].chatStatus]\">\n          {{ vm.agents[value].chatCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.mail\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].mailStatus]\">{{\n                vm.agents[value].mailStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].mailStatus]\">\n          {{ vm.agents[value].mailCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.messaging\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].smsStatus]\">{{\n                vm.agents[value].smsStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].smsStatus]\">\n          {{ vm.agents[value].smsCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.openchannel\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].openchannelStatus]\">{{\n                vm.agents[value].openchannelStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].openchannelStatus]\">\n          {{ vm.agents[value].openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl\" ng-if=\"vm.license.fax\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].faxStatus]\">{{\n                vm.agents[value].faxStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].faxStatus]\">\n          {{ vm.agents[value].faxCurrentCapacity }}</td>\n        <td class=\"bl bt\" ng-if=\"vm.license.whatsapp\">\n          <div layout=\"row\">\n            <div layout=\"column\" layout-align=\"center center\">\n              <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[vm.agents[value].whatsappStatus]\">{{\n                vm.agents[value].whatsappStatus | uppercase }}</span>\n            </div>\n          </div>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'lime-300-fg','maxcapacity':'red-A200-fg','working':'indigo-100-fg','pause':'amber-200-fg'}[vm.agents[value].whatsappStatus]\">\n          {{ vm.agents[value].whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(vm.agents[value], $event)\" translate=\"WHATSAPP.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.queueAdd(vm.agents[value], $event)\" translate=\"WHATSAPP.AGENTADD_QUEUE\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && vm.agents[value].phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"WHATSAPP.SCREENRECORDING\">Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if=\"!vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], true)\"><em translate=\"WHATSAPP.START_SCREENRECORDING\">Start\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.agents[value].screenrecording\">\n                      <md-button ng-click=\"vm.screenRecording(vm.agents[value], false)\"><em translate=\"WHATSAPP.STOP_SCREENRECORDING\">Stop\n                          Screen Recording</em></md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"WHATSAPP.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\" vm.agents[value].voicePause && 'DEFAULT PAUSE' === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value])\"><em translate=\"WHATSAPP.DEFAULT_PAUSE\">Default\n                          Pause</em></md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"vm.agents[value].voicePause && pause.name === vm.agents[value].pauseType\" ng-click=\"vm.pause(vm.agents[value], pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.isPause(vm.agents[value].globalStatus)\">\n                <md-button ng-click=\"vm.unPause(vm.agents[value])\" translate=\"WHATSAPP.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label=\"{page: '{{'WHATSAPP.PAGE' | translate}}:', rowsPerPage: '{{'WHATSAPP.ROWSPERPAGE' | translate}}:', of: '{{'WHATSAPP.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.filteredAgents.length}}\" md-on-paginate=\"vm.onInit\" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e"),e.put("app/main/apps/whatsapp/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="WHATSAPP.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="WHATSAPP.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus ng-disabled="!vm.newWhatsappAccount">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappAccountForm[\'name\'].$error" ng-show="whatsappAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'key\'].$error" ng-show="whatsappAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n        <div ng-messages="whatsappAccountForm[\'ListId\'].$error" ng-show="whatsappAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="whatsappAccountForm[\'remote\'].$error" ng-show="whatsappAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.whatsappAccount.type">\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountForm[\'type\'].$error" ng-show="whatsappAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n        <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'accountSid\'].$error" ng-show="whatsappAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n        <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PHONE">phone</label>\n        <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'phone\'].$error" ng-show="whatsappAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappAccount.description">\n\n        <div ng-messages="whatsappAccountForm[\'description\'].$error" ng-show="whatsappAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappAccount" ng-click="vm.saveWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid || whatsappAccountForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappAccount" ng-click="vm.addNewWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPACCOUNT" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n          ADD WHATSAPPACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappAccount" ng-click="vm.deleteWhatsappAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",'<md-dialog class="whatsappAccount-dialog" aria-label="whatsappAccount" ng-init="vm.onInit()">\n  <form name="whatsappAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">Add Agent to whatsappAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/agent/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'agent\'].$error" ng-show="whatsappAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'accesskeyid\'].$error" ng-show="whatsappAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'secretaccesskey\'].$error" ng-show="whatsappAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'lexregion\'].$error" ng-show="whatsappAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'botname\'].$error" ng-show="whatsappAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'times\'].$error" ng-show="whatsappAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'text\'].$error" ng-show="whatsappAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/close/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'disposition\'].$error" ng-show="whatsappAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'key\'].$error" ng-show="whatsappAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'projectId\'].$error" ng-show="whatsappAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'clientEmail\'].$error" ng-show="whatsappAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'privateKey\'].$error" ng-show="whatsappAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'condition\'].$error" ng-show="whatsappAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'truepriority\'].$error" ng-show="whatsappAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'falsepriority\'].$error" ng-show="whatsappAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'priority\'].$error" ng-show="whatsappAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/noop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'value\'].$error" ng-show="whatsappAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/queue/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'queue\'].$error" ng-show="whatsappAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/system/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'command\'].$error" ng-show="whatsappAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'variable\'].$error" ng-show="whatsappAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/tag/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'tag\'].$error" ng-show="whatsappAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",'<div id="whatsapp-whatsappAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappAccounts-button md-icon-button" aria-label="Go to whatsappAccounts" ng-click="vm.gotoWhatsappAccounts()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappAccount-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappAccount.id}}\n            <span ng-if="vm.whatsappAccount.name">{{vm.whatsappAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (whatsappDispositionsForm.$invalid) || (whatsappCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n                <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'" class="md-block">\n                <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.PHONE">phone</label>\n                <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/notify?token=\' + vm.whatsappAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twillo\'" class="md-block">\n                <label translate="WHATSAPP.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/status?token=\' + vm.whatsappAccount.token + (vm.whatsappAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.whatsappAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="WHATSAPP.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.whatsappAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.queueTransfer == true" class="md-block">\n                <label translate="WHATSAPP.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.whatsappAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.agentTransfer == true" class="md-block">\n                <label translate="WHATSAPP.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.whatsappAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.whatsappAccount.token" disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.mandatoryDisposition" class="md-block">\n                <label translate="WHATSAPP.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.whatsappAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="WhatsappAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="whatsappAccount-detail-form-container whatsappdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="WHATSAPP.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add whatsapp dispositions" translate translate-attr-label="WHATSAPP.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="whatsappAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container whatsappcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountWhatsappCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.WHATSAPPCANNEDANSWERS">WhatsappCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountWhatsappCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event)" aria-label="add whatsappCannedAnswer" translate translate-attr-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length}} {{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountWhatsappCannedAnswers" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountWhatsappCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountWhatsappCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'WHATSAPP.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'WHATSAPP.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="whatsappCannedAnswer" md-select-id="id" ng-repeat="whatsappCannedAnswer in vm_dc.whatsappAccountWhatsappCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{ whatsappCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" translate="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER">\n                                Edit WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(whatsappCannedAnswer, $event)" translate="WHATSAPP.DELETE_WHATSAPPCANNEDANSWER">\n                                Delete WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountWhatsappCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_WHATSAPPCANNEDANSWER_AVAILABLE">No whatsappcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountWhatsappCannedAnswers.count}}" md-on-paginate="vm_dc.getWhatsappAccountWhatsappCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.whatsappAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="WHATSAPP.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" ms-scroll layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedWhatsappAccountApps.length}} {{vm_ac.selectedWhatsappAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedWhatsappAccountApps($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedWhatsappAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.whatsappAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span class="text-truncate" style="width:200px">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editWhatsappAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.whatsappAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getWhatsappAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getWhatsappAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="WHATSAPP.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountInteractions.length}} {{vm_dc.selectedWhatsappAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountInteractions" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'WHATSAPP.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'WHATSAPP.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'WHATSAPP.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'WHATSAPP.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'WHATSAPP.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.whatsappAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'WHATSAPP.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'WHATSAPP.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spywhatsappInteraction($event, interaction)" translate="WHATSAPP.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.whatsappInteractionDownload(interaction, $event)" translate="WHATSAPP.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="WHATSAPP.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountInteractions.count}}" md-on-paginate="vm_dc.getWhatsappAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",'<md-dialog class="whatsappCannedAnswer-dialog" aria-label="New WhatsappCannedAnswer">\n  <form name="whatsappCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.whatsappCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'key\'].$error" ng-show="whatsappCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.whatsappCannedAnswer.value" required></textarea>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'value\'].$error" ng-show="whatsappCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappCannedAnswer.description">\n\n        <div ng-messages="whatsappCannedAnswerForm[\'description\'].$error" ng-show="whatsappCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappCannedAnswer" ng-click="vm.saveWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid || whatsappCannedAnswerForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappCannedAnswer" ng-click="vm.addNewWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPCANNEDANSWER" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n          ADD WHATSAPPCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappCannedAnswer" ng-click="vm.deleteWhatsappCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",'<div id="whatsappAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPACCOUNTS">WhatsappAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappAccounts.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappAccounts-count">\n          <span>{{vm.selectedWhatsappAccounts.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappAccounts()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappAccounts()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappAccounts" csv-label="true" filename="whatsappAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappAccounts($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'WHATSAPP.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'WHATSAPP.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'WHATSAPP.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'WHATSAPP.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappAccount" md-select-id="id" ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n                <td md-cell ng-if="whatsappAccount.userpic"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="api/users/{{whatsappAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="id ">{{whatsappAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="name ">{{whatsappAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="key ">{{whatsappAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':whatsappAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="type ">{{ vm.arraytype[whatsappAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="phone ">{{whatsappAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="description ">{{whatsappAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappAccount, $event    )" translate="WHATSAPP.EDIT_WHATSAPPACCOUNT">\n                          Edit WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(whatsappAccount, $event    )" translate="WHATSAPP.INTERACTIONS_WHATSAPPACCOUNT">\n                          Interactions WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappAccount, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">\n                          AgentAdd WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappAccount, $event    )" translate="WHATSAPP.DELETE_WHATSAPPACCOUNT">\n                          Delete WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappAccounts.count}}" md-on-paginate="vm.getWhatsappAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappAccount-button" ng-click="vm.createOrEditWhatsappAccount($event)" aria-label="add whatsappAccount" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",'<md-dialog class="whatsappQueue-dialog" aria-label="New WhatsappQueue">\n  <form name="whatsappQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newWhatsappQueue">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappQueueForm[\'name\'].$error" ng-show="whatsappQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="whatsappQueueForm[\'strategy\'].$error" ng-show="whatsappQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="whatsappQueueForm[\'timeout\'].$error" ng-show="whatsappQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappQueue.description">\n\n        <div ng-messages="whatsappQueueForm[\'description\'].$error" ng-show="whatsappQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappQueue" ng-click="vm.saveWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid || whatsappQueueForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappQueue" ng-click="vm.addNewWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPQUEUE" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n          ADD WHATSAPPQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappQueue" ng-click="vm.deleteWhatsappQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">Add Agent to whatsappQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",'<div id="whatsapp-whatsappQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappQueues-button md-icon-button" aria-label="Go to whatsappQueues" ng-click="vm.gotoWhatsappQueues()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappQueue-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappQueue.id}}\n            <span ng-if="vm.whatsappQueue.name">{{vm.whatsappQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.whatsappQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",'<div id="whatsappQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPQUEUES">WhatsappQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappQueues.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappQueues-count">\n          <span>{{vm.selectedWhatsappQueues.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappQueues()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappQueues()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappQueues" csv-label="true" filename="whatsappQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappQueues($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- WHATSAPPQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'WHATSAPP.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappQueue" md-select-id="id" ng-repeat="whatsappQueue in vm.whatsappQueues.rows">\n                <td md-cell ng-if="whatsappQueue.userpic"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="api/users/{{whatsappQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="id ">{{whatsappQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="name ">{{whatsappQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="strategy ">{{ vm.arraystrategy[whatsappQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappQueue, $event    )" translate="WHATSAPP.EDIT_WHATSAPPQUEUE">\n                          Edit WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(whatsappQueue, $event    )" translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE">\n                          teamadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappQueue, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">\n                          agentadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappQueue, $event    )" translate="WHATSAPP.DELETE_WHATSAPPQUEUE">\n                          Delete WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(whatsappQueue, $event    )" translate="WHATSAPP.GOTOREALTIME_WHATSAPPQUEUE">\n                          goToRealtime WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappQueues.count}}" md-on-paginate="vm.getWhatsappQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappQueue-button" ng-click="vm.createOrEditWhatsappQueue($event)" aria-label="add whatsappQueue" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPQUEUE BUTTON --\x3e\n</div>'),e.put("app/navigation/layouts/horizontal-navigation/navigation.html",'<div layout="row" layout-align="start center">\n  <ms-navigation-horizontal></ms-navigation-horizontal>\n</div>'),e.put("app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html",'<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/navigation/layouts/vertical-navigation/navigation.html",'<md-toolbar class="navigation-header md-whiteframe-1dp" layout="row" layout-align="space-between center">\n  <div class="logo" layout="row" layout-align="start center">\n    <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n    \x3c!-- <span class="logo-image"><img src="assets/images/logos/whisker_32x32.png" alt="motion_whisker_32x32" /></span> --\x3e\n    <span class="logo-text text-truncate">{{vm.getLogo() | uppercase}}</span>\n  </div>\n  <md-icon class="fold-toggle s18" md-font-icon="icon-backburger" hide show-gt-sm ng-click="vm.toggleMsNavigationFolded()"></md-icon>\n</md-toolbar>\n\n<ms-navigation class="scrollable" folded="vm.folded" ms-scroll="vm.msScrollOptions"></ms-navigation>'),e.put("app/quick-panel/quick-panel.html",'<md-content>\n  <md-tabs md-no-pagination md-swipe-content md-stretch-tabs="always">\n    <md-tab>\n      <md-tab-label>\n        <span translate="QUICKPANEL.TODAY">TODAY</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="today-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/today/today-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'" ng-controller="ChatInternalController as vm_ct" ng-init="vm_ct.init(vm.license)" md-on-deselect="vm_ct.user = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalMessages}}</div>\n        <span>MESSENGER</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="chat-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'" ng-controller="ChatGroupController as vm_cg" ng-init="vm_cg.init(vm.license)" md-on-deselect="vm_cg.group = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalGroupMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalGroupMessages}}</div>\n        <span translate="QUICKPANEL.GROUPS">GROUPS</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="group-tab scrollable" ms-scroll ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n  </md-tabs>\n</md-content>'),e.put("app/quick-panel/tabs/activity/activity-tab.html",'<md-list class="friends">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.FRIENDS">Friends</span>\n  </md-subheader>\n\n  <md-list-item class="friend md-3-line" ng-repeat="friend in vm.activities.friends">\n    <img ng-src="{{friend.avatar}}" class="md-avatar" alt="{{friend.name}}" />\n\n    <div class="status {{friend.status}}"></div>\n\n    <div ng-if="contact.unread" class="md-accent-bg unread-message-count">{{contact.unread}}</div>\n\n    <div class="md-list-item-text">\n      <h3 class="message">{{friend.message}}</h3>\n      <p class="time">{{friend.time}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="servers">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.APP_SERVERS">Application Servers</span>\n  </md-subheader>\n\n  <md-list-item class="server md-3-line" ng-repeat="server in vm.activities.servers">\n    <md-icon md-font-icon="icon-checkbox-blank-circle" class="s16 status" ng-class="server.status"></md-icon>\n\n    <div class="md-list-item-text">\n      <h3>{{server.location}}</h3>\n      <p>{{server.detail}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="stats">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.USER_STATS">User Stats</span>\n  </md-subheader>\n\n  <md-list-item class="stat md-2-line" ng-repeat="stat in vm.activities.stats">\n    <div class="md-list-item-text">\n      <span>{{stat.title}} ({{stat.current}} / {{stat.total}})</span>\n      <md-progress-linear ng-class="stat.status" md-mode="determinate" value="{{stat.percent}}"></md-progress-linear>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/quick-panel/tabs/chat/chat-tab.html",'<div class="main animate-slide-left" ng-hide="vm_ct.user">\n  <md-subheader class="md-no-sticky">\n    <div class="search" layout="row" layout-align="space-between center">\n      <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n      <input class="search-input" ng-model="vm_ct.search.$" type="text" placeholder="Search by fullname.." translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      <md-select ng-model="vm_ct.search.online" class="height-50 no-padding no-margin" aria-label="Chat Tab Search">\n        <md-option ng-value="undefined">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online\n        </md-option>\n        <md-option ng-value="false">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  \x3c!-- <select ng-model="vm_ct.filterOnline" class="height-50 no-padding no-margin">\n            <option ng-value="undefined">All</option>\n            <option ng-value="true"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg"></md-icon>Online</option>\n            <option ng-value="false"><md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg"></md-icon>Offline</option>\n        </select> --\x3e\n  <md-divider></md-divider>\n  <md-list class="recent">\n    <md-list-item class="contact md-3-line" ng-if="user.id != vm_ct.currentUser.id" ng-repeat="user in vm_ct.users.rows | orderBy: \'-lastMessageAt\' | filter:vm_ct.search" ng-click="vm_ct.toggleChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="md-avatar" alt="{{user.fullname}}" />\n      <div class="status" ng-class="{true: \'online\', false: \'offline\'}[user.online]"></div>\n      <div ng-if="vm_ct.unreadMessage[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessage[user.id]}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{user.fullname}}</h3>\n          <md-icon ng-if="!user.allowmessenger && user.role === \'agent\'" class="s16 margin-left-5" ng-style="{\'color\': \'red\' }" md-font-icon="icon-block-helper"></md-icon>\n        </div>\n        <p>{{user.name}} &#60;{{user.internal}}&#62;</p>\n        <div layout="row" layout-align="start center">\n          <md-icon ng-if="!user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="user.lastMessage.read && user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" md-font-icon="icon-check-all md-accent"></md-icon>\n          <p>{{user.lastMessage.body | limitTo:20 }}{{user.lastMessage.body.length > 20 ? \'...\' : \'\' }}</p>\n          <span flex></span>\n          <p class="last-message" ng-if="user.lastMessageAt != vm_ct.standardDate">\n            {{user.lastMessageAt | formatdate}}</p>\n        </div>\n      </div>\n    </md-list-item>\n  </md-list>\n</div>\n\n<div class="chat animate-slide-right" ng-show="vm_ct.user" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n\n      <div layout="row" layout-align="start center">\n        <md-button class="md-icon-button" ng-click="vm_ct.toggleChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-dialog">\n    <div layout="row" ng-repeat="message in vm_ct.user.messages.rows" class="md-padding message-row" ng-class="message.FromId === vm_ct.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId === vm_ct.user.id" ng-src="{{vm_ct.user.userpic ? \'api/users/\' + vm_ct.user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n      <img ng-if="message.FromId === vm_ct.currentUser.id" class="avatar" ng-src="{{vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="!message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read && message.FromId === vm_ct.currentUser.id" class="s16 margin-5" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-submit="vm_ct.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 && !vm_ct.disabled? vm_ct.reply() : null" flex ng-model="vm_ct.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button ng-disable="vm_ct.disabled" class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/create/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      \x3c!--START Error--\x3e\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      \x3c!--END Error--\x3e\n\n      \x3c!--START NAME--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.group.name" required autofocus>\n        <div ng-messages="groupForm[\'name\'].$error" ng-show="groupForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="QUICKPANEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END NAME--\x3e\n\n      \x3c!--START Members--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.MEMBERS">Members</label>\n        <md-contact-chips ng-model="vm.group.members" md-contacts="vm.querySearch($query)" md-contact-name="name" md-contact-image="image" md-require-match="true" md-highlight-flags="i" placeholder="{{\'QUICKPANEL.MEMBERS\' | translate}}">\n        </md-contact-chips>\n        <div ng-messages="groupForm[\'strategy\'].$error" ng-show="groupForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.MEMBERS_REQUIRED">Members field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END Members--\x3e\n\n      \x3c!--START Writing--\x3e\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.group.write" aria-label="Write">\n          {{\'QUICKPANEL.ENABLE_WRITING\' | translate}}\n        </md-switch>\n      </md-input-container>\n      \x3c!--END Writing--\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.newChatGroup" ng-click="vm.saveChatGroup()" class="send-button md-accent md-raised" ng-disabled="groupForm.$invalid || groupForm.$pristine || (vm.group.members.length < 1)" aria-label="SAVE" translate="QUICKPANEL.SAVE" translate-attr-aria-label="QUICKPANEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/groups/group-tab.html",'<div class="main animate-slide-left" ng-if="!vm_cg.group">\n  <md-subheader>\n    <div layout="row">\n      \x3c!-- START Search --\x3e\n      <div class="search" layout="row" layout-align="start center" flex>\n        <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n        <input ng-model="vm_cg.search" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      </div>\n      \x3c!-- END Search --\x3e\n\n      \x3c!-- START New Group --\x3e\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-icon-button" aria-label="New" ng-click="vm_cg.addGroup(null, $event)">\n        <md-icon md-font-icon="icon-account-multiple-plus" class="icon"></md-icon>\n      </md-button>\n      \x3c!-- END New Group --\x3e\n    </div>\n  </md-subheader>\n\n  <md-divider></md-divider>\n\n  \x3c!-- START Groups --\x3e\n  <md-list class="recent no-padding">\n    \x3c!-- START Group --\x3e\n    <md-list-item class="contact" ng-repeat="group in vm_cg.groupsToArray() | filter:vm_cg.search" ng-click="vm_cg.toggleChat(group)">\n      <img src="assets/images/avatars/group.png" class="md-avatar" alt="{{group.name}}" />\n      <div ng-if="group.unreadGroupMessages" class="md-accent-bg unread-message-count">{{group.unreadGroupMessages}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{group.name}}</h3>\n        </div>\n      </div>\n\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-secondary md-icon-button" aria-label="Remove" ng-click="vm_cg.deleteGroup(group, $event)">\n        <md-icon md-font-icon="icon-delete" class="icon s18"></md-icon>\n      </md-button>\n\n      <md-divider ng-if="!$last"></md-divider>\n    </md-list-item>\n    <md-list-item>\n      <div ng-if="!vm_cg.groupsToArray().length" layout="row" layout-align="center center" flex>\n        <span>{{\'QUICKPANEL.NO_AVAILABLE_GROUPS\' | translate}}</span>\n      </div>\n    </md-list-item>\n    \x3c!-- END Group --\x3e\n  </md-list>\n  \x3c!-- END Groups --\x3e\n</div>\n\n<div class="chat animate-slide-right" ng-if="vm_cg.group" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools " layout="row" layout-align="space-between center">\n      <md-button class="md-icon-button" ng-click="vm_cg.back()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK" flex="15">\n        <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n      </md-button>\n      <h4 flex layout-align="start center" style="max-height: 100%; overflow-y:auto;">\n        <span translate="QUICKPANEL.YOU" translate-values=\'{participants: vm_cg.participants}\'></span>\n      </h4>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_cg.license.webrtc && vm_cg.currentUser.role === \'agent\' && vm_cg.currentUser.showWebBar === 2 && vm_cg.user.role === \'agent\' && vm_cg.user.showWebBar === 2" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_cg.webcall(vm_cg.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-group-dialog">\n    <div layout="row" ng-repeat="message in vm_cg.group.messages" class="message-row" ng-class="message.FromId === vm_cg.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId !== vm_cg.currentUser.id" ng-src="{{\'api/users/\' + message.FromId + \'/avatar\'}}" class="avatar" alt="{{vm_cg.user.fullname}}" />\n      <img ng-if="message.FromId === vm_cg.currentUser.id" class="avatar" ng-src="{{vm_cg.currentUser.userpic ? \'api/users/\' + vm_cg.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <div ng-if="message.FromId !== vm_cg.currentUser.id">\n          <span style="font-size: 12px;">{{vm_cg.group.membersByKeys[message.FromId].fullname}}</span>\n        </div>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text" style="margin-top: 0px;">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="message.FromId === vm_cg.currentUser.id" class="s16 margin-5" style="cursor: pointer;" md-font-icon="icon-information-outline" ng-click="vm_cg.showMessageInfo($event, message)"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-if="(vm_cg.currentUser.role !== \'agent\') || vm_cg.group.write" ng-submit="vm_cg.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 ? vm_cg.reply() : null" flex ng-model="vm_cg.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/info/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div ng-if="vm.data.messages[$index].FromId !== vm.data.messages[$index].ToId" ng-repeat="user in vm.data.users" layout-margin>\n        <div layout="row">\n          <div layout="row" layout-align="start center">\n            <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{user.fullname}}" />\n            <span>{{user.fullname}}</span>\n          </div>\n          <div layout="row" layout-align="end center" flex>\n            <md-icon class="s16 margin-5" md-font-icon="{{vm.data.messages[$index].read ? \'icon-check-all md-accent\' : \'icon-check\'}}"></md-icon>\n            <span class="time secondary-text">{{vm.data.messages[$index].updatedAt | formatdate }}</span>\n          </div>\n        </div>\n        <div>\n          <md-divider ng-if="!$last"></md-divider>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/today/today-tab.html",'<md-list class="date">\n  <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.TODAY">Today</span></md-subheader>\n  <md-list-item class="md-display-1 md-2-line">\n    <div class="secondary-text">\n      <div translate="QUICKPANEL.{{ (vm.date | date:\'EEEE\').toUpperCase() }}"></div>\n      <div layout="row" layout-align="start start">\n        <span> {{vm.date | date:\'d\'}}</span>\n        <span class="md-subhead">th</span>\n        <span translate="QUICKPANEL.{{ (vm.date | date:\'MMMM\').toUpperCase() }}"></span>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>\n\n\x3c!-- <md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.EVENTS">Events</span></md-subheader>\n\n    <md-list-item class="md-2-line" ng-repeat="event in vm.events" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{event.title}}</h3>\n\n            <p>{{event.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.NOTES">Notes</span></md-subheader>\n    <md-list-item class="md-2-line" ng-repeat="note in vm.notes" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{note.title}}</h3>\n\n            <p>{{note.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.QUICK_SETTINGS">Quick Settings</span></md-subheader>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.NOTIFICATIONS">Notifications</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.notify" aria-label="Notifications" translate\n                   translate-attr-aria-label="QUICKPANEL.NOTIFICATIONS"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.CLOUD_SYNC">Cloud Sync</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.cloud" aria-label="Cloud Sync" translate\n                   translate-attr-aria-label="QUICKPANEL.CLOUD_SYNC"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.RETRO_THRUSTERS">Retro Thrusters</h3>\n        <md-switch class="md-secondary md-warn" ng-model="vm.settings.retro" aria-label="Retro Thrusters" translate\n                   translate-attr-aria-label="QUICKPANEL.RETRO_THRUSTERS"></md-switch>\n    </md-list-item>\n</md-list> --\x3e'),e.put("app/reset/reset.html",'<div id="reset-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()" ms-scroll>\n  <div id="reset-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="reset-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="RESETPASSWORD.TITLE">Reset your password</div>\n\n      <form name="resetPasswordForm" novalidate>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" ng-pattern="vm.passwordPattern" placeholder="Password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD" required>\n          <div ng-messages="resetPasswordForm.password.$error" role="alert">\n            <div ng-message="required">\n              <span translate="RESETPASSWORD.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="RESETPASSWORD.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="passwordConfirm" ng-model="vm.form.passwordConfirm" placeholder="Password (Confirm)" match-password="password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD_CONFIRM">\n          <div ng-messages="resetPasswordForm.passwordConfirm.$error" role="alert">\n            <div ng-message="passwordMatch">\n              <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.resetPassword()" class="md-raised md-accent submit-button" aria-label="UPDATE MY PASSWORD" ng-disabled="resetPasswordForm.$invalid || resetPasswordForm.$pristine" translate="RESETPASSWORD.UPDATE_PASSWORD" translate-attr-aria-label="RESETPASSWORD.UPDATE_PASSWORD">\n          RESET MY PASSWORD\n        </md-button>\n      </form>\n    </div>\n  </div>\n</div>'),e.put("app/toolbar/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="changePasswordForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="vm.reset" class="title" translate="TOOLBAR.RESETPASSWORD">Reset Password</span>\n        <span ng-if="!vm.reset" class="title" translate="TOOLBAR.CHANGEPASSWORD">Change Password</span>\n        <md-button ng-if="!vm.reset" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="TOOLBAR.OLD_PASSWORD" required>\n        <div ng-messages="changePasswordForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="TOOLBAR.NEW_PASSWORD" required>\n        <div ng-messages="changePasswordForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLBAR.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="changePasswordForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="changePasswordForm.$invalid || changePasswordForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/layouts/vertical-navigation/toolbar.html",'<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="start center" flex>\n    <md-button id="navigation-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'navigation\')" hide-gt-sm aria-label="Toggle navigation" translate translate-attr-aria-label="TOOLBAR.TOGGLE_NAVIGATION">\n      <md-icon md-font-icon="icon-menu" class="icon"></md-icon>\n    </md-button>\n\n    <ms-shortcuts ng-if="!vm.isAgent()"></ms-shortcuts>\n\n    <div class="toolbar-separator"></div>\n\n    <div ng-if="vm.license.demo" class="blink md-padding">\n      <span class="md-warn-fg" translate="TOOLBAR.TRIAL_VERSION">Trial Version</span>\n    </div>\n\n    <div ng-if="vm.isAgent()" class="logo" layout-padding-left-8 layout="row" layout-align="start center">\n      <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n      <span ng-show="vm.isAgent() && (vm.user.showWebBar != 2)" class="logo-text text-truncate">{{ vm.getLogo() |\n        uppercase }}</span>\n    </div>\n\n    \x3c!-- phonebar directive WebRtc type--\x3e\n    <ms-phonebar class="ms-phonebar" ng-if="vm.isAgent() && (vm.user.showWebBar == 2)" conf="vm.conf" sessions="vm.webRTCSessions" flex></ms-phonebar>\n    \x3c!-- phonebar directive --\x3e\n  </div>\n\n  <div layout="row" layout-align="start center">\n\n    <md-progress-circular id="toolbar-progress" ng-if="$root.loadingProgress" class="md-accent" md-diameter="32">\n    </md-progress-circular>\n\n    \x3c!-- Pause Management --\x3e\n    <div ng-if="vm.isAgent() && (vm.user.showWebBar != 0)" layout="row" layout-align="end center">\n      <div class="toolbar-separator"></div>\n\n      <div class="border brad-5" layout="row" layout-align="center center" layout-margin>\n        <md-button ng-if="vm.user.voicePause" class="md-icon-button no-margin" ng-click="vm.unpause()">\n          <md-icon md-font-icon="icon-play-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.RESUME\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-button ng-disabled="vm.user.voicePause && \'DEFAULT PAUSE\' === vm.user.pauseType" class="md-icon-button no-margin" ng-click="vm.pause()">\n          <md-icon md-font-icon="icon-pause-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.PAUSE\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-menu>\n          <md-button aria-label="Pauses" class="md-icon-button no-margin" ng-click="$mdOpenMenu($event)">\n            <md-icon md-menu-origin md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-menu-content width="4">\n            <md-menu-item ng-if="!vm.pauses.length">\n              <md-button disabled="disabled">\n                <md-icon md-font-icon="icon-pause-octagon" md-menu-align-target></md-icon>\n                {{\'TOOLBAR.NO_PAUSES_AVAILABLE\' | translate}}\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-repeat="pause in vm.pauses">\n              <md-button ng-disabled="vm.user.voicePause && pause.name === vm.user.pauseType" ng-click="vm.pause(pause.name)">\n                <md-icon md-font-icon="icon-pause-circle" md-menu-align-target></md-icon>\n                {{pause.name}}\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n    \x3c!-- Pause Management --\x3e\n\n    <div class="h5 padding-10" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)">\n      <div layout="row" layout-align="space-between center">\n        <timer ng-if="vm.user.lastLoginAt" start-time="vm.user.lastLoginAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.LOGIN_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-timelapse" class="icon s16"></md-icon>\n      </div>\n      <div layout="row" layout-align="center center" ng-if="vm.user.voicePause">\n        <timer start-time="vm.user.lastPauseAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.PAUSE_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-coffee" class="icon s16"></md-icon>\n      </div>\n      <div ng-if="vm.user.voicePause">\n        <span class="blink red-fg">{{vm.user.pauseType || \'default\' | uppercase}}</span>\n      </div>\n    </div>\n\n    <div class="toolbar-separator" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)"></div>\n\n    <md-menu-bar id="user-menu">\n      <md-menu md-position-mode="left bottom">\n        <md-button class="user-button" ng-click="$mdOpenMenu()" aria-label="User settings" translate translate-attr-aria-label="TOOLBAR.USER_SETTINGS">\n          <div layout="row" layout-align="space-between center">\n            <div class="avatar-wrapper">\n              <img md-menu-align-target class="avatar" src="assets/images/avatars/profile.png" ng-if="!vm.user.userpic">\n              <img md-menu-align-target class="avatar" ng-src="api/users/{{vm.user.id}}/avatar" ng-if="vm.user.userpic">\n              <md-icon md-font-icon ng-class="vm.userStatus.icon" ng-style="{\'color\': vm.userStatus.color }" class="icon status s16"></md-icon>\n            </div>\n            <div layout="column" layout-align="center center" class="padding-horizontal-5">\n              <span class="font-size-14 md-subhead">{{vm.user.fullname}}</span>\n              <span class="font-size-12 md-subhead">{{vm.user.name}} &#60;{{vm.user.internal}}&#62;</span>\n            </div>\n\n            <md-icon md-font-icon="icon-chevron-down" class="icon s16" hide-xs></md-icon>\n          </div>\n        </md-button>\n\n        <md-menu-content width="3">\n          <md-menu-item ng-if="vm.user.showWebBar == 2 && vm.user.phoneBarEnableSettings" class="md-indent">\n            <md-icon md-font-icon="icon-cog" class="icon"></md-icon>\n            <md-button ng-click="vm.openSettings($event)" ng-disabled="!vm.license.webrtc"><span translate="TOOLBAR.SETTINGS">SETTINGS</span></md-button>\n          </md-menu-item>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-key-variant" class="icon"></md-icon>\n            <md-button ng-click="vm.changePassword($event)"><span translate="TOOLBAR.CHANGEPASSWORD">Change\n                Password</span></md-button>\n          </md-menu-item>\n\n          <md-menu-divider></md-menu-divider>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-logout" class="icon"></md-icon>\n            <md-button ng-click="vm.logout()">Logout</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </md-menu-bar>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.user.role === \'agent\' && vm.license.dialer" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.preview($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.contacts" class="md-accent-bg open-contact-count">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span translate="{{lang.translation}}">{{lang.title}}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">Preview</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div layout="row" ng-if="vm.preview">\n        <div class="md-padding md-margin" layout="column" flex="30">\n          <md-input-container ng-if="vm.preview.Contact.id" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.ID">ID</label>\n            <input type="text" ng-model="vm.preview.Contact.id" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.Queue.name" class="md-block no-margin">\n            <label translate="VOICE.QUEUE">Queue</label>\n            <input type="text" ng-model="vm.preview.Queue.name" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.List.name" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <input type="text" ng-model="vm.preview.List.name" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.Contact.tags && vm.preview.Contact.tags.length" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.TAGS">Tags</label>\n            <input type="text" ng-model="vm.preview.Contact.tags" disabled="true">\n          </md-input-container>\n          <md-input-container ng-if="vm.preview.Contact.Company && vm.preview.Contact.Company.name" class="md-block no-margin">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <input type="text" ng-model="vm.preview.Contact.Company.name" disabled="true">\n          </md-input-container>\n        </div>\n        <md-divider></md-divider>\n        <div class="md-padding md-margin" layout="column" flex="35">\n          <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && !vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n            <label>{{ \'CONTACTMANAGER.\' + key.toUpperCase() | translate}}</label>\n            <input type="text" ng-model="value" disabled="true" privacy=\'vm.currentUser.privacyEnabled && (key === "firstName" || key === "lastName" || key === "phone" || key === "mobile" || key === "email" || key === "fax") \' ng-cloak>\n          </md-input-container>\n        </div>\n        <div class="md-padding md-margin" layout="column" flex="35">\n          <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n            <label>{{ vm.customFieldsMap[key] || key }}</label>\n            <input type="text" ng-model="value" disabled="true">\n          </md-input-container>\n        </div>\n      </div>\n      <div layout="row" ng-if="!vm.preview">\n        <span>no contacts available</span>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n      <md-button class="md-icon-button md-primary" ng-hide="vm.hopperIds.length <= 1" ng-disabled="vm.disableGetContact" ng-click="vm.previousContact()" aria-label="PREVIOUSCONTACT" translate-attr-aria-label="TOOLS.PREVIOUSCONTACT">\n        <md-icon md-font-icon="icon-chevron-left"></md-icon>\n      </md-button>\n      <md-button class="md-fab green-bg" aria-label="CALL" translate-attr-aria-label="TOOLS.CALL" ng-disabled="vm.disable" ng-click="vm.originatePreview($event)">\n        <md-icon md-font-icon="icon-phone"></md-icon>\n      </md-button>\n      <md-button class="md-icon-button md-primary" ng-disabled="vm.disableGetContact" ng-click="vm.nextContact()" aria-label="NEXTCONTACT" translate-attr-aria-label="TOOLS.NEXTCONTACT">\n        <md-icon md-font-icon="icon-chevron-right"></md-icon>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>')}]);
\ No newline at end of file
similarity index 71%
rename from public/styles/app.54f03ce6.css
rename to public/styles/app.0b303223.css
index f9b4374..9363192 100644 (file)
@@ -1 +1 @@
-[data-ng-click],[ng-click],[x-ng-click]{cursor:pointer}.ms-container{width:100%!important}.ms-container .ms-list{height:380px!important}.ms-container .ms-selectable li.ms-elem-selectable,.ms-container .ms-selection li.ms-elem-selection{padding:6px 12px!important;height:34px!important}md-input-container:not(.md-input-has-value) input:not(:focus){color:inherit!important}.ms-container .ms-search{height:34px;margin-bottom:5px;border:solid 1px #e5e5e5;background-color:#fff;box-shadow:none;width:100%;padding-left:6px}.ms-container .ms-footer{text-align:center}.no-border{border:none!important}.left .motion-spinner{border-top-color:#00d7cc!important;border-left-color:#00d7cc!important}.right .motion-spinner{border-top-color:#00d7cc!important;border-right-color:#00d7cc!important}.md-option-info-text{font-size:10px}md-pagination-wrapper{width:auto!important}md-autocomplete.no-container-margin md-autocomplete-wrap md-input-container{margin:0!important}md-dialog.report-selection-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.advanced-search-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}.md-dialog-action-center{justify-content:center!important}.flag-24{height:24px}button.auto-width{min-width:auto!important}button.size-8{transform:scale(.8)}md-icon.auto-size{height:auto!important;width:auto!important}md-switch.auto-height{height:auto!important}.hidden{visibility:hidden}.user-profile-section-help{background:#fcf20f0f;border:1px solid rgba(0,0,0,.12);padding:5px}.email-preview-message{display:-webkit-box;margin:0 auto;display:block;height:200px;line-height:1.4;-webkit-line-clamp:10;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:break-all}button.advanced-search.md-accent-bg.md-button.md-default-theme:not([disabled]).md-icon-button:hover{background-color:#0091ea}.blink{animation:blink 2s ease-in infinite}.no-click{pointer-events:none}.spinner-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;background:rgba(43,43,43,.5)}ms-quick-filter[disabled]{pointer-events:none;opacity:.7}ms-search-bar[disabled]{pointer-events:none;opacity:.7}@keyframes blink{from,to{opacity:1}50%{opacity:0}}textarea.api-key-area{background:0 0;resize:none}.badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}md-tooltip.multiline div.md-content{height:auto!important}.auto-margin{margin:auto}md-menu-item md-menu.no-margin button{display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-date-range md-menu span.md-select-value{border-bottom-color:rgba(0,0,0,.12)}.keep-on-top{z-index:9999!important}.margin-auto{margin:auto}.xenialab-violet-light-bg{background-color:#9c4fd3!important}.xenialab-violet-light-fg{color:#9c4fd3!important}.no-margin-top{margin-top:0!important}.no-margin-bottom{margin-bottom:0!important}.disabled-button{display:inline-block;position:relative;cursor:default;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:rgba(0,0,0,.12);color:rgba(0,0,0,.38);white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden}@supports (-ms-ime-align:auto){md-tabs{display:inline!important}}@supports (-ms-accelerator:true){md-tabs{display:inline!important}}@supports (-moz-transform:translate(0,0)){md-tabs{display:inline!important}}body[dir=rtl] table.md-table td.md-cell,body[dir=rtl] table.md-table th.md-column{text-align:right!important}body[dir=rtl] table.md-table td.md-cell md-checkbox,body[dir=rtl] table.md-table th.md-column md-checkbox{margin-right:12px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{margin:0 0 0 16px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>a.ms-navigation-button{padding-right:45px}body[dir=rtl] .md-table-pagination>.buttons{direction:ltr}body[dir=rtl] .md-table-pagination>.buttons>.label{direction:rtl}body[dir=rtl] .header .logo .logo-icon{margin:5px 0 0 15px!important}body[dir=rtl] md-switch .md-container{margin-right:inherit!important}body,html{height:100%;position:relative}body{margin:0;padding:0}[tabindex='-1']:focus{outline:0}.inset{padding:10px}a.md-no-style,button.md-no-style{font-weight:400;background-color:inherit;text-align:left;border:none;padding:0;margin:0}button,input,select,textarea{vertical-align:baseline}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default}textarea{vertical-align:top;overflow:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box;-webkit-box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input:-webkit-autofill{text-shadow:none}.md-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;text-transform:none;width:1px}.md-shadow{position:absolute;top:0;left:0;bottom:0;right:0;border-radius:inherit;pointer-events:none}.md-shadow-bottom-z-1{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-shadow-bottom-z-2{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-shadow-animated.md-shadow{transition:box-shadow .28s cubic-bezier(.4,0,.2,1)}.md-ripple-container{pointer-events:none;position:absolute;overflow:hidden;left:0;top:0;width:100%;height:100%;transition:all .55s cubic-bezier(.25,.8,.25,1)}.md-ripple{position:absolute;transform:translate(-50%,-50%) scale(0);transform-origin:50% 50%;opacity:0;border-radius:50%}.md-ripple.md-ripple-placed{transition:margin .9s cubic-bezier(.25,.8,.25,1),border .9s cubic-bezier(.25,.8,.25,1),width .9s cubic-bezier(.25,.8,.25,1),height .9s cubic-bezier(.25,.8,.25,1),opacity .9s cubic-bezier(.25,.8,.25,1),transform .9s cubic-bezier(.25,.8,.25,1)}.md-ripple.md-ripple-scaled{transform:translate(-50%,-50%) scale(1)}.md-ripple.md-ripple-active,.md-ripple.md-ripple-full,.md-ripple.md-ripple-visible{opacity:.2}.md-ripple.md-ripple-remove{animation:md-remove-ripple .9s cubic-bezier(.25,.8,.25,1)}@keyframes md-remove-ripple{0%{opacity:.15}100%{opacity:0}}.md-padding{padding:8px}.md-margin{margin:8px}.md-scroll-mask{position:absolute;background-color:transparent;top:0;right:0;bottom:0;left:0;z-index:50}.md-scroll-mask>.md-scroll-mask-bar{display:block;position:absolute;background-color:#fafafa;right:0;top:0;bottom:0;z-index:65;box-shadow:inset 0 0 1px rgba(0,0,0,.3)}.md-no-momentum{-webkit-overflow-scrolling:auto}.md-no-flicker{-webkit-filter:blur(0)}@media (min-width:960px){.md-padding{padding:16px}}body[dir=ltr],body[dir=rtl],html[dir=ltr],html[dir=rtl]{unicode-bidi:embed}bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}body,html{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;min-height:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.md-display-4{font-size:112px;font-weight:300;letter-spacing:-.010em;line-height:112px}.md-display-3{font-size:56px;font-weight:400;letter-spacing:-.005em;line-height:56px}.md-display-2{font-size:45px;font-weight:400;line-height:64px}.md-display-1{font-size:34px;font-weight:400;line-height:40px}.md-headline{font-size:24px;font-weight:400;line-height:32px}.md-title{font-size:20px;font-weight:500;letter-spacing:.005em}.md-subhead{font-size:16px;font-weight:400;letter-spacing:.010em;line-height:24px}.md-body-1{font-size:14px;font-weight:400;letter-spacing:.010em;line-height:20px}.md-body-2{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:24px}.md-caption{font-size:12px;letter-spacing:.020em}.md-button{letter-spacing:.010em}button,html,input,select,textarea{font-family:Roboto,"Helvetica Neue",sans-serif}button,input,select,textarea{font-size:100%}@keyframes md-autocomplete-list-out{0%{animation-timing-function:linear}50%{opacity:0;height:40px;animation-timing-function:ease-in}100%{height:0;opacity:0}}@keyframes md-autocomplete-list-in{0%{opacity:0;height:0;animation-timing-function:ease-out}50%{opacity:0;height:40px}100%{opacity:1;height:40px}}md-autocomplete{border-radius:2px;display:block;height:40px;position:relative;overflow:visible;min-width:190px}md-autocomplete[disabled] input{cursor:default}md-autocomplete[md-floating-label]{border-radius:0;background:0 0;height:auto}md-autocomplete[md-floating-label] md-input-container{padding-bottom:0}md-autocomplete[md-floating-label] md-autocomplete-wrap{height:auto}md-autocomplete[md-floating-label] button{position:absolute;top:auto;bottom:0;right:0;width:30px;height:30px}md-autocomplete md-autocomplete-wrap{display:flex;flex-direction:row;box-sizing:border-box;position:relative;overflow:visible;height:40px}md-autocomplete md-autocomplete-wrap.md-menu-showing{z-index:51}md-autocomplete md-autocomplete-wrap input,md-autocomplete md-autocomplete-wrap md-input-container{flex:1 1 0%;box-sizing:border-box;min-width:0}md-autocomplete md-autocomplete-wrap md-progress-linear{position:absolute;bottom:-2px;left:0}md-autocomplete md-autocomplete-wrap md-progress-linear.md-inline{bottom:40px;right:2px;left:2px;width:auto}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate{position:absolute;top:0;left:0;width:100%;height:3px;transition:none}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate .md-container{transition:none;height:3px}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter.ng-enter-active{opacity:1}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave.ng-leave-active{opacity:0}md-autocomplete input:not(.md-input){font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;width:100%;padding:0 15px;line-height:40px;height:40px}md-autocomplete input:not(.md-input)::-ms-clear{display:none}md-autocomplete button{position:relative;line-height:20px;text-align:center;width:30px;height:30px;cursor:pointer;border:none;border-radius:50%;padding:0;font-size:12px;background:0 0;margin:auto 5px}md-autocomplete button:after{content:'';position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;border-radius:50%;transform:scale(0);opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-autocomplete button:focus{outline:0}md-autocomplete button:focus:after{transform:scale(1);opacity:1}md-autocomplete button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0) scale(.9)}md-autocomplete button md-icon path{stroke-width:0}md-autocomplete button.ng-enter{transform:scale(0);transition:transform .15s ease-out}md-autocomplete button.ng-enter.ng-enter-active{transform:scale(1)}md-autocomplete button.ng-leave{transition:transform .15s ease-out}md-autocomplete button.ng-leave.ng-leave-active{transform:scale(0)}@media screen and (-ms-high-contrast:active){md-autocomplete input{border:1px solid #fff}md-autocomplete li:focus{color:#fff}}.md-virtual-repeat-container.md-autocomplete-suggestions-container{position:absolute;box-shadow:0 2px 5px rgba(0,0,0,.25);height:225.5px;max-height:225.5px;z-index:100}.md-virtual-repeat-container.md-not-found{height:48px}.md-autocomplete-suggestions{margin:0;list-style:none;padding:0}.md-autocomplete-suggestions li{font-size:14px;overflow:hidden;padding:0 15px;line-height:48px;height:48px;transition:background .15s linear;margin:0;white-space:nowrap;text-overflow:ellipsis}.md-autocomplete-suggestions li:focus{outline:0}.md-autocomplete-suggestions li:not(.md-not-found-wrapper){cursor:pointer}@media screen and (-ms-high-contrast:active){.md-autocomplete-suggestions,md-autocomplete{border:1px solid #fff}}md-backdrop{transition:opacity 450ms;position:absolute;top:0;bottom:0;left:0;right:0;z-index:50}md-backdrop.md-menu-backdrop{position:fixed!important;z-index:99}md-backdrop.md-select-backdrop{z-index:81;transition-duration:0}md-backdrop.md-dialog-backdrop{z-index:79}md-backdrop.md-bottom-sheet-backdrop{z-index:69}md-backdrop.md-sidenav-backdrop{z-index:59}md-backdrop.md-click-catcher{position:absolute}md-backdrop.md-opaque{opacity:.48}md-backdrop.md-opaque.ng-enter{opacity:0}md-backdrop.md-opaque.ng-enter.md-opaque.ng-enter-active{opacity:.48}md-backdrop.md-opaque.ng-leave{opacity:.48;transition:opacity .4s}md-backdrop.md-opaque.ng-leave.md-opaque.ng-leave-active{opacity:0}md-bottom-sheet{position:absolute;left:0;right:0;bottom:0;padding:8px 16px 88px 16px;z-index:70;border-top-width:1px;border-top-style:solid;transform:translate3d(0,80px,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:transform}md-bottom-sheet.md-has-header{padding-top:0}md-bottom-sheet.ng-enter{opacity:0;transform:translate3d(0,100%,0)}md-bottom-sheet.ng-enter-active{opacity:1;display:block;transform:translate3d(0,80px,0)!important}md-bottom-sheet.ng-leave-active{transform:translate3d(0,100%,0)!important;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-bottom-sheet .md-subheader{background-color:transparent;font-family:Roboto,"Helvetica Neue",sans-serif;line-height:56px;padding:0;white-space:nowrap}md-bottom-sheet md-inline-icon{display:inline-block;height:24px;width:24px;fill:#444}md-bottom-sheet md-list-item{display:flex;outline:0}md-bottom-sheet md-list-item:hover{cursor:pointer}md-bottom-sheet.md-list md-list-item{padding:0;align-items:center;height:48px}md-bottom-sheet.md-grid{padding-left:24px;padding-right:24px;padding-top:0}md-bottom-sheet.md-grid md-list{display:flex;flex-direction:row;flex-wrap:wrap;transition:all .5s;align-items:center}md-bottom-sheet.md-grid md-list-item{flex-direction:column;align-items:center;transition:all .5s;height:96px;margin-top:8px;margin-bottom:8px}@media (max-width:960px){md-bottom-sheet.md-grid md-list-item{flex:1 1 33.3333333333%;max-width:33.3333333333%}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n+1){align-items:flex-start}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n){align-items:flex-end}}@media (min-width:960px) and (max-width:1279px){md-bottom-sheet.md-grid md-list-item{flex:1 1 25%;max-width:25%}}@media (min-width:1280px) and (max-width:1919px){md-bottom-sheet.md-grid md-list-item{flex:1 1 16.6666666667%;max-width:16.6666666667%}}@media (min-width:1920px){md-bottom-sheet.md-grid md-list-item{flex:1 1 14.2857142857%;max-width:14.2857142857%}}md-bottom-sheet.md-grid md-list-item::before{display:none}md-bottom-sheet.md-grid md-list-item .md-list-item-content{display:flex;flex-direction:column;align-items:center;width:48px;padding-bottom:16px}md-bottom-sheet.md-grid md-list-item .md-grid-item-content{border:1px solid transparent;display:flex;flex-direction:column;align-items:center;width:80px}md-bottom-sheet.md-grid md-list-item .md-grid-text{font-weight:400;line-height:16px;font-size:13px;margin:0;white-space:nowrap;width:64px;text-align:center;text-transform:none;padding-top:8px}@media screen and (-ms-high-contrast:active){md-bottom-sheet{border:1px solid #fff}}button.md-button::-moz-focus-inner{border:0}.md-button{display:inline-block;position:relative;cursor:pointer;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:0 0;color:currentColor;white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden;transition:box-shadow .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.md-button:focus{outline:0}.md-button:focus,.md-button:hover{text-decoration:none}.md-button.ng-hide,.md-button.ng-leave{transition:none}.md-button.md-cornered{border-radius:0}.md-button.md-icon{padding:0;background:0 0}.md-button.md-raised:not([disabled]){box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button.md-icon-button{margin:0 6px;height:40px;min-width:0;line-height:24px;padding:8px;width:40px;border-radius:50%}.md-button.md-icon-button .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab{z-index:20;line-height:56px;min-width:0;width:56px;height:56px;vertical-align:middle;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:50%;background-clip:padding-box;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-property:background-color,box-shadow,transform}.md-button.md-fab.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}.md-button.md-fab.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}.md-button.md-fab.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}.md-button.md-fab.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}.md-button.md-fab .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab.md-mini{line-height:40px;width:40px;height:40px}.md-button.md-fab.ng-hide,.md-button.md-fab.ng-leave{transition:none}.md-button:not([disabled]).md-fab.md-focused,.md-button:not([disabled]).md-raised.md-focused{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button:not([disabled]).md-fab:active,.md-button:not([disabled]).md-raised:active{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-button .md-ripple-container{border-radius:3px;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-icon-button md-icon,button.md-button.md-fab md-icon{display:block}.md-toast-open-top .md-button.md-fab-top-left,.md-toast-open-top .md-button.md-fab-top-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,42px,0)}.md-toast-open-top .md-button.md-fab-top-left:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-left:not([disabled]):hover,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]):hover{transform:translate3d(0,41px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left,.md-toast-open-bottom .md-button.md-fab-bottom-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,-42px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]):hover,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]):hover{transform:translate3d(0,-43px,0)}.md-button-group{display:flex;flex:1;width:100%}.md-button-group>.md-button{flex:1;display:block;overflow:hidden;width:0;border-width:1px 0 1px 1px;border-radius:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.md-button-group>.md-button:first-child{border-radius:2px 0 0 2px}.md-button-group>.md-button:last-child{border-right-width:1px;border-radius:0 2px 2px 0}@media screen and (-ms-high-contrast:active){.md-button.md-fab,.md-button.md-raised{border:1px solid #fff}}md-card{box-sizing:border-box;display:flex;flex-direction:column;margin:8px;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-card md-card-header{padding:16px;display:flex;flex-direction:row}md-card md-card-header:first-child md-card-avatar{margin-right:12px}[dir=rtl] md-card md-card-header:first-child md-card-avatar{margin-right:auto;margin-left:12px}md-card md-card-header:last-child md-card-avatar{margin-left:12px}[dir=rtl] md-card md-card-header:last-child md-card-avatar{margin-left:auto;margin-right:12px}md-card md-card-header md-card-avatar{width:40px;height:40px}md-card md-card-header md-card-avatar .md-user-avatar,md-card md-card-header md-card-avatar md-icon{border-radius:50%}md-card md-card-header md-card-avatar md-icon{padding:8px}md-card md-card-header md-card-avatar+md-card-header-text{max-height:40px}md-card md-card-header md-card-avatar+md-card-header-text .md-title{font-size:14px}md-card md-card-header md-card-header-text{display:flex;flex:1;flex-direction:column}md-card md-card-header md-card-header-text .md-subhead{font-size:14px}md-card md-card-title-media img,md-card>img,md-card>md-card-header img{box-sizing:border-box;display:flex;flex:0 0 auto;width:100%;height:auto}md-card md-card-title{padding:24px 16px 16px;display:flex;flex:1 1 auto;flex-direction:row}md-card md-card-title+md-card-content{padding-top:0}md-card md-card-title md-card-title-text{flex:1;flex-direction:column;display:flex}md-card md-card-title md-card-title-text .md-subhead{padding-top:0;font-size:14px}md-card md-card-title md-card-title-text:only-child .md-subhead{padding-top:12px}md-card md-card-title md-card-title-media{margin-top:-8px}md-card md-card-title md-card-title-media .md-media-sm{height:80px;width:80px}md-card md-card-title md-card-title-media .md-media-md{height:112px;width:112px}md-card md-card-title md-card-title-media .md-media-lg{height:152px;width:152px}md-card md-card-content{display:block;padding:16px}md-card md-card-content>p:first-child{margin-top:0}md-card md-card-content>p:last-child{margin-bottom:0}md-card md-card-content .md-media-xl{height:240px;width:240px}md-card .md-actions,md-card md-card-actions{margin:8px}md-card .md-actions.layout-column .md-button:not(.md-icon-button),md-card md-card-actions.layout-column .md-button:not(.md-icon-button){margin:2px 0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):first-of-type{margin-top:0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):last-of-type{margin-bottom:0}md-card .md-actions.layout-column .md-button.md-icon-button,md-card md-card-actions.layout-column .md-button.md-icon-button{margin-top:6px;margin-bottom:6px}md-card .md-actions md-card-icon-actions,md-card md-card-actions md-card-icon-actions{flex:1;justify-content:flex-start;display:flex;flex-direction:row}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button),md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button){margin:0 4px}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:auto;margin-right:0}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:auto;margin-left:0}md-card .md-actions:not(.layout-column) .md-button.md-icon-button,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button{margin-left:6px;margin-right:6px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:auto;margin-right:12px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:auto;margin-left:12px}md-card .md-actions:not(.layout-column) .md-button+md-card-icon-actions,md-card md-card-actions:not(.layout-column) .md-button+md-card-icon-actions{flex:1;justify-content:flex-end;display:flex;flex-direction:row}md-card md-card-footer{margin-top:auto;padding:16px}@media screen and (-ms-high-contrast:active){md-card{border:1px solid #fff}}.md-image-no-fill>img{width:auto;height:auto}.md-contact-chips .md-chips md-chip{padding:0 25px 0 0}[dir=rtl] .md-contact-chips .md-chips md-chip{padding:0 0 0 25px}.md-contact-chips .md-chips md-chip .md-contact-avatar{float:left}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-avatar{float:right}.md-contact-chips .md-chips md-chip .md-contact-avatar img{height:32px;border-radius:16px}.md-contact-chips .md-chips md-chip .md-contact-name{display:inline-block;height:32px;margin-left:8px}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion{height:56px}.md-contact-suggestion img{height:40px;border-radius:20px;margin-top:8px}.md-contact-suggestion .md-contact-name{margin-left:8px;width:120px}[dir=rtl] .md-contact-suggestion .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion .md-contact-email,.md-contact-suggestion .md-contact-name{display:inline-block;overflow:hidden;text-overflow:ellipsis}.md-contact-chips-suggestions li{height:100%}.md-chips{display:block;font-family:Roboto,"Helvetica Neue",sans-serif;font-size:16px;padding:0 0 8px 3px;vertical-align:middle}.md-chips:after{content:'';display:table;clear:both}[dir=rtl] .md-chips{padding:0 3px 8px 0}.md-chips.md-readonly .md-chip-input-container{min-height:32px}.md-chips:not(.md-readonly){cursor:text}.md-chips.md-removable md-chip{padding-right:22px}[dir=rtl] .md-chips.md-removable md-chip{padding-right:0;padding-left:22px}.md-chips.md-removable md-chip .md-chip-content{padding-right:4px}[dir=rtl] .md-chips.md-removable md-chip .md-chip-content{padding-right:0;padding-left:4px}.md-chips md-chip{cursor:default;border-radius:16px;display:block;height:32px;line-height:32px;margin:8px 8px 0 0;padding:0 12px 0 12px;float:left;box-sizing:border-box;max-width:100%;position:relative}[dir=rtl] .md-chips md-chip{margin:8px 0 0 8px}[dir=rtl] .md-chips md-chip{float:right}.md-chips md-chip .md-chip-content{display:block;float:left;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-chips md-chip .md-chip-content{float:right}.md-chips md-chip .md-chip-content:focus{outline:0}.md-chips md-chip._md-chip-content-edit-is-enabled{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.md-chips md-chip .md-chip-remove-container{position:absolute;right:0;line-height:22px}[dir=rtl] .md-chips md-chip .md-chip-remove-container{right:auto;left:0}.md-chips md-chip .md-chip-remove{text-align:center;width:32px;height:32px;min-width:0;padding:0;background:0 0;border:none;box-shadow:none;margin:0;position:relative}.md-chips md-chip .md-chip-remove md-icon{height:18px;width:18px;position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}.md-chips .md-chip-input-container{display:block;line-height:32px;margin:8px 8px 0 0;padding:0;float:left}[dir=rtl] .md-chips .md-chip-input-container{margin:8px 0 0 8px}[dir=rtl] .md-chips .md-chip-input-container{float:right}.md-chips .md-chip-input-container input:not([type]),.md-chips .md-chip-input-container input[type=email],.md-chips .md-chip-input-container input[type=number],.md-chips .md-chip-input-container input[type=tel],.md-chips .md-chip-input-container input[type=text],.md-chips .md-chip-input-container input[type=url]{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:not([type]):focus,.md-chips .md-chip-input-container input[type=email]:focus,.md-chips .md-chip-input-container input[type=number]:focus,.md-chips .md-chip-input-container input[type=tel]:focus,.md-chips .md-chip-input-container input[type=text]:focus,.md-chips .md-chip-input-container input[type=url]:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{background:0 0;height:32px}.md-chips .md-chip-input-container md-autocomplete md-autocomplete-wrap{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container input{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{height:32px}.md-chips .md-chip-input-container md-autocomplete{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container:not(:first-child){margin:8px 8px 0 0}[dir=rtl] .md-chips .md-chip-input-container:not(:first-child){margin:8px 0 0 8px}.md-chips .md-chip-input-container input{background:0 0;border-width:0}.md-chips md-autocomplete button{display:none}@media screen and (-ms-high-contrast:active){.md-chip-input-container,md-chip{border:1px solid #fff}.md-chip-input-container md-autocomplete{border:none}}.md-inline-form md-checkbox{margin:19px 0 18px}md-checkbox{box-sizing:border-box;display:inline-block;margin-bottom:16px;white-space:nowrap;cursor:pointer;outline:0;user-select:none;position:relative;min-width:20px;min-height:20px;margin-left:0;margin-right:16px}[dir=rtl] md-checkbox{margin-left:16px}[dir=rtl] md-checkbox{margin-right:0}md-checkbox:last-of-type{margin-left:0;margin-right:0}md-checkbox.md-focused:not([disabled]) .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-checkbox.md-focused:not([disabled]):not(.md-checked) .md-container:before{background-color:rgba(0,0,0,.12)}md-checkbox.md-align-top-left>div.md-container{top:12px}md-checkbox .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-checkbox .md-container{left:auto}[dir=rtl] md-checkbox .md-container{right:0}md-checkbox .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-checkbox .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-checkbox .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-checkbox .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-checkbox.md-checked .md-icon{border-color:transparent}md-checkbox.md-checked .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox[disabled]{cursor:default}md-checkbox.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox .md-label{box-sizing:border-box;position:relative;display:inline-block;vertical-align:middle;white-space:normal;user-select:text;margin-left:30px;margin-right:0}[dir=rtl] md-checkbox .md-label{margin-left:0}[dir=rtl] md-checkbox .md-label{margin-right:30px}md-content{display:block;position:relative;overflow:auto;-webkit-overflow-scrolling:touch}md-content[md-scroll-y]{overflow-y:auto;overflow-x:hidden}md-content[md-scroll-x]{overflow-x:auto;overflow-y:hidden}@media print{md-content{overflow:visible!important}}md-calendar{font-size:13px;user-select:none}.md-calendar-scroll-mask{display:inline-block;overflow:hidden;height:308px}.md-calendar-scroll-mask .md-virtual-repeat-scroller{overflow-y:scroll;-webkit-overflow-scrolling:touch}.md-calendar-scroll-mask .md-virtual-repeat-scroller::-webkit-scrollbar{display:none}.md-calendar-scroll-mask .md-virtual-repeat-offsetter{width:100%}.md-calendar-scroll-container{box-shadow:inset -3px 3px 6px rgba(0,0,0,.2);display:inline-block;height:308px;width:346px}.md-calendar-date{height:44px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box}.md-calendar-date:first-child{padding-left:16px}[dir=rtl] .md-calendar-date:first-child{padding-left:0;padding-right:16px}.md-calendar-date:last-child{padding-right:16px}[dir=rtl] .md-calendar-date:last-child{padding-right:0;padding-left:16px}.md-calendar-date.md-calendar-date-disabled{cursor:default}.md-calendar-date-selection-indicator{transition:background-color,color .4s cubic-bezier(.25,.8,.25,1);border-radius:50%;display:inline-block;width:40px;height:40px;line-height:40px}.md-calendar-date:not(.md-disabled) .md-calendar-date-selection-indicator{cursor:pointer}.md-calendar-month-label{height:44px;font-size:14px;font-weight:500;padding:0 0 0 24px}[dir=rtl] .md-calendar-month-label{padding:0 24px 0 0}md-calendar-month .md-calendar-month-label:not(.md-calendar-month-label-disabled){cursor:pointer}.md-calendar-month-label md-icon{transform:rotate(180deg)}[dir=rtl] .md-calendar-month-label md-icon{transform:none}.md-calendar-month-label span{vertical-align:middle}.md-calendar-day-header{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar-day-header th{height:40px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box;font-weight:400}.md-calendar-day-header th:first-child{padding-left:16px}[dir=rtl] .md-calendar-day-header th:first-child{padding-left:0;padding-right:16px}.md-calendar-day-header th:last-child{padding-right:16px}[dir=rtl] .md-calendar-day-header th:last-child{padding-right:0;padding-left:16px}.md-calendar{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar tr:last-child td{border-bottom-width:1px;border-bottom-style:solid}.md-calendar:first-child{border-top:1px solid transparent}.md-calendar tbody,.md-calendar td,.md-calendar tr{vertical-align:middle;box-sizing:content-box}md-datepicker{white-space:nowrap;overflow:hidden;padding-right:18px;margin-right:-18px;vertical-align:middle}[dir=rtl] md-datepicker{padding-right:0;padding-left:18px}[dir=rtl] md-datepicker{margin-right:auto;margin-left:-18px}.md-inline-form md-datepicker{margin-top:12px}.md-datepicker-button{display:inline-block;box-sizing:border-box;background:0 0;vertical-align:middle;position:relative}.md-datepicker-button:before{top:0;left:0;bottom:0;right:0;position:absolute;content:'';speak:none}.md-datepicker-input{font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;min-width:120px;max-width:328px;padding:0 0 5px}.md-datepicker-input::-ms-clear{display:none}._md-datepicker-floating-label>md-datepicker{overflow:visible}._md-datepicker-floating-label>md-datepicker .md-datepicker-input-container{border:none}._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:left;margin-top:-2.5px}[dir=rtl] ._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:right}._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:18px;left:auto;width:calc(100% - 84px)}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:auto}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){left:18px}._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:64px}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:auto;margin-right:64px}.md-datepicker-input-container{position:relative;border-bottom-width:1px;border-bottom-style:solid;display:inline-block;width:auto}.md-icon-button+.md-datepicker-input-container{margin-left:12px}[dir=rtl] .md-icon-button+.md-datepicker-input-container{margin-left:auto;margin-right:12px}.md-datepicker-input-container.md-datepicker-focused{border-bottom-width:2px}.md-datepicker-is-showing .md-scroll-mask{z-index:99}.md-datepicker-calendar-pane{position:absolute;top:0;left:-100%;z-index:100;border-width:1px;border-style:solid;background:0 0;transform:scale(0);transform-origin:0 0;transition:transform .2s cubic-bezier(.25,.8,.25,1)}.md-datepicker-calendar-pane.md-pane-open{transform:scale(1)}.md-datepicker-input-mask{height:40px;width:340px;position:relative;overflow:hidden;background:0 0;pointer-events:none;cursor:text}.md-datepicker-calendar{opacity:0;transition:opacity .2s cubic-bezier(.5,0,.25,1)}.md-pane-open .md-datepicker-calendar{opacity:1}.md-datepicker-calendar md-calendar:focus{outline:0}.md-datepicker-expand-triangle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid}.md-datepicker-triangle-button{position:absolute;right:0;top:5px;transform:translateY(-25%) translateX(45%)}[dir=rtl] .md-datepicker-triangle-button{right:auto;left:0}[dir=rtl] .md-datepicker-triangle-button{transform:translateY(-25%) translateX(-45%)}.md-datepicker-triangle-button.md-button.md-icon-button{height:36px;width:36px;position:absolute;padding:8px}md-datepicker[disabled] .md-datepicker-input-container{border-bottom-color:transparent}md-datepicker[disabled] .md-datepicker-triangle-button{display:none}.md-datepicker-open{overflow:hidden}.md-datepicker-open .md-datepicker-input-container,.md-datepicker-open input.md-input{border-bottom-color:transparent}.md-datepicker-open .md-datepicker-triangle-button,.md-datepicker-open.md-input-has-placeholder>label,.md-datepicker-open.md-input-has-value>label{display:none}.md-datepicker-pos-adjusted .md-datepicker-input-mask{display:none}.md-datepicker-calendar-pane .md-calendar{transform:translateY(-85px);transition:transform .65s cubic-bezier(.25,.8,.25,1);transition-delay:125ms}.md-datepicker-calendar-pane.md-pane-open .md-calendar{transform:translateY(0)}.md-dialog-is-showing{max-height:100%}.md-dialog-container{display:flex;justify-content:center;align-items:center;position:absolute;top:0;left:0;width:100%;height:100%;z-index:80;overflow:hidden}md-dialog{opacity:0;min-width:240px;max-width:80%;max-height:80%;position:relative;overflow:auto;box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12);display:flex;flex-direction:column}md-dialog.md-transition-in{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,0) scale(1)}md-dialog.md-transition-out{opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,100%) scale(.2)}md-dialog>form{display:flex;flex-direction:column;overflow:auto}md-dialog .md-dialog-content{padding:24px}md-dialog md-dialog-content{order:1;flex-direction:column;overflow:auto;-webkit-overflow-scrolling:touch}md-dialog md-dialog-content:not([layout=row])>:first-child:not(.md-subheader){margin-top:0}md-dialog md-dialog-content:focus{outline:0}md-dialog md-dialog-content .md-subheader{margin:0}md-dialog md-dialog-content .md-dialog-content-body{width:100%}md-dialog md-dialog-content .md-prompt-input-container{width:100%;box-sizing:border-box}md-dialog .md-actions,md-dialog md-dialog-actions{display:flex;order:2;box-sizing:border-box;align-items:center;justify-content:flex-end;margin-bottom:0;padding-right:8px;padding-left:16px;min-height:52px;overflow:hidden}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-right:16px}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-left:8px}md-dialog .md-actions .md-button,md-dialog md-dialog-actions .md-button{margin-bottom:8px;margin-left:8px;margin-right:0;margin-top:8px}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-left:0}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-right:8px}md-dialog.md-content-overflow .md-actions,md-dialog.md-content-overflow md-dialog-actions{border-top-width:1px;border-top-style:solid}@media screen and (-ms-high-contrast:active){md-dialog{border:1px solid #fff}}@media (max-width:959px){md-dialog.md-dialog-fullscreen{min-height:100%;min-width:100%;border-radius:0}}md-divider{display:block;border-top-width:1px;border-top-style:solid;margin:0}md-divider[md-inset]{margin-left:80px}[dir=rtl] md-divider[md-inset]{margin-left:auto;margin-right:80px}.layout-gt-lg-row>md-divider,.layout-gt-md-row>md-divider,.layout-gt-sm-row>md-divider,.layout-gt-xs-row>md-divider,.layout-lg-row>md-divider,.layout-md-row>md-divider,.layout-row>md-divider,.layout-sm-row>md-divider,.layout-xl-row>md-divider,.layout-xs-row>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}md-fab-speed-dial{position:relative;display:flex;align-items:center;z-index:20}md-fab-speed-dial.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-speed-dial.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-speed-dial.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-speed-dial.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-speed-dial:not(.md-hover-full){pointer-events:none}md-fab-speed-dial:not(.md-hover-full) .md-fab-action-item,md-fab-speed-dial:not(.md-hover-full) md-fab-trigger{pointer-events:auto}md-fab-speed-dial:not(.md-hover-full).md-is-open{pointer-events:auto}md-fab-speed-dial ._md-css-variables{z-index:20}md-fab-speed-dial.md-is-open .md-fab-action-item{align-items:center}md-fab-speed-dial md-fab-actions{display:flex;height:auto}md-fab-speed-dial md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-down{flex-direction:column}md-fab-speed-dial.md-down md-fab-trigger{order:1}md-fab-speed-dial.md-down md-fab-actions{flex-direction:column;order:2}md-fab-speed-dial.md-up{flex-direction:column}md-fab-speed-dial.md-up md-fab-trigger{order:2}md-fab-speed-dial.md-up md-fab-actions{flex-direction:column-reverse;order:1}md-fab-speed-dial.md-left{flex-direction:row}md-fab-speed-dial.md-left md-fab-trigger{order:2}md-fab-speed-dial.md-left md-fab-actions{flex-direction:row-reverse;order:1}md-fab-speed-dial.md-left md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-right{flex-direction:row}md-fab-speed-dial.md-right md-fab-trigger{order:1}md-fab-speed-dial.md-right md-fab-actions{flex-direction:row;order:2}md-fab-speed-dial.md-right md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-fling-remove .md-fab-action-item>*,md-fab-speed-dial.md-scale-remove .md-fab-action-item>*{visibility:hidden}md-fab-speed-dial.md-fling .md-fab-action-item{opacity:1}md-fab-speed-dial.md-fling.md-animations-waiting .md-fab-action-item{opacity:0;transition-duration:0s}md-fab-speed-dial.md-scale .md-fab-action-item{transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.1428571429s}md-fab-toolbar{display:block}md-fab-toolbar.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-toolbar.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-toolbar.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-toolbar.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-toolbar .md-fab-toolbar-wrapper{display:block;position:relative;overflow:hidden;height:68px}md-fab-toolbar md-fab-trigger{position:absolute;z-index:20}md-fab-toolbar md-fab-trigger button{overflow:visible!important}md-fab-toolbar md-fab-trigger .md-fab-toolbar-background{display:block;position:absolute;z-index:21;opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-toolbar md-fab-trigger md-icon{position:relative;z-index:22;opacity:1;transition:all .2s ease-in}md-fab-toolbar.md-left md-fab-trigger{right:0}[dir=rtl] md-fab-toolbar.md-left md-fab-trigger{right:auto;left:0}md-fab-toolbar.md-left .md-toolbar-tools{flex-direction:row-reverse}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:.6rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:auto;margin-left:.6rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:-.8rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-.8rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:8px}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:8px}md-fab-toolbar.md-right md-fab-trigger{left:0}[dir=rtl] md-fab-toolbar.md-right md-fab-trigger{left:auto;right:0}md-fab-toolbar.md-right .md-toolbar-tools{flex-direction:row}md-fab-toolbar md-toolbar{background-color:transparent!important;pointer-events:none;z-index:23}md-fab-toolbar md-toolbar .md-toolbar-tools{padding:0 20px;margin-top:3px}md-fab-toolbar md-toolbar .md-fab-action-item{opacity:0;transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.15s}md-fab-toolbar.md-is-open md-fab-trigger>button{box-shadow:none}md-fab-toolbar.md-is-open md-fab-trigger>button md-icon{opacity:0}md-fab-toolbar.md-is-open .md-fab-action-item{opacity:1;transform:scale(1)}md-grid-list{box-sizing:border-box;display:block;position:relative}md-grid-list md-grid-tile,md-grid-list md-grid-tile-footer,md-grid-list md-grid-tile-header,md-grid-list md-grid-tile>figure{box-sizing:border-box}md-grid-list md-grid-tile{display:block;position:absolute}md-grid-list md-grid-tile figure{display:flex;align-items:center;justify-content:center;height:100%;position:absolute;top:0;right:0;bottom:0;left:0;padding:0;margin:0}md-grid-list md-grid-tile md-grid-tile-footer,md-grid-list md-grid-tile md-grid-tile-header{display:flex;flex-direction:row;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.18);overflow:hidden;position:absolute;left:0;right:0}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h3,md-grid-list md-grid-tile md-grid-tile-header h4{font-weight:400;margin:0 0 0 16px}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-header h3{font-size:14px}md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h4{font-size:12px}md-grid-list md-grid-tile md-grid-tile-header{top:0}md-grid-list md-grid-tile md-grid-tile-footer{bottom:0}@media screen and (-ms-high-contrast:active){md-grid-tile{border:1px solid #fff}md-grid-tile-footer{border-top:1px solid #fff}}md-icon{margin:auto;background-repeat:no-repeat no-repeat;display:inline-block;vertical-align:middle;fill:currentColor;height:24px;width:24px;min-height:24px;min-width:24px}md-icon svg{pointer-events:none;display:block}md-icon[md-font-icon]{line-height:24px;width:auto}md-input-container{display:inline-block;position:relative;padding:2px;margin:18px 0;vertical-align:middle}md-input-container:after{content:'';display:table;clear:both}md-input-container.md-block{display:block}md-input-container .md-errors-spacer{float:right;min-height:24px;min-width:1px}[dir=rtl] md-input-container .md-errors-spacer{float:left}md-input-container>md-icon{position:absolute;top:8px;left:2px;right:auto}[dir=rtl] md-input-container>md-icon{left:auto}[dir=rtl] md-input-container>md-icon{right:2px}md-input-container input[type=color],md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=datetime],md-input-container input[type=email],md-input-container input[type=month],md-input-container input[type=number],md-input-container input[type=password],md-input-container input[type=search],md-input-container input[type=tel],md-input-container input[type=text],md-input-container input[type=time],md-input-container input[type=url],md-input-container input[type=week],md-input-container textarea{-moz-appearance:none;-webkit-appearance:none}md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=month],md-input-container input[type=time],md-input-container input[type=week]{min-height:26px}md-input-container textarea{resize:none;overflow:hidden}md-input-container textarea.md-input{min-height:26px;-ms-flex-preferred-size:auto}md-input-container textarea[md-no-autogrow]{height:auto;overflow:auto}md-input-container label:not(.md-container-ignore){position:absolute;bottom:100%;left:0;right:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){left:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){right:0}md-input-container label:not(.md-container-ignore).md-required:after{content:' *';font-size:13px;vertical-align:top}md-input-container .md-placeholder,md-input-container label:not(.md-no-float):not(.md-container-ignore){overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:3px;padding-right:0;z-index:1;transform:translate3d(0,28px,0) scale(1);transition:transform .4s cubic-bezier(.25,.8,.25,1);max-width:100%;transform-origin:left top}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-left:0}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-right:3px}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){transform-origin:right top}md-input-container .md-placeholder{position:absolute;top:0;opacity:0;transition-property:opacity,transform;transform:translate3d(0,30px,0)}md-input-container.md-input-focused .md-placeholder{opacity:1;transform:translate3d(0,24px,0)}md-input-container.md-input-has-value .md-placeholder{transition:none;opacity:0}md-input-container:not(.md-input-has-value) input:not(:focus),md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-ampm-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-day-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-hour-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-millisecond-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-minute-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-month-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-second-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-text,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-week-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-year-field{color:transparent}md-input-container .md-input{order:2;display:block;margin-top:0;background:0 0;padding-top:2px;padding-bottom:1px;padding-left:2px;padding-right:2px;border-width:0 0 1px 0;line-height:26px;height:30px;-ms-flex-preferred-size:26px;border-radius:0;border-style:solid;width:100%;box-sizing:border-box;float:left}[dir=rtl] md-input-container .md-input{float:right}md-input-container .md-input:focus{outline:0}md-input-container .md-input:invalid{outline:0;box-shadow:none}md-input-container .md-input.md-no-flex{flex:none!important}md-input-container .md-char-counter{text-align:right;padding-right:2px;padding-left:0}[dir=rtl] md-input-container .md-char-counter{text-align:left}[dir=rtl] md-input-container .md-char-counter{padding-right:0}[dir=rtl] md-input-container .md-char-counter{padding-left:2px}md-input-container .md-input-messages-animation{position:relative;order:4;overflow:hidden;clear:left}[dir=rtl] md-input-container .md-input-messages-animation{clear:right}md-input-container .md-input-messages-animation.ng-enter .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-char-counter,md-input-container .md-input-message-animation{font-size:12px;line-height:14px;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);opacity:1;margin-top:0;padding-top:5px}md-input-container .md-char-counter:not(.md-char-counter),md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:5px;padding-left:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-left:5px}md-input-container:not(.md-input-invalid) .md-auto-hide .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-input-message-animation:not(.ng-animate){opacity:0;margin-top:-100px}md-input-container .md-input-message-animation.ng-enter{opacity:0;margin-top:-100px}md-input-container.md-input-focused label:not(.md-no-float),md-input-container.md-input-has-placeholder label:not(.md-no-float),md-input-container.md-input-has-value label:not(.md-no-float){transform:translate3d(0,6px,0) scale(.75);transition:transform cubic-bezier(.25,.8,.25,1) .4s,width cubic-bezier(.25,.8,.25,1) .4s}md-input-container.md-input-has-value label{transition:none}md-input-container .md-input.ng-invalid.ng-dirty,md-input-container.md-input-focused .md-input,md-input-container.md-input-resized .md-input{padding-bottom:0;border-width:0 0 2px 0}[disabled] md-input-container .md-input,md-input-container .md-input[disabled]{background-position:bottom -1px left 0;background-size:4px 1px;background-repeat:repeat-x}md-input-container.md-icon-float{transition:margin-top .4s cubic-bezier(.25,.8,.25,1)}md-input-container.md-icon-float>label{pointer-events:none;position:absolute}md-input-container.md-icon-float>md-icon{top:8px;left:2px;right:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{left:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{right:2px}md-input-container.md-icon-left>label .md-placeholder,md-input-container.md-icon-left>label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-right>label .md-placeholder,md-input-container.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - 36px - 18px)}md-input-container.md-icon-left{padding-left:36px;padding-right:0}[dir=rtl] md-input-container.md-icon-left{padding-left:0}[dir=rtl] md-input-container.md-icon-left{padding-right:36px}md-input-container.md-icon-left>label{left:36px;right:auto}[dir=rtl] md-input-container.md-icon-left>label{left:auto}[dir=rtl] md-input-container.md-icon-left>label{right:36px}md-input-container.md-icon-right{padding-left:0;padding-right:36px}[dir=rtl] md-input-container.md-icon-right{padding-left:36px}[dir=rtl] md-input-container.md-icon-right{padding-right:0}md-input-container.md-icon-right>md-icon:last-of-type{margin:0;right:2px;left:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{right:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{left:2px}md-input-container.md-icon-left.md-icon-right{padding-left:36px;padding-right:36px}md-input-container.md-icon-left.md-icon-right>label .md-placeholder,md-input-container.md-icon-left.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - (36px * 2))}.md-resize-wrapper{position:relative}.md-resize-wrapper:after{content:'';display:table;clear:both}.md-resize-handle{position:absolute;bottom:-5px;left:0;height:10px;background:0 0;width:100%;cursor:ns-resize}@media screen and (-ms-high-contrast:active){md-input-container.md-default-theme>md-icon{fill:#fff}}md-list{display:block;padding:8px 0 8px 0}md-list .md-subheader{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:1.2em}md-list.md-dense md-list-item,md-list.md-dense md-list-item .md-list-item-inner{min-height:48px}md-list.md-dense md-list-item .md-list-item-inner::before,md-list.md-dense md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item .md-list-item-inner md-icon:first-child,md-list.md-dense md-list-item md-icon:first-child{width:20px;height:20px}md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:36px}[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:36px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-avatar-icon,md-list.md-dense md-list-item .md-list-item-inner .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:20px}[dir=rtl] md-list.md-dense md-list-item .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-avatar-icon,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:20px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar{flex:none;width:36px;height:36px}md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line .md-list-item-text p,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line .md-list-item-text p,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text p{line-height:1.05;font-size:12px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:13px}md-list.md-dense md-list-item.md-2-line,md-list.md-dense md-list-item.md-2-line>.md-no-style{min-height:60px}md-list.md-dense md-list-item.md-2-line::before,md-list.md-dense md-list-item.md-2-line>.md-no-style::before{content:'';min-height:60px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-2-line .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-avatar,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list.md-dense md-list-item.md-3-line,md-list.md-dense md-list-item.md-3-line>.md-no-style{min-height:76px}md-list.md-dense md-list-item.md-3-line::before,md-list.md-dense md-list-item.md-3-line>.md-no-style::before{content:'';min-height:76px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-3-line>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list.md-dense md-list-item.md-3-line>md-icon:first-child{margin-top:16px}md-list-item{position:relative}md-list-item.md-proxy-focus.md-focused .md-no-style{transition:background-color .15s linear}md-list-item._md-button-wrap{position:relative}md-list-item._md-button-wrap>div.md-button:first-child{display:flex;align-items:center;justify-content:flex-start;padding:0 16px;margin:0;font-weight:400;text-align:left;border:medium none}[dir=rtl] md-list-item._md-button-wrap>div.md-button:first-child{text-align:right}md-list-item._md-button-wrap>div.md-button:first-child>.md-button:first-child{position:absolute;top:0;left:0;height:100%;margin:0;padding:0}md-list-item._md-button-wrap>div.md-button:first-child .md-list-item-inner{width:100%;min-height:inherit}md-list-item .md-no-style,md-list-item.md-no-proxy{position:relative;padding:0 16px;flex:1 1 auto}md-list-item .md-no-style.md-button,md-list-item.md-no-proxy.md-button{font-size:inherit;height:inherit;text-align:left;text-transform:none;width:100%;white-space:normal;flex-direction:inherit;align-items:inherit;border-radius:0;margin:0}[dir=rtl] md-list-item .md-no-style.md-button,[dir=rtl] md-list-item.md-no-proxy.md-button{text-align:right}md-list-item .md-no-style.md-button>.md-ripple-container,md-list-item.md-no-proxy.md-button>.md-ripple-container{border-radius:0}md-list-item .md-no-style:focus,md-list-item.md-no-proxy:focus{outline:0}md-list-item.md-clickable:hover{cursor:pointer}md-list-item md-divider{position:absolute;bottom:0;left:0;width:100%}[dir=rtl] md-list-item md-divider{left:auto;right:0}md-list-item md-divider[md-inset]{left:72px;width:calc(100% - 72px);margin:0!important}[dir=rtl] md-list-item md-divider[md-inset]{left:auto;right:72px}md-list-item,md-list-item .md-list-item-inner{display:flex;justify-content:flex-start;align-items:center;min-height:48px;height:auto}md-list-item .md-list-item-inner::before,md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list-item .md-list-item-inner>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon.md-secondary:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item>md-icon.md-secondary:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){width:24px;margin-top:16px;margin-bottom:12px;box-sizing:content-box}md-list-item .md-list-item-inner md-checkbox.md-secondary,md-list-item .md-list-item-inner>div.md-primary>md-checkbox,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox,md-list-item .md-list-item-inner>md-checkbox,md-list-item md-checkbox.md-secondary,md-list-item>div.md-primary>md-checkbox,md-list-item>div.md-secondary>md-checkbox,md-list-item>md-checkbox{align-self:center}md-list-item .md-list-item-inner md-checkbox.md-secondary .md-label,md-list-item .md-list-item-inner>div.md-primary>md-checkbox .md-label,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox .md-label,md-list-item .md-list-item-inner>md-checkbox .md-label,md-list-item md-checkbox.md-secondary .md-label,md-list-item>div.md-primary>md-checkbox .md-label,md-list-item>div.md-secondary>md-checkbox .md-label,md-list-item>md-checkbox .md-label{display:none}md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:32px}[dir=rtl] md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:32px}md-list-item .md-avatar,md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar,md-list-item .md-list-item-inner .md-avatar-icon{margin-top:8px;margin-bottom:8px;margin-right:16px;border-radius:50%;box-sizing:content-box}[dir=rtl] md-list-item .md-avatar,[dir=rtl] md-list-item .md-avatar-icon,[dir=rtl] md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:16px}md-list-item .md-avatar,md-list-item .md-list-item-inner .md-avatar{flex:none;width:40px;height:40px}md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar-icon{padding:8px}md-list-item .md-avatar-icon svg,md-list-item .md-list-item-inner .md-avatar-icon svg{width:24px;height:24px}md-list-item .md-list-item-inner>md-checkbox,md-list-item>md-checkbox{width:24px;margin-left:3px;margin-right:29px;margin-top:16px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-left:29px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-right:3px}md-list-item .md-list-item-inner .md-secondary-container,md-list-item .md-secondary-container{display:flex;align-items:center;flex-shrink:0;margin:auto;margin-right:0;margin-left:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-right:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-left:0}md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,md-list-item .md-secondary-container .md-button:last-of-type,md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox,md-list-item .md-secondary-container md-checkbox{margin-top:0;margin-bottom:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,md-list-item .md-secondary-container md-checkbox:last-child{width:24px;margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,[dir=rtl] md-list-item .md-secondary-container md-checkbox:last-child{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-switch,md-list-item .md-secondary-container md-switch{margin-top:0;margin-bottom:0;margin-right:-6px}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-switch,[dir=rtl] md-list-item .md-secondary-container md-switch{margin-right:auto;margin-left:-6px}md-list-item .md-list-item-inner>.md-list-item-inner>p,md-list-item .md-list-item-inner>p,md-list-item>.md-list-item-inner>p,md-list-item>p{flex:1 1 auto;margin:0}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style,md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{align-items:flex-start;justify-content:center}md-list-item.md-2-line.md-long-text,md-list-item.md-2-line>.md-no-style.md-long-text,md-list-item.md-3-line.md-long-text,md-list-item.md-3-line>.md-no-style.md-long-text{margin-top:8px;margin-bottom:8px}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text,md-list-item.md-3-line .md-list-item-text,md-list-item.md-3-line>.md-no-style .md-list-item-text{flex:1 1 auto;margin:auto;text-overflow:ellipsis;overflow:hidden}md-list-item.md-2-line .md-list-item-text.md-offset,md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list-item.md-3-line .md-list-item-text.md-offset,md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list-item.md-2-line .md-list-item-text h3,md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list-item.md-3-line .md-list-item-text h3,md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:16px;font-weight:400;letter-spacing:.010em;margin:0;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text h4,md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list-item.md-3-line .md-list-item-text h4,md-list-item.md-3-line>.md-no-style .md-list-item-text h4{font-size:14px;letter-spacing:.010em;margin:3px 0 1px 0;font-weight:400;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text p,md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list-item.md-3-line .md-list-item-text p,md-list-item.md-3-line>.md-no-style .md-list-item-text p{font-size:14px;font-weight:500;letter-spacing:.010em;margin:0;line-height:1.6em}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style{height:auto;min-height:72px}md-list-item.md-2-line::before,md-list-item.md-2-line>.md-no-style::before{content:'';min-height:72px;visibility:hidden;display:inline-block}md-list-item.md-2-line .md-avatar-icon,md-list-item.md-2-line>.md-avatar,md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list-item.md-2-line>.md-no-style>md-icon:first-child,md-list-item.md-2-line>md-icon:first-child{align-self:flex-start}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text{flex:1 1 auto}md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{height:auto;min-height:88px}md-list-item.md-3-line::before,md-list-item.md-3-line>.md-no-style::before{content:'';min-height:88px;visibility:hidden;display:inline-block}md-list-item.md-3-line>.md-avatar,md-list-item.md-3-line>.md-no-style>.md-avatar,md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list-item.md-3-line>md-icon:first-child{margin-top:16px}.md-open-menu-container{position:fixed;left:0;top:0;z-index:100;opacity:0;border-radius:2px}.md-open-menu-container md-menu-divider{margin-top:4px;margin-bottom:4px;height:1px;min-height:1px;max-height:1px;width:100%}.md-open-menu-container md-menu-content>*{opacity:0}.md-open-menu-container:not(.md-clickable){pointer-events:none}.md-open-menu-container.md-active{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}.md-open-menu-container.md-active>md-menu-content>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.2s;transition-delay:.1s}.md-open-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-menu-content{display:flex;flex-direction:column;padding:8px 0;max-height:304px;overflow-y:auto}md-menu-content.md-dense{max-height:208px}md-menu-content.md-dense md-menu-item{height:32px;min-height:0}md-menu-item{display:flex;flex-direction:row;min-height:48px;height:48px;align-content:center;justify-content:flex-start}md-menu-item>*{width:100%;margin:auto 0;padding-left:16px;padding-right:16px}md-menu-item>a.md-button{padding-top:5px}md-menu-item>.md-button{text-align:left;display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-menu-item>.md-button::-moz-focus-inner{padding:0;border:0}[dir=rtl] md-menu-item>.md-button{text-align:right}md-menu-item>.md-button md-icon{margin:auto 16px auto 0}[dir=rtl] md-menu-item>.md-button md-icon{margin:auto 0 auto 16px}md-menu-item>.md-button p{display:inline-block;margin:auto}md-menu-item>.md-button span{margin-top:auto;margin-bottom:auto}md-menu-item>.md-button .md-ripple-container{border-radius:inherit}md-toolbar .md-menu{height:auto;margin:auto;padding:0}@media (max-width:959px){md-menu-content{min-width:112px}md-menu-content[width="3"]{min-width:168px}md-menu-content[width="4"]{min-width:224px}md-menu-content[width="5"]{min-width:280px}md-menu-content[width="6"]{min-width:336px}md-menu-content[width="7"]{min-width:392px}}@media (min-width:960px){md-menu-content{min-width:96px}md-menu-content[width="3"]{min-width:192px}md-menu-content[width="4"]{min-width:256px}md-menu-content[width="5"]{min-width:320px}md-menu-content[width="6"]{min-width:384px}md-menu-content[width="7"]{min-width:448px}}md-toolbar.md-menu-toolbar h2.md-toolbar-tools{line-height:1rem;height:auto;padding:28px;padding-bottom:12px}md-toolbar.md-has-open-menu{position:relative;z-index:100}md-menu-bar{padding:0 20px;display:block;position:relative;z-index:2}md-menu-bar .md-menu{display:inline-block;padding:0;position:relative}md-menu-bar button{font-size:14px;padding:0 10px;margin:0;border:0;background-color:transparent;height:40px}md-menu-bar md-backdrop.md-menu-backdrop{z-index:-2}md-menu-content.md-menu-bar-menu.md-dense{max-height:none;padding:16px 0}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent{position:relative}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{position:absolute;padding:0;width:24px;top:6px;left:24px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{left:auto;right:24px}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 32px 0 64px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 64px 0 32px}md-menu-content.md-menu-bar-menu.md-dense .md-button{min-height:0;height:32px;display:flex}md-menu-content.md-menu-bar-menu.md-dense .md-button span{flex-grow:1}md-menu-content.md-menu-bar-menu.md-dense .md-button span.md-alt-text{flex-grow:0;align-self:flex-end;margin:0 8px}md-menu-content.md-menu-bar-menu.md-dense md-menu-divider{margin:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:left}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:right}md-menu-content.md-menu-bar-menu.md-dense .md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{position:relative;margin:0;width:100%;text-transform:none;font-weight:400;border-radius:0;padding-left:16px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{padding-left:0;padding-right:16px}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{display:block;content:'\25BC';position:absolute;top:0;speak:none;transform:rotate(270deg) scaleY(.45) scaleX(.9);right:28px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{transform:rotate(90deg) scaleY(.45) scaleX(.9)}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{right:auto;left:28px}.md-nav-bar{border-style:solid;border-width:0 0 1px;height:48px;position:relative}._md-nav-bar-list{outline:0;list-style:none;margin:0;padding:0;box-sizing:border-box;display:flex;flex-direction:row}.md-nav-item:first-of-type{margin-left:8px}.md-button._md-nav-button{line-height:24px;margin:0 4px;padding:12px 16px;transition:background-color .35s cubic-bezier(.35,0,.25,1)}.md-button._md-nav-button:focus{outline:0}.md-button._md-nav-button:hover{background-color:inherit}md-nav-ink-bar{bottom:0;height:2px;left:auto;position:absolute;right:auto;background-color:#000}md-nav-ink-bar._md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-nav-ink-bar._md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-nav-extra-content{min-height:48px;padding-right:12px}.md-panel-outer-wrapper{height:100%;left:0;position:absolute;top:0;width:100%}._md-panel-hidden{display:none}._md-panel-fullscreen{border-radius:0;left:0;min-height:100%;min-width:100%;position:fixed;top:0}._md-panel-shown .md-panel{opacity:1;transition:none}.md-panel{opacity:0;position:fixed}.md-panel._md-panel-shown{opacity:1;transition:none}.md-panel._md-panel-animate-enter{opacity:1;transition:all .3s cubic-bezier(0,0,.2,1)}.md-panel._md-panel-animate-leave{opacity:1;transition:all .3s cubic-bezier(.4,0,1,1)}.md-panel._md-panel-animate-fade-out,.md-panel._md-panel-animate-scale-out{opacity:0}.md-panel._md-panel-backdrop{height:100%;position:absolute;width:100%}.md-panel._md-opaque-enter{opacity:.48;transition:opacity .3s cubic-bezier(0,0,.2,1)}.md-panel._md-opaque-leave{transition:opacity .3s cubic-bezier(.4,0,1,1)}@keyframes indeterminate-rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}md-progress-circular{position:relative;display:block}md-progress-circular._md-progress-circular-disabled{visibility:hidden}md-progress-circular.md-mode-indeterminate svg{animation:indeterminate-rotate 2.9s linear infinite}md-progress-circular svg{position:absolute;overflow:visible;top:0;left:0}md-progress-linear{display:block;position:relative;width:100%;height:5px;padding-top:0!important;margin-bottom:0!important}md-progress-linear._md-progress-linear-disabled{visibility:hidden}md-progress-linear .md-container{display:block;position:relative;overflow:hidden;width:100%;height:5px;transform:translate(0,0) scale(1,1)}md-progress-linear .md-container .md-bar{position:absolute;left:0;top:0;bottom:0;width:100%;height:5px}md-progress-linear .md-container .md-dashed:before{content:"";display:none;position:absolute;margin-top:0;height:5px;width:100%;background-color:transparent;background-size:10px 10px!important;background-position:0 -23px}md-progress-linear .md-container .md-bar1,md-progress-linear .md-container .md-bar2{transition:transform .2s linear}md-progress-linear .md-container.md-mode-query .md-bar1{display:none}md-progress-linear .md-container.md-mode-query .md-bar2{transition:all .2s linear;animation:query .8s infinite cubic-bezier(.39,.575,.565,1)}md-progress-linear .md-container.md-mode-determinate .md-bar1{display:none}md-progress-linear .md-container.md-mode-indeterminate .md-bar1{animation:md-progress-linear-indeterminate-scale-1 4s infinite,md-progress-linear-indeterminate-1 4s infinite}md-progress-linear .md-container.md-mode-indeterminate .md-bar2{animation:md-progress-linear-indeterminate-scale-2 4s infinite,md-progress-linear-indeterminate-2 4s infinite}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container{animation:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar1{animation-name:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar2{animation-name:none}md-progress-linear .md-container.md-mode-buffer{background-color:transparent!important;transition:all .2s linear}md-progress-linear .md-container.md-mode-buffer .md-dashed:before{display:block;animation:buffer 3s infinite linear}@keyframes query{0%{opacity:1;transform:translateX(35%) scale(.3,1)}100%{opacity:0;transform:translateX(-50%) scale(0,1)}}@keyframes buffer{0%{opacity:1;background-position:0 -23px}50%{opacity:0}100%{opacity:1;background-position:-200px -23px}}@keyframes md-progress-linear-indeterminate-scale-1{0%{transform:scaleX(.1);animation-timing-function:linear}36.6%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.334731432,.124819821,.785843996,1)}69.15%{transform:scaleX(.83);animation-timing-function:cubic-bezier(.225732004,0,.233648906,1.3709798)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-1{0%{left:-105.166666667%;animation-timing-function:linear}20%{left:-105.166666667%;animation-timing-function:cubic-bezier(.5,0,.701732,.495818703)}69.15%{left:21.5%;animation-timing-function:cubic-bezier(.302435,.38135197,.55,.956352125)}100%{left:95.4444444444%}}@keyframes md-progress-linear-indeterminate-scale-2{0%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.205028172,.057050836,.57660995,.453970841)}19.15%{transform:scaleX(.57);animation-timing-function:cubic-bezier(.152312994,.196431957,.648373778,1.00431535)}44.15%{transform:scaleX(.91);animation-timing-function:cubic-bezier(.25775882,-.003163357,.211761916,1.38178961)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-2{0%{left:-54.8888888889%;animation-timing-function:cubic-bezier(.15,0,.5150584,.409684966)}25%{left:-17.25%;animation-timing-function:cubic-bezier(.3103299,.284057684,.8,.733718979)}48.35%{left:29.5%;animation-timing-function:cubic-bezier(.4,.627034903,.6,.902025796)}100%{left:117.388888889%}}md-radio-button{box-sizing:border-box;display:block;margin-bottom:16px;white-space:nowrap;cursor:pointer;position:relative}md-radio-button[disabled]{cursor:default}md-radio-button[disabled] .md-container{cursor:default}md-radio-button .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;cursor:pointer;left:0;right:auto}[dir=rtl] md-radio-button .md-container{left:auto}[dir=rtl] md-radio-button .md-container{right:0}md-radio-button .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-radio-button .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-radio-button.md-align-top-left>div.md-container{top:12px}md-radio-button .md-off{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-style:solid;border-width:2px;border-radius:50%;transition:border-color ease .28s}md-radio-button .md-on{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-radius:50%;transition:transform ease .28s;transform:scale(0)}md-radio-button.md-checked .md-on{transform:scale(.5)}md-radio-button .md-label{box-sizing:border-box;position:relative;display:inline-block;margin-left:30px;margin-right:0;vertical-align:middle;white-space:normal;pointer-events:none;width:auto}[dir=rtl] md-radio-button .md-label{margin-left:0}[dir=rtl] md-radio-button .md-label{margin-right:30px}md-radio-group.layout-column md-radio-button,md-radio-group.layout-gt-lg-column md-radio-button,md-radio-group.layout-gt-md-column md-radio-button,md-radio-group.layout-gt-sm-column md-radio-button,md-radio-group.layout-gt-xs-column md-radio-button,md-radio-group.layout-lg-column md-radio-button,md-radio-group.layout-md-column md-radio-button,md-radio-group.layout-sm-column md-radio-button,md-radio-group.layout-xl-column md-radio-button,md-radio-group.layout-xs-column md-radio-button{margin-bottom:16px}md-radio-group.layout-gt-lg-row md-radio-button,md-radio-group.layout-gt-md-row md-radio-button,md-radio-group.layout-gt-sm-row md-radio-button,md-radio-group.layout-gt-xs-row md-radio-button,md-radio-group.layout-lg-row md-radio-button,md-radio-group.layout-md-row md-radio-button,md-radio-group.layout-row md-radio-button,md-radio-group.layout-sm-row md-radio-button,md-radio-group.layout-xl-row md-radio-button,md-radio-group.layout-xs-row md-radio-button{margin-top:0;margin-bottom:0;margin-left:0;margin-right:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-left:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-right:0}md-radio-group.layout-gt-lg-row md-radio-button:last-of-type,md-radio-group.layout-gt-md-row md-radio-button:last-of-type,md-radio-group.layout-gt-sm-row md-radio-button:last-of-type,md-radio-group.layout-gt-xs-row md-radio-button:last-of-type,md-radio-group.layout-lg-row md-radio-button:last-of-type,md-radio-group.layout-md-row md-radio-button:last-of-type,md-radio-group.layout-row md-radio-button:last-of-type,md-radio-group.layout-sm-row md-radio-button:last-of-type,md-radio-group.layout-xl-row md-radio-button:last-of-type,md-radio-group.layout-xs-row md-radio-button:last-of-type{margin-left:0;margin-right:0}md-radio-group:focus{outline:0}md-radio-group.md-focused .md-checked .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-radio-group[disabled] md-radio-button{cursor:default}md-radio-group[disabled] md-radio-button .md-container{cursor:default}.md-inline-form md-radio-group{margin:18px 0 19px}.md-inline-form md-radio-group md-radio-button{display:inline-block;height:30px;padding:2px;box-sizing:border-box;margin-top:0;margin-bottom:0}@media screen and (-ms-high-contrast:active){md-radio-button.md-default-theme .md-on{background-color:#fff}}md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transition:transform .4s cubic-bezier(.25,.8,.25,1);transform-origin:left top}[dir=rtl] md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transform-origin:right top}md-input-container.md-input-focused:not([md-no-float]) .md-select-placeholder span:first-child{transform:translateY(-22px) translateX(-2px) scale(.75)}.md-select-menu-container{position:fixed;left:0;top:0;z-index:90;opacity:0;display:none;transform:translateY(-1px)}.md-select-menu-container:not(.md-clickable){pointer-events:none}.md-select-menu-container md-progress-circular{display:table;margin:24px auto!important}.md-select-menu-container.md-active{display:block;opacity:1}.md-select-menu-container.md-active md-select-menu{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:150ms}.md-select-menu-container.md-active md-select-menu>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:150ms;transition-delay:.1s}.md-select-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-input-container>md-select{margin:0;order:2}md-input-container:not(.md-input-has-value) md-select.ng-required:not(.md-no-asterisk) .md-select-value span:first-child:after,md-input-container:not(.md-input-has-value) md-select[required]:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-input-container.md-input-invalid md-select .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select{display:flex;margin:20px 0 26px 0}md-select.ng-required.ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after,md-select[required].ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-select[disabled] .md-select-value{background-position:0 bottom;background-size:4px 1px;background-repeat:repeat-x;margin-bottom:-1px}md-select:focus{outline:0}md-select[disabled]:hover{cursor:default}md-select:not([disabled]):hover{cursor:pointer}md-select:not([disabled]).ng-invalid.ng-touched .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select:not([disabled]):focus .md-select-value{border-bottom-width:2px;border-bottom-style:solid;padding-bottom:0}md-select:not([disabled]):focus.ng-invalid.ng-touched .md-select-value{padding-bottom:0}md-input-container.md-input-has-value .md-select-value>span:not(.md-select-icon){transform:translate3d(0,1px,0)}.md-select-value{display:flex;align-items:center;padding:2px 2px 1px;border-bottom-width:1px;border-bottom-style:solid;background-color:transparent;position:relative;box-sizing:content-box;min-width:64px;min-height:26px;flex-grow:1}.md-select-value>span:not(.md-select-icon){max-width:100%;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.md-select-value>span:not(.md-select-icon) .md-text{display:inline}.md-select-value .md-select-icon{display:block;align-items:flex-end;text-align:end;width:24px;margin:0 4px;transform:translate3d(0,-2px,0);font-size:1.2rem}.md-select-value .md-select-icon:after{display:block;content:'\25BC';position:relative;top:2px;speak:none;font-size:13px;transform:scaleY(.5) scaleX(1)}.md-select-value.md-select-placeholder{display:flex;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:2px;z-index:1}md-select-menu{display:flex;flex-direction:column;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);max-height:256px;min-height:48px;overflow-y:hidden;transform-origin:left top;transform:scale(1)}md-select-menu.md-reverse{flex-direction:column-reverse}md-select-menu:not(.md-overflow) md-content{padding-top:8px;padding-bottom:8px}[dir=rtl] md-select-menu{transform-origin:right top}md-select-menu md-content{min-width:136px;min-height:48px;max-height:256px;overflow-y:auto}md-select-menu>*{opacity:0}md-option{cursor:pointer;position:relative;display:flex;align-items:center;width:auto;transition:background .15s linear;padding:0 16px 0 16px;height:48px}md-option[disabled]{cursor:default}md-option:focus{outline:0}md-option .md-text{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}md-optgroup{display:block}md-optgroup label{display:block;font-size:14px;text-transform:uppercase;padding:16px;font-weight:500}md-optgroup md-option{padding-left:32px;padding-right:32px}@media screen and (-ms-high-contrast:active){.md-select-backdrop{background-color:transparent}md-select-menu{border:1px solid #fff}}md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:40px;padding-right:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-right:40px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{right:0}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon{border-color:transparent}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled[disabled]{cursor:default}md-select-menu[multiple] md-option.md-checkbox-enabled.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:10.6666666667px;margin-right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-right:10.6666666667px}md-sidenav{box-sizing:border-box;position:absolute;flex-direction:column;z-index:60;width:320px;max-width:320px;bottom:0;overflow:auto;-webkit-overflow-scrolling:touch}md-sidenav ul{list-style:none}md-sidenav.md-closed{display:none}md-sidenav.md-closed-add,md-sidenav.md-closed-remove{display:flex;transition:.2s ease-in all}md-sidenav.md-closed-add.md-closed-add-active,md-sidenav.md-closed-remove.md-closed-remove-active{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-sidenav.md-locked-open-add,md-sidenav.md-locked-open-remove{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open,md-sidenav.md-locked-open-remove.md-closed,md-sidenav.md-locked-open.md-closed,md-sidenav.md-locked-open.md-closed.md-sidenav-left,md-sidenav.md-locked-open.md-closed.md-sidenav-right{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open-remove-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:0!important;min-width:0!important}md-sidenav.md-closed.md-locked-open-add{width:0!important;min-width:0!important;transform:translate3d(0,0,0)}md-sidenav.md-closed.md-locked-open-add-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:320px;min-width:320px;transform:translate3d(0,0,0)}.md-sidenav-backdrop.md-locked-open{display:none}.md-sidenav-left,md-sidenav{left:0;top:0;transform:translate3d(0,0,0)}.md-sidenav-left.md-closed,md-sidenav.md-closed{transform:translate3d(-100%,0,0)}.md-sidenav-right{left:100%;top:0;transform:translate(-100%,0)}.md-sidenav-right.md-closed{transform:translate(0,0)}@media (min-width:600px){md-sidenav{max-width:400px}}@media (max-width:456px){md-sidenav{width:calc(100% - 56px);min-width:calc(100% - 56px);max-width:calc(100% - 56px)}}@media screen and (-ms-high-contrast:active){.md-sidenav-left,md-sidenav{border-right:1px solid #fff}.md-sidenav-right{border-left:1px solid #fff}}@keyframes sliderFocusThumb{0%{transform:scale(.7)}30%{transform:scale(1)}100%{transform:scale(.7)}}@keyframes sliderDiscreteFocusThumb{0%{transform:scale(.7)}50%{transform:scale(.8)}100%{transform:scale(0)}}@keyframes sliderDiscreteFocusRing{0%{transform:scale(.7);opacity:0}50%{transform:scale(1);opacity:1}100%{transform:scale(0)}}md-slider{height:48px;min-width:128px;position:relative;margin-left:4px;margin-right:4px;padding:0;display:block;flex-direction:row}md-slider *,md-slider :after{box-sizing:border-box}md-slider .md-slider-wrapper{outline:0;width:100%;height:100%}md-slider .md-slider-content{position:relative}md-slider .md-track-container{width:100%;position:absolute;top:23px;height:2px}md-slider .md-track{position:absolute;left:0;right:0;height:100%}md-slider .md-track-fill{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:width,height}md-slider .md-track-ticks{position:absolute;left:0;right:0;height:100%}md-slider .md-track-ticks canvas{width:100%;height:100%}md-slider .md-thumb-container{position:absolute;left:0;top:50%;transform:translate3d(-50%,-50%,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:left,right,bottom}[dir=rtl] md-slider .md-thumb-container{left:auto;right:0}md-slider .md-thumb{z-index:1;position:absolute;left:-10px;top:14px;width:20px;height:20px;border-radius:20px;transform:scale(.7);transition:all .4s cubic-bezier(.25,.8,.25,1)}[dir=rtl] md-slider .md-thumb{left:auto;right:-10px}md-slider .md-thumb:after{content:'';position:absolute;width:20px;height:20px;border-radius:20px;border-width:3px;border-style:solid;transition:inherit}md-slider .md-sign{display:flex;align-items:center;justify-content:center;position:absolute;left:-14px;top:-17px;width:28px;height:28px;border-radius:28px;transform:scale(.4) translate3d(0,67.5px,0);transition:all .3s cubic-bezier(.35,0,.25,1)}md-slider .md-sign:after{position:absolute;content:'';left:0;border-radius:16px;top:19px;border-left:14px solid transparent;border-right:14px solid transparent;border-top-width:16px;border-top-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-sign:after{left:auto;right:0}md-slider .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider .md-focus-ring{position:absolute;left:-17px;top:7px;width:34px;height:34px;border-radius:34px;transform:scale(.7);opacity:0;transition:all .35s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-focus-ring{left:auto;right:-17px}md-slider .md-disabled-thumb{position:absolute;left:-14px;top:10px;width:28px;height:28px;border-radius:28px;transform:scale(.5);border-width:4px;border-style:solid;display:none}[dir=rtl] md-slider .md-disabled-thumb{left:auto;right:-14px}md-slider.md-min .md-sign{opacity:0}md-slider:focus{outline:0}md-slider.md-dragging .md-thumb-container,md-slider.md-dragging .md-track-fill{transition:none}md-slider:not([md-discrete]) .md-sign,md-slider:not([md-discrete]) .md-track-ticks{display:none}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper .md-thumb:hover{transform:scale(.8)}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(1);opacity:1}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderFocusThumb .7s cubic-bezier(.35,0,.25,1)}md-slider:not([md-discrete]):not([disabled]).md-active .md-slider-wrapper .md-thumb{transform:scale(1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(0);animation:sliderDiscreteFocusRing .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderDiscreteFocusThumb .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb,md-slider[md-discrete]:not([disabled]).md-active .md-thumb{transform:scale(0)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign,md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign:after,md-slider[md-discrete]:not([disabled]).md-active .md-sign,md-slider[md-discrete]:not([disabled]).md-active .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-discrete][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-discrete][disabled][readonly] .md-sign,md-slider[md-discrete][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[disabled] .md-track-fill{display:none}md-slider[disabled] .md-track-ticks{opacity:0}md-slider[disabled]:not([readonly]) .md-sign{opacity:0}md-slider[disabled] .md-thumb{transform:scale(.5)}md-slider[disabled] .md-disabled-thumb{display:block}md-slider[md-vertical]{flex-direction:column;min-height:128px;min-width:0}md-slider[md-vertical] .md-slider-wrapper{flex:1;padding-top:12px;padding-bottom:12px;width:48px;align-self:center;display:flex;justify-content:center}md-slider[md-vertical] .md-track-container{height:100%;width:2px;top:0;left:calc(50% - (2px / 2))}md-slider[md-vertical] .md-thumb-container{top:auto;margin-bottom:23px;left:calc(50% - 1px);bottom:0}md-slider[md-vertical] .md-thumb-container .md-thumb:after{left:1px}md-slider[md-vertical] .md-thumb-container .md-focus-ring{left:-16px}md-slider[md-vertical] .md-track-fill{bottom:0}md-slider[md-vertical][md-discrete] .md-sign{left:-40px;top:9.5px;transform:scale(.4) translate3d(67.5px,0,0)}md-slider[md-vertical][md-discrete] .md-sign:after{top:9.5px;left:19px;border-top:14px solid transparent;border-right:0;border-bottom:14px solid transparent;border-left-width:16px;border-left-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s ease-in-out}md-slider[md-vertical][md-discrete] .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider[md-vertical][md-discrete] .md-focused .md-sign:after,md-slider[md-vertical][md-discrete].md-active .md-sign:after,md-slider[md-vertical][md-discrete][disabled][readonly] .md-sign:after{top:0}md-slider[md-vertical][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-vertical][disabled][readonly] .md-sign,md-slider[md-vertical][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:auto;right:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{right:auto}md-slider[md-invert][md-vertical] .md-track-fill{bottom:auto;top:0}md-slider-container{display:flex;align-items:center;flex-direction:row}md-slider-container>:first-child:not(md-slider),md-slider-container>:last-child:not(md-slider){min-width:25px;max-width:42px;height:25px;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:color,max-width}md-slider-container>:first-child:not(md-slider){margin-right:16px}[dir=rtl] md-slider-container>:first-child:not(md-slider){margin-right:auto;margin-left:16px}md-slider-container>:last-child:not(md-slider){margin-left:16px}[dir=rtl] md-slider-container>:last-child:not(md-slider){margin-left:auto;margin-right:16px}md-slider-container[md-vertical]{flex-direction:column}md-slider-container[md-vertical]>:first-child:not(md-slider),md-slider-container[md-vertical]>:last-child:not(md-slider){margin-right:0;margin-left:0;text-align:center}md-slider-container md-input-container input[type=number]{text-align:center;padding-left:15px;height:50px;margin-top:-25px}[dir=rtl] md-slider-container md-input-container input[type=number]{padding-left:0;padding-right:15px}@media screen and (-ms-high-contrast:active){md-slider.md-default-theme .md-track{border-bottom:1px solid #fff}}.md-sticky-clone{z-index:2;top:0;left:0;right:0;position:absolute!important;transform:translate3d(-9999px,-9999px,0)}.md-sticky-clone[sticky-state=active]{transform:translate3d(0,0,0)}.md-sticky-clone[sticky-state=active]:not(.md-sticky-no-effect) .md-subheader-inner{animation:subheaderStickyHoverIn .3s ease-out both}@keyframes subheaderStickyHoverIn{0%{box-shadow:0 0 0 0 transparent}100%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}}@keyframes subheaderStickyHoverOut{0%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}100%{box-shadow:0 0 0 0 transparent}}.md-subheader-wrapper:not(.md-sticky-no-effect){transition:.2s ease-out margin}.md-subheader-wrapper:not(.md-sticky-no-effect) .md-subheader{margin:0}.md-subheader-wrapper:not(.md-sticky-no-effect).md-sticky-clone{z-index:2}.md-subheader-wrapper:not(.md-sticky-no-effect)[sticky-state=active]{margin-top:-2px}.md-subheader-wrapper:not(.md-sticky-no-effect):not(.md-sticky-clone)[sticky-prev-state=active] .md-subheader-inner:after{animation:subheaderStickyHoverOut .3s ease-out both}.md-subheader{display:block;font-size:14px;font-weight:500;line-height:1em;margin:0;position:relative}.md-subheader .md-subheader-inner{display:block;padding:16px}.md-subheader .md-subheader-content{display:block;z-index:1;position:relative}.md-inline-form md-switch{margin-top:18px;margin-bottom:19px}md-switch{margin:16px 0;white-space:nowrap;cursor:pointer;outline:0;user-select:none;height:30px;line-height:28px;align-items:center;display:flex;margin-left:inherit;margin-right:16px}[dir=rtl] md-switch{margin-left:16px}[dir=rtl] md-switch{margin-right:inherit}md-switch:last-of-type{margin-left:inherit;margin-right:0}[dir=rtl] md-switch:last-of-type{margin-left:0}[dir=rtl] md-switch:last-of-type{margin-right:inherit}md-switch[disabled]{cursor:default}md-switch[disabled] .md-container{cursor:default}md-switch .md-container{cursor:grab;width:36px;height:24px;position:relative;user-select:none;margin-right:8px;float:left}[dir=rtl] md-switch .md-container{margin-right:auto;margin-left:8px}md-switch:not([disabled]) .md-dragging,md-switch:not([disabled]).md-dragging .md-container{cursor:grabbing}md-switch.md-focused:not([disabled]) .md-thumb:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-switch.md-focused:not([disabled]):not(.md-checked) .md-thumb:before{background-color:rgba(0,0,0,.12)}md-switch .md-label{border-color:transparent;border-width:0;float:left}md-switch .md-bar{left:1px;width:34px;top:5px;height:14px;border-radius:8px;position:absolute}md-switch .md-thumb-container{top:2px;left:0;width:16px;position:absolute;transform:translate3d(0,0,0);z-index:1}md-switch.md-checked .md-thumb-container{transform:translate3d(100%,0,0)}md-switch .md-thumb{position:absolute;margin:0;left:0;top:0;outline:0;height:20px;width:20px;border-radius:50%;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-switch .md-thumb:before{background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-switch .md-thumb .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-20px;top:-20px;right:-20px;bottom:-20px}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb,md-switch:not(.md-dragging) .md-thumb-container{transition:all 80ms linear;transition-property:transform,background-color}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb{transition-delay:50ms}@media screen and (-ms-high-contrast:active){md-switch.md-default-theme .md-bar{background-color:#666}md-switch.md-default-theme.md-checked .md-bar{background-color:#9e9e9e}md-switch.md-default-theme .md-thumb{background-color:#fff}}@keyframes md-tab-content-hide{0%{opacity:1}50%{opacity:1}100%{opacity:0}}md-tab-data{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1;opacity:0}md-tabs{display:block;margin:0;border-radius:2px;overflow:hidden;position:relative;flex-shrink:0}md-tabs:not(.md-no-tab-content):not(.md-dynamic-height){min-height:248px}md-tabs[md-align-tabs=bottom]{padding-bottom:48px}md-tabs[md-align-tabs=bottom] md-tabs-wrapper{position:absolute;bottom:0;left:0;right:0;height:48px;z-index:2}md-tabs[md-align-tabs=bottom] md-tabs-content-wrapper{top:0;bottom:48px}md-tabs.md-dynamic-height md-tabs-content-wrapper{min-height:0;position:relative;top:auto;left:auto;right:auto;bottom:auto;overflow:visible}md-tabs.md-dynamic-height md-tab-content.md-active{position:relative}md-tabs[md-border-bottom] md-tabs-wrapper{border-width:0 0 1px;border-style:solid}md-tabs[md-border-bottom]:not(.md-dynamic-height) md-tabs-content-wrapper{top:49px}md-tabs-wrapper{display:block;position:relative;transform:translate3d(0,0,0)}md-tabs-wrapper md-next-button,md-tabs-wrapper md-prev-button{height:100%;width:32px;position:absolute;top:50%;transform:translateY(-50%);line-height:1em;z-index:2;cursor:pointer;font-size:16px;background:transparent no-repeat center center;transition:all .5s cubic-bezier(.35,0,.25,1)}md-tabs-wrapper md-next-button:focus,md-tabs-wrapper md-prev-button:focus{outline:0}md-tabs-wrapper md-next-button.md-disabled,md-tabs-wrapper md-prev-button.md-disabled{opacity:.25;cursor:default}md-tabs-wrapper md-next-button.ng-leave,md-tabs-wrapper md-prev-button.ng-leave{transition:none}md-tabs-wrapper md-next-button md-icon,md-tabs-wrapper md-prev-button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}md-tabs-wrapper md-prev-button{left:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMjA4IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyIAkJIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4gPHJlY3QgZmlsbD0ibm9uZSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ii8+IDwvZz4gPC9nPiA8ZyBpZD0iR3JpZCIgZGlzcGxheT0ibm9uZSI+IDxnIGRpc3BsYXk9ImlubGluZSI+IDwvZz4gPC9nPiA8L3N2Zz4NCg==)}[dir=rtl] md-tabs-wrapper md-prev-button{left:auto;right:0}md-tabs-wrapper md-next-button{right:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMzM2IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTAsNiA4LjYsNy40IDEzLjIsMTIgOC42LDE2LjYgMTAsMTggMTYsMTIgCQkiIHN0eWxlPSJmaWxsOndoaXRlOyIvPiA8cmVjdCBmaWxsPSJub25lIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiLz4gPC9nPiA8L2c+IDxnIGlkPSJHcmlkIiBkaXNwbGF5PSJub25lIj4gPGcgZGlzcGxheT0iaW5saW5lIj4gPC9nPiA8L2c+IDwvc3ZnPg0K)}[dir=rtl] md-tabs-wrapper md-next-button{right:auto;left:0}md-tabs-wrapper md-next-button md-icon{transform:translate3d(-50%,-50%,0) rotate(180deg)}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper{width:100%;display:flex;flex-direction:row}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper md-tab-item{flex-grow:1}md-tabs-canvas{position:relative;overflow:hidden;display:block;height:48px}md-tabs-canvas:after{content:'';display:table;clear:both}md-tabs-canvas .md-dummy-wrapper{position:absolute;top:0;left:0}[dir=rtl] md-tabs-canvas .md-dummy-wrapper{left:auto;right:0}md-tabs-canvas.md-paginated{margin:0 32px}md-tabs-canvas.md-center-tabs{display:flex;flex-direction:column;text-align:center}md-tabs-canvas.md-center-tabs .md-tab{float:none;display:inline-block}md-pagination-wrapper{height:48px;display:block;transition:transform .5s cubic-bezier(.35,0,.25,1);position:absolute;width:999999px;left:0;transform:translate3d(0,0,0)}md-pagination-wrapper:after{content:'';display:table;clear:both}[dir=rtl] md-pagination-wrapper{left:auto;right:0}md-pagination-wrapper.md-center-tabs{position:relative;width:auto;margin:0 auto}md-tabs-content-wrapper{display:block;position:absolute;top:48px;left:0;right:0;bottom:0;overflow:hidden}md-tab-content{display:block;position:absolute;top:0;left:0;right:0;bottom:0;transition:transform .5s cubic-bezier(.35,0,.25,1);overflow:auto;transform:translate3d(0,0,0)}md-tab-content.md-no-scroll{bottom:auto;overflow:hidden}md-tab-content.md-no-transition,md-tab-content.ng-leave{transition:none}md-tab-content.md-left:not(.md-active){transform:translateX(-100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-left:not(.md-active){transform:translateX(100%)}md-tab-content.md-left:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content.md-right:not(.md-active){transform:translateX(100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-right:not(.md-active){transform:translateX(-100%)}md-tab-content.md-right:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content>div.ng-leave{animation:1s md-tab-content-hide}md-ink-bar{position:absolute;left:auto;right:auto;bottom:0;height:2px}md-ink-bar.md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-ink-bar.md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-tab{position:absolute;z-index:-1;left:-9999px}.md-tab{font-size:14px;text-align:center;line-height:24px;padding:12px 24px;transition:background-color .35s cubic-bezier(.35,0,.25,1);cursor:pointer;white-space:nowrap;position:relative;text-transform:uppercase;float:left;font-weight:500;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-tab{float:right}.md-tab.md-focused{box-shadow:none;outline:0}.md-tab.md-active{cursor:default}.md-tab.md-disabled{pointer-events:none;touch-action:pan-y;user-select:none;-webkit-user-drag:none;opacity:.5;cursor:default}.md-tab.ng-leave{transition:none}md-toolbar+md-tabs{border-top-left-radius:0;border-top-right-radius:0}.md-toast-text{padding:0 6px}md-toast{position:absolute;z-index:105;box-sizing:border-box;cursor:default;overflow:hidden;padding:8px;opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast .md-toast-content{display:flex;direction:row;align-items:center;max-height:168px;max-width:100%;min-height:48px;padding:0 18px;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:2px;font-size:14px;overflow:hidden;transform:translate3d(0,0,0) rotateZ(0);transition:all .4s cubic-bezier(.25,.8,.25,1);justify-content:flex-start}md-toast .md-toast-content::before{content:'';min-height:48px;visibility:hidden;display:inline-block}[dir=rtl] md-toast .md-toast-content{justify-content:flex-end}md-toast .md-toast-content span{flex:1 1 0%;box-sizing:border-box;min-width:0}md-toast.md-capsule{border-radius:24px}md-toast.md-capsule .md-toast-content{border-radius:24px}md-toast.ng-leave-active .md-toast-content{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-toast.md-swipedown .md-toast-content,md-toast.md-swipeleft .md-toast-content,md-toast.md-swiperight .md-toast-content,md-toast.md-swipeup .md-toast-content{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast.ng-enter{opacity:0}md-toast.ng-enter .md-toast-content{transform:translate3d(0,100%,0)}md-toast.ng-enter.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast.ng-enter.ng-enter-active{opacity:1}md-toast.ng-enter.ng-enter-active .md-toast-content{transform:translate3d(0,0,0)}md-toast.ng-leave.ng-leave-active .md-toast-content{opacity:0;transform:translate3d(0,100%,0)}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}md-toast.ng-leave.ng-leave-active.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast .md-action{line-height:19px;margin-left:24px;margin-right:0;cursor:pointer;text-transform:uppercase;float:right}md-toast .md-button{min-width:0;margin-right:0;margin-left:12px}[dir=rtl] md-toast .md-button{margin-right:12px}[dir=rtl] md-toast .md-button{margin-left:0}@media (max-width:959px){md-toast{left:0;right:0;width:100%;max-width:100%;min-width:0;border-radius:0;bottom:0;padding:0}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}}@media (min-width:960px){md-toast{min-width:304px}md-toast.md-bottom{bottom:0}md-toast.md-left{left:0}md-toast.md-right{right:0}md-toast.md-top{top:0}md-toast._md-start{left:0}[dir=rtl] md-toast._md-start{left:auto;right:0}md-toast._md-end{right:0}[dir=rtl] md-toast._md-end{right:auto;left:0}md-toast.ng-leave.ng-leave-active.md-swipeleft .md-toast-content{transform:translate3d(-50%,0,0)}md-toast.ng-leave.ng-leave-active.md-swiperight .md-toast-content{transform:translate3d(50%,0,0)}}@media (min-width:1920px){md-toast .md-toast-content{max-width:568px}}@media screen and (-ms-high-contrast:active){md-toast{border:1px solid #fff}}.md-toast-animating{overflow:hidden!important}md-toolbar{box-sizing:border-box;display:flex;flex-direction:column;position:relative;z-index:2;font-size:20px;min-height:64px;width:100%}md-toolbar._md-toolbar-transitions{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}md-toolbar.md-whiteframe-z1-add,md-toolbar.md-whiteframe-z1-remove{transition:box-shadow .5s linear}md-toolbar md-toolbar-filler{width:72px}md-toolbar *,md-toolbar :after,md-toolbar :before{box-sizing:border-box}md-toolbar.ng-animate{transition:none}md-toolbar.md-tall{height:128px;min-height:128px;max-height:128px}md-toolbar.md-medium-tall{height:88px;min-height:88px;max-height:88px}md-toolbar.md-medium-tall .md-toolbar-tools{height:48px;min-height:48px;max-height:48px}md-toolbar>.md-indent{margin-left:64px}[dir=rtl] md-toolbar>.md-indent{margin-left:auto;margin-right:64px}md-toolbar~md-content>md-list{padding:0}md-toolbar~md-content>md-list md-list-item:last-child md-divider{display:none}.md-toolbar-tools{font-size:20px;letter-spacing:.005em;box-sizing:border-box;font-weight:400;display:flex;align-items:center;flex-direction:row;width:100%;height:64px;max-height:64px;padding:0 16px;margin:0}.md-toolbar-tools h1,.md-toolbar-tools h2,.md-toolbar-tools h3{font-size:inherit;font-weight:inherit;margin:inherit}.md-toolbar-tools a{color:inherit;text-decoration:none}.md-toolbar-tools .fill-height{display:flex;align-items:center}.md-toolbar-tools .md-button{margin-top:0;margin-bottom:0}.md-toolbar-tools .md-button,.md-toolbar-tools .md-button.md-icon-button md-icon{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}.md-toolbar-tools .md-button.md-icon-button md-icon.ng-animate,.md-toolbar-tools .md-button.ng-animate{transition:none}.md-toolbar-tools>.md-button:first-child{margin-left:-8px}[dir=rtl] .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-8px}.md-toolbar-tools>.md-button:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>md-menu:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child>.md-button{margin-right:0}[dir=rtl] .md-toolbar-tools>md-menu:last-child>.md-button{margin-right:auto;margin-left:0}@media screen and (-ms-high-contrast:active){.md-toolbar-tools{border-bottom:1px solid #fff}}@media (min-width:0) and (max-width:959px) and (orientation:portrait){md-toolbar{min-height:56px}.md-toolbar-tools{height:56px;max-height:56px}}@media (min-width:0) and (max-width:959px) and (orientation:landscape){md-toolbar{min-height:48px}.md-toolbar-tools{height:48px;max-height:48px}}md-tooltip{position:absolute;z-index:100;overflow:hidden;pointer-events:none;border-radius:4px;font-weight:500;font-size:14px}@media (min-width:960px){md-tooltip{font-size:10px}}md-tooltip .md-content{position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transform-origin:center top;transform:scale(0);opacity:0;height:32px;line-height:32px;padding-left:16px;padding-right:16px}@media (min-width:960px){md-tooltip .md-content{height:22px;line-height:22px;padding-left:8px;padding-right:8px}}md-tooltip .md-content.md-show-add{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s;transform:scale(0);opacity:0}md-tooltip .md-content.md-show,md-tooltip .md-content.md-show-add-active{transform:scale(1);opacity:.9;transform-origin:center top}md-tooltip .md-content.md-show-remove{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}md-tooltip .md-content.md-show-remove.md-show-remove-active{transform:scale(0);opacity:0}md-tooltip.md-hide{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-tooltip.md-show{transition:all .4s cubic-bezier(.25,.8,.25,1);pointer-events:auto}.md-virtual-repeat-container{box-sizing:border-box;display:block;margin:0;overflow:hidden;padding:0;position:relative}.md-virtual-repeat-container .md-virtual-repeat-scroller{bottom:0;box-sizing:border-box;left:0;margin:0;overflow-x:hidden;padding:0;position:absolute;right:0;top:0;-webkit-overflow-scrolling:touch}.md-virtual-repeat-container .md-virtual-repeat-sizer{box-sizing:border-box;height:1px;display:block;margin:0;padding:0;width:1px}.md-virtual-repeat-container .md-virtual-repeat-offsetter{box-sizing:border-box;left:0;margin:0;padding:0;position:absolute;right:0;top:0}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-scroller{overflow-x:auto;overflow-y:hidden}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{bottom:16px;right:auto;white-space:nowrap}[dir=rtl] .md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{right:auto;left:auto}.md-whiteframe-1dp,.md-whiteframe-z1{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.md-whiteframe-2dp{box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}.md-whiteframe-3dp{box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.md-whiteframe-4dp,.md-whiteframe-z2{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.md-whiteframe-5dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 5px 8px 0 rgba(0,0,0,.14),0 1px 14px 0 rgba(0,0,0,.12)}.md-whiteframe-6dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}.md-whiteframe-7dp,.md-whiteframe-z3{box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.md-whiteframe-8dp{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.md-whiteframe-9dp{box-shadow:0 5px 6px -3px rgba(0,0,0,.2),0 9px 12px 1px rgba(0,0,0,.14),0 3px 16px 2px rgba(0,0,0,.12)}.md-whiteframe-10dp,.md-whiteframe-z4{box-shadow:0 6px 6px -3px rgba(0,0,0,.2),0 10px 14px 1px rgba(0,0,0,.14),0 4px 18px 3px rgba(0,0,0,.12)}.md-whiteframe-11dp{box-shadow:0 6px 7px -4px rgba(0,0,0,.2),0 11px 15px 1px rgba(0,0,0,.14),0 4px 20px 3px rgba(0,0,0,.12)}.md-whiteframe-12dp{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)}.md-whiteframe-13dp,.md-whiteframe-z5{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12)}.md-whiteframe-14dp{box-shadow:0 7px 9px -4px rgba(0,0,0,.2),0 14px 21px 2px rgba(0,0,0,.14),0 5px 26px 4px rgba(0,0,0,.12)}.md-whiteframe-15dp{box-shadow:0 8px 9px -5px rgba(0,0,0,.2),0 15px 22px 2px rgba(0,0,0,.14),0 6px 28px 5px rgba(0,0,0,.12)}.md-whiteframe-16dp{box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.md-whiteframe-17dp{box-shadow:0 8px 11px -5px rgba(0,0,0,.2),0 17px 26px 2px rgba(0,0,0,.14),0 6px 32px 5px rgba(0,0,0,.12)}.md-whiteframe-18dp{box-shadow:0 9px 11px -5px rgba(0,0,0,.2),0 18px 28px 2px rgba(0,0,0,.14),0 7px 34px 6px rgba(0,0,0,.12)}.md-whiteframe-19dp{box-shadow:0 9px 12px -6px rgba(0,0,0,.2),0 19px 29px 2px rgba(0,0,0,.14),0 7px 36px 6px rgba(0,0,0,.12)}.md-whiteframe-20dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 20px 31px 3px rgba(0,0,0,.14),0 8px 38px 7px rgba(0,0,0,.12)}.md-whiteframe-21dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 21px 33px 3px rgba(0,0,0,.14),0 8px 40px 7px rgba(0,0,0,.12)}.md-whiteframe-22dp{box-shadow:0 10px 14px -6px rgba(0,0,0,.2),0 22px 35px 3px rgba(0,0,0,.14),0 8px 42px 7px rgba(0,0,0,.12)}.md-whiteframe-23dp{box-shadow:0 11px 14px -7px rgba(0,0,0,.2),0 23px 36px 3px rgba(0,0,0,.14),0 9px 44px 8px rgba(0,0,0,.12)}.md-whiteframe-24dp{box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)}@media screen and (-ms-high-contrast:active){md-whiteframe{border:1px solid #fff}}@media print{[md-whiteframe],md-whiteframe{background-color:#fff}}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}@-moz-document url-prefix(){.layout-fill{margin:0;width:100%;min-height:100%;height:100%}}.flex-order{order:0}.flex-order--20{order:-20}.flex-order--19{order:-19}.flex-order--18{order:-18}.flex-order--17{order:-17}.flex-order--16{order:-16}.flex-order--15{order:-15}.flex-order--14{order:-14}.flex-order--13{order:-13}.flex-order--12{order:-12}.flex-order--11{order:-11}.flex-order--10{order:-10}.flex-order--9{order:-9}.flex-order--8{order:-8}.flex-order--7{order:-7}.flex-order--6{order:-6}.flex-order--5{order:-5}.flex-order--4{order:-4}.flex-order--3{order:-3}.flex-order--2{order:-2}.flex-order--1{order:-1}.flex-order-0{order:0}.flex-order-1{order:1}.flex-order-2{order:2}.flex-order-3{order:3}.flex-order-4{order:4}.flex-order-5{order:5}.flex-order-6{order:6}.flex-order-7{order:7}.flex-order-8{order:8}.flex-order-9{order:9}.flex-order-10{order:10}.flex-order-11{order:11}.flex-order-12{order:12}.flex-order-13{order:13}.flex-order-14{order:14}.flex-order-15{order:15}.flex-order-16{order:16}.flex-order-17{order:17}.flex-order-18{order:18}.flex-order-19{order:19}.flex-order-20{order:20}.flex-offset-0,.offset-0{margin-left:0}[dir=rtl] .flex-offset-0,[dir=rtl] .offset-0{margin-left:auto;margin-right:0}.flex-offset-5,.offset-5{margin-left:5%}[dir=rtl] .flex-offset-5,[dir=rtl] .offset-5{margin-left:auto;margin-right:5%}.flex-offset-10,.offset-10{margin-left:10%}[dir=rtl] .flex-offset-10,[dir=rtl] .offset-10{margin-left:auto;margin-right:10%}.flex-offset-15,.offset-15{margin-left:15%}[dir=rtl] .flex-offset-15,[dir=rtl] .offset-15{margin-left:auto;margin-right:15%}.flex-offset-20,.offset-20{margin-left:20%}[dir=rtl] .flex-offset-20,[dir=rtl] .offset-20{margin-left:auto;margin-right:20%}.flex-offset-25,.offset-25{margin-left:25%}[dir=rtl] .flex-offset-25,[dir=rtl] .offset-25{margin-left:auto;margin-right:25%}.flex-offset-30,.offset-30{margin-left:30%}[dir=rtl] .flex-offset-30,[dir=rtl] .offset-30{margin-left:auto;margin-right:30%}.flex-offset-35,.offset-35{margin-left:35%}[dir=rtl] .flex-offset-35,[dir=rtl] .offset-35{margin-left:auto;margin-right:35%}.flex-offset-40,.offset-40{margin-left:40%}[dir=rtl] .flex-offset-40,[dir=rtl] .offset-40{margin-left:auto;margin-right:40%}.flex-offset-45,.offset-45{margin-left:45%}[dir=rtl] .flex-offset-45,[dir=rtl] .offset-45{margin-left:auto;margin-right:45%}.flex-offset-50,.offset-50{margin-left:50%}[dir=rtl] .flex-offset-50,[dir=rtl] .offset-50{margin-left:auto;margin-right:50%}.flex-offset-55,.offset-55{margin-left:55%}[dir=rtl] .flex-offset-55,[dir=rtl] .offset-55{margin-left:auto;margin-right:55%}.flex-offset-60,.offset-60{margin-left:60%}[dir=rtl] .flex-offset-60,[dir=rtl] .offset-60{margin-left:auto;margin-right:60%}.flex-offset-65,.offset-65{margin-left:65%}[dir=rtl] .flex-offset-65,[dir=rtl] .offset-65{margin-left:auto;margin-right:65%}.flex-offset-70,.offset-70{margin-left:70%}[dir=rtl] .flex-offset-70,[dir=rtl] .offset-70{margin-left:auto;margin-right:70%}.flex-offset-75,.offset-75{margin-left:75%}[dir=rtl] .flex-offset-75,[dir=rtl] .offset-75{margin-left:auto;margin-right:75%}.flex-offset-80,.offset-80{margin-left:80%}[dir=rtl] .flex-offset-80,[dir=rtl] .offset-80{margin-left:auto;margin-right:80%}.flex-offset-85,.offset-85{margin-left:85%}[dir=rtl] .flex-offset-85,[dir=rtl] .offset-85{margin-left:auto;margin-right:85%}.flex-offset-90,.offset-90{margin-left:90%}[dir=rtl] .flex-offset-90,[dir=rtl] .offset-90{margin-left:auto;margin-right:90%}.flex-offset-95,.offset-95{margin-left:95%}[dir=rtl] .flex-offset-95,[dir=rtl] .offset-95{margin-left:auto;margin-right:95%}.flex-offset-33,.offset-33{margin-left:calc(100% / 3)}.flex-offset-66,.offset-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-66,[dir=rtl] .offset-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align,.layout-align-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-start,.layout-align-start-center,.layout-align-start-end,.layout-align-start-start,.layout-align-start-stretch{justify-content:flex-start}.layout-align-center,.layout-align-center-center,.layout-align-center-end,.layout-align-center-start,.layout-align-center-stretch{justify-content:center}.layout-align-end,.layout-align-end-center,.layout-align-end-end,.layout-align-end-start,.layout-align-end-stretch{justify-content:flex-end}.layout-align-space-around,.layout-align-space-around-center,.layout-align-space-around-end,.layout-align-space-around-start,.layout-align-space-around-stretch{justify-content:space-around}.layout-align-space-between,.layout-align-space-between-center,.layout-align-space-between-end,.layout-align-space-between-start,.layout-align-space-between-stretch{justify-content:space-between}.layout-align-center-start,.layout-align-end-start,.layout-align-space-around-start,.layout-align-space-between-start,.layout-align-start-start{align-items:flex-start;align-content:flex-start}.layout-align-center-center,.layout-align-end-center,.layout-align-space-around-center,.layout-align-space-between-center,.layout-align-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-center-center>*,.layout-align-end-center>*,.layout-align-space-around-center>*,.layout-align-space-between-center>*,.layout-align-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-center-end,.layout-align-end-end,.layout-align-space-around-end,.layout-align-space-between-end,.layout-align-start-end{align-items:flex-end;align-content:flex-end}.layout-align-center-stretch,.layout-align-end-stretch,.layout-align-space-around-stretch,.layout-align-space-between-stretch,.layout-align-start-stretch{align-items:stretch;align-content:stretch}.flex{flex:1;box-sizing:border-box}.flex-grow{flex:1 1 100%;box-sizing:border-box}.flex-initial{flex:0 1 auto;box-sizing:border-box}.flex-auto{flex:1 1 auto;box-sizing:border-box}.flex-none{flex:0 0 auto;box-sizing:border-box}.flex-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-row>.flex{min-width:0}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-column>.flex{min-height:0}.layout,.layout-column,.layout-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-column{flex-direction:column}.layout-row{flex-direction:row}.layout-padding-sm>*,.layout-padding>.flex-sm{padding:4px}.layout-padding,.layout-padding-gt-sm,.layout-padding-gt-sm>*,.layout-padding-md,.layout-padding-md>*,.layout-padding>*,.layout-padding>.flex,.layout-padding>.flex-gt-sm,.layout-padding>.flex-md{padding:8px}.layout-padding-gt-lg>*,.layout-padding-gt-md>*,.layout-padding-lg>*,.layout-padding>.flex-gt-lg,.layout-padding>.flex-gt-md,.layout-padding>.flex-lg{padding:16px}.layout-margin-sm>*,.layout-margin>.flex-sm{margin:4px}.layout-margin,.layout-margin-gt-sm,.layout-margin-gt-sm>*,.layout-margin-md,.layout-margin-md>*,.layout-margin>*,.layout-margin>.flex,.layout-margin>.flex-gt-sm,.layout-margin>.flex-md{margin:8px}.layout-margin-gt-lg>*,.layout-margin-gt-md>*,.layout-margin-lg>*,.layout-margin>.flex-gt-lg,.layout-margin>.flex-gt-md,.layout-margin>.flex-lg{margin:16px}.layout-wrap{flex-wrap:wrap}.layout-nowrap{flex-wrap:nowrap}.layout-fill{margin:0;width:100%;min-height:100%;height:100%}@media (max-width:599px){.hide-xs:not(.show-xs):not(.show),.hide:not(.show-xs):not(.show){display:none}.flex-order-xs--20{order:-20}.flex-order-xs--19{order:-19}.flex-order-xs--18{order:-18}.flex-order-xs--17{order:-17}.flex-order-xs--16{order:-16}.flex-order-xs--15{order:-15}.flex-order-xs--14{order:-14}.flex-order-xs--13{order:-13}.flex-order-xs--12{order:-12}.flex-order-xs--11{order:-11}.flex-order-xs--10{order:-10}.flex-order-xs--9{order:-9}.flex-order-xs--8{order:-8}.flex-order-xs--7{order:-7}.flex-order-xs--6{order:-6}.flex-order-xs--5{order:-5}.flex-order-xs--4{order:-4}.flex-order-xs--3{order:-3}.flex-order-xs--2{order:-2}.flex-order-xs--1{order:-1}.flex-order-xs-0{order:0}.flex-order-xs-1{order:1}.flex-order-xs-2{order:2}.flex-order-xs-3{order:3}.flex-order-xs-4{order:4}.flex-order-xs-5{order:5}.flex-order-xs-6{order:6}.flex-order-xs-7{order:7}.flex-order-xs-8{order:8}.flex-order-xs-9{order:9}.flex-order-xs-10{order:10}.flex-order-xs-11{order:11}.flex-order-xs-12{order:12}.flex-order-xs-13{order:13}.flex-order-xs-14{order:14}.flex-order-xs-15{order:15}.flex-order-xs-16{order:16}.flex-order-xs-17{order:17}.flex-order-xs-18{order:18}.flex-order-xs-19{order:19}.flex-order-xs-20{order:20}.flex-offset-xs-0,.offset-xs-0{margin-left:0}[dir=rtl] .flex-offset-xs-0,[dir=rtl] .offset-xs-0{margin-left:auto;margin-right:0}.flex-offset-xs-5,.offset-xs-5{margin-left:5%}[dir=rtl] .flex-offset-xs-5,[dir=rtl] .offset-xs-5{margin-left:auto;margin-right:5%}.flex-offset-xs-10,.offset-xs-10{margin-left:10%}[dir=rtl] .flex-offset-xs-10,[dir=rtl] .offset-xs-10{margin-left:auto;margin-right:10%}.flex-offset-xs-15,.offset-xs-15{margin-left:15%}[dir=rtl] .flex-offset-xs-15,[dir=rtl] .offset-xs-15{margin-left:auto;margin-right:15%}.flex-offset-xs-20,.offset-xs-20{margin-left:20%}[dir=rtl] .flex-offset-xs-20,[dir=rtl] .offset-xs-20{margin-left:auto;margin-right:20%}.flex-offset-xs-25,.offset-xs-25{margin-left:25%}[dir=rtl] .flex-offset-xs-25,[dir=rtl] .offset-xs-25{margin-left:auto;margin-right:25%}.flex-offset-xs-30,.offset-xs-30{margin-left:30%}[dir=rtl] .flex-offset-xs-30,[dir=rtl] .offset-xs-30{margin-left:auto;margin-right:30%}.flex-offset-xs-35,.offset-xs-35{margin-left:35%}[dir=rtl] .flex-offset-xs-35,[dir=rtl] .offset-xs-35{margin-left:auto;margin-right:35%}.flex-offset-xs-40,.offset-xs-40{margin-left:40%}[dir=rtl] .flex-offset-xs-40,[dir=rtl] .offset-xs-40{margin-left:auto;margin-right:40%}.flex-offset-xs-45,.offset-xs-45{margin-left:45%}[dir=rtl] .flex-offset-xs-45,[dir=rtl] .offset-xs-45{margin-left:auto;margin-right:45%}.flex-offset-xs-50,.offset-xs-50{margin-left:50%}[dir=rtl] .flex-offset-xs-50,[dir=rtl] .offset-xs-50{margin-left:auto;margin-right:50%}.flex-offset-xs-55,.offset-xs-55{margin-left:55%}[dir=rtl] .flex-offset-xs-55,[dir=rtl] .offset-xs-55{margin-left:auto;margin-right:55%}.flex-offset-xs-60,.offset-xs-60{margin-left:60%}[dir=rtl] .flex-offset-xs-60,[dir=rtl] .offset-xs-60{margin-left:auto;margin-right:60%}.flex-offset-xs-65,.offset-xs-65{margin-left:65%}[dir=rtl] .flex-offset-xs-65,[dir=rtl] .offset-xs-65{margin-left:auto;margin-right:65%}.flex-offset-xs-70,.offset-xs-70{margin-left:70%}[dir=rtl] .flex-offset-xs-70,[dir=rtl] .offset-xs-70{margin-left:auto;margin-right:70%}.flex-offset-xs-75,.offset-xs-75{margin-left:75%}[dir=rtl] .flex-offset-xs-75,[dir=rtl] .offset-xs-75{margin-left:auto;margin-right:75%}.flex-offset-xs-80,.offset-xs-80{margin-left:80%}[dir=rtl] .flex-offset-xs-80,[dir=rtl] .offset-xs-80{margin-left:auto;margin-right:80%}.flex-offset-xs-85,.offset-xs-85{margin-left:85%}[dir=rtl] .flex-offset-xs-85,[dir=rtl] .offset-xs-85{margin-left:auto;margin-right:85%}.flex-offset-xs-90,.offset-xs-90{margin-left:90%}[dir=rtl] .flex-offset-xs-90,[dir=rtl] .offset-xs-90{margin-left:auto;margin-right:90%}.flex-offset-xs-95,.offset-xs-95{margin-left:95%}[dir=rtl] .flex-offset-xs-95,[dir=rtl] .offset-xs-95{margin-left:auto;margin-right:95%}.flex-offset-xs-33,.offset-xs-33{margin-left:calc(100% / 3)}.flex-offset-xs-66,.offset-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xs-66,[dir=rtl] .offset-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xs,.layout-align-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xs-start,.layout-align-xs-start-center,.layout-align-xs-start-end,.layout-align-xs-start-start,.layout-align-xs-start-stretch{justify-content:flex-start}.layout-align-xs-center,.layout-align-xs-center-center,.layout-align-xs-center-end,.layout-align-xs-center-start,.layout-align-xs-center-stretch{justify-content:center}.layout-align-xs-end,.layout-align-xs-end-center,.layout-align-xs-end-end,.layout-align-xs-end-start,.layout-align-xs-end-stretch{justify-content:flex-end}.layout-align-xs-space-around,.layout-align-xs-space-around-center,.layout-align-xs-space-around-end,.layout-align-xs-space-around-start,.layout-align-xs-space-around-stretch{justify-content:space-around}.layout-align-xs-space-between,.layout-align-xs-space-between-center,.layout-align-xs-space-between-end,.layout-align-xs-space-between-start,.layout-align-xs-space-between-stretch{justify-content:space-between}.layout-align-xs-center-start,.layout-align-xs-end-start,.layout-align-xs-space-around-start,.layout-align-xs-space-between-start,.layout-align-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xs-center-center,.layout-align-xs-end-center,.layout-align-xs-space-around-center,.layout-align-xs-space-between-center,.layout-align-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xs-center-center>*,.layout-align-xs-end-center>*,.layout-align-xs-space-around-center>*,.layout-align-xs-space-between-center>*,.layout-align-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xs-center-end,.layout-align-xs-end-end,.layout-align-xs-space-around-end,.layout-align-xs-space-between-end,.layout-align-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xs-center-stretch,.layout-align-xs-end-stretch,.layout-align-xs-space-around-stretch,.layout-align-xs-space-between-stretch,.layout-align-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-xs{flex:1;box-sizing:border-box}.flex-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xs-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex{min-width:0}.layout-xs-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xs-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-column>.flex{min-height:0}.layout-xs,.layout-xs-column,.layout-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xs-column{flex-direction:column}.layout-xs-row{flex-direction:row}}@media (min-width:600px){.flex-order-gt-xs--20{order:-20}.flex-order-gt-xs--19{order:-19}.flex-order-gt-xs--18{order:-18}.flex-order-gt-xs--17{order:-17}.flex-order-gt-xs--16{order:-16}.flex-order-gt-xs--15{order:-15}.flex-order-gt-xs--14{order:-14}.flex-order-gt-xs--13{order:-13}.flex-order-gt-xs--12{order:-12}.flex-order-gt-xs--11{order:-11}.flex-order-gt-xs--10{order:-10}.flex-order-gt-xs--9{order:-9}.flex-order-gt-xs--8{order:-8}.flex-order-gt-xs--7{order:-7}.flex-order-gt-xs--6{order:-6}.flex-order-gt-xs--5{order:-5}.flex-order-gt-xs--4{order:-4}.flex-order-gt-xs--3{order:-3}.flex-order-gt-xs--2{order:-2}.flex-order-gt-xs--1{order:-1}.flex-order-gt-xs-0{order:0}.flex-order-gt-xs-1{order:1}.flex-order-gt-xs-2{order:2}.flex-order-gt-xs-3{order:3}.flex-order-gt-xs-4{order:4}.flex-order-gt-xs-5{order:5}.flex-order-gt-xs-6{order:6}.flex-order-gt-xs-7{order:7}.flex-order-gt-xs-8{order:8}.flex-order-gt-xs-9{order:9}.flex-order-gt-xs-10{order:10}.flex-order-gt-xs-11{order:11}.flex-order-gt-xs-12{order:12}.flex-order-gt-xs-13{order:13}.flex-order-gt-xs-14{order:14}.flex-order-gt-xs-15{order:15}.flex-order-gt-xs-16{order:16}.flex-order-gt-xs-17{order:17}.flex-order-gt-xs-18{order:18}.flex-order-gt-xs-19{order:19}.flex-order-gt-xs-20{order:20}.flex-offset-gt-xs-0,.offset-gt-xs-0{margin-left:0}[dir=rtl] .flex-offset-gt-xs-0,[dir=rtl] .offset-gt-xs-0{margin-left:auto;margin-right:0}.flex-offset-gt-xs-5,.offset-gt-xs-5{margin-left:5%}[dir=rtl] .flex-offset-gt-xs-5,[dir=rtl] .offset-gt-xs-5{margin-left:auto;margin-right:5%}.flex-offset-gt-xs-10,.offset-gt-xs-10{margin-left:10%}[dir=rtl] .flex-offset-gt-xs-10,[dir=rtl] .offset-gt-xs-10{margin-left:auto;margin-right:10%}.flex-offset-gt-xs-15,.offset-gt-xs-15{margin-left:15%}[dir=rtl] .flex-offset-gt-xs-15,[dir=rtl] .offset-gt-xs-15{margin-left:auto;margin-right:15%}.flex-offset-gt-xs-20,.offset-gt-xs-20{margin-left:20%}[dir=rtl] .flex-offset-gt-xs-20,[dir=rtl] .offset-gt-xs-20{margin-left:auto;margin-right:20%}.flex-offset-gt-xs-25,.offset-gt-xs-25{margin-left:25%}[dir=rtl] .flex-offset-gt-xs-25,[dir=rtl] .offset-gt-xs-25{margin-left:auto;margin-right:25%}.flex-offset-gt-xs-30,.offset-gt-xs-30{margin-left:30%}[dir=rtl] .flex-offset-gt-xs-30,[dir=rtl] .offset-gt-xs-30{margin-left:auto;margin-right:30%}.flex-offset-gt-xs-35,.offset-gt-xs-35{margin-left:35%}[dir=rtl] .flex-offset-gt-xs-35,[dir=rtl] .offset-gt-xs-35{margin-left:auto;margin-right:35%}.flex-offset-gt-xs-40,.offset-gt-xs-40{margin-left:40%}[dir=rtl] .flex-offset-gt-xs-40,[dir=rtl] .offset-gt-xs-40{margin-left:auto;margin-right:40%}.flex-offset-gt-xs-45,.offset-gt-xs-45{margin-left:45%}[dir=rtl] .flex-offset-gt-xs-45,[dir=rtl] .offset-gt-xs-45{margin-left:auto;margin-right:45%}.flex-offset-gt-xs-50,.offset-gt-xs-50{margin-left:50%}[dir=rtl] .flex-offset-gt-xs-50,[dir=rtl] .offset-gt-xs-50{margin-left:auto;margin-right:50%}.flex-offset-gt-xs-55,.offset-gt-xs-55{margin-left:55%}[dir=rtl] .flex-offset-gt-xs-55,[dir=rtl] .offset-gt-xs-55{margin-left:auto;margin-right:55%}.flex-offset-gt-xs-60,.offset-gt-xs-60{margin-left:60%}[dir=rtl] .flex-offset-gt-xs-60,[dir=rtl] .offset-gt-xs-60{margin-left:auto;margin-right:60%}.flex-offset-gt-xs-65,.offset-gt-xs-65{margin-left:65%}[dir=rtl] .flex-offset-gt-xs-65,[dir=rtl] .offset-gt-xs-65{margin-left:auto;margin-right:65%}.flex-offset-gt-xs-70,.offset-gt-xs-70{margin-left:70%}[dir=rtl] .flex-offset-gt-xs-70,[dir=rtl] .offset-gt-xs-70{margin-left:auto;margin-right:70%}.flex-offset-gt-xs-75,.offset-gt-xs-75{margin-left:75%}[dir=rtl] .flex-offset-gt-xs-75,[dir=rtl] .offset-gt-xs-75{margin-left:auto;margin-right:75%}.flex-offset-gt-xs-80,.offset-gt-xs-80{margin-left:80%}[dir=rtl] .flex-offset-gt-xs-80,[dir=rtl] .offset-gt-xs-80{margin-left:auto;margin-right:80%}.flex-offset-gt-xs-85,.offset-gt-xs-85{margin-left:85%}[dir=rtl] .flex-offset-gt-xs-85,[dir=rtl] .offset-gt-xs-85{margin-left:auto;margin-right:85%}.flex-offset-gt-xs-90,.offset-gt-xs-90{margin-left:90%}[dir=rtl] .flex-offset-gt-xs-90,[dir=rtl] .offset-gt-xs-90{margin-left:auto;margin-right:90%}.flex-offset-gt-xs-95,.offset-gt-xs-95{margin-left:95%}[dir=rtl] .flex-offset-gt-xs-95,[dir=rtl] .offset-gt-xs-95{margin-left:auto;margin-right:95%}.flex-offset-gt-xs-33,.offset-gt-xs-33{margin-left:calc(100% / 3)}.flex-offset-gt-xs-66,.offset-gt-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-xs-66,[dir=rtl] .offset-gt-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-xs,.layout-align-gt-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-xs-start,.layout-align-gt-xs-start-center,.layout-align-gt-xs-start-end,.layout-align-gt-xs-start-start,.layout-align-gt-xs-start-stretch{justify-content:flex-start}.layout-align-gt-xs-center,.layout-align-gt-xs-center-center,.layout-align-gt-xs-center-end,.layout-align-gt-xs-center-start,.layout-align-gt-xs-center-stretch{justify-content:center}.layout-align-gt-xs-end,.layout-align-gt-xs-end-center,.layout-align-gt-xs-end-end,.layout-align-gt-xs-end-start,.layout-align-gt-xs-end-stretch{justify-content:flex-end}.layout-align-gt-xs-space-around,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-around-stretch{justify-content:space-around}.layout-align-gt-xs-space-between,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-space-between-stretch{justify-content:space-between}.layout-align-gt-xs-center-start,.layout-align-gt-xs-end-start,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-xs-center-center,.layout-align-gt-xs-end-center,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-xs-center-center>*,.layout-align-gt-xs-end-center>*,.layout-align-gt-xs-space-around-center>*,.layout-align-gt-xs-space-between-center>*,.layout-align-gt-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-xs-center-end,.layout-align-gt-xs-end-end,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-xs-center-stretch,.layout-align-gt-xs-end-stretch,.layout-align-gt-xs-space-around-stretch,.layout-align-gt-xs-space-between-stretch,.layout-align-gt-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-xs{flex:1;box-sizing:border-box}.flex-gt-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-xs-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex{min-width:0}.layout-gt-xs-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-column>.flex{min-height:0}.layout-gt-xs,.layout-gt-xs-column,.layout-gt-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-xs-column{flex-direction:column}.layout-gt-xs-row{flex-direction:row}}@media (min-width:600px) and (max-width:959px){.hide-gt-xs:not(.show-gt-xs):not(.show-sm):not(.show),.hide:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.hide-sm:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.flex-order-sm--20{order:-20}.flex-order-sm--19{order:-19}.flex-order-sm--18{order:-18}.flex-order-sm--17{order:-17}.flex-order-sm--16{order:-16}.flex-order-sm--15{order:-15}.flex-order-sm--14{order:-14}.flex-order-sm--13{order:-13}.flex-order-sm--12{order:-12}.flex-order-sm--11{order:-11}.flex-order-sm--10{order:-10}.flex-order-sm--9{order:-9}.flex-order-sm--8{order:-8}.flex-order-sm--7{order:-7}.flex-order-sm--6{order:-6}.flex-order-sm--5{order:-5}.flex-order-sm--4{order:-4}.flex-order-sm--3{order:-3}.flex-order-sm--2{order:-2}.flex-order-sm--1{order:-1}.flex-order-sm-0{order:0}.flex-order-sm-1{order:1}.flex-order-sm-2{order:2}.flex-order-sm-3{order:3}.flex-order-sm-4{order:4}.flex-order-sm-5{order:5}.flex-order-sm-6{order:6}.flex-order-sm-7{order:7}.flex-order-sm-8{order:8}.flex-order-sm-9{order:9}.flex-order-sm-10{order:10}.flex-order-sm-11{order:11}.flex-order-sm-12{order:12}.flex-order-sm-13{order:13}.flex-order-sm-14{order:14}.flex-order-sm-15{order:15}.flex-order-sm-16{order:16}.flex-order-sm-17{order:17}.flex-order-sm-18{order:18}.flex-order-sm-19{order:19}.flex-order-sm-20{order:20}.flex-offset-sm-0,.offset-sm-0{margin-left:0}[dir=rtl] .flex-offset-sm-0,[dir=rtl] .offset-sm-0{margin-left:auto;margin-right:0}.flex-offset-sm-5,.offset-sm-5{margin-left:5%}[dir=rtl] .flex-offset-sm-5,[dir=rtl] .offset-sm-5{margin-left:auto;margin-right:5%}.flex-offset-sm-10,.offset-sm-10{margin-left:10%}[dir=rtl] .flex-offset-sm-10,[dir=rtl] .offset-sm-10{margin-left:auto;margin-right:10%}.flex-offset-sm-15,.offset-sm-15{margin-left:15%}[dir=rtl] .flex-offset-sm-15,[dir=rtl] .offset-sm-15{margin-left:auto;margin-right:15%}.flex-offset-sm-20,.offset-sm-20{margin-left:20%}[dir=rtl] .flex-offset-sm-20,[dir=rtl] .offset-sm-20{margin-left:auto;margin-right:20%}.flex-offset-sm-25,.offset-sm-25{margin-left:25%}[dir=rtl] .flex-offset-sm-25,[dir=rtl] .offset-sm-25{margin-left:auto;margin-right:25%}.flex-offset-sm-30,.offset-sm-30{margin-left:30%}[dir=rtl] .flex-offset-sm-30,[dir=rtl] .offset-sm-30{margin-left:auto;margin-right:30%}.flex-offset-sm-35,.offset-sm-35{margin-left:35%}[dir=rtl] .flex-offset-sm-35,[dir=rtl] .offset-sm-35{margin-left:auto;margin-right:35%}.flex-offset-sm-40,.offset-sm-40{margin-left:40%}[dir=rtl] .flex-offset-sm-40,[dir=rtl] .offset-sm-40{margin-left:auto;margin-right:40%}.flex-offset-sm-45,.offset-sm-45{margin-left:45%}[dir=rtl] .flex-offset-sm-45,[dir=rtl] .offset-sm-45{margin-left:auto;margin-right:45%}.flex-offset-sm-50,.offset-sm-50{margin-left:50%}[dir=rtl] .flex-offset-sm-50,[dir=rtl] .offset-sm-50{margin-left:auto;margin-right:50%}.flex-offset-sm-55,.offset-sm-55{margin-left:55%}[dir=rtl] .flex-offset-sm-55,[dir=rtl] .offset-sm-55{margin-left:auto;margin-right:55%}.flex-offset-sm-60,.offset-sm-60{margin-left:60%}[dir=rtl] .flex-offset-sm-60,[dir=rtl] .offset-sm-60{margin-left:auto;margin-right:60%}.flex-offset-sm-65,.offset-sm-65{margin-left:65%}[dir=rtl] .flex-offset-sm-65,[dir=rtl] .offset-sm-65{margin-left:auto;margin-right:65%}.flex-offset-sm-70,.offset-sm-70{margin-left:70%}[dir=rtl] .flex-offset-sm-70,[dir=rtl] .offset-sm-70{margin-left:auto;margin-right:70%}.flex-offset-sm-75,.offset-sm-75{margin-left:75%}[dir=rtl] .flex-offset-sm-75,[dir=rtl] .offset-sm-75{margin-left:auto;margin-right:75%}.flex-offset-sm-80,.offset-sm-80{margin-left:80%}[dir=rtl] .flex-offset-sm-80,[dir=rtl] .offset-sm-80{margin-left:auto;margin-right:80%}.flex-offset-sm-85,.offset-sm-85{margin-left:85%}[dir=rtl] .flex-offset-sm-85,[dir=rtl] .offset-sm-85{margin-left:auto;margin-right:85%}.flex-offset-sm-90,.offset-sm-90{margin-left:90%}[dir=rtl] .flex-offset-sm-90,[dir=rtl] .offset-sm-90{margin-left:auto;margin-right:90%}.flex-offset-sm-95,.offset-sm-95{margin-left:95%}[dir=rtl] .flex-offset-sm-95,[dir=rtl] .offset-sm-95{margin-left:auto;margin-right:95%}.flex-offset-sm-33,.offset-sm-33{margin-left:calc(100% / 3)}.flex-offset-sm-66,.offset-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-sm-66,[dir=rtl] .offset-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-sm,.layout-align-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-sm-start,.layout-align-sm-start-center,.layout-align-sm-start-end,.layout-align-sm-start-start,.layout-align-sm-start-stretch{justify-content:flex-start}.layout-align-sm-center,.layout-align-sm-center-center,.layout-align-sm-center-end,.layout-align-sm-center-start,.layout-align-sm-center-stretch{justify-content:center}.layout-align-sm-end,.layout-align-sm-end-center,.layout-align-sm-end-end,.layout-align-sm-end-start,.layout-align-sm-end-stretch{justify-content:flex-end}.layout-align-sm-space-around,.layout-align-sm-space-around-center,.layout-align-sm-space-around-end,.layout-align-sm-space-around-start,.layout-align-sm-space-around-stretch{justify-content:space-around}.layout-align-sm-space-between,.layout-align-sm-space-between-center,.layout-align-sm-space-between-end,.layout-align-sm-space-between-start,.layout-align-sm-space-between-stretch{justify-content:space-between}.layout-align-sm-center-start,.layout-align-sm-end-start,.layout-align-sm-space-around-start,.layout-align-sm-space-between-start,.layout-align-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-sm-center-center,.layout-align-sm-end-center,.layout-align-sm-space-around-center,.layout-align-sm-space-between-center,.layout-align-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-sm-center-center>*,.layout-align-sm-end-center>*,.layout-align-sm-space-around-center>*,.layout-align-sm-space-between-center>*,.layout-align-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-sm-center-end,.layout-align-sm-end-end,.layout-align-sm-space-around-end,.layout-align-sm-space-between-end,.layout-align-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-sm-center-stretch,.layout-align-sm-end-stretch,.layout-align-sm-space-around-stretch,.layout-align-sm-space-between-stretch,.layout-align-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-sm{flex:1;box-sizing:border-box}.flex-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-sm-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex{min-width:0}.layout-sm-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-sm-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-column>.flex{min-height:0}.layout-sm,.layout-sm-column,.layout-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-sm-column{flex-direction:column}.layout-sm-row{flex-direction:row}}@media (min-width:960px){.flex-order-gt-sm--20{order:-20}.flex-order-gt-sm--19{order:-19}.flex-order-gt-sm--18{order:-18}.flex-order-gt-sm--17{order:-17}.flex-order-gt-sm--16{order:-16}.flex-order-gt-sm--15{order:-15}.flex-order-gt-sm--14{order:-14}.flex-order-gt-sm--13{order:-13}.flex-order-gt-sm--12{order:-12}.flex-order-gt-sm--11{order:-11}.flex-order-gt-sm--10{order:-10}.flex-order-gt-sm--9{order:-9}.flex-order-gt-sm--8{order:-8}.flex-order-gt-sm--7{order:-7}.flex-order-gt-sm--6{order:-6}.flex-order-gt-sm--5{order:-5}.flex-order-gt-sm--4{order:-4}.flex-order-gt-sm--3{order:-3}.flex-order-gt-sm--2{order:-2}.flex-order-gt-sm--1{order:-1}.flex-order-gt-sm-0{order:0}.flex-order-gt-sm-1{order:1}.flex-order-gt-sm-2{order:2}.flex-order-gt-sm-3{order:3}.flex-order-gt-sm-4{order:4}.flex-order-gt-sm-5{order:5}.flex-order-gt-sm-6{order:6}.flex-order-gt-sm-7{order:7}.flex-order-gt-sm-8{order:8}.flex-order-gt-sm-9{order:9}.flex-order-gt-sm-10{order:10}.flex-order-gt-sm-11{order:11}.flex-order-gt-sm-12{order:12}.flex-order-gt-sm-13{order:13}.flex-order-gt-sm-14{order:14}.flex-order-gt-sm-15{order:15}.flex-order-gt-sm-16{order:16}.flex-order-gt-sm-17{order:17}.flex-order-gt-sm-18{order:18}.flex-order-gt-sm-19{order:19}.flex-order-gt-sm-20{order:20}.flex-offset-gt-sm-0,.offset-gt-sm-0{margin-left:0}[dir=rtl] .flex-offset-gt-sm-0,[dir=rtl] .offset-gt-sm-0{margin-left:auto;margin-right:0}.flex-offset-gt-sm-5,.offset-gt-sm-5{margin-left:5%}[dir=rtl] .flex-offset-gt-sm-5,[dir=rtl] .offset-gt-sm-5{margin-left:auto;margin-right:5%}.flex-offset-gt-sm-10,.offset-gt-sm-10{margin-left:10%}[dir=rtl] .flex-offset-gt-sm-10,[dir=rtl] .offset-gt-sm-10{margin-left:auto;margin-right:10%}.flex-offset-gt-sm-15,.offset-gt-sm-15{margin-left:15%}[dir=rtl] .flex-offset-gt-sm-15,[dir=rtl] .offset-gt-sm-15{margin-left:auto;margin-right:15%}.flex-offset-gt-sm-20,.offset-gt-sm-20{margin-left:20%}[dir=rtl] .flex-offset-gt-sm-20,[dir=rtl] .offset-gt-sm-20{margin-left:auto;margin-right:20%}.flex-offset-gt-sm-25,.offset-gt-sm-25{margin-left:25%}[dir=rtl] .flex-offset-gt-sm-25,[dir=rtl] .offset-gt-sm-25{margin-left:auto;margin-right:25%}.flex-offset-gt-sm-30,.offset-gt-sm-30{margin-left:30%}[dir=rtl] .flex-offset-gt-sm-30,[dir=rtl] .offset-gt-sm-30{margin-left:auto;margin-right:30%}.flex-offset-gt-sm-35,.offset-gt-sm-35{margin-left:35%}[dir=rtl] .flex-offset-gt-sm-35,[dir=rtl] .offset-gt-sm-35{margin-left:auto;margin-right:35%}.flex-offset-gt-sm-40,.offset-gt-sm-40{margin-left:40%}[dir=rtl] .flex-offset-gt-sm-40,[dir=rtl] .offset-gt-sm-40{margin-left:auto;margin-right:40%}.flex-offset-gt-sm-45,.offset-gt-sm-45{margin-left:45%}[dir=rtl] .flex-offset-gt-sm-45,[dir=rtl] .offset-gt-sm-45{margin-left:auto;margin-right:45%}.flex-offset-gt-sm-50,.offset-gt-sm-50{margin-left:50%}[dir=rtl] .flex-offset-gt-sm-50,[dir=rtl] .offset-gt-sm-50{margin-left:auto;margin-right:50%}.flex-offset-gt-sm-55,.offset-gt-sm-55{margin-left:55%}[dir=rtl] .flex-offset-gt-sm-55,[dir=rtl] .offset-gt-sm-55{margin-left:auto;margin-right:55%}.flex-offset-gt-sm-60,.offset-gt-sm-60{margin-left:60%}[dir=rtl] .flex-offset-gt-sm-60,[dir=rtl] .offset-gt-sm-60{margin-left:auto;margin-right:60%}.flex-offset-gt-sm-65,.offset-gt-sm-65{margin-left:65%}[dir=rtl] .flex-offset-gt-sm-65,[dir=rtl] .offset-gt-sm-65{margin-left:auto;margin-right:65%}.flex-offset-gt-sm-70,.offset-gt-sm-70{margin-left:70%}[dir=rtl] .flex-offset-gt-sm-70,[dir=rtl] .offset-gt-sm-70{margin-left:auto;margin-right:70%}.flex-offset-gt-sm-75,.offset-gt-sm-75{margin-left:75%}[dir=rtl] .flex-offset-gt-sm-75,[dir=rtl] .offset-gt-sm-75{margin-left:auto;margin-right:75%}.flex-offset-gt-sm-80,.offset-gt-sm-80{margin-left:80%}[dir=rtl] .flex-offset-gt-sm-80,[dir=rtl] .offset-gt-sm-80{margin-left:auto;margin-right:80%}.flex-offset-gt-sm-85,.offset-gt-sm-85{margin-left:85%}[dir=rtl] .flex-offset-gt-sm-85,[dir=rtl] .offset-gt-sm-85{margin-left:auto;margin-right:85%}.flex-offset-gt-sm-90,.offset-gt-sm-90{margin-left:90%}[dir=rtl] .flex-offset-gt-sm-90,[dir=rtl] .offset-gt-sm-90{margin-left:auto;margin-right:90%}.flex-offset-gt-sm-95,.offset-gt-sm-95{margin-left:95%}[dir=rtl] .flex-offset-gt-sm-95,[dir=rtl] .offset-gt-sm-95{margin-left:auto;margin-right:95%}.flex-offset-gt-sm-33,.offset-gt-sm-33{margin-left:calc(100% / 3)}.flex-offset-gt-sm-66,.offset-gt-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-sm-66,[dir=rtl] .offset-gt-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-sm,.layout-align-gt-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-sm-start,.layout-align-gt-sm-start-center,.layout-align-gt-sm-start-end,.layout-align-gt-sm-start-start,.layout-align-gt-sm-start-stretch{justify-content:flex-start}.layout-align-gt-sm-center,.layout-align-gt-sm-center-center,.layout-align-gt-sm-center-end,.layout-align-gt-sm-center-start,.layout-align-gt-sm-center-stretch{justify-content:center}.layout-align-gt-sm-end,.layout-align-gt-sm-end-center,.layout-align-gt-sm-end-end,.layout-align-gt-sm-end-start,.layout-align-gt-sm-end-stretch{justify-content:flex-end}.layout-align-gt-sm-space-around,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-around-stretch{justify-content:space-around}.layout-align-gt-sm-space-between,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-space-between-stretch{justify-content:space-between}.layout-align-gt-sm-center-start,.layout-align-gt-sm-end-start,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-sm-center-center,.layout-align-gt-sm-end-center,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-sm-center-center>*,.layout-align-gt-sm-end-center>*,.layout-align-gt-sm-space-around-center>*,.layout-align-gt-sm-space-between-center>*,.layout-align-gt-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-sm-center-end,.layout-align-gt-sm-end-end,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-sm-center-stretch,.layout-align-gt-sm-end-stretch,.layout-align-gt-sm-space-around-stretch,.layout-align-gt-sm-space-between-stretch,.layout-align-gt-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-sm{flex:1;box-sizing:border-box}.flex-gt-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-sm-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex{min-width:0}.layout-gt-sm-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-column>.flex{min-height:0}.layout-gt-sm,.layout-gt-sm-column,.layout-gt-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-sm-column{flex-direction:column}.layout-gt-sm-row{flex-direction:row}}@media (min-width:960px) and (max-width:1279px){.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show){display:none}.hide-md:not(.show-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-md--20{order:-20}.flex-order-md--19{order:-19}.flex-order-md--18{order:-18}.flex-order-md--17{order:-17}.flex-order-md--16{order:-16}.flex-order-md--15{order:-15}.flex-order-md--14{order:-14}.flex-order-md--13{order:-13}.flex-order-md--12{order:-12}.flex-order-md--11{order:-11}.flex-order-md--10{order:-10}.flex-order-md--9{order:-9}.flex-order-md--8{order:-8}.flex-order-md--7{order:-7}.flex-order-md--6{order:-6}.flex-order-md--5{order:-5}.flex-order-md--4{order:-4}.flex-order-md--3{order:-3}.flex-order-md--2{order:-2}.flex-order-md--1{order:-1}.flex-order-md-0{order:0}.flex-order-md-1{order:1}.flex-order-md-2{order:2}.flex-order-md-3{order:3}.flex-order-md-4{order:4}.flex-order-md-5{order:5}.flex-order-md-6{order:6}.flex-order-md-7{order:7}.flex-order-md-8{order:8}.flex-order-md-9{order:9}.flex-order-md-10{order:10}.flex-order-md-11{order:11}.flex-order-md-12{order:12}.flex-order-md-13{order:13}.flex-order-md-14{order:14}.flex-order-md-15{order:15}.flex-order-md-16{order:16}.flex-order-md-17{order:17}.flex-order-md-18{order:18}.flex-order-md-19{order:19}.flex-order-md-20{order:20}.flex-offset-md-0,.offset-md-0{margin-left:0}[dir=rtl] .flex-offset-md-0,[dir=rtl] .offset-md-0{margin-left:auto;margin-right:0}.flex-offset-md-5,.offset-md-5{margin-left:5%}[dir=rtl] .flex-offset-md-5,[dir=rtl] .offset-md-5{margin-left:auto;margin-right:5%}.flex-offset-md-10,.offset-md-10{margin-left:10%}[dir=rtl] .flex-offset-md-10,[dir=rtl] .offset-md-10{margin-left:auto;margin-right:10%}.flex-offset-md-15,.offset-md-15{margin-left:15%}[dir=rtl] .flex-offset-md-15,[dir=rtl] .offset-md-15{margin-left:auto;margin-right:15%}.flex-offset-md-20,.offset-md-20{margin-left:20%}[dir=rtl] .flex-offset-md-20,[dir=rtl] .offset-md-20{margin-left:auto;margin-right:20%}.flex-offset-md-25,.offset-md-25{margin-left:25%}[dir=rtl] .flex-offset-md-25,[dir=rtl] .offset-md-25{margin-left:auto;margin-right:25%}.flex-offset-md-30,.offset-md-30{margin-left:30%}[dir=rtl] .flex-offset-md-30,[dir=rtl] .offset-md-30{margin-left:auto;margin-right:30%}.flex-offset-md-35,.offset-md-35{margin-left:35%}[dir=rtl] .flex-offset-md-35,[dir=rtl] .offset-md-35{margin-left:auto;margin-right:35%}.flex-offset-md-40,.offset-md-40{margin-left:40%}[dir=rtl] .flex-offset-md-40,[dir=rtl] .offset-md-40{margin-left:auto;margin-right:40%}.flex-offset-md-45,.offset-md-45{margin-left:45%}[dir=rtl] .flex-offset-md-45,[dir=rtl] .offset-md-45{margin-left:auto;margin-right:45%}.flex-offset-md-50,.offset-md-50{margin-left:50%}[dir=rtl] .flex-offset-md-50,[dir=rtl] .offset-md-50{margin-left:auto;margin-right:50%}.flex-offset-md-55,.offset-md-55{margin-left:55%}[dir=rtl] .flex-offset-md-55,[dir=rtl] .offset-md-55{margin-left:auto;margin-right:55%}.flex-offset-md-60,.offset-md-60{margin-left:60%}[dir=rtl] .flex-offset-md-60,[dir=rtl] .offset-md-60{margin-left:auto;margin-right:60%}.flex-offset-md-65,.offset-md-65{margin-left:65%}[dir=rtl] .flex-offset-md-65,[dir=rtl] .offset-md-65{margin-left:auto;margin-right:65%}.flex-offset-md-70,.offset-md-70{margin-left:70%}[dir=rtl] .flex-offset-md-70,[dir=rtl] .offset-md-70{margin-left:auto;margin-right:70%}.flex-offset-md-75,.offset-md-75{margin-left:75%}[dir=rtl] .flex-offset-md-75,[dir=rtl] .offset-md-75{margin-left:auto;margin-right:75%}.flex-offset-md-80,.offset-md-80{margin-left:80%}[dir=rtl] .flex-offset-md-80,[dir=rtl] .offset-md-80{margin-left:auto;margin-right:80%}.flex-offset-md-85,.offset-md-85{margin-left:85%}[dir=rtl] .flex-offset-md-85,[dir=rtl] .offset-md-85{margin-left:auto;margin-right:85%}.flex-offset-md-90,.offset-md-90{margin-left:90%}[dir=rtl] .flex-offset-md-90,[dir=rtl] .offset-md-90{margin-left:auto;margin-right:90%}.flex-offset-md-95,.offset-md-95{margin-left:95%}[dir=rtl] .flex-offset-md-95,[dir=rtl] .offset-md-95{margin-left:auto;margin-right:95%}.flex-offset-md-33,.offset-md-33{margin-left:calc(100% / 3)}.flex-offset-md-66,.offset-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-md-66,[dir=rtl] .offset-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-md,.layout-align-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-md-start,.layout-align-md-start-center,.layout-align-md-start-end,.layout-align-md-start-start,.layout-align-md-start-stretch{justify-content:flex-start}.layout-align-md-center,.layout-align-md-center-center,.layout-align-md-center-end,.layout-align-md-center-start,.layout-align-md-center-stretch{justify-content:center}.layout-align-md-end,.layout-align-md-end-center,.layout-align-md-end-end,.layout-align-md-end-start,.layout-align-md-end-stretch{justify-content:flex-end}.layout-align-md-space-around,.layout-align-md-space-around-center,.layout-align-md-space-around-end,.layout-align-md-space-around-start,.layout-align-md-space-around-stretch{justify-content:space-around}.layout-align-md-space-between,.layout-align-md-space-between-center,.layout-align-md-space-between-end,.layout-align-md-space-between-start,.layout-align-md-space-between-stretch{justify-content:space-between}.layout-align-md-center-start,.layout-align-md-end-start,.layout-align-md-space-around-start,.layout-align-md-space-between-start,.layout-align-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-md-center-center,.layout-align-md-end-center,.layout-align-md-space-around-center,.layout-align-md-space-between-center,.layout-align-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-md-center-center>*,.layout-align-md-end-center>*,.layout-align-md-space-around-center>*,.layout-align-md-space-between-center>*,.layout-align-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-md-center-end,.layout-align-md-end-end,.layout-align-md-space-around-end,.layout-align-md-space-between-end,.layout-align-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-md-center-stretch,.layout-align-md-end-stretch,.layout-align-md-space-around-stretch,.layout-align-md-space-between-stretch,.layout-align-md-start-stretch{align-items:stretch;align-content:stretch}.flex-md{flex:1;box-sizing:border-box}.flex-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-md-none{flex:0 0 auto;box-sizing:border-box}.flex-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-md-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex{min-width:0}.layout-md-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-md-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-column>.flex{min-height:0}.layout-md,.layout-md-column,.layout-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-md-column{flex-direction:column}.layout-md-row{flex-direction:row}}@media (min-width:1280px){.flex-order-gt-md--20{order:-20}.flex-order-gt-md--19{order:-19}.flex-order-gt-md--18{order:-18}.flex-order-gt-md--17{order:-17}.flex-order-gt-md--16{order:-16}.flex-order-gt-md--15{order:-15}.flex-order-gt-md--14{order:-14}.flex-order-gt-md--13{order:-13}.flex-order-gt-md--12{order:-12}.flex-order-gt-md--11{order:-11}.flex-order-gt-md--10{order:-10}.flex-order-gt-md--9{order:-9}.flex-order-gt-md--8{order:-8}.flex-order-gt-md--7{order:-7}.flex-order-gt-md--6{order:-6}.flex-order-gt-md--5{order:-5}.flex-order-gt-md--4{order:-4}.flex-order-gt-md--3{order:-3}.flex-order-gt-md--2{order:-2}.flex-order-gt-md--1{order:-1}.flex-order-gt-md-0{order:0}.flex-order-gt-md-1{order:1}.flex-order-gt-md-2{order:2}.flex-order-gt-md-3{order:3}.flex-order-gt-md-4{order:4}.flex-order-gt-md-5{order:5}.flex-order-gt-md-6{order:6}.flex-order-gt-md-7{order:7}.flex-order-gt-md-8{order:8}.flex-order-gt-md-9{order:9}.flex-order-gt-md-10{order:10}.flex-order-gt-md-11{order:11}.flex-order-gt-md-12{order:12}.flex-order-gt-md-13{order:13}.flex-order-gt-md-14{order:14}.flex-order-gt-md-15{order:15}.flex-order-gt-md-16{order:16}.flex-order-gt-md-17{order:17}.flex-order-gt-md-18{order:18}.flex-order-gt-md-19{order:19}.flex-order-gt-md-20{order:20}.flex-offset-gt-md-0,.offset-gt-md-0{margin-left:0}[dir=rtl] .flex-offset-gt-md-0,[dir=rtl] .offset-gt-md-0{margin-left:auto;margin-right:0}.flex-offset-gt-md-5,.offset-gt-md-5{margin-left:5%}[dir=rtl] .flex-offset-gt-md-5,[dir=rtl] .offset-gt-md-5{margin-left:auto;margin-right:5%}.flex-offset-gt-md-10,.offset-gt-md-10{margin-left:10%}[dir=rtl] .flex-offset-gt-md-10,[dir=rtl] .offset-gt-md-10{margin-left:auto;margin-right:10%}.flex-offset-gt-md-15,.offset-gt-md-15{margin-left:15%}[dir=rtl] .flex-offset-gt-md-15,[dir=rtl] .offset-gt-md-15{margin-left:auto;margin-right:15%}.flex-offset-gt-md-20,.offset-gt-md-20{margin-left:20%}[dir=rtl] .flex-offset-gt-md-20,[dir=rtl] .offset-gt-md-20{margin-left:auto;margin-right:20%}.flex-offset-gt-md-25,.offset-gt-md-25{margin-left:25%}[dir=rtl] .flex-offset-gt-md-25,[dir=rtl] .offset-gt-md-25{margin-left:auto;margin-right:25%}.flex-offset-gt-md-30,.offset-gt-md-30{margin-left:30%}[dir=rtl] .flex-offset-gt-md-30,[dir=rtl] .offset-gt-md-30{margin-left:auto;margin-right:30%}.flex-offset-gt-md-35,.offset-gt-md-35{margin-left:35%}[dir=rtl] .flex-offset-gt-md-35,[dir=rtl] .offset-gt-md-35{margin-left:auto;margin-right:35%}.flex-offset-gt-md-40,.offset-gt-md-40{margin-left:40%}[dir=rtl] .flex-offset-gt-md-40,[dir=rtl] .offset-gt-md-40{margin-left:auto;margin-right:40%}.flex-offset-gt-md-45,.offset-gt-md-45{margin-left:45%}[dir=rtl] .flex-offset-gt-md-45,[dir=rtl] .offset-gt-md-45{margin-left:auto;margin-right:45%}.flex-offset-gt-md-50,.offset-gt-md-50{margin-left:50%}[dir=rtl] .flex-offset-gt-md-50,[dir=rtl] .offset-gt-md-50{margin-left:auto;margin-right:50%}.flex-offset-gt-md-55,.offset-gt-md-55{margin-left:55%}[dir=rtl] .flex-offset-gt-md-55,[dir=rtl] .offset-gt-md-55{margin-left:auto;margin-right:55%}.flex-offset-gt-md-60,.offset-gt-md-60{margin-left:60%}[dir=rtl] .flex-offset-gt-md-60,[dir=rtl] .offset-gt-md-60{margin-left:auto;margin-right:60%}.flex-offset-gt-md-65,.offset-gt-md-65{margin-left:65%}[dir=rtl] .flex-offset-gt-md-65,[dir=rtl] .offset-gt-md-65{margin-left:auto;margin-right:65%}.flex-offset-gt-md-70,.offset-gt-md-70{margin-left:70%}[dir=rtl] .flex-offset-gt-md-70,[dir=rtl] .offset-gt-md-70{margin-left:auto;margin-right:70%}.flex-offset-gt-md-75,.offset-gt-md-75{margin-left:75%}[dir=rtl] .flex-offset-gt-md-75,[dir=rtl] .offset-gt-md-75{margin-left:auto;margin-right:75%}.flex-offset-gt-md-80,.offset-gt-md-80{margin-left:80%}[dir=rtl] .flex-offset-gt-md-80,[dir=rtl] .offset-gt-md-80{margin-left:auto;margin-right:80%}.flex-offset-gt-md-85,.offset-gt-md-85{margin-left:85%}[dir=rtl] .flex-offset-gt-md-85,[dir=rtl] .offset-gt-md-85{margin-left:auto;margin-right:85%}.flex-offset-gt-md-90,.offset-gt-md-90{margin-left:90%}[dir=rtl] .flex-offset-gt-md-90,[dir=rtl] .offset-gt-md-90{margin-left:auto;margin-right:90%}.flex-offset-gt-md-95,.offset-gt-md-95{margin-left:95%}[dir=rtl] .flex-offset-gt-md-95,[dir=rtl] .offset-gt-md-95{margin-left:auto;margin-right:95%}.flex-offset-gt-md-33,.offset-gt-md-33{margin-left:calc(100% / 3)}.flex-offset-gt-md-66,.offset-gt-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-md-66,[dir=rtl] .offset-gt-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-md,.layout-align-gt-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-md-start,.layout-align-gt-md-start-center,.layout-align-gt-md-start-end,.layout-align-gt-md-start-start,.layout-align-gt-md-start-stretch{justify-content:flex-start}.layout-align-gt-md-center,.layout-align-gt-md-center-center,.layout-align-gt-md-center-end,.layout-align-gt-md-center-start,.layout-align-gt-md-center-stretch{justify-content:center}.layout-align-gt-md-end,.layout-align-gt-md-end-center,.layout-align-gt-md-end-end,.layout-align-gt-md-end-start,.layout-align-gt-md-end-stretch{justify-content:flex-end}.layout-align-gt-md-space-around,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-around-stretch{justify-content:space-around}.layout-align-gt-md-space-between,.layout-align-gt-md-space-between-center,.layout-align-gt-md-space-between-end,.layout-align-gt-md-space-between-start,.layout-align-gt-md-space-between-stretch{justify-content:space-between}.layout-align-gt-md-center-start,.layout-align-gt-md-end-start,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-between-start,.layout-align-gt-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-md-center-center,.layout-align-gt-md-end-center,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-between-center,.layout-align-gt-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-md-center-center>*,.layout-align-gt-md-end-center>*,.layout-align-gt-md-space-around-center>*,.layout-align-gt-md-space-between-center>*,.layout-align-gt-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-md-center-end,.layout-align-gt-md-end-end,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-between-end,.layout-align-gt-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-md-center-stretch,.layout-align-gt-md-end-stretch,.layout-align-gt-md-space-around-stretch,.layout-align-gt-md-space-between-stretch,.layout-align-gt-md-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-md{flex:1;box-sizing:border-box}.flex-gt-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-md-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-md-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex{min-width:0}.layout-gt-md-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-column>.flex{min-height:0}.layout-gt-md,.layout-gt-md-column,.layout-gt-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-md-column{flex-direction:column}.layout-gt-md-row{flex-direction:row}}@media (min-width:1280px) and (max-width:1919px){.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show){display:none}.hide-lg:not(.show-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-lg--20{order:-20}.flex-order-lg--19{order:-19}.flex-order-lg--18{order:-18}.flex-order-lg--17{order:-17}.flex-order-lg--16{order:-16}.flex-order-lg--15{order:-15}.flex-order-lg--14{order:-14}.flex-order-lg--13{order:-13}.flex-order-lg--12{order:-12}.flex-order-lg--11{order:-11}.flex-order-lg--10{order:-10}.flex-order-lg--9{order:-9}.flex-order-lg--8{order:-8}.flex-order-lg--7{order:-7}.flex-order-lg--6{order:-6}.flex-order-lg--5{order:-5}.flex-order-lg--4{order:-4}.flex-order-lg--3{order:-3}.flex-order-lg--2{order:-2}.flex-order-lg--1{order:-1}.flex-order-lg-0{order:0}.flex-order-lg-1{order:1}.flex-order-lg-2{order:2}.flex-order-lg-3{order:3}.flex-order-lg-4{order:4}.flex-order-lg-5{order:5}.flex-order-lg-6{order:6}.flex-order-lg-7{order:7}.flex-order-lg-8{order:8}.flex-order-lg-9{order:9}.flex-order-lg-10{order:10}.flex-order-lg-11{order:11}.flex-order-lg-12{order:12}.flex-order-lg-13{order:13}.flex-order-lg-14{order:14}.flex-order-lg-15{order:15}.flex-order-lg-16{order:16}.flex-order-lg-17{order:17}.flex-order-lg-18{order:18}.flex-order-lg-19{order:19}.flex-order-lg-20{order:20}.flex-offset-lg-0,.offset-lg-0{margin-left:0}[dir=rtl] .flex-offset-lg-0,[dir=rtl] .offset-lg-0{margin-left:auto;margin-right:0}.flex-offset-lg-5,.offset-lg-5{margin-left:5%}[dir=rtl] .flex-offset-lg-5,[dir=rtl] .offset-lg-5{margin-left:auto;margin-right:5%}.flex-offset-lg-10,.offset-lg-10{margin-left:10%}[dir=rtl] .flex-offset-lg-10,[dir=rtl] .offset-lg-10{margin-left:auto;margin-right:10%}.flex-offset-lg-15,.offset-lg-15{margin-left:15%}[dir=rtl] .flex-offset-lg-15,[dir=rtl] .offset-lg-15{margin-left:auto;margin-right:15%}.flex-offset-lg-20,.offset-lg-20{margin-left:20%}[dir=rtl] .flex-offset-lg-20,[dir=rtl] .offset-lg-20{margin-left:auto;margin-right:20%}.flex-offset-lg-25,.offset-lg-25{margin-left:25%}[dir=rtl] .flex-offset-lg-25,[dir=rtl] .offset-lg-25{margin-left:auto;margin-right:25%}.flex-offset-lg-30,.offset-lg-30{margin-left:30%}[dir=rtl] .flex-offset-lg-30,[dir=rtl] .offset-lg-30{margin-left:auto;margin-right:30%}.flex-offset-lg-35,.offset-lg-35{margin-left:35%}[dir=rtl] .flex-offset-lg-35,[dir=rtl] .offset-lg-35{margin-left:auto;margin-right:35%}.flex-offset-lg-40,.offset-lg-40{margin-left:40%}[dir=rtl] .flex-offset-lg-40,[dir=rtl] .offset-lg-40{margin-left:auto;margin-right:40%}.flex-offset-lg-45,.offset-lg-45{margin-left:45%}[dir=rtl] .flex-offset-lg-45,[dir=rtl] .offset-lg-45{margin-left:auto;margin-right:45%}.flex-offset-lg-50,.offset-lg-50{margin-left:50%}[dir=rtl] .flex-offset-lg-50,[dir=rtl] .offset-lg-50{margin-left:auto;margin-right:50%}.flex-offset-lg-55,.offset-lg-55{margin-left:55%}[dir=rtl] .flex-offset-lg-55,[dir=rtl] .offset-lg-55{margin-left:auto;margin-right:55%}.flex-offset-lg-60,.offset-lg-60{margin-left:60%}[dir=rtl] .flex-offset-lg-60,[dir=rtl] .offset-lg-60{margin-left:auto;margin-right:60%}.flex-offset-lg-65,.offset-lg-65{margin-left:65%}[dir=rtl] .flex-offset-lg-65,[dir=rtl] .offset-lg-65{margin-left:auto;margin-right:65%}.flex-offset-lg-70,.offset-lg-70{margin-left:70%}[dir=rtl] .flex-offset-lg-70,[dir=rtl] .offset-lg-70{margin-left:auto;margin-right:70%}.flex-offset-lg-75,.offset-lg-75{margin-left:75%}[dir=rtl] .flex-offset-lg-75,[dir=rtl] .offset-lg-75{margin-left:auto;margin-right:75%}.flex-offset-lg-80,.offset-lg-80{margin-left:80%}[dir=rtl] .flex-offset-lg-80,[dir=rtl] .offset-lg-80{margin-left:auto;margin-right:80%}.flex-offset-lg-85,.offset-lg-85{margin-left:85%}[dir=rtl] .flex-offset-lg-85,[dir=rtl] .offset-lg-85{margin-left:auto;margin-right:85%}.flex-offset-lg-90,.offset-lg-90{margin-left:90%}[dir=rtl] .flex-offset-lg-90,[dir=rtl] .offset-lg-90{margin-left:auto;margin-right:90%}.flex-offset-lg-95,.offset-lg-95{margin-left:95%}[dir=rtl] .flex-offset-lg-95,[dir=rtl] .offset-lg-95{margin-left:auto;margin-right:95%}.flex-offset-lg-33,.offset-lg-33{margin-left:calc(100% / 3)}.flex-offset-lg-66,.offset-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-lg-66,[dir=rtl] .offset-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-lg,.layout-align-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-lg-start,.layout-align-lg-start-center,.layout-align-lg-start-end,.layout-align-lg-start-start,.layout-align-lg-start-stretch{justify-content:flex-start}.layout-align-lg-center,.layout-align-lg-center-center,.layout-align-lg-center-end,.layout-align-lg-center-start,.layout-align-lg-center-stretch{justify-content:center}.layout-align-lg-end,.layout-align-lg-end-center,.layout-align-lg-end-end,.layout-align-lg-end-start,.layout-align-lg-end-stretch{justify-content:flex-end}.layout-align-lg-space-around,.layout-align-lg-space-around-center,.layout-align-lg-space-around-end,.layout-align-lg-space-around-start,.layout-align-lg-space-around-stretch{justify-content:space-around}.layout-align-lg-space-between,.layout-align-lg-space-between-center,.layout-align-lg-space-between-end,.layout-align-lg-space-between-start,.layout-align-lg-space-between-stretch{justify-content:space-between}.layout-align-lg-center-start,.layout-align-lg-end-start,.layout-align-lg-space-around-start,.layout-align-lg-space-between-start,.layout-align-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-lg-center-center,.layout-align-lg-end-center,.layout-align-lg-space-around-center,.layout-align-lg-space-between-center,.layout-align-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-lg-center-center>*,.layout-align-lg-end-center>*,.layout-align-lg-space-around-center>*,.layout-align-lg-space-between-center>*,.layout-align-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-lg-center-end,.layout-align-lg-end-end,.layout-align-lg-space-around-end,.layout-align-lg-space-between-end,.layout-align-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-lg-center-stretch,.layout-align-lg-end-stretch,.layout-align-lg-space-around-stretch,.layout-align-lg-space-between-stretch,.layout-align-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-lg{flex:1;box-sizing:border-box}.flex-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-lg-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex{min-width:0}.layout-lg-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-lg-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-column>.flex{min-height:0}.layout-lg,.layout-lg-column,.layout-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-lg-column{flex-direction:column}.layout-lg-row{flex-direction:row}}@media (min-width:1920px){.flex-order-gt-lg--20{order:-20}.flex-order-gt-lg--19{order:-19}.flex-order-gt-lg--18{order:-18}.flex-order-gt-lg--17{order:-17}.flex-order-gt-lg--16{order:-16}.flex-order-gt-lg--15{order:-15}.flex-order-gt-lg--14{order:-14}.flex-order-gt-lg--13{order:-13}.flex-order-gt-lg--12{order:-12}.flex-order-gt-lg--11{order:-11}.flex-order-gt-lg--10{order:-10}.flex-order-gt-lg--9{order:-9}.flex-order-gt-lg--8{order:-8}.flex-order-gt-lg--7{order:-7}.flex-order-gt-lg--6{order:-6}.flex-order-gt-lg--5{order:-5}.flex-order-gt-lg--4{order:-4}.flex-order-gt-lg--3{order:-3}.flex-order-gt-lg--2{order:-2}.flex-order-gt-lg--1{order:-1}.flex-order-gt-lg-0{order:0}.flex-order-gt-lg-1{order:1}.flex-order-gt-lg-2{order:2}.flex-order-gt-lg-3{order:3}.flex-order-gt-lg-4{order:4}.flex-order-gt-lg-5{order:5}.flex-order-gt-lg-6{order:6}.flex-order-gt-lg-7{order:7}.flex-order-gt-lg-8{order:8}.flex-order-gt-lg-9{order:9}.flex-order-gt-lg-10{order:10}.flex-order-gt-lg-11{order:11}.flex-order-gt-lg-12{order:12}.flex-order-gt-lg-13{order:13}.flex-order-gt-lg-14{order:14}.flex-order-gt-lg-15{order:15}.flex-order-gt-lg-16{order:16}.flex-order-gt-lg-17{order:17}.flex-order-gt-lg-18{order:18}.flex-order-gt-lg-19{order:19}.flex-order-gt-lg-20{order:20}.flex-offset-gt-lg-0,.offset-gt-lg-0{margin-left:0}[dir=rtl] .flex-offset-gt-lg-0,[dir=rtl] .offset-gt-lg-0{margin-left:auto;margin-right:0}.flex-offset-gt-lg-5,.offset-gt-lg-5{margin-left:5%}[dir=rtl] .flex-offset-gt-lg-5,[dir=rtl] .offset-gt-lg-5{margin-left:auto;margin-right:5%}.flex-offset-gt-lg-10,.offset-gt-lg-10{margin-left:10%}[dir=rtl] .flex-offset-gt-lg-10,[dir=rtl] .offset-gt-lg-10{margin-left:auto;margin-right:10%}.flex-offset-gt-lg-15,.offset-gt-lg-15{margin-left:15%}[dir=rtl] .flex-offset-gt-lg-15,[dir=rtl] .offset-gt-lg-15{margin-left:auto;margin-right:15%}.flex-offset-gt-lg-20,.offset-gt-lg-20{margin-left:20%}[dir=rtl] .flex-offset-gt-lg-20,[dir=rtl] .offset-gt-lg-20{margin-left:auto;margin-right:20%}.flex-offset-gt-lg-25,.offset-gt-lg-25{margin-left:25%}[dir=rtl] .flex-offset-gt-lg-25,[dir=rtl] .offset-gt-lg-25{margin-left:auto;margin-right:25%}.flex-offset-gt-lg-30,.offset-gt-lg-30{margin-left:30%}[dir=rtl] .flex-offset-gt-lg-30,[dir=rtl] .offset-gt-lg-30{margin-left:auto;margin-right:30%}.flex-offset-gt-lg-35,.offset-gt-lg-35{margin-left:35%}[dir=rtl] .flex-offset-gt-lg-35,[dir=rtl] .offset-gt-lg-35{margin-left:auto;margin-right:35%}.flex-offset-gt-lg-40,.offset-gt-lg-40{margin-left:40%}[dir=rtl] .flex-offset-gt-lg-40,[dir=rtl] .offset-gt-lg-40{margin-left:auto;margin-right:40%}.flex-offset-gt-lg-45,.offset-gt-lg-45{margin-left:45%}[dir=rtl] .flex-offset-gt-lg-45,[dir=rtl] .offset-gt-lg-45{margin-left:auto;margin-right:45%}.flex-offset-gt-lg-50,.offset-gt-lg-50{margin-left:50%}[dir=rtl] .flex-offset-gt-lg-50,[dir=rtl] .offset-gt-lg-50{margin-left:auto;margin-right:50%}.flex-offset-gt-lg-55,.offset-gt-lg-55{margin-left:55%}[dir=rtl] .flex-offset-gt-lg-55,[dir=rtl] .offset-gt-lg-55{margin-left:auto;margin-right:55%}.flex-offset-gt-lg-60,.offset-gt-lg-60{margin-left:60%}[dir=rtl] .flex-offset-gt-lg-60,[dir=rtl] .offset-gt-lg-60{margin-left:auto;margin-right:60%}.flex-offset-gt-lg-65,.offset-gt-lg-65{margin-left:65%}[dir=rtl] .flex-offset-gt-lg-65,[dir=rtl] .offset-gt-lg-65{margin-left:auto;margin-right:65%}.flex-offset-gt-lg-70,.offset-gt-lg-70{margin-left:70%}[dir=rtl] .flex-offset-gt-lg-70,[dir=rtl] .offset-gt-lg-70{margin-left:auto;margin-right:70%}.flex-offset-gt-lg-75,.offset-gt-lg-75{margin-left:75%}[dir=rtl] .flex-offset-gt-lg-75,[dir=rtl] .offset-gt-lg-75{margin-left:auto;margin-right:75%}.flex-offset-gt-lg-80,.offset-gt-lg-80{margin-left:80%}[dir=rtl] .flex-offset-gt-lg-80,[dir=rtl] .offset-gt-lg-80{margin-left:auto;margin-right:80%}.flex-offset-gt-lg-85,.offset-gt-lg-85{margin-left:85%}[dir=rtl] .flex-offset-gt-lg-85,[dir=rtl] .offset-gt-lg-85{margin-left:auto;margin-right:85%}.flex-offset-gt-lg-90,.offset-gt-lg-90{margin-left:90%}[dir=rtl] .flex-offset-gt-lg-90,[dir=rtl] .offset-gt-lg-90{margin-left:auto;margin-right:90%}.flex-offset-gt-lg-95,.offset-gt-lg-95{margin-left:95%}[dir=rtl] .flex-offset-gt-lg-95,[dir=rtl] .offset-gt-lg-95{margin-left:auto;margin-right:95%}.flex-offset-gt-lg-33,.offset-gt-lg-33{margin-left:calc(100% / 3)}.flex-offset-gt-lg-66,.offset-gt-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-lg-66,[dir=rtl] .offset-gt-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-lg,.layout-align-gt-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-lg-start,.layout-align-gt-lg-start-center,.layout-align-gt-lg-start-end,.layout-align-gt-lg-start-start,.layout-align-gt-lg-start-stretch{justify-content:flex-start}.layout-align-gt-lg-center,.layout-align-gt-lg-center-center,.layout-align-gt-lg-center-end,.layout-align-gt-lg-center-start,.layout-align-gt-lg-center-stretch{justify-content:center}.layout-align-gt-lg-end,.layout-align-gt-lg-end-center,.layout-align-gt-lg-end-end,.layout-align-gt-lg-end-start,.layout-align-gt-lg-end-stretch{justify-content:flex-end}.layout-align-gt-lg-space-around,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-around-stretch{justify-content:space-around}.layout-align-gt-lg-space-between,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-space-between-stretch{justify-content:space-between}.layout-align-gt-lg-center-start,.layout-align-gt-lg-end-start,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-lg-center-center,.layout-align-gt-lg-end-center,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-lg-center-center>*,.layout-align-gt-lg-end-center>*,.layout-align-gt-lg-space-around-center>*,.layout-align-gt-lg-space-between-center>*,.layout-align-gt-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-lg-center-end,.layout-align-gt-lg-end-end,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-lg-center-stretch,.layout-align-gt-lg-end-stretch,.layout-align-gt-lg-space-around-stretch,.layout-align-gt-lg-space-between-stretch,.layout-align-gt-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-lg{flex:1;box-sizing:border-box}.flex-gt-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-lg-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex{min-width:0}.layout-gt-lg-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-column>.flex{min-height:0}.layout-gt-lg,.layout-gt-lg-column,.layout-gt-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-lg-column{flex-direction:column}.layout-gt-lg-row{flex-direction:row}.flex-order-xl--20{order:-20}.flex-order-xl--19{order:-19}.flex-order-xl--18{order:-18}.flex-order-xl--17{order:-17}.flex-order-xl--16{order:-16}.flex-order-xl--15{order:-15}.flex-order-xl--14{order:-14}.flex-order-xl--13{order:-13}.flex-order-xl--12{order:-12}.flex-order-xl--11{order:-11}.flex-order-xl--10{order:-10}.flex-order-xl--9{order:-9}.flex-order-xl--8{order:-8}.flex-order-xl--7{order:-7}.flex-order-xl--6{order:-6}.flex-order-xl--5{order:-5}.flex-order-xl--4{order:-4}.flex-order-xl--3{order:-3}.flex-order-xl--2{order:-2}.flex-order-xl--1{order:-1}.flex-order-xl-0{order:0}.flex-order-xl-1{order:1}.flex-order-xl-2{order:2}.flex-order-xl-3{order:3}.flex-order-xl-4{order:4}.flex-order-xl-5{order:5}.flex-order-xl-6{order:6}.flex-order-xl-7{order:7}.flex-order-xl-8{order:8}.flex-order-xl-9{order:9}.flex-order-xl-10{order:10}.flex-order-xl-11{order:11}.flex-order-xl-12{order:12}.flex-order-xl-13{order:13}.flex-order-xl-14{order:14}.flex-order-xl-15{order:15}.flex-order-xl-16{order:16}.flex-order-xl-17{order:17}.flex-order-xl-18{order:18}.flex-order-xl-19{order:19}.flex-order-xl-20{order:20}.flex-offset-xl-0,.offset-xl-0{margin-left:0}[dir=rtl] .flex-offset-xl-0,[dir=rtl] .offset-xl-0{margin-left:auto;margin-right:0}.flex-offset-xl-5,.offset-xl-5{margin-left:5%}[dir=rtl] .flex-offset-xl-5,[dir=rtl] .offset-xl-5{margin-left:auto;margin-right:5%}.flex-offset-xl-10,.offset-xl-10{margin-left:10%}[dir=rtl] .flex-offset-xl-10,[dir=rtl] .offset-xl-10{margin-left:auto;margin-right:10%}.flex-offset-xl-15,.offset-xl-15{margin-left:15%}[dir=rtl] .flex-offset-xl-15,[dir=rtl] .offset-xl-15{margin-left:auto;margin-right:15%}.flex-offset-xl-20,.offset-xl-20{margin-left:20%}[dir=rtl] .flex-offset-xl-20,[dir=rtl] .offset-xl-20{margin-left:auto;margin-right:20%}.flex-offset-xl-25,.offset-xl-25{margin-left:25%}[dir=rtl] .flex-offset-xl-25,[dir=rtl] .offset-xl-25{margin-left:auto;margin-right:25%}.flex-offset-xl-30,.offset-xl-30{margin-left:30%}[dir=rtl] .flex-offset-xl-30,[dir=rtl] .offset-xl-30{margin-left:auto;margin-right:30%}.flex-offset-xl-35,.offset-xl-35{margin-left:35%}[dir=rtl] .flex-offset-xl-35,[dir=rtl] .offset-xl-35{margin-left:auto;margin-right:35%}.flex-offset-xl-40,.offset-xl-40{margin-left:40%}[dir=rtl] .flex-offset-xl-40,[dir=rtl] .offset-xl-40{margin-left:auto;margin-right:40%}.flex-offset-xl-45,.offset-xl-45{margin-left:45%}[dir=rtl] .flex-offset-xl-45,[dir=rtl] .offset-xl-45{margin-left:auto;margin-right:45%}.flex-offset-xl-50,.offset-xl-50{margin-left:50%}[dir=rtl] .flex-offset-xl-50,[dir=rtl] .offset-xl-50{margin-left:auto;margin-right:50%}.flex-offset-xl-55,.offset-xl-55{margin-left:55%}[dir=rtl] .flex-offset-xl-55,[dir=rtl] .offset-xl-55{margin-left:auto;margin-right:55%}.flex-offset-xl-60,.offset-xl-60{margin-left:60%}[dir=rtl] .flex-offset-xl-60,[dir=rtl] .offset-xl-60{margin-left:auto;margin-right:60%}.flex-offset-xl-65,.offset-xl-65{margin-left:65%}[dir=rtl] .flex-offset-xl-65,[dir=rtl] .offset-xl-65{margin-left:auto;margin-right:65%}.flex-offset-xl-70,.offset-xl-70{margin-left:70%}[dir=rtl] .flex-offset-xl-70,[dir=rtl] .offset-xl-70{margin-left:auto;margin-right:70%}.flex-offset-xl-75,.offset-xl-75{margin-left:75%}[dir=rtl] .flex-offset-xl-75,[dir=rtl] .offset-xl-75{margin-left:auto;margin-right:75%}.flex-offset-xl-80,.offset-xl-80{margin-left:80%}[dir=rtl] .flex-offset-xl-80,[dir=rtl] .offset-xl-80{margin-left:auto;margin-right:80%}.flex-offset-xl-85,.offset-xl-85{margin-left:85%}[dir=rtl] .flex-offset-xl-85,[dir=rtl] .offset-xl-85{margin-left:auto;margin-right:85%}.flex-offset-xl-90,.offset-xl-90{margin-left:90%}[dir=rtl] .flex-offset-xl-90,[dir=rtl] .offset-xl-90{margin-left:auto;margin-right:90%}.flex-offset-xl-95,.offset-xl-95{margin-left:95%}[dir=rtl] .flex-offset-xl-95,[dir=rtl] .offset-xl-95{margin-left:auto;margin-right:95%}.flex-offset-xl-33,.offset-xl-33{margin-left:calc(100% / 3)}.flex-offset-xl-66,.offset-xl-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xl-66,[dir=rtl] .offset-xl-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xl,.layout-align-xl-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xl-start,.layout-align-xl-start-center,.layout-align-xl-start-end,.layout-align-xl-start-start,.layout-align-xl-start-stretch{justify-content:flex-start}.layout-align-xl-center,.layout-align-xl-center-center,.layout-align-xl-center-end,.layout-align-xl-center-start,.layout-align-xl-center-stretch{justify-content:center}.layout-align-xl-end,.layout-align-xl-end-center,.layout-align-xl-end-end,.layout-align-xl-end-start,.layout-align-xl-end-stretch{justify-content:flex-end}.layout-align-xl-space-around,.layout-align-xl-space-around-center,.layout-align-xl-space-around-end,.layout-align-xl-space-around-start,.layout-align-xl-space-around-stretch{justify-content:space-around}.layout-align-xl-space-between,.layout-align-xl-space-between-center,.layout-align-xl-space-between-end,.layout-align-xl-space-between-start,.layout-align-xl-space-between-stretch{justify-content:space-between}.layout-align-xl-center-start,.layout-align-xl-end-start,.layout-align-xl-space-around-start,.layout-align-xl-space-between-start,.layout-align-xl-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xl-center-center,.layout-align-xl-end-center,.layout-align-xl-space-around-center,.layout-align-xl-space-between-center,.layout-align-xl-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xl-center-center>*,.layout-align-xl-end-center>*,.layout-align-xl-space-around-center>*,.layout-align-xl-space-between-center>*,.layout-align-xl-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xl-center-end,.layout-align-xl-end-end,.layout-align-xl-space-around-end,.layout-align-xl-space-between-end,.layout-align-xl-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xl-center-stretch,.layout-align-xl-end-stretch,.layout-align-xl-space-around-stretch,.layout-align-xl-space-between-stretch,.layout-align-xl-start-stretch{align-items:stretch;align-content:stretch}.flex-xl{flex:1;box-sizing:border-box}.flex-xl-grow{flex:1 1 100%;box-sizing:border-box}.flex-xl-initial{flex:0 1 auto;box-sizing:border-box}.flex-xl-auto{flex:1 1 auto;box-sizing:border-box}.flex-xl-none{flex:0 0 auto;box-sizing:border-box}.flex-xl-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xl-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xl-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex{min-width:0}.layout-xl-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xl-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-column>.flex{min-height:0}.layout-xl,.layout-xl-column,.layout-xl-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xl-column{flex-direction:column}.layout-xl-row{flex-direction:row}.hide-gt-lg:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show){display:none}.hide-xl:not(.show-xl):not(.show-gt-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}}@media print{.hide-print:not(.show-print):not(.show){display:none!important}}*{text-rendering:optimizeLegibility;-o-text-rendering:optimizeLegibility;-ms-text-rendering:optimizeLegibility;-moz-text-rendering:optimizeLegibility;-webkit-text-rendering:optimizeLegibility;-webkit-tap-highlight-color:transparent;box-sizing:border-box}:after,:before{box-sizing:border-box}:focus{outline:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=email],:not(md-input-container)>input[type=image],:not(md-input-container)>input[type=password],:not(md-input-container)>input[type=search],:not(md-input-container)>input[type=submit],:not(md-input-container)>input[type=tel],:not(md-input-container)>input[type=text],:not(md-input-container)>textarea{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;border:none;padding:0;margin:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=submit]{background:0 0}button{border-radius:0;font-family:inherit;font-size:inherit;padding:0;margin:0;appearance:none;-moz-appearance:none;-webkit-appearance:none}[layout]>*{min-height:auto;min-height:initial}md-card>:not(md-card-content) img,md-card>img{height:inherit;height:initial}.md-datepicker-calendar-pane *{box-sizing:initial}md-autocomplete-wrap>input[type=search]{background:#fff;padding:0 15px!important}md-backdrop.md-opaque{background-color:rgba(33,33,33,.48)!important}md-card md-card-header md-card-avatar md-icon{width:40px;height:40px}md-checkbox.no-label{margin:0}md-chip .md-chip-remove md-icon{margin-left:2px}md-chip .md-chip-remove md-icon svg{width:18px;height:18px;max-width:18px;max-height:18px;margin:4px}md-datepicker .md-datepicker-button{padding:0!important;margin:0!important;vertical-align:middle}md-datepicker .md-datepicker-input-container{margin-left:0}.md-inline-form md-datepicker{margin-top:14px}md-dialog md-dialog-content{padding:32px 24px 24px 24px}md-dialog md-dialog-actions{min-height:64px;padding-top:8px;padding-bottom:8px}md-dialog md-dialog-actions .md-button{margin:0 8px}md-input-container.no-errors-spacer .md-errors-spacer{display:none}md-input-container .input-hint{position:absolute;right:auto;bottom:7px;left:2px;font-size:12px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-input-container.md-icon-left .input-hint{left:38px}md-list-item .md-list-item-text p{font-size:13px!important}.md-menu,md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense{padding:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item{height:40px;line-height:40px}md-menu-content.md-menu-bar-menu.md-dense .md-button.md-indent>md-icon,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{top:8px}.md-open-menu-container md-menu-content md-menu-item.selected{opacity:.4}md-menu-content md-menu-item .md-button{text-align:left}md-select.simplified{margin:0 8px}md-select.simplified .md-select-value{border:none!important;box-sizing:border-box;padding:0}md-select.simplified .md-select-value :first-child{transform:none;height:auto}md-select.simplified .md-select-value .md-select-icon{transform:none;font-size:16px}md-select.simplified .md-select-value .md-select-icon:after{top:1px}md-select[multiple] md-select-value>:first-child{display:flex}md-select[multiple] md-select-value>:first-child>:first-child{flex:0}md-select[multiple] md-select-value>:first-child .md-container{padding-right:6px}md-select[multiple] md-select-value>:first-child .md-container:first-of-type{padding-right:0}md-select-menu md-select-header{position:relative;display:flex;align-items:center;width:auto;height:48px;padding-left:10.667px;box-shadow:0 1px 0 0 rgba(0,0,0,.1),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);cursor:pointer}md-select-menu md-select-header input[type=search]{border:none;outline:0;height:100%;width:100%;padding:0}md-sidenav{-webkit-overflow-scrolling:touch}md-toolbar.colored-toolbar{color:rgba(255,255,255,.87)}md-toolbar.colored-toolbar md-menu-bar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar input{color:rgba(255,255,255,.87)!important}md-progress-circular[disabled]{visibility:hidden}body,html{overflow:hidden!important}#main{position:absolute;top:0;right:0;bottom:0;left:0}body.boxed{background:#3f4450}body.boxed #main{overflow:hidden!important;width:100%;max-width:1280px;margin:0 auto;box-shadow:0 0 12px rgba(0,0,0,.45)}#layout-content-only{position:relative;height:100%;max-height:100%}#layout-content-only #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-content-with-toolbar{position:relative;height:100%;max-height:100%}#layout-content-with-toolbar #content{position:absolute;top:64px;right:0;bottom:0;left:0}#layout-vertical-navigation{height:100%;max-height:100%}#layout-vertical-navigation #content-container{position:relative;overflow:hidden}#layout-vertical-navigation #content-container #content{position:absolute;top:64px;right:0;bottom:0;left:0}#layout-vertical-navigation-fullwidth-toolbar{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-vertical-navigation-fullwidth-toolbar-2{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-horizontal-navigation{height:100%;max-height:100%}#layout-horizontal-navigation #content-container{position:relative;overflow:hidden}#layout-horizontal-navigation #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}.page-layout{position:relative;overflow:hidden}.page-layout .top-bg{position:absolute;z-index:1;top:0;right:0;left:0;height:200px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout md-backdrop{z-index:50}.page-layout>.header .breadcrumb{margin-bottom:16px;font-weight:500;color:rgba(0,0,0,.54)}.page-layout>.header .breadcrumb md-icon{margin:0}.page-layout>.header .breadcrumb .separator{margin:0 8px}.page-layout>.header .title{font-size:34px}.page-layout.carded{min-height:100%;height:100%}.page-layout.carded.fullwidth.single-scroll{height:auto}.page-layout.carded.fullwidth.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.fullwidth>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.fullwidth>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.fullwidth>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.fullwidth>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.fullwidth>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.left-sidenav.single-scroll{height:auto}.page-layout.carded.left-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.left-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px}.page-layout.carded.left-sidenav>.sidenav .content{background:0 0;padding:24px}.page-layout.carded.left-sidenav>.sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.left-sidenav>.sidenav.md-locked-open+.center{margin-left:0}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .header{border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden}.page-layout.carded.left-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.left-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.left-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.left-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 8px 0 0!important;padding:0!important;border-radius:0}.page-layout.carded.left-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.right-sidenav.single-scroll{height:auto}.page-layout.carded.right-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.right-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.right-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav .content{background:0 0;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav.md-locked-open{width:196px;min-width:196px;max-width:196px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .header{padding:24px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden;padding:24px}.page-layout.carded.right-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.right-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.right-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.right-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 0 0 8px!important;padding:0!important;border-radius:0}.page-layout.carded.right-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.simple.fullwidth,.page-layout.simple.inner-sidenav{min-height:100%}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.fullwidth>.content,.page-layout.simple.inner-sidenav>.content{padding:24px}.page-layout.simple.left-sidenav{min-height:100%;height:100%}.page-layout.simple.left-sidenav.single-scroll{height:auto}.page-layout.simple.left-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.left-sidenav.inner-sidenav>.content>md-sidenav{margin-right:24px}.page-layout.simple.left-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.left-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.left-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.right-sidenav{min-height:100%;height:100%}.page-layout.simple.right-sidenav.single-scroll{height:auto}.page-layout.simple.right-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.right-sidenav.inner-sidenav>.content>md-sidenav{margin-left:24px}.page-layout.simple.right-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.right-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.right-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.inner-sidenav{height:auto}.page-layout.simple.inner-sidenav>.content>md-sidenav.md-locked-open{padding:0}.page-layout.simple.tabbed{min-height:100%}.page-layout.simple.tabbed>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}.page-layout.simple.tabbed>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-content-wrapper>md-tab-content{padding:24px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);border:none;height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav{margin:0 12px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item{height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button{height:56px;line-height:32px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button-text{text-transform:none}.page-layout.blank{min-height:100%;padding:24px}.single-scroll .carded.fullwidth{height:auto}.single-scroll .carded.fullwidth>.center .content-card .content{overflow:hidden}.single-scroll .carded.left-sidenav{height:auto}.single-scroll .carded.left-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .carded.right-sidenav{height:auto}.single-scroll .carded.right-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .simple.left-sidenav{height:auto}.single-scroll .simple.left-sidenav>.center{overflow:hidden}.single-scroll .simple.right-sidenav{height:auto}.single-scroll .simple.right-sidenav>.center{overflow:hidden}@media screen and (max-width:1280px){.page-layout.simple.inner-sidenav.left-sidenav>.content,.page-layout.simple.inner-sidenav.right-sidenav>.content{height:auto!important}.page-layout.simple.inner-sidenav.left-sidenav>.content>md-sidenav,.page-layout.simple.inner-sidenav.right-sidenav>.content>md-sidenav{margin-left:0;margin-right:0}.sidenav-open .page-layout.simple.inner-sidenav{height:100%}}@media screen and (max-width:600px){.page-layout .top-bg{height:160px}.page-layout.carded.fullwidth>.center,.page-layout.carded.left-sidenav>.center,.page-layout.carded.right-sidenav>.center{margin-left:16px;margin-right:16px}.page-layout.carded.fullwidth>.center .header,.page-layout.carded.left-sidenav>.center .header,.page-layout.carded.right-sidenav>.center .header{height:96px;min-height:96px;max-height:96px;padding:16px}.page-layout.carded.fullwidth{height:auto}.page-layout.carded.fullwidth>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav,.page-layout.carded.right-sidenav{height:auto}.page-layout.carded.left-sidenav>.center .content-card .content,.page-layout.carded.right-sidenav>.center .content-card .content{overflow:hidden}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav>.center .header,.page-layout.simple.right-sidenav>.center .header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav,.page-layout.simple.right-sidenav{height:auto}.page-layout.simple.left-sidenav>.center,.page-layout.simple.right-sidenav>.center{overflow:hidden}}.animate-slide-up{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-up.ng-enter{transform:translateY(100%);opacity:0}.animate-slide-up.ng-enter.ng-enter-active{transition-property:all;transform:translateY(0);opacity:1}.animate-slide-up.ng-leave{transform:translateY(0);opacity:1}.animate-slide-up.ng-leave.ng-leave-active{transition-property:all;transform:translateY(-100%);opacity:0}.animate-slide-up.ng-hide{transform:translateY(-100%);opacity:0}.animate-slide-up.ng-hide-add-active,.animate-slide-up.ng-hide-remove-active{transition-property:all}.animate-slide-down{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-down.ng-enter{transform:translateY(-100%);opacity:0}.animate-slide-down.ng-enter.ng-enter-active{transition-property:all;transform:translateY(0);opacity:1}.animate-slide-down.ng-leave{transform:translateY(0);opacity:1}.animate-slide-down.ng-leave.ng-leave-active{transition-property:all;transform:translateY(100%);opacity:0}.animate-slide-down.ng-hide{transform:translateY(-100%);opacity:0}.animate-slide-down.ng-hide-add-active,.animate-slide-down.ng-hide-remove-active{transition-property:all}.animate-slide-left{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-left.ng-enter{transform:translateX(100%);opacity:0}.animate-slide-left.ng-enter.ng-enter-active{transition-property:all;transform:translateX(0);opacity:1}.animate-slide-left.ng-leave{transform:translateX(0);opacity:1}.animate-slide-left.ng-leave.ng-leave-active{transition-property:all;transform:translateX(-100%);opacity:0}.animate-slide-left.ng-hide{transform:translateX(-100%);opacity:0}.animate-slide-left.ng-hide-add-active,.animate-slide-left.ng-hide-remove-active{transition-property:all}.animate-slide-right{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-slide-right.ng-enter{transform:translateX(-100%);opacity:0}.animate-slide-right.ng-enter.ng-enter-active{transition-property:all;transform:translateX(0);opacity:1}.animate-slide-right.ng-leave{transform:translateX(0);opacity:1}.animate-slide-right.ng-leave.ng-leave-active{transition-property:all;transform:translateX(100%);opacity:0}.animate-slide-right.ng-hide{transform:translateX(100%);opacity:0}.animate-slide-right.ng-hide-add-active,.animate-slide-right.ng-hide-remove-active{transition-property:all}.animate-fade-in-out{-webkit-backface-visibility:hidden;-webkit-perspective:1000px;transition-property:none;transition-duration:.4s;transition-timing-function:cubic-bezier(.25,.46,.45,.94);opacity:1}.animate-fade-in-out.ng-enter{opacity:0}.animate-fade-in-out.ng-enter.ng-enter-active{transition-property:all;opacity:1}.animate-fade-in-out.ng-leave{opacity:1}.animate-fade-in-out.ng-leave.ng-leave-active{transition-property:all;opacity:0}.animate-fade-in-out.ng-hide{opacity:0}.animate-fade-in-out.ng-hide-add-active,.animate-fade-in-out.ng-hide-remove-active{transition-property:all}@keyframes slide-in-left{0%{opacity:0;transform:translateX(-500px)}65%{opacity:1;transform:translateX(0)}100%{transform:translateX(0)}}@keyframes slide-in-right{0%{opacity:0;transform:translateX(500px)}65%{opacity:1;transform:translateX(0)}100%{transform:translateX(0)}}@keyframes slide-in-bottom{0%{opacity:0;transform:translateY(200px)}65%{opacity:1;transform:translateY(0)}100%{transform:translateY(0)}}.animate-rotate{animation:rotate 1.75s linear infinite}@keyframes rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.black-fg,.black-text{color:rgba(0,0,0,.87)!important}.black-fg .icon,.black-fg .secondary-text,.black-fg.icon,.black-fg.secondary-text,.black-text .icon,.black-text .secondary-text,.black-text.icon,.black-text.secondary-text{color:rgba(0,0,0,.54)!important}.black-fg .disabled-text,.black-fg .hint-text,.black-fg.disabled-text,.black-fg.hint-text,.black-text .disabled-text,.black-text .hint-text,.black-text.disabled-text,.black-text.hint-text{color:rgba(0,0,0,.26)!important}.black-fg .divider,.black-fg .faint-text,.black-fg.divider,.black-fg.faint-text,.black-text .divider,.black-text .faint-text,.black-text.divider,.black-text.faint-text{color:rgba(0,0,0,.12)!important}.white-fg,.white-text{color:#fff!important}.white-fg .icon,.white-fg .secondary-text,.white-fg.icon,.white-fg.secondary-text,.white-text .icon,.white-text .secondary-text,.white-text.icon,.white-text.secondary-text{color:rgba(255,255,255,.7)!important}.white-fg .disabled-text,.white-fg .hint-text,.white-fg.disabled-text,.white-fg.hint-text,.white-text .disabled-text,.white-text .hint-text,.white-text.disabled-text,.white-text.hint-text{color:rgba(255,255,255,.3)!important}.white-fg .divider,.white-fg .faint-text,.white-fg.divider,.white-fg.faint-text,.white-text .divider,.white-text .faint-text,.white-text.divider,.white-text.faint-text{color:rgba(255,255,255,.12)!important}.white-fg md-icon,.white-text md-icon{color:#fff}.white-fg md-progress-linear .md-container,.white-text md-progress-linear .md-container{background:rgba(255,255,255,.3)}.white-fg md-progress-linear .md-bar,.white-text md-progress-linear .md-bar{background:rgba(255,255,255,.7)}.red-50-bg{background-color:#ffebee!important}.md-red-50-bg{background-color:#ffebee!important;color:rgba(0,0,0,.87)}.red-50-fg{color:#ffebee!important}.red-50-border{border-color:#ffebee!important}.red-50-border-top{border-top-color:#ffebee!important}.red-50-border-right{border-right-color:#ffebee!important}.red-50-border-bottom{border-bottom-color:#ffebee!important}.red-50-border-left{border-left-color:#ffebee!important}.red-100-bg{background-color:#ffcdd2!important}.md-red-100-bg{background-color:#ffcdd2!important;color:rgba(0,0,0,.87)}.red-100-fg{color:#ffcdd2!important}.red-100-border{border-color:#ffcdd2!important}.red-100-border-top{border-top-color:#ffcdd2!important}.red-100-border-right{border-right-color:#ffcdd2!important}.red-100-border-bottom{border-bottom-color:#ffcdd2!important}.red-100-border-left{border-left-color:#ffcdd2!important}.red-200-bg{background-color:#ef9a9a!important}.md-red-200-bg{background-color:#ef9a9a!important;color:rgba(0,0,0,.87)}.red-200-fg{color:#ef9a9a!important}.red-200-border{border-color:#ef9a9a!important}.red-200-border-top{border-top-color:#ef9a9a!important}.red-200-border-right{border-right-color:#ef9a9a!important}.red-200-border-bottom{border-bottom-color:#ef9a9a!important}.red-200-border-left{border-left-color:#ef9a9a!important}.red-300-bg{background-color:#e57373!important}.md-red-300-bg{background-color:#e57373!important;color:rgba(0,0,0,.87)}.red-300-fg{color:#e57373!important}.red-300-border{border-color:#e57373!important}.red-300-border-top{border-top-color:#e57373!important}.red-300-border-right{border-right-color:#e57373!important}.red-300-border-bottom{border-bottom-color:#e57373!important}.red-300-border-left{border-left-color:#e57373!important}.red-400-bg{background-color:#ef5350!important}.md-red-400-bg{background-color:#ef5350!important;color:#fff}.red-400-fg{color:#ef5350!important}.red-400-border{border-color:#ef5350!important}.red-400-border-top{border-top-color:#ef5350!important}.red-400-border-right{border-right-color:#ef5350!important}.red-400-border-bottom{border-bottom-color:#ef5350!important}.red-400-border-left{border-left-color:#ef5350!important}.red-500-bg{background-color:#f44336!important}.md-red-500-bg{background-color:#f44336!important;color:#fff}.red-500-fg{color:#f44336!important}.red-500-border{border-color:#f44336!important}.red-500-border-top{border-top-color:#f44336!important}.red-500-border-right{border-right-color:#f44336!important}.red-500-border-bottom{border-bottom-color:#f44336!important}.red-500-border-left{border-left-color:#f44336!important}.md-red-bg{background-color:#f44336!important;color:#fff}.red-bg{background-color:#f44336!important}.red-fg{color:#f44336!important}.red-border{border-color:#f44336!important}.red-border-top{border-top-color:#f44336!important}.red-border-right{border-right-color:#f44336!important}.red-border-bottom{border-bottom-color:#f44336!important}.red-border-left{border-left-color:#f44336!important}.red-600-bg{background-color:#e53935!important}.md-red-600-bg{background-color:#e53935!important;color:#fff}.red-600-fg{color:#e53935!important}.red-600-border{border-color:#e53935!important}.red-600-border-top{border-top-color:#e53935!important}.red-600-border-right{border-right-color:#e53935!important}.red-600-border-bottom{border-bottom-color:#e53935!important}.red-600-border-left{border-left-color:#e53935!important}.red-700-bg{background-color:#d32f2f!important}.md-red-700-bg{background-color:#d32f2f!important;color:#fff}.red-700-fg{color:#d32f2f!important}.red-700-border{border-color:#d32f2f!important}.red-700-border-top{border-top-color:#d32f2f!important}.red-700-border-right{border-right-color:#d32f2f!important}.red-700-border-bottom{border-bottom-color:#d32f2f!important}.red-700-border-left{border-left-color:#d32f2f!important}.red-800-bg{background-color:#c62828!important}.md-red-800-bg{background-color:#c62828!important;color:rgba(255,255,255,.87)}.red-800-fg{color:#c62828!important}.red-800-border{border-color:#c62828!important}.red-800-border-top{border-top-color:#c62828!important}.red-800-border-right{border-right-color:#c62828!important}.red-800-border-bottom{border-bottom-color:#c62828!important}.red-800-border-left{border-left-color:#c62828!important}.red-900-bg{background-color:#b71c1c!important}.md-red-900-bg{background-color:#b71c1c!important;color:rgba(255,255,255,.87)}.red-900-fg{color:#b71c1c!important}.red-900-border{border-color:#b71c1c!important}.red-900-border-top{border-top-color:#b71c1c!important}.red-900-border-right{border-right-color:#b71c1c!important}.red-900-border-bottom{border-bottom-color:#b71c1c!important}.red-900-border-left{border-left-color:#b71c1c!important}.red-A100-bg{background-color:#ff8a80!important}.md-red-A100-bg{background-color:#ff8a80!important;color:rgba(0,0,0,.87)}.red-A100-fg{color:#ff8a80!important}.red-A100-border{border-color:#ff8a80!important}.red-A100-border-top{border-top-color:#ff8a80!important}.red-A100-border-right{border-right-color:#ff8a80!important}.red-A100-border-bottom{border-bottom-color:#ff8a80!important}.red-A100-border-left{border-left-color:#ff8a80!important}.red-A200-bg{background-color:#ff5252!important}.md-red-A200-bg{background-color:#ff5252!important;color:#fff}.red-A200-fg{color:#ff5252!important}.red-A200-border{border-color:#ff5252!important}.red-A200-border-top{border-top-color:#ff5252!important}.red-A200-border-right{border-right-color:#ff5252!important}.red-A200-border-bottom{border-bottom-color:#ff5252!important}.red-A200-border-left{border-left-color:#ff5252!important}.red-A400-bg{background-color:#ff1744!important}.md-red-A400-bg{background-color:#ff1744!important;color:#fff}.red-A400-fg{color:#ff1744!important}.red-A400-border{border-color:#ff1744!important}.red-A400-border-top{border-top-color:#ff1744!important}.red-A400-border-right{border-right-color:#ff1744!important}.red-A400-border-bottom{border-bottom-color:#ff1744!important}.red-A400-border-left{border-left-color:#ff1744!important}.red-A700-bg{background-color:#d50000!important}.md-red-A700-bg{background-color:#d50000!important;color:#fff}.red-A700-fg{color:#d50000!important}.red-A700-border{border-color:#d50000!important}.red-A700-border-top{border-top-color:#d50000!important}.red-A700-border-right{border-right-color:#d50000!important}.red-A700-border-bottom{border-bottom-color:#d50000!important}.red-A700-border-left{border-left-color:#d50000!important}.pink-50-bg{background-color:#fce4ec!important}.md-pink-50-bg{background-color:#fce4ec!important;color:rgba(0,0,0,.87)}.pink-50-fg{color:#fce4ec!important}.pink-50-border{border-color:#fce4ec!important}.pink-50-border-top{border-top-color:#fce4ec!important}.pink-50-border-right{border-right-color:#fce4ec!important}.pink-50-border-bottom{border-bottom-color:#fce4ec!important}.pink-50-border-left{border-left-color:#fce4ec!important}.pink-100-bg{background-color:#f8bbd0!important}.md-pink-100-bg{background-color:#f8bbd0!important;color:rgba(0,0,0,.87)}.pink-100-fg{color:#f8bbd0!important}.pink-100-border{border-color:#f8bbd0!important}.pink-100-border-top{border-top-color:#f8bbd0!important}.pink-100-border-right{border-right-color:#f8bbd0!important}.pink-100-border-bottom{border-bottom-color:#f8bbd0!important}.pink-100-border-left{border-left-color:#f8bbd0!important}.pink-200-bg{background-color:#f48fb1!important}.md-pink-200-bg{background-color:#f48fb1!important;color:rgba(0,0,0,.87)}.pink-200-fg{color:#f48fb1!important}.pink-200-border{border-color:#f48fb1!important}.pink-200-border-top{border-top-color:#f48fb1!important}.pink-200-border-right{border-right-color:#f48fb1!important}.pink-200-border-bottom{border-bottom-color:#f48fb1!important}.pink-200-border-left{border-left-color:#f48fb1!important}.pink-300-bg{background-color:#f06292!important}.md-pink-300-bg{background-color:#f06292!important;color:rgba(255,255,255,.87)}.pink-300-fg{color:#f06292!important}.pink-300-border{border-color:#f06292!important}.pink-300-border-top{border-top-color:#f06292!important}.pink-300-border-right{border-right-color:#f06292!important}.pink-300-border-bottom{border-bottom-color:#f06292!important}.pink-300-border-left{border-left-color:#f06292!important}.pink-400-bg{background-color:#ec407a!important}.md-pink-400-bg{background-color:#ec407a!important;color:rgba(255,255,255,.87)}.pink-400-fg{color:#ec407a!important}.pink-400-border{border-color:#ec407a!important}.pink-400-border-top{border-top-color:#ec407a!important}.pink-400-border-right{border-right-color:#ec407a!important}.pink-400-border-bottom{border-bottom-color:#ec407a!important}.pink-400-border-left{border-left-color:#ec407a!important}.pink-500-bg{background-color:#e91e63!important}.md-pink-500-bg{background-color:#e91e63!important;color:#fff}.pink-500-fg{color:#e91e63!important}.pink-500-border{border-color:#e91e63!important}.pink-500-border-top{border-top-color:#e91e63!important}.pink-500-border-right{border-right-color:#e91e63!important}.pink-500-border-bottom{border-bottom-color:#e91e63!important}.pink-500-border-left{border-left-color:#e91e63!important}.md-pink-bg{background-color:#e91e63!important;color:#fff}.pink-bg{background-color:#e91e63!important}.pink-fg{color:#e91e63!important}.pink-border{border-color:#e91e63!important}.pink-border-top{border-top-color:#e91e63!important}.pink-border-right{border-right-color:#e91e63!important}.pink-border-bottom{border-bottom-color:#e91e63!important}.pink-border-left{border-left-color:#e91e63!important}.pink-600-bg{background-color:#d81b60!important}.md-pink-600-bg{background-color:#d81b60!important;color:#fff}.pink-600-fg{color:#d81b60!important}.pink-600-border{border-color:#d81b60!important}.pink-600-border-top{border-top-color:#d81b60!important}.pink-600-border-right{border-right-color:#d81b60!important}.pink-600-border-bottom{border-bottom-color:#d81b60!important}.pink-600-border-left{border-left-color:#d81b60!important}.pink-700-bg{background-color:#c2185b!important}.md-pink-700-bg{background-color:#c2185b!important;color:rgba(255,255,255,.87)}.pink-700-fg{color:#c2185b!important}.pink-700-border{border-color:#c2185b!important}.pink-700-border-top{border-top-color:#c2185b!important}.pink-700-border-right{border-right-color:#c2185b!important}.pink-700-border-bottom{border-bottom-color:#c2185b!important}.pink-700-border-left{border-left-color:#c2185b!important}.pink-800-bg{background-color:#ad1457!important}.md-pink-800-bg{background-color:#ad1457!important;color:rgba(255,255,255,.87)}.pink-800-fg{color:#ad1457!important}.pink-800-border{border-color:#ad1457!important}.pink-800-border-top{border-top-color:#ad1457!important}.pink-800-border-right{border-right-color:#ad1457!important}.pink-800-border-bottom{border-bottom-color:#ad1457!important}.pink-800-border-left{border-left-color:#ad1457!important}.pink-900-bg{background-color:#880e4f!important}.md-pink-900-bg{background-color:#880e4f!important;color:rgba(255,255,255,.87)}.pink-900-fg{color:#880e4f!important}.pink-900-border{border-color:#880e4f!important}.pink-900-border-top{border-top-color:#880e4f!important}.pink-900-border-right{border-right-color:#880e4f!important}.pink-900-border-bottom{border-bottom-color:#880e4f!important}.pink-900-border-left{border-left-color:#880e4f!important}.pink-A100-bg{background-color:#ff80ab!important}.md-pink-A100-bg{background-color:#ff80ab!important;color:rgba(0,0,0,.87)}.pink-A100-fg{color:#ff80ab!important}.pink-A100-border{border-color:#ff80ab!important}.pink-A100-border-top{border-top-color:#ff80ab!important}.pink-A100-border-right{border-right-color:#ff80ab!important}.pink-A100-border-bottom{border-bottom-color:#ff80ab!important}.pink-A100-border-left{border-left-color:#ff80ab!important}.pink-A200-bg{background-color:#ff4081!important}.md-pink-A200-bg{background-color:#ff4081!important;color:#fff}.pink-A200-fg{color:#ff4081!important}.pink-A200-border{border-color:#ff4081!important}.pink-A200-border-top{border-top-color:#ff4081!important}.pink-A200-border-right{border-right-color:#ff4081!important}.pink-A200-border-bottom{border-bottom-color:#ff4081!important}.pink-A200-border-left{border-left-color:#ff4081!important}.pink-A400-bg{background-color:#f50057!important}.md-pink-A400-bg{background-color:#f50057!important;color:#fff}.pink-A400-fg{color:#f50057!important}.pink-A400-border{border-color:#f50057!important}.pink-A400-border-top{border-top-color:#f50057!important}.pink-A400-border-right{border-right-color:#f50057!important}.pink-A400-border-bottom{border-bottom-color:#f50057!important}.pink-A400-border-left{border-left-color:#f50057!important}.pink-A700-bg{background-color:#c51162!important}.md-pink-A700-bg{background-color:#c51162!important;color:#fff}.pink-A700-fg{color:#c51162!important}.pink-A700-border{border-color:#c51162!important}.pink-A700-border-top{border-top-color:#c51162!important}.pink-A700-border-right{border-right-color:#c51162!important}.pink-A700-border-bottom{border-bottom-color:#c51162!important}.pink-A700-border-left{border-left-color:#c51162!important}.purple-50-bg{background-color:#f3e5f5!important}.md-purple-50-bg{background-color:#f3e5f5!important;color:rgba(0,0,0,.87)}.purple-50-fg{color:#f3e5f5!important}.purple-50-border{border-color:#f3e5f5!important}.purple-50-border-top{border-top-color:#f3e5f5!important}.purple-50-border-right{border-right-color:#f3e5f5!important}.purple-50-border-bottom{border-bottom-color:#f3e5f5!important}.purple-50-border-left{border-left-color:#f3e5f5!important}.purple-100-bg{background-color:#e1bee7!important}.md-purple-100-bg{background-color:#e1bee7!important;color:rgba(0,0,0,.87)}.purple-100-fg{color:#e1bee7!important}.purple-100-border{border-color:#e1bee7!important}.purple-100-border-top{border-top-color:#e1bee7!important}.purple-100-border-right{border-right-color:#e1bee7!important}.purple-100-border-bottom{border-bottom-color:#e1bee7!important}.purple-100-border-left{border-left-color:#e1bee7!important}.purple-200-bg{background-color:#ce93d8!important}.md-purple-200-bg{background-color:#ce93d8!important;color:rgba(0,0,0,.87)}.purple-200-fg{color:#ce93d8!important}.purple-200-border{border-color:#ce93d8!important}.purple-200-border-top{border-top-color:#ce93d8!important}.purple-200-border-right{border-right-color:#ce93d8!important}.purple-200-border-bottom{border-bottom-color:#ce93d8!important}.purple-200-border-left{border-left-color:#ce93d8!important}.purple-300-bg{background-color:#ba68c8!important}.md-purple-300-bg{background-color:#ba68c8!important;color:#fff}.purple-300-fg{color:#ba68c8!important}.purple-300-border{border-color:#ba68c8!important}.purple-300-border-top{border-top-color:#ba68c8!important}.purple-300-border-right{border-right-color:#ba68c8!important}.purple-300-border-bottom{border-bottom-color:#ba68c8!important}.purple-300-border-left{border-left-color:#ba68c8!important}.purple-400-bg{background-color:#ab47bc!important}.md-purple-400-bg{background-color:#ab47bc!important;color:#fff}.purple-400-fg{color:#ab47bc!important}.purple-400-border{border-color:#ab47bc!important}.purple-400-border-top{border-top-color:#ab47bc!important}.purple-400-border-right{border-right-color:#ab47bc!important}.purple-400-border-bottom{border-bottom-color:#ab47bc!important}.purple-400-border-left{border-left-color:#ab47bc!important}.purple-500-bg{background-color:#9c27b0!important}.md-purple-500-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-500-fg{color:#9c27b0!important}.purple-500-border{border-color:#9c27b0!important}.purple-500-border-top{border-top-color:#9c27b0!important}.purple-500-border-right{border-right-color:#9c27b0!important}.purple-500-border-bottom{border-bottom-color:#9c27b0!important}.purple-500-border-left{border-left-color:#9c27b0!important}.md-purple-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-bg{background-color:#9c27b0!important}.purple-fg{color:#9c27b0!important}.purple-border{border-color:#9c27b0!important}.purple-border-top{border-top-color:#9c27b0!important}.purple-border-right{border-right-color:#9c27b0!important}.purple-border-bottom{border-bottom-color:#9c27b0!important}.purple-border-left{border-left-color:#9c27b0!important}.purple-600-bg{background-color:#8e24aa!important}.md-purple-600-bg{background-color:#8e24aa!important;color:rgba(255,255,255,.87)}.purple-600-fg{color:#8e24aa!important}.purple-600-border{border-color:#8e24aa!important}.purple-600-border-top{border-top-color:#8e24aa!important}.purple-600-border-right{border-right-color:#8e24aa!important}.purple-600-border-bottom{border-bottom-color:#8e24aa!important}.purple-600-border-left{border-left-color:#8e24aa!important}.purple-700-bg{background-color:#7b1fa2!important}.md-purple-700-bg{background-color:#7b1fa2!important;color:rgba(255,255,255,.87)}.purple-700-fg{color:#7b1fa2!important}.purple-700-border{border-color:#7b1fa2!important}.purple-700-border-top{border-top-color:#7b1fa2!important}.purple-700-border-right{border-right-color:#7b1fa2!important}.purple-700-border-bottom{border-bottom-color:#7b1fa2!important}.purple-700-border-left{border-left-color:#7b1fa2!important}.purple-800-bg{background-color:#6a1b9a!important}.md-purple-800-bg{background-color:#6a1b9a!important;color:rgba(255,255,255,.87)}.purple-800-fg{color:#6a1b9a!important}.purple-800-border{border-color:#6a1b9a!important}.purple-800-border-top{border-top-color:#6a1b9a!important}.purple-800-border-right{border-right-color:#6a1b9a!important}.purple-800-border-bottom{border-bottom-color:#6a1b9a!important}.purple-800-border-left{border-left-color:#6a1b9a!important}.purple-900-bg{background-color:#4a148c!important}.md-purple-900-bg{background-color:#4a148c!important;color:rgba(255,255,255,.87)}.purple-900-fg{color:#4a148c!important}.purple-900-border{border-color:#4a148c!important}.purple-900-border-top{border-top-color:#4a148c!important}.purple-900-border-right{border-right-color:#4a148c!important}.purple-900-border-bottom{border-bottom-color:#4a148c!important}.purple-900-border-left{border-left-color:#4a148c!important}.purple-A100-bg{background-color:#ea80fc!important}.md-purple-A100-bg{background-color:#ea80fc!important;color:rgba(0,0,0,.87)}.purple-A100-fg{color:#ea80fc!important}.purple-A100-border{border-color:#ea80fc!important}.purple-A100-border-top{border-top-color:#ea80fc!important}.purple-A100-border-right{border-right-color:#ea80fc!important}.purple-A100-border-bottom{border-bottom-color:#ea80fc!important}.purple-A100-border-left{border-left-color:#ea80fc!important}.purple-A200-bg{background-color:#e040fb!important}.md-purple-A200-bg{background-color:#e040fb!important;color:#fff}.purple-A200-fg{color:#e040fb!important}.purple-A200-border{border-color:#e040fb!important}.purple-A200-border-top{border-top-color:#e040fb!important}.purple-A200-border-right{border-right-color:#e040fb!important}.purple-A200-border-bottom{border-bottom-color:#e040fb!important}.purple-A200-border-left{border-left-color:#e040fb!important}.purple-A400-bg{background-color:#d500f9!important}.md-purple-A400-bg{background-color:#d500f9!important;color:#fff}.purple-A400-fg{color:#d500f9!important}.purple-A400-border{border-color:#d500f9!important}.purple-A400-border-top{border-top-color:#d500f9!important}.purple-A400-border-right{border-right-color:#d500f9!important}.purple-A400-border-bottom{border-bottom-color:#d500f9!important}.purple-A400-border-left{border-left-color:#d500f9!important}.purple-A700-bg{background-color:#a0f!important}.md-purple-A700-bg{background-color:#a0f!important;color:#fff}.purple-A700-fg{color:#a0f!important}.purple-A700-border{border-color:#a0f!important}.purple-A700-border-top{border-top-color:#a0f!important}.purple-A700-border-right{border-right-color:#a0f!important}.purple-A700-border-bottom{border-bottom-color:#a0f!important}.purple-A700-border-left{border-left-color:#a0f!important}.deep-purple-50-bg{background-color:#ede7f6!important}.md-deep-purple-50-bg{background-color:#ede7f6!important;color:rgba(0,0,0,.87)}.deep-purple-50-fg{color:#ede7f6!important}.deep-purple-50-border{border-color:#ede7f6!important}.deep-purple-50-border-top{border-top-color:#ede7f6!important}.deep-purple-50-border-right{border-right-color:#ede7f6!important}.deep-purple-50-border-bottom{border-bottom-color:#ede7f6!important}.deep-purple-50-border-left{border-left-color:#ede7f6!important}.deep-purple-100-bg{background-color:#d1c4e9!important}.md-deep-purple-100-bg{background-color:#d1c4e9!important;color:rgba(0,0,0,.87)}.deep-purple-100-fg{color:#d1c4e9!important}.deep-purple-100-border{border-color:#d1c4e9!important}.deep-purple-100-border-top{border-top-color:#d1c4e9!important}.deep-purple-100-border-right{border-right-color:#d1c4e9!important}.deep-purple-100-border-bottom{border-bottom-color:#d1c4e9!important}.deep-purple-100-border-left{border-left-color:#d1c4e9!important}.deep-purple-200-bg{background-color:#b39ddb!important}.md-deep-purple-200-bg{background-color:#b39ddb!important;color:rgba(0,0,0,.87)}.deep-purple-200-fg{color:#b39ddb!important}.deep-purple-200-border{border-color:#b39ddb!important}.deep-purple-200-border-top{border-top-color:#b39ddb!important}.deep-purple-200-border-right{border-right-color:#b39ddb!important}.deep-purple-200-border-bottom{border-bottom-color:#b39ddb!important}.deep-purple-200-border-left{border-left-color:#b39ddb!important}.deep-purple-300-bg{background-color:#9575cd!important}.md-deep-purple-300-bg{background-color:#9575cd!important;color:#fff}.deep-purple-300-fg{color:#9575cd!important}.deep-purple-300-border{border-color:#9575cd!important}.deep-purple-300-border-top{border-top-color:#9575cd!important}.deep-purple-300-border-right{border-right-color:#9575cd!important}.deep-purple-300-border-bottom{border-bottom-color:#9575cd!important}.deep-purple-300-border-left{border-left-color:#9575cd!important}.deep-purple-400-bg{background-color:#7e57c2!important}.md-deep-purple-400-bg{background-color:#7e57c2!important;color:#fff}.deep-purple-400-fg{color:#7e57c2!important}.deep-purple-400-border{border-color:#7e57c2!important}.deep-purple-400-border-top{border-top-color:#7e57c2!important}.deep-purple-400-border-right{border-right-color:#7e57c2!important}.deep-purple-400-border-bottom{border-bottom-color:#7e57c2!important}.deep-purple-400-border-left{border-left-color:#7e57c2!important}.deep-purple-500-bg{background-color:#673ab7!important}.md-deep-purple-500-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-500-fg{color:#673ab7!important}.deep-purple-500-border{border-color:#673ab7!important}.deep-purple-500-border-top{border-top-color:#673ab7!important}.deep-purple-500-border-right{border-right-color:#673ab7!important}.deep-purple-500-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-500-border-left{border-left-color:#673ab7!important}.md-deep-purple-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-bg{background-color:#673ab7!important}.deep-purple-fg{color:#673ab7!important}.deep-purple-border{border-color:#673ab7!important}.deep-purple-border-top{border-top-color:#673ab7!important}.deep-purple-border-right{border-right-color:#673ab7!important}.deep-purple-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-border-left{border-left-color:#673ab7!important}.deep-purple-600-bg{background-color:#5e35b1!important}.md-deep-purple-600-bg{background-color:#5e35b1!important;color:rgba(255,255,255,.87)}.deep-purple-600-fg{color:#5e35b1!important}.deep-purple-600-border{border-color:#5e35b1!important}.deep-purple-600-border-top{border-top-color:#5e35b1!important}.deep-purple-600-border-right{border-right-color:#5e35b1!important}.deep-purple-600-border-bottom{border-bottom-color:#5e35b1!important}.deep-purple-600-border-left{border-left-color:#5e35b1!important}.deep-purple-700-bg{background-color:#512da8!important}.md-deep-purple-700-bg{background-color:#512da8!important;color:rgba(255,255,255,.87)}.deep-purple-700-fg{color:#512da8!important}.deep-purple-700-border{border-color:#512da8!important}.deep-purple-700-border-top{border-top-color:#512da8!important}.deep-purple-700-border-right{border-right-color:#512da8!important}.deep-purple-700-border-bottom{border-bottom-color:#512da8!important}.deep-purple-700-border-left{border-left-color:#512da8!important}.deep-purple-800-bg{background-color:#4527a0!important}.md-deep-purple-800-bg{background-color:#4527a0!important;color:rgba(255,255,255,.87)}.deep-purple-800-fg{color:#4527a0!important}.deep-purple-800-border{border-color:#4527a0!important}.deep-purple-800-border-top{border-top-color:#4527a0!important}.deep-purple-800-border-right{border-right-color:#4527a0!important}.deep-purple-800-border-bottom{border-bottom-color:#4527a0!important}.deep-purple-800-border-left{border-left-color:#4527a0!important}.deep-purple-900-bg{background-color:#311b92!important}.md-deep-purple-900-bg{background-color:#311b92!important;color:rgba(255,255,255,.87)}.deep-purple-900-fg{color:#311b92!important}.deep-purple-900-border{border-color:#311b92!important}.deep-purple-900-border-top{border-top-color:#311b92!important}.deep-purple-900-border-right{border-right-color:#311b92!important}.deep-purple-900-border-bottom{border-bottom-color:#311b92!important}.deep-purple-900-border-left{border-left-color:#311b92!important}.deep-purple-A100-bg{background-color:#b388ff!important}.md-deep-purple-A100-bg{background-color:#b388ff!important;color:rgba(0,0,0,.87)}.deep-purple-A100-fg{color:#b388ff!important}.deep-purple-A100-border{border-color:#b388ff!important}.deep-purple-A100-border-top{border-top-color:#b388ff!important}.deep-purple-A100-border-right{border-right-color:#b388ff!important}.deep-purple-A100-border-bottom{border-bottom-color:#b388ff!important}.deep-purple-A100-border-left{border-left-color:#b388ff!important}.deep-purple-A200-bg{background-color:#7c4dff!important}.md-deep-purple-A200-bg{background-color:#7c4dff!important;color:#fff}.deep-purple-A200-fg{color:#7c4dff!important}.deep-purple-A200-border{border-color:#7c4dff!important}.deep-purple-A200-border-top{border-top-color:#7c4dff!important}.deep-purple-A200-border-right{border-right-color:#7c4dff!important}.deep-purple-A200-border-bottom{border-bottom-color:#7c4dff!important}.deep-purple-A200-border-left{border-left-color:#7c4dff!important}.deep-purple-A400-bg{background-color:#651fff!important}.md-deep-purple-A400-bg{background-color:#651fff!important;color:rgba(255,255,255,.87)}.deep-purple-A400-fg{color:#651fff!important}.deep-purple-A400-border{border-color:#651fff!important}.deep-purple-A400-border-top{border-top-color:#651fff!important}.deep-purple-A400-border-right{border-right-color:#651fff!important}.deep-purple-A400-border-bottom{border-bottom-color:#651fff!important}.deep-purple-A400-border-left{border-left-color:#651fff!important}.deep-purple-A700-bg{background-color:#6200ea!important}.md-deep-purple-A700-bg{background-color:#6200ea!important;color:rgba(255,255,255,.87)}.deep-purple-A700-fg{color:#6200ea!important}.deep-purple-A700-border{border-color:#6200ea!important}.deep-purple-A700-border-top{border-top-color:#6200ea!important}.deep-purple-A700-border-right{border-right-color:#6200ea!important}.deep-purple-A700-border-bottom{border-bottom-color:#6200ea!important}.deep-purple-A700-border-left{border-left-color:#6200ea!important}.indigo-50-bg{background-color:#e8eaf6!important}.md-indigo-50-bg{background-color:#e8eaf6!important;color:rgba(0,0,0,.87)}.indigo-50-fg{color:#e8eaf6!important}.indigo-50-border{border-color:#e8eaf6!important}.indigo-50-border-top{border-top-color:#e8eaf6!important}.indigo-50-border-right{border-right-color:#e8eaf6!important}.indigo-50-border-bottom{border-bottom-color:#e8eaf6!important}.indigo-50-border-left{border-left-color:#e8eaf6!important}.indigo-100-bg{background-color:#c5cae9!important}.md-indigo-100-bg{background-color:#c5cae9!important;color:rgba(0,0,0,.87)}.indigo-100-fg{color:#c5cae9!important}.indigo-100-border{border-color:#c5cae9!important}.indigo-100-border-top{border-top-color:#c5cae9!important}.indigo-100-border-right{border-right-color:#c5cae9!important}.indigo-100-border-bottom{border-bottom-color:#c5cae9!important}.indigo-100-border-left{border-left-color:#c5cae9!important}.indigo-200-bg{background-color:#9fa8da!important}.md-indigo-200-bg{background-color:#9fa8da!important;color:rgba(0,0,0,.87)}.indigo-200-fg{color:#9fa8da!important}.indigo-200-border{border-color:#9fa8da!important}.indigo-200-border-top{border-top-color:#9fa8da!important}.indigo-200-border-right{border-right-color:#9fa8da!important}.indigo-200-border-bottom{border-bottom-color:#9fa8da!important}.indigo-200-border-left{border-left-color:#9fa8da!important}.indigo-300-bg{background-color:#7986cb!important}.md-indigo-300-bg{background-color:#7986cb!important;color:#fff}.indigo-300-fg{color:#7986cb!important}.indigo-300-border{border-color:#7986cb!important}.indigo-300-border-top{border-top-color:#7986cb!important}.indigo-300-border-right{border-right-color:#7986cb!important}.indigo-300-border-bottom{border-bottom-color:#7986cb!important}.indigo-300-border-left{border-left-color:#7986cb!important}.indigo-400-bg{background-color:#5c6bc0!important}.md-indigo-400-bg{background-color:#5c6bc0!important;color:#fff}.indigo-400-fg{color:#5c6bc0!important}.indigo-400-border{border-color:#5c6bc0!important}.indigo-400-border-top{border-top-color:#5c6bc0!important}.indigo-400-border-right{border-right-color:#5c6bc0!important}.indigo-400-border-bottom{border-bottom-color:#5c6bc0!important}.indigo-400-border-left{border-left-color:#5c6bc0!important}.indigo-500-bg{background-color:#3f51b5!important}.md-indigo-500-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-500-fg{color:#3f51b5!important}.indigo-500-border{border-color:#3f51b5!important}.indigo-500-border-top{border-top-color:#3f51b5!important}.indigo-500-border-right{border-right-color:#3f51b5!important}.indigo-500-border-bottom{border-bottom-color:#3f51b5!important}.indigo-500-border-left{border-left-color:#3f51b5!important}.md-indigo-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-bg{background-color:#3f51b5!important}.indigo-fg{color:#3f51b5!important}.indigo-border{border-color:#3f51b5!important}.indigo-border-top{border-top-color:#3f51b5!important}.indigo-border-right{border-right-color:#3f51b5!important}.indigo-border-bottom{border-bottom-color:#3f51b5!important}.indigo-border-left{border-left-color:#3f51b5!important}.indigo-600-bg{background-color:#3949ab!important}.md-indigo-600-bg{background-color:#3949ab!important;color:rgba(255,255,255,.87)}.indigo-600-fg{color:#3949ab!important}.indigo-600-border{border-color:#3949ab!important}.indigo-600-border-top{border-top-color:#3949ab!important}.indigo-600-border-right{border-right-color:#3949ab!important}.indigo-600-border-bottom{border-bottom-color:#3949ab!important}.indigo-600-border-left{border-left-color:#3949ab!important}.indigo-700-bg{background-color:#303f9f!important}.md-indigo-700-bg{background-color:#303f9f!important;color:rgba(255,255,255,.87)}.indigo-700-fg{color:#303f9f!important}.indigo-700-border{border-color:#303f9f!important}.indigo-700-border-top{border-top-color:#303f9f!important}.indigo-700-border-right{border-right-color:#303f9f!important}.indigo-700-border-bottom{border-bottom-color:#303f9f!important}.indigo-700-border-left{border-left-color:#303f9f!important}.indigo-800-bg{background-color:#283593!important}.md-indigo-800-bg{background-color:#283593!important;color:rgba(255,255,255,.87)}.indigo-800-fg{color:#283593!important}.indigo-800-border{border-color:#283593!important}.indigo-800-border-top{border-top-color:#283593!important}.indigo-800-border-right{border-right-color:#283593!important}.indigo-800-border-bottom{border-bottom-color:#283593!important}.indigo-800-border-left{border-left-color:#283593!important}.indigo-900-bg{background-color:#1a237e!important}.md-indigo-900-bg{background-color:#1a237e!important;color:rgba(255,255,255,.87)}.indigo-900-fg{color:#1a237e!important}.indigo-900-border{border-color:#1a237e!important}.indigo-900-border-top{border-top-color:#1a237e!important}.indigo-900-border-right{border-right-color:#1a237e!important}.indigo-900-border-bottom{border-bottom-color:#1a237e!important}.indigo-900-border-left{border-left-color:#1a237e!important}.indigo-A100-bg{background-color:#8c9eff!important}.md-indigo-A100-bg{background-color:#8c9eff!important;color:rgba(0,0,0,.87)}.indigo-A100-fg{color:#8c9eff!important}.indigo-A100-border{border-color:#8c9eff!important}.indigo-A100-border-top{border-top-color:#8c9eff!important}.indigo-A100-border-right{border-right-color:#8c9eff!important}.indigo-A100-border-bottom{border-bottom-color:#8c9eff!important}.indigo-A100-border-left{border-left-color:#8c9eff!important}.indigo-A200-bg{background-color:#536dfe!important}.md-indigo-A200-bg{background-color:#536dfe!important;color:#fff}.indigo-A200-fg{color:#536dfe!important}.indigo-A200-border{border-color:#536dfe!important}.indigo-A200-border-top{border-top-color:#536dfe!important}.indigo-A200-border-right{border-right-color:#536dfe!important}.indigo-A200-border-bottom{border-bottom-color:#536dfe!important}.indigo-A200-border-left{border-left-color:#536dfe!important}.indigo-A400-bg{background-color:#3d5afe!important}.md-indigo-A400-bg{background-color:#3d5afe!important;color:#fff}.indigo-A400-fg{color:#3d5afe!important}.indigo-A400-border{border-color:#3d5afe!important}.indigo-A400-border-top{border-top-color:#3d5afe!important}.indigo-A400-border-right{border-right-color:#3d5afe!important}.indigo-A400-border-bottom{border-bottom-color:#3d5afe!important}.indigo-A400-border-left{border-left-color:#3d5afe!important}.indigo-A700-bg{background-color:#304ffe!important}.md-indigo-A700-bg{background-color:#304ffe!important;color:rgba(255,255,255,.87)}.indigo-A700-fg{color:#304ffe!important}.indigo-A700-border{border-color:#304ffe!important}.indigo-A700-border-top{border-top-color:#304ffe!important}.indigo-A700-border-right{border-right-color:#304ffe!important}.indigo-A700-border-bottom{border-bottom-color:#304ffe!important}.indigo-A700-border-left{border-left-color:#304ffe!important}.blue-50-bg{background-color:#e3f2fd!important}.md-blue-50-bg{background-color:#e3f2fd!important;color:rgba(0,0,0,.87)}.blue-50-fg{color:#e3f2fd!important}.blue-50-border{border-color:#e3f2fd!important}.blue-50-border-top{border-top-color:#e3f2fd!important}.blue-50-border-right{border-right-color:#e3f2fd!important}.blue-50-border-bottom{border-bottom-color:#e3f2fd!important}.blue-50-border-left{border-left-color:#e3f2fd!important}.blue-100-bg{background-color:#bbdefb!important}.md-blue-100-bg{background-color:#bbdefb!important;color:rgba(0,0,0,.87)}.blue-100-fg{color:#bbdefb!important}.blue-100-border{border-color:#bbdefb!important}.blue-100-border-top{border-top-color:#bbdefb!important}.blue-100-border-right{border-right-color:#bbdefb!important}.blue-100-border-bottom{border-bottom-color:#bbdefb!important}.blue-100-border-left{border-left-color:#bbdefb!important}.blue-200-bg{background-color:#90caf9!important}.md-blue-200-bg{background-color:#90caf9!important;color:rgba(0,0,0,.87)}.blue-200-fg{color:#90caf9!important}.blue-200-border{border-color:#90caf9!important}.blue-200-border-top{border-top-color:#90caf9!important}.blue-200-border-right{border-right-color:#90caf9!important}.blue-200-border-bottom{border-bottom-color:#90caf9!important}.blue-200-border-left{border-left-color:#90caf9!important}.blue-300-bg{background-color:#64b5f6!important}.md-blue-300-bg{background-color:#64b5f6!important;color:rgba(0,0,0,.87)}.blue-300-fg{color:#64b5f6!important}.blue-300-border{border-color:#64b5f6!important}.blue-300-border-top{border-top-color:#64b5f6!important}.blue-300-border-right{border-right-color:#64b5f6!important}.blue-300-border-bottom{border-bottom-color:#64b5f6!important}.blue-300-border-left{border-left-color:#64b5f6!important}.blue-400-bg{background-color:#42a5f5!important}.md-blue-400-bg{background-color:#42a5f5!important;color:rgba(0,0,0,.87)}.blue-400-fg{color:#42a5f5!important}.blue-400-border{border-color:#42a5f5!important}.blue-400-border-top{border-top-color:#42a5f5!important}.blue-400-border-right{border-right-color:#42a5f5!important}.blue-400-border-bottom{border-bottom-color:#42a5f5!important}.blue-400-border-left{border-left-color:#42a5f5!important}.blue-500-bg{background-color:#2196f3!important}.md-blue-500-bg{background-color:#2196f3!important;color:#fff}.blue-500-fg{color:#2196f3!important}.blue-500-border{border-color:#2196f3!important}.blue-500-border-top{border-top-color:#2196f3!important}.blue-500-border-right{border-right-color:#2196f3!important}.blue-500-border-bottom{border-bottom-color:#2196f3!important}.blue-500-border-left{border-left-color:#2196f3!important}.md-blue-bg{background-color:#2196f3!important;color:#fff}.blue-bg{background-color:#2196f3!important}.blue-fg{color:#2196f3!important}.blue-border{border-color:#2196f3!important}.blue-border-top{border-top-color:#2196f3!important}.blue-border-right{border-right-color:#2196f3!important}.blue-border-bottom{border-bottom-color:#2196f3!important}.blue-border-left{border-left-color:#2196f3!important}.blue-600-bg{background-color:#1e88e5!important}.md-blue-600-bg{background-color:#1e88e5!important;color:#fff}.blue-600-fg{color:#1e88e5!important}.blue-600-border{border-color:#1e88e5!important}.blue-600-border-top{border-top-color:#1e88e5!important}.blue-600-border-right{border-right-color:#1e88e5!important}.blue-600-border-bottom{border-bottom-color:#1e88e5!important}.blue-600-border-left{border-left-color:#1e88e5!important}.blue-700-bg{background-color:#1976d2!important}.md-blue-700-bg{background-color:#1976d2!important;color:#fff}.blue-700-fg{color:#1976d2!important}.blue-700-border{border-color:#1976d2!important}.blue-700-border-top{border-top-color:#1976d2!important}.blue-700-border-right{border-right-color:#1976d2!important}.blue-700-border-bottom{border-bottom-color:#1976d2!important}.blue-700-border-left{border-left-color:#1976d2!important}.blue-800-bg{background-color:#1565c0!important}.md-blue-800-bg{background-color:#1565c0!important;color:rgba(255,255,255,.87)}.blue-800-fg{color:#1565c0!important}.blue-800-border{border-color:#1565c0!important}.blue-800-border-top{border-top-color:#1565c0!important}.blue-800-border-right{border-right-color:#1565c0!important}.blue-800-border-bottom{border-bottom-color:#1565c0!important}.blue-800-border-left{border-left-color:#1565c0!important}.blue-900-bg{background-color:#0d47a1!important}.md-blue-900-bg{background-color:#0d47a1!important;color:rgba(255,255,255,.87)}.blue-900-fg{color:#0d47a1!important}.blue-900-border{border-color:#0d47a1!important}.blue-900-border-top{border-top-color:#0d47a1!important}.blue-900-border-right{border-right-color:#0d47a1!important}.blue-900-border-bottom{border-bottom-color:#0d47a1!important}.blue-900-border-left{border-left-color:#0d47a1!important}.blue-A100-bg{background-color:#82b1ff!important}.md-blue-A100-bg{background-color:#82b1ff!important;color:rgba(0,0,0,.87)}.blue-A100-fg{color:#82b1ff!important}.blue-A100-border{border-color:#82b1ff!important}.blue-A100-border-top{border-top-color:#82b1ff!important}.blue-A100-border-right{border-right-color:#82b1ff!important}.blue-A100-border-bottom{border-bottom-color:#82b1ff!important}.blue-A100-border-left{border-left-color:#82b1ff!important}.blue-A200-bg{background-color:#448aff!important}.md-blue-A200-bg{background-color:#448aff!important;color:#fff}.blue-A200-fg{color:#448aff!important}.blue-A200-border{border-color:#448aff!important}.blue-A200-border-top{border-top-color:#448aff!important}.blue-A200-border-right{border-right-color:#448aff!important}.blue-A200-border-bottom{border-bottom-color:#448aff!important}.blue-A200-border-left{border-left-color:#448aff!important}.blue-A400-bg{background-color:#2979ff!important}.md-blue-A400-bg{background-color:#2979ff!important;color:#fff}.blue-A400-fg{color:#2979ff!important}.blue-A400-border{border-color:#2979ff!important}.blue-A400-border-top{border-top-color:#2979ff!important}.blue-A400-border-right{border-right-color:#2979ff!important}.blue-A400-border-bottom{border-bottom-color:#2979ff!important}.blue-A400-border-left{border-left-color:#2979ff!important}.blue-A700-bg{background-color:#2962ff!important}.md-blue-A700-bg{background-color:#2962ff!important;color:#fff}.blue-A700-fg{color:#2962ff!important}.blue-A700-border{border-color:#2962ff!important}.blue-A700-border-top{border-top-color:#2962ff!important}.blue-A700-border-right{border-right-color:#2962ff!important}.blue-A700-border-bottom{border-bottom-color:#2962ff!important}.blue-A700-border-left{border-left-color:#2962ff!important}.light-blue-50-bg{background-color:#e1f5fe!important}.md-light-blue-50-bg{background-color:#e1f5fe!important;color:rgba(0,0,0,.87)}.light-blue-50-fg{color:#e1f5fe!important}.light-blue-50-border{border-color:#e1f5fe!important}.light-blue-50-border-top{border-top-color:#e1f5fe!important}.light-blue-50-border-right{border-right-color:#e1f5fe!important}.light-blue-50-border-bottom{border-bottom-color:#e1f5fe!important}.light-blue-50-border-left{border-left-color:#e1f5fe!important}.light-blue-100-bg{background-color:#b3e5fc!important}.md-light-blue-100-bg{background-color:#b3e5fc!important;color:rgba(0,0,0,.87)}.light-blue-100-fg{color:#b3e5fc!important}.light-blue-100-border{border-color:#b3e5fc!important}.light-blue-100-border-top{border-top-color:#b3e5fc!important}.light-blue-100-border-right{border-right-color:#b3e5fc!important}.light-blue-100-border-bottom{border-bottom-color:#b3e5fc!important}.light-blue-100-border-left{border-left-color:#b3e5fc!important}.light-blue-200-bg{background-color:#81d4fa!important}.md-light-blue-200-bg{background-color:#81d4fa!important;color:rgba(0,0,0,.87)}.light-blue-200-fg{color:#81d4fa!important}.light-blue-200-border{border-color:#81d4fa!important}.light-blue-200-border-top{border-top-color:#81d4fa!important}.light-blue-200-border-right{border-right-color:#81d4fa!important}.light-blue-200-border-bottom{border-bottom-color:#81d4fa!important}.light-blue-200-border-left{border-left-color:#81d4fa!important}.light-blue-300-bg{background-color:#4fc3f7!important}.md-light-blue-300-bg{background-color:#4fc3f7!important;color:rgba(0,0,0,.87)}.light-blue-300-fg{color:#4fc3f7!important}.light-blue-300-border{border-color:#4fc3f7!important}.light-blue-300-border-top{border-top-color:#4fc3f7!important}.light-blue-300-border-right{border-right-color:#4fc3f7!important}.light-blue-300-border-bottom{border-bottom-color:#4fc3f7!important}.light-blue-300-border-left{border-left-color:#4fc3f7!important}.light-blue-400-bg{background-color:#29b6f6!important}.md-light-blue-400-bg{background-color:#29b6f6!important;color:rgba(0,0,0,.87)}.light-blue-400-fg{color:#29b6f6!important}.light-blue-400-border{border-color:#29b6f6!important}.light-blue-400-border-top{border-top-color:#29b6f6!important}.light-blue-400-border-right{border-right-color:#29b6f6!important}.light-blue-400-border-bottom{border-bottom-color:#29b6f6!important}.light-blue-400-border-left{border-left-color:#29b6f6!important}.light-blue-500-bg{background-color:#03a9f4!important}.md-light-blue-500-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-500-fg{color:#03a9f4!important}.light-blue-500-border{border-color:#03a9f4!important}.light-blue-500-border-top{border-top-color:#03a9f4!important}.light-blue-500-border-right{border-right-color:#03a9f4!important}.light-blue-500-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-500-border-left{border-left-color:#03a9f4!important}.md-light-blue-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-bg{background-color:#03a9f4!important}.light-blue-fg{color:#03a9f4!important}.light-blue-border{border-color:#03a9f4!important}.light-blue-border-top{border-top-color:#03a9f4!important}.light-blue-border-right{border-right-color:#03a9f4!important}.light-blue-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-border-left{border-left-color:#03a9f4!important}.light-blue-600-bg{background-color:#039be5!important}.md-light-blue-600-bg{background-color:#039be5!important;color:#fff}.light-blue-600-fg{color:#039be5!important}.light-blue-600-border{border-color:#039be5!important}.light-blue-600-border-top{border-top-color:#039be5!important}.light-blue-600-border-right{border-right-color:#039be5!important}.light-blue-600-border-bottom{border-bottom-color:#039be5!important}.light-blue-600-border-left{border-left-color:#039be5!important}.light-blue-700-bg{background-color:#0288d1!important}.md-light-blue-700-bg{background-color:#0288d1!important;color:#fff}.light-blue-700-fg{color:#0288d1!important}.light-blue-700-border{border-color:#0288d1!important}.light-blue-700-border-top{border-top-color:#0288d1!important}.light-blue-700-border-right{border-right-color:#0288d1!important}.light-blue-700-border-bottom{border-bottom-color:#0288d1!important}.light-blue-700-border-left{border-left-color:#0288d1!important}.light-blue-800-bg{background-color:#0277bd!important}.md-light-blue-800-bg{background-color:#0277bd!important;color:#fff}.light-blue-800-fg{color:#0277bd!important}.light-blue-800-border{border-color:#0277bd!important}.light-blue-800-border-top{border-top-color:#0277bd!important}.light-blue-800-border-right{border-right-color:#0277bd!important}.light-blue-800-border-bottom{border-bottom-color:#0277bd!important}.light-blue-800-border-left{border-left-color:#0277bd!important}.light-blue-900-bg{background-color:#01579b!important}.md-light-blue-900-bg{background-color:#01579b!important;color:#fff}.light-blue-900-fg{color:#01579b!important}.light-blue-900-border{border-color:#01579b!important}.light-blue-900-border-top{border-top-color:#01579b!important}.light-blue-900-border-right{border-right-color:#01579b!important}.light-blue-900-border-bottom{border-bottom-color:#01579b!important}.light-blue-900-border-left{border-left-color:#01579b!important}.light-blue-A100-bg{background-color:#80d8ff!important}.md-light-blue-A100-bg{background-color:#80d8ff!important;color:rgba(0,0,0,.87)}.light-blue-A100-fg{color:#80d8ff!important}.light-blue-A100-border{border-color:#80d8ff!important}.light-blue-A100-border-top{border-top-color:#80d8ff!important}.light-blue-A100-border-right{border-right-color:#80d8ff!important}.light-blue-A100-border-bottom{border-bottom-color:#80d8ff!important}.light-blue-A100-border-left{border-left-color:#80d8ff!important}.light-blue-A200-bg{background-color:#40c4ff!important}.md-light-blue-A200-bg{background-color:#40c4ff!important;color:rgba(0,0,0,.87)}.light-blue-A200-fg{color:#40c4ff!important}.light-blue-A200-border{border-color:#40c4ff!important}.light-blue-A200-border-top{border-top-color:#40c4ff!important}.light-blue-A200-border-right{border-right-color:#40c4ff!important}.light-blue-A200-border-bottom{border-bottom-color:#40c4ff!important}.light-blue-A200-border-left{border-left-color:#40c4ff!important}.light-blue-A400-bg{background-color:#00b0ff!important}.md-light-blue-A400-bg{background-color:#00b0ff!important;color:rgba(0,0,0,.87)}.light-blue-A400-fg{color:#00b0ff!important}.light-blue-A400-border{border-color:#00b0ff!important}.light-blue-A400-border-top{border-top-color:#00b0ff!important}.light-blue-A400-border-right{border-right-color:#00b0ff!important}.light-blue-A400-border-bottom{border-bottom-color:#00b0ff!important}.light-blue-A400-border-left{border-left-color:#00b0ff!important}.light-blue-A700-bg{background-color:#0091ea!important}.md-light-blue-A700-bg{background-color:#0091ea!important;color:#fff}.light-blue-A700-fg{color:#0091ea!important}.light-blue-A700-border{border-color:#0091ea!important}.light-blue-A700-border-top{border-top-color:#0091ea!important}.light-blue-A700-border-right{border-right-color:#0091ea!important}.light-blue-A700-border-bottom{border-bottom-color:#0091ea!important}.light-blue-A700-border-left{border-left-color:#0091ea!important}.cyan-50-bg{background-color:#e0f7fa!important}.md-cyan-50-bg{background-color:#e0f7fa!important;color:rgba(0,0,0,.87)}.cyan-50-fg{color:#e0f7fa!important}.cyan-50-border{border-color:#e0f7fa!important}.cyan-50-border-top{border-top-color:#e0f7fa!important}.cyan-50-border-right{border-right-color:#e0f7fa!important}.cyan-50-border-bottom{border-bottom-color:#e0f7fa!important}.cyan-50-border-left{border-left-color:#e0f7fa!important}.cyan-100-bg{background-color:#b2ebf2!important}.md-cyan-100-bg{background-color:#b2ebf2!important;color:rgba(0,0,0,.87)}.cyan-100-fg{color:#b2ebf2!important}.cyan-100-border{border-color:#b2ebf2!important}.cyan-100-border-top{border-top-color:#b2ebf2!important}.cyan-100-border-right{border-right-color:#b2ebf2!important}.cyan-100-border-bottom{border-bottom-color:#b2ebf2!important}.cyan-100-border-left{border-left-color:#b2ebf2!important}.cyan-200-bg{background-color:#80deea!important}.md-cyan-200-bg{background-color:#80deea!important;color:rgba(0,0,0,.87)}.cyan-200-fg{color:#80deea!important}.cyan-200-border{border-color:#80deea!important}.cyan-200-border-top{border-top-color:#80deea!important}.cyan-200-border-right{border-right-color:#80deea!important}.cyan-200-border-bottom{border-bottom-color:#80deea!important}.cyan-200-border-left{border-left-color:#80deea!important}.cyan-300-bg{background-color:#4dd0e1!important}.md-cyan-300-bg{background-color:#4dd0e1!important;color:rgba(0,0,0,.87)}.cyan-300-fg{color:#4dd0e1!important}.cyan-300-border{border-color:#4dd0e1!important}.cyan-300-border-top{border-top-color:#4dd0e1!important}.cyan-300-border-right{border-right-color:#4dd0e1!important}.cyan-300-border-bottom{border-bottom-color:#4dd0e1!important}.cyan-300-border-left{border-left-color:#4dd0e1!important}.cyan-400-bg{background-color:#26c6da!important}.md-cyan-400-bg{background-color:#26c6da!important;color:rgba(0,0,0,.87)}.cyan-400-fg{color:#26c6da!important}.cyan-400-border{border-color:#26c6da!important}.cyan-400-border-top{border-top-color:#26c6da!important}.cyan-400-border-right{border-right-color:#26c6da!important}.cyan-400-border-bottom{border-bottom-color:#26c6da!important}.cyan-400-border-left{border-left-color:#26c6da!important}.cyan-500-bg{background-color:#00bcd4!important}.md-cyan-500-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-500-fg{color:#00bcd4!important}.cyan-500-border{border-color:#00bcd4!important}.cyan-500-border-top{border-top-color:#00bcd4!important}.cyan-500-border-right{border-right-color:#00bcd4!important}.cyan-500-border-bottom{border-bottom-color:#00bcd4!important}.cyan-500-border-left{border-left-color:#00bcd4!important}.md-cyan-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-bg{background-color:#00bcd4!important}.cyan-fg{color:#00bcd4!important}.cyan-border{border-color:#00bcd4!important}.cyan-border-top{border-top-color:#00bcd4!important}.cyan-border-right{border-right-color:#00bcd4!important}.cyan-border-bottom{border-bottom-color:#00bcd4!important}.cyan-border-left{border-left-color:#00bcd4!important}.cyan-600-bg{background-color:#00acc1!important}.md-cyan-600-bg{background-color:#00acc1!important;color:rgba(0,0,0,.87)}.cyan-600-fg{color:#00acc1!important}.cyan-600-border{border-color:#00acc1!important}.cyan-600-border-top{border-top-color:#00acc1!important}.cyan-600-border-right{border-right-color:#00acc1!important}.cyan-600-border-bottom{border-bottom-color:#00acc1!important}.cyan-600-border-left{border-left-color:#00acc1!important}.cyan-700-bg{background-color:#0097a7!important}.md-cyan-700-bg{background-color:#0097a7!important;color:#fff}.cyan-700-fg{color:#0097a7!important}.cyan-700-border{border-color:#0097a7!important}.cyan-700-border-top{border-top-color:#0097a7!important}.cyan-700-border-right{border-right-color:#0097a7!important}.cyan-700-border-bottom{border-bottom-color:#0097a7!important}.cyan-700-border-left{border-left-color:#0097a7!important}.cyan-800-bg{background-color:#00838f!important}.md-cyan-800-bg{background-color:#00838f!important;color:#fff}.cyan-800-fg{color:#00838f!important}.cyan-800-border{border-color:#00838f!important}.cyan-800-border-top{border-top-color:#00838f!important}.cyan-800-border-right{border-right-color:#00838f!important}.cyan-800-border-bottom{border-bottom-color:#00838f!important}.cyan-800-border-left{border-left-color:#00838f!important}.cyan-900-bg{background-color:#006064!important}.md-cyan-900-bg{background-color:#006064!important;color:#fff}.cyan-900-fg{color:#006064!important}.cyan-900-border{border-color:#006064!important}.cyan-900-border-top{border-top-color:#006064!important}.cyan-900-border-right{border-right-color:#006064!important}.cyan-900-border-bottom{border-bottom-color:#006064!important}.cyan-900-border-left{border-left-color:#006064!important}.cyan-A100-bg{background-color:#84ffff!important}.md-cyan-A100-bg{background-color:#84ffff!important;color:rgba(0,0,0,.87)}.cyan-A100-fg{color:#84ffff!important}.cyan-A100-border{border-color:#84ffff!important}.cyan-A100-border-top{border-top-color:#84ffff!important}.cyan-A100-border-right{border-right-color:#84ffff!important}.cyan-A100-border-bottom{border-bottom-color:#84ffff!important}.cyan-A100-border-left{border-left-color:#84ffff!important}.cyan-A200-bg{background-color:#18ffff!important}.md-cyan-A200-bg{background-color:#18ffff!important;color:rgba(0,0,0,.87)}.cyan-A200-fg{color:#18ffff!important}.cyan-A200-border{border-color:#18ffff!important}.cyan-A200-border-top{border-top-color:#18ffff!important}.cyan-A200-border-right{border-right-color:#18ffff!important}.cyan-A200-border-bottom{border-bottom-color:#18ffff!important}.cyan-A200-border-left{border-left-color:#18ffff!important}.cyan-A400-bg{background-color:#00e5ff!important}.md-cyan-A400-bg{background-color:#00e5ff!important;color:rgba(0,0,0,.87)}.cyan-A400-fg{color:#00e5ff!important}.cyan-A400-border{border-color:#00e5ff!important}.cyan-A400-border-top{border-top-color:#00e5ff!important}.cyan-A400-border-right{border-right-color:#00e5ff!important}.cyan-A400-border-bottom{border-bottom-color:#00e5ff!important}.cyan-A400-border-left{border-left-color:#00e5ff!important}.cyan-A700-bg{background-color:#00b8d4!important}.md-cyan-A700-bg{background-color:#00b8d4!important;color:rgba(0,0,0,.87)}.cyan-A700-fg{color:#00b8d4!important}.cyan-A700-border{border-color:#00b8d4!important}.cyan-A700-border-top{border-top-color:#00b8d4!important}.cyan-A700-border-right{border-right-color:#00b8d4!important}.cyan-A700-border-bottom{border-bottom-color:#00b8d4!important}.cyan-A700-border-left{border-left-color:#00b8d4!important}.teal-50-bg{background-color:#e0f2f1!important}.md-teal-50-bg{background-color:#e0f2f1!important;color:rgba(0,0,0,.87)}.teal-50-fg{color:#e0f2f1!important}.teal-50-border{border-color:#e0f2f1!important}.teal-50-border-top{border-top-color:#e0f2f1!important}.teal-50-border-right{border-right-color:#e0f2f1!important}.teal-50-border-bottom{border-bottom-color:#e0f2f1!important}.teal-50-border-left{border-left-color:#e0f2f1!important}.teal-100-bg{background-color:#b2dfdb!important}.md-teal-100-bg{background-color:#b2dfdb!important;color:rgba(0,0,0,.87)}.teal-100-fg{color:#b2dfdb!important}.teal-100-border{border-color:#b2dfdb!important}.teal-100-border-top{border-top-color:#b2dfdb!important}.teal-100-border-right{border-right-color:#b2dfdb!important}.teal-100-border-bottom{border-bottom-color:#b2dfdb!important}.teal-100-border-left{border-left-color:#b2dfdb!important}.teal-200-bg{background-color:#80cbc4!important}.md-teal-200-bg{background-color:#80cbc4!important;color:rgba(0,0,0,.87)}.teal-200-fg{color:#80cbc4!important}.teal-200-border{border-color:#80cbc4!important}.teal-200-border-top{border-top-color:#80cbc4!important}.teal-200-border-right{border-right-color:#80cbc4!important}.teal-200-border-bottom{border-bottom-color:#80cbc4!important}.teal-200-border-left{border-left-color:#80cbc4!important}.teal-300-bg{background-color:#4db6ac!important}.md-teal-300-bg{background-color:#4db6ac!important;color:rgba(0,0,0,.87)}.teal-300-fg{color:#4db6ac!important}.teal-300-border{border-color:#4db6ac!important}.teal-300-border-top{border-top-color:#4db6ac!important}.teal-300-border-right{border-right-color:#4db6ac!important}.teal-300-border-bottom{border-bottom-color:#4db6ac!important}.teal-300-border-left{border-left-color:#4db6ac!important}.teal-400-bg{background-color:#26a69a!important}.md-teal-400-bg{background-color:#26a69a!important;color:rgba(0,0,0,.87)}.teal-400-fg{color:#26a69a!important}.teal-400-border{border-color:#26a69a!important}.teal-400-border-top{border-top-color:#26a69a!important}.teal-400-border-right{border-right-color:#26a69a!important}.teal-400-border-bottom{border-bottom-color:#26a69a!important}.teal-400-border-left{border-left-color:#26a69a!important}.teal-500-bg{background-color:#009688!important}.md-teal-500-bg{background-color:#009688!important;color:#fff}.teal-500-fg{color:#009688!important}.teal-500-border{border-color:#009688!important}.teal-500-border-top{border-top-color:#009688!important}.teal-500-border-right{border-right-color:#009688!important}.teal-500-border-bottom{border-bottom-color:#009688!important}.teal-500-border-left{border-left-color:#009688!important}.md-teal-bg{background-color:#009688!important;color:#fff}.teal-bg{background-color:#009688!important}.teal-fg{color:#009688!important}.teal-border{border-color:#009688!important}.teal-border-top{border-top-color:#009688!important}.teal-border-right{border-right-color:#009688!important}.teal-border-bottom{border-bottom-color:#009688!important}.teal-border-left{border-left-color:#009688!important}.teal-600-bg{background-color:#00897b!important}.md-teal-600-bg{background-color:#00897b!important;color:#fff}.teal-600-fg{color:#00897b!important}.teal-600-border{border-color:#00897b!important}.teal-600-border-top{border-top-color:#00897b!important}.teal-600-border-right{border-right-color:#00897b!important}.teal-600-border-bottom{border-bottom-color:#00897b!important}.teal-600-border-left{border-left-color:#00897b!important}.teal-700-bg{background-color:#00796b!important}.md-teal-700-bg{background-color:#00796b!important;color:#fff}.teal-700-fg{color:#00796b!important}.teal-700-border{border-color:#00796b!important}.teal-700-border-top{border-top-color:#00796b!important}.teal-700-border-right{border-right-color:#00796b!important}.teal-700-border-bottom{border-bottom-color:#00796b!important}.teal-700-border-left{border-left-color:#00796b!important}.teal-800-bg{background-color:#00695c!important}.md-teal-800-bg{background-color:#00695c!important;color:rgba(255,255,255,.87)}.teal-800-fg{color:#00695c!important}.teal-800-border{border-color:#00695c!important}.teal-800-border-top{border-top-color:#00695c!important}.teal-800-border-right{border-right-color:#00695c!important}.teal-800-border-bottom{border-bottom-color:#00695c!important}.teal-800-border-left{border-left-color:#00695c!important}.teal-900-bg{background-color:#004d40!important}.md-teal-900-bg{background-color:#004d40!important;color:rgba(255,255,255,.87)}.teal-900-fg{color:#004d40!important}.teal-900-border{border-color:#004d40!important}.teal-900-border-top{border-top-color:#004d40!important}.teal-900-border-right{border-right-color:#004d40!important}.teal-900-border-bottom{border-bottom-color:#004d40!important}.teal-900-border-left{border-left-color:#004d40!important}.teal-A100-bg{background-color:#a7ffeb!important}.md-teal-A100-bg{background-color:#a7ffeb!important;color:rgba(0,0,0,.87)}.teal-A100-fg{color:#a7ffeb!important}.teal-A100-border{border-color:#a7ffeb!important}.teal-A100-border-top{border-top-color:#a7ffeb!important}.teal-A100-border-right{border-right-color:#a7ffeb!important}.teal-A100-border-bottom{border-bottom-color:#a7ffeb!important}.teal-A100-border-left{border-left-color:#a7ffeb!important}.teal-A200-bg{background-color:#64ffda!important}.md-teal-A200-bg{background-color:#64ffda!important;color:rgba(0,0,0,.87)}.teal-A200-fg{color:#64ffda!important}.teal-A200-border{border-color:#64ffda!important}.teal-A200-border-top{border-top-color:#64ffda!important}.teal-A200-border-right{border-right-color:#64ffda!important}.teal-A200-border-bottom{border-bottom-color:#64ffda!important}.teal-A200-border-left{border-left-color:#64ffda!important}.teal-A400-bg{background-color:#1de9b6!important}.md-teal-A400-bg{background-color:#1de9b6!important;color:rgba(0,0,0,.87)}.teal-A400-fg{color:#1de9b6!important}.teal-A400-border{border-color:#1de9b6!important}.teal-A400-border-top{border-top-color:#1de9b6!important}.teal-A400-border-right{border-right-color:#1de9b6!important}.teal-A400-border-bottom{border-bottom-color:#1de9b6!important}.teal-A400-border-left{border-left-color:#1de9b6!important}.teal-A700-bg{background-color:#00bfa5!important}.md-teal-A700-bg{background-color:#00bfa5!important;color:rgba(0,0,0,.87)}.teal-A700-fg{color:#00bfa5!important}.teal-A700-border{border-color:#00bfa5!important}.teal-A700-border-top{border-top-color:#00bfa5!important}.teal-A700-border-right{border-right-color:#00bfa5!important}.teal-A700-border-bottom{border-bottom-color:#00bfa5!important}.teal-A700-border-left{border-left-color:#00bfa5!important}.green-50-bg{background-color:#e8f5e9!important}.md-green-50-bg{background-color:#e8f5e9!important;color:rgba(0,0,0,.87)}.green-50-fg{color:#e8f5e9!important}.green-50-border{border-color:#e8f5e9!important}.green-50-border-top{border-top-color:#e8f5e9!important}.green-50-border-right{border-right-color:#e8f5e9!important}.green-50-border-bottom{border-bottom-color:#e8f5e9!important}.green-50-border-left{border-left-color:#e8f5e9!important}.green-100-bg{background-color:#c8e6c9!important}.md-green-100-bg{background-color:#c8e6c9!important;color:rgba(0,0,0,.87)}.green-100-fg{color:#c8e6c9!important}.green-100-border{border-color:#c8e6c9!important}.green-100-border-top{border-top-color:#c8e6c9!important}.green-100-border-right{border-right-color:#c8e6c9!important}.green-100-border-bottom{border-bottom-color:#c8e6c9!important}.green-100-border-left{border-left-color:#c8e6c9!important}.green-200-bg{background-color:#a5d6a7!important}.md-green-200-bg{background-color:#a5d6a7!important;color:rgba(0,0,0,.87)}.green-200-fg{color:#a5d6a7!important}.green-200-border{border-color:#a5d6a7!important}.green-200-border-top{border-top-color:#a5d6a7!important}.green-200-border-right{border-right-color:#a5d6a7!important}.green-200-border-bottom{border-bottom-color:#a5d6a7!important}.green-200-border-left{border-left-color:#a5d6a7!important}.green-300-bg{background-color:#81c784!important}.md-green-300-bg{background-color:#81c784!important;color:rgba(0,0,0,.87)}.green-300-fg{color:#81c784!important}.green-300-border{border-color:#81c784!important}.green-300-border-top{border-top-color:#81c784!important}.green-300-border-right{border-right-color:#81c784!important}.green-300-border-bottom{border-bottom-color:#81c784!important}.green-300-border-left{border-left-color:#81c784!important}.green-400-bg{background-color:#66bb6a!important}.md-green-400-bg{background-color:#66bb6a!important;color:rgba(0,0,0,.87)}.green-400-fg{color:#66bb6a!important}.green-400-border{border-color:#66bb6a!important}.green-400-border-top{border-top-color:#66bb6a!important}.green-400-border-right{border-right-color:#66bb6a!important}.green-400-border-bottom{border-bottom-color:#66bb6a!important}.green-400-border-left{border-left-color:#66bb6a!important}.green-500-bg{background-color:#4caf50!important}.md-green-500-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-500-fg{color:#4caf50!important}.green-500-border{border-color:#4caf50!important}.green-500-border-top{border-top-color:#4caf50!important}.green-500-border-right{border-right-color:#4caf50!important}.green-500-border-bottom{border-bottom-color:#4caf50!important}.green-500-border-left{border-left-color:#4caf50!important}.md-green-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-bg{background-color:#4caf50!important}.green-fg{color:#4caf50!important}.green-border{border-color:#4caf50!important}.green-border-top{border-top-color:#4caf50!important}.green-border-right{border-right-color:#4caf50!important}.green-border-bottom{border-bottom-color:#4caf50!important}.green-border-left{border-left-color:#4caf50!important}.green-600-bg{background-color:#43a047!important}.md-green-600-bg{background-color:#43a047!important;color:#fff}.green-600-fg{color:#43a047!important}.green-600-border{border-color:#43a047!important}.green-600-border-top{border-top-color:#43a047!important}.green-600-border-right{border-right-color:#43a047!important}.green-600-border-bottom{border-bottom-color:#43a047!important}.green-600-border-left{border-left-color:#43a047!important}.green-700-bg{background-color:#388e3c!important}.md-green-700-bg{background-color:#388e3c!important;color:#fff}.green-700-fg{color:#388e3c!important}.green-700-border{border-color:#388e3c!important}.green-700-border-top{border-top-color:#388e3c!important}.green-700-border-right{border-right-color:#388e3c!important}.green-700-border-bottom{border-bottom-color:#388e3c!important}.green-700-border-left{border-left-color:#388e3c!important}.green-800-bg{background-color:#2e7d32!important}.md-green-800-bg{background-color:#2e7d32!important;color:rgba(255,255,255,.87)}.green-800-fg{color:#2e7d32!important}.green-800-border{border-color:#2e7d32!important}.green-800-border-top{border-top-color:#2e7d32!important}.green-800-border-right{border-right-color:#2e7d32!important}.green-800-border-bottom{border-bottom-color:#2e7d32!important}.green-800-border-left{border-left-color:#2e7d32!important}.green-900-bg{background-color:#1b5e20!important}.md-green-900-bg{background-color:#1b5e20!important;color:rgba(255,255,255,.87)}.green-900-fg{color:#1b5e20!important}.green-900-border{border-color:#1b5e20!important}.green-900-border-top{border-top-color:#1b5e20!important}.green-900-border-right{border-right-color:#1b5e20!important}.green-900-border-bottom{border-bottom-color:#1b5e20!important}.green-900-border-left{border-left-color:#1b5e20!important}.green-A100-bg{background-color:#b9f6ca!important}.md-green-A100-bg{background-color:#b9f6ca!important;color:rgba(0,0,0,.87)}.green-A100-fg{color:#b9f6ca!important}.green-A100-border{border-color:#b9f6ca!important}.green-A100-border-top{border-top-color:#b9f6ca!important}.green-A100-border-right{border-right-color:#b9f6ca!important}.green-A100-border-bottom{border-bottom-color:#b9f6ca!important}.green-A100-border-left{border-left-color:#b9f6ca!important}.green-A200-bg{background-color:#69f0ae!important}.md-green-A200-bg{background-color:#69f0ae!important;color:rgba(0,0,0,.87)}.green-A200-fg{color:#69f0ae!important}.green-A200-border{border-color:#69f0ae!important}.green-A200-border-top{border-top-color:#69f0ae!important}.green-A200-border-right{border-right-color:#69f0ae!important}.green-A200-border-bottom{border-bottom-color:#69f0ae!important}.green-A200-border-left{border-left-color:#69f0ae!important}.green-A400-bg{background-color:#00e676!important}.md-green-A400-bg{background-color:#00e676!important;color:rgba(0,0,0,.87)}.green-A400-fg{color:#00e676!important}.green-A400-border{border-color:#00e676!important}.green-A400-border-top{border-top-color:#00e676!important}.green-A400-border-right{border-right-color:#00e676!important}.green-A400-border-bottom{border-bottom-color:#00e676!important}.green-A400-border-left{border-left-color:#00e676!important}.green-A700-bg{background-color:#00c853!important}.md-green-A700-bg{background-color:#00c853!important;color:rgba(0,0,0,.87)}.green-A700-fg{color:#00c853!important}.green-A700-border{border-color:#00c853!important}.green-A700-border-top{border-top-color:#00c853!important}.green-A700-border-right{border-right-color:#00c853!important}.green-A700-border-bottom{border-bottom-color:#00c853!important}.green-A700-border-left{border-left-color:#00c853!important}.light-green-50-bg{background-color:#f1f8e9!important}.md-light-green-50-bg{background-color:#f1f8e9!important;color:rgba(0,0,0,.87)}.light-green-50-fg{color:#f1f8e9!important}.light-green-50-border{border-color:#f1f8e9!important}.light-green-50-border-top{border-top-color:#f1f8e9!important}.light-green-50-border-right{border-right-color:#f1f8e9!important}.light-green-50-border-bottom{border-bottom-color:#f1f8e9!important}.light-green-50-border-left{border-left-color:#f1f8e9!important}.light-green-100-bg{background-color:#dcedc8!important}.md-light-green-100-bg{background-color:#dcedc8!important;color:rgba(0,0,0,.87)}.light-green-100-fg{color:#dcedc8!important}.light-green-100-border{border-color:#dcedc8!important}.light-green-100-border-top{border-top-color:#dcedc8!important}.light-green-100-border-right{border-right-color:#dcedc8!important}.light-green-100-border-bottom{border-bottom-color:#dcedc8!important}.light-green-100-border-left{border-left-color:#dcedc8!important}.light-green-200-bg{background-color:#c5e1a5!important}.md-light-green-200-bg{background-color:#c5e1a5!important;color:rgba(0,0,0,.87)}.light-green-200-fg{color:#c5e1a5!important}.light-green-200-border{border-color:#c5e1a5!important}.light-green-200-border-top{border-top-color:#c5e1a5!important}.light-green-200-border-right{border-right-color:#c5e1a5!important}.light-green-200-border-bottom{border-bottom-color:#c5e1a5!important}.light-green-200-border-left{border-left-color:#c5e1a5!important}.light-green-300-bg{background-color:#aed581!important}.md-light-green-300-bg{background-color:#aed581!important;color:rgba(0,0,0,.87)}.light-green-300-fg{color:#aed581!important}.light-green-300-border{border-color:#aed581!important}.light-green-300-border-top{border-top-color:#aed581!important}.light-green-300-border-right{border-right-color:#aed581!important}.light-green-300-border-bottom{border-bottom-color:#aed581!important}.light-green-300-border-left{border-left-color:#aed581!important}.light-green-400-bg{background-color:#9ccc65!important}.md-light-green-400-bg{background-color:#9ccc65!important;color:rgba(0,0,0,.87)}.light-green-400-fg{color:#9ccc65!important}.light-green-400-border{border-color:#9ccc65!important}.light-green-400-border-top{border-top-color:#9ccc65!important}.light-green-400-border-right{border-right-color:#9ccc65!important}.light-green-400-border-bottom{border-bottom-color:#9ccc65!important}.light-green-400-border-left{border-left-color:#9ccc65!important}.light-green-500-bg{background-color:#8bc34a!important}.md-light-green-500-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-500-fg{color:#8bc34a!important}.light-green-500-border{border-color:#8bc34a!important}.light-green-500-border-top{border-top-color:#8bc34a!important}.light-green-500-border-right{border-right-color:#8bc34a!important}.light-green-500-border-bottom{border-bottom-color:#8bc34a!important}.light-green-500-border-left{border-left-color:#8bc34a!important}.md-light-green-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-bg{background-color:#8bc34a!important}.light-green-fg{color:#8bc34a!important}.light-green-border{border-color:#8bc34a!important}.light-green-border-top{border-top-color:#8bc34a!important}.light-green-border-right{border-right-color:#8bc34a!important}.light-green-border-bottom{border-bottom-color:#8bc34a!important}.light-green-border-left{border-left-color:#8bc34a!important}.light-green-600-bg{background-color:#7cb342!important}.md-light-green-600-bg{background-color:#7cb342!important;color:rgba(0,0,0,.87)}.light-green-600-fg{color:#7cb342!important}.light-green-600-border{border-color:#7cb342!important}.light-green-600-border-top{border-top-color:#7cb342!important}.light-green-600-border-right{border-right-color:#7cb342!important}.light-green-600-border-bottom{border-bottom-color:#7cb342!important}.light-green-600-border-left{border-left-color:#7cb342!important}.light-green-700-bg{background-color:#689f38!important}.md-light-green-700-bg{background-color:#689f38!important;color:#fff}.light-green-700-fg{color:#689f38!important}.light-green-700-border{border-color:#689f38!important}.light-green-700-border-top{border-top-color:#689f38!important}.light-green-700-border-right{border-right-color:#689f38!important}.light-green-700-border-bottom{border-bottom-color:#689f38!important}.light-green-700-border-left{border-left-color:#689f38!important}.light-green-800-bg{background-color:#558b2f!important}.md-light-green-800-bg{background-color:#558b2f!important;color:#fff}.light-green-800-fg{color:#558b2f!important}.light-green-800-border{border-color:#558b2f!important}.light-green-800-border-top{border-top-color:#558b2f!important}.light-green-800-border-right{border-right-color:#558b2f!important}.light-green-800-border-bottom{border-bottom-color:#558b2f!important}.light-green-800-border-left{border-left-color:#558b2f!important}.light-green-900-bg{background-color:#33691e!important}.md-light-green-900-bg{background-color:#33691e!important;color:#fff}.light-green-900-fg{color:#33691e!important}.light-green-900-border{border-color:#33691e!important}.light-green-900-border-top{border-top-color:#33691e!important}.light-green-900-border-right{border-right-color:#33691e!important}.light-green-900-border-bottom{border-bottom-color:#33691e!important}.light-green-900-border-left{border-left-color:#33691e!important}.light-green-A100-bg{background-color:#ccff90!important}.md-light-green-A100-bg{background-color:#ccff90!important;color:rgba(0,0,0,.87)}.light-green-A100-fg{color:#ccff90!important}.light-green-A100-border{border-color:#ccff90!important}.light-green-A100-border-top{border-top-color:#ccff90!important}.light-green-A100-border-right{border-right-color:#ccff90!important}.light-green-A100-border-bottom{border-bottom-color:#ccff90!important}.light-green-A100-border-left{border-left-color:#ccff90!important}.light-green-A200-bg{background-color:#b2ff59!important}.md-light-green-A200-bg{background-color:#b2ff59!important;color:rgba(0,0,0,.87)}.light-green-A200-fg{color:#b2ff59!important}.light-green-A200-border{border-color:#b2ff59!important}.light-green-A200-border-top{border-top-color:#b2ff59!important}.light-green-A200-border-right{border-right-color:#b2ff59!important}.light-green-A200-border-bottom{border-bottom-color:#b2ff59!important}.light-green-A200-border-left{border-left-color:#b2ff59!important}.light-green-A400-bg{background-color:#76ff03!important}.md-light-green-A400-bg{background-color:#76ff03!important;color:rgba(0,0,0,.87)}.light-green-A400-fg{color:#76ff03!important}.light-green-A400-border{border-color:#76ff03!important}.light-green-A400-border-top{border-top-color:#76ff03!important}.light-green-A400-border-right{border-right-color:#76ff03!important}.light-green-A400-border-bottom{border-bottom-color:#76ff03!important}.light-green-A400-border-left{border-left-color:#76ff03!important}.light-green-A700-bg{background-color:#64dd17!important}.md-light-green-A700-bg{background-color:#64dd17!important;color:rgba(0,0,0,.87)}.light-green-A700-fg{color:#64dd17!important}.light-green-A700-border{border-color:#64dd17!important}.light-green-A700-border-top{border-top-color:#64dd17!important}.light-green-A700-border-right{border-right-color:#64dd17!important}.light-green-A700-border-bottom{border-bottom-color:#64dd17!important}.light-green-A700-border-left{border-left-color:#64dd17!important}.lime-50-bg{background-color:#f9fbe7!important}.md-lime-50-bg{background-color:#f9fbe7!important;color:rgba(0,0,0,.87)}.lime-50-fg{color:#f9fbe7!important}.lime-50-border{border-color:#f9fbe7!important}.lime-50-border-top{border-top-color:#f9fbe7!important}.lime-50-border-right{border-right-color:#f9fbe7!important}.lime-50-border-bottom{border-bottom-color:#f9fbe7!important}.lime-50-border-left{border-left-color:#f9fbe7!important}.lime-100-bg{background-color:#f0f4c3!important}.md-lime-100-bg{background-color:#f0f4c3!important;color:rgba(0,0,0,.87)}.lime-100-fg{color:#f0f4c3!important}.lime-100-border{border-color:#f0f4c3!important}.lime-100-border-top{border-top-color:#f0f4c3!important}.lime-100-border-right{border-right-color:#f0f4c3!important}.lime-100-border-bottom{border-bottom-color:#f0f4c3!important}.lime-100-border-left{border-left-color:#f0f4c3!important}.lime-200-bg{background-color:#e6ee9c!important}.md-lime-200-bg{background-color:#e6ee9c!important;color:rgba(0,0,0,.87)}.lime-200-fg{color:#e6ee9c!important}.lime-200-border{border-color:#e6ee9c!important}.lime-200-border-top{border-top-color:#e6ee9c!important}.lime-200-border-right{border-right-color:#e6ee9c!important}.lime-200-border-bottom{border-bottom-color:#e6ee9c!important}.lime-200-border-left{border-left-color:#e6ee9c!important}.lime-300-bg{background-color:#dce775!important}.md-lime-300-bg{background-color:#dce775!important;color:rgba(0,0,0,.87)}.lime-300-fg{color:#dce775!important}.lime-300-border{border-color:#dce775!important}.lime-300-border-top{border-top-color:#dce775!important}.lime-300-border-right{border-right-color:#dce775!important}.lime-300-border-bottom{border-bottom-color:#dce775!important}.lime-300-border-left{border-left-color:#dce775!important}.lime-400-bg{background-color:#d4e157!important}.md-lime-400-bg{background-color:#d4e157!important;color:rgba(0,0,0,.87)}.lime-400-fg{color:#d4e157!important}.lime-400-border{border-color:#d4e157!important}.lime-400-border-top{border-top-color:#d4e157!important}.lime-400-border-right{border-right-color:#d4e157!important}.lime-400-border-bottom{border-bottom-color:#d4e157!important}.lime-400-border-left{border-left-color:#d4e157!important}.lime-500-bg{background-color:#cddc39!important}.md-lime-500-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-500-fg{color:#cddc39!important}.lime-500-border{border-color:#cddc39!important}.lime-500-border-top{border-top-color:#cddc39!important}.lime-500-border-right{border-right-color:#cddc39!important}.lime-500-border-bottom{border-bottom-color:#cddc39!important}.lime-500-border-left{border-left-color:#cddc39!important}.md-lime-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-bg{background-color:#cddc39!important}.lime-fg{color:#cddc39!important}.lime-border{border-color:#cddc39!important}.lime-border-top{border-top-color:#cddc39!important}.lime-border-right{border-right-color:#cddc39!important}.lime-border-bottom{border-bottom-color:#cddc39!important}.lime-border-left{border-left-color:#cddc39!important}.lime-600-bg{background-color:#c0ca33!important}.md-lime-600-bg{background-color:#c0ca33!important;color:rgba(0,0,0,.87)}.lime-600-fg{color:#c0ca33!important}.lime-600-border{border-color:#c0ca33!important}.lime-600-border-top{border-top-color:#c0ca33!important}.lime-600-border-right{border-right-color:#c0ca33!important}.lime-600-border-bottom{border-bottom-color:#c0ca33!important}.lime-600-border-left{border-left-color:#c0ca33!important}.lime-700-bg{background-color:#afb42b!important}.md-lime-700-bg{background-color:#afb42b!important;color:rgba(0,0,0,.87)}.lime-700-fg{color:#afb42b!important}.lime-700-border{border-color:#afb42b!important}.lime-700-border-top{border-top-color:#afb42b!important}.lime-700-border-right{border-right-color:#afb42b!important}.lime-700-border-bottom{border-bottom-color:#afb42b!important}.lime-700-border-left{border-left-color:#afb42b!important}.lime-800-bg{background-color:#9e9d24!important}.md-lime-800-bg{background-color:#9e9d24!important;color:rgba(0,0,0,.87)}.lime-800-fg{color:#9e9d24!important}.lime-800-border{border-color:#9e9d24!important}.lime-800-border-top{border-top-color:#9e9d24!important}.lime-800-border-right{border-right-color:#9e9d24!important}.lime-800-border-bottom{border-bottom-color:#9e9d24!important}.lime-800-border-left{border-left-color:#9e9d24!important}.lime-900-bg{background-color:#827717!important}.md-lime-900-bg{background-color:#827717!important;color:#fff}.lime-900-fg{color:#827717!important}.lime-900-border{border-color:#827717!important}.lime-900-border-top{border-top-color:#827717!important}.lime-900-border-right{border-right-color:#827717!important}.lime-900-border-bottom{border-bottom-color:#827717!important}.lime-900-border-left{border-left-color:#827717!important}.lime-A100-bg{background-color:#f4ff81!important}.md-lime-A100-bg{background-color:#f4ff81!important;color:rgba(0,0,0,.87)}.lime-A100-fg{color:#f4ff81!important}.lime-A100-border{border-color:#f4ff81!important}.lime-A100-border-top{border-top-color:#f4ff81!important}.lime-A100-border-right{border-right-color:#f4ff81!important}.lime-A100-border-bottom{border-bottom-color:#f4ff81!important}.lime-A100-border-left{border-left-color:#f4ff81!important}.lime-A200-bg{background-color:#eeff41!important}.md-lime-A200-bg{background-color:#eeff41!important;color:rgba(0,0,0,.87)}.lime-A200-fg{color:#eeff41!important}.lime-A200-border{border-color:#eeff41!important}.lime-A200-border-top{border-top-color:#eeff41!important}.lime-A200-border-right{border-right-color:#eeff41!important}.lime-A200-border-bottom{border-bottom-color:#eeff41!important}.lime-A200-border-left{border-left-color:#eeff41!important}.lime-A400-bg{background-color:#c6ff00!important}.md-lime-A400-bg{background-color:#c6ff00!important;color:rgba(0,0,0,.87)}.lime-A400-fg{color:#c6ff00!important}.lime-A400-border{border-color:#c6ff00!important}.lime-A400-border-top{border-top-color:#c6ff00!important}.lime-A400-border-right{border-right-color:#c6ff00!important}.lime-A400-border-bottom{border-bottom-color:#c6ff00!important}.lime-A400-border-left{border-left-color:#c6ff00!important}.lime-A700-bg{background-color:#aeea00!important}.md-lime-A700-bg{background-color:#aeea00!important;color:rgba(0,0,0,.87)}.lime-A700-fg{color:#aeea00!important}.lime-A700-border{border-color:#aeea00!important}.lime-A700-border-top{border-top-color:#aeea00!important}.lime-A700-border-right{border-right-color:#aeea00!important}.lime-A700-border-bottom{border-bottom-color:#aeea00!important}.lime-A700-border-left{border-left-color:#aeea00!important}.yellow-50-bg{background-color:#fffde7!important}.md-yellow-50-bg{background-color:#fffde7!important;color:rgba(0,0,0,.87)}.yellow-50-fg{color:#fffde7!important}.yellow-50-border{border-color:#fffde7!important}.yellow-50-border-top{border-top-color:#fffde7!important}.yellow-50-border-right{border-right-color:#fffde7!important}.yellow-50-border-bottom{border-bottom-color:#fffde7!important}.yellow-50-border-left{border-left-color:#fffde7!important}.yellow-100-bg{background-color:#fff9c4!important}.md-yellow-100-bg{background-color:#fff9c4!important;color:rgba(0,0,0,.87)}.yellow-100-fg{color:#fff9c4!important}.yellow-100-border{border-color:#fff9c4!important}.yellow-100-border-top{border-top-color:#fff9c4!important}.yellow-100-border-right{border-right-color:#fff9c4!important}.yellow-100-border-bottom{border-bottom-color:#fff9c4!important}.yellow-100-border-left{border-left-color:#fff9c4!important}.yellow-200-bg{background-color:#fff59d!important}.md-yellow-200-bg{background-color:#fff59d!important;color:rgba(0,0,0,.87)}.yellow-200-fg{color:#fff59d!important}.yellow-200-border{border-color:#fff59d!important}.yellow-200-border-top{border-top-color:#fff59d!important}.yellow-200-border-right{border-right-color:#fff59d!important}.yellow-200-border-bottom{border-bottom-color:#fff59d!important}.yellow-200-border-left{border-left-color:#fff59d!important}.yellow-300-bg{background-color:#fff176!important}.md-yellow-300-bg{background-color:#fff176!important;color:rgba(0,0,0,.87)}.yellow-300-fg{color:#fff176!important}.yellow-300-border{border-color:#fff176!important}.yellow-300-border-top{border-top-color:#fff176!important}.yellow-300-border-right{border-right-color:#fff176!important}.yellow-300-border-bottom{border-bottom-color:#fff176!important}.yellow-300-border-left{border-left-color:#fff176!important}.yellow-400-bg{background-color:#ffee58!important}.md-yellow-400-bg{background-color:#ffee58!important;color:rgba(0,0,0,.87)}.yellow-400-fg{color:#ffee58!important}.yellow-400-border{border-color:#ffee58!important}.yellow-400-border-top{border-top-color:#ffee58!important}.yellow-400-border-right{border-right-color:#ffee58!important}.yellow-400-border-bottom{border-bottom-color:#ffee58!important}.yellow-400-border-left{border-left-color:#ffee58!important}.yellow-500-bg{background-color:#ffeb3b!important}.md-yellow-500-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-500-fg{color:#ffeb3b!important}.yellow-500-border{border-color:#ffeb3b!important}.yellow-500-border-top{border-top-color:#ffeb3b!important}.yellow-500-border-right{border-right-color:#ffeb3b!important}.yellow-500-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-500-border-left{border-left-color:#ffeb3b!important}.md-yellow-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-bg{background-color:#ffeb3b!important}.yellow-fg{color:#ffeb3b!important}.yellow-border{border-color:#ffeb3b!important}.yellow-border-top{border-top-color:#ffeb3b!important}.yellow-border-right{border-right-color:#ffeb3b!important}.yellow-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-border-left{border-left-color:#ffeb3b!important}.yellow-600-bg{background-color:#fdd835!important}.md-yellow-600-bg{background-color:#fdd835!important;color:rgba(0,0,0,.87)}.yellow-600-fg{color:#fdd835!important}.yellow-600-border{border-color:#fdd835!important}.yellow-600-border-top{border-top-color:#fdd835!important}.yellow-600-border-right{border-right-color:#fdd835!important}.yellow-600-border-bottom{border-bottom-color:#fdd835!important}.yellow-600-border-left{border-left-color:#fdd835!important}.yellow-700-bg{background-color:#fbc02d!important}.md-yellow-700-bg{background-color:#fbc02d!important;color:rgba(0,0,0,.87)}.yellow-700-fg{color:#fbc02d!important}.yellow-700-border{border-color:#fbc02d!important}.yellow-700-border-top{border-top-color:#fbc02d!important}.yellow-700-border-right{border-right-color:#fbc02d!important}.yellow-700-border-bottom{border-bottom-color:#fbc02d!important}.yellow-700-border-left{border-left-color:#fbc02d!important}.yellow-800-bg{background-color:#f9a825!important}.md-yellow-800-bg{background-color:#f9a825!important;color:rgba(0,0,0,.87)}.yellow-800-fg{color:#f9a825!important}.yellow-800-border{border-color:#f9a825!important}.yellow-800-border-top{border-top-color:#f9a825!important}.yellow-800-border-right{border-right-color:#f9a825!important}.yellow-800-border-bottom{border-bottom-color:#f9a825!important}.yellow-800-border-left{border-left-color:#f9a825!important}.yellow-900-bg{background-color:#f57f17!important}.md-yellow-900-bg{background-color:#f57f17!important;color:rgba(0,0,0,.87)}.yellow-900-fg{color:#f57f17!important}.yellow-900-border{border-color:#f57f17!important}.yellow-900-border-top{border-top-color:#f57f17!important}.yellow-900-border-right{border-right-color:#f57f17!important}.yellow-900-border-bottom{border-bottom-color:#f57f17!important}.yellow-900-border-left{border-left-color:#f57f17!important}.yellow-A100-bg{background-color:#ffff8d!important}.md-yellow-A100-bg{background-color:#ffff8d!important;color:rgba(0,0,0,.87)}.yellow-A100-fg{color:#ffff8d!important}.yellow-A100-border{border-color:#ffff8d!important}.yellow-A100-border-top{border-top-color:#ffff8d!important}.yellow-A100-border-right{border-right-color:#ffff8d!important}.yellow-A100-border-bottom{border-bottom-color:#ffff8d!important}.yellow-A100-border-left{border-left-color:#ffff8d!important}.yellow-A200-bg{background-color:#ff0!important}.md-yellow-A200-bg{background-color:#ff0!important;color:rgba(0,0,0,.87)}.yellow-A200-fg{color:#ff0!important}.yellow-A200-border{border-color:#ff0!important}.yellow-A200-border-top{border-top-color:#ff0!important}.yellow-A200-border-right{border-right-color:#ff0!important}.yellow-A200-border-bottom{border-bottom-color:#ff0!important}.yellow-A200-border-left{border-left-color:#ff0!important}.yellow-A400-bg{background-color:#ffea00!important}.md-yellow-A400-bg{background-color:#ffea00!important;color:rgba(0,0,0,.87)}.yellow-A400-fg{color:#ffea00!important}.yellow-A400-border{border-color:#ffea00!important}.yellow-A400-border-top{border-top-color:#ffea00!important}.yellow-A400-border-right{border-right-color:#ffea00!important}.yellow-A400-border-bottom{border-bottom-color:#ffea00!important}.yellow-A400-border-left{border-left-color:#ffea00!important}.yellow-A700-bg{background-color:#ffd600!important}.md-yellow-A700-bg{background-color:#ffd600!important;color:rgba(0,0,0,.87)}.yellow-A700-fg{color:#ffd600!important}.yellow-A700-border{border-color:#ffd600!important}.yellow-A700-border-top{border-top-color:#ffd600!important}.yellow-A700-border-right{border-right-color:#ffd600!important}.yellow-A700-border-bottom{border-bottom-color:#ffd600!important}.yellow-A700-border-left{border-left-color:#ffd600!important}.amber-50-bg{background-color:#fff8e1!important}.md-amber-50-bg{background-color:#fff8e1!important;color:rgba(0,0,0,.87)}.amber-50-fg{color:#fff8e1!important}.amber-50-border{border-color:#fff8e1!important}.amber-50-border-top{border-top-color:#fff8e1!important}.amber-50-border-right{border-right-color:#fff8e1!important}.amber-50-border-bottom{border-bottom-color:#fff8e1!important}.amber-50-border-left{border-left-color:#fff8e1!important}.amber-100-bg{background-color:#ffecb3!important}.md-amber-100-bg{background-color:#ffecb3!important;color:rgba(0,0,0,.87)}.amber-100-fg{color:#ffecb3!important}.amber-100-border{border-color:#ffecb3!important}.amber-100-border-top{border-top-color:#ffecb3!important}.amber-100-border-right{border-right-color:#ffecb3!important}.amber-100-border-bottom{border-bottom-color:#ffecb3!important}.amber-100-border-left{border-left-color:#ffecb3!important}.amber-200-bg{background-color:#ffe082!important}.md-amber-200-bg{background-color:#ffe082!important;color:rgba(0,0,0,.87)}.amber-200-fg{color:#ffe082!important}.amber-200-border{border-color:#ffe082!important}.amber-200-border-top{border-top-color:#ffe082!important}.amber-200-border-right{border-right-color:#ffe082!important}.amber-200-border-bottom{border-bottom-color:#ffe082!important}.amber-200-border-left{border-left-color:#ffe082!important}.amber-300-bg{background-color:#ffd54f!important}.md-amber-300-bg{background-color:#ffd54f!important;color:rgba(0,0,0,.87)}.amber-300-fg{color:#ffd54f!important}.amber-300-border{border-color:#ffd54f!important}.amber-300-border-top{border-top-color:#ffd54f!important}.amber-300-border-right{border-right-color:#ffd54f!important}.amber-300-border-bottom{border-bottom-color:#ffd54f!important}.amber-300-border-left{border-left-color:#ffd54f!important}.amber-400-bg{background-color:#ffca28!important}.md-amber-400-bg{background-color:#ffca28!important;color:rgba(0,0,0,.87)}.amber-400-fg{color:#ffca28!important}.amber-400-border{border-color:#ffca28!important}.amber-400-border-top{border-top-color:#ffca28!important}.amber-400-border-right{border-right-color:#ffca28!important}.amber-400-border-bottom{border-bottom-color:#ffca28!important}.amber-400-border-left{border-left-color:#ffca28!important}.amber-500-bg{background-color:#ffc107!important}.md-amber-500-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-500-fg{color:#ffc107!important}.amber-500-border{border-color:#ffc107!important}.amber-500-border-top{border-top-color:#ffc107!important}.amber-500-border-right{border-right-color:#ffc107!important}.amber-500-border-bottom{border-bottom-color:#ffc107!important}.amber-500-border-left{border-left-color:#ffc107!important}.md-amber-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-bg{background-color:#ffc107!important}.amber-fg{color:#ffc107!important}.amber-border{border-color:#ffc107!important}.amber-border-top{border-top-color:#ffc107!important}.amber-border-right{border-right-color:#ffc107!important}.amber-border-bottom{border-bottom-color:#ffc107!important}.amber-border-left{border-left-color:#ffc107!important}.amber-600-bg{background-color:#ffb300!important}.md-amber-600-bg{background-color:#ffb300!important;color:rgba(0,0,0,.87)}.amber-600-fg{color:#ffb300!important}.amber-600-border{border-color:#ffb300!important}.amber-600-border-top{border-top-color:#ffb300!important}.amber-600-border-right{border-right-color:#ffb300!important}.amber-600-border-bottom{border-bottom-color:#ffb300!important}.amber-600-border-left{border-left-color:#ffb300!important}.amber-700-bg{background-color:#ffa000!important}.md-amber-700-bg{background-color:#ffa000!important;color:rgba(0,0,0,.87)}.amber-700-fg{color:#ffa000!important}.amber-700-border{border-color:#ffa000!important}.amber-700-border-top{border-top-color:#ffa000!important}.amber-700-border-right{border-right-color:#ffa000!important}.amber-700-border-bottom{border-bottom-color:#ffa000!important}.amber-700-border-left{border-left-color:#ffa000!important}.amber-800-bg{background-color:#ff8f00!important}.md-amber-800-bg{background-color:#ff8f00!important;color:rgba(0,0,0,.87)}.amber-800-fg{color:#ff8f00!important}.amber-800-border{border-color:#ff8f00!important}.amber-800-border-top{border-top-color:#ff8f00!important}.amber-800-border-right{border-right-color:#ff8f00!important}.amber-800-border-bottom{border-bottom-color:#ff8f00!important}.amber-800-border-left{border-left-color:#ff8f00!important}.amber-900-bg{background-color:#ff6f00!important}.md-amber-900-bg{background-color:#ff6f00!important;color:rgba(0,0,0,.87)}.amber-900-fg{color:#ff6f00!important}.amber-900-border{border-color:#ff6f00!important}.amber-900-border-top{border-top-color:#ff6f00!important}.amber-900-border-right{border-right-color:#ff6f00!important}.amber-900-border-bottom{border-bottom-color:#ff6f00!important}.amber-900-border-left{border-left-color:#ff6f00!important}.amber-A100-bg{background-color:#ffe57f!important}.md-amber-A100-bg{background-color:#ffe57f!important;color:rgba(0,0,0,.87)}.amber-A100-fg{color:#ffe57f!important}.amber-A100-border{border-color:#ffe57f!important}.amber-A100-border-top{border-top-color:#ffe57f!important}.amber-A100-border-right{border-right-color:#ffe57f!important}.amber-A100-border-bottom{border-bottom-color:#ffe57f!important}.amber-A100-border-left{border-left-color:#ffe57f!important}.amber-A200-bg{background-color:#ffd740!important}.md-amber-A200-bg{background-color:#ffd740!important;color:rgba(0,0,0,.87)}.amber-A200-fg{color:#ffd740!important}.amber-A200-border{border-color:#ffd740!important}.amber-A200-border-top{border-top-color:#ffd740!important}.amber-A200-border-right{border-right-color:#ffd740!important}.amber-A200-border-bottom{border-bottom-color:#ffd740!important}.amber-A200-border-left{border-left-color:#ffd740!important}.amber-A400-bg{background-color:#ffc400!important}.md-amber-A400-bg{background-color:#ffc400!important;color:rgba(0,0,0,.87)}.amber-A400-fg{color:#ffc400!important}.amber-A400-border{border-color:#ffc400!important}.amber-A400-border-top{border-top-color:#ffc400!important}.amber-A400-border-right{border-right-color:#ffc400!important}.amber-A400-border-bottom{border-bottom-color:#ffc400!important}.amber-A400-border-left{border-left-color:#ffc400!important}.amber-A700-bg{background-color:#ffab00!important}.md-amber-A700-bg{background-color:#ffab00!important;color:rgba(0,0,0,.87)}.amber-A700-fg{color:#ffab00!important}.amber-A700-border{border-color:#ffab00!important}.amber-A700-border-top{border-top-color:#ffab00!important}.amber-A700-border-right{border-right-color:#ffab00!important}.amber-A700-border-bottom{border-bottom-color:#ffab00!important}.amber-A700-border-left{border-left-color:#ffab00!important}.orange-50-bg{background-color:#fff3e0!important}.md-orange-50-bg{background-color:#fff3e0!important;color:rgba(0,0,0,.87)}.orange-50-fg{color:#fff3e0!important}.orange-50-border{border-color:#fff3e0!important}.orange-50-border-top{border-top-color:#fff3e0!important}.orange-50-border-right{border-right-color:#fff3e0!important}.orange-50-border-bottom{border-bottom-color:#fff3e0!important}.orange-50-border-left{border-left-color:#fff3e0!important}.orange-100-bg{background-color:#ffe0b2!important}.md-orange-100-bg{background-color:#ffe0b2!important;color:rgba(0,0,0,.87)}.orange-100-fg{color:#ffe0b2!important}.orange-100-border{border-color:#ffe0b2!important}.orange-100-border-top{border-top-color:#ffe0b2!important}.orange-100-border-right{border-right-color:#ffe0b2!important}.orange-100-border-bottom{border-bottom-color:#ffe0b2!important}.orange-100-border-left{border-left-color:#ffe0b2!important}.orange-200-bg{background-color:#ffcc80!important}.md-orange-200-bg{background-color:#ffcc80!important;color:rgba(0,0,0,.87)}.orange-200-fg{color:#ffcc80!important}.orange-200-border{border-color:#ffcc80!important}.orange-200-border-top{border-top-color:#ffcc80!important}.orange-200-border-right{border-right-color:#ffcc80!important}.orange-200-border-bottom{border-bottom-color:#ffcc80!important}.orange-200-border-left{border-left-color:#ffcc80!important}.orange-300-bg{background-color:#ffb74d!important}.md-orange-300-bg{background-color:#ffb74d!important;color:rgba(0,0,0,.87)}.orange-300-fg{color:#ffb74d!important}.orange-300-border{border-color:#ffb74d!important}.orange-300-border-top{border-top-color:#ffb74d!important}.orange-300-border-right{border-right-color:#ffb74d!important}.orange-300-border-bottom{border-bottom-color:#ffb74d!important}.orange-300-border-left{border-left-color:#ffb74d!important}.orange-400-bg{background-color:#ffa726!important}.md-orange-400-bg{background-color:#ffa726!important;color:rgba(0,0,0,.87)}.orange-400-fg{color:#ffa726!important}.orange-400-border{border-color:#ffa726!important}.orange-400-border-top{border-top-color:#ffa726!important}.orange-400-border-right{border-right-color:#ffa726!important}.orange-400-border-bottom{border-bottom-color:#ffa726!important}.orange-400-border-left{border-left-color:#ffa726!important}.orange-500-bg{background-color:#ff9800!important}.md-orange-500-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-500-fg{color:#ff9800!important}.orange-500-border{border-color:#ff9800!important}.orange-500-border-top{border-top-color:#ff9800!important}.orange-500-border-right{border-right-color:#ff9800!important}.orange-500-border-bottom{border-bottom-color:#ff9800!important}.orange-500-border-left{border-left-color:#ff9800!important}.md-orange-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-bg{background-color:#ff9800!important}.orange-fg{color:#ff9800!important}.orange-border{border-color:#ff9800!important}.orange-border-top{border-top-color:#ff9800!important}.orange-border-right{border-right-color:#ff9800!important}.orange-border-bottom{border-bottom-color:#ff9800!important}.orange-border-left{border-left-color:#ff9800!important}.orange-600-bg{background-color:#fb8c00!important}.md-orange-600-bg{background-color:#fb8c00!important;color:rgba(0,0,0,.87)}.orange-600-fg{color:#fb8c00!important}.orange-600-border{border-color:#fb8c00!important}.orange-600-border-top{border-top-color:#fb8c00!important}.orange-600-border-right{border-right-color:#fb8c00!important}.orange-600-border-bottom{border-bottom-color:#fb8c00!important}.orange-600-border-left{border-left-color:#fb8c00!important}.orange-700-bg{background-color:#f57c00!important}.md-orange-700-bg{background-color:#f57c00!important;color:rgba(0,0,0,.87)}.orange-700-fg{color:#f57c00!important}.orange-700-border{border-color:#f57c00!important}.orange-700-border-top{border-top-color:#f57c00!important}.orange-700-border-right{border-right-color:#f57c00!important}.orange-700-border-bottom{border-bottom-color:#f57c00!important}.orange-700-border-left{border-left-color:#f57c00!important}.orange-800-bg{background-color:#ef6c00!important}.md-orange-800-bg{background-color:#ef6c00!important;color:#fff}.orange-800-fg{color:#ef6c00!important}.orange-800-border{border-color:#ef6c00!important}.orange-800-border-top{border-top-color:#ef6c00!important}.orange-800-border-right{border-right-color:#ef6c00!important}.orange-800-border-bottom{border-bottom-color:#ef6c00!important}.orange-800-border-left{border-left-color:#ef6c00!important}.orange-900-bg{background-color:#e65100!important}.md-orange-900-bg{background-color:#e65100!important;color:#fff}.orange-900-fg{color:#e65100!important}.orange-900-border{border-color:#e65100!important}.orange-900-border-top{border-top-color:#e65100!important}.orange-900-border-right{border-right-color:#e65100!important}.orange-900-border-bottom{border-bottom-color:#e65100!important}.orange-900-border-left{border-left-color:#e65100!important}.orange-A100-bg{background-color:#ffd180!important}.md-orange-A100-bg{background-color:#ffd180!important;color:rgba(0,0,0,.87)}.orange-A100-fg{color:#ffd180!important}.orange-A100-border{border-color:#ffd180!important}.orange-A100-border-top{border-top-color:#ffd180!important}.orange-A100-border-right{border-right-color:#ffd180!important}.orange-A100-border-bottom{border-bottom-color:#ffd180!important}.orange-A100-border-left{border-left-color:#ffd180!important}.orange-A200-bg{background-color:#ffab40!important}.md-orange-A200-bg{background-color:#ffab40!important;color:rgba(0,0,0,.87)}.orange-A200-fg{color:#ffab40!important}.orange-A200-border{border-color:#ffab40!important}.orange-A200-border-top{border-top-color:#ffab40!important}.orange-A200-border-right{border-right-color:#ffab40!important}.orange-A200-border-bottom{border-bottom-color:#ffab40!important}.orange-A200-border-left{border-left-color:#ffab40!important}.orange-A400-bg{background-color:#ff9100!important}.md-orange-A400-bg{background-color:#ff9100!important;color:rgba(0,0,0,.87)}.orange-A400-fg{color:#ff9100!important}.orange-A400-border{border-color:#ff9100!important}.orange-A400-border-top{border-top-color:#ff9100!important}.orange-A400-border-right{border-right-color:#ff9100!important}.orange-A400-border-bottom{border-bottom-color:#ff9100!important}.orange-A400-border-left{border-left-color:#ff9100!important}.orange-A700-bg{background-color:#ff6d00!important}.md-orange-A700-bg{background-color:#ff6d00!important;color:rgba(0,0,0,.87)}.orange-A700-fg{color:#ff6d00!important}.orange-A700-border{border-color:#ff6d00!important}.orange-A700-border-top{border-top-color:#ff6d00!important}.orange-A700-border-right{border-right-color:#ff6d00!important}.orange-A700-border-bottom{border-bottom-color:#ff6d00!important}.orange-A700-border-left{border-left-color:#ff6d00!important}.deep-orange-50-bg{background-color:#fbe9e7!important}.md-deep-orange-50-bg{background-color:#fbe9e7!important;color:rgba(0,0,0,.87)}.deep-orange-50-fg{color:#fbe9e7!important}.deep-orange-50-border{border-color:#fbe9e7!important}.deep-orange-50-border-top{border-top-color:#fbe9e7!important}.deep-orange-50-border-right{border-right-color:#fbe9e7!important}.deep-orange-50-border-bottom{border-bottom-color:#fbe9e7!important}.deep-orange-50-border-left{border-left-color:#fbe9e7!important}.deep-orange-100-bg{background-color:#ffccbc!important}.md-deep-orange-100-bg{background-color:#ffccbc!important;color:rgba(0,0,0,.87)}.deep-orange-100-fg{color:#ffccbc!important}.deep-orange-100-border{border-color:#ffccbc!important}.deep-orange-100-border-top{border-top-color:#ffccbc!important}.deep-orange-100-border-right{border-right-color:#ffccbc!important}.deep-orange-100-border-bottom{border-bottom-color:#ffccbc!important}.deep-orange-100-border-left{border-left-color:#ffccbc!important}.deep-orange-200-bg{background-color:#ffab91!important}.md-deep-orange-200-bg{background-color:#ffab91!important;color:rgba(0,0,0,.87)}.deep-orange-200-fg{color:#ffab91!important}.deep-orange-200-border{border-color:#ffab91!important}.deep-orange-200-border-top{border-top-color:#ffab91!important}.deep-orange-200-border-right{border-right-color:#ffab91!important}.deep-orange-200-border-bottom{border-bottom-color:#ffab91!important}.deep-orange-200-border-left{border-left-color:#ffab91!important}.deep-orange-300-bg{background-color:#ff8a65!important}.md-deep-orange-300-bg{background-color:#ff8a65!important;color:rgba(0,0,0,.87)}.deep-orange-300-fg{color:#ff8a65!important}.deep-orange-300-border{border-color:#ff8a65!important}.deep-orange-300-border-top{border-top-color:#ff8a65!important}.deep-orange-300-border-right{border-right-color:#ff8a65!important}.deep-orange-300-border-bottom{border-bottom-color:#ff8a65!important}.deep-orange-300-border-left{border-left-color:#ff8a65!important}.deep-orange-400-bg{background-color:#ff7043!important}.md-deep-orange-400-bg{background-color:#ff7043!important;color:rgba(0,0,0,.87)}.deep-orange-400-fg{color:#ff7043!important}.deep-orange-400-border{border-color:#ff7043!important}.deep-orange-400-border-top{border-top-color:#ff7043!important}.deep-orange-400-border-right{border-right-color:#ff7043!important}.deep-orange-400-border-bottom{border-bottom-color:#ff7043!important}.deep-orange-400-border-left{border-left-color:#ff7043!important}.deep-orange-500-bg{background-color:#ff5722!important}.md-deep-orange-500-bg{background-color:#ff5722!important;color:#fff}.deep-orange-500-fg{color:#ff5722!important}.deep-orange-500-border{border-color:#ff5722!important}.deep-orange-500-border-top{border-top-color:#ff5722!important}.deep-orange-500-border-right{border-right-color:#ff5722!important}.deep-orange-500-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-500-border-left{border-left-color:#ff5722!important}.md-deep-orange-bg{background-color:#ff5722!important;color:#fff}.deep-orange-bg{background-color:#ff5722!important}.deep-orange-fg{color:#ff5722!important}.deep-orange-border{border-color:#ff5722!important}.deep-orange-border-top{border-top-color:#ff5722!important}.deep-orange-border-right{border-right-color:#ff5722!important}.deep-orange-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-border-left{border-left-color:#ff5722!important}.deep-orange-600-bg{background-color:#f4511e!important}.md-deep-orange-600-bg{background-color:#f4511e!important;color:#fff}.deep-orange-600-fg{color:#f4511e!important}.deep-orange-600-border{border-color:#f4511e!important}.deep-orange-600-border-top{border-top-color:#f4511e!important}.deep-orange-600-border-right{border-right-color:#f4511e!important}.deep-orange-600-border-bottom{border-bottom-color:#f4511e!important}.deep-orange-600-border-left{border-left-color:#f4511e!important}.deep-orange-700-bg{background-color:#e64a19!important}.md-deep-orange-700-bg{background-color:#e64a19!important;color:#fff}.deep-orange-700-fg{color:#e64a19!important}.deep-orange-700-border{border-color:#e64a19!important}.deep-orange-700-border-top{border-top-color:#e64a19!important}.deep-orange-700-border-right{border-right-color:#e64a19!important}.deep-orange-700-border-bottom{border-bottom-color:#e64a19!important}.deep-orange-700-border-left{border-left-color:#e64a19!important}.deep-orange-800-bg{background-color:#d84315!important}.md-deep-orange-800-bg{background-color:#d84315!important;color:#fff}.deep-orange-800-fg{color:#d84315!important}.deep-orange-800-border{border-color:#d84315!important}.deep-orange-800-border-top{border-top-color:#d84315!important}.deep-orange-800-border-right{border-right-color:#d84315!important}.deep-orange-800-border-bottom{border-bottom-color:#d84315!important}.deep-orange-800-border-left{border-left-color:#d84315!important}.deep-orange-900-bg{background-color:#bf360c!important}.md-deep-orange-900-bg{background-color:#bf360c!important;color:#fff}.deep-orange-900-fg{color:#bf360c!important}.deep-orange-900-border{border-color:#bf360c!important}.deep-orange-900-border-top{border-top-color:#bf360c!important}.deep-orange-900-border-right{border-right-color:#bf360c!important}.deep-orange-900-border-bottom{border-bottom-color:#bf360c!important}.deep-orange-900-border-left{border-left-color:#bf360c!important}.deep-orange-A100-bg{background-color:#ff9e80!important}.md-deep-orange-A100-bg{background-color:#ff9e80!important;color:rgba(0,0,0,.87)}.deep-orange-A100-fg{color:#ff9e80!important}.deep-orange-A100-border{border-color:#ff9e80!important}.deep-orange-A100-border-top{border-top-color:#ff9e80!important}.deep-orange-A100-border-right{border-right-color:#ff9e80!important}.deep-orange-A100-border-bottom{border-bottom-color:#ff9e80!important}.deep-orange-A100-border-left{border-left-color:#ff9e80!important}.deep-orange-A200-bg{background-color:#ff6e40!important}.md-deep-orange-A200-bg{background-color:#ff6e40!important;color:rgba(0,0,0,.87)}.deep-orange-A200-fg{color:#ff6e40!important}.deep-orange-A200-border{border-color:#ff6e40!important}.deep-orange-A200-border-top{border-top-color:#ff6e40!important}.deep-orange-A200-border-right{border-right-color:#ff6e40!important}.deep-orange-A200-border-bottom{border-bottom-color:#ff6e40!important}.deep-orange-A200-border-left{border-left-color:#ff6e40!important}.deep-orange-A400-bg{background-color:#ff3d00!important}.md-deep-orange-A400-bg{background-color:#ff3d00!important;color:#fff}.deep-orange-A400-fg{color:#ff3d00!important}.deep-orange-A400-border{border-color:#ff3d00!important}.deep-orange-A400-border-top{border-top-color:#ff3d00!important}.deep-orange-A400-border-right{border-right-color:#ff3d00!important}.deep-orange-A400-border-bottom{border-bottom-color:#ff3d00!important}.deep-orange-A400-border-left{border-left-color:#ff3d00!important}.deep-orange-A700-bg{background-color:#dd2c00!important}.md-deep-orange-A700-bg{background-color:#dd2c00!important;color:#fff}.deep-orange-A700-fg{color:#dd2c00!important}.deep-orange-A700-border{border-color:#dd2c00!important}.deep-orange-A700-border-top{border-top-color:#dd2c00!important}.deep-orange-A700-border-right{border-right-color:#dd2c00!important}.deep-orange-A700-border-bottom{border-bottom-color:#dd2c00!important}.deep-orange-A700-border-left{border-left-color:#dd2c00!important}.brown-50-bg{background-color:#efebe9!important}.md-brown-50-bg{background-color:#efebe9!important;color:rgba(0,0,0,.87)}.brown-50-fg{color:#efebe9!important}.brown-50-border{border-color:#efebe9!important}.brown-50-border-top{border-top-color:#efebe9!important}.brown-50-border-right{border-right-color:#efebe9!important}.brown-50-border-bottom{border-bottom-color:#efebe9!important}.brown-50-border-left{border-left-color:#efebe9!important}.brown-100-bg{background-color:#d7ccc8!important}.md-brown-100-bg{background-color:#d7ccc8!important;color:rgba(0,0,0,.87)}.brown-100-fg{color:#d7ccc8!important}.brown-100-border{border-color:#d7ccc8!important}.brown-100-border-top{border-top-color:#d7ccc8!important}.brown-100-border-right{border-right-color:#d7ccc8!important}.brown-100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-100-border-left{border-left-color:#d7ccc8!important}.brown-200-bg{background-color:#bcaaa4!important}.md-brown-200-bg{background-color:#bcaaa4!important;color:rgba(0,0,0,.87)}.brown-200-fg{color:#bcaaa4!important}.brown-200-border{border-color:#bcaaa4!important}.brown-200-border-top{border-top-color:#bcaaa4!important}.brown-200-border-right{border-right-color:#bcaaa4!important}.brown-200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-200-border-left{border-left-color:#bcaaa4!important}.brown-300-bg{background-color:#a1887f!important}.md-brown-300-bg{background-color:#a1887f!important;color:#fff}.brown-300-fg{color:#a1887f!important}.brown-300-border{border-color:#a1887f!important}.brown-300-border-top{border-top-color:#a1887f!important}.brown-300-border-right{border-right-color:#a1887f!important}.brown-300-border-bottom{border-bottom-color:#a1887f!important}.brown-300-border-left{border-left-color:#a1887f!important}.brown-400-bg{background-color:#8d6e63!important}.md-brown-400-bg{background-color:#8d6e63!important;color:#fff}.brown-400-fg{color:#8d6e63!important}.brown-400-border{border-color:#8d6e63!important}.brown-400-border-top{border-top-color:#8d6e63!important}.brown-400-border-right{border-right-color:#8d6e63!important}.brown-400-border-bottom{border-bottom-color:#8d6e63!important}.brown-400-border-left{border-left-color:#8d6e63!important}.brown-500-bg{background-color:#795548!important}.md-brown-500-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-500-fg{color:#795548!important}.brown-500-border{border-color:#795548!important}.brown-500-border-top{border-top-color:#795548!important}.brown-500-border-right{border-right-color:#795548!important}.brown-500-border-bottom{border-bottom-color:#795548!important}.brown-500-border-left{border-left-color:#795548!important}.md-brown-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-bg{background-color:#795548!important}.brown-fg{color:#795548!important}.brown-border{border-color:#795548!important}.brown-border-top{border-top-color:#795548!important}.brown-border-right{border-right-color:#795548!important}.brown-border-bottom{border-bottom-color:#795548!important}.brown-border-left{border-left-color:#795548!important}.brown-600-bg{background-color:#6d4c41!important}.md-brown-600-bg{background-color:#6d4c41!important;color:rgba(255,255,255,.87)}.brown-600-fg{color:#6d4c41!important}.brown-600-border{border-color:#6d4c41!important}.brown-600-border-top{border-top-color:#6d4c41!important}.brown-600-border-right{border-right-color:#6d4c41!important}.brown-600-border-bottom{border-bottom-color:#6d4c41!important}.brown-600-border-left{border-left-color:#6d4c41!important}.brown-700-bg{background-color:#5d4037!important}.md-brown-700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-700-fg{color:#5d4037!important}.brown-700-border{border-color:#5d4037!important}.brown-700-border-top{border-top-color:#5d4037!important}.brown-700-border-right{border-right-color:#5d4037!important}.brown-700-border-bottom{border-bottom-color:#5d4037!important}.brown-700-border-left{border-left-color:#5d4037!important}.brown-800-bg{background-color:#4e342e!important}.md-brown-800-bg{background-color:#4e342e!important;color:rgba(255,255,255,.87)}.brown-800-fg{color:#4e342e!important}.brown-800-border{border-color:#4e342e!important}.brown-800-border-top{border-top-color:#4e342e!important}.brown-800-border-right{border-right-color:#4e342e!important}.brown-800-border-bottom{border-bottom-color:#4e342e!important}.brown-800-border-left{border-left-color:#4e342e!important}.brown-900-bg{background-color:#3e2723!important}.md-brown-900-bg{background-color:#3e2723!important;color:rgba(255,255,255,.87)}.brown-900-fg{color:#3e2723!important}.brown-900-border{border-color:#3e2723!important}.brown-900-border-top{border-top-color:#3e2723!important}.brown-900-border-right{border-right-color:#3e2723!important}.brown-900-border-bottom{border-bottom-color:#3e2723!important}.brown-900-border-left{border-left-color:#3e2723!important}.brown-A100-bg{background-color:#d7ccc8!important}.md-brown-A100-bg{background-color:#d7ccc8!important;color:rgba(255,255,255,.87)}.brown-A100-fg{color:#d7ccc8!important}.brown-A100-border{border-color:#d7ccc8!important}.brown-A100-border-top{border-top-color:#d7ccc8!important}.brown-A100-border-right{border-right-color:#d7ccc8!important}.brown-A100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-A100-border-left{border-left-color:#d7ccc8!important}.brown-A200-bg{background-color:#bcaaa4!important}.md-brown-A200-bg{background-color:#bcaaa4!important;color:rgba(255,255,255,.87)}.brown-A200-fg{color:#bcaaa4!important}.brown-A200-border{border-color:#bcaaa4!important}.brown-A200-border-top{border-top-color:#bcaaa4!important}.brown-A200-border-right{border-right-color:#bcaaa4!important}.brown-A200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-A200-border-left{border-left-color:#bcaaa4!important}.brown-A400-bg{background-color:#8d6e63!important}.md-brown-A400-bg{background-color:#8d6e63!important;color:rgba(255,255,255,.87)}.brown-A400-fg{color:#8d6e63!important}.brown-A400-border{border-color:#8d6e63!important}.brown-A400-border-top{border-top-color:#8d6e63!important}.brown-A400-border-right{border-right-color:#8d6e63!important}.brown-A400-border-bottom{border-bottom-color:#8d6e63!important}.brown-A400-border-left{border-left-color:#8d6e63!important}.brown-A700-bg{background-color:#5d4037!important}.md-brown-A700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-A700-fg{color:#5d4037!important}.brown-A700-border{border-color:#5d4037!important}.brown-A700-border-top{border-top-color:#5d4037!important}.brown-A700-border-right{border-right-color:#5d4037!important}.brown-A700-border-bottom{border-bottom-color:#5d4037!important}.brown-A700-border-left{border-left-color:#5d4037!important}.grey-50-bg{background-color:#fafafa!important}.md-grey-50-bg{background-color:#fafafa!important;color:rgba(0,0,0,.87)}.grey-50-fg{color:#fafafa!important}.grey-50-border{border-color:#fafafa!important}.grey-50-border-top{border-top-color:#fafafa!important}.grey-50-border-right{border-right-color:#fafafa!important}.grey-50-border-bottom{border-bottom-color:#fafafa!important}.grey-50-border-left{border-left-color:#fafafa!important}.grey-100-bg{background-color:#f5f5f5!important}.md-grey-100-bg{background-color:#f5f5f5!important;color:rgba(0,0,0,.87)}.grey-100-fg{color:#f5f5f5!important}.grey-100-border{border-color:#f5f5f5!important}.grey-100-border-top{border-top-color:#f5f5f5!important}.grey-100-border-right{border-right-color:#f5f5f5!important}.grey-100-border-bottom{border-bottom-color:#f5f5f5!important}.grey-100-border-left{border-left-color:#f5f5f5!important}.grey-200-bg{background-color:#eee!important}.md-grey-200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-200-fg{color:#eee!important}.grey-200-border{border-color:#eee!important}.grey-200-border-top{border-top-color:#eee!important}.grey-200-border-right{border-right-color:#eee!important}.grey-200-border-bottom{border-bottom-color:#eee!important}.grey-200-border-left{border-left-color:#eee!important}.grey-300-bg{background-color:#e0e0e0!important}.md-grey-300-bg{background-color:#e0e0e0!important;color:rgba(0,0,0,.87)}.grey-300-fg{color:#e0e0e0!important}.grey-300-border{border-color:#e0e0e0!important}.grey-300-border-top{border-top-color:#e0e0e0!important}.grey-300-border-right{border-right-color:#e0e0e0!important}.grey-300-border-bottom{border-bottom-color:#e0e0e0!important}.grey-300-border-left{border-left-color:#e0e0e0!important}.grey-400-bg{background-color:#bdbdbd!important}.md-grey-400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-400-fg{color:#bdbdbd!important}.grey-400-border{border-color:#bdbdbd!important}.grey-400-border-top{border-top-color:#bdbdbd!important}.grey-400-border-right{border-right-color:#bdbdbd!important}.grey-400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-400-border-left{border-left-color:#bdbdbd!important}.grey-500-bg{background-color:#9e9e9e!important}.md-grey-500-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-500-fg{color:#9e9e9e!important}.grey-500-border{border-color:#9e9e9e!important}.grey-500-border-top{border-top-color:#9e9e9e!important}.grey-500-border-right{border-right-color:#9e9e9e!important}.grey-500-border-bottom{border-bottom-color:#9e9e9e!important}.grey-500-border-left{border-left-color:#9e9e9e!important}.md-grey-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-bg{background-color:#9e9e9e!important}.grey-fg{color:#9e9e9e!important}.grey-border{border-color:#9e9e9e!important}.grey-border-top{border-top-color:#9e9e9e!important}.grey-border-right{border-right-color:#9e9e9e!important}.grey-border-bottom{border-bottom-color:#9e9e9e!important}.grey-border-left{border-left-color:#9e9e9e!important}.grey-600-bg{background-color:#757575!important}.md-grey-600-bg{background-color:#757575!important;color:rgba(255,255,255,.87)}.grey-600-fg{color:#757575!important}.grey-600-border{border-color:#757575!important}.grey-600-border-top{border-top-color:#757575!important}.grey-600-border-right{border-right-color:#757575!important}.grey-600-border-bottom{border-bottom-color:#757575!important}.grey-600-border-left{border-left-color:#757575!important}.grey-700-bg{background-color:#616161!important}.md-grey-700-bg{background-color:#616161!important;color:rgba(255,255,255,.87)}.grey-700-fg{color:#616161!important}.grey-700-border{border-color:#616161!important}.grey-700-border-top{border-top-color:#616161!important}.grey-700-border-right{border-right-color:#616161!important}.grey-700-border-bottom{border-bottom-color:#616161!important}.grey-700-border-left{border-left-color:#616161!important}.grey-800-bg{background-color:#424242!important}.md-grey-800-bg{background-color:#424242!important;color:rgba(255,255,255,.87)}.grey-800-fg{color:#424242!important}.grey-800-border{border-color:#424242!important}.grey-800-border-top{border-top-color:#424242!important}.grey-800-border-right{border-right-color:#424242!important}.grey-800-border-bottom{border-bottom-color:#424242!important}.grey-800-border-left{border-left-color:#424242!important}.grey-900-bg{background-color:#212121!important}.md-grey-900-bg{background-color:#212121!important;color:rgba(255,255,255,.87)}.grey-900-fg{color:#212121!important}.grey-900-border{border-color:#212121!important}.grey-900-border-top{border-top-color:#212121!important}.grey-900-border-right{border-right-color:#212121!important}.grey-900-border-bottom{border-bottom-color:#212121!important}.grey-900-border-left{border-left-color:#212121!important}.grey-1000-bg{background-color:#000!important}.md-grey-1000-bg{background-color:#000!important}.grey-1000-fg{color:#000!important}.grey-1000-border{border-color:#000!important}.grey-1000-border-top{border-top-color:#000!important}.grey-1000-border-right{border-right-color:#000!important}.grey-1000-border-bottom{border-bottom-color:#000!important}.grey-1000-border-left{border-left-color:#000!important}.grey-A100-bg{background-color:#fff!important}.md-grey-A100-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.grey-A100-fg{color:#fff!important}.grey-A100-border{border-color:#fff!important}.grey-A100-border-top{border-top-color:#fff!important}.grey-A100-border-right{border-right-color:#fff!important}.grey-A100-border-bottom{border-bottom-color:#fff!important}.grey-A100-border-left{border-left-color:#fff!important}.grey-A200-bg{background-color:#eee!important}.md-grey-A200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-A200-fg{color:#eee!important}.grey-A200-border{border-color:#eee!important}.grey-A200-border-top{border-top-color:#eee!important}.grey-A200-border-right{border-right-color:#eee!important}.grey-A200-border-bottom{border-bottom-color:#eee!important}.grey-A200-border-left{border-left-color:#eee!important}.grey-A400-bg{background-color:#bdbdbd!important}.md-grey-A400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-A400-fg{color:#bdbdbd!important}.grey-A400-border{border-color:#bdbdbd!important}.grey-A400-border-top{border-top-color:#bdbdbd!important}.grey-A400-border-right{border-right-color:#bdbdbd!important}.grey-A400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-A400-border-left{border-left-color:#bdbdbd!important}.grey-A700-bg{background-color:#616161!important}.md-grey-A700-bg{background-color:#616161!important;color:rgba(0,0,0,.87)}.grey-A700-fg{color:#616161!important}.grey-A700-border{border-color:#616161!important}.grey-A700-border-top{border-top-color:#616161!important}.grey-A700-border-right{border-right-color:#616161!important}.grey-A700-border-bottom{border-bottom-color:#616161!important}.grey-A700-border-left{border-left-color:#616161!important}.blue-grey-50-bg{background-color:#eceff1!important}.md-blue-grey-50-bg{background-color:#eceff1!important;color:rgba(0,0,0,.87)}.blue-grey-50-fg{color:#eceff1!important}.blue-grey-50-border{border-color:#eceff1!important}.blue-grey-50-border-top{border-top-color:#eceff1!important}.blue-grey-50-border-right{border-right-color:#eceff1!important}.blue-grey-50-border-bottom{border-bottom-color:#eceff1!important}.blue-grey-50-border-left{border-left-color:#eceff1!important}.blue-grey-100-bg{background-color:#cfd8dc!important}.md-blue-grey-100-bg{background-color:#cfd8dc!important;color:rgba(0,0,0,.87)}.blue-grey-100-fg{color:#cfd8dc!important}.blue-grey-100-border{border-color:#cfd8dc!important}.blue-grey-100-border-top{border-top-color:#cfd8dc!important}.blue-grey-100-border-right{border-right-color:#cfd8dc!important}.blue-grey-100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-100-border-left{border-left-color:#cfd8dc!important}.blue-grey-200-bg{background-color:#b0bec5!important}.md-blue-grey-200-bg{background-color:#b0bec5!important;color:rgba(0,0,0,.87)}.blue-grey-200-fg{color:#b0bec5!important}.blue-grey-200-border{border-color:#b0bec5!important}.blue-grey-200-border-top{border-top-color:#b0bec5!important}.blue-grey-200-border-right{border-right-color:#b0bec5!important}.blue-grey-200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-200-border-left{border-left-color:#b0bec5!important}.blue-grey-300-bg{background-color:#90a4ae!important}.md-blue-grey-300-bg{background-color:#90a4ae!important;color:rgba(0,0,0,.87)}.blue-grey-300-fg{color:#90a4ae!important}.blue-grey-300-border{border-color:#90a4ae!important}.blue-grey-300-border-top{border-top-color:#90a4ae!important}.blue-grey-300-border-right{border-right-color:#90a4ae!important}.blue-grey-300-border-bottom{border-bottom-color:#90a4ae!important}.blue-grey-300-border-left{border-left-color:#90a4ae!important}.blue-grey-400-bg{background-color:#78909c!important}.md-blue-grey-400-bg{background-color:#78909c!important;color:#fff}.blue-grey-400-fg{color:#78909c!important}.blue-grey-400-border{border-color:#78909c!important}.blue-grey-400-border-top{border-top-color:#78909c!important}.blue-grey-400-border-right{border-right-color:#78909c!important}.blue-grey-400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-400-border-left{border-left-color:#78909c!important}.blue-grey-500-bg{background-color:#607d8b!important}.md-blue-grey-500-bg{background-color:#607d8b!important;color:#fff}.blue-grey-500-fg{color:#607d8b!important}.blue-grey-500-border{border-color:#607d8b!important}.blue-grey-500-border-top{border-top-color:#607d8b!important}.blue-grey-500-border-right{border-right-color:#607d8b!important}.blue-grey-500-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-500-border-left{border-left-color:#607d8b!important}.md-blue-grey-bg{background-color:#607d8b!important;color:#fff}.blue-grey-bg{background-color:#607d8b!important}.blue-grey-fg{color:#607d8b!important}.blue-grey-border{border-color:#607d8b!important}.blue-grey-border-top{border-top-color:#607d8b!important}.blue-grey-border-right{border-right-color:#607d8b!important}.blue-grey-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-border-left{border-left-color:#607d8b!important}.blue-grey-600-bg{background-color:#546e7a!important}.md-blue-grey-600-bg{background-color:#546e7a!important;color:rgba(255,255,255,.87)}.blue-grey-600-fg{color:#546e7a!important}.blue-grey-600-border{border-color:#546e7a!important}.blue-grey-600-border-top{border-top-color:#546e7a!important}.blue-grey-600-border-right{border-right-color:#546e7a!important}.blue-grey-600-border-bottom{border-bottom-color:#546e7a!important}.blue-grey-600-border-left{border-left-color:#546e7a!important}.blue-grey-700-bg{background-color:#455a64!important}.md-blue-grey-700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-700-fg{color:#455a64!important}.blue-grey-700-border{border-color:#455a64!important}.blue-grey-700-border-top{border-top-color:#455a64!important}.blue-grey-700-border-right{border-right-color:#455a64!important}.blue-grey-700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-700-border-left{border-left-color:#455a64!important}.blue-grey-800-bg{background-color:#37474f!important}.md-blue-grey-800-bg{background-color:#37474f!important;color:rgba(255,255,255,.87)}.blue-grey-800-fg{color:#37474f!important}.blue-grey-800-border{border-color:#37474f!important}.blue-grey-800-border-top{border-top-color:#37474f!important}.blue-grey-800-border-right{border-right-color:#37474f!important}.blue-grey-800-border-bottom{border-bottom-color:#37474f!important}.blue-grey-800-border-left{border-left-color:#37474f!important}.blue-grey-900-bg{background-color:#263238!important}.md-blue-grey-900-bg{background-color:#263238!important;color:rgba(255,255,255,.87)}.blue-grey-900-fg{color:#263238!important}.blue-grey-900-border{border-color:#263238!important}.blue-grey-900-border-top{border-top-color:#263238!important}.blue-grey-900-border-right{border-right-color:#263238!important}.blue-grey-900-border-bottom{border-bottom-color:#263238!important}.blue-grey-900-border-left{border-left-color:#263238!important}.blue-grey-A100-bg{background-color:#cfd8dc!important}.md-blue-grey-A100-bg{background-color:#cfd8dc!important;color:rgba(255,255,255,.87)}.blue-grey-A100-fg{color:#cfd8dc!important}.blue-grey-A100-border{border-color:#cfd8dc!important}.blue-grey-A100-border-top{border-top-color:#cfd8dc!important}.blue-grey-A100-border-right{border-right-color:#cfd8dc!important}.blue-grey-A100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-A100-border-left{border-left-color:#cfd8dc!important}.blue-grey-A200-bg{background-color:#b0bec5!important}.md-blue-grey-A200-bg{background-color:#b0bec5!important;color:rgba(255,255,255,.87)}.blue-grey-A200-fg{color:#b0bec5!important}.blue-grey-A200-border{border-color:#b0bec5!important}.blue-grey-A200-border-top{border-top-color:#b0bec5!important}.blue-grey-A200-border-right{border-right-color:#b0bec5!important}.blue-grey-A200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-A200-border-left{border-left-color:#b0bec5!important}.blue-grey-A400-bg{background-color:#78909c!important}.md-blue-grey-A400-bg{background-color:#78909c!important;color:rgba(255,255,255,.87)}.blue-grey-A400-fg{color:#78909c!important}.blue-grey-A400-border{border-color:#78909c!important}.blue-grey-A400-border-top{border-top-color:#78909c!important}.blue-grey-A400-border-right{border-right-color:#78909c!important}.blue-grey-A400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-A400-border-left{border-left-color:#78909c!important}.blue-grey-A700-bg{background-color:#455a64!important}.md-blue-grey-A700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-A700-fg{color:#455a64!important}.blue-grey-A700-border{border-color:#455a64!important}.blue-grey-A700-border-top{border-top-color:#455a64!important}.blue-grey-A700-border-right{border-right-color:#455a64!important}.blue-grey-A700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-A700-border-left{border-left-color:#455a64!important}.white-500-bg{background-color:#fff!important}.md-white-500-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-500-fg{color:#fff!important}.white-500-border{border-color:#fff!important}.white-500-border-top{border-top-color:#fff!important}.white-500-border-right{border-right-color:#fff!important}.white-500-border-bottom{border-bottom-color:#fff!important}.white-500-border-left{border-left-color:#fff!important}.md-white-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-bg{background-color:#fff!important}.white-fg{color:#fff!important}.white-border{border-color:#fff!important}.white-border-top{border-top-color:#fff!important}.white-border-right{border-right-color:#fff!important}.white-border-bottom{border-bottom-color:#fff!important}.white-border-left{border-left-color:#fff!important}.black-500-bg{background-color:#000!important}.md-black-500-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-500-fg{color:#000!important}.black-500-border{border-color:#000!important}.black-500-border-top{border-top-color:#000!important}.black-500-border-right{border-right-color:#000!important}.black-500-border-bottom{border-bottom-color:#000!important}.black-500-border-left{border-left-color:#000!important}.md-black-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-bg{background-color:#000!important}.black-fg{color:#000!important}.black-border{border-color:#000!important}.black-border-top{border-top-color:#000!important}.black-border-right{border-right-color:#000!important}.black-border-bottom{border-bottom-color:#000!important}.black-border-left{border-left-color:#000!important}i,md-icon[md-font-icon]{font-size:24px;width:24px;height:24px;min-width:24px;min-height:24px;line-height:24px}i.s4,md-icon[md-font-icon].s4{font-size:4px!important;width:4px!important;height:4px!important;min-width:4px!important;min-height:4px!important;line-height:4px!important}i.s6,md-icon[md-font-icon].s6{font-size:6px!important;width:6px!important;height:6px!important;min-width:6px!important;min-height:6px!important;line-height:6px!important}i.s8,md-icon[md-font-icon].s8{font-size:8px!important;width:8px!important;height:8px!important;min-width:8px!important;min-height:8px!important;line-height:8px!important}i.s10,md-icon[md-font-icon].s10{font-size:10px!important;width:10px!important;height:10px!important;min-width:10px!important;min-height:10px!important;line-height:10px!important}i.s12,md-icon[md-font-icon].s12{font-size:12px!important;width:12px!important;height:12px!important;min-width:12px!important;min-height:12px!important;line-height:12px!important}i.s14,md-icon[md-font-icon].s14{font-size:14px!important;width:14px!important;height:14px!important;min-width:14px!important;min-height:14px!important;line-height:14px!important}i.s16,md-icon[md-font-icon].s16{font-size:16px!important;width:16px!important;height:16px!important;min-width:16px!important;min-height:16px!important;line-height:16px!important}i.s18,md-icon[md-font-icon].s18{font-size:18px!important;width:18px!important;height:18px!important;min-width:18px!important;min-height:18px!important;line-height:18px!important}i.s20,md-icon[md-font-icon].s20{font-size:20px!important;width:20px!important;height:20px!important;min-width:20px!important;min-height:20px!important;line-height:20px!important}i.s22,md-icon[md-font-icon].s22{font-size:22px!important;width:22px!important;height:22px!important;min-width:22px!important;min-height:22px!important;line-height:22px!important}i.s24,md-icon[md-font-icon].s24{font-size:24px!important;width:24px!important;height:24px!important;min-width:24px!important;min-height:24px!important;line-height:24px!important}i.s26,md-icon[md-font-icon].s26{font-size:26px!important;width:26px!important;height:26px!important;min-width:26px!important;min-height:26px!important;line-height:26px!important}i.s28,md-icon[md-font-icon].s28{font-size:28px!important;width:28px!important;height:28px!important;min-width:28px!important;min-height:28px!important;line-height:28px!important}i.s30,md-icon[md-font-icon].s30{font-size:30px!important;width:30px!important;height:30px!important;min-width:30px!important;min-height:30px!important;line-height:30px!important}i.s32,md-icon[md-font-icon].s32{font-size:32px!important;width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;line-height:32px!important}i.s34,md-icon[md-font-icon].s34{font-size:34px!important;width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important;line-height:34px!important}i.s36,md-icon[md-font-icon].s36{font-size:36px!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;line-height:36px!important}i.s38,md-icon[md-font-icon].s38{font-size:38px!important;width:38px!important;height:38px!important;min-width:38px!important;min-height:38px!important;line-height:38px!important}i.s40,md-icon[md-font-icon].s40{font-size:40px!important;width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;line-height:40px!important}i.s42,md-icon[md-font-icon].s42{font-size:42px!important;width:42px!important;height:42px!important;min-width:42px!important;min-height:42px!important;line-height:42px!important}i.s44,md-icon[md-font-icon].s44{font-size:44px!important;width:44px!important;height:44px!important;min-width:44px!important;min-height:44px!important;line-height:44px!important}i.s46,md-icon[md-font-icon].s46{font-size:46px!important;width:46px!important;height:46px!important;min-width:46px!important;min-height:46px!important;line-height:46px!important}i.s48,md-icon[md-font-icon].s48{font-size:48px!important;width:48px!important;height:48px!important;min-width:48px!important;min-height:48px!important;line-height:48px!important}i.s50,md-icon[md-font-icon].s50{font-size:50px!important;width:50px!important;height:50px!important;min-width:50px!important;min-height:50px!important;line-height:50px!important}i.s52,md-icon[md-font-icon].s52{font-size:52px!important;width:52px!important;height:52px!important;min-width:52px!important;min-height:52px!important;line-height:52px!important}i.s54,md-icon[md-font-icon].s54{font-size:54px!important;width:54px!important;height:54px!important;min-width:54px!important;min-height:54px!important;line-height:54px!important}i.s56,md-icon[md-font-icon].s56{font-size:56px!important;width:56px!important;height:56px!important;min-width:56px!important;min-height:56px!important;line-height:56px!important}i.s58,md-icon[md-font-icon].s58{font-size:58px!important;width:58px!important;height:58px!important;min-width:58px!important;min-height:58px!important;line-height:58px!important}i.s60,md-icon[md-font-icon].s60{font-size:60px!important;width:60px!important;height:60px!important;min-width:60px!important;min-height:60px!important;line-height:60px!important}i.s62,md-icon[md-font-icon].s62{font-size:62px!important;width:62px!important;height:62px!important;min-width:62px!important;min-height:62px!important;line-height:62px!important}i.s64,md-icon[md-font-icon].s64{font-size:64px!important;width:64px!important;height:64px!important;min-width:64px!important;min-height:64px!important;line-height:64px!important}i.s66,md-icon[md-font-icon].s66{font-size:66px!important;width:66px!important;height:66px!important;min-width:66px!important;min-height:66px!important;line-height:66px!important}i.s68,md-icon[md-font-icon].s68{font-size:68px!important;width:68px!important;height:68px!important;min-width:68px!important;min-height:68px!important;line-height:68px!important}i.s70,md-icon[md-font-icon].s70{font-size:70px!important;width:70px!important;height:70px!important;min-width:70px!important;min-height:70px!important;line-height:70px!important}i.s72,md-icon[md-font-icon].s72{font-size:72px!important;width:72px!important;height:72px!important;min-width:72px!important;min-height:72px!important;line-height:72px!important}i.s74,md-icon[md-font-icon].s74{font-size:74px!important;width:74px!important;height:74px!important;min-width:74px!important;min-height:74px!important;line-height:74px!important}i.s76,md-icon[md-font-icon].s76{font-size:76px!important;width:76px!important;height:76px!important;min-width:76px!important;min-height:76px!important;line-height:76px!important}i.s78,md-icon[md-font-icon].s78{font-size:78px!important;width:78px!important;height:78px!important;min-width:78px!important;min-height:78px!important;line-height:78px!important}i.s80,md-icon[md-font-icon].s80{font-size:80px!important;width:80px!important;height:80px!important;min-width:80px!important;min-height:80px!important;line-height:80px!important}i.s82,md-icon[md-font-icon].s82{font-size:82px!important;width:82px!important;height:82px!important;min-width:82px!important;min-height:82px!important;line-height:82px!important}i.s84,md-icon[md-font-icon].s84{font-size:84px!important;width:84px!important;height:84px!important;min-width:84px!important;min-height:84px!important;line-height:84px!important}i.s86,md-icon[md-font-icon].s86{font-size:86px!important;width:86px!important;height:86px!important;min-width:86px!important;min-height:86px!important;line-height:86px!important}i.s88,md-icon[md-font-icon].s88{font-size:88px!important;width:88px!important;height:88px!important;min-width:88px!important;min-height:88px!important;line-height:88px!important}i.s90,md-icon[md-font-icon].s90{font-size:90px!important;width:90px!important;height:90px!important;min-width:90px!important;min-height:90px!important;line-height:90px!important}i.s92,md-icon[md-font-icon].s92{font-size:92px!important;width:92px!important;height:92px!important;min-width:92px!important;min-height:92px!important;line-height:92px!important}i.s94,md-icon[md-font-icon].s94{font-size:94px!important;width:94px!important;height:94px!important;min-width:94px!important;min-height:94px!important;line-height:94px!important}i.s96,md-icon[md-font-icon].s96{font-size:96px!important;width:96px!important;height:96px!important;min-width:96px!important;min-height:96px!important;line-height:96px!important}i.s98,md-icon[md-font-icon].s98{font-size:98px!important;width:98px!important;height:98px!important;min-width:98px!important;min-height:98px!important;line-height:98px!important}i.s100,md-icon[md-font-icon].s100{font-size:100px!important;width:100px!important;height:100px!important;min-width:100px!important;min-height:100px!important;line-height:100px!important}i.s102,md-icon[md-font-icon].s102{font-size:102px!important;width:102px!important;height:102px!important;min-width:102px!important;min-height:102px!important;line-height:102px!important}i.s104,md-icon[md-font-icon].s104{font-size:104px!important;width:104px!important;height:104px!important;min-width:104px!important;min-height:104px!important;line-height:104px!important}i.s106,md-icon[md-font-icon].s106{font-size:106px!important;width:106px!important;height:106px!important;min-width:106px!important;min-height:106px!important;line-height:106px!important}i.s108,md-icon[md-font-icon].s108{font-size:108px!important;width:108px!important;height:108px!important;min-width:108px!important;min-height:108px!important;line-height:108px!important}i.s110,md-icon[md-font-icon].s110{font-size:110px!important;width:110px!important;height:110px!important;min-width:110px!important;min-height:110px!important;line-height:110px!important}i.s112,md-icon[md-font-icon].s112{font-size:112px!important;width:112px!important;height:112px!important;min-width:112px!important;min-height:112px!important;line-height:112px!important}i.s114,md-icon[md-font-icon].s114{font-size:114px!important;width:114px!important;height:114px!important;min-width:114px!important;min-height:114px!important;line-height:114px!important}i.s116,md-icon[md-font-icon].s116{font-size:116px!important;width:116px!important;height:116px!important;min-width:116px!important;min-height:116px!important;line-height:116px!important}i.s118,md-icon[md-font-icon].s118{font-size:118px!important;width:118px!important;height:118px!important;min-width:118px!important;min-height:118px!important;line-height:118px!important}i.s120,md-icon[md-font-icon].s120{font-size:120px!important;width:120px!important;height:120px!important;min-width:120px!important;min-height:120px!important;line-height:120px!important}i.s122,md-icon[md-font-icon].s122{font-size:122px!important;width:122px!important;height:122px!important;min-width:122px!important;min-height:122px!important;line-height:122px!important}i.s124,md-icon[md-font-icon].s124{font-size:124px!important;width:124px!important;height:124px!important;min-width:124px!important;min-height:124px!important;line-height:124px!important}i.s126,md-icon[md-font-icon].s126{font-size:126px!important;width:126px!important;height:126px!important;min-width:126px!important;min-height:126px!important;line-height:126px!important}i.s128,md-icon[md-font-icon].s128{font-size:128px!important;width:128px!important;height:128px!important;min-width:128px!important;min-height:128px!important;line-height:128px!important}i.s130,md-icon[md-font-icon].s130{font-size:130px!important;width:130px!important;height:130px!important;min-width:130px!important;min-height:130px!important;line-height:130px!important}i.s132,md-icon[md-font-icon].s132{font-size:132px!important;width:132px!important;height:132px!important;min-width:132px!important;min-height:132px!important;line-height:132px!important}i.s134,md-icon[md-font-icon].s134{font-size:134px!important;width:134px!important;height:134px!important;min-width:134px!important;min-height:134px!important;line-height:134px!important}i.s136,md-icon[md-font-icon].s136{font-size:136px!important;width:136px!important;height:136px!important;min-width:136px!important;min-height:136px!important;line-height:136px!important}i.s138,md-icon[md-font-icon].s138{font-size:138px!important;width:138px!important;height:138px!important;min-width:138px!important;min-height:138px!important;line-height:138px!important}i.s140,md-icon[md-font-icon].s140{font-size:140px!important;width:140px!important;height:140px!important;min-width:140px!important;min-height:140px!important;line-height:140px!important}i.s142,md-icon[md-font-icon].s142{font-size:142px!important;width:142px!important;height:142px!important;min-width:142px!important;min-height:142px!important;line-height:142px!important}i.s144,md-icon[md-font-icon].s144{font-size:144px!important;width:144px!important;height:144px!important;min-width:144px!important;min-height:144px!important;line-height:144px!important}i.s146,md-icon[md-font-icon].s146{font-size:146px!important;width:146px!important;height:146px!important;min-width:146px!important;min-height:146px!important;line-height:146px!important}i.s148,md-icon[md-font-icon].s148{font-size:148px!important;width:148px!important;height:148px!important;min-width:148px!important;min-height:148px!important;line-height:148px!important}i.s150,md-icon[md-font-icon].s150{font-size:150px!important;width:150px!important;height:150px!important;min-width:150px!important;min-height:150px!important;line-height:150px!important}i.s152,md-icon[md-font-icon].s152{font-size:152px!important;width:152px!important;height:152px!important;min-width:152px!important;min-height:152px!important;line-height:152px!important}i.s154,md-icon[md-font-icon].s154{font-size:154px!important;width:154px!important;height:154px!important;min-width:154px!important;min-height:154px!important;line-height:154px!important}i.s156,md-icon[md-font-icon].s156{font-size:156px!important;width:156px!important;height:156px!important;min-width:156px!important;min-height:156px!important;line-height:156px!important}i.s158,md-icon[md-font-icon].s158{font-size:158px!important;width:158px!important;height:158px!important;min-width:158px!important;min-height:158px!important;line-height:158px!important}i.s160,md-icon[md-font-icon].s160{font-size:160px!important;width:160px!important;height:160px!important;min-width:160px!important;min-height:160px!important;line-height:160px!important}i.s162,md-icon[md-font-icon].s162{font-size:162px!important;width:162px!important;height:162px!important;min-width:162px!important;min-height:162px!important;line-height:162px!important}i.s164,md-icon[md-font-icon].s164{font-size:164px!important;width:164px!important;height:164px!important;min-width:164px!important;min-height:164px!important;line-height:164px!important}i.s166,md-icon[md-font-icon].s166{font-size:166px!important;width:166px!important;height:166px!important;min-width:166px!important;min-height:166px!important;line-height:166px!important}i.s168,md-icon[md-font-icon].s168{font-size:168px!important;width:168px!important;height:168px!important;min-width:168px!important;min-height:168px!important;line-height:168px!important}i.s170,md-icon[md-font-icon].s170{font-size:170px!important;width:170px!important;height:170px!important;min-width:170px!important;min-height:170px!important;line-height:170px!important}i.s172,md-icon[md-font-icon].s172{font-size:172px!important;width:172px!important;height:172px!important;min-width:172px!important;min-height:172px!important;line-height:172px!important}i.s174,md-icon[md-font-icon].s174{font-size:174px!important;width:174px!important;height:174px!important;min-width:174px!important;min-height:174px!important;line-height:174px!important}i.s176,md-icon[md-font-icon].s176{font-size:176px!important;width:176px!important;height:176px!important;min-width:176px!important;min-height:176px!important;line-height:176px!important}i.s178,md-icon[md-font-icon].s178{font-size:178px!important;width:178px!important;height:178px!important;min-width:178px!important;min-height:178px!important;line-height:178px!important}i.s180,md-icon[md-font-icon].s180{font-size:180px!important;width:180px!important;height:180px!important;min-width:180px!important;min-height:180px!important;line-height:180px!important}i.s182,md-icon[md-font-icon].s182{font-size:182px!important;width:182px!important;height:182px!important;min-width:182px!important;min-height:182px!important;line-height:182px!important}i.s184,md-icon[md-font-icon].s184{font-size:184px!important;width:184px!important;height:184px!important;min-width:184px!important;min-height:184px!important;line-height:184px!important}i.s186,md-icon[md-font-icon].s186{font-size:186px!important;width:186px!important;height:186px!important;min-width:186px!important;min-height:186px!important;line-height:186px!important}i.s188,md-icon[md-font-icon].s188{font-size:188px!important;width:188px!important;height:188px!important;min-width:188px!important;min-height:188px!important;line-height:188px!important}i.s190,md-icon[md-font-icon].s190{font-size:190px!important;width:190px!important;height:190px!important;min-width:190px!important;min-height:190px!important;line-height:190px!important}i.s192,md-icon[md-font-icon].s192{font-size:192px!important;width:192px!important;height:192px!important;min-width:192px!important;min-height:192px!important;line-height:192px!important}i.s194,md-icon[md-font-icon].s194{font-size:194px!important;width:194px!important;height:194px!important;min-width:194px!important;min-height:194px!important;line-height:194px!important}i.s196,md-icon[md-font-icon].s196{font-size:196px!important;width:196px!important;height:196px!important;min-width:196px!important;min-height:196px!important;line-height:196px!important}i.s198,md-icon[md-font-icon].s198{font-size:198px!important;width:198px!important;height:198px!important;min-width:198px!important;min-height:198px!important;line-height:198px!important}i.s200,md-icon[md-font-icon].s200{font-size:200px!important;width:200px!important;height:200px!important;min-width:200px!important;min-height:200px!important;line-height:200px!important}i.s202,md-icon[md-font-icon].s202{font-size:202px!important;width:202px!important;height:202px!important;min-width:202px!important;min-height:202px!important;line-height:202px!important}i.s204,md-icon[md-font-icon].s204{font-size:204px!important;width:204px!important;height:204px!important;min-width:204px!important;min-height:204px!important;line-height:204px!important}i.s206,md-icon[md-font-icon].s206{font-size:206px!important;width:206px!important;height:206px!important;min-width:206px!important;min-height:206px!important;line-height:206px!important}i.s208,md-icon[md-font-icon].s208{font-size:208px!important;width:208px!important;height:208px!important;min-width:208px!important;min-height:208px!important;line-height:208px!important}i.s210,md-icon[md-font-icon].s210{font-size:210px!important;width:210px!important;height:210px!important;min-width:210px!important;min-height:210px!important;line-height:210px!important}i.s212,md-icon[md-font-icon].s212{font-size:212px!important;width:212px!important;height:212px!important;min-width:212px!important;min-height:212px!important;line-height:212px!important}i.s214,md-icon[md-font-icon].s214{font-size:214px!important;width:214px!important;height:214px!important;min-width:214px!important;min-height:214px!important;line-height:214px!important}i.s216,md-icon[md-font-icon].s216{font-size:216px!important;width:216px!important;height:216px!important;min-width:216px!important;min-height:216px!important;line-height:216px!important}i.s218,md-icon[md-font-icon].s218{font-size:218px!important;width:218px!important;height:218px!important;min-width:218px!important;min-height:218px!important;line-height:218px!important}i.s220,md-icon[md-font-icon].s220{font-size:220px!important;width:220px!important;height:220px!important;min-width:220px!important;min-height:220px!important;line-height:220px!important}i.s222,md-icon[md-font-icon].s222{font-size:222px!important;width:222px!important;height:222px!important;min-width:222px!important;min-height:222px!important;line-height:222px!important}i.s224,md-icon[md-font-icon].s224{font-size:224px!important;width:224px!important;height:224px!important;min-width:224px!important;min-height:224px!important;line-height:224px!important}i.s226,md-icon[md-font-icon].s226{font-size:226px!important;width:226px!important;height:226px!important;min-width:226px!important;min-height:226px!important;line-height:226px!important}i.s228,md-icon[md-font-icon].s228{font-size:228px!important;width:228px!important;height:228px!important;min-width:228px!important;min-height:228px!important;line-height:228px!important}i.s230,md-icon[md-font-icon].s230{font-size:230px!important;width:230px!important;height:230px!important;min-width:230px!important;min-height:230px!important;line-height:230px!important}i.s232,md-icon[md-font-icon].s232{font-size:232px!important;width:232px!important;height:232px!important;min-width:232px!important;min-height:232px!important;line-height:232px!important}i.s234,md-icon[md-font-icon].s234{font-size:234px!important;width:234px!important;height:234px!important;min-width:234px!important;min-height:234px!important;line-height:234px!important}i.s236,md-icon[md-font-icon].s236{font-size:236px!important;width:236px!important;height:236px!important;min-width:236px!important;min-height:236px!important;line-height:236px!important}i.s238,md-icon[md-font-icon].s238{font-size:238px!important;width:238px!important;height:238px!important;min-width:238px!important;min-height:238px!important;line-height:238px!important}i.s240,md-icon[md-font-icon].s240{font-size:240px!important;width:240px!important;height:240px!important;min-width:240px!important;min-height:240px!important;line-height:240px!important}i.s242,md-icon[md-font-icon].s242{font-size:242px!important;width:242px!important;height:242px!important;min-width:242px!important;min-height:242px!important;line-height:242px!important}i.s244,md-icon[md-font-icon].s244{font-size:244px!important;width:244px!important;height:244px!important;min-width:244px!important;min-height:244px!important;line-height:244px!important}i.s246,md-icon[md-font-icon].s246{font-size:246px!important;width:246px!important;height:246px!important;min-width:246px!important;min-height:246px!important;line-height:246px!important}i.s248,md-icon[md-font-icon].s248{font-size:248px!important;width:248px!important;height:248px!important;min-width:248px!important;min-height:248px!important;line-height:248px!important}i.s250,md-icon[md-font-icon].s250{font-size:250px!important;width:250px!important;height:250px!important;min-width:250px!important;min-height:250px!important;line-height:250px!important}i.s252,md-icon[md-font-icon].s252{font-size:252px!important;width:252px!important;height:252px!important;min-width:252px!important;min-height:252px!important;line-height:252px!important}i.s254,md-icon[md-font-icon].s254{font-size:254px!important;width:254px!important;height:254px!important;min-width:254px!important;min-height:254px!important;line-height:254px!important}i.s256,md-icon[md-font-icon].s256{font-size:256px!important;width:256px!important;height:256px!important;min-width:256px!important;min-height:256px!important;line-height:256px!important}@font-face{font-family:icomoon;src:url(../assets/icons/fonts/icomoon.eot?5km1tg);src:url(../assets/icons/fonts/icomoon.eot?#iefix5km1tg) format("embedded-opentype"),url(../assets/icons/fonts/icomoon.ttf?5km1tg) format("truetype"),url(../assets/icons/fonts/icomoon.woff?5km1tg) format("woff"),url(../assets/icons/fonts/icomoon.svg?5km1tg#icomoon) format("svg");font-weight:400;font-style:normal}[class*=' icon-'],[class^=icon-]{font-family:icomoon;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-account-alert:before{content:'\e600'}.icon-account-box-outline:before{content:'\e601'}.icon-account-box:before{content:'\e602'}.icon-account-check:before{content:'\e603'}.icon-account-circle:before{content:'\e604'}.icon-account-key:before{content:'\e605'}.icon-account-location:before{content:'\e606'}.icon-account-minus:before{content:'\e607'}.icon-account-multiple-outline:before{content:'\e608'}.icon-account-multiple-plus:before{content:'\e609'}.icon-account-multiple:before{content:'\e60a'}.icon-account-network:before{content:'\e60b'}.icon-account-outline:before{content:'\e60c'}.icon-account-plus:before{content:'\e60d'}.icon-account-remove:before{content:'\e60e'}.icon-account-search:before{content:'\e60f'}.icon-account-switch:before{content:'\e610'}.icon-account:before{content:'\e611'}.icon-airballoon:before{content:'\e612'}.icon-airplane-off:before{content:'\e613'}.icon-airplane:before{content:'\e614'}.icon-alarm-check:before{content:'\e615'}.icon-alarm-multiple:before{content:'\e616'}.icon-alarm-off:before{content:'\e617'}.icon-alarm-plus:before{content:'\e618'}.icon-alarm:before{content:'\e619'}.icon-album:before{content:'\e61a'}.icon-alert-box:before{content:'\e61b'}.icon-alert-circle:before{content:'\e61c'}.icon-alert-octagon:before{content:'\e61d'}.icon-alert:before{content:'\e61e'}.icon-alpha:before{content:'\e61f'}.icon-alphabetical:before{content:'\e620'}.icon-amazon-clouddrive:before{content:'\e621'}.icon-amazon:before{content:'\e622'}.icon-ambulance:before{content:'\e623'}.icon-android-debug-bridge:before{content:'\e624'}.icon-android-studio:before{content:'\e625'}.icon-android:before{content:'\e626'}.icon-apple-finder:before{content:'\e627'}.icon-apple-ios:before{content:'\e628'}.icon-apple-mobileme:before{content:'\e629'}.icon-apple-safari:before{content:'\e62a'}.icon-apple:before{content:'\e62b'}.icon-appnet:before{content:'\e62c'}.icon-apps:before{content:'\e62d'}.icon-archive:before{content:'\e62e'}.icon-arrange-bring-forward:before{content:'\e62f'}.icon-arrange-bring-to-front:before{content:'\e630'}.icon-arrange-send-backward:before{content:'\e631'}.icon-arrange-send-to-back:before{content:'\e632'}.icon-arrow-all:before{content:'\e633'}.icon-arrow-bottom-left:before{content:'\e634'}.icon-arrow-bottom-right:before{content:'\e635'}.icon-arrow-collapse:before{content:'\e636'}.icon-arrow-down-bold-circle-outline:before{content:'\e637'}.icon-arrow-down-bold-circle:before{content:'\e638'}.icon-arrow-down-bold-hexagon-outline:before{content:'\e639'}.icon-arrow-down-bold:before{content:'\e63a'}.icon-arrow-down:before{content:'\e63b'}.icon-arrow-expand:before{content:'\e63c'}.icon-arrow-left-bold-circle-outline:before{content:'\e63d'}.icon-arrow-left-bold-circle:before{content:'\e63e'}.icon-arrow-left-bold-hexagon-outline:before{content:'\e63f'}.icon-arrow-left-bold:before{content:'\e640'}.icon-arrow-left:before{content:'\e641'}.icon-arrow-right-bold-circle-outline:before{content:'\e642'}.icon-arrow-right-bold-circle:before{content:'\e643'}.icon-arrow-right-bold-hexagon-outline:before{content:'\e644'}.icon-arrow-right-bold:before{content:'\e645'}.icon-arrow-right:before{content:'\e646'}.icon-arrow-top-left:before{content:'\e647'}.icon-arrow-top-right:before{content:'\e648'}.icon-arrow-up-bold-circle-outline:before{content:'\e649'}.icon-arrow-up-bold-circle:before{content:'\e64a'}.icon-arrow-up-bold-hexagon-outline:before{content:'\e64b'}.icon-arrow-up-bold:before{content:'\e64c'}.icon-arrow-up:before{content:'\e64d'}.icon-at:before{content:'\e64e'}.icon-attachment:before{content:'\e64f'}.icon-audiobook:before{content:'\e650'}.icon-auto-fix:before{content:'\e651'}.icon-auto-upload:before{content:'\e652'}.icon-baby:before{content:'\e653'}.icon-backburger:before{content:'\e654'}.icon-backup-restore:before{content:'\e655'}.icon-bank:before{content:'\e656'}.icon-barcode:before{content:'\e657'}.icon-barley:before{content:'\e658'}.icon-barrel:before{content:'\e659'}.icon-basecamp:before{content:'\e65a'}.icon-basket-fill:before{content:'\e65b'}.icon-basket-unfill:before{content:'\e65c'}.icon-basket:before{content:'\e65d'}.icon-battery-10:before{content:'\e65e'}.icon-battery-20:before{content:'\e65f'}.icon-battery-30:before{content:'\e660'}.icon-battery-40:before{content:'\e661'}.icon-battery-50:before{content:'\e662'}.icon-battery-60:before{content:'\e663'}.icon-battery-70:before{content:'\e664'}.icon-battery-80:before{content:'\e665'}.icon-battery-90:before{content:'\e666'}.icon-battery-alert:before{content:'\e667'}.icon-battery-charging-20:before{content:'\e668'}.icon-battery-charging-30:before{content:'\e669'}.icon-battery-charging-40:before{content:'\e66a'}.icon-battery-charging-60:before{content:'\e66b'}.icon-battery-charging-80:before{content:'\e66c'}.icon-battery-charging-90:before{content:'\e66d'}.icon-battery-charging-100:before{content:'\e66e'}.icon-battery-minus:before{content:'\e66f'}.icon-battery-negative:before{content:'\e670'}.icon-battery-outline:before{content:'\e671'}.icon-battery-plus:before{content:'\e672'}.icon-battery-positive:before{content:'\e673'}.icon-battery-standard:before{content:'\e674'}.icon-battery-unknown:before{content:'\e675'}.icon-battery:before{content:'\e676'}.icon-beach:before{content:'\e677'}.icon-beaker-empty-outline:before{content:'\e678'}.icon-beaker-empty:before{content:'\e679'}.icon-beaker-outline:before{content:'\e67a'}.icon-beaker:before{content:'\e67b'}.icon-beats:before{content:'\e67c'}.icon-beer:before{content:'\e67d'}.icon-behance:before{content:'\e67e'}.icon-bell-off:before{content:'\e67f'}.icon-bell-outline:before{content:'\e680'}.icon-bell-ring-outline:before{content:'\e681'}.icon-bell-ring:before{content:'\e682'}.icon-bell-sleep:before{content:'\e683'}.icon-bell:before{content:'\e684'}.icon-beta:before{content:'\e685'}.icon-bike:before{content:'\e686'}.icon-bing:before{content:'\e687'}.icon-binoculars:before{content:'\e688'}.icon-bio:before{content:'\e689'}.icon-bitbucket:before{content:'\e68a'}.icon-black-mesa:before{content:'\e68b'}.icon-blackberry:before{content:'\e68c'}.icon-blinds:before{content:'\e68d'}.icon-block-helper:before{content:'\e68e'}.icon-blogger:before{content:'\e68f'}.icon-bluetooth-audio:before{content:'\e690'}.icon-bluetooth-connect:before{content:'\e691'}.icon-bluetooth-settings:before{content:'\e692'}.icon-bluetooth-transfer:before{content:'\e693'}.icon-bluetooth:before{content:'\e694'}.icon-blur-linear:before{content:'\e695'}.icon-blur-off:before{content:'\e696'}.icon-blur-radial:before{content:'\e697'}.icon-blur:before{content:'\e698'}.icon-bone:before{content:'\e699'}.icon-book-multiple-variant:before{content:'\e69a'}.icon-book-multiple:before{content:'\e69b'}.icon-book-open:before{content:'\e69c'}.icon-book-variant:before{content:'\e69d'}.icon-book:before{content:'\e69e'}.icon-bookmark-check:before{content:'\e69f'}.icon-bookmark-music:before{content:'\e6a0'}.icon-bookmark-outline-plus:before{content:'\e6a1'}.icon-bookmark-outline:before{content:'\e6a2'}.icon-bookmark-plus:before{content:'\e6a3'}.icon-bookmark-remove:before{content:'\e6a4'}.icon-bookmark:before{content:'\e6a5'}.icon-border-all:before{content:'\e6a6'}.icon-border-bottom:before{content:'\e6a7'}.icon-border-color:before{content:'\e6a8'}.icon-border-horizontal:before{content:'\e6a9'}.icon-border-inside:before{content:'\e6aa'}.icon-border-left:before{content:'\e6ab'}.icon-border-none:before{content:'\e6ac'}.icon-border-outside:before{content:'\e6ad'}.icon-border-right:before{content:'\e6ae'}.icon-border-top:before{content:'\e6af'}.icon-border-vertical:before{content:'\e6b0'}.icon-bowling:before{content:'\e6b1'}.icon-box-download:before{content:'\e6b2'}.icon-box-upload:before{content:'\e6b3'}.icon-box:before{content:'\e6b4'}.icon-briefcase-checked:before{content:'\e6b5'}.icon-briefcase-download:before{content:'\e6b6'}.icon-briefcase-upload:before{content:'\e6b7'}.icon-briefcase:before{content:'\e6b8'}.icon-brightness-1:before{content:'\e6b9'}.icon-brightness-2:before{content:'\e6ba'}.icon-brightness-3:before{content:'\e6bb'}.icon-brightness-4:before{content:'\e6bc'}.icon-brightness-5:before{content:'\e6bd'}.icon-brightness-6:before{content:'\e6be'}.icon-brightness-7:before{content:'\e6bf'}.icon-brightness-auto:before{content:'\e6c0'}.icon-brightness:before{content:'\e6c1'}.icon-broom:before{content:'\e6c2'}.icon-brush:before{content:'\e6c3'}.icon-bug:before{content:'\e6c4'}.icon-bulletin-board:before{content:'\e6c5'}.icon-bullhorn:before{content:'\e6c6'}.icon-bus:before{content:'\e6c7'}.icon-cake-variant:before{content:'\e6c8'}.icon-cake:before{content:'\e6c9'}.icon-calculator:before{content:'\e6ca'}.icon-calendar-blank:before{content:'\e6cb'}.icon-calendar-check-multiple:before{content:'\e6cc'}.icon-calendar-check:before{content:'\e6cd'}.icon-calendar-clock:before{content:'\e6ce'}.icon-calendar-multiple:before{content:'\e6cf'}.icon-calendar-plus:before{content:'\e6d0'}.icon-calendar-remove:before{content:'\e6d1'}.icon-calendar-select:before{content:'\e6d2'}.icon-calendar-text:before{content:'\e6d3'}.icon-calendar-today:before{content:'\e6d4'}.icon-calendar:before{content:'\e6d5'}.icon-camcorder-box-off:before{content:'\e6d6'}.icon-camcorder-box:before{content:'\e6d7'}.icon-camcorder-off:before{content:'\e6d8'}.icon-camcorder:before{content:'\e6d9'}.icon-camera-front-variant:before{content:'\e6da'}.icon-camera-front:before{content:'\e6db'}.icon-camera-iris:before{content:'\e6dc'}.icon-camera-party-mode:before{content:'\e6dd'}.icon-camera-rear-variant:before{content:'\e6de'}.icon-camera-rear:before{content:'\e6df'}.icon-camera-switch:before{content:'\e6e0'}.icon-camera-timer:before{content:'\e6e1'}.icon-camera:before{content:'\e6e2'}.icon-cancel:before{content:'\e6e3'}.icon-candycane:before{content:'\e6e4'}.icon-car-wash:before{content:'\e6e5'}.icon-car:before{content:'\e6e6'}.icon-carrot:before{content:'\e6e7'}.icon-cart-outline:before{content:'\e6e8'}.icon-cart:before{content:'\e6e9'}.icon-cash-100:before{content:'\e6ea'}.icon-cash-multiple:before{content:'\e6eb'}.icon-cash-usd:before{content:'\e6ec'}.icon-cash:before{content:'\e6ed'}.icon-cast-connected:before{content:'\e6ee'}.icon-cast:before{content:'\e6ef'}.icon-castle:before{content:'\e6f0'}.icon-cat:before{content:'\e6f1'}.icon-cellphone-android:before{content:'\e6f2'}.icon-cellphone-dock:before{content:'\e6f3'}.icon-cellphone-iphone:before{content:'\e6f4'}.icon-cellphone-link-off:before{content:'\e6f5'}.icon-cellphone-link:before{content:'\e6f6'}.icon-cellphone-settings:before{content:'\e6f7'}.icon-cellphone:before{content:'\e6f8'}.icon-chair-school:before{content:'\e6f9'}.icon-chart-arc:before{content:'\e6fa'}.icon-chart-areaspline:before{content:'\e6fb'}.icon-chart-bar:before{content:'\e6fc'}.icon-chart-histogram:before{content:'\e6fd'}.icon-chart-line:before{content:'\e6fe'}.icon-chart-pie:before{content:'\e6ff'}.icon-check-all:before{content:'\e700'}.icon-check-bookmark:before{content:'\e701'}.icon-check-circle:before{content:'\e702'}.icon-check:before{content:'\e703'}.icon-checkbox-blank-circle-outline:before{content:'\e704'}.icon-checkbox-blank-circle:before{content:'\e705'}.icon-checkbox-blank-outline:before{content:'\e706'}.icon-checkbox-blank:before{content:'\e707'}.icon-checkbox-marked-circle-outline:before{content:'\e708'}.icon-checkbox-marked-circle:before{content:'\e709'}.icon-checkbox-marked-outline:before{content:'\e70a'}.icon-checkbox-marked:before{content:'\e70b'}.icon-checkbox-multiple-blank-outline:before{content:'\e70c'}.icon-checkbox-multiple-blank:before{content:'\e70d'}.icon-checkbox-multiple-marked-outline:before{content:'\e70e'}.icon-checkbox-multiple-marked:before{content:'\e70f'}.icon-checkerboard:before{content:'\e710'}.icon-chevron-double-down:before{content:'\e711'}.icon-chevron-double-left:before{content:'\e712'}.icon-chevron-double-right:before{content:'\e713'}.icon-chevron-double-up:before{content:'\e714'}.icon-chevron-down:before{content:'\e715'}.icon-chevron-left:before{content:'\e716'}.icon-chevron-right:before{content:'\e717'}.icon-chevron-up:before{content:'\e718'}.icon-church:before{content:'\e719'}.icon-cisco-webex:before{content:'\e71a'}.icon-city:before{content:'\e71b'}.icon-clapperboard:before{content:'\e71c'}.icon-clipboard-account:before{content:'\e71d'}.icon-clipboard-alert:before{content:'\e71e'}.icon-clipboard-arrow-down:before{content:'\e71f'}.icon-clipboard-arrow-left:before{content:'\e720'}.icon-clipboard-check:before{content:'\e721'}.icon-clipboard-outline:before{content:'\e722'}.icon-clipboard-text:before{content:'\e723'}.icon-clipboard:before{content:'\e724'}.icon-clippy:before{content:'\e725'}.icon-clock-fast:before{content:'\e726'}.icon-clock:before{content:'\e727'}.icon-close-circle-outline:before{content:'\e728'}.icon-close-circle:before{content:'\e729'}.icon-close-network:before{content:'\e72a'}.icon-close:before{content:'\e72b'}.icon-closed-caption:before{content:'\e72c'}.icon-cloud-check:before{content:'\e72d'}.icon-cloud-circle:before{content:'\e72e'}.icon-cloud-download:before{content:'\e72f'}.icon-cloud-outline-off:before{content:'\e730'}.icon-cloud-outline:before{content:'\e731'}.icon-cloud-upload:before{content:'\e732'}.icon-cloud:before{content:'\e733'}.icon-code-array:before{content:'\e734'}.icon-code-braces:before{content:'\e735'}.icon-code-equal:before{content:'\e736'}.icon-code-greater-than-or-equal:before{content:'\e737'}.icon-code-greater-than:before{content:'\e738'}.icon-code-less-than-or-equal:before{content:'\e739'}.icon-code-less-than:before{content:'\e73a'}.icon-code-not-equal-variant:before{content:'\e73b'}.icon-code-not-equal:before{content:'\e73c'}.icon-code-string:before{content:'\e73d'}.icon-code-tags:before{content:'\e73e'}.icon-codepen:before{content:'\e73f'}.icon-coffee-to-go:before{content:'\e740'}.icon-coffee:before{content:'\e741'}.icon-cog-box:before{content:'\e742'}.icon-cog:before{content:'\e743'}.icon-coin:before{content:'\e744'}.icon-color-helper:before{content:'\e745'}.icon-comment-account-outline:before{content:'\e746'}.icon-comment-account:before{content:'\e747'}.icon-comment-alert-outline:before{content:'\e748'}.icon-comment-alert:before{content:'\e749'}.icon-comment-check-outline:before{content:'\e74a'}.icon-comment-check:before{content:'\e74b'}.icon-comment-multipe-outline:before{content:'\e74c'}.icon-comment-outline:before{content:'\e74d'}.icon-comment-plus-outline:before{content:'\e74e'}.icon-comment-processing-outline:before{content:'\e74f'}.icon-comment-processing:before{content:'\e750'}.icon-comment-remove-outline:before{content:'\e751'}.icon-comment-text-outline:before{content:'\e752'}.icon-comment-text:before{content:'\e753'}.icon-comment:before{content:'\e754'}.icon-compare:before{content:'\e755'}.icon-compass-outline:before{content:'\e756'}.icon-compass:before{content:'\e757'}.icon-console:before{content:'\e758'}.icon-content-copy:before{content:'\e759'}.icon-content-cut:before{content:'\e75a'}.icon-content-duplicate:before{content:'\e75b'}.icon-content-paste:before{content:'\e75c'}.icon-content-save-all:before{content:'\e75d'}.icon-content-save:before{content:'\e75e'}.icon-contrast-box:before{content:'\e75f'}.icon-contrast-circle:before{content:'\e760'}.icon-contrast:before{content:'\e761'}.icon-controller-xbox:before{content:'\e762'}.icon-cow:before{content:'\e763'}.icon-credit-card-multiple:before{content:'\e764'}.icon-credit-card:before{content:'\e765'}.icon-crop-free:before{content:'\e766'}.icon-crop-landscape:before{content:'\e767'}.icon-crop-portrait:before{content:'\e768'}.icon-crop-square:before{content:'\e769'}.icon-crop:before{content:'\e76a'}.icon-crosshairs-gps:before{content:'\e76b'}.icon-crosshairs:before{content:'\e76c'}.icon-crown:before{content:'\e76d'}.icon-cube-outline:before{content:'\e76e'}.icon-cube-unfolded:before{content:'\e76f'}.icon-cube:before{content:'\e770'}.icon-cup-water:before{content:'\e771'}.icon-cup:before{content:'\e772'}.icon-currency-btc:before{content:'\e773'}.icon-currency-eur:before{content:'\e774'}.icon-currency-gbp:before{content:'\e775'}.icon-currency-inr:before{content:'\e776'}.icon-currency-rub:before{content:'\e777'}.icon-currency-try:before{content:'\e778'}.icon-currency-usd:before{content:'\e779'}.icon-cursor-default-outline:before{content:'\e77a'}.icon-cursor-default:before{content:'\e77b'}.icon-cursor-move:before{content:'\e77c'}.icon-cursor-pointer:before{content:'\e77d'}.icon-data:before{content:'\e77e'}.icon-debug-step-into:before{content:'\e77f'}.icon-debug-step-out:before{content:'\e780'}.icon-debug-step-over:before{content:'\e781'}.icon-decimal-decrease:before{content:'\e782'}.icon-decimal-increase:before{content:'\e783'}.icon-delete-variant:before{content:'\e784'}.icon-delete:before{content:'\e785'}.icon-deskphone:before{content:'\e786'}.icon-desktop-mac:before{content:'\e787'}.icon-desktop-tower:before{content:'\e788'}.icon-details:before{content:'\e789'}.icon-deviantart:before{content:'\e78a'}.icon-diamond:before{content:'\e78b'}.icon-dice-1:before{content:'\e78c'}.icon-dice-2:before{content:'\e78d'}.icon-dice-3:before{content:'\e78e'}.icon-dice-4:before{content:'\e78f'}.icon-dice-5:before{content:'\e790'}.icon-dice-6:before{content:'\e791'}.icon-dice:before{content:'\e792'}.icon-directions:before{content:'\e793'}.icon-disk-alert:before{content:'\e794'}.icon-disqus-outline:before{content:'\e795'}.icon-disqus:before{content:'\e796'}.icon-division-box:before{content:'\e797'}.icon-division:before{content:'\e798'}.icon-dns:before{content:'\e799'}.icon-document:before{content:'\e79a'}.icon-domain:before{content:'\e79b'}.icon-dots-horizontal:before{content:'\e79c'}.icon-dots-vertical:before{content:'\e79d'}.icon-download:before{content:'\e79e'}.icon-drag-horizontal:before{content:'\e79f'}.icon-drag-vertical:before{content:'\e7a0'}.icon-drag:before{content:'\e7a1'}.icon-drawing-box:before{content:'\e7a2'}.icon-drawing:before{content:'\e7a3'}.icon-dribbble-box:before{content:'\e7a4'}.icon-dribbble:before{content:'\e7a5'}.icon-drone:before{content:'\e7a6'}.icon-dropbox:before{content:'\e7a7'}.icon-drupal:before{content:'\e7a8'}.icon-duck:before{content:'\e7a9'}.icon-dumbbell:before{content:'\e7aa'}.icon-earth-off:before{content:'\e7ab'}.icon-earth:before{content:'\e7ac'}.icon-ebay:before{content:'\e7ad'}.icon-edge:before{content:'\e7ae'}.icon-eject:before{content:'\e7af'}.icon-elevation-decline:before{content:'\e7b0'}.icon-elevation-rise:before{content:'\e7b1'}.icon-elevator:before{content:'\e7b2'}.icon-email-open:before{content:'\e7b3'}.icon-email-secure:before{content:'\e7b4'}.icon-email:before{content:'\e7b5'}.icon-emoticon-cool:before{content:'\e7b6'}.icon-emoticon-devil:before{content:'\e7b7'}.icon-emoticon-happy:before{content:'\e7b8'}.icon-emoticon-neutral:before{content:'\e7b9'}.icon-emoticon-poop:before{content:'\e7ba'}.icon-emoticon-sad:before{content:'\e7bb'}.icon-emoticon-tongue:before{content:'\e7bc'}.icon-emoticon:before{content:'\e7bd'}.icon-engine-outline:before{content:'\e7be'}.icon-engine:before{content:'\e7bf'}.icon-equal-box:before{content:'\e7c0'}.icon-equal:before{content:'\e7c1'}.icon-eraser:before{content:'\e7c2'}.icon-escalator:before{content:'\e7c3'}.icon-etsy:before{content:'\e7c4'}.icon-evernote:before{content:'\e7c5'}.icon-exclamation:before{content:'\e7c6'}.icon-exit-to-app:before{content:'\e7c7'}.icon-export:before{content:'\e7c8'}.icon-eye-off:before{content:'\e7c9'}.icon-eye:before{content:'\e7ca'}.icon-eyedropper-variant:before{content:'\e7cb'}.icon-eyedropper:before{content:'\e7cc'}.icon-facebook-box:before{content:'\e7cd'}.icon-facebook:before{content:'\e7ce'}.icon-factory:before{content:'\e7cf'}.icon-fan:before{content:'\e7d0'}.icon-fast-forward:before{content:'\e7d1'}.icon-ferry:before{content:'\e7d2'}.icon-file-cloud:before{content:'\e7d3'}.icon-file-delimited:before{content:'\e7d4'}.icon-file-document-box:before{content:'\e7d5'}.icon-file-document:before{content:'\e7d6'}.icon-file-excel-box:before{content:'\e7d7'}.icon-file-excel:before{content:'\e7d8'}.icon-file-find:before{content:'\e7d9'}.icon-file-hidden:before{content:'\e7da'}.icon-file-image-box:before{content:'\e7db'}.icon-file-image:before{content:'\e7dc'}.icon-file-multiple:before{content:'\e7dd'}.icon-file-music:before{content:'\e7de'}.icon-file-outline:before{content:'\e7df'}.icon-file-pdf-box:before{content:'\e7e0'}.icon-file-pdf:before{content:'\e7e1'}.icon-file-powerpoint-box:before{content:'\e7e2'}.icon-file-powerpoint:before{content:'\e7e3'}.icon-file-presentation-box:before{content:'\e7e4'}.icon-file-video:before{content:'\e7e5'}.icon-file-word-box:before{content:'\e7e6'}.icon-file-word:before{content:'\e7e7'}.icon-file-xml:before{content:'\e7e8'}.icon-file:before{content:'\e7e9'}.icon-fill:before{content:'\e7ea'}.icon-film:before{content:'\e7eb'}.icon-filmstrip-off:before{content:'\e7ec'}.icon-filmstrip:before{content:'\e7ed'}.icon-filter-outline:before{content:'\e7ee'}.icon-filter-remove-outline:before{content:'\e7ef'}.icon-filter-remove:before{content:'\e7f0'}.icon-filter-variant:before{content:'\e7f1'}.icon-filter:before{content:'\e7f2'}.icon-fire:before{content:'\e7f3'}.icon-fish:before{content:'\e7f4'}.icon-flag-checkered-variant:before{content:'\e7f5'}.icon-flag-checkered:before{content:'\e7f6'}.icon-flag-outline-variant:before{content:'\e7f7'}.icon-flag-outline:before{content:'\e7f8'}.icon-flag-triangle:before{content:'\e7f9'}.icon-flag-variant:before{content:'\e7fa'}.icon-flag:before{content:'\e7fb'}.icon-flash-auto:before{content:'\e7fc'}.icon-flash-off:before{content:'\e7fd'}.icon-flash:before{content:'\e7fe'}.icon-flashlight-off:before{content:'\e7ff'}.icon-flashlight:before{content:'\e800'}.icon-flattr:before{content:'\e801'}.icon-flickr-after:before{content:'\e802'}.icon-flickr-before:before{content:'\e803'}.icon-flip-to-back:before{content:'\e804'}.icon-flip-to-front:before{content:'\e805'}.icon-floppy:before{content:'\e806'}.icon-flower:before{content:'\e807'}.icon-folder-account:before{content:'\e808'}.icon-folder-download:before{content:'\e809'}.icon-folder-google-drive:before{content:'\e80a'}.icon-folder-image:before{content:'\e80b'}.icon-folder-lock-open:before{content:'\e80c'}.icon-folder-lock:before{content:'\e80d'}.icon-folder-move:before{content:'\e80e'}.icon-folder-multiple-image:before{content:'\e80f'}.icon-folder-multiple-outline:before{content:'\e810'}.icon-folder-multiple:before{content:'\e811'}.icon-folder-outline-lock:before{content:'\e812'}.icon-folder-outline:before{content:'\e813'}.icon-folder-plus:before{content:'\e814'}.icon-folder-remove:before{content:'\e815'}.icon-folder-upload:before{content:'\e816'}.icon-folder:before{content:'\e817'}.icon-food-apple:before{content:'\e818'}.icon-food-variant:before{content:'\e819'}.icon-food:before{content:'\e81a'}.icon-football-helmet:before{content:'\e81b'}.icon-football:before{content:'\e81c'}.icon-format-align-center:before{content:'\e81d'}.icon-format-align-justify:before{content:'\e81e'}.icon-format-align-left:before{content:'\e81f'}.icon-format-align-right:before{content:'\e820'}.icon-format-bold:before{content:'\e821'}.icon-format-clear:before{content:'\e822'}.icon-format-color-fill:before{content:'\e823'}.icon-format-color:before{content:'\e824'}.icon-format-float-center:before{content:'\e825'}.icon-format-float-left:before{content:'\e826'}.icon-format-float-none:before{content:'\e827'}.icon-format-float-right:before{content:'\e828'}.icon-format-header-1:before{content:'\e829'}.icon-format-header-2:before{content:'\e82a'}.icon-format-header-3:before{content:'\e82b'}.icon-format-header-4:before{content:'\e82c'}.icon-format-header-5:before{content:'\e82d'}.icon-format-header-6:before{content:'\e82e'}.icon-format-header-decrease:before{content:'\e82f'}.icon-format-header-down:before{content:'\e830'}.icon-format-header-equal:before{content:'\e831'}.icon-format-header-increase:before{content:'\e832'}.icon-format-header-pound:before{content:'\e833'}.icon-format-header-up:before{content:'\e834'}.icon-format-indent-decrease:before{content:'\e835'}.icon-format-indent-increase:before{content:'\e836'}.icon-format-italic:before{content:'\e837'}.icon-format-line-spacing:before{content:'\e838'}.icon-format-list-bulleted:before{content:'\e839'}.icon-format-list-numbers:before{content:'\e83a'}.icon-format-object-inline:before{content:'\e83b'}.icon-format-object-square:before{content:'\e83c'}.icon-format-object-tight:before{content:'\e83d'}.icon-format-object-top-bottom:before{content:'\e83e'}.icon-format-paint:before{content:'\e83f'}.icon-format-paragraph:before{content:'\e840'}.icon-format-quote:before{content:'\e841'}.icon-format-size:before{content:'\e842'}.icon-format-strikethrough:before{content:'\e843'}.icon-format-subscript:before{content:'\e844'}.icon-format-superscript:before{content:'\e845'}.icon-format-text:before{content:'\e846'}.icon-format-textdirection-l-to-r:before{content:'\e847'}.icon-format-textdirection-r-to-l:before{content:'\e848'}.icon-format-underline:before{content:'\e849'}.icon-forum:before{content:'\e84a'}.icon-forward:before{content:'\e84b'}.icon-foursquare:before{content:'\e84c'}.icon-fridge:before{content:'\e84d'}.icon-fullscreen-exit:before{content:'\e84e'}.icon-fullscreen:before{content:'\e84f'}.icon-function:before{content:'\e850'}.icon-gamepad-variant:before{content:'\e851'}.icon-gamepad:before{content:'\e852'}.icon-gas-station:before{content:'\e853'}.icon-gavel:before{content:'\e854'}.icon-gender-female:before{content:'\e855'}.icon-gender-male-female:before{content:'\e856'}.icon-gender-male:before{content:'\e857'}.icon-gender-transgender:before{content:'\e858'}.icon-gift:before{content:'\e859'}.icon-git:before{content:'\e85a'}.icon-github-box:before{content:'\e85b'}.icon-github:before{content:'\e85c'}.icon-glass-flute:before{content:'\e85d'}.icon-glass-mug:before{content:'\e85e'}.icon-glass-stange:before{content:'\e85f'}.icon-glass-tulip:before{content:'\e860'}.icon-glasses:before{content:'\e861'}.icon-gmail:before{content:'\e862'}.icon-google-chrome:before{content:'\e863'}.icon-google-circles-communities:before{content:'\e864'}.icon-google-circles-extended:before{content:'\e865'}.icon-google-circles-invite:before{content:'\e866'}.icon-google-circles:before{content:'\e867'}.icon-google-controller-off:before{content:'\e868'}.icon-google-controller:before{content:'\e869'}.icon-google-drive:before{content:'\e86a'}.icon-google-earth:before{content:'\e86b'}.icon-google-glass:before{content:'\e86c'}.icon-google-maps:before{content:'\e86d'}.icon-google-pages:before{content:'\e86e'}.icon-google-play:before{content:'\e86f'}.icon-google-plus-box:before{content:'\e870'}.icon-google-plus:before{content:'\e871'}.icon-google:before{content:'\e872'}.icon-grid-off:before{content:'\e873'}.icon-grid:before{content:'\e874'}.icon-group:before{content:'\e875'}.icon-hand-pointing-right:before{content:'\e876'}.icon-hanger:before{content:'\e877'}.icon-hangouts:before{content:'\e878'}.icon-harddisk:before{content:'\e879'}.icon-headphones-box:before{content:'\e87a'}.icon-headphones-dots:before{content:'\e87b'}.icon-headphones:before{content:'\e87c'}.icon-headset-dock:before{content:'\e87d'}.icon-headset-off:before{content:'\e87e'}.icon-headset:before{content:'\e87f'}.icon-heart-box-outline:before{content:'\e880'}.icon-heart-box:before{content:'\e881'}.icon-heart-broken:before{content:'\e882'}.icon-heart-outline:before{content:'\e883'}.icon-heart:before{content:'\e884'}.icon-help-circle:before{content:'\e885'}.icon-help:before{content:'\e886'}.icon-hexagon-outline:before{content:'\e887'}.icon-hexagon:before{content:'\e888'}.icon-history:before{content:'\e889'}.icon-hololens:before{content:'\e88a'}.icon-home-modern:before{content:'\e88b'}.icon-home-variant:before{content:'\e88c'}.icon-home:before{content:'\e88d'}.icon-hops:before{content:'\e88e'}.icon-hospital-building:before{content:'\e88f'}.icon-hospital-marker:before{content:'\e890'}.icon-hospital:before{content:'\e891'}.icon-hotel:before{content:'\e892'}.icon-houzz-box:before{content:'\e893'}.icon-human-child:before{content:'\e894'}.icon-human-male-female:before{content:'\e895'}.icon-human:before{content:'\e896'}.icon-image-album:before{content:'\e897'}.icon-image-area-close:before{content:'\e898'}.icon-image-area:before{content:'\e899'}.icon-image-broken:before{content:'\e89a'}.icon-image-filter-black-white:before{content:'\e89b'}.icon-image-filter-center-focus:before{content:'\e89c'}.icon-image-filter-drama:before{content:'\e89d'}.icon-image-filter-frames:before{content:'\e89e'}.icon-image-filter-hdr:before{content:'\e89f'}.icon-image-filter-none:before{content:'\e8a0'}.icon-image-filter-tilt-shift:before{content:'\e8a1'}.icon-image-filter-vintage:before{content:'\e8a2'}.icon-image-filter:before{content:'\e8a3'}.icon-image:before{content:'\e8a4'}.icon-import:before{content:'\e8a5'}.icon-inbox:before{content:'\e8a6'}.icon-indent:before{content:'\e8a7'}.icon-information-outline:before{content:'\e8a8'}.icon-information:before{content:'\e8a9'}.icon-instagram:before{content:'\e8aa'}.icon-instapaper:before{content:'\e8ab'}.icon-internet-explorer:before{content:'\e8ac'}.icon-invert-colors:before{content:'\e8ad'}.icon-jira:before{content:'\e8ae'}.icon-jsfiddle:before{content:'\e8af'}.icon-keg:before{content:'\e8b0'}.icon-key-change:before{content:'\e8b1'}.icon-key-minus:before{content:'\e8b2'}.icon-key-plus:before{content:'\e8b3'}.icon-key-remove:before{content:'\e8b4'}.icon-key-variant:before{content:'\e8b5'}.icon-key:before{content:'\e8b6'}.icon-keyboard-backspace:before{content:'\e8b7'}.icon-keyboard-caps:before{content:'\e8b8'}.icon-keyboard-close:before{content:'\e8b9'}.icon-keyboard-off:before{content:'\e8ba'}.icon-keyboard-return:before{content:'\e8bb'}.icon-keyboard-tab:before{content:'\e8bc'}.icon-keyboard-variant:before{content:'\e8bd'}.icon-keyboard:before{content:'\e8be'}.icon-label-outline:before{content:'\e8bf'}.icon-label:before{content:'\e8c0'}.icon-language-csharp:before{content:'\e8c1'}.icon-language-css3:before{content:'\e8c2'}.icon-language-html5:before{content:'\e8c3'}.icon-language-javascript:before{content:'\e8c4'}.icon-language-python-text:before{content:'\e8c5'}.icon-language-python:before{content:'\e8c6'}.icon-laptop-chromebook:before{content:'\e8c7'}.icon-laptop-mac:before{content:'\e8c8'}.icon-laptop-windows:before{content:'\e8c9'}.icon-laptop:before{content:'\e8ca'}.icon-lastfm:before{content:'\e8cb'}.icon-launch:before{content:'\e8cc'}.icon-layers-off:before{content:'\e8cd'}.icon-layers:before{content:'\e8ce'}.icon-leaf:before{content:'\e8cf'}.icon-library-books:before{content:'\e8d0'}.icon-library-music:before{content:'\e8d1'}.icon-library-plus:before{content:'\e8d2'}.icon-library:before{content:'\e8d3'}.icon-lightbulb-outline:before{content:'\e8d4'}.icon-lightbulb:before{content:'\e8d5'}.icon-link-off:before{content:'\e8d6'}.icon-link-variant-off:before{content:'\e8d7'}.icon-link-variant:before{content:'\e8d8'}.icon-link:before{content:'\e8d9'}.icon-linkedin-box:before{content:'\e8da'}.icon-linkedin:before{content:'\e8db'}.icon-linode:before{content:'\e8dc'}.icon-linux:before{content:'\e8dd'}.icon-lock-outline:before{content:'\e8de'}.icon-lock-unlocked-outline:before{content:'\e8df'}.icon-lock-unlocked:before{content:'\e8e0'}.icon-lock:before{content:'\e8e1'}.icon-login:before{content:'\e8e2'}.icon-logout:before{content:'\e8e3'}.icon-looks:before{content:'\e8e4'}.icon-loupe:before{content:'\e8e5'}.icon-lumx:before{content:'\e8e6'}.icon-magnet-on:before{content:'\e8e7'}.icon-magnet:before{content:'\e8e8'}.icon-magnify-minus:before{content:'\e8e9'}.icon-magnify-plus:before{content:'\e8ea'}.icon-magnify:before{content:'\e8eb'}.icon-mail-ru:before{content:'\e8ec'}.icon-map-marker-circle:before{content:'\e8ed'}.icon-map-marker-multiple:before{content:'\e8ee'}.icon-map-marker-off:before{content:'\e8ef'}.icon-map-marker-radius:before{content:'\e8f0'}.icon-map-marker:before{content:'\e8f1'}.icon-map:before{content:'\e8f2'}.icon-margin:before{content:'\e8f3'}.icon-markdown:before{content:'\e8f4'}.icon-marker-check:before{content:'\e8f5'}.icon-martini:before{content:'\e8f6'}.icon-material-ui:before{content:'\e8f7'}.icon-maxcdn:before{content:'\e8f8'}.icon-medium:before{content:'\e8f9'}.icon-memory:before{content:'\e8fa'}.icon-menu-down:before{content:'\e8fb'}.icon-menu-left:before{content:'\e8fc'}.icon-menu-right:before{content:'\e8fd'}.icon-menu-up:before{content:'\e8fe'}.icon-menu:before{content:'\e8ff'}.icon-message-alert:before{content:'\e900'}.icon-message-draw:before{content:'\e901'}.icon-message-image:before{content:'\e902'}.icon-message-processing:before{content:'\e903'}.icon-message-reply:before{content:'\e904'}.icon-message-text-outline:before{content:'\e905'}.icon-message-text:before{content:'\e906'}.icon-message-video:before{content:'\e907'}.icon-message:before{content:'\e908'}.icon-microphone-dots:before{content:'\e909'}.icon-microphone-off:before{content:'\e90a'}.icon-microphone-outline:before{content:'\e90b'}.icon-microphone-settings:before{content:'\e90c'}.icon-microphone-variant-off:before{content:'\e90d'}.icon-microphone-variant:before{content:'\e90e'}.icon-microphone:before{content:'\e90f'}.icon-minus-box:before{content:'\e910'}.icon-minus-circle-outline:before{content:'\e911'}.icon-minus-circle:before{content:'\e912'}.icon-minus-network:before{content:'\e913'}.icon-minus:before{content:'\e914'}.icon-monitor-multiple:before{content:'\e915'}.icon-monitor:before{content:'\e916'}.icon-more:before{content:'\e917'}.icon-mouse-off:before{content:'\e918'}.icon-mouse-variant-off:before{content:'\e919'}.icon-mouse-variant:before{content:'\e91a'}.icon-mouse:before{content:'\e91b'}.icon-movie:before{content:'\e91c'}.icon-multiplication-box:before{content:'\e91d'}.icon-multiplication:before{content:'\e91e'}.icon-music-box-outline:before{content:'\e91f'}.icon-music-box:before{content:'\e920'}.icon-music-circle:before{content:'\e921'}.icon-music-note-eighth:before{content:'\e922'}.icon-music-note-half:before{content:'\e923'}.icon-music-note-off:before{content:'\e924'}.icon-music-note-quarter:before{content:'\e925'}.icon-music-note-sixteenth:before{content:'\e926'}.icon-music-note-whole:before{content:'\e927'}.icon-music-note:before{content:'\e928'}.icon-nature-people:before{content:'\e929'}.icon-nature:before{content:'\e92a'}.icon-navigation:before{content:'\e92b'}.icon-needle:before{content:'\e92c'}.icon-nest-protect:before{content:'\e92d'}.icon-nest-thermostat:before{content:'\e92e'}.icon-newspaper:before{content:'\e92f'}.icon-nfc-tap:before{content:'\e930'}.icon-nfc-variant:before{content:'\e931'}.icon-nfc:before{content:'\e932'}.icon-no:before{content:'\e933'}.icon-not-equal:before{content:'\e934'}.icon-note-outline:before{content:'\e935'}.icon-note-text:before{content:'\e936'}.icon-note:before{content:'\e937'}.icon-numeric-0-box-multiple-outline:before{content:'\e938'}.icon-numeric-0-box-outline:before{content:'\e939'}.icon-numeric-0-box:before{content:'\e93a'}.icon-numeric-1-box-multiple-outline:before{content:'\e93b'}.icon-numeric-1-box-outline:before{content:'\e93c'}.icon-numeric-1-box:before{content:'\e93d'}.icon-numeric-2-box-multiple-outline:before{content:'\e93e'}.icon-numeric-2-box-outline:before{content:'\e93f'}.icon-numeric-2-box:before{content:'\e940'}.icon-numeric-3-box-multiple-outline:before{content:'\e941'}.icon-numeric-3-box-outline:before{content:'\e942'}.icon-numeric-3-box:before{content:'\e943'}.icon-numeric-4-box-multiple-outline:before{content:'\e944'}.icon-numeric-4-box-outline:before{content:'\e945'}.icon-numeric-4-box:before{content:'\e946'}.icon-numeric-5-box-multiple-outline:before{content:'\e947'}.icon-numeric-5-box-outline:before{content:'\e948'}.icon-numeric-5-box:before{content:'\e949'}.icon-numeric-6-box-multiple-outline:before{content:'\e94a'}.icon-numeric-6-box-outline:before{content:'\e94b'}.icon-numeric-6-box:before{content:'\e94c'}.icon-numeric-7-box-multiple-outline:before{content:'\e94d'}.icon-numeric-7-box-outline:before{content:'\e94e'}.icon-numeric-7-box:before{content:'\e94f'}.icon-numeric-8-box-multiple-outline:before{content:'\e950'}.icon-numeric-8-box-outline:before{content:'\e951'}.icon-numeric-8-box:before{content:'\e952'}.icon-numeric-9-box-multiple-outline:before{content:'\e953'}.icon-numeric-9-box-outline:before{content:'\e954'}.icon-numeric-9-box:before{content:'\e955'}.icon-numeric-9-plus-box-multiple-outline:before{content:'\e956'}.icon-numeric-9-plus-box-outline:before{content:'\e957'}.icon-numeric-9-plus-box:before{content:'\e958'}.icon-numeric:before{content:'\e959'}.icon-nutriton:before{content:'\e95a'}.icon-odnoklassniki:before{content:'\e95b'}.icon-office:before{content:'\e95c'}.icon-oil:before{content:'\e95d'}.icon-omega:before{content:'\e95e'}.icon-onedrive:before{content:'\e95f'}.icon-open-in-app:before{content:'\e960'}.icon-open-in-new:before{content:'\e961'}.icon-ornament-variant:before{content:'\e962'}.icon-ornament:before{content:'\e963'}.icon-outbox:before{content:'\e964'}.icon-outdent:before{content:'\e965'}.icon-owl:before{content:'\e966'}.icon-package-down:before{content:'\e967'}.icon-package-up:before{content:'\e968'}.icon-package-variant-closed:before{content:'\e969'}.icon-package-variant:before{content:'\e96a'}.icon-package:before{content:'\e96b'}.icon-palette-advanced:before{content:'\e96c'}.icon-palette:before{content:'\e96d'}.icon-panda:before{content:'\e96e'}.icon-pandora:before{content:'\e96f'}.icon-panorama-fisheye:before{content:'\e970'}.icon-panorama-horizontal:before{content:'\e971'}.icon-panorama-vertical:before{content:'\e972'}.icon-panorama-wide-angle:before{content:'\e973'}.icon-panorama:before{content:'\e974'}.icon-paper-cut-vertical:before{content:'\e975'}.icon-paperclip:before{content:'\e976'}.icon-parking:before{content:'\e977'}.icon-pause-circle-outline:before{content:'\e978'}.icon-pause-circle:before{content:'\e979'}.icon-pause-octagon-outline:before{content:'\e97a'}.icon-pause-octagon:before{content:'\e97b'}.icon-pause:before{content:'\e97c'}.icon-paw:before{content:'\e97d'}.icon-pen:before{content:'\e97e'}.icon-pencil-box-outline:before{content:'\e97f'}.icon-pencil-box:before{content:'\e980'}.icon-pencil:before{content:'\e981'}.icon-people:before{content:'\e982'}.icon-percent:before{content:'\e983'}.icon-person-box:before{content:'\e984'}.icon-person-minus:before{content:'\e985'}.icon-person-plus:before{content:'\e986'}.icon-pharmacy:before{content:'\e987'}.icon-phone-bluetooth:before{content:'\e988'}.icon-phone-dots:before{content:'\e989'}.icon-phone-forward:before{content:'\e98a'}.icon-phone-hangup:before{content:'\e98b'}.icon-phone-in-talk:before{content:'\e98c'}.icon-phone-incoming:before{content:'\e98d'}.icon-phone-locked:before{content:'\e98e'}.icon-phone-log:before{content:'\e98f'}.icon-phone-missed:before{content:'\e990'}.icon-phone-outgoing:before{content:'\e991'}.icon-phone-paused:before{content:'\e992'}.icon-phone:before{content:'\e993'}.icon-picture:before{content:'\e994'}.icon-pig:before{content:'\e995'}.icon-pill:before{content:'\e996'}.icon-pin-off:before{content:'\e997'}.icon-pin:before{content:'\e998'}.icon-pine-tree-box:before{content:'\e999'}.icon-pine-tree:before{content:'\e99a'}.icon-pinterest-box:before{content:'\e99b'}.icon-pinterest:before{content:'\e99c'}.icon-pizza:before{content:'\e99d'}.icon-plane:before{content:'\e99e'}.icon-play-box-outline:before{content:'\e99f'}.icon-play-circle-outline:before{content:'\e9a0'}.icon-play-circle:before{content:'\e9a1'}.icon-play:before{content:'\e9a2'}.icon-playlist-minus:before{content:'\e9a3'}.icon-playlist-plus:before{content:'\e9a4'}.icon-playstation:before{content:'\e9a5'}.icon-plus-box:before{content:'\e9a6'}.icon-plus-circle-outline:before{content:'\e9a7'}.icon-plus-circle:before{content:'\e9a8'}.icon-plus-network:before{content:'\e9a9'}.icon-plus-one:before{content:'\e9aa'}.icon-plus:before{content:'\e9ab'}.icon-pocket:before{content:'\e9ac'}.icon-poll-box:before{content:'\e9ad'}.icon-poll:before{content:'\e9ae'}.icon-polymer:before{content:'\e9af'}.icon-popcorn:before{content:'\e9b0'}.icon-pound-box:before{content:'\e9b1'}.icon-pound:before{content:'\e9b2'}.icon-power-settings:before{content:'\e9b3'}.icon-power-socket:before{content:'\e9b4'}.icon-power:before{content:'\e9b5'}.icon-presentation-play:before{content:'\e9b6'}.icon-presentation:before{content:'\e9b7'}.icon-printer-3d:before{content:'\e9b8'}.icon-printer:before{content:'\e9b9'}.icon-pulse:before{content:'\e9ba'}.icon-puzzle:before{content:'\e9bb'}.icon-qrcode:before{content:'\e9bc'}.icon-quadcopter:before{content:'\e9bd'}.icon-quality-high:before{content:'\e9be'}.icon-question-mark-circle:before{content:'\e9bf'}.icon-quick-reply:before{content:'\e9c0'}.icon-quicktime:before{content:'\e9c1'}.icon-rabbit:before{content:'\e9c2'}.icon-radiator:before{content:'\e9c3'}.icon-radio-tower:before{content:'\e9c4'}.icon-radio:before{content:'\e9c5'}.icon-radioactive:before{content:'\e9c6'}.icon-radiobox-blank:before{content:'\e9c7'}.icon-radiobox-marked:before{content:'\e9c8'}.icon-raspberrypi:before{content:'\e9c9'}.icon-rdio:before{content:'\e9ca'}.icon-read:before{content:'\e9cb'}.icon-readability:before{content:'\e9cc'}.icon-receipt:before{content:'\e9cd'}.icon-recycle:before{content:'\e9ce'}.icon-reddit:before{content:'\e9cf'}.icon-redo-variant:before{content:'\e9d0'}.icon-redo:before{content:'\e9d1'}.icon-refresh:before{content:'\e9d2'}.icon-relative-scale:before{content:'\e9d3'}.icon-reload:before{content:'\e9d4'}.icon-remote:before{content:'\e9d5'}.icon-rename-box:before{content:'\e9d6'}.icon-repeat-off:before{content:'\e9d7'}.icon-repeat-once:before{content:'\e9d8'}.icon-repeat:before{content:'\e9d9'}.icon-replay:before{content:'\e9da'}.icon-reply-all:before{content:'\e9db'}.icon-reply:before{content:'\e9dc'}.icon-reproduction:before{content:'\e9dd'}.icon-resize-bottom-right:before{content:'\e9de'}.icon-responsive:before{content:'\e9df'}.icon-restore:before{content:'\e9e0'}.icon-rewind:before{content:'\e9e1'}.icon-ribbon:before{content:'\e9e2'}.icon-road:before{content:'\e9e3'}.icon-rocket:before{content:'\e9e4'}.icon-rotate-3d:before{content:'\e9e5'}.icon-rotate-left-variant:before{content:'\e9e6'}.icon-rotate-left:before{content:'\e9e7'}.icon-rotate-right-variant:before{content:'\e9e8'}.icon-rotate-right:before{content:'\e9e9'}.icon-routes:before{content:'\e9ea'}.icon-rss-box:before{content:'\e9eb'}.icon-ruler:before{content:'\e9ec'}.icon-run:before{content:'\e9ed'}.icon-sale:before{content:'\e9ee'}.icon-satellite-variant:before{content:'\e9ef'}.icon-satellite:before{content:'\e9f0'}.icon-scale-bathroom:before{content:'\e9f1'}.icon-scale:before{content:'\e9f2'}.icon-school:before{content:'\e9f3'}.icon-screen-rotation-lock:before{content:'\e9f4'}.icon-screen-rotation:before{content:'\e9f5'}.icon-script:before{content:'\e9f6'}.icon-security-network:before{content:'\e9f7'}.icon-security:before{content:'\e9f8'}.icon-select-all:before{content:'\e9f9'}.icon-select-inverse:before{content:'\e9fa'}.icon-select-off:before{content:'\e9fb'}.icon-select:before{content:'\e9fc'}.icon-send:before{content:'\e9fd'}.icon-server-minus:before{content:'\e9fe'}.icon-server-network-off:before{content:'\e9ff'}.icon-server-network:before{content:'\ea00'}.icon-server-off:before{content:'\ea01'}.icon-server-plus:before{content:'\ea02'}.icon-server-remove:before{content:'\ea03'}.icon-server-security:before{content:'\ea04'}.icon-server:before{content:'\ea05'}.icon-shape-plus:before{content:'\ea06'}.icon-share-variant:before{content:'\ea07'}.icon-share:before{content:'\ea08'}.icon-shield-outline:before{content:'\ea09'}.icon-shield:before{content:'\ea0a'}.icon-shopping-music:before{content:'\ea0b'}.icon-shopping:before{content:'\ea0c'}.icon-shuffle:before{content:'\ea0d'}.icon-sigma:before{content:'\ea0e'}.icon-sign-caution:before{content:'\ea0f'}.icon-signal:before{content:'\ea10'}.icon-silverware-fork:before{content:'\ea11'}.icon-silverware-spoon:before{content:'\ea12'}.icon-silverware-variant:before{content:'\ea13'}.icon-silverware:before{content:'\ea14'}.icon-sim-alert:before{content:'\ea15'}.icon-sim:before{content:'\ea16'}.icon-sitemap:before{content:'\ea17'}.icon-skip-next:before{content:'\ea18'}.icon-skip-previous:before{content:'\ea19'}.icon-skype-business:before{content:'\ea1a'}.icon-skype:before{content:'\ea1b'}.icon-sleep-off:before{content:'\ea1c'}.icon-sleep:before{content:'\ea1d'}.icon-smoking-off:before{content:'\ea1e'}.icon-smoking:before{content:'\ea1f'}.icon-snapchat:before{content:'\ea20'}.icon-snowman:before{content:'\ea21'}.icon-sofa:before{content:'\ea22'}.icon-sort-alphabetical:before{content:'\ea23'}.icon-sort-ascending:before{content:'\ea24'}.icon-sort-descending:before{content:'\ea25'}.icon-sort-numeric:before{content:'\ea26'}.icon-sort-variant:before{content:'\ea27'}.icon-sort:before{content:'\ea28'}.icon-soundcloud:before{content:'\ea29'}.icon-source-fork:before{content:'\ea2a'}.icon-source-pull:before{content:'\ea2b'}.icon-speaker-off:before{content:'\ea2c'}.icon-speaker:before{content:'\ea2d'}.icon-speedometer:before{content:'\ea2e'}.icon-spellcheck:before{content:'\ea2f'}.icon-spotify:before{content:'\ea30'}.icon-spotlight-beam:before{content:'\ea31'}.icon-spotlight:before{content:'\ea32'}.icon-spreadsheet:before{content:'\ea33'}.icon-square-inc-cash:before{content:'\ea34'}.icon-square-inc:before{content:'\ea35'}.icon-stackoverflow:before{content:'\ea36'}.icon-star-circle:before{content:'\ea37'}.icon-star-half:before{content:'\ea38'}.icon-star-of-david:before{content:'\ea39'}.icon-star-outline:before{content:'\ea3a'}.icon-star:before{content:'\ea3b'}.icon-steam:before{content:'\ea3c'}.icon-stethoscope:before{content:'\ea3d'}.icon-stocking:before{content:'\ea3e'}.icon-stop:before{content:'\ea3f'}.icon-store-24-hour:before{content:'\ea40'}.icon-store:before{content:'\ea41'}.icon-stove:before{content:'\ea42'}.icon-subway:before{content:'\ea43'}.icon-sunglasses:before{content:'\ea44'}.icon-swap-horizontal:before{content:'\ea45'}.icon-swap-vertical:before{content:'\ea46'}.icon-swim:before{content:'\ea47'}.icon-sword:before{content:'\ea48'}.icon-sync-alert:before{content:'\ea49'}.icon-sync-off:before{content:'\ea4a'}.icon-sync:before{content:'\ea4b'}.icon-tab-unselected:before{content:'\ea4c'}.icon-tab:before{content:'\ea4d'}.icon-table-column-plus-after:before{content:'\ea4e'}.icon-table-column-plus-before:before{content:'\ea4f'}.icon-table-column-remove:before{content:'\ea50'}.icon-table-column-width:before{content:'\ea51'}.icon-table-edit:before{content:'\ea52'}.icon-table-large:before{content:'\ea53'}.icon-table-row-height:before{content:'\ea54'}.icon-table-row-plus-after:before{content:'\ea55'}.icon-table-row-plus-before:before{content:'\ea56'}.icon-table-row-remove:before{content:'\ea57'}.icon-table:before{content:'\ea58'}.icon-tablet-android:before{content:'\ea59'}.icon-tablet-ipad:before{content:'\ea5a'}.icon-tablet:before{content:'\ea5b'}.icon-tag-faces:before{content:'\ea5c'}.icon-tag-multiple:before{content:'\ea5d'}.icon-tag-outline:before{content:'\ea5e'}.icon-tag-text-outline:before{content:'\ea5f'}.icon-tag:before{content:'\ea60'}.icon-taxi:before{content:'\ea61'}.icon-teamviewer:before{content:'\ea62'}.icon-telegram:before{content:'\ea63'}.icon-television-guide:before{content:'\ea64'}.icon-television:before{content:'\ea65'}.icon-temperature-celsius:before{content:'\ea66'}.icon-temperature-fahrenheit:before{content:'\ea67'}.icon-temperature-kelvin:before{content:'\ea68'}.icon-tennis:before{content:'\ea69'}.icon-tent:before{content:'\ea6a'}.icon-terrain:before{content:'\ea6b'}.icon-text-to-speech-off:before{content:'\ea6c'}.icon-text-to-speech:before{content:'\ea6d'}.icon-texture:before{content:'\ea6e'}.icon-theater:before{content:'\ea6f'}.icon-theme-light-dark:before{content:'\ea70'}.icon-thermometer-lines:before{content:'\ea71'}.icon-thermometer:before{content:'\ea72'}.icon-thumb-down-outline:before{content:'\ea73'}.icon-thumb-down:before{content:'\ea74'}.icon-thumb-up-outline:before{content:'\ea75'}.icon-thumb-up:before{content:'\ea76'}.icon-thumbs-up-down:before{content:'\ea77'}.icon-ticket-account:before{content:'\ea78'}.icon-ticket:before{content:'\ea79'}.icon-tie:before{content:'\ea7a'}.icon-tile-four:before{content:'\ea7b'}.icon-timelapse:before{content:'\ea7c'}.icon-timer-3:before{content:'\ea7d'}.icon-timer-10:before{content:'\ea7e'}.icon-timer-off:before{content:'\ea7f'}.icon-timer-sand:before{content:'\ea80'}.icon-timer:before{content:'\ea81'}.icon-timetable:before{content:'\ea82'}.icon-toggle-switch-off:before{content:'\ea83'}.icon-toggle-switch-on:before{content:'\ea84'}.icon-tooltip-edit:before{content:'\ea85'}.icon-tooltip-image:before{content:'\ea86'}.icon-tooltip-outline-plus:before{content:'\ea87'}.icon-tooltip-outline:before{content:'\ea88'}.icon-tooltip-text:before{content:'\ea89'}.icon-tooltip:before{content:'\ea8a'}.icon-tor:before{content:'\ea8b'}.icon-traffic-light:before{content:'\ea8c'}.icon-train:before{content:'\ea8d'}.icon-tram:before{content:'\ea8e'}.icon-transcribe-close:before{content:'\ea8f'}.icon-transcribe:before{content:'\ea90'}.icon-transfer:before{content:'\ea91'}.icon-trash:before{content:'\ea92'}.icon-tree:before{content:'\ea93'}.icon-trello:before{content:'\ea94'}.icon-trending-down:before{content:'\ea95'}.icon-trending-neutral:before{content:'\ea96'}.icon-trending-up:before{content:'\ea97'}.icon-truck:before{content:'\ea98'}.icon-tshirt-crew:before{content:'\ea99'}.icon-tshirt-v:before{content:'\ea9a'}.icon-tumblr-reblog:before{content:'\ea9b'}.icon-tumblr:before{content:'\ea9c'}.icon-twitch:before{content:'\ea9d'}.icon-twitter-box:before{content:'\ea9e'}.icon-twitter-circle:before{content:'\ea9f'}.icon-twitter-retweet:before{content:'\eaa0'}.icon-twitter:before{content:'\eaa1'}.icon-ubuntu:before{content:'\eaa2'}.icon-umbrella-outline:before{content:'\eaa3'}.icon-umbrella:before{content:'\eaa4'}.icon-undo-variant:before{content:'\eaa5'}.icon-undo:before{content:'\eaa6'}.icon-unfold-less:before{content:'\eaa7'}.icon-unfold-more:before{content:'\eaa8'}.icon-ungroup:before{content:'\eaa9'}.icon-untappd:before{content:'\eaaa'}.icon-upload:before{content:'\eaab'}.icon-usb:before{content:'\eaac'}.icon-vector-curve:before{content:'\eaad'}.icon-vector-point:before{content:'\eaae'}.icon-vector-square:before{content:'\eaaf'}.icon-verified:before{content:'\eab0'}.icon-vibration:before{content:'\eab1'}.icon-video-off:before{content:'\eab2'}.icon-video-switch:before{content:'\eab3'}.icon-video:before{content:'\eab4'}.icon-view-agenda:before{content:'\eab5'}.icon-view-array:before{content:'\eab6'}.icon-view-carousel:before{content:'\eab7'}.icon-view-column:before{content:'\eab8'}.icon-view-dashboard:before{content:'\eab9'}.icon-view-day:before{content:'\eaba'}.icon-view-headline:before{content:'\eabb'}.icon-view-list:before{content:'\eabc'}.icon-view-module:before{content:'\eabd'}.icon-view-quilt:before{content:'\eabe'}.icon-view-stream:before{content:'\eabf'}.icon-view-week:before{content:'\eac0'}.icon-vimeo:before{content:'\eac1'}.icon-vine:before{content:'\eac2'}.icon-vk-box:before{content:'\eac3'}.icon-vk-circle:before{content:'\eac4'}.icon-vk:before{content:'\eac5'}.icon-voicemail:before{content:'\eac6'}.icon-volume-high:before{content:'\eac7'}.icon-volume-low:before{content:'\eac8'}.icon-volume-medium:before{content:'\eac9'}.icon-volume-off:before{content:'\eaca'}.icon-volume:before{content:'\eacb'}.icon-vpn:before{content:'\eacc'}.icon-walk:before{content:'\eacd'}.icon-wallet-giftcard:before{content:'\eace'}.icon-wallet-membership:before{content:'\eacf'}.icon-wallet-travel:before{content:'\ead0'}.icon-wallet:before{content:'\ead1'}.icon-washing-machine:before{content:'\ead2'}.icon-watch-export:before{content:'\ead3'}.icon-watch-import:before{content:'\ead4'}.icon-watch:before{content:'\ead5'}.icon-water-off:before{content:'\ead6'}.icon-water-pump:before{content:'\ead7'}.icon-water:before{content:'\ead8'}.icon-weather-cloudy:before{content:'\ead9'}.icon-weather-fog:before{content:'\eada'}.icon-weather-hail:before{content:'\eadb'}.icon-weather-lightning:before{content:'\eadc'}.icon-weather-night:before{content:'\eadd'}.icon-weather-partlycloudy:before{content:'\eade'}.icon-weather-pouring:before{content:'\eadf'}.icon-weather-rainy:before{content:'\eae0'}.icon-weather-snowy:before{content:'\eae1'}.icon-weather-sunny:before{content:'\eae2'}.icon-weather-sunset-down:before{content:'\eae3'}.icon-weather-sunset-up:before{content:'\eae4'}.icon-weather-sunset:before{content:'\eae5'}.icon-weather-windy-variant:before{content:'\eae6'}.icon-weather-windy:before{content:'\eae7'}.icon-web:before{content:'\eae8'}.icon-webcam:before{content:'\eae9'}.icon-weight-kilogram:before{content:'\eaea'}.icon-weight:before{content:'\eaeb'}.icon-whatsapp:before{content:'\eaec'}.icon-wheelchair-accessibility:before{content:'\eaed'}.icon-white-balance-auto:before{content:'\eaee'}.icon-white-balance-incandescent:before{content:'\eaef'}.icon-white-balance-irradescent:before{content:'\eaf0'}.icon-white-balance-sunny:before{content:'\eaf1'}.icon-wifi:before{content:'\eaf2'}.icon-wii:before{content:'\eaf3'}.icon-wikipedia:before{content:'\eaf4'}.icon-window-close:before{content:'\eaf5'}.icon-window-closed:before{content:'\eaf6'}.icon-window-maximize:before{content:'\eaf7'}.icon-window-minimize:before{content:'\eaf8'}.icon-window-open:before{content:'\eaf9'}.icon-window-restore:before{content:'\eafa'}.icon-windows:before{content:'\eafb'}.icon-wordpress:before{content:'\eafc'}.icon-worker:before{content:'\eafd'}.icon-wunderlist:before{content:'\eafe'}.icon-xbox-controller-off:before{content:'\eaff'}.icon-xbox-controller:before{content:'\eb00'}.icon-xbox:before{content:'\eb01'}.icon-xda:before{content:'\eb02'}.icon-xml:before{content:'\eb03'}.icon-yeast:before{content:'\eb04'}.icon-yelp:before{content:'\eb05'}.icon-youtube-play:before{content:'\eb06'}.icon-youtube:before{content:'\eb07'}.icon-zip-box:before{content:'\eb08'}.avatar{width:40px;min-width:40px;height:40px;line-height:40px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}.avatar.square{border-radius:0}.avatar.small{width:20px;min-width:20px;height:20px;line-height:20px}.avatar.big{width:72px;min-width:72px;height:72px;line-height:72px}.avatar.huge{width:96px;min-width:96px;height:96px;line-height:96px}.form-wrapper{background:#fff;padding:16px}.form-wrapper .form-title{font-size:21px;padding:8px 0}.navigation-simple .item{position:relative;cursor:pointer;text-align:left;margin:0;padding:0 24px;text-transform:none;line-height:48px;max-height:48px;height:48px}.navigation-simple .item md-icon{margin:0 16px 0 0}.navigation-simple .item .title{font-size:13px;font-weight:500;line-height:1}.navigation-simple .item.selected{background-color:rgba(0,0,0,.06)}.navigation-simple .subheader{font-size:13px;border-top:1px solid rgba(0,0,0,.12);font-weight:500;margin-top:8px}.navigation-simple .subheader.light{border-top:1px solid rgba(255,255,255,.12)}.navigation-simple md-divider{margin:8px 0}.simple-pagination{position:relative;display:inline-flex;flex-direction:row;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);background-color:#fff;padding:0 8px}.simple-pagination .pagination-item{min-width:48px;min-height:56px;line-height:56px;border-radius:0;margin:0;font-weight:400;color:rgba(0,0,0,.54)}.simple-pagination .pagination-item:hover{color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.active{cursor:default;color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.disabled{cursor:default;color:rgba(0,0,0,.26)}.price-tables .price-table{position:relative;background-color:#fff;width:280px;border-radius:2px;margin:24px 24px 0 0;overflow:hidden}.price-tables .price-table.style-1 .package-type{font-size:17px;padding:16px 24px}.price-tables .price-table.style-1 .package-type .sale{font-size:13px;font-weight:600}.price-tables .price-table.style-1 .price{padding:32px 32px 16px 32px}.price-tables .price-table.style-1 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 .price .value{font-size:72px;font-weight:300;line-height:1}.price-tables .price-table.style-1 .price .period{padding:0 0 5px 4px;font-size:17px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 md-divider{margin:16px 32px}.price-tables .price-table.style-1 .terms{padding:16px 32px;font-size:15px}.price-tables .price-table.style-1 .cta-button{margin:16px auto 32px auto;width:128px}.price-tables .price-table.style-2 .badge{position:absolute;top:0;left:50%;transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}.price-tables .price-table.style-2 .package-type{padding:48px 32px 24px 32px;font-size:20px;font-weight:500;text-align:center}.price-tables .price-table.style-2 .price{padding:0 32px 8px 32px}.price-tables .price-table.style-2 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-2 .price .value{font-size:56px;font-weight:300;line-height:1}.price-tables .price-table.style-2 .period{padding:0 32px;font-size:15px;font-weight:500;color:rgba(0,0,0,.54);text-align:center}.price-tables .price-table.style-2 .terms{padding:32px;font-size:15px}.price-tables .price-table.style-2 .terms .term{padding-bottom:8px}.price-tables .price-table.style-2 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-2 .cta-button{margin:8px auto 32px auto;width:128px}.price-tables .price-table.style-3 .package-type{padding:32px;text-align:center}.price-tables .price-table.style-3 .package-type .title{font-size:34px}.price-tables .price-table.style-3 .package-type .subtitle{font-size:17px;color:rgba(0,0,0,.54);font-weight:500}.price-tables .price-table.style-3 .price{padding:16px 32px}.price-tables .price-table.style-3 .price .currency{padding-right:4px;font-size:15px;font-weight:500}.price-tables .price-table.style-3 .price .value{font-size:34px;font-weight:300;line-height:1}.price-tables .price-table.style-3 .price .period{padding-left:4px;text-align:center}.price-tables .price-table.style-3 .terms{margin:32px;font-size:15px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-3 .terms .term{padding-bottom:16px}.price-tables .price-table.style-3 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-3 .cta-button{margin:8px 32px}.price-tables .price-table.style-3 .note{padding:8px 32px 16px 32px;text-align:center;color:rgba(0,0,0,.54)}.simple-table-container{background:#fff}.simple-table-container .table-title{font-size:20px;padding:24px}table.simple{width:100%;border:none;border-spacing:0;text-align:left}table.simple thead tr th{padding:16px 8px;font-weight:500;color:rgba(0,0,0,.54);border-bottom:1px solid rgba(0,0,0,.12);white-space:nowrap;min-width:120px}table.simple thead tr th:first-child{padding-left:24px}table.simple thead tr th:last-child{padding-right:24px}table.simple tbody tr td{padding:16px 8px;border-bottom:1px solid rgba(0,0,0,.12)}table.simple tbody tr td:first-child{padding-left:24px}table.simple tbody tr td:last-child{padding-right:24px}table.simple tbody tr:last-child td{border-bottom:none}table.simple.clickable tbody tr{cursor:pointer}table.simple.clickable tbody tr:hover{background:rgba(0,0,0,.03)}html{font-size:62.5%;font-family:Roboto,"Helvetica Neue",Arial,sans-serif;line-height:1.4;letter-spacing:-.1px}body{font-size:1.3rem}body,html{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}form{font-size:1.6rem}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-weight:400}.h1,h1{font-size:2.4rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.6rem}.h4,h4{font-size:1.4rem}.h5,h5{font-size:1.3rem}.h6,h6{font-size:1.2rem}a{text-decoration:none}a:active,a:hover{text-decoration:underline}abbr{cursor:help;border-bottom:1px dotted rgba(0,0,0,.54)}blockquote{border-left:3px solid rgba(0,0,0,.12);font-style:italic;margin:1em 0;padding-left:16px}blockquote footer{font-style:normal}blockquote footer:before{content:'\2014 \00A0'}blockquote.reverse{border-left:none;border-right:3px solid rgba(0,0,0,.12);text-align:right;padding-left:0;padding-right:16px}blockquote.reverse footer:before{content:''}blockquote.reverse footer:after{content:'\2014 \00A0'}code{font-family:Monaco,Menlo,Consolas,"Ubuntu Mono",monospace}code:not(.highlight){background:rgba(0,0,0,.065);color:#106cc8;margin:0 1px;padding:2px 3px;border-radius:2px}dl dt{font-weight:700}dl dd{margin:4px 0 16px 0}mark{background:#f7f49a}pre{line-height:1.6;margin:8px 16px;white-space:pre-wrap}small{font-size:80%}table thead tr th{text-align:left}.text-italic{font-style:italic}.text-semibold{font-weight:600}.text-bold,strong{font-weight:700}.text-strike{text-decoration:line-through}.text-super{vertical-align:super}.text-sub{vertical-align:sub}.text-capitalize{text-transform:capitalize}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-weight-100{font-weight:100}.font-weight-200{font-weight:200}.font-weight-300{font-weight:300}.font-weight-400{font-weight:400}.font-weight-500{font-weight:500}.font-weight-600{font-weight:600}.font-weight-700{font-weight:700}.font-weight-800{font-weight:800}.font-weight-900{font-weight:900}.font-size-2{font-size:2px}.font-size-4{font-size:4px}.font-size-6{font-size:6px}.font-size-8{font-size:8px}.font-size-10{font-size:10px}.font-size-12{font-size:12px}.font-size-14{font-size:14px}.font-size-16{font-size:16px}.font-size-18{font-size:18px}.font-size-20{font-size:20px}.font-size-22{font-size:22px}.font-size-24{font-size:24px}.font-size-26{font-size:26px}.font-size-28{font-size:28px}.font-size-30{font-size:30px}.font-size-32{font-size:32px}.font-size-34{font-size:34px}.font-size-36{font-size:36px}.font-size-38{font-size:38px}.font-size-40{font-size:40px}.font-size-42{font-size:42px}.font-size-44{font-size:44px}.font-size-46{font-size:46px}.font-size-48{font-size:48px}.font-size-50{font-size:50px}.font-size-52{font-size:52px}.font-size-54{font-size:54px}.font-size-56{font-size:56px}.font-size-58{font-size:58px}.font-size-60{font-size:60px}.font-size-62{font-size:62px}.font-size-64{font-size:64px}.font-size-66{font-size:66px}.font-size-68{font-size:68px}.font-size-70{font-size:70px}.font-size-72{font-size:72px}.font-size-74{font-size:74px}.font-size-76{font-size:76px}.font-size-78{font-size:78px}.font-size-80{font-size:80px}.font-size-82{font-size:82px}.font-size-84{font-size:84px}.font-size-86{font-size:86px}.font-size-88{font-size:88px}.font-size-90{font-size:90px}.font-size-92{font-size:92px}.font-size-94{font-size:94px}.font-size-96{font-size:96px}.font-size-98{font-size:98px}.font-size-100{font-size:100px}.font-size-102{font-size:102px}.font-size-104{font-size:104px}.font-size-106{font-size:106px}.font-size-108{font-size:108px}.font-size-110{font-size:110px}.font-size-112{font-size:112px}.font-size-114{font-size:114px}.font-size-116{font-size:116px}.font-size-118{font-size:118px}.font-size-120{font-size:120px}.line-height-2{line-height:2px}.line-height-4{line-height:4px}.line-height-6{line-height:6px}.line-height-8{line-height:8px}.line-height-10{line-height:10px}.line-height-12{line-height:12px}.line-height-14{line-height:14px}.line-height-16{line-height:16px}.line-height-18{line-height:18px}.line-height-20{line-height:20px}.line-height-22{line-height:22px}.line-height-24{line-height:24px}.line-height-26{line-height:26px}.line-height-28{line-height:28px}.line-height-30{line-height:30px}.line-height-32{line-height:32px}.line-height-34{line-height:34px}.line-height-36{line-height:36px}.line-height-38{line-height:38px}.line-height-40{line-height:40px}.line-height-42{line-height:42px}.line-height-44{line-height:44px}.line-height-46{line-height:46px}.line-height-48{line-height:48px}.line-height-50{line-height:50px}.line-height-52{line-height:52px}.line-height-54{line-height:54px}.line-height-56{line-height:56px}.line-height-58{line-height:58px}.line-height-60{line-height:60px}.line-height-62{line-height:62px}.line-height-64{line-height:64px}.line-height-66{line-height:66px}.line-height-68{line-height:68px}.line-height-70{line-height:70px}.line-height-72{line-height:72px}.line-height-74{line-height:74px}.line-height-76{line-height:76px}.line-height-78{line-height:78px}.line-height-80{line-height:80px}.line-height-82{line-height:82px}.line-height-84{line-height:84px}.line-height-86{line-height:86px}.line-height-88{line-height:88px}.line-height-90{line-height:90px}.line-height-92{line-height:92px}.line-height-94{line-height:94px}.line-height-96{line-height:96px}.line-height-98{line-height:98px}.line-height-100{line-height:100px}.line-height-102{line-height:102px}.line-height-104{line-height:104px}.line-height-106{line-height:106px}.line-height-108{line-height:108px}.line-height-110{line-height:110px}.line-height-112{line-height:112px}.line-height-114{line-height:114px}.line-height-116{line-height:116px}.line-height-118{line-height:118px}.line-height-120{line-height:120px}.text-boxed,.text-boxed-light{border-radius:2px;padding:4px 8px;margin:0 8px;font-size:11px;font-weight:500;color:rgba(0,0,0,.54);background-color:rgba(0,0,0,.12);white-space:nowrap}.text-boxed-light{background-color:rgba(255,255,255,.7)}.text-truncate{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-nowrap{white-space:nowrap}.angular-google-map-container{height:400px}.moment-picker .moment-picker-container{width:296px;border:none;border-radius:2px;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);margin-left:0;padding:8px}.moment-picker .moment-picker-container td,.moment-picker .moment-picker-container th{min-width:0;width:40px;height:40px;padding:8px;text-shadow:none;border-radius:35px}.moment-picker .moment-picker-container td:hover,.moment-picker .moment-picker-container th:hover{background:#f5f5f5;background-image:none}.moment-picker .moment-picker-container td.selected{background:#03a9f4;background-image:none}.moment-picker .moment-picker-container .header-view th{border-radius:0;white-space:nowrap;width:auto}.moment-picker .moment-picker-container .header-view th:first-child,.moment-picker .moment-picker-container .header-view th:last-child{width:20%}.c3{transition:all .3s ease}.c3 svg{font:12px RobotoDraft,Roboto,'Helvetica Neue',sans-serif}.c3 line,.c3 path{fill:none;stroke:#000}.c3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif;user-select:none}.c3 .c3-bars path,.c3 .c3-event-rect,.c3 .c3-legend-item-tile,.c3 .c3-xgrid-focus,.c3 .c3-ygrid{shape-rendering:crispEdges}.c3 .c3-chart-line{transition:all .3s ease}.c3 .c3-line{stroke-width:1px}.c3.stroke-3 .c3-line{stroke-width:3px}.c3.stroke-2 .c3-line{stroke-width:2px}.c3 .c3-circle{transition:all .3s ease;stroke:#fff;stroke-width:2}.c3 .c3-circle._expanded_{stroke-width:3;stroke:#fff}.c3 .c3-chart-arc path{stroke:#fff}.c3 .c3-chart-arc text{fill:#fff;font-size:13px}.c3 .c3-grid line{stroke:rgba(0,0,0,.04);stroke-width:1px;stroke-dasharray:0}.c3 .c3-grid text{fill:#aaa}.c3 .c3-axis .tick{stroke-width:0}.c3 .c3-axis text{fill:rgba(0,0,0,.33)}.c3 .c3-axis line,.c3 .c3-axis path{stroke:rgba(0,0,0,.04)}.c3 .c3-xgrid,.c3 .c3-ygrid{stroke-dasharray:0 0}.c3 .c3-text.c3-empty{fill:grey;font-size:2em}.c3 .c3-bar{stroke-width:0}.c3 .c3-bar._expanded_{fill-opacity:.75}.c3 .c3-target.c3-focused{opacity:1}.c3 .c3-target.c3-focused .c3-target.c3-focused path.c3-step,.c3 .c3-target.c3-focused path.c3-line{stroke-width:3px;transition:all .3s ease}.c3 .c3-target.c3-defocused{opacity:.3!important}.c3 .c3-region{fill:#4682b4;fill-opacity:.1}.c3 .c3-brush .extent{fill-opacity:.1}.c3 .c3-legend-item{font-size:12px}.c3 .c3-legend-item-hidden{opacity:.15}.c3 .c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3 .c3-tooltip-container{z-index:10}.c3 .c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;box-shadow:0 2px 4px -1px rgba(0,0,0,.14),0 4px 5px 0 rgba(0,0,0,.098),0 1px 10px 0 rgba(0,0,0,.084);opacity:1;border-radius:2px;overflow:hidden;padding:4px 0}.c3 .c3-tooltip tr{border:none}.c3 .c3-tooltip th{background-color:transparent;font-size:14px;font-weight:400;padding:8px 12px;text-align:left;color:rgba(0,0,0,.54)}.c3 .c3-tooltip td{font-size:13px;padding:4px 12px!important;background-color:#fff;border-left:none;color:rgba(0,0,0,.84)}.c3 .c3-tooltip td>span{display:inline-block;width:10px;height:10px;margin-right:6px}.c3 .c3-tooltip td.value{font-size:14px!important;text-align:right;color:rgba(0,0,0,.84)}.c3 .c3-area{stroke-width:0;opacity:.2}.c3 .c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3 .c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:none}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-max{fill:#777}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3 .c3-chart-arc .c3-gauge-value{fill:#000}.ct-label{font-size:13px}.ct-chart-donut .ct-label,.ct-chart-pie .ct-label{font-size:13px}.bar-legend,.chart-legend,.doughnut-legend,.line-legend,.pie-legend,.polararea-legend,.radar-legend{margin-top:15px}table.dataTable{width:100%;margin:0 auto;clear:both;border-spacing:0}table.dataTable thead tr{background:#fff}table.dataTable thead th{text-align:left;vertical-align:middle;border-bottom:1px solid rgba(0,0,0,.12);padding:16px 8px}table.dataTable thead th:first-child{padding-left:24px}table.dataTable thead th:last-child{border-right:none;padding-right:24px}table.dataTable thead th:active{outline:0}table.dataTable thead th.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap{white-space:nowrap}table.dataTable thead th .table-header .column-title{display:block;font-weight:600;white-space:nowrap}table.dataTable thead th .table-header .selectize-control{margin-top:15px}table.dataTable thead th .table-header .selectize-control.single .selectize-input{padding:7px 10px}table.dataTable thead th .table-header .selectize-control.single .selectize-input:after{right:10px;border-width:5px 4px 0 4px;border-color:rgba(0,0,0,.12) transparent transparent transparent}table.dataTable thead th .table-header .column-search-input{display:inline-block;margin-top:15px;width:100%;height:33px}table.dataTable thead td{padding:15px;vertical-align:middle}table.dataTable thead td:active{outline:0}table.dataTable thead td.dt-head-left{text-align:left}table.dataTable thead td.dt-head-center{text-align:center}table.dataTable thead td.dt-head-right{text-align:right}table.dataTable thead td.dt-head-justify{text-align:justify}table.dataTable thead td.dt-head-nowrap{white-space:nowrap}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc{background:0 0}table.dataTable thead .sorting .table-header .column-title,table.dataTable thead .sorting_asc .table-header .column-title,table.dataTable thead .sorting_desc .table-header .column-title{cursor:pointer}table.dataTable thead .sorting .table-header .column-title:after,table.dataTable thead .sorting_asc .table-header .column-title:after,table.dataTable thead .sorting_desc .table-header .column-title:after{position:relative;font-family:icomoon;font-weight:400;margin-left:10px;top:2px;font-size:16px;color:rgba(0,0,0,.54)}table.dataTable thead .sorting .table-header .column-title:after{content:'\eaa8'}table.dataTable thead .sorting_asc .table-header .column-title:after{content:'\e718'}table.dataTable thead .sorting_desc .table-header .column-title:after{content:'\e715'}table.dataTable tfoot th{font-weight:600;text-align:left;padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot th.dt-head-left{text-align:left}table.dataTable tfoot th.dt-head-center{text-align:center}table.dataTable tfoot th.dt-head-right{text-align:right}table.dataTable tfoot th.dt-head-justify{text-align:justify}table.dataTable tfoot th.dt-head-nowrap{white-space:nowrap}table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody tr{background-color:#fff}table.dataTable tbody tr.selected{background-color:#b0bed9}table.dataTable tbody tr.details-open td.detail-column i{background:#fff}table.dataTable tbody tr.details-row.odd tr{background:#fff}table.dataTable tbody tr.details-row>td{padding:0}table.dataTable tbody th{padding:14px 15px;vertical-align:middle}table.dataTable tbody th.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap{white-space:nowrap}table.dataTable tbody td{padding:16px 8px;vertical-align:middle}table.dataTable tbody td:first-child{padding-left:24px}table.dataTable tbody td:last-child{padding-right:24px}table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable th.dt-left{text-align:left}table.dataTable th.dt-center{text-align:center}table.dataTable th.dt-right{text-align:right}table.dataTable th.dt-justify{text-align:justify}table.dataTable th.dt-nowrap{white-space:nowrap}table.dataTable td.dt-left{text-align:left}table.dataTable td.dt-center{text-align:center}table.dataTable td.dataTables_empty{height:51px;text-align:center}table.dataTable td.dt-right{text-align:right}table.dataTable td.dt-justify{text-align:justify}table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable.row-border thead{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody tr:first-child th{border-top:none}table.dataTable.row-border tbody tr:first-child td{border-top:none}table.dataTable.row-border tbody tr:last-child td{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody th{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody td{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody tr:first-child th{border-top:none}table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody th:last-child{border-right:none}table.dataTable.cell-border tbody td{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody td:last-child{border-right:none}table.dataTable.stripe tbody tr.odd{background-color:#fff}table.dataTable.stripe tbody tr.odd.selected{background-color:#abb9d3}table.dataTable.hover tbody tr:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.odd:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.odd:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.even:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.even:hover.selected{background-color:#a9b7d1}table.dataTable.order-column tbody tr>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_2{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_3{background-color:#f9f9f9}table.dataTable.order-column tbody tr.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_2{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_3{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:#f5f5f5}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b3cd}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a7b5ce}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b6d0}table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fbfbfb}table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fdfdfd}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#adbbd6}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.no-footer{border-bottom:none}table.dataTable.nowrap th{white-space:nowrap}table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th{padding:5px 9px}table.dataTable.compact thead td{padding:5px 9px}table.dataTable.compact tfoot th{padding:5px 9px 3px 9px}table.dataTable.compact tfoot td{padding:5px 9px 3px 9px}table.dataTable.compact tbody th{padding:4px 5px}table.dataTable.compact tbody td{padding:4px 5px}.dataTables_wrapper{display:flex;flex:1 0 auto;flex-direction:column;min-height:0}.dataTables_wrapper .top{padding:16px 24px}.dataTables_wrapper .bottom{display:flex;min-height:64px;justify-content:space-between;padding:16px 8px;border-top:1px solid rgba(0,0,0,.12)}.dataTables_wrapper .bottom .left{display:flex;flex:0 0 50%;max-width:50%;align-self:center;padding:0 8px}.dataTables_wrapper .bottom .left .length{display:block}.dataTables_wrapper .bottom .right{display:flex;flex:0 0 50%;max-width:50%;align-self:center;justify-content:flex-end;padding:0 8px}.dataTables_wrapper .bottom .right .info{display:block;align-self:center}.dataTables_wrapper .bottom .right .info .dataTables_info{padding:0 8px;font-weight:600}.dataTables_wrapper .bottom .right .pagination{display:block;align-self:center;white-space:nowrap}.dataTables_wrapper .bottom .right .pagination .dataTables_paginate{padding:0;margin:0!important}.dataTables_wrapper .dataTables_filter{float:right}.dataTables_wrapper .dataTables_filter input{margin-left:.5em;border:1px solid rgba(0,0,0,.12);height:24px;padding:4px 8px}.dataTables_wrapper .dataTables_paginate .paginate_button{background:#fff;color:rgba(0,0,0,.87);border:1px solid rgba(0,0,0,.12);padding:9px 12px;border-radius:2px;cursor:pointer;user-select:none;margin:0 2px}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.05);color:rgba(0,0,0,.87)!important;border:1px solid rgba(0,0,0,.12)!important;background:0 0}.dataTables_wrapper .dataTables_paginate .paginate_button:active{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.08),inset 0 1px 3px 0 rgba(0,0,0,.1),0 1px 0 0 rgba(255,255,255,.35)}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover{color:rgba(0,0,0,.54)!important;border-color:rgba(0,0,0,.12)!important;background:#fff!important;box-shadow:none!important;cursor:default}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:#fff;background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,0)),color-stop(25%,rgba(255,255,255,.9)),color-stop(75%,rgba(255,255,255,.9)),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_scroll{display:flex;flex:1 1 0;flex-direction:column;clear:both;min-height:0}.dataTables_wrapper .dataTables_scroll table.dataTable{box-shadow:none}.dataTables_wrapper .dataTables_scroll table.dataTable.row-border thead{border:none}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead{display:flex;min-height:56px;box-shadow:0 0 0 1px rgba(0,0,0,.095),0 1px 1px 0 rgba(0,0,0,.1),0 2px 1px 0 rgba(0,0,0,.05);background:#fff;overflow:visible!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead tr th:last-child .table-header .column-title{position:relative;left:7px}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody{display:flex;overflow-x:hidden!important;overflow-y:scroll!important;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody th>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody td>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:none}.dataTables_wrapper.no-footer .dataTables_scrollBody table,.dataTables_wrapper.no-footer .dataTables_scrollHead table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:'';clear:both;height:0}table.dataTable .show-details{padding:5px 10px;font-weight:700}table.dataTable .action-buttons{display:flex;justify-content:center}table.dataTable .action-buttons .button{padding:8px}.fullpage-datatable .dataTables_wrapper{height:100%;max-height:100%}.explorer-11 .fullpage-datatable .dataTables_scroll{flex:1}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child{padding-left:40px}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child:before{content:'+';width:15px;height:15px;line-height:15px;top:50%;margin-top:-7px;left:8px;color:rgba(0,0,0,.54);background:0 0;border:none;box-shadow:0 0 0 2px rgba(0,0,0,.54);font-weight:700}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{background:0 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul{display:block}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;border-bottom:1px solid rgba(0,0,0,.12);padding:8px 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:first-child{padding-top:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:last-child{border-bottom:none;padding-bottom:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li .dtr-title{margin-right:8px}[hljs],hljs{display:block;overflow-x:auto;color:#333;background:#f8f8f8;-webkit-text-size-adjust:none}.diff .hljs-header,.hljs-comment{color:#998;font-style:italic}.css .rule .hljs-keyword,.hljs-keyword,.hljs-request,.hljs-status,.hljs-subst,.hljs-winutils,.nginx .hljs-title{color:#333;font-weight:700}.hljs-hexcolor,.hljs-number,.ruby .hljs-constant{color:teal}.hljs-doctag,.hljs-string,.hljs-tag .hljs-value,.tex .hljs-formula{color:#d14}.hljs-id,.hljs-title,.scss .hljs-preprocessor{color:#900;font-weight:700}.hljs-list .hljs-keyword,.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type,.tex .hljs-command,.vhdl .hljs-literal{color:#458;font-weight:700}.django .hljs-tag .hljs-keyword,.hljs-rule .hljs-property,.hljs-tag,.hljs-tag .hljs-title{color:navy;font-weight:400}.hljs-attribute,.hljs-name,.hljs-variable,.lisp .hljs-body{color:teal}.hljs-regexp{color:#009926}.clojure .hljs-keyword,.hljs-prompt,.hljs-symbol,.lisp .hljs-keyword,.ruby .hljs-symbol .hljs-string,.scheme .hljs-keyword,.tex .hljs-special{color:#990073}.hljs-built_in{color:#0086b3}.hljs-cdata,.hljs-doctype,.hljs-pi,.hljs-pragma,.hljs-preprocessor,.hljs-shebang{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.diff .hljs-change{background:#0086b3}.hljs-chunk{color:#aaa}nvd3{display:block;width:100%;height:100%}nvd3.remove-x-lines .nv-x .tick line{display:none}nvd3.remove-y-lines .nv-y .tick line{display:none}nvd3.remove-line-stroke .nv-groups path.nv-line{stroke-width:0!important}nvd3.remove-opacity .nv-groups .nv-group{fill-opacity:1!important}nvd3.show-line-points .nv-line .nv-scatter .nv-groups .nv-point{fill-opacity:1!important;stroke-opacity:1!important}.nvd3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif}.nvd3 line.nv-guideline{stroke:rgba(0,0,0,.54)}.nvd3 .nv-groups .nv-point.hover{stroke-width:3px!important;fill-opacity:1!important;stroke-opacity:1!important}.nvtooltip{background:0 0;color:#fff;padding:0;border:none}.nvtooltip.gravity-n:after{display:block;position:absolute;content:'';width:0;height:0;left:50%;bottom:100%;margin-left:-5px;border:5px solid transparent;border-bottom-color:rgba(0,0,0,.87)}.nvtooltip.gravity-s:after{display:block;position:absolute;content:'';width:0;height:0;top:100%;left:50%;margin-left:-5px;border:5px solid transparent;border-top-color:rgba(0,0,0,.87)}.nvtooltip.gravity-e:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;right:0;margin-top:-6px;margin-right:-11px;border:6px solid transparent;border-left-color:rgba(0,0,0,.87)}.nvtooltip.gravity-w:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;margin-top:-6px;margin-left:-11px;border:6px solid transparent;border-right-color:rgba(0,0,0,.87)}.nvtooltip table{background:rgba(0,0,0,.87);padding:8px 12px;margin:0;border-radius:2px}.nvtooltip table tbody tr td.legend-color-guide div{border:none}.nvtooltip table tbody tr td:last-child{padding-right:0}.ps-container:hover .ps-in-scrolling{pointer-events:auto}.ps-container .ps-in-scrolling{pointer-events:auto}.ps-container>.ps-scrollbar-x-rail{background:0 0!important;margin:4px 0;height:4px;z-index:49}.ps-container>.ps-scrollbar-x-rail>.ps-scrollbar-x{height:4px}.ps-container>.ps-scrollbar-y-rail{background:0 0!important;margin:4px 0;width:4px;z-index:49}.ps-container>.ps-scrollbar-y-rail>.ps-scrollbar-y{width:4px}.ta-root{display:block}.ta-root .ta-scroll-window.form-control{border:1px solid rgba(0,0,0,.12)}.ta-root.focussed>.ta-scroll-window.form-control{outline:0 solid transparent;border:1px solid rgba(0,0,0,.12);box-shadow:none}.ta-root textarea.ta-editor.ta-html{resize:vertical;width:100%!important;border:1px solid rgba(0,0,0,.12);padding:16px}.ta-root .ta-toolbar{border:1px solid rgba(0,0,0,.12);border-bottom:none;background:#f5f5f5}.ta-root .ta-toolbar .ta-group{display:flex;align-items:center;align-content:center;flex-wrap:wrap}.ta-root .ta-toolbar .ta-group #toolbarCC,.ta-root .ta-toolbar .ta-group #toolbarWC{display:inline-block!important;line-height:24px}.ta-root .ta-toolbar .ta-group .md-button{width:40px;min-width:40px;line-height:14px;height:36px;min-height:36px;padding:6px;margin:4px 0}.ta-root .ta-toolbar .ta-group .md-button i{font-size:20px;width:20px;height:20px;line-height:20px}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}.no-padding{padding:0!important}.no-margin{margin:0!important}.no-radius{border-radius:0}.divider-vertical{background:rgba(0,0,0,.12);height:24px;width:1px;margin:0 8px}.hidden{visibility:hidden;opacity:0}[fill-width]{min-width:100%}[fill-height]{min-height:100%}.full-height{height:100%!important}a img{display:block;outline:0}img{max-width:100%;height:auto;vertical-align:top;border:none}.scrollable{display:block;position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.scrollable.only-x{overflow-x:auto;overflow-y:hidden}.scrollable.only-y{overflow-x:hidden;overflow-y:auto}.flex-scrollable{position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.flex-scrollable.only-x{overflow-x:auto;overflow-y:hidden}.flex-scrollable.only-y{overflow-x:hidden;overflow-y:auto}.background-image-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:-1}.align-vertical:before{display:inline-block;height:100%;content:'';vertical-align:middle}.align-vertical .align-vertical-bottom,.align-vertical .align-vertical-middle,.align-vertical .align-vertical-top{display:inline-block}.align-vertical .align-vertical-top{vertical-align:top}.align-vertical .align-vertical-middle{vertical-align:middle}.align-vertical .align-vertical-bottom{vertical-align:bottom}.p-0,.padding-0{padding:0}.padding-top-0,.pt-0{padding-top:0}.padding-right-0,.pr-0{padding-right:0}.padding-bottom-0,.pb-0{padding-bottom:0}.padding-left-0,.pl-0{padding-left:0}.padding-horizontal-0,.ph-0{padding-left:0;padding-right:0}.padding-vertical-0,.pv-0{padding-top:0;padding-bottom:0}.p-5,.padding-5{padding:5px}.padding-top-5,.pt-5{padding-top:5px}.padding-right-5,.pr-5{padding-right:5px}.padding-bottom-5,.pb-5{padding-bottom:5px}.padding-left-5,.pl-5{padding-left:5px}.padding-horizontal-5,.ph-5{padding-left:5px;padding-right:5px}.padding-vertical-5,.pv-5{padding-top:5px;padding-bottom:5px}.p-10,.padding-10{padding:10px}.padding-top-10,.pt-10{padding-top:10px}.padding-right-10,.pr-10{padding-right:10px}.padding-bottom-10,.pb-10{padding-bottom:10px}.padding-left-10,.pl-10{padding-left:10px}.padding-horizontal-10,.ph-10{padding-left:10px;padding-right:10px}.padding-vertical-10,.pv-10{padding-top:10px;padding-bottom:10px}.p-15,.padding-15{padding:15px}.padding-top-15,.pt-15{padding-top:15px}.padding-right-15,.pr-15{padding-right:15px}.padding-bottom-15,.pb-15{padding-bottom:15px}.padding-left-15,.pl-15{padding-left:15px}.padding-horizontal-15,.ph-15{padding-left:15px;padding-right:15px}.padding-vertical-15,.pv-15{padding-top:15px;padding-bottom:15px}.p-20,.padding-20{padding:20px}.padding-top-20,.pt-20{padding-top:20px}.padding-right-20,.pr-20{padding-right:20px}.padding-bottom-20,.pb-20{padding-bottom:20px}.padding-left-20,.pl-20{padding-left:20px}.padding-horizontal-20,.ph-20{padding-left:20px;padding-right:20px}.padding-vertical-20,.pv-20{padding-top:20px;padding-bottom:20px}.p-25,.padding-25{padding:25px}.padding-top-25,.pt-25{padding-top:25px}.padding-right-25,.pr-25{padding-right:25px}.padding-bottom-25,.pb-25{padding-bottom:25px}.padding-left-25,.pl-25{padding-left:25px}.padding-horizontal-25,.ph-25{padding-left:25px;padding-right:25px}.padding-vertical-25,.pv-25{padding-top:25px;padding-bottom:25px}.p-30,.padding-30{padding:30px}.padding-top-30,.pt-30{padding-top:30px}.padding-right-30,.pr-30{padding-right:30px}.padding-bottom-30,.pb-30{padding-bottom:30px}.padding-left-30,.pl-30{padding-left:30px}.padding-horizontal-30,.ph-30{padding-left:30px;padding-right:30px}.padding-vertical-30,.pv-30{padding-top:30px;padding-bottom:30px}.p-35,.padding-35{padding:35px}.padding-top-35,.pt-35{padding-top:35px}.padding-right-35,.pr-35{padding-right:35px}.padding-bottom-35,.pb-35{padding-bottom:35px}.padding-left-35,.pl-35{padding-left:35px}.padding-horizontal-35,.ph-35{padding-left:35px;padding-right:35px}.padding-vertical-35,.pv-35{padding-top:35px;padding-bottom:35px}.p-40,.padding-40{padding:40px}.padding-top-40,.pt-40{padding-top:40px}.padding-right-40,.pr-40{padding-right:40px}.padding-bottom-40,.pb-40{padding-bottom:40px}.padding-left-40,.pl-40{padding-left:40px}.padding-horizontal-40,.ph-40{padding-left:40px;padding-right:40px}.padding-vertical-40,.pv-40{padding-top:40px;padding-bottom:40px}.p-45,.padding-45{padding:45px}.padding-top-45,.pt-45{padding-top:45px}.padding-right-45,.pr-45{padding-right:45px}.padding-bottom-45,.pb-45{padding-bottom:45px}.padding-left-45,.pl-45{padding-left:45px}.padding-horizontal-45,.ph-45{padding-left:45px;padding-right:45px}.padding-vertical-45,.pv-45{padding-top:45px;padding-bottom:45px}.p-50,.padding-50{padding:50px}.padding-top-50,.pt-50{padding-top:50px}.padding-right-50,.pr-50{padding-right:50px}.padding-bottom-50,.pb-50{padding-bottom:50px}.padding-left-50,.pl-50{padding-left:50px}.padding-horizontal-50,.ph-50{padding-left:50px;padding-right:50px}.padding-vertical-50,.pv-50{padding-top:50px;padding-bottom:50px}.p-55,.padding-55{padding:55px}.padding-top-55,.pt-55{padding-top:55px}.padding-right-55,.pr-55{padding-right:55px}.padding-bottom-55,.pb-55{padding-bottom:55px}.padding-left-55,.pl-55{padding-left:55px}.padding-horizontal-55,.ph-55{padding-left:55px;padding-right:55px}.padding-vertical-55,.pv-55{padding-top:55px;padding-bottom:55px}.p-60,.padding-60{padding:60px}.padding-top-60,.pt-60{padding-top:60px}.padding-right-60,.pr-60{padding-right:60px}.padding-bottom-60,.pb-60{padding-bottom:60px}.padding-left-60,.pl-60{padding-left:60px}.padding-horizontal-60,.ph-60{padding-left:60px;padding-right:60px}.padding-vertical-60,.pv-60{padding-top:60px;padding-bottom:60px}.p-65,.padding-65{padding:65px}.padding-top-65,.pt-65{padding-top:65px}.padding-right-65,.pr-65{padding-right:65px}.padding-bottom-65,.pb-65{padding-bottom:65px}.padding-left-65,.pl-65{padding-left:65px}.padding-horizontal-65,.ph-65{padding-left:65px;padding-right:65px}.padding-vertical-65,.pv-65{padding-top:65px;padding-bottom:65px}.p-70,.padding-70{padding:70px}.padding-top-70,.pt-70{padding-top:70px}.padding-right-70,.pr-70{padding-right:70px}.padding-bottom-70,.pb-70{padding-bottom:70px}.padding-left-70,.pl-70{padding-left:70px}.padding-horizontal-70,.ph-70{padding-left:70px;padding-right:70px}.padding-vertical-70,.pv-70{padding-top:70px;padding-bottom:70px}.p-75,.padding-75{padding:75px}.padding-top-75,.pt-75{padding-top:75px}.padding-right-75,.pr-75{padding-right:75px}.padding-bottom-75,.pb-75{padding-bottom:75px}.padding-left-75,.pl-75{padding-left:75px}.padding-horizontal-75,.ph-75{padding-left:75px;padding-right:75px}.padding-vertical-75,.pv-75{padding-top:75px;padding-bottom:75px}.p-80,.padding-80{padding:80px}.padding-top-80,.pt-80{padding-top:80px}.padding-right-80,.pr-80{padding-right:80px}.padding-bottom-80,.pb-80{padding-bottom:80px}.padding-left-80,.pl-80{padding-left:80px}.padding-horizontal-80,.ph-80{padding-left:80px;padding-right:80px}.padding-vertical-80,.pv-80{padding-top:80px;padding-bottom:80px}.p-85,.padding-85{padding:85px}.padding-top-85,.pt-85{padding-top:85px}.padding-right-85,.pr-85{padding-right:85px}.padding-bottom-85,.pb-85{padding-bottom:85px}.padding-left-85,.pl-85{padding-left:85px}.padding-horizontal-85,.ph-85{padding-left:85px;padding-right:85px}.padding-vertical-85,.pv-85{padding-top:85px;padding-bottom:85px}.p-90,.padding-90{padding:90px}.padding-top-90,.pt-90{padding-top:90px}.padding-right-90,.pr-90{padding-right:90px}.padding-bottom-90,.pb-90{padding-bottom:90px}.padding-left-90,.pl-90{padding-left:90px}.padding-horizontal-90,.ph-90{padding-left:90px;padding-right:90px}.padding-vertical-90,.pv-90{padding-top:90px;padding-bottom:90px}.p-95,.padding-95{padding:95px}.padding-top-95,.pt-95{padding-top:95px}.padding-right-95,.pr-95{padding-right:95px}.padding-bottom-95,.pb-95{padding-bottom:95px}.padding-left-95,.pl-95{padding-left:95px}.padding-horizontal-95,.ph-95{padding-left:95px;padding-right:95px}.padding-vertical-95,.pv-95{padding-top:95px;padding-bottom:95px}.p-100,.padding-100{padding:100px}.padding-top-100,.pt-100{padding-top:100px}.padding-right-100,.pr-100{padding-right:100px}.padding-bottom-100,.pb-100{padding-bottom:100px}.padding-left-100,.pl-100{padding-left:100px}.padding-horizontal-100,.ph-100{padding-left:100px;padding-right:100px}.padding-vertical-100,.pv-100{padding-top:100px;padding-bottom:100px}.p-8,.padding-8{padding:8px}.padding-top-8,.pt-8{padding-top:8px}.padding-right-8,.pr-8{padding-right:8px}.padding-bottom-8,.pb-8{padding-bottom:8px}.padding-left-8,.pl-8{padding-left:8px}.padding-horizontal-8,.ph-8{padding-left:8px;padding-right:8px}.padding-vertical-8,.pv-8{padding-top:8px;padding-bottom:8px}.p-16,.padding-16{padding:16px}.padding-top-16,.pt-16{padding-top:16px}.padding-right-16,.pr-16{padding-right:16px}.padding-bottom-16,.pb-16{padding-bottom:16px}.padding-left-16,.pl-16{padding-left:16px}.padding-horizontal-16,.ph-16{padding-left:16px;padding-right:16px}.padding-vertical-16,.pv-16{padding-top:16px;padding-bottom:16px}.p-24,.padding-24{padding:24px}.padding-top-24,.pt-24{padding-top:24px}.padding-right-24,.pr-24{padding-right:24px}.padding-bottom-24,.pb-24{padding-bottom:24px}.padding-left-24,.pl-24{padding-left:24px}.padding-horizontal-24,.ph-24{padding-left:24px;padding-right:24px}.padding-vertical-24,.pv-24{padding-top:24px;padding-bottom:24px}.p-32,.padding-32{padding:32px}.padding-top-32,.pt-32{padding-top:32px}.padding-right-32,.pr-32{padding-right:32px}.padding-bottom-32,.pb-32{padding-bottom:32px}.padding-left-32,.pl-32{padding-left:32px}.padding-horizontal-32,.ph-32{padding-left:32px;padding-right:32px}.padding-vertical-32,.pv-32{padding-top:32px;padding-bottom:32px}.p-48,.padding-48{padding:48px}.padding-top-48,.pt-48{padding-top:48px}.padding-right-48,.pr-48{padding-right:48px}.padding-bottom-48,.pb-48{padding-bottom:48px}.padding-left-48,.pl-48{padding-left:48px}.padding-horizontal-48,.ph-48{padding-left:48px;padding-right:48px}.padding-vertical-48,.pv-48{padding-top:48px;padding-bottom:48px}.p-56,.padding-56{padding:56px}.padding-top-56,.pt-56{padding-top:56px}.padding-right-56,.pr-56{padding-right:56px}.padding-bottom-56,.pb-56{padding-bottom:56px}.padding-left-56,.pl-56{padding-left:56px}.padding-horizontal-56,.ph-56{padding-left:56px;padding-right:56px}.padding-vertical-56,.pv-56{padding-top:56px;padding-bottom:56px}.p-64,.padding-64{padding:64px}.padding-top-64,.pt-64{padding-top:64px}.padding-right-64,.pr-64{padding-right:64px}.padding-bottom-64,.pb-64{padding-bottom:64px}.padding-left-64,.pl-64{padding-left:64px}.padding-horizontal-64,.ph-64{padding-left:64px;padding-right:64px}.padding-vertical-64,.pv-64{padding-top:64px;padding-bottom:64px}.p-72,.padding-72{padding:72px}.padding-top-72,.pt-72{padding-top:72px}.padding-right-72,.pr-72{padding-right:72px}.padding-bottom-72,.pb-72{padding-bottom:72px}.padding-left-72,.pl-72{padding-left:72px}.padding-horizontal-72,.ph-72{padding-left:72px;padding-right:72px}.padding-vertical-72,.pv-72{padding-top:72px;padding-bottom:72px}.p-88,.padding-88{padding:88px}.padding-top-88,.pt-88{padding-top:88px}.padding-right-88,.pr-88{padding-right:88px}.padding-bottom-88,.pb-88{padding-bottom:88px}.padding-left-88,.pl-88{padding-left:88px}.padding-horizontal-88,.ph-88{padding-left:88px;padding-right:88px}.padding-vertical-88,.pv-88{padding-top:88px;padding-bottom:88px}.p-96,.padding-96{padding:96px}.padding-top-96,.pt-96{padding-top:96px}.padding-right-96,.pr-96{padding-right:96px}.padding-bottom-96,.pb-96{padding-bottom:96px}.padding-left-96,.pl-96{padding-left:96px}.padding-horizontal-96,.ph-96{padding-left:96px;padding-right:96px}.padding-vertical-96,.pv-96{padding-top:96px;padding-bottom:96px}.m-0,.margin-0{margin:0}.margin-top-0,.mt-0{margin-top:0}.margin-right-0,.mr-0{margin-right:0}.margin-bottom-0,.mb-0{margin-bottom:0}.margin-left-0,.ml-0{margin-left:0}.margin-horizontal-0,.mh-0{margin-left:0;margin-right:0}.margin-vertical-0,.mv-0{margin-top:0;margin-bottom:0}.m-5,.margin-5{margin:5px}.margin-top-5,.mt-5{margin-top:5px}.margin-right-5,.mr-5{margin-right:5px}.margin-bottom-5,.mb-5{margin-bottom:5px}.margin-left-5,.ml-5{margin-left:5px}.margin-horizontal-5,.mh-5{margin-left:5px;margin-right:5px}.margin-vertical-5,.mv-5{margin-top:5px;margin-bottom:5px}.m-10,.margin-10{margin:10px}.margin-top-10,.mt-10{margin-top:10px}.margin-right-10,.mr-10{margin-right:10px}.margin-bottom-10,.mb-10{margin-bottom:10px}.margin-left-10,.ml-10{margin-left:10px}.margin-horizontal-10,.mh-10{margin-left:10px;margin-right:10px}.margin-vertical-10,.mv-10{margin-top:10px;margin-bottom:10px}.m-15,.margin-15{margin:15px}.margin-top-15,.mt-15{margin-top:15px}.margin-right-15,.mr-15{margin-right:15px}.margin-bottom-15,.mb-15{margin-bottom:15px}.margin-left-15,.ml-15{margin-left:15px}.margin-horizontal-15,.mh-15{margin-left:15px;margin-right:15px}.margin-vertical-15,.mv-15{margin-top:15px;margin-bottom:15px}.m-20,.margin-20{margin:20px}.margin-top-20,.mt-20{margin-top:20px}.margin-right-20,.mr-20{margin-right:20px}.margin-bottom-20,.mb-20{margin-bottom:20px}.margin-left-20,.ml-20{margin-left:20px}.margin-horizontal-20,.mh-20{margin-left:20px;margin-right:20px}.margin-vertical-20,.mv-20{margin-top:20px;margin-bottom:20px}.m-25,.margin-25{margin:25px}.margin-top-25,.mt-25{margin-top:25px}.margin-right-25,.mr-25{margin-right:25px}.margin-bottom-25,.mb-25{margin-bottom:25px}.margin-left-25,.ml-25{margin-left:25px}.margin-horizontal-25,.mh-25{margin-left:25px;margin-right:25px}.margin-vertical-25,.mv-25{margin-top:25px;margin-bottom:25px}.m-30,.margin-30{margin:30px}.margin-top-30,.mt-30{margin-top:30px}.margin-right-30,.mr-30{margin-right:30px}.margin-bottom-30,.mb-30{margin-bottom:30px}.margin-left-30,.ml-30{margin-left:30px}.margin-horizontal-30,.mh-30{margin-left:30px;margin-right:30px}.margin-vertical-30,.mv-30{margin-top:30px;margin-bottom:30px}.m-35,.margin-35{margin:35px}.margin-top-35,.mt-35{margin-top:35px}.margin-right-35,.mr-35{margin-right:35px}.margin-bottom-35,.mb-35{margin-bottom:35px}.margin-left-35,.ml-35{margin-left:35px}.margin-horizontal-35,.mh-35{margin-left:35px;margin-right:35px}.margin-vertical-35,.mv-35{margin-top:35px;margin-bottom:35px}.m-40,.margin-40{margin:40px}.margin-top-40,.mt-40{margin-top:40px}.margin-right-40,.mr-40{margin-right:40px}.margin-bottom-40,.mb-40{margin-bottom:40px}.margin-left-40,.ml-40{margin-left:40px}.margin-horizontal-40,.mh-40{margin-left:40px;margin-right:40px}.margin-vertical-40,.mv-40{margin-top:40px;margin-bottom:40px}.m-45,.margin-45{margin:45px}.margin-top-45,.mt-45{margin-top:45px}.margin-right-45,.mr-45{margin-right:45px}.margin-bottom-45,.mb-45{margin-bottom:45px}.margin-left-45,.ml-45{margin-left:45px}.margin-horizontal-45,.mh-45{margin-left:45px;margin-right:45px}.margin-vertical-45,.mv-45{margin-top:45px;margin-bottom:45px}.m-50,.margin-50{margin:50px}.margin-top-50,.mt-50{margin-top:50px}.margin-right-50,.mr-50{margin-right:50px}.margin-bottom-50,.mb-50{margin-bottom:50px}.margin-left-50,.ml-50{margin-left:50px}.margin-horizontal-50,.mh-50{margin-left:50px;margin-right:50px}.margin-vertical-50,.mv-50{margin-top:50px;margin-bottom:50px}.m-55,.margin-55{margin:55px}.margin-top-55,.mt-55{margin-top:55px}.margin-right-55,.mr-55{margin-right:55px}.margin-bottom-55,.mb-55{margin-bottom:55px}.margin-left-55,.ml-55{margin-left:55px}.margin-horizontal-55,.mh-55{margin-left:55px;margin-right:55px}.margin-vertical-55,.mv-55{margin-top:55px;margin-bottom:55px}.m-60,.margin-60{margin:60px}.margin-top-60,.mt-60{margin-top:60px}.margin-right-60,.mr-60{margin-right:60px}.margin-bottom-60,.mb-60{margin-bottom:60px}.margin-left-60,.ml-60{margin-left:60px}.margin-horizontal-60,.mh-60{margin-left:60px;margin-right:60px}.margin-vertical-60,.mv-60{margin-top:60px;margin-bottom:60px}.m-65,.margin-65{margin:65px}.margin-top-65,.mt-65{margin-top:65px}.margin-right-65,.mr-65{margin-right:65px}.margin-bottom-65,.mb-65{margin-bottom:65px}.margin-left-65,.ml-65{margin-left:65px}.margin-horizontal-65,.mh-65{margin-left:65px;margin-right:65px}.margin-vertical-65,.mv-65{margin-top:65px;margin-bottom:65px}.m-70,.margin-70{margin:70px}.margin-top-70,.mt-70{margin-top:70px}.margin-right-70,.mr-70{margin-right:70px}.margin-bottom-70,.mb-70{margin-bottom:70px}.margin-left-70,.ml-70{margin-left:70px}.margin-horizontal-70,.mh-70{margin-left:70px;margin-right:70px}.margin-vertical-70,.mv-70{margin-top:70px;margin-bottom:70px}.m-75,.margin-75{margin:75px}.margin-top-75,.mt-75{margin-top:75px}.margin-right-75,.mr-75{margin-right:75px}.margin-bottom-75,.mb-75{margin-bottom:75px}.margin-left-75,.ml-75{margin-left:75px}.margin-horizontal-75,.mh-75{margin-left:75px;margin-right:75px}.margin-vertical-75,.mv-75{margin-top:75px;margin-bottom:75px}.m-80,.margin-80{margin:80px}.margin-top-80,.mt-80{margin-top:80px}.margin-right-80,.mr-80{margin-right:80px}.margin-bottom-80,.mb-80{margin-bottom:80px}.margin-left-80,.ml-80{margin-left:80px}.margin-horizontal-80,.mh-80{margin-left:80px;margin-right:80px}.margin-vertical-80,.mv-80{margin-top:80px;margin-bottom:80px}.m-85,.margin-85{margin:85px}.margin-top-85,.mt-85{margin-top:85px}.margin-right-85,.mr-85{margin-right:85px}.margin-bottom-85,.mb-85{margin-bottom:85px}.margin-left-85,.ml-85{margin-left:85px}.margin-horizontal-85,.mh-85{margin-left:85px;margin-right:85px}.margin-vertical-85,.mv-85{margin-top:85px;margin-bottom:85px}.m-90,.margin-90{margin:90px}.margin-top-90,.mt-90{margin-top:90px}.margin-right-90,.mr-90{margin-right:90px}.margin-bottom-90,.mb-90{margin-bottom:90px}.margin-left-90,.ml-90{margin-left:90px}.margin-horizontal-90,.mh-90{margin-left:90px;margin-right:90px}.margin-vertical-90,.mv-90{margin-top:90px;margin-bottom:90px}.m-95,.margin-95{margin:95px}.margin-top-95,.mt-95{margin-top:95px}.margin-right-95,.mr-95{margin-right:95px}.margin-bottom-95,.mb-95{margin-bottom:95px}.margin-left-95,.ml-95{margin-left:95px}.margin-horizontal-95,.mh-95{margin-left:95px;margin-right:95px}.margin-vertical-95,.mv-95{margin-top:95px;margin-bottom:95px}.m-100,.margin-100{margin:100px}.margin-top-100,.mt-100{margin-top:100px}.margin-right-100,.mr-100{margin-right:100px}.margin-bottom-100,.mb-100{margin-bottom:100px}.margin-left-100,.ml-100{margin-left:100px}.margin-horizontal-100,.mh-100{margin-left:100px;margin-right:100px}.margin-vertical-100,.mv-100{margin-top:100px;margin-bottom:100px}.m-8,.margin-8{margin:8px}.margin-top-8,.mt-8{margin-top:8px}.margin-right-8,.mr-8{margin-right:8px}.margin-bottom-8,.mb-8{margin-bottom:8px}.margin-left-8,.ml-8{margin-left:8px}.margin-horizontal-8,.mh-8{margin-left:8px;margin-right:8px}.margin-vertical-8,.mv-8{margin-top:8px;margin-bottom:8px}.m-16,.margin-16{margin:16px}.margin-top-16,.mt-16{margin-top:16px}.margin-right-16,.mr-16{margin-right:16px}.margin-bottom-16,.mb-16{margin-bottom:16px}.margin-left-16,.ml-16{margin-left:16px}.margin-horizontal-16,.mh-16{margin-left:16px;margin-right:16px}.margin-vertical-16,.mv-16{margin-top:16px;margin-bottom:16px}.m-24,.margin-24{margin:24px}.margin-top-24,.mt-24{margin-top:24px}.margin-right-24,.mr-24{margin-right:24px}.margin-bottom-24,.mb-24{margin-bottom:24px}.margin-left-24,.ml-24{margin-left:24px}.margin-horizontal-24,.mh-24{margin-left:24px;margin-right:24px}.margin-vertical-24,.mv-24{margin-top:24px;margin-bottom:24px}.m-32,.margin-32{margin:32px}.margin-top-32,.mt-32{margin-top:32px}.margin-right-32,.mr-32{margin-right:32px}.margin-bottom-32,.mb-32{margin-bottom:32px}.margin-left-32,.ml-32{margin-left:32px}.margin-horizontal-32,.mh-32{margin-left:32px;margin-right:32px}.margin-vertical-32,.mv-32{margin-top:32px;margin-bottom:32px}.m-48,.margin-48{margin:48px}.margin-top-48,.mt-48{margin-top:48px}.margin-right-48,.mr-48{margin-right:48px}.margin-bottom-48,.mb-48{margin-bottom:48px}.margin-left-48,.ml-48{margin-left:48px}.margin-horizontal-48,.mh-48{margin-left:48px;margin-right:48px}.margin-vertical-48,.mv-48{margin-top:48px;margin-bottom:48px}.m-56,.margin-56{margin:56px}.margin-top-56,.mt-56{margin-top:56px}.margin-right-56,.mr-56{margin-right:56px}.margin-bottom-56,.mb-56{margin-bottom:56px}.margin-left-56,.ml-56{margin-left:56px}.margin-horizontal-56,.mh-56{margin-left:56px;margin-right:56px}.margin-vertical-56,.mv-56{margin-top:56px;margin-bottom:56px}.m-64,.margin-64{margin:64px}.margin-top-64,.mt-64{margin-top:64px}.margin-right-64,.mr-64{margin-right:64px}.margin-bottom-64,.mb-64{margin-bottom:64px}.margin-left-64,.ml-64{margin-left:64px}.margin-horizontal-64,.mh-64{margin-left:64px;margin-right:64px}.margin-vertical-64,.mv-64{margin-top:64px;margin-bottom:64px}.m-72,.margin-72{margin:72px}.margin-top-72,.mt-72{margin-top:72px}.margin-right-72,.mr-72{margin-right:72px}.margin-bottom-72,.mb-72{margin-bottom:72px}.margin-left-72,.ml-72{margin-left:72px}.margin-horizontal-72,.mh-72{margin-left:72px;margin-right:72px}.margin-vertical-72,.mv-72{margin-top:72px;margin-bottom:72px}.m-88,.margin-88{margin:88px}.margin-top-88,.mt-88{margin-top:88px}.margin-right-88,.mr-88{margin-right:88px}.margin-bottom-88,.mb-88{margin-bottom:88px}.margin-left-88,.ml-88{margin-left:88px}.margin-horizontal-88,.mh-88{margin-left:88px;margin-right:88px}.margin-vertical-88,.mv-88{margin-top:88px;margin-bottom:88px}.m-96,.margin-96{margin:96px}.margin-top-96,.mt-96{margin-top:96px}.margin-right-96,.mr-96{margin-right:96px}.margin-bottom-96,.mb-96{margin-bottom:96px}.margin-left-96,.ml-96{margin-left:96px}.margin-horizontal-96,.mh-96{margin-left:96px;margin-right:96px}.margin-vertical-96,.mv-96{margin-top:96px;margin-bottom:96px}.h-0,.height-0{height:0!important;min-height:0!important;max-height:0!important}.w-0,.width-0{width:0!important;min-width:0!important;max-width:0!important}.h-5,.height-5{height:5px!important;min-height:5px!important;max-height:5px!important}.w-5,.width-5{width:5px!important;min-width:5px!important;max-width:5px!important}.h-10,.height-10{height:10px!important;min-height:10px!important;max-height:10px!important}.w-10,.width-10{width:10px!important;min-width:10px!important;max-width:10px!important}.h-15,.height-15{height:15px!important;min-height:15px!important;max-height:15px!important}.w-15,.width-15{width:15px!important;min-width:15px!important;max-width:15px!important}.h-20,.height-20{height:20px!important;min-height:20px!important;max-height:20px!important}.w-20,.width-20{width:20px!important;min-width:20px!important;max-width:20px!important}.h-25,.height-25{height:25px!important;min-height:25px!important;max-height:25px!important}.w-25,.width-25{width:25px!important;min-width:25px!important;max-width:25px!important}.h-30,.height-30{height:30px!important;min-height:30px!important;max-height:30px!important}.w-30,.width-30{width:30px!important;min-width:30px!important;max-width:30px!important}.h-35,.height-35{height:35px!important;min-height:35px!important;max-height:35px!important}.w-35,.width-35{width:35px!important;min-width:35px!important;max-width:35px!important}.h-40,.height-40{height:40px!important;min-height:40px!important;max-height:40px!important}.w-40,.width-40{width:40px!important;min-width:40px!important;max-width:40px!important}.h-45,.height-45{height:45px!important;min-height:45px!important;max-height:45px!important}.w-45,.width-45{width:45px!important;min-width:45px!important;max-width:45px!important}.h-50,.height-50{height:50px!important;min-height:50px!important;max-height:50px!important}.w-50,.width-50{width:50px!important;min-width:50px!important;max-width:50px!important}.h-55,.height-55{height:55px!important;min-height:55px!important;max-height:55px!important}.w-55,.width-55{width:55px!important;min-width:55px!important;max-width:55px!important}.h-60,.height-60{height:60px!important;min-height:60px!important;max-height:60px!important}.w-60,.width-60{width:60px!important;min-width:60px!important;max-width:60px!important}.h-65,.height-65{height:65px!important;min-height:65px!important;max-height:65px!important}.w-65,.width-65{width:65px!important;min-width:65px!important;max-width:65px!important}.h-70,.height-70{height:70px!important;min-height:70px!important;max-height:70px!important}.w-70,.width-70{width:70px!important;min-width:70px!important;max-width:70px!important}.h-75,.height-75{height:75px!important;min-height:75px!important;max-height:75px!important}.w-75,.width-75{width:75px!important;min-width:75px!important;max-width:75px!important}.h-80,.height-80{height:80px!important;min-height:80px!important;max-height:80px!important}.w-80,.width-80{width:80px!important;min-width:80px!important;max-width:80px!important}.h-85,.height-85{height:85px!important;min-height:85px!important;max-height:85px!important}.w-85,.width-85{width:85px!important;min-width:85px!important;max-width:85px!important}.h-90,.height-90{height:90px!important;min-height:90px!important;max-height:90px!important}.w-90,.width-90{width:90px!important;min-width:90px!important;max-width:90px!important}.h-95,.height-95{height:95px!important;min-height:95px!important;max-height:95px!important}.w-95,.width-95{width:95px!important;min-width:95px!important;max-width:95px!important}.h-100,.height-100{height:100px!important;min-height:100px!important;max-height:100px!important}.w-100,.width-100{width:100px!important;min-width:100px!important;max-width:100px!important}.h-105,.height-105{height:105px!important;min-height:105px!important;max-height:105px!important}.w-105,.width-105{width:105px!important;min-width:105px!important;max-width:105px!important}.h-110,.height-110{height:110px!important;min-height:110px!important;max-height:110px!important}.w-110,.width-110{width:110px!important;min-width:110px!important;max-width:110px!important}.h-115,.height-115{height:115px!important;min-height:115px!important;max-height:115px!important}.w-115,.width-115{width:115px!important;min-width:115px!important;max-width:115px!important}.h-120,.height-120{height:120px!important;min-height:120px!important;max-height:120px!important}.w-120,.width-120{width:120px!important;min-width:120px!important;max-width:120px!important}.h-125,.height-125{height:125px!important;min-height:125px!important;max-height:125px!important}.w-125,.width-125{width:125px!important;min-width:125px!important;max-width:125px!important}.h-130,.height-130{height:130px!important;min-height:130px!important;max-height:130px!important}.w-130,.width-130{width:130px!important;min-width:130px!important;max-width:130px!important}.h-135,.height-135{height:135px!important;min-height:135px!important;max-height:135px!important}.w-135,.width-135{width:135px!important;min-width:135px!important;max-width:135px!important}.h-140,.height-140{height:140px!important;min-height:140px!important;max-height:140px!important}.w-140,.width-140{width:140px!important;min-width:140px!important;max-width:140px!important}.h-145,.height-145{height:145px!important;min-height:145px!important;max-height:145px!important}.w-145,.width-145{width:145px!important;min-width:145px!important;max-width:145px!important}.h-150,.height-150{height:150px!important;min-height:150px!important;max-height:150px!important}.w-150,.width-150{width:150px!important;min-width:150px!important;max-width:150px!important}.h-155,.height-155{height:155px!important;min-height:155px!important;max-height:155px!important}.w-155,.width-155{width:155px!important;min-width:155px!important;max-width:155px!important}.h-160,.height-160{height:160px!important;min-height:160px!important;max-height:160px!important}.w-160,.width-160{width:160px!important;min-width:160px!important;max-width:160px!important}.h-165,.height-165{height:165px!important;min-height:165px!important;max-height:165px!important}.w-165,.width-165{width:165px!important;min-width:165px!important;max-width:165px!important}.h-170,.height-170{height:170px!important;min-height:170px!important;max-height:170px!important}.w-170,.width-170{width:170px!important;min-width:170px!important;max-width:170px!important}.h-175,.height-175{height:175px!important;min-height:175px!important;max-height:175px!important}.w-175,.width-175{width:175px!important;min-width:175px!important;max-width:175px!important}.h-180,.height-180{height:180px!important;min-height:180px!important;max-height:180px!important}.w-180,.width-180{width:180px!important;min-width:180px!important;max-width:180px!important}.h-185,.height-185{height:185px!important;min-height:185px!important;max-height:185px!important}.w-185,.width-185{width:185px!important;min-width:185px!important;max-width:185px!important}.h-190,.height-190{height:190px!important;min-height:190px!important;max-height:190px!important}.w-190,.width-190{width:190px!important;min-width:190px!important;max-width:190px!important}.h-195,.height-195{height:195px!important;min-height:195px!important;max-height:195px!important}.w-195,.width-195{width:195px!important;min-width:195px!important;max-width:195px!important}.h-200,.height-200{height:200px!important;min-height:200px!important;max-height:200px!important}.w-200,.width-200{width:200px!important;min-width:200px!important;max-width:200px!important}.h-205,.height-205{height:205px!important;min-height:205px!important;max-height:205px!important}.w-205,.width-205{width:205px!important;min-width:205px!important;max-width:205px!important}.h-210,.height-210{height:210px!important;min-height:210px!important;max-height:210px!important}.w-210,.width-210{width:210px!important;min-width:210px!important;max-width:210px!important}.h-215,.height-215{height:215px!important;min-height:215px!important;max-height:215px!important}.w-215,.width-215{width:215px!important;min-width:215px!important;max-width:215px!important}.h-220,.height-220{height:220px!important;min-height:220px!important;max-height:220px!important}.w-220,.width-220{width:220px!important;min-width:220px!important;max-width:220px!important}.h-225,.height-225{height:225px!important;min-height:225px!important;max-height:225px!important}.w-225,.width-225{width:225px!important;min-width:225px!important;max-width:225px!important}.h-230,.height-230{height:230px!important;min-height:230px!important;max-height:230px!important}.w-230,.width-230{width:230px!important;min-width:230px!important;max-width:230px!important}.h-235,.height-235{height:235px!important;min-height:235px!important;max-height:235px!important}.w-235,.width-235{width:235px!important;min-width:235px!important;max-width:235px!important}.h-240,.height-240{height:240px!important;min-height:240px!important;max-height:240px!important}.w-240,.width-240{width:240px!important;min-width:240px!important;max-width:240px!important}.h-245,.height-245{height:245px!important;min-height:245px!important;max-height:245px!important}.w-245,.width-245{width:245px!important;min-width:245px!important;max-width:245px!important}.h-250,.height-250{height:250px!important;min-height:250px!important;max-height:250px!important}.w-250,.width-250{width:250px!important;min-width:250px!important;max-width:250px!important}.h-255,.height-255{height:255px!important;min-height:255px!important;max-height:255px!important}.w-255,.width-255{width:255px!important;min-width:255px!important;max-width:255px!important}.h-260,.height-260{height:260px!important;min-height:260px!important;max-height:260px!important}.w-260,.width-260{width:260px!important;min-width:260px!important;max-width:260px!important}.h-265,.height-265{height:265px!important;min-height:265px!important;max-height:265px!important}.w-265,.width-265{width:265px!important;min-width:265px!important;max-width:265px!important}.h-270,.height-270{height:270px!important;min-height:270px!important;max-height:270px!important}.w-270,.width-270{width:270px!important;min-width:270px!important;max-width:270px!important}.h-275,.height-275{height:275px!important;min-height:275px!important;max-height:275px!important}.w-275,.width-275{width:275px!important;min-width:275px!important;max-width:275px!important}.h-280,.height-280{height:280px!important;min-height:280px!important;max-height:280px!important}.w-280,.width-280{width:280px!important;min-width:280px!important;max-width:280px!important}.h-285,.height-285{height:285px!important;min-height:285px!important;max-height:285px!important}.w-285,.width-285{width:285px!important;min-width:285px!important;max-width:285px!important}.h-290,.height-290{height:290px!important;min-height:290px!important;max-height:290px!important}.w-290,.width-290{width:290px!important;min-width:290px!important;max-width:290px!important}.h-295,.height-295{height:295px!important;min-height:295px!important;max-height:295px!important}.w-295,.width-295{width:295px!important;min-width:295px!important;max-width:295px!important}.h-300,.height-300{height:300px!important;min-height:300px!important;max-height:300px!important}.w-300,.width-300{width:300px!important;min-width:300px!important;max-width:300px!important}.h-305,.height-305{height:305px!important;min-height:305px!important;max-height:305px!important}.w-305,.width-305{width:305px!important;min-width:305px!important;max-width:305px!important}.h-310,.height-310{height:310px!important;min-height:310px!important;max-height:310px!important}.w-310,.width-310{width:310px!important;min-width:310px!important;max-width:310px!important}.h-315,.height-315{height:315px!important;min-height:315px!important;max-height:315px!important}.w-315,.width-315{width:315px!important;min-width:315px!important;max-width:315px!important}.h-320,.height-320{height:320px!important;min-height:320px!important;max-height:320px!important}.w-320,.width-320{width:320px!important;min-width:320px!important;max-width:320px!important}.h-325,.height-325{height:325px!important;min-height:325px!important;max-height:325px!important}.w-325,.width-325{width:325px!important;min-width:325px!important;max-width:325px!important}.h-330,.height-330{height:330px!important;min-height:330px!important;max-height:330px!important}.w-330,.width-330{width:330px!important;min-width:330px!important;max-width:330px!important}.h-335,.height-335{height:335px!important;min-height:335px!important;max-height:335px!important}.w-335,.width-335{width:335px!important;min-width:335px!important;max-width:335px!important}.h-340,.height-340{height:340px!important;min-height:340px!important;max-height:340px!important}.w-340,.width-340{width:340px!important;min-width:340px!important;max-width:340px!important}.h-345,.height-345{height:345px!important;min-height:345px!important;max-height:345px!important}.w-345,.width-345{width:345px!important;min-width:345px!important;max-width:345px!important}.h-350,.height-350{height:350px!important;min-height:350px!important;max-height:350px!important}.w-350,.width-350{width:350px!important;min-width:350px!important;max-width:350px!important}.h-355,.height-355{height:355px!important;min-height:355px!important;max-height:355px!important}.w-355,.width-355{width:355px!important;min-width:355px!important;max-width:355px!important}.h-360,.height-360{height:360px!important;min-height:360px!important;max-height:360px!important}.w-360,.width-360{width:360px!important;min-width:360px!important;max-width:360px!important}.h-365,.height-365{height:365px!important;min-height:365px!important;max-height:365px!important}.w-365,.width-365{width:365px!important;min-width:365px!important;max-width:365px!important}.h-370,.height-370{height:370px!important;min-height:370px!important;max-height:370px!important}.w-370,.width-370{width:370px!important;min-width:370px!important;max-width:370px!important}.h-375,.height-375{height:375px!important;min-height:375px!important;max-height:375px!important}.w-375,.width-375{width:375px!important;min-width:375px!important;max-width:375px!important}.h-380,.height-380{height:380px!important;min-height:380px!important;max-height:380px!important}.w-380,.width-380{width:380px!important;min-width:380px!important;max-width:380px!important}.h-385,.height-385{height:385px!important;min-height:385px!important;max-height:385px!important}.w-385,.width-385{width:385px!important;min-width:385px!important;max-width:385px!important}.h-390,.height-390{height:390px!important;min-height:390px!important;max-height:390px!important}.w-390,.width-390{width:390px!important;min-width:390px!important;max-width:390px!important}.h-395,.height-395{height:395px!important;min-height:395px!important;max-height:395px!important}.w-395,.width-395{width:395px!important;min-width:395px!important;max-width:395px!important}.h-400,.height-400{height:400px!important;min-height:400px!important;max-height:400px!important}.w-400,.width-400{width:400px!important;min-width:400px!important;max-width:400px!important}.h-405,.height-405{height:405px!important;min-height:405px!important;max-height:405px!important}.w-405,.width-405{width:405px!important;min-width:405px!important;max-width:405px!important}.h-410,.height-410{height:410px!important;min-height:410px!important;max-height:410px!important}.w-410,.width-410{width:410px!important;min-width:410px!important;max-width:410px!important}.h-415,.height-415{height:415px!important;min-height:415px!important;max-height:415px!important}.w-415,.width-415{width:415px!important;min-width:415px!important;max-width:415px!important}.h-420,.height-420{height:420px!important;min-height:420px!important;max-height:420px!important}.w-420,.width-420{width:420px!important;min-width:420px!important;max-width:420px!important}.h-425,.height-425{height:425px!important;min-height:425px!important;max-height:425px!important}.w-425,.width-425{width:425px!important;min-width:425px!important;max-width:425px!important}.h-430,.height-430{height:430px!important;min-height:430px!important;max-height:430px!important}.w-430,.width-430{width:430px!important;min-width:430px!important;max-width:430px!important}.h-435,.height-435{height:435px!important;min-height:435px!important;max-height:435px!important}.w-435,.width-435{width:435px!important;min-width:435px!important;max-width:435px!important}.h-440,.height-440{height:440px!important;min-height:440px!important;max-height:440px!important}.w-440,.width-440{width:440px!important;min-width:440px!important;max-width:440px!important}.h-445,.height-445{height:445px!important;min-height:445px!important;max-height:445px!important}.w-445,.width-445{width:445px!important;min-width:445px!important;max-width:445px!important}.h-450,.height-450{height:450px!important;min-height:450px!important;max-height:450px!important}.w-450,.width-450{width:450px!important;min-width:450px!important;max-width:450px!important}.h-455,.height-455{height:455px!important;min-height:455px!important;max-height:455px!important}.w-455,.width-455{width:455px!important;min-width:455px!important;max-width:455px!important}.h-460,.height-460{height:460px!important;min-height:460px!important;max-height:460px!important}.w-460,.width-460{width:460px!important;min-width:460px!important;max-width:460px!important}.h-465,.height-465{height:465px!important;min-height:465px!important;max-height:465px!important}.w-465,.width-465{width:465px!important;min-width:465px!important;max-width:465px!important}.h-470,.height-470{height:470px!important;min-height:470px!important;max-height:470px!important}.w-470,.width-470{width:470px!important;min-width:470px!important;max-width:470px!important}.h-475,.height-475{height:475px!important;min-height:475px!important;max-height:475px!important}.w-475,.width-475{width:475px!important;min-width:475px!important;max-width:475px!important}.h-480,.height-480{height:480px!important;min-height:480px!important;max-height:480px!important}.w-480,.width-480{width:480px!important;min-width:480px!important;max-width:480px!important}.h-485,.height-485{height:485px!important;min-height:485px!important;max-height:485px!important}.w-485,.width-485{width:485px!important;min-width:485px!important;max-width:485px!important}.h-490,.height-490{height:490px!important;min-height:490px!important;max-height:490px!important}.w-490,.width-490{width:490px!important;min-width:490px!important;max-width:490px!important}.h-495,.height-495{height:495px!important;min-height:495px!important;max-height:495px!important}.w-495,.width-495{width:495px!important;min-width:495px!important;max-width:495px!important}.h-500,.height-500{height:500px!important;min-height:500px!important;max-height:500px!important}.w-500,.width-500{width:500px!important;min-width:500px!important;max-width:500px!important}.h-8,.height-8{height:8px!important;min-height:8px!important;max-height:8px!important}.w-8,.width-8{width:8px!important;min-width:8px!important;max-width:8px!important}.h-16,.height-16{height:16px!important;min-height:16px!important;max-height:16px!important}.w-16,.width-16{width:16px!important;min-width:16px!important;max-width:16px!important}.h-24,.height-24{height:24px!important;min-height:24px!important;max-height:24px!important}.w-24,.width-24{width:24px!important;min-width:24px!important;max-width:24px!important}.h-32,.height-32{height:32px!important;min-height:32px!important;max-height:32px!important}.w-32,.width-32{width:32px!important;min-width:32px!important;max-width:32px!important}.h-48,.height-48{height:48px!important;min-height:48px!important;max-height:48px!important}.w-48,.width-48{width:48px!important;min-width:48px!important;max-width:48px!important}.h-56,.height-56{height:56px!important;min-height:56px!important;max-height:56px!important}.w-56,.width-56{width:56px!important;min-width:56px!important;max-width:56px!important}.h-64,.height-64{height:64px!important;min-height:64px!important;max-height:64px!important}.w-64,.width-64{width:64px!important;min-width:64px!important;max-width:64px!important}.h-72,.height-72{height:72px!important;min-height:72px!important;max-height:72px!important}.w-72,.width-72{width:72px!important;min-width:72px!important;max-width:72px!important}.h-88,.height-88{height:88px!important;min-height:88px!important;max-height:88px!important}.w-88,.width-88{width:88px!important;min-width:88px!important;max-width:88px!important}.h-96,.height-96{height:96px!important;min-height:96px!important;max-height:96px!important}.w-96,.width-96{width:96px!important;min-width:96px!important;max-width:96px!important}.h-104,.height-104{height:104px!important;min-height:104px!important;max-height:104px!important}.w-104,.width-104{width:104px!important;min-width:104px!important;max-width:104px!important}.h-112,.height-112{height:112px!important;min-height:112px!important;max-height:112px!important}.w-112,.width-112{width:112px!important;min-width:112px!important;max-width:112px!important}.h-128,.height-128{height:128px!important;min-height:128px!important;max-height:128px!important}.w-128,.width-128{width:128px!important;min-width:128px!important;max-width:128px!important}.h-136,.height-136{height:136px!important;min-height:136px!important;max-height:136px!important}.w-136,.width-136{width:136px!important;min-width:136px!important;max-width:136px!important}.h-144,.height-144{height:144px!important;min-height:144px!important;max-height:144px!important}.w-144,.width-144{width:144px!important;min-width:144px!important;max-width:144px!important}.h-152,.height-152{height:152px!important;min-height:152px!important;max-height:152px!important}.w-152,.width-152{width:152px!important;min-width:152px!important;max-width:152px!important}.h-168,.height-168{height:168px!important;min-height:168px!important;max-height:168px!important}.w-168,.width-168{width:168px!important;min-width:168px!important;max-width:168px!important}.h-176,.height-176{height:176px!important;min-height:176px!important;max-height:176px!important}.w-176,.width-176{width:176px!important;min-width:176px!important;max-width:176px!important}.h-184,.height-184{height:184px!important;min-height:184px!important;max-height:184px!important}.w-184,.width-184{width:184px!important;min-width:184px!important;max-width:184px!important}.h-192,.height-192{height:192px!important;min-height:192px!important;max-height:192px!important}.w-192,.width-192{width:192px!important;min-width:192px!important;max-width:192px!important}.h-208,.height-208{height:208px!important;min-height:208px!important;max-height:208px!important}.w-208,.width-208{width:208px!important;min-width:208px!important;max-width:208px!important}.h-216,.height-216{height:216px!important;min-height:216px!important;max-height:216px!important}.w-216,.width-216{width:216px!important;min-width:216px!important;max-width:216px!important}.h-224,.height-224{height:224px!important;min-height:224px!important;max-height:224px!important}.w-224,.width-224{width:224px!important;min-width:224px!important;max-width:224px!important}.h-232,.height-232{height:232px!important;min-height:232px!important;max-height:232px!important}.w-232,.width-232{width:232px!important;min-width:232px!important;max-width:232px!important}.h-248,.height-248{height:248px!important;min-height:248px!important;max-height:248px!important}.w-248,.width-248{width:248px!important;min-width:248px!important;max-width:248px!important}.h-256,.height-256{height:256px!important;min-height:256px!important;max-height:256px!important}.w-256,.width-256{width:256px!important;min-width:256px!important;max-width:256px!important}.h-264,.height-264{height:264px!important;min-height:264px!important;max-height:264px!important}.w-264,.width-264{width:264px!important;min-width:264px!important;max-width:264px!important}.h-272,.height-272{height:272px!important;min-height:272px!important;max-height:272px!important}.w-272,.width-272{width:272px!important;min-width:272px!important;max-width:272px!important}.h-288,.height-288{height:288px!important;min-height:288px!important;max-height:288px!important}.w-288,.width-288{width:288px!important;min-width:288px!important;max-width:288px!important}.h-296,.height-296{height:296px!important;min-height:296px!important;max-height:296px!important}.w-296,.width-296{width:296px!important;min-width:296px!important;max-width:296px!important}.h-304,.height-304{height:304px!important;min-height:304px!important;max-height:304px!important}.w-304,.width-304{width:304px!important;min-width:304px!important;max-width:304px!important}.h-312,.height-312{height:312px!important;min-height:312px!important;max-height:312px!important}.w-312,.width-312{width:312px!important;min-width:312px!important;max-width:312px!important}.h-328,.height-328{height:328px!important;min-height:328px!important;max-height:328px!important}.w-328,.width-328{width:328px!important;min-width:328px!important;max-width:328px!important}.h-336,.height-336{height:336px!important;min-height:336px!important;max-height:336px!important}.w-336,.width-336{width:336px!important;min-width:336px!important;max-width:336px!important}.h-344,.height-344{height:344px!important;min-height:344px!important;max-height:344px!important}.w-344,.width-344{width:344px!important;min-width:344px!important;max-width:344px!important}.h-352,.height-352{height:352px!important;min-height:352px!important;max-height:352px!important}.w-352,.width-352{width:352px!important;min-width:352px!important;max-width:352px!important}.h-368,.height-368{height:368px!important;min-height:368px!important;max-height:368px!important}.w-368,.width-368{width:368px!important;min-width:368px!important;max-width:368px!important}.h-376,.height-376{height:376px!important;min-height:376px!important;max-height:376px!important}.w-376,.width-376{width:376px!important;min-width:376px!important;max-width:376px!important}.h-384,.height-384{height:384px!important;min-height:384px!important;max-height:384px!important}.w-384,.width-384{width:384px!important;min-width:384px!important;max-width:384px!important}.h-392,.height-392{height:392px!important;min-height:392px!important;max-height:392px!important}.w-392,.width-392{width:392px!important;min-width:392px!important;max-width:392px!important}.h-408,.height-408{height:408px!important;min-height:408px!important;max-height:408px!important}.w-408,.width-408{width:408px!important;min-width:408px!important;max-width:408px!important}.h-416,.height-416{height:416px!important;min-height:416px!important;max-height:416px!important}.w-416,.width-416{width:416px!important;min-width:416px!important;max-width:416px!important}.h-424,.height-424{height:424px!important;min-height:424px!important;max-height:424px!important}.w-424,.width-424{width:424px!important;min-width:424px!important;max-width:424px!important}.h-432,.height-432{height:432px!important;min-height:432px!important;max-height:432px!important}.w-432,.width-432{width:432px!important;min-width:432px!important;max-width:432px!important}.h-448,.height-448{height:448px!important;min-height:448px!important;max-height:448px!important}.w-448,.width-448{width:448px!important;min-width:448px!important;max-width:448px!important}.h-456,.height-456{height:456px!important;min-height:456px!important;max-height:456px!important}.w-456,.width-456{width:456px!important;min-width:456px!important;max-width:456px!important}.h-464,.height-464{height:464px!important;min-height:464px!important;max-height:464px!important}.w-464,.width-464{width:464px!important;min-width:464px!important;max-width:464px!important}.h-472,.height-472{height:472px!important;min-height:472px!important;max-height:472px!important}.w-472,.width-472{width:472px!important;min-width:472px!important;max-width:472px!important}.h-488,.height-488{height:488px!important;min-height:488px!important;max-height:488px!important}.w-488,.width-488{width:488px!important;min-width:488px!important;max-width:488px!important}.h-496,.height-496{height:496px!important;min-height:496px!important;max-height:496px!important}.w-496,.width-496{width:496px!important;min-width:496px!important;max-width:496px!important}.h-504,.height-504{height:504px!important;min-height:504px!important;max-height:504px!important}.w-504,.width-504{width:504px!important;min-width:504px!important;max-width:504px!important}.h-512,.height-512{height:512px!important;min-height:512px!important;max-height:512px!important}.w-512,.width-512{width:512px!important;min-width:512px!important;max-width:512px!important}.h-528,.height-528{height:528px!important;min-height:528px!important;max-height:528px!important}.w-528,.width-528{width:528px!important;min-width:528px!important;max-width:528px!important}.h-536,.height-536{height:536px!important;min-height:536px!important;max-height:536px!important}.w-536,.width-536{width:536px!important;min-width:536px!important;max-width:536px!important}.h-544,.height-544{height:544px!important;min-height:544px!important;max-height:544px!important}.w-544,.width-544{width:544px!important;min-width:544px!important;max-width:544px!important}.h-552,.height-552{height:552px!important;min-height:552px!important;max-height:552px!important}.w-552,.width-552{width:552px!important;min-width:552px!important;max-width:552px!important}.h-568,.height-568{height:568px!important;min-height:568px!important;max-height:568px!important}.w-568,.width-568{width:568px!important;min-width:568px!important;max-width:568px!important}.h-576,.height-576{height:576px!important;min-height:576px!important;max-height:576px!important}.w-576,.width-576{width:576px!important;min-width:576px!important;max-width:576px!important}.h-584,.height-584{height:584px!important;min-height:584px!important;max-height:584px!important}.w-584,.width-584{width:584px!important;min-width:584px!important;max-width:584px!important}.h-592,.height-592{height:592px!important;min-height:592px!important;max-height:592px!important}.w-592,.width-592{width:592px!important;min-width:592px!important;max-width:592px!important}.h-608,.height-608{height:608px!important;min-height:608px!important;max-height:608px!important}.w-608,.width-608{width:608px!important;min-width:608px!important;max-width:608px!important}.h-616,.height-616{height:616px!important;min-height:616px!important;max-height:616px!important}.w-616,.width-616{width:616px!important;min-width:616px!important;max-width:616px!important}.h-624,.height-624{height:624px!important;min-height:624px!important;max-height:624px!important}.w-624,.width-624{width:624px!important;min-width:624px!important;max-width:624px!important}.h-632,.height-632{height:632px!important;min-height:632px!important;max-height:632px!important}.w-632,.width-632{width:632px!important;min-width:632px!important;max-width:632px!important}.h-648,.height-648{height:648px!important;min-height:648px!important;max-height:648px!important}.w-648,.width-648{width:648px!important;min-width:648px!important;max-width:648px!important}.h-656,.height-656{height:656px!important;min-height:656px!important;max-height:656px!important}.w-656,.width-656{width:656px!important;min-width:656px!important;max-width:656px!important}.h-664,.height-664{height:664px!important;min-height:664px!important;max-height:664px!important}.w-664,.width-664{width:664px!important;min-width:664px!important;max-width:664px!important}.h-672,.height-672{height:672px!important;min-height:672px!important;max-height:672px!important}.w-672,.width-672{width:672px!important;min-width:672px!important;max-width:672px!important}.h-688,.height-688{height:688px!important;min-height:688px!important;max-height:688px!important}.w-688,.width-688{width:688px!important;min-width:688px!important;max-width:688px!important}.h-696,.height-696{height:696px!important;min-height:696px!important;max-height:696px!important}.w-696,.width-696{width:696px!important;min-width:696px!important;max-width:696px!important}.h-704,.height-704{height:704px!important;min-height:704px!important;max-height:704px!important}.w-704,.width-704{width:704px!important;min-width:704px!important;max-width:704px!important}.h-712,.height-712{height:712px!important;min-height:712px!important;max-height:712px!important}.w-712,.width-712{width:712px!important;min-width:712px!important;max-width:712px!important}.h-728,.height-728{height:728px!important;min-height:728px!important;max-height:728px!important}.w-728,.width-728{width:728px!important;min-width:728px!important;max-width:728px!important}.h-736,.height-736{height:736px!important;min-height:736px!important;max-height:736px!important}.w-736,.width-736{width:736px!important;min-width:736px!important;max-width:736px!important}.h-744,.height-744{height:744px!important;min-height:744px!important;max-height:744px!important}.w-744,.width-744{width:744px!important;min-width:744px!important;max-width:744px!important}.h-752,.height-752{height:752px!important;min-height:752px!important;max-height:752px!important}.w-752,.width-752{width:752px!important;min-width:752px!important;max-width:752px!important}.h-768,.height-768{height:768px!important;min-height:768px!important;max-height:768px!important}.w-768,.width-768{width:768px!important;min-width:768px!important;max-width:768px!important}.h-776,.height-776{height:776px!important;min-height:776px!important;max-height:776px!important}.w-776,.width-776{width:776px!important;min-width:776px!important;max-width:776px!important}.h-784,.height-784{height:784px!important;min-height:784px!important;max-height:784px!important}.w-784,.width-784{width:784px!important;min-width:784px!important;max-width:784px!important}.h-792,.height-792{height:792px!important;min-height:792px!important;max-height:792px!important}.w-792,.width-792{width:792px!important;min-width:792px!important;max-width:792px!important}.b,.border{border:1px solid rgba(0,0,0,.12)}.border-top,.bt{border-top:1px solid rgba(0,0,0,.12)}.border-right,.br{border-right:1px solid rgba(0,0,0,.12)}.bb,.border-bottom{border-bottom:1px solid rgba(0,0,0,.12)}.bl,.border-left{border-left:1px solid rgba(0,0,0,.12)}.bh,.border-horizontal{border-left:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}.border-vertical,.bv{border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid rgba(0,0,0,.12)}.brad-1{border-radius:1px}.brad-2{border-radius:2px}.brad-3{border-radius:3px}.brad-4{border-radius:4px}.brad-5{border-radius:5px}.brad-6{border-radius:6px}.brad-7{border-radius:7px}.brad-8{border-radius:8px}.brad-9{border-radius:9px}.brad-10{border-radius:10px}.brad-11{border-radius:11px}.brad-12{border-radius:12px}@media all{.page-break{display:none}}@media print{.page-break{display:block;break-after:always;page-break-after:always}#main #vertical-navigation{display:none}#main #toolbar{display:none}#main #quick-panel{display:none}#main #content{position:relative!important;top:0!important;right:0!important;bottom:0!important;left:0!important;background:0 0!important}ms-theme-options{display:none}.ps-scrollbar-x-rail,.ps-scrollbar-y-rail{display:none!important}.printable{overflow:visible!important}.printable .template-layout{display:inline!important}}.advanced-search-container{border-bottom:1px rgba(0,0,0,.12) solid}.advanced-search-conditions{border-bottom:1px rgba(0,0,0,.12) solid;padding:4px 0}.advanced-search-conditions .errors{font-size:12px;color:#dd2c00;margin-top:10px}.advanced-search-conditions .advanced-search-chips md-chips-wrap{box-shadow:none}.advanced-search-conditions .advanced-search-chips md-chip{position:relative}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-content md-chip-template span p.filter-text{display:inline-block;margin:0}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container{position:absolute;right:4px;top:4px;margin-right:0;height:24px}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter{position:relative;height:24px;width:24px;line-height:30px;text-align:center;border-radius:50%;border:none;box-shadow:none;padding:0;margin:0;transition:background .15s linear;display:block}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0);color:#616161}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:focus,.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:hover{color:rgba(255,0,0,.8)}.advanced-search-conditions .advanced-search-chips md-chips-wrap.md-removable md-chip md-chip-template{padding-right:5px}.advanced-search-bar{padding:10px 0}.advanced-search-bar md-input-container.no-errors{font-size:12px;transition:0s none;-webkit-transition:0s none;animation:0s none;-webkit-animation:0s none}.advanced-search-bar md-input-container.no-errors input{font-family:Arial Unicode MS,Arial,Helvetica}.advanced-search-bar md-input-container.no-errors .md-errors-spacer{min-height:0}md-option div div.operators-list{display:table}md-option div div.operators-list span{display:table-cell}md-option div div.operators-list span.operator-symbol{display:table-cell;font-size:14px;width:30px}.advanced-search-bar mdp-date-picker button{margin:0!important}.advanced-search-bar mdp-date-picker md-input-container{flex:1;margin:0}.advanced-search-bar mdp-date-picker md-input-container label{font-size:12px}.advanced-search-bar mdp-date-picker md-input-container .md-errors-spacer{min-height:0}.advanced-search-bar div md-date-range{font-size:12px;margin-left:10px}.advanced-search-bar div.autocomplete-input md-icon{margin:8px 8px 8px 0}.advanced-search-bar div.autocomplete-input md-autocomplete{font-size:12px!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap{height:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container{margin:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container input[type=search]{padding:0!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container div.md-errors-spacer{min-height:0}md-toolbar.advanced-search-dialog-header{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}.md-autocomplete-suggestions-container li .highlight,.md-autocomplete-suggestions-container.md-default-theme li .highlight{color:#ca1d1d;font-weight:700}.chip-disabled{opacity:.4}.ms-card{display:flex;flex-direction:row;padding:8px}.ms-card .ms-card-content-wrapper{position:relative;overflow:hidden;width:100%;max-width:400px;border-radius:2px;background:#fff;box-shadow:0 3px 1px -2px rgba(0,0,0,.14),0 2px 2px 0 rgba(0,0,0,.098),0 1px 5px 0 rgba(0,0,0,.084)}.ms-card .template-1 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-10 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-2 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-2 .media .image{width:100%}.ms-card .template-4 .info{position:absolute;right:0;bottom:0;left:0;z-index:2;background:rgba(0,0,0,.54)}.ms-card .template-4 .media{z-index:1}.ms-card .template-4 .media .image{width:100%}.ms-card .template-5 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-5 .info,.ms-card .template-5 .media{-ms-flex:0 1 auto}.ms-card .template-8 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-9 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-9 .media .image{width:100%}md-list-item .md-list-item-text p.ms-dual-multiselect-line-xs{font-size:10px!important;padding-top:5px}md-list-item md-icon.hidden{visibility:hidden}md-icon.add-disabled{cursor:default!important;opacity:.4}md-list-item.read-only-mode{cursor:none!important}.ms-form-wizard{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item{opacity:1!important;padding:24px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:before{content:'';display:block;position:absolute;top:50%;left:0;right:50%;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:after{content:'';display:block;position:absolute;top:50%;left:50%;right:0;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:first-of-type:before{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:last-of-type:after{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item.md-disabled .ms-form-wizard-step-label .ms-form-wizard-step-number{background:rgba(0,0,0,.12)!important}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item .md-ripple-container{z-index:11}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-ink-bar{display:none!important}.ms-form-wizard .ms-form-wizard-step-label{display:inline-block;position:relative;background:#fff;z-index:10;padding:0 16px;line-height:24px}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number{display:inline-block;vertical-align:middle;width:24px;height:24px;line-height:24px;font-size:14px;margin-right:12px;border-radius:50%;color:#fff!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number i{line-height:24px!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-text{display:inline-block;vertical-align:middle;position:relative;line-height:24px}.ms-form-wizard .ms-form-wizard-form{padding:24px 16px}.ms-form-wizard .navigation{padding:16px}.ms-form-wizard .navigation .steps{display:flex;align-items:center;justify-content:center;padding:0 16px}.ms-form-wizard .navigation .steps span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-form-wizard .navigation .steps span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-form-wizard .navigation .steps span.selected{width:8px;height:8px}ms-info-bar{display:block;position:relative;width:100%;height:44px;background-color:#e91e63;z-index:99998;box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}ms-info-bar #ms-info-bar-message{padding:8px 16px;line-height:28px;font-size:14px}ms-info-bar #ms-info-bar-message a{overflow:hidden;height:48px;color:#fff}ms-masonry{width:100%;display:block}ms-masonry [ms-masonry-item],ms-masonry ms-masonry-item{transition:transform .3s ease;position:absolute;transform:translate3d(50vw,100vh,0)}ms-material-color-picker md-menu .md-button{font-size:12px}md-menu-content.ms-material-color-picker-menu-content{width:208px;max-width:208px;min-width:208px;padding:0;overflow:hidden}md-menu-content.ms-material-color-picker-menu-content header{height:48px;text-transform:uppercase}md-menu-content.ms-material-color-picker-menu-content header .md-button{display:flex;margin:0}md-menu-content.ms-material-color-picker-menu-content header>span{line-height:13px}md-menu-content.ms-material-color-picker-menu-content .colors{position:relative;width:208px;min-height:258px;height:258px;padding:4px}md-menu-content.ms-material-color-picker-menu-content .colors .color{position:relative;width:46px;height:46px;margin:2px;border-radius:0;cursor:pointer}md-menu-content.ms-material-color-picker-menu-content .colors .color .label{padding:2px;font-size:10px}md-menu-content.ms-material-color-picker-menu-content .colors .color .icon-check{position:absolute;top:2px;right:2px;font-size:16px;opacity:.7}ms-nav{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none;z-index:70}ms-nav ms-nav-item{display:block;position:relative;line-height:48px}ms-nav ms-nav-item.ms-nav-title{line-height:32px;font-size:12px;font-weight:500;margin-top:8px;padding:0 24px;width:100%;color:rgba(255,255,255,.3);text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}ms-nav ms-nav-item .ms-nav-button{display:flex;align-self:flex-start;align-items:center;position:relative;cursor:pointer;padding:0 48px 0 24px;color:rgba(255,255,255,.7);text-decoration:none}ms-nav ms-nav-item .ms-nav-button:not(.active):hover{background:rgba(0,0,0,.1);text-decoration:none}ms-nav ms-nav-item .ms-nav-button .ms-nav-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .arrow{position:absolute;top:16px;right:24px;margin:0;transition:transform .3s ease-in-out,opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .ms-nav-badge{position:absolute;top:50%;right:24px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button.active{color:#fff!important}ms-nav ms-nav-item .ms-nav-button.active .ms-nav-badge{background:#fff!important;color:rgba(0,0,0,.87)!important}ms-nav ms-nav-item .ms-nav-button.active i{color:#fff}ms-nav ms-nav-item i{color:rgba(255,255,255,.7);margin:0 16px 0 0}ms-nav .ms-nav-toggle ms-nav-toggle-items{display:none;overflow:hidden}ms-nav .ms-nav-toggle ms-nav-toggle-items.expand-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items.collapse-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:58px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:68px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:78px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:88px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:98px}ms-nav .ms-nav-toggle.active>.ms-nav-button{color:#fff}ms-nav .ms-nav-toggle.active>.ms-nav-button a,ms-nav .ms-nav-toggle.active>.ms-nav-button md-icon{color:#fff}ms-nav .ms-nav-toggle[collapsed=false]>.ms-nav-button>.arrow{transform:rotate(90deg)}ms-nav>.ms-nav-toggle[collapsed=false]{background-color:rgba(0,0,0,.12)}@media only screen and (min-width:1280px){.ms-nav-folded #ms-nav-fold-close-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:0 0;z-index:998}.ms-nav-folded #ms-nav-fold-open-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title{height:32px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title:before{content:'';display:block;position:relative;top:12px;width:16px;border-top:1px solid rgba(255,255,255,.12)}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title span{display:none}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button{height:48px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.arrow,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-badge,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-label{opacity:0;visibility:hidden}}.ms-navigation{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none}.ms-navigation li,.ms-navigation ul{padding:0;margin:0}.ms-navigation ul{display:block;overflow:hidden}.ms-navigation ul li{position:relative}.ms-navigation ul li.collapsed ul{display:none}.ms-navigation .animate-height{transition:height .25s cubic-bezier(.25,.46,.45,.94)}.ms-navigation .ms-navigation-node .ms-navigation-item{display:block;position:relative;cursor:pointer;color:rgba(255,255,255,.7)}.ms-navigation .ms-navigation-node .ms-navigation-item:hover{background:rgba(0,0,0,.1)}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button{display:flex;position:relative;width:100%;height:48px;line-height:48px;flex-direction:row;justify-content:flex-start;align-items:center;padding-right:16px;color:rgba(255,255,255,.7);text-decoration:none;white-space:nowrap;overflow:hidden}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{color:rgba(255,255,255,.7);margin:0 16px 0 0}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button span{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button a{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .arrow{margin:0;opacity:1;transition:transform .3s ease-in-out,opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .badge{position:absolute;top:50%;right:16px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .icon{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}.ms-navigation .ms-navigation-node:not(.collapsed)>.ms-navigation-item>.ms-navigation-button .arrow{transform:rotate(90deg)}.ms-navigation .ms-navigation-node.group>.ms-navigation-item{font-size:12px;font-weight:500;margin-top:8px;cursor:auto;background:0 0!important;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ms-navigation .ms-navigation-node.group>.ms-navigation-item>.ms-navigation-button{height:32px;line-height:32px;color:rgba(255,255,255,.3)}.ms-navigation .ms-navigation-node:not(.group).has-children:not(.collapsed){background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children.collapsing{background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children .has-children:not(.collapsed){background:0 0}.ms-navigation li .ms-navigation-button{padding-left:24px}.ms-navigation li li .ms-navigation-button{padding-left:56px}.ms-navigation li li li .ms-navigation-button{padding-left:72px}.ms-navigation li li li li .ms-navigation-button{padding-left:88px}.ms-navigation li li li li li .ms-navigation-button{padding-left:104px}.ms-navigation li.group .ms-navigation-button{padding-left:24px}.ms-navigation li.group li .ms-navigation-button{padding-left:24px}.ms-navigation li.group li li .ms-navigation-button{padding-left:56px}.ms-navigation li.group li li li .ms-navigation-button{padding-left:72px}.ms-navigation li.group li li li li .ms-navigation-button{padding-left:88px}#horizontal-navigation{height:64px;min-height:64px;max-height:64px;background:#fff;z-index:54}#horizontal-navigation .ms-navigation-horizontal{display:flex;position:relative;user-select:none}#horizontal-navigation .ms-navigation-horizontal li,#horizontal-navigation .ms-navigation-horizontal ul{padding:0;margin:0;list-style:none}#horizontal-navigation .ms-navigation-horizontal .horizontal{display:flex;flex:1}#horizontal-navigation .ms-navigation-horizontal .horizontal li{position:relative;cursor:pointer}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:block;float:left;padding:12px 14px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button.active{background:0 0;border-bottom:2px solid}#horizontal-navigation .ms-navigation-horizontal .horizontal>li:last-child{margin-right:0}#horizontal-navigation .ms-navigation-horizontal .horizontal>li li .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active{color:#fff!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{display:none;position:absolute;background:#fff;z-index:999;min-width:200px;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);top:0;left:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal>.has-children>ul{top:100%;left:0}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button{display:flex;align-items:center;width:100%;color:rgba(0,0,0,.87);white-space:nowrap;padding:14px 16px;text-decoration:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .icon{color:rgba(0,0,0,.54);margin-right:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .arrow{margin-left:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .icon{color:#fff}@media only screen and (min-width:960px){body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .animate-height{transition:none}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .icon{margin:0}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .arrow,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .badge,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .title{opacity:0;visibility:hidden}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node.group>.ms-navigation-item .ms-navigation-button:before{content:'';display:block;position:relative;width:16px;border-top:1px solid rgba(255,255,255,.12)}body.ms-navigation-folded:not(.ms-navigation-folded-open) #ms-navigation-fold-expander{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}body.ms-navigation-folded #ms-navigation-fold-collapser{position:absolute;top:0;right:0;bottom:0;left:0;z-index:59}}@media only screen and (max-width:960px){body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle{height:64px;margin-right:16px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle .md-button{margin:0;width:64px;height:64px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .ms-navigation-horizontal{display:block!important;background:#fff}#horizontal-navigation{z-index:60}#horizontal-navigation .ms-navigation-horizontal{position:absolute;display:none;top:0;right:0;bottom:0;left:0;padding:0 0 16px 0;z-index:9998;overflow-x:hidden;overflow-y:scroll}#horizontal-navigation .ms-navigation-horizontal .horizontal{flex-direction:column;min-height:100%;width:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:0 0}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item{margin:4px}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item:hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li{padding:0 12px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:flex;float:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{position:relative;top:0;left:0;box-shadow:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded>.ms-navigation-horizontal-button .arrow{transform:rotate(90deg)}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded+ul{display:block;margin-left:16px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item{min-height:48px;height:48px}}md-dialog.md-phonebar-dialog{max-width:720px;width:720px}md-dialog.md-phonebar-dialog md-dialog-content{display:block;position:relative;height:500px}md-dialog.md-phonebar-dialog md-toolbar .title{font-size:17px}md-dialog.md-phonebar-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.md-phonebar-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.md-phonebar-dialog md-tabs{position:static}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}.ms-phonebar{height:64px;font-size:13px}.ms-phonebar .phonebar-container{height:64px;padding:0}.ms-phonebar .phonebar-container .quantity-indicator{display:inline-block;vertical-align:middle;width:8px;height:8px;border-radius:4px;margin-right:5px;margin-left:5px}.ms-phonebar .phonebar-container .sessions{overflow-x:auto}.ms-phonebar .phonebar-container .session{border-radius:3px;border:1px solid #dcdcdc;margin-left:3px;cursor:pointer}.ms-phonebar .phonebar-container .session-info{padding-left:3px;padding-right:3px;color:grey}.ms-phonebar .phonebar-container .session-button{border:1px solid grey;margin:3px}.ms-phonebar .phonebar-container .button-bar{border:1px solid grey}.ms-phonebar .phonebar-container .num-pad{position:fixed;border-radius:3px;border:1px solid #9e9e9e;top:80px;left:80px}.ms-phonebar .phonebar-container .num-pad-logo{height:40px;width:42px}.ms-phonebar .phonebar-container p{margin:0;padding:0 0 10px 0;line-height:10px;font-size:10px}.ms-phonebar .phonebar-container .span4{width:50px;float:left;margin:8px}.ms-phonebar .phonebar-container .num{border:1px solid #9e9e9e;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;height:50px;background-color:#fff;color:#333;cursor:pointer}.ms-phonebar .phonebar-container .num:hover{background-color:#9e9e9e;color:#fff;transition-property:background-color .2s linear 0s;-moz-transition:background-color .2s linear 0s;-webkit-transition:background-color .2s linear 0s;-o-transition:background-color .2s linear 0s}.ms-phonebar .phonebar-container .txt{font-size:20px;text-align:center;margin-top:3px;font-family:Lato,sans-serif;color:#333}.ms-phonebar .phonebar-container .small{font-size:15px}.ms-phonebar .phonebar-container .angucomplete-dropdown{top:45px;overflow-y:auto;max-height:200px}.ms-phonebar .phonebar-container .highlight{color:red}.ms-phonebar .phonebar-container .input-number{margin-left:5px;padding:8px;border:1px solid #ccc;border-radius:3px;box-sizing:border-box}.ms-phonebar .phonebar-container .phonebar{position:relative}.ms-phonebar .phonebar-container .phonebar>div{height:64px;min-width:44px}.ms-phonebar .phonebar-container .phonebar>div.dragging{cursor:grabbing}.ms-phonebar .phonebar-container .phonebar>div.dragging .md-ripple-container{display:none}.ms-phonebar .phonebar-container .phonebar>div.ghost .shortcut{opacity:.27}.ms-phonebar .phonebar-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-phonebar .phonebar-container.mobile-bar-active .phonebar,.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-phonebar .phonebar-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}.quick-filter-container md-select .md-select-value.md-select-placeholder{color:inherit}.quick-filter-container md-select[multiple] md-select-value>:first-child{max-width:250px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.ms-responsive-table-wrapper{overflow-x:auto;overflow-y:hidden}.ms-scroll{overflow:hidden!important}.ms-search-bar{height:64px;font-size:13px}.ms-search-bar .ms-search-bar-collapser,.ms-search-bar .ms-search-bar-expander{cursor:pointer;padding:0 20px;margin:0;width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-bar-loader{width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-button-expanded{pointer-events:none}.ms-search-bar .ms-search-bar-collapser{display:none}.ms-search-bar input{background-color:transparent;font-size:16px}.ms-search-bar .ms-search-bar-results{position:absolute;top:64px;left:0;right:0;overflow-x:hidden;overflow-y:scroll;background:#fff;max-height:300px;box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.ms-search-bar .ms-search-bar-results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}.ms-search-bar .ms-search-bar-results .result{position:relative;height:56px;min-height:56px;max-height:56px;padding:16px;cursor:pointer}.ms-search-bar .ms-search-bar-results .result.selected{background:rgba(0,0,0,.07)}.ms-search-bar .ms-search-bar-results .result .icon-container{min-width:32px;margin-right:8px}.ms-search-bar .ms-search-bar-results .result .icon-container .square{width:6px;height:6px}.ms-search-bar .ms-search-bar-results .result .title{font-size:16px}.ms-search-bar .ms-search-bar-results .result .description{padding-top:6px;font-size:14px}.ms-search-bar.expanded{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:10}.ms-search-bar.expanded #ms-search-bar-input{display:block}.ms-search-bar.expanded .ms-search-bar-collapser{display:block}.ms-search-bar.down{top:64px;border-bottom:1px rgba(0,0,0,.12) solid}.ms-search-bar[disabled] input{pointer-events:none}body.ms-search-bar-expanded #toolbar{z-index:999!important}@media screen and (max-width:960px){.ms-search-bar-label{padding:0 8px 0 12px}}.ms-shortcuts{height:64px;font-size:13px}.ms-shortcuts .shortcuts-container{height:64px;padding:0 8px;max-width:400px}.ms-shortcuts .shortcuts-container .shortcuts{position:relative;overflow-x:scroll}.ms-shortcuts .shortcuts-container .shortcuts>div{height:64px;min-width:44px}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging{cursor:grabbing}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging .md-ripple-container{display:none}.ms-shortcuts .shortcuts-container .shortcuts>div.ghost .shortcut{opacity:.27}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut{margin:2px}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut .first-letter{display:inline-block;vertical-align:middle;font-size:20px;text-transform:uppercase;color:rgba(0,0,0,.54)}.ms-shortcuts .shortcuts-container .shortcut-menu{margin:0}.ms-shortcuts .shortcuts-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcut-menu,.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcuts,.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-shortcuts .shortcuts-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu{position:relative;width:240px;min-width:240px;max-width:240px}#ms-shortcut-add-menu .add-shortcut-button{width:48px;height:48px;padding:0 12px;margin:0}#ms-shortcut-add-menu .shortcut-search{height:45px;padding:0 8px}#ms-shortcut-add-menu .shortcut-search .search-icon{width:40px;height:40px;line-height:48px}#ms-shortcut-add-menu .shortcut-search .shortcut-loader{padding:10px}#ms-shortcut-add-menu .shortcut-search input{padding:8px}#ms-shortcut-add-menu .results{position:relative;overflow-y:scroll;max-height:233px;margin-top:8px;padding-top:8px;border-top:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu .results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}#ms-shortcut-add-menu .results .result{position:relative;min-height:56px;padding:16px;cursor:pointer}#ms-shortcut-add-menu .results .result.selected{background:rgba(0,0,0,.07)}#ms-shortcut-add-menu .results .result .icon-container{min-width:32px;margin-right:8px}#ms-shortcut-add-menu .results .result .icon-container .square{width:6px;height:6px}#ms-shortcut-add-menu .results .result .title{font-size:16px}#ms-shortcut-add-menu .results .result .description{padding-top:6px;font-size:14px}#splash-screen{display:block;position:absolute;top:0;left:0;right:0;bottom:0;background-color:#3c4252;z-index:99999}#splash-screen.ng-leave{opacity:1;transition:all linear .2s}#splash-screen.ng-leave-active{opacity:0}#splash-screen .center{display:block;width:100%;position:absolute;top:50%;transform:translateY(-50%)}#splash-screen .logo{width:96px;height:96px;line-height:96px;margin:0 auto;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:56px;text-align:center;border-radius:2px;background-color:#039be5;color:#fff;box-shadow:0 2px 14px 0 rgba(0,0,0,.22)}#splash-screen .spinner-wrapper{display:block;position:relative;width:100%;min-height:100px;height:100px}#splash-screen .spinner-wrapper .spinner{position:absolute;overflow:hidden;left:50%;margin-left:-50px;animation:outer-rotate 2.91667s linear infinite}#splash-screen .spinner-wrapper .spinner .inner{width:100px;height:100px;position:relative;animation:sporadic-rotate 5.25s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .gap{position:absolute;left:49px;right:49px;top:0;bottom:0;border-top:10px solid;box-sizing:border-box}#splash-screen .spinner-wrapper .spinner .inner .left,#splash-screen .spinner-wrapper .spinner .inner .right{position:absolute;top:0;height:100px;width:50px;overflow:hidden}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle,#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{position:absolute;top:0;width:100px;height:100px;box-sizing:border-box;border:10px solid #4285f4;border-bottom-color:transparent;border-radius:50%}#splash-screen .spinner-wrapper .spinner .inner .left{left:0}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle{left:0;border-right-color:transparent;animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .right{right:0}#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{right:0;border-left-color:transparent;animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}@keyframes outer-rotate{0%{transform:rotate(0) scale(.5)}100%{transform:rotate(360deg) scale(.5)}}@keyframes left-wobble{0%,100%{transform:rotate(130deg)}50%{transform:rotate(-5deg)}}@keyframes right-wobble{0%,100%{transform:rotate(-130deg)}50%{transform:rotate(5deg)}}@keyframes sporadic-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}100%{transform:rotate(1080deg)}}.ms-stepper .ms-stepper-horizontal{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{height:72px;min-height:72px;max-height:72px;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after,.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{content:'';display:block;position:absolute;top:50%;width:24px;border-bottom:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{left:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after{right:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .step{background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step{width:24px;min-width:24px;height:24px;border-radius:50%;margin:0 8px 0 16px;color:#fff}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step .icon{color:#fff;font-weight:700;line-height:24px!important}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-horizontal .ms-stepper-steps{padding:24px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls{padding:0 16px 16px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:none;align-items:center;justify-content:center;padding:0 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span.selected{width:8px;height:8px}@media screen and (max-width:600px){.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:flex}}.ms-stepper .ms-stepper-vertical{position:relative;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-vertical-line{display:block;position:absolute;width:1px;top:32px;bottom:32px;left:43px;border-left:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps{padding:8px 0}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step{display:block}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;width:100%;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:0 24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:hover:not(.disabled) .step{background-color:#ececec;border-color:#ececec}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step{width:40px;min-width:40px;height:40px;margin:0 16px 0 0;border-radius:50%;background:#fff;border:8px solid #fff;color:#fff;transition:border-color .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step .icon{font-weight:700;line-height:28px!important}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-step-content{padding:0 24px 16px 64px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-controls{padding:0 16px 16px 56px}.ms-tab-scroll .scroll-arrow{height:inherit;padding:0}.ms-tab-scroll .bar-container{overflow:hidden}.ms-tab-scroll .scroll-container{overflow-x:hidden;overflow-y:hidden;transition:transform .2s ease-in-out}.ms-timeline .ms-timeline-loader{position:relative;display:flex;align-items:center;justify-content:center;width:56px;height:56px;margin:0 auto;background:#fff;font-weight:500;opacity:0;z-index:11;border-radius:50%}.ms-timeline .ms-timeline-loader.show{opacity:1}.ms-timeline .ms-timeline-loader .spinner{width:24px;height:24px;border:3px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%}.ms-widget .ms-widget-front{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget .ms-widget-back{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget.sidenav-widget .ms-widget-back,.ms-widget.sidenav-widget .ms-widget-front{box-shadow:none}.ms-widget .flip-to-front{position:absolute;top:0;right:0}.ms-widget .c3{height:100%}.ms-widget .chart-fill-8{margin:0 -8px -8px -8px}.ms-widget .chart-fill-16{margin:0 -16px -16px -16px}.ms-widget .chart-fill-24{margin:0 -24px -24px -24px}.ms-widget .chart-fill-32{margin:0 -32px -32px -32px}.ms-widget .chart-fill-40{margin:0 -40px -40px -40px}.ms-widget .chart-fill-48{margin:0 -48px -48px -48px}.ms-widget .chart-fill-56{margin:0 -56px -56px -56px}.ms-widget .chart-fill-64{margin:0 -64px -64px -64px}.ms-widget .chart-fill-72{margin:0 -72px -72px -72px}.ms-widget .chart-fill-80{margin:0 -80px -80px -80px}.ms-widget{position:relative;font-size:1.3rem;perspective:3000px;padding:12px}.ms-widget .ms-widget-front{display:flex;flex-direction:column;flex:1 1 auto;position:relative;overflow:hidden;visibility:visible;width:100%;opacity:1;z-index:10;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(0);backface-visibility:hidden}.ms-widget .ms-widget-back{display:block;position:absolute;overflow:hidden;visibility:hidden;opacity:0;z-index:10;top:12px;right:12px;bottom:12px;left:12px;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(180deg);backface-visibility:hidden}.ms-widget .md-button{margin:0}.ms-widget .md-button.md-icon-button{margin:0}.ms-widget.flipped .ms-widget-front{visibility:hidden;opacity:0;transform:rotateY(180deg)}.ms-widget.flipped .ms-widget-back{display:block;visibility:visible;opacity:1;transform:rotateY(360deg)}.ms-widget.sidenav-widget{padding:0}.ms-widget.ar-2-1 .widget{padding:0;position:relative}.ms-widget.ar-2-1 .widget:before{display:block;content:'';width:100%;padding-top:50%}.ms-widget.ar-2-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-widget.ar-1-1 .widget{padding:0;position:relative}.ms-widget.ar-1-1 .widget:before{display:block;content:'';width:100%;padding-top:100%}.ms-widget.ar-1-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-theme-options .ms-theme-options-button{position:absolute;top:160px;right:0;z-index:50;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);width:48px;height:48px;line-height:48px;text-align:center;cursor:pointer;border-radius:0;margin:0;pointer-events:auto;opacity:.75}.ms-theme-options .ms-theme-options-button:hover{opacity:1}.ms-theme-options md-sidenav{width:384px;min-width:384px;max-width:384px}.ms-theme-options md-sidenav .ms-theme-options-list{background:#fff;z-index:12;pointer-events:auto}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option{padding:16px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button{width:160px;max-width:160px;margin:8px 8px 16px 8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button.md-checked ._md-label img,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button:hover ._md-label img{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-container{display:none}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label{margin-left:0}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label img{opacity:.8;margin-bottom:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes md-menu-item{max-width:192px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button{border-bottom:16px solid;text-align:left;width:101px;height:88px;box-shadow:none;opacity:.8}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button.active,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button:hover{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option md-radio-button{margin:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option .option-title{font-size:14px;font-weight:500;padding:0 8px 12px 8px}#error-404 .content{width:90%;max-width:512px;margin-top:128px}#error-404 .content .error-code{font-size:112px;text-align:center;line-height:1;margin-bottom:16px;font-weight:500}#error-404 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-404 .content .search{width:100%;height:56px;line-height:56px;margin:48px auto 16px auto;padding:16px;background:#fff}#error-404 .content .search input{padding:0 0 0 16px}#error-404 .content .back-link{font-size:15px;text-align:center}#error-500 .content{width:90%;max-width:512px;margin-top:128px}#error-500 .content .error-code{font-size:112px;line-height:1;text-align:center;margin-bottom:16px;font-weight:500}#error-500 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-500 .content .sub-message{font-size:17px;text-align:center;color:rgba(0,0,0,.54);margin:16px auto 48px auto}#error-500 .content .report-link{text-align:center;font-size:15px}#forgot-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#forgot-password #forgot-password-form-wrapper{flex:1 0 auto;padding:32px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#forgot-password #forgot-password-form-wrapper #forgot-password-form .title{font-size:17px;margin:16px 0 32px 0}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo_login{max-height:200px}#forgot-password #forgot-password-form-wrapper #forgot-password-form form{width:100%;text-align:left}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .submit-button{width:220px;margin:16px auto;display:block}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#forgot-password #forgot-password-form-wrapper{padding:16px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{padding:24px;width:100%}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .md-button{width:90%}}#login{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#login #login-form-wrapper{flex:1 0 auto;padding:32px}#login #login-form-wrapper #login-form{width:384px;max-width:384px;padding:32px;background:#fff;text-align:center}#login #login-form-wrapper #login-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#login #login-form-wrapper #login-form .title{font-size:17px;margin:16px 0 32px 0}#login #login-form-wrapper #login-form .logo_login{max-height:200px}#login #login-form-wrapper #login-form form{width:100%;text-align:left}#login #login-form-wrapper #login-form form md-checkbox{margin:0}#login #login-form-wrapper #login-form form .remember-forgot-password{font-size:13px;margin-top:8px}#login #login-form-wrapper #login-form form .remember-forgot-password .remember-me{margin-bottom:16px}#login #login-form-wrapper #login-form form .remember-forgot-password .forgot-password{font-size:13px;font-weight:500;margin-bottom:16px}#login #login-form-wrapper #login-form form .submit-button{width:220px;margin:16px auto;display:block}#login #login-form-wrapper #login-form .register{margin:32px auto 24px auto;width:250px;font-weight:500}#login #login-form-wrapper #login-form .register .text{margin-right:8px}#login #login-form-wrapper #login-form .separator{font-size:15px;font-weight:600;margin:24px auto 16px auto;position:relative;overflow:hidden;width:100px;color:rgba(0,0,0,.54)}#login #login-form-wrapper #login-form .separator .text{display:inline-block;vertical-align:baseline;position:relative;padding:0 8px;z-index:9999}#login #login-form-wrapper #login-form .separator .text:after,#login #login-form-wrapper #login-form .separator .text:before{content:'';display:block;width:30px;position:absolute;top:10px;border-top:1px solid rgba(0,0,0,.12)}#login #login-form-wrapper #login-form .separator .text:before{right:100%}#login #login-form-wrapper #login-form .separator .text:after{left:100%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:192px;text-transform:none;color:#fff;font-size:13px}#login #login-form-wrapper #login-form .md-button.facebook md-icon,#login #login-form-wrapper #login-form .md-button.google md-icon{color:#fff;margin:0 8px 0 0}#login #login-form-wrapper #login-form .md-button.google{background-color:#d73d32}#login #login-form-wrapper #login-form .md-button.facebook{background-color:#3f5c9a}@media screen and (max-width:600px){#login #login-form-wrapper{padding:16px}#login #login-form-wrapper #login-form{padding:24px;width:100%}#login #login-form-wrapper #login-form form .md-button{width:90%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:80%}}md-dialog.extractedReport-dialog{max-width:720px;width:720px}md-dialog.extractedReport-dialog md-dialog-content{display:block;position:relative}md-dialog.extractedReport-dialog md-toolbar .title{font-size:17px}md-dialog.extractedReport-dialog md-input-container textarea{min-height:150px}md-dialog.extractedReport-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.extractedReport-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.extractedReport-dialog .date-container{padding:16px 0 24px 0}md-dialog.extractedReport-dialog .error-list{font-size:13px}md-dialog.extractedReport-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.extractedReport-dialog .error-list .error .message{font-weight:500}md-dialog.extractedReport-dialog .error-list .error .md-button{margin:0}md-dialog.extractedReport-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.extractedReport-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#extractedReports{position:relative}#extractedReports>.header{height:76px;min-height:76px;max-height:76px}#extractedReports>.header .logo .logo-icon{margin:0 16px 0 0}#extractedReports>.header .logo .logo-text{font-size:24px}#extractedReports>.header md-icon{color:#fff}#extractedReports>.header .search-input-wrapper{position:relative}#extractedReports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#extractedReports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#extractedReports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#extractedReports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#extractedReports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#extractedReports>.header.selected-bar .close-button-wrapper{width:244px}#extractedReports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#extractedReports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#extractedReports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#extractedReports #add-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}#extractedReports #upload-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.metric-dialog{max-width:720px;width:720px}md-dialog.metric-dialog md-dialog-content{display:block;position:relative}md-dialog.metric-dialog md-toolbar .title{font-size:17px}md-dialog.metric-dialog md-input-container textarea{min-height:150px}md-dialog.metric-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.metric-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.metric-dialog .date-container{padding:16px 0 24px 0}md-dialog.metric-dialog .error-list{font-size:13px}md-dialog.metric-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.metric-dialog .error-list .error .message{font-weight:500}md-dialog.metric-dialog .error-list .error .md-button{margin:0}md-dialog.metric-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.metric-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#metrics{position:relative}#metrics>.header{height:76px;min-height:76px;max-height:76px}#metrics>.header .logo .logo-icon{margin:0 16px 0 0}#metrics>.header .logo .logo-text{font-size:24px}#metrics>.header md-icon{color:#fff}#metrics>.header .search-input-wrapper{position:relative}#metrics>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#metrics>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#metrics>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#metrics>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#metrics>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#metrics>.header.selected-bar .close-button-wrapper{width:244px}#metrics>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#metrics>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#metrics>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#metrics #add-metric-button{position:fixed;bottom:8px;right:8px;padding:0}#metrics #upload-metric-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.reportField-dialog{max-width:720px;width:720px}md-dialog.reportField-dialog md-dialog-content{display:block;position:relative}md-dialog.reportField-dialog md-toolbar .title{font-size:17px}md-dialog.reportField-dialog md-input-container textarea{min-height:150px}md-dialog.reportField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.reportField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.reportField-dialog .date-container{padding:16px 0 24px 0}md-dialog.reportField-dialog .error-list{font-size:13px}md-dialog.reportField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.reportField-dialog .error-list .error .message{font-weight:500}md-dialog.reportField-dialog .error-list .error .md-button{margin:0}md-dialog.reportField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.reportField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#analytics-report .header{height:76px;min-height:76px;max-height:76px}#analytics-report .header .goto-reports-button{margin-right:16px}#analytics-report .header .report-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#analytics-report .header .report-image img{height:100%;width:auto;max-width:none}#analytics-report .header .subtitle{margin:6px 0 0 0}#analytics-report .report-detail-form-container{padding:24px;margin-bottom:24px}#analytics-report .report-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#analytics-report .report-detail-form-container .handle{cursor:move}#analytics-report .report-detail-form-container md-input-container md-switch{margin:0!important}#analytics-report .report-detail-form-container #report-image-uploader{position:relative}#analytics-report .report-detail-form-container #report-image-uploader.dropping .drop-text{display:flex}#analytics-report .report-detail-form-container #report-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#analytics-report .report-detail-form-container #report-image-uploader .upload-button{margin-bottom:16px}#analytics-report .report-detail-form-container #report-image-uploader .report-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#analytics-report .report-detail-form-container #report-image-uploader .report-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#analytics-report .report-detail-form-container #report-image-uploader .report-image .media{max-height:100%}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reports{position:relative}#reports>.header{height:76px;min-height:76px;max-height:76px}#reports>.header .logo .logo-icon{margin:0 16px 0 0}#reports>.header .logo .logo-text{font-size:24px}#reports>.header md-icon{color:#fff}#reports>.header .search-input-wrapper{position:relative}#reports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#reports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#reports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#reports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#reports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#reports>.header.selected-bar .close-button-wrapper{width:244px}#reports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#reports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#reports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.web-dialog md-dialog-content{display:block;position:relative}md-dialog.web-dialog md-toolbar .title{font-size:17px}md-dialog.web-dialog md-input-container textarea{min-height:150px}md-dialog.web-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.web-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.web-dialog .date-container{padding:16px 0 24px 0}md-dialog.web-dialog .error-list{font-size:13px}md-dialog.web-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.web-dialog .error-list .error .message{font-weight:500}md-dialog.web-dialog .error-list .error .md-button{margin:0}md-dialog.web-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.web-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.odbc-dialog{max-width:720px;width:720px}md-dialog.odbc-dialog md-dialog-content{display:block;position:relative}md-dialog.odbc-dialog md-toolbar .title{font-size:17px}md-dialog.odbc-dialog md-input-container textarea{min-height:150px}md-dialog.odbc-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.odbc-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.odbc-dialog .date-container{padding:16px 0 24px 0}md-dialog.odbc-dialog .error-list{font-size:13px}md-dialog.odbc-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.odbc-dialog .error-list .error .message{font-weight:500}md-dialog.odbc-dialog .error-list .error .md-button{margin:0}md-dialog.odbc-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.odbc-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#odbcs{position:relative}#odbcs>.header{height:76px;min-height:76px;max-height:76px}#odbcs>.header .logo .logo-icon{margin:0 16px 0 0}#odbcs>.header .logo .logo-text{font-size:24px}#odbcs>.header md-icon{color:#fff}#odbcs>.header .search-input-wrapper{position:relative}#odbcs>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#odbcs>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#odbcs>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#odbcs>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#odbcs>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#odbcs>.header.selected-bar .close-button-wrapper{width:244px}#odbcs>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#odbcs>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#odbcs>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#odbcs #add-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}#odbcs #upload-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.project-dialog .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#callysquare-project .header{height:76px;min-height:76px;max-height:76px}#callysquare-project .header .goto-projects-button{margin-right:16px}#callysquare-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#callysquare-project .header .project-image img{height:100%;width:auto;max-width:none}#callysquare-project .header .subtitle{margin:6px 0 0 0}#callysquare-project .project-detail-form-container{padding:24px;margin-bottom:24px}#callysquare-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#callysquare-project .project-detail-form-container #project-image-uploader{position:relative}#callysquare-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#callysquare-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#callysquare-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#callysquare-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#callysquare-project>.callysquare-content{position:absolute;top:76px;bottom:0;left:0;right:0}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.squareRecording-dialog{max-width:720px;width:720px}md-dialog.squareRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.squareRecording-dialog md-toolbar .title{font-size:17px}md-dialog.squareRecording-dialog md-input-container textarea{min-height:150px}md-dialog.squareRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.squareRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.squareRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.squareRecording-dialog .error-list{font-size:13px}md-dialog.squareRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.squareRecording-dialog .error-list .error .message{font-weight:500}md-dialog.squareRecording-dialog .error-list .error .md-button{margin:0}md-dialog.squareRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.squareRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#squareRecordings{position:relative}#squareRecordings>.header{height:76px;min-height:76px;max-height:76px}#squareRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#squareRecordings>.header .logo .logo-text{font-size:24px}#squareRecordings>.header md-icon{color:#fff}#squareRecordings>.header .search-input-wrapper{position:relative}#squareRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#squareRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#squareRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#squareRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#squareRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#squareRecordings>.header.selected-bar .close-button-wrapper{width:244px}#squareRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#squareRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#squareRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#squareRecordings #add-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#squareRecordings #upload-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues{position:relative}#chatQueues>.header{height:76px;min-height:76px;max-height:76px}#chatQueues>.header .logo .logo-icon{margin:0 16px 0 0}#chatQueues>.header .logo .logo-text{font-size:24px}#chatQueues>.header md-icon{color:#fff}#chatQueues>.header .search-input-wrapper{position:relative}#chatQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatQueues>.header.selected-bar .close-button-wrapper{width:244px}#chatQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatQueues #add-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues #upload-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatQueue-dialog{max-width:720px;width:720px}md-dialog.chatQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.chatQueue-dialog md-toolbar .title{font-size:17px}md-dialog.chatQueue-dialog md-input-container textarea{min-height:150px}md-dialog.chatQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatQueue-dialog .error-list{font-size:13px}md-dialog.chatQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatQueue-dialog .error-list .error .message{font-weight:500}md-dialog.chatQueue-dialog .error-list .error .md-button{margin:0}md-dialog.chatQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatQueue .header{height:76px;min-height:76px;max-height:76px}#chat-chatQueue .header .goto-chatQueues-button{margin-right:16px}#chat-chatQueue .header .chatQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatQueue .header .chatQueue-image img{height:100%;width:auto;max-width:none}#chat-chatQueue .header .subtitle{margin:6px 0 0 0}#chat-chatQueue .chatQueue-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatQueue .chatQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatQueue .chatQueue-detail-form-container .handle{cursor:move}#chat-chatQueue .chatQueue-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader{position:relative}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader.dropping .drop-text{display:flex}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .upload-button{margin-bottom:16px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image .media{max-height:100%}#chat-chatQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#chatWebsites{position:relative}#chatWebsites>.header{height:76px;min-height:76px;max-height:76px}#chatWebsites>.header .logo .logo-icon{margin:0 16px 0 0}#chatWebsites>.header .logo .logo-text{font-size:24px}#chatWebsites>.header md-icon{color:#fff}#chatWebsites>.header .search-input-wrapper{position:relative}#chatWebsites>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatWebsites>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatWebsites>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatWebsites>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatWebsites>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatWebsites>.header.selected-bar .close-button-wrapper{width:244px}#chatWebsites>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatWebsites>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatWebsites>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatWebsites #add-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}#chatWebsites #upload-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatWebsite-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.chatCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.chatCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.chatCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.chatCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatCannedAnswer-dialog .error-list{font-size:13px}md-dialog.chatCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.chatCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.chatCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.offlineMessage-dialog{max-width:720px;width:720px}md-dialog.offlineMessage-dialog md-dialog-content{display:block;position:relative}md-dialog.offlineMessage-dialog md-toolbar .title{font-size:17px}md-dialog.offlineMessage-dialog md-input-container textarea{min-height:150px}md-dialog.offlineMessage-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.offlineMessage-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.offlineMessage-dialog .date-container{padding:16px 0 24px 0}md-dialog.offlineMessage-dialog .error-list{font-size:13px}md-dialog.offlineMessage-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.offlineMessage-dialog .error-list .error .message{font-weight:500}md-dialog.offlineMessage-dialog .error-list .error .md-button{margin:0}md-dialog.offlineMessage-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.offlineMessage-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatProactiveAction-dialog{max-width:720px;width:720px}md-dialog.chatProactiveAction-dialog md-dialog-content{display:block;position:relative}md-dialog.chatProactiveAction-dialog md-toolbar .title{font-size:17px}md-dialog.chatProactiveAction-dialog md-input-container textarea{min-height:150px}md-dialog.chatProactiveAction-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatProactiveAction-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatProactiveAction-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatProactiveAction-dialog .error-list{font-size:13px}md-dialog.chatProactiveAction-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatProactiveAction-dialog .error-list .error .message{font-weight:500}md-dialog.chatProactiveAction-dialog .error-list .error .md-button{margin:0}md-dialog.chatProactiveAction-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatProactiveAction-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatWebsite .header{height:76px;min-height:76px;max-height:76px}#chat-chatWebsite .header .goto-chatWebsites-button{margin-right:16px}#chat-chatWebsite .header .chatWebsite-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatWebsite .header .chatWebsite-image img{height:100%;width:auto;max-width:none}#chat-chatWebsite .header .subtitle{margin:6px 0 0 0}#chat-chatWebsite .chatWebsite-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatWebsite .chatWebsite-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatWebsite .chatWebsite-detail-form-container .handle{cursor:move}#chat-chatWebsite .chatWebsite-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader{position:relative}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader.dropping .drop-text{display:flex}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .upload-button{margin-bottom:16px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image .media{max-height:100%}#chat-chatWebsite md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatWebsite md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container.font-size-12 td.md-cell{font-size:12px!important}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#companies{position:relative}#companies>.header{height:76px;min-height:76px;max-height:76px}#companies>.header .logo .logo-icon{margin:0 16px 0 0}#companies>.header .logo .logo-text{font-size:24px}#companies>.header md-icon{color:#fff}#companies>.header .search-input-wrapper{position:relative}#companies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#companies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#companies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#companies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#companies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#companies>.header.selected-bar .close-button-wrapper{width:244px}#companies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#companies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#companies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#companies #add-company-button{position:fixed;bottom:8px;right:8px;padding:0}#companies #upload-company-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.company-dialog{max-width:720px;width:720px}md-dialog.company-dialog md-dialog-content{display:block;position:relative}md-dialog.company-dialog md-toolbar .title{font-size:17px}md-dialog.company-dialog md-input-container textarea{min-height:150px}md-dialog.company-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.company-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.company-dialog .date-container{padding:16px 0 24px 0}md-dialog.company-dialog .error-list{font-size:13px}md-dialog.company-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.company-dialog .error-list .error .message{font-weight:500}md-dialog.company-dialog .error-list .error .md-button{margin:0}md-dialog.company-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.company-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-company .header{height:76px;min-height:76px;max-height:76px}#contactmanager-company .header .goto-companies-button{margin-right:16px}#contactmanager-company .header .company-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-company .header .company-image img{height:100%;width:auto;max-width:none}#contactmanager-company .header .subtitle{margin:6px 0 0 0}#contactmanager-company .company-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-company .company-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-company .company-detail-form-container .handle{cursor:move}#contactmanager-company .company-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-company .company-detail-form-container #company-image-uploader{position:relative}#contactmanager-company .company-detail-form-container #company-image-uploader.dropping .drop-text{display:flex}#contactmanager-company .company-detail-form-container #company-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-company .company-detail-form-container #company-image-uploader .upload-button{margin-bottom:16px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image .media{max-height:100%}#contactmanager-company md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-company md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container.font-size-12 td.md-cell{font-size:12px!important}#contacts{position:relative}#contacts>.header{height:76px;min-height:76px;max-height:76px}#contacts>.header .logo .logo-icon{margin:0 16px 0 0}#contacts>.header .logo .logo-text{font-size:24px}#contacts>.header md-icon{color:#fff}#contacts>.header .search-input-wrapper{position:relative}#contacts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contacts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contacts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contacts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contacts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contacts>.header.selected-bar .close-button-wrapper{width:244px}#contacts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contacts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contacts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contacts #add-contact-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#cm-contact .pointer{cursor:pointer}#cm-contact .header{height:76px;min-height:76px;max-height:76px}#cm-contact .header .goto-contacts-button{margin-right:16px}#cm-contact .header .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#cm-contact .header .contact-image img{height:100%;width:auto;max-width:none}#cm-contact .header .subtitle{margin:6px 0 0 0}#cm-contact .contact-detail-form-container{padding:24px;margin-bottom:24px}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.email{color:green}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.firstname{color:#1e90ff}#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.email,#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.firstname{color:red}#cm-contact .contact-detail-form-container .hint{position:absolute;left:2px;right:auto;bottom:7px;font-size:10px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.import-dialog{max-width:720px;width:720px}md-dialog.import-dialog md-dialog-content{display:block;position:relative}md-dialog.import-dialog md-toolbar .title{font-size:17px}md-dialog.import-dialog md-input-container textarea{min-height:150px}md-dialog.import-dialog .date-container{padding:16px 0 24px 0}md-dialog.import-dialog .error-list{font-size:13px}md-dialog.import-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .error .message{font-weight:500}md-dialog.import-dialog .error-list .error .md-button{margin:0}md-dialog.import-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.import-dialog .error-list .info{background-color:rgba(24,160,135,.08);border:1px solid rgba(24,160,135,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .info .message{font-weight:500}md-dialog.import-dialog .error-list .info .md-button{margin:0}md-dialog.import-dialog .error-list .info:last-child{margin-bottom:30px}md-dialog.import-dialog .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}md-dialog.import-dialog .contact-image img{height:100%;width:auto;max-width:none}md-dialog.import-dialog .contact-image .media{max-height:100%}md-dialog.import-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.globalCustomField-dialog{max-width:720px;width:720px}md-dialog.globalCustomField-dialog md-dialog-content{display:block;position:relative}md-dialog.globalCustomField-dialog md-toolbar .title{font-size:17px}md-dialog.globalCustomField-dialog md-input-container textarea{min-height:150px}md-dialog.globalCustomField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.globalCustomField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.globalCustomField-dialog .date-container{padding:16px 0 24px 0}md-dialog.globalCustomField-dialog .error-list{font-size:13px}md-dialog.globalCustomField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.globalCustomField-dialog .error-list .error .message{font-weight:500}md-dialog.globalCustomField-dialog .error-list .error .md-button{margin:0}md-dialog.globalCustomField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.globalCustomField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#globalCustomFields{position:relative}#globalCustomFields>.header{height:76px;min-height:76px;max-height:76px}#globalCustomFields>.header .logo .logo-icon{margin:0 16px 0 0}#globalCustomFields>.header .logo .logo-text{font-size:24px}#globalCustomFields>.header md-icon{color:#fff}#globalCustomFields>.header .search-input-wrapper{position:relative}#globalCustomFields>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#globalCustomFields>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#globalCustomFields>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#globalCustomFields>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#globalCustomFields>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#globalCustomFields>.header.selected-bar .close-button-wrapper{width:244px}#globalCustomFields>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#globalCustomFields>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#globalCustomFields>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#globalCustomFields #add-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}#globalCustomFields #upload-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.list-dialog{max-width:720px;width:720px}md-dialog.list-dialog md-dialog-content{display:block;position:relative}md-dialog.list-dialog md-toolbar .title{font-size:17px}md-dialog.list-dialog md-input-container textarea{min-height:150px}md-dialog.list-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.list-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.list-dialog .date-container{padding:16px 0 24px 0}md-dialog.list-dialog .error-list{font-size:13px}md-dialog.list-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.list-dialog .error-list .error .message{font-weight:500}md-dialog.list-dialog .error-list .error .md-button{margin:0}md-dialog.list-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.list-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customField-dialog{max-width:720px;width:720px}md-dialog.customField-dialog md-dialog-content{display:block;position:relative}md-dialog.customField-dialog md-toolbar .title{font-size:17px}md-dialog.customField-dialog md-input-container textarea{min-height:150px}md-dialog.customField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customField-dialog .date-container{padding:16px 0 24px 0}md-dialog.customField-dialog .error-list{font-size:13px}md-dialog.customField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customField-dialog .error-list .error .message{font-weight:500}md-dialog.customField-dialog .error-list .error .md-button{margin:0}md-dialog.customField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-list .header{height:76px;min-height:76px;max-height:76px}#contactmanager-list .header .goto-lists-button{margin-right:16px}#contactmanager-list .header .list-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-list .header .list-image img{height:100%;width:auto;max-width:none}#contactmanager-list .header .subtitle{margin:6px 0 0 0}#contactmanager-list .list-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-list .list-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-list .list-detail-form-container .handle{cursor:move}#contactmanager-list .list-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-list .list-detail-form-container #list-image-uploader{position:relative}#contactmanager-list .list-detail-form-container #list-image-uploader.dropping .drop-text{display:flex}#contactmanager-list .list-detail-form-container #list-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-list .list-detail-form-container #list-image-uploader .upload-button{margin-bottom:16px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image .media{max-height:100%}#contactmanager-list md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-list md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container.font-size-12 td.md-cell{font-size:12px!important}#lists{position:relative}#lists>.header{height:76px;min-height:76px;max-height:76px}#lists>.header .logo .logo-icon{margin:0 16px 0 0}#lists>.header .logo .logo-text{font-size:24px}#lists>.header md-icon{color:#fff}#lists>.header .search-input-wrapper{position:relative}#lists>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#lists>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#lists>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#lists>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#lists>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#lists>.header.selected-bar .close-button-wrapper{width:244px}#lists>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#lists>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#lists>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#lists #add-list-button{position:fixed;bottom:8px;right:8px;padding:0}#lists #upload-list-button{position:fixed;bottom:8px;right:8px;padding:0}#dashboard-custom .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#agent-general{position:fixed;width:100%;height:100%}#agent-general .agent-content{position:fixed;top:36px;bottom:0;left:0;right:0}#agent-general .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#agent-general .table-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#agent-general .table-header .md-toolbar-tools div md-select .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder .md-select-icon{display:none}#agent-general .table-header ms-quick-filter .quick-filter-date-clear-button{color:#fff}#agent-general .tooltip-preview{position:relative;display:inline-block;text-decoration:underline}#agent-general .tooltip-preview .tooltip-preview-text{visibility:hidden;width:500px;position:fixed;white-space:pre-line;left:28%;z-index:9999}#agent-general .tooltip-preview:hover .tooltip-preview-text{visibility:visible}#agent-general .reload-list md-icon{color:#fff}#agent-general .advanced-search md-icon{color:#fff}#agent-general .create-new md-icon{color:#fff}#agent-general div.draft-manager-bar{background-color:#f5f5f5;position:sticky;height:34px;bottom:0;border-top:1px solid #e0e0e0}#agent-general div.draft-manager-bar ms-tab-scroll{overflow:hidden}#agent-general div.draft-manager-bar ms-tab-scroll div.draft-manager-tab{height:34px;border-right:1px solid #e0e0e0}#agent-general td.width-5,#agent-general th.width-5{width:5px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-10,#agent-general th.width-10{width:10px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-15,#agent-general th.width-15{width:15px!important;min-width:auto!important;max-width:none!important}#agent-general td.no-padding,#agent-general th.no-padding{padding:0!important}#agent-general span.contact-text{width:100px!important}#agent-general span.subject-text{width:300px!important}#agent-general span.no-margin-bottom{margin-bottom:0!important}#agent-general span.no-margin-top{margin-top:0!important}#agent-general md-table-container.interactions-list thead tr th:not(.no-padding):not(.id-header){padding:0 20px 0 0!important}#agent-general md-table-container.interactions-list tbody tr td:not(.no-padding):not(.actions-padding):not(.id){padding:0 20px 0 0!important}#agent-general td.actions-padding{padding:0 8px 0 0!important}#agent-general md-toolbar.md-table-toolbar[disabled]{pointer-events:none}#agent-general md-toolbar.md-table-toolbar[disabled] ms-search-bar{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] ms-quick-filter{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] button.advanced-search,#agent-general md-toolbar.md-table-toolbar[disabled] button.interaction-reload{opacity:.7}#agent-general md-card.call-info-card{min-width:200px}#agent-general md-card.call-info-card div.reload-container{position:relative}#agent-general md-card.call-info-card button.reload-button{position:absolute;right:-16px}@media screen and (max-width:1280px){#agent-general span.contact-text{width:100px!important}#agent-general span.subject-text{width:350px!important}}@media screen and (max-width:1920px){#agent-general span.contact-text{width:150px!important}#agent-general span.subject-text{width:500px!important}}#agent-general-dialog{position:fixed;width:100%;height:100%}#agent-general-dialog .agent-content{position:fixed;top:0;bottom:0;left:0;right:0}body .md-select-menu-container{z-index:110}.md-toolbar-tools{font-size:12px}div.toolbar-quick-filter[disabled]{pointer-events:none;opacity:.7}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.contact-trigger-dialog{max-width:720px;width:720px}md-dialog.contact-trigger-dialog md-dialog-content{display:block;position:relative;max-height:400px;height:400px}md-dialog.contact-trigger-dialog md-toolbar{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}md-dialog.contact-trigger-dialog md-toolbar .title{font-size:17px}md-dialog.contact-trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.contact-trigger-dialog md-dialog-actions button.select-button{position:absolute;right:0;margin-right:16px}md-dialog md-grid-list.one-row-layout{height:150px;max-height:150px}md-dialog md-grid-list.two-rows-layout{height:300px;max-height:300px}md-dialog md-card.contact-info:hover{background-color:#e9eef1ad}@media screen and (max-width:1280px){md-dialog.contact-trigger-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.contact-trigger-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.details-dialog{max-width:500px;width:500px}md-dialog.details-dialog md-dialog-content{display:block;position:relative}md-dialog.details-dialog md-toolbar .title{font-size:17px}md-dialog.details-dialog md-input-container textarea{min-height:150px}md-dialog.details-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.details-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.details-dialog .date-container{padding:16px 0 24px 0}md-dialog.details-dialog .error-list{font-size:13px}md-dialog.details-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.details-dialog .error-list .error .message{font-weight:500}md-dialog.details-dialog .error-list .error .md-button{margin:0}md-dialog.details-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.details-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#interaction-app .tags{font-size:12px}#interaction-app .tags .tag{border-radius:2px;padding:3px 8px;background-color:rgba(0,0,0,.08)}#interaction-app .tags .tag .tag-color{width:8px;height:8px;margin-right:8px;border-radius:50%}#interaction-app .content-card{position:relative;height:100%}#interaction-app .content-card .interaction{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .interaction .avatar-small{width:30px;min-width:30px;height:30px;line-height:30px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}#interaction-app .content-card .interaction .interaction-agents{min-height:40px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-agents .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-agents .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-agents .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .interaction-toolbar{min-height:64px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-toolbar md-icon{color:rgba(0,0,0,.87)}#interaction-app .content-card .interaction .interaction-toolbar .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .cannedarea{margin-right:7px;font-size:14px;border:1px solid #ccc;border-radius:3px;align-self:stretch}#interaction-app .content-card .interaction .cannedarea md-autocomplete-wrap{padding:0 1em}#interaction-app .content-card .interaction .emojionearea{margin-right:7px}#interaction-app .content-card .interaction #interaction-content{background:url(/assets/images/patterns/circles-light.png) repeat}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content{padding:24px 0}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject .subject-text{margin-right:4px;text-transform:lowercase}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info{padding-bottom:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .avatar{margin-right:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .name{margin-right:8px;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .toggle-details{padding-top:16px;cursor:pointer;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details{padding-top:8px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .title{font-weight:500;margin-right:6px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .detail{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .bubble{position:relative;padding:6px 7px 8px 9px;background-color:#fff;border:1px solid #dcdfe1;border-radius:6px;word-break:break-word}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after,#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#fff transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .time{font-size:11px;margin-top:0;text-align:right}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message{white-space:pre-wrap}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message span{word-break:break-all}#interaction-app .content-card .interaction #interaction-content .message-row.in{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.in .avatar{margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble{margin-left:auto;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:after{right:-9px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:before{right:-11px;left:auto;-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);transform:scaleX(-1)}#interaction-app .content-card .interaction #interaction-content .message-row.out{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.out .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble{margin-left:auto;background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .avatar{order:1;margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:2}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction .interaction-footer{min-height:64px;max-height:180px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-top:1px solid rgba(0,0,0,.08);padding:8px 8px 8px 16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container{margin:0;padding-right:16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea{overflow:auto;max-height:80px;transition:height .2s ease}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea.grow{height:80px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container .md-errors-spacer{display:none}#interaction-app .content-card .interaction .interaction-footer .reply-form .md-button{margin:0}#interaction-app .content-card .info md-list-item{min-height:40px;height:52px}#interaction-app .content-card .start-point{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .start-point .big-circle{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8));border-radius:50%;width:300px;height:300px;line-height:300px;text-align:center}#interaction-app .content-card .start-point .app-title{font-weight:500;font-size:32px;margin:12px 0}#interaction-app .content-card .start-point .secondary-text{font-size:16px}#interaction-app .content-card .sidenav md-toolbar{border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search{height:36px;line-height:36px;padding:8px;background:#fff;font-size:13px}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search .icon{margin:0;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search input{padding-left:12px;height:36px;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-list.contact-list,#interaction-app .content-card .sidenav md-list.interaction-list{position:relative;transition:all .2s ease-out}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.contact-list md-list-item,#interaction-app .content-card .sidenav md-list.interaction-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item{position:absolute;right:0;left:0;width:100%;transition:transform .2s ease-out;background:#fff;will-change:transform}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave{transform:translateY(0);display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave.ng-leave-active{transform:translateY(-100%)}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide{display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-remove-active{display:block;transition-property:all}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list .subheader{padding-left:16px;font-size:20px;font-weight:300;height:88px;line-height:88px}#interaction-app .content-card .sidenav .no-results-message{position:absolute;width:100%;height:88px;padding:16px;background:#fff;font-size:15px;font-weight:400}#interaction-app .avatar-wrapper{position:relative}#interaction-app .avatar-wrapper .avatar{margin-top:0;margin-bottom:0}#interaction-app .status{position:absolute;top:28px;left:28px;border-radius:50%}#interaction-app .status.online{color:#4caf50}#interaction-app .status.online:before{content:'\e709'}#interaction-app .status.do-not-disturb{color:#f44336}#interaction-app .status.do-not-disturb:before{content:'\e912'}#interaction-app .status.away{background-color:#ffc107;color:#fff}#interaction-app .status.away:before{content:'\e727'}#interaction-app .status.offline{color:#4caf50;background-color:#fff}#interaction-app .status.offline:before{content:'\e704'}#interaction-app .editable-wrap{position:relative}#interaction-app .editable-wrap .editable-controls{display:flex;flex-direction:row;align-items:center;width:100%}#interaction-app .editable-wrap .editable-controls .editable-input{width:inherit;background-color:#fff;padding:8px;border:1px solid rgba(0,0,0,.12)}#interaction-app .editable-wrap .editable-controls .editable-buttons{display:inherit}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button{margin:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button:first-of-type{padding-right:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button .icon-cancel{color:rgba(0,0,0,.32)}#interaction-app .editable-click{cursor:pointer;text-decoration:none;color:inherit;border-bottom:none}#interaction-app .emoji-picker-icon{right:5px;cursor:pointer}#interaction-app .input-show-hide{transition:all linear .5s}#interaction-app .input-show-hide.ng-hide{opacity:0}#interaction-app div.interaction-reply-button-container{display:inline;padding-bottom:14px}#timeline{position:relative;height:auto;padding-bottom:30px}#timeline:before{display:block;position:absolute;z-index:10;content:'';width:2px;background:rgba(0,0,0,.08);top:0;left:50%;bottom:0;margin-left:-1px}#timeline .ms-timeline-item{overflow:hidden;position:relative;z-index:20;width:100%;margin:0 auto;max-width:1200px}#timeline .ms-timeline-item .timeline-card{order:1}#timeline .ms-timeline-item .timeline-card .interaction .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}#timeline .ms-timeline-item .timeline-card .interaction .media .image{width:100%}#timeline .ms-timeline-item .timeline-point{position:absolute;width:40px;height:40px;line-height:40px;text-align:center;border-radius:50%;left:50%;margin:16px 0 0 -28px;order:2}#timeline .ms-timeline-item .timeline-point md-icon{color:#fff}#timeline .ms-timeline-item .timeline-detail{flex:50% 0 0;padding-top:28px;order:3}#timeline .ms-timeline-item .timeline-detail .time{font-size:15px;padding-left:68px}#timeline .ms-timeline-item .timeline-detail .event{color:rgba(0,0,0,.54);padding-left:68px}#timeline .ms-timeline-item:nth-child(odd) .timeline-card{flex-direction:row-reverse}#timeline .ms-timeline-item:nth-child(even) .timeline-card{order:3;padding-right:0}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card{padding-left:84px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail{order:1;padding-left:0;text-align:right}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:68px}#timeline .ms-timeline-item:first-child{padding-top:15px}#timeline .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline .ms-timeline-item.animate .timeline-point{animation:slide-in-bottom .4s}#timeline .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-card{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-detail{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item .timeline-card{order:1}#timeline.timeline-left .ms-timeline-item .timeline-card ms-card{padding-right:68px;padding-left:0;margin-left:auto}#timeline.timeline-left .ms-timeline-item .timeline-detail{order:3;text-align:left}#timeline.timeline-left .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item .timeline-card{order:3}#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{padding-left:68px;padding-right:0;margin-right:auto}#timeline.timeline-right .ms-timeline-item .timeline-detail{order:1;text-align:right}#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:68px;padding-left:0}#timeline.timeline-right .ms-timeline-item.animate .timeline-card{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item.animate .timeline-detail{animation:slide-in-left .4s}@media screen and (max-width:1280px){#timeline .ms-timeline-item,#timeline.timeline-left .ms-timeline-item,#timeline.timeline-right .ms-timeline-item{display:block}#timeline .ms-timeline-item .timeline-point,#timeline.timeline-left .ms-timeline-item .timeline-point,#timeline.timeline-right .ms-timeline-item .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item .timeline-detail,#timeline.timeline-left .ms-timeline-item .timeline-detail,#timeline.timeline-right .ms-timeline-item .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item .timeline-detail .event,#timeline .ms-timeline-item .timeline-detail .time,#timeline.timeline-left .ms-timeline-item .timeline-detail .event,#timeline.timeline-left .ms-timeline-item .timeline-detail .time,#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{margin:0 auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-card ms-card{margin:0 auto;padding:0}}md-dialog.compose-dialog{max-width:720px;width:720px}md-dialog.compose-dialog.mail-no-secret{max-height:97%;max-width:90%!important;width:100%!important}md-dialog.compose-dialog md-dialog-content{display:block;position:relative}md-dialog.compose-dialog md-toolbar .title{font-size:17px}md-dialog.compose-dialog md-toolbar .vertical-divider{position:absolute;border-right-width:.5px;border-right-style:solid;height:100%}md-dialog.compose-dialog md-chips md-chip{font-size:12px}md-dialog.compose-dialog md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog .to{position:relative}md-dialog.compose-dialog .to.hidden-cc input{padding-right:32px}md-dialog.compose-dialog .to.hidden-cc.hidden-bcc input{padding-right:56px}md-dialog.compose-dialog .to.hidden-bcc input{padding-right:32px}md-dialog.compose-dialog .to .cc-bcc{position:absolute;bottom:8px;right:0}md-dialog.compose-dialog .to .cc-bcc .show-bcc,md-dialog.compose-dialog .to .cc-bcc .show-cc{cursor:pointer;font-size:12px}md-dialog.compose-dialog .to .cc-bcc .show-bcc{margin-left:8px}md-dialog.compose-dialog .attachment-list{font-size:13px}md-dialog.compose-dialog .attachment-list .attachment{background-color:rgba(0,0,0,.08);border:1px solid rgba(0,0,0,.16);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .attachment-list .attachment .filename{font-weight:500}md-dialog.compose-dialog .attachment-list .attachment .md-button{margin:0}md-dialog.compose-dialog .attachment-list .attachment:last-child{margin-bottom:0}md-dialog.compose-dialog .error-list{font-size:13px}md-dialog.compose-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .error-list .error .message{font-weight:500}md-dialog.compose-dialog .error-list .error .md-button{margin:0}md-dialog.compose-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog .emojionearea{max-width:700px;min-height:300px}md-dialog.compose-dialog md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dashboard-general>.center>.header{height:160px;min-height:160px;max-height:160px;padding-bottom:0}#dashboard-general>.center>.header .selected-general{background:rgba(0,0,0,.12);color:#fff;padding:8px 16px;height:40px;line-height:24px;font-size:16px}#dashboard-general>.center>.header .general-selector{margin-left:1px;border-radius:0;background:rgba(0,0,0,.12)}#dashboard-general>.center>.header .general-selector md-icon{color:#fff}#dashboard-general>.center>.content{background:0 0;padding:0}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}#dashboard-general>.center>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-content-wrapper md-tab-content{padding:12px}#dashboard-general>.sidenav{width:330px;min-width:330px;max-width:330px;padding:0;z-index:51;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#dashboard-general>.sidenav.md-locked-open{width:250px;min-width:250px;max-width:250px;z-index:2;box-shadow:none;background:#eee}#dashboard-general .dashboard-container{padding:24px;margin-bottom:24px}#dashboard-general .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxAccount .header{height:76px;min-height:76px;max-height:76px}#fax-faxAccount .header .goto-faxAccounts-button{margin-right:16px}#fax-faxAccount .header .faxAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxAccount .header .faxAccount-image img{height:100%;width:auto;max-width:none}#fax-faxAccount .header .subtitle{margin:6px 0 0 0}#fax-faxAccount .faxAccount-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxAccount .faxAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxAccount .faxAccount-detail-form-container .handle{cursor:move}#fax-faxAccount .faxAccount-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader{position:relative}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader.dropping .drop-text{display:flex}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .upload-button{margin-bottom:16px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image .media{max-height:100%}#fax-faxAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#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{max-width:720px;width:720px}md-dialog.compose-dialog.mail-no-secret{max-height:97%;max-width:90%!important;width:100%!important}md-dialog.compose-dialog md-dialog-content{display:block;position:relative}md-dialog.compose-dialog md-toolbar .title{font-size:17px}md-dialog.compose-dialog md-toolbar .vertical-divider{position:absolute;border-right-width:.5px;border-right-style:solid;height:100%}md-dialog.compose-dialog md-chips md-chip{font-size:12px}md-dialog.compose-dialog md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog .to{position:relative}md-dialog.compose-dialog .to.hidden-cc input{padding-right:32px}md-dialog.compose-dialog .to.hidden-cc.hidden-bcc input{padding-right:56px}md-dialog.compose-dialog .to.hidden-bcc input{padding-right:32px}md-dialog.compose-dialog .to .cc-bcc{position:absolute;bottom:8px;right:0}md-dialog.compose-dialog .to .cc-bcc .show-bcc,md-dialog.compose-dialog .to .cc-bcc .show-cc{cursor:pointer;font-size:12px}md-dialog.compose-dialog .to .cc-bcc .show-bcc{margin-left:8px}md-dialog.compose-dialog .attachment-list{font-size:13px}md-dialog.compose-dialog .attachment-list .attachment{background-color:rgba(0,0,0,.08);border:1px solid rgba(0,0,0,.16);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .attachment-list .attachment .filename{font-weight:500}md-dialog.compose-dialog .attachment-list .attachment .md-button{margin:0}md-dialog.compose-dialog .attachment-list .attachment:last-child{margin-bottom:0}md-dialog.compose-dialog .error-list{font-size:13px}md-dialog.compose-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .error-list .error .message{font-weight:500}md-dialog.compose-dialog .error-list .error .md-button{margin:0}md-dialog.compose-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog .emojionearea{max-width:700px;min-height:300px}md-dialog.compose-dialog md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dashboard-general>.center>.header{height:160px;min-height:160px;max-height:160px;padding-bottom:0}#dashboard-general>.center>.header .selected-general{background:rgba(0,0,0,.12);color:#fff;padding:8px 16px;height:40px;line-height:24px;font-size:16px}#dashboard-general>.center>.header .general-selector{margin-left:1px;border-radius:0;background:rgba(0,0,0,.12)}#dashboard-general>.center>.header .general-selector md-icon{color:#fff}#dashboard-general>.center>.content{background:0 0;padding:0}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}#dashboard-general>.center>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-content-wrapper md-tab-content{padding:12px}#dashboard-general>.sidenav{width:330px;min-width:330px;max-width:330px;padding:0;z-index:51;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#dashboard-general>.sidenav.md-locked-open{width:250px;min-width:250px;max-width:250px;z-index:2;box-shadow:none;background:#eee}#dashboard-general .dashboard-container{padding:24px;margin-bottom:24px}#dashboard-general .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxAccount .header{height:76px;min-height:76px;max-height:76px}#fax-faxAccount .header .goto-faxAccounts-button{margin-right:16px}#fax-faxAccount .header .faxAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxAccount .header .faxAccount-image img{height:100%;width:auto;max-width:none}#fax-faxAccount .header .subtitle{margin:6px 0 0 0}#fax-faxAccount .faxAccount-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxAccount .faxAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxAccount .faxAccount-detail-form-container .handle{cursor:move}#fax-faxAccount .faxAccount-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader{position:relative}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader.dropping .drop-text{display:flex}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .upload-button{margin-bottom:16px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image .media{max-height:100%}#fax-faxAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#faxAccounts{position:relative}#faxAccounts>.header{height:76px;min-height:76px;max-height:76px}#faxAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#faxAccounts>.header .logo .logo-text{font-size:24px}#faxAccounts>.header md-icon{color:#fff}#faxAccounts>.header .search-input-wrapper{position:relative}#faxAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxAccounts>.header.selected-bar .close-button-wrapper{width:244px}#faxAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxAccounts #add-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#faxAccounts #upload-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.faxQueue-dialog{max-width:720px;width:720px}md-dialog.faxQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.faxQueue-dialog md-toolbar .title{font-size:17px}md-dialog.faxQueue-dialog md-input-container textarea{min-height:150px}md-dialog.faxQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxQueue-dialog .error-list{font-size:13px}md-dialog.faxQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxQueue-dialog .error-list .error .message{font-weight:500}md-dialog.faxQueue-dialog .error-list .error .md-button{margin:0}md-dialog.faxQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxQueue .header{height:76px;min-height:76px;max-height:76px}#fax-faxQueue .header .goto-faxQueues-button{margin-right:16px}#fax-faxQueue .header .faxQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxQueue .header .faxQueue-image img{height:100%;width:auto;max-width:none}#fax-faxQueue .header .subtitle{margin:6px 0 0 0}#fax-faxQueue .faxQueue-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxQueue .faxQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxQueue .faxQueue-detail-form-container .handle{cursor:move}#fax-faxQueue .faxQueue-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader{position:relative}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader.dropping .drop-text{display:flex}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .upload-button{margin-bottom:16px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image .media{max-height:100%}#fax-faxQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#faxQueues{position:relative}#faxQueues>.header{height:76px;min-height:76px;max-height:76px}#faxQueues>.header .logo .logo-icon{margin:0 16px 0 0}#faxQueues>.header .logo .logo-text{font-size:24px}#faxQueues>.header md-icon{color:#fff}#faxQueues>.header .search-input-wrapper{position:relative}#faxQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxQueues>.header.selected-bar .close-button-wrapper{width:244px}#faxQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxQueues #add-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#faxQueues #upload-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#profile .about-tab{max-width:1200px}#profile .about-tab .about{padding:8px}#profile .about-tab .about .general .location md-icon{line-height:13px!important}#profile .about-tab .about .work .job .company{padding:0 16px 0 0;font-weight:500}#profile .about-tab .about .work .job .date{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar{padding:8px 8px 8px 32px}#profile .about-tab .about-sidebar .friends .content .friend{padding:4px}#profile .about-tab .about-sidebar .groups .content .group{margin-bottom:16px}#profile .about-tab .about-sidebar .groups .content .group:last-child{margin-bottom:0}#profile .about-tab .about-sidebar .groups .content .group .logo{border:1px solid rgba(0,0,0,.12);margin-right:16px}#profile .about-tab .about-sidebar .groups .content .group .name{font-weight:500;font-size:15px}#profile .about-tab .about-sidebar .groups .content .group .category,#profile .about-tab .about-sidebar .groups .content .group .members{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar .groups .content .group .members{margin-top:16px}@media screen and (max-width:960px){#profile .about-tab .about-sidebar{padding:8px}}#maintenance{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#maintenance #maintenance-form-wrapper{flex:1 0 auto;padding:32px}#maintenance #maintenance-form-wrapper #maintenance-form{max-width:384px;padding:32px;background:#fff;text-align:center}#maintenance #maintenance-form-wrapper #maintenance-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#maintenance #maintenance-form-wrapper #maintenance-form .title{font-size:17px;margin-top:16px}#maintenance #maintenance-form-wrapper #maintenance-form .subtitle{margin:16px 0;max-width:300px;color:rgba(0,0,0,.54);font-size:15px}@media screen and (max-width:600px){#maintenance #maintenance-form-wrapper{padding:16px}#maintenance #maintenance-form-wrapper #maintenance-form{padding:24px;width:100%}}md-dialog.deskAccount-dialog{max-width:720px;width:720px}md-dialog.deskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-dialog .error-list{font-size:13px}md-dialog.deskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#deskAccounts{position:relative}#deskAccounts>.header{height:76px;min-height:76px;max-height:76px}#deskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#deskAccounts>.header .logo .logo-text{font-size:24px}#deskAccounts>.header md-icon{color:#fff}#deskAccounts>.header .search-input-wrapper{position:relative}#deskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#deskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#deskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#deskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#deskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#deskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#deskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#deskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#deskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#deskAccounts #add-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#deskAccounts #upload-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.deskConfiguration-dialog{max-width:720px;width:720px}md-dialog.deskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.deskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.deskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.deskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskConfiguration-dialog .error-list{font-size:13px}md-dialog.deskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.deskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.deskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.deskAccount-item-dialog{max-width:720px;width:720px}md-dialog.deskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-item-dialog .error-list{font-size:13px}md-dialog.deskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-deskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-deskAccount .header .goto-deskAccounts-button{margin-right:16px}#integrations-deskAccount .header .deskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-deskAccount .header .deskAccount-image img{height:100%;width:auto;max-width:none}#integrations-deskAccount .header .subtitle{margin:6px 0 0 0}#integrations-deskAccount .deskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-deskAccount .deskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-deskAccount .deskAccount-detail-form-container .handle{cursor:move}#integrations-deskAccount .deskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader{position:relative}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image .media{max-height:100%}#integrations-deskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-deskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.dynamics365Account-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dynamics365Accounts{position:relative}#dynamics365Accounts>.header{height:76px;min-height:76px;max-height:76px}#dynamics365Accounts>.header .logo .logo-icon{margin:0 16px 0 0}#dynamics365Accounts>.header .logo .logo-text{font-size:24px}#dynamics365Accounts>.header md-icon{color:#fff}#dynamics365Accounts>.header .search-input-wrapper{position:relative}#dynamics365Accounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dynamics365Accounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dynamics365Accounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dynamics365Accounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dynamics365Accounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dynamics365Accounts>.header.selected-bar .close-button-wrapper{width:244px}#dynamics365Accounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dynamics365Accounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dynamics365Accounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dynamics365Accounts #add-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}#dynamics365Accounts #upload-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dynamics365Configuration-dialog{max-width:720px;width:720px}md-dialog.dynamics365Configuration-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Configuration-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Configuration-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Configuration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Configuration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Configuration-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Configuration-dialog .error-list{font-size:13px}md-dialog.dynamics365Configuration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Configuration-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Configuration-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Configuration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Configuration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.dynamics365Account-item-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-item-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-item-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-item-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-item-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-item-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-item-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-dynamics365Account .header{height:76px;min-height:76px;max-height:76px}#integrations-dynamics365Account .header .goto-dynamics365Accounts-button{margin-right:16px}#integrations-dynamics365Account .header .dynamics365Account-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-dynamics365Account .header .dynamics365Account-image img{height:100%;width:auto;max-width:none}#integrations-dynamics365Account .header .subtitle{margin:6px 0 0 0}#integrations-dynamics365Account .dynamics365Account-detail-form-container{padding:24px;margin-bottom:24px}#integrations-dynamics365Account .dynamics365Account-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-dynamics365Account .dynamics365Account-detail-form-container .handle{cursor:move}#integrations-dynamics365Account .dynamics365Account-detail-form-container md-input-container md-switch{margin:0!important}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader{position:relative}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader.dropping .drop-text{display:flex}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .upload-button{margin-bottom:16px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image .media{max-height:100%}#integrations-dynamics365Account md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-dynamics365Account md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.freshdeskAccount-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshdeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskConfiguration-dialog .error-list{font-size:13px}md-dialog.freshdeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-item-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshdeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshdeskAccount .header .goto-freshdeskAccounts-button{margin-right:16px}#integrations-freshdeskAccount .header .freshdeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshdeskAccount .header .freshdeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshdeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .handle{cursor:move}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader{position:relative}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image .media{max-height:100%}#integrations-freshdeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshdeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshdeskAccounts{position:relative}#freshdeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshdeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshdeskAccounts>.header .logo .logo-text{font-size:24px}#freshdeskAccounts>.header md-icon{color:#fff}#freshdeskAccounts>.header .search-input-wrapper{position:relative}#freshdeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshdeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshdeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshdeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshdeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshdeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshdeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshdeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshdeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshdeskAccounts #add-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshdeskAccounts #upload-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.freshsalesAccount-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshsalesConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesConfiguration-dialog .error-list{font-size:13px}md-dialog.freshsalesConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-item-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshsalesAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshsalesAccount .header .goto-freshsalesAccounts-button{margin-right:16px}#integrations-freshsalesAccount .header .freshsalesAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshsalesAccount .header .freshsalesAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshsalesAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .handle{cursor:move}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader{position:relative}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image .media{max-height:100%}#integrations-freshsalesAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshsalesAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshsalesAccounts{position:relative}#freshsalesAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshsalesAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshsalesAccounts>.header .logo .logo-text{font-size:24px}#freshsalesAccounts>.header md-icon{color:#fff}#freshsalesAccounts>.header .search-input-wrapper{position:relative}#freshsalesAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshsalesAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshsalesAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshsalesAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshsalesAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshsalesAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshsalesAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshsalesAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshsalesAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshsalesAccounts #add-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshsalesAccounts #upload-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.salesforceAccount-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceConfiguration-dialog{max-width:720px;width:720px}md-dialog.salesforceConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceConfiguration-dialog .error-list{font-size:13px}md-dialog.salesforceConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceAccount-item-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-item-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-salesforceAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-salesforceAccount .header .goto-salesforceAccounts-button{margin-right:16px}#integrations-salesforceAccount .header .salesforceAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-salesforceAccount .header .salesforceAccount-image img{height:100%;width:auto;max-width:none}#integrations-salesforceAccount .header .subtitle{margin:6px 0 0 0}#integrations-salesforceAccount .salesforceAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-salesforceAccount .salesforceAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-salesforceAccount .salesforceAccount-detail-form-container .handle{cursor:move}#integrations-salesforceAccount .salesforceAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader{position:relative}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader.dropping .drop-text{display:flex}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image .media{max-height:100%}#integrations-salesforceAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-salesforceAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#salesforceAccounts{position:relative}#salesforceAccounts>.header{height:76px;min-height:76px;max-height:76px}#salesforceAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#salesforceAccounts>.header .logo .logo-text{font-size:24px}#salesforceAccounts>.header md-icon{color:#fff}#salesforceAccounts>.header .search-input-wrapper{position:relative}#salesforceAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#salesforceAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#salesforceAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#salesforceAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#salesforceAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#salesforceAccounts>.header.selected-bar .close-button-wrapper{width:244px}#salesforceAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#salesforceAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#salesforceAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#salesforceAccounts #add-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#salesforceAccounts #upload-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.servicenowAccount-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowConfiguration-dialog{max-width:720px;width:720px}md-dialog.servicenowConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowConfiguration-dialog .error-list{font-size:13px}md-dialog.servicenowConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowAccount-item-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-item-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-servicenowAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-servicenowAccount .header .goto-servicenowAccounts-button{margin-right:16px}#integrations-servicenowAccount .header .servicenowAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-servicenowAccount .header .servicenowAccount-image img{height:100%;width:auto;max-width:none}#integrations-servicenowAccount .header .subtitle{margin:6px 0 0 0}#integrations-servicenowAccount .servicenowAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-servicenowAccount .servicenowAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-servicenowAccount .servicenowAccount-detail-form-container .handle{cursor:move}#integrations-servicenowAccount .servicenowAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader{position:relative}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader.dropping .drop-text{display:flex}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image .media{max-height:100%}#integrations-servicenowAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-servicenowAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#servicenowAccounts{position:relative}#servicenowAccounts>.header{height:76px;min-height:76px;max-height:76px}#servicenowAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#servicenowAccounts>.header .logo .logo-text{font-size:24px}#servicenowAccounts>.header md-icon{color:#fff}#servicenowAccounts>.header .search-input-wrapper{position:relative}#servicenowAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#servicenowAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#servicenowAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#servicenowAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#servicenowAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#servicenowAccounts>.header.selected-bar .close-button-wrapper{width:244px}#servicenowAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#servicenowAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#servicenowAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#servicenowAccounts #add-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#servicenowAccounts #upload-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sugarcrmAccount-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmConfiguration-dialog{max-width:720px;width:720px}md-dialog.sugarcrmConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmConfiguration-dialog .error-list{font-size:13px}md-dialog.sugarcrmConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmAccount-item-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-item-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-sugarcrmAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-sugarcrmAccount .header .goto-sugarcrmAccounts-button{margin-right:16px}#integrations-sugarcrmAccount .header .sugarcrmAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-sugarcrmAccount .header .sugarcrmAccount-image img{height:100%;width:auto;max-width:none}#integrations-sugarcrmAccount .header .subtitle{margin:6px 0 0 0}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .handle{cursor:move}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader{position:relative}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader.dropping .drop-text{display:flex}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image .media{max-height:100%}#integrations-sugarcrmAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-sugarcrmAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#sugarcrmAccounts{position:relative}#sugarcrmAccounts>.header{height:76px;min-height:76px;max-height:76px}#sugarcrmAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#sugarcrmAccounts>.header .logo .logo-text{font-size:24px}#sugarcrmAccounts>.header md-icon{color:#fff}#sugarcrmAccounts>.header .search-input-wrapper{position:relative}#sugarcrmAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sugarcrmAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sugarcrmAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sugarcrmAccounts>.header.selected-bar .close-button-wrapper{width:244px}#sugarcrmAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sugarcrmAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sugarcrmAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sugarcrmAccounts #add-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#sugarcrmAccounts #upload-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.vtigerAccount-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerConfiguration-dialog{max-width:720px;width:720px}md-dialog.vtigerConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerConfiguration-dialog .error-list{font-size:13px}md-dialog.vtigerConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerAccount-item-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-item-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-vtigerAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-vtigerAccount .header .goto-vtigerAccounts-button{margin-right:16px}#integrations-vtigerAccount .header .vtigerAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-vtigerAccount .header .vtigerAccount-image img{height:100%;width:auto;max-width:none}#integrations-vtigerAccount .header .subtitle{margin:6px 0 0 0}#integrations-vtigerAccount .vtigerAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-vtigerAccount .vtigerAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-vtigerAccount .vtigerAccount-detail-form-container .handle{cursor:move}#integrations-vtigerAccount .vtigerAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader{position:relative}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader.dropping .drop-text{display:flex}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image .media{max-height:100%}#integrations-vtigerAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-vtigerAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#vtigerAccounts{position:relative}#vtigerAccounts>.header{height:76px;min-height:76px;max-height:76px}#vtigerAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#vtigerAccounts>.header .logo .logo-text{font-size:24px}#vtigerAccounts>.header md-icon{color:#fff}#vtigerAccounts>.header .search-input-wrapper{position:relative}#vtigerAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#vtigerAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#vtigerAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#vtigerAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#vtigerAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#vtigerAccounts>.header.selected-bar .close-button-wrapper{width:244px}#vtigerAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#vtigerAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#vtigerAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#vtigerAccounts #add-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#vtigerAccounts #upload-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zendeskAccount-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zendeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-item-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zendeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zendeskAccount .header .goto-zendeskAccounts-button{margin-right:16px}#integrations-zendeskAccount .header .zendeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zendeskAccount .header .zendeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-zendeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-zendeskAccount .zendeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zendeskAccount .zendeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zendeskAccount .zendeskAccount-detail-form-container .handle{cursor:move}#integrations-zendeskAccount .zendeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader{position:relative}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image .media{max-height:100%}#integrations-zendeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zendeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.zendeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.zendeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskConfiguration-dialog .error-list{font-size:13px}md-dialog.zendeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#zendeskAccounts{position:relative}#zendeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#zendeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zendeskAccounts>.header .logo .logo-text{font-size:24px}#zendeskAccounts>.header md-icon{color:#fff}#zendeskAccounts>.header .search-input-wrapper{position:relative}#zendeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zendeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zendeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zendeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zendeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zendeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zendeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zendeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zendeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zendeskAccounts #add-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zendeskAccounts #upload-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zohoAccount-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-dialog .error-list{font-size:13px}md-dialog.zohoAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoConfiguration-dialog{max-width:720px;width:720px}md-dialog.zohoConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zohoConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zohoConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoConfiguration-dialog .error-list{font-size:13px}md-dialog.zohoConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zohoConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zohoConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoAccount-item-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-item-dialog .error-list{font-size:13px}md-dialog.zohoAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zohoAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zohoAccount .header .goto-zohoAccounts-button{margin-right:16px}#integrations-zohoAccount .header .zohoAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zohoAccount .header .zohoAccount-image img{height:100%;width:auto;max-width:none}#integrations-zohoAccount .header .subtitle{margin:6px 0 0 0}#integrations-zohoAccount .zohoAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zohoAccount .zohoAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zohoAccount .zohoAccount-detail-form-container .handle{cursor:move}#integrations-zohoAccount .zohoAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader{position:relative}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image .media{max-height:100%}#integrations-zohoAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zohoAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#zohoAccounts{position:relative}#zohoAccounts>.header{height:76px;min-height:76px;max-height:76px}#zohoAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zohoAccounts>.header .logo .logo-text{font-size:24px}#zohoAccounts>.header md-icon{color:#fff}#zohoAccounts>.header .search-input-wrapper{position:relative}#zohoAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zohoAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zohoAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zohoAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zohoAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zohoAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zohoAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zohoAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zohoAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zohoAccounts #add-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zohoAccounts #upload-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.project-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.session-dialog{max-width:720px;width:720px}md-dialog.session-dialog md-dialog-content{display:block;position:relative}md-dialog.session-dialog md-toolbar .title{font-size:17px}md-dialog.session-dialog md-input-container textarea{min-height:150px}md-dialog.session-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.session-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.session-dialog .date-container{padding:16px 0 24px 0}md-dialog.session-dialog .error-list{font-size:13px}md-dialog.session-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.session-dialog .error-list .error .message{font-weight:500}md-dialog.session-dialog .error-list .error .md-button{margin:0}md-dialog.session-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.session-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#jscripty-project .header{height:76px;min-height:76px;max-height:76px}#jscripty-project .header .goto-projects-button{margin-right:16px}#jscripty-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#jscripty-project .header .project-image img{height:100%;width:auto;max-width:none}#jscripty-project .header .subtitle{margin:6px 0 0 0}#jscripty-project .project-detail-form-container{padding:24px;margin-bottom:24px}#jscripty-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#jscripty-project .project-detail-form-container .handle{cursor:move}#jscripty-project .project-detail-form-container md-input-container md-switch{margin:0!important}#jscripty-project .project-detail-form-container #project-image-uploader{position:relative}#jscripty-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#jscripty-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#jscripty-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#jscripty-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#jscripty-project md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#jscripty-project md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container.font-size-12 td.md-cell{font-size:12px!important}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}#projects #upload-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.mailCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.mailCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.mailCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.mailCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailCannedAnswer-dialog .error-list{font-size:13px}md-dialog.mailCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.mailCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.mailCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailAccount .header{height:76px;min-height:76px;max-height:76px}#mail-mailAccount .header .goto-mailAccounts-button{margin-right:16px}#mail-mailAccount .header .mailAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailAccount .header .mailAccount-image img{height:100%;width:auto;max-width:none}#mail-mailAccount .header .subtitle{margin:6px 0 0 0}#mail-mailAccount .mailAccount-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailAccount .mailAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailAccount .mailAccount-detail-form-container .handle{cursor:move}#mail-mailAccount .mailAccount-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader{position:relative}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader.dropping .drop-text{display:flex}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .upload-button{margin-bottom:16px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image .media{max-height:100%}#mail-mailAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#mailAccounts{position:relative}#mailAccounts>.header{height:76px;min-height:76px;max-height:76px}#mailAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#mailAccounts>.header .logo .logo-text{font-size:24px}#mailAccounts>.header md-icon{color:#fff}#mailAccounts>.header .search-input-wrapper{position:relative}#mailAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailAccounts>.header.selected-bar .close-button-wrapper{width:244px}#mailAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailAccounts #add-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#mailAccounts #upload-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailQueue-dialog{max-width:720px;width:720px}md-dialog.mailQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.mailQueue-dialog md-toolbar .title{font-size:17px}md-dialog.mailQueue-dialog md-input-container textarea{min-height:150px}md-dialog.mailQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailQueue-dialog .error-list{font-size:13px}md-dialog.mailQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailQueue-dialog .error-list .error .message{font-weight:500}md-dialog.mailQueue-dialog .error-list .error .md-button{margin:0}md-dialog.mailQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailQueue .header{height:76px;min-height:76px;max-height:76px}#mail-mailQueue .header .goto-mailQueues-button{margin-right:16px}#mail-mailQueue .header .mailQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailQueue .header .mailQueue-image img{height:100%;width:auto;max-width:none}#mail-mailQueue .header .subtitle{margin:6px 0 0 0}#mail-mailQueue .mailQueue-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailQueue .mailQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailQueue .mailQueue-detail-form-container .handle{cursor:move}#mail-mailQueue .mailQueue-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader{position:relative}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader.dropping .drop-text{display:flex}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .upload-button{margin-bottom:16px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image .media{max-height:100%}#mail-mailQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#mailQueues{position:relative}#mailQueues>.header{height:76px;min-height:76px;max-height:76px}#mailQueues>.header .logo .logo-icon{margin:0 16px 0 0}#mailQueues>.header .logo .logo-text{font-size:24px}#mailQueues>.header md-icon{color:#fff}#mailQueues>.header .search-input-wrapper{position:relative}#mailQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailQueues>.header.selected-bar .close-button-wrapper{width:244px}#mailQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailQueues #add-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#mailQueues #upload-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailSubstatus-dialog{max-width:720px;width:720px}md-dialog.mailSubstatus-dialog md-dialog-content{display:block;position:relative}md-dialog.mailSubstatus-dialog md-toolbar .title{font-size:17px}md-dialog.mailSubstatus-dialog md-input-container textarea{min-height:150px}md-dialog.mailSubstatus-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailSubstatus-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailSubstatus-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailSubstatus-dialog .error-list{font-size:13px}md-dialog.mailSubstatus-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailSubstatus-dialog .error-list .error .message{font-weight:500}md-dialog.mailSubstatus-dialog .error-list .error .md-button{margin:0}md-dialog.mailSubstatus-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailSubstatus-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mailSubtatuses{position:relative}#mailSubtatuses>.header{height:76px;min-height:76px;max-height:76px}#mailSubtatuses>.header .logo .logo-icon{margin:0 16px 0 0}#mailSubtatuses>.header .logo .logo-text{font-size:24px}#mailSubtatuses>.header md-icon{color:#fff}#mailSubtatuses>.header .search-input-wrapper{position:relative}#mailSubtatuses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailSubtatuses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailSubtatuses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailSubtatuses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailSubtatuses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailSubtatuses>.header.selected-bar .close-button-wrapper{width:244px}#mailSubtatuses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailSubtatuses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailSubtatuses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailSubtatuses #add-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#mailSubtatuses #upload-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.plugin-dialog{max-width:720px;width:720px}md-dialog.plugin-dialog md-dialog-content{display:block;position:relative}md-dialog.plugin-dialog md-toolbar .title{font-size:17px}md-dialog.plugin-dialog md-input-container textarea{min-height:150px}md-dialog.plugin-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.plugin-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.plugin-dialog .date-container{padding:16px 0 24px 0}md-dialog.plugin-dialog .error-list{font-size:13px}md-dialog.plugin-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.plugin-dialog .error-list .error .message{font-weight:500}md-dialog.plugin-dialog .error-list .error .md-button{margin:0}md-dialog.plugin-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.plugin-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#marketplace-plugin .header{height:76px;min-height:76px;max-height:76px}#marketplace-plugin .header .goto-plugins-button{margin-right:16px}#marketplace-plugin .header .plugin-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#marketplace-plugin .header .plugin-image img{height:100%;width:auto;max-width:none}#marketplace-plugin .header .subtitle{margin:6px 0 0 0}#marketplace-plugin .plugin-detail-form-container{padding:24px;margin-bottom:24px}#marketplace-plugin .plugin-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#marketplace-plugin .plugin-detail-form-container .handle{cursor:move}#marketplace-plugin .plugin-detail-form-container md-input-container md-switch{margin:0!important}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader{position:relative}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader.dropping .drop-text{display:flex}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .upload-button{margin-bottom:16px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image .media{max-height:100%}#marketplace-plugin md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#marketplace-plugin md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container.font-size-12 td.md-cell{font-size:12px!important}#plugins{position:relative}#plugins>.header{height:76px;min-height:76px;max-height:76px}#plugins>.header .logo .logo-icon{margin:0 16px 0 0}#plugins>.header .logo .logo-text{font-size:24px}#plugins>.header md-icon{color:#fff}#plugins>.header .search-input-wrapper{position:relative}#plugins>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#plugins>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#plugins>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#plugins>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#plugins>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#plugins>.header.selected-bar .close-button-wrapper{width:244px}#plugins>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#plugins>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#plugins>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#plugins #add-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}#plugins #upload-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .plugin-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .plugin-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.ivrCampaign-dialog{max-width:720px;width:720px}md-dialog.ivrCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.ivrCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.ivrCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.ivrCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.ivrCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.ivrCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.ivrCampaign-dialog .error-list{font-size:13px}md-dialog.ivrCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.ivrCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.ivrCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.ivrCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.ivrCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-ivrCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-ivrCampaign .header .goto-ivrCampaigns-button{margin-right:16px}#motiondialer-ivrCampaign .header .ivrCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-ivrCampaign .header .ivrCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-ivrCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .handle{cursor:move}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader{position:relative}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image .media{max-height:100%}#motiondialer-ivrCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-ivrCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#ivrCampaigns{position:relative}#ivrCampaigns>.header{height:76px;min-height:76px;max-height:76px}#ivrCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#ivrCampaigns>.header .logo .logo-text{font-size:24px}#ivrCampaigns>.header md-icon{color:#fff}#ivrCampaigns>.header .search-input-wrapper{position:relative}#ivrCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#ivrCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#ivrCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#ivrCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#ivrCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#ivrCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#ivrCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#ivrCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#ivrCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#ivrCampaigns #add-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#ivrCampaigns #upload-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.queueCampaign-dialog{max-width:720px;width:720px}md-dialog.queueCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.queueCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.queueCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.queueCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.queueCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.queueCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.queueCampaign-dialog .error-list{font-size:13px}md-dialog.queueCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.queueCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.queueCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.queueCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.queueCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-queueCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-queueCampaign .header .goto-queueCampaigns-button{margin-right:16px}#motiondialer-queueCampaign .header .queueCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-queueCampaign .header .queueCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-queueCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-queueCampaign .queueCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-queueCampaign .queueCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-queueCampaign .queueCampaign-detail-form-container .handle{cursor:move}#motiondialer-queueCampaign .queueCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader{position:relative}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image .media{max-height:100%}#motiondialer-queueCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-queueCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#queueCampaigns{position:relative}#queueCampaigns>.header{height:76px;min-height:76px;max-height:76px}#queueCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#queueCampaigns>.header .logo .logo-text{font-size:24px}#queueCampaigns>.header md-icon{color:#fff}#queueCampaigns>.header .search-input-wrapper{position:relative}#queueCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#queueCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#queueCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#queueCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#queueCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#queueCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#queueCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#queueCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#queueCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#queueCampaigns #add-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#queueCampaigns #upload-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.predictive-dialog{max-width:720px;width:720px}md-dialog.predictive-dialog md-dialog-content{display:block;position:relative}md-dialog.predictive-dialog md-toolbar .title{font-size:17px}md-dialog.predictive-dialog md-input-container textarea{min-height:150px}md-dialog.predictive-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.predictive-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.predictive-dialog .date-container{padding:16px 0 24px 0}md-dialog.predictive-dialog .error-list{font-size:13px}md-dialog.predictive-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.predictive-dialog .error-list .error .message{font-weight:500}md-dialog.predictive-dialog .error-list .error .md-button{margin:0}md-dialog.predictive-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.predictive-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.openchannelCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelCannedAnswer-dialog .error-list{font-size:13px}md-dialog.openchannelCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelAccount .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelAccount .header .goto-openchannelAccounts-button{margin-right:16px}#openchannel-openchannelAccount .header .openchannelAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelAccount .header .openchannelAccount-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelAccount .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelAccount .openchannelAccount-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .handle{cursor:move}#openchannel-openchannelAccount .openchannelAccount-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader{position:relative}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image .media{max-height:100%}#openchannel-openchannelAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#openchannelAccounts{position:relative}#openchannelAccounts>.header{height:76px;min-height:76px;max-height:76px}#openchannelAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelAccounts>.header .logo .logo-text{font-size:24px}#openchannelAccounts>.header md-icon{color:#fff}#openchannelAccounts>.header .search-input-wrapper{position:relative}#openchannelAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelAccounts>.header.selected-bar .close-button-wrapper{width:244px}#openchannelAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelAccounts #add-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelAccounts #upload-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.openchannelQueue-dialog{max-width:720px;width:720px}md-dialog.openchannelQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelQueue-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelQueue-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelQueue-dialog .error-list{font-size:13px}md-dialog.openchannelQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelQueue-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelQueue-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelQueue .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelQueue .header .goto-openchannelQueues-button{margin-right:16px}#openchannel-openchannelQueue .header .openchannelQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelQueue .header .openchannelQueue-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelQueue .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelQueue .openchannelQueue-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .handle{cursor:move}#openchannel-openchannelQueue .openchannelQueue-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader{position:relative}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image .media{max-height:100%}#openchannel-openchannelQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#openchannelQueues{position:relative}#openchannelQueues>.header{height:76px;min-height:76px;max-height:76px}#openchannelQueues>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelQueues>.header .logo .logo-text{font-size:24px}#openchannelQueues>.header md-icon{color:#fff}#openchannelQueues>.header .search-input-wrapper{position:relative}#openchannelQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelQueues>.header.selected-bar .close-button-wrapper{width:244px}#openchannelQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelQueues #add-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelQueues #upload-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#plugin .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#cloudProviders{position:relative}#cloudProviders>.header{height:76px;min-height:76px;max-height:76px}#cloudProviders>.header .logo .logo-icon{margin:0 16px 0 0}#cloudProviders>.header .logo .logo-text{font-size:24px}#cloudProviders>.header md-icon{color:#fff}#cloudProviders>.header .search-input-wrapper{position:relative}#cloudProviders>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cloudProviders>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cloudProviders>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cloudProviders>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cloudProviders>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cloudProviders>.header.selected-bar .close-button-wrapper{width:244px}#cloudProviders>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cloudProviders>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cloudProviders>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cloudProviders #add-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}#cloudProviders #upload-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cloudProvider-dialog{max-width:720px;width:720px}md-dialog.cloudProvider-dialog md-dialog-content{display:block;position:relative}md-dialog.cloudProvider-dialog md-toolbar .title{font-size:17px}md-dialog.cloudProvider-dialog md-input-container textarea{min-height:150px}md-dialog.cloudProvider-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cloudProvider-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cloudProvider-dialog .date-container{padding:16px 0 24px 0}md-dialog.cloudProvider-dialog .error-list{font-size:13px}md-dialog.cloudProvider-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cloudProvider-dialog .error-list .error .message{font-weight:500}md-dialog.cloudProvider-dialog .error-list .error .md-button{margin:0}md-dialog.cloudProvider-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cloudProvider-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customization-dialog{max-width:720px;width:720px}md-dialog.customization-dialog md-dialog-content{display:block;position:relative}md-dialog.customization-dialog md-toolbar .title{font-size:17px}md-dialog.customization-dialog md-input-container textarea{min-height:150px}md-dialog.customization-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customization-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customization-dialog .date-container{padding:16px 0 24px 0}md-dialog.customization-dialog .error-list{font-size:13px}md-dialog.customization-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customization-dialog .error-list .error .message{font-weight:500}md-dialog.customization-dialog .error-list .error .md-button{margin:0}md-dialog.customization-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customization-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customizations{position:relative}#customizations>.header{height:76px;min-height:76px;max-height:76px}#customizations>.header .logo .logo-icon{margin:0 16px 0 0}#customizations>.header .logo .logo-text{font-size:24px}#customizations>.header md-icon{color:#fff}#customizations>.header .search-input-wrapper{position:relative}#customizations>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customizations>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customizations>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customizations>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customizations>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customizations>.header.selected-bar .close-button-wrapper{width:244px}#customizations>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customizations>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customizations>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customizations>.content .customization-detail-form-container{padding:24px;margin-bottom:24px}#customizations>.content .customization-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#customizations>.content .customization-detail-form-container .handle{cursor:move}#customizations>.content .customization-detail-form-container md-input-container md-switch{margin:0!important}#customizations>.content .customization-detail-form-container #customization-image-uploader{position:relative}#customizations>.content .customization-detail-form-container #customization-image-uploader.dropping .drop-text{display:flex}#customizations>.content .customization-detail-form-container #customization-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#customizations>.content .customization-detail-form-container #customization-image-uploader .upload-button{margin-bottom:16px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image .media{max-height:100%}#customizations #add-customization-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.general-dialog{max-width:720px;width:720px}md-dialog.general-dialog md-dialog-content{display:block;position:relative}md-dialog.general-dialog md-toolbar .title{font-size:17px}md-dialog.general-dialog md-input-container textarea{min-height:150px}md-dialog.general-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.general-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.general-dialog .date-container{padding:16px 0 24px 0}md-dialog.general-dialog .error-list{font-size:13px}md-dialog.general-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.general-dialog .error-list .error .message{font-weight:500}md-dialog.general-dialog .error-list .error .md-button{margin:0}md-dialog.general-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.general-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#generals{position:relative}#generals>.header{height:76px;min-height:76px;max-height:76px}#generals>.header .logo .logo-icon{margin:0 16px 0 0}#generals>.header .logo .logo-text{font-size:24px}#generals>.header md-icon{color:#fff}#generals>.header .search-input-wrapper{position:relative}#generals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#generals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#generals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#generals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#generals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#generals>.header.selected-bar .close-button-wrapper{width:244px}#generals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#generals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#generals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#generals>.content .general-detail-form-container{padding:24px;margin-bottom:24px}#generals>.content .general-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#generals>.content .general-detail-form-container .handle{cursor:move}#generals>.content .general-detail-form-container md-input-container md-switch{margin:0!important}#generals>.content .general-detail-form-container #general-image-uploader{position:relative}#generals>.content .general-detail-form-container #general-image-uploader.dropping .drop-text{display:flex}#generals>.content .general-detail-form-container #general-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#generals>.content .general-detail-form-container #general-image-uploader .upload-button{margin-bottom:16px}#generals>.content .general-detail-form-container #general-image-uploader .general-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#generals>.content .general-detail-form-container #general-image-uploader .general-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#generals>.content .general-detail-form-container #general-image-uploader .general-image .media{max-height:100%}#generals #add-general-button{position:fixed;bottom:8px;right:8px;padding:0}#license{position:relative}#license .blink{animation:blinker 2s linear infinite}#license>.header{height:76px;min-height:76px;max-height:76px}#license>.header .logo .logo-icon{margin:0 16px 0 0}#license>.header .logo .logo-text{font-size:24px}#license>.header md-icon{color:#fff}#license>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#license>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#license>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#license>.content .badge{position:absolute;top:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}md-dialog.request-dialog{max-width:720px;width:720px}md-dialog.request-dialog md-dialog-content{display:block;position:relative}md-dialog.request-dialog md-toolbar .title{font-size:17px}md-dialog.request-dialog md-input-container textarea{min-height:150px}md-dialog.request-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.request-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.request-dialog .date-container{padding:16px 0 24px 0}md-dialog.request-dialog .error-list{font-size:13px}md-dialog.request-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.request-dialog .error-list .error .message{font-weight:500}md-dialog.request-dialog .error-list .error .md-button{margin:0}md-dialog.request-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.request-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.update-dialog{max-width:720px;width:720px}md-dialog.update-dialog md-dialog-content{display:block;position:relative}md-dialog.update-dialog md-toolbar .title{font-size:17px}md-dialog.update-dialog md-input-container textarea{min-height:60px}md-dialog.update-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.update-dialog .error-list{font-size:13px}md-dialog.update-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.update-dialog .error-list .error .message{font-weight:500}md-dialog.update-dialog .error-list .error .md-button{margin:0}md-dialog.update-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.update-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.network-dialog{max-width:720px;width:720px}md-dialog.network-dialog md-dialog-content{display:block;position:relative}md-dialog.network-dialog md-toolbar .title{font-size:17px}md-dialog.network-dialog md-input-container textarea{min-height:150px}md-dialog.network-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.network-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.network-dialog .date-container{padding:16px 0 24px 0}md-dialog.network-dialog .error-list{font-size:13px}md-dialog.network-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.network-dialog .error-list .error .message{font-weight:500}md-dialog.network-dialog .error-list .error .md-button{margin:0}md-dialog.network-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.network-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#networks{position:relative}#networks>.header{height:76px;min-height:76px;max-height:76px}#networks>.header .logo .logo-icon{margin:0 16px 0 0}#networks>.header .logo .logo-text{font-size:24px}#networks>.header md-icon{color:#fff}#networks>.header .search-input-wrapper{position:relative}#networks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#networks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#networks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#networks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#networks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#networks>.header.selected-bar .close-button-wrapper{width:244px}#networks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#networks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#networks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#networks #add-network-button{position:fixed;bottom:8px;right:8px;padding:0}#networks #upload-network-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.smtp-dialog{max-width:720px;width:720px}md-dialog.smtp-dialog md-dialog-content{display:block;position:relative}md-dialog.smtp-dialog md-toolbar .title{font-size:17px}md-dialog.smtp-dialog md-input-container textarea{min-height:150px}md-dialog.smtp-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smtp-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smtp-dialog .date-container{padding:16px 0 24px 0}md-dialog.smtp-dialog .error-list{font-size:13px}md-dialog.smtp-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smtp-dialog .error-list .error .message{font-weight:500}md-dialog.smtp-dialog .error-list .error .md-button{margin:0}md-dialog.smtp-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smtp-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#smtps{position:relative}#smtps>.header{height:76px;min-height:76px;max-height:76px}#smtps>.header .logo .logo-icon{margin:0 16px 0 0}#smtps>.header .logo .logo-text{font-size:24px}#smtps>.header md-icon{color:#fff}#smtps>.header .search-input-wrapper{position:relative}#smtps>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smtps>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smtps>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smtps>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smtps>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smtps>.header.selected-bar .close-button-wrapper{width:244px}#smtps>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smtps>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smtps>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smtps>.content .smtp-detail-form-container{padding:24px;margin-bottom:24px}#smtps>.content .smtp-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#smtps>.content .smtp-detail-form-container .handle{cursor:move}#smtps>.content .smtp-detail-form-container md-input-container md-switch{margin:0!important}#smtps>.content .smtp-detail-form-container #smtp-image-uploader{position:relative}#smtps>.content .smtp-detail-form-container #smtp-image-uploader.dropping .drop-text{display:flex}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .upload-button{margin-bottom:16px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image .media{max-height:100%}#smtps #add-smtp-button{position:fixed;bottom:8px;right:8px;padding:0}#system>.header{height:76px;min-height:76px;max-height:76px}#system>.header .logo .logo-icon{margin:0 16px 0 0}#system>.header .logo .logo-text{font-size:24px}#system>.header md-icon{color:#fff}#system .system-detail-form-container{padding:24px;margin-bottom:24px}#system .system-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#system .system-detail-form-container .handle{cursor:move}#system .system-detail-form-container md-input-container md-switch{margin:0!important}#system .system-detail-form-container #system-image-uploader{position:relative}#system .system-detail-form-container #system-image-uploader.dropping .drop-text{display:flex}#system .system-detail-form-container #system-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#system .system-detail-form-container #system-image-uploader .upload-button{margin-bottom:16px}#system .system-detail-form-container #system-image-uploader .system-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#system .system-detail-form-container #system-image-uploader .system-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#system .system-detail-form-container #system-image-uploader .system-image .media{max-height:100%}#updates{position:relative}#updates>.header{height:76px;min-height:76px;max-height:76px}#updates>.header .logo .logo-icon{margin:0 16px 0 0}#updates>.header .logo .logo-text{font-size:24px}#updates>.header md-icon{color:#fff}#updates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#updates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#updates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.smsCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.smsCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.smsCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.smsCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsCannedAnswer-dialog .error-list{font-size:13px}md-dialog.smsCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.smsCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.smsCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsAccount .header{height:76px;min-height:76px;max-height:76px}#sms-smsAccount .header .goto-smsAccounts-button{margin-right:16px}#sms-smsAccount .header .smsAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsAccount .header .smsAccount-image img{height:100%;width:auto;max-width:none}#sms-smsAccount .header .subtitle{margin:6px 0 0 0}#sms-smsAccount .smsAccount-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsAccount .smsAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsAccount .smsAccount-detail-form-container .handle{cursor:move}#sms-smsAccount .smsAccount-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader{position:relative}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader.dropping .drop-text{display:flex}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .upload-button{margin-bottom:16px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image .media{max-height:100%}#sms-smsAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#smsAccounts{position:relative}#smsAccounts>.header{height:76px;min-height:76px;max-height:76px}#smsAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#smsAccounts>.header .logo .logo-text{font-size:24px}#smsAccounts>.header md-icon{color:#fff}#smsAccounts>.header .search-input-wrapper{position:relative}#smsAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsAccounts>.header.selected-bar .close-button-wrapper{width:244px}#smsAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsAccounts #add-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#smsAccounts #upload-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.smsQueue-dialog{max-width:720px;width:720px}md-dialog.smsQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.smsQueue-dialog md-toolbar .title{font-size:17px}md-dialog.smsQueue-dialog md-input-container textarea{min-height:150px}md-dialog.smsQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsQueue-dialog .error-list{font-size:13px}md-dialog.smsQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsQueue-dialog .error-list .error .message{font-weight:500}md-dialog.smsQueue-dialog .error-list .error .md-button{margin:0}md-dialog.smsQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsQueue .header{height:76px;min-height:76px;max-height:76px}#sms-smsQueue .header .goto-smsQueues-button{margin-right:16px}#sms-smsQueue .header .smsQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsQueue .header .smsQueue-image img{height:100%;width:auto;max-width:none}#sms-smsQueue .header .subtitle{margin:6px 0 0 0}#sms-smsQueue .smsQueue-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsQueue .smsQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsQueue .smsQueue-detail-form-container .handle{cursor:move}#sms-smsQueue .smsQueue-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader{position:relative}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader.dropping .drop-text{display:flex}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .upload-button{margin-bottom:16px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image .media{max-height:100%}#sms-smsQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#smsQueues{position:relative}#smsQueues>.header{height:76px;min-height:76px;max-height:76px}#smsQueues>.header .logo .logo-icon{margin:0 16px 0 0}#smsQueues>.header .logo .logo-text{font-size:24px}#smsQueues>.header md-icon{color:#fff}#smsQueues>.header .search-input-wrapper{position:relative}#smsQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsQueues>.header.selected-bar .close-button-wrapper{width:244px}#smsQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsQueues #add-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#smsQueues #upload-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#agents{position:relative}#agents>.header{height:76px;min-height:76px;max-height:76px}#agents>.header .logo .logo-icon{margin:0 16px 0 0}#agents>.header .logo .logo-text{font-size:24px}#agents>.header md-icon{color:#fff}#agents>.header .search-input-wrapper{position:relative}#agents>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#agents>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#agents>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#agents>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#agents>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#agents>.header.selected-bar .close-button-wrapper{width:244px}#agents>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#agents>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#agents>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#agents #add-agent-button{position:fixed;bottom:8px;right:8px;padding:0}#agents #upload-agent-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-agent .header{height:76px;min-height:76px;max-height:76px}#staff-agent .header .goto-agents-button{margin-right:16px}#staff-agent .header .agent-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-agent .header .agent-image img{height:100%;width:auto;max-width:none}#staff-agent .header .subtitle{margin:6px 0 0 0}#staff-agent .agent-detail-form-container{padding:24px;margin-bottom:24px}#staff-agent .agent-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-agent .agent-detail-form-container .handle{cursor:move}#staff-agent .agent-detail-form-container md-input-container md-switch{margin:0!important}#staff-agent .agent-detail-form-container #agent-image-uploader{position:relative}#staff-agent .agent-detail-form-container #agent-image-uploader.dropping .drop-text{display:flex}#staff-agent .agent-detail-form-container #agent-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-agent .agent-detail-form-container #agent-image-uploader .upload-button{margin-bottom:16px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image .media{max-height:100%}#staff-agent md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-agent md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-agent md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-agent md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.team-dialog{max-width:720px;width:720px}md-dialog.team-dialog md-dialog-content{display:block;position:relative}md-dialog.team-dialog md-toolbar .title{font-size:17px}md-dialog.team-dialog md-input-container textarea{min-height:150px}md-dialog.team-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.team-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.team-dialog .date-container{padding:16px 0 24px 0}md-dialog.team-dialog .error-list{font-size:13px}md-dialog.team-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.team-dialog .error-list .error .message{font-weight:500}md-dialog.team-dialog .error-list .error .md-button{margin:0}md-dialog.team-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.team-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#teams{position:relative}#teams>.header{height:76px;min-height:76px;max-height:76px}#teams>.header .logo .logo-icon{margin:0 16px 0 0}#teams>.header .logo .logo-text{font-size:24px}#teams>.header md-icon{color:#fff}#teams>.header .search-input-wrapper{position:relative}#teams>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#teams>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#teams>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#teams>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#teams>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#teams>.header.selected-bar .close-button-wrapper{width:244px}#teams>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#teams>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#teams>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#teams #add-team-button{position:fixed;bottom:8px;right:8px;padding:0}#teams #upload-team-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.telephone-dialog{max-width:720px;width:720px}md-dialog.telephone-dialog md-dialog-content{display:block;position:relative}md-dialog.telephone-dialog md-toolbar .title{font-size:17px}md-dialog.telephone-dialog md-input-container textarea{min-height:150px}md-dialog.telephone-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.telephone-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.telephone-dialog .date-container{padding:16px 0 24px 0}md-dialog.telephone-dialog .error-list{font-size:13px}md-dialog.telephone-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.telephone-dialog .error-list .error .message{font-weight:500}md-dialog.telephone-dialog .error-list .error .md-button{margin:0}md-dialog.telephone-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.telephone-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-telephone .header{height:76px;min-height:76px;max-height:76px}#staff-telephone .header .goto-telephones-button{margin-right:16px}#staff-telephone .header .telephone-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-telephone .header .telephone-image img{height:100%;width:auto;max-width:none}#staff-telephone .header .subtitle{margin:6px 0 0 0}#staff-telephone .telephone-detail-form-container{padding:24px;margin-bottom:24px}#staff-telephone .telephone-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-telephone .telephone-detail-form-container .handle{cursor:move}#staff-telephone .telephone-detail-form-container md-input-container md-switch{margin:0!important}#staff-telephone .telephone-detail-form-container #telephone-image-uploader{position:relative}#staff-telephone .telephone-detail-form-container #telephone-image-uploader.dropping .drop-text{display:flex}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .upload-button{margin-bottom:16px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image .media{max-height:100%}#staff-telephone md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-telephone md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container.font-size-12 td.md-cell{font-size:12px!important}#telephones{position:relative}#telephones>.header{height:76px;min-height:76px;max-height:76px}#telephones>.header .logo .logo-icon{margin:0 16px 0 0}#telephones>.header .logo .logo-text{font-size:24px}#telephones>.header md-icon{color:#fff}#telephones>.header .search-input-wrapper{position:relative}#telephones>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#telephones>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#telephones>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#telephones>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#telephones>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#telephones>.header.selected-bar .close-button-wrapper{width:244px}#telephones>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#telephones>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#telephones>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#telephones #add-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}#telephones #upload-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.userProfile-dialog{max-width:720px;width:720px}md-dialog.userProfile-dialog md-dialog-content{display:block;position:relative}md-dialog.userProfile-dialog md-toolbar .title{font-size:17px}md-dialog.userProfile-dialog md-input-container textarea{min-height:150px}md-dialog.userProfile-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.userProfile-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.userProfile-dialog .date-container{padding:16px 0 24px 0}md-dialog.userProfile-dialog .error-list{font-size:13px}md-dialog.userProfile-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.userProfile-dialog .error-list .error .message{font-weight:500}md-dialog.userProfile-dialog .error-list .error .md-button{margin:0}md-dialog.userProfile-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.userProfile-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-userProfile .header{height:76px;min-height:76px;max-height:76px}#staff-userProfile .header .goto-userProfiles-button{margin-right:16px}#staff-userProfile .header .userProfile-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-userProfile .header .userProfile-image img{height:100%;width:auto;max-width:none}#staff-userProfile .header .subtitle{margin:6px 0 0 0}#staff-userProfile .userProfile-detail-form-container{padding:24px;margin-bottom:24px}#staff-userProfile .userProfile-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-userProfile .userProfile-detail-form-container .handle{cursor:move}#staff-userProfile .userProfile-detail-form-container md-input-container md-switch{margin:0!important}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader{position:relative}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader.dropping .drop-text{display:flex}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .upload-button{margin-bottom:16px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image .media{max-height:100%}#staff-userProfile md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-userProfile md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container.font-size-12 td.md-cell{font-size:12px!important}#userProfiles{position:relative}#userProfiles>.header{height:76px;min-height:76px;max-height:76px}#userProfiles>.header .logo .logo-icon{margin:0 16px 0 0}#userProfiles>.header .logo .logo-text{font-size:24px}#userProfiles>.header md-icon{color:#fff}#userProfiles>.header .search-input-wrapper{position:relative}#userProfiles>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#userProfiles>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#userProfiles>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#userProfiles>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#userProfiles>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#userProfiles>.header.selected-bar .close-button-wrapper{width:244px}#userProfiles>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#userProfiles>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#userProfiles>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#userProfiles #add-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}#userProfiles #upload-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.user-dialog{max-width:720px;width:720px}md-dialog.user-dialog md-dialog-content{display:block;position:relative}md-dialog.user-dialog md-toolbar .title{font-size:17px}md-dialog.user-dialog md-input-container textarea{min-height:150px}md-dialog.user-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.user-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.user-dialog .date-container{padding:16px 0 24px 0}md-dialog.user-dialog .error-list{font-size:13px}md-dialog.user-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.user-dialog .error-list .error .message{font-weight:500}md-dialog.user-dialog .error-list .error .md-button{margin:0}md-dialog.user-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.user-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-user .header{height:76px;min-height:76px;max-height:76px}#staff-user .header .goto-users-button{margin-right:16px}#staff-user .header .user-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-user .header .user-image img{height:100%;width:auto;max-width:none}#staff-user .header .subtitle{margin:6px 0 0 0}#staff-user .user-detail-form-container{padding:24px;margin-bottom:24px}#staff-user .user-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-user .user-detail-form-container .handle{cursor:move}#staff-user .user-detail-form-container md-input-container md-switch{margin:0!important}#staff-user .user-detail-form-container #user-image-uploader{position:relative}#staff-user .user-detail-form-container #user-image-uploader.dropping .drop-text{display:flex}#staff-user .user-detail-form-container #user-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-user .user-detail-form-container #user-image-uploader .upload-button{margin-bottom:16px}#staff-user .user-detail-form-container #user-image-uploader .user-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-user .user-detail-form-container #user-image-uploader .user-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-user .user-detail-form-container #user-image-uploader .user-image .media{max-height:100%}#staff-user md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-user md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-user md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-user md-table-container.font-size-12 td.md-cell{font-size:12px!important}#users{position:relative}#users>.header{height:76px;min-height:76px;max-height:76px}#users>.header .logo .logo-icon{margin:0 16px 0 0}#users>.header .logo .logo-text{font-size:24px}#users>.header md-icon{color:#fff}#users>.header .search-input-wrapper{position:relative}#users>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#users>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#users>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#users>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#users>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#users>.header.selected-bar .close-button-wrapper{width:244px}#users>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#users>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#users>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#users #add-user-button{position:fixed;bottom:8px;right:8px;padding:0}#users #upload-user-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers{position:relative}#cannedAnswers>.header{height:76px;min-height:76px;max-height:76px}#cannedAnswers>.header .logo .logo-icon{margin:0 16px 0 0}#cannedAnswers>.header .logo .logo-text{font-size:24px}#cannedAnswers>.header md-icon{color:#fff}#cannedAnswers>.header .search-input-wrapper{position:relative}#cannedAnswers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cannedAnswers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cannedAnswers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cannedAnswers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cannedAnswers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cannedAnswers>.header.selected-bar .close-button-wrapper{width:244px}#cannedAnswers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cannedAnswers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cannedAnswers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cannedAnswers #add-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers #upload-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cannedAnswer-dialog{max-width:720px;width:720px}md-dialog.cannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.cannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.cannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.cannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.cannedAnswer-dialog .error-list{font-size:13px}md-dialog.cannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.cannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.cannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customDashboard-dialog{max-width:720px;width:720px}md-dialog.customDashboard-dialog md-dialog-content{display:block;position:relative}md-dialog.customDashboard-dialog md-toolbar .title{font-size:17px}md-dialog.customDashboard-dialog md-input-container textarea{min-height:150px}md-dialog.customDashboard-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customDashboard-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customDashboard-dialog .date-container{padding:16px 0 24px 0}md-dialog.customDashboard-dialog .error-list{font-size:13px}md-dialog.customDashboard-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customDashboard-dialog .error-list .error .message{font-weight:500}md-dialog.customDashboard-dialog .error-list .error .md-button{margin:0}md-dialog.customDashboard-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customDashboard-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customDashboards{position:relative}#customDashboards>.header{height:76px;min-height:76px;max-height:76px}#customDashboards>.header .logo .logo-icon{margin:0 16px 0 0}#customDashboards>.header .logo .logo-text{font-size:24px}#customDashboards>.header md-icon{color:#fff}#customDashboards>.header .search-input-wrapper{position:relative}#customDashboards>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customDashboards>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customDashboards>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customDashboards>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customDashboards>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customDashboards>.header.selected-bar .close-button-wrapper{width:244px}#customDashboards>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customDashboards>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customDashboards>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customDashboards #add-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}#customDashboards #upload-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dashboarditem-dialog{max-width:720px;width:720px}md-dialog.dashboarditem-dialog md-dialog-content{display:block;position:relative}md-dialog.dashboarditem-dialog md-toolbar .title{font-size:17px}md-dialog.dashboarditem-dialog md-input-container textarea{min-height:150px}md-dialog.dashboarditem-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dashboarditem-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dashboarditem-dialog .date-container{padding:16px 0 24px 0}md-dialog.dashboarditem-dialog .error-list{font-size:13px}md-dialog.dashboarditem-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dashboarditem-dialog .error-list .error .message{font-weight:500}md-dialog.dashboarditem-dialog .error-list .error .md-button{margin:0}md-dialog.dashboarditem-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dashboarditem-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-customDashboard .header{height:76px;min-height:76px;max-height:76px}#tools-customDashboard .header .goto-customDashboards-button{margin-right:16px}#tools-customDashboard .header .customDashboard-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-customDashboard .header .customDashboard-image img{height:100%;width:auto;max-width:none}#tools-customDashboard .header .subtitle{margin:6px 0 0 0}#tools-customDashboard .customDashboard-detail-form-container{padding:24px;margin-bottom:24px}#tools-customDashboard .customDashboard-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-customDashboard .customDashboard-detail-form-container .handle{cursor:move}#tools-customDashboard .customDashboard-detail-form-container md-input-container md-switch{margin:0!important}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader{position:relative}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader.dropping .drop-text{display:flex}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .upload-button{margin-bottom:16px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image .media{max-height:100%}#tools-customDashboard md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-customDashboard md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dispositions{position:relative}#dispositions>.header{height:76px;min-height:76px;max-height:76px}#dispositions>.header .logo .logo-icon{margin:0 16px 0 0}#dispositions>.header .logo .logo-text{font-size:24px}#dispositions>.header md-icon{color:#fff}#dispositions>.header .search-input-wrapper{position:relative}#dispositions>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dispositions>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dispositions>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dispositions>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dispositions>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dispositions>.header.selected-bar .close-button-wrapper{width:244px}#dispositions>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dispositions>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dispositions>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dispositions #add-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}#dispositions #upload-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-interval .header{height:76px;min-height:76px;max-height:76px}#tools-interval .header .goto-intervals-button{margin-right:16px}#tools-interval .header .interval-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-interval .header .interval-image img{height:100%;width:auto;max-width:none}#tools-interval .header .subtitle{margin:6px 0 0 0}#tools-interval .interval-detail-form-container{padding:24px;margin-bottom:24px}#tools-interval .interval-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-interval .interval-detail-form-container .handle{cursor:move}#tools-interval .interval-detail-form-container md-input-container md-switch{margin:0!important}#tools-interval .interval-detail-form-container #interval-image-uploader{position:relative}#tools-interval .interval-detail-form-container #interval-image-uploader.dropping .drop-text{display:flex}#tools-interval .interval-detail-form-container #interval-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-interval .interval-detail-form-container #interval-image-uploader .upload-button{margin-bottom:16px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image .media{max-height:100%}#tools-interval md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-interval md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-interval md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-interval md-table-container.font-size-12 td.md-cell{font-size:12px!important}#intervals{position:relative}#intervals>.header{height:76px;min-height:76px;max-height:76px}#intervals>.header .logo .logo-icon{margin:0 16px 0 0}#intervals>.header .logo .logo-text{font-size:24px}#intervals>.header md-icon{color:#fff}#intervals>.header .search-input-wrapper{position:relative}#intervals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#intervals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#intervals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#intervals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#intervals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#intervals>.header.selected-bar .close-button-wrapper{width:244px}#intervals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#intervals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#intervals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#intervals #add-interval-button{position:fixed;bottom:8px;right:8px;padding:0}#intervals #upload-interval-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.pause-dialog{max-width:720px;width:720px}md-dialog.pause-dialog md-dialog-content{display:block;position:relative}md-dialog.pause-dialog md-toolbar .title{font-size:17px}md-dialog.pause-dialog md-input-container textarea{min-height:150px}md-dialog.pause-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.pause-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.pause-dialog .date-container{padding:16px 0 24px 0}md-dialog.pause-dialog .error-list{font-size:13px}md-dialog.pause-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.pause-dialog .error-list .error .message{font-weight:500}md-dialog.pause-dialog .error-list .error .md-button{margin:0}md-dialog.pause-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.pause-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#pauses{position:relative}#pauses>.header{height:76px;min-height:76px;max-height:76px}#pauses>.header .logo .logo-icon{margin:0 16px 0 0}#pauses>.header .logo .logo-text{font-size:24px}#pauses>.header md-icon{color:#fff}#pauses>.header .search-input-wrapper{position:relative}#pauses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#pauses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#pauses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#pauses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#pauses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#pauses>.header.selected-bar .close-button-wrapper{width:244px}#pauses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#pauses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#pauses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#pauses #add-pause-button{position:fixed;bottom:8px;right:8px;padding:0}#pauses #upload-pause-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.schedule-dialog{max-width:720px;width:720px}md-dialog.schedule-dialog md-dialog-content{display:block;position:relative}md-dialog.schedule-dialog md-toolbar .title{font-size:17px}md-dialog.schedule-dialog md-input-container textarea{min-height:150px}md-dialog.schedule-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.schedule-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.schedule-dialog .date-container{padding:16px 0 24px 0}md-dialog.schedule-dialog .error-list{font-size:13px}md-dialog.schedule-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.schedule-dialog .error-list .error .message{font-weight:500}md-dialog.schedule-dialog .error-list .error .md-button{margin:0}md-dialog.schedule-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.schedule-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#schedules{position:relative}#schedules>.header{height:76px;min-height:76px;max-height:76px}#schedules>.header .logo .logo-icon{margin:0 16px 0 0}#schedules>.header .logo .logo-text{font-size:24px}#schedules>.header md-icon{color:#fff}#schedules>.header .search-input-wrapper{position:relative}#schedules>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#schedules>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#schedules>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#schedules>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#schedules>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#schedules>.header.selected-bar .close-button-wrapper{width:244px}#schedules>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#schedules>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#schedules>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#schedules #add-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}#schedules #upload-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sound-dialog{max-width:720px;width:720px}md-dialog.sound-dialog md-dialog-content{display:block;position:relative}md-dialog.sound-dialog md-toolbar .title{font-size:17px}md-dialog.sound-dialog md-input-container textarea{min-height:150px}md-dialog.sound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sound-dialog .date-container{padding:16px 0 24px 0}md-dialog.sound-dialog .error-list{font-size:13px}md-dialog.sound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sound-dialog .error-list .error .message{font-weight:500}md-dialog.sound-dialog .error-list .error .md-button{margin:0}md-dialog.sound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sounds{position:relative}#sounds>.header{height:76px;min-height:76px;max-height:76px}#sounds>.header .logo .logo-icon{margin:0 16px 0 0}#sounds>.header .logo .logo-text{font-size:24px}#sounds>.header md-icon{color:#fff}#sounds>.header .search-input-wrapper{position:relative}#sounds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sounds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sounds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sounds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sounds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sounds>.header.selected-bar .close-button-wrapper{width:244px}#sounds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sounds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sounds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sounds #add-sound-button{position:fixed;bottom:8px;right:8px;padding:0}#sounds #upload-sound-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .sound-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .sound-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.tag-dialog{max-width:720px;width:720px}md-dialog.tag-dialog md-dialog-content{display:block;position:relative}md-dialog.tag-dialog md-toolbar .title{font-size:17px}md-dialog.tag-dialog md-input-container textarea{min-height:150px}md-dialog.tag-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.tag-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.tag-dialog .date-container{padding:16px 0 24px 0}md-dialog.tag-dialog .error-list{font-size:13px}md-dialog.tag-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.tag-dialog .error-list .error .message{font-weight:500}md-dialog.tag-dialog .error-list .error .md-button{margin:0}md-dialog.tag-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.tag-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tags{position:relative}#tags>.header{height:76px;min-height:76px;max-height:76px}#tags>.header .logo .logo-icon{margin:0 16px 0 0}#tags>.header .logo .logo-text{font-size:24px}#tags>.header md-icon{color:#fff}#tags>.header .search-input-wrapper{position:relative}#tags>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#tags>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#tags>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#tags>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#tags>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#tags>.header.selected-bar .close-button-wrapper{width:244px}#tags>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#tags>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#tags>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#tags #add-tag-button{position:fixed;bottom:8px;right:8px;padding:0}#tags #upload-tag-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.template-dialog{max-width:720px;width:720px}md-dialog.template-dialog md-dialog-content{display:block;position:relative}md-dialog.template-dialog md-toolbar .title{font-size:17px}md-dialog.template-dialog md-input-container textarea{min-height:150px}md-dialog.template-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.template-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.template-dialog .date-container{padding:16px 0 24px 0}md-dialog.template-dialog .error-list{font-size:13px}md-dialog.template-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.template-dialog .error-list .error .message{font-weight:500}md-dialog.template-dialog .error-list .error .md-button{margin:0}md-dialog.template-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.template-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#templates{position:relative}#templates>.header{height:76px;min-height:76px;max-height:76px}#templates>.header .logo .logo-icon{margin:0 16px 0 0}#templates>.header .logo .logo-text{font-size:24px}#templates>.header md-icon{color:#fff}#templates>.header .search-input-wrapper{position:relative}#templates>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#templates>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#templates>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#templates>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#templates>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#templates>.header.selected-bar .close-button-wrapper{width:244px}#templates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#templates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#templates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#templates #add-template-button{position:fixed;bottom:8px;right:8px;padding:0}#templates #upload-template-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trigger-dialog{max-width:720px;width:720px}md-dialog.trigger-dialog md-dialog-content{display:block;position:relative}md-dialog.trigger-dialog md-toolbar .title{font-size:17px}md-dialog.trigger-dialog md-input-container textarea{min-height:150px}md-dialog.trigger-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trigger-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trigger-dialog .date-container{padding:16px 0 24px 0}md-dialog.trigger-dialog .error-list{font-size:13px}md-dialog.trigger-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trigger-dialog .error-list .error .message{font-weight:500}md-dialog.trigger-dialog .error-list .error .md-button{margin:0}md-dialog.trigger-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.action-dialog{max-width:720px;width:720px}md-dialog.action-dialog md-dialog-content{display:block;position:relative}md-dialog.action-dialog md-toolbar .title{font-size:17px}md-dialog.action-dialog md-input-container textarea{min-height:150px}md-dialog.action-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.action-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.action-dialog .date-container{padding:16px 0 24px 0}md-dialog.action-dialog .error-list{font-size:13px}md-dialog.action-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.action-dialog .error-list .error .message{font-weight:500}md-dialog.action-dialog .error-list .error .md-button{margin:0}md-dialog.action-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.action-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.allCondition-dialog{max-width:720px;width:720px}md-dialog.allCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.allCondition-dialog md-toolbar .title{font-size:17px}md-dialog.allCondition-dialog md-input-container textarea{min-height:150px}md-dialog.allCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.allCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.allCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.allCondition-dialog .error-list{font-size:13px}md-dialog.allCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.allCondition-dialog .error-list .error .message{font-weight:500}md-dialog.allCondition-dialog .error-list .error .md-button{margin:0}md-dialog.allCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.allCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.anyCondition-dialog{max-width:720px;width:720px}md-dialog.anyCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.anyCondition-dialog md-toolbar .title{font-size:17px}md-dialog.anyCondition-dialog md-input-container textarea{min-height:150px}md-dialog.anyCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.anyCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.anyCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.anyCondition-dialog .error-list{font-size:13px}md-dialog.anyCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.anyCondition-dialog .error-list .error .message{font-weight:500}md-dialog.anyCondition-dialog .error-list .error .md-button{margin:0}md-dialog.anyCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.anyCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trigger .header{height:76px;min-height:76px;max-height:76px}#tools-trigger .header .goto-triggers-button{margin-right:16px}#tools-trigger .header .trigger-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trigger .header .trigger-image img{height:100%;width:auto;max-width:none}#tools-trigger .header .subtitle{margin:6px 0 0 0}#tools-trigger .trigger-detail-form-container{padding:24px;margin-bottom:24px}#tools-trigger .trigger-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trigger .trigger-detail-form-container .handle{cursor:move}#tools-trigger .trigger-detail-form-container md-input-container md-switch{margin:0!important}#tools-trigger .trigger-detail-form-container #trigger-image-uploader{position:relative}#tools-trigger .trigger-detail-form-container #trigger-image-uploader.dropping .drop-text{display:flex}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .upload-button{margin-bottom:16px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image .media{max-height:100%}#tools-trigger md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trigger md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container.font-size-12 td.md-cell{font-size:12px!important}#triggers{position:relative}#triggers>.header{height:76px;min-height:76px;max-height:76px}#triggers>.header .logo .logo-icon{margin:0 16px 0 0}#triggers>.header .logo .logo-text{font-size:24px}#triggers>.header md-icon{color:#fff}#triggers>.header .search-input-wrapper{position:relative}#triggers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#triggers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#triggers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#triggers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#triggers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#triggers>.header.selected-bar .close-button-wrapper{width:244px}#triggers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#triggers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#triggers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#triggers #add-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}#triggers #upload-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trunk-dialog{max-width:720px;width:720px}md-dialog.trunk-dialog md-dialog-content{display:block;position:relative}md-dialog.trunk-dialog md-toolbar .title{font-size:17px}md-dialog.trunk-dialog md-input-container textarea{min-height:150px}md-dialog.trunk-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trunk-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trunk-dialog .date-container{padding:16px 0 24px 0}md-dialog.trunk-dialog .error-list{font-size:13px}md-dialog.trunk-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trunk-dialog .error-list .error .message{font-weight:500}md-dialog.trunk-dialog .error-list .error .md-button{margin:0}md-dialog.trunk-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trunk-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trunk .header{height:76px;min-height:76px;max-height:76px}#tools-trunk .header .goto-trunks-button{margin-right:16px}#tools-trunk .header .trunk-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trunk .header .trunk-image img{height:100%;width:auto;max-width:none}#tools-trunk .header .subtitle{margin:6px 0 0 0}#tools-trunk .trunk-detail-form-container{padding:24px;margin-bottom:24px}#tools-trunk .trunk-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trunk .trunk-detail-form-container .handle{cursor:move}#tools-trunk .trunk-detail-form-container md-input-container md-switch{margin:0!important}#tools-trunk .trunk-detail-form-container #trunk-image-uploader{position:relative}#tools-trunk .trunk-detail-form-container #trunk-image-uploader.dropping .drop-text{display:flex}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .upload-button{margin-bottom:16px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image .media{max-height:100%}#tools-trunk md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trunk md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container.font-size-12 td.md-cell{font-size:12px!important}#trunks{position:relative}#trunks>.header{height:76px;min-height:76px;max-height:76px}#trunks>.header .logo .logo-icon{margin:0 16px 0 0}#trunks>.header .logo .logo-text{font-size:24px}#trunks>.header md-icon{color:#fff}#trunks>.header .search-input-wrapper{position:relative}#trunks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#trunks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#trunks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#trunks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#trunks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#trunks>.header.selected-bar .close-button-wrapper{width:244px}#trunks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#trunks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#trunks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#trunks #add-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}#trunks #upload-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.variable-dialog{max-width:720px;width:720px}md-dialog.variable-dialog md-dialog-content{display:block;position:relative}md-dialog.variable-dialog md-toolbar .title{font-size:17px}md-dialog.variable-dialog md-input-container textarea{min-height:150px}md-dialog.variable-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.variable-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.variable-dialog .date-container{padding:16px 0 24px 0}md-dialog.variable-dialog .error-list{font-size:13px}md-dialog.variable-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.variable-dialog .error-list .error .message{font-weight:500}md-dialog.variable-dialog .error-list .error .md-button{margin:0}md-dialog.variable-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.variable-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#variables{position:relative}#variables>.header{height:76px;min-height:76px;max-height:76px}#variables>.header .logo .logo-icon{margin:0 16px 0 0}#variables>.header .logo .logo-text{font-size:24px}#variables>.header md-icon{color:#fff}#variables>.header .search-input-wrapper{position:relative}#variables>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#variables>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#variables>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#variables>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#variables>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#variables>.header.selected-bar .close-button-wrapper{width:244px}#variables>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#variables>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#variables>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#variables #add-variable-button{position:fixed;bottom:8px;right:8px;padding:0}#variables #upload-variable-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.screenRecording-dialog{max-width:720px;width:720px}md-dialog.screenRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.screenRecording-dialog md-toolbar .title{font-size:17px}md-dialog.screenRecording-dialog md-input-container textarea{min-height:150px}md-dialog.screenRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.screenRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.screenRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.screenRecording-dialog .error-list{font-size:13px}md-dialog.screenRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.screenRecording-dialog .error-list .error .message{font-weight:500}md-dialog.screenRecording-dialog .error-list .error .md-button{margin:0}md-dialog.screenRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.screenRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#screenRecordings{position:relative}#screenRecordings>.header{height:76px;min-height:76px;max-height:76px}#screenRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#screenRecordings>.header .logo .logo-text{font-size:24px}#screenRecordings>.header md-icon{color:#fff}#screenRecordings>.header .search-input-wrapper{position:relative}#screenRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#screenRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#screenRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#screenRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#screenRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#screenRecordings>.header.selected-bar .close-button-wrapper{width:244px}#screenRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#screenRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#screenRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#screenRecordings #add-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#screenRecordings #upload-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voice-routing-dialog{max-width:720px;width:720px}md-dialog.voice-routing-dialog md-dialog-content{display:block;position:relative}md-dialog.voice-routing-dialog md-toolbar .title{font-size:17px}md-dialog.voice-routing-dialog md-input-container textarea{min-height:150px}md-dialog.voice-routing-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voice-routing-dialog .date-container{padding:16px 0 24px 0}md-dialog.voice-routing-dialog .error-list{font-size:13px}md-dialog.voice-routing-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voice-routing-dialog .error-list .error .message{font-weight:500}md-dialog.voice-routing-dialog .error-list .error .md-button{margin:0}md-dialog.voice-routing-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voice-routing-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chanSpies{position:relative}#chanSpies>.header{height:76px;min-height:76px;max-height:76px}#chanSpies>.header .logo .logo-icon{margin:0 16px 0 0}#chanSpies>.header .logo .logo-text{font-size:24px}#chanSpies>.header md-icon{color:#fff}#chanSpies>.header .search-input-wrapper{position:relative}#chanSpies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chanSpies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chanSpies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chanSpies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chanSpies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chanSpies>.header.selected-bar .close-button-wrapper{width:244px}#chanSpies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chanSpies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chanSpies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chanSpies #add-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}#chanSpies #upload-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chanSpy-dialog{max-width:720px;width:720px}md-dialog.chanSpy-dialog md-dialog-content{display:block;position:relative}md-dialog.chanSpy-dialog md-toolbar .title{font-size:17px}md-dialog.chanSpy-dialog md-input-container textarea{min-height:150px}md-dialog.chanSpy-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chanSpy-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chanSpy-dialog .date-container{padding:16px 0 24px 0}md-dialog.chanSpy-dialog .error-list{font-size:13px}md-dialog.chanSpy-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chanSpy-dialog .error-list .error .message{font-weight:500}md-dialog.chanSpy-dialog .error-list .error .md-button{margin:0}md-dialog.chanSpy-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chanSpy-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contexts{position:relative}#contexts>.header{height:76px;min-height:76px;max-height:76px}#contexts>.header .logo .logo-icon{margin:0 16px 0 0}#contexts>.header .logo .logo-text{font-size:24px}#contexts>.header md-icon{color:#fff}#contexts>.header .search-input-wrapper{position:relative}#contexts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contexts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contexts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contexts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contexts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contexts>.header.selected-bar .close-button-wrapper{width:244px}#contexts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contexts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contexts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contexts #add-context-button{position:fixed;bottom:8px;right:8px;padding:0}#contexts #upload-context-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.context-dialog{max-width:720px;width:720px}md-dialog.context-dialog md-dialog-content{display:block;position:relative}md-dialog.context-dialog md-toolbar .title{font-size:17px}md-dialog.context-dialog md-input-container textarea{min-height:150px}md-dialog.context-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.context-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.context-dialog .date-container{padding:16px 0 24px 0}md-dialog.context-dialog .error-list{font-size:13px}md-dialog.context-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.context-dialog .error-list .error .message{font-weight:500}md-dialog.context-dialog .error-list .error .md-button{margin:0}md-dialog.context-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.context-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inbound-route-dialog{max-width:720px;width:720px}md-dialog.inbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.inbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.inbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.inbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.inbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.inbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.inbound-route-dialog .error-list{font-size:13px}md-dialog.inbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.inbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.inbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-inbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-inbound-route .header .goto-inbound-routes-button{margin-right:16px}#voice-inbound-route .header .inbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-inbound-route .header .inbound-route-image img{height:100%;width:auto;max-width:none}#voice-inbound-route .header .subtitle{margin:6px 0 0 0}#voice-inbound-route .inbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-inbound-route .inbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-inbound-route .inbound-route-detail-form-container .handle{cursor:move}#voice-inbound-route .inbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-inbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-inbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}#inbound-routes{position:relative}#inbound-routes>.header{height:76px;min-height:76px;max-height:76px}#inbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#inbound-routes>.header .logo .logo-text{font-size:24px}#inbound-routes>.header md-icon{color:#fff}#inbound-routes>.header .search-input-wrapper{position:relative}#inbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#inbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#inbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#inbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#inbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#inbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#inbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#inbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#inbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#inbound-routes #add-inbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.internal-route-dialog{max-width:720px;width:720px}md-dialog.internal-route-dialog md-dialog-content{display:block;position:relative}md-dialog.internal-route-dialog md-toolbar .title{font-size:17px}md-dialog.internal-route-dialog md-input-container textarea{min-height:150px}md-dialog.internal-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.internal-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.internal-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.internal-route-dialog .error-list{font-size:13px}md-dialog.internal-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internal-route-dialog .error-list .error .message{font-weight:500}md-dialog.internal-route-dialog .error-list .error .md-button{margin:0}md-dialog.internal-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internal-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-internal-route .header{height:76px;min-height:76px;max-height:76px}#voice-internal-route .header .goto-internal-routes-button{margin-right:16px}#voice-internal-route .header .internal-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-internal-route .header .internal-route-image img{height:100%;width:auto;max-width:none}#voice-internal-route .header .subtitle{margin:6px 0 0 0}#voice-internal-route .internal-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-internal-route .internal-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-internal-route .internal-route-detail-form-container .handle{cursor:move}#voice-internal-route .internal-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-internal-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-internal-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}#internal-routes{position:relative}#internal-routes>.header{height:76px;min-height:76px;max-height:76px}#internal-routes>.header .logo .logo-icon{margin:0 16px 0 0}#internal-routes>.header .logo .logo-text{font-size:24px}#internal-routes>.header md-icon{color:#fff}#internal-routes>.header .search-input-wrapper{position:relative}#internal-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#internal-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#internal-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#internal-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#internal-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#internal-routes>.header.selected-bar .close-button-wrapper{width:244px}#internal-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#internal-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#internal-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#internal-routes #add-internal-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.musiconhold-dialog{max-width:720px;width:720px}md-dialog.musiconhold-dialog md-dialog-content{display:block;position:relative}md-dialog.musiconhold-dialog md-toolbar .title{font-size:17px}md-dialog.musiconhold-dialog md-input-container textarea{min-height:150px}md-dialog.musiconhold-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.musiconhold-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.musiconhold-dialog .date-container{padding:16px 0 24px 0}md-dialog.musiconhold-dialog .error-list{font-size:13px}md-dialog.musiconhold-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.musiconhold-dialog .error-list .error .message{font-weight:500}md-dialog.musiconhold-dialog .error-list .error .md-button{margin:0}md-dialog.musiconhold-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.musiconhold-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mohSound-dialog{max-width:720px;width:720px}md-dialog.mohSound-dialog md-dialog-content{display:block;position:relative}md-dialog.mohSound-dialog md-toolbar .title{font-size:17px}md-dialog.mohSound-dialog md-input-container textarea{min-height:150px}md-dialog.mohSound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mohSound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mohSound-dialog .date-container{padding:16px 0 24px 0}md-dialog.mohSound-dialog .error-list{font-size:13px}md-dialog.mohSound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mohSound-dialog .error-list .error .message{font-weight:500}md-dialog.mohSound-dialog .error-list .error .md-button{margin:0}md-dialog.mohSound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mohSound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-musiconhold .header{height:76px;min-height:76px;max-height:76px}#voice-musiconhold .header .goto-musiconholds-button{margin-right:16px}#voice-musiconhold .header .musiconhold-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-musiconhold .header .musiconhold-image img{height:100%;width:auto;max-width:none}#voice-musiconhold .header .subtitle{margin:6px 0 0 0}#voice-musiconhold .musiconhold-detail-form-container{padding:24px;margin-bottom:24px}#voice-musiconhold .musiconhold-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-musiconhold .musiconhold-detail-form-container .handle{cursor:move}#voice-musiconhold .musiconhold-detail-form-container md-input-container md-switch{margin:0!important}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader{position:relative}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader.dropping .drop-text{display:flex}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .upload-button{margin-bottom:16px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image .media{max-height:100%}#voice-musiconhold md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-musiconhold md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container.font-size-12 td.md-cell{font-size:12px!important}#musiconholds{position:relative}#musiconholds>.header{height:76px;min-height:76px;max-height:76px}#musiconholds>.header .logo .logo-icon{margin:0 16px 0 0}#musiconholds>.header .logo .logo-text{font-size:24px}#musiconholds>.header md-icon{color:#fff}#musiconholds>.header .search-input-wrapper{position:relative}#musiconholds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#musiconholds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#musiconholds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#musiconholds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#musiconholds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#musiconholds>.header.selected-bar .close-button-wrapper{width:244px}#musiconholds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#musiconholds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#musiconholds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#musiconholds #add-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}#musiconholds #upload-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.outbound-route-dialog{max-width:720px;width:720px}md-dialog.outbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.outbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.outbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.outbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.outbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.outbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.outbound-route-dialog .error-list{font-size:13px}md-dialog.outbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.outbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.outbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.outbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.outbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-outbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-outbound-route .header .goto-outbound-routes-button{margin-right:16px}#voice-outbound-route .header .outbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-outbound-route .header .outbound-route-image img{height:100%;width:auto;max-width:none}#voice-outbound-route .header .subtitle{margin:6px 0 0 0}#voice-outbound-route .outbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-outbound-route .outbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-outbound-route .outbound-route-detail-form-container .handle{cursor:move}#voice-outbound-route .outbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-outbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-outbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}#outbound-routes{position:relative}#outbound-routes>.header{height:76px;min-height:76px;max-height:76px}#outbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#outbound-routes>.header .logo .logo-text{font-size:24px}#outbound-routes>.header md-icon{color:#fff}#outbound-routes>.header .search-input-wrapper{position:relative}#outbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#outbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#outbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#outbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#outbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#outbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#outbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#outbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#outbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#outbound-routes #add-outbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.voicemail-dialog{max-width:720px;width:720px}md-dialog.voicemail-dialog md-dialog-content{display:block;position:relative}md-dialog.voicemail-dialog md-toolbar .title{font-size:17px}md-dialog.voicemail-dialog md-input-container textarea{min-height:150px}md-dialog.voicemail-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicemail-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicemail-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicemail-dialog .error-list{font-size:13px}md-dialog.voicemail-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicemail-dialog .error-list .error .message{font-weight:500}md-dialog.voicemail-dialog .error-list .error .md-button{margin:0}md-dialog.voicemail-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicemail-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voicemail .header{height:76px;min-height:76px;max-height:76px}#voice-voicemail .header .goto-voicemails-button{margin-right:16px}#voice-voicemail .header .voicemail-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voicemail .header .voicemail-image img{height:100%;width:auto;max-width:none}#voice-voicemail .header .subtitle{margin:6px 0 0 0}#voice-voicemail .voicemail-detail-form-container{padding:24px;margin-bottom:24px}#voice-voicemail .voicemail-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voicemail .voicemail-detail-form-container .handle{cursor:move}#voice-voicemail .voicemail-detail-form-container md-input-container md-switch{margin:0!important}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader{position:relative}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader.dropping .drop-text{display:flex}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .upload-button{margin-bottom:16px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image .media{max-height:100%}#voice-voicemail md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voicemail md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voicemails{position:relative}#voicemails>.header{height:76px;min-height:76px;max-height:76px}#voicemails>.header .logo .logo-icon{margin:0 16px 0 0}#voicemails>.header .logo .logo-text{font-size:24px}#voicemails>.header md-icon{color:#fff}#voicemails>.header .search-input-wrapper{position:relative}#voicemails>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicemails>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicemails>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicemails>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicemails>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicemails>.header.selected-bar .close-button-wrapper{width:244px}#voicemails>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicemails>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicemails>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicemails #add-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}#voicemails #upload-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voicePrefix-dialog{max-width:720px;width:720px}md-dialog.voicePrefix-dialog md-dialog-content{display:block;position:relative}md-dialog.voicePrefix-dialog md-toolbar .title{font-size:17px}md-dialog.voicePrefix-dialog md-input-container textarea{min-height:150px}md-dialog.voicePrefix-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicePrefix-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicePrefix-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicePrefix-dialog .error-list{font-size:13px}md-dialog.voicePrefix-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicePrefix-dialog .error-list .error .message{font-weight:500}md-dialog.voicePrefix-dialog .error-list .error .md-button{margin:0}md-dialog.voicePrefix-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicePrefix-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voicePrefixes{position:relative}#voicePrefixes>.header{height:76px;min-height:76px;max-height:76px}#voicePrefixes>.header .logo .logo-icon{margin:0 16px 0 0}#voicePrefixes>.header .logo .logo-text{font-size:24px}#voicePrefixes>.header md-icon{color:#fff}#voicePrefixes>.header .search-input-wrapper{position:relative}#voicePrefixes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicePrefixes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicePrefixes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicePrefixes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicePrefixes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicePrefixes>.header.selected-bar .close-button-wrapper{width:244px}#voicePrefixes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicePrefixes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicePrefixes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicePrefixes #add-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}#voicePrefixes #upload-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceQueue-dialog{max-width:720px;width:720px}md-dialog.voiceQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceQueue-dialog md-toolbar .title{font-size:17px}md-dialog.voiceQueue-dialog md-input-container textarea{min-height:150px}md-dialog.voiceQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceQueue-dialog .error-list{font-size:13px}md-dialog.voiceQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceQueue-dialog .error-list .error .message{font-weight:500}md-dialog.voiceQueue-dialog .error-list .error .md-button{margin:0}md-dialog.voiceQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceQueue .header{height:76px;min-height:76px;max-height:76px}#voice-voiceQueue .header .goto-voiceQueues-button{margin-right:16px}#voice-voiceQueue .header .voiceQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceQueue .header .voiceQueue-image img{height:100%;width:auto;max-width:none}#voice-voiceQueue .header .subtitle{margin:6px 0 0 0}#voice-voiceQueue .voiceQueue-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceQueue .voiceQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceQueue .voiceQueue-detail-form-container .handle{cursor:move}#voice-voiceQueue .voiceQueue-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader{position:relative}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader.dropping .drop-text{display:flex}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .upload-button{margin-bottom:16px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image .media{max-height:100%}#voice-voiceQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voiceQueues{position:relative}#voiceQueues>.header{height:76px;min-height:76px;max-height:76px}#voiceQueues>.header .logo .logo-icon{margin:0 16px 0 0}#voiceQueues>.header .logo .logo-text{font-size:24px}#voiceQueues>.header md-icon{color:#fff}#voiceQueues>.header .search-input-wrapper{position:relative}#voiceQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceQueues>.header.selected-bar .close-button-wrapper{width:244px}#voiceQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceQueues #add-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceQueues #upload-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceRecording-dialog{max-width:720px;width:720px}md-dialog.voiceRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceRecording-dialog md-toolbar .title{font-size:17px}md-dialog.voiceRecording-dialog md-input-container textarea{min-height:150px}md-dialog.voiceRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceRecording-dialog .error-list{font-size:13px}md-dialog.voiceRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceRecording-dialog .error-list .error .message{font-weight:500}md-dialog.voiceRecording-dialog .error-list .error .md-button{margin:0}md-dialog.voiceRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceRecording .header{height:76px;min-height:76px;max-height:76px}#voice-voiceRecording .header .goto-voiceRecordings-button{margin-right:16px}#voice-voiceRecording .header .voiceRecording-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceRecording .header .voiceRecording-image img{height:100%;width:auto;max-width:none}#voice-voiceRecording .header .subtitle{margin:6px 0 0 0}#voice-voiceRecording .voiceRecording-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceRecording .voiceRecording-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceRecording .voiceRecording-detail-form-container .handle{cursor:move}#voice-voiceRecording .voiceRecording-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader{position:relative}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader.dropping .drop-text{display:flex}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .upload-button{margin-bottom:16px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image .media{max-height:100%}#voice-voiceRecording md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceRecording md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voice-voiceRecording .sentiment.POSITIVE{color:#4caf50;font-size:25px}#voice-voiceRecording .sentiment.NEGATIVE{color:#f40505;font-size:30px}#voice-voiceRecording .sentiment.NEUTRAL{color:#03a9f4;font-size:30px}#voice-voiceRecording .sentiment.MIXED{color:#9c27b0;font-size:30px}#voiceRecordings{position:relative}#voiceRecordings>.header{height:76px;min-height:76px;max-height:76px}#voiceRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#voiceRecordings>.header .logo .logo-text{font-size:24px}#voiceRecordings>.header md-icon{color:#fff}#voiceRecordings>.header .search-input-wrapper{position:relative}#voiceRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceRecordings>.header.selected-bar .close-button-wrapper{width:244px}#voiceRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceRecordings #add-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceRecordings #upload-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappAccount .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappAccount .header .goto-whatsappAccounts-button{margin-right:16px}#whatsapp-whatsappAccount .header .whatsappAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappAccount .header .whatsappAccount-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappAccount .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .handle{cursor:move}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader{position:relative}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image .media{max-height:100%}#whatsapp-whatsappAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.whatsappCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.whatsappCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappCannedAnswer-dialog .error-list{font-size:13px}md-dialog.whatsappCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsappAccounts{position:relative}#whatsappAccounts>.header{height:76px;min-height:76px;max-height:76px}#whatsappAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappAccounts>.header .logo .logo-text{font-size:24px}#whatsappAccounts>.header md-icon{color:#fff}#whatsappAccounts>.header .search-input-wrapper{position:relative}#whatsappAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappAccounts>.header.selected-bar .close-button-wrapper{width:244px}#whatsappAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappAccounts #add-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappAccounts #upload-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.whatsappQueue-dialog{max-width:720px;width:720px}md-dialog.whatsappQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappQueue-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappQueue-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappQueue-dialog .error-list{font-size:13px}md-dialog.whatsappQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappQueue-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappQueue-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappQueue .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappQueue .header .goto-whatsappQueues-button{margin-right:16px}#whatsapp-whatsappQueue .header .whatsappQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappQueue .header .whatsappQueue-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappQueue .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .handle{cursor:move}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader{position:relative}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image .media{max-height:100%}#whatsapp-whatsappQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#whatsappQueues{position:relative}#whatsappQueues>.header{height:76px;min-height:76px;max-height:76px}#whatsappQueues>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappQueues>.header .logo .logo-text{font-size:24px}#whatsappQueues>.header md-icon{color:#fff}#whatsappQueues>.header .search-input-wrapper{position:relative}#whatsappQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappQueues>.header.selected-bar .close-button-wrapper{width:244px}#whatsappQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappQueues #add-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappQueues #upload-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header .logo-text{display:none}}#vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#vertical-navigation .navigation-header .logo .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px}#vertical-navigation .navigation-header .logo .logo-text{color:#fff;margin-left:16px;font-size:16px}#vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s;transform:rotate(0);margin:0;padding:8px;width:34px!important;height:34px!important;cursor:pointer}#vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #vertical-navigation{position:absolute}.ms-navigation-folded #vertical-navigation .navigation-header .fold-toggle{transform:rotate(180deg);opacity:0}.ms-navigation-folded.ms-navigation-folded-open #vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s,opacity .3s ease-in-out .2s;opacity:1}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header .logo-text{display:none}}#quick-panel{width:330px;min-width:330px;max-width:330px;z-index:99}#quick-panel md-content{height:100%}#quick-panel md-content md-tabs{position:static;height:100%}#quick-panel md-content md-tabs md-tabs-wrapper{background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.06)}#quick-panel md-content md-tabs md-tabs-wrapper .md-tab{max-width:none!important}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content{height:100%;overflow:hidden}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content>div{overflow:hidden;height:100%}.unread-message-count-chat{position:absolute;top:5px;left:10px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}@media screen and (max-width:600px){#quick-panel{width:80%;min-width:80%;max-width:80%}}#quick-panel .activity-tab .friends .friend{position:relative}#quick-panel .activity-tab .friends .friend .status{position:absolute;top:8px;left:44px;width:18px;height:18px;z-index:10;border-radius:50%;border:3px solid #fff}#quick-panel .activity-tab .friends .friend .status.online{background-color:#00c853}#quick-panel .activity-tab .friends .friend .status.offline{background-color:#d50000}#quick-panel .activity-tab .friends .friend .status.away{background-color:#ff6d00}#quick-panel .activity-tab .friends .friend .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .activity-tab .servers .server .status{margin:24px 20px 28px 8px}#quick-panel .activity-tab .servers .server .status.normal{color:#00c853}#quick-panel .activity-tab .servers .server .status.warn{color:#d50000}#quick-panel .activity-tab .servers .server .status.error{color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.normal .md-bar{background-color:#00c853}#quick-panel .activity-tab .stat md-progress-linear.normal .md-container{background-color:rgba(0,200,83,.3)}#quick-panel .activity-tab .stat md-progress-linear.warn .md-bar{background-color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.warn .md-container{background-color:rgba(255,109,0,.3)}#quick-panel .activity-tab .stat md-progress-linear.alert .md-bar{background-color:#d50000}#quick-panel .activity-tab .stat md-progress-linear.alert .md-container{background-color:rgba(213,0,0,.3)}#quick-panel .chat-tab .chat,#quick-panel .chat-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .chat-tab .main .contact{position:relative}#quick-panel .chat-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .chat-tab .main .contact .status.online{background-color:#00c853}#quick-panel .chat-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .chat-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .chat-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .chat-tab .main .recent .contact .status{top:18px}#quick-panel .chat-tab .chat{max-height:100%;overflow:hidden}#quick-panel .chat-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .chat-tab .chat .message-row .bubble:after,#quick-panel .chat-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .chat-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .chat-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .chat-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .chat-tab .chat .message-row.user{align-items:flex-end}#quick-panel .chat-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .chat-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .chat-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .chat-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .chat-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .chat-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#quick-panel .group-tab .chat,#quick-panel .group-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .group-tab .main .contact{position:relative}#quick-panel .group-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .group-tab .main .contact .status.online{background-color:#00c853}#quick-panel .group-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .group-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .group-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .group-tab .main .recent .contact .status{top:18px}#quick-panel .group-tab .chat{max-height:100%;overflow:hidden}#quick-panel .group-tab .chat .message-row{padding:8px}#quick-panel .group-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .group-tab .chat .message-row .bubble:after,#quick-panel .group-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .group-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .group-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .group-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .group-tab .chat .message-row.user{align-items:flex-end}#quick-panel .group-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .group-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .group-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .group-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .group-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .group-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reset-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#reset-password #reset-password-form-wrapper{flex:1 0 auto;padding:32px}#reset-password #reset-password-form-wrapper #reset-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#reset-password #reset-password-form-wrapper #reset-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#reset-password #reset-password-form-wrapper #reset-password-form .title{font-size:17px;margin:16px 0 32px 0}#reset-password #reset-password-form-wrapper #reset-password-form .logo_login{max-height:200px}#reset-password #reset-password-form-wrapper #reset-password-form form{width:100%;text-align:left}#reset-password #reset-password-form-wrapper #reset-password-form form .submit-button{width:220px;margin:16px auto;display:block}#reset-password #reset-password-form-wrapper #reset-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#reset-password #reset-password-form-wrapper #reset-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#reset-password #reset-password-form-wrapper{padding:16px}#reset-password #reset-password-form-wrapper #reset-password-form{padding:24px;width:100%}#reset-password #reset-password-form-wrapper #reset-password-form form .md-button{width:90%}}md-dialog.preview-dialog{max-width:1020px;width:1020px}md-dialog.preview-dialog md-dialog-content{display:block;position:relative;padding:0}md-dialog.preview-dialog md-toolbar .title{font-size:17px}md-dialog.preview-dialog md-input-container textarea{min-height:150px}md-dialog.preview-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.preview-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.preview-dialog .date-container{padding:16px 0 24px 0}md-dialog.preview-dialog .error-list{font-size:13px}md-dialog.preview-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.preview-dialog .error-list .error .message{font-weight:500}md-dialog.preview-dialog .error-list .error .md-button{margin:0}md-dialog.preview-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.preview-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#toolbar{height:64px;min-height:64px;max-height:64px;z-index:55!important}#toolbar .blink{animation:blinker 2s linear infinite}#toolbar #navigation-toggle{width:64px;min-width:64px;height:64px;margin:0;border-right:1px solid rgba(0,0,0,.12);border-radius:0}#toolbar .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px;margin-left:10px;margin-right:8px}#toolbar #user-menu{height:64px;padding:0}#toolbar #user-menu md-menu-item .md-button{font-size:15px}#toolbar #user-menu md-menu-item .md-button md-icon{margin:auto 16px auto 0}#toolbar #user-menu .user-button{margin:0;padding:0 16px;height:64px;text-transform:none}#toolbar #user-menu .user-button .avatar-wrapper{position:relative}#toolbar #user-menu .user-button .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#toolbar #user-menu .user-button .username{margin:0 12px 0 8px}#toolbar #language-menu{height:64px}#toolbar #language-menu .language-button{min-width:64px;height:64px;margin:0;padding:0 16px;border-radius:0}#toolbar #language-menu .language-button .iso{text-transform:uppercase}#toolbar #language-menu .language-button .flag{margin-right:8px}#toolbar #quick-panel-toggle{width:64px;height:64px;margin:0;border-radius:0}#toolbar #quick-panel-toggle .unread-message-count{position:absolute;top:8px;left:38px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}#toolbar .toolbar-separator{height:64px;width:1px;background:rgba(0,0,0,.12)}#language-menu-content md-menu-item .flag{margin-right:16px}#language-message{min-height:88px;max-width:600px}#language-message .md-toast-content{height:90px}.open-contact-count{position:absolute;top:1px;left:25px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}.md-button.preview-button{min-width:46px;min-height:50px}@media screen and (max-width:600px){#toolbar #user-menu .user-button{min-width:64px;padding:0 2px 0 10px}}.geEditor{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt;overflow:hidden;height:100%}.geMenubarContainer .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel{cursor:pointer!important}.geContentEditable div,.geContentEditable table,.geContentEditable table td{border:1px dashed #d3d3d3}.geBackgroundPage{-webkit-box-shadow:0 0 3px 0 #d9d9d9;-moz-box-shadow:0 0 3px 0 #d9d9d9;box-shadow:0 0 3px 0 #d9d9d9}.geMenubarContainer a,.geSidebarContainer a,.geToolbar a{color:#000!important;text-decoration:none}.geDiagramContainer,.geFooterContainer,.geHsplit,.geMenubarContainer,.geOutlineContainer,.geSidebarContainer,.geToolbarContainer,.geVsplit{overflow:hidden;position:absolute;cursor:default}.geDiagramContainer,.geOutlineContainer{background-color:#fff;outline:0}.geMenubar,.geToolbar{white-space:nowrap;display:block;width:100%}.geMenubarContainer .geItem,.geSidebar,.geSidebar .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel,.mxPopupMenuItem{-webkit-transition:all .1s ease-in-out;-moz-transition:all .1s ease-in-out;-o-transition:all .1s ease-in-out;-ms-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.geHint{background-color:#fff;border:1px solid gray;padding:4px 16px 4px 16px;border-radius:3px;-webkit-box-shadow:1px 1px 2px 0 #ddd;-moz-box-shadow:1px 1px 2px 0 #ddd;box-shadow:1px 1px 2px 0 #ddd;opacity:.8}.geStatusAlert{white-space:nowrap;margin-top:-5px;font-size:12px;padding:4px 6px 4px 6px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442!important;border-radius:3px}.geStatusAlert:hover{background-color:#f1d8d8;border-color:#d6b2b8}.geStatusMessage{white-space:nowrap;margin-top:-5px;padding:4px 6px 4px 6px;font-size:12px;background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;border:1px solid #b2dba1;border-radius:3px;color:#3c763d!important}.geStatusMessage:hover{background:#c8e5bc;border-color:#b2dba1}.geAlert{position:absolute;white-space:nowrap;padding:14px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442;border-radius:3px;-webkit-box-shadow:2px 2px 3px 0 #ddd;-moz-box-shadow:2px 2px 3px 0 #ddd;box-shadow:2px 2px 3px 0 #ddd}.geBtn{background-color:#f5f5f5;border-radius:2px;border:1px solid #d8d8d8;color:#333;cursor:default;font-size:11px;font-weight:700;height:29px;line-height:27px;margin:0 0 0 8px;min-width:72px;outline:0;padding:0 8px;cursor:pointer}.geBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid #c6c6c6;background-color:#f8f8f8;background-image:linear-gradient(#f8f8f8 0,#f1f1f1 100%);color:#111}.geBtn:disabled{opacity:.5}.geBtnUp{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECAGZmZtXV1f///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJERjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJFMDg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkREODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRFODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjwiQBhGYglCKhXFLBQA7);background-position:center center;background-repeat:no-repeat}.geBtnUp:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geBtnDown{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECANXV1WZmZv///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJEQjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJEQzg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkQ5ODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRBODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjxLLewEiCAnOZBzeBQA7);background-position:center center;background-repeat:no-repeat}.geBtnDown:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geColorBtn{background-color:#f5f5f5;background-image:linear-gradient(#f5f5f5 0,#e1e1e1 100%);border-radius:4px;border:1px solid rgba(0,0,0,.5);color:#333;cursor:default;margin:0;outline:0;padding:0;cursor:pointer}.geColorBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.7)}.geColorBtn:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.geColorBtn:disabled{opacity:.5}.gePrimaryBtn{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#4787ed 100%);border:1px solid #3079ed;color:#fff}.gePrimaryBtn:hover{background-color:#357ae8;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.gePrimaryBtn:disabled{opacity:.5}.geAlertLink{color:#843534;font-weight:700;text-decoration:none}.geMenubarContainer{background-color:#fff}.geMenubar{padding:0 2px 0 2px;vertical-align:middle}.geMenubarContainer .geItem,.geToolbar .geItem{padding:6px 8px 6px 8px;cursor:default}.geMenubarContainer .geItem:hover,.geToolbarContainer .geItem:hover{background:#eee}.mxDisabled:hover{background:inherit!important}.geMenubar a.geStatus{color:#b3b3b3;padding-left:6px;display:inline-block;cursor:default!important}.geMenubar a.geStatus:hover{background:0 0}.geMenubarMenu{border:1px solid #d5d5d5!important}.geToolbarContainer{background:#f5f5f5;border-bottom:1px solid #e0e0e0}.geSidebarContainer .geToolbarContainer{background:0 0;border-bottom:none}.geSidebarContainer button{text-overflow:ellipsis;overflow:hidden}.geToolbar{padding:1px 0 0 6px;border-top:1px solid #e0e0e0;-webkit-box-shadow:inset 0 1px 0 0 #fff;-moz-box-shadow:inset 0 1px 0 0 #fff;box-shadow:inset 0 1px 0 0 #fff}.geToolbarContainer .geSeparator{float:left;width:1px;height:34px;background:#e5e5e5;margin-left:6px;margin-right:6px;margin-top:-2px}.geToolbarContainer .geButton{float:left;width:20px;height:20px;padding:0 2px 4px 2px;margin:2px;border:1px solid transparent;cursor:pointer;opacity:.6}.geToolbarContainer .geButton:hover{border:1px solid gray;border-radius:2px;opacity:1;filter:none!important}.geToolbarContainer .geButton:active{border:1px solid #000}div.mxWindow .geButton{margin:-1px 2px 2px 2px;padding:1px 2px 2px 1px}.geToolbarContainer .geLabel{float:left;margin:2px;cursor:pointer;padding:3px 5px 3px 5px;border:1px solid transparent;opacity:.6}.geToolbarContainer .geLabel:hover{border:1px solid gray;border-radius:2px;opacity:.9}.geToolbarContainer .geLabel:active{border:1px solid #000;opacity:1;filter:none!important}.geToolbarContainer .mxDisabled:hover{border:1px solid transparent!important;opacity:.2!important}.geToolbarMenu{border:3px solid #e0e0e0!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important;filter:none!important}.geDiagramBackdrop{background-color:#ebebeb;border-style:solid;border-color:#e5e5e5;border-width:1px 0 0 1px}.geSidebarContainer{background:#fff;overflow:hidden;position:absolute;border-top:1px solid #e5e5e5;overflow:auto}.geSidebar{background:#f5f5f5;border-bottom:1px solid #e5e5e5;padding:5px;padding-bottom:12px;overflow:hidden}.geSidebarContainer .geTitle{display:block;font-size:9pt;border-bottom:1px solid #e5e5e5;font-weight:400;padding:6px 0 6px 14px;margin:0;cursor:default;background:#eee;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4em}.geSidebarContainer .geTitle:hover{background:#e5e5e5}.geTitle img{opacity:.5}.geTitle img:hover{opacity:1}.geSidebar .geItem{display:inline-block;background-repeat:no-repeat;background-position:50% 50%;border:1px solid transparent;border-radius:2px;cursor:move}.geSidebar .geItem:hover{border:1px solid gray!important}.geItem{vertical-align:top;display:inline-block}.geSidebarTooltip{position:absolute;background:#fff;overflow:hidden;border:1px solid gray;border-radius:8px;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5}.geFooterContainer{background:#e5e5e5;border-top:1px solid silver}.geFooterContainer a{font-size:14px;color:#235695;font-weight:700;text-decoration:none}.geFooterContainer table{border-collapse:collapse;margin:0 auto}.geFooterContainer td{border-left:1px solid silver;border-right:1px solid silver}.geFooterContainer td:hover{background-color:#b3b3b3}.geFooterContainer a{display:block;box-sizing:border-box;width:100%;height:100%;padding:11px 42px 11px 42px;white-space:nowrap}.geHsplit{cursor:col-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHBAMAAADdS/HjAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAHUlEQVQImWMQEGAQFWUQFmYQF2cQEmIQE2MQEQEACy4BF67hpEwAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geVsplit{font-size:1pt;cursor:row-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAEBAMAAACw6DhOAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAFElEQVQImWNgNVdzYBAUFBRggLMAEzYBy29kEPgAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geHsplit:hover,.geVsplit:hover{background-color:#d5d5d5}.geDialog{position:absolute;background:#fff;overflow:hidden;padding:30px;border:1px solid #acacac;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5;z-index:2}.geDialogClose{position:absolute;width:9px;height:9px;opacity:.5;cursor:pointer}.geDialogClose:hover{opacity:1}.geDialogTitle{box-sizing:border-box;white-space:nowrap;background:#e5e5e5;border-bottom:1px solid silver;font-size:15px;font-weight:700;text-align:center;color:#235695}.geDialogFooter{background:#f5f5f5;white-space:nowrap;text-align:right;box-sizing:border-box;border-top:1px solid #e5e5e5;color:#a9a9a9}.geSprite{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAk/CAYAAACauMYVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAAAWn0lEQVR4Ae2dW4gdxdbHO0aJYjzxTtR4EhSDSNB84kPEQOL9CB/Ex4igg8iAGCSgiIIQH1SOqJAnn4N4wBdvYBRBcYTIp0+OF0SDYoJRgyAmeA1e5lv/PrM6q6urqqu7a2/3ZP4NPVVdtda/Vv2qZ9Nrd++9i2IE2xJoHn/88XOq/ccff5RtepxSuv7HqxPE0GkNtC+lVH/YjiTSKoi+EaqA9T9OG3OW4xNdu3btHPZY9DGbRqRtYhiozaYhunfvXu95aoVCNjqzhqh2uGWbkLVPFrWRWgFfvSFqnW3dOtt2W7c2Zd2evI3OhAbr34g0wb/VZOGIjuRVagG+nrYuKQ1IgARIgARIgARIgARIoEbAm93BwmYb1mP58uXFoUOHgn6wTUok8K4Ddgj+9NNPxamnnhpNhpNENdL169eXVQj32jB93VUAEaJNxKORBtmEmGIAoNCBfGXS9C1TiLRF6huobNOp24g3b97cQBIU8HX4RJVp2+oH2dgI7aAp56m1Z50ESIAESIAESIAESIAESGCREtBMJXX6SclZqpjaUVRJ5CuPEabI623ii3rvXN/SVeFsgioO4SwRquDElNU7E3ZB+kTX9g5QH036kAAJkAAJkAAJkAAJkMDEEqiupBFh36vpsVxF1yJVnqkRjyVCDaoWaWqE6qzlWCKuRaojp0Y8lgg1qFqkqRGqs5ZjibgWqY6cGvFYItSgWJIACZAACZAACZAACZDAJBHwXknbAENX1bGr6IZoSMQO5KvbQUZyi9M36OC2xvRVMRWDnbb6jmT6FFW8+UoyzcdSlUbCVMVZkgAJkAAJkAAJkAAJTCqB1Pypc/yu8Jo1a6KfhE0eAMI7duyYS/04aJIwBCGsUeL507bPmbYKQwCCFsUgYQjaJ2MHC7uCvim1RVxLzSHY5YPUq1atKvbt21fTQBC9sxN8ltcnCNHGKCnR2g8HP/TQQ+U5/Mgjj1RajUjxiXc4hTYrCJtff/213K19pW4bUfdF7Aree++9tf+0p556qtRrRKribsSuoNr1KhEx9pAzonUjDtmynQRIgARIgARIgARIgASOGQLlNbrN6Hy3LNtm6/ovwC+qtVNom66v3/p7Ux4YuLsrZLNst686tiO5grZPHdCmbzCgzdp4I1VHX6kDou/AgQOFFW7Y25HU0ZauA/ps0mb9O0eq4uvWrWv9OrgaE3XsUmaJNDZgdPp29JiI2xcVdY1Tj72iOLE1SpRJJ7pvRBXRPpwuaLOnjfb5Ste/tPE1Rk9sR9n68/XUgcNDEiABEiABEiABEjgmCTTunMkl4Z65ublVbbM97rjj3v3999+3+uyqLFo7Ifjqq6+ulq1YsqQxJr6huXj77beLe+65Z5/6uGVDFAZysVtcdNFFXlGJrpDfPSp13nrrLczouauvvnpj2TD/x3vNjz5flOooUy8uvPDCDV9//fX/yb3ADc8///we7UMZFEXnn3/+WbzwwgvF559/XiBCbCeccEJx/fXXF4899tiyxx9/fNXpp5++VO4K19bAO/3SW/4goquuuqp4+OGHi08//bQ8vuyyy4rbb7+9ePTRR4svvvjioAyy9a+//jqiPt5y6dKl+z777DNZr6Pb+++/P3fHHXfMSd/cGWecMXf55Zcjc3lfBDZ4RdxGnyjkZ2Zm5q655ppSGOIiOuP66nGUKYx++eWX4pVXXilXfGpqqnjppZcKuZNbyDjrzzvvvJk33njjORXTMioqrIoPPvigPDdxmm3cuLG49tpri5tvvrm47bbbVkj/pp9//vlfL7744nYVRBldKBgsW7asEIbFWWedVZx00kkFBvrtt9/QVZ520r/ihx9+gOjOslH+REWx+hC0G04zWcjimWee2X/OOefsWrFiRfHtt98esjZeUTji39H3D4B29EvfPnkP5eErr7zS6pV1r+h7771XfPXVV0HRjz76qCFkGxqvGHIyPycru9Ia+eoS6az8l9UWyGfHNhIgARIgARIgARIgARLoQKBxfer6fvLJJ899/PHHZb506aWXvnvxxRdvdW3c48aV9O7du/eIUZUW3nXXXStvvPHGZbhUf/rpp1dK/z4VQUp5ySWXHJAHhuMJ75133rlKcqfVJ5988mpJJFYfPnx42ZNPPlk88cQTuPu4DG3og83999+/WjKTKgAdrJFHfffdd8Xs7OxWcd4sD//Ofvnll4UIlzvqDz74YCGPkIvJ7Nbvv/++TCpULFgijZTO1TK1nVI/hJTR3edTyNXnn3/+nIjDvrY1mGqvJAm7pP6iHjvlYee4dhgUffPNN9dLzrQG1sjyZJu56aabZlCZ31ZrxS2DoiI0Jcab4IDMT7bNr7/++gwqSMxuuOGGt1D3bY2F8hnNt22S/Goq0l91BSOtLI5W3paId0mEu+abuk8fGR1OeIlOme4Spip4dChPLRjpdddd1ztF7MLUE5O/aSSioek3/p89MZU2YO5uDVFZnAPyb/kf19B3LIL7pf2Ar49tJEACJEACJEACJEAC/Qh4c1O5sfWhXHz9MyK5Rx51/N9Qf+OqD4abNm36hxQrQk5XXHHFvyQz/PDss8++1GfjFf3xxx+RHm595513tp944ollBq3Octfs3YMHD+6US87/iPAeEd6ofVp6Rec7D956662N+6FHjhz5Hxl055lnnrlUbnduEFR75F5qTTgmWj5d/OyzzxYbNtSCXSaDrsSTx7fccstSYd+46o6KIuKVK1cWuIPeZWsVhZjcyC6++eYbPExcyLQLyZ6jYySJ4pamvFlQ3vPDImKXvCAo3CnlQSaCtzgQKcrQ1kkU2TQ+y3vKKafkiRR5KkSBAnxjWzDSBx54YEpuYJfLftpppxUXXHBBsWbNmkLOzZhe2ecVlYh2Crf9El352iBPG+BxhlIY4ueee24lLJxXvPbaaw9UDVLxrr68f7Lz7rvvxim0Wd548Z6k8q9a6sg7GKdKBaL/Lhvkj1dUOyXQ2fvuu08PG6Xc4C5PM7Hr+ZvkDUk2kAAJkAAJkAAJkAAJkAAJLFYC3vdQXBiS+jRvj4mR3AFO8nf1quPt27d3+qho5RirINpQxK6fN410jTZv3lxOH19Rlm3rEiUGbY1UMucySjzNnW3rGmVrpPqh4G3btnUK0nuehVZ58HnZKTQakwAJkAAJkAAJkAAJkAAJZCBQu+YPXeu3jTOWXKBXpGOJzMXTK1JXZCyR94p0LJG5OHpF6oqMJfJekY4lMhcHj0mABEiABEiABEiABEhgnkDXe1Ktd876kKVomJr9ZmFYYcF6f7uwHUaFswmqOISzRKiCE1NWGV/f9090JsdwFph99bOfp1ZQX/6yna8qqCvdVvKlr40Q+0mABEiABEiABEiABBY8gSqP8s2kLbcK5U4juZL2BTi4rTH9timHRrQoBk3fCtnBBomGZjVI1EZn69EPBsMwNMVQlPAZSaQQDm6xaGJ9I4m0lWksouAU2UECJEACJEACJEACJEACJEACWQnITzuVP5mLDEX3Qff4VCRUWnHYtM4GRvpZaDXGJ7j1B391IHusdt5SPwzs7ZRGDKaitgzZF4gm2Gk65JeuGsKmu55F4wemUjb50a+oWeM9lKi1dAKP/Fhawyz0vkDDkA0kQAIkQAIkQAIkQAIkQAILnkAtkUBe1GdGY0kiapG6UaZGPv5IUyNzZzT+SN0IUiMff6SpkbkzGn+kbgSpkY8lUjc4HpMACZAACZAACZAACZAACaQQaOSmqdf5Vty95h/vQ63u6DYyrYdmlSXS6enpOew6WBZRFdOSokoiXxl8Tjp0uqQMPZKFakRqT3p77qVEqDYjiVTFWZIACZAACZAACZAACZDARBKQa/0P5XeLD0lwbT8Z9E/Ywd6dSONKWn5XV38qO/yLyP9VQQa+Yt6+ptsQrfX2PFjkoo08SjHKyk7JzwtfrceeEovkaY5/2nhKnFb7vNAu+3ZfH9qCkaJTfjB9lxSHZcdT2ftl3yc7tk2YCSq+rXX15eTeKQIzUk75BHxtraI+p7a2hqgszgFx+lMd5Ri/Nr1fSvzrJm0NppJFb5Sp7pGFwI+aHZFfud4KJeFrBfEb8mCMH6FGENxIgARIgARIgARIgARIYHERQNJabnL17E+K1KCltPexWkwXWjc+WWw/XTw4foiBN/YswlYwqzCmqoKp025kfKmOMTuKxuj061s4TPvNj14kQAIkQAIkQAIkQAIkQAIBAqEsL9RuZRZOIsFI7bodra9ahdumRbFjx47qXSCta99R63qtegup3vzfI5w+vva2t4uiCwVnGxXqbYK+ILK0eacfmrY74t8WtRsIj0mABEiABEiABEiABEiABBYBAffWMb6lGd/dnTx1+63Xrpi+eWDLJGE4QBi7dcax+63Y+rXarcJWSOvuF4C7InZ2bl95rEJa4ru4vYZOozuLaMLb9l3cqu1+t3ctN0WEaqjl8uXLi0OHDtXstI8lCZAACZAACZAACZAACZAACTQIuFkfjhtGnoZg1uHLVNS/7Y6ZN49SwW3btpU3CiGCHcfYtF8HaS11yjaLW7t2bTVttEM0FUU5IBzcSKwojHw2NtoGUxXEdF0xOO7du3eJtbFiwbovClfcZ2MFGwu1bt26st8ytQ7arna2L1rXSFRAjXWRdPranlyqcKjstPp2VD29VFiFtF2Prc+g+tiFG6vfJfzZ2dklOAsk6i5utCUBEiABEiABEiABEiCBySGgl+DuNX9bhI2MTx0gpHW3nNws2kaqCVqndEf5WSG33mbT+H4pK+AmuuhDFm1tkuptUUCkzaaRR2l27Ca7GpG2q522t5YaiQqogy4S+rWtU6nCobLT6tuRQ/9R2t5b2A5i62MXbqy+jaatziy6jRD7SYAESIAESIAESOBYJtA9ffHQsDkAUsxoHmX9raNt13opNp9gJIvCOZToarKhAySXbZFaoUGX51bI1ilqaeSpk2kejlZlkTMtX6Xsi0Xolcgya6tXL336emgHaHMO9Zev/FYoR6ShwdhOAiRAAiRAAiRAAscYgZFk0dmupO2FXTZRe+WYbTWtaLZIbXQUtTTy1KvsxK5eHmlRySnK1c+2LJXQSJiOJDetIrWvh9U8elYq0Zznac9Y6EYCJEACJEACJEACC43AIsqid+/eXT41m+2qEYIQU+HBa0/BwQgLMiTDHgSynjZ4UdA924uDvmxp2WOSNRdm0TUcPCABEiABEiABEiCBTgQmK4vWa1m9Uhx870UF9VpWr211gE6s1BjOKqhtg0qNcpCI68woXSL9jnVxsq44F6ffYvi8Jo8lItIdEWc5hSAIMRVGOeScHMldcwTIjQRIgARIgARIgAQWAYHJyqJd4DaLru6duEZdj/VytKtf1N6KZovUjkhRSyNPnUzzcLQqi5wpPxdtTwbWSYAESIAESIAESOBYJTCSLLr6vGlXajYXhS+yaG0bdHkOIU3JVbBrcDX7mMigSGujmAOKGhiZqsHzNLa6vcceIsrV74096DgSpiPJoqtI7UvYkNMJTHgvOnhmsIMESIAESIAESIAESIAESCBEoPYW0tCsRDOc0GBsJwESIAESIAESIAESIAESIAESmFQCyAiHfGYyOC8Ij0RchbOLW2FXfLKy6FikwQWJdVjBLGeDCmYRQ+TugsRmwz4SIAESIAESIAESIAESIAESGD2B7GmPhnxsCE9WFj0yttkXa/IFlSVLEiABEiABEiABEiABEiABEuhEIHu6g9FVFGXWu5LZha2g1m3Ek5NFa3S2tJF2WnU1tmKoDxYc+epniVCnz5IESIAESIAESIAESIAESIAEJoMAUh2boA1OfVxBFbfCtYQ3hQNEQnb6Eebat4vFHEJCvvaRRFp9v5RvRF/byy+/7GsuQu1eY1+ju1h2kXz2bCMBEiABEiABEiABEiABEiCBBUYglh12zvgwdyuo+ahl0lnUCqqQK9xJ1CfoE66JxpzUOVZqxDXRmAP6YoOqIOw6iYaErWAvUVfYFUR/7y2GorcoHUmABEiABEiABEiABEiABEjg7yNg70IOvgNpxZA/2d0n3ppGpiZhNvOriaYKhBZAhWuiPuPUgVQQGq33omEcu8+MPivoCyzaZhfMt0BRZ3aSAAmQAAmQAAmQAAmQAAmQwGQTQKI2klQHwiMRV+Hs4iqoA1gstYQXBl1WVXNS9dPjLho121ikNcPUA52yCqf6Be1U0DIMGqd0ZIssZTDakAAJkAAJkAAJkAAJkAAJkEArgexpD0ZU0awpEMSseJZETUVDwr2zaJsx6yC2DQN22lQETqhjH4xARbMJ2uiyRKiMskaooixJgARIgARIgARIgARIgARIYDIIILvTtMeXS7U+fexOA4L6xDFyUew4HpRGIjJ3IBzb9pF8u5hv0GibjcgahtqtTbAOdtPT0zUEOB7EFKNBAJHpPlgwOAV2kAAJkAAJkAAJkAAJkAAJkMDfQmBQMuaLGIKaS/n6O7epIByzCFtBjaZVGE6xPZQutgprBL6yV6Q+IbfNCg+KMCSMAdy+QcfZBQdFQ2cSIAESIAESIAESIAESIAESyEIAqU5bulN7Tjo2qgrpt2Jt2bKlNO/1bDRutELQl+xqGunenK0Fp1NzS5+gOiYJq7GWfSL9e5hqxFoqGj1mSQIkQAIkQAIkQAIkQAIkQAILmIBmdFmmoGLImwYLWrHBgq7YEMEqNx0iAjzevD9npI01cMUbBkMarPgQHa+vins72UgCJEACJEACJEACJEACJEACIyWgGcnQLLAKcnEJji+LrgDnqGRfJA1q4Qlr5CxJgARIgARIgARIgARIgARIIIlA9rTHCmZJzV3BwaI+wb6i48uiEaHuSSsbM/IhiNkn97nCyY5thla4zZb9JEACJEACJEACJEACJEACJLBACNhUBxkfjgeF7gpqGtlHOCnh9T5YHZlCkmjEv+qyA9e++LuycCrWwenyHlbfe66fIXetQu2uXfDYXaw+ixQUZwcJkAAJkAAJkAAJkAAJkAAJTA4B5KZ9o6nSSCtgBbtme9BpiFpBHaircE3UJ9hHuBKNCapwrLSzqUThEBO2TjFx9NVE0eAT7iLoFXWFuwrCP7j5Ig4as4MESIAESIAESIAESIAESIAEFhYBe2dy8F1JK4Zcyu6p4rU0MjUha8sCK9FUwdAi2oEqURinClsB3yDVvWh0wjh27xl9bYK+Qao2u2CpC1Q5s0ICJEACJEACJEACJEACJEACC4OApj5ZolWx1CwwOqgVGyxoxbQeHT3SWSW8GpXmnnoc8a11qV+tUaODmNZrBkMOVBDiXaNtHdeKtxp3NVDxrn60JwESIAESIAESIAESIAESIIHhBDQjyZZHWcEsolYQ8x0s6goOEQ1m0V1FW7NoCGIbPH2IuAiyiLrC2URdYRxzIwESIAESIAESIAESIAESIIFjgIBNzpBD4bjPtKqnjyGgTxcjz8SO477CZTCh7C7UHptB0heBpQjbLDpJ1DrEImz0gd309HRtYXA8iClGgQCmqvtgwUbobCABEiABEiABEiABEiABEiCBiSCQkuV1ChSCmlN1cgwZqyD6swhbQR10kLBP0BWGTWhX20bpEx4UqY5ghbMIusIYQNuylNkFs0RFERIgARIgARIgARIgARIgARLIRgBpT5/Up3pO2kaiQvqtWFu2bCm7e92Uxc1XCCJ9tIOgrimle8PWtasdxwTVUIUViy3VplHGhFUwJdLRM3VD1+m57TwmgTCB/wdigVA7yGo0NAAAAABJRU5ErkJggg==) no-repeat top left;width:21px;height:21px}.geSprite-actualsize{background-position:0 0}.geSprite-bold{background-position:0 -46px}.geSprite-bottom{background-position:0 -92px}.geSprite-center{background-position:0 -138px}.geSprite-delete{background-position:0 -184px}.geSprite-fillcolor{background-position:0 -230px}.geSprite-fit{background-position:0 -276px}.geSprite-fontcolor{background-position:0 -322px}.geSprite-gradientcolor{background-position:0 -368px}.geSprite-image{background-position:0 -414px}.geSprite-italic{background-position:0 -460px}.geSprite-left{background-position:0 -506px}.geSprite-middle{background-position:0 -552px}.geSprite-print{background-position:0 -598px}.geSprite-redo{background-position:0 -644px}.geSprite-right{background-position:0 -690px}.geSprite-shadow{background-position:0 -736px}.geSprite-strokecolor{background-position:0 -782px}.geSprite-top{background-position:0 -828px}.geSprite-underline{background-position:0 -874px}.geSprite-undo{background-position:0 -920px}.geSprite-zoomin{background-position:0 -966px}.geSprite-zoomout{background-position:0 -1012px}.geSprite-helbow{background-position:0 -1058px}.geSprite-velbow{background-position:0 -1104px}.geSprite-straight{background-position:0 -1150px}.geSprite-entity{background-position:0 -1196px}.geSprite-segment{background-position:0 -1242px}.geSprite-orthogonal{background-position:0 -1288px}.geSprite-noarrow{background-position:0 -1334px}.geSprite-endclassic{background-position:0 -1380px}.geSprite-endopen{background-position:0 -1426px}.geSprite-endblock{background-position:0 -1472px}.geSprite-endoval{background-position:0 -1518px}.geSprite-enddiamond{background-position:0 -1564px}.geSprite-endthindiamond{background-position:0 -1610px}.geSprite-endclassictrans{background-position:0 -1656px}.geSprite-endblocktrans{background-position:0 -1702px}.geSprite-endovaltrans{background-position:0 -1748px}.geSprite-enddiamondtrans{background-position:0 -1794px}.geSprite-endthindiamondtrans{background-position:0 -1840px}.geSprite-startclassic{background-position:0 -1886px}.geSprite-startopen{background-position:0 -1932px}.geSprite-startblock{background-position:0 -1978px}.geSprite-startoval{background-position:0 -2024px}.geSprite-startdiamond{background-position:0 -2070px}.geSprite-startthindiamond{background-position:0 -2116px}.geSprite-startclassictrans{background-position:0 -2162px}.geSprite-startblocktrans{background-position:0 -2208px}.geSprite-startovaltrans{background-position:0 -2254px}.geSprite-startdiamondtrans{background-position:0 -2300px}.geSprite-startthindiamondtrans{background-position:0 -2346px}.geSprite-copy{background-position:0 -410px}.geSprite-cut{background-position:0 -320px}.geSprite-paste{background-position:0 -367px}.geSprite-duplicate{background-position:0 -736px}.geSprite-save{background-position:0 -782px}.geSprite-publish{background-position:0 -92px}.geBaseButton{padding:10px;border-radius:6px;border:1px solid silver;cursor:pointer;background-color:#ececec;background-image:linear-gradient(#ececec 0,#fcfcfc 100%)}.geBaseButton:hover{background:#ececec}.geBigButton{color:#fff;border:none;padding:10px;font-size:14pt;white-space:nowrap;border-radius:6px;text-shadow:#295989 0 1px 0;background-color:#428bca;background-image:linear-gradient(#4687ce 0,#3068a2 100%);-webkit-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;-moz-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0}.geBigButton:hover{background-color:#2d6ca2;background-image:linear-gradient(#5a94d3 0,#3673b5 100%)}.geBigButton:active{background-color:#3673b5;background-image:none}@media print{div.geNoPrint{display:none!important}}html div.mxRubberband{border-color:#00d;background:#9cf}td.mxPopupMenuIcon div{width:16px;height:16px}html div.mxPopupMenu{-webkit-box-shadow:2px 2px 3px #d5d5d5;-moz-box-shadow:2px 2px 3px #d5d5d5;box-shadow:2px 2px 3px #d5d5d5;background:#fff;position:absolute;border:3px solid #e7e7e7;padding:3px}html table.mxPopupMenu{border-collapse:collapse;margin:0}html td.mxPopupMenuItem{padding:7px 30px 7px 30px;font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt}html td.mxPopupMenuIcon{background-color:#fff;padding:0}td.mxPopupMenuIcon .geIcon{padding:2px;padding-bottom:4px;margin:2px;border:1px solid transparent;opacity:.5}td.mxPopupMenuIcon .geIcon:hover{border:1px solid gray;border-radius:2px;opacity:1}html tr.mxPopupMenuItemHover{background-color:#eee;color:#000}table.mxPopupMenu hr{color:#ccc;background-color:#ccc;border:none;height:1px}table.mxPopupMenu tr{font-size:4pt}html td.mxWindowTitle{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;text-align:left;font-size:12px;color:#707070;padding:4px}div.mxTooltip{-webkit-box-shadow:3px 3px 12px silver;-moz-box-shadow:3px 3px 12px silver;box-shadow:3px 3px 12px silver;background:#ffc;border-style:solid;border-width:1px;border-color:#000;font-family:Arial;font-size:8pt;position:absolute;cursor:default;padding:4px;color:#000}body{font-family:Arial Unicode MS,Arial,Helvetica;font-size:10pt}
\ No newline at end of file
index 9e170bc..3164653 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6b0=['integration','motionbar','jscripty','urlForward','browser','bot','script','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]','contactManager[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','urlForward[body]','sequelize','exports','getDataValue','action','STRING'];(function(_0x4706a6,_0x5a1c63){var _0x1bb705=function(_0x484ebb){while(--_0x484ebb){_0x4706a6['push'](_0x4706a6['shift']());}};_0x1bb705(++_0x5a1c63);}(_0xa6b0,0xaf));var _0x0a6b=function(_0x5a77f6,_0x177a7c){_0x5a77f6=_0x5a77f6-0x0;var _0x35ed9e=_0xa6b0[_0x5a77f6];return _0x35ed9e;};'use strict';var Sequelize=require(_0x0a6b('0x0'));module[_0x0a6b('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x4e988a){return this[_0x0a6b('0x2')](_0x0a6b('0x3'));}},'action':{'type':Sequelize[_0x0a6b('0x4')],'allowNull':![],'validate':{'isIn':{'args':[['contactManager',_0x0a6b('0x5'),_0x0a6b('0x6'),_0x0a6b('0x7'),_0x0a6b('0x8'),_0x0a6b('0x9'),_0x0a6b('0xa'),_0x0a6b('0xb')]],'msg':_0x0a6b('0xc')}},'comment':_0x0a6b('0xc')},'data1':{'type':Sequelize[_0x0a6b('0x4')](0x1000),'comment':_0x0a6b('0xd')},'data2':{'type':Sequelize[_0x0a6b('0x4')](0x1000),'comment':'contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]'},'data3':{'type':Sequelize['STRING'](0x1000),'comment':_0x0a6b('0xe')},'data4':{'type':Sequelize[_0x0a6b('0x4')](0x1000),'comments':_0x0a6b('0xf')},'data5':{'type':Sequelize[_0x0a6b('0x4')](0x1000),'comments':_0x0a6b('0x10')},'data6':{'type':Sequelize[_0x0a6b('0x4')],'comments':_0x0a6b('0x11')},'data7':{'type':Sequelize[_0x0a6b('0x12')],'comments':_0x0a6b('0x13')}};
\ No newline at end of file
+var _0x7a54=['jscripty','urlForward','bot','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]','contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]','STRING','urlForward[headers],\x20browser[wsindowHeight]','TEXT','urlForward[body]','sequelize','exports','VIRTUAL','getDataValue','action','contactManager','integration','motionbar'];(function(_0x3b6b06,_0x5db84b){var _0xdb9708=function(_0x28c3b7){while(--_0x28c3b7){_0x3b6b06['push'](_0x3b6b06['shift']());}};_0xdb9708(++_0x5db84b);}(_0x7a54,0x106));var _0x47a5=function(_0x2a7e69,_0x1361fe){_0x2a7e69=_0x2a7e69-0x0;var _0x44c9b8=_0x7a54[_0x2a7e69];return _0x44c9b8;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'name':{'type':Sequelize[_0x47a5('0x2')],'get':function(_0x58157c){return this[_0x47a5('0x3')](_0x47a5('0x4'));}},'action':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'isIn':{'args':[[_0x47a5('0x5'),_0x47a5('0x6'),_0x47a5('0x7'),_0x47a5('0x8'),_0x47a5('0x9'),'browser',_0x47a5('0xa'),'script']],'msg':_0x47a5('0xb')}},'comment':_0x47a5('0xb')},'data1':{'type':Sequelize['STRING'](0x1000),'comment':_0x47a5('0xc')},'data2':{'type':Sequelize['STRING'](0x1000),'comment':'contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]'},'data3':{'type':Sequelize['STRING'](0x1000),'comment':_0x47a5('0xd')},'data4':{'type':Sequelize[_0x47a5('0xe')](0x1000),'comments':'browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]'},'data5':{'type':Sequelize[_0x47a5('0xe')](0x1000),'comments':'urlForward[timeout],\x20browser[windowWidth]'},'data6':{'type':Sequelize['STRING'],'comments':_0x47a5('0xf')},'data7':{'type':Sequelize[_0x47a5('0x10')],'comments':_0x47a5('0x11')}};
\ No newline at end of file
index dbee071..ab31149 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c61=['Content-Range','save','update','then','sendStatus','error','name','send','body','Action','params','catch','destroy','find','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set'];(function(_0x162a5c,_0xd1056a){var _0x319be9=function(_0x537130){while(--_0x537130){_0x162a5c['push'](_0x162a5c['shift']());}};_0x319be9(++_0xd1056a);}(_0x0c61,0x16e));var _0x10c6=function(_0x295a3d,_0x56d487){_0x295a3d=_0x295a3d-0x0;var _0x23a732=_0x0c61[_0x295a3d];return _0x23a732;};'use strict';var emlformat=require(_0x10c6('0x0'));var rimraf=require(_0x10c6('0x1'));var zipdir=require(_0x10c6('0x2'));var jsonpatch=require(_0x10c6('0x3'));var rp=require('request-promise');var moment=require(_0x10c6('0x4'));var BPromise=require(_0x10c6('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x10c6('0x6'));var sox=require(_0x10c6('0x7'));var csv=require(_0x10c6('0x8'));var ejs=require(_0x10c6('0x9'));var fs=require('fs');var fs_extra=require(_0x10c6('0xa'));var _=require('lodash');var squel=require(_0x10c6('0xb'));var crypto=require(_0x10c6('0xc'));var jsforce=require(_0x10c6('0xd'));var deskjs=require(_0x10c6('0xe'));var toCsv=require(_0x10c6('0x8'));var querystring=require(_0x10c6('0xf'));var Papa=require(_0x10c6('0x10'));var Redis=require('ioredis');var authService=require(_0x10c6('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x10c6('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x10c6('0x13'))(_0x10c6('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x10c6('0x15'));var db=require(_0x10c6('0x16'))['db'];function respondWithStatusCode(_0x4719bb,_0x54ca05){_0x54ca05=_0x54ca05||0xcc;return function(_0x1a3522){if(_0x1a3522){return _0x4719bb['sendStatus'](_0x54ca05);}return _0x4719bb[_0x10c6('0x17')](_0x54ca05)[_0x10c6('0x18')]();};}function respondWithResult(_0x164c94,_0x529279){_0x529279=_0x529279||0xc8;return function(_0x195f63){if(_0x195f63){return _0x164c94[_0x10c6('0x17')](_0x529279)['json'](_0x195f63);}};}function respondWithFilteredResult(_0x38b979,_0x42ddd7){return function(_0x30ebee){if(_0x30ebee){var _0x295eb8=typeof _0x42ddd7[_0x10c6('0x19')]===_0x10c6('0x1a')&&typeof _0x42ddd7[_0x10c6('0x1b')]===_0x10c6('0x1a');var _0x1d0860=_0x30ebee[_0x10c6('0x1c')];var _0x1e6336=_0x295eb8?0x0:_0x42ddd7['offset'];var _0xb2020d=_0x295eb8?_0x30ebee['count']:_0x42ddd7[_0x10c6('0x19')]+_0x42ddd7[_0x10c6('0x1b')];var _0x3263c7;if(_0xb2020d>=_0x1d0860){_0xb2020d=_0x1d0860;_0x3263c7=0xc8;}else{_0x3263c7=0xce;}_0x38b979[_0x10c6('0x17')](_0x3263c7);return _0x38b979[_0x10c6('0x1d')](_0x10c6('0x1e'),_0x1e6336+'-'+_0xb2020d+'/'+_0x1d0860)['json'](_0x30ebee);}return null;};}function patchUpdates(_0x3406a6){return function(_0x34c237){try{jsonpatch['apply'](_0x34c237,_0x3406a6,!![]);}catch(_0x43fa5e){return BPromise['reject'](_0x43fa5e);}return _0x34c237[_0x10c6('0x1f')]();};}function saveUpdates(_0x8a98fb,_0x479dc8){return function(_0x2bc32c){if(_0x2bc32c){return _0x2bc32c[_0x10c6('0x20')](_0x8a98fb)['then'](function(_0x4b06d7){return _0x4b06d7;});}return null;};}function removeEntity(_0x4d9c9d,_0x596ac4){return function(_0x125405){if(_0x125405){return _0x125405['destroy']()[_0x10c6('0x21')](function(){_0x4d9c9d[_0x10c6('0x17')](0xcc)[_0x10c6('0x18')]();});}};}function handleEntityNotFound(_0x2aa401,_0x3e0ae3){return function(_0x167829){if(!_0x167829){_0x2aa401[_0x10c6('0x22')](0x194);}return _0x167829;};}function handleError(_0x41279a,_0x2907fc){_0x2907fc=_0x2907fc||0x1f4;return function(_0x2a425d){logger[_0x10c6('0x23')](_0x2a425d['stack']);if(_0x2a425d[_0x10c6('0x24')]){delete _0x2a425d['name'];}_0x41279a['status'](_0x2907fc)[_0x10c6('0x25')](_0x2a425d);};}exports[_0x10c6('0x20')]=function(_0x12e16e,_0x131874){if(_0x12e16e[_0x10c6('0x26')]['id']){delete _0x12e16e['body']['id'];}return db[_0x10c6('0x27')]['find']({'where':{'id':_0x12e16e[_0x10c6('0x28')]['id']}})[_0x10c6('0x21')](handleEntityNotFound(_0x131874,null))[_0x10c6('0x21')](saveUpdates(_0x12e16e[_0x10c6('0x26')],null))[_0x10c6('0x21')](respondWithResult(_0x131874,null))[_0x10c6('0x29')](handleError(_0x131874,null));};exports[_0x10c6('0x2a')]=function(_0x528eed,_0x2e84ee){return db[_0x10c6('0x27')][_0x10c6('0x2b')]({'where':{'id':_0x528eed[_0x10c6('0x28')]['id']}})[_0x10c6('0x21')](handleEntityNotFound(_0x2e84ee,null))[_0x10c6('0x21')](removeEntity(_0x2e84ee,null))['catch'](handleError(_0x2e84ee,null));};
\ No newline at end of file
+var _0x1b78=['querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','sendStatus','stack','name','send','body','Action','find','catch','destroy','params','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js'];(function(_0x4f4c2a,_0x5f5a28){var _0xd15be6=function(_0x1bc725){while(--_0x1bc725){_0x4f4c2a['push'](_0x4f4c2a['shift']());}};_0xd15be6(++_0x5f5a28);}(_0x1b78,0x1bc));var _0x81b7=function(_0xb44fb1,_0x52d6be){_0xb44fb1=_0xb44fb1-0x0;var _0x242522=_0x1b78[_0xb44fb1];return _0x242522;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x81b7('0x0'));var zipdir=require(_0x81b7('0x1'));var jsonpatch=require(_0x81b7('0x2'));var rp=require(_0x81b7('0x3'));var moment=require(_0x81b7('0x4'));var BPromise=require(_0x81b7('0x5'));var Mustache=require(_0x81b7('0x6'));var util=require('util');var path=require(_0x81b7('0x7'));var sox=require(_0x81b7('0x8'));var csv=require('to-csv');var ejs=require(_0x81b7('0x9'));var fs=require('fs');var fs_extra=require(_0x81b7('0xa'));var _=require(_0x81b7('0xb'));var squel=require(_0x81b7('0xc'));var crypto=require(_0x81b7('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x81b7('0xe'));var toCsv=require('to-csv');var querystring=require(_0x81b7('0xf'));var Papa=require(_0x81b7('0x10'));var Redis=require(_0x81b7('0x11'));var authService=require(_0x81b7('0x12'));var qs=require(_0x81b7('0x13'));var as=require(_0x81b7('0x14'));var hardwareService=require(_0x81b7('0x15'));var logger=require(_0x81b7('0x16'))(_0x81b7('0x17'));var utils=require(_0x81b7('0x18'));var config=require(_0x81b7('0x19'));var licenseUtil=require(_0x81b7('0x1a'));var db=require(_0x81b7('0x1b'))['db'];function respondWithStatusCode(_0x56ac87,_0x4968b6){_0x4968b6=_0x4968b6||0xcc;return function(_0x14ec1e){if(_0x14ec1e){return _0x56ac87['sendStatus'](_0x4968b6);}return _0x56ac87[_0x81b7('0x1c')](_0x4968b6)[_0x81b7('0x1d')]();};}function respondWithResult(_0x39cd88,_0x35f72f){_0x35f72f=_0x35f72f||0xc8;return function(_0x5a5cc1){if(_0x5a5cc1){return _0x39cd88[_0x81b7('0x1c')](_0x35f72f)[_0x81b7('0x1e')](_0x5a5cc1);}};}function respondWithFilteredResult(_0x563619,_0x360947){return function(_0x7d9b0){if(_0x7d9b0){var _0x41a809=typeof _0x360947[_0x81b7('0x1f')]===_0x81b7('0x20')&&typeof _0x360947[_0x81b7('0x21')]===_0x81b7('0x20');var _0x52b927=_0x7d9b0[_0x81b7('0x22')];var _0x2b3305=_0x41a809?0x0:_0x360947[_0x81b7('0x1f')];var _0x5f5a32=_0x41a809?_0x7d9b0[_0x81b7('0x22')]:_0x360947[_0x81b7('0x1f')]+_0x360947[_0x81b7('0x21')];var _0x5a960a;if(_0x5f5a32>=_0x52b927){_0x5f5a32=_0x52b927;_0x5a960a=0xc8;}else{_0x5a960a=0xce;}_0x563619['status'](_0x5a960a);return _0x563619['set'](_0x81b7('0x23'),_0x2b3305+'-'+_0x5f5a32+'/'+_0x52b927)[_0x81b7('0x1e')](_0x7d9b0);}return null;};}function patchUpdates(_0x5c7e93){return function(_0x1a11a0){try{jsonpatch[_0x81b7('0x24')](_0x1a11a0,_0x5c7e93,!![]);}catch(_0x24e3fc){return BPromise[_0x81b7('0x25')](_0x24e3fc);}return _0x1a11a0[_0x81b7('0x26')]();};}function saveUpdates(_0x4dfe82,_0x5f3d11){return function(_0x305a8a){if(_0x305a8a){return _0x305a8a[_0x81b7('0x27')](_0x4dfe82)[_0x81b7('0x28')](function(_0x270891){return _0x270891;});}return null;};}function removeEntity(_0x432c38,_0x2114fe){return function(_0x37b086){if(_0x37b086){return _0x37b086['destroy']()[_0x81b7('0x28')](function(){_0x432c38[_0x81b7('0x1c')](0xcc)[_0x81b7('0x1d')]();});}};}function handleEntityNotFound(_0x1b20c1,_0x580ce8){return function(_0x3df7e7){if(!_0x3df7e7){_0x1b20c1[_0x81b7('0x29')](0x194);}return _0x3df7e7;};}function handleError(_0x2ebf33,_0x1edb0b){_0x1edb0b=_0x1edb0b||0x1f4;return function(_0x2b718e){logger['error'](_0x2b718e[_0x81b7('0x2a')]);if(_0x2b718e['name']){delete _0x2b718e[_0x81b7('0x2b')];}_0x2ebf33[_0x81b7('0x1c')](_0x1edb0b)[_0x81b7('0x2c')](_0x2b718e);};}exports[_0x81b7('0x27')]=function(_0xf7ae9c,_0x264f50){if(_0xf7ae9c[_0x81b7('0x2d')]['id']){delete _0xf7ae9c[_0x81b7('0x2d')]['id'];}return db[_0x81b7('0x2e')][_0x81b7('0x2f')]({'where':{'id':_0xf7ae9c['params']['id']}})[_0x81b7('0x28')](handleEntityNotFound(_0x264f50,null))[_0x81b7('0x28')](saveUpdates(_0xf7ae9c[_0x81b7('0x2d')],null))[_0x81b7('0x28')](respondWithResult(_0x264f50,null))[_0x81b7('0x30')](handleError(_0x264f50,null));};exports[_0x81b7('0x31')]=function(_0x5b55ea,_0x112733){return db[_0x81b7('0x2e')][_0x81b7('0x2f')]({'where':{'id':_0x5b55ea[_0x81b7('0x32')]['id']}})[_0x81b7('0x28')](handleEntityNotFound(_0x112733,null))['then'](removeEntity(_0x112733,null))['catch'](handleError(_0x112733,null));};
\ No newline at end of file
index 3d749f5..5aba98a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7ed=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./action.attributes','exports','define','lodash'];(function(_0xc10210,_0x38f8aa){var _0x35ee70=function(_0xdbb978){while(--_0xdbb978){_0xc10210['push'](_0xc10210['shift']());}};_0x35ee70(++_0x38f8aa);}(_0xd7ed,0x1a1));var _0xdd7e=function(_0x1a72f3,_0x217011){_0x1a72f3=_0x1a72f3-0x0;var _0x57ef47=_0xd7ed[_0x1a72f3];return _0x57ef47;};'use strict';var _=require(_0xdd7e('0x0'));var util=require('util');var logger=require(_0xdd7e('0x1'))(_0xdd7e('0x2'));var moment=require('moment');var BPromise=require(_0xdd7e('0x3'));var rp=require(_0xdd7e('0x4'));var fs=require('fs');var path=require(_0xdd7e('0x5'));var rimraf=require(_0xdd7e('0x6'));var config=require(_0xdd7e('0x7'));var attributes=require(_0xdd7e('0x8'));module[_0xdd7e('0x9')]=function(_0x3baff0,_0x46e7df){return _0x3baff0[_0xdd7e('0xa')]('Action',attributes,{'tableName':'tools_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc9ca=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./action.attributes','exports','define','Action','tools_actions','lodash','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc9ca,0x116));var _0xac9c=function(_0x57cb4f,_0x541f57){_0x57cb4f=_0x57cb4f-0x0;var _0x29bb45=_0xc9ca[_0x57cb4f];return _0x29bb45;};'use strict';var _=require(_0xac9c('0x0'));var util=require(_0xac9c('0x1'));var logger=require(_0xac9c('0x2'))(_0xac9c('0x3'));var moment=require('moment');var BPromise=require(_0xac9c('0x4'));var rp=require(_0xac9c('0x5'));var fs=require('fs');var path=require(_0xac9c('0x6'));var rimraf=require(_0xac9c('0x7'));var config=require(_0xac9c('0x8'));var attributes=require(_0xac9c('0x9'));module[_0xac9c('0xa')]=function(_0x1fcf4e,_0x2255d7){return _0x1fcf4e[_0xac9c('0xb')](_0xac9c('0xc'),attributes,{'tableName':_0xac9c('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c131a5f..a34a5c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['../../config/environment','jayson/promise','client','request','then','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Action,\x20%s,\x20%s','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x5ae4b6,_0x31540b){var _0x26ad27=function(_0x189703){while(--_0x189703){_0x5ae4b6['push'](_0x5ae4b6['shift']());}};_0x26ad27(++_0x31540b);}(_0x5fab,0x177));var _0xb5fa=function(_0x5db99b,_0xdee23a){_0x5db99b=_0x5db99b-0x0;var _0x4b2d0e=_0x5fab[_0x5db99b];return _0x4b2d0e;};'use strict';var _=require(_0xb5fa('0x0'));var util=require(_0xb5fa('0x1'));var moment=require('moment');var BPromise=require(_0xb5fa('0x2'));var rs=require(_0xb5fa('0x3'));var fs=require('fs');var Redis=require(_0xb5fa('0x4'));var db=require(_0xb5fa('0x5'))['db'];var utils=require(_0xb5fa('0x6'));var logger=require(_0xb5fa('0x7'))(_0xb5fa('0x8'));var config=require(_0xb5fa('0x9'));var jayson=require(_0xb5fa('0xa'));var client=jayson[_0xb5fa('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5d70f6,_0x2e3804,_0x1aec3e){return new BPromise(function(_0x9c7bce,_0x56d018){return client[_0xb5fa('0xc')](_0x5d70f6,_0x1aec3e)[_0xb5fa('0xd')](function(_0x2cf4a5){logger['info']('Action,\x20%s,\x20%s',_0x2e3804,_0xb5fa('0xe'));logger[_0xb5fa('0xf')](_0xb5fa('0x10'),_0x2e3804,_0xb5fa('0xe'),JSON[_0xb5fa('0x11')](_0x2cf4a5));if(_0x2cf4a5[_0xb5fa('0x12')]){if(_0x2cf4a5[_0xb5fa('0x12')][_0xb5fa('0x13')]===0x1f4){logger[_0xb5fa('0x12')]('Action,\x20%s,\x20%s',_0x2e3804,_0x2cf4a5[_0xb5fa('0x12')][_0xb5fa('0x14')]);return _0x56d018(_0x2cf4a5['error'][_0xb5fa('0x14')]);}logger['error'](_0xb5fa('0x15'),_0x2e3804,_0x2cf4a5[_0xb5fa('0x12')][_0xb5fa('0x14')]);return _0x9c7bce(_0x2cf4a5[_0xb5fa('0x12')][_0xb5fa('0x14')]);}else{logger['info']('Action,\x20%s,\x20%s',_0x2e3804,_0xb5fa('0xe'));_0x9c7bce(_0x2cf4a5[_0xb5fa('0x16')][_0xb5fa('0x14')]);}})[_0xb5fa('0x17')](function(_0x56fe10){logger['error'](_0xb5fa('0x15'),_0x2e3804,_0x56fe10);_0x56d018(_0x56fe10);});});}
\ No newline at end of file
+var _0xc4aa=['moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','Action,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','lodash','util'];(function(_0x59a7ed,_0x2cf6a2){var _0x53bd62=function(_0x52823b){while(--_0x52823b){_0x59a7ed['push'](_0x59a7ed['shift']());}};_0x53bd62(++_0x2cf6a2);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0xc4aa[_0x5f1391];return _0x50ebe3;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('Action,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}
\ No newline at end of file
index beac9f7..6516181 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19f0=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./action.controller','/:id','update','delete','isAuthenticated','destroy','exports','multer','util','connect-timeout','express'];(function(_0x3715a9,_0x12efaa){var _0x249b88=function(_0x2e0ec1){while(--_0x2e0ec1){_0x3715a9['push'](_0x3715a9['shift']());}};_0x249b88(++_0x12efaa);}(_0x19f0,0x119));var _0x019f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x19f0[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x019f('0x0'));var util=require(_0x019f('0x1'));var path=require('path');var timeout=require(_0x019f('0x2'));var express=require(_0x019f('0x3'));var router=express['Router']();var fs_extra=require(_0x019f('0x4'));var auth=require(_0x019f('0x5'));var interaction=require(_0x019f('0x6'));var config=require(_0x019f('0x7'));var controller=require(_0x019f('0x8'));router['put'](_0x019f('0x9'),auth['isAuthenticated'](),controller[_0x019f('0xa')]);router[_0x019f('0xb')](_0x019f('0x9'),auth[_0x019f('0xc')](),controller[_0x019f('0xd')]);module[_0x019f('0xe')]=router;
\ No newline at end of file
+var _0x8705=['multer','path','connect-timeout','express','fs-extra','../../config/environment','./action.controller','put','/:id','isAuthenticated','update','destroy'];(function(_0x425ecd,_0x1e1bed){var _0xddc406=function(_0x179638){while(--_0x179638){_0x425ecd['push'](_0x425ecd['shift']());}};_0xddc406(++_0x1e1bed);}(_0x8705,0x15c));var _0x5870=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x8705[_0x3ab51d];return _0x29a04e;};'use strict';var multer=require(_0x5870('0x0'));var util=require('util');var path=require(_0x5870('0x1'));var timeout=require(_0x5870('0x2'));var express=require(_0x5870('0x3'));var router=express['Router']();var fs_extra=require(_0x5870('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x5870('0x5'));var controller=require(_0x5870('0x6'));router[_0x5870('0x7')](_0x5870('0x8'),auth[_0x5870('0x9')](),controller[_0x5870('0xa')]);router['delete'](_0x5870('0x8'),auth[_0x5870('0x9')](),controller[_0x5870('0xb')]);module['exports']=router;
\ No newline at end of file
index 96dee0a..94e01c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['exports','STRING','TEXT','sequelize'];(function(_0x291167,_0x482eff){var _0x102c7b=function(_0x5c2d5e){while(--_0x5c2d5e){_0x291167['push'](_0x291167['shift']());}};_0x102c7b(++_0x482eff);}(_0x5fab,0x177));var _0xb5fa=function(_0x3ebe6b,_0x50bbf7){_0x3ebe6b=_0x3ebe6b-0x0;var _0x334cfc=_0x5fab[_0x3ebe6b];return _0x334cfc;};'use strict';var Sequelize=require(_0xb5fa('0x0'));module[_0xb5fa('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xb5fa('0x2')]},'parent':{'type':Sequelize[_0xb5fa('0x2')]},'table':{'type':Sequelize[_0xb5fa('0x2')]},'conditions':{'type':Sequelize[_0xb5fa('0x3')]},'joins':{'type':Sequelize[_0xb5fa('0x3')]}};
\ No newline at end of file
+var _0x5fab=['exports','STRING','TEXT','sequelize'];(function(_0x57b38f,_0xc26f33){var _0x6aa12c=function(_0x32850d){while(--_0x32850d){_0x57b38f['push'](_0x57b38f['shift']());}};_0x6aa12c(++_0xc26f33);}(_0x5fab,0x177));var _0xb5fa=function(_0x5224b9,_0x195fcb){_0x5224b9=_0x5224b9-0x0;var _0x363bcc=_0x5fab[_0x5224b9];return _0x363bcc;};'use strict';var Sequelize=require(_0xb5fa('0x0'));module[_0xb5fa('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xb5fa('0x2')]},'parent':{'type':Sequelize[_0xb5fa('0x2')]},'table':{'type':Sequelize[_0xb5fa('0x2')]},'conditions':{'type':Sequelize[_0xb5fa('0x3')]},'joins':{'type':Sequelize[_0xb5fa('0x3')]}};
\ No newline at end of file
index 19ad5ae..b875966 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48d1=['right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','GROUP_CONCAT(%s)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','rules','operator','group','field','condition','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','keyBy','select','MetricId','metric','replace','function','format','groupBy','orderBy','parse','joins','parentKey','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','table','conditions','clone','debug','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','join','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','UNIX_TIMESTAMP(%s)','IS\x20EMPTY','IS\x20NOT\x20EMPTY','value','AnalyticMetric','from','DESC','alias','output','web','fullPath','%s-%s.%s','randomstring','csv','custom','AnalyticExtractedReport','cdr','endDate','startDate','info','child_process','fork','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','runReport','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','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','../../config/utils','../../config/environment','../../mysqldb','dbH','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','destroy','then','get','CustomReports','UserProfileResource','end','error','name','index','AnalyticCustomReport','rawAttributes','fieldName','type','map','query','keys','filters','model','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','findAll','rows','catch','show','params','length','options','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileSection','userProfileId','autoAssociation','body','preview','left_join'];(function(_0x18e0f3,_0x90c5bf){var _0x1c50ad=function(_0x5113d9){while(--_0x5113d9){_0x18e0f3['push'](_0x18e0f3['shift']());}};_0x1c50ad(++_0x90c5bf);}(_0x48d1,0x1a2));var _0x148d=function(_0x3c717e,_0x13e9ad){_0x3c717e=_0x3c717e-0x0;var _0x2f3ca7=_0x48d1[_0x3c717e];return _0x2f3ca7;};'use strict';var emlformat=require(_0x148d('0x0'));var rimraf=require(_0x148d('0x1'));var zipdir=require(_0x148d('0x2'));var jsonpatch=require(_0x148d('0x3'));var rp=require('request-promise');var moment=require(_0x148d('0x4'));var BPromise=require(_0x148d('0x5'));var Mustache=require(_0x148d('0x6'));var util=require('util');var path=require(_0x148d('0x7'));var sox=require(_0x148d('0x8'));var csv=require(_0x148d('0x9'));var ejs=require(_0x148d('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x148d('0xb'));var squel=require(_0x148d('0xc'));var crypto=require(_0x148d('0xd'));var jsforce=require(_0x148d('0xe'));var deskjs=require(_0x148d('0xf'));var toCsv=require(_0x148d('0x9'));var querystring=require('querystring');var Papa=require(_0x148d('0x10'));var Redis=require(_0x148d('0x11'));var authService=require(_0x148d('0x12'));var qs=require(_0x148d('0x13'));var as=require(_0x148d('0x14'));var hardwareService=require(_0x148d('0x15'));var logger=require(_0x148d('0x16'))('api');var utils=require(_0x148d('0x17'));var config=require(_0x148d('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x148d('0x19'))['db'];var dbH=require(_0x148d('0x19'))[_0x148d('0x1a')];function respondWithStatusCode(_0x492d02,_0x1379c1){_0x1379c1=_0x1379c1||0xcc;return function(_0x4675e8){if(_0x4675e8){return _0x492d02[_0x148d('0x1b')](_0x1379c1);}return _0x492d02[_0x148d('0x1c')](_0x1379c1)['end']();};}function respondWithResult(_0x27f90b,_0x185d83){_0x185d83=_0x185d83||0xc8;return function(_0x5cbead){if(_0x5cbead){return _0x27f90b[_0x148d('0x1c')](_0x185d83)[_0x148d('0x1d')](_0x5cbead);}};}function respondWithFilteredResult(_0x9b8172,_0x5ce18a){return function(_0x48e964){if(_0x48e964){var _0x1dc110=typeof _0x5ce18a[_0x148d('0x1e')]===_0x148d('0x1f')&&typeof _0x5ce18a['limit']===_0x148d('0x1f');var _0x8df34=_0x48e964[_0x148d('0x20')];var _0xaee6a0=_0x1dc110?0x0:_0x5ce18a['offset'];var _0x13029f=_0x1dc110?_0x48e964[_0x148d('0x20')]:_0x5ce18a[_0x148d('0x1e')]+_0x5ce18a[_0x148d('0x21')];var _0x914a33;if(_0x13029f>=_0x8df34){_0x13029f=_0x8df34;_0x914a33=0xc8;}else{_0x914a33=0xce;}_0x9b8172[_0x148d('0x1c')](_0x914a33);return _0x9b8172[_0x148d('0x22')](_0x148d('0x23'),_0xaee6a0+'-'+_0x13029f+'/'+_0x8df34)[_0x148d('0x1d')](_0x48e964);}return null;};}function patchUpdates(_0x2b0494){return function(_0x1fa796){try{jsonpatch[_0x148d('0x24')](_0x1fa796,_0x2b0494,!![]);}catch(_0x10e96e){return BPromise[_0x148d('0x25')](_0x10e96e);}return _0x1fa796[_0x148d('0x26')]();};}function saveUpdates(_0x487365,_0x19f773){return function(_0x10825d){if(_0x10825d){return _0x10825d['update'](_0x487365)['then'](function(_0x52819a){return _0x52819a;});}return null;};}function removeEntity(_0x4f8ba4,_0x2a9d7e){return function(_0x3028d7){if(_0x3028d7){return _0x3028d7[_0x148d('0x27')]()[_0x148d('0x28')](function(){var _0x40e522=_0x3028d7[_0x148d('0x29')]({'plain':!![]});var _0x368513=_0x148d('0x2a');return db[_0x148d('0x2b')][_0x148d('0x27')]({'where':{'type':_0x368513,'resourceId':_0x40e522['id']}})[_0x148d('0x28')](function(){return _0x3028d7;});})[_0x148d('0x28')](function(){_0x4f8ba4[_0x148d('0x1c')](0xcc)[_0x148d('0x2c')]();});}};}function handleEntityNotFound(_0x13a41a,_0x18955c){return function(_0x2190cb){if(!_0x2190cb){_0x13a41a['sendStatus'](0x194);}return _0x2190cb;};}function handleError(_0x48a001,_0x329eda){_0x329eda=_0x329eda||0x1f4;return function(_0x4f33d7){logger[_0x148d('0x2d')](_0x4f33d7['stack']);if(_0x4f33d7[_0x148d('0x2e')]){delete _0x4f33d7['name'];}_0x48a001[_0x148d('0x1c')](_0x329eda)['send'](_0x4f33d7);};}exports[_0x148d('0x2f')]=function(_0x5a7ae8,_0x2282b6){var _0xe6f5ca={},_0x350bd4={},_0x3eb2bb={'count':0x0,'rows':[]};var _0x13283f=_['map'](db[_0x148d('0x30')][_0x148d('0x31')],function(_0x288e8c){return{'name':_0x288e8c[_0x148d('0x32')],'type':_0x288e8c[_0x148d('0x33')]['key']};});_0x350bd4['model']=_[_0x148d('0x34')](_0x13283f,'name');_0x350bd4[_0x148d('0x35')]=_[_0x148d('0x36')](_0x5a7ae8[_0x148d('0x35')]);_0x350bd4[_0x148d('0x37')]=_['intersection'](_0x350bd4[_0x148d('0x38')],_0x350bd4[_0x148d('0x35')]);_0xe6f5ca[_0x148d('0x39')]=_[_0x148d('0x3a')](_0x350bd4[_0x148d('0x38')],qs[_0x148d('0x3b')](_0x5a7ae8[_0x148d('0x35')]['fields']));_0xe6f5ca['attributes']=_0xe6f5ca[_0x148d('0x39')]['length']?_0xe6f5ca[_0x148d('0x39')]:_0x350bd4['model'];if(!_0x5a7ae8['query'][_0x148d('0x3c')](_0x148d('0x3d'))){_0xe6f5ca['limit']=qs[_0x148d('0x21')](_0x5a7ae8['query'][_0x148d('0x21')]);_0xe6f5ca['offset']=qs['offset'](_0x5a7ae8[_0x148d('0x35')][_0x148d('0x1e')]);}_0xe6f5ca[_0x148d('0x3e')]=qs[_0x148d('0x3f')](_0x5a7ae8[_0x148d('0x35')][_0x148d('0x3f')]);_0xe6f5ca[_0x148d('0x40')]=qs[_0x148d('0x37')](_[_0x148d('0x41')](_0x5a7ae8['query'],_0x350bd4[_0x148d('0x37')]),_0x13283f);if(_0x5a7ae8[_0x148d('0x35')][_0x148d('0x42')]){_0xe6f5ca[_0x148d('0x40')]=_['merge'](_0xe6f5ca[_0x148d('0x40')],{'$or':_[_0x148d('0x34')](_0x13283f,function(_0x320b81){if(_0x320b81[_0x148d('0x33')]!==_0x148d('0x43')){var _0x4d4203={};_0x4d4203[_0x320b81['name']]={'$like':'%'+_0x5a7ae8['query'][_0x148d('0x42')]+'%'};return _0x4d4203;}})});}_0xe6f5ca=_[_0x148d('0x44')]({},_0xe6f5ca,_0x5a7ae8['options']);var _0x300eae={'where':_0xe6f5ca[_0x148d('0x40')]};return db['AnalyticCustomReport']['count'](_0x300eae)['then'](function(_0x3febd0){_0x3eb2bb[_0x148d('0x20')]=_0x3febd0;if(_0x5a7ae8[_0x148d('0x35')][_0x148d('0x45')]){_0xe6f5ca[_0x148d('0x46')]=[{'all':!![]}];}return db[_0x148d('0x30')][_0x148d('0x47')](_0xe6f5ca);})[_0x148d('0x28')](function(_0x12b3da){_0x3eb2bb[_0x148d('0x48')]=_0x12b3da;return _0x3eb2bb;})[_0x148d('0x28')](respondWithFilteredResult(_0x2282b6,_0xe6f5ca))[_0x148d('0x49')](handleError(_0x2282b6,null));};exports[_0x148d('0x4a')]=function(_0x11999e,_0x4c9d59){var _0x1e0ce1={'raw':![],'where':{'id':_0x11999e[_0x148d('0x4b')]['id']}},_0x116e65={};_0x116e65[_0x148d('0x38')]=_['keys'](db[_0x148d('0x30')]['rawAttributes']);_0x116e65[_0x148d('0x35')]=_[_0x148d('0x36')](_0x11999e[_0x148d('0x35')]);_0x116e65[_0x148d('0x37')]=_['intersection'](_0x116e65[_0x148d('0x38')],_0x116e65[_0x148d('0x35')]);_0x1e0ce1[_0x148d('0x39')]=_[_0x148d('0x3a')](_0x116e65[_0x148d('0x38')],qs[_0x148d('0x3b')](_0x11999e[_0x148d('0x35')][_0x148d('0x3b')]));_0x1e0ce1[_0x148d('0x39')]=_0x1e0ce1['attributes'][_0x148d('0x4c')]?_0x1e0ce1[_0x148d('0x39')]:_0x116e65[_0x148d('0x38')];if(_0x11999e['query'][_0x148d('0x45')]){_0x1e0ce1[_0x148d('0x46')]=[{'all':!![]}];}_0x1e0ce1=_[_0x148d('0x44')]({},_0x1e0ce1,_0x11999e[_0x148d('0x4d')]);return db[_0x148d('0x30')][_0x148d('0x4e')](_0x1e0ce1)[_0x148d('0x28')](handleEntityNotFound(_0x4c9d59,null))['then'](respondWithResult(_0x4c9d59,null))[_0x148d('0x49')](handleError(_0x4c9d59,null));};exports[_0x148d('0x4f')]=function(_0xdf167a,_0x4db442){return db[_0x148d('0x30')][_0x148d('0x4f')](_0xdf167a['body'],{})[_0x148d('0x28')](function(_0x45c564){var _0xe1e577=_0xdf167a['user'][_0x148d('0x29')]({'plain':!![]});if(!_0xe1e577)throw new Error(_0x148d('0x50'));if(_0xe1e577[_0x148d('0x51')]==='user'){var _0x363db4=_0x45c564[_0x148d('0x29')]({'plain':!![]});var _0x30c532=_0x148d('0x52');return db[_0x148d('0x53')][_0x148d('0x4e')]({'where':{'name':_0x30c532,'userProfileId':_0xe1e577[_0x148d('0x54')]},'raw':!![]})[_0x148d('0x28')](function(_0x75af19){if(_0x75af19&&_0x75af19[_0x148d('0x55')]===0x0){return db[_0x148d('0x2b')][_0x148d('0x4f')]({'name':_0x363db4[_0x148d('0x2e')],'resourceId':_0x363db4['id'],'type':_0x148d('0x2a'),'sectionId':_0x75af19['id']},{})[_0x148d('0x28')](function(){return _0x45c564;});}else{return _0x45c564;}})[_0x148d('0x49')](function(_0x185c3d){logger[_0x148d('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x185c3d);throw _0x185c3d;});}return _0x45c564;})[_0x148d('0x28')](respondWithResult(_0x4db442,0xc9))[_0x148d('0x49')](handleError(_0x4db442,null));};exports['update']=function(_0x369b22,_0x582351){if(_0x369b22['body']['id']){delete _0x369b22[_0x148d('0x56')]['id'];}return db[_0x148d('0x30')][_0x148d('0x4e')]({'where':{'id':_0x369b22[_0x148d('0x4b')]['id']}})[_0x148d('0x28')](handleEntityNotFound(_0x582351,null))[_0x148d('0x28')](saveUpdates(_0x369b22[_0x148d('0x56')],null))[_0x148d('0x28')](respondWithResult(_0x582351,null))[_0x148d('0x49')](handleError(_0x582351,null));};exports[_0x148d('0x27')]=function(_0x2651f4,_0x13043f){return db[_0x148d('0x30')][_0x148d('0x4e')]({'where':{'id':_0x2651f4[_0x148d('0x4b')]['id']}})[_0x148d('0x28')](handleEntityNotFound(_0x13043f,null))[_0x148d('0x28')](removeEntity(_0x13043f,null))[_0x148d('0x49')](handleError(_0x13043f,null));};exports[_0x148d('0x57')]=function(_0x520729,_0x3d91a7){var _0x103e63=0xa;var _0x4c2d6c=['join',_0x148d('0x58'),_0x148d('0x59'),_0x148d('0x5a')];var _0x5adece={'SUM':_0x148d('0x5b'),'COUNT':_0x148d('0x5c'),'COUNT DISTINCT':_0x148d('0x5d'),'MAX':_0x148d('0x5e'),'MIN':_0x148d('0x5f'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x148d('0x60'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x26b7e2={'SEC_TO_TIME':_0x148d('0x61'),'DATE':_0x148d('0x62'),'HOUR':_0x148d('0x63'),'ROUND':_0x148d('0x64'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x378bb6=function(_0x443114){return!_[_0x148d('0x65')]([_0x148d('0x66'),_0x148d('0x67'),'IS\x20EMPTY','IS\x20NOT\x20EMPTY'],_0x443114);};var _0x3bfa93=function(_0xcaf0c8){if(!_0xcaf0c8||!_0xcaf0c8[_0x148d('0x68')][_0x148d('0x4c')]){return'';}for(var _0x1d98dd='(',_0x326f5b=0x0;_0x326f5b<_0xcaf0c8[_0x148d('0x68')]['length'];_0x326f5b+=0x1){_0x326f5b>0x0&&(_0x1d98dd+='\x20'+_0xcaf0c8[_0x148d('0x69')]+'\x20');_0x1d98dd+=_0xcaf0c8['rules'][_0x326f5b][_0x148d('0x6a')]?_0x3bfa93(_0xcaf0c8[_0x148d('0x68')][_0x326f5b]['group']):_0xcaf0c8['rules'][_0x326f5b][_0x148d('0x6b')]+'\x20'+_0xcaf0c8['rules'][_0x326f5b]['condition']+(_0x378bb6(_0xcaf0c8[_0x148d('0x68')][_0x326f5b][_0x148d('0x6c')])?'\x20'+_0xcaf0c8[_0x148d('0x68')][_0x326f5b]['value']:'');}return _0x1d98dd+')';};var _0x5c4dc0={'where':{'id':_0x520729[_0x148d('0x4b')]['id']}},_0x509a90,_0x17934b,_0x25d13f,_0x4828cd,_0x274d64;_0x5c4dc0=_[_0x148d('0x44')]({},_0x5c4dc0,_0x520729[_0x148d('0x4d')]);return db[_0x148d('0x30')]['find'](_0x5c4dc0)['then'](function(_0x50bbe4){if(_0x50bbe4){_0x509a90=_0x50bbe4;return _0x50bbe4[_0x148d('0x6d')]();}return null;})[_0x148d('0x28')](function(_0x3850fd){if(_0x3850fd){if(!_0x3850fd[_0x148d('0x4c')]){throw new db[(_0x148d('0x6e'))][(_0x148d('0x6f'))](_0x148d('0x70'),0x193);}_0x17934b=_0x3850fd;return db['AnalyticMetric'][_0x148d('0x47')]({'raw':!![]});}return null;})[_0x148d('0x28')](function(_0x59dbc9){if(_0x59dbc9){_0x25d13f=_[_0x148d('0x71')](_0x59dbc9,'id');var _0x241c36;var _0x2e6d86=squel[_0x148d('0x72')]();_0x2e6d86['from'](_0x509a90['table']);for(var _0x141ac0=0x0;_0x141ac0<_0x17934b[_0x148d('0x4c')];_0x141ac0+=0x1){_0x241c36=_0x17934b[_0x141ac0][_0x148d('0x73')]?_0x25d13f[_0x17934b[_0x141ac0]['MetricId']][_0x148d('0x74')]:_0x17934b[_0x141ac0][_0x148d('0x6b')];_0x241c36=_0x17934b[_0x141ac0]['function']?_[_0x148d('0x75')](_0x5adece[_0x17934b[_0x141ac0][_0x148d('0x76')]],'%s',_0x241c36):_0x241c36;_0x241c36=_0x17934b[_0x141ac0][_0x148d('0x77')]?_['replace'](_0x26b7e2[_0x17934b[_0x141ac0][_0x148d('0x77')]],'%s',_0x241c36):_0x241c36;if(_0x17934b[_0x141ac0][_0x148d('0x78')]){_0x2e6d86[_0x148d('0x6a')](_0x241c36);}_0x17934b[_0x141ac0]['orderBy']&&_0x2e6d86['order'](_0x241c36,_0x17934b[_0x141ac0][_0x148d('0x79')]==='DESC'?![]:!![]);_0x2e6d86[_0x148d('0x6b')](_0x241c36,_0x17934b[_0x141ac0]['alias']||_0x241c36);}if(_0x509a90['joins']){_0x509a90['joins']=JSON[_0x148d('0x7a')](_0x509a90[_0x148d('0x7b')]);for(var _0x167b81=0x0;_0x167b81<_0x509a90[_0x148d('0x7b')][_0x148d('0x4c')];_0x167b81+=0x1){if(_0x509a90[_0x148d('0x7b')][_0x167b81][_0x148d('0x33')]&&_['includes'](_0x4c2d6c,_0x509a90[_0x148d('0x7b')][_0x167b81][_0x148d('0x33')])&&_0x509a90['joins'][_0x167b81][_0x148d('0x7c')]&&_0x509a90[_0x148d('0x7b')][_0x167b81][_0x148d('0x7d')]&&_0x509a90[_0x148d('0x7b')][_0x167b81][_0x148d('0x7e')]){_0x2e6d86[_0x509a90[_0x148d('0x7b')][_0x167b81][_0x148d('0x33')]](_0x509a90['joins'][_0x167b81][_0x148d('0x7d')],null,util['format'](_0x148d('0x7f'),_0x509a90[_0x148d('0x80')],_0x509a90['joins'][_0x167b81][_0x148d('0x7c')],_0x509a90[_0x148d('0x7b')][_0x167b81][_0x148d('0x7d')],_0x509a90['joins'][_0x167b81]['foreignKey']));}}}if(_0x509a90[_0x148d('0x81')]){_0x509a90[_0x148d('0x81')]=JSON['parse'](_0x509a90[_0x148d('0x81')]);_0x2e6d86[_0x148d('0x40')](_0x3bfa93(_0x509a90[_0x148d('0x81')][_0x148d('0x6a')]));}_0x274d64=_0x2e6d86[_0x148d('0x82')]();_0x2e6d86[_0x148d('0x21')](_0x103e63);_0x2e6d86[_0x148d('0x1e')](0x0);logger[_0x148d('0x83')](_0x148d('0x84'),_0x2e6d86[_0x148d('0x85')]());return dbH[_0x148d('0x86')][_0x148d('0x35')](_0x2e6d86[_0x148d('0x85')](),{'type':dbH[_0x148d('0x86')][_0x148d('0x87')][_0x148d('0x88')]});}})[_0x148d('0x28')](respondWithResult(_0x3d91a7,null))[_0x148d('0x49')](handleError(_0x3d91a7,null));};function runReport(_0x1a5d21,_0xc2da06,_0x420472){var _0x4d8c41=_0xc2da06[_0x148d('0x2e')];var _0x2383da=0xa;var _0x30cf1c=[_0x148d('0x89'),_0x148d('0x58'),_0x148d('0x59'),_0x148d('0x5a')];var _0x579fa0={'SUM':'SUM(%s)','COUNT':_0x148d('0x5c'),'COUNT DISTINCT':_0x148d('0x5d'),'MAX':_0x148d('0x5e'),'MIN':_0x148d('0x5f'),'AVG':_0x148d('0x8a'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x148d('0x8b'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x236dc1={'SEC_TO_TIME':_0x148d('0x61'),'DATE':_0x148d('0x62'),'HOUR':_0x148d('0x63'),'ROUND':_0x148d('0x64'),'UNIX_TIMESTAMP':_0x148d('0x8c')};var _0x227db7=function(_0x1aa0a8){return!_[_0x148d('0x65')]([_0x148d('0x66'),_0x148d('0x67'),_0x148d('0x8d'),_0x148d('0x8e')],_0x1aa0a8);};var _0x135b72=function(_0x408833){if(!_0x408833||!_0x408833['rules'][_0x148d('0x4c')]){return'';}for(var _0x22e85c='(',_0x483931=0x0;_0x483931<_0x408833['rules'][_0x148d('0x4c')];_0x483931+=0x1){_0x483931>0x0&&(_0x22e85c+='\x20'+_0x408833['operator']+'\x20');_0x22e85c+=_0x408833[_0x148d('0x68')][_0x483931][_0x148d('0x6a')]?_0x135b72(_0x408833[_0x148d('0x68')][_0x483931][_0x148d('0x6a')]):_0x408833[_0x148d('0x68')][_0x483931][_0x148d('0x6b')]+'\x20'+_0x408833[_0x148d('0x68')][_0x483931][_0x148d('0x6c')]+(_0x227db7(_0x408833[_0x148d('0x68')][_0x483931][_0x148d('0x6c')])?'\x20'+_0x408833['rules'][_0x483931][_0x148d('0x8f')]:'');}return _0x22e85c+')';};var _0x3a7091={'where':{'id':_0x1a5d21['id']}},_0xfc8ad0,_0x54b061,_0x1c81f3,_0x5c8486,_0x19e820;_0x3a7091=_[_0x148d('0x44')]({},_0x3a7091,_0x420472);return db['AnalyticCustomReport'][_0x148d('0x4e')](_0x3a7091)[_0x148d('0x28')](function(_0x17bc13){if(_0x17bc13){_0xfc8ad0=_0x17bc13;return _0x17bc13[_0x148d('0x6d')]();}return null;})['then'](function(_0x2f6b98){if(_0x2f6b98){if(!_0x2f6b98[_0x148d('0x4c')]){throw new db[(_0x148d('0x6e'))][(_0x148d('0x6f'))](_0x148d('0x70'),0x193);}_0x54b061=_0x2f6b98;return db[_0x148d('0x90')][_0x148d('0x47')]({'raw':!![]});}return null;})[_0x148d('0x28')](function(_0x5bb641){if(_0x5bb641){_0x1c81f3=_[_0x148d('0x71')](_0x5bb641,'id');var _0x2caa26;var _0x2fcd8b=squel['select']();_0x2fcd8b[_0x148d('0x91')](_0xfc8ad0[_0x148d('0x80')]);for(var _0x4b7631=0x0;_0x4b7631<_0x54b061[_0x148d('0x4c')];_0x4b7631+=0x1){_0x2caa26=_0x54b061[_0x4b7631][_0x148d('0x73')]?_0x1c81f3[_0x54b061[_0x4b7631][_0x148d('0x73')]][_0x148d('0x74')]:_0x54b061[_0x4b7631][_0x148d('0x6b')];_0x2caa26=_0x54b061[_0x4b7631][_0x148d('0x76')]?_['replace'](_0x579fa0[_0x54b061[_0x4b7631][_0x148d('0x76')]],'%s',_0x2caa26):_0x2caa26;_0x2caa26=_0x54b061[_0x4b7631][_0x148d('0x77')]?_[_0x148d('0x75')](_0x236dc1[_0x54b061[_0x4b7631][_0x148d('0x77')]],'%s',_0x2caa26):_0x2caa26;if(_0x54b061[_0x4b7631][_0x148d('0x78')]){_0x2fcd8b[_0x148d('0x6a')](_0x2caa26);}_0x54b061[_0x4b7631][_0x148d('0x79')]&&_0x2fcd8b[_0x148d('0x3e')](_0x2caa26,_0x54b061[_0x4b7631]['orderBy']===_0x148d('0x92')?![]:!![]);_0x2fcd8b[_0x148d('0x6b')](_0x2caa26,_0x54b061[_0x4b7631][_0x148d('0x93')]||_0x2caa26);}if(_0xfc8ad0['joins']){_0xfc8ad0[_0x148d('0x7b')]=JSON[_0x148d('0x7a')](_0xfc8ad0[_0x148d('0x7b')]);for(var _0x2d73c8=0x0;_0x2d73c8<_0xfc8ad0[_0x148d('0x7b')][_0x148d('0x4c')];_0x2d73c8+=0x1){if(_0xfc8ad0[_0x148d('0x7b')][_0x2d73c8][_0x148d('0x33')]&&_['includes'](_0x30cf1c,_0xfc8ad0[_0x148d('0x7b')][_0x2d73c8][_0x148d('0x33')])&&_0xfc8ad0['joins'][_0x2d73c8][_0x148d('0x7c')]&&_0xfc8ad0['joins'][_0x2d73c8][_0x148d('0x7d')]&&_0xfc8ad0[_0x148d('0x7b')][_0x2d73c8][_0x148d('0x7e')]){_0x2fcd8b[_0xfc8ad0[_0x148d('0x7b')][_0x2d73c8][_0x148d('0x33')]](_0xfc8ad0[_0x148d('0x7b')][_0x2d73c8][_0x148d('0x7d')],null,util['format'](_0x148d('0x7f'),_0xfc8ad0[_0x148d('0x80')],_0xfc8ad0[_0x148d('0x7b')][_0x2d73c8][_0x148d('0x7c')],_0xfc8ad0['joins'][_0x2d73c8][_0x148d('0x7d')],_0xfc8ad0[_0x148d('0x7b')][_0x2d73c8]['foreignKey']));}}}if(_0xfc8ad0[_0x148d('0x81')]){_0xfc8ad0['conditions']=JSON['parse'](_0xfc8ad0[_0x148d('0x81')]);_0x2fcd8b[_0x148d('0x40')](_0x135b72(_0xfc8ad0[_0x148d('0x81')][_0x148d('0x6a')]));}_0x19e820=_0x2fcd8b[_0x148d('0x82')]();_0x2fcd8b['limit'](_0x2383da);_0x2fcd8b['offset'](0x0);return;}})['then'](function(){if(_0xc2da06[_0x148d('0x94')]===_0x148d('0x95')){return null;}var _0x3646f6=_[_0x148d('0x44')](_0xc2da06,{'name':_0xc2da06[_0x148d('0x96')]||_0xc2da06[_0x148d('0x2e')]||_0xfc8ad0['name'],'basename':_0x4d8c41,'savename':util[_0x148d('0x77')](_0x148d('0x97'),_0xc2da06[_0x148d('0x2e')]||_0xfc8ad0['name'],require(_0x148d('0x98'))['generate'](0x4),_0xc2da06[_0x148d('0x94')]||_0x148d('0x99')),'reportId':_0xfc8ad0['id'],'reportType':_0x148d('0x9a')});return db[_0x148d('0x9b')][_0x148d('0x4f')](_0x3646f6,{'raw':!![]});})[_0x148d('0x28')](function(_0x3e31d0){if(_0xfc8ad0['table']===_0x148d('0x9c')){_0x19e820['where'](_0xfc8ad0[_0x148d('0x80')]+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0xc2da06['startDate'],_0xc2da06[_0x148d('0x9d')]);}else{_0x19e820[_0x148d('0x40')](_0xfc8ad0[_0x148d('0x80')]+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0xc2da06[_0x148d('0x9e')],_0xc2da06['endDate']);}if(_0x3e31d0){logger[_0x148d('0x9f')]('Run\x20Query:',_0x19e820['toString']());require(_0x148d('0xa0'))[_0x148d('0xa1')](path[_0x148d('0x89')](__dirname,_0x148d('0xa2'),_0x3e31d0[_0x148d('0x94')]),[_0x3e31d0['id'],_0x19e820[_0x148d('0x85')](),path[_0x148d('0x89')](__dirname,_0x148d('0xa3'),_0x3e31d0[_0x148d('0xa4')]),_0x4d8c41]);return _0x3e31d0;}else{var _0x1aec50=squel['select']();_0x1aec50[_0x148d('0x91')]('('+_0x19e820[_0x148d('0x85')]()+')',_0x148d('0xa5'));_0x1aec50[_0x148d('0x6b')](_0x148d('0xa6'),'count');_0x19e820[_0x148d('0x21')](_0xc2da06['limit']||_0x2383da);_0x19e820[_0x148d('0x1e')](_0xc2da06[_0x148d('0x1e')]||0x0);return dbH[_0x148d('0x86')][_0x148d('0x35')](_0x1aec50['toString'](),{'type':dbH['sequelize']['QueryTypes']['SELECT']})[_0x148d('0x28')](function(_0xedfbef){if(!_0xedfbef['length']){_0x5c8486=0x0;}else{_0x5c8486=_0xedfbef[0x0]['count']||0x0;}return dbH[_0x148d('0x86')][_0x148d('0x35')](_0x19e820[_0x148d('0x85')](),{'type':dbH['sequelize'][_0x148d('0x87')]['SELECT']});})[_0x148d('0x28')](function(_0xfe18e0){return{'rows':_0xfe18e0||[],'count':_0x5c8486};});}});}exports['run']=function(_0xaf65cf,_0xa2b52f){return runReport(_0xaf65cf[_0x148d('0x4b')],_0xaf65cf[_0x148d('0x35')],_0xaf65cf[_0x148d('0x4d')])['then'](respondWithResult(_0xa2b52f,null))[_0x148d('0x49')](handleError(_0xa2b52f,null));};exports[_0x148d('0xa7')]=runReport;exports['query']=function(_0x526936,_0xb9460e){var _0x5e5e57=0xa;var _0xdc1e79=['join','left_join',_0x148d('0x59'),_0x148d('0x5a')];var _0x42183e={'SUM':_0x148d('0x5b'),'COUNT':_0x148d('0x5c'),'COUNT DISTINCT':_0x148d('0x5d'),'MAX':_0x148d('0x5e'),'MIN':_0x148d('0x5f'),'AVG':_0x148d('0x8a'),'GROUP_CONCAT':_0x148d('0x60'),'GROUP_CONCAT ASC':_0x148d('0x8b'),'GROUP_CONCAT DESC':_0x148d('0xa8')};var _0x53dcdc={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x148d('0x62'),'HOUR':_0x148d('0x63'),'ROUND':_0x148d('0x64'),'UNIX_TIMESTAMP':_0x148d('0x8c')};var _0x17c957=function(_0x232927){return!_[_0x148d('0x65')](['IS\x20NULL',_0x148d('0x67'),'IS\x20EMPTY',_0x148d('0x8e')],_0x232927);};var _0x2c94d6=function(_0xf4d63b){if(!_0xf4d63b||!_0xf4d63b[_0x148d('0x68')][_0x148d('0x4c')]){return'';}for(var _0x25176a='(',_0x304f38=0x0;_0x304f38<_0xf4d63b[_0x148d('0x68')][_0x148d('0x4c')];_0x304f38+=0x1){_0x304f38>0x0&&(_0x25176a+='\x20'+_0xf4d63b[_0x148d('0x69')]+'\x20');_0x25176a+=_0xf4d63b[_0x148d('0x68')][_0x304f38][_0x148d('0x6a')]?_0x2c94d6(_0xf4d63b[_0x148d('0x68')][_0x304f38][_0x148d('0x6a')]):_0xf4d63b[_0x148d('0x68')][_0x304f38][_0x148d('0x6b')]+'\x20'+_0xf4d63b[_0x148d('0x68')][_0x304f38][_0x148d('0x6c')]+(_0x17c957(_0xf4d63b[_0x148d('0x68')][_0x304f38]['condition'])?'\x20'+_0xf4d63b['rules'][_0x304f38][_0x148d('0x8f')]:'');}return _0x25176a+')';};var _0x3ca41a={'where':{'id':_0x526936[_0x148d('0x4b')]['id']}},_0x2891c9,_0x39873f,_0x1873de,_0x321bd4,_0x479694;_0x3ca41a=_[_0x148d('0x44')]({},_0x3ca41a,_0x526936[_0x148d('0x4d')]);return db['AnalyticCustomReport'][_0x148d('0x4e')](_0x3ca41a)['then'](function(_0x1cfdec){if(_0x1cfdec){_0x2891c9=_0x1cfdec;return _0x1cfdec[_0x148d('0x6d')]();}return null;})[_0x148d('0x28')](function(_0x2ded96){if(_0x2ded96){if(!_0x2ded96['length']){throw new db[(_0x148d('0x6e'))]['ValidationErrorItem'](_0x148d('0x70'),0x193);}_0x39873f=_0x2ded96;return db['AnalyticMetric'][_0x148d('0x47')]({'raw':!![]});}return null;})[_0x148d('0x28')](function(_0x27d563){if(_0x27d563){_0x1873de=_['keyBy'](_0x27d563,'id');var _0x45e866;var _0x4ce5b7=squel['select']();_0x4ce5b7['from'](_0x2891c9[_0x148d('0x80')]);for(var _0x131e12=0x0;_0x131e12<_0x39873f[_0x148d('0x4c')];_0x131e12+=0x1){_0x45e866=_0x39873f[_0x131e12][_0x148d('0x73')]?_0x1873de[_0x39873f[_0x131e12]['MetricId']][_0x148d('0x74')]:_0x39873f[_0x131e12][_0x148d('0x6b')];_0x45e866=_0x39873f[_0x131e12][_0x148d('0x76')]?_[_0x148d('0x75')](_0x42183e[_0x39873f[_0x131e12][_0x148d('0x76')]],'%s',_0x45e866):_0x45e866;_0x45e866=_0x39873f[_0x131e12][_0x148d('0x77')]?_[_0x148d('0x75')](_0x53dcdc[_0x39873f[_0x131e12][_0x148d('0x77')]],'%s',_0x45e866):_0x45e866;if(_0x39873f[_0x131e12][_0x148d('0x78')]){_0x4ce5b7[_0x148d('0x6a')](_0x45e866);}_0x39873f[_0x131e12][_0x148d('0x79')]&&_0x4ce5b7['order'](_0x45e866,_0x39873f[_0x131e12][_0x148d('0x79')]===_0x148d('0x92')?![]:!![]);_0x4ce5b7[_0x148d('0x6b')](_0x45e866,_0x39873f[_0x131e12][_0x148d('0x93')]||_0x45e866);}if(_0x2891c9[_0x148d('0x7b')]){_0x2891c9[_0x148d('0x7b')]=JSON['parse'](_0x2891c9[_0x148d('0x7b')]);for(var _0x13764d=0x0;_0x13764d<_0x2891c9[_0x148d('0x7b')][_0x148d('0x4c')];_0x13764d+=0x1){if(_0x2891c9[_0x148d('0x7b')][_0x13764d][_0x148d('0x33')]&&_['includes'](_0xdc1e79,_0x2891c9['joins'][_0x13764d][_0x148d('0x33')])&&_0x2891c9[_0x148d('0x7b')][_0x13764d][_0x148d('0x7c')]&&_0x2891c9[_0x148d('0x7b')][_0x13764d][_0x148d('0x7d')]&&_0x2891c9[_0x148d('0x7b')][_0x13764d][_0x148d('0x7e')]){_0x4ce5b7[_0x2891c9[_0x148d('0x7b')][_0x13764d][_0x148d('0x33')]](_0x2891c9[_0x148d('0x7b')][_0x13764d][_0x148d('0x7d')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x2891c9[_0x148d('0x80')],_0x2891c9[_0x148d('0x7b')][_0x13764d][_0x148d('0x7c')],_0x2891c9[_0x148d('0x7b')][_0x13764d][_0x148d('0x7d')],_0x2891c9[_0x148d('0x7b')][_0x13764d][_0x148d('0x7e')]));}}}if(_0x2891c9['conditions']){_0x2891c9['conditions']=JSON[_0x148d('0x7a')](_0x2891c9[_0x148d('0x81')]);_0x4ce5b7[_0x148d('0x40')](_0x2c94d6(_0x2891c9[_0x148d('0x81')][_0x148d('0x6a')]));}_0x479694=_0x4ce5b7['clone']();_0x4ce5b7['limit'](_0x5e5e57);_0x4ce5b7['offset'](0x0);logger[_0x148d('0x83')](_0x148d('0x84'),_0x4ce5b7[_0x148d('0x85')]());return dbH['sequelize'][_0x148d('0x35')](_0x4ce5b7['toString'](),{'type':dbH[_0x148d('0x86')]['QueryTypes'][_0x148d('0x88')]});}})[_0x148d('0x28')](function(){return{'sql':_0x479694[_0x148d('0x85')]()};})[_0x148d('0x28')](respondWithResult(_0xb9460e,null))[_0x148d('0x49')](handleError(_0xb9460e,null));};
\ No newline at end of file
+var _0x1569=['../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','json','reject','save','update','then','get','UserProfileResource','destroy','error','stack','name','send','index','map','AnalyticCustomReport','rawAttributes','fieldName','type','key','model','filters','intersection','query','attributes','fields','length','hasOwnProperty','order','where','pick','filter','VIRTUAL','merge','includeAll','include','rows','show','params','keys','options','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','preview','join','left_join','right_join','SUM(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','SEC_TO_TIME(%s)','DATE(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','rules','operator','group','field','condition','value','getFields','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','select','table','MetricId','metric','function','format','replace','groupBy','orderBy','joins','parse','parentKey','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','conditions','debug','toString','sequelize','cross_join','GROUP_CONCAT(%s)','HOUR(%s)','keyBy','from','DESC','alias','clone','output','web','fullPath','%s-%s.%s','randomstring','custom','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','child_process','fork','../../files/reports','countTable','SELECT','QueryTypes','run','runReport','COUNT(%s)','IS\x20NOT\x20EMPTY','findAll','Limited\x20Query:','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','lodash','crypto','desk.js','querystring','../../config/utils'];(function(_0x1726e1,_0x1cc1f4){var _0x44eccc=function(_0x29d671){while(--_0x29d671){_0x1726e1['push'](_0x1726e1['shift']());}};_0x44eccc(++_0x1cc1f4);}(_0x1569,0x1bf));var _0x9156=function(_0x4db198,_0x3ea6c2){_0x4db198=_0x4db198-0x0;var _0xedceb9=_0x1569[_0x4db198];return _0xedceb9;};'use strict';var emlformat=require(_0x9156('0x0'));var rimraf=require(_0x9156('0x1'));var zipdir=require(_0x9156('0x2'));var jsonpatch=require(_0x9156('0x3'));var rp=require('request-promise');var moment=require(_0x9156('0x4'));var BPromise=require(_0x9156('0x5'));var Mustache=require(_0x9156('0x6'));var util=require('util');var path=require(_0x9156('0x7'));var sox=require(_0x9156('0x8'));var csv=require(_0x9156('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9156('0xa'));var squel=require('squel');var crypto=require(_0x9156('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x9156('0xc'));var toCsv=require(_0x9156('0x9'));var querystring=require(_0x9156('0xd'));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('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x9156('0xe'));var config=require(_0x9156('0xf'));var licenseUtil=require(_0x9156('0x10'));var db=require(_0x9156('0x11'))['db'];var dbH=require(_0x9156('0x11'))['dbH'];function respondWithStatusCode(_0x2fb563,_0xc1ee7){_0xc1ee7=_0xc1ee7||0xcc;return function(_0x1f80f2){if(_0x1f80f2){return _0x2fb563[_0x9156('0x12')](_0xc1ee7);}return _0x2fb563['status'](_0xc1ee7)[_0x9156('0x13')]();};}function respondWithResult(_0x31478a,_0x4efbf3){_0x4efbf3=_0x4efbf3||0xc8;return function(_0x3285a1){if(_0x3285a1){return _0x31478a[_0x9156('0x14')](_0x4efbf3)['json'](_0x3285a1);}};}function respondWithFilteredResult(_0x35f293,_0x4d4490){return function(_0x3d1f41){if(_0x3d1f41){var _0x57b038=typeof _0x4d4490[_0x9156('0x15')]===_0x9156('0x16')&&typeof _0x4d4490[_0x9156('0x17')]===_0x9156('0x16');var _0x3c190b=_0x3d1f41[_0x9156('0x18')];var _0x5a80f6=_0x57b038?0x0:_0x4d4490[_0x9156('0x15')];var _0x358752=_0x57b038?_0x3d1f41[_0x9156('0x18')]:_0x4d4490[_0x9156('0x15')]+_0x4d4490[_0x9156('0x17')];var _0x334ec0;if(_0x358752>=_0x3c190b){_0x358752=_0x3c190b;_0x334ec0=0xc8;}else{_0x334ec0=0xce;}_0x35f293[_0x9156('0x14')](_0x334ec0);return _0x35f293['set']('Content-Range',_0x5a80f6+'-'+_0x358752+'/'+_0x3c190b)[_0x9156('0x19')](_0x3d1f41);}return null;};}function patchUpdates(_0x3d66e9){return function(_0x496c8c){try{jsonpatch['apply'](_0x496c8c,_0x3d66e9,!![]);}catch(_0x1cb50d){return BPromise[_0x9156('0x1a')](_0x1cb50d);}return _0x496c8c[_0x9156('0x1b')]();};}function saveUpdates(_0x2b8d20,_0x5cdf84){return function(_0x4f04e7){if(_0x4f04e7){return _0x4f04e7[_0x9156('0x1c')](_0x2b8d20)[_0x9156('0x1d')](function(_0x3ce9c3){return _0x3ce9c3;});}return null;};}function removeEntity(_0x33440a,_0x3b89f9){return function(_0x3c38f8){if(_0x3c38f8){return _0x3c38f8['destroy']()['then'](function(){var _0x53aa15=_0x3c38f8[_0x9156('0x1e')]({'plain':!![]});var _0x2faa60='CustomReports';return db[_0x9156('0x1f')][_0x9156('0x20')]({'where':{'type':_0x2faa60,'resourceId':_0x53aa15['id']}})[_0x9156('0x1d')](function(){return _0x3c38f8;});})[_0x9156('0x1d')](function(){_0x33440a['status'](0xcc)[_0x9156('0x13')]();});}};}function handleEntityNotFound(_0x3f183c,_0x3b38a2){return function(_0x1a0c07){if(!_0x1a0c07){_0x3f183c[_0x9156('0x12')](0x194);}return _0x1a0c07;};}function handleError(_0x34e02f,_0x3439a2){_0x3439a2=_0x3439a2||0x1f4;return function(_0x560006){logger[_0x9156('0x21')](_0x560006[_0x9156('0x22')]);if(_0x560006[_0x9156('0x23')]){delete _0x560006[_0x9156('0x23')];}_0x34e02f[_0x9156('0x14')](_0x3439a2)[_0x9156('0x24')](_0x560006);};}exports[_0x9156('0x25')]=function(_0x1b656e,_0x45d39c){var _0x5b2980={},_0x4a12af={},_0x1b5525={'count':0x0,'rows':[]};var _0x5850cd=_[_0x9156('0x26')](db[_0x9156('0x27')][_0x9156('0x28')],function(_0x2b2ee7){return{'name':_0x2b2ee7[_0x9156('0x29')],'type':_0x2b2ee7[_0x9156('0x2a')][_0x9156('0x2b')]};});_0x4a12af[_0x9156('0x2c')]=_['map'](_0x5850cd,_0x9156('0x23'));_0x4a12af['query']=_['keys'](_0x1b656e['query']);_0x4a12af[_0x9156('0x2d')]=_[_0x9156('0x2e')](_0x4a12af['model'],_0x4a12af[_0x9156('0x2f')]);_0x5b2980[_0x9156('0x30')]=_[_0x9156('0x2e')](_0x4a12af[_0x9156('0x2c')],qs[_0x9156('0x31')](_0x1b656e[_0x9156('0x2f')]['fields']));_0x5b2980[_0x9156('0x30')]=_0x5b2980[_0x9156('0x30')][_0x9156('0x32')]?_0x5b2980[_0x9156('0x30')]:_0x4a12af[_0x9156('0x2c')];if(!_0x1b656e[_0x9156('0x2f')][_0x9156('0x33')]('nolimit')){_0x5b2980[_0x9156('0x17')]=qs[_0x9156('0x17')](_0x1b656e[_0x9156('0x2f')][_0x9156('0x17')]);_0x5b2980['offset']=qs[_0x9156('0x15')](_0x1b656e[_0x9156('0x2f')][_0x9156('0x15')]);}_0x5b2980[_0x9156('0x34')]=qs['sort'](_0x1b656e[_0x9156('0x2f')]['sort']);_0x5b2980[_0x9156('0x35')]=qs[_0x9156('0x2d')](_[_0x9156('0x36')](_0x1b656e[_0x9156('0x2f')],_0x4a12af[_0x9156('0x2d')]),_0x5850cd);if(_0x1b656e[_0x9156('0x2f')][_0x9156('0x37')]){_0x5b2980[_0x9156('0x35')]=_['merge'](_0x5b2980[_0x9156('0x35')],{'$or':_[_0x9156('0x26')](_0x5850cd,function(_0x262eb2){if(_0x262eb2[_0x9156('0x2a')]!==_0x9156('0x38')){var _0x2140af={};_0x2140af[_0x262eb2[_0x9156('0x23')]]={'$like':'%'+_0x1b656e[_0x9156('0x2f')]['filter']+'%'};return _0x2140af;}})});}_0x5b2980=_[_0x9156('0x39')]({},_0x5b2980,_0x1b656e['options']);var _0x4cc9bf={'where':_0x5b2980[_0x9156('0x35')]};return db[_0x9156('0x27')][_0x9156('0x18')](_0x4cc9bf)[_0x9156('0x1d')](function(_0x5b30b5){_0x1b5525[_0x9156('0x18')]=_0x5b30b5;if(_0x1b656e[_0x9156('0x2f')][_0x9156('0x3a')]){_0x5b2980[_0x9156('0x3b')]=[{'all':!![]}];}return db[_0x9156('0x27')]['findAll'](_0x5b2980);})[_0x9156('0x1d')](function(_0x223b26){_0x1b5525[_0x9156('0x3c')]=_0x223b26;return _0x1b5525;})[_0x9156('0x1d')](respondWithFilteredResult(_0x45d39c,_0x5b2980))['catch'](handleError(_0x45d39c,null));};exports[_0x9156('0x3d')]=function(_0x1c5880,_0x308b3a){var _0x2c9639={'raw':![],'where':{'id':_0x1c5880[_0x9156('0x3e')]['id']}},_0x3d9997={};_0x3d9997[_0x9156('0x2c')]=_['keys'](db[_0x9156('0x27')][_0x9156('0x28')]);_0x3d9997[_0x9156('0x2f')]=_[_0x9156('0x3f')](_0x1c5880[_0x9156('0x2f')]);_0x3d9997[_0x9156('0x2d')]=_['intersection'](_0x3d9997[_0x9156('0x2c')],_0x3d9997[_0x9156('0x2f')]);_0x2c9639['attributes']=_[_0x9156('0x2e')](_0x3d9997[_0x9156('0x2c')],qs['fields'](_0x1c5880[_0x9156('0x2f')][_0x9156('0x31')]));_0x2c9639[_0x9156('0x30')]=_0x2c9639[_0x9156('0x30')][_0x9156('0x32')]?_0x2c9639[_0x9156('0x30')]:_0x3d9997[_0x9156('0x2c')];if(_0x1c5880['query'][_0x9156('0x3a')]){_0x2c9639[_0x9156('0x3b')]=[{'all':!![]}];}_0x2c9639=_[_0x9156('0x39')]({},_0x2c9639,_0x1c5880[_0x9156('0x40')]);return db[_0x9156('0x27')][_0x9156('0x41')](_0x2c9639)[_0x9156('0x1d')](handleEntityNotFound(_0x308b3a,null))['then'](respondWithResult(_0x308b3a,null))[_0x9156('0x42')](handleError(_0x308b3a,null));};exports['create']=function(_0x1a9661,_0x5c9ef5){return db[_0x9156('0x27')][_0x9156('0x43')](_0x1a9661[_0x9156('0x44')],{})[_0x9156('0x1d')](function(_0x48265d){var _0x2398e3=_0x1a9661[_0x9156('0x45')][_0x9156('0x1e')]({'plain':!![]});if(!_0x2398e3)throw new Error(_0x9156('0x46'));if(_0x2398e3[_0x9156('0x47')]===_0x9156('0x45')){var _0x214802=_0x48265d[_0x9156('0x1e')]({'plain':!![]});var _0x19498f=_0x9156('0x48');return db[_0x9156('0x49')][_0x9156('0x41')]({'where':{'name':_0x19498f,'userProfileId':_0x2398e3['userProfileId']},'raw':!![]})[_0x9156('0x1d')](function(_0x4fe765){if(_0x4fe765&&_0x4fe765[_0x9156('0x4a')]===0x0){return db['UserProfileResource'][_0x9156('0x43')]({'name':_0x214802[_0x9156('0x23')],'resourceId':_0x214802['id'],'type':'CustomReports','sectionId':_0x4fe765['id']},{})[_0x9156('0x1d')](function(){return _0x48265d;});}else{return _0x48265d;}})[_0x9156('0x42')](function(_0x928454){logger['error'](_0x9156('0x4b'),_0x928454);throw _0x928454;});}return _0x48265d;})[_0x9156('0x1d')](respondWithResult(_0x5c9ef5,0xc9))[_0x9156('0x42')](handleError(_0x5c9ef5,null));};exports[_0x9156('0x1c')]=function(_0x3a8881,_0x23f76d){if(_0x3a8881['body']['id']){delete _0x3a8881[_0x9156('0x44')]['id'];}return db[_0x9156('0x27')][_0x9156('0x41')]({'where':{'id':_0x3a8881[_0x9156('0x3e')]['id']}})[_0x9156('0x1d')](handleEntityNotFound(_0x23f76d,null))[_0x9156('0x1d')](saveUpdates(_0x3a8881[_0x9156('0x44')],null))[_0x9156('0x1d')](respondWithResult(_0x23f76d,null))['catch'](handleError(_0x23f76d,null));};exports[_0x9156('0x20')]=function(_0x533295,_0x2dfd80){return db['AnalyticCustomReport'][_0x9156('0x41')]({'where':{'id':_0x533295[_0x9156('0x3e')]['id']}})[_0x9156('0x1d')](handleEntityNotFound(_0x2dfd80,null))[_0x9156('0x1d')](removeEntity(_0x2dfd80,null))['catch'](handleError(_0x2dfd80,null));};exports[_0x9156('0x4c')]=function(_0x421417,_0x44d5f6){var _0x2382bf=0xa;var _0x3e0a26=[_0x9156('0x4d'),_0x9156('0x4e'),_0x9156('0x4f'),'cross_join'];var _0x2991a9={'SUM':_0x9156('0x50'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0x9156('0x51'),'MAX':_0x9156('0x52'),'MIN':_0x9156('0x53'),'AVG':_0x9156('0x54'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x9156('0x55'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x1f8d50={'SEC_TO_TIME':_0x9156('0x56'),'DATE':_0x9156('0x57'),'HOUR':'HOUR(%s)','ROUND':_0x9156('0x58'),'UNIX_TIMESTAMP':_0x9156('0x59')};var _0x3ffee1=function(_0x57b3c7){return!_[_0x9156('0x5a')]([_0x9156('0x5b'),_0x9156('0x5c'),_0x9156('0x5d'),'IS\x20NOT\x20EMPTY'],_0x57b3c7);};var _0x583224=function(_0x271e97){if(!_0x271e97||!_0x271e97[_0x9156('0x5e')][_0x9156('0x32')]){return'';}for(var _0x2f7cf3='(',_0x1da26f=0x0;_0x1da26f<_0x271e97[_0x9156('0x5e')][_0x9156('0x32')];_0x1da26f+=0x1){_0x1da26f>0x0&&(_0x2f7cf3+='\x20'+_0x271e97[_0x9156('0x5f')]+'\x20');_0x2f7cf3+=_0x271e97[_0x9156('0x5e')][_0x1da26f][_0x9156('0x60')]?_0x583224(_0x271e97[_0x9156('0x5e')][_0x1da26f][_0x9156('0x60')]):_0x271e97[_0x9156('0x5e')][_0x1da26f][_0x9156('0x61')]+'\x20'+_0x271e97[_0x9156('0x5e')][_0x1da26f][_0x9156('0x62')]+(_0x3ffee1(_0x271e97[_0x9156('0x5e')][_0x1da26f][_0x9156('0x62')])?'\x20'+_0x271e97[_0x9156('0x5e')][_0x1da26f][_0x9156('0x63')]:'');}return _0x2f7cf3+')';};var _0x433de5={'where':{'id':_0x421417['params']['id']}},_0x5108cc,_0x34c58a,_0xf9fa17,_0x2b7001,_0x2f6a3c;_0x433de5=_['merge']({},_0x433de5,_0x421417[_0x9156('0x40')]);return db[_0x9156('0x27')]['find'](_0x433de5)[_0x9156('0x1d')](function(_0xedb3f3){if(_0xedb3f3){_0x5108cc=_0xedb3f3;return _0xedb3f3[_0x9156('0x64')]();}return null;})[_0x9156('0x1d')](function(_0x5a01e8){if(_0x5a01e8){if(!_0x5a01e8['length']){throw new db['Sequelize'][(_0x9156('0x65'))](_0x9156('0x66'),0x193);}_0x34c58a=_0x5a01e8;return db[_0x9156('0x67')]['findAll']({'raw':!![]});}return null;})[_0x9156('0x1d')](function(_0x5c7619){if(_0x5c7619){_0xf9fa17=_['keyBy'](_0x5c7619,'id');var _0x3d3ad7;var _0x35c221=squel[_0x9156('0x68')]();_0x35c221['from'](_0x5108cc[_0x9156('0x69')]);for(var _0x58275a=0x0;_0x58275a<_0x34c58a[_0x9156('0x32')];_0x58275a+=0x1){_0x3d3ad7=_0x34c58a[_0x58275a][_0x9156('0x6a')]?_0xf9fa17[_0x34c58a[_0x58275a][_0x9156('0x6a')]][_0x9156('0x6b')]:_0x34c58a[_0x58275a]['field'];_0x3d3ad7=_0x34c58a[_0x58275a][_0x9156('0x6c')]?_['replace'](_0x2991a9[_0x34c58a[_0x58275a][_0x9156('0x6c')]],'%s',_0x3d3ad7):_0x3d3ad7;_0x3d3ad7=_0x34c58a[_0x58275a][_0x9156('0x6d')]?_[_0x9156('0x6e')](_0x1f8d50[_0x34c58a[_0x58275a][_0x9156('0x6d')]],'%s',_0x3d3ad7):_0x3d3ad7;if(_0x34c58a[_0x58275a][_0x9156('0x6f')]){_0x35c221[_0x9156('0x60')](_0x3d3ad7);}_0x34c58a[_0x58275a][_0x9156('0x70')]&&_0x35c221[_0x9156('0x34')](_0x3d3ad7,_0x34c58a[_0x58275a][_0x9156('0x70')]==='DESC'?![]:!![]);_0x35c221['field'](_0x3d3ad7,_0x34c58a[_0x58275a]['alias']||_0x3d3ad7);}if(_0x5108cc[_0x9156('0x71')]){_0x5108cc[_0x9156('0x71')]=JSON[_0x9156('0x72')](_0x5108cc[_0x9156('0x71')]);for(var _0x5aa831=0x0;_0x5aa831<_0x5108cc[_0x9156('0x71')][_0x9156('0x32')];_0x5aa831+=0x1){if(_0x5108cc[_0x9156('0x71')][_0x5aa831]['type']&&_[_0x9156('0x5a')](_0x3e0a26,_0x5108cc['joins'][_0x5aa831][_0x9156('0x2a')])&&_0x5108cc['joins'][_0x5aa831][_0x9156('0x73')]&&_0x5108cc[_0x9156('0x71')][_0x5aa831][_0x9156('0x74')]&&_0x5108cc[_0x9156('0x71')][_0x5aa831][_0x9156('0x75')]){_0x35c221[_0x5108cc[_0x9156('0x71')][_0x5aa831]['type']](_0x5108cc[_0x9156('0x71')][_0x5aa831][_0x9156('0x74')],null,util['format'](_0x9156('0x76'),_0x5108cc['table'],_0x5108cc[_0x9156('0x71')][_0x5aa831]['parentKey'],_0x5108cc[_0x9156('0x71')][_0x5aa831][_0x9156('0x74')],_0x5108cc[_0x9156('0x71')][_0x5aa831][_0x9156('0x75')]));}}}if(_0x5108cc['conditions']){_0x5108cc[_0x9156('0x77')]=JSON[_0x9156('0x72')](_0x5108cc[_0x9156('0x77')]);_0x35c221[_0x9156('0x35')](_0x583224(_0x5108cc[_0x9156('0x77')][_0x9156('0x60')]));}_0x2f6a3c=_0x35c221['clone']();_0x35c221['limit'](_0x2382bf);_0x35c221[_0x9156('0x15')](0x0);logger[_0x9156('0x78')]('Limited\x20Query:',_0x35c221[_0x9156('0x79')]());return dbH[_0x9156('0x7a')]['query'](_0x35c221['toString'](),{'type':dbH['sequelize']['QueryTypes']['SELECT']});}})[_0x9156('0x1d')](respondWithResult(_0x44d5f6,null))[_0x9156('0x42')](handleError(_0x44d5f6,null));};function runReport(_0x208b7c,_0x364fc1,_0x493a15){var _0x1c1f97=_0x364fc1[_0x9156('0x23')];var _0x5822a0=0xa;var _0x11892e=[_0x9156('0x4d'),_0x9156('0x4e'),_0x9156('0x4f'),_0x9156('0x7b')];var _0x55b09e={'SUM':'SUM(%s)','COUNT':'COUNT(%s)','COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x9156('0x52'),'MIN':_0x9156('0x53'),'AVG':_0x9156('0x54'),'GROUP_CONCAT':_0x9156('0x7c'),'GROUP_CONCAT ASC':_0x9156('0x55'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x5a6a14={'SEC_TO_TIME':_0x9156('0x56'),'DATE':_0x9156('0x57'),'HOUR':_0x9156('0x7d'),'ROUND':_0x9156('0x58'),'UNIX_TIMESTAMP':_0x9156('0x59')};var _0x5b50ef=function(_0x8ee25e){return!_[_0x9156('0x5a')]([_0x9156('0x5b'),'IS\x20NOT\x20NULL',_0x9156('0x5d'),'IS\x20NOT\x20EMPTY'],_0x8ee25e);};var _0x4169fb=function(_0x550f0d){if(!_0x550f0d||!_0x550f0d['rules'][_0x9156('0x32')]){return'';}for(var _0x4d54bc='(',_0x2644d2=0x0;_0x2644d2<_0x550f0d[_0x9156('0x5e')]['length'];_0x2644d2+=0x1){_0x2644d2>0x0&&(_0x4d54bc+='\x20'+_0x550f0d[_0x9156('0x5f')]+'\x20');_0x4d54bc+=_0x550f0d[_0x9156('0x5e')][_0x2644d2][_0x9156('0x60')]?_0x4169fb(_0x550f0d[_0x9156('0x5e')][_0x2644d2][_0x9156('0x60')]):_0x550f0d[_0x9156('0x5e')][_0x2644d2][_0x9156('0x61')]+'\x20'+_0x550f0d[_0x9156('0x5e')][_0x2644d2]['condition']+(_0x5b50ef(_0x550f0d[_0x9156('0x5e')][_0x2644d2][_0x9156('0x62')])?'\x20'+_0x550f0d[_0x9156('0x5e')][_0x2644d2][_0x9156('0x63')]:'');}return _0x4d54bc+')';};var _0x565bb1={'where':{'id':_0x208b7c['id']}},_0x3463c1,_0x2783ee,_0xad4f31,_0x3c9f06,_0x121da0;_0x565bb1=_[_0x9156('0x39')]({},_0x565bb1,_0x493a15);return db[_0x9156('0x27')]['find'](_0x565bb1)[_0x9156('0x1d')](function(_0xbbbe04){if(_0xbbbe04){_0x3463c1=_0xbbbe04;return _0xbbbe04[_0x9156('0x64')]();}return null;})['then'](function(_0x216dd9){if(_0x216dd9){if(!_0x216dd9['length']){throw new db['Sequelize'][(_0x9156('0x65'))](_0x9156('0x66'),0x193);}_0x2783ee=_0x216dd9;return db[_0x9156('0x67')]['findAll']({'raw':!![]});}return null;})['then'](function(_0x12ba78){if(_0x12ba78){_0xad4f31=_[_0x9156('0x7e')](_0x12ba78,'id');var _0x17c92d;var _0x381cde=squel[_0x9156('0x68')]();_0x381cde[_0x9156('0x7f')](_0x3463c1[_0x9156('0x69')]);for(var _0x3fada2=0x0;_0x3fada2<_0x2783ee[_0x9156('0x32')];_0x3fada2+=0x1){_0x17c92d=_0x2783ee[_0x3fada2][_0x9156('0x6a')]?_0xad4f31[_0x2783ee[_0x3fada2]['MetricId']][_0x9156('0x6b')]:_0x2783ee[_0x3fada2][_0x9156('0x61')];_0x17c92d=_0x2783ee[_0x3fada2][_0x9156('0x6c')]?_[_0x9156('0x6e')](_0x55b09e[_0x2783ee[_0x3fada2][_0x9156('0x6c')]],'%s',_0x17c92d):_0x17c92d;_0x17c92d=_0x2783ee[_0x3fada2]['format']?_[_0x9156('0x6e')](_0x5a6a14[_0x2783ee[_0x3fada2][_0x9156('0x6d')]],'%s',_0x17c92d):_0x17c92d;if(_0x2783ee[_0x3fada2]['groupBy']){_0x381cde['group'](_0x17c92d);}_0x2783ee[_0x3fada2]['orderBy']&&_0x381cde[_0x9156('0x34')](_0x17c92d,_0x2783ee[_0x3fada2][_0x9156('0x70')]===_0x9156('0x80')?![]:!![]);_0x381cde[_0x9156('0x61')](_0x17c92d,_0x2783ee[_0x3fada2][_0x9156('0x81')]||_0x17c92d);}if(_0x3463c1['joins']){_0x3463c1[_0x9156('0x71')]=JSON[_0x9156('0x72')](_0x3463c1[_0x9156('0x71')]);for(var _0x16bdc1=0x0;_0x16bdc1<_0x3463c1[_0x9156('0x71')][_0x9156('0x32')];_0x16bdc1+=0x1){if(_0x3463c1[_0x9156('0x71')][_0x16bdc1][_0x9156('0x2a')]&&_[_0x9156('0x5a')](_0x11892e,_0x3463c1[_0x9156('0x71')][_0x16bdc1][_0x9156('0x2a')])&&_0x3463c1['joins'][_0x16bdc1][_0x9156('0x73')]&&_0x3463c1[_0x9156('0x71')][_0x16bdc1][_0x9156('0x74')]&&_0x3463c1[_0x9156('0x71')][_0x16bdc1]['foreignKey']){_0x381cde[_0x3463c1['joins'][_0x16bdc1][_0x9156('0x2a')]](_0x3463c1[_0x9156('0x71')][_0x16bdc1][_0x9156('0x74')],null,util[_0x9156('0x6d')](_0x9156('0x76'),_0x3463c1[_0x9156('0x69')],_0x3463c1[_0x9156('0x71')][_0x16bdc1]['parentKey'],_0x3463c1['joins'][_0x16bdc1][_0x9156('0x74')],_0x3463c1[_0x9156('0x71')][_0x16bdc1][_0x9156('0x75')]));}}}if(_0x3463c1[_0x9156('0x77')]){_0x3463c1[_0x9156('0x77')]=JSON['parse'](_0x3463c1[_0x9156('0x77')]);_0x381cde[_0x9156('0x35')](_0x4169fb(_0x3463c1[_0x9156('0x77')][_0x9156('0x60')]));}_0x121da0=_0x381cde[_0x9156('0x82')]();_0x381cde[_0x9156('0x17')](_0x5822a0);_0x381cde[_0x9156('0x15')](0x0);return;}})[_0x9156('0x1d')](function(){if(_0x364fc1[_0x9156('0x83')]===_0x9156('0x84')){return null;}var _0x49eccc=_[_0x9156('0x39')](_0x364fc1,{'name':_0x364fc1[_0x9156('0x85')]||_0x364fc1['name']||_0x3463c1[_0x9156('0x23')],'basename':_0x1c1f97,'savename':util[_0x9156('0x6d')](_0x9156('0x86'),_0x364fc1[_0x9156('0x23')]||_0x3463c1[_0x9156('0x23')],require(_0x9156('0x87'))['generate'](0x4),_0x364fc1['output']||'csv'),'reportId':_0x3463c1['id'],'reportType':_0x9156('0x88')});return db['AnalyticExtractedReport']['create'](_0x49eccc,{'raw':!![]});})[_0x9156('0x1d')](function(_0x4e6d10){if(_0x3463c1[_0x9156('0x69')]==='cdr'){_0x121da0[_0x9156('0x35')](_0x3463c1[_0x9156('0x69')]+_0x9156('0x89'),_0x364fc1[_0x9156('0x8a')],_0x364fc1[_0x9156('0x8b')]);}else{_0x121da0[_0x9156('0x35')](_0x3463c1[_0x9156('0x69')]+_0x9156('0x8c'),_0x364fc1[_0x9156('0x8a')],_0x364fc1['endDate']);}if(_0x4e6d10){logger[_0x9156('0x8d')]('Run\x20Query:',_0x121da0[_0x9156('0x79')]());require(_0x9156('0x8e'))[_0x9156('0x8f')](path['join'](__dirname,'../../components/export/',_0x4e6d10[_0x9156('0x83')]),[_0x4e6d10['id'],_0x121da0[_0x9156('0x79')](),path[_0x9156('0x4d')](__dirname,_0x9156('0x90'),_0x4e6d10['savename']),_0x1c1f97]);return _0x4e6d10;}else{var _0x555337=squel[_0x9156('0x68')]();_0x555337[_0x9156('0x7f')]('('+_0x121da0['toString']()+')',_0x9156('0x91'));_0x555337['field']('COUNT(*)',_0x9156('0x18'));_0x121da0['limit'](_0x364fc1['limit']||_0x5822a0);_0x121da0['offset'](_0x364fc1[_0x9156('0x15')]||0x0);return dbH[_0x9156('0x7a')][_0x9156('0x2f')](_0x555337['toString'](),{'type':dbH['sequelize']['QueryTypes'][_0x9156('0x92')]})[_0x9156('0x1d')](function(_0xdd0410){if(!_0xdd0410[_0x9156('0x32')]){_0x3c9f06=0x0;}else{_0x3c9f06=_0xdd0410[0x0][_0x9156('0x18')]||0x0;}return dbH['sequelize'][_0x9156('0x2f')](_0x121da0[_0x9156('0x79')](),{'type':dbH[_0x9156('0x7a')][_0x9156('0x93')][_0x9156('0x92')]});})[_0x9156('0x1d')](function(_0x341cf1){return{'rows':_0x341cf1||[],'count':_0x3c9f06};});}});}exports[_0x9156('0x94')]=function(_0x16604f,_0x2a5e75){return runReport(_0x16604f[_0x9156('0x3e')],_0x16604f['query'],_0x16604f[_0x9156('0x40')])['then'](respondWithResult(_0x2a5e75,null))[_0x9156('0x42')](handleError(_0x2a5e75,null));};exports[_0x9156('0x95')]=runReport;exports['query']=function(_0x56b776,_0x38ce1e){var _0x8027c7=0xa;var _0x591a33=[_0x9156('0x4d'),'left_join',_0x9156('0x4f'),_0x9156('0x7b')];var _0x56eda8={'SUM':_0x9156('0x50'),'COUNT':_0x9156('0x96'),'COUNT DISTINCT':_0x9156('0x51'),'MAX':_0x9156('0x52'),'MIN':_0x9156('0x53'),'AVG':_0x9156('0x54'),'GROUP_CONCAT':_0x9156('0x7c'),'GROUP_CONCAT ASC':_0x9156('0x55'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x25a59a={'SEC_TO_TIME':_0x9156('0x56'),'DATE':'DATE(%s)','HOUR':'HOUR(%s)','ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x9156('0x59')};var _0x5bba0f=function(_0x524311){return!_[_0x9156('0x5a')]([_0x9156('0x5b'),_0x9156('0x5c'),'IS\x20EMPTY',_0x9156('0x97')],_0x524311);};var _0xe92626=function(_0x63bec7){if(!_0x63bec7||!_0x63bec7[_0x9156('0x5e')][_0x9156('0x32')]){return'';}for(var _0x290085='(',_0x56f80f=0x0;_0x56f80f<_0x63bec7[_0x9156('0x5e')][_0x9156('0x32')];_0x56f80f+=0x1){_0x56f80f>0x0&&(_0x290085+='\x20'+_0x63bec7[_0x9156('0x5f')]+'\x20');_0x290085+=_0x63bec7[_0x9156('0x5e')][_0x56f80f][_0x9156('0x60')]?_0xe92626(_0x63bec7[_0x9156('0x5e')][_0x56f80f][_0x9156('0x60')]):_0x63bec7['rules'][_0x56f80f][_0x9156('0x61')]+'\x20'+_0x63bec7[_0x9156('0x5e')][_0x56f80f][_0x9156('0x62')]+(_0x5bba0f(_0x63bec7['rules'][_0x56f80f][_0x9156('0x62')])?'\x20'+_0x63bec7[_0x9156('0x5e')][_0x56f80f][_0x9156('0x63')]:'');}return _0x290085+')';};var _0x2f3b03={'where':{'id':_0x56b776['params']['id']}},_0x1a2b7f,_0x9933c9,_0x3a7d45,_0x524ba6,_0x4f5bcf;_0x2f3b03=_[_0x9156('0x39')]({},_0x2f3b03,_0x56b776[_0x9156('0x40')]);return db[_0x9156('0x27')][_0x9156('0x41')](_0x2f3b03)['then'](function(_0x48289e){if(_0x48289e){_0x1a2b7f=_0x48289e;return _0x48289e['getFields']();}return null;})[_0x9156('0x1d')](function(_0x527011){if(_0x527011){if(!_0x527011[_0x9156('0x32')]){throw new db['Sequelize']['ValidationErrorItem'](_0x9156('0x66'),0x193);}_0x9933c9=_0x527011;return db[_0x9156('0x67')][_0x9156('0x98')]({'raw':!![]});}return null;})[_0x9156('0x1d')](function(_0xa55a65){if(_0xa55a65){_0x3a7d45=_['keyBy'](_0xa55a65,'id');var _0x22cbb4;var _0x31578b=squel[_0x9156('0x68')]();_0x31578b[_0x9156('0x7f')](_0x1a2b7f['table']);for(var _0x557979=0x0;_0x557979<_0x9933c9[_0x9156('0x32')];_0x557979+=0x1){_0x22cbb4=_0x9933c9[_0x557979][_0x9156('0x6a')]?_0x3a7d45[_0x9933c9[_0x557979][_0x9156('0x6a')]]['metric']:_0x9933c9[_0x557979]['field'];_0x22cbb4=_0x9933c9[_0x557979]['function']?_[_0x9156('0x6e')](_0x56eda8[_0x9933c9[_0x557979]['function']],'%s',_0x22cbb4):_0x22cbb4;_0x22cbb4=_0x9933c9[_0x557979][_0x9156('0x6d')]?_[_0x9156('0x6e')](_0x25a59a[_0x9933c9[_0x557979][_0x9156('0x6d')]],'%s',_0x22cbb4):_0x22cbb4;if(_0x9933c9[_0x557979][_0x9156('0x6f')]){_0x31578b[_0x9156('0x60')](_0x22cbb4);}_0x9933c9[_0x557979][_0x9156('0x70')]&&_0x31578b[_0x9156('0x34')](_0x22cbb4,_0x9933c9[_0x557979]['orderBy']===_0x9156('0x80')?![]:!![]);_0x31578b[_0x9156('0x61')](_0x22cbb4,_0x9933c9[_0x557979][_0x9156('0x81')]||_0x22cbb4);}if(_0x1a2b7f[_0x9156('0x71')]){_0x1a2b7f['joins']=JSON[_0x9156('0x72')](_0x1a2b7f[_0x9156('0x71')]);for(var _0x398687=0x0;_0x398687<_0x1a2b7f[_0x9156('0x71')][_0x9156('0x32')];_0x398687+=0x1){if(_0x1a2b7f[_0x9156('0x71')][_0x398687][_0x9156('0x2a')]&&_[_0x9156('0x5a')](_0x591a33,_0x1a2b7f['joins'][_0x398687]['type'])&&_0x1a2b7f[_0x9156('0x71')][_0x398687][_0x9156('0x73')]&&_0x1a2b7f[_0x9156('0x71')][_0x398687][_0x9156('0x74')]&&_0x1a2b7f[_0x9156('0x71')][_0x398687][_0x9156('0x75')]){_0x31578b[_0x1a2b7f[_0x9156('0x71')][_0x398687][_0x9156('0x2a')]](_0x1a2b7f[_0x9156('0x71')][_0x398687][_0x9156('0x74')],null,util[_0x9156('0x6d')](_0x9156('0x76'),_0x1a2b7f[_0x9156('0x69')],_0x1a2b7f[_0x9156('0x71')][_0x398687][_0x9156('0x73')],_0x1a2b7f[_0x9156('0x71')][_0x398687]['foreignTable'],_0x1a2b7f[_0x9156('0x71')][_0x398687][_0x9156('0x75')]));}}}if(_0x1a2b7f[_0x9156('0x77')]){_0x1a2b7f[_0x9156('0x77')]=JSON[_0x9156('0x72')](_0x1a2b7f['conditions']);_0x31578b[_0x9156('0x35')](_0xe92626(_0x1a2b7f['conditions'][_0x9156('0x60')]));}_0x4f5bcf=_0x31578b[_0x9156('0x82')]();_0x31578b['limit'](_0x8027c7);_0x31578b['offset'](0x0);logger['debug'](_0x9156('0x99'),_0x31578b[_0x9156('0x79')]());return dbH[_0x9156('0x7a')]['query'](_0x31578b[_0x9156('0x79')](),{'type':dbH[_0x9156('0x7a')]['QueryTypes'][_0x9156('0x92')]});}})[_0x9156('0x1d')](function(){return{'sql':_0x4f5bcf[_0x9156('0x79')]()};})[_0x9156('0x1d')](respondWithResult(_0x38ce1e,null))['catch'](handleError(_0x38ce1e,null));};
\ No newline at end of file
index 747317d..cc1720c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f55=['path','../../config/environment','./analyticCustomReport.attributes','exports','lodash','util','../../config/logger','bluebird','request-promise'];(function(_0x250c81,_0x1d0eb4){var _0x12d6fc=function(_0x5466b7){while(--_0x5466b7){_0x250c81['push'](_0x250c81['shift']());}};_0x12d6fc(++_0x1d0eb4);}(_0x8f55,0x109));var _0x58f5=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x8f55[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x58f5('0x0'));var util=require(_0x58f5('0x1'));var logger=require(_0x58f5('0x2'))('api');var moment=require('moment');var BPromise=require(_0x58f5('0x3'));var rp=require(_0x58f5('0x4'));var fs=require('fs');var path=require(_0x58f5('0x5'));var rimraf=require('rimraf');var config=require(_0x58f5('0x6'));var attributes=require(_0x58f5('0x7'));module[_0x58f5('0x8')]=function(_0x1563ec,_0x28db1f){return _0x1563ec['define']('AnalyticCustomReport',attributes,{'tableName':'analytics_custom_reports','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6677=['exports','define','AnalyticCustomReport','analytics_custom_reports','lodash','util','moment','bluebird','request-promise','./analyticCustomReport.attributes'];(function(_0x2d066d,_0x2269d7){var _0x3e41d2=function(_0x1ecc20){while(--_0x1ecc20){_0x2d066d['push'](_0x2d066d['shift']());}};_0x3e41d2(++_0x2269d7);}(_0x6677,0xa4));var _0x7667=function(_0x4ef5a1,_0x37a788){_0x4ef5a1=_0x4ef5a1-0x0;var _0x25b667=_0x6677[_0x4ef5a1];return _0x25b667;};'use strict';var _=require(_0x7667('0x0'));var util=require(_0x7667('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x7667('0x2'));var BPromise=require(_0x7667('0x3'));var rp=require(_0x7667('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x7667('0x5'));module[_0x7667('0x6')]=function(_0xfcfb61,_0x1b0443){return _0xfcfb61[_0x7667('0x7')](_0x7667('0x8'),attributes,{'tableName':_0x7667('0x9'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index eb009d2..0049906 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3715=['info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message'];(function(_0x58be83,_0x5f5526){var _0x12dadb=function(_0x358c26){while(--_0x358c26){_0x58be83['push'](_0x58be83['shift']());}};_0x12dadb(++_0x5f5526);}(_0x3715,0xc3));var _0x5371=function(_0x3efefc,_0xf9f2e0){_0x3efefc=_0x3efefc-0x0;var _0x1cdabe=_0x3715[_0x3efefc];return _0x1cdabe;};'use strict';var _=require(_0x5371('0x0'));var util=require(_0x5371('0x1'));var moment=require(_0x5371('0x2'));var BPromise=require(_0x5371('0x3'));var rs=require(_0x5371('0x4'));var fs=require('fs');var Redis=require(_0x5371('0x5'));var db=require(_0x5371('0x6'))['db'];var utils=require(_0x5371('0x7'));var logger=require(_0x5371('0x8'))(_0x5371('0x9'));var config=require(_0x5371('0xa'));var jayson=require(_0x5371('0xb'));var client=jayson['client'][_0x5371('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x340e44,_0x5edddc,_0x426a2a){return new BPromise(function(_0x16c64a,_0x41d142){return client['request'](_0x340e44,_0x426a2a)[_0x5371('0xd')](function(_0x48b76c){logger['info'](_0x5371('0xe'),_0x5edddc,_0x5371('0xf'));logger[_0x5371('0x10')]('AnalyticCustomReport,\x20%s,\x20%s,\x20%s',_0x5edddc,_0x5371('0xf'),JSON[_0x5371('0x11')](_0x48b76c));if(_0x48b76c[_0x5371('0x12')]){if(_0x48b76c['error'][_0x5371('0x13')]===0x1f4){logger[_0x5371('0x12')](_0x5371('0xe'),_0x5edddc,_0x48b76c[_0x5371('0x12')]['message']);return _0x41d142(_0x48b76c[_0x5371('0x12')]['message']);}logger[_0x5371('0x12')](_0x5371('0xe'),_0x5edddc,_0x48b76c['error'][_0x5371('0x14')]);return _0x16c64a(_0x48b76c[_0x5371('0x12')][_0x5371('0x14')]);}else{logger[_0x5371('0x15')](_0x5371('0xe'),_0x5edddc,_0x5371('0xf'));_0x16c64a(_0x48b76c[_0x5371('0x16')]['message']);}})[_0x5371('0x17')](function(_0x3e7169){logger[_0x5371('0x12')](_0x5371('0xe'),_0x5edddc,_0x3e7169);_0x41d142(_0x3e7169);});});}
\ No newline at end of file
+var _0xa0ca=['../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb'];(function(_0x46d492,_0x1c407d){var _0x41fc87=function(_0x49e5dc){while(--_0x49e5dc){_0x46d492['push'](_0x46d492['shift']());}};_0x41fc87(++_0x1c407d);}(_0xa0ca,0x6e));var _0xaa0c=function(_0xc1b9ae,_0x12c6ac){_0xc1b9ae=_0xc1b9ae-0x0;var _0x27c07e=_0xa0ca[_0xc1b9ae];return _0x27c07e;};'use strict';var _=require('lodash');var util=require(_0xaa0c('0x0'));var moment=require(_0xaa0c('0x1'));var BPromise=require('bluebird');var rs=require(_0xaa0c('0x2'));var fs=require('fs');var Redis=require(_0xaa0c('0x3'));var db=require(_0xaa0c('0x4'))['db'];var utils=require(_0xaa0c('0x5'));var logger=require(_0xaa0c('0x6'))(_0xaa0c('0x7'));var config=require('../../config/environment');var jayson=require(_0xaa0c('0x8'));var client=jayson[_0xaa0c('0x9')][_0xaa0c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x34e749,_0xa11c32,_0x130d89){return new BPromise(function(_0x598371,_0x2a26a9){return client[_0xaa0c('0xb')](_0x34e749,_0x130d89)[_0xaa0c('0xc')](function(_0x434910){logger[_0xaa0c('0xd')](_0xaa0c('0xe'),_0xa11c32,_0xaa0c('0xf'));logger['debug'](_0xaa0c('0x10'),_0xa11c32,'request\x20sent',JSON[_0xaa0c('0x11')](_0x434910));if(_0x434910[_0xaa0c('0x12')]){if(_0x434910[_0xaa0c('0x12')][_0xaa0c('0x13')]===0x1f4){logger[_0xaa0c('0x12')](_0xaa0c('0xe'),_0xa11c32,_0x434910['error'][_0xaa0c('0x14')]);return _0x2a26a9(_0x434910['error'][_0xaa0c('0x14')]);}logger['error'](_0xaa0c('0xe'),_0xa11c32,_0x434910[_0xaa0c('0x12')][_0xaa0c('0x14')]);return _0x598371(_0x434910[_0xaa0c('0x12')][_0xaa0c('0x14')]);}else{logger[_0xaa0c('0xd')](_0xaa0c('0xe'),_0xa11c32,_0xaa0c('0xf'));_0x598371(_0x434910[_0xaa0c('0x15')]['message']);}})[_0xaa0c('0x16')](function(_0x181706){logger['error'](_0xaa0c('0xe'),_0xa11c32,_0x181706);_0x2a26a9(_0x181706);});});}
\ No newline at end of file
index 4536d2c..a4b922a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbca8=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','/:id/preview','preview','/:id/run','/:id/query','query','post','create','put','/:id','update','destroy','multer','util','path','connect-timeout','Router','fs-extra'];(function(_0x47a0cd,_0x223224){var _0x21ad28=function(_0x3cf29f){while(--_0x3cf29f){_0x47a0cd['push'](_0x47a0cd['shift']());}};_0x21ad28(++_0x223224);}(_0xbca8,0x1c2));var _0x8bca=function(_0x552feb,_0x41ac88){_0x552feb=_0x552feb-0x0;var _0x21324b=_0xbca8[_0x552feb];return _0x21324b;};'use strict';var multer=require(_0x8bca('0x0'));var util=require(_0x8bca('0x1'));var path=require(_0x8bca('0x2'));var timeout=require(_0x8bca('0x3'));var express=require('express');var router=express[_0x8bca('0x4')]();var fs_extra=require(_0x8bca('0x5'));var auth=require(_0x8bca('0x6'));var interaction=require(_0x8bca('0x7'));var config=require(_0x8bca('0x8'));var controller=require('./analyticCustomReport.controller');router[_0x8bca('0x9')]('/',auth[_0x8bca('0xa')](),controller[_0x8bca('0xb')]);router[_0x8bca('0x9')]('/:id',auth[_0x8bca('0xa')](),controller[_0x8bca('0xc')]);router[_0x8bca('0x9')](_0x8bca('0xd'),auth[_0x8bca('0xa')](),controller[_0x8bca('0xe')]);router[_0x8bca('0x9')](_0x8bca('0xf'),auth[_0x8bca('0xa')](),controller['run']);router['get'](_0x8bca('0x10'),auth[_0x8bca('0xa')](),controller[_0x8bca('0x11')]);router[_0x8bca('0x12')]('/',auth[_0x8bca('0xa')](),controller[_0x8bca('0x13')]);router[_0x8bca('0x14')](_0x8bca('0x15'),auth[_0x8bca('0xa')](),controller[_0x8bca('0x16')]);router['delete']('/:id',auth[_0x8bca('0xa')](),controller[_0x8bca('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0xd8d2=['create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticCustomReport.controller','get','isAuthenticated','index','/:id','show','/:id/preview','preview','/:id/query','query','post'];(function(_0x169ea9,_0xf9fc24){var _0x1ab3e3=function(_0x2a2c45){while(--_0x2a2c45){_0x169ea9['push'](_0x169ea9['shift']());}};_0x1ab3e3(++_0xf9fc24);}(_0xd8d2,0xf9));var _0x2d8d=function(_0xe1fb9c,_0x264431){_0xe1fb9c=_0xe1fb9c-0x0;var _0x48b5ea=_0xd8d2[_0xe1fb9c];return _0x48b5ea;};'use strict';var multer=require(_0x2d8d('0x0'));var util=require(_0x2d8d('0x1'));var path=require(_0x2d8d('0x2'));var timeout=require(_0x2d8d('0x3'));var express=require(_0x2d8d('0x4'));var router=express[_0x2d8d('0x5')]();var fs_extra=require(_0x2d8d('0x6'));var auth=require(_0x2d8d('0x7'));var interaction=require(_0x2d8d('0x8'));var config=require(_0x2d8d('0x9'));var controller=require(_0x2d8d('0xa'));router[_0x2d8d('0xb')]('/',auth[_0x2d8d('0xc')](),controller[_0x2d8d('0xd')]);router[_0x2d8d('0xb')](_0x2d8d('0xe'),auth[_0x2d8d('0xc')](),controller[_0x2d8d('0xf')]);router[_0x2d8d('0xb')](_0x2d8d('0x10'),auth[_0x2d8d('0xc')](),controller[_0x2d8d('0x11')]);router[_0x2d8d('0xb')]('/:id/run',auth[_0x2d8d('0xc')](),controller['run']);router['get'](_0x2d8d('0x12'),auth[_0x2d8d('0xc')](),controller[_0x2d8d('0x13')]);router[_0x2d8d('0x14')]('/',auth[_0x2d8d('0xc')](),controller[_0x2d8d('0x15')]);router[_0x2d8d('0x16')](_0x2d8d('0xe'),auth[_0x2d8d('0xc')](),controller[_0x2d8d('0x17')]);router[_0x2d8d('0x18')]('/:id',auth[_0x2d8d('0xc')](),controller[_0x2d8d('0x19')]);module[_0x2d8d('0x1a')]=router;
\ No newline at end of file
index ee6aaa3..520bd7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc97=['exports','STRING','TEXT','sequelize'];(function(_0x510b98,_0x4c4cbb){var _0x45e775=function(_0x29ec11){while(--_0x29ec11){_0x510b98['push'](_0x510b98['shift']());}};_0x45e775(++_0x4c4cbb);}(_0xdc97,0x13b));var _0x7dc9=function(_0x44cf01,_0x7d90b7){_0x44cf01=_0x44cf01-0x0;var _0x42900b=_0xdc97[_0x44cf01];return _0x42900b;};'use strict';var Sequelize=require(_0x7dc9('0x0'));module[_0x7dc9('0x1')]={'name':{'type':Sequelize[_0x7dc9('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize[_0x7dc9('0x2')]},'table':{'type':Sequelize['STRING']},'conditions':{'type':Sequelize[_0x7dc9('0x3')]},'joins':{'type':Sequelize[_0x7dc9('0x3')]}};
\ No newline at end of file
+var _0xdbf5=['exports','STRING','TEXT'];(function(_0x5e3a94,_0x234e03){var _0x25af6f=function(_0x189ed8){while(--_0x189ed8){_0x5e3a94['push'](_0x5e3a94['shift']());}};_0x25af6f(++_0x234e03);}(_0xdbf5,0x18c));var _0x5dbf=function(_0xe8a2d,_0x2a8c2d){_0xe8a2d=_0xe8a2d-0x0;var _0x1569dd=_0xdbf5[_0xe8a2d];return _0x1569dd;};'use strict';var Sequelize=require('sequelize');module[_0x5dbf('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize[_0x5dbf('0x1')]},'table':{'type':Sequelize[_0x5dbf('0x1')]},'conditions':{'type':Sequelize[_0x5dbf('0x2')]},'joins':{'type':Sequelize[_0x5dbf('0x2')]}};
\ No newline at end of file
index c3fc612..03a2e50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba34=['save','then','destroy','get','DefaultReports','UserProfileResource','error','name','send','index','map','AnalyticDefaultReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','VIRTUAL','merge','options','includeAll','include','findAll','show','params','find','create','body','user','role','UserProfileSection','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','preview','join','left_join','right_join','cross_join','SUM(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','getFields','Sequelize','ValidationErrorItem','keyBy','select','from','table','MetricId','metric','function','replace','format','groupBy','orderBy','DESC','alias','joins','parse','parentKey','foreignKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','clone','debug','Limited\x20Query:','toString','sequelize','SELECT','COUNT(%s)','AVG(%s)','IS\x20NOT\x20NULL','value','order','output','%s-%s.%s','randomstring','generate','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','endDate','startDate','info','Run\x20Query:','fork','countTable','QueryTypes','runReport','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','ROUND(%s)','Please\x20insert\x20at\x20least\x20one\x20field','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','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject'];(function(_0x14b9ab,_0x4b5bb2){var _0x6a7e2f=function(_0x1c2870){while(--_0x1c2870){_0x14b9ab['push'](_0x14b9ab['shift']());}};_0x6a7e2f(++_0x4b5bb2);}(_0xba34,0x119));var _0x4ba3=function(_0x464ef7,_0x531fda){_0x464ef7=_0x464ef7-0x0;var _0x2ec8fa=_0xba34[_0x464ef7];return _0x2ec8fa;};'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'];var dbH=require(_0x4ba3('0x19'))['dbH'];function respondWithStatusCode(_0x256f02,_0x4419b4){_0x4419b4=_0x4419b4||0xcc;return function(_0x29e498){if(_0x29e498){return _0x256f02[_0x4ba3('0x1a')](_0x4419b4);}return _0x256f02[_0x4ba3('0x1b')](_0x4419b4)[_0x4ba3('0x1c')]();};}function respondWithResult(_0x3a74f7,_0x12ac90){_0x12ac90=_0x12ac90||0xc8;return function(_0x1dec48){if(_0x1dec48){return _0x3a74f7[_0x4ba3('0x1b')](_0x12ac90)[_0x4ba3('0x1d')](_0x1dec48);}};}function respondWithFilteredResult(_0x301359,_0x29a9d1){return function(_0x25f584){if(_0x25f584){var _0x40e75b=typeof _0x29a9d1[_0x4ba3('0x1e')]==='undefined'&&typeof _0x29a9d1[_0x4ba3('0x1f')]===_0x4ba3('0x20');var _0x5ff7ce=_0x25f584[_0x4ba3('0x21')];var _0x556290=_0x40e75b?0x0:_0x29a9d1[_0x4ba3('0x1e')];var _0xe4eff9=_0x40e75b?_0x25f584[_0x4ba3('0x21')]:_0x29a9d1[_0x4ba3('0x1e')]+_0x29a9d1[_0x4ba3('0x1f')];var _0x125944;if(_0xe4eff9>=_0x5ff7ce){_0xe4eff9=_0x5ff7ce;_0x125944=0xc8;}else{_0x125944=0xce;}_0x301359['status'](_0x125944);return _0x301359['set'](_0x4ba3('0x22'),_0x556290+'-'+_0xe4eff9+'/'+_0x5ff7ce)['json'](_0x25f584);}return null;};}function patchUpdates(_0x18dff5){return function(_0x163967){try{jsonpatch[_0x4ba3('0x23')](_0x163967,_0x18dff5,!![]);}catch(_0xbc7023){return BPromise[_0x4ba3('0x24')](_0xbc7023);}return _0x163967[_0x4ba3('0x25')]();};}function saveUpdates(_0x4a0823,_0x143c78){return function(_0x1f87e1){if(_0x1f87e1){return _0x1f87e1['update'](_0x4a0823)[_0x4ba3('0x26')](function(_0x4ffe39){return _0x4ffe39;});}return null;};}function removeEntity(_0x1ae4de,_0x18abb3){return function(_0x11a917){if(_0x11a917){return _0x11a917[_0x4ba3('0x27')]()[_0x4ba3('0x26')](function(){var _0xe29a49=_0x11a917[_0x4ba3('0x28')]({'plain':!![]});var _0xe1f7d2=_0x4ba3('0x29');return db[_0x4ba3('0x2a')]['destroy']({'where':{'type':_0xe1f7d2,'resourceId':_0xe29a49['id']}})[_0x4ba3('0x26')](function(){return _0x11a917;});})[_0x4ba3('0x26')](function(){_0x1ae4de[_0x4ba3('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x10537e,_0x1fe5e2){return function(_0x44d78c){if(!_0x44d78c){_0x10537e['sendStatus'](0x194);}return _0x44d78c;};}function handleError(_0x10cae6,_0x843276){_0x843276=_0x843276||0x1f4;return function(_0x34ecb4){logger[_0x4ba3('0x2b')](_0x34ecb4['stack']);if(_0x34ecb4['name']){delete _0x34ecb4[_0x4ba3('0x2c')];}_0x10cae6[_0x4ba3('0x1b')](_0x843276)[_0x4ba3('0x2d')](_0x34ecb4);};}exports[_0x4ba3('0x2e')]=function(_0x2cb5d5,_0x11f88f){var _0x48b3b7={},_0x27444b={},_0x28f36c={'count':0x0,'rows':[]};var _0x24d8fc=_[_0x4ba3('0x2f')](db[_0x4ba3('0x30')][_0x4ba3('0x31')],function(_0x457236){return{'name':_0x457236[_0x4ba3('0x32')],'type':_0x457236[_0x4ba3('0x33')][_0x4ba3('0x34')]};});_0x27444b['model']=_['map'](_0x24d8fc,'name');_0x27444b[_0x4ba3('0x35')]=_[_0x4ba3('0x36')](_0x2cb5d5[_0x4ba3('0x35')]);_0x27444b[_0x4ba3('0x37')]=_[_0x4ba3('0x38')](_0x27444b[_0x4ba3('0x39')],_0x27444b[_0x4ba3('0x35')]);_0x48b3b7[_0x4ba3('0x3a')]=_[_0x4ba3('0x38')](_0x27444b[_0x4ba3('0x39')],qs[_0x4ba3('0x3b')](_0x2cb5d5[_0x4ba3('0x35')]['fields']));_0x48b3b7[_0x4ba3('0x3a')]=_0x48b3b7[_0x4ba3('0x3a')][_0x4ba3('0x3c')]?_0x48b3b7['attributes']:_0x27444b[_0x4ba3('0x39')];if(!_0x2cb5d5['query'][_0x4ba3('0x3d')](_0x4ba3('0x3e'))){_0x48b3b7[_0x4ba3('0x1f')]=qs[_0x4ba3('0x1f')](_0x2cb5d5[_0x4ba3('0x35')][_0x4ba3('0x1f')]);_0x48b3b7['offset']=qs[_0x4ba3('0x1e')](_0x2cb5d5[_0x4ba3('0x35')][_0x4ba3('0x1e')]);}_0x48b3b7['order']=qs[_0x4ba3('0x3f')](_0x2cb5d5[_0x4ba3('0x35')]['sort']);_0x48b3b7[_0x4ba3('0x40')]=qs['filters'](_['pick'](_0x2cb5d5[_0x4ba3('0x35')],_0x27444b[_0x4ba3('0x37')]),_0x24d8fc);if(_0x2cb5d5[_0x4ba3('0x35')][_0x4ba3('0x41')]){_0x48b3b7[_0x4ba3('0x40')]=_['merge'](_0x48b3b7[_0x4ba3('0x40')],{'$or':_[_0x4ba3('0x2f')](_0x24d8fc,function(_0x46d2ca){if(_0x46d2ca[_0x4ba3('0x33')]!==_0x4ba3('0x42')){var _0x2acc92={};_0x2acc92[_0x46d2ca[_0x4ba3('0x2c')]]={'$like':'%'+_0x2cb5d5[_0x4ba3('0x35')]['filter']+'%'};return _0x2acc92;}})});}_0x48b3b7=_[_0x4ba3('0x43')]({},_0x48b3b7,_0x2cb5d5[_0x4ba3('0x44')]);var _0x3cb07f={'where':_0x48b3b7[_0x4ba3('0x40')]};return db[_0x4ba3('0x30')][_0x4ba3('0x21')](_0x3cb07f)[_0x4ba3('0x26')](function(_0xdcc2a2){_0x28f36c[_0x4ba3('0x21')]=_0xdcc2a2;if(_0x2cb5d5[_0x4ba3('0x35')][_0x4ba3('0x45')]){_0x48b3b7[_0x4ba3('0x46')]=[{'all':!![]}];}return db[_0x4ba3('0x30')][_0x4ba3('0x47')](_0x48b3b7);})['then'](function(_0x5af671){_0x28f36c['rows']=_0x5af671;return _0x28f36c;})['then'](respondWithFilteredResult(_0x11f88f,_0x48b3b7))['catch'](handleError(_0x11f88f,null));};exports[_0x4ba3('0x48')]=function(_0x5c4659,_0x29e74d){var _0x5567c7={'raw':!![],'where':{'id':_0x5c4659[_0x4ba3('0x49')]['id']}},_0x53d6eb={};_0x53d6eb[_0x4ba3('0x39')]=_[_0x4ba3('0x36')](db[_0x4ba3('0x30')]['rawAttributes']);_0x53d6eb[_0x4ba3('0x35')]=_['keys'](_0x5c4659[_0x4ba3('0x35')]);_0x53d6eb['filters']=_[_0x4ba3('0x38')](_0x53d6eb[_0x4ba3('0x39')],_0x53d6eb[_0x4ba3('0x35')]);_0x5567c7[_0x4ba3('0x3a')]=_[_0x4ba3('0x38')](_0x53d6eb[_0x4ba3('0x39')],qs[_0x4ba3('0x3b')](_0x5c4659['query'][_0x4ba3('0x3b')]));_0x5567c7[_0x4ba3('0x3a')]=_0x5567c7[_0x4ba3('0x3a')][_0x4ba3('0x3c')]?_0x5567c7[_0x4ba3('0x3a')]:_0x53d6eb['model'];if(_0x5c4659['query'][_0x4ba3('0x45')]){_0x5567c7[_0x4ba3('0x46')]=[{'all':!![]}];}_0x5567c7=_[_0x4ba3('0x43')]({},_0x5567c7,_0x5c4659['options']);return db[_0x4ba3('0x30')][_0x4ba3('0x4a')](_0x5567c7)[_0x4ba3('0x26')](handleEntityNotFound(_0x29e74d,null))['then'](respondWithResult(_0x29e74d,null))['catch'](handleError(_0x29e74d,null));};exports[_0x4ba3('0x4b')]=function(_0x482a83,_0x439acf){return db[_0x4ba3('0x30')][_0x4ba3('0x4b')](_0x482a83[_0x4ba3('0x4c')],{})[_0x4ba3('0x26')](function(_0x213eb0){var _0x590739=_0x482a83[_0x4ba3('0x4d')][_0x4ba3('0x28')]({'plain':!![]});if(!_0x590739)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x590739[_0x4ba3('0x4e')]===_0x4ba3('0x4d')){var _0x156c2d=_0x213eb0[_0x4ba3('0x28')]({'plain':!![]});var _0x360472='Reports';return db[_0x4ba3('0x4f')][_0x4ba3('0x4a')]({'where':{'name':_0x360472,'userProfileId':_0x590739['userProfileId']},'raw':!![]})[_0x4ba3('0x26')](function(_0x19d70f){if(_0x19d70f&&_0x19d70f[_0x4ba3('0x50')]===0x0){return db[_0x4ba3('0x2a')][_0x4ba3('0x4b')]({'name':_0x156c2d[_0x4ba3('0x2c')],'resourceId':_0x156c2d['id'],'type':_0x4ba3('0x29'),'sectionId':_0x19d70f['id']},{})[_0x4ba3('0x26')](function(){return _0x213eb0;});}else{return _0x213eb0;}})[_0x4ba3('0x51')](function(_0x428a27){logger[_0x4ba3('0x2b')](_0x4ba3('0x52'),_0x428a27);throw _0x428a27;});}return _0x213eb0;})[_0x4ba3('0x26')](respondWithResult(_0x439acf,0xc9))[_0x4ba3('0x51')](handleError(_0x439acf,null));};exports[_0x4ba3('0x53')]=function(_0x48a3d4,_0x5e7ed5){if(_0x48a3d4['body']['id']){delete _0x48a3d4[_0x4ba3('0x4c')]['id'];}return db[_0x4ba3('0x30')][_0x4ba3('0x4a')]({'where':{'id':_0x48a3d4[_0x4ba3('0x49')]['id']}})[_0x4ba3('0x26')](handleEntityNotFound(_0x5e7ed5,null))['then'](saveUpdates(_0x48a3d4[_0x4ba3('0x4c')],null))[_0x4ba3('0x26')](respondWithResult(_0x5e7ed5,null))[_0x4ba3('0x51')](handleError(_0x5e7ed5,null));};exports[_0x4ba3('0x27')]=function(_0x5359d1,_0x1e83fb){return db[_0x4ba3('0x30')][_0x4ba3('0x4a')]({'where':{'id':_0x5359d1[_0x4ba3('0x49')]['id']}})[_0x4ba3('0x26')](handleEntityNotFound(_0x1e83fb,null))[_0x4ba3('0x26')](removeEntity(_0x1e83fb,null))[_0x4ba3('0x51')](handleError(_0x1e83fb,null));};exports[_0x4ba3('0x54')]=function(_0x328314,_0x4fa64d){var _0x20c849=0xa;var _0x42bb4b=[_0x4ba3('0x55'),_0x4ba3('0x56'),_0x4ba3('0x57'),_0x4ba3('0x58')];var _0x40827a={'SUM':_0x4ba3('0x59'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0x4ba3('0x5a'),'MAX':_0x4ba3('0x5b'),'MIN':_0x4ba3('0x5c'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x4ba3('0x5d'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x4ba3('0x5e')};var _0x4cc10a={'SEC_TO_TIME':_0x4ba3('0x5f'),'DATE':_0x4ba3('0x60'),'HOUR':_0x4ba3('0x61'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x4ba3('0x62')};var _0xaef1b=function(_0x2a48fe){return!_[_0x4ba3('0x63')]([_0x4ba3('0x64'),'IS\x20NOT\x20NULL',_0x4ba3('0x65'),_0x4ba3('0x66')],_0x2a48fe);};var _0x34cc21=function(_0x469ef0){if(!_0x469ef0||!_0x469ef0[_0x4ba3('0x67')][_0x4ba3('0x3c')]){return'';}for(var _0x3fdf7f='(',_0x38699e=0x0;_0x38699e<_0x469ef0[_0x4ba3('0x67')][_0x4ba3('0x3c')];_0x38699e+=0x1){_0x38699e>0x0&&(_0x3fdf7f+='\x20'+_0x469ef0[_0x4ba3('0x68')]+'\x20');_0x3fdf7f+=_0x469ef0['rules'][_0x38699e][_0x4ba3('0x69')]?_0x34cc21(_0x469ef0[_0x4ba3('0x67')][_0x38699e]['group']):_0x469ef0['rules'][_0x38699e][_0x4ba3('0x6a')]+'\x20'+_0x469ef0[_0x4ba3('0x67')][_0x38699e]['condition']+(_0xaef1b(_0x469ef0[_0x4ba3('0x67')][_0x38699e][_0x4ba3('0x6b')])?'\x20'+_0x469ef0[_0x4ba3('0x67')][_0x38699e]['value']:'');}return _0x3fdf7f+')';};var _0x1f5815={'where':{'id':_0x328314['params']['id']}},_0x46224,_0x1af489,_0x11209b,_0x24a75a,_0x3a4838;_0x1f5815=_[_0x4ba3('0x43')]({},_0x1f5815,_0x328314[_0x4ba3('0x44')]);return db[_0x4ba3('0x30')]['find'](_0x1f5815)[_0x4ba3('0x26')](function(_0x2f8bcc){if(_0x2f8bcc){_0x46224=_0x2f8bcc;return _0x2f8bcc[_0x4ba3('0x6c')]();}return null;})[_0x4ba3('0x26')](function(_0x21c8b1){if(_0x21c8b1){if(!_0x21c8b1[_0x4ba3('0x3c')]){throw new db[(_0x4ba3('0x6d'))][(_0x4ba3('0x6e'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x1af489=_0x21c8b1;return db['AnalyticMetric'][_0x4ba3('0x47')]({'raw':!![]});}return null;})['then'](function(_0x13ee2c){if(_0x13ee2c){_0x11209b=_[_0x4ba3('0x6f')](_0x13ee2c,'id');var _0x442d66;var _0x5c7fc2=squel[_0x4ba3('0x70')]();_0x5c7fc2[_0x4ba3('0x71')](_0x46224[_0x4ba3('0x72')]);for(var _0x5baf26=0x0;_0x5baf26<_0x1af489[_0x4ba3('0x3c')];_0x5baf26+=0x1){_0x442d66=_0x1af489[_0x5baf26]['MetricId']?_0x11209b[_0x1af489[_0x5baf26][_0x4ba3('0x73')]][_0x4ba3('0x74')]:_0x1af489[_0x5baf26]['field'];_0x442d66=_0x1af489[_0x5baf26][_0x4ba3('0x75')]?_[_0x4ba3('0x76')](_0x40827a[_0x1af489[_0x5baf26][_0x4ba3('0x75')]],'%s',_0x442d66):_0x442d66;_0x442d66=_0x1af489[_0x5baf26][_0x4ba3('0x77')]?_[_0x4ba3('0x76')](_0x4cc10a[_0x1af489[_0x5baf26][_0x4ba3('0x77')]],'%s',_0x442d66):_0x442d66;if(_0x1af489[_0x5baf26][_0x4ba3('0x78')]){_0x5c7fc2[_0x4ba3('0x69')](_0x442d66);}_0x1af489[_0x5baf26][_0x4ba3('0x79')]&&_0x5c7fc2['order'](_0x442d66,_0x1af489[_0x5baf26][_0x4ba3('0x79')]===_0x4ba3('0x7a')?![]:!![]);_0x5c7fc2[_0x4ba3('0x6a')](_0x442d66,_0x1af489[_0x5baf26][_0x4ba3('0x7b')]||_0x442d66);}if(_0x46224[_0x4ba3('0x7c')]){_0x46224[_0x4ba3('0x7c')]=JSON[_0x4ba3('0x7d')](_0x46224[_0x4ba3('0x7c')]);for(var _0x365d94=0x0;_0x365d94<_0x46224[_0x4ba3('0x7c')][_0x4ba3('0x3c')];_0x365d94+=0x1){if(_0x46224[_0x4ba3('0x7c')][_0x365d94]['type']&&_[_0x4ba3('0x63')](_0x42bb4b,_0x46224[_0x4ba3('0x7c')][_0x365d94]['type'])&&_0x46224[_0x4ba3('0x7c')][_0x365d94][_0x4ba3('0x7e')]&&_0x46224['joins'][_0x365d94]['foreignTable']&&_0x46224[_0x4ba3('0x7c')][_0x365d94][_0x4ba3('0x7f')]){_0x5c7fc2[_0x46224[_0x4ba3('0x7c')][_0x365d94][_0x4ba3('0x33')]](_0x46224[_0x4ba3('0x7c')][_0x365d94][_0x4ba3('0x80')],null,util[_0x4ba3('0x77')](_0x4ba3('0x81'),_0x46224['table'],_0x46224[_0x4ba3('0x7c')][_0x365d94]['parentKey'],_0x46224[_0x4ba3('0x7c')][_0x365d94][_0x4ba3('0x80')],_0x46224[_0x4ba3('0x7c')][_0x365d94][_0x4ba3('0x7f')]));}}}if(_0x46224[_0x4ba3('0x82')]){_0x46224[_0x4ba3('0x82')]=JSON[_0x4ba3('0x7d')](_0x46224[_0x4ba3('0x82')]);_0x5c7fc2['where'](_0x34cc21(_0x46224[_0x4ba3('0x82')][_0x4ba3('0x69')]));}_0x3a4838=_0x5c7fc2[_0x4ba3('0x83')]();_0x5c7fc2['limit'](_0x20c849);_0x5c7fc2[_0x4ba3('0x1e')](0x0);logger[_0x4ba3('0x84')](_0x4ba3('0x85'),_0x5c7fc2[_0x4ba3('0x86')]());return dbH[_0x4ba3('0x87')][_0x4ba3('0x35')](_0x5c7fc2[_0x4ba3('0x86')](),{'type':dbH['sequelize']['QueryTypes'][_0x4ba3('0x88')]});}})['then'](respondWithResult(_0x4fa64d,null))[_0x4ba3('0x51')](handleError(_0x4fa64d,null));};function runReport(_0x15508f,_0x108679,_0x20f7db){var _0x5a3c63=_0x108679['name'];var _0x2d16e5=0xa;var _0x2b2132=['join',_0x4ba3('0x56'),_0x4ba3('0x57'),_0x4ba3('0x58')];var _0x1e8232={'SUM':_0x4ba3('0x59'),'COUNT':_0x4ba3('0x89'),'COUNT DISTINCT':_0x4ba3('0x5a'),'MAX':'MAX(%s)','MIN':_0x4ba3('0x5c'),'AVG':_0x4ba3('0x8a'),'GROUP_CONCAT':_0x4ba3('0x5d'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x4ba3('0x5e')};var _0x13dbc4={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x4ba3('0x60'),'HOUR':_0x4ba3('0x61'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x5aa412=function(_0x4ec70e){return!_[_0x4ba3('0x63')]([_0x4ba3('0x64'),_0x4ba3('0x8b'),_0x4ba3('0x65'),_0x4ba3('0x66')],_0x4ec70e);};var _0x333a97=function(_0x30d7a9){if(!_0x30d7a9||!_0x30d7a9['rules'][_0x4ba3('0x3c')]){return'';}for(var _0x4cd4a2='(',_0x31a725=0x0;_0x31a725<_0x30d7a9['rules'][_0x4ba3('0x3c')];_0x31a725+=0x1){_0x31a725>0x0&&(_0x4cd4a2+='\x20'+_0x30d7a9[_0x4ba3('0x68')]+'\x20');_0x4cd4a2+=_0x30d7a9[_0x4ba3('0x67')][_0x31a725][_0x4ba3('0x69')]?_0x333a97(_0x30d7a9[_0x4ba3('0x67')][_0x31a725]['group']):_0x30d7a9['rules'][_0x31a725][_0x4ba3('0x6a')]+'\x20'+_0x30d7a9[_0x4ba3('0x67')][_0x31a725][_0x4ba3('0x6b')]+(_0x5aa412(_0x30d7a9[_0x4ba3('0x67')][_0x31a725][_0x4ba3('0x6b')])?'\x20'+_0x30d7a9[_0x4ba3('0x67')][_0x31a725][_0x4ba3('0x8c')]:'');}return _0x4cd4a2+')';};var _0x3d8606={'where':{'id':_0x15508f['id']}},_0x2d00e3,_0x35441e,_0x217ea4,_0x40dcee,_0x5ea9d0;_0x3d8606=_[_0x4ba3('0x43')]({},_0x3d8606,_0x20f7db);return db['AnalyticDefaultReport'][_0x4ba3('0x4a')](_0x3d8606)[_0x4ba3('0x26')](function(_0x17b970){if(_0x17b970){_0x2d00e3=_0x17b970;return _0x17b970[_0x4ba3('0x6c')]();}return null;})['then'](function(_0x2a2dc2){if(_0x2a2dc2){if(!_0x2a2dc2[_0x4ba3('0x3c')]){throw new db[(_0x4ba3('0x6d'))][(_0x4ba3('0x6e'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x35441e=_0x2a2dc2;return db['AnalyticMetric'][_0x4ba3('0x47')]({'raw':!![]});}return null;})[_0x4ba3('0x26')](function(_0x3188c8){if(_0x3188c8){_0x217ea4=_['keyBy'](_0x3188c8,'id');var _0x2f793a;var _0x1194a5=squel[_0x4ba3('0x70')]();_0x1194a5[_0x4ba3('0x71')](_0x2d00e3[_0x4ba3('0x72')]);for(var _0x1e2134=0x0;_0x1e2134<_0x35441e['length'];_0x1e2134+=0x1){_0x2f793a=_0x35441e[_0x1e2134][_0x4ba3('0x73')]?_0x217ea4[_0x35441e[_0x1e2134]['MetricId']][_0x4ba3('0x74')]:_0x35441e[_0x1e2134][_0x4ba3('0x6a')];_0x2f793a=_0x35441e[_0x1e2134][_0x4ba3('0x75')]?_[_0x4ba3('0x76')](_0x1e8232[_0x35441e[_0x1e2134]['function']],'%s',_0x2f793a):_0x2f793a;_0x2f793a=_0x35441e[_0x1e2134][_0x4ba3('0x77')]?_[_0x4ba3('0x76')](_0x13dbc4[_0x35441e[_0x1e2134]['format']],'%s',_0x2f793a):_0x2f793a;if(_0x35441e[_0x1e2134][_0x4ba3('0x78')]){_0x1194a5['group'](_0x2f793a);}_0x35441e[_0x1e2134][_0x4ba3('0x79')]&&_0x1194a5[_0x4ba3('0x8d')](_0x2f793a,_0x35441e[_0x1e2134][_0x4ba3('0x79')]===_0x4ba3('0x7a')?![]:!![]);_0x1194a5[_0x4ba3('0x6a')](_0x2f793a,_0x35441e[_0x1e2134]['alias']||_0x2f793a);}if(_0x2d00e3['joins']){_0x2d00e3[_0x4ba3('0x7c')]=JSON[_0x4ba3('0x7d')](_0x2d00e3[_0x4ba3('0x7c')]);for(var _0x56244e=0x0;_0x56244e<_0x2d00e3[_0x4ba3('0x7c')][_0x4ba3('0x3c')];_0x56244e+=0x1){if(_0x2d00e3['joins'][_0x56244e][_0x4ba3('0x33')]&&_[_0x4ba3('0x63')](_0x2b2132,_0x2d00e3[_0x4ba3('0x7c')][_0x56244e][_0x4ba3('0x33')])&&_0x2d00e3[_0x4ba3('0x7c')][_0x56244e][_0x4ba3('0x7e')]&&_0x2d00e3[_0x4ba3('0x7c')][_0x56244e][_0x4ba3('0x80')]&&_0x2d00e3['joins'][_0x56244e][_0x4ba3('0x7f')]){_0x1194a5[_0x2d00e3[_0x4ba3('0x7c')][_0x56244e][_0x4ba3('0x33')]](_0x2d00e3[_0x4ba3('0x7c')][_0x56244e][_0x4ba3('0x80')],null,util[_0x4ba3('0x77')](_0x4ba3('0x81'),_0x2d00e3[_0x4ba3('0x72')],_0x2d00e3[_0x4ba3('0x7c')][_0x56244e][_0x4ba3('0x7e')],_0x2d00e3[_0x4ba3('0x7c')][_0x56244e][_0x4ba3('0x80')],_0x2d00e3[_0x4ba3('0x7c')][_0x56244e]['foreignKey']));}}}if(_0x2d00e3['conditions']){_0x2d00e3[_0x4ba3('0x82')]=JSON[_0x4ba3('0x7d')](_0x2d00e3[_0x4ba3('0x82')]);_0x1194a5[_0x4ba3('0x40')](_0x333a97(_0x2d00e3[_0x4ba3('0x82')][_0x4ba3('0x69')]));}_0x5ea9d0=_0x1194a5[_0x4ba3('0x83')]();_0x1194a5['limit'](_0x2d16e5);_0x1194a5['offset'](0x0);return;}})[_0x4ba3('0x26')](function(){if(_0x108679[_0x4ba3('0x8e')]==='web'){return null;}var _0x4fb6b5=_['merge'](_0x108679,{'name':_0x108679['fullPath']||_0x108679[_0x4ba3('0x2c')]||_0x2d00e3[_0x4ba3('0x2c')],'basename':_0x5a3c63,'savename':util[_0x4ba3('0x77')](_0x4ba3('0x8f'),_0x108679[_0x4ba3('0x2c')]||_0x2d00e3['name'],require(_0x4ba3('0x90'))[_0x4ba3('0x91')](0x4),_0x108679[_0x4ba3('0x8e')]||'csv'),'reportId':_0x2d00e3['id'],'reportType':'default'});return db['AnalyticExtractedReport']['create'](_0x4fb6b5,{'raw':!![]});})[_0x4ba3('0x26')](function(_0x17d501){if(_0x2d00e3[_0x4ba3('0x72')]===_0x4ba3('0x92')){_0x5ea9d0[_0x4ba3('0x40')](_0x2d00e3['table']+_0x4ba3('0x93'),_0x108679['startDate'],_0x108679[_0x4ba3('0x94')]);}else{_0x5ea9d0[_0x4ba3('0x40')](_0x2d00e3[_0x4ba3('0x72')]+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x108679[_0x4ba3('0x95')],_0x108679[_0x4ba3('0x94')]);}if(_0x17d501){logger[_0x4ba3('0x96')](_0x4ba3('0x97'),_0x5ea9d0['toString']());require('child_process')[_0x4ba3('0x98')](path[_0x4ba3('0x55')](__dirname,'../../components/export/',_0x17d501[_0x4ba3('0x8e')]),[_0x17d501['id'],_0x5ea9d0['toString'](),path['join'](__dirname,'../../files/reports',_0x17d501['savename']),_0x5a3c63]);return _0x17d501;}else{var _0x2d2ca3=squel[_0x4ba3('0x70')]();_0x2d2ca3[_0x4ba3('0x71')]('('+_0x5ea9d0[_0x4ba3('0x86')]()+')',_0x4ba3('0x99'));_0x2d2ca3['field']('COUNT(*)',_0x4ba3('0x21'));_0x5ea9d0['limit'](_0x108679[_0x4ba3('0x1f')]||_0x2d16e5);_0x5ea9d0[_0x4ba3('0x1e')](_0x108679[_0x4ba3('0x1e')]||0x0);return dbH['sequelize'][_0x4ba3('0x35')](_0x2d2ca3[_0x4ba3('0x86')](),{'type':dbH[_0x4ba3('0x87')][_0x4ba3('0x9a')][_0x4ba3('0x88')]})[_0x4ba3('0x26')](function(_0xc938c){if(!_0xc938c[_0x4ba3('0x3c')]){_0x40dcee=0x0;}else{_0x40dcee=_0xc938c[0x0][_0x4ba3('0x21')]||0x0;}return dbH['sequelize']['query'](_0x5ea9d0[_0x4ba3('0x86')](),{'type':dbH[_0x4ba3('0x87')][_0x4ba3('0x9a')][_0x4ba3('0x88')]});})[_0x4ba3('0x26')](function(_0xd97c26){return{'rows':_0xd97c26||[],'count':_0x40dcee};});}});}exports['run']=function(_0x1fbdc7,_0x9e45ec){return runReport(_0x1fbdc7['params'],_0x1fbdc7[_0x4ba3('0x35')],_0x1fbdc7[_0x4ba3('0x44')])[_0x4ba3('0x26')](respondWithResult(_0x9e45ec,null))[_0x4ba3('0x51')](handleError(_0x9e45ec,null));};exports[_0x4ba3('0x9b')]=runReport;exports[_0x4ba3('0x35')]=function(_0xddfb0c,_0x41c531){var _0x25bf75=0xa;var _0x18bd77=[_0x4ba3('0x55'),_0x4ba3('0x56'),_0x4ba3('0x57'),_0x4ba3('0x58')];var _0x2e812b={'SUM':'SUM(%s)','COUNT':_0x4ba3('0x89'),'COUNT DISTINCT':_0x4ba3('0x5a'),'MAX':'MAX(%s)','MIN':_0x4ba3('0x5c'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x4ba3('0x5d'),'GROUP_CONCAT ASC':_0x4ba3('0x9c'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x5dc74f={'SEC_TO_TIME':_0x4ba3('0x5f'),'DATE':'DATE(%s)','HOUR':_0x4ba3('0x61'),'ROUND':_0x4ba3('0x9d'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x1590f0=function(_0x5efab9){return!_[_0x4ba3('0x63')]([_0x4ba3('0x64'),_0x4ba3('0x8b'),'IS\x20EMPTY',_0x4ba3('0x66')],_0x5efab9);};var _0x4d3262=function(_0x4ad4d3){if(!_0x4ad4d3||!_0x4ad4d3[_0x4ba3('0x67')]['length']){return'';}for(var _0x4529a3='(',_0x9b9c64=0x0;_0x9b9c64<_0x4ad4d3[_0x4ba3('0x67')]['length'];_0x9b9c64+=0x1){_0x9b9c64>0x0&&(_0x4529a3+='\x20'+_0x4ad4d3['operator']+'\x20');_0x4529a3+=_0x4ad4d3[_0x4ba3('0x67')][_0x9b9c64][_0x4ba3('0x69')]?_0x4d3262(_0x4ad4d3[_0x4ba3('0x67')][_0x9b9c64][_0x4ba3('0x69')]):_0x4ad4d3[_0x4ba3('0x67')][_0x9b9c64]['field']+'\x20'+_0x4ad4d3[_0x4ba3('0x67')][_0x9b9c64][_0x4ba3('0x6b')]+(_0x1590f0(_0x4ad4d3[_0x4ba3('0x67')][_0x9b9c64][_0x4ba3('0x6b')])?'\x20'+_0x4ad4d3['rules'][_0x9b9c64][_0x4ba3('0x8c')]:'');}return _0x4529a3+')';};var _0x3073c5={'where':{'id':_0xddfb0c[_0x4ba3('0x49')]['id']}},_0x3d1c11,_0xa41747,_0x25c92c,_0x422a8d,_0x225746;_0x3073c5=_[_0x4ba3('0x43')]({},_0x3073c5,_0xddfb0c[_0x4ba3('0x44')]);return db[_0x4ba3('0x30')]['find'](_0x3073c5)[_0x4ba3('0x26')](function(_0x3db4c2){if(_0x3db4c2){_0x3d1c11=_0x3db4c2;return _0x3db4c2['getFields']();}return null;})[_0x4ba3('0x26')](function(_0x4a8449){if(_0x4a8449){if(!_0x4a8449[_0x4ba3('0x3c')]){throw new db[(_0x4ba3('0x6d'))][(_0x4ba3('0x6e'))](_0x4ba3('0x9e'),0x193);}_0xa41747=_0x4a8449;return db['AnalyticMetric']['findAll']({'raw':!![]});}return null;})[_0x4ba3('0x26')](function(_0xfaf98a){if(_0xfaf98a){_0x25c92c=_['keyBy'](_0xfaf98a,'id');var _0x30c904;var _0x267801=squel[_0x4ba3('0x70')]();_0x267801[_0x4ba3('0x71')](_0x3d1c11['table']);for(var _0x1bae1b=0x0;_0x1bae1b<_0xa41747[_0x4ba3('0x3c')];_0x1bae1b+=0x1){_0x30c904=_0xa41747[_0x1bae1b][_0x4ba3('0x73')]?_0x25c92c[_0xa41747[_0x1bae1b][_0x4ba3('0x73')]]['metric']:_0xa41747[_0x1bae1b][_0x4ba3('0x6a')];_0x30c904=_0xa41747[_0x1bae1b]['function']?_[_0x4ba3('0x76')](_0x2e812b[_0xa41747[_0x1bae1b][_0x4ba3('0x75')]],'%s',_0x30c904):_0x30c904;_0x30c904=_0xa41747[_0x1bae1b][_0x4ba3('0x77')]?_[_0x4ba3('0x76')](_0x5dc74f[_0xa41747[_0x1bae1b]['format']],'%s',_0x30c904):_0x30c904;if(_0xa41747[_0x1bae1b]['groupBy']){_0x267801[_0x4ba3('0x69')](_0x30c904);}_0xa41747[_0x1bae1b][_0x4ba3('0x79')]&&_0x267801[_0x4ba3('0x8d')](_0x30c904,_0xa41747[_0x1bae1b]['orderBy']==='DESC'?![]:!![]);_0x267801[_0x4ba3('0x6a')](_0x30c904,_0xa41747[_0x1bae1b][_0x4ba3('0x7b')]||_0x30c904);}if(_0x3d1c11[_0x4ba3('0x7c')]){_0x3d1c11[_0x4ba3('0x7c')]=JSON['parse'](_0x3d1c11[_0x4ba3('0x7c')]);for(var _0x2f4966=0x0;_0x2f4966<_0x3d1c11[_0x4ba3('0x7c')][_0x4ba3('0x3c')];_0x2f4966+=0x1){if(_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966][_0x4ba3('0x33')]&&_[_0x4ba3('0x63')](_0x18bd77,_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966][_0x4ba3('0x33')])&&_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966][_0x4ba3('0x7e')]&&_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966][_0x4ba3('0x80')]&&_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966][_0x4ba3('0x7f')]){_0x267801[_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966][_0x4ba3('0x33')]](_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966]['foreignTable'],null,util[_0x4ba3('0x77')](_0x4ba3('0x81'),_0x3d1c11[_0x4ba3('0x72')],_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966][_0x4ba3('0x7e')],_0x3d1c11[_0x4ba3('0x7c')][_0x2f4966]['foreignTable'],_0x3d1c11['joins'][_0x2f4966][_0x4ba3('0x7f')]));}}}if(_0x3d1c11[_0x4ba3('0x82')]){_0x3d1c11[_0x4ba3('0x82')]=JSON['parse'](_0x3d1c11[_0x4ba3('0x82')]);_0x267801[_0x4ba3('0x40')](_0x4d3262(_0x3d1c11[_0x4ba3('0x82')][_0x4ba3('0x69')]));}_0x225746=_0x267801[_0x4ba3('0x83')]();_0x267801[_0x4ba3('0x1f')](_0x25bf75);_0x267801[_0x4ba3('0x1e')](0x0);logger[_0x4ba3('0x84')](_0x4ba3('0x85'),_0x267801['toString']());return dbH[_0x4ba3('0x87')]['query'](_0x267801['toString'](),{'type':dbH[_0x4ba3('0x87')][_0x4ba3('0x9a')]['SELECT']});}})[_0x4ba3('0x26')](function(){return{'sql':_0x225746[_0x4ba3('0x86')]()};})[_0x4ba3('0x26')](respondWithResult(_0x41c531,null))[_0x4ba3('0x51')](handleError(_0x41c531,null));};
\ No newline at end of file
+var _0xc4aa=['Content-Range','apply','reject','save','update','then','destroy','get','DefaultReports','UserProfileResource','name','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','AnalyticDefaultReport','findAll','rows','catch','show','length','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','preview','join','left_join','right_join','cross_join','SUM(%s)','COUNT(DISTINCT\x20%s)','MIN(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','IS\x20NULL','IS\x20EMPTY','rules','operator','group','field','condition','getFields','Sequelize','AnalyticMetric','keyBy','select','from','table','MetricId','metric','function','replace','format','orderBy','joins','parentKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','parse','clone','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','COUNT(%s)','MAX(%s)','AVG(%s)','SEC_TO_TIME(%s)','IS\x20NOT\x20EMPTY','value','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','groupBy','alias','includes','foreignKey','output','web','fullPath','%s-%s.%s','randomstring','default','AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','endDate','startDate','info','Run\x20Query:','child_process','fork','countTable','runReport','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','IS\x20NOT\x20NULL','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set'];(function(_0x1416fc,_0x72e155){var _0x3a4b34=function(_0x455ac8){while(--_0x455ac8){_0x1416fc['push'](_0x1416fc['shift']());}};_0x3a4b34(++_0x72e155);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0xc4aa[_0x8c43de];return _0xa6591b;};'use strict';var emlformat=require(_0xac4a('0x0'));var rimraf=require(_0xac4a('0x1'));var zipdir=require(_0xac4a('0x2'));var jsonpatch=require(_0xac4a('0x3'));var rp=require(_0xac4a('0x4'));var moment=require(_0xac4a('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xac4a('0x6'));var sox=require(_0xac4a('0x7'));var csv=require(_0xac4a('0x8'));var ejs=require(_0xac4a('0x9'));var fs=require('fs');var fs_extra=require(_0xac4a('0xa'));var _=require(_0xac4a('0xb'));var squel=require(_0xac4a('0xc'));var crypto=require(_0xac4a('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xac4a('0x8'));var querystring=require(_0xac4a('0xe'));var Papa=require(_0xac4a('0xf'));var Redis=require('ioredis');var authService=require(_0xac4a('0x10'));var qs=require(_0xac4a('0x11'));var as=require(_0xac4a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xac4a('0x13'))('api');var utils=require(_0xac4a('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xac4a('0x15'));var db=require(_0xac4a('0x16'))['db'];var dbH=require(_0xac4a('0x16'))['dbH'];function respondWithStatusCode(_0x21a79,_0x68424a){_0x68424a=_0x68424a||0xcc;return function(_0x247b78){if(_0x247b78){return _0x21a79[_0xac4a('0x17')](_0x68424a);}return _0x21a79[_0xac4a('0x18')](_0x68424a)[_0xac4a('0x19')]();};}function respondWithResult(_0x34bc01,_0x33c287){_0x33c287=_0x33c287||0xc8;return function(_0x190418){if(_0x190418){return _0x34bc01[_0xac4a('0x18')](_0x33c287)[_0xac4a('0x1a')](_0x190418);}};}function respondWithFilteredResult(_0x26dbb8,_0x4a2119){return function(_0x402fff){if(_0x402fff){var _0x34d797=typeof _0x4a2119[_0xac4a('0x1b')]===_0xac4a('0x1c')&&typeof _0x4a2119[_0xac4a('0x1d')]===_0xac4a('0x1c');var _0x28e304=_0x402fff[_0xac4a('0x1e')];var _0x546c5d=_0x34d797?0x0:_0x4a2119['offset'];var _0x21a729=_0x34d797?_0x402fff[_0xac4a('0x1e')]:_0x4a2119[_0xac4a('0x1b')]+_0x4a2119['limit'];var _0x39e83e;if(_0x21a729>=_0x28e304){_0x21a729=_0x28e304;_0x39e83e=0xc8;}else{_0x39e83e=0xce;}_0x26dbb8[_0xac4a('0x18')](_0x39e83e);return _0x26dbb8[_0xac4a('0x1f')](_0xac4a('0x20'),_0x546c5d+'-'+_0x21a729+'/'+_0x28e304)[_0xac4a('0x1a')](_0x402fff);}return null;};}function patchUpdates(_0x3e829c){return function(_0xe38996){try{jsonpatch[_0xac4a('0x21')](_0xe38996,_0x3e829c,!![]);}catch(_0x534092){return BPromise[_0xac4a('0x22')](_0x534092);}return _0xe38996[_0xac4a('0x23')]();};}function saveUpdates(_0x599787,_0x3d7ce0){return function(_0x4169c0){if(_0x4169c0){return _0x4169c0[_0xac4a('0x24')](_0x599787)[_0xac4a('0x25')](function(_0x4d2d6c){return _0x4d2d6c;});}return null;};}function removeEntity(_0x1b7998,_0x2503d8){return function(_0x15435c){if(_0x15435c){return _0x15435c[_0xac4a('0x26')]()[_0xac4a('0x25')](function(){var _0x2b0dc2=_0x15435c[_0xac4a('0x27')]({'plain':!![]});var _0x36054a=_0xac4a('0x28');return db[_0xac4a('0x29')][_0xac4a('0x26')]({'where':{'type':_0x36054a,'resourceId':_0x2b0dc2['id']}})[_0xac4a('0x25')](function(){return _0x15435c;});})[_0xac4a('0x25')](function(){_0x1b7998[_0xac4a('0x18')](0xcc)[_0xac4a('0x19')]();});}};}function handleEntityNotFound(_0x20202c,_0x4e17ce){return function(_0x23b061){if(!_0x23b061){_0x20202c[_0xac4a('0x17')](0x194);}return _0x23b061;};}function handleError(_0x42a33c,_0x2772fe){_0x2772fe=_0x2772fe||0x1f4;return function(_0x116700){logger['error'](_0x116700['stack']);if(_0x116700[_0xac4a('0x2a')]){delete _0x116700[_0xac4a('0x2a')];}_0x42a33c[_0xac4a('0x18')](_0x2772fe)['send'](_0x116700);};}exports['index']=function(_0x355755,_0x2896bc){var _0x228629={},_0x432066={},_0x17118e={'count':0x0,'rows':[]};var _0x53d3a5=_[_0xac4a('0x2b')](db['AnalyticDefaultReport'][_0xac4a('0x2c')],function(_0x57adcf){return{'name':_0x57adcf[_0xac4a('0x2d')],'type':_0x57adcf[_0xac4a('0x2e')][_0xac4a('0x2f')]};});_0x432066[_0xac4a('0x30')]=_[_0xac4a('0x2b')](_0x53d3a5,_0xac4a('0x2a'));_0x432066[_0xac4a('0x31')]=_[_0xac4a('0x32')](_0x355755[_0xac4a('0x31')]);_0x432066[_0xac4a('0x33')]=_[_0xac4a('0x34')](_0x432066[_0xac4a('0x30')],_0x432066[_0xac4a('0x31')]);_0x228629[_0xac4a('0x35')]=_['intersection'](_0x432066[_0xac4a('0x30')],qs[_0xac4a('0x36')](_0x355755['query'][_0xac4a('0x36')]));_0x228629[_0xac4a('0x35')]=_0x228629['attributes']['length']?_0x228629[_0xac4a('0x35')]:_0x432066[_0xac4a('0x30')];if(!_0x355755[_0xac4a('0x31')][_0xac4a('0x37')]('nolimit')){_0x228629[_0xac4a('0x1d')]=qs[_0xac4a('0x1d')](_0x355755['query'][_0xac4a('0x1d')]);_0x228629[_0xac4a('0x1b')]=qs[_0xac4a('0x1b')](_0x355755['query'][_0xac4a('0x1b')]);}_0x228629[_0xac4a('0x38')]=qs[_0xac4a('0x39')](_0x355755['query'][_0xac4a('0x39')]);_0x228629[_0xac4a('0x3a')]=qs['filters'](_['pick'](_0x355755[_0xac4a('0x31')],_0x432066['filters']),_0x53d3a5);if(_0x355755['query']['filter']){_0x228629['where']=_[_0xac4a('0x3b')](_0x228629[_0xac4a('0x3a')],{'$or':_[_0xac4a('0x2b')](_0x53d3a5,function(_0x472484){if(_0x472484[_0xac4a('0x2e')]!==_0xac4a('0x3c')){var _0x4220e2={};_0x4220e2[_0x472484[_0xac4a('0x2a')]]={'$like':'%'+_0x355755[_0xac4a('0x31')][_0xac4a('0x3d')]+'%'};return _0x4220e2;}})});}_0x228629=_[_0xac4a('0x3b')]({},_0x228629,_0x355755[_0xac4a('0x3e')]);var _0x4e4994={'where':_0x228629['where']};return db['AnalyticDefaultReport'][_0xac4a('0x1e')](_0x4e4994)[_0xac4a('0x25')](function(_0x14e80b){_0x17118e[_0xac4a('0x1e')]=_0x14e80b;if(_0x355755[_0xac4a('0x31')][_0xac4a('0x3f')]){_0x228629[_0xac4a('0x40')]=[{'all':!![]}];}return db[_0xac4a('0x41')][_0xac4a('0x42')](_0x228629);})[_0xac4a('0x25')](function(_0x561cb7){_0x17118e[_0xac4a('0x43')]=_0x561cb7;return _0x17118e;})[_0xac4a('0x25')](respondWithFilteredResult(_0x2896bc,_0x228629))[_0xac4a('0x44')](handleError(_0x2896bc,null));};exports[_0xac4a('0x45')]=function(_0x1a96cf,_0x57b879){var _0x8700b4={'raw':!![],'where':{'id':_0x1a96cf['params']['id']}},_0x1b77bb={};_0x1b77bb[_0xac4a('0x30')]=_['keys'](db[_0xac4a('0x41')][_0xac4a('0x2c')]);_0x1b77bb[_0xac4a('0x31')]=_[_0xac4a('0x32')](_0x1a96cf[_0xac4a('0x31')]);_0x1b77bb[_0xac4a('0x33')]=_[_0xac4a('0x34')](_0x1b77bb[_0xac4a('0x30')],_0x1b77bb[_0xac4a('0x31')]);_0x8700b4[_0xac4a('0x35')]=_[_0xac4a('0x34')](_0x1b77bb[_0xac4a('0x30')],qs['fields'](_0x1a96cf[_0xac4a('0x31')][_0xac4a('0x36')]));_0x8700b4[_0xac4a('0x35')]=_0x8700b4['attributes'][_0xac4a('0x46')]?_0x8700b4[_0xac4a('0x35')]:_0x1b77bb['model'];if(_0x1a96cf[_0xac4a('0x31')]['includeAll']){_0x8700b4[_0xac4a('0x40')]=[{'all':!![]}];}_0x8700b4=_[_0xac4a('0x3b')]({},_0x8700b4,_0x1a96cf[_0xac4a('0x3e')]);return db['AnalyticDefaultReport']['find'](_0x8700b4)[_0xac4a('0x25')](handleEntityNotFound(_0x57b879,null))['then'](respondWithResult(_0x57b879,null))[_0xac4a('0x44')](handleError(_0x57b879,null));};exports['create']=function(_0x3d2aaf,_0x530bbb){return db[_0xac4a('0x41')][_0xac4a('0x47')](_0x3d2aaf[_0xac4a('0x48')],{})[_0xac4a('0x25')](function(_0x54782f){var _0x31c794=_0x3d2aaf[_0xac4a('0x49')][_0xac4a('0x27')]({'plain':!![]});if(!_0x31c794)throw new Error(_0xac4a('0x4a'));if(_0x31c794[_0xac4a('0x4b')]===_0xac4a('0x49')){var _0x187306=_0x54782f['get']({'plain':!![]});var _0x35dee5=_0xac4a('0x4c');return db['UserProfileSection'][_0xac4a('0x4d')]({'where':{'name':_0x35dee5,'userProfileId':_0x31c794[_0xac4a('0x4e')]},'raw':!![]})[_0xac4a('0x25')](function(_0x3ac36e){if(_0x3ac36e&&_0x3ac36e['autoAssociation']===0x0){return db[_0xac4a('0x29')][_0xac4a('0x47')]({'name':_0x187306[_0xac4a('0x2a')],'resourceId':_0x187306['id'],'type':_0xac4a('0x28'),'sectionId':_0x3ac36e['id']},{})[_0xac4a('0x25')](function(){return _0x54782f;});}else{return _0x54782f;}})['catch'](function(_0x179373){logger['error'](_0xac4a('0x4f'),_0x179373);throw _0x179373;});}return _0x54782f;})[_0xac4a('0x25')](respondWithResult(_0x530bbb,0xc9))['catch'](handleError(_0x530bbb,null));};exports['update']=function(_0x437466,_0x70fdc3){if(_0x437466['body']['id']){delete _0x437466[_0xac4a('0x48')]['id'];}return db[_0xac4a('0x41')][_0xac4a('0x4d')]({'where':{'id':_0x437466[_0xac4a('0x50')]['id']}})['then'](handleEntityNotFound(_0x70fdc3,null))[_0xac4a('0x25')](saveUpdates(_0x437466[_0xac4a('0x48')],null))[_0xac4a('0x25')](respondWithResult(_0x70fdc3,null))[_0xac4a('0x44')](handleError(_0x70fdc3,null));};exports[_0xac4a('0x26')]=function(_0x411547,_0x36179a){return db['AnalyticDefaultReport'][_0xac4a('0x4d')]({'where':{'id':_0x411547[_0xac4a('0x50')]['id']}})[_0xac4a('0x25')](handleEntityNotFound(_0x36179a,null))[_0xac4a('0x25')](removeEntity(_0x36179a,null))[_0xac4a('0x44')](handleError(_0x36179a,null));};exports[_0xac4a('0x51')]=function(_0x213df2,_0x236f57){var _0x159e43=0xa;var _0x786d9=[_0xac4a('0x52'),_0xac4a('0x53'),_0xac4a('0x54'),_0xac4a('0x55')];var _0x5222f3={'SUM':_0xac4a('0x56'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xac4a('0x57'),'MAX':'MAX(%s)','MIN':_0xac4a('0x58'),'AVG':'AVG(%s)','GROUP_CONCAT':_0xac4a('0x59'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xac4a('0x5a')};var _0x5cac9b={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xac4a('0x5b'),'HOUR':_0xac4a('0x5c'),'ROUND':_0xac4a('0x5d'),'UNIX_TIMESTAMP':_0xac4a('0x5e')};var _0x2f9940=function(_0xb7b884){return!_['includes']([_0xac4a('0x5f'),'IS\x20NOT\x20NULL',_0xac4a('0x60'),'IS\x20NOT\x20EMPTY'],_0xb7b884);};var _0x347880=function(_0x19ce2c){if(!_0x19ce2c||!_0x19ce2c[_0xac4a('0x61')][_0xac4a('0x46')]){return'';}for(var _0x429273='(',_0x2bc39a=0x0;_0x2bc39a<_0x19ce2c[_0xac4a('0x61')][_0xac4a('0x46')];_0x2bc39a+=0x1){_0x2bc39a>0x0&&(_0x429273+='\x20'+_0x19ce2c[_0xac4a('0x62')]+'\x20');_0x429273+=_0x19ce2c[_0xac4a('0x61')][_0x2bc39a][_0xac4a('0x63')]?_0x347880(_0x19ce2c[_0xac4a('0x61')][_0x2bc39a][_0xac4a('0x63')]):_0x19ce2c[_0xac4a('0x61')][_0x2bc39a][_0xac4a('0x64')]+'\x20'+_0x19ce2c[_0xac4a('0x61')][_0x2bc39a][_0xac4a('0x65')]+(_0x2f9940(_0x19ce2c['rules'][_0x2bc39a][_0xac4a('0x65')])?'\x20'+_0x19ce2c[_0xac4a('0x61')][_0x2bc39a]['value']:'');}return _0x429273+')';};var _0x3c3576={'where':{'id':_0x213df2['params']['id']}},_0x34bd1c,_0x2d24c7,_0x2b8562,_0x357cac,_0x4d1440;_0x3c3576=_[_0xac4a('0x3b')]({},_0x3c3576,_0x213df2[_0xac4a('0x3e')]);return db[_0xac4a('0x41')][_0xac4a('0x4d')](_0x3c3576)[_0xac4a('0x25')](function(_0x21ef8b){if(_0x21ef8b){_0x34bd1c=_0x21ef8b;return _0x21ef8b[_0xac4a('0x66')]();}return null;})[_0xac4a('0x25')](function(_0x44c60b){if(_0x44c60b){if(!_0x44c60b[_0xac4a('0x46')]){throw new db[(_0xac4a('0x67'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x2d24c7=_0x44c60b;return db[_0xac4a('0x68')][_0xac4a('0x42')]({'raw':!![]});}return null;})[_0xac4a('0x25')](function(_0x423f70){if(_0x423f70){_0x2b8562=_[_0xac4a('0x69')](_0x423f70,'id');var _0x283107;var _0x1d24bb=squel[_0xac4a('0x6a')]();_0x1d24bb[_0xac4a('0x6b')](_0x34bd1c[_0xac4a('0x6c')]);for(var _0xb09b89=0x0;_0xb09b89<_0x2d24c7[_0xac4a('0x46')];_0xb09b89+=0x1){_0x283107=_0x2d24c7[_0xb09b89]['MetricId']?_0x2b8562[_0x2d24c7[_0xb09b89][_0xac4a('0x6d')]][_0xac4a('0x6e')]:_0x2d24c7[_0xb09b89][_0xac4a('0x64')];_0x283107=_0x2d24c7[_0xb09b89][_0xac4a('0x6f')]?_['replace'](_0x5222f3[_0x2d24c7[_0xb09b89][_0xac4a('0x6f')]],'%s',_0x283107):_0x283107;_0x283107=_0x2d24c7[_0xb09b89]['format']?_[_0xac4a('0x70')](_0x5cac9b[_0x2d24c7[_0xb09b89][_0xac4a('0x71')]],'%s',_0x283107):_0x283107;if(_0x2d24c7[_0xb09b89]['groupBy']){_0x1d24bb['group'](_0x283107);}_0x2d24c7[_0xb09b89][_0xac4a('0x72')]&&_0x1d24bb[_0xac4a('0x38')](_0x283107,_0x2d24c7[_0xb09b89][_0xac4a('0x72')]==='DESC'?![]:!![]);_0x1d24bb[_0xac4a('0x64')](_0x283107,_0x2d24c7[_0xb09b89]['alias']||_0x283107);}if(_0x34bd1c[_0xac4a('0x73')]){_0x34bd1c['joins']=JSON['parse'](_0x34bd1c[_0xac4a('0x73')]);for(var _0x56ef2a=0x0;_0x56ef2a<_0x34bd1c[_0xac4a('0x73')]['length'];_0x56ef2a+=0x1){if(_0x34bd1c[_0xac4a('0x73')][_0x56ef2a][_0xac4a('0x2e')]&&_['includes'](_0x786d9,_0x34bd1c[_0xac4a('0x73')][_0x56ef2a]['type'])&&_0x34bd1c[_0xac4a('0x73')][_0x56ef2a][_0xac4a('0x74')]&&_0x34bd1c['joins'][_0x56ef2a][_0xac4a('0x75')]&&_0x34bd1c['joins'][_0x56ef2a]['foreignKey']){_0x1d24bb[_0x34bd1c[_0xac4a('0x73')][_0x56ef2a]['type']](_0x34bd1c[_0xac4a('0x73')][_0x56ef2a]['foreignTable'],null,util['format'](_0xac4a('0x76'),_0x34bd1c[_0xac4a('0x6c')],_0x34bd1c[_0xac4a('0x73')][_0x56ef2a]['parentKey'],_0x34bd1c['joins'][_0x56ef2a][_0xac4a('0x75')],_0x34bd1c[_0xac4a('0x73')][_0x56ef2a]['foreignKey']));}}}if(_0x34bd1c['conditions']){_0x34bd1c[_0xac4a('0x77')]=JSON[_0xac4a('0x78')](_0x34bd1c[_0xac4a('0x77')]);_0x1d24bb[_0xac4a('0x3a')](_0x347880(_0x34bd1c[_0xac4a('0x77')][_0xac4a('0x63')]));}_0x4d1440=_0x1d24bb[_0xac4a('0x79')]();_0x1d24bb[_0xac4a('0x1d')](_0x159e43);_0x1d24bb[_0xac4a('0x1b')](0x0);logger['debug'](_0xac4a('0x7a'),_0x1d24bb[_0xac4a('0x7b')]());return dbH[_0xac4a('0x7c')]['query'](_0x1d24bb[_0xac4a('0x7b')](),{'type':dbH[_0xac4a('0x7c')][_0xac4a('0x7d')][_0xac4a('0x7e')]});}})[_0xac4a('0x25')](respondWithResult(_0x236f57,null))['catch'](handleError(_0x236f57,null));};function runReport(_0x290a73,_0x19ce24,_0xc9d040){var _0x37e519=_0x19ce24[_0xac4a('0x2a')];var _0x451248=0xa;var _0xd7bdd6=['join',_0xac4a('0x53'),_0xac4a('0x54'),_0xac4a('0x55')];var _0x35a97c={'SUM':_0xac4a('0x56'),'COUNT':_0xac4a('0x7f'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0xac4a('0x80'),'MIN':_0xac4a('0x58'),'AVG':_0xac4a('0x81'),'GROUP_CONCAT':_0xac4a('0x59'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xac4a('0x5a')};var _0x56a934={'SEC_TO_TIME':_0xac4a('0x82'),'DATE':_0xac4a('0x5b'),'HOUR':'HOUR(%s)','ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0xac4a('0x5e')};var _0x212a22=function(_0x1fe86a){return!_['includes']([_0xac4a('0x5f'),'IS\x20NOT\x20NULL',_0xac4a('0x60'),_0xac4a('0x83')],_0x1fe86a);};var _0x406b64=function(_0x35328e){if(!_0x35328e||!_0x35328e[_0xac4a('0x61')]['length']){return'';}for(var _0x50f471='(',_0x31cda0=0x0;_0x31cda0<_0x35328e[_0xac4a('0x61')][_0xac4a('0x46')];_0x31cda0+=0x1){_0x31cda0>0x0&&(_0x50f471+='\x20'+_0x35328e[_0xac4a('0x62')]+'\x20');_0x50f471+=_0x35328e[_0xac4a('0x61')][_0x31cda0][_0xac4a('0x63')]?_0x406b64(_0x35328e[_0xac4a('0x61')][_0x31cda0][_0xac4a('0x63')]):_0x35328e['rules'][_0x31cda0]['field']+'\x20'+_0x35328e[_0xac4a('0x61')][_0x31cda0][_0xac4a('0x65')]+(_0x212a22(_0x35328e[_0xac4a('0x61')][_0x31cda0][_0xac4a('0x65')])?'\x20'+_0x35328e[_0xac4a('0x61')][_0x31cda0][_0xac4a('0x84')]:'');}return _0x50f471+')';};var _0xdaa2ef={'where':{'id':_0x290a73['id']}},_0x2e704b,_0x540d8e,_0x5e0be4,_0x32fd0c,_0x168f30;_0xdaa2ef=_[_0xac4a('0x3b')]({},_0xdaa2ef,_0xc9d040);return db[_0xac4a('0x41')][_0xac4a('0x4d')](_0xdaa2ef)[_0xac4a('0x25')](function(_0x338af3){if(_0x338af3){_0x2e704b=_0x338af3;return _0x338af3['getFields']();}return null;})[_0xac4a('0x25')](function(_0x1bacf2){if(_0x1bacf2){if(!_0x1bacf2[_0xac4a('0x46')]){throw new db['Sequelize'][(_0xac4a('0x85'))](_0xac4a('0x86'),0x193);}_0x540d8e=_0x1bacf2;return db[_0xac4a('0x68')][_0xac4a('0x42')]({'raw':!![]});}return null;})[_0xac4a('0x25')](function(_0x27d023){if(_0x27d023){_0x5e0be4=_[_0xac4a('0x69')](_0x27d023,'id');var _0x2ef42a;var _0x322465=squel['select']();_0x322465[_0xac4a('0x6b')](_0x2e704b['table']);for(var _0x203321=0x0;_0x203321<_0x540d8e[_0xac4a('0x46')];_0x203321+=0x1){_0x2ef42a=_0x540d8e[_0x203321][_0xac4a('0x6d')]?_0x5e0be4[_0x540d8e[_0x203321][_0xac4a('0x6d')]][_0xac4a('0x6e')]:_0x540d8e[_0x203321][_0xac4a('0x64')];_0x2ef42a=_0x540d8e[_0x203321][_0xac4a('0x6f')]?_['replace'](_0x35a97c[_0x540d8e[_0x203321][_0xac4a('0x6f')]],'%s',_0x2ef42a):_0x2ef42a;_0x2ef42a=_0x540d8e[_0x203321][_0xac4a('0x71')]?_[_0xac4a('0x70')](_0x56a934[_0x540d8e[_0x203321][_0xac4a('0x71')]],'%s',_0x2ef42a):_0x2ef42a;if(_0x540d8e[_0x203321][_0xac4a('0x87')]){_0x322465['group'](_0x2ef42a);}_0x540d8e[_0x203321][_0xac4a('0x72')]&&_0x322465[_0xac4a('0x38')](_0x2ef42a,_0x540d8e[_0x203321]['orderBy']==='DESC'?![]:!![]);_0x322465[_0xac4a('0x64')](_0x2ef42a,_0x540d8e[_0x203321][_0xac4a('0x88')]||_0x2ef42a);}if(_0x2e704b['joins']){_0x2e704b[_0xac4a('0x73')]=JSON[_0xac4a('0x78')](_0x2e704b[_0xac4a('0x73')]);for(var _0x37657e=0x0;_0x37657e<_0x2e704b[_0xac4a('0x73')][_0xac4a('0x46')];_0x37657e+=0x1){if(_0x2e704b['joins'][_0x37657e][_0xac4a('0x2e')]&&_[_0xac4a('0x89')](_0xd7bdd6,_0x2e704b[_0xac4a('0x73')][_0x37657e]['type'])&&_0x2e704b[_0xac4a('0x73')][_0x37657e][_0xac4a('0x74')]&&_0x2e704b[_0xac4a('0x73')][_0x37657e][_0xac4a('0x75')]&&_0x2e704b[_0xac4a('0x73')][_0x37657e][_0xac4a('0x8a')]){_0x322465[_0x2e704b['joins'][_0x37657e][_0xac4a('0x2e')]](_0x2e704b[_0xac4a('0x73')][_0x37657e]['foreignTable'],null,util[_0xac4a('0x71')]('%s.%s\x20=\x20%s.%s',_0x2e704b[_0xac4a('0x6c')],_0x2e704b[_0xac4a('0x73')][_0x37657e]['parentKey'],_0x2e704b[_0xac4a('0x73')][_0x37657e]['foreignTable'],_0x2e704b[_0xac4a('0x73')][_0x37657e]['foreignKey']));}}}if(_0x2e704b[_0xac4a('0x77')]){_0x2e704b[_0xac4a('0x77')]=JSON[_0xac4a('0x78')](_0x2e704b[_0xac4a('0x77')]);_0x322465[_0xac4a('0x3a')](_0x406b64(_0x2e704b[_0xac4a('0x77')][_0xac4a('0x63')]));}_0x168f30=_0x322465[_0xac4a('0x79')]();_0x322465[_0xac4a('0x1d')](_0x451248);_0x322465[_0xac4a('0x1b')](0x0);return;}})[_0xac4a('0x25')](function(){if(_0x19ce24[_0xac4a('0x8b')]===_0xac4a('0x8c')){return null;}var _0x4217df=_['merge'](_0x19ce24,{'name':_0x19ce24[_0xac4a('0x8d')]||_0x19ce24[_0xac4a('0x2a')]||_0x2e704b['name'],'basename':_0x37e519,'savename':util[_0xac4a('0x71')](_0xac4a('0x8e'),_0x19ce24[_0xac4a('0x2a')]||_0x2e704b[_0xac4a('0x2a')],require(_0xac4a('0x8f'))['generate'](0x4),_0x19ce24[_0xac4a('0x8b')]||'csv'),'reportId':_0x2e704b['id'],'reportType':_0xac4a('0x90')});return db[_0xac4a('0x91')][_0xac4a('0x47')](_0x4217df,{'raw':!![]});})[_0xac4a('0x25')](function(_0x53f23d){if(_0x2e704b[_0xac4a('0x6c')]==='cdr'){_0x168f30[_0xac4a('0x3a')](_0x2e704b[_0xac4a('0x6c')]+_0xac4a('0x92'),_0x19ce24['startDate'],_0x19ce24[_0xac4a('0x93')]);}else{_0x168f30[_0xac4a('0x3a')](_0x2e704b[_0xac4a('0x6c')]+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x19ce24[_0xac4a('0x94')],_0x19ce24[_0xac4a('0x93')]);}if(_0x53f23d){logger[_0xac4a('0x95')](_0xac4a('0x96'),_0x168f30[_0xac4a('0x7b')]());require(_0xac4a('0x97'))[_0xac4a('0x98')](path[_0xac4a('0x52')](__dirname,'../../components/export/',_0x53f23d[_0xac4a('0x8b')]),[_0x53f23d['id'],_0x168f30['toString'](),path['join'](__dirname,'../../files/reports',_0x53f23d['savename']),_0x37e519]);return _0x53f23d;}else{var _0x502275=squel[_0xac4a('0x6a')]();_0x502275[_0xac4a('0x6b')]('('+_0x168f30[_0xac4a('0x7b')]()+')',_0xac4a('0x99'));_0x502275[_0xac4a('0x64')]('COUNT(*)',_0xac4a('0x1e'));_0x168f30[_0xac4a('0x1d')](_0x19ce24[_0xac4a('0x1d')]||_0x451248);_0x168f30[_0xac4a('0x1b')](_0x19ce24[_0xac4a('0x1b')]||0x0);return dbH[_0xac4a('0x7c')][_0xac4a('0x31')](_0x502275[_0xac4a('0x7b')](),{'type':dbH['sequelize'][_0xac4a('0x7d')][_0xac4a('0x7e')]})[_0xac4a('0x25')](function(_0x25331f){if(!_0x25331f[_0xac4a('0x46')]){_0x32fd0c=0x0;}else{_0x32fd0c=_0x25331f[0x0][_0xac4a('0x1e')]||0x0;}return dbH[_0xac4a('0x7c')]['query'](_0x168f30['toString'](),{'type':dbH[_0xac4a('0x7c')][_0xac4a('0x7d')]['SELECT']});})[_0xac4a('0x25')](function(_0x366f5a){return{'rows':_0x366f5a||[],'count':_0x32fd0c};});}});}exports['run']=function(_0x5bd013,_0x2fe103){return runReport(_0x5bd013[_0xac4a('0x50')],_0x5bd013[_0xac4a('0x31')],_0x5bd013[_0xac4a('0x3e')])[_0xac4a('0x25')](respondWithResult(_0x2fe103,null))['catch'](handleError(_0x2fe103,null));};exports[_0xac4a('0x9a')]=runReport;exports['query']=function(_0x4f2d85,_0x538cfd){var _0x63c30=0xa;var _0x4301c3=[_0xac4a('0x52'),_0xac4a('0x53'),_0xac4a('0x54'),_0xac4a('0x55')];var _0xcad25d={'SUM':_0xac4a('0x56'),'COUNT':'COUNT(%s)','COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':'MAX(%s)','MIN':_0xac4a('0x58'),'AVG':_0xac4a('0x81'),'GROUP_CONCAT':_0xac4a('0x59'),'GROUP_CONCAT ASC':_0xac4a('0x9b'),'GROUP_CONCAT DESC':_0xac4a('0x5a')};var _0xcd140e={'SEC_TO_TIME':_0xac4a('0x82'),'DATE':_0xac4a('0x5b'),'HOUR':_0xac4a('0x5c'),'ROUND':_0xac4a('0x5d'),'UNIX_TIMESTAMP':_0xac4a('0x5e')};var _0x37cb49=function(_0xe0fd57){return!_[_0xac4a('0x89')]([_0xac4a('0x5f'),_0xac4a('0x9c'),_0xac4a('0x60'),_0xac4a('0x83')],_0xe0fd57);};var _0x41cdb5=function(_0x172d03){if(!_0x172d03||!_0x172d03[_0xac4a('0x61')][_0xac4a('0x46')]){return'';}for(var _0x3e2575='(',_0x4cc581=0x0;_0x4cc581<_0x172d03[_0xac4a('0x61')][_0xac4a('0x46')];_0x4cc581+=0x1){_0x4cc581>0x0&&(_0x3e2575+='\x20'+_0x172d03[_0xac4a('0x62')]+'\x20');_0x3e2575+=_0x172d03[_0xac4a('0x61')][_0x4cc581][_0xac4a('0x63')]?_0x41cdb5(_0x172d03[_0xac4a('0x61')][_0x4cc581][_0xac4a('0x63')]):_0x172d03[_0xac4a('0x61')][_0x4cc581]['field']+'\x20'+_0x172d03['rules'][_0x4cc581][_0xac4a('0x65')]+(_0x37cb49(_0x172d03[_0xac4a('0x61')][_0x4cc581][_0xac4a('0x65')])?'\x20'+_0x172d03['rules'][_0x4cc581]['value']:'');}return _0x3e2575+')';};var _0x5de198={'where':{'id':_0x4f2d85[_0xac4a('0x50')]['id']}},_0x2b6773,_0x52df82,_0x59e82c,_0x216055,_0x52963c;_0x5de198=_['merge']({},_0x5de198,_0x4f2d85[_0xac4a('0x3e')]);return db[_0xac4a('0x41')][_0xac4a('0x4d')](_0x5de198)[_0xac4a('0x25')](function(_0x403a16){if(_0x403a16){_0x2b6773=_0x403a16;return _0x403a16[_0xac4a('0x66')]();}return null;})['then'](function(_0x25bf23){if(_0x25bf23){if(!_0x25bf23[_0xac4a('0x46')]){throw new db[(_0xac4a('0x67'))]['ValidationErrorItem'](_0xac4a('0x86'),0x193);}_0x52df82=_0x25bf23;return db[_0xac4a('0x68')][_0xac4a('0x42')]({'raw':!![]});}return null;})[_0xac4a('0x25')](function(_0x5bb911){if(_0x5bb911){_0x59e82c=_[_0xac4a('0x69')](_0x5bb911,'id');var _0x403f5a;var _0x3eae2f=squel[_0xac4a('0x6a')]();_0x3eae2f[_0xac4a('0x6b')](_0x2b6773[_0xac4a('0x6c')]);for(var _0x4a0cd9=0x0;_0x4a0cd9<_0x52df82['length'];_0x4a0cd9+=0x1){_0x403f5a=_0x52df82[_0x4a0cd9][_0xac4a('0x6d')]?_0x59e82c[_0x52df82[_0x4a0cd9][_0xac4a('0x6d')]][_0xac4a('0x6e')]:_0x52df82[_0x4a0cd9][_0xac4a('0x64')];_0x403f5a=_0x52df82[_0x4a0cd9][_0xac4a('0x6f')]?_[_0xac4a('0x70')](_0xcad25d[_0x52df82[_0x4a0cd9]['function']],'%s',_0x403f5a):_0x403f5a;_0x403f5a=_0x52df82[_0x4a0cd9][_0xac4a('0x71')]?_['replace'](_0xcd140e[_0x52df82[_0x4a0cd9][_0xac4a('0x71')]],'%s',_0x403f5a):_0x403f5a;if(_0x52df82[_0x4a0cd9]['groupBy']){_0x3eae2f[_0xac4a('0x63')](_0x403f5a);}_0x52df82[_0x4a0cd9][_0xac4a('0x72')]&&_0x3eae2f[_0xac4a('0x38')](_0x403f5a,_0x52df82[_0x4a0cd9][_0xac4a('0x72')]==='DESC'?![]:!![]);_0x3eae2f[_0xac4a('0x64')](_0x403f5a,_0x52df82[_0x4a0cd9][_0xac4a('0x88')]||_0x403f5a);}if(_0x2b6773[_0xac4a('0x73')]){_0x2b6773[_0xac4a('0x73')]=JSON[_0xac4a('0x78')](_0x2b6773['joins']);for(var _0x3dd60a=0x0;_0x3dd60a<_0x2b6773[_0xac4a('0x73')][_0xac4a('0x46')];_0x3dd60a+=0x1){if(_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x2e')]&&_['includes'](_0x4301c3,_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x2e')])&&_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x74')]&&_0x2b6773[_0xac4a('0x73')][_0x3dd60a]['foreignTable']&&_0x2b6773['joins'][_0x3dd60a]['foreignKey']){_0x3eae2f[_0x2b6773['joins'][_0x3dd60a][_0xac4a('0x2e')]](_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x75')],null,util[_0xac4a('0x71')](_0xac4a('0x76'),_0x2b6773['table'],_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x74')],_0x2b6773['joins'][_0x3dd60a][_0xac4a('0x75')],_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x8a')]));}}}if(_0x2b6773['conditions']){_0x2b6773[_0xac4a('0x77')]=JSON[_0xac4a('0x78')](_0x2b6773[_0xac4a('0x77')]);_0x3eae2f[_0xac4a('0x3a')](_0x41cdb5(_0x2b6773[_0xac4a('0x77')][_0xac4a('0x63')]));}_0x52963c=_0x3eae2f[_0xac4a('0x79')]();_0x3eae2f[_0xac4a('0x1d')](_0x63c30);_0x3eae2f[_0xac4a('0x1b')](0x0);logger['debug'](_0xac4a('0x7a'),_0x3eae2f[_0xac4a('0x7b')]());return dbH['sequelize'][_0xac4a('0x31')](_0x3eae2f['toString'](),{'type':dbH[_0xac4a('0x7c')][_0xac4a('0x7d')]['SELECT']});}})[_0xac4a('0x25')](function(){return{'sql':_0x52963c[_0xac4a('0x7b')]()};})[_0xac4a('0x25')](respondWithResult(_0x538cfd,null))[_0xac4a('0x44')](handleError(_0x538cfd,null));};
\ No newline at end of file
index bbc1773..de40f68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f3e=['bluebird','request-promise','rimraf','../../config/environment','./analyticDefaultReport.attributes','exports','analytics_default_reports','lodash','util','../../config/logger','moment'];(function(_0x3457b4,_0x4cd8f9){var _0xaa8fa9=function(_0x51897a){while(--_0x51897a){_0x3457b4['push'](_0x3457b4['shift']());}};_0xaa8fa9(++_0x4cd8f9);}(_0x8f3e,0x151));var _0xe8f3=function(_0x5a1f08,_0x562f85){_0x5a1f08=_0x5a1f08-0x0;var _0xdc0e08=_0x8f3e[_0x5a1f08];return _0xdc0e08;};'use strict';var _=require(_0xe8f3('0x0'));var util=require(_0xe8f3('0x1'));var logger=require(_0xe8f3('0x2'))('api');var moment=require(_0xe8f3('0x3'));var BPromise=require(_0xe8f3('0x4'));var rp=require(_0xe8f3('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe8f3('0x6'));var config=require(_0xe8f3('0x7'));var attributes=require(_0xe8f3('0x8'));module[_0xe8f3('0x9')]=function(_0x1a0515,_0xf89ce){return _0x1a0515['define']('AnalyticDefaultReport',attributes,{'tableName':_0xe8f3('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6bf8=['path','rimraf','../../config/environment','exports','define','analytics_default_reports','lodash','util','../../config/logger','request-promise'];(function(_0x1a4df0,_0x1e150b){var _0x2a6e62=function(_0xce9ce6){while(--_0xce9ce6){_0x1a4df0['push'](_0x1a4df0['shift']());}};_0x2a6e62(++_0x1e150b);}(_0x6bf8,0x11e));var _0x86bf=function(_0x3fb256,_0xa066af){_0x3fb256=_0x3fb256-0x0;var _0x1ca90f=_0x6bf8[_0x3fb256];return _0x1ca90f;};'use strict';var _=require(_0x86bf('0x0'));var util=require(_0x86bf('0x1'));var logger=require(_0x86bf('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x86bf('0x3'));var fs=require('fs');var path=require(_0x86bf('0x4'));var rimraf=require(_0x86bf('0x5'));var config=require(_0x86bf('0x6'));var attributes=require('./analyticDefaultReport.attributes');module[_0x86bf('0x7')]=function(_0x597504,_0x5ce2da){return _0x597504[_0x86bf('0x8')]('AnalyticDefaultReport',attributes,{'tableName':_0x86bf('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 43d3fa7..7115e1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe82b=['code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x4a27b5,_0x4fb040){var _0x533b98=function(_0x444f4e){while(--_0x444f4e){_0x4a27b5['push'](_0x4a27b5['shift']());}};_0x533b98(++_0x4fb040);}(_0xe82b,0x9e));var _0xbe82=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0xe82b[_0x484e36];return _0xafc85d;};'use strict';var _=require(_0xbe82('0x0'));var util=require(_0xbe82('0x1'));var moment=require(_0xbe82('0x2'));var BPromise=require(_0xbe82('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbe82('0x4'));var db=require(_0xbe82('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xbe82('0x6'))(_0xbe82('0x7'));var config=require('../../config/environment');var jayson=require(_0xbe82('0x8'));var client=jayson[_0xbe82('0x9')][_0xbe82('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2b67b8,_0x15dc72,_0x4cb776){return new BPromise(function(_0x512ebc,_0x3dcdbc){return client[_0xbe82('0xb')](_0x2b67b8,_0x4cb776)[_0xbe82('0xc')](function(_0xec04f3){logger[_0xbe82('0xd')](_0xbe82('0xe'),_0x15dc72,_0xbe82('0xf'));logger['debug']('AnalyticDefaultReport,\x20%s,\x20%s,\x20%s',_0x15dc72,_0xbe82('0xf'),JSON[_0xbe82('0x10')](_0xec04f3));if(_0xec04f3[_0xbe82('0x11')]){if(_0xec04f3[_0xbe82('0x11')][_0xbe82('0x12')]===0x1f4){logger[_0xbe82('0x11')](_0xbe82('0xe'),_0x15dc72,_0xec04f3['error']['message']);return _0x3dcdbc(_0xec04f3['error'][_0xbe82('0x13')]);}logger[_0xbe82('0x11')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x15dc72,_0xec04f3[_0xbe82('0x11')][_0xbe82('0x13')]);return _0x512ebc(_0xec04f3['error'][_0xbe82('0x13')]);}else{logger[_0xbe82('0xd')](_0xbe82('0xe'),_0x15dc72,'request\x20sent');_0x512ebc(_0xec04f3[_0xbe82('0x14')]['message']);}})[_0xbe82('0x15')](function(_0x59a14b){logger[_0xbe82('0x11')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x15dc72,_0x59a14b);_0x3dcdbc(_0x59a14b);});});}
\ No newline at end of file
+var _0xdf4c=['../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb'];(function(_0xa56c32,_0x2ecb4a){var _0x245d51=function(_0x530c85){while(--_0x530c85){_0xa56c32['push'](_0xa56c32['shift']());}};_0x245d51(++_0x2ecb4a);}(_0xdf4c,0x15f));var _0xcdf4=function(_0x1f6835,_0xff3520){_0x1f6835=_0x1f6835-0x0;var _0x10aee2=_0xdf4c[_0x1f6835];return _0x10aee2;};'use strict';var _=require(_0xcdf4('0x0'));var util=require(_0xcdf4('0x1'));var moment=require(_0xcdf4('0x2'));var BPromise=require(_0xcdf4('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xcdf4('0x4'));var db=require(_0xcdf4('0x5'))['db'];var utils=require(_0xcdf4('0x6'));var logger=require(_0xcdf4('0x7'))('rpc');var config=require(_0xcdf4('0x8'));var jayson=require(_0xcdf4('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5e060a,_0x26c77d,_0x589122){return new BPromise(function(_0x23b25c,_0x9fc8d6){return client[_0xcdf4('0xa')](_0x5e060a,_0x589122)[_0xcdf4('0xb')](function(_0x22dead){logger[_0xcdf4('0xc')](_0xcdf4('0xd'),_0x26c77d,_0xcdf4('0xe'));logger[_0xcdf4('0xf')](_0xcdf4('0x10'),_0x26c77d,'request\x20sent',JSON[_0xcdf4('0x11')](_0x22dead));if(_0x22dead[_0xcdf4('0x12')]){if(_0x22dead[_0xcdf4('0x12')]['code']===0x1f4){logger[_0xcdf4('0x12')](_0xcdf4('0xd'),_0x26c77d,_0x22dead[_0xcdf4('0x12')]['message']);return _0x9fc8d6(_0x22dead[_0xcdf4('0x12')][_0xcdf4('0x13')]);}logger[_0xcdf4('0x12')](_0xcdf4('0xd'),_0x26c77d,_0x22dead[_0xcdf4('0x12')][_0xcdf4('0x13')]);return _0x23b25c(_0x22dead[_0xcdf4('0x12')][_0xcdf4('0x13')]);}else{logger[_0xcdf4('0xc')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x26c77d,'request\x20sent');_0x23b25c(_0x22dead[_0xcdf4('0x14')][_0xcdf4('0x13')]);}})['catch'](function(_0x839b57){logger[_0xcdf4('0x12')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x26c77d,_0x839b57);_0x9fc8d6(_0x839b57);});});}
\ No newline at end of file
index 617a580..85880bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbdf=['get','/:id','show','/:id/preview','preview','run','/:id/query','query','post','create','put','update','exports','multer','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','./analyticDefaultReport.controller','isAuthenticated','index'];(function(_0x1b3a09,_0x20c774){var _0x357bb8=function(_0xd7c6d2){while(--_0xd7c6d2){_0x1b3a09['push'](_0x1b3a09['shift']());}};_0x357bb8(++_0x20c774);}(_0xfbdf,0xd3));var _0xffbd=function(_0x3d784f,_0x100ef1){_0x3d784f=_0x3d784f-0x0;var _0x32340e=_0xfbdf[_0x3d784f];return _0x32340e;};'use strict';var multer=require(_0xffbd('0x0'));var util=require('util');var path=require(_0xffbd('0x1'));var timeout=require(_0xffbd('0x2'));var express=require('express');var router=express[_0xffbd('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xffbd('0x4'));var config=require(_0xffbd('0x5'));var controller=require(_0xffbd('0x6'));router['get']('/',auth[_0xffbd('0x7')](),controller[_0xffbd('0x8')]);router[_0xffbd('0x9')](_0xffbd('0xa'),auth[_0xffbd('0x7')](),controller[_0xffbd('0xb')]);router['get'](_0xffbd('0xc'),auth[_0xffbd('0x7')](),controller[_0xffbd('0xd')]);router['get']('/:id/run',auth[_0xffbd('0x7')](),controller[_0xffbd('0xe')]);router[_0xffbd('0x9')](_0xffbd('0xf'),auth[_0xffbd('0x7')](),controller[_0xffbd('0x10')]);router[_0xffbd('0x11')]('/',auth[_0xffbd('0x7')](),controller[_0xffbd('0x12')]);router[_0xffbd('0x13')](_0xffbd('0xa'),auth[_0xffbd('0x7')](),controller[_0xffbd('0x14')]);router['delete'](_0xffbd('0xa'),auth[_0xffbd('0x7')](),controller['destroy']);module[_0xffbd('0x15')]=router;
\ No newline at end of file
+var _0xad7c=['delete','destroy','exports','path','express','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','/:id/preview','preview','/:id/run','run','/:id/query','create','put','update'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0xad7c,0xae));var _0xcad7=function(_0x17da18,_0x2563e5){_0x17da18=_0x17da18-0x0;var _0x501192=_0xad7c[_0x17da18];return _0x501192;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xcad7('0x0'));var timeout=require('connect-timeout');var express=require(_0xcad7('0x1'));var router=express['Router']();var fs_extra=require(_0xcad7('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0xcad7('0x3'));var config=require(_0xcad7('0x4'));var controller=require('./analyticDefaultReport.controller');router[_0xcad7('0x5')]('/',auth[_0xcad7('0x6')](),controller['index']);router[_0xcad7('0x5')](_0xcad7('0x7'),auth['isAuthenticated'](),controller['show']);router['get'](_0xcad7('0x8'),auth[_0xcad7('0x6')](),controller[_0xcad7('0x9')]);router[_0xcad7('0x5')](_0xcad7('0xa'),auth[_0xcad7('0x6')](),controller[_0xcad7('0xb')]);router[_0xcad7('0x5')](_0xcad7('0xc'),auth[_0xcad7('0x6')](),controller['query']);router['post']('/',auth[_0xcad7('0x6')](),controller[_0xcad7('0xd')]);router[_0xcad7('0xe')](_0xcad7('0x7'),auth[_0xcad7('0x6')](),controller[_0xcad7('0xf')]);router[_0xcad7('0x10')](_0xcad7('0x7'),auth['isAuthenticated'](),controller[_0xcad7('0x11')]);module[_0xcad7('0x12')]=router;
\ No newline at end of file
index 732aed6..a7a7def 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3843=['moment','exports','STRING','ENUM','csv','pdf','DATE','Loading','scheduled','INTEGER','UNSIGNED','sequelize'];(function(_0x3c9864,_0x488a3c){var _0x416dcd=function(_0x3f03d6){while(--_0x3f03d6){_0x3c9864['push'](_0x3c9864['shift']());}};_0x416dcd(++_0x488a3c);}(_0x3843,0x17f));var _0x3384=function(_0x19da64,_0x1077d){_0x19da64=_0x19da64-0x0;var _0x4fb532=_0x3843[_0x19da64];return _0x4fb532;};'use strict';var Sequelize=require(_0x3384('0x0'));var moment=require(_0x3384('0x1'));module[_0x3384('0x2')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'basename':{'type':Sequelize[_0x3384('0x3')],'allowNull':![]},'output':{'type':Sequelize[_0x3384('0x4')](_0x3384('0x5'),_0x3384('0x6'),'xlsx'),'allowNull':![],'defaultValue':'csv'},'savename':{'type':Sequelize['STRING'],'allowNull':![]},'startDate':{'type':Sequelize[_0x3384('0x7')]},'endDate':{'type':Sequelize[_0x3384('0x7')]},'status':{'type':Sequelize['STRING'],'defaultValue':_0x3384('0x8')},'type':{'type':Sequelize[_0x3384('0x4')]('manual',_0x3384('0x9')),'allowNull':![],'defaultValue':'manual'},'reportId':{'type':Sequelize[_0x3384('0xa')](0xb)[_0x3384('0xb')]},'reportType':{'type':Sequelize[_0x3384('0x3')]}};
\ No newline at end of file
+var _0xbb1f=['scheduled','INTEGER','UNSIGNED','sequelize','moment','exports','STRING','ENUM','pdf','xlsx','csv','DATE','manual'];(function(_0xca1f0e,_0x2713d5){var _0x35e4ef=function(_0x44c40f){while(--_0x44c40f){_0xca1f0e['push'](_0xca1f0e['shift']());}};_0x35e4ef(++_0x2713d5);}(_0xbb1f,0x1bd));var _0xfbb1=function(_0x3b0731,_0xcf9925){_0x3b0731=_0x3b0731-0x0;var _0x4204d7=_0xbb1f[_0x3b0731];return _0x4204d7;};'use strict';var Sequelize=require(_0xfbb1('0x0'));var moment=require(_0xfbb1('0x1'));module[_0xfbb1('0x2')]={'name':{'type':Sequelize[_0xfbb1('0x3')],'allowNull':![]},'basename':{'type':Sequelize['STRING'],'allowNull':![]},'output':{'type':Sequelize[_0xfbb1('0x4')]('csv',_0xfbb1('0x5'),_0xfbb1('0x6')),'allowNull':![],'defaultValue':_0xfbb1('0x7')},'savename':{'type':Sequelize[_0xfbb1('0x3')],'allowNull':![]},'startDate':{'type':Sequelize[_0xfbb1('0x8')]},'endDate':{'type':Sequelize['DATE']},'status':{'type':Sequelize[_0xfbb1('0x3')],'defaultValue':'Loading'},'type':{'type':Sequelize[_0xfbb1('0x4')](_0xfbb1('0x9'),_0xfbb1('0xa')),'allowNull':![],'defaultValue':_0xfbb1('0x9')},'reportId':{'type':Sequelize[_0xfbb1('0xb')](0xb)[_0xfbb1('0xc')]},'reportType':{'type':Sequelize[_0xfbb1('0x3')]}};
\ No newline at end of file
index dbe5759..4562250 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0544=['../../config/environment','sendStatus','end','status','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','then','get','ExtractedReports','UserProfileResource','destroy','error','stack','name','send','index','map','AnalyticExtractedReport','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll','findAll','rows','catch','show','include','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','params','download','basename','output','existsSync','join','root','savename','Sequelize','ValidationError','server/files/reports','format','%s.%s','toLowerCase','rimraf','zip-dir','fast-json-patch','request-promise','util','path','ejs','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils'];(function(_0x4d8710,_0x422d47){var _0x59a08f=function(_0xeba6c){while(--_0xeba6c){_0x4d8710['push'](_0x4d8710['shift']());}};_0x59a08f(++_0x422d47);}(_0x0544,0xa9));var _0x4054=function(_0x11d95f,_0x34f442){_0x11d95f=_0x11d95f-0x0;var _0x2b1a14=_0x0544[_0x11d95f];return _0x2b1a14;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4054('0x0'));var zipdir=require(_0x4054('0x1'));var jsonpatch=require(_0x4054('0x2'));var rp=require(_0x4054('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x4054('0x4'));var path=require(_0x4054('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x4054('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4054('0x7'));var squel=require(_0x4054('0x8'));var crypto=require('crypto');var jsforce=require(_0x4054('0x9'));var deskjs=require(_0x4054('0xa'));var toCsv=require('to-csv');var querystring=require(_0x4054('0xb'));var Papa=require('papaparse');var Redis=require(_0x4054('0xc'));var authService=require(_0x4054('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0x4054('0xe'));var hardwareService=require(_0x4054('0xf'));var logger=require(_0x4054('0x10'))(_0x4054('0x11'));var utils=require(_0x4054('0x12'));var config=require(_0x4054('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x12514c,_0x16c80e){_0x16c80e=_0x16c80e||0xcc;return function(_0x4bc88f){if(_0x4bc88f){return _0x12514c[_0x4054('0x14')](_0x16c80e);}return _0x12514c['status'](_0x16c80e)[_0x4054('0x15')]();};}function respondWithResult(_0x3e3e9f,_0xa50269){_0xa50269=_0xa50269||0xc8;return function(_0x32b9de){if(_0x32b9de){return _0x3e3e9f[_0x4054('0x16')](_0xa50269)[_0x4054('0x17')](_0x32b9de);}};}function respondWithFilteredResult(_0x21c119,_0x1da24e){return function(_0x14cabb){if(_0x14cabb){var _0x43edab=typeof _0x1da24e[_0x4054('0x18')]===_0x4054('0x19')&&typeof _0x1da24e[_0x4054('0x1a')]===_0x4054('0x19');var _0x181712=_0x14cabb['count'];var _0x18e3e1=_0x43edab?0x0:_0x1da24e[_0x4054('0x18')];var _0x54eea4=_0x43edab?_0x14cabb['count']:_0x1da24e[_0x4054('0x18')]+_0x1da24e[_0x4054('0x1a')];var _0x44a0ba;if(_0x54eea4>=_0x181712){_0x54eea4=_0x181712;_0x44a0ba=0xc8;}else{_0x44a0ba=0xce;}_0x21c119[_0x4054('0x16')](_0x44a0ba);return _0x21c119[_0x4054('0x1b')](_0x4054('0x1c'),_0x18e3e1+'-'+_0x54eea4+'/'+_0x181712)[_0x4054('0x17')](_0x14cabb);}return null;};}function patchUpdates(_0x5efe2b){return function(_0x3d0b84){try{jsonpatch[_0x4054('0x1d')](_0x3d0b84,_0x5efe2b,!![]);}catch(_0x3136dc){return BPromise[_0x4054('0x1e')](_0x3136dc);}return _0x3d0b84[_0x4054('0x1f')]();};}function saveUpdates(_0x2a848c,_0x4be10d){return function(_0x135425){if(_0x135425){return _0x135425[_0x4054('0x20')](_0x2a848c)[_0x4054('0x21')](function(_0x22d144){return _0x22d144;});}return null;};}function removeEntity(_0x5771ab,_0x6f88d3){return function(_0x34dcfb){if(_0x34dcfb){return _0x34dcfb['destroy']()['then'](function(){var _0x355ac3=_0x34dcfb[_0x4054('0x22')]({'plain':!![]});var _0x22b35b=_0x4054('0x23');return db[_0x4054('0x24')][_0x4054('0x25')]({'where':{'type':_0x22b35b,'resourceId':_0x355ac3['id']}})['then'](function(){return _0x34dcfb;});})[_0x4054('0x21')](function(){_0x5771ab[_0x4054('0x16')](0xcc)[_0x4054('0x15')]();});}};}function handleEntityNotFound(_0x395a57,_0x2a1e1b){return function(_0x287688){if(!_0x287688){_0x395a57['sendStatus'](0x194);}return _0x287688;};}function handleError(_0x52a21e,_0x2c2f24){_0x2c2f24=_0x2c2f24||0x1f4;return function(_0x29dbaf){logger[_0x4054('0x26')](_0x29dbaf[_0x4054('0x27')]);if(_0x29dbaf[_0x4054('0x28')]){delete _0x29dbaf[_0x4054('0x28')];}_0x52a21e[_0x4054('0x16')](_0x2c2f24)[_0x4054('0x29')](_0x29dbaf);};}exports[_0x4054('0x2a')]=function(_0x436cb2,_0x1b4d71){var _0x57d512={},_0x35b533={},_0x4a83df={'count':0x0,'rows':[]};var _0x327626=_[_0x4054('0x2b')](db[_0x4054('0x2c')][_0x4054('0x2d')],function(_0x16a91f){return{'name':_0x16a91f[_0x4054('0x2e')],'type':_0x16a91f[_0x4054('0x2f')]['key']};});_0x35b533[_0x4054('0x30')]=_[_0x4054('0x2b')](_0x327626,_0x4054('0x28'));_0x35b533[_0x4054('0x31')]=_[_0x4054('0x32')](_0x436cb2[_0x4054('0x31')]);_0x35b533[_0x4054('0x33')]=_[_0x4054('0x34')](_0x35b533[_0x4054('0x30')],_0x35b533[_0x4054('0x31')]);_0x57d512[_0x4054('0x35')]=_[_0x4054('0x34')](_0x35b533['model'],qs['fields'](_0x436cb2['query'][_0x4054('0x36')]));_0x57d512[_0x4054('0x35')]=_0x57d512['attributes'][_0x4054('0x37')]?_0x57d512['attributes']:_0x35b533[_0x4054('0x30')];if(!_0x436cb2['query'][_0x4054('0x38')](_0x4054('0x39'))){_0x57d512[_0x4054('0x1a')]=qs[_0x4054('0x1a')](_0x436cb2[_0x4054('0x31')][_0x4054('0x1a')]);_0x57d512['offset']=qs[_0x4054('0x18')](_0x436cb2['query'][_0x4054('0x18')]);}_0x57d512['order']=qs[_0x4054('0x3a')](_0x436cb2[_0x4054('0x31')][_0x4054('0x3a')]);_0x57d512[_0x4054('0x3b')]=qs[_0x4054('0x33')](_[_0x4054('0x3c')](_0x436cb2[_0x4054('0x31')],_0x35b533[_0x4054('0x33')]),_0x327626);if(_0x436cb2[_0x4054('0x31')][_0x4054('0x3d')]){_0x57d512[_0x4054('0x3b')]=_[_0x4054('0x3e')](_0x57d512[_0x4054('0x3b')],{'$or':_['map'](_0x327626,function(_0x24cab3){if(_0x24cab3['type']!==_0x4054('0x3f')){var _0x2cdf48={};_0x2cdf48[_0x24cab3[_0x4054('0x28')]]={'$like':'%'+_0x436cb2[_0x4054('0x31')]['filter']+'%'};return _0x2cdf48;}})});}_0x57d512=_['merge']({},_0x57d512,_0x436cb2[_0x4054('0x40')]);var _0x11b6a4={'where':_0x57d512[_0x4054('0x3b')]};return db[_0x4054('0x2c')][_0x4054('0x41')](_0x11b6a4)[_0x4054('0x21')](function(_0x37e278){_0x4a83df[_0x4054('0x41')]=_0x37e278;if(_0x436cb2[_0x4054('0x31')][_0x4054('0x42')]){_0x57d512['include']=[{'all':!![]}];}return db[_0x4054('0x2c')][_0x4054('0x43')](_0x57d512);})[_0x4054('0x21')](function(_0x552609){_0x4a83df[_0x4054('0x44')]=_0x552609;return _0x4a83df;})[_0x4054('0x21')](respondWithFilteredResult(_0x1b4d71,_0x57d512))[_0x4054('0x45')](handleError(_0x1b4d71,null));};exports[_0x4054('0x46')]=function(_0x109d28,_0x24b428){var _0x5c9057={'raw':!![],'where':{'id':_0x109d28['params']['id']}},_0x3906a3={};_0x3906a3['model']=_[_0x4054('0x32')](db[_0x4054('0x2c')][_0x4054('0x2d')]);_0x3906a3[_0x4054('0x31')]=_['keys'](_0x109d28['query']);_0x3906a3[_0x4054('0x33')]=_[_0x4054('0x34')](_0x3906a3[_0x4054('0x30')],_0x3906a3[_0x4054('0x31')]);_0x5c9057[_0x4054('0x35')]=_[_0x4054('0x34')](_0x3906a3[_0x4054('0x30')],qs[_0x4054('0x36')](_0x109d28[_0x4054('0x31')][_0x4054('0x36')]));_0x5c9057[_0x4054('0x35')]=_0x5c9057[_0x4054('0x35')][_0x4054('0x37')]?_0x5c9057[_0x4054('0x35')]:_0x3906a3[_0x4054('0x30')];if(_0x109d28['query'][_0x4054('0x42')]){_0x5c9057[_0x4054('0x47')]=[{'all':!![]}];}_0x5c9057=_[_0x4054('0x3e')]({},_0x5c9057,_0x109d28[_0x4054('0x40')]);return db['AnalyticExtractedReport']['find'](_0x5c9057)[_0x4054('0x21')](handleEntityNotFound(_0x24b428,null))[_0x4054('0x21')](respondWithResult(_0x24b428,null))[_0x4054('0x45')](handleError(_0x24b428,null));};exports[_0x4054('0x48')]=function(_0x2f8c35,_0xbadfdd){return db['AnalyticExtractedReport'][_0x4054('0x48')](_0x2f8c35[_0x4054('0x49')],{})[_0x4054('0x21')](function(_0x6e6e11){var _0xb44d59=_0x2f8c35[_0x4054('0x4a')][_0x4054('0x22')]({'plain':!![]});if(!_0xb44d59)throw new Error(_0x4054('0x4b'));if(_0xb44d59[_0x4054('0x4c')]===_0x4054('0x4a')){var _0x2e2436=_0x6e6e11[_0x4054('0x22')]({'plain':!![]});var _0x3ab84c=_0x4054('0x23');return db[_0x4054('0x4d')][_0x4054('0x4e')]({'where':{'name':_0x3ab84c,'userProfileId':_0xb44d59[_0x4054('0x4f')]},'raw':!![]})[_0x4054('0x21')](function(_0xaa0e56){if(_0xaa0e56&&_0xaa0e56['autoAssociation']===0x0){return db[_0x4054('0x24')][_0x4054('0x48')]({'name':_0x2e2436[_0x4054('0x28')],'resourceId':_0x2e2436['id'],'type':_0xaa0e56[_0x4054('0x28')],'sectionId':_0xaa0e56['id']},{})['then'](function(){return _0x6e6e11;});}else{return _0x6e6e11;}})[_0x4054('0x45')](function(_0x2b501e){logger[_0x4054('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2b501e);throw _0x2b501e;});}return _0x6e6e11;})[_0x4054('0x21')](respondWithResult(_0xbadfdd,0xc9))[_0x4054('0x45')](handleError(_0xbadfdd,null));};exports[_0x4054('0x20')]=function(_0x214ede,_0x41cb50){if(_0x214ede[_0x4054('0x49')]['id']){delete _0x214ede['body']['id'];}return db[_0x4054('0x2c')][_0x4054('0x4e')]({'where':{'id':_0x214ede[_0x4054('0x50')]['id']}})[_0x4054('0x21')](handleEntityNotFound(_0x41cb50,null))['then'](saveUpdates(_0x214ede[_0x4054('0x49')],null))['then'](respondWithResult(_0x41cb50,null))['catch'](handleError(_0x41cb50,null));};exports['destroy']=function(_0x40107c,_0x81c10){return db[_0x4054('0x2c')][_0x4054('0x4e')]({'where':{'id':_0x40107c[_0x4054('0x50')]['id']}})[_0x4054('0x21')](handleEntityNotFound(_0x81c10,null))['then'](removeEntity(_0x81c10,null))[_0x4054('0x45')](handleError(_0x81c10,null));};exports[_0x4054('0x51')]=function(_0x2a7474,_0x58c494,_0x3e0224){return db[_0x4054('0x2c')][_0x4054('0x4e')]({'where':{'id':_0x2a7474[_0x4054('0x50')]['id']},'attributes':[_0x4054('0x28'),_0x4054('0x52'),'savename',_0x4054('0x53')],'raw':!![]})[_0x4054('0x21')](handleEntityNotFound(_0x58c494,null))['then'](function(_0x6b1965){if(_0x6b1965){if(!fs[_0x4054('0x54')](path[_0x4054('0x55')](config[_0x4054('0x56')],'server/files/reports',_0x6b1965[_0x4054('0x57')]))){throw new db[(_0x4054('0x58'))][(_0x4054('0x59'))]('Report\x20not\x20found\x20or\x20empty');}if(_0x2a7474[_0x4054('0x31')]['exists']){return _0x58c494[_0x4054('0x14')](0xc8);}return _0x58c494[_0x4054('0x51')](path[_0x4054('0x55')](config[_0x4054('0x56')],_0x4054('0x5a'),_0x6b1965['savename']),util[_0x4054('0x5b')](_0x4054('0x5c'),_0x6b1965[_0x4054('0x52')]||_0x6b1965[_0x4054('0x28')],_0x6b1965[_0x4054('0x53')][_0x4054('0x5d')]()));}})['catch'](handleError(_0x58c494,null));};
\ No newline at end of file
+var _0xb4f9=['api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','destroy','ExtractedReports','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','AnalyticExtractedReport','findAll','rows','catch','params','length','includeAll','options','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','basename','output','join','root','server/files/reports','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty','exists','savename','format','%s.%s','toLowerCase','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb4f9,0xab));var _0x9b4f=function(_0x3758dd,_0x3608b9){_0x3758dd=_0x3758dd-0x0;var _0x16ba2f=_0xb4f9[_0x3758dd];return _0x16ba2f;};'use strict';var emlformat=require(_0x9b4f('0x0'));var rimraf=require(_0x9b4f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9b4f('0x2'));var rp=require(_0x9b4f('0x3'));var moment=require(_0x9b4f('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9b4f('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x9b4f('0x6'));var ejs=require(_0x9b4f('0x7'));var fs=require('fs');var fs_extra=require(_0x9b4f('0x8'));var _=require(_0x9b4f('0x9'));var squel=require(_0x9b4f('0xa'));var crypto=require(_0x9b4f('0xb'));var jsforce=require(_0x9b4f('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x9b4f('0x6'));var querystring=require(_0x9b4f('0xd'));var Papa=require(_0x9b4f('0xe'));var Redis=require(_0x9b4f('0xf'));var authService=require(_0x9b4f('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x9b4f('0x11'));var hardwareService=require(_0x9b4f('0x12'));var logger=require('../../config/logger')(_0x9b4f('0x13'));var utils=require(_0x9b4f('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x9b4f('0x15'));var db=require(_0x9b4f('0x16'))['db'];function respondWithStatusCode(_0x450757,_0x5a8f54){_0x5a8f54=_0x5a8f54||0xcc;return function(_0x3323d6){if(_0x3323d6){return _0x450757[_0x9b4f('0x17')](_0x5a8f54);}return _0x450757['status'](_0x5a8f54)[_0x9b4f('0x18')]();};}function respondWithResult(_0x15b944,_0x2fa2cc){_0x2fa2cc=_0x2fa2cc||0xc8;return function(_0x2f2b61){if(_0x2f2b61){return _0x15b944[_0x9b4f('0x19')](_0x2fa2cc)[_0x9b4f('0x1a')](_0x2f2b61);}};}function respondWithFilteredResult(_0x819243,_0xf409cd){return function(_0x1f2263){if(_0x1f2263){var _0x381bad=typeof _0xf409cd[_0x9b4f('0x1b')]==='undefined'&&typeof _0xf409cd[_0x9b4f('0x1c')]===_0x9b4f('0x1d');var _0xfd6ea3=_0x1f2263['count'];var _0x17f07c=_0x381bad?0x0:_0xf409cd[_0x9b4f('0x1b')];var _0x4052a8=_0x381bad?_0x1f2263[_0x9b4f('0x1e')]:_0xf409cd[_0x9b4f('0x1b')]+_0xf409cd[_0x9b4f('0x1c')];var _0xc0d6d9;if(_0x4052a8>=_0xfd6ea3){_0x4052a8=_0xfd6ea3;_0xc0d6d9=0xc8;}else{_0xc0d6d9=0xce;}_0x819243[_0x9b4f('0x19')](_0xc0d6d9);return _0x819243['set'](_0x9b4f('0x1f'),_0x17f07c+'-'+_0x4052a8+'/'+_0xfd6ea3)['json'](_0x1f2263);}return null;};}function patchUpdates(_0x887388){return function(_0x2e98cf){try{jsonpatch[_0x9b4f('0x20')](_0x2e98cf,_0x887388,!![]);}catch(_0x7d1fef){return BPromise[_0x9b4f('0x21')](_0x7d1fef);}return _0x2e98cf[_0x9b4f('0x22')]();};}function saveUpdates(_0x427ea1,_0x161ffe){return function(_0x2d42ff){if(_0x2d42ff){return _0x2d42ff[_0x9b4f('0x23')](_0x427ea1)[_0x9b4f('0x24')](function(_0x4b16c7){return _0x4b16c7;});}return null;};}function removeEntity(_0x2e5583,_0x2221a4){return function(_0x205912){if(_0x205912){return _0x205912[_0x9b4f('0x25')]()[_0x9b4f('0x24')](function(){var _0x4cfca6=_0x205912['get']({'plain':!![]});var _0x4fdbb6=_0x9b4f('0x26');return db['UserProfileResource'][_0x9b4f('0x25')]({'where':{'type':_0x4fdbb6,'resourceId':_0x4cfca6['id']}})[_0x9b4f('0x24')](function(){return _0x205912;});})[_0x9b4f('0x24')](function(){_0x2e5583['status'](0xcc)[_0x9b4f('0x18')]();});}};}function handleEntityNotFound(_0x177612,_0x44d0ff){return function(_0x460382){if(!_0x460382){_0x177612[_0x9b4f('0x17')](0x194);}return _0x460382;};}function handleError(_0x4293a4,_0xc1c8fa){_0xc1c8fa=_0xc1c8fa||0x1f4;return function(_0x2bd532){logger[_0x9b4f('0x27')](_0x2bd532[_0x9b4f('0x28')]);if(_0x2bd532[_0x9b4f('0x29')]){delete _0x2bd532[_0x9b4f('0x29')];}_0x4293a4['status'](_0xc1c8fa)[_0x9b4f('0x2a')](_0x2bd532);};}exports[_0x9b4f('0x2b')]=function(_0x401d2d,_0x433017){var _0x403424={},_0x511088={},_0x8450d0={'count':0x0,'rows':[]};var _0x267fb5=_[_0x9b4f('0x2c')](db['AnalyticExtractedReport'][_0x9b4f('0x2d')],function(_0xf97538){return{'name':_0xf97538[_0x9b4f('0x2e')],'type':_0xf97538[_0x9b4f('0x2f')][_0x9b4f('0x30')]};});_0x511088[_0x9b4f('0x31')]=_[_0x9b4f('0x2c')](_0x267fb5,_0x9b4f('0x29'));_0x511088[_0x9b4f('0x32')]=_[_0x9b4f('0x33')](_0x401d2d[_0x9b4f('0x32')]);_0x511088['filters']=_[_0x9b4f('0x34')](_0x511088[_0x9b4f('0x31')],_0x511088[_0x9b4f('0x32')]);_0x403424[_0x9b4f('0x35')]=_['intersection'](_0x511088[_0x9b4f('0x31')],qs[_0x9b4f('0x36')](_0x401d2d[_0x9b4f('0x32')][_0x9b4f('0x36')]));_0x403424[_0x9b4f('0x35')]=_0x403424['attributes']['length']?_0x403424[_0x9b4f('0x35')]:_0x511088[_0x9b4f('0x31')];if(!_0x401d2d[_0x9b4f('0x32')]['hasOwnProperty'](_0x9b4f('0x37'))){_0x403424[_0x9b4f('0x1c')]=qs[_0x9b4f('0x1c')](_0x401d2d['query'][_0x9b4f('0x1c')]);_0x403424[_0x9b4f('0x1b')]=qs[_0x9b4f('0x1b')](_0x401d2d[_0x9b4f('0x32')]['offset']);}_0x403424[_0x9b4f('0x38')]=qs[_0x9b4f('0x39')](_0x401d2d[_0x9b4f('0x32')][_0x9b4f('0x39')]);_0x403424[_0x9b4f('0x3a')]=qs[_0x9b4f('0x3b')](_[_0x9b4f('0x3c')](_0x401d2d[_0x9b4f('0x32')],_0x511088[_0x9b4f('0x3b')]),_0x267fb5);if(_0x401d2d['query'][_0x9b4f('0x3d')]){_0x403424[_0x9b4f('0x3a')]=_[_0x9b4f('0x3e')](_0x403424[_0x9b4f('0x3a')],{'$or':_['map'](_0x267fb5,function(_0x309c5a){if(_0x309c5a['type']!==_0x9b4f('0x3f')){var _0x461892={};_0x461892[_0x309c5a['name']]={'$like':'%'+_0x401d2d[_0x9b4f('0x32')][_0x9b4f('0x3d')]+'%'};return _0x461892;}})});}_0x403424=_[_0x9b4f('0x3e')]({},_0x403424,_0x401d2d['options']);var _0x4e0c27={'where':_0x403424[_0x9b4f('0x3a')]};return db[_0x9b4f('0x40')][_0x9b4f('0x1e')](_0x4e0c27)[_0x9b4f('0x24')](function(_0x4dbfa6){_0x8450d0[_0x9b4f('0x1e')]=_0x4dbfa6;if(_0x401d2d[_0x9b4f('0x32')]['includeAll']){_0x403424['include']=[{'all':!![]}];}return db[_0x9b4f('0x40')][_0x9b4f('0x41')](_0x403424);})[_0x9b4f('0x24')](function(_0x295a47){_0x8450d0[_0x9b4f('0x42')]=_0x295a47;return _0x8450d0;})[_0x9b4f('0x24')](respondWithFilteredResult(_0x433017,_0x403424))[_0x9b4f('0x43')](handleError(_0x433017,null));};exports['show']=function(_0x30ac62,_0x311bae){var _0xb635e3={'raw':!![],'where':{'id':_0x30ac62[_0x9b4f('0x44')]['id']}},_0x345ca4={};_0x345ca4[_0x9b4f('0x31')]=_['keys'](db[_0x9b4f('0x40')][_0x9b4f('0x2d')]);_0x345ca4[_0x9b4f('0x32')]=_['keys'](_0x30ac62[_0x9b4f('0x32')]);_0x345ca4[_0x9b4f('0x3b')]=_['intersection'](_0x345ca4['model'],_0x345ca4['query']);_0xb635e3[_0x9b4f('0x35')]=_[_0x9b4f('0x34')](_0x345ca4[_0x9b4f('0x31')],qs[_0x9b4f('0x36')](_0x30ac62['query']['fields']));_0xb635e3[_0x9b4f('0x35')]=_0xb635e3[_0x9b4f('0x35')][_0x9b4f('0x45')]?_0xb635e3['attributes']:_0x345ca4[_0x9b4f('0x31')];if(_0x30ac62[_0x9b4f('0x32')][_0x9b4f('0x46')]){_0xb635e3['include']=[{'all':!![]}];}_0xb635e3=_[_0x9b4f('0x3e')]({},_0xb635e3,_0x30ac62[_0x9b4f('0x47')]);return db[_0x9b4f('0x40')]['find'](_0xb635e3)['then'](handleEntityNotFound(_0x311bae,null))[_0x9b4f('0x24')](respondWithResult(_0x311bae,null))['catch'](handleError(_0x311bae,null));};exports['create']=function(_0x15887d,_0x567fdd){return db[_0x9b4f('0x40')]['create'](_0x15887d[_0x9b4f('0x48')],{})[_0x9b4f('0x24')](function(_0x51caf3){var _0x16dd56=_0x15887d[_0x9b4f('0x49')][_0x9b4f('0x4a')]({'plain':!![]});if(!_0x16dd56)throw new Error(_0x9b4f('0x4b'));if(_0x16dd56[_0x9b4f('0x4c')]===_0x9b4f('0x49')){var _0x40e9f7=_0x51caf3[_0x9b4f('0x4a')]({'plain':!![]});var _0x5dfa55=_0x9b4f('0x26');return db['UserProfileSection'][_0x9b4f('0x4d')]({'where':{'name':_0x5dfa55,'userProfileId':_0x16dd56[_0x9b4f('0x4e')]},'raw':!![]})[_0x9b4f('0x24')](function(_0xda8690){if(_0xda8690&&_0xda8690[_0x9b4f('0x4f')]===0x0){return db[_0x9b4f('0x50')]['create']({'name':_0x40e9f7['name'],'resourceId':_0x40e9f7['id'],'type':_0xda8690[_0x9b4f('0x29')],'sectionId':_0xda8690['id']},{})[_0x9b4f('0x24')](function(){return _0x51caf3;});}else{return _0x51caf3;}})[_0x9b4f('0x43')](function(_0x20de80){logger[_0x9b4f('0x27')](_0x9b4f('0x51'),_0x20de80);throw _0x20de80;});}return _0x51caf3;})[_0x9b4f('0x24')](respondWithResult(_0x567fdd,0xc9))[_0x9b4f('0x43')](handleError(_0x567fdd,null));};exports[_0x9b4f('0x23')]=function(_0x85fcc9,_0x3c1547){if(_0x85fcc9['body']['id']){delete _0x85fcc9[_0x9b4f('0x48')]['id'];}return db[_0x9b4f('0x40')][_0x9b4f('0x4d')]({'where':{'id':_0x85fcc9[_0x9b4f('0x44')]['id']}})['then'](handleEntityNotFound(_0x3c1547,null))[_0x9b4f('0x24')](saveUpdates(_0x85fcc9[_0x9b4f('0x48')],null))[_0x9b4f('0x24')](respondWithResult(_0x3c1547,null))[_0x9b4f('0x43')](handleError(_0x3c1547,null));};exports['destroy']=function(_0x6df832,_0xf1c9b7){return db['AnalyticExtractedReport'][_0x9b4f('0x4d')]({'where':{'id':_0x6df832[_0x9b4f('0x44')]['id']}})[_0x9b4f('0x24')](handleEntityNotFound(_0xf1c9b7,null))['then'](removeEntity(_0xf1c9b7,null))['catch'](handleError(_0xf1c9b7,null));};exports['download']=function(_0x23c57f,_0x27b3fe,_0x407b66){return db[_0x9b4f('0x40')][_0x9b4f('0x4d')]({'where':{'id':_0x23c57f[_0x9b4f('0x44')]['id']},'attributes':['name',_0x9b4f('0x52'),'savename',_0x9b4f('0x53')],'raw':!![]})[_0x9b4f('0x24')](handleEntityNotFound(_0x27b3fe,null))[_0x9b4f('0x24')](function(_0x41ac22){if(_0x41ac22){if(!fs['existsSync'](path[_0x9b4f('0x54')](config[_0x9b4f('0x55')],_0x9b4f('0x56'),_0x41ac22['savename']))){throw new db[(_0x9b4f('0x57'))][(_0x9b4f('0x58'))](_0x9b4f('0x59'));}if(_0x23c57f[_0x9b4f('0x32')][_0x9b4f('0x5a')]){return _0x27b3fe['sendStatus'](0xc8);}return _0x27b3fe['download'](path[_0x9b4f('0x54')](config[_0x9b4f('0x55')],_0x9b4f('0x56'),_0x41ac22[_0x9b4f('0x5b')]),util[_0x9b4f('0x5c')](_0x9b4f('0x5d'),_0x41ac22[_0x9b4f('0x52')]||_0x41ac22[_0x9b4f('0x29')],_0x41ac22[_0x9b4f('0x53')][_0x9b4f('0x5e')]()));}})['catch'](handleError(_0x27b3fe,null));};
\ No newline at end of file
index 6fa39b5..f4ed8ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17e8=['define','AnalyticExtractedReport','analytics_extracted_reports','lodash','../../config/logger','moment','bluebird','request-promise','../../config/environment','./analyticExtractedReport.attributes','exports'];(function(_0x1d3d43,_0x26fe51){var _0x24bef2=function(_0x5d7584){while(--_0x5d7584){_0x1d3d43['push'](_0x1d3d43['shift']());}};_0x24bef2(++_0x26fe51);}(_0x17e8,0x1b0));var _0x817e=function(_0x514c1b,_0x855465){_0x514c1b=_0x514c1b-0x0;var _0x496988=_0x17e8[_0x514c1b];return _0x496988;};'use strict';var _=require(_0x817e('0x0'));var util=require('util');var logger=require(_0x817e('0x1'))('api');var moment=require(_0x817e('0x2'));var BPromise=require(_0x817e('0x3'));var rp=require(_0x817e('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x817e('0x5'));var attributes=require(_0x817e('0x6'));module[_0x817e('0x7')]=function(_0x5cd417,_0x2d117a){return _0x5cd417[_0x817e('0x8')](_0x817e('0x9'),attributes,{'tableName':_0x817e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4aff=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticExtractedReport.attributes','exports','AnalyticExtractedReport','lodash','util'];(function(_0x39b11b,_0x2435c2){var _0x4d6e84=function(_0x3ce0b6){while(--_0x3ce0b6){_0x39b11b['push'](_0x39b11b['shift']());}};_0x4d6e84(++_0x2435c2);}(_0x4aff,0xc1));var _0xf4af=function(_0x313c92,_0x5d9943){_0x313c92=_0x313c92-0x0;var _0x8ddf39=_0x4aff[_0x313c92];return _0x8ddf39;};'use strict';var _=require(_0xf4af('0x0'));var util=require(_0xf4af('0x1'));var logger=require(_0xf4af('0x2'))(_0xf4af('0x3'));var moment=require(_0xf4af('0x4'));var BPromise=require(_0xf4af('0x5'));var rp=require(_0xf4af('0x6'));var fs=require('fs');var path=require(_0xf4af('0x7'));var rimraf=require(_0xf4af('0x8'));var config=require(_0xf4af('0x9'));var attributes=require(_0xf4af('0xa'));module[_0xf4af('0xb')]=function(_0xf9f81d,_0xb2e354){return _0xf9f81d['define'](_0xf4af('0xc'),attributes,{'tableName':'analytics_extracted_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0541d28..615449a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7d0=['debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','error','AnalyticExtractedReport,\x20%s,\x20%s','message','info','result','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','request\x20sent'];(function(_0x17a0c1,_0x2f9964){var _0x20baab=function(_0x1fdfb9){while(--_0x1fdfb9){_0x17a0c1['push'](_0x17a0c1['shift']());}};_0x20baab(++_0x2f9964);}(_0xb7d0,0x93));var _0x0b7d=function(_0x3df1c2,_0x1d32db){_0x3df1c2=_0x3df1c2-0x0;var _0x70d3e8=_0xb7d0[_0x3df1c2];return _0x70d3e8;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x0b7d('0x0'));var BPromise=require(_0x0b7d('0x1'));var rs=require(_0x0b7d('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0b7d('0x3'))['db'];var utils=require(_0x0b7d('0x4'));var logger=require(_0x0b7d('0x5'))(_0x0b7d('0x6'));var config=require(_0x0b7d('0x7'));var jayson=require(_0x0b7d('0x8'));var client=jayson['client'][_0x0b7d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xa454e6,_0x1e2245,_0xe050d7){return new BPromise(function(_0x362394,_0x31b10c){return client[_0x0b7d('0xa')](_0xa454e6,_0xe050d7)[_0x0b7d('0xb')](function(_0x4bafec){logger['info']('AnalyticExtractedReport,\x20%s,\x20%s',_0x1e2245,_0x0b7d('0xc'));logger[_0x0b7d('0xd')](_0x0b7d('0xe'),_0x1e2245,_0x0b7d('0xc'),JSON['stringify'](_0x4bafec));if(_0x4bafec[_0x0b7d('0xf')]){if(_0x4bafec[_0x0b7d('0xf')]['code']===0x1f4){logger[_0x0b7d('0xf')](_0x0b7d('0x10'),_0x1e2245,_0x4bafec[_0x0b7d('0xf')][_0x0b7d('0x11')]);return _0x31b10c(_0x4bafec[_0x0b7d('0xf')][_0x0b7d('0x11')]);}logger[_0x0b7d('0xf')](_0x0b7d('0x10'),_0x1e2245,_0x4bafec[_0x0b7d('0xf')][_0x0b7d('0x11')]);return _0x362394(_0x4bafec[_0x0b7d('0xf')][_0x0b7d('0x11')]);}else{logger[_0x0b7d('0x12')](_0x0b7d('0x10'),_0x1e2245,_0x0b7d('0xc'));_0x362394(_0x4bafec[_0x0b7d('0x13')][_0x0b7d('0x11')]);}})['catch'](function(_0x2c0b9a){logger[_0x0b7d('0xf')](_0x0b7d('0x10'),_0x1e2245,_0x2c0b9a);_0x31b10c(_0x2c0b9a);});});}
\ No newline at end of file
+var _0x365c=['request\x20sent','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','AnalyticExtractedReport,\x20%s,\x20%s'];(function(_0x2becba,_0x4ea656){var _0x90b5dd=function(_0x26ae2b){while(--_0x26ae2b){_0x2becba['push'](_0x2becba['shift']());}};_0x90b5dd(++_0x4ea656);}(_0x365c,0x1d5));var _0xc365=function(_0x5b58f2,_0x2431af){_0x5b58f2=_0x5b58f2-0x0;var _0x41e066=_0x365c[_0x5b58f2];return _0x41e066;};'use strict';var _=require(_0xc365('0x0'));var util=require('util');var moment=require(_0xc365('0x1'));var BPromise=require(_0xc365('0x2'));var rs=require(_0xc365('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc365('0x4'))['db'];var utils=require(_0xc365('0x5'));var logger=require(_0xc365('0x6'))(_0xc365('0x7'));var config=require(_0xc365('0x8'));var jayson=require(_0xc365('0x9'));var client=jayson[_0xc365('0xa')][_0xc365('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x91976b,_0x44427e,_0x684752){return new BPromise(function(_0x2b22cf,_0x303ebb){return client['request'](_0x91976b,_0x684752)[_0xc365('0xc')](function(_0x4ae332){logger[_0xc365('0xd')](_0xc365('0xe'),_0x44427e,_0xc365('0xf'));logger['debug']('AnalyticExtractedReport,\x20%s,\x20%s,\x20%s',_0x44427e,_0xc365('0xf'),JSON[_0xc365('0x10')](_0x4ae332));if(_0x4ae332[_0xc365('0x11')]){if(_0x4ae332[_0xc365('0x11')][_0xc365('0x12')]===0x1f4){logger[_0xc365('0x11')](_0xc365('0xe'),_0x44427e,_0x4ae332['error']['message']);return _0x303ebb(_0x4ae332[_0xc365('0x11')]['message']);}logger[_0xc365('0x11')](_0xc365('0xe'),_0x44427e,_0x4ae332['error']['message']);return _0x2b22cf(_0x4ae332[_0xc365('0x11')][_0xc365('0x13')]);}else{logger[_0xc365('0xd')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x44427e,_0xc365('0xf'));_0x2b22cf(_0x4ae332[_0xc365('0x14')]['message']);}})[_0xc365('0x15')](function(_0x11412d){logger[_0xc365('0x11')](_0xc365('0xe'),_0x44427e,_0x11412d);_0x303ebb(_0x11412d);});});}
\ No newline at end of file
index dce391e..58d5883 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0042=['put','update','destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/download','download','post'];(function(_0x48e9c8,_0x23f0de){var _0x456afa=function(_0x5b2fb0){while(--_0x5b2fb0){_0x48e9c8['push'](_0x48e9c8['shift']());}};_0x456afa(++_0x23f0de);}(_0x0042,0x158));var _0x2004=function(_0x4c8a8f,_0x997ef){_0x4c8a8f=_0x4c8a8f-0x0;var _0x404500=_0x0042[_0x4c8a8f];return _0x404500;};'use strict';var multer=require('multer');var util=require(_0x2004('0x0'));var path=require(_0x2004('0x1'));var timeout=require(_0x2004('0x2'));var express=require(_0x2004('0x3'));var router=express[_0x2004('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x2004('0x5'));var interaction=require(_0x2004('0x6'));var config=require(_0x2004('0x7'));var controller=require('./analyticExtractedReport.controller');router[_0x2004('0x8')]('/',auth[_0x2004('0x9')](),controller[_0x2004('0xa')]);router[_0x2004('0x8')](_0x2004('0xb'),auth['isAuthenticated'](),controller[_0x2004('0xc')]);router['get'](_0x2004('0xd'),auth[_0x2004('0x9')](),controller[_0x2004('0xe')]);router[_0x2004('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0x2004('0x10')](_0x2004('0xb'),auth[_0x2004('0x9')](),controller[_0x2004('0x11')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x2004('0x12')]);module[_0x2004('0x13')]=router;
\ No newline at end of file
+var _0x1cb1=['put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','/:id','get','/:id/download','download','post','create'];(function(_0x48e675,_0x270383){var _0x260d65=function(_0x14509d){while(--_0x14509d){_0x48e675['push'](_0x48e675['shift']());}};_0x260d65(++_0x270383);}(_0x1cb1,0x165));var _0x11cb=function(_0x31bcec,_0x22d9b9){_0x31bcec=_0x31bcec-0x0;var _0x595821=_0x1cb1[_0x31bcec];return _0x595821;};'use strict';var multer=require('multer');var util=require(_0x11cb('0x0'));var path=require(_0x11cb('0x1'));var timeout=require(_0x11cb('0x2'));var express=require(_0x11cb('0x3'));var router=express[_0x11cb('0x4')]();var fs_extra=require(_0x11cb('0x5'));var auth=require(_0x11cb('0x6'));var interaction=require(_0x11cb('0x7'));var config=require(_0x11cb('0x8'));var controller=require('./analyticExtractedReport.controller');router['get']('/',auth[_0x11cb('0x9')](),controller[_0x11cb('0xa')]);router['get'](_0x11cb('0xb'),auth[_0x11cb('0x9')](),controller['show']);router[_0x11cb('0xc')](_0x11cb('0xd'),auth['isAuthenticated'](),controller[_0x11cb('0xe')]);router[_0x11cb('0xf')]('/',auth[_0x11cb('0x9')](),controller[_0x11cb('0x10')]);router[_0x11cb('0x11')]('/:id',auth[_0x11cb('0x9')](),controller[_0x11cb('0x12')]);router[_0x11cb('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x11cb('0x14')]);module[_0x11cb('0x15')]=router;
\ No newline at end of file
index 9c47ccf..3ee93e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7f5=['sequelize','exports','TEXT','STRING','BOOLEAN'];(function(_0xd8d422,_0x2a29cb){var _0x554af6=function(_0x4f5385){while(--_0x4f5385){_0xd8d422['push'](_0xd8d422['shift']());}};_0x554af6(++_0x2a29cb);}(_0xc7f5,0x1ef));var _0x5c7f=function(_0x2486a4,_0x3e3650){_0x2486a4=_0x2486a4-0x0;var _0x14cf68=_0xc7f5[_0x2486a4];return _0x14cf68;};'use strict';var Sequelize=require(_0x5c7f('0x0'));module[_0x5c7f('0x1')]={'field':{'type':Sequelize[_0x5c7f('0x2')]},'alias':{'type':Sequelize['STRING']},'function':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0x5c7f('0x3')]},'groupBy':{'type':Sequelize[_0x5c7f('0x4')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x5c7f('0x3')]},'custom':{'type':Sequelize[_0x5c7f('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0x9bc3=['sequelize','exports','TEXT','STRING'];(function(_0x5ed55e,_0x332aac){var _0x8cb4ef=function(_0x3919ab){while(--_0x3919ab){_0x5ed55e['push'](_0x5ed55e['shift']());}};_0x8cb4ef(++_0x332aac);}(_0x9bc3,0x120));var _0x39bc=function(_0x1cfc64,_0x49087e){_0x1cfc64=_0x1cfc64-0x0;var _0x295e1b=_0x9bc3[_0x1cfc64];return _0x295e1b;};'use strict';var Sequelize=require(_0x39bc('0x0'));module[_0x39bc('0x1')]={'field':{'type':Sequelize[_0x39bc('0x2')]},'alias':{'type':Sequelize['STRING']},'function':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0x39bc('0x3')]},'groupBy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x39bc('0x3')]},'custom':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index a2ae96c..22eb048 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfe4=['send','index','map','AnalyticFieldReport','rawAttributes','fieldName','type','key','name','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','bulkCreate','bulkDestroy','ids','sequelize','transaction','CustomReportId','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','fs-extra','squel','crypto','desk.js','to-csv','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','save','update','then','destroy','error','stack'];(function(_0xe3fb5b,_0x2ee4c3){var _0x2b8d2e=function(_0x2a96f3){while(--_0x2a96f3){_0xe3fb5b['push'](_0xe3fb5b['shift']());}};_0x2b8d2e(++_0x2ee4c3);}(_0xdfe4,0x11a));var _0x4dfe=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0xdfe4[_0x49ca18];return _0x145d54;};'use strict';var emlformat=require(_0x4dfe('0x0'));var rimraf=require(_0x4dfe('0x1'));var zipdir=require(_0x4dfe('0x2'));var jsonpatch=require(_0x4dfe('0x3'));var rp=require(_0x4dfe('0x4'));var moment=require('moment');var BPromise=require(_0x4dfe('0x5'));var Mustache=require(_0x4dfe('0x6'));var util=require(_0x4dfe('0x7'));var path=require(_0x4dfe('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4dfe('0x9'));var _=require('lodash');var squel=require(_0x4dfe('0xa'));var crypto=require(_0x4dfe('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x4dfe('0xc'));var toCsv=require(_0x4dfe('0xd'));var querystring=require('querystring');var Papa=require(_0x4dfe('0xe'));var Redis=require('ioredis');var authService=require(_0x4dfe('0xf'));var qs=require(_0x4dfe('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x4dfe('0x11'))(_0x4dfe('0x12'));var utils=require('../../config/utils');var config=require(_0x4dfe('0x13'));var licenseUtil=require(_0x4dfe('0x14'));var db=require(_0x4dfe('0x15'))['db'];function respondWithStatusCode(_0x30b342,_0x276810){_0x276810=_0x276810||0xcc;return function(_0x391490){if(_0x391490){return _0x30b342[_0x4dfe('0x16')](_0x276810);}return _0x30b342[_0x4dfe('0x17')](_0x276810)[_0x4dfe('0x18')]();};}function respondWithResult(_0x32c03a,_0x311f70){_0x311f70=_0x311f70||0xc8;return function(_0x8ce64c){if(_0x8ce64c){return _0x32c03a['status'](_0x311f70)[_0x4dfe('0x19')](_0x8ce64c);}};}function respondWithFilteredResult(_0x2ad6d9,_0x15016a){return function(_0x22e6e7){if(_0x22e6e7){var _0x4a38aa=typeof _0x15016a['offset']===_0x4dfe('0x1a')&&typeof _0x15016a[_0x4dfe('0x1b')]===_0x4dfe('0x1a');var _0x5024cd=_0x22e6e7[_0x4dfe('0x1c')];var _0x36ef8c=_0x4a38aa?0x0:_0x15016a[_0x4dfe('0x1d')];var _0x33fa93=_0x4a38aa?_0x22e6e7[_0x4dfe('0x1c')]:_0x15016a[_0x4dfe('0x1d')]+_0x15016a[_0x4dfe('0x1b')];var _0x515d89;if(_0x33fa93>=_0x5024cd){_0x33fa93=_0x5024cd;_0x515d89=0xc8;}else{_0x515d89=0xce;}_0x2ad6d9[_0x4dfe('0x17')](_0x515d89);return _0x2ad6d9[_0x4dfe('0x1e')]('Content-Range',_0x36ef8c+'-'+_0x33fa93+'/'+_0x5024cd)[_0x4dfe('0x19')](_0x22e6e7);}return null;};}function patchUpdates(_0x4bf754){return function(_0x153cf5){try{jsonpatch[_0x4dfe('0x1f')](_0x153cf5,_0x4bf754,!![]);}catch(_0x4bb43d){return BPromise['reject'](_0x4bb43d);}return _0x153cf5[_0x4dfe('0x20')]();};}function saveUpdates(_0x295e68,_0x54b9ea){return function(_0x347304){if(_0x347304){return _0x347304[_0x4dfe('0x21')](_0x295e68)[_0x4dfe('0x22')](function(_0x258415){return _0x258415;});}return null;};}function removeEntity(_0xe2fe1d,_0x5919fb){return function(_0x398fa5){if(_0x398fa5){return _0x398fa5[_0x4dfe('0x23')]()[_0x4dfe('0x22')](function(){_0xe2fe1d[_0x4dfe('0x17')](0xcc)[_0x4dfe('0x18')]();});}};}function handleEntityNotFound(_0x37c320,_0x23f22f){return function(_0x418a46){if(!_0x418a46){_0x37c320[_0x4dfe('0x16')](0x194);}return _0x418a46;};}function handleError(_0x27e269,_0x1a6044){_0x1a6044=_0x1a6044||0x1f4;return function(_0x40bd17){logger[_0x4dfe('0x24')](_0x40bd17[_0x4dfe('0x25')]);if(_0x40bd17['name']){delete _0x40bd17['name'];}_0x27e269[_0x4dfe('0x17')](_0x1a6044)[_0x4dfe('0x26')](_0x40bd17);};}exports[_0x4dfe('0x27')]=function(_0x4ea3f5,_0x5b7ea){var _0x1d08d7={},_0x26d9c5={},_0x47549c={'count':0x0,'rows':[]};var _0x4e3b9d=_[_0x4dfe('0x28')](db[_0x4dfe('0x29')][_0x4dfe('0x2a')],function(_0x3c9824){return{'name':_0x3c9824[_0x4dfe('0x2b')],'type':_0x3c9824[_0x4dfe('0x2c')][_0x4dfe('0x2d')]};});_0x26d9c5['model']=_['map'](_0x4e3b9d,_0x4dfe('0x2e'));_0x26d9c5[_0x4dfe('0x2f')]=_[_0x4dfe('0x30')](_0x4ea3f5[_0x4dfe('0x2f')]);_0x26d9c5[_0x4dfe('0x31')]=_[_0x4dfe('0x32')](_0x26d9c5[_0x4dfe('0x33')],_0x26d9c5[_0x4dfe('0x2f')]);_0x1d08d7[_0x4dfe('0x34')]=_[_0x4dfe('0x32')](_0x26d9c5[_0x4dfe('0x33')],qs[_0x4dfe('0x35')](_0x4ea3f5[_0x4dfe('0x2f')][_0x4dfe('0x35')]));_0x1d08d7[_0x4dfe('0x34')]=_0x1d08d7[_0x4dfe('0x34')]['length']?_0x1d08d7[_0x4dfe('0x34')]:_0x26d9c5[_0x4dfe('0x33')];if(!_0x4ea3f5[_0x4dfe('0x2f')][_0x4dfe('0x36')](_0x4dfe('0x37'))){_0x1d08d7[_0x4dfe('0x1b')]=qs[_0x4dfe('0x1b')](_0x4ea3f5[_0x4dfe('0x2f')][_0x4dfe('0x1b')]);_0x1d08d7[_0x4dfe('0x1d')]=qs[_0x4dfe('0x1d')](_0x4ea3f5[_0x4dfe('0x2f')][_0x4dfe('0x1d')]);}_0x1d08d7['order']=qs[_0x4dfe('0x38')](_0x4ea3f5[_0x4dfe('0x2f')][_0x4dfe('0x38')]);_0x1d08d7[_0x4dfe('0x39')]=qs[_0x4dfe('0x31')](_[_0x4dfe('0x3a')](_0x4ea3f5['query'],_0x26d9c5['filters']),_0x4e3b9d);if(_0x4ea3f5[_0x4dfe('0x2f')][_0x4dfe('0x3b')]){_0x1d08d7['where']=_[_0x4dfe('0x3c')](_0x1d08d7[_0x4dfe('0x39')],{'$or':_[_0x4dfe('0x28')](_0x4e3b9d,function(_0x2bdc79){if(_0x2bdc79[_0x4dfe('0x2c')]!==_0x4dfe('0x3d')){var _0x4c7960={};_0x4c7960[_0x2bdc79[_0x4dfe('0x2e')]]={'$like':'%'+_0x4ea3f5['query'][_0x4dfe('0x3b')]+'%'};return _0x4c7960;}})});}_0x1d08d7=_['merge']({},_0x1d08d7,_0x4ea3f5[_0x4dfe('0x3e')]);var _0x1d030a={'where':_0x1d08d7[_0x4dfe('0x39')]};return db[_0x4dfe('0x29')][_0x4dfe('0x1c')](_0x1d030a)[_0x4dfe('0x22')](function(_0x7a6421){_0x47549c[_0x4dfe('0x1c')]=_0x7a6421;if(_0x4ea3f5[_0x4dfe('0x2f')][_0x4dfe('0x3f')]){_0x1d08d7[_0x4dfe('0x40')]=[{'all':!![]}];}return db[_0x4dfe('0x29')][_0x4dfe('0x41')](_0x1d08d7);})[_0x4dfe('0x22')](function(_0x5ac233){_0x47549c[_0x4dfe('0x42')]=_0x5ac233;return _0x47549c;})[_0x4dfe('0x22')](respondWithFilteredResult(_0x5b7ea,_0x1d08d7))[_0x4dfe('0x43')](handleError(_0x5b7ea,null));};exports[_0x4dfe('0x44')]=function(_0x5bc77e,_0x22c043){var _0x309eec={'raw':![],'where':{'id':_0x5bc77e[_0x4dfe('0x45')]['id']}},_0x4bc0d5={};_0x4bc0d5[_0x4dfe('0x33')]=_['keys'](db['AnalyticFieldReport'][_0x4dfe('0x2a')]);_0x4bc0d5['query']=_[_0x4dfe('0x30')](_0x5bc77e[_0x4dfe('0x2f')]);_0x4bc0d5[_0x4dfe('0x31')]=_[_0x4dfe('0x32')](_0x4bc0d5[_0x4dfe('0x33')],_0x4bc0d5['query']);_0x309eec[_0x4dfe('0x34')]=_[_0x4dfe('0x32')](_0x4bc0d5['model'],qs['fields'](_0x5bc77e[_0x4dfe('0x2f')][_0x4dfe('0x35')]));_0x309eec[_0x4dfe('0x34')]=_0x309eec[_0x4dfe('0x34')][_0x4dfe('0x46')]?_0x309eec[_0x4dfe('0x34')]:_0x4bc0d5[_0x4dfe('0x33')];if(_0x5bc77e[_0x4dfe('0x2f')][_0x4dfe('0x3f')]){_0x309eec['include']=[{'all':!![]}];}_0x309eec=_[_0x4dfe('0x3c')]({},_0x309eec,_0x5bc77e[_0x4dfe('0x3e')]);return db[_0x4dfe('0x29')][_0x4dfe('0x47')](_0x309eec)[_0x4dfe('0x22')](handleEntityNotFound(_0x22c043,null))[_0x4dfe('0x22')](respondWithResult(_0x22c043,null))[_0x4dfe('0x43')](handleError(_0x22c043,null));};exports['create']=function(_0x4addc8,_0x23dc1b){return db[_0x4dfe('0x29')][_0x4dfe('0x48')](_0x4addc8[_0x4dfe('0x49')],{})[_0x4dfe('0x22')](respondWithResult(_0x23dc1b,0xc9))[_0x4dfe('0x43')](handleError(_0x23dc1b,null));};exports[_0x4dfe('0x4a')]=function(_0x48435b,_0x17fa03){return db['AnalyticFieldReport'][_0x4dfe('0x4a')](_0x48435b[_0x4dfe('0x49')],{'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x17fa03,0xc9))[_0x4dfe('0x43')](handleError(_0x17fa03,null));};exports['update']=function(_0x1d6c27,_0x3bb0bb){if(_0x1d6c27[_0x4dfe('0x49')]['id']){delete _0x1d6c27[_0x4dfe('0x49')]['id'];}return db[_0x4dfe('0x29')][_0x4dfe('0x47')]({'where':{'id':_0x1d6c27[_0x4dfe('0x45')]['id']}})[_0x4dfe('0x22')](handleEntityNotFound(_0x3bb0bb,null))[_0x4dfe('0x22')](saveUpdates(_0x1d6c27['body'],null))['then'](respondWithResult(_0x3bb0bb,null))[_0x4dfe('0x43')](handleError(_0x3bb0bb,null));};exports[_0x4dfe('0x23')]=function(_0x2ab389,_0x47a857){return db[_0x4dfe('0x29')]['find']({'where':{'id':_0x2ab389['params']['id']}})[_0x4dfe('0x22')](handleEntityNotFound(_0x47a857,null))[_0x4dfe('0x22')](removeEntity(_0x47a857,null))[_0x4dfe('0x43')](handleError(_0x47a857,null));};exports[_0x4dfe('0x4b')]=function(_0x2c1337,_0x51d460){return db[_0x4dfe('0x29')]['destroy']({'where':{'id':_0x2c1337[_0x4dfe('0x2f')][_0x4dfe('0x4c')]||[]},'raw':![],'individualHooks':!![]})[_0x4dfe('0x22')](respondWithResult(_0x51d460,0xcc))[_0x4dfe('0x43')](handleError(_0x51d460,null));};exports['addFields']=function(_0x3657fc,_0x50e9e1,_0xaa0abd){return db['AnalyticCustomReport']['findOne']({'where':{'id':_0x3657fc['params']['id']}})[_0x4dfe('0x22')](handleEntityNotFound(_0x50e9e1,null))['then'](function(_0x2f999d){if(_0x2f999d){return db[_0x4dfe('0x4d')][_0x4dfe('0x4e')](function(_0x19b00b){return db['AnalyticFieldReport'][_0x4dfe('0x23')]({'where':{'CustomReportId':_0x3657fc['params']['id']},'transaction':_0x19b00b})['then'](function(_0x5e5e55){var _0x16d64e=_[_0x4dfe('0x28')](_0x3657fc['body'],function(_0x2bc798){delete _0x2bc798['id'];_0x2bc798[_0x4dfe('0x4f')]=_0x3657fc[_0x4dfe('0x45')]['id'];return _0x2bc798;});return db['AnalyticFieldReport'][_0x4dfe('0x4a')](_0x16d64e,{'transaction':_0x19b00b});});})[_0x4dfe('0x22')](function(){return db['AnalyticFieldReport'][_0x4dfe('0x41')]({'where':{'CustomReportId':_0x3657fc[_0x4dfe('0x45')]['id']}});});}})[_0x4dfe('0x22')](respondWithResult(_0x50e9e1,null))['catch'](handleError(_0x50e9e1,null));};
\ No newline at end of file
+var _0xaf3a=['ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','then','error','name','send','index','map','AnalyticFieldReport','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','fields','find','create','body','bulkCreate','update','destroy','bulkDestroy','addFields','AnalyticCustomReport','findOne','sequelize','transaction','CustomReportId','eml-format','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xaf3a,0x13f));var _0xaaf3=function(_0x2459fd,_0x575d9b){_0x2459fd=_0x2459fd-0x0;var _0x364cd2=_0xaf3a[_0x2459fd];return _0x364cd2;};'use strict';var emlformat=require(_0xaaf3('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xaaf3('0x1'));var jsonpatch=require(_0xaaf3('0x2'));var rp=require('request-promise');var moment=require(_0xaaf3('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xaaf3('0x4'));var util=require(_0xaaf3('0x5'));var path=require(_0xaaf3('0x6'));var sox=require(_0xaaf3('0x7'));var csv=require(_0xaaf3('0x8'));var ejs=require(_0xaaf3('0x9'));var fs=require('fs');var fs_extra=require(_0xaaf3('0xa'));var _=require(_0xaaf3('0xb'));var squel=require(_0xaaf3('0xc'));var crypto=require(_0xaaf3('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xaaf3('0xe'));var Papa=require(_0xaaf3('0xf'));var Redis=require(_0xaaf3('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xaaf3('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xaaf3('0x12'))('api');var utils=require(_0xaaf3('0x13'));var config=require(_0xaaf3('0x14'));var licenseUtil=require(_0xaaf3('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xe7d413,_0x316c68){_0x316c68=_0x316c68||0xcc;return function(_0x24fa1f){if(_0x24fa1f){return _0xe7d413[_0xaaf3('0x16')](_0x316c68);}return _0xe7d413[_0xaaf3('0x17')](_0x316c68)[_0xaaf3('0x18')]();};}function respondWithResult(_0x5062fe,_0x2536dc){_0x2536dc=_0x2536dc||0xc8;return function(_0x11a96f){if(_0x11a96f){return _0x5062fe['status'](_0x2536dc)[_0xaaf3('0x19')](_0x11a96f);}};}function respondWithFilteredResult(_0x1fcab6,_0x4a389c){return function(_0x40501e){if(_0x40501e){var _0x3e8b97=typeof _0x4a389c[_0xaaf3('0x1a')]===_0xaaf3('0x1b')&&typeof _0x4a389c[_0xaaf3('0x1c')]===_0xaaf3('0x1b');var _0x67e5a5=_0x40501e[_0xaaf3('0x1d')];var _0x492e18=_0x3e8b97?0x0:_0x4a389c[_0xaaf3('0x1a')];var _0x49bd25=_0x3e8b97?_0x40501e[_0xaaf3('0x1d')]:_0x4a389c[_0xaaf3('0x1a')]+_0x4a389c[_0xaaf3('0x1c')];var _0x3ae6b1;if(_0x49bd25>=_0x67e5a5){_0x49bd25=_0x67e5a5;_0x3ae6b1=0xc8;}else{_0x3ae6b1=0xce;}_0x1fcab6[_0xaaf3('0x17')](_0x3ae6b1);return _0x1fcab6[_0xaaf3('0x1e')]('Content-Range',_0x492e18+'-'+_0x49bd25+'/'+_0x67e5a5)[_0xaaf3('0x19')](_0x40501e);}return null;};}function patchUpdates(_0x2d6184){return function(_0x4006d9){try{jsonpatch[_0xaaf3('0x1f')](_0x4006d9,_0x2d6184,!![]);}catch(_0x255f0e){return BPromise[_0xaaf3('0x20')](_0x255f0e);}return _0x4006d9[_0xaaf3('0x21')]();};}function saveUpdates(_0x46618d,_0x6c8a72){return function(_0x2066a5){if(_0x2066a5){return _0x2066a5['update'](_0x46618d)[_0xaaf3('0x22')](function(_0x5f1f61){return _0x5f1f61;});}return null;};}function removeEntity(_0x3472ce,_0x16adbc){return function(_0x3d4dc7){if(_0x3d4dc7){return _0x3d4dc7['destroy']()[_0xaaf3('0x22')](function(){_0x3472ce[_0xaaf3('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1f52c1,_0x2c5fff){return function(_0x42332f){if(!_0x42332f){_0x1f52c1[_0xaaf3('0x16')](0x194);}return _0x42332f;};}function handleError(_0x2df858,_0x3a1643){_0x3a1643=_0x3a1643||0x1f4;return function(_0x1e702e){logger[_0xaaf3('0x23')](_0x1e702e['stack']);if(_0x1e702e[_0xaaf3('0x24')]){delete _0x1e702e['name'];}_0x2df858['status'](_0x3a1643)[_0xaaf3('0x25')](_0x1e702e);};}exports[_0xaaf3('0x26')]=function(_0x4da8b7,_0x41984a){var _0x2438f2={},_0x483a37={},_0x4b6987={'count':0x0,'rows':[]};var _0x1d4ef0=_[_0xaaf3('0x27')](db[_0xaaf3('0x28')][_0xaaf3('0x29')],function(_0x2f6ad2){return{'name':_0x2f6ad2[_0xaaf3('0x2a')],'type':_0x2f6ad2['type'][_0xaaf3('0x2b')]};});_0x483a37[_0xaaf3('0x2c')]=_[_0xaaf3('0x27')](_0x1d4ef0,_0xaaf3('0x24'));_0x483a37[_0xaaf3('0x2d')]=_[_0xaaf3('0x2e')](_0x4da8b7[_0xaaf3('0x2d')]);_0x483a37[_0xaaf3('0x2f')]=_[_0xaaf3('0x30')](_0x483a37[_0xaaf3('0x2c')],_0x483a37[_0xaaf3('0x2d')]);_0x2438f2[_0xaaf3('0x31')]=_[_0xaaf3('0x30')](_0x483a37['model'],qs['fields'](_0x4da8b7[_0xaaf3('0x2d')]['fields']));_0x2438f2[_0xaaf3('0x31')]=_0x2438f2[_0xaaf3('0x31')][_0xaaf3('0x32')]?_0x2438f2[_0xaaf3('0x31')]:_0x483a37[_0xaaf3('0x2c')];if(!_0x4da8b7[_0xaaf3('0x2d')][_0xaaf3('0x33')](_0xaaf3('0x34'))){_0x2438f2[_0xaaf3('0x1c')]=qs[_0xaaf3('0x1c')](_0x4da8b7[_0xaaf3('0x2d')][_0xaaf3('0x1c')]);_0x2438f2['offset']=qs[_0xaaf3('0x1a')](_0x4da8b7['query']['offset']);}_0x2438f2[_0xaaf3('0x35')]=qs['sort'](_0x4da8b7['query'][_0xaaf3('0x36')]);_0x2438f2[_0xaaf3('0x37')]=qs['filters'](_['pick'](_0x4da8b7[_0xaaf3('0x2d')],_0x483a37[_0xaaf3('0x2f')]),_0x1d4ef0);if(_0x4da8b7[_0xaaf3('0x2d')][_0xaaf3('0x38')]){_0x2438f2['where']=_['merge'](_0x2438f2[_0xaaf3('0x37')],{'$or':_[_0xaaf3('0x27')](_0x1d4ef0,function(_0x2e2325){if(_0x2e2325[_0xaaf3('0x39')]!==_0xaaf3('0x3a')){var _0x29e059={};_0x29e059[_0x2e2325[_0xaaf3('0x24')]]={'$like':'%'+_0x4da8b7[_0xaaf3('0x2d')][_0xaaf3('0x38')]+'%'};return _0x29e059;}})});}_0x2438f2=_[_0xaaf3('0x3b')]({},_0x2438f2,_0x4da8b7[_0xaaf3('0x3c')]);var _0x52aa8e={'where':_0x2438f2['where']};return db[_0xaaf3('0x28')][_0xaaf3('0x1d')](_0x52aa8e)[_0xaaf3('0x22')](function(_0x1eefac){_0x4b6987[_0xaaf3('0x1d')]=_0x1eefac;if(_0x4da8b7['query'][_0xaaf3('0x3d')]){_0x2438f2[_0xaaf3('0x3e')]=[{'all':!![]}];}return db[_0xaaf3('0x28')][_0xaaf3('0x3f')](_0x2438f2);})[_0xaaf3('0x22')](function(_0x4c7eb9){_0x4b6987[_0xaaf3('0x40')]=_0x4c7eb9;return _0x4b6987;})[_0xaaf3('0x22')](respondWithFilteredResult(_0x41984a,_0x2438f2))[_0xaaf3('0x41')](handleError(_0x41984a,null));};exports[_0xaaf3('0x42')]=function(_0x36d68b,_0x301912){var _0x553f29={'raw':![],'where':{'id':_0x36d68b[_0xaaf3('0x43')]['id']}},_0x4c81c3={};_0x4c81c3['model']=_['keys'](db[_0xaaf3('0x28')]['rawAttributes']);_0x4c81c3['query']=_[_0xaaf3('0x2e')](_0x36d68b[_0xaaf3('0x2d')]);_0x4c81c3[_0xaaf3('0x2f')]=_[_0xaaf3('0x30')](_0x4c81c3[_0xaaf3('0x2c')],_0x4c81c3['query']);_0x553f29[_0xaaf3('0x31')]=_[_0xaaf3('0x30')](_0x4c81c3[_0xaaf3('0x2c')],qs[_0xaaf3('0x44')](_0x36d68b[_0xaaf3('0x2d')][_0xaaf3('0x44')]));_0x553f29[_0xaaf3('0x31')]=_0x553f29[_0xaaf3('0x31')]['length']?_0x553f29[_0xaaf3('0x31')]:_0x4c81c3[_0xaaf3('0x2c')];if(_0x36d68b[_0xaaf3('0x2d')][_0xaaf3('0x3d')]){_0x553f29[_0xaaf3('0x3e')]=[{'all':!![]}];}_0x553f29=_[_0xaaf3('0x3b')]({},_0x553f29,_0x36d68b['options']);return db[_0xaaf3('0x28')][_0xaaf3('0x45')](_0x553f29)[_0xaaf3('0x22')](handleEntityNotFound(_0x301912,null))[_0xaaf3('0x22')](respondWithResult(_0x301912,null))['catch'](handleError(_0x301912,null));};exports[_0xaaf3('0x46')]=function(_0x54975f,_0x3683be){return db[_0xaaf3('0x28')][_0xaaf3('0x46')](_0x54975f[_0xaaf3('0x47')],{})[_0xaaf3('0x22')](respondWithResult(_0x3683be,0xc9))[_0xaaf3('0x41')](handleError(_0x3683be,null));};exports['bulkCreate']=function(_0x377883,_0x181a88){return db[_0xaaf3('0x28')][_0xaaf3('0x48')](_0x377883[_0xaaf3('0x47')],{'raw':![],'individualHooks':!![]})[_0xaaf3('0x22')](respondWithResult(_0x181a88,0xc9))['catch'](handleError(_0x181a88,null));};exports[_0xaaf3('0x49')]=function(_0x2ea1c3,_0x482ed7){if(_0x2ea1c3[_0xaaf3('0x47')]['id']){delete _0x2ea1c3['body']['id'];}return db[_0xaaf3('0x28')]['find']({'where':{'id':_0x2ea1c3[_0xaaf3('0x43')]['id']}})[_0xaaf3('0x22')](handleEntityNotFound(_0x482ed7,null))[_0xaaf3('0x22')](saveUpdates(_0x2ea1c3['body'],null))[_0xaaf3('0x22')](respondWithResult(_0x482ed7,null))[_0xaaf3('0x41')](handleError(_0x482ed7,null));};exports[_0xaaf3('0x4a')]=function(_0x17f179,_0x3e9a68){return db[_0xaaf3('0x28')][_0xaaf3('0x45')]({'where':{'id':_0x17f179[_0xaaf3('0x43')]['id']}})[_0xaaf3('0x22')](handleEntityNotFound(_0x3e9a68,null))[_0xaaf3('0x22')](removeEntity(_0x3e9a68,null))[_0xaaf3('0x41')](handleError(_0x3e9a68,null));};exports[_0xaaf3('0x4b')]=function(_0x57a237,_0x56d7ab){return db[_0xaaf3('0x28')][_0xaaf3('0x4a')]({'where':{'id':_0x57a237['query']['ids']||[]},'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x56d7ab,0xcc))[_0xaaf3('0x41')](handleError(_0x56d7ab,null));};exports[_0xaaf3('0x4c')]=function(_0x4709ab,_0xf04c5a,_0x2a4aac){return db[_0xaaf3('0x4d')][_0xaaf3('0x4e')]({'where':{'id':_0x4709ab[_0xaaf3('0x43')]['id']}})['then'](handleEntityNotFound(_0xf04c5a,null))['then'](function(_0x5742c1){if(_0x5742c1){return db[_0xaaf3('0x4f')][_0xaaf3('0x50')](function(_0x545f90){return db['AnalyticFieldReport']['destroy']({'where':{'CustomReportId':_0x4709ab[_0xaaf3('0x43')]['id']},'transaction':_0x545f90})[_0xaaf3('0x22')](function(_0x4dabb1){var _0x571079=_[_0xaaf3('0x27')](_0x4709ab[_0xaaf3('0x47')],function(_0x5906f9){delete _0x5906f9['id'];_0x5906f9[_0xaaf3('0x51')]=_0x4709ab[_0xaaf3('0x43')]['id'];return _0x5906f9;});return db['AnalyticFieldReport'][_0xaaf3('0x48')](_0x571079,{'transaction':_0x545f90});});})['then'](function(){return db[_0xaaf3('0x28')]['findAll']({'where':{'CustomReportId':_0x4709ab[_0xaaf3('0x43')]['id']}});});}})['then'](respondWithResult(_0xf04c5a,null))['catch'](handleError(_0xf04c5a,null));};
\ No newline at end of file
index cbab671..8379cea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2326=['bluebird','path','rimraf','../../config/environment','exports','analytics_report_fields','lodash','util'];(function(_0x16dcd6,_0x547aa4){var _0x49fe35=function(_0x328d09){while(--_0x328d09){_0x16dcd6['push'](_0x16dcd6['shift']());}};_0x49fe35(++_0x547aa4);}(_0x2326,0x6e));var _0x6232=function(_0x7d0db5,_0x3e92e5){_0x7d0db5=_0x7d0db5-0x0;var _0x8ffb01=_0x2326[_0x7d0db5];return _0x8ffb01;};'use strict';var _=require(_0x6232('0x0'));var util=require(_0x6232('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x6232('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6232('0x3'));var rimraf=require(_0x6232('0x4'));var config=require(_0x6232('0x5'));var attributes=require('./analyticFieldReport.attributes');module[_0x6232('0x6')]=function(_0x4d4f8d,_0x426ee1){return _0x4d4f8d['define']('AnalyticFieldReport',attributes,{'tableName':_0x6232('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa836=['exports','define','lodash','util','request-promise','path','rimraf','../../config/environment','./analyticFieldReport.attributes'];(function(_0x33914b,_0x53f567){var _0x5f3f3b=function(_0x30be15){while(--_0x30be15){_0x33914b['push'](_0x33914b['shift']());}};_0x5f3f3b(++_0x53f567);}(_0xa836,0x158));var _0x6a83=function(_0x24eef9,_0x1856ec){_0x24eef9=_0x24eef9-0x0;var _0xed5fc4=_0xa836[_0x24eef9];return _0xed5fc4;};'use strict';var _=require(_0x6a83('0x0'));var util=require(_0x6a83('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x6a83('0x2'));var fs=require('fs');var path=require(_0x6a83('0x3'));var rimraf=require(_0x6a83('0x4'));var config=require(_0x6a83('0x5'));var attributes=require(_0x6a83('0x6'));module[_0x6a83('0x7')]=function(_0x461e85,_0xd33321){return _0x461e85[_0x6a83('0x8')]('AnalyticFieldReport',attributes,{'tableName':'analytics_report_fields','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 10e68ef..70284b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70c1=['randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','AnalyticFieldReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x70c1,0xcb));var _0x170c=function(_0x3364e1,_0x45966d){_0x3364e1=_0x3364e1-0x0;var _0x1e5e03=_0x70c1[_0x3364e1];return _0x1e5e03;};'use strict';var _=require(_0x170c('0x0'));var util=require(_0x170c('0x1'));var moment=require(_0x170c('0x2'));var BPromise=require(_0x170c('0x3'));var rs=require(_0x170c('0x4'));var fs=require('fs');var Redis=require(_0x170c('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x170c('0x6'));var logger=require('../../config/logger')(_0x170c('0x7'));var config=require(_0x170c('0x8'));var jayson=require(_0x170c('0x9'));var client=jayson[_0x170c('0xa')][_0x170c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3c8f9f,_0x25348a,_0x3ef8e4){return new BPromise(function(_0x304f2a,_0x267a7a){return client[_0x170c('0xc')](_0x3c8f9f,_0x3ef8e4)['then'](function(_0x5e9a96){logger[_0x170c('0xd')](_0x170c('0xe'),_0x25348a,'request\x20sent');logger[_0x170c('0xf')]('AnalyticFieldReport,\x20%s,\x20%s,\x20%s',_0x25348a,_0x170c('0x10'),JSON[_0x170c('0x11')](_0x5e9a96));if(_0x5e9a96[_0x170c('0x12')]){if(_0x5e9a96[_0x170c('0x12')][_0x170c('0x13')]===0x1f4){logger[_0x170c('0x12')]('AnalyticFieldReport,\x20%s,\x20%s',_0x25348a,_0x5e9a96[_0x170c('0x12')]['message']);return _0x267a7a(_0x5e9a96[_0x170c('0x12')][_0x170c('0x14')]);}logger[_0x170c('0x12')](_0x170c('0xe'),_0x25348a,_0x5e9a96[_0x170c('0x12')]['message']);return _0x304f2a(_0x5e9a96[_0x170c('0x12')][_0x170c('0x14')]);}else{logger['info']('AnalyticFieldReport,\x20%s,\x20%s',_0x25348a,'request\x20sent');_0x304f2a(_0x5e9a96[_0x170c('0x15')][_0x170c('0x14')]);}})[_0x170c('0x16')](function(_0x35f205){logger[_0x170c('0x12')](_0x170c('0xe'),_0x25348a,_0x35f205);_0x267a7a(_0x35f205);});});}
\ No newline at end of file
+var _0x9c39=['../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils'];(function(_0x298b53,_0x3f830d){var _0x370c14=function(_0x16a8d7){while(--_0x16a8d7){_0x298b53['push'](_0x298b53['shift']());}};_0x370c14(++_0x3f830d);}(_0x9c39,0x78));var _0x99c3=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0x9c39[_0x9df060];return _0x338dfe;};'use strict';var _=require(_0x99c3('0x0'));var util=require('util');var moment=require(_0x99c3('0x1'));var BPromise=require(_0x99c3('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x99c3('0x3'));var db=require(_0x99c3('0x4'))['db'];var utils=require(_0x99c3('0x5'));var logger=require(_0x99c3('0x6'))('rpc');var config=require(_0x99c3('0x7'));var jayson=require(_0x99c3('0x8'));var client=jayson[_0x99c3('0x9')][_0x99c3('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x511ade,_0x394a96,_0x423840){return new BPromise(function(_0x3f27b6,_0x5da20a){return client[_0x99c3('0xb')](_0x511ade,_0x423840)[_0x99c3('0xc')](function(_0x213523){logger[_0x99c3('0xd')](_0x99c3('0xe'),_0x394a96,_0x99c3('0xf'));logger['debug'](_0x99c3('0x10'),_0x394a96,_0x99c3('0xf'),JSON[_0x99c3('0x11')](_0x213523));if(_0x213523[_0x99c3('0x12')]){if(_0x213523[_0x99c3('0x12')][_0x99c3('0x13')]===0x1f4){logger[_0x99c3('0x12')]('AnalyticFieldReport,\x20%s,\x20%s',_0x394a96,_0x213523[_0x99c3('0x12')]['message']);return _0x5da20a(_0x213523[_0x99c3('0x12')][_0x99c3('0x14')]);}logger[_0x99c3('0x12')](_0x99c3('0xe'),_0x394a96,_0x213523[_0x99c3('0x12')][_0x99c3('0x14')]);return _0x3f27b6(_0x213523[_0x99c3('0x12')]['message']);}else{logger[_0x99c3('0xd')](_0x99c3('0xe'),_0x394a96,_0x99c3('0xf'));_0x3f27b6(_0x213523['result'][_0x99c3('0x14')]);}})['catch'](function(_0x590a40){logger[_0x99c3('0x12')](_0x99c3('0xe'),_0x394a96,_0x590a40);_0x5da20a(_0x590a40);});});}
\ No newline at end of file
index f61bab1..b8570db 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(_0x34f24b,_0x2eff8a){var _0x1026e1=function(_0x2993e1){while(--_0x2993e1){_0x34f24b['push'](_0x34f24b['shift']());}};_0x1026e1(++_0x2eff8a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0xa9e0[_0x5e3b04];return _0x1fc44d;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x0a9e('0xb')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xb')](_0x0a9e('0xf'),auth['isAuthenticated'](),controller['addFields']);router['put']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x14')]);module[_0x0a9e('0x15')]=router;
\ No newline at end of file
+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(_0x397a80,_0x2754a4){var _0x7086c1=function(_0x283a73){while(--_0x283a73){_0x397a80['push'](_0x397a80['shift']());}};_0x7086c1(++_0x2754a4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0xa9e0[_0x411add];return _0x238242;};'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 4a7a494..72d74c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x049e=['TEXT','STRING','sequelize','exports','name'];(function(_0x5cba0e,_0x4fb1a6){var _0x5e1e19=function(_0x76779c){while(--_0x76779c){_0x5cba0e['push'](_0x5cba0e['shift']());}};_0x5e1e19(++_0x4fb1a6);}(_0x049e,0x16a));var _0xe049=function(_0x55821d,_0x27a22e){_0x55821d=_0x55821d-0x0;var _0x58ea8a=_0x049e[_0x55821d];return _0x58ea8a;};'use strict';var Sequelize=require(_0xe049('0x0'));module[_0xe049('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xe049('0x2')},'table':{'type':Sequelize['STRING']},'metric':{'type':Sequelize[_0xe049('0x3')]},'description':{'type':Sequelize[_0xe049('0x4')]}};
\ No newline at end of file
+var _0x9861=['STRING','TEXT','sequelize','name'];(function(_0x21a53f,_0x182961){var _0x23ca6c=function(_0xbbdeff){while(--_0xbbdeff){_0x21a53f['push'](_0x21a53f['shift']());}};_0x23ca6c(++_0x182961);}(_0x9861,0x176));var _0x1986=function(_0x1b46ef,_0x5d30c9){_0x1b46ef=_0x1b46ef-0x0;var _0x12eee9=_0x9861[_0x1b46ef];return _0x12eee9;};'use strict';var Sequelize=require(_0x1986('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x1986('0x1')},'table':{'type':Sequelize[_0x1986('0x2')]},'metric':{'type':Sequelize[_0x1986('0x3')]},'description':{'type':Sequelize[_0x1986('0x2')]}};
\ No newline at end of file
index 9ce5042..6ff85e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc97=['mustache','path','sox','to-csv','ejs','lodash','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','update','then','get','destroy','sendStatus','error','stack','name','send','AnalyticMetric','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','length','nolimit','order','sort','where','pick','filter','merge','map','VIRTUAL','includeAll','findAll','rows','catch','params','keys','fields','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Metrics','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','eml-format','rimraf','zip-dir','request-promise','bluebird'];(function(_0x1fca66,_0xa168ce){var _0x3e7c8d=function(_0x496bc0){while(--_0x496bc0){_0x1fca66['push'](_0x1fca66['shift']());}};_0x3e7c8d(++_0xa168ce);}(_0xdc97,0x13b));var _0x7dc9=function(_0x1b7d07,_0x14eb85){_0x1b7d07=_0x1b7d07-0x0;var _0x3de54e=_0xdc97[_0x1b7d07];return _0x3de54e;};'use strict';var emlformat=require(_0x7dc9('0x0'));var rimraf=require(_0x7dc9('0x1'));var zipdir=require(_0x7dc9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7dc9('0x3'));var moment=require('moment');var BPromise=require(_0x7dc9('0x4'));var Mustache=require(_0x7dc9('0x5'));var util=require('util');var path=require(_0x7dc9('0x6'));var sox=require(_0x7dc9('0x7'));var csv=require(_0x7dc9('0x8'));var ejs=require(_0x7dc9('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7dc9('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7dc9('0xb'));var deskjs=require(_0x7dc9('0xc'));var toCsv=require(_0x7dc9('0x8'));var querystring=require(_0x7dc9('0xd'));var Papa=require(_0x7dc9('0xe'));var Redis=require('ioredis');var authService=require(_0x7dc9('0xf'));var qs=require(_0x7dc9('0x10'));var as=require(_0x7dc9('0x11'));var hardwareService=require(_0x7dc9('0x12'));var logger=require(_0x7dc9('0x13'))(_0x7dc9('0x14'));var utils=require(_0x7dc9('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x599ef1,_0x94c75a){_0x94c75a=_0x94c75a||0xcc;return function(_0x14e5db){if(_0x14e5db){return _0x599ef1['sendStatus'](_0x94c75a);}return _0x599ef1[_0x7dc9('0x16')](_0x94c75a)[_0x7dc9('0x17')]();};}function respondWithResult(_0xaadf2,_0xf37bc7){_0xf37bc7=_0xf37bc7||0xc8;return function(_0x31d43d){if(_0x31d43d){return _0xaadf2[_0x7dc9('0x16')](_0xf37bc7)['json'](_0x31d43d);}};}function respondWithFilteredResult(_0x3a54f2,_0x278191){return function(_0x1b0aa1){if(_0x1b0aa1){var _0x442819=typeof _0x278191[_0x7dc9('0x18')]===_0x7dc9('0x19')&&typeof _0x278191[_0x7dc9('0x1a')]===_0x7dc9('0x19');var _0x4778d5=_0x1b0aa1['count'];var _0x22577e=_0x442819?0x0:_0x278191['offset'];var _0x1f5906=_0x442819?_0x1b0aa1[_0x7dc9('0x1b')]:_0x278191['offset']+_0x278191[_0x7dc9('0x1a')];var _0x3b738a;if(_0x1f5906>=_0x4778d5){_0x1f5906=_0x4778d5;_0x3b738a=0xc8;}else{_0x3b738a=0xce;}_0x3a54f2[_0x7dc9('0x16')](_0x3b738a);return _0x3a54f2[_0x7dc9('0x1c')](_0x7dc9('0x1d'),_0x22577e+'-'+_0x1f5906+'/'+_0x4778d5)[_0x7dc9('0x1e')](_0x1b0aa1);}return null;};}function patchUpdates(_0x2dad65){return function(_0x2895f5){try{jsonpatch[_0x7dc9('0x1f')](_0x2895f5,_0x2dad65,!![]);}catch(_0x2b38d6){return BPromise['reject'](_0x2b38d6);}return _0x2895f5['save']();};}function saveUpdates(_0x12954f,_0x5981e2){return function(_0x596e0f){if(_0x596e0f){return _0x596e0f[_0x7dc9('0x20')](_0x12954f)[_0x7dc9('0x21')](function(_0x5e9525){return _0x5e9525;});}return null;};}function removeEntity(_0xffc080,_0x43d31f){return function(_0x41110a){if(_0x41110a){return _0x41110a['destroy']()[_0x7dc9('0x21')](function(){var _0x1e3a8d=_0x41110a[_0x7dc9('0x22')]({'plain':!![]});var _0x55a482='Metrics';return db['UserProfileResource'][_0x7dc9('0x23')]({'where':{'type':_0x55a482,'resourceId':_0x1e3a8d['id']}})[_0x7dc9('0x21')](function(){return _0x41110a;});})['then'](function(){_0xffc080['status'](0xcc)[_0x7dc9('0x17')]();});}};}function handleEntityNotFound(_0x5afb7d,_0x2d22eb){return function(_0x1c690b){if(!_0x1c690b){_0x5afb7d[_0x7dc9('0x24')](0x194);}return _0x1c690b;};}function handleError(_0x3e4102,_0xa2aaa9){_0xa2aaa9=_0xa2aaa9||0x1f4;return function(_0x450124){logger[_0x7dc9('0x25')](_0x450124[_0x7dc9('0x26')]);if(_0x450124[_0x7dc9('0x27')]){delete _0x450124[_0x7dc9('0x27')];}_0x3e4102[_0x7dc9('0x16')](_0xa2aaa9)[_0x7dc9('0x28')](_0x450124);};}exports['index']=function(_0x4e929c,_0x513dd6){var _0x49a4a5={},_0x4a68f0={},_0x553a03={'count':0x0,'rows':[]};var _0x58c4e8=_['map'](db[_0x7dc9('0x29')][_0x7dc9('0x2a')],function(_0x29dcef){return{'name':_0x29dcef[_0x7dc9('0x2b')],'type':_0x29dcef[_0x7dc9('0x2c')][_0x7dc9('0x2d')]};});_0x4a68f0['model']=_['map'](_0x58c4e8,'name');_0x4a68f0[_0x7dc9('0x2e')]=_['keys'](_0x4e929c[_0x7dc9('0x2e')]);_0x4a68f0[_0x7dc9('0x2f')]=_[_0x7dc9('0x30')](_0x4a68f0[_0x7dc9('0x31')],_0x4a68f0[_0x7dc9('0x2e')]);_0x49a4a5[_0x7dc9('0x32')]=_[_0x7dc9('0x30')](_0x4a68f0[_0x7dc9('0x31')],qs['fields'](_0x4e929c[_0x7dc9('0x2e')]['fields']));_0x49a4a5[_0x7dc9('0x32')]=_0x49a4a5[_0x7dc9('0x32')][_0x7dc9('0x33')]?_0x49a4a5[_0x7dc9('0x32')]:_0x4a68f0['model'];if(!_0x4e929c[_0x7dc9('0x2e')]['hasOwnProperty'](_0x7dc9('0x34'))){_0x49a4a5['limit']=qs['limit'](_0x4e929c[_0x7dc9('0x2e')][_0x7dc9('0x1a')]);_0x49a4a5[_0x7dc9('0x18')]=qs[_0x7dc9('0x18')](_0x4e929c['query'][_0x7dc9('0x18')]);}_0x49a4a5[_0x7dc9('0x35')]=qs[_0x7dc9('0x36')](_0x4e929c[_0x7dc9('0x2e')][_0x7dc9('0x36')]);_0x49a4a5[_0x7dc9('0x37')]=qs[_0x7dc9('0x2f')](_[_0x7dc9('0x38')](_0x4e929c[_0x7dc9('0x2e')],_0x4a68f0[_0x7dc9('0x2f')]),_0x58c4e8);if(_0x4e929c[_0x7dc9('0x2e')][_0x7dc9('0x39')]){_0x49a4a5['where']=_[_0x7dc9('0x3a')](_0x49a4a5[_0x7dc9('0x37')],{'$or':_[_0x7dc9('0x3b')](_0x58c4e8,function(_0xfd2612){if(_0xfd2612['type']!==_0x7dc9('0x3c')){var _0x89db0e={};_0x89db0e[_0xfd2612[_0x7dc9('0x27')]]={'$like':'%'+_0x4e929c[_0x7dc9('0x2e')][_0x7dc9('0x39')]+'%'};return _0x89db0e;}})});}_0x49a4a5=_[_0x7dc9('0x3a')]({},_0x49a4a5,_0x4e929c['options']);var _0x553230={'where':_0x49a4a5[_0x7dc9('0x37')]};return db[_0x7dc9('0x29')]['count'](_0x553230)[_0x7dc9('0x21')](function(_0x4a37ec){_0x553a03[_0x7dc9('0x1b')]=_0x4a37ec;if(_0x4e929c[_0x7dc9('0x2e')][_0x7dc9('0x3d')]){_0x49a4a5['include']=[{'all':!![]}];}return db[_0x7dc9('0x29')][_0x7dc9('0x3e')](_0x49a4a5);})[_0x7dc9('0x21')](function(_0x95513c){_0x553a03[_0x7dc9('0x3f')]=_0x95513c;return _0x553a03;})[_0x7dc9('0x21')](respondWithFilteredResult(_0x513dd6,_0x49a4a5))[_0x7dc9('0x40')](handleError(_0x513dd6,null));};exports['show']=function(_0x187aa6,_0x4f29b2){var _0x52d883={'raw':!![],'where':{'id':_0x187aa6[_0x7dc9('0x41')]['id']}},_0xcced6c={};_0xcced6c[_0x7dc9('0x31')]=_[_0x7dc9('0x42')](db[_0x7dc9('0x29')][_0x7dc9('0x2a')]);_0xcced6c[_0x7dc9('0x2e')]=_[_0x7dc9('0x42')](_0x187aa6[_0x7dc9('0x2e')]);_0xcced6c['filters']=_[_0x7dc9('0x30')](_0xcced6c[_0x7dc9('0x31')],_0xcced6c[_0x7dc9('0x2e')]);_0x52d883[_0x7dc9('0x32')]=_[_0x7dc9('0x30')](_0xcced6c[_0x7dc9('0x31')],qs['fields'](_0x187aa6[_0x7dc9('0x2e')][_0x7dc9('0x43')]));_0x52d883['attributes']=_0x52d883[_0x7dc9('0x32')][_0x7dc9('0x33')]?_0x52d883[_0x7dc9('0x32')]:_0xcced6c['model'];if(_0x187aa6[_0x7dc9('0x2e')]['includeAll']){_0x52d883['include']=[{'all':!![]}];}_0x52d883=_[_0x7dc9('0x3a')]({},_0x52d883,_0x187aa6[_0x7dc9('0x44')]);return db[_0x7dc9('0x29')]['find'](_0x52d883)['then'](handleEntityNotFound(_0x4f29b2,null))[_0x7dc9('0x21')](respondWithResult(_0x4f29b2,null))['catch'](handleError(_0x4f29b2,null));};exports[_0x7dc9('0x45')]=function(_0x4ab558,_0x5e2d59){return db[_0x7dc9('0x29')][_0x7dc9('0x45')](_0x4ab558[_0x7dc9('0x46')],{})[_0x7dc9('0x21')](function(_0x414bf4){var _0x113087=_0x4ab558[_0x7dc9('0x47')][_0x7dc9('0x22')]({'plain':!![]});if(!_0x113087)throw new Error(_0x7dc9('0x48'));if(_0x113087[_0x7dc9('0x49')]===_0x7dc9('0x47')){var _0x13580b=_0x414bf4[_0x7dc9('0x22')]({'plain':!![]});var _0x59be9b=_0x7dc9('0x4a');return db['UserProfileSection']['find']({'where':{'name':_0x59be9b,'userProfileId':_0x113087[_0x7dc9('0x4b')]},'raw':!![]})[_0x7dc9('0x21')](function(_0x40e382){if(_0x40e382&&_0x40e382[_0x7dc9('0x4c')]===0x0){return db[_0x7dc9('0x4d')]['create']({'name':_0x13580b[_0x7dc9('0x27')],'resourceId':_0x13580b['id'],'type':_0x40e382[_0x7dc9('0x27')],'sectionId':_0x40e382['id']},{})[_0x7dc9('0x21')](function(){return _0x414bf4;});}else{return _0x414bf4;}})['catch'](function(_0x341909){logger[_0x7dc9('0x25')](_0x7dc9('0x4e'),_0x341909);throw _0x341909;});}return _0x414bf4;})[_0x7dc9('0x21')](respondWithResult(_0x5e2d59,0xc9))[_0x7dc9('0x40')](handleError(_0x5e2d59,null));};exports[_0x7dc9('0x20')]=function(_0x593132,_0x366b8b){if(_0x593132[_0x7dc9('0x46')]['id']){delete _0x593132[_0x7dc9('0x46')]['id'];}return db[_0x7dc9('0x29')][_0x7dc9('0x4f')]({'where':{'id':_0x593132[_0x7dc9('0x41')]['id']}})[_0x7dc9('0x21')](handleEntityNotFound(_0x366b8b,null))[_0x7dc9('0x21')](saveUpdates(_0x593132[_0x7dc9('0x46')],null))[_0x7dc9('0x21')](respondWithResult(_0x366b8b,null))[_0x7dc9('0x40')](handleError(_0x366b8b,null));};exports[_0x7dc9('0x23')]=function(_0x4fec6e,_0x1767b6){return db[_0x7dc9('0x29')][_0x7dc9('0x4f')]({'where':{'id':_0x4fec6e[_0x7dc9('0x41')]['id']}})[_0x7dc9('0x21')](handleEntityNotFound(_0x1767b6,null))['then'](removeEntity(_0x1767b6,null))[_0x7dc9('0x40')](handleError(_0x1767b6,null));};
\ No newline at end of file
+var _0x81bd=['filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','merge','type','VIRTUAL','filter','options','AnalyticMetric','includeAll','include','findAll','rows','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','catch','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','destroy','get','Metrics','stack','name','send','index','map','fieldName','query','keys'];(function(_0x4ec48f,_0x21c136){var _0x39fe28=function(_0x342394){while(--_0x342394){_0x4ec48f['push'](_0x4ec48f['shift']());}};_0x39fe28(++_0x21c136);}(_0x81bd,0x7c));var _0xd81b=function(_0x1e6d9a,_0x548cf2){_0x1e6d9a=_0x1e6d9a-0x0;var _0x59b4da=_0x81bd[_0x1e6d9a];return _0x59b4da;};'use strict';var emlformat=require(_0xd81b('0x0'));var rimraf=require(_0xd81b('0x1'));var zipdir=require(_0xd81b('0x2'));var jsonpatch=require(_0xd81b('0x3'));var rp=require(_0xd81b('0x4'));var moment=require(_0xd81b('0x5'));var BPromise=require(_0xd81b('0x6'));var Mustache=require('mustache');var util=require(_0xd81b('0x7'));var path=require(_0xd81b('0x8'));var sox=require(_0xd81b('0x9'));var csv=require('to-csv');var ejs=require(_0xd81b('0xa'));var fs=require('fs');var fs_extra=require(_0xd81b('0xb'));var _=require(_0xd81b('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xd81b('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xd81b('0xe'));var querystring=require(_0xd81b('0xf'));var Papa=require(_0xd81b('0x10'));var Redis=require(_0xd81b('0x11'));var authService=require(_0xd81b('0x12'));var qs=require(_0xd81b('0x13'));var as=require(_0xd81b('0x14'));var hardwareService=require(_0xd81b('0x15'));var logger=require(_0xd81b('0x16'))(_0xd81b('0x17'));var utils=require(_0xd81b('0x18'));var config=require(_0xd81b('0x19'));var licenseUtil=require(_0xd81b('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x21dfff,_0x57f71d){_0x57f71d=_0x57f71d||0xcc;return function(_0x3f2405){if(_0x3f2405){return _0x21dfff[_0xd81b('0x1b')](_0x57f71d);}return _0x21dfff['status'](_0x57f71d)[_0xd81b('0x1c')]();};}function respondWithResult(_0x47dd04,_0x13dd00){_0x13dd00=_0x13dd00||0xc8;return function(_0x41bf7a){if(_0x41bf7a){return _0x47dd04[_0xd81b('0x1d')](_0x13dd00)[_0xd81b('0x1e')](_0x41bf7a);}};}function respondWithFilteredResult(_0x128162,_0x552215){return function(_0x1c620d){if(_0x1c620d){var _0x27b7a0=typeof _0x552215['offset']===_0xd81b('0x1f')&&typeof _0x552215[_0xd81b('0x20')]===_0xd81b('0x1f');var _0x15e860=_0x1c620d[_0xd81b('0x21')];var _0xc49b8d=_0x27b7a0?0x0:_0x552215[_0xd81b('0x22')];var _0x3d4d34=_0x27b7a0?_0x1c620d[_0xd81b('0x21')]:_0x552215[_0xd81b('0x22')]+_0x552215[_0xd81b('0x20')];var _0x453952;if(_0x3d4d34>=_0x15e860){_0x3d4d34=_0x15e860;_0x453952=0xc8;}else{_0x453952=0xce;}_0x128162[_0xd81b('0x1d')](_0x453952);return _0x128162[_0xd81b('0x23')](_0xd81b('0x24'),_0xc49b8d+'-'+_0x3d4d34+'/'+_0x15e860)[_0xd81b('0x1e')](_0x1c620d);}return null;};}function patchUpdates(_0x5f101a){return function(_0x4d566e){try{jsonpatch[_0xd81b('0x25')](_0x4d566e,_0x5f101a,!![]);}catch(_0x1b7876){return BPromise[_0xd81b('0x26')](_0x1b7876);}return _0x4d566e['save']();};}function saveUpdates(_0x19ed0e,_0x6571a6){return function(_0x542ee2){if(_0x542ee2){return _0x542ee2[_0xd81b('0x27')](_0x19ed0e)[_0xd81b('0x28')](function(_0x1670cd){return _0x1670cd;});}return null;};}function removeEntity(_0x1ad65c,_0x279176){return function(_0xcb4f91){if(_0xcb4f91){return _0xcb4f91[_0xd81b('0x29')]()[_0xd81b('0x28')](function(){var _0x341aec=_0xcb4f91[_0xd81b('0x2a')]({'plain':!![]});var _0x2ccedf=_0xd81b('0x2b');return db['UserProfileResource'][_0xd81b('0x29')]({'where':{'type':_0x2ccedf,'resourceId':_0x341aec['id']}})[_0xd81b('0x28')](function(){return _0xcb4f91;});})[_0xd81b('0x28')](function(){_0x1ad65c[_0xd81b('0x1d')](0xcc)[_0xd81b('0x1c')]();});}};}function handleEntityNotFound(_0x2d0d02,_0x3e28dd){return function(_0x73dc09){if(!_0x73dc09){_0x2d0d02[_0xd81b('0x1b')](0x194);}return _0x73dc09;};}function handleError(_0x483a3d,_0x469cc4){_0x469cc4=_0x469cc4||0x1f4;return function(_0x4e2eff){logger['error'](_0x4e2eff[_0xd81b('0x2c')]);if(_0x4e2eff[_0xd81b('0x2d')]){delete _0x4e2eff['name'];}_0x483a3d['status'](_0x469cc4)[_0xd81b('0x2e')](_0x4e2eff);};}exports[_0xd81b('0x2f')]=function(_0x1b1434,_0x289f54){var _0x1a1572={},_0x4654ba={},_0x5527ed={'count':0x0,'rows':[]};var _0x37d381=_[_0xd81b('0x30')](db['AnalyticMetric']['rawAttributes'],function(_0x165892){return{'name':_0x165892[_0xd81b('0x31')],'type':_0x165892['type']['key']};});_0x4654ba['model']=_[_0xd81b('0x30')](_0x37d381,_0xd81b('0x2d'));_0x4654ba[_0xd81b('0x32')]=_[_0xd81b('0x33')](_0x1b1434[_0xd81b('0x32')]);_0x4654ba[_0xd81b('0x34')]=_[_0xd81b('0x35')](_0x4654ba['model'],_0x4654ba[_0xd81b('0x32')]);_0x1a1572['attributes']=_[_0xd81b('0x35')](_0x4654ba[_0xd81b('0x36')],qs[_0xd81b('0x37')](_0x1b1434[_0xd81b('0x32')][_0xd81b('0x37')]));_0x1a1572[_0xd81b('0x38')]=_0x1a1572[_0xd81b('0x38')][_0xd81b('0x39')]?_0x1a1572[_0xd81b('0x38')]:_0x4654ba[_0xd81b('0x36')];if(!_0x1b1434[_0xd81b('0x32')][_0xd81b('0x3a')](_0xd81b('0x3b'))){_0x1a1572['limit']=qs['limit'](_0x1b1434[_0xd81b('0x32')][_0xd81b('0x20')]);_0x1a1572[_0xd81b('0x22')]=qs['offset'](_0x1b1434[_0xd81b('0x32')][_0xd81b('0x22')]);}_0x1a1572['order']=qs[_0xd81b('0x3c')](_0x1b1434[_0xd81b('0x32')]['sort']);_0x1a1572[_0xd81b('0x3d')]=qs['filters'](_[_0xd81b('0x3e')](_0x1b1434[_0xd81b('0x32')],_0x4654ba[_0xd81b('0x34')]),_0x37d381);if(_0x1b1434[_0xd81b('0x32')]['filter']){_0x1a1572[_0xd81b('0x3d')]=_[_0xd81b('0x3f')](_0x1a1572[_0xd81b('0x3d')],{'$or':_[_0xd81b('0x30')](_0x37d381,function(_0x3abd60){if(_0x3abd60[_0xd81b('0x40')]!==_0xd81b('0x41')){var _0x532ada={};_0x532ada[_0x3abd60[_0xd81b('0x2d')]]={'$like':'%'+_0x1b1434[_0xd81b('0x32')][_0xd81b('0x42')]+'%'};return _0x532ada;}})});}_0x1a1572=_['merge']({},_0x1a1572,_0x1b1434[_0xd81b('0x43')]);var _0x3a05f4={'where':_0x1a1572[_0xd81b('0x3d')]};return db[_0xd81b('0x44')][_0xd81b('0x21')](_0x3a05f4)['then'](function(_0x3dfba7){_0x5527ed[_0xd81b('0x21')]=_0x3dfba7;if(_0x1b1434[_0xd81b('0x32')][_0xd81b('0x45')]){_0x1a1572[_0xd81b('0x46')]=[{'all':!![]}];}return db[_0xd81b('0x44')][_0xd81b('0x47')](_0x1a1572);})[_0xd81b('0x28')](function(_0x4405a8){_0x5527ed[_0xd81b('0x48')]=_0x4405a8;return _0x5527ed;})[_0xd81b('0x28')](respondWithFilteredResult(_0x289f54,_0x1a1572))['catch'](handleError(_0x289f54,null));};exports[_0xd81b('0x49')]=function(_0x2778b3,_0x25824e){var _0xa5e391={'raw':!![],'where':{'id':_0x2778b3[_0xd81b('0x4a')]['id']}},_0x1e6654={};_0x1e6654[_0xd81b('0x36')]=_[_0xd81b('0x33')](db['AnalyticMetric']['rawAttributes']);_0x1e6654[_0xd81b('0x32')]=_[_0xd81b('0x33')](_0x2778b3[_0xd81b('0x32')]);_0x1e6654[_0xd81b('0x34')]=_[_0xd81b('0x35')](_0x1e6654[_0xd81b('0x36')],_0x1e6654[_0xd81b('0x32')]);_0xa5e391[_0xd81b('0x38')]=_[_0xd81b('0x35')](_0x1e6654[_0xd81b('0x36')],qs[_0xd81b('0x37')](_0x2778b3[_0xd81b('0x32')]['fields']));_0xa5e391[_0xd81b('0x38')]=_0xa5e391[_0xd81b('0x38')][_0xd81b('0x39')]?_0xa5e391[_0xd81b('0x38')]:_0x1e6654[_0xd81b('0x36')];if(_0x2778b3[_0xd81b('0x32')][_0xd81b('0x45')]){_0xa5e391[_0xd81b('0x46')]=[{'all':!![]}];}_0xa5e391=_[_0xd81b('0x3f')]({},_0xa5e391,_0x2778b3['options']);return db[_0xd81b('0x44')][_0xd81b('0x4b')](_0xa5e391)[_0xd81b('0x28')](handleEntityNotFound(_0x25824e,null))[_0xd81b('0x28')](respondWithResult(_0x25824e,null))['catch'](handleError(_0x25824e,null));};exports[_0xd81b('0x4c')]=function(_0x151127,_0x15030b){return db[_0xd81b('0x44')][_0xd81b('0x4c')](_0x151127[_0xd81b('0x4d')],{})[_0xd81b('0x28')](function(_0x43d7ce){var _0x133a76=_0x151127['user']['get']({'plain':!![]});if(!_0x133a76)throw new Error(_0xd81b('0x4e'));if(_0x133a76[_0xd81b('0x4f')]===_0xd81b('0x50')){var _0x4da281=_0x43d7ce[_0xd81b('0x2a')]({'plain':!![]});var _0x3d6ab3=_0xd81b('0x2b');return db[_0xd81b('0x51')]['find']({'where':{'name':_0x3d6ab3,'userProfileId':_0x133a76[_0xd81b('0x52')]},'raw':!![]})[_0xd81b('0x28')](function(_0x1b523c){if(_0x1b523c&&_0x1b523c[_0xd81b('0x53')]===0x0){return db[_0xd81b('0x54')]['create']({'name':_0x4da281[_0xd81b('0x2d')],'resourceId':_0x4da281['id'],'type':_0x1b523c[_0xd81b('0x2d')],'sectionId':_0x1b523c['id']},{})['then'](function(){return _0x43d7ce;});}else{return _0x43d7ce;}})[_0xd81b('0x55')](function(_0x315bd5){logger[_0xd81b('0x56')](_0xd81b('0x57'),_0x315bd5);throw _0x315bd5;});}return _0x43d7ce;})[_0xd81b('0x28')](respondWithResult(_0x15030b,0xc9))[_0xd81b('0x55')](handleError(_0x15030b,null));};exports[_0xd81b('0x27')]=function(_0x22f588,_0x3ed626){if(_0x22f588[_0xd81b('0x4d')]['id']){delete _0x22f588[_0xd81b('0x4d')]['id'];}return db['AnalyticMetric'][_0xd81b('0x4b')]({'where':{'id':_0x22f588['params']['id']}})[_0xd81b('0x28')](handleEntityNotFound(_0x3ed626,null))[_0xd81b('0x28')](saveUpdates(_0x22f588[_0xd81b('0x4d')],null))[_0xd81b('0x28')](respondWithResult(_0x3ed626,null))[_0xd81b('0x55')](handleError(_0x3ed626,null));};exports[_0xd81b('0x29')]=function(_0x5c196a,_0x2d978d){return db[_0xd81b('0x44')]['find']({'where':{'id':_0x5c196a['params']['id']}})[_0xd81b('0x28')](handleEntityNotFound(_0x2d978d,null))['then'](removeEntity(_0x2d978d,null))[_0xd81b('0x55')](handleError(_0x2d978d,null));};
\ No newline at end of file
index 7d0cd84..d3a1739 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9303=['api','bluebird','rimraf','../../config/environment','./analyticMetric.attributes','exports','analytics_metrics','lodash'];(function(_0x514a08,_0x28a8c7){var _0x8da53a=function(_0x547f09){while(--_0x547f09){_0x514a08['push'](_0x514a08['shift']());}};_0x8da53a(++_0x28a8c7);}(_0x9303,0xd7));var _0x3930=function(_0x3d0240,_0x21509a){_0x3d0240=_0x3d0240-0x0;var _0xdf8a7d=_0x9303[_0x3d0240];return _0xdf8a7d;};'use strict';var _=require(_0x3930('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x3930('0x1'));var moment=require('moment');var BPromise=require(_0x3930('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x3930('0x3'));var config=require(_0x3930('0x4'));var attributes=require(_0x3930('0x5'));module[_0x3930('0x6')]=function(_0x57e19d,_0x44949e){return _0x57e19d['define']('AnalyticMetric',attributes,{'tableName':_0x3930('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa63f=['request-promise','path','rimraf','../../config/environment','define','AnalyticMetric','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x58ce0d,_0x3038cd){var _0x1eb027=function(_0x39efe1){while(--_0x39efe1){_0x58ce0d['push'](_0x58ce0d['shift']());}};_0x1eb027(++_0x3038cd);}(_0xa63f,0x1b6));var _0xfa63=function(_0xe4d6c6,_0x3bdbf2){_0xe4d6c6=_0xe4d6c6-0x0;var _0x3a8935=_0xa63f[_0xe4d6c6];return _0x3a8935;};'use strict';var _=require(_0xfa63('0x0'));var util=require(_0xfa63('0x1'));var logger=require(_0xfa63('0x2'))(_0xfa63('0x3'));var moment=require(_0xfa63('0x4'));var BPromise=require(_0xfa63('0x5'));var rp=require(_0xfa63('0x6'));var fs=require('fs');var path=require(_0xfa63('0x7'));var rimraf=require(_0xfa63('0x8'));var config=require(_0xfa63('0x9'));var attributes=require('./analyticMetric.attributes');module['exports']=function(_0x20d4f6,_0x41efce){return _0x20d4f6[_0xfa63('0xa')](_0xfa63('0xb'),attributes,{'tableName':'analytics_metrics','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 77a5cc1..3bc7814 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc72c=['debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','AnalyticMetric,\x20%s,\x20%s','message','result','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','request\x20sent'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xc72c,0x119));var _0xcc72=function(_0x334841,_0x2bbc4c){_0x334841=_0x334841-0x0;var _0x5beb4b=_0xc72c[_0x334841];return _0x5beb4b;};'use strict';var _=require(_0xcc72('0x0'));var util=require('util');var moment=require(_0xcc72('0x1'));var BPromise=require(_0xcc72('0x2'));var rs=require(_0xcc72('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xcc72('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xcc72('0x5'))(_0xcc72('0x6'));var config=require(_0xcc72('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xcc72('0x8')][_0xcc72('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x570b04,_0x2f5728,_0x282c6b){return new BPromise(function(_0x2d302b,_0x3cee4f){return client[_0xcc72('0xa')](_0x570b04,_0x282c6b)[_0xcc72('0xb')](function(_0x4306f5){logger['info']('AnalyticMetric,\x20%s,\x20%s',_0x2f5728,_0xcc72('0xc'));logger[_0xcc72('0xd')](_0xcc72('0xe'),_0x2f5728,_0xcc72('0xc'),JSON[_0xcc72('0xf')](_0x4306f5));if(_0x4306f5['error']){if(_0x4306f5[_0xcc72('0x10')][_0xcc72('0x11')]===0x1f4){logger[_0xcc72('0x10')](_0xcc72('0x12'),_0x2f5728,_0x4306f5['error'][_0xcc72('0x13')]);return _0x3cee4f(_0x4306f5[_0xcc72('0x10')]['message']);}logger[_0xcc72('0x10')](_0xcc72('0x12'),_0x2f5728,_0x4306f5['error'][_0xcc72('0x13')]);return _0x2d302b(_0x4306f5[_0xcc72('0x10')][_0xcc72('0x13')]);}else{logger['info'](_0xcc72('0x12'),_0x2f5728,_0xcc72('0xc'));_0x2d302b(_0x4306f5[_0xcc72('0x14')][_0xcc72('0x13')]);}})['catch'](function(_0x20518a){logger[_0xcc72('0x10')](_0xcc72('0x12'),_0x2f5728,_0x20518a);_0x3cee4f(_0x20518a);});});}
\ No newline at end of file
+var _0x95f9=['jayson/promise','client','http','info','AnalyticMetric,\x20%s,\x20%s','AnalyticMetric,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash','../../mysqldb','../../config/logger','../../config/environment'];(function(_0xc63c19,_0xccae28){var _0x3c1a6b=function(_0xb5d410){while(--_0xb5d410){_0xc63c19['push'](_0xc63c19['shift']());}};_0x3c1a6b(++_0xccae28);}(_0x95f9,0x10c));var _0x995f=function(_0x381589,_0x27a707){_0x381589=_0x381589-0x0;var _0x2a075d=_0x95f9[_0x381589];return _0x2a075d;};'use strict';var _=require(_0x995f('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x995f('0x1'))['db'];var utils=require('../../config/utils');var logger=require(_0x995f('0x2'))('rpc');var config=require(_0x995f('0x3'));var jayson=require(_0x995f('0x4'));var client=jayson[_0x995f('0x5')][_0x995f('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x1ce329,_0x1a0428,_0x250505){return new BPromise(function(_0x1e47d0,_0x28e25b){return client['request'](_0x1ce329,_0x250505)['then'](function(_0x5d786e){logger[_0x995f('0x7')](_0x995f('0x8'),_0x1a0428,'request\x20sent');logger['debug'](_0x995f('0x9'),_0x1a0428,_0x995f('0xa'),JSON[_0x995f('0xb')](_0x5d786e));if(_0x5d786e[_0x995f('0xc')]){if(_0x5d786e['error'][_0x995f('0xd')]===0x1f4){logger['error'](_0x995f('0x8'),_0x1a0428,_0x5d786e[_0x995f('0xc')][_0x995f('0xe')]);return _0x28e25b(_0x5d786e[_0x995f('0xc')]['message']);}logger[_0x995f('0xc')]('AnalyticMetric,\x20%s,\x20%s',_0x1a0428,_0x5d786e[_0x995f('0xc')][_0x995f('0xe')]);return _0x1e47d0(_0x5d786e['error'][_0x995f('0xe')]);}else{logger[_0x995f('0x7')]('AnalyticMetric,\x20%s,\x20%s',_0x1a0428,_0x995f('0xa'));_0x1e47d0(_0x5d786e[_0x995f('0xf')][_0x995f('0xe')]);}})['catch'](function(_0x232edd){logger[_0x995f('0xc')]('AnalyticMetric,\x20%s,\x20%s',_0x1a0428,_0x232edd);_0x28e25b(_0x232edd);});});}
\ No newline at end of file
index e17ed57..6491985 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa423=['post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./analyticMetric.controller','get','isAuthenticated','index','/:id','show'];(function(_0x2d9881,_0x450fab){var _0x144e1e=function(_0x51ff65){while(--_0x51ff65){_0x2d9881['push'](_0x2d9881['shift']());}};_0x144e1e(++_0x450fab);}(_0xa423,0x16c));var _0x3a42=function(_0x5a3ba1,_0x23c154){_0x5a3ba1=_0x5a3ba1-0x0;var _0x5dcc34=_0xa423[_0x5a3ba1];return _0x5dcc34;};'use strict';var multer=require(_0x3a42('0x0'));var util=require(_0x3a42('0x1'));var path=require(_0x3a42('0x2'));var timeout=require(_0x3a42('0x3'));var express=require(_0x3a42('0x4'));var router=express['Router']();var fs_extra=require(_0x3a42('0x5'));var auth=require(_0x3a42('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x3a42('0x7'));var controller=require(_0x3a42('0x8'));router[_0x3a42('0x9')]('/',auth[_0x3a42('0xa')](),controller[_0x3a42('0xb')]);router['get'](_0x3a42('0xc'),auth[_0x3a42('0xa')](),controller[_0x3a42('0xd')]);router[_0x3a42('0xe')]('/',auth[_0x3a42('0xa')](),controller[_0x3a42('0xf')]);router[_0x3a42('0x10')](_0x3a42('0xc'),auth[_0x3a42('0xa')](),controller[_0x3a42('0x11')]);router[_0x3a42('0x12')]('/:id',auth[_0x3a42('0xa')](),controller[_0x3a42('0x13')]);module[_0x3a42('0x14')]=router;
\ No newline at end of file
+var _0x0b3d=['express','fs-extra','../../components/interaction/service','./analyticMetric.controller','get','index','/:id','post','put','isAuthenticated','update','destroy','exports','multer','path'];(function(_0x1e85b3,_0x11726d){var _0x20835a=function(_0x438dee){while(--_0x438dee){_0x1e85b3['push'](_0x1e85b3['shift']());}};_0x20835a(++_0x11726d);}(_0x0b3d,0x76));var _0xd0b3=function(_0x44c44b,_0x57e40d){_0x44c44b=_0x44c44b-0x0;var _0xb29ca8=_0x0b3d[_0x44c44b];return _0xb29ca8;};'use strict';var multer=require(_0xd0b3('0x0'));var util=require('util');var path=require(_0xd0b3('0x1'));var timeout=require('connect-timeout');var express=require(_0xd0b3('0x2'));var router=express['Router']();var fs_extra=require(_0xd0b3('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xd0b3('0x4'));var config=require('../../config/environment');var controller=require(_0xd0b3('0x5'));router[_0xd0b3('0x6')]('/',auth['isAuthenticated'](),controller[_0xd0b3('0x7')]);router['get'](_0xd0b3('0x8'),auth['isAuthenticated'](),controller['show']);router[_0xd0b3('0x9')]('/',auth['isAuthenticated'](),controller['create']);router[_0xd0b3('0xa')]('/:id',auth[_0xd0b3('0xb')](),controller[_0xd0b3('0xc')]);router['delete']('/:id',auth[_0xd0b3('0xb')](),controller[_0xd0b3('0xd')]);module[_0xd0b3('0xe')]=router;
\ No newline at end of file
index 31ce2a9..e037e72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6104=['exports','TEXT'];(function(_0x4d2cfd,_0x4e3fc0){var _0x50cff9=function(_0xc35646){while(--_0xc35646){_0x4d2cfd['push'](_0x4d2cfd['shift']());}};_0x50cff9(++_0x4e3fc0);}(_0x6104,0x19c));var _0x4610=function(_0x221978,_0x6cb2d5){_0x221978=_0x221978-0x0;var _0x5be5b2=_0x6104[_0x221978];return _0x5be5b2;};'use strict';var Sequelize=require('sequelize');module[_0x4610('0x0')]={'tree':{'type':Sequelize[_0x4610('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x22e7=['exports','TEXT','sequelize'];(function(_0x546b62,_0x2e9a97){var _0x50ef01=function(_0x352ee7){while(--_0x352ee7){_0x546b62['push'](_0x546b62['shift']());}};_0x50ef01(++_0x2e9a97);}(_0x22e7,0x188));var _0x722e=function(_0xac9cb9,_0x75280f){_0xac9cb9=_0xac9cb9-0x0;var _0xccf29b=_0x22e7[_0xac9cb9];return _0xccf29b;};'use strict';var Sequelize=require(_0x722e('0x0'));module[_0x722e('0x1')]={'tree':{'type':Sequelize[_0x722e('0x2')],'allowNull':![]}};
\ No newline at end of file
index 0994c89..4fb5e4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53e8=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','json','apply','reject','save','update','then','error','stack','name','send','index','AnalyticTreeReport','rawAttributes','fieldName','type','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','params','keys','include','find','catch','create','body','eml-format','fast-json-patch','request-promise','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','papaparse','ioredis','../../components/auth/service'];(function(_0x2a789c,_0xa0544e){var _0x3a6503=function(_0xf7f1c0){while(--_0xf7f1c0){_0x2a789c['push'](_0x2a789c['shift']());}};_0x3a6503(++_0xa0544e);}(_0x53e8,0x1e8));var _0x853e=function(_0xe66cf2,_0x32ba5f){_0xe66cf2=_0xe66cf2-0x0;var _0x2d84e7=_0x53e8[_0xe66cf2];return _0x2d84e7;};'use strict';var emlformat=require(_0x853e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x853e('0x1'));var rp=require(_0x853e('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x853e('0x3'));var util=require(_0x853e('0x4'));var path=require(_0x853e('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x853e('0x6'));var fs=require('fs');var fs_extra=require(_0x853e('0x7'));var _=require(_0x853e('0x8'));var squel=require(_0x853e('0x9'));var crypto=require(_0x853e('0xa'));var jsforce=require(_0x853e('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x853e('0xc'));var querystring=require('querystring');var Papa=require(_0x853e('0xd'));var Redis=require(_0x853e('0xe'));var authService=require(_0x853e('0xf'));var qs=require(_0x853e('0x10'));var as=require(_0x853e('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x853e('0x12'))(_0x853e('0x13'));var utils=require(_0x853e('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x853e('0x15'))['db'];function respondWithStatusCode(_0x1a5a65,_0x848f1d){_0x848f1d=_0x848f1d||0xcc;return function(_0x4a29dd){if(_0x4a29dd){return _0x1a5a65[_0x853e('0x16')](_0x848f1d);}return _0x1a5a65['status'](_0x848f1d)[_0x853e('0x17')]();};}function respondWithResult(_0x59730a,_0x29c2ba){_0x29c2ba=_0x29c2ba||0xc8;return function(_0xcfff5c){if(_0xcfff5c){return _0x59730a[_0x853e('0x18')](_0x29c2ba)['json'](_0xcfff5c);}};}function respondWithFilteredResult(_0xe06b97,_0x424d6d){return function(_0xb15a9){if(_0xb15a9){var _0x50049e=typeof _0x424d6d[_0x853e('0x19')]===_0x853e('0x1a')&&typeof _0x424d6d[_0x853e('0x1b')]===_0x853e('0x1a');var _0x52d761=_0xb15a9['count'];var _0x4af67e=_0x50049e?0x0:_0x424d6d[_0x853e('0x19')];var _0x5edd52=_0x50049e?_0xb15a9[_0x853e('0x1c')]:_0x424d6d[_0x853e('0x19')]+_0x424d6d[_0x853e('0x1b')];var _0x2da307;if(_0x5edd52>=_0x52d761){_0x5edd52=_0x52d761;_0x2da307=0xc8;}else{_0x2da307=0xce;}_0xe06b97[_0x853e('0x18')](_0x2da307);return _0xe06b97[_0x853e('0x1d')]('Content-Range',_0x4af67e+'-'+_0x5edd52+'/'+_0x52d761)[_0x853e('0x1e')](_0xb15a9);}return null;};}function patchUpdates(_0x2f7eaa){return function(_0x452fa7){try{jsonpatch[_0x853e('0x1f')](_0x452fa7,_0x2f7eaa,!![]);}catch(_0x1766f5){return BPromise[_0x853e('0x20')](_0x1766f5);}return _0x452fa7[_0x853e('0x21')]();};}function saveUpdates(_0x139b67,_0x243b7c){return function(_0x4b9110){if(_0x4b9110){return _0x4b9110[_0x853e('0x22')](_0x139b67)[_0x853e('0x23')](function(_0x4e9bfc){return _0x4e9bfc;});}return null;};}function removeEntity(_0x467323,_0x227123){return function(_0x38ae8d){if(_0x38ae8d){return _0x38ae8d['destroy']()[_0x853e('0x23')](function(){_0x467323[_0x853e('0x18')](0xcc)[_0x853e('0x17')]();});}};}function handleEntityNotFound(_0x2eb88f,_0x30b208){return function(_0xe71bcf){if(!_0xe71bcf){_0x2eb88f[_0x853e('0x16')](0x194);}return _0xe71bcf;};}function handleError(_0x590cb8,_0x579621){_0x579621=_0x579621||0x1f4;return function(_0x5e52c9){logger[_0x853e('0x24')](_0x5e52c9[_0x853e('0x25')]);if(_0x5e52c9[_0x853e('0x26')]){delete _0x5e52c9[_0x853e('0x26')];}_0x590cb8[_0x853e('0x18')](_0x579621)[_0x853e('0x27')](_0x5e52c9);};}exports[_0x853e('0x28')]=function(_0x94a1a7,_0x15d07f){var _0x4be701={},_0x2e7af6={},_0x3a8e2e={'count':0x0,'rows':[]};var _0x18148d=_['map'](db[_0x853e('0x29')][_0x853e('0x2a')],function(_0x5467be){return{'name':_0x5467be[_0x853e('0x2b')],'type':_0x5467be[_0x853e('0x2c')]['key']};});_0x2e7af6[_0x853e('0x2d')]=_[_0x853e('0x2e')](_0x18148d,_0x853e('0x26'));_0x2e7af6[_0x853e('0x2f')]=_['keys'](_0x94a1a7['query']);_0x2e7af6[_0x853e('0x30')]=_[_0x853e('0x31')](_0x2e7af6[_0x853e('0x2d')],_0x2e7af6[_0x853e('0x2f')]);_0x4be701[_0x853e('0x32')]=_[_0x853e('0x31')](_0x2e7af6[_0x853e('0x2d')],qs['fields'](_0x94a1a7[_0x853e('0x2f')][_0x853e('0x33')]));_0x4be701['attributes']=_0x4be701[_0x853e('0x32')][_0x853e('0x34')]?_0x4be701[_0x853e('0x32')]:_0x2e7af6[_0x853e('0x2d')];if(!_0x94a1a7[_0x853e('0x2f')][_0x853e('0x35')]('nolimit')){_0x4be701[_0x853e('0x1b')]=qs[_0x853e('0x1b')](_0x94a1a7[_0x853e('0x2f')][_0x853e('0x1b')]);_0x4be701['offset']=qs[_0x853e('0x19')](_0x94a1a7[_0x853e('0x2f')][_0x853e('0x19')]);}_0x4be701['order']=qs[_0x853e('0x36')](_0x94a1a7[_0x853e('0x2f')][_0x853e('0x36')]);_0x4be701[_0x853e('0x37')]=qs[_0x853e('0x30')](_[_0x853e('0x38')](_0x94a1a7[_0x853e('0x2f')],_0x2e7af6[_0x853e('0x30')]),_0x18148d);if(_0x94a1a7[_0x853e('0x2f')][_0x853e('0x39')]){_0x4be701['where']=_[_0x853e('0x3a')](_0x4be701[_0x853e('0x37')],{'$or':_[_0x853e('0x2e')](_0x18148d,function(_0x1d0597){if(_0x1d0597['type']!==_0x853e('0x3b')){var _0x546d5b={};_0x546d5b[_0x1d0597[_0x853e('0x26')]]={'$like':'%'+_0x94a1a7[_0x853e('0x2f')][_0x853e('0x39')]+'%'};return _0x546d5b;}})});}_0x4be701=_[_0x853e('0x3a')]({},_0x4be701,_0x94a1a7[_0x853e('0x3c')]);var _0x2079b0={'where':_0x4be701['where']};return db['AnalyticTreeReport'][_0x853e('0x1c')](_0x2079b0)['then'](function(_0x124ed5){_0x3a8e2e[_0x853e('0x1c')]=_0x124ed5;if(_0x94a1a7[_0x853e('0x2f')][_0x853e('0x3d')]){_0x4be701['include']=[{'all':!![]}];}return db[_0x853e('0x29')][_0x853e('0x3e')](_0x4be701);})[_0x853e('0x23')](function(_0x230676){_0x3a8e2e[_0x853e('0x3f')]=_0x230676;return _0x3a8e2e;})[_0x853e('0x23')](respondWithFilteredResult(_0x15d07f,_0x4be701))['catch'](handleError(_0x15d07f,null));};exports[_0x853e('0x40')]=function(_0x5f0b9d,_0x2b679a){var _0xc206cc={'raw':!![],'where':{'id':_0x5f0b9d[_0x853e('0x41')]['id']}},_0x4443a6={};_0x4443a6['model']=_[_0x853e('0x42')](db[_0x853e('0x29')][_0x853e('0x2a')]);_0x4443a6['query']=_[_0x853e('0x42')](_0x5f0b9d[_0x853e('0x2f')]);_0x4443a6['filters']=_[_0x853e('0x31')](_0x4443a6['model'],_0x4443a6[_0x853e('0x2f')]);_0xc206cc['attributes']=_[_0x853e('0x31')](_0x4443a6['model'],qs[_0x853e('0x33')](_0x5f0b9d['query']['fields']));_0xc206cc[_0x853e('0x32')]=_0xc206cc[_0x853e('0x32')][_0x853e('0x34')]?_0xc206cc[_0x853e('0x32')]:_0x4443a6[_0x853e('0x2d')];if(_0x5f0b9d['query'][_0x853e('0x3d')]){_0xc206cc[_0x853e('0x43')]=[{'all':!![]}];}_0xc206cc=_[_0x853e('0x3a')]({},_0xc206cc,_0x5f0b9d[_0x853e('0x3c')]);return db['AnalyticTreeReport'][_0x853e('0x44')](_0xc206cc)['then'](handleEntityNotFound(_0x2b679a,null))['then'](respondWithResult(_0x2b679a,null))[_0x853e('0x45')](handleError(_0x2b679a,null));};exports['create']=function(_0x41d778,_0xd2a3fb){return db['AnalyticTreeReport'][_0x853e('0x46')](_0x41d778[_0x853e('0x47')],{})[_0x853e('0x23')](respondWithResult(_0xd2a3fb,0xc9))[_0x853e('0x45')](handleError(_0xd2a3fb,null));};exports[_0x853e('0x22')]=function(_0xefb813,_0x4e3453){if(_0xefb813['body']['id']){delete _0xefb813[_0x853e('0x47')]['id'];}return db[_0x853e('0x29')][_0x853e('0x44')]({'where':{'id':_0xefb813[_0x853e('0x41')]['id']}})[_0x853e('0x23')](handleEntityNotFound(_0x4e3453,null))[_0x853e('0x23')](saveUpdates(_0xefb813['body'],null))['then'](respondWithResult(_0x4e3453,null))[_0x853e('0x45')](handleError(_0x4e3453,null));};exports['destroy']=function(_0x20b31d,_0x32bef6){return db['AnalyticTreeReport'][_0x853e('0x44')]({'where':{'id':_0x20b31d[_0x853e('0x41')]['id']}})[_0x853e('0x23')](handleEntityNotFound(_0x32bef6,null))[_0x853e('0x23')](removeEntity(_0x32bef6,null))[_0x853e('0x45')](handleError(_0x32bef6,null));};
\ No newline at end of file
+var _0x8fd7=['filters','intersection','fields','length','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','AnalyticTreeReport','include','rows','catch','show','params','find','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','rawAttributes','fieldName','key','model','map','query','keys'];(function(_0x26d89d,_0x291e31){var _0x3a74f4=function(_0x16281e){while(--_0x16281e){_0x26d89d['push'](_0x26d89d['shift']());}};_0x3a74f4(++_0x291e31);}(_0x8fd7,0x1e6));var _0x78fd=function(_0x25e412,_0x177961){_0x25e412=_0x25e412-0x0;var _0x34042f=_0x8fd7[_0x25e412];return _0x34042f;};'use strict';var emlformat=require(_0x78fd('0x0'));var rimraf=require(_0x78fd('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x78fd('0x2'));var rp=require(_0x78fd('0x3'));var moment=require(_0x78fd('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x78fd('0x5'));var util=require(_0x78fd('0x6'));var path=require('path');var sox=require(_0x78fd('0x7'));var csv=require(_0x78fd('0x8'));var ejs=require(_0x78fd('0x9'));var fs=require('fs');var fs_extra=require(_0x78fd('0xa'));var _=require(_0x78fd('0xb'));var squel=require(_0x78fd('0xc'));var crypto=require(_0x78fd('0xd'));var jsforce=require(_0x78fd('0xe'));var deskjs=require(_0x78fd('0xf'));var toCsv=require(_0x78fd('0x8'));var querystring=require(_0x78fd('0x10'));var Papa=require(_0x78fd('0x11'));var Redis=require(_0x78fd('0x12'));var authService=require(_0x78fd('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x78fd('0x14'));var hardwareService=require(_0x78fd('0x15'));var logger=require(_0x78fd('0x16'))(_0x78fd('0x17'));var utils=require(_0x78fd('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x78fd('0x19'));var db=require(_0x78fd('0x1a'))['db'];function respondWithStatusCode(_0x68b0eb,_0x109805){_0x109805=_0x109805||0xcc;return function(_0x4fe5b4){if(_0x4fe5b4){return _0x68b0eb[_0x78fd('0x1b')](_0x109805);}return _0x68b0eb[_0x78fd('0x1c')](_0x109805)[_0x78fd('0x1d')]();};}function respondWithResult(_0xa90a70,_0x584301){_0x584301=_0x584301||0xc8;return function(_0x3c7c71){if(_0x3c7c71){return _0xa90a70[_0x78fd('0x1c')](_0x584301)[_0x78fd('0x1e')](_0x3c7c71);}};}function respondWithFilteredResult(_0xd668a4,_0x5c49a7){return function(_0x149cfd){if(_0x149cfd){var _0x23aac9=typeof _0x5c49a7[_0x78fd('0x1f')]===_0x78fd('0x20')&&typeof _0x5c49a7['limit']===_0x78fd('0x20');var _0x1d3440=_0x149cfd[_0x78fd('0x21')];var _0x4e4164=_0x23aac9?0x0:_0x5c49a7['offset'];var _0x4d48dd=_0x23aac9?_0x149cfd[_0x78fd('0x21')]:_0x5c49a7['offset']+_0x5c49a7[_0x78fd('0x22')];var _0x394787;if(_0x4d48dd>=_0x1d3440){_0x4d48dd=_0x1d3440;_0x394787=0xc8;}else{_0x394787=0xce;}_0xd668a4[_0x78fd('0x1c')](_0x394787);return _0xd668a4[_0x78fd('0x23')](_0x78fd('0x24'),_0x4e4164+'-'+_0x4d48dd+'/'+_0x1d3440)[_0x78fd('0x1e')](_0x149cfd);}return null;};}function patchUpdates(_0xb21943){return function(_0x199cb3){try{jsonpatch[_0x78fd('0x25')](_0x199cb3,_0xb21943,!![]);}catch(_0x1610ea){return BPromise[_0x78fd('0x26')](_0x1610ea);}return _0x199cb3[_0x78fd('0x27')]();};}function saveUpdates(_0x4723b5,_0x29d7b7){return function(_0x2934a8){if(_0x2934a8){return _0x2934a8[_0x78fd('0x28')](_0x4723b5)[_0x78fd('0x29')](function(_0x58ab44){return _0x58ab44;});}return null;};}function removeEntity(_0x33c165,_0x11131d){return function(_0x4351e5){if(_0x4351e5){return _0x4351e5[_0x78fd('0x2a')]()['then'](function(){_0x33c165[_0x78fd('0x1c')](0xcc)[_0x78fd('0x1d')]();});}};}function handleEntityNotFound(_0x3ba0a3,_0x53dd73){return function(_0x37b71e){if(!_0x37b71e){_0x3ba0a3['sendStatus'](0x194);}return _0x37b71e;};}function handleError(_0x331f11,_0x37ceed){_0x37ceed=_0x37ceed||0x1f4;return function(_0x13f7dd){logger['error'](_0x13f7dd[_0x78fd('0x2b')]);if(_0x13f7dd[_0x78fd('0x2c')]){delete _0x13f7dd[_0x78fd('0x2c')];}_0x331f11[_0x78fd('0x1c')](_0x37ceed)[_0x78fd('0x2d')](_0x13f7dd);};}exports['index']=function(_0x2b38dc,_0x4514c1){var _0x14bd04={},_0x2beedc={},_0x4db5b2={'count':0x0,'rows':[]};var _0x4387ca=_['map'](db['AnalyticTreeReport'][_0x78fd('0x2e')],function(_0x493b32){return{'name':_0x493b32[_0x78fd('0x2f')],'type':_0x493b32['type'][_0x78fd('0x30')]};});_0x2beedc[_0x78fd('0x31')]=_[_0x78fd('0x32')](_0x4387ca,'name');_0x2beedc[_0x78fd('0x33')]=_[_0x78fd('0x34')](_0x2b38dc[_0x78fd('0x33')]);_0x2beedc[_0x78fd('0x35')]=_[_0x78fd('0x36')](_0x2beedc[_0x78fd('0x31')],_0x2beedc['query']);_0x14bd04['attributes']=_['intersection'](_0x2beedc[_0x78fd('0x31')],qs[_0x78fd('0x37')](_0x2b38dc[_0x78fd('0x33')][_0x78fd('0x37')]));_0x14bd04['attributes']=_0x14bd04['attributes'][_0x78fd('0x38')]?_0x14bd04[_0x78fd('0x39')]:_0x2beedc[_0x78fd('0x31')];if(!_0x2b38dc[_0x78fd('0x33')][_0x78fd('0x3a')](_0x78fd('0x3b'))){_0x14bd04[_0x78fd('0x22')]=qs[_0x78fd('0x22')](_0x2b38dc['query'][_0x78fd('0x22')]);_0x14bd04[_0x78fd('0x1f')]=qs[_0x78fd('0x1f')](_0x2b38dc[_0x78fd('0x33')][_0x78fd('0x1f')]);}_0x14bd04[_0x78fd('0x3c')]=qs[_0x78fd('0x3d')](_0x2b38dc[_0x78fd('0x33')]['sort']);_0x14bd04[_0x78fd('0x3e')]=qs[_0x78fd('0x35')](_[_0x78fd('0x3f')](_0x2b38dc['query'],_0x2beedc[_0x78fd('0x35')]),_0x4387ca);if(_0x2b38dc[_0x78fd('0x33')][_0x78fd('0x40')]){_0x14bd04[_0x78fd('0x3e')]=_[_0x78fd('0x41')](_0x14bd04[_0x78fd('0x3e')],{'$or':_[_0x78fd('0x32')](_0x4387ca,function(_0x50029a){if(_0x50029a['type']!==_0x78fd('0x42')){var _0x24ef80={};_0x24ef80[_0x50029a[_0x78fd('0x2c')]]={'$like':'%'+_0x2b38dc['query'][_0x78fd('0x40')]+'%'};return _0x24ef80;}})});}_0x14bd04=_['merge']({},_0x14bd04,_0x2b38dc[_0x78fd('0x43')]);var _0x3a852a={'where':_0x14bd04['where']};return db[_0x78fd('0x44')][_0x78fd('0x21')](_0x3a852a)['then'](function(_0x36fd69){_0x4db5b2[_0x78fd('0x21')]=_0x36fd69;if(_0x2b38dc[_0x78fd('0x33')]['includeAll']){_0x14bd04[_0x78fd('0x45')]=[{'all':!![]}];}return db[_0x78fd('0x44')]['findAll'](_0x14bd04);})[_0x78fd('0x29')](function(_0x1a9a16){_0x4db5b2[_0x78fd('0x46')]=_0x1a9a16;return _0x4db5b2;})[_0x78fd('0x29')](respondWithFilteredResult(_0x4514c1,_0x14bd04))[_0x78fd('0x47')](handleError(_0x4514c1,null));};exports[_0x78fd('0x48')]=function(_0x413dd2,_0x17a052){var _0x3672d3={'raw':!![],'where':{'id':_0x413dd2[_0x78fd('0x49')]['id']}},_0xb3579f={};_0xb3579f[_0x78fd('0x31')]=_[_0x78fd('0x34')](db[_0x78fd('0x44')][_0x78fd('0x2e')]);_0xb3579f[_0x78fd('0x33')]=_[_0x78fd('0x34')](_0x413dd2[_0x78fd('0x33')]);_0xb3579f[_0x78fd('0x35')]=_['intersection'](_0xb3579f[_0x78fd('0x31')],_0xb3579f[_0x78fd('0x33')]);_0x3672d3[_0x78fd('0x39')]=_[_0x78fd('0x36')](_0xb3579f['model'],qs[_0x78fd('0x37')](_0x413dd2[_0x78fd('0x33')][_0x78fd('0x37')]));_0x3672d3['attributes']=_0x3672d3[_0x78fd('0x39')][_0x78fd('0x38')]?_0x3672d3[_0x78fd('0x39')]:_0xb3579f[_0x78fd('0x31')];if(_0x413dd2[_0x78fd('0x33')]['includeAll']){_0x3672d3['include']=[{'all':!![]}];}_0x3672d3=_[_0x78fd('0x41')]({},_0x3672d3,_0x413dd2[_0x78fd('0x43')]);return db['AnalyticTreeReport'][_0x78fd('0x4a')](_0x3672d3)[_0x78fd('0x29')](handleEntityNotFound(_0x17a052,null))[_0x78fd('0x29')](respondWithResult(_0x17a052,null))[_0x78fd('0x47')](handleError(_0x17a052,null));};exports[_0x78fd('0x4b')]=function(_0xed3e90,_0x40fce7){return db[_0x78fd('0x44')][_0x78fd('0x4b')](_0xed3e90[_0x78fd('0x4c')],{})['then'](respondWithResult(_0x40fce7,0xc9))[_0x78fd('0x47')](handleError(_0x40fce7,null));};exports['update']=function(_0x35fbf6,_0x5293ad){if(_0x35fbf6[_0x78fd('0x4c')]['id']){delete _0x35fbf6['body']['id'];}return db[_0x78fd('0x44')][_0x78fd('0x4a')]({'where':{'id':_0x35fbf6[_0x78fd('0x49')]['id']}})['then'](handleEntityNotFound(_0x5293ad,null))[_0x78fd('0x29')](saveUpdates(_0x35fbf6[_0x78fd('0x4c')],null))[_0x78fd('0x29')](respondWithResult(_0x5293ad,null))[_0x78fd('0x47')](handleError(_0x5293ad,null));};exports['destroy']=function(_0x54a1dc,_0x57fdbf){return db[_0x78fd('0x44')][_0x78fd('0x4a')]({'where':{'id':_0x54a1dc[_0x78fd('0x49')]['id']}})[_0x78fd('0x29')](handleEntityNotFound(_0x57fdbf,null))['then'](removeEntity(_0x57fdbf,null))[_0x78fd('0x47')](handleError(_0x57fdbf,null));};
\ No newline at end of file
index a6fe75e..61c8131 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc472=['AnalyticTreeReport','analytics_report_trees','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticTreeReport.attributes','exports','define'];(function(_0x2e6d10,_0x5131fc){var _0x1e2581=function(_0x557cea){while(--_0x557cea){_0x2e6d10['push'](_0x2e6d10['shift']());}};_0x1e2581(++_0x5131fc);}(_0xc472,0x1b4));var _0x2c47=function(_0x428774,_0x383962){_0x428774=_0x428774-0x0;var _0x53a01c=_0xc472[_0x428774];return _0x53a01c;};'use strict';var _=require(_0x2c47('0x0'));var util=require('util');var logger=require(_0x2c47('0x1'))(_0x2c47('0x2'));var moment=require(_0x2c47('0x3'));var BPromise=require(_0x2c47('0x4'));var rp=require(_0x2c47('0x5'));var fs=require('fs');var path=require(_0x2c47('0x6'));var rimraf=require(_0x2c47('0x7'));var config=require(_0x2c47('0x8'));var attributes=require(_0x2c47('0x9'));module[_0x2c47('0xa')]=function(_0x2c4e5b,_0x32d65d){return _0x2c4e5b[_0x2c47('0xb')](_0x2c47('0xc'),attributes,{'tableName':_0x2c47('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7688=['analytics_report_trees','lodash','util','../../config/logger','api','moment','path','../../config/environment','./analyticTreeReport.attributes','exports'];(function(_0x12fe24,_0x4061cd){var _0x309501=function(_0x2c91d8){while(--_0x2c91d8){_0x12fe24['push'](_0x12fe24['shift']());}};_0x309501(++_0x4061cd);}(_0x7688,0x173));var _0x8768=function(_0x10d697,_0xdb207c){_0x10d697=_0x10d697-0x0;var _0x13d86a=_0x7688[_0x10d697];return _0x13d86a;};'use strict';var _=require(_0x8768('0x0'));var util=require(_0x8768('0x1'));var logger=require(_0x8768('0x2'))(_0x8768('0x3'));var moment=require(_0x8768('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x8768('0x5'));var rimraf=require('rimraf');var config=require(_0x8768('0x6'));var attributes=require(_0x8768('0x7'));module[_0x8768('0x8')]=function(_0x260341,_0x4b5ed0){return _0x260341['define']('AnalyticTreeReport',attributes,{'tableName':_0x8768('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5ced29a..40be36d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['info','AnalyticTreeReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x7a54,0x106));var _0x47a5=function(_0x11d0d5,_0x1d49dc){_0x11d0d5=_0x11d0d5-0x0;var _0x1c9fea=_0x7a54[_0x11d0d5];return _0x1c9fea;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}
\ No newline at end of file
+var _0x7a54=['info','AnalyticTreeReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x7a54,0x106));var _0x47a5=function(_0x21241d,_0x4069c7){_0x21241d=_0x21241d-0x0;var _0x3c11d1=_0x7a54[_0x21241d];return _0x3c11d1;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}
\ No newline at end of file
index 09e2395..445e204 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d3d=['update','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','get','isAuthenticated','index','/:id','show','post','create','put'];(function(_0x5de823,_0x4cb43f){var _0x4e2eba=function(_0x16fc9f){while(--_0x16fc9f){_0x5de823['push'](_0x5de823['shift']());}};_0x4e2eba(++_0x4cb43f);}(_0x3d3d,0x1bc));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[_0xd3d3('0xa')](_0xd3d3('0xd'),auth['isAuthenticated'](),controller[_0xd3d3('0xe')]);router[_0xd3d3('0xf')]('/',auth['isAuthenticated'](),controller[_0xd3d3('0x10')]);router[_0xd3d3('0x11')]('/:id',auth[_0xd3d3('0xb')](),controller[_0xd3d3('0x12')]);router['delete'](_0xd3d3('0xd'),auth[_0xd3d3('0xb')](),controller[_0xd3d3('0x13')]);module[_0xd3d3('0x14')]=router;
\ No newline at end of file
+var _0x1cd8=['put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./analyticTreeReport.controller','isAuthenticated','index','/:id','show'];(function(_0xbd6685,_0x2dad17){var _0x50a71a=function(_0x8911b9){while(--_0x8911b9){_0xbd6685['push'](_0xbd6685['shift']());}};_0x50a71a(++_0x2dad17);}(_0x1cd8,0xcb));var _0x81cd=function(_0x4d7bd5,_0x196f54){_0x4d7bd5=_0x4d7bd5-0x0;var _0x1d37e6=_0x1cd8[_0x4d7bd5];return _0x1d37e6;};'use strict';var multer=require(_0x81cd('0x0'));var util=require(_0x81cd('0x1'));var path=require(_0x81cd('0x2'));var timeout=require(_0x81cd('0x3'));var express=require(_0x81cd('0x4'));var router=express['Router']();var fs_extra=require(_0x81cd('0x5'));var auth=require(_0x81cd('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x81cd('0x7'));var controller=require(_0x81cd('0x8'));router['get']('/',auth[_0x81cd('0x9')](),controller[_0x81cd('0xa')]);router['get'](_0x81cd('0xb'),auth[_0x81cd('0x9')](),controller[_0x81cd('0xc')]);router['post']('/',auth[_0x81cd('0x9')](),controller['create']);router[_0x81cd('0xd')](_0x81cd('0xb'),auth[_0x81cd('0x9')](),controller[_0x81cd('0xe')]);router[_0x81cd('0xf')](_0x81cd('0xb'),auth[_0x81cd('0x9')](),controller[_0x81cd('0x10')]);module[_0x81cd('0x11')]=router;
\ No newline at end of file
index 02e15ae..c413be4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb4b=['STRING','exports'];(function(_0x34226f,_0x1cd113){var _0x1bf7dc=function(_0x145ecd){while(--_0x145ecd){_0x34226f['push'](_0x34226f['shift']());}};_0x1bf7dc(++_0x1cd113);}(_0xdb4b,0xd7));var _0xbdb4=function(_0x17406e,_0x1049fd){_0x17406e=_0x17406e-0x0;var _0x2bfc5a=_0xdb4b[_0x17406e];return _0x2bfc5a;};'use strict';var Sequelize=require('sequelize');module[_0xbdb4('0x0')]={'name':{'type':Sequelize['STRING']},'basename':{'type':Sequelize[_0xbdb4('0x1')]},'type':{'type':Sequelize[_0xbdb4('0x1')]}};
\ No newline at end of file
+var _0x0328=['STRING','sequelize','exports'];(function(_0x302013,_0x49d2fd){var _0x1aa768=function(_0x935431){while(--_0x935431){_0x302013['push'](_0x302013['shift']());}};_0x1aa768(++_0x49d2fd);}(_0x0328,0x172));var _0x8032=function(_0x1e578b,_0x1db00c){_0x1e578b=_0x1e578b-0x0;var _0xd491d=_0x0328[_0x1e578b];return _0xd491d;};'use strict';var Sequelize=require(_0x8032('0x0'));module[_0x8032('0x1')]={'name':{'type':Sequelize[_0x8032('0x2')]},'basename':{'type':Sequelize[_0x8032('0x2')]},'type':{'type':Sequelize[_0x8032('0x2')]}};
\ No newline at end of file
index 5cf6bc3..48c942a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe259=['destroy','stack','name','index','map','Attachment','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','findAll','rows','keys','rawAttributes','include','find','catch','clone','params','get','omit','createdAt','updatedAt','body','create','file','originalname','basename','filename','mimetype','download','findOne','ChatOfflineMessageId','join','server/files/attachments/','offline-chat/','eml-format','zip-dir','request-promise','moment','bluebird','mustache','path','sox','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','Content-Range','save','then'];(function(_0x196119,_0x4108de){var _0xa3ddce=function(_0x2c618a){while(--_0x2c618a){_0x196119['push'](_0x196119['shift']());}};_0xa3ddce(++_0x4108de);}(_0xe259,0x18c));var _0x9e25=function(_0x1da009,_0x43bbb0){_0x1da009=_0x1da009-0x0;var _0x48c764=_0xe259[_0x1da009];return _0x48c764;};'use strict';var emlformat=require(_0x9e25('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9e25('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9e25('0x2'));var moment=require(_0x9e25('0x3'));var BPromise=require(_0x9e25('0x4'));var Mustache=require(_0x9e25('0x5'));var util=require('util');var path=require(_0x9e25('0x6'));var sox=require(_0x9e25('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9e25('0x8'));var squel=require('squel');var crypto=require(_0x9e25('0x9'));var jsforce=require(_0x9e25('0xa'));var deskjs=require(_0x9e25('0xb'));var toCsv=require(_0x9e25('0xc'));var querystring=require(_0x9e25('0xd'));var Papa=require(_0x9e25('0xe'));var Redis=require(_0x9e25('0xf'));var authService=require(_0x9e25('0x10'));var qs=require(_0x9e25('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9e25('0x12'));var logger=require(_0x9e25('0x13'))(_0x9e25('0x14'));var utils=require(_0x9e25('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x9e25('0x16'));var db=require(_0x9e25('0x17'))['db'];function respondWithStatusCode(_0x257c1b,_0x5bfadc){_0x5bfadc=_0x5bfadc||0xcc;return function(_0x3397ad){if(_0x3397ad){return _0x257c1b['sendStatus'](_0x5bfadc);}return _0x257c1b[_0x9e25('0x18')](_0x5bfadc)[_0x9e25('0x19')]();};}function respondWithResult(_0x15a25a,_0x4bff71){_0x4bff71=_0x4bff71||0xc8;return function(_0x4e4850){if(_0x4e4850){return _0x15a25a[_0x9e25('0x18')](_0x4bff71)[_0x9e25('0x1a')](_0x4e4850);}};}function respondWithFilteredResult(_0x11288d,_0x1d1d59){return function(_0x563c31){if(_0x563c31){var _0x16c439=typeof _0x1d1d59[_0x9e25('0x1b')]==='undefined'&&typeof _0x1d1d59[_0x9e25('0x1c')]===_0x9e25('0x1d');var _0x5cd831=_0x563c31[_0x9e25('0x1e')];var _0x4f916a=_0x16c439?0x0:_0x1d1d59[_0x9e25('0x1b')];var _0x12618a=_0x16c439?_0x563c31[_0x9e25('0x1e')]:_0x1d1d59['offset']+_0x1d1d59['limit'];var _0x4f26ee;if(_0x12618a>=_0x5cd831){_0x12618a=_0x5cd831;_0x4f26ee=0xc8;}else{_0x4f26ee=0xce;}_0x11288d[_0x9e25('0x18')](_0x4f26ee);return _0x11288d['set'](_0x9e25('0x1f'),_0x4f916a+'-'+_0x12618a+'/'+_0x5cd831)['json'](_0x563c31);}return null;};}function patchUpdates(_0x23579c){return function(_0x2ddd61){try{jsonpatch['apply'](_0x2ddd61,_0x23579c,!![]);}catch(_0x267d5b){return BPromise['reject'](_0x267d5b);}return _0x2ddd61[_0x9e25('0x20')]();};}function saveUpdates(_0x551cce,_0x59f9e4){return function(_0xbfecb6){if(_0xbfecb6){return _0xbfecb6['update'](_0x551cce)[_0x9e25('0x21')](function(_0x5f1ba5){return _0x5f1ba5;});}return null;};}function removeEntity(_0x2379a7,_0x57a05c){return function(_0x2b9e69){if(_0x2b9e69){return _0x2b9e69[_0x9e25('0x22')]()['then'](function(){_0x2379a7[_0x9e25('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x50db61,_0x4711ca){return function(_0x228424){if(!_0x228424){_0x50db61['sendStatus'](0x194);}return _0x228424;};}function handleError(_0x3c64fe,_0x1249ff){_0x1249ff=_0x1249ff||0x1f4;return function(_0x1dabe3){logger['error'](_0x1dabe3[_0x9e25('0x23')]);if(_0x1dabe3[_0x9e25('0x24')]){delete _0x1dabe3[_0x9e25('0x24')];}_0x3c64fe[_0x9e25('0x18')](_0x1249ff)['send'](_0x1dabe3);};}exports[_0x9e25('0x25')]=function(_0x2c9dd2,_0x23112b){var _0xe690f7={},_0xaabbc2={},_0x319250={'count':0x0,'rows':[]};var _0x5620ce=_[_0x9e25('0x26')](db[_0x9e25('0x27')]['rawAttributes'],function(_0x47538e){return{'name':_0x47538e['fieldName'],'type':_0x47538e[_0x9e25('0x28')][_0x9e25('0x29')]};});_0xaabbc2[_0x9e25('0x2a')]=_['map'](_0x5620ce,_0x9e25('0x24'));_0xaabbc2['query']=_['keys'](_0x2c9dd2[_0x9e25('0x2b')]);_0xaabbc2[_0x9e25('0x2c')]=_[_0x9e25('0x2d')](_0xaabbc2[_0x9e25('0x2a')],_0xaabbc2[_0x9e25('0x2b')]);_0xe690f7[_0x9e25('0x2e')]=_[_0x9e25('0x2d')](_0xaabbc2['model'],qs[_0x9e25('0x2f')](_0x2c9dd2[_0x9e25('0x2b')][_0x9e25('0x2f')]));_0xe690f7[_0x9e25('0x2e')]=_0xe690f7[_0x9e25('0x2e')][_0x9e25('0x30')]?_0xe690f7['attributes']:_0xaabbc2['model'];if(!_0x2c9dd2[_0x9e25('0x2b')][_0x9e25('0x31')](_0x9e25('0x32'))){_0xe690f7['limit']=qs[_0x9e25('0x1c')](_0x2c9dd2[_0x9e25('0x2b')][_0x9e25('0x1c')]);_0xe690f7[_0x9e25('0x1b')]=qs['offset'](_0x2c9dd2[_0x9e25('0x2b')][_0x9e25('0x1b')]);}_0xe690f7[_0x9e25('0x33')]=qs['sort'](_0x2c9dd2[_0x9e25('0x2b')][_0x9e25('0x34')]);_0xe690f7['where']=qs[_0x9e25('0x2c')](_[_0x9e25('0x35')](_0x2c9dd2[_0x9e25('0x2b')],_0xaabbc2[_0x9e25('0x2c')]),_0x5620ce);if(_0x2c9dd2[_0x9e25('0x2b')][_0x9e25('0x36')]){_0xe690f7[_0x9e25('0x37')]=_[_0x9e25('0x38')](_0xe690f7[_0x9e25('0x37')],{'$or':_[_0x9e25('0x26')](_0x5620ce,function(_0x2a3046){if(_0x2a3046[_0x9e25('0x28')]!==_0x9e25('0x39')){var _0x43aa39={};_0x43aa39[_0x2a3046[_0x9e25('0x24')]]={'$like':'%'+_0x2c9dd2[_0x9e25('0x2b')][_0x9e25('0x36')]+'%'};return _0x43aa39;}})});}_0xe690f7=_[_0x9e25('0x38')]({},_0xe690f7,_0x2c9dd2[_0x9e25('0x3a')]);var _0x51d556={'where':_0xe690f7[_0x9e25('0x37')]};return db[_0x9e25('0x27')][_0x9e25('0x1e')](_0x51d556)['then'](function(_0x17774d){_0x319250[_0x9e25('0x1e')]=_0x17774d;if(_0x2c9dd2[_0x9e25('0x2b')][_0x9e25('0x3b')]){_0xe690f7['include']=[{'all':!![]}];}return db[_0x9e25('0x27')][_0x9e25('0x3c')](_0xe690f7);})[_0x9e25('0x21')](function(_0x18d905){_0x319250[_0x9e25('0x3d')]=_0x18d905;return _0x319250;})[_0x9e25('0x21')](respondWithFilteredResult(_0x23112b,_0xe690f7))['catch'](handleError(_0x23112b,null));};exports['show']=function(_0x2c27c7,_0x365a6b){var _0x1b4710={'raw':!![],'where':{'id':_0x2c27c7['params']['id']}},_0x6f270c={};_0x6f270c[_0x9e25('0x2a')]=_[_0x9e25('0x3e')](db['Attachment'][_0x9e25('0x3f')]);_0x6f270c[_0x9e25('0x2b')]=_[_0x9e25('0x3e')](_0x2c27c7[_0x9e25('0x2b')]);_0x6f270c[_0x9e25('0x2c')]=_[_0x9e25('0x2d')](_0x6f270c[_0x9e25('0x2a')],_0x6f270c[_0x9e25('0x2b')]);_0x1b4710[_0x9e25('0x2e')]=_[_0x9e25('0x2d')](_0x6f270c[_0x9e25('0x2a')],qs[_0x9e25('0x2f')](_0x2c27c7[_0x9e25('0x2b')][_0x9e25('0x2f')]));_0x1b4710[_0x9e25('0x2e')]=_0x1b4710[_0x9e25('0x2e')][_0x9e25('0x30')]?_0x1b4710[_0x9e25('0x2e')]:_0x6f270c[_0x9e25('0x2a')];if(_0x2c27c7[_0x9e25('0x2b')]['includeAll']){_0x1b4710[_0x9e25('0x40')]=[{'all':!![]}];}_0x1b4710=_[_0x9e25('0x38')]({},_0x1b4710,_0x2c27c7[_0x9e25('0x3a')]);return db[_0x9e25('0x27')][_0x9e25('0x41')](_0x1b4710)['then'](handleEntityNotFound(_0x365a6b,null))[_0x9e25('0x21')](respondWithResult(_0x365a6b,null))[_0x9e25('0x42')](handleError(_0x365a6b,null));};exports[_0x9e25('0x43')]=function(_0x26ca38,_0x1d462a){var _0x57011d={'where':{'id':_0x26ca38[_0x9e25('0x44')]['id']}},_0x33ec5d={};_0x33ec5d[_0x9e25('0x2a')]=_['keys'](db['Attachment'][_0x9e25('0x3f')]);_0x57011d[_0x9e25('0x2e')]=_[_0x9e25('0x2d')](_0x33ec5d[_0x9e25('0x2a')],qs[_0x9e25('0x2f')](_0x26ca38[_0x9e25('0x2b')]['fields']));_0x57011d[_0x9e25('0x2e')]=_0x57011d[_0x9e25('0x2e')][_0x9e25('0x30')]?_0x57011d[_0x9e25('0x2e')]:_0x33ec5d['model'];if(_0x26ca38[_0x9e25('0x2b')][_0x9e25('0x3b')]){_0x57011d[_0x9e25('0x40')]=[{'all':!![]}];}_0x57011d=_[_0x9e25('0x38')]({},_0x57011d,_0x26ca38[_0x9e25('0x3a')]);return db[_0x9e25('0x27')]['find'](_0x57011d)['then'](handleEntityNotFound(_0x1d462a,null))[_0x9e25('0x21')](function(_0x53764c){if(_0x53764c){var _0x3a1baa=_0x53764c[_0x9e25('0x45')]({'plain':!![]});_0x3a1baa=qs[_0x9e25('0x46')](_0x3a1baa,['id',_0x9e25('0x47'),_0x9e25('0x48')]);_0x26ca38[_0x9e25('0x49')]=_['omit'](_0x26ca38[_0x9e25('0x49')],['id',_0x9e25('0x47'),_0x9e25('0x48')]);return db[_0x9e25('0x27')]['create'](_[_0x9e25('0x38')](_0x3a1baa,_0x26ca38['body']),{'include':_0x26ca38[_0x9e25('0x2b')]['includeAll']?[{'all':!![]}]:undefined});}})['then'](respondWithResult(_0x1d462a,0xc9))[_0x9e25('0x42')](handleError(_0x1d462a,null));};exports['update']=function(_0x557991,_0xd76c49){if(_0x557991[_0x9e25('0x49')]['id']){delete _0x557991[_0x9e25('0x49')]['id'];}return db[_0x9e25('0x27')][_0x9e25('0x41')]({'where':{'id':_0x557991[_0x9e25('0x44')]['id']}})['then'](handleEntityNotFound(_0xd76c49,null))[_0x9e25('0x21')](saveUpdates(_0x557991[_0x9e25('0x49')],null))[_0x9e25('0x21')](respondWithResult(_0xd76c49,null))[_0x9e25('0x42')](handleError(_0xd76c49,null));};exports[_0x9e25('0x22')]=function(_0x5c21bf,_0x490f00){return db[_0x9e25('0x27')][_0x9e25('0x41')]({'where':{'id':_0x5c21bf[_0x9e25('0x44')]['id']}})[_0x9e25('0x21')](handleEntityNotFound(_0x490f00,null))[_0x9e25('0x21')](removeEntity(_0x490f00,null))[_0x9e25('0x42')](handleError(_0x490f00,null));};exports[_0x9e25('0x4a')]=function(_0x15d484,_0x4a76b8,_0x203168){_0x15d484[_0x9e25('0x49')][_0x9e25('0x24')]=_0x15d484[_0x9e25('0x4b')][_0x9e25('0x4c')];_0x15d484[_0x9e25('0x49')][_0x9e25('0x4d')]=_0x15d484[_0x9e25('0x4b')][_0x9e25('0x4e')];_0x15d484[_0x9e25('0x49')][_0x9e25('0x28')]=_0x15d484[_0x9e25('0x4b')][_0x9e25('0x4f')];return db[_0x9e25('0x27')][_0x9e25('0x4a')](_0x15d484['body'])[_0x9e25('0x21')](respondWithResult(_0x4a76b8,0xc9))[_0x9e25('0x42')](handleError(_0x4a76b8,null));};exports[_0x9e25('0x50')]=function(_0x45d172,_0x1f30ea,_0x5b52d5){return db['Attachment'][_0x9e25('0x51')]({'where':{'id':_0x45d172['params']['id']},'raw':!![]})[_0x9e25('0x21')](handleEntityNotFound(_0x1f30ea,null))[_0x9e25('0x21')](function(_0xc1367){if(_0xc1367){var _0x382a39=_0xc1367[_0x9e25('0x52')]!==null;var _0x4a7185=path[_0x9e25('0x53')](config['root'],_0x9e25('0x54'));if(_0x382a39){_0x4a7185=path['join'](_0x4a7185,_0x9e25('0x55'));}var _0x2c2e70=path[_0x9e25('0x53')](_0x4a7185,_0xc1367[_0x9e25('0x4d')]);return _0x1f30ea['download'](_0x2c2e70);}})[_0x9e25('0x42')](handleError(_0x1f30ea,null));};
\ No newline at end of file
+var _0xff1d=['length','hasOwnProperty','sort','filters','pick','where','merge','VIRTUAL','filter','options','count','includeAll','include','catch','show','rawAttributes','keys','find','clone','get','createdAt','updatedAt','body','omit','update','create','file','originalname','basename','filename','mimetype','ChatOfflineMessageId','join','root','server/files/attachments/','download','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','set','apply','reject','save','then','destroy','stack','name','send','index','map','Attachment','type','key','model','query','intersection','attributes','fields'];(function(_0xa8e337,_0x518b8c){var _0xff00a3=function(_0xc83578){while(--_0xc83578){_0xa8e337['push'](_0xa8e337['shift']());}};_0xff00a3(++_0x518b8c);}(_0xff1d,0x1d2));var _0xdff1=function(_0x5252c8,_0x1adf14){_0x5252c8=_0x5252c8-0x0;var _0x480ac4=_0xff1d[_0x5252c8];return _0x480ac4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdff1('0x0'));var zipdir=require(_0xdff1('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xdff1('0x2'));var moment=require('moment');var BPromise=require(_0xdff1('0x3'));var Mustache=require(_0xdff1('0x4'));var util=require(_0xdff1('0x5'));var path=require(_0xdff1('0x6'));var sox=require(_0xdff1('0x7'));var csv=require(_0xdff1('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdff1('0x9'));var _=require(_0xdff1('0xa'));var squel=require(_0xdff1('0xb'));var crypto=require(_0xdff1('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xdff1('0xd'));var toCsv=require(_0xdff1('0x8'));var querystring=require(_0xdff1('0xe'));var Papa=require(_0xdff1('0xf'));var Redis=require(_0xdff1('0x10'));var authService=require(_0xdff1('0x11'));var qs=require(_0xdff1('0x12'));var as=require(_0xdff1('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xdff1('0x14'))(_0xdff1('0x15'));var utils=require(_0xdff1('0x16'));var config=require(_0xdff1('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x198f1c,_0x53f4e6){_0x53f4e6=_0x53f4e6||0xcc;return function(_0x5c0a33){if(_0x5c0a33){return _0x198f1c[_0xdff1('0x18')](_0x53f4e6);}return _0x198f1c[_0xdff1('0x19')](_0x53f4e6)[_0xdff1('0x1a')]();};}function respondWithResult(_0x5185cf,_0x3bf51c){_0x3bf51c=_0x3bf51c||0xc8;return function(_0x279a18){if(_0x279a18){return _0x5185cf[_0xdff1('0x19')](_0x3bf51c)[_0xdff1('0x1b')](_0x279a18);}};}function respondWithFilteredResult(_0x4e9398,_0x6216cd){return function(_0x35d6d0){if(_0x35d6d0){var _0xc5e093=typeof _0x6216cd[_0xdff1('0x1c')]===_0xdff1('0x1d')&&typeof _0x6216cd[_0xdff1('0x1e')]===_0xdff1('0x1d');var _0x3a77b9=_0x35d6d0['count'];var _0x2afc88=_0xc5e093?0x0:_0x6216cd['offset'];var _0x457809=_0xc5e093?_0x35d6d0['count']:_0x6216cd['offset']+_0x6216cd[_0xdff1('0x1e')];var _0x107581;if(_0x457809>=_0x3a77b9){_0x457809=_0x3a77b9;_0x107581=0xc8;}else{_0x107581=0xce;}_0x4e9398[_0xdff1('0x19')](_0x107581);return _0x4e9398[_0xdff1('0x1f')]('Content-Range',_0x2afc88+'-'+_0x457809+'/'+_0x3a77b9)[_0xdff1('0x1b')](_0x35d6d0);}return null;};}function patchUpdates(_0x18eb6e){return function(_0x27773a){try{jsonpatch[_0xdff1('0x20')](_0x27773a,_0x18eb6e,!![]);}catch(_0x14c8f1){return BPromise[_0xdff1('0x21')](_0x14c8f1);}return _0x27773a[_0xdff1('0x22')]();};}function saveUpdates(_0x4418f2,_0x3ff4c6){return function(_0x26a1ab){if(_0x26a1ab){return _0x26a1ab['update'](_0x4418f2)[_0xdff1('0x23')](function(_0x1f52f4){return _0x1f52f4;});}return null;};}function removeEntity(_0x2c4ea2,_0x179923){return function(_0x5a53f1){if(_0x5a53f1){return _0x5a53f1[_0xdff1('0x24')]()[_0xdff1('0x23')](function(){_0x2c4ea2[_0xdff1('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2c6dad,_0x27ca6f){return function(_0x83054c){if(!_0x83054c){_0x2c6dad[_0xdff1('0x18')](0x194);}return _0x83054c;};}function handleError(_0x28205f,_0xf56cca){_0xf56cca=_0xf56cca||0x1f4;return function(_0x54fe84){logger['error'](_0x54fe84[_0xdff1('0x25')]);if(_0x54fe84[_0xdff1('0x26')]){delete _0x54fe84[_0xdff1('0x26')];}_0x28205f[_0xdff1('0x19')](_0xf56cca)[_0xdff1('0x27')](_0x54fe84);};}exports[_0xdff1('0x28')]=function(_0x40853f,_0x46758e){var _0x31cc63={},_0x353099={},_0xaeb334={'count':0x0,'rows':[]};var _0x13d12c=_[_0xdff1('0x29')](db[_0xdff1('0x2a')]['rawAttributes'],function(_0x589370){return{'name':_0x589370['fieldName'],'type':_0x589370[_0xdff1('0x2b')][_0xdff1('0x2c')]};});_0x353099[_0xdff1('0x2d')]=_[_0xdff1('0x29')](_0x13d12c,_0xdff1('0x26'));_0x353099[_0xdff1('0x2e')]=_['keys'](_0x40853f['query']);_0x353099['filters']=_[_0xdff1('0x2f')](_0x353099[_0xdff1('0x2d')],_0x353099[_0xdff1('0x2e')]);_0x31cc63[_0xdff1('0x30')]=_[_0xdff1('0x2f')](_0x353099['model'],qs[_0xdff1('0x31')](_0x40853f[_0xdff1('0x2e')][_0xdff1('0x31')]));_0x31cc63[_0xdff1('0x30')]=_0x31cc63[_0xdff1('0x30')][_0xdff1('0x32')]?_0x31cc63['attributes']:_0x353099[_0xdff1('0x2d')];if(!_0x40853f[_0xdff1('0x2e')][_0xdff1('0x33')]('nolimit')){_0x31cc63[_0xdff1('0x1e')]=qs[_0xdff1('0x1e')](_0x40853f[_0xdff1('0x2e')][_0xdff1('0x1e')]);_0x31cc63[_0xdff1('0x1c')]=qs[_0xdff1('0x1c')](_0x40853f[_0xdff1('0x2e')]['offset']);}_0x31cc63['order']=qs[_0xdff1('0x34')](_0x40853f[_0xdff1('0x2e')]['sort']);_0x31cc63['where']=qs[_0xdff1('0x35')](_[_0xdff1('0x36')](_0x40853f[_0xdff1('0x2e')],_0x353099[_0xdff1('0x35')]),_0x13d12c);if(_0x40853f[_0xdff1('0x2e')]['filter']){_0x31cc63[_0xdff1('0x37')]=_[_0xdff1('0x38')](_0x31cc63[_0xdff1('0x37')],{'$or':_[_0xdff1('0x29')](_0x13d12c,function(_0x1183f7){if(_0x1183f7[_0xdff1('0x2b')]!==_0xdff1('0x39')){var _0x464087={};_0x464087[_0x1183f7[_0xdff1('0x26')]]={'$like':'%'+_0x40853f[_0xdff1('0x2e')][_0xdff1('0x3a')]+'%'};return _0x464087;}})});}_0x31cc63=_[_0xdff1('0x38')]({},_0x31cc63,_0x40853f[_0xdff1('0x3b')]);var _0x508b44={'where':_0x31cc63[_0xdff1('0x37')]};return db[_0xdff1('0x2a')][_0xdff1('0x3c')](_0x508b44)[_0xdff1('0x23')](function(_0x40d10e){_0xaeb334[_0xdff1('0x3c')]=_0x40d10e;if(_0x40853f['query'][_0xdff1('0x3d')]){_0x31cc63[_0xdff1('0x3e')]=[{'all':!![]}];}return db['Attachment']['findAll'](_0x31cc63);})['then'](function(_0x137c7e){_0xaeb334['rows']=_0x137c7e;return _0xaeb334;})[_0xdff1('0x23')](respondWithFilteredResult(_0x46758e,_0x31cc63))[_0xdff1('0x3f')](handleError(_0x46758e,null));};exports[_0xdff1('0x40')]=function(_0x10a461,_0x456ef6){var _0x81f69f={'raw':!![],'where':{'id':_0x10a461['params']['id']}},_0x46164c={};_0x46164c[_0xdff1('0x2d')]=_['keys'](db[_0xdff1('0x2a')][_0xdff1('0x41')]);_0x46164c[_0xdff1('0x2e')]=_[_0xdff1('0x42')](_0x10a461['query']);_0x46164c[_0xdff1('0x35')]=_[_0xdff1('0x2f')](_0x46164c[_0xdff1('0x2d')],_0x46164c['query']);_0x81f69f[_0xdff1('0x30')]=_[_0xdff1('0x2f')](_0x46164c[_0xdff1('0x2d')],qs[_0xdff1('0x31')](_0x10a461['query'][_0xdff1('0x31')]));_0x81f69f[_0xdff1('0x30')]=_0x81f69f[_0xdff1('0x30')][_0xdff1('0x32')]?_0x81f69f['attributes']:_0x46164c[_0xdff1('0x2d')];if(_0x10a461[_0xdff1('0x2e')][_0xdff1('0x3d')]){_0x81f69f['include']=[{'all':!![]}];}_0x81f69f=_['merge']({},_0x81f69f,_0x10a461['options']);return db[_0xdff1('0x2a')][_0xdff1('0x43')](_0x81f69f)['then'](handleEntityNotFound(_0x456ef6,null))['then'](respondWithResult(_0x456ef6,null))[_0xdff1('0x3f')](handleError(_0x456ef6,null));};exports[_0xdff1('0x44')]=function(_0x5609a4,_0x201d50){var _0x4990f0={'where':{'id':_0x5609a4['params']['id']}},_0x253593={};_0x253593[_0xdff1('0x2d')]=_[_0xdff1('0x42')](db[_0xdff1('0x2a')][_0xdff1('0x41')]);_0x4990f0[_0xdff1('0x30')]=_[_0xdff1('0x2f')](_0x253593['model'],qs[_0xdff1('0x31')](_0x5609a4[_0xdff1('0x2e')]['fields']));_0x4990f0[_0xdff1('0x30')]=_0x4990f0[_0xdff1('0x30')][_0xdff1('0x32')]?_0x4990f0[_0xdff1('0x30')]:_0x253593['model'];if(_0x5609a4[_0xdff1('0x2e')][_0xdff1('0x3d')]){_0x4990f0['include']=[{'all':!![]}];}_0x4990f0=_['merge']({},_0x4990f0,_0x5609a4[_0xdff1('0x3b')]);return db[_0xdff1('0x2a')][_0xdff1('0x43')](_0x4990f0)[_0xdff1('0x23')](handleEntityNotFound(_0x201d50,null))[_0xdff1('0x23')](function(_0x41cd8e){if(_0x41cd8e){var _0x19872f=_0x41cd8e[_0xdff1('0x45')]({'plain':!![]});_0x19872f=qs['omit'](_0x19872f,['id',_0xdff1('0x46'),_0xdff1('0x47')]);_0x5609a4[_0xdff1('0x48')]=_[_0xdff1('0x49')](_0x5609a4['body'],['id',_0xdff1('0x46'),'updatedAt']);return db['Attachment']['create'](_['merge'](_0x19872f,_0x5609a4['body']),{'include':_0x5609a4[_0xdff1('0x2e')][_0xdff1('0x3d')]?[{'all':!![]}]:undefined});}})[_0xdff1('0x23')](respondWithResult(_0x201d50,0xc9))['catch'](handleError(_0x201d50,null));};exports[_0xdff1('0x4a')]=function(_0x4539bb,_0x497635){if(_0x4539bb[_0xdff1('0x48')]['id']){delete _0x4539bb[_0xdff1('0x48')]['id'];}return db[_0xdff1('0x2a')][_0xdff1('0x43')]({'where':{'id':_0x4539bb['params']['id']}})[_0xdff1('0x23')](handleEntityNotFound(_0x497635,null))['then'](saveUpdates(_0x4539bb['body'],null))['then'](respondWithResult(_0x497635,null))['catch'](handleError(_0x497635,null));};exports[_0xdff1('0x24')]=function(_0x593d85,_0x23b7d6){return db[_0xdff1('0x2a')][_0xdff1('0x43')]({'where':{'id':_0x593d85['params']['id']}})[_0xdff1('0x23')](handleEntityNotFound(_0x23b7d6,null))['then'](removeEntity(_0x23b7d6,null))[_0xdff1('0x3f')](handleError(_0x23b7d6,null));};exports[_0xdff1('0x4b')]=function(_0x50c592,_0x5b67c6,_0x512999){_0x50c592[_0xdff1('0x48')][_0xdff1('0x26')]=_0x50c592[_0xdff1('0x4c')][_0xdff1('0x4d')];_0x50c592[_0xdff1('0x48')][_0xdff1('0x4e')]=_0x50c592[_0xdff1('0x4c')][_0xdff1('0x4f')];_0x50c592[_0xdff1('0x48')]['type']=_0x50c592[_0xdff1('0x4c')][_0xdff1('0x50')];return db['Attachment'][_0xdff1('0x4b')](_0x50c592[_0xdff1('0x48')])[_0xdff1('0x23')](respondWithResult(_0x5b67c6,0xc9))[_0xdff1('0x3f')](handleError(_0x5b67c6,null));};exports['download']=function(_0x124354,_0x106816,_0x241e77){return db[_0xdff1('0x2a')]['findOne']({'where':{'id':_0x124354['params']['id']},'raw':!![]})[_0xdff1('0x23')](handleEntityNotFound(_0x106816,null))['then'](function(_0x58344d){if(_0x58344d){var _0x3794fb=_0x58344d[_0xdff1('0x51')]!==null;var _0x4ed1d6=path[_0xdff1('0x52')](config[_0xdff1('0x53')],_0xdff1('0x54'));if(_0x3794fb){_0x4ed1d6=path[_0xdff1('0x52')](_0x4ed1d6,'offline-chat/');}var _0x352db5=path['join'](_0x4ed1d6,_0x58344d[_0xdff1('0x4e')]);return _0x106816[_0xdff1('0x55')](_0x352db5);}})[_0xdff1('0x3f')](handleError(_0x106816,null));};
\ No newline at end of file
index 25a0c28..1e15eec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2909=['../../config/logger','api','bluebird','request-promise','../../config/environment','./attachment.attributes','exports','define','attachments','lodash'];(function(_0x496139,_0x4b7517){var _0x4a7d3e=function(_0x9637ba){while(--_0x9637ba){_0x496139['push'](_0x496139['shift']());}};_0x4a7d3e(++_0x4b7517);}(_0x2909,0x1ad));var _0x9290=function(_0xcdf363,_0x5223c5){_0xcdf363=_0xcdf363-0x0;var _0x2377f4=_0x2909[_0xcdf363];return _0x2377f4;};'use strict';var _=require(_0x9290('0x0'));var util=require('util');var logger=require(_0x9290('0x1'))(_0x9290('0x2'));var moment=require('moment');var BPromise=require(_0x9290('0x3'));var rp=require(_0x9290('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x9290('0x5'));var attributes=require(_0x9290('0x6'));module[_0x9290('0x7')]=function(_0x3c2e0b,_0x388c9f){return _0x3c2e0b[_0x9290('0x8')]('Attachment',attributes,{'tableName':_0x9290('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xeda3=['path','../../config/environment','./attachment.attributes','exports','define','Attachment','attachments','lodash','util','../../config/logger','api','request-promise'];(function(_0xf26d40,_0x2f4f46){var _0x50b68c=function(_0x10aa58){while(--_0x10aa58){_0xf26d40['push'](_0xf26d40['shift']());}};_0x50b68c(++_0x2f4f46);}(_0xeda3,0x8b));var _0x3eda=function(_0x29f59b,_0x163fae){_0x29f59b=_0x29f59b-0x0;var _0xb18960=_0xeda3[_0x29f59b];return _0xb18960;};'use strict';var _=require(_0x3eda('0x0'));var util=require(_0x3eda('0x1'));var logger=require(_0x3eda('0x2'))(_0x3eda('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x3eda('0x4'));var fs=require('fs');var path=require(_0x3eda('0x5'));var rimraf=require('rimraf');var config=require(_0x3eda('0x6'));var attributes=require(_0x3eda('0x7'));module[_0x3eda('0x8')]=function(_0x1957bf,_0x1ad3ac){return _0x1957bf[_0x3eda('0x9')](_0x3eda('0xa'),attributes,{'tableName':_0x3eda('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7391e4d..4164bb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31c2=['CreateAttachment','stringify','lodash','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Attachment,\x20%s,\x20%s','request\x20sent','debug','Attachment,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','Attachment','create','body','options','raw'];(function(_0x12d013,_0x286e4c){var _0x54220c=function(_0x31d518){while(--_0x31d518){_0x12d013['push'](_0x12d013['shift']());}};_0x54220c(++_0x286e4c);}(_0x31c2,0x98));var _0x231c=function(_0x3c1a96,_0x1c9c14){_0x3c1a96=_0x3c1a96-0x0;var _0x18f552=_0x31c2[_0x3c1a96];return _0x18f552;};'use strict';var _=require(_0x231c('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x231c('0x1'));var rs=require(_0x231c('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x231c('0x3'))['db'];var utils=require(_0x231c('0x4'));var logger=require(_0x231c('0x5'))(_0x231c('0x6'));var config=require(_0x231c('0x7'));var jayson=require(_0x231c('0x8'));var client=jayson[_0x231c('0x9')][_0x231c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5afc76,_0x1e3997,_0x4fd8b8){return new BPromise(function(_0x3dfccb,_0x396da8){return client[_0x231c('0xb')](_0x5afc76,_0x4fd8b8)[_0x231c('0xc')](function(_0x4cd3b8){logger[_0x231c('0xd')](_0x231c('0xe'),_0x1e3997,_0x231c('0xf'));logger[_0x231c('0x10')](_0x231c('0x11'),_0x1e3997,_0x231c('0xf'),JSON['stringify'](_0x4cd3b8));if(_0x4cd3b8['error']){if(_0x4cd3b8['error'][_0x231c('0x12')]===0x1f4){logger[_0x231c('0x13')](_0x231c('0xe'),_0x1e3997,_0x4cd3b8[_0x231c('0x13')][_0x231c('0x14')]);return _0x396da8(_0x4cd3b8[_0x231c('0x13')][_0x231c('0x14')]);}logger[_0x231c('0x13')](_0x231c('0xe'),_0x1e3997,_0x4cd3b8[_0x231c('0x13')][_0x231c('0x14')]);return _0x3dfccb(_0x4cd3b8[_0x231c('0x13')][_0x231c('0x14')]);}else{logger[_0x231c('0xd')]('Attachment,\x20%s,\x20%s',_0x1e3997,_0x231c('0xf'));_0x3dfccb(_0x4cd3b8[_0x231c('0x15')][_0x231c('0x14')]);}})[_0x231c('0x16')](function(_0x40f4f6){logger['error'](_0x231c('0xe'),_0x1e3997,_0x40f4f6);_0x396da8(_0x40f4f6);});});}exports['CreateAttachment']=function(_0x1d48e3){var _0x59282c=this;return new Promise(function(_0x286148,_0x34f391){return db[_0x231c('0x17')][_0x231c('0x18')](_0x1d48e3[_0x231c('0x19')],{'raw':_0x1d48e3[_0x231c('0x1a')]?_0x1d48e3[_0x231c('0x1a')][_0x231c('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x29a94){logger[_0x231c('0xd')](_0x231c('0x1c'),_0x1d48e3);logger['debug']('CreateAttachment',_0x1d48e3,JSON[_0x231c('0x1d')](_0x29a94));_0x286148(_0x29a94);})[_0x231c('0x16')](function(_0x3bd9ed){logger['error'](_0x231c('0x1c'),_0x3bd9ed['message'],_0x1d48e3);_0x34f391(_0x59282c[_0x231c('0x13')](0x1f4,_0x3bd9ed[_0x231c('0x14')]));});});};
\ No newline at end of file
+var _0x31c2=['CreateAttachment','stringify','lodash','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Attachment,\x20%s,\x20%s','request\x20sent','debug','Attachment,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','Attachment','create','body','options','raw'];(function(_0x2a4095,_0x13f4f0){var _0x52eeab=function(_0x3950dd){while(--_0x3950dd){_0x2a4095['push'](_0x2a4095['shift']());}};_0x52eeab(++_0x13f4f0);}(_0x31c2,0x98));var _0x231c=function(_0xb2f5d2,_0x98f388){_0xb2f5d2=_0xb2f5d2-0x0;var _0x3488fe=_0x31c2[_0xb2f5d2];return _0x3488fe;};'use strict';var _=require(_0x231c('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x231c('0x1'));var rs=require(_0x231c('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x231c('0x3'))['db'];var utils=require(_0x231c('0x4'));var logger=require(_0x231c('0x5'))(_0x231c('0x6'));var config=require(_0x231c('0x7'));var jayson=require(_0x231c('0x8'));var client=jayson[_0x231c('0x9')][_0x231c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5afc76,_0x1e3997,_0x4fd8b8){return new BPromise(function(_0x3dfccb,_0x396da8){return client[_0x231c('0xb')](_0x5afc76,_0x4fd8b8)[_0x231c('0xc')](function(_0x4cd3b8){logger[_0x231c('0xd')](_0x231c('0xe'),_0x1e3997,_0x231c('0xf'));logger[_0x231c('0x10')](_0x231c('0x11'),_0x1e3997,_0x231c('0xf'),JSON['stringify'](_0x4cd3b8));if(_0x4cd3b8['error']){if(_0x4cd3b8['error'][_0x231c('0x12')]===0x1f4){logger[_0x231c('0x13')](_0x231c('0xe'),_0x1e3997,_0x4cd3b8[_0x231c('0x13')][_0x231c('0x14')]);return _0x396da8(_0x4cd3b8[_0x231c('0x13')][_0x231c('0x14')]);}logger[_0x231c('0x13')](_0x231c('0xe'),_0x1e3997,_0x4cd3b8[_0x231c('0x13')][_0x231c('0x14')]);return _0x3dfccb(_0x4cd3b8[_0x231c('0x13')][_0x231c('0x14')]);}else{logger[_0x231c('0xd')]('Attachment,\x20%s,\x20%s',_0x1e3997,_0x231c('0xf'));_0x3dfccb(_0x4cd3b8[_0x231c('0x15')][_0x231c('0x14')]);}})[_0x231c('0x16')](function(_0x40f4f6){logger['error'](_0x231c('0xe'),_0x1e3997,_0x40f4f6);_0x396da8(_0x40f4f6);});});}exports['CreateAttachment']=function(_0x1d48e3){var _0x59282c=this;return new Promise(function(_0x286148,_0x34f391){return db[_0x231c('0x17')][_0x231c('0x18')](_0x1d48e3[_0x231c('0x19')],{'raw':_0x1d48e3[_0x231c('0x1a')]?_0x1d48e3[_0x231c('0x1a')][_0x231c('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x29a94){logger[_0x231c('0xd')](_0x231c('0x1c'),_0x1d48e3);logger['debug']('CreateAttachment',_0x1d48e3,JSON[_0x231c('0x1d')](_0x29a94));_0x286148(_0x29a94);})[_0x231c('0x16')](function(_0x3bd9ed){logger['error'](_0x231c('0x1c'),_0x3bd9ed['message'],_0x1d48e3);_0x34f391(_0x59282c[_0x231c('0x13')](0x1f4,_0x3bd9ed[_0x231c('0x14')]));});});};
\ No newline at end of file
index 7d333e7..5cc3312 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['./attachment.controller','get','isAuthenticated','index','/:id','show','download','/:id/clone','clone','root','server/files/attachments/','now','post','single','file','create','put','update','delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x16ffb8,_0x1475f5){var _0x7a2f42=function(_0x26d77e){while(--_0x26d77e){_0x16ffb8['push'](_0x16ffb8['shift']());}};_0x7a2f42(++_0x1475f5);}(_0x2032,0xd9));var _0x2203=function(_0x26f715,_0x9ea6db){_0x26f715=_0x26f715-0x0;var _0x3633a0=_0x2032[_0x26f715];return _0x3633a0;};'use strict';var multer=require('multer');var util=require(_0x2203('0x0'));var path=require(_0x2203('0x1'));var timeout=require(_0x2203('0x2'));var express=require('express');var router=express[_0x2203('0x3')]();var fs_extra=require(_0x2203('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x2203('0x5'));var config=require(_0x2203('0x6'));var controller=require(_0x2203('0x7'));router[_0x2203('0x8')]('/',auth[_0x2203('0x9')](),controller[_0x2203('0xa')]);router[_0x2203('0x8')](_0x2203('0xb'),auth[_0x2203('0x9')](),controller[_0x2203('0xc')]);router[_0x2203('0x8')]('/:id/download',auth['isAuthenticated'](),controller[_0x2203('0xd')]);router['post'](_0x2203('0xe'),auth[_0x2203('0x9')](),controller[_0x2203('0xf')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x849049,_0x4a6832,_0x3f690a){_0x3f690a(null,path['join'](config[_0x2203('0x10')],_0x2203('0x11')));},'filename':function(_0x4b9376,_0x583bc7,_0x585c76){_0x585c76(null,util['format']('%s-%s',Date[_0x2203('0x12')](),_0x583bc7['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x2203('0x13')]('/',upload[_0x2203('0x14')](_0x2203('0x15')),controller[_0x2203('0x16')]);router[_0x2203('0x17')](_0x2203('0xb'),auth[_0x2203('0x9')](),controller[_0x2203('0x18')]);router[_0x2203('0x19')](_0x2203('0xb'),auth['isAuthenticated'](),controller[_0x2203('0x1a')]);module[_0x2203('0x1b')]=router;
\ No newline at end of file
+var _0x2032=['./attachment.controller','get','isAuthenticated','index','/:id','show','download','/:id/clone','clone','root','server/files/attachments/','now','post','single','file','create','put','update','delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x469414,_0x303535){var _0x495fde=function(_0xd58ad0){while(--_0xd58ad0){_0x469414['push'](_0x469414['shift']());}};_0x495fde(++_0x303535);}(_0x2032,0xd9));var _0x2203=function(_0x4e7603,_0x42f87d){_0x4e7603=_0x4e7603-0x0;var _0x413b08=_0x2032[_0x4e7603];return _0x413b08;};'use strict';var multer=require('multer');var util=require(_0x2203('0x0'));var path=require(_0x2203('0x1'));var timeout=require(_0x2203('0x2'));var express=require('express');var router=express[_0x2203('0x3')]();var fs_extra=require(_0x2203('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x2203('0x5'));var config=require(_0x2203('0x6'));var controller=require(_0x2203('0x7'));router[_0x2203('0x8')]('/',auth[_0x2203('0x9')](),controller[_0x2203('0xa')]);router[_0x2203('0x8')](_0x2203('0xb'),auth[_0x2203('0x9')](),controller[_0x2203('0xc')]);router[_0x2203('0x8')]('/:id/download',auth['isAuthenticated'](),controller[_0x2203('0xd')]);router['post'](_0x2203('0xe'),auth[_0x2203('0x9')](),controller[_0x2203('0xf')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x849049,_0x4a6832,_0x3f690a){_0x3f690a(null,path['join'](config[_0x2203('0x10')],_0x2203('0x11')));},'filename':function(_0x4b9376,_0x583bc7,_0x585c76){_0x585c76(null,util['format']('%s-%s',Date[_0x2203('0x12')](),_0x583bc7['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x2203('0x13')]('/',upload[_0x2203('0x14')](_0x2203('0x15')),controller[_0x2203('0x16')]);router[_0x2203('0x17')](_0x2203('0xb'),auth[_0x2203('0x9')](),controller[_0x2203('0x18')]);router[_0x2203('0x19')](_0x2203('0xb'),auth['isAuthenticated'](),controller[_0x2203('0x1a')]);module[_0x2203('0x1b')]=router;
\ No newline at end of file
index 2d2d5b6..cb2809b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82fa=['admin','user','agent','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blockDuration','blocked','add','minutes','clearBlockUser','lodash','passport-google-oauth20','Strategy','../../mysqldb','../../config/environment','../../components/auth/service','../../config/utils','login','authenticate','/login','email','callback','google','clientID','clientSecret','secret','callbackURL','Setting','findOne','allowedLoginAttempts','then','User','emails','value'];(function(_0x52c907,_0x5bb5cb){var _0x568c5a=function(_0x58580e){while(--_0x58580e){_0x52c907['push'](_0x52c907['shift']());}};_0x568c5a(++_0x5bb5cb);}(_0x82fa,0x11a));var _0xa82f=function(_0xda3a40,_0x5cf8c1){_0xda3a40=_0xda3a40-0x0;var _0x1e81f1=_0x82fa[_0xda3a40];return _0x1e81f1;};'use strict';var _=require(_0xa82f('0x0'));var passport=require('passport');var GoogleStrategy=require(_0xa82f('0x1'))[_0xa82f('0x2')];var moment=require('moment');var db=require(_0xa82f('0x3'))['db'];var config=require(_0xa82f('0x4'));var signToken=require(_0xa82f('0x5'))['signToken'];var utils=require(_0xa82f('0x6'));exports[_0xa82f('0x7')]=passport[_0xa82f('0x8')]('google',{'failureRedirect':_0xa82f('0x9'),'scope':['profile',_0xa82f('0xa')],'session':![]});exports[_0xa82f('0xb')]=passport[_0xa82f('0x8')](_0xa82f('0xc'),{'failureRedirect':_0xa82f('0x9'),'session':![]});passport['use'](new GoogleStrategy({'clientID':config[_0xa82f('0xc')]?config['google'][_0xa82f('0xd')]:'id','clientSecret':config[_0xa82f('0xc')]?config['google'][_0xa82f('0xe')]:_0xa82f('0xf'),'callbackURL':config[_0xa82f('0xc')]?config[_0xa82f('0xc')][_0xa82f('0x10')]:''},function(_0x437bc2,_0x11de35,_0x3ae661,_0x3b078a){var _0x4f39e7,_0x2beee7;return db[_0xa82f('0x11')][_0xa82f('0x12')]({'where':{'id':0x1},'attributes':[_0xa82f('0x13'),'blockDuration'],'raw':!![]})[_0xa82f('0x14')](function(_0x536825){_0x4f39e7=_0x536825;return db[_0xa82f('0x15')]['find']({'where':{'email':_['map'](_0x3ae661[_0xa82f('0x16')],_0xa82f('0x17')),'role':{'$or':[_0xa82f('0x18'),_0xa82f('0x19'),_0xa82f('0x1a')]}}});})['then'](function(_0x286d48){_0x2beee7=_0x286d48;if(_0x2beee7){if(_0x2beee7[_0xa82f('0x1b')]){return _0x3b078a(_0xa82f('0x1c'));}else if(_0x4f39e7[_0xa82f('0x1d')]>0x0){if(_0x2beee7[_0xa82f('0x1e')]){if(moment(_0x2beee7['blockedAt'])[_0xa82f('0x1f')](_0x4f39e7[_0xa82f('0x1d')],_0xa82f('0x20'))>moment()){return _0x3b078a('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{return utils[_0xa82f('0x21')](_0x2beee7,0x0,![],null)[_0xa82f('0x14')](function(){return utils['getLicense'](_0x2beee7);})['then'](function(){return _0x3b078a(null,_0x2beee7);});}}else{return utils['getLicense'](_0x2beee7)[_0xa82f('0x14')](function(){return _0x3b078a(null,_0x2beee7);});}}else{return utils['getLicense'](_0x2beee7)[_0xa82f('0x14')](function(){return _0x3b078a(null,_0x2beee7);});}}return _0x3b078a(_0xa82f('0x1c'));})['catch'](function(_0x581d5f){_0x3b078a(_0x581d5f);});}));
\ No newline at end of file
+var _0x3861=['authenticate','google','/login','callback','use','clientID','callbackURL','Setting','findOne','allowedLoginAttempts','blockDuration','then','find','map','emails','admin','user','agent','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blockedAt','add','minutes','clearBlockUser','getLicense','catch','lodash','passport-google-oauth20','Strategy','../../mysqldb','../../config/environment','../../components/auth/service','signToken','login'];(function(_0x463376,_0x13871c){var _0x336ccd=function(_0x33afd2){while(--_0x33afd2){_0x463376['push'](_0x463376['shift']());}};_0x336ccd(++_0x13871c);}(_0x3861,0x80));var _0x1386=function(_0x434e47,_0x3ac472){_0x434e47=_0x434e47-0x0;var _0x46febc=_0x3861[_0x434e47];return _0x46febc;};'use strict';var _=require(_0x1386('0x0'));var passport=require('passport');var GoogleStrategy=require(_0x1386('0x1'))[_0x1386('0x2')];var moment=require('moment');var db=require(_0x1386('0x3'))['db'];var config=require(_0x1386('0x4'));var signToken=require(_0x1386('0x5'))[_0x1386('0x6')];var utils=require('../../config/utils');exports[_0x1386('0x7')]=passport[_0x1386('0x8')](_0x1386('0x9'),{'failureRedirect':_0x1386('0xa'),'scope':['profile','email'],'session':![]});exports[_0x1386('0xb')]=passport[_0x1386('0x8')]('google',{'failureRedirect':_0x1386('0xa'),'session':![]});passport[_0x1386('0xc')](new GoogleStrategy({'clientID':config[_0x1386('0x9')]?config['google'][_0x1386('0xd')]:'id','clientSecret':config['google']?config[_0x1386('0x9')]['clientSecret']:'secret','callbackURL':config[_0x1386('0x9')]?config['google'][_0x1386('0xe')]:''},function(_0x2c6f24,_0x1336ed,_0x53fc01,_0x47e247){var _0x4796b9,_0x2338ae;return db[_0x1386('0xf')][_0x1386('0x10')]({'where':{'id':0x1},'attributes':[_0x1386('0x11'),_0x1386('0x12')],'raw':!![]})[_0x1386('0x13')](function(_0x1597d0){_0x4796b9=_0x1597d0;return db['User'][_0x1386('0x14')]({'where':{'email':_[_0x1386('0x15')](_0x53fc01[_0x1386('0x16')],'value'),'role':{'$or':[_0x1386('0x17'),_0x1386('0x18'),_0x1386('0x19')]}}});})[_0x1386('0x13')](function(_0x265997){_0x2338ae=_0x265997;if(_0x2338ae){if(_0x2338ae[_0x1386('0x1a')]){return _0x47e247(_0x1386('0x1b'));}else if(_0x4796b9[_0x1386('0x12')]>0x0){if(_0x2338ae['blocked']){if(moment(_0x2338ae[_0x1386('0x1c')])[_0x1386('0x1d')](_0x4796b9[_0x1386('0x12')],_0x1386('0x1e'))>moment()){return _0x47e247(_0x1386('0x1b'));}else{return utils[_0x1386('0x1f')](_0x2338ae,0x0,![],null)[_0x1386('0x13')](function(){return utils[_0x1386('0x20')](_0x2338ae);})[_0x1386('0x13')](function(){return _0x47e247(null,_0x2338ae);});}}else{return utils[_0x1386('0x20')](_0x2338ae)[_0x1386('0x13')](function(){return _0x47e247(null,_0x2338ae);});}}else{return utils['getLicense'](_0x2338ae)[_0x1386('0x13')](function(){return _0x47e247(null,_0x2338ae);});}}return _0x47e247(_0x1386('0x1b'));})[_0x1386('0x21')](function(_0x5ec8ea){_0x47e247(_0x5ec8ea);});}));
\ No newline at end of file
index 56c261e..77c5255 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe49=['passport','Router','./authGoogle.controller','../user/user.controller.js','get','/callback','callback','login','exports','express'];(function(_0x42c809,_0x5860eb){var _0x37f369=function(_0x228326){while(--_0x228326){_0x42c809['push'](_0x42c809['shift']());}};_0x37f369(++_0x5860eb);}(_0xbe49,0x135));var _0x9be4=function(_0x182188,_0x5026a8){_0x182188=_0x182188-0x0;var _0x2beaa4=_0xbe49[_0x182188];return _0x2beaa4;};'use strict';var express=require(_0x9be4('0x0'));var passport=require(_0x9be4('0x1'));var router=express[_0x9be4('0x2')]();var controller=require(_0x9be4('0x3'));var userController=require(_0x9be4('0x4'));var authService=require('../../components/auth/service');router[_0x9be4('0x5')]('/',controller['login']);router['get'](_0x9be4('0x6'),controller[_0x9be4('0x7')],authService['isMiddleware'],userController[_0x9be4('0x8')],authService['setTokenCookie']);module[_0x9be4('0x9')]=router;
\ No newline at end of file
+var _0x7fac=['login','setTokenCookie','exports','express','Router','../user/user.controller.js','../../components/auth/service','get','/callback','callback','isMiddleware'];(function(_0x329437,_0x1de73a){var _0x3789d9=function(_0x37832e){while(--_0x37832e){_0x329437['push'](_0x329437['shift']());}};_0x3789d9(++_0x1de73a);}(_0x7fac,0x137));var _0xc7fa=function(_0x529f1c,_0x437ed1){_0x529f1c=_0x529f1c-0x0;var _0x4d57ab=_0x7fac[_0x529f1c];return _0x4d57ab;};'use strict';var express=require(_0xc7fa('0x0'));var passport=require('passport');var router=express[_0xc7fa('0x1')]();var controller=require('./authGoogle.controller');var userController=require(_0xc7fa('0x2'));var authService=require(_0xc7fa('0x3'));router[_0xc7fa('0x4')]('/',controller['login']);router[_0xc7fa('0x4')](_0xc7fa('0x5'),controller[_0xc7fa('0x6')],authService[_0xc7fa('0x7')],userController[_0xc7fa('0x8')],authService[_0xc7fa('0x9')]);module[_0xc7fa('0xa')]=router;
\ No newline at end of file
index 8ef9a25..16476b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x275c=['User','params','token','now','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','validatePasswordHistory','save','send','Password\x20reset!','use','util','passport','Strategy','jayson/promise','lodash','randomstring','../../mysqldb','../../components/auth/service','../../config/utils','client','http','Setting','findOne','allowedLoginAttempts','blockDuration','then','name','password','salt','role','disabled','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','loginAttempts','blocked','minutes','clearBlockUser','blockedAt','add','getLicense','MailAccount','find','email','Smtp','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','service','host','port','secure','authentication','auth','pass','merge','\x22%s\x22\x20<%s>','request','SendMail','error','message','stringify','status','login','local','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','forgot','body','Email\x20parameter\x20is\x20missing','generate','trim','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','xCally\x20Motion\x20Password\x20Reset','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','https://','headers','/reset/','Reset\x20Email\x20sent!','catch','reset'];(function(_0x25248b,_0x3c8491){var _0x509939=function(_0x457a27){while(--_0x457a27){_0x25248b['push'](_0x25248b['shift']());}};_0x509939(++_0x3c8491);}(_0x275c,0x1d0));var _0xc275=function(_0x1db10f,_0x2656ba){_0x1db10f=_0x1db10f-0x0;var _0x2f6647=_0x275c[_0x1db10f];return _0x2f6647;};'use strict';var util=require(_0xc275('0x0'));var passport=require(_0xc275('0x1'));var LocalStrategy=require('passport-local')[_0xc275('0x2')];var jayson=require(_0xc275('0x3'));var _=require(_0xc275('0x4'));var rs=require(_0xc275('0x5'));var moment=require('moment');var db=require(_0xc275('0x6'))['db'];var authService=require(_0xc275('0x7'));var utils=require(_0xc275('0x8'));var client=jayson[_0xc275('0x9')][_0xc275('0xa')]({'port':0x232b});function localAuthenticate(_0x32ea60,_0x26077d,_0x59661c,_0x46fc42){var _0x454c9d,_0x452dbe;return db[_0xc275('0xb')][_0xc275('0xc')]({'where':{'id':0x1},'attributes':[_0xc275('0xd'),_0xc275('0xe')],'raw':!![]})[_0xc275('0xf')](function(_0x4db474){_0x454c9d=_0x4db474;return _0x32ea60[_0xc275('0xc')]({'attributes':['id',_0xc275('0x10'),_0xc275('0x11'),_0xc275('0x12'),_0xc275('0x13'),_0xc275('0x14'),'blocked','blockedAt','loginAttempts'],'where':{'name':_0x26077d,'role':{'$or':[_0xc275('0x15'),_0xc275('0x16'),_0xc275('0x17')]}}});})[_0xc275('0xf')](function(_0x4958a9){if(!_0x4958a9||_0x4958a9&&_0x4958a9['name']!==_0x26077d){throw new Error(_0xc275('0x18'));}else{_0x452dbe=_0x4958a9;return _0x452dbe;}})[_0xc275('0xf')](function(){_0x452dbe[_0xc275('0x19')](_0x59661c,function(_0x3dce3a,_0x38fad2){var _0x27080d=_0x452dbe[_0xc275('0x1a')]+0x1;if(_0x3dce3a){return _0x46fc42(_0x3dce3a);}else if(!_0x38fad2){if(_0x452dbe[_0xc275('0x14')]){return _0x46fc42(null,![],{'message':_0xc275('0x18')});}else if(_0x454c9d[_0xc275('0xd')]>0x0){if(_0x452dbe[_0xc275('0x1b')]){if(_0x454c9d[_0xc275('0xe')]>0x0){if(moment(_0x452dbe['blockedAt'])['add'](_0x454c9d[_0xc275('0xe')],_0xc275('0x1c'))>moment()){return _0x46fc42(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils['clearBlockUser'](_0x452dbe,_0x27080d,![],null)[_0xc275('0xf')](function(){return _0x46fc42(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}else{return _0x46fc42(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x27080d>=_0x454c9d['allowedLoginAttempts']){return utils['clearBlockUser'](_0x452dbe,0x0,!![],moment())[_0xc275('0xf')](function(){return _0x46fc42(null,![],{'message':_0xc275('0x18')});});}else{return utils[_0xc275('0x1d')](_0x452dbe,_0x27080d,![],null)[_0xc275('0xf')](function(){return _0x46fc42(null,![],{'message':_0xc275('0x18')});});}}}else{return _0x46fc42(null,![],{'message':_0xc275('0x18')});}}else{if(_0x452dbe['disabled']){return _0x46fc42(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else if(_0x454c9d[_0xc275('0xd')]>0x0){if(_0x452dbe[_0xc275('0x1b')]){if(_0x454c9d[_0xc275('0xe')]>0x0){if(moment(_0x452dbe[_0xc275('0x1e')])[_0xc275('0x1f')](_0x454c9d[_0xc275('0xe')],_0xc275('0x1c'))>moment()){return _0x46fc42(null,![],{'message':_0xc275('0x18')});}else{return utils[_0xc275('0x1d')](_0x452dbe,0x0,![],null)['then'](function(){return utils[_0xc275('0x20')](_0x452dbe);})[_0xc275('0xf')](function(){return _0x46fc42(null,_0x452dbe);});}}else{return _0x46fc42(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{return utils[_0xc275('0x1d')](_0x452dbe,0x0,![],null)[_0xc275('0xf')](function(){return utils[_0xc275('0x20')](_0x452dbe);})[_0xc275('0xf')](function(){return _0x46fc42(null,_0x452dbe);})['catch'](function(_0x16ed9a){return _0x46fc42(null,![],_0x16ed9a);});}}else{if(_0x452dbe[_0xc275('0x1b')]){return _0x46fc42(null,![],{'message':_0xc275('0x18')});}else{return utils['getLicense'](_0x452dbe)[_0xc275('0xf')](function(){return _0x46fc42(null,_0x452dbe);});}}}});})['catch'](function(_0x31f611){return _0x46fc42(null,![],_0x31f611);});}function sendServiceMail(_0x3f8455){return db[_0xc275('0x21')][_0xc275('0x22')]({'where':{'service':!![]},'attributes':['id',_0xc275('0x10'),_0xc275('0x23')],'include':[{'model':db['MailServerOut'],'as':_0xc275('0x24')}]})[_0xc275('0xf')](function(_0xd4f14f){if(!_0xd4f14f){throw new Error(_0xc275('0x25'));}var _0x142ede={'tls':{'rejectUnauthorized':![]}};if(_0xd4f14f[_0xc275('0x24')][_0xc275('0x26')]){_0x142ede['service']=_0xd4f14f[_0xc275('0x24')][_0xc275('0x26')];}else{_0x142ede[_0xc275('0x27')]=_0xd4f14f['Smtp'][_0xc275('0x27')];_0x142ede[_0xc275('0x28')]=_0xd4f14f['Smtp'][_0xc275('0x28')];_0x142ede[_0xc275('0x29')]=_0xd4f14f[_0xc275('0x24')][_0xc275('0x29')];}if(_0xd4f14f['Smtp'][_0xc275('0x2a')]){_0x142ede[_0xc275('0x2b')]={'user':_0xd4f14f[_0xc275('0x24')][_0xc275('0x16')],'pass':_0xd4f14f[_0xc275('0x24')][_0xc275('0x2c')]};}var _0x53411c={'account':_0x142ede,'message':_[_0xc275('0x2d')]({'from':util['format'](_0xc275('0x2e'),_0xd4f14f[_0xc275('0x10')],_0xd4f14f[_0xc275('0x23')]||_0xd4f14f[_0xc275('0x24')][_0xc275('0x16')])},_0x3f8455)};return client[_0xc275('0x2f')](_0xc275('0x30'),_0x53411c);})[_0xc275('0xf')](function(_0x525a1f){if(_0x525a1f['error']){throw new Error(util['format']('SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!',_0x525a1f[_0xc275('0x31')][_0xc275('0x32')]||JSON[_0xc275('0x33')](_0x525a1f['error'])));}return!![];});}function handleError(_0x46c1c0,_0x938174,_0x19a773){return _0x46c1c0[_0xc275('0x34')](_0x938174||0x1f4)['send']({'message':_0x19a773?_0x19a773[_0xc275('0x32')]||_0x19a773:''});}exports[_0xc275('0x35')]=function(_0x3a1f13,_0x317610,_0x51ac97){passport[_0xc275('0x19')](_0xc275('0x36'),function(_0x25a019,_0x35cd39,_0x40102f){var _0x3d65ed=_0x25a019||_0x40102f;if(_0x3d65ed){return handleError(_0x317610,0x191,_0x3d65ed);}if(!_0x35cd39){return handleError(_0x317610,0x194,{'message':_0xc275('0x37')});}else{var _0x4538c7={'payload':{'id':_0x35cd39['id'],'role':_0x35cd39['role']},'options':{'expiresIn':0x15180}};return authService[_0xc275('0x38')](_0x4538c7)[_0xc275('0xf')](function(_0x89e498){_0x317610[_0xc275('0x39')]({'id':_0x35cd39['id'],'token':_0x89e498,'statusCall':'','isAlreadyLogged':_0x35cd39['online']});});}})(_0x3a1f13,_0x317610,_0x51ac97);};exports[_0xc275('0x3a')]=function(_0x23a39a,_0x1f760d,_0x2f46a0){if(!_0x23a39a[_0xc275('0x3b')]['email']){return handleError(_0x1f760d,0x1f4,{'message':_0xc275('0x3c')});}var _0x3fd83c=rs[_0xc275('0x3d')]();_0x23a39a['body'][_0xc275('0x23')]=_0x23a39a[_0xc275('0x3b')][_0xc275('0x23')][_0xc275('0x3e')]()['toLowerCase']();var _0x45601a;return db[_0xc275('0xb')][_0xc275('0xc')]({'where':{'id':0x1},'attributes':[_0xc275('0xd'),'blockDuration'],'raw':!![]})[_0xc275('0xf')](function(_0x209d8d){_0x45601a=_0x209d8d;return db['User'][_0xc275('0x22')]({'where':{'email':_0x23a39a[_0xc275('0x3b')]['email']}});})[_0xc275('0xf')](function(_0x156131){if(!_0x156131){throw new Error(_0xc275('0x3f'));}if(_0x156131['disabled']){throw new Error(_0xc275('0x40'));}if(_0x156131['blocked']){if(moment(_0x156131[_0xc275('0x1e')])['add'](_0x45601a[_0xc275('0xe')],_0xc275('0x1c'))>moment()){throw new Error(_0xc275('0x41'));}else{_0x156131[_0xc275('0x1b')]=![];_0x156131[_0xc275('0x1e')]=null;}}_0x156131[_0xc275('0x42')]=_0x3fd83c;_0x156131['resetPasswordExpires']=Date['now']()+0x36ee80;return _0x156131['save']();})[_0xc275('0xf')](function(){return sendServiceMail({'to':_0x23a39a[_0xc275('0x3b')][_0xc275('0x23')],'subject':_0xc275('0x43'),'text':_0xc275('0x44')+_0xc275('0x45')+_0xc275('0x46')+_0x23a39a[_0xc275('0x47')]['host']+_0xc275('0x48')+_0x3fd83c+'\x0a\x0a'+'If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a'});})[_0xc275('0xf')](function(){_0x1f760d['status'](0xc8)['send']({'message':_0xc275('0x49')});})[_0xc275('0x4a')](function(_0x1e27ef){return handleError(_0x1f760d,0x1f4,_0x1e27ef);});};exports[_0xc275('0x4b')]=function(_0x7baaea,_0x1d1821,_0x331a7a){return db[_0xc275('0x4c')][_0xc275('0x22')]({'where':{'resetPasswordToken':_0x7baaea[_0xc275('0x4d')][_0xc275('0x4e')],'resetPasswordExpires':{'$gt':Date[_0xc275('0x4f')]()}}})[_0xc275('0xf')](function(_0x4773d5){if(!_0x4773d5){throw new Error('Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.');}return db[_0xc275('0xb')][_0xc275('0xc')]({'attributes':['id',_0xc275('0x50'),_0xc275('0x51'),_0xc275('0x52')]})[_0xc275('0xf')](function(_0x3bb060){if(_0x3bb060[_0xc275('0x50')])authService[_0xc275('0x53')](_0x7baaea[_0xc275('0x3b')][_0xc275('0x11')]);if(!_0x3bb060[_0xc275('0x51')]||!_0x4773d5[_0xc275('0x54')])return _0x4773d5;authService[_0xc275('0x55')](_0x7baaea[_0xc275('0x3b')]['password'],_0x4773d5[_0xc275('0x54')],_0x3bb060[_0xc275('0x52')]);return _0x4773d5;})[_0xc275('0xf')](function(){_0x4773d5[_0xc275('0x11')]=_0x7baaea[_0xc275('0x3b')][_0xc275('0x11')];_0x4773d5['resetPasswordToken']=null;_0x4773d5['resetPasswordExpires']=null;return _0x4773d5[_0xc275('0x56')]();});})[_0xc275('0xf')](function(){_0x1d1821[_0xc275('0x34')](0xc8)[_0xc275('0x57')]({'message':_0xc275('0x58')});})[_0xc275('0x4a')](function(_0x43007b){return handleError(_0x1d1821,0x1f4,_0x43007b);});};passport[_0xc275('0x59')](new LocalStrategy({'usernameField':'name','passwordField':'password'},function(_0xcfc9fb,_0x34ed73,_0x205ab0){return localAuthenticate(db[_0xc275('0x4c')],_0xcfc9fb,_0x34ed73,_0x205ab0);}));
\ No newline at end of file
+var _0xffda=['error','message','stringify','status','send','login','authenticate','local','role','signToken','json','Email\x20parameter\x20is\x20missing','generate','body','toLowerCase','User','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','now','save','xCally\x20Motion\x20Password\x20Reset','https://','headers','/reset/','Reset\x20Email\x20sent!','reset','params','token','enforcePasswordHistory','securePassword','validatePasswordPattern','previousPasswords','use','util','passport','passport-local','Strategy','lodash','randomstring','moment','../../components/auth/service','client','http','Setting','findOne','then','password','salt','disabled','blocked','blockedAt','loginAttempts','admin','agent','name','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','allowedLoginAttempts','add','blockDuration','minutes','clearBlockUser','getLicense','catch','find','email','Smtp','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','service','host','port','secure','authentication','pass','format','user','request','SendMail','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!'];(function(_0x26defc,_0x23c1bb){var _0x467fe8=function(_0xc9707f){while(--_0xc9707f){_0x26defc['push'](_0x26defc['shift']());}};_0x467fe8(++_0x23c1bb);}(_0xffda,0x73));var _0xaffd=function(_0x1002a3,_0x4b7184){_0x1002a3=_0x1002a3-0x0;var _0x328e80=_0xffda[_0x1002a3];return _0x328e80;};'use strict';var util=require(_0xaffd('0x0'));var passport=require(_0xaffd('0x1'));var LocalStrategy=require(_0xaffd('0x2'))[_0xaffd('0x3')];var jayson=require('jayson/promise');var _=require(_0xaffd('0x4'));var rs=require(_0xaffd('0x5'));var moment=require(_0xaffd('0x6'));var db=require('../../mysqldb')['db'];var authService=require(_0xaffd('0x7'));var utils=require('../../config/utils');var client=jayson[_0xaffd('0x8')][_0xaffd('0x9')]({'port':0x232b});function localAuthenticate(_0x5747e0,_0x4ca99e,_0x39b2e5,_0x12865c){var _0x3647e1,_0x514b76;return db[_0xaffd('0xa')][_0xaffd('0xb')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts','blockDuration'],'raw':!![]})[_0xaffd('0xc')](function(_0x42159b){_0x3647e1=_0x42159b;return _0x5747e0[_0xaffd('0xb')]({'attributes':['id','name',_0xaffd('0xd'),_0xaffd('0xe'),'role',_0xaffd('0xf'),_0xaffd('0x10'),_0xaffd('0x11'),_0xaffd('0x12')],'where':{'name':_0x4ca99e,'role':{'$or':[_0xaffd('0x13'),'user',_0xaffd('0x14')]}}});})['then'](function(_0x513bc8){if(!_0x513bc8||_0x513bc8&&_0x513bc8[_0xaffd('0x15')]!==_0x4ca99e){throw new Error(_0xaffd('0x16'));}else{_0x514b76=_0x513bc8;return _0x514b76;}})[_0xaffd('0xc')](function(){_0x514b76['authenticate'](_0x39b2e5,function(_0x2b0b99,_0x35ebc6){var _0x14caba=_0x514b76[_0xaffd('0x12')]+0x1;if(_0x2b0b99){return _0x12865c(_0x2b0b99);}else if(!_0x35ebc6){if(_0x514b76[_0xaffd('0xf')]){return _0x12865c(null,![],{'message':_0xaffd('0x16')});}else if(_0x3647e1[_0xaffd('0x17')]>0x0){if(_0x514b76[_0xaffd('0x10')]){if(_0x3647e1['blockDuration']>0x0){if(moment(_0x514b76[_0xaffd('0x11')])[_0xaffd('0x18')](_0x3647e1[_0xaffd('0x19')],_0xaffd('0x1a'))>moment()){return _0x12865c(null,![],{'message':_0xaffd('0x16')});}else{return utils[_0xaffd('0x1b')](_0x514b76,_0x14caba,![],null)['then'](function(){return _0x12865c(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}else{return _0x12865c(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x14caba>=_0x3647e1[_0xaffd('0x17')]){return utils[_0xaffd('0x1b')](_0x514b76,0x0,!![],moment())['then'](function(){return _0x12865c(null,![],{'message':_0xaffd('0x16')});});}else{return utils[_0xaffd('0x1b')](_0x514b76,_0x14caba,![],null)[_0xaffd('0xc')](function(){return _0x12865c(null,![],{'message':_0xaffd('0x16')});});}}}else{return _0x12865c(null,![],{'message':_0xaffd('0x16')});}}else{if(_0x514b76[_0xaffd('0xf')]){return _0x12865c(null,![],{'message':_0xaffd('0x16')});}else if(_0x3647e1[_0xaffd('0x17')]>0x0){if(_0x514b76[_0xaffd('0x10')]){if(_0x3647e1[_0xaffd('0x19')]>0x0){if(moment(_0x514b76[_0xaffd('0x11')])[_0xaffd('0x18')](_0x3647e1[_0xaffd('0x19')],_0xaffd('0x1a'))>moment()){return _0x12865c(null,![],{'message':_0xaffd('0x16')});}else{return utils[_0xaffd('0x1b')](_0x514b76,0x0,![],null)[_0xaffd('0xc')](function(){return utils[_0xaffd('0x1c')](_0x514b76);})['then'](function(){return _0x12865c(null,_0x514b76);});}}else{return _0x12865c(null,![],{'message':_0xaffd('0x16')});}}else{return utils[_0xaffd('0x1b')](_0x514b76,0x0,![],null)[_0xaffd('0xc')](function(){return utils[_0xaffd('0x1c')](_0x514b76);})[_0xaffd('0xc')](function(){return _0x12865c(null,_0x514b76);})[_0xaffd('0x1d')](function(_0x401ad7){return _0x12865c(null,![],_0x401ad7);});}}else{if(_0x514b76[_0xaffd('0x10')]){return _0x12865c(null,![],{'message':_0xaffd('0x16')});}else{return utils['getLicense'](_0x514b76)[_0xaffd('0xc')](function(){return _0x12865c(null,_0x514b76);});}}}});})['catch'](function(_0x5a7fe0){return _0x12865c(null,![],_0x5a7fe0);});}function sendServiceMail(_0x1f4da9){return db['MailAccount'][_0xaffd('0x1e')]({'where':{'service':!![]},'attributes':['id',_0xaffd('0x15'),_0xaffd('0x1f')],'include':[{'model':db['MailServerOut'],'as':_0xaffd('0x20')}]})[_0xaffd('0xc')](function(_0x193926){if(!_0x193926){throw new Error(_0xaffd('0x21'));}var _0xa4f13={'tls':{'rejectUnauthorized':![]}};if(_0x193926['Smtp']['service']){_0xa4f13[_0xaffd('0x22')]=_0x193926['Smtp'][_0xaffd('0x22')];}else{_0xa4f13[_0xaffd('0x23')]=_0x193926[_0xaffd('0x20')]['host'];_0xa4f13[_0xaffd('0x24')]=_0x193926[_0xaffd('0x20')][_0xaffd('0x24')];_0xa4f13[_0xaffd('0x25')]=_0x193926[_0xaffd('0x20')][_0xaffd('0x25')];}if(_0x193926[_0xaffd('0x20')][_0xaffd('0x26')]){_0xa4f13['auth']={'user':_0x193926[_0xaffd('0x20')]['user'],'pass':_0x193926['Smtp'][_0xaffd('0x27')]};}var _0x470f5c={'account':_0xa4f13,'message':_['merge']({'from':util[_0xaffd('0x28')]('\x22%s\x22\x20<%s>',_0x193926[_0xaffd('0x15')],_0x193926[_0xaffd('0x1f')]||_0x193926[_0xaffd('0x20')][_0xaffd('0x29')])},_0x1f4da9)};return client[_0xaffd('0x2a')](_0xaffd('0x2b'),_0x470f5c);})[_0xaffd('0xc')](function(_0x995fc6){if(_0x995fc6['error']){throw new Error(util[_0xaffd('0x28')](_0xaffd('0x2c'),_0x995fc6[_0xaffd('0x2d')][_0xaffd('0x2e')]||JSON[_0xaffd('0x2f')](_0x995fc6['error'])));}return!![];});}function handleError(_0x404cec,_0x1a21ff,_0x2f12a4){return _0x404cec[_0xaffd('0x30')](_0x1a21ff||0x1f4)[_0xaffd('0x31')]({'message':_0x2f12a4?_0x2f12a4[_0xaffd('0x2e')]||_0x2f12a4:''});}exports[_0xaffd('0x32')]=function(_0x4c6a30,_0x33ef8a,_0x30ac8a){passport[_0xaffd('0x33')](_0xaffd('0x34'),function(_0x337b90,_0x537256,_0x151566){var _0x1d1eca=_0x337b90||_0x151566;if(_0x1d1eca){return handleError(_0x33ef8a,0x191,_0x1d1eca);}if(!_0x537256){return handleError(_0x33ef8a,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x208b11={'payload':{'id':_0x537256['id'],'role':_0x537256[_0xaffd('0x35')]},'options':{'expiresIn':0x15180}};return authService[_0xaffd('0x36')](_0x208b11)[_0xaffd('0xc')](function(_0x38a904){_0x33ef8a[_0xaffd('0x37')]({'id':_0x537256['id'],'token':_0x38a904,'statusCall':'','isAlreadyLogged':_0x537256['online']});});}})(_0x4c6a30,_0x33ef8a,_0x30ac8a);};exports['forgot']=function(_0xe47c4,_0x54a86e,_0x2168bc){if(!_0xe47c4['body'][_0xaffd('0x1f')]){return handleError(_0x54a86e,0x1f4,{'message':_0xaffd('0x38')});}var _0x476b59=rs[_0xaffd('0x39')]();_0xe47c4[_0xaffd('0x3a')]['email']=_0xe47c4['body']['email']['trim']()[_0xaffd('0x3b')]();var _0x35b453;return db['Setting']['findOne']({'where':{'id':0x1},'attributes':[_0xaffd('0x17'),'blockDuration'],'raw':!![]})[_0xaffd('0xc')](function(_0x1a53ff){_0x35b453=_0x1a53ff;return db[_0xaffd('0x3c')][_0xaffd('0x1e')]({'where':{'email':_0xe47c4[_0xaffd('0x3a')][_0xaffd('0x1f')]}});})['then'](function(_0x5e72){if(!_0x5e72){throw new Error('This\x20email\x20is\x20not\x20registered.');}if(_0x5e72[_0xaffd('0xf')]){throw new Error(_0xaffd('0x3d'));}if(_0x5e72['blocked']){if(moment(_0x5e72['blockedAt'])[_0xaffd('0x18')](_0x35b453['blockDuration'],_0xaffd('0x1a'))>moment()){throw new Error(_0xaffd('0x3e'));}else{_0x5e72[_0xaffd('0x10')]=![];_0x5e72['blockedAt']=null;}}_0x5e72[_0xaffd('0x3f')]=_0x476b59;_0x5e72[_0xaffd('0x40')]=Date[_0xaffd('0x41')]()+0x36ee80;return _0x5e72[_0xaffd('0x42')]();})['then'](function(){return sendServiceMail({'to':_0xe47c4[_0xaffd('0x3a')][_0xaffd('0x1f')],'subject':_0xaffd('0x43'),'text':'You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a'+'Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a'+_0xaffd('0x44')+_0xe47c4[_0xaffd('0x45')][_0xaffd('0x23')]+_0xaffd('0x46')+_0x476b59+'\x0a\x0a'+'If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a'});})['then'](function(){_0x54a86e[_0xaffd('0x30')](0xc8)[_0xaffd('0x31')]({'message':_0xaffd('0x47')});})[_0xaffd('0x1d')](function(_0x1b88c1){return handleError(_0x54a86e,0x1f4,_0x1b88c1);});};exports[_0xaffd('0x48')]=function(_0x38e3a1,_0x4afa85,_0xb985fc){return db['User']['find']({'where':{'resetPasswordToken':_0x38e3a1[_0xaffd('0x49')][_0xaffd('0x4a')],'resetPasswordExpires':{'$gt':Date[_0xaffd('0x41')]()}}})['then'](function(_0x3b842f){if(!_0x3b842f){throw new Error('Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.');}return db['Setting'][_0xaffd('0xb')]({'attributes':['id','securePassword',_0xaffd('0x4b'),'passwordHistoryLimit']})[_0xaffd('0xc')](function(_0x1ca289){if(_0x1ca289[_0xaffd('0x4c')])authService[_0xaffd('0x4d')](_0x38e3a1[_0xaffd('0x3a')][_0xaffd('0xd')]);if(!_0x1ca289[_0xaffd('0x4b')]||!_0x3b842f[_0xaffd('0x4e')])return _0x3b842f;authService['validatePasswordHistory'](_0x38e3a1[_0xaffd('0x3a')][_0xaffd('0xd')],_0x3b842f['previousPasswords'],_0x1ca289['passwordHistoryLimit']);return _0x3b842f;})[_0xaffd('0xc')](function(){_0x3b842f[_0xaffd('0xd')]=_0x38e3a1['body']['password'];_0x3b842f[_0xaffd('0x3f')]=null;_0x3b842f[_0xaffd('0x40')]=null;return _0x3b842f[_0xaffd('0x42')]();});})[_0xaffd('0xc')](function(){_0x4afa85['status'](0xc8)[_0xaffd('0x31')]({'message':'Password\x20reset!'});})['catch'](function(_0x41bfe0){return handleError(_0x4afa85,0x1f4,_0x41bfe0);});};passport[_0xaffd('0x4f')](new LocalStrategy({'usernameField':_0xaffd('0x15'),'passwordField':_0xaffd('0xd')},function(_0x168bb2,_0x15fccd,_0xb21690){return localAuthenticate(db['User'],_0x168bb2,_0x15fccd,_0xb21690);}));
\ No newline at end of file
index 646562e..6c0dd6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6e8=['/reset/:token','reset','exports','express','Router','post','login','/forgot'];(function(_0x53ab25,_0x1a59bd){var _0x5842c3=function(_0x4fed30){while(--_0x4fed30){_0x53ab25['push'](_0x53ab25['shift']());}};_0x5842c3(++_0x1a59bd);}(_0xe6e8,0x1ab));var _0x8e6e=function(_0x579613,_0x25489b){_0x579613=_0x579613-0x0;var _0x2131ef=_0xe6e8[_0x579613];return _0x2131ef;};'use strict';var express=require(_0x8e6e('0x0'));var router=express[_0x8e6e('0x1')]();var controller=require('./authLocal.controller');router[_0x8e6e('0x2')]('/',controller[_0x8e6e('0x3')]);router[_0x8e6e('0x2')](_0x8e6e('0x4'),controller['forgot']);router[_0x8e6e('0x2')](_0x8e6e('0x5'),controller[_0x8e6e('0x6')]);module[_0x8e6e('0x7')]=router;
\ No newline at end of file
+var _0xbb34=['forgot','/reset/:token','reset','exports','Router','login','post','/forgot'];(function(_0x340ddc,_0x4c69d6){var _0x29eed3=function(_0x17d566){while(--_0x17d566){_0x340ddc['push'](_0x340ddc['shift']());}};_0x29eed3(++_0x4c69d6);}(_0xbb34,0x164));var _0x4bb3=function(_0x42a44a,_0x15ca12){_0x42a44a=_0x42a44a-0x0;var _0x1e6ab6=_0xbb34[_0x42a44a];return _0x1e6ab6;};'use strict';var express=require('express');var router=express[_0x4bb3('0x0')]();var controller=require('./authLocal.controller');router['post']('/',controller[_0x4bb3('0x1')]);router[_0x4bb3('0x2')](_0x4bb3('0x3'),controller[_0x4bb3('0x4')]);router['post'](_0x4bb3('0x5'),controller[_0x4bb3('0x6')]);module[_0x4bb3('0x7')]=router;
\ No newline at end of file
index d64b641..6375fbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa948=['STRING','BOOLEAN','INTEGER'];(function(_0x47e42c,_0x903f64){var _0x5abbbd=function(_0x5891a7){while(--_0x5891a7){_0x47e42c['push'](_0x47e42c['shift']());}};_0x5abbbd(++_0x903f64);}(_0xa948,0x1e0));var _0x8a94=function(_0x3b2244,_0x54873f){_0x3b2244=_0x3b2244-0x0;var _0x2dcc14=_0xa948[_0x3b2244];return _0x2dcc14;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x8a94('0x0')],'allowNull':![]},'channel':{'type':Sequelize[_0x8a94('0x0')]},'description':{'type':Sequelize['STRING']},'status':{'type':Sequelize[_0x8a94('0x1')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x8a94('0x2')],'defaultValue':0xa}};
\ No newline at end of file
+var _0xcf64=['BOOLEAN','INTEGER','sequelize','STRING'];(function(_0x2a241e,_0x1e950d){var _0x4c7b68=function(_0x26948f){while(--_0x26948f){_0x2a241e['push'](_0x2a241e['shift']());}};_0x4c7b68(++_0x1e950d);}(_0xcf64,0x156));var _0x4cf6=function(_0x3f92a4,_0x296cac){_0x3f92a4=_0x3f92a4-0x0;var _0x5cb51c=_0xcf64[_0x3f92a4];return _0x5cb51c;};'use strict';var Sequelize=require(_0x4cf6('0x0'));module['exports']={'name':{'type':Sequelize[_0x4cf6('0x1')],'allowNull':![]},'channel':{'type':Sequelize[_0x4cf6('0x1')]},'description':{'type':Sequelize[_0x4cf6('0x1')]},'status':{'type':Sequelize[_0x4cf6('0x2')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x4cf6('0x3')],'defaultValue':0xa}};
\ No newline at end of file
index 4c13d4c..9424ef1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5add=['model','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','keys','include','find','create','body','params','Condition','addConditions','ids','getConditions','nolimit','addActions','Action','omit','getActions','findOne','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','update','then','destroy','name','send','index','map','Automation','rawAttributes','fieldName','type','key'];(function(_0x58baf3,_0x3ce651){var _0x1eb9b9=function(_0x40ddc9){while(--_0x40ddc9){_0x58baf3['push'](_0x58baf3['shift']());}};_0x1eb9b9(++_0x3ce651);}(_0x5add,0x124));var _0xd5ad=function(_0x3fcdb9,_0x142ed7){_0x3fcdb9=_0x3fcdb9-0x0;var _0x41da1a=_0x5add[_0x3fcdb9];return _0x41da1a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd5ad('0x0'));var zipdir=require(_0xd5ad('0x1'));var jsonpatch=require(_0xd5ad('0x2'));var rp=require(_0xd5ad('0x3'));var moment=require(_0xd5ad('0x4'));var BPromise=require(_0xd5ad('0x5'));var Mustache=require(_0xd5ad('0x6'));var util=require(_0xd5ad('0x7'));var path=require(_0xd5ad('0x8'));var sox=require(_0xd5ad('0x9'));var csv=require(_0xd5ad('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd5ad('0xb'));var _=require('lodash');var squel=require(_0xd5ad('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xd5ad('0xd'));var toCsv=require(_0xd5ad('0xa'));var querystring=require(_0xd5ad('0xe'));var Papa=require('papaparse');var Redis=require(_0xd5ad('0xf'));var authService=require(_0xd5ad('0x10'));var qs=require(_0xd5ad('0x11'));var as=require(_0xd5ad('0x12'));var hardwareService=require(_0xd5ad('0x13'));var logger=require(_0xd5ad('0x14'))(_0xd5ad('0x15'));var utils=require(_0xd5ad('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xd5ad('0x17'));var db=require(_0xd5ad('0x18'))['db'];function respondWithStatusCode(_0x1425dc,_0x184cbb){_0x184cbb=_0x184cbb||0xcc;return function(_0x5c9943){if(_0x5c9943){return _0x1425dc[_0xd5ad('0x19')](_0x184cbb);}return _0x1425dc[_0xd5ad('0x1a')](_0x184cbb)[_0xd5ad('0x1b')]();};}function respondWithResult(_0x2f2710,_0x5c4d92){_0x5c4d92=_0x5c4d92||0xc8;return function(_0x4ee5e9){if(_0x4ee5e9){return _0x2f2710[_0xd5ad('0x1a')](_0x5c4d92)['json'](_0x4ee5e9);}};}function respondWithFilteredResult(_0x3ab581,_0x362498){return function(_0x2a5209){if(_0x2a5209){var _0x3ef4af=typeof _0x362498[_0xd5ad('0x1c')]===_0xd5ad('0x1d')&&typeof _0x362498[_0xd5ad('0x1e')]===_0xd5ad('0x1d');var _0x2b85a8=_0x2a5209[_0xd5ad('0x1f')];var _0x3963ec=_0x3ef4af?0x0:_0x362498[_0xd5ad('0x1c')];var _0x83fb17=_0x3ef4af?_0x2a5209[_0xd5ad('0x1f')]:_0x362498[_0xd5ad('0x1c')]+_0x362498[_0xd5ad('0x1e')];var _0x43c36f;if(_0x83fb17>=_0x2b85a8){_0x83fb17=_0x2b85a8;_0x43c36f=0xc8;}else{_0x43c36f=0xce;}_0x3ab581[_0xd5ad('0x1a')](_0x43c36f);return _0x3ab581[_0xd5ad('0x20')]('Content-Range',_0x3963ec+'-'+_0x83fb17+'/'+_0x2b85a8)[_0xd5ad('0x21')](_0x2a5209);}return null;};}function patchUpdates(_0x3cb515){return function(_0x1a8d28){try{jsonpatch[_0xd5ad('0x22')](_0x1a8d28,_0x3cb515,!![]);}catch(_0x541d79){return BPromise[_0xd5ad('0x23')](_0x541d79);}return _0x1a8d28['save']();};}function saveUpdates(_0x69e410,_0x9e60db){return function(_0x3236a4){if(_0x3236a4){return _0x3236a4[_0xd5ad('0x24')](_0x69e410)[_0xd5ad('0x25')](function(_0x5e0b71){return _0x5e0b71;});}return null;};}function removeEntity(_0x4ce040,_0x3f0bdb){return function(_0x464b23){if(_0x464b23){return _0x464b23[_0xd5ad('0x26')]()['then'](function(){_0x4ce040[_0xd5ad('0x1a')](0xcc)[_0xd5ad('0x1b')]();});}};}function handleEntityNotFound(_0x30dbc9,_0x4dd593){return function(_0x3f1e4b){if(!_0x3f1e4b){_0x30dbc9[_0xd5ad('0x19')](0x194);}return _0x3f1e4b;};}function handleError(_0x285271,_0x5856eb){_0x5856eb=_0x5856eb||0x1f4;return function(_0x2072a3){logger['error'](_0x2072a3['stack']);if(_0x2072a3[_0xd5ad('0x27')]){delete _0x2072a3[_0xd5ad('0x27')];}_0x285271[_0xd5ad('0x1a')](_0x5856eb)[_0xd5ad('0x28')](_0x2072a3);};}exports[_0xd5ad('0x29')]=function(_0x54eac3,_0xf98395){var _0x3c5937={},_0x146e45={},_0x5b2f85={'count':0x0,'rows':[]};var _0x4291c4=_[_0xd5ad('0x2a')](db[_0xd5ad('0x2b')][_0xd5ad('0x2c')],function(_0xfa5e8f){return{'name':_0xfa5e8f[_0xd5ad('0x2d')],'type':_0xfa5e8f[_0xd5ad('0x2e')][_0xd5ad('0x2f')]};});_0x146e45[_0xd5ad('0x30')]=_[_0xd5ad('0x2a')](_0x4291c4,'name');_0x146e45[_0xd5ad('0x31')]=_['keys'](_0x54eac3[_0xd5ad('0x31')]);_0x146e45[_0xd5ad('0x32')]=_['intersection'](_0x146e45[_0xd5ad('0x30')],_0x146e45[_0xd5ad('0x31')]);_0x3c5937[_0xd5ad('0x33')]=_[_0xd5ad('0x34')](_0x146e45[_0xd5ad('0x30')],qs[_0xd5ad('0x35')](_0x54eac3[_0xd5ad('0x31')]['fields']));_0x3c5937[_0xd5ad('0x33')]=_0x3c5937['attributes'][_0xd5ad('0x36')]?_0x3c5937[_0xd5ad('0x33')]:_0x146e45['model'];if(!_0x54eac3[_0xd5ad('0x31')][_0xd5ad('0x37')]('nolimit')){_0x3c5937['limit']=qs[_0xd5ad('0x1e')](_0x54eac3['query'][_0xd5ad('0x1e')]);_0x3c5937['offset']=qs[_0xd5ad('0x1c')](_0x54eac3[_0xd5ad('0x31')][_0xd5ad('0x1c')]);}_0x3c5937[_0xd5ad('0x38')]=qs[_0xd5ad('0x39')](_0x54eac3[_0xd5ad('0x31')][_0xd5ad('0x39')]);_0x3c5937[_0xd5ad('0x3a')]=qs['filters'](_[_0xd5ad('0x3b')](_0x54eac3[_0xd5ad('0x31')],_0x146e45[_0xd5ad('0x32')]),_0x4291c4);if(_0x54eac3[_0xd5ad('0x31')][_0xd5ad('0x3c')]){_0x3c5937[_0xd5ad('0x3a')]=_[_0xd5ad('0x3d')](_0x3c5937[_0xd5ad('0x3a')],{'$or':_[_0xd5ad('0x2a')](_0x4291c4,function(_0x2fd6fb){if(_0x2fd6fb[_0xd5ad('0x2e')]!==_0xd5ad('0x3e')){var _0x182430={};_0x182430[_0x2fd6fb[_0xd5ad('0x27')]]={'$like':'%'+_0x54eac3['query'][_0xd5ad('0x3c')]+'%'};return _0x182430;}})});}_0x3c5937=_['merge']({},_0x3c5937,_0x54eac3[_0xd5ad('0x3f')]);var _0x1cd877={'where':_0x3c5937[_0xd5ad('0x3a')]};return db[_0xd5ad('0x2b')][_0xd5ad('0x1f')](_0x1cd877)[_0xd5ad('0x25')](function(_0x16b0c4){_0x5b2f85[_0xd5ad('0x1f')]=_0x16b0c4;if(_0x54eac3[_0xd5ad('0x31')][_0xd5ad('0x40')]){_0x3c5937['include']=[{'all':!![]}];}return db['Automation'][_0xd5ad('0x41')](_0x3c5937);})['then'](function(_0x1b9b94){_0x5b2f85[_0xd5ad('0x42')]=_0x1b9b94;return _0x5b2f85;})[_0xd5ad('0x25')](respondWithFilteredResult(_0xf98395,_0x3c5937))[_0xd5ad('0x43')](handleError(_0xf98395,null));};exports[_0xd5ad('0x44')]=function(_0x58092a,_0x5a5063){var _0x32c45e={'raw':![],'where':{'id':_0x58092a['params']['id']}},_0x42768d={};_0x42768d[_0xd5ad('0x30')]=_[_0xd5ad('0x45')](db[_0xd5ad('0x2b')][_0xd5ad('0x2c')]);_0x42768d[_0xd5ad('0x31')]=_['keys'](_0x58092a[_0xd5ad('0x31')]);_0x42768d[_0xd5ad('0x32')]=_[_0xd5ad('0x34')](_0x42768d['model'],_0x42768d[_0xd5ad('0x31')]);_0x32c45e[_0xd5ad('0x33')]=_[_0xd5ad('0x34')](_0x42768d[_0xd5ad('0x30')],qs[_0xd5ad('0x35')](_0x58092a[_0xd5ad('0x31')]['fields']));_0x32c45e[_0xd5ad('0x33')]=_0x32c45e[_0xd5ad('0x33')]['length']?_0x32c45e['attributes']:_0x42768d['model'];if(_0x58092a[_0xd5ad('0x31')]['includeAll']){_0x32c45e[_0xd5ad('0x46')]=[{'all':!![]}];}_0x32c45e=_[_0xd5ad('0x3d')]({},_0x32c45e,_0x58092a[_0xd5ad('0x3f')]);return db[_0xd5ad('0x2b')][_0xd5ad('0x47')](_0x32c45e)['then'](handleEntityNotFound(_0x5a5063,null))[_0xd5ad('0x25')](respondWithResult(_0x5a5063,null))[_0xd5ad('0x43')](handleError(_0x5a5063,null));};exports[_0xd5ad('0x48')]=function(_0x52c150,_0x2c1578){return db[_0xd5ad('0x2b')]['create'](_0x52c150['body'],{})[_0xd5ad('0x25')](respondWithResult(_0x2c1578,0xc9))[_0xd5ad('0x43')](handleError(_0x2c1578,null));};exports[_0xd5ad('0x24')]=function(_0x3a0b91,_0x323ccf){if(_0x3a0b91[_0xd5ad('0x49')]['id']){delete _0x3a0b91[_0xd5ad('0x49')]['id'];}return db[_0xd5ad('0x2b')][_0xd5ad('0x47')]({'where':{'id':_0x3a0b91[_0xd5ad('0x4a')]['id']}})[_0xd5ad('0x25')](handleEntityNotFound(_0x323ccf,null))[_0xd5ad('0x25')](saveUpdates(_0x3a0b91['body'],null))['then'](respondWithResult(_0x323ccf,null))[_0xd5ad('0x43')](handleError(_0x323ccf,null));};exports[_0xd5ad('0x26')]=function(_0x22afb0,_0x2b5590){return db['Automation'][_0xd5ad('0x47')]({'where':{'id':_0x22afb0[_0xd5ad('0x4a')]['id']}})[_0xd5ad('0x25')](handleEntityNotFound(_0x2b5590,null))[_0xd5ad('0x25')](removeEntity(_0x2b5590,null))[_0xd5ad('0x43')](handleError(_0x2b5590,null));};exports['addConditions']=function(_0x202bd2,_0x5e3b38,_0x73be65){return db[_0xd5ad('0x4b')][_0xd5ad('0x47')]({'where':{'id':_0x202bd2[_0xd5ad('0x4a')]['id']}})[_0xd5ad('0x25')](handleEntityNotFound(_0x5e3b38,null))['then'](function(_0x340115){if(_0x340115){return _0x340115[_0xd5ad('0x4c')](_0x202bd2[_0xd5ad('0x49')][_0xd5ad('0x4d')],_['omit'](_0x202bd2[_0xd5ad('0x49')],[_0xd5ad('0x4d'),'id'])||{});}})[_0xd5ad('0x25')](respondWithResult(_0x5e3b38,null))[_0xd5ad('0x43')](handleError(_0x5e3b38,null));};exports[_0xd5ad('0x4e')]=function(_0x4b322d,_0x135090,_0x28b8b1){var _0xbc546c={};var _0x16dc82={};var _0x4f28e5;var _0x1ef244;return db['Automation']['findOne']({'where':{'id':_0x4b322d[_0xd5ad('0x4a')]['id']}})[_0xd5ad('0x25')](handleEntityNotFound(_0x135090,null))[_0xd5ad('0x25')](function(_0x344628){if(_0x344628){_0x4f28e5=_0x344628;_0x16dc82[_0xd5ad('0x30')]=_[_0xd5ad('0x45')](db[_0xd5ad('0x4b')]['rawAttributes']);_0x16dc82[_0xd5ad('0x31')]=_['keys'](_0x4b322d[_0xd5ad('0x31')]);_0x16dc82['filters']=_[_0xd5ad('0x34')](_0x16dc82[_0xd5ad('0x30')],_0x16dc82[_0xd5ad('0x31')]);_0xbc546c['attributes']=_[_0xd5ad('0x34')](_0x16dc82[_0xd5ad('0x30')],qs[_0xd5ad('0x35')](_0x4b322d[_0xd5ad('0x31')]['fields']));_0xbc546c[_0xd5ad('0x33')]=_0xbc546c['attributes'][_0xd5ad('0x36')]?_0xbc546c[_0xd5ad('0x33')]:_0x16dc82['model'];_0xbc546c[_0xd5ad('0x38')]=qs[_0xd5ad('0x39')](_0x4b322d['query'][_0xd5ad('0x39')]);_0xbc546c[_0xd5ad('0x3a')]=qs[_0xd5ad('0x32')](_[_0xd5ad('0x3b')](_0x4b322d['query'],_0x16dc82[_0xd5ad('0x32')]));if(_0x4b322d['query'][_0xd5ad('0x3c')]){_0xbc546c[_0xd5ad('0x3a')]=_[_0xd5ad('0x3d')](_0xbc546c[_0xd5ad('0x3a')],{'$or':_['map'](_0xbc546c[_0xd5ad('0x33')],function(_0x13a6df){var _0x37808a={};_0x37808a[_0x13a6df]={'$like':'%'+_0x4b322d[_0xd5ad('0x31')][_0xd5ad('0x3c')]+'%'};return _0x37808a;})});}_0xbc546c=_[_0xd5ad('0x3d')]({},_0xbc546c,_0x4b322d[_0xd5ad('0x3f')]);return _0x4f28e5[_0xd5ad('0x4e')](_0xbc546c);}})[_0xd5ad('0x25')](function(_0x2e51da){if(_0x2e51da){_0x1ef244=_0x2e51da['length'];if(!_0x4b322d[_0xd5ad('0x31')][_0xd5ad('0x37')](_0xd5ad('0x4f'))){_0xbc546c[_0xd5ad('0x1e')]=qs['limit'](_0x4b322d[_0xd5ad('0x31')][_0xd5ad('0x1e')]);_0xbc546c['offset']=qs[_0xd5ad('0x1c')](_0x4b322d[_0xd5ad('0x31')]['offset']);}return _0x4f28e5[_0xd5ad('0x4e')](_0xbc546c);}})['then'](function(_0x3bb261){if(_0x3bb261){return _0x3bb261?{'count':_0x1ef244,'rows':_0x3bb261}:null;}})[_0xd5ad('0x25')](respondWithResult(_0x135090,null))[_0xd5ad('0x43')](handleError(_0x135090,null));};exports[_0xd5ad('0x50')]=function(_0x57fbd3,_0x38e3dc,_0x9c0e8b){return db[_0xd5ad('0x51')][_0xd5ad('0x47')]({'where':{'id':_0x57fbd3[_0xd5ad('0x4a')]['id']}})[_0xd5ad('0x25')](handleEntityNotFound(_0x38e3dc,null))[_0xd5ad('0x25')](function(_0x5079e7){if(_0x5079e7){return _0x5079e7[_0xd5ad('0x50')](_0x57fbd3[_0xd5ad('0x49')][_0xd5ad('0x4d')],_[_0xd5ad('0x52')](_0x57fbd3[_0xd5ad('0x49')],[_0xd5ad('0x4d'),'id'])||{});}})[_0xd5ad('0x25')](respondWithResult(_0x38e3dc,null))[_0xd5ad('0x43')](handleError(_0x38e3dc,null));};exports[_0xd5ad('0x53')]=function(_0x3139d5,_0x3d1328,_0xea4f6){var _0x1e1290={};var _0x25b269={};var _0x50de41;var _0x1aec95;return db['Automation'][_0xd5ad('0x54')]({'where':{'id':_0x3139d5[_0xd5ad('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3d1328,null))[_0xd5ad('0x25')](function(_0x23b050){if(_0x23b050){_0x50de41=_0x23b050;_0x25b269[_0xd5ad('0x30')]=_[_0xd5ad('0x45')](db[_0xd5ad('0x51')][_0xd5ad('0x2c')]);_0x25b269['query']=_[_0xd5ad('0x45')](_0x3139d5[_0xd5ad('0x31')]);_0x25b269[_0xd5ad('0x32')]=_[_0xd5ad('0x34')](_0x25b269['model'],_0x25b269[_0xd5ad('0x31')]);_0x1e1290[_0xd5ad('0x33')]=_[_0xd5ad('0x34')](_0x25b269[_0xd5ad('0x30')],qs[_0xd5ad('0x35')](_0x3139d5[_0xd5ad('0x31')][_0xd5ad('0x35')]));_0x1e1290[_0xd5ad('0x33')]=_0x1e1290['attributes'][_0xd5ad('0x36')]?_0x1e1290[_0xd5ad('0x33')]:_0x25b269[_0xd5ad('0x30')];_0x1e1290[_0xd5ad('0x38')]=qs[_0xd5ad('0x39')](_0x3139d5['query'][_0xd5ad('0x39')]);_0x1e1290[_0xd5ad('0x3a')]=qs[_0xd5ad('0x32')](_[_0xd5ad('0x3b')](_0x3139d5['query'],_0x25b269['filters']));if(_0x3139d5[_0xd5ad('0x31')][_0xd5ad('0x3c')]){_0x1e1290[_0xd5ad('0x3a')]=_['merge'](_0x1e1290[_0xd5ad('0x3a')],{'$or':_['map'](_0x1e1290[_0xd5ad('0x33')],function(_0x5ad5f0){var _0x119cd2={};_0x119cd2[_0x5ad5f0]={'$like':'%'+_0x3139d5['query'][_0xd5ad('0x3c')]+'%'};return _0x119cd2;})});}_0x1e1290=_['merge']({},_0x1e1290,_0x3139d5[_0xd5ad('0x3f')]);return _0x50de41[_0xd5ad('0x53')](_0x1e1290);}})[_0xd5ad('0x25')](function(_0x23186b){if(_0x23186b){_0x1aec95=_0x23186b[_0xd5ad('0x36')];if(!_0x3139d5['query'][_0xd5ad('0x37')]('nolimit')){_0x1e1290[_0xd5ad('0x1e')]=qs[_0xd5ad('0x1e')](_0x3139d5['query'][_0xd5ad('0x1e')]);_0x1e1290['offset']=qs[_0xd5ad('0x1c')](_0x3139d5[_0xd5ad('0x31')][_0xd5ad('0x1c')]);}return _0x50de41[_0xd5ad('0x53')](_0x1e1290);}})[_0xd5ad('0x25')](function(_0x1837c1){if(_0x1837c1){return _0x1837c1?{'count':_0x1aec95,'rows':_0x1837c1}:null;}})[_0xd5ad('0x25')](respondWithResult(_0x3d1328,null))[_0xd5ad('0x43')](handleError(_0x3d1328,null));};
\ No newline at end of file
+var _0xbbf4=['../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','Automation','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','addConditions','ids','omit','findOne','Condition','getConditions','addActions','getActions','Action','pick','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util'];(function(_0x53d905,_0x4d125d){var _0x347bad=function(_0x45e016){while(--_0x45e016){_0x53d905['push'](_0x53d905['shift']());}};_0x347bad(++_0x4d125d);}(_0xbbf4,0x141));var _0x4bbf=function(_0x7db1a8,_0xe45de3){_0x7db1a8=_0x7db1a8-0x0;var _0x48d2e7=_0xbbf4[_0x7db1a8];return _0x48d2e7;};'use strict';var emlformat=require(_0x4bbf('0x0'));var rimraf=require(_0x4bbf('0x1'));var zipdir=require(_0x4bbf('0x2'));var jsonpatch=require(_0x4bbf('0x3'));var rp=require(_0x4bbf('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x4bbf('0x5'));var util=require(_0x4bbf('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('fs-extra');var _=require(_0x4bbf('0x7'));var squel=require(_0x4bbf('0x8'));var crypto=require(_0x4bbf('0x9'));var jsforce=require(_0x4bbf('0xa'));var deskjs=require(_0x4bbf('0xb'));var toCsv=require(_0x4bbf('0xc'));var querystring=require(_0x4bbf('0xd'));var Papa=require(_0x4bbf('0xe'));var Redis=require(_0x4bbf('0xf'));var authService=require(_0x4bbf('0x10'));var qs=require(_0x4bbf('0x11'));var as=require(_0x4bbf('0x12'));var hardwareService=require(_0x4bbf('0x13'));var logger=require('../../config/logger')(_0x4bbf('0x14'));var utils=require('../../config/utils');var config=require(_0x4bbf('0x15'));var licenseUtil=require(_0x4bbf('0x16'));var db=require(_0x4bbf('0x17'))['db'];function respondWithStatusCode(_0x4c48c2,_0x3236f2){_0x3236f2=_0x3236f2||0xcc;return function(_0x2b7d45){if(_0x2b7d45){return _0x4c48c2[_0x4bbf('0x18')](_0x3236f2);}return _0x4c48c2[_0x4bbf('0x19')](_0x3236f2)['end']();};}function respondWithResult(_0x1db077,_0xa7c3b2){_0xa7c3b2=_0xa7c3b2||0xc8;return function(_0x33aef7){if(_0x33aef7){return _0x1db077[_0x4bbf('0x19')](_0xa7c3b2)[_0x4bbf('0x1a')](_0x33aef7);}};}function respondWithFilteredResult(_0x238d8b,_0x1faebb){return function(_0x506a07){if(_0x506a07){var _0x42f2d0=typeof _0x1faebb[_0x4bbf('0x1b')]===_0x4bbf('0x1c')&&typeof _0x1faebb[_0x4bbf('0x1d')]===_0x4bbf('0x1c');var _0x458911=_0x506a07['count'];var _0x5559b4=_0x42f2d0?0x0:_0x1faebb[_0x4bbf('0x1b')];var _0x2f6c88=_0x42f2d0?_0x506a07[_0x4bbf('0x1e')]:_0x1faebb[_0x4bbf('0x1b')]+_0x1faebb['limit'];var _0x35376e;if(_0x2f6c88>=_0x458911){_0x2f6c88=_0x458911;_0x35376e=0xc8;}else{_0x35376e=0xce;}_0x238d8b[_0x4bbf('0x19')](_0x35376e);return _0x238d8b[_0x4bbf('0x1f')](_0x4bbf('0x20'),_0x5559b4+'-'+_0x2f6c88+'/'+_0x458911)[_0x4bbf('0x1a')](_0x506a07);}return null;};}function patchUpdates(_0x4cabef){return function(_0x235f76){try{jsonpatch[_0x4bbf('0x21')](_0x235f76,_0x4cabef,!![]);}catch(_0x12d49a){return BPromise[_0x4bbf('0x22')](_0x12d49a);}return _0x235f76[_0x4bbf('0x23')]();};}function saveUpdates(_0x46a5b2,_0x4b0632){return function(_0x38f771){if(_0x38f771){return _0x38f771[_0x4bbf('0x24')](_0x46a5b2)[_0x4bbf('0x25')](function(_0xb29a81){return _0xb29a81;});}return null;};}function removeEntity(_0x10cec3,_0x123cb1){return function(_0x41644c){if(_0x41644c){return _0x41644c[_0x4bbf('0x26')]()['then'](function(){_0x10cec3['status'](0xcc)[_0x4bbf('0x27')]();});}};}function handleEntityNotFound(_0x588650,_0xb6707a){return function(_0x300aac){if(!_0x300aac){_0x588650['sendStatus'](0x194);}return _0x300aac;};}function handleError(_0x80f8d4,_0x31d2d6){_0x31d2d6=_0x31d2d6||0x1f4;return function(_0x1657ea){logger[_0x4bbf('0x28')](_0x1657ea[_0x4bbf('0x29')]);if(_0x1657ea[_0x4bbf('0x2a')]){delete _0x1657ea[_0x4bbf('0x2a')];}_0x80f8d4['status'](_0x31d2d6)[_0x4bbf('0x2b')](_0x1657ea);};}exports[_0x4bbf('0x2c')]=function(_0xde81ca,_0x3e3ca9){var _0x3f87bb={},_0x5400f7={},_0x4fae64={'count':0x0,'rows':[]};var _0x32512b=_[_0x4bbf('0x2d')](db['Automation'][_0x4bbf('0x2e')],function(_0x26c9bc){return{'name':_0x26c9bc['fieldName'],'type':_0x26c9bc[_0x4bbf('0x2f')][_0x4bbf('0x30')]};});_0x5400f7[_0x4bbf('0x31')]=_[_0x4bbf('0x2d')](_0x32512b,_0x4bbf('0x2a'));_0x5400f7[_0x4bbf('0x32')]=_[_0x4bbf('0x33')](_0xde81ca['query']);_0x5400f7[_0x4bbf('0x34')]=_[_0x4bbf('0x35')](_0x5400f7['model'],_0x5400f7['query']);_0x3f87bb['attributes']=_[_0x4bbf('0x35')](_0x5400f7[_0x4bbf('0x31')],qs[_0x4bbf('0x36')](_0xde81ca['query'][_0x4bbf('0x36')]));_0x3f87bb['attributes']=_0x3f87bb['attributes']['length']?_0x3f87bb[_0x4bbf('0x37')]:_0x5400f7[_0x4bbf('0x31')];if(!_0xde81ca[_0x4bbf('0x32')][_0x4bbf('0x38')](_0x4bbf('0x39'))){_0x3f87bb['limit']=qs[_0x4bbf('0x1d')](_0xde81ca[_0x4bbf('0x32')][_0x4bbf('0x1d')]);_0x3f87bb['offset']=qs[_0x4bbf('0x1b')](_0xde81ca['query'][_0x4bbf('0x1b')]);}_0x3f87bb[_0x4bbf('0x3a')]=qs[_0x4bbf('0x3b')](_0xde81ca[_0x4bbf('0x32')]['sort']);_0x3f87bb[_0x4bbf('0x3c')]=qs['filters'](_['pick'](_0xde81ca['query'],_0x5400f7[_0x4bbf('0x34')]),_0x32512b);if(_0xde81ca['query'][_0x4bbf('0x3d')]){_0x3f87bb[_0x4bbf('0x3c')]=_[_0x4bbf('0x3e')](_0x3f87bb[_0x4bbf('0x3c')],{'$or':_[_0x4bbf('0x2d')](_0x32512b,function(_0x74d5b3){if(_0x74d5b3[_0x4bbf('0x2f')]!=='VIRTUAL'){var _0x53d39e={};_0x53d39e[_0x74d5b3['name']]={'$like':'%'+_0xde81ca['query'][_0x4bbf('0x3d')]+'%'};return _0x53d39e;}})});}_0x3f87bb=_[_0x4bbf('0x3e')]({},_0x3f87bb,_0xde81ca[_0x4bbf('0x3f')]);var _0x5c7973={'where':_0x3f87bb[_0x4bbf('0x3c')]};return db[_0x4bbf('0x40')][_0x4bbf('0x1e')](_0x5c7973)['then'](function(_0x2b2c86){_0x4fae64[_0x4bbf('0x1e')]=_0x2b2c86;if(_0xde81ca[_0x4bbf('0x32')][_0x4bbf('0x41')]){_0x3f87bb[_0x4bbf('0x42')]=[{'all':!![]}];}return db['Automation'][_0x4bbf('0x43')](_0x3f87bb);})[_0x4bbf('0x25')](function(_0x57d212){_0x4fae64[_0x4bbf('0x44')]=_0x57d212;return _0x4fae64;})[_0x4bbf('0x25')](respondWithFilteredResult(_0x3e3ca9,_0x3f87bb))[_0x4bbf('0x45')](handleError(_0x3e3ca9,null));};exports[_0x4bbf('0x46')]=function(_0x585ac8,_0x5de590){var _0x49d990={'raw':![],'where':{'id':_0x585ac8[_0x4bbf('0x47')]['id']}},_0x5e6c9b={};_0x5e6c9b[_0x4bbf('0x31')]=_[_0x4bbf('0x33')](db[_0x4bbf('0x40')]['rawAttributes']);_0x5e6c9b[_0x4bbf('0x32')]=_[_0x4bbf('0x33')](_0x585ac8['query']);_0x5e6c9b[_0x4bbf('0x34')]=_[_0x4bbf('0x35')](_0x5e6c9b[_0x4bbf('0x31')],_0x5e6c9b[_0x4bbf('0x32')]);_0x49d990[_0x4bbf('0x37')]=_[_0x4bbf('0x35')](_0x5e6c9b[_0x4bbf('0x31')],qs[_0x4bbf('0x36')](_0x585ac8['query'][_0x4bbf('0x36')]));_0x49d990[_0x4bbf('0x37')]=_0x49d990[_0x4bbf('0x37')][_0x4bbf('0x48')]?_0x49d990['attributes']:_0x5e6c9b[_0x4bbf('0x31')];if(_0x585ac8['query'][_0x4bbf('0x41')]){_0x49d990[_0x4bbf('0x42')]=[{'all':!![]}];}_0x49d990=_[_0x4bbf('0x3e')]({},_0x49d990,_0x585ac8[_0x4bbf('0x3f')]);return db[_0x4bbf('0x40')][_0x4bbf('0x49')](_0x49d990)[_0x4bbf('0x25')](handleEntityNotFound(_0x5de590,null))[_0x4bbf('0x25')](respondWithResult(_0x5de590,null))[_0x4bbf('0x45')](handleError(_0x5de590,null));};exports[_0x4bbf('0x4a')]=function(_0x442917,_0x580b6e){return db[_0x4bbf('0x40')][_0x4bbf('0x4a')](_0x442917[_0x4bbf('0x4b')],{})[_0x4bbf('0x25')](respondWithResult(_0x580b6e,0xc9))['catch'](handleError(_0x580b6e,null));};exports[_0x4bbf('0x24')]=function(_0x40ae3e,_0x39b67f){if(_0x40ae3e[_0x4bbf('0x4b')]['id']){delete _0x40ae3e[_0x4bbf('0x4b')]['id'];}return db[_0x4bbf('0x40')][_0x4bbf('0x49')]({'where':{'id':_0x40ae3e['params']['id']}})[_0x4bbf('0x25')](handleEntityNotFound(_0x39b67f,null))[_0x4bbf('0x25')](saveUpdates(_0x40ae3e['body'],null))[_0x4bbf('0x25')](respondWithResult(_0x39b67f,null))['catch'](handleError(_0x39b67f,null));};exports[_0x4bbf('0x26')]=function(_0x41d2f1,_0x497125){return db['Automation'][_0x4bbf('0x49')]({'where':{'id':_0x41d2f1['params']['id']}})[_0x4bbf('0x25')](handleEntityNotFound(_0x497125,null))[_0x4bbf('0x25')](removeEntity(_0x497125,null))[_0x4bbf('0x45')](handleError(_0x497125,null));};exports['addConditions']=function(_0x21d1e1,_0x362175,_0x34489a){return db['Condition']['find']({'where':{'id':_0x21d1e1[_0x4bbf('0x47')]['id']}})[_0x4bbf('0x25')](handleEntityNotFound(_0x362175,null))['then'](function(_0x2c89e0){if(_0x2c89e0){return _0x2c89e0[_0x4bbf('0x4c')](_0x21d1e1['body'][_0x4bbf('0x4d')],_[_0x4bbf('0x4e')](_0x21d1e1['body'],['ids','id'])||{});}})[_0x4bbf('0x25')](respondWithResult(_0x362175,null))['catch'](handleError(_0x362175,null));};exports['getConditions']=function(_0x23a6e8,_0x58f43c,_0x35375b){var _0x347aa3={};var _0x4db7b6={};var _0x1fb4bc;var _0x587df2;return db[_0x4bbf('0x40')][_0x4bbf('0x4f')]({'where':{'id':_0x23a6e8[_0x4bbf('0x47')]['id']}})[_0x4bbf('0x25')](handleEntityNotFound(_0x58f43c,null))[_0x4bbf('0x25')](function(_0x5214d1){if(_0x5214d1){_0x1fb4bc=_0x5214d1;_0x4db7b6[_0x4bbf('0x31')]=_[_0x4bbf('0x33')](db[_0x4bbf('0x50')][_0x4bbf('0x2e')]);_0x4db7b6[_0x4bbf('0x32')]=_[_0x4bbf('0x33')](_0x23a6e8['query']);_0x4db7b6['filters']=_[_0x4bbf('0x35')](_0x4db7b6[_0x4bbf('0x31')],_0x4db7b6[_0x4bbf('0x32')]);_0x347aa3[_0x4bbf('0x37')]=_['intersection'](_0x4db7b6[_0x4bbf('0x31')],qs[_0x4bbf('0x36')](_0x23a6e8[_0x4bbf('0x32')][_0x4bbf('0x36')]));_0x347aa3['attributes']=_0x347aa3[_0x4bbf('0x37')][_0x4bbf('0x48')]?_0x347aa3[_0x4bbf('0x37')]:_0x4db7b6[_0x4bbf('0x31')];_0x347aa3[_0x4bbf('0x3a')]=qs[_0x4bbf('0x3b')](_0x23a6e8[_0x4bbf('0x32')][_0x4bbf('0x3b')]);_0x347aa3[_0x4bbf('0x3c')]=qs[_0x4bbf('0x34')](_['pick'](_0x23a6e8['query'],_0x4db7b6[_0x4bbf('0x34')]));if(_0x23a6e8['query']['filter']){_0x347aa3[_0x4bbf('0x3c')]=_[_0x4bbf('0x3e')](_0x347aa3[_0x4bbf('0x3c')],{'$or':_['map'](_0x347aa3[_0x4bbf('0x37')],function(_0x155f3d){var _0x10a449={};_0x10a449[_0x155f3d]={'$like':'%'+_0x23a6e8[_0x4bbf('0x32')][_0x4bbf('0x3d')]+'%'};return _0x10a449;})});}_0x347aa3=_[_0x4bbf('0x3e')]({},_0x347aa3,_0x23a6e8[_0x4bbf('0x3f')]);return _0x1fb4bc['getConditions'](_0x347aa3);}})[_0x4bbf('0x25')](function(_0x31cd28){if(_0x31cd28){_0x587df2=_0x31cd28[_0x4bbf('0x48')];if(!_0x23a6e8[_0x4bbf('0x32')][_0x4bbf('0x38')](_0x4bbf('0x39'))){_0x347aa3[_0x4bbf('0x1d')]=qs[_0x4bbf('0x1d')](_0x23a6e8[_0x4bbf('0x32')][_0x4bbf('0x1d')]);_0x347aa3['offset']=qs['offset'](_0x23a6e8['query'][_0x4bbf('0x1b')]);}return _0x1fb4bc[_0x4bbf('0x51')](_0x347aa3);}})['then'](function(_0x305bad){if(_0x305bad){return _0x305bad?{'count':_0x587df2,'rows':_0x305bad}:null;}})[_0x4bbf('0x25')](respondWithResult(_0x58f43c,null))['catch'](handleError(_0x58f43c,null));};exports[_0x4bbf('0x52')]=function(_0x4fbb44,_0x588a5e,_0x55b2d7){return db['Action'][_0x4bbf('0x49')]({'where':{'id':_0x4fbb44[_0x4bbf('0x47')]['id']}})['then'](handleEntityNotFound(_0x588a5e,null))[_0x4bbf('0x25')](function(_0x426319){if(_0x426319){return _0x426319[_0x4bbf('0x52')](_0x4fbb44[_0x4bbf('0x4b')][_0x4bbf('0x4d')],_[_0x4bbf('0x4e')](_0x4fbb44['body'],[_0x4bbf('0x4d'),'id'])||{});}})[_0x4bbf('0x25')](respondWithResult(_0x588a5e,null))['catch'](handleError(_0x588a5e,null));};exports[_0x4bbf('0x53')]=function(_0x1ca2d7,_0x5ac6e0,_0x258356){var _0x526725={};var _0x1fb44f={};var _0xac9b21;var _0x4af9ce;return db[_0x4bbf('0x40')][_0x4bbf('0x4f')]({'where':{'id':_0x1ca2d7[_0x4bbf('0x47')]['id']}})[_0x4bbf('0x25')](handleEntityNotFound(_0x5ac6e0,null))[_0x4bbf('0x25')](function(_0x109dc2){if(_0x109dc2){_0xac9b21=_0x109dc2;_0x1fb44f['model']=_['keys'](db[_0x4bbf('0x54')][_0x4bbf('0x2e')]);_0x1fb44f[_0x4bbf('0x32')]=_[_0x4bbf('0x33')](_0x1ca2d7['query']);_0x1fb44f[_0x4bbf('0x34')]=_['intersection'](_0x1fb44f['model'],_0x1fb44f[_0x4bbf('0x32')]);_0x526725[_0x4bbf('0x37')]=_[_0x4bbf('0x35')](_0x1fb44f['model'],qs['fields'](_0x1ca2d7[_0x4bbf('0x32')][_0x4bbf('0x36')]));_0x526725[_0x4bbf('0x37')]=_0x526725[_0x4bbf('0x37')]['length']?_0x526725[_0x4bbf('0x37')]:_0x1fb44f['model'];_0x526725[_0x4bbf('0x3a')]=qs[_0x4bbf('0x3b')](_0x1ca2d7[_0x4bbf('0x32')][_0x4bbf('0x3b')]);_0x526725[_0x4bbf('0x3c')]=qs[_0x4bbf('0x34')](_[_0x4bbf('0x55')](_0x1ca2d7[_0x4bbf('0x32')],_0x1fb44f[_0x4bbf('0x34')]));if(_0x1ca2d7[_0x4bbf('0x32')][_0x4bbf('0x3d')]){_0x526725[_0x4bbf('0x3c')]=_[_0x4bbf('0x3e')](_0x526725[_0x4bbf('0x3c')],{'$or':_[_0x4bbf('0x2d')](_0x526725['attributes'],function(_0x19b447){var _0x3aa995={};_0x3aa995[_0x19b447]={'$like':'%'+_0x1ca2d7[_0x4bbf('0x32')]['filter']+'%'};return _0x3aa995;})});}_0x526725=_[_0x4bbf('0x3e')]({},_0x526725,_0x1ca2d7[_0x4bbf('0x3f')]);return _0xac9b21[_0x4bbf('0x53')](_0x526725);}})[_0x4bbf('0x25')](function(_0x5dfe86){if(_0x5dfe86){_0x4af9ce=_0x5dfe86[_0x4bbf('0x48')];if(!_0x1ca2d7[_0x4bbf('0x32')]['hasOwnProperty'](_0x4bbf('0x39'))){_0x526725[_0x4bbf('0x1d')]=qs['limit'](_0x1ca2d7[_0x4bbf('0x32')][_0x4bbf('0x1d')]);_0x526725[_0x4bbf('0x1b')]=qs[_0x4bbf('0x1b')](_0x1ca2d7[_0x4bbf('0x32')]['offset']);}return _0xac9b21['getActions'](_0x526725);}})[_0x4bbf('0x25')](function(_0x344d7e){if(_0x344d7e){return _0x344d7e?{'count':_0x4af9ce,'rows':_0x344d7e}:null;}})[_0x4bbf('0x25')](respondWithResult(_0x5ac6e0,null))['catch'](handleError(_0x5ac6e0,null));};
\ No newline at end of file
index 75b8df4..6c91c67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b47=['exports','define','Automation','util','../../config/logger','moment','bluebird','rimraf','../../config/environment','./automation.attributes'];(function(_0x24cd8e,_0x14020c){var _0x830ece=function(_0x26fb7a){while(--_0x26fb7a){_0x24cd8e['push'](_0x24cd8e['shift']());}};_0x830ece(++_0x14020c);}(_0x8b47,0xcb));var _0x78b4=function(_0x5e3868,_0x5e9f11){_0x5e3868=_0x5e3868-0x0;var _0x1a005a=_0x8b47[_0x5e3868];return _0x1a005a;};'use strict';var _=require('lodash');var util=require(_0x78b4('0x0'));var logger=require(_0x78b4('0x1'))('api');var moment=require(_0x78b4('0x2'));var BPromise=require(_0x78b4('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x78b4('0x4'));var config=require(_0x78b4('0x5'));var attributes=require(_0x78b4('0x6'));module[_0x78b4('0x7')]=function(_0xfb68ce,_0x3cb03b){return _0xfb68ce[_0x78b4('0x8')](_0x78b4('0x9'),attributes,{'tableName':'tools_automations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4b24=['api','moment','request-promise','path','../../config/environment','./automation.attributes','exports','define','Automation','lodash','util','../../config/logger'];(function(_0x337651,_0x2af690){var _0x20893c=function(_0x545dcd){while(--_0x545dcd){_0x337651['push'](_0x337651['shift']());}};_0x20893c(++_0x2af690);}(_0x4b24,0x1c5));var _0x44b2=function(_0x1877d8,_0x16c26a){_0x1877d8=_0x1877d8-0x0;var _0x176162=_0x4b24[_0x1877d8];return _0x176162;};'use strict';var _=require(_0x44b2('0x0'));var util=require(_0x44b2('0x1'));var logger=require(_0x44b2('0x2'))(_0x44b2('0x3'));var moment=require(_0x44b2('0x4'));var BPromise=require('bluebird');var rp=require(_0x44b2('0x5'));var fs=require('fs');var path=require(_0x44b2('0x6'));var rimraf=require('rimraf');var config=require(_0x44b2('0x7'));var attributes=require(_0x44b2('0x8'));module[_0x44b2('0x9')]=function(_0x53f02c,_0x559e5b){return _0x53f02c[_0x44b2('0xa')](_0x44b2('0xb'),attributes,{'tableName':'tools_automations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9cec0d2..3f735bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c9a=['http','request','then','info','request\x20sent','debug','Automation,\x20%s,\x20%s,\x20%s','stringify','error','code','Automation,\x20%s,\x20%s','message','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x186376,_0x5d988a){var _0x2dbdd9=function(_0x96908e){while(--_0x96908e){_0x186376['push'](_0x186376['shift']());}};_0x2dbdd9(++_0x5d988a);}(_0x1c9a,0x98));var _0xa1c9=function(_0x34cefe,_0x2340aa){_0x34cefe=_0x34cefe-0x0;var _0x3bace2=_0x1c9a[_0x34cefe];return _0x3bace2;};'use strict';var _=require(_0xa1c9('0x0'));var util=require('util');var moment=require(_0xa1c9('0x1'));var BPromise=require('bluebird');var rs=require(_0xa1c9('0x2'));var fs=require('fs');var Redis=require(_0xa1c9('0x3'));var db=require(_0xa1c9('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xa1c9('0x5'))(_0xa1c9('0x6'));var config=require(_0xa1c9('0x7'));var jayson=require(_0xa1c9('0x8'));var client=jayson['client'][_0xa1c9('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5448f2,_0x222624,_0x463c9c){return new BPromise(function(_0x3f07c2,_0x5059df){return client[_0xa1c9('0xa')](_0x5448f2,_0x463c9c)[_0xa1c9('0xb')](function(_0x24136d){logger[_0xa1c9('0xc')]('Automation,\x20%s,\x20%s',_0x222624,_0xa1c9('0xd'));logger[_0xa1c9('0xe')](_0xa1c9('0xf'),_0x222624,_0xa1c9('0xd'),JSON[_0xa1c9('0x10')](_0x24136d));if(_0x24136d[_0xa1c9('0x11')]){if(_0x24136d[_0xa1c9('0x11')][_0xa1c9('0x12')]===0x1f4){logger[_0xa1c9('0x11')](_0xa1c9('0x13'),_0x222624,_0x24136d['error'][_0xa1c9('0x14')]);return _0x5059df(_0x24136d[_0xa1c9('0x11')][_0xa1c9('0x14')]);}logger[_0xa1c9('0x11')](_0xa1c9('0x13'),_0x222624,_0x24136d['error'][_0xa1c9('0x14')]);return _0x3f07c2(_0x24136d[_0xa1c9('0x11')][_0xa1c9('0x14')]);}else{logger[_0xa1c9('0xc')](_0xa1c9('0x13'),_0x222624,_0xa1c9('0xd'));_0x3f07c2(_0x24136d[_0xa1c9('0x15')][_0xa1c9('0x14')]);}})[_0xa1c9('0x16')](function(_0x373f5d){logger['error'](_0xa1c9('0x13'),_0x222624,_0x373f5d);_0x5059df(_0x373f5d);});});}
\ No newline at end of file
+var _0x46c1=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','then','Automation,\x20%s,\x20%s','request\x20sent','debug','Automation,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','util','moment'];(function(_0x275073,_0x4ea63a){var _0x2864f7=function(_0x4ea815){while(--_0x4ea815){_0x275073['push'](_0x275073['shift']());}};_0x2864f7(++_0x4ea63a);}(_0x46c1,0x7c));var _0x146c=function(_0x17397c,_0x2e2208){_0x17397c=_0x17397c-0x0;var _0x58aa5f=_0x46c1[_0x17397c];return _0x58aa5f;};'use strict';var _=require('lodash');var util=require(_0x146c('0x0'));var moment=require(_0x146c('0x1'));var BPromise=require(_0x146c('0x2'));var rs=require(_0x146c('0x3'));var fs=require('fs');var Redis=require(_0x146c('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x146c('0x5'));var logger=require(_0x146c('0x6'))(_0x146c('0x7'));var config=require(_0x146c('0x8'));var jayson=require(_0x146c('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2e394f,_0x226480,_0x3bccd4){return new BPromise(function(_0x54f99b,_0x36a8c2){return client['request'](_0x2e394f,_0x3bccd4)[_0x146c('0xa')](function(_0x2c8c0a){logger['info'](_0x146c('0xb'),_0x226480,_0x146c('0xc'));logger[_0x146c('0xd')](_0x146c('0xe'),_0x226480,'request\x20sent',JSON[_0x146c('0xf')](_0x2c8c0a));if(_0x2c8c0a['error']){if(_0x2c8c0a[_0x146c('0x10')][_0x146c('0x11')]===0x1f4){logger[_0x146c('0x10')]('Automation,\x20%s,\x20%s',_0x226480,_0x2c8c0a[_0x146c('0x10')]['message']);return _0x36a8c2(_0x2c8c0a[_0x146c('0x10')]['message']);}logger[_0x146c('0x10')](_0x146c('0xb'),_0x226480,_0x2c8c0a[_0x146c('0x10')][_0x146c('0x12')]);return _0x54f99b(_0x2c8c0a['error'][_0x146c('0x12')]);}else{logger[_0x146c('0x13')]('Automation,\x20%s,\x20%s',_0x226480,_0x146c('0xc'));_0x54f99b(_0x2c8c0a['result']['message']);}})[_0x146c('0x14')](function(_0x512ac8){logger[_0x146c('0x10')](_0x146c('0xb'),_0x226480,_0x512ac8);_0x36a8c2(_0x512ac8);});});}
\ No newline at end of file
index da052b6..1483f28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa049=['create','addConditions','addActions','put','/:id','update','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./automation.controller','get','index','isAuthenticated','show','/:id/conditions','getConditions','/:id/actions','getActions','post'];(function(_0x460ea6,_0x17998d){var _0x4962d2=function(_0x4ea96d){while(--_0x4ea96d){_0x460ea6['push'](_0x460ea6['shift']());}};_0x4962d2(++_0x17998d);}(_0xa049,0x1db));var _0x9a04=function(_0x56d591,_0x3191a3){_0x56d591=_0x56d591-0x0;var _0x4bf0ff=_0xa049[_0x56d591];return _0x4bf0ff;};'use strict';var multer=require(_0x9a04('0x0'));var util=require(_0x9a04('0x1'));var path=require('path');var timeout=require(_0x9a04('0x2'));var express=require(_0x9a04('0x3'));var router=express[_0x9a04('0x4')]();var fs_extra=require(_0x9a04('0x5'));var auth=require(_0x9a04('0x6'));var interaction=require(_0x9a04('0x7'));var config=require(_0x9a04('0x8'));var controller=require(_0x9a04('0x9'));router[_0x9a04('0xa')]('/',auth['isAuthenticated'](),controller[_0x9a04('0xb')]);router[_0x9a04('0xa')]('/:id',auth[_0x9a04('0xc')](),controller[_0x9a04('0xd')]);router[_0x9a04('0xa')](_0x9a04('0xe'),auth[_0x9a04('0xc')](),controller[_0x9a04('0xf')]);router['get'](_0x9a04('0x10'),auth[_0x9a04('0xc')](),controller[_0x9a04('0x11')]);router[_0x9a04('0x12')]('/',auth[_0x9a04('0xc')](),controller[_0x9a04('0x13')]);router['post'](_0x9a04('0xe'),auth[_0x9a04('0xc')](),controller[_0x9a04('0x14')]);router['post'](_0x9a04('0x10'),auth[_0x9a04('0xc')](),controller[_0x9a04('0x15')]);router[_0x9a04('0x16')](_0x9a04('0x17'),auth['isAuthenticated'](),controller[_0x9a04('0x18')]);router['delete'](_0x9a04('0x17'),auth[_0x9a04('0xc')](),controller['destroy']);module[_0x9a04('0x19')]=router;
\ No newline at end of file
+var _0x46b3=['update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./automation.controller','isAuthenticated','index','/:id','get','/:id/conditions','getConditions','/:id/actions','getActions','post','create','addConditions'];(function(_0x57b38f,_0xc26f33){var _0x6aa12c=function(_0x32850d){while(--_0x32850d){_0x57b38f['push'](_0x57b38f['shift']());}};_0x6aa12c(++_0xc26f33);}(_0x46b3,0x194));var _0x346b=function(_0x163285,_0x25607c){_0x163285=_0x163285-0x0;var _0x299c0b=_0x46b3[_0x163285];return _0x299c0b;};'use strict';var multer=require(_0x346b('0x0'));var util=require(_0x346b('0x1'));var path=require(_0x346b('0x2'));var timeout=require(_0x346b('0x3'));var express=require(_0x346b('0x4'));var router=express['Router']();var fs_extra=require(_0x346b('0x5'));var auth=require(_0x346b('0x6'));var interaction=require(_0x346b('0x7'));var config=require(_0x346b('0x8'));var controller=require(_0x346b('0x9'));router['get']('/',auth[_0x346b('0xa')](),controller[_0x346b('0xb')]);router['get'](_0x346b('0xc'),auth[_0x346b('0xa')](),controller['show']);router[_0x346b('0xd')](_0x346b('0xe'),auth[_0x346b('0xa')](),controller[_0x346b('0xf')]);router[_0x346b('0xd')](_0x346b('0x10'),auth[_0x346b('0xa')](),controller[_0x346b('0x11')]);router[_0x346b('0x12')]('/',auth['isAuthenticated'](),controller[_0x346b('0x13')]);router[_0x346b('0x12')]('/:id/conditions',auth[_0x346b('0xa')](),controller[_0x346b('0x14')]);router['post'](_0x346b('0x10'),auth[_0x346b('0xa')](),controller['addActions']);router['put'](_0x346b('0xc'),auth[_0x346b('0xa')](),controller[_0x346b('0x15')]);router[_0x346b('0x16')](_0x346b('0xc'),auth[_0x346b('0xa')](),controller[_0x346b('0x17')]);module[_0x346b('0x18')]=router;
\ No newline at end of file
index 008d9de..b8c5cb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa587=['#NoAnswer\x20Retry\x20(min:1,\x20max:999)','never','onlyIfOpen','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','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','exports','STRING','name','ENUM','ivr','BOOLEAN','Active/Disactive\x20Campaign','INTEGER','UNSIGNED','Max\x20200\x20calls.','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'];(function(_0x500d35,_0x3f5d69){var _0x383af4=function(_0x22c7e9){while(--_0x22c7e9){_0x500d35['push'](_0x500d35['shift']());}};_0x383af4(++_0x3f5d69);}(_0xa587,0xa9));var _0x7a58=function(_0x15bd91,_0x333233){_0x15bd91=_0x15bd91-0x0;var _0x5e370d=_0xa587[_0x15bd91];return _0x5e370d;};'use strict';var Sequelize=require(_0x7a58('0x0'));module[_0x7a58('0x1')]={'name':{'type':Sequelize[_0x7a58('0x2')],'unique':_0x7a58('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0x7a58('0x4')]('ivr'),'allowNull':![],'defaultValue':_0x7a58('0x5')},'description':{'type':Sequelize[_0x7a58('0x2')]},'active':{'type':Sequelize[_0x7a58('0x6')],'defaultValue':0x0,'comment':_0x7a58('0x7')},'limitCalls':{'type':Sequelize[_0x7a58('0x8')](0x4)[_0x7a58('0x9')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x7a58('0xa')},'dialOriginateCallerIdName':{'type':Sequelize[_0x7a58('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x7a58('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0x7a58('0x8')](0x3)[_0x7a58('0x9')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7a58('0xb')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x7a58('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7a58('0xc')},'dialCongestionRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x7a58('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7a58('0xd')},'dialBusyMaxRetry':{'type':Sequelize[_0x7a58('0x8')](0x3)[_0x7a58('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7a58('0xe')},'dialBusyRetryFrequency':{'type':Sequelize[_0x7a58('0x8')](0x5)[_0x7a58('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7a58('0xf')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x7a58('0x8')](0x3)[_0x7a58('0x9')],'defaultValue':0x3,'comment':_0x7a58('0x10')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x7a58('0x8')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialGlobalMaxRetry':{'type':Sequelize[_0x7a58('0x8')](0x3)[_0x7a58('0x9')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':'#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'},'dialTimezone':{'type':Sequelize[_0x7a58('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x7a58('0x2')],'defaultValue':'07:00-22:00,*,*,*'},'dialCheckDuplicateType':{'type':Sequelize[_0x7a58('0x4')]('always',_0x7a58('0x11'),_0x7a58('0x12')),'defaultValue':_0x7a58('0x13')},'dialAMDActive':{'type':Sequelize[_0x7a58('0x6')],'defaultValue':0x0,'comment':_0x7a58('0x14')},'dialAMDInitialSilence':{'type':Sequelize[_0x7a58('0x8')](0x9)[_0x7a58('0x9')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x7a58('0x15')},'dialAMDGreeting':{'type':Sequelize[_0x7a58('0x8')](0x9)[_0x7a58('0x9')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x7a58('0x16')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x7a58('0x8')](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x7a58('0x17')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x7a58('0x8')](0x9)[_0x7a58('0x9')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize[_0x7a58('0x8')](0x9)[_0x7a58('0x9')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x7a58('0x18')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x7a58('0x8')](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x7a58('0x19')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x7a58('0x8')](0x9)[_0x7a58('0x9')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x7a58('0x1a')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x7a58('0x8')](0x5)[_0x7a58('0x9')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x7a58('0x1b')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x7a58('0x8')](0x9)[_0x7a58('0x9')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x7a58('0x1c')},'dialOrderByScheduledAt':{'type':Sequelize[_0x7a58('0x4')]('DESC','ASC'),'defaultValue':_0x7a58('0x1d')},'dialPrefix':{'type':Sequelize[_0x7a58('0x2')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x7a58('0x8')](0x3)[_0x7a58('0x9')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)[_0x7a58('0x9')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x7a58('0x8')](0x3)[_0x7a58('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7a58('0x1e')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x7a58('0x8')](0x5)[_0x7a58('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialDropMaxRetry':{'type':Sequelize[_0x7a58('0x8')](0x3)[_0x7a58('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize[_0x7a58('0x8')](0x5)[_0x7a58('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7a58('0x1f')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x7a58('0x8')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7a58('0x20')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x7a58('0x8')](0x5)[_0x7a58('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7a58('0x21')},'dialMachineMaxRetry':{'type':Sequelize[_0x7a58('0x8')](0x3)[_0x7a58('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7a58('0x22')},'dialMachineRetryFrequency':{'type':Sequelize[_0x7a58('0x8')](0x5)[_0x7a58('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7a58('0x23')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x7a58('0x8')](0x3)[_0x7a58('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#AgentReject\x20Retry\x20(min:1,\x20max:999)'},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x7a58('0x8')](0x5)[_0x7a58('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7a58('0x24')}};
\ No newline at end of file
+var _0x6e91=['#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\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','ENUM','always','onlyIfOpen','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)','#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)','Drop\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)','sequelize','exports','STRING','name','ivr','BOOLEAN','Active/Disactive\x20Campaign','UNSIGNED','INTEGER','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'];(function(_0x128b04,_0x5de299){var _0x4a79e0=function(_0x4ea9b1){while(--_0x4ea9b1){_0x128b04['push'](_0x128b04['shift']());}};_0x4a79e0(++_0x5de299);}(_0x6e91,0x15e));var _0x16e9=function(_0x5a8a3c,_0x505557){_0x5a8a3c=_0x5a8a3c-0x0;var _0x201660=_0x6e91[_0x5a8a3c];return _0x201660;};'use strict';var Sequelize=require(_0x16e9('0x0'));module[_0x16e9('0x1')]={'name':{'type':Sequelize[_0x16e9('0x2')],'unique':_0x16e9('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize['ENUM']('ivr'),'allowNull':![],'defaultValue':_0x16e9('0x4')},'description':{'type':Sequelize[_0x16e9('0x2')]},'active':{'type':Sequelize[_0x16e9('0x5')],'defaultValue':0x0,'comment':_0x16e9('0x6')},'limitCalls':{'type':Sequelize['INTEGER'](0x4)[_0x16e9('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':'Max\x20200\x20calls.'},'dialOriginateCallerIdName':{'type':Sequelize[_0x16e9('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x16e9('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0x16e9('0x8')](0x3)[_0x16e9('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x16e9('0x9')},'dialCongestionMaxRetry':{'type':Sequelize[_0x16e9('0x8')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x16e9('0xa')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x16e9('0x8')](0x5)[_0x16e9('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x16e9('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x16e9('0xb')},'dialBusyRetryFrequency':{'type':Sequelize[_0x16e9('0x8')](0x5)[_0x16e9('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x16e9('0xc')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x16e9('0x8')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x16e9('0x8')](0x5)[_0x16e9('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x16e9('0xd')},'dialGlobalMaxRetry':{'type':Sequelize[_0x16e9('0x8')](0x3)[_0x16e9('0x7')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x16e9('0xe')},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x16e9('0x2')],'defaultValue':_0x16e9('0xf')},'dialCheckDuplicateType':{'type':Sequelize[_0x16e9('0x10')](_0x16e9('0x11'),'never',_0x16e9('0x12')),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize[_0x16e9('0x5')],'defaultValue':0x0,'comment':_0x16e9('0x13')},'dialAMDInitialSilence':{'type':Sequelize[_0x16e9('0x8')](0x9)[_0x16e9('0x7')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x16e9('0x14')},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)[_0x16e9('0x7')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x16e9('0x15')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0x16e9('0x7')],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x16e9('0x8')](0x9)[_0x16e9('0x7')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x16e9('0x16')},'dialAMDMinWordLength':{'type':Sequelize[_0x16e9('0x8')](0x9)[_0x16e9('0x7')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x16e9('0x17')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x16e9('0x8')](0x9)[_0x16e9('0x7')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x16e9('0x18')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x16e9('0x8')](0x9)[_0x16e9('0x7')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x16e9('0x19')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x16e9('0x8')](0x5)[_0x16e9('0x7')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x16e9('0x1a')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x16e9('0x8')](0x9)[_0x16e9('0x7')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x16e9('0x1b')},'dialOrderByScheduledAt':{'type':Sequelize['ENUM'](_0x16e9('0x1c'),_0x16e9('0x1d')),'defaultValue':_0x16e9('0x1c')},'dialPrefix':{'type':Sequelize[_0x16e9('0x2')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x16e9('0x8')](0x3)[_0x16e9('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x16e9('0x1e')},'dialCutDigit':{'type':Sequelize[_0x16e9('0x8')](0x3)[_0x16e9('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x16e9('0x1f')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x16e9('0x8')](0x3)[_0x16e9('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x16e9('0x20')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x16e9('0x8')](0x5)[_0x16e9('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x16e9('0x21')},'dialDropMaxRetry':{'type':Sequelize[_0x16e9('0x8')](0x3)[_0x16e9('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x16e9('0x22')},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x16e9('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x16e9('0x23')},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x16e9('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x16e9('0x8')](0x5)[_0x16e9('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x16e9('0x24')},'dialMachineMaxRetry':{'type':Sequelize[_0x16e9('0x8')](0x3)[_0x16e9('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x16e9('0x25')},'dialMachineRetryFrequency':{'type':Sequelize[_0x16e9('0x8')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x16e9('0x8')](0x3)[_0x16e9('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x16e9('0x26')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x16e9('0x8')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x16e9('0x27')}};
\ No newline at end of file
index 7298386..917b778 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedf1=['removeLists','getBlackLists','addBlackLists','cm_hopper_black','push','all','removeBlackLists','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','then','destroy','get','IvrCampaigns','stack','name','send','index','map','Campaign','rawAttributes','type','model','query','keys','intersection','attributes','hasOwnProperty','nolimit','sort','filters','pick','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','fields','length','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','find','userProfileId','UserProfileResource','create','error','clone','omit','createdAt','updatedAt','body','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','getHoppers','findOne','order','CmHopper','getHopperHistories','CmHopperHistory','CampaignId','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','addLists','ids','dialCheckDuplicateType','always','into','cm_hopper','phone','scheduledAt','ContactId','select','field','NOW()','ListId','toString','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','COALESCE(calleridnum,\x27\x27)','from','cm_hopper_final','CampaignId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','COALESCE(phone,\x27\x27)','onlyIfOpen','insert','fromQuery','CmListId','sequelize'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xedf1,0x11f));var _0x1edf=function(_0x33f8ae,_0x313780){_0x33f8ae=_0x33f8ae-0x0;var _0x526d4d=_0xedf1[_0x33f8ae];return _0x526d4d;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x1edf('0x0'));var jsonpatch=require(_0x1edf('0x1'));var rp=require(_0x1edf('0x2'));var moment=require(_0x1edf('0x3'));var BPromise=require(_0x1edf('0x4'));var Mustache=require(_0x1edf('0x5'));var util=require(_0x1edf('0x6'));var path=require('path');var sox=require(_0x1edf('0x7'));var csv=require(_0x1edf('0x8'));var ejs=require(_0x1edf('0x9'));var fs=require('fs');var fs_extra=require(_0x1edf('0xa'));var _=require(_0x1edf('0xb'));var squel=require(_0x1edf('0xc'));var crypto=require(_0x1edf('0xd'));var jsforce=require(_0x1edf('0xe'));var deskjs=require(_0x1edf('0xf'));var toCsv=require('to-csv');var querystring=require(_0x1edf('0x10'));var Papa=require(_0x1edf('0x11'));var Redis=require(_0x1edf('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x1edf('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1edf('0x14'));var logger=require(_0x1edf('0x15'))('api');var utils=require(_0x1edf('0x16'));var config=require(_0x1edf('0x17'));var licenseUtil=require(_0x1edf('0x18'));var db=require(_0x1edf('0x19'))['db'];function respondWithStatusCode(_0x28a87a,_0x315c55){_0x315c55=_0x315c55||0xcc;return function(_0x3508f9){if(_0x3508f9){return _0x28a87a[_0x1edf('0x1a')](_0x315c55);}return _0x28a87a[_0x1edf('0x1b')](_0x315c55)[_0x1edf('0x1c')]();};}function respondWithResult(_0x5aad1d,_0x348444){_0x348444=_0x348444||0xc8;return function(_0x462f4b){if(_0x462f4b){return _0x5aad1d[_0x1edf('0x1b')](_0x348444)[_0x1edf('0x1d')](_0x462f4b);}};}function respondWithFilteredResult(_0x387b27,_0x24db37){return function(_0x1d192c){if(_0x1d192c){var _0x50d440=typeof _0x24db37['offset']===_0x1edf('0x1e')&&typeof _0x24db37[_0x1edf('0x1f')]===_0x1edf('0x1e');var _0x47d619=_0x1d192c[_0x1edf('0x20')];var _0x424f50=_0x50d440?0x0:_0x24db37[_0x1edf('0x21')];var _0x497d6c=_0x50d440?_0x1d192c[_0x1edf('0x20')]:_0x24db37[_0x1edf('0x21')]+_0x24db37[_0x1edf('0x1f')];var _0x17c026;if(_0x497d6c>=_0x47d619){_0x497d6c=_0x47d619;_0x17c026=0xc8;}else{_0x17c026=0xce;}_0x387b27[_0x1edf('0x1b')](_0x17c026);return _0x387b27[_0x1edf('0x22')](_0x1edf('0x23'),_0x424f50+'-'+_0x497d6c+'/'+_0x47d619)['json'](_0x1d192c);}return null;};}function patchUpdates(_0x186d55){return function(_0x3f696b){try{jsonpatch[_0x1edf('0x24')](_0x3f696b,_0x186d55,!![]);}catch(_0x509338){return BPromise[_0x1edf('0x25')](_0x509338);}return _0x3f696b[_0x1edf('0x26')]();};}function saveUpdates(_0x338281,_0x54c463){return function(_0xd674f2){if(_0xd674f2){return _0xd674f2['update'](_0x338281)[_0x1edf('0x27')](function(_0x27f96a){return _0x27f96a;});}return null;};}function removeEntity(_0x57c1ba,_0x5857c9){return function(_0x11d479){if(_0x11d479){return _0x11d479[_0x1edf('0x28')]()[_0x1edf('0x27')](function(){var _0x2a2606=_0x11d479[_0x1edf('0x29')]({'plain':!![]});var _0x545b99=_0x1edf('0x2a');return db['UserProfileResource'][_0x1edf('0x28')]({'where':{'type':_0x545b99,'resourceId':_0x2a2606['id']}})['then'](function(){return _0x11d479;});})[_0x1edf('0x27')](function(){_0x57c1ba[_0x1edf('0x1b')](0xcc)[_0x1edf('0x1c')]();});}};}function handleEntityNotFound(_0x177cf4,_0x3eca37){return function(_0x14bcec){if(!_0x14bcec){_0x177cf4['sendStatus'](0x194);}return _0x14bcec;};}function handleError(_0x3a2828,_0x388fac){_0x388fac=_0x388fac||0x1f4;return function(_0x3d66de){logger['error'](_0x3d66de[_0x1edf('0x2b')]);if(_0x3d66de['name']){delete _0x3d66de[_0x1edf('0x2c')];}_0x3a2828[_0x1edf('0x1b')](_0x388fac)[_0x1edf('0x2d')](_0x3d66de);};}exports[_0x1edf('0x2e')]=function(_0x4c9b1d,_0x1a02ba){var _0x1c7e84={},_0x3a191d={},_0x714308={'count':0x0,'rows':[]};var _0x16241e=_[_0x1edf('0x2f')](db[_0x1edf('0x30')][_0x1edf('0x31')],function(_0x1b3dd4){return{'name':_0x1b3dd4['fieldName'],'type':_0x1b3dd4[_0x1edf('0x32')]['key']};});_0x3a191d[_0x1edf('0x33')]=_[_0x1edf('0x2f')](_0x16241e,'name');_0x3a191d[_0x1edf('0x34')]=_[_0x1edf('0x35')](_0x4c9b1d[_0x1edf('0x34')]);_0x3a191d['filters']=_[_0x1edf('0x36')](_0x3a191d[_0x1edf('0x33')],_0x3a191d[_0x1edf('0x34')]);_0x1c7e84['attributes']=_['intersection'](_0x3a191d[_0x1edf('0x33')],qs['fields'](_0x4c9b1d['query']['fields']));_0x1c7e84[_0x1edf('0x37')]=_0x1c7e84[_0x1edf('0x37')]['length']?_0x1c7e84['attributes']:_0x3a191d[_0x1edf('0x33')];if(!_0x4c9b1d['query'][_0x1edf('0x38')](_0x1edf('0x39'))){_0x1c7e84[_0x1edf('0x1f')]=qs[_0x1edf('0x1f')](_0x4c9b1d['query'][_0x1edf('0x1f')]);_0x1c7e84[_0x1edf('0x21')]=qs[_0x1edf('0x21')](_0x4c9b1d[_0x1edf('0x34')][_0x1edf('0x21')]);}_0x1c7e84['order']=qs[_0x1edf('0x3a')](_0x4c9b1d[_0x1edf('0x34')][_0x1edf('0x3a')]);_0x1c7e84['where']=qs[_0x1edf('0x3b')](_[_0x1edf('0x3c')](_0x4c9b1d[_0x1edf('0x34')],_0x3a191d[_0x1edf('0x3b')]),_0x16241e);if(_0x4c9b1d[_0x1edf('0x34')]['filter']){_0x1c7e84[_0x1edf('0x3d')]=_[_0x1edf('0x3e')](_0x1c7e84[_0x1edf('0x3d')],{'$or':_[_0x1edf('0x2f')](_0x16241e,function(_0x5c25ae){if(_0x5c25ae[_0x1edf('0x32')]!==_0x1edf('0x3f')){var _0x1981fa={};_0x1981fa[_0x5c25ae[_0x1edf('0x2c')]]={'$like':'%'+_0x4c9b1d['query'][_0x1edf('0x40')]+'%'};return _0x1981fa;}})});}_0x1c7e84=_[_0x1edf('0x3e')]({},_0x1c7e84,_0x4c9b1d[_0x1edf('0x41')]);var _0xba2b2f={'where':_0x1c7e84['where']};return db[_0x1edf('0x30')]['count'](_0xba2b2f)[_0x1edf('0x27')](function(_0x5f3c87){_0x714308['count']=_0x5f3c87;if(_0x4c9b1d[_0x1edf('0x34')][_0x1edf('0x42')]){_0x1c7e84[_0x1edf('0x43')]=[{'all':!![]}];}return db[_0x1edf('0x30')][_0x1edf('0x44')](_0x1c7e84);})[_0x1edf('0x27')](function(_0x1dbf22){_0x714308[_0x1edf('0x45')]=_0x1dbf22;return _0x714308;})['then'](respondWithFilteredResult(_0x1a02ba,_0x1c7e84))[_0x1edf('0x46')](handleError(_0x1a02ba,null));};exports[_0x1edf('0x47')]=function(_0x45dc41,_0x434380){var _0x55ab44={'raw':![],'where':{'id':_0x45dc41[_0x1edf('0x48')]['id']}},_0x33ffbf={};_0x33ffbf[_0x1edf('0x33')]=_[_0x1edf('0x35')](db['Campaign']['rawAttributes']);_0x33ffbf['query']=_[_0x1edf('0x35')](_0x45dc41[_0x1edf('0x34')]);_0x33ffbf[_0x1edf('0x3b')]=_['intersection'](_0x33ffbf[_0x1edf('0x33')],_0x33ffbf[_0x1edf('0x34')]);_0x55ab44[_0x1edf('0x37')]=_['intersection'](_0x33ffbf[_0x1edf('0x33')],qs[_0x1edf('0x49')](_0x45dc41['query'][_0x1edf('0x49')]));_0x55ab44[_0x1edf('0x37')]=_0x55ab44[_0x1edf('0x37')][_0x1edf('0x4a')]?_0x55ab44[_0x1edf('0x37')]:_0x33ffbf[_0x1edf('0x33')];if(_0x45dc41[_0x1edf('0x34')]['includeAll']){_0x55ab44['include']=[{'all':!![]}];}_0x55ab44=_[_0x1edf('0x3e')]({},_0x55ab44,_0x45dc41[_0x1edf('0x41')]);return db[_0x1edf('0x30')]['find'](_0x55ab44)['then'](handleEntityNotFound(_0x434380,null))[_0x1edf('0x27')](respondWithResult(_0x434380,null))[_0x1edf('0x46')](handleError(_0x434380,null));};exports['create']=function(_0x548d1b,_0x50f4ba){return db[_0x1edf('0x30')]['create'](_0x548d1b['body'],{})[_0x1edf('0x27')](function(_0x497a01){var _0x3eb1bf=_0x548d1b['user'][_0x1edf('0x29')]({'plain':!![]});if(!_0x3eb1bf)throw new Error(_0x1edf('0x4b'));if(_0x3eb1bf[_0x1edf('0x4c')]===_0x1edf('0x4d')){var _0x15be89=_0x497a01[_0x1edf('0x29')]({'plain':!![]});var _0x3b73bd=_0x1edf('0x2a');return db['UserProfileSection'][_0x1edf('0x4e')]({'where':{'name':_0x3b73bd,'userProfileId':_0x3eb1bf[_0x1edf('0x4f')]},'raw':!![]})['then'](function(_0x47decf){if(_0x47decf&&_0x47decf['autoAssociation']===0x0){return db[_0x1edf('0x50')][_0x1edf('0x51')]({'name':_0x15be89['name'],'resourceId':_0x15be89['id'],'type':_0x47decf[_0x1edf('0x2c')],'sectionId':_0x47decf['id']},{})[_0x1edf('0x27')](function(){return _0x497a01;});}else{return _0x497a01;}})[_0x1edf('0x46')](function(_0x4a5807){logger[_0x1edf('0x52')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4a5807);throw _0x4a5807;});}return _0x497a01;})['then'](respondWithResult(_0x50f4ba,0xc9))[_0x1edf('0x46')](handleError(_0x50f4ba,null));};exports[_0x1edf('0x53')]=function(_0x255e90,_0xda02bb){var _0x3261b1={'where':{'id':_0x255e90[_0x1edf('0x48')]['id']}},_0x1ad7ac={};_0x1ad7ac[_0x1edf('0x33')]=_[_0x1edf('0x35')](db[_0x1edf('0x30')][_0x1edf('0x31')]);_0x3261b1[_0x1edf('0x37')]=_[_0x1edf('0x36')](_0x1ad7ac[_0x1edf('0x33')],qs[_0x1edf('0x49')](_0x255e90[_0x1edf('0x34')][_0x1edf('0x49')]));_0x3261b1[_0x1edf('0x37')]=_0x3261b1['attributes'][_0x1edf('0x4a')]?_0x3261b1[_0x1edf('0x37')]:_0x1ad7ac[_0x1edf('0x33')];if(_0x255e90[_0x1edf('0x34')][_0x1edf('0x42')]){_0x3261b1[_0x1edf('0x43')]=[{'all':!![]}];}_0x3261b1=_[_0x1edf('0x3e')]({},_0x3261b1,_0x255e90[_0x1edf('0x41')]);return db[_0x1edf('0x30')][_0x1edf('0x4e')](_0x3261b1)[_0x1edf('0x27')](handleEntityNotFound(_0xda02bb,null))['then'](function(_0x50bea3){if(_0x50bea3){var _0x13bba0=_0x50bea3[_0x1edf('0x29')]({'plain':!![]});_0x13bba0=qs[_0x1edf('0x54')](_0x13bba0,['id',_0x1edf('0x55'),_0x1edf('0x56')]);_0x255e90[_0x1edf('0x57')]=_[_0x1edf('0x54')](_0x255e90[_0x1edf('0x57')],['id',_0x1edf('0x55'),_0x1edf('0x56')]);return db['Campaign'][_0x1edf('0x51')](_['merge'](_0x13bba0,_0x255e90[_0x1edf('0x57')]),{'include':_0x255e90[_0x1edf('0x34')][_0x1edf('0x42')]?[{'all':!![]}]:undefined})['then'](function(_0x39db8e){var _0x3ec265=_0x255e90[_0x1edf('0x4d')]['get']({'plain':!![]});if(!_0x3ec265)throw new Error(_0x1edf('0x4b'));if(_0x3ec265[_0x1edf('0x4c')]===_0x1edf('0x4d')){var _0x393b0a=_0x39db8e[_0x1edf('0x29')]({'plain':!![]});var _0x7f6276='IvrCampaigns';return db['UserProfileSection'][_0x1edf('0x4e')]({'where':{'name':_0x7f6276,'userProfileId':_0x3ec265[_0x1edf('0x4f')]},'raw':!![]})[_0x1edf('0x27')](function(_0x4b82a3){if(_0x4b82a3&&_0x4b82a3[_0x1edf('0x58')]===0x0){return db['UserProfileResource'][_0x1edf('0x51')]({'name':_0x393b0a[_0x1edf('0x2c')],'resourceId':_0x393b0a['id'],'type':_0x4b82a3[_0x1edf('0x2c')],'sectionId':_0x4b82a3['id']},{})[_0x1edf('0x27')](function(){return _0x39db8e;});}else{return _0x39db8e;}})[_0x1edf('0x46')](function(_0x3fd832){logger[_0x1edf('0x52')](_0x1edf('0x59'),_0x3fd832);throw _0x3fd832;});}return _0x39db8e;});}})[_0x1edf('0x27')](respondWithResult(_0xda02bb,0xc9))['catch'](handleError(_0xda02bb,null));};exports[_0x1edf('0x5a')]=function(_0x36bc6b,_0x1888a4){if(_0x36bc6b['body']['id']){delete _0x36bc6b['body']['id'];}return db[_0x1edf('0x30')][_0x1edf('0x4e')]({'where':{'id':_0x36bc6b[_0x1edf('0x48')]['id']}})[_0x1edf('0x27')](handleEntityNotFound(_0x1888a4,null))[_0x1edf('0x27')](saveUpdates(_0x36bc6b[_0x1edf('0x57')],null))['then'](respondWithResult(_0x1888a4,null))[_0x1edf('0x46')](handleError(_0x1888a4,null));};exports[_0x1edf('0x28')]=function(_0xd6da3f,_0x2eae0c){return db[_0x1edf('0x30')]['find']({'where':{'id':_0xd6da3f[_0x1edf('0x48')]['id']}})[_0x1edf('0x27')](handleEntityNotFound(_0x2eae0c,null))['then'](removeEntity(_0x2eae0c,null))[_0x1edf('0x46')](handleError(_0x2eae0c,null));};exports[_0x1edf('0x5b')]=function(_0x217f0f,_0x417bfa,_0x42b5f2){var _0x45b471={'raw':!![],'where':{}};var _0x22243b={};var _0x36eb81={'count':0x0,'rows':[]};return db['Campaign'][_0x1edf('0x5c')]({'where':{'id':_0x217f0f[_0x1edf('0x48')]['id']}})[_0x1edf('0x27')](handleEntityNotFound(_0x417bfa,null))[_0x1edf('0x27')](function(_0xbc11cf){if(_0xbc11cf){_0x22243b[_0x1edf('0x33')]=_['keys'](db['CmHopper'][_0x1edf('0x31')]);_0x22243b['query']=_[_0x1edf('0x35')](_0x217f0f[_0x1edf('0x34')]);_0x22243b['filters']=_[_0x1edf('0x36')](_0x22243b[_0x1edf('0x33')],_0x22243b[_0x1edf('0x34')]);_0x45b471['attributes']=_[_0x1edf('0x36')](_0x22243b[_0x1edf('0x33')],qs[_0x1edf('0x49')](_0x217f0f[_0x1edf('0x34')]['fields']));_0x45b471['attributes']=_0x45b471[_0x1edf('0x37')]['length']?_0x45b471[_0x1edf('0x37')]:_0x22243b[_0x1edf('0x33')];if(!_0x217f0f[_0x1edf('0x34')][_0x1edf('0x38')](_0x1edf('0x39'))){_0x45b471[_0x1edf('0x1f')]=qs[_0x1edf('0x1f')](_0x217f0f[_0x1edf('0x34')][_0x1edf('0x1f')]);_0x45b471[_0x1edf('0x21')]=qs[_0x1edf('0x21')](_0x217f0f[_0x1edf('0x34')][_0x1edf('0x21')]);}_0x45b471[_0x1edf('0x5d')]=qs[_0x1edf('0x3a')](_0x217f0f[_0x1edf('0x34')][_0x1edf('0x3a')]);_0x45b471[_0x1edf('0x3d')]=qs['filters'](_[_0x1edf('0x3c')](_0x217f0f[_0x1edf('0x34')],_0x22243b[_0x1edf('0x3b')]));_0x45b471[_0x1edf('0x3d')]['CampaignId']=_0xbc11cf['id'];if(_0x217f0f[_0x1edf('0x34')][_0x1edf('0x40')]){_0x45b471[_0x1edf('0x3d')]=_[_0x1edf('0x3e')](_0x45b471[_0x1edf('0x3d')],{'$or':_[_0x1edf('0x2f')](_0x45b471[_0x1edf('0x37')],function(_0x2b1fdf){var _0x209d52={};_0x209d52[_0x2b1fdf]={'$like':'%'+_0x217f0f[_0x1edf('0x34')][_0x1edf('0x40')]+'%'};return _0x209d52;})});}_0x45b471=_['merge']({},_0x45b471,_0x217f0f[_0x1edf('0x41')]);return db['CmHopper']['count']({'where':_0x45b471['where']})['then'](function(_0x420f87){_0x36eb81[_0x1edf('0x20')]=_0x420f87;if(_0x217f0f[_0x1edf('0x34')][_0x1edf('0x42')]){_0x45b471[_0x1edf('0x43')]=[{'all':!![]}];}return db[_0x1edf('0x5e')][_0x1edf('0x44')](_0x45b471);})['then'](function(_0xb820bc){_0x36eb81[_0x1edf('0x45')]=_0xb820bc;return _0x36eb81;});}})['then'](respondWithFilteredResult(_0x417bfa,_0x45b471))[_0x1edf('0x46')](handleError(_0x417bfa,null));};exports[_0x1edf('0x5f')]=function(_0x3d46b9,_0xfcf855,_0x1848f0){var _0x4a02f9={'raw':!![],'where':{}};var _0x5a4cc7={};var _0x38aa47={'count':0x0,'rows':[]};return db['Campaign'][_0x1edf('0x5c')]({'where':{'id':_0x3d46b9[_0x1edf('0x48')]['id']}})['then'](handleEntityNotFound(_0xfcf855,null))[_0x1edf('0x27')](function(_0x3ef66f){if(_0x3ef66f){_0x5a4cc7['model']=_[_0x1edf('0x35')](db[_0x1edf('0x60')][_0x1edf('0x31')]);_0x5a4cc7['query']=_['keys'](_0x3d46b9[_0x1edf('0x34')]);_0x5a4cc7[_0x1edf('0x3b')]=_[_0x1edf('0x36')](_0x5a4cc7['model'],_0x5a4cc7['query']);_0x4a02f9['attributes']=_[_0x1edf('0x36')](_0x5a4cc7[_0x1edf('0x33')],qs[_0x1edf('0x49')](_0x3d46b9['query'][_0x1edf('0x49')]));_0x4a02f9[_0x1edf('0x37')]=_0x4a02f9[_0x1edf('0x37')][_0x1edf('0x4a')]?_0x4a02f9[_0x1edf('0x37')]:_0x5a4cc7[_0x1edf('0x33')];if(!_0x3d46b9[_0x1edf('0x34')][_0x1edf('0x38')](_0x1edf('0x39'))){_0x4a02f9[_0x1edf('0x1f')]=qs[_0x1edf('0x1f')](_0x3d46b9['query'][_0x1edf('0x1f')]);_0x4a02f9[_0x1edf('0x21')]=qs[_0x1edf('0x21')](_0x3d46b9['query'][_0x1edf('0x21')]);}_0x4a02f9[_0x1edf('0x5d')]=qs[_0x1edf('0x3a')](_0x3d46b9[_0x1edf('0x34')][_0x1edf('0x3a')]);_0x4a02f9['where']=qs[_0x1edf('0x3b')](_[_0x1edf('0x3c')](_0x3d46b9[_0x1edf('0x34')],_0x5a4cc7[_0x1edf('0x3b')]));_0x4a02f9[_0x1edf('0x3d')][_0x1edf('0x61')]=_0x3ef66f['id'];if(_0x3d46b9[_0x1edf('0x34')]['filter']){_0x4a02f9[_0x1edf('0x3d')]=_[_0x1edf('0x3e')](_0x4a02f9[_0x1edf('0x3d')],{'$or':_[_0x1edf('0x2f')](_0x4a02f9[_0x1edf('0x37')],function(_0x5e6288){var _0x314144={};_0x314144[_0x5e6288]={'$like':'%'+_0x3d46b9[_0x1edf('0x34')][_0x1edf('0x40')]+'%'};return _0x314144;})});}_0x4a02f9=_['merge']({},_0x4a02f9,_0x3d46b9['options']);return db[_0x1edf('0x60')][_0x1edf('0x20')]({'where':_0x4a02f9[_0x1edf('0x3d')]})['then'](function(_0x1f1c0d){_0x38aa47['count']=_0x1f1c0d;if(_0x3d46b9['query']['includeAll']){_0x4a02f9[_0x1edf('0x43')]=[{'all':!![]}];}return db['CmHopperHistory']['findAll'](_0x4a02f9);})[_0x1edf('0x27')](function(_0x242e81){_0x38aa47[_0x1edf('0x45')]=_0x242e81;return _0x38aa47;});}})[_0x1edf('0x27')](respondWithFilteredResult(_0xfcf855,_0x4a02f9))[_0x1edf('0x46')](handleError(_0xfcf855,null));};exports[_0x1edf('0x62')]=function(_0x5a692a,_0x4ff030,_0x220e70){var _0x3a90be={'raw':!![],'where':{}};var _0x303153={};var _0x25eab7={'count':0x0,'rows':[]};return db['Campaign']['findOne']({'where':{'id':_0x5a692a[_0x1edf('0x48')]['id']}})[_0x1edf('0x27')](handleEntityNotFound(_0x4ff030,null))[_0x1edf('0x27')](function(_0x16e685){if(_0x16e685){_0x303153[_0x1edf('0x33')]=_['keys'](db[_0x1edf('0x63')]['rawAttributes']);_0x303153[_0x1edf('0x34')]=_[_0x1edf('0x35')](_0x5a692a[_0x1edf('0x34')]);_0x303153['filters']=_['intersection'](_0x303153[_0x1edf('0x33')],_0x303153[_0x1edf('0x34')]);_0x3a90be['attributes']=_[_0x1edf('0x36')](_0x303153[_0x1edf('0x33')],qs[_0x1edf('0x49')](_0x5a692a[_0x1edf('0x34')][_0x1edf('0x49')]));_0x3a90be[_0x1edf('0x37')]=_0x3a90be[_0x1edf('0x37')][_0x1edf('0x4a')]?_0x3a90be[_0x1edf('0x37')]:_0x303153[_0x1edf('0x33')];if(!_0x5a692a['query'][_0x1edf('0x38')](_0x1edf('0x39'))){_0x3a90be[_0x1edf('0x1f')]=qs[_0x1edf('0x1f')](_0x5a692a[_0x1edf('0x34')][_0x1edf('0x1f')]);_0x3a90be[_0x1edf('0x21')]=qs[_0x1edf('0x21')](_0x5a692a['query']['offset']);}_0x3a90be[_0x1edf('0x5d')]=qs['sort'](_0x5a692a[_0x1edf('0x34')][_0x1edf('0x3a')]);_0x3a90be[_0x1edf('0x3d')]=qs['filters'](_['pick'](_0x5a692a['query'],_0x303153['filters']));_0x3a90be[_0x1edf('0x3d')][_0x1edf('0x61')]=_0x16e685['id'];if(_0x5a692a[_0x1edf('0x34')][_0x1edf('0x40')]){_0x3a90be[_0x1edf('0x3d')]=_[_0x1edf('0x3e')](_0x3a90be[_0x1edf('0x3d')],{'$or':_[_0x1edf('0x2f')](_0x3a90be[_0x1edf('0x37')],function(_0x31de99){var _0x3dc040={};_0x3dc040[_0x31de99]={'$like':'%'+_0x5a692a[_0x1edf('0x34')][_0x1edf('0x40')]+'%'};return _0x3dc040;})});}_0x3a90be=_[_0x1edf('0x3e')]({},_0x3a90be,_0x5a692a[_0x1edf('0x41')]);return db[_0x1edf('0x63')]['count']({'where':_0x3a90be[_0x1edf('0x3d')]})[_0x1edf('0x27')](function(_0x20ccca){_0x25eab7[_0x1edf('0x20')]=_0x20ccca;if(_0x5a692a['query'][_0x1edf('0x42')]){_0x3a90be[_0x1edf('0x43')]=[{'all':!![]}];}return db[_0x1edf('0x63')]['findAll'](_0x3a90be);})['then'](function(_0x202d70){_0x25eab7[_0x1edf('0x45')]=_0x202d70;return _0x25eab7;});}})[_0x1edf('0x27')](respondWithFilteredResult(_0x4ff030,_0x3a90be))[_0x1edf('0x46')](handleError(_0x4ff030,null));};exports[_0x1edf('0x64')]=function(_0x412a0e,_0x1d385d,_0x4eb690){var _0x50273a={'raw':!![],'where':{}};var _0x39f81f={};var _0x195497={'count':0x0,'rows':[]};return db['Campaign'][_0x1edf('0x5c')]({'where':{'id':_0x412a0e[_0x1edf('0x48')]['id']}})['then'](handleEntityNotFound(_0x1d385d,null))['then'](function(_0x56e1d3){if(_0x56e1d3){_0x39f81f[_0x1edf('0x33')]=_['keys'](db[_0x1edf('0x65')][_0x1edf('0x31')]);_0x39f81f['query']=_['keys'](_0x412a0e[_0x1edf('0x34')]);_0x39f81f['filters']=_[_0x1edf('0x36')](_0x39f81f[_0x1edf('0x33')],_0x39f81f[_0x1edf('0x34')]);_0x50273a[_0x1edf('0x37')]=_[_0x1edf('0x36')](_0x39f81f[_0x1edf('0x33')],qs[_0x1edf('0x49')](_0x412a0e['query'][_0x1edf('0x49')]));_0x50273a['attributes']=_0x50273a[_0x1edf('0x37')][_0x1edf('0x4a')]?_0x50273a[_0x1edf('0x37')]:_0x39f81f['model'];if(!_0x412a0e[_0x1edf('0x34')][_0x1edf('0x38')](_0x1edf('0x39'))){_0x50273a[_0x1edf('0x1f')]=qs[_0x1edf('0x1f')](_0x412a0e[_0x1edf('0x34')][_0x1edf('0x1f')]);_0x50273a[_0x1edf('0x21')]=qs[_0x1edf('0x21')](_0x412a0e['query'][_0x1edf('0x21')]);}_0x50273a[_0x1edf('0x5d')]=qs[_0x1edf('0x3a')](_0x412a0e[_0x1edf('0x34')][_0x1edf('0x3a')]);_0x50273a['where']=qs[_0x1edf('0x3b')](_['pick'](_0x412a0e[_0x1edf('0x34')],_0x39f81f[_0x1edf('0x3b')]));_0x50273a['where'][_0x1edf('0x61')]=_0x56e1d3['id'];if(_0x412a0e[_0x1edf('0x34')][_0x1edf('0x40')]){_0x50273a[_0x1edf('0x3d')]=_[_0x1edf('0x3e')](_0x50273a[_0x1edf('0x3d')],{'$or':_[_0x1edf('0x2f')](_0x50273a[_0x1edf('0x37')],function(_0x36cd99){var _0x5bad39={};_0x5bad39[_0x36cd99]={'$like':'%'+_0x412a0e['query']['filter']+'%'};return _0x5bad39;})});}_0x50273a=_[_0x1edf('0x3e')]({},_0x50273a,_0x412a0e[_0x1edf('0x41')]);return db[_0x1edf('0x65')]['count']({'where':_0x50273a[_0x1edf('0x3d')]})['then'](function(_0x5376ef){_0x195497['count']=_0x5376ef;if(_0x412a0e['query']['includeAll']){_0x50273a[_0x1edf('0x43')]=[{'all':!![]}];}return db[_0x1edf('0x65')][_0x1edf('0x44')](_0x50273a);})[_0x1edf('0x27')](function(_0x54d156){_0x195497[_0x1edf('0x45')]=_0x54d156;return _0x195497;});}})['then'](respondWithFilteredResult(_0x1d385d,_0x50273a))[_0x1edf('0x46')](handleError(_0x1d385d,null));};exports[_0x1edf('0x66')]=function(_0xa90e04,_0x13d2a5,_0xc904af){var _0x14a427={};var _0x2cb705={};var _0xb2113a;var _0x1df7e3;return db[_0x1edf('0x30')][_0x1edf('0x5c')]({'where':{'id':_0xa90e04[_0x1edf('0x48')]['id']}})[_0x1edf('0x27')](handleEntityNotFound(_0x13d2a5,null))['then'](function(_0x12e06c){if(_0x12e06c){_0xb2113a=_0x12e06c;_0x2cb705[_0x1edf('0x33')]=_['keys'](db[_0x1edf('0x67')]['rawAttributes']);_0x2cb705[_0x1edf('0x34')]=_[_0x1edf('0x35')](_0xa90e04[_0x1edf('0x34')]);_0x2cb705[_0x1edf('0x3b')]=_[_0x1edf('0x36')](_0x2cb705[_0x1edf('0x33')],_0x2cb705[_0x1edf('0x34')]);_0x14a427[_0x1edf('0x37')]=_[_0x1edf('0x36')](_0x2cb705[_0x1edf('0x33')],qs[_0x1edf('0x49')](_0xa90e04[_0x1edf('0x34')]['fields']));_0x14a427['attributes']=_0x14a427[_0x1edf('0x37')][_0x1edf('0x4a')]?_0x14a427[_0x1edf('0x37')]:_0x2cb705[_0x1edf('0x33')];_0x14a427[_0x1edf('0x5d')]=qs[_0x1edf('0x3a')](_0xa90e04[_0x1edf('0x34')][_0x1edf('0x3a')]);_0x14a427['where']=qs[_0x1edf('0x3b')](_[_0x1edf('0x3c')](_0xa90e04['query'],_0x2cb705['filters']));if(_0xa90e04[_0x1edf('0x34')][_0x1edf('0x40')]){_0x14a427['where']=_[_0x1edf('0x3e')](_0x14a427['where'],{'$or':_[_0x1edf('0x2f')](_0x14a427[_0x1edf('0x37')],function(_0x94fe09){var _0x3c5689={};_0x3c5689[_0x94fe09]={'$like':'%'+_0xa90e04[_0x1edf('0x34')][_0x1edf('0x40')]+'%'};return _0x3c5689;})});}_0x14a427=_[_0x1edf('0x3e')]({},_0x14a427,_0xa90e04['options']);return _0xb2113a[_0x1edf('0x66')](_0x14a427);}})[_0x1edf('0x27')](function(_0x4d0133){if(_0x4d0133){_0x1df7e3=_0x4d0133['length'];if(!_0xa90e04[_0x1edf('0x34')]['hasOwnProperty'](_0x1edf('0x39'))){_0x14a427[_0x1edf('0x1f')]=qs[_0x1edf('0x1f')](_0xa90e04[_0x1edf('0x34')][_0x1edf('0x1f')]);_0x14a427[_0x1edf('0x21')]=qs[_0x1edf('0x21')](_0xa90e04['query'][_0x1edf('0x21')]);}return _0xb2113a[_0x1edf('0x66')](_0x14a427);}})['then'](function(_0x4405ff){if(_0x4405ff){return _0x4405ff?{'count':_0x1df7e3,'rows':_0x4405ff}:null;}})[_0x1edf('0x27')](respondWithResult(_0x13d2a5,null))[_0x1edf('0x46')](handleError(_0x13d2a5,null));};exports[_0x1edf('0x68')]=function(_0x8f8a5d,_0x32746d,_0x1cd881){var _0x3e5620,_0x3fc73d;return db[_0x1edf('0x30')][_0x1edf('0x4e')]({'where':{'id':_0x8f8a5d['params']['id']}})['then'](handleEntityNotFound(_0x32746d,null))['then'](function(_0xa059ab){if(_0xa059ab){_0x3fc73d=_0xa059ab;return _0xa059ab[_0x1edf('0x68')](_0x8f8a5d[_0x1edf('0x57')][_0x1edf('0x69')],_['omit'](_0x8f8a5d[_0x1edf('0x57')],[_0x1edf('0x69'),'id'])||{});}return null;})['spread'](function(_0x5402fd){var _0xafc874;_0x3e5620=_0x5402fd||[];var _0x3997fe=[];if(_0x5402fd){for(var _0x2f36ff=0x0;_0x2f36ff<_0x5402fd[_0x1edf('0x4a')];_0x2f36ff+=0x1){var _0x459192=_0x5402fd[_0x2f36ff][_0x1edf('0x29')]({'plain':!![]});_0x3fc73d[_0x1edf('0x6a')]=_0x8f8a5d[_0x1edf('0x57')]['dialCheckDuplicateType']?_0x8f8a5d['body'][_0x1edf('0x6a')]:_0x3fc73d[_0x1edf('0x6a')];switch(_0x3fc73d['dialCheckDuplicateType']){case _0x1edf('0x6b'):_0xafc874=squel['insert']()[_0x1edf('0x6c')](_0x1edf('0x6d'))['fromQuery']([_0x1edf('0x6e'),_0x1edf('0x6f'),_0x1edf('0x70'),'ListId',_0x1edf('0x61'),_0x1edf('0x55'),_0x1edf('0x56')],squel[_0x1edf('0x71')]()[_0x1edf('0x72')](_0x1edf('0x6e'),_0x1edf('0x6e'))[_0x1edf('0x72')](_0x1edf('0x73'),'scheduledAt')[_0x1edf('0x72')]('id','ContactId')[_0x1edf('0x72')](_0x459192['CmListId']['toString'](),_0x1edf('0x74'))[_0x1edf('0x72')](_0x8f8a5d[_0x1edf('0x48')]['id'][_0x1edf('0x75')](),'CampaignId')[_0x1edf('0x72')](_0x1edf('0x73'),_0x1edf('0x55'))[_0x1edf('0x72')]('NOW()',_0x1edf('0x56'))['from'](_0x1edf('0x76'))[_0x1edf('0x3d')](_0x1edf('0x77'))[_0x1edf('0x3d')](_0x1edf('0x78'),_0x459192['CmListId'][_0x1edf('0x75')]())[_0x1edf('0x3d')](_0x1edf('0x79'))[_0x1edf('0x3d')]('phone\x20NOT\x20IN\x20(?)',squel[_0x1edf('0x71')]()[_0x1edf('0x72')](_0x1edf('0x7a'))[_0x1edf('0x7b')](_0x1edf('0x7c'))[_0x1edf('0x3d')](_0x1edf('0x7d'),_0x8f8a5d[_0x1edf('0x48')]['id']['toString']()))[_0x1edf('0x3d')](_0x1edf('0x7e'),squel[_0x1edf('0x71')]()[_0x1edf('0x72')](_0x1edf('0x7f'))[_0x1edf('0x7b')](_0x1edf('0x6d'))[_0x1edf('0x3d')](_0x1edf('0x7d'),_0x8f8a5d[_0x1edf('0x48')]['id'][_0x1edf('0x75')]())))[_0x1edf('0x75')]();break;case _0x1edf('0x80'):_0xafc874=squel[_0x1edf('0x81')]()[_0x1edf('0x6c')]('cm_hopper')[_0x1edf('0x82')](['phone',_0x1edf('0x6f'),'ContactId',_0x1edf('0x74'),_0x1edf('0x61'),_0x1edf('0x55'),'updatedAt'],squel[_0x1edf('0x71')]()[_0x1edf('0x72')](_0x1edf('0x6e'),'phone')[_0x1edf('0x72')](_0x1edf('0x73'),_0x1edf('0x6f'))[_0x1edf('0x72')]('id','ContactId')[_0x1edf('0x72')](_0x459192['CmListId'][_0x1edf('0x75')](),_0x1edf('0x74'))[_0x1edf('0x72')](_0x8f8a5d[_0x1edf('0x48')]['id'][_0x1edf('0x75')](),_0x1edf('0x61'))[_0x1edf('0x72')]('NOW()',_0x1edf('0x55'))[_0x1edf('0x72')](_0x1edf('0x73'),'updatedAt')[_0x1edf('0x7b')](_0x1edf('0x76'))['where'](_0x1edf('0x77'))[_0x1edf('0x3d')]('ListId\x20=\x20?',_0x459192[_0x1edf('0x83')][_0x1edf('0x75')]())[_0x1edf('0x3d')](_0x1edf('0x79'))[_0x1edf('0x3d')](_0x1edf('0x7e'),squel[_0x1edf('0x71')]()['field'](_0x1edf('0x7f'))[_0x1edf('0x7b')](_0x1edf('0x6d'))[_0x1edf('0x3d')](_0x1edf('0x7d'),_0x8f8a5d[_0x1edf('0x48')]['id'][_0x1edf('0x75')]())))[_0x1edf('0x75')]();break;default:_0xafc874=squel[_0x1edf('0x81')]()[_0x1edf('0x6c')](_0x1edf('0x6d'))[_0x1edf('0x82')]([_0x1edf('0x6e'),'scheduledAt',_0x1edf('0x70'),_0x1edf('0x74'),'CampaignId','createdAt',_0x1edf('0x56')],squel['select']()[_0x1edf('0x72')](_0x1edf('0x6e'),'phone')[_0x1edf('0x72')](_0x1edf('0x73'),_0x1edf('0x6f'))[_0x1edf('0x72')]('id',_0x1edf('0x70'))[_0x1edf('0x72')](_0x459192[_0x1edf('0x83')]['toString'](),_0x1edf('0x74'))[_0x1edf('0x72')](_0x8f8a5d['params']['id'][_0x1edf('0x75')](),'CampaignId')['field']('NOW()',_0x1edf('0x55'))[_0x1edf('0x72')](_0x1edf('0x73'),_0x1edf('0x56'))['from']('cm_contacts')[_0x1edf('0x3d')](_0x1edf('0x77'))[_0x1edf('0x3d')]('ListId\x20=\x20?',_0x459192[_0x1edf('0x83')][_0x1edf('0x75')]())[_0x1edf('0x3d')](_0x1edf('0x79')))[_0x1edf('0x75')]();}_0x3997fe['push'](db[_0x1edf('0x84')]['query'](_0xafc874));}return BPromise['all'](_0x3997fe);}})['then'](function(){return _0x3e5620;})['then'](respondWithResult(_0x32746d,null))['catch'](handleError(_0x32746d,null));};exports[_0x1edf('0x85')]=function(_0x5131f3,_0x560fc8,_0x18e77c){return db['Campaign'][_0x1edf('0x4e')]({'where':{'id':_0x5131f3[_0x1edf('0x48')]['id']}})[_0x1edf('0x27')](handleEntityNotFound(_0x560fc8,null))['then'](function(_0x31af44){if(_0x31af44){return _0x31af44['removeLists'](_0x5131f3[_0x1edf('0x34')]['ids']);}})[_0x1edf('0x27')](function(_0x3a7322){if(_0x3a7322){return db[_0x1edf('0x5e')][_0x1edf('0x28')]({'where':{'ListId':_0x5131f3['query'][_0x1edf('0x69')],'CampaignId':_0x5131f3['params']['id']}})[_0x1edf('0x27')](function(){return _0x3a7322;});}})[_0x1edf('0x27')](respondWithStatusCode(_0x560fc8,null))[_0x1edf('0x46')](handleError(_0x560fc8,null));};exports['getBlackLists']=function(_0x31844e,_0x358dba,_0x329418){var _0x17af59={};var _0x3fb0f0={};var _0x1c02fd;var _0x425bf8;return db['Campaign'][_0x1edf('0x5c')]({'where':{'id':_0x31844e[_0x1edf('0x48')]['id']}})[_0x1edf('0x27')](handleEntityNotFound(_0x358dba,null))['then'](function(_0x59a8fd){if(_0x59a8fd){_0x1c02fd=_0x59a8fd;_0x3fb0f0[_0x1edf('0x33')]=_['keys'](db[_0x1edf('0x67')][_0x1edf('0x31')]);_0x3fb0f0[_0x1edf('0x34')]=_['keys'](_0x31844e[_0x1edf('0x34')]);_0x3fb0f0['filters']=_[_0x1edf('0x36')](_0x3fb0f0[_0x1edf('0x33')],_0x3fb0f0['query']);_0x17af59[_0x1edf('0x37')]=_[_0x1edf('0x36')](_0x3fb0f0[_0x1edf('0x33')],qs[_0x1edf('0x49')](_0x31844e[_0x1edf('0x34')]['fields']));_0x17af59['attributes']=_0x17af59[_0x1edf('0x37')][_0x1edf('0x4a')]?_0x17af59['attributes']:_0x3fb0f0['model'];_0x17af59[_0x1edf('0x5d')]=qs[_0x1edf('0x3a')](_0x31844e[_0x1edf('0x34')][_0x1edf('0x3a')]);_0x17af59[_0x1edf('0x3d')]=qs[_0x1edf('0x3b')](_[_0x1edf('0x3c')](_0x31844e[_0x1edf('0x34')],_0x3fb0f0[_0x1edf('0x3b')]));if(_0x31844e[_0x1edf('0x34')]['filter']){_0x17af59[_0x1edf('0x3d')]=_['merge'](_0x17af59[_0x1edf('0x3d')],{'$or':_[_0x1edf('0x2f')](_0x17af59['attributes'],function(_0x1a56ac){var _0x4a0059={};_0x4a0059[_0x1a56ac]={'$like':'%'+_0x31844e[_0x1edf('0x34')][_0x1edf('0x40')]+'%'};return _0x4a0059;})});}_0x17af59=_[_0x1edf('0x3e')]({},_0x17af59,_0x31844e[_0x1edf('0x41')]);return _0x1c02fd['getBlackLists'](_0x17af59);}})['then'](function(_0x5139cb){if(_0x5139cb){_0x425bf8=_0x5139cb[_0x1edf('0x4a')];if(!_0x31844e[_0x1edf('0x34')][_0x1edf('0x38')](_0x1edf('0x39'))){_0x17af59[_0x1edf('0x1f')]=qs[_0x1edf('0x1f')](_0x31844e[_0x1edf('0x34')][_0x1edf('0x1f')]);_0x17af59['offset']=qs[_0x1edf('0x21')](_0x31844e[_0x1edf('0x34')]['offset']);}return _0x1c02fd[_0x1edf('0x86')](_0x17af59);}})[_0x1edf('0x27')](function(_0xded008){if(_0xded008){return _0xded008?{'count':_0x425bf8,'rows':_0xded008}:null;}})[_0x1edf('0x27')](respondWithResult(_0x358dba,null))['catch'](handleError(_0x358dba,null));};exports['addBlackLists']=function(_0x580558,_0x131bcd,_0x4365c4){var _0x25b495,_0x5576be;return db[_0x1edf('0x30')]['find']({'where':{'id':_0x580558[_0x1edf('0x48')]['id']}})[_0x1edf('0x27')](handleEntityNotFound(_0x131bcd,null))[_0x1edf('0x27')](function(_0x1580c8){if(_0x1580c8){_0x5576be=_0x1580c8;return _0x1580c8[_0x1edf('0x87')](_0x580558[_0x1edf('0x57')][_0x1edf('0x69')],_['omit'](_0x580558[_0x1edf('0x57')],['ids','id'])||{});}return null;})['spread'](function(_0x11f560){var _0x2ae08f;_0x25b495=_0x11f560||[];var _0x35ef47=[];if(_0x11f560){for(var _0x2c872d=0x0;_0x2c872d<_0x11f560[_0x1edf('0x4a')];_0x2c872d+=0x1){var _0x3468c1=_0x11f560[_0x2c872d][_0x1edf('0x29')]({'plain':!![]});_0x2ae08f=squel[_0x1edf('0x81')]()[_0x1edf('0x6c')](_0x1edf('0x88'))[_0x1edf('0x82')]([_0x1edf('0x6e'),_0x1edf('0x70'),_0x1edf('0x74'),'CampaignId',_0x1edf('0x55'),'updatedAt'],squel[_0x1edf('0x71')]()['field']('phone',_0x1edf('0x6e'))['field']('id','ContactId')['field'](_0x3468c1[_0x1edf('0x83')][_0x1edf('0x75')](),_0x1edf('0x74'))[_0x1edf('0x72')](_0x580558[_0x1edf('0x48')]['id']['toString'](),_0x1edf('0x61'))[_0x1edf('0x72')](_0x1edf('0x73'),_0x1edf('0x55'))['field']('NOW()',_0x1edf('0x56'))[_0x1edf('0x7b')](_0x1edf('0x76'))[_0x1edf('0x3d')](_0x1edf('0x77'))[_0x1edf('0x3d')]('ListId\x20=\x20?',_0x3468c1[_0x1edf('0x83')][_0x1edf('0x75')]())[_0x1edf('0x3d')]('phone\x20IS\x20NOT\x20NULL'))[_0x1edf('0x75')]();_0x35ef47[_0x1edf('0x89')](db[_0x1edf('0x84')][_0x1edf('0x34')](_0x2ae08f));}return BPromise[_0x1edf('0x8a')](_0x35ef47);}})[_0x1edf('0x27')](function(){return _0x25b495;})['then'](respondWithResult(_0x131bcd,null))[_0x1edf('0x46')](handleError(_0x131bcd,null));};exports[_0x1edf('0x8b')]=function(_0x2f0028,_0xc33859,_0x34a165){return db[_0x1edf('0x30')][_0x1edf('0x4e')]({'where':{'id':_0x2f0028['params']['id']}})['then'](handleEntityNotFound(_0xc33859,null))['then'](function(_0x26d029){if(_0x26d029){return _0x26d029[_0x1edf('0x8b')](_0x2f0028['query'][_0x1edf('0x69')]);}})[_0x1edf('0x27')](function(_0x15f67b){if(_0x15f67b){return db['CmHopperBlack'][_0x1edf('0x28')]({'where':{'ListId':_0x2f0028[_0x1edf('0x34')][_0x1edf('0x69')],'CampaignId':_0x2f0028['params']['id']}})['then'](function(){return _0x15f67b;});}})[_0x1edf('0x27')](respondWithStatusCode(_0xc33859,null))['catch'](handleError(_0xc33859,null));};
\ No newline at end of file
+var _0x6c2d=['key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge','filter','options','include','findAll','rows','params','keys','includeAll','catch','create','user','get','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','omit','createdAt','updatedAt','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','error','getHoppers','CmHopper','nolimit','findOne','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','CampaignId','getLists','CmList','addLists','ids','spread','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','phone','scheduledAt','field','NOW()','ContactId','toString','ListId','from','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','select','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','onlyIfOpen','CmListId','cm_contacts','all','removeLists','getBlackLists','addBlackLists','cm_hopper_black','push','sequelize','removeBlackLists','eml-format','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','squel','crypto','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','json','offset','undefined','count','limit','status','Content-Range','apply','reject','save','update','then','destroy','IvrCampaigns','UserProfileResource','stack','name','send','index','map','Campaign','rawAttributes','fieldName','type'];(function(_0x5ad220,_0x27407e){var _0xdec77d=function(_0x58d736){while(--_0x58d736){_0x5ad220['push'](_0x5ad220['shift']());}};_0xdec77d(++_0x27407e);}(_0x6c2d,0x1e9));var _0xd6c2=function(_0x593752,_0xfc3827){_0x593752=_0x593752-0x0;var _0x4612be=_0x6c2d[_0x593752];return _0x4612be;};'use strict';var emlformat=require(_0xd6c2('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xd6c2('0x1'));var moment=require(_0xd6c2('0x2'));var BPromise=require(_0xd6c2('0x3'));var Mustache=require(_0xd6c2('0x4'));var util=require(_0xd6c2('0x5'));var path=require(_0xd6c2('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd6c2('0x7'));var fs=require('fs');var fs_extra=require(_0xd6c2('0x8'));var _=require('lodash');var squel=require(_0xd6c2('0x9'));var crypto=require(_0xd6c2('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xd6c2('0xb'));var querystring=require(_0xd6c2('0xc'));var Papa=require(_0xd6c2('0xd'));var Redis=require(_0xd6c2('0xe'));var authService=require(_0xd6c2('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xd6c2('0x10'));var hardwareService=require(_0xd6c2('0x11'));var logger=require('../../config/logger')('api');var utils=require(_0xd6c2('0x12'));var config=require(_0xd6c2('0x13'));var licenseUtil=require(_0xd6c2('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xdd7a59,_0x2571fa){_0x2571fa=_0x2571fa||0xcc;return function(_0x5bfc8b){if(_0x5bfc8b){return _0xdd7a59[_0xd6c2('0x15')](_0x2571fa);}return _0xdd7a59['status'](_0x2571fa)[_0xd6c2('0x16')]();};}function respondWithResult(_0x4dd054,_0x328de6){_0x328de6=_0x328de6||0xc8;return function(_0x2bd725){if(_0x2bd725){return _0x4dd054['status'](_0x328de6)[_0xd6c2('0x17')](_0x2bd725);}};}function respondWithFilteredResult(_0xc21f55,_0x3b6f23){return function(_0x323cec){if(_0x323cec){var _0xc328=typeof _0x3b6f23[_0xd6c2('0x18')]===_0xd6c2('0x19')&&typeof _0x3b6f23['limit']===_0xd6c2('0x19');var _0x17026c=_0x323cec[_0xd6c2('0x1a')];var _0x58fa76=_0xc328?0x0:_0x3b6f23[_0xd6c2('0x18')];var _0x34fd7e=_0xc328?_0x323cec[_0xd6c2('0x1a')]:_0x3b6f23[_0xd6c2('0x18')]+_0x3b6f23[_0xd6c2('0x1b')];var _0x774f7c;if(_0x34fd7e>=_0x17026c){_0x34fd7e=_0x17026c;_0x774f7c=0xc8;}else{_0x774f7c=0xce;}_0xc21f55[_0xd6c2('0x1c')](_0x774f7c);return _0xc21f55['set'](_0xd6c2('0x1d'),_0x58fa76+'-'+_0x34fd7e+'/'+_0x17026c)['json'](_0x323cec);}return null;};}function patchUpdates(_0x213cf2){return function(_0xc8b7e6){try{jsonpatch[_0xd6c2('0x1e')](_0xc8b7e6,_0x213cf2,!![]);}catch(_0x1a69cf){return BPromise[_0xd6c2('0x1f')](_0x1a69cf);}return _0xc8b7e6[_0xd6c2('0x20')]();};}function saveUpdates(_0x4c6af8,_0x56fc10){return function(_0x49bbb0){if(_0x49bbb0){return _0x49bbb0[_0xd6c2('0x21')](_0x4c6af8)[_0xd6c2('0x22')](function(_0x30bf64){return _0x30bf64;});}return null;};}function removeEntity(_0x2ce300,_0x5ae8de){return function(_0x513a8d){if(_0x513a8d){return _0x513a8d[_0xd6c2('0x23')]()[_0xd6c2('0x22')](function(){var _0x32127e=_0x513a8d['get']({'plain':!![]});var _0xbf58ca=_0xd6c2('0x24');return db[_0xd6c2('0x25')][_0xd6c2('0x23')]({'where':{'type':_0xbf58ca,'resourceId':_0x32127e['id']}})[_0xd6c2('0x22')](function(){return _0x513a8d;});})[_0xd6c2('0x22')](function(){_0x2ce300[_0xd6c2('0x1c')](0xcc)[_0xd6c2('0x16')]();});}};}function handleEntityNotFound(_0xaf813b,_0x383bfb){return function(_0x7b6020){if(!_0x7b6020){_0xaf813b[_0xd6c2('0x15')](0x194);}return _0x7b6020;};}function handleError(_0x429c39,_0x2bb192){_0x2bb192=_0x2bb192||0x1f4;return function(_0x54ea64){logger['error'](_0x54ea64[_0xd6c2('0x26')]);if(_0x54ea64[_0xd6c2('0x27')]){delete _0x54ea64[_0xd6c2('0x27')];}_0x429c39[_0xd6c2('0x1c')](_0x2bb192)[_0xd6c2('0x28')](_0x54ea64);};}exports[_0xd6c2('0x29')]=function(_0x2ef1d0,_0x592738){var _0x17dfad={},_0x212933={},_0x2f452b={'count':0x0,'rows':[]};var _0x595cdf=_[_0xd6c2('0x2a')](db[_0xd6c2('0x2b')][_0xd6c2('0x2c')],function(_0x41fe48){return{'name':_0x41fe48[_0xd6c2('0x2d')],'type':_0x41fe48[_0xd6c2('0x2e')][_0xd6c2('0x2f')]};});_0x212933[_0xd6c2('0x30')]=_[_0xd6c2('0x2a')](_0x595cdf,_0xd6c2('0x27'));_0x212933[_0xd6c2('0x31')]=_['keys'](_0x2ef1d0['query']);_0x212933[_0xd6c2('0x32')]=_[_0xd6c2('0x33')](_0x212933[_0xd6c2('0x30')],_0x212933['query']);_0x17dfad[_0xd6c2('0x34')]=_['intersection'](_0x212933[_0xd6c2('0x30')],qs[_0xd6c2('0x35')](_0x2ef1d0[_0xd6c2('0x31')][_0xd6c2('0x35')]));_0x17dfad[_0xd6c2('0x34')]=_0x17dfad['attributes'][_0xd6c2('0x36')]?_0x17dfad[_0xd6c2('0x34')]:_0x212933[_0xd6c2('0x30')];if(!_0x2ef1d0[_0xd6c2('0x31')][_0xd6c2('0x37')]('nolimit')){_0x17dfad[_0xd6c2('0x1b')]=qs[_0xd6c2('0x1b')](_0x2ef1d0[_0xd6c2('0x31')][_0xd6c2('0x1b')]);_0x17dfad['offset']=qs[_0xd6c2('0x18')](_0x2ef1d0[_0xd6c2('0x31')][_0xd6c2('0x18')]);}_0x17dfad[_0xd6c2('0x38')]=qs[_0xd6c2('0x39')](_0x2ef1d0[_0xd6c2('0x31')][_0xd6c2('0x39')]);_0x17dfad[_0xd6c2('0x3a')]=qs[_0xd6c2('0x32')](_[_0xd6c2('0x3b')](_0x2ef1d0[_0xd6c2('0x31')],_0x212933[_0xd6c2('0x32')]),_0x595cdf);if(_0x2ef1d0[_0xd6c2('0x31')]['filter']){_0x17dfad['where']=_[_0xd6c2('0x3c')](_0x17dfad[_0xd6c2('0x3a')],{'$or':_[_0xd6c2('0x2a')](_0x595cdf,function(_0x9e755c){if(_0x9e755c['type']!=='VIRTUAL'){var _0xae00ea={};_0xae00ea[_0x9e755c[_0xd6c2('0x27')]]={'$like':'%'+_0x2ef1d0[_0xd6c2('0x31')][_0xd6c2('0x3d')]+'%'};return _0xae00ea;}})});}_0x17dfad=_[_0xd6c2('0x3c')]({},_0x17dfad,_0x2ef1d0[_0xd6c2('0x3e')]);var _0x46e7c4={'where':_0x17dfad[_0xd6c2('0x3a')]};return db[_0xd6c2('0x2b')]['count'](_0x46e7c4)[_0xd6c2('0x22')](function(_0x8fdd4c){_0x2f452b[_0xd6c2('0x1a')]=_0x8fdd4c;if(_0x2ef1d0[_0xd6c2('0x31')]['includeAll']){_0x17dfad[_0xd6c2('0x3f')]=[{'all':!![]}];}return db[_0xd6c2('0x2b')][_0xd6c2('0x40')](_0x17dfad);})[_0xd6c2('0x22')](function(_0x315932){_0x2f452b[_0xd6c2('0x41')]=_0x315932;return _0x2f452b;})['then'](respondWithFilteredResult(_0x592738,_0x17dfad))['catch'](handleError(_0x592738,null));};exports['show']=function(_0x552f13,_0x16ee7d){var _0x20899c={'raw':![],'where':{'id':_0x552f13[_0xd6c2('0x42')]['id']}},_0xbf5f25={};_0xbf5f25[_0xd6c2('0x30')]=_[_0xd6c2('0x43')](db[_0xd6c2('0x2b')]['rawAttributes']);_0xbf5f25[_0xd6c2('0x31')]=_[_0xd6c2('0x43')](_0x552f13[_0xd6c2('0x31')]);_0xbf5f25['filters']=_['intersection'](_0xbf5f25[_0xd6c2('0x30')],_0xbf5f25[_0xd6c2('0x31')]);_0x20899c[_0xd6c2('0x34')]=_['intersection'](_0xbf5f25[_0xd6c2('0x30')],qs['fields'](_0x552f13['query'][_0xd6c2('0x35')]));_0x20899c[_0xd6c2('0x34')]=_0x20899c['attributes'][_0xd6c2('0x36')]?_0x20899c[_0xd6c2('0x34')]:_0xbf5f25[_0xd6c2('0x30')];if(_0x552f13[_0xd6c2('0x31')][_0xd6c2('0x44')]){_0x20899c[_0xd6c2('0x3f')]=[{'all':!![]}];}_0x20899c=_['merge']({},_0x20899c,_0x552f13[_0xd6c2('0x3e')]);return db['Campaign']['find'](_0x20899c)[_0xd6c2('0x22')](handleEntityNotFound(_0x16ee7d,null))['then'](respondWithResult(_0x16ee7d,null))[_0xd6c2('0x45')](handleError(_0x16ee7d,null));};exports[_0xd6c2('0x46')]=function(_0x18a574,_0x3b6cd7){return db[_0xd6c2('0x2b')][_0xd6c2('0x46')](_0x18a574['body'],{})['then'](function(_0x554672){var _0x41ab42=_0x18a574[_0xd6c2('0x47')][_0xd6c2('0x48')]({'plain':!![]});if(!_0x41ab42)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x41ab42[_0xd6c2('0x49')]===_0xd6c2('0x47')){var _0x1b6f18=_0x554672[_0xd6c2('0x48')]({'plain':!![]});var _0x31eb49=_0xd6c2('0x24');return db[_0xd6c2('0x4a')][_0xd6c2('0x4b')]({'where':{'name':_0x31eb49,'userProfileId':_0x41ab42[_0xd6c2('0x4c')]},'raw':!![]})[_0xd6c2('0x22')](function(_0x20e9d5){if(_0x20e9d5&&_0x20e9d5[_0xd6c2('0x4d')]===0x0){return db[_0xd6c2('0x25')]['create']({'name':_0x1b6f18['name'],'resourceId':_0x1b6f18['id'],'type':_0x20e9d5[_0xd6c2('0x27')],'sectionId':_0x20e9d5['id']},{})[_0xd6c2('0x22')](function(){return _0x554672;});}else{return _0x554672;}})[_0xd6c2('0x45')](function(_0x2d1c9d){logger['error'](_0xd6c2('0x4e'),_0x2d1c9d);throw _0x2d1c9d;});}return _0x554672;})['then'](respondWithResult(_0x3b6cd7,0xc9))[_0xd6c2('0x45')](handleError(_0x3b6cd7,null));};exports['clone']=function(_0xe244a9,_0xbf9e3e){var _0x3c8417={'where':{'id':_0xe244a9['params']['id']}},_0x4f6cea={};_0x4f6cea[_0xd6c2('0x30')]=_[_0xd6c2('0x43')](db[_0xd6c2('0x2b')][_0xd6c2('0x2c')]);_0x3c8417[_0xd6c2('0x34')]=_[_0xd6c2('0x33')](_0x4f6cea[_0xd6c2('0x30')],qs[_0xd6c2('0x35')](_0xe244a9[_0xd6c2('0x31')]['fields']));_0x3c8417[_0xd6c2('0x34')]=_0x3c8417[_0xd6c2('0x34')][_0xd6c2('0x36')]?_0x3c8417[_0xd6c2('0x34')]:_0x4f6cea[_0xd6c2('0x30')];if(_0xe244a9[_0xd6c2('0x31')]['includeAll']){_0x3c8417[_0xd6c2('0x3f')]=[{'all':!![]}];}_0x3c8417=_[_0xd6c2('0x3c')]({},_0x3c8417,_0xe244a9[_0xd6c2('0x3e')]);return db[_0xd6c2('0x2b')][_0xd6c2('0x4b')](_0x3c8417)['then'](handleEntityNotFound(_0xbf9e3e,null))[_0xd6c2('0x22')](function(_0x204c90){if(_0x204c90){var _0x3724de=_0x204c90[_0xd6c2('0x48')]({'plain':!![]});_0x3724de=qs[_0xd6c2('0x4f')](_0x3724de,['id',_0xd6c2('0x50'),_0xd6c2('0x51')]);_0xe244a9[_0xd6c2('0x52')]=_['omit'](_0xe244a9['body'],['id',_0xd6c2('0x50'),_0xd6c2('0x51')]);return db['Campaign']['create'](_['merge'](_0x3724de,_0xe244a9[_0xd6c2('0x52')]),{'include':_0xe244a9[_0xd6c2('0x31')][_0xd6c2('0x44')]?[{'all':!![]}]:undefined})[_0xd6c2('0x22')](function(_0x169ecf){var _0x2639ff=_0xe244a9[_0xd6c2('0x47')][_0xd6c2('0x48')]({'plain':!![]});if(!_0x2639ff)throw new Error(_0xd6c2('0x53'));if(_0x2639ff[_0xd6c2('0x49')]===_0xd6c2('0x47')){var _0xfd0874=_0x169ecf[_0xd6c2('0x48')]({'plain':!![]});var _0x4db495=_0xd6c2('0x24');return db[_0xd6c2('0x4a')]['find']({'where':{'name':_0x4db495,'userProfileId':_0x2639ff['userProfileId']},'raw':!![]})['then'](function(_0x36742f){if(_0x36742f&&_0x36742f['autoAssociation']===0x0){return db[_0xd6c2('0x25')][_0xd6c2('0x46')]({'name':_0xfd0874['name'],'resourceId':_0xfd0874['id'],'type':_0x36742f[_0xd6c2('0x27')],'sectionId':_0x36742f['id']},{})[_0xd6c2('0x22')](function(){return _0x169ecf;});}else{return _0x169ecf;}})['catch'](function(_0x466f35){logger[_0xd6c2('0x54')](_0xd6c2('0x4e'),_0x466f35);throw _0x466f35;});}return _0x169ecf;});}})[_0xd6c2('0x22')](respondWithResult(_0xbf9e3e,0xc9))[_0xd6c2('0x45')](handleError(_0xbf9e3e,null));};exports[_0xd6c2('0x21')]=function(_0x858bbd,_0x9ae1da){if(_0x858bbd[_0xd6c2('0x52')]['id']){delete _0x858bbd[_0xd6c2('0x52')]['id'];}return db['Campaign'][_0xd6c2('0x4b')]({'where':{'id':_0x858bbd[_0xd6c2('0x42')]['id']}})[_0xd6c2('0x22')](handleEntityNotFound(_0x9ae1da,null))[_0xd6c2('0x22')](saveUpdates(_0x858bbd['body'],null))[_0xd6c2('0x22')](respondWithResult(_0x9ae1da,null))[_0xd6c2('0x45')](handleError(_0x9ae1da,null));};exports[_0xd6c2('0x23')]=function(_0x3af333,_0x24cf4c){return db[_0xd6c2('0x2b')]['find']({'where':{'id':_0x3af333[_0xd6c2('0x42')]['id']}})[_0xd6c2('0x22')](handleEntityNotFound(_0x24cf4c,null))[_0xd6c2('0x22')](removeEntity(_0x24cf4c,null))[_0xd6c2('0x45')](handleError(_0x24cf4c,null));};exports[_0xd6c2('0x55')]=function(_0x280516,_0x123760,_0x483c4e){var _0x49f9b7={'raw':!![],'where':{}};var _0x3ca1c0={};var _0x5d4018={'count':0x0,'rows':[]};return db[_0xd6c2('0x2b')]['findOne']({'where':{'id':_0x280516['params']['id']}})[_0xd6c2('0x22')](handleEntityNotFound(_0x123760,null))[_0xd6c2('0x22')](function(_0x1cde7){if(_0x1cde7){_0x3ca1c0['model']=_[_0xd6c2('0x43')](db[_0xd6c2('0x56')][_0xd6c2('0x2c')]);_0x3ca1c0[_0xd6c2('0x31')]=_[_0xd6c2('0x43')](_0x280516[_0xd6c2('0x31')]);_0x3ca1c0[_0xd6c2('0x32')]=_[_0xd6c2('0x33')](_0x3ca1c0[_0xd6c2('0x30')],_0x3ca1c0[_0xd6c2('0x31')]);_0x49f9b7[_0xd6c2('0x34')]=_[_0xd6c2('0x33')](_0x3ca1c0[_0xd6c2('0x30')],qs[_0xd6c2('0x35')](_0x280516[_0xd6c2('0x31')]['fields']));_0x49f9b7[_0xd6c2('0x34')]=_0x49f9b7[_0xd6c2('0x34')][_0xd6c2('0x36')]?_0x49f9b7[_0xd6c2('0x34')]:_0x3ca1c0[_0xd6c2('0x30')];if(!_0x280516[_0xd6c2('0x31')][_0xd6c2('0x37')](_0xd6c2('0x57'))){_0x49f9b7[_0xd6c2('0x1b')]=qs[_0xd6c2('0x1b')](_0x280516[_0xd6c2('0x31')][_0xd6c2('0x1b')]);_0x49f9b7['offset']=qs['offset'](_0x280516['query'][_0xd6c2('0x18')]);}_0x49f9b7[_0xd6c2('0x38')]=qs[_0xd6c2('0x39')](_0x280516[_0xd6c2('0x31')]['sort']);_0x49f9b7[_0xd6c2('0x3a')]=qs[_0xd6c2('0x32')](_[_0xd6c2('0x3b')](_0x280516['query'],_0x3ca1c0[_0xd6c2('0x32')]));_0x49f9b7[_0xd6c2('0x3a')]['CampaignId']=_0x1cde7['id'];if(_0x280516[_0xd6c2('0x31')][_0xd6c2('0x3d')]){_0x49f9b7[_0xd6c2('0x3a')]=_[_0xd6c2('0x3c')](_0x49f9b7[_0xd6c2('0x3a')],{'$or':_[_0xd6c2('0x2a')](_0x49f9b7['attributes'],function(_0x5b857d){var _0x19e6f5={};_0x19e6f5[_0x5b857d]={'$like':'%'+_0x280516[_0xd6c2('0x31')]['filter']+'%'};return _0x19e6f5;})});}_0x49f9b7=_[_0xd6c2('0x3c')]({},_0x49f9b7,_0x280516['options']);return db[_0xd6c2('0x56')][_0xd6c2('0x1a')]({'where':_0x49f9b7['where']})[_0xd6c2('0x22')](function(_0xedc7b5){_0x5d4018[_0xd6c2('0x1a')]=_0xedc7b5;if(_0x280516[_0xd6c2('0x31')][_0xd6c2('0x44')]){_0x49f9b7[_0xd6c2('0x3f')]=[{'all':!![]}];}return db[_0xd6c2('0x56')][_0xd6c2('0x40')](_0x49f9b7);})[_0xd6c2('0x22')](function(_0x267647){_0x5d4018[_0xd6c2('0x41')]=_0x267647;return _0x5d4018;});}})[_0xd6c2('0x22')](respondWithFilteredResult(_0x123760,_0x49f9b7))[_0xd6c2('0x45')](handleError(_0x123760,null));};exports['getHopperHistories']=function(_0x11079e,_0x4cd0ed,_0x38848c){var _0x14e38f={'raw':!![],'where':{}};var _0x3e5bf1={};var _0x15fa77={'count':0x0,'rows':[]};return db['Campaign'][_0xd6c2('0x58')]({'where':{'id':_0x11079e['params']['id']}})['then'](handleEntityNotFound(_0x4cd0ed,null))[_0xd6c2('0x22')](function(_0x15522c){if(_0x15522c){_0x3e5bf1[_0xd6c2('0x30')]=_['keys'](db[_0xd6c2('0x59')][_0xd6c2('0x2c')]);_0x3e5bf1[_0xd6c2('0x31')]=_[_0xd6c2('0x43')](_0x11079e[_0xd6c2('0x31')]);_0x3e5bf1[_0xd6c2('0x32')]=_[_0xd6c2('0x33')](_0x3e5bf1[_0xd6c2('0x30')],_0x3e5bf1[_0xd6c2('0x31')]);_0x14e38f[_0xd6c2('0x34')]=_['intersection'](_0x3e5bf1[_0xd6c2('0x30')],qs[_0xd6c2('0x35')](_0x11079e[_0xd6c2('0x31')][_0xd6c2('0x35')]));_0x14e38f[_0xd6c2('0x34')]=_0x14e38f['attributes'][_0xd6c2('0x36')]?_0x14e38f[_0xd6c2('0x34')]:_0x3e5bf1[_0xd6c2('0x30')];if(!_0x11079e[_0xd6c2('0x31')][_0xd6c2('0x37')]('nolimit')){_0x14e38f['limit']=qs[_0xd6c2('0x1b')](_0x11079e[_0xd6c2('0x31')][_0xd6c2('0x1b')]);_0x14e38f[_0xd6c2('0x18')]=qs['offset'](_0x11079e[_0xd6c2('0x31')][_0xd6c2('0x18')]);}_0x14e38f[_0xd6c2('0x38')]=qs['sort'](_0x11079e[_0xd6c2('0x31')][_0xd6c2('0x39')]);_0x14e38f['where']=qs['filters'](_[_0xd6c2('0x3b')](_0x11079e[_0xd6c2('0x31')],_0x3e5bf1[_0xd6c2('0x32')]));_0x14e38f[_0xd6c2('0x3a')]['CampaignId']=_0x15522c['id'];if(_0x11079e[_0xd6c2('0x31')]['filter']){_0x14e38f['where']=_[_0xd6c2('0x3c')](_0x14e38f[_0xd6c2('0x3a')],{'$or':_['map'](_0x14e38f['attributes'],function(_0x3447c4){var _0x5534df={};_0x5534df[_0x3447c4]={'$like':'%'+_0x11079e['query'][_0xd6c2('0x3d')]+'%'};return _0x5534df;})});}_0x14e38f=_[_0xd6c2('0x3c')]({},_0x14e38f,_0x11079e[_0xd6c2('0x3e')]);return db[_0xd6c2('0x59')]['count']({'where':_0x14e38f[_0xd6c2('0x3a')]})[_0xd6c2('0x22')](function(_0x3fb10){_0x15fa77[_0xd6c2('0x1a')]=_0x3fb10;if(_0x11079e[_0xd6c2('0x31')][_0xd6c2('0x44')]){_0x14e38f[_0xd6c2('0x3f')]=[{'all':!![]}];}return db[_0xd6c2('0x59')][_0xd6c2('0x40')](_0x14e38f);})[_0xd6c2('0x22')](function(_0xb148b1){_0x15fa77['rows']=_0xb148b1;return _0x15fa77;});}})[_0xd6c2('0x22')](respondWithFilteredResult(_0x4cd0ed,_0x14e38f))[_0xd6c2('0x45')](handleError(_0x4cd0ed,null));};exports[_0xd6c2('0x5a')]=function(_0x38a094,_0x28f7f7,_0x1a1582){var _0x29b239={'raw':!![],'where':{}};var _0x2bad89={};var _0x48585a={'count':0x0,'rows':[]};return db['Campaign'][_0xd6c2('0x58')]({'where':{'id':_0x38a094['params']['id']}})[_0xd6c2('0x22')](handleEntityNotFound(_0x28f7f7,null))[_0xd6c2('0x22')](function(_0x2a358c){if(_0x2a358c){_0x2bad89[_0xd6c2('0x30')]=_[_0xd6c2('0x43')](db['CmHopperFinal'][_0xd6c2('0x2c')]);_0x2bad89['query']=_[_0xd6c2('0x43')](_0x38a094[_0xd6c2('0x31')]);_0x2bad89[_0xd6c2('0x32')]=_[_0xd6c2('0x33')](_0x2bad89[_0xd6c2('0x30')],_0x2bad89[_0xd6c2('0x31')]);_0x29b239[_0xd6c2('0x34')]=_[_0xd6c2('0x33')](_0x2bad89[_0xd6c2('0x30')],qs[_0xd6c2('0x35')](_0x38a094[_0xd6c2('0x31')][_0xd6c2('0x35')]));_0x29b239[_0xd6c2('0x34')]=_0x29b239[_0xd6c2('0x34')][_0xd6c2('0x36')]?_0x29b239['attributes']:_0x2bad89['model'];if(!_0x38a094[_0xd6c2('0x31')]['hasOwnProperty'](_0xd6c2('0x57'))){_0x29b239['limit']=qs[_0xd6c2('0x1b')](_0x38a094[_0xd6c2('0x31')][_0xd6c2('0x1b')]);_0x29b239[_0xd6c2('0x18')]=qs[_0xd6c2('0x18')](_0x38a094['query'][_0xd6c2('0x18')]);}_0x29b239[_0xd6c2('0x38')]=qs['sort'](_0x38a094[_0xd6c2('0x31')][_0xd6c2('0x39')]);_0x29b239[_0xd6c2('0x3a')]=qs[_0xd6c2('0x32')](_[_0xd6c2('0x3b')](_0x38a094[_0xd6c2('0x31')],_0x2bad89['filters']));_0x29b239[_0xd6c2('0x3a')]['CampaignId']=_0x2a358c['id'];if(_0x38a094[_0xd6c2('0x31')]['filter']){_0x29b239[_0xd6c2('0x3a')]=_[_0xd6c2('0x3c')](_0x29b239['where'],{'$or':_['map'](_0x29b239[_0xd6c2('0x34')],function(_0x382d11){var _0x4360d0={};_0x4360d0[_0x382d11]={'$like':'%'+_0x38a094[_0xd6c2('0x31')]['filter']+'%'};return _0x4360d0;})});}_0x29b239=_[_0xd6c2('0x3c')]({},_0x29b239,_0x38a094['options']);return db[_0xd6c2('0x5b')]['count']({'where':_0x29b239[_0xd6c2('0x3a')]})[_0xd6c2('0x22')](function(_0x5d025f){_0x48585a['count']=_0x5d025f;if(_0x38a094[_0xd6c2('0x31')]['includeAll']){_0x29b239[_0xd6c2('0x3f')]=[{'all':!![]}];}return db[_0xd6c2('0x5b')][_0xd6c2('0x40')](_0x29b239);})[_0xd6c2('0x22')](function(_0x57f56c){_0x48585a['rows']=_0x57f56c;return _0x48585a;});}})[_0xd6c2('0x22')](respondWithFilteredResult(_0x28f7f7,_0x29b239))['catch'](handleError(_0x28f7f7,null));};exports[_0xd6c2('0x5c')]=function(_0xab817e,_0x2e57fc,_0x3112b2){var _0x35a4d7={'raw':!![],'where':{}};var _0x52fdfc={};var _0x6e1b85={'count':0x0,'rows':[]};return db[_0xd6c2('0x2b')][_0xd6c2('0x58')]({'where':{'id':_0xab817e['params']['id']}})['then'](handleEntityNotFound(_0x2e57fc,null))[_0xd6c2('0x22')](function(_0xf5dbb){if(_0xf5dbb){_0x52fdfc[_0xd6c2('0x30')]=_[_0xd6c2('0x43')](db[_0xd6c2('0x5d')][_0xd6c2('0x2c')]);_0x52fdfc[_0xd6c2('0x31')]=_['keys'](_0xab817e[_0xd6c2('0x31')]);_0x52fdfc[_0xd6c2('0x32')]=_[_0xd6c2('0x33')](_0x52fdfc['model'],_0x52fdfc[_0xd6c2('0x31')]);_0x35a4d7[_0xd6c2('0x34')]=_['intersection'](_0x52fdfc['model'],qs[_0xd6c2('0x35')](_0xab817e[_0xd6c2('0x31')]['fields']));_0x35a4d7[_0xd6c2('0x34')]=_0x35a4d7[_0xd6c2('0x34')][_0xd6c2('0x36')]?_0x35a4d7['attributes']:_0x52fdfc[_0xd6c2('0x30')];if(!_0xab817e['query'][_0xd6c2('0x37')](_0xd6c2('0x57'))){_0x35a4d7[_0xd6c2('0x1b')]=qs['limit'](_0xab817e[_0xd6c2('0x31')][_0xd6c2('0x1b')]);_0x35a4d7[_0xd6c2('0x18')]=qs[_0xd6c2('0x18')](_0xab817e['query'][_0xd6c2('0x18')]);}_0x35a4d7['order']=qs[_0xd6c2('0x39')](_0xab817e['query'][_0xd6c2('0x39')]);_0x35a4d7['where']=qs[_0xd6c2('0x32')](_[_0xd6c2('0x3b')](_0xab817e['query'],_0x52fdfc[_0xd6c2('0x32')]));_0x35a4d7['where'][_0xd6c2('0x5e')]=_0xf5dbb['id'];if(_0xab817e[_0xd6c2('0x31')][_0xd6c2('0x3d')]){_0x35a4d7['where']=_[_0xd6c2('0x3c')](_0x35a4d7[_0xd6c2('0x3a')],{'$or':_['map'](_0x35a4d7[_0xd6c2('0x34')],function(_0xf2797b){var _0x3e823c={};_0x3e823c[_0xf2797b]={'$like':'%'+_0xab817e[_0xd6c2('0x31')]['filter']+'%'};return _0x3e823c;})});}_0x35a4d7=_['merge']({},_0x35a4d7,_0xab817e['options']);return db[_0xd6c2('0x5d')][_0xd6c2('0x1a')]({'where':_0x35a4d7[_0xd6c2('0x3a')]})['then'](function(_0x8772fc){_0x6e1b85['count']=_0x8772fc;if(_0xab817e[_0xd6c2('0x31')][_0xd6c2('0x44')]){_0x35a4d7[_0xd6c2('0x3f')]=[{'all':!![]}];}return db['CmHopperBlack'][_0xd6c2('0x40')](_0x35a4d7);})[_0xd6c2('0x22')](function(_0x5bf8a1){_0x6e1b85['rows']=_0x5bf8a1;return _0x6e1b85;});}})[_0xd6c2('0x22')](respondWithFilteredResult(_0x2e57fc,_0x35a4d7))[_0xd6c2('0x45')](handleError(_0x2e57fc,null));};exports[_0xd6c2('0x5f')]=function(_0x57679d,_0x60a4aa,_0x5dd5e1){var _0x4fb2e6={};var _0x324015={};var _0x1ef19a;var _0x29f81f;return db['Campaign'][_0xd6c2('0x58')]({'where':{'id':_0x57679d['params']['id']}})[_0xd6c2('0x22')](handleEntityNotFound(_0x60a4aa,null))[_0xd6c2('0x22')](function(_0x54ba2b){if(_0x54ba2b){_0x1ef19a=_0x54ba2b;_0x324015[_0xd6c2('0x30')]=_[_0xd6c2('0x43')](db[_0xd6c2('0x60')][_0xd6c2('0x2c')]);_0x324015['query']=_[_0xd6c2('0x43')](_0x57679d[_0xd6c2('0x31')]);_0x324015[_0xd6c2('0x32')]=_['intersection'](_0x324015[_0xd6c2('0x30')],_0x324015['query']);_0x4fb2e6[_0xd6c2('0x34')]=_[_0xd6c2('0x33')](_0x324015[_0xd6c2('0x30')],qs[_0xd6c2('0x35')](_0x57679d[_0xd6c2('0x31')][_0xd6c2('0x35')]));_0x4fb2e6[_0xd6c2('0x34')]=_0x4fb2e6[_0xd6c2('0x34')][_0xd6c2('0x36')]?_0x4fb2e6[_0xd6c2('0x34')]:_0x324015[_0xd6c2('0x30')];_0x4fb2e6[_0xd6c2('0x38')]=qs[_0xd6c2('0x39')](_0x57679d[_0xd6c2('0x31')]['sort']);_0x4fb2e6['where']=qs['filters'](_[_0xd6c2('0x3b')](_0x57679d['query'],_0x324015[_0xd6c2('0x32')]));if(_0x57679d[_0xd6c2('0x31')][_0xd6c2('0x3d')]){_0x4fb2e6['where']=_['merge'](_0x4fb2e6['where'],{'$or':_['map'](_0x4fb2e6[_0xd6c2('0x34')],function(_0x274e10){var _0xde458f={};_0xde458f[_0x274e10]={'$like':'%'+_0x57679d['query'][_0xd6c2('0x3d')]+'%'};return _0xde458f;})});}_0x4fb2e6=_[_0xd6c2('0x3c')]({},_0x4fb2e6,_0x57679d[_0xd6c2('0x3e')]);return _0x1ef19a[_0xd6c2('0x5f')](_0x4fb2e6);}})['then'](function(_0x5a9f54){if(_0x5a9f54){_0x29f81f=_0x5a9f54[_0xd6c2('0x36')];if(!_0x57679d[_0xd6c2('0x31')][_0xd6c2('0x37')]('nolimit')){_0x4fb2e6[_0xd6c2('0x1b')]=qs[_0xd6c2('0x1b')](_0x57679d['query'][_0xd6c2('0x1b')]);_0x4fb2e6['offset']=qs[_0xd6c2('0x18')](_0x57679d[_0xd6c2('0x31')][_0xd6c2('0x18')]);}return _0x1ef19a[_0xd6c2('0x5f')](_0x4fb2e6);}})[_0xd6c2('0x22')](function(_0x1ed127){if(_0x1ed127){return _0x1ed127?{'count':_0x29f81f,'rows':_0x1ed127}:null;}})[_0xd6c2('0x22')](respondWithResult(_0x60a4aa,null))['catch'](handleError(_0x60a4aa,null));};exports[_0xd6c2('0x61')]=function(_0x3a283e,_0x1bae9d,_0x467307){var _0x54a333,_0x52dae8;return db['Campaign'][_0xd6c2('0x4b')]({'where':{'id':_0x3a283e[_0xd6c2('0x42')]['id']}})[_0xd6c2('0x22')](handleEntityNotFound(_0x1bae9d,null))[_0xd6c2('0x22')](function(_0x2c9f7f){if(_0x2c9f7f){_0x52dae8=_0x2c9f7f;return _0x2c9f7f[_0xd6c2('0x61')](_0x3a283e[_0xd6c2('0x52')]['ids'],_[_0xd6c2('0x4f')](_0x3a283e[_0xd6c2('0x52')],[_0xd6c2('0x62'),'id'])||{});}return null;})[_0xd6c2('0x63')](function(_0x3547f6){var _0x17a0f3;_0x54a333=_0x3547f6||[];var _0x254c03=[];if(_0x3547f6){for(var _0x5edb41=0x0;_0x5edb41<_0x3547f6[_0xd6c2('0x36')];_0x5edb41+=0x1){var _0x28542d=_0x3547f6[_0x5edb41]['get']({'plain':!![]});_0x52dae8['dialCheckDuplicateType']=_0x3a283e[_0xd6c2('0x52')][_0xd6c2('0x64')]?_0x3a283e[_0xd6c2('0x52')]['dialCheckDuplicateType']:_0x52dae8[_0xd6c2('0x64')];switch(_0x52dae8[_0xd6c2('0x64')]){case _0xd6c2('0x65'):_0x17a0f3=squel[_0xd6c2('0x66')]()[_0xd6c2('0x67')](_0xd6c2('0x68'))[_0xd6c2('0x69')]([_0xd6c2('0x6a'),_0xd6c2('0x6b'),'ContactId','ListId',_0xd6c2('0x5e'),_0xd6c2('0x50'),_0xd6c2('0x51')],squel['select']()[_0xd6c2('0x6c')](_0xd6c2('0x6a'),_0xd6c2('0x6a'))['field'](_0xd6c2('0x6d'),_0xd6c2('0x6b'))[_0xd6c2('0x6c')]('id',_0xd6c2('0x6e'))['field'](_0x28542d['CmListId'][_0xd6c2('0x6f')](),_0xd6c2('0x70'))[_0xd6c2('0x6c')](_0x3a283e[_0xd6c2('0x42')]['id'][_0xd6c2('0x6f')](),_0xd6c2('0x5e'))['field'](_0xd6c2('0x6d'),_0xd6c2('0x50'))['field']('NOW()',_0xd6c2('0x51'))[_0xd6c2('0x71')]('cm_contacts')[_0xd6c2('0x3a')](_0xd6c2('0x72'))[_0xd6c2('0x3a')](_0xd6c2('0x73'),_0x28542d['CmListId'][_0xd6c2('0x6f')]())[_0xd6c2('0x3a')](_0xd6c2('0x74'))[_0xd6c2('0x3a')](_0xd6c2('0x75'),squel[_0xd6c2('0x76')]()[_0xd6c2('0x6c')](_0xd6c2('0x77'))['from'](_0xd6c2('0x78'))['where'](_0xd6c2('0x79'),_0x3a283e[_0xd6c2('0x42')]['id'][_0xd6c2('0x6f')]()))[_0xd6c2('0x3a')](_0xd6c2('0x75'),squel[_0xd6c2('0x76')]()['field'](_0xd6c2('0x7a'))[_0xd6c2('0x71')]('cm_hopper')[_0xd6c2('0x3a')]('CampaignId\x20=\x20?',_0x3a283e[_0xd6c2('0x42')]['id'][_0xd6c2('0x6f')]())))[_0xd6c2('0x6f')]();break;case _0xd6c2('0x7b'):_0x17a0f3=squel['insert']()[_0xd6c2('0x67')](_0xd6c2('0x68'))['fromQuery']([_0xd6c2('0x6a'),_0xd6c2('0x6b'),'ContactId',_0xd6c2('0x70'),_0xd6c2('0x5e'),_0xd6c2('0x50'),_0xd6c2('0x51')],squel['select']()[_0xd6c2('0x6c')](_0xd6c2('0x6a'),_0xd6c2('0x6a'))[_0xd6c2('0x6c')]('NOW()',_0xd6c2('0x6b'))[_0xd6c2('0x6c')]('id','ContactId')[_0xd6c2('0x6c')](_0x28542d[_0xd6c2('0x7c')][_0xd6c2('0x6f')](),_0xd6c2('0x70'))[_0xd6c2('0x6c')](_0x3a283e['params']['id'][_0xd6c2('0x6f')](),_0xd6c2('0x5e'))[_0xd6c2('0x6c')](_0xd6c2('0x6d'),_0xd6c2('0x50'))[_0xd6c2('0x6c')](_0xd6c2('0x6d'),_0xd6c2('0x51'))[_0xd6c2('0x71')]('cm_contacts')[_0xd6c2('0x3a')](_0xd6c2('0x72'))[_0xd6c2('0x3a')](_0xd6c2('0x73'),_0x28542d['CmListId'][_0xd6c2('0x6f')]())[_0xd6c2('0x3a')](_0xd6c2('0x74'))[_0xd6c2('0x3a')](_0xd6c2('0x75'),squel[_0xd6c2('0x76')]()['field'](_0xd6c2('0x7a'))[_0xd6c2('0x71')](_0xd6c2('0x68'))['where'](_0xd6c2('0x79'),_0x3a283e['params']['id'][_0xd6c2('0x6f')]())))[_0xd6c2('0x6f')]();break;default:_0x17a0f3=squel[_0xd6c2('0x66')]()[_0xd6c2('0x67')](_0xd6c2('0x68'))['fromQuery'](['phone',_0xd6c2('0x6b'),_0xd6c2('0x6e'),'ListId',_0xd6c2('0x5e'),_0xd6c2('0x50'),_0xd6c2('0x51')],squel[_0xd6c2('0x76')]()['field'](_0xd6c2('0x6a'),_0xd6c2('0x6a'))[_0xd6c2('0x6c')](_0xd6c2('0x6d'),_0xd6c2('0x6b'))[_0xd6c2('0x6c')]('id','ContactId')[_0xd6c2('0x6c')](_0x28542d['CmListId']['toString'](),'ListId')[_0xd6c2('0x6c')](_0x3a283e[_0xd6c2('0x42')]['id'][_0xd6c2('0x6f')](),_0xd6c2('0x5e'))['field']('NOW()',_0xd6c2('0x50'))['field']('NOW()',_0xd6c2('0x51'))[_0xd6c2('0x71')](_0xd6c2('0x7d'))['where']('deletedAt\x20IS\x20NULL')['where']('ListId\x20=\x20?',_0x28542d[_0xd6c2('0x7c')][_0xd6c2('0x6f')]())['where'](_0xd6c2('0x74')))['toString']();}_0x254c03['push'](db['sequelize'][_0xd6c2('0x31')](_0x17a0f3));}return BPromise[_0xd6c2('0x7e')](_0x254c03);}})[_0xd6c2('0x22')](function(){return _0x54a333;})['then'](respondWithResult(_0x1bae9d,null))[_0xd6c2('0x45')](handleError(_0x1bae9d,null));};exports['removeLists']=function(_0x2c7dbf,_0x1773a0,_0x1f6353){return db[_0xd6c2('0x2b')][_0xd6c2('0x4b')]({'where':{'id':_0x2c7dbf[_0xd6c2('0x42')]['id']}})[_0xd6c2('0x22')](handleEntityNotFound(_0x1773a0,null))[_0xd6c2('0x22')](function(_0x38dab4){if(_0x38dab4){return _0x38dab4[_0xd6c2('0x7f')](_0x2c7dbf['query'][_0xd6c2('0x62')]);}})[_0xd6c2('0x22')](function(_0x1c54a2){if(_0x1c54a2){return db['CmHopper'][_0xd6c2('0x23')]({'where':{'ListId':_0x2c7dbf[_0xd6c2('0x31')][_0xd6c2('0x62')],'CampaignId':_0x2c7dbf['params']['id']}})[_0xd6c2('0x22')](function(){return _0x1c54a2;});}})[_0xd6c2('0x22')](respondWithStatusCode(_0x1773a0,null))[_0xd6c2('0x45')](handleError(_0x1773a0,null));};exports[_0xd6c2('0x80')]=function(_0x1e6fb3,_0x74c7fa,_0x372329){var _0xdfad1a={};var _0xe5a378={};var _0x358126;var _0x4071e2;return db[_0xd6c2('0x2b')][_0xd6c2('0x58')]({'where':{'id':_0x1e6fb3['params']['id']}})['then'](handleEntityNotFound(_0x74c7fa,null))[_0xd6c2('0x22')](function(_0x468e32){if(_0x468e32){_0x358126=_0x468e32;_0xe5a378[_0xd6c2('0x30')]=_[_0xd6c2('0x43')](db[_0xd6c2('0x60')]['rawAttributes']);_0xe5a378['query']=_['keys'](_0x1e6fb3['query']);_0xe5a378[_0xd6c2('0x32')]=_[_0xd6c2('0x33')](_0xe5a378[_0xd6c2('0x30')],_0xe5a378[_0xd6c2('0x31')]);_0xdfad1a[_0xd6c2('0x34')]=_[_0xd6c2('0x33')](_0xe5a378['model'],qs[_0xd6c2('0x35')](_0x1e6fb3[_0xd6c2('0x31')][_0xd6c2('0x35')]));_0xdfad1a[_0xd6c2('0x34')]=_0xdfad1a[_0xd6c2('0x34')][_0xd6c2('0x36')]?_0xdfad1a[_0xd6c2('0x34')]:_0xe5a378[_0xd6c2('0x30')];_0xdfad1a[_0xd6c2('0x38')]=qs[_0xd6c2('0x39')](_0x1e6fb3[_0xd6c2('0x31')][_0xd6c2('0x39')]);_0xdfad1a['where']=qs[_0xd6c2('0x32')](_[_0xd6c2('0x3b')](_0x1e6fb3[_0xd6c2('0x31')],_0xe5a378[_0xd6c2('0x32')]));if(_0x1e6fb3[_0xd6c2('0x31')][_0xd6c2('0x3d')]){_0xdfad1a[_0xd6c2('0x3a')]=_['merge'](_0xdfad1a[_0xd6c2('0x3a')],{'$or':_['map'](_0xdfad1a['attributes'],function(_0x43f014){var _0x161bbc={};_0x161bbc[_0x43f014]={'$like':'%'+_0x1e6fb3[_0xd6c2('0x31')][_0xd6c2('0x3d')]+'%'};return _0x161bbc;})});}_0xdfad1a=_[_0xd6c2('0x3c')]({},_0xdfad1a,_0x1e6fb3['options']);return _0x358126['getBlackLists'](_0xdfad1a);}})[_0xd6c2('0x22')](function(_0x559593){if(_0x559593){_0x4071e2=_0x559593[_0xd6c2('0x36')];if(!_0x1e6fb3[_0xd6c2('0x31')][_0xd6c2('0x37')](_0xd6c2('0x57'))){_0xdfad1a['limit']=qs['limit'](_0x1e6fb3['query'][_0xd6c2('0x1b')]);_0xdfad1a[_0xd6c2('0x18')]=qs[_0xd6c2('0x18')](_0x1e6fb3[_0xd6c2('0x31')][_0xd6c2('0x18')]);}return _0x358126[_0xd6c2('0x80')](_0xdfad1a);}})['then'](function(_0x1e66e8){if(_0x1e66e8){return _0x1e66e8?{'count':_0x4071e2,'rows':_0x1e66e8}:null;}})[_0xd6c2('0x22')](respondWithResult(_0x74c7fa,null))[_0xd6c2('0x45')](handleError(_0x74c7fa,null));};exports[_0xd6c2('0x81')]=function(_0x450cba,_0x1b1fb0,_0x2ae00d){var _0x61c29a,_0xfa7f7b;return db[_0xd6c2('0x2b')][_0xd6c2('0x4b')]({'where':{'id':_0x450cba['params']['id']}})[_0xd6c2('0x22')](handleEntityNotFound(_0x1b1fb0,null))['then'](function(_0x55584f){if(_0x55584f){_0xfa7f7b=_0x55584f;return _0x55584f['addBlackLists'](_0x450cba[_0xd6c2('0x52')][_0xd6c2('0x62')],_['omit'](_0x450cba[_0xd6c2('0x52')],[_0xd6c2('0x62'),'id'])||{});}return null;})['spread'](function(_0x2dd279){var _0x5dbc6b;_0x61c29a=_0x2dd279||[];var _0x3e8a92=[];if(_0x2dd279){for(var _0xe4f509=0x0;_0xe4f509<_0x2dd279[_0xd6c2('0x36')];_0xe4f509+=0x1){var _0x10e823=_0x2dd279[_0xe4f509][_0xd6c2('0x48')]({'plain':!![]});_0x5dbc6b=squel['insert']()['into'](_0xd6c2('0x82'))[_0xd6c2('0x69')](['phone','ContactId','ListId',_0xd6c2('0x5e'),_0xd6c2('0x50'),_0xd6c2('0x51')],squel[_0xd6c2('0x76')]()['field']('phone',_0xd6c2('0x6a'))['field']('id',_0xd6c2('0x6e'))[_0xd6c2('0x6c')](_0x10e823[_0xd6c2('0x7c')][_0xd6c2('0x6f')](),_0xd6c2('0x70'))[_0xd6c2('0x6c')](_0x450cba[_0xd6c2('0x42')]['id']['toString'](),'CampaignId')[_0xd6c2('0x6c')]('NOW()',_0xd6c2('0x50'))[_0xd6c2('0x6c')]('NOW()',_0xd6c2('0x51'))['from']('cm_contacts')[_0xd6c2('0x3a')]('deletedAt\x20IS\x20NULL')[_0xd6c2('0x3a')]('ListId\x20=\x20?',_0x10e823[_0xd6c2('0x7c')][_0xd6c2('0x6f')]())[_0xd6c2('0x3a')](_0xd6c2('0x74')))[_0xd6c2('0x6f')]();_0x3e8a92[_0xd6c2('0x83')](db[_0xd6c2('0x84')][_0xd6c2('0x31')](_0x5dbc6b));}return BPromise[_0xd6c2('0x7e')](_0x3e8a92);}})['then'](function(){return _0x61c29a;})[_0xd6c2('0x22')](respondWithResult(_0x1b1fb0,null))[_0xd6c2('0x45')](handleError(_0x1b1fb0,null));};exports['removeBlackLists']=function(_0x46bff4,_0x305cbb,_0x52376b){return db[_0xd6c2('0x2b')][_0xd6c2('0x4b')]({'where':{'id':_0x46bff4[_0xd6c2('0x42')]['id']}})['then'](handleEntityNotFound(_0x305cbb,null))[_0xd6c2('0x22')](function(_0xe537e0){if(_0xe537e0){return _0xe537e0[_0xd6c2('0x85')](_0x46bff4[_0xd6c2('0x31')][_0xd6c2('0x62')]);}})['then'](function(_0x743c77){if(_0x743c77){return db['CmHopperBlack']['destroy']({'where':{'ListId':_0x46bff4['query'][_0xd6c2('0x62')],'CampaignId':_0x46bff4[_0xd6c2('0x42')]['id']}})[_0xd6c2('0x22')](function(){return _0x743c77;});}})[_0xd6c2('0x22')](respondWithStatusCode(_0x305cbb,null))[_0xd6c2('0x45')](handleError(_0x305cbb,null));};
\ No newline at end of file
index d5e3f38..37df881 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x4ea972,_0xde1d16){var _0x34db41=function(_0x3487ef){while(--_0x3487ef){_0x4ea972['push'](_0x4ea972['shift']());}};_0x34db41(++_0xde1d16);}(_0x7a54,0x106));var _0x47a5=function(_0x937c76,_0x5a1f2d){_0x937c76=_0x937c76-0x0;var _0x1c408f=_0x7a54[_0x937c76];return _0x1c408f;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9957=['exports','define','Campaign','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./campaign.attributes'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_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
index b50d5eb..de67ffe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c99=['limit','include','model','map','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Campaign,\x20%s,\x20%s','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetCampaign','findAll','options','raw','attributes'];(function(_0x356cd9,_0x425e8a){var _0x4c081d=function(_0x2f3f98){while(--_0x2f3f98){_0x356cd9['push'](_0x356cd9['shift']());}};_0x4c081d(++_0x425e8a);}(_0x8c99,0x1a8));var _0x98c9=function(_0x4ed1d4,_0x512d9a){_0x4ed1d4=_0x4ed1d4-0x0;var _0x28e363=_0x8c99[_0x4ed1d4];return _0x28e363;};'use strict';var _=require(_0x98c9('0x0'));var util=require(_0x98c9('0x1'));var moment=require(_0x98c9('0x2'));var BPromise=require(_0x98c9('0x3'));var rs=require(_0x98c9('0x4'));var fs=require('fs');var Redis=require(_0x98c9('0x5'));var db=require(_0x98c9('0x6'))['db'];var utils=require(_0x98c9('0x7'));var logger=require(_0x98c9('0x8'))(_0x98c9('0x9'));var config=require(_0x98c9('0xa'));var jayson=require(_0x98c9('0xb'));var client=jayson['client'][_0x98c9('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2ed2b6,_0x538465,_0x4af8a6){return new BPromise(function(_0x5b983e,_0xc789b1){return client[_0x98c9('0xd')](_0x2ed2b6,_0x4af8a6)[_0x98c9('0xe')](function(_0x4052cf){logger[_0x98c9('0xf')](_0x98c9('0x10'),_0x538465,_0x98c9('0x11'));logger[_0x98c9('0x12')](_0x98c9('0x13'),_0x538465,_0x98c9('0x11'),JSON[_0x98c9('0x14')](_0x4052cf));if(_0x4052cf['error']){if(_0x4052cf[_0x98c9('0x15')][_0x98c9('0x16')]===0x1f4){logger[_0x98c9('0x15')](_0x98c9('0x10'),_0x538465,_0x4052cf['error'][_0x98c9('0x17')]);return _0xc789b1(_0x4052cf[_0x98c9('0x15')][_0x98c9('0x17')]);}logger[_0x98c9('0x15')](_0x98c9('0x10'),_0x538465,_0x4052cf['error'][_0x98c9('0x17')]);return _0x5b983e(_0x4052cf[_0x98c9('0x15')][_0x98c9('0x17')]);}else{logger[_0x98c9('0xf')](_0x98c9('0x10'),_0x538465,_0x98c9('0x11'));_0x5b983e(_0x4052cf[_0x98c9('0x18')][_0x98c9('0x17')]);}})[_0x98c9('0x19')](function(_0x2bb8b6){logger[_0x98c9('0x15')](_0x98c9('0x10'),_0x538465,_0x2bb8b6);_0xc789b1(_0x2bb8b6);});});}exports[_0x98c9('0x1a')]=function(_0x39ed74){var _0x534903=this;return new Promise(function(_0x351254,_0x22fe71){return db['Campaign'][_0x98c9('0x1b')]({'raw':_0x39ed74['options']?_0x39ed74[_0x98c9('0x1c')][_0x98c9('0x1d')]===undefined?!![]:![]:!![],'where':_0x39ed74[_0x98c9('0x1c')]?_0x39ed74[_0x98c9('0x1c')]['where']||null:null,'attributes':_0x39ed74[_0x98c9('0x1c')]?_0x39ed74[_0x98c9('0x1c')][_0x98c9('0x1e')]||null:null,'limit':_0x39ed74[_0x98c9('0x1c')]?_0x39ed74['options'][_0x98c9('0x1f')]||null:null,'include':_0x39ed74[_0x98c9('0x1c')]?_0x39ed74[_0x98c9('0x1c')][_0x98c9('0x20')]?_['map'](_0x39ed74['options'][_0x98c9('0x20')],function(_0x4373cc){return{'model':db[_0x4373cc[_0x98c9('0x21')]],'as':_0x4373cc['as'],'attributes':_0x4373cc['attributes'],'include':_0x4373cc['include']?_['map'](_0x4373cc[_0x98c9('0x20')],function(_0x1653e0){return{'model':db[_0x1653e0['model']],'as':_0x1653e0['as'],'attributes':_0x1653e0[_0x98c9('0x1e')],'include':_0x1653e0[_0x98c9('0x20')]?_[_0x98c9('0x22')](_0x1653e0[_0x98c9('0x20')],function(_0x3f503a){return{'model':db[_0x3f503a[_0x98c9('0x21')]],'as':_0x3f503a['as'],'attributes':_0x3f503a['attributes']};}):[]};}):[]};}):[]:[]})[_0x98c9('0xe')](function(_0x361305){logger[_0x98c9('0xf')](_0x98c9('0x1a'),_0x39ed74);logger[_0x98c9('0x12')]('GetCampaign',_0x39ed74,JSON[_0x98c9('0x14')](_0x361305));_0x351254(_0x361305);})[_0x98c9('0x19')](function(_0x58c6e3){logger[_0x98c9('0x15')]('GetCampaign',_0x58c6e3['message'],_0x39ed74);_0x22fe71(_0x534903[_0x98c9('0x15')](0x1f4,_0x58c6e3['message']));});});};
\ No newline at end of file
+var _0xdb13=['result','catch','GetCampaign','Campaign','findAll','options','raw','attributes','limit','include','map','model','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','Campaign,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message'];(function(_0x433bd8,_0x3f646a){var _0x2c8fbf=function(_0x24fcad){while(--_0x24fcad){_0x433bd8['push'](_0x433bd8['shift']());}};_0x2c8fbf(++_0x3f646a);}(_0xdb13,0x10c));var _0x3db1=function(_0x277b9a,_0x181597){_0x277b9a=_0x277b9a-0x0;var _0x16785f=_0xdb13[_0x277b9a];return _0x16785f;};'use strict';var _=require('lodash');var util=require(_0x3db1('0x0'));var moment=require(_0x3db1('0x1'));var BPromise=require(_0x3db1('0x2'));var rs=require(_0x3db1('0x3'));var fs=require('fs');var Redis=require(_0x3db1('0x4'));var db=require(_0x3db1('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x3db1('0x6'))(_0x3db1('0x7'));var config=require(_0x3db1('0x8'));var jayson=require(_0x3db1('0x9'));var client=jayson[_0x3db1('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x37ae52,_0x2e1935,_0x28e7b6){return new BPromise(function(_0x379cfb,_0x22f0c7){return client[_0x3db1('0xb')](_0x37ae52,_0x28e7b6)[_0x3db1('0xc')](function(_0x9a9677){logger[_0x3db1('0xd')](_0x3db1('0xe'),_0x2e1935,_0x3db1('0xf'));logger[_0x3db1('0x10')]('Campaign,\x20%s,\x20%s,\x20%s',_0x2e1935,_0x3db1('0xf'),JSON[_0x3db1('0x11')](_0x9a9677));if(_0x9a9677[_0x3db1('0x12')]){if(_0x9a9677[_0x3db1('0x12')]['code']===0x1f4){logger['error'](_0x3db1('0xe'),_0x2e1935,_0x9a9677[_0x3db1('0x12')][_0x3db1('0x13')]);return _0x22f0c7(_0x9a9677[_0x3db1('0x12')][_0x3db1('0x13')]);}logger['error']('Campaign,\x20%s,\x20%s',_0x2e1935,_0x9a9677['error']['message']);return _0x379cfb(_0x9a9677[_0x3db1('0x12')][_0x3db1('0x13')]);}else{logger[_0x3db1('0xd')](_0x3db1('0xe'),_0x2e1935,_0x3db1('0xf'));_0x379cfb(_0x9a9677[_0x3db1('0x14')]['message']);}})[_0x3db1('0x15')](function(_0x6b8af0){logger['error'](_0x3db1('0xe'),_0x2e1935,_0x6b8af0);_0x22f0c7(_0x6b8af0);});});}exports[_0x3db1('0x16')]=function(_0x549a0e){var _0x26edb2=this;return new Promise(function(_0x5f3203,_0x16d339){return db[_0x3db1('0x17')][_0x3db1('0x18')]({'raw':_0x549a0e[_0x3db1('0x19')]?_0x549a0e['options'][_0x3db1('0x1a')]===undefined?!![]:![]:!![],'where':_0x549a0e[_0x3db1('0x19')]?_0x549a0e[_0x3db1('0x19')]['where']||null:null,'attributes':_0x549a0e[_0x3db1('0x19')]?_0x549a0e[_0x3db1('0x19')][_0x3db1('0x1b')]||null:null,'limit':_0x549a0e[_0x3db1('0x19')]?_0x549a0e[_0x3db1('0x19')][_0x3db1('0x1c')]||null:null,'include':_0x549a0e[_0x3db1('0x19')]?_0x549a0e[_0x3db1('0x19')][_0x3db1('0x1d')]?_[_0x3db1('0x1e')](_0x549a0e[_0x3db1('0x19')][_0x3db1('0x1d')],function(_0x1ee0c6){return{'model':db[_0x1ee0c6[_0x3db1('0x1f')]],'as':_0x1ee0c6['as'],'attributes':_0x1ee0c6[_0x3db1('0x1b')],'include':_0x1ee0c6['include']?_[_0x3db1('0x1e')](_0x1ee0c6[_0x3db1('0x1d')],function(_0x2263c6){return{'model':db[_0x2263c6['model']],'as':_0x2263c6['as'],'attributes':_0x2263c6[_0x3db1('0x1b')],'include':_0x2263c6[_0x3db1('0x1d')]?_[_0x3db1('0x1e')](_0x2263c6[_0x3db1('0x1d')],function(_0x5bd826){return{'model':db[_0x5bd826[_0x3db1('0x1f')]],'as':_0x5bd826['as'],'attributes':_0x5bd826[_0x3db1('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x408d1c){logger[_0x3db1('0xd')](_0x3db1('0x16'),_0x549a0e);logger['debug'](_0x3db1('0x16'),_0x549a0e,JSON[_0x3db1('0x11')](_0x408d1c));_0x5f3203(_0x408d1c);})[_0x3db1('0x15')](function(_0x51ec2f){logger['error'](_0x3db1('0x16'),_0x51ec2f[_0x3db1('0x13')],_0x549a0e);_0x16d339(_0x26edb2['error'](0x1f4,_0x51ec2f['message']));});});};
\ No newline at end of file
index ab4de60..3d96e98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a38=['get','isAuthenticated','index','/:id','show','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/lists','getLists','/:id/blacklists','getBlackLists','post','create','/:id/clone','clone','addLists','put','delete','destroy','removeLists','removeBlackLists','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./campaign.controller'];(function(_0x5a08dd,_0x244946){var _0x28f5cf=function(_0x53670c){while(--_0x53670c){_0x5a08dd['push'](_0x5a08dd['shift']());}};_0x28f5cf(++_0x244946);}(_0x5a38,0xaf));var _0x85a3=function(_0x19258b,_0x22e850){_0x19258b=_0x19258b-0x0;var _0x5be66a=_0x5a38[_0x19258b];return _0x5be66a;};'use strict';var multer=require(_0x85a3('0x0'));var util=require(_0x85a3('0x1'));var path=require(_0x85a3('0x2'));var timeout=require(_0x85a3('0x3'));var express=require(_0x85a3('0x4'));var router=express[_0x85a3('0x5')]();var fs_extra=require(_0x85a3('0x6'));var auth=require(_0x85a3('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x85a3('0x8'));var controller=require(_0x85a3('0x9'));router[_0x85a3('0xa')]('/',auth[_0x85a3('0xb')](),controller[_0x85a3('0xc')]);router[_0x85a3('0xa')](_0x85a3('0xd'),auth[_0x85a3('0xb')](),controller[_0x85a3('0xe')]);router[_0x85a3('0xa')](_0x85a3('0xf'),auth[_0x85a3('0xb')](),controller[_0x85a3('0x10')]);router[_0x85a3('0xa')](_0x85a3('0x11'),auth[_0x85a3('0xb')](),controller[_0x85a3('0x12')]);router[_0x85a3('0xa')](_0x85a3('0x13'),auth[_0x85a3('0xb')](),controller[_0x85a3('0x14')]);router['get'](_0x85a3('0x15'),auth[_0x85a3('0xb')](),controller[_0x85a3('0x16')]);router['get'](_0x85a3('0x17'),auth[_0x85a3('0xb')](),controller[_0x85a3('0x18')]);router[_0x85a3('0xa')](_0x85a3('0x19'),auth[_0x85a3('0xb')](),controller[_0x85a3('0x1a')]);router[_0x85a3('0x1b')]('/',auth[_0x85a3('0xb')](),controller[_0x85a3('0x1c')]);router[_0x85a3('0x1b')](_0x85a3('0x1d'),auth[_0x85a3('0xb')](),controller[_0x85a3('0x1e')]);router[_0x85a3('0x1b')](_0x85a3('0x17'),auth[_0x85a3('0xb')](),controller[_0x85a3('0x1f')]);router[_0x85a3('0x1b')](_0x85a3('0x19'),auth[_0x85a3('0xb')](),controller['addBlackLists']);router[_0x85a3('0x20')](_0x85a3('0xd'),auth[_0x85a3('0xb')](),controller['update']);router[_0x85a3('0x21')](_0x85a3('0xd'),auth[_0x85a3('0xb')](),controller[_0x85a3('0x22')]);router[_0x85a3('0x21')](_0x85a3('0x17'),auth[_0x85a3('0xb')](),controller[_0x85a3('0x23')]);router[_0x85a3('0x21')](_0x85a3('0x19'),auth[_0x85a3('0xb')](),controller[_0x85a3('0x24')]);module['exports']=router;
\ No newline at end of file
+var _0x1ec4=['../../components/interaction/service','../../config/environment','./campaign.controller','get','isAuthenticated','index','show','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/lists','getLists','/:id/blacklists','getBlackLists','post','create','/:id/clone','clone','addLists','addBlackLists','put','/:id','delete','destroy','removeLists','exports','multer','util','path','express','Router','../../components/auth/service'];(function(_0x3a87ef,_0x25aa94){var _0x414ef9=function(_0x5787eb){while(--_0x5787eb){_0x3a87ef['push'](_0x3a87ef['shift']());}};_0x414ef9(++_0x25aa94);}(_0x1ec4,0xef));var _0x41ec=function(_0x23661c,_0x2cd175){_0x23661c=_0x23661c-0x0;var _0x4295c1=_0x1ec4[_0x23661c];return _0x4295c1;};'use strict';var multer=require(_0x41ec('0x0'));var util=require(_0x41ec('0x1'));var path=require(_0x41ec('0x2'));var timeout=require('connect-timeout');var express=require(_0x41ec('0x3'));var router=express[_0x41ec('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x41ec('0x5'));var interaction=require(_0x41ec('0x6'));var config=require(_0x41ec('0x7'));var controller=require(_0x41ec('0x8'));router[_0x41ec('0x9')]('/',auth[_0x41ec('0xa')](),controller[_0x41ec('0xb')]);router[_0x41ec('0x9')]('/:id',auth[_0x41ec('0xa')](),controller[_0x41ec('0xc')]);router['get'](_0x41ec('0xd'),auth[_0x41ec('0xa')](),controller[_0x41ec('0xe')]);router[_0x41ec('0x9')](_0x41ec('0xf'),auth[_0x41ec('0xa')](),controller[_0x41ec('0x10')]);router[_0x41ec('0x9')](_0x41ec('0x11'),auth[_0x41ec('0xa')](),controller[_0x41ec('0x12')]);router[_0x41ec('0x9')]('/:id/hopper_black',auth[_0x41ec('0xa')](),controller['getHopperBlacks']);router[_0x41ec('0x9')](_0x41ec('0x13'),auth[_0x41ec('0xa')](),controller[_0x41ec('0x14')]);router[_0x41ec('0x9')](_0x41ec('0x15'),auth[_0x41ec('0xa')](),controller[_0x41ec('0x16')]);router[_0x41ec('0x17')]('/',auth['isAuthenticated'](),controller[_0x41ec('0x18')]);router[_0x41ec('0x17')](_0x41ec('0x19'),auth[_0x41ec('0xa')](),controller[_0x41ec('0x1a')]);router[_0x41ec('0x17')](_0x41ec('0x13'),auth[_0x41ec('0xa')](),controller[_0x41ec('0x1b')]);router[_0x41ec('0x17')]('/:id/blacklists',auth[_0x41ec('0xa')](),controller[_0x41ec('0x1c')]);router[_0x41ec('0x1d')](_0x41ec('0x1e'),auth[_0x41ec('0xa')](),controller['update']);router[_0x41ec('0x1f')]('/:id',auth[_0x41ec('0xa')](),controller[_0x41ec('0x20')]);router['delete'](_0x41ec('0x13'),auth[_0x41ec('0xa')](),controller[_0x41ec('0x21')]);router[_0x41ec('0x1f')](_0x41ec('0x15'),auth[_0x41ec('0xa')](),controller['removeBlackLists']);module[_0x41ec('0x22')]=router;
\ No newline at end of file
index aaebbfe..6c124a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4de7=['sequelize','exports','STRING','VIRTUAL','getDataValue','key'];(function(_0xe1f268,_0x2150ab){var _0x572864=function(_0x4727b0){while(--_0x4727b0){_0xe1f268['push'](_0xe1f268['shift']());}};_0x572864(++_0x2150ab);}(_0x4de7,0x1ce));var _0x74de=function(_0x130f7b,_0x495691){_0x130f7b=_0x130f7b-0x0;var _0x1f2239=_0x4de7[_0x130f7b];return _0x1f2239;};'use strict';var Sequelize=require(_0x74de('0x0'));module[_0x74de('0x1')]={'key':{'type':Sequelize[_0x74de('0x2')],'allowNull':![]},'value':{'type':Sequelize['TEXT'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize[_0x74de('0x3')],'get':function(){return this[_0x74de('0x4')](_0x74de('0x5'));}}};
\ No newline at end of file
+var _0x80ea=['sequelize','TEXT','VIRTUAL','getDataValue','key'];(function(_0x451563,_0x1d02c6){var _0x1bff88=function(_0x4bcb4b){while(--_0x4bcb4b){_0x451563['push'](_0x451563['shift']());}};_0x1bff88(++_0x1d02c6);}(_0x80ea,0x127));var _0xa80e=function(_0x54a225,_0x512d8e){_0x54a225=_0x54a225-0x0;var _0x7451ec=_0x80ea[_0x54a225];return _0x7451ec;};'use strict';var Sequelize=require(_0xa80e('0x0'));module['exports']={'key':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0xa80e('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize[_0xa80e('0x2')],'get':function(){return this[_0xa80e('0x3')](_0xa80e('0x4'));}}};
\ No newline at end of file
index d4ee582..d4fed5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a0f=['Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','request-promise','moment','bluebird','mustache','sox','to-csv','fs-extra','lodash','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','offset','undefined','count','limit','set','Content-Range','apply','reject','then','destroy','get','CannedAnswers','UserProfileResource','end','name','send','index','map','rawAttributes','type','key','keys','query','filters','intersection','model','attributes','fields','length','nolimit','order','where','filter','merge','options','CannedAnswer','includeAll','findAll','rows','params','find','catch','update','body','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','The\x20inserted\x20key\x20already\x20exists.','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x1a0f,0x1ed));var _0xf1a0=function(_0xc08f00,_0x28067f){_0xc08f00=_0xc08f00-0x0;var _0x8649f7=_0x1a0f[_0xc08f00];return _0x8649f7;};'use strict';var emlformat=require(_0xf1a0('0x0'));var rimraf=require(_0xf1a0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xf1a0('0x2'));var moment=require(_0xf1a0('0x3'));var BPromise=require(_0xf1a0('0x4'));var Mustache=require(_0xf1a0('0x5'));var util=require('util');var path=require('path');var sox=require(_0xf1a0('0x6'));var csv=require(_0xf1a0('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf1a0('0x8'));var _=require(_0xf1a0('0x9'));var squel=require(_0xf1a0('0xa'));var crypto=require('crypto');var jsforce=require(_0xf1a0('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xf1a0('0x7'));var querystring=require(_0xf1a0('0xc'));var Papa=require(_0xf1a0('0xd'));var Redis=require('ioredis');var authService=require(_0xf1a0('0xe'));var qs=require(_0xf1a0('0xf'));var as=require(_0xf1a0('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf1a0('0x11'))(_0xf1a0('0x12'));var utils=require('../../config/utils');var config=require(_0xf1a0('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xf1a0('0x14'))['db'];function respondWithStatusCode(_0x3c3400,_0x44cb04){_0x44cb04=_0x44cb04||0xcc;return function(_0x43fa73){if(_0x43fa73){return _0x3c3400[_0xf1a0('0x15')](_0x44cb04);}return _0x3c3400[_0xf1a0('0x16')](_0x44cb04)['end']();};}function respondWithResult(_0x4676ad,_0x255778){_0x255778=_0x255778||0xc8;return function(_0x15e10c){if(_0x15e10c){return _0x4676ad['status'](_0x255778)['json'](_0x15e10c);}};}function respondWithFilteredResult(_0x55c0f2,_0x27de89){return function(_0x584618){if(_0x584618){var _0x5f2e65=typeof _0x27de89[_0xf1a0('0x17')]===_0xf1a0('0x18')&&typeof _0x27de89['limit']===_0xf1a0('0x18');var _0x55938d=_0x584618[_0xf1a0('0x19')];var _0x38d6ee=_0x5f2e65?0x0:_0x27de89[_0xf1a0('0x17')];var _0x105e65=_0x5f2e65?_0x584618['count']:_0x27de89[_0xf1a0('0x17')]+_0x27de89[_0xf1a0('0x1a')];var _0x2adbb7;if(_0x105e65>=_0x55938d){_0x105e65=_0x55938d;_0x2adbb7=0xc8;}else{_0x2adbb7=0xce;}_0x55c0f2['status'](_0x2adbb7);return _0x55c0f2[_0xf1a0('0x1b')](_0xf1a0('0x1c'),_0x38d6ee+'-'+_0x105e65+'/'+_0x55938d)['json'](_0x584618);}return null;};}function patchUpdates(_0x9f0bce){return function(_0xa3d1e3){try{jsonpatch[_0xf1a0('0x1d')](_0xa3d1e3,_0x9f0bce,!![]);}catch(_0x5f4542){return BPromise[_0xf1a0('0x1e')](_0x5f4542);}return _0xa3d1e3['save']();};}function saveUpdates(_0x2020ec,_0x190236){return function(_0x35ad71){if(_0x35ad71){return _0x35ad71['update'](_0x2020ec)[_0xf1a0('0x1f')](function(_0x3afbd9){return _0x3afbd9;});}return null;};}function removeEntity(_0x1b3270,_0xe4623d){return function(_0x4722fc){if(_0x4722fc){return _0x4722fc[_0xf1a0('0x20')]()[_0xf1a0('0x1f')](function(){var _0x2c2186=_0x4722fc[_0xf1a0('0x21')]({'plain':!![]});var _0x16b632=_0xf1a0('0x22');return db[_0xf1a0('0x23')]['destroy']({'where':{'type':_0x16b632,'resourceId':_0x2c2186['id']}})[_0xf1a0('0x1f')](function(){return _0x4722fc;});})[_0xf1a0('0x1f')](function(){_0x1b3270[_0xf1a0('0x16')](0xcc)[_0xf1a0('0x24')]();});}};}function handleEntityNotFound(_0x26d186,_0x1dd501){return function(_0x29f55a){if(!_0x29f55a){_0x26d186['sendStatus'](0x194);}return _0x29f55a;};}function handleError(_0x5dc1ce,_0x5b5506){_0x5b5506=_0x5b5506||0x1f4;return function(_0x4fcfa6){logger['error'](_0x4fcfa6['stack']);if(_0x4fcfa6[_0xf1a0('0x25')]){delete _0x4fcfa6[_0xf1a0('0x25')];}_0x5dc1ce[_0xf1a0('0x16')](_0x5b5506)[_0xf1a0('0x26')](_0x4fcfa6);};}exports[_0xf1a0('0x27')]=function(_0x16f214,_0x415eb5){var _0x5ef68f={},_0x41f91d={},_0x12afff={'count':0x0,'rows':[]};var _0x250fab=_[_0xf1a0('0x28')](db['CannedAnswer'][_0xf1a0('0x29')],function(_0x408cac){return{'name':_0x408cac['fieldName'],'type':_0x408cac[_0xf1a0('0x2a')][_0xf1a0('0x2b')]};});_0x41f91d['model']=_[_0xf1a0('0x28')](_0x250fab,_0xf1a0('0x25'));_0x41f91d['query']=_[_0xf1a0('0x2c')](_0x16f214[_0xf1a0('0x2d')]);_0x41f91d[_0xf1a0('0x2e')]=_[_0xf1a0('0x2f')](_0x41f91d[_0xf1a0('0x30')],_0x41f91d[_0xf1a0('0x2d')]);_0x5ef68f[_0xf1a0('0x31')]=_[_0xf1a0('0x2f')](_0x41f91d[_0xf1a0('0x30')],qs['fields'](_0x16f214[_0xf1a0('0x2d')][_0xf1a0('0x32')]));_0x5ef68f[_0xf1a0('0x31')]=_0x5ef68f[_0xf1a0('0x31')][_0xf1a0('0x33')]?_0x5ef68f['attributes']:_0x41f91d['model'];if(!_0x16f214[_0xf1a0('0x2d')]['hasOwnProperty'](_0xf1a0('0x34'))){_0x5ef68f['limit']=qs[_0xf1a0('0x1a')](_0x16f214[_0xf1a0('0x2d')][_0xf1a0('0x1a')]);_0x5ef68f['offset']=qs[_0xf1a0('0x17')](_0x16f214[_0xf1a0('0x2d')][_0xf1a0('0x17')]);}_0x5ef68f[_0xf1a0('0x35')]=qs['sort'](_0x16f214[_0xf1a0('0x2d')]['sort']);_0x5ef68f[_0xf1a0('0x36')]=qs['filters'](_['pick'](_0x16f214[_0xf1a0('0x2d')],_0x41f91d[_0xf1a0('0x2e')]),_0x250fab);if(_0x16f214[_0xf1a0('0x2d')][_0xf1a0('0x37')]){_0x5ef68f[_0xf1a0('0x36')]=_[_0xf1a0('0x38')](_0x5ef68f[_0xf1a0('0x36')],{'$or':[{'key':{'$like':'%'+_0x16f214['query'][_0xf1a0('0x37')]+'%'}},{'value':{'$like':'%'+_0x16f214[_0xf1a0('0x2d')]['filter']+'%'}}]});}_0x5ef68f=_[_0xf1a0('0x38')]({},_0x5ef68f,_0x16f214[_0xf1a0('0x39')]);var _0x4c76e2={'where':_0x5ef68f[_0xf1a0('0x36')]};return db[_0xf1a0('0x3a')]['count'](_0x4c76e2)[_0xf1a0('0x1f')](function(_0x4ea119){_0x12afff[_0xf1a0('0x19')]=_0x4ea119;if(_0x16f214[_0xf1a0('0x2d')][_0xf1a0('0x3b')]){_0x5ef68f['include']=[{'all':!![]}];}return db[_0xf1a0('0x3a')][_0xf1a0('0x3c')](_0x5ef68f);})[_0xf1a0('0x1f')](function(_0x367eb9){_0x12afff[_0xf1a0('0x3d')]=_0x367eb9;return _0x12afff;})[_0xf1a0('0x1f')](respondWithFilteredResult(_0x415eb5,_0x5ef68f))['catch'](handleError(_0x415eb5,null));};exports['show']=function(_0x3085be,_0x31983b){var _0x542c1a={'raw':!![],'where':{'id':_0x3085be[_0xf1a0('0x3e')]['id']}},_0x6e92a={};_0x6e92a[_0xf1a0('0x30')]=_['keys'](db[_0xf1a0('0x3a')][_0xf1a0('0x29')]);_0x6e92a[_0xf1a0('0x2d')]=_[_0xf1a0('0x2c')](_0x3085be[_0xf1a0('0x2d')]);_0x6e92a['filters']=_[_0xf1a0('0x2f')](_0x6e92a[_0xf1a0('0x30')],_0x6e92a[_0xf1a0('0x2d')]);_0x542c1a['attributes']=_[_0xf1a0('0x2f')](_0x6e92a[_0xf1a0('0x30')],qs[_0xf1a0('0x32')](_0x3085be['query'][_0xf1a0('0x32')]));_0x542c1a['attributes']=_0x542c1a[_0xf1a0('0x31')][_0xf1a0('0x33')]?_0x542c1a[_0xf1a0('0x31')]:_0x6e92a['model'];if(_0x3085be[_0xf1a0('0x2d')][_0xf1a0('0x3b')]){_0x542c1a['include']=[{'all':!![]}];}_0x542c1a=_[_0xf1a0('0x38')]({},_0x542c1a,_0x3085be[_0xf1a0('0x39')]);return db[_0xf1a0('0x3a')][_0xf1a0('0x3f')](_0x542c1a)['then'](handleEntityNotFound(_0x31983b,null))[_0xf1a0('0x1f')](respondWithResult(_0x31983b,null))[_0xf1a0('0x40')](handleError(_0x31983b,null));};exports[_0xf1a0('0x41')]=function(_0x59ea35,_0x238923){if(_0x59ea35[_0xf1a0('0x42')]['id']){delete _0x59ea35['body']['id'];}return db[_0xf1a0('0x3a')][_0xf1a0('0x3f')]({'where':{'id':_0x59ea35[_0xf1a0('0x3e')]['id']}})[_0xf1a0('0x1f')](handleEntityNotFound(_0x238923,null))[_0xf1a0('0x1f')](saveUpdates(_0x59ea35[_0xf1a0('0x42')],null))[_0xf1a0('0x1f')](respondWithResult(_0x238923,null))[_0xf1a0('0x40')](handleError(_0x238923,null));};exports[_0xf1a0('0x20')]=function(_0x1c5451,_0x12c29d){return db[_0xf1a0('0x3a')][_0xf1a0('0x3f')]({'where':{'id':_0x1c5451[_0xf1a0('0x3e')]['id']}})[_0xf1a0('0x1f')](handleEntityNotFound(_0x12c29d,null))[_0xf1a0('0x1f')](removeEntity(_0x12c29d,null))['catch'](handleError(_0x12c29d,null));};exports[_0xf1a0('0x43')]=function(_0x45960b,_0x53fc21){var _0x4f713e={'key':_0x45960b[_0xf1a0('0x42')][_0xf1a0('0x2b')]};if(_0x45960b['body'][_0xf1a0('0x44')]){_0x4f713e[_0xf1a0('0x44')]=_0x45960b[_0xf1a0('0x42')][_0xf1a0('0x44')];}else if(_0x45960b[_0xf1a0('0x42')]['SmsAccountId']){_0x4f713e[_0xf1a0('0x45')]=_0x45960b[_0xf1a0('0x42')][_0xf1a0('0x45')];}else if(_0x45960b[_0xf1a0('0x42')][_0xf1a0('0x46')]){_0x4f713e['OpenchannelAccountId']=_0x45960b[_0xf1a0('0x42')][_0xf1a0('0x46')];}else if(_0x45960b[_0xf1a0('0x42')][_0xf1a0('0x47')]){_0x4f713e[_0xf1a0('0x47')]=_0x45960b['body'][_0xf1a0('0x47')];}return db[_0xf1a0('0x3a')]['find']({'where':_0x4f713e})[_0xf1a0('0x1f')](function(_0x4adade){if(_0x4adade){throw new db[(_0xf1a0('0x48'))]['ValidationError'](_0xf1a0('0x49'));}return db[_0xf1a0('0x3a')]['create'](_0x45960b[_0xf1a0('0x42')]);})[_0xf1a0('0x1f')](function(_0x1ebd1e){var _0x4b08c8=_0x45960b[_0xf1a0('0x4a')][_0xf1a0('0x21')]({'plain':!![]});if(!_0x4b08c8)throw new Error(_0xf1a0('0x4b'));if(_0x4b08c8[_0xf1a0('0x4c')]==='user'){var _0x243db5=_0x1ebd1e[_0xf1a0('0x21')]({'plain':!![]});return db[_0xf1a0('0x4d')][_0xf1a0('0x3f')]({'where':{'name':_0xf1a0('0x22'),'userProfileId':_0x4b08c8[_0xf1a0('0x4e')]},'raw':!![]})[_0xf1a0('0x1f')](function(_0x438756){if(_0x438756&&_0x438756[_0xf1a0('0x4f')]===0x0){return db['UserProfileResource']['create']({'name':_0x243db5[_0xf1a0('0x25')],'resourceId':_0x243db5['id'],'type':_0x438756['name'],'sectionId':_0x438756['id']},{})[_0xf1a0('0x1f')](function(){return _0x1ebd1e;});}else{return _0x1ebd1e;}})['catch'](function(_0x4c6221){logger[_0xf1a0('0x50')](_0xf1a0('0x51'),_0x4c6221);throw _0x4c6221;});}return _0x1ebd1e;})['then'](respondWithResult(_0x53fc21,0xc9))[_0xf1a0('0x40')](handleError(_0x53fc21,null));};
\ No newline at end of file
+var _0xd0c4=['sort','where','pick','filter','merge','options','includeAll','include','findAll','catch','show','params','find','body','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','update','then','get','UserProfileResource','destroy','error','name','send','index','map','CannedAnswer','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order'];(function(_0x106b83,_0x5dc565){var _0x207ed4=function(_0x37ceb1){while(--_0x37ceb1){_0x106b83['push'](_0x106b83['shift']());}};_0x207ed4(++_0x5dc565);}(_0xd0c4,0x6f));var _0x4d0c=function(_0x334201,_0x39f06f){_0x334201=_0x334201-0x0;var _0x134700=_0xd0c4[_0x334201];return _0x134700;};'use strict';var emlformat=require(_0x4d0c('0x0'));var rimraf=require(_0x4d0c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x4d0c('0x2'));var moment=require('moment');var BPromise=require(_0x4d0c('0x3'));var Mustache=require(_0x4d0c('0x4'));var util=require(_0x4d0c('0x5'));var path=require(_0x4d0c('0x6'));var sox=require(_0x4d0c('0x7'));var csv=require(_0x4d0c('0x8'));var ejs=require(_0x4d0c('0x9'));var fs=require('fs');var fs_extra=require(_0x4d0c('0xa'));var _=require(_0x4d0c('0xb'));var squel=require(_0x4d0c('0xc'));var crypto=require(_0x4d0c('0xd'));var jsforce=require(_0x4d0c('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x4d0c('0xf'));var Papa=require(_0x4d0c('0x10'));var Redis=require(_0x4d0c('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x4d0c('0x12'));var as=require(_0x4d0c('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4d0c('0x14'))('api');var utils=require(_0x4d0c('0x15'));var config=require(_0x4d0c('0x16'));var licenseUtil=require(_0x4d0c('0x17'));var db=require(_0x4d0c('0x18'))['db'];function respondWithStatusCode(_0x5286f9,_0x504839){_0x504839=_0x504839||0xcc;return function(_0x5592ad){if(_0x5592ad){return _0x5286f9[_0x4d0c('0x19')](_0x504839);}return _0x5286f9[_0x4d0c('0x1a')](_0x504839)[_0x4d0c('0x1b')]();};}function respondWithResult(_0x396de2,_0x3184b3){_0x3184b3=_0x3184b3||0xc8;return function(_0x186a42){if(_0x186a42){return _0x396de2['status'](_0x3184b3)[_0x4d0c('0x1c')](_0x186a42);}};}function respondWithFilteredResult(_0x26fc71,_0x2ff89d){return function(_0x2aa781){if(_0x2aa781){var _0x188451=typeof _0x2ff89d[_0x4d0c('0x1d')]===_0x4d0c('0x1e')&&typeof _0x2ff89d[_0x4d0c('0x1f')]==='undefined';var _0x164a34=_0x2aa781[_0x4d0c('0x20')];var _0x2617c2=_0x188451?0x0:_0x2ff89d['offset'];var _0x4f2b5f=_0x188451?_0x2aa781[_0x4d0c('0x20')]:_0x2ff89d[_0x4d0c('0x1d')]+_0x2ff89d[_0x4d0c('0x1f')];var _0x13f115;if(_0x4f2b5f>=_0x164a34){_0x4f2b5f=_0x164a34;_0x13f115=0xc8;}else{_0x13f115=0xce;}_0x26fc71['status'](_0x13f115);return _0x26fc71['set'](_0x4d0c('0x21'),_0x2617c2+'-'+_0x4f2b5f+'/'+_0x164a34)[_0x4d0c('0x1c')](_0x2aa781);}return null;};}function patchUpdates(_0x29ba80){return function(_0x54f61e){try{jsonpatch[_0x4d0c('0x22')](_0x54f61e,_0x29ba80,!![]);}catch(_0x5d60c4){return BPromise['reject'](_0x5d60c4);}return _0x54f61e[_0x4d0c('0x23')]();};}function saveUpdates(_0xe5bdaa,_0x3fc636){return function(_0x2b16f0){if(_0x2b16f0){return _0x2b16f0[_0x4d0c('0x24')](_0xe5bdaa)[_0x4d0c('0x25')](function(_0x5b91f9){return _0x5b91f9;});}return null;};}function removeEntity(_0x442d56,_0x14839d){return function(_0x51672){if(_0x51672){return _0x51672['destroy']()[_0x4d0c('0x25')](function(){var _0x4f343c=_0x51672[_0x4d0c('0x26')]({'plain':!![]});var _0x3b4939='CannedAnswers';return db[_0x4d0c('0x27')][_0x4d0c('0x28')]({'where':{'type':_0x3b4939,'resourceId':_0x4f343c['id']}})[_0x4d0c('0x25')](function(){return _0x51672;});})[_0x4d0c('0x25')](function(){_0x442d56[_0x4d0c('0x1a')](0xcc)[_0x4d0c('0x1b')]();});}};}function handleEntityNotFound(_0x49ae94,_0x28edba){return function(_0x532351){if(!_0x532351){_0x49ae94[_0x4d0c('0x19')](0x194);}return _0x532351;};}function handleError(_0x488b49,_0x40257c){_0x40257c=_0x40257c||0x1f4;return function(_0x1e3c9d){logger[_0x4d0c('0x29')](_0x1e3c9d['stack']);if(_0x1e3c9d[_0x4d0c('0x2a')]){delete _0x1e3c9d[_0x4d0c('0x2a')];}_0x488b49['status'](_0x40257c)[_0x4d0c('0x2b')](_0x1e3c9d);};}exports[_0x4d0c('0x2c')]=function(_0x3f84db,_0x51b3b9){var _0x10dff8={},_0x4a0b22={},_0x488632={'count':0x0,'rows':[]};var _0x22de60=_[_0x4d0c('0x2d')](db[_0x4d0c('0x2e')][_0x4d0c('0x2f')],function(_0x1ec0f2){return{'name':_0x1ec0f2['fieldName'],'type':_0x1ec0f2['type'][_0x4d0c('0x30')]};});_0x4a0b22[_0x4d0c('0x31')]=_[_0x4d0c('0x2d')](_0x22de60,_0x4d0c('0x2a'));_0x4a0b22[_0x4d0c('0x32')]=_[_0x4d0c('0x33')](_0x3f84db[_0x4d0c('0x32')]);_0x4a0b22[_0x4d0c('0x34')]=_[_0x4d0c('0x35')](_0x4a0b22[_0x4d0c('0x31')],_0x4a0b22[_0x4d0c('0x32')]);_0x10dff8[_0x4d0c('0x36')]=_[_0x4d0c('0x35')](_0x4a0b22[_0x4d0c('0x31')],qs[_0x4d0c('0x37')](_0x3f84db['query']['fields']));_0x10dff8['attributes']=_0x10dff8['attributes'][_0x4d0c('0x38')]?_0x10dff8[_0x4d0c('0x36')]:_0x4a0b22[_0x4d0c('0x31')];if(!_0x3f84db['query']['hasOwnProperty'](_0x4d0c('0x39'))){_0x10dff8[_0x4d0c('0x1f')]=qs['limit'](_0x3f84db[_0x4d0c('0x32')]['limit']);_0x10dff8[_0x4d0c('0x1d')]=qs[_0x4d0c('0x1d')](_0x3f84db['query']['offset']);}_0x10dff8[_0x4d0c('0x3a')]=qs[_0x4d0c('0x3b')](_0x3f84db[_0x4d0c('0x32')][_0x4d0c('0x3b')]);_0x10dff8[_0x4d0c('0x3c')]=qs[_0x4d0c('0x34')](_[_0x4d0c('0x3d')](_0x3f84db['query'],_0x4a0b22[_0x4d0c('0x34')]),_0x22de60);if(_0x3f84db['query'][_0x4d0c('0x3e')]){_0x10dff8[_0x4d0c('0x3c')]=_[_0x4d0c('0x3f')](_0x10dff8[_0x4d0c('0x3c')],{'$or':[{'key':{'$like':'%'+_0x3f84db[_0x4d0c('0x32')][_0x4d0c('0x3e')]+'%'}},{'value':{'$like':'%'+_0x3f84db[_0x4d0c('0x32')][_0x4d0c('0x3e')]+'%'}}]});}_0x10dff8=_[_0x4d0c('0x3f')]({},_0x10dff8,_0x3f84db[_0x4d0c('0x40')]);var _0x452519={'where':_0x10dff8[_0x4d0c('0x3c')]};return db['CannedAnswer'][_0x4d0c('0x20')](_0x452519)[_0x4d0c('0x25')](function(_0x3ed847){_0x488632[_0x4d0c('0x20')]=_0x3ed847;if(_0x3f84db['query'][_0x4d0c('0x41')]){_0x10dff8[_0x4d0c('0x42')]=[{'all':!![]}];}return db['CannedAnswer'][_0x4d0c('0x43')](_0x10dff8);})[_0x4d0c('0x25')](function(_0x3f9fd6){_0x488632['rows']=_0x3f9fd6;return _0x488632;})[_0x4d0c('0x25')](respondWithFilteredResult(_0x51b3b9,_0x10dff8))[_0x4d0c('0x44')](handleError(_0x51b3b9,null));};exports[_0x4d0c('0x45')]=function(_0x433394,_0x538811){var _0x3ce858={'raw':!![],'where':{'id':_0x433394[_0x4d0c('0x46')]['id']}},_0x471ddc={};_0x471ddc[_0x4d0c('0x31')]=_[_0x4d0c('0x33')](db[_0x4d0c('0x2e')]['rawAttributes']);_0x471ddc['query']=_[_0x4d0c('0x33')](_0x433394[_0x4d0c('0x32')]);_0x471ddc['filters']=_[_0x4d0c('0x35')](_0x471ddc['model'],_0x471ddc['query']);_0x3ce858[_0x4d0c('0x36')]=_['intersection'](_0x471ddc[_0x4d0c('0x31')],qs[_0x4d0c('0x37')](_0x433394[_0x4d0c('0x32')][_0x4d0c('0x37')]));_0x3ce858[_0x4d0c('0x36')]=_0x3ce858[_0x4d0c('0x36')][_0x4d0c('0x38')]?_0x3ce858[_0x4d0c('0x36')]:_0x471ddc['model'];if(_0x433394[_0x4d0c('0x32')]['includeAll']){_0x3ce858[_0x4d0c('0x42')]=[{'all':!![]}];}_0x3ce858=_[_0x4d0c('0x3f')]({},_0x3ce858,_0x433394[_0x4d0c('0x40')]);return db[_0x4d0c('0x2e')][_0x4d0c('0x47')](_0x3ce858)[_0x4d0c('0x25')](handleEntityNotFound(_0x538811,null))[_0x4d0c('0x25')](respondWithResult(_0x538811,null))[_0x4d0c('0x44')](handleError(_0x538811,null));};exports['update']=function(_0x47481a,_0x672106){if(_0x47481a['body']['id']){delete _0x47481a[_0x4d0c('0x48')]['id'];}return db[_0x4d0c('0x2e')][_0x4d0c('0x47')]({'where':{'id':_0x47481a[_0x4d0c('0x46')]['id']}})[_0x4d0c('0x25')](handleEntityNotFound(_0x672106,null))['then'](saveUpdates(_0x47481a['body'],null))[_0x4d0c('0x25')](respondWithResult(_0x672106,null))[_0x4d0c('0x44')](handleError(_0x672106,null));};exports[_0x4d0c('0x28')]=function(_0x589942,_0x3cb6fa){return db[_0x4d0c('0x2e')][_0x4d0c('0x47')]({'where':{'id':_0x589942[_0x4d0c('0x46')]['id']}})[_0x4d0c('0x25')](handleEntityNotFound(_0x3cb6fa,null))[_0x4d0c('0x25')](removeEntity(_0x3cb6fa,null))[_0x4d0c('0x44')](handleError(_0x3cb6fa,null));};exports[_0x4d0c('0x49')]=function(_0x43e5da,_0x597996){var _0x2830a3={'key':_0x43e5da[_0x4d0c('0x48')][_0x4d0c('0x30')]};if(_0x43e5da['body']['MailAccountId']){_0x2830a3[_0x4d0c('0x4a')]=_0x43e5da[_0x4d0c('0x48')]['MailAccountId'];}else if(_0x43e5da['body']['SmsAccountId']){_0x2830a3['SmsAccountId']=_0x43e5da[_0x4d0c('0x48')][_0x4d0c('0x4b')];}else if(_0x43e5da[_0x4d0c('0x48')][_0x4d0c('0x4c')]){_0x2830a3[_0x4d0c('0x4c')]=_0x43e5da[_0x4d0c('0x48')]['OpenchannelAccountId'];}else if(_0x43e5da[_0x4d0c('0x48')]['ChatWebsiteId']){_0x2830a3[_0x4d0c('0x4d')]=_0x43e5da[_0x4d0c('0x48')][_0x4d0c('0x4d')];}return db[_0x4d0c('0x2e')]['find']({'where':_0x2830a3})[_0x4d0c('0x25')](function(_0xcdf751){if(_0xcdf751){throw new db[(_0x4d0c('0x4e'))][(_0x4d0c('0x4f'))](_0x4d0c('0x50'));}return db[_0x4d0c('0x2e')][_0x4d0c('0x49')](_0x43e5da[_0x4d0c('0x48')]);})[_0x4d0c('0x25')](function(_0x133a92){var _0x1161b7=_0x43e5da[_0x4d0c('0x51')][_0x4d0c('0x26')]({'plain':!![]});if(!_0x1161b7)throw new Error(_0x4d0c('0x52'));if(_0x1161b7['role']===_0x4d0c('0x51')){var _0x33240c=_0x133a92[_0x4d0c('0x26')]({'plain':!![]});return db['UserProfileSection'][_0x4d0c('0x47')]({'where':{'name':'CannedAnswers','userProfileId':_0x1161b7['userProfileId']},'raw':!![]})['then'](function(_0x22fb1d){if(_0x22fb1d&&_0x22fb1d[_0x4d0c('0x53')]===0x0){return db[_0x4d0c('0x27')][_0x4d0c('0x49')]({'name':_0x33240c[_0x4d0c('0x2a')],'resourceId':_0x33240c['id'],'type':_0x22fb1d[_0x4d0c('0x2a')],'sectionId':_0x22fb1d['id']},{})[_0x4d0c('0x25')](function(){return _0x133a92;});}else{return _0x133a92;}})[_0x4d0c('0x44')](function(_0x2ec6f4){logger[_0x4d0c('0x29')](_0x4d0c('0x54'),_0x2ec6f4);throw _0x2ec6f4;});}return _0x133a92;})[_0x4d0c('0x25')](respondWithResult(_0x597996,0xc9))['catch'](handleError(_0x597996,null));};
\ No newline at end of file
index bcbecb2..b26c348 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb78f=['path','rimraf','../../config/environment','./cannedAnswer.attributes','exports','CannedAnswer','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','moment','request-promise'];(function(_0x1e822d,_0x59a706){var _0x4d85b8=function(_0x1a1b64){while(--_0x1a1b64){_0x1e822d['push'](_0x1e822d['shift']());}};_0x4d85b8(++_0x59a706);}(_0xb78f,0x128));var _0xfb78=function(_0x25f1ef,_0x7a9334){_0x25f1ef=_0x25f1ef-0x0;var _0x548661=_0xb78f[_0x25f1ef];return _0x548661;};'use strict';var _=require(_0xfb78('0x0'));var util=require('util');var logger=require(_0xfb78('0x1'))('api');var moment=require(_0xfb78('0x2'));var BPromise=require('bluebird');var rp=require(_0xfb78('0x3'));var fs=require('fs');var path=require(_0xfb78('0x4'));var rimraf=require(_0xfb78('0x5'));var config=require(_0xfb78('0x6'));var attributes=require(_0xfb78('0x7'));module[_0xfb78('0x8')]=function(_0x1d7c51,_0x4409d0){return _0x1d7c51['define'](_0xfb78('0x9'),attributes,{'tableName':'tools_canned_answers','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xfb78('0xa'),'collate':_0xfb78('0xb')});};
\ No newline at end of file
+var _0x9931=['define','CannedAnswer','tools_canned_answers','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise','path','./cannedAnswer.attributes'];(function(_0x1b026e,_0x1a7ec0){var _0x5bb7d8=function(_0x3207e4){while(--_0x3207e4){_0x1b026e['push'](_0x1b026e['shift']());}};_0x5bb7d8(++_0x1a7ec0);}(_0x9931,0x116));var _0x1993=function(_0x37b6bb,_0x47d128){_0x37b6bb=_0x37b6bb-0x0;var _0x7fc3b7=_0x9931[_0x37b6bb];return _0x7fc3b7;};'use strict';var _=require('lodash');var util=require(_0x1993('0x0'));var logger=require(_0x1993('0x1'))(_0x1993('0x2'));var moment=require(_0x1993('0x3'));var BPromise=require(_0x1993('0x4'));var rp=require(_0x1993('0x5'));var fs=require('fs');var path=require(_0x1993('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x1993('0x7'));module['exports']=function(_0x5940ce,_0x432da3){return _0x5940ce[_0x1993('0x8')](_0x1993('0x9'),attributes,{'tableName':_0x1993('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x1993('0xb'),'collate':_0x1993('0xc')});};
\ No newline at end of file
index e2b9de7..3ea22e9 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(_0x1f907c,_0x1a4eca){var _0x2f6001=function(_0x489c7e){while(--_0x489c7e){_0x1f907c['push'](_0x1f907c['shift']());}};_0x2f6001(++_0x1a4eca);}(_0xa9e0,0x123));var _0x0a9e=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0xa9e0[_0x45e98e];return _0x374dba;};'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(_0x2cb678,_0x1e099a){var _0x9116bf=function(_0x3ff8c5){while(--_0x3ff8c5){_0x2cb678['push'](_0x2cb678['shift']());}};_0x9116bf(++_0x1e099a);}(_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 688cb92..2a21f49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1aa0=['exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cannedAnswer.controller','isAuthenticated','index','get','/:id','post','put','update','delete'];(function(_0x456fb1,_0x859a1d){var _0x4083d6=function(_0xe1d0f2){while(--_0xe1d0f2){_0x456fb1['push'](_0x456fb1['shift']());}};_0x4083d6(++_0x859a1d);}(_0x1aa0,0x17b));var _0x01aa=function(_0x1ebd10,_0x4914b4){_0x1ebd10=_0x1ebd10-0x0;var _0x1004d3=_0x1aa0[_0x1ebd10];return _0x1004d3;};'use strict';var multer=require(_0x01aa('0x0'));var util=require('util');var path=require(_0x01aa('0x1'));var timeout=require(_0x01aa('0x2'));var express=require('express');var router=express[_0x01aa('0x3')]();var fs_extra=require(_0x01aa('0x4'));var auth=require(_0x01aa('0x5'));var interaction=require(_0x01aa('0x6'));var config=require(_0x01aa('0x7'));var controller=require(_0x01aa('0x8'));router['get']('/',auth[_0x01aa('0x9')](),controller[_0x01aa('0xa')]);router[_0x01aa('0xb')](_0x01aa('0xc'),auth[_0x01aa('0x9')](),controller['show']);router[_0x01aa('0xd')]('/',auth[_0x01aa('0x9')](),controller['create']);router[_0x01aa('0xe')](_0x01aa('0xc'),auth['isAuthenticated'](),controller[_0x01aa('0xf')]);router[_0x01aa('0x10')](_0x01aa('0xc'),auth[_0x01aa('0x9')](),controller['destroy']);module[_0x01aa('0x11')]=router;
\ No newline at end of file
+var _0x8dc7=['get','index','isAuthenticated','show','post','put','delete','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../config/environment','./cannedAnswer.controller'];(function(_0x50619a,_0x325b23){var _0x1364cc=function(_0x500412){while(--_0x500412){_0x50619a['push'](_0x50619a['shift']());}};_0x1364cc(++_0x325b23);}(_0x8dc7,0x1e9));var _0x78dc=function(_0x21d4a6,_0x52293a){_0x21d4a6=_0x21d4a6-0x0;var _0x2826d8=_0x8dc7[_0x21d4a6];return _0x2826d8;};'use strict';var multer=require(_0x78dc('0x0'));var util=require('util');var path=require(_0x78dc('0x1'));var timeout=require(_0x78dc('0x2'));var express=require('express');var router=express[_0x78dc('0x3')]();var fs_extra=require(_0x78dc('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x78dc('0x5'));var controller=require(_0x78dc('0x6'));router[_0x78dc('0x7')]('/',auth['isAuthenticated'](),controller[_0x78dc('0x8')]);router['get']('/:id',auth[_0x78dc('0x9')](),controller[_0x78dc('0xa')]);router[_0x78dc('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x78dc('0xc')]('/:id',auth[_0x78dc('0x9')](),controller['update']);router[_0x78dc('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x78dc('0xe')]);module[_0x78dc('0xf')]=router;
\ No newline at end of file
index ac827a5..e398015 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8cd=['STRING','INTEGER','DATE','1970-01-01\x2000:00:01'];(function(_0x21a361,_0x364fdd){var _0xc220a5=function(_0x2adac6){while(--_0x2adac6){_0x21a361['push'](_0x21a361['shift']());}};_0xc220a5(++_0x364fdd);}(_0xe8cd,0x152));var _0xde8c=function(_0xacb1e2,_0x55e0ab){_0xacb1e2=_0xacb1e2-0x0;var _0x463815=_0xe8cd[_0xacb1e2];return _0x463815;};'use strict';var Sequelize=require('sequelize');module['exports']={'calldate':{'type':Sequelize[_0xde8c('0x0')],'allowNull':![],'defaultValue':_0xde8c('0x1')},'clid':{'type':Sequelize['STRING']},'src':{'type':Sequelize[_0xde8c('0x2')]},'dst':{'type':Sequelize['STRING']},'dcontext':{'type':Sequelize[_0xde8c('0x2')]},'channel':{'type':Sequelize[_0xde8c('0x2')]},'dstchannel':{'type':Sequelize['STRING']},'lastapp':{'type':Sequelize['STRING']},'lastdata':{'type':Sequelize['STRING']},'duration':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0xde8c('0x3')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize[_0xde8c('0x3')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize['STRING']},'userfield':{'type':Sequelize[_0xde8c('0x2')]},'uniqueid':{'type':Sequelize[_0xde8c('0x2')]},'linkedid':{'type':Sequelize[_0xde8c('0x2')]},'sequence':{'type':Sequelize[_0xde8c('0x2')]},'peeraccount':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xde8c('0x2')]},'tag':{'type':Sequelize[_0xde8c('0x2')]}};
\ No newline at end of file
+var _0x804e=['sequelize','exports','1970-01-01\x2000:00:01','STRING','INTEGER'];(function(_0x588006,_0x4ba6c1){var _0x552598=function(_0x2e2115){while(--_0x2e2115){_0x588006['push'](_0x588006['shift']());}};_0x552598(++_0x4ba6c1);}(_0x804e,0x6e));var _0xe804=function(_0x5b28a6,_0x3d3210){_0x5b28a6=_0x5b28a6-0x0;var _0x22fd9b=_0x804e[_0x5b28a6];return _0x22fd9b;};'use strict';var Sequelize=require(_0xe804('0x0'));module[_0xe804('0x1')]={'calldate':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':_0xe804('0x2')},'clid':{'type':Sequelize[_0xe804('0x3')]},'src':{'type':Sequelize['STRING']},'dst':{'type':Sequelize['STRING']},'dcontext':{'type':Sequelize[_0xe804('0x3')]},'channel':{'type':Sequelize[_0xe804('0x3')]},'dstchannel':{'type':Sequelize[_0xe804('0x3')]},'lastapp':{'type':Sequelize[_0xe804('0x3')]},'lastdata':{'type':Sequelize[_0xe804('0x3')]},'duration':{'type':Sequelize[_0xe804('0x4')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0xe804('0x4')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xe804('0x3')]},'amaflags':{'type':Sequelize[_0xe804('0x4')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0xe804('0x3')]},'userfield':{'type':Sequelize[_0xe804('0x3')]},'uniqueid':{'type':Sequelize[_0xe804('0x3')]},'linkedid':{'type':Sequelize['STRING']},'sequence':{'type':Sequelize['STRING']},'peeraccount':{'type':Sequelize[_0xe804('0x3')]},'type':{'type':Sequelize[_0xe804('0x3')]},'tag':{'type':Sequelize[_0xe804('0x3')]}};
\ No newline at end of file
index 6abab5f..50c34ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x236d=['undefined','limit','count','set','apply','save','update','then','error','stack','name','send','index','map','Cdr','rawAttributes','fieldName','type','key','model','keys','filters','intersection','attributes','fields','query','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','find','create','body','catch','destroy','params','describe','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset'];(function(_0x2dbf6d,_0x1ed975){var _0x269475=function(_0x217213){while(--_0x217213){_0x2dbf6d['push'](_0x2dbf6d['shift']());}};_0x269475(++_0x1ed975);}(_0x236d,0x7e));var _0xd236=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x236d[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0xd236('0x0'));var rimraf=require(_0xd236('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd236('0x2'));var rp=require('request-promise');var moment=require(_0xd236('0x3'));var BPromise=require(_0xd236('0x4'));var Mustache=require(_0xd236('0x5'));var util=require(_0xd236('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xd236('0x7'));var ejs=require(_0xd236('0x8'));var fs=require('fs');var fs_extra=require(_0xd236('0x9'));var _=require(_0xd236('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xd236('0xb'));var deskjs=require(_0xd236('0xc'));var toCsv=require('to-csv');var querystring=require(_0xd236('0xd'));var Papa=require(_0xd236('0xe'));var Redis=require('ioredis');var authService=require(_0xd236('0xf'));var qs=require(_0xd236('0x10'));var as=require(_0xd236('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd236('0x12'))(_0xd236('0x13'));var utils=require(_0xd236('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xd236('0x15'));var db=require(_0xd236('0x16'))['db'];function respondWithStatusCode(_0x3d1076,_0x160cb1){_0x160cb1=_0x160cb1||0xcc;return function(_0x21f27b){if(_0x21f27b){return _0x3d1076[_0xd236('0x17')](_0x160cb1);}return _0x3d1076[_0xd236('0x18')](_0x160cb1)[_0xd236('0x19')]();};}function respondWithResult(_0x22435c,_0x3d7465){_0x3d7465=_0x3d7465||0xc8;return function(_0x348734){if(_0x348734){return _0x22435c[_0xd236('0x18')](_0x3d7465)[_0xd236('0x1a')](_0x348734);}};}function respondWithFilteredResult(_0x3b60a7,_0xd851b5){return function(_0x3b2535){if(_0x3b2535){var _0x2a076d=typeof _0xd851b5[_0xd236('0x1b')]===_0xd236('0x1c')&&typeof _0xd851b5[_0xd236('0x1d')]==='undefined';var _0x4f06c6=_0x3b2535[_0xd236('0x1e')];var _0x1b02a5=_0x2a076d?0x0:_0xd851b5['offset'];var _0x11c6ec=_0x2a076d?_0x3b2535[_0xd236('0x1e')]:_0xd851b5[_0xd236('0x1b')]+_0xd851b5['limit'];var _0x355b65;if(_0x11c6ec>=_0x4f06c6){_0x11c6ec=_0x4f06c6;_0x355b65=0xc8;}else{_0x355b65=0xce;}_0x3b60a7[_0xd236('0x18')](_0x355b65);return _0x3b60a7[_0xd236('0x1f')]('Content-Range',_0x1b02a5+'-'+_0x11c6ec+'/'+_0x4f06c6)[_0xd236('0x1a')](_0x3b2535);}return null;};}function patchUpdates(_0x3b0a27){return function(_0x26c758){try{jsonpatch[_0xd236('0x20')](_0x26c758,_0x3b0a27,!![]);}catch(_0x2f512d){return BPromise['reject'](_0x2f512d);}return _0x26c758[_0xd236('0x21')]();};}function saveUpdates(_0x30e7aa,_0x1e4ddb){return function(_0x3d1e4e){if(_0x3d1e4e){return _0x3d1e4e[_0xd236('0x22')](_0x30e7aa)['then'](function(_0x4a35d0){return _0x4a35d0;});}return null;};}function removeEntity(_0x257f27,_0x4be5ac){return function(_0x22924d){if(_0x22924d){return _0x22924d['destroy']()[_0xd236('0x23')](function(){_0x257f27[_0xd236('0x18')](0xcc)[_0xd236('0x19')]();});}};}function handleEntityNotFound(_0x49d822,_0x41049a){return function(_0x339b08){if(!_0x339b08){_0x49d822[_0xd236('0x17')](0x194);}return _0x339b08;};}function handleError(_0x13ba7a,_0x3a30d8){_0x3a30d8=_0x3a30d8||0x1f4;return function(_0x17f927){logger[_0xd236('0x24')](_0x17f927[_0xd236('0x25')]);if(_0x17f927[_0xd236('0x26')]){delete _0x17f927[_0xd236('0x26')];}_0x13ba7a[_0xd236('0x18')](_0x3a30d8)[_0xd236('0x27')](_0x17f927);};}exports[_0xd236('0x28')]=function(_0x23714d,_0x3108f4){var _0x28175d={},_0x436a19={},_0x471ed6={'count':0x0,'rows':[]};var _0x463fc8=_[_0xd236('0x29')](db[_0xd236('0x2a')][_0xd236('0x2b')],function(_0x3c1617){return{'name':_0x3c1617[_0xd236('0x2c')],'type':_0x3c1617[_0xd236('0x2d')][_0xd236('0x2e')]};});_0x436a19[_0xd236('0x2f')]=_[_0xd236('0x29')](_0x463fc8,_0xd236('0x26'));_0x436a19['query']=_[_0xd236('0x30')](_0x23714d['query']);_0x436a19[_0xd236('0x31')]=_[_0xd236('0x32')](_0x436a19[_0xd236('0x2f')],_0x436a19['query']);_0x28175d[_0xd236('0x33')]=_[_0xd236('0x32')](_0x436a19[_0xd236('0x2f')],qs[_0xd236('0x34')](_0x23714d[_0xd236('0x35')][_0xd236('0x34')]));_0x28175d[_0xd236('0x33')]=_0x28175d['attributes'][_0xd236('0x36')]?_0x28175d['attributes']:_0x436a19[_0xd236('0x2f')];if(!_0x23714d['query'][_0xd236('0x37')](_0xd236('0x38'))){_0x28175d[_0xd236('0x1d')]=qs[_0xd236('0x1d')](_0x23714d[_0xd236('0x35')][_0xd236('0x1d')]);_0x28175d[_0xd236('0x1b')]=qs[_0xd236('0x1b')](_0x23714d[_0xd236('0x35')][_0xd236('0x1b')]);}_0x28175d[_0xd236('0x39')]=qs[_0xd236('0x3a')](_0x23714d[_0xd236('0x35')]['sort']);_0x28175d[_0xd236('0x3b')]=qs[_0xd236('0x31')](_[_0xd236('0x3c')](_0x23714d['query'],_0x436a19[_0xd236('0x31')]),_0x463fc8);if(_0x23714d[_0xd236('0x35')][_0xd236('0x3d')]){_0x28175d[_0xd236('0x3b')]=_[_0xd236('0x3e')](_0x28175d[_0xd236('0x3b')],{'$or':_['map'](_0x463fc8,function(_0x696bed){if(_0x696bed[_0xd236('0x2d')]!==_0xd236('0x3f')){var _0x3c798f={};_0x3c798f[_0x696bed[_0xd236('0x26')]]={'$like':'%'+_0x23714d[_0xd236('0x35')]['filter']+'%'};return _0x3c798f;}})});}_0x28175d=_[_0xd236('0x3e')]({},_0x28175d,_0x23714d[_0xd236('0x40')]);var _0x2ba3ae={'where':_0x28175d['where']};return db[_0xd236('0x2a')]['count'](_0x2ba3ae)[_0xd236('0x23')](function(_0x5793bf){_0x471ed6['count']=_0x5793bf;if(_0x23714d[_0xd236('0x35')][_0xd236('0x41')]){_0x28175d[_0xd236('0x42')]=[{'all':!![]}];}return db[_0xd236('0x2a')][_0xd236('0x43')](_0x28175d);})['then'](function(_0x4d0d65){_0x471ed6[_0xd236('0x44')]=_0x4d0d65;return _0x471ed6;})[_0xd236('0x23')](respondWithFilteredResult(_0x3108f4,_0x28175d))['catch'](handleError(_0x3108f4,null));};exports[_0xd236('0x45')]=function(_0x342fd5,_0x2d815b){var _0x55007d={'raw':!![],'where':{'id':_0x342fd5['params']['id']}},_0x58a93a={};_0x58a93a[_0xd236('0x2f')]=_['keys'](db['Cdr'][_0xd236('0x2b')]);_0x58a93a[_0xd236('0x35')]=_[_0xd236('0x30')](_0x342fd5[_0xd236('0x35')]);_0x58a93a[_0xd236('0x31')]=_['intersection'](_0x58a93a['model'],_0x58a93a[_0xd236('0x35')]);_0x55007d[_0xd236('0x33')]=_[_0xd236('0x32')](_0x58a93a[_0xd236('0x2f')],qs[_0xd236('0x34')](_0x342fd5[_0xd236('0x35')]['fields']));_0x55007d[_0xd236('0x33')]=_0x55007d['attributes'][_0xd236('0x36')]?_0x55007d[_0xd236('0x33')]:_0x58a93a['model'];if(_0x342fd5['query']['includeAll']){_0x55007d['include']=[{'all':!![]}];}_0x55007d=_[_0xd236('0x3e')]({},_0x55007d,_0x342fd5[_0xd236('0x40')]);return db[_0xd236('0x2a')][_0xd236('0x46')](_0x55007d)[_0xd236('0x23')](handleEntityNotFound(_0x2d815b,null))['then'](respondWithResult(_0x2d815b,null))['catch'](handleError(_0x2d815b,null));};exports[_0xd236('0x47')]=function(_0x7c0650,_0xbf4ba9){return db[_0xd236('0x2a')][_0xd236('0x47')](_0x7c0650[_0xd236('0x48')],{})['then'](respondWithResult(_0xbf4ba9,0xc9))[_0xd236('0x49')](handleError(_0xbf4ba9,null));};exports['update']=function(_0x223a14,_0x2c8861){if(_0x223a14['body']['id']){delete _0x223a14[_0xd236('0x48')]['id'];}return db[_0xd236('0x2a')]['find']({'where':{'id':_0x223a14['params']['id']}})[_0xd236('0x23')](handleEntityNotFound(_0x2c8861,null))[_0xd236('0x23')](saveUpdates(_0x223a14[_0xd236('0x48')],null))[_0xd236('0x23')](respondWithResult(_0x2c8861,null))['catch'](handleError(_0x2c8861,null));};exports[_0xd236('0x4a')]=function(_0x43c12b,_0x3d8ca6){return db[_0xd236('0x2a')][_0xd236('0x46')]({'where':{'id':_0x43c12b[_0xd236('0x4b')]['id']}})['then'](handleEntityNotFound(_0x3d8ca6,null))['then'](removeEntity(_0x3d8ca6,null))[_0xd236('0x49')](handleError(_0x3d8ca6,null));};exports['describe']=function(_0xa39da6,_0x30c336){return db['Cdr'][_0xd236('0x4c')]()[_0xd236('0x23')](respondWithResult(_0x30c336,null))['catch'](handleError(_0x30c336,null));};
\ No newline at end of file
+var _0x85d0=['ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','json','apply','reject','update','then','destroy','stack','name','send','index','Cdr','rawAttributes','fieldName','type','model','map','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','where','filter','VIRTUAL','merge','include','findAll','rows','catch','show','params','includeAll','options','find','create','body','describe','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x85d0,0x164));var _0x085d=function(_0x128104,_0x1667f1){_0x128104=_0x128104-0x0;var _0x5d5a74=_0x85d0[_0x128104];return _0x5d5a74;};'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(_0x085d('0x0'));var moment=require(_0x085d('0x1'));var BPromise=require(_0x085d('0x2'));var Mustache=require(_0x085d('0x3'));var util=require(_0x085d('0x4'));var path=require(_0x085d('0x5'));var sox=require('sox');var csv=require(_0x085d('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x085d('0x7'));var _=require(_0x085d('0x8'));var squel=require(_0x085d('0x9'));var crypto=require('crypto');var jsforce=require(_0x085d('0xa'));var deskjs=require(_0x085d('0xb'));var toCsv=require(_0x085d('0x6'));var querystring=require(_0x085d('0xc'));var Papa=require(_0x085d('0xd'));var Redis=require(_0x085d('0xe'));var authService=require(_0x085d('0xf'));var qs=require(_0x085d('0x10'));var as=require(_0x085d('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x085d('0x12'))(_0x085d('0x13'));var utils=require(_0x085d('0x14'));var config=require(_0x085d('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x085d('0x16'))['db'];function respondWithStatusCode(_0x2bd6ae,_0x5c6c27){_0x5c6c27=_0x5c6c27||0xcc;return function(_0x2e0714){if(_0x2e0714){return _0x2bd6ae[_0x085d('0x17')](_0x5c6c27);}return _0x2bd6ae[_0x085d('0x18')](_0x5c6c27)[_0x085d('0x19')]();};}function respondWithResult(_0x5a5252,_0x4b87b9){_0x4b87b9=_0x4b87b9||0xc8;return function(_0x19ce18){if(_0x19ce18){return _0x5a5252['status'](_0x4b87b9)['json'](_0x19ce18);}};}function respondWithFilteredResult(_0x267374,_0x334263){return function(_0x1d041b){if(_0x1d041b){var _0x5f8e18=typeof _0x334263[_0x085d('0x1a')]==='undefined'&&typeof _0x334263[_0x085d('0x1b')]===_0x085d('0x1c');var _0x1efea9=_0x1d041b[_0x085d('0x1d')];var _0x3e566f=_0x5f8e18?0x0:_0x334263[_0x085d('0x1a')];var _0x5c046e=_0x5f8e18?_0x1d041b[_0x085d('0x1d')]:_0x334263[_0x085d('0x1a')]+_0x334263['limit'];var _0xba531c;if(_0x5c046e>=_0x1efea9){_0x5c046e=_0x1efea9;_0xba531c=0xc8;}else{_0xba531c=0xce;}_0x267374[_0x085d('0x18')](_0xba531c);return _0x267374[_0x085d('0x1e')](_0x085d('0x1f'),_0x3e566f+'-'+_0x5c046e+'/'+_0x1efea9)[_0x085d('0x20')](_0x1d041b);}return null;};}function patchUpdates(_0x54eff1){return function(_0xb9d0ad){try{jsonpatch[_0x085d('0x21')](_0xb9d0ad,_0x54eff1,!![]);}catch(_0x39a85e){return BPromise[_0x085d('0x22')](_0x39a85e);}return _0xb9d0ad['save']();};}function saveUpdates(_0x5b3f9c,_0x4cdb11){return function(_0x2b7cdc){if(_0x2b7cdc){return _0x2b7cdc[_0x085d('0x23')](_0x5b3f9c)[_0x085d('0x24')](function(_0x10aa9d){return _0x10aa9d;});}return null;};}function removeEntity(_0x4715d6,_0x17dafb){return function(_0x576d95){if(_0x576d95){return _0x576d95[_0x085d('0x25')]()[_0x085d('0x24')](function(){_0x4715d6[_0x085d('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x38cddc,_0x290658){return function(_0xbacfbc){if(!_0xbacfbc){_0x38cddc[_0x085d('0x17')](0x194);}return _0xbacfbc;};}function handleError(_0x300295,_0x4b9032){_0x4b9032=_0x4b9032||0x1f4;return function(_0x5e5228){logger['error'](_0x5e5228[_0x085d('0x26')]);if(_0x5e5228[_0x085d('0x27')]){delete _0x5e5228[_0x085d('0x27')];}_0x300295['status'](_0x4b9032)[_0x085d('0x28')](_0x5e5228);};}exports[_0x085d('0x29')]=function(_0x3faf6b,_0x5c7849){var _0x2f670c={},_0x2eae2c={},_0x3f905d={'count':0x0,'rows':[]};var _0x26aa90=_['map'](db[_0x085d('0x2a')][_0x085d('0x2b')],function(_0x494070){return{'name':_0x494070[_0x085d('0x2c')],'type':_0x494070[_0x085d('0x2d')]['key']};});_0x2eae2c[_0x085d('0x2e')]=_[_0x085d('0x2f')](_0x26aa90,_0x085d('0x27'));_0x2eae2c['query']=_[_0x085d('0x30')](_0x3faf6b[_0x085d('0x31')]);_0x2eae2c[_0x085d('0x32')]=_['intersection'](_0x2eae2c[_0x085d('0x2e')],_0x2eae2c['query']);_0x2f670c[_0x085d('0x33')]=_[_0x085d('0x34')](_0x2eae2c[_0x085d('0x2e')],qs[_0x085d('0x35')](_0x3faf6b['query'][_0x085d('0x35')]));_0x2f670c[_0x085d('0x33')]=_0x2f670c[_0x085d('0x33')][_0x085d('0x36')]?_0x2f670c['attributes']:_0x2eae2c['model'];if(!_0x3faf6b[_0x085d('0x31')][_0x085d('0x37')](_0x085d('0x38'))){_0x2f670c[_0x085d('0x1b')]=qs[_0x085d('0x1b')](_0x3faf6b[_0x085d('0x31')][_0x085d('0x1b')]);_0x2f670c[_0x085d('0x1a')]=qs[_0x085d('0x1a')](_0x3faf6b['query'][_0x085d('0x1a')]);}_0x2f670c[_0x085d('0x39')]=qs['sort'](_0x3faf6b[_0x085d('0x31')]['sort']);_0x2f670c[_0x085d('0x3a')]=qs[_0x085d('0x32')](_['pick'](_0x3faf6b[_0x085d('0x31')],_0x2eae2c[_0x085d('0x32')]),_0x26aa90);if(_0x3faf6b[_0x085d('0x31')][_0x085d('0x3b')]){_0x2f670c[_0x085d('0x3a')]=_['merge'](_0x2f670c[_0x085d('0x3a')],{'$or':_['map'](_0x26aa90,function(_0x5d52be){if(_0x5d52be[_0x085d('0x2d')]!==_0x085d('0x3c')){var _0x31ee22={};_0x31ee22[_0x5d52be[_0x085d('0x27')]]={'$like':'%'+_0x3faf6b[_0x085d('0x31')]['filter']+'%'};return _0x31ee22;}})});}_0x2f670c=_[_0x085d('0x3d')]({},_0x2f670c,_0x3faf6b['options']);var _0x3a8646={'where':_0x2f670c[_0x085d('0x3a')]};return db[_0x085d('0x2a')]['count'](_0x3a8646)[_0x085d('0x24')](function(_0x55d81a){_0x3f905d[_0x085d('0x1d')]=_0x55d81a;if(_0x3faf6b[_0x085d('0x31')]['includeAll']){_0x2f670c[_0x085d('0x3e')]=[{'all':!![]}];}return db[_0x085d('0x2a')][_0x085d('0x3f')](_0x2f670c);})['then'](function(_0x56428e){_0x3f905d[_0x085d('0x40')]=_0x56428e;return _0x3f905d;})[_0x085d('0x24')](respondWithFilteredResult(_0x5c7849,_0x2f670c))[_0x085d('0x41')](handleError(_0x5c7849,null));};exports[_0x085d('0x42')]=function(_0x177f7d,_0x367a32){var _0x27e1c7={'raw':!![],'where':{'id':_0x177f7d[_0x085d('0x43')]['id']}},_0x120980={};_0x120980[_0x085d('0x2e')]=_['keys'](db['Cdr'][_0x085d('0x2b')]);_0x120980[_0x085d('0x31')]=_[_0x085d('0x30')](_0x177f7d[_0x085d('0x31')]);_0x120980[_0x085d('0x32')]=_[_0x085d('0x34')](_0x120980[_0x085d('0x2e')],_0x120980[_0x085d('0x31')]);_0x27e1c7[_0x085d('0x33')]=_[_0x085d('0x34')](_0x120980[_0x085d('0x2e')],qs['fields'](_0x177f7d[_0x085d('0x31')][_0x085d('0x35')]));_0x27e1c7[_0x085d('0x33')]=_0x27e1c7[_0x085d('0x33')][_0x085d('0x36')]?_0x27e1c7['attributes']:_0x120980[_0x085d('0x2e')];if(_0x177f7d['query'][_0x085d('0x44')]){_0x27e1c7['include']=[{'all':!![]}];}_0x27e1c7=_['merge']({},_0x27e1c7,_0x177f7d[_0x085d('0x45')]);return db[_0x085d('0x2a')][_0x085d('0x46')](_0x27e1c7)[_0x085d('0x24')](handleEntityNotFound(_0x367a32,null))[_0x085d('0x24')](respondWithResult(_0x367a32,null))['catch'](handleError(_0x367a32,null));};exports['create']=function(_0x547723,_0x580b91){return db['Cdr'][_0x085d('0x47')](_0x547723[_0x085d('0x48')],{})['then'](respondWithResult(_0x580b91,0xc9))[_0x085d('0x41')](handleError(_0x580b91,null));};exports['update']=function(_0x5df4cf,_0x415a4b){if(_0x5df4cf[_0x085d('0x48')]['id']){delete _0x5df4cf[_0x085d('0x48')]['id'];}return db[_0x085d('0x2a')]['find']({'where':{'id':_0x5df4cf[_0x085d('0x43')]['id']}})['then'](handleEntityNotFound(_0x415a4b,null))[_0x085d('0x24')](saveUpdates(_0x5df4cf[_0x085d('0x48')],null))['then'](respondWithResult(_0x415a4b,null))[_0x085d('0x41')](handleError(_0x415a4b,null));};exports[_0x085d('0x25')]=function(_0x298f6f,_0x37b56c){return db['Cdr'][_0x085d('0x46')]({'where':{'id':_0x298f6f['params']['id']}})[_0x085d('0x24')](handleEntityNotFound(_0x37b56c,null))['then'](removeEntity(_0x37b56c,null))['catch'](handleError(_0x37b56c,null));};exports[_0x085d('0x49')]=function(_0x41e3e0,_0x236368){return db[_0x085d('0x2a')][_0x085d('0x49')]()[_0x085d('0x24')](respondWithResult(_0x236368,null))[_0x085d('0x41')](handleError(_0x236368,null));};
\ No newline at end of file
index 76259b9..b47c4ef 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(_0x277ed4,_0x2b0a9e){var _0x280790=function(_0x34daf3){while(--_0x34daf3){_0x277ed4['push'](_0x277ed4['shift']());}};_0x280790(++_0x2b0a9e);}(_0x7a54,0x106));var _0x47a5=function(_0x4e4fe4,_0x5cf4da){_0x4e4fe4=_0x4e4fe4-0x0;var _0xb97609=_0x7a54[_0x4e4fe4];return _0xb97609;};'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(_0x281023,_0x360d57){var _0x30b440=function(_0x157342){while(--_0x157342){_0x281023['push'](_0x281023['shift']());}};_0x30b440(++_0x360d57);}(_0x7a54,0x106));var _0x47a5=function(_0x5705e9,_0x3c550c){_0x5705e9=_0x5705e9-0x0;var _0x1283c2=_0x7a54[_0x5705e9];return _0x1283c2;};'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 d7a9209..3db2c04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd90=['stringify','error','code','message','result','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','info','Cdr,\x20%s,\x20%s','request\x20sent','debug','Cdr,\x20%s,\x20%s,\x20%s'];(function(_0x164eca,_0x555e28){var _0x2ce562=function(_0x148ca6){while(--_0x148ca6){_0x164eca['push'](_0x164eca['shift']());}};_0x2ce562(++_0x555e28);}(_0xcd90,0xec));var _0x0cd9=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0xcd90[_0x2bf141];return _0x48277b;};'use strict';var _=require(_0x0cd9('0x0'));var util=require(_0x0cd9('0x1'));var moment=require(_0x0cd9('0x2'));var BPromise=require(_0x0cd9('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0cd9('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x0cd9('0x5'));var logger=require(_0x0cd9('0x6'))(_0x0cd9('0x7'));var config=require(_0x0cd9('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x0cd9('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1bc7b8,_0x219a52,_0xcf4ee5){return new BPromise(function(_0x8cb888,_0x387c29){return client[_0x0cd9('0xa')](_0x1bc7b8,_0xcf4ee5)['then'](function(_0x3cab5b){logger[_0x0cd9('0xb')](_0x0cd9('0xc'),_0x219a52,_0x0cd9('0xd'));logger[_0x0cd9('0xe')](_0x0cd9('0xf'),_0x219a52,_0x0cd9('0xd'),JSON[_0x0cd9('0x10')](_0x3cab5b));if(_0x3cab5b['error']){if(_0x3cab5b[_0x0cd9('0x11')][_0x0cd9('0x12')]===0x1f4){logger[_0x0cd9('0x11')]('Cdr,\x20%s,\x20%s',_0x219a52,_0x3cab5b['error']['message']);return _0x387c29(_0x3cab5b[_0x0cd9('0x11')]['message']);}logger[_0x0cd9('0x11')](_0x0cd9('0xc'),_0x219a52,_0x3cab5b[_0x0cd9('0x11')]['message']);return _0x8cb888(_0x3cab5b[_0x0cd9('0x11')][_0x0cd9('0x13')]);}else{logger[_0x0cd9('0xb')](_0x0cd9('0xc'),_0x219a52,_0x0cd9('0xd'));_0x8cb888(_0x3cab5b[_0x0cd9('0x14')][_0x0cd9('0x13')]);}})['catch'](function(_0x13a6de){logger[_0x0cd9('0x11')](_0x0cd9('0xc'),_0x219a52,_0x13a6de);_0x387c29(_0x13a6de);});});}
\ No newline at end of file
+var _0x4470=['result','catch','lodash','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','client','then','info','Cdr,\x20%s,\x20%s','debug','Cdr,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message'];(function(_0x58cbdc,_0x16bb11){var _0x5d6f3d=function(_0x539ea7){while(--_0x539ea7){_0x58cbdc['push'](_0x58cbdc['shift']());}};_0x5d6f3d(++_0x16bb11);}(_0x4470,0xda));var _0x0447=function(_0x146a97,_0x2d8483){_0x146a97=_0x146a97-0x0;var _0x259d5c=_0x4470[_0x146a97];return _0x259d5c;};'use strict';var _=require(_0x0447('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x0447('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0447('0x2'))['db'];var utils=require(_0x0447('0x3'));var logger=require('../../config/logger')(_0x0447('0x4'));var config=require(_0x0447('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x0447('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1eb763,_0x3b049f,_0xbbda8e){return new BPromise(function(_0x10e33d,_0x214e75){return client['request'](_0x1eb763,_0xbbda8e)[_0x0447('0x7')](function(_0xd7f8ac){logger[_0x0447('0x8')](_0x0447('0x9'),_0x3b049f,'request\x20sent');logger[_0x0447('0xa')](_0x0447('0xb'),_0x3b049f,_0x0447('0xc'),JSON['stringify'](_0xd7f8ac));if(_0xd7f8ac['error']){if(_0xd7f8ac[_0x0447('0xd')][_0x0447('0xe')]===0x1f4){logger[_0x0447('0xd')](_0x0447('0x9'),_0x3b049f,_0xd7f8ac[_0x0447('0xd')][_0x0447('0xf')]);return _0x214e75(_0xd7f8ac[_0x0447('0xd')]['message']);}logger[_0x0447('0xd')](_0x0447('0x9'),_0x3b049f,_0xd7f8ac[_0x0447('0xd')][_0x0447('0xf')]);return _0x10e33d(_0xd7f8ac[_0x0447('0xd')]['message']);}else{logger[_0x0447('0x8')]('Cdr,\x20%s,\x20%s',_0x3b049f,_0x0447('0xc'));_0x10e33d(_0xd7f8ac[_0x0447('0x10')]['message']);}})[_0x0447('0x11')](function(_0x93114a){logger['error'](_0x0447('0x9'),_0x3b049f,_0x93114a);_0x214e75(_0x93114a);});});}
\ No newline at end of file
index e0d44d3..a687bd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['destroy','exports','multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','describe','/:id','show','post','create','put','update'];(function(_0x434467,_0x2c6a75){var _0x5248ba=function(_0x5a3811){while(--_0x5a3811){_0x434467['push'](_0x434467['shift']());}};_0x5248ba(++_0x2c6a75);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./cdr.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
+var _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(_0x4a450a,_0x54d42f){var _0x28baf9=function(_0x5cb70a){while(--_0x5cb70a){_0x4a450a['push'](_0x4a450a['shift']());}};_0x28baf9(++_0x54d42f);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./cdr.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
index 6657d57..09dc367 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad98=['INTEGER','noop','STRING','sequelize'];(function(_0x4e0f9b,_0x1a7855){var _0x41d7fd=function(_0x431134){while(--_0x431134){_0x4e0f9b['push'](_0x4e0f9b['shift']());}};_0x41d7fd(++_0x1a7855);}(_0xad98,0x1df));var _0x8ad9=function(_0x245f64,_0x4ae342){_0x245f64=_0x245f64-0x0;var _0x3447e0=_0xad98[_0x245f64];return _0x3447e0;};'use strict';var Sequelize=require(_0x8ad9('0x0'));module['exports']={'priority':{'type':Sequelize[_0x8ad9('0x1')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x8ad9('0x2')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x8ad9('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x11df=['exports','STRING','noop','*,*,*,*','sequelize'];(function(_0x377844,_0x31eb42){var _0x58ac10=function(_0x2735a7){while(--_0x2735a7){_0x377844['push'](_0x377844['shift']());}};_0x58ac10(++_0x31eb42);}(_0x11df,0x1df));var _0xf11d=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0x11df[_0xc6be3a];return _0x56a310;};'use strict';var Sequelize=require(_0xf11d('0x0'));module[_0xf11d('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xf11d('0x2')],'allowNull':![],'defaultValue':_0xf11d('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0xf11d('0x2')]},'interval':{'type':Sequelize[_0xf11d('0x2')],'defaultValue':_0xf11d('0x4')}};
\ No newline at end of file
index 68fd296..8b97561 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67da=['end','sendStatus','error','name','send','show','params','model','keys','ChatApplication','rawAttributes','query','filters','intersection','attributes','fields','length','include','merge','options','find','catch','update','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x67da,0x192));var _0xa67d=function(_0x241fc2,_0xe233db){_0x241fc2=_0x241fc2-0x0;var _0x3b15d9=_0x67da[_0x241fc2];return _0x3b15d9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa67d('0x0'));var zipdir=require(_0xa67d('0x1'));var jsonpatch=require(_0xa67d('0x2'));var rp=require(_0xa67d('0x3'));var moment=require(_0xa67d('0x4'));var BPromise=require(_0xa67d('0x5'));var Mustache=require(_0xa67d('0x6'));var util=require(_0xa67d('0x7'));var path=require(_0xa67d('0x8'));var sox=require(_0xa67d('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa67d('0xa'));var _=require('lodash');var squel=require(_0xa67d('0xb'));var crypto=require(_0xa67d('0xc'));var jsforce=require(_0xa67d('0xd'));var deskjs=require(_0xa67d('0xe'));var toCsv=require(_0xa67d('0xf'));var querystring=require(_0xa67d('0x10'));var Papa=require(_0xa67d('0x11'));var Redis=require(_0xa67d('0x12'));var authService=require(_0xa67d('0x13'));var qs=require(_0xa67d('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa67d('0x15'));var logger=require(_0xa67d('0x16'))(_0xa67d('0x17'));var utils=require(_0xa67d('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xa67d('0x19'));var db=require(_0xa67d('0x1a'))['db'];function respondWithStatusCode(_0x560485,_0x4e86f6){_0x4e86f6=_0x4e86f6||0xcc;return function(_0x304ee2){if(_0x304ee2){return _0x560485['sendStatus'](_0x4e86f6);}return _0x560485[_0xa67d('0x1b')](_0x4e86f6)['end']();};}function respondWithResult(_0x5d757b,_0x22dcc7){_0x22dcc7=_0x22dcc7||0xc8;return function(_0x3b99e3){if(_0x3b99e3){return _0x5d757b['status'](_0x22dcc7)[_0xa67d('0x1c')](_0x3b99e3);}};}function respondWithFilteredResult(_0x267a67,_0x1cfe81){return function(_0x288e5f){if(_0x288e5f){var _0x5a47de=typeof _0x1cfe81['offset']==='undefined'&&typeof _0x1cfe81['limit']===_0xa67d('0x1d');var _0x553811=_0x288e5f[_0xa67d('0x1e')];var _0xf8422c=_0x5a47de?0x0:_0x1cfe81[_0xa67d('0x1f')];var _0x1b58c3=_0x5a47de?_0x288e5f[_0xa67d('0x1e')]:_0x1cfe81[_0xa67d('0x1f')]+_0x1cfe81[_0xa67d('0x20')];var _0x5538a5;if(_0x1b58c3>=_0x553811){_0x1b58c3=_0x553811;_0x5538a5=0xc8;}else{_0x5538a5=0xce;}_0x267a67[_0xa67d('0x1b')](_0x5538a5);return _0x267a67[_0xa67d('0x21')](_0xa67d('0x22'),_0xf8422c+'-'+_0x1b58c3+'/'+_0x553811)[_0xa67d('0x1c')](_0x288e5f);}return null;};}function patchUpdates(_0x28f38b){return function(_0x1c3498){try{jsonpatch['apply'](_0x1c3498,_0x28f38b,!![]);}catch(_0x3f1898){return BPromise[_0xa67d('0x23')](_0x3f1898);}return _0x1c3498[_0xa67d('0x24')]();};}function saveUpdates(_0xed6c3e,_0x48f240){return function(_0x276ef7){if(_0x276ef7){return _0x276ef7['update'](_0xed6c3e)[_0xa67d('0x25')](function(_0x415141){return _0x415141;});}return null;};}function removeEntity(_0x46bbc8,_0x9c2935){return function(_0x559009){if(_0x559009){return _0x559009[_0xa67d('0x26')]()[_0xa67d('0x25')](function(){_0x46bbc8['status'](0xcc)[_0xa67d('0x27')]();});}};}function handleEntityNotFound(_0x3dd0b9,_0x2b890c){return function(_0xe0c7b2){if(!_0xe0c7b2){_0x3dd0b9[_0xa67d('0x28')](0x194);}return _0xe0c7b2;};}function handleError(_0x1d6e68,_0x5ef92a){_0x5ef92a=_0x5ef92a||0x1f4;return function(_0x435e56){logger[_0xa67d('0x29')](_0x435e56['stack']);if(_0x435e56[_0xa67d('0x2a')]){delete _0x435e56[_0xa67d('0x2a')];}_0x1d6e68[_0xa67d('0x1b')](_0x5ef92a)[_0xa67d('0x2b')](_0x435e56);};}exports[_0xa67d('0x2c')]=function(_0x8793cf,_0x42c858){var _0xf4fc64={'raw':!![],'where':{'id':_0x8793cf[_0xa67d('0x2d')]['id']}},_0x204f83={};_0x204f83[_0xa67d('0x2e')]=_[_0xa67d('0x2f')](db[_0xa67d('0x30')][_0xa67d('0x31')]);_0x204f83['query']=_[_0xa67d('0x2f')](_0x8793cf[_0xa67d('0x32')]);_0x204f83[_0xa67d('0x33')]=_[_0xa67d('0x34')](_0x204f83[_0xa67d('0x2e')],_0x204f83['query']);_0xf4fc64[_0xa67d('0x35')]=_[_0xa67d('0x34')](_0x204f83[_0xa67d('0x2e')],qs[_0xa67d('0x36')](_0x8793cf[_0xa67d('0x32')][_0xa67d('0x36')]));_0xf4fc64[_0xa67d('0x35')]=_0xf4fc64[_0xa67d('0x35')][_0xa67d('0x37')]?_0xf4fc64[_0xa67d('0x35')]:_0x204f83['model'];if(_0x8793cf[_0xa67d('0x32')]['includeAll']){_0xf4fc64[_0xa67d('0x38')]=[{'all':!![]}];}_0xf4fc64=_[_0xa67d('0x39')]({},_0xf4fc64,_0x8793cf[_0xa67d('0x3a')]);return db['ChatApplication'][_0xa67d('0x3b')](_0xf4fc64)[_0xa67d('0x25')](handleEntityNotFound(_0x42c858,null))[_0xa67d('0x25')](respondWithResult(_0x42c858,null))[_0xa67d('0x3c')](handleError(_0x42c858,null));};exports[_0xa67d('0x3d')]=function(_0x199e8f,_0x4ded76){if(_0x199e8f[_0xa67d('0x3e')]['id']){delete _0x199e8f[_0xa67d('0x3e')]['id'];}return db['ChatApplication']['find']({'where':{'id':_0x199e8f['params']['id']}})[_0xa67d('0x25')](handleEntityNotFound(_0x4ded76,null))['then'](saveUpdates(_0x199e8f[_0xa67d('0x3e')],null))[_0xa67d('0x25')](respondWithResult(_0x4ded76,null))[_0xa67d('0x3c')](handleError(_0x4ded76,null));};exports[_0xa67d('0x26')]=function(_0x35a0a0,_0x44310e){return db[_0xa67d('0x30')][_0xa67d('0x3b')]({'where':{'id':_0x35a0a0[_0xa67d('0x2d')]['id']}})[_0xa67d('0x25')](handleEntityNotFound(_0x44310e,null))[_0xa67d('0x25')](removeEntity(_0x44310e,null))[_0xa67d('0x3c')](handleError(_0x44310e,null));};
\ No newline at end of file
+var _0x9c5e=['json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','end','error','name','show','params','model','keys','rawAttributes','filters','intersection','query','attributes','fields','includeAll','include','merge','options','ChatApplication','body','find','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0x209ef6,_0x4427da){var _0x50c003=function(_0x1c23bc){while(--_0x1c23bc){_0x209ef6['push'](_0x209ef6['shift']());}};_0x50c003(++_0x4427da);}(_0x9c5e,0x9c));var _0xe9c5=function(_0x2d714a,_0x3a4c1e){_0x2d714a=_0x2d714a-0x0;var _0x2b6ed7=_0x9c5e[_0x2d714a];return _0x2b6ed7;};'use strict';var emlformat=require(_0xe9c5('0x0'));var rimraf=require(_0xe9c5('0x1'));var zipdir=require(_0xe9c5('0x2'));var jsonpatch=require(_0xe9c5('0x3'));var rp=require(_0xe9c5('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xe9c5('0x5'));var path=require(_0xe9c5('0x6'));var sox=require('sox');var csv=require(_0xe9c5('0x7'));var ejs=require(_0xe9c5('0x8'));var fs=require('fs');var fs_extra=require(_0xe9c5('0x9'));var _=require(_0xe9c5('0xa'));var squel=require('squel');var crypto=require(_0xe9c5('0xb'));var jsforce=require(_0xe9c5('0xc'));var deskjs=require(_0xe9c5('0xd'));var toCsv=require(_0xe9c5('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xe9c5('0xe'));var authService=require(_0xe9c5('0xf'));var qs=require(_0xe9c5('0x10'));var as=require(_0xe9c5('0x11'));var hardwareService=require(_0xe9c5('0x12'));var logger=require(_0xe9c5('0x13'))(_0xe9c5('0x14'));var utils=require(_0xe9c5('0x15'));var config=require(_0xe9c5('0x16'));var licenseUtil=require(_0xe9c5('0x17'));var db=require(_0xe9c5('0x18'))['db'];function respondWithStatusCode(_0x27f3e1,_0x471401){_0x471401=_0x471401||0xcc;return function(_0x25ff11){if(_0x25ff11){return _0x27f3e1[_0xe9c5('0x19')](_0x471401);}return _0x27f3e1[_0xe9c5('0x1a')](_0x471401)['end']();};}function respondWithResult(_0x3cce36,_0xe98b11){_0xe98b11=_0xe98b11||0xc8;return function(_0x5eb474){if(_0x5eb474){return _0x3cce36[_0xe9c5('0x1a')](_0xe98b11)[_0xe9c5('0x1b')](_0x5eb474);}};}function respondWithFilteredResult(_0x232584,_0x5d8236){return function(_0x163253){if(_0x163253){var _0x14eb41=typeof _0x5d8236['offset']===_0xe9c5('0x1c')&&typeof _0x5d8236[_0xe9c5('0x1d')]===_0xe9c5('0x1c');var _0x154390=_0x163253[_0xe9c5('0x1e')];var _0x4d9c7d=_0x14eb41?0x0:_0x5d8236[_0xe9c5('0x1f')];var _0x1cecae=_0x14eb41?_0x163253[_0xe9c5('0x1e')]:_0x5d8236[_0xe9c5('0x1f')]+_0x5d8236['limit'];var _0x26492a;if(_0x1cecae>=_0x154390){_0x1cecae=_0x154390;_0x26492a=0xc8;}else{_0x26492a=0xce;}_0x232584[_0xe9c5('0x1a')](_0x26492a);return _0x232584[_0xe9c5('0x20')](_0xe9c5('0x21'),_0x4d9c7d+'-'+_0x1cecae+'/'+_0x154390)[_0xe9c5('0x1b')](_0x163253);}return null;};}function patchUpdates(_0x58fbad){return function(_0x51e860){try{jsonpatch[_0xe9c5('0x22')](_0x51e860,_0x58fbad,!![]);}catch(_0x57818d){return BPromise[_0xe9c5('0x23')](_0x57818d);}return _0x51e860[_0xe9c5('0x24')]();};}function saveUpdates(_0x21b02a,_0x4d16bc){return function(_0x5750ff){if(_0x5750ff){return _0x5750ff[_0xe9c5('0x25')](_0x21b02a)[_0xe9c5('0x26')](function(_0x37fb90){return _0x37fb90;});}return null;};}function removeEntity(_0x189a13,_0x34a7c8){return function(_0x245161){if(_0x245161){return _0x245161[_0xe9c5('0x27')]()[_0xe9c5('0x26')](function(){_0x189a13[_0xe9c5('0x1a')](0xcc)[_0xe9c5('0x28')]();});}};}function handleEntityNotFound(_0x5a3caa,_0x5c8bb7){return function(_0x250e1c){if(!_0x250e1c){_0x5a3caa[_0xe9c5('0x19')](0x194);}return _0x250e1c;};}function handleError(_0x298dca,_0x3bf679){_0x3bf679=_0x3bf679||0x1f4;return function(_0x33fe71){logger[_0xe9c5('0x29')](_0x33fe71['stack']);if(_0x33fe71[_0xe9c5('0x2a')]){delete _0x33fe71['name'];}_0x298dca[_0xe9c5('0x1a')](_0x3bf679)['send'](_0x33fe71);};}exports[_0xe9c5('0x2b')]=function(_0x2112a6,_0x52d008){var _0x36d145={'raw':!![],'where':{'id':_0x2112a6[_0xe9c5('0x2c')]['id']}},_0x46d253={};_0x46d253[_0xe9c5('0x2d')]=_[_0xe9c5('0x2e')](db['ChatApplication'][_0xe9c5('0x2f')]);_0x46d253['query']=_[_0xe9c5('0x2e')](_0x2112a6['query']);_0x46d253[_0xe9c5('0x30')]=_[_0xe9c5('0x31')](_0x46d253[_0xe9c5('0x2d')],_0x46d253[_0xe9c5('0x32')]);_0x36d145[_0xe9c5('0x33')]=_['intersection'](_0x46d253[_0xe9c5('0x2d')],qs[_0xe9c5('0x34')](_0x2112a6[_0xe9c5('0x32')][_0xe9c5('0x34')]));_0x36d145[_0xe9c5('0x33')]=_0x36d145['attributes']['length']?_0x36d145[_0xe9c5('0x33')]:_0x46d253[_0xe9c5('0x2d')];if(_0x2112a6[_0xe9c5('0x32')][_0xe9c5('0x35')]){_0x36d145[_0xe9c5('0x36')]=[{'all':!![]}];}_0x36d145=_[_0xe9c5('0x37')]({},_0x36d145,_0x2112a6[_0xe9c5('0x38')]);return db[_0xe9c5('0x39')]['find'](_0x36d145)[_0xe9c5('0x26')](handleEntityNotFound(_0x52d008,null))[_0xe9c5('0x26')](respondWithResult(_0x52d008,null))['catch'](handleError(_0x52d008,null));};exports[_0xe9c5('0x25')]=function(_0x4e4828,_0x340905){if(_0x4e4828[_0xe9c5('0x3a')]['id']){delete _0x4e4828[_0xe9c5('0x3a')]['id'];}return db[_0xe9c5('0x39')][_0xe9c5('0x3b')]({'where':{'id':_0x4e4828[_0xe9c5('0x2c')]['id']}})[_0xe9c5('0x26')](handleEntityNotFound(_0x340905,null))[_0xe9c5('0x26')](saveUpdates(_0x4e4828[_0xe9c5('0x3a')],null))[_0xe9c5('0x26')](respondWithResult(_0x340905,null))[_0xe9c5('0x3c')](handleError(_0x340905,null));};exports[_0xe9c5('0x27')]=function(_0x33680c,_0x3aae58){return db[_0xe9c5('0x39')][_0xe9c5('0x3b')]({'where':{'id':_0x33680c[_0xe9c5('0x2c')]['id']}})[_0xe9c5('0x26')](handleEntityNotFound(_0x3aae58,null))[_0xe9c5('0x26')](removeEntity(_0x3aae58,null))['catch'](handleError(_0x3aae58,null));};
\ No newline at end of file
index d13df6c..76788c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf296=['define','chat_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','request-promise','path','../../config/environment','./chatApplication.attributes','exports'];(function(_0x19373c,_0x3eb198){var _0x564519=function(_0x25f53d){while(--_0x25f53d){_0x19373c['push'](_0x19373c['shift']());}};_0x564519(++_0x3eb198);}(_0xf296,0x94));var _0x6f29=function(_0xf458be,_0x1cf158){_0xf458be=_0xf458be-0x0;var _0x52b318=_0xf296[_0xf458be];return _0x52b318;};'use strict';var _=require(_0x6f29('0x0'));var util=require(_0x6f29('0x1'));var logger=require('../../config/logger')(_0x6f29('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x6f29('0x3'));var fs=require('fs');var path=require(_0x6f29('0x4'));var rimraf=require('rimraf');var config=require(_0x6f29('0x5'));var attributes=require(_0x6f29('0x6'));module[_0x6f29('0x7')]=function(_0x4f0712,_0x1d9c3f){return _0x4f0712[_0x6f29('0x8')]('ChatApplication',attributes,{'tableName':_0x6f29('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x6f29('0xa'),'collate':_0x6f29('0xb')});};
\ No newline at end of file
+var _0xbc17=['rimraf','./chatApplication.attributes','define','ChatApplication','chat_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','path'];(function(_0x382dd1,_0x448bec){var _0x2109bd=function(_0x5e1091){while(--_0x5e1091){_0x382dd1['push'](_0x382dd1['shift']());}};_0x2109bd(++_0x448bec);}(_0xbc17,0x1ab));var _0x7bc1=function(_0xeead8a,_0x3d2400){_0xeead8a=_0xeead8a-0x0;var _0x24742c=_0xbc17[_0xeead8a];return _0x24742c;};'use strict';var _=require(_0x7bc1('0x0'));var util=require(_0x7bc1('0x1'));var logger=require('../../config/logger')(_0x7bc1('0x2'));var moment=require(_0x7bc1('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x7bc1('0x4'));var rimraf=require(_0x7bc1('0x5'));var config=require('../../config/environment');var attributes=require(_0x7bc1('0x6'));module['exports']=function(_0xba4fa8,_0xcecb62){return _0xba4fa8[_0x7bc1('0x7')](_0x7bc1('0x8'),attributes,{'tableName':_0x7bc1('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x7bc1('0xa'),'collate':_0x7bc1('0xb')});};
\ No newline at end of file
index 684b1b5..b0b8c8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39be=['util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','ChatApplication,\x20%s,\x20%s','request\x20sent','debug','ChatApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash'];(function(_0x4d2073,_0x37d13c){var _0x132940=function(_0x402e78){while(--_0x402e78){_0x4d2073['push'](_0x4d2073['shift']());}};_0x132940(++_0x37d13c);}(_0x39be,0x83));var _0xe39b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x39be[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xe39b('0x0'));var util=require(_0xe39b('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xe39b('0x2'));var fs=require('fs');var Redis=require(_0xe39b('0x3'));var db=require(_0xe39b('0x4'))['db'];var utils=require(_0xe39b('0x5'));var logger=require(_0xe39b('0x6'))('rpc');var config=require(_0xe39b('0x7'));var jayson=require(_0xe39b('0x8'));var client=jayson['client'][_0xe39b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x126235,_0x5c02bc,_0x59c896){return new BPromise(function(_0xb05a31,_0x76acf1){return client[_0xe39b('0xa')](_0x126235,_0x59c896)[_0xe39b('0xb')](function(_0x24b84e){logger['info'](_0xe39b('0xc'),_0x5c02bc,_0xe39b('0xd'));logger[_0xe39b('0xe')](_0xe39b('0xf'),_0x5c02bc,_0xe39b('0xd'),JSON[_0xe39b('0x10')](_0x24b84e));if(_0x24b84e[_0xe39b('0x11')]){if(_0x24b84e[_0xe39b('0x11')][_0xe39b('0x12')]===0x1f4){logger[_0xe39b('0x11')](_0xe39b('0xc'),_0x5c02bc,_0x24b84e[_0xe39b('0x11')][_0xe39b('0x13')]);return _0x76acf1(_0x24b84e[_0xe39b('0x11')][_0xe39b('0x13')]);}logger[_0xe39b('0x11')](_0xe39b('0xc'),_0x5c02bc,_0x24b84e[_0xe39b('0x11')][_0xe39b('0x13')]);return _0xb05a31(_0x24b84e['error'][_0xe39b('0x13')]);}else{logger['info'](_0xe39b('0xc'),_0x5c02bc,_0xe39b('0xd'));_0xb05a31(_0x24b84e[_0xe39b('0x14')]['message']);}})[_0xe39b('0x15')](function(_0x5d93f5){logger[_0xe39b('0x11')](_0xe39b('0xc'),_0x5c02bc,_0x5d93f5);_0x76acf1(_0x5d93f5);});});}
\ No newline at end of file
+var _0xb2f3=['catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ChatApplication,\x20%s,\x20%s','request\x20sent','debug','ChatApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x33d4a2,_0x2baaf4){var _0x2c793f=function(_0x414303){while(--_0x414303){_0x33d4a2['push'](_0x33d4a2['shift']());}};_0x2c793f(++_0x2baaf4);}(_0xb2f3,0xfb));var _0x3b2f=function(_0x4a53d,_0x58a95e){_0x4a53d=_0x4a53d-0x0;var _0x27410e=_0xb2f3[_0x4a53d];return _0x27410e;};'use strict';var _=require(_0x3b2f('0x0'));var util=require(_0x3b2f('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x3b2f('0x2'));var fs=require('fs');var Redis=require(_0x3b2f('0x3'));var db=require(_0x3b2f('0x4'))['db'];var utils=require(_0x3b2f('0x5'));var logger=require(_0x3b2f('0x6'))(_0x3b2f('0x7'));var config=require(_0x3b2f('0x8'));var jayson=require(_0x3b2f('0x9'));var client=jayson[_0x3b2f('0xa')][_0x3b2f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x48c8a3,_0x49e8ae,_0x5c517f){return new BPromise(function(_0x2f7653,_0x5ed471){return client[_0x3b2f('0xc')](_0x48c8a3,_0x5c517f)[_0x3b2f('0xd')](function(_0x58a802){logger[_0x3b2f('0xe')](_0x3b2f('0xf'),_0x49e8ae,_0x3b2f('0x10'));logger[_0x3b2f('0x11')](_0x3b2f('0x12'),_0x49e8ae,'request\x20sent',JSON[_0x3b2f('0x13')](_0x58a802));if(_0x58a802[_0x3b2f('0x14')]){if(_0x58a802[_0x3b2f('0x14')][_0x3b2f('0x15')]===0x1f4){logger['error'](_0x3b2f('0xf'),_0x49e8ae,_0x58a802[_0x3b2f('0x14')]['message']);return _0x5ed471(_0x58a802['error']['message']);}logger['error']('ChatApplication,\x20%s,\x20%s',_0x49e8ae,_0x58a802['error'][_0x3b2f('0x16')]);return _0x2f7653(_0x58a802['error'][_0x3b2f('0x16')]);}else{logger[_0x3b2f('0xe')]('ChatApplication,\x20%s,\x20%s',_0x49e8ae,_0x3b2f('0x10'));_0x2f7653(_0x58a802[_0x3b2f('0x17')][_0x3b2f('0x16')]);}})[_0x3b2f('0x18')](function(_0x16e9ea){logger[_0x3b2f('0x14')](_0x3b2f('0xf'),_0x49e8ae,_0x16e9ea);_0x5ed471(_0x16e9ea);});});}
\ No newline at end of file
index 4745da5..1daa62f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28ce=['util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','./chatApplication.controller','/:id','isAuthenticated','delete','exports','multer'];(function(_0x43cd40,_0x5c21d2){var _0x58122c=function(_0x1409ec){while(--_0x1409ec){_0x43cd40['push'](_0x43cd40['shift']());}};_0x58122c(++_0x5c21d2);}(_0x28ce,0x1ee));var _0xe28c=function(_0x45187f,_0x203811){_0x45187f=_0x45187f-0x0;var _0x1f8e4b=_0x28ce[_0x45187f];return _0x1f8e4b;};'use strict';var multer=require(_0xe28c('0x0'));var util=require(_0xe28c('0x1'));var path=require('path');var timeout=require(_0xe28c('0x2'));var express=require('express');var router=express[_0xe28c('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xe28c('0x4'));var interaction=require(_0xe28c('0x5'));var config=require('../../config/environment');var controller=require(_0xe28c('0x6'));router['get'](_0xe28c('0x7'),auth[_0xe28c('0x8')](),controller['show']);router['put']('/:id',auth[_0xe28c('0x8')](),controller['update']);router[_0xe28c('0x9')](_0xe28c('0x7'),auth[_0xe28c('0x8')](),controller['destroy']);module[_0xe28c('0xa')]=router;
\ No newline at end of file
+var _0x14cc=['delete','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','show','put','isAuthenticated'];(function(_0x77b4a4,_0xbdb59d){var _0x3f0d95=function(_0x196d79){while(--_0x196d79){_0x77b4a4['push'](_0x77b4a4['shift']());}};_0x3f0d95(++_0xbdb59d);}(_0x14cc,0xa7));var _0xc14c=function(_0x11e03f,_0x20b967){_0x11e03f=_0x11e03f-0x0;var _0x5666fe=_0x14cc[_0x11e03f];return _0x5666fe;};'use strict';var multer=require(_0xc14c('0x0'));var util=require(_0xc14c('0x1'));var path=require('path');var timeout=require(_0xc14c('0x2'));var express=require('express');var router=express[_0xc14c('0x3')]();var fs_extra=require(_0xc14c('0x4'));var auth=require(_0xc14c('0x5'));var interaction=require(_0xc14c('0x6'));var config=require(_0xc14c('0x7'));var controller=require('./chatApplication.controller');router[_0xc14c('0x8')](_0xc14c('0x9'),auth['isAuthenticated'](),controller[_0xc14c('0xa')]);router[_0xc14c('0xb')](_0xc14c('0x9'),auth[_0xc14c('0xc')](),controller['update']);router[_0xc14c('0xd')](_0xc14c('0x9'),auth[_0xc14c('0xc')](),controller['destroy']);module[_0xc14c('0xe')]=router;
\ No newline at end of file
index de55ee4..cfa4453 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1b9=['exports','BOOLEAN'];(function(_0x430a84,_0x9b2ae){var _0x454377=function(_0x34da81){while(--_0x34da81){_0x430a84['push'](_0x430a84['shift']());}};_0x454377(++_0x9b2ae);}(_0xb1b9,0x186));var _0x9b1b=function(_0x2ddc5e,_0x4958ef){_0x2ddc5e=_0x2ddc5e-0x0;var _0xb196a0=_0xb1b9[_0x2ddc5e];return _0xb196a0;};'use strict';var Sequelize=require('sequelize');module[_0x9b1b('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'write':{'type':Sequelize[_0x9b1b('0x1')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x6829=['sequelize','exports'];(function(_0xe58f48,_0x3cf2ea){var _0x3297bc=function(_0xf46e13){while(--_0xf46e13){_0xe58f48['push'](_0xe58f48['shift']());}};_0x3297bc(++_0x3cf2ea);}(_0x6829,0x14c));var _0x9682=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x6829[_0x3e5086];return _0xfeb102;};'use strict';var Sequelize=require(_0x9682('0x0'));module[_0x9682('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'write':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index 3417b36..332719c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x039a=['VIRTUAL','options','include','rows','catch','show','params','find','create','body','describe','getUnread','ChatInternalMessage','user','toInteger','addMembers','getMembers','findOne','order','removeMembers','ids','addMessage','ChatGroupId','getMessages','$gte','YYYY-MM-DD\x20HH:mm:ss','nolimit','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','./chatGroup.socket','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','error','name','send','map','ChatGroup','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','type'];(function(_0x14a8c3,_0x3c7e62){var _0x3c1898=function(_0x1581f9){while(--_0x1581f9){_0x14a8c3['push'](_0x14a8c3['shift']());}};_0x3c1898(++_0x3c7e62);}(_0x039a,0x78));var _0xa039=function(_0x44e4f8,_0x4af8bd){_0x44e4f8=_0x44e4f8-0x0;var _0x310967=_0x039a[_0x44e4f8];return _0x310967;};'use strict';var emlformat=require(_0xa039('0x0'));var rimraf=require(_0xa039('0x1'));var zipdir=require(_0xa039('0x2'));var jsonpatch=require(_0xa039('0x3'));var rp=require(_0xa039('0x4'));var moment=require(_0xa039('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xa039('0x6'));var util=require(_0xa039('0x7'));var path=require(_0xa039('0x8'));var sox=require('sox');var csv=require(_0xa039('0x9'));var ejs=require(_0xa039('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa039('0xb'));var squel=require(_0xa039('0xc'));var crypto=require('crypto');var jsforce=require(_0xa039('0xd'));var deskjs=require(_0xa039('0xe'));var toCsv=require('to-csv');var querystring=require(_0xa039('0xf'));var Papa=require('papaparse');var Redis=require(_0xa039('0x10'));var authService=require(_0xa039('0x11'));var qs=require(_0xa039('0x12'));var as=require(_0xa039('0x13'));var hardwareService=require(_0xa039('0x14'));var logger=require(_0xa039('0x15'))(_0xa039('0x16'));var utils=require(_0xa039('0x17'));var config=require(_0xa039('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xa039('0x19'))['db'];config[_0xa039('0x1a')]=_[_0xa039('0x1b')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa039('0x1a')]));require(_0xa039('0x1c'))['register'](socket);function respondWithStatusCode(_0x3b09ba,_0x205a3f){_0x205a3f=_0x205a3f||0xcc;return function(_0x47585b){if(_0x47585b){return _0x3b09ba[_0xa039('0x1d')](_0x205a3f);}return _0x3b09ba[_0xa039('0x1e')](_0x205a3f)[_0xa039('0x1f')]();};}function respondWithResult(_0x21a2d8,_0x341d5b){_0x341d5b=_0x341d5b||0xc8;return function(_0x28e341){if(_0x28e341){return _0x21a2d8[_0xa039('0x1e')](_0x341d5b)[_0xa039('0x20')](_0x28e341);}};}function respondWithFilteredResult(_0x2ee7f5,_0x2d2a6f){return function(_0x2912c5){if(_0x2912c5){var _0x420835=typeof _0x2d2a6f[_0xa039('0x21')]===_0xa039('0x22')&&typeof _0x2d2a6f[_0xa039('0x23')]===_0xa039('0x22');var _0x168038=_0x2912c5['count'];var _0x3cec19=_0x420835?0x0:_0x2d2a6f[_0xa039('0x21')];var _0x471a0c=_0x420835?_0x2912c5[_0xa039('0x24')]:_0x2d2a6f['offset']+_0x2d2a6f[_0xa039('0x23')];var _0x53029c;if(_0x471a0c>=_0x168038){_0x471a0c=_0x168038;_0x53029c=0xc8;}else{_0x53029c=0xce;}_0x2ee7f5[_0xa039('0x1e')](_0x53029c);return _0x2ee7f5['set'](_0xa039('0x25'),_0x3cec19+'-'+_0x471a0c+'/'+_0x168038)[_0xa039('0x20')](_0x2912c5);}return null;};}function patchUpdates(_0x27b70f){return function(_0x27e759){try{jsonpatch[_0xa039('0x26')](_0x27e759,_0x27b70f,!![]);}catch(_0x402b2f){return BPromise[_0xa039('0x27')](_0x402b2f);}return _0x27e759[_0xa039('0x28')]();};}function saveUpdates(_0xa2ebb9,_0x19745b){return function(_0x2e7011){if(_0x2e7011){return _0x2e7011[_0xa039('0x29')](_0xa2ebb9)[_0xa039('0x2a')](function(_0x5511df){return _0x5511df;});}return null;};}function removeEntity(_0x2400c3,_0xb317ed){return function(_0x163372){if(_0x163372){return _0x163372['destroy']()[_0xa039('0x2a')](function(){_0x2400c3[_0xa039('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x42d602,_0xc7463d){return function(_0x47c1f3){if(!_0x47c1f3){_0x42d602['sendStatus'](0x194);}return _0x47c1f3;};}function handleError(_0x5a68b0,_0x280d80){_0x280d80=_0x280d80||0x1f4;return function(_0x432e33){logger[_0xa039('0x2b')](_0x432e33['stack']);if(_0x432e33[_0xa039('0x2c')]){delete _0x432e33[_0xa039('0x2c')];}_0x5a68b0[_0xa039('0x1e')](_0x280d80)[_0xa039('0x2d')](_0x432e33);};}exports['index']=function(_0x4d39b2,_0x289399){var _0x4db35c={},_0x56cb51={},_0x1c0fdf={'count':0x0,'rows':[]};var _0x90aa3=_[_0xa039('0x2e')](db[_0xa039('0x2f')][_0xa039('0x30')],function(_0x55efaa){return{'name':_0x55efaa[_0xa039('0x31')],'type':_0x55efaa['type'][_0xa039('0x32')]};});_0x56cb51[_0xa039('0x33')]=_['map'](_0x90aa3,_0xa039('0x2c'));_0x56cb51[_0xa039('0x34')]=_[_0xa039('0x35')](_0x4d39b2[_0xa039('0x34')]);_0x56cb51[_0xa039('0x36')]=_[_0xa039('0x37')](_0x56cb51[_0xa039('0x33')],_0x56cb51[_0xa039('0x34')]);_0x4db35c[_0xa039('0x38')]=_[_0xa039('0x37')](_0x56cb51['model'],qs['fields'](_0x4d39b2['query'][_0xa039('0x39')]));_0x4db35c[_0xa039('0x38')]=_0x4db35c[_0xa039('0x38')][_0xa039('0x3a')]?_0x4db35c[_0xa039('0x38')]:_0x56cb51['model'];if(!_0x4d39b2[_0xa039('0x34')][_0xa039('0x3b')]('nolimit')){_0x4db35c['limit']=qs[_0xa039('0x23')](_0x4d39b2[_0xa039('0x34')][_0xa039('0x23')]);_0x4db35c['offset']=qs[_0xa039('0x21')](_0x4d39b2['query'][_0xa039('0x21')]);}_0x4db35c['order']=qs[_0xa039('0x3c')](_0x4d39b2['query'][_0xa039('0x3c')]);_0x4db35c[_0xa039('0x3d')]=qs[_0xa039('0x36')](_[_0xa039('0x3e')](_0x4d39b2[_0xa039('0x34')],_0x56cb51[_0xa039('0x36')]),_0x90aa3);if(_0x4d39b2[_0xa039('0x34')][_0xa039('0x3f')]){_0x4db35c[_0xa039('0x3d')]=_[_0xa039('0x40')](_0x4db35c[_0xa039('0x3d')],{'$or':_[_0xa039('0x2e')](_0x90aa3,function(_0x4a24e1){if(_0x4a24e1[_0xa039('0x41')]!==_0xa039('0x42')){var _0x228747={};_0x228747[_0x4a24e1[_0xa039('0x2c')]]={'$like':'%'+_0x4d39b2['query']['filter']+'%'};return _0x228747;}})});}_0x4db35c=_[_0xa039('0x40')]({},_0x4db35c,_0x4d39b2[_0xa039('0x43')]);var _0x2ea838={'where':_0x4db35c['where']};return db['ChatGroup']['count'](_0x2ea838)[_0xa039('0x2a')](function(_0x299e00){_0x1c0fdf['count']=_0x299e00;if(_0x4d39b2['query']['includeAll']){_0x4db35c[_0xa039('0x44')]=[{'all':!![]}];}return db[_0xa039('0x2f')]['findAll'](_0x4db35c);})[_0xa039('0x2a')](function(_0x1fe4f1){_0x1c0fdf[_0xa039('0x45')]=_0x1fe4f1;return _0x1c0fdf;})['then'](respondWithFilteredResult(_0x289399,_0x4db35c))[_0xa039('0x46')](handleError(_0x289399,null));};exports[_0xa039('0x47')]=function(_0x1d211a,_0x417be4){var _0x59fa1b={'raw':!![],'where':{'id':_0x1d211a[_0xa039('0x48')]['id']}},_0x11674a={};_0x11674a[_0xa039('0x33')]=_['keys'](db['ChatGroup'][_0xa039('0x30')]);_0x11674a['query']=_[_0xa039('0x35')](_0x1d211a[_0xa039('0x34')]);_0x11674a[_0xa039('0x36')]=_['intersection'](_0x11674a['model'],_0x11674a['query']);_0x59fa1b['attributes']=_[_0xa039('0x37')](_0x11674a[_0xa039('0x33')],qs[_0xa039('0x39')](_0x1d211a[_0xa039('0x34')][_0xa039('0x39')]));_0x59fa1b[_0xa039('0x38')]=_0x59fa1b[_0xa039('0x38')][_0xa039('0x3a')]?_0x59fa1b[_0xa039('0x38')]:_0x11674a[_0xa039('0x33')];if(_0x1d211a[_0xa039('0x34')]['includeAll']){_0x59fa1b[_0xa039('0x44')]=[{'all':!![]}];}_0x59fa1b=_[_0xa039('0x40')]({},_0x59fa1b,_0x1d211a[_0xa039('0x43')]);return db['ChatGroup'][_0xa039('0x49')](_0x59fa1b)['then'](handleEntityNotFound(_0x417be4,null))[_0xa039('0x2a')](respondWithResult(_0x417be4,null))['catch'](handleError(_0x417be4,null));};exports[_0xa039('0x4a')]=function(_0x1a0691,_0x7a9916){return db[_0xa039('0x2f')][_0xa039('0x4a')](_0x1a0691[_0xa039('0x4b')],{})['then'](respondWithResult(_0x7a9916,0xc9))['catch'](handleError(_0x7a9916,null));};exports[_0xa039('0x29')]=function(_0x5c5d75,_0x297942){if(_0x5c5d75[_0xa039('0x4b')]['id']){delete _0x5c5d75['body']['id'];}return db[_0xa039('0x2f')][_0xa039('0x49')]({'where':{'id':_0x5c5d75[_0xa039('0x48')]['id']}})[_0xa039('0x2a')](handleEntityNotFound(_0x297942,null))[_0xa039('0x2a')](saveUpdates(_0x5c5d75['body'],null))[_0xa039('0x2a')](respondWithResult(_0x297942,null))[_0xa039('0x46')](handleError(_0x297942,null));};exports['destroy']=function(_0x42d6e6,_0x53264c){return db['ChatGroup'][_0xa039('0x49')]({'where':{'id':_0x42d6e6[_0xa039('0x48')]['id']}})[_0xa039('0x2a')](handleEntityNotFound(_0x53264c,null))[_0xa039('0x2a')](removeEntity(_0x53264c,null))['catch'](handleError(_0x53264c,null));};exports[_0xa039('0x4c')]=function(_0x541002,_0x1e5b1e){return db['ChatGroup']['describe']()[_0xa039('0x2a')](respondWithResult(_0x1e5b1e,null))[_0xa039('0x46')](handleError(_0x1e5b1e,null));};exports[_0xa039('0x4d')]=function(_0x2786b8,_0x6efd9c,_0x127c41){return db[_0xa039('0x4e')]['count']({'where':{'ChatGroupId':_0x2786b8[_0xa039('0x48')]['id'],'ToId':_0x2786b8[_0xa039('0x4f')]['id'],'read':![]}})['then'](function(_0x3965ae){return{'id':_[_0xa039('0x50')](_0x2786b8[_0xa039('0x48')]['id']),'count':_0x3965ae};})[_0xa039('0x2a')](respondWithResult(_0x6efd9c,null))[_0xa039('0x46')](handleError(_0x6efd9c,null));};exports[_0xa039('0x51')]=function(_0x5f519c,_0x178e92,_0x30071d){return db[_0xa039('0x2f')][_0xa039('0x49')]({'where':{'id':_0x5f519c[_0xa039('0x48')]['id']}})['then'](handleEntityNotFound(_0x178e92,null))['then'](function(_0x34ac32){if(_0x34ac32){return _0x34ac32['addMembers'](_0x5f519c['body']['ids'],_['omit'](_0x5f519c[_0xa039('0x4b')],['ids','id'])||{});}})[_0xa039('0x2a')](respondWithResult(_0x178e92,null))[_0xa039('0x46')](handleError(_0x178e92,null));};exports[_0xa039('0x52')]=function(_0x91d885,_0x183d00,_0x245623){var _0x58b67a={};var _0x5e6162={};var _0xae1cf4;var _0x5182f5;return db[_0xa039('0x2f')][_0xa039('0x53')]({'where':{'id':_0x91d885['params']['id']}})[_0xa039('0x2a')](handleEntityNotFound(_0x183d00,null))[_0xa039('0x2a')](function(_0x341df2){if(_0x341df2){_0xae1cf4=_0x341df2;_0x5e6162['model']=_[_0xa039('0x35')](db['User']['rawAttributes']);_0x5e6162[_0xa039('0x34')]=_[_0xa039('0x35')](_0x91d885[_0xa039('0x34')]);_0x5e6162['filters']=_[_0xa039('0x37')](_0x5e6162[_0xa039('0x33')],_0x5e6162[_0xa039('0x34')]);_0x58b67a[_0xa039('0x38')]=_[_0xa039('0x37')](_0x5e6162[_0xa039('0x33')],qs[_0xa039('0x39')](_0x91d885['query'][_0xa039('0x39')]));_0x58b67a[_0xa039('0x38')]=_0x58b67a[_0xa039('0x38')]['length']?_0x58b67a['attributes']:_0x5e6162[_0xa039('0x33')];_0x58b67a[_0xa039('0x54')]=qs[_0xa039('0x3c')](_0x91d885[_0xa039('0x34')]['sort']);_0x58b67a[_0xa039('0x3d')]=qs[_0xa039('0x36')](_[_0xa039('0x3e')](_0x91d885[_0xa039('0x34')],_0x5e6162[_0xa039('0x36')]));if(_0x91d885[_0xa039('0x34')][_0xa039('0x3f')]){_0x58b67a['where']=_[_0xa039('0x40')](_0x58b67a[_0xa039('0x3d')],{'$or':_[_0xa039('0x2e')](_0x58b67a[_0xa039('0x38')],function(_0x5d0e25){var _0x38ad93={};_0x38ad93[_0x5d0e25]={'$like':'%'+_0x91d885[_0xa039('0x34')][_0xa039('0x3f')]+'%'};return _0x38ad93;})});}_0x58b67a=_['merge']({},_0x58b67a,_0x91d885[_0xa039('0x43')]);return _0xae1cf4[_0xa039('0x52')](_0x58b67a);}})[_0xa039('0x2a')](function(_0x9e463c){if(_0x9e463c){_0x5182f5=_0x9e463c[_0xa039('0x3a')];if(!_0x91d885[_0xa039('0x34')][_0xa039('0x3b')]('nolimit')){_0x58b67a['limit']=qs['limit'](_0x91d885['query'][_0xa039('0x23')]);_0x58b67a[_0xa039('0x21')]=qs[_0xa039('0x21')](_0x91d885['query'][_0xa039('0x21')]);}return _0xae1cf4[_0xa039('0x52')](_0x58b67a);}})['then'](function(_0x3b9076){if(_0x3b9076){return _0x3b9076?{'count':_0x5182f5,'rows':_0x3b9076}:null;}})[_0xa039('0x2a')](respondWithResult(_0x183d00,null))['catch'](handleError(_0x183d00,null));};exports[_0xa039('0x55')]=function(_0x416336,_0x1e19d7,_0x27ed4c){return db[_0xa039('0x2f')]['find']({'where':{'id':_0x416336[_0xa039('0x48')]['id']}})['then'](handleEntityNotFound(_0x1e19d7,null))[_0xa039('0x2a')](function(_0x241dd8){if(_0x241dd8){return _0x241dd8[_0xa039('0x55')](_0x416336[_0xa039('0x34')][_0xa039('0x56')]);}})[_0xa039('0x2a')](respondWithStatusCode(_0x1e19d7,null))['catch'](handleError(_0x1e19d7,null));};exports[_0xa039('0x57')]=function(_0x383a92,_0x24fc74,_0x1250c0){if(_0x383a92[_0xa039('0x4b')]['id']){delete _0x383a92[_0xa039('0x4b')]['id'];}return db[_0xa039('0x2f')][_0xa039('0x49')]({'where':{'id':_0x383a92['params']['id']}})['then'](handleEntityNotFound(_0x24fc74,null))[_0xa039('0x2a')](function(_0x31e3d9){if(_0x31e3d9){_0x383a92[_0xa039('0x4b')][_0xa039('0x58')]=_0x31e3d9['id'];return db[_0xa039('0x4e')][_0xa039('0x4a')](_0x383a92[_0xa039('0x4b')]);}})['then'](respondWithResult(_0x24fc74,null))['catch'](handleError(_0x24fc74,null));};exports[_0xa039('0x59')]=function(_0x4addb4,_0x1a1868,_0xdd13fb){var _0x612478={};var _0x2b2b88={};var _0x582f60;var _0x19c745;return db[_0xa039('0x2f')][_0xa039('0x53')]({'where':{'id':_0x4addb4['params']['id']}})[_0xa039('0x2a')](handleEntityNotFound(_0x1a1868,null))[_0xa039('0x2a')](function(_0x2dba84){if(_0x2dba84){_0x582f60=_0x2dba84;_0x2b2b88['model']=_['keys'](db[_0xa039('0x4e')][_0xa039('0x30')]);_0x2b2b88[_0xa039('0x34')]=_[_0xa039('0x35')](_0x4addb4[_0xa039('0x34')]);_0x2b2b88[_0xa039('0x36')]=_[_0xa039('0x37')](_0x2b2b88[_0xa039('0x33')],_0x2b2b88[_0xa039('0x34')]);_0x612478[_0xa039('0x38')]=_[_0xa039('0x37')](_0x2b2b88[_0xa039('0x33')],qs[_0xa039('0x39')](_0x4addb4[_0xa039('0x34')][_0xa039('0x39')]));_0x612478[_0xa039('0x38')]=_0x612478[_0xa039('0x38')][_0xa039('0x3a')]?_0x612478['attributes']:_0x2b2b88[_0xa039('0x33')];_0x612478['order']=qs[_0xa039('0x3c')](_0x4addb4['query'][_0xa039('0x3c')]);_0x612478[_0xa039('0x3d')]=qs[_0xa039('0x36')](_['pick'](_0x4addb4[_0xa039('0x34')],_0x2b2b88['filters']));if(_0x4addb4[_0xa039('0x34')]['filter']){_0x612478[_0xa039('0x3d')]=_[_0xa039('0x40')](_0x612478[_0xa039('0x3d')],{'$or':_['map'](_0x612478[_0xa039('0x38')],function(_0xca3525){var _0x38eddb={};_0x38eddb[_0xca3525]={'$like':'%'+_0x4addb4['query'][_0xa039('0x3f')]+'%'};return _0x38eddb;})});}if(_0x4addb4[_0xa039('0x34')][_0xa039('0x5a')]){var _0x5f0ac9=_0x4addb4[_0xa039('0x34')][_0xa039('0x5a')]['split'](',');var _0x1e4d9c={};_0x1e4d9c[_0x5f0ac9[0x0]]={'$gte':moment(_0x5f0ac9[0x1])['format'](_0xa039('0x5b'))};_0x612478['where']=_['merge'](_0x612478['where'],_0x1e4d9c);}_0x612478=_[_0xa039('0x40')]({},_0x612478,_0x4addb4['options']);return _0x582f60[_0xa039('0x59')](_0x612478);}})[_0xa039('0x2a')](function(_0x52c48f){if(_0x52c48f){_0x19c745=_0x52c48f['length'];if(!_0x4addb4[_0xa039('0x34')][_0xa039('0x3b')](_0xa039('0x5c'))){_0x612478[_0xa039('0x23')]=qs[_0xa039('0x23')](_0x4addb4[_0xa039('0x34')][_0xa039('0x23')]);_0x612478[_0xa039('0x21')]=qs['offset'](_0x4addb4[_0xa039('0x34')][_0xa039('0x21')]);}return _0x582f60['getMessages'](_0x612478);}})['then'](function(_0x8d4356){if(_0x8d4356){return _0x8d4356?{'count':_0x19c745,'rows':_0x8d4356}:null;}})[_0xa039('0x2a')](respondWithResult(_0x1a1868,null))[_0xa039('0x46')](handleError(_0x1a1868,null));};
\ No newline at end of file
+var _0x5eea=['ids','omit','getMembers','findOne','User','removeMembers','addMessage','ChatGroupId','$gte','format','YYYY-MM-DD\x20HH:mm:ss','getMessages','eml-format','rimraf','fast-json-patch','request-promise','moment','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./chatGroup.socket','register','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','then','destroy','end','sendStatus','stack','name','send','index','map','ChatGroup','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','findAll','catch','show','params','options','find','create','body','describe','ChatInternalMessage','user','addMembers'];(function(_0x2af627,_0x33d47f){var _0x14eda9=function(_0x38679a){while(--_0x38679a){_0x2af627['push'](_0x2af627['shift']());}};_0x14eda9(++_0x33d47f);}(_0x5eea,0x12c));var _0xa5ee=function(_0x5807d5,_0x96e4b){_0x5807d5=_0x5807d5-0x0;var _0x15aa80=_0x5eea[_0x5807d5];return _0x15aa80;};'use strict';var emlformat=require(_0xa5ee('0x0'));var rimraf=require(_0xa5ee('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa5ee('0x2'));var rp=require(_0xa5ee('0x3'));var moment=require(_0xa5ee('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xa5ee('0x5'));var sox=require(_0xa5ee('0x6'));var csv=require(_0xa5ee('0x7'));var ejs=require(_0xa5ee('0x8'));var fs=require('fs');var fs_extra=require(_0xa5ee('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xa5ee('0xa'));var jsforce=require(_0xa5ee('0xb'));var deskjs=require(_0xa5ee('0xc'));var toCsv=require(_0xa5ee('0x7'));var querystring=require(_0xa5ee('0xd'));var Papa=require(_0xa5ee('0xe'));var Redis=require('ioredis');var authService=require(_0xa5ee('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xa5ee('0x10'));var hardwareService=require(_0xa5ee('0x11'));var logger=require(_0xa5ee('0x12'))('api');var utils=require(_0xa5ee('0x13'));var config=require(_0xa5ee('0x14'));var licenseUtil=require(_0xa5ee('0x15'));var db=require(_0xa5ee('0x16'))['db'];config['redis']=_[_0xa5ee('0x17')](config[_0xa5ee('0x18')],{'host':_0xa5ee('0x19'),'port':0x18eb});var socket=require(_0xa5ee('0x1a'))(new Redis(config['redis']));require(_0xa5ee('0x1b'))[_0xa5ee('0x1c')](socket);function respondWithStatusCode(_0x47f772,_0x5f3774){_0x5f3774=_0x5f3774||0xcc;return function(_0x725bd){if(_0x725bd){return _0x47f772['sendStatus'](_0x5f3774);}return _0x47f772[_0xa5ee('0x1d')](_0x5f3774)['end']();};}function respondWithResult(_0x2ad95f,_0x561ff4){_0x561ff4=_0x561ff4||0xc8;return function(_0x270e11){if(_0x270e11){return _0x2ad95f[_0xa5ee('0x1d')](_0x561ff4)['json'](_0x270e11);}};}function respondWithFilteredResult(_0x15ab57,_0x4e5043){return function(_0x292c4f){if(_0x292c4f){var _0x3a56a6=typeof _0x4e5043['offset']===_0xa5ee('0x1e')&&typeof _0x4e5043[_0xa5ee('0x1f')]==='undefined';var _0x3a5c5f=_0x292c4f[_0xa5ee('0x20')];var _0x11a8ca=_0x3a56a6?0x0:_0x4e5043[_0xa5ee('0x21')];var _0x57e46b=_0x3a56a6?_0x292c4f[_0xa5ee('0x20')]:_0x4e5043['offset']+_0x4e5043['limit'];var _0xdec5;if(_0x57e46b>=_0x3a5c5f){_0x57e46b=_0x3a5c5f;_0xdec5=0xc8;}else{_0xdec5=0xce;}_0x15ab57[_0xa5ee('0x1d')](_0xdec5);return _0x15ab57[_0xa5ee('0x22')](_0xa5ee('0x23'),_0x11a8ca+'-'+_0x57e46b+'/'+_0x3a5c5f)[_0xa5ee('0x24')](_0x292c4f);}return null;};}function patchUpdates(_0x3f45d3){return function(_0x5af67d){try{jsonpatch[_0xa5ee('0x25')](_0x5af67d,_0x3f45d3,!![]);}catch(_0x4bf73b){return BPromise[_0xa5ee('0x26')](_0x4bf73b);}return _0x5af67d[_0xa5ee('0x27')]();};}function saveUpdates(_0x2c2f30,_0x32f9b8){return function(_0x467771){if(_0x467771){return _0x467771['update'](_0x2c2f30)[_0xa5ee('0x28')](function(_0x4af839){return _0x4af839;});}return null;};}function removeEntity(_0x556594,_0x3c9456){return function(_0x564cc0){if(_0x564cc0){return _0x564cc0[_0xa5ee('0x29')]()['then'](function(){_0x556594[_0xa5ee('0x1d')](0xcc)[_0xa5ee('0x2a')]();});}};}function handleEntityNotFound(_0x1d9b54,_0x46ec83){return function(_0x52395a){if(!_0x52395a){_0x1d9b54[_0xa5ee('0x2b')](0x194);}return _0x52395a;};}function handleError(_0x332ebe,_0x2056de){_0x2056de=_0x2056de||0x1f4;return function(_0x375192){logger['error'](_0x375192[_0xa5ee('0x2c')]);if(_0x375192[_0xa5ee('0x2d')]){delete _0x375192[_0xa5ee('0x2d')];}_0x332ebe[_0xa5ee('0x1d')](_0x2056de)[_0xa5ee('0x2e')](_0x375192);};}exports[_0xa5ee('0x2f')]=function(_0x722c,_0x11907c){var _0x4f7842={},_0x3e3e04={},_0x2f7433={'count':0x0,'rows':[]};var _0x95753a=_[_0xa5ee('0x30')](db[_0xa5ee('0x31')][_0xa5ee('0x32')],function(_0x519607){return{'name':_0x519607['fieldName'],'type':_0x519607[_0xa5ee('0x33')][_0xa5ee('0x34')]};});_0x3e3e04[_0xa5ee('0x35')]=_[_0xa5ee('0x30')](_0x95753a,'name');_0x3e3e04[_0xa5ee('0x36')]=_[_0xa5ee('0x37')](_0x722c[_0xa5ee('0x36')]);_0x3e3e04[_0xa5ee('0x38')]=_['intersection'](_0x3e3e04[_0xa5ee('0x35')],_0x3e3e04[_0xa5ee('0x36')]);_0x4f7842[_0xa5ee('0x39')]=_[_0xa5ee('0x3a')](_0x3e3e04[_0xa5ee('0x35')],qs[_0xa5ee('0x3b')](_0x722c[_0xa5ee('0x36')][_0xa5ee('0x3b')]));_0x4f7842['attributes']=_0x4f7842[_0xa5ee('0x39')][_0xa5ee('0x3c')]?_0x4f7842[_0xa5ee('0x39')]:_0x3e3e04[_0xa5ee('0x35')];if(!_0x722c[_0xa5ee('0x36')][_0xa5ee('0x3d')](_0xa5ee('0x3e'))){_0x4f7842[_0xa5ee('0x1f')]=qs['limit'](_0x722c[_0xa5ee('0x36')][_0xa5ee('0x1f')]);_0x4f7842[_0xa5ee('0x21')]=qs[_0xa5ee('0x21')](_0x722c['query']['offset']);}_0x4f7842[_0xa5ee('0x3f')]=qs['sort'](_0x722c[_0xa5ee('0x36')][_0xa5ee('0x40')]);_0x4f7842[_0xa5ee('0x41')]=qs[_0xa5ee('0x38')](_[_0xa5ee('0x42')](_0x722c[_0xa5ee('0x36')],_0x3e3e04[_0xa5ee('0x38')]),_0x95753a);if(_0x722c[_0xa5ee('0x36')][_0xa5ee('0x43')]){_0x4f7842[_0xa5ee('0x41')]=_['merge'](_0x4f7842[_0xa5ee('0x41')],{'$or':_[_0xa5ee('0x30')](_0x95753a,function(_0x1a4705){if(_0x1a4705[_0xa5ee('0x33')]!==_0xa5ee('0x44')){var _0xb2a4fa={};_0xb2a4fa[_0x1a4705[_0xa5ee('0x2d')]]={'$like':'%'+_0x722c[_0xa5ee('0x36')][_0xa5ee('0x43')]+'%'};return _0xb2a4fa;}})});}_0x4f7842=_[_0xa5ee('0x45')]({},_0x4f7842,_0x722c['options']);var _0x33654d={'where':_0x4f7842[_0xa5ee('0x41')]};return db[_0xa5ee('0x31')][_0xa5ee('0x20')](_0x33654d)['then'](function(_0x4907d4){_0x2f7433[_0xa5ee('0x20')]=_0x4907d4;if(_0x722c['query'][_0xa5ee('0x46')]){_0x4f7842[_0xa5ee('0x47')]=[{'all':!![]}];}return db[_0xa5ee('0x31')][_0xa5ee('0x48')](_0x4f7842);})[_0xa5ee('0x28')](function(_0x22d739){_0x2f7433['rows']=_0x22d739;return _0x2f7433;})[_0xa5ee('0x28')](respondWithFilteredResult(_0x11907c,_0x4f7842))[_0xa5ee('0x49')](handleError(_0x11907c,null));};exports[_0xa5ee('0x4a')]=function(_0x23571c,_0x53c86a){var _0x54bb96={'raw':!![],'where':{'id':_0x23571c[_0xa5ee('0x4b')]['id']}},_0x3b6e2d={};_0x3b6e2d[_0xa5ee('0x35')]=_[_0xa5ee('0x37')](db[_0xa5ee('0x31')][_0xa5ee('0x32')]);_0x3b6e2d[_0xa5ee('0x36')]=_[_0xa5ee('0x37')](_0x23571c[_0xa5ee('0x36')]);_0x3b6e2d['filters']=_[_0xa5ee('0x3a')](_0x3b6e2d['model'],_0x3b6e2d['query']);_0x54bb96[_0xa5ee('0x39')]=_[_0xa5ee('0x3a')](_0x3b6e2d[_0xa5ee('0x35')],qs[_0xa5ee('0x3b')](_0x23571c[_0xa5ee('0x36')][_0xa5ee('0x3b')]));_0x54bb96[_0xa5ee('0x39')]=_0x54bb96[_0xa5ee('0x39')][_0xa5ee('0x3c')]?_0x54bb96[_0xa5ee('0x39')]:_0x3b6e2d['model'];if(_0x23571c['query'][_0xa5ee('0x46')]){_0x54bb96[_0xa5ee('0x47')]=[{'all':!![]}];}_0x54bb96=_[_0xa5ee('0x45')]({},_0x54bb96,_0x23571c[_0xa5ee('0x4c')]);return db[_0xa5ee('0x31')][_0xa5ee('0x4d')](_0x54bb96)[_0xa5ee('0x28')](handleEntityNotFound(_0x53c86a,null))[_0xa5ee('0x28')](respondWithResult(_0x53c86a,null))[_0xa5ee('0x49')](handleError(_0x53c86a,null));};exports[_0xa5ee('0x4e')]=function(_0x5340b4,_0x59ffa3){return db[_0xa5ee('0x31')][_0xa5ee('0x4e')](_0x5340b4[_0xa5ee('0x4f')],{})[_0xa5ee('0x28')](respondWithResult(_0x59ffa3,0xc9))['catch'](handleError(_0x59ffa3,null));};exports['update']=function(_0x525ca9,_0x467ab6){if(_0x525ca9[_0xa5ee('0x4f')]['id']){delete _0x525ca9['body']['id'];}return db[_0xa5ee('0x31')]['find']({'where':{'id':_0x525ca9['params']['id']}})[_0xa5ee('0x28')](handleEntityNotFound(_0x467ab6,null))[_0xa5ee('0x28')](saveUpdates(_0x525ca9[_0xa5ee('0x4f')],null))[_0xa5ee('0x28')](respondWithResult(_0x467ab6,null))[_0xa5ee('0x49')](handleError(_0x467ab6,null));};exports[_0xa5ee('0x29')]=function(_0x16b7f3,_0x99d2a6){return db[_0xa5ee('0x31')][_0xa5ee('0x4d')]({'where':{'id':_0x16b7f3['params']['id']}})[_0xa5ee('0x28')](handleEntityNotFound(_0x99d2a6,null))[_0xa5ee('0x28')](removeEntity(_0x99d2a6,null))[_0xa5ee('0x49')](handleError(_0x99d2a6,null));};exports['describe']=function(_0x5e2299,_0x390d13){return db[_0xa5ee('0x31')][_0xa5ee('0x50')]()[_0xa5ee('0x28')](respondWithResult(_0x390d13,null))[_0xa5ee('0x49')](handleError(_0x390d13,null));};exports['getUnread']=function(_0x3f61a8,_0x3b3ebe,_0x426dcf){return db[_0xa5ee('0x51')][_0xa5ee('0x20')]({'where':{'ChatGroupId':_0x3f61a8[_0xa5ee('0x4b')]['id'],'ToId':_0x3f61a8[_0xa5ee('0x52')]['id'],'read':![]}})[_0xa5ee('0x28')](function(_0x55949b){return{'id':_['toInteger'](_0x3f61a8['params']['id']),'count':_0x55949b};})['then'](respondWithResult(_0x3b3ebe,null))['catch'](handleError(_0x3b3ebe,null));};exports[_0xa5ee('0x53')]=function(_0x2a7614,_0x1dce9e,_0xfa5668){return db[_0xa5ee('0x31')][_0xa5ee('0x4d')]({'where':{'id':_0x2a7614['params']['id']}})['then'](handleEntityNotFound(_0x1dce9e,null))['then'](function(_0x389a5b){if(_0x389a5b){return _0x389a5b[_0xa5ee('0x53')](_0x2a7614[_0xa5ee('0x4f')][_0xa5ee('0x54')],_[_0xa5ee('0x55')](_0x2a7614[_0xa5ee('0x4f')],[_0xa5ee('0x54'),'id'])||{});}})[_0xa5ee('0x28')](respondWithResult(_0x1dce9e,null))[_0xa5ee('0x49')](handleError(_0x1dce9e,null));};exports[_0xa5ee('0x56')]=function(_0x31f605,_0x5b6ad0,_0x1643d4){var _0x2f8f01={};var _0x291e82={};var _0xe73c8a;var _0x28d05c;return db['ChatGroup'][_0xa5ee('0x57')]({'where':{'id':_0x31f605['params']['id']}})[_0xa5ee('0x28')](handleEntityNotFound(_0x5b6ad0,null))['then'](function(_0x4a2428){if(_0x4a2428){_0xe73c8a=_0x4a2428;_0x291e82[_0xa5ee('0x35')]=_['keys'](db[_0xa5ee('0x58')]['rawAttributes']);_0x291e82[_0xa5ee('0x36')]=_['keys'](_0x31f605['query']);_0x291e82[_0xa5ee('0x38')]=_[_0xa5ee('0x3a')](_0x291e82[_0xa5ee('0x35')],_0x291e82[_0xa5ee('0x36')]);_0x2f8f01['attributes']=_[_0xa5ee('0x3a')](_0x291e82[_0xa5ee('0x35')],qs[_0xa5ee('0x3b')](_0x31f605['query'][_0xa5ee('0x3b')]));_0x2f8f01[_0xa5ee('0x39')]=_0x2f8f01[_0xa5ee('0x39')][_0xa5ee('0x3c')]?_0x2f8f01[_0xa5ee('0x39')]:_0x291e82['model'];_0x2f8f01[_0xa5ee('0x3f')]=qs[_0xa5ee('0x40')](_0x31f605[_0xa5ee('0x36')][_0xa5ee('0x40')]);_0x2f8f01[_0xa5ee('0x41')]=qs[_0xa5ee('0x38')](_[_0xa5ee('0x42')](_0x31f605[_0xa5ee('0x36')],_0x291e82['filters']));if(_0x31f605['query'][_0xa5ee('0x43')]){_0x2f8f01['where']=_[_0xa5ee('0x45')](_0x2f8f01['where'],{'$or':_[_0xa5ee('0x30')](_0x2f8f01[_0xa5ee('0x39')],function(_0x4d796f){var _0x72f77={};_0x72f77[_0x4d796f]={'$like':'%'+_0x31f605[_0xa5ee('0x36')][_0xa5ee('0x43')]+'%'};return _0x72f77;})});}_0x2f8f01=_[_0xa5ee('0x45')]({},_0x2f8f01,_0x31f605[_0xa5ee('0x4c')]);return _0xe73c8a[_0xa5ee('0x56')](_0x2f8f01);}})[_0xa5ee('0x28')](function(_0x561b4f){if(_0x561b4f){_0x28d05c=_0x561b4f[_0xa5ee('0x3c')];if(!_0x31f605[_0xa5ee('0x36')]['hasOwnProperty'](_0xa5ee('0x3e'))){_0x2f8f01['limit']=qs[_0xa5ee('0x1f')](_0x31f605['query']['limit']);_0x2f8f01['offset']=qs[_0xa5ee('0x21')](_0x31f605[_0xa5ee('0x36')][_0xa5ee('0x21')]);}return _0xe73c8a['getMembers'](_0x2f8f01);}})[_0xa5ee('0x28')](function(_0x454d3b){if(_0x454d3b){return _0x454d3b?{'count':_0x28d05c,'rows':_0x454d3b}:null;}})[_0xa5ee('0x28')](respondWithResult(_0x5b6ad0,null))[_0xa5ee('0x49')](handleError(_0x5b6ad0,null));};exports[_0xa5ee('0x59')]=function(_0x48fdee,_0x39b065,_0x19dffc){return db[_0xa5ee('0x31')][_0xa5ee('0x4d')]({'where':{'id':_0x48fdee[_0xa5ee('0x4b')]['id']}})[_0xa5ee('0x28')](handleEntityNotFound(_0x39b065,null))[_0xa5ee('0x28')](function(_0x54b575){if(_0x54b575){return _0x54b575[_0xa5ee('0x59')](_0x48fdee[_0xa5ee('0x36')][_0xa5ee('0x54')]);}})[_0xa5ee('0x28')](respondWithStatusCode(_0x39b065,null))[_0xa5ee('0x49')](handleError(_0x39b065,null));};exports[_0xa5ee('0x5a')]=function(_0x1d0bef,_0x2cb03d,_0x16d605){if(_0x1d0bef[_0xa5ee('0x4f')]['id']){delete _0x1d0bef[_0xa5ee('0x4f')]['id'];}return db['ChatGroup']['find']({'where':{'id':_0x1d0bef[_0xa5ee('0x4b')]['id']}})[_0xa5ee('0x28')](handleEntityNotFound(_0x2cb03d,null))[_0xa5ee('0x28')](function(_0x354fdb){if(_0x354fdb){_0x1d0bef[_0xa5ee('0x4f')][_0xa5ee('0x5b')]=_0x354fdb['id'];return db[_0xa5ee('0x51')][_0xa5ee('0x4e')](_0x1d0bef[_0xa5ee('0x4f')]);}})[_0xa5ee('0x28')](respondWithResult(_0x2cb03d,null))[_0xa5ee('0x49')](handleError(_0x2cb03d,null));};exports['getMessages']=function(_0x14f010,_0x544d77,_0x479e42){var _0x7ee050={};var _0x579465={};var _0x84de6a;var _0x546e36;return db[_0xa5ee('0x31')][_0xa5ee('0x57')]({'where':{'id':_0x14f010['params']['id']}})[_0xa5ee('0x28')](handleEntityNotFound(_0x544d77,null))[_0xa5ee('0x28')](function(_0x258edb){if(_0x258edb){_0x84de6a=_0x258edb;_0x579465[_0xa5ee('0x35')]=_['keys'](db[_0xa5ee('0x51')][_0xa5ee('0x32')]);_0x579465[_0xa5ee('0x36')]=_[_0xa5ee('0x37')](_0x14f010['query']);_0x579465[_0xa5ee('0x38')]=_[_0xa5ee('0x3a')](_0x579465['model'],_0x579465['query']);_0x7ee050[_0xa5ee('0x39')]=_[_0xa5ee('0x3a')](_0x579465['model'],qs[_0xa5ee('0x3b')](_0x14f010[_0xa5ee('0x36')]['fields']));_0x7ee050[_0xa5ee('0x39')]=_0x7ee050[_0xa5ee('0x39')]['length']?_0x7ee050[_0xa5ee('0x39')]:_0x579465[_0xa5ee('0x35')];_0x7ee050['order']=qs['sort'](_0x14f010['query']['sort']);_0x7ee050[_0xa5ee('0x41')]=qs['filters'](_[_0xa5ee('0x42')](_0x14f010[_0xa5ee('0x36')],_0x579465[_0xa5ee('0x38')]));if(_0x14f010[_0xa5ee('0x36')]['filter']){_0x7ee050['where']=_[_0xa5ee('0x45')](_0x7ee050['where'],{'$or':_[_0xa5ee('0x30')](_0x7ee050[_0xa5ee('0x39')],function(_0xb519f8){var _0x4c870c={};_0x4c870c[_0xb519f8]={'$like':'%'+_0x14f010[_0xa5ee('0x36')]['filter']+'%'};return _0x4c870c;})});}if(_0x14f010['query'][_0xa5ee('0x5c')]){var _0x2f4800=_0x14f010[_0xa5ee('0x36')][_0xa5ee('0x5c')]['split'](',');var _0x1966a7={};_0x1966a7[_0x2f4800[0x0]]={'$gte':moment(_0x2f4800[0x1])[_0xa5ee('0x5d')](_0xa5ee('0x5e'))};_0x7ee050[_0xa5ee('0x41')]=_[_0xa5ee('0x45')](_0x7ee050[_0xa5ee('0x41')],_0x1966a7);}_0x7ee050=_[_0xa5ee('0x45')]({},_0x7ee050,_0x14f010[_0xa5ee('0x4c')]);return _0x84de6a[_0xa5ee('0x5f')](_0x7ee050);}})['then'](function(_0x411e5d){if(_0x411e5d){_0x546e36=_0x411e5d['length'];if(!_0x14f010['query'][_0xa5ee('0x3d')](_0xa5ee('0x3e'))){_0x7ee050[_0xa5ee('0x1f')]=qs['limit'](_0x14f010['query'][_0xa5ee('0x1f')]);_0x7ee050[_0xa5ee('0x21')]=qs[_0xa5ee('0x21')](_0x14f010['query'][_0xa5ee('0x21')]);}return _0x84de6a['getMessages'](_0x7ee050);}})[_0xa5ee('0x28')](function(_0x2bd3e0){if(_0x2bd3e0){return _0x2bd3e0?{'count':_0x546e36,'rows':_0x2bd3e0}:null;}})[_0xa5ee('0x28')](respondWithResult(_0x544d77,null))['catch'](handleError(_0x544d77,null));};
\ No newline at end of file
index 7303283..1747bf5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf96=['hook','exports','events','ChatGroup','setMaxListeners','save','update','emit','hasOwnProperty'];(function(_0x59bab9,_0x518fa0){var _0x1fb1ed=function(_0x5b558f){while(--_0x5b558f){_0x59bab9['push'](_0x59bab9['shift']());}};_0x1fb1ed(++_0x518fa0);}(_0xcf96,0xf5));var _0x6cf9=function(_0x12ef39,_0x18d320){_0x12ef39=_0x12ef39-0x0;var _0x47a734=_0xcf96[_0x12ef39];return _0x47a734;};'use strict';var EventEmitter=require(_0x6cf9('0x0'));var ChatGroup=require('../../mysqldb')['db'][_0x6cf9('0x1')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x6cf9('0x2')](0x0);var events={'afterCreate':_0x6cf9('0x3'),'afterUpdate':_0x6cf9('0x4'),'afterDestroy':'remove'};function emitEvent(_0x15481e){return function(_0x1fcd2a,_0x38adf0,_0x26dfc2){ChatGroupEvents['emit'](_0x15481e+':'+_0x1fcd2a['id'],_0x1fcd2a);ChatGroupEvents[_0x6cf9('0x5')](_0x15481e,_0x1fcd2a);_0x26dfc2(null);};}for(var e in events){if(events[_0x6cf9('0x6')](e)){var event=events[e];ChatGroup[_0x6cf9('0x7')](e,emitEvent(event));}}module[_0x6cf9('0x8')]=ChatGroupEvents;
\ No newline at end of file
+var _0x12b6=['events','../../mysqldb','save','remove','emit','hook','exports'];(function(_0x6534a0,_0x475ba5){var _0x2a279a=function(_0x4871e6){while(--_0x4871e6){_0x6534a0['push'](_0x6534a0['shift']());}};_0x2a279a(++_0x475ba5);}(_0x12b6,0x1b9));var _0x612b=function(_0x269aac,_0x426352){_0x269aac=_0x269aac-0x0;var _0x52f530=_0x12b6[_0x269aac];return _0x52f530;};'use strict';var EventEmitter=require(_0x612b('0x0'));var ChatGroup=require(_0x612b('0x1'))['db']['ChatGroup'];var ChatGroupEvents=new EventEmitter();ChatGroupEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x612b('0x2'),'afterUpdate':'update','afterDestroy':_0x612b('0x3')};function emitEvent(_0x39113d){return function(_0x489cb0,_0x317928,_0x1d70a7){ChatGroupEvents['emit'](_0x39113d+':'+_0x489cb0['id'],_0x489cb0);ChatGroupEvents[_0x612b('0x4')](_0x39113d,_0x489cb0);_0x1d70a7(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatGroup[_0x612b('0x5')](e,emitEvent(event));}}module[_0x612b('0x6')]=ChatGroupEvents;
\ No newline at end of file
index 59a9277..c69f08c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x065b=['bluebird','request-promise','path','rimraf','../../config/environment','exports','define','ChatGroup','lodash','util','../../config/logger','api','moment'];(function(_0x436def,_0x8b44dc){var _0x1223b2=function(_0x4abc61){while(--_0x4abc61){_0x436def['push'](_0x436def['shift']());}};_0x1223b2(++_0x8b44dc);}(_0x065b,0x1dc));var _0xb065=function(_0x1f8784,_0x285f48){_0x1f8784=_0x1f8784-0x0;var _0x2a4e3e=_0x065b[_0x1f8784];return _0x2a4e3e;};'use strict';var _=require(_0xb065('0x0'));var util=require(_0xb065('0x1'));var logger=require(_0xb065('0x2'))(_0xb065('0x3'));var moment=require(_0xb065('0x4'));var BPromise=require(_0xb065('0x5'));var rp=require(_0xb065('0x6'));var fs=require('fs');var path=require(_0xb065('0x7'));var rimraf=require(_0xb065('0x8'));var config=require(_0xb065('0x9'));var attributes=require('./chatGroup.attributes');module[_0xb065('0xa')]=function(_0x4ee352,_0x3811c5){return _0x4ee352[_0xb065('0xb')](_0xb065('0xc'),attributes,{'tableName':'chat_groups','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x492f=['define','ChatGroup','chat_groups','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x3ba46e,_0x35da73){var _0x39bdba=function(_0x5e9d2b){while(--_0x5e9d2b){_0x3ba46e['push'](_0x3ba46e['shift']());}};_0x39bdba(++_0x35da73);}(_0x492f,0xb7));var _0xf492=function(_0xb62ac5,_0x2da758){_0xb62ac5=_0xb62ac5-0x0;var _0x1d63ec=_0x492f[_0xb62ac5];return _0x1d63ec;};'use strict';var _=require(_0xf492('0x0'));var util=require('util');var logger=require(_0xf492('0x1'))(_0xf492('0x2'));var moment=require(_0xf492('0x3'));var BPromise=require(_0xf492('0x4'));var rp=require(_0xf492('0x5'));var fs=require('fs');var path=require(_0xf492('0x6'));var rimraf=require(_0xf492('0x7'));var config=require(_0xf492('0x8'));var attributes=require('./chatGroup.attributes');module['exports']=function(_0x3b0691,_0x2aee3f){return _0x3b0691[_0xf492('0x9')](_0xf492('0xa'),attributes,{'tableName':_0xf492('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5581469..3012b97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3379=['bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','defaults','localhost','socket.io-emitter','redis','./chatGroup.socket','register','request','info','ChatGroup,\x20%s,\x20%s','request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util','moment'];(function(_0x1f6553,_0x278aa0){var _0x5206da=function(_0x22510d){while(--_0x22510d){_0x1f6553['push'](_0x1f6553['shift']());}};_0x5206da(++_0x278aa0);}(_0x3379,0x115));var _0x9337=function(_0x5d343d,_0x40789f){_0x5d343d=_0x5d343d-0x0;var _0x46758e=_0x3379[_0x5d343d];return _0x46758e;};'use strict';var _=require(_0x9337('0x0'));var util=require(_0x9337('0x1'));var moment=require(_0x9337('0x2'));var BPromise=require(_0x9337('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9337('0x4'));var db=require(_0x9337('0x5'))['db'];var utils=require(_0x9337('0x6'));var logger=require(_0x9337('0x7'))('rpc');var config=require(_0x9337('0x8'));var jayson=require(_0x9337('0x9'));var client=jayson[_0x9337('0xa')][_0x9337('0xb')]({'port':0x232a});config['redis']=_[_0x9337('0xc')](config['redis'],{'host':_0x9337('0xd'),'port':0x18eb});var socket=require(_0x9337('0xe'))(new Redis(config[_0x9337('0xf')]));require(_0x9337('0x10'))[_0x9337('0x11')](socket);function respondWithRpcPromise(_0x55ea19,_0xd9b084,_0x1630bf){return new BPromise(function(_0xc985d1,_0x9a2dcc){return client[_0x9337('0x12')](_0x55ea19,_0x1630bf)['then'](function(_0x2ee523){logger[_0x9337('0x13')](_0x9337('0x14'),_0xd9b084,_0x9337('0x15'));logger[_0x9337('0x16')](_0x9337('0x17'),_0xd9b084,_0x9337('0x15'),JSON['stringify'](_0x2ee523));if(_0x2ee523['error']){if(_0x2ee523[_0x9337('0x18')][_0x9337('0x19')]===0x1f4){logger[_0x9337('0x18')](_0x9337('0x14'),_0xd9b084,_0x2ee523['error']['message']);return _0x9a2dcc(_0x2ee523[_0x9337('0x18')]['message']);}logger['error'](_0x9337('0x14'),_0xd9b084,_0x2ee523[_0x9337('0x18')][_0x9337('0x1a')]);return _0xc985d1(_0x2ee523['error'][_0x9337('0x1a')]);}else{logger[_0x9337('0x13')]('ChatGroup,\x20%s,\x20%s',_0xd9b084,'request\x20sent');_0xc985d1(_0x2ee523[_0x9337('0x1b')][_0x9337('0x1a')]);}})['catch'](function(_0x1bae86){logger[_0x9337('0x18')]('ChatGroup,\x20%s,\x20%s',_0xd9b084,_0x1bae86);_0x9a2dcc(_0x1bae86);});});}
\ No newline at end of file
+var _0xb833=['catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','./chatGroup.socket','register','request','info','ChatGroup,\x20%s,\x20%s','ChatGroup,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xb833,0x105));var _0x3b83=function(_0x111b47,_0x455ba7){_0x111b47=_0x111b47-0x0;var _0x2c8cf3=_0xb833[_0x111b47];return _0x2c8cf3;};'use strict';var _=require(_0x3b83('0x0'));var util=require(_0x3b83('0x1'));var moment=require(_0x3b83('0x2'));var BPromise=require('bluebird');var rs=require(_0x3b83('0x3'));var fs=require('fs');var Redis=require(_0x3b83('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x3b83('0x5'));var logger=require(_0x3b83('0x6'))(_0x3b83('0x7'));var config=require(_0x3b83('0x8'));var jayson=require(_0x3b83('0x9'));var client=jayson['client'][_0x3b83('0xa')]({'port':0x232a});config[_0x3b83('0xb')]=_['defaults'](config[_0x3b83('0xb')],{'host':_0x3b83('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3b83('0xb')]));require(_0x3b83('0xd'))[_0x3b83('0xe')](socket);function respondWithRpcPromise(_0x8cec17,_0x4a7ce6,_0x371511){return new BPromise(function(_0x10c369,_0x532a3b){return client[_0x3b83('0xf')](_0x8cec17,_0x371511)['then'](function(_0x19aa94){logger[_0x3b83('0x10')](_0x3b83('0x11'),_0x4a7ce6,'request\x20sent');logger['debug'](_0x3b83('0x12'),_0x4a7ce6,_0x3b83('0x13'),JSON[_0x3b83('0x14')](_0x19aa94));if(_0x19aa94[_0x3b83('0x15')]){if(_0x19aa94[_0x3b83('0x15')][_0x3b83('0x16')]===0x1f4){logger[_0x3b83('0x15')]('ChatGroup,\x20%s,\x20%s',_0x4a7ce6,_0x19aa94[_0x3b83('0x15')][_0x3b83('0x17')]);return _0x532a3b(_0x19aa94['error'][_0x3b83('0x17')]);}logger[_0x3b83('0x15')](_0x3b83('0x11'),_0x4a7ce6,_0x19aa94['error'][_0x3b83('0x17')]);return _0x10c369(_0x19aa94[_0x3b83('0x15')][_0x3b83('0x17')]);}else{logger[_0x3b83('0x10')](_0x3b83('0x11'),_0x4a7ce6,_0x3b83('0x13'));_0x10c369(_0x19aa94[_0x3b83('0x18')][_0x3b83('0x17')]);}})[_0x3b83('0x19')](function(_0x14ba00){logger['error']('ChatGroup,\x20%s,\x20%s',_0x4a7ce6,_0x14ba00);_0x532a3b(_0x14ba00);});});}
\ No newline at end of file
index 2b64720..e203c09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25fa=['emit','removeListener','register','length','chatGroup:','./chatGroup.events','save','remove','update'];(function(_0x1c3c6c,_0xb3eb41){var _0xc2dcae=function(_0x1231fb){while(--_0x1231fb){_0x1c3c6c['push'](_0x1c3c6c['shift']());}};_0xc2dcae(++_0xb3eb41);}(_0x25fa,0x152));var _0xa25f=function(_0x142e41,_0x361a58){_0x142e41=_0x142e41-0x0;var _0x488a86=_0x25fa[_0x142e41];return _0x488a86;};'use strict';var ChatGroupEvents=require(_0xa25f('0x0'));var events=[_0xa25f('0x1'),_0xa25f('0x2'),_0xa25f('0x3')];function createListener(_0x37002e,_0x4f6ed8){return function(_0x3d23f5){_0x4f6ed8[_0xa25f('0x4')](_0x37002e,_0x3d23f5);};}function removeListener(_0x20b187,_0x3ea162){return function(){ChatGroupEvents[_0xa25f('0x5')](_0x20b187,_0x3ea162);};}exports[_0xa25f('0x6')]=function(_0x54024e){for(var _0x47a62a=0x0,_0x112986=events[_0xa25f('0x7')];_0x47a62a<_0x112986;_0x47a62a++){var _0x77511f=events[_0x47a62a];var _0xc501aa=createListener(_0xa25f('0x8')+_0x77511f,_0x54024e);ChatGroupEvents['on'](_0x77511f,_0xc501aa);}};
\ No newline at end of file
+var _0xfec9=['removeListener','register','length','./chatGroup.events','save','remove','update','emit'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0xfec9,0xeb));var _0x9fec=function(_0xa2ba12,_0x3430e3){_0xa2ba12=_0xa2ba12-0x0;var _0x3e32d3=_0xfec9[_0xa2ba12];return _0x3e32d3;};'use strict';var ChatGroupEvents=require(_0x9fec('0x0'));var events=[_0x9fec('0x1'),_0x9fec('0x2'),_0x9fec('0x3')];function createListener(_0x51e5e5,_0x148c8f){return function(_0x2ef68c){_0x148c8f[_0x9fec('0x4')](_0x51e5e5,_0x2ef68c);};}function removeListener(_0x1faf0b,_0x1973de){return function(){ChatGroupEvents[_0x9fec('0x5')](_0x1faf0b,_0x1973de);};}exports[_0x9fec('0x6')]=function(_0x41b14e){for(var _0x4f2691=0x0,_0x5488c8=events[_0x9fec('0x7')];_0x4f2691<_0x5488c8;_0x4f2691++){var _0xfabdea=events[_0x4f2691];var _0x5c0eeb=createListener('chatGroup:'+_0xfabdea,_0x41b14e);ChatGroupEvents['on'](_0xfabdea,_0x5c0eeb);}};
\ No newline at end of file
index 9f29a93..e0acd03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x100a=['destroy','removeMembers','exports','multer','util','path','express','fs-extra','../../components/interaction/service','./chatGroup.controller','get','isAuthenticated','/describe','describe','show','/:id/unread','/:id/members','post','create','/:id/messages','addMessage','put','/:id','update','delete'];(function(_0x595dba,_0x5c482d){var _0x5d24b6=function(_0x4ded8d){while(--_0x4ded8d){_0x595dba['push'](_0x595dba['shift']());}};_0x5d24b6(++_0x5c482d);}(_0x100a,0x116));var _0xa100=function(_0xc9fdaa,_0x123fbe){_0xc9fdaa=_0xc9fdaa-0x0;var _0x3c0094=_0x100a[_0xc9fdaa];return _0x3c0094;};'use strict';var multer=require(_0xa100('0x0'));var util=require(_0xa100('0x1'));var path=require(_0xa100('0x2'));var timeout=require('connect-timeout');var express=require(_0xa100('0x3'));var router=express['Router']();var fs_extra=require(_0xa100('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xa100('0x5'));var config=require('../../config/environment');var controller=require(_0xa100('0x6'));router[_0xa100('0x7')]('/',auth[_0xa100('0x8')](),controller['index']);router['get'](_0xa100('0x9'),auth[_0xa100('0x8')](),controller[_0xa100('0xa')]);router[_0xa100('0x7')]('/:id',auth['isAuthenticated'](),controller[_0xa100('0xb')]);router['get'](_0xa100('0xc'),auth[_0xa100('0x8')](),controller['getUnread']);router[_0xa100('0x7')](_0xa100('0xd'),auth[_0xa100('0x8')](),controller['getMembers']);router[_0xa100('0x7')]('/:id/messages',auth[_0xa100('0x8')](),controller['getMessages']);router[_0xa100('0xe')]('/',auth['isAuthenticated'](),controller[_0xa100('0xf')]);router[_0xa100('0xe')](_0xa100('0xd'),auth['isAuthenticated'](),controller['addMembers']);router[_0xa100('0xe')](_0xa100('0x10'),auth[_0xa100('0x8')](),controller[_0xa100('0x11')]);router[_0xa100('0x12')](_0xa100('0x13'),auth[_0xa100('0x8')](),controller[_0xa100('0x14')]);router[_0xa100('0x15')](_0xa100('0x13'),auth[_0xa100('0x8')](),controller[_0xa100('0x16')]);router['delete']('/:id/members',auth[_0xa100('0x8')](),controller[_0xa100('0x17')]);module[_0xa100('0x18')]=router;
\ No newline at end of file
+var _0x2d5d=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatGroup.controller','get','isAuthenticated','index','/describe','describe','show','getUnread','/:id/members','getMembers','/:id/messages','getMessages','post','create','addMembers','addMessage','put','/:id','update','delete','exports','multer','util','connect-timeout','express','Router'];(function(_0x6bb245,_0x5802b8){var _0x2333c8=function(_0xc4869b){while(--_0xc4869b){_0x6bb245['push'](_0x6bb245['shift']());}};_0x2333c8(++_0x5802b8);}(_0x2d5d,0x1db));var _0xd2d5=function(_0x5e5f0f,_0x3a98bd){_0x5e5f0f=_0x5e5f0f-0x0;var _0x4eb83d=_0x2d5d[_0x5e5f0f];return _0x4eb83d;};'use strict';var multer=require(_0xd2d5('0x0'));var util=require(_0xd2d5('0x1'));var path=require('path');var timeout=require(_0xd2d5('0x2'));var express=require(_0xd2d5('0x3'));var router=express[_0xd2d5('0x4')]();var fs_extra=require(_0xd2d5('0x5'));var auth=require(_0xd2d5('0x6'));var interaction=require(_0xd2d5('0x7'));var config=require(_0xd2d5('0x8'));var controller=require(_0xd2d5('0x9'));router[_0xd2d5('0xa')]('/',auth[_0xd2d5('0xb')](),controller[_0xd2d5('0xc')]);router['get'](_0xd2d5('0xd'),auth[_0xd2d5('0xb')](),controller[_0xd2d5('0xe')]);router[_0xd2d5('0xa')]('/:id',auth[_0xd2d5('0xb')](),controller[_0xd2d5('0xf')]);router[_0xd2d5('0xa')]('/:id/unread',auth[_0xd2d5('0xb')](),controller[_0xd2d5('0x10')]);router[_0xd2d5('0xa')](_0xd2d5('0x11'),auth['isAuthenticated'](),controller[_0xd2d5('0x12')]);router[_0xd2d5('0xa')](_0xd2d5('0x13'),auth['isAuthenticated'](),controller[_0xd2d5('0x14')]);router[_0xd2d5('0x15')]('/',auth['isAuthenticated'](),controller[_0xd2d5('0x16')]);router[_0xd2d5('0x15')](_0xd2d5('0x11'),auth[_0xd2d5('0xb')](),controller[_0xd2d5('0x17')]);router[_0xd2d5('0x15')](_0xd2d5('0x13'),auth[_0xd2d5('0xb')](),controller[_0xd2d5('0x18')]);router[_0xd2d5('0x19')](_0xd2d5('0x1a'),auth[_0xd2d5('0xb')](),controller[_0xd2d5('0x1b')]);router[_0xd2d5('0x1c')](_0xd2d5('0x1a'),auth[_0xd2d5('0xb')](),controller['destroy']);router[_0xd2d5('0x1c')](_0xd2d5('0x11'),auth[_0xd2d5('0xb')](),controller['removeMembers']);module[_0xd2d5('0x1d')]=router;
\ No newline at end of file
index c719b66..0e88336 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc29b=['out','sequelize','exports','BOOLEAN','ENUM','star','TEXT','STRING','DATE','long'];(function(_0x57a4f2,_0x29f351){var _0x298f82=function(_0x131d4b){while(--_0x131d4b){_0x57a4f2['push'](_0x57a4f2['shift']());}};_0x298f82(++_0x29f351);}(_0xc29b,0x12d));var _0xbc29=function(_0x1a0c08,_0x525715){_0x1a0c08=_0x1a0c08-0x0;var _0x22a682=_0xc29b[_0x1a0c08];return _0x22a682;};'use strict';var Sequelize=require(_0xbc29('0x0'));module[_0xbc29('0x1')]={'closed':{'type':Sequelize[_0xbc29('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize['INTEGER']},'ratingType':{'type':Sequelize[_0xbc29('0x3')](_0xbc29('0x4'),'thumb'),'defaultValue':_0xbc29('0x4')},'ratingMessage':{'type':Sequelize[_0xbc29('0x5')]},'pathTranscript':{'type':Sequelize[_0xbc29('0x5')]},'mailTranscript':{'type':Sequelize[_0xbc29('0x6')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0xbc29('0x7')]},'disposition':{'type':Sequelize[_0xbc29('0x6')]},'secondDisposition':{'type':Sequelize[_0xbc29('0x6')]},'thirdDisposition':{'type':Sequelize[_0xbc29('0x6')]},'note':{'type':Sequelize[_0xbc29('0x6')]},'browserName':{'type':Sequelize[_0xbc29('0x6')]},'browserVersion':{'type':Sequelize[_0xbc29('0x6')]},'osName':{'type':Sequelize[_0xbc29('0x6')]},'osVersion':{'type':Sequelize[_0xbc29('0x6')]},'deviceModel':{'type':Sequelize[_0xbc29('0x6')]},'deviceVendor':{'type':Sequelize[_0xbc29('0x6')]},'deviceType':{'type':Sequelize[_0xbc29('0x6')]},'referer':{'type':Sequelize[_0xbc29('0x5')]},'customerIp':{'type':Sequelize[_0xbc29('0x6')]},'formData':{'type':Sequelize[_0xbc29('0x5')](_0xbc29('0x8'))},'read1stAt':{'type':Sequelize['DATE']},'lastMsgAt':{'type':Sequelize[_0xbc29('0x7')]},'lastMsgDirection':{'type':Sequelize[_0xbc29('0x3')]('in',_0xbc29('0x9')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0xbc29('0x6')]},'customerPort':{'type':Sequelize[_0xbc29('0x6')]},'vidaooSessionId':{'type':Sequelize[_0xbc29('0x5')]},'autoreplyExecuted':{'type':Sequelize[_0xbc29('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x8cc8=['DATE','long','out','sequelize','exports','BOOLEAN','INTEGER','ENUM','star','thumb','TEXT','STRING'];(function(_0x5d5ebf,_0x498a7c){var _0x1db3e8=function(_0x13f44c){while(--_0x13f44c){_0x5d5ebf['push'](_0x5d5ebf['shift']());}};_0x1db3e8(++_0x498a7c);}(_0x8cc8,0x177));var _0x88cc=function(_0x1688e9,_0x2f3588){_0x1688e9=_0x1688e9-0x0;var _0x5727ac=_0x8cc8[_0x1688e9];return _0x5727ac;};'use strict';var Sequelize=require(_0x88cc('0x0'));module[_0x88cc('0x1')]={'closed':{'type':Sequelize[_0x88cc('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x88cc('0x3')]},'ratingType':{'type':Sequelize[_0x88cc('0x4')](_0x88cc('0x5'),_0x88cc('0x6')),'defaultValue':_0x88cc('0x5')},'ratingMessage':{'type':Sequelize[_0x88cc('0x7')]},'pathTranscript':{'type':Sequelize[_0x88cc('0x7')]},'mailTranscript':{'type':Sequelize[_0x88cc('0x8')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x88cc('0x9')]},'disposition':{'type':Sequelize[_0x88cc('0x8')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x88cc('0x8')]},'browserName':{'type':Sequelize[_0x88cc('0x8')]},'browserVersion':{'type':Sequelize[_0x88cc('0x8')]},'osName':{'type':Sequelize[_0x88cc('0x8')]},'osVersion':{'type':Sequelize['STRING']},'deviceModel':{'type':Sequelize[_0x88cc('0x8')]},'deviceVendor':{'type':Sequelize[_0x88cc('0x8')]},'deviceType':{'type':Sequelize['STRING']},'referer':{'type':Sequelize[_0x88cc('0x7')]},'customerIp':{'type':Sequelize['STRING']},'formData':{'type':Sequelize[_0x88cc('0x7')](_0x88cc('0xa'))},'read1stAt':{'type':Sequelize[_0x88cc('0x9')]},'lastMsgAt':{'type':Sequelize[_0x88cc('0x9')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x88cc('0xb')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x88cc('0x8')]},'customerPort':{'type':Sequelize[_0x88cc('0x8')]},'vidaooSessionId':{'type':Sequelize[_0x88cc('0x7')]},'autoreplyExecuted':{'type':Sequelize[_0x88cc('0x2')],'defaultValue':![]}};
\ No newline at end of file
index a7f1413..9d47c35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','redis','defaults','socket.io-emitter','./chatInteraction.socket','register','jayson/promise','client','http','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','destroy','stack','name','body','contact','agent','interaction','account','Users','map','fullname','TagIds','Tags','split','forEach','push','index','ChatInteraction','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','select','field','color','tools_tags','u.id','u.fullname','ui.ChatInteractionId','from','user_has_chat_interactions','left_join','users','chat_interactions','cm_contacts','o.id\x20=\x20i.UserId','chat_websites','a.id\x20=\x20i.ChatWebsiteId','chat_interaction_has_tags','it.ChatInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','having','`\x20=\x200','`\x20>\x200','Contact','operator','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','value','ContactId','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','$substring','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','find','UserId','compact','isEmpty','ChatWebsiteId','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','contactName','DESC','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','role','user','getChatWebsites','i.ChatWebsiteId\x20IS\x20NULL','i.ChatWebsiteId\x20IN\x20?','sequelize','toString','merge','a.key','Account.key','a.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','Contact.firstName','c.lastName','Contact.lastName','c.email','c.phone','c.mobile','Contact.mobile','c.fax','Owner.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.ChatInteractionId\x20IN\x20?','groupBy','ChatInteractionId','all','rows','show','params','rawAttributes','includeAll','include','options','create','describe','createVidaooSession','findOne','ChatWebsite','vidaooApiKey','vidaooEscalation','vidaooTopic','vidaooMetadata','email','POST','isNull','vidaooNote','follow','Sequelize','ValidationError','Error\x20in\x20Vidaoo\x20configuration','join_url','out','updateAttributes','CmContact','abandon','entity\x20not\x20found','Interaction\x20already\x20assigned','closed','AbandonInteraction','file','originalname','basename','filename','mimetype','attachId','join','root','server/files/attachments/','offline-chat/','download','close','mailTranscript','format','transcript-%s.txt','pathTranscript','ChatMessage','Messages','User','%s%d','agentAlias','System','customer','website_alias','agent_alias','alias','agent_fullname','[%s]\x20%s:\x20%s\x0a','MM/DD/YYYY\x20HH:mm:ss','direction','secret','appendFileSync','MailAccount','MailServerOut','Smtp','service','host','port','secure','authentication','auth','pass','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','omit','getMessages','findAll','getMyMessages','includeAgent','addTags','setTags','emit','chatInteractionTags:save','removeTags','unix','tmp','server','files','attachments','firstName','lastName','Attachment','Owner','get','mkdirSync','Chat','YYYY-MM-DD\x20HH:mm:ss','disposition','browserName','osName','referer','customerIp','customerPort','N.A.','tail','existsSync','createReadStream','pipe','createWriteStream','renderFile','views','downloadInteraction.ejs','.pdf','createPdfFromHTML','log','err','unlinkSync','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x42a0c3,_0x29bac6){var _0x2c0678=function(_0xae2ed){while(--_0xae2ed){_0x42a0c3['push'](_0x42a0c3['shift']());}};_0x2c0678(++_0x29bac6);}(_0xbaf0,0x12a));var _0x0baf=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xbaf0[_0x432682];return _0x463d05;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0baf('0x0'));var zipdir=require(_0x0baf('0x1'));var jsonpatch=require(_0x0baf('0x2'));var rp=require(_0x0baf('0x3'));var moment=require(_0x0baf('0x4'));var BPromise=require(_0x0baf('0x5'));var Mustache=require('mustache');var util=require(_0x0baf('0x6'));var path=require(_0x0baf('0x7'));var sox=require(_0x0baf('0x8'));var csv=require(_0x0baf('0x9'));var ejs=require(_0x0baf('0xa'));var fs=require('fs');var fs_extra=require(_0x0baf('0xb'));var _=require(_0x0baf('0xc'));var squel=require(_0x0baf('0xd'));var crypto=require(_0x0baf('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x0baf('0xf'));var toCsv=require('to-csv');var querystring=require(_0x0baf('0x10'));var Papa=require(_0x0baf('0x11'));var Redis=require(_0x0baf('0x12'));var authService=require(_0x0baf('0x13'));var qs=require(_0x0baf('0x14'));var as=require(_0x0baf('0x15'));var pdf=require(_0x0baf('0x16'));var hardwareService=require(_0x0baf('0x17'));var logger=require(_0x0baf('0x18'))(_0x0baf('0x19'));var utils=require(_0x0baf('0x1a'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x0baf('0x1b'))['db'];config[_0x0baf('0x1c')]=_[_0x0baf('0x1d')](config[_0x0baf('0x1c')],{'host':'localhost','port':0x18eb});var socket=require(_0x0baf('0x1e'))(new Redis(config['redis']));require(_0x0baf('0x1f'))[_0x0baf('0x20')](socket);var jayson=require(_0x0baf('0x21'));var client=jayson[_0x0baf('0x22')][_0x0baf('0x23')]({'port':0x232b});var client9004=jayson[_0x0baf('0x22')]['http']({'port':0x232c});function respondWithRpcPromise(_0x4cd79d,_0x2312c7,_0x38395b,_0x283408){return new BPromise(function(_0x3d83a3,_0x2cf7da){var _0x288a98=_0x283408||client;return _0x288a98['request'](_0x4cd79d,_0x38395b)[_0x0baf('0x24')](function(_0xfbecec){logger[_0x0baf('0x25')](_0x0baf('0x26'),_0x2312c7,_0x0baf('0x27'));logger[_0x0baf('0x28')]('ChatInteraction,\x20%s,\x20%s,\x20%s',_0x2312c7,'request\x20sent',JSON[_0x0baf('0x29')](_0xfbecec));if(_0xfbecec[_0x0baf('0x2a')]){if(_0xfbecec[_0x0baf('0x2a')][_0x0baf('0x2b')]===0x1f4){logger[_0x0baf('0x2a')](_0x0baf('0x26'),_0x2312c7,_0xfbecec[_0x0baf('0x2a')][_0x0baf('0x2c')]);return _0x2cf7da(_0xfbecec[_0x0baf('0x2a')][_0x0baf('0x2c')]);}logger['error'](_0x0baf('0x26'),_0x2312c7,_0xfbecec['error'][_0x0baf('0x2c')]);return _0x3d83a3(_0xfbecec['error']['message']);}else{logger[_0x0baf('0x25')]('ChatInteraction,\x20%s,\x20%s',_0x2312c7,'request\x20sent');_0x3d83a3(_0xfbecec[_0x0baf('0x2d')][_0x0baf('0x2c')]);}})[_0x0baf('0x2e')](function(_0x19d9fd){logger[_0x0baf('0x2a')]('ChatInteraction,\x20%s,\x20%s',_0x2312c7,_0x19d9fd);_0x2cf7da(_0x19d9fd);});});}function respondWithStatusCode(_0x448617,_0x4681c5){_0x4681c5=_0x4681c5||0xcc;return function(_0x1ca35a){if(_0x1ca35a){return _0x448617[_0x0baf('0x2f')](_0x4681c5);}return _0x448617[_0x0baf('0x30')](_0x4681c5)[_0x0baf('0x31')]();};}function respondWithResult(_0x453525,_0x549fd0){_0x549fd0=_0x549fd0||0xc8;return function(_0x1590b4){if(_0x1590b4){return _0x453525[_0x0baf('0x30')](_0x549fd0)[_0x0baf('0x32')](_0x1590b4);}};}function respondWithFilteredResult(_0x265915,_0x55c715){return function(_0x29dbdf){if(_0x29dbdf){var _0x34a58a=typeof _0x55c715['offset']===_0x0baf('0x33')&&typeof _0x55c715[_0x0baf('0x34')]===_0x0baf('0x33');var _0xb4dbb1=_0x29dbdf[_0x0baf('0x35')];var _0x366924=_0x34a58a?0x0:_0x55c715[_0x0baf('0x36')];var _0x57476f=_0x34a58a?_0x29dbdf[_0x0baf('0x35')]:_0x55c715[_0x0baf('0x36')]+_0x55c715[_0x0baf('0x34')];var _0x3ed995;if(_0x57476f>=_0xb4dbb1){_0x57476f=_0xb4dbb1;_0x3ed995=0xc8;}else{_0x3ed995=0xce;}_0x265915[_0x0baf('0x30')](_0x3ed995);return _0x265915[_0x0baf('0x37')](_0x0baf('0x38'),_0x366924+'-'+_0x57476f+'/'+_0xb4dbb1)[_0x0baf('0x32')](_0x29dbdf);}return null;};}function patchUpdates(_0x59431b){return function(_0x3ded64){try{jsonpatch[_0x0baf('0x39')](_0x3ded64,_0x59431b,!![]);}catch(_0x165d14){return BPromise[_0x0baf('0x3a')](_0x165d14);}return _0x3ded64[_0x0baf('0x3b')]();};}function saveUpdates(_0x57a6bb,_0x2fd426){return function(_0x53ae1d){if(_0x53ae1d){return _0x53ae1d[_0x0baf('0x3c')](_0x57a6bb)[_0x0baf('0x24')](function(_0x35e534){return _0x35e534;});}return null;};}function removeEntity(_0x3d65f2,_0x5300a5){return function(_0x1a2b03){if(_0x1a2b03){return _0x1a2b03[_0x0baf('0x3d')]()['then'](function(){_0x3d65f2[_0x0baf('0x30')](0xcc)[_0x0baf('0x31')]();});}};}function handleEntityNotFound(_0x62a2ed,_0xbaa9a7){return function(_0x1f60bd){if(!_0x1f60bd){_0x62a2ed[_0x0baf('0x2f')](0x194);}return _0x1f60bd;};}function handleError(_0xe03d82,_0x675461){_0x675461=_0x675461||0x1f4;return function(_0x4aa6ed){logger[_0x0baf('0x2a')](_0x4aa6ed[_0x0baf('0x3e')]);if(_0x4aa6ed['name']){delete _0x4aa6ed[_0x0baf('0x3f')];}_0xe03d82['status'](_0x675461)['send'](_0x4aa6ed);};}function getMustacheRender(_0x11bc49,_0x81af83){return Mustache['render'](_0x11bc49,_['merge'](_0x81af83[_0x0baf('0x40')],{'contact':_0x81af83[_0x0baf('0x41')],'message':_0x81af83[_0x0baf('0x2c')],'agent':_0x81af83[_0x0baf('0x42')],'interaction':_0x81af83[_0x0baf('0x43')],'account':_0x81af83[_0x0baf('0x44')]}))||'';}function getInteractionUsers(_0x290464,_0x37c038){return new BPromise(function(_0x631f74,_0x36c6d2){try{if(_0x37c038[_0x290464['id']]){_0x290464[_0x0baf('0x45')]=_[_0x0baf('0x46')](_0x37c038[_0x290464['id']],function(_0x354cb1){return{'id':_0x354cb1['id'],'fullname':_0x354cb1[_0x0baf('0x47')]};});}}catch(_0x53d6b7){_0x36c6d2(_0x53d6b7);}_0x631f74(_0x290464);});}function getInteractionTags(_0x3573ce,_0x1435d5){return new BPromise(function(_0x4f1de9,_0x38006a){try{if(_0x3573ce[_0x0baf('0x48')]){_0x3573ce[_0x0baf('0x49')]=[];_0x3573ce[_0x0baf('0x48')][_0x0baf('0x4a')](',')[_0x0baf('0x4b')](function(_0x57b581){_0x3573ce[_0x0baf('0x49')][_0x0baf('0x4c')](_0x1435d5[_0x57b581]);});}delete _0x3573ce['TagIds'];}catch(_0x35d442){_0x38006a(_0x35d442);}_0x4f1de9(_0x3573ce);});}function updateChatInteraction(_0x412e6f,_0x45c6aa,_0x57903e){return new BPromise(function(_0x504031,_0x193fd3){return getInteractionUsers(_0x412e6f,_0x57903e)[_0x0baf('0x24')](function(_0x301412){return getInteractionTags(_0x301412,_0x45c6aa);})[_0x0baf('0x24')](function(_0x2b6d54){_0x504031(_0x2b6d54);})[_0x0baf('0x2e')](function(_0x33da34){_0x193fd3(_0x33da34);});});}exports[_0x0baf('0x4d')]=function(_0xce1bf0,_0x355033){var _0x56270e={},_0x2a2a7c={},_0x2bc755={'count':0x0,'rows':[]};var _0x1daf1d=_[_0x0baf('0x46')](db[_0x0baf('0x4e')]['rawAttributes'],function(_0x1e7364){return{'name':_0x1e7364[_0x0baf('0x4f')],'type':_0x1e7364[_0x0baf('0x50')][_0x0baf('0x51')]};});_0x2a2a7c[_0x0baf('0x52')]=_['map'](_0x1daf1d,_0x0baf('0x3f'));_0x2a2a7c[_0x0baf('0x53')]=_[_0x0baf('0x54')](_0xce1bf0[_0x0baf('0x53')]);_0x2a2a7c[_0x0baf('0x55')]=_[_0x0baf('0x56')](_0x2a2a7c[_0x0baf('0x52')],_0x2a2a7c['query']);_0x56270e[_0x0baf('0x57')]=_[_0x0baf('0x56')](_0x2a2a7c[_0x0baf('0x52')],qs['fields'](_0xce1bf0[_0x0baf('0x53')][_0x0baf('0x58')]));_0x56270e[_0x0baf('0x57')]=_0x56270e[_0x0baf('0x57')][_0x0baf('0x59')]?_0x56270e[_0x0baf('0x57')]:_0x2a2a7c[_0x0baf('0x52')];if(!_0xce1bf0['query'][_0x0baf('0x5a')](_0x0baf('0x5b'))){_0x56270e[_0x0baf('0x34')]=qs[_0x0baf('0x34')](_0xce1bf0[_0x0baf('0x53')][_0x0baf('0x34')]);_0x56270e[_0x0baf('0x36')]=qs[_0x0baf('0x36')](_0xce1bf0[_0x0baf('0x53')][_0x0baf('0x36')]);}_0x56270e[_0x0baf('0x5c')]=qs['sort'](_0xce1bf0['query'][_0x0baf('0x5d')]);_0x56270e[_0x0baf('0x5e')]=qs[_0x0baf('0x55')](_[_0x0baf('0x5f')](_0xce1bf0[_0x0baf('0x53')],_0x2a2a7c[_0x0baf('0x55')]),_0x1daf1d);var _0x3403d5=[];var _0x4b492c=squel[_0x0baf('0x60')]()[_0x0baf('0x61')]('id')[_0x0baf('0x61')](_0x0baf('0x3f'))[_0x0baf('0x61')](_0x0baf('0x62'))['from'](_0x0baf('0x63'));var _0x5f123c=squel[_0x0baf('0x60')]()['field'](_0x0baf('0x64'))['field'](_0x0baf('0x65'))['field'](_0x0baf('0x66'))[_0x0baf('0x67')](_0x0baf('0x68'),'ui')[_0x0baf('0x69')](_0x0baf('0x6a'),'u','u.id\x20=\x20ui.UserId');var _0x21f179=squel[_0x0baf('0x60')]()[_0x0baf('0x67')](_0x0baf('0x6b'),'i')[_0x0baf('0x69')](_0x0baf('0x6c'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x0baf('0x69')](_0x0baf('0x6a'),'o',_0x0baf('0x6d'))[_0x0baf('0x69')](_0x0baf('0x6e'),'a',_0x0baf('0x6f'))[_0x0baf('0x69')]('chat_messages','me','me.ChatInteractionId\x20=\x20i.id')[_0x0baf('0x69')](_0x0baf('0x70'),'it',_0x0baf('0x71'))[_0x0baf('0x69')](_0x0baf('0x63'),'t',_0x0baf('0x72'));var _0xaa4293=squel[_0x0baf('0x73')]();var _0x3d9a32=[];var _0x585969=squel[_0x0baf('0x73')]();var _0x268be8;if(_0xce1bf0[_0x0baf('0x53')][_0x0baf('0x74')]){_0x268be8=as[_0x0baf('0x75')](_0xce1bf0[_0x0baf('0x53')][_0x0baf('0x74')]);var _0x51d75f=_0x268be8[_0x0baf('0x76')];for(var _0x27f580=0x0;_0x27f580<_0x268be8[_0x0baf('0x77')][_0x0baf('0x59')];_0x27f580++){var _0x1c7d88=_0x268be8[_0x0baf('0x77')][_0x27f580];var _0x14e6d0='i';var _0x12543e=_['find'](_0x1daf1d,[_0x0baf('0x3f'),_0x1c7d88['field']]);if(!_0x12543e){switch(_0x1c7d88[_0x0baf('0x61')]){case'unreadMessages':if(_0x1c7d88['value']==0x1){_0x21f179[_0x0baf('0x78')]('`'+_0x1c7d88['field']+_0x0baf('0x79'));}else{_0x21f179[_0x0baf('0x78')]('`'+_0x1c7d88['field']+_0x0baf('0x7a'));}break;case _0x0baf('0x7b'):if(_0x1c7d88[_0x0baf('0x7c')]==='$substring'){if(_0x1c7d88['value'][_0x0baf('0x4a')]('\x20')[_0x0baf('0x59')]>0x1){_0xaa4293[_0x51d75f](_0x0baf('0x7d'),qs[_0x0baf('0x7e')](_0x1c7d88[_0x0baf('0x7f')]),null);}else{var _0x588b88='%'+_0x1c7d88[_0x0baf('0x7f')]+'%';_0xaa4293[_0x51d75f]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x588b88,_0x588b88,_0x588b88);}}else{_0x12543e=_['find'](_0x1daf1d,['name',_0x0baf('0x80')]);_0x1c7d88['field']='ContactId';_0xf45ec3=as[_0x0baf('0x81')](_0x14e6d0,_0x12543e[_0x0baf('0x50')],_0x1c7d88);_0xaa4293[_0x51d75f](_0xf45ec3[_0x0baf('0x82')],_0xf45ec3[_0x0baf('0x7f')][_0x0baf('0x83')],_0xf45ec3[_0x0baf('0x7f')]['end']);}break;case _0x0baf('0x84'):var _0x1a0a67=_0x1c7d88[_0x0baf('0x7f')][_0x0baf('0x4a')](',')[_0x0baf('0x46')](function(_0x1273f4){return Number(_0x1273f4);});_0x1a0a67['forEach'](function(_0x42e8ad){_0x585969['or'](_0x0baf('0x85'),'%,'+_0x42e8ad+',%');});_0x3d9a32=_[_0x0baf('0x86')](_0x3d9a32,_0x1a0a67);break;case'User':if(_0x1c7d88[_0x0baf('0x7c')]===_0x0baf('0x87')){_0xaa4293[_0x51d75f](_0x0baf('0x88'),'%'+_0x1c7d88[_0x0baf('0x7f')]+'%',null);}else{_0x12543e=_[_0x0baf('0x89')](_0x1daf1d,[_0x0baf('0x3f'),_0x0baf('0x8a')]);_0x1c7d88['field']='UserId';_0xf45ec3=as['buildExpression'](_0x14e6d0,_0x12543e[_0x0baf('0x50')],_0x1c7d88);_0xaa4293[_0x51d75f](_0xf45ec3[_0x0baf('0x82')],_0xf45ec3[_0x0baf('0x7f')][_0x0baf('0x83')],_0xf45ec3[_0x0baf('0x7f')][_0x0baf('0x31')]);}break;case'body':_0xf45ec3=as['buildExpression']('me',null,_0x1c7d88);_0xaa4293[_0x51d75f](_0xf45ec3[_0x0baf('0x82')],_0xf45ec3['value'][_0x0baf('0x83')],_0xf45ec3[_0x0baf('0x7f')]['end']);break;}}else{var _0xf45ec3=as[_0x0baf('0x81')](_0x14e6d0,_0x12543e[_0x0baf('0x50')],_0x1c7d88);_0xaa4293[_0x51d75f](_0xf45ec3[_0x0baf('0x82')],_0xf45ec3[_0x0baf('0x7f')][_0x0baf('0x83')],_0xf45ec3[_0x0baf('0x7f')][_0x0baf('0x31')]);}}}else{var _0xfcc697=_(_0xce1bf0['query'])['keys']()['map'](function(_0x493784){return _['some'](_0x1daf1d,[_0x0baf('0x3f'),_0x493784])?_0x493784:undefined;})[_0x0baf('0x8b')]()[_0x0baf('0x7f')]();if(!_[_0x0baf('0x8c')](_0xfcc697)){_0xfcc697['forEach'](function(_0x1be7f2){if(_0x1be7f2===_0x0baf('0x8d')){_0x21f179['where']('i.ChatWebsiteId\x20IN\x20?',[][_0x0baf('0x8e')](_0xce1bf0[_0x0baf('0x53')][_0x1be7f2]));}else if(_0x1be7f2===_0x0baf('0x8f')){var _0x442e5f=JSON[_0x0baf('0x90')](_0xce1bf0[_0x0baf('0x53')][_0x1be7f2])[_0x0baf('0x91')];var _0x399f40=JSON['parse'](_0xce1bf0[_0x0baf('0x53')][_0x1be7f2])[_0x0baf('0x92')];_0x21f179['where'](_0x0baf('0x93'),_0x442e5f,_0x399f40);}else{if(_0xce1bf0[_0x0baf('0x53')][_0x1be7f2]==='null'){_0x21f179[_0x0baf('0x5e')]('i.'+_0x1be7f2+_0x0baf('0x94'));}else{_0x21f179[_0x0baf('0x5e')]('i.'+_0x1be7f2+_0x0baf('0x95'),_0xce1bf0[_0x0baf('0x53')][_0x1be7f2]);}}});}if(_0xce1bf0['query']['read']){if(_0xce1bf0[_0x0baf('0x53')][_0x0baf('0x96')]==0x1){_0x21f179['having'](_0x0baf('0x97'));}else{_0x21f179[_0x0baf('0x78')](_0x0baf('0x98'));}}if(_0xce1bf0['query'][_0x0baf('0x99')]){_0x3d9a32=_[_0x0baf('0x9a')](_0xce1bf0[_0x0baf('0x53')]['tag'])?_0xce1bf0[_0x0baf('0x53')]['tag']:new Array(_0xce1bf0[_0x0baf('0x53')][_0x0baf('0x99')]);_0x3d9a32[_0x0baf('0x4b')](function(_0x2f009f){_0x585969['or'](_0x0baf('0x85'),'%,'+_0x2f009f+',%');});}if(_0xce1bf0['query'][_0x0baf('0x9b')]){var _0x57f33c=_0xce1bf0['query'][_0x0baf('0x9b')][_0x0baf('0x9c')]('\x5c','\x5c\x5c')[_0x0baf('0x9c')](/'/g,'\x27\x27');if(qs[_0x0baf('0x9d')](_0x57f33c)){_0xaa4293['or'](_0x0baf('0x9e'),_0x57f33c+'%');}else{_0xaa4293['or'](_0x0baf('0x9f'),qs[_0x0baf('0x7e')](_0x57f33c))['or'](_0x0baf('0xa0'),_0x57f33c+'%');}}}_0x21f179[_0x0baf('0x5e')](_0xaa4293);_0x21f179[_0x0baf('0xa1')](_0x0baf('0xa2'));var _0x2c2f09={'type':db['Sequelize']['QueryTypes'][_0x0baf('0xa3')],'raw':!![]};var _0x322a09=_0x21f179[_0x0baf('0xa4')]();_0x322a09['field']('i.id');_0x322a09[_0x0baf('0x61')](_0x0baf('0xa5'),_0x0baf('0xa6'));if(_0x56270e[_0x0baf('0x5c')]){_0x56270e[_0x0baf('0x5c')][_0x0baf('0x4b')](function(_0x191d35){var _0xa2d315=_0x191d35[0x0]===_0x0baf('0xa7')?_0x191d35[0x0]:'i.'+_0x191d35[0x0];_0x21f179['order'](_0xa2d315,_0x191d35[0x1]===_0x0baf('0xa8')?![]:!![]);});}if(!_[_0x0baf('0x8c')](_0x3d9a32)){_0x21f179[_0x0baf('0x78')](_0x585969);_0x322a09[_0x0baf('0x5e')]('t.id\x20IN\x20?',_0x3d9a32);}BPromise['resolve']()['then'](function(){if(!_0x268be8){if(_0xce1bf0[_0x0baf('0x53')][_0x0baf('0x8d')])return;_0x322a09['where']('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');_0x21f179[_0x0baf('0x5e')](_0x0baf('0xa9'));return;}if(_0xce1bf0['user'][_0x0baf('0xaa')]!==_0x0baf('0x42'))return;return _0xce1bf0[_0x0baf('0xab')][_0x0baf('0xac')]({'attributes':['id'],'raw':!![]})[_0x0baf('0x24')](function(_0x25081e){if(_[_0x0baf('0x8c')](_0x25081e)){_0x322a09[_0x0baf('0x5e')](_0x0baf('0xad'));_0x21f179[_0x0baf('0x5e')](_0x0baf('0xad'));}else{_0x322a09[_0x0baf('0x5e')]('i.ChatWebsiteId\x20IN\x20?',_[_0x0baf('0x46')](_0x25081e,'id'));_0x21f179[_0x0baf('0x5e')](_0x0baf('0xae'),_[_0x0baf('0x46')](_0x25081e,'id'));}});})[_0x0baf('0x24')](function(){if(_0xce1bf0[_0x0baf('0xab')]['role']===_0x0baf('0x42')&&!_0x268be8&&!_0xce1bf0[_0x0baf('0x53')][_0x0baf('0x8d')])return[];return db[_0x0baf('0xaf')][_0x0baf('0x53')](_0x322a09['toString'](),_0x2c2f09);})[_0x0baf('0x24')](function(_0x30eac8){_0x2bc755[_0x0baf('0x35')]=_0x30eac8[_0x0baf('0x59')];if(_0x2bc755[_0x0baf('0x35')]===0x0)return[];return db['sequelize']['query'](_0x4b492c[_0x0baf('0xb0')](),_0x2c2f09)['then'](function(_0x477cd5){_0x3403d5=_['keyBy'](_0x477cd5,'id');_0x2c2f09=_[_0x0baf('0xb1')](_0x2c2f09,{'model':db[_0x0baf('0x4e')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0xce1bf0[_0x0baf('0x53')][_0x0baf('0x58')]){_0x56270e['attributes'][_0x0baf('0x4b')](function(_0x106ffa){_0x21f179[_0x0baf('0x61')]('i.'+_0x106ffa);});}else{_0x21f179['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');_0x21f179['field'](_0x0baf('0xb2'),_0x0baf('0xb3'));_0x21f179[_0x0baf('0x61')](_0x0baf('0xb4'),'Account.mandatoryDisposition');_0x21f179[_0x0baf('0x61')](_0x0baf('0xb5'),_0x0baf('0xa7'));_0x21f179['field'](_0x0baf('0xb6'));_0x21f179[_0x0baf('0x61')]('c.firstName',_0x0baf('0xb7'));_0x21f179['field'](_0x0baf('0xb8'),_0x0baf('0xb9'));_0x21f179[_0x0baf('0x61')](_0x0baf('0xba'),'Contact.email');_0x21f179['field'](_0x0baf('0xbb'),'Contact.phone');_0x21f179[_0x0baf('0x61')](_0x0baf('0xbc'),_0x0baf('0xbd'));_0x21f179[_0x0baf('0x61')](_0x0baf('0xbe'),'Contact.fax');_0x21f179[_0x0baf('0x61')]('o.fullname',_0x0baf('0xbf'));_0x21f179['field'](_0x0baf('0xc0'),'Owner.internal');_0x21f179[_0x0baf('0x61')](_0x0baf('0xc1'),_0x0baf('0x48'));}if(_0x56270e['limit'])_0x21f179['limit'](_0x56270e[_0x0baf('0x34')]);if(_0x56270e[_0x0baf('0x36')])_0x21f179[_0x0baf('0x36')](_0x56270e[_0x0baf('0x36')]);return db[_0x0baf('0xaf')][_0x0baf('0x53')](_0x21f179['toString'](),_0x2c2f09);})[_0x0baf('0x24')](function(_0x5ee37f){if(_0x5ee37f[_0x0baf('0x59')]>0x0)_0x5f123c['where'](_0x0baf('0xc2'),_[_0x0baf('0x46')](_0x5ee37f,'id'));return db[_0x0baf('0xaf')]['query'](_0x5f123c[_0x0baf('0xb0')](),_0x2c2f09)[_0x0baf('0x24')](function(_0x4879b4){var _0x544498=_[_0x0baf('0xc3')](_0x4879b4,_0x0baf('0xc4'));var _0x20dd04=[];_0x5ee37f[_0x0baf('0x4b')](function(_0x4823a3){_0x20dd04['push'](updateChatInteraction(_0x4823a3,_0x3403d5,_0x544498));});return BPromise[_0x0baf('0xc5')](_0x20dd04);});});})[_0x0baf('0x24')](function(_0x116d52){_0x2bc755[_0x0baf('0xc6')]=_0x116d52;return _0x2bc755;})[_0x0baf('0x24')](respondWithFilteredResult(_0x355033,_0x56270e))[_0x0baf('0x2e')](handleError(_0x355033,null));};exports[_0x0baf('0xc7')]=function(_0xe0b67c,_0x205de6){var _0x2369f0={'raw':![],'where':{'id':_0xe0b67c[_0x0baf('0xc8')]['id']}},_0x58f95c={};_0x58f95c['model']=_[_0x0baf('0x54')](db[_0x0baf('0x4e')][_0x0baf('0xc9')]);_0x58f95c[_0x0baf('0x53')]=_['keys'](_0xe0b67c[_0x0baf('0x53')]);_0x58f95c[_0x0baf('0x55')]=_[_0x0baf('0x56')](_0x58f95c[_0x0baf('0x52')],_0x58f95c[_0x0baf('0x53')]);_0x2369f0[_0x0baf('0x57')]=_[_0x0baf('0x56')](_0x58f95c[_0x0baf('0x52')],qs[_0x0baf('0x58')](_0xe0b67c['query'][_0x0baf('0x58')]));_0x2369f0[_0x0baf('0x57')]=_0x2369f0['attributes'][_0x0baf('0x59')]?_0x2369f0[_0x0baf('0x57')]:_0x58f95c[_0x0baf('0x52')];if(_0xe0b67c[_0x0baf('0x53')][_0x0baf('0xca')]){_0x2369f0[_0x0baf('0xcb')]=[{'all':!![]}];}_0x2369f0=_[_0x0baf('0xb1')]({},_0x2369f0,_0xe0b67c[_0x0baf('0xcc')]);return db[_0x0baf('0x4e')]['find'](_0x2369f0)[_0x0baf('0x24')](handleEntityNotFound(_0x205de6,null))[_0x0baf('0x24')](respondWithResult(_0x205de6,null))[_0x0baf('0x2e')](handleError(_0x205de6,null));};exports[_0x0baf('0xcd')]=function(_0x4328d5,_0x270d69){return db['ChatInteraction'][_0x0baf('0xcd')](_0x4328d5[_0x0baf('0x40')],{})[_0x0baf('0x24')](respondWithResult(_0x270d69,0xc9))['catch'](handleError(_0x270d69,null));};exports['update']=function(_0x5adbd9,_0x1adb84){if(_0x5adbd9[_0x0baf('0x40')]['id']){delete _0x5adbd9['body']['id'];}return db[_0x0baf('0x4e')]['find']({'where':{'id':_0x5adbd9[_0x0baf('0xc8')]['id']}})['then'](handleEntityNotFound(_0x1adb84,null))[_0x0baf('0x24')](saveUpdates(_0x5adbd9[_0x0baf('0x40')],null))['then'](respondWithResult(_0x1adb84,null))[_0x0baf('0x2e')](handleError(_0x1adb84,null));};exports[_0x0baf('0x3d')]=function(_0x25d25e,_0x4494de){return db[_0x0baf('0x4e')][_0x0baf('0x89')]({'where':{'id':_0x25d25e[_0x0baf('0xc8')]['id']}})['then'](handleEntityNotFound(_0x4494de,null))[_0x0baf('0x24')](removeEntity(_0x4494de,null))[_0x0baf('0x2e')](handleError(_0x4494de,null));};exports[_0x0baf('0xce')]=function(_0x2e1629,_0x275cc4){return db[_0x0baf('0x4e')][_0x0baf('0xce')]()[_0x0baf('0x24')](respondWithResult(_0x275cc4,null))[_0x0baf('0x2e')](handleError(_0x275cc4,null));};exports[_0x0baf('0xcf')]=function(_0x308b3f,_0xae8bc2){var _0x1390cd=_0x308b3f[_0x0baf('0xc8')]['id'];var _0x59dd6c;var _0x57b64b;var _0x1cd215;return db[_0x0baf('0x4e')][_0x0baf('0xd0')]({'where':{'id':_0x1390cd}})[_0x0baf('0x24')](function(_0x52e98a){_0x59dd6c=_0x52e98a;return db[_0x0baf('0xd1')][_0x0baf('0xd0')]({'where':{'id':_0x52e98a[_0x0baf('0x8d')]},'attributes':['id',_0x0baf('0xd2'),_0x0baf('0xd3'),_0x0baf('0xd4'),'vidaooNote',_0x0baf('0xd5')],'raw':!![]});})[_0x0baf('0x24')](function(_0x347c39){if(_0x347c39&&_0x347c39['vidaooApiKey']&&_0x347c39[_0x0baf('0xd3')]){_0x57b64b=_0x347c39;var _0x106c6e={'interaction':{'id':_0x1390cd},'agent':{'id':_0x308b3f[_0x0baf('0xab')]['id'],'name':_0x308b3f['user']['name'],'fullname':_0x308b3f['user'][_0x0baf('0x47')],'email':_0x308b3f['user'][_0x0baf('0xd6')]},'contact':_0x308b3f[_0x0baf('0x40')]['contact'],'account':_0x308b3f[_0x0baf('0x40')]['account']};var _0x5737b0={'rejectUnauthorized':![],'method':_0x0baf('0xd7'),'url':'https://api-vidaoo.xcally.com/api/v1/meetings','headers':{'X-APIKEY':_0x347c39[_0x0baf('0xd2')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x308b3f['user']['email']],'buttons':null,'topic':_0x57b64b['vidaooTopic'],'note':_[_0x0baf('0xd8')](_0x57b64b[_0x0baf('0xd9')])?null:getMustacheRender(_0x57b64b[_0x0baf('0xd9')],_0x106c6e),'metadata':null},'redirect':_0x0baf('0xda'),'json':!![]};try{if(!_[_0x0baf('0xd8')](_0x57b64b[_0x0baf('0xd5')])){var _0x20582a=getMustacheRender(_0x57b64b['vidaooMetadata'],_0x106c6e);var _0x36cd08=JSON[_0x0baf('0x90')](_0x20582a);_0x5737b0[_0x0baf('0x40')]['metadata']=_0x36cd08;}}catch(_0x24672f){throw new db[(_0x0baf('0xdb'))][(_0x0baf('0xdc'))]('Error\x20in\x20conversion\x20vidaooMetadata');}return rp(_0x5737b0);}else{throw new db[(_0x0baf('0xdb'))]['ValidationError'](_0x0baf('0xdd'));}})[_0x0baf('0x24')](function(_0x57846e){_0x1cd215=_0x57846e;if(_0x1cd215['id']){var _0xd4ed40={'body':_0x1cd215[_0x0baf('0xde')],'ChatWebsiteId':_0x57b64b['id'],'ChatInteractionId':_0x59dd6c['id'],'direction':_0x0baf('0xdf'),'UserId':_0x308b3f[_0x0baf('0xab')]['id']};return db['ChatMessage'][_0x0baf('0xcd')](_0xd4ed40,{});}else{throw new db[(_0x0baf('0xdb'))]['ValidationError']('Unable\x20to\x20create\x20Vidaoo\x20session');}})[_0x0baf('0x24')](function(){return _0x59dd6c[_0x0baf('0xe0')]({'vidaooSessionId':_0x1cd215['id']});})[_0x0baf('0x24')](respondWithResult(_0xae8bc2,null))[_0x0baf('0x2e')](handleError(_0xae8bc2,null));};exports['customUpdate']=function(_0x5571d4,_0x16579f){if(_0x5571d4[_0x0baf('0x40')]['id']){delete _0x5571d4[_0x0baf('0x40')]['id'];}return db[_0x0baf('0x4e')][_0x0baf('0x89')]({'where':{'id':_0x5571d4['params']['id']},'include':[{'model':db[_0x0baf('0xe1')],'as':_0x0baf('0x7b')}]})['then'](handleEntityNotFound(_0x16579f,null))[_0x0baf('0x24')](saveUpdates(_0x5571d4[_0x0baf('0x40')],null))['then'](respondWithResult(_0x16579f,null))[_0x0baf('0x2e')](handleError(_0x16579f,null));};exports[_0x0baf('0xe2')]=function(_0x19457c,_0x1f0b00,_0x2484d4){if(_0x19457c[_0x0baf('0x40')]['id']){delete _0x19457c[_0x0baf('0x40')]['id'];}return db[_0x0baf('0x4e')]['find']({'where':{'id':_0x19457c[_0x0baf('0xc8')]['id']}})[_0x0baf('0x24')](function(_0x226edd){if(!_0x226edd){logger[_0x0baf('0x2a')]('abandonInteraction,\x20%s,\x20%s,\x20%s',_0x0baf('0xe2'),0x194,_0x0baf('0xe3'));_0x1f0b00['sendStatus'](0x194);}else{if(_0x226edd[_0x0baf('0x8a')]){throw new db[(_0x0baf('0xdb'))][(_0x0baf('0xdc'))](_0x0baf('0xe4'));}}return _0x226edd;})['then'](function(_0x3ca1a6){if(_0x3ca1a6){return _0x3ca1a6[_0x0baf('0x3c')]({'closed':_0x19457c[_0x0baf('0x40')][_0x0baf('0xe5')],'disposition':_0x19457c[_0x0baf('0x40')]['disposition']})[_0x0baf('0x24')](function(_0xc5ec1a){return _0xc5ec1a;});}})[_0x0baf('0x24')](function(_0x5d33b4){return respondWithRpcPromise(_0x0baf('0xe6'),_0x0baf('0xe2'),_0x19457c[_0x0baf('0x40')],client9004);})[_0x0baf('0x24')](respondWithResult(_0x1f0b00,null))[_0x0baf('0x2e')](handleError(_0x1f0b00,null));};exports['attachmentUpload']=function(_0x553084,_0x19898e,_0x315ada){_0x553084[_0x0baf('0x40')]['name']=_0x553084[_0x0baf('0xe7')][_0x0baf('0xe8')];_0x553084[_0x0baf('0x40')][_0x0baf('0xe9')]=_0x553084[_0x0baf('0xe7')][_0x0baf('0xea')];_0x553084[_0x0baf('0x40')][_0x0baf('0x50')]=_0x553084[_0x0baf('0xe7')][_0x0baf('0xeb')];return db['Attachment'][_0x0baf('0xcd')](_0x553084[_0x0baf('0x40')])[_0x0baf('0x24')](respondWithResult(_0x19898e,0xc9))[_0x0baf('0x2e')](handleError(_0x19898e,null));};exports['attachmentDownload']=function(_0x413d0d,_0x3d7667,_0x386928){return db['ChatInteraction'][_0x0baf('0xd0')]({'where':{'id':_0x413d0d[_0x0baf('0xc8')]['id']},'raw':!![]})[_0x0baf('0x24')](handleEntityNotFound(_0x3d7667,null))[_0x0baf('0x24')](function(_0x1e4bf1){if(_0x1e4bf1){if(_0x1e4bf1['closed']){return _0x3d7667[_0x0baf('0x30')](0x193)[_0x0baf('0x32')]({'status':0x193,'message':'Unauthorized'});}return db['Attachment'][_0x0baf('0xd0')]({'where':{'id':_0x413d0d[_0x0baf('0x53')][_0x0baf('0xec')]},'raw':!![]})[_0x0baf('0x24')](handleEntityNotFound(_0x3d7667,null));}})[_0x0baf('0x24')](function(_0xb22125){if(_0xb22125){var _0x37c83a=_0xb22125['ChatOfflineMessageId']!==null;var _0x5deb7b=path[_0x0baf('0xed')](config[_0x0baf('0xee')],_0x0baf('0xef'));if(_0x37c83a){_0x5deb7b=path['join'](_0x5deb7b,_0x0baf('0xf0'));}var _0x3a6bf8=path['join'](_0x5deb7b,_0xb22125[_0x0baf('0xe9')]);return _0x3d7667[_0x0baf('0xf1')](_0x3a6bf8);}})['catch'](handleError(_0x3d7667,null));};exports[_0x0baf('0xf2')]=function(_0x9d6974,_0x939365){var _0x4d6ac4=null;var _0x1d86c9=null;var _0x95fe84=null;var _0x2a7138=null;if(_0x9d6974[_0x0baf('0x40')]['id']){delete _0x9d6974[_0x0baf('0x40')]['id'];}if(_0x9d6974[_0x0baf('0x40')][_0x0baf('0xf3')]){_0x2a7138=path['join'](config[_0x0baf('0xee')],'server/files/chat/upload/',util[_0x0baf('0xf4')](_0x0baf('0xf5'),Date['now']()));_0x9d6974['body'][_0x0baf('0xf6')]=_0x2a7138;}return db[_0x0baf('0x4e')][_0x0baf('0x89')]({'where':{'id':_0x9d6974['params']['id']},'include':[{'model':db[_0x0baf('0xf7')],'as':_0x0baf('0xf8'),'include':[{'model':db[_0x0baf('0xf9')],'as':_0x0baf('0xf9')}]}]})[_0x0baf('0x24')](handleEntityNotFound(_0x939365,null))[_0x0baf('0x24')](saveUpdates(_0x9d6974[_0x0baf('0x40')],null))[_0x0baf('0x24')](function(_0x5f3691){if(_0x5f3691){_0x4d6ac4=_0x5f3691;return db['ChatWebsite'][_0x0baf('0x89')]({'where':{'id':_0x4d6ac4[_0x0baf('0x8d')]}});}})['then'](function(_0x210047){if(_0x210047){_0x95fe84=_0x210047;return db[_0x0baf('0xe1')][_0x0baf('0x89')]({'where':{'id':_0x4d6ac4[_0x0baf('0x80')]}});}})[_0x0baf('0x24')](function(_0x8806f9){if(_0x8806f9){_0x1d86c9=_0x8806f9;if(_0x2a7138){var _0x1cb69a=null;for(var _0x4bc31f=0x1;_0x4bc31f<_0x4d6ac4[_0x0baf('0xf8')]['length'];++_0x4bc31f){_0x1cb69a=_0x4d6ac4[_0x0baf('0xf8')][_0x4bc31f];var _0x32abf2=_0x1cb69a['UserId']?util['format'](_0x0baf('0xfa'),_0x95fe84[_0x0baf('0xfb')],_0x1cb69a[_0x0baf('0x8a')]):_0x0baf('0xfc');var _0x4759d5=_0x9d6974[_0x0baf('0x40')][_0x0baf('0xfd')]||util['format']('%s%d','Visitor',_0x1cb69a[_0x0baf('0x80')]);switch(_0x95fe84['agentIdentifier']){case _0x0baf('0xfe'):_0x32abf2=_0x1cb69a[_0x0baf('0x8a')]?util['format']('%s%d',_0x95fe84[_0x0baf('0xfb')],_0x1cb69a[_0x0baf('0x8a')]):_0x0baf('0xfc');break;case _0x0baf('0xff'):_0x32abf2=_0x1cb69a[_0x0baf('0x8a')]?_0x1cb69a['User'][_0x0baf('0x100')]||_0x1cb69a[_0x0baf('0xf9')][_0x0baf('0x47')]:_0x0baf('0xfc');break;case _0x0baf('0x101'):_0x32abf2=_0x1cb69a[_0x0baf('0x8a')]?_0x1cb69a['User'][_0x0baf('0x47')]:_0x0baf('0xfc');break;default:_0x32abf2=_0x1cb69a[_0x0baf('0x8a')]?util['format'](_0x0baf('0xfa'),_0x95fe84[_0x0baf('0xfb')],_0x1cb69a['UserId']):_0x0baf('0xfc');}var _0xe93008=util[_0x0baf('0xf4')](_0x0baf('0x102'),moment(_0x1cb69a['createdAt'])['format'](_0x0baf('0x103')),_0x1cb69a[_0x0baf('0x104')]==='in'?_0x4759d5:_0x32abf2,_0x1cb69a['body']);if(!_0x1cb69a[_0x0baf('0x105')]){fs[_0x0baf('0x106')](_0x2a7138,_0xe93008);}}return db[_0x0baf('0x107')][_0x0baf('0xd0')]({'where':{'service':!![]},'include':[{'model':db[_0x0baf('0x108')],'as':'Smtp','raw':!![]}]});}}})[_0x0baf('0x24')](function(_0x1fe362){if(_0x1fe362&&_0x1fe362[_0x0baf('0x109')]&&_0x9d6974[_0x0baf('0x40')]){var _0x51287e={'tls':{'rejectUnauthorized':![]}};if(_0x1fe362[_0x0baf('0x109')]['service']){_0x51287e[_0x0baf('0x10a')]=_0x1fe362[_0x0baf('0x109')][_0x0baf('0x10a')];}else{_0x51287e['host']=_0x1fe362[_0x0baf('0x109')][_0x0baf('0x10b')];_0x51287e[_0x0baf('0x10c')]=_0x1fe362[_0x0baf('0x109')][_0x0baf('0x10c')];_0x51287e[_0x0baf('0x10d')]=_0x1fe362[_0x0baf('0x109')][_0x0baf('0x10d')];}if(_0x1fe362[_0x0baf('0x109')][_0x0baf('0x10e')]){_0x51287e[_0x0baf('0x10f')]={'user':_0x1fe362[_0x0baf('0x109')]['user'],'pass':_0x1fe362['Smtp'][_0x0baf('0x110')]};}return respondWithRpcPromise('SendMail','sendMail',{'account':_0x51287e,'message':{'from':util['format']('\x22%s\x22\x20<%s>',_0x1fe362[_0x0baf('0x3f')],_0x1fe362[_0x0baf('0xd6')]||_0x1fe362['Smtp']['user']),'to':_0x9d6974['body']['mailTranscript'],'subject':_0x0baf('0x111'),'text':util['format'](_0x0baf('0x112'),_0x9d6974[_0x0baf('0x40')][_0x0baf('0xf3')]),'attachments':[{'path':_0x2a7138}]}})[_0x0baf('0x24')](function(){return _0x4d6ac4;})[_0x0baf('0x2e')](function(_0x292469){console[_0x0baf('0x2a')](_0x292469);});}else{return _0x4d6ac4;}})[_0x0baf('0x24')](respondWithStatusCode(_0x939365,0xc8))['catch'](handleError(_0x939365,null));};exports['addMessage']=function(_0x2d7ec3,_0x2a4d79,_0x5ebcad){return db[_0x0baf('0xf7')]['find']({'where':{'id':_0x2d7ec3[_0x0baf('0xc8')]['id']}})['then'](handleEntityNotFound(_0x2a4d79,null))['then'](function(_0x4621ba){if(_0x4621ba){return _0x4621ba[_0x0baf('0x113')](_0x2d7ec3[_0x0baf('0x40')][_0x0baf('0x114')],_[_0x0baf('0x115')](_0x2d7ec3[_0x0baf('0x40')],[_0x0baf('0x114'),'id'])||{});}})[_0x0baf('0x24')](respondWithResult(_0x2a4d79,null))[_0x0baf('0x2e')](handleError(_0x2a4d79,null));};exports[_0x0baf('0x116')]=function(_0x425869,_0x4059e1,_0x2c94ff){var _0x738da0={'raw':![],'where':{}};var _0x268a1c={};var _0x34cb32={'count':0x0,'rows':[]};return db['ChatInteraction'][_0x0baf('0xd0')]({'where':{'id':_0x425869[_0x0baf('0xc8')]['id']}})['then'](handleEntityNotFound(_0x4059e1,null))[_0x0baf('0x24')](function(_0x39526b){if(_0x39526b){_0x268a1c['model']=_[_0x0baf('0x54')](db['ChatMessage'][_0x0baf('0xc9')]);_0x268a1c['query']=_[_0x0baf('0x54')](_0x425869['query']);_0x268a1c[_0x0baf('0x55')]=_[_0x0baf('0x56')](_0x268a1c[_0x0baf('0x52')],_0x268a1c[_0x0baf('0x53')]);_0x738da0['attributes']=_[_0x0baf('0x56')](_0x268a1c[_0x0baf('0x52')],qs[_0x0baf('0x58')](_0x425869[_0x0baf('0x53')]['fields']));_0x738da0['attributes']=_0x738da0[_0x0baf('0x57')][_0x0baf('0x59')]?_0x738da0[_0x0baf('0x57')]:_0x268a1c[_0x0baf('0x52')];if(!_0x425869['query'][_0x0baf('0x5a')](_0x0baf('0x5b'))){_0x738da0[_0x0baf('0x34')]=qs['limit'](_0x425869['query'][_0x0baf('0x34')]);_0x738da0['offset']=qs[_0x0baf('0x36')](_0x425869['query'][_0x0baf('0x36')]);}_0x738da0[_0x0baf('0x5c')]=qs[_0x0baf('0x5d')](_0x425869['query'][_0x0baf('0x5d')]);_0x738da0[_0x0baf('0x5e')]=qs['filters'](_['pick'](_0x425869[_0x0baf('0x53')],_0x268a1c['filters']));_0x738da0[_0x0baf('0x5e')][_0x0baf('0xc4')]=_0x39526b['id'];if(_0x425869['query']['filter']){_0x738da0[_0x0baf('0x5e')]=_[_0x0baf('0xb1')](_0x738da0['where'],{'$or':_[_0x0baf('0x46')](_0x738da0['attributes'],function(_0x309220){var _0x376eb3={};_0x376eb3[_0x309220]={'$like':'%'+_0x425869['query'][_0x0baf('0x9b')]+'%'};return _0x376eb3;})});}if(_0x425869[_0x0baf('0x53')][_0x0baf('0x91')]){var _0x2ef76b=_0x425869[_0x0baf('0x53')]['$gte'][_0x0baf('0x4a')](',');var _0x4ca9ea={};_0x4ca9ea[_0x2ef76b[0x0]]={'$gte':moment(_0x2ef76b[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x738da0[_0x0baf('0x5e')]=_[_0x0baf('0xb1')](_0x738da0['where'],_0x4ca9ea);}_0x738da0=_[_0x0baf('0xb1')]({},_0x738da0,_0x425869[_0x0baf('0xcc')]);return db['ChatMessage'][_0x0baf('0x35')]({'where':_0x738da0[_0x0baf('0x5e')]})[_0x0baf('0x24')](function(_0x3d6ece){_0x34cb32[_0x0baf('0x35')]=_0x3d6ece;if(_0x425869[_0x0baf('0x53')][_0x0baf('0xca')]){_0x738da0[_0x0baf('0xcb')]=[{'all':!![]}];}return db[_0x0baf('0xf7')][_0x0baf('0x117')](_0x738da0);})['then'](function(_0x19727f){_0x34cb32[_0x0baf('0xc6')]=_0x19727f;return _0x34cb32;});}})[_0x0baf('0x24')](respondWithFilteredResult(_0x4059e1,_0x738da0))[_0x0baf('0x2e')](handleError(_0x4059e1,null));};exports[_0x0baf('0x118')]=function(_0x57b26e,_0x3a0a2f,_0x5b676d){var _0x298155={'where':{}},_0xff9b69={},_0x5398c6={'count':0x0,'rows':[]};return db[_0x0baf('0x4e')][_0x0baf('0xd0')]({'where':{'id':_0x57b26e[_0x0baf('0xc8')]['id']}})[_0x0baf('0x24')](handleEntityNotFound(_0x3a0a2f,null))['then'](function(_0x2edcf9){if(_0x2edcf9){_0xff9b69[_0x0baf('0x52')]=_[_0x0baf('0x54')](db[_0x0baf('0xf7')][_0x0baf('0xc9')]);_0xff9b69[_0x0baf('0x53')]=_[_0x0baf('0x54')](_0x57b26e[_0x0baf('0x53')]);_0xff9b69[_0x0baf('0x55')]=_[_0x0baf('0x56')](_0xff9b69[_0x0baf('0x52')],_0xff9b69[_0x0baf('0x53')]);_0x298155[_0x0baf('0x57')]=_[_0x0baf('0x56')](_0xff9b69[_0x0baf('0x52')],qs[_0x0baf('0x58')](_0x57b26e[_0x0baf('0x53')][_0x0baf('0x58')]));_0x298155['attributes']=_0x298155[_0x0baf('0x57')][_0x0baf('0x59')]?_0x298155[_0x0baf('0x57')]:_0xff9b69[_0x0baf('0x52')];if(!_0x57b26e[_0x0baf('0x53')][_0x0baf('0x5a')](_0x0baf('0x5b'))){_0x298155['limit']=qs[_0x0baf('0x34')](_0x57b26e[_0x0baf('0x53')][_0x0baf('0x34')]);_0x298155[_0x0baf('0x36')]=qs[_0x0baf('0x36')](_0x57b26e[_0x0baf('0x53')][_0x0baf('0x36')]);}_0x298155['order']=qs[_0x0baf('0x5d')](_0x57b26e[_0x0baf('0x53')][_0x0baf('0x5d')]);_0x298155[_0x0baf('0x5e')]=qs[_0x0baf('0x55')](_[_0x0baf('0x5f')](_0x57b26e['query'],_0xff9b69[_0x0baf('0x55')]));_0x298155[_0x0baf('0x5e')][_0x0baf('0xc4')]=_0x2edcf9['id'];if(_0x57b26e[_0x0baf('0x53')][_0x0baf('0x9b')]){_0x298155['where']=_['merge'](_0x298155[_0x0baf('0x5e')],{'$or':_[_0x0baf('0x46')](_0x298155[_0x0baf('0x57')],function(_0x2d43ac){var _0x34126b={};_0x34126b[_0x2d43ac]={'$like':'%'+_0x57b26e[_0x0baf('0x53')][_0x0baf('0x9b')]+'%'};return _0x34126b;})});}_0x298155[_0x0baf('0x5e')][_0x0baf('0x105')]=![];if(_0x57b26e[_0x0baf('0x53')]['id']){_0x298155[_0x0baf('0x5e')]['id']={'$gt':_0x57b26e[_0x0baf('0x53')]['id']};}_0x298155=_[_0x0baf('0xb1')]({},_0x298155,_0x57b26e[_0x0baf('0xcc')]);return db[_0x0baf('0xf7')][_0x0baf('0x35')]({'where':_0x298155[_0x0baf('0x5e')]})[_0x0baf('0x24')](function(_0x18d219){_0x5398c6[_0x0baf('0x35')]=_0x18d219;_0x298155[_0x0baf('0xcb')]=[];if(_0x57b26e[_0x0baf('0x53')][_0x0baf('0x119')]){_0x298155[_0x0baf('0xcb')][_0x0baf('0x4c')]({'model':db[_0x0baf('0xf9')],'as':_0x0baf('0xf9'),'attributes':['id','fullname',_0x0baf('0x100')]});}if(_0x57b26e[_0x0baf('0x53')][_0x0baf('0xca')]){_0x298155[_0x0baf('0xcb')]=[{'all':!![]}];}return db[_0x0baf('0xf7')]['findAll'](_0x298155);})[_0x0baf('0x24')](function(_0x344fef){_0x5398c6[_0x0baf('0xc6')]=_0x344fef;return _0x5398c6;});}})[_0x0baf('0x24')](respondWithFilteredResult(_0x3a0a2f,_0x298155))[_0x0baf('0x2e')](handleError(_0x3a0a2f,null));};exports[_0x0baf('0x11a')]=function(_0x3358f5,_0x237a20,_0x26dd4c){return db[_0x0baf('0x4e')][_0x0baf('0x89')]({'where':{'id':_0x3358f5[_0x0baf('0xc8')]['id']}})[_0x0baf('0x24')](handleEntityNotFound(_0x237a20,null))[_0x0baf('0x24')](function(_0x2867b7){if(_0x2867b7){return _0x2867b7[_0x0baf('0x11b')](_0x3358f5[_0x0baf('0x40')][_0x0baf('0x114')],_['omit'](_0x3358f5[_0x0baf('0x40')],['ids','id'])||{})['spread'](function(){return db[_0x0baf('0x84')][_0x0baf('0x117')]({'attributes':['id',_0x0baf('0x3f'),'color'],'where':{'id':_0x3358f5[_0x0baf('0x40')][_0x0baf('0x114')]}});})[_0x0baf('0x24')](function(_0x24bc8f){socket[_0x0baf('0x11c')](_0x0baf('0x11d'),{'id':Number(_0x3358f5['params']['id']),'tags':_0x24bc8f||[]});return{'id':Number(_0x3358f5[_0x0baf('0xc8')]['id']),'tags':_0x24bc8f||[]};});}})[_0x0baf('0x24')](respondWithResult(_0x237a20,null))[_0x0baf('0x2e')](handleError(_0x237a20,null));};exports[_0x0baf('0x11e')]=function(_0x262063,_0x216897,_0x4c2bae){return db[_0x0baf('0x4e')]['find']({'where':{'id':_0x262063[_0x0baf('0xc8')]['id']}})[_0x0baf('0x24')](handleEntityNotFound(_0x216897,null))['then'](function(_0x56da3e){if(_0x56da3e){return _0x56da3e[_0x0baf('0x11e')](_0x262063[_0x0baf('0x53')][_0x0baf('0x114')]);}})['then'](respondWithStatusCode(_0x216897,null))[_0x0baf('0x2e')](handleError(_0x216897,null));};exports[_0x0baf('0xf1')]=function(_0x51d2aa,_0x26d73d){var _0x20cc18=moment()[_0x0baf('0x11f')]()[_0x0baf('0xb0')]();var _0x3fa8eb=path[_0x0baf('0xed')](config[_0x0baf('0xee')],'server','files',_0x0baf('0x120'));var _0x1bd67f=path[_0x0baf('0xed')](config[_0x0baf('0xee')],_0x0baf('0x121'),_0x0baf('0x122'),_0x0baf('0x123'));var _0x4316c5=path[_0x0baf('0xed')](_0x3fa8eb,_0x20cc18);var _0x1d5b73=util['format']('transcript-%d-%s.zip',_0x51d2aa[_0x0baf('0xc8')]['id'],_0x20cc18);var _0x2a84f8=path[_0x0baf('0xed')](_0x3fa8eb,_0x1d5b73);var _0x552504=[];_0x552504['push']({'model':db[_0x0baf('0xf9')],'as':_0x0baf('0xf9'),'attributes':['id',_0x0baf('0x47')],'raw':!![]});_0x552504[_0x0baf('0x4c')]({'model':db['CmContact'],'as':_0x0baf('0x7b'),'attributes':['id',_0x0baf('0x124'),_0x0baf('0x125')],'raw':!![]});if(_0x51d2aa[_0x0baf('0x53')][_0x0baf('0x123')]){_0x552504[_0x0baf('0x4c')]({'model':db[_0x0baf('0x126')],'as':_0x0baf('0x126'),'raw':!![]});}var _0x5bbd33=[{'model':db[_0x0baf('0xf7')],'as':_0x0baf('0xf8'),'attributes':['id',_0x0baf('0x40'),_0x0baf('0x8f'),_0x0baf('0x104'),_0x0baf('0x105'),'read'],'include':_0x552504}];_0x5bbd33[_0x0baf('0x4c')]({'model':db[_0x0baf('0xd1')],'as':'Account','attributes':['id','name']});_0x5bbd33[_0x0baf('0x4c')]({'model':db['User'],'as':_0x0baf('0x127'),'attributes':['id',_0x0baf('0x47')]});return db[_0x0baf('0x4e')][_0x0baf('0x89')]({'where':{'id':_0x51d2aa['params']['id']},'include':_0x5bbd33})[_0x0baf('0x24')](handleEntityNotFound(_0x26d73d,null))[_0x0baf('0x24')](function(_0x32c2a8){if(_0x32c2a8){var _0x58fea2=_0x32c2a8[_0x0baf('0x128')]({'plain':!![]});fs[_0x0baf('0x129')](_0x4316c5);var _0x5f5d45={'channel':_0x0baf('0x12a'),'account':_0x58fea2['Account'][_0x0baf('0x3f')],'agent':_0x58fea2[_0x0baf('0x127')]?_0x58fea2[_0x0baf('0x127')][_0x0baf('0x47')]:'N.A.','createdAt':moment(_0x58fea2[_0x0baf('0x8f')])[_0x0baf('0xf4')]('YYYY-MM-DD\x20HH:mm:ss')[_0x0baf('0xb0')](),'closedAt':_0x58fea2[_0x0baf('0xe5')]?moment(_0x58fea2['closedAt'])[_0x0baf('0xf4')](_0x0baf('0x12b'))['toString']():'','disposition':_0x58fea2[_0x0baf('0x12c')],'chatInfo':{'browser':_0x58fea2[_0x0baf('0x12d')],'os':_0x58fea2[_0x0baf('0x12e')],'referer':_0x58fea2[_0x0baf('0x12f')],'customerIp':_0x58fea2[_0x0baf('0x130')],'customerPort':_0x58fea2[_0x0baf('0x131')]?_0x58fea2['customerPort']:_0x0baf('0x132')},'messages':_(_0x58fea2[_0x0baf('0xf8')])[_0x0baf('0x133')]()[_0x0baf('0x9b')]({'secret':![]})[_0x0baf('0x46')](function(_0x1ca912){if(_0x1ca912[_0x0baf('0x126')]){var _0x70e2e=path[_0x0baf('0xed')](_0x1bd67f,_0x1ca912[_0x0baf('0x126')][_0x0baf('0xe9')]);if(fs[_0x0baf('0x134')](_0x70e2e)){fs[_0x0baf('0x135')](_0x70e2e)[_0x0baf('0x136')](fs[_0x0baf('0x137')](path[_0x0baf('0xed')](_0x4316c5,_0x1ca912[_0x0baf('0x126')][_0x0baf('0xe9')])));}}return{'date':moment(_0x1ca912[_0x0baf('0x8f')])[_0x0baf('0xf4')](_0x0baf('0x12b'))[_0x0baf('0xb0')](),'sender':_0x1ca912['direction']===_0x0baf('0xdf')?_0x1ca912[_0x0baf('0xf9')]?_0x1ca912['User']['fullname']:'System':_0x1ca912[_0x0baf('0x7b')]['firstName']+(_0x1ca912['Contact']['lastName']?'\x20'+_0x1ca912[_0x0baf('0x7b')][_0x0baf('0x125')]:''),'body':_0x1ca912[_0x0baf('0x126')]?_0x1ca912['Attachment'][_0x0baf('0xe9')]:_0x1ca912['body'],'direction':_0x1ca912['direction']===_0x0baf('0xdf')?'A':'C','secret':_0x1ca912[_0x0baf('0x105')],'read':_0x1ca912[_0x0baf('0x96')],'attachment':_0x1ca912['Attachment']};})['value']()};return ejs[_0x0baf('0x138')](path[_0x0baf('0xed')](config[_0x0baf('0xee')],_0x0baf('0x121'),_0x0baf('0x139'),_0x0baf('0x13a')),{'interaction':_0x5f5d45})['then'](function(_0x4c1f01){var _0x217cd8=path[_0x0baf('0xed')](_0x4316c5,'transcript-'+_0x58fea2['id']+'-'+_0x20cc18+_0x0baf('0x13b'));var _0x223d32={'path':_0x217cd8,'channel':_0x0baf('0x12a'),'interactionId':_0x58fea2['id']};return pdf[_0x0baf('0x13c')](_0x4c1f01,_0x223d32);})['then'](function(){return new BPromise(function(_0xcca408,_0x557ec9){zipdir(_0x4316c5,{'saveTo':_0x2a84f8},function(_0x479231,_0x320409){if(_0x479231)return _0x557ec9(_0x479231);return _0xcca408(_0x320409);});})['then'](function(){return new BPromise(function(_0x4a0f32,_0xc6fc4d){rimraf(_0x4316c5,function(_0x46b904){if(_0x46b904)_0xc6fc4d(_0x46b904);return _0x4a0f32();});});})['then'](function(){return _0x26d73d[_0x0baf('0xf1')](_0x2a84f8,_0x1d5b73,function(_0x2dea20){if(_0x2dea20){console[_0x0baf('0x13d')](_0x0baf('0x13e'),_0x2dea20);}else{fs[_0x0baf('0x13f')](_0x2a84f8);}});});});}else{return _0x26d73d[_0x0baf('0x2f')](0xc8);}})['catch'](handleError(_0x26d73d,null));};
\ No newline at end of file
+var _0x4024=['ChatInteractionId','push','all','rows','show','params','include','options','create','createVidaooSession','findOne','ChatWebsite','vidaooApiKey','vidaooTopic','vidaooNote','fullname','email','contact','POST','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','follow','vidaooMetadata','metadata','Sequelize','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','join_url','out','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','AbandonInteraction','attachmentUpload','file','originalname','basename','filename','mimetype','Attachment','attachmentDownload','Unauthorized','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','download','close','mailTranscript','server/files/chat/upload/','format','transcript-%s.txt','pathTranscript','ChatMessage','Messages','ContactId','%s%d','agentAlias','System','Visitor','agentIdentifier','website_alias','agent_alias','alias','agent_fullname','[%s]\x20%s:\x20%s\x0a','MM/DD/YYYY\x20HH:mm:ss','direction','secret','appendFileSync','MailServerOut','Smtp','service','host','port','secure','authentication','auth','pass','SendMail','sendMail','\x22%s\x22\x20<%s>','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','omit','getMessages','hasOwnProperty','sort','$gte','YYYY-MM-DD\x20HH:mm:ss','includeAll','findAll','getMyMessages','includeAgent','addTags','setTags','ids','spread','color','emit','chatInteractionTags:save','removeTags','unix','server','files','tmp','attachments','transcript-%d-%s.zip','firstName','Account','get','mkdirSync','Chat','Owner','N.A.','closed','browserName','referer','customerIp','customerPort','tail','existsSync','createReadStream','pipe','createWriteStream','lastName','renderFile','.pdf','createPdfFromHTML','err','unlinkSync','eml-format','rimraf','fast-json-patch','request-promise','bluebird','util','path','ejs','fs-extra','lodash','crypto','to-csv','ioredis','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./chatInteraction.socket','register','jayson/promise','client','http','request','info','ChatInteraction,\x20%s,\x20%s','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','code','error','message','request\x20sent','end','status','offset','limit','undefined','count','set','json','apply','reject','save','update','destroy','then','sendStatus','name','render','merge','agent','interaction','account','Users','TagIds','Tags','split','forEach','catch','map','ChatInteraction','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','where','pick','select','field','from','tools_tags','u.id','u.fullname','ui.ChatInteractionId','user_has_chat_interactions','left_join','users','chat_interactions','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','chat_websites','a.id\x20=\x20i.ChatWebsiteId','chat_messages','me.ChatInteractionId\x20=\x20i.id','chat_interaction_has_tags','it.ChatInteractionId\x20=\x20i.id','expr','search','sqlOperator','conditions','find','unreadMessages','value','`\x20=\x200','`\x20>\x200','Contact','operator','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','buildExpression','type','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','UserId','text','body','compact','ChatWebsiteId','i.ChatWebsiteId\x20IN\x20?','concat','createdAt','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','read','`unreadMessages`\x20=\x200','having','isArray','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','i.id','QueryTypes','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','DESC','isEmpty','t.id\x20IN\x20?','resolve','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','user','role','i.ChatWebsiteId\x20IS\x20NULL','sequelize','toString','keyBy','a.key','a.mandatoryDisposition','c.firstName','Contact.firstName','c.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy'];(function(_0x3b3d58,_0x45589b){var _0x34c359=function(_0x13036f){while(--_0x13036f){_0x3b3d58['push'](_0x3b3d58['shift']());}};_0x34c359(++_0x45589b);}(_0x4024,0x89));var _0x4402=function(_0x581174,_0x41e3ce){_0x581174=_0x581174-0x0;var _0x132336=_0x4024[_0x581174];return _0x132336;};'use strict';var emlformat=require(_0x4402('0x0'));var rimraf=require(_0x4402('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4402('0x2'));var rp=require(_0x4402('0x3'));var moment=require('moment');var BPromise=require(_0x4402('0x4'));var Mustache=require('mustache');var util=require(_0x4402('0x5'));var path=require(_0x4402('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x4402('0x7'));var fs=require('fs');var fs_extra=require(_0x4402('0x8'));var _=require(_0x4402('0x9'));var squel=require('squel');var crypto=require(_0x4402('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x4402('0xb'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x4402('0xc'));var authService=require('../../components/auth/service');var qs=require(_0x4402('0xd'));var as=require('../../components/parsers/advancedSearch');var pdf=require(_0x4402('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4402('0xf'))(_0x4402('0x10'));var utils=require('../../config/utils');var config=require(_0x4402('0x11'));var licenseUtil=require(_0x4402('0x12'));var db=require(_0x4402('0x13'))['db'];config['redis']=_[_0x4402('0x14')](config[_0x4402('0x15')],{'host':_0x4402('0x16'),'port':0x18eb});var socket=require(_0x4402('0x17'))(new Redis(config[_0x4402('0x15')]));require(_0x4402('0x18'))[_0x4402('0x19')](socket);var jayson=require(_0x4402('0x1a'));var client=jayson[_0x4402('0x1b')][_0x4402('0x1c')]({'port':0x232b});var client9004=jayson[_0x4402('0x1b')][_0x4402('0x1c')]({'port':0x232c});function respondWithRpcPromise(_0x2a2ce8,_0x19fe7b,_0xfd9853,_0x30c390){return new BPromise(function(_0x399c24,_0x25e88b){var _0x186c22=_0x30c390||client;return _0x186c22[_0x4402('0x1d')](_0x2a2ce8,_0xfd9853)['then'](function(_0x494389){logger[_0x4402('0x1e')](_0x4402('0x1f'),_0x19fe7b,'request\x20sent');logger[_0x4402('0x20')](_0x4402('0x21'),_0x19fe7b,'request\x20sent',JSON[_0x4402('0x22')](_0x494389));if(_0x494389['error']){if(_0x494389['error'][_0x4402('0x23')]===0x1f4){logger[_0x4402('0x24')](_0x4402('0x1f'),_0x19fe7b,_0x494389['error'][_0x4402('0x25')]);return _0x25e88b(_0x494389['error']['message']);}logger[_0x4402('0x24')](_0x4402('0x1f'),_0x19fe7b,_0x494389[_0x4402('0x24')][_0x4402('0x25')]);return _0x399c24(_0x494389[_0x4402('0x24')][_0x4402('0x25')]);}else{logger[_0x4402('0x1e')](_0x4402('0x1f'),_0x19fe7b,_0x4402('0x26'));_0x399c24(_0x494389['result'][_0x4402('0x25')]);}})['catch'](function(_0x3733cd){logger[_0x4402('0x24')](_0x4402('0x1f'),_0x19fe7b,_0x3733cd);_0x25e88b(_0x3733cd);});});}function respondWithStatusCode(_0x211424,_0x5a43d0){_0x5a43d0=_0x5a43d0||0xcc;return function(_0x15c19f){if(_0x15c19f){return _0x211424['sendStatus'](_0x5a43d0);}return _0x211424['status'](_0x5a43d0)[_0x4402('0x27')]();};}function respondWithResult(_0x395e49,_0x327d60){_0x327d60=_0x327d60||0xc8;return function(_0xabf61b){if(_0xabf61b){return _0x395e49[_0x4402('0x28')](_0x327d60)['json'](_0xabf61b);}};}function respondWithFilteredResult(_0x41de44,_0x52e625){return function(_0x71da2f){if(_0x71da2f){var _0x1e2340=typeof _0x52e625[_0x4402('0x29')]==='undefined'&&typeof _0x52e625[_0x4402('0x2a')]===_0x4402('0x2b');var _0x316239=_0x71da2f[_0x4402('0x2c')];var _0x2526d1=_0x1e2340?0x0:_0x52e625[_0x4402('0x29')];var _0x1189b8=_0x1e2340?_0x71da2f[_0x4402('0x2c')]:_0x52e625[_0x4402('0x29')]+_0x52e625[_0x4402('0x2a')];var _0xcea26b;if(_0x1189b8>=_0x316239){_0x1189b8=_0x316239;_0xcea26b=0xc8;}else{_0xcea26b=0xce;}_0x41de44['status'](_0xcea26b);return _0x41de44[_0x4402('0x2d')]('Content-Range',_0x2526d1+'-'+_0x1189b8+'/'+_0x316239)[_0x4402('0x2e')](_0x71da2f);}return null;};}function patchUpdates(_0x554096){return function(_0x2dea0f){try{jsonpatch[_0x4402('0x2f')](_0x2dea0f,_0x554096,!![]);}catch(_0x145003){return BPromise[_0x4402('0x30')](_0x145003);}return _0x2dea0f[_0x4402('0x31')]();};}function saveUpdates(_0x480781,_0x3a60af){return function(_0x3fa7ae){if(_0x3fa7ae){return _0x3fa7ae[_0x4402('0x32')](_0x480781)['then'](function(_0x331c75){return _0x331c75;});}return null;};}function removeEntity(_0x3383e3,_0x535e1d){return function(_0x2db1fe){if(_0x2db1fe){return _0x2db1fe[_0x4402('0x33')]()[_0x4402('0x34')](function(){_0x3383e3[_0x4402('0x28')](0xcc)[_0x4402('0x27')]();});}};}function handleEntityNotFound(_0x235f30,_0x1e67ac){return function(_0x6e9fb7){if(!_0x6e9fb7){_0x235f30[_0x4402('0x35')](0x194);}return _0x6e9fb7;};}function handleError(_0x5c819a,_0x2995b6){_0x2995b6=_0x2995b6||0x1f4;return function(_0x28fee8){logger[_0x4402('0x24')](_0x28fee8['stack']);if(_0x28fee8[_0x4402('0x36')]){delete _0x28fee8[_0x4402('0x36')];}_0x5c819a['status'](_0x2995b6)['send'](_0x28fee8);};}function getMustacheRender(_0x2b9d51,_0x5b7c2e){return Mustache[_0x4402('0x37')](_0x2b9d51,_[_0x4402('0x38')](_0x5b7c2e['body'],{'contact':_0x5b7c2e['contact'],'message':_0x5b7c2e['message'],'agent':_0x5b7c2e[_0x4402('0x39')],'interaction':_0x5b7c2e[_0x4402('0x3a')],'account':_0x5b7c2e[_0x4402('0x3b')]}))||'';}function getInteractionUsers(_0x3fd8ce,_0x52af0d){return new BPromise(function(_0x20579c,_0x7d5f2a){try{if(_0x52af0d[_0x3fd8ce['id']]){_0x3fd8ce[_0x4402('0x3c')]=_['map'](_0x52af0d[_0x3fd8ce['id']],function(_0x2b92b7){return{'id':_0x2b92b7['id'],'fullname':_0x2b92b7['fullname']};});}}catch(_0x6e328a){_0x7d5f2a(_0x6e328a);}_0x20579c(_0x3fd8ce);});}function getInteractionTags(_0x3ef31d,_0x5c74b1){return new BPromise(function(_0x16ef2e,_0x529526){try{if(_0x3ef31d[_0x4402('0x3d')]){_0x3ef31d[_0x4402('0x3e')]=[];_0x3ef31d['TagIds'][_0x4402('0x3f')](',')[_0x4402('0x40')](function(_0x250f09){_0x3ef31d[_0x4402('0x3e')]['push'](_0x5c74b1[_0x250f09]);});}delete _0x3ef31d['TagIds'];}catch(_0x2cda0a){_0x529526(_0x2cda0a);}_0x16ef2e(_0x3ef31d);});}function updateChatInteraction(_0x47a3a3,_0x3a589b,_0x2a6d78){return new BPromise(function(_0xb9cf85,_0x2e2391){return getInteractionUsers(_0x47a3a3,_0x2a6d78)[_0x4402('0x34')](function(_0x455a62){return getInteractionTags(_0x455a62,_0x3a589b);})[_0x4402('0x34')](function(_0x390169){_0xb9cf85(_0x390169);})[_0x4402('0x41')](function(_0x42812b){_0x2e2391(_0x42812b);});});}exports['index']=function(_0x14b94b,_0x3236fc){var _0x5e7872={},_0x214eec={},_0x370878={'count':0x0,'rows':[]};var _0x50552a=_[_0x4402('0x42')](db[_0x4402('0x43')][_0x4402('0x44')],function(_0x3278fc){return{'name':_0x3278fc[_0x4402('0x45')],'type':_0x3278fc['type'][_0x4402('0x46')]};});_0x214eec[_0x4402('0x47')]=_[_0x4402('0x42')](_0x50552a,_0x4402('0x36'));_0x214eec[_0x4402('0x48')]=_[_0x4402('0x49')](_0x14b94b[_0x4402('0x48')]);_0x214eec[_0x4402('0x4a')]=_[_0x4402('0x4b')](_0x214eec[_0x4402('0x47')],_0x214eec[_0x4402('0x48')]);_0x5e7872['attributes']=_[_0x4402('0x4b')](_0x214eec['model'],qs[_0x4402('0x4c')](_0x14b94b[_0x4402('0x48')]['fields']));_0x5e7872[_0x4402('0x4d')]=_0x5e7872[_0x4402('0x4d')][_0x4402('0x4e')]?_0x5e7872[_0x4402('0x4d')]:_0x214eec[_0x4402('0x47')];if(!_0x14b94b[_0x4402('0x48')]['hasOwnProperty'](_0x4402('0x4f'))){_0x5e7872[_0x4402('0x2a')]=qs[_0x4402('0x2a')](_0x14b94b[_0x4402('0x48')][_0x4402('0x2a')]);_0x5e7872[_0x4402('0x29')]=qs[_0x4402('0x29')](_0x14b94b[_0x4402('0x48')][_0x4402('0x29')]);}_0x5e7872['order']=qs['sort'](_0x14b94b['query']['sort']);_0x5e7872[_0x4402('0x50')]=qs[_0x4402('0x4a')](_[_0x4402('0x51')](_0x14b94b[_0x4402('0x48')],_0x214eec['filters']),_0x50552a);var _0x169bb2=[];var _0x12d6de=squel[_0x4402('0x52')]()[_0x4402('0x53')]('id')[_0x4402('0x53')](_0x4402('0x36'))[_0x4402('0x53')]('color')[_0x4402('0x54')](_0x4402('0x55'));var _0x38e6d1=squel[_0x4402('0x52')]()[_0x4402('0x53')](_0x4402('0x56'))['field'](_0x4402('0x57'))[_0x4402('0x53')](_0x4402('0x58'))[_0x4402('0x54')](_0x4402('0x59'),'ui')[_0x4402('0x5a')](_0x4402('0x5b'),'u','u.id\x20=\x20ui.UserId');var _0x48e138=squel[_0x4402('0x52')]()[_0x4402('0x54')](_0x4402('0x5c'),'i')['left_join']('cm_contacts','c',_0x4402('0x5d'))[_0x4402('0x5a')](_0x4402('0x5b'),'o',_0x4402('0x5e'))[_0x4402('0x5a')](_0x4402('0x5f'),'a',_0x4402('0x60'))[_0x4402('0x5a')](_0x4402('0x61'),'me',_0x4402('0x62'))[_0x4402('0x5a')](_0x4402('0x63'),'it',_0x4402('0x64'))['left_join'](_0x4402('0x55'),'t','t.id\x20=\x20it.TagId');var _0xe4530a=squel['expr']();var _0x3fb9f0=[];var _0x1e5891=squel[_0x4402('0x65')]();var _0x31e36c;if(_0x14b94b[_0x4402('0x48')][_0x4402('0x66')]){_0x31e36c=as['parseSearch'](_0x14b94b[_0x4402('0x48')][_0x4402('0x66')]);var _0xa390ce=_0x31e36c[_0x4402('0x67')];for(var _0xb341ab=0x0;_0xb341ab<_0x31e36c['conditions'][_0x4402('0x4e')];_0xb341ab++){var _0x31d993=_0x31e36c[_0x4402('0x68')][_0xb341ab];var _0xc15c0b='i';var _0x309077=_[_0x4402('0x69')](_0x50552a,[_0x4402('0x36'),_0x31d993[_0x4402('0x53')]]);if(!_0x309077){switch(_0x31d993['field']){case _0x4402('0x6a'):if(_0x31d993[_0x4402('0x6b')]==0x1){_0x48e138['having']('`'+_0x31d993[_0x4402('0x53')]+_0x4402('0x6c'));}else{_0x48e138['having']('`'+_0x31d993['field']+_0x4402('0x6d'));}break;case _0x4402('0x6e'):if(_0x31d993[_0x4402('0x6f')]==='$substring'){if(_0x31d993[_0x4402('0x6b')][_0x4402('0x3f')]('\x20')[_0x4402('0x4e')]>0x1){_0xe4530a[_0xa390ce]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x4402('0x70')](_0x31d993[_0x4402('0x6b')]),null);}else{var _0xdde09f='%'+_0x31d993['value']+'%';_0xe4530a[_0xa390ce](_0x4402('0x71'),_0xdde09f,_0xdde09f,_0xdde09f);}}else{_0x309077=_[_0x4402('0x69')](_0x50552a,['name','ContactId']);_0x31d993[_0x4402('0x53')]='ContactId';_0x53e553=as[_0x4402('0x72')](_0xc15c0b,_0x309077[_0x4402('0x73')],_0x31d993);_0xe4530a[_0xa390ce](_0x53e553['text'],_0x53e553['value'][_0x4402('0x74')],_0x53e553[_0x4402('0x6b')][_0x4402('0x27')]);}break;case _0x4402('0x75'):var _0x4ac95e=_0x31d993[_0x4402('0x6b')][_0x4402('0x3f')](',')[_0x4402('0x42')](function(_0x168095){return Number(_0x168095);});_0x4ac95e[_0x4402('0x40')](function(_0x26b1ad){_0x1e5891['or'](_0x4402('0x76'),'%,'+_0x26b1ad+',%');});_0x3fb9f0=_['union'](_0x3fb9f0,_0x4ac95e);break;case _0x4402('0x77'):if(_0x31d993[_0x4402('0x6f')]==='$substring'){_0xe4530a[_0xa390ce]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x31d993[_0x4402('0x6b')]+'%',null);}else{_0x309077=_['find'](_0x50552a,[_0x4402('0x36'),'UserId']);_0x31d993[_0x4402('0x53')]=_0x4402('0x78');_0x53e553=as[_0x4402('0x72')](_0xc15c0b,_0x309077[_0x4402('0x73')],_0x31d993);_0xe4530a[_0xa390ce](_0x53e553[_0x4402('0x79')],_0x53e553[_0x4402('0x6b')][_0x4402('0x74')],_0x53e553[_0x4402('0x6b')][_0x4402('0x27')]);}break;case _0x4402('0x7a'):_0x53e553=as[_0x4402('0x72')]('me',null,_0x31d993);_0xe4530a[_0xa390ce](_0x53e553[_0x4402('0x79')],_0x53e553[_0x4402('0x6b')][_0x4402('0x74')],_0x53e553[_0x4402('0x6b')][_0x4402('0x27')]);break;}}else{var _0x53e553=as[_0x4402('0x72')](_0xc15c0b,_0x309077[_0x4402('0x73')],_0x31d993);_0xe4530a[_0xa390ce](_0x53e553[_0x4402('0x79')],_0x53e553['value'][_0x4402('0x74')],_0x53e553['value'][_0x4402('0x27')]);}}}else{var _0x1b1147=_(_0x14b94b[_0x4402('0x48')])[_0x4402('0x49')]()['map'](function(_0xac8513){return _['some'](_0x50552a,[_0x4402('0x36'),_0xac8513])?_0xac8513:undefined;})[_0x4402('0x7b')]()[_0x4402('0x6b')]();if(!_['isEmpty'](_0x1b1147)){_0x1b1147[_0x4402('0x40')](function(_0x4c98eb){if(_0x4c98eb===_0x4402('0x7c')){_0x48e138[_0x4402('0x50')](_0x4402('0x7d'),[][_0x4402('0x7e')](_0x14b94b[_0x4402('0x48')][_0x4c98eb]));}else if(_0x4c98eb===_0x4402('0x7f')){var _0x19b427=JSON[_0x4402('0x80')](_0x14b94b[_0x4402('0x48')][_0x4c98eb])['$gte'];var _0x44d806=JSON[_0x4402('0x80')](_0x14b94b[_0x4402('0x48')][_0x4c98eb])[_0x4402('0x81')];_0x48e138[_0x4402('0x50')](_0x4402('0x82'),_0x19b427,_0x44d806);}else{if(_0x14b94b[_0x4402('0x48')][_0x4c98eb]===_0x4402('0x83')){_0x48e138[_0x4402('0x50')]('i.'+_0x4c98eb+'\x20IS\x20NULL');}else{_0x48e138[_0x4402('0x50')]('i.'+_0x4c98eb+_0x4402('0x84'),_0x14b94b[_0x4402('0x48')][_0x4c98eb]);}}});}if(_0x14b94b['query'][_0x4402('0x85')]){if(_0x14b94b['query'][_0x4402('0x85')]==0x1){_0x48e138['having'](_0x4402('0x86'));}else{_0x48e138[_0x4402('0x87')]('`unreadMessages`\x20>\x200');}}if(_0x14b94b[_0x4402('0x48')]['tag']){_0x3fb9f0=_[_0x4402('0x88')](_0x14b94b[_0x4402('0x48')]['tag'])?_0x14b94b[_0x4402('0x48')][_0x4402('0x89')]:new Array(_0x14b94b['query'][_0x4402('0x89')]);_0x3fb9f0[_0x4402('0x40')](function(_0x4f0915){_0x1e5891['or'](_0x4402('0x76'),'%,'+_0x4f0915+',%');});}if(_0x14b94b[_0x4402('0x48')][_0x4402('0x8a')]){var _0x12b834=_0x14b94b[_0x4402('0x48')][_0x4402('0x8a')][_0x4402('0x8b')]('\x5c','\x5c\x5c')[_0x4402('0x8b')](/'/g,'\x27\x27');if(qs[_0x4402('0x8c')](_0x12b834)){_0xe4530a['or'](_0x4402('0x8d'),_0x12b834+'%');}else{_0xe4530a['or'](_0x4402('0x8e'),qs[_0x4402('0x70')](_0x12b834))['or'](_0x4402('0x8f'),_0x12b834+'%');}}}_0x48e138[_0x4402('0x50')](_0xe4530a);_0x48e138['group'](_0x4402('0x90'));var _0xc3914e={'type':db['Sequelize'][_0x4402('0x91')]['SELECT'],'raw':!![]};var _0x2c7ff5=_0x48e138[_0x4402('0x92')]();_0x2c7ff5[_0x4402('0x53')]('i.id');_0x2c7ff5[_0x4402('0x53')](_0x4402('0x93'),_0x4402('0x6a'));if(_0x5e7872['order']){_0x5e7872[_0x4402('0x94')][_0x4402('0x40')](function(_0x179eb4){var _0x1a0a6f=_0x179eb4[0x0]==='contactName'?_0x179eb4[0x0]:'i.'+_0x179eb4[0x0];_0x48e138[_0x4402('0x94')](_0x1a0a6f,_0x179eb4[0x1]===_0x4402('0x95')?![]:!![]);});}if(!_[_0x4402('0x96')](_0x3fb9f0)){_0x48e138[_0x4402('0x87')](_0x1e5891);_0x2c7ff5[_0x4402('0x50')](_0x4402('0x97'),_0x3fb9f0);}BPromise[_0x4402('0x98')]()[_0x4402('0x34')](function(){if(!_0x31e36c){if(_0x14b94b[_0x4402('0x48')][_0x4402('0x7c')])return;_0x2c7ff5[_0x4402('0x50')](_0x4402('0x99'));_0x48e138[_0x4402('0x50')]('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');return;}if(_0x14b94b[_0x4402('0x9a')][_0x4402('0x9b')]!==_0x4402('0x39'))return;return _0x14b94b[_0x4402('0x9a')]['getChatWebsites']({'attributes':['id'],'raw':!![]})['then'](function(_0x284b52){if(_[_0x4402('0x96')](_0x284b52)){_0x2c7ff5[_0x4402('0x50')](_0x4402('0x9c'));_0x48e138['where'](_0x4402('0x9c'));}else{_0x2c7ff5[_0x4402('0x50')]('i.ChatWebsiteId\x20IN\x20?',_[_0x4402('0x42')](_0x284b52,'id'));_0x48e138[_0x4402('0x50')](_0x4402('0x7d'),_[_0x4402('0x42')](_0x284b52,'id'));}});})[_0x4402('0x34')](function(){if(_0x14b94b['user'][_0x4402('0x9b')]===_0x4402('0x39')&&!_0x31e36c&&!_0x14b94b[_0x4402('0x48')][_0x4402('0x7c')])return[];return db[_0x4402('0x9d')][_0x4402('0x48')](_0x2c7ff5[_0x4402('0x9e')](),_0xc3914e);})['then'](function(_0x218640){_0x370878[_0x4402('0x2c')]=_0x218640[_0x4402('0x4e')];if(_0x370878[_0x4402('0x2c')]===0x0)return[];return db[_0x4402('0x9d')]['query'](_0x12d6de[_0x4402('0x9e')](),_0xc3914e)[_0x4402('0x34')](function(_0x572e21){_0x169bb2=_[_0x4402('0x9f')](_0x572e21,'id');_0xc3914e=_['merge'](_0xc3914e,{'model':db['ChatInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x14b94b[_0x4402('0x48')]['fields']){_0x5e7872[_0x4402('0x4d')]['forEach'](function(_0x51e85d){_0x48e138[_0x4402('0x53')]('i.'+_0x51e85d);});}else{_0x48e138[_0x4402('0x53')](_0x4402('0x93'),_0x4402('0x6a'));_0x48e138[_0x4402('0x53')](_0x4402('0xa0'),'Account.key');_0x48e138[_0x4402('0x53')](_0x4402('0xa1'),'Account.mandatoryDisposition');_0x48e138[_0x4402('0x53')]('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');_0x48e138[_0x4402('0x53')]('i.*');_0x48e138[_0x4402('0x53')](_0x4402('0xa2'),_0x4402('0xa3'));_0x48e138[_0x4402('0x53')](_0x4402('0xa4'),'Contact.lastName');_0x48e138['field'](_0x4402('0xa5'),_0x4402('0xa6'));_0x48e138['field'](_0x4402('0xa7'),_0x4402('0xa8'));_0x48e138[_0x4402('0x53')](_0x4402('0xa9'),_0x4402('0xaa'));_0x48e138[_0x4402('0x53')]('c.fax','Contact.fax');_0x48e138[_0x4402('0x53')](_0x4402('0xab'),_0x4402('0xac'));_0x48e138[_0x4402('0x53')](_0x4402('0xad'),_0x4402('0xae'));_0x48e138['field'](_0x4402('0xaf'),_0x4402('0x3d'));}if(_0x5e7872[_0x4402('0x2a')])_0x48e138[_0x4402('0x2a')](_0x5e7872[_0x4402('0x2a')]);if(_0x5e7872['offset'])_0x48e138[_0x4402('0x29')](_0x5e7872[_0x4402('0x29')]);return db[_0x4402('0x9d')][_0x4402('0x48')](_0x48e138[_0x4402('0x9e')](),_0xc3914e);})[_0x4402('0x34')](function(_0x518b0b){if(_0x518b0b['length']>0x0)_0x38e6d1[_0x4402('0x50')]('ui.ChatInteractionId\x20IN\x20?',_[_0x4402('0x42')](_0x518b0b,'id'));return db[_0x4402('0x9d')][_0x4402('0x48')](_0x38e6d1[_0x4402('0x9e')](),_0xc3914e)[_0x4402('0x34')](function(_0x25b3ee){var _0x70bdbd=_[_0x4402('0xb0')](_0x25b3ee,_0x4402('0xb1'));var _0x23306f=[];_0x518b0b[_0x4402('0x40')](function(_0x425a1b){_0x23306f[_0x4402('0xb2')](updateChatInteraction(_0x425a1b,_0x169bb2,_0x70bdbd));});return BPromise[_0x4402('0xb3')](_0x23306f);});});})[_0x4402('0x34')](function(_0x1ba5a1){_0x370878[_0x4402('0xb4')]=_0x1ba5a1;return _0x370878;})[_0x4402('0x34')](respondWithFilteredResult(_0x3236fc,_0x5e7872))[_0x4402('0x41')](handleError(_0x3236fc,null));};exports[_0x4402('0xb5')]=function(_0xe37b11,_0x385b8e){var _0x418070={'raw':![],'where':{'id':_0xe37b11[_0x4402('0xb6')]['id']}},_0x47a76a={};_0x47a76a[_0x4402('0x47')]=_[_0x4402('0x49')](db[_0x4402('0x43')][_0x4402('0x44')]);_0x47a76a[_0x4402('0x48')]=_['keys'](_0xe37b11['query']);_0x47a76a[_0x4402('0x4a')]=_[_0x4402('0x4b')](_0x47a76a[_0x4402('0x47')],_0x47a76a['query']);_0x418070['attributes']=_['intersection'](_0x47a76a['model'],qs[_0x4402('0x4c')](_0xe37b11[_0x4402('0x48')][_0x4402('0x4c')]));_0x418070['attributes']=_0x418070[_0x4402('0x4d')][_0x4402('0x4e')]?_0x418070[_0x4402('0x4d')]:_0x47a76a['model'];if(_0xe37b11[_0x4402('0x48')]['includeAll']){_0x418070[_0x4402('0xb7')]=[{'all':!![]}];}_0x418070=_[_0x4402('0x38')]({},_0x418070,_0xe37b11[_0x4402('0xb8')]);return db[_0x4402('0x43')][_0x4402('0x69')](_0x418070)[_0x4402('0x34')](handleEntityNotFound(_0x385b8e,null))['then'](respondWithResult(_0x385b8e,null))[_0x4402('0x41')](handleError(_0x385b8e,null));};exports[_0x4402('0xb9')]=function(_0x3ac6b9,_0x55c3fd){return db[_0x4402('0x43')]['create'](_0x3ac6b9[_0x4402('0x7a')],{})[_0x4402('0x34')](respondWithResult(_0x55c3fd,0xc9))[_0x4402('0x41')](handleError(_0x55c3fd,null));};exports[_0x4402('0x32')]=function(_0x54d6dc,_0x91c49){if(_0x54d6dc[_0x4402('0x7a')]['id']){delete _0x54d6dc[_0x4402('0x7a')]['id'];}return db[_0x4402('0x43')][_0x4402('0x69')]({'where':{'id':_0x54d6dc['params']['id']}})[_0x4402('0x34')](handleEntityNotFound(_0x91c49,null))[_0x4402('0x34')](saveUpdates(_0x54d6dc['body'],null))['then'](respondWithResult(_0x91c49,null))['catch'](handleError(_0x91c49,null));};exports[_0x4402('0x33')]=function(_0x42b774,_0x246ff2){return db[_0x4402('0x43')]['find']({'where':{'id':_0x42b774[_0x4402('0xb6')]['id']}})[_0x4402('0x34')](handleEntityNotFound(_0x246ff2,null))[_0x4402('0x34')](removeEntity(_0x246ff2,null))[_0x4402('0x41')](handleError(_0x246ff2,null));};exports['describe']=function(_0x2a3361,_0x2949ce){return db[_0x4402('0x43')]['describe']()['then'](respondWithResult(_0x2949ce,null))['catch'](handleError(_0x2949ce,null));};exports[_0x4402('0xba')]=function(_0x48bf30,_0x17c5c2){var _0x35c16f=_0x48bf30[_0x4402('0xb6')]['id'];var _0x117911;var _0x87ae2a;var _0xd604a5;return db[_0x4402('0x43')][_0x4402('0xbb')]({'where':{'id':_0x35c16f}})[_0x4402('0x34')](function(_0x423f83){_0x117911=_0x423f83;return db[_0x4402('0xbc')][_0x4402('0xbb')]({'where':{'id':_0x423f83[_0x4402('0x7c')]},'attributes':['id',_0x4402('0xbd'),'vidaooEscalation',_0x4402('0xbe'),_0x4402('0xbf'),'vidaooMetadata'],'raw':!![]});})['then'](function(_0x57fd83){if(_0x57fd83&&_0x57fd83[_0x4402('0xbd')]&&_0x57fd83['vidaooEscalation']){_0x87ae2a=_0x57fd83;var _0x47aa8b={'interaction':{'id':_0x35c16f},'agent':{'id':_0x48bf30[_0x4402('0x9a')]['id'],'name':_0x48bf30[_0x4402('0x9a')]['name'],'fullname':_0x48bf30[_0x4402('0x9a')][_0x4402('0xc0')],'email':_0x48bf30[_0x4402('0x9a')][_0x4402('0xc1')]},'contact':_0x48bf30['body'][_0x4402('0xc2')],'account':_0x48bf30[_0x4402('0x7a')][_0x4402('0x3b')]};var _0x286500={'rejectUnauthorized':![],'method':_0x4402('0xc3'),'url':_0x4402('0xc4'),'headers':{'X-APIKEY':_0x57fd83[_0x4402('0xbd')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x48bf30[_0x4402('0x9a')][_0x4402('0xc1')]],'buttons':null,'topic':_0x87ae2a['vidaooTopic'],'note':_[_0x4402('0xc5')](_0x87ae2a[_0x4402('0xbf')])?null:getMustacheRender(_0x87ae2a[_0x4402('0xbf')],_0x47aa8b),'metadata':null},'redirect':_0x4402('0xc6'),'json':!![]};try{if(!_['isNull'](_0x87ae2a[_0x4402('0xc7')])){var _0x4bf0ff=getMustacheRender(_0x87ae2a[_0x4402('0xc7')],_0x47aa8b);var _0x29ffd4=JSON['parse'](_0x4bf0ff);_0x286500['body'][_0x4402('0xc8')]=_0x29ffd4;}}catch(_0x173f64){throw new db[(_0x4402('0xc9'))][(_0x4402('0xca'))](_0x4402('0xcb'));}return rp(_0x286500);}else{throw new db[(_0x4402('0xc9'))]['ValidationError']('Error\x20in\x20Vidaoo\x20configuration');}})[_0x4402('0x34')](function(_0x54e61e){_0xd604a5=_0x54e61e;if(_0xd604a5['id']){var _0xc47081={'body':_0xd604a5[_0x4402('0xcc')],'ChatWebsiteId':_0x87ae2a['id'],'ChatInteractionId':_0x117911['id'],'direction':_0x4402('0xcd'),'UserId':_0x48bf30[_0x4402('0x9a')]['id']};return db['ChatMessage'][_0x4402('0xb9')](_0xc47081,{});}else{throw new db[(_0x4402('0xc9'))][(_0x4402('0xca'))](_0x4402('0xce'));}})[_0x4402('0x34')](function(){return _0x117911[_0x4402('0xcf')]({'vidaooSessionId':_0xd604a5['id']});})['then'](respondWithResult(_0x17c5c2,null))['catch'](handleError(_0x17c5c2,null));};exports[_0x4402('0xd0')]=function(_0x5a768b,_0x38d7b5){if(_0x5a768b[_0x4402('0x7a')]['id']){delete _0x5a768b['body']['id'];}return db[_0x4402('0x43')]['find']({'where':{'id':_0x5a768b[_0x4402('0xb6')]['id']},'include':[{'model':db[_0x4402('0xd1')],'as':_0x4402('0x6e')}]})['then'](handleEntityNotFound(_0x38d7b5,null))[_0x4402('0x34')](saveUpdates(_0x5a768b['body'],null))[_0x4402('0x34')](respondWithResult(_0x38d7b5,null))[_0x4402('0x41')](handleError(_0x38d7b5,null));};exports[_0x4402('0xd2')]=function(_0x1fc790,_0xaaf390,_0x53be9e){if(_0x1fc790['body']['id']){delete _0x1fc790[_0x4402('0x7a')]['id'];}return db['ChatInteraction'][_0x4402('0x69')]({'where':{'id':_0x1fc790[_0x4402('0xb6')]['id']}})['then'](function(_0x50d453){if(!_0x50d453){logger[_0x4402('0x24')](_0x4402('0xd3'),_0x4402('0xd2'),0x194,_0x4402('0xd4'));_0xaaf390[_0x4402('0x35')](0x194);}else{if(_0x50d453[_0x4402('0x78')]){throw new db[(_0x4402('0xc9'))][(_0x4402('0xca'))]('Interaction\x20already\x20assigned');}}return _0x50d453;})['then'](function(_0xf3be9){if(_0xf3be9){return _0xf3be9[_0x4402('0x32')]({'closed':_0x1fc790[_0x4402('0x7a')]['closed'],'disposition':_0x1fc790[_0x4402('0x7a')]['disposition']})[_0x4402('0x34')](function(_0x1237a3){return _0x1237a3;});}})[_0x4402('0x34')](function(_0x4a0fd9){return respondWithRpcPromise(_0x4402('0xd5'),_0x4402('0xd2'),_0x1fc790['body'],client9004);})[_0x4402('0x34')](respondWithResult(_0xaaf390,null))[_0x4402('0x41')](handleError(_0xaaf390,null));};exports[_0x4402('0xd6')]=function(_0x8c436d,_0x15e9d3,_0xa0d1ee){_0x8c436d[_0x4402('0x7a')][_0x4402('0x36')]=_0x8c436d[_0x4402('0xd7')][_0x4402('0xd8')];_0x8c436d[_0x4402('0x7a')][_0x4402('0xd9')]=_0x8c436d['file'][_0x4402('0xda')];_0x8c436d[_0x4402('0x7a')][_0x4402('0x73')]=_0x8c436d[_0x4402('0xd7')][_0x4402('0xdb')];return db[_0x4402('0xdc')][_0x4402('0xb9')](_0x8c436d[_0x4402('0x7a')])[_0x4402('0x34')](respondWithResult(_0x15e9d3,0xc9))['catch'](handleError(_0x15e9d3,null));};exports[_0x4402('0xdd')]=function(_0x113451,_0x338e97,_0x4c6d4e){return db[_0x4402('0x43')][_0x4402('0xbb')]({'where':{'id':_0x113451['params']['id']},'raw':!![]})[_0x4402('0x34')](handleEntityNotFound(_0x338e97,null))[_0x4402('0x34')](function(_0x491a8e){if(_0x491a8e){if(_0x491a8e['closed']){return _0x338e97[_0x4402('0x28')](0x193)[_0x4402('0x2e')]({'status':0x193,'message':_0x4402('0xde')});}return db[_0x4402('0xdc')]['findOne']({'where':{'id':_0x113451[_0x4402('0x48')]['attachId']},'raw':!![]})[_0x4402('0x34')](handleEntityNotFound(_0x338e97,null));}})[_0x4402('0x34')](function(_0x171672){if(_0x171672){var _0xdbd1c8=_0x171672[_0x4402('0xdf')]!==null;var _0x5d190e=path[_0x4402('0xe0')](config[_0x4402('0xe1')],_0x4402('0xe2'));if(_0xdbd1c8){_0x5d190e=path[_0x4402('0xe0')](_0x5d190e,_0x4402('0xe3'));}var _0x23de88=path[_0x4402('0xe0')](_0x5d190e,_0x171672[_0x4402('0xd9')]);return _0x338e97[_0x4402('0xe4')](_0x23de88);}})[_0x4402('0x41')](handleError(_0x338e97,null));};exports[_0x4402('0xe5')]=function(_0x55274b,_0x2afc41){var _0x1c5cad=null;var _0x3b8f77=null;var _0x2b3b75=null;var _0x1ba411=null;if(_0x55274b[_0x4402('0x7a')]['id']){delete _0x55274b[_0x4402('0x7a')]['id'];}if(_0x55274b[_0x4402('0x7a')][_0x4402('0xe6')]){_0x1ba411=path[_0x4402('0xe0')](config['root'],_0x4402('0xe7'),util[_0x4402('0xe8')](_0x4402('0xe9'),Date['now']()));_0x55274b[_0x4402('0x7a')][_0x4402('0xea')]=_0x1ba411;}return db['ChatInteraction'][_0x4402('0x69')]({'where':{'id':_0x55274b[_0x4402('0xb6')]['id']},'include':[{'model':db[_0x4402('0xeb')],'as':_0x4402('0xec'),'include':[{'model':db[_0x4402('0x77')],'as':_0x4402('0x77')}]}]})[_0x4402('0x34')](handleEntityNotFound(_0x2afc41,null))[_0x4402('0x34')](saveUpdates(_0x55274b[_0x4402('0x7a')],null))[_0x4402('0x34')](function(_0x2d86c7){if(_0x2d86c7){_0x1c5cad=_0x2d86c7;return db['ChatWebsite'][_0x4402('0x69')]({'where':{'id':_0x1c5cad[_0x4402('0x7c')]}});}})[_0x4402('0x34')](function(_0x47837e){if(_0x47837e){_0x2b3b75=_0x47837e;return db[_0x4402('0xd1')][_0x4402('0x69')]({'where':{'id':_0x1c5cad[_0x4402('0xed')]}});}})[_0x4402('0x34')](function(_0x259c23){if(_0x259c23){_0x3b8f77=_0x259c23;if(_0x1ba411){var _0x535d83=null;for(var _0x2f3d6e=0x1;_0x2f3d6e<_0x1c5cad['Messages'][_0x4402('0x4e')];++_0x2f3d6e){_0x535d83=_0x1c5cad[_0x4402('0xec')][_0x2f3d6e];var _0x395d17=_0x535d83[_0x4402('0x78')]?util[_0x4402('0xe8')](_0x4402('0xee'),_0x2b3b75[_0x4402('0xef')],_0x535d83[_0x4402('0x78')]):_0x4402('0xf0');var _0x51bdf7=_0x55274b[_0x4402('0x7a')]['customer']||util[_0x4402('0xe8')](_0x4402('0xee'),_0x4402('0xf1'),_0x535d83[_0x4402('0xed')]);switch(_0x2b3b75[_0x4402('0xf2')]){case _0x4402('0xf3'):_0x395d17=_0x535d83['UserId']?util[_0x4402('0xe8')]('%s%d',_0x2b3b75[_0x4402('0xef')],_0x535d83['UserId']):_0x4402('0xf0');break;case _0x4402('0xf4'):_0x395d17=_0x535d83[_0x4402('0x78')]?_0x535d83[_0x4402('0x77')][_0x4402('0xf5')]||_0x535d83[_0x4402('0x77')][_0x4402('0xc0')]:_0x4402('0xf0');break;case _0x4402('0xf6'):_0x395d17=_0x535d83['UserId']?_0x535d83[_0x4402('0x77')]['fullname']:'System';break;default:_0x395d17=_0x535d83['UserId']?util[_0x4402('0xe8')](_0x4402('0xee'),_0x2b3b75[_0x4402('0xef')],_0x535d83['UserId']):_0x4402('0xf0');}var _0x1accec=util[_0x4402('0xe8')](_0x4402('0xf7'),moment(_0x535d83[_0x4402('0x7f')])[_0x4402('0xe8')](_0x4402('0xf8')),_0x535d83[_0x4402('0xf9')]==='in'?_0x51bdf7:_0x395d17,_0x535d83[_0x4402('0x7a')]);if(!_0x535d83[_0x4402('0xfa')]){fs[_0x4402('0xfb')](_0x1ba411,_0x1accec);}}return db['MailAccount']['findOne']({'where':{'service':!![]},'include':[{'model':db[_0x4402('0xfc')],'as':_0x4402('0xfd'),'raw':!![]}]});}}})[_0x4402('0x34')](function(_0x23dbb4){if(_0x23dbb4&&_0x23dbb4[_0x4402('0xfd')]&&_0x55274b['body']){var _0x494b72={'tls':{'rejectUnauthorized':![]}};if(_0x23dbb4[_0x4402('0xfd')][_0x4402('0xfe')]){_0x494b72[_0x4402('0xfe')]=_0x23dbb4[_0x4402('0xfd')][_0x4402('0xfe')];}else{_0x494b72[_0x4402('0xff')]=_0x23dbb4[_0x4402('0xfd')][_0x4402('0xff')];_0x494b72[_0x4402('0x100')]=_0x23dbb4[_0x4402('0xfd')][_0x4402('0x100')];_0x494b72[_0x4402('0x101')]=_0x23dbb4[_0x4402('0xfd')][_0x4402('0x101')];}if(_0x23dbb4[_0x4402('0xfd')][_0x4402('0x102')]){_0x494b72[_0x4402('0x103')]={'user':_0x23dbb4[_0x4402('0xfd')][_0x4402('0x9a')],'pass':_0x23dbb4[_0x4402('0xfd')][_0x4402('0x104')]};}return respondWithRpcPromise(_0x4402('0x105'),_0x4402('0x106'),{'account':_0x494b72,'message':{'from':util[_0x4402('0xe8')](_0x4402('0x107'),_0x23dbb4[_0x4402('0x36')],_0x23dbb4['email']||_0x23dbb4[_0x4402('0xfd')][_0x4402('0x9a')]),'to':_0x55274b[_0x4402('0x7a')][_0x4402('0xe6')],'subject':_0x4402('0x108'),'text':util[_0x4402('0xe8')](_0x4402('0x109'),_0x55274b[_0x4402('0x7a')][_0x4402('0xe6')]),'attachments':[{'path':_0x1ba411}]}})['then'](function(){return _0x1c5cad;})[_0x4402('0x41')](function(_0x3ba561){console[_0x4402('0x24')](_0x3ba561);});}else{return _0x1c5cad;}})[_0x4402('0x34')](respondWithStatusCode(_0x2afc41,0xc8))[_0x4402('0x41')](handleError(_0x2afc41,null));};exports[_0x4402('0x10a')]=function(_0x10f917,_0x1155d1,_0x17c1ee){return db['ChatMessage'][_0x4402('0x69')]({'where':{'id':_0x10f917[_0x4402('0xb6')]['id']}})[_0x4402('0x34')](handleEntityNotFound(_0x1155d1,null))[_0x4402('0x34')](function(_0x37ea8d){if(_0x37ea8d){return _0x37ea8d[_0x4402('0x10a')](_0x10f917[_0x4402('0x7a')]['ids'],_[_0x4402('0x10b')](_0x10f917[_0x4402('0x7a')],['ids','id'])||{});}})[_0x4402('0x34')](respondWithResult(_0x1155d1,null))[_0x4402('0x41')](handleError(_0x1155d1,null));};exports[_0x4402('0x10c')]=function(_0x3e78da,_0x1bf636,_0x44b095){var _0x2433a1={'raw':![],'where':{}};var _0x4069cf={};var _0x7be513={'count':0x0,'rows':[]};return db[_0x4402('0x43')][_0x4402('0xbb')]({'where':{'id':_0x3e78da[_0x4402('0xb6')]['id']}})[_0x4402('0x34')](handleEntityNotFound(_0x1bf636,null))[_0x4402('0x34')](function(_0x1f2219){if(_0x1f2219){_0x4069cf[_0x4402('0x47')]=_[_0x4402('0x49')](db[_0x4402('0xeb')][_0x4402('0x44')]);_0x4069cf[_0x4402('0x48')]=_[_0x4402('0x49')](_0x3e78da[_0x4402('0x48')]);_0x4069cf[_0x4402('0x4a')]=_[_0x4402('0x4b')](_0x4069cf[_0x4402('0x47')],_0x4069cf[_0x4402('0x48')]);_0x2433a1[_0x4402('0x4d')]=_[_0x4402('0x4b')](_0x4069cf[_0x4402('0x47')],qs[_0x4402('0x4c')](_0x3e78da[_0x4402('0x48')]['fields']));_0x2433a1[_0x4402('0x4d')]=_0x2433a1['attributes']['length']?_0x2433a1[_0x4402('0x4d')]:_0x4069cf[_0x4402('0x47')];if(!_0x3e78da[_0x4402('0x48')][_0x4402('0x10d')](_0x4402('0x4f'))){_0x2433a1['limit']=qs[_0x4402('0x2a')](_0x3e78da[_0x4402('0x48')][_0x4402('0x2a')]);_0x2433a1['offset']=qs[_0x4402('0x29')](_0x3e78da[_0x4402('0x48')][_0x4402('0x29')]);}_0x2433a1[_0x4402('0x94')]=qs['sort'](_0x3e78da[_0x4402('0x48')][_0x4402('0x10e')]);_0x2433a1['where']=qs['filters'](_['pick'](_0x3e78da['query'],_0x4069cf[_0x4402('0x4a')]));_0x2433a1[_0x4402('0x50')][_0x4402('0xb1')]=_0x1f2219['id'];if(_0x3e78da['query'][_0x4402('0x8a')]){_0x2433a1[_0x4402('0x50')]=_[_0x4402('0x38')](_0x2433a1['where'],{'$or':_[_0x4402('0x42')](_0x2433a1[_0x4402('0x4d')],function(_0x2466a1){var _0x55ed20={};_0x55ed20[_0x2466a1]={'$like':'%'+_0x3e78da[_0x4402('0x48')][_0x4402('0x8a')]+'%'};return _0x55ed20;})});}if(_0x3e78da['query'][_0x4402('0x10f')]){var _0x335d93=_0x3e78da[_0x4402('0x48')][_0x4402('0x10f')]['split'](',');var _0x3aebf6={};_0x3aebf6[_0x335d93[0x0]]={'$gte':moment(_0x335d93[0x1])['format'](_0x4402('0x110'))};_0x2433a1['where']=_['merge'](_0x2433a1[_0x4402('0x50')],_0x3aebf6);}_0x2433a1=_[_0x4402('0x38')]({},_0x2433a1,_0x3e78da[_0x4402('0xb8')]);return db[_0x4402('0xeb')][_0x4402('0x2c')]({'where':_0x2433a1[_0x4402('0x50')]})[_0x4402('0x34')](function(_0x87e1c){_0x7be513['count']=_0x87e1c;if(_0x3e78da[_0x4402('0x48')][_0x4402('0x111')]){_0x2433a1[_0x4402('0xb7')]=[{'all':!![]}];}return db[_0x4402('0xeb')][_0x4402('0x112')](_0x2433a1);})['then'](function(_0x20b540){_0x7be513['rows']=_0x20b540;return _0x7be513;});}})[_0x4402('0x34')](respondWithFilteredResult(_0x1bf636,_0x2433a1))[_0x4402('0x41')](handleError(_0x1bf636,null));};exports[_0x4402('0x113')]=function(_0x516583,_0x182827,_0x284292){var _0x579bab={'where':{}},_0x30cdd6={},_0x1ac943={'count':0x0,'rows':[]};return db[_0x4402('0x43')][_0x4402('0xbb')]({'where':{'id':_0x516583[_0x4402('0xb6')]['id']}})[_0x4402('0x34')](handleEntityNotFound(_0x182827,null))[_0x4402('0x34')](function(_0xe8f398){if(_0xe8f398){_0x30cdd6[_0x4402('0x47')]=_[_0x4402('0x49')](db[_0x4402('0xeb')][_0x4402('0x44')]);_0x30cdd6[_0x4402('0x48')]=_[_0x4402('0x49')](_0x516583['query']);_0x30cdd6[_0x4402('0x4a')]=_[_0x4402('0x4b')](_0x30cdd6[_0x4402('0x47')],_0x30cdd6[_0x4402('0x48')]);_0x579bab[_0x4402('0x4d')]=_[_0x4402('0x4b')](_0x30cdd6[_0x4402('0x47')],qs[_0x4402('0x4c')](_0x516583['query'][_0x4402('0x4c')]));_0x579bab[_0x4402('0x4d')]=_0x579bab[_0x4402('0x4d')]['length']?_0x579bab[_0x4402('0x4d')]:_0x30cdd6[_0x4402('0x47')];if(!_0x516583[_0x4402('0x48')][_0x4402('0x10d')](_0x4402('0x4f'))){_0x579bab[_0x4402('0x2a')]=qs[_0x4402('0x2a')](_0x516583['query']['limit']);_0x579bab[_0x4402('0x29')]=qs[_0x4402('0x29')](_0x516583[_0x4402('0x48')][_0x4402('0x29')]);}_0x579bab[_0x4402('0x94')]=qs['sort'](_0x516583[_0x4402('0x48')][_0x4402('0x10e')]);_0x579bab[_0x4402('0x50')]=qs['filters'](_[_0x4402('0x51')](_0x516583['query'],_0x30cdd6[_0x4402('0x4a')]));_0x579bab[_0x4402('0x50')][_0x4402('0xb1')]=_0xe8f398['id'];if(_0x516583[_0x4402('0x48')]['filter']){_0x579bab[_0x4402('0x50')]=_[_0x4402('0x38')](_0x579bab[_0x4402('0x50')],{'$or':_[_0x4402('0x42')](_0x579bab[_0x4402('0x4d')],function(_0x3adad4){var _0x207b70={};_0x207b70[_0x3adad4]={'$like':'%'+_0x516583['query']['filter']+'%'};return _0x207b70;})});}_0x579bab[_0x4402('0x50')][_0x4402('0xfa')]=![];if(_0x516583[_0x4402('0x48')]['id']){_0x579bab['where']['id']={'$gt':_0x516583[_0x4402('0x48')]['id']};}_0x579bab=_[_0x4402('0x38')]({},_0x579bab,_0x516583[_0x4402('0xb8')]);return db['ChatMessage'][_0x4402('0x2c')]({'where':_0x579bab['where']})[_0x4402('0x34')](function(_0x2903fd){_0x1ac943[_0x4402('0x2c')]=_0x2903fd;_0x579bab['include']=[];if(_0x516583[_0x4402('0x48')][_0x4402('0x114')]){_0x579bab['include']['push']({'model':db['User'],'as':'User','attributes':['id',_0x4402('0xc0'),'alias']});}if(_0x516583['query'][_0x4402('0x111')]){_0x579bab['include']=[{'all':!![]}];}return db[_0x4402('0xeb')][_0x4402('0x112')](_0x579bab);})['then'](function(_0x230904){_0x1ac943[_0x4402('0xb4')]=_0x230904;return _0x1ac943;});}})[_0x4402('0x34')](respondWithFilteredResult(_0x182827,_0x579bab))['catch'](handleError(_0x182827,null));};exports[_0x4402('0x115')]=function(_0x5f42bc,_0x50999c,_0xc4375e){return db['ChatInteraction'][_0x4402('0x69')]({'where':{'id':_0x5f42bc['params']['id']}})[_0x4402('0x34')](handleEntityNotFound(_0x50999c,null))[_0x4402('0x34')](function(_0x21a6d2){if(_0x21a6d2){return _0x21a6d2[_0x4402('0x116')](_0x5f42bc[_0x4402('0x7a')][_0x4402('0x117')],_[_0x4402('0x10b')](_0x5f42bc[_0x4402('0x7a')],[_0x4402('0x117'),'id'])||{})[_0x4402('0x118')](function(){return db[_0x4402('0x75')][_0x4402('0x112')]({'attributes':['id',_0x4402('0x36'),_0x4402('0x119')],'where':{'id':_0x5f42bc[_0x4402('0x7a')]['ids']}});})[_0x4402('0x34')](function(_0x132621){socket[_0x4402('0x11a')](_0x4402('0x11b'),{'id':Number(_0x5f42bc[_0x4402('0xb6')]['id']),'tags':_0x132621||[]});return{'id':Number(_0x5f42bc[_0x4402('0xb6')]['id']),'tags':_0x132621||[]};});}})[_0x4402('0x34')](respondWithResult(_0x50999c,null))[_0x4402('0x41')](handleError(_0x50999c,null));};exports[_0x4402('0x11c')]=function(_0x4e0ae2,_0x21e2c8,_0x1845d8){return db[_0x4402('0x43')]['find']({'where':{'id':_0x4e0ae2[_0x4402('0xb6')]['id']}})['then'](handleEntityNotFound(_0x21e2c8,null))[_0x4402('0x34')](function(_0x424e93){if(_0x424e93){return _0x424e93[_0x4402('0x11c')](_0x4e0ae2[_0x4402('0x48')]['ids']);}})[_0x4402('0x34')](respondWithStatusCode(_0x21e2c8,null))['catch'](handleError(_0x21e2c8,null));};exports[_0x4402('0xe4')]=function(_0x4cb0bf,_0x2a586e){var _0x5325a7=moment()[_0x4402('0x11d')]()['toString']();var _0x157060=path[_0x4402('0xe0')](config[_0x4402('0xe1')],_0x4402('0x11e'),_0x4402('0x11f'),_0x4402('0x120'));var _0x2ead56=path[_0x4402('0xe0')](config['root'],_0x4402('0x11e'),_0x4402('0x11f'),_0x4402('0x121'));var _0x31d19c=path[_0x4402('0xe0')](_0x157060,_0x5325a7);var _0x1675b2=util[_0x4402('0xe8')](_0x4402('0x122'),_0x4cb0bf['params']['id'],_0x5325a7);var _0xe5e2f3=path[_0x4402('0xe0')](_0x157060,_0x1675b2);var _0x22c8a1=[];_0x22c8a1[_0x4402('0xb2')]({'model':db[_0x4402('0x77')],'as':_0x4402('0x77'),'attributes':['id',_0x4402('0xc0')],'raw':!![]});_0x22c8a1[_0x4402('0xb2')]({'model':db[_0x4402('0xd1')],'as':_0x4402('0x6e'),'attributes':['id',_0x4402('0x123'),'lastName'],'raw':!![]});if(_0x4cb0bf[_0x4402('0x48')]['attachments']){_0x22c8a1[_0x4402('0xb2')]({'model':db[_0x4402('0xdc')],'as':_0x4402('0xdc'),'raw':!![]});}var _0x177297=[{'model':db['ChatMessage'],'as':_0x4402('0xec'),'attributes':['id','body',_0x4402('0x7f'),'direction',_0x4402('0xfa'),_0x4402('0x85')],'include':_0x22c8a1}];_0x177297[_0x4402('0xb2')]({'model':db[_0x4402('0xbc')],'as':_0x4402('0x124'),'attributes':['id',_0x4402('0x36')]});_0x177297[_0x4402('0xb2')]({'model':db[_0x4402('0x77')],'as':'Owner','attributes':['id',_0x4402('0xc0')]});return db[_0x4402('0x43')][_0x4402('0x69')]({'where':{'id':_0x4cb0bf[_0x4402('0xb6')]['id']},'include':_0x177297})[_0x4402('0x34')](handleEntityNotFound(_0x2a586e,null))[_0x4402('0x34')](function(_0x140207){if(_0x140207){var _0x1d2478=_0x140207[_0x4402('0x125')]({'plain':!![]});fs[_0x4402('0x126')](_0x31d19c);var _0x286a77={'channel':_0x4402('0x127'),'account':_0x1d2478[_0x4402('0x124')][_0x4402('0x36')],'agent':_0x1d2478['Owner']?_0x1d2478[_0x4402('0x128')][_0x4402('0xc0')]:_0x4402('0x129'),'createdAt':moment(_0x1d2478[_0x4402('0x7f')])[_0x4402('0xe8')](_0x4402('0x110'))[_0x4402('0x9e')](),'closedAt':_0x1d2478[_0x4402('0x12a')]?moment(_0x1d2478['closedAt'])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x4402('0x9e')]():'','disposition':_0x1d2478['disposition'],'chatInfo':{'browser':_0x1d2478[_0x4402('0x12b')],'os':_0x1d2478['osName'],'referer':_0x1d2478[_0x4402('0x12c')],'customerIp':_0x1d2478[_0x4402('0x12d')],'customerPort':_0x1d2478[_0x4402('0x12e')]?_0x1d2478['customerPort']:_0x4402('0x129')},'messages':_(_0x1d2478[_0x4402('0xec')])[_0x4402('0x12f')]()[_0x4402('0x8a')]({'secret':![]})['map'](function(_0x633496){if(_0x633496[_0x4402('0xdc')]){var _0x5862a7=path[_0x4402('0xe0')](_0x2ead56,_0x633496['Attachment'][_0x4402('0xd9')]);if(fs[_0x4402('0x130')](_0x5862a7)){fs[_0x4402('0x131')](_0x5862a7)[_0x4402('0x132')](fs[_0x4402('0x133')](path[_0x4402('0xe0')](_0x31d19c,_0x633496[_0x4402('0xdc')][_0x4402('0xd9')])));}}return{'date':moment(_0x633496[_0x4402('0x7f')])[_0x4402('0xe8')](_0x4402('0x110'))[_0x4402('0x9e')](),'sender':_0x633496['direction']===_0x4402('0xcd')?_0x633496[_0x4402('0x77')]?_0x633496[_0x4402('0x77')][_0x4402('0xc0')]:_0x4402('0xf0'):_0x633496['Contact'][_0x4402('0x123')]+(_0x633496[_0x4402('0x6e')][_0x4402('0x134')]?'\x20'+_0x633496[_0x4402('0x6e')][_0x4402('0x134')]:''),'body':_0x633496[_0x4402('0xdc')]?_0x633496[_0x4402('0xdc')]['basename']:_0x633496[_0x4402('0x7a')],'direction':_0x633496['direction']===_0x4402('0xcd')?'A':'C','secret':_0x633496[_0x4402('0xfa')],'read':_0x633496[_0x4402('0x85')],'attachment':_0x633496['Attachment']};})[_0x4402('0x6b')]()};return ejs[_0x4402('0x135')](path[_0x4402('0xe0')](config[_0x4402('0xe1')],_0x4402('0x11e'),'views','downloadInteraction.ejs'),{'interaction':_0x286a77})['then'](function(_0x5b8cd8){var _0x3fc6b3=path[_0x4402('0xe0')](_0x31d19c,'transcript-'+_0x1d2478['id']+'-'+_0x5325a7+_0x4402('0x136'));var _0x15bbe1={'path':_0x3fc6b3,'channel':_0x4402('0x127'),'interactionId':_0x1d2478['id']};return pdf[_0x4402('0x137')](_0x5b8cd8,_0x15bbe1);})[_0x4402('0x34')](function(){return new BPromise(function(_0x303680,_0x281eaa){zipdir(_0x31d19c,{'saveTo':_0xe5e2f3},function(_0x1baf42,_0x3d743e){if(_0x1baf42)return _0x281eaa(_0x1baf42);return _0x303680(_0x3d743e);});})[_0x4402('0x34')](function(){return new BPromise(function(_0x5ad41f,_0xbeb577){rimraf(_0x31d19c,function(_0x8c8f01){if(_0x8c8f01)_0xbeb577(_0x8c8f01);return _0x5ad41f();});});})[_0x4402('0x34')](function(){return _0x2a586e[_0x4402('0xe4')](_0xe5e2f3,_0x1675b2,function(_0xc36aed){if(_0xc36aed){console['log'](_0x4402('0x138'),_0xc36aed);}else{fs[_0x4402('0x139')](_0xe5e2f3);}});});});}else{return _0x2a586e[_0x4402('0x35')](0xc8);}})[_0x4402('0x41')](handleError(_0x2a586e,null));};
\ No newline at end of file
index 8bbb9ca..f06e8e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cef=['ChatInteraction','../../mysqldb','ChatMessage','update','remove','getUsers','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events'];(function(_0x211bcb,_0x40f1b5){var _0x3de2f0=function(_0x2810ff){while(--_0x2810ff){_0x211bcb['push'](_0x211bcb['shift']());}};_0x3de2f0(++_0x40f1b5);}(_0x7cef,0x6b));var _0xf7ce=function(_0x1b1f54,_0x54bdc6){_0x1b1f54=_0x1b1f54-0x0;var _0x39e3dc=_0x7cef[_0x1b1f54];return _0x39e3dc;};'use strict';var EventEmitter=require(_0xf7ce('0x0'));var ChatInteraction=require('../../mysqldb')['db'][_0xf7ce('0x1')];var ChatMessage=require(_0xf7ce('0x2'))['db'][_0xf7ce('0x3')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xf7ce('0x4'),'afterDestroy':_0xf7ce('0x5')};function emitEvent(_0x5c71f7){return function(_0x4512b2,_0x1987ec,_0x444593){_0x4512b2[_0xf7ce('0x6')]({'attributes':['id'],'raw':!![]})['then'](function(_0x19c6b1){_0x4512b2[_0xf7ce('0x7')](_0xf7ce('0x8'),_0x19c6b1[_0xf7ce('0x9')](function(_0x4b79e9){return{'id':_0x4b79e9['id']};}));return ChatMessage[_0xf7ce('0xa')]({'where':{'ChatInteractionId':_0x4512b2['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x3a8ac1){_0x4512b2[_0xf7ce('0x7')](_0xf7ce('0xb'),_0x3a8ac1[_0xf7ce('0xc')]);ChatInteractionEvents['emit'](_0x5c71f7+':'+_0x4512b2['id'],_0x4512b2);ChatInteractionEvents[_0xf7ce('0xd')](_0x5c71f7,_0x4512b2);_0x444593(null);})[_0xf7ce('0xe')](_0x444593(null));};}for(var e in events){if(events[_0xf7ce('0xf')](e)){var event=events[e];ChatInteraction[_0xf7ce('0x10')](e,emitEvent(event));}}module[_0xf7ce('0x11')]=ChatInteractionEvents;
\ No newline at end of file
+var _0x8b6f=['ChatMessage','setMaxListeners','save','update','remove','getUsers','then','setDataValue','Users','map','unreadMessages','length','catch','hook','exports','events','ChatInteraction'];(function(_0x2f7ee1,_0x238541){var _0x298295=function(_0x124360){while(--_0x124360){_0x2f7ee1['push'](_0x2f7ee1['shift']());}};_0x298295(++_0x238541);}(_0x8b6f,0xa8));var _0xf8b6=function(_0x119ded,_0x497e72){_0x119ded=_0x119ded-0x0;var _0x22108b=_0x8b6f[_0x119ded];return _0x22108b;};'use strict';var EventEmitter=require(_0xf8b6('0x0'));var ChatInteraction=require('../../mysqldb')['db'][_0xf8b6('0x1')];var ChatMessage=require('../../mysqldb')['db'][_0xf8b6('0x2')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0xf8b6('0x3')](0x0);var events={'afterCreate':_0xf8b6('0x4'),'afterUpdate':_0xf8b6('0x5'),'afterDestroy':_0xf8b6('0x6')};function emitEvent(_0x3514a6){return function(_0x5bc9d1,_0x53ab74,_0x3c3589){_0x5bc9d1[_0xf8b6('0x7')]({'attributes':['id'],'raw':!![]})[_0xf8b6('0x8')](function(_0x347c0c){_0x5bc9d1[_0xf8b6('0x9')](_0xf8b6('0xa'),_0x347c0c[_0xf8b6('0xb')](function(_0x401bb0){return{'id':_0x401bb0['id']};}));return ChatMessage['findAll']({'where':{'ChatInteractionId':_0x5bc9d1['id'],'direction':'in','read':![]},'raw':!![]});})[_0xf8b6('0x8')](function(_0x272a5e){_0x5bc9d1[_0xf8b6('0x9')](_0xf8b6('0xc'),_0x272a5e[_0xf8b6('0xd')]);ChatInteractionEvents['emit'](_0x3514a6+':'+_0x5bc9d1['id'],_0x5bc9d1);ChatInteractionEvents['emit'](_0x3514a6,_0x5bc9d1);_0x3c3589(null);})[_0xf8b6('0xe')](_0x3c3589(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInteraction[_0xf8b6('0xf')](e,emitEvent(event));}}module[_0xf8b6('0x10')]=ChatInteractionEvents;
\ No newline at end of file
index 98517fd..676ba33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1aca=['closed','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports','ChatInteraction','chat_interactions','changed'];(function(_0x5ef7b8,_0x15cc07){var _0x2c7148=function(_0x398519){while(--_0x398519){_0x5ef7b8['push'](_0x5ef7b8['shift']());}};_0x2c7148(++_0x15cc07);}(_0x1aca,0x115));var _0xa1ac=function(_0x7ff50b,_0x399dc0){_0x7ff50b=_0x7ff50b-0x0;var _0x43e570=_0x1aca[_0x7ff50b];return _0x43e570;};'use strict';var _=require('lodash');var util=require(_0xa1ac('0x0'));var logger=require(_0xa1ac('0x1'))(_0xa1ac('0x2'));var moment=require(_0xa1ac('0x3'));var BPromise=require('bluebird');var rp=require(_0xa1ac('0x4'));var fs=require('fs');var path=require(_0xa1ac('0x5'));var rimraf=require(_0xa1ac('0x6'));var config=require(_0xa1ac('0x7'));var attributes=require('./chatInteraction.attributes');module[_0xa1ac('0x8')]=function(_0x141cb4,_0x30ac82){return _0x141cb4['define'](_0xa1ac('0x9'),attributes,{'tableName':_0xa1ac('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x3a36af,_0x1fbdf0,_0x40dabb){if(_0x3a36af[_0xa1ac('0xb')](_0xa1ac('0xc'))){_0x3a36af['closedAt']=moment()[_0xa1ac('0xd')](_0xa1ac('0xe'));}_0x40dabb(null,_0x3a36af);}},'charset':_0xa1ac('0xf'),'collate':_0xa1ac('0x10')});};
\ No newline at end of file
+var _0x7232=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./chatInteraction.attributes','ChatInteraction','chat_interactions','closed','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','lodash','util'];(function(_0xdf5c3e,_0x32b9ec){var _0x19454f=function(_0x117c12){while(--_0x117c12){_0xdf5c3e['push'](_0xdf5c3e['shift']());}};_0x19454f(++_0x32b9ec);}(_0x7232,0x1b0));var _0x2723=function(_0x1fc508,_0xc233c1){_0x1fc508=_0x1fc508-0x0;var _0x352275=_0x7232[_0x1fc508];return _0x352275;};'use strict';var _=require(_0x2723('0x0'));var util=require(_0x2723('0x1'));var logger=require(_0x2723('0x2'))('api');var moment=require(_0x2723('0x3'));var BPromise=require(_0x2723('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2723('0x5'));var rimraf=require(_0x2723('0x6'));var config=require(_0x2723('0x7'));var attributes=require(_0x2723('0x8'));module['exports']=function(_0x199f00,_0x5395e1){return _0x199f00['define'](_0x2723('0x9'),attributes,{'tableName':_0x2723('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x283374,_0x3d1276,_0x24cd29){if(_0x283374['changed'](_0x2723('0xb'))){_0x283374['closedAt']=moment()['format'](_0x2723('0xc'));}_0x24cd29(null,_0x283374);}},'charset':_0x2723('0xd'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 1b9983d..4e4af2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x275d=['result','UpdateChatInteraction','update','options','where','attributes','limit','catch','ChatInteraction','find','addTags','body','ids','omit','spread','AddTags','lodash','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','register','request','then','info','ChatInteraction,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message'];(function(_0x3c5ec,_0x58c840){var _0xdb14d2=function(_0x5d8fa8){while(--_0x5d8fa8){_0x3c5ec['push'](_0x3c5ec['shift']());}};_0xdb14d2(++_0x58c840);}(_0x275d,0x1a0));var _0xd275=function(_0x207811,_0x3420a6){_0x207811=_0x207811-0x0;var _0x170d56=_0x275d[_0x207811];return _0x170d56;};'use strict';var _=require(_0xd275('0x0'));var util=require('util');var moment=require(_0xd275('0x1'));var BPromise=require(_0xd275('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd275('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xd275('0x4'));var logger=require(_0xd275('0x5'))(_0xd275('0x6'));var config=require(_0xd275('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xd275('0x8')][_0xd275('0x9')]({'port':0x232a});config[_0xd275('0xa')]=_[_0xd275('0xb')](config[_0xd275('0xa')],{'host':_0xd275('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd275('0xa')]));require('./chatInteraction.socket')[_0xd275('0xd')](socket);function respondWithRpcPromise(_0xd2d2eb,_0x199396,_0x8c5ee1){return new BPromise(function(_0x360fcc,_0x5cae32){return client[_0xd275('0xe')](_0xd2d2eb,_0x8c5ee1)[_0xd275('0xf')](function(_0x45f6f2){logger[_0xd275('0x10')](_0xd275('0x11'),_0x199396,'request\x20sent');logger[_0xd275('0x12')]('ChatInteraction,\x20%s,\x20%s,\x20%s',_0x199396,_0xd275('0x13'),JSON[_0xd275('0x14')](_0x45f6f2));if(_0x45f6f2[_0xd275('0x15')]){if(_0x45f6f2[_0xd275('0x15')][_0xd275('0x16')]===0x1f4){logger[_0xd275('0x15')](_0xd275('0x11'),_0x199396,_0x45f6f2[_0xd275('0x15')][_0xd275('0x17')]);return _0x5cae32(_0x45f6f2['error'][_0xd275('0x17')]);}logger[_0xd275('0x15')](_0xd275('0x11'),_0x199396,_0x45f6f2['error'][_0xd275('0x17')]);return _0x360fcc(_0x45f6f2[_0xd275('0x15')][_0xd275('0x17')]);}else{logger[_0xd275('0x10')](_0xd275('0x11'),_0x199396,_0xd275('0x13'));_0x360fcc(_0x45f6f2[_0xd275('0x18')][_0xd275('0x17')]);}})['catch'](function(_0x23da3a){logger[_0xd275('0x15')](_0xd275('0x11'),_0x199396,_0x23da3a);_0x5cae32(_0x23da3a);});});}exports[_0xd275('0x19')]=function(_0x5039b6){var _0x3034e2=this;return new Promise(function(_0x43305f,_0x489ec0){return db['ChatInteraction'][_0xd275('0x1a')](_0x5039b6['body'],{'raw':_0x5039b6[_0xd275('0x1b')]?_0x5039b6[_0xd275('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5039b6[_0xd275('0x1b')]?_0x5039b6[_0xd275('0x1b')][_0xd275('0x1c')]||null:null,'attributes':_0x5039b6['options']?_0x5039b6[_0xd275('0x1b')][_0xd275('0x1d')]||null:null,'limit':_0x5039b6[_0xd275('0x1b')]?_0x5039b6[_0xd275('0x1b')][_0xd275('0x1e')]||null:null})[_0xd275('0xf')](function(_0x7aaa30){logger['info'](_0xd275('0x19'),_0x5039b6);logger[_0xd275('0x12')](_0xd275('0x19'),_0x5039b6,JSON[_0xd275('0x14')](_0x7aaa30));_0x43305f(_0x7aaa30);})[_0xd275('0x1f')](function(_0x140bdd){logger[_0xd275('0x15')]('UpdateChatInteraction',_0x140bdd[_0xd275('0x17')],_0x5039b6);_0x489ec0(_0x3034e2['error'](0x1f4,_0x140bdd[_0xd275('0x17')]));});});};exports['AddTagsToChatInteraction']=function(_0x37b291){return new Promise(function(_0xbc28c7,_0xf14311){return db[_0xd275('0x20')][_0xd275('0x21')]({'where':_0x37b291[_0xd275('0x1b')]?_0x37b291[_0xd275('0x1b')][_0xd275('0x1c')]||null:null})[_0xd275('0xf')](function(_0x4fa97a){if(_0x4fa97a){return _0x4fa97a[_0xd275('0x22')](_0x37b291[_0xd275('0x23')][_0xd275('0x24')],_[_0xd275('0x25')](_0x37b291['body'],[_0xd275('0x24'),'id'])||{});}})[_0xd275('0x26')](function(_0x5226eb){logger[_0xd275('0x10')](_0xd275('0x27'),_0x37b291);logger[_0xd275('0x12')]('AddTags',_0x37b291,JSON['stringify'](_0x5226eb));_0xbc28c7(_0x5226eb);})[_0xd275('0x1f')](function(_0x43487e){logger[_0xd275('0x15')](_0xd275('0x27'),_0x43487e[_0xd275('0x17')],_0x37b291);_0xf14311(_this[_0xd275('0x15')](0x1f4,_0x43487e[_0xd275('0x17')]));});});};
\ No newline at end of file
+var _0x31cf=['result','catch','ChatInteraction','update','body','raw','options','where','UpdateChatInteraction','AddTagsToChatInteraction','addTags','ids','omit','AddTags','lodash','util','bluebird','ioredis','rpc','jayson/promise','http','redis','localhost','socket.io-emitter','request','then','info','ChatInteraction,\x20%s,\x20%s','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x45b034,_0x3a57dd){var _0x509cb0=function(_0x3a89d5){while(--_0x3a89d5){_0x45b034['push'](_0x45b034['shift']());}};_0x509cb0(++_0x3a57dd);}(_0x31cf,0x1d5));var _0xf31c=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0x31cf[_0x1caf6a];return _0x1bf493;};'use strict';var _=require(_0xf31c('0x0'));var util=require(_0xf31c('0x1'));var moment=require('moment');var BPromise=require(_0xf31c('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf31c('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xf31c('0x4'));var config=require('../../config/environment');var jayson=require(_0xf31c('0x5'));var client=jayson['client'][_0xf31c('0x6')]({'port':0x232a});config[_0xf31c('0x7')]=_['defaults'](config[_0xf31c('0x7')],{'host':_0xf31c('0x8'),'port':0x18eb});var socket=require(_0xf31c('0x9'))(new Redis(config['redis']));require('./chatInteraction.socket')['register'](socket);function respondWithRpcPromise(_0x322a18,_0x2e6bc6,_0x42ca0c){return new BPromise(function(_0x1df152,_0x443591){return client[_0xf31c('0xa')](_0x322a18,_0x42ca0c)[_0xf31c('0xb')](function(_0x71f1ed){logger[_0xf31c('0xc')](_0xf31c('0xd'),_0x2e6bc6,'request\x20sent');logger[_0xf31c('0xe')](_0xf31c('0xf'),_0x2e6bc6,_0xf31c('0x10'),JSON[_0xf31c('0x11')](_0x71f1ed));if(_0x71f1ed[_0xf31c('0x12')]){if(_0x71f1ed['error'][_0xf31c('0x13')]===0x1f4){logger[_0xf31c('0x12')](_0xf31c('0xd'),_0x2e6bc6,_0x71f1ed[_0xf31c('0x12')]['message']);return _0x443591(_0x71f1ed[_0xf31c('0x12')][_0xf31c('0x14')]);}logger[_0xf31c('0x12')]('ChatInteraction,\x20%s,\x20%s',_0x2e6bc6,_0x71f1ed[_0xf31c('0x12')][_0xf31c('0x14')]);return _0x1df152(_0x71f1ed[_0xf31c('0x12')][_0xf31c('0x14')]);}else{logger[_0xf31c('0xc')](_0xf31c('0xd'),_0x2e6bc6,_0xf31c('0x10'));_0x1df152(_0x71f1ed[_0xf31c('0x15')][_0xf31c('0x14')]);}})[_0xf31c('0x16')](function(_0xd6bc6b){logger[_0xf31c('0x12')](_0xf31c('0xd'),_0x2e6bc6,_0xd6bc6b);_0x443591(_0xd6bc6b);});});}exports['UpdateChatInteraction']=function(_0x4430f8){var _0x32c2cd=this;return new Promise(function(_0x3ee2ec,_0x3a11da){return db[_0xf31c('0x17')][_0xf31c('0x18')](_0x4430f8[_0xf31c('0x19')],{'raw':_0x4430f8['options']?_0x4430f8['options'][_0xf31c('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4430f8[_0xf31c('0x1b')]?_0x4430f8[_0xf31c('0x1b')][_0xf31c('0x1c')]||null:null,'attributes':_0x4430f8[_0xf31c('0x1b')]?_0x4430f8[_0xf31c('0x1b')]['attributes']||null:null,'limit':_0x4430f8[_0xf31c('0x1b')]?_0x4430f8[_0xf31c('0x1b')]['limit']||null:null})[_0xf31c('0xb')](function(_0x10cca3){logger[_0xf31c('0xc')](_0xf31c('0x1d'),_0x4430f8);logger[_0xf31c('0xe')](_0xf31c('0x1d'),_0x4430f8,JSON[_0xf31c('0x11')](_0x10cca3));_0x3ee2ec(_0x10cca3);})[_0xf31c('0x16')](function(_0x39461a){logger[_0xf31c('0x12')]('UpdateChatInteraction',_0x39461a['message'],_0x4430f8);_0x3a11da(_0x32c2cd[_0xf31c('0x12')](0x1f4,_0x39461a[_0xf31c('0x14')]));});});};exports[_0xf31c('0x1e')]=function(_0x4b13a9){return new Promise(function(_0x471112,_0x5eccbd){return db[_0xf31c('0x17')]['find']({'where':_0x4b13a9[_0xf31c('0x1b')]?_0x4b13a9[_0xf31c('0x1b')][_0xf31c('0x1c')]||null:null})[_0xf31c('0xb')](function(_0x56ad9c){if(_0x56ad9c){return _0x56ad9c[_0xf31c('0x1f')](_0x4b13a9[_0xf31c('0x19')][_0xf31c('0x20')],_[_0xf31c('0x21')](_0x4b13a9[_0xf31c('0x19')],[_0xf31c('0x20'),'id'])||{});}})['spread'](function(_0x364abd){logger[_0xf31c('0xc')](_0xf31c('0x22'),_0x4b13a9);logger[_0xf31c('0xe')](_0xf31c('0x22'),_0x4b13a9,JSON[_0xf31c('0x11')](_0x364abd));_0x471112(_0x364abd);})['catch'](function(_0x147475){logger[_0xf31c('0x12')](_0xf31c('0x22'),_0x147475[_0xf31c('0x14')],_0x4b13a9);_0x5eccbd(_this[_0xf31c('0x12')](0x1f4,_0x147475[_0xf31c('0x14')]));});});};
\ No newline at end of file
index 2a2e8ac..17e2f34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2c8=['removeListener','register','length','./chatInteraction.events','remove','update','emit'];(function(_0x55f8b4,_0x43f30d){var _0x2475f9=function(_0xdd6f4a){while(--_0xdd6f4a){_0x55f8b4['push'](_0x55f8b4['shift']());}};_0x2475f9(++_0x43f30d);}(_0xe2c8,0x17d));var _0x8e2c=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0xe2c8[_0x1035c1];return _0x308d67;};'use strict';var ChatInteractionEvents=require(_0x8e2c('0x0'));var events=['save',_0x8e2c('0x1'),_0x8e2c('0x2')];function createListener(_0x1bb98c,_0x5b2266){return function(_0x180c8c){_0x5b2266[_0x8e2c('0x3')](_0x1bb98c,_0x180c8c);};}function removeListener(_0x5cb28e,_0x42e5f6){return function(){ChatInteractionEvents[_0x8e2c('0x4')](_0x5cb28e,_0x42e5f6);};}exports[_0x8e2c('0x5')]=function(_0x23b07a){for(var _0x35ecae=0x0,_0x4c7fcb=events[_0x8e2c('0x6')];_0x35ecae<_0x4c7fcb;_0x35ecae++){var _0x1b15e1=events[_0x35ecae];var _0x52d958=createListener('chatInteraction:'+_0x1b15e1,_0x23b07a);ChatInteractionEvents['on'](_0x1b15e1,_0x52d958);}};
\ No newline at end of file
+var _0x550e=['update','removeListener','register','length','chatInteraction:','./chatInteraction.events','save','remove'];(function(_0x40ac5e,_0x2de228){var _0x2839d6=function(_0x123d47){while(--_0x123d47){_0x40ac5e['push'](_0x40ac5e['shift']());}};_0x2839d6(++_0x2de228);}(_0x550e,0x9d));var _0xe550=function(_0x10e85b,_0x36db62){_0x10e85b=_0x10e85b-0x0;var _0x521052=_0x550e[_0x10e85b];return _0x521052;};'use strict';var ChatInteractionEvents=require(_0xe550('0x0'));var events=[_0xe550('0x1'),_0xe550('0x2'),_0xe550('0x3')];function createListener(_0x5d169c,_0x35ff5e){return function(_0x1b5207){_0x35ff5e['emit'](_0x5d169c,_0x1b5207);};}function removeListener(_0x52273a,_0x31517a){return function(){ChatInteractionEvents[_0xe550('0x4')](_0x52273a,_0x31517a);};}exports[_0xe550('0x5')]=function(_0x2674cb){for(var _0x5f0d53=0x0,_0x48b255=events[_0xe550('0x6')];_0x5f0d53<_0x48b255;_0x5f0d53++){var _0x3f0319=events[_0x5f0d53];var _0x587434=createListener(_0xe550('0x7')+_0x3f0319,_0x2674cb);ChatInteractionEvents['on'](_0x3f0319,_0x587434);}};
\ No newline at end of file
index f40272d..522bc66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2cc=['show','/:id/attachment_download','/:id/messages','getMessages','/:id/my_messages','getMyMessages','/:id/download','post','create','diskStorage','join','root','server/files/attachments/','format','%s-%s','now','originalname','replace','/:id/attachment_upload','file','attachmentUpload','addMessage','/:id/tags','tracked','chat','addTags','put','chatinteraction:update','update','/:id/custom_update','customUpdate','abandon','/:id/close','close','delete','chatinteraction:destroy','destroy','removeTags','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','describe','/:id','isChatInteractionAuthorized'];(function(_0x2f57db,_0x318730){var _0x5ee309=function(_0x5b73a5){while(--_0x5b73a5){_0x2f57db['push'](_0x2f57db['shift']());}};_0x5ee309(++_0x318730);}(_0xe2cc,0x102));var _0xce2c=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xe2cc[_0x4cf98e];return _0x1623ac;};'use strict';var multer=require(_0xce2c('0x0'));var util=require(_0xce2c('0x1'));var path=require(_0xce2c('0x2'));var timeout=require(_0xce2c('0x3'));var express=require(_0xce2c('0x4'));var router=express[_0xce2c('0x5')]();var fs_extra=require(_0xce2c('0x6'));var auth=require(_0xce2c('0x7'));var interaction=require(_0xce2c('0x8'));var config=require(_0xce2c('0x9'));var controller=require('./chatInteraction.controller');router[_0xce2c('0xa')]('/',auth['isAuthenticated'](),controller[_0xce2c('0xb')]);router[_0xce2c('0xa')](_0xce2c('0xc'),auth[_0xce2c('0xd')](),controller[_0xce2c('0xe')]);router['get'](_0xce2c('0xf'),auth[_0xce2c('0x10')](),controller[_0xce2c('0x11')]);router[_0xce2c('0xa')](_0xce2c('0x12'),auth[_0xce2c('0x10')](),controller['attachmentDownload']);router['get'](_0xce2c('0x13'),auth[_0xce2c('0xd')](),controller[_0xce2c('0x14')]);router[_0xce2c('0xa')](_0xce2c('0x15'),auth[_0xce2c('0x10')](),controller[_0xce2c('0x16')]);router[_0xce2c('0xa')](_0xce2c('0x17'),auth[_0xce2c('0xd')](),controller['download']);router[_0xce2c('0x18')]('/',auth['isAuthenticated'](),controller[_0xce2c('0x19')]);router['post']('/:id/vidaoo',auth[_0xce2c('0xd')](),controller['createVidaooSession']);var upload=multer({'storage':multer[_0xce2c('0x1a')]({'destination':function(_0x5573e6,_0x18c738,_0x194ad7){_0x194ad7(null,path[_0xce2c('0x1b')](config[_0xce2c('0x1c')],_0xce2c('0x1d')));},'filename':function(_0x19c0ad,_0x2eaed8,_0xf617bd){_0xf617bd(null,util[_0xce2c('0x1e')](_0xce2c('0x1f'),Date[_0xce2c('0x20')](),_0x2eaed8[_0xce2c('0x21')][_0xce2c('0x22')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xce2c('0x18')](_0xce2c('0x23'),upload['single'](_0xce2c('0x24')),controller[_0xce2c('0x25')]);router[_0xce2c('0x18')](_0xce2c('0x13'),auth['isChatInteractionAuthorized'](),controller[_0xce2c('0x26')]);router[_0xce2c('0x18')](_0xce2c('0x27'),auth[_0xce2c('0xd')](),interaction[_0xce2c('0x28')](_0xce2c('0x29'),'chatinteraction:addtags'),controller[_0xce2c('0x2a')]);router[_0xce2c('0x2b')](_0xce2c('0xf'),auth[_0xce2c('0xd')](),interaction['tracked'](_0xce2c('0x29'),_0xce2c('0x2c')),controller[_0xce2c('0x2d')]);router['put'](_0xce2c('0x2e'),controller[_0xce2c('0x2f')]);router[_0xce2c('0x2b')]('/:id/abandon',auth['isChatInteractionAuthorized'](),controller[_0xce2c('0x30')]);router[_0xce2c('0x2b')](_0xce2c('0x31'),controller[_0xce2c('0x32')]);router[_0xce2c('0x33')]('/:id',auth['isAuthenticated'](),interaction[_0xce2c('0x28')](_0xce2c('0x29'),_0xce2c('0x34')),controller[_0xce2c('0x35')]);router[_0xce2c('0x33')](_0xce2c('0x27'),auth[_0xce2c('0xd')](),controller[_0xce2c('0x36')]);module['exports']=router;
\ No newline at end of file
+var _0x84a0=['/:id/download','download','post','/:id/vidaoo','createVidaooSession','diskStorage','join','server/files/attachments/','now','originalname','/:id/attachment_upload','single','attachmentUpload','tracked','chat','chatinteraction:addtags','addTags','put','update','customUpdate','abandon','/:id/close','destroy','delete','/:id/tags','removeTags','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','isChatInteractionAuthorized','attachmentDownload','/:id/messages','getMessages','/:id/my_messages'];(function(_0x2af754,_0x1e90c6){var _0x4e033e=function(_0x1920fa){while(--_0x1920fa){_0x2af754['push'](_0x2af754['shift']());}};_0x4e033e(++_0x1e90c6);}(_0x84a0,0xf1));var _0x084a=function(_0x491903,_0x2e5a65){_0x491903=_0x491903-0x0;var _0x179dd8=_0x84a0[_0x491903];return _0x179dd8;};'use strict';var multer=require(_0x084a('0x0'));var util=require(_0x084a('0x1'));var path=require(_0x084a('0x2'));var timeout=require(_0x084a('0x3'));var express=require(_0x084a('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x084a('0x5'));var interaction=require(_0x084a('0x6'));var config=require(_0x084a('0x7'));var controller=require('./chatInteraction.controller');router[_0x084a('0x8')]('/',auth[_0x084a('0x9')](),controller[_0x084a('0xa')]);router[_0x084a('0x8')]('/describe',auth[_0x084a('0x9')](),controller['describe']);router[_0x084a('0x8')](_0x084a('0xb'),auth[_0x084a('0xc')](),controller['show']);router[_0x084a('0x8')]('/:id/attachment_download',auth[_0x084a('0xc')](),controller[_0x084a('0xd')]);router[_0x084a('0x8')](_0x084a('0xe'),auth[_0x084a('0x9')](),controller[_0x084a('0xf')]);router[_0x084a('0x8')](_0x084a('0x10'),auth['isChatInteractionAuthorized'](),controller['getMyMessages']);router[_0x084a('0x8')](_0x084a('0x11'),auth[_0x084a('0x9')](),controller[_0x084a('0x12')]);router[_0x084a('0x13')]('/',auth[_0x084a('0x9')](),controller['create']);router[_0x084a('0x13')](_0x084a('0x14'),auth[_0x084a('0x9')](),controller[_0x084a('0x15')]);var upload=multer({'storage':multer[_0x084a('0x16')]({'destination':function(_0x4abb31,_0x3b6f5f,_0x476f10){_0x476f10(null,path[_0x084a('0x17')](config['root'],_0x084a('0x18')));},'filename':function(_0x5cc023,_0x4c17ba,_0x59d020){_0x59d020(null,util['format']('%s-%s',Date[_0x084a('0x19')](),_0x4c17ba[_0x084a('0x1a')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x084a('0x13')](_0x084a('0x1b'),upload[_0x084a('0x1c')]('file'),controller[_0x084a('0x1d')]);router[_0x084a('0x13')](_0x084a('0xe'),auth[_0x084a('0xc')](),controller['addMessage']);router[_0x084a('0x13')]('/:id/tags',auth[_0x084a('0x9')](),interaction[_0x084a('0x1e')](_0x084a('0x1f'),_0x084a('0x20')),controller[_0x084a('0x21')]);router[_0x084a('0x22')](_0x084a('0xb'),auth[_0x084a('0x9')](),interaction[_0x084a('0x1e')](_0x084a('0x1f'),'chatinteraction:update'),controller[_0x084a('0x23')]);router[_0x084a('0x22')]('/:id/custom_update',controller[_0x084a('0x24')]);router[_0x084a('0x22')]('/:id/abandon',auth[_0x084a('0xc')](),controller[_0x084a('0x25')]);router[_0x084a('0x22')](_0x084a('0x26'),controller['close']);router['delete'](_0x084a('0xb'),auth[_0x084a('0x9')](),interaction[_0x084a('0x1e')]('chat','chatinteraction:destroy'),controller[_0x084a('0x27')]);router[_0x084a('0x28')](_0x084a('0x29'),auth[_0x084a('0x9')](),controller[_0x084a('0x2a')]);module['exports']=router;
\ No newline at end of file
index 9e49620..a671cef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72ec=['medium','INTEGER','exports','TEXT'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x72ec,0x82));var _0xc72e=function(_0x47d060,_0x4a2b1d){_0x47d060=_0x47d060-0x0;var _0xb2d051=_0x72ec[_0x47d060];return _0xb2d051;};'use strict';var Sequelize=require('sequelize');module[_0xc72e('0x0')]={'body':{'type':Sequelize[_0xc72e('0x1')](_0xc72e('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0xc72e('0x3')]}};
\ No newline at end of file
+var _0xa614=['INTEGER','medium'];(function(_0x48cda9,_0x575113){var _0xe47e76=function(_0x502303){while(--_0x502303){_0x48cda9['push'](_0x48cda9['shift']());}};_0xe47e76(++_0x575113);}(_0xa614,0x1b9));var _0x4a61=function(_0x528575,_0x2e067d){_0x528575=_0x528575-0x0;var _0x3063b7=_0xa614[_0x528575];return _0x3063b7;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize['TEXT'](_0x4a61('0x0')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x4a61('0x1')]}};
\ No newline at end of file
index fcd3bae..1e28cad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1a4=['format','User','agent','admin','user','fullname','userpic','internal','online','showWebBar','-online','VoiceQueue','VoiceQueues','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Agents','userProfileId','autoAssociation','UserProfileResource','isEmpty','resourceId','push','messages','FromId','ToId','read','-createdAt','request-promise','moment','bluebird','mustache','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','sendStatus','status','end','json','offset','undefined','count','set','apply','reject','save','update','then','destroy','stack','name','index','map','ChatInternalMessage','rawAttributes','type','query','model','attributes','intersection','fields','length','limit','order','sort','filters','pick','filter','VIRTUAL','merge','where','includeAll','include','findAll','catch','show','params','options','find','create','body','describe','lastMessageAt','createdAt','lastMessage'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0xa1a4,0x14b));var _0x4a1a=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0xa1a4[_0x27af45];return _0x18df21;};'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(_0x4a1a('0x0'));var moment=require(_0x4a1a('0x1'));var BPromise=require(_0x4a1a('0x2'));var Mustache=require(_0x4a1a('0x3'));var util=require('util');var path=require(_0x4a1a('0x4'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x4a1a('0x5'));var fs=require('fs');var fs_extra=require(_0x4a1a('0x6'));var _=require(_0x4a1a('0x7'));var squel=require(_0x4a1a('0x8'));var crypto=require(_0x4a1a('0x9'));var jsforce=require(_0x4a1a('0xa'));var deskjs=require(_0x4a1a('0xb'));var toCsv=require(_0x4a1a('0xc'));var querystring=require(_0x4a1a('0xd'));var Papa=require('papaparse');var Redis=require(_0x4a1a('0xe'));var authService=require(_0x4a1a('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4a1a('0x10'));var logger=require('../../config/logger')(_0x4a1a('0x11'));var utils=require(_0x4a1a('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x4a1a('0x13'));var db=require(_0x4a1a('0x14'))['db'];config[_0x4a1a('0x15')]=_[_0x4a1a('0x16')](config[_0x4a1a('0x15')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4a1a('0x15')]));require('./chatInternalMessage.socket')['register'](socket);function respondWithStatusCode(_0x53c82b,_0x57ae5f){_0x57ae5f=_0x57ae5f||0xcc;return function(_0xe550c7){if(_0xe550c7){return _0x53c82b[_0x4a1a('0x17')](_0x57ae5f);}return _0x53c82b[_0x4a1a('0x18')](_0x57ae5f)[_0x4a1a('0x19')]();};}function respondWithResult(_0xba17d4,_0x43f393){_0x43f393=_0x43f393||0xc8;return function(_0x3a14a3){if(_0x3a14a3){return _0xba17d4['status'](_0x43f393)[_0x4a1a('0x1a')](_0x3a14a3);}};}function respondWithFilteredResult(_0x7a5f83,_0x110534){return function(_0x2f3cc9){if(_0x2f3cc9){var _0x224409=typeof _0x110534[_0x4a1a('0x1b')]===_0x4a1a('0x1c')&&typeof _0x110534['limit']===_0x4a1a('0x1c');var _0x141279=_0x2f3cc9[_0x4a1a('0x1d')];var _0x2f121a=_0x224409?0x0:_0x110534[_0x4a1a('0x1b')];var _0x29c83d=_0x224409?_0x2f3cc9[_0x4a1a('0x1d')]:_0x110534[_0x4a1a('0x1b')]+_0x110534['limit'];var _0x17eb5a;if(_0x29c83d>=_0x141279){_0x29c83d=_0x141279;_0x17eb5a=0xc8;}else{_0x17eb5a=0xce;}_0x7a5f83[_0x4a1a('0x18')](_0x17eb5a);return _0x7a5f83[_0x4a1a('0x1e')]('Content-Range',_0x2f121a+'-'+_0x29c83d+'/'+_0x141279)[_0x4a1a('0x1a')](_0x2f3cc9);}return null;};}function patchUpdates(_0x7d9a3c){return function(_0x28158e){try{jsonpatch[_0x4a1a('0x1f')](_0x28158e,_0x7d9a3c,!![]);}catch(_0x356eec){return BPromise[_0x4a1a('0x20')](_0x356eec);}return _0x28158e[_0x4a1a('0x21')]();};}function saveUpdates(_0x54ec3f,_0x540fcb){return function(_0x226f0a){if(_0x226f0a){return _0x226f0a[_0x4a1a('0x22')](_0x54ec3f)[_0x4a1a('0x23')](function(_0x44f2ce){return _0x44f2ce;});}return null;};}function removeEntity(_0x3eaa4f,_0x31dff3){return function(_0x242579){if(_0x242579){return _0x242579[_0x4a1a('0x24')]()[_0x4a1a('0x23')](function(){_0x3eaa4f['status'](0xcc)[_0x4a1a('0x19')]();});}};}function handleEntityNotFound(_0x443517,_0xf3ea79){return function(_0x306471){if(!_0x306471){_0x443517[_0x4a1a('0x17')](0x194);}return _0x306471;};}function handleError(_0x280c5f,_0x381dca){_0x381dca=_0x381dca||0x1f4;return function(_0x2d7fbc){logger['error'](_0x2d7fbc[_0x4a1a('0x25')]);if(_0x2d7fbc['name']){delete _0x2d7fbc[_0x4a1a('0x26')];}_0x280c5f['status'](_0x381dca)['send'](_0x2d7fbc);};}exports[_0x4a1a('0x27')]=function(_0x3f2461,_0x9329){var _0x345217={},_0x385e84={},_0x3d40d1={'count':0x0,'rows':[]};var _0x1540eb=_[_0x4a1a('0x28')](db[_0x4a1a('0x29')][_0x4a1a('0x2a')],function(_0x5a994d){return{'name':_0x5a994d['fieldName'],'type':_0x5a994d[_0x4a1a('0x2b')]['key']};});_0x385e84['model']=_[_0x4a1a('0x28')](_0x1540eb,'name');_0x385e84[_0x4a1a('0x2c')]=_['keys'](_0x3f2461[_0x4a1a('0x2c')]);_0x385e84['filters']=_['intersection'](_0x385e84[_0x4a1a('0x2d')],_0x385e84[_0x4a1a('0x2c')]);_0x345217[_0x4a1a('0x2e')]=_[_0x4a1a('0x2f')](_0x385e84[_0x4a1a('0x2d')],qs[_0x4a1a('0x30')](_0x3f2461[_0x4a1a('0x2c')][_0x4a1a('0x30')]));_0x345217[_0x4a1a('0x2e')]=_0x345217['attributes'][_0x4a1a('0x31')]?_0x345217['attributes']:_0x385e84['model'];if(!_0x3f2461[_0x4a1a('0x2c')]['hasOwnProperty']('nolimit')){_0x345217[_0x4a1a('0x32')]=qs[_0x4a1a('0x32')](_0x3f2461[_0x4a1a('0x2c')]['limit']);_0x345217[_0x4a1a('0x1b')]=qs[_0x4a1a('0x1b')](_0x3f2461[_0x4a1a('0x2c')]['offset']);}_0x345217[_0x4a1a('0x33')]=qs[_0x4a1a('0x34')](_0x3f2461['query'][_0x4a1a('0x34')]);_0x345217['where']=qs[_0x4a1a('0x35')](_[_0x4a1a('0x36')](_0x3f2461[_0x4a1a('0x2c')],_0x385e84[_0x4a1a('0x35')]),_0x1540eb);if(_0x3f2461[_0x4a1a('0x2c')][_0x4a1a('0x37')]){_0x345217['where']=_['merge'](_0x345217['where'],{'$or':_[_0x4a1a('0x28')](_0x1540eb,function(_0x43d87d){if(_0x43d87d[_0x4a1a('0x2b')]!==_0x4a1a('0x38')){var _0x29d472={};_0x29d472[_0x43d87d[_0x4a1a('0x26')]]={'$like':'%'+_0x3f2461[_0x4a1a('0x2c')][_0x4a1a('0x37')]+'%'};return _0x29d472;}})});}_0x345217=_[_0x4a1a('0x39')]({},_0x345217,_0x3f2461['options']);var _0x3cc098={'where':_0x345217[_0x4a1a('0x3a')]};return db[_0x4a1a('0x29')]['count'](_0x3cc098)['then'](function(_0x1679fe){_0x3d40d1['count']=_0x1679fe;if(_0x3f2461['query'][_0x4a1a('0x3b')]){_0x345217[_0x4a1a('0x3c')]=[{'all':!![]}];}return db[_0x4a1a('0x29')][_0x4a1a('0x3d')](_0x345217);})[_0x4a1a('0x23')](function(_0x9a72f6){_0x3d40d1['rows']=_0x9a72f6;return _0x3d40d1;})[_0x4a1a('0x23')](respondWithFilteredResult(_0x9329,_0x345217))[_0x4a1a('0x3e')](handleError(_0x9329,null));};exports[_0x4a1a('0x3f')]=function(_0x1fd7b3,_0x357728){var _0x58ebb4={'raw':!![],'where':{'id':_0x1fd7b3[_0x4a1a('0x40')]['id']}},_0x2fc3da={};_0x2fc3da[_0x4a1a('0x2d')]=_['keys'](db['ChatInternalMessage'][_0x4a1a('0x2a')]);_0x2fc3da[_0x4a1a('0x2c')]=_['keys'](_0x1fd7b3['query']);_0x2fc3da[_0x4a1a('0x35')]=_[_0x4a1a('0x2f')](_0x2fc3da[_0x4a1a('0x2d')],_0x2fc3da[_0x4a1a('0x2c')]);_0x58ebb4[_0x4a1a('0x2e')]=_[_0x4a1a('0x2f')](_0x2fc3da[_0x4a1a('0x2d')],qs[_0x4a1a('0x30')](_0x1fd7b3[_0x4a1a('0x2c')][_0x4a1a('0x30')]));_0x58ebb4[_0x4a1a('0x2e')]=_0x58ebb4['attributes']['length']?_0x58ebb4[_0x4a1a('0x2e')]:_0x2fc3da['model'];if(_0x1fd7b3[_0x4a1a('0x2c')][_0x4a1a('0x3b')]){_0x58ebb4['include']=[{'all':!![]}];}_0x58ebb4=_[_0x4a1a('0x39')]({},_0x58ebb4,_0x1fd7b3[_0x4a1a('0x41')]);return db[_0x4a1a('0x29')][_0x4a1a('0x42')](_0x58ebb4)['then'](handleEntityNotFound(_0x357728,null))[_0x4a1a('0x23')](respondWithResult(_0x357728,null))['catch'](handleError(_0x357728,null));};exports['create']=function(_0x2bc112,_0x12179d){return db[_0x4a1a('0x29')][_0x4a1a('0x43')](_0x2bc112['body'],{})[_0x4a1a('0x23')](respondWithResult(_0x12179d,0xc9))['catch'](handleError(_0x12179d,null));};exports['update']=function(_0x512c7e,_0x45fc76){if(_0x512c7e[_0x4a1a('0x44')]['id']){delete _0x512c7e['body']['id'];}return db[_0x4a1a('0x29')][_0x4a1a('0x42')]({'where':{'id':_0x512c7e[_0x4a1a('0x40')]['id']}})['then'](handleEntityNotFound(_0x45fc76,null))[_0x4a1a('0x23')](saveUpdates(_0x512c7e[_0x4a1a('0x44')],null))['then'](respondWithResult(_0x45fc76,null))[_0x4a1a('0x3e')](handleError(_0x45fc76,null));};exports[_0x4a1a('0x24')]=function(_0x3e8899,_0xf08687){return db['ChatInternalMessage']['find']({'where':{'id':_0x3e8899[_0x4a1a('0x40')]['id']}})[_0x4a1a('0x23')](handleEntityNotFound(_0xf08687,null))[_0x4a1a('0x23')](removeEntity(_0xf08687,null))[_0x4a1a('0x3e')](handleError(_0xf08687,null));};exports['describe']=function(_0x5de905,_0x427b3c){return db[_0x4a1a('0x29')][_0x4a1a('0x45')]()[_0x4a1a('0x23')](respondWithResult(_0x427b3c,null))[_0x4a1a('0x3e')](handleError(_0x427b3c,null));};function wrapUser(_0x14ddde){return function(_0x843586){var _0x58bc06=_0x14ddde['get']({'plain':!![]});_0x58bc06['messages']=[];if(_0x843586){_0x58bc06[_0x4a1a('0x46')]=_0x843586[_0x4a1a('0x47')];_0x58bc06[_0x4a1a('0x48')]=_0x843586;}else{_0x58bc06[_0x4a1a('0x46')]=moment(0x0)[_0x4a1a('0x49')]('YYYY-MM-DD\x20HH:mm:ss');_0x58bc06[_0x4a1a('0x48')]={};}return _0x58bc06;};}exports['getUsers']=function(_0xa2e32e,_0x219901,_0x4b7ad4){var _0x49ad63=[];return db[_0x4a1a('0x4a')]['findAll']({'where':{'role':[_0x4a1a('0x4b'),_0x4a1a('0x4c'),_0x4a1a('0x4d')]},'attributes':['id',_0x4a1a('0x4e'),'name','role',_0x4a1a('0x4f'),_0x4a1a('0x50'),_0x4a1a('0x51'),'lastLoginAt','allowmessenger',_0x4a1a('0x52')],'order':qs[_0x4a1a('0x34')](_0x4a1a('0x53')),'include':[{'model':db[_0x4a1a('0x54')],'as':_0x4a1a('0x55'),'attributes':['id',_0x4a1a('0x26'),_0x4a1a('0x2b')],'through':{'attributes':[]}}]})[_0x4a1a('0x23')](function(_0xc86608){if(_0xc86608){var _0x3c8f6c=_0xa2e32e[_0x4a1a('0x4d')][_0x4a1a('0x56')]({'plain':!![]});if(!_0x3c8f6c)throw new Error(_0x4a1a('0x57'));if(_0x3c8f6c[_0x4a1a('0x58')]==='user'){return db['UserProfileSection'][_0x4a1a('0x42')]({'where':{'name':_0x4a1a('0x59'),'userProfileId':_0x3c8f6c[_0x4a1a('0x5a')]},'raw':!![]})[_0x4a1a('0x23')](function(_0x5c07b2){if(_0x5c07b2){if(_0x5c07b2[_0x4a1a('0x5b')]===0x0){return db[_0x4a1a('0x5c')][_0x4a1a('0x3d')]({'where':{'sectionId':_0x5c07b2['id']},'raw':!![]})[_0x4a1a('0x23')](function(_0xbe2941){var _0x4f5692=[];if(_[_0x4a1a('0x5d')](_0xbe2941)){_0x4f5692=_['filter'](_0xc86608,function(_0x2bf3b2){if(_0x2bf3b2[_0x4a1a('0x58')]!=='agent'){return _0x2bf3b2;}});return _0x4f5692;}else{for(var _0x391f12=0x0;_0x391f12<_0xc86608[_0x4a1a('0x31')];_0x391f12++){var _0x369412=_0xc86608[_0x391f12];if(_0x369412[_0x4a1a('0x58')]===_0x4a1a('0x4b')){var _0x55112b=_['find'](_0xbe2941,function(_0x3a63c5){return _0x3a63c5[_0x4a1a('0x5e')]===_0x369412['id'];});if(_0x55112b)_0x4f5692[_0x4a1a('0x5f')](_0x369412);}else{_0x4f5692['push'](_0x369412);}}return _0x4f5692;}});}else{return _0xc86608;}}else{var _0x6c6b8e=_[_0x4a1a('0x37')](_0xc86608,function(_0x5c997c){if(_0x5c997c[_0x4a1a('0x58')]!==_0x4a1a('0x4b')){return _0x5c997c;}});return _0x6c6b8e;}});}else{return _0xc86608;}}})[_0x4a1a('0x23')](function(_0x312db6){var _0x380939=[];if(_0x312db6){_0x49ad63=_0x312db6;for(var _0x282cba=0x0;_0x282cba<_0x312db6[_0x4a1a('0x31')];_0x282cba+=0x1){_0x49ad63[_0x282cba][_0x4a1a('0x60')]=[];_0x380939[_0x4a1a('0x5f')](db[_0x4a1a('0x29')][_0x4a1a('0x42')]({'where':{'FromId':[_0xa2e32e[_0x4a1a('0x4d')]['id'],_0x312db6[_0x282cba]['id']],'ToId':[_0xa2e32e[_0x4a1a('0x4d')]['id'],_0x312db6[_0x282cba]['id']],'ChatGroupId':null},'attributes':['id',_0x4a1a('0x47'),_0x4a1a('0x61'),_0x4a1a('0x62'),_0x4a1a('0x63'),'body'],'order':qs[_0x4a1a('0x34')](_0x4a1a('0x64')),'limit':0x1,'offset':0x0,'raw':!![]})[_0x4a1a('0x23')](wrapUser(_0x312db6[_0x282cba])));}return BPromise['all'](_0x380939);}return[];})[_0x4a1a('0x23')](function(_0x23ad35){return{'rows':_0x23ad35,'count':_0x23ad35[_0x4a1a('0x31')]};})[_0x4a1a('0x23')](respondWithResult(_0x219901,null))[_0x4a1a('0x3e')](handleError(_0x219901,null));};
\ No newline at end of file
+var _0x9f1b=['VoiceQueue','VoiceQueues','UserProfileSection','Agents','userProfileId','autoAssociation','UserProfileResource','isEmpty','resourceId','messages','createdAt','FromId','ToId','read','all','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','../../components/parsers/qs','../../config/environment','../../config/license/util','redis','defaults','localhost','./chatInternalMessage.socket','register','sendStatus','status','offset','undefined','count','Content-Range','json','reject','save','update','destroy','then','end','error','stack','name','index','ChatInternalMessage','type','key','model','map','keys','query','attributes','intersection','fields','length','nolimit','limit','order','sort','where','pick','filters','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','rawAttributes','find','create','body','params','describe','get','lastMessageAt','YYYY-MM-DD\x20HH:mm:ss','lastMessage','getUsers','agent','user','fullname','role','internal','online','lastLoginAt','showWebBar','-online'];(function(_0x1f6e85,_0x46ac39){var _0x1c9d9f=function(_0x2ba5dc){while(--_0x2ba5dc){_0x1f6e85['push'](_0x1f6e85['shift']());}};_0x1c9d9f(++_0x46ac39);}(_0x9f1b,0x1a3));var _0xb9f1=function(_0x4f8daa,_0x5bc6fc){_0x4f8daa=_0x4f8daa-0x0;var _0x393ad=_0x9f1b[_0x4f8daa];return _0x393ad;};'use strict';var emlformat=require(_0xb9f1('0x0'));var rimraf=require(_0xb9f1('0x1'));var zipdir=require(_0xb9f1('0x2'));var jsonpatch=require(_0xb9f1('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xb9f1('0x4'));var Mustache=require(_0xb9f1('0x5'));var util=require(_0xb9f1('0x6'));var path=require('path');var sox=require(_0xb9f1('0x7'));var csv=require(_0xb9f1('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb9f1('0x9'));var _=require(_0xb9f1('0xa'));var squel=require('squel');var crypto=require(_0xb9f1('0xb'));var jsforce=require(_0xb9f1('0xc'));var deskjs=require(_0xb9f1('0xd'));var toCsv=require(_0xb9f1('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xb9f1('0xe'));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(_0xb9f1('0xf'));var licenseUtil=require(_0xb9f1('0x10'));var db=require('../../mysqldb')['db'];config[_0xb9f1('0x11')]=_[_0xb9f1('0x12')](config['redis'],{'host':_0xb9f1('0x13'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb9f1('0x11')]));require(_0xb9f1('0x14'))[_0xb9f1('0x15')](socket);function respondWithStatusCode(_0x3a4ad8,_0x46257e){_0x46257e=_0x46257e||0xcc;return function(_0x5c5e26){if(_0x5c5e26){return _0x3a4ad8[_0xb9f1('0x16')](_0x46257e);}return _0x3a4ad8['status'](_0x46257e)['end']();};}function respondWithResult(_0x2868aa,_0x23dd2b){_0x23dd2b=_0x23dd2b||0xc8;return function(_0x5bb37e){if(_0x5bb37e){return _0x2868aa[_0xb9f1('0x17')](_0x23dd2b)['json'](_0x5bb37e);}};}function respondWithFilteredResult(_0x1c8586,_0xc156fd){return function(_0x5b877e){if(_0x5b877e){var _0x7db9eb=typeof _0xc156fd[_0xb9f1('0x18')]===_0xb9f1('0x19')&&typeof _0xc156fd['limit']===_0xb9f1('0x19');var _0x259c6b=_0x5b877e[_0xb9f1('0x1a')];var _0x5ebeab=_0x7db9eb?0x0:_0xc156fd[_0xb9f1('0x18')];var _0x378d3c=_0x7db9eb?_0x5b877e['count']:_0xc156fd[_0xb9f1('0x18')]+_0xc156fd['limit'];var _0x33436d;if(_0x378d3c>=_0x259c6b){_0x378d3c=_0x259c6b;_0x33436d=0xc8;}else{_0x33436d=0xce;}_0x1c8586[_0xb9f1('0x17')](_0x33436d);return _0x1c8586['set'](_0xb9f1('0x1b'),_0x5ebeab+'-'+_0x378d3c+'/'+_0x259c6b)[_0xb9f1('0x1c')](_0x5b877e);}return null;};}function patchUpdates(_0xa0e544){return function(_0x12e14a){try{jsonpatch['apply'](_0x12e14a,_0xa0e544,!![]);}catch(_0x41937f){return BPromise[_0xb9f1('0x1d')](_0x41937f);}return _0x12e14a[_0xb9f1('0x1e')]();};}function saveUpdates(_0x5aed94,_0xc182e){return function(_0x1ea418){if(_0x1ea418){return _0x1ea418[_0xb9f1('0x1f')](_0x5aed94)['then'](function(_0x5c84cc){return _0x5c84cc;});}return null;};}function removeEntity(_0x591c30,_0xc1631d){return function(_0x2765c7){if(_0x2765c7){return _0x2765c7[_0xb9f1('0x20')]()[_0xb9f1('0x21')](function(){_0x591c30[_0xb9f1('0x17')](0xcc)[_0xb9f1('0x22')]();});}};}function handleEntityNotFound(_0x1bf846,_0x524871){return function(_0xd71d82){if(!_0xd71d82){_0x1bf846[_0xb9f1('0x16')](0x194);}return _0xd71d82;};}function handleError(_0x4432ce,_0x56c0f1){_0x56c0f1=_0x56c0f1||0x1f4;return function(_0x5d3875){logger[_0xb9f1('0x23')](_0x5d3875[_0xb9f1('0x24')]);if(_0x5d3875[_0xb9f1('0x25')]){delete _0x5d3875['name'];}_0x4432ce[_0xb9f1('0x17')](_0x56c0f1)['send'](_0x5d3875);};}exports[_0xb9f1('0x26')]=function(_0x4c4b25,_0x23d2c7){var _0x463dd2={},_0x4984c6={},_0xc82e19={'count':0x0,'rows':[]};var _0x248274=_['map'](db[_0xb9f1('0x27')]['rawAttributes'],function(_0x471fac){return{'name':_0x471fac['fieldName'],'type':_0x471fac[_0xb9f1('0x28')][_0xb9f1('0x29')]};});_0x4984c6[_0xb9f1('0x2a')]=_[_0xb9f1('0x2b')](_0x248274,_0xb9f1('0x25'));_0x4984c6['query']=_[_0xb9f1('0x2c')](_0x4c4b25['query']);_0x4984c6['filters']=_['intersection'](_0x4984c6['model'],_0x4984c6[_0xb9f1('0x2d')]);_0x463dd2[_0xb9f1('0x2e')]=_[_0xb9f1('0x2f')](_0x4984c6[_0xb9f1('0x2a')],qs[_0xb9f1('0x30')](_0x4c4b25[_0xb9f1('0x2d')]['fields']));_0x463dd2[_0xb9f1('0x2e')]=_0x463dd2[_0xb9f1('0x2e')][_0xb9f1('0x31')]?_0x463dd2[_0xb9f1('0x2e')]:_0x4984c6['model'];if(!_0x4c4b25[_0xb9f1('0x2d')]['hasOwnProperty'](_0xb9f1('0x32'))){_0x463dd2[_0xb9f1('0x33')]=qs[_0xb9f1('0x33')](_0x4c4b25[_0xb9f1('0x2d')]['limit']);_0x463dd2[_0xb9f1('0x18')]=qs[_0xb9f1('0x18')](_0x4c4b25[_0xb9f1('0x2d')][_0xb9f1('0x18')]);}_0x463dd2[_0xb9f1('0x34')]=qs[_0xb9f1('0x35')](_0x4c4b25[_0xb9f1('0x2d')]['sort']);_0x463dd2[_0xb9f1('0x36')]=qs['filters'](_[_0xb9f1('0x37')](_0x4c4b25[_0xb9f1('0x2d')],_0x4984c6[_0xb9f1('0x38')]),_0x248274);if(_0x4c4b25[_0xb9f1('0x2d')][_0xb9f1('0x39')]){_0x463dd2['where']=_['merge'](_0x463dd2[_0xb9f1('0x36')],{'$or':_['map'](_0x248274,function(_0x55b26a){if(_0x55b26a[_0xb9f1('0x28')]!==_0xb9f1('0x3a')){var _0x2993c9={};_0x2993c9[_0x55b26a[_0xb9f1('0x25')]]={'$like':'%'+_0x4c4b25[_0xb9f1('0x2d')][_0xb9f1('0x39')]+'%'};return _0x2993c9;}})});}_0x463dd2=_[_0xb9f1('0x3b')]({},_0x463dd2,_0x4c4b25[_0xb9f1('0x3c')]);var _0x57a5b0={'where':_0x463dd2[_0xb9f1('0x36')]};return db[_0xb9f1('0x27')]['count'](_0x57a5b0)[_0xb9f1('0x21')](function(_0x48e9e8){_0xc82e19['count']=_0x48e9e8;if(_0x4c4b25[_0xb9f1('0x2d')][_0xb9f1('0x3d')]){_0x463dd2[_0xb9f1('0x3e')]=[{'all':!![]}];}return db[_0xb9f1('0x27')][_0xb9f1('0x3f')](_0x463dd2);})[_0xb9f1('0x21')](function(_0x20db73){_0xc82e19[_0xb9f1('0x40')]=_0x20db73;return _0xc82e19;})[_0xb9f1('0x21')](respondWithFilteredResult(_0x23d2c7,_0x463dd2))[_0xb9f1('0x41')](handleError(_0x23d2c7,null));};exports['show']=function(_0x466e08,_0x30e442){var _0x4b7ab9={'raw':!![],'where':{'id':_0x466e08['params']['id']}},_0x2cf74c={};_0x2cf74c[_0xb9f1('0x2a')]=_[_0xb9f1('0x2c')](db[_0xb9f1('0x27')][_0xb9f1('0x42')]);_0x2cf74c[_0xb9f1('0x2d')]=_[_0xb9f1('0x2c')](_0x466e08[_0xb9f1('0x2d')]);_0x2cf74c[_0xb9f1('0x38')]=_[_0xb9f1('0x2f')](_0x2cf74c[_0xb9f1('0x2a')],_0x2cf74c[_0xb9f1('0x2d')]);_0x4b7ab9[_0xb9f1('0x2e')]=_[_0xb9f1('0x2f')](_0x2cf74c[_0xb9f1('0x2a')],qs[_0xb9f1('0x30')](_0x466e08[_0xb9f1('0x2d')]['fields']));_0x4b7ab9[_0xb9f1('0x2e')]=_0x4b7ab9[_0xb9f1('0x2e')]['length']?_0x4b7ab9[_0xb9f1('0x2e')]:_0x2cf74c[_0xb9f1('0x2a')];if(_0x466e08['query'][_0xb9f1('0x3d')]){_0x4b7ab9[_0xb9f1('0x3e')]=[{'all':!![]}];}_0x4b7ab9=_[_0xb9f1('0x3b')]({},_0x4b7ab9,_0x466e08[_0xb9f1('0x3c')]);return db[_0xb9f1('0x27')][_0xb9f1('0x43')](_0x4b7ab9)[_0xb9f1('0x21')](handleEntityNotFound(_0x30e442,null))[_0xb9f1('0x21')](respondWithResult(_0x30e442,null))[_0xb9f1('0x41')](handleError(_0x30e442,null));};exports[_0xb9f1('0x44')]=function(_0x13fd73,_0x316a75){return db[_0xb9f1('0x27')][_0xb9f1('0x44')](_0x13fd73[_0xb9f1('0x45')],{})[_0xb9f1('0x21')](respondWithResult(_0x316a75,0xc9))[_0xb9f1('0x41')](handleError(_0x316a75,null));};exports[_0xb9f1('0x1f')]=function(_0x272e8b,_0xbf21e2){if(_0x272e8b[_0xb9f1('0x45')]['id']){delete _0x272e8b[_0xb9f1('0x45')]['id'];}return db['ChatInternalMessage'][_0xb9f1('0x43')]({'where':{'id':_0x272e8b[_0xb9f1('0x46')]['id']}})['then'](handleEntityNotFound(_0xbf21e2,null))[_0xb9f1('0x21')](saveUpdates(_0x272e8b[_0xb9f1('0x45')],null))['then'](respondWithResult(_0xbf21e2,null))[_0xb9f1('0x41')](handleError(_0xbf21e2,null));};exports[_0xb9f1('0x20')]=function(_0x2de198,_0x15c639){return db['ChatInternalMessage'][_0xb9f1('0x43')]({'where':{'id':_0x2de198[_0xb9f1('0x46')]['id']}})['then'](handleEntityNotFound(_0x15c639,null))[_0xb9f1('0x21')](removeEntity(_0x15c639,null))[_0xb9f1('0x41')](handleError(_0x15c639,null));};exports[_0xb9f1('0x47')]=function(_0x2100fd,_0x426ab3){return db[_0xb9f1('0x27')][_0xb9f1('0x47')]()[_0xb9f1('0x21')](respondWithResult(_0x426ab3,null))['catch'](handleError(_0x426ab3,null));};function wrapUser(_0x551b9a){return function(_0x3e92e4){var _0x22255b=_0x551b9a[_0xb9f1('0x48')]({'plain':!![]});_0x22255b['messages']=[];if(_0x3e92e4){_0x22255b['lastMessageAt']=_0x3e92e4['createdAt'];_0x22255b['lastMessage']=_0x3e92e4;}else{_0x22255b[_0xb9f1('0x49')]=moment(0x0)['format'](_0xb9f1('0x4a'));_0x22255b[_0xb9f1('0x4b')]={};}return _0x22255b;};}exports[_0xb9f1('0x4c')]=function(_0x9ce191,_0x55d20d,_0x4fb317){var _0x3f4eb7=[];return db['User'][_0xb9f1('0x3f')]({'where':{'role':[_0xb9f1('0x4d'),'admin',_0xb9f1('0x4e')]},'attributes':['id',_0xb9f1('0x4f'),'name',_0xb9f1('0x50'),'userpic',_0xb9f1('0x51'),_0xb9f1('0x52'),_0xb9f1('0x53'),'allowmessenger',_0xb9f1('0x54')],'order':qs[_0xb9f1('0x35')](_0xb9f1('0x55')),'include':[{'model':db[_0xb9f1('0x56')],'as':_0xb9f1('0x57'),'attributes':['id',_0xb9f1('0x25'),'type'],'through':{'attributes':[]}}]})[_0xb9f1('0x21')](function(_0x44dbdb){if(_0x44dbdb){var _0x533309=_0x9ce191[_0xb9f1('0x4e')][_0xb9f1('0x48')]({'plain':!![]});if(!_0x533309)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x533309[_0xb9f1('0x50')]===_0xb9f1('0x4e')){return db[_0xb9f1('0x58')][_0xb9f1('0x43')]({'where':{'name':_0xb9f1('0x59'),'userProfileId':_0x533309[_0xb9f1('0x5a')]},'raw':!![]})[_0xb9f1('0x21')](function(_0x10f9c7){if(_0x10f9c7){if(_0x10f9c7[_0xb9f1('0x5b')]===0x0){return db[_0xb9f1('0x5c')][_0xb9f1('0x3f')]({'where':{'sectionId':_0x10f9c7['id']},'raw':!![]})[_0xb9f1('0x21')](function(_0x54f33b){var _0x3afbf6=[];if(_[_0xb9f1('0x5d')](_0x54f33b)){_0x3afbf6=_[_0xb9f1('0x39')](_0x44dbdb,function(_0x491388){if(_0x491388[_0xb9f1('0x50')]!==_0xb9f1('0x4d')){return _0x491388;}});return _0x3afbf6;}else{for(var _0x883b1c=0x0;_0x883b1c<_0x44dbdb[_0xb9f1('0x31')];_0x883b1c++){var _0x12212f=_0x44dbdb[_0x883b1c];if(_0x12212f[_0xb9f1('0x50')]===_0xb9f1('0x4d')){var _0x37ba19=_[_0xb9f1('0x43')](_0x54f33b,function(_0x5e1bd4){return _0x5e1bd4[_0xb9f1('0x5e')]===_0x12212f['id'];});if(_0x37ba19)_0x3afbf6['push'](_0x12212f);}else{_0x3afbf6['push'](_0x12212f);}}return _0x3afbf6;}});}else{return _0x44dbdb;}}else{var _0x489334=_[_0xb9f1('0x39')](_0x44dbdb,function(_0x14335b){if(_0x14335b[_0xb9f1('0x50')]!==_0xb9f1('0x4d')){return _0x14335b;}});return _0x489334;}});}else{return _0x44dbdb;}}})['then'](function(_0x1089f5){var _0x35771e=[];if(_0x1089f5){_0x3f4eb7=_0x1089f5;for(var _0x25d057=0x0;_0x25d057<_0x1089f5['length'];_0x25d057+=0x1){_0x3f4eb7[_0x25d057][_0xb9f1('0x5f')]=[];_0x35771e['push'](db['ChatInternalMessage'][_0xb9f1('0x43')]({'where':{'FromId':[_0x9ce191[_0xb9f1('0x4e')]['id'],_0x1089f5[_0x25d057]['id']],'ToId':[_0x9ce191[_0xb9f1('0x4e')]['id'],_0x1089f5[_0x25d057]['id']],'ChatGroupId':null},'attributes':['id',_0xb9f1('0x60'),_0xb9f1('0x61'),_0xb9f1('0x62'),_0xb9f1('0x63'),_0xb9f1('0x45')],'order':qs[_0xb9f1('0x35')]('-createdAt'),'limit':0x1,'offset':0x0,'raw':!![]})[_0xb9f1('0x21')](wrapUser(_0x1089f5[_0x25d057])));}return BPromise[_0xb9f1('0x64')](_0x35771e);}return[];})[_0xb9f1('0x21')](function(_0x3eb4dc){return{'rows':_0x3eb4dc,'count':_0x3eb4dc[_0xb9f1('0x31')]};})[_0xb9f1('0x21')](respondWithResult(_0x55d20d,null))['catch'](handleError(_0x55d20d,null));};
\ No newline at end of file
index 80e2118..41ffb50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d2b=['remove','emit','hook','events','../../mysqldb','ChatInternalMessage','setMaxListeners','save'];(function(_0x1cd116,_0xbc2217){var _0x20f460=function(_0x51f507){while(--_0x51f507){_0x1cd116['push'](_0x1cd116['shift']());}};_0x20f460(++_0xbc2217);}(_0x5d2b,0xbb));var _0xb5d2=function(_0x281e8f,_0x439162){_0x281e8f=_0x281e8f-0x0;var _0x35ca96=_0x5d2b[_0x281e8f];return _0x35ca96;};'use strict';var EventEmitter=require(_0xb5d2('0x0'));var ChatInternalMessage=require(_0xb5d2('0x1'))['db'][_0xb5d2('0x2')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0xb5d2('0x3')](0x0);var events={'afterCreate':_0xb5d2('0x4'),'afterUpdate':'update','afterDestroy':_0xb5d2('0x5')};function emitEvent(_0x5f5aa4){return function(_0x1120e4,_0x2b622b,_0x267a25){ChatInternalMessageEvents[_0xb5d2('0x6')](_0x5f5aa4+':'+_0x1120e4['id'],_0x1120e4);ChatInternalMessageEvents[_0xb5d2('0x6')](_0x5f5aa4,_0x1120e4);_0x267a25(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInternalMessage[_0xb5d2('0x7')](e,emitEvent(event));}}module['exports']=ChatInternalMessageEvents;
\ No newline at end of file
+var _0xe978=['exports','events','../../mysqldb','ChatInternalMessage','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe978,0x191));var _0x8e97=function(_0x60255,_0x2cc8ad){_0x60255=_0x60255-0x0;var _0x4a31da=_0xe978[_0x60255];return _0x4a31da;};'use strict';var EventEmitter=require(_0x8e97('0x0'));var ChatInternalMessage=require(_0x8e97('0x1'))['db'][_0x8e97('0x2')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x8e97('0x3'),'afterUpdate':_0x8e97('0x4'),'afterDestroy':_0x8e97('0x5')};function emitEvent(_0x2ff2ff){return function(_0x130627,_0x49efb3,_0x530533){ChatInternalMessageEvents[_0x8e97('0x6')](_0x2ff2ff+':'+_0x130627['id'],_0x130627);ChatInternalMessageEvents[_0x8e97('0x6')](_0x2ff2ff,_0x130627);_0x530533(null);};}for(var e in events){if(events[_0x8e97('0x7')](e)){var event=events[e];ChatInternalMessage[_0x8e97('0x8')](e,emitEvent(event));}}module[_0x8e97('0x9')]=ChatInternalMessageEvents;
\ No newline at end of file
index 1566ae5..a4c3e70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd44a=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatInternalMessage.attributes','exports','define','ChatInternalMessage','chat_internal_messages','utf8mb4_unicode_ci','lodash'];(function(_0x52ddc8,_0xada5d6){var _0x41e9c3=function(_0x432441){while(--_0x432441){_0x52ddc8['push'](_0x52ddc8['shift']());}};_0x41e9c3(++_0xada5d6);}(_0xd44a,0x149));var _0xad44=function(_0x144795,_0x3ffe44){_0x144795=_0x144795-0x0;var _0x2f3227=_0xd44a[_0x144795];return _0x2f3227;};'use strict';var _=require(_0xad44('0x0'));var util=require('util');var logger=require(_0xad44('0x1'))(_0xad44('0x2'));var moment=require(_0xad44('0x3'));var BPromise=require(_0xad44('0x4'));var rp=require(_0xad44('0x5'));var fs=require('fs');var path=require(_0xad44('0x6'));var rimraf=require(_0xad44('0x7'));var config=require(_0xad44('0x8'));var attributes=require(_0xad44('0x9'));module[_0xad44('0xa')]=function(_0x378562,_0x170f53){return _0x378562[_0xad44('0xb')](_0xad44('0xc'),attributes,{'tableName':_0xad44('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xad44('0xe')});};
\ No newline at end of file
+var _0xc045=['utf8mb4','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','ChatInternalMessage','chat_internal_messages'];(function(_0x50d471,_0x2d9086){var _0x214900=function(_0x413fa1){while(--_0x413fa1){_0x50d471['push'](_0x50d471['shift']());}};_0x214900(++_0x2d9086);}(_0xc045,0x8d));var _0x5c04=function(_0x384c23,_0x30cd65){_0x384c23=_0x384c23-0x0;var _0x1fdf67=_0xc045[_0x384c23];return _0x1fdf67;};'use strict';var _=require(_0x5c04('0x0'));var util=require(_0x5c04('0x1'));var logger=require(_0x5c04('0x2'))('api');var moment=require(_0x5c04('0x3'));var BPromise=require(_0x5c04('0x4'));var rp=require(_0x5c04('0x5'));var fs=require('fs');var path=require(_0x5c04('0x6'));var rimraf=require(_0x5c04('0x7'));var config=require(_0x5c04('0x8'));var attributes=require('./chatInternalMessage.attributes');module[_0x5c04('0x9')]=function(_0xc2cd88,_0x5ccc69){return _0xc2cd88[_0x5c04('0xa')](_0x5c04('0xb'),attributes,{'tableName':_0x5c04('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x5c04('0xd'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index b10b881..05d8b70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44f6=['stringify','error','message','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','redis','defaults','localhost','socket.io-emitter','request','then','info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','ChatInternalMessage,\x20%s,\x20%s,\x20%s'];(function(_0x4a5871,_0x5bbf39){var _0xd0f956=function(_0x1adf6d){while(--_0x1adf6d){_0x4a5871['push'](_0x4a5871['shift']());}};_0xd0f956(++_0x5bbf39);}(_0x44f6,0xa4));var _0x644f=function(_0x2132a3,_0x4639e9){_0x2132a3=_0x2132a3-0x0;var _0x21890c=_0x44f6[_0x2132a3];return _0x21890c;};'use strict';var _=require(_0x644f('0x0'));var util=require(_0x644f('0x1'));var moment=require(_0x644f('0x2'));var BPromise=require(_0x644f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x644f('0x4'))['db'];var utils=require(_0x644f('0x5'));var logger=require(_0x644f('0x6'))(_0x644f('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x644f('0x8')][_0x644f('0x9')]({'port':0x232a});config[_0x644f('0xa')]=_[_0x644f('0xb')](config[_0x644f('0xa')],{'host':_0x644f('0xc'),'port':0x18eb});var socket=require(_0x644f('0xd'))(new Redis(config['redis']));require('./chatInternalMessage.socket')['register'](socket);function respondWithRpcPromise(_0x18eee9,_0x12210d,_0x1b7bc9){return new BPromise(function(_0x485c0a,_0x486476){return client[_0x644f('0xe')](_0x18eee9,_0x1b7bc9)[_0x644f('0xf')](function(_0x2e8c6b){logger[_0x644f('0x10')](_0x644f('0x11'),_0x12210d,_0x644f('0x12'));logger['debug'](_0x644f('0x13'),_0x12210d,_0x644f('0x12'),JSON[_0x644f('0x14')](_0x2e8c6b));if(_0x2e8c6b[_0x644f('0x15')]){if(_0x2e8c6b[_0x644f('0x15')]['code']===0x1f4){logger['error'](_0x644f('0x11'),_0x12210d,_0x2e8c6b[_0x644f('0x15')][_0x644f('0x16')]);return _0x486476(_0x2e8c6b[_0x644f('0x15')][_0x644f('0x16')]);}logger[_0x644f('0x15')](_0x644f('0x11'),_0x12210d,_0x2e8c6b[_0x644f('0x15')][_0x644f('0x16')]);return _0x485c0a(_0x2e8c6b[_0x644f('0x15')][_0x644f('0x16')]);}else{logger['info'](_0x644f('0x11'),_0x12210d,_0x644f('0x12'));_0x485c0a(_0x2e8c6b['result'][_0x644f('0x16')]);}})['catch'](function(_0x15a0a2){logger[_0x644f('0x15')](_0x644f('0x11'),_0x12210d,_0x15a0a2);_0x486476(_0x15a0a2);});});}
\ No newline at end of file
+var _0xd8e0=['ChatInternalMessage,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./chatInternalMessage.socket','register','request','then','info','request\x20sent','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xd8e0,0x111));var _0x0d8e=function(_0x263a74,_0xc31414){_0x263a74=_0x263a74-0x0;var _0x2aa86c=_0xd8e0[_0x263a74];return _0x2aa86c;};'use strict';var _=require(_0x0d8e('0x0'));var util=require(_0x0d8e('0x1'));var moment=require(_0x0d8e('0x2'));var BPromise=require(_0x0d8e('0x3'));var rs=require(_0x0d8e('0x4'));var fs=require('fs');var Redis=require(_0x0d8e('0x5'));var db=require(_0x0d8e('0x6'))['db'];var utils=require(_0x0d8e('0x7'));var logger=require(_0x0d8e('0x8'))(_0x0d8e('0x9'));var config=require(_0x0d8e('0xa'));var jayson=require(_0x0d8e('0xb'));var client=jayson[_0x0d8e('0xc')][_0x0d8e('0xd')]({'port':0x232a});config[_0x0d8e('0xe')]=_[_0x0d8e('0xf')](config[_0x0d8e('0xe')],{'host':_0x0d8e('0x10'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0d8e('0xe')]));require(_0x0d8e('0x11'))[_0x0d8e('0x12')](socket);function respondWithRpcPromise(_0xfa6994,_0x5950ad,_0x1f2f5b){return new BPromise(function(_0x3a252c,_0x26e4c9){return client[_0x0d8e('0x13')](_0xfa6994,_0x1f2f5b)[_0x0d8e('0x14')](function(_0x596df4){logger[_0x0d8e('0x15')]('ChatInternalMessage,\x20%s,\x20%s',_0x5950ad,_0x0d8e('0x16'));logger[_0x0d8e('0x17')](_0x0d8e('0x18'),_0x5950ad,_0x0d8e('0x16'),JSON[_0x0d8e('0x19')](_0x596df4));if(_0x596df4[_0x0d8e('0x1a')]){if(_0x596df4[_0x0d8e('0x1a')]['code']===0x1f4){logger['error'](_0x0d8e('0x1b'),_0x5950ad,_0x596df4['error'][_0x0d8e('0x1c')]);return _0x26e4c9(_0x596df4[_0x0d8e('0x1a')][_0x0d8e('0x1c')]);}logger[_0x0d8e('0x1a')](_0x0d8e('0x1b'),_0x5950ad,_0x596df4[_0x0d8e('0x1a')]['message']);return _0x3a252c(_0x596df4[_0x0d8e('0x1a')][_0x0d8e('0x1c')]);}else{logger['info'](_0x0d8e('0x1b'),_0x5950ad,'request\x20sent');_0x3a252c(_0x596df4[_0x0d8e('0x1d')][_0x0d8e('0x1c')]);}})['catch'](function(_0x4fc808){logger[_0x0d8e('0x1a')](_0x0d8e('0x1b'),_0x5950ad,_0x4fc808);_0x26e4c9(_0x4fc808);});});}
\ No newline at end of file
index 9d3ca69..3f24e84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2df5=['remove','emit','removeListener','register','length','save'];(function(_0x36690b,_0x12e879){var _0x45d7dd=function(_0x132709){while(--_0x132709){_0x36690b['push'](_0x36690b['shift']());}};_0x45d7dd(++_0x12e879);}(_0x2df5,0x89));var _0x52df=function(_0x34000d,_0x15d6ba){_0x34000d=_0x34000d-0x0;var _0x34a9b7=_0x2df5[_0x34000d];return _0x34a9b7;};'use strict';var ChatInternalMessageEvents=require('./chatInternalMessage.events');var events=[_0x52df('0x0'),_0x52df('0x1'),'update'];function createListener(_0x5fbcf5,_0x45b835){return function(_0x425b68){_0x45b835[_0x52df('0x2')](_0x5fbcf5,_0x425b68);};}function removeListener(_0x3932e3,_0x4d6d45){return function(){ChatInternalMessageEvents[_0x52df('0x3')](_0x3932e3,_0x4d6d45);};}exports[_0x52df('0x4')]=function(_0xcd9119){for(var _0x4867c6=0x0,_0x59730a=events[_0x52df('0x5')];_0x4867c6<_0x59730a;_0x4867c6++){var _0xcf7b69=events[_0x4867c6];var _0x4cbfc4=createListener('chatInternalMessage:'+_0xcf7b69,_0xcd9119);ChatInternalMessageEvents['on'](_0xcf7b69,_0x4cbfc4);}};
\ No newline at end of file
+var _0xbd5d=['chatInternalMessage:','./chatInternalMessage.events','length'];(function(_0x22dbca,_0xbc4079){var _0x191a37=function(_0x1ac360){while(--_0x1ac360){_0x22dbca['push'](_0x22dbca['shift']());}};_0x191a37(++_0xbc4079);}(_0xbd5d,0x88));var _0xdbd5=function(_0x4a34e8,_0x37b3d1){_0x4a34e8=_0x4a34e8-0x0;var _0x13304f=_0xbd5d[_0x4a34e8];return _0x13304f;};'use strict';var ChatInternalMessageEvents=require(_0xdbd5('0x0'));var events=['save','remove','update'];function createListener(_0x411e29,_0x446604){return function(_0x1fcc42){_0x446604['emit'](_0x411e29,_0x1fcc42);};}function removeListener(_0x57e82,_0x4e7bd2){return function(){ChatInternalMessageEvents['removeListener'](_0x57e82,_0x4e7bd2);};}exports['register']=function(_0x476794){for(var _0x4eed8e=0x0,_0x1d563f=events[_0xdbd5('0x1')];_0x4eed8e<_0x1d563f;_0x4eed8e++){var _0x128f4b=events[_0x4eed8e];var _0xabbb4c=createListener(_0xdbd5('0x2')+_0x128f4b,_0x476794);ChatInternalMessageEvents['on'](_0x128f4b,_0xabbb4c);}};
\ No newline at end of file
index 0cbb8c4..cc3febe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9559=['util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInternalMessage.controller','get','isAuthenticated','index','/describe','/users','getUsers','/:id','create','update','delete','multer'];(function(_0x30cc1a,_0x162bbc){var _0xb3f18f=function(_0x26bdfe){while(--_0x26bdfe){_0x30cc1a['push'](_0x30cc1a['shift']());}};_0xb3f18f(++_0x162bbc);}(_0x9559,0x1c7));var _0x9955=function(_0x2f62aa,_0x108e95){_0x2f62aa=_0x2f62aa-0x0;var _0x1a341f=_0x9559[_0x2f62aa];return _0x1a341f;};'use strict';var multer=require(_0x9955('0x0'));var util=require(_0x9955('0x1'));var path=require(_0x9955('0x2'));var timeout=require(_0x9955('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x9955('0x4'));var auth=require(_0x9955('0x5'));var interaction=require(_0x9955('0x6'));var config=require(_0x9955('0x7'));var controller=require(_0x9955('0x8'));router[_0x9955('0x9')]('/',auth[_0x9955('0xa')](),controller[_0x9955('0xb')]);router['get'](_0x9955('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0x9955('0x9')](_0x9955('0xd'),auth[_0x9955('0xa')](),controller[_0x9955('0xe')]);router[_0x9955('0x9')](_0x9955('0xf'),auth[_0x9955('0xa')](),controller['show']);router['post']('/',auth[_0x9955('0xa')](),controller[_0x9955('0x10')]);router['put'](_0x9955('0xf'),controller[_0x9955('0x11')]);router[_0x9955('0x12')](_0x9955('0xf'),auth[_0x9955('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x658f=['destroy','multer','util','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','getUsers','/:id','show','post','create','put','update','delete'];(function(_0x5924d7,_0x2a20a0){var _0xf025a=function(_0x225776){while(--_0x225776){_0x5924d7['push'](_0x5924d7['shift']());}};_0xf025a(++_0x2a20a0);}(_0x658f,0x94));var _0xf658=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x658f[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xf658('0x0'));var util=require(_0xf658('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xf658('0x2'));var router=express[_0xf658('0x3')]();var fs_extra=require(_0xf658('0x4'));var auth=require(_0xf658('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xf658('0x6'));var controller=require('./chatInternalMessage.controller');router[_0xf658('0x7')]('/',auth[_0xf658('0x8')](),controller[_0xf658('0x9')]);router[_0xf658('0x7')](_0xf658('0xa'),auth[_0xf658('0x8')](),controller[_0xf658('0xb')]);router[_0xf658('0x7')]('/users',auth[_0xf658('0x8')](),controller[_0xf658('0xc')]);router['get'](_0xf658('0xd'),auth['isAuthenticated'](),controller[_0xf658('0xe')]);router[_0xf658('0xf')]('/',auth[_0xf658('0x8')](),controller[_0xf658('0x10')]);router[_0xf658('0x11')]('/:id',controller[_0xf658('0x12')]);router[_0xf658('0x13')](_0xf658('0xd'),auth[_0xf658('0x8')](),controller[_0xf658('0x14')]);module['exports']=router;
\ No newline at end of file
index 60d647f..e360621 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a13=['TEXT','sequelize','exports','medium','BOOLEAN','ENUM','out','DATE','STRING'];(function(_0xdc4ef4,_0x48ffd4){var _0x136eeb=function(_0x471d9f){while(--_0x471d9f){_0xdc4ef4['push'](_0xdc4ef4['shift']());}};_0x136eeb(++_0x48ffd4);}(_0x5a13,0x145));var _0x35a1=function(_0x3fb324,_0x5f5908){_0x3fb324=_0x3fb324-0x0;var _0x583007=_0x5a13[_0x3fb324];return _0x583007;};'use strict';var Sequelize=require(_0x35a1('0x0'));module[_0x35a1('0x1')]={'body':{'type':Sequelize['TEXT'](_0x35a1('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x35a1('0x3')],'defaultValue':![]},'secret':{'type':Sequelize[_0x35a1('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x35a1('0x4')]('in',_0x35a1('0x5')),'defaultValue':_0x35a1('0x5'),'allowNull':![]},'readAt':{'type':Sequelize[_0x35a1('0x6')]},'providerName':{'type':Sequelize[_0x35a1('0x7')]},'providerResponse':{'type':Sequelize[_0x35a1('0x8')]}};
\ No newline at end of file
+var _0xfef3=['sequelize','TEXT','BOOLEAN','out','STRING'];(function(_0x2ff739,_0x1c8e0f){var _0x12dc13=function(_0x26fc97){while(--_0x26fc97){_0x2ff739['push'](_0x2ff739['shift']());}};_0x12dc13(++_0x1c8e0f);}(_0xfef3,0x118));var _0x3fef=function(_0x5ea002,_0x31ce12){_0x5ea002=_0x5ea002-0x0;var _0x31e822=_0xfef3[_0x5ea002];return _0x31e822;};'use strict';var Sequelize=require(_0x3fef('0x0'));module['exports']={'body':{'type':Sequelize[_0x3fef('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x3fef('0x2')],'defaultValue':![]},'secret':{'type':Sequelize[_0x3fef('0x2')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x3fef('0x3')),'defaultValue':_0x3fef('0x3'),'allowNull':![]},'readAt':{'type':Sequelize['DATE']},'providerName':{'type':Sequelize[_0x3fef('0x4')]},'providerResponse':{'type':Sequelize[_0x3fef('0x1')]}};
\ No newline at end of file
index 421e79e..1e70d7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3311=['SELECT','User','fullname','internal','manual','interface','SIP/%s','channel','event','accept','EventManager','acceptmessage','formData','chat-interactions','reject','chat','ChatInteractionId','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','interaction','null','RejectMessage','rejectMessage','contact','email','motionChannel','rejectmessage','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','http','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','status','end','json','offset','undefined','limit','count','Content-Range','apply','update','destroy','sendStatus','name','send','index','map','ChatMessage','fieldName','type','key','model','query','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','keys','rawAttributes','intersection','find','catch','create','body','params','describe','../../config/logger','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','ChatInteraction','isNil','read1stAt','role','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0x3311,0x12c));var _0x1331=function(_0x557e88,_0x52423b){_0x557e88=_0x557e88-0x0;var _0x55ae36=_0x3311[_0x557e88];return _0x55ae36;};'use strict';var emlformat=require(_0x1331('0x0'));var rimraf=require(_0x1331('0x1'));var zipdir=require(_0x1331('0x2'));var jsonpatch=require(_0x1331('0x3'));var rp=require(_0x1331('0x4'));var moment=require(_0x1331('0x5'));var BPromise=require(_0x1331('0x6'));var Mustache=require(_0x1331('0x7'));var util=require(_0x1331('0x8'));var path=require(_0x1331('0x9'));var sox=require('sox');var csv=require(_0x1331('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1331('0xb'));var _=require(_0x1331('0xc'));var squel=require(_0x1331('0xd'));var crypto=require(_0x1331('0xe'));var jsforce=require(_0x1331('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x1331('0x10'));var Papa=require(_0x1331('0x11'));var Redis=require(_0x1331('0x12'));var authService=require(_0x1331('0x13'));var qs=require(_0x1331('0x14'));var as=require(_0x1331('0x15'));var hardwareService=require(_0x1331('0x16'));var logger=require('../../config/logger')(_0x1331('0x17'));var utils=require('../../config/utils');var config=require(_0x1331('0x18'));var licenseUtil=require(_0x1331('0x19'));var db=require(_0x1331('0x1a'))['db'];config[_0x1331('0x1b')]=_[_0x1331('0x1c')](config['redis'],{'host':_0x1331('0x1d'),'port':0x18eb});var socket=require(_0x1331('0x1e'))(new Redis(config['redis']));require('./chatMessage.socket')[_0x1331('0x1f')](socket);var jayson=require(_0x1331('0x20'));var client=jayson[_0x1331('0x21')][_0x1331('0x22')]({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x6ceb26,_0x3db63d,_0x4beabd,_0x329b73){return new BPromise(function(_0x1e3792,_0x56effb){var _0x241dfc=_0x329b73||client;return _0x241dfc[_0x1331('0x23')](_0x6ceb26,_0x4beabd)[_0x1331('0x24')](function(_0x41c016){logger[_0x1331('0x25')](_0x1331('0x26'),_0x3db63d,_0x1331('0x27'));logger[_0x1331('0x28')](_0x1331('0x29'),_0x3db63d,_0x1331('0x27'),JSON[_0x1331('0x2a')](_0x41c016));if(_0x41c016[_0x1331('0x2b')]){if(_0x41c016['error'][_0x1331('0x2c')]===0x1f4){logger[_0x1331('0x2b')](_0x1331('0x26'),_0x3db63d,_0x41c016[_0x1331('0x2b')][_0x1331('0x2d')]);return _0x56effb(_0x41c016['error'][_0x1331('0x2d')]);}logger[_0x1331('0x2b')]('ChatMessage,\x20%s,\x20%s',_0x3db63d,_0x41c016[_0x1331('0x2b')][_0x1331('0x2d')]);return _0x1e3792(_0x41c016[_0x1331('0x2b')][_0x1331('0x2d')]);}else{logger[_0x1331('0x25')](_0x1331('0x26'),_0x3db63d,_0x1331('0x27'));_0x1e3792(_0x41c016[_0x1331('0x2e')][_0x1331('0x2d')]);}})['catch'](function(_0x5ecd1b){logger[_0x1331('0x2b')](_0x1331('0x26'),_0x3db63d,_0x5ecd1b);_0x56effb(_0x5ecd1b);});});}function respondWithStatusCode(_0x50ff11,_0xf35ae8){_0xf35ae8=_0xf35ae8||0xcc;return function(_0x3908cb){if(_0x3908cb){return _0x50ff11['sendStatus'](_0xf35ae8);}return _0x50ff11[_0x1331('0x2f')](_0xf35ae8)[_0x1331('0x30')]();};}function respondWithResult(_0x305d3b,_0x32117d){_0x32117d=_0x32117d||0xc8;return function(_0x5b56ea){if(_0x5b56ea){return _0x305d3b[_0x1331('0x2f')](_0x32117d)[_0x1331('0x31')](_0x5b56ea);}};}function respondWithFilteredResult(_0x2d7cbd,_0x690c9c){return function(_0x27ee85){if(_0x27ee85){var _0x49dbbf=typeof _0x690c9c[_0x1331('0x32')]===_0x1331('0x33')&&typeof _0x690c9c[_0x1331('0x34')]===_0x1331('0x33');var _0x1558dd=_0x27ee85['count'];var _0x13fc4e=_0x49dbbf?0x0:_0x690c9c[_0x1331('0x32')];var _0x4f4cbf=_0x49dbbf?_0x27ee85[_0x1331('0x35')]:_0x690c9c[_0x1331('0x32')]+_0x690c9c[_0x1331('0x34')];var _0x440e86;if(_0x4f4cbf>=_0x1558dd){_0x4f4cbf=_0x1558dd;_0x440e86=0xc8;}else{_0x440e86=0xce;}_0x2d7cbd[_0x1331('0x2f')](_0x440e86);return _0x2d7cbd['set'](_0x1331('0x36'),_0x13fc4e+'-'+_0x4f4cbf+'/'+_0x1558dd)[_0x1331('0x31')](_0x27ee85);}return null;};}function patchUpdates(_0x454e95){return function(_0xf7d7f0){try{jsonpatch[_0x1331('0x37')](_0xf7d7f0,_0x454e95,!![]);}catch(_0x29228a){return BPromise['reject'](_0x29228a);}return _0xf7d7f0['save']();};}function saveUpdates(_0x1588d2,_0xf0e19b){return function(_0x1388d3){if(_0x1388d3){return _0x1388d3[_0x1331('0x38')](_0x1588d2)[_0x1331('0x24')](function(_0x322944){return _0x322944;});}return null;};}function removeEntity(_0x12cb06,_0x5e3fd4){return function(_0x5af617){if(_0x5af617){return _0x5af617[_0x1331('0x39')]()['then'](function(){_0x12cb06[_0x1331('0x2f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x478026,_0x2b5e6c){return function(_0x2c083a){if(!_0x2c083a){_0x478026[_0x1331('0x3a')](0x194);}return _0x2c083a;};}function handleError(_0x5e9e54,_0x1972d0){_0x1972d0=_0x1972d0||0x1f4;return function(_0x2a3d80){logger[_0x1331('0x2b')](_0x2a3d80['stack']);if(_0x2a3d80[_0x1331('0x3b')]){delete _0x2a3d80['name'];}_0x5e9e54['status'](_0x1972d0)[_0x1331('0x3c')](_0x2a3d80);};}exports[_0x1331('0x3d')]=function(_0x19fa9a,_0x2d2272){var _0x11eaab={},_0x4f1311={},_0x41a02e={'count':0x0,'rows':[]};var _0x377663=_[_0x1331('0x3e')](db[_0x1331('0x3f')]['rawAttributes'],function(_0x1212c4){return{'name':_0x1212c4[_0x1331('0x40')],'type':_0x1212c4[_0x1331('0x41')][_0x1331('0x42')]};});_0x4f1311[_0x1331('0x43')]=_['map'](_0x377663,_0x1331('0x3b'));_0x4f1311['query']=_['keys'](_0x19fa9a[_0x1331('0x44')]);_0x4f1311['filters']=_['intersection'](_0x4f1311[_0x1331('0x43')],_0x4f1311[_0x1331('0x44')]);_0x11eaab[_0x1331('0x45')]=_['intersection'](_0x4f1311[_0x1331('0x43')],qs[_0x1331('0x46')](_0x19fa9a[_0x1331('0x44')][_0x1331('0x46')]));_0x11eaab['attributes']=_0x11eaab[_0x1331('0x45')]['length']?_0x11eaab[_0x1331('0x45')]:_0x4f1311['model'];if(!_0x19fa9a[_0x1331('0x44')][_0x1331('0x47')](_0x1331('0x48'))){_0x11eaab[_0x1331('0x34')]=qs['limit'](_0x19fa9a['query'][_0x1331('0x34')]);_0x11eaab[_0x1331('0x32')]=qs['offset'](_0x19fa9a[_0x1331('0x44')][_0x1331('0x32')]);}_0x11eaab[_0x1331('0x49')]=qs[_0x1331('0x4a')](_0x19fa9a[_0x1331('0x44')][_0x1331('0x4a')]);_0x11eaab[_0x1331('0x4b')]=qs[_0x1331('0x4c')](_['pick'](_0x19fa9a['query'],_0x4f1311[_0x1331('0x4c')]),_0x377663);if(_0x19fa9a[_0x1331('0x44')][_0x1331('0x4d')]){_0x11eaab['where']=_[_0x1331('0x4e')](_0x11eaab[_0x1331('0x4b')],{'$or':_['map'](_0x377663,function(_0x1c76f8){if(_0x1c76f8[_0x1331('0x41')]!==_0x1331('0x4f')){var _0x6b152b={};_0x6b152b[_0x1c76f8[_0x1331('0x3b')]]={'$like':'%'+_0x19fa9a[_0x1331('0x44')][_0x1331('0x4d')]+'%'};return _0x6b152b;}})});}_0x11eaab=_['merge']({},_0x11eaab,_0x19fa9a[_0x1331('0x50')]);var _0x5d17b7={'where':_0x11eaab[_0x1331('0x4b')]};return db['ChatMessage'][_0x1331('0x35')](_0x5d17b7)[_0x1331('0x24')](function(_0xb13f13){_0x41a02e[_0x1331('0x35')]=_0xb13f13;if(_0x19fa9a['query'][_0x1331('0x51')]){_0x11eaab[_0x1331('0x52')]=[{'all':!![]}];}return db[_0x1331('0x3f')]['findAll'](_0x11eaab);})[_0x1331('0x24')](function(_0x30dd47){_0x41a02e['rows']=_0x30dd47;return _0x41a02e;})[_0x1331('0x24')](respondWithFilteredResult(_0x2d2272,_0x11eaab))['catch'](handleError(_0x2d2272,null));};exports['show']=function(_0x4e9d81,_0x431fae){var _0x23db12={'raw':!![],'where':{'id':_0x4e9d81['params']['id']}},_0x2c8f03={};_0x2c8f03['model']=_[_0x1331('0x53')](db[_0x1331('0x3f')][_0x1331('0x54')]);_0x2c8f03[_0x1331('0x44')]=_['keys'](_0x4e9d81[_0x1331('0x44')]);_0x2c8f03[_0x1331('0x4c')]=_[_0x1331('0x55')](_0x2c8f03[_0x1331('0x43')],_0x2c8f03['query']);_0x23db12[_0x1331('0x45')]=_[_0x1331('0x55')](_0x2c8f03[_0x1331('0x43')],qs[_0x1331('0x46')](_0x4e9d81['query'][_0x1331('0x46')]));_0x23db12[_0x1331('0x45')]=_0x23db12[_0x1331('0x45')]['length']?_0x23db12[_0x1331('0x45')]:_0x2c8f03[_0x1331('0x43')];if(_0x4e9d81[_0x1331('0x44')][_0x1331('0x51')]){_0x23db12[_0x1331('0x52')]=[{'all':!![]}];}_0x23db12=_[_0x1331('0x4e')]({},_0x23db12,_0x4e9d81[_0x1331('0x50')]);return db['ChatMessage'][_0x1331('0x56')](_0x23db12)[_0x1331('0x24')](handleEntityNotFound(_0x431fae,null))[_0x1331('0x24')](respondWithResult(_0x431fae,null))[_0x1331('0x57')](handleError(_0x431fae,null));};exports[_0x1331('0x58')]=function(_0x3365e7,_0x190288){return db[_0x1331('0x3f')][_0x1331('0x58')](_0x3365e7[_0x1331('0x59')],{})[_0x1331('0x24')](respondWithResult(_0x190288,0xc9))['catch'](handleError(_0x190288,null));};exports[_0x1331('0x38')]=function(_0x333b4c,_0x4dd70d){if(_0x333b4c[_0x1331('0x59')]['id']){delete _0x333b4c['body']['id'];}return db[_0x1331('0x3f')][_0x1331('0x56')]({'where':{'id':_0x333b4c[_0x1331('0x5a')]['id']}})[_0x1331('0x24')](handleEntityNotFound(_0x4dd70d,null))[_0x1331('0x24')](saveUpdates(_0x333b4c[_0x1331('0x59')],null))['then'](respondWithResult(_0x4dd70d,null))[_0x1331('0x57')](handleError(_0x4dd70d,null));};exports[_0x1331('0x39')]=function(_0x4dc689,_0x299c08){return db[_0x1331('0x3f')]['find']({'where':{'id':_0x4dc689[_0x1331('0x5a')]['id']}})[_0x1331('0x24')](handleEntityNotFound(_0x299c08,null))['then'](removeEntity(_0x299c08,null))['catch'](handleError(_0x299c08,null));};exports['describe']=function(_0x150581,_0x5eb7ce){return db[_0x1331('0x3f')][_0x1331('0x5b')]()[_0x1331('0x24')](respondWithResult(_0x5eb7ce,null))[_0x1331('0x57')](handleError(_0x5eb7ce,null));};var interaction_log=require(_0x1331('0x5c'))('chat-interactions');exports['accept']=function(_0x43fb66,_0xb03fbb,_0x40b638){var _0x1ab6a4={'agent':{},'channel':'chat'};if(_0x43fb66[_0x1331('0x59')]['id']){delete _0x43fb66[_0x1331('0x59')]['id'];}_0x43fb66[_0x1331('0x59')][_0x1331('0x5d')]=!![];_0x43fb66['body'][_0x1331('0x5e')]=moment()[_0x1331('0x5f')](_0x1331('0x60'));_0x43fb66['body'][_0x1331('0x61')]=_0x43fb66[_0x1331('0x59')][_0x1331('0x61')]||_0x43fb66[_0x1331('0x62')]['id'];_0x1ab6a4[_0x1331('0x63')]['id']=_0x43fb66[_0x1331('0x59')][_0x1331('0x61')];return db['ChatMessage'][_0x1331('0x56')]({'where':{'id':_0x43fb66[_0x1331('0x5a')]['id'],'UserId':null}})[_0x1331('0x24')](handleEntityNotFound(_0xb03fbb,null))['then'](saveUpdates(_0x43fb66[_0x1331('0x59')],null))[_0x1331('0x24')](function(_0xefb4d9){if(_0xefb4d9){_0x1ab6a4[_0x1331('0x2d')]=_0xefb4d9[_0x1331('0x64')]({'plain':!![]});return db[_0x1331('0x65')][_0x1331('0x56')]({'where':{'id':_0xefb4d9['ChatInteractionId']}});}return null;})['then'](handleEntityNotFound(_0xb03fbb,null))['then'](function(_0x29979d){if(_0x29979d){return _0x29979d['update']({'UserId':_0x43fb66['body'][_0x1331('0x61')],'read1stAt':_[_0x1331('0x66')](_0x29979d[_0x1331('0x67')])?moment()[_0x1331('0x5f')](_0x1331('0x60')):undefined});}return null;})[_0x1331('0x24')](function(_0x35a6ee){if(_0x35a6ee){_0x1ab6a4['interaction']=_0x35a6ee[_0x1331('0x64')]({'plain':!![]});interaction_log[_0x1331('0x25')]('[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x43fb66['user']['id'],_0x43fb66['user'][_0x1331('0x3b')],_0x43fb66[_0x1331('0x62')][_0x1331('0x68')],_0x1ab6a4['interaction']['id'],_0x43fb66[_0x1331('0x59')]?JSON[_0x1331('0x2a')](_0x43fb66[_0x1331('0x59')]):'null');return respondWithRpcPromise(_0x1331('0x69'),'acceptMessage',_0x1ab6a4);}return null;})['then'](function(_0x22ddeb){var _0x2f042b=_0x1331('0x6a')+_0x22ddeb['message'][_0x1331('0x6b')];return db[_0x1331('0x6c')][_0x1331('0x44')](_0x2f042b,{'type':db[_0x1331('0x6d')][_0x1331('0x6e')][_0x1331('0x6f')],'raw':!![]})['then'](function(_0x258d65){return _0x258d65;});})[_0x1331('0x24')](function(_0x205724){if(_0x205724){_0x1ab6a4[_0x1331('0x2d')]['contact']=_0x205724[0x0];if(!_0x43fb66[_0x1331('0x59')][_0x1331('0x61')])return;return db[_0x1331('0x70')]['find']({'where':{'id':_0x43fb66[_0x1331('0x59')][_0x1331('0x61')],'role':_0x1331('0x63')},'attributes':['id',_0x1331('0x3b'),_0x1331('0x71'),'email',_0x1331('0x72')],'raw':!![]});}return null;})[_0x1331('0x24')](function(_0x470b00){if(!_0x470b00)return null;_0x1ab6a4[_0x1331('0x2d')][_0x1331('0x63')]=_0x470b00;return _0x1ab6a4;})[_0x1331('0x24')](function(_0xd96175){if(_0xd96175){if(_0x43fb66['body'][_0x1331('0x73')]){_0x1ab6a4[_0x1331('0x2d')][_0x1331('0x74')]=util[_0x1331('0x5f')](_0x1331('0x75'),_0x43fb66[_0x1331('0x62')][_0x1331('0x3b')]);_0x1ab6a4[_0x1331('0x2d')][_0x1331('0x76')]=_0x1ab6a4['channel'];_0x1ab6a4['message']['motionChannel']=_0x1ab6a4['channel'];_0x1ab6a4[_0x1331('0x2d')][_0x1331('0x77')]=_0x1331('0x78');return respondWithRpcPromise(_0x1331('0x79'),_0x1331('0x79'),{'event':_0x1331('0x7a'),'message':_[_0x1331('0x4e')](_0x1ab6a4[_0x1331('0x2d')],JSON['parse'](_0x1ab6a4['interaction'][_0x1331('0x7b')]))},client9002)['then'](function(){return _0x1ab6a4;});}return _0x1ab6a4;}return null;})[_0x1331('0x24')](respondWithResult(_0xb03fbb,null))['catch'](handleError(_0xb03fbb,null));};var interaction_log=require(_0x1331('0x5c'))(_0x1331('0x7c'));exports[_0x1331('0x7d')]=function(_0x247dc7,_0x5255ae,_0x4b91a7){var _0x3f0cc9={'agent':{},'channel':_0x1331('0x7e')};if(_0x247dc7[_0x1331('0x59')]['id']){delete _0x247dc7[_0x1331('0x59')]['id'];}_0x247dc7[_0x1331('0x59')]['UserId']=_0x247dc7[_0x1331('0x59')][_0x1331('0x61')]||_0x247dc7['user']['id'];_0x3f0cc9['agent']['id']=_0x247dc7[_0x1331('0x59')]['UserId'];return db[_0x1331('0x3f')]['find']({'where':{'id':_0x247dc7[_0x1331('0x5a')]['id'],'UserId':null}})[_0x1331('0x24')](handleEntityNotFound(_0x5255ae,null))[_0x1331('0x24')](function(_0x2a766b){if(_0x2a766b){_0x3f0cc9['message']=_0x2a766b['get']({'plain':!![]});return db[_0x1331('0x65')][_0x1331('0x56')]({'where':{'id':_0x2a766b[_0x1331('0x7f')]}});}return null;})[_0x1331('0x24')](handleEntityNotFound(_0x5255ae,null))['then'](function(_0xe46a57){if(_0xe46a57){_0x3f0cc9['interaction']=_0xe46a57[_0x1331('0x64')]({'plain':!![]});interaction_log['info'](_0x1331('0x80'),_0x247dc7[_0x1331('0x62')]['id'],_0x247dc7['user'][_0x1331('0x3b')],_0x247dc7[_0x1331('0x62')][_0x1331('0x68')],_0x3f0cc9[_0x1331('0x81')]['id'],_0x247dc7['body']?JSON['stringify'](_0x247dc7['body']):_0x1331('0x82'));return respondWithRpcPromise(_0x1331('0x83'),_0x1331('0x84'),_0x3f0cc9);}return null;})[_0x1331('0x24')](function(_0x48126e){var _0x39de17=_0x1331('0x6a')+_0x48126e[_0x1331('0x2d')]['ContactId'];return db[_0x1331('0x6c')][_0x1331('0x44')](_0x39de17,{'type':db[_0x1331('0x6d')]['QueryTypes'][_0x1331('0x6f')],'raw':!![]})[_0x1331('0x24')](function(_0xa71e7){return _0xa71e7;});})['then'](function(_0x1bec32){if(_0x1bec32){_0x3f0cc9[_0x1331('0x2d')][_0x1331('0x85')]=_0x1bec32[0x0];if(!_0x247dc7[_0x1331('0x59')]['UserId'])return;return db[_0x1331('0x70')][_0x1331('0x56')]({'where':{'id':_0x247dc7[_0x1331('0x59')][_0x1331('0x61')],'role':_0x1331('0x63')},'attributes':['id',_0x1331('0x3b'),_0x1331('0x71'),_0x1331('0x86'),_0x1331('0x72')],'raw':!![]});}return null;})['then'](function(_0x222652){if(!_0x222652)return null;_0x3f0cc9[_0x1331('0x2d')][_0x1331('0x63')]=_0x222652;return _0x3f0cc9;})[_0x1331('0x24')](function(_0x5ae7de){if(_0x5ae7de){_0x5ae7de[_0x1331('0x2d')][_0x1331('0x74')]=util[_0x1331('0x5f')]('SIP/%s',_0x247dc7['user']['name']);_0x5ae7de[_0x1331('0x2d')]['channel']=_0x3f0cc9[_0x1331('0x76')];_0x5ae7de[_0x1331('0x2d')][_0x1331('0x87')]=_0x3f0cc9[_0x1331('0x76')];_0x5ae7de[_0x1331('0x2d')][_0x1331('0x77')]=_0x1331('0x7d');respondWithRpcPromise(_0x1331('0x79'),_0x1331('0x79'),{'event':_0x1331('0x88'),'message':_[_0x1331('0x4e')](_0x3f0cc9[_0x1331('0x2d')],JSON['parse'](_0x3f0cc9['interaction']['formData']))},client9002);return _0x3f0cc9;}return null;})['then'](respondWithResult(_0x5255ae,null))[_0x1331('0x57')](handleError(_0x5255ae,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(_0x11dcd5,_0x2a2582){var _0x1a8677=function(_0x2c7d30){while(--_0x2c7d30){_0x11dcd5['push'](_0x11dcd5['shift']());}};_0x1a8677(++_0x2a2582);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xa9e0[_0x1ac595];return _0x455fff;};'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 1c228c1..d3bfa4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba01=['events','../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x5ddbcc,_0x1a00e8){var _0x317e4c=function(_0x364d2b){while(--_0x364d2b){_0x5ddbcc['push'](_0x5ddbcc['shift']());}};_0x317e4c(++_0x1a00e8);}(_0xba01,0x104));var _0x1ba0=function(_0x457b9b,_0x40b09d){_0x457b9b=_0x457b9b-0x0;var _0x99a651=_0xba01[_0x457b9b];return _0x99a651;};'use strict';var EventEmitter=require(_0x1ba0('0x0'));var ChatMessage=require(_0x1ba0('0x1'))['db']['ChatMessage'];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x1ba0('0x2')](0x0);var events={'afterCreate':_0x1ba0('0x3'),'afterUpdate':_0x1ba0('0x4'),'afterDestroy':_0x1ba0('0x5')};function emitEvent(_0x5af83f){return function(_0x1d31f6,_0x538f51,_0x5adfc6){ChatMessageEvents['emit'](_0x5af83f+':'+_0x1d31f6['id'],_0x1d31f6);ChatMessageEvents[_0x1ba0('0x6')](_0x5af83f,_0x1d31f6);_0x5adfc6(null);};}for(var e in events){if(events[_0x1ba0('0x7')](e)){var event=events[e];ChatMessage[_0x1ba0('0x8')](e,emitEvent(event));}}module[_0x1ba0('0x9')]=ChatMessageEvents;
\ No newline at end of file
+var _0xbc6e=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x4bcc27,_0x21a49d){var _0x4ce671=function(_0x32a180){while(--_0x32a180){_0x4bcc27['push'](_0x4bcc27['shift']());}};_0x4ce671(++_0x21a49d);}(_0xbc6e,0xf2));var _0xebc6=function(_0x51177b,_0x2a085d){_0x51177b=_0x51177b-0x0;var _0x3d16ad=_0xbc6e[_0x51177b];return _0x3d16ad;};'use strict';var EventEmitter=require(_0xebc6('0x0'));var ChatMessage=require('../../mysqldb')['db']['ChatMessage'];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0xebc6('0x1')](0x0);var events={'afterCreate':_0xebc6('0x2'),'afterUpdate':_0xebc6('0x3'),'afterDestroy':_0xebc6('0x4')};function emitEvent(_0x5eafab){return function(_0x3cc9fc,_0x4d6e6c,_0x2f3706){ChatMessageEvents[_0xebc6('0x5')](_0x5eafab+':'+_0x3cc9fc['id'],_0x3cc9fc);ChatMessageEvents[_0xebc6('0x5')](_0x5eafab,_0x3cc9fc);_0x2f3706(null);};}for(var e in events){if(events[_0xebc6('0x6')](e)){var event=events[e];ChatMessage[_0xebc6('0x7')](e,emitEvent(event));}}module[_0xebc6('0x8')]=ChatMessageEvents;
\ No newline at end of file
index 253b45c..32b710a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d0b=['rimraf','../../config/environment','./chatMessage.attributes','exports','define','ChatMessage','fti_chat_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','ChatInteraction','ChatInteractionId','then','update','createdAt','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','path'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x0d0b,0x88));var _0xb0d0=function(_0x93704d,_0x400342){_0x93704d=_0x93704d-0x0;var _0x8f7204=_0x0d0b[_0x93704d];return _0x8f7204;};'use strict';var _=require(_0xb0d0('0x0'));var util=require(_0xb0d0('0x1'));var logger=require('../../config/logger')(_0xb0d0('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xb0d0('0x3'));var rimraf=require(_0xb0d0('0x4'));var config=require(_0xb0d0('0x5'));var attributes=require(_0xb0d0('0x6'));module[_0xb0d0('0x7')]=function(_0x4aa00e,_0x1f70a7){return _0x4aa00e[_0xb0d0('0x8')](_0xb0d0('0x9'),attributes,{'tableName':'chat_messages','paranoid':![],'indexes':[{'name':_0xb0d0('0xa'),'fields':[_0xb0d0('0xb')],'type':_0xb0d0('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4902ef,_0x589232,_0x4655ac){var _0x21f13e=_0x4aa00e[_0xb0d0('0xd')];var _0x55e86f=_0x4902ef[_0xb0d0('0xe')]({'plain':!![]});if(_0x55e86f[_0xb0d0('0xf')]['toLowerCase']()==='in'||_0x55e86f[_0xb0d0('0xf')][_0xb0d0('0x10')]()===_0xb0d0('0x11')&&!_0x55e86f[_0xb0d0('0x12')]&&!_[_0xb0d0('0x13')](_0x55e86f[_0xb0d0('0x14')])){_0x21f13e[_0xb0d0('0x15')]['findOne']({'where':{'id':_0x55e86f[_0xb0d0('0x16')]}})[_0xb0d0('0x17')](function(_0x3cc3a0){if(_0x3cc3a0){_0x3cc3a0[_0xb0d0('0x18')]({'lastMsgAt':_0x55e86f[_0xb0d0('0x19')],'lastMsgDirection':_0x55e86f[_0xb0d0('0xf')][_0xb0d0('0x10')]()});}})['catch'](function(_0x3f9281){console['error'](_0x3f9281);});}_0x4655ac();}},'charset':_0xb0d0('0x1a'),'collate':_0xb0d0('0x1b')});};
\ No newline at end of file
+var _0x3c5d=['moment','bluebird','request-promise','path','../../config/environment','./chatMessage.attributes','exports','define','ChatMessage','chat_messages','fti_chat_messages','body','FULLTEXT','get','direction','out','isNil','UserId','findOne','ChatInteractionId','update','createdAt','toLowerCase','lodash','util','../../config/logger'];(function(_0x44afa4,_0x5be27b){var _0xcad289=function(_0x206272){while(--_0x206272){_0x44afa4['push'](_0x44afa4['shift']());}};_0xcad289(++_0x5be27b);}(_0x3c5d,0x7f));var _0xd3c5=function(_0x527567,_0x2ec732){_0x527567=_0x527567-0x0;var _0x14d154=_0x3c5d[_0x527567];return _0x14d154;};'use strict';var _=require(_0xd3c5('0x0'));var util=require(_0xd3c5('0x1'));var logger=require(_0xd3c5('0x2'))('api');var moment=require(_0xd3c5('0x3'));var BPromise=require(_0xd3c5('0x4'));var rp=require(_0xd3c5('0x5'));var fs=require('fs');var path=require(_0xd3c5('0x6'));var rimraf=require('rimraf');var config=require(_0xd3c5('0x7'));var attributes=require(_0xd3c5('0x8'));module[_0xd3c5('0x9')]=function(_0x1ee332,_0x1569f){return _0x1ee332[_0xd3c5('0xa')](_0xd3c5('0xb'),attributes,{'tableName':_0xd3c5('0xc'),'paranoid':![],'indexes':[{'name':_0xd3c5('0xd'),'fields':[_0xd3c5('0xe')],'type':_0xd3c5('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x25d1bf,_0xf80ea6,_0x2f968e){var _0x1e0db8=_0x1ee332['models'];var _0x414367=_0x25d1bf[_0xd3c5('0x10')]({'plain':!![]});if(_0x414367['direction']['toLowerCase']()==='in'||_0x414367[_0xd3c5('0x11')]['toLowerCase']()===_0xd3c5('0x12')&&!_0x414367['secret']&&!_[_0xd3c5('0x13')](_0x414367[_0xd3c5('0x14')])){_0x1e0db8['ChatInteraction'][_0xd3c5('0x15')]({'where':{'id':_0x414367[_0xd3c5('0x16')]}})['then'](function(_0x31a779){if(_0x31a779){_0x31a779[_0xd3c5('0x17')]({'lastMsgAt':_0x414367[_0xd3c5('0x18')],'lastMsgDirection':_0x414367[_0xd3c5('0x11')][_0xd3c5('0x19')]()});}})['catch'](function(_0x463d78){console['error'](_0x463d78);});}_0x2f968e();}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 3859aa6..b401d38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e78=['../../config/environment','jayson/promise','client','http','redis','localhost','./chatMessage.socket','register','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','CreateChatMessage','ChatMessage','create','body','raw','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x450076,_0x10983b){var _0x2029cc=function(_0x4a5e76){while(--_0x4a5e76){_0x450076['push'](_0x450076['shift']());}};_0x2029cc(++_0x10983b);}(_0x9e78,0xb8));var _0x89e7=function(_0x4bb145,_0x3e7d33){_0x4bb145=_0x4bb145-0x0;var _0x4db596=_0x9e78[_0x4bb145];return _0x4db596;};'use strict';var _=require(_0x89e7('0x0'));var util=require(_0x89e7('0x1'));var moment=require(_0x89e7('0x2'));var BPromise=require(_0x89e7('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x89e7('0x4'))['db'];var utils=require(_0x89e7('0x5'));var logger=require(_0x89e7('0x6'))(_0x89e7('0x7'));var config=require(_0x89e7('0x8'));var jayson=require(_0x89e7('0x9'));var client=jayson[_0x89e7('0xa')][_0x89e7('0xb')]({'port':0x232a});config[_0x89e7('0xc')]=_['defaults'](config[_0x89e7('0xc')],{'host':_0x89e7('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x89e7('0xc')]));require(_0x89e7('0xe'))[_0x89e7('0xf')](socket);function respondWithRpcPromise(_0x9cdf7c,_0x4ebe94,_0x3e44e2){return new BPromise(function(_0x5c34bf,_0x269c1a){return client[_0x89e7('0x10')](_0x9cdf7c,_0x3e44e2)[_0x89e7('0x11')](function(_0x1c20db){logger[_0x89e7('0x12')](_0x89e7('0x13'),_0x4ebe94,_0x89e7('0x14'));logger[_0x89e7('0x15')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x4ebe94,_0x89e7('0x14'),JSON[_0x89e7('0x16')](_0x1c20db));if(_0x1c20db[_0x89e7('0x17')]){if(_0x1c20db[_0x89e7('0x17')][_0x89e7('0x18')]===0x1f4){logger[_0x89e7('0x17')](_0x89e7('0x13'),_0x4ebe94,_0x1c20db[_0x89e7('0x17')][_0x89e7('0x19')]);return _0x269c1a(_0x1c20db[_0x89e7('0x17')][_0x89e7('0x19')]);}logger[_0x89e7('0x17')]('ChatMessage,\x20%s,\x20%s',_0x4ebe94,_0x1c20db[_0x89e7('0x17')][_0x89e7('0x19')]);return _0x5c34bf(_0x1c20db[_0x89e7('0x17')][_0x89e7('0x19')]);}else{logger[_0x89e7('0x12')](_0x89e7('0x13'),_0x4ebe94,_0x89e7('0x14'));_0x5c34bf(_0x1c20db['result'][_0x89e7('0x19')]);}})['catch'](function(_0x303047){logger['error'](_0x89e7('0x13'),_0x4ebe94,_0x303047);_0x269c1a(_0x303047);});});}exports[_0x89e7('0x1a')]=function(_0x30f5ab){var _0x491003=this;return new Promise(function(_0x2a4c90,_0x1996af){return db[_0x89e7('0x1b')][_0x89e7('0x1c')](_0x30f5ab[_0x89e7('0x1d')],{'raw':_0x30f5ab['options']?_0x30f5ab['options'][_0x89e7('0x1e')]===undefined?!![]:![]:!![]})['then'](function(_0x592213){logger[_0x89e7('0x12')](_0x89e7('0x1a'),_0x30f5ab);logger[_0x89e7('0x15')](_0x89e7('0x1a'),_0x30f5ab,JSON[_0x89e7('0x16')](_0x592213));_0x2a4c90(_0x592213);})[_0x89e7('0x1f')](function(_0x482209){logger[_0x89e7('0x17')](_0x89e7('0x1a'),_0x482209[_0x89e7('0x19')],_0x30f5ab);_0x1996af(_0x491003['error'](0x1f4,_0x482209[_0x89e7('0x19')]));});});};
\ No newline at end of file
+var _0xc2a9=['catch','CreateChatMessage','ChatMessage','body','options','raw','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','defaults','redis','localhost','register','request','then','request\x20sent','debug','stringify','error','code','ChatMessage,\x20%s,\x20%s','message','info','result'];(function(_0x328d46,_0x438f65){var _0x5665e6=function(_0x1e8524){while(--_0x1e8524){_0x328d46['push'](_0x328d46['shift']());}};_0x5665e6(++_0x438f65);}(_0xc2a9,0x82));var _0x9c2a=function(_0x548624,_0x28cde1){_0x548624=_0x548624-0x0;var _0x518d2d=_0xc2a9[_0x548624];return _0x518d2d;};'use strict';var _=require(_0x9c2a('0x0'));var util=require(_0x9c2a('0x1'));var moment=require('moment');var BPromise=require(_0x9c2a('0x2'));var rs=require(_0x9c2a('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9c2a('0x4'))['db'];var utils=require(_0x9c2a('0x5'));var logger=require(_0x9c2a('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x9c2a('0x7'));var client=jayson[_0x9c2a('0x8')][_0x9c2a('0x9')]({'port':0x232a});config['redis']=_[_0x9c2a('0xa')](config[_0x9c2a('0xb')],{'host':_0x9c2a('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9c2a('0xb')]));require('./chatMessage.socket')[_0x9c2a('0xd')](socket);function respondWithRpcPromise(_0x4b2c10,_0x5e3997,_0x2f20ba){return new BPromise(function(_0x311b23,_0x5eb9ca){return client[_0x9c2a('0xe')](_0x4b2c10,_0x2f20ba)[_0x9c2a('0xf')](function(_0xac9db2){logger['info']('ChatMessage,\x20%s,\x20%s',_0x5e3997,_0x9c2a('0x10'));logger[_0x9c2a('0x11')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x5e3997,_0x9c2a('0x10'),JSON[_0x9c2a('0x12')](_0xac9db2));if(_0xac9db2[_0x9c2a('0x13')]){if(_0xac9db2['error'][_0x9c2a('0x14')]===0x1f4){logger['error'](_0x9c2a('0x15'),_0x5e3997,_0xac9db2['error']['message']);return _0x5eb9ca(_0xac9db2['error'][_0x9c2a('0x16')]);}logger['error']('ChatMessage,\x20%s,\x20%s',_0x5e3997,_0xac9db2[_0x9c2a('0x13')]['message']);return _0x311b23(_0xac9db2[_0x9c2a('0x13')]['message']);}else{logger[_0x9c2a('0x17')](_0x9c2a('0x15'),_0x5e3997,_0x9c2a('0x10'));_0x311b23(_0xac9db2[_0x9c2a('0x18')]['message']);}})[_0x9c2a('0x19')](function(_0x10e202){logger[_0x9c2a('0x13')](_0x9c2a('0x15'),_0x5e3997,_0x10e202);_0x5eb9ca(_0x10e202);});});}exports[_0x9c2a('0x1a')]=function(_0x5a6a88){var _0x5a4725=this;return new Promise(function(_0xc824e4,_0x5e691f){return db[_0x9c2a('0x1b')]['create'](_0x5a6a88[_0x9c2a('0x1c')],{'raw':_0x5a6a88['options']?_0x5a6a88[_0x9c2a('0x1d')][_0x9c2a('0x1e')]===undefined?!![]:![]:!![]})[_0x9c2a('0xf')](function(_0x15ee9c){logger['info'](_0x9c2a('0x1a'),_0x5a6a88);logger[_0x9c2a('0x11')](_0x9c2a('0x1a'),_0x5a6a88,JSON[_0x9c2a('0x12')](_0x15ee9c));_0xc824e4(_0x15ee9c);})[_0x9c2a('0x19')](function(_0x403592){logger['error'](_0x9c2a('0x1a'),_0x403592[_0x9c2a('0x16')],_0x5a6a88);_0x5e691f(_0x5a4725[_0x9c2a('0x13')](0x1f4,_0x403592[_0x9c2a('0x16')]));});});};
\ No newline at end of file
index c9c60d1..57a43f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcba=['length','./chatMessage.events','save','update','emit','register'];(function(_0x326c6c,_0x4b67cb){var _0x1e9fff=function(_0x28eb32){while(--_0x28eb32){_0x326c6c['push'](_0x326c6c['shift']());}};_0x1e9fff(++_0x4b67cb);}(_0xbcba,0x6d));var _0xabcb=function(_0x34ecb6,_0x2afd7c){_0x34ecb6=_0x34ecb6-0x0;var _0x17cc8f=_0xbcba[_0x34ecb6];return _0x17cc8f;};'use strict';var ChatMessageEvents=require(_0xabcb('0x0'));var events=[_0xabcb('0x1'),'remove',_0xabcb('0x2')];function createListener(_0x2c9ee7,_0x2034d2){return function(_0xcbe337){_0x2034d2[_0xabcb('0x3')](_0x2c9ee7,_0xcbe337);};}function removeListener(_0x3e3b9b,_0x5e10df){return function(){ChatMessageEvents['removeListener'](_0x3e3b9b,_0x5e10df);};}exports[_0xabcb('0x4')]=function(_0x1290b2){for(var _0x5c706e=0x0,_0x5322e7=events[_0xabcb('0x5')];_0x5c706e<_0x5322e7;_0x5c706e++){var _0x192b36=events[_0x5c706e];var _0x5e693d=createListener('chatMessage:'+_0x192b36,_0x1290b2);ChatMessageEvents['on'](_0x192b36,_0x5e693d);}};
\ No newline at end of file
+var _0x4b19=['remove','update','emit','removeListener','register','chatMessage:','./chatMessage.events'];(function(_0x48ac40,_0x1e3beb){var _0x55df02=function(_0x5e27d6){while(--_0x5e27d6){_0x48ac40['push'](_0x48ac40['shift']());}};_0x55df02(++_0x1e3beb);}(_0x4b19,0x195));var _0x94b1=function(_0x4eed12,_0x1faabc){_0x4eed12=_0x4eed12-0x0;var _0x44d939=_0x4b19[_0x4eed12];return _0x44d939;};'use strict';var ChatMessageEvents=require(_0x94b1('0x0'));var events=['save',_0x94b1('0x1'),_0x94b1('0x2')];function createListener(_0x221ab3,_0x577f52){return function(_0x1ffdb7){_0x577f52[_0x94b1('0x3')](_0x221ab3,_0x1ffdb7);};}function removeListener(_0x2240b9,_0x4f607f){return function(){ChatMessageEvents[_0x94b1('0x4')](_0x2240b9,_0x4f607f);};}exports[_0x94b1('0x5')]=function(_0x52d6c1){for(var _0x24df76=0x0,_0x110a52=events['length'];_0x24df76<_0x110a52;_0x24df76++){var _0x40c69c=events[_0x24df76];var _0x201a02=createListener(_0x94b1('0x6')+_0x40c69c,_0x52d6c1);ChatMessageEvents['on'](_0x40c69c,_0x201a02);}};
\ No newline at end of file
index f9a1ea8..b0f19c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedc2=['tracked','chat','put','update','accept','/:id/reject','reject','delete','destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./chatMessage.controller','get','isAuthenticated','index','describe','/:id','show','post'];(function(_0x2b6b89,_0x172ec0){var _0x5aa6af=function(_0x19cd5e){while(--_0x19cd5e){_0x2b6b89['push'](_0x2b6b89['shift']());}};_0x5aa6af(++_0x172ec0);}(_0xedc2,0xd2));var _0x2edc=function(_0x5339c7,_0x3ff7a8){_0x5339c7=_0x5339c7-0x0;var _0x5ca169=_0xedc2[_0x5339c7];return _0x5ca169;};'use strict';var multer=require('multer');var util=require(_0x2edc('0x0'));var path=require(_0x2edc('0x1'));var timeout=require(_0x2edc('0x2'));var express=require(_0x2edc('0x3'));var router=express[_0x2edc('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x2edc('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x2edc('0x6'));var controller=require(_0x2edc('0x7'));router[_0x2edc('0x8')]('/',auth[_0x2edc('0x9')](),controller[_0x2edc('0xa')]);router[_0x2edc('0x8')]('/describe',auth['isAuthenticated'](),controller[_0x2edc('0xb')]);router[_0x2edc('0x8')](_0x2edc('0xc'),auth[_0x2edc('0x9')](),controller[_0x2edc('0xd')]);router[_0x2edc('0xe')]('/',auth[_0x2edc('0x9')](),interaction[_0x2edc('0xf')](_0x2edc('0x10'),'chatmessage:create'),controller['create']);router[_0x2edc('0x11')](_0x2edc('0xc'),controller[_0x2edc('0x12')]);router[_0x2edc('0x11')]('/:id/accept',auth[_0x2edc('0x9')](),controller[_0x2edc('0x13')]);router[_0x2edc('0x11')](_0x2edc('0x14'),auth[_0x2edc('0x9')](),controller[_0x2edc('0x15')]);router[_0x2edc('0x16')](_0x2edc('0xc'),auth['isAuthenticated'](),controller[_0x2edc('0x17')]);module[_0x2edc('0x18')]=router;
\ No newline at end of file
+var _0x5fd4=['../../components/interaction/service','../../config/environment','./chatMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','tracked','chatmessage:create','create','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','exports','multer','path','Router','fs-extra','../../components/auth/service'];(function(_0x52d5da,_0x9d7b25){var _0x34aa1a=function(_0x17ea7d){while(--_0x17ea7d){_0x52d5da['push'](_0x52d5da['shift']());}};_0x34aa1a(++_0x9d7b25);}(_0x5fd4,0x113));var _0x45fd=function(_0x304809,_0x18167b){_0x304809=_0x304809-0x0;var _0x3e2656=_0x5fd4[_0x304809];return _0x3e2656;};'use strict';var multer=require(_0x45fd('0x0'));var util=require('util');var path=require(_0x45fd('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x45fd('0x2')]();var fs_extra=require(_0x45fd('0x3'));var auth=require(_0x45fd('0x4'));var interaction=require(_0x45fd('0x5'));var config=require(_0x45fd('0x6'));var controller=require(_0x45fd('0x7'));router[_0x45fd('0x8')]('/',auth[_0x45fd('0x9')](),controller[_0x45fd('0xa')]);router[_0x45fd('0x8')](_0x45fd('0xb'),auth[_0x45fd('0x9')](),controller[_0x45fd('0xc')]);router[_0x45fd('0x8')](_0x45fd('0xd'),auth['isAuthenticated'](),controller[_0x45fd('0xe')]);router[_0x45fd('0xf')]('/',auth['isAuthenticated'](),interaction[_0x45fd('0x10')]('chat',_0x45fd('0x11')),controller[_0x45fd('0x12')]);router[_0x45fd('0x13')](_0x45fd('0xd'),controller[_0x45fd('0x14')]);router['put'](_0x45fd('0x15'),auth[_0x45fd('0x9')](),controller[_0x45fd('0x16')]);router[_0x45fd('0x13')](_0x45fd('0x17'),auth[_0x45fd('0x9')](),controller[_0x45fd('0x18')]);router[_0x45fd('0x19')]('/:id',auth[_0x45fd('0x9')](),controller[_0x45fd('0x1a')]);module[_0x45fd('0x1b')]=router;
\ No newline at end of file
index 573fa42..261f386 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80bd=['medium','TEXT'];(function(_0x2eee78,_0x4b063f){var _0x6d5f74=function(_0x39e867){while(--_0x39e867){_0x2eee78['push'](_0x2eee78['shift']());}};_0x6d5f74(++_0x4b063f);}(_0x80bd,0x1bf));var _0xd80b=function(_0x54325a,_0x2836c6){_0x54325a=_0x54325a-0x0;var _0x2d4460=_0x80bd[_0x54325a];return _0x2d4460;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize[_0xd80b('0x0')](_0xd80b('0x1')),'allowNull':![]}};
\ No newline at end of file
+var _0x6290=['TEXT','sequelize'];(function(_0x2d460c,_0x4f08c0){var _0xf6fc4c=function(_0x4fb81c){while(--_0x4fb81c){_0x2d460c['push'](_0x2d460c['shift']());}};_0xf6fc4c(++_0x4f08c0);}(_0x6290,0xf9));var _0x0629=function(_0x3e90cb,_0x505903){_0x3e90cb=_0x3e90cb-0x0;var _0x2c886f=_0x6290[_0x3e90cb];return _0x2c886f;};'use strict';var Sequelize=require(_0x0629('0x0'));module['exports']={'body':{'type':Sequelize[_0x0629('0x1')]('medium'),'allowNull':![]}};
\ No newline at end of file
index 40a95e5..e924e23 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(_0x97ad7a,_0x521838){var _0x408c10=function(_0xa52479){while(--_0xa52479){_0x97ad7a['push'](_0x97ad7a['shift']());}};_0x408c10(++_0x521838);}(_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){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 _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(_0x579db3,_0x78f868){var _0x562ff0=function(_0x5490c0){while(--_0x5490c0){_0x579db3['push'](_0x579db3['shift']());}};_0x562ff0(++_0x78f868);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){var _0x514445={},_0x456a28={},_0x3250e0={'count':0x0,'rows':[]};var _0x4253e5=_['map'](db['ChatOfflineMessage']['rawAttributes'],function(_0x3573be){return{'name':_0x3573be[_0x7995('0x2c')],'type':_0x3573be[_0x7995('0x2d')][_0x7995('0x2e')]};});_0x456a28[_0x7995('0x2f')]=_[_0x7995('0x30')](_0x4253e5,'name');_0x456a28['query']=_[_0x7995('0x31')](_0x4b6f99['query']);_0x456a28[_0x7995('0x32')]=_[_0x7995('0x33')](_0x456a28[_0x7995('0x2f')],_0x456a28[_0x7995('0x34')]);_0x514445[_0x7995('0x35')]=_['intersection'](_0x456a28[_0x7995('0x2f')],qs[_0x7995('0x36')](_0x4b6f99['query']['fields']));_0x514445['attributes']=_0x514445[_0x7995('0x35')][_0x7995('0x37')]?_0x514445['attributes']:_0x456a28[_0x7995('0x2f')];if(!_0x4b6f99['query'][_0x7995('0x38')](_0x7995('0x39'))){_0x514445[_0x7995('0x21')]=qs['limit'](_0x4b6f99['query'][_0x7995('0x21')]);_0x514445['offset']=qs['offset'](_0x4b6f99[_0x7995('0x34')][_0x7995('0x20')]);}_0x514445['order']=qs[_0x7995('0x3a')](_0x4b6f99[_0x7995('0x34')][_0x7995('0x3a')]);_0x514445[_0x7995('0x3b')]=qs[_0x7995('0x32')](_['pick'](_0x4b6f99[_0x7995('0x34')],_0x456a28[_0x7995('0x32')]),_0x4253e5);if(_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]){_0x514445['where']=_[_0x7995('0x3d')](_0x514445[_0x7995('0x3b')],{'$or':_[_0x7995('0x30')](_0x4253e5,function(_0xe5ea43){if(_0xe5ea43[_0x7995('0x2d')]!==_0x7995('0x3e')){var _0x5688a1={};_0x5688a1[_0xe5ea43[_0x7995('0x29')]]={'$like':'%'+_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]+'%'};return _0x5688a1;}})});}_0x514445=_[_0x7995('0x3d')]({},_0x514445,_0x4b6f99[_0x7995('0x3f')]);var _0x298fc2={'where':_0x514445[_0x7995('0x3b')]};return db[_0x7995('0x40')][_0x7995('0x1f')](_0x298fc2)[_0x7995('0x26')](function(_0x6fe77b){_0x3250e0[_0x7995('0x1f')]=_0x6fe77b;if(_0x4b6f99[_0x7995('0x34')]['includeAll']){_0x514445['include']=[{'all':!![]}];}return db[_0x7995('0x40')][_0x7995('0x41')](_0x514445);})['then'](function(_0x4b0855){_0x3250e0[_0x7995('0x42')]=_0x4b0855;return _0x3250e0;})['then'](respondWithFilteredResult(_0x9b2a15,_0x514445))['catch'](handleError(_0x9b2a15,null));};exports[_0x7995('0x43')]=function(_0x36e28b,_0x35c8ff){var _0x576b96={'raw':!![],'where':{'id':_0x36e28b['params']['id']}},_0x46ac4f={};_0x46ac4f[_0x7995('0x2f')]=_['keys'](db['ChatOfflineMessage'][_0x7995('0x44')]);_0x46ac4f[_0x7995('0x34')]=_[_0x7995('0x31')](_0x36e28b[_0x7995('0x34')]);_0x46ac4f['filters']=_[_0x7995('0x33')](_0x46ac4f[_0x7995('0x2f')],_0x46ac4f[_0x7995('0x34')]);_0x576b96[_0x7995('0x35')]=_['intersection'](_0x46ac4f['model'],qs[_0x7995('0x36')](_0x36e28b['query'][_0x7995('0x36')]));_0x576b96['attributes']=_0x576b96[_0x7995('0x35')]['length']?_0x576b96[_0x7995('0x35')]:_0x46ac4f[_0x7995('0x2f')];if(_0x36e28b['query'][_0x7995('0x45')]){_0x576b96[_0x7995('0x46')]=[{'all':!![]}];}_0x576b96=_[_0x7995('0x3d')]({},_0x576b96,_0x36e28b[_0x7995('0x3f')]);return db['ChatOfflineMessage'][_0x7995('0x47')](_0x576b96)[_0x7995('0x26')](handleEntityNotFound(_0x35c8ff,null))[_0x7995('0x26')](respondWithResult(_0x35c8ff,null))['catch'](handleError(_0x35c8ff,null));};exports[_0x7995('0x48')]=function(_0x44f516,_0x511567){return db[_0x7995('0x40')][_0x7995('0x48')](_0x44f516['body'],{})[_0x7995('0x26')](respondWithResult(_0x511567,0xc9))[_0x7995('0x49')](handleError(_0x511567,null));};exports['update']=function(_0x3d1dbb,_0x5843ba){if(_0x3d1dbb[_0x7995('0x4a')]['id']){delete _0x3d1dbb[_0x7995('0x4a')]['id'];}return db[_0x7995('0x40')][_0x7995('0x47')]({'where':{'id':_0x3d1dbb[_0x7995('0x4b')]['id']}})[_0x7995('0x26')](handleEntityNotFound(_0x5843ba,null))[_0x7995('0x26')](saveUpdates(_0x3d1dbb['body'],null))[_0x7995('0x26')](respondWithResult(_0x5843ba,null))[_0x7995('0x49')](handleError(_0x5843ba,null));};exports[_0x7995('0x27')]=function(_0x4ffc8a,_0x19da63){return db[_0x7995('0x4c')][_0x7995('0x41')]({'where':{'ChatOfflineMessageId':_0x4ffc8a['params']['id']},'raw':!![]})['then'](function(_0x5a592e){_0x5a592e[_0x7995('0x4d')](function(_0x1fd1ca){var _0x4cf5db=path[_0x7995('0x4e')](config[_0x7995('0x4f')],_0x7995('0x50'),_0x7995('0x51'),_0x7995('0x52'),'offline-chat',_0x1fd1ca[_0x7995('0x53')]);var _0x4ab09f=fs[_0x7995('0x54')](_0x4cf5db);if(_0x4ab09f)fs_extra[_0x7995('0x55')](_0x4cf5db);});})[_0x7995('0x26')](function(){return db['ChatOfflineMessage']['find']({'where':{'id':_0x4ffc8a['params']['id']},'individualHooks':!![]});})['then'](handleEntityNotFound(_0x19da63,null))[_0x7995('0x26')](removeEntity(_0x19da63,null))[_0x7995('0x49')](handleError(_0x19da63,null));};exports[_0x7995('0x56')]=function(_0x150261,_0x1d957e){return db[_0x7995('0x40')][_0x7995('0x56')]()[_0x7995('0x26')](respondWithResult(_0x1d957e,null))[_0x7995('0x49')](handleError(_0x1d957e,null));};
\ No newline at end of file
index 3fd1e00..741dde8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71f4=['chat_offline_messages','utf8mb4','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','./chatOfflineMessage.attributes','exports','define','ChatOfflineMessage'];(function(_0x32c92a,_0x26ec67){var _0x130f0b=function(_0x323a9d){while(--_0x323a9d){_0x32c92a['push'](_0x32c92a['shift']());}};_0x130f0b(++_0x26ec67);}(_0x71f4,0xe2));var _0x471f=function(_0x396e98,_0x528852){_0x396e98=_0x396e98-0x0;var _0x24ded2=_0x71f4[_0x396e98];return _0x24ded2;};'use strict';var _=require(_0x471f('0x0'));var util=require(_0x471f('0x1'));var logger=require(_0x471f('0x2'))(_0x471f('0x3'));var moment=require(_0x471f('0x4'));var BPromise=require(_0x471f('0x5'));var rp=require(_0x471f('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x471f('0x7'));var config=require('../../config/environment');var attributes=require(_0x471f('0x8'));module[_0x471f('0x9')]=function(_0x42c4a6,_0x22445e){return _0x42c4a6[_0x471f('0xa')](_0x471f('0xb'),attributes,{'tableName':_0x471f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x471f('0xd'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xb0f1=['util','api','moment','bluebird','request-promise','path','rimraf','define','ChatOfflineMessage','chat_offline_messages','utf8mb4'];(function(_0x1b2489,_0x4f2740){var _0x45104c=function(_0x57e698){while(--_0x57e698){_0x1b2489['push'](_0x1b2489['shift']());}};_0x45104c(++_0x4f2740);}(_0xb0f1,0x134));var _0x1b0f=function(_0x35d4e9,_0x298c61){_0x35d4e9=_0x35d4e9-0x0;var _0x5c2770=_0xb0f1[_0x35d4e9];return _0x5c2770;};'use strict';var _=require('lodash');var util=require(_0x1b0f('0x0'));var logger=require('../../config/logger')(_0x1b0f('0x1'));var moment=require(_0x1b0f('0x2'));var BPromise=require(_0x1b0f('0x3'));var rp=require(_0x1b0f('0x4'));var fs=require('fs');var path=require(_0x1b0f('0x5'));var rimraf=require(_0x1b0f('0x6'));var config=require('../../config/environment');var attributes=require('./chatOfflineMessage.attributes');module['exports']=function(_0x2c9a9f,_0x56c4a6){return _0x2c9a9f[_0x1b0f('0x7')](_0x1b0f('0x8'),attributes,{'tableName':_0x1b0f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x1b0f('0xa'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 0266fc2..33a40e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20e7=['request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','ChatOfflineMessage,\x20%s,\x20%s'];(function(_0x30283b,_0x2de9b8){var _0x47defa=function(_0x3e9df0){while(--_0x3e9df0){_0x30283b['push'](_0x30283b['shift']());}};_0x47defa(++_0x2de9b8);}(_0x20e7,0x178));var _0x720e=function(_0xb7fa0f,_0x2687e5){_0xb7fa0f=_0xb7fa0f-0x0;var _0x28fdb1=_0x20e7[_0xb7fa0f];return _0x28fdb1;};'use strict';var _=require(_0x720e('0x0'));var util=require(_0x720e('0x1'));var moment=require('moment');var BPromise=require(_0x720e('0x2'));var rs=require(_0x720e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x720e('0x4'))['db'];var utils=require(_0x720e('0x5'));var logger=require(_0x720e('0x6'))(_0x720e('0x7'));var config=require(_0x720e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x720e('0x9')][_0x720e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xf9e10c,_0xe610bc,_0x1a5c02){return new BPromise(function(_0x15355f,_0x54e5d7){return client[_0x720e('0xb')](_0xf9e10c,_0x1a5c02)[_0x720e('0xc')](function(_0x2a1540){logger[_0x720e('0xd')](_0x720e('0xe'),_0xe610bc,_0x720e('0xf'));logger[_0x720e('0x10')](_0x720e('0x11'),_0xe610bc,_0x720e('0xf'),JSON[_0x720e('0x12')](_0x2a1540));if(_0x2a1540[_0x720e('0x13')]){if(_0x2a1540[_0x720e('0x13')][_0x720e('0x14')]===0x1f4){logger[_0x720e('0x13')](_0x720e('0xe'),_0xe610bc,_0x2a1540['error'][_0x720e('0x15')]);return _0x54e5d7(_0x2a1540[_0x720e('0x13')]['message']);}logger[_0x720e('0x13')]('ChatOfflineMessage,\x20%s,\x20%s',_0xe610bc,_0x2a1540[_0x720e('0x13')][_0x720e('0x15')]);return _0x15355f(_0x2a1540[_0x720e('0x13')][_0x720e('0x15')]);}else{logger[_0x720e('0xd')](_0x720e('0xe'),_0xe610bc,_0x720e('0xf'));_0x15355f(_0x2a1540['result']['message']);}})[_0x720e('0x16')](function(_0x4ea471){logger['error'](_0x720e('0xe'),_0xe610bc,_0x4ea471);_0x54e5d7(_0x4ea471);});});}
\ No newline at end of file
+var _0x1930=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','ChatOfflineMessage,\x20%s,\x20%s','message','result','catch','util','moment','bluebird'];(function(_0x24064c,_0x423efe){var _0x2b95a0=function(_0x36817f){while(--_0x36817f){_0x24064c['push'](_0x24064c['shift']());}};_0x2b95a0(++_0x423efe);}(_0x1930,0xcc));var _0x0193=function(_0x1bf8e8,_0x3a2b43){_0x1bf8e8=_0x1bf8e8-0x0;var _0x5715c0=_0x1930[_0x1bf8e8];return _0x5715c0;};'use strict';var _=require('lodash');var util=require(_0x0193('0x0'));var moment=require(_0x0193('0x1'));var BPromise=require(_0x0193('0x2'));var rs=require(_0x0193('0x3'));var fs=require('fs');var Redis=require(_0x0193('0x4'));var db=require(_0x0193('0x5'))['db'];var utils=require(_0x0193('0x6'));var logger=require(_0x0193('0x7'))(_0x0193('0x8'));var config=require(_0x0193('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x0193('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2f6ea7,_0x5815ce,_0x2de696){return new BPromise(function(_0x5dcd09,_0xd57d8b){return client[_0x0193('0xb')](_0x2f6ea7,_0x2de696)[_0x0193('0xc')](function(_0x112aec){logger[_0x0193('0xd')]('ChatOfflineMessage,\x20%s,\x20%s',_0x5815ce,'request\x20sent');logger['debug'](_0x0193('0xe'),_0x5815ce,_0x0193('0xf'),JSON[_0x0193('0x10')](_0x112aec));if(_0x112aec[_0x0193('0x11')]){if(_0x112aec['error'][_0x0193('0x12')]===0x1f4){logger[_0x0193('0x11')](_0x0193('0x13'),_0x5815ce,_0x112aec[_0x0193('0x11')][_0x0193('0x14')]);return _0xd57d8b(_0x112aec[_0x0193('0x11')][_0x0193('0x14')]);}logger[_0x0193('0x11')](_0x0193('0x13'),_0x5815ce,_0x112aec[_0x0193('0x11')][_0x0193('0x14')]);return _0x5dcd09(_0x112aec[_0x0193('0x11')][_0x0193('0x14')]);}else{logger[_0x0193('0xd')](_0x0193('0x13'),_0x5815ce,'request\x20sent');_0x5dcd09(_0x112aec[_0x0193('0x15')][_0x0193('0x14')]);}})[_0x0193('0x16')](function(_0x27be32){logger[_0x0193('0x11')](_0x0193('0x13'),_0x5815ce,_0x27be32);_0xd57d8b(_0x27be32);});});}
\ No newline at end of file
index c799761..0dead8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe044=['describe','/:id','show','post','create','put','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe'];(function(_0x40bd60,_0x3a7bcd){var _0x4f4185=function(_0x9cba77){while(--_0x9cba77){_0x40bd60['push'](_0x40bd60['shift']());}};_0x4f4185(++_0x3a7bcd);}(_0xe044,0x1d6));var _0x4e04=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe044[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x4e04('0x0'));var util=require(_0x4e04('0x1'));var path=require(_0x4e04('0x2'));var timeout=require(_0x4e04('0x3'));var express=require(_0x4e04('0x4'));var router=express[_0x4e04('0x5')]();var fs_extra=require(_0x4e04('0x6'));var auth=require(_0x4e04('0x7'));var interaction=require(_0x4e04('0x8'));var config=require(_0x4e04('0x9'));var controller=require('./chatOfflineMessage.controller');router[_0x4e04('0xa')]('/',auth[_0x4e04('0xb')](),controller[_0x4e04('0xc')]);router[_0x4e04('0xa')](_0x4e04('0xd'),auth[_0x4e04('0xb')](),controller[_0x4e04('0xe')]);router[_0x4e04('0xa')](_0x4e04('0xf'),auth['isAuthenticated'](),controller[_0x4e04('0x10')]);router[_0x4e04('0x11')]('/',auth[_0x4e04('0xb')](),controller[_0x4e04('0x12')]);router[_0x4e04('0x13')](_0x4e04('0xf'),auth[_0x4e04('0xb')](),controller['update']);router[_0x4e04('0x14')](_0x4e04('0xf'),auth[_0x4e04('0xb')](),controller['destroy']);module[_0x4e04('0x15')]=router;
\ No newline at end of file
+var _0xf971=['put','update','destroy','exports','multer','util','path','connect-timeout','express','../../config/environment','./chatOfflineMessage.controller','/describe','describe','get','/:id','isAuthenticated','post'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0xf971,0x1ad));var _0x1f97=function(_0x5bd05f,_0x27641d){_0x5bd05f=_0x5bd05f-0x0;var _0x13c333=_0xf971[_0x5bd05f];return _0x13c333;};'use strict';var multer=require(_0x1f97('0x0'));var util=require(_0x1f97('0x1'));var path=require(_0x1f97('0x2'));var timeout=require(_0x1f97('0x3'));var express=require(_0x1f97('0x4'));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(_0x1f97('0x5'));var controller=require(_0x1f97('0x6'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x1f97('0x7'),auth['isAuthenticated'](),controller[_0x1f97('0x8')]);router[_0x1f97('0x9')](_0x1f97('0xa'),auth[_0x1f97('0xb')](),controller['show']);router[_0x1f97('0xc')]('/',auth[_0x1f97('0xb')](),controller['create']);router[_0x1f97('0xd')]('/:id',auth[_0x1f97('0xb')](),controller[_0x1f97('0xe')]);router['delete'](_0x1f97('0xa'),auth[_0x1f97('0xb')](),controller[_0x1f97('0xf')]);module[_0x1f97('0x10')]=router;
\ No newline at end of file
index 5ae43f7..d3c66c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4554=['STRING','sequelize','exports','mouseOver','timeout'];(function(_0x5e1cf5,_0x1e5149){var _0x4fa568=function(_0x19dae9){while(--_0x19dae9){_0x5e1cf5['push'](_0x5e1cf5['shift']());}};_0x4fa568(++_0x1e5149);}(_0x4554,0xa1));var _0x4455=function(_0x5cabdb,_0x1cad25){_0x5cabdb=_0x5cabdb-0x0;var _0x3dfec4=_0x4554[_0x5cabdb];return _0x3dfec4;};'use strict';var Sequelize=require(_0x4455('0x0'));module[_0x4455('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x4455('0x2'),_0x4455('0x3')),'defaultValue':_0x4455('0x2')},'selector':{'type':Sequelize[_0x4455('0x4')]},'timeout':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x96e0=['INTEGER','sequelize','exports','mouseOver','timeout','STRING'];(function(_0x15cdcb,_0x4340e9){var _0x37b069=function(_0x304cfb){while(--_0x304cfb){_0x15cdcb['push'](_0x15cdcb['shift']());}};_0x37b069(++_0x4340e9);}(_0x96e0,0x145));var _0x096e=function(_0x3c4742,_0x531db9){_0x3c4742=_0x3c4742-0x0;var _0x25a043=_0x96e0[_0x3c4742];return _0x25a043;};'use strict';var Sequelize=require(_0x096e('0x0'));module[_0x096e('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x096e('0x2'),_0x096e('0x3')),'defaultValue':'mouseOver'},'selector':{'type':Sequelize[_0x096e('0x4')]},'timeout':{'type':Sequelize[_0x096e('0x5')]}};
\ No newline at end of file
index 7a92410..04f0cb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1f9=['query','filters','intersection','model','fields','attributes','includeAll','merge','find','catch','create','body','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','reject','save','update','then','destroy','error','stack','send','show','params','keys','ChatProactiveAction','rawAttributes'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd1f9,0x88));var _0x9d1f=function(_0x4e0863,_0x1ec822){_0x4e0863=_0x4e0863-0x0;var _0x3133d7=_0xd1f9[_0x4e0863];return _0x3133d7;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x9d1f('0x0'));var jsonpatch=require(_0x9d1f('0x1'));var rp=require(_0x9d1f('0x2'));var moment=require(_0x9d1f('0x3'));var BPromise=require(_0x9d1f('0x4'));var Mustache=require(_0x9d1f('0x5'));var util=require(_0x9d1f('0x6'));var path=require(_0x9d1f('0x7'));var sox=require(_0x9d1f('0x8'));var csv=require('to-csv');var ejs=require(_0x9d1f('0x9'));var fs=require('fs');var fs_extra=require(_0x9d1f('0xa'));var _=require(_0x9d1f('0xb'));var squel=require(_0x9d1f('0xc'));var crypto=require(_0x9d1f('0xd'));var jsforce=require(_0x9d1f('0xe'));var deskjs=require(_0x9d1f('0xf'));var toCsv=require(_0x9d1f('0x10'));var querystring=require(_0x9d1f('0x11'));var Papa=require(_0x9d1f('0x12'));var Redis=require(_0x9d1f('0x13'));var authService=require(_0x9d1f('0x14'));var qs=require(_0x9d1f('0x15'));var as=require(_0x9d1f('0x16'));var hardwareService=require(_0x9d1f('0x17'));var logger=require(_0x9d1f('0x18'))(_0x9d1f('0x19'));var utils=require(_0x9d1f('0x1a'));var config=require(_0x9d1f('0x1b'));var licenseUtil=require('../../config/license/util');var db=require(_0x9d1f('0x1c'))['db'];function respondWithStatusCode(_0x15a999,_0x7edbfa){_0x7edbfa=_0x7edbfa||0xcc;return function(_0x5a4d43){if(_0x5a4d43){return _0x15a999[_0x9d1f('0x1d')](_0x7edbfa);}return _0x15a999['status'](_0x7edbfa)['end']();};}function respondWithResult(_0x71e9c9,_0x38395d){_0x38395d=_0x38395d||0xc8;return function(_0x25c0b0){if(_0x25c0b0){return _0x71e9c9[_0x9d1f('0x1e')](_0x38395d)[_0x9d1f('0x1f')](_0x25c0b0);}};}function respondWithFilteredResult(_0x40a87f,_0x9f8cfc){return function(_0x2488a3){if(_0x2488a3){var _0x24cd8a=typeof _0x9f8cfc[_0x9d1f('0x20')]===_0x9d1f('0x21')&&typeof _0x9f8cfc[_0x9d1f('0x22')]===_0x9d1f('0x21');var _0x57ba11=_0x2488a3[_0x9d1f('0x23')];var _0x42a2b4=_0x24cd8a?0x0:_0x9f8cfc['offset'];var _0x329b69=_0x24cd8a?_0x2488a3['count']:_0x9f8cfc['offset']+_0x9f8cfc['limit'];var _0x2d39f3;if(_0x329b69>=_0x57ba11){_0x329b69=_0x57ba11;_0x2d39f3=0xc8;}else{_0x2d39f3=0xce;}_0x40a87f[_0x9d1f('0x1e')](_0x2d39f3);return _0x40a87f[_0x9d1f('0x24')]('Content-Range',_0x42a2b4+'-'+_0x329b69+'/'+_0x57ba11)[_0x9d1f('0x1f')](_0x2488a3);}return null;};}function patchUpdates(_0x4cfcf5){return function(_0x1c0280){try{jsonpatch['apply'](_0x1c0280,_0x4cfcf5,!![]);}catch(_0x552a84){return BPromise[_0x9d1f('0x25')](_0x552a84);}return _0x1c0280[_0x9d1f('0x26')]();};}function saveUpdates(_0x35a80d,_0x2d861b){return function(_0x44ef15){if(_0x44ef15){return _0x44ef15[_0x9d1f('0x27')](_0x35a80d)[_0x9d1f('0x28')](function(_0x3b10f7){return _0x3b10f7;});}return null;};}function removeEntity(_0x2c6417,_0xc05aa){return function(_0x1ab0f4){if(_0x1ab0f4){return _0x1ab0f4[_0x9d1f('0x29')]()[_0x9d1f('0x28')](function(){_0x2c6417[_0x9d1f('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2b234d,_0xa2392f){return function(_0x48245c){if(!_0x48245c){_0x2b234d['sendStatus'](0x194);}return _0x48245c;};}function handleError(_0x1f2b0e,_0xfdd4ae){_0xfdd4ae=_0xfdd4ae||0x1f4;return function(_0x3ca450){logger[_0x9d1f('0x2a')](_0x3ca450[_0x9d1f('0x2b')]);if(_0x3ca450['name']){delete _0x3ca450['name'];}_0x1f2b0e[_0x9d1f('0x1e')](_0xfdd4ae)[_0x9d1f('0x2c')](_0x3ca450);};}exports[_0x9d1f('0x2d')]=function(_0x44515d,_0x1df1b8){var _0x1d8ffe={'raw':!![],'where':{'id':_0x44515d[_0x9d1f('0x2e')]['id']}},_0x48fbf5={};_0x48fbf5['model']=_[_0x9d1f('0x2f')](db[_0x9d1f('0x30')][_0x9d1f('0x31')]);_0x48fbf5[_0x9d1f('0x32')]=_[_0x9d1f('0x2f')](_0x44515d['query']);_0x48fbf5[_0x9d1f('0x33')]=_[_0x9d1f('0x34')](_0x48fbf5[_0x9d1f('0x35')],_0x48fbf5['query']);_0x1d8ffe['attributes']=_[_0x9d1f('0x34')](_0x48fbf5[_0x9d1f('0x35')],qs['fields'](_0x44515d[_0x9d1f('0x32')][_0x9d1f('0x36')]));_0x1d8ffe[_0x9d1f('0x37')]=_0x1d8ffe[_0x9d1f('0x37')]['length']?_0x1d8ffe[_0x9d1f('0x37')]:_0x48fbf5[_0x9d1f('0x35')];if(_0x44515d[_0x9d1f('0x32')][_0x9d1f('0x38')]){_0x1d8ffe['include']=[{'all':!![]}];}_0x1d8ffe=_[_0x9d1f('0x39')]({},_0x1d8ffe,_0x44515d['options']);return db[_0x9d1f('0x30')][_0x9d1f('0x3a')](_0x1d8ffe)[_0x9d1f('0x28')](handleEntityNotFound(_0x1df1b8,null))['then'](respondWithResult(_0x1df1b8,null))[_0x9d1f('0x3b')](handleError(_0x1df1b8,null));};exports[_0x9d1f('0x3c')]=function(_0x324242,_0x236ca3){return db[_0x9d1f('0x30')]['create'](_0x324242[_0x9d1f('0x3d')],{})[_0x9d1f('0x28')](respondWithResult(_0x236ca3,0xc9))[_0x9d1f('0x3b')](handleError(_0x236ca3,null));};exports[_0x9d1f('0x27')]=function(_0x245675,_0x381654){if(_0x245675[_0x9d1f('0x3d')]['id']){delete _0x245675['body']['id'];}return db[_0x9d1f('0x30')][_0x9d1f('0x3a')]({'where':{'id':_0x245675[_0x9d1f('0x2e')]['id']}})[_0x9d1f('0x28')](handleEntityNotFound(_0x381654,null))['then'](saveUpdates(_0x245675[_0x9d1f('0x3d')],null))['then'](respondWithResult(_0x381654,null))['catch'](handleError(_0x381654,null));};exports['destroy']=function(_0x3c9a17,_0x1253e2){return db['ChatProactiveAction'][_0x9d1f('0x3a')]({'where':{'id':_0x3c9a17[_0x9d1f('0x2e')]['id']}})[_0x9d1f('0x28')](handleEntityNotFound(_0x1253e2,null))[_0x9d1f('0x28')](removeEntity(_0x1253e2,null))[_0x9d1f('0x3b')](handleError(_0x1253e2,null));};
\ No newline at end of file
+var _0xb4c7=['jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','show','params','model','keys','ChatProactiveAction','rawAttributes','query','attributes','intersection','fields','include','merge','find','create','catch','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto'];(function(_0x42e781,_0xcbb802){var _0x465a2b=function(_0x3f5936){while(--_0x3f5936){_0x42e781['push'](_0x42e781['shift']());}};_0x465a2b(++_0xcbb802);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0x35007a,_0x3e14e8){_0x35007a=_0x35007a-0x0;var _0x267842=_0xb4c7[_0x35007a];return _0x267842;};'use strict';var emlformat=require(_0x7b4c('0x0'));var rimraf=require(_0x7b4c('0x1'));var zipdir=require(_0x7b4c('0x2'));var jsonpatch=require(_0x7b4c('0x3'));var rp=require(_0x7b4c('0x4'));var moment=require('moment');var BPromise=require(_0x7b4c('0x5'));var Mustache=require(_0x7b4c('0x6'));var util=require(_0x7b4c('0x7'));var path=require(_0x7b4c('0x8'));var sox=require(_0x7b4c('0x9'));var csv=require('to-csv');var ejs=require(_0x7b4c('0xa'));var fs=require('fs');var fs_extra=require(_0x7b4c('0xb'));var _=require(_0x7b4c('0xc'));var squel=require('squel');var crypto=require(_0x7b4c('0xd'));var jsforce=require(_0x7b4c('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x7b4c('0xf'));var querystring=require(_0x7b4c('0x10'));var Papa=require(_0x7b4c('0x11'));var Redis=require(_0x7b4c('0x12'));var authService=require(_0x7b4c('0x13'));var qs=require(_0x7b4c('0x14'));var as=require(_0x7b4c('0x15'));var hardwareService=require(_0x7b4c('0x16'));var logger=require(_0x7b4c('0x17'))(_0x7b4c('0x18'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x7b4c('0x19'));var db=require(_0x7b4c('0x1a'))['db'];function respondWithStatusCode(_0x38656b,_0x1722ad){_0x1722ad=_0x1722ad||0xcc;return function(_0x3e1558){if(_0x3e1558){return _0x38656b[_0x7b4c('0x1b')](_0x1722ad);}return _0x38656b[_0x7b4c('0x1c')](_0x1722ad)[_0x7b4c('0x1d')]();};}function respondWithResult(_0x25b90b,_0x387488){_0x387488=_0x387488||0xc8;return function(_0x593a19){if(_0x593a19){return _0x25b90b[_0x7b4c('0x1c')](_0x387488)[_0x7b4c('0x1e')](_0x593a19);}};}function respondWithFilteredResult(_0xdc71cd,_0x2a0e2f){return function(_0xa0a812){if(_0xa0a812){var _0x2471b3=typeof _0x2a0e2f[_0x7b4c('0x1f')]===_0x7b4c('0x20')&&typeof _0x2a0e2f['limit']===_0x7b4c('0x20');var _0xe71d88=_0xa0a812[_0x7b4c('0x21')];var _0x36c02a=_0x2471b3?0x0:_0x2a0e2f['offset'];var _0x3ce10c=_0x2471b3?_0xa0a812[_0x7b4c('0x21')]:_0x2a0e2f[_0x7b4c('0x1f')]+_0x2a0e2f[_0x7b4c('0x22')];var _0x2d4c72;if(_0x3ce10c>=_0xe71d88){_0x3ce10c=_0xe71d88;_0x2d4c72=0xc8;}else{_0x2d4c72=0xce;}_0xdc71cd[_0x7b4c('0x1c')](_0x2d4c72);return _0xdc71cd[_0x7b4c('0x23')](_0x7b4c('0x24'),_0x36c02a+'-'+_0x3ce10c+'/'+_0xe71d88)[_0x7b4c('0x1e')](_0xa0a812);}return null;};}function patchUpdates(_0x55e3df){return function(_0x1f06ec){try{jsonpatch[_0x7b4c('0x25')](_0x1f06ec,_0x55e3df,!![]);}catch(_0x11996d){return BPromise[_0x7b4c('0x26')](_0x11996d);}return _0x1f06ec[_0x7b4c('0x27')]();};}function saveUpdates(_0x168ac9,_0x176704){return function(_0x3d4826){if(_0x3d4826){return _0x3d4826[_0x7b4c('0x28')](_0x168ac9)[_0x7b4c('0x29')](function(_0x5eec1e){return _0x5eec1e;});}return null;};}function removeEntity(_0x45438c,_0x4350c9){return function(_0x276271){if(_0x276271){return _0x276271[_0x7b4c('0x2a')]()[_0x7b4c('0x29')](function(){_0x45438c[_0x7b4c('0x1c')](0xcc)[_0x7b4c('0x1d')]();});}};}function handleEntityNotFound(_0x459eb4,_0x1f311e){return function(_0x1a69db){if(!_0x1a69db){_0x459eb4[_0x7b4c('0x1b')](0x194);}return _0x1a69db;};}function handleError(_0x257da2,_0x316e5f){_0x316e5f=_0x316e5f||0x1f4;return function(_0x501f75){logger[_0x7b4c('0x2b')](_0x501f75[_0x7b4c('0x2c')]);if(_0x501f75[_0x7b4c('0x2d')]){delete _0x501f75[_0x7b4c('0x2d')];}_0x257da2[_0x7b4c('0x1c')](_0x316e5f)[_0x7b4c('0x2e')](_0x501f75);};}exports[_0x7b4c('0x2f')]=function(_0x2552f9,_0x3e4a46){var _0x9a799b={'raw':!![],'where':{'id':_0x2552f9[_0x7b4c('0x30')]['id']}},_0x3585cd={};_0x3585cd[_0x7b4c('0x31')]=_[_0x7b4c('0x32')](db[_0x7b4c('0x33')][_0x7b4c('0x34')]);_0x3585cd[_0x7b4c('0x35')]=_[_0x7b4c('0x32')](_0x2552f9[_0x7b4c('0x35')]);_0x3585cd['filters']=_['intersection'](_0x3585cd['model'],_0x3585cd[_0x7b4c('0x35')]);_0x9a799b[_0x7b4c('0x36')]=_[_0x7b4c('0x37')](_0x3585cd[_0x7b4c('0x31')],qs['fields'](_0x2552f9[_0x7b4c('0x35')][_0x7b4c('0x38')]));_0x9a799b['attributes']=_0x9a799b[_0x7b4c('0x36')]['length']?_0x9a799b[_0x7b4c('0x36')]:_0x3585cd[_0x7b4c('0x31')];if(_0x2552f9[_0x7b4c('0x35')]['includeAll']){_0x9a799b[_0x7b4c('0x39')]=[{'all':!![]}];}_0x9a799b=_[_0x7b4c('0x3a')]({},_0x9a799b,_0x2552f9['options']);return db[_0x7b4c('0x33')][_0x7b4c('0x3b')](_0x9a799b)[_0x7b4c('0x29')](handleEntityNotFound(_0x3e4a46,null))[_0x7b4c('0x29')](respondWithResult(_0x3e4a46,null))['catch'](handleError(_0x3e4a46,null));};exports['create']=function(_0x1325c1,_0x460fd4){return db['ChatProactiveAction'][_0x7b4c('0x3c')](_0x1325c1['body'],{})['then'](respondWithResult(_0x460fd4,0xc9))[_0x7b4c('0x3d')](handleError(_0x460fd4,null));};exports[_0x7b4c('0x28')]=function(_0x39d69a,_0x250901){if(_0x39d69a['body']['id']){delete _0x39d69a[_0x7b4c('0x3e')]['id'];}return db[_0x7b4c('0x33')][_0x7b4c('0x3b')]({'where':{'id':_0x39d69a[_0x7b4c('0x30')]['id']}})[_0x7b4c('0x29')](handleEntityNotFound(_0x250901,null))[_0x7b4c('0x29')](saveUpdates(_0x39d69a[_0x7b4c('0x3e')],null))['then'](respondWithResult(_0x250901,null))['catch'](handleError(_0x250901,null));};exports[_0x7b4c('0x2a')]=function(_0x37f136,_0x31ef1e){return db[_0x7b4c('0x33')][_0x7b4c('0x3b')]({'where':{'id':_0x37f136['params']['id']}})[_0x7b4c('0x29')](handleEntityNotFound(_0x31ef1e,null))[_0x7b4c('0x29')](removeEntity(_0x31ef1e,null))[_0x7b4c('0x3d')](handleError(_0x31ef1e,null));};
\ No newline at end of file
index f2c76e1..e6e6fbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f78=['bluebird','rimraf','../../config/environment','./chatProactiveAction.attributes','exports','ChatProactiveAction','chat_proactive_actions','lodash','util','../../config/logger','api','moment'];(function(_0x3ba0cb,_0x1b6b79){var _0x13d4b1=function(_0xeb3351){while(--_0xeb3351){_0x3ba0cb['push'](_0x3ba0cb['shift']());}};_0x13d4b1(++_0x1b6b79);}(_0x6f78,0x103));var _0x86f7=function(_0x4a1a0f,_0x322831){_0x4a1a0f=_0x4a1a0f-0x0;var _0x3ee36f=_0x6f78[_0x4a1a0f];return _0x3ee36f;};'use strict';var _=require(_0x86f7('0x0'));var util=require(_0x86f7('0x1'));var logger=require(_0x86f7('0x2'))(_0x86f7('0x3'));var moment=require(_0x86f7('0x4'));var BPromise=require(_0x86f7('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x86f7('0x6'));var config=require(_0x86f7('0x7'));var attributes=require(_0x86f7('0x8'));module[_0x86f7('0x9')]=function(_0xa397c1,_0x46a8a1){return _0xa397c1['define'](_0x86f7('0xa'),attributes,{'tableName':_0x86f7('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd609=['rimraf','./chatProactiveAction.attributes','exports','ChatProactiveAction','chat_proactive_actions','lodash','util','../../config/logger','moment','bluebird'];(function(_0x3f3574,_0x5dcb34){var _0x46019d=function(_0x210337){while(--_0x210337){_0x3f3574['push'](_0x3f3574['shift']());}};_0x46019d(++_0x5dcb34);}(_0xd609,0x1ef));var _0x9d60=function(_0x3a8fbd,_0x59c0d0){_0x3a8fbd=_0x3a8fbd-0x0;var _0x2b61da=_0xd609[_0x3a8fbd];return _0x2b61da;};'use strict';var _=require(_0x9d60('0x0'));var util=require(_0x9d60('0x1'));var logger=require(_0x9d60('0x2'))('api');var moment=require(_0x9d60('0x3'));var BPromise=require(_0x9d60('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x9d60('0x5'));var config=require('../../config/environment');var attributes=require(_0x9d60('0x6'));module[_0x9d60('0x7')]=function(_0xdcb75f,_0x470aa8){return _0xdcb75f['define'](_0x9d60('0x8'),attributes,{'tableName':_0x9d60('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3adcc9f..4e85e52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf43e=['jayson/promise','client','http','request','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','ChatProactiveAction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment'];(function(_0x32729c,_0xf5afd8){var _0x482cfd=function(_0x231471){while(--_0x231471){_0x32729c['push'](_0x32729c['shift']());}};_0x482cfd(++_0xf5afd8);}(_0xf43e,0x66));var _0xef43=function(_0xb88792,_0x3408d5){_0xb88792=_0xb88792-0x0;var _0x4f8d68=_0xf43e[_0xb88792];return _0x4f8d68;};'use strict';var _=require(_0xef43('0x0'));var util=require(_0xef43('0x1'));var moment=require('moment');var BPromise=require(_0xef43('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xef43('0x3'));var db=require(_0xef43('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xef43('0x5'))(_0xef43('0x6'));var config=require(_0xef43('0x7'));var jayson=require(_0xef43('0x8'));var client=jayson[_0xef43('0x9')][_0xef43('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1264a8,_0x1b7036,_0x129499){return new BPromise(function(_0x226eb8,_0x2d0efa){return client[_0xef43('0xb')](_0x1264a8,_0x129499)['then'](function(_0xe0e2c7){logger[_0xef43('0xc')](_0xef43('0xd'),_0x1b7036,_0xef43('0xe'));logger['debug'](_0xef43('0xf'),_0x1b7036,_0xef43('0xe'),JSON[_0xef43('0x10')](_0xe0e2c7));if(_0xe0e2c7[_0xef43('0x11')]){if(_0xe0e2c7[_0xef43('0x11')][_0xef43('0x12')]===0x1f4){logger[_0xef43('0x11')](_0xef43('0xd'),_0x1b7036,_0xe0e2c7[_0xef43('0x11')][_0xef43('0x13')]);return _0x2d0efa(_0xe0e2c7[_0xef43('0x11')]['message']);}logger['error'](_0xef43('0xd'),_0x1b7036,_0xe0e2c7[_0xef43('0x11')][_0xef43('0x13')]);return _0x226eb8(_0xe0e2c7[_0xef43('0x11')][_0xef43('0x13')]);}else{logger[_0xef43('0xc')](_0xef43('0xd'),_0x1b7036,_0xef43('0xe'));_0x226eb8(_0xe0e2c7[_0xef43('0x14')]['message']);}})[_0xef43('0x15')](function(_0x10e124){logger['error']('ChatProactiveAction,\x20%s,\x20%s',_0x1b7036,_0x10e124);_0x2d0efa(_0x10e124);});});}
\ No newline at end of file
+var _0x4790=['code','error','ChatProactiveAction,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','then','request\x20sent','debug'];(function(_0x12f79e,_0x192a7d){var _0x12f25f=function(_0x8f89eb){while(--_0x8f89eb){_0x12f79e['push'](_0x12f79e['shift']());}};_0x12f25f(++_0x192a7d);}(_0x4790,0x1ab));var _0x0479=function(_0x4cc280,_0x3b77f3){_0x4cc280=_0x4cc280-0x0;var _0x16ed24=_0x4790[_0x4cc280];return _0x16ed24;};'use strict';var _=require(_0x0479('0x0'));var util=require(_0x0479('0x1'));var moment=require(_0x0479('0x2'));var BPromise=require('bluebird');var rs=require(_0x0479('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0479('0x4'))['db'];var utils=require(_0x0479('0x5'));var logger=require(_0x0479('0x6'))('rpc');var config=require(_0x0479('0x7'));var jayson=require(_0x0479('0x8'));var client=jayson[_0x0479('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x154ef4,_0x450cc6,_0x5eb18c){return new BPromise(function(_0x39ce51,_0x13b150){return client['request'](_0x154ef4,_0x5eb18c)[_0x0479('0xa')](function(_0x1b9516){logger['info']('ChatProactiveAction,\x20%s,\x20%s',_0x450cc6,_0x0479('0xb'));logger[_0x0479('0xc')]('ChatProactiveAction,\x20%s,\x20%s,\x20%s',_0x450cc6,_0x0479('0xb'),JSON['stringify'](_0x1b9516));if(_0x1b9516['error']){if(_0x1b9516['error'][_0x0479('0xd')]===0x1f4){logger[_0x0479('0xe')](_0x0479('0xf'),_0x450cc6,_0x1b9516[_0x0479('0xe')][_0x0479('0x10')]);return _0x13b150(_0x1b9516['error']['message']);}logger[_0x0479('0xe')]('ChatProactiveAction,\x20%s,\x20%s',_0x450cc6,_0x1b9516[_0x0479('0xe')][_0x0479('0x10')]);return _0x39ce51(_0x1b9516[_0x0479('0xe')][_0x0479('0x10')]);}else{logger[_0x0479('0x11')]('ChatProactiveAction,\x20%s,\x20%s',_0x450cc6,_0x0479('0xb'));_0x39ce51(_0x1b9516[_0x0479('0x12')][_0x0479('0x10')]);}})[_0x0479('0x13')](function(_0x3a2ff6){logger[_0x0479('0xe')]('ChatProactiveAction,\x20%s,\x20%s',_0x450cc6,_0x3a2ff6);_0x13b150(_0x3a2ff6);});});}
\ No newline at end of file
index 158b035..a835d1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3eea=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','get','/:id','post','create','update','isAuthenticated','destroy','multer'];(function(_0x16ae27,_0x3d0212){var _0x4871c5=function(_0x1f226c){while(--_0x1f226c){_0x16ae27['push'](_0x16ae27['shift']());}};_0x4871c5(++_0x3d0212);}(_0x3eea,0x1ca));var _0xa3ee=function(_0x1837ac,_0x3f8d60){_0x1837ac=_0x1837ac-0x0;var _0x50d21e=_0x3eea[_0x1837ac];return _0x50d21e;};'use strict';var multer=require(_0xa3ee('0x0'));var util=require('util');var path=require(_0xa3ee('0x1'));var timeout=require(_0xa3ee('0x2'));var express=require(_0xa3ee('0x3'));var router=express[_0xa3ee('0x4')]();var fs_extra=require(_0xa3ee('0x5'));var auth=require(_0xa3ee('0x6'));var interaction=require(_0xa3ee('0x7'));var config=require(_0xa3ee('0x8'));var controller=require(_0xa3ee('0x9'));router[_0xa3ee('0xa')](_0xa3ee('0xb'),auth['isAuthenticated'](),controller['show']);router[_0xa3ee('0xc')]('/',auth['isAuthenticated'](),controller[_0xa3ee('0xd')]);router['put'](_0xa3ee('0xb'),auth['isAuthenticated'](),controller[_0xa3ee('0xe')]);router['delete'](_0xa3ee('0xb'),auth[_0xa3ee('0xf')](),controller[_0xa3ee('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x5fc3=['create','put','/:id','update','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatProactiveAction.controller','get','show','isAuthenticated'];(function(_0x1434b7,_0x120c08){var _0x3a20a5=function(_0xd845d8){while(--_0xd845d8){_0x1434b7['push'](_0x1434b7['shift']());}};_0x3a20a5(++_0x120c08);}(_0x5fc3,0xa8));var _0x35fc=function(_0x35bd6c,_0x585087){_0x35bd6c=_0x35bd6c-0x0;var _0x2f421d=_0x5fc3[_0x35bd6c];return _0x2f421d;};'use strict';var multer=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var path=require('path');var timeout=require(_0x35fc('0x2'));var express=require(_0x35fc('0x3'));var router=express[_0x35fc('0x4')]();var fs_extra=require(_0x35fc('0x5'));var auth=require(_0x35fc('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x35fc('0x7'));var controller=require(_0x35fc('0x8'));router[_0x35fc('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x35fc('0xa')]);router['post']('/',auth[_0x35fc('0xb')](),controller[_0x35fc('0xc')]);router[_0x35fc('0xd')](_0x35fc('0xe'),auth[_0x35fc('0xb')](),controller[_0x35fc('0xf')]);router[_0x35fc('0x10')]('/:id',auth[_0x35fc('0xb')](),controller[_0x35fc('0x11')]);module['exports']=router;
\ No newline at end of file
index 644e626..3cabcfa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddc2=['sequelize','exports','STRING','name','ENUM','beepall'];(function(_0x38f374,_0x4b1d43){var _0x3c78a0=function(_0x4cbb16){while(--_0x4cbb16){_0x38f374['push'](_0x38f374['shift']());}};_0x3c78a0(++_0x4b1d43);}(_0xddc2,0x78));var _0x2ddc=function(_0x2edd6a,_0x5e6d1a){_0x2edd6a=_0x2edd6a-0x0;var _0x5b7047=_0xddc2[_0x2edd6a];return _0x5b7047;};'use strict';var Sequelize=require(_0x2ddc('0x0'));module[_0x2ddc('0x1')]={'name':{'type':Sequelize[_0x2ddc('0x2')],'unique':_0x2ddc('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x2ddc('0x4')]('rrmemory',_0x2ddc('0x5'),'roundrobin')}};
\ No newline at end of file
+var _0x1df9=['sequelize','STRING','name','INTEGER','ENUM','rrmemory','beepall','roundrobin'];(function(_0x675246,_0x1d0878){var _0x59e2c7=function(_0x2d3d74){while(--_0x2d3d74){_0x675246['push'](_0x675246['shift']());}};_0x59e2c7(++_0x1d0878);}(_0x1df9,0x178));var _0x91df=function(_0x422b9e,_0x37325d){_0x422b9e=_0x422b9e-0x0;var _0x23dc6e=_0x1df9[_0x422b9e];return _0x23dc6e;};'use strict';var Sequelize=require(_0x91df('0x0'));module['exports']={'name':{'type':Sequelize[_0x91df('0x1')],'unique':_0x91df('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x91df('0x1')]},'timeout':{'type':Sequelize[_0x91df('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x91df('0x4')](_0x91df('0x5'),_0x91df('0x6'),_0x91df('0x7'))}};
\ No newline at end of file
index ab8b2d0..111f063 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c10=['fieldName','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ChatQueues','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserChatQueue','ChatQueueId','User','findAndCountAll','UserId','agent','chatPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team','addTeams','ids','Agents','online','voicePause','sequelize','transaction','each','findOrCreate','emit','userChatQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_chat_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','toString','every','TeamId','includes','all','value','removeAgents','forEach','userChatQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','zip-dir','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','crypto','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','redis','register','client','request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','destroy','get','stack','name','send','index','map','ChatQueue'];(function(_0x4fde08,_0x463a36){var _0x12e725=function(_0x2670c5){while(--_0x2670c5){_0x4fde08['push'](_0x4fde08['shift']());}};_0x12e725(++_0x463a36);}(_0x5c10,0x183));var _0x05c1=function(_0x4c159d,_0x362975){_0x4c159d=_0x4c159d-0x0;var _0x363683=_0x5c10[_0x4c159d];return _0x363683;};'use strict';var emlformat=require(_0x05c1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x05c1('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x05c1('0x2'));var BPromise=require(_0x05c1('0x3'));var Mustache=require('mustache');var util=require(_0x05c1('0x4'));var path=require(_0x05c1('0x5'));var sox=require('sox');var csv=require(_0x05c1('0x6'));var ejs=require(_0x05c1('0x7'));var fs=require('fs');var fs_extra=require(_0x05c1('0x8'));var _=require(_0x05c1('0x9'));var squel=require('squel');var crypto=require(_0x05c1('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x05c1('0xb'));var toCsv=require(_0x05c1('0x6'));var querystring=require('querystring');var Papa=require(_0x05c1('0xc'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x05c1('0xd'));var as=require(_0x05c1('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x05c1('0xf'));var config=require(_0x05c1('0x10'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0x05c1('0x11')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x05c1('0x11')]));require('./chatQueue.socket')[_0x05c1('0x12')](socket);var jayson=require('jayson/promise');var client=jayson[_0x05c1('0x13')]['http']({'port':0x232a});function respondWithRpcPromise(_0x83f51,_0x5f38c9,_0x2839ca,_0x7993dd){return new BPromise(function(_0x36bd4f,_0x838b48){var _0x405c3d=_0x7993dd||client;return _0x405c3d[_0x05c1('0x14')](_0x83f51,_0x2839ca)[_0x05c1('0x15')](function(_0x575b8d){logger[_0x05c1('0x16')](_0x05c1('0x17'),_0x5f38c9,_0x05c1('0x18'));logger['debug'](_0x05c1('0x19'),_0x5f38c9,'request\x20sent',JSON[_0x05c1('0x1a')](_0x575b8d));if(_0x575b8d[_0x05c1('0x1b')]){if(_0x575b8d[_0x05c1('0x1b')][_0x05c1('0x1c')]===0x1f4){logger[_0x05c1('0x1b')](_0x05c1('0x17'),_0x5f38c9,_0x575b8d[_0x05c1('0x1b')]['message']);return _0x838b48(_0x575b8d[_0x05c1('0x1b')]['message']);}logger['error'](_0x05c1('0x17'),_0x5f38c9,_0x575b8d[_0x05c1('0x1b')][_0x05c1('0x1d')]);return _0x36bd4f(_0x575b8d[_0x05c1('0x1b')]['message']);}else{logger['info']('ChatQueue,\x20%s,\x20%s',_0x5f38c9,_0x05c1('0x18'));_0x36bd4f(_0x575b8d['result'][_0x05c1('0x1d')]);}})['catch'](function(_0x3175e6){logger['error'](_0x05c1('0x17'),_0x5f38c9,_0x3175e6);_0x838b48(_0x3175e6);});});}function respondWithStatusCode(_0x41720d,_0x4abc1d){_0x4abc1d=_0x4abc1d||0xcc;return function(_0x833a6b){if(_0x833a6b){return _0x41720d[_0x05c1('0x1e')](_0x4abc1d);}return _0x41720d[_0x05c1('0x1f')](_0x4abc1d)[_0x05c1('0x20')]();};}function respondWithResult(_0x1ef51f,_0x38237e){_0x38237e=_0x38237e||0xc8;return function(_0x39f1a7){if(_0x39f1a7){return _0x1ef51f[_0x05c1('0x1f')](_0x38237e)[_0x05c1('0x21')](_0x39f1a7);}};}function respondWithFilteredResult(_0x16d4c1,_0x4872e3){return function(_0x233577){if(_0x233577){var _0x239255=typeof _0x4872e3[_0x05c1('0x22')]==='undefined'&&typeof _0x4872e3[_0x05c1('0x23')]===_0x05c1('0x24');var _0x469d88=_0x233577[_0x05c1('0x25')];var _0x3a41a3=_0x239255?0x0:_0x4872e3['offset'];var _0x156e6c=_0x239255?_0x233577[_0x05c1('0x25')]:_0x4872e3[_0x05c1('0x22')]+_0x4872e3[_0x05c1('0x23')];var _0x1b8da3;if(_0x156e6c>=_0x469d88){_0x156e6c=_0x469d88;_0x1b8da3=0xc8;}else{_0x1b8da3=0xce;}_0x16d4c1[_0x05c1('0x1f')](_0x1b8da3);return _0x16d4c1[_0x05c1('0x26')](_0x05c1('0x27'),_0x3a41a3+'-'+_0x156e6c+'/'+_0x469d88)[_0x05c1('0x21')](_0x233577);}return null;};}function patchUpdates(_0x252e41){return function(_0x265467){try{jsonpatch[_0x05c1('0x28')](_0x265467,_0x252e41,!![]);}catch(_0x29e690){return BPromise[_0x05c1('0x29')](_0x29e690);}return _0x265467['save']();};}function saveUpdates(_0x587d47,_0x2d2805){return function(_0x22266d){if(_0x22266d){return _0x22266d[_0x05c1('0x2a')](_0x587d47)[_0x05c1('0x15')](function(_0x3c715e){return _0x3c715e;});}return null;};}function removeEntity(_0x61ca37,_0x1f9970){return function(_0x4e658b){if(_0x4e658b){return _0x4e658b[_0x05c1('0x2b')]()[_0x05c1('0x15')](function(){var _0x4c2f9c=_0x4e658b[_0x05c1('0x2c')]({'plain':!![]});var _0x420e60='ChatQueues';return db['UserProfileResource'][_0x05c1('0x2b')]({'where':{'type':_0x420e60,'resourceId':_0x4c2f9c['id']}})[_0x05c1('0x15')](function(){return _0x4e658b;});})[_0x05c1('0x15')](function(){_0x61ca37[_0x05c1('0x1f')](0xcc)[_0x05c1('0x20')]();});}};}function handleEntityNotFound(_0x9b3796,_0x3c139e){return function(_0x5fc8f1){if(!_0x5fc8f1){_0x9b3796[_0x05c1('0x1e')](0x194);}return _0x5fc8f1;};}function handleError(_0x1b20de,_0x2a4f34){_0x2a4f34=_0x2a4f34||0x1f4;return function(_0x113ce3){logger[_0x05c1('0x1b')](_0x113ce3[_0x05c1('0x2d')]);if(_0x113ce3[_0x05c1('0x2e')]){delete _0x113ce3[_0x05c1('0x2e')];}_0x1b20de[_0x05c1('0x1f')](_0x2a4f34)[_0x05c1('0x2f')](_0x113ce3);};}exports[_0x05c1('0x30')]=function(_0x57e7e3,_0x44be9f){var _0x24f2fe={},_0x45b7b3={},_0x35d855={'count':0x0,'rows':[]};var _0x359c56=_[_0x05c1('0x31')](db[_0x05c1('0x32')]['rawAttributes'],function(_0x4b3f7e){return{'name':_0x4b3f7e[_0x05c1('0x33')],'type':_0x4b3f7e[_0x05c1('0x34')][_0x05c1('0x35')]};});_0x45b7b3[_0x05c1('0x36')]=_['map'](_0x359c56,_0x05c1('0x2e'));_0x45b7b3['query']=_[_0x05c1('0x37')](_0x57e7e3[_0x05c1('0x38')]);_0x45b7b3['filters']=_[_0x05c1('0x39')](_0x45b7b3['model'],_0x45b7b3['query']);_0x24f2fe[_0x05c1('0x3a')]=_[_0x05c1('0x39')](_0x45b7b3[_0x05c1('0x36')],qs[_0x05c1('0x3b')](_0x57e7e3[_0x05c1('0x38')][_0x05c1('0x3b')]));_0x24f2fe[_0x05c1('0x3a')]=_0x24f2fe[_0x05c1('0x3a')][_0x05c1('0x3c')]?_0x24f2fe[_0x05c1('0x3a')]:_0x45b7b3[_0x05c1('0x36')];if(!_0x57e7e3['query'][_0x05c1('0x3d')](_0x05c1('0x3e'))){_0x24f2fe['limit']=qs[_0x05c1('0x23')](_0x57e7e3[_0x05c1('0x38')]['limit']);_0x24f2fe[_0x05c1('0x22')]=qs['offset'](_0x57e7e3[_0x05c1('0x38')]['offset']);}_0x24f2fe[_0x05c1('0x3f')]=qs[_0x05c1('0x40')](_0x57e7e3['query'][_0x05c1('0x40')]);_0x24f2fe[_0x05c1('0x41')]=qs[_0x05c1('0x42')](_[_0x05c1('0x43')](_0x57e7e3[_0x05c1('0x38')],_0x45b7b3[_0x05c1('0x42')]),_0x359c56);if(_0x57e7e3[_0x05c1('0x38')][_0x05c1('0x44')]){_0x24f2fe[_0x05c1('0x41')]=_[_0x05c1('0x45')](_0x24f2fe[_0x05c1('0x41')],{'$or':_[_0x05c1('0x31')](_0x359c56,function(_0x4d4db0){if(_0x4d4db0['type']!==_0x05c1('0x46')){var _0x129b04={};_0x129b04[_0x4d4db0[_0x05c1('0x2e')]]={'$like':'%'+_0x57e7e3[_0x05c1('0x38')]['filter']+'%'};return _0x129b04;}})});}_0x24f2fe=_[_0x05c1('0x45')]({},_0x24f2fe,_0x57e7e3[_0x05c1('0x47')]);var _0x21c562={'where':_0x24f2fe[_0x05c1('0x41')]};return db[_0x05c1('0x32')]['count'](_0x21c562)[_0x05c1('0x15')](function(_0xa16f77){_0x35d855[_0x05c1('0x25')]=_0xa16f77;if(_0x57e7e3['query'][_0x05c1('0x48')]){_0x24f2fe[_0x05c1('0x49')]=[{'all':!![]}];}return db[_0x05c1('0x32')][_0x05c1('0x4a')](_0x24f2fe);})[_0x05c1('0x15')](function(_0xf359d9){_0x35d855[_0x05c1('0x4b')]=_0xf359d9;return _0x35d855;})[_0x05c1('0x15')](respondWithFilteredResult(_0x44be9f,_0x24f2fe))[_0x05c1('0x4c')](handleError(_0x44be9f,null));};exports[_0x05c1('0x4d')]=function(_0x1dc4cb,_0x4bde06){var _0x2c0c6b={'raw':!![],'where':{'id':_0x1dc4cb[_0x05c1('0x4e')]['id']}},_0x916b07={};_0x916b07[_0x05c1('0x36')]=_['keys'](db[_0x05c1('0x32')][_0x05c1('0x4f')]);_0x916b07[_0x05c1('0x38')]=_[_0x05c1('0x37')](_0x1dc4cb[_0x05c1('0x38')]);_0x916b07[_0x05c1('0x42')]=_[_0x05c1('0x39')](_0x916b07[_0x05c1('0x36')],_0x916b07[_0x05c1('0x38')]);_0x2c0c6b[_0x05c1('0x3a')]=_['intersection'](_0x916b07[_0x05c1('0x36')],qs[_0x05c1('0x3b')](_0x1dc4cb['query'][_0x05c1('0x3b')]));_0x2c0c6b[_0x05c1('0x3a')]=_0x2c0c6b[_0x05c1('0x3a')]['length']?_0x2c0c6b[_0x05c1('0x3a')]:_0x916b07[_0x05c1('0x36')];if(_0x1dc4cb['query'][_0x05c1('0x48')]){_0x2c0c6b[_0x05c1('0x49')]=[{'all':!![]}];}_0x2c0c6b=_[_0x05c1('0x45')]({},_0x2c0c6b,_0x1dc4cb[_0x05c1('0x47')]);return db[_0x05c1('0x32')][_0x05c1('0x50')](_0x2c0c6b)[_0x05c1('0x15')](handleEntityNotFound(_0x4bde06,null))['then'](respondWithResult(_0x4bde06,null))[_0x05c1('0x4c')](handleError(_0x4bde06,null));};exports[_0x05c1('0x51')]=function(_0x106d18,_0x37fdd5){return db[_0x05c1('0x32')][_0x05c1('0x51')](_0x106d18[_0x05c1('0x52')],{})[_0x05c1('0x15')](function(_0x20d433){var _0x1dc0dd=_0x106d18[_0x05c1('0x53')]['get']({'plain':!![]});if(!_0x1dc0dd)throw new Error(_0x05c1('0x54'));if(_0x1dc0dd[_0x05c1('0x55')]===_0x05c1('0x53')){var _0x4628fb=_0x20d433[_0x05c1('0x2c')]({'plain':!![]});var _0x24f28f=_0x05c1('0x56');return db[_0x05c1('0x57')][_0x05c1('0x50')]({'where':{'name':_0x24f28f,'userProfileId':_0x1dc0dd[_0x05c1('0x58')]},'raw':!![]})[_0x05c1('0x15')](function(_0xccd1de){if(_0xccd1de&&_0xccd1de[_0x05c1('0x59')]===0x0){return db[_0x05c1('0x5a')][_0x05c1('0x51')]({'name':_0x4628fb[_0x05c1('0x2e')],'resourceId':_0x4628fb['id'],'type':_0xccd1de['name'],'sectionId':_0xccd1de['id']},{})[_0x05c1('0x15')](function(){return _0x20d433;});}else{return _0x20d433;}})[_0x05c1('0x4c')](function(_0x5514f9){logger[_0x05c1('0x1b')](_0x05c1('0x5b'),_0x5514f9);throw _0x5514f9;});}return _0x20d433;})['then'](respondWithResult(_0x37fdd5,0xc9))[_0x05c1('0x4c')](handleError(_0x37fdd5,null));};exports[_0x05c1('0x2a')]=function(_0x7cfc55,_0x372bb4){if(_0x7cfc55[_0x05c1('0x52')]['id']){delete _0x7cfc55[_0x05c1('0x52')]['id'];}return db['ChatQueue']['find']({'where':{'id':_0x7cfc55['params']['id']}})[_0x05c1('0x15')](handleEntityNotFound(_0x372bb4,null))[_0x05c1('0x15')](saveUpdates(_0x7cfc55[_0x05c1('0x52')],null))[_0x05c1('0x15')](respondWithResult(_0x372bb4,null))[_0x05c1('0x4c')](handleError(_0x372bb4,null));};exports[_0x05c1('0x2b')]=function(_0x350c6e,_0x1f01f6){return db[_0x05c1('0x32')][_0x05c1('0x50')]({'where':{'id':_0x350c6e[_0x05c1('0x4e')]['id']}})[_0x05c1('0x15')](handleEntityNotFound(_0x1f01f6,null))[_0x05c1('0x15')](removeEntity(_0x1f01f6,null))['catch'](handleError(_0x1f01f6,null));};exports[_0x05c1('0x5c')]=function(_0x3cf522,_0x14fccd){return db['ChatQueue'][_0x05c1('0x5c')]()['then'](respondWithResult(_0x14fccd,null))[_0x05c1('0x4c')](handleError(_0x14fccd,null));};exports[_0x05c1('0x5d')]=function(_0x3e601d,_0x2d4327,_0x27fadf){var _0x2b5e1d={'raw':!![],'where':{}},_0x416541={},_0x3f06fc;return db[_0x05c1('0x32')][_0x05c1('0x5e')]({'where':{'id':_0x3e601d[_0x05c1('0x4e')]['id']}})[_0x05c1('0x15')](handleEntityNotFound(_0x2d4327,null))[_0x05c1('0x15')](function(_0x559a1a){if(_0x559a1a){_0x3f06fc=_0x559a1a[_0x05c1('0x2c')]({'plain':!![]});_0x416541[_0x05c1('0x36')]=_[_0x05c1('0x37')](db[_0x05c1('0x5f')][_0x05c1('0x4f')]);_0x416541[_0x05c1('0x38')]=_[_0x05c1('0x37')](_0x3e601d[_0x05c1('0x38')]);_0x416541['filters']=_[_0x05c1('0x39')](_0x416541[_0x05c1('0x36')],_0x416541[_0x05c1('0x38')]);_0x2b5e1d[_0x05c1('0x3a')]=_[_0x05c1('0x39')](_0x416541[_0x05c1('0x36')],qs[_0x05c1('0x3b')](_0x3e601d[_0x05c1('0x38')][_0x05c1('0x3b')]));_0x2b5e1d['attributes']=_0x2b5e1d[_0x05c1('0x3a')]['length']?_0x2b5e1d[_0x05c1('0x3a')]:_0x416541['model'];if(!_0x3e601d[_0x05c1('0x38')][_0x05c1('0x3d')](_0x05c1('0x3e'))){_0x2b5e1d['limit']=qs[_0x05c1('0x23')](_0x3e601d[_0x05c1('0x38')][_0x05c1('0x23')]);_0x2b5e1d['offset']=qs['offset'](_0x3e601d['query'][_0x05c1('0x22')]);}_0x2b5e1d[_0x05c1('0x3f')]=qs[_0x05c1('0x40')](_0x3e601d['query'][_0x05c1('0x40')]);_0x2b5e1d[_0x05c1('0x41')]=qs[_0x05c1('0x42')](_['pick'](_0x3e601d['query'],_0x416541[_0x05c1('0x42')]));_0x2b5e1d['where'][_0x05c1('0x60')]=_0x559a1a['id'];if(_0x3e601d['query']['filter']){_0x2b5e1d[_0x05c1('0x41')]=_[_0x05c1('0x45')](_0x2b5e1d[_0x05c1('0x41')],{'$or':_[_0x05c1('0x31')](_0x2b5e1d[_0x05c1('0x3a')],function(_0x3fa30b){var _0x1595d1={};_0x1595d1[_0x3fa30b]={'$like':'%'+_0x3e601d[_0x05c1('0x38')][_0x05c1('0x44')]+'%'};return _0x1595d1;})});}_0x2b5e1d=_[_0x05c1('0x45')]({},_0x2b5e1d,_0x3e601d[_0x05c1('0x47')]);return db['UserChatQueue'][_0x05c1('0x4a')](_0x2b5e1d);}})['then'](function(_0xf43f9b){if(_0xf43f9b){return db[_0x05c1('0x61')][_0x05c1('0x62')]({'where':{'id':_['map'](_0xf43f9b,_0x05c1('0x63')),'role':_0x05c1('0x64')},'attributes':['id',_0x05c1('0x2e'),_0x05c1('0x65'),_0x05c1('0x66'),_0x05c1('0x67')]});}})[_0x05c1('0x15')](function(_0x36fe84){if(_0x36fe84){return{'count':_0x36fe84[_0x05c1('0x25')],'rows':_['map'](_0x36fe84[_0x05c1('0x4b')],function(_0x4f25f9){return{'membername':_0x4f25f9[_0x05c1('0x2e')],'UserId':_0x4f25f9['id'],'queue_name':_0x3f06fc['name'],'ChatQueueId':_0x3f06fc['id'],'interface':util[_0x05c1('0x68')](_0x05c1('0x69'),_0x05c1('0x6a'),_0x4f25f9[_0x05c1('0x2e')]),'penalty':0x0,'paused':_0x4f25f9['chatPause'],'createdAt':_0x4f25f9[_0x05c1('0x67')],'updatedAt':_0x4f25f9[_0x05c1('0x66')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x2d4327,_0x2b5e1d))[_0x05c1('0x4c')](handleError(_0x2d4327,null));};exports[_0x05c1('0x6b')]=function(_0xebbf8,_0x57b128,_0x1ad7a2){var _0x832685={};var _0x5a4628={};var _0x2863ab;var _0x1a9a4d;return db[_0x05c1('0x32')]['findOne']({'where':{'id':_0xebbf8[_0x05c1('0x4e')]['id']}})[_0x05c1('0x15')](handleEntityNotFound(_0x57b128,null))[_0x05c1('0x15')](function(_0x9fcfc5){if(_0x9fcfc5){_0x2863ab=_0x9fcfc5;_0x5a4628['model']=_[_0x05c1('0x37')](db[_0x05c1('0x6c')][_0x05c1('0x4f')]);_0x5a4628['query']=_[_0x05c1('0x37')](_0xebbf8[_0x05c1('0x38')]);_0x5a4628['filters']=_[_0x05c1('0x39')](_0x5a4628[_0x05c1('0x36')],_0x5a4628['query']);_0x832685[_0x05c1('0x3a')]=_[_0x05c1('0x39')](_0x5a4628[_0x05c1('0x36')],qs[_0x05c1('0x3b')](_0xebbf8[_0x05c1('0x38')]['fields']));_0x832685[_0x05c1('0x3a')]=_0x832685[_0x05c1('0x3a')]['length']?_0x832685[_0x05c1('0x3a')]:_0x5a4628[_0x05c1('0x36')];_0x832685[_0x05c1('0x3f')]=qs[_0x05c1('0x40')](_0xebbf8[_0x05c1('0x38')][_0x05c1('0x40')]);_0x832685['where']=qs[_0x05c1('0x42')](_[_0x05c1('0x43')](_0xebbf8['query'],_0x5a4628[_0x05c1('0x42')]));if(_0xebbf8[_0x05c1('0x38')]['filter']){_0x832685[_0x05c1('0x41')]=_[_0x05c1('0x45')](_0x832685['where'],{'$or':_[_0x05c1('0x31')](_0x832685[_0x05c1('0x3a')],function(_0x1e3beb){var _0x72ddd3={};_0x72ddd3[_0x1e3beb]={'$like':'%'+_0xebbf8[_0x05c1('0x38')][_0x05c1('0x44')]+'%'};return _0x72ddd3;})});}_0x832685=_[_0x05c1('0x45')]({},_0x832685,_0xebbf8[_0x05c1('0x47')]);return _0x2863ab[_0x05c1('0x6b')](_0x832685);}})[_0x05c1('0x15')](function(_0x52739b){if(_0x52739b){_0x1a9a4d=_0x52739b[_0x05c1('0x3c')];if(!_0xebbf8[_0x05c1('0x38')][_0x05c1('0x3d')](_0x05c1('0x3e'))){_0x832685[_0x05c1('0x23')]=qs['limit'](_0xebbf8[_0x05c1('0x38')][_0x05c1('0x23')]);_0x832685[_0x05c1('0x22')]=qs[_0x05c1('0x22')](_0xebbf8[_0x05c1('0x38')][_0x05c1('0x22')]);}return _0x2863ab[_0x05c1('0x6b')](_0x832685);}})[_0x05c1('0x15')](function(_0x30419c){if(_0x30419c){return _0x30419c?{'count':_0x1a9a4d,'rows':_0x30419c}:null;}})[_0x05c1('0x15')](respondWithResult(_0x57b128,null))[_0x05c1('0x4c')](handleError(_0x57b128,null));};exports[_0x05c1('0x6d')]=function(_0x5e83cc,_0x2e2a12,_0x334273){var _0x483350=_0x5e83cc[_0x05c1('0x52')][_0x05c1('0x6e')];return db[_0x05c1('0x6c')][_0x05c1('0x4a')]({'where':{'id':_0x483350},'attributes':['id'],'include':[{'model':db[_0x05c1('0x61')],'as':_0x05c1('0x6f'),'attributes':['id',_0x05c1('0x2e'),_0x05c1('0x70'),_0x05c1('0x71'),'interface'],'raw':!![]}]})[_0x05c1('0x15')](function(_0x10b734){if(_0x10b734){var _0x271200=_['flatMap'](_0x10b734,function(_0xfd66d7){var _0x17d933=_0xfd66d7[_0x05c1('0x2c')]({'plain':!![]});return _0x17d933[_0x05c1('0x6f')];});return db['ChatQueue']['find']({'where':{'id':_0x5e83cc[_0x05c1('0x4e')]['id']}})['then'](function(_0x54788d){return db[_0x05c1('0x72')][_0x05c1('0x73')](function(_0xb35018){return _0x54788d['addTeams'](_0x483350,{'transaction':_0xb35018})[_0x05c1('0x15')](function(){return BPromise[_0x05c1('0x74')](_0x271200,function(_0x246fd9){return db[_0x05c1('0x5f')][_0x05c1('0x75')]({'where':{'UserId':_0x246fd9['id'],'ChatQueueId':_0x5e83cc['params']['id']},'transaction':_0xb35018});});})['then'](function(){_0x271200['forEach'](function(_0x424e23){socket[_0x05c1('0x76')](_0x05c1('0x77'),{'UserId':_0x424e23['id'],'ChatQueueId':_0x54788d['id']});});});});});}})[_0x05c1('0x15')](respondWithStatusCode(_0x2e2a12,null))['catch'](handleError(_0x2e2a12,null));};exports[_0x05c1('0x78')]=function(_0x8d484a,_0x412846,_0x4e2975){return db[_0x05c1('0x6c')][_0x05c1('0x4a')]({'where':{'id':_0x8d484a[_0x05c1('0x38')]['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':_0x05c1('0x6f'),'attributes':['id'],'raw':!![]}]})[_0x05c1('0x15')](handleEntityNotFound(_0x412846,null))[_0x05c1('0x15')](function(_0xebe717){var _0x984e5e=_[_0x05c1('0x31')](_0xebe717,'id');var _0x5c0c79=[];var _0x4d0c9f=[];var _0x110823=squel[_0x05c1('0x79')]();_0x110823[_0x05c1('0x7a')](_0x05c1('0x7b'))[_0x05c1('0x7c')](_0x05c1('0x7d'),'tq')[_0x05c1('0x7e')](_0x05c1('0x7f'),'ut',_0x05c1('0x80'))['where']('ChatQueueId\x20=\x20?',_0x8d484a[_0x05c1('0x4e')]['id']);for(var _0x34ed34=0x0;_0x34ed34<_0xebe717[_0x05c1('0x3c')];_0x34ed34+=0x1){let _0x1acfec=_0xebe717[_0x34ed34];for(var _0x14eb5e=0x0;_0x14eb5e<_0x1acfec['Agents']['length'];_0x14eb5e+=0x1){let _0x348876=_0x1acfec['Agents'][_0x14eb5e];var _0x30fb28=_0x110823[_0x05c1('0x81')]();_0x30fb28[_0x05c1('0x41')](_0x05c1('0x82'),_0x348876['id']);_0x4d0c9f[_0x05c1('0x83')](db[_0x05c1('0x72')][_0x05c1('0x38')](_0x30fb28[_0x05c1('0x84')](),{'type':db[_0x05c1('0x72')]['QueryTypes']['SELECT']})[_0x05c1('0x15')](function(_0x1ec977){if(_0x1ec977['length']===0x1){return _0x348876['id'];}else{var _0x55159c=_[_0x05c1('0x85')](_[_0x05c1('0x31')](_0x1ec977,_0x05c1('0x86')),function(_0x394cc6){return _[_0x05c1('0x87')](_0x984e5e,_0x394cc6);});if(_0x55159c){return _0x348876['id'];}}}));}}return BPromise[_0x05c1('0x88')](_0x4d0c9f)[_0x05c1('0x15')](function(_0x132b8a){_0x5c0c79=_(_0x5c0c79)['union'](_0x132b8a)['compact']()[_0x05c1('0x89')]();return db[_0x05c1('0x32')]['find']({'where':{'id':_0x8d484a[_0x05c1('0x4e')]['id']}})['then'](function(_0x3803f6){return db[_0x05c1('0x72')][_0x05c1('0x73')](function(_0x1c54a5){return _0x3803f6[_0x05c1('0x78')](_0x8d484a['query'][_0x05c1('0x6e')],{'transaction':_0x1c54a5})[_0x05c1('0x15')](function(){if(!_['isEmpty'](_0x5c0c79)){return _0x3803f6[_0x05c1('0x8a')](_0x5c0c79,{'transaction':_0x1c54a5});}})['then'](function(){_0x5c0c79[_0x05c1('0x8b')](function(_0x1ca6ff){socket[_0x05c1('0x76')](_0x05c1('0x8c'),{'UserId':_0x1ca6ff,'ChatQueueId':_0x3803f6['id']});});});});});});})[_0x05c1('0x15')](respondWithStatusCode(_0x412846,null))[_0x05c1('0x4c')](handleError(_0x412846,null));};exports[_0x05c1('0x8d')]=function(_0x29e749,_0x5643ac,_0x318abc){return db[_0x05c1('0x32')]['find']({'where':{'id':_0x29e749[_0x05c1('0x4e')]['id']}})[_0x05c1('0x15')](handleEntityNotFound(_0x5643ac,null))[_0x05c1('0x15')](function(_0x46522e){if(_0x46522e){return _0x46522e['addAgents'](_0x29e749['body'][_0x05c1('0x6e')],_[_0x05c1('0x8e')](_0x29e749[_0x05c1('0x52')],[_0x05c1('0x6e'),'id'])||{})[_0x05c1('0x8f')](function(_0x8c8e8f){for(var _0x5e65ff=0x0;_0x5e65ff<_0x29e749[_0x05c1('0x52')][_0x05c1('0x6e')][_0x05c1('0x3c')];_0x5e65ff+=0x1){socket[_0x05c1('0x76')](_0x05c1('0x77'),{'UserId':Number(_0x29e749['body'][_0x05c1('0x6e')][_0x5e65ff]),'ChatQueueId':Number(_0x29e749['params']['id'])});}return _0x8c8e8f;});}})['then'](respondWithResult(_0x5643ac,null))[_0x05c1('0x4c')](handleError(_0x5643ac,null));};exports[_0x05c1('0x8a')]=function(_0x2c4b6e,_0x48092f,_0x4826a6){return db[_0x05c1('0x32')][_0x05c1('0x50')]({'where':{'id':_0x2c4b6e[_0x05c1('0x4e')]['id']}})[_0x05c1('0x15')](handleEntityNotFound(_0x48092f,null))[_0x05c1('0x15')](function(_0x5b389e){if(_0x5b389e){return _0x5b389e[_0x05c1('0x8a')](_0x2c4b6e[_0x05c1('0x38')][_0x05c1('0x6e')])[_0x05c1('0x15')](function(){if(_[_0x05c1('0x90')](_0x2c4b6e[_0x05c1('0x38')][_0x05c1('0x6e')])){for(var _0x107b54=0x0;_0x107b54<_0x2c4b6e[_0x05c1('0x38')]['ids'][_0x05c1('0x3c')];_0x107b54+=0x1){socket['emit'](_0x05c1('0x8c'),{'UserId':Number(_0x2c4b6e[_0x05c1('0x38')][_0x05c1('0x6e')][_0x107b54]),'ChatQueueId':Number(_0x2c4b6e[_0x05c1('0x4e')]['id'])});}}else{socket[_0x05c1('0x76')](_0x05c1('0x8c'),{'UserId':Number(_0x2c4b6e[_0x05c1('0x38')][_0x05c1('0x6e')]),'ChatQueueId':Number(_0x2c4b6e[_0x05c1('0x4e')]['id'])});}});}})['then'](respondWithStatusCode(_0x48092f,null))[_0x05c1('0x4c')](handleError(_0x48092f,null));};exports[_0x05c1('0x91')]=function(_0x1778ba,_0x38bb2b,_0x3d6651){var _0x3fcf41={};var _0x1bcc87={};var _0xe70001;var _0x568a9d;return db[_0x05c1('0x32')]['findOne']({'where':{'id':_0x1778ba[_0x05c1('0x4e')]['id']}})[_0x05c1('0x15')](handleEntityNotFound(_0x38bb2b,null))[_0x05c1('0x15')](function(_0x2c06e9){if(_0x2c06e9){_0xe70001=_0x2c06e9;_0x1bcc87[_0x05c1('0x36')]=_['keys'](db[_0x05c1('0x61')][_0x05c1('0x4f')]);_0x1bcc87[_0x05c1('0x38')]=_['keys'](_0x1778ba['query']);_0x1bcc87['filters']=_['intersection'](_0x1bcc87[_0x05c1('0x36')],_0x1bcc87[_0x05c1('0x38')]);_0x3fcf41['attributes']=_[_0x05c1('0x39')](_0x1bcc87[_0x05c1('0x36')],qs[_0x05c1('0x3b')](_0x1778ba[_0x05c1('0x38')]['fields']));_0x3fcf41[_0x05c1('0x3a')]=_0x3fcf41[_0x05c1('0x3a')][_0x05c1('0x3c')]?_0x3fcf41[_0x05c1('0x3a')]:_0x1bcc87[_0x05c1('0x36')];_0x3fcf41[_0x05c1('0x3f')]=qs['sort'](_0x1778ba['query'][_0x05c1('0x40')]);_0x3fcf41[_0x05c1('0x41')]=qs[_0x05c1('0x42')](_[_0x05c1('0x43')](_0x1778ba['query'],_0x1bcc87[_0x05c1('0x42')]));if(_0x1778ba[_0x05c1('0x38')][_0x05c1('0x44')]){_0x3fcf41[_0x05c1('0x41')]=_[_0x05c1('0x45')](_0x3fcf41[_0x05c1('0x41')],{'$or':_[_0x05c1('0x31')](_0x3fcf41['attributes'],function(_0x3fe1ed){var _0x4344ff={};_0x4344ff[_0x3fe1ed]={'$like':'%'+_0x1778ba[_0x05c1('0x38')][_0x05c1('0x44')]+'%'};return _0x4344ff;})});}_0x3fcf41=_[_0x05c1('0x45')]({},_0x3fcf41,_0x1778ba[_0x05c1('0x47')]);return _0xe70001[_0x05c1('0x91')](_0x3fcf41);}})['then'](function(_0x4001c6){if(_0x4001c6){_0x568a9d=_0x4001c6[_0x05c1('0x3c')];if(!_0x1778ba[_0x05c1('0x38')]['hasOwnProperty'](_0x05c1('0x3e'))){_0x3fcf41[_0x05c1('0x23')]=qs[_0x05c1('0x23')](_0x1778ba['query']['limit']);_0x3fcf41['offset']=qs[_0x05c1('0x22')](_0x1778ba[_0x05c1('0x38')][_0x05c1('0x22')]);}return _0xe70001[_0x05c1('0x91')](_0x3fcf41);}})[_0x05c1('0x15')](function(_0x4a1c5a){if(_0x4a1c5a){return _0x4a1c5a?{'count':_0x568a9d,'rows':_0x4a1c5a}:null;}})['then'](respondWithResult(_0x38bb2b,null))[_0x05c1('0x4c')](handleError(_0x38bb2b,null));};
\ No newline at end of file
+var _0x1c55=['emit','userChatQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_chat_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','clone','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','value','isEmpty','removeAgents','userChatQueue:remove','addAgents','omit','spread','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','path','sox','lodash','crypto','jsforce','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../mysqldb','redis','defaults','register','jayson/promise','client','request','info','ChatQueue,\x20%s,\x20%s','request\x20sent','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','sendStatus','status','end','json','offset','undefined','limit','count','set','save','destroy','then','get','ChatQueues','UserProfileResource','stack','name','send','index','ChatQueue','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','length','nolimit','order','sort','where','filters','pick','filter','merge','map','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','fields','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','findOne','UserChatQueue','hasOwnProperty','ChatQueueId','User','UserId','agent','chatPause','updatedAt','createdAt','format','SIP','getTeams','addTeams','ids','Team','Agents','online','voicePause','interface','flatMap','sequelize','each','findOrCreate','forEach'];(function(_0x4a673b,_0x5c121c){var _0x1145e5=function(_0x3970ed){while(--_0x3970ed){_0x4a673b['push'](_0x4a673b['shift']());}};_0x1145e5(++_0x5c121c);}(_0x1c55,0xad));var _0x51c5=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x1c55[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0x51c5('0x0'));var rimraf=require(_0x51c5('0x1'));var zipdir=require(_0x51c5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x51c5('0x3'));var moment=require(_0x51c5('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x51c5('0x5'));var sox=require(_0x51c5('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x51c5('0x7'));var squel=require('squel');var crypto=require(_0x51c5('0x8'));var jsforce=require(_0x51c5('0x9'));var deskjs=require('desk.js');var toCsv=require(_0x51c5('0xa'));var querystring=require(_0x51c5('0xb'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x51c5('0xc'));var qs=require(_0x51c5('0xd'));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('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x51c5('0xe'))['db'];config[_0x51c5('0xf')]=_[_0x51c5('0x10')](config[_0x51c5('0xf')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x51c5('0xf')]));require('./chatQueue.socket')[_0x51c5('0x11')](socket);var jayson=require(_0x51c5('0x12'));var client=jayson[_0x51c5('0x13')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5e423c,_0x5c472f,_0x5d01be,_0x536853){return new BPromise(function(_0x59160b,_0x193a93){var _0x2bda47=_0x536853||client;return _0x2bda47[_0x51c5('0x14')](_0x5e423c,_0x5d01be)['then'](function(_0x57abb4){logger[_0x51c5('0x15')](_0x51c5('0x16'),_0x5c472f,_0x51c5('0x17'));logger['debug'](_0x51c5('0x18'),_0x5c472f,'request\x20sent',JSON[_0x51c5('0x19')](_0x57abb4));if(_0x57abb4[_0x51c5('0x1a')]){if(_0x57abb4[_0x51c5('0x1a')]['code']===0x1f4){logger['error']('ChatQueue,\x20%s,\x20%s',_0x5c472f,_0x57abb4[_0x51c5('0x1a')]['message']);return _0x193a93(_0x57abb4['error'][_0x51c5('0x1b')]);}logger[_0x51c5('0x1a')](_0x51c5('0x16'),_0x5c472f,_0x57abb4[_0x51c5('0x1a')]['message']);return _0x59160b(_0x57abb4['error'][_0x51c5('0x1b')]);}else{logger[_0x51c5('0x15')](_0x51c5('0x16'),_0x5c472f,_0x51c5('0x17'));_0x59160b(_0x57abb4['result'][_0x51c5('0x1b')]);}})['catch'](function(_0x3f7c3c){logger['error'](_0x51c5('0x16'),_0x5c472f,_0x3f7c3c);_0x193a93(_0x3f7c3c);});});}function respondWithStatusCode(_0x717903,_0x4633d7){_0x4633d7=_0x4633d7||0xcc;return function(_0x419862){if(_0x419862){return _0x717903[_0x51c5('0x1c')](_0x4633d7);}return _0x717903[_0x51c5('0x1d')](_0x4633d7)[_0x51c5('0x1e')]();};}function respondWithResult(_0x345d17,_0x5f8465){_0x5f8465=_0x5f8465||0xc8;return function(_0x280679){if(_0x280679){return _0x345d17[_0x51c5('0x1d')](_0x5f8465)[_0x51c5('0x1f')](_0x280679);}};}function respondWithFilteredResult(_0x1b20e5,_0x547260){return function(_0x564c95){if(_0x564c95){var _0x57cf3f=typeof _0x547260[_0x51c5('0x20')]===_0x51c5('0x21')&&typeof _0x547260[_0x51c5('0x22')]==='undefined';var _0x475f45=_0x564c95[_0x51c5('0x23')];var _0x1cf5fb=_0x57cf3f?0x0:_0x547260[_0x51c5('0x20')];var _0xee54b7=_0x57cf3f?_0x564c95[_0x51c5('0x23')]:_0x547260['offset']+_0x547260[_0x51c5('0x22')];var _0x4ba832;if(_0xee54b7>=_0x475f45){_0xee54b7=_0x475f45;_0x4ba832=0xc8;}else{_0x4ba832=0xce;}_0x1b20e5[_0x51c5('0x1d')](_0x4ba832);return _0x1b20e5[_0x51c5('0x24')]('Content-Range',_0x1cf5fb+'-'+_0xee54b7+'/'+_0x475f45)[_0x51c5('0x1f')](_0x564c95);}return null;};}function patchUpdates(_0x11c52d){return function(_0x15243c){try{jsonpatch['apply'](_0x15243c,_0x11c52d,!![]);}catch(_0xe38196){return BPromise['reject'](_0xe38196);}return _0x15243c[_0x51c5('0x25')]();};}function saveUpdates(_0x199147,_0x556d47){return function(_0x1d74a9){if(_0x1d74a9){return _0x1d74a9['update'](_0x199147)['then'](function(_0x1ffaa1){return _0x1ffaa1;});}return null;};}function removeEntity(_0x4668e4,_0x32c869){return function(_0x44ac1b){if(_0x44ac1b){return _0x44ac1b[_0x51c5('0x26')]()[_0x51c5('0x27')](function(){var _0x81569c=_0x44ac1b[_0x51c5('0x28')]({'plain':!![]});var _0x5c852c=_0x51c5('0x29');return db[_0x51c5('0x2a')]['destroy']({'where':{'type':_0x5c852c,'resourceId':_0x81569c['id']}})[_0x51c5('0x27')](function(){return _0x44ac1b;});})['then'](function(){_0x4668e4[_0x51c5('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2ce199,_0x37525b){return function(_0x38b1a6){if(!_0x38b1a6){_0x2ce199[_0x51c5('0x1c')](0x194);}return _0x38b1a6;};}function handleError(_0x4823e7,_0x2b177b){_0x2b177b=_0x2b177b||0x1f4;return function(_0x229496){logger[_0x51c5('0x1a')](_0x229496[_0x51c5('0x2b')]);if(_0x229496[_0x51c5('0x2c')]){delete _0x229496[_0x51c5('0x2c')];}_0x4823e7['status'](_0x2b177b)[_0x51c5('0x2d')](_0x229496);};}exports[_0x51c5('0x2e')]=function(_0x347dfd,_0x13bd98){var _0x94baac={},_0xf6b277={},_0x210eac={'count':0x0,'rows':[]};var _0x26ac93=_['map'](db[_0x51c5('0x2f')][_0x51c5('0x30')],function(_0x567af6){return{'name':_0x567af6[_0x51c5('0x31')],'type':_0x567af6[_0x51c5('0x32')][_0x51c5('0x33')]};});_0xf6b277[_0x51c5('0x34')]=_['map'](_0x26ac93,'name');_0xf6b277[_0x51c5('0x35')]=_[_0x51c5('0x36')](_0x347dfd['query']);_0xf6b277['filters']=_[_0x51c5('0x37')](_0xf6b277['model'],_0xf6b277[_0x51c5('0x35')]);_0x94baac[_0x51c5('0x38')]=_[_0x51c5('0x37')](_0xf6b277[_0x51c5('0x34')],qs['fields'](_0x347dfd[_0x51c5('0x35')]['fields']));_0x94baac[_0x51c5('0x38')]=_0x94baac[_0x51c5('0x38')][_0x51c5('0x39')]?_0x94baac['attributes']:_0xf6b277[_0x51c5('0x34')];if(!_0x347dfd[_0x51c5('0x35')]['hasOwnProperty'](_0x51c5('0x3a'))){_0x94baac[_0x51c5('0x22')]=qs['limit'](_0x347dfd[_0x51c5('0x35')][_0x51c5('0x22')]);_0x94baac[_0x51c5('0x20')]=qs[_0x51c5('0x20')](_0x347dfd[_0x51c5('0x35')][_0x51c5('0x20')]);}_0x94baac[_0x51c5('0x3b')]=qs[_0x51c5('0x3c')](_0x347dfd['query'][_0x51c5('0x3c')]);_0x94baac[_0x51c5('0x3d')]=qs[_0x51c5('0x3e')](_[_0x51c5('0x3f')](_0x347dfd[_0x51c5('0x35')],_0xf6b277['filters']),_0x26ac93);if(_0x347dfd['query'][_0x51c5('0x40')]){_0x94baac[_0x51c5('0x3d')]=_[_0x51c5('0x41')](_0x94baac[_0x51c5('0x3d')],{'$or':_[_0x51c5('0x42')](_0x26ac93,function(_0x4cd2a4){if(_0x4cd2a4[_0x51c5('0x32')]!==_0x51c5('0x43')){var _0x5af58e={};_0x5af58e[_0x4cd2a4[_0x51c5('0x2c')]]={'$like':'%'+_0x347dfd['query'][_0x51c5('0x40')]+'%'};return _0x5af58e;}})});}_0x94baac=_[_0x51c5('0x41')]({},_0x94baac,_0x347dfd[_0x51c5('0x44')]);var _0x2f10b1={'where':_0x94baac[_0x51c5('0x3d')]};return db[_0x51c5('0x2f')][_0x51c5('0x23')](_0x2f10b1)[_0x51c5('0x27')](function(_0x5ab274){_0x210eac[_0x51c5('0x23')]=_0x5ab274;if(_0x347dfd['query'][_0x51c5('0x45')]){_0x94baac[_0x51c5('0x46')]=[{'all':!![]}];}return db['ChatQueue'][_0x51c5('0x47')](_0x94baac);})[_0x51c5('0x27')](function(_0x1cca77){_0x210eac[_0x51c5('0x48')]=_0x1cca77;return _0x210eac;})[_0x51c5('0x27')](respondWithFilteredResult(_0x13bd98,_0x94baac))[_0x51c5('0x49')](handleError(_0x13bd98,null));};exports[_0x51c5('0x4a')]=function(_0x3f4667,_0x19b2af){var _0x1ce0ea={'raw':!![],'where':{'id':_0x3f4667[_0x51c5('0x4b')]['id']}},_0x5247e5={};_0x5247e5[_0x51c5('0x34')]=_[_0x51c5('0x36')](db[_0x51c5('0x2f')][_0x51c5('0x30')]);_0x5247e5[_0x51c5('0x35')]=_[_0x51c5('0x36')](_0x3f4667['query']);_0x5247e5[_0x51c5('0x3e')]=_[_0x51c5('0x37')](_0x5247e5[_0x51c5('0x34')],_0x5247e5[_0x51c5('0x35')]);_0x1ce0ea[_0x51c5('0x38')]=_['intersection'](_0x5247e5[_0x51c5('0x34')],qs[_0x51c5('0x4c')](_0x3f4667['query'][_0x51c5('0x4c')]));_0x1ce0ea[_0x51c5('0x38')]=_0x1ce0ea[_0x51c5('0x38')][_0x51c5('0x39')]?_0x1ce0ea[_0x51c5('0x38')]:_0x5247e5[_0x51c5('0x34')];if(_0x3f4667[_0x51c5('0x35')]['includeAll']){_0x1ce0ea[_0x51c5('0x46')]=[{'all':!![]}];}_0x1ce0ea=_[_0x51c5('0x41')]({},_0x1ce0ea,_0x3f4667[_0x51c5('0x44')]);return db[_0x51c5('0x2f')][_0x51c5('0x4d')](_0x1ce0ea)[_0x51c5('0x27')](handleEntityNotFound(_0x19b2af,null))[_0x51c5('0x27')](respondWithResult(_0x19b2af,null))[_0x51c5('0x49')](handleError(_0x19b2af,null));};exports[_0x51c5('0x4e')]=function(_0x7eecb9,_0x52ec96){return db['ChatQueue'][_0x51c5('0x4e')](_0x7eecb9[_0x51c5('0x4f')],{})[_0x51c5('0x27')](function(_0x2430ea){var _0x2f25be=_0x7eecb9[_0x51c5('0x50')]['get']({'plain':!![]});if(!_0x2f25be)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2f25be[_0x51c5('0x51')]===_0x51c5('0x50')){var _0xd766a3=_0x2430ea[_0x51c5('0x28')]({'plain':!![]});var _0x396235=_0x51c5('0x29');return db[_0x51c5('0x52')]['find']({'where':{'name':_0x396235,'userProfileId':_0x2f25be[_0x51c5('0x53')]},'raw':!![]})[_0x51c5('0x27')](function(_0x299df6){if(_0x299df6&&_0x299df6[_0x51c5('0x54')]===0x0){return db[_0x51c5('0x2a')]['create']({'name':_0xd766a3[_0x51c5('0x2c')],'resourceId':_0xd766a3['id'],'type':_0x299df6[_0x51c5('0x2c')],'sectionId':_0x299df6['id']},{})[_0x51c5('0x27')](function(){return _0x2430ea;});}else{return _0x2430ea;}})[_0x51c5('0x49')](function(_0x174025){logger[_0x51c5('0x1a')](_0x51c5('0x55'),_0x174025);throw _0x174025;});}return _0x2430ea;})['then'](respondWithResult(_0x52ec96,0xc9))['catch'](handleError(_0x52ec96,null));};exports[_0x51c5('0x56')]=function(_0x143257,_0x318aeb){if(_0x143257[_0x51c5('0x4f')]['id']){delete _0x143257['body']['id'];}return db[_0x51c5('0x2f')][_0x51c5('0x4d')]({'where':{'id':_0x143257['params']['id']}})['then'](handleEntityNotFound(_0x318aeb,null))[_0x51c5('0x27')](saveUpdates(_0x143257[_0x51c5('0x4f')],null))[_0x51c5('0x27')](respondWithResult(_0x318aeb,null))[_0x51c5('0x49')](handleError(_0x318aeb,null));};exports['destroy']=function(_0x20efdd,_0x8db438){return db[_0x51c5('0x2f')][_0x51c5('0x4d')]({'where':{'id':_0x20efdd[_0x51c5('0x4b')]['id']}})['then'](handleEntityNotFound(_0x8db438,null))['then'](removeEntity(_0x8db438,null))[_0x51c5('0x49')](handleError(_0x8db438,null));};exports[_0x51c5('0x57')]=function(_0x3cf994,_0x44cca2){return db[_0x51c5('0x2f')][_0x51c5('0x57')]()['then'](respondWithResult(_0x44cca2,null))[_0x51c5('0x49')](handleError(_0x44cca2,null));};exports['getMembers']=function(_0x4c04cd,_0x47b8ff,_0x426d79){var _0x46ad8f={'raw':!![],'where':{}},_0x4ebe2e={},_0x5da3fb;return db['ChatQueue'][_0x51c5('0x58')]({'where':{'id':_0x4c04cd[_0x51c5('0x4b')]['id']}})[_0x51c5('0x27')](handleEntityNotFound(_0x47b8ff,null))[_0x51c5('0x27')](function(_0x5b37ce){if(_0x5b37ce){_0x5da3fb=_0x5b37ce['get']({'plain':!![]});_0x4ebe2e[_0x51c5('0x34')]=_['keys'](db[_0x51c5('0x59')][_0x51c5('0x30')]);_0x4ebe2e[_0x51c5('0x35')]=_[_0x51c5('0x36')](_0x4c04cd[_0x51c5('0x35')]);_0x4ebe2e[_0x51c5('0x3e')]=_['intersection'](_0x4ebe2e[_0x51c5('0x34')],_0x4ebe2e['query']);_0x46ad8f[_0x51c5('0x38')]=_[_0x51c5('0x37')](_0x4ebe2e[_0x51c5('0x34')],qs[_0x51c5('0x4c')](_0x4c04cd[_0x51c5('0x35')][_0x51c5('0x4c')]));_0x46ad8f[_0x51c5('0x38')]=_0x46ad8f[_0x51c5('0x38')][_0x51c5('0x39')]?_0x46ad8f[_0x51c5('0x38')]:_0x4ebe2e['model'];if(!_0x4c04cd['query'][_0x51c5('0x5a')](_0x51c5('0x3a'))){_0x46ad8f[_0x51c5('0x22')]=qs[_0x51c5('0x22')](_0x4c04cd[_0x51c5('0x35')]['limit']);_0x46ad8f[_0x51c5('0x20')]=qs[_0x51c5('0x20')](_0x4c04cd['query'][_0x51c5('0x20')]);}_0x46ad8f[_0x51c5('0x3b')]=qs[_0x51c5('0x3c')](_0x4c04cd[_0x51c5('0x35')][_0x51c5('0x3c')]);_0x46ad8f[_0x51c5('0x3d')]=qs[_0x51c5('0x3e')](_['pick'](_0x4c04cd[_0x51c5('0x35')],_0x4ebe2e[_0x51c5('0x3e')]));_0x46ad8f['where'][_0x51c5('0x5b')]=_0x5b37ce['id'];if(_0x4c04cd[_0x51c5('0x35')][_0x51c5('0x40')]){_0x46ad8f[_0x51c5('0x3d')]=_[_0x51c5('0x41')](_0x46ad8f['where'],{'$or':_[_0x51c5('0x42')](_0x46ad8f[_0x51c5('0x38')],function(_0x23f0a7){var _0x717675={};_0x717675[_0x23f0a7]={'$like':'%'+_0x4c04cd[_0x51c5('0x35')][_0x51c5('0x40')]+'%'};return _0x717675;})});}_0x46ad8f=_[_0x51c5('0x41')]({},_0x46ad8f,_0x4c04cd[_0x51c5('0x44')]);return db['UserChatQueue'][_0x51c5('0x47')](_0x46ad8f);}})[_0x51c5('0x27')](function(_0x1e8d18){if(_0x1e8d18){return db[_0x51c5('0x5c')]['findAndCountAll']({'where':{'id':_['map'](_0x1e8d18,_0x51c5('0x5d')),'role':_0x51c5('0x5e')},'attributes':['id',_0x51c5('0x2c'),_0x51c5('0x5f'),_0x51c5('0x60'),_0x51c5('0x61')]});}})['then'](function(_0x5d4573){if(_0x5d4573){return{'count':_0x5d4573[_0x51c5('0x23')],'rows':_[_0x51c5('0x42')](_0x5d4573[_0x51c5('0x48')],function(_0x5b64de){return{'membername':_0x5b64de['name'],'UserId':_0x5b64de['id'],'queue_name':_0x5da3fb['name'],'ChatQueueId':_0x5da3fb['id'],'interface':util[_0x51c5('0x62')]('%s/%s',_0x51c5('0x63'),_0x5b64de[_0x51c5('0x2c')]),'penalty':0x0,'paused':_0x5b64de[_0x51c5('0x5f')],'createdAt':_0x5b64de[_0x51c5('0x61')],'updatedAt':_0x5b64de[_0x51c5('0x60')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x47b8ff,_0x46ad8f))[_0x51c5('0x49')](handleError(_0x47b8ff,null));};exports[_0x51c5('0x64')]=function(_0x2807f4,_0x47c372,_0x1e8148){var _0x1bea6a={};var _0x347f8e={};var _0x5396c2;var _0x5e560f;return db[_0x51c5('0x2f')][_0x51c5('0x58')]({'where':{'id':_0x2807f4['params']['id']}})[_0x51c5('0x27')](handleEntityNotFound(_0x47c372,null))['then'](function(_0xde8ca4){if(_0xde8ca4){_0x5396c2=_0xde8ca4;_0x347f8e[_0x51c5('0x34')]=_[_0x51c5('0x36')](db['Team'][_0x51c5('0x30')]);_0x347f8e[_0x51c5('0x35')]=_[_0x51c5('0x36')](_0x2807f4['query']);_0x347f8e[_0x51c5('0x3e')]=_[_0x51c5('0x37')](_0x347f8e[_0x51c5('0x34')],_0x347f8e[_0x51c5('0x35')]);_0x1bea6a[_0x51c5('0x38')]=_['intersection'](_0x347f8e[_0x51c5('0x34')],qs[_0x51c5('0x4c')](_0x2807f4[_0x51c5('0x35')][_0x51c5('0x4c')]));_0x1bea6a[_0x51c5('0x38')]=_0x1bea6a['attributes'][_0x51c5('0x39')]?_0x1bea6a[_0x51c5('0x38')]:_0x347f8e[_0x51c5('0x34')];_0x1bea6a[_0x51c5('0x3b')]=qs[_0x51c5('0x3c')](_0x2807f4[_0x51c5('0x35')][_0x51c5('0x3c')]);_0x1bea6a[_0x51c5('0x3d')]=qs['filters'](_[_0x51c5('0x3f')](_0x2807f4[_0x51c5('0x35')],_0x347f8e[_0x51c5('0x3e')]));if(_0x2807f4[_0x51c5('0x35')][_0x51c5('0x40')]){_0x1bea6a[_0x51c5('0x3d')]=_[_0x51c5('0x41')](_0x1bea6a[_0x51c5('0x3d')],{'$or':_[_0x51c5('0x42')](_0x1bea6a[_0x51c5('0x38')],function(_0xdec595){var _0x42a5c5={};_0x42a5c5[_0xdec595]={'$like':'%'+_0x2807f4[_0x51c5('0x35')][_0x51c5('0x40')]+'%'};return _0x42a5c5;})});}_0x1bea6a=_[_0x51c5('0x41')]({},_0x1bea6a,_0x2807f4[_0x51c5('0x44')]);return _0x5396c2['getTeams'](_0x1bea6a);}})[_0x51c5('0x27')](function(_0x1deb8e){if(_0x1deb8e){_0x5e560f=_0x1deb8e[_0x51c5('0x39')];if(!_0x2807f4[_0x51c5('0x35')][_0x51c5('0x5a')](_0x51c5('0x3a'))){_0x1bea6a['limit']=qs[_0x51c5('0x22')](_0x2807f4['query'][_0x51c5('0x22')]);_0x1bea6a['offset']=qs[_0x51c5('0x20')](_0x2807f4[_0x51c5('0x35')][_0x51c5('0x20')]);}return _0x5396c2['getTeams'](_0x1bea6a);}})[_0x51c5('0x27')](function(_0x1ada78){if(_0x1ada78){return _0x1ada78?{'count':_0x5e560f,'rows':_0x1ada78}:null;}})[_0x51c5('0x27')](respondWithResult(_0x47c372,null))['catch'](handleError(_0x47c372,null));};exports[_0x51c5('0x65')]=function(_0x25e114,_0x333ef3,_0x589ce7){var _0x18c27b=_0x25e114[_0x51c5('0x4f')][_0x51c5('0x66')];return db[_0x51c5('0x67')][_0x51c5('0x47')]({'where':{'id':_0x18c27b},'attributes':['id'],'include':[{'model':db['User'],'as':_0x51c5('0x68'),'attributes':['id','name',_0x51c5('0x69'),_0x51c5('0x6a'),_0x51c5('0x6b')],'raw':!![]}]})['then'](function(_0x40dc3c){if(_0x40dc3c){var _0x2cd8d0=_[_0x51c5('0x6c')](_0x40dc3c,function(_0x5b610a){var _0x58626f=_0x5b610a[_0x51c5('0x28')]({'plain':!![]});return _0x58626f[_0x51c5('0x68')];});return db[_0x51c5('0x2f')][_0x51c5('0x4d')]({'where':{'id':_0x25e114[_0x51c5('0x4b')]['id']}})[_0x51c5('0x27')](function(_0x11ca66){return db[_0x51c5('0x6d')]['transaction'](function(_0x4ef956){return _0x11ca66[_0x51c5('0x65')](_0x18c27b,{'transaction':_0x4ef956})[_0x51c5('0x27')](function(){return BPromise[_0x51c5('0x6e')](_0x2cd8d0,function(_0x407f06){return db[_0x51c5('0x59')][_0x51c5('0x6f')]({'where':{'UserId':_0x407f06['id'],'ChatQueueId':_0x25e114['params']['id']},'transaction':_0x4ef956});});})['then'](function(){_0x2cd8d0[_0x51c5('0x70')](function(_0x3f07e3){socket[_0x51c5('0x71')](_0x51c5('0x72'),{'UserId':_0x3f07e3['id'],'ChatQueueId':_0x11ca66['id']});});});});});}})[_0x51c5('0x27')](respondWithStatusCode(_0x333ef3,null))['catch'](handleError(_0x333ef3,null));};exports[_0x51c5('0x73')]=function(_0x374b18,_0x3d83f6,_0x4bd698){return db[_0x51c5('0x67')][_0x51c5('0x47')]({'where':{'id':_0x374b18[_0x51c5('0x35')][_0x51c5('0x66')]},'attributes':['id'],'include':[{'model':db[_0x51c5('0x5c')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x51c5('0x27')](handleEntityNotFound(_0x3d83f6,null))['then'](function(_0x56d82d){var _0x2cbb7c=_[_0x51c5('0x42')](_0x56d82d,'id');var _0x192b74=[];var _0x418a0f=[];var _0x2cb550=squel[_0x51c5('0x74')]();_0x2cb550[_0x51c5('0x75')](_0x51c5('0x76'))[_0x51c5('0x77')](_0x51c5('0x78'),'tq')[_0x51c5('0x79')](_0x51c5('0x7a'),'ut',_0x51c5('0x7b'))[_0x51c5('0x3d')](_0x51c5('0x7c'),_0x374b18[_0x51c5('0x4b')]['id']);for(var _0x5c417d=0x0;_0x5c417d<_0x56d82d['length'];_0x5c417d+=0x1){let _0x48fdc4=_0x56d82d[_0x5c417d];for(var _0x4af97c=0x0;_0x4af97c<_0x48fdc4[_0x51c5('0x68')][_0x51c5('0x39')];_0x4af97c+=0x1){let _0x2acc23=_0x48fdc4[_0x51c5('0x68')][_0x4af97c];var _0x188fa1=_0x2cb550[_0x51c5('0x7d')]();_0x188fa1[_0x51c5('0x3d')]('ut.UserId\x20=\x20?',_0x2acc23['id']);_0x418a0f['push'](db[_0x51c5('0x6d')][_0x51c5('0x35')](_0x188fa1[_0x51c5('0x7e')](),{'type':db[_0x51c5('0x6d')][_0x51c5('0x7f')][_0x51c5('0x80')]})['then'](function(_0x590828){if(_0x590828[_0x51c5('0x39')]===0x1){return _0x2acc23['id'];}else{var _0x174689=_[_0x51c5('0x81')](_[_0x51c5('0x42')](_0x590828,_0x51c5('0x82')),function(_0x56a6d2){return _[_0x51c5('0x83')](_0x2cbb7c,_0x56a6d2);});if(_0x174689){return _0x2acc23['id'];}}}));}}return BPromise[_0x51c5('0x84')](_0x418a0f)[_0x51c5('0x27')](function(_0x22eeac){_0x192b74=_(_0x192b74)[_0x51c5('0x85')](_0x22eeac)[_0x51c5('0x86')]()[_0x51c5('0x87')]();return db[_0x51c5('0x2f')]['find']({'where':{'id':_0x374b18[_0x51c5('0x4b')]['id']}})[_0x51c5('0x27')](function(_0x3615cd){return db[_0x51c5('0x6d')]['transaction'](function(_0x4e491e){return _0x3615cd['removeTeams'](_0x374b18[_0x51c5('0x35')][_0x51c5('0x66')],{'transaction':_0x4e491e})['then'](function(){if(!_[_0x51c5('0x88')](_0x192b74)){return _0x3615cd[_0x51c5('0x89')](_0x192b74,{'transaction':_0x4e491e});}})[_0x51c5('0x27')](function(){_0x192b74['forEach'](function(_0xb1e6f8){socket[_0x51c5('0x71')](_0x51c5('0x8a'),{'UserId':_0xb1e6f8,'ChatQueueId':_0x3615cd['id']});});});});});});})[_0x51c5('0x27')](respondWithStatusCode(_0x3d83f6,null))[_0x51c5('0x49')](handleError(_0x3d83f6,null));};exports[_0x51c5('0x8b')]=function(_0x30521a,_0x2d80ad,_0xa0d121){return db[_0x51c5('0x2f')][_0x51c5('0x4d')]({'where':{'id':_0x30521a[_0x51c5('0x4b')]['id']}})['then'](handleEntityNotFound(_0x2d80ad,null))[_0x51c5('0x27')](function(_0x6e7d8c){if(_0x6e7d8c){return _0x6e7d8c[_0x51c5('0x8b')](_0x30521a[_0x51c5('0x4f')][_0x51c5('0x66')],_[_0x51c5('0x8c')](_0x30521a[_0x51c5('0x4f')],[_0x51c5('0x66'),'id'])||{})[_0x51c5('0x8d')](function(_0x4a439a){for(var _0x4cc630=0x0;_0x4cc630<_0x30521a[_0x51c5('0x4f')]['ids'][_0x51c5('0x39')];_0x4cc630+=0x1){socket[_0x51c5('0x71')](_0x51c5('0x72'),{'UserId':Number(_0x30521a[_0x51c5('0x4f')]['ids'][_0x4cc630]),'ChatQueueId':Number(_0x30521a[_0x51c5('0x4b')]['id'])});}return _0x4a439a;});}})['then'](respondWithResult(_0x2d80ad,null))[_0x51c5('0x49')](handleError(_0x2d80ad,null));};exports[_0x51c5('0x89')]=function(_0x19adb0,_0x597e07,_0x4e7507){return db[_0x51c5('0x2f')][_0x51c5('0x4d')]({'where':{'id':_0x19adb0[_0x51c5('0x4b')]['id']}})[_0x51c5('0x27')](handleEntityNotFound(_0x597e07,null))['then'](function(_0x2e75e2){if(_0x2e75e2){return _0x2e75e2['removeAgents'](_0x19adb0[_0x51c5('0x35')][_0x51c5('0x66')])[_0x51c5('0x27')](function(){if(_['isArray'](_0x19adb0['query'][_0x51c5('0x66')])){for(var _0x4c5b30=0x0;_0x4c5b30<_0x19adb0['query'][_0x51c5('0x66')][_0x51c5('0x39')];_0x4c5b30+=0x1){socket['emit'](_0x51c5('0x8a'),{'UserId':Number(_0x19adb0[_0x51c5('0x35')][_0x51c5('0x66')][_0x4c5b30]),'ChatQueueId':Number(_0x19adb0[_0x51c5('0x4b')]['id'])});}}else{socket['emit'](_0x51c5('0x8a'),{'UserId':Number(_0x19adb0[_0x51c5('0x35')][_0x51c5('0x66')]),'ChatQueueId':Number(_0x19adb0[_0x51c5('0x4b')]['id'])});}});}})[_0x51c5('0x27')](respondWithStatusCode(_0x597e07,null))[_0x51c5('0x49')](handleError(_0x597e07,null));};exports[_0x51c5('0x8e')]=function(_0x203cf2,_0x51fb36,_0x17d59d){var _0x5368af={};var _0x7598ac={};var _0x2b3192;var _0x431463;return db[_0x51c5('0x2f')][_0x51c5('0x58')]({'where':{'id':_0x203cf2[_0x51c5('0x4b')]['id']}})[_0x51c5('0x27')](handleEntityNotFound(_0x51fb36,null))[_0x51c5('0x27')](function(_0x412b54){if(_0x412b54){_0x2b3192=_0x412b54;_0x7598ac[_0x51c5('0x34')]=_[_0x51c5('0x36')](db[_0x51c5('0x5c')][_0x51c5('0x30')]);_0x7598ac[_0x51c5('0x35')]=_[_0x51c5('0x36')](_0x203cf2['query']);_0x7598ac[_0x51c5('0x3e')]=_[_0x51c5('0x37')](_0x7598ac[_0x51c5('0x34')],_0x7598ac[_0x51c5('0x35')]);_0x5368af[_0x51c5('0x38')]=_['intersection'](_0x7598ac[_0x51c5('0x34')],qs['fields'](_0x203cf2[_0x51c5('0x35')][_0x51c5('0x4c')]));_0x5368af[_0x51c5('0x38')]=_0x5368af['attributes'][_0x51c5('0x39')]?_0x5368af['attributes']:_0x7598ac[_0x51c5('0x34')];_0x5368af[_0x51c5('0x3b')]=qs[_0x51c5('0x3c')](_0x203cf2['query'][_0x51c5('0x3c')]);_0x5368af[_0x51c5('0x3d')]=qs[_0x51c5('0x3e')](_[_0x51c5('0x3f')](_0x203cf2['query'],_0x7598ac[_0x51c5('0x3e')]));if(_0x203cf2[_0x51c5('0x35')][_0x51c5('0x40')]){_0x5368af[_0x51c5('0x3d')]=_['merge'](_0x5368af[_0x51c5('0x3d')],{'$or':_[_0x51c5('0x42')](_0x5368af[_0x51c5('0x38')],function(_0x13733d){var _0x32797b={};_0x32797b[_0x13733d]={'$like':'%'+_0x203cf2[_0x51c5('0x35')][_0x51c5('0x40')]+'%'};return _0x32797b;})});}_0x5368af=_[_0x51c5('0x41')]({},_0x5368af,_0x203cf2[_0x51c5('0x44')]);return _0x2b3192[_0x51c5('0x8e')](_0x5368af);}})[_0x51c5('0x27')](function(_0x42d28f){if(_0x42d28f){_0x431463=_0x42d28f[_0x51c5('0x39')];if(!_0x203cf2[_0x51c5('0x35')][_0x51c5('0x5a')](_0x51c5('0x3a'))){_0x5368af['limit']=qs[_0x51c5('0x22')](_0x203cf2[_0x51c5('0x35')][_0x51c5('0x22')]);_0x5368af[_0x51c5('0x20')]=qs['offset'](_0x203cf2[_0x51c5('0x35')][_0x51c5('0x20')]);}return _0x2b3192['getAgents'](_0x5368af);}})[_0x51c5('0x27')](function(_0x5a04a9){if(_0x5a04a9){return _0x5a04a9?{'count':_0x431463,'rows':_0x5a04a9}:null;}})['then'](respondWithResult(_0x51fb36,null))[_0x51c5('0x49')](handleError(_0x51fb36,null));};
\ No newline at end of file
index 4e85683..755e53b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36b9=['ChatQueue','setMaxListeners','save','update','remove','emit','hasOwnProperty','events'];(function(_0x1cca56,_0x5e0aa0){var _0xe8ceed=function(_0x59a59c){while(--_0x59a59c){_0x1cca56['push'](_0x1cca56['shift']());}};_0xe8ceed(++_0x5e0aa0);}(_0x36b9,0xe7));var _0x936b=function(_0x338661,_0x9d526c){_0x338661=_0x338661-0x0;var _0x32ca43=_0x36b9[_0x338661];return _0x32ca43;};'use strict';var EventEmitter=require(_0x936b('0x0'));var ChatQueue=require('../../mysqldb')['db'][_0x936b('0x1')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x936b('0x2')](0x0);var events={'afterCreate':_0x936b('0x3'),'afterUpdate':_0x936b('0x4'),'afterDestroy':_0x936b('0x5')};function emitEvent(_0x4b4226){return function(_0x23a549,_0x24f9d7,_0x17e2a4){ChatQueueEvents[_0x936b('0x6')](_0x4b4226+':'+_0x23a549['id'],_0x23a549);ChatQueueEvents[_0x936b('0x6')](_0x4b4226,_0x23a549);_0x17e2a4(null);};}for(var e in events){if(events[_0x936b('0x7')](e)){var event=events[e];ChatQueue['hook'](e,emitEvent(event));}}module['exports']=ChatQueueEvents;
\ No newline at end of file
+var _0x0efb=['save','remove','emit','hook','exports','events','../../mysqldb','ChatQueue','setMaxListeners'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x0efb,0x16d));var _0xb0ef=function(_0x35b7d4,_0x5a5c43){_0x35b7d4=_0x35b7d4-0x0;var _0x4e8cee=_0x0efb[_0x35b7d4];return _0x4e8cee;};'use strict';var EventEmitter=require(_0xb0ef('0x0'));var ChatQueue=require(_0xb0ef('0x1'))['db'][_0xb0ef('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0xb0ef('0x3')](0x0);var events={'afterCreate':_0xb0ef('0x4'),'afterUpdate':'update','afterDestroy':_0xb0ef('0x5')};function emitEvent(_0x5cd579){return function(_0xf2bc2f,_0x499b5f,_0x251257){ChatQueueEvents[_0xb0ef('0x6')](_0x5cd579+':'+_0xf2bc2f['id'],_0xf2bc2f);ChatQueueEvents[_0xb0ef('0x6')](_0x5cd579,_0xf2bc2f);_0x251257(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatQueue[_0xb0ef('0x7')](e,emitEvent(event));}}module[_0xb0ef('0x8')]=ChatQueueEvents;
\ No newline at end of file
index e9180bc..0d448dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f9f=['define','ChatQueue','chat_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatQueue.attributes','exports'];(function(_0x48168a,_0xf9dfe5){var _0x346d98=function(_0x22e41f){while(--_0x22e41f){_0x48168a['push'](_0x48168a['shift']());}};_0x346d98(++_0xf9dfe5);}(_0x1f9f,0x102));var _0xf1f9=function(_0x40b43c,_0x269319){_0x40b43c=_0x40b43c-0x0;var _0x1d31b7=_0x1f9f[_0x40b43c];return _0x1d31b7;};'use strict';var _=require(_0xf1f9('0x0'));var util=require(_0xf1f9('0x1'));var logger=require(_0xf1f9('0x2'))(_0xf1f9('0x3'));var moment=require(_0xf1f9('0x4'));var BPromise=require(_0xf1f9('0x5'));var rp=require(_0xf1f9('0x6'));var fs=require('fs');var path=require(_0xf1f9('0x7'));var rimraf=require(_0xf1f9('0x8'));var config=require(_0xf1f9('0x9'));var attributes=require(_0xf1f9('0xa'));module[_0xf1f9('0xb')]=function(_0x3ca706,_0x2169c4){return _0x3ca706[_0xf1f9('0xc')](_0xf1f9('0xd'),attributes,{'tableName':_0xf1f9('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0b2c=['bluebird','request-promise','rimraf','../../config/environment','./chatQueue.attributes','define','ChatQueue','lodash','api','moment'];(function(_0x2aec52,_0x59d962){var _0x3b8835=function(_0x3e2604){while(--_0x3e2604){_0x2aec52['push'](_0x2aec52['shift']());}};_0x3b8835(++_0x59d962);}(_0x0b2c,0x101));var _0xc0b2=function(_0x415423,_0x3d8720){_0x415423=_0x415423-0x0;var _0x2b3362=_0x0b2c[_0x415423];return _0x2b3362;};'use strict';var _=require(_0xc0b2('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xc0b2('0x1'));var moment=require(_0xc0b2('0x2'));var BPromise=require(_0xc0b2('0x3'));var rp=require(_0xc0b2('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc0b2('0x5'));var config=require(_0xc0b2('0x6'));var attributes=require(_0xc0b2('0x7'));module['exports']=function(_0x2be264,_0x36ab42){return _0x2be264[_0xc0b2('0x8')](_0xc0b2('0x9'),attributes,{'tableName':'chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1dbbbdb..56e9e51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d74=['jayson/promise','defaults','localhost','socket.io-emitter','./chatQueue.socket','register','request','then','info','ChatQueue,\x20%s,\x20%s','debug','ChatQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','GetChatQueue','options','raw','where','attributes','limit','include','map','model','ShowChatQueue','ChatQueue','find','lodash','util','randomstring','ioredis','../../config/logger','rpc','../../config/environment'];(function(_0xb0ef6,_0x53cd27){var _0x30a8ff=function(_0x1df3c3){while(--_0x1df3c3){_0xb0ef6['push'](_0xb0ef6['shift']());}};_0x30a8ff(++_0x53cd27);}(_0x0d74,0x146));var _0x40d7=function(_0x291dc6,_0x1109ff){_0x291dc6=_0x291dc6-0x0;var _0x54d7cc=_0x0d74[_0x291dc6];return _0x54d7cc;};'use strict';var _=require(_0x40d7('0x0'));var util=require(_0x40d7('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x40d7('0x2'));var fs=require('fs');var Redis=require(_0x40d7('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x40d7('0x4'))(_0x40d7('0x5'));var config=require(_0x40d7('0x6'));var jayson=require(_0x40d7('0x7'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0x40d7('0x8')](config['redis'],{'host':_0x40d7('0x9'),'port':0x18eb});var socket=require(_0x40d7('0xa'))(new Redis(config['redis']));require(_0x40d7('0xb'))[_0x40d7('0xc')](socket);function respondWithRpcPromise(_0x354f80,_0x2bae78,_0xcb37e3){return new BPromise(function(_0x517d88,_0x5208be){return client[_0x40d7('0xd')](_0x354f80,_0xcb37e3)[_0x40d7('0xe')](function(_0x229937){logger[_0x40d7('0xf')](_0x40d7('0x10'),_0x2bae78,'request\x20sent');logger[_0x40d7('0x11')](_0x40d7('0x12'),_0x2bae78,_0x40d7('0x13'),JSON[_0x40d7('0x14')](_0x229937));if(_0x229937['error']){if(_0x229937[_0x40d7('0x15')][_0x40d7('0x16')]===0x1f4){logger[_0x40d7('0x15')](_0x40d7('0x10'),_0x2bae78,_0x229937[_0x40d7('0x15')][_0x40d7('0x17')]);return _0x5208be(_0x229937[_0x40d7('0x15')][_0x40d7('0x17')]);}logger[_0x40d7('0x15')]('ChatQueue,\x20%s,\x20%s',_0x2bae78,_0x229937['error']['message']);return _0x517d88(_0x229937[_0x40d7('0x15')][_0x40d7('0x17')]);}else{logger['info']('ChatQueue,\x20%s,\x20%s',_0x2bae78,_0x40d7('0x13'));_0x517d88(_0x229937['result']['message']);}})[_0x40d7('0x18')](function(_0x22de5a){logger[_0x40d7('0x15')](_0x40d7('0x10'),_0x2bae78,_0x22de5a);_0x5208be(_0x22de5a);});});}exports[_0x40d7('0x19')]=function(_0x28bbc0){var _0x3d2afa=this;return new Promise(function(_0x3ec437,_0x5eb3c1){return db['ChatQueue']['findAll']({'raw':_0x28bbc0[_0x40d7('0x1a')]?_0x28bbc0['options'][_0x40d7('0x1b')]===undefined?!![]:![]:!![],'where':_0x28bbc0[_0x40d7('0x1a')]?_0x28bbc0[_0x40d7('0x1a')][_0x40d7('0x1c')]||null:null,'attributes':_0x28bbc0[_0x40d7('0x1a')]?_0x28bbc0[_0x40d7('0x1a')][_0x40d7('0x1d')]||null:null,'limit':_0x28bbc0[_0x40d7('0x1a')]?_0x28bbc0[_0x40d7('0x1a')][_0x40d7('0x1e')]||null:null,'include':_0x28bbc0[_0x40d7('0x1a')]?_0x28bbc0['options'][_0x40d7('0x1f')]?_[_0x40d7('0x20')](_0x28bbc0[_0x40d7('0x1a')][_0x40d7('0x1f')],function(_0x528ab5){return{'model':db[_0x528ab5['model']],'as':_0x528ab5['as'],'attributes':_0x528ab5[_0x40d7('0x1d')],'include':_0x528ab5['include']?_['map'](_0x528ab5[_0x40d7('0x1f')],function(_0x1ef074){return{'model':db[_0x1ef074[_0x40d7('0x21')]],'as':_0x1ef074['as'],'attributes':_0x1ef074[_0x40d7('0x1d')],'include':_0x1ef074['include']?_['map'](_0x1ef074[_0x40d7('0x1f')],function(_0x2b5f11){return{'model':db[_0x2b5f11[_0x40d7('0x21')]],'as':_0x2b5f11['as'],'attributes':_0x2b5f11['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x1102d3){logger[_0x40d7('0xf')]('GetChatQueue',_0x28bbc0);logger[_0x40d7('0x11')](_0x40d7('0x19'),_0x28bbc0,JSON[_0x40d7('0x14')](_0x1102d3));_0x3ec437(_0x1102d3);})[_0x40d7('0x18')](function(_0x555a3b){logger['error'](_0x40d7('0x19'),_0x555a3b[_0x40d7('0x17')],_0x28bbc0);_0x5eb3c1(_0x3d2afa[_0x40d7('0x15')](0x1f4,_0x555a3b[_0x40d7('0x17')]));});});};exports[_0x40d7('0x22')]=function(_0x4a2bc2){var _0x23e560=this;return new Promise(function(_0x5af456,_0x22edd1){return db[_0x40d7('0x23')][_0x40d7('0x24')]({'raw':_0x4a2bc2['options']?_0x4a2bc2[_0x40d7('0x1a')][_0x40d7('0x1b')]===undefined?!![]:![]:!![],'where':_0x4a2bc2[_0x40d7('0x1a')]?_0x4a2bc2[_0x40d7('0x1a')][_0x40d7('0x1c')]||null:null,'attributes':_0x4a2bc2[_0x40d7('0x1a')]?_0x4a2bc2[_0x40d7('0x1a')]['attributes']||null:null,'include':_0x4a2bc2[_0x40d7('0x1a')]?_0x4a2bc2[_0x40d7('0x1a')][_0x40d7('0x1f')]?_[_0x40d7('0x20')](_0x4a2bc2[_0x40d7('0x1a')][_0x40d7('0x1f')],function(_0x1e6f08){return{'model':db[_0x1e6f08[_0x40d7('0x21')]],'as':_0x1e6f08['as'],'attributes':_0x1e6f08['attributes'],'include':_0x1e6f08['include']?_[_0x40d7('0x20')](_0x1e6f08[_0x40d7('0x1f')],function(_0x4902a1){return{'model':db[_0x4902a1['model']],'as':_0x4902a1['as'],'attributes':_0x4902a1['attributes'],'include':_0x4902a1[_0x40d7('0x1f')]?_['map'](_0x4902a1[_0x40d7('0x1f')],function(_0x56b17c){return{'model':db[_0x56b17c[_0x40d7('0x21')]],'as':_0x56b17c['as'],'attributes':_0x56b17c[_0x40d7('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x40d7('0xe')](function(_0x2e4ccb){logger[_0x40d7('0xf')]('ShowChatQueue',_0x4a2bc2);logger[_0x40d7('0x11')](_0x40d7('0x22'),_0x4a2bc2,JSON[_0x40d7('0x14')](_0x2e4ccb));_0x5af456(_0x2e4ccb);})[_0x40d7('0x18')](function(_0x21a675){logger['error']('ShowChatQueue',_0x21a675['message'],_0x4a2bc2);_0x22edd1(_0x23e560[_0x40d7('0x15')](0x1f4,_0x21a675['message']));});});};
\ No newline at end of file
+var _0xa6ea=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./chatQueue.socket','register','info','request\x20sent','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatQueue,\x20%s,\x20%s','message','result','catch','GetChatQueue','ChatQueue','options','where','attributes','limit','include','map','model','then','debug','find','raw','ShowChatQueue','lodash','util','moment','bluebird'];(function(_0x4e930d,_0x5573bc){var _0x30d8ff=function(_0x5797bb){while(--_0x5797bb){_0x4e930d['push'](_0x4e930d['shift']());}};_0x30d8ff(++_0x5573bc);}(_0xa6ea,0x122));var _0xaa6e=function(_0x3394d5,_0x556227){_0x3394d5=_0x3394d5-0x0;var _0x14f441=_0xa6ea[_0x3394d5];return _0x14f441;};'use strict';var _=require(_0xaa6e('0x0'));var util=require(_0xaa6e('0x1'));var moment=require(_0xaa6e('0x2'));var BPromise=require(_0xaa6e('0x3'));var rs=require(_0xaa6e('0x4'));var fs=require('fs');var Redis=require(_0xaa6e('0x5'));var db=require(_0xaa6e('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xaa6e('0x7'))(_0xaa6e('0x8'));var config=require(_0xaa6e('0x9'));var jayson=require(_0xaa6e('0xa'));var client=jayson[_0xaa6e('0xb')]['http']({'port':0x232a});config['redis']=_[_0xaa6e('0xc')](config[_0xaa6e('0xd')],{'host':_0xaa6e('0xe'),'port':0x18eb});var socket=require(_0xaa6e('0xf'))(new Redis(config[_0xaa6e('0xd')]));require(_0xaa6e('0x10'))[_0xaa6e('0x11')](socket);function respondWithRpcPromise(_0x50c23c,_0x357240,_0x4cb51b){return new BPromise(function(_0x534cb5,_0x3fc93b){return client['request'](_0x50c23c,_0x4cb51b)['then'](function(_0x3fbdc5){logger[_0xaa6e('0x12')]('ChatQueue,\x20%s,\x20%s',_0x357240,_0xaa6e('0x13'));logger['debug'](_0xaa6e('0x14'),_0x357240,_0xaa6e('0x13'),JSON[_0xaa6e('0x15')](_0x3fbdc5));if(_0x3fbdc5[_0xaa6e('0x16')]){if(_0x3fbdc5[_0xaa6e('0x16')][_0xaa6e('0x17')]===0x1f4){logger[_0xaa6e('0x16')](_0xaa6e('0x18'),_0x357240,_0x3fbdc5[_0xaa6e('0x16')]['message']);return _0x3fc93b(_0x3fbdc5[_0xaa6e('0x16')][_0xaa6e('0x19')]);}logger[_0xaa6e('0x16')]('ChatQueue,\x20%s,\x20%s',_0x357240,_0x3fbdc5[_0xaa6e('0x16')][_0xaa6e('0x19')]);return _0x534cb5(_0x3fbdc5[_0xaa6e('0x16')][_0xaa6e('0x19')]);}else{logger['info'](_0xaa6e('0x18'),_0x357240,_0xaa6e('0x13'));_0x534cb5(_0x3fbdc5[_0xaa6e('0x1a')][_0xaa6e('0x19')]);}})[_0xaa6e('0x1b')](function(_0x1e80f6){logger['error'](_0xaa6e('0x18'),_0x357240,_0x1e80f6);_0x3fc93b(_0x1e80f6);});});}exports[_0xaa6e('0x1c')]=function(_0x42d03b){var _0x48ca71=this;return new Promise(function(_0x22d985,_0x1c517c){return db[_0xaa6e('0x1d')]['findAll']({'raw':_0x42d03b[_0xaa6e('0x1e')]?_0x42d03b[_0xaa6e('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x42d03b['options']?_0x42d03b['options'][_0xaa6e('0x1f')]||null:null,'attributes':_0x42d03b[_0xaa6e('0x1e')]?_0x42d03b[_0xaa6e('0x1e')][_0xaa6e('0x20')]||null:null,'limit':_0x42d03b['options']?_0x42d03b[_0xaa6e('0x1e')][_0xaa6e('0x21')]||null:null,'include':_0x42d03b[_0xaa6e('0x1e')]?_0x42d03b[_0xaa6e('0x1e')][_0xaa6e('0x22')]?_[_0xaa6e('0x23')](_0x42d03b[_0xaa6e('0x1e')][_0xaa6e('0x22')],function(_0x116c92){return{'model':db[_0x116c92[_0xaa6e('0x24')]],'as':_0x116c92['as'],'attributes':_0x116c92['attributes'],'include':_0x116c92[_0xaa6e('0x22')]?_[_0xaa6e('0x23')](_0x116c92[_0xaa6e('0x22')],function(_0x521402){return{'model':db[_0x521402['model']],'as':_0x521402['as'],'attributes':_0x521402[_0xaa6e('0x20')],'include':_0x521402[_0xaa6e('0x22')]?_[_0xaa6e('0x23')](_0x521402[_0xaa6e('0x22')],function(_0x40c76a){return{'model':db[_0x40c76a[_0xaa6e('0x24')]],'as':_0x40c76a['as'],'attributes':_0x40c76a['attributes']};}):[]};}):[]};}):[]:[]})[_0xaa6e('0x25')](function(_0x21262a){logger['info'](_0xaa6e('0x1c'),_0x42d03b);logger[_0xaa6e('0x26')]('GetChatQueue',_0x42d03b,JSON[_0xaa6e('0x15')](_0x21262a));_0x22d985(_0x21262a);})[_0xaa6e('0x1b')](function(_0x2ddec4){logger['error'](_0xaa6e('0x1c'),_0x2ddec4[_0xaa6e('0x19')],_0x42d03b);_0x1c517c(_0x48ca71[_0xaa6e('0x16')](0x1f4,_0x2ddec4[_0xaa6e('0x19')]));});});};exports['ShowChatQueue']=function(_0x34eb9b){var _0x4176aa=this;return new Promise(function(_0x126a07,_0x258793){return db[_0xaa6e('0x1d')][_0xaa6e('0x27')]({'raw':_0x34eb9b[_0xaa6e('0x1e')]?_0x34eb9b['options'][_0xaa6e('0x28')]===undefined?!![]:![]:!![],'where':_0x34eb9b[_0xaa6e('0x1e')]?_0x34eb9b[_0xaa6e('0x1e')][_0xaa6e('0x1f')]||null:null,'attributes':_0x34eb9b[_0xaa6e('0x1e')]?_0x34eb9b[_0xaa6e('0x1e')][_0xaa6e('0x20')]||null:null,'include':_0x34eb9b[_0xaa6e('0x1e')]?_0x34eb9b[_0xaa6e('0x1e')][_0xaa6e('0x22')]?_['map'](_0x34eb9b[_0xaa6e('0x1e')][_0xaa6e('0x22')],function(_0x2e9911){return{'model':db[_0x2e9911[_0xaa6e('0x24')]],'as':_0x2e9911['as'],'attributes':_0x2e9911[_0xaa6e('0x20')],'include':_0x2e9911[_0xaa6e('0x22')]?_['map'](_0x2e9911[_0xaa6e('0x22')],function(_0x56c24b){return{'model':db[_0x56c24b[_0xaa6e('0x24')]],'as':_0x56c24b['as'],'attributes':_0x56c24b['attributes'],'include':_0x56c24b['include']?_['map'](_0x56c24b[_0xaa6e('0x22')],function(_0x5b9b2d){return{'model':db[_0x5b9b2d[_0xaa6e('0x24')]],'as':_0x5b9b2d['as'],'attributes':_0x5b9b2d[_0xaa6e('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1546b6){logger['info'](_0xaa6e('0x29'),_0x34eb9b);logger[_0xaa6e('0x26')](_0xaa6e('0x29'),_0x34eb9b,JSON['stringify'](_0x1546b6));_0x126a07(_0x1546b6);})[_0xaa6e('0x1b')](function(_0x183597){logger[_0xaa6e('0x16')](_0xaa6e('0x29'),_0x183597[_0xaa6e('0x19')],_0x34eb9b);_0x258793(_0x4176aa['error'](0x1f4,_0x183597[_0xaa6e('0x19')]));});});};
\ No newline at end of file
index 295b412..fc2c3cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb8=['emit','removeListener','length','chatQueue:','remove'];(function(_0x4fe19c,_0x45d0fe){var _0x952ac7=function(_0x274a16){while(--_0x274a16){_0x4fe19c['push'](_0x4fe19c['shift']());}};_0x952ac7(++_0x45d0fe);}(_0xadb8,0x1d0));var _0x8adb=function(_0x20aae1,_0x51efd4){_0x20aae1=_0x20aae1-0x0;var _0x510601=_0xadb8[_0x20aae1];return _0x510601;};'use strict';var ChatQueueEvents=require('./chatQueue.events');var events=['save',_0x8adb('0x0'),'update'];function createListener(_0x2b8a76,_0x2a0b30){return function(_0x24f912){_0x2a0b30[_0x8adb('0x1')](_0x2b8a76,_0x24f912);};}function removeListener(_0x44fdf7,_0x2baedb){return function(){ChatQueueEvents[_0x8adb('0x2')](_0x44fdf7,_0x2baedb);};}exports['register']=function(_0x15bc63){for(var _0x1a5f36=0x0,_0x9f435=events[_0x8adb('0x3')];_0x1a5f36<_0x9f435;_0x1a5f36++){var _0x271bed=events[_0x1a5f36];var _0x16b932=createListener(_0x8adb('0x4')+_0x271bed,_0x15bc63);ChatQueueEvents['on'](_0x271bed,_0x16b932);}};
\ No newline at end of file
+var _0x4c6d=['emit','removeListener','register','length','chatQueue:','./chatQueue.events','save','remove','update'];(function(_0x1ac989,_0x3e5ea6){var _0x16a80b=function(_0x509c64){while(--_0x509c64){_0x1ac989['push'](_0x1ac989['shift']());}};_0x16a80b(++_0x3e5ea6);}(_0x4c6d,0x1d0));var _0xd4c6=function(_0x137bdd,_0x43a31f){_0x137bdd=_0x137bdd-0x0;var _0x2656a5=_0x4c6d[_0x137bdd];return _0x2656a5;};'use strict';var ChatQueueEvents=require(_0xd4c6('0x0'));var events=[_0xd4c6('0x1'),_0xd4c6('0x2'),_0xd4c6('0x3')];function createListener(_0x350cc0,_0x5448bc){return function(_0x209f99){_0x5448bc[_0xd4c6('0x4')](_0x350cc0,_0x209f99);};}function removeListener(_0x306766,_0x4b2d75){return function(){ChatQueueEvents[_0xd4c6('0x5')](_0x306766,_0x4b2d75);};}exports[_0xd4c6('0x6')]=function(_0x56279c){for(var _0x182671=0x0,_0x316314=events[_0xd4c6('0x7')];_0x182671<_0x316314;_0x182671++){var _0x5d4fce=events[_0x182671];var _0x440ee3=createListener(_0xd4c6('0x8')+_0x5d4fce,_0x56279c);ChatQueueEvents['on'](_0x5d4fce,_0x440ee3);}};
\ No newline at end of file
index e0be9cc..c640c76 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(_0x4237da,_0x48b1fd){var _0x343b83=function(_0x515574){while(--_0x515574){_0x4237da['push'](_0x4237da['shift']());}};_0x343b83(++_0x48b1fd);}(_0xe14b,0x93));var _0xbe14=function(_0x4269bc,_0x5a094c){_0x4269bc=_0x4269bc-0x0;var _0x53b296=_0xe14b[_0x4269bc];return _0x53b296;};'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 _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(_0x225074,_0x1abb16){var _0x3fb50c=function(_0xf22c61){while(--_0xf22c61){_0x225074['push'](_0x225074['shift']());}};_0x3fb50c(++_0x1abb16);}(_0xe14b,0x93));var _0xbe14=function(_0x176b0c,_0x321afe){_0x176b0c=_0x176b0c-0x0;var _0x434f3d=_0xe14b[_0x176b0c];return _0x434f3d;};'use strict';var multer=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xbe14('0x2'));var router=express[_0xbe14('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xbe14('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xbe14('0x5'));router[_0xbe14('0x6')]('/',auth[_0xbe14('0x7')](),controller[_0xbe14('0x8')]);router[_0xbe14('0x6')](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['describe']);router['get']('/:id',auth[_0xbe14('0x7')](),controller[_0xbe14('0xa')]);router[_0xbe14('0x6')](_0xbe14('0xb'),auth['isAuthenticated'](),controller['getMembers']);router[_0xbe14('0x6')](_0xbe14('0xc'),auth['isAuthenticated'](),controller[_0xbe14('0xd')]);router[_0xbe14('0x6')](_0xbe14('0xe'),auth[_0xbe14('0x7')](),controller[_0xbe14('0xf')]);router[_0xbe14('0x10')]('/',auth[_0xbe14('0x7')](),controller[_0xbe14('0x11')]);router[_0xbe14('0x10')](_0xbe14('0xc'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x12')]);router[_0xbe14('0x10')]('/:id/users',auth['isAuthenticated'](),controller[_0xbe14('0x13')]);router[_0xbe14('0x14')](_0xbe14('0x15'),auth[_0xbe14('0x7')](),controller['update']);router[_0xbe14('0x16')](_0xbe14('0x15'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x17')]);router[_0xbe14('0x16')](_0xbe14('0xc'),auth[_0xbe14('0x7')](),controller['removeTeams']);router[_0xbe14('0x16')](_0xbe14('0xe'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x18')]);module[_0xbe14('0x19')]=router;
\ No newline at end of file
index c9b48f8..b9e6447 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1e4=['STRING','DATE','moment','sequelize'];(function(_0x2064e5,_0x4f6fa2){var _0x21a233=function(_0x1b2491){while(--_0x1b2491){_0x2064e5['push'](_0x2064e5['shift']());}};_0x21a233(++_0x4f6fa2);}(_0xe1e4,0x18e));var _0x4e1e=function(_0x599f41,_0x4db732){_0x599f41=_0x599f41-0x0;var _0x2e4d58=_0xe1e4[_0x599f41];return _0x2e4d58;};'use strict';var moment=require(_0x4e1e('0x0'));var Sequelize=require(_0x4e1e('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0x4e1e('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x4e1e('0x2')]},'joinAt':{'type':Sequelize[_0x4e1e('0x3')]},'leaveAt':{'type':Sequelize[_0x4e1e('0x3')]},'acceptAt':{'type':Sequelize[_0x4e1e('0x3')]},'exitAt':{'type':Sequelize[_0x4e1e('0x3')]},'reason':{'type':Sequelize[_0x4e1e('0x2')]}};
\ No newline at end of file
+var _0xe630=['DATE','moment','sequelize','exports','STRING'];(function(_0x51d477,_0x2349ae){var _0x127b0d=function(_0x4b46b6){while(--_0x4b46b6){_0x51d477['push'](_0x51d477['shift']());}};_0x127b0d(++_0x2349ae);}(_0xe630,0x65));var _0x0e63=function(_0x3a6731,_0x3cf5f7){_0x3a6731=_0x3a6731-0x0;var _0x68e232=_0xe630[_0x3a6731];return _0x68e232;};'use strict';var moment=require(_0x0e63('0x0'));var Sequelize=require(_0x0e63('0x1'));module[_0x0e63('0x2')]={'uniqueid':{'type':Sequelize[_0x0e63('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x0e63('0x3')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x0e63('0x4')]},'acceptAt':{'type':Sequelize[_0x0e63('0x4')]},'exitAt':{'type':Sequelize[_0x0e63('0x4')]},'reason':{'type':Sequelize[_0x0e63('0x3')]}};
\ No newline at end of file
index d2217b4..0dee7b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cad=['intersection','model','fields','attributes','length','hasOwnProperty','order','sort','where','filter','merge','options','includeAll','include','findAll','rows','catch','params','create','update','body','find','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','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','then','destroy','error','name','send','map','ChatQueueReport','rawAttributes','fieldName','type','key','query','keys','filters'];(function(_0x42deb9,_0xa48420){var _0x393e3f=function(_0x350e3b){while(--_0x350e3b){_0x42deb9['push'](_0x42deb9['shift']());}};_0x393e3f(++_0xa48420);}(_0x8cad,0xfe));var _0xd8ca=function(_0x3740fe,_0x6c543c){_0x3740fe=_0x3740fe-0x0;var _0x55492b=_0x8cad[_0x3740fe];return _0x55492b;};'use strict';var emlformat=require(_0xd8ca('0x0'));var rimraf=require(_0xd8ca('0x1'));var zipdir=require(_0xd8ca('0x2'));var jsonpatch=require(_0xd8ca('0x3'));var rp=require(_0xd8ca('0x4'));var moment=require(_0xd8ca('0x5'));var BPromise=require(_0xd8ca('0x6'));var Mustache=require(_0xd8ca('0x7'));var util=require(_0xd8ca('0x8'));var path=require(_0xd8ca('0x9'));var sox=require(_0xd8ca('0xa'));var csv=require(_0xd8ca('0xb'));var ejs=require(_0xd8ca('0xc'));var fs=require('fs');var fs_extra=require(_0xd8ca('0xd'));var _=require('lodash');var squel=require(_0xd8ca('0xe'));var crypto=require(_0xd8ca('0xf'));var jsforce=require(_0xd8ca('0x10'));var deskjs=require(_0xd8ca('0x11'));var toCsv=require(_0xd8ca('0xb'));var querystring=require('querystring');var Papa=require(_0xd8ca('0x12'));var Redis=require('ioredis');var authService=require(_0xd8ca('0x13'));var qs=require(_0xd8ca('0x14'));var as=require(_0xd8ca('0x15'));var hardwareService=require(_0xd8ca('0x16'));var logger=require(_0xd8ca('0x17'))(_0xd8ca('0x18'));var utils=require('../../config/utils');var config=require(_0xd8ca('0x19'));var licenseUtil=require(_0xd8ca('0x1a'));var db=require(_0xd8ca('0x1b'))['db'];function respondWithStatusCode(_0x102b16,_0x326272){_0x326272=_0x326272||0xcc;return function(_0x2bb191){if(_0x2bb191){return _0x102b16[_0xd8ca('0x1c')](_0x326272);}return _0x102b16[_0xd8ca('0x1d')](_0x326272)[_0xd8ca('0x1e')]();};}function respondWithResult(_0x52726a,_0x58969b){_0x58969b=_0x58969b||0xc8;return function(_0x12d3f8){if(_0x12d3f8){return _0x52726a[_0xd8ca('0x1d')](_0x58969b)[_0xd8ca('0x1f')](_0x12d3f8);}};}function respondWithFilteredResult(_0x647962,_0x177367){return function(_0x17330a){if(_0x17330a){var _0x3013f2=typeof _0x177367[_0xd8ca('0x20')]===_0xd8ca('0x21')&&typeof _0x177367['limit']===_0xd8ca('0x21');var _0x3c67fc=_0x17330a[_0xd8ca('0x22')];var _0x437ac5=_0x3013f2?0x0:_0x177367['offset'];var _0x47e368=_0x3013f2?_0x17330a[_0xd8ca('0x22')]:_0x177367['offset']+_0x177367[_0xd8ca('0x23')];var _0x35a3a1;if(_0x47e368>=_0x3c67fc){_0x47e368=_0x3c67fc;_0x35a3a1=0xc8;}else{_0x35a3a1=0xce;}_0x647962[_0xd8ca('0x1d')](_0x35a3a1);return _0x647962[_0xd8ca('0x24')](_0xd8ca('0x25'),_0x437ac5+'-'+_0x47e368+'/'+_0x3c67fc)[_0xd8ca('0x1f')](_0x17330a);}return null;};}function patchUpdates(_0x56ea7e){return function(_0xa18ac1){try{jsonpatch[_0xd8ca('0x26')](_0xa18ac1,_0x56ea7e,!![]);}catch(_0xd5e6c6){return BPromise[_0xd8ca('0x27')](_0xd5e6c6);}return _0xa18ac1['save']();};}function saveUpdates(_0x23854a,_0x3053f0){return function(_0x1d1367){if(_0x1d1367){return _0x1d1367['update'](_0x23854a)[_0xd8ca('0x28')](function(_0x341807){return _0x341807;});}return null;};}function removeEntity(_0xb42d0c,_0xbf3254){return function(_0x424d81){if(_0x424d81){return _0x424d81[_0xd8ca('0x29')]()[_0xd8ca('0x28')](function(){_0xb42d0c['status'](0xcc)[_0xd8ca('0x1e')]();});}};}function handleEntityNotFound(_0x3f8e42,_0x4eded9){return function(_0x3bd963){if(!_0x3bd963){_0x3f8e42[_0xd8ca('0x1c')](0x194);}return _0x3bd963;};}function handleError(_0x32ba25,_0xaeff64){_0xaeff64=_0xaeff64||0x1f4;return function(_0x15a71d){logger[_0xd8ca('0x2a')](_0x15a71d['stack']);if(_0x15a71d[_0xd8ca('0x2b')]){delete _0x15a71d['name'];}_0x32ba25[_0xd8ca('0x1d')](_0xaeff64)[_0xd8ca('0x2c')](_0x15a71d);};}exports['index']=function(_0x5260c3,_0x1ab436){var _0x4641af={},_0x3b1098={},_0x3bd4c4={'count':0x0,'rows':[]};var _0xab5ffe=_[_0xd8ca('0x2d')](db[_0xd8ca('0x2e')][_0xd8ca('0x2f')],function(_0x52369d){return{'name':_0x52369d[_0xd8ca('0x30')],'type':_0x52369d[_0xd8ca('0x31')][_0xd8ca('0x32')]};});_0x3b1098['model']=_['map'](_0xab5ffe,_0xd8ca('0x2b'));_0x3b1098[_0xd8ca('0x33')]=_[_0xd8ca('0x34')](_0x5260c3[_0xd8ca('0x33')]);_0x3b1098[_0xd8ca('0x35')]=_[_0xd8ca('0x36')](_0x3b1098[_0xd8ca('0x37')],_0x3b1098[_0xd8ca('0x33')]);_0x4641af['attributes']=_[_0xd8ca('0x36')](_0x3b1098[_0xd8ca('0x37')],qs[_0xd8ca('0x38')](_0x5260c3[_0xd8ca('0x33')][_0xd8ca('0x38')]));_0x4641af[_0xd8ca('0x39')]=_0x4641af[_0xd8ca('0x39')][_0xd8ca('0x3a')]?_0x4641af['attributes']:_0x3b1098[_0xd8ca('0x37')];if(!_0x5260c3[_0xd8ca('0x33')][_0xd8ca('0x3b')]('nolimit')){_0x4641af[_0xd8ca('0x23')]=qs[_0xd8ca('0x23')](_0x5260c3[_0xd8ca('0x33')]['limit']);_0x4641af[_0xd8ca('0x20')]=qs['offset'](_0x5260c3[_0xd8ca('0x33')]['offset']);}_0x4641af[_0xd8ca('0x3c')]=qs[_0xd8ca('0x3d')](_0x5260c3[_0xd8ca('0x33')]['sort']);_0x4641af[_0xd8ca('0x3e')]=qs[_0xd8ca('0x35')](_['pick'](_0x5260c3[_0xd8ca('0x33')],_0x3b1098[_0xd8ca('0x35')]),_0xab5ffe);if(_0x5260c3['query'][_0xd8ca('0x3f')]){_0x4641af[_0xd8ca('0x3e')]=_['merge'](_0x4641af[_0xd8ca('0x3e')],{'$or':_[_0xd8ca('0x2d')](_0xab5ffe,function(_0x225794){if(_0x225794['type']!=='VIRTUAL'){var _0x1779a5={};_0x1779a5[_0x225794['name']]={'$like':'%'+_0x5260c3[_0xd8ca('0x33')]['filter']+'%'};return _0x1779a5;}})});}_0x4641af=_[_0xd8ca('0x40')]({},_0x4641af,_0x5260c3[_0xd8ca('0x41')]);var _0x22f15b={'where':_0x4641af[_0xd8ca('0x3e')]};return db['ChatQueueReport'][_0xd8ca('0x22')](_0x22f15b)[_0xd8ca('0x28')](function(_0x2f971a){_0x3bd4c4['count']=_0x2f971a;if(_0x5260c3['query'][_0xd8ca('0x42')]){_0x4641af[_0xd8ca('0x43')]=[{'all':!![]}];}return db['ChatQueueReport'][_0xd8ca('0x44')](_0x4641af);})[_0xd8ca('0x28')](function(_0x43fcee){_0x3bd4c4[_0xd8ca('0x45')]=_0x43fcee;return _0x3bd4c4;})[_0xd8ca('0x28')](respondWithFilteredResult(_0x1ab436,_0x4641af))[_0xd8ca('0x46')](handleError(_0x1ab436,null));};exports['show']=function(_0x387309,_0x2d10b3){var _0x15d671={'raw':!![],'where':{'id':_0x387309[_0xd8ca('0x47')]['id']}},_0x2dffca={};_0x2dffca[_0xd8ca('0x37')]=_[_0xd8ca('0x34')](db[_0xd8ca('0x2e')]['rawAttributes']);_0x2dffca[_0xd8ca('0x33')]=_[_0xd8ca('0x34')](_0x387309['query']);_0x2dffca['filters']=_[_0xd8ca('0x36')](_0x2dffca[_0xd8ca('0x37')],_0x2dffca[_0xd8ca('0x33')]);_0x15d671[_0xd8ca('0x39')]=_[_0xd8ca('0x36')](_0x2dffca[_0xd8ca('0x37')],qs[_0xd8ca('0x38')](_0x387309[_0xd8ca('0x33')]['fields']));_0x15d671[_0xd8ca('0x39')]=_0x15d671[_0xd8ca('0x39')][_0xd8ca('0x3a')]?_0x15d671[_0xd8ca('0x39')]:_0x2dffca[_0xd8ca('0x37')];if(_0x387309[_0xd8ca('0x33')][_0xd8ca('0x42')]){_0x15d671[_0xd8ca('0x43')]=[{'all':!![]}];}_0x15d671=_['merge']({},_0x15d671,_0x387309[_0xd8ca('0x41')]);return db[_0xd8ca('0x2e')]['find'](_0x15d671)[_0xd8ca('0x28')](handleEntityNotFound(_0x2d10b3,null))[_0xd8ca('0x28')](respondWithResult(_0x2d10b3,null))[_0xd8ca('0x46')](handleError(_0x2d10b3,null));};exports[_0xd8ca('0x48')]=function(_0x449758,_0x31ca73){return db[_0xd8ca('0x2e')][_0xd8ca('0x48')](_0x449758['body'],{})[_0xd8ca('0x28')](respondWithResult(_0x31ca73,0xc9))[_0xd8ca('0x46')](handleError(_0x31ca73,null));};exports[_0xd8ca('0x49')]=function(_0x513b2e,_0x346497){if(_0x513b2e[_0xd8ca('0x4a')]['id']){delete _0x513b2e[_0xd8ca('0x4a')]['id'];}return db[_0xd8ca('0x2e')][_0xd8ca('0x4b')]({'where':{'id':_0x513b2e[_0xd8ca('0x47')]['id']}})[_0xd8ca('0x28')](handleEntityNotFound(_0x346497,null))[_0xd8ca('0x28')](saveUpdates(_0x513b2e[_0xd8ca('0x4a')],null))[_0xd8ca('0x28')](respondWithResult(_0x346497,null))[_0xd8ca('0x46')](handleError(_0x346497,null));};exports['destroy']=function(_0xfd8ad6,_0x3c1808){return db['ChatQueueReport'][_0xd8ca('0x4b')]({'where':{'id':_0xfd8ad6[_0xd8ca('0x47')]['id']}})[_0xd8ca('0x28')](handleEntityNotFound(_0x3c1808,null))[_0xd8ca('0x28')](removeEntity(_0x3c1808,null))[_0xd8ca('0x46')](handleError(_0x3c1808,null));};exports[_0xd8ca('0x4c')]=function(_0xd6d446,_0x43d3ef){return db[_0xd8ca('0x2e')]['describe']()['then'](respondWithResult(_0x43d3ef,null))[_0xd8ca('0x46')](handleError(_0x43d3ef,null));};
\ No newline at end of file
+var _0x63d4=['../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','index','map','ChatQueueReport','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','type','merge','options','includeAll','findAll','rows','show','find','catch','create','body','update','params','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils'];(function(_0x3b3331,_0x420c2f){var _0x214e10=function(_0x5f4c27){while(--_0x5f4c27){_0x3b3331['push'](_0x3b3331['shift']());}};_0x214e10(++_0x420c2f);}(_0x63d4,0x117));var _0x463d=function(_0x3d97c6,_0x2a3020){_0x3d97c6=_0x3d97c6-0x0;var _0x2e2da1=_0x63d4[_0x3d97c6];return _0x2e2da1;};'use strict';var emlformat=require(_0x463d('0x0'));var rimraf=require(_0x463d('0x1'));var zipdir=require(_0x463d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x463d('0x3'));var moment=require(_0x463d('0x4'));var BPromise=require(_0x463d('0x5'));var Mustache=require(_0x463d('0x6'));var util=require(_0x463d('0x7'));var path=require('path');var sox=require(_0x463d('0x8'));var csv=require(_0x463d('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x463d('0xa'));var _=require(_0x463d('0xb'));var squel=require(_0x463d('0xc'));var crypto=require(_0x463d('0xd'));var jsforce=require(_0x463d('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x463d('0x9'));var querystring=require('querystring');var Papa=require(_0x463d('0xf'));var Redis=require(_0x463d('0x10'));var authService=require(_0x463d('0x11'));var qs=require(_0x463d('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x463d('0x13'))('api');var utils=require(_0x463d('0x14'));var config=require(_0x463d('0x15'));var licenseUtil=require(_0x463d('0x16'));var db=require(_0x463d('0x17'))['db'];function respondWithStatusCode(_0x1ac050,_0x15d6ca){_0x15d6ca=_0x15d6ca||0xcc;return function(_0x39834c){if(_0x39834c){return _0x1ac050['sendStatus'](_0x15d6ca);}return _0x1ac050[_0x463d('0x18')](_0x15d6ca)[_0x463d('0x19')]();};}function respondWithResult(_0x436dba,_0x5d82ad){_0x5d82ad=_0x5d82ad||0xc8;return function(_0x8956d3){if(_0x8956d3){return _0x436dba[_0x463d('0x18')](_0x5d82ad)[_0x463d('0x1a')](_0x8956d3);}};}function respondWithFilteredResult(_0x1932e6,_0x37b3f6){return function(_0x46896c){if(_0x46896c){var _0x53c8c6=typeof _0x37b3f6[_0x463d('0x1b')]==='undefined'&&typeof _0x37b3f6[_0x463d('0x1c')]===_0x463d('0x1d');var _0x3c8154=_0x46896c[_0x463d('0x1e')];var _0x408f47=_0x53c8c6?0x0:_0x37b3f6[_0x463d('0x1b')];var _0x48df3c=_0x53c8c6?_0x46896c[_0x463d('0x1e')]:_0x37b3f6[_0x463d('0x1b')]+_0x37b3f6[_0x463d('0x1c')];var _0x2f813d;if(_0x48df3c>=_0x3c8154){_0x48df3c=_0x3c8154;_0x2f813d=0xc8;}else{_0x2f813d=0xce;}_0x1932e6[_0x463d('0x18')](_0x2f813d);return _0x1932e6[_0x463d('0x1f')](_0x463d('0x20'),_0x408f47+'-'+_0x48df3c+'/'+_0x3c8154)[_0x463d('0x1a')](_0x46896c);}return null;};}function patchUpdates(_0x27c4a3){return function(_0x622b48){try{jsonpatch[_0x463d('0x21')](_0x622b48,_0x27c4a3,!![]);}catch(_0xda9541){return BPromise[_0x463d('0x22')](_0xda9541);}return _0x622b48[_0x463d('0x23')]();};}function saveUpdates(_0x458789,_0x5670fc){return function(_0x19e3eb){if(_0x19e3eb){return _0x19e3eb['update'](_0x458789)[_0x463d('0x24')](function(_0x1a2756){return _0x1a2756;});}return null;};}function removeEntity(_0x541aa9,_0x5d16ad){return function(_0x3fc748){if(_0x3fc748){return _0x3fc748[_0x463d('0x25')]()['then'](function(){_0x541aa9[_0x463d('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1379ef,_0x35e562){return function(_0x3f10b3){if(!_0x3f10b3){_0x1379ef['sendStatus'](0x194);}return _0x3f10b3;};}function handleError(_0x592748,_0x4627c0){_0x4627c0=_0x4627c0||0x1f4;return function(_0x3763a2){logger[_0x463d('0x26')](_0x3763a2[_0x463d('0x27')]);if(_0x3763a2[_0x463d('0x28')]){delete _0x3763a2[_0x463d('0x28')];}_0x592748['status'](_0x4627c0)['send'](_0x3763a2);};}exports[_0x463d('0x29')]=function(_0x5cf437,_0x5358bb){var _0x45165d={},_0x33305d={},_0x440921={'count':0x0,'rows':[]};var _0x540e9c=_[_0x463d('0x2a')](db[_0x463d('0x2b')][_0x463d('0x2c')],function(_0x236ebb){return{'name':_0x236ebb[_0x463d('0x2d')],'type':_0x236ebb['type'][_0x463d('0x2e')]};});_0x33305d[_0x463d('0x2f')]=_['map'](_0x540e9c,_0x463d('0x28'));_0x33305d['query']=_[_0x463d('0x30')](_0x5cf437[_0x463d('0x31')]);_0x33305d[_0x463d('0x32')]=_[_0x463d('0x33')](_0x33305d[_0x463d('0x2f')],_0x33305d['query']);_0x45165d[_0x463d('0x34')]=_[_0x463d('0x33')](_0x33305d[_0x463d('0x2f')],qs[_0x463d('0x35')](_0x5cf437[_0x463d('0x31')][_0x463d('0x35')]));_0x45165d[_0x463d('0x34')]=_0x45165d[_0x463d('0x34')][_0x463d('0x36')]?_0x45165d[_0x463d('0x34')]:_0x33305d[_0x463d('0x2f')];if(!_0x5cf437[_0x463d('0x31')][_0x463d('0x37')](_0x463d('0x38'))){_0x45165d[_0x463d('0x1c')]=qs['limit'](_0x5cf437[_0x463d('0x31')][_0x463d('0x1c')]);_0x45165d[_0x463d('0x1b')]=qs[_0x463d('0x1b')](_0x5cf437[_0x463d('0x31')][_0x463d('0x1b')]);}_0x45165d[_0x463d('0x39')]=qs[_0x463d('0x3a')](_0x5cf437[_0x463d('0x31')][_0x463d('0x3a')]);_0x45165d[_0x463d('0x3b')]=qs['filters'](_['pick'](_0x5cf437[_0x463d('0x31')],_0x33305d[_0x463d('0x32')]),_0x540e9c);if(_0x5cf437['query'][_0x463d('0x3c')]){_0x45165d['where']=_['merge'](_0x45165d[_0x463d('0x3b')],{'$or':_['map'](_0x540e9c,function(_0x2eab3d){if(_0x2eab3d[_0x463d('0x3d')]!=='VIRTUAL'){var _0x3485dc={};_0x3485dc[_0x2eab3d[_0x463d('0x28')]]={'$like':'%'+_0x5cf437[_0x463d('0x31')][_0x463d('0x3c')]+'%'};return _0x3485dc;}})});}_0x45165d=_[_0x463d('0x3e')]({},_0x45165d,_0x5cf437[_0x463d('0x3f')]);var _0x1d1d67={'where':_0x45165d['where']};return db['ChatQueueReport'][_0x463d('0x1e')](_0x1d1d67)[_0x463d('0x24')](function(_0x41145e){_0x440921['count']=_0x41145e;if(_0x5cf437['query'][_0x463d('0x40')]){_0x45165d['include']=[{'all':!![]}];}return db[_0x463d('0x2b')][_0x463d('0x41')](_0x45165d);})[_0x463d('0x24')](function(_0x36b532){_0x440921[_0x463d('0x42')]=_0x36b532;return _0x440921;})[_0x463d('0x24')](respondWithFilteredResult(_0x5358bb,_0x45165d))['catch'](handleError(_0x5358bb,null));};exports[_0x463d('0x43')]=function(_0x498286,_0xd2232e){var _0x3b261d={'raw':!![],'where':{'id':_0x498286['params']['id']}},_0x5e4976={};_0x5e4976[_0x463d('0x2f')]=_[_0x463d('0x30')](db['ChatQueueReport']['rawAttributes']);_0x5e4976[_0x463d('0x31')]=_['keys'](_0x498286[_0x463d('0x31')]);_0x5e4976[_0x463d('0x32')]=_[_0x463d('0x33')](_0x5e4976[_0x463d('0x2f')],_0x5e4976[_0x463d('0x31')]);_0x3b261d['attributes']=_[_0x463d('0x33')](_0x5e4976[_0x463d('0x2f')],qs[_0x463d('0x35')](_0x498286[_0x463d('0x31')][_0x463d('0x35')]));_0x3b261d[_0x463d('0x34')]=_0x3b261d[_0x463d('0x34')][_0x463d('0x36')]?_0x3b261d['attributes']:_0x5e4976[_0x463d('0x2f')];if(_0x498286['query']['includeAll']){_0x3b261d['include']=[{'all':!![]}];}_0x3b261d=_['merge']({},_0x3b261d,_0x498286[_0x463d('0x3f')]);return db[_0x463d('0x2b')][_0x463d('0x44')](_0x3b261d)[_0x463d('0x24')](handleEntityNotFound(_0xd2232e,null))[_0x463d('0x24')](respondWithResult(_0xd2232e,null))[_0x463d('0x45')](handleError(_0xd2232e,null));};exports[_0x463d('0x46')]=function(_0x533d80,_0x24d179){return db['ChatQueueReport'][_0x463d('0x46')](_0x533d80[_0x463d('0x47')],{})[_0x463d('0x24')](respondWithResult(_0x24d179,0xc9))[_0x463d('0x45')](handleError(_0x24d179,null));};exports[_0x463d('0x48')]=function(_0x29d10c,_0x14b54f){if(_0x29d10c[_0x463d('0x47')]['id']){delete _0x29d10c[_0x463d('0x47')]['id'];}return db['ChatQueueReport'][_0x463d('0x44')]({'where':{'id':_0x29d10c[_0x463d('0x49')]['id']}})[_0x463d('0x24')](handleEntityNotFound(_0x14b54f,null))['then'](saveUpdates(_0x29d10c['body'],null))[_0x463d('0x24')](respondWithResult(_0x14b54f,null))['catch'](handleError(_0x14b54f,null));};exports[_0x463d('0x25')]=function(_0x41152f,_0x18f7b3){return db['ChatQueueReport'][_0x463d('0x44')]({'where':{'id':_0x41152f[_0x463d('0x49')]['id']}})['then'](handleEntityNotFound(_0x18f7b3,null))['then'](removeEntity(_0x18f7b3,null))[_0x463d('0x45')](handleError(_0x18f7b3,null));};exports[_0x463d('0x4a')]=function(_0x217e9c,_0x1efc1f){return db[_0x463d('0x2b')][_0x463d('0x4a')]()[_0x463d('0x24')](respondWithResult(_0x1efc1f,null))[_0x463d('0x45')](handleError(_0x1efc1f,null));};
\ No newline at end of file
index 20e2157..a6a8381 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define','ChatQueueReport','report_chat_queue','uniqueid','lodash','util'];(function(_0x29210d,_0x45648b){var _0x4a66e6=function(_0x1ec623){while(--_0x1ec623){_0x29210d['push'](_0x29210d['shift']());}};_0x4a66e6(++_0x45648b);}(_0xe706,0xa3));var _0x6e70=function(_0xa1181c,_0x1724a4){_0xa1181c=_0xa1181c-0x0;var _0x1ef296=_0xe706[_0xa1181c];return _0x1ef296;};'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
+var _0xb10b=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define','report_chat_queue','uniqueid','lodash'];(function(_0x3b3750,_0x28f3b8){var _0x1b9e8b=function(_0xaf75c3){while(--_0xaf75c3){_0x3b3750['push'](_0x3b3750['shift']());}};_0x1b9e8b(++_0x28f3b8);}(_0xb10b,0x12a));var _0xbb10=function(_0x12742e,_0x43f6fa){_0x12742e=_0x12742e-0x0;var _0x173452=_0xb10b[_0x12742e];return _0x173452;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var logger=require(_0xbb10('0x1'))(_0xbb10('0x2'));var moment=require(_0xbb10('0x3'));var BPromise=require('bluebird');var rp=require(_0xbb10('0x4'));var fs=require('fs');var path=require(_0xbb10('0x5'));var rimraf=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var attributes=require(_0xbb10('0x8'));module[_0xbb10('0x9')]=function(_0x481979,_0x328583){return _0x481979[_0xbb10('0xa')]('ChatQueueReport',attributes,{'tableName':_0xbb10('0xb'),'paranoid':![],'indexes':[{'name':_0xbb10('0xc'),'fields':[_0xbb10('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 1f2e1e7..e1651f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5780=['UpdateChatQueueReport','update','raw','where','attributes','limit','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','ChatQueueReport,\x20%s,\x20%s','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','ChatQueueReport','body','options','CreateChatQueueReport','catch'];(function(_0x514167,_0xfc1d16){var _0x3a88e2=function(_0x5fb554){while(--_0x5fb554){_0x514167['push'](_0x514167['shift']());}};_0x3a88e2(++_0xfc1d16);}(_0x5780,0xed));var _0x0578=function(_0x189978,_0x48d117){_0x189978=_0x189978-0x0;var _0x1a7dc8=_0x5780[_0x189978];return _0x1a7dc8;};'use strict';var _=require('lodash');var util=require(_0x0578('0x0'));var moment=require(_0x0578('0x1'));var BPromise=require(_0x0578('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0578('0x3'));var db=require(_0x0578('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x0578('0x5'))(_0x0578('0x6'));var config=require('../../config/environment');var jayson=require(_0x0578('0x7'));var client=jayson[_0x0578('0x8')][_0x0578('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4de26f,_0x35bbdc,_0x23d3c5){return new BPromise(function(_0x2d8c67,_0x4ef661){return client[_0x0578('0xa')](_0x4de26f,_0x23d3c5)[_0x0578('0xb')](function(_0x3152ec){logger['info'](_0x0578('0xc'),_0x35bbdc,_0x0578('0xd'));logger[_0x0578('0xe')](_0x0578('0xf'),_0x35bbdc,_0x0578('0xd'),JSON[_0x0578('0x10')](_0x3152ec));if(_0x3152ec[_0x0578('0x11')]){if(_0x3152ec[_0x0578('0x11')][_0x0578('0x12')]===0x1f4){logger[_0x0578('0x11')](_0x0578('0xc'),_0x35bbdc,_0x3152ec[_0x0578('0x11')][_0x0578('0x13')]);return _0x4ef661(_0x3152ec[_0x0578('0x11')][_0x0578('0x13')]);}logger[_0x0578('0x11')](_0x0578('0xc'),_0x35bbdc,_0x3152ec[_0x0578('0x11')][_0x0578('0x13')]);return _0x2d8c67(_0x3152ec[_0x0578('0x11')][_0x0578('0x13')]);}else{logger[_0x0578('0x14')](_0x0578('0xc'),_0x35bbdc,_0x0578('0xd'));_0x2d8c67(_0x3152ec[_0x0578('0x15')]['message']);}})['catch'](function(_0x2965f6){logger[_0x0578('0x11')]('ChatQueueReport,\x20%s,\x20%s',_0x35bbdc,_0x2965f6);_0x4ef661(_0x2965f6);});});}exports['CreateChatQueueReport']=function(_0x10afba){var _0x3eebd0=this;return new Promise(function(_0x4ece78,_0x2615d0){return db[_0x0578('0x16')]['create'](_0x10afba[_0x0578('0x17')],{'raw':_0x10afba[_0x0578('0x18')]?_0x10afba[_0x0578('0x18')]['raw']===undefined?!![]:![]:!![]})[_0x0578('0xb')](function(_0x3d8d62){logger[_0x0578('0x14')](_0x0578('0x19'),_0x10afba);logger[_0x0578('0xe')](_0x0578('0x19'),_0x10afba,JSON[_0x0578('0x10')](_0x3d8d62));_0x4ece78(_0x3d8d62);})[_0x0578('0x1a')](function(_0x3298ad){logger[_0x0578('0x11')]('CreateChatQueueReport',_0x3298ad[_0x0578('0x13')],_0x10afba);_0x2615d0(_0x3eebd0[_0x0578('0x11')](0x1f4,_0x3298ad['message']));});});};exports[_0x0578('0x1b')]=function(_0x400135){var _0x1d540b=this;return new Promise(function(_0x5774f6,_0x5277a4){return db['ChatQueueReport'][_0x0578('0x1c')](_0x400135[_0x0578('0x17')],{'raw':_0x400135['options']?_0x400135['options'][_0x0578('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x400135[_0x0578('0x18')]?_0x400135[_0x0578('0x18')][_0x0578('0x1e')]||null:null,'attributes':_0x400135[_0x0578('0x18')]?_0x400135['options'][_0x0578('0x1f')]||null:null,'limit':_0x400135[_0x0578('0x18')]?_0x400135[_0x0578('0x18')][_0x0578('0x20')]||null:null})[_0x0578('0xb')](function(_0x3dbbc3){logger[_0x0578('0x14')](_0x0578('0x1b'),_0x400135);logger[_0x0578('0xe')]('UpdateChatQueueReport',_0x400135,JSON[_0x0578('0x10')](_0x3dbbc3));_0x5774f6(_0x3dbbc3);})['catch'](function(_0x40f014){logger[_0x0578('0x11')](_0x0578('0x1b'),_0x40f014[_0x0578('0x13')],_0x400135);_0x5277a4(_0x1d540b[_0x0578('0x11')](0x1f4,_0x40f014[_0x0578('0x13')]));});});};
\ No newline at end of file
+var _0x917a=['http','request','then','info','ChatQueueReport,\x20%s,\x20%s','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','CreateChatQueueReport','ChatQueueReport','create','body','options','raw','catch','UpdateChatQueueReport','update','limit','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc'];(function(_0x38dff0,_0x2a9eef){var _0x5ed1be=function(_0x263715){while(--_0x263715){_0x38dff0['push'](_0x38dff0['shift']());}};_0x5ed1be(++_0x2a9eef);}(_0x917a,0x173));var _0xa917=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x917a[_0x4a9fb1];return _0x348672;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xa917('0x0'));var BPromise=require(_0xa917('0x1'));var rs=require(_0xa917('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa917('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xa917('0x4'))(_0xa917('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xa917('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x3be995,_0x1fe3a0,_0x24ab73){return new BPromise(function(_0x4d3b0d,_0x58530d){return client[_0xa917('0x7')](_0x3be995,_0x24ab73)[_0xa917('0x8')](function(_0x4f8a58){logger[_0xa917('0x9')](_0xa917('0xa'),_0x1fe3a0,_0xa917('0xb'));logger[_0xa917('0xc')](_0xa917('0xd'),_0x1fe3a0,_0xa917('0xb'),JSON[_0xa917('0xe')](_0x4f8a58));if(_0x4f8a58[_0xa917('0xf')]){if(_0x4f8a58[_0xa917('0xf')][_0xa917('0x10')]===0x1f4){logger[_0xa917('0xf')](_0xa917('0xa'),_0x1fe3a0,_0x4f8a58[_0xa917('0xf')][_0xa917('0x11')]);return _0x58530d(_0x4f8a58[_0xa917('0xf')][_0xa917('0x11')]);}logger[_0xa917('0xf')]('ChatQueueReport,\x20%s,\x20%s',_0x1fe3a0,_0x4f8a58[_0xa917('0xf')][_0xa917('0x11')]);return _0x4d3b0d(_0x4f8a58[_0xa917('0xf')]['message']);}else{logger[_0xa917('0x9')]('ChatQueueReport,\x20%s,\x20%s',_0x1fe3a0,'request\x20sent');_0x4d3b0d(_0x4f8a58[_0xa917('0x12')][_0xa917('0x11')]);}})['catch'](function(_0x20619a){logger[_0xa917('0xf')]('ChatQueueReport,\x20%s,\x20%s',_0x1fe3a0,_0x20619a);_0x58530d(_0x20619a);});});}exports[_0xa917('0x13')]=function(_0x557742){var _0x3bcfd0=this;return new Promise(function(_0x4940bc,_0x410917){return db[_0xa917('0x14')][_0xa917('0x15')](_0x557742[_0xa917('0x16')],{'raw':_0x557742[_0xa917('0x17')]?_0x557742[_0xa917('0x17')][_0xa917('0x18')]===undefined?!![]:![]:!![]})[_0xa917('0x8')](function(_0x413686){logger[_0xa917('0x9')](_0xa917('0x13'),_0x557742);logger[_0xa917('0xc')](_0xa917('0x13'),_0x557742,JSON['stringify'](_0x413686));_0x4940bc(_0x413686);})[_0xa917('0x19')](function(_0x3f75a9){logger['error'](_0xa917('0x13'),_0x3f75a9[_0xa917('0x11')],_0x557742);_0x410917(_0x3bcfd0[_0xa917('0xf')](0x1f4,_0x3f75a9[_0xa917('0x11')]));});});};exports[_0xa917('0x1a')]=function(_0x3234e7){var _0x279f29=this;return new Promise(function(_0x50d6f2,_0x23161a){return db[_0xa917('0x14')][_0xa917('0x1b')](_0x3234e7[_0xa917('0x16')],{'raw':_0x3234e7[_0xa917('0x17')]?_0x3234e7[_0xa917('0x17')][_0xa917('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3234e7[_0xa917('0x17')]?_0x3234e7['options']['where']||null:null,'attributes':_0x3234e7[_0xa917('0x17')]?_0x3234e7[_0xa917('0x17')]['attributes']||null:null,'limit':_0x3234e7[_0xa917('0x17')]?_0x3234e7['options'][_0xa917('0x1c')]||null:null})[_0xa917('0x8')](function(_0x1ccfc0){logger[_0xa917('0x9')](_0xa917('0x1a'),_0x3234e7);logger[_0xa917('0xc')](_0xa917('0x1a'),_0x3234e7,JSON[_0xa917('0xe')](_0x1ccfc0));_0x50d6f2(_0x1ccfc0);})['catch'](function(_0x3d2696){logger[_0xa917('0xf')](_0xa917('0x1a'),_0x3d2696['message'],_0x3234e7);_0x23161a(_0x279f29[_0xa917('0xf')](0x1f4,_0x3d2696['message']));});});};
\ No newline at end of file
index 0c6b8d2..56556f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c8e=['update','destroy','exports','util','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatQueueReport.controller','get','isAuthenticated','index','/describe','/:id','show','post','create','put'];(function(_0xa1422,_0x4a7809){var _0x3b87fb=function(_0x1a921d){while(--_0x1a921d){_0xa1422['push'](_0xa1422['shift']());}};_0x3b87fb(++_0x4a7809);}(_0x1c8e,0x159));var _0xe1c8=function(_0x5b6670,_0x10fa2c){_0x5b6670=_0x5b6670-0x0;var _0x11714c=_0x1c8e[_0x5b6670];return _0x11714c;};'use strict';var multer=require('multer');var util=require(_0xe1c8('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xe1c8('0x1'));var router=express[_0xe1c8('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xe1c8('0x3'));var interaction=require(_0xe1c8('0x4'));var config=require(_0xe1c8('0x5'));var controller=require(_0xe1c8('0x6'));router[_0xe1c8('0x7')]('/',auth[_0xe1c8('0x8')](),controller[_0xe1c8('0x9')]);router[_0xe1c8('0x7')](_0xe1c8('0xa'),auth[_0xe1c8('0x8')](),controller['describe']);router['get'](_0xe1c8('0xb'),auth['isAuthenticated'](),controller[_0xe1c8('0xc')]);router[_0xe1c8('0xd')]('/',auth['isAuthenticated'](),controller[_0xe1c8('0xe')]);router[_0xe1c8('0xf')](_0xe1c8('0xb'),auth[_0xe1c8('0x8')](),controller[_0xe1c8('0x10')]);router['delete'](_0xe1c8('0xb'),auth[_0xe1c8('0x8')](),controller[_0xe1c8('0x11')]);module[_0xe1c8('0x12')]=router;
\ No newline at end of file
+var _0xb926=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','update','delete','destroy','exports','multer','util','path','express','Router'];(function(_0x3baa0e,_0x3df81a){var _0x432af7=function(_0x390d31){while(--_0x390d31){_0x3baa0e['push'](_0x3baa0e['shift']());}};_0x432af7(++_0x3df81a);}(_0xb926,0x121));var _0x6b92=function(_0x49fc8f,_0x10c63e){_0x49fc8f=_0x49fc8f-0x0;var _0x1a338f=_0xb926[_0x49fc8f];return _0x1a338f;};'use strict';var multer=require(_0x6b92('0x0'));var util=require(_0x6b92('0x1'));var path=require(_0x6b92('0x2'));var timeout=require('connect-timeout');var express=require(_0x6b92('0x3'));var router=express[_0x6b92('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x6b92('0x5'));var interaction=require(_0x6b92('0x6'));var config=require(_0x6b92('0x7'));var controller=require('./chatQueueReport.controller');router[_0x6b92('0x8')]('/',auth[_0x6b92('0x9')](),controller[_0x6b92('0xa')]);router[_0x6b92('0x8')](_0x6b92('0xb'),auth[_0x6b92('0x9')](),controller[_0x6b92('0xc')]);router['get'](_0x6b92('0xd'),auth[_0x6b92('0x9')](),controller[_0x6b92('0xe')]);router[_0x6b92('0xf')]('/',auth[_0x6b92('0x9')](),controller[_0x6b92('0x10')]);router['put']('/:id',auth[_0x6b92('0x9')](),controller[_0x6b92('0x11')]);router[_0x6b92('0x12')](_0x6b92('0xd'),auth['isAuthenticated'](),controller[_0x6b92('0x13')]);module[_0x6b92('0x14')]=router;
\ No newline at end of file
index 988487b..90bdb2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0x1d383c,_0x3e832f){var _0x31f35e=function(_0x1f7b1c){while(--_0x1f7b1c){_0x1d383c['push'](_0x1d383c['shift']());}};_0x31f35e(++_0x3e832f);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x3fe6df,_0x5a04d4){_0x3fe6df=_0x3fe6df-0x0;var _0x372a0e=_0xcb91[_0x3fe6df];return _0x372a0e;};'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 _0xaa88=['account','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x5ebbe0,_0x2cc634){var _0x240399=function(_0x3dade1){while(--_0x3dade1){_0x5ebbe0['push'](_0x5ebbe0['shift']());}};_0x240399(++_0x2cc634);}(_0xaa88,0x137));var _0x8aa8=function(_0x3e32a8,_0x255953){_0x3e32a8=_0x3e32a8-0x0;var _0x2997b0=_0xaa88[_0x3e32a8];return _0x2997b0;};'use strict';var moment=require(_0x8aa8('0x0'));var Sequelize=require(_0x8aa8('0x1'));module[_0x8aa8('0x2')]={'uniqueid':{'type':Sequelize[_0x8aa8('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x8aa8('0x4'),_0x8aa8('0x5'),_0x8aa8('0x6')),'allowNull':![],'defaultValue':_0x8aa8('0x6')},'transferredAt':{'type':Sequelize[_0x8aa8('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x8aa8('0x8')]}};
\ No newline at end of file
index d187704..19b9943 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3af0=['count','set','Content-Range','json','apply','then','destroy','sendStatus','error','stack','name','send','index','map','ChatTransferReport','rawAttributes','fieldName','type','key','model','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','options','include','findAll','catch','show','params','keys','includeAll','merge','find','create','body','update','describe','eml-format','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/license/util','status','end','offset','undefined','limit'];(function(_0x4d3bcb,_0x5af0fe){var _0x594212=function(_0x3cd28d){while(--_0x3cd28d){_0x4d3bcb['push'](_0x4d3bcb['shift']());}};_0x594212(++_0x5af0fe);}(_0x3af0,0x7a));var _0x03af=function(_0x38ba95,_0x2771ae){_0x38ba95=_0x38ba95-0x0;var _0x1f1d33=_0x3af0[_0x38ba95];return _0x1f1d33;};'use strict';var emlformat=require(_0x03af('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x03af('0x1'));var moment=require(_0x03af('0x2'));var BPromise=require(_0x03af('0x3'));var Mustache=require(_0x03af('0x4'));var util=require(_0x03af('0x5'));var path=require(_0x03af('0x6'));var sox=require(_0x03af('0x7'));var csv=require(_0x03af('0x8'));var ejs=require(_0x03af('0x9'));var fs=require('fs');var fs_extra=require(_0x03af('0xa'));var _=require(_0x03af('0xb'));var squel=require('squel');var crypto=require(_0x03af('0xc'));var jsforce=require(_0x03af('0xd'));var deskjs=require(_0x03af('0xe'));var toCsv=require(_0x03af('0x8'));var querystring=require(_0x03af('0xf'));var Papa=require(_0x03af('0x10'));var Redis=require(_0x03af('0x11'));var authService=require(_0x03af('0x12'));var qs=require(_0x03af('0x13'));var as=require(_0x03af('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x03af('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x03af('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xdd0da,_0x2f2ee0){_0x2f2ee0=_0x2f2ee0||0xcc;return function(_0x211204){if(_0x211204){return _0xdd0da['sendStatus'](_0x2f2ee0);}return _0xdd0da[_0x03af('0x17')](_0x2f2ee0)[_0x03af('0x18')]();};}function respondWithResult(_0x4ae4af,_0x242b38){_0x242b38=_0x242b38||0xc8;return function(_0x29faa6){if(_0x29faa6){return _0x4ae4af[_0x03af('0x17')](_0x242b38)['json'](_0x29faa6);}};}function respondWithFilteredResult(_0x1ec51a,_0x3b09ba){return function(_0x505ffc){if(_0x505ffc){var _0x5acac4=typeof _0x3b09ba[_0x03af('0x19')]===_0x03af('0x1a')&&typeof _0x3b09ba[_0x03af('0x1b')]===_0x03af('0x1a');var _0x2ff018=_0x505ffc[_0x03af('0x1c')];var _0x2764c6=_0x5acac4?0x0:_0x3b09ba[_0x03af('0x19')];var _0x3403d9=_0x5acac4?_0x505ffc[_0x03af('0x1c')]:_0x3b09ba[_0x03af('0x19')]+_0x3b09ba[_0x03af('0x1b')];var _0x406c72;if(_0x3403d9>=_0x2ff018){_0x3403d9=_0x2ff018;_0x406c72=0xc8;}else{_0x406c72=0xce;}_0x1ec51a[_0x03af('0x17')](_0x406c72);return _0x1ec51a[_0x03af('0x1d')](_0x03af('0x1e'),_0x2764c6+'-'+_0x3403d9+'/'+_0x2ff018)[_0x03af('0x1f')](_0x505ffc);}return null;};}function patchUpdates(_0x14ec3f){return function(_0x5409c9){try{jsonpatch[_0x03af('0x20')](_0x5409c9,_0x14ec3f,!![]);}catch(_0x2a9402){return BPromise['reject'](_0x2a9402);}return _0x5409c9['save']();};}function saveUpdates(_0x1002ec,_0xa5a2be){return function(_0x4f30a7){if(_0x4f30a7){return _0x4f30a7['update'](_0x1002ec)[_0x03af('0x21')](function(_0x175e16){return _0x175e16;});}return null;};}function removeEntity(_0x11ba0f,_0x11ef06){return function(_0x514d46){if(_0x514d46){return _0x514d46[_0x03af('0x22')]()[_0x03af('0x21')](function(){_0x11ba0f[_0x03af('0x17')](0xcc)[_0x03af('0x18')]();});}};}function handleEntityNotFound(_0x1a8690,_0x1fc081){return function(_0x47fd73){if(!_0x47fd73){_0x1a8690[_0x03af('0x23')](0x194);}return _0x47fd73;};}function handleError(_0x65c145,_0x34274a){_0x34274a=_0x34274a||0x1f4;return function(_0x1205aa){logger[_0x03af('0x24')](_0x1205aa[_0x03af('0x25')]);if(_0x1205aa['name']){delete _0x1205aa[_0x03af('0x26')];}_0x65c145[_0x03af('0x17')](_0x34274a)[_0x03af('0x27')](_0x1205aa);};}exports[_0x03af('0x28')]=function(_0x1ba3c1,_0x33b6b9){var _0x5b4049={},_0x3e4a3b={},_0x54813e={'count':0x0,'rows':[]};var _0x91fa85=_[_0x03af('0x29')](db[_0x03af('0x2a')][_0x03af('0x2b')],function(_0xe8f5d){return{'name':_0xe8f5d[_0x03af('0x2c')],'type':_0xe8f5d[_0x03af('0x2d')][_0x03af('0x2e')]};});_0x3e4a3b[_0x03af('0x2f')]=_[_0x03af('0x29')](_0x91fa85,_0x03af('0x26'));_0x3e4a3b['query']=_['keys'](_0x1ba3c1['query']);_0x3e4a3b[_0x03af('0x30')]=_[_0x03af('0x31')](_0x3e4a3b['model'],_0x3e4a3b[_0x03af('0x32')]);_0x5b4049[_0x03af('0x33')]=_['intersection'](_0x3e4a3b['model'],qs[_0x03af('0x34')](_0x1ba3c1['query']['fields']));_0x5b4049[_0x03af('0x33')]=_0x5b4049[_0x03af('0x33')][_0x03af('0x35')]?_0x5b4049['attributes']:_0x3e4a3b[_0x03af('0x2f')];if(!_0x1ba3c1[_0x03af('0x32')][_0x03af('0x36')](_0x03af('0x37'))){_0x5b4049[_0x03af('0x1b')]=qs[_0x03af('0x1b')](_0x1ba3c1[_0x03af('0x32')][_0x03af('0x1b')]);_0x5b4049[_0x03af('0x19')]=qs[_0x03af('0x19')](_0x1ba3c1['query'][_0x03af('0x19')]);}_0x5b4049[_0x03af('0x38')]=qs[_0x03af('0x39')](_0x1ba3c1['query'][_0x03af('0x39')]);_0x5b4049['where']=qs[_0x03af('0x30')](_[_0x03af('0x3a')](_0x1ba3c1['query'],_0x3e4a3b['filters']),_0x91fa85);if(_0x1ba3c1[_0x03af('0x32')][_0x03af('0x3b')]){_0x5b4049[_0x03af('0x3c')]=_['merge'](_0x5b4049[_0x03af('0x3c')],{'$or':_[_0x03af('0x29')](_0x91fa85,function(_0xefba7){if(_0xefba7[_0x03af('0x2d')]!=='VIRTUAL'){var _0x30351f={};_0x30351f[_0xefba7[_0x03af('0x26')]]={'$like':'%'+_0x1ba3c1[_0x03af('0x32')][_0x03af('0x3b')]+'%'};return _0x30351f;}})});}_0x5b4049=_['merge']({},_0x5b4049,_0x1ba3c1[_0x03af('0x3d')]);var _0x5f23cf={'where':_0x5b4049['where']};return db['ChatTransferReport'][_0x03af('0x1c')](_0x5f23cf)[_0x03af('0x21')](function(_0x3bcb89){_0x54813e[_0x03af('0x1c')]=_0x3bcb89;if(_0x1ba3c1['query']['includeAll']){_0x5b4049[_0x03af('0x3e')]=[{'all':!![]}];}return db['ChatTransferReport'][_0x03af('0x3f')](_0x5b4049);})[_0x03af('0x21')](function(_0x2226e7){_0x54813e['rows']=_0x2226e7;return _0x54813e;})['then'](respondWithFilteredResult(_0x33b6b9,_0x5b4049))[_0x03af('0x40')](handleError(_0x33b6b9,null));};exports[_0x03af('0x41')]=function(_0x51196c,_0x4f0b0f){var _0x5485c3={'raw':!![],'where':{'id':_0x51196c[_0x03af('0x42')]['id']}},_0x554363={};_0x554363[_0x03af('0x2f')]=_[_0x03af('0x43')](db['ChatTransferReport']['rawAttributes']);_0x554363[_0x03af('0x32')]=_[_0x03af('0x43')](_0x51196c[_0x03af('0x32')]);_0x554363[_0x03af('0x30')]=_[_0x03af('0x31')](_0x554363['model'],_0x554363[_0x03af('0x32')]);_0x5485c3[_0x03af('0x33')]=_[_0x03af('0x31')](_0x554363['model'],qs[_0x03af('0x34')](_0x51196c[_0x03af('0x32')]['fields']));_0x5485c3[_0x03af('0x33')]=_0x5485c3[_0x03af('0x33')]['length']?_0x5485c3['attributes']:_0x554363['model'];if(_0x51196c['query'][_0x03af('0x44')]){_0x5485c3[_0x03af('0x3e')]=[{'all':!![]}];}_0x5485c3=_[_0x03af('0x45')]({},_0x5485c3,_0x51196c[_0x03af('0x3d')]);return db[_0x03af('0x2a')][_0x03af('0x46')](_0x5485c3)[_0x03af('0x21')](handleEntityNotFound(_0x4f0b0f,null))['then'](respondWithResult(_0x4f0b0f,null))['catch'](handleError(_0x4f0b0f,null));};exports[_0x03af('0x47')]=function(_0x428834,_0x2af36){return db[_0x03af('0x2a')][_0x03af('0x47')](_0x428834[_0x03af('0x48')],{})[_0x03af('0x21')](respondWithResult(_0x2af36,0xc9))[_0x03af('0x40')](handleError(_0x2af36,null));};exports[_0x03af('0x49')]=function(_0x161394,_0x582141){if(_0x161394['body']['id']){delete _0x161394[_0x03af('0x48')]['id'];}return db[_0x03af('0x2a')]['find']({'where':{'id':_0x161394[_0x03af('0x42')]['id']}})[_0x03af('0x21')](handleEntityNotFound(_0x582141,null))[_0x03af('0x21')](saveUpdates(_0x161394[_0x03af('0x48')],null))[_0x03af('0x21')](respondWithResult(_0x582141,null))[_0x03af('0x40')](handleError(_0x582141,null));};exports[_0x03af('0x22')]=function(_0x4a706a,_0x520247){return db[_0x03af('0x2a')][_0x03af('0x46')]({'where':{'id':_0x4a706a[_0x03af('0x42')]['id']}})[_0x03af('0x21')](handleEntityNotFound(_0x520247,null))['then'](removeEntity(_0x520247,null))[_0x03af('0x40')](handleError(_0x520247,null));};exports['describe']=function(_0x282a5f,_0x58585d){return db[_0x03af('0x2a')][_0x03af('0x4a')]()[_0x03af('0x21')](respondWithResult(_0x58585d,null))['catch'](handleError(_0x58585d,null));};
\ No newline at end of file
+var _0x6662=['model','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','ChatTransferReport','includeAll','include','findAll','catch','params','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','fs-extra','squel','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','query','keys','filters','intersection'];(function(_0x34d95d,_0x5b503d){var _0x302ea6=function(_0x3f71ff){while(--_0x3f71ff){_0x34d95d['push'](_0x34d95d['shift']());}};_0x302ea6(++_0x5b503d);}(_0x6662,0xaf));var _0x2666=function(_0x38a040,_0x1cb9c3){_0x38a040=_0x38a040-0x0;var _0x50e92f=_0x6662[_0x38a040];return _0x50e92f;};'use strict';var emlformat=require(_0x2666('0x0'));var rimraf=require(_0x2666('0x1'));var zipdir=require(_0x2666('0x2'));var jsonpatch=require(_0x2666('0x3'));var rp=require(_0x2666('0x4'));var moment=require(_0x2666('0x5'));var BPromise=require(_0x2666('0x6'));var Mustache=require(_0x2666('0x7'));var util=require(_0x2666('0x8'));var path=require(_0x2666('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2666('0xa'));var _=require('lodash');var squel=require(_0x2666('0xb'));var crypto=require('crypto');var jsforce=require(_0x2666('0xc'));var deskjs=require(_0x2666('0xd'));var toCsv=require(_0x2666('0xe'));var querystring=require(_0x2666('0xf'));var Papa=require('papaparse');var Redis=require(_0x2666('0x10'));var authService=require(_0x2666('0x11'));var qs=require(_0x2666('0x12'));var as=require(_0x2666('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2666('0x14'))(_0x2666('0x15'));var utils=require(_0x2666('0x16'));var config=require(_0x2666('0x17'));var licenseUtil=require(_0x2666('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x113e92,_0x238394){_0x238394=_0x238394||0xcc;return function(_0x224c90){if(_0x224c90){return _0x113e92[_0x2666('0x19')](_0x238394);}return _0x113e92[_0x2666('0x1a')](_0x238394)[_0x2666('0x1b')]();};}function respondWithResult(_0x5d9a77,_0x2e9da6){_0x2e9da6=_0x2e9da6||0xc8;return function(_0x2fa166){if(_0x2fa166){return _0x5d9a77[_0x2666('0x1a')](_0x2e9da6)[_0x2666('0x1c')](_0x2fa166);}};}function respondWithFilteredResult(_0x2013a9,_0x4de2bf){return function(_0x571c58){if(_0x571c58){var _0x35684d=typeof _0x4de2bf['offset']===_0x2666('0x1d')&&typeof _0x4de2bf[_0x2666('0x1e')]===_0x2666('0x1d');var _0x5df833=_0x571c58[_0x2666('0x1f')];var _0x26a4ff=_0x35684d?0x0:_0x4de2bf[_0x2666('0x20')];var _0x460dfc=_0x35684d?_0x571c58[_0x2666('0x1f')]:_0x4de2bf[_0x2666('0x20')]+_0x4de2bf[_0x2666('0x1e')];var _0x5198b2;if(_0x460dfc>=_0x5df833){_0x460dfc=_0x5df833;_0x5198b2=0xc8;}else{_0x5198b2=0xce;}_0x2013a9[_0x2666('0x1a')](_0x5198b2);return _0x2013a9[_0x2666('0x21')](_0x2666('0x22'),_0x26a4ff+'-'+_0x460dfc+'/'+_0x5df833)['json'](_0x571c58);}return null;};}function patchUpdates(_0xe0ce37){return function(_0x35c378){try{jsonpatch['apply'](_0x35c378,_0xe0ce37,!![]);}catch(_0x4aff82){return BPromise[_0x2666('0x23')](_0x4aff82);}return _0x35c378[_0x2666('0x24')]();};}function saveUpdates(_0x1e57c2,_0x364e70){return function(_0x346005){if(_0x346005){return _0x346005[_0x2666('0x25')](_0x1e57c2)[_0x2666('0x26')](function(_0x3a42ec){return _0x3a42ec;});}return null;};}function removeEntity(_0x53b07b,_0x46ef6b){return function(_0x52e937){if(_0x52e937){return _0x52e937[_0x2666('0x27')]()[_0x2666('0x26')](function(){_0x53b07b['status'](0xcc)[_0x2666('0x1b')]();});}};}function handleEntityNotFound(_0x97f05e,_0x2d44f2){return function(_0x1091b5){if(!_0x1091b5){_0x97f05e[_0x2666('0x19')](0x194);}return _0x1091b5;};}function handleError(_0xeed8c,_0xe30b34){_0xe30b34=_0xe30b34||0x1f4;return function(_0x3890cf){logger[_0x2666('0x28')](_0x3890cf[_0x2666('0x29')]);if(_0x3890cf[_0x2666('0x2a')]){delete _0x3890cf['name'];}_0xeed8c[_0x2666('0x1a')](_0xe30b34)[_0x2666('0x2b')](_0x3890cf);};}exports[_0x2666('0x2c')]=function(_0x14628,_0x879360){var _0x2609e2={},_0x3ad694={},_0x3c6230={'count':0x0,'rows':[]};var _0x44c0ef=_[_0x2666('0x2d')](db['ChatTransferReport'][_0x2666('0x2e')],function(_0x21c230){return{'name':_0x21c230[_0x2666('0x2f')],'type':_0x21c230[_0x2666('0x30')]['key']};});_0x3ad694['model']=_[_0x2666('0x2d')](_0x44c0ef,_0x2666('0x2a'));_0x3ad694[_0x2666('0x31')]=_[_0x2666('0x32')](_0x14628[_0x2666('0x31')]);_0x3ad694[_0x2666('0x33')]=_[_0x2666('0x34')](_0x3ad694[_0x2666('0x35')],_0x3ad694[_0x2666('0x31')]);_0x2609e2['attributes']=_[_0x2666('0x34')](_0x3ad694[_0x2666('0x35')],qs[_0x2666('0x36')](_0x14628[_0x2666('0x31')][_0x2666('0x36')]));_0x2609e2[_0x2666('0x37')]=_0x2609e2[_0x2666('0x37')][_0x2666('0x38')]?_0x2609e2[_0x2666('0x37')]:_0x3ad694[_0x2666('0x35')];if(!_0x14628['query'][_0x2666('0x39')]('nolimit')){_0x2609e2[_0x2666('0x1e')]=qs[_0x2666('0x1e')](_0x14628[_0x2666('0x31')][_0x2666('0x1e')]);_0x2609e2[_0x2666('0x20')]=qs[_0x2666('0x20')](_0x14628[_0x2666('0x31')]['offset']);}_0x2609e2[_0x2666('0x3a')]=qs[_0x2666('0x3b')](_0x14628[_0x2666('0x31')]['sort']);_0x2609e2[_0x2666('0x3c')]=qs[_0x2666('0x33')](_[_0x2666('0x3d')](_0x14628[_0x2666('0x31')],_0x3ad694[_0x2666('0x33')]),_0x44c0ef);if(_0x14628[_0x2666('0x31')][_0x2666('0x3e')]){_0x2609e2[_0x2666('0x3c')]=_[_0x2666('0x3f')](_0x2609e2[_0x2666('0x3c')],{'$or':_[_0x2666('0x2d')](_0x44c0ef,function(_0x38e07f){if(_0x38e07f['type']!==_0x2666('0x40')){var _0x555c53={};_0x555c53[_0x38e07f[_0x2666('0x2a')]]={'$like':'%'+_0x14628[_0x2666('0x31')]['filter']+'%'};return _0x555c53;}})});}_0x2609e2=_[_0x2666('0x3f')]({},_0x2609e2,_0x14628[_0x2666('0x41')]);var _0xfe3db={'where':_0x2609e2[_0x2666('0x3c')]};return db[_0x2666('0x42')]['count'](_0xfe3db)['then'](function(_0x49267f){_0x3c6230['count']=_0x49267f;if(_0x14628['query'][_0x2666('0x43')]){_0x2609e2[_0x2666('0x44')]=[{'all':!![]}];}return db['ChatTransferReport'][_0x2666('0x45')](_0x2609e2);})[_0x2666('0x26')](function(_0x39d76e){_0x3c6230['rows']=_0x39d76e;return _0x3c6230;})[_0x2666('0x26')](respondWithFilteredResult(_0x879360,_0x2609e2))[_0x2666('0x46')](handleError(_0x879360,null));};exports['show']=function(_0x4b8011,_0x4bf3ce){var _0x337ef9={'raw':!![],'where':{'id':_0x4b8011[_0x2666('0x47')]['id']}},_0x2ef539={};_0x2ef539[_0x2666('0x35')]=_['keys'](db['ChatTransferReport'][_0x2666('0x2e')]);_0x2ef539[_0x2666('0x31')]=_[_0x2666('0x32')](_0x4b8011[_0x2666('0x31')]);_0x2ef539[_0x2666('0x33')]=_[_0x2666('0x34')](_0x2ef539['model'],_0x2ef539[_0x2666('0x31')]);_0x337ef9[_0x2666('0x37')]=_[_0x2666('0x34')](_0x2ef539[_0x2666('0x35')],qs[_0x2666('0x36')](_0x4b8011[_0x2666('0x31')][_0x2666('0x36')]));_0x337ef9[_0x2666('0x37')]=_0x337ef9[_0x2666('0x37')][_0x2666('0x38')]?_0x337ef9[_0x2666('0x37')]:_0x2ef539[_0x2666('0x35')];if(_0x4b8011[_0x2666('0x31')]['includeAll']){_0x337ef9['include']=[{'all':!![]}];}_0x337ef9=_[_0x2666('0x3f')]({},_0x337ef9,_0x4b8011['options']);return db[_0x2666('0x42')][_0x2666('0x48')](_0x337ef9)[_0x2666('0x26')](handleEntityNotFound(_0x4bf3ce,null))['then'](respondWithResult(_0x4bf3ce,null))[_0x2666('0x46')](handleError(_0x4bf3ce,null));};exports[_0x2666('0x49')]=function(_0x5587da,_0x24ebb8){return db['ChatTransferReport']['create'](_0x5587da[_0x2666('0x4a')],{})[_0x2666('0x26')](respondWithResult(_0x24ebb8,0xc9))['catch'](handleError(_0x24ebb8,null));};exports[_0x2666('0x25')]=function(_0x3c2d1e,_0x1d1e4f){if(_0x3c2d1e[_0x2666('0x4a')]['id']){delete _0x3c2d1e['body']['id'];}return db[_0x2666('0x42')][_0x2666('0x48')]({'where':{'id':_0x3c2d1e[_0x2666('0x47')]['id']}})[_0x2666('0x26')](handleEntityNotFound(_0x1d1e4f,null))['then'](saveUpdates(_0x3c2d1e[_0x2666('0x4a')],null))[_0x2666('0x26')](respondWithResult(_0x1d1e4f,null))[_0x2666('0x46')](handleError(_0x1d1e4f,null));};exports['destroy']=function(_0x2e243a,_0x4ff844){return db[_0x2666('0x42')][_0x2666('0x48')]({'where':{'id':_0x2e243a[_0x2666('0x47')]['id']}})['then'](handleEntityNotFound(_0x4ff844,null))[_0x2666('0x26')](removeEntity(_0x4ff844,null))[_0x2666('0x46')](handleError(_0x4ff844,null));};exports[_0x2666('0x4b')]=function(_0x54145c,_0x1e86db){return db[_0x2666('0x42')][_0x2666('0x4b')]()[_0x2666('0x26')](respondWithResult(_0x1e86db,null))['catch'](handleError(_0x1e86db,null));};
\ No newline at end of file
index 9c787fa..2483b7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x883b=['../../config/environment','./chatTransferReport.attributes','ChatTransferReport','report_chat_transfer','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x1cb1a0,_0x538a27){var _0x23d48e=function(_0x101f74){while(--_0x101f74){_0x1cb1a0['push'](_0x1cb1a0['shift']());}};_0x23d48e(++_0x538a27);}(_0x883b,0x12b));var _0xb883=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x883b[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xb883('0x0'));var util=require(_0xb883('0x1'));var logger=require(_0xb883('0x2'))(_0xb883('0x3'));var moment=require(_0xb883('0x4'));var BPromise=require(_0xb883('0x5'));var rp=require(_0xb883('0x6'));var fs=require('fs');var path=require(_0xb883('0x7'));var rimraf=require(_0xb883('0x8'));var config=require(_0xb883('0x9'));var attributes=require(_0xb883('0xa'));module['exports']=function(_0x5d4493,_0x43871e){return _0x5d4493['define'](_0xb883('0xb'),attributes,{'tableName':_0xb883('0xc'),'paranoid':![],'indexes':[{'name':_0xb883('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1948=['../../config/environment','exports','ChatTransferReport','report_chat_transfer','uniqueid','lodash','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x5c0570,_0x6adc25){var _0x3611ca=function(_0x4065ab){while(--_0x4065ab){_0x5c0570['push'](_0x5c0570['shift']());}};_0x3611ca(++_0x6adc25);}(_0x1948,0x71));var _0x8194=function(_0xb5a41,_0x200edb){_0xb5a41=_0xb5a41-0x0;var _0x6d1194=_0x1948[_0xb5a41];return _0x6d1194;};'use strict';var _=require(_0x8194('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x8194('0x1'));var moment=require(_0x8194('0x2'));var BPromise=require(_0x8194('0x3'));var rp=require(_0x8194('0x4'));var fs=require('fs');var path=require(_0x8194('0x5'));var rimraf=require(_0x8194('0x6'));var config=require(_0x8194('0x7'));var attributes=require('./chatTransferReport.attributes');module[_0x8194('0x8')]=function(_0x4bed85,_0x58ce03){return _0x4bed85['define'](_0x8194('0x9'),attributes,{'tableName':_0x8194('0xa'),'paranoid':![],'indexes':[{'name':_0x8194('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index ad5623f..cdb4399 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca00=['stringify','error','code','message','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','info','ChatTransferReport,\x20%s,\x20%s','request\x20sent','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s'];(function(_0x481f56,_0x3bf561){var _0x573804=function(_0x4d85f7){while(--_0x4d85f7){_0x481f56['push'](_0x481f56['shift']());}};_0x573804(++_0x3bf561);}(_0xca00,0xa0));var _0x0ca0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xca00[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x0ca0('0x0'));var util=require(_0x0ca0('0x1'));var moment=require('moment');var BPromise=require(_0x0ca0('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0ca0('0x3'));var db=require(_0x0ca0('0x4'))['db'];var utils=require(_0x0ca0('0x5'));var logger=require('../../config/logger')(_0x0ca0('0x6'));var config=require('../../config/environment');var jayson=require(_0x0ca0('0x7'));var client=jayson[_0x0ca0('0x8')][_0x0ca0('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x453331,_0x36e26e,_0x24c2eb){return new BPromise(function(_0x237e8a,_0x69d38c){return client[_0x0ca0('0xa')](_0x453331,_0x24c2eb)['then'](function(_0x26c848){logger[_0x0ca0('0xb')](_0x0ca0('0xc'),_0x36e26e,_0x0ca0('0xd'));logger[_0x0ca0('0xe')](_0x0ca0('0xf'),_0x36e26e,'request\x20sent',JSON[_0x0ca0('0x10')](_0x26c848));if(_0x26c848[_0x0ca0('0x11')]){if(_0x26c848[_0x0ca0('0x11')][_0x0ca0('0x12')]===0x1f4){logger[_0x0ca0('0x11')](_0x0ca0('0xc'),_0x36e26e,_0x26c848[_0x0ca0('0x11')][_0x0ca0('0x13')]);return _0x69d38c(_0x26c848[_0x0ca0('0x11')][_0x0ca0('0x13')]);}logger[_0x0ca0('0x11')]('ChatTransferReport,\x20%s,\x20%s',_0x36e26e,_0x26c848['error']['message']);return _0x237e8a(_0x26c848[_0x0ca0('0x11')][_0x0ca0('0x13')]);}else{logger[_0x0ca0('0xb')](_0x0ca0('0xc'),_0x36e26e,'request\x20sent');_0x237e8a(_0x26c848[_0x0ca0('0x14')][_0x0ca0('0x13')]);}})[_0x0ca0('0x15')](function(_0x5c3de4){logger[_0x0ca0('0x11')](_0x0ca0('0xc'),_0x36e26e,_0x5c3de4);_0x69d38c(_0x5c3de4);});});}
\ No newline at end of file
+var _0x822b=['client','http','request','then','info','request\x20sent','debug','error','code','message','ChatTransferReport,\x20%s,\x20%s','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','jayson/promise'];(function(_0x17afd2,_0x4deb5e){var _0x3c7fec=function(_0x10a031){while(--_0x10a031){_0x17afd2['push'](_0x17afd2['shift']());}};_0x3c7fec(++_0x4deb5e);}(_0x822b,0x183));var _0xb822=function(_0x58f923,_0x2ac4a7){_0x58f923=_0x58f923-0x0;var _0x12088c=_0x822b[_0x58f923];return _0x12088c;};'use strict';var _=require(_0xb822('0x0'));var util=require(_0xb822('0x1'));var moment=require(_0xb822('0x2'));var BPromise=require(_0xb822('0x3'));var rs=require(_0xb822('0x4'));var fs=require('fs');var Redis=require(_0xb822('0x5'));var db=require(_0xb822('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xb822('0x7'));var config=require('../../config/environment');var jayson=require(_0xb822('0x8'));var client=jayson[_0xb822('0x9')][_0xb822('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x38b1d6,_0x9b03a1,_0x5968ff){return new BPromise(function(_0x4db15f,_0x3669db){return client[_0xb822('0xb')](_0x38b1d6,_0x5968ff)[_0xb822('0xc')](function(_0x2005fb){logger[_0xb822('0xd')]('ChatTransferReport,\x20%s,\x20%s',_0x9b03a1,_0xb822('0xe'));logger[_0xb822('0xf')]('ChatTransferReport,\x20%s,\x20%s,\x20%s',_0x9b03a1,_0xb822('0xe'),JSON['stringify'](_0x2005fb));if(_0x2005fb[_0xb822('0x10')]){if(_0x2005fb[_0xb822('0x10')][_0xb822('0x11')]===0x1f4){logger[_0xb822('0x10')]('ChatTransferReport,\x20%s,\x20%s',_0x9b03a1,_0x2005fb[_0xb822('0x10')][_0xb822('0x12')]);return _0x3669db(_0x2005fb['error']['message']);}logger[_0xb822('0x10')](_0xb822('0x13'),_0x9b03a1,_0x2005fb[_0xb822('0x10')][_0xb822('0x12')]);return _0x4db15f(_0x2005fb[_0xb822('0x10')][_0xb822('0x12')]);}else{logger['info'](_0xb822('0x13'),_0x9b03a1,'request\x20sent');_0x4db15f(_0x2005fb[_0xb822('0x14')][_0xb822('0x12')]);}})[_0xb822('0x15')](function(_0x4c860f){logger[_0xb822('0x10')](_0xb822('0x13'),_0x9b03a1,_0x4c860f);_0x3669db(_0x4c860f);});});}
\ No newline at end of file
index 5579c00..93648a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5700=['update','delete','/:id','destroy','exports','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatTransferReport.controller','isAuthenticated','index','get','/describe','describe','show','post','create','put'];(function(_0x58eed6,_0x49a046){var _0x381fa7=function(_0x1ebf98){while(--_0x1ebf98){_0x58eed6['push'](_0x58eed6['shift']());}};_0x381fa7(++_0x49a046);}(_0x5700,0x191));var _0x0570=function(_0xce8629,_0x530a76){_0xce8629=_0xce8629-0x0;var _0x649762=_0x5700[_0xce8629];return _0x649762;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x0570('0x0'));var timeout=require(_0x0570('0x1'));var express=require('express');var router=express[_0x0570('0x2')]();var fs_extra=require(_0x0570('0x3'));var auth=require(_0x0570('0x4'));var interaction=require(_0x0570('0x5'));var config=require(_0x0570('0x6'));var controller=require(_0x0570('0x7'));router['get']('/',auth[_0x0570('0x8')](),controller[_0x0570('0x9')]);router[_0x0570('0xa')](_0x0570('0xb'),auth[_0x0570('0x8')](),controller[_0x0570('0xc')]);router[_0x0570('0xa')]('/:id',auth[_0x0570('0x8')](),controller[_0x0570('0xd')]);router[_0x0570('0xe')]('/',auth[_0x0570('0x8')](),controller[_0x0570('0xf')]);router[_0x0570('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x0570('0x11')]);router[_0x0570('0x12')](_0x0570('0x13'),auth[_0x0570('0x8')](),controller[_0x0570('0x14')]);module[_0x0570('0x15')]=router;
\ No newline at end of file
+var _0xa76b=['put','/:id','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatTransferReport.controller','get','isAuthenticated','index','/describe','describe','show','post','create'];(function(_0xf6cfb4,_0x395579){var _0x2d3841=function(_0x14acca){while(--_0x14acca){_0xf6cfb4['push'](_0xf6cfb4['shift']());}};_0x2d3841(++_0x395579);}(_0xa76b,0x17e));var _0xba76=function(_0x31c9d9,_0x4b8036){_0x31c9d9=_0x31c9d9-0x0;var _0x594d55=_0xa76b[_0x31c9d9];return _0x594d55;};'use strict';var multer=require(_0xba76('0x0'));var util=require('util');var path=require(_0xba76('0x1'));var timeout=require(_0xba76('0x2'));var express=require(_0xba76('0x3'));var router=express[_0xba76('0x4')]();var fs_extra=require(_0xba76('0x5'));var auth=require(_0xba76('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xba76('0x7'));var controller=require(_0xba76('0x8'));router[_0xba76('0x9')]('/',auth[_0xba76('0xa')](),controller[_0xba76('0xb')]);router[_0xba76('0x9')](_0xba76('0xc'),auth['isAuthenticated'](),controller[_0xba76('0xd')]);router[_0xba76('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xba76('0xe')]);router[_0xba76('0xf')]('/',auth[_0xba76('0xa')](),controller[_0xba76('0x10')]);router[_0xba76('0x11')](_0xba76('0x12'),auth[_0xba76('0xa')](),controller['update']);router['delete'](_0xba76('0x12'),auth[_0xba76('0xa')](),controller[_0xba76('0x13')]);module[_0xba76('0x14')]=router;
\ No newline at end of file
index f59dd4b..98c3114 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcb7=['We\x20are\x20here!','Chat','Send','Contact\x20us','Powered\x20by\x20xCALLY','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Feedback','star','thumb','stringify','input','name','getDataValue','onlineForm','parse','setDataValue','textarea','Comments','Leave\x20your\x20comments','offlineForm','All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','New\x20offline\x20message\x20from\x20websiteName','You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Your\x20request\x20has\x20not\x20been\x20processed.','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','bottom_right','alternate','System','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize','exports','STRING','address','email','Agent','#011F6A','#ffffff','INTEGER','BOOLEAN','ENUM','rounded','squared'];(function(_0x11e6d6,_0x93cb1){var _0x4df6bb=function(_0x3866c9){while(--_0x3866c9){_0x11e6d6['push'](_0x11e6d6['shift']());}};_0x4df6bb(++_0x93cb1);}(_0xfcb7,0x1c7));var _0x7fcb=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfcb7[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x7fcb('0x0'));var rs=require('randomstring');module[_0x7fcb('0x1')]={'name':{'type':Sequelize[_0x7fcb('0x2')],'allowNull':![]},'address':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x7fcb('0x3')},'description':{'type':Sequelize[_0x7fcb('0x2')]},'mapKey':{'type':Sequelize[_0x7fcb('0x2')],'defaultValue':'email'},'mapKeyOffline':{'type':Sequelize['STRING'],'defaultValue':_0x7fcb('0x4')},'key':{'type':Sequelize['STRING'],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x7fcb('0x2')],'defaultValue':_0x7fcb('0x5')},'customerAlias':{'type':Sequelize[_0x7fcb('0x2')],'defaultValue':'Me'},'color':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x7fcb('0x6'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x7fcb('0x2')],'allowNull':![],'defaultValue':_0x7fcb('0x7'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x7fcb('0x8')],'defaultValue':0xf},'remote':{'type':Sequelize[_0x7fcb('0x2')]},'animation':{'type':Sequelize[_0x7fcb('0x9')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x7fcb('0xa')](_0x7fcb('0xb'),_0x7fcb('0xc')),'defaultValue':_0x7fcb('0xb')},'header_online':{'type':Sequelize[_0x7fcb('0x2')],'defaultValue':_0x7fcb('0xd')},'start_chat_button':{'type':Sequelize[_0x7fcb('0x2')],'defaultValue':_0x7fcb('0xe')},'offline_chat_button':{'type':Sequelize[_0x7fcb('0x2')],'defaultValue':_0x7fcb('0xf')},'header_offline':{'type':Sequelize[_0x7fcb('0x2')],'defaultValue':_0x7fcb('0x10')},'download_transcript':{'type':Sequelize[_0x7fcb('0x9')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x7fcb('0x8')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x7fcb('0x2')],'defaultValue':_0x7fcb('0x11')},'defaultWhiteLabel':{'type':Sequelize[_0x7fcb('0x9')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x7fcb('0x12')]},'closingQuestion':{'type':Sequelize[_0x7fcb('0x2')],'defaultValue':_0x7fcb('0x13')},'formSubmitSuccessMessage':{'type':Sequelize[_0x7fcb('0x2')],'defaultValue':_0x7fcb('0x14')},'formSubmitFailureMessage':{'type':Sequelize['STRING'],'defaultValue':'Form\x20submission\x20error'},'noteTitle':{'type':Sequelize[_0x7fcb('0x2')],'defaultValue':_0x7fcb('0x15')},'placeholderMessage':{'type':Sequelize[_0x7fcb('0x2')],'defaultValue':_0x7fcb('0x16')},'closingMessage':{'type':Sequelize[_0x7fcb('0x2')],'defaultValue':_0x7fcb('0x17')},'closingMessageButton':{'type':Sequelize['STRING'],'defaultValue':'Send'},'skipMessageButton':{'type':Sequelize[_0x7fcb('0x2')],'defaultValue':'Skip'},'conditionAgreement':{'type':Sequelize[_0x7fcb('0x9')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x7fcb('0x9')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x7fcb('0x9')],'defaultValue':![]},'enableSendButton':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x7fcb('0x2')],'defaultValue':_0x7fcb('0x18')},'ratingType':{'type':Sequelize['ENUM'](_0x7fcb('0x19'),_0x7fcb('0x1a')),'defaultValue':_0x7fcb('0x19')},'ratingStarsNumber':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x7fcb('0x12')],'defaultValue':function(){return JSON[_0x7fcb('0x1b')]({'items':[{'type':_0x7fcb('0x1c'),'variable':null,'config':{'placeholder':_0x7fcb('0x1d'),'type':'text','required':!![]},'props':{'title':_0x7fcb('0x1d'),'helpText':''}},{'type':_0x7fcb('0x1c'),'props':{'title':_0x7fcb('0x4'),'helpText':''},'config':{'required':!![],'placeholder':'email','type':'email'},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x7fcb('0x1e')](_0x7fcb('0x1f'))?JSON[_0x7fcb('0x20')](this[_0x7fcb('0x1e')](_0x7fcb('0x1f'))):{};},'set':function(_0x4aeaff){return this[_0x7fcb('0x21')](_0x7fcb('0x1f'),JSON[_0x7fcb('0x1b')](_0x4aeaff));}},'offlineForm':{'type':Sequelize[_0x7fcb('0x12')],'defaultValue':function(){return JSON[_0x7fcb('0x1b')]({'items':[{'type':_0x7fcb('0x1c'),'props':{'title':_0x7fcb('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0x7fcb('0x4'),'type':_0x7fcb('0x4')},'variable':null},{'type':_0x7fcb('0x22'),'config':{'placeholder':_0x7fcb('0x23')},'props':{'title':_0x7fcb('0x23'),'helpText':_0x7fcb('0x24')}}],'fromKey':0x0});},'get':function(){return this[_0x7fcb('0x1e')](_0x7fcb('0x25'))?JSON[_0x7fcb('0x20')](this['getDataValue'](_0x7fcb('0x25'))):{};},'set':function(_0x359aee){return this[_0x7fcb('0x21')](_0x7fcb('0x25'),JSON[_0x7fcb('0x1b')](_0x359aee));}},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs['generate']();}},'autoclose':{'type':Sequelize[_0x7fcb('0x9')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x7fcb('0x9')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x7fcb('0x9')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x7fcb('0x2')]},'forwardOffline':{'type':Sequelize[_0x7fcb('0x9')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x7fcb('0x2')]},'waitingTitle':{'type':Sequelize[_0x7fcb('0x2')],'defaultValue':_0x7fcb('0x26')},'waitingMessage':{'type':Sequelize['STRING'],'defaultValue':_0x7fcb('0x27')},'offlineMessageSubject':{'type':Sequelize[_0x7fcb('0x2')],'defaultValue':_0x7fcb('0x28')},'offlineMessageBody':{'type':Sequelize[_0x7fcb('0x2')],'defaultValue':_0x7fcb('0x29')},'enableUnmanagedNote':{'type':Sequelize[_0x7fcb('0x9')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize['STRING'],'defaultValue':_0x7fcb('0x2a')},'skipUnmanaged':{'type':Sequelize['STRING'],'defaultValue':'Skip'},'sendUnmanaged':{'type':Sequelize['STRING'],'defaultValue':_0x7fcb('0xf')},'enableCustomerAttachment':{'type':Sequelize[_0x7fcb('0x9')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x7fcb('0x9')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0x7fcb('0x12')]},'showAgentAvatar':{'type':Sequelize[_0x7fcb('0x9')],'defaultValue':![]},'timezone':{'type':Sequelize[_0x7fcb('0x2')]},'notificationTemplate':{'type':Sequelize[_0x7fcb('0x12')],'defaultValue':function(){return _0x7fcb('0x2b');}},'notificationSound':{'type':Sequelize[_0x7fcb('0x9')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x7fcb('0x9')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0x7fcb('0x9')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x7fcb('0x2')],'defaultValue':_0x7fcb('0x2c')},'waitForTheAssignedAgent':{'type':Sequelize[_0x7fcb('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x7fcb('0x2')],'defaultValue':_0x7fcb('0x2d')},'verticalAlignment':{'type':Sequelize['INTEGER'],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize[_0x7fcb('0x2')],'defaultValue':_0x7fcb('0x2e')},'defaultTitle':{'type':Sequelize[_0x7fcb('0x2')]},'customerAvatar':{'type':Sequelize[_0x7fcb('0x12')]},'showCustomerAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x7fcb('0x8')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#fafafa','validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x7fcb('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x7fcb('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x7fcb('0x2')],'defaultValue':_0x7fcb('0x2f')},'systemAvatar':{'type':Sequelize[_0x7fcb('0x12')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x7fcb('0x8')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x7fcb('0x9')],'defaultValue':![],'comment':_0x7fcb('0x30'),'set':function(_0x4ec051){if(!_0x4ec051)this[_0x7fcb('0x21')](_0x7fcb('0x31'),null);this['setDataValue']('mandatoryDisposition',_0x4ec051);}},'vidaooEscalation':{'type':Sequelize[_0x7fcb('0x9')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0x7fcb('0x2')]},'vidaooTopic':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x7fcb('0x32')},'vidaooNote':{'type':Sequelize[_0x7fcb('0x2')],'defaultValue':function(){return _0x7fcb('0x33');}},'vidaooMetadata':{'type':Sequelize[_0x7fcb('0x12')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0x7fcb('0x9')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0x7fcb('0x12')]}};
\ No newline at end of file
+var _0x279a=['email','Agent','#011F6A','#ffffff','INTEGER','BOOLEAN','ENUM','rounded','We\x20are\x20here!','Chat','Send','Powered\x20by\x20xCALLY','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Feedback','thumb','star','input','name','text','getDataValue','onlineForm','parse','stringify','textarea','Comments','Leave\x20your\x20comments','offlineForm','generate','All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','New\x20offline\x20message\x20from\x20websiteName','Your\x20request\x20has\x20not\x20been\x20processed.','Skip','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','alternate','#fafafa','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','randomstring','exports','STRING','address'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x279a,0x1c7));var _0xa279=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x279a[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require('sequelize');var rs=require(_0xa279('0x0'));module[_0xa279('0x1')]={'name':{'type':Sequelize[_0xa279('0x2')],'allowNull':![]},'address':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xa279('0x3')},'description':{'type':Sequelize[_0xa279('0x2')]},'mapKey':{'type':Sequelize[_0xa279('0x2')],'defaultValue':_0xa279('0x4')},'mapKeyOffline':{'type':Sequelize[_0xa279('0x2')],'defaultValue':_0xa279('0x4')},'key':{'type':Sequelize[_0xa279('0x2')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0xa279('0x2')],'defaultValue':_0xa279('0x5')},'customerAlias':{'type':Sequelize[_0xa279('0x2')],'defaultValue':'Me'},'color':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xa279('0x6'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0xa279('0x2')],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xa279('0x7'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0xa279('0x8')],'defaultValue':0xf},'remote':{'type':Sequelize['STRING']},'animation':{'type':Sequelize[_0xa279('0x9')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0xa279('0xa')]('rounded','squared'),'defaultValue':_0xa279('0xb')},'header_online':{'type':Sequelize[_0xa279('0x2')],'defaultValue':_0xa279('0xc')},'start_chat_button':{'type':Sequelize[_0xa279('0x2')],'defaultValue':_0xa279('0xd')},'offline_chat_button':{'type':Sequelize['STRING'],'defaultValue':_0xa279('0xe')},'header_offline':{'type':Sequelize['STRING'],'defaultValue':'Contact\x20us'},'download_transcript':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'timeout':{'type':Sequelize[_0xa279('0x8')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0xa279('0x2')],'defaultValue':_0xa279('0xf')},'defaultWhiteLabel':{'type':Sequelize[_0xa279('0x9')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0xa279('0x10')]},'closingQuestion':{'type':Sequelize[_0xa279('0x2')],'defaultValue':_0xa279('0x11')},'formSubmitSuccessMessage':{'type':Sequelize[_0xa279('0x2')],'defaultValue':_0xa279('0x12')},'formSubmitFailureMessage':{'type':Sequelize[_0xa279('0x2')],'defaultValue':_0xa279('0x13')},'noteTitle':{'type':Sequelize[_0xa279('0x2')],'defaultValue':'Note'},'placeholderMessage':{'type':Sequelize[_0xa279('0x2')],'defaultValue':_0xa279('0x14')},'closingMessage':{'type':Sequelize[_0xa279('0x2')],'defaultValue':_0xa279('0x15')},'closingMessageButton':{'type':Sequelize['STRING'],'defaultValue':_0xa279('0xe')},'skipMessageButton':{'type':Sequelize['STRING'],'defaultValue':'Skip'},'conditionAgreement':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableRating':{'type':Sequelize[_0xa279('0x9')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0xa279('0x9')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0xa279('0x9')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0xa279('0x2')],'defaultValue':_0xa279('0x16')},'ratingType':{'type':Sequelize[_0xa279('0xa')]('star',_0xa279('0x17')),'defaultValue':_0xa279('0x18')},'ratingStarsNumber':{'type':Sequelize[_0xa279('0x8')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0xa279('0x10')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':_0xa279('0x19'),'variable':null,'config':{'placeholder':_0xa279('0x1a'),'type':_0xa279('0x1b'),'required':!![]},'props':{'title':_0xa279('0x1a'),'helpText':''}},{'type':_0xa279('0x19'),'props':{'title':_0xa279('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0xa279('0x4'),'type':_0xa279('0x4')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0xa279('0x1c')](_0xa279('0x1d'))?JSON[_0xa279('0x1e')](this[_0xa279('0x1c')]('onlineForm')):{};},'set':function(_0x107f1f){return this['setDataValue']('onlineForm',JSON[_0xa279('0x1f')](_0x107f1f));}},'offlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON[_0xa279('0x1f')]({'items':[{'type':_0xa279('0x19'),'props':{'title':_0xa279('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0xa279('0x4'),'type':_0xa279('0x4')},'variable':null},{'type':_0xa279('0x20'),'config':{'placeholder':_0xa279('0x21')},'props':{'title':_0xa279('0x21'),'helpText':_0xa279('0x22')}}],'fromKey':0x0});},'get':function(){return this[_0xa279('0x1c')](_0xa279('0x23'))?JSON[_0xa279('0x1e')](this[_0xa279('0x1c')](_0xa279('0x23'))):{};},'set':function(_0x195659){return this['setDataValue'](_0xa279('0x23'),JSON['stringify'](_0x195659));}},'token':{'type':Sequelize[_0xa279('0x2')],'defaultValue':function(){return rs[_0xa279('0x24')]();}},'autoclose':{'type':Sequelize[_0xa279('0x9')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0xa279('0x9')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0xa279('0x9')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0xa279('0x2')]},'forwardOffline':{'type':Sequelize[_0xa279('0x9')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0xa279('0x2')]},'waitingTitle':{'type':Sequelize[_0xa279('0x2')],'defaultValue':_0xa279('0x25')},'waitingMessage':{'type':Sequelize[_0xa279('0x2')],'defaultValue':_0xa279('0x26')},'offlineMessageSubject':{'type':Sequelize[_0xa279('0x2')],'defaultValue':_0xa279('0x27')},'offlineMessageBody':{'type':Sequelize[_0xa279('0x2')],'defaultValue':'You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:'},'enableUnmanagedNote':{'type':Sequelize[_0xa279('0x9')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0xa279('0x2')],'defaultValue':_0xa279('0x28')},'skipUnmanaged':{'type':Sequelize[_0xa279('0x2')],'defaultValue':_0xa279('0x29')},'sendUnmanaged':{'type':Sequelize[_0xa279('0x2')],'defaultValue':_0xa279('0xe')},'enableCustomerAttachment':{'type':Sequelize[_0xa279('0x9')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0xa279('0x9')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0xa279('0x10')]},'showAgentAvatar':{'type':Sequelize[_0xa279('0x9')],'defaultValue':![]},'timezone':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0xa279('0x10')],'defaultValue':function(){return _0xa279('0x2a');}},'notificationSound':{'type':Sequelize[_0xa279('0x9')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xa279('0x9')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0xa279('0x2')],'defaultValue':'website_alias'},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0xa279('0x2')],'defaultValue':'bottom_right'},'verticalAlignment':{'type':Sequelize[_0xa279('0x8')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize[_0xa279('0x2')],'defaultValue':_0xa279('0x2b')},'defaultTitle':{'type':Sequelize[_0xa279('0x2')]},'customerAvatar':{'type':Sequelize['TEXT']},'showCustomerAvatar':{'type':Sequelize[_0xa279('0x9')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0xa279('0x8')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0xa279('0x2')],'allowNull':![],'defaultValue':_0xa279('0x2c'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0xa279('0x9')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xa279('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xa279('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xa279('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0xa279('0x2')],'defaultValue':_0xa279('0x2d')},'systemAvatar':{'type':Sequelize['TEXT']},'mandatoryDispositionPauseId':{'type':Sequelize[_0xa279('0x8')],'comment':_0xa279('0x2e')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xa279('0x2f'),'set':function(_0x45a3c6){if(!_0x45a3c6)this[_0xa279('0x30')]('mandatoryDispositionPauseId',null);this[_0xa279('0x30')](_0xa279('0x31'),_0x45a3c6);}},'vidaooEscalation':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0xa279('0x2')]},'vidaooTopic':{'type':Sequelize[_0xa279('0x2')],'allowNull':![],'defaultValue':_0xa279('0x32')},'vidaooNote':{'type':Sequelize[_0xa279('0x2')],'defaultValue':function(){return'Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}';}},'vidaooMetadata':{'type':Sequelize[_0xa279('0x10')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0xa279('0x9')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0xa279('0x10')]}};
\ No newline at end of file
index ef48c90..238694b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd020=['ids','addLogo','sitepic','file','filename','addAvatar','agentAvatar','customerAvatar','addSystemAvatar','systemAvatar','join','root','server/files/images/logos/default_logo.svg','custom','isNil','server/files/images/logos/','download','getAvatar','server/files/images/avatars/default_avatar.png','existsSync','server/files/images/avatars/','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','server/files/images/avatars/system_avatar.png','user-agent-parser','setUA','headers','user-agent','getResult','chat','CmContact','no\x20available\x20attributes','updatedAt','difference','createdAt','CompanyId','ListId','from','Sequelize','ValidationError','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','DESC','ChatApplication','List','account','applications','Applications','orderBy','priority','asc','contact','customerIp','cf-connecting-ip','x-forwarded-for','firstName','lastName','x-real-port','referer','browser','version','format','%s\x20%s','unknown','device','vendor','%s\x20%s\x20%s','stringify','threadId','externalUrl','ChatInteraction','ContactId','interaction','spread','messageId','created','autoclose','push','unmanaged','ChatMessage','UserId','User','unshift','agent','waitForTheAssignedAgent','*,*,*,*','forcedOwnership','Start','startRouting','notify','offline','from\x20is\x20mandatory','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','findOrCreate','readFileSync','toPairs','ChatOfflineMessage','originalname','server','files','offline-chat','basename','openNewInteraction','sequelize','transaction','Attachment','bulkCreate','MailServerOut','Smtp','forwardOffline','service','host','port','secure','authentication','auth','SendMail','sendMail','\x22%s\x22\x20<%s>','email','forwardOfflineAddress','offlineMessageSubject','MailAccountId','mimetype','subjectOffline','toPairsIn','mapValues','Chat','NotifyMailAccount','remove','addInteraction','getInteractions','Owner','fullname','internal','Tag','color','tag','Command','getSnippet','timezone','iftime\x20%s','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','interval','OFFLINE','No\x20timezone','inspect','Interval','Intervals','getProactiveActions','getLicense','virtual','chatLicenseExceeded','all','some','utf8','remote','connection','remoteAddress','render','alignment','verticalAlignment','textColor','backgroundColor','addApplications','findAndCountAll','getApplications','chatProactiveAction','addProactiveActions','omit','ChatProactiveAction','getFields','offlineForm','onlineForm','items','fromKey','getOfflineMessages','Contact','addAgents','userChatWebsite:save','removeAgents','isArray','emit','userChatWebsite:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','redis','defaults','localhost','jayson/promise','http','client','request','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','sendStatus','end','status','json','offset','limit','count','set','apply','reject','update','destroy','get','UserProfileResource','stack','name','send','index','Pause','map','ChatWebsite','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','findAll','show','params','mandatoryDispositionPause','rawAttributes','find','create','body','user','ChatWebsites','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','Disposition','getDispositions','findOne','options','rows','removeDispositions','addAnswer','ChatWebsiteId','CannedAnswer','getAnswers','removeAnswers'];(function(_0xf442cb,_0x48c503){var _0x1d6c69=function(_0xeb6bd1){while(--_0xeb6bd1){_0xf442cb['push'](_0xf442cb['shift']());}};_0x1d6c69(++_0x48c503);}(_0xd020,0xc1));var _0x0d02=function(_0x3d8f92,_0x14017a){_0x3d8f92=_0x3d8f92-0x0;var _0x1e7b44=_0xd020[_0x3d8f92];return _0x1e7b44;};'use strict';var emlformat=require(_0x0d02('0x0'));var rimraf=require(_0x0d02('0x1'));var zipdir=require(_0x0d02('0x2'));var jsonpatch=require(_0x0d02('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x0d02('0x4'));var Mustache=require(_0x0d02('0x5'));var util=require(_0x0d02('0x6'));var path=require(_0x0d02('0x7'));var sox=require(_0x0d02('0x8'));var csv=require(_0x0d02('0x9'));var ejs=require(_0x0d02('0xa'));var fs=require('fs');var fs_extra=require(_0x0d02('0xb'));var _=require('lodash');var squel=require(_0x0d02('0xc'));var crypto=require(_0x0d02('0xd'));var jsforce=require(_0x0d02('0xe'));var deskjs=require(_0x0d02('0xf'));var toCsv=require('to-csv');var querystring=require(_0x0d02('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x0d02('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x0d02('0x12'));var hardwareService=require(_0x0d02('0x13'));var logger=require(_0x0d02('0x14'))(_0x0d02('0x15'));var utils=require(_0x0d02('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x0d02('0x17'));var db=require('../../mysqldb')['db'];config[_0x0d02('0x18')]=_[_0x0d02('0x19')](config['redis'],{'host':_0x0d02('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0d02('0x18')]));require('./chatWebsite.socket')['register'](socket);var jayson=require(_0x0d02('0x1b'));var client=jayson['client'][_0x0d02('0x1c')]({'port':0x232c});var client9002=jayson[_0x0d02('0x1d')][_0x0d02('0x1c')]({'port':0x232a});var client9003=jayson[_0x0d02('0x1d')][_0x0d02('0x1c')]({'port':0x232b});var client9001=jayson[_0x0d02('0x1d')]['http']({'port':0x2329});function respondWithRpcPromise(_0x5a8151,_0x3dba0e,_0x1abef1,_0x30a106){return new BPromise(function(_0xac97a4,_0x27d49f){var _0x1067ad=_0x30a106||client;return _0x1067ad[_0x0d02('0x1e')](_0x5a8151,_0x1abef1)[_0x0d02('0x1f')](function(_0x56fbb9){logger[_0x0d02('0x20')](_0x0d02('0x21'),_0x3dba0e,_0x0d02('0x22'));logger[_0x0d02('0x23')]('ChatWebsite,\x20%s,\x20%s,\x20%s',_0x3dba0e,_0x0d02('0x22'),JSON['stringify'](_0x56fbb9));if(_0x56fbb9[_0x0d02('0x24')]){if(_0x56fbb9[_0x0d02('0x24')][_0x0d02('0x25')]===0x1f4){logger['error'](_0x0d02('0x21'),_0x3dba0e,_0x56fbb9['error']['message']);return _0x27d49f(_0x56fbb9[_0x0d02('0x24')]['message']);}logger[_0x0d02('0x24')]('ChatWebsite,\x20%s,\x20%s',_0x3dba0e,_0x56fbb9[_0x0d02('0x24')][_0x0d02('0x26')]);return _0xac97a4(_0x56fbb9[_0x0d02('0x24')]['message']);}else{logger[_0x0d02('0x20')](_0x0d02('0x21'),_0x3dba0e,_0x0d02('0x22'));_0xac97a4(_0x56fbb9[_0x0d02('0x27')]['message']);}})[_0x0d02('0x28')](function(_0x4188bb){logger[_0x0d02('0x24')](_0x0d02('0x21'),_0x3dba0e,_0x4188bb);_0x27d49f(_0x4188bb);});});}function respondWithStatusCode(_0x5d1e86,_0x39e4aa){_0x39e4aa=_0x39e4aa||0xcc;return function(_0x16ee6a){if(_0x16ee6a){return _0x5d1e86[_0x0d02('0x29')](_0x39e4aa);}return _0x5d1e86['status'](_0x39e4aa)[_0x0d02('0x2a')]();};}function respondWithResult(_0x27d0aa,_0x49dc1){_0x49dc1=_0x49dc1||0xc8;return function(_0x314d6f){if(_0x314d6f){return _0x27d0aa[_0x0d02('0x2b')](_0x49dc1)[_0x0d02('0x2c')](_0x314d6f);}};}function respondWithFilteredResult(_0x50c068,_0xab0add){return function(_0x195dc4){if(_0x195dc4){var _0x835714=typeof _0xab0add[_0x0d02('0x2d')]==='undefined'&&typeof _0xab0add[_0x0d02('0x2e')]==='undefined';var _0x9121b4=_0x195dc4['count'];var _0x2fef79=_0x835714?0x0:_0xab0add['offset'];var _0x242220=_0x835714?_0x195dc4[_0x0d02('0x2f')]:_0xab0add[_0x0d02('0x2d')]+_0xab0add['limit'];var _0x3ee0a2;if(_0x242220>=_0x9121b4){_0x242220=_0x9121b4;_0x3ee0a2=0xc8;}else{_0x3ee0a2=0xce;}_0x50c068[_0x0d02('0x2b')](_0x3ee0a2);return _0x50c068[_0x0d02('0x30')]('Content-Range',_0x2fef79+'-'+_0x242220+'/'+_0x9121b4)[_0x0d02('0x2c')](_0x195dc4);}return null;};}function patchUpdates(_0x2b095f){return function(_0x57d6c3){try{jsonpatch[_0x0d02('0x31')](_0x57d6c3,_0x2b095f,!![]);}catch(_0x4b1ac1){return BPromise[_0x0d02('0x32')](_0x4b1ac1);}return _0x57d6c3['save']();};}function saveUpdates(_0x5cb65c,_0x35c9d0){return function(_0x4e4469){if(_0x4e4469){return _0x4e4469[_0x0d02('0x33')](_0x5cb65c)[_0x0d02('0x1f')](function(_0x9a0076){return _0x9a0076;});}return null;};}function removeEntity(_0x58c671,_0x2867ba){return function(_0x12ec02){if(_0x12ec02){return _0x12ec02[_0x0d02('0x34')]()[_0x0d02('0x1f')](function(){var _0x3acd7d=_0x12ec02[_0x0d02('0x35')]({'plain':!![]});var _0x5c2670='ChatWebsites';return db[_0x0d02('0x36')]['destroy']({'where':{'type':_0x5c2670,'resourceId':_0x3acd7d['id']}})[_0x0d02('0x1f')](function(){return _0x12ec02;});})[_0x0d02('0x1f')](function(){_0x58c671[_0x0d02('0x2b')](0xcc)[_0x0d02('0x2a')]();});}};}function handleEntityNotFound(_0x5895e3,_0x1f98e0){return function(_0x219282){if(!_0x219282){_0x5895e3['sendStatus'](0x194);}return _0x219282;};}function handleError(_0x257c64,_0x18593d){_0x18593d=_0x18593d||0x1f4;return function(_0x44bffb){logger['error'](_0x44bffb[_0x0d02('0x37')]);if(_0x44bffb[_0x0d02('0x38')]){delete _0x44bffb['name'];}_0x257c64[_0x0d02('0x2b')](_0x18593d)[_0x0d02('0x39')](_0x44bffb);};}exports[_0x0d02('0x3a')]=function(_0x36dba8,_0x9001bf){var _0x3a55c1={'include':[{'model':db[_0x0d02('0x3b')],'as':'mandatoryDispositionPause'}]},_0x3f21e8={},_0x229fa4={'count':0x0,'rows':[]};var _0x2adb31=_[_0x0d02('0x3c')](db[_0x0d02('0x3d')]['rawAttributes'],function(_0x16eff3){return{'name':_0x16eff3['fieldName'],'type':_0x16eff3[_0x0d02('0x3e')][_0x0d02('0x3f')]};});_0x3f21e8[_0x0d02('0x40')]=_[_0x0d02('0x3c')](_0x2adb31,_0x0d02('0x38'));_0x3f21e8[_0x0d02('0x41')]=_[_0x0d02('0x42')](_0x36dba8[_0x0d02('0x41')]);_0x3f21e8[_0x0d02('0x43')]=_[_0x0d02('0x44')](_0x3f21e8[_0x0d02('0x40')],_0x3f21e8['query']);_0x3a55c1[_0x0d02('0x45')]=_['intersection'](_0x3f21e8[_0x0d02('0x40')],qs[_0x0d02('0x46')](_0x36dba8[_0x0d02('0x41')][_0x0d02('0x46')]));_0x3a55c1[_0x0d02('0x45')]=_0x3a55c1[_0x0d02('0x45')][_0x0d02('0x47')]?_0x3a55c1[_0x0d02('0x45')]:_0x3f21e8['model'];if(!_0x36dba8[_0x0d02('0x41')][_0x0d02('0x48')](_0x0d02('0x49'))){_0x3a55c1[_0x0d02('0x2e')]=qs['limit'](_0x36dba8[_0x0d02('0x41')][_0x0d02('0x2e')]);_0x3a55c1[_0x0d02('0x2d')]=qs[_0x0d02('0x2d')](_0x36dba8['query'][_0x0d02('0x2d')]);}_0x3a55c1[_0x0d02('0x4a')]=qs[_0x0d02('0x4b')](_0x36dba8[_0x0d02('0x41')][_0x0d02('0x4b')]);_0x3a55c1[_0x0d02('0x4c')]=qs[_0x0d02('0x43')](_[_0x0d02('0x4d')](_0x36dba8[_0x0d02('0x41')],_0x3f21e8[_0x0d02('0x43')]),_0x2adb31);if(_0x36dba8[_0x0d02('0x41')][_0x0d02('0x4e')]){_0x3a55c1['where']=_['merge'](_0x3a55c1[_0x0d02('0x4c')],{'$or':_[_0x0d02('0x3c')](_0x2adb31,function(_0x460756){if(_0x460756[_0x0d02('0x3e')]!==_0x0d02('0x4f')){var _0x5ded71={};_0x5ded71[_0x460756[_0x0d02('0x38')]]={'$like':'%'+_0x36dba8['query'][_0x0d02('0x4e')]+'%'};return _0x5ded71;}})});}_0x3a55c1=_[_0x0d02('0x50')]({},_0x3a55c1,_0x36dba8['options']);var _0x4f14a3={'where':_0x3a55c1['where']};return db[_0x0d02('0x3d')]['count'](_0x4f14a3)['then'](function(_0x587237){_0x229fa4[_0x0d02('0x2f')]=_0x587237;if(_0x36dba8[_0x0d02('0x41')][_0x0d02('0x51')]){_0x3a55c1[_0x0d02('0x52')]=[{'all':!![]}];}return db['ChatWebsite'][_0x0d02('0x53')](_0x3a55c1);})[_0x0d02('0x1f')](function(_0x1a52da){_0x229fa4['rows']=_0x1a52da;return _0x229fa4;})[_0x0d02('0x1f')](respondWithFilteredResult(_0x9001bf,_0x3a55c1))[_0x0d02('0x28')](handleError(_0x9001bf,null));};exports[_0x0d02('0x54')]=function(_0x4ba734,_0x44c5bf){var _0xfc3caf={'raw':![],'where':{'id':_0x4ba734[_0x0d02('0x55')]['id']},'include':[{'model':db[_0x0d02('0x3b')],'as':_0x0d02('0x56')}]},_0x291c25={};_0x291c25[_0x0d02('0x40')]=_['keys'](db[_0x0d02('0x3d')][_0x0d02('0x57')]);_0x291c25['query']=_[_0x0d02('0x42')](_0x4ba734[_0x0d02('0x41')]);_0x291c25['filters']=_['intersection'](_0x291c25[_0x0d02('0x40')],_0x291c25[_0x0d02('0x41')]);_0xfc3caf['attributes']=_[_0x0d02('0x44')](_0x291c25[_0x0d02('0x40')],qs['fields'](_0x4ba734['query'][_0x0d02('0x46')]));_0xfc3caf[_0x0d02('0x45')]=_0xfc3caf[_0x0d02('0x45')][_0x0d02('0x47')]?_0xfc3caf[_0x0d02('0x45')]:_0x291c25[_0x0d02('0x40')];if(_0x4ba734[_0x0d02('0x41')][_0x0d02('0x51')]){_0xfc3caf[_0x0d02('0x52')]=[{'all':!![]}];}_0xfc3caf=_[_0x0d02('0x50')]({},_0xfc3caf,_0x4ba734['options']);return db['ChatWebsite'][_0x0d02('0x58')](_0xfc3caf)['then'](handleEntityNotFound(_0x44c5bf,null))[_0x0d02('0x1f')](respondWithResult(_0x44c5bf,null))['catch'](handleError(_0x44c5bf,null));};exports[_0x0d02('0x59')]=function(_0x431ff1,_0x2acd08){return db[_0x0d02('0x3d')][_0x0d02('0x59')](_0x431ff1[_0x0d02('0x5a')],{})['then'](function(_0x3ee9c6){var _0x2b82fc=_0x431ff1[_0x0d02('0x5b')][_0x0d02('0x35')]({'plain':!![]});if(!_0x2b82fc)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2b82fc['role']===_0x0d02('0x5b')){var _0x6da06b=_0x3ee9c6[_0x0d02('0x35')]({'plain':!![]});var _0x408ccf=_0x0d02('0x5c');return db[_0x0d02('0x5d')][_0x0d02('0x58')]({'where':{'name':_0x408ccf,'userProfileId':_0x2b82fc[_0x0d02('0x5e')]},'raw':!![]})['then'](function(_0x5256ae){if(_0x5256ae&&_0x5256ae['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x6da06b[_0x0d02('0x38')],'resourceId':_0x6da06b['id'],'type':_0x5256ae['name'],'sectionId':_0x5256ae['id']},{})[_0x0d02('0x1f')](function(){return _0x3ee9c6;});}else{return _0x3ee9c6;}})[_0x0d02('0x28')](function(_0x23903d){logger[_0x0d02('0x24')](_0x0d02('0x5f'),_0x23903d);throw _0x23903d;});}return _0x3ee9c6;})[_0x0d02('0x1f')](respondWithResult(_0x2acd08,0xc9))[_0x0d02('0x28')](handleError(_0x2acd08,null));};exports['update']=function(_0x448fec,_0x126ab2){if(_0x448fec[_0x0d02('0x5a')]['id']){delete _0x448fec['body']['id'];}return db['ChatWebsite'][_0x0d02('0x58')]({'where':{'id':_0x448fec[_0x0d02('0x55')]['id']},'include':[{'model':db['Pause'],'as':_0x0d02('0x56')}]})[_0x0d02('0x1f')](handleEntityNotFound(_0x126ab2,null))[_0x0d02('0x1f')](saveUpdates(_0x448fec[_0x0d02('0x5a')],null))[_0x0d02('0x1f')](respondWithResult(_0x126ab2,null))[_0x0d02('0x28')](handleError(_0x126ab2,null));};exports[_0x0d02('0x34')]=function(_0x245c84,_0x598cf7){return db['ChatWebsite'][_0x0d02('0x58')]({'where':{'id':_0x245c84['params']['id']}})[_0x0d02('0x1f')](handleEntityNotFound(_0x598cf7,null))[_0x0d02('0x1f')](removeEntity(_0x598cf7,null))[_0x0d02('0x28')](handleError(_0x598cf7,null));};exports[_0x0d02('0x60')]=function(_0xb267c3,_0x460b79){return db['ChatWebsite']['describe']()[_0x0d02('0x1f')](respondWithResult(_0x460b79,null))[_0x0d02('0x28')](handleError(_0x460b79,null));};exports[_0x0d02('0x61')]=function(_0x5e14da,_0x446a97,_0xa79c6b){if(_0x5e14da[_0x0d02('0x5a')]['id']){delete _0x5e14da[_0x0d02('0x5a')]['id'];}return db[_0x0d02('0x3d')][_0x0d02('0x58')]({'where':{'id':_0x5e14da['params']['id']}})[_0x0d02('0x1f')](handleEntityNotFound(_0x446a97,null))[_0x0d02('0x1f')](function(_0x3e0450){if(_0x3e0450){_0x5e14da[_0x0d02('0x5a')]['ChatWebsiteId']=_0x3e0450['id'];return db[_0x0d02('0x62')]['create'](_0x5e14da[_0x0d02('0x5a')]);}})[_0x0d02('0x1f')](respondWithResult(_0x446a97,null))[_0x0d02('0x28')](handleError(_0x446a97,null));};exports[_0x0d02('0x63')]=function(_0x1d59b0,_0x510099,_0x11fb0e){var _0x177151={'raw':![],'where':{}};var _0x57a16a={};var _0x2a93e3={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x0d02('0x64')]({'where':{'id':_0x1d59b0[_0x0d02('0x55')]['id']}})[_0x0d02('0x1f')](handleEntityNotFound(_0x510099,null))[_0x0d02('0x1f')](function(_0x3dbe3e){if(_0x3dbe3e){_0x57a16a[_0x0d02('0x40')]=_[_0x0d02('0x42')](db[_0x0d02('0x62')]['rawAttributes']);_0x57a16a['query']=_[_0x0d02('0x42')](_0x1d59b0['query']);_0x57a16a[_0x0d02('0x43')]=_[_0x0d02('0x44')](_0x57a16a[_0x0d02('0x40')],_0x57a16a[_0x0d02('0x41')]);_0x177151[_0x0d02('0x45')]=_[_0x0d02('0x44')](_0x57a16a[_0x0d02('0x40')],qs['fields'](_0x1d59b0[_0x0d02('0x41')][_0x0d02('0x46')]));_0x177151['attributes']=_0x177151[_0x0d02('0x45')]['length']?_0x177151[_0x0d02('0x45')]:_0x57a16a[_0x0d02('0x40')];if(!_0x1d59b0['query'][_0x0d02('0x48')](_0x0d02('0x49'))){_0x177151[_0x0d02('0x2e')]=qs[_0x0d02('0x2e')](_0x1d59b0[_0x0d02('0x41')][_0x0d02('0x2e')]);_0x177151[_0x0d02('0x2d')]=qs[_0x0d02('0x2d')](_0x1d59b0[_0x0d02('0x41')][_0x0d02('0x2d')]);}_0x177151[_0x0d02('0x4a')]=qs[_0x0d02('0x4b')](_0x1d59b0['query'][_0x0d02('0x4b')]);_0x177151[_0x0d02('0x4c')]=qs[_0x0d02('0x43')](_[_0x0d02('0x4d')](_0x1d59b0[_0x0d02('0x41')],_0x57a16a[_0x0d02('0x43')]));_0x177151['where']['ChatWebsiteId']=_0x3dbe3e['id'];if(_0x1d59b0[_0x0d02('0x41')][_0x0d02('0x4e')]){_0x177151[_0x0d02('0x4c')]=_[_0x0d02('0x50')](_0x177151[_0x0d02('0x4c')],{'$or':_['map'](_0x177151[_0x0d02('0x45')],function(_0x5c0268){var _0xe1f4e8={};_0xe1f4e8[_0x5c0268]={'$like':'%'+_0x1d59b0[_0x0d02('0x41')][_0x0d02('0x4e')]+'%'};return _0xe1f4e8;})});}_0x177151=_[_0x0d02('0x50')]({},_0x177151,_0x1d59b0[_0x0d02('0x65')]);return db['Disposition']['count']({'where':_0x177151['where']})[_0x0d02('0x1f')](function(_0x1de735){_0x2a93e3[_0x0d02('0x2f')]=_0x1de735;if(_0x1d59b0[_0x0d02('0x41')]['includeAll']){_0x177151['include']=[{'all':!![]}];}return db[_0x0d02('0x62')][_0x0d02('0x53')](_0x177151);})[_0x0d02('0x1f')](function(_0x2d699a){_0x2a93e3[_0x0d02('0x66')]=_0x2d699a;return _0x2a93e3;});}})[_0x0d02('0x1f')](respondWithFilteredResult(_0x510099,_0x177151))['catch'](handleError(_0x510099,null));};exports[_0x0d02('0x67')]=function(_0x1736be,_0x49e068,_0x30b046){return db[_0x0d02('0x3d')][_0x0d02('0x58')]({'where':{'id':_0x1736be['params']['id']}})[_0x0d02('0x1f')](handleEntityNotFound(_0x49e068,null))[_0x0d02('0x1f')](function(_0x19a47e){if(_0x19a47e){return _0x19a47e[_0x0d02('0x67')](_0x1736be['query']['ids']);}})[_0x0d02('0x1f')](respondWithStatusCode(_0x49e068,null))[_0x0d02('0x28')](handleError(_0x49e068,null));};exports[_0x0d02('0x68')]=function(_0xe4644,_0x161b21,_0x381868){if(_0xe4644['body']['id']){delete _0xe4644[_0x0d02('0x5a')]['id'];}return db[_0x0d02('0x3d')]['find']({'where':{'id':_0xe4644['params']['id']}})[_0x0d02('0x1f')](handleEntityNotFound(_0x161b21,null))[_0x0d02('0x1f')](function(_0x34a89e){if(_0x34a89e){_0xe4644[_0x0d02('0x5a')][_0x0d02('0x69')]=_0x34a89e['id'];return db[_0x0d02('0x6a')][_0x0d02('0x59')](_0xe4644['body']);}})[_0x0d02('0x1f')](respondWithResult(_0x161b21,null))[_0x0d02('0x28')](handleError(_0x161b21,null));};exports[_0x0d02('0x6b')]=function(_0x3bd06e,_0x49a8f1,_0x15773a){var _0x92182b={'raw':![],'where':{}};var _0x3297f6={};var _0x3e288a={'count':0x0,'rows':[]};return db[_0x0d02('0x3d')][_0x0d02('0x64')]({'where':{'id':_0x3bd06e['params']['id']}})[_0x0d02('0x1f')](handleEntityNotFound(_0x49a8f1,null))[_0x0d02('0x1f')](function(_0x47600a){if(_0x47600a){_0x3297f6[_0x0d02('0x40')]=_[_0x0d02('0x42')](db['CannedAnswer'][_0x0d02('0x57')]);_0x3297f6['query']=_[_0x0d02('0x42')](_0x3bd06e['query']);_0x3297f6[_0x0d02('0x43')]=_[_0x0d02('0x44')](_0x3297f6[_0x0d02('0x40')],_0x3297f6[_0x0d02('0x41')]);_0x92182b[_0x0d02('0x45')]=_[_0x0d02('0x44')](_0x3297f6[_0x0d02('0x40')],qs[_0x0d02('0x46')](_0x3bd06e['query']['fields']));_0x92182b[_0x0d02('0x45')]=_0x92182b[_0x0d02('0x45')][_0x0d02('0x47')]?_0x92182b[_0x0d02('0x45')]:_0x3297f6['model'];if(!_0x3bd06e[_0x0d02('0x41')][_0x0d02('0x48')](_0x0d02('0x49'))){_0x92182b[_0x0d02('0x2e')]=qs[_0x0d02('0x2e')](_0x3bd06e[_0x0d02('0x41')]['limit']);_0x92182b[_0x0d02('0x2d')]=qs['offset'](_0x3bd06e[_0x0d02('0x41')]['offset']);}_0x92182b[_0x0d02('0x4a')]=qs[_0x0d02('0x4b')](_0x3bd06e[_0x0d02('0x41')][_0x0d02('0x4b')]);_0x92182b[_0x0d02('0x4c')]=qs[_0x0d02('0x43')](_[_0x0d02('0x4d')](_0x3bd06e['query'],_0x3297f6[_0x0d02('0x43')]));_0x92182b[_0x0d02('0x4c')][_0x0d02('0x69')]=_0x47600a['id'];if(_0x3bd06e['query']['filter']){_0x92182b[_0x0d02('0x4c')]=_[_0x0d02('0x50')](_0x92182b[_0x0d02('0x4c')],{'$or':_[_0x0d02('0x3c')](_0x92182b['attributes'],function(_0x2e188a){var _0x43c2f8={};_0x43c2f8[_0x2e188a]={'$like':'%'+_0x3bd06e[_0x0d02('0x41')][_0x0d02('0x4e')]+'%'};return _0x43c2f8;})});}_0x92182b=_[_0x0d02('0x50')]({},_0x92182b,_0x3bd06e['options']);return db[_0x0d02('0x6a')][_0x0d02('0x2f')]({'where':_0x92182b[_0x0d02('0x4c')]})[_0x0d02('0x1f')](function(_0x47b716){_0x3e288a['count']=_0x47b716;if(_0x3bd06e[_0x0d02('0x41')][_0x0d02('0x51')]){_0x92182b[_0x0d02('0x52')]=[{'all':!![]}];}return db[_0x0d02('0x6a')][_0x0d02('0x53')](_0x92182b);})[_0x0d02('0x1f')](function(_0x12c85e){_0x3e288a[_0x0d02('0x66')]=_0x12c85e;return _0x3e288a;});}})[_0x0d02('0x1f')](respondWithFilteredResult(_0x49a8f1,_0x92182b))[_0x0d02('0x28')](handleError(_0x49a8f1,null));};exports['removeAnswers']=function(_0x2fa6c4,_0x1201e3,_0x33db06){return db['ChatWebsite']['find']({'where':{'id':_0x2fa6c4[_0x0d02('0x55')]['id']}})[_0x0d02('0x1f')](handleEntityNotFound(_0x1201e3,null))[_0x0d02('0x1f')](function(_0x157de7){if(_0x157de7){return _0x157de7[_0x0d02('0x6c')](_0x2fa6c4[_0x0d02('0x41')][_0x0d02('0x6d')]);}})['then'](respondWithStatusCode(_0x1201e3,null))['catch'](handleError(_0x1201e3,null));};exports[_0x0d02('0x6e')]=function(_0x2b3e9d,_0x1cd490,_0x4d7055){_0x2b3e9d[_0x0d02('0x5a')][_0x0d02('0x6f')]=_0x2b3e9d[_0x0d02('0x70')][_0x0d02('0x71')];return db[_0x0d02('0x3d')][_0x0d02('0x58')]({'where':{'id':_0x2b3e9d[_0x0d02('0x55')]['id']}})[_0x0d02('0x1f')](handleEntityNotFound(_0x1cd490,null))[_0x0d02('0x1f')](saveUpdates(_0x2b3e9d[_0x0d02('0x5a')],null))[_0x0d02('0x1f')](respondWithResult(_0x1cd490,null))[_0x0d02('0x28')](handleError(_0x1cd490,null));};exports[_0x0d02('0x72')]=function(_0x35abc1,_0x5bd245,_0x27cc0a){_0x35abc1[_0x0d02('0x5a')][_0x0d02('0x73')]=_0x35abc1[_0x0d02('0x70')][_0x0d02('0x71')];return db[_0x0d02('0x3d')]['find']({'where':{'id':_0x35abc1[_0x0d02('0x55')]['id']}})[_0x0d02('0x1f')](handleEntityNotFound(_0x5bd245,null))['then'](saveUpdates(_0x35abc1[_0x0d02('0x5a')],null))['then'](respondWithResult(_0x5bd245,null))[_0x0d02('0x28')](handleError(_0x5bd245,null));};exports['addCustomerAvatar']=function(_0x5c352d,_0x476362,_0x4fe81e){_0x5c352d['body'][_0x0d02('0x74')]=_0x5c352d[_0x0d02('0x70')][_0x0d02('0x71')];return db[_0x0d02('0x3d')][_0x0d02('0x58')]({'where':{'id':_0x5c352d[_0x0d02('0x55')]['id']}})[_0x0d02('0x1f')](handleEntityNotFound(_0x476362,null))['then'](saveUpdates(_0x5c352d[_0x0d02('0x5a')],null))[_0x0d02('0x1f')](respondWithResult(_0x476362,null))[_0x0d02('0x28')](handleError(_0x476362,null));};exports[_0x0d02('0x75')]=function(_0x5de6d6,_0x12970e,_0x197382){_0x5de6d6[_0x0d02('0x5a')][_0x0d02('0x76')]=_0x5de6d6[_0x0d02('0x70')][_0x0d02('0x71')];return db['ChatWebsite'][_0x0d02('0x58')]({'where':{'id':_0x5de6d6[_0x0d02('0x55')]['id']}})[_0x0d02('0x1f')](handleEntityNotFound(_0x12970e,null))[_0x0d02('0x1f')](saveUpdates(_0x5de6d6[_0x0d02('0x5a')],null))[_0x0d02('0x1f')](respondWithResult(_0x12970e,null))[_0x0d02('0x28')](handleError(_0x12970e,null));};exports['getLogo']=function(_0x1b9678,_0x5c2f17,_0xbd3f1){var _0x42fbb6=path[_0x0d02('0x77')](config[_0x0d02('0x78')],_0x0d02('0x79'));var _0x3273dd={'where':{'id':_0x1b9678['params']['id']},'attributes':['id',_0x0d02('0x6f')],'raw':!![]};var _0x2fc6a0=![];return require(_0x0d02('0x17'))['getLicense']()[_0x0d02('0x1f')](function(_0x50a2cf){if(_0x50a2cf){_0x2fc6a0=_0x50a2cf[_0x0d02('0x7a')];}})[_0x0d02('0x1f')](function(){return db[_0x0d02('0x3d')][_0x0d02('0x58')](_0x3273dd);})['then'](handleEntityNotFound(_0x5c2f17,null))[_0x0d02('0x1f')](function(_0x29c9cd){if(_0x29c9cd){if(!_[_0x0d02('0x7b')](_0x29c9cd[_0x0d02('0x6f')])){if(fs['existsSync'](path['join'](config['root'],_0x0d02('0x7c'),_0x29c9cd[_0x0d02('0x6f')]))&&_0x2fc6a0){_0x42fbb6=path[_0x0d02('0x77')](config[_0x0d02('0x78')],'server/files/images/logos/',_0x29c9cd[_0x0d02('0x6f')]);}}return _0x5c2f17[_0x0d02('0x7d')](_0x42fbb6);}})[_0x0d02('0x28')](handleError(_0x5c2f17,null));};exports[_0x0d02('0x7e')]=function(_0x2e649f,_0x2fdb7c,_0x2c52e8){var _0x34b614=path[_0x0d02('0x77')](config[_0x0d02('0x78')],_0x0d02('0x7f'));var _0x59dc6b={'where':{'id':_0x2e649f[_0x0d02('0x55')]['id']},'attributes':['id','agentAvatar'],'raw':!![]};return db[_0x0d02('0x3d')][_0x0d02('0x58')](_0x59dc6b)['then'](handleEntityNotFound(_0x2fdb7c,null))[_0x0d02('0x1f')](function(_0x4c183e){if(_0x4c183e){if(!_[_0x0d02('0x7b')](_0x4c183e[_0x0d02('0x73')])){if(fs[_0x0d02('0x80')](path[_0x0d02('0x77')](config[_0x0d02('0x78')],'server/files/images/avatars/',_0x4c183e[_0x0d02('0x73')]))){_0x34b614=path[_0x0d02('0x77')](config['root'],_0x0d02('0x81'),_0x4c183e[_0x0d02('0x73')]);}}return _0x2fdb7c[_0x0d02('0x7d')](_0x34b614);}})['catch'](handleError(_0x2fdb7c,null));};exports['getCustomerAvatar']=function(_0x16ba30,_0x489bc0,_0x7f88d1){var _0x2f38c1=path[_0x0d02('0x77')](config[_0x0d02('0x78')],_0x0d02('0x82'));var _0x97e73c={'where':{'id':_0x16ba30[_0x0d02('0x55')]['id']},'attributes':['id',_0x0d02('0x74'),_0x0d02('0x83')],'raw':!![]};return db[_0x0d02('0x3d')][_0x0d02('0x58')](_0x97e73c)[_0x0d02('0x1f')](handleEntityNotFound(_0x489bc0,null))[_0x0d02('0x1f')](function(_0x3087e4){if(_0x3087e4){if(!_[_0x0d02('0x7b')](_0x3087e4[_0x0d02('0x74')])){if(fs['existsSync'](path['join'](config[_0x0d02('0x78')],_0x0d02('0x81'),_0x3087e4['customerAvatar']))&&_0x3087e4[_0x0d02('0x83')]){_0x2f38c1=path[_0x0d02('0x77')](config['root'],_0x0d02('0x81'),_0x3087e4[_0x0d02('0x74')]);}}return _0x489bc0[_0x0d02('0x7d')](_0x2f38c1);}})[_0x0d02('0x28')](handleError(_0x489bc0,null));};exports['getSystemAvatar']=function(_0x1895a6,_0x1d16ce,_0x341c79){var _0x517d83=path[_0x0d02('0x77')](config['root'],_0x0d02('0x84'));var _0x1e6722={'where':{'id':_0x1895a6['params']['id']},'attributes':['id',_0x0d02('0x76')],'raw':!![]};return db[_0x0d02('0x3d')][_0x0d02('0x58')](_0x1e6722)[_0x0d02('0x1f')](handleEntityNotFound(_0x1d16ce,null))[_0x0d02('0x1f')](function(_0x48f2fd){if(_0x48f2fd){if(!_[_0x0d02('0x7b')](_0x48f2fd[_0x0d02('0x76')])){if(fs['existsSync'](path[_0x0d02('0x77')](config[_0x0d02('0x78')],_0x0d02('0x81'),_0x48f2fd[_0x0d02('0x76')]))){_0x517d83=path[_0x0d02('0x77')](config[_0x0d02('0x78')],_0x0d02('0x81'),_0x48f2fd[_0x0d02('0x76')]);}}return _0x1d16ce['download'](_0x517d83);}})[_0x0d02('0x28')](handleError(_0x1d16ce,null));};exports['notify']=function(_0x32a6a6,_0x550442,_0x324f70){var _0x5870c2=require(_0x0d02('0x85'));var _0xbf3318=new _0x5870c2();var _0x24ee28=_0xbf3318[_0x0d02('0x86')](_0x32a6a6[_0x0d02('0x87')][_0x0d02('0x88')])[_0x0d02('0x89')]();var _0x58d0a5={'body':_0x32a6a6['body'],'channel':_0x0d02('0x8a')};var _0x354127=[];var _0xdcbe12=[];var _0x4fe7d6={};var _0x522a51=![];return db[_0x0d02('0x8b')][_0x0d02('0x60')]()[_0x0d02('0x1f')](function(_0x4c4c64){if(!_0x4c4c64){throw new db['Sequelize']['ValidationError'](_0x0d02('0x8c'));}_0x354127=_['difference'](_[_0x0d02('0x42')](_0x4c4c64),['createdAt',_0x0d02('0x8d')]);_0xdcbe12=_[_0x0d02('0x8e')](_[_0x0d02('0x42')](_0x4c4c64),[_0x0d02('0x8f'),'updatedAt',_0x0d02('0x90'),_0x0d02('0x91')]);if(_0x32a6a6[_0x0d02('0x5a')]['id']){delete _0x32a6a6['body']['id'];}if(_['isNil'](_0x32a6a6['body'][_0x0d02('0x92')])){throw new db[(_0x0d02('0x93'))][(_0x0d02('0x94'))]('from\x20is\x20mandatory');}if(_[_0x0d02('0x7b')](_0x32a6a6[_0x0d02('0x5a')]['body'])||_0x32a6a6[_0x0d02('0x5a')][_0x0d02('0x5a')]===''){throw new db[(_0x0d02('0x93'))]['ValidationError'](_0x0d02('0x95'));}if(_[_0x0d02('0x7b')](_0x32a6a6[_0x0d02('0x5a')][_0x0d02('0x96')])){throw new db[(_0x0d02('0x93'))][(_0x0d02('0x94'))](_0x0d02('0x97')+_0xdcbe12);}if(!_[_0x0d02('0x98')](_0xdcbe12,_0x32a6a6[_0x0d02('0x5a')][_0x0d02('0x96')])){throw new db[(_0x0d02('0x93'))][(_0x0d02('0x94'))](_0x0d02('0x99')+_0xdcbe12);}_0x4fe7d6[_0x32a6a6['body'][_0x0d02('0x96')]]=_0x32a6a6[_0x0d02('0x5a')][_0x0d02('0x92')];})[_0x0d02('0x1f')](function(){return db[_0x0d02('0x3d')][_0x0d02('0x58')]({'where':{'id':_0x32a6a6[_0x0d02('0x55')]['id']},'include':[{'model':db[_0x0d02('0x9a')],'as':'List','include':[{'model':db['CmContact'],'as':_0x0d02('0x9b'),'where':_0x4fe7d6,'limit':0x1,'order':[[_0x0d02('0x8d'),_0x0d02('0x9c')]]}]},{'model':db[_0x0d02('0x9d')],'as':'Applications'}]});})[_0x0d02('0x1f')](handleEntityNotFound(_0x550442,null))[_0x0d02('0x1f')](function(_0x262030){if(_0x262030&&_0x262030[_0x0d02('0x9e')]){_0x58d0a5[_0x0d02('0x9f')]=_0x262030;_0x58d0a5[_0x0d02('0xa0')]=_0x262030[_0x0d02('0xa1')];_0x58d0a5['list']=_0x262030[_0x0d02('0x9e')];_0x58d0a5['applications']=_[_0x0d02('0xa2')](_0x58d0a5['applications'],[_0x0d02('0xa3')],[_0x0d02('0xa4')]);if(_0x58d0a5[_0x0d02('0x9f')]['Applications']){delete _0x58d0a5['account'][_0x0d02('0xa1')];}if(_0x58d0a5[_0x0d02('0x9f')]['List']&&_0x58d0a5[_0x0d02('0x9f')][_0x0d02('0x9e')][_0x0d02('0x9b')][_0x0d02('0x47')]){return _0x58d0a5[_0x0d02('0x9f')][_0x0d02('0x9e')][_0x0d02('0x9b')][0x0];}var _0x34cad7=_['defaults'](_0x32a6a6['body'],{'firstName':_0x32a6a6[_0x0d02('0x5a')][_0x0d02('0x92')],'ListId':_0x262030[_0x0d02('0x91')]});_0x34cad7[_0x32a6a6['body']['mapKey']]=_0x32a6a6[_0x0d02('0x5a')]['from'];return db[_0x0d02('0x8b')][_0x0d02('0x59')](_0x34cad7,{'fields':_0x354127,'raw':!![]});}})[_0x0d02('0x1f')](handleEntityNotFound(_0x550442,null))[_0x0d02('0x1f')](function(_0x1e3675){_0x58d0a5[_0x0d02('0xa5')]=_0x1e3675;var _0x5b9bfb=_0x32a6a6[_0x0d02('0x5a')][_0x0d02('0xa6')];if(_0x32a6a6['headers'][_0x0d02('0xa7')]){_0x5b9bfb=_0x32a6a6[_0x0d02('0x87')][_0x0d02('0xa7')];}else if(_0x32a6a6[_0x0d02('0x87')][_0x0d02('0xa8')]){_0x5b9bfb=_['first'](_0x32a6a6['headers'][_0x0d02('0xa8')]['split'](','));}if(_0x1e3675){var _0x22ee8e={'ContactId':_0x1e3675['id'],'ChatWebsiteId':_0x32a6a6['params']['id'],'from':(_0x1e3675[_0x0d02('0xa9')]||'')+'\x20'+(_0x1e3675[_0x0d02('0xaa')]||''),'customerIp':_0x5b9bfb,'customerPort':_0x32a6a6[_0x0d02('0x87')][_0x0d02('0xab')]?_0x32a6a6[_0x0d02('0x87')]['x-real-port']:null,'referer':_0x32a6a6[_0x0d02('0x5a')][_0x0d02('0xac')],'browserName':_0x24ee28[_0x0d02('0xad')][_0x0d02('0x38')]&&_0x24ee28[_0x0d02('0xad')][_0x0d02('0xae')]?util[_0x0d02('0xaf')](_0x0d02('0xb0'),_0x24ee28['browser'][_0x0d02('0x38')],_0x24ee28['browser']['version']):_0x0d02('0xb1'),'browserVersion':_0x24ee28['browser'][_0x0d02('0xae')]||_0x0d02('0xb1'),'osName':util['format'](_0x0d02('0xb0'),_0x24ee28['os'][_0x0d02('0x38')],_0x24ee28['os'][_0x0d02('0xae')]),'osVersion':_0x24ee28['os']['version'],'deviceModel':_0x24ee28[_0x0d02('0xb2')][_0x0d02('0x40')]&&_0x24ee28[_0x0d02('0xb2')][_0x0d02('0xb3')]?util[_0x0d02('0xaf')](_0x0d02('0xb4'),_0x24ee28[_0x0d02('0xb2')][_0x0d02('0x40')],_0x24ee28['device']['vendor'],_0x24ee28[_0x0d02('0xb2')][_0x0d02('0x3e')]):null,'deviceVendor':_0x24ee28['device'][_0x0d02('0xb3')],'deviceType':_0x24ee28[_0x0d02('0xb2')][_0x0d02('0x3e')],'formData':JSON[_0x0d02('0xb5')](_0x32a6a6[_0x0d02('0x5a')])};var _0x44f004={'ChatWebsiteId':_0x32a6a6['params']['id'],'closed':![]};if(_0x32a6a6[_0x0d02('0x5a')][_0x0d02('0xb6')]){_0x44f004['threadId']=_0x32a6a6[_0x0d02('0x5a')][_0x0d02('0xb6')];return db['ChatInteraction']['find']({'where':_0x44f004})['then'](function(_0x350454){if(_0x350454){return[_0x350454,![]];}_0x22ee8e[_0x0d02('0xb6')]=_0x32a6a6['body'][_0x0d02('0xb6')];_0x22ee8e[_0x0d02('0xb7')]=_0x32a6a6['body'][_0x0d02('0xb7')];return db[_0x0d02('0xb8')][_0x0d02('0x59')](_0x22ee8e)[_0x0d02('0x1f')](function(_0x46fc69){return[_0x46fc69,!![]];});});}_0x44f004[_0x0d02('0xb9')]=_0x1e3675['id'];if(_0x32a6a6[_0x0d02('0x5a')][_0x0d02('0xba')]&&_0x32a6a6[_0x0d02('0x5a')][_0x0d02('0xba')]['id']){_0x44f004['id']=_0x32a6a6['body'][_0x0d02('0xba')]['id'];return db[_0x0d02('0xb8')][_0x0d02('0x58')]({'where':_0x44f004})['then'](function(_0x54d701){if(_0x54d701){return[_0x54d701,![]];}return db['ChatInteraction'][_0x0d02('0x59')](_0x22ee8e)[_0x0d02('0x1f')](function(_0x273966){return[_0x273966,!![]];});});}return db['ChatInteraction'][_0x0d02('0x59')](_0x22ee8e)[_0x0d02('0x1f')](function(_0x34f9e4){return[_0x34f9e4,!![]];});}})[_0x0d02('0xbb')](function(_0x3cb0b8,_0x7041c1){if(_0x3cb0b8){_0x522a51=_0x7041c1;if(!_0x7041c1){var _0x3003b1={'from':(_0x58d0a5[_0x0d02('0xa5')]['firstName']||'')+'\x20'+(_0x58d0a5[_0x0d02('0xa5')][_0x0d02('0xaa')]||'')};if(_0x32a6a6[_0x0d02('0x5a')]['threadId']&&_0x32a6a6['body'][_0x0d02('0xbc')]&&_0x32a6a6[_0x0d02('0x5a')][_0x0d02('0xb6')]!=_0x32a6a6[_0x0d02('0x5a')]['messageId']){_0x3003b1[_0x0d02('0xb6')]=_0x32a6a6['body']['messageId'];}return _0x3cb0b8[_0x0d02('0x33')](_0x3003b1);}else{return _0x3cb0b8;}}})[_0x0d02('0x1f')](function(_0x10bd7e){_0x58d0a5[_0x0d02('0xba')]=_0x10bd7e[_0x0d02('0x35')]({'plain':!![]});_0x58d0a5['interaction'][_0x0d02('0xbd')]=_0x522a51;if(_0x58d0a5[_0x0d02('0xba')][_0x0d02('0xbd')]){if(_0x58d0a5[_0x0d02('0x9f')][_0x0d02('0xbe')]){_0x58d0a5['applications'][_0x0d02('0xbf')]({'id':0x0,'priority':_0x58d0a5[_0x0d02('0xa0')]['length']+0x1,'app':'close','appdata':_0x0d02('0xc0'),'interval':'*,*,*,*'});}}return db[_0x0d02('0xc1')][_0x0d02('0x59')]({'body':_0x32a6a6[_0x0d02('0x5a')]['body'],'ChatWebsiteId':_0x32a6a6['params']['id'],'ChatInteractionId':_0x10bd7e['id'],'direction':'in','ContactId':_0x58d0a5['contact']['id'],'AttachmentId':_0x32a6a6['body']['AttachmentId']});})[_0x0d02('0x1f')](function(_0x33a8f7){_0x58d0a5[_0x0d02('0x26')]=_0x33a8f7;if(_0x58d0a5['interaction'][_0x0d02('0xc2')]){return db[_0x0d02('0xc3')]['find']({'attributes':['id',_0x0d02('0x38')],'where':{'id':_0x58d0a5[_0x0d02('0xba')]['UserId']}})[_0x0d02('0x1f')](function(_0x312b41){if(_0x312b41){_0x58d0a5[_0x0d02('0xa0')][_0x0d02('0xc4')]({'id':0x0,'priority':0x0,'app':_0x0d02('0xc5'),'appdata':_0x312b41[_0x0d02('0x38')]+','+(_0x58d0a5['account'][_0x0d02('0xc6')]||0xa),'interval':_0x0d02('0xc7')});_0x58d0a5[_0x0d02('0xc8')]=!![];}return respondWithRpcPromise(_0x0d02('0xc9'),_0x0d02('0xca'),_0x58d0a5);});}return respondWithRpcPromise(_0x0d02('0xc9'),_0x0d02('0xca'),_0x58d0a5);})[_0x0d02('0x1f')](function(_0x23b96c){respondWithRpcPromise('EventManager','EventManager',{'event':_0x0d02('0xcb'),'message':_0x23b96c},client9002);return _0x23b96c;})['then'](respondWithResult(_0x550442,null))[_0x0d02('0x28')](handleError(_0x550442,null));};exports[_0x0d02('0xcc')]=function(_0x5d00b9,_0x385c75,_0x51310c){var _0x5cd080,_0x294474,_0x10f3e2;var _0x6385a9=[];var _0xb7e130=[];var _0x351c36={};var _0x1b58f0=_0x5d00b9['files']||[];var _0x356bb4=[];var _0x2dc9aa;return db['CmContact'][_0x0d02('0x60')]()[_0x0d02('0x1f')](function(_0x2a3616){if(!_0x2a3616){throw new db[(_0x0d02('0x93'))][(_0x0d02('0x94'))](_0x0d02('0x8c'));}_0xb7e130=_['difference'](_[_0x0d02('0x42')](_0x2a3616),['createdAt',_0x0d02('0x8d')]);_0x6385a9=_[_0x0d02('0x8e')](_[_0x0d02('0x42')](_0x2a3616),[_0x0d02('0x8f'),_0x0d02('0x8d'),_0x0d02('0x90'),_0x0d02('0x91')]);if(_0x5d00b9['body']['id']){delete _0x5d00b9['body']['id'];}if(_[_0x0d02('0x7b')](_0x5d00b9[_0x0d02('0x5a')]['from'])){throw _0x385c75[_0x0d02('0x2b')](0x1f4)[_0x0d02('0x39')](new db[(_0x0d02('0x93'))][(_0x0d02('0x94'))](_0x0d02('0xcd')));}if(_[_0x0d02('0x7b')](_0x5d00b9['body'][_0x0d02('0x5a')])||_0x5d00b9[_0x0d02('0x5a')][_0x0d02('0x5a')]===''){throw _0x385c75[_0x0d02('0x2b')](0x1f4)[_0x0d02('0x39')](new db[(_0x0d02('0x93'))][(_0x0d02('0x94'))](_0x0d02('0x95')));}if(_[_0x0d02('0x7b')](_0x5d00b9['body'][_0x0d02('0xce')])){throw _0x385c75[_0x0d02('0x2b')](0x1f4)[_0x0d02('0x39')](new db[(_0x0d02('0x93'))][(_0x0d02('0x94'))](_0x0d02('0xcf')+_0x6385a9));}if(!_[_0x0d02('0x98')](_0x6385a9,_0x5d00b9[_0x0d02('0x5a')][_0x0d02('0xce')])){throw _0x385c75[_0x0d02('0x2b')](0x1f4)[_0x0d02('0x39')](new db[(_0x0d02('0x93'))]['ValidationError'](_0x0d02('0xd0')+_0x6385a9));}_0x351c36[_0x5d00b9['body'][_0x0d02('0xce')]]=_0x5d00b9['body'][_0x0d02('0x92')];})[_0x0d02('0x1f')](function(){return db[_0x0d02('0x3d')][_0x0d02('0x58')]({'where':{'id':_0x5d00b9[_0x0d02('0x55')]['id']},'include':[{'model':db['CmList'],'as':_0x0d02('0x9e')},{'model':db[_0x0d02('0xd1')],'as':_0x0d02('0xd1')}]});})[_0x0d02('0x1f')](handleEntityNotFound(_0x385c75,null))['then'](function(_0x5327dd){if(_0x5327dd&&_0x5327dd[_0x0d02('0x9e')]){_0x294474=_0x5327dd;var _0x1d9b71=_['defaults'](_0x5d00b9[_0x0d02('0x5a')],{'firstName':_0x5d00b9['body'][_0x0d02('0x92')],'phone':_0x5d00b9[_0x0d02('0x5a')][_0x0d02('0x92')],'ListId':_0x5327dd['ListId']});_0x1d9b71[_0x5d00b9['body'][_0x0d02('0xce')]]=_0x5d00b9[_0x0d02('0x5a')]['from'];return db[_0x0d02('0x8b')][_0x0d02('0xd2')]({'where':_0x351c36,'defaults':_0x1d9b71});}})[_0x0d02('0xbb')](function(_0x269389){if(_0x269389){_0x10f3e2=_0x269389;var _0x48055d=fs[_0x0d02('0xd3')](path[_0x0d02('0x77')](config['root'],'server/files/templates/chatOfflineMessage.ejs'),'utf8');var _0x49c4d6=ejs['render'](_0x48055d,{'body':_[_0x0d02('0xd4')](_0x5d00b9[_0x0d02('0x5a')][_0x0d02('0x5a')]),'bodyTitle':_0x294474['offlineMessageBody']});return db[_0x0d02('0xd5')][_0x0d02('0x59')]({'body':_0x49c4d6,'ContactId':_0x269389['id'],'ChatWebsiteId':_0x294474['id']});}})[_0x0d02('0x1f')](function(_0x253437){_0x2dc9aa=_0x253437;if(_0x1b58f0[_0x0d02('0x47')]){var _0x57b039=_0x1b58f0[_0x0d02('0x3c')](function(_0x59cb39){return{'name':_0x59cb39[_0x0d02('0xd6')],'basename':_0x59cb39['filename'],'type':_0x59cb39['mimetype'],'ChatOfflineMessageId':_0x253437['id']};});_0x356bb4=_0x57b039[_0x0d02('0x3c')](_0x451830=>{var _0x149d4e={'filename':_0x451830[_0x0d02('0x38')],'path':path['join'](config[_0x0d02('0x78')],_0x0d02('0xd7'),_0x0d02('0xd8'),'attachments',_0x0d02('0xd9'),_0x451830[_0x0d02('0xda')])};return _0x149d4e;});if(!_0x294474[_0x0d02('0xdb')]){return db[_0x0d02('0xdc')][_0x0d02('0xdd')](function(_0xe17b4a){return db[_0x0d02('0xde')][_0x0d02('0xdf')](_0x57b039,{'transaction':_0xe17b4a});});}}})['then'](function(){if(_0x2dc9aa){_0x5cd080=_0x2dc9aa;return db['MailAccount'][_0x0d02('0x64')]({'where':{'active':!![]},'include':[{'model':db[_0x0d02('0xe0')],'as':_0x0d02('0xe1'),'raw':!![]}]});}})[_0x0d02('0x1f')](function(_0x512cfd){if(_0x512cfd&&_0x512cfd['Smtp']&&_0x294474[_0x0d02('0xe2')]&&_0x294474['forwardOfflineAddress']){var _0x44ed90={'tls':{'rejectUnauthorized':![]}};if(_0x512cfd[_0x0d02('0xe1')][_0x0d02('0xe3')]){_0x44ed90[_0x0d02('0xe3')]=_0x512cfd[_0x0d02('0xe1')][_0x0d02('0xe3')];}else{_0x44ed90[_0x0d02('0xe4')]=_0x512cfd[_0x0d02('0xe1')][_0x0d02('0xe4')];_0x44ed90[_0x0d02('0xe5')]=_0x512cfd['Smtp'][_0x0d02('0xe5')];_0x44ed90[_0x0d02('0xe6')]=_0x512cfd[_0x0d02('0xe1')][_0x0d02('0xe6')];}if(_0x512cfd[_0x0d02('0xe1')][_0x0d02('0xe7')]){_0x44ed90[_0x0d02('0xe8')]={'user':_0x512cfd[_0x0d02('0xe1')][_0x0d02('0x5b')],'pass':_0x512cfd[_0x0d02('0xe1')]['pass']};}return respondWithRpcPromise(_0x0d02('0xe9'),_0x0d02('0xea'),{'account':_0x44ed90,'message':{'from':util[_0x0d02('0xaf')](_0x0d02('0xeb'),_0x512cfd[_0x0d02('0x38')],_0x512cfd[_0x0d02('0xec')]||_0x512cfd[_0x0d02('0xe1')][_0x0d02('0x5b')]),'to':_0x294474[_0x0d02('0xed')],'subject':_0x294474[_0x0d02('0xee')],'html':_0x5cd080[_0x0d02('0x5a')],'attachments':_0x356bb4}},client9003)[_0x0d02('0x1f')](function(){return _0x5cd080;})['catch'](function(_0x5dec39){console['error'](_0x5dec39);});}})[_0x0d02('0x1f')](function(){if(_0x294474&&_0x294474['openNewInteraction']&&_0x294474[_0x0d02('0xef')]){var _0x195bb6=[];if(_0x1b58f0[_0x0d02('0x47')]){_0x195bb6=_0x1b58f0[_0x0d02('0x3c')](function(_0x2876ab){return{'name':_0x2876ab[_0x0d02('0xd6')],'basename':_0x2876ab[_0x0d02('0x71')],'type':_0x2876ab[_0x0d02('0xf0')],'ChatOfflineMessageId':_0x2dc9aa['id']};});}var _0x3eefc4;if(!_[_0x0d02('0x7b')](_0x294474[_0x0d02('0xf1')])){var _0x19a4c0=_[_0x0d02('0x3c')](_0x5d00b9['body'],function(_0x3824db){return _0x3824db;});var _0x399643=_[_0x0d02('0xf2')](_0x19a4c0)[0x0];var _0x2ef4c3=_[_0x0d02('0xf3')](_0x399643,function(_0x1c85c0){return _0x1c85c0;});_0x3eefc4=_0x2ef4c3[0x1][_0x294474[_0x0d02('0xf1')]];}var _0x3e4319={'from':_0x10f3e2[_0x0d02('0xec')],'firstName':_0x10f3e2[_0x0d02('0xa9')],'lastName':_0x10f3e2['lastName'],'mapKey':_0x0d02('0xec'),'message':{'from':_0x10f3e2[_0x0d02('0xec')],'to':_0x294474[_0x0d02('0xd1')][_0x0d02('0xec')],'cc':'','subject':_[_0x0d02('0x7b')](_0x3eefc4)?_0x294474[_0x0d02('0xee')]:_0x3eefc4,'messageId':'','sentAt':new Date(),'attach':_0x195bb6['length'],'attachments':_0x195bb6,'originChannel':_0x0d02('0xf4'),'ChatWebsiteId':_0x294474['id'],'ChatOfflineMessageId':_0x5cd080['id'],'originTo':_0x294474[_0x0d02('0xd1')][_0x0d02('0xec')]},'body':_0x5cd080[_0x0d02('0x5a')]};var _0x44c720={'account':{'id':_0x294474[_0x0d02('0xef')]},'body':_0x3e4319,'log':_0x0d02('0xf5')};return respondWithRpcPromise(_0x0d02('0xf5'),'notifyMail',_0x44c720,client9001)[_0x0d02('0x1f')](function(){return _0x5cd080;})[_0x0d02('0x28')](function(_0x90c989){console['error'](_0x90c989);});}return;})[_0x0d02('0x1f')](function(){if(_0x5cd080){return _0x5cd080;}})[_0x0d02('0x1f')](respondWithResult(_0x385c75,null))[_0x0d02('0x28')](function(_0x513e59){console[_0x0d02('0x24')]('catch',_0x513e59);for(var _0x1a4d4b of _0x1b58f0){var _0x1d315d=path['join'](config[_0x0d02('0x78')],_0x0d02('0xd7'),_0x0d02('0xd8'),'attachments','offline-chat',_0x1a4d4b[_0x0d02('0x71')]);fs_extra[_0x0d02('0xf6')](_0x1d315d)[_0x0d02('0x28')](function(_0x1b3d30){console[_0x0d02('0x24')]('Could\x20not\x20remove\x20attachment\x20file',_0x1d315d,_0x1b3d30);});}});};exports[_0x0d02('0xf7')]=function(_0x4d96e3,_0x4a4a0f,_0x85f4a0){return db[_0x0d02('0xb8')][_0x0d02('0x58')]({'where':{'id':_0x4d96e3[_0x0d02('0x55')]['id']}})[_0x0d02('0x1f')](handleEntityNotFound(_0x4a4a0f,null))['then'](function(_0x2a076a){if(_0x2a076a){return _0x2a076a[_0x0d02('0xf7')](_0x4d96e3['body'][_0x0d02('0x6d')],_['omit'](_0x4d96e3[_0x0d02('0x5a')],[_0x0d02('0x6d'),'id'])||{});}})['then'](respondWithResult(_0x4a4a0f,null))[_0x0d02('0x28')](handleError(_0x4a4a0f,null));};exports[_0x0d02('0xf8')]=function(_0x36615a,_0x450cf7,_0x41b1e2){var _0x4caf23={'raw':![],'where':{}};var _0x531983={};var _0x2376b1={'count':0x0,'rows':[]};return db[_0x0d02('0x3d')]['findOne']({'where':{'id':_0x36615a[_0x0d02('0x55')]['id']}})[_0x0d02('0x1f')](handleEntityNotFound(_0x450cf7,null))['then'](function(_0x252f50){if(_0x252f50){_0x531983['model']=_[_0x0d02('0x42')](db[_0x0d02('0xb8')][_0x0d02('0x57')]);_0x531983[_0x0d02('0x41')]=_['keys'](_0x36615a[_0x0d02('0x41')]);_0x531983[_0x0d02('0x43')]=_[_0x0d02('0x44')](_0x531983[_0x0d02('0x40')],_0x531983[_0x0d02('0x41')]);_0x4caf23['attributes']=_['intersection'](_0x531983[_0x0d02('0x40')],qs[_0x0d02('0x46')](_0x36615a[_0x0d02('0x41')][_0x0d02('0x46')]));_0x4caf23['attributes']=_0x4caf23[_0x0d02('0x45')][_0x0d02('0x47')]?_0x4caf23[_0x0d02('0x45')]:_0x531983[_0x0d02('0x40')];if(!_0x36615a[_0x0d02('0x41')][_0x0d02('0x48')](_0x0d02('0x49'))){_0x4caf23[_0x0d02('0x2e')]=qs[_0x0d02('0x2e')](_0x36615a[_0x0d02('0x41')][_0x0d02('0x2e')]);_0x4caf23[_0x0d02('0x2d')]=qs[_0x0d02('0x2d')](_0x36615a[_0x0d02('0x41')]['offset']);}_0x4caf23[_0x0d02('0x4a')]=qs['sort'](_0x36615a['query'][_0x0d02('0x4b')]);_0x4caf23[_0x0d02('0x4c')]=qs[_0x0d02('0x43')](_[_0x0d02('0x4d')](_0x36615a[_0x0d02('0x41')],_0x531983[_0x0d02('0x43')]));_0x4caf23['where'][_0x0d02('0x69')]=_0x252f50['id'];if(_0x36615a[_0x0d02('0x41')][_0x0d02('0x4e')]){_0x4caf23[_0x0d02('0x4c')]=_[_0x0d02('0x50')](_0x4caf23[_0x0d02('0x4c')],{'$or':_[_0x0d02('0x3c')](_0x4caf23[_0x0d02('0x45')],function(_0x9949af){var _0x54e144={};_0x54e144[_0x9949af]={'$like':'%'+_0x36615a[_0x0d02('0x41')][_0x0d02('0x4e')]+'%'};return _0x54e144;})});}_0x4caf23=_[_0x0d02('0x50')]({},_0x4caf23,_0x36615a[_0x0d02('0x65')]);return db[_0x0d02('0xb8')][_0x0d02('0x2f')]({'where':_0x4caf23['where']})['then'](function(_0x5aba8c){_0x2376b1[_0x0d02('0x2f')]=_0x5aba8c;if(_0x36615a[_0x0d02('0x41')]['includeAll']){_0x4caf23[_0x0d02('0x52')]=[{'model':db[_0x0d02('0x8b')],'as':'Contact','required':![]},{'model':db[_0x0d02('0xc3')],'as':_0x0d02('0xf9'),'attributes':[_0x0d02('0x38'),_0x0d02('0xfa'),_0x0d02('0xfb')],'required':![]},{'model':db[_0x0d02('0xfc')],'as':'Tags','attributes':['id',_0x0d02('0x38'),_0x0d02('0xfd')],'where':_0x36615a[_0x0d02('0x41')][_0x0d02('0xfe')]?{'id':_0x36615a[_0x0d02('0x41')]['tag']}:undefined,'required':_0x36615a[_0x0d02('0x41')]['tag']?!![]:![]}];}return db['ChatInteraction'][_0x0d02('0x53')](_0x4caf23);})['then'](function(_0x2fb159){_0x2376b1['rows']=_0x2fb159;return _0x2376b1;});}})['then'](respondWithFilteredResult(_0x450cf7,_0x4caf23))[_0x0d02('0x28')](handleError(_0x450cf7,null));};function iftimePromise(_0x2426da,_0x4ab61f){return respondWithRpcPromise(_0x0d02('0xff'),_0x0d02('0x100'),{'command':_0x4ab61f[_0x0d02('0x101')]?util[_0x0d02('0xaf')]('iftime\x20%s,%s',_0x2426da['interval'],_0x4ab61f[_0x0d02('0x101')]):util[_0x0d02('0xaf')](_0x0d02('0x102'),_0x2426da['interval'])},client9002)['then'](function(_0x37199e){var _0x118f75=_0x37199e&&_0x37199e['indexOf']('true')>=0x0?!![]:![];logger[_0x0d02('0x20')](_0x0d02('0x103'),_0x4ab61f['id'],_0x2426da['id'],_0x2426da[_0x0d02('0x104')],_0x118f75?'ONLINE':_0x0d02('0x105'),_0x4ab61f[_0x0d02('0x101')]?_0x4ab61f[_0x0d02('0x101')]:_0x0d02('0x106'));return _0x118f75;})[_0x0d02('0x28')](function(_0x35a4ae){logger['error'](_0x0d02('0x103'),_0x4ab61f['id'],_0x2426da['id'],_0x2426da['interval'],util[_0x0d02('0x107')](_0x35a4ae,{'showHidden':![],'depth':null}),_0x4ab61f[_0x0d02('0x101')]?_0x4ab61f[_0x0d02('0x101')]:_0x0d02('0x106'));return![];});}exports['getSnippet']=function(_0x467877,_0xb53a7c,_0x58c54c){var _0x45db58=0x0;var _0x25ba1e=0x0;var _0x58bd70=![];var _0x310f97;var _0x2d3952;return db[_0x0d02('0x3d')][_0x0d02('0x58')]({'where':{'id':_0x467877[_0x0d02('0x55')]['id']},'include':[{'model':db[_0x0d02('0x108')],'as':_0x0d02('0x108'),'include':[{'model':db['Interval'],'as':_0x0d02('0x109'),'attributes':['id','interval'],'raw':!![]}]}]})['then'](handleEntityNotFound(_0xb53a7c,null))['then'](function(_0x2bf036){if(_0x2bf036){_0x310f97=_0x2bf036;return _0x2bf036[_0x0d02('0x10a')]({'raw':!![]});}})[_0x0d02('0x1f')](function(_0x1b798f){if(_0x310f97){if(_0x1b798f){_0x2d3952=_0x1b798f;}}return require(_0x0d02('0x17'))[_0x0d02('0x10b')]();})[_0x0d02('0x1f')](function(_0x27ce12){if(_0x27ce12){_0x25ba1e=_0x27ce12[_0x0d02('0x10c')];_0x58bd70=_0x27ce12['custom'];}})[_0x0d02('0x1f')](function(){return db[_0x0d02('0xb8')][_0x0d02('0x2f')]({'where':{'closed':![]}});})[_0x0d02('0x1f')](function(_0x4513c1){_0x45db58=_0x4513c1;if(_0x25ba1e&&_0x4513c1>_0x25ba1e){return db['License'][_0x0d02('0x64')]({'where':{'id':0x1}})[_0x0d02('0x1f')](function(_0x4eff2a){if(_0x4eff2a){_0x4eff2a['increment'](_0x0d02('0x10d'));}});}})[_0x0d02('0x1f')](function(){if(_0x310f97[_0x0d02('0x108')]&&_0x310f97[_0x0d02('0x108')][_0x0d02('0x109')]){var _0x1a877e=[];for(var _0x283a8c=0x0;_0x283a8c<_0x310f97[_0x0d02('0x108')][_0x0d02('0x109')][_0x0d02('0x47')];_0x283a8c++){var _0x18d709=_0x310f97[_0x0d02('0x108')][_0x0d02('0x109')][_0x283a8c][_0x0d02('0x35')]({'plain':!![]});_0x1a877e['push'](iftimePromise(_0x18d709,_0x310f97));}return BPromise[_0x0d02('0x10e')](_0x1a877e)['then'](function(_0x4c171a){return _[_0x0d02('0x10f')](_0x4c171a);});}else{return!![];}})[_0x0d02('0x1f')](function(_0x56a135){var _0x47e832=fs['readFileSync'](path[_0x0d02('0x77')](config['root'],'server/files/chat/iframe.ejs'),_0x0d02('0x110'));var _0x5533cd={'remote':_0x310f97[_0x0d02('0x111')],'query':querystring[_0x0d02('0xb5')](_[_0x0d02('0x50')](_0x310f97[_0x0d02('0x35')]({'plain':!![]}),{'customerIp':_0x467877[_0x0d02('0x87')]['x-forwarded-for']||_0x467877[_0x0d02('0x87')]['x-real-ip']||_0x467877[_0x0d02('0x112')][_0x0d02('0x113')]||_0x467877['ip'],'referer':_0x467877['headers']['referer'],'openedInteractions':_0x45db58,'maxInteractions':_0x25ba1e,'virtual':_0x58bd70[_0x0d02('0x10c')],'online':_0x56a135,'custom':_0x58bd70}))['replace'](/'/g,'\x5c\x27')};_0xb53a7c[_0x0d02('0x39')](ejs[_0x0d02('0x114')](Mustache['render'](_0x47e832,_0x5533cd),{'proactiveActions':_0x2d3952,'alignment':_0x310f97[_0x0d02('0x115')],'verticalAlignment':_0x310f97[_0x0d02('0x116')],'div_color':_0x310f97[_0x0d02('0xfd')],'text_color':_0x310f97[_0x0d02('0x117')],'button_color':_0x310f97['color_button'],'background_color':_0x310f97[_0x0d02('0x118')]}));})[_0x0d02('0x28')](handleError(_0xb53a7c,null));};exports[_0x0d02('0x119')]=function(_0x5f3aad,_0x4ac90c,_0x53ab7c){return db['ChatWebsite'][_0x0d02('0x64')]({'where':{'id':_0x5f3aad['params']['id']}})[_0x0d02('0x1f')](handleEntityNotFound(_0x4ac90c,null))[_0x0d02('0x1f')](function(_0x297743){if(_0x297743){return db[_0x0d02('0xdc')][_0x0d02('0xdd')](function(_0x42260b){return db[_0x0d02('0x9d')][_0x0d02('0x34')]({'where':{'ChatWebsiteId':_0x5f3aad[_0x0d02('0x55')]['id']},'transaction':_0x42260b})[_0x0d02('0x1f')](function(_0x41d3b3){var _0x4612f3=_[_0x0d02('0x3c')](_0x5f3aad[_0x0d02('0x5a')],function(_0x10ccc1){_0x10ccc1[_0x0d02('0x69')]=_0x5f3aad[_0x0d02('0x55')]['id'];return _0x10ccc1;});return db['ChatApplication'][_0x0d02('0xdf')](_0x4612f3,{'transaction':_0x42260b});});})['then'](function(){return db[_0x0d02('0x9d')][_0x0d02('0x11a')]({'where':{'ChatWebsiteId':_0x5f3aad[_0x0d02('0x55')]['id']},'order':'priority'});});}})[_0x0d02('0x1f')](respondWithResult(_0x4ac90c,null))[_0x0d02('0x28')](handleError(_0x4ac90c,null));};exports[_0x0d02('0x11b')]=function(_0x4f5fe0,_0x259767,_0x37b697){var _0x13c480={};var _0x5dd7fc={};var _0x48432b;var _0x38ee05;return db[_0x0d02('0x3d')][_0x0d02('0x64')]({'where':{'id':_0x4f5fe0['params']['id']}})['then'](handleEntityNotFound(_0x259767,null))[_0x0d02('0x1f')](function(_0x12ab2d){if(_0x12ab2d){_0x48432b=_0x12ab2d;_0x5dd7fc[_0x0d02('0x40')]=_[_0x0d02('0x42')](db[_0x0d02('0x9d')][_0x0d02('0x57')]);_0x5dd7fc[_0x0d02('0x41')]=_[_0x0d02('0x42')](_0x4f5fe0[_0x0d02('0x41')]);_0x5dd7fc[_0x0d02('0x43')]=_[_0x0d02('0x44')](_0x5dd7fc[_0x0d02('0x40')],_0x5dd7fc[_0x0d02('0x41')]);_0x13c480[_0x0d02('0x45')]=_[_0x0d02('0x44')](_0x5dd7fc[_0x0d02('0x40')],qs[_0x0d02('0x46')](_0x4f5fe0[_0x0d02('0x41')]['fields']));_0x13c480['attributes']=_0x13c480[_0x0d02('0x45')][_0x0d02('0x47')]?_0x13c480[_0x0d02('0x45')]:_0x5dd7fc['model'];_0x13c480[_0x0d02('0x4a')]=qs[_0x0d02('0x4b')](_0x4f5fe0[_0x0d02('0x41')][_0x0d02('0x4b')]);_0x13c480['where']=qs[_0x0d02('0x43')](_[_0x0d02('0x4d')](_0x4f5fe0[_0x0d02('0x41')],_0x5dd7fc[_0x0d02('0x43')]));if(_0x4f5fe0['query'][_0x0d02('0x4e')]){_0x13c480[_0x0d02('0x4c')]=_[_0x0d02('0x50')](_0x13c480[_0x0d02('0x4c')],{'$or':_[_0x0d02('0x3c')](_0x13c480[_0x0d02('0x45')],function(_0x5f4fbf){var _0x4c456a={};_0x4c456a[_0x5f4fbf]={'$like':'%'+_0x4f5fe0[_0x0d02('0x41')][_0x0d02('0x4e')]+'%'};return _0x4c456a;})});}_0x13c480=_['merge']({},_0x13c480,_0x4f5fe0[_0x0d02('0x65')]);return _0x48432b[_0x0d02('0x11b')](_0x13c480);}})[_0x0d02('0x1f')](function(_0x49129c){if(_0x49129c){_0x38ee05=_0x49129c['length'];if(!_0x4f5fe0[_0x0d02('0x41')][_0x0d02('0x48')](_0x0d02('0x49'))){_0x13c480[_0x0d02('0x2e')]=qs['limit'](_0x4f5fe0[_0x0d02('0x41')][_0x0d02('0x2e')]);_0x13c480[_0x0d02('0x2d')]=qs[_0x0d02('0x2d')](_0x4f5fe0[_0x0d02('0x41')][_0x0d02('0x2d')]);}return _0x48432b[_0x0d02('0x11b')](_0x13c480);}})[_0x0d02('0x1f')](function(_0x130dae){if(_0x130dae){return _0x130dae?{'count':_0x38ee05,'rows':_0x130dae}:null;}})[_0x0d02('0x1f')](respondWithResult(_0x259767,null))['catch'](handleError(_0x259767,null));};exports['addProactiveActions']=function(_0x212863,_0x18f5fb,_0x3442d9){return db[_0x0d02('0x11c')][_0x0d02('0x58')]({'where':{'id':_0x212863[_0x0d02('0x55')]['id']}})['then'](handleEntityNotFound(_0x18f5fb,null))['then'](function(_0x12ce55){if(_0x12ce55){return _0x12ce55[_0x0d02('0x11d')](_0x212863[_0x0d02('0x5a')][_0x0d02('0x6d')],_[_0x0d02('0x11e')](_0x212863[_0x0d02('0x5a')],[_0x0d02('0x6d'),'id'])||{});}})[_0x0d02('0x1f')](respondWithResult(_0x18f5fb,null))[_0x0d02('0x28')](handleError(_0x18f5fb,null));};exports['getProactiveActions']=function(_0x2faa0b,_0x2d7ef0,_0x1ad508){var _0xc215b8={};var _0x9917b8={};var _0xe8b061;var _0x3627ea;return db[_0x0d02('0x3d')][_0x0d02('0x64')]({'where':{'id':_0x2faa0b['params']['id']}})[_0x0d02('0x1f')](handleEntityNotFound(_0x2d7ef0,null))[_0x0d02('0x1f')](function(_0x1df536){if(_0x1df536){_0xe8b061=_0x1df536;_0x9917b8[_0x0d02('0x40')]=_[_0x0d02('0x42')](db[_0x0d02('0x11f')][_0x0d02('0x57')]);_0x9917b8[_0x0d02('0x41')]=_[_0x0d02('0x42')](_0x2faa0b[_0x0d02('0x41')]);_0x9917b8['filters']=_[_0x0d02('0x44')](_0x9917b8['model'],_0x9917b8[_0x0d02('0x41')]);_0xc215b8[_0x0d02('0x45')]=_[_0x0d02('0x44')](_0x9917b8[_0x0d02('0x40')],qs['fields'](_0x2faa0b[_0x0d02('0x41')][_0x0d02('0x46')]));_0xc215b8[_0x0d02('0x45')]=_0xc215b8['attributes'][_0x0d02('0x47')]?_0xc215b8[_0x0d02('0x45')]:_0x9917b8['model'];_0xc215b8[_0x0d02('0x4a')]=qs[_0x0d02('0x4b')](_0x2faa0b[_0x0d02('0x41')][_0x0d02('0x4b')]);_0xc215b8[_0x0d02('0x4c')]=qs[_0x0d02('0x43')](_['pick'](_0x2faa0b[_0x0d02('0x41')],_0x9917b8[_0x0d02('0x43')]));if(_0x2faa0b[_0x0d02('0x41')][_0x0d02('0x4e')]){_0xc215b8[_0x0d02('0x4c')]=_[_0x0d02('0x50')](_0xc215b8[_0x0d02('0x4c')],{'$or':_[_0x0d02('0x3c')](_0xc215b8[_0x0d02('0x45')],function(_0x999e7a){var _0x313827={};_0x313827[_0x999e7a]={'$like':'%'+_0x2faa0b['query']['filter']+'%'};return _0x313827;})});}_0xc215b8=_[_0x0d02('0x50')]({},_0xc215b8,_0x2faa0b[_0x0d02('0x65')]);return _0xe8b061[_0x0d02('0x10a')](_0xc215b8);}})[_0x0d02('0x1f')](function(_0x560e65){if(_0x560e65){_0x3627ea=_0x560e65[_0x0d02('0x47')];if(!_0x2faa0b['query'][_0x0d02('0x48')](_0x0d02('0x49'))){_0xc215b8[_0x0d02('0x2e')]=qs[_0x0d02('0x2e')](_0x2faa0b[_0x0d02('0x41')]['limit']);_0xc215b8[_0x0d02('0x2d')]=qs[_0x0d02('0x2d')](_0x2faa0b['query'][_0x0d02('0x2d')]);}return _0xe8b061[_0x0d02('0x10a')](_0xc215b8);}})[_0x0d02('0x1f')](function(_0x2b86c5){if(_0x2b86c5){return _0x2b86c5?{'count':_0x3627ea,'rows':_0x2b86c5}:null;}})[_0x0d02('0x1f')](respondWithResult(_0x2d7ef0,null))[_0x0d02('0x28')](handleError(_0x2d7ef0,null));};exports[_0x0d02('0x120')]=function(_0x4ce7a7,_0x5b9839,_0x5768f5){var _0x44f9ef=_0x4ce7a7[_0x0d02('0x41')]['online']==='false'?_0x0d02('0x121'):_0x0d02('0x122');return db[_0x0d02('0x3d')][_0x0d02('0x58')]({'attributes':['id',_0x44f9ef],'where':{'id':_0x4ce7a7[_0x0d02('0x55')]['id']}})[_0x0d02('0x1f')](handleEntityNotFound(_0x5b9839,null))[_0x0d02('0x1f')](function(_0x14ea53){if(_0x14ea53){var _0x22a1be=_0x14ea53[_0x44f9ef];var _0x251b9a=_0x22a1be&&_0x22a1be[_0x0d02('0x123')]?_0x22a1be[_0x0d02('0x123')]:[];_0x5b9839[_0x0d02('0x39')]({'fromKey':_[_0x0d02('0x7b')](_0x22a1be[_0x0d02('0x124')])?undefined:_0x22a1be[_0x0d02('0x124')],'count':_0x251b9a[_0x0d02('0x47')],'rows':_0x251b9a});}})['catch'](handleError(_0x5b9839,null));};exports[_0x0d02('0x125')]=function(_0x2678ee,_0x4e090e,_0x298859){var _0x4e4732={'raw':![],'where':{}};var _0x2c6f93={};var _0x51d48c={'count':0x0,'rows':[]};return db[_0x0d02('0x3d')]['findOne']({'where':{'id':_0x2678ee[_0x0d02('0x55')]['id']}})[_0x0d02('0x1f')](handleEntityNotFound(_0x4e090e,null))[_0x0d02('0x1f')](function(_0x808cd3){if(_0x808cd3){_0x2c6f93[_0x0d02('0x40')]=_[_0x0d02('0x42')](db[_0x0d02('0xd5')][_0x0d02('0x57')]);_0x2c6f93[_0x0d02('0x41')]=_[_0x0d02('0x42')](_0x2678ee[_0x0d02('0x41')]);_0x2c6f93[_0x0d02('0x43')]=_[_0x0d02('0x44')](_0x2c6f93[_0x0d02('0x40')],_0x2c6f93[_0x0d02('0x41')]);_0x4e4732[_0x0d02('0x45')]=_['intersection'](_0x2c6f93[_0x0d02('0x40')],qs[_0x0d02('0x46')](_0x2678ee[_0x0d02('0x41')][_0x0d02('0x46')]));_0x4e4732[_0x0d02('0x45')]=_0x4e4732[_0x0d02('0x45')][_0x0d02('0x47')]?_0x4e4732[_0x0d02('0x45')]:_0x2c6f93[_0x0d02('0x40')];if(!_0x2678ee[_0x0d02('0x41')][_0x0d02('0x48')]('nolimit')){_0x4e4732[_0x0d02('0x2e')]=qs[_0x0d02('0x2e')](_0x2678ee['query'][_0x0d02('0x2e')]);_0x4e4732[_0x0d02('0x2d')]=qs[_0x0d02('0x2d')](_0x2678ee[_0x0d02('0x41')][_0x0d02('0x2d')]);}_0x4e4732[_0x0d02('0x4a')]=qs['sort'](_0x2678ee['query'][_0x0d02('0x4b')]);_0x4e4732['where']=qs[_0x0d02('0x43')](_[_0x0d02('0x4d')](_0x2678ee[_0x0d02('0x41')],_0x2c6f93[_0x0d02('0x43')]));_0x4e4732['where']['ChatWebsiteId']=_0x808cd3['id'];if(_0x2678ee['query'][_0x0d02('0x4e')]){_0x4e4732[_0x0d02('0x4c')]=_[_0x0d02('0x50')](_0x4e4732[_0x0d02('0x4c')],{'$or':_[_0x0d02('0x3c')](_0x4e4732[_0x0d02('0x45')],function(_0x54ba11){var _0x511763={};_0x511763[_0x54ba11]={'$like':'%'+_0x2678ee[_0x0d02('0x41')][_0x0d02('0x4e')]+'%'};return _0x511763;})});}_0x4e4732=_[_0x0d02('0x50')]({},_0x4e4732,_0x2678ee[_0x0d02('0x65')]);return db[_0x0d02('0xd5')]['count']({'where':_0x4e4732['where']})['then'](function(_0x4bb8a5){_0x51d48c[_0x0d02('0x2f')]=_0x4bb8a5;if(_0x2678ee[_0x0d02('0x41')][_0x0d02('0x51')]){_0x4e4732['include']=[{'all':!![]}];}else{_0x4e4732['include']=[{'model':db[_0x0d02('0x8b')],'as':_0x0d02('0x126'),'required':![]},{'model':db[_0x0d02('0xde')],'as':'Attachments','required':![]}];}return db['ChatOfflineMessage'][_0x0d02('0x53')](_0x4e4732);})['then'](function(_0x2a6cb0){_0x51d48c[_0x0d02('0x66')]=_0x2a6cb0;return _0x51d48c;});}})[_0x0d02('0x1f')](respondWithFilteredResult(_0x4e090e,_0x4e4732))['catch'](handleError(_0x4e090e,null));};exports[_0x0d02('0x127')]=function(_0x31d24f,_0xc410b5,_0x5c837f){return db[_0x0d02('0x3d')][_0x0d02('0x58')]({'where':{'id':_0x31d24f[_0x0d02('0x55')]['id']}})['then'](handleEntityNotFound(_0xc410b5,null))[_0x0d02('0x1f')](function(_0x4232c9){if(_0x4232c9){return _0x4232c9[_0x0d02('0x127')](_0x31d24f[_0x0d02('0x5a')][_0x0d02('0x6d')],_[_0x0d02('0x11e')](_0x31d24f[_0x0d02('0x5a')],[_0x0d02('0x6d'),'id'])||{})[_0x0d02('0xbb')](function(_0x4e6c58){for(var _0x417316=0x0;_0x417316<_0x31d24f[_0x0d02('0x5a')][_0x0d02('0x6d')][_0x0d02('0x47')];_0x417316+=0x1){socket['emit'](_0x0d02('0x128'),{'UserId':Number(_0x31d24f['body'][_0x0d02('0x6d')][_0x417316]),'ChatWebsiteId':Number(_0x31d24f[_0x0d02('0x55')]['id'])});}return _0x4e6c58;});}})[_0x0d02('0x1f')](respondWithResult(_0xc410b5,null))[_0x0d02('0x28')](handleError(_0xc410b5,null));};exports[_0x0d02('0x129')]=function(_0x2363d5,_0x550ebf,_0xc6f8c3){return db['ChatWebsite'][_0x0d02('0x58')]({'where':{'id':_0x2363d5[_0x0d02('0x55')]['id']}})[_0x0d02('0x1f')](handleEntityNotFound(_0x550ebf,null))[_0x0d02('0x1f')](function(_0x20103a){if(_0x20103a){return _0x20103a[_0x0d02('0x129')](_0x2363d5[_0x0d02('0x41')]['ids'])['then'](function(){if(_[_0x0d02('0x12a')](_0x2363d5[_0x0d02('0x41')][_0x0d02('0x6d')])){for(var _0x2039ca=0x0;_0x2039ca<_0x2363d5[_0x0d02('0x41')][_0x0d02('0x6d')][_0x0d02('0x47')];_0x2039ca+=0x1){socket[_0x0d02('0x12b')](_0x0d02('0x12c'),{'UserId':Number(_0x2363d5['query'][_0x0d02('0x6d')][_0x2039ca]),'ChatWebsiteId':Number(_0x2363d5[_0x0d02('0x55')]['id'])});}}else{socket[_0x0d02('0x12b')](_0x0d02('0x12c'),{'UserId':Number(_0x2363d5['query'][_0x0d02('0x6d')]),'ChatWebsiteId':Number(_0x2363d5[_0x0d02('0x55')]['id'])});}});}})['then'](respondWithStatusCode(_0x550ebf,null))[_0x0d02('0x28')](handleError(_0x550ebf,null));};exports[_0x0d02('0x12d')]=function(_0x11066f,_0xd76976,_0x82c20){var _0x2ebeec={};var _0x5299f9={};var _0x36f1e3;var _0x59cfc1;return db[_0x0d02('0x3d')]['findOne']({'where':{'id':_0x11066f[_0x0d02('0x55')]['id']}})[_0x0d02('0x1f')](handleEntityNotFound(_0xd76976,null))[_0x0d02('0x1f')](function(_0x17c08d){if(_0x17c08d){_0x36f1e3=_0x17c08d;_0x5299f9[_0x0d02('0x40')]=_[_0x0d02('0x42')](db[_0x0d02('0xc3')]['rawAttributes']);_0x5299f9['query']=_[_0x0d02('0x42')](_0x11066f[_0x0d02('0x41')]);_0x5299f9[_0x0d02('0x43')]=_[_0x0d02('0x44')](_0x5299f9['model'],_0x5299f9[_0x0d02('0x41')]);_0x2ebeec[_0x0d02('0x45')]=_[_0x0d02('0x44')](_0x5299f9[_0x0d02('0x40')],qs['fields'](_0x11066f[_0x0d02('0x41')]['fields']));_0x2ebeec[_0x0d02('0x45')]=_0x2ebeec[_0x0d02('0x45')][_0x0d02('0x47')]?_0x2ebeec[_0x0d02('0x45')]:_0x5299f9['model'];_0x2ebeec[_0x0d02('0x4a')]=qs[_0x0d02('0x4b')](_0x11066f[_0x0d02('0x41')][_0x0d02('0x4b')]);_0x2ebeec[_0x0d02('0x4c')]=qs[_0x0d02('0x43')](_['pick'](_0x11066f[_0x0d02('0x41')],_0x5299f9[_0x0d02('0x43')]));if(_0x11066f[_0x0d02('0x41')][_0x0d02('0x4e')]){_0x2ebeec[_0x0d02('0x4c')]=_['merge'](_0x2ebeec[_0x0d02('0x4c')],{'$or':_[_0x0d02('0x3c')](_0x2ebeec[_0x0d02('0x45')],function(_0x5c1900){var _0x41742c={};_0x41742c[_0x5c1900]={'$like':'%'+_0x11066f['query']['filter']+'%'};return _0x41742c;})});}_0x2ebeec=_[_0x0d02('0x50')]({},_0x2ebeec,_0x11066f['options']);return _0x36f1e3['getAgents'](_0x2ebeec);}})[_0x0d02('0x1f')](function(_0x1a1451){if(_0x1a1451){_0x59cfc1=_0x1a1451[_0x0d02('0x47')];if(!_0x11066f['query'][_0x0d02('0x48')]('nolimit')){_0x2ebeec[_0x0d02('0x2e')]=qs['limit'](_0x11066f[_0x0d02('0x41')][_0x0d02('0x2e')]);_0x2ebeec['offset']=qs[_0x0d02('0x2d')](_0x11066f[_0x0d02('0x41')][_0x0d02('0x2d')]);}return _0x36f1e3[_0x0d02('0x12d')](_0x2ebeec);}})[_0x0d02('0x1f')](function(_0x47ed31){if(_0x47ed31){return _0x47ed31?{'count':_0x59cfc1,'rows':_0x47ed31}:null;}})['then'](respondWithResult(_0xd76976,null))[_0x0d02('0x28')](handleError(_0xd76976,null));};
\ No newline at end of file
+var _0x85ce=['ids','addAnswer','CannedAnswer','rawAttributes','removeAnswers','addLogo','sitepic','file','filename','addAvatar','addCustomerAvatar','customerAvatar','addSystemAvatar','systemAvatar','getLogo','join','getLicense','custom','isNil','existsSync','root','server/files/images/logos/','download','getAvatar','server/files/images/avatars/default_avatar.png','agentAvatar','server/files/images/avatars/','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','notify','user-agent-parser','setUA','headers','getResult','chat','CmContact','Sequelize','updatedAt','CompanyId','ValidationError','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','from','CmList','List','Contacts','DESC','ChatApplication','Applications','account','applications','list','orderBy','priority','asc','defaults','ListId','customerIp','cf-connecting-ip','x-forwarded-for','first','split','firstName','lastName','x-real-port','browser','format','%s\x20%s','version','unknown','device','vendor','%s\x20%s\x20%s','stringify','threadId','ChatInteraction','externalUrl','ContactId','interaction','spread','contact','messageId','created','push','close','unmanaged','*,*,*,*','ChatMessage','AttachmentId','UserId','User','unshift','waitForTheAssignedAgent','forcedOwnership','startRouting','EventManager','offline','files','no\x20available\x20attributes','createdAt','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','findOrCreate','server/files/templates/chatOfflineMessage.ejs','utf8','toPairs','offlineMessageBody','ChatOfflineMessage','server','attachments','basename','Attachment','bulkCreate','MailServerOut','forwardOffline','forwardOfflineAddress','service','Smtp','host','secure','authentication','SendMail','sendMail','\x22%s\x22\x20<%s>','email','offlineMessageSubject','openNewInteraction','mimetype','subjectOffline','toPairsIn','mapValues','NotifyMailAccount','notifyMail','offline-chat','addInteraction','getInteractions','Owner','fullname','internal','Tags','color','tag','Command','getSnippet','timezone','iftime\x20%s,%s','interval','iftime\x20%s','indexOf','true','ONLINE','OFFLINE','No\x20timezone','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','inspect','Interval','Intervals','getProactiveActions','virtual','License','increment','chatLicenseExceeded','some','readFileSync','server/files/chat/iframe.ejs','remote','x-real-ip','connection','remoteAddress','referer','render','color_button','backgroundColor','addApplications','findAndCountAll','getApplications','addProactiveActions','chatProactiveAction','omit','false','offlineForm','onlineForm','items','fromKey','getOfflineMessages','Contact','Attachments','addAgents','userChatWebsite:save','removeAgents','isArray','emit','userChatWebsite:remove','getAgents','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','register','jayson/promise','client','http','request','then','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','save','destroy','get','UserProfileResource','stack','name','send','index','Pause','mandatoryDispositionPause','map','ChatWebsite','fieldName','type','key','model','keys','query','filters','fields','attributes','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','rows','show','params','intersection','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','describe','addDisposition','Disposition','findOne','nolimit','ChatWebsiteId','include','findAll','removeDispositions'];(function(_0x1e1c3f,_0x34eedb){var _0x5c3a05=function(_0x1c756d){while(--_0x1c756d){_0x1e1c3f['push'](_0x1e1c3f['shift']());}};_0x5c3a05(++_0x34eedb);}(_0x85ce,0xc9));var _0xe85c=function(_0x3d6cb1,_0x5289ce){_0x3d6cb1=_0x3d6cb1-0x0;var _0x22f035=_0x85ce[_0x3d6cb1];return _0x22f035;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xe85c('0x0'));var jsonpatch=require(_0xe85c('0x1'));var rp=require(_0xe85c('0x2'));var moment=require(_0xe85c('0x3'));var BPromise=require(_0xe85c('0x4'));var Mustache=require(_0xe85c('0x5'));var util=require(_0xe85c('0x6'));var path=require(_0xe85c('0x7'));var sox=require('sox');var csv=require(_0xe85c('0x8'));var ejs=require(_0xe85c('0x9'));var fs=require('fs');var fs_extra=require(_0xe85c('0xa'));var _=require(_0xe85c('0xb'));var squel=require('squel');var crypto=require(_0xe85c('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xe85c('0x8'));var querystring=require(_0xe85c('0xd'));var Papa=require(_0xe85c('0xe'));var Redis=require(_0xe85c('0xf'));var authService=require(_0xe85c('0x10'));var qs=require(_0xe85c('0x11'));var as=require(_0xe85c('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xe85c('0x13'));var utils=require(_0xe85c('0x14'));var config=require(_0xe85c('0x15'));var licenseUtil=require(_0xe85c('0x16'));var db=require(_0xe85c('0x17'))['db'];config['redis']=_['defaults'](config[_0xe85c('0x18')],{'host':_0xe85c('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe85c('0x18')]));require('./chatWebsite.socket')[_0xe85c('0x1a')](socket);var jayson=require(_0xe85c('0x1b'));var client=jayson[_0xe85c('0x1c')][_0xe85c('0x1d')]({'port':0x232c});var client9002=jayson['client'][_0xe85c('0x1d')]({'port':0x232a});var client9003=jayson['client']['http']({'port':0x232b});var client9001=jayson[_0xe85c('0x1c')][_0xe85c('0x1d')]({'port':0x2329});function respondWithRpcPromise(_0x5b25e1,_0x2ab2fe,_0x46f1b3,_0x1b7739){return new BPromise(function(_0x228664,_0x10c169){var _0x26337a=_0x1b7739||client;return _0x26337a[_0xe85c('0x1e')](_0x5b25e1,_0x46f1b3)[_0xe85c('0x1f')](function(_0x448412){logger['info'](_0xe85c('0x20'),_0x2ab2fe,_0xe85c('0x21'));logger[_0xe85c('0x22')](_0xe85c('0x23'),_0x2ab2fe,'request\x20sent',JSON['stringify'](_0x448412));if(_0x448412[_0xe85c('0x24')]){if(_0x448412[_0xe85c('0x24')][_0xe85c('0x25')]===0x1f4){logger['error']('ChatWebsite,\x20%s,\x20%s',_0x2ab2fe,_0x448412[_0xe85c('0x24')][_0xe85c('0x26')]);return _0x10c169(_0x448412[_0xe85c('0x24')][_0xe85c('0x26')]);}logger[_0xe85c('0x24')]('ChatWebsite,\x20%s,\x20%s',_0x2ab2fe,_0x448412[_0xe85c('0x24')][_0xe85c('0x26')]);return _0x228664(_0x448412['error']['message']);}else{logger[_0xe85c('0x27')](_0xe85c('0x20'),_0x2ab2fe,_0xe85c('0x21'));_0x228664(_0x448412[_0xe85c('0x28')]['message']);}})[_0xe85c('0x29')](function(_0x55ebbc){logger[_0xe85c('0x24')](_0xe85c('0x20'),_0x2ab2fe,_0x55ebbc);_0x10c169(_0x55ebbc);});});}function respondWithStatusCode(_0x35fa41,_0x9c2fae){_0x9c2fae=_0x9c2fae||0xcc;return function(_0x1adb9d){if(_0x1adb9d){return _0x35fa41[_0xe85c('0x2a')](_0x9c2fae);}return _0x35fa41[_0xe85c('0x2b')](_0x9c2fae)[_0xe85c('0x2c')]();};}function respondWithResult(_0x139493,_0x31ef23){_0x31ef23=_0x31ef23||0xc8;return function(_0x17e5cb){if(_0x17e5cb){return _0x139493[_0xe85c('0x2b')](_0x31ef23)['json'](_0x17e5cb);}};}function respondWithFilteredResult(_0x155a7e,_0x5017ab){return function(_0x3467d0){if(_0x3467d0){var _0x26ecb3=typeof _0x5017ab['offset']===_0xe85c('0x2d')&&typeof _0x5017ab[_0xe85c('0x2e')]===_0xe85c('0x2d');var _0x4311db=_0x3467d0[_0xe85c('0x2f')];var _0x25fb88=_0x26ecb3?0x0:_0x5017ab[_0xe85c('0x30')];var _0xac67e6=_0x26ecb3?_0x3467d0[_0xe85c('0x2f')]:_0x5017ab[_0xe85c('0x30')]+_0x5017ab[_0xe85c('0x2e')];var _0x40ae74;if(_0xac67e6>=_0x4311db){_0xac67e6=_0x4311db;_0x40ae74=0xc8;}else{_0x40ae74=0xce;}_0x155a7e[_0xe85c('0x2b')](_0x40ae74);return _0x155a7e[_0xe85c('0x31')](_0xe85c('0x32'),_0x25fb88+'-'+_0xac67e6+'/'+_0x4311db)[_0xe85c('0x33')](_0x3467d0);}return null;};}function patchUpdates(_0x4ed158){return function(_0x22b1d2){try{jsonpatch[_0xe85c('0x34')](_0x22b1d2,_0x4ed158,!![]);}catch(_0x513e64){return BPromise['reject'](_0x513e64);}return _0x22b1d2[_0xe85c('0x35')]();};}function saveUpdates(_0x5a228a,_0x261bcc){return function(_0x8f39e6){if(_0x8f39e6){return _0x8f39e6['update'](_0x5a228a)[_0xe85c('0x1f')](function(_0x2f7ef1){return _0x2f7ef1;});}return null;};}function removeEntity(_0x5032da,_0x39e280){return function(_0x119884){if(_0x119884){return _0x119884[_0xe85c('0x36')]()[_0xe85c('0x1f')](function(){var _0x215639=_0x119884[_0xe85c('0x37')]({'plain':!![]});var _0x118528='ChatWebsites';return db[_0xe85c('0x38')][_0xe85c('0x36')]({'where':{'type':_0x118528,'resourceId':_0x215639['id']}})[_0xe85c('0x1f')](function(){return _0x119884;});})[_0xe85c('0x1f')](function(){_0x5032da[_0xe85c('0x2b')](0xcc)[_0xe85c('0x2c')]();});}};}function handleEntityNotFound(_0x3729cf,_0x5e56ae){return function(_0x12b901){if(!_0x12b901){_0x3729cf[_0xe85c('0x2a')](0x194);}return _0x12b901;};}function handleError(_0x478d06,_0x1003bf){_0x1003bf=_0x1003bf||0x1f4;return function(_0x175017){logger[_0xe85c('0x24')](_0x175017[_0xe85c('0x39')]);if(_0x175017[_0xe85c('0x3a')]){delete _0x175017[_0xe85c('0x3a')];}_0x478d06[_0xe85c('0x2b')](_0x1003bf)[_0xe85c('0x3b')](_0x175017);};}exports[_0xe85c('0x3c')]=function(_0x1d5374,_0x4d51d8){var _0xbdef2a={'include':[{'model':db[_0xe85c('0x3d')],'as':_0xe85c('0x3e')}]},_0xd67420={},_0x295b26={'count':0x0,'rows':[]};var _0x745a8f=_[_0xe85c('0x3f')](db[_0xe85c('0x40')]['rawAttributes'],function(_0x2d8d7e){return{'name':_0x2d8d7e[_0xe85c('0x41')],'type':_0x2d8d7e[_0xe85c('0x42')][_0xe85c('0x43')]};});_0xd67420[_0xe85c('0x44')]=_[_0xe85c('0x3f')](_0x745a8f,_0xe85c('0x3a'));_0xd67420['query']=_[_0xe85c('0x45')](_0x1d5374[_0xe85c('0x46')]);_0xd67420[_0xe85c('0x47')]=_['intersection'](_0xd67420['model'],_0xd67420[_0xe85c('0x46')]);_0xbdef2a['attributes']=_['intersection'](_0xd67420['model'],qs['fields'](_0x1d5374[_0xe85c('0x46')][_0xe85c('0x48')]));_0xbdef2a[_0xe85c('0x49')]=_0xbdef2a[_0xe85c('0x49')][_0xe85c('0x4a')]?_0xbdef2a['attributes']:_0xd67420[_0xe85c('0x44')];if(!_0x1d5374[_0xe85c('0x46')][_0xe85c('0x4b')]('nolimit')){_0xbdef2a[_0xe85c('0x2e')]=qs[_0xe85c('0x2e')](_0x1d5374['query'][_0xe85c('0x2e')]);_0xbdef2a[_0xe85c('0x30')]=qs['offset'](_0x1d5374[_0xe85c('0x46')]['offset']);}_0xbdef2a[_0xe85c('0x4c')]=qs[_0xe85c('0x4d')](_0x1d5374[_0xe85c('0x46')][_0xe85c('0x4d')]);_0xbdef2a['where']=qs[_0xe85c('0x47')](_[_0xe85c('0x4e')](_0x1d5374[_0xe85c('0x46')],_0xd67420[_0xe85c('0x47')]),_0x745a8f);if(_0x1d5374[_0xe85c('0x46')][_0xe85c('0x4f')]){_0xbdef2a[_0xe85c('0x50')]=_[_0xe85c('0x51')](_0xbdef2a['where'],{'$or':_[_0xe85c('0x3f')](_0x745a8f,function(_0x4c56fa){if(_0x4c56fa['type']!==_0xe85c('0x52')){var _0x105d46={};_0x105d46[_0x4c56fa[_0xe85c('0x3a')]]={'$like':'%'+_0x1d5374[_0xe85c('0x46')][_0xe85c('0x4f')]+'%'};return _0x105d46;}})});}_0xbdef2a=_[_0xe85c('0x51')]({},_0xbdef2a,_0x1d5374[_0xe85c('0x53')]);var _0x1e19be={'where':_0xbdef2a[_0xe85c('0x50')]};return db[_0xe85c('0x40')][_0xe85c('0x2f')](_0x1e19be)['then'](function(_0x33cb6c){_0x295b26[_0xe85c('0x2f')]=_0x33cb6c;if(_0x1d5374[_0xe85c('0x46')][_0xe85c('0x54')]){_0xbdef2a['include']=[{'all':!![]}];}return db[_0xe85c('0x40')]['findAll'](_0xbdef2a);})[_0xe85c('0x1f')](function(_0x412327){_0x295b26[_0xe85c('0x55')]=_0x412327;return _0x295b26;})[_0xe85c('0x1f')](respondWithFilteredResult(_0x4d51d8,_0xbdef2a))[_0xe85c('0x29')](handleError(_0x4d51d8,null));};exports[_0xe85c('0x56')]=function(_0x3e49d9,_0x5b2237){var _0x3351a8={'raw':![],'where':{'id':_0x3e49d9[_0xe85c('0x57')]['id']},'include':[{'model':db[_0xe85c('0x3d')],'as':_0xe85c('0x3e')}]},_0x25ea70={};_0x25ea70[_0xe85c('0x44')]=_[_0xe85c('0x45')](db['ChatWebsite']['rawAttributes']);_0x25ea70[_0xe85c('0x46')]=_[_0xe85c('0x45')](_0x3e49d9[_0xe85c('0x46')]);_0x25ea70[_0xe85c('0x47')]=_['intersection'](_0x25ea70[_0xe85c('0x44')],_0x25ea70['query']);_0x3351a8[_0xe85c('0x49')]=_[_0xe85c('0x58')](_0x25ea70[_0xe85c('0x44')],qs[_0xe85c('0x48')](_0x3e49d9['query']['fields']));_0x3351a8[_0xe85c('0x49')]=_0x3351a8[_0xe85c('0x49')][_0xe85c('0x4a')]?_0x3351a8[_0xe85c('0x49')]:_0x25ea70[_0xe85c('0x44')];if(_0x3e49d9[_0xe85c('0x46')][_0xe85c('0x54')]){_0x3351a8['include']=[{'all':!![]}];}_0x3351a8=_[_0xe85c('0x51')]({},_0x3351a8,_0x3e49d9[_0xe85c('0x53')]);return db[_0xe85c('0x40')][_0xe85c('0x59')](_0x3351a8)['then'](handleEntityNotFound(_0x5b2237,null))['then'](respondWithResult(_0x5b2237,null))['catch'](handleError(_0x5b2237,null));};exports[_0xe85c('0x5a')]=function(_0x10d738,_0x2d41be){return db[_0xe85c('0x40')][_0xe85c('0x5a')](_0x10d738['body'],{})[_0xe85c('0x1f')](function(_0x4e8763){var _0x563408=_0x10d738[_0xe85c('0x5b')][_0xe85c('0x37')]({'plain':!![]});if(!_0x563408)throw new Error(_0xe85c('0x5c'));if(_0x563408[_0xe85c('0x5d')]===_0xe85c('0x5b')){var _0x374f2b=_0x4e8763['get']({'plain':!![]});var _0x48a7ab='ChatWebsites';return db[_0xe85c('0x5e')][_0xe85c('0x59')]({'where':{'name':_0x48a7ab,'userProfileId':_0x563408[_0xe85c('0x5f')]},'raw':!![]})[_0xe85c('0x1f')](function(_0x4e38eb){if(_0x4e38eb&&_0x4e38eb[_0xe85c('0x60')]===0x0){return db['UserProfileResource'][_0xe85c('0x5a')]({'name':_0x374f2b[_0xe85c('0x3a')],'resourceId':_0x374f2b['id'],'type':_0x4e38eb[_0xe85c('0x3a')],'sectionId':_0x4e38eb['id']},{})[_0xe85c('0x1f')](function(){return _0x4e8763;});}else{return _0x4e8763;}})['catch'](function(_0x4514e1){logger[_0xe85c('0x24')](_0xe85c('0x61'),_0x4514e1);throw _0x4514e1;});}return _0x4e8763;})['then'](respondWithResult(_0x2d41be,0xc9))[_0xe85c('0x29')](handleError(_0x2d41be,null));};exports[_0xe85c('0x62')]=function(_0x1f71f2,_0x5ef7ed){if(_0x1f71f2[_0xe85c('0x63')]['id']){delete _0x1f71f2[_0xe85c('0x63')]['id'];}return db[_0xe85c('0x40')][_0xe85c('0x59')]({'where':{'id':_0x1f71f2[_0xe85c('0x57')]['id']},'include':[{'model':db[_0xe85c('0x3d')],'as':_0xe85c('0x3e')}]})['then'](handleEntityNotFound(_0x5ef7ed,null))['then'](saveUpdates(_0x1f71f2[_0xe85c('0x63')],null))[_0xe85c('0x1f')](respondWithResult(_0x5ef7ed,null))[_0xe85c('0x29')](handleError(_0x5ef7ed,null));};exports['destroy']=function(_0x1f32c5,_0x1398d9){return db['ChatWebsite'][_0xe85c('0x59')]({'where':{'id':_0x1f32c5[_0xe85c('0x57')]['id']}})[_0xe85c('0x1f')](handleEntityNotFound(_0x1398d9,null))[_0xe85c('0x1f')](removeEntity(_0x1398d9,null))[_0xe85c('0x29')](handleError(_0x1398d9,null));};exports[_0xe85c('0x64')]=function(_0x295eab,_0x488f89){return db[_0xe85c('0x40')][_0xe85c('0x64')]()['then'](respondWithResult(_0x488f89,null))['catch'](handleError(_0x488f89,null));};exports[_0xe85c('0x65')]=function(_0x2faf45,_0x71698c,_0xc6cb90){if(_0x2faf45[_0xe85c('0x63')]['id']){delete _0x2faf45[_0xe85c('0x63')]['id'];}return db[_0xe85c('0x40')][_0xe85c('0x59')]({'where':{'id':_0x2faf45[_0xe85c('0x57')]['id']}})[_0xe85c('0x1f')](handleEntityNotFound(_0x71698c,null))['then'](function(_0x438f8f){if(_0x438f8f){_0x2faf45[_0xe85c('0x63')]['ChatWebsiteId']=_0x438f8f['id'];return db[_0xe85c('0x66')][_0xe85c('0x5a')](_0x2faf45['body']);}})[_0xe85c('0x1f')](respondWithResult(_0x71698c,null))[_0xe85c('0x29')](handleError(_0x71698c,null));};exports['getDispositions']=function(_0x492b05,_0x38eb12,_0x542e19){var _0xe91adc={'raw':![],'where':{}};var _0x553497={};var _0x551840={'count':0x0,'rows':[]};return db['ChatWebsite'][_0xe85c('0x67')]({'where':{'id':_0x492b05[_0xe85c('0x57')]['id']}})[_0xe85c('0x1f')](handleEntityNotFound(_0x38eb12,null))['then'](function(_0x3f0ef7){if(_0x3f0ef7){_0x553497['model']=_[_0xe85c('0x45')](db[_0xe85c('0x66')]['rawAttributes']);_0x553497[_0xe85c('0x46')]=_[_0xe85c('0x45')](_0x492b05[_0xe85c('0x46')]);_0x553497['filters']=_[_0xe85c('0x58')](_0x553497[_0xe85c('0x44')],_0x553497['query']);_0xe91adc['attributes']=_[_0xe85c('0x58')](_0x553497[_0xe85c('0x44')],qs[_0xe85c('0x48')](_0x492b05['query'][_0xe85c('0x48')]));_0xe91adc[_0xe85c('0x49')]=_0xe91adc[_0xe85c('0x49')]['length']?_0xe91adc[_0xe85c('0x49')]:_0x553497[_0xe85c('0x44')];if(!_0x492b05['query'][_0xe85c('0x4b')](_0xe85c('0x68'))){_0xe91adc[_0xe85c('0x2e')]=qs['limit'](_0x492b05['query'][_0xe85c('0x2e')]);_0xe91adc[_0xe85c('0x30')]=qs[_0xe85c('0x30')](_0x492b05[_0xe85c('0x46')]['offset']);}_0xe91adc[_0xe85c('0x4c')]=qs[_0xe85c('0x4d')](_0x492b05[_0xe85c('0x46')][_0xe85c('0x4d')]);_0xe91adc[_0xe85c('0x50')]=qs[_0xe85c('0x47')](_[_0xe85c('0x4e')](_0x492b05[_0xe85c('0x46')],_0x553497[_0xe85c('0x47')]));_0xe91adc[_0xe85c('0x50')][_0xe85c('0x69')]=_0x3f0ef7['id'];if(_0x492b05[_0xe85c('0x46')][_0xe85c('0x4f')]){_0xe91adc[_0xe85c('0x50')]=_[_0xe85c('0x51')](_0xe91adc['where'],{'$or':_[_0xe85c('0x3f')](_0xe91adc[_0xe85c('0x49')],function(_0x3e62bf){var _0x3c9008={};_0x3c9008[_0x3e62bf]={'$like':'%'+_0x492b05['query'][_0xe85c('0x4f')]+'%'};return _0x3c9008;})});}_0xe91adc=_[_0xe85c('0x51')]({},_0xe91adc,_0x492b05['options']);return db['Disposition'][_0xe85c('0x2f')]({'where':_0xe91adc[_0xe85c('0x50')]})[_0xe85c('0x1f')](function(_0x127d28){_0x551840['count']=_0x127d28;if(_0x492b05[_0xe85c('0x46')][_0xe85c('0x54')]){_0xe91adc[_0xe85c('0x6a')]=[{'all':!![]}];}return db[_0xe85c('0x66')][_0xe85c('0x6b')](_0xe91adc);})['then'](function(_0x304e77){_0x551840[_0xe85c('0x55')]=_0x304e77;return _0x551840;});}})[_0xe85c('0x1f')](respondWithFilteredResult(_0x38eb12,_0xe91adc))[_0xe85c('0x29')](handleError(_0x38eb12,null));};exports[_0xe85c('0x6c')]=function(_0x4a9ea5,_0x3ec681,_0x19ed0a){return db['ChatWebsite'][_0xe85c('0x59')]({'where':{'id':_0x4a9ea5[_0xe85c('0x57')]['id']}})[_0xe85c('0x1f')](handleEntityNotFound(_0x3ec681,null))['then'](function(_0x5e4b7e){if(_0x5e4b7e){return _0x5e4b7e[_0xe85c('0x6c')](_0x4a9ea5[_0xe85c('0x46')][_0xe85c('0x6d')]);}})[_0xe85c('0x1f')](respondWithStatusCode(_0x3ec681,null))[_0xe85c('0x29')](handleError(_0x3ec681,null));};exports[_0xe85c('0x6e')]=function(_0x4377ca,_0x40209e,_0x34a7be){if(_0x4377ca[_0xe85c('0x63')]['id']){delete _0x4377ca['body']['id'];}return db[_0xe85c('0x40')][_0xe85c('0x59')]({'where':{'id':_0x4377ca[_0xe85c('0x57')]['id']}})[_0xe85c('0x1f')](handleEntityNotFound(_0x40209e,null))[_0xe85c('0x1f')](function(_0xf26ec){if(_0xf26ec){_0x4377ca[_0xe85c('0x63')][_0xe85c('0x69')]=_0xf26ec['id'];return db['CannedAnswer'][_0xe85c('0x5a')](_0x4377ca[_0xe85c('0x63')]);}})['then'](respondWithResult(_0x40209e,null))[_0xe85c('0x29')](handleError(_0x40209e,null));};exports['getAnswers']=function(_0x3be416,_0xbc979,_0x494f4d){var _0xbfe396={'raw':![],'where':{}};var _0x1a2449={};var _0x55d4bb={'count':0x0,'rows':[]};return db[_0xe85c('0x40')]['findOne']({'where':{'id':_0x3be416[_0xe85c('0x57')]['id']}})['then'](handleEntityNotFound(_0xbc979,null))[_0xe85c('0x1f')](function(_0x5d6f03){if(_0x5d6f03){_0x1a2449[_0xe85c('0x44')]=_[_0xe85c('0x45')](db[_0xe85c('0x6f')][_0xe85c('0x70')]);_0x1a2449['query']=_[_0xe85c('0x45')](_0x3be416['query']);_0x1a2449[_0xe85c('0x47')]=_[_0xe85c('0x58')](_0x1a2449[_0xe85c('0x44')],_0x1a2449[_0xe85c('0x46')]);_0xbfe396['attributes']=_[_0xe85c('0x58')](_0x1a2449['model'],qs[_0xe85c('0x48')](_0x3be416[_0xe85c('0x46')][_0xe85c('0x48')]));_0xbfe396['attributes']=_0xbfe396[_0xe85c('0x49')]['length']?_0xbfe396[_0xe85c('0x49')]:_0x1a2449[_0xe85c('0x44')];if(!_0x3be416['query'][_0xe85c('0x4b')](_0xe85c('0x68'))){_0xbfe396['limit']=qs[_0xe85c('0x2e')](_0x3be416['query'][_0xe85c('0x2e')]);_0xbfe396[_0xe85c('0x30')]=qs[_0xe85c('0x30')](_0x3be416['query'][_0xe85c('0x30')]);}_0xbfe396['order']=qs[_0xe85c('0x4d')](_0x3be416[_0xe85c('0x46')]['sort']);_0xbfe396[_0xe85c('0x50')]=qs[_0xe85c('0x47')](_[_0xe85c('0x4e')](_0x3be416[_0xe85c('0x46')],_0x1a2449[_0xe85c('0x47')]));_0xbfe396[_0xe85c('0x50')]['ChatWebsiteId']=_0x5d6f03['id'];if(_0x3be416[_0xe85c('0x46')][_0xe85c('0x4f')]){_0xbfe396[_0xe85c('0x50')]=_[_0xe85c('0x51')](_0xbfe396[_0xe85c('0x50')],{'$or':_[_0xe85c('0x3f')](_0xbfe396[_0xe85c('0x49')],function(_0x4c9d24){var _0x4f92bf={};_0x4f92bf[_0x4c9d24]={'$like':'%'+_0x3be416[_0xe85c('0x46')][_0xe85c('0x4f')]+'%'};return _0x4f92bf;})});}_0xbfe396=_['merge']({},_0xbfe396,_0x3be416[_0xe85c('0x53')]);return db[_0xe85c('0x6f')]['count']({'where':_0xbfe396[_0xe85c('0x50')]})['then'](function(_0x27db95){_0x55d4bb[_0xe85c('0x2f')]=_0x27db95;if(_0x3be416[_0xe85c('0x46')][_0xe85c('0x54')]){_0xbfe396[_0xe85c('0x6a')]=[{'all':!![]}];}return db['CannedAnswer']['findAll'](_0xbfe396);})[_0xe85c('0x1f')](function(_0x195f33){_0x55d4bb[_0xe85c('0x55')]=_0x195f33;return _0x55d4bb;});}})[_0xe85c('0x1f')](respondWithFilteredResult(_0xbc979,_0xbfe396))[_0xe85c('0x29')](handleError(_0xbc979,null));};exports[_0xe85c('0x71')]=function(_0x2158c0,_0x34fa51,_0x1324d0){return db[_0xe85c('0x40')][_0xe85c('0x59')]({'where':{'id':_0x2158c0[_0xe85c('0x57')]['id']}})[_0xe85c('0x1f')](handleEntityNotFound(_0x34fa51,null))['then'](function(_0x4107fd){if(_0x4107fd){return _0x4107fd[_0xe85c('0x71')](_0x2158c0[_0xe85c('0x46')][_0xe85c('0x6d')]);}})['then'](respondWithStatusCode(_0x34fa51,null))[_0xe85c('0x29')](handleError(_0x34fa51,null));};exports[_0xe85c('0x72')]=function(_0x1179b3,_0x38310f,_0x37a7de){_0x1179b3[_0xe85c('0x63')][_0xe85c('0x73')]=_0x1179b3[_0xe85c('0x74')][_0xe85c('0x75')];return db[_0xe85c('0x40')][_0xe85c('0x59')]({'where':{'id':_0x1179b3[_0xe85c('0x57')]['id']}})[_0xe85c('0x1f')](handleEntityNotFound(_0x38310f,null))[_0xe85c('0x1f')](saveUpdates(_0x1179b3[_0xe85c('0x63')],null))['then'](respondWithResult(_0x38310f,null))[_0xe85c('0x29')](handleError(_0x38310f,null));};exports[_0xe85c('0x76')]=function(_0x5d7e5e,_0x2d965b,_0x4fe281){_0x5d7e5e['body']['agentAvatar']=_0x5d7e5e[_0xe85c('0x74')][_0xe85c('0x75')];return db[_0xe85c('0x40')]['find']({'where':{'id':_0x5d7e5e[_0xe85c('0x57')]['id']}})[_0xe85c('0x1f')](handleEntityNotFound(_0x2d965b,null))['then'](saveUpdates(_0x5d7e5e[_0xe85c('0x63')],null))[_0xe85c('0x1f')](respondWithResult(_0x2d965b,null))[_0xe85c('0x29')](handleError(_0x2d965b,null));};exports[_0xe85c('0x77')]=function(_0x526d53,_0x482687,_0x47028c){_0x526d53['body'][_0xe85c('0x78')]=_0x526d53[_0xe85c('0x74')][_0xe85c('0x75')];return db[_0xe85c('0x40')][_0xe85c('0x59')]({'where':{'id':_0x526d53[_0xe85c('0x57')]['id']}})['then'](handleEntityNotFound(_0x482687,null))[_0xe85c('0x1f')](saveUpdates(_0x526d53[_0xe85c('0x63')],null))[_0xe85c('0x1f')](respondWithResult(_0x482687,null))[_0xe85c('0x29')](handleError(_0x482687,null));};exports[_0xe85c('0x79')]=function(_0x21fd27,_0x145961,_0x35a9cf){_0x21fd27[_0xe85c('0x63')][_0xe85c('0x7a')]=_0x21fd27['file']['filename'];return db['ChatWebsite'][_0xe85c('0x59')]({'where':{'id':_0x21fd27[_0xe85c('0x57')]['id']}})[_0xe85c('0x1f')](handleEntityNotFound(_0x145961,null))[_0xe85c('0x1f')](saveUpdates(_0x21fd27['body'],null))['then'](respondWithResult(_0x145961,null))[_0xe85c('0x29')](handleError(_0x145961,null));};exports[_0xe85c('0x7b')]=function(_0x26edbd,_0x453347,_0x44ef05){var _0x1bba0b=path[_0xe85c('0x7c')](config['root'],'server/files/images/logos/default_logo.svg');var _0x2db29b={'where':{'id':_0x26edbd[_0xe85c('0x57')]['id']},'attributes':['id',_0xe85c('0x73')],'raw':!![]};var _0x3ec763=![];return require(_0xe85c('0x16'))[_0xe85c('0x7d')]()[_0xe85c('0x1f')](function(_0x542ad8){if(_0x542ad8){_0x3ec763=_0x542ad8[_0xe85c('0x7e')];}})[_0xe85c('0x1f')](function(){return db['ChatWebsite']['find'](_0x2db29b);})[_0xe85c('0x1f')](handleEntityNotFound(_0x453347,null))[_0xe85c('0x1f')](function(_0xff8912){if(_0xff8912){if(!_[_0xe85c('0x7f')](_0xff8912[_0xe85c('0x73')])){if(fs[_0xe85c('0x80')](path[_0xe85c('0x7c')](config['root'],'server/files/images/logos/',_0xff8912[_0xe85c('0x73')]))&&_0x3ec763){_0x1bba0b=path['join'](config[_0xe85c('0x81')],_0xe85c('0x82'),_0xff8912[_0xe85c('0x73')]);}}return _0x453347[_0xe85c('0x83')](_0x1bba0b);}})['catch'](handleError(_0x453347,null));};exports[_0xe85c('0x84')]=function(_0x305428,_0x48a225,_0x5c6099){var _0x4dd6bd=path[_0xe85c('0x7c')](config[_0xe85c('0x81')],_0xe85c('0x85'));var _0x1a6d3a={'where':{'id':_0x305428[_0xe85c('0x57')]['id']},'attributes':['id',_0xe85c('0x86')],'raw':!![]};return db[_0xe85c('0x40')][_0xe85c('0x59')](_0x1a6d3a)[_0xe85c('0x1f')](handleEntityNotFound(_0x48a225,null))[_0xe85c('0x1f')](function(_0x1cf380){if(_0x1cf380){if(!_[_0xe85c('0x7f')](_0x1cf380['agentAvatar'])){if(fs[_0xe85c('0x80')](path['join'](config[_0xe85c('0x81')],_0xe85c('0x87'),_0x1cf380[_0xe85c('0x86')]))){_0x4dd6bd=path[_0xe85c('0x7c')](config[_0xe85c('0x81')],_0xe85c('0x87'),_0x1cf380[_0xe85c('0x86')]);}}return _0x48a225[_0xe85c('0x83')](_0x4dd6bd);}})[_0xe85c('0x29')](handleError(_0x48a225,null));};exports['getCustomerAvatar']=function(_0xf68d1a,_0x8480db,_0x3a3355){var _0x3b40f7=path[_0xe85c('0x7c')](config[_0xe85c('0x81')],_0xe85c('0x88'));var _0x2624d5={'where':{'id':_0xf68d1a[_0xe85c('0x57')]['id']},'attributes':['id',_0xe85c('0x78'),'showCustomerAvatar'],'raw':!![]};return db[_0xe85c('0x40')][_0xe85c('0x59')](_0x2624d5)[_0xe85c('0x1f')](handleEntityNotFound(_0x8480db,null))['then'](function(_0x1b7e72){if(_0x1b7e72){if(!_['isNil'](_0x1b7e72[_0xe85c('0x78')])){if(fs['existsSync'](path[_0xe85c('0x7c')](config['root'],_0xe85c('0x87'),_0x1b7e72[_0xe85c('0x78')]))&&_0x1b7e72[_0xe85c('0x89')]){_0x3b40f7=path[_0xe85c('0x7c')](config[_0xe85c('0x81')],_0xe85c('0x87'),_0x1b7e72['customerAvatar']);}}return _0x8480db[_0xe85c('0x83')](_0x3b40f7);}})['catch'](handleError(_0x8480db,null));};exports[_0xe85c('0x8a')]=function(_0x3b9d30,_0x3b3883,_0x5be7d6){var _0x38acc4=path[_0xe85c('0x7c')](config[_0xe85c('0x81')],_0xe85c('0x8b'));var _0x386e24={'where':{'id':_0x3b9d30[_0xe85c('0x57')]['id']},'attributes':['id',_0xe85c('0x7a')],'raw':!![]};return db[_0xe85c('0x40')]['find'](_0x386e24)['then'](handleEntityNotFound(_0x3b3883,null))['then'](function(_0x3c829b){if(_0x3c829b){if(!_[_0xe85c('0x7f')](_0x3c829b[_0xe85c('0x7a')])){if(fs['existsSync'](path[_0xe85c('0x7c')](config[_0xe85c('0x81')],_0xe85c('0x87'),_0x3c829b[_0xe85c('0x7a')]))){_0x38acc4=path[_0xe85c('0x7c')](config['root'],'server/files/images/avatars/',_0x3c829b['systemAvatar']);}}return _0x3b3883[_0xe85c('0x83')](_0x38acc4);}})[_0xe85c('0x29')](handleError(_0x3b3883,null));};exports[_0xe85c('0x8c')]=function(_0x2be5e1,_0x27da3c,_0x220086){var _0x393aed=require(_0xe85c('0x8d'));var _0x1d739a=new _0x393aed();var _0x319038=_0x1d739a[_0xe85c('0x8e')](_0x2be5e1[_0xe85c('0x8f')]['user-agent'])[_0xe85c('0x90')]();var _0x172a5a={'body':_0x2be5e1[_0xe85c('0x63')],'channel':_0xe85c('0x91')};var _0x232202=[];var _0x12c824=[];var _0x34c454={};var _0x1e64cb=![];return db[_0xe85c('0x92')][_0xe85c('0x64')]()[_0xe85c('0x1f')](function(_0x45647d){if(!_0x45647d){throw new db[(_0xe85c('0x93'))]['ValidationError']('no\x20available\x20attributes');}_0x232202=_['difference'](_['keys'](_0x45647d),['createdAt',_0xe85c('0x94')]);_0x12c824=_['difference'](_[_0xe85c('0x45')](_0x45647d),['createdAt','updatedAt',_0xe85c('0x95'),'ListId']);if(_0x2be5e1[_0xe85c('0x63')]['id']){delete _0x2be5e1[_0xe85c('0x63')]['id'];}if(_[_0xe85c('0x7f')](_0x2be5e1[_0xe85c('0x63')]['from'])){throw new db[(_0xe85c('0x93'))][(_0xe85c('0x96'))](_0xe85c('0x97'));}if(_[_0xe85c('0x7f')](_0x2be5e1[_0xe85c('0x63')]['body'])||_0x2be5e1[_0xe85c('0x63')]['body']===''){throw new db[(_0xe85c('0x93'))][(_0xe85c('0x96'))](_0xe85c('0x98'));}if(_[_0xe85c('0x7f')](_0x2be5e1[_0xe85c('0x63')][_0xe85c('0x99')])){throw new db[(_0xe85c('0x93'))]['ValidationError'](_0xe85c('0x9a')+_0x12c824);}if(!_[_0xe85c('0x9b')](_0x12c824,_0x2be5e1[_0xe85c('0x63')]['mapKey'])){throw new db[(_0xe85c('0x93'))][(_0xe85c('0x96'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x12c824);}_0x34c454[_0x2be5e1[_0xe85c('0x63')][_0xe85c('0x99')]]=_0x2be5e1[_0xe85c('0x63')][_0xe85c('0x9c')];})[_0xe85c('0x1f')](function(){return db[_0xe85c('0x40')][_0xe85c('0x59')]({'where':{'id':_0x2be5e1[_0xe85c('0x57')]['id']},'include':[{'model':db[_0xe85c('0x9d')],'as':_0xe85c('0x9e'),'include':[{'model':db[_0xe85c('0x92')],'as':_0xe85c('0x9f'),'where':_0x34c454,'limit':0x1,'order':[[_0xe85c('0x94'),_0xe85c('0xa0')]]}]},{'model':db[_0xe85c('0xa1')],'as':_0xe85c('0xa2')}]});})[_0xe85c('0x1f')](handleEntityNotFound(_0x27da3c,null))[_0xe85c('0x1f')](function(_0x4f6081){if(_0x4f6081&&_0x4f6081[_0xe85c('0x9e')]){_0x172a5a[_0xe85c('0xa3')]=_0x4f6081;_0x172a5a[_0xe85c('0xa4')]=_0x4f6081[_0xe85c('0xa2')];_0x172a5a[_0xe85c('0xa5')]=_0x4f6081['List'];_0x172a5a[_0xe85c('0xa4')]=_[_0xe85c('0xa6')](_0x172a5a[_0xe85c('0xa4')],[_0xe85c('0xa7')],[_0xe85c('0xa8')]);if(_0x172a5a[_0xe85c('0xa3')][_0xe85c('0xa2')]){delete _0x172a5a[_0xe85c('0xa3')]['Applications'];}if(_0x172a5a[_0xe85c('0xa3')][_0xe85c('0x9e')]&&_0x172a5a['account']['List'][_0xe85c('0x9f')][_0xe85c('0x4a')]){return _0x172a5a[_0xe85c('0xa3')][_0xe85c('0x9e')][_0xe85c('0x9f')][0x0];}var _0x5536d9=_[_0xe85c('0xa9')](_0x2be5e1['body'],{'firstName':_0x2be5e1[_0xe85c('0x63')][_0xe85c('0x9c')],'ListId':_0x4f6081[_0xe85c('0xaa')]});_0x5536d9[_0x2be5e1[_0xe85c('0x63')][_0xe85c('0x99')]]=_0x2be5e1[_0xe85c('0x63')][_0xe85c('0x9c')];return db[_0xe85c('0x92')]['create'](_0x5536d9,{'fields':_0x232202,'raw':!![]});}})[_0xe85c('0x1f')](handleEntityNotFound(_0x27da3c,null))['then'](function(_0x339737){_0x172a5a['contact']=_0x339737;var _0x35006b=_0x2be5e1[_0xe85c('0x63')][_0xe85c('0xab')];if(_0x2be5e1[_0xe85c('0x8f')][_0xe85c('0xac')]){_0x35006b=_0x2be5e1[_0xe85c('0x8f')][_0xe85c('0xac')];}else if(_0x2be5e1['headers'][_0xe85c('0xad')]){_0x35006b=_[_0xe85c('0xae')](_0x2be5e1[_0xe85c('0x8f')][_0xe85c('0xad')][_0xe85c('0xaf')](','));}if(_0x339737){var _0x206a9f={'ContactId':_0x339737['id'],'ChatWebsiteId':_0x2be5e1[_0xe85c('0x57')]['id'],'from':(_0x339737[_0xe85c('0xb0')]||'')+'\x20'+(_0x339737[_0xe85c('0xb1')]||''),'customerIp':_0x35006b,'customerPort':_0x2be5e1[_0xe85c('0x8f')][_0xe85c('0xb2')]?_0x2be5e1[_0xe85c('0x8f')]['x-real-port']:null,'referer':_0x2be5e1[_0xe85c('0x63')]['referer'],'browserName':_0x319038[_0xe85c('0xb3')][_0xe85c('0x3a')]&&_0x319038[_0xe85c('0xb3')]['version']?util[_0xe85c('0xb4')](_0xe85c('0xb5'),_0x319038[_0xe85c('0xb3')][_0xe85c('0x3a')],_0x319038[_0xe85c('0xb3')][_0xe85c('0xb6')]):_0xe85c('0xb7'),'browserVersion':_0x319038[_0xe85c('0xb3')][_0xe85c('0xb6')]||_0xe85c('0xb7'),'osName':util[_0xe85c('0xb4')](_0xe85c('0xb5'),_0x319038['os'][_0xe85c('0x3a')],_0x319038['os'][_0xe85c('0xb6')]),'osVersion':_0x319038['os']['version'],'deviceModel':_0x319038[_0xe85c('0xb8')]['model']&&_0x319038['device'][_0xe85c('0xb9')]?util[_0xe85c('0xb4')](_0xe85c('0xba'),_0x319038[_0xe85c('0xb8')][_0xe85c('0x44')],_0x319038[_0xe85c('0xb8')][_0xe85c('0xb9')],_0x319038[_0xe85c('0xb8')][_0xe85c('0x42')]):null,'deviceVendor':_0x319038[_0xe85c('0xb8')][_0xe85c('0xb9')],'deviceType':_0x319038[_0xe85c('0xb8')][_0xe85c('0x42')],'formData':JSON[_0xe85c('0xbb')](_0x2be5e1[_0xe85c('0x63')])};var _0x96a093={'ChatWebsiteId':_0x2be5e1[_0xe85c('0x57')]['id'],'closed':![]};if(_0x2be5e1[_0xe85c('0x63')]['threadId']){_0x96a093[_0xe85c('0xbc')]=_0x2be5e1[_0xe85c('0x63')][_0xe85c('0xbc')];return db[_0xe85c('0xbd')]['find']({'where':_0x96a093})[_0xe85c('0x1f')](function(_0x5db680){if(_0x5db680){return[_0x5db680,![]];}_0x206a9f[_0xe85c('0xbc')]=_0x2be5e1[_0xe85c('0x63')][_0xe85c('0xbc')];_0x206a9f[_0xe85c('0xbe')]=_0x2be5e1[_0xe85c('0x63')]['externalUrl'];return db[_0xe85c('0xbd')][_0xe85c('0x5a')](_0x206a9f)['then'](function(_0x279a3f){return[_0x279a3f,!![]];});});}_0x96a093[_0xe85c('0xbf')]=_0x339737['id'];if(_0x2be5e1['body'][_0xe85c('0xc0')]&&_0x2be5e1[_0xe85c('0x63')]['interaction']['id']){_0x96a093['id']=_0x2be5e1[_0xe85c('0x63')][_0xe85c('0xc0')]['id'];return db['ChatInteraction']['find']({'where':_0x96a093})[_0xe85c('0x1f')](function(_0x2600cf){if(_0x2600cf){return[_0x2600cf,![]];}return db[_0xe85c('0xbd')][_0xe85c('0x5a')](_0x206a9f)[_0xe85c('0x1f')](function(_0x5d3038){return[_0x5d3038,!![]];});});}return db['ChatInteraction'][_0xe85c('0x5a')](_0x206a9f)['then'](function(_0x3dbdf8){return[_0x3dbdf8,!![]];});}})[_0xe85c('0xc1')](function(_0x4aabf1,_0x363542){if(_0x4aabf1){_0x1e64cb=_0x363542;if(!_0x363542){var _0x42bd3b={'from':(_0x172a5a[_0xe85c('0xc2')]['firstName']||'')+'\x20'+(_0x172a5a[_0xe85c('0xc2')]['lastName']||'')};if(_0x2be5e1[_0xe85c('0x63')]['threadId']&&_0x2be5e1[_0xe85c('0x63')][_0xe85c('0xc3')]&&_0x2be5e1['body'][_0xe85c('0xbc')]!=_0x2be5e1[_0xe85c('0x63')]['messageId']){_0x42bd3b['threadId']=_0x2be5e1['body']['messageId'];}return _0x4aabf1[_0xe85c('0x62')](_0x42bd3b);}else{return _0x4aabf1;}}})[_0xe85c('0x1f')](function(_0x392f42){_0x172a5a[_0xe85c('0xc0')]=_0x392f42[_0xe85c('0x37')]({'plain':!![]});_0x172a5a['interaction'][_0xe85c('0xc4')]=_0x1e64cb;if(_0x172a5a[_0xe85c('0xc0')][_0xe85c('0xc4')]){if(_0x172a5a['account']['autoclose']){_0x172a5a[_0xe85c('0xa4')][_0xe85c('0xc5')]({'id':0x0,'priority':_0x172a5a[_0xe85c('0xa4')][_0xe85c('0x4a')]+0x1,'app':_0xe85c('0xc6'),'appdata':_0xe85c('0xc7'),'interval':_0xe85c('0xc8')});}}return db[_0xe85c('0xc9')][_0xe85c('0x5a')]({'body':_0x2be5e1[_0xe85c('0x63')][_0xe85c('0x63')],'ChatWebsiteId':_0x2be5e1['params']['id'],'ChatInteractionId':_0x392f42['id'],'direction':'in','ContactId':_0x172a5a[_0xe85c('0xc2')]['id'],'AttachmentId':_0x2be5e1[_0xe85c('0x63')][_0xe85c('0xca')]});})[_0xe85c('0x1f')](function(_0x1db627){_0x172a5a['message']=_0x1db627;if(_0x172a5a['interaction'][_0xe85c('0xcb')]){return db[_0xe85c('0xcc')][_0xe85c('0x59')]({'attributes':['id',_0xe85c('0x3a')],'where':{'id':_0x172a5a[_0xe85c('0xc0')][_0xe85c('0xcb')]}})[_0xe85c('0x1f')](function(_0x4033ee){if(_0x4033ee){_0x172a5a['applications'][_0xe85c('0xcd')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x4033ee[_0xe85c('0x3a')]+','+(_0x172a5a[_0xe85c('0xa3')][_0xe85c('0xce')]||0xa),'interval':_0xe85c('0xc8')});_0x172a5a[_0xe85c('0xcf')]=!![];}return respondWithRpcPromise('Start',_0xe85c('0xd0'),_0x172a5a);});}return respondWithRpcPromise('Start','startRouting',_0x172a5a);})[_0xe85c('0x1f')](function(_0x4ff4ee){respondWithRpcPromise(_0xe85c('0xd1'),_0xe85c('0xd1'),{'event':_0xe85c('0x8c'),'message':_0x4ff4ee},client9002);return _0x4ff4ee;})['then'](respondWithResult(_0x27da3c,null))['catch'](handleError(_0x27da3c,null));};exports[_0xe85c('0xd2')]=function(_0x381e05,_0x1965b6,_0x38247e){var _0x6d43a8,_0x47d9d8,_0x28ba90;var _0xac82b6=[];var _0x3d7bb6=[];var _0x39f10a={};var _0x2b9905=_0x381e05[_0xe85c('0xd3')]||[];var _0x4ae76c=[];var _0x3c66e6;return db[_0xe85c('0x92')][_0xe85c('0x64')]()[_0xe85c('0x1f')](function(_0x17140e){if(!_0x17140e){throw new db['Sequelize']['ValidationError'](_0xe85c('0xd4'));}_0x3d7bb6=_['difference'](_[_0xe85c('0x45')](_0x17140e),[_0xe85c('0xd5'),_0xe85c('0x94')]);_0xac82b6=_['difference'](_[_0xe85c('0x45')](_0x17140e),[_0xe85c('0xd5'),_0xe85c('0x94'),_0xe85c('0x95'),_0xe85c('0xaa')]);if(_0x381e05[_0xe85c('0x63')]['id']){delete _0x381e05[_0xe85c('0x63')]['id'];}if(_[_0xe85c('0x7f')](_0x381e05[_0xe85c('0x63')]['from'])){throw _0x1965b6[_0xe85c('0x2b')](0x1f4)[_0xe85c('0x3b')](new db['Sequelize']['ValidationError'](_0xe85c('0x97')));}if(_[_0xe85c('0x7f')](_0x381e05['body'][_0xe85c('0x63')])||_0x381e05['body'][_0xe85c('0x63')]===''){throw _0x1965b6[_0xe85c('0x2b')](0x1f4)[_0xe85c('0x3b')](new db[(_0xe85c('0x93'))][(_0xe85c('0x96'))](_0xe85c('0x98')));}if(_[_0xe85c('0x7f')](_0x381e05[_0xe85c('0x63')][_0xe85c('0xd6')])){throw _0x1965b6[_0xe85c('0x2b')](0x1f4)[_0xe85c('0x3b')](new db['Sequelize']['ValidationError'](_0xe85c('0xd7')+_0xac82b6));}if(!_['includes'](_0xac82b6,_0x381e05['body'][_0xe85c('0xd6')])){throw _0x1965b6[_0xe85c('0x2b')](0x1f4)['send'](new db[(_0xe85c('0x93'))][(_0xe85c('0x96'))](_0xe85c('0xd8')+_0xac82b6));}_0x39f10a[_0x381e05[_0xe85c('0x63')][_0xe85c('0xd6')]]=_0x381e05[_0xe85c('0x63')]['from'];})[_0xe85c('0x1f')](function(){return db[_0xe85c('0x40')][_0xe85c('0x59')]({'where':{'id':_0x381e05['params']['id']},'include':[{'model':db[_0xe85c('0x9d')],'as':_0xe85c('0x9e')},{'model':db['MailAccount'],'as':_0xe85c('0xd9')}]});})[_0xe85c('0x1f')](handleEntityNotFound(_0x1965b6,null))['then'](function(_0x1d9217){if(_0x1d9217&&_0x1d9217['List']){_0x47d9d8=_0x1d9217;var _0x1a6a3a=_[_0xe85c('0xa9')](_0x381e05[_0xe85c('0x63')],{'firstName':_0x381e05['body']['from'],'phone':_0x381e05[_0xe85c('0x63')][_0xe85c('0x9c')],'ListId':_0x1d9217[_0xe85c('0xaa')]});_0x1a6a3a[_0x381e05[_0xe85c('0x63')][_0xe85c('0xd6')]]=_0x381e05[_0xe85c('0x63')]['from'];return db[_0xe85c('0x92')][_0xe85c('0xda')]({'where':_0x39f10a,'defaults':_0x1a6a3a});}})[_0xe85c('0xc1')](function(_0x5017ea){if(_0x5017ea){_0x28ba90=_0x5017ea;var _0x1b6929=fs['readFileSync'](path['join'](config[_0xe85c('0x81')],_0xe85c('0xdb')),_0xe85c('0xdc'));var _0x147780=ejs['render'](_0x1b6929,{'body':_[_0xe85c('0xdd')](_0x381e05[_0xe85c('0x63')]['body']),'bodyTitle':_0x47d9d8[_0xe85c('0xde')]});return db[_0xe85c('0xdf')][_0xe85c('0x5a')]({'body':_0x147780,'ContactId':_0x5017ea['id'],'ChatWebsiteId':_0x47d9d8['id']});}})[_0xe85c('0x1f')](function(_0x4699ea){_0x3c66e6=_0x4699ea;if(_0x2b9905['length']){var _0x38d9b7=_0x2b9905['map'](function(_0x34cb32){return{'name':_0x34cb32['originalname'],'basename':_0x34cb32[_0xe85c('0x75')],'type':_0x34cb32['mimetype'],'ChatOfflineMessageId':_0x4699ea['id']};});_0x4ae76c=_0x38d9b7[_0xe85c('0x3f')](_0x2e539d=>{var _0x17e807={'filename':_0x2e539d['name'],'path':path[_0xe85c('0x7c')](config[_0xe85c('0x81')],_0xe85c('0xe0'),'files',_0xe85c('0xe1'),'offline-chat',_0x2e539d[_0xe85c('0xe2')])};return _0x17e807;});if(!_0x47d9d8['openNewInteraction']){return db['sequelize']['transaction'](function(_0x201738){return db[_0xe85c('0xe3')][_0xe85c('0xe4')](_0x38d9b7,{'transaction':_0x201738});});}}})[_0xe85c('0x1f')](function(){if(_0x3c66e6){_0x6d43a8=_0x3c66e6;return db[_0xe85c('0xd9')][_0xe85c('0x67')]({'where':{'active':!![]},'include':[{'model':db[_0xe85c('0xe5')],'as':'Smtp','raw':!![]}]});}})[_0xe85c('0x1f')](function(_0x18872c){if(_0x18872c&&_0x18872c['Smtp']&&_0x47d9d8[_0xe85c('0xe6')]&&_0x47d9d8[_0xe85c('0xe7')]){var _0x32faa2={'tls':{'rejectUnauthorized':![]}};if(_0x18872c['Smtp'][_0xe85c('0xe8')]){_0x32faa2[_0xe85c('0xe8')]=_0x18872c[_0xe85c('0xe9')]['service'];}else{_0x32faa2['host']=_0x18872c['Smtp'][_0xe85c('0xea')];_0x32faa2['port']=_0x18872c[_0xe85c('0xe9')]['port'];_0x32faa2[_0xe85c('0xeb')]=_0x18872c[_0xe85c('0xe9')][_0xe85c('0xeb')];}if(_0x18872c['Smtp'][_0xe85c('0xec')]){_0x32faa2['auth']={'user':_0x18872c[_0xe85c('0xe9')]['user'],'pass':_0x18872c[_0xe85c('0xe9')]['pass']};}return respondWithRpcPromise(_0xe85c('0xed'),_0xe85c('0xee'),{'account':_0x32faa2,'message':{'from':util[_0xe85c('0xb4')](_0xe85c('0xef'),_0x18872c[_0xe85c('0x3a')],_0x18872c[_0xe85c('0xf0')]||_0x18872c[_0xe85c('0xe9')]['user']),'to':_0x47d9d8['forwardOfflineAddress'],'subject':_0x47d9d8[_0xe85c('0xf1')],'html':_0x6d43a8['body'],'attachments':_0x4ae76c}},client9003)[_0xe85c('0x1f')](function(){return _0x6d43a8;})[_0xe85c('0x29')](function(_0x2c229b){console['error'](_0x2c229b);});}})[_0xe85c('0x1f')](function(){if(_0x47d9d8&&_0x47d9d8[_0xe85c('0xf2')]&&_0x47d9d8['MailAccountId']){var _0x46ea8b=[];if(_0x2b9905['length']){_0x46ea8b=_0x2b9905[_0xe85c('0x3f')](function(_0x3c7df5){return{'name':_0x3c7df5['originalname'],'basename':_0x3c7df5[_0xe85c('0x75')],'type':_0x3c7df5[_0xe85c('0xf3')],'ChatOfflineMessageId':_0x3c66e6['id']};});}var _0x5b625a;if(!_['isNil'](_0x47d9d8[_0xe85c('0xf4')])){var _0x22a38d=_[_0xe85c('0x3f')](_0x381e05[_0xe85c('0x63')],function(_0x35f94f){return _0x35f94f;});var _0x516fa0=_[_0xe85c('0xf5')](_0x22a38d)[0x0];var _0x223136=_[_0xe85c('0xf6')](_0x516fa0,function(_0x374ddc){return _0x374ddc;});_0x5b625a=_0x223136[0x1][_0x47d9d8[_0xe85c('0xf4')]];}var _0x28d6e2={'from':_0x28ba90[_0xe85c('0xf0')],'firstName':_0x28ba90['firstName'],'lastName':_0x28ba90[_0xe85c('0xb1')],'mapKey':'email','message':{'from':_0x28ba90[_0xe85c('0xf0')],'to':_0x47d9d8[_0xe85c('0xd9')][_0xe85c('0xf0')],'cc':'','subject':_['isNil'](_0x5b625a)?_0x47d9d8['offlineMessageSubject']:_0x5b625a,'messageId':'','sentAt':new Date(),'attach':_0x46ea8b[_0xe85c('0x4a')],'attachments':_0x46ea8b,'originChannel':'Chat','ChatWebsiteId':_0x47d9d8['id'],'ChatOfflineMessageId':_0x6d43a8['id'],'originTo':_0x47d9d8[_0xe85c('0xd9')][_0xe85c('0xf0')]},'body':_0x6d43a8['body']};var _0x1064b6={'account':{'id':_0x47d9d8['MailAccountId']},'body':_0x28d6e2,'log':_0xe85c('0xf7')};return respondWithRpcPromise(_0xe85c('0xf7'),_0xe85c('0xf8'),_0x1064b6,client9001)[_0xe85c('0x1f')](function(){return _0x6d43a8;})[_0xe85c('0x29')](function(_0x489ff3){console[_0xe85c('0x24')](_0x489ff3);});}return;})[_0xe85c('0x1f')](function(){if(_0x6d43a8){return _0x6d43a8;}})['then'](respondWithResult(_0x1965b6,null))[_0xe85c('0x29')](function(_0x4cf739){console[_0xe85c('0x24')](_0xe85c('0x29'),_0x4cf739);for(var _0x665f87 of _0x2b9905){var _0x28e438=path[_0xe85c('0x7c')](config['root'],_0xe85c('0xe0'),_0xe85c('0xd3'),_0xe85c('0xe1'),_0xe85c('0xf9'),_0x665f87[_0xe85c('0x75')]);fs_extra['remove'](_0x28e438)[_0xe85c('0x29')](function(_0x3f5f0d){console['error']('Could\x20not\x20remove\x20attachment\x20file',_0x28e438,_0x3f5f0d);});}});};exports[_0xe85c('0xfa')]=function(_0x49951a,_0x38f6a0,_0x1aef3a){return db[_0xe85c('0xbd')][_0xe85c('0x59')]({'where':{'id':_0x49951a[_0xe85c('0x57')]['id']}})['then'](handleEntityNotFound(_0x38f6a0,null))[_0xe85c('0x1f')](function(_0x1acd44){if(_0x1acd44){return _0x1acd44[_0xe85c('0xfa')](_0x49951a[_0xe85c('0x63')]['ids'],_['omit'](_0x49951a[_0xe85c('0x63')],['ids','id'])||{});}})[_0xe85c('0x1f')](respondWithResult(_0x38f6a0,null))[_0xe85c('0x29')](handleError(_0x38f6a0,null));};exports[_0xe85c('0xfb')]=function(_0x2b3249,_0x53d00d,_0xa79fad){var _0x13c32d={'raw':![],'where':{}};var _0x560a3b={};var _0x20107d={'count':0x0,'rows':[]};return db[_0xe85c('0x40')]['findOne']({'where':{'id':_0x2b3249[_0xe85c('0x57')]['id']}})[_0xe85c('0x1f')](handleEntityNotFound(_0x53d00d,null))[_0xe85c('0x1f')](function(_0x46dc23){if(_0x46dc23){_0x560a3b[_0xe85c('0x44')]=_['keys'](db[_0xe85c('0xbd')][_0xe85c('0x70')]);_0x560a3b[_0xe85c('0x46')]=_[_0xe85c('0x45')](_0x2b3249['query']);_0x560a3b['filters']=_['intersection'](_0x560a3b['model'],_0x560a3b[_0xe85c('0x46')]);_0x13c32d[_0xe85c('0x49')]=_[_0xe85c('0x58')](_0x560a3b[_0xe85c('0x44')],qs[_0xe85c('0x48')](_0x2b3249['query'][_0xe85c('0x48')]));_0x13c32d['attributes']=_0x13c32d[_0xe85c('0x49')][_0xe85c('0x4a')]?_0x13c32d[_0xe85c('0x49')]:_0x560a3b[_0xe85c('0x44')];if(!_0x2b3249[_0xe85c('0x46')][_0xe85c('0x4b')]('nolimit')){_0x13c32d[_0xe85c('0x2e')]=qs[_0xe85c('0x2e')](_0x2b3249[_0xe85c('0x46')][_0xe85c('0x2e')]);_0x13c32d['offset']=qs['offset'](_0x2b3249['query'][_0xe85c('0x30')]);}_0x13c32d[_0xe85c('0x4c')]=qs[_0xe85c('0x4d')](_0x2b3249[_0xe85c('0x46')][_0xe85c('0x4d')]);_0x13c32d[_0xe85c('0x50')]=qs[_0xe85c('0x47')](_[_0xe85c('0x4e')](_0x2b3249['query'],_0x560a3b['filters']));_0x13c32d[_0xe85c('0x50')][_0xe85c('0x69')]=_0x46dc23['id'];if(_0x2b3249[_0xe85c('0x46')][_0xe85c('0x4f')]){_0x13c32d[_0xe85c('0x50')]=_['merge'](_0x13c32d[_0xe85c('0x50')],{'$or':_['map'](_0x13c32d[_0xe85c('0x49')],function(_0x128883){var _0x178ef7={};_0x178ef7[_0x128883]={'$like':'%'+_0x2b3249['query']['filter']+'%'};return _0x178ef7;})});}_0x13c32d=_[_0xe85c('0x51')]({},_0x13c32d,_0x2b3249['options']);return db['ChatInteraction'][_0xe85c('0x2f')]({'where':_0x13c32d['where']})['then'](function(_0x5acea6){_0x20107d['count']=_0x5acea6;if(_0x2b3249['query'][_0xe85c('0x54')]){_0x13c32d['include']=[{'model':db['CmContact'],'as':'Contact','required':![]},{'model':db[_0xe85c('0xcc')],'as':_0xe85c('0xfc'),'attributes':[_0xe85c('0x3a'),_0xe85c('0xfd'),_0xe85c('0xfe')],'required':![]},{'model':db['Tag'],'as':_0xe85c('0xff'),'attributes':['id',_0xe85c('0x3a'),_0xe85c('0x100')],'where':_0x2b3249[_0xe85c('0x46')][_0xe85c('0x101')]?{'id':_0x2b3249[_0xe85c('0x46')][_0xe85c('0x101')]}:undefined,'required':_0x2b3249[_0xe85c('0x46')][_0xe85c('0x101')]?!![]:![]}];}return db[_0xe85c('0xbd')][_0xe85c('0x6b')](_0x13c32d);})['then'](function(_0x15cda6){_0x20107d[_0xe85c('0x55')]=_0x15cda6;return _0x20107d;});}})[_0xe85c('0x1f')](respondWithFilteredResult(_0x53d00d,_0x13c32d))[_0xe85c('0x29')](handleError(_0x53d00d,null));};function iftimePromise(_0x8fac35,_0x408880){return respondWithRpcPromise(_0xe85c('0x102'),_0xe85c('0x103'),{'command':_0x408880[_0xe85c('0x104')]?util[_0xe85c('0xb4')](_0xe85c('0x105'),_0x8fac35[_0xe85c('0x106')],_0x408880['timezone']):util[_0xe85c('0xb4')](_0xe85c('0x107'),_0x8fac35[_0xe85c('0x106')])},client9002)[_0xe85c('0x1f')](function(_0x1676ab){var _0x55a9c7=_0x1676ab&&_0x1676ab[_0xe85c('0x108')](_0xe85c('0x109'))>=0x0?!![]:![];logger['info']('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x408880['id'],_0x8fac35['id'],_0x8fac35[_0xe85c('0x106')],_0x55a9c7?_0xe85c('0x10a'):_0xe85c('0x10b'),_0x408880[_0xe85c('0x104')]?_0x408880[_0xe85c('0x104')]:_0xe85c('0x10c'));return _0x55a9c7;})[_0xe85c('0x29')](function(_0x132db6){logger[_0xe85c('0x24')](_0xe85c('0x10d'),_0x408880['id'],_0x8fac35['id'],_0x8fac35['interval'],util[_0xe85c('0x10e')](_0x132db6,{'showHidden':![],'depth':null}),_0x408880[_0xe85c('0x104')]?_0x408880[_0xe85c('0x104')]:_0xe85c('0x10c'));return![];});}exports['getSnippet']=function(_0x3db119,_0x188d56,_0x7b648a){var _0x34560f=0x0;var _0x1488b1=0x0;var _0x391821=![];var _0x808e5;var _0xe8aeaf;return db['ChatWebsite']['find']({'where':{'id':_0x3db119['params']['id']},'include':[{'model':db['Interval'],'as':_0xe85c('0x10f'),'include':[{'model':db[_0xe85c('0x10f')],'as':_0xe85c('0x110'),'attributes':['id',_0xe85c('0x106')],'raw':!![]}]}]})[_0xe85c('0x1f')](handleEntityNotFound(_0x188d56,null))[_0xe85c('0x1f')](function(_0x418165){if(_0x418165){_0x808e5=_0x418165;return _0x418165[_0xe85c('0x111')]({'raw':!![]});}})['then'](function(_0x1b0ff9){if(_0x808e5){if(_0x1b0ff9){_0xe8aeaf=_0x1b0ff9;}}return require(_0xe85c('0x16'))[_0xe85c('0x7d')]();})[_0xe85c('0x1f')](function(_0x871ee1){if(_0x871ee1){_0x1488b1=_0x871ee1[_0xe85c('0x112')];_0x391821=_0x871ee1[_0xe85c('0x7e')];}})[_0xe85c('0x1f')](function(){return db[_0xe85c('0xbd')][_0xe85c('0x2f')]({'where':{'closed':![]}});})[_0xe85c('0x1f')](function(_0x1c1204){_0x34560f=_0x1c1204;if(_0x1488b1&&_0x1c1204>_0x1488b1){return db[_0xe85c('0x113')][_0xe85c('0x67')]({'where':{'id':0x1}})['then'](function(_0x42ec17){if(_0x42ec17){_0x42ec17[_0xe85c('0x114')](_0xe85c('0x115'));}});}})[_0xe85c('0x1f')](function(){if(_0x808e5[_0xe85c('0x10f')]&&_0x808e5['Interval'][_0xe85c('0x110')]){var _0x31fa39=[];for(var _0x53dc5c=0x0;_0x53dc5c<_0x808e5[_0xe85c('0x10f')][_0xe85c('0x110')][_0xe85c('0x4a')];_0x53dc5c++){var _0x3e1bb1=_0x808e5[_0xe85c('0x10f')][_0xe85c('0x110')][_0x53dc5c]['get']({'plain':!![]});_0x31fa39[_0xe85c('0xc5')](iftimePromise(_0x3e1bb1,_0x808e5));}return BPromise['all'](_0x31fa39)['then'](function(_0x44c205){return _[_0xe85c('0x116')](_0x44c205);});}else{return!![];}})[_0xe85c('0x1f')](function(_0x3e6cff){var _0x33166f=fs[_0xe85c('0x117')](path['join'](config[_0xe85c('0x81')],_0xe85c('0x118')),_0xe85c('0xdc'));var _0x5f05d1={'remote':_0x808e5[_0xe85c('0x119')],'query':querystring[_0xe85c('0xbb')](_[_0xe85c('0x51')](_0x808e5[_0xe85c('0x37')]({'plain':!![]}),{'customerIp':_0x3db119[_0xe85c('0x8f')][_0xe85c('0xad')]||_0x3db119[_0xe85c('0x8f')][_0xe85c('0x11a')]||_0x3db119[_0xe85c('0x11b')][_0xe85c('0x11c')]||_0x3db119['ip'],'referer':_0x3db119['headers'][_0xe85c('0x11d')],'openedInteractions':_0x34560f,'maxInteractions':_0x1488b1,'virtual':_0x391821[_0xe85c('0x112')],'online':_0x3e6cff,'custom':_0x391821}))['replace'](/'/g,'\x5c\x27')};_0x188d56[_0xe85c('0x3b')](ejs[_0xe85c('0x11e')](Mustache[_0xe85c('0x11e')](_0x33166f,_0x5f05d1),{'proactiveActions':_0xe8aeaf,'alignment':_0x808e5['alignment'],'verticalAlignment':_0x808e5['verticalAlignment'],'div_color':_0x808e5[_0xe85c('0x100')],'text_color':_0x808e5['textColor'],'button_color':_0x808e5[_0xe85c('0x11f')],'background_color':_0x808e5[_0xe85c('0x120')]}));})[_0xe85c('0x29')](handleError(_0x188d56,null));};exports[_0xe85c('0x121')]=function(_0x3cc04b,_0x2906cd,_0x22eb49){return db[_0xe85c('0x40')][_0xe85c('0x67')]({'where':{'id':_0x3cc04b['params']['id']}})[_0xe85c('0x1f')](handleEntityNotFound(_0x2906cd,null))[_0xe85c('0x1f')](function(_0x5afbe3){if(_0x5afbe3){return db['sequelize']['transaction'](function(_0x3172b7){return db[_0xe85c('0xa1')][_0xe85c('0x36')]({'where':{'ChatWebsiteId':_0x3cc04b[_0xe85c('0x57')]['id']},'transaction':_0x3172b7})[_0xe85c('0x1f')](function(_0x1b3bfa){var _0x563a7f=_[_0xe85c('0x3f')](_0x3cc04b[_0xe85c('0x63')],function(_0x441eb8){_0x441eb8[_0xe85c('0x69')]=_0x3cc04b[_0xe85c('0x57')]['id'];return _0x441eb8;});return db[_0xe85c('0xa1')]['bulkCreate'](_0x563a7f,{'transaction':_0x3172b7});});})['then'](function(){return db[_0xe85c('0xa1')][_0xe85c('0x122')]({'where':{'ChatWebsiteId':_0x3cc04b['params']['id']},'order':'priority'});});}})['then'](respondWithResult(_0x2906cd,null))[_0xe85c('0x29')](handleError(_0x2906cd,null));};exports[_0xe85c('0x123')]=function(_0xcdbab9,_0x42394d,_0x3ec2c4){var _0x5d949c={};var _0x2e4e0d={};var _0x585942;var _0x11072e;return db[_0xe85c('0x40')][_0xe85c('0x67')]({'where':{'id':_0xcdbab9[_0xe85c('0x57')]['id']}})[_0xe85c('0x1f')](handleEntityNotFound(_0x42394d,null))[_0xe85c('0x1f')](function(_0x236f75){if(_0x236f75){_0x585942=_0x236f75;_0x2e4e0d[_0xe85c('0x44')]=_[_0xe85c('0x45')](db['ChatApplication']['rawAttributes']);_0x2e4e0d[_0xe85c('0x46')]=_[_0xe85c('0x45')](_0xcdbab9['query']);_0x2e4e0d[_0xe85c('0x47')]=_[_0xe85c('0x58')](_0x2e4e0d['model'],_0x2e4e0d[_0xe85c('0x46')]);_0x5d949c[_0xe85c('0x49')]=_[_0xe85c('0x58')](_0x2e4e0d[_0xe85c('0x44')],qs['fields'](_0xcdbab9['query'][_0xe85c('0x48')]));_0x5d949c['attributes']=_0x5d949c[_0xe85c('0x49')][_0xe85c('0x4a')]?_0x5d949c[_0xe85c('0x49')]:_0x2e4e0d[_0xe85c('0x44')];_0x5d949c[_0xe85c('0x4c')]=qs[_0xe85c('0x4d')](_0xcdbab9[_0xe85c('0x46')]['sort']);_0x5d949c[_0xe85c('0x50')]=qs['filters'](_[_0xe85c('0x4e')](_0xcdbab9[_0xe85c('0x46')],_0x2e4e0d[_0xe85c('0x47')]));if(_0xcdbab9[_0xe85c('0x46')][_0xe85c('0x4f')]){_0x5d949c['where']=_[_0xe85c('0x51')](_0x5d949c[_0xe85c('0x50')],{'$or':_['map'](_0x5d949c[_0xe85c('0x49')],function(_0x271004){var _0xd8b449={};_0xd8b449[_0x271004]={'$like':'%'+_0xcdbab9[_0xe85c('0x46')]['filter']+'%'};return _0xd8b449;})});}_0x5d949c=_['merge']({},_0x5d949c,_0xcdbab9['options']);return _0x585942[_0xe85c('0x123')](_0x5d949c);}})[_0xe85c('0x1f')](function(_0x1139ce){if(_0x1139ce){_0x11072e=_0x1139ce[_0xe85c('0x4a')];if(!_0xcdbab9[_0xe85c('0x46')]['hasOwnProperty']('nolimit')){_0x5d949c[_0xe85c('0x2e')]=qs[_0xe85c('0x2e')](_0xcdbab9['query'][_0xe85c('0x2e')]);_0x5d949c['offset']=qs[_0xe85c('0x30')](_0xcdbab9[_0xe85c('0x46')]['offset']);}return _0x585942[_0xe85c('0x123')](_0x5d949c);}})['then'](function(_0x4f1ad8){if(_0x4f1ad8){return _0x4f1ad8?{'count':_0x11072e,'rows':_0x4f1ad8}:null;}})[_0xe85c('0x1f')](respondWithResult(_0x42394d,null))[_0xe85c('0x29')](handleError(_0x42394d,null));};exports[_0xe85c('0x124')]=function(_0x54d2aa,_0xaab4de,_0x460e37){return db[_0xe85c('0x125')][_0xe85c('0x59')]({'where':{'id':_0x54d2aa[_0xe85c('0x57')]['id']}})['then'](handleEntityNotFound(_0xaab4de,null))[_0xe85c('0x1f')](function(_0x58f008){if(_0x58f008){return _0x58f008[_0xe85c('0x124')](_0x54d2aa['body'][_0xe85c('0x6d')],_[_0xe85c('0x126')](_0x54d2aa[_0xe85c('0x63')],[_0xe85c('0x6d'),'id'])||{});}})['then'](respondWithResult(_0xaab4de,null))['catch'](handleError(_0xaab4de,null));};exports[_0xe85c('0x111')]=function(_0xbb0e22,_0x48b894,_0x1745c8){var _0x77127f={};var _0x111d88={};var _0x13a71b;var _0xe7261a;return db['ChatWebsite'][_0xe85c('0x67')]({'where':{'id':_0xbb0e22[_0xe85c('0x57')]['id']}})[_0xe85c('0x1f')](handleEntityNotFound(_0x48b894,null))[_0xe85c('0x1f')](function(_0x763e5f){if(_0x763e5f){_0x13a71b=_0x763e5f;_0x111d88[_0xe85c('0x44')]=_[_0xe85c('0x45')](db['ChatProactiveAction'][_0xe85c('0x70')]);_0x111d88['query']=_[_0xe85c('0x45')](_0xbb0e22[_0xe85c('0x46')]);_0x111d88[_0xe85c('0x47')]=_[_0xe85c('0x58')](_0x111d88['model'],_0x111d88[_0xe85c('0x46')]);_0x77127f[_0xe85c('0x49')]=_[_0xe85c('0x58')](_0x111d88[_0xe85c('0x44')],qs[_0xe85c('0x48')](_0xbb0e22[_0xe85c('0x46')][_0xe85c('0x48')]));_0x77127f[_0xe85c('0x49')]=_0x77127f['attributes']['length']?_0x77127f[_0xe85c('0x49')]:_0x111d88[_0xe85c('0x44')];_0x77127f[_0xe85c('0x4c')]=qs[_0xe85c('0x4d')](_0xbb0e22['query'][_0xe85c('0x4d')]);_0x77127f[_0xe85c('0x50')]=qs[_0xe85c('0x47')](_[_0xe85c('0x4e')](_0xbb0e22[_0xe85c('0x46')],_0x111d88[_0xe85c('0x47')]));if(_0xbb0e22[_0xe85c('0x46')][_0xe85c('0x4f')]){_0x77127f[_0xe85c('0x50')]=_['merge'](_0x77127f['where'],{'$or':_[_0xe85c('0x3f')](_0x77127f[_0xe85c('0x49')],function(_0x265839){var _0x424771={};_0x424771[_0x265839]={'$like':'%'+_0xbb0e22[_0xe85c('0x46')][_0xe85c('0x4f')]+'%'};return _0x424771;})});}_0x77127f=_['merge']({},_0x77127f,_0xbb0e22[_0xe85c('0x53')]);return _0x13a71b['getProactiveActions'](_0x77127f);}})['then'](function(_0x39d810){if(_0x39d810){_0xe7261a=_0x39d810[_0xe85c('0x4a')];if(!_0xbb0e22[_0xe85c('0x46')][_0xe85c('0x4b')](_0xe85c('0x68'))){_0x77127f['limit']=qs['limit'](_0xbb0e22[_0xe85c('0x46')][_0xe85c('0x2e')]);_0x77127f[_0xe85c('0x30')]=qs[_0xe85c('0x30')](_0xbb0e22[_0xe85c('0x46')]['offset']);}return _0x13a71b[_0xe85c('0x111')](_0x77127f);}})[_0xe85c('0x1f')](function(_0x5568b4){if(_0x5568b4){return _0x5568b4?{'count':_0xe7261a,'rows':_0x5568b4}:null;}})['then'](respondWithResult(_0x48b894,null))[_0xe85c('0x29')](handleError(_0x48b894,null));};exports['getFields']=function(_0x3ec073,_0x5af8ff,_0x1f3e6a){var _0x1eadcf=_0x3ec073[_0xe85c('0x46')]['online']===_0xe85c('0x127')?_0xe85c('0x128'):_0xe85c('0x129');return db['ChatWebsite'][_0xe85c('0x59')]({'attributes':['id',_0x1eadcf],'where':{'id':_0x3ec073[_0xe85c('0x57')]['id']}})[_0xe85c('0x1f')](handleEntityNotFound(_0x5af8ff,null))[_0xe85c('0x1f')](function(_0x372b33){if(_0x372b33){var _0x1abec8=_0x372b33[_0x1eadcf];var _0x6b8bdc=_0x1abec8&&_0x1abec8[_0xe85c('0x12a')]?_0x1abec8[_0xe85c('0x12a')]:[];_0x5af8ff[_0xe85c('0x3b')]({'fromKey':_[_0xe85c('0x7f')](_0x1abec8[_0xe85c('0x12b')])?undefined:_0x1abec8['fromKey'],'count':_0x6b8bdc['length'],'rows':_0x6b8bdc});}})[_0xe85c('0x29')](handleError(_0x5af8ff,null));};exports[_0xe85c('0x12c')]=function(_0x2e081c,_0x161cba,_0x464694){var _0x153d3a={'raw':![],'where':{}};var _0x30feda={};var _0x26f0fa={'count':0x0,'rows':[]};return db[_0xe85c('0x40')][_0xe85c('0x67')]({'where':{'id':_0x2e081c[_0xe85c('0x57')]['id']}})[_0xe85c('0x1f')](handleEntityNotFound(_0x161cba,null))[_0xe85c('0x1f')](function(_0x10ad34){if(_0x10ad34){_0x30feda[_0xe85c('0x44')]=_['keys'](db[_0xe85c('0xdf')][_0xe85c('0x70')]);_0x30feda[_0xe85c('0x46')]=_[_0xe85c('0x45')](_0x2e081c[_0xe85c('0x46')]);_0x30feda[_0xe85c('0x47')]=_[_0xe85c('0x58')](_0x30feda[_0xe85c('0x44')],_0x30feda[_0xe85c('0x46')]);_0x153d3a[_0xe85c('0x49')]=_[_0xe85c('0x58')](_0x30feda['model'],qs[_0xe85c('0x48')](_0x2e081c['query'][_0xe85c('0x48')]));_0x153d3a[_0xe85c('0x49')]=_0x153d3a[_0xe85c('0x49')]['length']?_0x153d3a['attributes']:_0x30feda[_0xe85c('0x44')];if(!_0x2e081c[_0xe85c('0x46')]['hasOwnProperty'](_0xe85c('0x68'))){_0x153d3a[_0xe85c('0x2e')]=qs[_0xe85c('0x2e')](_0x2e081c[_0xe85c('0x46')]['limit']);_0x153d3a[_0xe85c('0x30')]=qs['offset'](_0x2e081c[_0xe85c('0x46')]['offset']);}_0x153d3a['order']=qs[_0xe85c('0x4d')](_0x2e081c[_0xe85c('0x46')]['sort']);_0x153d3a[_0xe85c('0x50')]=qs['filters'](_[_0xe85c('0x4e')](_0x2e081c['query'],_0x30feda['filters']));_0x153d3a[_0xe85c('0x50')][_0xe85c('0x69')]=_0x10ad34['id'];if(_0x2e081c[_0xe85c('0x46')]['filter']){_0x153d3a[_0xe85c('0x50')]=_[_0xe85c('0x51')](_0x153d3a['where'],{'$or':_[_0xe85c('0x3f')](_0x153d3a[_0xe85c('0x49')],function(_0x160939){var _0x53c9fe={};_0x53c9fe[_0x160939]={'$like':'%'+_0x2e081c[_0xe85c('0x46')][_0xe85c('0x4f')]+'%'};return _0x53c9fe;})});}_0x153d3a=_['merge']({},_0x153d3a,_0x2e081c[_0xe85c('0x53')]);return db[_0xe85c('0xdf')][_0xe85c('0x2f')]({'where':_0x153d3a[_0xe85c('0x50')]})[_0xe85c('0x1f')](function(_0x5d93c2){_0x26f0fa[_0xe85c('0x2f')]=_0x5d93c2;if(_0x2e081c[_0xe85c('0x46')][_0xe85c('0x54')]){_0x153d3a[_0xe85c('0x6a')]=[{'all':!![]}];}else{_0x153d3a[_0xe85c('0x6a')]=[{'model':db[_0xe85c('0x92')],'as':_0xe85c('0x12d'),'required':![]},{'model':db[_0xe85c('0xe3')],'as':_0xe85c('0x12e'),'required':![]}];}return db['ChatOfflineMessage'][_0xe85c('0x6b')](_0x153d3a);})['then'](function(_0x4c8fde){_0x26f0fa[_0xe85c('0x55')]=_0x4c8fde;return _0x26f0fa;});}})[_0xe85c('0x1f')](respondWithFilteredResult(_0x161cba,_0x153d3a))[_0xe85c('0x29')](handleError(_0x161cba,null));};exports[_0xe85c('0x12f')]=function(_0x51a00f,_0x159edd,_0x5963f1){return db[_0xe85c('0x40')][_0xe85c('0x59')]({'where':{'id':_0x51a00f['params']['id']}})[_0xe85c('0x1f')](handleEntityNotFound(_0x159edd,null))[_0xe85c('0x1f')](function(_0x40309e){if(_0x40309e){return _0x40309e['addAgents'](_0x51a00f[_0xe85c('0x63')][_0xe85c('0x6d')],_[_0xe85c('0x126')](_0x51a00f[_0xe85c('0x63')],[_0xe85c('0x6d'),'id'])||{})['spread'](function(_0x1a0cde){for(var _0x351580=0x0;_0x351580<_0x51a00f['body']['ids'][_0xe85c('0x4a')];_0x351580+=0x1){socket['emit'](_0xe85c('0x130'),{'UserId':Number(_0x51a00f['body']['ids'][_0x351580]),'ChatWebsiteId':Number(_0x51a00f[_0xe85c('0x57')]['id'])});}return _0x1a0cde;});}})[_0xe85c('0x1f')](respondWithResult(_0x159edd,null))[_0xe85c('0x29')](handleError(_0x159edd,null));};exports[_0xe85c('0x131')]=function(_0x3512c7,_0x1d05e2,_0x4a889b){return db[_0xe85c('0x40')][_0xe85c('0x59')]({'where':{'id':_0x3512c7[_0xe85c('0x57')]['id']}})[_0xe85c('0x1f')](handleEntityNotFound(_0x1d05e2,null))[_0xe85c('0x1f')](function(_0x253a4f){if(_0x253a4f){return _0x253a4f['removeAgents'](_0x3512c7[_0xe85c('0x46')][_0xe85c('0x6d')])[_0xe85c('0x1f')](function(){if(_[_0xe85c('0x132')](_0x3512c7['query'][_0xe85c('0x6d')])){for(var _0x139a28=0x0;_0x139a28<_0x3512c7[_0xe85c('0x46')][_0xe85c('0x6d')][_0xe85c('0x4a')];_0x139a28+=0x1){socket[_0xe85c('0x133')]('userChatWebsite:remove',{'UserId':Number(_0x3512c7[_0xe85c('0x46')][_0xe85c('0x6d')][_0x139a28]),'ChatWebsiteId':Number(_0x3512c7[_0xe85c('0x57')]['id'])});}}else{socket[_0xe85c('0x133')](_0xe85c('0x134'),{'UserId':Number(_0x3512c7[_0xe85c('0x46')]['ids']),'ChatWebsiteId':Number(_0x3512c7[_0xe85c('0x57')]['id'])});}});}})[_0xe85c('0x1f')](respondWithStatusCode(_0x1d05e2,null))[_0xe85c('0x29')](handleError(_0x1d05e2,null));};exports[_0xe85c('0x135')]=function(_0x5aee50,_0x2382e9,_0x5620a5){var _0x4d4209={};var _0x276d8d={};var _0x574232;var _0x5eb090;return db[_0xe85c('0x40')][_0xe85c('0x67')]({'where':{'id':_0x5aee50[_0xe85c('0x57')]['id']}})[_0xe85c('0x1f')](handleEntityNotFound(_0x2382e9,null))['then'](function(_0x440af1){if(_0x440af1){_0x574232=_0x440af1;_0x276d8d['model']=_[_0xe85c('0x45')](db[_0xe85c('0xcc')][_0xe85c('0x70')]);_0x276d8d[_0xe85c('0x46')]=_[_0xe85c('0x45')](_0x5aee50[_0xe85c('0x46')]);_0x276d8d[_0xe85c('0x47')]=_['intersection'](_0x276d8d[_0xe85c('0x44')],_0x276d8d[_0xe85c('0x46')]);_0x4d4209[_0xe85c('0x49')]=_[_0xe85c('0x58')](_0x276d8d['model'],qs[_0xe85c('0x48')](_0x5aee50[_0xe85c('0x46')][_0xe85c('0x48')]));_0x4d4209[_0xe85c('0x49')]=_0x4d4209[_0xe85c('0x49')][_0xe85c('0x4a')]?_0x4d4209[_0xe85c('0x49')]:_0x276d8d[_0xe85c('0x44')];_0x4d4209['order']=qs[_0xe85c('0x4d')](_0x5aee50['query']['sort']);_0x4d4209[_0xe85c('0x50')]=qs[_0xe85c('0x47')](_[_0xe85c('0x4e')](_0x5aee50[_0xe85c('0x46')],_0x276d8d[_0xe85c('0x47')]));if(_0x5aee50[_0xe85c('0x46')]['filter']){_0x4d4209[_0xe85c('0x50')]=_['merge'](_0x4d4209['where'],{'$or':_[_0xe85c('0x3f')](_0x4d4209[_0xe85c('0x49')],function(_0x1b0e4f){var _0x12682e={};_0x12682e[_0x1b0e4f]={'$like':'%'+_0x5aee50['query'][_0xe85c('0x4f')]+'%'};return _0x12682e;})});}_0x4d4209=_[_0xe85c('0x51')]({},_0x4d4209,_0x5aee50[_0xe85c('0x53')]);return _0x574232[_0xe85c('0x135')](_0x4d4209);}})[_0xe85c('0x1f')](function(_0x132d81){if(_0x132d81){_0x5eb090=_0x132d81[_0xe85c('0x4a')];if(!_0x5aee50[_0xe85c('0x46')][_0xe85c('0x4b')](_0xe85c('0x68'))){_0x4d4209[_0xe85c('0x2e')]=qs[_0xe85c('0x2e')](_0x5aee50[_0xe85c('0x46')][_0xe85c('0x2e')]);_0x4d4209[_0xe85c('0x30')]=qs['offset'](_0x5aee50['query'][_0xe85c('0x30')]);}return _0x574232[_0xe85c('0x135')](_0x4d4209);}})[_0xe85c('0x1f')](function(_0x50565f){if(_0x50565f){return _0x50565f?{'count':_0x5eb090,'rows':_0x50565f}:null;}})[_0xe85c('0x1f')](respondWithResult(_0x2382e9,null))[_0xe85c('0x29')](handleError(_0x2382e9,null));};
\ No newline at end of file
index 8dcaf14..8d3f0ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8f7=['update','remove','emit','hook','exports','events','ChatWebsite','setMaxListeners','save'];(function(_0x2b8ff7,_0xe6be23){var _0x3e4d44=function(_0x334256){while(--_0x334256){_0x2b8ff7['push'](_0x2b8ff7['shift']());}};_0x3e4d44(++_0xe6be23);}(_0xe8f7,0x137));var _0x7e8f=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xe8f7[_0x2641f9];return _0x585741;};'use strict';var EventEmitter=require(_0x7e8f('0x0'));var ChatWebsite=require('../../mysqldb')['db'][_0x7e8f('0x1')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0x7e8f('0x2')](0x0);var events={'afterCreate':_0x7e8f('0x3'),'afterUpdate':_0x7e8f('0x4'),'afterDestroy':_0x7e8f('0x5')};function emitEvent(_0xa9b6b5){return function(_0x4249af,_0x47c258,_0x4dcc25){ChatWebsiteEvents[_0x7e8f('0x6')](_0xa9b6b5+':'+_0x4249af['id'],_0x4249af);ChatWebsiteEvents[_0x7e8f('0x6')](_0xa9b6b5,_0x4249af);_0x4dcc25(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatWebsite[_0x7e8f('0x7')](e,emitEvent(event));}}module[_0x7e8f('0x8')]=ChatWebsiteEvents;
\ No newline at end of file
+var _0x61a5=['events','ChatWebsite','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x1f31fa,_0x5e96a){var _0x1b50ba=function(_0x4cbe5b){while(--_0x4cbe5b){_0x1f31fa['push'](_0x1f31fa['shift']());}};_0x1b50ba(++_0x5e96a);}(_0x61a5,0xf0));var _0x561a=function(_0x3f1861,_0x7b4285){_0x3f1861=_0x3f1861-0x0;var _0x7ca70a=_0x61a5[_0x3f1861];return _0x7ca70a;};'use strict';var EventEmitter=require(_0x561a('0x0'));var ChatWebsite=require('../../mysqldb')['db'][_0x561a('0x1')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0x561a('0x2')](0x0);var events={'afterCreate':_0x561a('0x3'),'afterUpdate':_0x561a('0x4'),'afterDestroy':_0x561a('0x5')};function emitEvent(_0x58f636){return function(_0xe92b4d,_0x33c0f5,_0x5b9ca9){ChatWebsiteEvents[_0x561a('0x6')](_0x58f636+':'+_0xe92b4d['id'],_0xe92b4d);ChatWebsiteEvents[_0x561a('0x6')](_0x58f636,_0xe92b4d);_0x5b9ca9(null);};}for(var e in events){if(events[_0x561a('0x7')](e)){var event=events[e];ChatWebsite[_0x561a('0x8')](e,emitEvent(event));}}module[_0x561a('0x9')]=ChatWebsiteEvents;
\ No newline at end of file
index 75587e0..7275ed6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x298d=['path','rimraf','../../config/environment','./chatWebsite.attributes','exports','define','ChatWebsite','chat_websites','../../config/logger','api','bluebird','request-promise'];(function(_0x9ef580,_0xebf6ec){var _0xd72525=function(_0x4b9267){while(--_0x4b9267){_0x9ef580['push'](_0x9ef580['shift']());}};_0xd72525(++_0xebf6ec);}(_0x298d,0x134));var _0xd298=function(_0x23f5cc,_0x2171fb){_0x23f5cc=_0x23f5cc-0x0;var _0x5a7c76=_0x298d[_0x23f5cc];return _0x5a7c76;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xd298('0x0'))(_0xd298('0x1'));var moment=require('moment');var BPromise=require(_0xd298('0x2'));var rp=require(_0xd298('0x3'));var fs=require('fs');var path=require(_0xd298('0x4'));var rimraf=require(_0xd298('0x5'));var config=require(_0xd298('0x6'));var attributes=require(_0xd298('0x7'));module[_0xd298('0x8')]=function(_0x2ab842,_0x3143ae){return _0x2ab842[_0xd298('0x9')](_0xd298('0xa'),attributes,{'tableName':_0xd298('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0f8e=['api','bluebird','request-promise','path','rimraf','./chatWebsite.attributes','exports','ChatWebsite','chat_websites','util','../../config/logger'];(function(_0x298303,_0x15c755){var _0x220db0=function(_0x12fa67){while(--_0x12fa67){_0x298303['push'](_0x298303['shift']());}};_0x220db0(++_0x15c755);}(_0x0f8e,0x1c1));var _0xe0f8=function(_0x15f590,_0x42b288){_0x15f590=_0x15f590-0x0;var _0x53671c=_0x0f8e[_0x15f590];return _0x53671c;};'use strict';var _=require('lodash');var util=require(_0xe0f8('0x0'));var logger=require(_0xe0f8('0x1'))(_0xe0f8('0x2'));var moment=require('moment');var BPromise=require(_0xe0f8('0x3'));var rp=require(_0xe0f8('0x4'));var fs=require('fs');var path=require(_0xe0f8('0x5'));var rimraf=require(_0xe0f8('0x6'));var config=require('../../config/environment');var attributes=require(_0xe0f8('0x7'));module[_0xe0f8('0x8')]=function(_0x140c64,_0x4e5256){return _0x140c64['define'](_0xe0f8('0x9'),attributes,{'tableName':_0xe0f8('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d9ba8db..bec1283 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbd2=['request\x20sent','result','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./chatWebsite.socket','request','then','info','ChatWebsite,\x20%s,\x20%s','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x40ebff,_0x1dd15e){var _0x40122a=function(_0xae6174){while(--_0xae6174){_0x40ebff['push'](_0x40ebff['shift']());}};_0x40122a(++_0x1dd15e);}(_0xbbd2,0x1e9));var _0x2bbd=function(_0x504df1,_0x289598){_0x504df1=_0x504df1-0x0;var _0x1063b5=_0xbbd2[_0x504df1];return _0x1063b5;};'use strict';var _=require(_0x2bbd('0x0'));var util=require(_0x2bbd('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x2bbd('0x2'));var fs=require('fs');var Redis=require(_0x2bbd('0x3'));var db=require(_0x2bbd('0x4'))['db'];var utils=require(_0x2bbd('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x2bbd('0x6'));var jayson=require(_0x2bbd('0x7'));var client=jayson[_0x2bbd('0x8')][_0x2bbd('0x9')]({'port':0x232a});config[_0x2bbd('0xa')]=_['defaults'](config[_0x2bbd('0xa')],{'host':_0x2bbd('0xb'),'port':0x18eb});var socket=require(_0x2bbd('0xc'))(new Redis(config[_0x2bbd('0xa')]));require(_0x2bbd('0xd'))['register'](socket);function respondWithRpcPromise(_0x5ac1d4,_0x5db9ac,_0x2ab0d0){return new BPromise(function(_0x3b2b4b,_0x1231e4){return client[_0x2bbd('0xe')](_0x5ac1d4,_0x2ab0d0)[_0x2bbd('0xf')](function(_0x49bd9c){logger[_0x2bbd('0x10')](_0x2bbd('0x11'),_0x5db9ac,'request\x20sent');logger[_0x2bbd('0x12')](_0x2bbd('0x13'),_0x5db9ac,'request\x20sent',JSON[_0x2bbd('0x14')](_0x49bd9c));if(_0x49bd9c[_0x2bbd('0x15')]){if(_0x49bd9c[_0x2bbd('0x15')][_0x2bbd('0x16')]===0x1f4){logger[_0x2bbd('0x15')](_0x2bbd('0x11'),_0x5db9ac,_0x49bd9c[_0x2bbd('0x15')][_0x2bbd('0x17')]);return _0x1231e4(_0x49bd9c[_0x2bbd('0x15')]['message']);}logger['error']('ChatWebsite,\x20%s,\x20%s',_0x5db9ac,_0x49bd9c[_0x2bbd('0x15')][_0x2bbd('0x17')]);return _0x3b2b4b(_0x49bd9c['error'][_0x2bbd('0x17')]);}else{logger[_0x2bbd('0x10')](_0x2bbd('0x11'),_0x5db9ac,_0x2bbd('0x18'));_0x3b2b4b(_0x49bd9c[_0x2bbd('0x19')][_0x2bbd('0x17')]);}})[_0x2bbd('0x1a')](function(_0x3e02d4){logger['error'](_0x2bbd('0x11'),_0x5db9ac,_0x3e02d4);_0x1231e4(_0x3e02d4);});});}
\ No newline at end of file
+var _0x49bd=['socket.io-emitter','./chatWebsite.socket','register','request','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','error','message','info','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','defaults','redis','localhost'];(function(_0x3a027d,_0x43f542){var _0x886d73=function(_0x404a3b){while(--_0x404a3b){_0x3a027d['push'](_0x3a027d['shift']());}};_0x886d73(++_0x43f542);}(_0x49bd,0x1c5));var _0xd49b=function(_0x5ab37c,_0x9ff9e5){_0x5ab37c=_0x5ab37c-0x0;var _0x1657ef=_0x49bd[_0x5ab37c];return _0x1657ef;};'use strict';var _=require(_0xd49b('0x0'));var util=require(_0xd49b('0x1'));var moment=require(_0xd49b('0x2'));var BPromise=require(_0xd49b('0x3'));var rs=require(_0xd49b('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd49b('0x5'))['db'];var utils=require(_0xd49b('0x6'));var logger=require(_0xd49b('0x7'))(_0xd49b('0x8'));var config=require('../../config/environment');var jayson=require(_0xd49b('0x9'));var client=jayson[_0xd49b('0xa')][_0xd49b('0xb')]({'port':0x232a});config['redis']=_[_0xd49b('0xc')](config[_0xd49b('0xd')],{'host':_0xd49b('0xe'),'port':0x18eb});var socket=require(_0xd49b('0xf'))(new Redis(config[_0xd49b('0xd')]));require(_0xd49b('0x10'))[_0xd49b('0x11')](socket);function respondWithRpcPromise(_0x1fff22,_0x464fbb,_0x499088){return new BPromise(function(_0x115fbe,_0x36dd4b){return client[_0xd49b('0x12')](_0x1fff22,_0x499088)['then'](function(_0x4ccc2b){logger['info'](_0xd49b('0x13'),_0x464fbb,_0xd49b('0x14'));logger[_0xd49b('0x15')]('ChatWebsite,\x20%s,\x20%s,\x20%s',_0x464fbb,_0xd49b('0x14'),JSON['stringify'](_0x4ccc2b));if(_0x4ccc2b['error']){if(_0x4ccc2b['error']['code']===0x1f4){logger[_0xd49b('0x16')]('ChatWebsite,\x20%s,\x20%s',_0x464fbb,_0x4ccc2b[_0xd49b('0x16')][_0xd49b('0x17')]);return _0x36dd4b(_0x4ccc2b[_0xd49b('0x16')][_0xd49b('0x17')]);}logger['error'](_0xd49b('0x13'),_0x464fbb,_0x4ccc2b[_0xd49b('0x16')][_0xd49b('0x17')]);return _0x115fbe(_0x4ccc2b[_0xd49b('0x16')][_0xd49b('0x17')]);}else{logger[_0xd49b('0x18')]('ChatWebsite,\x20%s,\x20%s',_0x464fbb,'request\x20sent');_0x115fbe(_0x4ccc2b[_0xd49b('0x19')][_0xd49b('0x17')]);}})['catch'](function(_0x300609){logger[_0xd49b('0x16')](_0xd49b('0x13'),_0x464fbb,_0x300609);_0x36dd4b(_0x300609);});});}
\ No newline at end of file
index 44f7974..0a9954f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3af=['./chatWebsite.events','remove','update','removeListener','register','length'];(function(_0x21134e,_0x148b0e){var _0x791b59=function(_0x195ef3){while(--_0x195ef3){_0x21134e['push'](_0x21134e['shift']());}};_0x791b59(++_0x148b0e);}(_0xe3af,0x19e));var _0xfe3a=function(_0xd2cd94,_0x3bf735){_0xd2cd94=_0xd2cd94-0x0;var _0x844eaa=_0xe3af[_0xd2cd94];return _0x844eaa;};'use strict';var ChatWebsiteEvents=require(_0xfe3a('0x0'));var events=['save',_0xfe3a('0x1'),_0xfe3a('0x2')];function createListener(_0x348cc4,_0xfee7a9){return function(_0x237fe0){_0xfee7a9['emit'](_0x348cc4,_0x237fe0);};}function removeListener(_0x24633d,_0x3de65b){return function(){ChatWebsiteEvents[_0xfe3a('0x3')](_0x24633d,_0x3de65b);};}exports[_0xfe3a('0x4')]=function(_0x556619){for(var _0x586c74=0x0,_0x3e388e=events[_0xfe3a('0x5')];_0x586c74<_0x3e388e;_0x586c74++){var _0x2bf7be=events[_0x586c74];var _0x17cf5e=createListener('chatWebsite:'+_0x2bf7be,_0x556619);ChatWebsiteEvents['on'](_0x2bf7be,_0x17cf5e);}};
\ No newline at end of file
+var _0x41bb=['remove','update','emit','removeListener','length','./chatWebsite.events','save'];(function(_0x385770,_0xc1b263){var _0x293745=function(_0x363c9c){while(--_0x363c9c){_0x385770['push'](_0x385770['shift']());}};_0x293745(++_0xc1b263);}(_0x41bb,0xc9));var _0xb41b=function(_0x23e2bb,_0xd82b6d){_0x23e2bb=_0x23e2bb-0x0;var _0x2dd8ed=_0x41bb[_0x23e2bb];return _0x2dd8ed;};'use strict';var ChatWebsiteEvents=require(_0xb41b('0x0'));var events=[_0xb41b('0x1'),_0xb41b('0x2'),_0xb41b('0x3')];function createListener(_0x1891b7,_0x27f8cc){return function(_0x58d1e3){_0x27f8cc[_0xb41b('0x4')](_0x1891b7,_0x58d1e3);};}function removeListener(_0x497840,_0x1b4841){return function(){ChatWebsiteEvents[_0xb41b('0x5')](_0x497840,_0x1b4841);};}exports['register']=function(_0x11c357){for(var _0x534434=0x0,_0x5d41f0=events[_0xb41b('0x6')];_0x534434<_0x5d41f0;_0x534434++){var _0x5c67ef=events[_0x534434];var _0x1c067b=createListener('chatWebsite:'+_0x5c67ef,_0x11c357);ChatWebsiteEvents['on'](_0x5c67ef,_0x1c067b);}};
\ No newline at end of file
index f894a98..67fd3f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf821=['replace','extname','/:id/offline','offline','addInteraction','addApplications','addProactiveActions','put','/:id','delete','removeAnswers','removeAgents','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatWebsite.controller','get','index','isAuthenticated','describe','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/logo','/:id/avatar','getAvatar','/:id/customer_avatar','/:id/system_avatar','getSystemAvatar','/:id/interactions','getInteractions','/:id/snippet','getSnippet','getApplications','/:id/proactive_actions','getProactiveActions','/:id/offline_messages','getOfflineMessages','/:id/users','getAgents','post','addDisposition','addAnswer','join','root','server/files/images/logos/','format','%s-%s','now','originalname','single','file','addLogo','diskStorage','server/files/images/avatars/','/:id/notify','notify','server/files','ensureDir'];(function(_0x3a93fc,_0x18d256){var _0x67898f=function(_0x99946b){while(--_0x99946b){_0x3a93fc['push'](_0x3a93fc['shift']());}};_0x67898f(++_0x18d256);}(_0xf821,0xd0));var _0x1f82=function(_0x20a573,_0x3328b4){_0x20a573=_0x20a573-0x0;var _0x399adf=_0xf821[_0x20a573];return _0x399adf;};'use strict';var multer=require(_0x1f82('0x0'));var util=require('util');var path=require(_0x1f82('0x1'));var timeout=require(_0x1f82('0x2'));var express=require(_0x1f82('0x3'));var router=express[_0x1f82('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x1f82('0x5'));var interaction=require(_0x1f82('0x6'));var config=require(_0x1f82('0x7'));var controller=require(_0x1f82('0x8'));router[_0x1f82('0x9')]('/',auth['isAuthenticated'](),controller[_0x1f82('0xa')]);router['get']('/describe',auth[_0x1f82('0xb')](),controller[_0x1f82('0xc')]);router[_0x1f82('0x9')]('/:id',auth[_0x1f82('0xb')](),controller['show']);router[_0x1f82('0x9')](_0x1f82('0xd'),auth[_0x1f82('0xb')](),controller[_0x1f82('0xe')]);router[_0x1f82('0x9')](_0x1f82('0xf'),auth[_0x1f82('0xb')](),controller['getAnswers']);router[_0x1f82('0x9')](_0x1f82('0x10'),controller['getLogo']);router[_0x1f82('0x9')](_0x1f82('0x11'),controller[_0x1f82('0x12')]);router[_0x1f82('0x9')](_0x1f82('0x13'),controller['getCustomerAvatar']);router[_0x1f82('0x9')](_0x1f82('0x14'),controller[_0x1f82('0x15')]);router[_0x1f82('0x9')](_0x1f82('0x16'),auth['isAuthenticated'](),controller[_0x1f82('0x17')]);router[_0x1f82('0x9')](_0x1f82('0x18'),controller[_0x1f82('0x19')]);router['get']('/:id/applications',auth['isAuthenticated'](),controller[_0x1f82('0x1a')]);router[_0x1f82('0x9')](_0x1f82('0x1b'),auth[_0x1f82('0xb')](),controller[_0x1f82('0x1c')]);router[_0x1f82('0x9')]('/:id/fields',controller['getFields']);router['get'](_0x1f82('0x1d'),auth[_0x1f82('0xb')](),controller[_0x1f82('0x1e')]);router['get'](_0x1f82('0x1f'),auth[_0x1f82('0xb')](),controller[_0x1f82('0x20')]);router[_0x1f82('0x21')]('/',auth[_0x1f82('0xb')](),controller['create']);router[_0x1f82('0x21')](_0x1f82('0xd'),auth[_0x1f82('0xb')](),controller[_0x1f82('0x22')]);router[_0x1f82('0x21')]('/:id/canned_answers',auth[_0x1f82('0xb')](),controller[_0x1f82('0x23')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x42bdfc,_0x16ec12,_0x47f89e){_0x47f89e(null,path[_0x1f82('0x24')](config[_0x1f82('0x25')],_0x1f82('0x26')));},'filename':function(_0x120cf1,_0x3e2fc6,_0x31f292){_0x31f292(null,util[_0x1f82('0x27')](_0x1f82('0x28'),Date[_0x1f82('0x29')](),_0x3e2fc6[_0x1f82('0x2a')]));}})});router['post']('/:id/logo',upload[_0x1f82('0x2b')](_0x1f82('0x2c')),controller[_0x1f82('0x2d')]);var upload=multer({'storage':multer[_0x1f82('0x2e')]({'destination':function(_0x50a730,_0x31cf3a,_0x52c943){_0x52c943(null,path[_0x1f82('0x24')](config[_0x1f82('0x25')],_0x1f82('0x2f')));},'filename':function(_0x254e70,_0x5b9554,_0x45e20d){_0x45e20d(null,util[_0x1f82('0x27')]('%s-%s',Date[_0x1f82('0x29')](),_0x5b9554[_0x1f82('0x2a')]));}})});router[_0x1f82('0x21')](_0x1f82('0x11'),upload['single'](_0x1f82('0x2c')),controller['addAvatar']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x152baf,_0xf7d6b3,_0x1bf0db){_0x1bf0db(null,path['join'](config[_0x1f82('0x25')],_0x1f82('0x2f')));},'filename':function(_0x4b8c61,_0x4a4c54,_0x54e6e0){_0x54e6e0(null,util[_0x1f82('0x27')](_0x1f82('0x28'),Date[_0x1f82('0x29')](),_0x4a4c54['originalname']));}})});router[_0x1f82('0x21')]('/:id/customer_avatar',upload[_0x1f82('0x2b')]('file'),controller['addCustomerAvatar']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x4b3876,_0x46e4d5,_0x3ff8ca){_0x3ff8ca(null,path['join'](config['root'],_0x1f82('0x2f')));},'filename':function(_0x10d4eb,_0x5b40d4,_0x19e9ed){_0x19e9ed(null,util['format'](_0x1f82('0x28'),Date[_0x1f82('0x29')](),_0x5b40d4[_0x1f82('0x2a')]));}})});router['post'](_0x1f82('0x14'),upload[_0x1f82('0x2b')](_0x1f82('0x2c')),controller['addSystemAvatar']);router[_0x1f82('0x21')](_0x1f82('0x30'),controller[_0x1f82('0x31')]);const offlineUploadMulter=multer({'storage':multer['diskStorage']({'destination':function(_0x1c1e00,_0x48661e,_0x520cfc){const _0x132eb7=path[_0x1f82('0x24')](config[_0x1f82('0x25')],_0x1f82('0x32'),'attachments','offline-chat');fs_extra[_0x1f82('0x33')](_0x132eb7,function(){_0x520cfc(null,_0x132eb7);});},'filename':function(_0x3310ff,_0x157497,_0x4c07e0){const _0x479bf9=_0x157497[_0x1f82('0x2a')][_0x1f82('0x34')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x39bac3=path[_0x1f82('0x35')](_0x479bf9);const _0x23002e=Date[_0x1f82('0x29')]()+'-'+_0x479bf9[_0x1f82('0x34')](_0x39bac3,'')+_0x39bac3;_0x4c07e0(null,_0x23002e);}})});router[_0x1f82('0x21')](_0x1f82('0x36'),offlineUploadMulter['any'](),controller[_0x1f82('0x37')]);router['post'](_0x1f82('0x16'),auth[_0x1f82('0xb')](),controller[_0x1f82('0x38')]);router['post']('/:id/applications',auth[_0x1f82('0xb')](),controller[_0x1f82('0x39')]);router[_0x1f82('0x21')]('/:id/proactive_actions',auth['isAuthenticated'](),controller[_0x1f82('0x3a')]);router[_0x1f82('0x21')](_0x1f82('0x1f'),auth['isAuthenticated'](),controller['addAgents']);router[_0x1f82('0x3b')](_0x1f82('0x3c'),auth[_0x1f82('0xb')](),controller['update']);router[_0x1f82('0x3d')](_0x1f82('0x3c'),auth[_0x1f82('0xb')](),controller['destroy']);router['delete']('/:id/dispositions',auth[_0x1f82('0xb')](),controller['removeDispositions']);router[_0x1f82('0x3d')](_0x1f82('0xf'),auth[_0x1f82('0xb')](),controller[_0x1f82('0x3e')]);router['delete']('/:id/users',auth[_0x1f82('0xb')](),controller[_0x1f82('0x3f')]);module[_0x1f82('0x40')]=router;
\ No newline at end of file
+var _0x8485=['getInteractions','/:id/snippet','getSnippet','/:id/proactive_actions','/:id/fields','getFields','/:id/offline_messages','getAgents','create','post','addDisposition','/:id/canned_answers','addAnswer','diskStorage','join','server/files/images/logos/','format','%s-%s','originalname','single','file','addLogo','root','now','addAvatar','server/files/images/avatars/','addCustomerAvatar','addSystemAvatar','/:id/notify','server/files','attachments','ensureDir','replace','extname','/:id/offline','offline','addInteraction','/:id/applications','addApplications','addProactiveActions','/:id/users','addAgents','put','delete','destroy','removeDispositions','exports','multer','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./chatWebsite.controller','get','isAuthenticated','index','describe','/:id','show','/:id/dispositions','getAnswers','/:id/logo','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','/:id/system_avatar','/:id/interactions'];(function(_0x491faa,_0x4f2907){var _0x414440=function(_0x310864){while(--_0x310864){_0x491faa['push'](_0x491faa['shift']());}};_0x414440(++_0x4f2907);}(_0x8485,0xb9));var _0x5848=function(_0x4d8cef,_0x513893){_0x4d8cef=_0x4d8cef-0x0;var _0x31a519=_0x8485[_0x4d8cef];return _0x31a519;};'use strict';var multer=require(_0x5848('0x0'));var util=require('util');var path=require(_0x5848('0x1'));var timeout=require(_0x5848('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x5848('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x5848('0x4'));var config=require(_0x5848('0x5'));var controller=require(_0x5848('0x6'));router[_0x5848('0x7')]('/',auth[_0x5848('0x8')](),controller[_0x5848('0x9')]);router[_0x5848('0x7')]('/describe',auth[_0x5848('0x8')](),controller[_0x5848('0xa')]);router[_0x5848('0x7')](_0x5848('0xb'),auth[_0x5848('0x8')](),controller[_0x5848('0xc')]);router[_0x5848('0x7')](_0x5848('0xd'),auth['isAuthenticated'](),controller['getDispositions']);router[_0x5848('0x7')]('/:id/canned_answers',auth[_0x5848('0x8')](),controller[_0x5848('0xe')]);router[_0x5848('0x7')](_0x5848('0xf'),controller[_0x5848('0x10')]);router['get'](_0x5848('0x11'),controller[_0x5848('0x12')]);router[_0x5848('0x7')](_0x5848('0x13'),controller['getCustomerAvatar']);router[_0x5848('0x7')](_0x5848('0x14'),controller['getSystemAvatar']);router[_0x5848('0x7')](_0x5848('0x15'),auth[_0x5848('0x8')](),controller[_0x5848('0x16')]);router['get'](_0x5848('0x17'),controller[_0x5848('0x18')]);router[_0x5848('0x7')]('/:id/applications',auth['isAuthenticated'](),controller['getApplications']);router[_0x5848('0x7')](_0x5848('0x19'),auth['isAuthenticated'](),controller['getProactiveActions']);router['get'](_0x5848('0x1a'),controller[_0x5848('0x1b')]);router[_0x5848('0x7')](_0x5848('0x1c'),auth[_0x5848('0x8')](),controller['getOfflineMessages']);router['get']('/:id/users',auth['isAuthenticated'](),controller[_0x5848('0x1d')]);router['post']('/',auth['isAuthenticated'](),controller[_0x5848('0x1e')]);router[_0x5848('0x1f')](_0x5848('0xd'),auth[_0x5848('0x8')](),controller[_0x5848('0x20')]);router['post'](_0x5848('0x21'),auth['isAuthenticated'](),controller[_0x5848('0x22')]);var upload=multer({'storage':multer[_0x5848('0x23')]({'destination':function(_0x530b9c,_0x48b50a,_0x79df24){_0x79df24(null,path[_0x5848('0x24')](config['root'],_0x5848('0x25')));},'filename':function(_0x14877e,_0x68faf6,_0x25d523){_0x25d523(null,util[_0x5848('0x26')](_0x5848('0x27'),Date['now'](),_0x68faf6[_0x5848('0x28')]));}})});router['post'](_0x5848('0xf'),upload[_0x5848('0x29')](_0x5848('0x2a')),controller[_0x5848('0x2b')]);var upload=multer({'storage':multer[_0x5848('0x23')]({'destination':function(_0x557487,_0xe19bde,_0x5120b5){_0x5120b5(null,path[_0x5848('0x24')](config[_0x5848('0x2c')],'server/files/images/avatars/'));},'filename':function(_0x78c2ff,_0x674dd4,_0x4a7ee7){_0x4a7ee7(null,util['format'](_0x5848('0x27'),Date[_0x5848('0x2d')](),_0x674dd4[_0x5848('0x28')]));}})});router[_0x5848('0x1f')](_0x5848('0x11'),upload[_0x5848('0x29')](_0x5848('0x2a')),controller[_0x5848('0x2e')]);var upload=multer({'storage':multer[_0x5848('0x23')]({'destination':function(_0x5a5a48,_0x825ee5,_0x38d7c8){_0x38d7c8(null,path[_0x5848('0x24')](config[_0x5848('0x2c')],_0x5848('0x2f')));},'filename':function(_0x5376b4,_0x503045,_0x4c515b){_0x4c515b(null,util[_0x5848('0x26')](_0x5848('0x27'),Date[_0x5848('0x2d')](),_0x503045[_0x5848('0x28')]));}})});router[_0x5848('0x1f')]('/:id/customer_avatar',upload[_0x5848('0x29')](_0x5848('0x2a')),controller[_0x5848('0x30')]);var upload=multer({'storage':multer[_0x5848('0x23')]({'destination':function(_0x11bf03,_0x18adde,_0x4572bd){_0x4572bd(null,path[_0x5848('0x24')](config['root'],'server/files/images/avatars/'));},'filename':function(_0x3ca36a,_0x23295e,_0x2f7f53){_0x2f7f53(null,util[_0x5848('0x26')]('%s-%s',Date[_0x5848('0x2d')](),_0x23295e[_0x5848('0x28')]));}})});router['post'](_0x5848('0x14'),upload[_0x5848('0x29')](_0x5848('0x2a')),controller[_0x5848('0x31')]);router[_0x5848('0x1f')](_0x5848('0x32'),controller['notify']);const offlineUploadMulter=multer({'storage':multer[_0x5848('0x23')]({'destination':function(_0x16a37f,_0x1fdfad,_0x42eea9){const _0x3f5240=path[_0x5848('0x24')](config[_0x5848('0x2c')],_0x5848('0x33'),_0x5848('0x34'),'offline-chat');fs_extra[_0x5848('0x35')](_0x3f5240,function(){_0x42eea9(null,_0x3f5240);});},'filename':function(_0x814d8e,_0x570eff,_0x50c6d8){const _0x2af2e0=_0x570eff[_0x5848('0x28')][_0x5848('0x36')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x29546a=path[_0x5848('0x37')](_0x2af2e0);const _0x32085a=Date[_0x5848('0x2d')]()+'-'+_0x2af2e0[_0x5848('0x36')](_0x29546a,'')+_0x29546a;_0x50c6d8(null,_0x32085a);}})});router[_0x5848('0x1f')](_0x5848('0x38'),offlineUploadMulter['any'](),controller[_0x5848('0x39')]);router[_0x5848('0x1f')](_0x5848('0x15'),auth[_0x5848('0x8')](),controller[_0x5848('0x3a')]);router[_0x5848('0x1f')](_0x5848('0x3b'),auth[_0x5848('0x8')](),controller[_0x5848('0x3c')]);router[_0x5848('0x1f')](_0x5848('0x19'),auth[_0x5848('0x8')](),controller[_0x5848('0x3d')]);router[_0x5848('0x1f')](_0x5848('0x3e'),auth['isAuthenticated'](),controller[_0x5848('0x3f')]);router[_0x5848('0x40')]('/:id',auth[_0x5848('0x8')](),controller['update']);router[_0x5848('0x41')](_0x5848('0xb'),auth[_0x5848('0x8')](),controller[_0x5848('0x42')]);router[_0x5848('0x41')](_0x5848('0xd'),auth[_0x5848('0x8')](),controller[_0x5848('0x43')]);router['delete'](_0x5848('0x21'),auth[_0x5848('0x8')](),controller['removeAnswers']);router[_0x5848('0x41')](_0x5848('0x3e'),auth['isAuthenticated'](),controller['removeAgents']);module[_0x5848('0x44')]=router;
\ No newline at end of file
index 2b6d5c5..2ade878 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c1f=['exports','STRING','ENUM','AmazonAWS','sequelize'];(function(_0x373e2d,_0x5053c6){var _0x5dc7be=function(_0x3ccfd8){while(--_0x3ccfd8){_0x373e2d['push'](_0x373e2d['shift']());}};_0x5dc7be(++_0x5053c6);}(_0x7c1f,0x194));var _0xf7c1=function(_0x5e69be,_0x298d40){_0x5e69be=_0x5e69be-0x0;var _0xf6bc5e=_0x7c1f[_0x5e69be];return _0xf6bc5e;};'use strict';var Sequelize=require(_0xf7c1('0x0'));module[_0xf7c1('0x1')]={'name':{'type':Sequelize[_0xf7c1('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0xf7c1('0x3')](_0xf7c1('0x4'),'Google'),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize[_0xf7c1('0x2')]},'data2':{'type':Sequelize[_0xf7c1('0x2')]}};
\ No newline at end of file
+var _0xdfa0=['Google','sequelize','STRING','ENUM'];(function(_0x3a2e8c,_0x4001d3){var _0x588177=function(_0x2dbc02){while(--_0x2dbc02){_0x3a2e8c['push'](_0x3a2e8c['shift']());}};_0x588177(++_0x4001d3);}(_0xdfa0,0x69));var _0x0dfa=function(_0x4ddd00,_0xc967a9){_0x4ddd00=_0x4ddd00-0x0;var _0x4bc6cc=_0xdfa0[_0x4ddd00];return _0x4bc6cc;};'use strict';var Sequelize=require(_0x0dfa('0x0'));module['exports']={'name':{'type':Sequelize[_0x0dfa('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0x0dfa('0x2')]('AmazonAWS',_0x0dfa('0x3')),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize[_0x0dfa('0x1')]},'data2':{'type':Sequelize[_0x0dfa('0x1')]}};
\ No newline at end of file
index 8bcf00d..818d25d 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(_0xd8ab28,_0x5ed6f6){var _0x84a78c=function(_0x34c505){while(--_0x34c505){_0xd8ab28['push'](_0xd8ab28['shift']());}};_0x84a78c(++_0x5ed6f6);}(_0x2ef3,0xba));var _0x32ef=function(_0x33c441,_0x4942e3){_0x33c441=_0x33c441-0x0;var _0xb535ef=_0x2ef3[_0x33c441];return _0xb535ef;};'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 _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(_0x475f2a,_0x37633d){var _0x211cb5=function(_0x559b8c){while(--_0x559b8c){_0x475f2a['push'](_0x475f2a['shift']());}};_0x211cb5(++_0x37633d);}(_0x2ef3,0xba));var _0x32ef=function(_0x3da750,_0x2db72e){_0x3da750=_0x3da750-0x0;var _0x4d144c=_0x2ef3[_0x3da750];return _0x4d144c;};'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
index cefd8e7..cd6021c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9e4=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','define','CloudProvider','cloud_providers','lodash'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xd9e4,0x77));var _0x4d9e=function(_0xa76f70,_0x115a75){_0xa76f70=_0xa76f70-0x0;var _0x24459b=_0xd9e4[_0xa76f70];return _0x24459b;};'use strict';var _=require(_0x4d9e('0x0'));var util=require(_0x4d9e('0x1'));var logger=require(_0x4d9e('0x2'))(_0x4d9e('0x3'));var moment=require(_0x4d9e('0x4'));var BPromise=require(_0x4d9e('0x5'));var rp=require(_0x4d9e('0x6'));var fs=require('fs');var path=require(_0x4d9e('0x7'));var rimraf=require(_0x4d9e('0x8'));var config=require('../../config/environment');var attributes=require('./cloudProvider.attributes');module['exports']=function(_0x4808d8,_0x246601){return _0x4808d8[_0x4d9e('0x9')](_0x4d9e('0xa'),attributes,{'tableName':_0x4d9e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbb8f=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cloudProvider.attributes','exports','define','CloudProvider','cloud_providers','lodash'];(function(_0x78586c,_0x266910){var _0x1bd392=function(_0xd7bb3e){while(--_0xd7bb3e){_0x78586c['push'](_0x78586c['shift']());}};_0x1bd392(++_0x266910);}(_0xbb8f,0x99));var _0xfbb8=function(_0x21bba8,_0x37840e){_0x21bba8=_0x21bba8-0x0;var _0x5d1263=_0xbb8f[_0x21bba8];return _0x5d1263;};'use strict';var _=require(_0xfbb8('0x0'));var util=require('util');var logger=require(_0xfbb8('0x1'))(_0xfbb8('0x2'));var moment=require(_0xfbb8('0x3'));var BPromise=require(_0xfbb8('0x4'));var rp=require(_0xfbb8('0x5'));var fs=require('fs');var path=require(_0xfbb8('0x6'));var rimraf=require(_0xfbb8('0x7'));var config=require(_0xfbb8('0x8'));var attributes=require(_0xfbb8('0x9'));module[_0xfbb8('0xa')]=function(_0x3722cc,_0x11ccce){return _0x3722cc[_0xfbb8('0xb')](_0xfbb8('0xc'),attributes,{'tableName':_0xfbb8('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a4eb5ad..0444ab3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42f4=['jayson/promise','http','then','request\x20sent','debug','CloudProvider,\x20%s,\x20%s,\x20%s','stringify','error','code','CloudProvider,\x20%s,\x20%s','message','info','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/environment'];(function(_0x33a017,_0xfa348c){var _0x147e22=function(_0x42f8b9){while(--_0x42f8b9){_0x33a017['push'](_0x33a017['shift']());}};_0x147e22(++_0xfa348c);}(_0x42f4,0x19d));var _0x442f=function(_0x3ae2b2,_0x2d936f){_0x3ae2b2=_0x3ae2b2-0x0;var _0x1dbf00=_0x42f4[_0x3ae2b2];return _0x1dbf00;};'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']('CloudProvider,\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
+var _0x4c50=['moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','client','http','request','CloudProvider,\x20%s,\x20%s','request\x20sent','debug','CloudProvider,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util'];(function(_0x5d4618,_0x2c2057){var _0x389418=function(_0x1f5fc6){while(--_0x1f5fc6){_0x5d4618['push'](_0x5d4618['shift']());}};_0x389418(++_0x2c2057);}(_0x4c50,0x10f));var _0x04c5=function(_0x526f36,_0x19aadb){_0x526f36=_0x526f36-0x0;var _0x3746e6=_0x4c50[_0x526f36];return _0x3746e6;};'use strict';var _=require(_0x04c5('0x0'));var util=require(_0x04c5('0x1'));var moment=require(_0x04c5('0x2'));var BPromise=require(_0x04c5('0x3'));var rs=require(_0x04c5('0x4'));var fs=require('fs');var Redis=require(_0x04c5('0x5'));var db=require(_0x04c5('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x04c5('0x7'));var config=require(_0x04c5('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x04c5('0x9')][_0x04c5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x22535c,_0x34961a,_0x1fb2db){return new BPromise(function(_0x40a846,_0x411e7f){return client[_0x04c5('0xb')](_0x22535c,_0x1fb2db)['then'](function(_0x4ebad1){logger['info'](_0x04c5('0xc'),_0x34961a,_0x04c5('0xd'));logger[_0x04c5('0xe')](_0x04c5('0xf'),_0x34961a,_0x04c5('0xd'),JSON[_0x04c5('0x10')](_0x4ebad1));if(_0x4ebad1[_0x04c5('0x11')]){if(_0x4ebad1[_0x04c5('0x11')][_0x04c5('0x12')]===0x1f4){logger['error']('CloudProvider,\x20%s,\x20%s',_0x34961a,_0x4ebad1[_0x04c5('0x11')][_0x04c5('0x13')]);return _0x411e7f(_0x4ebad1['error'][_0x04c5('0x13')]);}logger[_0x04c5('0x11')](_0x04c5('0xc'),_0x34961a,_0x4ebad1[_0x04c5('0x11')][_0x04c5('0x13')]);return _0x40a846(_0x4ebad1['error']['message']);}else{logger['info']('CloudProvider,\x20%s,\x20%s',_0x34961a,'request\x20sent');_0x40a846(_0x4ebad1[_0x04c5('0x14')]['message']);}})['catch'](function(_0x1ee3a0){logger[_0x04c5('0x11')]('CloudProvider,\x20%s,\x20%s',_0x34961a,_0x1ee3a0);_0x411e7f(_0x1ee3a0);});});}
\ No newline at end of file
index 9e3906b..d0fbbb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62fd=['show','post','create','put','update','delete','destroy','multer','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id'];(function(_0x2338ae,_0x1896f8){var _0x4adad9=function(_0x1f6ed1){while(--_0x1f6ed1){_0x2338ae['push'](_0x2338ae['shift']());}};_0x4adad9(++_0x1896f8);}(_0x62fd,0x14b));var _0xd62f=function(_0x20a2a0,_0x36e98e){_0x20a2a0=_0x20a2a0-0x0;var _0x525739=_0x62fd[_0x20a2a0];return _0x525739;};'use strict';var multer=require(_0xd62f('0x0'));var util=require('util');var path=require(_0xd62f('0x1'));var timeout=require('connect-timeout');var express=require(_0xd62f('0x2'));var router=express['Router']();var fs_extra=require(_0xd62f('0x3'));var auth=require(_0xd62f('0x4'));var interaction=require(_0xd62f('0x5'));var config=require(_0xd62f('0x6'));var controller=require('./cloudProvider.controller');router[_0xd62f('0x7')]('/',auth[_0xd62f('0x8')](),controller[_0xd62f('0x9')]);router[_0xd62f('0x7')](_0xd62f('0xa'),auth[_0xd62f('0x8')](),controller[_0xd62f('0xb')]);router[_0xd62f('0xc')]('/',auth[_0xd62f('0x8')](),controller[_0xd62f('0xd')]);router[_0xd62f('0xe')]('/:id',auth[_0xd62f('0x8')](),controller[_0xd62f('0xf')]);router[_0xd62f('0x10')]('/:id',auth[_0xd62f('0x8')](),controller[_0xd62f('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0xcabf=['show','create','put','update','delete','exports','multer','util','Router','../../config/environment','get','isAuthenticated','index','/:id'];(function(_0x19fda2,_0x5de19b){var _0xb362d4=function(_0x9c9bd4){while(--_0x9c9bd4){_0x19fda2['push'](_0x19fda2['shift']());}};_0xb362d4(++_0x5de19b);}(_0xcabf,0x102));var _0xfcab=function(_0x5da11c,_0x17a50d){_0x5da11c=_0x5da11c-0x0;var _0x960ebf=_0xcabf[_0x5da11c];return _0x960ebf;};'use strict';var multer=require(_0xfcab('0x0'));var util=require(_0xfcab('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xfcab('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xfcab('0x3'));var controller=require('./cloudProvider.controller');router[_0xfcab('0x4')]('/',auth[_0xfcab('0x5')](),controller[_0xfcab('0x6')]);router['get'](_0xfcab('0x7'),auth[_0xfcab('0x5')](),controller[_0xfcab('0x8')]);router['post']('/',auth[_0xfcab('0x5')](),controller[_0xfcab('0x9')]);router[_0xfcab('0xa')](_0xfcab('0x7'),auth['isAuthenticated'](),controller[_0xfcab('0xb')]);router[_0xfcab('0xc')]('/:id',auth[_0xfcab('0x5')](),controller['destroy']);module[_0xfcab('0xd')]=router;
\ No newline at end of file
index 44eb7b2..a86199b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6819=['STRING','name','sequelize','exports'];(function(_0x290cc3,_0x7d6950){var _0x422574=function(_0x4725a9){while(--_0x4725a9){_0x290cc3['push'](_0x290cc3['shift']());}};_0x422574(++_0x7d6950);}(_0x6819,0x8a));var _0x9681=function(_0x26b44c,_0x407707){_0x26b44c=_0x26b44c-0x0;var _0x40981c=_0x6819[_0x26b44c];return _0x40981c;};'use strict';var Sequelize=require(_0x9681('0x0'));module[_0x9681('0x1')]={'name':{'type':Sequelize[_0x9681('0x2')],'unique':_0x9681('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x9681('0x2')]},'companyId':{'type':Sequelize[_0x9681('0x2')]},'website':{'type':Sequelize[_0x9681('0x2')]},'phone':{'type':Sequelize[_0x9681('0x2')]},'fax':{'type':Sequelize[_0x9681('0x2')]},'type':{'type':Sequelize[_0x9681('0x2')]},'street':{'type':Sequelize[_0x9681('0x2')]},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x9681('0x2')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x9681('0x2')]},'sStreet':{'type':Sequelize[_0x9681('0x2')]},'sPostalCode':{'type':Sequelize[_0x9681('0x2')]},'sCity':{'type':Sequelize[_0x9681('0x2')]},'sCountry':{'type':Sequelize[_0x9681('0x2')]},'description':{'type':Sequelize[_0x9681('0x2')]}};
\ No newline at end of file
+var _0x1fa7=['STRING','exports'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x1fa7,0x151));var _0x71fa=function(_0xe5d44f,_0x11d790){_0xe5d44f=_0xe5d44f-0x0;var _0x5e91ab=_0x1fa7[_0xe5d44f];return _0x5e91ab;};'use strict';var Sequelize=require('sequelize');module[_0x71fa('0x0')]={'name':{'type':Sequelize[_0x71fa('0x1')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize['STRING']},'companyId':{'type':Sequelize[_0x71fa('0x1')]},'website':{'type':Sequelize[_0x71fa('0x1')]},'phone':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0x71fa('0x1')]},'type':{'type':Sequelize['STRING']},'street':{'type':Sequelize[_0x71fa('0x1')]},'postalCode':{'type':Sequelize[_0x71fa('0x1')]},'city':{'type':Sequelize[_0x71fa('0x1')]},'country':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x71fa('0x1')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x71fa('0x1')]},'sStreet':{'type':Sequelize[_0x71fa('0x1')]},'sPostalCode':{'type':Sequelize['STRING']},'sCity':{'type':Sequelize['STRING']},'sCountry':{'type':Sequelize[_0x71fa('0x1')]},'description':{'type':Sequelize[_0x71fa('0x1')]}};
\ No newline at end of file
index 7d31cf6..bcd3db3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc196=['save','update','then','get','Companies','UserProfileResource','destroy','end','error','name','index','CmCompany','describe','keys','query','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','options','includeAll','findAll','catch','show','rawAttributes','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','addContacts','CmContact','omit','ids','getContacts','findOne','map','hasOwnProperty','eml-format','zip-dir','moment','util','path','to-csv','squel','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','json','offset','undefined','limit','count','set','Content-Range','apply','reject'];(function(_0x366496,_0x38619f){var _0xf77cdf=function(_0xee78c9){while(--_0xee78c9){_0x366496['push'](_0x366496['shift']());}};_0xf77cdf(++_0x38619f);}(_0xc196,0xdd));var _0x6c19=function(_0x3e6441,_0x248ed3){_0x3e6441=_0x3e6441-0x0;var _0x16aa65=_0xc196[_0x3e6441];return _0x16aa65;};'use strict';var emlformat=require(_0x6c19('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6c19('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x6c19('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x6c19('0x3'));var path=require(_0x6c19('0x4'));var sox=require('sox');var csv=require(_0x6c19('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x6c19('0x6'));var crypto=require('crypto');var jsforce=require(_0x6c19('0x7'));var deskjs=require(_0x6c19('0x8'));var toCsv=require(_0x6c19('0x5'));var querystring=require('querystring');var Papa=require(_0x6c19('0x9'));var Redis=require(_0x6c19('0xa'));var authService=require(_0x6c19('0xb'));var qs=require(_0x6c19('0xc'));var as=require(_0x6c19('0xd'));var hardwareService=require(_0x6c19('0xe'));var logger=require('../../config/logger')(_0x6c19('0xf'));var utils=require(_0x6c19('0x10'));var config=require(_0x6c19('0x11'));var licenseUtil=require(_0x6c19('0x12'));var db=require(_0x6c19('0x13'))['db'];function respondWithStatusCode(_0x530cf8,_0xeac3e6){_0xeac3e6=_0xeac3e6||0xcc;return function(_0x517fe2){if(_0x517fe2){return _0x530cf8[_0x6c19('0x14')](_0xeac3e6);}return _0x530cf8[_0x6c19('0x15')](_0xeac3e6)['end']();};}function respondWithResult(_0x20e2cd,_0x278602){_0x278602=_0x278602||0xc8;return function(_0x3b0c87){if(_0x3b0c87){return _0x20e2cd['status'](_0x278602)[_0x6c19('0x16')](_0x3b0c87);}};}function respondWithFilteredResult(_0x12ac1d,_0x3182ab){return function(_0x5380ee){if(_0x5380ee){var _0x2553bc=typeof _0x3182ab[_0x6c19('0x17')]===_0x6c19('0x18')&&typeof _0x3182ab[_0x6c19('0x19')]===_0x6c19('0x18');var _0x42c353=_0x5380ee['count'];var _0x5ae036=_0x2553bc?0x0:_0x3182ab[_0x6c19('0x17')];var _0x37bcf2=_0x2553bc?_0x5380ee[_0x6c19('0x1a')]:_0x3182ab[_0x6c19('0x17')]+_0x3182ab['limit'];var _0x218f5b;if(_0x37bcf2>=_0x42c353){_0x37bcf2=_0x42c353;_0x218f5b=0xc8;}else{_0x218f5b=0xce;}_0x12ac1d['status'](_0x218f5b);return _0x12ac1d[_0x6c19('0x1b')](_0x6c19('0x1c'),_0x5ae036+'-'+_0x37bcf2+'/'+_0x42c353)[_0x6c19('0x16')](_0x5380ee);}return null;};}function patchUpdates(_0x4825c3){return function(_0x53ecfd){try{jsonpatch[_0x6c19('0x1d')](_0x53ecfd,_0x4825c3,!![]);}catch(_0x5d8e77){return BPromise[_0x6c19('0x1e')](_0x5d8e77);}return _0x53ecfd[_0x6c19('0x1f')]();};}function saveUpdates(_0x1f404f,_0x1003a2){return function(_0x4fb816){if(_0x4fb816){return _0x4fb816[_0x6c19('0x20')](_0x1f404f)['then'](function(_0x2fef5e){return _0x2fef5e;});}return null;};}function removeEntity(_0x363c12,_0x427d5c){return function(_0x557597){if(_0x557597){return _0x557597['destroy']()[_0x6c19('0x21')](function(){var _0x5b0579=_0x557597[_0x6c19('0x22')]({'plain':!![]});var _0xb45cf5=_0x6c19('0x23');return db[_0x6c19('0x24')][_0x6c19('0x25')]({'where':{'type':_0xb45cf5,'resourceId':_0x5b0579['id']}})[_0x6c19('0x21')](function(){return _0x557597;});})['then'](function(){_0x363c12['status'](0xcc)[_0x6c19('0x26')]();});}};}function handleEntityNotFound(_0x5acd98,_0x294331){return function(_0x521234){if(!_0x521234){_0x5acd98['sendStatus'](0x194);}return _0x521234;};}function handleError(_0x402283,_0x2972a3){_0x2972a3=_0x2972a3||0x1f4;return function(_0x295436){logger[_0x6c19('0x27')](_0x295436['stack']);if(_0x295436[_0x6c19('0x28')]){delete _0x295436[_0x6c19('0x28')];}_0x402283['status'](_0x2972a3)['send'](_0x295436);};}exports[_0x6c19('0x29')]=function(_0x1dc6f9,_0x21e78d){var _0x52cc1a={},_0x51f2e2={},_0x36fa41={'count':0x0,'rows':[]};return db[_0x6c19('0x2a')][_0x6c19('0x2b')]()[_0x6c19('0x21')](function(_0x1975a9){_0x51f2e2['model']=_[_0x6c19('0x2c')](_0x1975a9);_0x51f2e2[_0x6c19('0x2d')]=_['keys'](_0x1dc6f9[_0x6c19('0x2d')]);_0x51f2e2[_0x6c19('0x2e')]=_[_0x6c19('0x2f')](_0x51f2e2[_0x6c19('0x30')],_0x51f2e2[_0x6c19('0x2d')]);_0x52cc1a[_0x6c19('0x31')]=_['intersection'](_0x51f2e2['model'],qs[_0x6c19('0x32')](_0x1dc6f9[_0x6c19('0x2d')][_0x6c19('0x32')]));_0x52cc1a[_0x6c19('0x31')]=_0x52cc1a['attributes'][_0x6c19('0x33')]?_0x52cc1a['attributes']:_0x51f2e2[_0x6c19('0x30')];if(!_0x1dc6f9[_0x6c19('0x2d')]['hasOwnProperty'](_0x6c19('0x34'))){_0x52cc1a[_0x6c19('0x19')]=qs['limit'](_0x1dc6f9[_0x6c19('0x2d')]['limit']);_0x52cc1a[_0x6c19('0x17')]=qs[_0x6c19('0x17')](_0x1dc6f9[_0x6c19('0x2d')][_0x6c19('0x17')]);}_0x52cc1a[_0x6c19('0x35')]=qs[_0x6c19('0x36')](_0x1dc6f9[_0x6c19('0x2d')]['sort']);_0x52cc1a[_0x6c19('0x37')]=qs[_0x6c19('0x2e')](_[_0x6c19('0x38')](_0x1dc6f9[_0x6c19('0x2d')],_0x51f2e2[_0x6c19('0x2e')]),_0x1975a9);if(_0x1dc6f9['query'][_0x6c19('0x39')]){_0x52cc1a[_0x6c19('0x37')]=_[_0x6c19('0x3a')](_0x52cc1a['where'],{'$or':_['map'](_0x52cc1a[_0x6c19('0x31')],function(_0x2a5548){var _0x5eac41={};_0x5eac41[_0x2a5548]={'$like':'%'+_0x1dc6f9[_0x6c19('0x2d')]['filter']+'%'};return _0x5eac41;})});}_0x52cc1a=_[_0x6c19('0x3a')]({},_0x52cc1a,_0x1dc6f9[_0x6c19('0x3b')]);var _0x2e51f3={'where':_0x52cc1a['where']};return db[_0x6c19('0x2a')][_0x6c19('0x1a')](_0x2e51f3)[_0x6c19('0x21')](function(_0x3f1928){_0x36fa41[_0x6c19('0x1a')]=_0x3f1928;if(_0x1dc6f9[_0x6c19('0x2d')][_0x6c19('0x3c')]){_0x52cc1a['include']=[{'all':!![]}];}return db[_0x6c19('0x2a')][_0x6c19('0x3d')](_0x52cc1a);})[_0x6c19('0x21')](function(_0x420e81){_0x36fa41['rows']=_0x420e81;return _0x36fa41;})[_0x6c19('0x21')](respondWithFilteredResult(_0x21e78d,_0x52cc1a))[_0x6c19('0x3e')](handleError(_0x21e78d,null));})[_0x6c19('0x3e')](handleError(_0x21e78d,null));};exports[_0x6c19('0x3f')]=function(_0x1370b8,_0x57f8a5){var _0xc38102={'raw':![],'where':{'id':_0x1370b8['params']['id']}},_0x1e1ca0={};_0x1e1ca0[_0x6c19('0x30')]=_[_0x6c19('0x2c')](db[_0x6c19('0x2a')][_0x6c19('0x40')]);_0x1e1ca0['query']=_[_0x6c19('0x2c')](_0x1370b8[_0x6c19('0x2d')]);_0x1e1ca0['filters']=_[_0x6c19('0x2f')](_0x1e1ca0[_0x6c19('0x30')],_0x1e1ca0['query']);_0xc38102[_0x6c19('0x31')]=_['intersection'](_0x1e1ca0[_0x6c19('0x30')],qs[_0x6c19('0x32')](_0x1370b8[_0x6c19('0x2d')][_0x6c19('0x32')]));_0xc38102[_0x6c19('0x31')]=_0xc38102[_0x6c19('0x31')][_0x6c19('0x33')]?_0xc38102[_0x6c19('0x31')]:_0x1e1ca0[_0x6c19('0x30')];if(_0x1370b8['query'][_0x6c19('0x3c')]){_0xc38102[_0x6c19('0x41')]=[{'all':!![]}];}_0xc38102=_[_0x6c19('0x3a')]({},_0xc38102,_0x1370b8['options']);return db[_0x6c19('0x2a')][_0x6c19('0x42')](_0xc38102)[_0x6c19('0x21')](handleEntityNotFound(_0x57f8a5,null))['then'](respondWithResult(_0x57f8a5,null))[_0x6c19('0x3e')](handleError(_0x57f8a5,null));};exports['create']=function(_0x4e5a4e,_0xb99be5){return db[_0x6c19('0x2a')][_0x6c19('0x43')](_0x4e5a4e[_0x6c19('0x44')],{})['then'](function(_0x1a5123){var _0x52d81c=_0x4e5a4e[_0x6c19('0x45')][_0x6c19('0x22')]({'plain':!![]});if(!_0x52d81c)throw new Error(_0x6c19('0x46'));if(_0x52d81c['role']===_0x6c19('0x45')){var _0x226864=_0x1a5123[_0x6c19('0x22')]({'plain':!![]});var _0x1ac281=_0x6c19('0x23');return db[_0x6c19('0x47')][_0x6c19('0x42')]({'where':{'name':_0x1ac281,'userProfileId':_0x52d81c[_0x6c19('0x48')]},'raw':!![]})['then'](function(_0x126df1){if(_0x126df1&&_0x126df1[_0x6c19('0x49')]===0x0){return db['UserProfileResource']['create']({'name':_0x226864[_0x6c19('0x28')],'resourceId':_0x226864['id'],'type':_0x126df1[_0x6c19('0x28')],'sectionId':_0x126df1['id']},{})['then'](function(){return _0x1a5123;});}else{return _0x1a5123;}})[_0x6c19('0x3e')](function(_0xc1cacd){logger['error'](_0x6c19('0x4a'),_0xc1cacd);throw _0xc1cacd;});}return _0x1a5123;})[_0x6c19('0x21')](respondWithResult(_0xb99be5,0xc9))[_0x6c19('0x3e')](handleError(_0xb99be5,null));};exports[_0x6c19('0x20')]=function(_0x1e89b3,_0x5e026b){if(_0x1e89b3['body']['id']){delete _0x1e89b3[_0x6c19('0x44')]['id'];}return db[_0x6c19('0x2a')][_0x6c19('0x42')]({'where':{'id':_0x1e89b3[_0x6c19('0x4b')]['id']}})['then'](handleEntityNotFound(_0x5e026b,null))[_0x6c19('0x21')](saveUpdates(_0x1e89b3['body'],null))[_0x6c19('0x21')](respondWithResult(_0x5e026b,null))[_0x6c19('0x3e')](handleError(_0x5e026b,null));};exports[_0x6c19('0x25')]=function(_0x16374a,_0x5977e1){return db[_0x6c19('0x2a')][_0x6c19('0x42')]({'where':{'id':_0x16374a[_0x6c19('0x4b')]['id']}})['then'](handleEntityNotFound(_0x5977e1,null))[_0x6c19('0x21')](removeEntity(_0x5977e1,null))[_0x6c19('0x3e')](handleError(_0x5977e1,null));};exports[_0x6c19('0x2b')]=function(_0x288872,_0x2f476a){return db['CmCompany'][_0x6c19('0x2b')]()[_0x6c19('0x21')](respondWithResult(_0x2f476a,null))[_0x6c19('0x3e')](handleError(_0x2f476a,null));};exports[_0x6c19('0x4c')]=function(_0x4bc9d5,_0x57e365,_0x1905f5){return db[_0x6c19('0x4d')]['find']({'where':{'id':_0x4bc9d5['params']['id']}})['then'](handleEntityNotFound(_0x57e365,null))['then'](function(_0x136f4d){if(_0x136f4d){return _0x136f4d[_0x6c19('0x4c')](_0x4bc9d5[_0x6c19('0x44')]['ids'],_[_0x6c19('0x4e')](_0x4bc9d5[_0x6c19('0x44')],[_0x6c19('0x4f'),'id'])||{});}})[_0x6c19('0x21')](respondWithResult(_0x57e365,null))[_0x6c19('0x3e')](handleError(_0x57e365,null));};exports[_0x6c19('0x50')]=function(_0x524652,_0x3bebe4,_0x266392){var _0x5511b3={};var _0x4776a9={};var _0x5531a4;var _0x3d52e5;return db[_0x6c19('0x2a')][_0x6c19('0x51')]({'where':{'id':_0x524652[_0x6c19('0x4b')]['id']}})['then'](handleEntityNotFound(_0x3bebe4,null))['then'](function(_0x2a8b56){if(_0x2a8b56){_0x5531a4=_0x2a8b56;_0x4776a9[_0x6c19('0x30')]=_[_0x6c19('0x2c')](db[_0x6c19('0x4d')]['rawAttributes']);_0x4776a9[_0x6c19('0x2d')]=_[_0x6c19('0x2c')](_0x524652['query']);_0x4776a9[_0x6c19('0x2e')]=_[_0x6c19('0x2f')](_0x4776a9[_0x6c19('0x30')],_0x4776a9[_0x6c19('0x2d')]);_0x5511b3[_0x6c19('0x31')]=_[_0x6c19('0x2f')](_0x4776a9[_0x6c19('0x30')],qs[_0x6c19('0x32')](_0x524652['query'][_0x6c19('0x32')]));_0x5511b3[_0x6c19('0x31')]=_0x5511b3['attributes'][_0x6c19('0x33')]?_0x5511b3[_0x6c19('0x31')]:_0x4776a9[_0x6c19('0x30')];_0x5511b3[_0x6c19('0x35')]=qs[_0x6c19('0x36')](_0x524652[_0x6c19('0x2d')][_0x6c19('0x36')]);_0x5511b3[_0x6c19('0x37')]=qs['filters'](_[_0x6c19('0x38')](_0x524652[_0x6c19('0x2d')],_0x4776a9[_0x6c19('0x2e')]));if(_0x524652['query'][_0x6c19('0x39')]){_0x5511b3[_0x6c19('0x37')]=_[_0x6c19('0x3a')](_0x5511b3[_0x6c19('0x37')],{'$or':_[_0x6c19('0x52')](_0x5511b3[_0x6c19('0x31')],function(_0x239f0b){var _0x4c5ce6={};_0x4c5ce6[_0x239f0b]={'$like':'%'+_0x524652[_0x6c19('0x2d')][_0x6c19('0x39')]+'%'};return _0x4c5ce6;})});}_0x5511b3=_['merge']({},_0x5511b3,_0x524652[_0x6c19('0x3b')]);return _0x5531a4[_0x6c19('0x50')](_0x5511b3);}})[_0x6c19('0x21')](function(_0x57185c){if(_0x57185c){_0x3d52e5=_0x57185c['length'];if(!_0x524652[_0x6c19('0x2d')][_0x6c19('0x53')]('nolimit')){_0x5511b3[_0x6c19('0x19')]=qs[_0x6c19('0x19')](_0x524652[_0x6c19('0x2d')]['limit']);_0x5511b3[_0x6c19('0x17')]=qs[_0x6c19('0x17')](_0x524652[_0x6c19('0x2d')][_0x6c19('0x17')]);}return _0x5531a4[_0x6c19('0x50')](_0x5511b3);}})['then'](function(_0x2e249e){if(_0x2e249e){return _0x2e249e?{'count':_0x3d52e5,'rows':_0x2e249e}:null;}})[_0x6c19('0x21')](respondWithResult(_0x3bebe4,null))[_0x6c19('0x3e')](handleError(_0x3bebe4,null));};
\ No newline at end of file
+var _0xbc22=['offset','set','json','apply','then','destroy','get','Companies','UserProfileResource','error','stack','name','send','index','CmCompany','model','query','keys','filters','attributes','intersection','fields','nolimit','sort','where','filter','merge','includeAll','include','rows','catch','show','rawAttributes','length','options','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','describe','addContacts','CmContact','params','ids','getContacts','order','map','hasOwnProperty','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','fs-extra','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count'];(function(_0xc0c68,_0x254415){var _0x2d965f=function(_0x173c22){while(--_0x173c22){_0xc0c68['push'](_0xc0c68['shift']());}};_0x2d965f(++_0x254415);}(_0xbc22,0x131));var _0x2bc2=function(_0x187279,_0x26d152){_0x187279=_0x187279-0x0;var _0x3da59d=_0xbc22[_0x187279];return _0x3da59d;};'use strict';var emlformat=require(_0x2bc2('0x0'));var rimraf=require(_0x2bc2('0x1'));var zipdir=require(_0x2bc2('0x2'));var jsonpatch=require(_0x2bc2('0x3'));var rp=require(_0x2bc2('0x4'));var moment=require(_0x2bc2('0x5'));var BPromise=require(_0x2bc2('0x6'));var Mustache=require('mustache');var util=require(_0x2bc2('0x7'));var path=require(_0x2bc2('0x8'));var sox=require(_0x2bc2('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2bc2('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x2bc2('0xb'));var deskjs=require(_0x2bc2('0xc'));var toCsv=require('to-csv');var querystring=require(_0x2bc2('0xd'));var Papa=require(_0x2bc2('0xe'));var Redis=require(_0x2bc2('0xf'));var authService=require(_0x2bc2('0x10'));var qs=require(_0x2bc2('0x11'));var as=require(_0x2bc2('0x12'));var hardwareService=require(_0x2bc2('0x13'));var logger=require(_0x2bc2('0x14'))(_0x2bc2('0x15'));var utils=require(_0x2bc2('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x2bc2('0x17'));var db=require(_0x2bc2('0x18'))['db'];function respondWithStatusCode(_0x5a16fe,_0x175251){_0x175251=_0x175251||0xcc;return function(_0x132177){if(_0x132177){return _0x5a16fe[_0x2bc2('0x19')](_0x175251);}return _0x5a16fe[_0x2bc2('0x1a')](_0x175251)[_0x2bc2('0x1b')]();};}function respondWithResult(_0x4bad4b,_0x2d0510){_0x2d0510=_0x2d0510||0xc8;return function(_0x503713){if(_0x503713){return _0x4bad4b[_0x2bc2('0x1a')](_0x2d0510)['json'](_0x503713);}};}function respondWithFilteredResult(_0x1233b2,_0x31f218){return function(_0x5860cc){if(_0x5860cc){var _0x54b5c4=typeof _0x31f218['offset']===_0x2bc2('0x1c')&&typeof _0x31f218[_0x2bc2('0x1d')]==='undefined';var _0xfbd7d9=_0x5860cc[_0x2bc2('0x1e')];var _0x53d4ac=_0x54b5c4?0x0:_0x31f218['offset'];var _0x2886c5=_0x54b5c4?_0x5860cc[_0x2bc2('0x1e')]:_0x31f218[_0x2bc2('0x1f')]+_0x31f218[_0x2bc2('0x1d')];var _0x4ff222;if(_0x2886c5>=_0xfbd7d9){_0x2886c5=_0xfbd7d9;_0x4ff222=0xc8;}else{_0x4ff222=0xce;}_0x1233b2['status'](_0x4ff222);return _0x1233b2[_0x2bc2('0x20')]('Content-Range',_0x53d4ac+'-'+_0x2886c5+'/'+_0xfbd7d9)[_0x2bc2('0x21')](_0x5860cc);}return null;};}function patchUpdates(_0x73b73a){return function(_0x25bf1d){try{jsonpatch[_0x2bc2('0x22')](_0x25bf1d,_0x73b73a,!![]);}catch(_0x14b0cd){return BPromise['reject'](_0x14b0cd);}return _0x25bf1d['save']();};}function saveUpdates(_0x852a71,_0x3d7fc6){return function(_0x534b46){if(_0x534b46){return _0x534b46['update'](_0x852a71)[_0x2bc2('0x23')](function(_0x4e3b44){return _0x4e3b44;});}return null;};}function removeEntity(_0x38d32a,_0x3c50f2){return function(_0x2f4c5d){if(_0x2f4c5d){return _0x2f4c5d[_0x2bc2('0x24')]()[_0x2bc2('0x23')](function(){var _0x5717da=_0x2f4c5d[_0x2bc2('0x25')]({'plain':!![]});var _0xeed6a9=_0x2bc2('0x26');return db[_0x2bc2('0x27')][_0x2bc2('0x24')]({'where':{'type':_0xeed6a9,'resourceId':_0x5717da['id']}})['then'](function(){return _0x2f4c5d;});})[_0x2bc2('0x23')](function(){_0x38d32a['status'](0xcc)[_0x2bc2('0x1b')]();});}};}function handleEntityNotFound(_0x4325f3,_0x25e73f){return function(_0x187d33){if(!_0x187d33){_0x4325f3[_0x2bc2('0x19')](0x194);}return _0x187d33;};}function handleError(_0x5065d9,_0x3406af){_0x3406af=_0x3406af||0x1f4;return function(_0x8306c1){logger[_0x2bc2('0x28')](_0x8306c1[_0x2bc2('0x29')]);if(_0x8306c1[_0x2bc2('0x2a')]){delete _0x8306c1[_0x2bc2('0x2a')];}_0x5065d9[_0x2bc2('0x1a')](_0x3406af)[_0x2bc2('0x2b')](_0x8306c1);};}exports[_0x2bc2('0x2c')]=function(_0xa1284f,_0xb7d6fc){var _0x52cfae={},_0xe8c700={},_0x57d6c9={'count':0x0,'rows':[]};return db[_0x2bc2('0x2d')]['describe']()['then'](function(_0x2fea74){_0xe8c700[_0x2bc2('0x2e')]=_['keys'](_0x2fea74);_0xe8c700[_0x2bc2('0x2f')]=_[_0x2bc2('0x30')](_0xa1284f[_0x2bc2('0x2f')]);_0xe8c700[_0x2bc2('0x31')]=_['intersection'](_0xe8c700[_0x2bc2('0x2e')],_0xe8c700[_0x2bc2('0x2f')]);_0x52cfae[_0x2bc2('0x32')]=_[_0x2bc2('0x33')](_0xe8c700['model'],qs[_0x2bc2('0x34')](_0xa1284f[_0x2bc2('0x2f')]['fields']));_0x52cfae[_0x2bc2('0x32')]=_0x52cfae[_0x2bc2('0x32')]['length']?_0x52cfae[_0x2bc2('0x32')]:_0xe8c700[_0x2bc2('0x2e')];if(!_0xa1284f['query']['hasOwnProperty'](_0x2bc2('0x35'))){_0x52cfae[_0x2bc2('0x1d')]=qs[_0x2bc2('0x1d')](_0xa1284f[_0x2bc2('0x2f')]['limit']);_0x52cfae[_0x2bc2('0x1f')]=qs[_0x2bc2('0x1f')](_0xa1284f[_0x2bc2('0x2f')]['offset']);}_0x52cfae['order']=qs[_0x2bc2('0x36')](_0xa1284f['query'][_0x2bc2('0x36')]);_0x52cfae[_0x2bc2('0x37')]=qs[_0x2bc2('0x31')](_['pick'](_0xa1284f[_0x2bc2('0x2f')],_0xe8c700['filters']),_0x2fea74);if(_0xa1284f[_0x2bc2('0x2f')]['filter']){_0x52cfae[_0x2bc2('0x37')]=_['merge'](_0x52cfae[_0x2bc2('0x37')],{'$or':_['map'](_0x52cfae[_0x2bc2('0x32')],function(_0x4153e6){var _0x448640={};_0x448640[_0x4153e6]={'$like':'%'+_0xa1284f[_0x2bc2('0x2f')][_0x2bc2('0x38')]+'%'};return _0x448640;})});}_0x52cfae=_[_0x2bc2('0x39')]({},_0x52cfae,_0xa1284f['options']);var _0x228da5={'where':_0x52cfae[_0x2bc2('0x37')]};return db['CmCompany'][_0x2bc2('0x1e')](_0x228da5)[_0x2bc2('0x23')](function(_0x23511b){_0x57d6c9[_0x2bc2('0x1e')]=_0x23511b;if(_0xa1284f[_0x2bc2('0x2f')][_0x2bc2('0x3a')]){_0x52cfae[_0x2bc2('0x3b')]=[{'all':!![]}];}return db['CmCompany']['findAll'](_0x52cfae);})[_0x2bc2('0x23')](function(_0x2e0261){_0x57d6c9[_0x2bc2('0x3c')]=_0x2e0261;return _0x57d6c9;})[_0x2bc2('0x23')](respondWithFilteredResult(_0xb7d6fc,_0x52cfae))[_0x2bc2('0x3d')](handleError(_0xb7d6fc,null));})[_0x2bc2('0x3d')](handleError(_0xb7d6fc,null));};exports[_0x2bc2('0x3e')]=function(_0x52f59e,_0x38bb5c){var _0x1342f3={'raw':![],'where':{'id':_0x52f59e['params']['id']}},_0x517794={};_0x517794[_0x2bc2('0x2e')]=_[_0x2bc2('0x30')](db[_0x2bc2('0x2d')][_0x2bc2('0x3f')]);_0x517794[_0x2bc2('0x2f')]=_[_0x2bc2('0x30')](_0x52f59e[_0x2bc2('0x2f')]);_0x517794[_0x2bc2('0x31')]=_[_0x2bc2('0x33')](_0x517794[_0x2bc2('0x2e')],_0x517794[_0x2bc2('0x2f')]);_0x1342f3[_0x2bc2('0x32')]=_['intersection'](_0x517794[_0x2bc2('0x2e')],qs[_0x2bc2('0x34')](_0x52f59e[_0x2bc2('0x2f')][_0x2bc2('0x34')]));_0x1342f3['attributes']=_0x1342f3[_0x2bc2('0x32')][_0x2bc2('0x40')]?_0x1342f3['attributes']:_0x517794[_0x2bc2('0x2e')];if(_0x52f59e[_0x2bc2('0x2f')]['includeAll']){_0x1342f3[_0x2bc2('0x3b')]=[{'all':!![]}];}_0x1342f3=_['merge']({},_0x1342f3,_0x52f59e[_0x2bc2('0x41')]);return db[_0x2bc2('0x2d')][_0x2bc2('0x42')](_0x1342f3)[_0x2bc2('0x23')](handleEntityNotFound(_0x38bb5c,null))[_0x2bc2('0x23')](respondWithResult(_0x38bb5c,null))[_0x2bc2('0x3d')](handleError(_0x38bb5c,null));};exports['create']=function(_0x4421ff,_0x361329){return db['CmCompany'][_0x2bc2('0x43')](_0x4421ff['body'],{})[_0x2bc2('0x23')](function(_0x1c34cd){var _0x2c916a=_0x4421ff['user'][_0x2bc2('0x25')]({'plain':!![]});if(!_0x2c916a)throw new Error(_0x2bc2('0x44'));if(_0x2c916a[_0x2bc2('0x45')]==='user'){var _0x4d58ee=_0x1c34cd[_0x2bc2('0x25')]({'plain':!![]});var _0x57e784=_0x2bc2('0x26');return db['UserProfileSection'][_0x2bc2('0x42')]({'where':{'name':_0x57e784,'userProfileId':_0x2c916a[_0x2bc2('0x46')]},'raw':!![]})[_0x2bc2('0x23')](function(_0x4a025b){if(_0x4a025b&&_0x4a025b[_0x2bc2('0x47')]===0x0){return db[_0x2bc2('0x27')]['create']({'name':_0x4d58ee[_0x2bc2('0x2a')],'resourceId':_0x4d58ee['id'],'type':_0x4a025b['name'],'sectionId':_0x4a025b['id']},{})[_0x2bc2('0x23')](function(){return _0x1c34cd;});}else{return _0x1c34cd;}})[_0x2bc2('0x3d')](function(_0x27cc1e){logger[_0x2bc2('0x28')](_0x2bc2('0x48'),_0x27cc1e);throw _0x27cc1e;});}return _0x1c34cd;})['then'](respondWithResult(_0x361329,0xc9))[_0x2bc2('0x3d')](handleError(_0x361329,null));};exports[_0x2bc2('0x49')]=function(_0x3a5b4d,_0x582571){if(_0x3a5b4d[_0x2bc2('0x4a')]['id']){delete _0x3a5b4d[_0x2bc2('0x4a')]['id'];}return db[_0x2bc2('0x2d')][_0x2bc2('0x42')]({'where':{'id':_0x3a5b4d['params']['id']}})['then'](handleEntityNotFound(_0x582571,null))[_0x2bc2('0x23')](saveUpdates(_0x3a5b4d[_0x2bc2('0x4a')],null))[_0x2bc2('0x23')](respondWithResult(_0x582571,null))[_0x2bc2('0x3d')](handleError(_0x582571,null));};exports[_0x2bc2('0x24')]=function(_0x9e266,_0x2796b5){return db[_0x2bc2('0x2d')][_0x2bc2('0x42')]({'where':{'id':_0x9e266['params']['id']}})[_0x2bc2('0x23')](handleEntityNotFound(_0x2796b5,null))[_0x2bc2('0x23')](removeEntity(_0x2796b5,null))[_0x2bc2('0x3d')](handleError(_0x2796b5,null));};exports[_0x2bc2('0x4b')]=function(_0x9baad9,_0xe22bfe){return db['CmCompany'][_0x2bc2('0x4b')]()['then'](respondWithResult(_0xe22bfe,null))['catch'](handleError(_0xe22bfe,null));};exports[_0x2bc2('0x4c')]=function(_0x4714af,_0x7ca9b3,_0x1944de){return db[_0x2bc2('0x4d')]['find']({'where':{'id':_0x4714af[_0x2bc2('0x4e')]['id']}})[_0x2bc2('0x23')](handleEntityNotFound(_0x7ca9b3,null))[_0x2bc2('0x23')](function(_0x268178){if(_0x268178){return _0x268178[_0x2bc2('0x4c')](_0x4714af[_0x2bc2('0x4a')]['ids'],_['omit'](_0x4714af[_0x2bc2('0x4a')],[_0x2bc2('0x4f'),'id'])||{});}})[_0x2bc2('0x23')](respondWithResult(_0x7ca9b3,null))[_0x2bc2('0x3d')](handleError(_0x7ca9b3,null));};exports[_0x2bc2('0x50')]=function(_0x5d41a6,_0xbabe64,_0x22c844){var _0x9f9a7a={};var _0x2c5a0e={};var _0x1eee1e;var _0x30e3c6;return db[_0x2bc2('0x2d')]['findOne']({'where':{'id':_0x5d41a6['params']['id']}})[_0x2bc2('0x23')](handleEntityNotFound(_0xbabe64,null))[_0x2bc2('0x23')](function(_0xc7c089){if(_0xc7c089){_0x1eee1e=_0xc7c089;_0x2c5a0e[_0x2bc2('0x2e')]=_[_0x2bc2('0x30')](db['CmContact'][_0x2bc2('0x3f')]);_0x2c5a0e['query']=_[_0x2bc2('0x30')](_0x5d41a6[_0x2bc2('0x2f')]);_0x2c5a0e['filters']=_['intersection'](_0x2c5a0e[_0x2bc2('0x2e')],_0x2c5a0e[_0x2bc2('0x2f')]);_0x9f9a7a[_0x2bc2('0x32')]=_[_0x2bc2('0x33')](_0x2c5a0e[_0x2bc2('0x2e')],qs[_0x2bc2('0x34')](_0x5d41a6['query'][_0x2bc2('0x34')]));_0x9f9a7a[_0x2bc2('0x32')]=_0x9f9a7a[_0x2bc2('0x32')][_0x2bc2('0x40')]?_0x9f9a7a[_0x2bc2('0x32')]:_0x2c5a0e[_0x2bc2('0x2e')];_0x9f9a7a[_0x2bc2('0x51')]=qs[_0x2bc2('0x36')](_0x5d41a6[_0x2bc2('0x2f')][_0x2bc2('0x36')]);_0x9f9a7a[_0x2bc2('0x37')]=qs['filters'](_['pick'](_0x5d41a6[_0x2bc2('0x2f')],_0x2c5a0e[_0x2bc2('0x31')]));if(_0x5d41a6[_0x2bc2('0x2f')][_0x2bc2('0x38')]){_0x9f9a7a[_0x2bc2('0x37')]=_[_0x2bc2('0x39')](_0x9f9a7a[_0x2bc2('0x37')],{'$or':_[_0x2bc2('0x52')](_0x9f9a7a['attributes'],function(_0x25d423){var _0x59aab7={};_0x59aab7[_0x25d423]={'$like':'%'+_0x5d41a6[_0x2bc2('0x2f')][_0x2bc2('0x38')]+'%'};return _0x59aab7;})});}_0x9f9a7a=_[_0x2bc2('0x39')]({},_0x9f9a7a,_0x5d41a6['options']);return _0x1eee1e[_0x2bc2('0x50')](_0x9f9a7a);}})['then'](function(_0x5d531f){if(_0x5d531f){_0x30e3c6=_0x5d531f[_0x2bc2('0x40')];if(!_0x5d41a6[_0x2bc2('0x2f')][_0x2bc2('0x53')](_0x2bc2('0x35'))){_0x9f9a7a[_0x2bc2('0x1d')]=qs['limit'](_0x5d41a6['query']['limit']);_0x9f9a7a[_0x2bc2('0x1f')]=qs['offset'](_0x5d41a6[_0x2bc2('0x2f')][_0x2bc2('0x1f')]);}return _0x1eee1e['getContacts'](_0x9f9a7a);}})[_0x2bc2('0x23')](function(_0x599fc5){if(_0x599fc5){return _0x599fc5?{'count':_0x30e3c6,'rows':_0x599fc5}:null;}})['then'](respondWithResult(_0xbabe64,null))[_0x2bc2('0x3d')](handleError(_0xbabe64,null));};
\ No newline at end of file
index f8459f2..a3d2347 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99f2=['CmCompany','cm_companies','util','../../config/logger','api','bluebird','path','../../config/environment','./cmCompany.attributes','exports','define'];(function(_0x273c39,_0x1052e6){var _0x46d6b5=function(_0x44f1fb){while(--_0x44f1fb){_0x273c39['push'](_0x273c39['shift']());}};_0x46d6b5(++_0x1052e6);}(_0x99f2,0x141));var _0x299f=function(_0x9c7389,_0x3e8c68){_0x9c7389=_0x9c7389-0x0;var _0x7b51be=_0x99f2[_0x9c7389];return _0x7b51be;};'use strict';var _=require('lodash');var util=require(_0x299f('0x0'));var logger=require(_0x299f('0x1'))(_0x299f('0x2'));var moment=require('moment');var BPromise=require(_0x299f('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x299f('0x4'));var rimraf=require('rimraf');var config=require(_0x299f('0x5'));var attributes=require(_0x299f('0x6'));module[_0x299f('0x7')]=function(_0x5d6b60,_0x5e4c4c){return _0x5d6b60[_0x299f('0x8')](_0x299f('0x9'),attributes,{'tableName':_0x299f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1d07=['CmCompany','lodash','util','api','bluebird','request-promise','path','./cmCompany.attributes','exports'];(function(_0x5da396,_0x3242cd){var _0x5928e2=function(_0x1d1716){while(--_0x1d1716){_0x5da396['push'](_0x5da396['shift']());}};_0x5928e2(++_0x3242cd);}(_0x1d07,0x184));var _0x71d0=function(_0x88cd7b,_0x4c884c){_0x88cd7b=_0x88cd7b-0x0;var _0x56fcc8=_0x1d07[_0x88cd7b];return _0x56fcc8;};'use strict';var _=require(_0x71d0('0x0'));var util=require(_0x71d0('0x1'));var logger=require('../../config/logger')(_0x71d0('0x2'));var moment=require('moment');var BPromise=require(_0x71d0('0x3'));var rp=require(_0x71d0('0x4'));var fs=require('fs');var path=require(_0x71d0('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x71d0('0x6'));module[_0x71d0('0x7')]=function(_0x3b685c,_0x25b9fd){return _0x3b685c['define'](_0x71d0('0x8'),attributes,{'tableName':'cm_companies','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b372a42..66686d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecf0=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','CmCompany,\x20%s,\x20%s,\x20%s','error','code','CmCompany,\x20%s,\x20%s','message','catch','moment','bluebird','randomstring'];(function(_0x1e30ae,_0x31fb63){var _0x572148=function(_0x4e8737){while(--_0x4e8737){_0x1e30ae['push'](_0x1e30ae['shift']());}};_0x572148(++_0x31fb63);}(_0xecf0,0xf4));var _0x0ecf=function(_0x249c8c,_0x532d6e){_0x249c8c=_0x249c8c-0x0;var _0x2591aa=_0xecf0[_0x249c8c];return _0x2591aa;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x0ecf('0x0'));var BPromise=require(_0x0ecf('0x1'));var rs=require(_0x0ecf('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x0ecf('0x3'));var logger=require(_0x0ecf('0x4'))(_0x0ecf('0x5'));var config=require(_0x0ecf('0x6'));var jayson=require(_0x0ecf('0x7'));var client=jayson[_0x0ecf('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2fffcc,_0x2f052b,_0x2a8913){return new BPromise(function(_0x1b36c3,_0x1841cf){return client[_0x0ecf('0x9')](_0x2fffcc,_0x2a8913)[_0x0ecf('0xa')](function(_0x47cd8e){logger[_0x0ecf('0xb')]('CmCompany,\x20%s,\x20%s',_0x2f052b,_0x0ecf('0xc'));logger['debug'](_0x0ecf('0xd'),_0x2f052b,'request\x20sent',JSON['stringify'](_0x47cd8e));if(_0x47cd8e[_0x0ecf('0xe')]){if(_0x47cd8e[_0x0ecf('0xe')][_0x0ecf('0xf')]===0x1f4){logger[_0x0ecf('0xe')](_0x0ecf('0x10'),_0x2f052b,_0x47cd8e[_0x0ecf('0xe')][_0x0ecf('0x11')]);return _0x1841cf(_0x47cd8e['error'][_0x0ecf('0x11')]);}logger[_0x0ecf('0xe')](_0x0ecf('0x10'),_0x2f052b,_0x47cd8e[_0x0ecf('0xe')]['message']);return _0x1b36c3(_0x47cd8e[_0x0ecf('0xe')][_0x0ecf('0x11')]);}else{logger[_0x0ecf('0xb')](_0x0ecf('0x10'),_0x2f052b,'request\x20sent');_0x1b36c3(_0x47cd8e['result'][_0x0ecf('0x11')]);}})[_0x0ecf('0x12')](function(_0x56ff1d){logger[_0x0ecf('0xe')]('CmCompany,\x20%s,\x20%s',_0x2f052b,_0x56ff1d);_0x1841cf(_0x56ff1d);});});}
\ No newline at end of file
+var _0x4292=['http','request','then','info','CmCompany,\x20%s,\x20%s','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','client'];(function(_0x6a0c92,_0x241b17){var _0x546bb3=function(_0x1937d1){while(--_0x1937d1){_0x6a0c92['push'](_0x6a0c92['shift']());}};_0x546bb3(++_0x241b17);}(_0x4292,0x1b0));var _0x2429=function(_0x33e314,_0x43532){_0x33e314=_0x33e314-0x0;var _0x54a323=_0x4292[_0x33e314];return _0x54a323;};'use strict';var _=require(_0x2429('0x0'));var util=require('util');var moment=require(_0x2429('0x1'));var BPromise=require('bluebird');var rs=require(_0x2429('0x2'));var fs=require('fs');var Redis=require(_0x2429('0x3'));var db=require(_0x2429('0x4'))['db'];var utils=require(_0x2429('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x2429('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x2429('0x7')][_0x2429('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1f68e3,_0x299251,_0x466c2f){return new BPromise(function(_0x4ca88d,_0x1c9980){return client[_0x2429('0x9')](_0x1f68e3,_0x466c2f)[_0x2429('0xa')](function(_0x53d1b5){logger[_0x2429('0xb')](_0x2429('0xc'),_0x299251,_0x2429('0xd'));logger[_0x2429('0xe')](_0x2429('0xf'),_0x299251,_0x2429('0xd'),JSON[_0x2429('0x10')](_0x53d1b5));if(_0x53d1b5[_0x2429('0x11')]){if(_0x53d1b5[_0x2429('0x11')][_0x2429('0x12')]===0x1f4){logger['error']('CmCompany,\x20%s,\x20%s',_0x299251,_0x53d1b5[_0x2429('0x11')][_0x2429('0x13')]);return _0x1c9980(_0x53d1b5[_0x2429('0x11')][_0x2429('0x13')]);}logger[_0x2429('0x11')](_0x2429('0xc'),_0x299251,_0x53d1b5[_0x2429('0x11')][_0x2429('0x13')]);return _0x4ca88d(_0x53d1b5[_0x2429('0x11')][_0x2429('0x13')]);}else{logger[_0x2429('0xb')](_0x2429('0xc'),_0x299251,_0x2429('0xd'));_0x4ca88d(_0x53d1b5[_0x2429('0x14')][_0x2429('0x13')]);}})[_0x2429('0x15')](function(_0xc59ae1){logger[_0x2429('0x11')](_0x2429('0xc'),_0x299251,_0xc59ae1);_0x1c9980(_0xc59ae1);});});}
\ No newline at end of file
index 7878be0..7ee7005 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b98=['./cmCompany.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/contacts','post','create','put','update','destroy','exports','multer','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x4ec520,_0x15fee2){var _0xed49d7=function(_0x3031f2){while(--_0x3031f2){_0x4ec520['push'](_0x4ec520['shift']());}};_0xed49d7(++_0x15fee2);}(_0x3b98,0xd5));var _0x83b9=function(_0x3f49b3,_0x1897a7){_0x3f49b3=_0x3f49b3-0x0;var _0x2c14ff=_0x3b98[_0x3f49b3];return _0x2c14ff;};'use strict';var multer=require(_0x83b9('0x0'));var util=require('util');var path=require(_0x83b9('0x1'));var timeout=require('connect-timeout');var express=require(_0x83b9('0x2'));var router=express[_0x83b9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x83b9('0x4'));var interaction=require(_0x83b9('0x5'));var config=require(_0x83b9('0x6'));var controller=require(_0x83b9('0x7'));router[_0x83b9('0x8')]('/',auth[_0x83b9('0x9')](),controller[_0x83b9('0xa')]);router[_0x83b9('0x8')](_0x83b9('0xb'),auth['isAuthenticated'](),controller[_0x83b9('0xc')]);router[_0x83b9('0x8')](_0x83b9('0xd'),auth[_0x83b9('0x9')](),controller[_0x83b9('0xe')]);router[_0x83b9('0x8')](_0x83b9('0xf'),auth[_0x83b9('0x9')](),controller['getContacts']);router[_0x83b9('0x10')]('/',auth['isAuthenticated'](),controller[_0x83b9('0x11')]);router[_0x83b9('0x10')](_0x83b9('0xf'),auth[_0x83b9('0x9')](),controller['addContacts']);router[_0x83b9('0x12')](_0x83b9('0xd'),auth['isAuthenticated'](),controller[_0x83b9('0x13')]);router['delete'](_0x83b9('0xd'),auth[_0x83b9('0x9')](),controller[_0x83b9('0x14')]);module[_0x83b9('0x15')]=router;
\ No newline at end of file
+var _0x24cd=['delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCompany.controller','get','isAuthenticated','index','describe','/:id','show','/:id/contacts','getContacts','post','create','addContacts','update'];(function(_0x12137b,_0x368aa4){var _0x2ec2b3=function(_0x3b0faf){while(--_0x3b0faf){_0x12137b['push'](_0x12137b['shift']());}};_0x2ec2b3(++_0x368aa4);}(_0x24cd,0x17a));var _0xd24c=function(_0x4dc9e6,_0x3ed04a){_0x4dc9e6=_0x4dc9e6-0x0;var _0x4bbdcb=_0x24cd[_0x4dc9e6];return _0x4bbdcb;};'use strict';var multer=require('multer');var util=require(_0xd24c('0x0'));var path=require(_0xd24c('0x1'));var timeout=require(_0xd24c('0x2'));var express=require(_0xd24c('0x3'));var router=express[_0xd24c('0x4')]();var fs_extra=require(_0xd24c('0x5'));var auth=require(_0xd24c('0x6'));var interaction=require(_0xd24c('0x7'));var config=require(_0xd24c('0x8'));var controller=require(_0xd24c('0x9'));router[_0xd24c('0xa')]('/',auth[_0xd24c('0xb')](),controller[_0xd24c('0xc')]);router[_0xd24c('0xa')]('/describe',auth[_0xd24c('0xb')](),controller[_0xd24c('0xd')]);router[_0xd24c('0xa')](_0xd24c('0xe'),auth['isAuthenticated'](),controller[_0xd24c('0xf')]);router[_0xd24c('0xa')](_0xd24c('0x10'),auth[_0xd24c('0xb')](),controller[_0xd24c('0x11')]);router[_0xd24c('0x12')]('/',auth[_0xd24c('0xb')](),controller[_0xd24c('0x13')]);router[_0xd24c('0x12')](_0xd24c('0x10'),auth[_0xd24c('0xb')](),controller[_0xd24c('0x14')]);router['put'](_0xd24c('0xe'),auth[_0xd24c('0xb')](),controller[_0xd24c('0x15')]);router[_0xd24c('0x16')]('/:id',auth[_0xd24c('0xb')](),controller[_0xd24c('0x17')]);module[_0xd24c('0x18')]=router;
\ No newline at end of file
index e5afdaf..dab212c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08f4=['lodash','sequelize','exports','STRING','TEXT','INTEGER','DATE','NOW'];(function(_0x1fd3c9,_0x111a41){var _0xfd8683=function(_0x2b0528){while(--_0x2b0528){_0x1fd3c9['push'](_0x1fd3c9['shift']());}};_0xfd8683(++_0x111a41);}(_0x08f4,0x120));var _0x408f=function(_0x42f208,_0x5d07c9){_0x42f208=_0x42f208-0x0;var _0x3ffa5e=_0x08f4[_0x42f208];return _0x3ffa5e;};'use strict';var _=require(_0x408f('0x0'));var Sequelize=require(_0x408f('0x1'));module[_0x408f('0x2')]={'firstName':{'type':Sequelize['STRING'],'allowNull':![]},'lastName':{'type':Sequelize[_0x408f('0x3')]},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize[_0x408f('0x3')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0x408f('0x3')]},'dateOfBirth':{'type':Sequelize[_0x408f('0x3')]},'description':{'type':Sequelize[_0x408f('0x4')]},'phone':{'type':Sequelize[_0x408f('0x3')]},'mobile':{'type':Sequelize[_0x408f('0x3')]},'fax':{'type':Sequelize[_0x408f('0x3')]},'email':{'type':Sequelize[_0x408f('0x3')]},'url':{'type':Sequelize[_0x408f('0x3')]},'facebook':{'type':Sequelize[_0x408f('0x3')]},'fb_data':{'type':Sequelize[_0x408f('0x3')]},'twitter':{'type':Sequelize['STRING']},'skype':{'type':Sequelize[_0x408f('0x3')]},'teams':{'type':Sequelize[_0x408f('0x3')]},'viber':{'type':Sequelize[_0x408f('0x3')]},'line':{'type':Sequelize['STRING']},'wechat':{'type':Sequelize['STRING']},'telegram':{'type':Sequelize[_0x408f('0x3')]},'UserId':{'type':Sequelize[_0x408f('0x5')]},'priority':{'type':Sequelize[_0x408f('0x5')](0x2)['UNSIGNED'],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0x408f('0x6')],'defaultValue':Sequelize[_0x408f('0x7')]}};
\ No newline at end of file
+var _0x6195=['STRING','TEXT','INTEGER','UNSIGNED','DATE','NOW','lodash','sequelize','exports'];(function(_0x7ce51e,_0x251618){var _0xfd7e9a=function(_0x4a0b27){while(--_0x4a0b27){_0x7ce51e['push'](_0x7ce51e['shift']());}};_0xfd7e9a(++_0x251618);}(_0x6195,0xf9));var _0x5619=function(_0x3a5061,_0x17cb02){_0x3a5061=_0x3a5061-0x0;var _0x310beb=_0x6195[_0x3a5061];return _0x310beb;};'use strict';var _=require(_0x5619('0x0'));var Sequelize=require(_0x5619('0x1'));module[_0x5619('0x2')]={'firstName':{'type':Sequelize[_0x5619('0x3')],'allowNull':![]},'lastName':{'type':Sequelize[_0x5619('0x3')]},'street':{'type':Sequelize[_0x5619('0x3')]},'postalCode':{'type':Sequelize[_0x5619('0x3')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0x5619('0x3')]},'dateOfBirth':{'type':Sequelize[_0x5619('0x3')]},'description':{'type':Sequelize[_0x5619('0x4')]},'phone':{'type':Sequelize[_0x5619('0x3')]},'mobile':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0x5619('0x3')]},'email':{'type':Sequelize[_0x5619('0x3')]},'url':{'type':Sequelize['STRING']},'facebook':{'type':Sequelize['STRING']},'fb_data':{'type':Sequelize['STRING']},'twitter':{'type':Sequelize['STRING']},'skype':{'type':Sequelize['STRING']},'teams':{'type':Sequelize[_0x5619('0x3')]},'viber':{'type':Sequelize['STRING']},'line':{'type':Sequelize[_0x5619('0x3')]},'wechat':{'type':Sequelize[_0x5619('0x3')]},'telegram':{'type':Sequelize[_0x5619('0x3')]},'UserId':{'type':Sequelize[_0x5619('0x5')]},'priority':{'type':Sequelize['INTEGER'](0x2)[_0x5619('0x6')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0x5619('0x7')],'defaultValue':Sequelize[_0x5619('0x8')]}};
\ No newline at end of file
index 837433b..f9eaf34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfefe=['WhatsappQueueReport','create','join','bulkCreate','each','duplicates','$or','findOrCreate','spread','show','$and','cf_%d','omit','pickBy','setFields','id\x20=\x20?','toParam','text','phone','rawAttributes','pick','getTags','setTags','ids','getHoppers','ContactId','options','includeAll','include','getHopperFinals','getJscriptySessions','binding_keys','binding_values','socket_timestamp','zipObject','No\x20phone\x20column\x20specified','No\x20firstName\x20column\x20specified','root','filename','chmodSync','child_process','fork','../../components/import/cm/csv','CompanyId','File\x20uploaded\x20correctly!','pid','upload','createReadStream','parse','file','meta','import','No\x20ListId\x20specified','binding','firstName','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','stringify','exit','getJourney','mail','sms','fax','whatsapp','voice','-createdAt','resolve','channel','toLowerCase','Invalid\x20channel','range','isValid','Invalid\x20date\x20for\x20range\x20from\x20filter','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter','destination','starttime','endtime','createdAt','userDisposition','userSecondDisposition','userThirdDisposition','fullname','findAndCountAll','chat','Website','Account','closed','closedAt','note','disposition','secondDisposition','key','customerPort','deviceModel','osName','ratingMessage','referer','subject','openchannel','externalUrl','Interaction','Owner','all','flatten','sortBy','reverse','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','redis','socket.io-emitter','register','sendStatus','end','status','json','offset','limit','count','set','Content-Range','apply','reject','update','then','destroy','stack','name','send','index','CmContact','describe','keys','length','startsWith','cf_','CmCustomField','findOne','trimStart','fieldType','type','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','select','field','color','from','tools_tags','cm_contacts','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20c.id','cm_contact_has_tags','t.id\x20=\x20ct.TagId','expr','parseSearch','search','conditions','find','Tag','split','map','union','User','and','value','datetime','castTo','DATE','buildExpression','filter','isNil','Contact','push','isEmpty','ListId','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','tag','isArray','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','replace','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','isNumeric','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','group','c.id','QueryTypes','SELECT','DESC','t.id\x20IN\x20?','role','agent','some','user','getLists','c.ListId\x20IS\x20NULL','sequelize','toString','keyBy','merge','c.firstName','c.lastName','c.phone','c.fax','c.createdAt','c.CompanyId','TagIds','Tags','rows','catch','params','tags','columnName','displayName','findAll','alias','custom','values','body','get','mergeWith','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','ChatInteraction','ChatOfflineMessage','MailInteraction','MailMessage','FaxMessage','OpenchannelInteraction','CmHopperFinal','CmHopperHistory','ReportAgentPreview','VoiceCallReport','ChatQueueReport','MailQueueReport','SmsQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappMessage'];(function(_0x5f58a1,_0x234450){var _0x362706=function(_0x2e0af6){while(--_0x2e0af6){_0x5f58a1['push'](_0x5f58a1['shift']());}};_0x362706(++_0x234450);}(_0xfefe,0x185));var _0xefef=function(_0x411f8d,_0x1dd794){_0x411f8d=_0x411f8d-0x0;var _0x46a871=_0xfefe[_0x411f8d];return _0x46a871;};'use strict';var emlformat=require(_0xefef('0x0'));var rimraf=require(_0xefef('0x1'));var zipdir=require(_0xefef('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xefef('0x3'));var moment=require(_0xefef('0x4'));var BPromise=require(_0xefef('0x5'));var Mustache=require(_0xefef('0x6'));var util=require(_0xefef('0x7'));var path=require(_0xefef('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xefef('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xefef('0xa'));var crypto=require(_0xefef('0xb'));var jsforce=require(_0xefef('0xc'));var deskjs=require(_0xefef('0xd'));var toCsv=require('to-csv');var querystring=require(_0xefef('0xe'));var Papa=require(_0xefef('0xf'));var Redis=require(_0xefef('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xefef('0x11'));var hardwareService=require(_0xefef('0x12'));var logger=require(_0xefef('0x13'))(_0xefef('0x14'));var utils=require('../../config/utils');var config=require(_0xefef('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xefef('0x16'))['db'];config[_0xefef('0x17')]=_['defaults'](config[_0xefef('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0xefef('0x18'))(new Redis(config[_0xefef('0x17')]));require('./cmContact.socket')[_0xefef('0x19')](socket);function respondWithStatusCode(_0x4631e0,_0x4494d5){_0x4494d5=_0x4494d5||0xcc;return function(_0x1f1c67){if(_0x1f1c67){return _0x4631e0[_0xefef('0x1a')](_0x4494d5);}return _0x4631e0['status'](_0x4494d5)[_0xefef('0x1b')]();};}function respondWithResult(_0xfcb4d9,_0x41986f){_0x41986f=_0x41986f||0xc8;return function(_0x2be79d){if(_0x2be79d){return _0xfcb4d9[_0xefef('0x1c')](_0x41986f)[_0xefef('0x1d')](_0x2be79d);}};}function respondWithFilteredResult(_0x1f2ec1,_0xb85ee7){return function(_0x2aeff8){if(_0x2aeff8){var _0x1dc324=typeof _0xb85ee7[_0xefef('0x1e')]==='undefined'&&typeof _0xb85ee7[_0xefef('0x1f')]==='undefined';var _0x2bfd3b=_0x2aeff8[_0xefef('0x20')];var _0x199c1a=_0x1dc324?0x0:_0xb85ee7[_0xefef('0x1e')];var _0xad7537=_0x1dc324?_0x2aeff8[_0xefef('0x20')]:_0xb85ee7[_0xefef('0x1e')]+_0xb85ee7['limit'];var _0x490551;if(_0xad7537>=_0x2bfd3b){_0xad7537=_0x2bfd3b;_0x490551=0xc8;}else{_0x490551=0xce;}_0x1f2ec1[_0xefef('0x1c')](_0x490551);return _0x1f2ec1[_0xefef('0x21')](_0xefef('0x22'),_0x199c1a+'-'+_0xad7537+'/'+_0x2bfd3b)['json'](_0x2aeff8);}return null;};}function patchUpdates(_0x4f7269){return function(_0x516314){try{jsonpatch[_0xefef('0x23')](_0x516314,_0x4f7269,!![]);}catch(_0x4bdc30){return BPromise[_0xefef('0x24')](_0x4bdc30);}return _0x516314['save']();};}function saveUpdates(_0x4773b1,_0x59163d){return function(_0x4502a6){if(_0x4502a6){return _0x4502a6[_0xefef('0x25')](_0x4773b1)[_0xefef('0x26')](function(_0x44edda){return _0x44edda;});}return null;};}function removeEntity(_0xf11af,_0x5197e5){return function(_0xe79f1f){if(_0xe79f1f){return _0xe79f1f[_0xefef('0x27')]()[_0xefef('0x26')](function(){_0xf11af[_0xefef('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x455f2c,_0x3fce15){return function(_0x28c572){if(!_0x28c572){_0x455f2c[_0xefef('0x1a')](0x194);}return _0x28c572;};}function handleError(_0x1f5b14,_0x41b97a){_0x41b97a=_0x41b97a||0x1f4;return function(_0x4e1add){logger['error'](_0x4e1add[_0xefef('0x28')]);if(_0x4e1add[_0xefef('0x29')]){delete _0x4e1add[_0xefef('0x29')];}_0x1f5b14[_0xefef('0x1c')](_0x41b97a)[_0xefef('0x2a')](_0x4e1add);};}exports[_0xefef('0x2b')]=function(_0x481086,_0x3f7a8a){var _0x5da108={},_0x3f8082={},_0x531123={'count':0x0,'rows':[]};return db[_0xefef('0x2c')][_0xefef('0x2d')]()['then'](function(_0x47bc2c){var _0x4aca55=[];for(var _0x38fef9=0x0;_0x38fef9<Object[_0xefef('0x2e')](_0x47bc2c)[_0xefef('0x2f')];_0x38fef9++){var _0x284de=Object[_0xefef('0x2e')](_0x47bc2c)[_0x38fef9];if(_[_0xefef('0x30')](_0x284de,_0xefef('0x31'))){_0x4aca55['push'](db[_0xefef('0x32')][_0xefef('0x33')]({'where':{'id':_[_0xefef('0x34')](_0x284de,_0xefef('0x31'))},'raw':!![]}));}}return BPromise['all'](_0x4aca55)[_0xefef('0x26')](function(_0x47805c){for(var _0x4f4532=0x0;_0x4f4532<_0x47805c['length'];_0x4f4532++){if(_0x47805c[_0x4f4532]){var _0x57166d=_0xefef('0x31')+_0x47805c[_0x4f4532]['id'];var _0x5b692f=_0x47bc2c[_0x57166d];_0x5b692f[_0xefef('0x35')]=_0x47805c[_0x4f4532][_0xefef('0x36')];}}return _0x47bc2c;});})['then'](function(_0x22624e){_0x3f8082[_0xefef('0x37')]=_[_0xefef('0x2e')](_0x22624e);_0x3f8082[_0xefef('0x38')]=_[_0xefef('0x2e')](_0x481086['query']);_0x3f8082[_0xefef('0x39')]=_[_0xefef('0x3a')](_0x3f8082[_0xefef('0x37')],_0x3f8082[_0xefef('0x38')]);_0x5da108['attributes']=_[_0xefef('0x3a')](_0x3f8082[_0xefef('0x37')],qs[_0xefef('0x3b')](_0x481086[_0xefef('0x38')][_0xefef('0x3b')]));_0x5da108[_0xefef('0x3c')]=_0x5da108[_0xefef('0x3c')][_0xefef('0x2f')]?_0x5da108[_0xefef('0x3c')]:_0x3f8082[_0xefef('0x37')];if(!_0x481086[_0xefef('0x38')][_0xefef('0x3d')](_0xefef('0x3e'))){_0x5da108[_0xefef('0x1f')]=qs[_0xefef('0x1f')](_0x481086[_0xefef('0x38')][_0xefef('0x1f')]);_0x5da108[_0xefef('0x1e')]=qs[_0xefef('0x1e')](_0x481086[_0xefef('0x38')][_0xefef('0x1e')]);}_0x5da108[_0xefef('0x3f')]=qs['sort'](_0x481086[_0xefef('0x38')][_0xefef('0x40')]);_0x5da108[_0xefef('0x41')]=qs[_0xefef('0x39')](_['pick'](_0x481086[_0xefef('0x38')],_0x3f8082[_0xefef('0x39')]),_0x22624e);var _0x27fb4c=[];var _0xbc2e3e=squel[_0xefef('0x42')]()['field']('id')[_0xefef('0x43')](_0xefef('0x29'))[_0xefef('0x43')](_0xefef('0x44'))[_0xefef('0x45')](_0xefef('0x46'));var _0x32bf92=squel[_0xefef('0x42')]()[_0xefef('0x45')](_0xefef('0x47'),'c')[_0xefef('0x48')](_0xefef('0x49'),'uc',_0xefef('0x4a'))['left_join'](_0xefef('0x4b'),'ct','ct.CmContactId\x20=\x20c.id')['left_join'](_0xefef('0x46'),'t',_0xefef('0x4c'))[_0xefef('0x41')]('c.deletedAt\x20IS\x20NULL');var _0x4f00d0=squel['expr']();var _0x1f32df=[];var _0x13c17a=squel[_0xefef('0x4d')]();var _0x1c0c69;if(_0x481086['query']['search']){_0x1c0c69=as[_0xefef('0x4e')](_0x481086[_0xefef('0x38')][_0xefef('0x4f')]);var _0x4e3fcf=_0x1c0c69['sqlOperator'];for(var _0xbcf202=0x0;_0xbcf202<_0x1c0c69[_0xefef('0x50')]['length'];_0xbcf202++){var _0x262c37=_0x1c0c69[_0xefef('0x50')][_0xbcf202];var _0x5293e0='c';var _0x1d3ec0=_(_0x22624e)['keys']()[_0xefef('0x51')](function(_0x45e6fc){return _0x45e6fc===_0x262c37[_0xefef('0x43')];});if(_0x1d3ec0)_0x1d3ec0=_0x22624e[_0x262c37[_0xefef('0x43')]];if(!_0x1d3ec0){if(_0x262c37[_0xefef('0x43')]===_0xefef('0x52')){var _0x392e65=_0x262c37['value'][_0xefef('0x53')](',')[_0xefef('0x54')](function(_0x1e874d){return Number(_0x1e874d);});_0x392e65['forEach'](function(_0x4230d6){_0x13c17a['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x4230d6+',%');});_0x1f32df=_[_0xefef('0x55')](_0x1f32df,_0x392e65);}else if(_0x262c37['field']===_0xefef('0x56')){_0x4f00d0[_0xefef('0x57')]('uc.UserId\x20=\x20?',_0x262c37[_0xefef('0x58')]);}}else{if(_0x262c37[_0xefef('0x43')]==='dateOfBirth'||_0x1d3ec0['fieldType']===_0xefef('0x59'))_0x262c37[_0xefef('0x5a')]=_0xefef('0x5b');var _0x631eaa=as[_0xefef('0x5c')](_0x5293e0,_0x1d3ec0[_0xefef('0x36')],_0x262c37);_0x4f00d0[_0x4e3fcf](_0x631eaa['text'],_0x631eaa[_0xefef('0x58')]['start'],_0x631eaa[_0xefef('0x58')]['end']);}}}else{var _0x3febe3=_(Object[_0xefef('0x2e')](_0x481086[_0xefef('0x38')]))[_0xefef('0x54')](function(_0x449bb0){return _0x22624e[_0xefef('0x3d')](_0x449bb0)?_0x449bb0:undefined;})[_0xefef('0x5d')](function(_0x537294){return!_[_0xefef('0x5e')](_0x537294);})['value']();if(_0x481086['query'][_0xefef('0x5f')])_0x3febe3[_0xefef('0x60')](_0xefef('0x5f'));if(!_[_0xefef('0x61')](_0x3febe3)){_0x3febe3['forEach'](function(_0x2069c0){if(_0x2069c0===_0xefef('0x62')){_0x32bf92['where'](_0xefef('0x63'),[][_0xefef('0x64')](_0x481086[_0xefef('0x38')][_0x2069c0]));}else if(_0x2069c0==='Contact'){var _0x3cc13d='%'+_0x481086[_0xefef('0x38')][_0x2069c0]+'%';_0x32bf92[_0xefef('0x41')](_0xefef('0x65'),_0x3cc13d);}else{_0x32bf92['where']('c.'+_0x2069c0+_0xefef('0x66'),_0x481086[_0xefef('0x38')][_0x2069c0]);}});}if(_0x481086['query'][_0xefef('0x67')]){_0x1f32df=_[_0xefef('0x68')](_0x481086[_0xefef('0x38')][_0xefef('0x67')])?_0x481086[_0xefef('0x38')][_0xefef('0x67')]:new Array(_0x481086[_0xefef('0x38')][_0xefef('0x67')]);_0x1f32df[_0xefef('0x69')](function(_0x31c5c4){_0x13c17a['or'](_0xefef('0x6a'),'%,'+_0x31c5c4+',%');});}if(_0x481086[_0xefef('0x38')][_0xefef('0x5d')]){var _0x426e13=_0x481086['query']['filter'][_0xefef('0x6b')]('\x5c','\x5c\x5c')[_0xefef('0x6b')](/'/g,'\x27\x27');if(_0x426e13['split']('\x20')['length']>0x1){_0x4f00d0['or'](_0xefef('0x6c'),qs[_0xefef('0x6d')](_0x426e13),null);}else{if(qs[_0xefef('0x6e')](_0x426e13)){_0x4f00d0['or'](_0xefef('0x6f'),_0x426e13+'%');_0x4f00d0['or'](_0xefef('0x70'),_0x426e13+'%');_0x4f00d0['or'](_0xefef('0x71'),_0x426e13+'%');_0x4f00d0['or'](_0xefef('0x72'),_0x426e13+'%');}else if(qs['isEmail'](_0x426e13)){_0x4f00d0['or'](_0xefef('0x73'),_0x426e13+'%');}else{_0x4f00d0['or'](_0xefef('0x74'),'%'+_0x426e13+'%');_0x4f00d0['or'](_0xefef('0x75'),'%'+_0x426e13+'%');_0x4f00d0['or']('c.email\x20LIKE\x20?','%'+_0x426e13+'%');}}}}_0x32bf92['where'](_0x4f00d0);_0x32bf92[_0xefef('0x76')](_0xefef('0x77'));var _0x2a518e={'type':db['Sequelize'][_0xefef('0x78')][_0xefef('0x79')],'raw':!![]};var _0x51c2fc=_0x32bf92['clone']()[_0xefef('0x43')](_0xefef('0x77'));if(_0x5da108[_0xefef('0x3f')]){_0x5da108['order'][_0xefef('0x69')](function(_0x5ce8d5){_0x32bf92[_0xefef('0x3f')]('c.'+_0x5ce8d5[0x0],_0x5ce8d5[0x1]===_0xefef('0x7a')?![]:!![]);});}if(!_[_0xefef('0x61')](_0x1f32df)){_0x32bf92['having'](_0x13c17a);_0x51c2fc[_0xefef('0x41')](_0xefef('0x7b'),_0x1f32df);}BPromise['resolve']()[_0xefef('0x26')](function(){if(!_0x1c0c69)return;if(_0x481086['user'][_0xefef('0x7c')]!==_0xefef('0x7d'))return;if(!_[_0xefef('0x7e')](_0x1c0c69['conditions'],['field',_0xefef('0x56')])){return _0x481086[_0xefef('0x7f')][_0xefef('0x80')]({'attributes':['id'],'raw':!![]})['then'](function(_0x5bc647){if(_[_0xefef('0x61')](_0x5bc647)){_0x51c2fc[_0xefef('0x41')](_0xefef('0x81'));_0x32bf92[_0xefef('0x41')](_0xefef('0x81'));}else{_0x51c2fc[_0xefef('0x41')]('c.ListId\x20IN\x20?',_['map'](_0x5bc647,'id'));_0x32bf92[_0xefef('0x41')](_0xefef('0x63'),_[_0xefef('0x54')](_0x5bc647,'id'));}});}})['then'](function(){if(_0x481086['user'][_0xefef('0x7c')]==='agent'&&!_0x1c0c69&&!_0x481086[_0xefef('0x38')][_0xefef('0x62')])return[];return db[_0xefef('0x82')]['query'](_0x51c2fc[_0xefef('0x83')](),_0x2a518e);})[_0xefef('0x26')](function(_0x472a1b){_0x531123[_0xefef('0x20')]=_0x472a1b[_0xefef('0x2f')];if(_0x531123[_0xefef('0x20')]===0x0)return[];return db[_0xefef('0x82')][_0xefef('0x38')](_0xbc2e3e[_0xefef('0x83')](),_0x2a518e)[_0xefef('0x26')](function(_0x5d5acb){_0x27fb4c=_[_0xefef('0x84')](_0x5d5acb,'id');_0x2a518e=_[_0xefef('0x85')](_0x2a518e,{'model':db[_0xefef('0x2c')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x481086['query']['fields']){_0x5da108[_0xefef('0x3c')][_0xefef('0x69')](function(_0x1cefb6){_0x32bf92['field']('c.'+_0x1cefb6);});}else{_0x32bf92['field'](_0xefef('0x77'));_0x32bf92[_0xefef('0x43')](_0xefef('0x86'));_0x32bf92[_0xefef('0x43')](_0xefef('0x87'));_0x32bf92['field'](_0xefef('0x88'));_0x32bf92[_0xefef('0x43')]('c.mobile');_0x32bf92[_0xefef('0x43')](_0xefef('0x89'));_0x32bf92[_0xefef('0x43')]('c.email');_0x32bf92[_0xefef('0x43')]('c.ListId');_0x32bf92[_0xefef('0x43')](_0xefef('0x8a'));_0x32bf92[_0xefef('0x43')]('c.deletedAt');_0x32bf92[_0xefef('0x43')](_0xefef('0x8b'));_0x32bf92[_0xefef('0x43')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0xefef('0x8c'));}if(_0x5da108['limit'])_0x32bf92[_0xefef('0x1f')](_0x5da108['limit']);if(_0x5da108[_0xefef('0x1e')])_0x32bf92[_0xefef('0x1e')](_0x5da108[_0xefef('0x1e')]);return db[_0xefef('0x82')][_0xefef('0x38')](_0x32bf92[_0xefef('0x83')](),_0x2a518e);});})[_0xefef('0x26')](function(_0x53ad1c){_0x53ad1c['forEach'](function(_0x5066f7){if(_0x5066f7[_0xefef('0x8c')]){_0x5066f7[_0xefef('0x8d')]=[];_0x5066f7['TagIds'][_0xefef('0x53')](',')[_0xefef('0x69')](function(_0x42a1ce){_0x5066f7[_0xefef('0x8d')]['push'](_0x27fb4c[_0x42a1ce]);});}delete _0x5066f7[_0xefef('0x8c')];});_0x531123[_0xefef('0x8e')]=_0x53ad1c;return _0x531123;})[_0xefef('0x26')](respondWithFilteredResult(_0x3f7a8a,_0x5da108));})[_0xefef('0x8f')](handleError(_0x3f7a8a,null));};exports[_0xefef('0x27')]=function(_0x458930,_0xadc87c){return db['CmContact']['find']({'where':{'id':_0x458930[_0xefef('0x90')]['id']}})['then'](handleEntityNotFound(_0xadc87c,null))[_0xefef('0x26')](removeEntity(_0xadc87c,null))['catch'](handleError(_0xadc87c,null));};exports[_0xefef('0x2d')]=function(_0x3958cb,_0x3f7cea){return db[_0xefef('0x2c')][_0xefef('0x2d')]()[_0xefef('0x26')](function(_0x1a75af){delete _0x1a75af[_0xefef('0x91')];for(var _0x3883b6=0x0;_0x3883b6<Object['keys'](_0x1a75af)[_0xefef('0x2f')];_0x3883b6++){var _0x51f6d3=Object[_0xefef('0x2e')](_0x1a75af)[_0x3883b6];if(!_['startsWith'](_0x51f6d3,_0xefef('0x31'))){_0x1a75af[_0x51f6d3][_0xefef('0x92')]=_0x51f6d3;_0x1a75af[_0x51f6d3][_0xefef('0x93')]=_0x51f6d3;}}return _0x1a75af;})[_0xefef('0x26')](function(_0x185cdd){var _0x26e74a={'where':{'$or':[{'ListId':_0x3958cb['query']['id']},{'ListId':null}]},'raw':!![]};return db[_0xefef('0x32')][_0xefef('0x94')](_0x26e74a)[_0xefef('0x26')](function(_0x1b52d7){for(var _0x4961a9=0x0;_0x4961a9<_0x1b52d7['length'];_0x4961a9++){var _0x4757a5=_0xefef('0x31')+_0x1b52d7[_0x4961a9]['id'];_0x185cdd[_0x4757a5]['columnName']=_0x4757a5;_0x185cdd[_0x4757a5][_0xefef('0x93')]=_0x1b52d7[_0x4961a9][_0xefef('0x95')];_0x185cdd[_0x4757a5][_0xefef('0x96')]={'type':_0x1b52d7[_0x4961a9]['type'],'values':_0x1b52d7[_0x4961a9][_0xefef('0x97')]};}Object[_0xefef('0x2e')](_0x185cdd)['forEach'](function(_0x489e00){if(!_0x185cdd[_0x489e00]['hasOwnProperty'](_0xefef('0x92'))){delete _0x185cdd[_0x489e00];}});return _0x185cdd;});})[_0xefef('0x26')](respondWithResult(_0x3f7cea,null))[_0xefef('0x8f')](handleError(_0x3f7cea,null));};exports[_0xefef('0x85')]=function(_0xef3866,_0x3c9470){var _0x4f2200;var _0x76ac7a;var _0x92f752;if(_0xef3866[_0xefef('0x98')]['id']){delete _0xef3866[_0xefef('0x98')]['id'];}return db[_0xefef('0x2c')][_0xefef('0x94')]({'where':{'id':[_0xef3866['body']['to'],_0xef3866[_0xefef('0x98')]['from']]}})['then'](function(_0x2ec637){if(_0x2ec637){if(_0x2ec637[_0xefef('0x2f')]!==0x2){return null;}_0x2ec637[0x0]=_0x2ec637[0x0][_0xefef('0x99')]({'plain':!![]});_0x2ec637[0x1]=_0x2ec637[0x1]['get']({'plain':!![]});delete _0x2ec637[0x0]['id'];delete _0x2ec637[0x1]['id'];return _[_0xefef('0x9a')](_0x2ec637[0x0],_0x2ec637[0x1],function(_0x24ac2e,_0x5997e5){if(Array[_0xefef('0x68')](_0x5997e5)&&!_0x5997e5['length']){return _0x24ac2e;}else if(!_0x5997e5){return _0x24ac2e;}});}})[_0xefef('0x26')](handleEntityNotFound(_0x3c9470,null))[_0xefef('0x26')](function(_0x2d7fe6){if(_0x2d7fe6){if(_0x2d7fe6[_0xefef('0x91')]&&_[_0xefef('0x68')](_0x2d7fe6[_0xefef('0x91')])){_0x2d7fe6[_0xefef('0x91')]=_0x2d7fe6[_0xefef('0x91')]['join']();}logger[_0xefef('0x9b')](_0xefef('0x9c'),_0xef3866[_0xefef('0x98')]['to'],_0xef3866[_0xefef('0x98')][_0xefef('0x45')]);return db[_0xefef('0x9d')][_0xefef('0x27')]({'where':{'ContactId':[_0xef3866[_0xefef('0x98')]['to'],_0xef3866[_0xefef('0x98')]['from']]}})['then'](function(_0xcc8ed2){logger[_0xefef('0x9b')](_0xefef('0x9e'),_0xcc8ed2);return db[_0xefef('0x9f')][_0xefef('0x27')]({'where':{'ContactId':[_0xef3866[_0xefef('0x98')]['to'],_0xef3866[_0xefef('0x98')]['from']]}})[_0xefef('0x26')](function(_0x265678){logger[_0xefef('0x9b')](_0xefef('0xa0'),_0x265678);return db[_0xefef('0x2c')]['create'](_0x2d7fe6);});});}})[_0xefef('0x26')](function(_0x52bf67){if(_0x52bf67){_0x4f2200=_0x52bf67;_0x76ac7a={'ContactId':_0x4f2200['id']};_0x92f752={'where':{'ContactId':[_0xef3866[_0xefef('0x98')]['to'],_0xef3866[_0xefef('0x98')][_0xefef('0x45')]]}};return db[_0xefef('0xa1')]['update'](_0x76ac7a,_0x92f752);}})[_0xefef('0x26')](function(){if(_0x4f2200){return db['ChatMessage']['update'](_0x76ac7a,_0x92f752);}})[_0xefef('0x26')](function(){if(_0x4f2200){return db[_0xefef('0xa2')]['update'](_0x76ac7a,_0x92f752);}})[_0xefef('0x26')](function(){if(_0x4f2200){return db[_0xefef('0xa3')][_0xefef('0x25')](_0x76ac7a,_0x92f752);}})[_0xefef('0x26')](function(){if(_0x4f2200){return db['MailMessage']['update'](_0x76ac7a,_0x92f752);}})[_0xefef('0x26')](function(){if(_0x4f2200){return db[_0xefef('0xa3')][_0xefef('0x25')](_0x76ac7a,_0x92f752);}})[_0xefef('0x26')](function(){if(_0x4f2200){return db[_0xefef('0xa4')][_0xefef('0x25')](_0x76ac7a,_0x92f752);}})[_0xefef('0x26')](function(){if(_0x4f2200){return db['SmsInteraction'][_0xefef('0x25')](_0x76ac7a,_0x92f752);}})['then'](function(){if(_0x4f2200){return db['SmsMessage'][_0xefef('0x25')](_0x76ac7a,_0x92f752);}})['then'](function(){if(_0x4f2200){return db['FaxInteraction'][_0xefef('0x25')](_0x76ac7a,_0x92f752);}})[_0xefef('0x26')](function(){if(_0x4f2200){return db[_0xefef('0xa5')][_0xefef('0x25')](_0x76ac7a,_0x92f752);}})[_0xefef('0x26')](function(){if(_0x4f2200){return db[_0xefef('0xa6')]['update'](_0x76ac7a,_0x92f752);}})[_0xefef('0x26')](function(){if(_0x4f2200){return db['OpenchannelMessage'][_0xefef('0x25')](_0x76ac7a,_0x92f752);}})['then'](function(){if(_0x4f2200){return db[_0xefef('0xa7')][_0xefef('0x25')](_0x76ac7a,_0x92f752);}})[_0xefef('0x26')](function(){if(_0x4f2200){return db[_0xefef('0xa8')]['update'](_0x76ac7a,_0x92f752);}})[_0xefef('0x26')](function(){if(_0x4f2200){return db[_0xefef('0xa9')]['update'](_0x76ac7a,_0x92f752);}})['then'](function(){if(_0x4f2200){return db[_0xefef('0xaa')][_0xefef('0x25')](_0x76ac7a,_0x92f752);}})['then'](function(){if(_0x4f2200){return db[_0xefef('0xab')][_0xefef('0x25')](_0x76ac7a,_0x92f752);}})[_0xefef('0x26')](function(){if(_0x4f2200){return db['FaxQueueReport'][_0xefef('0x25')](_0x76ac7a,_0x92f752);}})['then'](function(){if(_0x4f2200){return db[_0xefef('0xac')][_0xefef('0x25')](_0x76ac7a,_0x92f752);}})[_0xefef('0x26')](function(){if(_0x4f2200){return db['OpenchannelQueueReport'][_0xefef('0x25')](_0x76ac7a,_0x92f752);}})[_0xefef('0x26')](function(){if(_0x4f2200){return db[_0xefef('0xad')][_0xefef('0x25')](_0x76ac7a,_0x92f752);}})[_0xefef('0x26')](function(){if(_0x4f2200){return db[_0xefef('0xae')]['update'](_0x76ac7a,_0x92f752);}})['then'](function(){if(_0x4f2200){return db[_0xefef('0xaf')][_0xefef('0x25')](_0x76ac7a,_0x92f752);}})[_0xefef('0x26')](function(){if(_0x4f2200){return db[_0xefef('0xb0')]['update'](_0x76ac7a,_0x92f752);}})['then'](function(){if(_0x4f2200){return db[_0xefef('0xb1')][_0xefef('0x25')](_0x76ac7a,_0x92f752);}})[_0xefef('0x26')](function(){if(_0x4f2200){return db[_0xefef('0x2c')]['destroy']({'where':{'id':[_0xef3866[_0xefef('0x98')]['to'],_0xef3866[_0xefef('0x98')]['from']]}});}})[_0xefef('0x26')](function(){if(_0x4f2200){return _0x4f2200;}})[_0xefef('0x26')](respondWithResult(_0x3c9470,null))[_0xefef('0x8f')](handleError(_0x3c9470,null));};exports[_0xefef('0xb2')]=function(_0x1e5e94,_0x41b17b){return db['CmContact'][_0xefef('0x2d')]()[_0xefef('0x26')](function(_0x3d4ebc){if(_0x1e5e94[_0xefef('0x98')][_0xefef('0x91')]&&_[_0xefef('0x68')](_0x1e5e94[_0xefef('0x98')][_0xefef('0x91')])){if(_0x1e5e94[_0xefef('0x98')][_0xefef('0x91')][_0xefef('0x2f')]){_0x1e5e94[_0xefef('0x98')][_0xefef('0x91')]=_0x1e5e94[_0xefef('0x98')][_0xefef('0x91')][_0xefef('0xb3')](';')+';';}else{_0x1e5e94[_0xefef('0x98')]['tags']=null;}}else{_0x1e5e94[_0xefef('0x98')]['tags']=null;}return db[_0xefef('0x2c')][_0xefef('0xb2')](_0x1e5e94['body'],{'fields':_[_0xefef('0x2e')](_0x3d4ebc),'raw':!![]});})['then'](respondWithResult(_0x41b17b,0xc9))[_0xefef('0x8f')](handleError(_0x41b17b,null));};exports[_0xefef('0xb4')]=function(_0x4e3811,_0x207613){var _0xbc56b1=[];var _0x515c2e=0x0;var _0x25e3f6=0x0;var _0x266fe1=0x0;return db['CmContact']['describe']()['then'](function(_0x386805){return BPromise[_0xefef('0xb5')](_0x4e3811[_0xefef('0x98')],function(_0x366cfc){var _0x16f1f5={'where':{'$or':[]},'defaults':_0x366cfc,'fields':_[_0xefef('0x2e')](_0x386805),'raw':!![]};if(_0x366cfc[_0xefef('0xb6')]){for(var _0x8c5557=0x0;_0x8c5557<_0x366cfc[_0xefef('0xb6')][_0xefef('0x2f')];_0x8c5557++){var _0x50abf3={};_0x50abf3[_0x366cfc[_0xefef('0xb6')][_0x8c5557]]=_0x366cfc[_0x366cfc[_0xefef('0xb6')][_0x8c5557]];_0x16f1f5[_0xefef('0x41')][_0xefef('0xb7')]['push'](_0x50abf3);}_0x16f1f5[_0xefef('0x41')][_0xefef('0x62')]=_0x366cfc[_0xefef('0x62')];}return db[_0xefef('0x2c')][_0xefef('0xb8')](_0x16f1f5)[_0xefef('0xb9')](function(_0x5daa6b,_0x492401){if(_0x492401){_0x515c2e++;}else{_0x266fe1++;}})['catch'](function(_0x10c472){console['error'](_0x10c472);_0x25e3f6++;});});})[_0xefef('0x26')](function(_0x2e12f6){if(_0x2e12f6){return{'success':_0x515c2e,'failure':_0x25e3f6,'duplicates':_0x266fe1};}})[_0xefef('0x26')](respondWithResult(_0x207613,0xc9))['catch'](handleError(_0x207613,null));};exports[_0xefef('0xba')]=function(_0x130f05,_0x4b8449,_0x1ecfa1){var _0x33d662;return db[_0xefef('0x2c')][_0xefef('0x2d')]()['then'](function(_0x247669){return db['CmContact']['find']({'where':{'id':_0x130f05['params']['id']},'include':[{'model':db['Tag'],'as':_0xefef('0x8d'),'attributes':['id',_0xefef('0x29'),_0xefef('0x44')],'required':_0x130f05[_0xefef('0x38')][_0xefef('0x67')]?!![]:![]}],'attributes':_[_0xefef('0x2e')](_0x247669)});})[_0xefef('0x26')](function(_0x2400c3){_0x33d662=_0x2400c3['get']({'plain':!![]});var _0x5d6811={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x2400c3&&_0x2400c3[_0xefef('0x62')]){if(_0x2400c3[_0xefef('0x62')]){_0x5d6811['where'][_0xefef('0xbb')][_0xefef('0x60')]({'ListId':{'$ne':_0x2400c3[_0xefef('0x62')]}});}}return db[_0xefef('0x32')][_0xefef('0x94')](_0x5d6811);})[_0xefef('0x26')](function(_0x431983){return _['omit'](_0x33d662,_[_0xefef('0x54')](_0x431983,function(_0x1fb263){return util['format'](_0xefef('0xbc'),_0x1fb263['id']);}));})['then'](handleEntityNotFound(_0x4b8449,null))[_0xefef('0x26')](respondWithResult(_0x4b8449,null))[_0xefef('0x8f')](handleError(_0x4b8449,null));};exports['update']=function(_0x3acfd8,_0x45c0a7){var _0x286600;if(_0x3acfd8[_0xefef('0x98')]['id']){delete _0x3acfd8[_0xefef('0x98')]['id'];}return db[_0xefef('0x2c')][_0xefef('0x51')]({'where':{'id':_0x3acfd8[_0xefef('0x90')]['id']}})['then'](handleEntityNotFound(_0x45c0a7,null))[_0xefef('0x26')](saveUpdates(_0x3acfd8[_0xefef('0x98')],null))['then'](function(_0x4a4410){_0x286600=_0x4a4410;var _0x503114={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x4a4410&&_0x4a4410[_0xefef('0x62')]){if(_0x4a4410[_0xefef('0x62')]){_0x503114[_0xefef('0x41')]['$and'][_0xefef('0x60')]({'ListId':{'$ne':_0x4a4410[_0xefef('0x62')]}});}}return db['CmCustomField'][_0xefef('0x94')](_0x503114);})[_0xefef('0x26')](function(_0x5b7d12){if(_0x5b7d12){return _[_0xefef('0xbd')](_[_0xefef('0xbe')](_0x3acfd8[_0xefef('0x98')],function(_0x3a6eef,_0x531431){return _[_0xefef('0x30')](_0x531431,_0xefef('0x31'));}),_[_0xefef('0x54')](_0x5b7d12,function(_0xa1137a){return util['format']('cf_%d',_0xa1137a['id']);}));}})[_0xefef('0x26')](function(_0x407fe8){if(_0x407fe8&&!_[_0xefef('0x61')](_0x407fe8)){var _0x304d5e=squel['update']()['table'](_0xefef('0x47'))[_0xefef('0xbf')](_0x407fe8)[_0xefef('0x41')](_0xefef('0xc0'),_0x3acfd8[_0xefef('0x90')]['id'])[_0xefef('0xc1')]();return db['sequelize'][_0xefef('0x38')](_0x304d5e[_0xefef('0xc2')],{'replacements':_0x304d5e[_0xefef('0x97')]});}})[_0xefef('0x26')](function(){if(_0x3acfd8[_0xefef('0x98')]['phone']&&_0x286600){return db[_0xefef('0x9d')]['update']({'phone':_0x3acfd8[_0xefef('0x98')][_0xefef('0xc3')]},{'where':{'ContactId':_0x286600['id']}});}})[_0xefef('0x26')](function(){return _0x286600;})['then'](respondWithResult(_0x45c0a7,null))[_0xefef('0x8f')](handleError(_0x45c0a7,null));};exports['getTags']=function(_0x31ea76,_0x356047,_0x41e23f){var _0xd2e4e0={};var _0x4b5fbe={};var _0x123838;var _0x5cd44e;return db['CmContact']['findOne']({'where':{'id':_0x31ea76[_0xefef('0x90')]['id']}})[_0xefef('0x26')](handleEntityNotFound(_0x356047,null))['then'](function(_0x5cc481){if(_0x5cc481){_0x123838=_0x5cc481;_0x4b5fbe[_0xefef('0x37')]=_[_0xefef('0x2e')](db[_0xefef('0x52')][_0xefef('0xc4')]);_0x4b5fbe[_0xefef('0x38')]=_[_0xefef('0x2e')](_0x31ea76[_0xefef('0x38')]);_0x4b5fbe[_0xefef('0x39')]=_[_0xefef('0x3a')](_0x4b5fbe[_0xefef('0x37')],_0x4b5fbe[_0xefef('0x38')]);_0xd2e4e0['attributes']=_['intersection'](_0x4b5fbe[_0xefef('0x37')],qs[_0xefef('0x3b')](_0x31ea76['query'][_0xefef('0x3b')]));_0xd2e4e0[_0xefef('0x3c')]=_0xd2e4e0[_0xefef('0x3c')][_0xefef('0x2f')]?_0xd2e4e0[_0xefef('0x3c')]:_0x4b5fbe[_0xefef('0x37')];_0xd2e4e0[_0xefef('0x3f')]=qs['sort'](_0x31ea76[_0xefef('0x38')]['sort']);_0xd2e4e0[_0xefef('0x41')]=qs['filters'](_[_0xefef('0xc5')](_0x31ea76[_0xefef('0x38')],_0x4b5fbe[_0xefef('0x39')]));if(_0x31ea76[_0xefef('0x38')][_0xefef('0x5d')]){_0xd2e4e0[_0xefef('0x41')]=_[_0xefef('0x85')](_0xd2e4e0['where'],{'$or':_['map'](_0xd2e4e0[_0xefef('0x3c')],function(_0x48dca7){var _0x5b72b8={};_0x5b72b8[_0x48dca7]={'$like':'%'+_0x31ea76[_0xefef('0x38')]['filter']+'%'};return _0x5b72b8;})});}_0xd2e4e0=_[_0xefef('0x85')]({},_0xd2e4e0,_0x31ea76['options']);return _0x123838[_0xefef('0xc6')](_0xd2e4e0);}})[_0xefef('0x26')](function(_0x51e448){if(_0x51e448){_0x5cd44e=_0x51e448[_0xefef('0x2f')];if(!_0x31ea76['query']['hasOwnProperty']('nolimit')){_0xd2e4e0[_0xefef('0x1f')]=qs['limit'](_0x31ea76[_0xefef('0x38')][_0xefef('0x1f')]);_0xd2e4e0[_0xefef('0x1e')]=qs[_0xefef('0x1e')](_0x31ea76['query']['offset']);}return _0x123838['getTags'](_0xd2e4e0);}})[_0xefef('0x26')](function(_0x2ca302){if(_0x2ca302){return _0x2ca302?{'count':_0x5cd44e,'rows':_0x2ca302}:null;}})[_0xefef('0x26')](respondWithResult(_0x356047,null))[_0xefef('0x8f')](handleError(_0x356047,null));};exports[_0xefef('0xc7')]=function(_0x15de8b,_0x5c971b,_0x161d6d){if(_0x15de8b['body']['id']){delete _0x15de8b[_0xefef('0x98')]['id'];}return db['CmContact']['findOne']({'where':{'id':_0x15de8b[_0xefef('0x90')]['id']}})['then'](handleEntityNotFound(_0x5c971b,null))[_0xefef('0x26')](function(_0x21dd45){if(_0x21dd45){return _0x21dd45['setTags'](_0x15de8b['body'][_0xefef('0xc8')]||[]);}return null;})[_0xefef('0x26')](respondWithResult(_0x5c971b,null))[_0xefef('0x8f')](handleError(_0x5c971b,null));};exports[_0xefef('0xc9')]=function(_0x48e41a,_0x32b8f9,_0x4c3a6d){var _0x51a651={'raw':![],'where':{}};var _0x1495ff={};var _0xce15ab={'count':0x0,'rows':[]};return db[_0xefef('0x2c')][_0xefef('0x33')]({'where':{'id':_0x48e41a['params']['id']}})[_0xefef('0x26')](handleEntityNotFound(_0x32b8f9,null))[_0xefef('0x26')](function(_0x167b6b){if(_0x167b6b){_0x1495ff[_0xefef('0x37')]=_['keys'](db['CmHopper']['rawAttributes']);_0x1495ff['query']=_[_0xefef('0x2e')](_0x48e41a[_0xefef('0x38')]);_0x1495ff[_0xefef('0x39')]=_['intersection'](_0x1495ff[_0xefef('0x37')],_0x1495ff[_0xefef('0x38')]);_0x51a651['attributes']=_['intersection'](_0x1495ff[_0xefef('0x37')],qs[_0xefef('0x3b')](_0x48e41a['query'][_0xefef('0x3b')]));_0x51a651[_0xefef('0x3c')]=_0x51a651[_0xefef('0x3c')][_0xefef('0x2f')]?_0x51a651[_0xefef('0x3c')]:_0x1495ff['model'];if(!_0x48e41a['query'][_0xefef('0x3d')](_0xefef('0x3e'))){_0x51a651[_0xefef('0x1f')]=qs[_0xefef('0x1f')](_0x48e41a[_0xefef('0x38')][_0xefef('0x1f')]);_0x51a651[_0xefef('0x1e')]=qs[_0xefef('0x1e')](_0x48e41a['query'][_0xefef('0x1e')]);}_0x51a651[_0xefef('0x3f')]=qs['sort'](_0x48e41a['query'][_0xefef('0x40')]);_0x51a651['where']=qs['filters'](_[_0xefef('0xc5')](_0x48e41a[_0xefef('0x38')],_0x1495ff['filters']));_0x51a651['where'][_0xefef('0xca')]=_0x167b6b['id'];if(_0x48e41a['query'][_0xefef('0x5d')]){_0x51a651[_0xefef('0x41')]=_[_0xefef('0x85')](_0x51a651[_0xefef('0x41')],{'$or':_[_0xefef('0x54')](_0x51a651['attributes'],function(_0x544f60){var _0x2fcff2={};_0x2fcff2[_0x544f60]={'$like':'%'+_0x48e41a[_0xefef('0x38')][_0xefef('0x5d')]+'%'};return _0x2fcff2;})});}_0x51a651=_[_0xefef('0x85')]({},_0x51a651,_0x48e41a[_0xefef('0xcb')]);return db[_0xefef('0x9d')][_0xefef('0x20')]({'where':_0x51a651[_0xefef('0x41')]})[_0xefef('0x26')](function(_0x5197cd){_0xce15ab[_0xefef('0x20')]=_0x5197cd;if(_0x48e41a[_0xefef('0x38')][_0xefef('0xcc')]){_0x51a651['include']=[{'all':!![]}];}return db[_0xefef('0x9d')][_0xefef('0x94')](_0x51a651);})['then'](function(_0x30cc60){_0xce15ab[_0xefef('0x8e')]=_0x30cc60;return _0xce15ab;});}})[_0xefef('0x26')](respondWithFilteredResult(_0x32b8f9,_0x51a651))[_0xefef('0x8f')](handleError(_0x32b8f9,null));};exports['getHopperHistories']=function(_0x5b3129,_0x5a298a,_0x29f8cc){var _0x227817={'raw':!![],'where':{}};var _0x335d19={};var _0x1eddd4={'count':0x0,'rows':[]};return db['CmContact'][_0xefef('0x33')]({'where':{'id':_0x5b3129[_0xefef('0x90')]['id']}})[_0xefef('0x26')](handleEntityNotFound(_0x5a298a,null))[_0xefef('0x26')](function(_0x411528){if(_0x411528){_0x335d19[_0xefef('0x37')]=_[_0xefef('0x2e')](db[_0xefef('0xa8')][_0xefef('0xc4')]);_0x335d19[_0xefef('0x38')]=_['keys'](_0x5b3129[_0xefef('0x38')]);_0x335d19['filters']=_[_0xefef('0x3a')](_0x335d19[_0xefef('0x37')],_0x335d19[_0xefef('0x38')]);_0x227817['attributes']=_[_0xefef('0x3a')](_0x335d19[_0xefef('0x37')],qs['fields'](_0x5b3129[_0xefef('0x38')][_0xefef('0x3b')]));_0x227817[_0xefef('0x3c')]=_0x227817[_0xefef('0x3c')]['length']?_0x227817[_0xefef('0x3c')]:_0x335d19[_0xefef('0x37')];if(!_0x5b3129['query']['hasOwnProperty']('nolimit')){_0x227817[_0xefef('0x1f')]=qs[_0xefef('0x1f')](_0x5b3129[_0xefef('0x38')]['limit']);_0x227817['offset']=qs[_0xefef('0x1e')](_0x5b3129[_0xefef('0x38')][_0xefef('0x1e')]);}_0x227817[_0xefef('0x3f')]=qs[_0xefef('0x40')](_0x5b3129[_0xefef('0x38')][_0xefef('0x40')]);_0x227817[_0xefef('0x41')]=qs[_0xefef('0x39')](_['pick'](_0x5b3129[_0xefef('0x38')],_0x335d19[_0xefef('0x39')]));_0x227817['where'][_0xefef('0xca')]=_0x411528['id'];if(_0x5b3129[_0xefef('0x38')][_0xefef('0x5d')]){_0x227817['where']=_[_0xefef('0x85')](_0x227817[_0xefef('0x41')],{'$or':_['map'](_0x227817[_0xefef('0x3c')],function(_0x2a8e60){var _0x3d6189={};_0x3d6189[_0x2a8e60]={'$like':'%'+_0x5b3129['query']['filter']+'%'};return _0x3d6189;})});}_0x227817=_[_0xefef('0x85')]({},_0x227817,_0x5b3129[_0xefef('0xcb')]);return db[_0xefef('0xa8')][_0xefef('0x20')]({'where':_0x227817['where']})[_0xefef('0x26')](function(_0x2573ea){_0x1eddd4[_0xefef('0x20')]=_0x2573ea;if(_0x5b3129[_0xefef('0x38')][_0xefef('0xcc')]){_0x227817[_0xefef('0xcd')]=[{'all':!![]}];}return db[_0xefef('0xa8')][_0xefef('0x94')](_0x227817);})[_0xefef('0x26')](function(_0x112552){_0x1eddd4[_0xefef('0x8e')]=_0x112552;return _0x1eddd4;});}})[_0xefef('0x26')](respondWithFilteredResult(_0x5a298a,_0x227817))[_0xefef('0x8f')](handleError(_0x5a298a,null));};exports[_0xefef('0xce')]=function(_0x3d3d6c,_0x3b41c1,_0x44fdbc){var _0x5421ab={'raw':!![],'where':{}};var _0x351598={};var _0x3c7490={'count':0x0,'rows':[]};return db[_0xefef('0x2c')][_0xefef('0x33')]({'where':{'id':_0x3d3d6c[_0xefef('0x90')]['id']}})[_0xefef('0x26')](handleEntityNotFound(_0x3b41c1,null))[_0xefef('0x26')](function(_0x565b30){if(_0x565b30){_0x351598[_0xefef('0x37')]=_[_0xefef('0x2e')](db['CmHopperFinal'][_0xefef('0xc4')]);_0x351598[_0xefef('0x38')]=_[_0xefef('0x2e')](_0x3d3d6c['query']);_0x351598['filters']=_['intersection'](_0x351598[_0xefef('0x37')],_0x351598[_0xefef('0x38')]);_0x5421ab[_0xefef('0x3c')]=_['intersection'](_0x351598['model'],qs[_0xefef('0x3b')](_0x3d3d6c['query'][_0xefef('0x3b')]));_0x5421ab[_0xefef('0x3c')]=_0x5421ab['attributes'][_0xefef('0x2f')]?_0x5421ab[_0xefef('0x3c')]:_0x351598[_0xefef('0x37')];if(!_0x3d3d6c['query'][_0xefef('0x3d')]('nolimit')){_0x5421ab[_0xefef('0x1f')]=qs['limit'](_0x3d3d6c[_0xefef('0x38')][_0xefef('0x1f')]);_0x5421ab[_0xefef('0x1e')]=qs[_0xefef('0x1e')](_0x3d3d6c[_0xefef('0x38')][_0xefef('0x1e')]);}_0x5421ab[_0xefef('0x3f')]=qs[_0xefef('0x40')](_0x3d3d6c[_0xefef('0x38')][_0xefef('0x40')]);_0x5421ab[_0xefef('0x41')]=qs[_0xefef('0x39')](_[_0xefef('0xc5')](_0x3d3d6c[_0xefef('0x38')],_0x351598['filters']));_0x5421ab[_0xefef('0x41')][_0xefef('0xca')]=_0x565b30['id'];if(_0x3d3d6c[_0xefef('0x38')][_0xefef('0x5d')]){_0x5421ab[_0xefef('0x41')]=_[_0xefef('0x85')](_0x5421ab[_0xefef('0x41')],{'$or':_['map'](_0x5421ab[_0xefef('0x3c')],function(_0x432143){var _0x2af763={};_0x2af763[_0x432143]={'$like':'%'+_0x3d3d6c[_0xefef('0x38')][_0xefef('0x5d')]+'%'};return _0x2af763;})});}_0x5421ab=_[_0xefef('0x85')]({},_0x5421ab,_0x3d3d6c['options']);return db[_0xefef('0xa7')][_0xefef('0x20')]({'where':_0x5421ab['where']})[_0xefef('0x26')](function(_0x2212c4){_0x3c7490['count']=_0x2212c4;if(_0x3d3d6c['query'][_0xefef('0xcc')]){_0x5421ab[_0xefef('0xcd')]=[{'all':!![]}];}return db[_0xefef('0xa7')][_0xefef('0x94')](_0x5421ab);})[_0xefef('0x26')](function(_0x4350cf){_0x3c7490[_0xefef('0x8e')]=_0x4350cf;return _0x3c7490;});}})[_0xefef('0x26')](respondWithFilteredResult(_0x3b41c1,_0x5421ab))['catch'](handleError(_0x3b41c1,null));};exports[_0xefef('0xcf')]=function(_0x17d31f,_0x21f4e1,_0x4d754c){var _0x1f5492={'raw':!![],'where':{}};var _0x338a2d={};var _0x18e9a0={'count':0x0,'rows':[]};return db[_0xefef('0x2c')][_0xefef('0x33')]({'where':{'id':_0x17d31f[_0xefef('0x90')]['id']}})[_0xefef('0x26')](handleEntityNotFound(_0x21f4e1,null))[_0xefef('0x26')](function(_0x59f202){if(_0x59f202){_0x338a2d['model']=_['keys'](db[_0xefef('0xae')][_0xefef('0xc4')]);_0x338a2d[_0xefef('0x38')]=_[_0xefef('0x2e')](_0x17d31f[_0xefef('0x38')]);_0x338a2d['filters']=_[_0xefef('0x3a')](_0x338a2d[_0xefef('0x37')],_0x338a2d[_0xefef('0x38')]);_0x1f5492['attributes']=_['intersection'](_0x338a2d[_0xefef('0x37')],qs[_0xefef('0x3b')](_0x17d31f[_0xefef('0x38')][_0xefef('0x3b')]));_0x1f5492[_0xefef('0x3c')]=_0x1f5492[_0xefef('0x3c')][_0xefef('0x2f')]?_0x1f5492[_0xefef('0x3c')]:_0x338a2d[_0xefef('0x37')];if(!_0x17d31f[_0xefef('0x38')][_0xefef('0x3d')]('nolimit')){_0x1f5492[_0xefef('0x1f')]=qs['limit'](_0x17d31f[_0xefef('0x38')][_0xefef('0x1f')]);_0x1f5492[_0xefef('0x1e')]=qs[_0xefef('0x1e')](_0x17d31f['query']['offset']);}_0x1f5492[_0xefef('0x3f')]=qs['sort'](_0x17d31f['query'][_0xefef('0x40')]);_0x1f5492[_0xefef('0x41')]=qs[_0xefef('0x39')](_[_0xefef('0xc5')](_0x17d31f['query'],_0x338a2d[_0xefef('0x39')]));_0x1f5492['where']['ContactId']=_0x59f202['id'];if(_0x17d31f[_0xefef('0x38')][_0xefef('0x5d')]){_0x1f5492['where']=_[_0xefef('0x85')](_0x1f5492['where'],{'$or':_[_0xefef('0x54')](_0x1f5492[_0xefef('0x3c')],function(_0x57f335){var _0x1887d0={};_0x1887d0[_0x57f335]={'$like':'%'+_0x17d31f[_0xefef('0x38')][_0xefef('0x5d')]+'%'};return _0x1887d0;})});}_0x1f5492=_['merge']({},_0x1f5492,_0x17d31f[_0xefef('0xcb')]);return db[_0xefef('0xae')]['count']({'where':_0x1f5492[_0xefef('0x41')]})[_0xefef('0x26')](function(_0x43ce52){_0x18e9a0[_0xefef('0x20')]=_0x43ce52;if(_0x17d31f[_0xefef('0x38')][_0xefef('0xcc')]){_0x1f5492['include']=[{'all':!![]}];}return db[_0xefef('0xae')][_0xefef('0x94')](_0x1f5492);})['then'](function(_0x3d303a){_0x18e9a0[_0xefef('0x8e')]=_0x3d303a;return _0x18e9a0;});}})['then'](respondWithFilteredResult(_0x21f4e1,_0x1f5492))[_0xefef('0x8f')](handleError(_0x21f4e1,null));};exports['uploadCsv']=function(_0x4dcd28,_0x369dfe,_0x3374f2){try{if(!_0x4dcd28[_0xefef('0x98')][_0xefef('0x62')]){throw new Error('No\x20ListId\x20specified');}if(!_0x4dcd28[_0xefef('0x98')][_0xefef('0xd0')]){throw new Error('No\x20association\x20keys\x20specified!');}if(!_0x4dcd28[_0xefef('0x98')][_0xefef('0xd1')]){throw new Error('No\x20association\x20values\x20specified!');}if(!_0x4dcd28[_0xefef('0x98')][_0xefef('0xd2')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0xa0c82d=_0x4dcd28[_0xefef('0x98')][_0xefef('0xd0')]['split'](',');var _0x438442=_0x4dcd28[_0xefef('0x98')]['binding_values'][_0xefef('0x53')](',');if(!_0xa0c82d[_0xefef('0x2f')]||!_0x438442[_0xefef('0x2f')]||_0xa0c82d['length']!==_0x438442[_0xefef('0x2f')]){throw new Error('Incorrect\x20binding\x20parameters\x20passed!');}_0x4dcd28[_0xefef('0x98')][_0xefef('0x3b')]=_[_0xefef('0xd3')](_0xa0c82d,_0x438442);if(!_0x4dcd28[_0xefef('0x98')][_0xefef('0x3b')]['phone']){throw new Error(_0xefef('0xd4'));}if(!_0x4dcd28['body'][_0xefef('0x3b')]['firstName']){throw new Error(_0xefef('0xd5'));}var _0x41805a=path[_0xefef('0xb3')](config[_0xefef('0xd6')],'server/files/tmp',_0x4dcd28['file'][_0xefef('0xd7')]);fs[_0xefef('0xd8')](_0x41805a,parseInt('0777',0x8));var _0x4fc3df=require(_0xefef('0xd9'))[_0xefef('0xda')](path['join'](__dirname,_0xefef('0xdb')),[_0x41805a,_0x4dcd28[_0xefef('0x98')][_0xefef('0xd0')],_0x4dcd28[_0xefef('0x98')][_0xefef('0xd1')],_0x4dcd28[_0xefef('0x98')][_0xefef('0x62')],_0x4dcd28['body'][_0xefef('0xdc')],_0x4dcd28['body']['duplicates'],_0x4dcd28[_0xefef('0x98')][_0xefef('0xd2')]]);return _0x369dfe[_0xefef('0x1c')](0xc8)[_0xefef('0x1d')]({'message':_0xefef('0xdd'),'pid':_0x4fc3df[_0xefef('0xde')]});}catch(_0x1d9e81){return _0x369dfe[_0xefef('0x1c')](0x1f4)[_0xefef('0x2a')](_0x1d9e81);}};exports[_0xefef('0xdf')]=function(_0x801370,_0x2684c9,_0x20ad99){var _0x5bcab3=fs[_0xefef('0xe0')](_0x801370['file'][_0xefef('0x8')]);Papa[_0xefef('0xe1')](_0x5bcab3,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x334cd3){return _0x2684c9[_0xefef('0x1c')](0xc8)[_0xefef('0x1d')]({'file':_0x801370[_0xefef('0xe2')],'fields':_0x334cd3[_0xefef('0xe3')][_0xefef('0x3b')]});}});};exports[_0xefef('0xe4')]=function(_0x5f27bf,_0x1f9302,_0x449d1f){return db[_0xefef('0x56')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':_0xefef('0x7d')}})[_0xefef('0x26')](function(_0x15a765){var _0x2ad5f6=![];if(!_0x5f27bf[_0xefef('0x98')]['ListId']){throw new Error(_0xefef('0xe5'));}if(!_0x5f27bf[_0xefef('0x98')]['binding'][_0xefef('0xc3')]){throw new Error(_0xefef('0xd4'));}if(!_0x5f27bf[_0xefef('0x98')][_0xefef('0xe6')][_0xefef('0xe7')]){throw new Error(_0xefef('0xd5'));}if(!_0x5f27bf[_0xefef('0x98')][_0xefef('0xd2')]){throw new Error(_0xefef('0xe8'));}var _0x579315=require(_0xefef('0xd9'))['fork'](path[_0xefef('0xb3')](__dirname,'../../components/import/cm/csv2'),[_0x5f27bf[_0xefef('0x90')]['id'],JSON[_0xefef('0xe9')](_0x5f27bf[_0xefef('0x98')]),JSON[_0xefef('0xe9')](_0x15a765)]);_0x579315['on']('message',function(_0x38c9b8){_0x2ad5f6=!![];return _0x1f9302[_0xefef('0x1c')](0xc8)[_0xefef('0x1d')]({'message':'start\x20child\x20process\x20correctly!','pid':_0x579315[_0xefef('0xde')]});});_0x579315['on'](_0xefef('0xea'),function(_0x5e3b18){if(_0x5e3b18&&!_0x2ad5f6){return _0x1f9302[_0xefef('0x1c')](0x1f4)[_0xefef('0x1d')]({'message':'error\x20child\x20process','pid':_0x579315[_0xefef('0xde')]});}});})[_0xefef('0x8f')](handleError(_0x1f9302,null));};exports[_0xefef('0xeb')]=function(_0x24a1a3,_0x262f02){var _0xeed857=[_0xefef('0xec'),'chat',_0xefef('0xed'),'openchannel',_0xefef('0xee'),_0xefef('0xef'),_0xefef('0xf0')];var _0x58dfe8={'offset':0x0,'order':qs[_0xefef('0x40')](_0xefef('0xf1'))},_0x82ba6c={'count':0x0,'rows':[]};Promise[_0xefef('0xf2')]()[_0xefef('0x26')](function(){if(_0x24a1a3[_0xefef('0x38')]['channel']){if(!_['includes'](_0xeed857,_0x24a1a3['query'][_0xefef('0xf3')][_0xefef('0xf4')]())){throw new Error(_0xefef('0xf5'));}_0xeed857=[_0x24a1a3[_0xefef('0x38')][_0xefef('0xf3')]['toLowerCase']()];}if(_0x24a1a3[_0xefef('0x38')][_0xefef('0xf6')]){try{var _0x4c6822=JSON[_0xefef('0xe1')](_0x24a1a3[_0xefef('0x38')]['range']);if(!moment(_0x4c6822[_0xefef('0x45')])[_0xefef('0xf7')]()){throw new Error(_0xefef('0xf8'));}if(!moment(_0x4c6822['to'])[_0xefef('0xf7')]()){throw new Error(_0xefef('0xf9'));}}catch(_0x416916){throw new Error(_0xefef('0xfa'));}}if(!_0x24a1a3[_0xefef('0x38')][_0xefef('0x3d')]('nolimit')){_0x58dfe8[_0xefef('0x1f')]=qs[_0xefef('0x1f')](_0x24a1a3[_0xefef('0x38')]['limit']||0xa);_0x58dfe8[_0xefef('0x1e')]=qs[_0xefef('0x1e')](_0x24a1a3['query'][_0xefef('0x1e')]);}var _0x768cc0=_0xeed857['map'](function(_0x9ff10c){if(_0x9ff10c==='voice'){var _0xe39fc={'attributes':['id','uniqueid',_0xefef('0x36'),'source',_0xefef('0xfb'),'callerid',_0xefef('0xfc'),_0xefef('0xfd'),'duration','note',_0xefef('0xfe'),_0xefef('0xff'),_0xefef('0x100'),_0xefef('0x101'),'UserId'],'where':{'ContactId':_0x24a1a3[_0xefef('0x90')]['id']},'include':[{'model':db['User'],'as':_0xefef('0x56'),'attributes':['id','name',_0xefef('0x102'),_0xefef('0x95')]}],'order':[['createdAt','DESC']]};if(_0x24a1a3[_0xefef('0x38')][_0xefef('0xf6')]){_0xe39fc['where'][_0xefef('0xfe')]={'$gte':_0x4c6822[_0xefef('0x45')],'$lte':_0x4c6822['to']};}return db['VoiceCallReport'][_0xefef('0x103')](_0xe39fc)[_0xefef('0x26')](function(_0x1d22ee){_0x82ba6c['count']+=_0x1d22ee['count'];return _[_0xefef('0x54')](_0x1d22ee[_0xefef('0x8e')],function(_0x8c592c){var _0x50170a=_0x8c592c[_0xefef('0x99')]({'plain':!![]});_0x50170a[_0xefef('0xf3')]=_0x9ff10c;if(_0x50170a['User']){_0x50170a[_0xefef('0x56')]={'id':_0x50170a[_0xefef('0x56')]['id'],'name':_0x50170a['User'][_0xefef('0x29')],'fullname':_0x50170a[_0xefef('0x56')][_0xefef('0x102')],'alias':_0x50170a['User'][_0xefef('0x95')]};}return _0x50170a;});});}else{var _0x51470a=_['startCase'](_0x9ff10c)+(_0x9ff10c===_0xefef('0x104')?_0xefef('0x105'):_0xefef('0x106'));var _0x4a1f22={'attributes':['id',_0xefef('0x107'),_0xefef('0x108'),_0xefef('0xfe'),_0xefef('0x109'),_0xefef('0x10a'),_0xefef('0x10b'),'thirdDisposition','UserId',_0x51470a+'Id'],'where':{'ContactId':_0x24a1a3[_0xefef('0x90')]['id']},'include':[{'model':db[_0x51470a],'as':_0xefef('0x106'),'attributes':['id',_0xefef('0x29'),_0xefef('0x10c')]},{'model':db[_0xefef('0x56')],'as':'Owner','attributes':['id',_0xefef('0x29'),'fullname']},{'model':db[_0xefef('0x52')],'as':_0xefef('0x8d'),'attributes':['id',_0xefef('0x29'),'color'],'through':{'attributes':[]}}],'order':[[_0xefef('0xfe'),'DESC']]};if(_0x24a1a3[_0xefef('0x38')][_0xefef('0xf6')]){_0x4a1f22['where'][_0xefef('0xfe')]={'$gte':_0x4c6822[_0xefef('0x45')],'$lte':_0x4c6822['to']};}switch(_0x9ff10c){case _0xefef('0x104'):_0x4a1f22[_0xefef('0x3c')][_0xefef('0x60')]('browserName','customerIp',_0xefef('0x10d'),_0xefef('0x10e'),_0xefef('0x10f'),_0xefef('0x110'),'ratingType','ratingValue',_0xefef('0x111'));break;case _0xefef('0xec'):_0x4a1f22[_0xefef('0x3c')][_0xefef('0x60')](_0xefef('0x112'),'substatus');break;case _0xefef('0x113'):_0x4a1f22['attributes']['push'](_0xefef('0x114'),'threadId');break;}return db[_['startCase'](_0x9ff10c)+_0xefef('0x115')][_0xefef('0x103')](_0x4a1f22)[_0xefef('0x26')](function(_0x59ca53){_0x82ba6c[_0xefef('0x20')]+=_0x59ca53[_0xefef('0x20')];return _['map'](_0x59ca53[_0xefef('0x8e')],function(_0x15b6a8){var _0x4117b3=_0x15b6a8[_0xefef('0x99')]({'plain':!![]});_0x4117b3['channel']=_0x9ff10c;if(_0x4117b3[_0xefef('0x116')]){_0x4117b3[_0xefef('0x116')]={'id':_0x4117b3[_0xefef('0x116')]['id'],'name':_0x4117b3[_0xefef('0x116')]['name'],'fullname':_0x4117b3[_0xefef('0x116')][_0xefef('0x102')]};}return _0x4117b3;});});}});return Promise[_0xefef('0x117')](_0x768cc0);})['then'](function(_0x4b66a0){return _(_0x4b66a0)[_0xefef('0x118')]()[_0xefef('0x119')](_0xefef('0xfe'))[_0xefef('0x11a')]()[_0xefef('0x58')]();})['then'](function(_0x526268){_0x82ba6c[_0xefef('0x8e')]=_0x58dfe8['limit']?_0x526268['slice'](_0x58dfe8[_0xefef('0x1e')],_0x58dfe8['offset']+_0x58dfe8['limit']):_0x526268;return _0x82ba6c;})['then'](respondWithFilteredResult(_0x262f02,_0x58dfe8))['catch'](handleError(_0x262f02,null));};
\ No newline at end of file
+var _0x03fc=['Tags','push','rows','catch','destroy','find','params','describe','cf_','columnName','displayName','values','merge','body','get','tags','join','info','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','create','ChatInteraction','update','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsInteraction','SmsMessage','FaxInteraction','FaxMessage','CmHopperHistory','ReportAgentPreview','VoiceCallReport','ChatQueueReport','FaxQueueReport','OpenchannelQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappQueueReport','bulkCreate','each','duplicates','ListId','spread','$and','CmCustomField','findAll','omit','format','cf_%d','pickBy','table','cm_contacts','setFields','id\x20=\x20?','toParam','phone','CmHopper','rawAttributes','options','getTags','setTags','ids','getHoppers','ContactId','includeAll','include','getHopperHistories','getHopperFinals','CmHopperFinal','getJscriptySessions','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','No\x20firstName\x20column\x20specified','root','file','filename','chmodSync','0777','fork','CompanyId','File\x20uploaded\x20correctly!','createReadStream','parse','meta','import','binding','stringify','start\x20child\x20process\x20correctly!','pid','exit','error\x20child\x20process','mail','chat','sms','openchannel','whatsapp','voice','-createdAt','channel','includes','toLowerCase','Invalid\x20channel','range','isValid','Invalid\x20date\x20for\x20range\x20from\x20filter','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter','uniqueid','source','callerid','starttime','endtime','note','createdAt','userDisposition','userSecondDisposition','UserId','fullname','alias','startCase','Website','disposition','Account','browserName','customerIp','customerPort','deviceModel','osName','ratingType','referer','subject','substatus','Interaction','findAndCountAll','Owner','flatten','sortBy','slice','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','path','sox','ejs','lodash','jsforce','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','./cmContact.socket','register','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','then','error','stack','name','send','index','keys','length','startsWith','findOne','trimStart','all','type','model','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','sort','pick','select','field','color','from','tools_tags','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20c.id','cm_contact_has_tags','t.id\x20=\x20ct.TagId','where','c.deletedAt\x20IS\x20NULL','expr','parseSearch','sqlOperator','conditions','Tag','value','split','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','and','uc.UserId\x20=\x20?','dateOfBirth','fieldType','castTo','buildExpression','text','Contact','isEmpty','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','tag','isArray','filter','replace','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','isNumeric','c.id\x20LIKE\x20?','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','QueryTypes','SELECT','clone','order','DESC','having','t.id\x20IN\x20?','resolve','user','role','agent','some','getLists','c.ListId\x20IS\x20NULL','map','toString','keyBy','CmContact','c.id','c.firstName','c.lastName','c.phone','c.mobile','c.email','c.ListId','c.createdAt','c.deletedAt','c.CompanyId','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','sequelize'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x03fc,0x96));var _0xc03f=function(_0x450576,_0x27d6c6){_0x450576=_0x450576-0x0;var _0x49013e=_0x03fc[_0x450576];return _0x49013e;};'use strict';var emlformat=require(_0xc03f('0x0'));var rimraf=require(_0xc03f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc03f('0x2'));var rp=require(_0xc03f('0x3'));var moment=require(_0xc03f('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xc03f('0x5'));var util=require('util');var path=require(_0xc03f('0x6'));var sox=require(_0xc03f('0x7'));var csv=require('to-csv');var ejs=require(_0xc03f('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc03f('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xc03f('0xa'));var deskjs=require(_0xc03f('0xb'));var toCsv=require(_0xc03f('0xc'));var querystring=require(_0xc03f('0xd'));var Papa=require('papaparse');var Redis=require(_0xc03f('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xc03f('0xf'));var as=require(_0xc03f('0x10'));var hardwareService=require(_0xc03f('0x11'));var logger=require('../../config/logger')(_0xc03f('0x12'));var utils=require('../../config/utils');var config=require(_0xc03f('0x13'));var licenseUtil=require(_0xc03f('0x14'));var db=require(_0xc03f('0x15'))['db'];config['redis']=_[_0xc03f('0x16')](config[_0xc03f('0x17')],{'host':_0xc03f('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc03f('0x17')]));require(_0xc03f('0x19'))[_0xc03f('0x1a')](socket);function respondWithStatusCode(_0x113ccd,_0xdda846){_0xdda846=_0xdda846||0xcc;return function(_0x445776){if(_0x445776){return _0x113ccd[_0xc03f('0x1b')](_0xdda846);}return _0x113ccd[_0xc03f('0x1c')](_0xdda846)[_0xc03f('0x1d')]();};}function respondWithResult(_0x11e667,_0x410012){_0x410012=_0x410012||0xc8;return function(_0x3f19ac){if(_0x3f19ac){return _0x11e667[_0xc03f('0x1c')](_0x410012)['json'](_0x3f19ac);}};}function respondWithFilteredResult(_0x30fcf1,_0x355927){return function(_0xb9e0a5){if(_0xb9e0a5){var _0x9bedee=typeof _0x355927[_0xc03f('0x1e')]==='undefined'&&typeof _0x355927['limit']===_0xc03f('0x1f');var _0x565602=_0xb9e0a5['count'];var _0x307c99=_0x9bedee?0x0:_0x355927[_0xc03f('0x1e')];var _0x21568b=_0x9bedee?_0xb9e0a5[_0xc03f('0x20')]:_0x355927[_0xc03f('0x1e')]+_0x355927[_0xc03f('0x21')];var _0x540769;if(_0x21568b>=_0x565602){_0x21568b=_0x565602;_0x540769=0xc8;}else{_0x540769=0xce;}_0x30fcf1[_0xc03f('0x1c')](_0x540769);return _0x30fcf1[_0xc03f('0x22')](_0xc03f('0x23'),_0x307c99+'-'+_0x21568b+'/'+_0x565602)[_0xc03f('0x24')](_0xb9e0a5);}return null;};}function patchUpdates(_0x4936bc){return function(_0x312bae){try{jsonpatch[_0xc03f('0x25')](_0x312bae,_0x4936bc,!![]);}catch(_0x3e1680){return BPromise[_0xc03f('0x26')](_0x3e1680);}return _0x312bae[_0xc03f('0x27')]();};}function saveUpdates(_0x25dad3,_0x32a5a5){return function(_0x401036){if(_0x401036){return _0x401036['update'](_0x25dad3)['then'](function(_0x3be9a9){return _0x3be9a9;});}return null;};}function removeEntity(_0x331d31,_0x65d0b){return function(_0x2847f){if(_0x2847f){return _0x2847f['destroy']()[_0xc03f('0x28')](function(){_0x331d31['status'](0xcc)[_0xc03f('0x1d')]();});}};}function handleEntityNotFound(_0x30a5d1,_0x2d14bb){return function(_0x3972fa){if(!_0x3972fa){_0x30a5d1[_0xc03f('0x1b')](0x194);}return _0x3972fa;};}function handleError(_0x374077,_0x134c84){_0x134c84=_0x134c84||0x1f4;return function(_0x23ba79){logger[_0xc03f('0x29')](_0x23ba79[_0xc03f('0x2a')]);if(_0x23ba79['name']){delete _0x23ba79[_0xc03f('0x2b')];}_0x374077[_0xc03f('0x1c')](_0x134c84)[_0xc03f('0x2c')](_0x23ba79);};}exports[_0xc03f('0x2d')]=function(_0x503852,_0x487b58){var _0x17143e={},_0x482b65={},_0x4465a1={'count':0x0,'rows':[]};return db['CmContact']['describe']()[_0xc03f('0x28')](function(_0x58a679){var _0x31dbdb=[];for(var _0x573f15=0x0;_0x573f15<Object[_0xc03f('0x2e')](_0x58a679)[_0xc03f('0x2f')];_0x573f15++){var _0x534484=Object[_0xc03f('0x2e')](_0x58a679)[_0x573f15];if(_[_0xc03f('0x30')](_0x534484,'cf_')){_0x31dbdb['push'](db['CmCustomField'][_0xc03f('0x31')]({'where':{'id':_[_0xc03f('0x32')](_0x534484,'cf_')},'raw':!![]}));}}return BPromise[_0xc03f('0x33')](_0x31dbdb)[_0xc03f('0x28')](function(_0x3716e1){for(var _0x7a634=0x0;_0x7a634<_0x3716e1[_0xc03f('0x2f')];_0x7a634++){if(_0x3716e1[_0x7a634]){var _0x1893da='cf_'+_0x3716e1[_0x7a634]['id'];var _0x1aae67=_0x58a679[_0x1893da];_0x1aae67['fieldType']=_0x3716e1[_0x7a634][_0xc03f('0x34')];}}return _0x58a679;});})[_0xc03f('0x28')](function(_0x45a058){_0x482b65[_0xc03f('0x35')]=_[_0xc03f('0x2e')](_0x45a058);_0x482b65[_0xc03f('0x36')]=_[_0xc03f('0x2e')](_0x503852[_0xc03f('0x36')]);_0x482b65[_0xc03f('0x37')]=_['intersection'](_0x482b65[_0xc03f('0x35')],_0x482b65['query']);_0x17143e[_0xc03f('0x38')]=_[_0xc03f('0x39')](_0x482b65['model'],qs[_0xc03f('0x3a')](_0x503852['query'][_0xc03f('0x3a')]));_0x17143e[_0xc03f('0x38')]=_0x17143e[_0xc03f('0x38')]['length']?_0x17143e['attributes']:_0x482b65[_0xc03f('0x35')];if(!_0x503852[_0xc03f('0x36')][_0xc03f('0x3b')](_0xc03f('0x3c'))){_0x17143e[_0xc03f('0x21')]=qs[_0xc03f('0x21')](_0x503852['query'][_0xc03f('0x21')]);_0x17143e[_0xc03f('0x1e')]=qs[_0xc03f('0x1e')](_0x503852[_0xc03f('0x36')]['offset']);}_0x17143e['order']=qs[_0xc03f('0x3d')](_0x503852[_0xc03f('0x36')]['sort']);_0x17143e['where']=qs[_0xc03f('0x37')](_[_0xc03f('0x3e')](_0x503852[_0xc03f('0x36')],_0x482b65[_0xc03f('0x37')]),_0x45a058);var _0x102066=[];var _0x3004cf=squel[_0xc03f('0x3f')]()[_0xc03f('0x40')]('id')[_0xc03f('0x40')](_0xc03f('0x2b'))[_0xc03f('0x40')](_0xc03f('0x41'))[_0xc03f('0x42')](_0xc03f('0x43'));var _0x13ed25=squel[_0xc03f('0x3f')]()[_0xc03f('0x42')]('cm_contacts','c')[_0xc03f('0x44')](_0xc03f('0x45'),'uc',_0xc03f('0x46'))[_0xc03f('0x44')](_0xc03f('0x47'),'ct','ct.CmContactId\x20=\x20c.id')[_0xc03f('0x44')](_0xc03f('0x43'),'t',_0xc03f('0x48'))[_0xc03f('0x49')](_0xc03f('0x4a'));var _0x5c5310=squel[_0xc03f('0x4b')]();var _0x4126d2=[];var _0x213226=squel[_0xc03f('0x4b')]();var _0x21d431;if(_0x503852[_0xc03f('0x36')]['search']){_0x21d431=as[_0xc03f('0x4c')](_0x503852[_0xc03f('0x36')]['search']);var _0x43f6c3=_0x21d431[_0xc03f('0x4d')];for(var _0x28e58e=0x0;_0x28e58e<_0x21d431[_0xc03f('0x4e')]['length'];_0x28e58e++){var _0x526493=_0x21d431[_0xc03f('0x4e')][_0x28e58e];var _0x30bdb6='c';var _0x59cb5c=_(_0x45a058)[_0xc03f('0x2e')]()['find'](function(_0x21a19d){return _0x21a19d===_0x526493[_0xc03f('0x40')];});if(_0x59cb5c)_0x59cb5c=_0x45a058[_0x526493[_0xc03f('0x40')]];if(!_0x59cb5c){if(_0x526493[_0xc03f('0x40')]===_0xc03f('0x4f')){var _0x1f749f=_0x526493[_0xc03f('0x50')][_0xc03f('0x51')](',')['map'](function(_0x3445f9){return Number(_0x3445f9);});_0x1f749f[_0xc03f('0x52')](function(_0x188f1a){_0x213226['or'](_0xc03f('0x53'),'%,'+_0x188f1a+',%');});_0x4126d2=_[_0xc03f('0x54')](_0x4126d2,_0x1f749f);}else if(_0x526493[_0xc03f('0x40')]===_0xc03f('0x55')){_0x5c5310[_0xc03f('0x56')](_0xc03f('0x57'),_0x526493[_0xc03f('0x50')]);}}else{if(_0x526493[_0xc03f('0x40')]===_0xc03f('0x58')||_0x59cb5c[_0xc03f('0x59')]==='datetime')_0x526493[_0xc03f('0x5a')]='DATE';var _0xf135b6=as[_0xc03f('0x5b')](_0x30bdb6,_0x59cb5c['type'],_0x526493);_0x5c5310[_0x43f6c3](_0xf135b6[_0xc03f('0x5c')],_0xf135b6[_0xc03f('0x50')]['start'],_0xf135b6['value'][_0xc03f('0x1d')]);}}}else{var _0x56903b=_(Object[_0xc03f('0x2e')](_0x503852[_0xc03f('0x36')]))['map'](function(_0x9b6f66){return _0x45a058[_0xc03f('0x3b')](_0x9b6f66)?_0x9b6f66:undefined;})['filter'](function(_0x8e0b78){return!_['isNil'](_0x8e0b78);})[_0xc03f('0x50')]();if(_0x503852[_0xc03f('0x36')][_0xc03f('0x5d')])_0x56903b['push'](_0xc03f('0x5d'));if(!_[_0xc03f('0x5e')](_0x56903b)){_0x56903b[_0xc03f('0x52')](function(_0x390553){if(_0x390553==='ListId'){_0x13ed25['where'](_0xc03f('0x5f'),[][_0xc03f('0x60')](_0x503852[_0xc03f('0x36')][_0x390553]));}else if(_0x390553==='Contact'){var _0x28670a='%'+_0x503852[_0xc03f('0x36')][_0x390553]+'%';_0x13ed25['where'](_0xc03f('0x61'),_0x28670a);}else{_0x13ed25[_0xc03f('0x49')]('c.'+_0x390553+_0xc03f('0x62'),_0x503852[_0xc03f('0x36')][_0x390553]);}});}if(_0x503852[_0xc03f('0x36')][_0xc03f('0x63')]){_0x4126d2=_[_0xc03f('0x64')](_0x503852[_0xc03f('0x36')][_0xc03f('0x63')])?_0x503852[_0xc03f('0x36')]['tag']:new Array(_0x503852[_0xc03f('0x36')]['tag']);_0x4126d2[_0xc03f('0x52')](function(_0x961e04){_0x213226['or'](_0xc03f('0x53'),'%,'+_0x961e04+',%');});}if(_0x503852['query'][_0xc03f('0x65')]){var _0xe1169f=_0x503852['query'][_0xc03f('0x65')][_0xc03f('0x66')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(_0xe1169f['split']('\x20')[_0xc03f('0x2f')]>0x1){_0x5c5310['or'](_0xc03f('0x67'),qs[_0xc03f('0x68')](_0xe1169f),null);}else{if(qs[_0xc03f('0x69')](_0xe1169f)){_0x5c5310['or'](_0xc03f('0x6a'),_0xe1169f+'%');_0x5c5310['or'](_0xc03f('0x6b'),_0xe1169f+'%');_0x5c5310['or'](_0xc03f('0x6c'),_0xe1169f+'%');_0x5c5310['or']('c.fax\x20LIKE\x20?',_0xe1169f+'%');}else if(qs['isEmail'](_0xe1169f)){_0x5c5310['or'](_0xc03f('0x6d'),_0xe1169f+'%');}else{_0x5c5310['or'](_0xc03f('0x6e'),'%'+_0xe1169f+'%');_0x5c5310['or'](_0xc03f('0x6f'),'%'+_0xe1169f+'%');_0x5c5310['or'](_0xc03f('0x6d'),'%'+_0xe1169f+'%');}}}}_0x13ed25[_0xc03f('0x49')](_0x5c5310);_0x13ed25['group']('c.id');var _0x375482={'type':db['Sequelize'][_0xc03f('0x70')][_0xc03f('0x71')],'raw':!![]};var _0x1e9db4=_0x13ed25[_0xc03f('0x72')]()[_0xc03f('0x40')]('c.id');if(_0x17143e[_0xc03f('0x73')]){_0x17143e['order'][_0xc03f('0x52')](function(_0x3229fc){_0x13ed25[_0xc03f('0x73')]('c.'+_0x3229fc[0x0],_0x3229fc[0x1]===_0xc03f('0x74')?![]:!![]);});}if(!_[_0xc03f('0x5e')](_0x4126d2)){_0x13ed25[_0xc03f('0x75')](_0x213226);_0x1e9db4[_0xc03f('0x49')](_0xc03f('0x76'),_0x4126d2);}BPromise[_0xc03f('0x77')]()[_0xc03f('0x28')](function(){if(!_0x21d431)return;if(_0x503852[_0xc03f('0x78')][_0xc03f('0x79')]!==_0xc03f('0x7a'))return;if(!_[_0xc03f('0x7b')](_0x21d431['conditions'],[_0xc03f('0x40'),_0xc03f('0x55')])){return _0x503852[_0xc03f('0x78')][_0xc03f('0x7c')]({'attributes':['id'],'raw':!![]})['then'](function(_0x97b9e3){if(_['isEmpty'](_0x97b9e3)){_0x1e9db4[_0xc03f('0x49')](_0xc03f('0x7d'));_0x13ed25[_0xc03f('0x49')](_0xc03f('0x7d'));}else{_0x1e9db4[_0xc03f('0x49')](_0xc03f('0x5f'),_[_0xc03f('0x7e')](_0x97b9e3,'id'));_0x13ed25[_0xc03f('0x49')](_0xc03f('0x5f'),_[_0xc03f('0x7e')](_0x97b9e3,'id'));}});}})[_0xc03f('0x28')](function(){if(_0x503852[_0xc03f('0x78')][_0xc03f('0x79')]==='agent'&&!_0x21d431&&!_0x503852[_0xc03f('0x36')]['ListId'])return[];return db['sequelize'][_0xc03f('0x36')](_0x1e9db4[_0xc03f('0x7f')](),_0x375482);})[_0xc03f('0x28')](function(_0x247b75){_0x4465a1[_0xc03f('0x20')]=_0x247b75['length'];if(_0x4465a1[_0xc03f('0x20')]===0x0)return[];return db['sequelize'][_0xc03f('0x36')](_0x3004cf[_0xc03f('0x7f')](),_0x375482)[_0xc03f('0x28')](function(_0x5cc7ad){_0x102066=_[_0xc03f('0x80')](_0x5cc7ad,'id');_0x375482=_['merge'](_0x375482,{'model':db[_0xc03f('0x81')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x503852['query'][_0xc03f('0x3a')]){_0x17143e[_0xc03f('0x38')]['forEach'](function(_0x5b355e){_0x13ed25[_0xc03f('0x40')]('c.'+_0x5b355e);});}else{_0x13ed25[_0xc03f('0x40')](_0xc03f('0x82'));_0x13ed25[_0xc03f('0x40')](_0xc03f('0x83'));_0x13ed25[_0xc03f('0x40')](_0xc03f('0x84'));_0x13ed25[_0xc03f('0x40')](_0xc03f('0x85'));_0x13ed25['field'](_0xc03f('0x86'));_0x13ed25[_0xc03f('0x40')]('c.fax');_0x13ed25['field'](_0xc03f('0x87'));_0x13ed25['field'](_0xc03f('0x88'));_0x13ed25[_0xc03f('0x40')](_0xc03f('0x89'));_0x13ed25[_0xc03f('0x40')](_0xc03f('0x8a'));_0x13ed25[_0xc03f('0x40')](_0xc03f('0x8b'));_0x13ed25['field'](_0xc03f('0x8c'),_0xc03f('0x8d'));}if(_0x17143e[_0xc03f('0x21')])_0x13ed25['limit'](_0x17143e[_0xc03f('0x21')]);if(_0x17143e[_0xc03f('0x1e')])_0x13ed25[_0xc03f('0x1e')](_0x17143e[_0xc03f('0x1e')]);return db[_0xc03f('0x8e')][_0xc03f('0x36')](_0x13ed25['toString'](),_0x375482);});})[_0xc03f('0x28')](function(_0x36f09c){_0x36f09c[_0xc03f('0x52')](function(_0x5ba37b){if(_0x5ba37b['TagIds']){_0x5ba37b[_0xc03f('0x8f')]=[];_0x5ba37b[_0xc03f('0x8d')]['split'](',')[_0xc03f('0x52')](function(_0x1f7a26){_0x5ba37b['Tags'][_0xc03f('0x90')](_0x102066[_0x1f7a26]);});}delete _0x5ba37b[_0xc03f('0x8d')];});_0x4465a1[_0xc03f('0x91')]=_0x36f09c;return _0x4465a1;})[_0xc03f('0x28')](respondWithFilteredResult(_0x487b58,_0x17143e));})[_0xc03f('0x92')](handleError(_0x487b58,null));};exports[_0xc03f('0x93')]=function(_0x5b5ac4,_0x399de0){return db[_0xc03f('0x81')][_0xc03f('0x94')]({'where':{'id':_0x5b5ac4[_0xc03f('0x95')]['id']}})[_0xc03f('0x28')](handleEntityNotFound(_0x399de0,null))[_0xc03f('0x28')](removeEntity(_0x399de0,null))[_0xc03f('0x92')](handleError(_0x399de0,null));};exports['describe']=function(_0x13549c,_0x15a4f3){return db[_0xc03f('0x81')][_0xc03f('0x96')]()[_0xc03f('0x28')](function(_0x156b2c){delete _0x156b2c['tags'];for(var _0x106b73=0x0;_0x106b73<Object[_0xc03f('0x2e')](_0x156b2c)[_0xc03f('0x2f')];_0x106b73++){var _0x3931fa=Object['keys'](_0x156b2c)[_0x106b73];if(!_[_0xc03f('0x30')](_0x3931fa,_0xc03f('0x97'))){_0x156b2c[_0x3931fa][_0xc03f('0x98')]=_0x3931fa;_0x156b2c[_0x3931fa][_0xc03f('0x99')]=_0x3931fa;}}return _0x156b2c;})[_0xc03f('0x28')](function(_0x466cc4){var _0x5b7946={'where':{'$or':[{'ListId':_0x13549c['query']['id']},{'ListId':null}]},'raw':!![]};return db['CmCustomField']['findAll'](_0x5b7946)[_0xc03f('0x28')](function(_0x76d5bf){for(var _0x1bc7e2=0x0;_0x1bc7e2<_0x76d5bf[_0xc03f('0x2f')];_0x1bc7e2++){var _0x188a98=_0xc03f('0x97')+_0x76d5bf[_0x1bc7e2]['id'];_0x466cc4[_0x188a98][_0xc03f('0x98')]=_0x188a98;_0x466cc4[_0x188a98][_0xc03f('0x99')]=_0x76d5bf[_0x1bc7e2]['alias'];_0x466cc4[_0x188a98]['custom']={'type':_0x76d5bf[_0x1bc7e2][_0xc03f('0x34')],'values':_0x76d5bf[_0x1bc7e2][_0xc03f('0x9a')]};}Object[_0xc03f('0x2e')](_0x466cc4)[_0xc03f('0x52')](function(_0x162575){if(!_0x466cc4[_0x162575]['hasOwnProperty'](_0xc03f('0x98'))){delete _0x466cc4[_0x162575];}});return _0x466cc4;});})[_0xc03f('0x28')](respondWithResult(_0x15a4f3,null))['catch'](handleError(_0x15a4f3,null));};exports[_0xc03f('0x9b')]=function(_0x45e848,_0x3d9179){var _0x538ad3;var _0x54c3c8;var _0x21d7d9;if(_0x45e848[_0xc03f('0x9c')]['id']){delete _0x45e848['body']['id'];}return db[_0xc03f('0x81')]['findAll']({'where':{'id':[_0x45e848['body']['to'],_0x45e848[_0xc03f('0x9c')][_0xc03f('0x42')]]}})[_0xc03f('0x28')](function(_0xafcded){if(_0xafcded){if(_0xafcded[_0xc03f('0x2f')]!==0x2){return null;}_0xafcded[0x0]=_0xafcded[0x0][_0xc03f('0x9d')]({'plain':!![]});_0xafcded[0x1]=_0xafcded[0x1][_0xc03f('0x9d')]({'plain':!![]});delete _0xafcded[0x0]['id'];delete _0xafcded[0x1]['id'];return _['mergeWith'](_0xafcded[0x0],_0xafcded[0x1],function(_0x2c9f11,_0x21daa7){if(Array['isArray'](_0x21daa7)&&!_0x21daa7[_0xc03f('0x2f')]){return _0x2c9f11;}else if(!_0x21daa7){return _0x2c9f11;}});}})['then'](handleEntityNotFound(_0x3d9179,null))[_0xc03f('0x28')](function(_0x52777e){if(_0x52777e){if(_0x52777e[_0xc03f('0x9e')]&&_[_0xc03f('0x64')](_0x52777e[_0xc03f('0x9e')])){_0x52777e[_0xc03f('0x9e')]=_0x52777e['tags'][_0xc03f('0x9f')]();}logger[_0xc03f('0xa0')]('[CmContact][merge]\x20to\x20%s\x20from\x20%s',_0x45e848[_0xc03f('0x9c')]['to'],_0x45e848[_0xc03f('0x9c')][_0xc03f('0x42')]);return db['CmHopper']['destroy']({'where':{'ContactId':[_0x45e848[_0xc03f('0x9c')]['to'],_0x45e848[_0xc03f('0x9c')][_0xc03f('0x42')]]}})[_0xc03f('0x28')](function(_0x81e989){logger[_0xc03f('0xa0')](_0xc03f('0xa1'),_0x81e989);return db[_0xc03f('0xa2')]['destroy']({'where':{'ContactId':[_0x45e848[_0xc03f('0x9c')]['to'],_0x45e848[_0xc03f('0x9c')][_0xc03f('0x42')]]}})[_0xc03f('0x28')](function(_0x487087){logger[_0xc03f('0xa0')]('[CmContact][merge][destroy][CmHopperBlack],\x20%s',_0x487087);return db[_0xc03f('0x81')][_0xc03f('0xa3')](_0x52777e);});});}})['then'](function(_0x25df93){if(_0x25df93){_0x538ad3=_0x25df93;_0x54c3c8={'ContactId':_0x538ad3['id']};_0x21d7d9={'where':{'ContactId':[_0x45e848[_0xc03f('0x9c')]['to'],_0x45e848['body'][_0xc03f('0x42')]]}};return db[_0xc03f('0xa4')][_0xc03f('0xa5')](_0x54c3c8,_0x21d7d9);}})['then'](function(){if(_0x538ad3){return db[_0xc03f('0xa6')][_0xc03f('0xa5')](_0x54c3c8,_0x21d7d9);}})[_0xc03f('0x28')](function(){if(_0x538ad3){return db[_0xc03f('0xa7')][_0xc03f('0xa5')](_0x54c3c8,_0x21d7d9);}})[_0xc03f('0x28')](function(){if(_0x538ad3){return db[_0xc03f('0xa8')]['update'](_0x54c3c8,_0x21d7d9);}})[_0xc03f('0x28')](function(){if(_0x538ad3){return db[_0xc03f('0xa9')][_0xc03f('0xa5')](_0x54c3c8,_0x21d7d9);}})[_0xc03f('0x28')](function(){if(_0x538ad3){return db[_0xc03f('0xa8')]['update'](_0x54c3c8,_0x21d7d9);}})[_0xc03f('0x28')](function(){if(_0x538ad3){return db[_0xc03f('0xa9')][_0xc03f('0xa5')](_0x54c3c8,_0x21d7d9);}})[_0xc03f('0x28')](function(){if(_0x538ad3){return db[_0xc03f('0xaa')]['update'](_0x54c3c8,_0x21d7d9);}})[_0xc03f('0x28')](function(){if(_0x538ad3){return db[_0xc03f('0xab')][_0xc03f('0xa5')](_0x54c3c8,_0x21d7d9);}})[_0xc03f('0x28')](function(){if(_0x538ad3){return db[_0xc03f('0xac')][_0xc03f('0xa5')](_0x54c3c8,_0x21d7d9);}})[_0xc03f('0x28')](function(){if(_0x538ad3){return db[_0xc03f('0xad')]['update'](_0x54c3c8,_0x21d7d9);}})['then'](function(){if(_0x538ad3){return db['OpenchannelInteraction'][_0xc03f('0xa5')](_0x54c3c8,_0x21d7d9);}})[_0xc03f('0x28')](function(){if(_0x538ad3){return db['OpenchannelMessage'][_0xc03f('0xa5')](_0x54c3c8,_0x21d7d9);}})[_0xc03f('0x28')](function(){if(_0x538ad3){return db['CmHopperFinal'][_0xc03f('0xa5')](_0x54c3c8,_0x21d7d9);}})['then'](function(){if(_0x538ad3){return db[_0xc03f('0xae')][_0xc03f('0xa5')](_0x54c3c8,_0x21d7d9);}})[_0xc03f('0x28')](function(){if(_0x538ad3){return db[_0xc03f('0xaf')][_0xc03f('0xa5')](_0x54c3c8,_0x21d7d9);}})[_0xc03f('0x28')](function(){if(_0x538ad3){return db[_0xc03f('0xb0')]['update'](_0x54c3c8,_0x21d7d9);}})[_0xc03f('0x28')](function(){if(_0x538ad3){return db[_0xc03f('0xb1')][_0xc03f('0xa5')](_0x54c3c8,_0x21d7d9);}})[_0xc03f('0x28')](function(){if(_0x538ad3){return db[_0xc03f('0xb2')][_0xc03f('0xa5')](_0x54c3c8,_0x21d7d9);}})[_0xc03f('0x28')](function(){if(_0x538ad3){return db['MailQueueReport'][_0xc03f('0xa5')](_0x54c3c8,_0x21d7d9);}})[_0xc03f('0x28')](function(){if(_0x538ad3){return db[_0xc03f('0xb3')]['update'](_0x54c3c8,_0x21d7d9);}})[_0xc03f('0x28')](function(){if(_0x538ad3){return db['SmsQueueReport'][_0xc03f('0xa5')](_0x54c3c8,_0x21d7d9);}})[_0xc03f('0x28')](function(){if(_0x538ad3){return db[_0xc03f('0xb4')]['update'](_0x54c3c8,_0x21d7d9);}})['then'](function(){if(_0x538ad3){return db[_0xc03f('0xb5')]['update'](_0x54c3c8,_0x21d7d9);}})[_0xc03f('0x28')](function(){if(_0x538ad3){return db['WhatsappMessage']['update'](_0x54c3c8,_0x21d7d9);}})['then'](function(){if(_0x538ad3){return db[_0xc03f('0xb6')][_0xc03f('0xa5')](_0x54c3c8,_0x21d7d9);}})[_0xc03f('0x28')](function(){if(_0x538ad3){return db[_0xc03f('0x81')][_0xc03f('0x93')]({'where':{'id':[_0x45e848[_0xc03f('0x9c')]['to'],_0x45e848['body'][_0xc03f('0x42')]]}});}})['then'](function(){if(_0x538ad3){return _0x538ad3;}})[_0xc03f('0x28')](respondWithResult(_0x3d9179,null))[_0xc03f('0x92')](handleError(_0x3d9179,null));};exports[_0xc03f('0xa3')]=function(_0x3c4322,_0x5e81c6){return db[_0xc03f('0x81')]['describe']()[_0xc03f('0x28')](function(_0x145a34){if(_0x3c4322[_0xc03f('0x9c')][_0xc03f('0x9e')]&&_[_0xc03f('0x64')](_0x3c4322['body']['tags'])){if(_0x3c4322[_0xc03f('0x9c')][_0xc03f('0x9e')][_0xc03f('0x2f')]){_0x3c4322[_0xc03f('0x9c')][_0xc03f('0x9e')]=_0x3c4322[_0xc03f('0x9c')][_0xc03f('0x9e')]['join'](';')+';';}else{_0x3c4322[_0xc03f('0x9c')][_0xc03f('0x9e')]=null;}}else{_0x3c4322[_0xc03f('0x9c')]['tags']=null;}return db[_0xc03f('0x81')][_0xc03f('0xa3')](_0x3c4322[_0xc03f('0x9c')],{'fields':_[_0xc03f('0x2e')](_0x145a34),'raw':!![]});})[_0xc03f('0x28')](respondWithResult(_0x5e81c6,0xc9))['catch'](handleError(_0x5e81c6,null));};exports[_0xc03f('0xb7')]=function(_0x2bc857,_0x19faf8){var _0x1c86ab=[];var _0x2b34f5=0x0;var _0x158e46=0x0;var _0x3d2f7e=0x0;return db['CmContact'][_0xc03f('0x96')]()[_0xc03f('0x28')](function(_0x4ffeec){return BPromise[_0xc03f('0xb8')](_0x2bc857[_0xc03f('0x9c')],function(_0x24d959){var _0x258a56={'where':{'$or':[]},'defaults':_0x24d959,'fields':_[_0xc03f('0x2e')](_0x4ffeec),'raw':!![]};if(_0x24d959[_0xc03f('0xb9')]){for(var _0x5ba12a=0x0;_0x5ba12a<_0x24d959['duplicates'][_0xc03f('0x2f')];_0x5ba12a++){var _0x5a3e8e={};_0x5a3e8e[_0x24d959['duplicates'][_0x5ba12a]]=_0x24d959[_0x24d959[_0xc03f('0xb9')][_0x5ba12a]];_0x258a56['where']['$or'][_0xc03f('0x90')](_0x5a3e8e);}_0x258a56[_0xc03f('0x49')]['ListId']=_0x24d959[_0xc03f('0xba')];}return db[_0xc03f('0x81')]['findOrCreate'](_0x258a56)[_0xc03f('0xbb')](function(_0x177a1f,_0x4833ad){if(_0x4833ad){_0x2b34f5++;}else{_0x3d2f7e++;}})[_0xc03f('0x92')](function(_0x4a663b){console[_0xc03f('0x29')](_0x4a663b);_0x158e46++;});});})['then'](function(_0x14e2da){if(_0x14e2da){return{'success':_0x2b34f5,'failure':_0x158e46,'duplicates':_0x3d2f7e};}})[_0xc03f('0x28')](respondWithResult(_0x19faf8,0xc9))['catch'](handleError(_0x19faf8,null));};exports['show']=function(_0x447f98,_0x3c756f,_0x14030c){var _0x39a980;return db[_0xc03f('0x81')][_0xc03f('0x96')]()['then'](function(_0x156c87){return db[_0xc03f('0x81')]['find']({'where':{'id':_0x447f98['params']['id']},'include':[{'model':db['Tag'],'as':_0xc03f('0x8f'),'attributes':['id','name',_0xc03f('0x41')],'required':_0x447f98[_0xc03f('0x36')][_0xc03f('0x63')]?!![]:![]}],'attributes':_[_0xc03f('0x2e')](_0x156c87)});})[_0xc03f('0x28')](function(_0x1c2454){_0x39a980=_0x1c2454[_0xc03f('0x9d')]({'plain':!![]});var _0x24930d={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x1c2454&&_0x1c2454[_0xc03f('0xba')]){if(_0x1c2454[_0xc03f('0xba')]){_0x24930d[_0xc03f('0x49')][_0xc03f('0xbc')][_0xc03f('0x90')]({'ListId':{'$ne':_0x1c2454['ListId']}});}}return db[_0xc03f('0xbd')][_0xc03f('0xbe')](_0x24930d);})['then'](function(_0x37e340){return _[_0xc03f('0xbf')](_0x39a980,_[_0xc03f('0x7e')](_0x37e340,function(_0x1dcafc){return util[_0xc03f('0xc0')](_0xc03f('0xc1'),_0x1dcafc['id']);}));})['then'](handleEntityNotFound(_0x3c756f,null))['then'](respondWithResult(_0x3c756f,null))[_0xc03f('0x92')](handleError(_0x3c756f,null));};exports[_0xc03f('0xa5')]=function(_0x50bcc6,_0x243359){var _0x2494c1;if(_0x50bcc6['body']['id']){delete _0x50bcc6['body']['id'];}return db[_0xc03f('0x81')][_0xc03f('0x94')]({'where':{'id':_0x50bcc6[_0xc03f('0x95')]['id']}})['then'](handleEntityNotFound(_0x243359,null))[_0xc03f('0x28')](saveUpdates(_0x50bcc6[_0xc03f('0x9c')],null))[_0xc03f('0x28')](function(_0x4ab52b){_0x2494c1=_0x4ab52b;var _0x5221cc={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x4ab52b&&_0x4ab52b[_0xc03f('0xba')]){if(_0x4ab52b[_0xc03f('0xba')]){_0x5221cc[_0xc03f('0x49')]['$and'][_0xc03f('0x90')]({'ListId':{'$ne':_0x4ab52b['ListId']}});}}return db['CmCustomField']['findAll'](_0x5221cc);})[_0xc03f('0x28')](function(_0x4ab596){if(_0x4ab596){return _[_0xc03f('0xbf')](_[_0xc03f('0xc2')](_0x50bcc6['body'],function(_0x8b4db9,_0x479910){return _[_0xc03f('0x30')](_0x479910,_0xc03f('0x97'));}),_[_0xc03f('0x7e')](_0x4ab596,function(_0x36e1b9){return util[_0xc03f('0xc0')](_0xc03f('0xc1'),_0x36e1b9['id']);}));}})[_0xc03f('0x28')](function(_0x57d7fb){if(_0x57d7fb&&!_[_0xc03f('0x5e')](_0x57d7fb)){var _0x38bf82=squel['update']()[_0xc03f('0xc3')](_0xc03f('0xc4'))[_0xc03f('0xc5')](_0x57d7fb)[_0xc03f('0x49')](_0xc03f('0xc6'),_0x50bcc6[_0xc03f('0x95')]['id'])[_0xc03f('0xc7')]();return db['sequelize'][_0xc03f('0x36')](_0x38bf82[_0xc03f('0x5c')],{'replacements':_0x38bf82[_0xc03f('0x9a')]});}})[_0xc03f('0x28')](function(){if(_0x50bcc6['body'][_0xc03f('0xc8')]&&_0x2494c1){return db[_0xc03f('0xc9')][_0xc03f('0xa5')]({'phone':_0x50bcc6[_0xc03f('0x9c')][_0xc03f('0xc8')]},{'where':{'ContactId':_0x2494c1['id']}});}})[_0xc03f('0x28')](function(){return _0x2494c1;})[_0xc03f('0x28')](respondWithResult(_0x243359,null))['catch'](handleError(_0x243359,null));};exports['getTags']=function(_0x4c9895,_0x3ffe41,_0x49db6a){var _0x1e79ef={};var _0x3364d7={};var _0x24c373;var _0x1a598f;return db[_0xc03f('0x81')][_0xc03f('0x31')]({'where':{'id':_0x4c9895[_0xc03f('0x95')]['id']}})[_0xc03f('0x28')](handleEntityNotFound(_0x3ffe41,null))[_0xc03f('0x28')](function(_0x3ac48a){if(_0x3ac48a){_0x24c373=_0x3ac48a;_0x3364d7[_0xc03f('0x35')]=_[_0xc03f('0x2e')](db[_0xc03f('0x4f')][_0xc03f('0xca')]);_0x3364d7[_0xc03f('0x36')]=_[_0xc03f('0x2e')](_0x4c9895['query']);_0x3364d7[_0xc03f('0x37')]=_[_0xc03f('0x39')](_0x3364d7['model'],_0x3364d7['query']);_0x1e79ef[_0xc03f('0x38')]=_[_0xc03f('0x39')](_0x3364d7[_0xc03f('0x35')],qs[_0xc03f('0x3a')](_0x4c9895[_0xc03f('0x36')][_0xc03f('0x3a')]));_0x1e79ef['attributes']=_0x1e79ef[_0xc03f('0x38')][_0xc03f('0x2f')]?_0x1e79ef[_0xc03f('0x38')]:_0x3364d7['model'];_0x1e79ef[_0xc03f('0x73')]=qs[_0xc03f('0x3d')](_0x4c9895['query'][_0xc03f('0x3d')]);_0x1e79ef[_0xc03f('0x49')]=qs['filters'](_['pick'](_0x4c9895[_0xc03f('0x36')],_0x3364d7[_0xc03f('0x37')]));if(_0x4c9895[_0xc03f('0x36')][_0xc03f('0x65')]){_0x1e79ef[_0xc03f('0x49')]=_['merge'](_0x1e79ef[_0xc03f('0x49')],{'$or':_[_0xc03f('0x7e')](_0x1e79ef[_0xc03f('0x38')],function(_0x31477b){var _0x2f7153={};_0x2f7153[_0x31477b]={'$like':'%'+_0x4c9895['query']['filter']+'%'};return _0x2f7153;})});}_0x1e79ef=_['merge']({},_0x1e79ef,_0x4c9895[_0xc03f('0xcb')]);return _0x24c373[_0xc03f('0xcc')](_0x1e79ef);}})[_0xc03f('0x28')](function(_0x2f4391){if(_0x2f4391){_0x1a598f=_0x2f4391['length'];if(!_0x4c9895[_0xc03f('0x36')][_0xc03f('0x3b')]('nolimit')){_0x1e79ef['limit']=qs['limit'](_0x4c9895['query'][_0xc03f('0x21')]);_0x1e79ef['offset']=qs[_0xc03f('0x1e')](_0x4c9895['query'][_0xc03f('0x1e')]);}return _0x24c373['getTags'](_0x1e79ef);}})[_0xc03f('0x28')](function(_0x7f8774){if(_0x7f8774){return _0x7f8774?{'count':_0x1a598f,'rows':_0x7f8774}:null;}})['then'](respondWithResult(_0x3ffe41,null))[_0xc03f('0x92')](handleError(_0x3ffe41,null));};exports[_0xc03f('0xcd')]=function(_0x4f944b,_0xdeb636,_0xd120be){if(_0x4f944b[_0xc03f('0x9c')]['id']){delete _0x4f944b[_0xc03f('0x9c')]['id'];}return db[_0xc03f('0x81')][_0xc03f('0x31')]({'where':{'id':_0x4f944b[_0xc03f('0x95')]['id']}})[_0xc03f('0x28')](handleEntityNotFound(_0xdeb636,null))[_0xc03f('0x28')](function(_0xeb7282){if(_0xeb7282){return _0xeb7282['setTags'](_0x4f944b[_0xc03f('0x9c')][_0xc03f('0xce')]||[]);}return null;})[_0xc03f('0x28')](respondWithResult(_0xdeb636,null))['catch'](handleError(_0xdeb636,null));};exports[_0xc03f('0xcf')]=function(_0x37e167,_0x3e75e6,_0x3afbf0){var _0x4e4cce={'raw':![],'where':{}};var _0x35fda6={};var _0x21431e={'count':0x0,'rows':[]};return db[_0xc03f('0x81')][_0xc03f('0x31')]({'where':{'id':_0x37e167[_0xc03f('0x95')]['id']}})[_0xc03f('0x28')](handleEntityNotFound(_0x3e75e6,null))[_0xc03f('0x28')](function(_0xd7f085){if(_0xd7f085){_0x35fda6[_0xc03f('0x35')]=_[_0xc03f('0x2e')](db[_0xc03f('0xc9')][_0xc03f('0xca')]);_0x35fda6[_0xc03f('0x36')]=_[_0xc03f('0x2e')](_0x37e167[_0xc03f('0x36')]);_0x35fda6['filters']=_[_0xc03f('0x39')](_0x35fda6[_0xc03f('0x35')],_0x35fda6[_0xc03f('0x36')]);_0x4e4cce[_0xc03f('0x38')]=_['intersection'](_0x35fda6[_0xc03f('0x35')],qs['fields'](_0x37e167['query']['fields']));_0x4e4cce[_0xc03f('0x38')]=_0x4e4cce[_0xc03f('0x38')][_0xc03f('0x2f')]?_0x4e4cce['attributes']:_0x35fda6[_0xc03f('0x35')];if(!_0x37e167[_0xc03f('0x36')][_0xc03f('0x3b')](_0xc03f('0x3c'))){_0x4e4cce[_0xc03f('0x21')]=qs[_0xc03f('0x21')](_0x37e167[_0xc03f('0x36')]['limit']);_0x4e4cce[_0xc03f('0x1e')]=qs[_0xc03f('0x1e')](_0x37e167[_0xc03f('0x36')][_0xc03f('0x1e')]);}_0x4e4cce[_0xc03f('0x73')]=qs[_0xc03f('0x3d')](_0x37e167[_0xc03f('0x36')][_0xc03f('0x3d')]);_0x4e4cce[_0xc03f('0x49')]=qs[_0xc03f('0x37')](_[_0xc03f('0x3e')](_0x37e167['query'],_0x35fda6[_0xc03f('0x37')]));_0x4e4cce[_0xc03f('0x49')][_0xc03f('0xd0')]=_0xd7f085['id'];if(_0x37e167[_0xc03f('0x36')][_0xc03f('0x65')]){_0x4e4cce['where']=_[_0xc03f('0x9b')](_0x4e4cce[_0xc03f('0x49')],{'$or':_[_0xc03f('0x7e')](_0x4e4cce[_0xc03f('0x38')],function(_0x313475){var _0x4832c4={};_0x4832c4[_0x313475]={'$like':'%'+_0x37e167[_0xc03f('0x36')][_0xc03f('0x65')]+'%'};return _0x4832c4;})});}_0x4e4cce=_['merge']({},_0x4e4cce,_0x37e167[_0xc03f('0xcb')]);return db['CmHopper'][_0xc03f('0x20')]({'where':_0x4e4cce[_0xc03f('0x49')]})[_0xc03f('0x28')](function(_0x14f863){_0x21431e[_0xc03f('0x20')]=_0x14f863;if(_0x37e167[_0xc03f('0x36')][_0xc03f('0xd1')]){_0x4e4cce[_0xc03f('0xd2')]=[{'all':!![]}];}return db['CmHopper'][_0xc03f('0xbe')](_0x4e4cce);})[_0xc03f('0x28')](function(_0x38032d){_0x21431e[_0xc03f('0x91')]=_0x38032d;return _0x21431e;});}})['then'](respondWithFilteredResult(_0x3e75e6,_0x4e4cce))[_0xc03f('0x92')](handleError(_0x3e75e6,null));};exports[_0xc03f('0xd3')]=function(_0x1811bd,_0x531f73,_0x26c417){var _0x2444a8={'raw':!![],'where':{}};var _0x35321f={};var _0x2e1704={'count':0x0,'rows':[]};return db['CmContact'][_0xc03f('0x31')]({'where':{'id':_0x1811bd[_0xc03f('0x95')]['id']}})[_0xc03f('0x28')](handleEntityNotFound(_0x531f73,null))[_0xc03f('0x28')](function(_0x13e2e6){if(_0x13e2e6){_0x35321f[_0xc03f('0x35')]=_[_0xc03f('0x2e')](db[_0xc03f('0xae')][_0xc03f('0xca')]);_0x35321f[_0xc03f('0x36')]=_[_0xc03f('0x2e')](_0x1811bd[_0xc03f('0x36')]);_0x35321f[_0xc03f('0x37')]=_[_0xc03f('0x39')](_0x35321f[_0xc03f('0x35')],_0x35321f['query']);_0x2444a8[_0xc03f('0x38')]=_[_0xc03f('0x39')](_0x35321f['model'],qs['fields'](_0x1811bd['query'][_0xc03f('0x3a')]));_0x2444a8[_0xc03f('0x38')]=_0x2444a8['attributes'][_0xc03f('0x2f')]?_0x2444a8[_0xc03f('0x38')]:_0x35321f['model'];if(!_0x1811bd['query']['hasOwnProperty'](_0xc03f('0x3c'))){_0x2444a8[_0xc03f('0x21')]=qs[_0xc03f('0x21')](_0x1811bd['query'][_0xc03f('0x21')]);_0x2444a8[_0xc03f('0x1e')]=qs['offset'](_0x1811bd[_0xc03f('0x36')][_0xc03f('0x1e')]);}_0x2444a8[_0xc03f('0x73')]=qs[_0xc03f('0x3d')](_0x1811bd[_0xc03f('0x36')][_0xc03f('0x3d')]);_0x2444a8['where']=qs[_0xc03f('0x37')](_[_0xc03f('0x3e')](_0x1811bd['query'],_0x35321f[_0xc03f('0x37')]));_0x2444a8['where'][_0xc03f('0xd0')]=_0x13e2e6['id'];if(_0x1811bd['query']['filter']){_0x2444a8[_0xc03f('0x49')]=_[_0xc03f('0x9b')](_0x2444a8[_0xc03f('0x49')],{'$or':_[_0xc03f('0x7e')](_0x2444a8[_0xc03f('0x38')],function(_0x59cf48){var _0x2c1c9e={};_0x2c1c9e[_0x59cf48]={'$like':'%'+_0x1811bd[_0xc03f('0x36')][_0xc03f('0x65')]+'%'};return _0x2c1c9e;})});}_0x2444a8=_[_0xc03f('0x9b')]({},_0x2444a8,_0x1811bd['options']);return db[_0xc03f('0xae')][_0xc03f('0x20')]({'where':_0x2444a8[_0xc03f('0x49')]})['then'](function(_0x24caf8){_0x2e1704[_0xc03f('0x20')]=_0x24caf8;if(_0x1811bd[_0xc03f('0x36')][_0xc03f('0xd1')]){_0x2444a8[_0xc03f('0xd2')]=[{'all':!![]}];}return db[_0xc03f('0xae')][_0xc03f('0xbe')](_0x2444a8);})[_0xc03f('0x28')](function(_0x4cf142){_0x2e1704[_0xc03f('0x91')]=_0x4cf142;return _0x2e1704;});}})[_0xc03f('0x28')](respondWithFilteredResult(_0x531f73,_0x2444a8))[_0xc03f('0x92')](handleError(_0x531f73,null));};exports[_0xc03f('0xd4')]=function(_0x21dcc2,_0x1cafc5,_0x292627){var _0x2a9f2f={'raw':!![],'where':{}};var _0x2c6e5={};var _0x586d68={'count':0x0,'rows':[]};return db[_0xc03f('0x81')]['findOne']({'where':{'id':_0x21dcc2[_0xc03f('0x95')]['id']}})[_0xc03f('0x28')](handleEntityNotFound(_0x1cafc5,null))[_0xc03f('0x28')](function(_0x15e14f){if(_0x15e14f){_0x2c6e5[_0xc03f('0x35')]=_[_0xc03f('0x2e')](db['CmHopperFinal'][_0xc03f('0xca')]);_0x2c6e5[_0xc03f('0x36')]=_[_0xc03f('0x2e')](_0x21dcc2[_0xc03f('0x36')]);_0x2c6e5[_0xc03f('0x37')]=_[_0xc03f('0x39')](_0x2c6e5[_0xc03f('0x35')],_0x2c6e5[_0xc03f('0x36')]);_0x2a9f2f[_0xc03f('0x38')]=_[_0xc03f('0x39')](_0x2c6e5[_0xc03f('0x35')],qs['fields'](_0x21dcc2[_0xc03f('0x36')]['fields']));_0x2a9f2f[_0xc03f('0x38')]=_0x2a9f2f[_0xc03f('0x38')][_0xc03f('0x2f')]?_0x2a9f2f[_0xc03f('0x38')]:_0x2c6e5['model'];if(!_0x21dcc2['query']['hasOwnProperty'](_0xc03f('0x3c'))){_0x2a9f2f['limit']=qs['limit'](_0x21dcc2[_0xc03f('0x36')][_0xc03f('0x21')]);_0x2a9f2f[_0xc03f('0x1e')]=qs['offset'](_0x21dcc2[_0xc03f('0x36')][_0xc03f('0x1e')]);}_0x2a9f2f[_0xc03f('0x73')]=qs[_0xc03f('0x3d')](_0x21dcc2[_0xc03f('0x36')][_0xc03f('0x3d')]);_0x2a9f2f[_0xc03f('0x49')]=qs['filters'](_[_0xc03f('0x3e')](_0x21dcc2[_0xc03f('0x36')],_0x2c6e5[_0xc03f('0x37')]));_0x2a9f2f[_0xc03f('0x49')][_0xc03f('0xd0')]=_0x15e14f['id'];if(_0x21dcc2[_0xc03f('0x36')]['filter']){_0x2a9f2f[_0xc03f('0x49')]=_[_0xc03f('0x9b')](_0x2a9f2f['where'],{'$or':_[_0xc03f('0x7e')](_0x2a9f2f['attributes'],function(_0x46593f){var _0x1fcdb1={};_0x1fcdb1[_0x46593f]={'$like':'%'+_0x21dcc2[_0xc03f('0x36')][_0xc03f('0x65')]+'%'};return _0x1fcdb1;})});}_0x2a9f2f=_[_0xc03f('0x9b')]({},_0x2a9f2f,_0x21dcc2[_0xc03f('0xcb')]);return db[_0xc03f('0xd5')]['count']({'where':_0x2a9f2f[_0xc03f('0x49')]})[_0xc03f('0x28')](function(_0x352eef){_0x586d68[_0xc03f('0x20')]=_0x352eef;if(_0x21dcc2[_0xc03f('0x36')][_0xc03f('0xd1')]){_0x2a9f2f['include']=[{'all':!![]}];}return db[_0xc03f('0xd5')][_0xc03f('0xbe')](_0x2a9f2f);})[_0xc03f('0x28')](function(_0x35c067){_0x586d68[_0xc03f('0x91')]=_0x35c067;return _0x586d68;});}})[_0xc03f('0x28')](respondWithFilteredResult(_0x1cafc5,_0x2a9f2f))[_0xc03f('0x92')](handleError(_0x1cafc5,null));};exports[_0xc03f('0xd6')]=function(_0x5b228e,_0x41e412,_0x410ba1){var _0x2a87f0={'raw':!![],'where':{}};var _0x2ae50f={};var _0x8b176f={'count':0x0,'rows':[]};return db[_0xc03f('0x81')]['findOne']({'where':{'id':_0x5b228e[_0xc03f('0x95')]['id']}})[_0xc03f('0x28')](handleEntityNotFound(_0x41e412,null))['then'](function(_0x3a167f){if(_0x3a167f){_0x2ae50f[_0xc03f('0x35')]=_['keys'](db[_0xc03f('0xb4')]['rawAttributes']);_0x2ae50f[_0xc03f('0x36')]=_['keys'](_0x5b228e[_0xc03f('0x36')]);_0x2ae50f['filters']=_['intersection'](_0x2ae50f[_0xc03f('0x35')],_0x2ae50f[_0xc03f('0x36')]);_0x2a87f0[_0xc03f('0x38')]=_[_0xc03f('0x39')](_0x2ae50f[_0xc03f('0x35')],qs[_0xc03f('0x3a')](_0x5b228e[_0xc03f('0x36')][_0xc03f('0x3a')]));_0x2a87f0[_0xc03f('0x38')]=_0x2a87f0['attributes'][_0xc03f('0x2f')]?_0x2a87f0[_0xc03f('0x38')]:_0x2ae50f[_0xc03f('0x35')];if(!_0x5b228e[_0xc03f('0x36')][_0xc03f('0x3b')](_0xc03f('0x3c'))){_0x2a87f0[_0xc03f('0x21')]=qs['limit'](_0x5b228e[_0xc03f('0x36')][_0xc03f('0x21')]);_0x2a87f0[_0xc03f('0x1e')]=qs[_0xc03f('0x1e')](_0x5b228e[_0xc03f('0x36')]['offset']);}_0x2a87f0[_0xc03f('0x73')]=qs[_0xc03f('0x3d')](_0x5b228e[_0xc03f('0x36')][_0xc03f('0x3d')]);_0x2a87f0[_0xc03f('0x49')]=qs['filters'](_[_0xc03f('0x3e')](_0x5b228e['query'],_0x2ae50f[_0xc03f('0x37')]));_0x2a87f0[_0xc03f('0x49')]['ContactId']=_0x3a167f['id'];if(_0x5b228e['query']['filter']){_0x2a87f0[_0xc03f('0x49')]=_['merge'](_0x2a87f0[_0xc03f('0x49')],{'$or':_['map'](_0x2a87f0['attributes'],function(_0x2f34f3){var _0x14b6a4={};_0x14b6a4[_0x2f34f3]={'$like':'%'+_0x5b228e[_0xc03f('0x36')][_0xc03f('0x65')]+'%'};return _0x14b6a4;})});}_0x2a87f0=_[_0xc03f('0x9b')]({},_0x2a87f0,_0x5b228e['options']);return db[_0xc03f('0xb4')][_0xc03f('0x20')]({'where':_0x2a87f0[_0xc03f('0x49')]})['then'](function(_0x2096f8){_0x8b176f[_0xc03f('0x20')]=_0x2096f8;if(_0x5b228e[_0xc03f('0x36')]['includeAll']){_0x2a87f0[_0xc03f('0xd2')]=[{'all':!![]}];}return db[_0xc03f('0xb4')][_0xc03f('0xbe')](_0x2a87f0);})[_0xc03f('0x28')](function(_0x51dc19){_0x8b176f[_0xc03f('0x91')]=_0x51dc19;return _0x8b176f;});}})['then'](respondWithFilteredResult(_0x41e412,_0x2a87f0))[_0xc03f('0x92')](handleError(_0x41e412,null));};exports[_0xc03f('0xd7')]=function(_0x205b67,_0x3daeea,_0xa70023){try{if(!_0x205b67[_0xc03f('0x9c')]['ListId']){throw new Error(_0xc03f('0xd8'));}if(!_0x205b67[_0xc03f('0x9c')][_0xc03f('0xd9')]){throw new Error(_0xc03f('0xda'));}if(!_0x205b67['body'][_0xc03f('0xdb')]){throw new Error(_0xc03f('0xdc'));}if(!_0x205b67[_0xc03f('0x9c')][_0xc03f('0xdd')]){throw new Error(_0xc03f('0xde'));}var _0x1a075d=_0x205b67[_0xc03f('0x9c')][_0xc03f('0xd9')]['split'](',');var _0x49a821=_0x205b67[_0xc03f('0x9c')]['binding_values']['split'](',');if(!_0x1a075d[_0xc03f('0x2f')]||!_0x49a821[_0xc03f('0x2f')]||_0x1a075d[_0xc03f('0x2f')]!==_0x49a821[_0xc03f('0x2f')]){throw new Error(_0xc03f('0xdf'));}_0x205b67[_0xc03f('0x9c')]['fields']=_[_0xc03f('0xe0')](_0x1a075d,_0x49a821);if(!_0x205b67[_0xc03f('0x9c')][_0xc03f('0x3a')][_0xc03f('0xc8')]){throw new Error(_0xc03f('0xe1'));}if(!_0x205b67[_0xc03f('0x9c')][_0xc03f('0x3a')][_0xc03f('0xe2')]){throw new Error(_0xc03f('0xe3'));}var _0x12380b=path[_0xc03f('0x9f')](config[_0xc03f('0xe4')],'server/files/tmp',_0x205b67[_0xc03f('0xe5')][_0xc03f('0xe6')]);fs[_0xc03f('0xe7')](_0x12380b,parseInt(_0xc03f('0xe8'),0x8));var _0x27154f=require('child_process')[_0xc03f('0xe9')](path[_0xc03f('0x9f')](__dirname,'../../components/import/cm/csv'),[_0x12380b,_0x205b67[_0xc03f('0x9c')][_0xc03f('0xd9')],_0x205b67[_0xc03f('0x9c')][_0xc03f('0xdb')],_0x205b67[_0xc03f('0x9c')]['ListId'],_0x205b67['body'][_0xc03f('0xea')],_0x205b67[_0xc03f('0x9c')][_0xc03f('0xb9')],_0x205b67[_0xc03f('0x9c')][_0xc03f('0xdd')]]);return _0x3daeea['status'](0xc8)['json']({'message':_0xc03f('0xeb'),'pid':_0x27154f['pid']});}catch(_0x2d9a30){return _0x3daeea[_0xc03f('0x1c')](0x1f4)['send'](_0x2d9a30);}};exports['upload']=function(_0x37d789,_0x3a4dfe,_0x1a791d){var _0x4a03ad=fs[_0xc03f('0xec')](_0x37d789['file']['path']);Papa[_0xc03f('0xed')](_0x4a03ad,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x4555ad){return _0x3a4dfe['status'](0xc8)[_0xc03f('0x24')]({'file':_0x37d789[_0xc03f('0xe5')],'fields':_0x4555ad[_0xc03f('0xee')][_0xc03f('0x3a')]});}});};exports[_0xc03f('0xef')]=function(_0x4731f2,_0x7c461d,_0x16e28f){return db[_0xc03f('0x55')][_0xc03f('0xbe')]({'raw':!![],'attributes':['id'],'where':{'role':'agent'}})[_0xc03f('0x28')](function(_0x4aed55){var _0x586133=![];if(!_0x4731f2[_0xc03f('0x9c')]['ListId']){throw new Error(_0xc03f('0xd8'));}if(!_0x4731f2[_0xc03f('0x9c')][_0xc03f('0xf0')][_0xc03f('0xc8')]){throw new Error(_0xc03f('0xe1'));}if(!_0x4731f2[_0xc03f('0x9c')][_0xc03f('0xf0')][_0xc03f('0xe2')]){throw new Error(_0xc03f('0xe3'));}if(!_0x4731f2['body'][_0xc03f('0xdd')]){throw new Error(_0xc03f('0xde'));}var _0x5bc6b7=require('child_process')[_0xc03f('0xe9')](path['join'](__dirname,'../../components/import/cm/csv2'),[_0x4731f2[_0xc03f('0x95')]['id'],JSON[_0xc03f('0xf1')](_0x4731f2[_0xc03f('0x9c')]),JSON[_0xc03f('0xf1')](_0x4aed55)]);_0x5bc6b7['on']('message',function(_0x345c79){_0x586133=!![];return _0x7c461d[_0xc03f('0x1c')](0xc8)[_0xc03f('0x24')]({'message':_0xc03f('0xf2'),'pid':_0x5bc6b7[_0xc03f('0xf3')]});});_0x5bc6b7['on'](_0xc03f('0xf4'),function(_0xd35e21){if(_0xd35e21&&!_0x586133){return _0x7c461d['status'](0x1f4)[_0xc03f('0x24')]({'message':_0xc03f('0xf5'),'pid':_0x5bc6b7[_0xc03f('0xf3')]});}});})[_0xc03f('0x92')](handleError(_0x7c461d,null));};exports['getJourney']=function(_0x2bc73c,_0x34e05c){var _0x1f024f=[_0xc03f('0xf6'),_0xc03f('0xf7'),_0xc03f('0xf8'),_0xc03f('0xf9'),'fax',_0xc03f('0xfa'),_0xc03f('0xfb')];var _0x266d83={'offset':0x0,'order':qs[_0xc03f('0x3d')](_0xc03f('0xfc'))},_0x241dc5={'count':0x0,'rows':[]};Promise['resolve']()['then'](function(){if(_0x2bc73c[_0xc03f('0x36')][_0xc03f('0xfd')]){if(!_[_0xc03f('0xfe')](_0x1f024f,_0x2bc73c[_0xc03f('0x36')][_0xc03f('0xfd')][_0xc03f('0xff')]())){throw new Error(_0xc03f('0x100'));}_0x1f024f=[_0x2bc73c[_0xc03f('0x36')]['channel'][_0xc03f('0xff')]()];}if(_0x2bc73c[_0xc03f('0x36')][_0xc03f('0x101')]){try{var _0x2c7489=JSON['parse'](_0x2bc73c[_0xc03f('0x36')][_0xc03f('0x101')]);if(!moment(_0x2c7489[_0xc03f('0x42')])[_0xc03f('0x102')]()){throw new Error(_0xc03f('0x103'));}if(!moment(_0x2c7489['to'])[_0xc03f('0x102')]()){throw new Error(_0xc03f('0x104'));}}catch(_0x37a092){throw new Error(_0xc03f('0x105'));}}if(!_0x2bc73c[_0xc03f('0x36')][_0xc03f('0x3b')](_0xc03f('0x3c'))){_0x266d83[_0xc03f('0x21')]=qs['limit'](_0x2bc73c['query'][_0xc03f('0x21')]||0xa);_0x266d83[_0xc03f('0x1e')]=qs[_0xc03f('0x1e')](_0x2bc73c[_0xc03f('0x36')]['offset']);}var _0x10f21d=_0x1f024f[_0xc03f('0x7e')](function(_0x3381c6){if(_0x3381c6===_0xc03f('0xfb')){var _0x5366e1={'attributes':['id',_0xc03f('0x106'),'type',_0xc03f('0x107'),'destination',_0xc03f('0x108'),_0xc03f('0x109'),_0xc03f('0x10a'),'duration',_0xc03f('0x10b'),_0xc03f('0x10c'),_0xc03f('0x10d'),_0xc03f('0x10e'),'userThirdDisposition',_0xc03f('0x10f')],'where':{'ContactId':_0x2bc73c[_0xc03f('0x95')]['id']},'include':[{'model':db[_0xc03f('0x55')],'as':_0xc03f('0x55'),'attributes':['id',_0xc03f('0x2b'),_0xc03f('0x110'),_0xc03f('0x111')]}],'order':[[_0xc03f('0x10c'),_0xc03f('0x74')]]};if(_0x2bc73c[_0xc03f('0x36')][_0xc03f('0x101')]){_0x5366e1['where'][_0xc03f('0x10c')]={'$gte':_0x2c7489[_0xc03f('0x42')],'$lte':_0x2c7489['to']};}return db[_0xc03f('0xb0')]['findAndCountAll'](_0x5366e1)[_0xc03f('0x28')](function(_0x588fae){_0x241dc5['count']+=_0x588fae[_0xc03f('0x20')];return _[_0xc03f('0x7e')](_0x588fae[_0xc03f('0x91')],function(_0x1dd676){var _0x31d2f0=_0x1dd676['get']({'plain':!![]});_0x31d2f0[_0xc03f('0xfd')]=_0x3381c6;if(_0x31d2f0[_0xc03f('0x55')]){_0x31d2f0[_0xc03f('0x55')]={'id':_0x31d2f0[_0xc03f('0x55')]['id'],'name':_0x31d2f0['User'][_0xc03f('0x2b')],'fullname':_0x31d2f0[_0xc03f('0x55')][_0xc03f('0x110')],'alias':_0x31d2f0['User'][_0xc03f('0x111')]};}return _0x31d2f0;});});}else{var _0x2eea0a=_[_0xc03f('0x112')](_0x3381c6)+(_0x3381c6==='chat'?_0xc03f('0x113'):'Account');var _0x1672b9={'attributes':['id','closed','closedAt',_0xc03f('0x10c'),_0xc03f('0x10b'),_0xc03f('0x114'),'secondDisposition','thirdDisposition',_0xc03f('0x10f'),_0x2eea0a+'Id'],'where':{'ContactId':_0x2bc73c[_0xc03f('0x95')]['id']},'include':[{'model':db[_0x2eea0a],'as':_0xc03f('0x115'),'attributes':['id','name','key']},{'model':db[_0xc03f('0x55')],'as':'Owner','attributes':['id','name',_0xc03f('0x110')]},{'model':db[_0xc03f('0x4f')],'as':'Tags','attributes':['id','name','color'],'through':{'attributes':[]}}],'order':[[_0xc03f('0x10c'),_0xc03f('0x74')]]};if(_0x2bc73c[_0xc03f('0x36')][_0xc03f('0x101')]){_0x1672b9[_0xc03f('0x49')]['createdAt']={'$gte':_0x2c7489['from'],'$lte':_0x2c7489['to']};}switch(_0x3381c6){case _0xc03f('0xf7'):_0x1672b9[_0xc03f('0x38')][_0xc03f('0x90')](_0xc03f('0x116'),_0xc03f('0x117'),_0xc03f('0x118'),_0xc03f('0x119'),_0xc03f('0x11a'),'ratingMessage',_0xc03f('0x11b'),'ratingValue',_0xc03f('0x11c'));break;case'mail':_0x1672b9[_0xc03f('0x38')][_0xc03f('0x90')](_0xc03f('0x11d'),_0xc03f('0x11e'));break;case _0xc03f('0xf9'):_0x1672b9[_0xc03f('0x38')][_0xc03f('0x90')]('externalUrl','threadId');break;}return db[_[_0xc03f('0x112')](_0x3381c6)+_0xc03f('0x11f')][_0xc03f('0x120')](_0x1672b9)[_0xc03f('0x28')](function(_0x230071){_0x241dc5[_0xc03f('0x20')]+=_0x230071[_0xc03f('0x20')];return _['map'](_0x230071[_0xc03f('0x91')],function(_0x133e94){var _0x26464e=_0x133e94[_0xc03f('0x9d')]({'plain':!![]});_0x26464e[_0xc03f('0xfd')]=_0x3381c6;if(_0x26464e['Owner']){_0x26464e[_0xc03f('0x121')]={'id':_0x26464e[_0xc03f('0x121')]['id'],'name':_0x26464e[_0xc03f('0x121')]['name'],'fullname':_0x26464e['Owner']['fullname']};}return _0x26464e;});});}});return Promise[_0xc03f('0x33')](_0x10f21d);})['then'](function(_0x3910fd){return _(_0x3910fd)[_0xc03f('0x122')]()[_0xc03f('0x123')](_0xc03f('0x10c'))['reverse']()[_0xc03f('0x50')]();})['then'](function(_0x37c616){_0x241dc5['rows']=_0x266d83[_0xc03f('0x21')]?_0x37c616[_0xc03f('0x124')](_0x266d83[_0xc03f('0x1e')],_0x266d83[_0xc03f('0x1e')]+_0x266d83[_0xc03f('0x21')]):_0x37c616;return _0x241dc5;})[_0xc03f('0x28')](respondWithFilteredResult(_0x34e05c,_0x266d83))[_0xc03f('0x92')](handleError(_0x34e05c,null));};
\ No newline at end of file
index 1a5596e..5637543 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x070f=['events','setMaxListeners','save','remove','emit','hasOwnProperty','hook','exports'];(function(_0x59a549,_0x2fe2bb){var _0x12adbe=function(_0x2ccd1e){while(--_0x2ccd1e){_0x59a549['push'](_0x59a549['shift']());}};_0x12adbe(++_0x2fe2bb);}(_0x070f,0x88));var _0xf070=function(_0x21ede2,_0x37fe06){_0x21ede2=_0x21ede2-0x0;var _0x4a49c0=_0x070f[_0x21ede2];return _0x4a49c0;};'use strict';var EventEmitter=require(_0xf070('0x0'));var CmContact=require('../../mysqldb')['db']['CmContact'];var CmContactEvents=new EventEmitter();CmContactEvents[_0xf070('0x1')](0x0);var events={'afterCreate':_0xf070('0x2'),'afterUpdate':'update','afterDestroy':_0xf070('0x3')};function emitEvent(_0x374955){return function(_0x45864e,_0x14b503,_0x10d21b){CmContactEvents['emit'](_0x374955+':'+_0x45864e['id'],_0x45864e);CmContactEvents[_0xf070('0x4')](_0x374955,_0x45864e);_0x10d21b(null);};}for(var e in events){if(events[_0xf070('0x5')](e)){var event=events[e];CmContact[_0xf070('0x6')](e,emitEvent(event));}}module[_0xf070('0x7')]=CmContactEvents;
\ No newline at end of file
+var _0xe692=['events','CmContact','save','update','remove','emit','hasOwnProperty'];(function(_0x2373ec,_0x8484d4){var _0x485332=function(_0x4d6ba9){while(--_0x4d6ba9){_0x2373ec['push'](_0x2373ec['shift']());}};_0x485332(++_0x8484d4);}(_0xe692,0x181));var _0x2e69=function(_0x2d34d6,_0x397ff9){_0x2d34d6=_0x2d34d6-0x0;var _0x1d3d12=_0xe692[_0x2d34d6];return _0x1d3d12;};'use strict';var EventEmitter=require(_0x2e69('0x0'));var CmContact=require('../../mysqldb')['db'][_0x2e69('0x1')];var CmContactEvents=new EventEmitter();CmContactEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x2e69('0x2'),'afterUpdate':_0x2e69('0x3'),'afterDestroy':_0x2e69('0x4')};function emitEvent(_0x1c42fb){return function(_0x1e6f65,_0x5905f9,_0x3f35e2){CmContactEvents[_0x2e69('0x5')](_0x1c42fb+':'+_0x1e6f65['id'],_0x1e6f65);CmContactEvents[_0x2e69('0x5')](_0x1c42fb,_0x1e6f65);_0x3f35e2(null);};}for(var e in events){if(events[_0x2e69('0x6')](e)){var event=events[e];CmContact['hook'](e,emitEvent(event));}}module['exports']=CmContactEvents;
\ No newline at end of file
index b714268..bcc6280 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb453=['lodash','util','moment','bluebird','request-promise','path','./cmContact.attributes','exports','define','CmContact','cm_contacts','phone','fti_cm_contacts','firstName','lastName','email','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','models','get','error','cmContact','afterCreate','inspect','CmHopper','findOne','then','isNil','cmContact,\x20afterCreate\x20','ListId','priority','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','catch','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','create','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','CmHopperFinal','VoiceQueue','findAll','outbound','dialCheckDuplicateType','CmList','Lists','length','onlyIfOpen','BlackLists','CmHopperBlack','message','Campaign','always','cmContact,\x20%s,\x20%s','List\x20not\x20found','isEmpty','destroy','ContactId','VoiceQueueId','CampaignId','push','all','info','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]'];(function(_0x3037c1,_0x39f96c){var _0x4ddf9e=function(_0x32aad2){while(--_0x32aad2){_0x3037c1['push'](_0x3037c1['shift']());}};_0x4ddf9e(++_0x39f96c);}(_0xb453,0x198));var _0x3b45=function(_0xfc8747,_0x587118){_0xfc8747=_0xfc8747-0x0;var _0x233535=_0xb453[_0xfc8747];return _0x233535;};'use strict';var _=require(_0x3b45('0x0'));var util=require(_0x3b45('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x3b45('0x2'));var BPromise=require(_0x3b45('0x3'));var rp=require(_0x3b45('0x4'));var fs=require('fs');var path=require(_0x3b45('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x3b45('0x6'));module[_0x3b45('0x7')]=function(_0x241a14,_0x3842fd){return _0x241a14[_0x3b45('0x8')](_0x3b45('0x9'),attributes,{'tableName':_0x3b45('0xa'),'paranoid':!![],'indexes':[{'name':_0x3b45('0xb'),'fields':[_0x3b45('0xb')]},{'name':_0x3b45('0xc'),'fields':[_0x3b45('0xd'),_0x3b45('0xe'),_0x3b45('0xb'),'mobile','fax',_0x3b45('0xf')],'type':_0x3b45('0x10')}],'timestamps':!![],'charset':_0x3b45('0x11'),'collate':_0x3b45('0x12'),'hooks':{'afterCreate':function(_0x3e185b,_0x4aadab,_0x5a3510){var _0x24b7c7=_0x241a14[_0x3b45('0x13')];var _0x55a50d=_0x3e185b[_0x3b45('0x14')]({'plain':!![]});function _0x42a25a(){return function(_0x2a50ce){logger[_0x3b45('0x15')](_0x3b45('0x16'),_0x3b45('0x17'),util[_0x3b45('0x18')](_0x2a50ce,{'showHidden':![],'depth':null}));};}var _0x36e7fa=function(_0x473cfb){return new BPromise(function(_0x51e84f,_0x138198){_0x24b7c7[_0x3b45('0x19')][_0x3b45('0x1a')]({'where':{'phone':_0x55a50d[_0x3b45('0xb')],'VoiceQueueId':_0x473cfb['id']}})[_0x3b45('0x1b')](function(_0x259e95){if(!_[_0x3b45('0x1c')](_0x259e95)){throw new Error(_0x3b45('0x1d')+_0x55a50d[_0x3b45('0xb')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x473cfb['id']);}return _0x24b7c7[_0x3b45('0x19')]['create']({'phone':_0x55a50d[_0x3b45('0xb')],'ContactId':_0x55a50d['id'],'ListId':_0x55a50d[_0x3b45('0x1e')],'priority':_0x55a50d[_0x3b45('0x1f')]?_0x55a50d[_0x3b45('0x1f')]:0x2,'scheduledat':_0x55a50d[_0x3b45('0x20')]?_0x55a50d[_0x3b45('0x20')]:moment()[_0x3b45('0x21')](_0x3b45('0x22')),'callback':_0x55a50d[_0x3b45('0x23')]?!![]:![],'callbackuniqueid':_0x55a50d[_0x3b45('0x23')]?_0x55a50d['callbackUniqueid']:undefined,'callbackat':_0x55a50d[_0x3b45('0x23')]?moment()[_0x3b45('0x21')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x473cfb['id']});})[_0x3b45('0x24')](function(_0x45b7cf){_0x138198(_0x45b7cf);});});};var _0x48e9e1=function(_0x1a4583){return new BPromise(function(_0x8161e7,_0x5d7321){_0x24b7c7[_0x3b45('0x19')][_0x3b45('0x1a')]({'where':{'phone':_0x55a50d[_0x3b45('0xb')],'VoiceQueueId':_0x1a4583['id']}})['then'](function(_0x64d722){if(!_[_0x3b45('0x1c')](_0x64d722)){throw new Error(_0x3b45('0x1d')+_0x55a50d[_0x3b45('0xb')]+_0x3b45('0x25')+_0x1a4583['id']);}return _0x24b7c7['CmHopperFinal'][_0x3b45('0x1a')]({'where':{'calleridnum':_0x55a50d[_0x3b45('0xb')],'VoiceQueueId':_0x1a4583['id']}});})['then'](function(_0x396b67){if(!_[_0x3b45('0x1c')](_0x396b67)){throw new Error(_0x3b45('0x26')+_0x55a50d[_0x3b45('0xb')]+_0x3b45('0x27')+_0x1a4583['id']);}return _0x24b7c7[_0x3b45('0x19')][_0x3b45('0x28')]({'phone':_0x55a50d[_0x3b45('0xb')],'ContactId':_0x55a50d['id'],'ListId':_0x55a50d[_0x3b45('0x1e')],'priority':_0x55a50d[_0x3b45('0x1f')]?_0x55a50d['priority']:0x2,'scheduledat':_0x55a50d[_0x3b45('0x20')]?_0x55a50d['scheduledat']:moment()[_0x3b45('0x21')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x55a50d['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x55a50d[_0x3b45('0x23')]?_0x55a50d[_0x3b45('0x23')]:undefined,'callbackat':_0x55a50d[_0x3b45('0x23')]?moment()[_0x3b45('0x21')](_0x3b45('0x22')):undefined,'VoiceQueueId':_0x1a4583['id']});})['catch'](function(_0x4a9ad7){_0x5d7321(_0x4a9ad7);});});};function _0x4f7ac6(){return function(_0xa84abc){logger[_0x3b45('0x15')]('cmContact','afterCreate',util[_0x3b45('0x18')](_0xa84abc,{'showHidden':![],'depth':null}));};}var _0x5101ee=function(_0x27cae4){return new BPromise(function(_0x3442d0,_0x28dbc9){_0x24b7c7[_0x3b45('0x19')][_0x3b45('0x1a')]({'where':{'phone':_0x55a50d[_0x3b45('0xb')],'CampaignId':_0x27cae4['id']}})[_0x3b45('0x1b')](function(_0x4a88d4){if(!_[_0x3b45('0x1c')](_0x4a88d4)){throw new Error(_0x3b45('0x1d')+_0x55a50d[_0x3b45('0xb')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x27cae4['id']);}return _0x24b7c7[_0x3b45('0x19')]['create']({'phone':_0x55a50d['phone'],'ContactId':_0x55a50d['id'],'ListId':_0x55a50d[_0x3b45('0x1e')],'priority':_0x55a50d[_0x3b45('0x1f')]?_0x55a50d[_0x3b45('0x1f')]:0x2,'scheduledat':_0x55a50d[_0x3b45('0x20')]?_0x55a50d[_0x3b45('0x20')]:moment()[_0x3b45('0x21')](_0x3b45('0x22')),'callback':_0x55a50d['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x55a50d[_0x3b45('0x23')]?_0x55a50d[_0x3b45('0x23')]:undefined,'callbackat':_0x55a50d['callbackUniqueid']?moment()[_0x3b45('0x21')](_0x3b45('0x22')):undefined,'CampaignId':_0x27cae4['id']});})['catch'](function(_0x43f313){_0x28dbc9(_0x43f313);});});};var _0x380f22=function(_0x534149){return new BPromise(function(_0x22731d,_0x52fa21){_0x24b7c7[_0x3b45('0x19')]['findOne']({'where':{'phone':_0x55a50d['phone'],'CampaignId':_0x534149['id']}})[_0x3b45('0x1b')](function(_0x2f7d11){if(!_[_0x3b45('0x1c')](_0x2f7d11)){throw new Error(_0x3b45('0x1d')+_0x55a50d[_0x3b45('0xb')]+_0x3b45('0x29')+_0x534149['id']);}return _0x24b7c7[_0x3b45('0x2a')][_0x3b45('0x1a')]({'where':{'calleridnum':_0x55a50d[_0x3b45('0xb')],'CampaignId':_0x534149['id']}});})[_0x3b45('0x1b')](function(_0x490b67){if(!_[_0x3b45('0x1c')](_0x490b67)){throw new Error(_0x3b45('0x26')+_0x55a50d[_0x3b45('0xb')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20'+_0x534149['id']);}return _0x24b7c7[_0x3b45('0x19')]['create']({'phone':_0x55a50d[_0x3b45('0xb')],'ContactId':_0x55a50d['id'],'ListId':_0x55a50d[_0x3b45('0x1e')],'priority':_0x55a50d[_0x3b45('0x1f')]?_0x55a50d[_0x3b45('0x1f')]:0x2,'scheduledat':_0x55a50d[_0x3b45('0x20')]?_0x55a50d[_0x3b45('0x20')]:moment()[_0x3b45('0x21')](_0x3b45('0x22')),'callback':_0x55a50d['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x55a50d[_0x3b45('0x23')]?_0x55a50d[_0x3b45('0x23')]:undefined,'callbackat':_0x55a50d['callbackUniqueid']?moment()[_0x3b45('0x21')](_0x3b45('0x22')):undefined,'CampaignId':_0x534149['id']});})[_0x3b45('0x24')](function(_0x7b7795){_0x52fa21(_0x7b7795);});});};if(_0x55a50d['ListId']){_0x24b7c7[_0x3b45('0x2b')][_0x3b45('0x2c')]({'where':{'type':_0x3b45('0x2d')},'attributes':['id',_0x3b45('0x2e')],'include':[{'model':_0x24b7c7[_0x3b45('0x2f')],'as':_0x3b45('0x30'),'where':{'id':_0x55a50d[_0x3b45('0x1e')]}}]})['then'](function(_0x301d5e){if(_0x301d5e){var _0x174557=[];for(var _0x1a7fdf=0x0,_0x360361;_0x1a7fdf<_0x301d5e[_0x3b45('0x31')];_0x1a7fdf+=0x1){_0x360361=_0x301d5e[_0x1a7fdf]['get']({'plain':!![]});switch(_0x360361[_0x3b45('0x2e')]){case'always':_0x48e9e1(_0x360361)[_0x3b45('0x24')](_0x42a25a());break;case _0x3b45('0x32'):_0x36e7fa(_0x360361)['catch'](_0x42a25a());break;default:_0x24b7c7[_0x3b45('0x19')][_0x3b45('0x28')]({'phone':_0x55a50d[_0x3b45('0xb')],'ContactId':_0x55a50d['id'],'ListId':_0x55a50d[_0x3b45('0x1e')],'scheduledat':_0x55a50d[_0x3b45('0x20')]?_0x55a50d[_0x3b45('0x20')]:moment()[_0x3b45('0x21')](_0x3b45('0x22')),'priority':_0x55a50d[_0x3b45('0x1f')]?_0x55a50d[_0x3b45('0x1f')]:0x2,'callback':_0x55a50d[_0x3b45('0x23')]?!![]:![],'callbackuniqueid':_0x55a50d[_0x3b45('0x23')]?_0x55a50d[_0x3b45('0x23')]:undefined,'callbackat':_0x55a50d['callbackUniqueid']?moment()[_0x3b45('0x21')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x360361['id']})[_0x3b45('0x24')](_0x42a25a());}}}})[_0x3b45('0x1b')](function(){return _0x24b7c7[_0x3b45('0x2b')][_0x3b45('0x2c')]({'where':{'type':_0x3b45('0x2d')},'attributes':['id'],'include':[{'model':_0x24b7c7[_0x3b45('0x2f')],'as':_0x3b45('0x33'),'where':{'id':_0x55a50d[_0x3b45('0x1e')]}}]})[_0x3b45('0x1b')](function(_0x24ee2d){if(_0x24ee2d){var _0x114e98=[];for(var _0x561247=0x0,_0x3dbdf9;_0x561247<_0x24ee2d[_0x3b45('0x31')];_0x561247+=0x1){_0x3dbdf9=_0x24ee2d[_0x561247][_0x3b45('0x14')]({'plain':!![]});_0x24b7c7[_0x3b45('0x34')][_0x3b45('0x28')]({'phone':_0x55a50d[_0x3b45('0xb')],'ContactId':_0x55a50d['id'],'ListId':_0x55a50d[_0x3b45('0x1e')],'VoiceQueueId':_0x3dbdf9['id']})[_0x3b45('0x24')](function(_0x1e9202){logger[_0x3b45('0x15')]('cmContact,\x20%s,\x20%s',_0x3b45('0x17'),_0x1e9202[_0x3b45('0x35')]);});}}});})['then'](function(){return _0x24b7c7[_0x3b45('0x36')][_0x3b45('0x2c')]({'attributes':['id','dialCheckDuplicateType'],'include':[{'model':_0x24b7c7[_0x3b45('0x2f')],'as':_0x3b45('0x30'),'where':{'id':_0x55a50d['ListId']}}]})[_0x3b45('0x1b')](function(_0x1b2f16){if(_0x1b2f16){var _0x5eac16=[];for(var _0x277851=0x0,_0x22884b;_0x277851<_0x1b2f16[_0x3b45('0x31')];_0x277851+=0x1){_0x22884b=_0x1b2f16[_0x277851][_0x3b45('0x14')]({'plain':!![]});switch(_0x22884b[_0x3b45('0x2e')]){case _0x3b45('0x37'):_0x380f22(_0x22884b)[_0x3b45('0x24')](_0x4f7ac6());break;case _0x3b45('0x32'):_0x5101ee(_0x22884b)[_0x3b45('0x24')](_0x4f7ac6());break;default:_0x24b7c7[_0x3b45('0x19')]['create']({'phone':_0x55a50d['phone'],'ContactId':_0x55a50d['id'],'ListId':_0x55a50d[_0x3b45('0x1e')],'scheduledat':_0x55a50d[_0x3b45('0x20')]?_0x55a50d[_0x3b45('0x20')]:moment()[_0x3b45('0x21')](_0x3b45('0x22')),'priority':_0x55a50d['priority']?_0x55a50d[_0x3b45('0x1f')]:0x2,'callback':_0x55a50d['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x55a50d['callbackUniqueid']?_0x55a50d[_0x3b45('0x23')]:undefined,'callbackat':_0x55a50d['callbackUniqueid']?moment()[_0x3b45('0x21')](_0x3b45('0x22')):undefined,'CampaignId':_0x22884b['id']})[_0x3b45('0x24')](_0x4f7ac6());}}}});})[_0x3b45('0x1b')](function(){return _0x24b7c7['Campaign'][_0x3b45('0x2c')]({'attributes':['id'],'include':[{'model':_0x24b7c7[_0x3b45('0x2f')],'as':'BlackLists','where':{'id':_0x55a50d[_0x3b45('0x1e')]}}]})[_0x3b45('0x1b')](function(_0x213aa7){if(_0x213aa7){var _0x48a9f3=[];for(var _0x2ce440=0x0,_0x5dbcb3;_0x2ce440<_0x213aa7['length'];_0x2ce440+=0x1){_0x5dbcb3=_0x213aa7[_0x2ce440][_0x3b45('0x14')]({'plain':!![]});_0x24b7c7[_0x3b45('0x34')][_0x3b45('0x28')]({'phone':_0x55a50d['phone'],'ContactId':_0x55a50d['id'],'ListId':_0x55a50d['ListId'],'CampaignId':_0x5dbcb3['id']})[_0x3b45('0x24')](function(_0x5e5643){logger[_0x3b45('0x15')](_0x3b45('0x38'),_0x3b45('0x17'),_0x5e5643[_0x3b45('0x35')]);});}}});})['then'](function(){_0x5a3510();})[_0x3b45('0x24')](function(_0x1ada95){logger[_0x3b45('0x15')]('cmContact,\x20%s,\x20%s',_0x3b45('0x17'),_0x1ada95['message']);_0x5a3510(_0x1ada95);});}else{_0x5a3510(new Error(_0x3b45('0x39')));}},'afterDestroy':function(_0x275bcb,_0x931223,_0x45f97e){var _0x1c5a06=_0x241a14[_0x3b45('0x13')];var _0x57babe=_0x275bcb[_0x3b45('0x14')]({'plain':!![]});return _0x1c5a06[_0x3b45('0x19')]['findAll']({'raw':!![],'where':{'ListId':_0x57babe[_0x3b45('0x1e')],'ContactId':_0x57babe['id']}})[_0x3b45('0x1b')](function(_0x4a5f62){if(!_[_0x3b45('0x3a')](_0x4a5f62)){var _0x467fc5=[];for(var _0x1f2deb=0x0;_0x1f2deb<_0x4a5f62[_0x3b45('0x31')];_0x1f2deb+=0x1){var _0x244cf5=_0x1c5a06[_0x3b45('0x19')][_0x3b45('0x3b')]({'where':{'ListId':_0x4a5f62[_0x1f2deb][_0x3b45('0x1e')],'ContactId':_0x4a5f62[_0x1f2deb][_0x3b45('0x3c')],'VoiceQueueId':_0x4a5f62[_0x1f2deb][_0x3b45('0x3d')],'CampaignId':_0x4a5f62[_0x1f2deb][_0x3b45('0x3e')]}});_0x467fc5[_0x3b45('0x3f')](_0x244cf5);}return BPromise[_0x3b45('0x40')](_0x467fc5);}})['then'](function(_0x2eeee7){logger[_0x3b45('0x41')](_0x3b45('0x42'),util[_0x3b45('0x18')](_0x2eeee7,{'showHidden':![],'depth':null}));_0x45f97e();})[_0x3b45('0x24')](function(_0x38d501){logger[_0x3b45('0x15')](_0x3b45('0x43'),util['inspect'](_0x38d501,{'showHidden':![],'depth':null}));_0x45f97e(_0x38d501);});}}});};
\ No newline at end of file
+var _0x9c01=['cm_contacts','phone','fti_cm_contacts','firstName','lastName','mobile','email','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','models','get','error','cmContact','afterCreate','inspect','CmHopper','findOne','then','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','ListId','priority','scheduledat','format','callbackUniqueid','YYYY-MM-DD\x20HH:mm:ss','catch','isNil','CmHopperFinal','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','cmContact,\x20afterCreate,\x20','findAll','outbound','dialCheckDuplicateType','CmList','Lists','length','onlyIfOpen','BlackLists','CmHopperBlack','cmContact,\x20%s,\x20%s','message','Campaign','always','List\x20not\x20found','isEmpty','destroy','ContactId','VoiceQueueId','CampaignId','all','[CmContact][afterDestroy][Error]','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./cmContact.attributes','define','CmContact'];(function(_0x23aa52,_0x20ea97){var _0x92fe2c=function(_0x3b2817){while(--_0x3b2817){_0x23aa52['push'](_0x23aa52['shift']());}};_0x92fe2c(++_0x20ea97);}(_0x9c01,0x143));var _0x19c0=function(_0x1fab37,_0x34df0f){_0x1fab37=_0x1fab37-0x0;var _0x498b5b=_0x9c01[_0x1fab37];return _0x498b5b;};'use strict';var _=require(_0x19c0('0x0'));var util=require(_0x19c0('0x1'));var logger=require(_0x19c0('0x2'))(_0x19c0('0x3'));var moment=require(_0x19c0('0x4'));var BPromise=require('bluebird');var rp=require(_0x19c0('0x5'));var fs=require('fs');var path=require(_0x19c0('0x6'));var rimraf=require(_0x19c0('0x7'));var config=require(_0x19c0('0x8'));var attributes=require(_0x19c0('0x9'));module['exports']=function(_0x5c5c8a,_0x521c8f){return _0x5c5c8a[_0x19c0('0xa')](_0x19c0('0xb'),attributes,{'tableName':_0x19c0('0xc'),'paranoid':!![],'indexes':[{'name':_0x19c0('0xd'),'fields':[_0x19c0('0xd')]},{'name':_0x19c0('0xe'),'fields':[_0x19c0('0xf'),_0x19c0('0x10'),'phone',_0x19c0('0x11'),'fax',_0x19c0('0x12')],'type':_0x19c0('0x13')}],'timestamps':!![],'charset':_0x19c0('0x14'),'collate':_0x19c0('0x15'),'hooks':{'afterCreate':function(_0x1a4bc2,_0xf7e098,_0x5a34ee){var _0x4ad163=_0x5c5c8a[_0x19c0('0x16')];var _0x54d2d5=_0x1a4bc2[_0x19c0('0x17')]({'plain':!![]});function _0x9c0016(){return function(_0x35ba2b){logger[_0x19c0('0x18')](_0x19c0('0x19'),_0x19c0('0x1a'),util[_0x19c0('0x1b')](_0x35ba2b,{'showHidden':![],'depth':null}));};}var _0x272d73=function(_0x33207c){return new BPromise(function(_0x5c23cb,_0xc6b41){_0x4ad163[_0x19c0('0x1c')][_0x19c0('0x1d')]({'where':{'phone':_0x54d2d5[_0x19c0('0xd')],'VoiceQueueId':_0x33207c['id']}})[_0x19c0('0x1e')](function(_0xf973aa){if(!_['isNil'](_0xf973aa)){throw new Error(_0x19c0('0x1f')+_0x54d2d5[_0x19c0('0xd')]+_0x19c0('0x20')+_0x33207c['id']);}return _0x4ad163[_0x19c0('0x1c')][_0x19c0('0x21')]({'phone':_0x54d2d5[_0x19c0('0xd')],'ContactId':_0x54d2d5['id'],'ListId':_0x54d2d5[_0x19c0('0x22')],'priority':_0x54d2d5['priority']?_0x54d2d5[_0x19c0('0x23')]:0x2,'scheduledat':_0x54d2d5[_0x19c0('0x24')]?_0x54d2d5[_0x19c0('0x24')]:moment()[_0x19c0('0x25')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x54d2d5[_0x19c0('0x26')]?!![]:![],'callbackuniqueid':_0x54d2d5[_0x19c0('0x26')]?_0x54d2d5[_0x19c0('0x26')]:undefined,'callbackat':_0x54d2d5[_0x19c0('0x26')]?moment()[_0x19c0('0x25')](_0x19c0('0x27')):undefined,'VoiceQueueId':_0x33207c['id']});})[_0x19c0('0x28')](function(_0x1d8c30){_0xc6b41(_0x1d8c30);});});};var _0x4bd739=function(_0x161edb){return new BPromise(function(_0x28e96e,_0x3a387f){_0x4ad163[_0x19c0('0x1c')][_0x19c0('0x1d')]({'where':{'phone':_0x54d2d5[_0x19c0('0xd')],'VoiceQueueId':_0x161edb['id']}})[_0x19c0('0x1e')](function(_0x36aec9){if(!_[_0x19c0('0x29')](_0x36aec9)){throw new Error(_0x19c0('0x1f')+_0x54d2d5['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x161edb['id']);}return _0x4ad163[_0x19c0('0x2a')][_0x19c0('0x1d')]({'where':{'calleridnum':_0x54d2d5[_0x19c0('0xd')],'VoiceQueueId':_0x161edb['id']}});})['then'](function(_0x41e7b9){if(!_[_0x19c0('0x29')](_0x41e7b9)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x54d2d5[_0x19c0('0xd')]+_0x19c0('0x2b')+_0x161edb['id']);}return _0x4ad163[_0x19c0('0x1c')][_0x19c0('0x21')]({'phone':_0x54d2d5[_0x19c0('0xd')],'ContactId':_0x54d2d5['id'],'ListId':_0x54d2d5['ListId'],'priority':_0x54d2d5[_0x19c0('0x23')]?_0x54d2d5[_0x19c0('0x23')]:0x2,'scheduledat':_0x54d2d5[_0x19c0('0x24')]?_0x54d2d5['scheduledat']:moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x54d2d5['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x54d2d5[_0x19c0('0x26')]?_0x54d2d5[_0x19c0('0x26')]:undefined,'callbackat':_0x54d2d5[_0x19c0('0x26')]?moment()[_0x19c0('0x25')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x161edb['id']});})[_0x19c0('0x28')](function(_0x39cef2){_0x3a387f(_0x39cef2);});});};function _0x3782a8(){return function(_0x2b7cf3){logger[_0x19c0('0x18')](_0x19c0('0x19'),'afterCreate',util[_0x19c0('0x1b')](_0x2b7cf3,{'showHidden':![],'depth':null}));};}var _0x2b5e48=function(_0x402744){return new BPromise(function(_0x42e57e,_0x55f1d3){_0x4ad163[_0x19c0('0x1c')]['findOne']({'where':{'phone':_0x54d2d5[_0x19c0('0xd')],'CampaignId':_0x402744['id']}})[_0x19c0('0x1e')](function(_0x8979ca){if(!_[_0x19c0('0x29')](_0x8979ca)){throw new Error(_0x19c0('0x1f')+_0x54d2d5['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x402744['id']);}return _0x4ad163[_0x19c0('0x1c')][_0x19c0('0x21')]({'phone':_0x54d2d5[_0x19c0('0xd')],'ContactId':_0x54d2d5['id'],'ListId':_0x54d2d5[_0x19c0('0x22')],'priority':_0x54d2d5['priority']?_0x54d2d5['priority']:0x2,'scheduledat':_0x54d2d5[_0x19c0('0x24')]?_0x54d2d5[_0x19c0('0x24')]:moment()[_0x19c0('0x25')](_0x19c0('0x27')),'callback':_0x54d2d5['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x54d2d5[_0x19c0('0x26')]?_0x54d2d5['callbackUniqueid']:undefined,'callbackat':_0x54d2d5[_0x19c0('0x26')]?moment()[_0x19c0('0x25')](_0x19c0('0x27')):undefined,'CampaignId':_0x402744['id']});})[_0x19c0('0x28')](function(_0x5a8806){_0x55f1d3(_0x5a8806);});});};var _0x32e51a=function(_0x50dd95){return new BPromise(function(_0x57c658,_0x322bfd){_0x4ad163['CmHopper'][_0x19c0('0x1d')]({'where':{'phone':_0x54d2d5['phone'],'CampaignId':_0x50dd95['id']}})['then'](function(_0x7b8e3b){if(!_[_0x19c0('0x29')](_0x7b8e3b)){throw new Error(_0x19c0('0x1f')+_0x54d2d5[_0x19c0('0xd')]+_0x19c0('0x2c')+_0x50dd95['id']);}return _0x4ad163[_0x19c0('0x2a')][_0x19c0('0x1d')]({'where':{'calleridnum':_0x54d2d5[_0x19c0('0xd')],'CampaignId':_0x50dd95['id']}});})[_0x19c0('0x1e')](function(_0x4cf618){if(!_[_0x19c0('0x29')](_0x4cf618)){throw new Error(_0x19c0('0x2d')+_0x54d2d5[_0x19c0('0xd')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20'+_0x50dd95['id']);}return _0x4ad163[_0x19c0('0x1c')][_0x19c0('0x21')]({'phone':_0x54d2d5[_0x19c0('0xd')],'ContactId':_0x54d2d5['id'],'ListId':_0x54d2d5[_0x19c0('0x22')],'priority':_0x54d2d5[_0x19c0('0x23')]?_0x54d2d5[_0x19c0('0x23')]:0x2,'scheduledat':_0x54d2d5[_0x19c0('0x24')]?_0x54d2d5[_0x19c0('0x24')]:moment()[_0x19c0('0x25')](_0x19c0('0x27')),'callback':_0x54d2d5[_0x19c0('0x26')]?!![]:![],'callbackuniqueid':_0x54d2d5[_0x19c0('0x26')]?_0x54d2d5[_0x19c0('0x26')]:undefined,'callbackat':_0x54d2d5[_0x19c0('0x26')]?moment()[_0x19c0('0x25')](_0x19c0('0x27')):undefined,'CampaignId':_0x50dd95['id']});})[_0x19c0('0x28')](function(_0x55b4c5){_0x322bfd(_0x55b4c5);});});};if(_0x54d2d5[_0x19c0('0x22')]){_0x4ad163['VoiceQueue'][_0x19c0('0x2e')]({'where':{'type':_0x19c0('0x2f')},'attributes':['id',_0x19c0('0x30')],'include':[{'model':_0x4ad163[_0x19c0('0x31')],'as':_0x19c0('0x32'),'where':{'id':_0x54d2d5[_0x19c0('0x22')]}}]})[_0x19c0('0x1e')](function(_0x31ebf7){if(_0x31ebf7){var _0x10bdcc=[];for(var _0x2f2799=0x0,_0x4bd6bd;_0x2f2799<_0x31ebf7[_0x19c0('0x33')];_0x2f2799+=0x1){_0x4bd6bd=_0x31ebf7[_0x2f2799][_0x19c0('0x17')]({'plain':!![]});switch(_0x4bd6bd[_0x19c0('0x30')]){case'always':_0x4bd739(_0x4bd6bd)[_0x19c0('0x28')](_0x9c0016());break;case _0x19c0('0x34'):_0x272d73(_0x4bd6bd)[_0x19c0('0x28')](_0x9c0016());break;default:_0x4ad163['CmHopper']['create']({'phone':_0x54d2d5[_0x19c0('0xd')],'ContactId':_0x54d2d5['id'],'ListId':_0x54d2d5['ListId'],'scheduledat':_0x54d2d5[_0x19c0('0x24')]?_0x54d2d5[_0x19c0('0x24')]:moment()[_0x19c0('0x25')](_0x19c0('0x27')),'priority':_0x54d2d5['priority']?_0x54d2d5[_0x19c0('0x23')]:0x2,'callback':_0x54d2d5[_0x19c0('0x26')]?!![]:![],'callbackuniqueid':_0x54d2d5['callbackUniqueid']?_0x54d2d5[_0x19c0('0x26')]:undefined,'callbackat':_0x54d2d5['callbackUniqueid']?moment()[_0x19c0('0x25')](_0x19c0('0x27')):undefined,'VoiceQueueId':_0x4bd6bd['id']})['catch'](_0x9c0016());}}}})[_0x19c0('0x1e')](function(){return _0x4ad163['VoiceQueue'][_0x19c0('0x2e')]({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':_0x4ad163[_0x19c0('0x31')],'as':_0x19c0('0x35'),'where':{'id':_0x54d2d5['ListId']}}]})[_0x19c0('0x1e')](function(_0x82eb75){if(_0x82eb75){var _0x195381=[];for(var _0x25ff0b=0x0,_0x280bcb;_0x25ff0b<_0x82eb75[_0x19c0('0x33')];_0x25ff0b+=0x1){_0x280bcb=_0x82eb75[_0x25ff0b][_0x19c0('0x17')]({'plain':!![]});_0x4ad163[_0x19c0('0x36')]['create']({'phone':_0x54d2d5['phone'],'ContactId':_0x54d2d5['id'],'ListId':_0x54d2d5[_0x19c0('0x22')],'VoiceQueueId':_0x280bcb['id']})[_0x19c0('0x28')](function(_0x5fd53b){logger[_0x19c0('0x18')](_0x19c0('0x37'),_0x19c0('0x1a'),_0x5fd53b[_0x19c0('0x38')]);});}}});})[_0x19c0('0x1e')](function(){return _0x4ad163[_0x19c0('0x39')][_0x19c0('0x2e')]({'attributes':['id',_0x19c0('0x30')],'include':[{'model':_0x4ad163[_0x19c0('0x31')],'as':_0x19c0('0x32'),'where':{'id':_0x54d2d5['ListId']}}]})[_0x19c0('0x1e')](function(_0x54b0e1){if(_0x54b0e1){var _0x987c14=[];for(var _0x47c5ac=0x0,_0x318b69;_0x47c5ac<_0x54b0e1['length'];_0x47c5ac+=0x1){_0x318b69=_0x54b0e1[_0x47c5ac][_0x19c0('0x17')]({'plain':!![]});switch(_0x318b69[_0x19c0('0x30')]){case _0x19c0('0x3a'):_0x32e51a(_0x318b69)[_0x19c0('0x28')](_0x3782a8());break;case _0x19c0('0x34'):_0x2b5e48(_0x318b69)[_0x19c0('0x28')](_0x3782a8());break;default:_0x4ad163[_0x19c0('0x1c')][_0x19c0('0x21')]({'phone':_0x54d2d5[_0x19c0('0xd')],'ContactId':_0x54d2d5['id'],'ListId':_0x54d2d5[_0x19c0('0x22')],'scheduledat':_0x54d2d5[_0x19c0('0x24')]?_0x54d2d5[_0x19c0('0x24')]:moment()[_0x19c0('0x25')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x54d2d5[_0x19c0('0x23')]?_0x54d2d5[_0x19c0('0x23')]:0x2,'callback':_0x54d2d5['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x54d2d5[_0x19c0('0x26')]?_0x54d2d5[_0x19c0('0x26')]:undefined,'callbackat':_0x54d2d5[_0x19c0('0x26')]?moment()[_0x19c0('0x25')](_0x19c0('0x27')):undefined,'CampaignId':_0x318b69['id']})['catch'](_0x3782a8());}}}});})[_0x19c0('0x1e')](function(){return _0x4ad163[_0x19c0('0x39')][_0x19c0('0x2e')]({'attributes':['id'],'include':[{'model':_0x4ad163[_0x19c0('0x31')],'as':'BlackLists','where':{'id':_0x54d2d5[_0x19c0('0x22')]}}]})[_0x19c0('0x1e')](function(_0x3fe8c6){if(_0x3fe8c6){var _0x11f4c6=[];for(var _0x19f628=0x0,_0x13fbe2;_0x19f628<_0x3fe8c6['length'];_0x19f628+=0x1){_0x13fbe2=_0x3fe8c6[_0x19f628][_0x19c0('0x17')]({'plain':!![]});_0x4ad163[_0x19c0('0x36')][_0x19c0('0x21')]({'phone':_0x54d2d5[_0x19c0('0xd')],'ContactId':_0x54d2d5['id'],'ListId':_0x54d2d5[_0x19c0('0x22')],'CampaignId':_0x13fbe2['id']})[_0x19c0('0x28')](function(_0x1be04c){logger[_0x19c0('0x18')](_0x19c0('0x37'),_0x19c0('0x1a'),_0x1be04c[_0x19c0('0x38')]);});}}});})['then'](function(){_0x5a34ee();})['catch'](function(_0x157c2a){logger['error'](_0x19c0('0x37'),_0x19c0('0x1a'),_0x157c2a[_0x19c0('0x38')]);_0x5a34ee(_0x157c2a);});}else{_0x5a34ee(new Error(_0x19c0('0x3b')));}},'afterDestroy':function(_0x40e8fc,_0x593160,_0x4e90f1){var _0x401a67=_0x5c5c8a[_0x19c0('0x16')];var _0x225324=_0x40e8fc[_0x19c0('0x17')]({'plain':!![]});return _0x401a67[_0x19c0('0x1c')][_0x19c0('0x2e')]({'raw':!![],'where':{'ListId':_0x225324[_0x19c0('0x22')],'ContactId':_0x225324['id']}})[_0x19c0('0x1e')](function(_0x72cd81){if(!_[_0x19c0('0x3c')](_0x72cd81)){var _0x49e1bd=[];for(var _0x1c1b22=0x0;_0x1c1b22<_0x72cd81['length'];_0x1c1b22+=0x1){var _0x39a2d1=_0x401a67[_0x19c0('0x1c')][_0x19c0('0x3d')]({'where':{'ListId':_0x72cd81[_0x1c1b22]['ListId'],'ContactId':_0x72cd81[_0x1c1b22][_0x19c0('0x3e')],'VoiceQueueId':_0x72cd81[_0x1c1b22][_0x19c0('0x3f')],'CampaignId':_0x72cd81[_0x1c1b22][_0x19c0('0x40')]}});_0x49e1bd['push'](_0x39a2d1);}return BPromise[_0x19c0('0x41')](_0x49e1bd);}})['then'](function(_0x567d4a){logger['info']('[CmContact][afterDestroy][Succesfull]',util[_0x19c0('0x1b')](_0x567d4a,{'showHidden':![],'depth':null}));_0x4e90f1();})[_0x19c0('0x28')](function(_0x10040a){logger['error'](_0x19c0('0x42'),util['inspect'](_0x10040a,{'showHidden':![],'depth':null}));_0x4e90f1(_0x10040a);});}}});};
\ No newline at end of file
index 3862ec1..c9fad38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4de=['toString','sequelize','query','lodash','util','moment','bluebird','randomstring','ioredis','squel','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','defaults','redis','socket.io-emitter','./cmContact.socket','then','CmContact,\x20%s,\x20%s','CmContact,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','catch','GetCmContact','CmContact','options','raw','where','include','map','model','attributes','debug','CreateCmContact','keys','length','body','startsWith','update','table','cm_contacts','id\x20=\x20?'];(function(_0x4a367f,_0x4e05f2){var _0x2bedd5=function(_0x5b5e70){while(--_0x5b5e70){_0x4a367f['push'](_0x4a367f['shift']());}};_0x2bedd5(++_0x4e05f2);}(_0xd4de,0x96));var _0xed4d=function(_0x44cd7c,_0x30c2b5){_0x44cd7c=_0x44cd7c-0x0;var _0x1cdc6d=_0xd4de[_0x44cd7c];return _0x1cdc6d;};'use strict';var _=require(_0xed4d('0x0'));var util=require(_0xed4d('0x1'));var moment=require(_0xed4d('0x2'));var BPromise=require(_0xed4d('0x3'));var rs=require(_0xed4d('0x4'));var fs=require('fs');var Redis=require(_0xed4d('0x5'));var squel=require(_0xed4d('0x6'));var db=require(_0xed4d('0x7'))['db'];var utils=require(_0xed4d('0x8'));var logger=require('../../config/logger')(_0xed4d('0x9'));var config=require(_0xed4d('0xa'));var jayson=require(_0xed4d('0xb'));var client=jayson['client'][_0xed4d('0xc')]({'port':0x232a});config['redis']=_[_0xed4d('0xd')](config[_0xed4d('0xe')],{'host':'localhost','port':0x18eb});var socket=require(_0xed4d('0xf'))(new Redis(config[_0xed4d('0xe')]));require(_0xed4d('0x10'))['register'](socket);function respondWithRpcPromise(_0x324a9f,_0x3264bb,_0xe17271){return new BPromise(function(_0x58370d,_0x13ee67){return client['request'](_0x324a9f,_0xe17271)[_0xed4d('0x11')](function(_0x15fdbb){logger['info'](_0xed4d('0x12'),_0x3264bb,'request\x20sent');logger['debug'](_0xed4d('0x13'),_0x3264bb,_0xed4d('0x14'),JSON[_0xed4d('0x15')](_0x15fdbb));if(_0x15fdbb[_0xed4d('0x16')]){if(_0x15fdbb['error']['code']===0x1f4){logger[_0xed4d('0x16')](_0xed4d('0x12'),_0x3264bb,_0x15fdbb[_0xed4d('0x16')][_0xed4d('0x17')]);return _0x13ee67(_0x15fdbb['error'][_0xed4d('0x17')]);}logger[_0xed4d('0x16')](_0xed4d('0x12'),_0x3264bb,_0x15fdbb[_0xed4d('0x16')][_0xed4d('0x17')]);return _0x58370d(_0x15fdbb[_0xed4d('0x16')][_0xed4d('0x17')]);}else{logger[_0xed4d('0x18')]('CmContact,\x20%s,\x20%s',_0x3264bb,_0xed4d('0x14'));_0x58370d(_0x15fdbb[_0xed4d('0x19')]['message']);}})[_0xed4d('0x1a')](function(_0x578735){logger['error'](_0xed4d('0x12'),_0x3264bb,_0x578735);_0x13ee67(_0x578735);});});}exports[_0xed4d('0x1b')]=function(_0x396ab4){var _0x1e3dcd=this;return new Promise(function(_0x1f052f,_0x183fe5){return db[_0xed4d('0x1c')]['findAll']({'raw':_0x396ab4[_0xed4d('0x1d')]?_0x396ab4['options'][_0xed4d('0x1e')]===undefined?!![]:![]:!![],'where':_0x396ab4[_0xed4d('0x1d')]?_0x396ab4[_0xed4d('0x1d')][_0xed4d('0x1f')]||null:null,'attributes':_0x396ab4[_0xed4d('0x1d')]?_0x396ab4['options']['attributes']||null:null,'limit':_0x396ab4['options']?_0x396ab4['options']['limit']||null:null,'include':_0x396ab4['options']?_0x396ab4[_0xed4d('0x1d')][_0xed4d('0x20')]?_[_0xed4d('0x21')](_0x396ab4[_0xed4d('0x1d')][_0xed4d('0x20')],function(_0x33c671){return{'model':db[_0x33c671[_0xed4d('0x22')]],'as':_0x33c671['as'],'attributes':_0x33c671[_0xed4d('0x23')],'include':_0x33c671[_0xed4d('0x20')]?_['map'](_0x33c671[_0xed4d('0x20')],function(_0x1d6de6){return{'model':db[_0x1d6de6[_0xed4d('0x22')]],'as':_0x1d6de6['as'],'attributes':_0x1d6de6[_0xed4d('0x23')],'include':_0x1d6de6[_0xed4d('0x20')]?_[_0xed4d('0x21')](_0x1d6de6['include'],function(_0x5c9df4){return{'model':db[_0x5c9df4['model']],'as':_0x5c9df4['as'],'attributes':_0x5c9df4['attributes']};}):[]};}):[]};}):[]:[]})[_0xed4d('0x11')](function(_0x131f12){logger['info'](_0xed4d('0x1b'),_0x396ab4);logger[_0xed4d('0x24')](_0xed4d('0x1b'),_0x396ab4,JSON[_0xed4d('0x15')](_0x131f12));_0x1f052f(_0x131f12);})[_0xed4d('0x1a')](function(_0xef1e49){logger[_0xed4d('0x16')]('GetCmContact',_0xef1e49['message'],_0x396ab4);_0x183fe5(_0x1e3dcd[_0xed4d('0x16')](0x1f4,_0xef1e49[_0xed4d('0x17')]));});});};exports[_0xed4d('0x25')]=function(_0x2acbf7){var _0x5f3919=this;return new Promise(function(_0x172086,_0x1a2da5){return db[_0xed4d('0x1c')]['create'](_0x2acbf7['body'],{'raw':_0x2acbf7[_0xed4d('0x1d')]?_0x2acbf7['options']['raw']===undefined?!![]:![]:!![]})[_0xed4d('0x11')](function(_0x45f9aa){var _0x3601b5;for(var _0x35b048=0x0;_0x35b048<Object[_0xed4d('0x26')](_0x2acbf7['body'])[_0xed4d('0x27')];_0x35b048++){var _0xa06627=Object[_0xed4d('0x26')](_0x2acbf7[_0xed4d('0x28')])[_0x35b048];if(_0xa06627[_0xed4d('0x29')]('cf_')){_0x3601b5=squel[_0xed4d('0x2a')]()[_0xed4d('0x2b')](_0xed4d('0x2c'))['set'](_0xa06627,_0x2acbf7[_0xed4d('0x28')][_0xa06627])[_0xed4d('0x1f')](_0xed4d('0x2d'),_0x45f9aa['id'])[_0xed4d('0x2e')]();break;}}if(!_0x3601b5)return _0x45f9aa;return db[_0xed4d('0x2f')][_0xed4d('0x30')](_0x3601b5)[_0xed4d('0x11')](function(){return _0x45f9aa;});})[_0xed4d('0x11')](function(_0x10172a){logger['info'](_0xed4d('0x25'),_0x2acbf7);logger[_0xed4d('0x24')]('CreateCmContact',_0x2acbf7,JSON[_0xed4d('0x15')](_0x10172a));_0x172086(_0x10172a);})[_0xed4d('0x1a')](function(_0x39bb7a){logger[_0xed4d('0x16')]('CreateCmContact',_0x39bb7a['message'],_0x2acbf7);_0x1a2da5(_0x5f3919[_0xed4d('0x16')](0x1f4,_0x39bb7a[_0xed4d('0x17')]));});});};
\ No newline at end of file
+var _0xb88d=['CmContact','findAll','options','where','include','map','model','attributes','create','keys','length','body','startsWith','table','set','id\x20=\x20?','toString','query','CreateCmContact','catch','lodash','util','moment','randomstring','ioredis','squel','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./cmContact.socket','register','request','then','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','stringify','error','code','message','GetCmContact'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0xb88d,0x113));var _0xdb88=function(_0x3912b5,_0x1a04b1){_0x3912b5=_0x3912b5-0x0;var _0x30697f=_0xb88d[_0x3912b5];return _0x30697f;};'use strict';var _=require(_0xdb88('0x0'));var util=require(_0xdb88('0x1'));var moment=require(_0xdb88('0x2'));var BPromise=require('bluebird');var rs=require(_0xdb88('0x3'));var fs=require('fs');var Redis=require(_0xdb88('0x4'));var squel=require(_0xdb88('0x5'));var db=require(_0xdb88('0x6'))['db'];var utils=require(_0xdb88('0x7'));var logger=require(_0xdb88('0x8'))('rpc');var config=require(_0xdb88('0x9'));var jayson=require(_0xdb88('0xa'));var client=jayson[_0xdb88('0xb')][_0xdb88('0xc')]({'port':0x232a});config[_0xdb88('0xd')]=_[_0xdb88('0xe')](config[_0xdb88('0xd')],{'host':_0xdb88('0xf'),'port':0x18eb});var socket=require(_0xdb88('0x10'))(new Redis(config[_0xdb88('0xd')]));require(_0xdb88('0x11'))[_0xdb88('0x12')](socket);function respondWithRpcPromise(_0x1179fc,_0x5f525d,_0x3ac1ab){return new BPromise(function(_0x3749d3,_0x63a520){return client[_0xdb88('0x13')](_0x1179fc,_0x3ac1ab)[_0xdb88('0x14')](function(_0x16c016){logger[_0xdb88('0x15')](_0xdb88('0x16'),_0x5f525d,_0xdb88('0x17'));logger[_0xdb88('0x18')](_0xdb88('0x19'),_0x5f525d,_0xdb88('0x17'),JSON[_0xdb88('0x1a')](_0x16c016));if(_0x16c016['error']){if(_0x16c016[_0xdb88('0x1b')][_0xdb88('0x1c')]===0x1f4){logger[_0xdb88('0x1b')](_0xdb88('0x16'),_0x5f525d,_0x16c016[_0xdb88('0x1b')][_0xdb88('0x1d')]);return _0x63a520(_0x16c016[_0xdb88('0x1b')][_0xdb88('0x1d')]);}logger[_0xdb88('0x1b')](_0xdb88('0x16'),_0x5f525d,_0x16c016[_0xdb88('0x1b')][_0xdb88('0x1d')]);return _0x3749d3(_0x16c016[_0xdb88('0x1b')][_0xdb88('0x1d')]);}else{logger[_0xdb88('0x15')](_0xdb88('0x16'),_0x5f525d,_0xdb88('0x17'));_0x3749d3(_0x16c016['result']['message']);}})['catch'](function(_0x593bfd){logger[_0xdb88('0x1b')](_0xdb88('0x16'),_0x5f525d,_0x593bfd);_0x63a520(_0x593bfd);});});}exports[_0xdb88('0x1e')]=function(_0x20b7b3){var _0x31cd1b=this;return new Promise(function(_0x3b4538,_0x4ca404){return db[_0xdb88('0x1f')][_0xdb88('0x20')]({'raw':_0x20b7b3['options']?_0x20b7b3[_0xdb88('0x21')]['raw']===undefined?!![]:![]:!![],'where':_0x20b7b3['options']?_0x20b7b3['options'][_0xdb88('0x22')]||null:null,'attributes':_0x20b7b3[_0xdb88('0x21')]?_0x20b7b3[_0xdb88('0x21')]['attributes']||null:null,'limit':_0x20b7b3[_0xdb88('0x21')]?_0x20b7b3[_0xdb88('0x21')]['limit']||null:null,'include':_0x20b7b3[_0xdb88('0x21')]?_0x20b7b3['options'][_0xdb88('0x23')]?_[_0xdb88('0x24')](_0x20b7b3['options'][_0xdb88('0x23')],function(_0x5d8d81){return{'model':db[_0x5d8d81[_0xdb88('0x25')]],'as':_0x5d8d81['as'],'attributes':_0x5d8d81[_0xdb88('0x26')],'include':_0x5d8d81[_0xdb88('0x23')]?_[_0xdb88('0x24')](_0x5d8d81[_0xdb88('0x23')],function(_0x5577ff){return{'model':db[_0x5577ff[_0xdb88('0x25')]],'as':_0x5577ff['as'],'attributes':_0x5577ff['attributes'],'include':_0x5577ff[_0xdb88('0x23')]?_['map'](_0x5577ff[_0xdb88('0x23')],function(_0x28eef2){return{'model':db[_0x28eef2[_0xdb88('0x25')]],'as':_0x28eef2['as'],'attributes':_0x28eef2[_0xdb88('0x26')]};}):[]};}):[]};}):[]:[]})[_0xdb88('0x14')](function(_0x4cd121){logger[_0xdb88('0x15')](_0xdb88('0x1e'),_0x20b7b3);logger['debug'](_0xdb88('0x1e'),_0x20b7b3,JSON['stringify'](_0x4cd121));_0x3b4538(_0x4cd121);})['catch'](function(_0x59274f){logger[_0xdb88('0x1b')]('GetCmContact',_0x59274f['message'],_0x20b7b3);_0x4ca404(_0x31cd1b[_0xdb88('0x1b')](0x1f4,_0x59274f['message']));});});};exports['CreateCmContact']=function(_0x4284c8){var _0x8ae0fa=this;return new Promise(function(_0x313af8,_0x595027){return db['CmContact'][_0xdb88('0x27')](_0x4284c8['body'],{'raw':_0x4284c8[_0xdb88('0x21')]?_0x4284c8[_0xdb88('0x21')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x1e4102){var _0x3c6558;for(var _0xd357f4=0x0;_0xd357f4<Object[_0xdb88('0x28')](_0x4284c8['body'])[_0xdb88('0x29')];_0xd357f4++){var _0x16ac6a=Object[_0xdb88('0x28')](_0x4284c8[_0xdb88('0x2a')])[_0xd357f4];if(_0x16ac6a[_0xdb88('0x2b')]('cf_')){_0x3c6558=squel['update']()[_0xdb88('0x2c')]('cm_contacts')[_0xdb88('0x2d')](_0x16ac6a,_0x4284c8[_0xdb88('0x2a')][_0x16ac6a])[_0xdb88('0x22')](_0xdb88('0x2e'),_0x1e4102['id'])[_0xdb88('0x2f')]();break;}}if(!_0x3c6558)return _0x1e4102;return db['sequelize'][_0xdb88('0x30')](_0x3c6558)['then'](function(){return _0x1e4102;});})[_0xdb88('0x14')](function(_0x20d194){logger[_0xdb88('0x15')]('CreateCmContact',_0x4284c8);logger[_0xdb88('0x18')](_0xdb88('0x31'),_0x4284c8,JSON[_0xdb88('0x1a')](_0x20d194));_0x313af8(_0x20d194);})[_0xdb88('0x32')](function(_0x529f83){logger[_0xdb88('0x1b')](_0xdb88('0x31'),_0x529f83[_0xdb88('0x1d')],_0x4284c8);_0x595027(_0x8ae0fa[_0xdb88('0x1b')](0x1f4,_0x529f83[_0xdb88('0x1d')]));});});};
\ No newline at end of file
index 0e3825c..21d38b4 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(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xa9e0,0x123));var _0x0a9e=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0xa9e0[_0x491a7f];return _0x3d8f44;};'use strict';var CmContactEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){CmContactEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);CmContactEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','cmContact:','./cmContact.events','save','remove','emit','removeListener'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b828b,_0x344400){_0x1b828b=_0x1b828b-0x0;var _0x98da1a=_0xa9e0[_0x1b828b];return _0x98da1a;};'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 978ca2c..09d679b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ff5=['file','uploadCsv','/upload','single','upload','/upload/:id','put','update','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmContact.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/jscripty_sessions','getJscriptySessions','merge','post','/create_many','bulkCreate','/:id/tags','diskStorage','join','root','server/files/tmp','originalname','replace','format','%s-%s%s','basename','now','extname','/csv'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6ff5,0x12e));var _0x56ff=function(_0x36eaaa,_0x326732){_0x36eaaa=_0x36eaaa-0x0;var _0x461349=_0x6ff5[_0x36eaaa];return _0x461349;};'use strict';var multer=require('multer');var util=require(_0x56ff('0x0'));var path=require(_0x56ff('0x1'));var timeout=require(_0x56ff('0x2'));var express=require(_0x56ff('0x3'));var router=express[_0x56ff('0x4')]();var fs_extra=require(_0x56ff('0x5'));var auth=require(_0x56ff('0x6'));var interaction=require(_0x56ff('0x7'));var config=require(_0x56ff('0x8'));var controller=require(_0x56ff('0x9'));router[_0x56ff('0xa')]('/',auth[_0x56ff('0xb')](),controller['index']);router[_0x56ff('0xa')](_0x56ff('0xc'),auth[_0x56ff('0xb')](),controller[_0x56ff('0xd')]);router[_0x56ff('0xa')](_0x56ff('0xe'),auth[_0x56ff('0xb')](),controller[_0x56ff('0xf')]);router[_0x56ff('0xa')]('/:id/tags',auth[_0x56ff('0xb')](),controller['getTags']);router[_0x56ff('0xa')](_0x56ff('0x10'),auth[_0x56ff('0xb')](),controller[_0x56ff('0x11')]);router['get'](_0x56ff('0x12'),auth[_0x56ff('0xb')](),controller[_0x56ff('0x13')]);router[_0x56ff('0xa')](_0x56ff('0x14'),auth[_0x56ff('0xb')](),controller[_0x56ff('0x15')]);router[_0x56ff('0xa')](_0x56ff('0x16'),auth[_0x56ff('0xb')](),controller[_0x56ff('0x17')]);router[_0x56ff('0xa')]('/:id/journey',auth[_0x56ff('0xb')](),controller['getJourney']);router['post']('/merge',auth[_0x56ff('0xb')](),controller[_0x56ff('0x18')]);router[_0x56ff('0x19')]('/',auth[_0x56ff('0xb')](),controller['create']);router[_0x56ff('0x19')](_0x56ff('0x1a'),auth['isAuthenticated'](),controller[_0x56ff('0x1b')]);router['post'](_0x56ff('0x1c'),auth[_0x56ff('0xb')](),controller['setTags']);var upload=multer({'storage':multer[_0x56ff('0x1d')]({'destination':function(_0xf436e9,_0x1c0c09,_0x1e7e76){_0x1e7e76(null,path[_0x56ff('0x1e')](config[_0x56ff('0x1f')],_0x56ff('0x20')));},'filename':function(_0x3d5b49,_0x40a3f6,_0x4f0162){_0x40a3f6[_0x56ff('0x21')]=_0x40a3f6['originalname'][_0x56ff('0x22')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x4f0162(null,util[_0x56ff('0x23')](_0x56ff('0x24'),path[_0x56ff('0x25')](_0x40a3f6['originalname'],path['extname'](_0x40a3f6['originalname'])),Date[_0x56ff('0x26')](),path[_0x56ff('0x27')](_0x40a3f6[_0x56ff('0x21')])));}})});router[_0x56ff('0x19')](_0x56ff('0x28'),upload['single'](_0x56ff('0x29')),controller[_0x56ff('0x2a')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x443d7a,_0x548fd1,_0x2e597d){_0x2e597d(null,path['join'](config[_0x56ff('0x1f')],_0x56ff('0x20')));},'filename':function(_0x1012bc,_0x26dcd6,_0xb99ead){_0x26dcd6[_0x56ff('0x21')]=_0x26dcd6['originalname'][_0x56ff('0x22')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0xb99ead(null,util[_0x56ff('0x23')]('%s-%s%s',path[_0x56ff('0x25')](_0x26dcd6[_0x56ff('0x21')],path[_0x56ff('0x27')](_0x26dcd6[_0x56ff('0x21')])),Date[_0x56ff('0x26')](),path['extname'](_0x26dcd6[_0x56ff('0x21')])));}})});router[_0x56ff('0x19')](_0x56ff('0x2b'),upload[_0x56ff('0x2c')]('file'),controller[_0x56ff('0x2d')]);router[_0x56ff('0x19')](_0x56ff('0x2e'),auth[_0x56ff('0xb')](),controller['import']);router[_0x56ff('0x2f')](_0x56ff('0xe'),auth[_0x56ff('0xb')](),controller[_0x56ff('0x30')]);router['delete'](_0x56ff('0xe'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xf59d=['getHoppers','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/jscripty_sessions','getJscriptySessions','/:id/journey','getJourney','post','create','/create_many','bulkCreate','diskStorage','join','root','server/files/tmp','originalname','replace','format','%s-%s%s','basename','extname','now','single','file','upload','/upload/:id','import','put','delete','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmContact.controller','index','get','/describe','isAuthenticated','/:id','show','/:id/tags','getTags','/:id/hoppers'];(function(_0x12d033,_0x25fa2f){var _0x3b4e80=function(_0x46c1f4){while(--_0x46c1f4){_0x12d033['push'](_0x12d033['shift']());}};_0x3b4e80(++_0x25fa2f);}(_0xf59d,0xb2));var _0xdf59=function(_0xd10919,_0x2d66ab){_0xd10919=_0xd10919-0x0;var _0x3e88f4=_0xf59d[_0xd10919];return _0x3e88f4;};'use strict';var multer=require(_0xdf59('0x0'));var util=require('util');var path=require(_0xdf59('0x1'));var timeout=require('connect-timeout');var express=require(_0xdf59('0x2'));var router=express[_0xdf59('0x3')]();var fs_extra=require(_0xdf59('0x4'));var auth=require(_0xdf59('0x5'));var interaction=require(_0xdf59('0x6'));var config=require(_0xdf59('0x7'));var controller=require(_0xdf59('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xdf59('0x9')]);router[_0xdf59('0xa')](_0xdf59('0xb'),auth[_0xdf59('0xc')](),controller['describe']);router[_0xdf59('0xa')](_0xdf59('0xd'),auth[_0xdf59('0xc')](),controller[_0xdf59('0xe')]);router[_0xdf59('0xa')](_0xdf59('0xf'),auth[_0xdf59('0xc')](),controller[_0xdf59('0x10')]);router[_0xdf59('0xa')](_0xdf59('0x11'),auth['isAuthenticated'](),controller[_0xdf59('0x12')]);router[_0xdf59('0xa')]('/:id/hopper_histories',auth[_0xdf59('0xc')](),controller[_0xdf59('0x13')]);router[_0xdf59('0xa')](_0xdf59('0x14'),auth[_0xdf59('0xc')](),controller[_0xdf59('0x15')]);router[_0xdf59('0xa')](_0xdf59('0x16'),auth[_0xdf59('0xc')](),controller[_0xdf59('0x17')]);router[_0xdf59('0xa')](_0xdf59('0x18'),auth[_0xdf59('0xc')](),controller[_0xdf59('0x19')]);router[_0xdf59('0x1a')]('/merge',auth[_0xdf59('0xc')](),controller['merge']);router[_0xdf59('0x1a')]('/',auth[_0xdf59('0xc')](),controller[_0xdf59('0x1b')]);router[_0xdf59('0x1a')](_0xdf59('0x1c'),auth['isAuthenticated'](),controller[_0xdf59('0x1d')]);router[_0xdf59('0x1a')]('/:id/tags',auth[_0xdf59('0xc')](),controller['setTags']);var upload=multer({'storage':multer[_0xdf59('0x1e')]({'destination':function(_0x12f9ec,_0x3664eb,_0x222bc8){_0x222bc8(null,path[_0xdf59('0x1f')](config[_0xdf59('0x20')],_0xdf59('0x21')));},'filename':function(_0x5f34ae,_0x4c9952,_0x53eea1){_0x4c9952[_0xdf59('0x22')]=_0x4c9952[_0xdf59('0x22')][_0xdf59('0x23')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x53eea1(null,util[_0xdf59('0x24')](_0xdf59('0x25'),path[_0xdf59('0x26')](_0x4c9952[_0xdf59('0x22')],path[_0xdf59('0x27')](_0x4c9952['originalname'])),Date[_0xdf59('0x28')](),path[_0xdf59('0x27')](_0x4c9952[_0xdf59('0x22')])));}})});router[_0xdf59('0x1a')]('/csv',upload['single']('file'),controller['uploadCsv']);var upload=multer({'storage':multer[_0xdf59('0x1e')]({'destination':function(_0x4eb362,_0x48c46a,_0x23e924){_0x23e924(null,path[_0xdf59('0x1f')](config[_0xdf59('0x20')],'server/files/tmp'));},'filename':function(_0x3fcb22,_0x4eb427,_0x467bed){_0x4eb427[_0xdf59('0x22')]=_0x4eb427[_0xdf59('0x22')][_0xdf59('0x23')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x467bed(null,util[_0xdf59('0x24')](_0xdf59('0x25'),path['basename'](_0x4eb427[_0xdf59('0x22')],path['extname'](_0x4eb427[_0xdf59('0x22')])),Date[_0xdf59('0x28')](),path['extname'](_0x4eb427['originalname'])));}})});router['post']('/upload',upload[_0xdf59('0x29')](_0xdf59('0x2a')),controller[_0xdf59('0x2b')]);router[_0xdf59('0x1a')](_0xdf59('0x2c'),auth[_0xdf59('0xc')](),controller[_0xdf59('0x2d')]);router[_0xdf59('0x2e')]('/:id',auth[_0xdf59('0xc')](),controller['update']);router[_0xdf59('0x2f')]('/:id',auth[_0xdf59('0xc')](),controller['destroy']);module[_0xdf59('0x30')]=router;
\ No newline at end of file
index f774564..6effe92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e10=['long','parse','values','isArray','stringify','BOOLEAN','voice','sequelize','exports','VIRTUAL','getDataValue','alias','STRING','setDataValue','name'];(function(_0x21a8ba,_0x2b09e1){var _0x1da12a=function(_0xb9a7f0){while(--_0xb9a7f0){_0x21a8ba['push'](_0x21a8ba['shift']());}};_0x1da12a(++_0x2b09e1);}(_0x7e10,0x1ab));var _0x07e1=function(_0x34413a,_0x1a20be){_0x34413a=_0x34413a-0x0;var _0x31074c=_0x7e10[_0x34413a];return _0x31074c;};'use strict';var Sequelize=require(_0x07e1('0x0'));var _=require('lodash');module[_0x07e1('0x1')]={'name':{'type':Sequelize[_0x07e1('0x2')],'get':function(_0x35f653){return this[_0x07e1('0x3')](_0x07e1('0x4'));}},'alias':{'type':Sequelize[_0x07e1('0x5')],'allowNull':![],'set':function(_0x419f7c){this[_0x07e1('0x6')]('alias',_0x419f7c?_0x419f7c:this['getDataValue'](_0x07e1('0x7')));}},'type':{'type':Sequelize[_0x07e1('0x5')],'allowNull':![]},'values':{'type':Sequelize['TEXT'](_0x07e1('0x8')),'get':function(){if(this[_0x07e1('0x3')]('type')==='select'){return JSON[_0x07e1('0x9')](this[_0x07e1('0x3')](_0x07e1('0xa')));}else{return this[_0x07e1('0x3')](_0x07e1('0xa'));}},'set':function(_0x5eb160){if(Array[_0x07e1('0xb')](_0x5eb160)){this[_0x07e1('0x6')](_0x07e1('0xa'),JSON[_0x07e1('0xc')](_0x5eb160));}else{this[_0x07e1('0x6')](_0x07e1('0xa'),_0x5eb160);}}},'required':{'type':Sequelize[_0x07e1('0xd')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0x07e1('0xd')],'defaultValue':![]},'actionType':{'type':Sequelize['ENUM'](_0x07e1('0xe'))}};
\ No newline at end of file
+var _0x5122=['lodash','VIRTUAL','getDataValue','alias','STRING','setDataValue','TEXT','long','type','select','parse','values','stringify','BOOLEAN','voice','sequelize'];(function(_0x493e9b,_0x31877f){var _0x55027f=function(_0x138aa5){while(--_0x138aa5){_0x493e9b['push'](_0x493e9b['shift']());}};_0x55027f(++_0x31877f);}(_0x5122,0x14f));var _0x2512=function(_0x4bb1b3,_0x446a44){_0x4bb1b3=_0x4bb1b3-0x0;var _0x6b3651=_0x5122[_0x4bb1b3];return _0x6b3651;};'use strict';var Sequelize=require(_0x2512('0x0'));var _=require(_0x2512('0x1'));module['exports']={'name':{'type':Sequelize[_0x2512('0x2')],'get':function(_0x164946){return this[_0x2512('0x3')](_0x2512('0x4'));}},'alias':{'type':Sequelize[_0x2512('0x5')],'allowNull':![],'set':function(_0x490884){this[_0x2512('0x6')]('alias',_0x490884?_0x490884:this[_0x2512('0x3')]('name'));}},'type':{'type':Sequelize[_0x2512('0x5')],'allowNull':![]},'values':{'type':Sequelize[_0x2512('0x7')](_0x2512('0x8')),'get':function(){if(this['getDataValue'](_0x2512('0x9'))===_0x2512('0xa')){return JSON[_0x2512('0xb')](this[_0x2512('0x3')](_0x2512('0xc')));}else{return this['getDataValue'](_0x2512('0xc'));}},'set':function(_0x50343b){if(Array['isArray'](_0x50343b)){this['setDataValue'](_0x2512('0xc'),JSON[_0x2512('0xd')](_0x50343b));}else{this[_0x2512('0x6')]('values',_0x50343b);}}},'required':{'type':Sequelize[_0x2512('0xe')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0x2512('0xe')],'defaultValue':![]},'actionType':{'type':Sequelize['ENUM'](_0x2512('0xf'))}};
\ No newline at end of file
index 0f2df9a..7d78643 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb6f=['number','INTEGER','switch','BOOLEAN','defaultValue','sequelize','queryInterface','addColumn','cm_contacts','format','cf_%d','eml-format','fast-json-patch','request-promise','moment','util','path','sox','ejs','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','CmCustomField','type','key','model','differenceBy','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','findAll','rows','show','params','rawAttributes','includeAll','include','catch','body','find','transaction','create','TEXT','text','Sequelize'];(function(_0x2650e9,_0xb91cc){var _0x3511c8=function(_0x5069cf){while(--_0x5069cf){_0x2650e9['push'](_0x2650e9['shift']());}};_0x3511c8(++_0xb91cc);}(_0xfb6f,0x122));var _0xffb6=function(_0x470dd6,_0x4c29f2){_0x470dd6=_0x470dd6-0x0;var _0x4cd923=_0xfb6f[_0x470dd6];return _0x4cd923;};'use strict';var emlformat=require(_0xffb6('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xffb6('0x1'));var rp=require(_0xffb6('0x2'));var moment=require(_0xffb6('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xffb6('0x4'));var path=require(_0xffb6('0x5'));var sox=require(_0xffb6('0x6'));var csv=require('to-csv');var ejs=require(_0xffb6('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xffb6('0x8'));var crypto=require(_0xffb6('0x9'));var jsforce=require(_0xffb6('0xa'));var deskjs=require(_0xffb6('0xb'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xffb6('0xc'));var Redis=require(_0xffb6('0xd'));var authService=require(_0xffb6('0xe'));var qs=require(_0xffb6('0xf'));var as=require(_0xffb6('0x10'));var hardwareService=require(_0xffb6('0x11'));var logger=require(_0xffb6('0x12'))(_0xffb6('0x13'));var utils=require(_0xffb6('0x14'));var config=require(_0xffb6('0x15'));var licenseUtil=require(_0xffb6('0x16'));var db=require(_0xffb6('0x17'))['db'];function respondWithStatusCode(_0x56e278,_0x55c248){_0x55c248=_0x55c248||0xcc;return function(_0x2605e5){if(_0x2605e5){return _0x56e278[_0xffb6('0x18')](_0x55c248);}return _0x56e278[_0xffb6('0x19')](_0x55c248)[_0xffb6('0x1a')]();};}function respondWithResult(_0xa59c2f,_0x35d75f){_0x35d75f=_0x35d75f||0xc8;return function(_0x47063e){if(_0x47063e){return _0xa59c2f[_0xffb6('0x19')](_0x35d75f)[_0xffb6('0x1b')](_0x47063e);}};}function respondWithFilteredResult(_0x9f04a9,_0x5d71eb){return function(_0x53d4d2){if(_0x53d4d2){var _0x230ca5=typeof _0x5d71eb[_0xffb6('0x1c')]===_0xffb6('0x1d')&&typeof _0x5d71eb[_0xffb6('0x1e')]===_0xffb6('0x1d');var _0x314599=_0x53d4d2[_0xffb6('0x1f')];var _0x5ef9dd=_0x230ca5?0x0:_0x5d71eb[_0xffb6('0x1c')];var _0x4e07be=_0x230ca5?_0x53d4d2[_0xffb6('0x1f')]:_0x5d71eb[_0xffb6('0x1c')]+_0x5d71eb[_0xffb6('0x1e')];var _0x1a6d55;if(_0x4e07be>=_0x314599){_0x4e07be=_0x314599;_0x1a6d55=0xc8;}else{_0x1a6d55=0xce;}_0x9f04a9['status'](_0x1a6d55);return _0x9f04a9[_0xffb6('0x20')](_0xffb6('0x21'),_0x5ef9dd+'-'+_0x4e07be+'/'+_0x314599)[_0xffb6('0x1b')](_0x53d4d2);}return null;};}function patchUpdates(_0x225b09){return function(_0x1945a3){try{jsonpatch[_0xffb6('0x22')](_0x1945a3,_0x225b09,!![]);}catch(_0x52bc79){return BPromise[_0xffb6('0x23')](_0x52bc79);}return _0x1945a3[_0xffb6('0x24')]();};}function saveUpdates(_0x5d9d0e,_0x43c0c6){return function(_0x13399b){if(_0x13399b){return _0x13399b[_0xffb6('0x25')](_0x5d9d0e)[_0xffb6('0x26')](function(_0x510b98){return _0x510b98;});}return null;};}function removeEntity(_0x59cd6c,_0x276073){return function(_0x471918){if(_0x471918){return _0x471918[_0xffb6('0x27')]()[_0xffb6('0x26')](function(){_0x59cd6c[_0xffb6('0x19')](0xcc)[_0xffb6('0x1a')]();});}};}function handleEntityNotFound(_0x295f8f,_0x49c353){return function(_0x311372){if(!_0x311372){_0x295f8f['sendStatus'](0x194);}return _0x311372;};}function handleError(_0x2a4a90,_0x4acf94){_0x4acf94=_0x4acf94||0x1f4;return function(_0x472ee8){logger[_0xffb6('0x28')](_0x472ee8[_0xffb6('0x29')]);if(_0x472ee8[_0xffb6('0x2a')]){delete _0x472ee8[_0xffb6('0x2a')];}_0x2a4a90[_0xffb6('0x19')](_0x4acf94)[_0xffb6('0x2b')](_0x472ee8);};}exports[_0xffb6('0x2c')]=function(_0x26bbe3,_0xfc6ac8){var _0x3161db={},_0x11bf86={},_0x39dc2c={'count':0x0,'rows':[]};var _0x248ff8=_[_0xffb6('0x2d')](db[_0xffb6('0x2e')]['rawAttributes'],function(_0x329ca7){return{'name':_0x329ca7['fieldName'],'type':_0x329ca7[_0xffb6('0x2f')][_0xffb6('0x30')]};});_0x11bf86[_0xffb6('0x31')]=_[_0xffb6('0x32')](_[_0xffb6('0x2d')](_0x248ff8,_0xffb6('0x2a')),[_0xffb6('0x2a')]);_0x11bf86[_0xffb6('0x33')]=_[_0xffb6('0x34')](_0x26bbe3[_0xffb6('0x33')]);_0x11bf86[_0xffb6('0x35')]=_[_0xffb6('0x36')](_0x11bf86[_0xffb6('0x31')],_0x11bf86['query']);_0x3161db['attributes']=_[_0xffb6('0x36')](_0x11bf86[_0xffb6('0x31')],qs[_0xffb6('0x37')](_0x26bbe3[_0xffb6('0x33')]['fields']));_0x3161db[_0xffb6('0x38')]=_0x3161db[_0xffb6('0x38')][_0xffb6('0x39')]?_0x3161db[_0xffb6('0x38')]:_0x11bf86['model'];if(!_0x26bbe3[_0xffb6('0x33')]['hasOwnProperty'](_0xffb6('0x3a'))){_0x3161db[_0xffb6('0x1e')]=qs[_0xffb6('0x1e')](_0x26bbe3[_0xffb6('0x33')]['limit']);_0x3161db[_0xffb6('0x1c')]=qs['offset'](_0x26bbe3[_0xffb6('0x33')][_0xffb6('0x1c')]);}_0x3161db[_0xffb6('0x3b')]=qs[_0xffb6('0x3c')](_0x26bbe3[_0xffb6('0x33')][_0xffb6('0x3c')]);_0x3161db[_0xffb6('0x3d')]=qs[_0xffb6('0x35')](_[_0xffb6('0x3e')](_0x26bbe3[_0xffb6('0x33')],_0x11bf86['filters']),_0x248ff8);if(_0x26bbe3[_0xffb6('0x33')][_0xffb6('0x3f')]){_0x3161db[_0xffb6('0x3d')]=_[_0xffb6('0x40')](_0x3161db[_0xffb6('0x3d')],{'$or':_[_0xffb6('0x2d')](_0x248ff8,function(_0x525588){if(_0x525588['type']!==_0xffb6('0x41')){var _0x43e673={};_0x43e673[_0x525588[_0xffb6('0x2a')]]={'$like':'%'+_0x26bbe3[_0xffb6('0x33')][_0xffb6('0x3f')]+'%'};return _0x43e673;}})});}_0x3161db=_[_0xffb6('0x40')]({},_0x3161db,_0x26bbe3[_0xffb6('0x42')]);var _0xfca806={'where':_0x3161db[_0xffb6('0x3d')]};return db[_0xffb6('0x2e')]['count'](_0xfca806)[_0xffb6('0x26')](function(_0x3964bf){_0x39dc2c[_0xffb6('0x1f')]=_0x3964bf;if(_0x26bbe3[_0xffb6('0x33')]['includeAll']){_0x3161db['include']=[{'all':!![]}];}return db[_0xffb6('0x2e')][_0xffb6('0x43')](_0x3161db);})[_0xffb6('0x26')](function(_0x239dfe){_0x39dc2c[_0xffb6('0x44')]=_0x239dfe;return _0x39dc2c;})[_0xffb6('0x26')](respondWithFilteredResult(_0xfc6ac8,_0x3161db))['catch'](handleError(_0xfc6ac8,null));};exports[_0xffb6('0x45')]=function(_0x58539a,_0xac63f){var _0x1550de={'raw':!![],'where':{'id':_0x58539a[_0xffb6('0x46')]['id']}},_0x585271={};_0x585271[_0xffb6('0x31')]=_[_0xffb6('0x34')](db[_0xffb6('0x2e')][_0xffb6('0x47')]);_0x585271[_0xffb6('0x33')]=_[_0xffb6('0x34')](_0x58539a[_0xffb6('0x33')]);_0x585271['filters']=_[_0xffb6('0x36')](_0x585271['model'],_0x585271[_0xffb6('0x33')]);_0x1550de[_0xffb6('0x38')]=_[_0xffb6('0x36')](_0x585271[_0xffb6('0x31')],qs[_0xffb6('0x37')](_0x58539a['query'][_0xffb6('0x37')]));_0x1550de[_0xffb6('0x38')]=_0x1550de[_0xffb6('0x38')][_0xffb6('0x39')]?_0x1550de[_0xffb6('0x38')]:_0x585271['model'];if(_0x58539a[_0xffb6('0x33')][_0xffb6('0x48')]){_0x1550de[_0xffb6('0x49')]=[{'all':!![]}];}_0x1550de=_[_0xffb6('0x40')]({},_0x1550de,_0x58539a['options']);return db[_0xffb6('0x2e')]['find'](_0x1550de)[_0xffb6('0x26')](handleEntityNotFound(_0xac63f,null))[_0xffb6('0x26')](respondWithResult(_0xac63f,null))[_0xffb6('0x4a')](handleError(_0xac63f,null));};exports[_0xffb6('0x25')]=function(_0x4ee620,_0x56834d){if(_0x4ee620[_0xffb6('0x4b')]['id']){delete _0x4ee620['body']['id'];}return db[_0xffb6('0x2e')][_0xffb6('0x4c')]({'where':{'id':_0x4ee620[_0xffb6('0x46')]['id']}})[_0xffb6('0x26')](handleEntityNotFound(_0x56834d,null))[_0xffb6('0x26')](saveUpdates(_0x4ee620['body'],null))[_0xffb6('0x26')](respondWithResult(_0x56834d,null))[_0xffb6('0x4a')](handleError(_0x56834d,null));};exports[_0xffb6('0x27')]=function(_0x463b6b,_0x8ae564){return db[_0xffb6('0x2e')]['find']({'where':{'id':_0x463b6b['params']['id']}})[_0xffb6('0x26')](handleEntityNotFound(_0x8ae564,null))[_0xffb6('0x26')](removeEntity(_0x8ae564,null))[_0xffb6('0x4a')](handleError(_0x8ae564,null));};exports['create']=function(_0x413087,_0xa89178){var _0x2270dd;return db['sequelize'][_0xffb6('0x4d')](function(_0x31524a){return db[_0xffb6('0x2e')][_0xffb6('0x4e')](_0x413087[_0xffb6('0x4b')],{'transaction':_0x31524a})[_0xffb6('0x26')](function(_0x2de258){_0x2270dd=_0x2de258;var _0x1606e3={'type':db['Sequelize'][_0xffb6('0x4f')],'transaction':_0x31524a};switch(_0x413087[_0xffb6('0x4b')][_0xffb6('0x2f')]){case _0xffb6('0x50'):_0x1606e3[_0xffb6('0x2f')]=db[_0xffb6('0x51')][_0xffb6('0x4f')];break;case _0xffb6('0x52'):_0x1606e3[_0xffb6('0x2f')]=db[_0xffb6('0x51')][_0xffb6('0x53')];break;case _0xffb6('0x54'):_0x1606e3[_0xffb6('0x2f')]=db[_0xffb6('0x51')][_0xffb6('0x55')];_0x1606e3[_0xffb6('0x56')]=![];break;default:}return db[_0xffb6('0x57')][_0xffb6('0x58')][_0xffb6('0x59')](_0xffb6('0x5a'),util[_0xffb6('0x5b')](_0xffb6('0x5c'),_0x2270dd['id']),_0x1606e3);})['then'](function(){return _0x2270dd;});})[_0xffb6('0x26')](respondWithResult(_0xa89178,0xc9))[_0xffb6('0x4a')](handleError(_0xa89178,null));};
\ No newline at end of file
+var _0x1a8a=['fieldName','type','key','model','differenceBy','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','includeAll','include','findAll','catch','show','params','length','find','body','create','sequelize','transaction','TEXT','Sequelize','INTEGER','switch','BOOLEAN','defaultValue','queryInterface','addColumn','cm_contacts','cf_%d','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','map','CmCustomField','rawAttributes'];(function(_0x567ef4,_0x10a870){var _0x481cd6=function(_0x1c8cf8){while(--_0x1c8cf8){_0x567ef4['push'](_0x567ef4['shift']());}};_0x481cd6(++_0x10a870);}(_0x1a8a,0x191));var _0xa1a8=function(_0x277607,_0x345a06){_0x277607=_0x277607-0x0;var _0x15fe23=_0x1a8a[_0x277607];return _0x15fe23;};'use strict';var emlformat=require(_0xa1a8('0x0'));var rimraf=require(_0xa1a8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa1a8('0x2'));var rp=require('request-promise');var moment=require(_0xa1a8('0x3'));var BPromise=require(_0xa1a8('0x4'));var Mustache=require(_0xa1a8('0x5'));var util=require(_0xa1a8('0x6'));var path=require(_0xa1a8('0x7'));var sox=require(_0xa1a8('0x8'));var csv=require(_0xa1a8('0x9'));var ejs=require(_0xa1a8('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0xa1a8('0xb'));var jsforce=require(_0xa1a8('0xc'));var deskjs=require(_0xa1a8('0xd'));var toCsv=require('to-csv');var querystring=require(_0xa1a8('0xe'));var Papa=require(_0xa1a8('0xf'));var Redis=require(_0xa1a8('0x10'));var authService=require(_0xa1a8('0x11'));var qs=require(_0xa1a8('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa1a8('0x13'));var logger=require(_0xa1a8('0x14'))(_0xa1a8('0x15'));var utils=require(_0xa1a8('0x16'));var config=require(_0xa1a8('0x17'));var licenseUtil=require(_0xa1a8('0x18'));var db=require(_0xa1a8('0x19'))['db'];function respondWithStatusCode(_0x185692,_0x4f2fe1){_0x4f2fe1=_0x4f2fe1||0xcc;return function(_0x2c350b){if(_0x2c350b){return _0x185692[_0xa1a8('0x1a')](_0x4f2fe1);}return _0x185692[_0xa1a8('0x1b')](_0x4f2fe1)[_0xa1a8('0x1c')]();};}function respondWithResult(_0x1b5991,_0xe9aa6e){_0xe9aa6e=_0xe9aa6e||0xc8;return function(_0x341a0a){if(_0x341a0a){return _0x1b5991[_0xa1a8('0x1b')](_0xe9aa6e)[_0xa1a8('0x1d')](_0x341a0a);}};}function respondWithFilteredResult(_0x3cad46,_0x131691){return function(_0x12be5a){if(_0x12be5a){var _0x29bf64=typeof _0x131691[_0xa1a8('0x1e')]===_0xa1a8('0x1f')&&typeof _0x131691[_0xa1a8('0x20')]===_0xa1a8('0x1f');var _0x1db174=_0x12be5a[_0xa1a8('0x21')];var _0x5009cc=_0x29bf64?0x0:_0x131691[_0xa1a8('0x1e')];var _0x5b26b1=_0x29bf64?_0x12be5a[_0xa1a8('0x21')]:_0x131691[_0xa1a8('0x1e')]+_0x131691[_0xa1a8('0x20')];var _0x1b181f;if(_0x5b26b1>=_0x1db174){_0x5b26b1=_0x1db174;_0x1b181f=0xc8;}else{_0x1b181f=0xce;}_0x3cad46[_0xa1a8('0x1b')](_0x1b181f);return _0x3cad46[_0xa1a8('0x22')](_0xa1a8('0x23'),_0x5009cc+'-'+_0x5b26b1+'/'+_0x1db174)['json'](_0x12be5a);}return null;};}function patchUpdates(_0x193484){return function(_0x45a6b6){try{jsonpatch[_0xa1a8('0x24')](_0x45a6b6,_0x193484,!![]);}catch(_0x53f4c7){return BPromise[_0xa1a8('0x25')](_0x53f4c7);}return _0x45a6b6[_0xa1a8('0x26')]();};}function saveUpdates(_0x4e983a,_0x1eb753){return function(_0x5094d6){if(_0x5094d6){return _0x5094d6[_0xa1a8('0x27')](_0x4e983a)[_0xa1a8('0x28')](function(_0x36facb){return _0x36facb;});}return null;};}function removeEntity(_0x32d0d9,_0x25bd69){return function(_0x2e7380){if(_0x2e7380){return _0x2e7380[_0xa1a8('0x29')]()[_0xa1a8('0x28')](function(){_0x32d0d9[_0xa1a8('0x1b')](0xcc)[_0xa1a8('0x1c')]();});}};}function handleEntityNotFound(_0xa406,_0x31e33c){return function(_0x2e9770){if(!_0x2e9770){_0xa406['sendStatus'](0x194);}return _0x2e9770;};}function handleError(_0x41083c,_0x76fe32){_0x76fe32=_0x76fe32||0x1f4;return function(_0x13c817){logger['error'](_0x13c817[_0xa1a8('0x2a')]);if(_0x13c817[_0xa1a8('0x2b')]){delete _0x13c817[_0xa1a8('0x2b')];}_0x41083c[_0xa1a8('0x1b')](_0x76fe32)[_0xa1a8('0x2c')](_0x13c817);};}exports[_0xa1a8('0x2d')]=function(_0x1c0e6b,_0x38aa4d){var _0x54c43d={},_0x5ccdf6={},_0x3175d5={'count':0x0,'rows':[]};var _0x1023c3=_[_0xa1a8('0x2e')](db[_0xa1a8('0x2f')][_0xa1a8('0x30')],function(_0x5bd15a){return{'name':_0x5bd15a[_0xa1a8('0x31')],'type':_0x5bd15a[_0xa1a8('0x32')][_0xa1a8('0x33')]};});_0x5ccdf6[_0xa1a8('0x34')]=_[_0xa1a8('0x35')](_['map'](_0x1023c3,_0xa1a8('0x2b')),[_0xa1a8('0x2b')]);_0x5ccdf6[_0xa1a8('0x36')]=_[_0xa1a8('0x37')](_0x1c0e6b[_0xa1a8('0x36')]);_0x5ccdf6[_0xa1a8('0x38')]=_['intersection'](_0x5ccdf6[_0xa1a8('0x34')],_0x5ccdf6[_0xa1a8('0x36')]);_0x54c43d[_0xa1a8('0x39')]=_[_0xa1a8('0x3a')](_0x5ccdf6[_0xa1a8('0x34')],qs[_0xa1a8('0x3b')](_0x1c0e6b[_0xa1a8('0x36')][_0xa1a8('0x3b')]));_0x54c43d[_0xa1a8('0x39')]=_0x54c43d[_0xa1a8('0x39')]['length']?_0x54c43d[_0xa1a8('0x39')]:_0x5ccdf6['model'];if(!_0x1c0e6b['query'][_0xa1a8('0x3c')](_0xa1a8('0x3d'))){_0x54c43d[_0xa1a8('0x20')]=qs[_0xa1a8('0x20')](_0x1c0e6b['query']['limit']);_0x54c43d[_0xa1a8('0x1e')]=qs[_0xa1a8('0x1e')](_0x1c0e6b[_0xa1a8('0x36')][_0xa1a8('0x1e')]);}_0x54c43d[_0xa1a8('0x3e')]=qs[_0xa1a8('0x3f')](_0x1c0e6b[_0xa1a8('0x36')]['sort']);_0x54c43d[_0xa1a8('0x40')]=qs[_0xa1a8('0x38')](_[_0xa1a8('0x41')](_0x1c0e6b[_0xa1a8('0x36')],_0x5ccdf6[_0xa1a8('0x38')]),_0x1023c3);if(_0x1c0e6b[_0xa1a8('0x36')][_0xa1a8('0x42')]){_0x54c43d[_0xa1a8('0x40')]=_['merge'](_0x54c43d[_0xa1a8('0x40')],{'$or':_['map'](_0x1023c3,function(_0x5273a3){if(_0x5273a3[_0xa1a8('0x32')]!==_0xa1a8('0x43')){var _0x442b02={};_0x442b02[_0x5273a3['name']]={'$like':'%'+_0x1c0e6b['query']['filter']+'%'};return _0x442b02;}})});}_0x54c43d=_['merge']({},_0x54c43d,_0x1c0e6b['options']);var _0x31f33c={'where':_0x54c43d[_0xa1a8('0x40')]};return db['CmCustomField']['count'](_0x31f33c)[_0xa1a8('0x28')](function(_0x13e22c){_0x3175d5[_0xa1a8('0x21')]=_0x13e22c;if(_0x1c0e6b['query'][_0xa1a8('0x44')]){_0x54c43d[_0xa1a8('0x45')]=[{'all':!![]}];}return db[_0xa1a8('0x2f')][_0xa1a8('0x46')](_0x54c43d);})[_0xa1a8('0x28')](function(_0x53f630){_0x3175d5['rows']=_0x53f630;return _0x3175d5;})['then'](respondWithFilteredResult(_0x38aa4d,_0x54c43d))[_0xa1a8('0x47')](handleError(_0x38aa4d,null));};exports[_0xa1a8('0x48')]=function(_0x38debb,_0x5ede2c){var _0x818ba8={'raw':!![],'where':{'id':_0x38debb[_0xa1a8('0x49')]['id']}},_0x7cb18e={};_0x7cb18e[_0xa1a8('0x34')]=_[_0xa1a8('0x37')](db[_0xa1a8('0x2f')][_0xa1a8('0x30')]);_0x7cb18e[_0xa1a8('0x36')]=_['keys'](_0x38debb[_0xa1a8('0x36')]);_0x7cb18e['filters']=_[_0xa1a8('0x3a')](_0x7cb18e[_0xa1a8('0x34')],_0x7cb18e['query']);_0x818ba8[_0xa1a8('0x39')]=_[_0xa1a8('0x3a')](_0x7cb18e[_0xa1a8('0x34')],qs['fields'](_0x38debb[_0xa1a8('0x36')][_0xa1a8('0x3b')]));_0x818ba8[_0xa1a8('0x39')]=_0x818ba8['attributes'][_0xa1a8('0x4a')]?_0x818ba8['attributes']:_0x7cb18e[_0xa1a8('0x34')];if(_0x38debb[_0xa1a8('0x36')][_0xa1a8('0x44')]){_0x818ba8['include']=[{'all':!![]}];}_0x818ba8=_['merge']({},_0x818ba8,_0x38debb['options']);return db[_0xa1a8('0x2f')][_0xa1a8('0x4b')](_0x818ba8)[_0xa1a8('0x28')](handleEntityNotFound(_0x5ede2c,null))[_0xa1a8('0x28')](respondWithResult(_0x5ede2c,null))[_0xa1a8('0x47')](handleError(_0x5ede2c,null));};exports[_0xa1a8('0x27')]=function(_0x3310c2,_0x358689){if(_0x3310c2[_0xa1a8('0x4c')]['id']){delete _0x3310c2[_0xa1a8('0x4c')]['id'];}return db[_0xa1a8('0x2f')]['find']({'where':{'id':_0x3310c2[_0xa1a8('0x49')]['id']}})[_0xa1a8('0x28')](handleEntityNotFound(_0x358689,null))['then'](saveUpdates(_0x3310c2[_0xa1a8('0x4c')],null))[_0xa1a8('0x28')](respondWithResult(_0x358689,null))[_0xa1a8('0x47')](handleError(_0x358689,null));};exports[_0xa1a8('0x29')]=function(_0x4693f7,_0x4390f2){return db[_0xa1a8('0x2f')]['find']({'where':{'id':_0x4693f7['params']['id']}})[_0xa1a8('0x28')](handleEntityNotFound(_0x4390f2,null))['then'](removeEntity(_0x4390f2,null))[_0xa1a8('0x47')](handleError(_0x4390f2,null));};exports[_0xa1a8('0x4d')]=function(_0x27acf4,_0x2dc5e9){var _0x19f8b8;return db[_0xa1a8('0x4e')][_0xa1a8('0x4f')](function(_0x5b9625){return db['CmCustomField'][_0xa1a8('0x4d')](_0x27acf4[_0xa1a8('0x4c')],{'transaction':_0x5b9625})[_0xa1a8('0x28')](function(_0x2f55c2){_0x19f8b8=_0x2f55c2;var _0x14a4de={'type':db['Sequelize'][_0xa1a8('0x50')],'transaction':_0x5b9625};switch(_0x27acf4[_0xa1a8('0x4c')][_0xa1a8('0x32')]){case'text':_0x14a4de[_0xa1a8('0x32')]=db['Sequelize'][_0xa1a8('0x50')];break;case'number':_0x14a4de[_0xa1a8('0x32')]=db[_0xa1a8('0x51')][_0xa1a8('0x52')];break;case _0xa1a8('0x53'):_0x14a4de[_0xa1a8('0x32')]=db[_0xa1a8('0x51')][_0xa1a8('0x54')];_0x14a4de[_0xa1a8('0x55')]=![];break;default:}return db[_0xa1a8('0x4e')][_0xa1a8('0x56')][_0xa1a8('0x57')](_0xa1a8('0x58'),util['format'](_0xa1a8('0x59'),_0x19f8b8['id']),_0x14a4de);})[_0xa1a8('0x28')](function(){return _0x19f8b8;});})[_0xa1a8('0x28')](respondWithResult(_0x2dc5e9,0xc9))[_0xa1a8('0x47')](handleError(_0x2dc5e9,null));};
\ No newline at end of file
index 2e9f83f..fdeaec5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda06=['path','rimraf','../../config/environment','./cmCustomField.attributes','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x418657,_0x2544ef){var _0x232042=function(_0x24d727){while(--_0x24d727){_0x418657['push'](_0x418657['shift']());}};_0x232042(++_0x2544ef);}(_0xda06,0x194));var _0x6da0=function(_0x2c73fa,_0x41b660){_0x2c73fa=_0x2c73fa-0x0;var _0x201374=_0xda06[_0x2c73fa];return _0x201374;};'use strict';var _=require(_0x6da0('0x0'));var util=require(_0x6da0('0x1'));var logger=require(_0x6da0('0x2'))('api');var moment=require(_0x6da0('0x3'));var BPromise=require(_0x6da0('0x4'));var rp=require(_0x6da0('0x5'));var fs=require('fs');var path=require(_0x6da0('0x6'));var rimraf=require(_0x6da0('0x7'));var config=require(_0x6da0('0x8'));var attributes=require(_0x6da0('0x9'));module['exports']=function(_0xa85113,_0x360675){return _0xa85113['define']('CmCustomField',attributes,{'tableName':'cm_custom_fields','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x63a6=['moment','bluebird','path','../../config/environment','./cmCustomField.attributes','exports','CmCustomField','cm_custom_fields','util','../../config/logger','api'];(function(_0x537fd3,_0x120947){var _0x163abe=function(_0x2ed5af){while(--_0x2ed5af){_0x537fd3['push'](_0x537fd3['shift']());}};_0x163abe(++_0x120947);}(_0x63a6,0x173));var _0x663a=function(_0x12a62c,_0xc9c41a){_0x12a62c=_0x12a62c-0x0;var _0x268a58=_0x63a6[_0x12a62c];return _0x268a58;};'use strict';var _=require('lodash');var util=require(_0x663a('0x0'));var logger=require(_0x663a('0x1'))(_0x663a('0x2'));var moment=require(_0x663a('0x3'));var BPromise=require(_0x663a('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x663a('0x5'));var rimraf=require('rimraf');var config=require(_0x663a('0x6'));var attributes=require(_0x663a('0x7'));module[_0x663a('0x8')]=function(_0xbf01af,_0x24e107){return _0xbf01af['define'](_0x663a('0x9'),attributes,{'tableName':_0x663a('0xa'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b4e9dd1..db28e7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f20=['util','bluebird','ioredis','../../mysqldb','../../config/logger','jayson/promise','client','http','request','then','info','CmCustomField,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','lodash'];(function(_0x1da3e6,_0x3bed70){var _0x8e2410=function(_0x45e40c){while(--_0x45e40c){_0x1da3e6['push'](_0x1da3e6['shift']());}};_0x8e2410(++_0x3bed70);}(_0x1f20,0x11c));var _0x01f2=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x1f20[_0xfae23b];return _0x200640;};'use strict';var _=require(_0x01f2('0x0'));var util=require(_0x01f2('0x1'));var moment=require('moment');var BPromise=require(_0x01f2('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x01f2('0x3'));var db=require(_0x01f2('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x01f2('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x01f2('0x6'));var client=jayson[_0x01f2('0x7')][_0x01f2('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x34fe69,_0x321fae,_0x1d6822){return new BPromise(function(_0x9f158b,_0xf13bec){return client[_0x01f2('0x9')](_0x34fe69,_0x1d6822)[_0x01f2('0xa')](function(_0x37622b){logger[_0x01f2('0xb')](_0x01f2('0xc'),_0x321fae,'request\x20sent');logger[_0x01f2('0xd')]('CmCustomField,\x20%s,\x20%s,\x20%s',_0x321fae,'request\x20sent',JSON[_0x01f2('0xe')](_0x37622b));if(_0x37622b[_0x01f2('0xf')]){if(_0x37622b[_0x01f2('0xf')][_0x01f2('0x10')]===0x1f4){logger['error'](_0x01f2('0xc'),_0x321fae,_0x37622b[_0x01f2('0xf')][_0x01f2('0x11')]);return _0xf13bec(_0x37622b[_0x01f2('0xf')]['message']);}logger[_0x01f2('0xf')](_0x01f2('0xc'),_0x321fae,_0x37622b[_0x01f2('0xf')]['message']);return _0x9f158b(_0x37622b[_0x01f2('0xf')]['message']);}else{logger[_0x01f2('0xb')](_0x01f2('0xc'),_0x321fae,_0x01f2('0x12'));_0x9f158b(_0x37622b['result'][_0x01f2('0x11')]);}})['catch'](function(_0x5ae726){logger[_0x01f2('0xf')](_0x01f2('0xc'),_0x321fae,_0x5ae726);_0xf13bec(_0x5ae726);});});}
\ No newline at end of file
+var _0x9ee3=['catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','stringify','error','CmCustomField,\x20%s,\x20%s','message','result'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x9ee3,0x109));var _0x39ee=function(_0x366848,_0x160d72){_0x366848=_0x366848-0x0;var _0x19d370=_0x9ee3[_0x366848];return _0x19d370;};'use strict';var _=require('lodash');var util=require(_0x39ee('0x0'));var moment=require(_0x39ee('0x1'));var BPromise=require(_0x39ee('0x2'));var rs=require(_0x39ee('0x3'));var fs=require('fs');var Redis=require(_0x39ee('0x4'));var db=require(_0x39ee('0x5'))['db'];var utils=require(_0x39ee('0x6'));var logger=require(_0x39ee('0x7'))(_0x39ee('0x8'));var config=require(_0x39ee('0x9'));var jayson=require(_0x39ee('0xa'));var client=jayson[_0x39ee('0xb')][_0x39ee('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x40ada5,_0x2ff428,_0x17a7b8){return new BPromise(function(_0x4c5977,_0x113c46){return client['request'](_0x40ada5,_0x17a7b8)[_0x39ee('0xd')](function(_0x2a4ca9){logger[_0x39ee('0xe')]('CmCustomField,\x20%s,\x20%s',_0x2ff428,_0x39ee('0xf'));logger['debug']('CmCustomField,\x20%s,\x20%s,\x20%s',_0x2ff428,_0x39ee('0xf'),JSON[_0x39ee('0x10')](_0x2a4ca9));if(_0x2a4ca9[_0x39ee('0x11')]){if(_0x2a4ca9[_0x39ee('0x11')]['code']===0x1f4){logger[_0x39ee('0x11')](_0x39ee('0x12'),_0x2ff428,_0x2a4ca9[_0x39ee('0x11')][_0x39ee('0x13')]);return _0x113c46(_0x2a4ca9['error']['message']);}logger[_0x39ee('0x11')]('CmCustomField,\x20%s,\x20%s',_0x2ff428,_0x2a4ca9[_0x39ee('0x11')][_0x39ee('0x13')]);return _0x4c5977(_0x2a4ca9[_0x39ee('0x11')][_0x39ee('0x13')]);}else{logger[_0x39ee('0xe')](_0x39ee('0x12'),_0x2ff428,'request\x20sent');_0x4c5977(_0x2a4ca9[_0x39ee('0x14')][_0x39ee('0x13')]);}})[_0x39ee('0x15')](function(_0x3ef49e){logger[_0x39ee('0x11')](_0x39ee('0x12'),_0x2ff428,_0x3ef49e);_0x113c46(_0x3ef49e);});});}
\ No newline at end of file
index e0b396f..566ac2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0960=['put','/:id','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCustomField.controller','get','isAuthenticated','show','post','create'];(function(_0x2de1ca,_0x5360d7){var _0x34f9f5=function(_0x155a49){while(--_0x155a49){_0x2de1ca['push'](_0x2de1ca['shift']());}};_0x34f9f5(++_0x5360d7);}(_0x0960,0xc2));var _0x0096=function(_0x4e3420,_0x2cf852){_0x4e3420=_0x4e3420-0x0;var _0xe6df4b=_0x0960[_0x4e3420];return _0xe6df4b;};'use strict';var multer=require(_0x0096('0x0'));var util=require(_0x0096('0x1'));var path=require('path');var timeout=require(_0x0096('0x2'));var express=require(_0x0096('0x3'));var router=express[_0x0096('0x4')]();var fs_extra=require(_0x0096('0x5'));var auth=require(_0x0096('0x6'));var interaction=require(_0x0096('0x7'));var config=require(_0x0096('0x8'));var controller=require(_0x0096('0x9'));router[_0x0096('0xa')]('/',auth[_0x0096('0xb')](),controller['index']);router[_0x0096('0xa')]('/:id',auth[_0x0096('0xb')](),controller[_0x0096('0xc')]);router[_0x0096('0xd')]('/',auth['isAuthenticated'](),controller[_0x0096('0xe')]);router[_0x0096('0xf')](_0x0096('0x10'),auth[_0x0096('0xb')](),controller['update']);router[_0x0096('0x11')](_0x0096('0x10'),auth['isAuthenticated'](),controller[_0x0096('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x91e6=['post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./cmCustomField.controller','get','isAuthenticated','/:id'];(function(_0x457ef8,_0x1a19ae){var _0x596c56=function(_0x3b3b8f){while(--_0x3b3b8f){_0x457ef8['push'](_0x457ef8['shift']());}};_0x596c56(++_0x1a19ae);}(_0x91e6,0x123));var _0x691e=function(_0x85dd7a,_0x550ca3){_0x85dd7a=_0x85dd7a-0x0;var _0xd803c7=_0x91e6[_0x85dd7a];return _0xd803c7;};'use strict';var multer=require(_0x691e('0x0'));var util=require(_0x691e('0x1'));var path=require(_0x691e('0x2'));var timeout=require(_0x691e('0x3'));var express=require(_0x691e('0x4'));var router=express[_0x691e('0x5')]();var fs_extra=require(_0x691e('0x6'));var auth=require(_0x691e('0x7'));var interaction=require(_0x691e('0x8'));var config=require('../../config/environment');var controller=require(_0x691e('0x9'));router[_0x691e('0xa')]('/',auth[_0x691e('0xb')](),controller['index']);router[_0x691e('0xa')](_0x691e('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x691e('0xd')]('/',auth['isAuthenticated'](),controller[_0x691e('0xe')]);router[_0x691e('0xf')](_0x691e('0xc'),auth[_0x691e('0xb')](),controller['update']);router[_0x691e('0x10')](_0x691e('0xc'),auth[_0x691e('0xb')](),controller[_0x691e('0x11')]);module[_0x691e('0x12')]=router;
\ No newline at end of file
index d67405b..76e237a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde14=['exports','STRING','BOOLEAN','format','INTEGER','DATE','UNSIGNED','moment','sequelize'];(function(_0x17d114,_0x5a9988){var _0x95997b=function(_0x5e01e8){while(--_0x5e01e8){_0x17d114['push'](_0x17d114['shift']());}};_0x95997b(++_0x5a9988);}(_0xde14,0x127));var _0x4de1=function(_0x2e17c7,_0x4c05c5){_0x2e17c7=_0x2e17c7-0x0;var _0x29692a=_0xde14[_0x2e17c7];return _0x29692a;};'use strict';var moment=require(_0x4de1('0x0'));var Sequelize=require(_0x4de1('0x1'));module[_0x4de1('0x2')]={'phone':{'type':Sequelize[_0x4de1('0x3')],'allowNull':![]},'active':{'type':Sequelize[_0x4de1('0x4')],'defaultValue':![]},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()[_0x4de1('0x5')]('YYYY-MM-DD\x20HH:mm:ss')},'countbusyretry':{'type':Sequelize[_0x4de1('0x6')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x4de1('0x6')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x4de1('0x4')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x4de1('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x4de1('0x7')]},'priority':{'type':Sequelize[_0x4de1('0x6')](0x2)[_0x4de1('0x8')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x4de1('0x4')],'defaultValue':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':'contactListQueue'},'ListId':{'type':Sequelize[_0x4de1('0x6')],'unique':'contactListQueue'},'UserId':{'type':Sequelize[_0x4de1('0x6')]},'VoiceQueueId':{'type':Sequelize[_0x4de1('0x6')],'unique':'contactListQueue'},'CampaignId':{'type':Sequelize[_0x4de1('0x6')]},'countnosuchnumberretry':{'type':Sequelize[_0x4de1('0x6')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x4de1('0x6')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x4de1('0x6')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x4de1('0x6')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xfe33=['YYYY-MM-DD\x20HH:mm:ss','INTEGER','BOOLEAN','UNSIGNED','contactListQueue','STRING','DATE','format'];(function(_0x274e23,_0x13d210){var _0xb36116=function(_0x54a292){while(--_0x54a292){_0x274e23['push'](_0x274e23['shift']());}};_0xb36116(++_0x13d210);}(_0xfe33,0x13d));var _0x3fe3=function(_0x4b7d87,_0x238711){_0x4b7d87=_0x4b7d87-0x0;var _0x3b9f82=_0xfe33[_0x4b7d87];return _0x3b9f82;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module['exports']={'phone':{'type':Sequelize[_0x3fe3('0x0')],'allowNull':![]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x3fe3('0x1')],'defaultValue':moment()[_0x3fe3('0x2')](_0x3fe3('0x3'))},'countbusyretry':{'type':Sequelize[_0x3fe3('0x4')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x3fe3('0x4')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x3fe3('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x3fe3('0x0')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x3fe3('0x1')]},'priority':{'type':Sequelize[_0x3fe3('0x4')](0x2)[_0x3fe3('0x6')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x3fe3('0x5')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x3fe3('0x4')],'unique':'contactListQueue'},'ListId':{'type':Sequelize[_0x3fe3('0x4')],'unique':_0x3fe3('0x7')},'UserId':{'type':Sequelize[_0x3fe3('0x4')]},'VoiceQueueId':{'type':Sequelize[_0x3fe3('0x4')],'unique':_0x3fe3('0x7')},'CampaignId':{'type':Sequelize['INTEGER']},'countnosuchnumberretry':{'type':Sequelize[_0x3fe3('0x4')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x3fe3('0x4')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 9f1cf51..30316c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc442=['show','params','find','create','body','describe','VoiceQueueId','Campaign','CampaignId','omit','dataValues','createdAt','updatedAt','deleted','membername','user','UserId','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','queue','ivr','CmContact','ContactId','lastName','isNil','calleridname','firstName','getPreview','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','length','sequelize','direction','prev','isEmpty','hopperIds','priority','ASC','COALESCE(CmHopper.UserId,\x200)\x20ASC','DESC','scheduledAt','literal','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','LOCK','UPDATE','Contact','CmCompany','Company','CmList','List','VoiceQueue','getOpenContacts','isNumber','error','entity\x20not\x20found','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','reject','update','then','destroy','stack','name','send','index','map','CmHopper','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','concat','$or','$gt','$lt','$ne','$eq','$not','$notBetween','$in','$notIn','$like','$notLike','$iLike','$overlap','$contains','$contained','$any','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','catch'];(function(_0x934425,_0x5af72f){var _0x31d596=function(_0x219869){while(--_0x219869){_0x934425['push'](_0x934425['shift']());}};_0x31d596(++_0x5af72f);}(_0xc442,0x164));var _0x2c44=function(_0x2c5076,_0x9ce4e){_0x2c5076=_0x2c5076-0x0;var _0xeaa5d6=_0xc442[_0x2c5076];return _0xeaa5d6;};'use strict';var emlformat=require(_0x2c44('0x0'));var rimraf=require(_0x2c44('0x1'));var zipdir=require(_0x2c44('0x2'));var jsonpatch=require(_0x2c44('0x3'));var rp=require(_0x2c44('0x4'));var moment=require(_0x2c44('0x5'));var BPromise=require(_0x2c44('0x6'));var Mustache=require('mustache');var util=require(_0x2c44('0x7'));var path=require('path');var sox=require(_0x2c44('0x8'));var csv=require(_0x2c44('0x9'));var ejs=require(_0x2c44('0xa'));var fs=require('fs');var fs_extra=require(_0x2c44('0xb'));var _=require(_0x2c44('0xc'));var squel=require(_0x2c44('0xd'));var crypto=require(_0x2c44('0xe'));var jsforce=require(_0x2c44('0xf'));var deskjs=require(_0x2c44('0x10'));var toCsv=require(_0x2c44('0x9'));var querystring=require(_0x2c44('0x11'));var Papa=require('papaparse');var Redis=require(_0x2c44('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x2c44('0x13'));var as=require(_0x2c44('0x14'));var hardwareService=require(_0x2c44('0x15'));var logger=require(_0x2c44('0x16'))(_0x2c44('0x17'));var utils=require(_0x2c44('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x2c44('0x19'));var db=require(_0x2c44('0x1a'))['db'];function respondWithStatusCode(_0x2a410d,_0x231218){_0x231218=_0x231218||0xcc;return function(_0x31602a){if(_0x31602a){return _0x2a410d[_0x2c44('0x1b')](_0x231218);}return _0x2a410d[_0x2c44('0x1c')](_0x231218)[_0x2c44('0x1d')]();};}function respondWithResult(_0x285e2a,_0x261db6){_0x261db6=_0x261db6||0xc8;return function(_0x1ce7ee){if(_0x1ce7ee){return _0x285e2a[_0x2c44('0x1c')](_0x261db6)[_0x2c44('0x1e')](_0x1ce7ee);}};}function respondWithFilteredResult(_0x2ab8f6,_0x769a60){return function(_0x4198e6){if(_0x4198e6){var _0x26f51f=typeof _0x769a60[_0x2c44('0x1f')]===_0x2c44('0x20')&&typeof _0x769a60[_0x2c44('0x21')]===_0x2c44('0x20');var _0xd948cb=_0x4198e6['count'];var _0x19d40e=_0x26f51f?0x0:_0x769a60[_0x2c44('0x1f')];var _0x40beb2=_0x26f51f?_0x4198e6[_0x2c44('0x22')]:_0x769a60[_0x2c44('0x1f')]+_0x769a60['limit'];var _0x55f706;if(_0x40beb2>=_0xd948cb){_0x40beb2=_0xd948cb;_0x55f706=0xc8;}else{_0x55f706=0xce;}_0x2ab8f6[_0x2c44('0x1c')](_0x55f706);return _0x2ab8f6['set']('Content-Range',_0x19d40e+'-'+_0x40beb2+'/'+_0xd948cb)[_0x2c44('0x1e')](_0x4198e6);}return null;};}function patchUpdates(_0x390ac4){return function(_0x51d913){try{jsonpatch['apply'](_0x51d913,_0x390ac4,!![]);}catch(_0xc13e3c){return BPromise[_0x2c44('0x23')](_0xc13e3c);}return _0x51d913['save']();};}function saveUpdates(_0x22ea62,_0x76651a){return function(_0x6cb2be){if(_0x6cb2be){return _0x6cb2be[_0x2c44('0x24')](_0x22ea62)[_0x2c44('0x25')](function(_0xa63ecc){return _0xa63ecc;});}return null;};}function removeEntity(_0x613718,_0x1b2f1a){return function(_0x24e7dd){if(_0x24e7dd){return _0x24e7dd[_0x2c44('0x26')]()['then'](function(){_0x613718[_0x2c44('0x1c')](0xcc)[_0x2c44('0x1d')]();});}};}function handleEntityNotFound(_0x1ec671,_0x10c8de){return function(_0x1ec68a){if(!_0x1ec68a){_0x1ec671['sendStatus'](0x194);}return _0x1ec68a;};}function handleError(_0x40ada5,_0x505bca){_0x505bca=_0x505bca||0x1f4;return function(_0x3f42af){logger['error'](_0x3f42af[_0x2c44('0x27')]);if(_0x3f42af[_0x2c44('0x28')]){delete _0x3f42af['name'];}_0x40ada5[_0x2c44('0x1c')](_0x505bca)[_0x2c44('0x29')](_0x3f42af);};}exports[_0x2c44('0x2a')]=function(_0x258da7,_0x87d87d){var _0x470f41={},_0x26b0bd={},_0x3f8e4c={'count':0x0,'rows':[]};var _0x3d10f4=_[_0x2c44('0x2b')](db[_0x2c44('0x2c')][_0x2c44('0x2d')],function(_0x12f89a){return{'name':_0x12f89a[_0x2c44('0x2e')],'type':_0x12f89a[_0x2c44('0x2f')][_0x2c44('0x30')]};});_0x26b0bd[_0x2c44('0x31')]=_[_0x2c44('0x2b')](_0x3d10f4,_0x2c44('0x28'));_0x26b0bd[_0x2c44('0x32')]=_[_0x2c44('0x33')](_0x258da7[_0x2c44('0x32')]);_0x26b0bd[_0x2c44('0x34')]=_[_0x2c44('0x35')](_0x26b0bd['model'],_0x26b0bd[_0x2c44('0x32')]);_0x26b0bd['filters']=_[_0x2c44('0x36')](_0x26b0bd[_0x2c44('0x34')],['$and',_0x2c44('0x37'),_0x2c44('0x38'),'$gte',_0x2c44('0x39'),'$lte',_0x2c44('0x3a'),_0x2c44('0x3b'),_0x2c44('0x3c'),'$between',_0x2c44('0x3d'),_0x2c44('0x3e'),_0x2c44('0x3f'),_0x2c44('0x40'),_0x2c44('0x41'),_0x2c44('0x42'),'$notILike',_0x2c44('0x40'),_0x2c44('0x43'),_0x2c44('0x44'),_0x2c44('0x45'),_0x2c44('0x46')]);_0x470f41[_0x2c44('0x47')]=_['intersection'](_0x26b0bd['model'],qs[_0x2c44('0x48')](_0x258da7['query'][_0x2c44('0x48')]));_0x470f41['attributes']=_0x470f41[_0x2c44('0x47')]['length']?_0x470f41['attributes']:_0x26b0bd['model'];if(!_0x258da7[_0x2c44('0x32')][_0x2c44('0x49')](_0x2c44('0x4a'))){_0x470f41[_0x2c44('0x21')]=qs[_0x2c44('0x21')](_0x258da7[_0x2c44('0x32')]['limit']);_0x470f41[_0x2c44('0x1f')]=qs[_0x2c44('0x1f')](_0x258da7['query'][_0x2c44('0x1f')]);}_0x470f41['order']=qs['sort'](_0x258da7['query'][_0x2c44('0x4b')]);_0x470f41[_0x2c44('0x4c')]=qs['filters'](_[_0x2c44('0x4d')](_0x258da7[_0x2c44('0x32')],_0x26b0bd[_0x2c44('0x34')]),_0x3d10f4);if(_0x258da7[_0x2c44('0x32')][_0x2c44('0x4e')]){_0x470f41['where']=_[_0x2c44('0x4f')](_0x470f41['where'],{'$or':_['map'](_0x3d10f4,function(_0x53f264){if(_0x53f264['type']!==_0x2c44('0x50')){var _0x1f7f30={};_0x1f7f30[_0x53f264[_0x2c44('0x28')]]={'$like':'%'+_0x258da7[_0x2c44('0x32')][_0x2c44('0x4e')]+'%'};return _0x1f7f30;}})});}_0x470f41=_[_0x2c44('0x4f')]({},_0x470f41,_0x258da7[_0x2c44('0x51')]);var _0x2e05a7={'where':_0x470f41['where']};return db[_0x2c44('0x2c')][_0x2c44('0x22')](_0x2e05a7)['then'](function(_0x3dd939){_0x3f8e4c['count']=_0x3dd939;if(_0x258da7['query'][_0x2c44('0x52')]){_0x470f41[_0x2c44('0x53')]=[{'all':!![]}];}return db['CmHopper']['findAll'](_0x470f41);})['then'](function(_0xf05118){_0x3f8e4c['rows']=_0xf05118;return _0x3f8e4c;})[_0x2c44('0x25')](respondWithFilteredResult(_0x87d87d,_0x470f41))[_0x2c44('0x54')](handleError(_0x87d87d,null));};exports[_0x2c44('0x55')]=function(_0x1485c4,_0x2cfbc1){var _0x14eed8={'raw':!![],'where':{'id':_0x1485c4[_0x2c44('0x56')]['id']}},_0x568501={};_0x568501[_0x2c44('0x31')]=_[_0x2c44('0x33')](db['CmHopper']['rawAttributes']);_0x568501[_0x2c44('0x32')]=_[_0x2c44('0x33')](_0x1485c4[_0x2c44('0x32')]);_0x568501[_0x2c44('0x34')]=_[_0x2c44('0x35')](_0x568501[_0x2c44('0x31')],_0x568501[_0x2c44('0x32')]);_0x14eed8['attributes']=_['intersection'](_0x568501['model'],qs[_0x2c44('0x48')](_0x1485c4[_0x2c44('0x32')][_0x2c44('0x48')]));_0x14eed8[_0x2c44('0x47')]=_0x14eed8[_0x2c44('0x47')]['length']?_0x14eed8[_0x2c44('0x47')]:_0x568501['model'];if(_0x1485c4['query'][_0x2c44('0x52')]){_0x14eed8['include']=[{'all':!![]}];}_0x14eed8=_[_0x2c44('0x4f')]({},_0x14eed8,_0x1485c4[_0x2c44('0x51')]);return db['CmHopper'][_0x2c44('0x57')](_0x14eed8)[_0x2c44('0x25')](handleEntityNotFound(_0x2cfbc1,null))[_0x2c44('0x25')](respondWithResult(_0x2cfbc1,null))[_0x2c44('0x54')](handleError(_0x2cfbc1,null));};exports[_0x2c44('0x58')]=function(_0x21281f,_0x1c8169){return db[_0x2c44('0x2c')][_0x2c44('0x58')](_0x21281f[_0x2c44('0x59')],{})['then'](respondWithResult(_0x1c8169,0xc9))[_0x2c44('0x54')](handleError(_0x1c8169,null));};exports[_0x2c44('0x24')]=function(_0x32d00d,_0x331b55){if(_0x32d00d[_0x2c44('0x59')]['id']){delete _0x32d00d[_0x2c44('0x59')]['id'];}return db[_0x2c44('0x2c')][_0x2c44('0x57')]({'where':{'id':_0x32d00d[_0x2c44('0x56')]['id']}})['then'](handleEntityNotFound(_0x331b55,null))[_0x2c44('0x25')](saveUpdates(_0x32d00d[_0x2c44('0x59')],null))[_0x2c44('0x25')](respondWithResult(_0x331b55,null))[_0x2c44('0x54')](handleError(_0x331b55,null));};exports[_0x2c44('0x5a')]=function(_0x17fa04,_0x56b82f){return db[_0x2c44('0x2c')]['describe']()[_0x2c44('0x25')](respondWithResult(_0x56b82f,null))[_0x2c44('0x54')](handleError(_0x56b82f,null));};exports[_0x2c44('0x26')]=function(_0x6e0e34,_0x31d37c){var _0x376de1;return db[_0x2c44('0x2c')][_0x2c44('0x57')]({'where':{'id':_0x6e0e34['params']['id']}})[_0x2c44('0x25')](handleEntityNotFound(_0x31d37c,null))[_0x2c44('0x25')](function(_0x1e5ff5){if(_0x1e5ff5){return _0x1e5ff5[_0x2c44('0x26')]()[_0x2c44('0x25')](function(_0x39b032){return _0x39b032;});}})['then'](function(_0x3333a2){_0x376de1=_0x3333a2;if(_0x3333a2){if(_0x3333a2[_0x2c44('0x5b')]||_0x3333a2['CampaignId']){return db[_0x3333a2['VoiceQueueId']?'VoiceQueue':_0x2c44('0x5c')][_0x2c44('0x57')]({'where':{'id':_0x3333a2['VoiceQueueId']?_0x3333a2['VoiceQueueId']:_0x3333a2[_0x2c44('0x5d')]},'attributes':['id',_0x2c44('0x28')],'raw':!![]});}}})[_0x2c44('0x25')](function(_0xa80de1){var _0x4b0148={};if(_0xa80de1){_[_0x2c44('0x4f')](_0x4b0148,_[_0x2c44('0x5e')](_0x376de1[_0x2c44('0x5f')],[_0x2c44('0x60'),_0x2c44('0x61'),'id']));_0x4b0148['state']=0x15;_0x4b0148['statedesc']=_0x2c44('0x62');_0x4b0148['campaign']=_0xa80de1[_0x2c44('0x28')];_0x4b0148[_0x2c44('0x63')]=_0x6e0e34[_0x2c44('0x64')][_0x2c44('0x28')];_0x4b0148[_0x2c44('0x65')]=_0x6e0e34[_0x2c44('0x64')]['id'];_0x4b0148[_0x2c44('0x62')]=!![];_0x4b0148[_0x2c44('0x66')]=moment()[_0x2c44('0x67')](_0x2c44('0x68'));_0x4b0148[_0x2c44('0x69')]=_0x376de1[_0x2c44('0x6a')];_0x4b0148[_0x2c44('0x6b')]=_0x376de1[_0x2c44('0x5b')]?_0x2c44('0x6c'):_0x2c44('0x6d');return db[_0x2c44('0x6e')][_0x2c44('0x57')]({'where':{'id':_0x4b0148[_0x2c44('0x6f')]},'attributes':['firstName',_0x2c44('0x70')]})[_0x2c44('0x25')](function(_0x1bb5f3){if(!_['isNil'](_0x31d37c)&&!_[_0x2c44('0x71')](_0x1bb5f3['firstName'])){_0x4b0148[_0x2c44('0x72')]=_0x1bb5f3[_0x2c44('0x73')];if(!_[_0x2c44('0x71')](_0x1bb5f3[_0x2c44('0x70')])){_0x4b0148['calleridname']+='\x20'+_0x1bb5f3[_0x2c44('0x70')];}}})['finally'](function(){return db['CmHopperFinal'][_0x2c44('0x58')](_0x4b0148);});}})[_0x2c44('0x25')](function(){return _0x31d37c[_0x2c44('0x1c')](0xcc)[_0x2c44('0x1d')]();})[_0x2c44('0x54')](handleError(_0x31d37c,null));};exports[_0x2c44('0x74')]=function(_0xe2bb57,_0x4cd168,_0x14c154){var _0x58336c=[];return db[_0x2c44('0x6e')]['describe']()[_0x2c44('0x25')](function(_0x4f9ce5){_0x58336c=_[_0x2c44('0x33')](_0x4f9ce5);return _0xe2bb57['user'][_0x2c44('0x75')]({'where':{'type':_0x2c44('0x76'),'dialActive':!![],'dialMethod':_0x2c44('0x77')},'attributes':['id',_0x2c44('0x78')],'raw':!![]});})['then'](function(_0x4fb989){if(_0x4fb989&&_0x4fb989[_0x2c44('0x79')]){return db[_0x2c44('0x7a')]['transaction'](function(_0x262402){var _0x1b14ac={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x2c44('0x67')](_0x2c44('0x68'))},'VoiceQueueId':{'$in':_[_0x2c44('0x2b')](_0x4fb989,'id')},'$or':[{'UserId':null},{'UserId':_0xe2bb57[_0x2c44('0x64')]['id']}]};var _0x418d4d=[];if(_0xe2bb57[_0x2c44('0x59')][_0x2c44('0x7b')]&&_0xe2bb57[_0x2c44('0x59')][_0x2c44('0x7b')]===_0x2c44('0x7c')){if(!_[_0x2c44('0x7d')](_0xe2bb57[_0x2c44('0x59')][_0x2c44('0x7e')])){_0x1b14ac['id']={'$in':_0xe2bb57[_0x2c44('0x59')][_0x2c44('0x7e')]};}_0x418d4d=[[_0x2c44('0x7f'),'ASC'],['scheduledAt',_0x4fb989[0x0]['dialOrderByScheduledAt']==='ASC'?'DESC':_0x2c44('0x80')],db['sequelize']['literal'](_0x2c44('0x81')),['id',_0x2c44('0x82')]];}else{if(!_['isEmpty'](_0xe2bb57[_0x2c44('0x59')]['hopperIds'])){_0x1b14ac['id']={'$notIn':_0xe2bb57[_0x2c44('0x59')][_0x2c44('0x7e')]};}_0x418d4d=[[_0x2c44('0x7f'),_0x2c44('0x82')],[_0x2c44('0x83'),_0x4fb989[0x0][_0x2c44('0x78')]],db[_0x2c44('0x7a')][_0x2c44('0x84')](_0x2c44('0x85')),['id',_0x2c44('0x80')]];}return db[_0x2c44('0x2c')][_0x2c44('0x86')]({'attributes':['id','scheduledat'],'where':_0x1b14ac,'order':_0x418d4d,'transaction':_0x262402,'lock':_0x262402[_0x2c44('0x87')][_0x2c44('0x88')],'include':[{'model':db['CmContact'],'as':_0x2c44('0x89'),'attributes':_0x58336c,'include':[{'model':db[_0x2c44('0x8a')],'as':_0x2c44('0x8b'),'attributes':['id',_0x2c44('0x28')]}]},{'model':db[_0x2c44('0x8c')],'as':_0x2c44('0x8d'),'attributes':['id','name']},{'model':db[_0x2c44('0x8e')],'as':'Queue','attributes':['id','name','dialActive']}]})['then'](function(_0x349f88){if(_0x349f88){return _0x349f88[_0x2c44('0x24')]({'UserId':_0xe2bb57[_0x2c44('0x64')]['id']},{'transaction':_0x262402});}});});}})['then'](handleEntityNotFound(_0x4cd168,null))[_0x2c44('0x25')](respondWithResult(_0x4cd168,null))['catch'](handleError(_0x4cd168,null));};exports[_0x2c44('0x8f')]=function(_0x99be0c,_0x4da9cf,_0x290551){return _0x99be0c[_0x2c44('0x64')][_0x2c44('0x75')]({'where':{'type':_0x2c44('0x76'),'dialActive':!![],'dialMethod':_0x2c44('0x77')},'attributes':['id'],'raw':!![]})['then'](function(_0x335c3d){if(_0x335c3d&&_0x335c3d[_0x2c44('0x79')]){return db[_0x2c44('0x2c')][_0x2c44('0x22')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x2c44('0x67')](_0x2c44('0x68'))},'VoiceQueueId':{'$in':_[_0x2c44('0x2b')](_0x335c3d,'id')},'$or':[{'UserId':null},{'UserId':_0x99be0c[_0x2c44('0x64')]['id']}]}});}return 0x0;})[_0x2c44('0x25')](function(_0xb16fcb){if(!_[_0x2c44('0x71')](_0xb16fcb)&&_[_0x2c44('0x90')](_0xb16fcb)){return _0x4da9cf[_0x2c44('0x1c')](0xc8)[_0x2c44('0x1e')]({'contacts':_0xb16fcb});}else{logger[_0x2c44('0x91')]('CmHopper,\x20%s,\x20%s,\x20%s','getOpenContacts',0x194,_0x2c44('0x92'));_0x4da9cf[_0x2c44('0x1b')](0x194);}})[_0x2c44('0x54')](handleError(_0x4da9cf,null));};
\ No newline at end of file
+var _0xe550=['pick','filter','where','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','length','find','body','describe','VoiceQueueId','CampaignId','VoiceQueue','Campaign','dataValues','createdAt','state','statedesc','deleted','campaign','membername','UserId','user','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','queue','ivr','CmContact','ContactId','firstName','lastName','isNil','finally','CmHopperFinal','create','outbound','preview','dialOrderByScheduledAt','sequelize','transaction','direction','prev','isEmpty','hopperIds','priority','scheduledAt','ASC','DESC','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','LOCK','Company','Queue','update','getOpenContacts','getVoiceQueues','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','undefined','count','offset','limit','set','Content-Range','json','apply','then','destroy','error','stack','name','index','map','CmHopper','rawAttributes','fieldName','key','keys','query','filters','intersection','model','concat','$or','$gt','$gte','$lte','$eq','$not','$between','$notBetween','$in','$notIn','$notLike','$iLike','$notILike','$overlap','$contains','$contained','$any','fields','attributes','hasOwnProperty','nolimit','order','sort'];(function(_0x4ce3b6,_0x1512d6){var _0x3f3bbb=function(_0x372c89){while(--_0x372c89){_0x4ce3b6['push'](_0x4ce3b6['shift']());}};_0x3f3bbb(++_0x1512d6);}(_0xe550,0xdc));var _0x0e55=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xe550[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x0e55('0x0'));var rimraf=require(_0x0e55('0x1'));var zipdir=require(_0x0e55('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0e55('0x3'));var moment=require(_0x0e55('0x4'));var BPromise=require(_0x0e55('0x5'));var Mustache=require('mustache');var util=require(_0x0e55('0x6'));var path=require(_0x0e55('0x7'));var sox=require(_0x0e55('0x8'));var csv=require(_0x0e55('0x9'));var ejs=require(_0x0e55('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0e55('0xb'));var squel=require('squel');var crypto=require(_0x0e55('0xc'));var jsforce=require(_0x0e55('0xd'));var deskjs=require(_0x0e55('0xe'));var toCsv=require(_0x0e55('0x9'));var querystring=require(_0x0e55('0xf'));var Papa=require(_0x0e55('0x10'));var Redis=require(_0x0e55('0x11'));var authService=require(_0x0e55('0x12'));var qs=require(_0x0e55('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0e55('0x14'));var logger=require('../../config/logger')(_0x0e55('0x15'));var utils=require(_0x0e55('0x16'));var config=require(_0x0e55('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x0e55('0x18'))['db'];function respondWithStatusCode(_0xd08243,_0x382589){_0x382589=_0x382589||0xcc;return function(_0x57f91c){if(_0x57f91c){return _0xd08243[_0x0e55('0x19')](_0x382589);}return _0xd08243[_0x0e55('0x1a')](_0x382589)[_0x0e55('0x1b')]();};}function respondWithResult(_0x347a75,_0x1ddd68){_0x1ddd68=_0x1ddd68||0xc8;return function(_0x5ceb2f){if(_0x5ceb2f){return _0x347a75[_0x0e55('0x1a')](_0x1ddd68)['json'](_0x5ceb2f);}};}function respondWithFilteredResult(_0xa81763,_0x286e06){return function(_0x9c0292){if(_0x9c0292){var _0x50505a=typeof _0x286e06['offset']===_0x0e55('0x1c')&&typeof _0x286e06['limit']==='undefined';var _0xb7b760=_0x9c0292['count'];var _0x23bbeb=_0x50505a?0x0:_0x286e06['offset'];var _0x4b53f9=_0x50505a?_0x9c0292[_0x0e55('0x1d')]:_0x286e06[_0x0e55('0x1e')]+_0x286e06[_0x0e55('0x1f')];var _0x150aec;if(_0x4b53f9>=_0xb7b760){_0x4b53f9=_0xb7b760;_0x150aec=0xc8;}else{_0x150aec=0xce;}_0xa81763['status'](_0x150aec);return _0xa81763[_0x0e55('0x20')](_0x0e55('0x21'),_0x23bbeb+'-'+_0x4b53f9+'/'+_0xb7b760)[_0x0e55('0x22')](_0x9c0292);}return null;};}function patchUpdates(_0x277f32){return function(_0x17cd32){try{jsonpatch[_0x0e55('0x23')](_0x17cd32,_0x277f32,!![]);}catch(_0x5e26f0){return BPromise['reject'](_0x5e26f0);}return _0x17cd32['save']();};}function saveUpdates(_0x1acff9,_0x15028e){return function(_0x216b02){if(_0x216b02){return _0x216b02['update'](_0x1acff9)[_0x0e55('0x24')](function(_0x21eee8){return _0x21eee8;});}return null;};}function removeEntity(_0x573e20,_0x4ae709){return function(_0x1818f1){if(_0x1818f1){return _0x1818f1[_0x0e55('0x25')]()['then'](function(){_0x573e20[_0x0e55('0x1a')](0xcc)[_0x0e55('0x1b')]();});}};}function handleEntityNotFound(_0x4b6c39,_0x5b59ae){return function(_0x37ce13){if(!_0x37ce13){_0x4b6c39[_0x0e55('0x19')](0x194);}return _0x37ce13;};}function handleError(_0x50c6c5,_0x5b4d92){_0x5b4d92=_0x5b4d92||0x1f4;return function(_0x582893){logger[_0x0e55('0x26')](_0x582893[_0x0e55('0x27')]);if(_0x582893[_0x0e55('0x28')]){delete _0x582893[_0x0e55('0x28')];}_0x50c6c5['status'](_0x5b4d92)['send'](_0x582893);};}exports[_0x0e55('0x29')]=function(_0x4f64ea,_0x244e09){var _0x495a09={},_0x224ec8={},_0x1e75cf={'count':0x0,'rows':[]};var _0x900dea=_[_0x0e55('0x2a')](db[_0x0e55('0x2b')][_0x0e55('0x2c')],function(_0x3f704a){return{'name':_0x3f704a[_0x0e55('0x2d')],'type':_0x3f704a['type'][_0x0e55('0x2e')]};});_0x224ec8['model']=_[_0x0e55('0x2a')](_0x900dea,_0x0e55('0x28'));_0x224ec8['query']=_[_0x0e55('0x2f')](_0x4f64ea[_0x0e55('0x30')]);_0x224ec8[_0x0e55('0x31')]=_[_0x0e55('0x32')](_0x224ec8[_0x0e55('0x33')],_0x224ec8['query']);_0x224ec8[_0x0e55('0x31')]=_[_0x0e55('0x34')](_0x224ec8[_0x0e55('0x31')],['$and',_0x0e55('0x35'),_0x0e55('0x36'),_0x0e55('0x37'),'$lt',_0x0e55('0x38'),'$ne',_0x0e55('0x39'),_0x0e55('0x3a'),_0x0e55('0x3b'),_0x0e55('0x3c'),_0x0e55('0x3d'),_0x0e55('0x3e'),'$like',_0x0e55('0x3f'),_0x0e55('0x40'),_0x0e55('0x41'),'$like',_0x0e55('0x42'),_0x0e55('0x43'),_0x0e55('0x44'),_0x0e55('0x45')]);_0x495a09['attributes']=_[_0x0e55('0x32')](_0x224ec8[_0x0e55('0x33')],qs[_0x0e55('0x46')](_0x4f64ea[_0x0e55('0x30')][_0x0e55('0x46')]));_0x495a09['attributes']=_0x495a09['attributes']['length']?_0x495a09[_0x0e55('0x47')]:_0x224ec8[_0x0e55('0x33')];if(!_0x4f64ea[_0x0e55('0x30')][_0x0e55('0x48')](_0x0e55('0x49'))){_0x495a09[_0x0e55('0x1f')]=qs['limit'](_0x4f64ea[_0x0e55('0x30')][_0x0e55('0x1f')]);_0x495a09[_0x0e55('0x1e')]=qs[_0x0e55('0x1e')](_0x4f64ea['query']['offset']);}_0x495a09[_0x0e55('0x4a')]=qs['sort'](_0x4f64ea[_0x0e55('0x30')][_0x0e55('0x4b')]);_0x495a09['where']=qs[_0x0e55('0x31')](_[_0x0e55('0x4c')](_0x4f64ea['query'],_0x224ec8[_0x0e55('0x31')]),_0x900dea);if(_0x4f64ea[_0x0e55('0x30')][_0x0e55('0x4d')]){_0x495a09[_0x0e55('0x4e')]=_['merge'](_0x495a09[_0x0e55('0x4e')],{'$or':_[_0x0e55('0x2a')](_0x900dea,function(_0x2e8a77){if(_0x2e8a77[_0x0e55('0x4f')]!==_0x0e55('0x50')){var _0x315501={};_0x315501[_0x2e8a77[_0x0e55('0x28')]]={'$like':'%'+_0x4f64ea[_0x0e55('0x30')][_0x0e55('0x4d')]+'%'};return _0x315501;}})});}_0x495a09=_[_0x0e55('0x51')]({},_0x495a09,_0x4f64ea[_0x0e55('0x52')]);var _0x29376b={'where':_0x495a09[_0x0e55('0x4e')]};return db['CmHopper'][_0x0e55('0x1d')](_0x29376b)[_0x0e55('0x24')](function(_0x4e93bd){_0x1e75cf[_0x0e55('0x1d')]=_0x4e93bd;if(_0x4f64ea['query'][_0x0e55('0x53')]){_0x495a09[_0x0e55('0x54')]=[{'all':!![]}];}return db[_0x0e55('0x2b')][_0x0e55('0x55')](_0x495a09);})[_0x0e55('0x24')](function(_0x45f5a0){_0x1e75cf[_0x0e55('0x56')]=_0x45f5a0;return _0x1e75cf;})['then'](respondWithFilteredResult(_0x244e09,_0x495a09))[_0x0e55('0x57')](handleError(_0x244e09,null));};exports[_0x0e55('0x58')]=function(_0xfabd4e,_0xf98623){var _0x2dd5a9={'raw':!![],'where':{'id':_0xfabd4e[_0x0e55('0x59')]['id']}},_0x1419d9={};_0x1419d9[_0x0e55('0x33')]=_[_0x0e55('0x2f')](db[_0x0e55('0x2b')][_0x0e55('0x2c')]);_0x1419d9['query']=_[_0x0e55('0x2f')](_0xfabd4e[_0x0e55('0x30')]);_0x1419d9[_0x0e55('0x31')]=_[_0x0e55('0x32')](_0x1419d9[_0x0e55('0x33')],_0x1419d9[_0x0e55('0x30')]);_0x2dd5a9['attributes']=_['intersection'](_0x1419d9[_0x0e55('0x33')],qs[_0x0e55('0x46')](_0xfabd4e[_0x0e55('0x30')][_0x0e55('0x46')]));_0x2dd5a9[_0x0e55('0x47')]=_0x2dd5a9[_0x0e55('0x47')][_0x0e55('0x5a')]?_0x2dd5a9['attributes']:_0x1419d9[_0x0e55('0x33')];if(_0xfabd4e[_0x0e55('0x30')][_0x0e55('0x53')]){_0x2dd5a9[_0x0e55('0x54')]=[{'all':!![]}];}_0x2dd5a9=_[_0x0e55('0x51')]({},_0x2dd5a9,_0xfabd4e[_0x0e55('0x52')]);return db[_0x0e55('0x2b')][_0x0e55('0x5b')](_0x2dd5a9)['then'](handleEntityNotFound(_0xf98623,null))[_0x0e55('0x24')](respondWithResult(_0xf98623,null))[_0x0e55('0x57')](handleError(_0xf98623,null));};exports['create']=function(_0x50f093,_0x32998a){return db['CmHopper']['create'](_0x50f093['body'],{})[_0x0e55('0x24')](respondWithResult(_0x32998a,0xc9))['catch'](handleError(_0x32998a,null));};exports['update']=function(_0x4db9f6,_0x4dfc1f){if(_0x4db9f6[_0x0e55('0x5c')]['id']){delete _0x4db9f6[_0x0e55('0x5c')]['id'];}return db[_0x0e55('0x2b')]['find']({'where':{'id':_0x4db9f6['params']['id']}})['then'](handleEntityNotFound(_0x4dfc1f,null))[_0x0e55('0x24')](saveUpdates(_0x4db9f6['body'],null))['then'](respondWithResult(_0x4dfc1f,null))['catch'](handleError(_0x4dfc1f,null));};exports[_0x0e55('0x5d')]=function(_0x19c8ee,_0x1e9b0f){return db[_0x0e55('0x2b')][_0x0e55('0x5d')]()['then'](respondWithResult(_0x1e9b0f,null))[_0x0e55('0x57')](handleError(_0x1e9b0f,null));};exports[_0x0e55('0x25')]=function(_0x5ebe8e,_0x2a9d3a){var _0x12a90f;return db[_0x0e55('0x2b')][_0x0e55('0x5b')]({'where':{'id':_0x5ebe8e['params']['id']}})[_0x0e55('0x24')](handleEntityNotFound(_0x2a9d3a,null))['then'](function(_0x5f4690){if(_0x5f4690){return _0x5f4690[_0x0e55('0x25')]()[_0x0e55('0x24')](function(_0x3a27c1){return _0x3a27c1;});}})[_0x0e55('0x24')](function(_0x462031){_0x12a90f=_0x462031;if(_0x462031){if(_0x462031[_0x0e55('0x5e')]||_0x462031[_0x0e55('0x5f')]){return db[_0x462031['VoiceQueueId']?_0x0e55('0x60'):_0x0e55('0x61')]['find']({'where':{'id':_0x462031['VoiceQueueId']?_0x462031[_0x0e55('0x5e')]:_0x462031['CampaignId']},'attributes':['id','name'],'raw':!![]});}}})[_0x0e55('0x24')](function(_0x17c569){var _0x348f60={};if(_0x17c569){_[_0x0e55('0x51')](_0x348f60,_['omit'](_0x12a90f[_0x0e55('0x62')],[_0x0e55('0x63'),'updatedAt','id']));_0x348f60[_0x0e55('0x64')]=0x15;_0x348f60[_0x0e55('0x65')]=_0x0e55('0x66');_0x348f60[_0x0e55('0x67')]=_0x17c569[_0x0e55('0x28')];_0x348f60[_0x0e55('0x68')]=_0x5ebe8e['user']['name'];_0x348f60[_0x0e55('0x69')]=_0x5ebe8e[_0x0e55('0x6a')]['id'];_0x348f60['deleted']=!![];_0x348f60[_0x0e55('0x6b')]=moment()[_0x0e55('0x6c')](_0x0e55('0x6d'));_0x348f60[_0x0e55('0x6e')]=_0x12a90f[_0x0e55('0x6f')];_0x348f60[_0x0e55('0x70')]=_0x12a90f['VoiceQueueId']?_0x0e55('0x71'):_0x0e55('0x72');return db[_0x0e55('0x73')][_0x0e55('0x5b')]({'where':{'id':_0x348f60[_0x0e55('0x74')]},'attributes':[_0x0e55('0x75'),_0x0e55('0x76')]})[_0x0e55('0x24')](function(_0x328046){if(!_['isNil'](_0x2a9d3a)&&!_[_0x0e55('0x77')](_0x328046[_0x0e55('0x75')])){_0x348f60['calleridname']=_0x328046[_0x0e55('0x75')];if(!_['isNil'](_0x328046['lastName'])){_0x348f60['calleridname']+='\x20'+_0x328046[_0x0e55('0x76')];}}})[_0x0e55('0x78')](function(){return db[_0x0e55('0x79')][_0x0e55('0x7a')](_0x348f60);});}})[_0x0e55('0x24')](function(){return _0x2a9d3a[_0x0e55('0x1a')](0xcc)['end']();})[_0x0e55('0x57')](handleError(_0x2a9d3a,null));};exports['getPreview']=function(_0x16631e,_0x413fe6,_0x13352b){var _0x59651c=[];return db[_0x0e55('0x73')][_0x0e55('0x5d')]()['then'](function(_0x250a92){_0x59651c=_[_0x0e55('0x2f')](_0x250a92);return _0x16631e['user']['getVoiceQueues']({'where':{'type':_0x0e55('0x7b'),'dialActive':!![],'dialMethod':_0x0e55('0x7c')},'attributes':['id',_0x0e55('0x7d')],'raw':!![]});})[_0x0e55('0x24')](function(_0xacd552){if(_0xacd552&&_0xacd552[_0x0e55('0x5a')]){return db[_0x0e55('0x7e')][_0x0e55('0x7f')](function(_0x2cf30b){var _0xf5f612={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x0e55('0x6c')](_0x0e55('0x6d'))},'VoiceQueueId':{'$in':_[_0x0e55('0x2a')](_0xacd552,'id')},'$or':[{'UserId':null},{'UserId':_0x16631e[_0x0e55('0x6a')]['id']}]};var _0x26aebe=[];if(_0x16631e['body'][_0x0e55('0x80')]&&_0x16631e[_0x0e55('0x5c')]['direction']===_0x0e55('0x81')){if(!_[_0x0e55('0x82')](_0x16631e[_0x0e55('0x5c')][_0x0e55('0x83')])){_0xf5f612['id']={'$in':_0x16631e['body'][_0x0e55('0x83')]};}_0x26aebe=[[_0x0e55('0x84'),'ASC'],[_0x0e55('0x85'),_0xacd552[0x0][_0x0e55('0x7d')]===_0x0e55('0x86')?_0x0e55('0x87'):_0x0e55('0x86')],db['sequelize']['literal']('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id','DESC']];}else{if(!_[_0x0e55('0x82')](_0x16631e['body'][_0x0e55('0x83')])){_0xf5f612['id']={'$notIn':_0x16631e[_0x0e55('0x5c')]['hopperIds']};}_0x26aebe=[[_0x0e55('0x84'),_0x0e55('0x87')],['scheduledAt',_0xacd552[0x0][_0x0e55('0x7d')]],db['sequelize']['literal'](_0x0e55('0x88')),['id',_0x0e55('0x86')]];}return db[_0x0e55('0x2b')][_0x0e55('0x89')]({'attributes':['id',_0x0e55('0x8a')],'where':_0xf5f612,'order':_0x26aebe,'transaction':_0x2cf30b,'lock':_0x2cf30b[_0x0e55('0x8b')]['UPDATE'],'include':[{'model':db[_0x0e55('0x73')],'as':'Contact','attributes':_0x59651c,'include':[{'model':db['CmCompany'],'as':_0x0e55('0x8c'),'attributes':['id',_0x0e55('0x28')]}]},{'model':db['CmList'],'as':'List','attributes':['id','name']},{'model':db[_0x0e55('0x60')],'as':_0x0e55('0x8d'),'attributes':['id',_0x0e55('0x28'),'dialActive']}]})[_0x0e55('0x24')](function(_0x16f40d){if(_0x16f40d){return _0x16f40d[_0x0e55('0x8e')]({'UserId':_0x16631e['user']['id']},{'transaction':_0x2cf30b});}});});}})[_0x0e55('0x24')](handleEntityNotFound(_0x413fe6,null))[_0x0e55('0x24')](respondWithResult(_0x413fe6,null))[_0x0e55('0x57')](handleError(_0x413fe6,null));};exports[_0x0e55('0x8f')]=function(_0x133003,_0x177d4c,_0xf79f46){return _0x133003[_0x0e55('0x6a')][_0x0e55('0x90')]({'where':{'type':_0x0e55('0x7b'),'dialActive':!![],'dialMethod':_0x0e55('0x7c')},'attributes':['id'],'raw':!![]})[_0x0e55('0x24')](function(_0x3d9675){if(_0x3d9675&&_0x3d9675[_0x0e55('0x5a')]){return db[_0x0e55('0x2b')][_0x0e55('0x1d')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x0e55('0x6d'))},'VoiceQueueId':{'$in':_[_0x0e55('0x2a')](_0x3d9675,'id')},'$or':[{'UserId':null},{'UserId':_0x133003['user']['id']}]}});}return 0x0;})['then'](function(_0x3e1e14){if(!_[_0x0e55('0x77')](_0x3e1e14)&&_[_0x0e55('0x91')](_0x3e1e14)){return _0x177d4c['status'](0xc8)[_0x0e55('0x22')]({'contacts':_0x3e1e14});}else{logger[_0x0e55('0x26')](_0x0e55('0x92'),_0x0e55('0x8f'),0x194,_0x0e55('0x93'));_0x177d4c[_0x0e55('0x19')](0x194);}})[_0x0e55('0x57')](handleError(_0x177d4c,null));};
\ No newline at end of file
index 7bebe12..09e90b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda19=['define','CmHopper','cm_hopper','scheduledat','priority','util','../../config/logger','moment','request-promise','rimraf','../../config/environment','./cmHopper.attributes','exports'];(function(_0x12fc8d,_0x19ee33){var _0x3f9d04=function(_0x52e51c){while(--_0x52e51c){_0x12fc8d['push'](_0x12fc8d['shift']());}};_0x3f9d04(++_0x19ee33);}(_0xda19,0xd5));var _0x9da1=function(_0xb6531d,_0x2dbff7){_0xb6531d=_0xb6531d-0x0;var _0x261e02=_0xda19[_0xb6531d];return _0x261e02;};'use strict';var _=require('lodash');var util=require(_0x9da1('0x0'));var logger=require(_0x9da1('0x1'))('api');var moment=require(_0x9da1('0x2'));var BPromise=require('bluebird');var rp=require(_0x9da1('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9da1('0x4'));var config=require(_0x9da1('0x5'));var attributes=require(_0x9da1('0x6'));module[_0x9da1('0x7')]=function(_0x156faf,_0x2dcbc6){return _0x156faf[_0x9da1('0x8')](_0x9da1('0x9'),attributes,{'tableName':_0x9da1('0xa'),'paranoid':![],'indexes':[{'name':_0x9da1('0xb'),'fields':['scheduledat']},{'name':'phone','fields':['phone']},{'name':_0x9da1('0xc'),'fields':['priority']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1261=['path','rimraf','../../config/environment','./cmHopper.attributes','define','cm_hopper','scheduledat','phone','priority','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0xa79171,_0x17cfc4){var _0x4d3b2e=function(_0x529a18){while(--_0x529a18){_0xa79171['push'](_0xa79171['shift']());}};_0x4d3b2e(++_0x17cfc4);}(_0x1261,0x144));var _0x1126=function(_0x134058,_0x423995){_0x134058=_0x134058-0x0;var _0x14a1a9=_0x1261[_0x134058];return _0x14a1a9;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var logger=require(_0x1126('0x1'))(_0x1126('0x2'));var moment=require(_0x1126('0x3'));var BPromise=require(_0x1126('0x4'));var rp=require(_0x1126('0x5'));var fs=require('fs');var path=require(_0x1126('0x6'));var rimraf=require(_0x1126('0x7'));var config=require(_0x1126('0x8'));var attributes=require(_0x1126('0x9'));module['exports']=function(_0x5c68c8,_0x40ba58){return _0x5c68c8[_0x1126('0xa')]('CmHopper',attributes,{'tableName':_0x1126('0xb'),'paranoid':![],'indexes':[{'name':_0x1126('0xc'),'fields':[_0x1126('0xc')]},{'name':_0x1126('0xd'),'fields':[_0x1126('0xd')]},{'name':'priority','fields':[_0x1126('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index a668c08..54b985b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ab2=['../../config/environment','jayson/promise','client','request','info','CmHopper,\x20%s,\x20%s','request\x20sent','CmHopper,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetCmHopper','CmHopper','options','raw','where','attributes','limit','include','map','model','then','debug','find','ShowCmHopper','CreateCmHopper','create','body','update','UpdateCmHopper','DestroyCmHopper','destroy','GetContactDialer','CmContact','sequelize','transaction','findAll','keys','Agent','length','UserId','push','all','MoveContactManagedDialer','CmHopperFinal','CountReScheduled','COUNT','`scheduledat`\x20>=\x20','format','\x22%s\x22','\x20,\x201,\x20null','GetContactRecallMe','order','LOCK','describe','Contact','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x0ab2,0x17f));var _0x20ab=function(_0x84a159,_0x1d2a62){_0x84a159=_0x84a159-0x0;var _0x596baa=_0x0ab2[_0x84a159];return _0x596baa;};'use strict';var _=require(_0x20ab('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x20ab('0x1'));var rs=require(_0x20ab('0x2'));var fs=require('fs');var Redis=require(_0x20ab('0x3'));var db=require(_0x20ab('0x4'))['db'];var utils=require(_0x20ab('0x5'));var logger=require(_0x20ab('0x6'))('rpc');var config=require(_0x20ab('0x7'));var jayson=require(_0x20ab('0x8'));var client=jayson[_0x20ab('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1957cc,_0x1b53f0,_0x302ffb){return new BPromise(function(_0x10eb27,_0x3afd5d){return client[_0x20ab('0xa')](_0x1957cc,_0x302ffb)['then'](function(_0x1793c2){logger[_0x20ab('0xb')](_0x20ab('0xc'),_0x1b53f0,_0x20ab('0xd'));logger['debug'](_0x20ab('0xe'),_0x1b53f0,'request\x20sent',JSON[_0x20ab('0xf')](_0x1793c2));if(_0x1793c2[_0x20ab('0x10')]){if(_0x1793c2['error']['code']===0x1f4){logger[_0x20ab('0x10')](_0x20ab('0xc'),_0x1b53f0,_0x1793c2['error'][_0x20ab('0x11')]);return _0x3afd5d(_0x1793c2[_0x20ab('0x10')][_0x20ab('0x11')]);}logger['error']('CmHopper,\x20%s,\x20%s',_0x1b53f0,_0x1793c2['error'][_0x20ab('0x11')]);return _0x10eb27(_0x1793c2[_0x20ab('0x10')][_0x20ab('0x11')]);}else{logger[_0x20ab('0xb')](_0x20ab('0xc'),_0x1b53f0,_0x20ab('0xd'));_0x10eb27(_0x1793c2[_0x20ab('0x12')]['message']);}})[_0x20ab('0x13')](function(_0x2d1869){logger[_0x20ab('0x10')]('CmHopper,\x20%s,\x20%s',_0x1b53f0,_0x2d1869);_0x3afd5d(_0x2d1869);});});}exports[_0x20ab('0x14')]=function(_0x4409de){var _0x3494dc=this;return new Promise(function(_0x5123c9,_0x3d22d0){return db[_0x20ab('0x15')]['findAll']({'raw':_0x4409de[_0x20ab('0x16')]?_0x4409de[_0x20ab('0x16')][_0x20ab('0x17')]===undefined?!![]:![]:!![],'where':_0x4409de['options']?_0x4409de[_0x20ab('0x16')][_0x20ab('0x18')]||null:null,'attributes':_0x4409de[_0x20ab('0x16')]?_0x4409de[_0x20ab('0x16')][_0x20ab('0x19')]||null:null,'limit':_0x4409de[_0x20ab('0x16')]?_0x4409de[_0x20ab('0x16')][_0x20ab('0x1a')]||null:null,'include':_0x4409de[_0x20ab('0x16')]?_0x4409de[_0x20ab('0x16')][_0x20ab('0x1b')]?_[_0x20ab('0x1c')](_0x4409de[_0x20ab('0x16')][_0x20ab('0x1b')],function(_0x4a3662){return{'model':db[_0x4a3662[_0x20ab('0x1d')]],'as':_0x4a3662['as'],'attributes':_0x4a3662['attributes'],'include':_0x4a3662[_0x20ab('0x1b')]?_[_0x20ab('0x1c')](_0x4a3662['include'],function(_0x2fa3f0){return{'model':db[_0x2fa3f0['model']],'as':_0x2fa3f0['as'],'attributes':_0x2fa3f0['attributes'],'include':_0x2fa3f0['include']?_[_0x20ab('0x1c')](_0x2fa3f0[_0x20ab('0x1b')],function(_0x43d2ca){return{'model':db[_0x43d2ca[_0x20ab('0x1d')]],'as':_0x43d2ca['as'],'attributes':_0x43d2ca[_0x20ab('0x19')]};}):[]};}):[]};}):[]:[]})[_0x20ab('0x1e')](function(_0x4c1708){logger['info'](_0x20ab('0x14'),_0x4409de);logger[_0x20ab('0x1f')](_0x20ab('0x14'),_0x4409de,JSON[_0x20ab('0xf')](_0x4c1708));_0x5123c9(_0x4c1708);})[_0x20ab('0x13')](function(_0x570efd){logger['error']('GetCmHopper',_0x570efd[_0x20ab('0x11')],_0x4409de);_0x3d22d0(_0x3494dc[_0x20ab('0x10')](0x1f4,_0x570efd[_0x20ab('0x11')]));});});};exports['ShowCmHopper']=function(_0x3cdd0a){var _0x1befe8=this;return new Promise(function(_0x444c62,_0x3f4ec9){return db[_0x20ab('0x15')][_0x20ab('0x20')]({'raw':_0x3cdd0a[_0x20ab('0x16')]?_0x3cdd0a['options'][_0x20ab('0x17')]===undefined?!![]:![]:!![],'where':_0x3cdd0a[_0x20ab('0x16')]?_0x3cdd0a['options']['where']||null:null,'attributes':_0x3cdd0a['options']?_0x3cdd0a[_0x20ab('0x16')][_0x20ab('0x19')]||null:null,'include':_0x3cdd0a[_0x20ab('0x16')]?_0x3cdd0a['options'][_0x20ab('0x1b')]?_[_0x20ab('0x1c')](_0x3cdd0a[_0x20ab('0x16')][_0x20ab('0x1b')],function(_0x52dbd1){return{'model':db[_0x52dbd1[_0x20ab('0x1d')]],'as':_0x52dbd1['as'],'attributes':_0x52dbd1['attributes'],'include':_0x52dbd1[_0x20ab('0x1b')]?_[_0x20ab('0x1c')](_0x52dbd1[_0x20ab('0x1b')],function(_0xcb95d7){return{'model':db[_0xcb95d7['model']],'as':_0xcb95d7['as'],'attributes':_0xcb95d7[_0x20ab('0x19')],'include':_0xcb95d7['include']?_[_0x20ab('0x1c')](_0xcb95d7['include'],function(_0x1c7e67){return{'model':db[_0x1c7e67['model']],'as':_0x1c7e67['as'],'attributes':_0x1c7e67['attributes']};}):[]};}):[]};}):[]:[]})[_0x20ab('0x1e')](function(_0x27b48f){logger[_0x20ab('0xb')]('ShowCmHopper',_0x3cdd0a);logger[_0x20ab('0x1f')]('ShowCmHopper',_0x3cdd0a,JSON['stringify'](_0x27b48f));_0x444c62(_0x27b48f);})[_0x20ab('0x13')](function(_0x36d950){logger['error'](_0x20ab('0x21'),_0x36d950['message'],_0x3cdd0a);_0x3f4ec9(_0x1befe8[_0x20ab('0x10')](0x1f4,_0x36d950[_0x20ab('0x11')]));});});};exports[_0x20ab('0x22')]=function(_0x545b4a){var _0xfdf399=this;return new Promise(function(_0xcd853f,_0xf9c3a4){return db[_0x20ab('0x15')][_0x20ab('0x23')](_0x545b4a[_0x20ab('0x24')],{'raw':_0x545b4a['options']?_0x545b4a[_0x20ab('0x16')][_0x20ab('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x2b6531){logger[_0x20ab('0xb')](_0x20ab('0x22'),_0x545b4a);logger['debug'](_0x20ab('0x22'),_0x545b4a,JSON[_0x20ab('0xf')](_0x2b6531));_0xcd853f(_0x2b6531);})[_0x20ab('0x13')](function(_0x24dae9){logger[_0x20ab('0x10')](_0x20ab('0x22'),_0x24dae9[_0x20ab('0x11')],_0x545b4a);_0xf9c3a4(_0xfdf399[_0x20ab('0x10')](0x1f4,_0x24dae9[_0x20ab('0x11')]));});});};exports['UpdateCmHopper']=function(_0xbe75d1){var _0x133774=this;return new Promise(function(_0x43f3aa,_0x57b83b){return db['CmHopper'][_0x20ab('0x25')](_0xbe75d1['body'],{'raw':_0xbe75d1['options']?_0xbe75d1[_0x20ab('0x16')][_0x20ab('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xbe75d1[_0x20ab('0x16')]?_0xbe75d1[_0x20ab('0x16')][_0x20ab('0x18')]||null:null,'attributes':_0xbe75d1['options']?_0xbe75d1[_0x20ab('0x16')][_0x20ab('0x19')]||null:null,'limit':_0xbe75d1['options']?_0xbe75d1['options']['limit']||null:null})[_0x20ab('0x1e')](function(_0x4d3fd1){logger[_0x20ab('0xb')]('UpdateCmHopper',_0xbe75d1);logger['debug']('UpdateCmHopper',_0xbe75d1,JSON[_0x20ab('0xf')](_0x4d3fd1));_0x43f3aa(_0x4d3fd1);})[_0x20ab('0x13')](function(_0x1b879e){logger[_0x20ab('0x10')](_0x20ab('0x26'),_0x1b879e['message'],_0xbe75d1);_0x57b83b(_0x133774['error'](0x1f4,_0x1b879e[_0x20ab('0x11')]));});});};exports[_0x20ab('0x27')]=function(_0x47fd1d){var _0x53073a=this;return new Promise(function(_0x2517dd,_0x3ba589){return db[_0x20ab('0x15')][_0x20ab('0x28')]({'where':_0x47fd1d[_0x20ab('0x16')]?_0x47fd1d['options']['where']||null:null})[_0x20ab('0x1e')](function(_0x52effb){logger[_0x20ab('0xb')](_0x20ab('0x27'),_0x47fd1d);logger[_0x20ab('0x1f')](_0x20ab('0x27'),_0x47fd1d,JSON['stringify'](_0x52effb));_0x2517dd(_0x52effb);})[_0x20ab('0x13')](function(_0x1027ec){logger[_0x20ab('0x10')](_0x20ab('0x27'),_0x1027ec['message'],_0x47fd1d);_0x3ba589(_0x53073a['error'](0x1f4,_0x1027ec['message']));});});};exports[_0x20ab('0x29')]=function(_0x17c044){var _0x197b1e=this;return new Promise(function(_0x5c4fcf,_0x5b2c79){return db[_0x20ab('0x2a')]['describe']()['then'](function(_0x1537fb){return db[_0x20ab('0x2b')][_0x20ab('0x2c')](function(_0x506d28){return db[_0x20ab('0x15')][_0x20ab('0x2d')]({'where':_0x17c044[_0x20ab('0x16')]?_0x17c044[_0x20ab('0x16')]['where']||null:null,'attributes':_0x17c044[_0x20ab('0x16')]?_0x17c044['options'][_0x20ab('0x19')]||null:null,'limit':_0x17c044[_0x20ab('0x16')]?_0x17c044['options'][_0x20ab('0x1a')]||null:null,'order':_0x17c044[_0x20ab('0x16')]?_0x17c044[_0x20ab('0x16')]['order']||null:null,'transaction':_0x506d28,'lock':_0x506d28['LOCK']['UPDATE'],'include':[{'model':db[_0x20ab('0x2a')],'as':'Contact','attributes':_[_0x20ab('0x2e')](_0x1537fb)},{'model':db['User'],'as':_0x20ab('0x2f'),'attributes':['id','name','voicePause']}]})['then'](function(_0x160a99){var _0x2c2e44=[];var _0x449971=[];for(var _0x251ea8=0x0;_0x251ea8<_0x160a99[_0x20ab('0x30')];_0x251ea8+=0x1){var _0x2a010d=_0x160a99[_0x251ea8][_0x20ab('0x31')];if(_0x2a010d===null){_0x2c2e44['push'](_0x160a99[_0x251ea8]['update'](_0x17c044[_0x20ab('0x24')],{'transaction':_0x506d28}));}else if(!_0x449971['includes'](_0x2a010d)){_0x449971[_0x20ab('0x32')](_0x2a010d);_0x2c2e44[_0x20ab('0x32')](_0x160a99[_0x251ea8][_0x20ab('0x25')](_0x17c044['body'],{'transaction':_0x506d28}));}}return BPromise[_0x20ab('0x33')](_0x2c2e44);});})[_0x20ab('0x1e')](function(_0x582c09){logger['info'](_0x20ab('0x29'),_0x17c044);logger[_0x20ab('0x1f')](_0x20ab('0x29'),_0x17c044,JSON[_0x20ab('0xf')](_0x582c09));_0x5c4fcf(_0x582c09);})[_0x20ab('0x13')](function(_0x236d28){logger[_0x20ab('0x10')]('GetContactDialer',_0x236d28['message'],_0x17c044);_0x5b2c79(_0x197b1e['error'](0x1f4,_0x236d28[_0x20ab('0x11')]));});});});};exports[_0x20ab('0x34')]=function(_0x3543e3){var _0x5cb996=this;return new Promise(function(_0x2c2c1b,_0x4cf1f6){return db[_0x20ab('0x2b')][_0x20ab('0x2c')](function(_0x5e49c2){return db[_0x20ab('0x35')][_0x20ab('0x23')](_0x3543e3[_0x20ab('0x24')],{'raw':_0x3543e3[_0x20ab('0x16')]?_0x3543e3['options']['raw']===undefined?!![]:![]:!![],'transaction':_0x5e49c2})[_0x20ab('0x1e')](function(){return db['CmHopper'][_0x20ab('0x28')]({'where':_0x3543e3['options']?_0x3543e3['options'][_0x20ab('0x18')]||null:null,'transaction':_0x5e49c2});});})[_0x20ab('0x1e')](function(_0xabb39b){logger[_0x20ab('0xb')](_0x20ab('0x34'),_0x3543e3);logger[_0x20ab('0x1f')](_0x20ab('0x34'),_0x3543e3,JSON[_0x20ab('0xf')](_0xabb39b));_0x2c2c1b(_0xabb39b);})[_0x20ab('0x13')](function(_0x16c2ff){logger['error'](_0x20ab('0x34'),_0x16c2ff[_0x20ab('0x11')],_0x3543e3);_0x4cf1f6(_0x5cb996['error'](0x1f4,_0x16c2ff[_0x20ab('0x11')]));});});};exports[_0x20ab('0x36')]=function(_0x33eb2c){var _0x38b00e=this;return new Promise(function(_0x4c6480,_0x29b9d5){return db[_0x20ab('0x15')][_0x20ab('0x2d')]({'raw':_0x33eb2c['options']?_0x33eb2c[_0x20ab('0x16')][_0x20ab('0x17')]===undefined?!![]:![]:!![],'where':_0x33eb2c[_0x20ab('0x16')]?_0x33eb2c[_0x20ab('0x16')][_0x20ab('0x18')]||null:null,'attributes':[[db[_0x20ab('0x2b')]['fn'](_0x20ab('0x37'),db[_0x20ab('0x2b')]['fn']('IF',db[_0x20ab('0x2b')]['literal'](_0x20ab('0x38')+util[_0x20ab('0x39')](_0x20ab('0x3a'),moment()[_0x20ab('0x39')]('YYYY-MM-DD\x20HH:mm:ss'))+_0x20ab('0x3b')))),'contactsRescheduled']]})[_0x20ab('0x1e')](function(_0x1ca6b0){logger['info']('CountReScheduled',_0x33eb2c);logger[_0x20ab('0x1f')](_0x20ab('0x36'),_0x33eb2c,JSON['stringify'](_0x1ca6b0));_0x4c6480(_0x1ca6b0);})[_0x20ab('0x13')](function(_0x40fe07){logger[_0x20ab('0x10')](_0x20ab('0x36'),_0x40fe07[_0x20ab('0x11')],_0x33eb2c);_0x29b9d5(_0x38b00e[_0x20ab('0x10')](0x1f4,_0x40fe07[_0x20ab('0x11')]));});});};exports[_0x20ab('0x3c')]=function(_0x43825e){var _0x43b3ce=this;return new Promise(function(_0x21b323,_0x2c57a2){return db['CmContact']['describe']()[_0x20ab('0x1e')](function(_0x13913f){return db[_0x20ab('0x2b')][_0x20ab('0x2c')](function(_0x375367){return db[_0x20ab('0x15')][_0x20ab('0x2d')]({'where':_0x43825e[_0x20ab('0x16')]?_0x43825e[_0x20ab('0x16')]['where']||null:null,'attributes':_0x43825e[_0x20ab('0x16')]?_0x43825e[_0x20ab('0x16')]['attributes']||null:null,'limit':0x1,'order':_0x43825e[_0x20ab('0x16')]?_0x43825e[_0x20ab('0x16')][_0x20ab('0x3d')]||null:null,'group':db['CmHopper'][_0x20ab('0x31')],'transaction':_0x375367,'lock':_0x375367[_0x20ab('0x3e')]['UPDATE'],'include':_0x43825e['options']?_0x43825e[_0x20ab('0x16')][_0x20ab('0x1b')]?_['map'](_0x43825e['options']['include'],function(_0x45ea00){return{'model':db[_0x45ea00[_0x20ab('0x1d')]],'as':_0x45ea00['as'],'attributes':_0x45ea00[_0x20ab('0x19')],'include':_0x45ea00['include']?_['map'](_0x45ea00['include'],function(_0x48d732){return{'model':db[_0x48d732[_0x20ab('0x1d')]],'as':_0x48d732['as'],'attributes':_0x48d732[_0x20ab('0x19')],'include':_0x48d732[_0x20ab('0x1b')]?_['map'](_0x48d732[_0x20ab('0x1b')],function(_0x3dc653){return{'model':db[_0x3dc653['model']],'as':_0x3dc653['as'],'attributes':_0x3dc653[_0x20ab('0x19')]};}):[]};}):[]};}):[]:[]})[_0x20ab('0x1e')](function(_0x339f2e){var _0x15efa4=[];for(var _0x361107=0x0;_0x361107<_0x339f2e[_0x20ab('0x30')];_0x361107+=0x1){_0x15efa4[_0x20ab('0x32')](_0x339f2e[_0x361107]['update'](_0x43825e[_0x20ab('0x24')],{'transaction':_0x375367}));}return BPromise[_0x20ab('0x33')](_0x15efa4);});})[_0x20ab('0x1e')](function(_0x4cdf59){logger['info'](_0x20ab('0x3c'),_0x43825e);logger[_0x20ab('0x1f')](_0x20ab('0x3c'),_0x43825e,JSON[_0x20ab('0xf')](_0x4cdf59));_0x21b323(_0x4cdf59);})[_0x20ab('0x13')](function(_0x57d5e7){logger[_0x20ab('0x10')]('GetContactRecallMe',_0x57d5e7[_0x20ab('0x11')],_0x43825e);_0x2c57a2(_0x43b3ce[_0x20ab('0x10')](0x1f4,_0x57d5e7['message']));});});});};exports['GetCmHopperPreview']=function(_0x1336dd){var _0x4e5373=this;return new Promise(function(_0x211314,_0x3ef3ea){db[_0x20ab('0x2a')][_0x20ab('0x3f')]()[_0x20ab('0x1e')](function(_0x200d60){return db[_0x20ab('0x15')]['findAll']({'raw':_0x1336dd['options']?_0x1336dd['options'][_0x20ab('0x17')]===undefined?!![]:![]:!![],'where':_0x1336dd[_0x20ab('0x16')]?_0x1336dd[_0x20ab('0x16')][_0x20ab('0x18')]||null:null,'attributes':_0x1336dd['options']?_0x1336dd[_0x20ab('0x16')][_0x20ab('0x19')]||null:null,'limit':_0x1336dd[_0x20ab('0x16')]?_0x1336dd[_0x20ab('0x16')][_0x20ab('0x1a')]||null:null,'include':_0x1336dd[_0x20ab('0x16')]?_0x1336dd[_0x20ab('0x16')][_0x20ab('0x1b')]?_[_0x20ab('0x1c')](_0x1336dd[_0x20ab('0x16')][_0x20ab('0x1b')],function(_0x42e3d2){return{'model':db[_0x42e3d2[_0x20ab('0x1d')]],'as':_0x42e3d2['as'],'attributes':_0x42e3d2['as']===_0x20ab('0x40')?_[_0x20ab('0x2e')](_0x200d60):_0x42e3d2[_0x20ab('0x19')],'include':_0x42e3d2['include']?_[_0x20ab('0x1c')](_0x42e3d2[_0x20ab('0x1b')],function(_0xa2f225){return{'model':db[_0xa2f225[_0x20ab('0x1d')]],'as':_0xa2f225['as'],'attributes':_0xa2f225[_0x20ab('0x19')],'include':_0xa2f225[_0x20ab('0x1b')]?_[_0x20ab('0x1c')](_0xa2f225[_0x20ab('0x1b')],function(_0x1359b8){return{'model':db[_0x1359b8[_0x20ab('0x1d')]],'as':_0x1359b8['as'],'attributes':_0x1359b8[_0x20ab('0x19')]};}):[]};}):[]};}):[]:[]})[_0x20ab('0x1e')](function(_0x4f068a){logger[_0x20ab('0xb')]('GetCmHopper',_0x1336dd);logger[_0x20ab('0x1f')]('GetCmHopper',_0x1336dd,JSON[_0x20ab('0xf')](_0x4f068a));_0x211314(_0x4f068a);})[_0x20ab('0x13')](function(_0xf7434f){logger[_0x20ab('0x10')](_0x20ab('0x14'),_0xf7434f[_0x20ab('0x11')],_0x1336dd);_0x3ef3ea(_0x4e5373[_0x20ab('0x10')](0x1f4,_0xf7434f[_0x20ab('0x11')]));});});});};
\ No newline at end of file
+var _0x6fa2=['stringify','error','message','info','result','catch','GetCmHopper','CmHopper','options','raw','where','limit','include','map','attributes','model','ShowCmHopper','CreateCmHopper','create','body','UpdateCmHopper','update','DestroyCmHopper','GetContactDialer','CmContact','describe','sequelize','transaction','order','LOCK','UPDATE','Contact','keys','User','Agent','voicePause','length','UserId','push','MoveContactManagedDialer','CmHopperFinal','CountReScheduled','findAll','COUNT','literal','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','contactsRescheduled','GetContactRecallMe','GetCmHopperPreview','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','CmHopper,\x20%s,\x20%s','request\x20sent','debug','CmHopper,\x20%s,\x20%s,\x20%s'];(function(_0x429370,_0x46ff4c){var _0x41a3ad=function(_0x47d51e){while(--_0x47d51e){_0x429370['push'](_0x429370['shift']());}};_0x41a3ad(++_0x46ff4c);}(_0x6fa2,0x196));var _0x26fa=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x6fa2[_0x4b369d];return _0x571a98;};'use strict';var _=require(_0x26fa('0x0'));var util=require(_0x26fa('0x1'));var moment=require(_0x26fa('0x2'));var BPromise=require(_0x26fa('0x3'));var rs=require(_0x26fa('0x4'));var fs=require('fs');var Redis=require(_0x26fa('0x5'));var db=require(_0x26fa('0x6'))['db'];var utils=require(_0x26fa('0x7'));var logger=require(_0x26fa('0x8'))(_0x26fa('0x9'));var config=require(_0x26fa('0xa'));var jayson=require(_0x26fa('0xb'));var client=jayson[_0x26fa('0xc')][_0x26fa('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x169383,_0x2b3a76,_0x251fc4){return new BPromise(function(_0x365b81,_0x3ad91f){return client[_0x26fa('0xe')](_0x169383,_0x251fc4)[_0x26fa('0xf')](function(_0x43cdca){logger['info'](_0x26fa('0x10'),_0x2b3a76,_0x26fa('0x11'));logger[_0x26fa('0x12')](_0x26fa('0x13'),_0x2b3a76,'request\x20sent',JSON[_0x26fa('0x14')](_0x43cdca));if(_0x43cdca[_0x26fa('0x15')]){if(_0x43cdca[_0x26fa('0x15')]['code']===0x1f4){logger[_0x26fa('0x15')](_0x26fa('0x10'),_0x2b3a76,_0x43cdca[_0x26fa('0x15')]['message']);return _0x3ad91f(_0x43cdca[_0x26fa('0x15')][_0x26fa('0x16')]);}logger['error']('CmHopper,\x20%s,\x20%s',_0x2b3a76,_0x43cdca[_0x26fa('0x15')][_0x26fa('0x16')]);return _0x365b81(_0x43cdca[_0x26fa('0x15')][_0x26fa('0x16')]);}else{logger[_0x26fa('0x17')](_0x26fa('0x10'),_0x2b3a76,'request\x20sent');_0x365b81(_0x43cdca[_0x26fa('0x18')][_0x26fa('0x16')]);}})[_0x26fa('0x19')](function(_0x3a824c){logger[_0x26fa('0x15')](_0x26fa('0x10'),_0x2b3a76,_0x3a824c);_0x3ad91f(_0x3a824c);});});}exports[_0x26fa('0x1a')]=function(_0x5697bf){var _0x53e365=this;return new Promise(function(_0x370fdb,_0x28c43b){return db[_0x26fa('0x1b')]['findAll']({'raw':_0x5697bf[_0x26fa('0x1c')]?_0x5697bf[_0x26fa('0x1c')][_0x26fa('0x1d')]===undefined?!![]:![]:!![],'where':_0x5697bf['options']?_0x5697bf['options'][_0x26fa('0x1e')]||null:null,'attributes':_0x5697bf[_0x26fa('0x1c')]?_0x5697bf['options']['attributes']||null:null,'limit':_0x5697bf[_0x26fa('0x1c')]?_0x5697bf['options'][_0x26fa('0x1f')]||null:null,'include':_0x5697bf['options']?_0x5697bf['options'][_0x26fa('0x20')]?_[_0x26fa('0x21')](_0x5697bf[_0x26fa('0x1c')][_0x26fa('0x20')],function(_0x161956){return{'model':db[_0x161956['model']],'as':_0x161956['as'],'attributes':_0x161956[_0x26fa('0x22')],'include':_0x161956[_0x26fa('0x20')]?_[_0x26fa('0x21')](_0x161956['include'],function(_0x2a542e){return{'model':db[_0x2a542e[_0x26fa('0x23')]],'as':_0x2a542e['as'],'attributes':_0x2a542e[_0x26fa('0x22')],'include':_0x2a542e[_0x26fa('0x20')]?_[_0x26fa('0x21')](_0x2a542e[_0x26fa('0x20')],function(_0x3a1218){return{'model':db[_0x3a1218['model']],'as':_0x3a1218['as'],'attributes':_0x3a1218['attributes']};}):[]};}):[]};}):[]:[]})[_0x26fa('0xf')](function(_0x76aeff){logger[_0x26fa('0x17')]('GetCmHopper',_0x5697bf);logger[_0x26fa('0x12')](_0x26fa('0x1a'),_0x5697bf,JSON['stringify'](_0x76aeff));_0x370fdb(_0x76aeff);})[_0x26fa('0x19')](function(_0x548bfb){logger[_0x26fa('0x15')]('GetCmHopper',_0x548bfb[_0x26fa('0x16')],_0x5697bf);_0x28c43b(_0x53e365[_0x26fa('0x15')](0x1f4,_0x548bfb[_0x26fa('0x16')]));});});};exports[_0x26fa('0x24')]=function(_0x564c84){var _0x178c98=this;return new Promise(function(_0xfd42f8,_0x413a06){return db[_0x26fa('0x1b')]['find']({'raw':_0x564c84['options']?_0x564c84[_0x26fa('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x564c84[_0x26fa('0x1c')]?_0x564c84[_0x26fa('0x1c')][_0x26fa('0x1e')]||null:null,'attributes':_0x564c84[_0x26fa('0x1c')]?_0x564c84[_0x26fa('0x1c')][_0x26fa('0x22')]||null:null,'include':_0x564c84[_0x26fa('0x1c')]?_0x564c84[_0x26fa('0x1c')][_0x26fa('0x20')]?_[_0x26fa('0x21')](_0x564c84[_0x26fa('0x1c')][_0x26fa('0x20')],function(_0x8701fd){return{'model':db[_0x8701fd[_0x26fa('0x23')]],'as':_0x8701fd['as'],'attributes':_0x8701fd[_0x26fa('0x22')],'include':_0x8701fd['include']?_[_0x26fa('0x21')](_0x8701fd[_0x26fa('0x20')],function(_0x1fc25f){return{'model':db[_0x1fc25f[_0x26fa('0x23')]],'as':_0x1fc25f['as'],'attributes':_0x1fc25f[_0x26fa('0x22')],'include':_0x1fc25f[_0x26fa('0x20')]?_[_0x26fa('0x21')](_0x1fc25f[_0x26fa('0x20')],function(_0x3c4f3b){return{'model':db[_0x3c4f3b[_0x26fa('0x23')]],'as':_0x3c4f3b['as'],'attributes':_0x3c4f3b['attributes']};}):[]};}):[]};}):[]:[]})[_0x26fa('0xf')](function(_0x133ab4){logger[_0x26fa('0x17')](_0x26fa('0x24'),_0x564c84);logger[_0x26fa('0x12')](_0x26fa('0x24'),_0x564c84,JSON[_0x26fa('0x14')](_0x133ab4));_0xfd42f8(_0x133ab4);})['catch'](function(_0x109a29){logger[_0x26fa('0x15')](_0x26fa('0x24'),_0x109a29['message'],_0x564c84);_0x413a06(_0x178c98['error'](0x1f4,_0x109a29[_0x26fa('0x16')]));});});};exports[_0x26fa('0x25')]=function(_0x90356d){var _0x39ee8a=this;return new Promise(function(_0x5a6f00,_0x30c6c0){return db[_0x26fa('0x1b')][_0x26fa('0x26')](_0x90356d[_0x26fa('0x27')],{'raw':_0x90356d[_0x26fa('0x1c')]?_0x90356d['options'][_0x26fa('0x1d')]===undefined?!![]:![]:!![]})[_0x26fa('0xf')](function(_0x183334){logger[_0x26fa('0x17')](_0x26fa('0x25'),_0x90356d);logger[_0x26fa('0x12')](_0x26fa('0x25'),_0x90356d,JSON[_0x26fa('0x14')](_0x183334));_0x5a6f00(_0x183334);})[_0x26fa('0x19')](function(_0x3be127){logger[_0x26fa('0x15')](_0x26fa('0x25'),_0x3be127[_0x26fa('0x16')],_0x90356d);_0x30c6c0(_0x39ee8a[_0x26fa('0x15')](0x1f4,_0x3be127['message']));});});};exports[_0x26fa('0x28')]=function(_0x31fd72){var _0x367334=this;return new Promise(function(_0x3dab73,_0x49c837){return db[_0x26fa('0x1b')][_0x26fa('0x29')](_0x31fd72[_0x26fa('0x27')],{'raw':_0x31fd72[_0x26fa('0x1c')]?_0x31fd72['options'][_0x26fa('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x31fd72['options']?_0x31fd72[_0x26fa('0x1c')][_0x26fa('0x1e')]||null:null,'attributes':_0x31fd72[_0x26fa('0x1c')]?_0x31fd72['options'][_0x26fa('0x22')]||null:null,'limit':_0x31fd72[_0x26fa('0x1c')]?_0x31fd72['options'][_0x26fa('0x1f')]||null:null})[_0x26fa('0xf')](function(_0x2e878b){logger['info'](_0x26fa('0x28'),_0x31fd72);logger[_0x26fa('0x12')](_0x26fa('0x28'),_0x31fd72,JSON[_0x26fa('0x14')](_0x2e878b));_0x3dab73(_0x2e878b);})['catch'](function(_0x48cbb2){logger[_0x26fa('0x15')](_0x26fa('0x28'),_0x48cbb2[_0x26fa('0x16')],_0x31fd72);_0x49c837(_0x367334[_0x26fa('0x15')](0x1f4,_0x48cbb2[_0x26fa('0x16')]));});});};exports[_0x26fa('0x2a')]=function(_0x5e8016){var _0x6cb20=this;return new Promise(function(_0x49f2ff,_0x32c47e){return db[_0x26fa('0x1b')]['destroy']({'where':_0x5e8016[_0x26fa('0x1c')]?_0x5e8016[_0x26fa('0x1c')][_0x26fa('0x1e')]||null:null})[_0x26fa('0xf')](function(_0x1271f2){logger['info'](_0x26fa('0x2a'),_0x5e8016);logger[_0x26fa('0x12')](_0x26fa('0x2a'),_0x5e8016,JSON[_0x26fa('0x14')](_0x1271f2));_0x49f2ff(_0x1271f2);})['catch'](function(_0x2eb7b4){logger[_0x26fa('0x15')](_0x26fa('0x2a'),_0x2eb7b4[_0x26fa('0x16')],_0x5e8016);_0x32c47e(_0x6cb20[_0x26fa('0x15')](0x1f4,_0x2eb7b4['message']));});});};exports[_0x26fa('0x2b')]=function(_0x3fc28a){var _0x5965b8=this;return new Promise(function(_0x5c95f1,_0x48a7c5){return db[_0x26fa('0x2c')][_0x26fa('0x2d')]()[_0x26fa('0xf')](function(_0x1ee1cc){return db[_0x26fa('0x2e')][_0x26fa('0x2f')](function(_0x430456){return db['CmHopper']['findAll']({'where':_0x3fc28a[_0x26fa('0x1c')]?_0x3fc28a[_0x26fa('0x1c')]['where']||null:null,'attributes':_0x3fc28a['options']?_0x3fc28a[_0x26fa('0x1c')]['attributes']||null:null,'limit':_0x3fc28a[_0x26fa('0x1c')]?_0x3fc28a['options'][_0x26fa('0x1f')]||null:null,'order':_0x3fc28a[_0x26fa('0x1c')]?_0x3fc28a[_0x26fa('0x1c')][_0x26fa('0x30')]||null:null,'transaction':_0x430456,'lock':_0x430456[_0x26fa('0x31')][_0x26fa('0x32')],'include':[{'model':db[_0x26fa('0x2c')],'as':_0x26fa('0x33'),'attributes':_[_0x26fa('0x34')](_0x1ee1cc)},{'model':db[_0x26fa('0x35')],'as':_0x26fa('0x36'),'attributes':['id','name',_0x26fa('0x37')]}]})['then'](function(_0x22cc8e){var _0x317b97=[];var _0x2b82d2=[];for(var _0x559a04=0x0;_0x559a04<_0x22cc8e[_0x26fa('0x38')];_0x559a04+=0x1){var _0xc76042=_0x22cc8e[_0x559a04][_0x26fa('0x39')];if(_0xc76042===null){_0x317b97[_0x26fa('0x3a')](_0x22cc8e[_0x559a04][_0x26fa('0x29')](_0x3fc28a[_0x26fa('0x27')],{'transaction':_0x430456}));}else if(!_0x2b82d2['includes'](_0xc76042)){_0x2b82d2[_0x26fa('0x3a')](_0xc76042);_0x317b97[_0x26fa('0x3a')](_0x22cc8e[_0x559a04][_0x26fa('0x29')](_0x3fc28a[_0x26fa('0x27')],{'transaction':_0x430456}));}}return BPromise['all'](_0x317b97);});})['then'](function(_0x38f0b3){logger['info'](_0x26fa('0x2b'),_0x3fc28a);logger[_0x26fa('0x12')]('GetContactDialer',_0x3fc28a,JSON[_0x26fa('0x14')](_0x38f0b3));_0x5c95f1(_0x38f0b3);})[_0x26fa('0x19')](function(_0x415f23){logger['error']('GetContactDialer',_0x415f23[_0x26fa('0x16')],_0x3fc28a);_0x48a7c5(_0x5965b8[_0x26fa('0x15')](0x1f4,_0x415f23[_0x26fa('0x16')]));});});});};exports[_0x26fa('0x3b')]=function(_0x48b892){var _0x1f0ca4=this;return new Promise(function(_0x57832e,_0xa95999){return db['sequelize'][_0x26fa('0x2f')](function(_0x882622){return db[_0x26fa('0x3c')]['create'](_0x48b892[_0x26fa('0x27')],{'raw':_0x48b892[_0x26fa('0x1c')]?_0x48b892['options']['raw']===undefined?!![]:![]:!![],'transaction':_0x882622})[_0x26fa('0xf')](function(){return db[_0x26fa('0x1b')]['destroy']({'where':_0x48b892['options']?_0x48b892['options'][_0x26fa('0x1e')]||null:null,'transaction':_0x882622});});})[_0x26fa('0xf')](function(_0x29fb02){logger['info'](_0x26fa('0x3b'),_0x48b892);logger[_0x26fa('0x12')](_0x26fa('0x3b'),_0x48b892,JSON[_0x26fa('0x14')](_0x29fb02));_0x57832e(_0x29fb02);})[_0x26fa('0x19')](function(_0x9f70c6){logger['error'](_0x26fa('0x3b'),_0x9f70c6[_0x26fa('0x16')],_0x48b892);_0xa95999(_0x1f0ca4['error'](0x1f4,_0x9f70c6[_0x26fa('0x16')]));});});};exports[_0x26fa('0x3d')]=function(_0x1c2ed9){var _0x3f9b26=this;return new Promise(function(_0x2a4e69,_0x4bbadf){return db[_0x26fa('0x1b')][_0x26fa('0x3e')]({'raw':_0x1c2ed9[_0x26fa('0x1c')]?_0x1c2ed9['options'][_0x26fa('0x1d')]===undefined?!![]:![]:!![],'where':_0x1c2ed9[_0x26fa('0x1c')]?_0x1c2ed9[_0x26fa('0x1c')][_0x26fa('0x1e')]||null:null,'attributes':[[db[_0x26fa('0x2e')]['fn'](_0x26fa('0x3f'),db['sequelize']['fn']('IF',db['sequelize'][_0x26fa('0x40')]('`scheduledat`\x20>=\x20'+util[_0x26fa('0x41')](_0x26fa('0x42'),moment()['format'](_0x26fa('0x43')))+'\x20,\x201,\x20null'))),_0x26fa('0x44')]]})[_0x26fa('0xf')](function(_0x56b17f){logger[_0x26fa('0x17')](_0x26fa('0x3d'),_0x1c2ed9);logger['debug']('CountReScheduled',_0x1c2ed9,JSON[_0x26fa('0x14')](_0x56b17f));_0x2a4e69(_0x56b17f);})[_0x26fa('0x19')](function(_0x291630){logger['error']('CountReScheduled',_0x291630[_0x26fa('0x16')],_0x1c2ed9);_0x4bbadf(_0x3f9b26[_0x26fa('0x15')](0x1f4,_0x291630['message']));});});};exports[_0x26fa('0x45')]=function(_0x831b13){var _0x4edaef=this;return new Promise(function(_0x429429,_0xda9521){return db[_0x26fa('0x2c')][_0x26fa('0x2d')]()['then'](function(_0x556a2a){return db[_0x26fa('0x2e')]['transaction'](function(_0x444fe0){return db[_0x26fa('0x1b')][_0x26fa('0x3e')]({'where':_0x831b13[_0x26fa('0x1c')]?_0x831b13[_0x26fa('0x1c')][_0x26fa('0x1e')]||null:null,'attributes':_0x831b13[_0x26fa('0x1c')]?_0x831b13['options'][_0x26fa('0x22')]||null:null,'limit':0x1,'order':_0x831b13[_0x26fa('0x1c')]?_0x831b13[_0x26fa('0x1c')][_0x26fa('0x30')]||null:null,'group':db[_0x26fa('0x1b')][_0x26fa('0x39')],'transaction':_0x444fe0,'lock':_0x444fe0['LOCK'][_0x26fa('0x32')],'include':_0x831b13[_0x26fa('0x1c')]?_0x831b13[_0x26fa('0x1c')][_0x26fa('0x20')]?_['map'](_0x831b13['options'][_0x26fa('0x20')],function(_0x279777){return{'model':db[_0x279777['model']],'as':_0x279777['as'],'attributes':_0x279777[_0x26fa('0x22')],'include':_0x279777[_0x26fa('0x20')]?_[_0x26fa('0x21')](_0x279777[_0x26fa('0x20')],function(_0x3426f9){return{'model':db[_0x3426f9[_0x26fa('0x23')]],'as':_0x3426f9['as'],'attributes':_0x3426f9[_0x26fa('0x22')],'include':_0x3426f9[_0x26fa('0x20')]?_['map'](_0x3426f9['include'],function(_0x4ddb0a){return{'model':db[_0x4ddb0a['model']],'as':_0x4ddb0a['as'],'attributes':_0x4ddb0a['attributes']};}):[]};}):[]};}):[]:[]})[_0x26fa('0xf')](function(_0x2f5529){var _0x556be0=[];for(var _0x3e37cc=0x0;_0x3e37cc<_0x2f5529[_0x26fa('0x38')];_0x3e37cc+=0x1){_0x556be0[_0x26fa('0x3a')](_0x2f5529[_0x3e37cc][_0x26fa('0x29')](_0x831b13[_0x26fa('0x27')],{'transaction':_0x444fe0}));}return BPromise['all'](_0x556be0);});})['then'](function(_0x5dcfcf){logger[_0x26fa('0x17')](_0x26fa('0x45'),_0x831b13);logger[_0x26fa('0x12')](_0x26fa('0x45'),_0x831b13,JSON[_0x26fa('0x14')](_0x5dcfcf));_0x429429(_0x5dcfcf);})[_0x26fa('0x19')](function(_0x506e28){logger[_0x26fa('0x15')](_0x26fa('0x45'),_0x506e28[_0x26fa('0x16')],_0x831b13);_0xda9521(_0x4edaef['error'](0x1f4,_0x506e28[_0x26fa('0x16')]));});});});};exports[_0x26fa('0x46')]=function(_0x276aa7){var _0x4649a7=this;return new Promise(function(_0x3b9755,_0x28dca3){db[_0x26fa('0x2c')]['describe']()[_0x26fa('0xf')](function(_0x394061){return db[_0x26fa('0x1b')][_0x26fa('0x3e')]({'raw':_0x276aa7[_0x26fa('0x1c')]?_0x276aa7[_0x26fa('0x1c')][_0x26fa('0x1d')]===undefined?!![]:![]:!![],'where':_0x276aa7['options']?_0x276aa7[_0x26fa('0x1c')][_0x26fa('0x1e')]||null:null,'attributes':_0x276aa7[_0x26fa('0x1c')]?_0x276aa7[_0x26fa('0x1c')][_0x26fa('0x22')]||null:null,'limit':_0x276aa7['options']?_0x276aa7['options'][_0x26fa('0x1f')]||null:null,'include':_0x276aa7[_0x26fa('0x1c')]?_0x276aa7['options']['include']?_['map'](_0x276aa7[_0x26fa('0x1c')]['include'],function(_0x48ddb6){return{'model':db[_0x48ddb6[_0x26fa('0x23')]],'as':_0x48ddb6['as'],'attributes':_0x48ddb6['as']===_0x26fa('0x33')?_[_0x26fa('0x34')](_0x394061):_0x48ddb6[_0x26fa('0x22')],'include':_0x48ddb6[_0x26fa('0x20')]?_[_0x26fa('0x21')](_0x48ddb6[_0x26fa('0x20')],function(_0x4ae41e){return{'model':db[_0x4ae41e[_0x26fa('0x23')]],'as':_0x4ae41e['as'],'attributes':_0x4ae41e[_0x26fa('0x22')],'include':_0x4ae41e[_0x26fa('0x20')]?_[_0x26fa('0x21')](_0x4ae41e[_0x26fa('0x20')],function(_0x3ae21c){return{'model':db[_0x3ae21c[_0x26fa('0x23')]],'as':_0x3ae21c['as'],'attributes':_0x3ae21c['attributes']};}):[]};}):[]};}):[]:[]})[_0x26fa('0xf')](function(_0x2dab03){logger[_0x26fa('0x17')]('GetCmHopper',_0x276aa7);logger[_0x26fa('0x12')]('GetCmHopper',_0x276aa7,JSON['stringify'](_0x2dab03));_0x3b9755(_0x2dab03);})[_0x26fa('0x19')](function(_0x350c1c){logger[_0x26fa('0x15')]('GetCmHopper',_0x350c1c['message'],_0x276aa7);_0x28dca3(_0x4649a7['error'](0x1f4,_0x350c1c['message']));});});});};
\ No newline at end of file
index 88b9774..4a0ce33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32da=['update','destroy','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopper.controller','get','isAuthenticated','index','/describe','/opencontacts','getOpenContacts','show','post','create','getPreview','/:id'];(function(_0x42d232,_0x5611e9){var _0x5a2e14=function(_0x3d1703){while(--_0x3d1703){_0x42d232['push'](_0x42d232['shift']());}};_0x5a2e14(++_0x5611e9);}(_0x32da,0x10a));var _0xa32d=function(_0x3db136,_0x477db0){_0x3db136=_0x3db136-0x0;var _0x33b047=_0x32da[_0x3db136];return _0x33b047;};'use strict';var multer=require(_0xa32d('0x0'));var util=require(_0xa32d('0x1'));var path=require(_0xa32d('0x2'));var timeout=require('connect-timeout');var express=require(_0xa32d('0x3'));var router=express[_0xa32d('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xa32d('0x5'));var interaction=require(_0xa32d('0x6'));var config=require(_0xa32d('0x7'));var controller=require(_0xa32d('0x8'));router[_0xa32d('0x9')]('/',auth[_0xa32d('0xa')](),controller[_0xa32d('0xb')]);router[_0xa32d('0x9')](_0xa32d('0xc'),auth[_0xa32d('0xa')](),controller['describe']);router[_0xa32d('0x9')](_0xa32d('0xd'),auth[_0xa32d('0xa')](),controller[_0xa32d('0xe')]);router[_0xa32d('0x9')]('/:id',auth[_0xa32d('0xa')](),controller[_0xa32d('0xf')]);router[_0xa32d('0x10')]('/',auth['isAuthenticated'](),controller[_0xa32d('0x11')]);router[_0xa32d('0x10')]('/preview',auth[_0xa32d('0xa')](),controller[_0xa32d('0x12')]);router['put'](_0xa32d('0x13'),auth['isAuthenticated'](),controller[_0xa32d('0x14')]);router['delete'](_0xa32d('0x13'),auth['isAuthenticated'](),controller[_0xa32d('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0x9bd1=['describe','/opencontacts','getOpenContacts','/:id','post','create','/preview','put','update','delete','destroy','multer','util','path','express','Router','fs-extra','../../components/interaction/service','./cmHopper.controller','get','isAuthenticated','/describe'];(function(_0x13c296,_0x1a5a14){var _0x274484=function(_0xf2d433){while(--_0xf2d433){_0x13c296['push'](_0x13c296['shift']());}};_0x274484(++_0x1a5a14);}(_0x9bd1,0x155));var _0x19bd=function(_0x4a2cd4,_0x379bc6){_0x4a2cd4=_0x4a2cd4-0x0;var _0x2a687d=_0x9bd1[_0x4a2cd4];return _0x2a687d;};'use strict';var multer=require(_0x19bd('0x0'));var util=require(_0x19bd('0x1'));var path=require(_0x19bd('0x2'));var timeout=require('connect-timeout');var express=require(_0x19bd('0x3'));var router=express[_0x19bd('0x4')]();var fs_extra=require(_0x19bd('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x19bd('0x6'));var config=require('../../config/environment');var controller=require(_0x19bd('0x7'));router[_0x19bd('0x8')]('/',auth[_0x19bd('0x9')](),controller['index']);router['get'](_0x19bd('0xa'),auth['isAuthenticated'](),controller[_0x19bd('0xb')]);router[_0x19bd('0x8')](_0x19bd('0xc'),auth[_0x19bd('0x9')](),controller[_0x19bd('0xd')]);router[_0x19bd('0x8')](_0x19bd('0xe'),auth[_0x19bd('0x9')](),controller['show']);router[_0x19bd('0xf')]('/',auth['isAuthenticated'](),controller[_0x19bd('0x10')]);router[_0x19bd('0xf')](_0x19bd('0x11'),auth[_0x19bd('0x9')](),controller['getPreview']);router[_0x19bd('0x12')](_0x19bd('0xe'),auth[_0x19bd('0x9')](),controller[_0x19bd('0x13')]);router[_0x19bd('0x14')](_0x19bd('0xe'),auth['isAuthenticated'](),controller[_0x19bd('0x15')]);module['exports']=router;
\ No newline at end of file
index c9453f5..9cb736f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ba8=['STRING','contactListQueue','moment'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x1ba8,0x10d));var _0x81ba=function(_0x1a6015,_0x148901){_0x1a6015=_0x1a6015-0x0;var _0x3e5890=_0x1ba8[_0x1a6015];return _0x3e5890;};'use strict';var moment=require(_0x81ba('0x0'));var Sequelize=require('sequelize');module['exports']={'phone':{'type':Sequelize[_0x81ba('0x1')],'allowNull':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0x81ba('0x2')},'ListId':{'type':Sequelize['INTEGER'],'unique':'contactListQueue'},'VoiceQueueId':{'type':Sequelize['INTEGER'],'unique':_0x81ba('0x2')}};
\ No newline at end of file
+var _0xfb15=['STRING','INTEGER','contactListQueue','moment','sequelize','exports'];(function(_0x39096d,_0x51f8a0){var _0x13da4f=function(_0x11e6b2){while(--_0x11e6b2){_0x39096d['push'](_0x39096d['shift']());}};_0x13da4f(++_0x51f8a0);}(_0xfb15,0x12f));var _0x5fb1=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xfb15[_0x501510];return _0x1e6ee5;};'use strict';var moment=require(_0x5fb1('0x0'));var Sequelize=require(_0x5fb1('0x1'));module[_0x5fb1('0x2')]={'phone':{'type':Sequelize[_0x5fb1('0x3')],'allowNull':![]},'ContactId':{'type':Sequelize[_0x5fb1('0x4')],'unique':_0x5fb1('0x5')},'ListId':{'type':Sequelize['INTEGER'],'unique':_0x5fb1('0x5')},'VoiceQueueId':{'type':Sequelize[_0x5fb1('0x4')],'unique':_0x5fb1('0x5')}};
\ No newline at end of file
index c5735c7..eab2e40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe941=['undefined','limit','count','set','Content-Range','apply','reject','save','update','then','end','name','index','map','CmHopperBlack','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','options','includeAll','include','findAll','rows','show','params','find','body','catch','destroy','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset'];(function(_0x3ad2e5,_0x94d414){var _0xc4e565=function(_0x2c96e3){while(--_0x2c96e3){_0x3ad2e5['push'](_0x3ad2e5['shift']());}};_0xc4e565(++_0x94d414);}(_0xe941,0xc4));var _0x1e94=function(_0x278e3c,_0x1c9cfd){_0x278e3c=_0x278e3c-0x0;var _0x3e2d9b=_0xe941[_0x278e3c];return _0x3e2d9b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1e94('0x0'));var zipdir=require(_0x1e94('0x1'));var jsonpatch=require(_0x1e94('0x2'));var rp=require(_0x1e94('0x3'));var moment=require(_0x1e94('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x1e94('0x5'));var util=require(_0x1e94('0x6'));var path=require(_0x1e94('0x7'));var sox=require(_0x1e94('0x8'));var csv=require(_0x1e94('0x9'));var ejs=require(_0x1e94('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1e94('0xb'));var squel=require(_0x1e94('0xc'));var crypto=require('crypto');var jsforce=require(_0x1e94('0xd'));var deskjs=require(_0x1e94('0xe'));var toCsv=require('to-csv');var querystring=require(_0x1e94('0xf'));var Papa=require('papaparse');var Redis=require(_0x1e94('0x10'));var authService=require(_0x1e94('0x11'));var qs=require(_0x1e94('0x12'));var as=require(_0x1e94('0x13'));var hardwareService=require(_0x1e94('0x14'));var logger=require(_0x1e94('0x15'))('api');var utils=require(_0x1e94('0x16'));var config=require(_0x1e94('0x17'));var licenseUtil=require(_0x1e94('0x18'));var db=require(_0x1e94('0x19'))['db'];function respondWithStatusCode(_0x13838d,_0x5ebe81){_0x5ebe81=_0x5ebe81||0xcc;return function(_0x519150){if(_0x519150){return _0x13838d[_0x1e94('0x1a')](_0x5ebe81);}return _0x13838d[_0x1e94('0x1b')](_0x5ebe81)['end']();};}function respondWithResult(_0x2025a3,_0x308081){_0x308081=_0x308081||0xc8;return function(_0x4eeaed){if(_0x4eeaed){return _0x2025a3[_0x1e94('0x1b')](_0x308081)['json'](_0x4eeaed);}};}function respondWithFilteredResult(_0x15b972,_0x4e2d35){return function(_0x5a9032){if(_0x5a9032){var _0xffe984=typeof _0x4e2d35[_0x1e94('0x1c')]===_0x1e94('0x1d')&&typeof _0x4e2d35[_0x1e94('0x1e')]===_0x1e94('0x1d');var _0x57b7e8=_0x5a9032[_0x1e94('0x1f')];var _0x428e34=_0xffe984?0x0:_0x4e2d35[_0x1e94('0x1c')];var _0x45fa5b=_0xffe984?_0x5a9032[_0x1e94('0x1f')]:_0x4e2d35[_0x1e94('0x1c')]+_0x4e2d35[_0x1e94('0x1e')];var _0x1b64bf;if(_0x45fa5b>=_0x57b7e8){_0x45fa5b=_0x57b7e8;_0x1b64bf=0xc8;}else{_0x1b64bf=0xce;}_0x15b972[_0x1e94('0x1b')](_0x1b64bf);return _0x15b972[_0x1e94('0x20')](_0x1e94('0x21'),_0x428e34+'-'+_0x45fa5b+'/'+_0x57b7e8)['json'](_0x5a9032);}return null;};}function patchUpdates(_0x15ab4){return function(_0x42848e){try{jsonpatch[_0x1e94('0x22')](_0x42848e,_0x15ab4,!![]);}catch(_0xe5826){return BPromise[_0x1e94('0x23')](_0xe5826);}return _0x42848e[_0x1e94('0x24')]();};}function saveUpdates(_0x5b8329,_0x30cf98){return function(_0x9c2206){if(_0x9c2206){return _0x9c2206[_0x1e94('0x25')](_0x5b8329)[_0x1e94('0x26')](function(_0x4fd5ab){return _0x4fd5ab;});}return null;};}function removeEntity(_0x338cd8,_0x741ff2){return function(_0x1790ec){if(_0x1790ec){return _0x1790ec['destroy']()[_0x1e94('0x26')](function(){_0x338cd8[_0x1e94('0x1b')](0xcc)[_0x1e94('0x27')]();});}};}function handleEntityNotFound(_0x2cb1e6,_0x58c364){return function(_0x92652f){if(!_0x92652f){_0x2cb1e6['sendStatus'](0x194);}return _0x92652f;};}function handleError(_0x5834b9,_0xeff195){_0xeff195=_0xeff195||0x1f4;return function(_0x3c1c7f){logger['error'](_0x3c1c7f['stack']);if(_0x3c1c7f[_0x1e94('0x28')]){delete _0x3c1c7f[_0x1e94('0x28')];}_0x5834b9['status'](_0xeff195)['send'](_0x3c1c7f);};}exports[_0x1e94('0x29')]=function(_0x20bce1,_0x351e3b){var _0x2ca82c={},_0x26d32a={},_0x2f9eb1={'count':0x0,'rows':[]};var _0x3906fd=_[_0x1e94('0x2a')](db[_0x1e94('0x2b')][_0x1e94('0x2c')],function(_0x4b0989){return{'name':_0x4b0989[_0x1e94('0x2d')],'type':_0x4b0989[_0x1e94('0x2e')][_0x1e94('0x2f')]};});_0x26d32a[_0x1e94('0x30')]=_[_0x1e94('0x2a')](_0x3906fd,_0x1e94('0x28'));_0x26d32a[_0x1e94('0x31')]=_[_0x1e94('0x32')](_0x20bce1['query']);_0x26d32a[_0x1e94('0x33')]=_[_0x1e94('0x34')](_0x26d32a[_0x1e94('0x30')],_0x26d32a[_0x1e94('0x31')]);_0x2ca82c['attributes']=_['intersection'](_0x26d32a[_0x1e94('0x30')],qs[_0x1e94('0x35')](_0x20bce1['query'][_0x1e94('0x35')]));_0x2ca82c[_0x1e94('0x36')]=_0x2ca82c[_0x1e94('0x36')][_0x1e94('0x37')]?_0x2ca82c[_0x1e94('0x36')]:_0x26d32a[_0x1e94('0x30')];if(!_0x20bce1[_0x1e94('0x31')][_0x1e94('0x38')](_0x1e94('0x39'))){_0x2ca82c[_0x1e94('0x1e')]=qs[_0x1e94('0x1e')](_0x20bce1[_0x1e94('0x31')][_0x1e94('0x1e')]);_0x2ca82c[_0x1e94('0x1c')]=qs['offset'](_0x20bce1[_0x1e94('0x31')][_0x1e94('0x1c')]);}_0x2ca82c[_0x1e94('0x3a')]=qs[_0x1e94('0x3b')](_0x20bce1['query'][_0x1e94('0x3b')]);_0x2ca82c[_0x1e94('0x3c')]=qs['filters'](_[_0x1e94('0x3d')](_0x20bce1['query'],_0x26d32a[_0x1e94('0x33')]),_0x3906fd);if(_0x20bce1['query']['filter']){_0x2ca82c[_0x1e94('0x3c')]=_[_0x1e94('0x3e')](_0x2ca82c[_0x1e94('0x3c')],{'$or':_['map'](_0x3906fd,function(_0x30d0e4){if(_0x30d0e4[_0x1e94('0x2e')]!=='VIRTUAL'){var _0x2c9f68={};_0x2c9f68[_0x30d0e4['name']]={'$like':'%'+_0x20bce1[_0x1e94('0x31')]['filter']+'%'};return _0x2c9f68;}})});}_0x2ca82c=_[_0x1e94('0x3e')]({},_0x2ca82c,_0x20bce1[_0x1e94('0x3f')]);var _0x225c64={'where':_0x2ca82c['where']};return db[_0x1e94('0x2b')][_0x1e94('0x1f')](_0x225c64)[_0x1e94('0x26')](function(_0x3e0212){_0x2f9eb1[_0x1e94('0x1f')]=_0x3e0212;if(_0x20bce1[_0x1e94('0x31')][_0x1e94('0x40')]){_0x2ca82c[_0x1e94('0x41')]=[{'all':!![]}];}return db[_0x1e94('0x2b')][_0x1e94('0x42')](_0x2ca82c);})[_0x1e94('0x26')](function(_0x1b19c1){_0x2f9eb1[_0x1e94('0x43')]=_0x1b19c1;return _0x2f9eb1;})[_0x1e94('0x26')](respondWithFilteredResult(_0x351e3b,_0x2ca82c))['catch'](handleError(_0x351e3b,null));};exports[_0x1e94('0x44')]=function(_0x4fd674,_0x3a6797){var _0x363236={'raw':!![],'where':{'id':_0x4fd674[_0x1e94('0x45')]['id']}},_0x47bc0f={};_0x47bc0f[_0x1e94('0x30')]=_[_0x1e94('0x32')](db[_0x1e94('0x2b')][_0x1e94('0x2c')]);_0x47bc0f['query']=_[_0x1e94('0x32')](_0x4fd674[_0x1e94('0x31')]);_0x47bc0f['filters']=_[_0x1e94('0x34')](_0x47bc0f[_0x1e94('0x30')],_0x47bc0f[_0x1e94('0x31')]);_0x363236['attributes']=_[_0x1e94('0x34')](_0x47bc0f[_0x1e94('0x30')],qs[_0x1e94('0x35')](_0x4fd674['query']['fields']));_0x363236['attributes']=_0x363236[_0x1e94('0x36')][_0x1e94('0x37')]?_0x363236[_0x1e94('0x36')]:_0x47bc0f[_0x1e94('0x30')];if(_0x4fd674['query']['includeAll']){_0x363236[_0x1e94('0x41')]=[{'all':!![]}];}_0x363236=_[_0x1e94('0x3e')]({},_0x363236,_0x4fd674[_0x1e94('0x3f')]);return db[_0x1e94('0x2b')][_0x1e94('0x46')](_0x363236)[_0x1e94('0x26')](handleEntityNotFound(_0x3a6797,null))[_0x1e94('0x26')](respondWithResult(_0x3a6797,null))['catch'](handleError(_0x3a6797,null));};exports[_0x1e94('0x25')]=function(_0x8e2e7f,_0x223730){if(_0x8e2e7f[_0x1e94('0x47')]['id']){delete _0x8e2e7f[_0x1e94('0x47')]['id'];}return db[_0x1e94('0x2b')][_0x1e94('0x46')]({'where':{'id':_0x8e2e7f['params']['id']}})[_0x1e94('0x26')](handleEntityNotFound(_0x223730,null))[_0x1e94('0x26')](saveUpdates(_0x8e2e7f[_0x1e94('0x47')],null))['then'](respondWithResult(_0x223730,null))[_0x1e94('0x48')](handleError(_0x223730,null));};exports[_0x1e94('0x49')]=function(_0x4c99e3,_0x48035b){return db[_0x1e94('0x2b')][_0x1e94('0x46')]({'where':{'id':_0x4c99e3[_0x1e94('0x45')]['id']}})['then'](handleEntityNotFound(_0x48035b,null))[_0x1e94('0x26')](removeEntity(_0x48035b,null))[_0x1e94('0x48')](handleError(_0x48035b,null));};exports[_0x1e94('0x4a')]=function(_0x564961,_0x77f93e){return db[_0x1e94('0x2b')]['describe']()[_0x1e94('0x26')](respondWithResult(_0x77f93e,null))[_0x1e94('0x48')](handleError(_0x77f93e,null));};
\ No newline at end of file
+var _0x8c30=['index','map','CmHopperBlack','fieldName','type','key','model','query','attributes','fields','hasOwnProperty','order','sort','where','filters','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','intersection','length','find','update','body','destroy','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','offset','set','reject','save','then','stack','name','send'];(function(_0x3fc501,_0x2c62f1){var _0x400f71=function(_0x5bff40){while(--_0x5bff40){_0x3fc501['push'](_0x3fc501['shift']());}};_0x400f71(++_0x2c62f1);}(_0x8c30,0x18f));var _0x08c3=function(_0x33ff24,_0x95ea7c){_0x33ff24=_0x33ff24-0x0;var _0x4c823a=_0x8c30[_0x33ff24];return _0x4c823a;};'use strict';var emlformat=require(_0x08c3('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x08c3('0x1'));var jsonpatch=require(_0x08c3('0x2'));var rp=require(_0x08c3('0x3'));var moment=require(_0x08c3('0x4'));var BPromise=require(_0x08c3('0x5'));var Mustache=require(_0x08c3('0x6'));var util=require(_0x08c3('0x7'));var path=require(_0x08c3('0x8'));var sox=require(_0x08c3('0x9'));var csv=require('to-csv');var ejs=require(_0x08c3('0xa'));var fs=require('fs');var fs_extra=require(_0x08c3('0xb'));var _=require(_0x08c3('0xc'));var squel=require('squel');var crypto=require(_0x08c3('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x08c3('0xe'));var querystring=require(_0x08c3('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x08c3('0x10'));var qs=require(_0x08c3('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x08c3('0x12'));var logger=require(_0x08c3('0x13'))(_0x08c3('0x14'));var utils=require(_0x08c3('0x15'));var config=require(_0x08c3('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x08c3('0x17'))['db'];function respondWithStatusCode(_0x3d2686,_0x388337){_0x388337=_0x388337||0xcc;return function(_0x194896){if(_0x194896){return _0x3d2686[_0x08c3('0x18')](_0x388337);}return _0x3d2686['status'](_0x388337)[_0x08c3('0x19')]();};}function respondWithResult(_0x189e96,_0x416b92){_0x416b92=_0x416b92||0xc8;return function(_0x40d511){if(_0x40d511){return _0x189e96[_0x08c3('0x1a')](_0x416b92)[_0x08c3('0x1b')](_0x40d511);}};}function respondWithFilteredResult(_0x6bfb49,_0x591d59){return function(_0x8aba58){if(_0x8aba58){var _0x3ac8bd=typeof _0x591d59['offset']===_0x08c3('0x1c')&&typeof _0x591d59[_0x08c3('0x1d')]==='undefined';var _0x5d93fa=_0x8aba58[_0x08c3('0x1e')];var _0x542f0a=_0x3ac8bd?0x0:_0x591d59[_0x08c3('0x1f')];var _0x80062=_0x3ac8bd?_0x8aba58[_0x08c3('0x1e')]:_0x591d59[_0x08c3('0x1f')]+_0x591d59[_0x08c3('0x1d')];var _0x2499b8;if(_0x80062>=_0x5d93fa){_0x80062=_0x5d93fa;_0x2499b8=0xc8;}else{_0x2499b8=0xce;}_0x6bfb49['status'](_0x2499b8);return _0x6bfb49[_0x08c3('0x20')]('Content-Range',_0x542f0a+'-'+_0x80062+'/'+_0x5d93fa)[_0x08c3('0x1b')](_0x8aba58);}return null;};}function patchUpdates(_0x21e8fa){return function(_0x5373c1){try{jsonpatch['apply'](_0x5373c1,_0x21e8fa,!![]);}catch(_0x25f639){return BPromise[_0x08c3('0x21')](_0x25f639);}return _0x5373c1[_0x08c3('0x22')]();};}function saveUpdates(_0x2d3f92,_0x17f014){return function(_0x25a2ed){if(_0x25a2ed){return _0x25a2ed['update'](_0x2d3f92)[_0x08c3('0x23')](function(_0x48e5d4){return _0x48e5d4;});}return null;};}function removeEntity(_0x430b2a,_0x31d266){return function(_0x51ce56){if(_0x51ce56){return _0x51ce56['destroy']()[_0x08c3('0x23')](function(){_0x430b2a[_0x08c3('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x292e38,_0x4e2964){return function(_0x386e40){if(!_0x386e40){_0x292e38[_0x08c3('0x18')](0x194);}return _0x386e40;};}function handleError(_0x4bc4a8,_0x1e8056){_0x1e8056=_0x1e8056||0x1f4;return function(_0x4ab59c){logger['error'](_0x4ab59c[_0x08c3('0x24')]);if(_0x4ab59c['name']){delete _0x4ab59c[_0x08c3('0x25')];}_0x4bc4a8[_0x08c3('0x1a')](_0x1e8056)[_0x08c3('0x26')](_0x4ab59c);};}exports[_0x08c3('0x27')]=function(_0x36d86e,_0x1c5285){var _0x48d539={},_0x3cbe54={},_0x556e87={'count':0x0,'rows':[]};var _0x3b93e8=_[_0x08c3('0x28')](db[_0x08c3('0x29')]['rawAttributes'],function(_0x1346e7){return{'name':_0x1346e7[_0x08c3('0x2a')],'type':_0x1346e7[_0x08c3('0x2b')][_0x08c3('0x2c')]};});_0x3cbe54[_0x08c3('0x2d')]=_[_0x08c3('0x28')](_0x3b93e8,_0x08c3('0x25'));_0x3cbe54[_0x08c3('0x2e')]=_['keys'](_0x36d86e[_0x08c3('0x2e')]);_0x3cbe54['filters']=_['intersection'](_0x3cbe54['model'],_0x3cbe54[_0x08c3('0x2e')]);_0x48d539[_0x08c3('0x2f')]=_['intersection'](_0x3cbe54[_0x08c3('0x2d')],qs[_0x08c3('0x30')](_0x36d86e[_0x08c3('0x2e')][_0x08c3('0x30')]));_0x48d539['attributes']=_0x48d539['attributes']['length']?_0x48d539[_0x08c3('0x2f')]:_0x3cbe54['model'];if(!_0x36d86e[_0x08c3('0x2e')][_0x08c3('0x31')]('nolimit')){_0x48d539[_0x08c3('0x1d')]=qs[_0x08c3('0x1d')](_0x36d86e[_0x08c3('0x2e')][_0x08c3('0x1d')]);_0x48d539[_0x08c3('0x1f')]=qs[_0x08c3('0x1f')](_0x36d86e[_0x08c3('0x2e')][_0x08c3('0x1f')]);}_0x48d539[_0x08c3('0x32')]=qs[_0x08c3('0x33')](_0x36d86e['query'][_0x08c3('0x33')]);_0x48d539[_0x08c3('0x34')]=qs['filters'](_['pick'](_0x36d86e[_0x08c3('0x2e')],_0x3cbe54[_0x08c3('0x35')]),_0x3b93e8);if(_0x36d86e['query']['filter']){_0x48d539[_0x08c3('0x34')]=_[_0x08c3('0x36')](_0x48d539[_0x08c3('0x34')],{'$or':_[_0x08c3('0x28')](_0x3b93e8,function(_0x2b7702){if(_0x2b7702['type']!==_0x08c3('0x37')){var _0x2044e6={};_0x2044e6[_0x2b7702[_0x08c3('0x25')]]={'$like':'%'+_0x36d86e[_0x08c3('0x2e')]['filter']+'%'};return _0x2044e6;}})});}_0x48d539=_[_0x08c3('0x36')]({},_0x48d539,_0x36d86e[_0x08c3('0x38')]);var _0x564027={'where':_0x48d539[_0x08c3('0x34')]};return db[_0x08c3('0x29')][_0x08c3('0x1e')](_0x564027)[_0x08c3('0x23')](function(_0x441949){_0x556e87['count']=_0x441949;if(_0x36d86e[_0x08c3('0x2e')][_0x08c3('0x39')]){_0x48d539[_0x08c3('0x3a')]=[{'all':!![]}];}return db[_0x08c3('0x29')][_0x08c3('0x3b')](_0x48d539);})['then'](function(_0xc260df){_0x556e87[_0x08c3('0x3c')]=_0xc260df;return _0x556e87;})['then'](respondWithFilteredResult(_0x1c5285,_0x48d539))[_0x08c3('0x3d')](handleError(_0x1c5285,null));};exports[_0x08c3('0x3e')]=function(_0x3d1987,_0x48b832){var _0x13b2ed={'raw':!![],'where':{'id':_0x3d1987[_0x08c3('0x3f')]['id']}},_0xc26442={};_0xc26442[_0x08c3('0x2d')]=_[_0x08c3('0x40')](db['CmHopperBlack'][_0x08c3('0x41')]);_0xc26442[_0x08c3('0x2e')]=_['keys'](_0x3d1987['query']);_0xc26442['filters']=_[_0x08c3('0x42')](_0xc26442[_0x08c3('0x2d')],_0xc26442['query']);_0x13b2ed['attributes']=_[_0x08c3('0x42')](_0xc26442[_0x08c3('0x2d')],qs[_0x08c3('0x30')](_0x3d1987['query'][_0x08c3('0x30')]));_0x13b2ed[_0x08c3('0x2f')]=_0x13b2ed[_0x08c3('0x2f')][_0x08c3('0x43')]?_0x13b2ed[_0x08c3('0x2f')]:_0xc26442[_0x08c3('0x2d')];if(_0x3d1987[_0x08c3('0x2e')]['includeAll']){_0x13b2ed[_0x08c3('0x3a')]=[{'all':!![]}];}_0x13b2ed=_[_0x08c3('0x36')]({},_0x13b2ed,_0x3d1987[_0x08c3('0x38')]);return db[_0x08c3('0x29')][_0x08c3('0x44')](_0x13b2ed)[_0x08c3('0x23')](handleEntityNotFound(_0x48b832,null))[_0x08c3('0x23')](respondWithResult(_0x48b832,null))['catch'](handleError(_0x48b832,null));};exports[_0x08c3('0x45')]=function(_0x482019,_0x263dd7){if(_0x482019[_0x08c3('0x46')]['id']){delete _0x482019[_0x08c3('0x46')]['id'];}return db[_0x08c3('0x29')]['find']({'where':{'id':_0x482019[_0x08c3('0x3f')]['id']}})['then'](handleEntityNotFound(_0x263dd7,null))[_0x08c3('0x23')](saveUpdates(_0x482019[_0x08c3('0x46')],null))['then'](respondWithResult(_0x263dd7,null))[_0x08c3('0x3d')](handleError(_0x263dd7,null));};exports[_0x08c3('0x47')]=function(_0x970ac3,_0x923c06){return db[_0x08c3('0x29')][_0x08c3('0x44')]({'where':{'id':_0x970ac3[_0x08c3('0x3f')]['id']}})[_0x08c3('0x23')](handleEntityNotFound(_0x923c06,null))[_0x08c3('0x23')](removeEntity(_0x923c06,null))[_0x08c3('0x3d')](handleError(_0x923c06,null));};exports[_0x08c3('0x48')]=function(_0x5b50e0,_0x2ca115){return db[_0x08c3('0x29')][_0x08c3('0x48')]()[_0x08c3('0x23')](respondWithResult(_0x2ca115,null))[_0x08c3('0x3d')](handleError(_0x2ca115,null));};
\ No newline at end of file
index 092db90..bc8765b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ff6=['CmHopperBlack','cm_hopper_black','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./cmHopperBlack.attributes','exports','define'];(function(_0x5c9595,_0x4b1b42){var _0x1eb7f7=function(_0x49fb6f){while(--_0x49fb6f){_0x5c9595['push'](_0x5c9595['shift']());}};_0x1eb7f7(++_0x4b1b42);}(_0x6ff6,0x9e));var _0x66ff=function(_0x3102d7,_0x543bde){_0x3102d7=_0x3102d7-0x0;var _0x1ec39c=_0x6ff6[_0x3102d7];return _0x1ec39c;};'use strict';var _=require('lodash');var util=require(_0x66ff('0x0'));var logger=require(_0x66ff('0x1'))(_0x66ff('0x2'));var moment=require(_0x66ff('0x3'));var BPromise=require(_0x66ff('0x4'));var rp=require(_0x66ff('0x5'));var fs=require('fs');var path=require(_0x66ff('0x6'));var rimraf=require('rimraf');var config=require(_0x66ff('0x7'));var attributes=require(_0x66ff('0x8'));module[_0x66ff('0x9')]=function(_0x97ea96,_0x1cc8bb){return _0x97ea96[_0x66ff('0xa')](_0x66ff('0xb'),attributes,{'tableName':_0x66ff('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x28ec=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./cmHopperBlack.attributes','exports','define','CmHopperBlack','cm_hopper_black','lodash'];(function(_0x32b5c9,_0x112a49){var _0x19219c=function(_0x4161d9){while(--_0x4161d9){_0x32b5c9['push'](_0x32b5c9['shift']());}};_0x19219c(++_0x112a49);}(_0x28ec,0x15d));var _0xc28e=function(_0x454408,_0x22fdf4){_0x454408=_0x454408-0x0;var _0x25b5cf=_0x28ec[_0x454408];return _0x25b5cf;};'use strict';var _=require(_0xc28e('0x0'));var util=require(_0xc28e('0x1'));var logger=require(_0xc28e('0x2'))(_0xc28e('0x3'));var moment=require(_0xc28e('0x4'));var BPromise=require(_0xc28e('0x5'));var rp=require(_0xc28e('0x6'));var fs=require('fs');var path=require(_0xc28e('0x7'));var rimraf=require(_0xc28e('0x8'));var config=require('../../config/environment');var attributes=require(_0xc28e('0x9'));module[_0xc28e('0xa')]=function(_0x27cd6e,_0x492480){return _0x27cd6e[_0xc28e('0xb')](_0xc28e('0xc'),attributes,{'tableName':_0xc28e('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 759996e..a75df4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb045=['findAll','options','raw','where','attributes','limit','include','map','model','debug','GetCmHopperBlack','UpdateCmHopperBlack','update','body','DestroyCmHopperBlack','destroy','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','then','CmHopperBlack,\x20%s,\x20%s','request\x20sent','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','CmHopperBlack'];(function(_0x2dea24,_0x2fc021){var _0x309d58=function(_0x2eb89f){while(--_0x2eb89f){_0x2dea24['push'](_0x2dea24['shift']());}};_0x309d58(++_0x2fc021);}(_0xb045,0x166));var _0x5b04=function(_0x57a53b,_0x11494e){_0x57a53b=_0x57a53b-0x0;var _0x29e81c=_0xb045[_0x57a53b];return _0x29e81c;};'use strict';var _=require(_0x5b04('0x0'));var util=require(_0x5b04('0x1'));var moment=require(_0x5b04('0x2'));var BPromise=require('bluebird');var rs=require(_0x5b04('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5b04('0x4'))['db'];var utils=require(_0x5b04('0x5'));var logger=require(_0x5b04('0x6'))(_0x5b04('0x7'));var config=require('../../config/environment');var jayson=require(_0x5b04('0x8'));var client=jayson['client'][_0x5b04('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x484bc5,_0x98b479,_0x6ff99f){return new BPromise(function(_0x5ef4b4,_0x12cbd8){return client['request'](_0x484bc5,_0x6ff99f)[_0x5b04('0xa')](function(_0x345236){logger['info'](_0x5b04('0xb'),_0x98b479,_0x5b04('0xc'));logger['debug'](_0x5b04('0xd'),_0x98b479,'request\x20sent',JSON[_0x5b04('0xe')](_0x345236));if(_0x345236[_0x5b04('0xf')]){if(_0x345236[_0x5b04('0xf')][_0x5b04('0x10')]===0x1f4){logger[_0x5b04('0xf')](_0x5b04('0xb'),_0x98b479,_0x345236[_0x5b04('0xf')][_0x5b04('0x11')]);return _0x12cbd8(_0x345236[_0x5b04('0xf')][_0x5b04('0x11')]);}logger[_0x5b04('0xf')](_0x5b04('0xb'),_0x98b479,_0x345236[_0x5b04('0xf')][_0x5b04('0x11')]);return _0x5ef4b4(_0x345236[_0x5b04('0xf')][_0x5b04('0x11')]);}else{logger[_0x5b04('0x12')]('CmHopperBlack,\x20%s,\x20%s',_0x98b479,_0x5b04('0xc'));_0x5ef4b4(_0x345236[_0x5b04('0x13')]['message']);}})[_0x5b04('0x14')](function(_0x2f6f2a){logger[_0x5b04('0xf')](_0x5b04('0xb'),_0x98b479,_0x2f6f2a);_0x12cbd8(_0x2f6f2a);});});}exports['GetCmHopperBlack']=function(_0x4da91a){var _0x5081c3=this;return new Promise(function(_0x3d7a93,_0x43c401){return db[_0x5b04('0x15')][_0x5b04('0x16')]({'raw':_0x4da91a[_0x5b04('0x17')]?_0x4da91a[_0x5b04('0x17')][_0x5b04('0x18')]===undefined?!![]:![]:!![],'where':_0x4da91a[_0x5b04('0x17')]?_0x4da91a[_0x5b04('0x17')][_0x5b04('0x19')]||null:null,'attributes':_0x4da91a[_0x5b04('0x17')]?_0x4da91a[_0x5b04('0x17')][_0x5b04('0x1a')]||null:null,'limit':_0x4da91a['options']?_0x4da91a[_0x5b04('0x17')][_0x5b04('0x1b')]||null:null,'include':_0x4da91a[_0x5b04('0x17')]?_0x4da91a[_0x5b04('0x17')][_0x5b04('0x1c')]?_[_0x5b04('0x1d')](_0x4da91a[_0x5b04('0x17')]['include'],function(_0x414c40){return{'model':db[_0x414c40[_0x5b04('0x1e')]],'as':_0x414c40['as'],'attributes':_0x414c40[_0x5b04('0x1a')],'include':_0x414c40[_0x5b04('0x1c')]?_['map'](_0x414c40[_0x5b04('0x1c')],function(_0x1001cb){return{'model':db[_0x1001cb[_0x5b04('0x1e')]],'as':_0x1001cb['as'],'attributes':_0x1001cb[_0x5b04('0x1a')],'include':_0x1001cb['include']?_['map'](_0x1001cb['include'],function(_0x1c1437){return{'model':db[_0x1c1437[_0x5b04('0x1e')]],'as':_0x1c1437['as'],'attributes':_0x1c1437['attributes']};}):[]};}):[]};}):[]:[]})[_0x5b04('0xa')](function(_0xc351ef){logger[_0x5b04('0x12')]('GetCmHopperBlack',_0x4da91a);logger[_0x5b04('0x1f')](_0x5b04('0x20'),_0x4da91a,JSON[_0x5b04('0xe')](_0xc351ef));_0x3d7a93(_0xc351ef);})[_0x5b04('0x14')](function(_0x2b6f16){logger[_0x5b04('0xf')](_0x5b04('0x20'),_0x2b6f16[_0x5b04('0x11')],_0x4da91a);_0x43c401(_0x5081c3[_0x5b04('0xf')](0x1f4,_0x2b6f16[_0x5b04('0x11')]));});});};exports[_0x5b04('0x21')]=function(_0x2422a5){var _0x702277=this;return new Promise(function(_0x5533bf,_0x433c64){return db['CmHopperBlack'][_0x5b04('0x22')](_0x2422a5[_0x5b04('0x23')],{'raw':_0x2422a5[_0x5b04('0x17')]?_0x2422a5[_0x5b04('0x17')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2422a5['options']?_0x2422a5[_0x5b04('0x17')]['where']||null:null,'attributes':_0x2422a5[_0x5b04('0x17')]?_0x2422a5[_0x5b04('0x17')][_0x5b04('0x1a')]||null:null,'limit':_0x2422a5[_0x5b04('0x17')]?_0x2422a5['options'][_0x5b04('0x1b')]||null:null})[_0x5b04('0xa')](function(_0x19c09b){logger[_0x5b04('0x12')]('UpdateCmHopperBlack',_0x2422a5);logger[_0x5b04('0x1f')]('UpdateCmHopperBlack',_0x2422a5,JSON['stringify'](_0x19c09b));_0x5533bf(_0x19c09b);})[_0x5b04('0x14')](function(_0x3650fe){logger[_0x5b04('0xf')](_0x5b04('0x21'),_0x3650fe['message'],_0x2422a5);_0x433c64(_0x702277[_0x5b04('0xf')](0x1f4,_0x3650fe['message']));});});};exports[_0x5b04('0x24')]=function(_0x39b31b){var _0x230a1b=this;return new Promise(function(_0x3bf3ec,_0x3be353){return db[_0x5b04('0x15')][_0x5b04('0x25')]({'where':_0x39b31b['options']?_0x39b31b[_0x5b04('0x17')][_0x5b04('0x19')]||null:null})['then'](function(_0x5c5f11){logger[_0x5b04('0x12')]('DestroyCmHopperBlack',_0x39b31b);logger[_0x5b04('0x1f')](_0x5b04('0x24'),_0x39b31b,JSON[_0x5b04('0xe')](_0x5c5f11));_0x3bf3ec(_0x5c5f11);})[_0x5b04('0x14')](function(_0x325be0){logger[_0x5b04('0xf')](_0x5b04('0x24'),_0x325be0['message'],_0x39b31b);_0x3be353(_0x230a1b[_0x5b04('0xf')](0x1f4,_0x325be0[_0x5b04('0x11')]));});});};
\ No newline at end of file
+var _0x65a7=['map','model','GetCmHopperBlack','UpdateCmHopperBlack','update','body','DestroyCmHopperBlack','util','moment','randomstring','rpc','jayson/promise','client','http','request','then','info','CmHopperBlack,\x20%s,\x20%s','request\x20sent','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CmHopperBlack','options','raw','where','attributes','limit','include'];(function(_0x5cced0,_0x2a363f){var _0x38781=function(_0x24cf82){while(--_0x24cf82){_0x5cced0['push'](_0x5cced0['shift']());}};_0x38781(++_0x2a363f);}(_0x65a7,0x6a));var _0x765a=function(_0x1c03d7,_0x225081){_0x1c03d7=_0x1c03d7-0x0;var _0x29a2a4=_0x65a7[_0x1c03d7];return _0x29a2a4;};'use strict';var _=require('lodash');var util=require(_0x765a('0x0'));var moment=require(_0x765a('0x1'));var BPromise=require('bluebird');var rs=require(_0x765a('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x765a('0x3'));var config=require('../../config/environment');var jayson=require(_0x765a('0x4'));var client=jayson[_0x765a('0x5')][_0x765a('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x48424e,_0x154a03,_0x39fcd1){return new BPromise(function(_0x1ac9d4,_0x45e276){return client[_0x765a('0x7')](_0x48424e,_0x39fcd1)[_0x765a('0x8')](function(_0x57235f){logger[_0x765a('0x9')](_0x765a('0xa'),_0x154a03,_0x765a('0xb'));logger[_0x765a('0xc')](_0x765a('0xd'),_0x154a03,'request\x20sent',JSON[_0x765a('0xe')](_0x57235f));if(_0x57235f[_0x765a('0xf')]){if(_0x57235f[_0x765a('0xf')][_0x765a('0x10')]===0x1f4){logger[_0x765a('0xf')]('CmHopperBlack,\x20%s,\x20%s',_0x154a03,_0x57235f[_0x765a('0xf')][_0x765a('0x11')]);return _0x45e276(_0x57235f[_0x765a('0xf')]['message']);}logger[_0x765a('0xf')]('CmHopperBlack,\x20%s,\x20%s',_0x154a03,_0x57235f[_0x765a('0xf')][_0x765a('0x11')]);return _0x1ac9d4(_0x57235f[_0x765a('0xf')][_0x765a('0x11')]);}else{logger[_0x765a('0x9')](_0x765a('0xa'),_0x154a03,_0x765a('0xb'));_0x1ac9d4(_0x57235f['result'][_0x765a('0x11')]);}})[_0x765a('0x12')](function(_0x2d09cc){logger[_0x765a('0xf')](_0x765a('0xa'),_0x154a03,_0x2d09cc);_0x45e276(_0x2d09cc);});});}exports['GetCmHopperBlack']=function(_0x1a2e5b){var _0x57f286=this;return new Promise(function(_0x13d74e,_0x9f1135){return db[_0x765a('0x13')]['findAll']({'raw':_0x1a2e5b[_0x765a('0x14')]?_0x1a2e5b[_0x765a('0x14')][_0x765a('0x15')]===undefined?!![]:![]:!![],'where':_0x1a2e5b[_0x765a('0x14')]?_0x1a2e5b['options'][_0x765a('0x16')]||null:null,'attributes':_0x1a2e5b[_0x765a('0x14')]?_0x1a2e5b[_0x765a('0x14')][_0x765a('0x17')]||null:null,'limit':_0x1a2e5b[_0x765a('0x14')]?_0x1a2e5b['options'][_0x765a('0x18')]||null:null,'include':_0x1a2e5b[_0x765a('0x14')]?_0x1a2e5b['options'][_0x765a('0x19')]?_[_0x765a('0x1a')](_0x1a2e5b['options'][_0x765a('0x19')],function(_0x143eaa){return{'model':db[_0x143eaa[_0x765a('0x1b')]],'as':_0x143eaa['as'],'attributes':_0x143eaa[_0x765a('0x17')],'include':_0x143eaa['include']?_[_0x765a('0x1a')](_0x143eaa['include'],function(_0x2e7ca3){return{'model':db[_0x2e7ca3[_0x765a('0x1b')]],'as':_0x2e7ca3['as'],'attributes':_0x2e7ca3[_0x765a('0x17')],'include':_0x2e7ca3[_0x765a('0x19')]?_[_0x765a('0x1a')](_0x2e7ca3[_0x765a('0x19')],function(_0x19ba6b){return{'model':db[_0x19ba6b[_0x765a('0x1b')]],'as':_0x19ba6b['as'],'attributes':_0x19ba6b[_0x765a('0x17')]};}):[]};}):[]};}):[]:[]})[_0x765a('0x8')](function(_0x3ed570){logger[_0x765a('0x9')](_0x765a('0x1c'),_0x1a2e5b);logger['debug'](_0x765a('0x1c'),_0x1a2e5b,JSON[_0x765a('0xe')](_0x3ed570));_0x13d74e(_0x3ed570);})[_0x765a('0x12')](function(_0x3b85e5){logger[_0x765a('0xf')](_0x765a('0x1c'),_0x3b85e5[_0x765a('0x11')],_0x1a2e5b);_0x9f1135(_0x57f286[_0x765a('0xf')](0x1f4,_0x3b85e5['message']));});});};exports[_0x765a('0x1d')]=function(_0x5f3608){var _0x41cc27=this;return new Promise(function(_0x513ad0,_0x128a4d){return db[_0x765a('0x13')][_0x765a('0x1e')](_0x5f3608[_0x765a('0x1f')],{'raw':_0x5f3608[_0x765a('0x14')]?_0x5f3608[_0x765a('0x14')][_0x765a('0x15')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5f3608['options']?_0x5f3608[_0x765a('0x14')]['where']||null:null,'attributes':_0x5f3608['options']?_0x5f3608[_0x765a('0x14')][_0x765a('0x17')]||null:null,'limit':_0x5f3608['options']?_0x5f3608[_0x765a('0x14')][_0x765a('0x18')]||null:null})[_0x765a('0x8')](function(_0x2671d0){logger[_0x765a('0x9')](_0x765a('0x1d'),_0x5f3608);logger[_0x765a('0xc')](_0x765a('0x1d'),_0x5f3608,JSON[_0x765a('0xe')](_0x2671d0));_0x513ad0(_0x2671d0);})[_0x765a('0x12')](function(_0x4d5599){logger[_0x765a('0xf')](_0x765a('0x1d'),_0x4d5599[_0x765a('0x11')],_0x5f3608);_0x128a4d(_0x41cc27[_0x765a('0xf')](0x1f4,_0x4d5599[_0x765a('0x11')]));});});};exports[_0x765a('0x20')]=function(_0xa4324a){var _0x4cc8fb=this;return new Promise(function(_0x2c24d6,_0x5db4d9){return db[_0x765a('0x13')]['destroy']({'where':_0xa4324a[_0x765a('0x14')]?_0xa4324a[_0x765a('0x14')][_0x765a('0x16')]||null:null})[_0x765a('0x8')](function(_0x335017){logger['info'](_0x765a('0x20'),_0xa4324a);logger[_0x765a('0xc')]('DestroyCmHopperBlack',_0xa4324a,JSON['stringify'](_0x335017));_0x2c24d6(_0x335017);})[_0x765a('0x12')](function(_0x3ebc4b){logger[_0x765a('0xf')](_0x765a('0x20'),_0x3ebc4b['message'],_0xa4324a);_0x5db4d9(_0x4cc8fb[_0x765a('0xf')](0x1f4,_0x3ebc4b[_0x765a('0x11')]));});});};
\ No newline at end of file
index 763abdc..fd135fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71ab=['get','isAuthenticated','index','/describe','describe','/:id','show','put','delete','exports','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller'];(function(_0x2bcddb,_0x3eaf37){var _0x12a9e8=function(_0xeeb678){while(--_0xeeb678){_0x2bcddb['push'](_0x2bcddb['shift']());}};_0x12a9e8(++_0x3eaf37);}(_0x71ab,0x64));var _0xb71a=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x71ab[_0x3e5086];return _0xfeb102;};'use strict';var multer=require('multer');var util=require(_0xb71a('0x0'));var path=require('path');var timeout=require(_0xb71a('0x1'));var express=require('express');var router=express[_0xb71a('0x2')]();var fs_extra=require(_0xb71a('0x3'));var auth=require(_0xb71a('0x4'));var interaction=require(_0xb71a('0x5'));var config=require(_0xb71a('0x6'));var controller=require(_0xb71a('0x7'));router[_0xb71a('0x8')]('/',auth[_0xb71a('0x9')](),controller[_0xb71a('0xa')]);router[_0xb71a('0x8')](_0xb71a('0xb'),auth[_0xb71a('0x9')](),controller[_0xb71a('0xc')]);router[_0xb71a('0x8')](_0xb71a('0xd'),auth[_0xb71a('0x9')](),controller[_0xb71a('0xe')]);router[_0xb71a('0xf')]('/:id',auth[_0xb71a('0x9')](),controller['update']);router[_0xb71a('0x10')](_0xb71a('0xd'),auth[_0xb71a('0x9')](),controller['destroy']);module[_0xb71a('0x11')]=router;
\ No newline at end of file
+var _0x5162=['/:id','show','update','exports','multer','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','/describe','isAuthenticated','describe'];(function(_0x434801,_0xc8db49){var _0x225431=function(_0x5462d3){while(--_0x5462d3){_0x434801['push'](_0x434801['shift']());}};_0x225431(++_0xc8db49);}(_0x5162,0x103));var _0x2516=function(_0x3b4455,_0x3e4395){_0x3b4455=_0x3b4455-0x0;var _0x34dd09=_0x5162[_0x3b4455];return _0x34dd09;};'use strict';var multer=require(_0x2516('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x2516('0x1')]();var fs_extra=require(_0x2516('0x2'));var auth=require(_0x2516('0x3'));var interaction=require(_0x2516('0x4'));var config=require(_0x2516('0x5'));var controller=require(_0x2516('0x6'));router[_0x2516('0x7')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x2516('0x8'),auth[_0x2516('0x9')](),controller[_0x2516('0xa')]);router[_0x2516('0x7')](_0x2516('0xb'),auth[_0x2516('0x9')](),controller[_0x2516('0xc')]);router['put'](_0x2516('0xb'),auth[_0x2516('0x9')](),controller[_0x2516('0xd')]);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x2516('0xe')]=router;
\ No newline at end of file
index 92b7ae6..6bd268d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5669=['endtime','setDataValue','followuptime','diff','dispositionat','BOOLEAN','moment','exports','INTEGER','DATE','STRING','getDataValue'];(function(_0x1e3417,_0x405bc6){var _0x40f048=function(_0x4293df){while(--_0x4293df){_0x1e3417['push'](_0x1e3417['shift']());}};_0x40f048(++_0x405bc6);}(_0x5669,0xc6));var _0x9566=function(_0x4490a4,_0x2d4239){_0x4490a4=_0x4490a4-0x0;var _0x8747=_0x5669[_0x4490a4];return _0x8747;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x9566('0x0'));module[_0x9566('0x1')]={'state':{'type':Sequelize[_0x9566('0x2')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0x9566('0x3')]},'countbusyretry':{'type':Sequelize[_0x9566('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x9566('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x9566('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize[_0x9566('0x4')]},'originatecalleridname':{'type':Sequelize[_0x9566('0x4')]},'calleridnum':{'type':Sequelize[_0x9566('0x4')]},'calleridname':{'type':Sequelize[_0x9566('0x4')]},'starttime':{'type':Sequelize[_0x9566('0x3')]},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0x9566('0x3')]},'droptime':{'type':Sequelize[_0x9566('0x3')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x9566('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x9566('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x9566('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x9566('0x4')]},'campaign':{'type':Sequelize[_0x9566('0x4')]},'campaigntype':{'type':Sequelize[_0x9566('0x4')]},'membername':{'type':Sequelize[_0x9566('0x4')]},'reason':{'type':Sequelize[_0x9566('0x4')]},'disposition':{'type':Sequelize[_0x9566('0x4')]},'secondDisposition':{'type':Sequelize[_0x9566('0x4')]},'thirdDisposition':{'type':Sequelize['STRING']},'dispositionat':{'type':Sequelize[_0x9566('0x3')],'set':function(_0xa2fefc){var _0x1acef7=this[_0x9566('0x5')](_0x9566('0x6'));if(_0x1acef7&&_0xa2fefc){this[_0x9566('0x7')](_0x9566('0x8'),moment(_0xa2fefc)[_0x9566('0x9')](moment(_0x1acef7),'seconds'));}return this[_0x9566('0x7')](_0x9566('0xa'),_0xa2fefc);}},'amd':{'type':Sequelize[_0x9566('0xb')],'defaultValue':![]},'fax':{'type':Sequelize[_0x9566('0xb')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0x9566('0xb')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0x9566('0xb')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0x9566('0x3')]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x9566('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x9566('0x3')]},'deleted':{'type':Sequelize[_0x9566('0x4')],'defaultValue':null},'deletedat':{'type':Sequelize[_0x9566('0x3')]},'recallme':{'type':Sequelize[_0x9566('0xb')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0x9566('0x3')]},'countnosuchnumberretry':{'type':Sequelize[_0x9566('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x9566('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x9566('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x9566('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xa479=['INTEGER','STRING','DATE','getDataValue','followuptime','diff','seconds','setDataValue','dispositionat','BOOLEAN','sequelize','moment','exports'];(function(_0x2ad748,_0x556bf6){var _0x244b22=function(_0x179e9){while(--_0x179e9){_0x2ad748['push'](_0x2ad748['shift']());}};_0x244b22(++_0x556bf6);}(_0xa479,0x72));var _0x9a47=function(_0x178af7,_0x16a17c){_0x178af7=_0x178af7-0x0;var _0x46ea16=_0xa479[_0x178af7];return _0x46ea16;};'use strict';var Sequelize=require(_0x9a47('0x0'));var moment=require(_0x9a47('0x1'));module[_0x9a47('0x2')]={'state':{'type':Sequelize[_0x9a47('0x3')](0x2)},'statedesc':{'type':Sequelize[_0x9a47('0x4')]},'scheduledat':{'type':Sequelize[_0x9a47('0x5')]},'countbusyretry':{'type':Sequelize[_0x9a47('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x9a47('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x9a47('0x3')],'defaultValue':0x0},'countglobal':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x9a47('0x4')]},'originatecalleridnum':{'type':Sequelize[_0x9a47('0x4')]},'originatecalleridname':{'type':Sequelize[_0x9a47('0x4')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x9a47('0x4')]},'starttime':{'type':Sequelize[_0x9a47('0x5')]},'responsetime':{'type':Sequelize[_0x9a47('0x5')]},'answertime':{'type':Sequelize[_0x9a47('0x5')]},'droptime':{'type':Sequelize[_0x9a47('0x5')]},'endtime':{'type':Sequelize[_0x9a47('0x5')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x9a47('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize['STRING']},'campaign':{'type':Sequelize[_0x9a47('0x4')]},'campaigntype':{'type':Sequelize[_0x9a47('0x4')]},'membername':{'type':Sequelize[_0x9a47('0x4')]},'reason':{'type':Sequelize[_0x9a47('0x4')]},'disposition':{'type':Sequelize[_0x9a47('0x4')]},'secondDisposition':{'type':Sequelize[_0x9a47('0x4')]},'thirdDisposition':{'type':Sequelize[_0x9a47('0x4')]},'dispositionat':{'type':Sequelize[_0x9a47('0x5')],'set':function(_0x1b1d6b){var _0x1bf342=this[_0x9a47('0x6')]('endtime');if(_0x1bf342&&_0x1b1d6b){this['setDataValue'](_0x9a47('0x7'),moment(_0x1b1d6b)[_0x9a47('0x8')](moment(_0x1bf342),_0x9a47('0x9')));}return this[_0x9a47('0xa')](_0x9a47('0xb'),_0x1b1d6b);}},'amd':{'type':Sequelize[_0x9a47('0xc')],'defaultValue':![]},'fax':{'type':Sequelize[_0x9a47('0xc')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0x9a47('0xc')],'defaultValue':![]},'rescheduled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0x9a47('0x5')]},'callback':{'type':Sequelize[_0x9a47('0xc')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x9a47('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'deleted':{'type':Sequelize[_0x9a47('0x4')],'defaultValue':null},'deletedat':{'type':Sequelize[_0x9a47('0x5')]},'recallme':{'type':Sequelize[_0x9a47('0xc')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0x9a47('0x5')]},'countnosuchnumberretry':{'type':Sequelize[_0x9a47('0x3')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x9a47('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x9a47('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x9a47('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 1b9faba..831beeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2c7=['`state`\x20=\x205,\x201,\x20null','congestionContacts','`state`\x20=\x2011\x20,\x201,\x20null','`state`\x20=\x2019,\x201,\x20null','answeringMachine','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','VoiceQueueId','createdAt','select','field','NOW()','ANY_VALUE(ContactId)','ANY_VALUE(ListId)','ListId','ANY_VALUE(VoiceQueueId)','updatedAt','from','cm_hopper_final','VoiceQueueId\x20=\x20?','state\x20=\x20?','state','toString','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','group','moveContactsIvrCampaignHopperFinal','Campaign','ANY_VALUE(calleridnum)','CampaignId','CampaignId\x20=\x20?','calleridnum','state\x20=\x204','checkContactHopper','CmHopper','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','Content-Range','reject','save','update','destroy','then','error','name','send','index','map','CmHopperFinal','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','keys','find','uniqueid','params','body','countContactsQueueCampaignHopperFinal','sequelize','`state`\x20=\x200,\x201,\x20null','noSuchContacts','COUNT','literal','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','busyContacts','`state`\x20=\x208,\x201,\x20null','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','reCallContacts','countContactsIvrCampaignHopperFinal'];(function(_0x471cf5,_0x2f4f22){var _0x251576=function(_0x133d88){while(--_0x133d88){_0x471cf5['push'](_0x471cf5['shift']());}};_0x251576(++_0x2f4f22);}(_0xc2c7,0x134));var _0x7c2c=function(_0x3a8ead,_0x4276f3){_0x3a8ead=_0x3a8ead-0x0;var _0x53fa89=_0xc2c7[_0x3a8ead];return _0x53fa89;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7c2c('0x0'));var zipdir=require(_0x7c2c('0x1'));var jsonpatch=require(_0x7c2c('0x2'));var rp=require(_0x7c2c('0x3'));var moment=require(_0x7c2c('0x4'));var BPromise=require(_0x7c2c('0x5'));var Mustache=require(_0x7c2c('0x6'));var util=require(_0x7c2c('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x7c2c('0x8'));var ejs=require(_0x7c2c('0x9'));var fs=require('fs');var fs_extra=require(_0x7c2c('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7c2c('0xb'));var deskjs=require(_0x7c2c('0xc'));var toCsv=require(_0x7c2c('0x8'));var querystring=require(_0x7c2c('0xd'));var Papa=require(_0x7c2c('0xe'));var Redis=require('ioredis');var authService=require(_0x7c2c('0xf'));var qs=require(_0x7c2c('0x10'));var as=require(_0x7c2c('0x11'));var hardwareService=require(_0x7c2c('0x12'));var logger=require(_0x7c2c('0x13'))(_0x7c2c('0x14'));var utils=require(_0x7c2c('0x15'));var config=require(_0x7c2c('0x16'));var licenseUtil=require(_0x7c2c('0x17'));var db=require(_0x7c2c('0x18'))['db'];function respondWithStatusCode(_0xae8441,_0x45847d){_0x45847d=_0x45847d||0xcc;return function(_0x68398a){if(_0x68398a){return _0xae8441[_0x7c2c('0x19')](_0x45847d);}return _0xae8441[_0x7c2c('0x1a')](_0x45847d)[_0x7c2c('0x1b')]();};}function respondWithResult(_0x4c4aaf,_0x5b5729){_0x5b5729=_0x5b5729||0xc8;return function(_0x102778){if(_0x102778){return _0x4c4aaf[_0x7c2c('0x1a')](_0x5b5729)[_0x7c2c('0x1c')](_0x102778);}};}function respondWithFilteredResult(_0x5ae94f,_0x11424c){return function(_0x206ecd){if(_0x206ecd){var _0x5e55e0=typeof _0x11424c[_0x7c2c('0x1d')]==='undefined'&&typeof _0x11424c[_0x7c2c('0x1e')]==='undefined';var _0x342ea2=_0x206ecd[_0x7c2c('0x1f')];var _0x14453f=_0x5e55e0?0x0:_0x11424c[_0x7c2c('0x1d')];var _0x17df4a=_0x5e55e0?_0x206ecd[_0x7c2c('0x1f')]:_0x11424c[_0x7c2c('0x1d')]+_0x11424c[_0x7c2c('0x1e')];var _0x2d356e;if(_0x17df4a>=_0x342ea2){_0x17df4a=_0x342ea2;_0x2d356e=0xc8;}else{_0x2d356e=0xce;}_0x5ae94f[_0x7c2c('0x1a')](_0x2d356e);return _0x5ae94f[_0x7c2c('0x20')](_0x7c2c('0x21'),_0x14453f+'-'+_0x17df4a+'/'+_0x342ea2)['json'](_0x206ecd);}return null;};}function patchUpdates(_0x1c5491){return function(_0x4adb62){try{jsonpatch['apply'](_0x4adb62,_0x1c5491,!![]);}catch(_0x15ae33){return BPromise[_0x7c2c('0x22')](_0x15ae33);}return _0x4adb62[_0x7c2c('0x23')]();};}function saveUpdates(_0x38ae30,_0x41552f){return function(_0x1883b5){if(_0x1883b5){return _0x1883b5[_0x7c2c('0x24')](_0x38ae30)['then'](function(_0x10c356){return _0x10c356;});}return null;};}function removeEntity(_0x4dedd8,_0x302c93){return function(_0x57f510){if(_0x57f510){return _0x57f510[_0x7c2c('0x25')]()[_0x7c2c('0x26')](function(){_0x4dedd8[_0x7c2c('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4d6ec7,_0x31a50c){return function(_0x30c53e){if(!_0x30c53e){_0x4d6ec7[_0x7c2c('0x19')](0x194);}return _0x30c53e;};}function handleError(_0x150690,_0x31d8f3){_0x31d8f3=_0x31d8f3||0x1f4;return function(_0xa8e145){logger[_0x7c2c('0x27')](_0xa8e145['stack']);if(_0xa8e145[_0x7c2c('0x28')]){delete _0xa8e145[_0x7c2c('0x28')];}_0x150690[_0x7c2c('0x1a')](_0x31d8f3)[_0x7c2c('0x29')](_0xa8e145);};}exports[_0x7c2c('0x2a')]=function(_0x1f8846,_0xf2bfd1){var _0x26f472={},_0xa040ff={},_0x5769ec={'count':0x0,'rows':[]};var _0x465ad6=_[_0x7c2c('0x2b')](db[_0x7c2c('0x2c')][_0x7c2c('0x2d')],function(_0x53ad23){return{'name':_0x53ad23[_0x7c2c('0x2e')],'type':_0x53ad23[_0x7c2c('0x2f')][_0x7c2c('0x30')]};});_0xa040ff[_0x7c2c('0x31')]=_[_0x7c2c('0x2b')](_0x465ad6,_0x7c2c('0x28'));_0xa040ff[_0x7c2c('0x32')]=_['keys'](_0x1f8846[_0x7c2c('0x32')]);_0xa040ff[_0x7c2c('0x33')]=_[_0x7c2c('0x34')](_0xa040ff[_0x7c2c('0x31')],_0xa040ff[_0x7c2c('0x32')]);_0x26f472['attributes']=_['intersection'](_0xa040ff[_0x7c2c('0x31')],qs['fields'](_0x1f8846['query'][_0x7c2c('0x35')]));_0x26f472[_0x7c2c('0x36')]=_0x26f472[_0x7c2c('0x36')][_0x7c2c('0x37')]?_0x26f472['attributes']:_0xa040ff[_0x7c2c('0x31')];if(!_0x1f8846[_0x7c2c('0x32')][_0x7c2c('0x38')](_0x7c2c('0x39'))){_0x26f472[_0x7c2c('0x1e')]=qs[_0x7c2c('0x1e')](_0x1f8846[_0x7c2c('0x32')][_0x7c2c('0x1e')]);_0x26f472[_0x7c2c('0x1d')]=qs[_0x7c2c('0x1d')](_0x1f8846[_0x7c2c('0x32')][_0x7c2c('0x1d')]);}_0x26f472[_0x7c2c('0x3a')]=qs['sort'](_0x1f8846['query'][_0x7c2c('0x3b')]);_0x26f472['where']=qs['filters'](_['pick'](_0x1f8846[_0x7c2c('0x32')],_0xa040ff[_0x7c2c('0x33')]),_0x465ad6);if(_0x1f8846[_0x7c2c('0x32')][_0x7c2c('0x3c')]){_0x26f472[_0x7c2c('0x3d')]=_[_0x7c2c('0x3e')](_0x26f472[_0x7c2c('0x3d')],{'$or':_[_0x7c2c('0x2b')](_0x465ad6,function(_0x2b6520){if(_0x2b6520[_0x7c2c('0x2f')]!==_0x7c2c('0x3f')){var _0x58696a={};_0x58696a[_0x2b6520['name']]={'$like':'%'+_0x1f8846[_0x7c2c('0x32')][_0x7c2c('0x3c')]+'%'};return _0x58696a;}})});}_0x26f472=_[_0x7c2c('0x3e')]({},_0x26f472,_0x1f8846[_0x7c2c('0x40')]);var _0x5e8c96={'where':_0x26f472[_0x7c2c('0x3d')]};return db[_0x7c2c('0x2c')][_0x7c2c('0x1f')](_0x5e8c96)[_0x7c2c('0x26')](function(_0x18e288){_0x5769ec[_0x7c2c('0x1f')]=_0x18e288;if(_0x1f8846[_0x7c2c('0x32')][_0x7c2c('0x41')]){_0x26f472[_0x7c2c('0x42')]=[{'all':!![]}];}return db['CmHopperFinal'][_0x7c2c('0x43')](_0x26f472);})['then'](function(_0x2c3f40){_0x5769ec[_0x7c2c('0x44')]=_0x2c3f40;return _0x5769ec;})['then'](respondWithFilteredResult(_0xf2bfd1,_0x26f472))[_0x7c2c('0x45')](handleError(_0xf2bfd1,null));};exports['show']=function(_0x3014fb,_0x33b2be){var _0x9b9813={'raw':!![],'where':{'id':_0x3014fb['params']['id']}},_0x26351e={};_0x26351e[_0x7c2c('0x31')]=_['keys'](db['CmHopperFinal'][_0x7c2c('0x2d')]);_0x26351e[_0x7c2c('0x32')]=_[_0x7c2c('0x46')](_0x3014fb['query']);_0x26351e[_0x7c2c('0x33')]=_[_0x7c2c('0x34')](_0x26351e['model'],_0x26351e[_0x7c2c('0x32')]);_0x9b9813['attributes']=_[_0x7c2c('0x34')](_0x26351e[_0x7c2c('0x31')],qs['fields'](_0x3014fb['query'][_0x7c2c('0x35')]));_0x9b9813[_0x7c2c('0x36')]=_0x9b9813['attributes'][_0x7c2c('0x37')]?_0x9b9813['attributes']:_0x26351e['model'];if(_0x3014fb[_0x7c2c('0x32')][_0x7c2c('0x41')]){_0x9b9813[_0x7c2c('0x42')]=[{'all':!![]}];}_0x9b9813=_[_0x7c2c('0x3e')]({},_0x9b9813,_0x3014fb[_0x7c2c('0x40')]);return db[_0x7c2c('0x2c')][_0x7c2c('0x47')](_0x9b9813)[_0x7c2c('0x26')](handleEntityNotFound(_0x33b2be,null))[_0x7c2c('0x26')](respondWithResult(_0x33b2be,null))['catch'](handleError(_0x33b2be,null));};exports['describe']=function(_0xeb067b,_0x3091bd){return db[_0x7c2c('0x2c')]['describe']()['then'](respondWithResult(_0x3091bd,null))[_0x7c2c('0x45')](handleError(_0x3091bd,null));};exports[_0x7c2c('0x24')]=function(_0x39d5af,_0x2b79d5){if(_0x39d5af['body']['uniqueid']){delete _0x39d5af['body'][_0x7c2c('0x48')];}return db[_0x7c2c('0x2c')][_0x7c2c('0x47')]({'where':{'uniqueid':_0x39d5af[_0x7c2c('0x49')]['id']}})[_0x7c2c('0x26')](handleEntityNotFound(_0x2b79d5,null))['then'](saveUpdates(_0x39d5af[_0x7c2c('0x4a')],null))[_0x7c2c('0x26')](respondWithResult(_0x2b79d5,null))['catch'](handleError(_0x2b79d5,null));};exports[_0x7c2c('0x4b')]=function(_0x56e09d,_0xfba6a7,_0x3806f4){return db[_0x7c2c('0x2c')]['findAll']({'raw':![],'where':{'VoiceQueueId':_0x56e09d['params']['id']},'attributes':[[db[_0x7c2c('0x4c')]['fn']('COUNT',db[_0x7c2c('0x4c')]['fn']('IF',db[_0x7c2c('0x4c')]['literal'](_0x7c2c('0x4d')))),_0x7c2c('0x4e')],[db['sequelize']['fn'](_0x7c2c('0x4f'),db[_0x7c2c('0x4c')]['fn']('IF',db['sequelize'][_0x7c2c('0x50')](_0x7c2c('0x51')))),_0x7c2c('0x52')],[db['sequelize']['fn'](_0x7c2c('0x4f'),db['sequelize']['fn']('IF',db[_0x7c2c('0x4c')][_0x7c2c('0x50')]('`state`\x20=\x205,\x201,\x20null'))),_0x7c2c('0x53')],[db[_0x7c2c('0x4c')]['fn'](_0x7c2c('0x4f'),db[_0x7c2c('0x4c')]['fn']('IF',db['sequelize'][_0x7c2c('0x50')](_0x7c2c('0x54')))),'congestionContacts'],[db[_0x7c2c('0x4c')]['fn']('COUNT',db[_0x7c2c('0x4c')]['fn']('IF',db[_0x7c2c('0x4c')][_0x7c2c('0x50')](_0x7c2c('0x55')))),_0x7c2c('0x56')],[db['sequelize']['fn'](_0x7c2c('0x4f'),db[_0x7c2c('0x4c')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x2011\x20,\x201,\x20null'))),_0x7c2c('0x57')],[db['sequelize']['fn'](_0x7c2c('0x4f'),db['sequelize']['fn']('IF',db[_0x7c2c('0x4c')][_0x7c2c('0x50')](_0x7c2c('0x58')))),_0x7c2c('0x59')],[db[_0x7c2c('0x4c')]['fn'](_0x7c2c('0x4f'),db[_0x7c2c('0x4c')]['fn']('IF',db[_0x7c2c('0x4c')]['literal']('`state`\x20=\x2019,\x201,\x20null'))),'answeringMachine']]})[_0x7c2c('0x26')](handleEntityNotFound(_0xfba6a7,null))[_0x7c2c('0x26')](respondWithResult(_0xfba6a7,null))[_0x7c2c('0x45')](handleError(_0xfba6a7,null));};exports[_0x7c2c('0x5a')]=function(_0x44602a,_0x1ad537,_0x2d04da){return db[_0x7c2c('0x2c')]['findAll']({'raw':![],'where':{'CampaignId':_0x44602a['params']['id']},'attributes':[[db[_0x7c2c('0x4c')]['fn'](_0x7c2c('0x4f'),db['sequelize']['fn']('IF',db[_0x7c2c('0x4c')]['literal']('`state`\x20=\x200,\x201,\x20null'))),_0x7c2c('0x4e')],[db[_0x7c2c('0x4c')]['fn'](_0x7c2c('0x4f'),db[_0x7c2c('0x4c')]['fn']('IF',db[_0x7c2c('0x4c')][_0x7c2c('0x50')](_0x7c2c('0x51')))),_0x7c2c('0x52')],[db[_0x7c2c('0x4c')]['fn'](_0x7c2c('0x4f'),db[_0x7c2c('0x4c')]['fn']('IF',db[_0x7c2c('0x4c')][_0x7c2c('0x50')](_0x7c2c('0x5b')))),'busyContacts'],[db[_0x7c2c('0x4c')]['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x7c2c('0x54')))),_0x7c2c('0x5c')],[db[_0x7c2c('0x4c')]['fn'](_0x7c2c('0x4f'),db[_0x7c2c('0x4c')]['fn']('IF',db[_0x7c2c('0x4c')]['literal'](_0x7c2c('0x55')))),_0x7c2c('0x56')],[db[_0x7c2c('0x4c')]['fn'](_0x7c2c('0x4f'),db[_0x7c2c('0x4c')]['fn']('IF',db[_0x7c2c('0x4c')]['literal'](_0x7c2c('0x5d')))),_0x7c2c('0x57')],[db['sequelize']['fn'](_0x7c2c('0x4f'),db[_0x7c2c('0x4c')]['fn']('IF',db['sequelize'][_0x7c2c('0x50')](_0x7c2c('0x58')))),'reCallContacts'],[db['sequelize']['fn'](_0x7c2c('0x4f'),db['sequelize']['fn']('IF',db[_0x7c2c('0x4c')]['literal'](_0x7c2c('0x5e')))),_0x7c2c('0x5f')]]})['then'](handleEntityNotFound(_0x1ad537,null))[_0x7c2c('0x26')](respondWithResult(_0x1ad537,null))['catch'](handleError(_0x1ad537,null));};exports[_0x7c2c('0x60')]=function(_0x2b597d,_0x20eb63,_0x56f737){return db[_0x7c2c('0x61')][_0x7c2c('0x47')]({'where':{'id':_0x2b597d[_0x7c2c('0x49')]['id']}})[_0x7c2c('0x26')](handleEntityNotFound(_0x20eb63,null))['then'](function(_0x158352){var _0x1e711e;if(_0x158352){_0x1e711e=squel[_0x7c2c('0x62')]()[_0x7c2c('0x63')](_0x7c2c('0x64'))[_0x7c2c('0x65')]([_0x7c2c('0x66'),_0x7c2c('0x67'),_0x7c2c('0x68'),'ListId',_0x7c2c('0x69'),_0x7c2c('0x6a'),'updatedAt'],squel[_0x7c2c('0x6b')]()['field']('ANY_VALUE(calleridnum)',_0x7c2c('0x66'))[_0x7c2c('0x6c')](_0x7c2c('0x6d'),'scheduledAt')[_0x7c2c('0x6c')](_0x7c2c('0x6e'),_0x7c2c('0x68'))['field'](_0x7c2c('0x6f'),_0x7c2c('0x70'))[_0x7c2c('0x6c')](_0x7c2c('0x71'),'VoiceQueueId')[_0x7c2c('0x6c')]('NOW()',_0x7c2c('0x6a'))['field'](_0x7c2c('0x6d'),_0x7c2c('0x72'))[_0x7c2c('0x73')](_0x7c2c('0x74'))[_0x7c2c('0x3d')](_0x7c2c('0x75'),_0x2b597d[_0x7c2c('0x49')]['id']['toString']())[_0x7c2c('0x3d')](_0x7c2c('0x76'),_0x2b597d[_0x7c2c('0x4a')][_0x7c2c('0x77')][_0x7c2c('0x78')]())[_0x7c2c('0x3d')](_0x7c2c('0x79'))[_0x7c2c('0x3d')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x7c2c('0x6b')]()[_0x7c2c('0x6c')](_0x7c2c('0x66'))[_0x7c2c('0x73')](_0x7c2c('0x64'))['where'](_0x7c2c('0x75'),_0x2b597d[_0x7c2c('0x49')]['id']['toString']()))[_0x7c2c('0x3d')](_0x7c2c('0x7a'),squel['select']()[_0x7c2c('0x6c')]('calleridnum')[_0x7c2c('0x73')](_0x7c2c('0x74'))[_0x7c2c('0x3d')](_0x7c2c('0x75'),_0x2b597d[_0x7c2c('0x49')]['id'][_0x7c2c('0x78')]())[_0x7c2c('0x3d')]('state\x20=\x204'))[_0x7c2c('0x7b')](_0x7c2c('0x68')))['toString']();return db[_0x7c2c('0x4c')][_0x7c2c('0x32')](_0x1e711e);}return[];})[_0x7c2c('0x26')](respondWithResult(_0x20eb63,null))[_0x7c2c('0x45')](handleError(_0x20eb63,null));};exports[_0x7c2c('0x7c')]=function(_0x2f249d,_0x136226,_0x354236){return db[_0x7c2c('0x7d')][_0x7c2c('0x47')]({'where':{'id':_0x2f249d[_0x7c2c('0x49')]['id']}})[_0x7c2c('0x26')](handleEntityNotFound(_0x136226,null))[_0x7c2c('0x26')](function(_0xb47bf0){var _0x4d0922;if(_0xb47bf0){_0x4d0922=squel[_0x7c2c('0x62')]()[_0x7c2c('0x63')]('cm_hopper')[_0x7c2c('0x65')]([_0x7c2c('0x66'),_0x7c2c('0x67'),_0x7c2c('0x68'),_0x7c2c('0x70'),'CampaignId',_0x7c2c('0x6a'),_0x7c2c('0x72')],squel[_0x7c2c('0x6b')]()['field'](_0x7c2c('0x7e'),_0x7c2c('0x66'))[_0x7c2c('0x6c')]('NOW()',_0x7c2c('0x67'))['field'](_0x7c2c('0x6e'),'ContactId')['field'](_0x7c2c('0x6f'),_0x7c2c('0x70'))[_0x7c2c('0x6c')]('ANY_VALUE(CampaignId)',_0x7c2c('0x7f'))[_0x7c2c('0x6c')](_0x7c2c('0x6d'),_0x7c2c('0x6a'))['field'](_0x7c2c('0x6d'),'updatedAt')['from']('cm_hopper_final')['where']('CampaignId\x20=\x20?',_0x2f249d[_0x7c2c('0x49')]['id'][_0x7c2c('0x78')]())[_0x7c2c('0x3d')](_0x7c2c('0x76'),_0x2f249d[_0x7c2c('0x4a')]['state'][_0x7c2c('0x78')]())[_0x7c2c('0x3d')](_0x7c2c('0x79'))[_0x7c2c('0x3d')](_0x7c2c('0x7a'),squel[_0x7c2c('0x6b')]()['field']('phone')[_0x7c2c('0x73')](_0x7c2c('0x64'))[_0x7c2c('0x3d')](_0x7c2c('0x80'),_0x2f249d['params']['id'][_0x7c2c('0x78')]()))[_0x7c2c('0x3d')](_0x7c2c('0x7a'),squel[_0x7c2c('0x6b')]()[_0x7c2c('0x6c')](_0x7c2c('0x81'))[_0x7c2c('0x73')](_0x7c2c('0x74'))[_0x7c2c('0x3d')]('CampaignId\x20=\x20?',_0x2f249d[_0x7c2c('0x49')]['id'][_0x7c2c('0x78')]())['where'](_0x7c2c('0x82')))['group'](_0x7c2c('0x68')))['toString']();return db[_0x7c2c('0x4c')][_0x7c2c('0x32')](_0x4d0922);}return[];})[_0x7c2c('0x26')](respondWithResult(_0x136226,null))[_0x7c2c('0x45')](handleError(_0x136226,null));};exports[_0x7c2c('0x83')]=function(_0x309051,_0x3f8683,_0x1eeb00){return db[_0x7c2c('0x84')]['findOne']({'where':{'VoiceQueueId':_0x309051[_0x7c2c('0x4a')][_0x7c2c('0x69')],'CampaignId':_0x309051[_0x7c2c('0x4a')]['CampaignId'],'ContactId':_0x309051[_0x7c2c('0x4a')][_0x7c2c('0x68')]}})['then'](handleEntityNotFound(_0x3f8683,null))[_0x7c2c('0x26')](function(_0x511158){if(_0x511158){return _0x511158;}return null;})[_0x7c2c('0x26')](respondWithResult(_0x3f8683,null))['catch'](handleError(_0x3f8683,null));};
\ No newline at end of file
+var _0xf61e=['rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','count','limit','set','Content-Range','apply','destroy','then','status','error','stack','name','send','index','map','CmHopperFinal','rawAttributes','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','where','filter','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','find','describe','update','body','uniqueid','params','countContactsQueueCampaignHopperFinal','COUNT','sequelize','literal','noSuchContacts','noAnswerContacts','busyContacts','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','`state`\x20=\x203,\x201,\x20null','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','moveContactsQueueCampaignHopperFinal','insert','cm_hopper','phone','scheduledAt','VoiceQueueId','createdAt','updatedAt','select','field','NOW()','ANY_VALUE(ContactId)','ListId','ANY_VALUE(VoiceQueueId)','from','cm_hopper_final','toString','state\x20=\x20?','state','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','VoiceQueueId\x20=\x20?','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','Campaign','into','fromQuery','ContactId','CampaignId','ANY_VALUE(calleridnum)','ANY_VALUE(ListId)','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','calleridnum','checkContactHopper','findOne','eml-format'];(function(_0x39d544,_0x35c14f){var _0x5a5ff2=function(_0x2271fb){while(--_0x2271fb){_0x39d544['push'](_0x39d544['shift']());}};_0x5a5ff2(++_0x35c14f);}(_0xf61e,0x191));var _0xef61=function(_0xfbabf8,_0x425cab){_0xfbabf8=_0xfbabf8-0x0;var _0x335ef3=_0xf61e[_0xfbabf8];return _0x335ef3;};'use strict';var emlformat=require(_0xef61('0x0'));var rimraf=require(_0xef61('0x1'));var zipdir=require(_0xef61('0x2'));var jsonpatch=require(_0xef61('0x3'));var rp=require(_0xef61('0x4'));var moment=require(_0xef61('0x5'));var BPromise=require(_0xef61('0x6'));var Mustache=require(_0xef61('0x7'));var util=require(_0xef61('0x8'));var path=require(_0xef61('0x9'));var sox=require(_0xef61('0xa'));var csv=require(_0xef61('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xef61('0xc'));var _=require(_0xef61('0xd'));var squel=require('squel');var crypto=require(_0xef61('0xe'));var jsforce=require(_0xef61('0xf'));var deskjs=require(_0xef61('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xef61('0x11'));var Redis=require(_0xef61('0x12'));var authService=require(_0xef61('0x13'));var qs=require(_0xef61('0x14'));var as=require(_0xef61('0x15'));var hardwareService=require(_0xef61('0x16'));var logger=require(_0xef61('0x17'))(_0xef61('0x18'));var utils=require(_0xef61('0x19'));var config=require(_0xef61('0x1a'));var licenseUtil=require(_0xef61('0x1b'));var db=require(_0xef61('0x1c'))['db'];function respondWithStatusCode(_0x114e1f,_0x318f1c){_0x318f1c=_0x318f1c||0xcc;return function(_0x5de159){if(_0x5de159){return _0x114e1f[_0xef61('0x1d')](_0x318f1c);}return _0x114e1f['status'](_0x318f1c)[_0xef61('0x1e')]();};}function respondWithResult(_0x1db2a9,_0x370ee0){_0x370ee0=_0x370ee0||0xc8;return function(_0x76ef9b){if(_0x76ef9b){return _0x1db2a9['status'](_0x370ee0)[_0xef61('0x1f')](_0x76ef9b);}};}function respondWithFilteredResult(_0x435beb,_0x1224c2){return function(_0x78ff22){if(_0x78ff22){var _0x588a61=typeof _0x1224c2[_0xef61('0x20')]===_0xef61('0x21')&&typeof _0x1224c2['limit']===_0xef61('0x21');var _0x408541=_0x78ff22[_0xef61('0x22')];var _0x22dc1b=_0x588a61?0x0:_0x1224c2[_0xef61('0x20')];var _0x28315a=_0x588a61?_0x78ff22[_0xef61('0x22')]:_0x1224c2['offset']+_0x1224c2[_0xef61('0x23')];var _0x2c8dad;if(_0x28315a>=_0x408541){_0x28315a=_0x408541;_0x2c8dad=0xc8;}else{_0x2c8dad=0xce;}_0x435beb['status'](_0x2c8dad);return _0x435beb[_0xef61('0x24')](_0xef61('0x25'),_0x22dc1b+'-'+_0x28315a+'/'+_0x408541)[_0xef61('0x1f')](_0x78ff22);}return null;};}function patchUpdates(_0x26cf42){return function(_0xb0d7a4){try{jsonpatch[_0xef61('0x26')](_0xb0d7a4,_0x26cf42,!![]);}catch(_0x92ea33){return BPromise['reject'](_0x92ea33);}return _0xb0d7a4['save']();};}function saveUpdates(_0x3d31c1,_0x58bd7d){return function(_0x389d6d){if(_0x389d6d){return _0x389d6d['update'](_0x3d31c1)['then'](function(_0x2f0569){return _0x2f0569;});}return null;};}function removeEntity(_0x5ce99d,_0x53181b){return function(_0xfbee94){if(_0xfbee94){return _0xfbee94[_0xef61('0x27')]()[_0xef61('0x28')](function(){_0x5ce99d[_0xef61('0x29')](0xcc)['end']();});}};}function handleEntityNotFound(_0x16b144,_0x4e738f){return function(_0x2a6832){if(!_0x2a6832){_0x16b144[_0xef61('0x1d')](0x194);}return _0x2a6832;};}function handleError(_0x2419a9,_0xf4c7c9){_0xf4c7c9=_0xf4c7c9||0x1f4;return function(_0x2155f1){logger[_0xef61('0x2a')](_0x2155f1[_0xef61('0x2b')]);if(_0x2155f1[_0xef61('0x2c')]){delete _0x2155f1[_0xef61('0x2c')];}_0x2419a9[_0xef61('0x29')](_0xf4c7c9)[_0xef61('0x2d')](_0x2155f1);};}exports[_0xef61('0x2e')]=function(_0xeb9a62,_0x63edd4){var _0x1f3572={},_0x85978={},_0x39c15e={'count':0x0,'rows':[]};var _0x393ea9=_[_0xef61('0x2f')](db[_0xef61('0x30')][_0xef61('0x31')],function(_0x53fa3b){return{'name':_0x53fa3b['fieldName'],'type':_0x53fa3b['type'][_0xef61('0x32')]};});_0x85978[_0xef61('0x33')]=_[_0xef61('0x2f')](_0x393ea9,'name');_0x85978[_0xef61('0x34')]=_[_0xef61('0x35')](_0xeb9a62['query']);_0x85978[_0xef61('0x36')]=_['intersection'](_0x85978['model'],_0x85978[_0xef61('0x34')]);_0x1f3572['attributes']=_[_0xef61('0x37')](_0x85978['model'],qs[_0xef61('0x38')](_0xeb9a62[_0xef61('0x34')][_0xef61('0x38')]));_0x1f3572[_0xef61('0x39')]=_0x1f3572[_0xef61('0x39')][_0xef61('0x3a')]?_0x1f3572[_0xef61('0x39')]:_0x85978[_0xef61('0x33')];if(!_0xeb9a62[_0xef61('0x34')][_0xef61('0x3b')]('nolimit')){_0x1f3572[_0xef61('0x23')]=qs[_0xef61('0x23')](_0xeb9a62[_0xef61('0x34')][_0xef61('0x23')]);_0x1f3572[_0xef61('0x20')]=qs['offset'](_0xeb9a62[_0xef61('0x34')][_0xef61('0x20')]);}_0x1f3572[_0xef61('0x3c')]=qs['sort'](_0xeb9a62['query']['sort']);_0x1f3572[_0xef61('0x3d')]=qs['filters'](_['pick'](_0xeb9a62['query'],_0x85978[_0xef61('0x36')]),_0x393ea9);if(_0xeb9a62[_0xef61('0x34')][_0xef61('0x3e')]){_0x1f3572['where']=_['merge'](_0x1f3572['where'],{'$or':_[_0xef61('0x2f')](_0x393ea9,function(_0x32ad44){if(_0x32ad44['type']!==_0xef61('0x3f')){var _0x12f442={};_0x12f442[_0x32ad44[_0xef61('0x2c')]]={'$like':'%'+_0xeb9a62[_0xef61('0x34')]['filter']+'%'};return _0x12f442;}})});}_0x1f3572=_[_0xef61('0x40')]({},_0x1f3572,_0xeb9a62[_0xef61('0x41')]);var _0x3103d4={'where':_0x1f3572[_0xef61('0x3d')]};return db['CmHopperFinal']['count'](_0x3103d4)[_0xef61('0x28')](function(_0x462972){_0x39c15e[_0xef61('0x22')]=_0x462972;if(_0xeb9a62['query'][_0xef61('0x42')]){_0x1f3572[_0xef61('0x43')]=[{'all':!![]}];}return db[_0xef61('0x30')][_0xef61('0x44')](_0x1f3572);})['then'](function(_0x545597){_0x39c15e['rows']=_0x545597;return _0x39c15e;})[_0xef61('0x28')](respondWithFilteredResult(_0x63edd4,_0x1f3572))[_0xef61('0x45')](handleError(_0x63edd4,null));};exports[_0xef61('0x46')]=function(_0xe40d,_0x3f81a1){var _0x272143={'raw':!![],'where':{'id':_0xe40d['params']['id']}},_0xc9b467={};_0xc9b467[_0xef61('0x33')]=_[_0xef61('0x35')](db[_0xef61('0x30')][_0xef61('0x31')]);_0xc9b467['query']=_[_0xef61('0x35')](_0xe40d[_0xef61('0x34')]);_0xc9b467[_0xef61('0x36')]=_[_0xef61('0x37')](_0xc9b467[_0xef61('0x33')],_0xc9b467[_0xef61('0x34')]);_0x272143['attributes']=_[_0xef61('0x37')](_0xc9b467[_0xef61('0x33')],qs[_0xef61('0x38')](_0xe40d['query'][_0xef61('0x38')]));_0x272143[_0xef61('0x39')]=_0x272143[_0xef61('0x39')][_0xef61('0x3a')]?_0x272143[_0xef61('0x39')]:_0xc9b467[_0xef61('0x33')];if(_0xe40d['query'][_0xef61('0x42')]){_0x272143[_0xef61('0x43')]=[{'all':!![]}];}_0x272143=_['merge']({},_0x272143,_0xe40d[_0xef61('0x41')]);return db[_0xef61('0x30')][_0xef61('0x47')](_0x272143)[_0xef61('0x28')](handleEntityNotFound(_0x3f81a1,null))['then'](respondWithResult(_0x3f81a1,null))[_0xef61('0x45')](handleError(_0x3f81a1,null));};exports[_0xef61('0x48')]=function(_0x5e614b,_0x47b09d){return db[_0xef61('0x30')][_0xef61('0x48')]()['then'](respondWithResult(_0x47b09d,null))[_0xef61('0x45')](handleError(_0x47b09d,null));};exports[_0xef61('0x49')]=function(_0x13d0f8,_0x2904e0){if(_0x13d0f8[_0xef61('0x4a')][_0xef61('0x4b')]){delete _0x13d0f8[_0xef61('0x4a')]['uniqueid'];}return db[_0xef61('0x30')]['find']({'where':{'uniqueid':_0x13d0f8[_0xef61('0x4c')]['id']}})[_0xef61('0x28')](handleEntityNotFound(_0x2904e0,null))[_0xef61('0x28')](saveUpdates(_0x13d0f8[_0xef61('0x4a')],null))[_0xef61('0x28')](respondWithResult(_0x2904e0,null))[_0xef61('0x45')](handleError(_0x2904e0,null));};exports[_0xef61('0x4d')]=function(_0x1565c7,_0x264877,_0x4af2f3){return db[_0xef61('0x30')][_0xef61('0x44')]({'raw':![],'where':{'VoiceQueueId':_0x1565c7['params']['id']},'attributes':[[db['sequelize']['fn'](_0xef61('0x4e'),db[_0xef61('0x4f')]['fn']('IF',db['sequelize'][_0xef61('0x50')]('`state`\x20=\x200,\x201,\x20null'))),_0xef61('0x51')],[db[_0xef61('0x4f')]['fn'](_0xef61('0x4e'),db[_0xef61('0x4f')]['fn']('IF',db[_0xef61('0x4f')][_0xef61('0x50')]('`state`\x20=\x203,\x201,\x20null'))),_0xef61('0x52')],[db[_0xef61('0x4f')]['fn']('COUNT',db[_0xef61('0x4f')]['fn']('IF',db[_0xef61('0x4f')]['literal']('`state`\x20=\x205,\x201,\x20null'))),_0xef61('0x53')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xef61('0x4f')][_0xef61('0x50')]('`state`\x20=\x208,\x201,\x20null'))),_0xef61('0x54')],[db[_0xef61('0x4f')]['fn'](_0xef61('0x4e'),db[_0xef61('0x4f')]['fn']('IF',db[_0xef61('0x4f')][_0xef61('0x50')](_0xef61('0x55')))),_0xef61('0x56')],[db['sequelize']['fn']('COUNT',db[_0xef61('0x4f')]['fn']('IF',db[_0xef61('0x4f')][_0xef61('0x50')](_0xef61('0x57')))),_0xef61('0x58')],[db['sequelize']['fn'](_0xef61('0x4e'),db['sequelize']['fn']('IF',db['sequelize'][_0xef61('0x50')](_0xef61('0x59')))),_0xef61('0x5a')],[db['sequelize']['fn'](_0xef61('0x4e'),db[_0xef61('0x4f')]['fn']('IF',db[_0xef61('0x4f')][_0xef61('0x50')](_0xef61('0x5b')))),_0xef61('0x5c')]]})[_0xef61('0x28')](handleEntityNotFound(_0x264877,null))[_0xef61('0x28')](respondWithResult(_0x264877,null))[_0xef61('0x45')](handleError(_0x264877,null));};exports[_0xef61('0x5d')]=function(_0x5507ee,_0x15a8c5,_0x4b26e6){return db['CmHopperFinal'][_0xef61('0x44')]({'raw':![],'where':{'CampaignId':_0x5507ee[_0xef61('0x4c')]['id']},'attributes':[[db[_0xef61('0x4f')]['fn'](_0xef61('0x4e'),db[_0xef61('0x4f')]['fn']('IF',db[_0xef61('0x4f')]['literal']('`state`\x20=\x200,\x201,\x20null'))),_0xef61('0x51')],[db[_0xef61('0x4f')]['fn'](_0xef61('0x4e'),db[_0xef61('0x4f')]['fn']('IF',db[_0xef61('0x4f')][_0xef61('0x50')](_0xef61('0x5e')))),_0xef61('0x52')],[db[_0xef61('0x4f')]['fn'](_0xef61('0x4e'),db[_0xef61('0x4f')]['fn']('IF',db['sequelize'][_0xef61('0x50')](_0xef61('0x5f')))),'busyContacts'],[db[_0xef61('0x4f')]['fn'](_0xef61('0x4e'),db[_0xef61('0x4f')]['fn']('IF',db[_0xef61('0x4f')][_0xef61('0x50')](_0xef61('0x60')))),_0xef61('0x54')],[db[_0xef61('0x4f')]['fn']('COUNT',db[_0xef61('0x4f')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x2010\x20,\x201,\x20null'))),_0xef61('0x56')],[db[_0xef61('0x4f')]['fn'](_0xef61('0x4e'),db['sequelize']['fn']('IF',db[_0xef61('0x4f')][_0xef61('0x50')](_0xef61('0x57')))),_0xef61('0x58')],[db[_0xef61('0x4f')]['fn'](_0xef61('0x4e'),db[_0xef61('0x4f')]['fn']('IF',db[_0xef61('0x4f')][_0xef61('0x50')](_0xef61('0x59')))),_0xef61('0x5a')],[db[_0xef61('0x4f')]['fn'](_0xef61('0x4e'),db[_0xef61('0x4f')]['fn']('IF',db[_0xef61('0x4f')][_0xef61('0x50')](_0xef61('0x5b')))),_0xef61('0x5c')]]})['then'](handleEntityNotFound(_0x15a8c5,null))[_0xef61('0x28')](respondWithResult(_0x15a8c5,null))[_0xef61('0x45')](handleError(_0x15a8c5,null));};exports[_0xef61('0x61')]=function(_0x5ab4fe,_0x38117b,_0x346752){return db['VoiceQueue'][_0xef61('0x47')]({'where':{'id':_0x5ab4fe[_0xef61('0x4c')]['id']}})['then'](handleEntityNotFound(_0x38117b,null))[_0xef61('0x28')](function(_0x54777a){var _0xe62ec2;if(_0x54777a){_0xe62ec2=squel[_0xef61('0x62')]()['into'](_0xef61('0x63'))['fromQuery']([_0xef61('0x64'),_0xef61('0x65'),'ContactId','ListId',_0xef61('0x66'),_0xef61('0x67'),_0xef61('0x68')],squel[_0xef61('0x69')]()[_0xef61('0x6a')]('ANY_VALUE(calleridnum)',_0xef61('0x64'))[_0xef61('0x6a')](_0xef61('0x6b'),_0xef61('0x65'))[_0xef61('0x6a')](_0xef61('0x6c'),'ContactId')[_0xef61('0x6a')]('ANY_VALUE(ListId)',_0xef61('0x6d'))[_0xef61('0x6a')](_0xef61('0x6e'),_0xef61('0x66'))[_0xef61('0x6a')](_0xef61('0x6b'),_0xef61('0x67'))[_0xef61('0x6a')](_0xef61('0x6b'),_0xef61('0x68'))[_0xef61('0x6f')](_0xef61('0x70'))[_0xef61('0x3d')]('VoiceQueueId\x20=\x20?',_0x5ab4fe[_0xef61('0x4c')]['id'][_0xef61('0x71')]())[_0xef61('0x3d')](_0xef61('0x72'),_0x5ab4fe['body'][_0xef61('0x73')]['toString']())['where'](_0xef61('0x74'))['where'](_0xef61('0x75'),squel['select']()['field'](_0xef61('0x64'))[_0xef61('0x6f')]('cm_hopper')[_0xef61('0x3d')]('VoiceQueueId\x20=\x20?',_0x5ab4fe[_0xef61('0x4c')]['id'][_0xef61('0x71')]()))[_0xef61('0x3d')](_0xef61('0x75'),squel['select']()[_0xef61('0x6a')]('calleridnum')[_0xef61('0x6f')](_0xef61('0x70'))[_0xef61('0x3d')](_0xef61('0x76'),_0x5ab4fe[_0xef61('0x4c')]['id'][_0xef61('0x71')]())[_0xef61('0x3d')](_0xef61('0x77')))[_0xef61('0x78')]('ContactId'))[_0xef61('0x71')]();return db['sequelize'][_0xef61('0x34')](_0xe62ec2);}return[];})[_0xef61('0x28')](respondWithResult(_0x38117b,null))['catch'](handleError(_0x38117b,null));};exports[_0xef61('0x79')]=function(_0x5b86e4,_0x52f7c5,_0x465fb5){return db[_0xef61('0x7a')]['find']({'where':{'id':_0x5b86e4[_0xef61('0x4c')]['id']}})[_0xef61('0x28')](handleEntityNotFound(_0x52f7c5,null))['then'](function(_0x352633){var _0x2cb8a8;if(_0x352633){_0x2cb8a8=squel['insert']()[_0xef61('0x7b')]('cm_hopper')[_0xef61('0x7c')]([_0xef61('0x64'),_0xef61('0x65'),_0xef61('0x7d'),'ListId',_0xef61('0x7e'),_0xef61('0x67'),_0xef61('0x68')],squel['select']()[_0xef61('0x6a')](_0xef61('0x7f'),'phone')['field'](_0xef61('0x6b'),_0xef61('0x65'))[_0xef61('0x6a')](_0xef61('0x6c'),_0xef61('0x7d'))[_0xef61('0x6a')](_0xef61('0x80'),_0xef61('0x6d'))[_0xef61('0x6a')](_0xef61('0x81'),_0xef61('0x7e'))[_0xef61('0x6a')](_0xef61('0x6b'),_0xef61('0x67'))[_0xef61('0x6a')](_0xef61('0x6b'),'updatedAt')[_0xef61('0x6f')](_0xef61('0x70'))[_0xef61('0x3d')](_0xef61('0x82'),_0x5b86e4[_0xef61('0x4c')]['id'][_0xef61('0x71')]())[_0xef61('0x3d')](_0xef61('0x72'),_0x5b86e4[_0xef61('0x4a')][_0xef61('0x73')][_0xef61('0x71')]())[_0xef61('0x3d')]('calleridnum\x20IS\x20NOT\x20NULL')[_0xef61('0x3d')](_0xef61('0x75'),squel['select']()[_0xef61('0x6a')](_0xef61('0x64'))[_0xef61('0x6f')](_0xef61('0x63'))[_0xef61('0x3d')]('CampaignId\x20=\x20?',_0x5b86e4[_0xef61('0x4c')]['id']['toString']()))[_0xef61('0x3d')](_0xef61('0x75'),squel[_0xef61('0x69')]()[_0xef61('0x6a')](_0xef61('0x83'))[_0xef61('0x6f')](_0xef61('0x70'))[_0xef61('0x3d')]('CampaignId\x20=\x20?',_0x5b86e4[_0xef61('0x4c')]['id'][_0xef61('0x71')]())[_0xef61('0x3d')](_0xef61('0x77')))[_0xef61('0x78')](_0xef61('0x7d')))[_0xef61('0x71')]();return db[_0xef61('0x4f')][_0xef61('0x34')](_0x2cb8a8);}return[];})['then'](respondWithResult(_0x52f7c5,null))[_0xef61('0x45')](handleError(_0x52f7c5,null));};exports[_0xef61('0x84')]=function(_0x22006a,_0x317c4a,_0x5d8ee9){return db['CmHopper'][_0xef61('0x85')]({'where':{'VoiceQueueId':_0x22006a[_0xef61('0x4a')][_0xef61('0x66')],'CampaignId':_0x22006a[_0xef61('0x4a')][_0xef61('0x7e')],'ContactId':_0x22006a[_0xef61('0x4a')][_0xef61('0x7d')]}})['then'](handleEntityNotFound(_0x317c4a,null))[_0xef61('0x28')](function(_0x660c71){if(_0x660c71){return _0x660c71;}return null;})[_0xef61('0x28')](respondWithResult(_0x317c4a,null))[_0xef61('0x45')](handleError(_0x317c4a,null));};
\ No newline at end of file
index 1af3b7f..de6cd25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe673=['cm_hopper_final','uniqueid','lodash','../../config/logger','api','bluebird','request-promise','path','../../config/environment','CmHopperFinal'];(function(_0x2c40bf,_0x5ce37a){var _0x31ab19=function(_0x56303){while(--_0x56303){_0x2c40bf['push'](_0x2c40bf['shift']());}};_0x31ab19(++_0x5ce37a);}(_0xe673,0xde));var _0x3e67=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0xe673[_0x465a0c];return _0x1e202e;};'use strict';var _=require(_0x3e67('0x0'));var util=require('util');var logger=require(_0x3e67('0x1'))(_0x3e67('0x2'));var moment=require('moment');var BPromise=require(_0x3e67('0x3'));var rp=require(_0x3e67('0x4'));var fs=require('fs');var path=require(_0x3e67('0x5'));var rimraf=require('rimraf');var config=require(_0x3e67('0x6'));var attributes=require('./cmHopperFinal.attributes');module['exports']=function(_0x19eaaa,_0x451b56){return _0x19eaaa['define'](_0x3e67('0x7'),attributes,{'tableName':_0x3e67('0x8'),'paranoid':![],'indexes':[{'name':'calleridnum','fields':['calleridnum']},{'name':_0x3e67('0x9'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xee41=['../../config/environment','./cmHopperFinal.attributes','exports','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','util','../../config/logger','api','bluebird','path','rimraf'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xee41,0xbd));var _0x1ee4=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0xee41[_0x55f8b4];return _0x2475f9;};'use strict';var _=require('lodash');var util=require(_0x1ee4('0x0'));var logger=require(_0x1ee4('0x1'))(_0x1ee4('0x2'));var moment=require('moment');var BPromise=require(_0x1ee4('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1ee4('0x4'));var rimraf=require(_0x1ee4('0x5'));var config=require(_0x1ee4('0x6'));var attributes=require(_0x1ee4('0x7'));module[_0x1ee4('0x8')]=function(_0x15f3aa,_0x2e37ec){return _0x15f3aa['define'](_0x1ee4('0x9'),attributes,{'tableName':_0x1ee4('0xa'),'paranoid':![],'indexes':[{'name':_0x1ee4('0xb'),'fields':[_0x1ee4('0xb')]},{'name':_0x1ee4('0xc'),'fields':[_0x1ee4('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 66682d0..fa10f98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['../../config/environment','jayson/promise','http','info','CmHopperFinal,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','CmHopperFinal','create','body','options','raw','CreateCmHopperFinal','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x1949d8,_0x5d0b7b){var _0xc074a3=function(_0x7de84d){while(--_0x7de84d){_0x1949d8['push'](_0x1949d8['shift']());}};_0xc074a3(++_0x5d0b7b);}(_0x7a54,0x106));var _0x47a5=function(_0x2629ea,_0x5659a2){_0x2629ea=_0x2629ea-0x0;var _0x1943bc=_0x7a54[_0x2629ea];return _0x1943bc;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('CmHopperFinal,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['CreateCmHopperFinal']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')](_0x5247fd[_0x47a5('0x17')],{'raw':_0x5247fd[_0x47a5('0x18')]?_0x5247fd[_0x47a5('0x18')][_0x47a5('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1570bc){logger[_0x47a5('0xb')]('CreateCmHopperFinal',_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1a'),_0x5247fd,JSON[_0x47a5('0xe')](_0x1570bc));_0xaf70a6(_0x1570bc);})['catch'](function(_0xb8ae6c){logger[_0x47a5('0xf')](_0x47a5('0x1a'),_0xb8ae6c[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81['error'](0x1f4,_0xb8ae6c[_0x47a5('0x11')]));});});};
\ No newline at end of file
+var _0xb10b=['debug','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','CmHopperFinal,\x20%s,\x20%s','CmHopperFinal,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','CreateCmHopperFinal','CmHopperFinal','create','options','raw'];(function(_0x2bd2d9,_0x530fc0){var _0x406a2f=function(_0x2e3029){while(--_0x2e3029){_0x2bd2d9['push'](_0x2bd2d9['shift']());}};_0x406a2f(++_0x530fc0);}(_0xb10b,0x12a));var _0xbb10=function(_0xc82d1a,_0x145c50){_0xc82d1a=_0xc82d1a-0x0;var _0x32fad2=_0xb10b[_0xc82d1a];return _0x32fad2;};'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 2c7ac2c..81a0e09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6bd=['update','exports','multer','express','Router','fs-extra','../../components/interaction/service','./cmHopperFinal.controller','get','/:id','isAuthenticated','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','post','/voice/queue/moveContacts/:id','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','/checkContactHopper','put'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xb6bd,0xd4));var _0xdb6b=function(_0x330d37,_0x211eb1){_0x330d37=_0x330d37-0x0;var _0x5d672a=_0xb6bd[_0x330d37];return _0x5d672a;};'use strict';var multer=require(_0xdb6b('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xdb6b('0x1'));var router=express[_0xdb6b('0x2')]();var fs_extra=require(_0xdb6b('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xdb6b('0x4'));var config=require('../../config/environment');var controller=require(_0xdb6b('0x5'));router[_0xdb6b('0x6')]('/',auth['isAuthenticated'](),controller['index']);router['get']('/describe',auth['isAuthenticated'](),controller['describe']);router[_0xdb6b('0x6')](_0xdb6b('0x7'),auth[_0xdb6b('0x8')](),controller['show']);router[_0xdb6b('0x6')](_0xdb6b('0x9'),auth[_0xdb6b('0x8')](),controller[_0xdb6b('0xa')]);router['get'](_0xdb6b('0xb'),auth[_0xdb6b('0x8')](),controller[_0xdb6b('0xc')]);router[_0xdb6b('0xd')](_0xdb6b('0xe'),auth[_0xdb6b('0x8')](),controller['moveContactsQueueCampaignHopperFinal']);router[_0xdb6b('0xd')](_0xdb6b('0xf'),auth[_0xdb6b('0x8')](),controller[_0xdb6b('0x10')]);router[_0xdb6b('0xd')](_0xdb6b('0x11'),auth[_0xdb6b('0x8')](),controller['checkContactHopper']);router[_0xdb6b('0x12')](_0xdb6b('0x7'),auth[_0xdb6b('0x8')](),controller[_0xdb6b('0x13')]);module[_0xdb6b('0x14')]=router;
\ No newline at end of file
+var _0x56e7=['countContactsIvrCampaignHopperFinal','post','moveContactsQueueCampaignHopperFinal','moveContactsIvrCampaignHopperFinal','/checkContactHopper','checkContactHopper','/:id','update','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','show','/voice/queue/countAttributes/:id'];(function(_0x4efeb8,_0x5cb049){var _0x4f1e3a=function(_0x2ce084){while(--_0x2ce084){_0x4efeb8['push'](_0x4efeb8['shift']());}};_0x4f1e3a(++_0x5cb049);}(_0x56e7,0x93));var _0x756e=function(_0x3f7761,_0x1094b0){_0x3f7761=_0x3f7761-0x0;var _0x10d894=_0x56e7[_0x3f7761];return _0x10d894;};'use strict';var multer=require(_0x756e('0x0'));var util=require(_0x756e('0x1'));var path=require(_0x756e('0x2'));var timeout=require(_0x756e('0x3'));var express=require(_0x756e('0x4'));var router=express[_0x756e('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x756e('0x6'));var interaction=require(_0x756e('0x7'));var config=require(_0x756e('0x8'));var controller=require('./cmHopperFinal.controller');router[_0x756e('0x9')]('/',auth[_0x756e('0xa')](),controller['index']);router['get'](_0x756e('0xb'),auth[_0x756e('0xa')](),controller['describe']);router['get']('/:id',auth[_0x756e('0xa')](),controller[_0x756e('0xc')]);router[_0x756e('0x9')](_0x756e('0xd'),auth[_0x756e('0xa')](),controller['countContactsQueueCampaignHopperFinal']);router[_0x756e('0x9')]('/campaign/countAttributes/:id',auth[_0x756e('0xa')](),controller[_0x756e('0xe')]);router[_0x756e('0xf')]('/voice/queue/moveContacts/:id',auth[_0x756e('0xa')](),controller[_0x756e('0x10')]);router[_0x756e('0xf')]('/voice/campaign/moveContacts/:id',auth[_0x756e('0xa')](),controller[_0x756e('0x11')]);router[_0x756e('0xf')](_0x756e('0x12'),auth[_0x756e('0xa')](),controller[_0x756e('0x13')]);router['put'](_0x756e('0x14'),auth[_0x756e('0xa')](),controller[_0x756e('0x15')]);module[_0x756e('0x16')]=router;
\ No newline at end of file
index 45b7fdf..a1847cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb176=['DATE','BOOLEAN','sequelize','INTEGER','STRING'];(function(_0xb1ae1c,_0x255b19){var _0x14642f=function(_0x181569){while(--_0x181569){_0xb1ae1c['push'](_0xb1ae1c['shift']());}};_0x14642f(++_0x255b19);}(_0xb176,0x66));var _0x6b17=function(_0x3645cc,_0x25ba47){_0x3645cc=_0x3645cc-0x0;var _0x351979=_0xb176[_0x3645cc];return _0x351979;};'use strict';var Sequelize=require(_0x6b17('0x0'));module['exports']={'state':{'type':Sequelize[_0x6b17('0x1')](0x2)},'statedesc':{'type':Sequelize[_0x6b17('0x2')]},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0x6b17('0x1')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x6b17('0x1')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x6b17('0x1')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize[_0x6b17('0x2')]},'originatecalleridname':{'type':Sequelize[_0x6b17('0x2')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x6b17('0x2')]},'starttime':{'type':Sequelize[_0x6b17('0x3')]},'responsetime':{'type':Sequelize[_0x6b17('0x3')]},'answertime':{'type':Sequelize[_0x6b17('0x3')]},'droptime':{'type':Sequelize[_0x6b17('0x3')]},'endtime':{'type':Sequelize[_0x6b17('0x3')]},'ringtime':{'type':Sequelize[_0x6b17('0x1')],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x6b17('0x1')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x6b17('0x1')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x6b17('0x2')]},'campaign':{'type':Sequelize[_0x6b17('0x2')]},'campaigntype':{'type':Sequelize[_0x6b17('0x2')]},'membername':{'type':Sequelize[_0x6b17('0x2')]},'reason':{'type':Sequelize['STRING']},'amd':{'type':Sequelize[_0x6b17('0x4')],'defaultValue':![]},'fax':{'type':Sequelize[_0x6b17('0x4')],'defaultValue':![]},'callback':{'type':Sequelize[_0x6b17('0x4')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x6b17('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize[_0x6b17('0x4')],'defaultValue':![]},'editedat':{'type':Sequelize['DATE']},'edited':{'type':Sequelize[_0x6b17('0x4')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x6b17('0x1')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x6b17('0x1')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xf2a3=['STRING','DATE','BOOLEAN','INTEGER'];(function(_0x56c40d,_0x2249f8){var _0xc14a36=function(_0x125157){while(--_0x125157){_0x56c40d['push'](_0x56c40d['shift']());}};_0xc14a36(++_0x2249f8);}(_0xf2a3,0x19f));var _0x3f2a=function(_0x13f3af,_0x2ac326){_0x13f3af=_0x13f3af-0x0;var _0xda3c9f=_0xf2a3[_0x13f3af];return _0xda3c9f;};'use strict';var Sequelize=require('sequelize');module['exports']={'state':{'type':Sequelize[_0x3f2a('0x0')](0x2)},'statedesc':{'type':Sequelize[_0x3f2a('0x1')]},'scheduledat':{'type':Sequelize[_0x3f2a('0x2')]},'countbusyretry':{'type':Sequelize[_0x3f2a('0x0')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x3f2a('0x0')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x3f2a('0x0')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x3f2a('0x0')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x3f2a('0x1')]},'originatecalleridnum':{'type':Sequelize[_0x3f2a('0x1')]},'originatecalleridname':{'type':Sequelize[_0x3f2a('0x1')]},'calleridnum':{'type':Sequelize[_0x3f2a('0x1')]},'calleridname':{'type':Sequelize[_0x3f2a('0x1')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0x3f2a('0x2')]},'droptime':{'type':Sequelize[_0x3f2a('0x2')]},'endtime':{'type':Sequelize[_0x3f2a('0x2')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x3f2a('0x0')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x3f2a('0x0')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x3f2a('0x0')],'defaultValue':0x0},'dropreason':{'type':Sequelize['STRING']},'campaign':{'type':Sequelize[_0x3f2a('0x1')]},'campaigntype':{'type':Sequelize[_0x3f2a('0x1')]},'membername':{'type':Sequelize[_0x3f2a('0x1')]},'reason':{'type':Sequelize[_0x3f2a('0x1')]},'amd':{'type':Sequelize[_0x3f2a('0x3')],'defaultValue':![]},'fax':{'type':Sequelize[_0x3f2a('0x3')],'defaultValue':![]},'callback':{'type':Sequelize[_0x3f2a('0x3')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0x3f2a('0x2')]},'recallme':{'type':Sequelize[_0x3f2a('0x3')],'defaultValue':![]},'editedat':{'type':Sequelize[_0x3f2a('0x2')]},'edited':{'type':Sequelize[_0x3f2a('0x3')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x3f2a('0x0')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x3f2a('0x0')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x3f2a('0x0')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x3f2a('0x0')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x3f2a('0x0')],'defaultValue':0x0}};
\ No newline at end of file
index 9c4c47a..9d14acf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb984=['order','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','create','body','describe','update','uniqueid','find','eml-format','rimraf','zip-dir','bluebird','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','save','then','destroy','error','stack','name','send','index','map','CmHopperHistory','fieldName','model','query','filters','intersection','attributes','fields','nolimit'];(function(_0x2234e3,_0x56811a){var _0x5cc0dc=function(_0x454a32){while(--_0x454a32){_0x2234e3['push'](_0x2234e3['shift']());}};_0x5cc0dc(++_0x56811a);}(_0xb984,0x1c1));var _0x4b98=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0xb984[_0xf50820];return _0x2a9b10;};'use strict';var emlformat=require(_0x4b98('0x0'));var rimraf=require(_0x4b98('0x1'));var zipdir=require(_0x4b98('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x4b98('0x3'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x4b98('0x4'));var ejs=require(_0x4b98('0x5'));var fs=require('fs');var fs_extra=require(_0x4b98('0x6'));var _=require(_0x4b98('0x7'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x4b98('0x8'));var deskjs=require(_0x4b98('0x9'));var toCsv=require(_0x4b98('0x4'));var querystring=require(_0x4b98('0xa'));var Papa=require(_0x4b98('0xb'));var Redis=require(_0x4b98('0xc'));var authService=require(_0x4b98('0xd'));var qs=require(_0x4b98('0xe'));var as=require(_0x4b98('0xf'));var hardwareService=require(_0x4b98('0x10'));var logger=require(_0x4b98('0x11'))(_0x4b98('0x12'));var utils=require(_0x4b98('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x4b98('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x9274f0,_0x38b987){_0x38b987=_0x38b987||0xcc;return function(_0x50ac44){if(_0x50ac44){return _0x9274f0[_0x4b98('0x15')](_0x38b987);}return _0x9274f0[_0x4b98('0x16')](_0x38b987)[_0x4b98('0x17')]();};}function respondWithResult(_0x538ca5,_0x5e0a0d){_0x5e0a0d=_0x5e0a0d||0xc8;return function(_0x470aae){if(_0x470aae){return _0x538ca5[_0x4b98('0x16')](_0x5e0a0d)[_0x4b98('0x18')](_0x470aae);}};}function respondWithFilteredResult(_0xcbd54f,_0xbd3566){return function(_0x26f1d3){if(_0x26f1d3){var _0x55403f=typeof _0xbd3566[_0x4b98('0x19')]===_0x4b98('0x1a')&&typeof _0xbd3566[_0x4b98('0x1b')]==='undefined';var _0x1e3398=_0x26f1d3[_0x4b98('0x1c')];var _0x236d30=_0x55403f?0x0:_0xbd3566['offset'];var _0x40cd8b=_0x55403f?_0x26f1d3[_0x4b98('0x1c')]:_0xbd3566[_0x4b98('0x19')]+_0xbd3566[_0x4b98('0x1b')];var _0x258f53;if(_0x40cd8b>=_0x1e3398){_0x40cd8b=_0x1e3398;_0x258f53=0xc8;}else{_0x258f53=0xce;}_0xcbd54f[_0x4b98('0x16')](_0x258f53);return _0xcbd54f['set'](_0x4b98('0x1d'),_0x236d30+'-'+_0x40cd8b+'/'+_0x1e3398)['json'](_0x26f1d3);}return null;};}function patchUpdates(_0x63f3a3){return function(_0x3bc38e){try{jsonpatch['apply'](_0x3bc38e,_0x63f3a3,!![]);}catch(_0x3d6277){return BPromise['reject'](_0x3d6277);}return _0x3bc38e[_0x4b98('0x1e')]();};}function saveUpdates(_0x4d43d6,_0x2f6e76){return function(_0x100126){if(_0x100126){return _0x100126['update'](_0x4d43d6)[_0x4b98('0x1f')](function(_0x3cf6a3){return _0x3cf6a3;});}return null;};}function removeEntity(_0x1d0c8f,_0x270f01){return function(_0x1a6dfa){if(_0x1a6dfa){return _0x1a6dfa[_0x4b98('0x20')]()[_0x4b98('0x1f')](function(){_0x1d0c8f['status'](0xcc)[_0x4b98('0x17')]();});}};}function handleEntityNotFound(_0x3931fd,_0x49110b){return function(_0x4af37d){if(!_0x4af37d){_0x3931fd[_0x4b98('0x15')](0x194);}return _0x4af37d;};}function handleError(_0x36cba5,_0x3adbb5){_0x3adbb5=_0x3adbb5||0x1f4;return function(_0x4fcd0a){logger[_0x4b98('0x21')](_0x4fcd0a[_0x4b98('0x22')]);if(_0x4fcd0a[_0x4b98('0x23')]){delete _0x4fcd0a['name'];}_0x36cba5['status'](_0x3adbb5)[_0x4b98('0x24')](_0x4fcd0a);};}exports[_0x4b98('0x25')]=function(_0x494d3f,_0x3b96c5){var _0x231862={},_0x64852e={},_0x54cc05={'count':0x0,'rows':[]};var _0x5d2330=_[_0x4b98('0x26')](db[_0x4b98('0x27')]['rawAttributes'],function(_0x28070c){return{'name':_0x28070c[_0x4b98('0x28')],'type':_0x28070c['type']['key']};});_0x64852e[_0x4b98('0x29')]=_[_0x4b98('0x26')](_0x5d2330,_0x4b98('0x23'));_0x64852e[_0x4b98('0x2a')]=_['keys'](_0x494d3f['query']);_0x64852e[_0x4b98('0x2b')]=_[_0x4b98('0x2c')](_0x64852e[_0x4b98('0x29')],_0x64852e['query']);_0x231862[_0x4b98('0x2d')]=_[_0x4b98('0x2c')](_0x64852e[_0x4b98('0x29')],qs[_0x4b98('0x2e')](_0x494d3f[_0x4b98('0x2a')][_0x4b98('0x2e')]));_0x231862[_0x4b98('0x2d')]=_0x231862['attributes']['length']?_0x231862[_0x4b98('0x2d')]:_0x64852e[_0x4b98('0x29')];if(!_0x494d3f[_0x4b98('0x2a')]['hasOwnProperty'](_0x4b98('0x2f'))){_0x231862[_0x4b98('0x1b')]=qs[_0x4b98('0x1b')](_0x494d3f[_0x4b98('0x2a')]['limit']);_0x231862[_0x4b98('0x19')]=qs[_0x4b98('0x19')](_0x494d3f[_0x4b98('0x2a')]['offset']);}_0x231862[_0x4b98('0x30')]=qs[_0x4b98('0x31')](_0x494d3f[_0x4b98('0x2a')][_0x4b98('0x31')]);_0x231862[_0x4b98('0x32')]=qs[_0x4b98('0x2b')](_[_0x4b98('0x33')](_0x494d3f[_0x4b98('0x2a')],_0x64852e['filters']),_0x5d2330);if(_0x494d3f[_0x4b98('0x2a')][_0x4b98('0x34')]){_0x231862[_0x4b98('0x32')]=_['merge'](_0x231862[_0x4b98('0x32')],{'$or':_[_0x4b98('0x26')](_0x5d2330,function(_0x59c765){if(_0x59c765[_0x4b98('0x35')]!==_0x4b98('0x36')){var _0x52bd34={};_0x52bd34[_0x59c765[_0x4b98('0x23')]]={'$like':'%'+_0x494d3f['query'][_0x4b98('0x34')]+'%'};return _0x52bd34;}})});}_0x231862=_[_0x4b98('0x37')]({},_0x231862,_0x494d3f[_0x4b98('0x38')]);var _0xd78a47={'where':_0x231862['where']};return db[_0x4b98('0x27')]['count'](_0xd78a47)[_0x4b98('0x1f')](function(_0x12415f){_0x54cc05['count']=_0x12415f;if(_0x494d3f[_0x4b98('0x2a')][_0x4b98('0x39')]){_0x231862[_0x4b98('0x3a')]=[{'all':!![]}];}return db[_0x4b98('0x27')][_0x4b98('0x3b')](_0x231862);})[_0x4b98('0x1f')](function(_0x2be62d){_0x54cc05[_0x4b98('0x3c')]=_0x2be62d;return _0x54cc05;})[_0x4b98('0x1f')](respondWithFilteredResult(_0x3b96c5,_0x231862))[_0x4b98('0x3d')](handleError(_0x3b96c5,null));};exports[_0x4b98('0x3e')]=function(_0x5ca9fb,_0x224985){var _0x5971aa={'raw':!![],'where':{'id':_0x5ca9fb[_0x4b98('0x3f')]['id']}},_0x9a7d03={};_0x9a7d03[_0x4b98('0x29')]=_['keys'](db[_0x4b98('0x27')][_0x4b98('0x40')]);_0x9a7d03['query']=_['keys'](_0x5ca9fb[_0x4b98('0x2a')]);_0x9a7d03[_0x4b98('0x2b')]=_[_0x4b98('0x2c')](_0x9a7d03[_0x4b98('0x29')],_0x9a7d03[_0x4b98('0x2a')]);_0x5971aa['attributes']=_['intersection'](_0x9a7d03[_0x4b98('0x29')],qs[_0x4b98('0x2e')](_0x5ca9fb[_0x4b98('0x2a')][_0x4b98('0x2e')]));_0x5971aa[_0x4b98('0x2d')]=_0x5971aa['attributes']['length']?_0x5971aa['attributes']:_0x9a7d03[_0x4b98('0x29')];if(_0x5ca9fb['query'][_0x4b98('0x39')]){_0x5971aa[_0x4b98('0x3a')]=[{'all':!![]}];}_0x5971aa=_[_0x4b98('0x37')]({},_0x5971aa,_0x5ca9fb['options']);return db['CmHopperHistory']['find'](_0x5971aa)[_0x4b98('0x1f')](handleEntityNotFound(_0x224985,null))[_0x4b98('0x1f')](respondWithResult(_0x224985,null))['catch'](handleError(_0x224985,null));};exports['create']=function(_0x59db8c,_0x4199b4){return db['CmHopperHistory'][_0x4b98('0x41')](_0x59db8c[_0x4b98('0x42')],{})[_0x4b98('0x1f')](respondWithResult(_0x4199b4,0xc9))[_0x4b98('0x3d')](handleError(_0x4199b4,null));};exports['describe']=function(_0x6ef8f8,_0xfd4a0a){return db[_0x4b98('0x27')][_0x4b98('0x43')]()[_0x4b98('0x1f')](respondWithResult(_0xfd4a0a,null))[_0x4b98('0x3d')](handleError(_0xfd4a0a,null));};exports[_0x4b98('0x44')]=function(_0xa2b3e1,_0x2e6ca9){if(_0xa2b3e1['body'][_0x4b98('0x45')]){delete _0xa2b3e1[_0x4b98('0x42')][_0x4b98('0x45')];}return db['CmHopperHistory'][_0x4b98('0x46')]({'where':{'uniqueid':_0xa2b3e1[_0x4b98('0x3f')]['id']}})[_0x4b98('0x1f')](handleEntityNotFound(_0x2e6ca9,null))['then'](saveUpdates(_0xa2b3e1[_0x4b98('0x42')],null))[_0x4b98('0x1f')](respondWithResult(_0x2e6ca9,null))['catch'](handleError(_0x2e6ca9,null));};
\ No newline at end of file
+var _0xed84=['uniqueid','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','end','error','stack','name','send','index','map','CmHopperHistory','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','findAll','rows','catch','show','params','keys','includeAll','include','find','create','body','describe'];(function(_0x1ce269,_0x20ec6e){var _0x3c66e0=function(_0x115c45){while(--_0x115c45){_0x1ce269['push'](_0x1ce269['shift']());}};_0x3c66e0(++_0x20ec6e);}(_0xed84,0x97));var _0x4ed8=function(_0x2fd910,_0x1074cf){_0x2fd910=_0x2fd910-0x0;var _0x50fed8=_0xed84[_0x2fd910];return _0x50fed8;};'use strict';var emlformat=require(_0x4ed8('0x0'));var rimraf=require(_0x4ed8('0x1'));var zipdir=require(_0x4ed8('0x2'));var jsonpatch=require(_0x4ed8('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x4ed8('0x4'));var Mustache=require(_0x4ed8('0x5'));var util=require(_0x4ed8('0x6'));var path=require(_0x4ed8('0x7'));var sox=require(_0x4ed8('0x8'));var csv=require(_0x4ed8('0x9'));var ejs=require(_0x4ed8('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4ed8('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x4ed8('0xc'));var toCsv=require(_0x4ed8('0x9'));var querystring=require(_0x4ed8('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x4ed8('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x4ed8('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4ed8('0x10'))(_0x4ed8('0x11'));var utils=require(_0x4ed8('0x12'));var config=require(_0x4ed8('0x13'));var licenseUtil=require(_0x4ed8('0x14'));var db=require(_0x4ed8('0x15'))['db'];function respondWithStatusCode(_0x1328bc,_0x2a7aec){_0x2a7aec=_0x2a7aec||0xcc;return function(_0x260e49){if(_0x260e49){return _0x1328bc['sendStatus'](_0x2a7aec);}return _0x1328bc[_0x4ed8('0x16')](_0x2a7aec)['end']();};}function respondWithResult(_0x4ccb12,_0x5d2e04){_0x5d2e04=_0x5d2e04||0xc8;return function(_0x301765){if(_0x301765){return _0x4ccb12[_0x4ed8('0x16')](_0x5d2e04)[_0x4ed8('0x17')](_0x301765);}};}function respondWithFilteredResult(_0x425c22,_0x1eefb8){return function(_0x25fffc){if(_0x25fffc){var _0x4af4ba=typeof _0x1eefb8[_0x4ed8('0x18')]===_0x4ed8('0x19')&&typeof _0x1eefb8[_0x4ed8('0x1a')]==='undefined';var _0xe8668d=_0x25fffc['count'];var _0x33d0bc=_0x4af4ba?0x0:_0x1eefb8[_0x4ed8('0x18')];var _0x57b07e=_0x4af4ba?_0x25fffc[_0x4ed8('0x1b')]:_0x1eefb8[_0x4ed8('0x18')]+_0x1eefb8[_0x4ed8('0x1a')];var _0x304e36;if(_0x57b07e>=_0xe8668d){_0x57b07e=_0xe8668d;_0x304e36=0xc8;}else{_0x304e36=0xce;}_0x425c22[_0x4ed8('0x16')](_0x304e36);return _0x425c22[_0x4ed8('0x1c')](_0x4ed8('0x1d'),_0x33d0bc+'-'+_0x57b07e+'/'+_0xe8668d)[_0x4ed8('0x17')](_0x25fffc);}return null;};}function patchUpdates(_0x53fdf0){return function(_0x3bed89){try{jsonpatch[_0x4ed8('0x1e')](_0x3bed89,_0x53fdf0,!![]);}catch(_0xac47){return BPromise[_0x4ed8('0x1f')](_0xac47);}return _0x3bed89['save']();};}function saveUpdates(_0x351a40,_0x2f53c6){return function(_0xa1aa58){if(_0xa1aa58){return _0xa1aa58[_0x4ed8('0x20')](_0x351a40)[_0x4ed8('0x21')](function(_0x415821){return _0x415821;});}return null;};}function removeEntity(_0x4113b9,_0x4447a0){return function(_0x4fccec){if(_0x4fccec){return _0x4fccec['destroy']()[_0x4ed8('0x21')](function(){_0x4113b9[_0x4ed8('0x16')](0xcc)[_0x4ed8('0x22')]();});}};}function handleEntityNotFound(_0x3d38de,_0x25048f){return function(_0x15aa05){if(!_0x15aa05){_0x3d38de['sendStatus'](0x194);}return _0x15aa05;};}function handleError(_0xcefca7,_0xcecad7){_0xcecad7=_0xcecad7||0x1f4;return function(_0xc9e488){logger[_0x4ed8('0x23')](_0xc9e488[_0x4ed8('0x24')]);if(_0xc9e488[_0x4ed8('0x25')]){delete _0xc9e488['name'];}_0xcefca7[_0x4ed8('0x16')](_0xcecad7)[_0x4ed8('0x26')](_0xc9e488);};}exports[_0x4ed8('0x27')]=function(_0xef73a8,_0x396e14){var _0x162c22={},_0x338851={},_0x1dac02={'count':0x0,'rows':[]};var _0x42be83=_[_0x4ed8('0x28')](db[_0x4ed8('0x29')][_0x4ed8('0x2a')],function(_0x11c876){return{'name':_0x11c876[_0x4ed8('0x2b')],'type':_0x11c876[_0x4ed8('0x2c')][_0x4ed8('0x2d')]};});_0x338851['model']=_[_0x4ed8('0x28')](_0x42be83,_0x4ed8('0x25'));_0x338851[_0x4ed8('0x2e')]=_['keys'](_0xef73a8[_0x4ed8('0x2e')]);_0x338851[_0x4ed8('0x2f')]=_[_0x4ed8('0x30')](_0x338851[_0x4ed8('0x31')],_0x338851[_0x4ed8('0x2e')]);_0x162c22[_0x4ed8('0x32')]=_[_0x4ed8('0x30')](_0x338851[_0x4ed8('0x31')],qs[_0x4ed8('0x33')](_0xef73a8[_0x4ed8('0x2e')][_0x4ed8('0x33')]));_0x162c22[_0x4ed8('0x32')]=_0x162c22[_0x4ed8('0x32')][_0x4ed8('0x34')]?_0x162c22[_0x4ed8('0x32')]:_0x338851['model'];if(!_0xef73a8[_0x4ed8('0x2e')]['hasOwnProperty'](_0x4ed8('0x35'))){_0x162c22[_0x4ed8('0x1a')]=qs[_0x4ed8('0x1a')](_0xef73a8[_0x4ed8('0x2e')]['limit']);_0x162c22[_0x4ed8('0x18')]=qs[_0x4ed8('0x18')](_0xef73a8[_0x4ed8('0x2e')]['offset']);}_0x162c22[_0x4ed8('0x36')]=qs[_0x4ed8('0x37')](_0xef73a8['query'][_0x4ed8('0x37')]);_0x162c22[_0x4ed8('0x38')]=qs[_0x4ed8('0x2f')](_[_0x4ed8('0x39')](_0xef73a8[_0x4ed8('0x2e')],_0x338851['filters']),_0x42be83);if(_0xef73a8['query'][_0x4ed8('0x3a')]){_0x162c22[_0x4ed8('0x38')]=_[_0x4ed8('0x3b')](_0x162c22[_0x4ed8('0x38')],{'$or':_[_0x4ed8('0x28')](_0x42be83,function(_0x41520f){if(_0x41520f[_0x4ed8('0x2c')]!==_0x4ed8('0x3c')){var _0x9f0431={};_0x9f0431[_0x41520f['name']]={'$like':'%'+_0xef73a8['query']['filter']+'%'};return _0x9f0431;}})});}_0x162c22=_[_0x4ed8('0x3b')]({},_0x162c22,_0xef73a8[_0x4ed8('0x3d')]);var _0x62fc83={'where':_0x162c22['where']};return db[_0x4ed8('0x29')][_0x4ed8('0x1b')](_0x62fc83)[_0x4ed8('0x21')](function(_0x3d5982){_0x1dac02[_0x4ed8('0x1b')]=_0x3d5982;if(_0xef73a8[_0x4ed8('0x2e')]['includeAll']){_0x162c22['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0x4ed8('0x3e')](_0x162c22);})[_0x4ed8('0x21')](function(_0x4b7ee6){_0x1dac02[_0x4ed8('0x3f')]=_0x4b7ee6;return _0x1dac02;})[_0x4ed8('0x21')](respondWithFilteredResult(_0x396e14,_0x162c22))[_0x4ed8('0x40')](handleError(_0x396e14,null));};exports[_0x4ed8('0x41')]=function(_0x5233d1,_0x490903){var _0xf95595={'raw':!![],'where':{'id':_0x5233d1[_0x4ed8('0x42')]['id']}},_0x1785c2={};_0x1785c2['model']=_['keys'](db[_0x4ed8('0x29')][_0x4ed8('0x2a')]);_0x1785c2[_0x4ed8('0x2e')]=_[_0x4ed8('0x43')](_0x5233d1[_0x4ed8('0x2e')]);_0x1785c2[_0x4ed8('0x2f')]=_[_0x4ed8('0x30')](_0x1785c2[_0x4ed8('0x31')],_0x1785c2[_0x4ed8('0x2e')]);_0xf95595[_0x4ed8('0x32')]=_[_0x4ed8('0x30')](_0x1785c2[_0x4ed8('0x31')],qs['fields'](_0x5233d1[_0x4ed8('0x2e')][_0x4ed8('0x33')]));_0xf95595[_0x4ed8('0x32')]=_0xf95595[_0x4ed8('0x32')][_0x4ed8('0x34')]?_0xf95595[_0x4ed8('0x32')]:_0x1785c2[_0x4ed8('0x31')];if(_0x5233d1[_0x4ed8('0x2e')][_0x4ed8('0x44')]){_0xf95595[_0x4ed8('0x45')]=[{'all':!![]}];}_0xf95595=_[_0x4ed8('0x3b')]({},_0xf95595,_0x5233d1[_0x4ed8('0x3d')]);return db[_0x4ed8('0x29')][_0x4ed8('0x46')](_0xf95595)[_0x4ed8('0x21')](handleEntityNotFound(_0x490903,null))[_0x4ed8('0x21')](respondWithResult(_0x490903,null))['catch'](handleError(_0x490903,null));};exports['create']=function(_0x21e837,_0x5b9e58){return db[_0x4ed8('0x29')][_0x4ed8('0x47')](_0x21e837[_0x4ed8('0x48')],{})['then'](respondWithResult(_0x5b9e58,0xc9))[_0x4ed8('0x40')](handleError(_0x5b9e58,null));};exports[_0x4ed8('0x49')]=function(_0xb0372e,_0x28bf43){return db[_0x4ed8('0x29')]['describe']()['then'](respondWithResult(_0x28bf43,null))[_0x4ed8('0x40')](handleError(_0x28bf43,null));};exports['update']=function(_0x3ae5b5,_0x1dc8ca){if(_0x3ae5b5[_0x4ed8('0x48')][_0x4ed8('0x4a')]){delete _0x3ae5b5[_0x4ed8('0x48')]['uniqueid'];}return db[_0x4ed8('0x29')][_0x4ed8('0x46')]({'where':{'uniqueid':_0x3ae5b5[_0x4ed8('0x42')]['id']}})['then'](handleEntityNotFound(_0x1dc8ca,null))['then'](saveUpdates(_0x3ae5b5[_0x4ed8('0x48')],null))[_0x4ed8('0x21')](respondWithResult(_0x1dc8ca,null))[_0x4ed8('0x40')](handleError(_0x1dc8ca,null));};
\ No newline at end of file
index 2ab3afc..7b7b87a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffc0=['request-promise','path','rimraf','../../config/environment','exports','cm_hopper_history','endtime','uniqueid','util','api','moment','bluebird'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0xffc0,0x1a0));var _0x0ffc=function(_0x5a2e0a,_0x2abcdd){_0x5a2e0a=_0x5a2e0a-0x0;var _0xe7d7eb=_0xffc0[_0x5a2e0a];return _0xe7d7eb;};'use strict';var _=require('lodash');var util=require(_0x0ffc('0x0'));var logger=require('../../config/logger')(_0x0ffc('0x1'));var moment=require(_0x0ffc('0x2'));var BPromise=require(_0x0ffc('0x3'));var rp=require(_0x0ffc('0x4'));var fs=require('fs');var path=require(_0x0ffc('0x5'));var rimraf=require(_0x0ffc('0x6'));var config=require(_0x0ffc('0x7'));var attributes=require('./cmHopperHistory.attributes');module[_0x0ffc('0x8')]=function(_0x23d3e0,_0x426ce2){return _0x23d3e0['define']('CmHopperHistory',attributes,{'tableName':_0x0ffc('0x9'),'paranoid':![],'indexes':[{'name':_0x0ffc('0xa'),'fields':[_0x0ffc('0xa')]},{'name':_0x0ffc('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xff01=['request-promise','path','../../config/environment','exports','cm_hopper_history','endtime','uniqueid','lodash','util','api','bluebird'];(function(_0x238a68,_0x1587b3){var _0x415da7=function(_0x119f17){while(--_0x119f17){_0x238a68['push'](_0x238a68['shift']());}};_0x415da7(++_0x1587b3);}(_0xff01,0xb7));var _0x1ff0=function(_0xa19129,_0x41e40c){_0xa19129=_0xa19129-0x0;var _0x145c9b=_0xff01[_0xa19129];return _0x145c9b;};'use strict';var _=require(_0x1ff0('0x0'));var util=require(_0x1ff0('0x1'));var logger=require('../../config/logger')(_0x1ff0('0x2'));var moment=require('moment');var BPromise=require(_0x1ff0('0x3'));var rp=require(_0x1ff0('0x4'));var fs=require('fs');var path=require(_0x1ff0('0x5'));var rimraf=require('rimraf');var config=require(_0x1ff0('0x6'));var attributes=require('./cmHopperHistory.attributes');module[_0x1ff0('0x7')]=function(_0x4fd1b6,_0x3f8ca1){return _0x4fd1b6['define']('CmHopperHistory',attributes,{'tableName':_0x1ff0('0x8'),'paranoid':![],'indexes':[{'name':_0x1ff0('0x9'),'fields':['endtime']},{'name':_0x1ff0('0xa'),'fields':[_0x1ff0('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index f20360c..393499c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93e7=['`state`\x20=\x2010,\x201,\x20null','`state`\x20=\x2011,\x201,\x20null','AVG','predictiveIntervalAvgHoldtime','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','GetVoiceQueueHopperHistory','CmHopperHistory','findAll','name','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','`state`\x20=\x2014,\x201,\x20null','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','campaign','GetCampaignHopperHistory','ivrAnswerCallsDay','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','then','info','CmHopperHistory,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','result','catch','create','body','options','raw','CreateCmHopperHistory','debug','AvgHandleTime','where','sequelize','COUNT','col','predictiveIntervalTotalCalls','`state`\x20=\x204,\x201,\x20null','literal'];(function(_0x26aec8,_0x2d3d48){var _0x5c100e=function(_0x3238ff){while(--_0x3238ff){_0x26aec8['push'](_0x26aec8['shift']());}};_0x5c100e(++_0x2d3d48);}(_0x93e7,0x9e));var _0x793e=function(_0x874cf1,_0x2a4954){_0x874cf1=_0x874cf1-0x0;var _0x233579=_0x93e7[_0x874cf1];return _0x233579;};'use strict';var _=require(_0x793e('0x0'));var util=require('util');var moment=require(_0x793e('0x1'));var BPromise=require(_0x793e('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x793e('0x3'));var db=require(_0x793e('0x4'))['db'];var utils=require(_0x793e('0x5'));var logger=require(_0x793e('0x6'))('rpc');var config=require(_0x793e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x793e('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x17c1e7,_0x4ca5ad,_0x427280){return new BPromise(function(_0x584492,_0x20d5c1){return client[_0x793e('0x9')](_0x17c1e7,_0x427280)[_0x793e('0xa')](function(_0x3af84f){logger[_0x793e('0xb')](_0x793e('0xc'),_0x4ca5ad,_0x793e('0xd'));logger['debug']('CmHopperHistory,\x20%s,\x20%s,\x20%s',_0x4ca5ad,'request\x20sent',JSON[_0x793e('0xe')](_0x3af84f));if(_0x3af84f['error']){if(_0x3af84f['error'][_0x793e('0xf')]===0x1f4){logger[_0x793e('0x10')]('CmHopperHistory,\x20%s,\x20%s',_0x4ca5ad,_0x3af84f[_0x793e('0x10')][_0x793e('0x11')]);return _0x20d5c1(_0x3af84f[_0x793e('0x10')][_0x793e('0x11')]);}logger[_0x793e('0x10')](_0x793e('0xc'),_0x4ca5ad,_0x3af84f[_0x793e('0x10')][_0x793e('0x11')]);return _0x584492(_0x3af84f[_0x793e('0x10')][_0x793e('0x11')]);}else{logger[_0x793e('0xb')](_0x793e('0xc'),_0x4ca5ad,_0x793e('0xd'));_0x584492(_0x3af84f[_0x793e('0x12')][_0x793e('0x11')]);}})[_0x793e('0x13')](function(_0x163dbc){logger[_0x793e('0x10')](_0x793e('0xc'),_0x4ca5ad,_0x163dbc);_0x20d5c1(_0x163dbc);});});}exports['CreateCmHopperHistory']=function(_0x3b38ef){var _0x3c6163=this;return new Promise(function(_0x4ba056,_0x4d55d4){return db['CmHopperHistory'][_0x793e('0x14')](_0x3b38ef[_0x793e('0x15')],{'raw':_0x3b38ef[_0x793e('0x16')]?_0x3b38ef[_0x793e('0x16')][_0x793e('0x17')]===undefined?!![]:![]:!![]})[_0x793e('0xa')](function(_0x1af167){logger[_0x793e('0xb')](_0x793e('0x18'),_0x3b38ef);logger[_0x793e('0x19')](_0x793e('0x18'),_0x3b38ef,JSON[_0x793e('0xe')](_0x1af167));_0x4ba056(_0x1af167);})[_0x793e('0x13')](function(_0xed37e){logger[_0x793e('0x10')](_0x793e('0x18'),_0xed37e[_0x793e('0x11')],_0x3b38ef);_0x4d55d4(_0x3c6163['error'](0x1f4,_0xed37e['message']));});});};exports[_0x793e('0x1a')]=function(_0x36840f){var _0x54eec3=this;return new Promise(function(_0x373e7a,_0x491d2a){return db['CmHopperHistory']['findAll']({'raw':_0x36840f['options']?_0x36840f['options'][_0x793e('0x17')]===undefined?!![]:![]:!![],'where':_0x36840f[_0x793e('0x16')]?_0x36840f[_0x793e('0x16')][_0x793e('0x1b')]||null:null,'attributes':[[db[_0x793e('0x1c')]['fn'](_0x793e('0x1d'),db[_0x793e('0x1c')][_0x793e('0x1e')]('id')),_0x793e('0x1f')],[db[_0x793e('0x1c')]['fn'](_0x793e('0x1d'),db['sequelize']['fn']('IF',db[_0x793e('0x1c')]['literal'](_0x793e('0x20')))),'predictiveIntervalAnsweredCalls'],[db[_0x793e('0x1c')]['fn']('COUNT',db[_0x793e('0x1c')]['fn']('IF',db['sequelize'][_0x793e('0x21')](_0x793e('0x22')))),'predictiveIntervalDroppedCallsTimeout'],[db['sequelize']['fn'](_0x793e('0x1d'),db['sequelize']['fn']('IF',db[_0x793e('0x1c')][_0x793e('0x21')](_0x793e('0x23')))),'predictiveIntervalDroppedCallsCallersExit'],[db[_0x793e('0x1c')]['fn'](_0x793e('0x24'),db[_0x793e('0x1c')]['fn']('IF',db[_0x793e('0x1c')][_0x793e('0x21')]('`state`\x20=\x204,\x20`holdtime`,\x20null'))),_0x793e('0x25')],[db[_0x793e('0x1c')]['fn'](_0x793e('0x24'),db[_0x793e('0x1c')]['fn']('IF',db['sequelize'][_0x793e('0x21')](_0x793e('0x26')))),_0x793e('0x27')]]})[_0x793e('0xa')](function(_0x4089dd){logger['info'](_0x793e('0x1a'),_0x36840f);logger[_0x793e('0x19')](_0x793e('0x1a'),_0x36840f,JSON[_0x793e('0xe')](_0x4089dd));_0x373e7a(_0x4089dd);})[_0x793e('0x13')](function(_0x3bde9a){logger[_0x793e('0x10')](_0x793e('0x1a'),_0x3bde9a['message'],_0x36840f);_0x491d2a(_0x54eec3[_0x793e('0x10')](0x1f4,_0x3bde9a[_0x793e('0x11')]));});});};exports[_0x793e('0x28')]=function(_0x43e037){var _0x137cd4=this;return new Promise(function(_0x1a247a,_0x48453b){return db[_0x793e('0x29')][_0x793e('0x2a')]({'raw':_0x43e037[_0x793e('0x16')]?_0x43e037[_0x793e('0x16')][_0x793e('0x17')]===undefined?!![]:![]:!![],'where':_0x43e037[_0x793e('0x16')]?_0x43e037[_0x793e('0x16')][_0x793e('0x1b')]||null:null,'attributes':[['campaign',_0x793e('0x2b')],[db[_0x793e('0x1c')]['fn'](_0x793e('0x1d'),db[_0x793e('0x1c')]['fn']('IF',db[_0x793e('0x1c')][_0x793e('0x21')]('`state`\x20=\x200,\x201,\x20null'))),'outboundNoSuchCallsDay'],[db[_0x793e('0x1c')]['fn'](_0x793e('0x1d'),db[_0x793e('0x1c')]['fn']('IF',db[_0x793e('0x1c')][_0x793e('0x21')](_0x793e('0x2c')))),_0x793e('0x2d')],[db[_0x793e('0x1c')]['fn'](_0x793e('0x1d'),db[_0x793e('0x1c')]['fn']('IF',db[_0x793e('0x1c')][_0x793e('0x21')](_0x793e('0x20')))),_0x793e('0x2e')],[db[_0x793e('0x1c')]['fn'](_0x793e('0x1d'),db[_0x793e('0x1c')]['fn']('IF',db[_0x793e('0x1c')][_0x793e('0x21')](_0x793e('0x2f')))),_0x793e('0x30')],[db[_0x793e('0x1c')]['fn'](_0x793e('0x1d'),db[_0x793e('0x1c')]['fn']('IF',db['sequelize'][_0x793e('0x21')]('`state`\x20=\x208,\x201,\x20null'))),'outboundCongestionCallsDay'],[db[_0x793e('0x1c')]['fn'](_0x793e('0x1d'),db[_0x793e('0x1c')]['fn']('IF',db[_0x793e('0x1c')][_0x793e('0x21')](_0x793e('0x31')))),_0x793e('0x32')],[db[_0x793e('0x1c')]['fn'](_0x793e('0x1d'),db['sequelize']['fn']('IF',db['sequelize'][_0x793e('0x21')](_0x793e('0x33')))),_0x793e('0x34')],[db[_0x793e('0x1c')]['fn']('COUNT',db[_0x793e('0x1c')]['fn']('IF',db[_0x793e('0x1c')][_0x793e('0x21')](_0x793e('0x35')))),'outboundUnknownCallsDay'],[db[_0x793e('0x1c')]['fn'](_0x793e('0x1d'),db[_0x793e('0x1c')]['fn']('IF',db[_0x793e('0x1c')][_0x793e('0x21')]('`state`\x20=\x2013,\x201,\x20null'))),'outboundBlacklistCallsDay'],[db['sequelize']['fn']('COUNT',db[_0x793e('0x1c')]['fn']('IF',db[_0x793e('0x1c')][_0x793e('0x21')](_0x793e('0x36')))),'outboundOriginateFailureCallsDay'],[db[_0x793e('0x1c')]['fn'](_0x793e('0x1d'),db[_0x793e('0x1c')]['fn']('IF',db['sequelize'][_0x793e('0x21')]('`state`\x20=\x2018,\x201,\x20null'))),'outboundRejectCallsDay'],[db[_0x793e('0x1c')]['fn'](_0x793e('0x1d'),db[_0x793e('0x1c')]['fn']('IF',db[_0x793e('0x1c')]['literal'](_0x793e('0x37')))),_0x793e('0x38')],[db[_0x793e('0x1c')]['fn'](_0x793e('0x1d'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x793e('0x39')))),_0x793e('0x3a')],[db[_0x793e('0x1c')]['fn']('COUNT',db[_0x793e('0x1c')]['fn']('IF',db['sequelize']['literal'](_0x793e('0x3b')))),_0x793e('0x3c')]],'group':[_0x793e('0x3d')]})['then'](function(_0x250eb8){logger['info'](_0x793e('0x28'),_0x43e037);logger['debug']('GetVoiceQueueHopperHistory',_0x43e037,JSON[_0x793e('0xe')](_0x250eb8));_0x1a247a(_0x250eb8);})['catch'](function(_0x431c07){logger['error'](_0x793e('0x28'),_0x431c07['message'],_0x43e037);_0x48453b(_0x137cd4['error'](0x1f4,_0x431c07[_0x793e('0x11')]));});});};exports[_0x793e('0x3e')]=function(_0x1fe506){var _0x3881cc=this;return new Promise(function(_0x11c4f6,_0x4ee4f7){return db['CmHopperHistory'][_0x793e('0x2a')]({'raw':_0x1fe506[_0x793e('0x16')]?_0x1fe506['options'][_0x793e('0x17')]===undefined?!![]:![]:!![],'where':_0x1fe506[_0x793e('0x16')]?_0x1fe506[_0x793e('0x16')][_0x793e('0x1b')]||null:null,'attributes':[[_0x793e('0x3d'),_0x793e('0x2b')],[db[_0x793e('0x1c')]['fn']('COUNT',db[_0x793e('0x1c')][_0x793e('0x1e')]('id')),'ivrTotalCallsDays'],[db[_0x793e('0x1c')]['fn'](_0x793e('0x1d'),db[_0x793e('0x1c')]['fn']('IF',db[_0x793e('0x1c')][_0x793e('0x21')](_0x793e('0x20')))),_0x793e('0x3f')]],'group':[_0x793e('0x3d')]})[_0x793e('0xa')](function(_0x4b5bd4){logger[_0x793e('0xb')]('GetCampaignHopperHistory',_0x1fe506);logger[_0x793e('0x19')](_0x793e('0x3e'),_0x1fe506,JSON[_0x793e('0xe')](_0x4b5bd4));_0x11c4f6(_0x4b5bd4);})[_0x793e('0x13')](function(_0x50cc39){logger[_0x793e('0x10')]('GetCampaignHopperHistory',_0x50cc39[_0x793e('0x11')],_0x1fe506);_0x4ee4f7(_0x3881cc[_0x793e('0x10')](0x1f4,_0x50cc39[_0x793e('0x11')]));});});};
\ No newline at end of file
+var _0xee64=['../../config/utils','../../config/logger','client','info','CmHopperHistory,\x20%s,\x20%s','request\x20sent','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CmHopperHistory','create','body','options','raw','then','CreateCmHopperHistory','debug','AvgHandleTime','findAll','COUNT','sequelize','col','predictiveIntervalTotalCalls','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','`state`\x20=\x2011,\x201,\x20null','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','where','campaign','name','`state`\x20=\x200,\x201,\x20null','`state`\x20=\x203,\x201,\x20null','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','GetVoiceQueueHopperHistory','GetCampaignHopperHistory','ivrTotalCallsDays','ivrAnswerCallsDay','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0xe2a1aa,_0x525d7b){var _0x5a8362=function(_0x39aece){while(--_0x39aece){_0xe2a1aa['push'](_0xe2a1aa['shift']());}};_0x5a8362(++_0x525d7b);}(_0xee64,0x14d));var _0x4ee6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xee64[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x4ee6('0x0'));var util=require(_0x4ee6('0x1'));var moment=require(_0x4ee6('0x2'));var BPromise=require(_0x4ee6('0x3'));var rs=require(_0x4ee6('0x4'));var fs=require('fs');var Redis=require(_0x4ee6('0x5'));var db=require(_0x4ee6('0x6'))['db'];var utils=require(_0x4ee6('0x7'));var logger=require(_0x4ee6('0x8'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x4ee6('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2e2374,_0x55e889,_0x53756f){return new BPromise(function(_0x57d90a,_0x17afbe){return client['request'](_0x2e2374,_0x53756f)['then'](function(_0x14131c){logger[_0x4ee6('0xa')](_0x4ee6('0xb'),_0x55e889,_0x4ee6('0xc'));logger['debug'](_0x4ee6('0xd'),_0x55e889,_0x4ee6('0xc'),JSON[_0x4ee6('0xe')](_0x14131c));if(_0x14131c[_0x4ee6('0xf')]){if(_0x14131c[_0x4ee6('0xf')][_0x4ee6('0x10')]===0x1f4){logger[_0x4ee6('0xf')](_0x4ee6('0xb'),_0x55e889,_0x14131c[_0x4ee6('0xf')]['message']);return _0x17afbe(_0x14131c['error'][_0x4ee6('0x11')]);}logger[_0x4ee6('0xf')]('CmHopperHistory,\x20%s,\x20%s',_0x55e889,_0x14131c[_0x4ee6('0xf')][_0x4ee6('0x11')]);return _0x57d90a(_0x14131c['error']['message']);}else{logger[_0x4ee6('0xa')](_0x4ee6('0xb'),_0x55e889,'request\x20sent');_0x57d90a(_0x14131c['result'][_0x4ee6('0x11')]);}})[_0x4ee6('0x12')](function(_0xe79049){logger[_0x4ee6('0xf')](_0x4ee6('0xb'),_0x55e889,_0xe79049);_0x17afbe(_0xe79049);});});}exports['CreateCmHopperHistory']=function(_0x253ce0){var _0x1d1cad=this;return new Promise(function(_0x42a1c5,_0x5984d8){return db[_0x4ee6('0x13')][_0x4ee6('0x14')](_0x253ce0[_0x4ee6('0x15')],{'raw':_0x253ce0[_0x4ee6('0x16')]?_0x253ce0[_0x4ee6('0x16')][_0x4ee6('0x17')]===undefined?!![]:![]:!![]})[_0x4ee6('0x18')](function(_0x16df0a){logger['info'](_0x4ee6('0x19'),_0x253ce0);logger[_0x4ee6('0x1a')](_0x4ee6('0x19'),_0x253ce0,JSON['stringify'](_0x16df0a));_0x42a1c5(_0x16df0a);})[_0x4ee6('0x12')](function(_0x5e5786){logger[_0x4ee6('0xf')]('CreateCmHopperHistory',_0x5e5786[_0x4ee6('0x11')],_0x253ce0);_0x5984d8(_0x1d1cad[_0x4ee6('0xf')](0x1f4,_0x5e5786[_0x4ee6('0x11')]));});});};exports[_0x4ee6('0x1b')]=function(_0x324cd4){var _0x5d09bb=this;return new Promise(function(_0x284742,_0x43755e){return db[_0x4ee6('0x13')][_0x4ee6('0x1c')]({'raw':_0x324cd4[_0x4ee6('0x16')]?_0x324cd4[_0x4ee6('0x16')][_0x4ee6('0x17')]===undefined?!![]:![]:!![],'where':_0x324cd4[_0x4ee6('0x16')]?_0x324cd4[_0x4ee6('0x16')]['where']||null:null,'attributes':[[db['sequelize']['fn'](_0x4ee6('0x1d'),db[_0x4ee6('0x1e')][_0x4ee6('0x1f')]('id')),_0x4ee6('0x20')],[db['sequelize']['fn']('COUNT',db[_0x4ee6('0x1e')]['fn']('IF',db[_0x4ee6('0x1e')][_0x4ee6('0x21')](_0x4ee6('0x22')))),_0x4ee6('0x23')],[db[_0x4ee6('0x1e')]['fn'](_0x4ee6('0x1d'),db[_0x4ee6('0x1e')]['fn']('IF',db[_0x4ee6('0x1e')]['literal']('`state`\x20=\x2010,\x201,\x20null'))),'predictiveIntervalDroppedCallsTimeout'],[db[_0x4ee6('0x1e')]['fn'](_0x4ee6('0x1d'),db[_0x4ee6('0x1e')]['fn']('IF',db[_0x4ee6('0x1e')][_0x4ee6('0x21')](_0x4ee6('0x24')))),'predictiveIntervalDroppedCallsCallersExit'],[db[_0x4ee6('0x1e')]['fn'](_0x4ee6('0x25'),db[_0x4ee6('0x1e')]['fn']('IF',db[_0x4ee6('0x1e')]['literal'](_0x4ee6('0x26')))),_0x4ee6('0x27')],[db['sequelize']['fn'](_0x4ee6('0x25'),db[_0x4ee6('0x1e')]['fn']('IF',db[_0x4ee6('0x1e')][_0x4ee6('0x21')](_0x4ee6('0x28')))),_0x4ee6('0x29')]]})['then'](function(_0x565dff){logger['info'](_0x4ee6('0x1b'),_0x324cd4);logger['debug'](_0x4ee6('0x1b'),_0x324cd4,JSON[_0x4ee6('0xe')](_0x565dff));_0x284742(_0x565dff);})['catch'](function(_0x115fc6){logger[_0x4ee6('0xf')](_0x4ee6('0x1b'),_0x115fc6[_0x4ee6('0x11')],_0x324cd4);_0x43755e(_0x5d09bb[_0x4ee6('0xf')](0x1f4,_0x115fc6['message']));});});};exports['GetVoiceQueueHopperHistory']=function(_0x1132d4){var _0x203723=this;return new Promise(function(_0x498dec,_0x2b7527){return db['CmHopperHistory']['findAll']({'raw':_0x1132d4[_0x4ee6('0x16')]?_0x1132d4[_0x4ee6('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x1132d4[_0x4ee6('0x16')]?_0x1132d4[_0x4ee6('0x16')][_0x4ee6('0x2a')]||null:null,'attributes':[[_0x4ee6('0x2b'),_0x4ee6('0x2c')],[db[_0x4ee6('0x1e')]['fn'](_0x4ee6('0x1d'),db['sequelize']['fn']('IF',db[_0x4ee6('0x1e')][_0x4ee6('0x21')](_0x4ee6('0x2d')))),'outboundNoSuchCallsDay'],[db[_0x4ee6('0x1e')]['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize'][_0x4ee6('0x21')](_0x4ee6('0x2e')))),'outboundNoAnswerCallsDay'],[db[_0x4ee6('0x1e')]['fn'](_0x4ee6('0x1d'),db['sequelize']['fn']('IF',db[_0x4ee6('0x1e')][_0x4ee6('0x21')](_0x4ee6('0x22')))),_0x4ee6('0x2f')],[db[_0x4ee6('0x1e')]['fn'](_0x4ee6('0x1d'),db[_0x4ee6('0x1e')]['fn']('IF',db[_0x4ee6('0x1e')]['literal'](_0x4ee6('0x30')))),_0x4ee6('0x31')],[db['sequelize']['fn'](_0x4ee6('0x1d'),db[_0x4ee6('0x1e')]['fn']('IF',db[_0x4ee6('0x1e')][_0x4ee6('0x21')](_0x4ee6('0x32')))),'outboundCongestionCallsDay'],[db[_0x4ee6('0x1e')]['fn']('COUNT',db[_0x4ee6('0x1e')]['fn']('IF',db['sequelize'][_0x4ee6('0x21')](_0x4ee6('0x33')))),_0x4ee6('0x34')],[db[_0x4ee6('0x1e')]['fn'](_0x4ee6('0x1d'),db[_0x4ee6('0x1e')]['fn']('IF',db[_0x4ee6('0x1e')][_0x4ee6('0x21')](_0x4ee6('0x35')))),'outboundDropCallsDayCallersExit'],[db[_0x4ee6('0x1e')]['fn'](_0x4ee6('0x1d'),db[_0x4ee6('0x1e')]['fn']('IF',db[_0x4ee6('0x1e')][_0x4ee6('0x21')](_0x4ee6('0x36')))),_0x4ee6('0x37')],[db[_0x4ee6('0x1e')]['fn'](_0x4ee6('0x1d'),db[_0x4ee6('0x1e')]['fn']('IF',db[_0x4ee6('0x1e')]['literal'](_0x4ee6('0x38')))),_0x4ee6('0x39')],[db[_0x4ee6('0x1e')]['fn'](_0x4ee6('0x1d'),db[_0x4ee6('0x1e')]['fn']('IF',db[_0x4ee6('0x1e')][_0x4ee6('0x21')]('`state`\x20=\x2014,\x201,\x20null'))),'outboundOriginateFailureCallsDay'],[db['sequelize']['fn'](_0x4ee6('0x1d'),db[_0x4ee6('0x1e')]['fn']('IF',db[_0x4ee6('0x1e')][_0x4ee6('0x21')](_0x4ee6('0x3a')))),'outboundRejectCallsDay'],[db[_0x4ee6('0x1e')]['fn'](_0x4ee6('0x1d'),db[_0x4ee6('0x1e')]['fn']('IF',db[_0x4ee6('0x1e')][_0x4ee6('0x21')]('`state`\x20=\x2016,\x201,\x20null'))),_0x4ee6('0x3b')],[db[_0x4ee6('0x1e')]['fn'](_0x4ee6('0x1d'),db[_0x4ee6('0x1e')]['fn']('IF',db[_0x4ee6('0x1e')][_0x4ee6('0x21')](_0x4ee6('0x3c')))),_0x4ee6('0x3d')],[db[_0x4ee6('0x1e')]['fn'](_0x4ee6('0x1d'),db[_0x4ee6('0x1e')]['fn']('IF',db[_0x4ee6('0x1e')][_0x4ee6('0x21')](_0x4ee6('0x3e')))),_0x4ee6('0x3f')]],'group':[_0x4ee6('0x2b')]})[_0x4ee6('0x18')](function(_0x4c9627){logger[_0x4ee6('0xa')](_0x4ee6('0x40'),_0x1132d4);logger[_0x4ee6('0x1a')](_0x4ee6('0x40'),_0x1132d4,JSON['stringify'](_0x4c9627));_0x498dec(_0x4c9627);})[_0x4ee6('0x12')](function(_0x10bafc){logger[_0x4ee6('0xf')]('GetVoiceQueueHopperHistory',_0x10bafc[_0x4ee6('0x11')],_0x1132d4);_0x2b7527(_0x203723[_0x4ee6('0xf')](0x1f4,_0x10bafc[_0x4ee6('0x11')]));});});};exports[_0x4ee6('0x41')]=function(_0x13126a){var _0x25d21c=this;return new Promise(function(_0x177b33,_0x315f1c){return db['CmHopperHistory'][_0x4ee6('0x1c')]({'raw':_0x13126a[_0x4ee6('0x16')]?_0x13126a[_0x4ee6('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x13126a[_0x4ee6('0x16')]?_0x13126a[_0x4ee6('0x16')][_0x4ee6('0x2a')]||null:null,'attributes':[[_0x4ee6('0x2b'),_0x4ee6('0x2c')],[db[_0x4ee6('0x1e')]['fn'](_0x4ee6('0x1d'),db[_0x4ee6('0x1e')][_0x4ee6('0x1f')]('id')),_0x4ee6('0x42')],[db[_0x4ee6('0x1e')]['fn'](_0x4ee6('0x1d'),db[_0x4ee6('0x1e')]['fn']('IF',db[_0x4ee6('0x1e')][_0x4ee6('0x21')](_0x4ee6('0x22')))),_0x4ee6('0x43')]],'group':['campaign']})[_0x4ee6('0x18')](function(_0x4f2773){logger[_0x4ee6('0xa')](_0x4ee6('0x41'),_0x13126a);logger['debug'](_0x4ee6('0x41'),_0x13126a,JSON[_0x4ee6('0xe')](_0x4f2773));_0x177b33(_0x4f2773);})[_0x4ee6('0x12')](function(_0x5e121d){logger['error'](_0x4ee6('0x41'),_0x5e121d[_0x4ee6('0x11')],_0x13126a);_0x315f1c(_0x25d21c[_0x4ee6('0xf')](0x1f4,_0x5e121d[_0x4ee6('0x11')]));});});};
\ No newline at end of file
index 8c9e35c..fdffb2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11af=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','get','index','/describe','isAuthenticated','/:id','show','create','put','update','exports','multer'];(function(_0x5be906,_0x6726ef){var _0x11bfa4=function(_0x39821b){while(--_0x39821b){_0x5be906['push'](_0x5be906['shift']());}};_0x11bfa4(++_0x6726ef);}(_0x11af,0x68));var _0xf11a=function(_0xd3a47a,_0x573438){_0xd3a47a=_0xd3a47a-0x0;var _0x3d4cfd=_0x11af[_0xd3a47a];return _0x3d4cfd;};'use strict';var multer=require(_0xf11a('0x0'));var util=require(_0xf11a('0x1'));var path=require(_0xf11a('0x2'));var timeout=require(_0xf11a('0x3'));var express=require(_0xf11a('0x4'));var router=express[_0xf11a('0x5')]();var fs_extra=require(_0xf11a('0x6'));var auth=require(_0xf11a('0x7'));var interaction=require(_0xf11a('0x8'));var config=require(_0xf11a('0x9'));var controller=require(_0xf11a('0xa'));router[_0xf11a('0xb')]('/',auth['isAuthenticated'](),controller[_0xf11a('0xc')]);router[_0xf11a('0xb')](_0xf11a('0xd'),auth[_0xf11a('0xe')](),controller['describe']);router['get'](_0xf11a('0xf'),auth[_0xf11a('0xe')](),controller[_0xf11a('0x10')]);router['post']('/',auth['isAuthenticated'](),controller[_0xf11a('0x11')]);router[_0xf11a('0x12')](_0xf11a('0xf'),auth[_0xf11a('0xe')](),controller[_0xf11a('0x13')]);module[_0xf11a('0x14')]=router;
\ No newline at end of file
+var _0x5020=['put','/:id','update','exports','multer','util','Router','fs-extra','../../components/auth/service','get','/describe','isAuthenticated','describe','show'];(function(_0xf013a7,_0x2aa909){var _0x48ea27=function(_0xa453a0){while(--_0xa453a0){_0xf013a7['push'](_0xf013a7['shift']());}};_0x48ea27(++_0x2aa909);}(_0x5020,0x18c));var _0x0502=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x5020[_0xbca1b1];return _0x4e1686;};'use strict';var multer=require(_0x0502('0x0'));var util=require(_0x0502('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0502('0x2')]();var fs_extra=require(_0x0502('0x3'));var auth=require(_0x0502('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./cmHopperHistory.controller');router[_0x0502('0x5')]('/',auth['isAuthenticated'](),controller['index']);router[_0x0502('0x5')](_0x0502('0x6'),auth[_0x0502('0x7')](),controller[_0x0502('0x8')]);router[_0x0502('0x5')]('/:id',auth['isAuthenticated'](),controller[_0x0502('0x9')]);router['post']('/',auth[_0x0502('0x7')](),controller['create']);router[_0x0502('0xa')](_0x0502('0xb'),auth[_0x0502('0x7')](),controller[_0x0502('0xc')]);module[_0x0502('0xd')]=router;
\ No newline at end of file
index 4f8211a..79706e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55d2=['name','STRING'];(function(_0xc2db81,_0x37a097){var _0x4e8a5d=function(_0x584ee7){while(--_0x584ee7){_0xc2db81['push'](_0xc2db81['shift']());}};_0x4e8a5d(++_0x37a097);}(_0x55d2,0x9f));var _0x255d=function(_0x107f87,_0x2fc1b3){_0x107f87=_0x107f87-0x0;var _0x1a18fe=_0x55d2[_0x107f87];return _0x1a18fe;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x255d('0x0')],'unique':_0x255d('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x255d('0x0')]},'dialPrefix':{'type':Sequelize[_0x255d('0x0')]}};
\ No newline at end of file
+var _0x8ece=['name','sequelize','exports','STRING'];(function(_0x4a4fda,_0x170e26){var _0x5a2511=function(_0x47d6ea){while(--_0x47d6ea){_0x4a4fda['push'](_0x4a4fda['shift']());}};_0x5a2511(++_0x170e26);}(_0x8ece,0x195));var _0xe8ec=function(_0x126a77,_0x253795){_0x126a77=_0x126a77-0x0;var _0x4a73ea=_0x8ece[_0x126a77];return _0x4a73ea;};'use strict';var Sequelize=require(_0xe8ec('0x0'));module[_0xe8ec('0x1')]={'name':{'type':Sequelize[_0xe8ec('0x2')],'unique':_0xe8ec('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']},'dialPrefix':{'type':Sequelize['STRING']}};
\ No newline at end of file
index ff9cfa5..197fbc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f48=['request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./cmList.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','get','Lists','UserProfileResource','destroy','name','send','index','map','rawAttributes','type','key','model','filters','query','intersection','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','CmList','includeAll','findAll','catch','show','params','keys','attributes','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','ListId','Disposition','nolimit','include','rows','removeDispositions','ids','addContacts','tags','isArray','join','each','CmContact','omit','success','push','dataValues','errors','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','concat','format','cf_%d','getContactsCsv','raw','writeFileSync','/tmp/list_%d_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','list_%d_%s.csv','text/csv','download','sequelize','transaction','addCustomFields','text','Sequelize','TEXT','number','INTEGER','switch','BOOLEAN','queryInterface','cm_contacts','addAgents','spread','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','findOne','User','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x13373a,_0x28b7c8){var _0x4ccfc7=function(_0xc0243c){while(--_0xc0243c){_0x13373a['push'](_0x13373a['shift']());}};_0x4ccfc7(++_0x28b7c8);}(_0x4f48,0x124));var _0x84f4=function(_0x26b3e7,_0x53bcea){_0x26b3e7=_0x26b3e7-0x0;var _0x149ed8=_0x4f48[_0x26b3e7];return _0x149ed8;};'use strict';var emlformat=require(_0x84f4('0x0'));var rimraf=require(_0x84f4('0x1'));var zipdir=require(_0x84f4('0x2'));var jsonpatch=require(_0x84f4('0x3'));var rp=require(_0x84f4('0x4'));var moment=require(_0x84f4('0x5'));var BPromise=require(_0x84f4('0x6'));var Mustache=require(_0x84f4('0x7'));var util=require('util');var path=require('path');var sox=require(_0x84f4('0x8'));var csv=require('to-csv');var ejs=require(_0x84f4('0x9'));var fs=require('fs');var fs_extra=require(_0x84f4('0xa'));var _=require('lodash');var squel=require(_0x84f4('0xb'));var crypto=require(_0x84f4('0xc'));var jsforce=require(_0x84f4('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x84f4('0xe'));var Papa=require(_0x84f4('0xf'));var Redis=require('ioredis');var authService=require(_0x84f4('0x10'));var qs=require(_0x84f4('0x11'));var as=require(_0x84f4('0x12'));var hardwareService=require(_0x84f4('0x13'));var logger=require(_0x84f4('0x14'))(_0x84f4('0x15'));var utils=require(_0x84f4('0x16'));var config=require(_0x84f4('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x84f4('0x18'))['db'];config[_0x84f4('0x19')]=_[_0x84f4('0x1a')](config[_0x84f4('0x19')],{'host':_0x84f4('0x1b'),'port':0x18eb});var socket=require(_0x84f4('0x1c'))(new Redis(config[_0x84f4('0x19')]));require(_0x84f4('0x1d'))[_0x84f4('0x1e')](socket);function respondWithStatusCode(_0x59b046,_0x9a9444){_0x9a9444=_0x9a9444||0xcc;return function(_0x17e119){if(_0x17e119){return _0x59b046[_0x84f4('0x1f')](_0x9a9444);}return _0x59b046[_0x84f4('0x20')](_0x9a9444)[_0x84f4('0x21')]();};}function respondWithResult(_0x1a1e60,_0x5bf72f){_0x5bf72f=_0x5bf72f||0xc8;return function(_0x4c0af0){if(_0x4c0af0){return _0x1a1e60['status'](_0x5bf72f)[_0x84f4('0x22')](_0x4c0af0);}};}function respondWithFilteredResult(_0x17d43e,_0x5a9626){return function(_0x2d6247){if(_0x2d6247){var _0x21c4ed=typeof _0x5a9626[_0x84f4('0x23')]===_0x84f4('0x24')&&typeof _0x5a9626[_0x84f4('0x25')]===_0x84f4('0x24');var _0x4610ed=_0x2d6247[_0x84f4('0x26')];var _0x213fe7=_0x21c4ed?0x0:_0x5a9626[_0x84f4('0x23')];var _0x536dc5=_0x21c4ed?_0x2d6247['count']:_0x5a9626[_0x84f4('0x23')]+_0x5a9626[_0x84f4('0x25')];var _0x51f99b;if(_0x536dc5>=_0x4610ed){_0x536dc5=_0x4610ed;_0x51f99b=0xc8;}else{_0x51f99b=0xce;}_0x17d43e[_0x84f4('0x20')](_0x51f99b);return _0x17d43e['set'](_0x84f4('0x27'),_0x213fe7+'-'+_0x536dc5+'/'+_0x4610ed)[_0x84f4('0x22')](_0x2d6247);}return null;};}function patchUpdates(_0x188210){return function(_0x2c308e){try{jsonpatch[_0x84f4('0x28')](_0x2c308e,_0x188210,!![]);}catch(_0x1af3f3){return BPromise[_0x84f4('0x29')](_0x1af3f3);}return _0x2c308e[_0x84f4('0x2a')]();};}function saveUpdates(_0x3239a2,_0x16c1f2){return function(_0x7c5aeb){if(_0x7c5aeb){return _0x7c5aeb[_0x84f4('0x2b')](_0x3239a2)[_0x84f4('0x2c')](function(_0x44a570){return _0x44a570;});}return null;};}function removeEntity(_0x79a7a2,_0x451e62){return function(_0x483d29){if(_0x483d29){return _0x483d29['destroy']()[_0x84f4('0x2c')](function(){var _0x49572a=_0x483d29[_0x84f4('0x2d')]({'plain':!![]});var _0x5bf9f9=_0x84f4('0x2e');return db[_0x84f4('0x2f')][_0x84f4('0x30')]({'where':{'type':_0x5bf9f9,'resourceId':_0x49572a['id']}})[_0x84f4('0x2c')](function(){return _0x483d29;});})['then'](function(){_0x79a7a2[_0x84f4('0x20')](0xcc)[_0x84f4('0x21')]();});}};}function handleEntityNotFound(_0x2bda5f,_0xf423ae){return function(_0x7ca61f){if(!_0x7ca61f){_0x2bda5f[_0x84f4('0x1f')](0x194);}return _0x7ca61f;};}function handleError(_0x5d9854,_0x7ca72a){_0x7ca72a=_0x7ca72a||0x1f4;return function(_0x40577e){logger['error'](_0x40577e['stack']);if(_0x40577e[_0x84f4('0x31')]){delete _0x40577e[_0x84f4('0x31')];}_0x5d9854[_0x84f4('0x20')](_0x7ca72a)[_0x84f4('0x32')](_0x40577e);};}exports[_0x84f4('0x33')]=function(_0x3e2937,_0x79bf3c){var _0x3a4eca={},_0x398016={},_0x122c4f={'count':0x0,'rows':[]};var _0x4e6ea5=_[_0x84f4('0x34')](db['CmList'][_0x84f4('0x35')],function(_0xf83f09){return{'name':_0xf83f09['fieldName'],'type':_0xf83f09[_0x84f4('0x36')][_0x84f4('0x37')]};});_0x398016[_0x84f4('0x38')]=_[_0x84f4('0x34')](_0x4e6ea5,_0x84f4('0x31'));_0x398016['query']=_['keys'](_0x3e2937['query']);_0x398016[_0x84f4('0x39')]=_['intersection'](_0x398016[_0x84f4('0x38')],_0x398016[_0x84f4('0x3a')]);_0x3a4eca['attributes']=_[_0x84f4('0x3b')](_0x398016[_0x84f4('0x38')],qs[_0x84f4('0x3c')](_0x3e2937[_0x84f4('0x3a')]['fields']));_0x3a4eca['attributes']=_0x3a4eca['attributes'][_0x84f4('0x3d')]?_0x3a4eca['attributes']:_0x398016['model'];if(!_0x3e2937[_0x84f4('0x3a')][_0x84f4('0x3e')]('nolimit')){_0x3a4eca[_0x84f4('0x25')]=qs['limit'](_0x3e2937['query']['limit']);_0x3a4eca['offset']=qs[_0x84f4('0x23')](_0x3e2937[_0x84f4('0x3a')][_0x84f4('0x23')]);}_0x3a4eca[_0x84f4('0x3f')]=qs[_0x84f4('0x40')](_0x3e2937['query'][_0x84f4('0x40')]);_0x3a4eca[_0x84f4('0x41')]=qs[_0x84f4('0x39')](_[_0x84f4('0x42')](_0x3e2937[_0x84f4('0x3a')],_0x398016['filters']),_0x4e6ea5);if(_0x3e2937['query'][_0x84f4('0x43')]){_0x3a4eca[_0x84f4('0x41')]=_['merge'](_0x3a4eca[_0x84f4('0x41')],{'$or':_[_0x84f4('0x34')](_0x4e6ea5,function(_0x1c27bf){if(_0x1c27bf['type']!==_0x84f4('0x44')){var _0x55fd46={};_0x55fd46[_0x1c27bf[_0x84f4('0x31')]]={'$like':'%'+_0x3e2937[_0x84f4('0x3a')][_0x84f4('0x43')]+'%'};return _0x55fd46;}})});}_0x3a4eca=_[_0x84f4('0x45')]({},_0x3a4eca,_0x3e2937[_0x84f4('0x46')]);var _0xb11f23={'where':_0x3a4eca['where']};return db[_0x84f4('0x47')][_0x84f4('0x26')](_0xb11f23)['then'](function(_0xead98d){_0x122c4f[_0x84f4('0x26')]=_0xead98d;if(_0x3e2937[_0x84f4('0x3a')][_0x84f4('0x48')]){_0x3a4eca['include']=[{'all':!![]}];}return db['CmList'][_0x84f4('0x49')](_0x3a4eca);})['then'](function(_0x571ca3){_0x122c4f['rows']=_0x571ca3;return _0x122c4f;})[_0x84f4('0x2c')](respondWithFilteredResult(_0x79bf3c,_0x3a4eca))[_0x84f4('0x4a')](handleError(_0x79bf3c,null));};exports[_0x84f4('0x4b')]=function(_0xd6678a,_0x537f9a){var _0x1259c4={'raw':![],'where':{'id':_0xd6678a[_0x84f4('0x4c')]['id']}},_0x4916da={};_0x4916da[_0x84f4('0x38')]=_[_0x84f4('0x4d')](db[_0x84f4('0x47')]['rawAttributes']);_0x4916da[_0x84f4('0x3a')]=_['keys'](_0xd6678a[_0x84f4('0x3a')]);_0x4916da[_0x84f4('0x39')]=_['intersection'](_0x4916da[_0x84f4('0x38')],_0x4916da['query']);_0x1259c4[_0x84f4('0x4e')]=_[_0x84f4('0x3b')](_0x4916da[_0x84f4('0x38')],qs[_0x84f4('0x3c')](_0xd6678a[_0x84f4('0x3a')][_0x84f4('0x3c')]));_0x1259c4[_0x84f4('0x4e')]=_0x1259c4[_0x84f4('0x4e')][_0x84f4('0x3d')]?_0x1259c4[_0x84f4('0x4e')]:_0x4916da[_0x84f4('0x38')];if(_0xd6678a[_0x84f4('0x3a')]['includeAll']){_0x1259c4['include']=[{'all':!![]}];}_0x1259c4=_[_0x84f4('0x45')]({},_0x1259c4,_0xd6678a['options']);return db[_0x84f4('0x47')][_0x84f4('0x4f')](_0x1259c4)[_0x84f4('0x2c')](handleEntityNotFound(_0x537f9a,null))[_0x84f4('0x2c')](respondWithResult(_0x537f9a,null))[_0x84f4('0x4a')](handleError(_0x537f9a,null));};exports[_0x84f4('0x50')]=function(_0x427cae,_0x52a2cf){return db[_0x84f4('0x47')][_0x84f4('0x50')](_0x427cae['body'],{})[_0x84f4('0x2c')](function(_0x16e1b7){var _0x560188=_0x427cae[_0x84f4('0x51')][_0x84f4('0x2d')]({'plain':!![]});if(!_0x560188)throw new Error(_0x84f4('0x52'));if(_0x560188[_0x84f4('0x53')]===_0x84f4('0x51')){var _0x425da7=_0x16e1b7[_0x84f4('0x2d')]({'plain':!![]});var _0x362e1b='Lists';return db[_0x84f4('0x54')][_0x84f4('0x4f')]({'where':{'name':_0x362e1b,'userProfileId':_0x560188[_0x84f4('0x55')]},'raw':!![]})[_0x84f4('0x2c')](function(_0x19f400){if(_0x19f400&&_0x19f400[_0x84f4('0x56')]===0x0){return db[_0x84f4('0x2f')][_0x84f4('0x50')]({'name':_0x425da7[_0x84f4('0x31')],'resourceId':_0x425da7['id'],'type':_0x19f400[_0x84f4('0x31')],'sectionId':_0x19f400['id']},{})[_0x84f4('0x2c')](function(){return _0x16e1b7;});}else{return _0x16e1b7;}})[_0x84f4('0x4a')](function(_0x859c50){logger[_0x84f4('0x57')](_0x84f4('0x58'),_0x859c50);throw _0x859c50;});}return _0x16e1b7;})[_0x84f4('0x2c')](respondWithResult(_0x52a2cf,0xc9))[_0x84f4('0x4a')](handleError(_0x52a2cf,null));};exports[_0x84f4('0x2b')]=function(_0x5f02e0,_0x5aa5fb){if(_0x5f02e0['body']['id']){delete _0x5f02e0[_0x84f4('0x59')]['id'];}return db['CmList'][_0x84f4('0x4f')]({'where':{'id':_0x5f02e0[_0x84f4('0x4c')]['id']}})[_0x84f4('0x2c')](handleEntityNotFound(_0x5aa5fb,null))[_0x84f4('0x2c')](saveUpdates(_0x5f02e0[_0x84f4('0x59')],null))[_0x84f4('0x2c')](respondWithResult(_0x5aa5fb,null))[_0x84f4('0x4a')](handleError(_0x5aa5fb,null));};exports['destroy']=function(_0x13a6d2,_0x280de3){return db[_0x84f4('0x47')][_0x84f4('0x4f')]({'where':{'id':_0x13a6d2['params']['id']}})[_0x84f4('0x2c')](handleEntityNotFound(_0x280de3,null))[_0x84f4('0x2c')](removeEntity(_0x280de3,null))['catch'](handleError(_0x280de3,null));};exports[_0x84f4('0x5a')]=function(_0x2fac91,_0x52745b){return db[_0x84f4('0x47')]['describe']()[_0x84f4('0x2c')](respondWithResult(_0x52745b,null))['catch'](handleError(_0x52745b,null));};exports[_0x84f4('0x5b')]=function(_0x21a2c2,_0x42e1ad,_0x4ba29e){if(_0x21a2c2[_0x84f4('0x59')]['id']){delete _0x21a2c2['body']['id'];}return db[_0x84f4('0x47')][_0x84f4('0x4f')]({'where':{'id':_0x21a2c2[_0x84f4('0x4c')]['id']}})[_0x84f4('0x2c')](handleEntityNotFound(_0x42e1ad,null))[_0x84f4('0x2c')](function(_0x13929d){if(_0x13929d){_0x21a2c2[_0x84f4('0x59')][_0x84f4('0x5c')]=_0x13929d['id'];return db[_0x84f4('0x5d')]['create'](_0x21a2c2['body']);}})[_0x84f4('0x2c')](respondWithResult(_0x42e1ad,null))[_0x84f4('0x4a')](handleError(_0x42e1ad,null));};exports['getDispositions']=function(_0x133f78,_0x506ae1,_0x11e2da){var _0xe04308={'raw':![],'where':{}};var _0x9d2ede={};var _0x201fc2={'count':0x0,'rows':[]};return db['CmList']['findOne']({'where':{'id':_0x133f78['params']['id']}})[_0x84f4('0x2c')](handleEntityNotFound(_0x506ae1,null))[_0x84f4('0x2c')](function(_0x4d109f){if(_0x4d109f){_0x9d2ede['model']=_['keys'](db[_0x84f4('0x5d')][_0x84f4('0x35')]);_0x9d2ede['query']=_[_0x84f4('0x4d')](_0x133f78[_0x84f4('0x3a')]);_0x9d2ede[_0x84f4('0x39')]=_[_0x84f4('0x3b')](_0x9d2ede['model'],_0x9d2ede[_0x84f4('0x3a')]);_0xe04308['attributes']=_[_0x84f4('0x3b')](_0x9d2ede[_0x84f4('0x38')],qs[_0x84f4('0x3c')](_0x133f78['query'][_0x84f4('0x3c')]));_0xe04308[_0x84f4('0x4e')]=_0xe04308[_0x84f4('0x4e')][_0x84f4('0x3d')]?_0xe04308[_0x84f4('0x4e')]:_0x9d2ede[_0x84f4('0x38')];if(!_0x133f78['query'][_0x84f4('0x3e')](_0x84f4('0x5e'))){_0xe04308[_0x84f4('0x25')]=qs[_0x84f4('0x25')](_0x133f78[_0x84f4('0x3a')][_0x84f4('0x25')]);_0xe04308[_0x84f4('0x23')]=qs[_0x84f4('0x23')](_0x133f78[_0x84f4('0x3a')][_0x84f4('0x23')]);}_0xe04308['order']=qs[_0x84f4('0x40')](_0x133f78[_0x84f4('0x3a')][_0x84f4('0x40')]);_0xe04308[_0x84f4('0x41')]=qs[_0x84f4('0x39')](_['pick'](_0x133f78[_0x84f4('0x3a')],_0x9d2ede[_0x84f4('0x39')]));_0xe04308['where']['ListId']=_0x4d109f['id'];if(_0x133f78['query'][_0x84f4('0x43')]){_0xe04308[_0x84f4('0x41')]=_['merge'](_0xe04308[_0x84f4('0x41')],{'$or':_[_0x84f4('0x34')](_0xe04308[_0x84f4('0x4e')],function(_0x2327eb){var _0x5f2630={};_0x5f2630[_0x2327eb]={'$like':'%'+_0x133f78[_0x84f4('0x3a')][_0x84f4('0x43')]+'%'};return _0x5f2630;})});}_0xe04308=_[_0x84f4('0x45')]({},_0xe04308,_0x133f78[_0x84f4('0x46')]);return db[_0x84f4('0x5d')][_0x84f4('0x26')]({'where':_0xe04308[_0x84f4('0x41')]})['then'](function(_0x687f65){_0x201fc2[_0x84f4('0x26')]=_0x687f65;if(_0x133f78[_0x84f4('0x3a')][_0x84f4('0x48')]){_0xe04308[_0x84f4('0x5f')]=[{'all':!![]}];}return db[_0x84f4('0x5d')][_0x84f4('0x49')](_0xe04308);})[_0x84f4('0x2c')](function(_0x2ce783){_0x201fc2[_0x84f4('0x60')]=_0x2ce783;return _0x201fc2;});}})[_0x84f4('0x2c')](respondWithFilteredResult(_0x506ae1,_0xe04308))['catch'](handleError(_0x506ae1,null));};exports['removeDispositions']=function(_0x2c9d38,_0x58ea1e,_0x570bb6){return db[_0x84f4('0x47')][_0x84f4('0x4f')]({'where':{'id':_0x2c9d38[_0x84f4('0x4c')]['id']}})[_0x84f4('0x2c')](handleEntityNotFound(_0x58ea1e,null))[_0x84f4('0x2c')](function(_0x3c94fc){if(_0x3c94fc){return _0x3c94fc[_0x84f4('0x61')](_0x2c9d38['query'][_0x84f4('0x62')]);}})[_0x84f4('0x2c')](respondWithStatusCode(_0x58ea1e,null))[_0x84f4('0x4a')](handleError(_0x58ea1e,null));};exports[_0x84f4('0x63')]=function(_0x59786a,_0x46e2de,_0x19161c){return db[_0x84f4('0x47')][_0x84f4('0x4f')]({'where':{'id':_0x59786a[_0x84f4('0x4c')]['id']}})[_0x84f4('0x2c')](handleEntityNotFound(_0x46e2de,null))['then'](function(_0x1b7b8a){if(_0x1b7b8a){var _0x2a865d=[];var _0x4bbfe3={'success':[],'errors':[]};return db['CmContact']['describe']()['then'](function(_0x5f6488){if(_0x59786a[_0x84f4('0x59')][_0x84f4('0x64')]&&_[_0x84f4('0x65')](_0x59786a[_0x84f4('0x59')]['tags'])){if(_0x59786a[_0x84f4('0x59')][_0x84f4('0x64')]['length']){_0x59786a[_0x84f4('0x59')][_0x84f4('0x64')]=_0x59786a['body'][_0x84f4('0x64')][_0x84f4('0x66')](';')+';';}else{_0x59786a['body'][_0x84f4('0x64')]=null;}}else{_0x59786a[_0x84f4('0x59')][_0x84f4('0x64')]=null;}if(_0x59786a[_0x84f4('0x59')]&&_[_0x84f4('0x65')](_0x59786a[_0x84f4('0x59')])){for(var _0x4cab81=0x0;_0x4cab81<_0x59786a['body']['length'];_0x4cab81+=0x1){_0x59786a[_0x84f4('0x59')][_0x4cab81][_0x84f4('0x5c')]=_0x59786a['params']['id'];_0x2a865d['push'](_0x59786a[_0x84f4('0x59')][_0x4cab81]);}return BPromise[_0x84f4('0x67')](_0x2a865d,function(_0x2dac69){return db[_0x84f4('0x68')][_0x84f4('0x50')](_[_0x84f4('0x69')](_0x2dac69,['ids','id'])||{},{'fields':_['keys'](_0x5f6488),'raw':!![]})['then'](function(_0x52d313){_0x4bbfe3[_0x84f4('0x6a')][_0x84f4('0x6b')](_0x52d313[_0x84f4('0x6c')]);})[_0x84f4('0x4a')](function(_0x22d1f0){_0x4bbfe3[_0x84f4('0x6d')][_0x84f4('0x6b')]({'data':_0x2dac69,'error':_0x22d1f0['message']});});})[_0x84f4('0x2c')](function(_0x5e9f73){return _0x4bbfe3;})[_0x84f4('0x4a')](function(_0x2aa3b2){return _0x2aa3b2;});}else{_0x46e2de[_0x84f4('0x20')](0x190)[_0x84f4('0x22')]({'message':_0x84f4('0x6e')});}});}})['then'](respondWithResult(_0x46e2de,null))['catch'](handleError(_0x46e2de,null));};exports[_0x84f4('0x6f')]=function(_0x474d4e,_0x1084e5,_0xfc89c){var _0x56172b;return db[_0x84f4('0x47')][_0x84f4('0x4f')]({'where':{'id':_0x474d4e[_0x84f4('0x4c')]['id']},'include':[{'model':db[_0x84f4('0x70')],'as':_0x84f4('0x71')}]})['then'](handleEntityNotFound(_0x1084e5,null))[_0x84f4('0x2c')](function(_0xf402e4){if(_0xf402e4){_0x56172b=_0xf402e4;return db[_0x84f4('0x68')]['rawAttributes'];}})[_0x84f4('0x2c')](function(_0x144214){if(_0x144214){var _0x4caa9e={};var _0x50912a={};_0x50912a[_0x84f4('0x38')]=_[_0x84f4('0x72')](_[_0x84f4('0x4d')](_0x144214),_[_0x84f4('0x34')](_0x56172b[_0x84f4('0x71')],function(_0x2428b){return util[_0x84f4('0x73')](_0x84f4('0x74'),_0x2428b['id']);}));_0x50912a['query']=_[_0x84f4('0x4d')](_0x474d4e['query']);_0x50912a[_0x84f4('0x39')]=_[_0x84f4('0x3b')](_0x50912a[_0x84f4('0x38')],_0x50912a[_0x84f4('0x3a')]);_0x4caa9e[_0x84f4('0x4e')]=_[_0x84f4('0x3b')](_0x50912a['model'],qs[_0x84f4('0x3c')](_0x474d4e[_0x84f4('0x3a')][_0x84f4('0x3c')]));_0x4caa9e[_0x84f4('0x4e')]=_0x4caa9e['attributes'][_0x84f4('0x3d')]?_0x4caa9e[_0x84f4('0x4e')]:_0x50912a[_0x84f4('0x38')];if(!_0x474d4e[_0x84f4('0x3a')][_0x84f4('0x3e')]('nolimit')){_0x4caa9e['limit']=qs['limit'](_0x474d4e[_0x84f4('0x3a')][_0x84f4('0x25')]);_0x4caa9e['offset']=qs[_0x84f4('0x23')](_0x474d4e[_0x84f4('0x3a')][_0x84f4('0x23')]);}_0x4caa9e[_0x84f4('0x3f')]=qs['sort'](_0x474d4e[_0x84f4('0x3a')]['sort']);_0x4caa9e[_0x84f4('0x41')]=qs[_0x84f4('0x39')](_[_0x84f4('0x42')](_0x474d4e[_0x84f4('0x3a')],_0x50912a['filters']));_0x4caa9e['raw']=!![];if(_0x474d4e[_0x84f4('0x3a')][_0x84f4('0x43')]){_0x4caa9e[_0x84f4('0x41')]=_[_0x84f4('0x45')](_0x4caa9e[_0x84f4('0x41')],{'$or':_[_0x84f4('0x34')](_0x4caa9e['attributes'],function(_0x41692e){var _0x47bd37={};_0x47bd37[_0x41692e]={'$like':'%'+_0x474d4e[_0x84f4('0x3a')]['filter']+'%'};return _0x47bd37;})});}_0x4caa9e=_[_0x84f4('0x45')]({},_0x4caa9e,_0x474d4e[_0x84f4('0x46')]);return _0x56172b['getContacts'](_0x4caa9e);}})[_0x84f4('0x2c')](respondWithResult(_0x1084e5,null))[_0x84f4('0x4a')](handleError(_0x1084e5,null));};exports[_0x84f4('0x75')]=function(_0x1cd273,_0x23a4d8,_0x4ef29a){var _0x1be101;return db['CmList'][_0x84f4('0x4f')]({'where':{'id':_0x1cd273[_0x84f4('0x4c')]['id']},'include':[{'model':db[_0x84f4('0x70')],'as':_0x84f4('0x71')}]})[_0x84f4('0x2c')](handleEntityNotFound(_0x23a4d8,null))['then'](function(_0x4dd2a4){if(_0x4dd2a4){_0x1be101=_0x4dd2a4;return db[_0x84f4('0x68')][_0x84f4('0x35')];}})[_0x84f4('0x2c')](function(_0x388c9c){if(_0x388c9c){var _0x66f27a={};var _0x46133a={};_0x46133a[_0x84f4('0x38')]=_[_0x84f4('0x72')](_['keys'](_0x388c9c),_[_0x84f4('0x34')](_0x1be101[_0x84f4('0x71')],function(_0x21b385){return util[_0x84f4('0x73')](_0x84f4('0x74'),_0x21b385['id']);}));_0x46133a['query']=_[_0x84f4('0x4d')](_0x1cd273[_0x84f4('0x3a')]);_0x46133a['filters']=_[_0x84f4('0x3b')](_0x46133a[_0x84f4('0x38')],_0x46133a[_0x84f4('0x3a')]);_0x66f27a[_0x84f4('0x4e')]=_[_0x84f4('0x3b')](_0x46133a[_0x84f4('0x38')],qs[_0x84f4('0x3c')](_0x1cd273[_0x84f4('0x3a')]['fields']));_0x66f27a[_0x84f4('0x4e')]=_0x66f27a[_0x84f4('0x4e')]['length']?_0x66f27a[_0x84f4('0x4e')]:_0x46133a[_0x84f4('0x38')];if(!_0x1cd273[_0x84f4('0x3a')][_0x84f4('0x3e')](_0x84f4('0x5e'))){_0x66f27a[_0x84f4('0x25')]=qs[_0x84f4('0x25')](_0x1cd273[_0x84f4('0x3a')][_0x84f4('0x25')]);_0x66f27a[_0x84f4('0x23')]=qs[_0x84f4('0x23')](_0x1cd273[_0x84f4('0x3a')][_0x84f4('0x23')]);}_0x66f27a['order']=qs['sort'](_0x1cd273['query'][_0x84f4('0x40')]);_0x66f27a['where']=qs['filters'](_[_0x84f4('0x42')](_0x1cd273[_0x84f4('0x3a')],_0x46133a['filters']));_0x66f27a[_0x84f4('0x76')]=!![];if(_0x1cd273[_0x84f4('0x3a')][_0x84f4('0x43')]){_0x66f27a[_0x84f4('0x41')]=_['merge'](_0x66f27a[_0x84f4('0x41')],{'$or':_[_0x84f4('0x34')](_0x66f27a[_0x84f4('0x4e')],function(_0x576b85){var _0xb68857={};_0xb68857[_0x576b85]={'$like':'%'+_0x1cd273[_0x84f4('0x3a')][_0x84f4('0x43')]+'%'};return _0xb68857;})});}_0x66f27a=_[_0x84f4('0x45')]({},_0x66f27a,_0x1cd273[_0x84f4('0x46')]);return _0x1be101[_0x84f4('0x6f')](_0x66f27a);}})[_0x84f4('0x2c')](function(_0x9efdba){if(!_['isEmpty'](_0x9efdba)){var _0x15faa4=toCsv(_0x9efdba);var _0x15a989=Date['now']();fs[_0x84f4('0x77')](util[_0x84f4('0x73')](_0x84f4('0x78'),_0x1be101['id'],_0x15a989),_0x15faa4);_0x23a4d8[_0x84f4('0x79')](_0x84f4('0x7a'),_0x84f4('0x7b')+util[_0x84f4('0x73')](_0x84f4('0x7c'),_0x1be101['id'],_0x15a989));_0x23a4d8[_0x84f4('0x79')]('Content-type',_0x84f4('0x7d'));return _0x23a4d8[_0x84f4('0x7e')](util[_0x84f4('0x73')](_0x84f4('0x78'),_0x1be101['id'],_0x15a989));}else{return _0x23a4d8['sendStatus'](0xcc);}})['catch'](handleError(_0x23a4d8,null));};exports['addCustomField']=function(_0x5a333d,_0x25642b,_0x5c1de7){var _0x1d2084;delete _0x5a333d[_0x84f4('0x59')]['id'];return db[_0x84f4('0x47')]['findOne']({'where':{'id':_0x5a333d[_0x84f4('0x4c')]['id']}})[_0x84f4('0x2c')](handleEntityNotFound(_0x25642b,null))[_0x84f4('0x2c')](function(_0x42de39){if(_0x42de39){return db[_0x84f4('0x7f')][_0x84f4('0x80')](function(_0x5044b4){return db['CmCustomField'][_0x84f4('0x50')](_0x5a333d[_0x84f4('0x59')],{'transaction':_0x5044b4})[_0x84f4('0x2c')](function(_0x268feb){_0x1d2084=_0x268feb;return _0x42de39[_0x84f4('0x81')](_0x268feb,{'transaction':_0x5044b4});})[_0x84f4('0x2c')](function(){var _0x632e17={'type':db['Sequelize']['TEXT'],'transaction':_0x5044b4};switch(_0x5a333d[_0x84f4('0x59')][_0x84f4('0x36')]){case _0x84f4('0x82'):_0x632e17[_0x84f4('0x36')]=db[_0x84f4('0x83')][_0x84f4('0x84')];break;case _0x84f4('0x85'):_0x632e17['type']=db['Sequelize'][_0x84f4('0x86')];break;case _0x84f4('0x87'):_0x632e17[_0x84f4('0x36')]=db[_0x84f4('0x83')][_0x84f4('0x88')];_0x632e17['defaultValue']=![];break;default:}return db[_0x84f4('0x7f')][_0x84f4('0x89')]['addColumn'](_0x84f4('0x8a'),util[_0x84f4('0x73')]('cf_%s',_0x1d2084['id']),_0x632e17);})[_0x84f4('0x2c')](function(){return _0x1d2084;});});}})[_0x84f4('0x2c')](respondWithResult(_0x25642b,null))[_0x84f4('0x4a')](handleError(_0x25642b,null));};exports['getCustomFields']=function(_0x4ab6ae,_0x24a204,_0x38add8){var _0x4a6315={};var _0xe8abaa={};var _0x28f5ac;var _0x46e1fd;return db[_0x84f4('0x47')]['findOne']({'where':{'id':_0x4ab6ae[_0x84f4('0x4c')]['id']}})[_0x84f4('0x2c')](handleEntityNotFound(_0x24a204,null))['then'](function(_0xcdae75){if(_0xcdae75){_0x28f5ac=_0xcdae75;_0xe8abaa[_0x84f4('0x38')]=_[_0x84f4('0x4d')](db['CmCustomField'][_0x84f4('0x35')]);_0xe8abaa['query']=_[_0x84f4('0x4d')](_0x4ab6ae[_0x84f4('0x3a')]);_0xe8abaa[_0x84f4('0x39')]=_[_0x84f4('0x3b')](_0xe8abaa[_0x84f4('0x38')],_0xe8abaa[_0x84f4('0x3a')]);_0x4a6315['attributes']=_[_0x84f4('0x3b')](_0xe8abaa['model'],qs[_0x84f4('0x3c')](_0x4ab6ae['query'][_0x84f4('0x3c')]));_0x4a6315[_0x84f4('0x4e')]=_0x4a6315[_0x84f4('0x4e')][_0x84f4('0x3d')]?_0x4a6315[_0x84f4('0x4e')]:_0xe8abaa[_0x84f4('0x38')];_0x4a6315['order']=qs[_0x84f4('0x40')](_0x4ab6ae[_0x84f4('0x3a')][_0x84f4('0x40')]);_0x4a6315[_0x84f4('0x41')]=qs['filters'](_[_0x84f4('0x42')](_0x4ab6ae['query'],_0xe8abaa['filters']));_0x4a6315[_0x84f4('0x41')]=_[_0x84f4('0x45')](_0x4a6315[_0x84f4('0x41')],{'$or':[{'ListId':_0xcdae75['id']},{'ListId':null}]});if(_0x4ab6ae[_0x84f4('0x3a')][_0x84f4('0x43')]){_0x4a6315[_0x84f4('0x41')]=_[_0x84f4('0x45')](_0x4a6315[_0x84f4('0x41')],{'$or':_[_0x84f4('0x34')](_0x4a6315[_0x84f4('0x4e')],function(_0x166ea0){var _0x41eac3={};_0x41eac3[_0x166ea0]={'$like':'%'+_0x4ab6ae['query'][_0x84f4('0x43')]+'%'};return _0x41eac3;})});}_0x4a6315=_['merge']({},_0x4a6315,_0x4ab6ae[_0x84f4('0x46')]);return db[_0x84f4('0x70')]['findAndCountAll'](_0x4a6315);}})[_0x84f4('0x2c')](respondWithResult(_0x24a204,null))['catch'](handleError(_0x24a204,null));};exports[_0x84f4('0x8b')]=function(_0x5be56a,_0x1ef228,_0x5ae2f1){return db['CmList']['find']({'where':{'id':_0x5be56a[_0x84f4('0x4c')]['id']}})[_0x84f4('0x2c')](handleEntityNotFound(_0x1ef228,null))['then'](function(_0x20353e){if(_0x20353e){return _0x20353e[_0x84f4('0x8b')](_0x5be56a[_0x84f4('0x59')][_0x84f4('0x62')],_[_0x84f4('0x69')](_0x5be56a[_0x84f4('0x59')],[_0x84f4('0x62'),'id'])||{})[_0x84f4('0x8c')](function(_0x5ed49b){for(var _0x4ba883=0x0;_0x4ba883<_0x5be56a[_0x84f4('0x59')][_0x84f4('0x62')][_0x84f4('0x3d')];_0x4ba883+=0x1){socket[_0x84f4('0x8d')](_0x84f4('0x8e'),{'UserId':Number(_0x5be56a[_0x84f4('0x59')][_0x84f4('0x62')][_0x4ba883]),'CmListId':Number(_0x5be56a[_0x84f4('0x4c')]['id'])});}return _0x5ed49b;});}})[_0x84f4('0x2c')](respondWithResult(_0x1ef228,null))[_0x84f4('0x4a')](handleError(_0x1ef228,null));};exports[_0x84f4('0x8f')]=function(_0x1cbebb,_0x51e25f,_0x548332){return db[_0x84f4('0x47')][_0x84f4('0x4f')]({'where':{'id':_0x1cbebb['params']['id']}})[_0x84f4('0x2c')](handleEntityNotFound(_0x51e25f,null))[_0x84f4('0x2c')](function(_0x34d291){if(_0x34d291){return _0x34d291['removeAgents'](_0x1cbebb['query'][_0x84f4('0x62')])[_0x84f4('0x2c')](function(){if(_['isArray'](_0x1cbebb['query'][_0x84f4('0x62')])){for(var _0x47b8ab=0x0;_0x47b8ab<_0x1cbebb[_0x84f4('0x3a')]['ids'][_0x84f4('0x3d')];_0x47b8ab+=0x1){socket['emit']('userCmList:remove',{'UserId':Number(_0x1cbebb[_0x84f4('0x3a')][_0x84f4('0x62')][_0x47b8ab]),'CmListId':Number(_0x1cbebb[_0x84f4('0x4c')]['id'])});}}else{socket[_0x84f4('0x8d')](_0x84f4('0x90'),{'UserId':Number(_0x1cbebb['query'][_0x84f4('0x62')]),'CmListId':Number(_0x1cbebb['params']['id'])});}});}})[_0x84f4('0x2c')](respondWithStatusCode(_0x51e25f,null))[_0x84f4('0x4a')](handleError(_0x51e25f,null));};exports[_0x84f4('0x91')]=function(_0x2754ca,_0x52a5cf,_0x32a0ba){var _0x24e3c0={};var _0x5ba190={};var _0x3b0e75;var _0x1170bd;return db[_0x84f4('0x47')][_0x84f4('0x92')]({'where':{'id':_0x2754ca['params']['id']}})[_0x84f4('0x2c')](handleEntityNotFound(_0x52a5cf,null))[_0x84f4('0x2c')](function(_0xaf43c0){if(_0xaf43c0){_0x3b0e75=_0xaf43c0;_0x5ba190[_0x84f4('0x38')]=_[_0x84f4('0x4d')](db[_0x84f4('0x93')][_0x84f4('0x35')]);_0x5ba190['query']=_[_0x84f4('0x4d')](_0x2754ca['query']);_0x5ba190[_0x84f4('0x39')]=_[_0x84f4('0x3b')](_0x5ba190[_0x84f4('0x38')],_0x5ba190[_0x84f4('0x3a')]);_0x24e3c0[_0x84f4('0x4e')]=_['intersection'](_0x5ba190[_0x84f4('0x38')],qs[_0x84f4('0x3c')](_0x2754ca[_0x84f4('0x3a')][_0x84f4('0x3c')]));_0x24e3c0[_0x84f4('0x4e')]=_0x24e3c0[_0x84f4('0x4e')][_0x84f4('0x3d')]?_0x24e3c0[_0x84f4('0x4e')]:_0x5ba190[_0x84f4('0x38')];_0x24e3c0[_0x84f4('0x3f')]=qs['sort'](_0x2754ca[_0x84f4('0x3a')][_0x84f4('0x40')]);_0x24e3c0[_0x84f4('0x41')]=qs[_0x84f4('0x39')](_[_0x84f4('0x42')](_0x2754ca[_0x84f4('0x3a')],_0x5ba190[_0x84f4('0x39')]));if(_0x2754ca[_0x84f4('0x3a')][_0x84f4('0x43')]){_0x24e3c0[_0x84f4('0x41')]=_[_0x84f4('0x45')](_0x24e3c0[_0x84f4('0x41')],{'$or':_[_0x84f4('0x34')](_0x24e3c0[_0x84f4('0x4e')],function(_0x3bf1e7){var _0x5542b9={};_0x5542b9[_0x3bf1e7]={'$like':'%'+_0x2754ca[_0x84f4('0x3a')][_0x84f4('0x43')]+'%'};return _0x5542b9;})});}_0x24e3c0=_['merge']({},_0x24e3c0,_0x2754ca['options']);return _0x3b0e75[_0x84f4('0x91')](_0x24e3c0);}})[_0x84f4('0x2c')](function(_0x241d14){if(_0x241d14){_0x1170bd=_0x241d14[_0x84f4('0x3d')];if(!_0x2754ca['query'][_0x84f4('0x3e')](_0x84f4('0x5e'))){_0x24e3c0[_0x84f4('0x25')]=qs[_0x84f4('0x25')](_0x2754ca[_0x84f4('0x3a')][_0x84f4('0x25')]);_0x24e3c0['offset']=qs[_0x84f4('0x23')](_0x2754ca['query'][_0x84f4('0x23')]);}return _0x3b0e75[_0x84f4('0x91')](_0x24e3c0);}})[_0x84f4('0x2c')](function(_0x18695b){if(_0x18695b){return _0x18695b?{'count':_0x1170bd,'rows':_0x18695b}:null;}})[_0x84f4('0x2c')](respondWithResult(_0x52a5cf,null))[_0x84f4('0x4a')](handleError(_0x52a5cf,null));};
\ No newline at end of file
+var _0xa079=['pick','removeDispositions','tags','isArray','push','each','CmContact','omit','ids','success','dataValues','errors','message','Malformed\x20request\x20syntax','CmCustomField','CustomFields','concat','format','raw','getContacts','getContactsCsv','cf_%d','isEmpty','now','writeFileSync','/tmp/list_%d_%s.csv','Content-disposition','attachment;\x20filename=','list_%d_%s.csv','setHeader','text/csv','addCustomField','sequelize','addCustomFields','Sequelize','text','TEXT','number','INTEGER','switch','BOOLEAN','queryInterface','cm_contacts','cf_%s','addAgents','userCmList:save','removeAgents','emit','userCmList:remove','getAgents','User','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','then','UserProfileResource','error','name','map','rawAttributes','type','key','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','CmList','findAll','rows','params','keys','includeAll','include','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','Lists','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','ListId','getDispositions','findOne','Disposition','length'];(function(_0x53af32,_0x26b017){var _0xc370b8=function(_0x5e6080){while(--_0x5e6080){_0x53af32['push'](_0x53af32['shift']());}};_0xc370b8(++_0x26b017);}(_0xa079,0x1d4));var _0x9a07=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa079[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x9a07('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9a07('0x1'));var jsonpatch=require(_0x9a07('0x2'));var rp=require(_0x9a07('0x3'));var moment=require(_0x9a07('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9a07('0x5'));var util=require(_0x9a07('0x6'));var path=require(_0x9a07('0x7'));var sox=require('sox');var csv=require(_0x9a07('0x8'));var ejs=require(_0x9a07('0x9'));var fs=require('fs');var fs_extra=require(_0x9a07('0xa'));var _=require(_0x9a07('0xb'));var squel=require('squel');var crypto=require(_0x9a07('0xc'));var jsforce=require(_0x9a07('0xd'));var deskjs=require(_0x9a07('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x9a07('0xf'));var qs=require(_0x9a07('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x9a07('0x11'))('api');var utils=require(_0x9a07('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x9a07('0x13'));var db=require(_0x9a07('0x14'))['db'];config[_0x9a07('0x15')]=_['defaults'](config[_0x9a07('0x15')],{'host':_0x9a07('0x16'),'port':0x18eb});var socket=require(_0x9a07('0x17'))(new Redis(config[_0x9a07('0x15')]));require('./cmList.socket')['register'](socket);function respondWithStatusCode(_0x2d9799,_0x5eadda){_0x5eadda=_0x5eadda||0xcc;return function(_0x2d8e32){if(_0x2d8e32){return _0x2d9799[_0x9a07('0x18')](_0x5eadda);}return _0x2d9799[_0x9a07('0x19')](_0x5eadda)[_0x9a07('0x1a')]();};}function respondWithResult(_0x1f22e1,_0x2f9ad3){_0x2f9ad3=_0x2f9ad3||0xc8;return function(_0x494f55){if(_0x494f55){return _0x1f22e1[_0x9a07('0x19')](_0x2f9ad3)['json'](_0x494f55);}};}function respondWithFilteredResult(_0x531ce7,_0x3d5300){return function(_0x3b43bf){if(_0x3b43bf){var _0x53d6c9=typeof _0x3d5300[_0x9a07('0x1b')]===_0x9a07('0x1c')&&typeof _0x3d5300[_0x9a07('0x1d')]==='undefined';var _0x38e900=_0x3b43bf[_0x9a07('0x1e')];var _0x1ff67c=_0x53d6c9?0x0:_0x3d5300[_0x9a07('0x1b')];var _0x1b2d90=_0x53d6c9?_0x3b43bf['count']:_0x3d5300['offset']+_0x3d5300[_0x9a07('0x1d')];var _0x18ca03;if(_0x1b2d90>=_0x38e900){_0x1b2d90=_0x38e900;_0x18ca03=0xc8;}else{_0x18ca03=0xce;}_0x531ce7['status'](_0x18ca03);return _0x531ce7[_0x9a07('0x1f')](_0x9a07('0x20'),_0x1ff67c+'-'+_0x1b2d90+'/'+_0x38e900)[_0x9a07('0x21')](_0x3b43bf);}return null;};}function patchUpdates(_0x1a3021){return function(_0x465161){try{jsonpatch[_0x9a07('0x22')](_0x465161,_0x1a3021,!![]);}catch(_0x5e2661){return BPromise[_0x9a07('0x23')](_0x5e2661);}return _0x465161[_0x9a07('0x24')]();};}function saveUpdates(_0x122e82,_0x21a8c5){return function(_0x1bf073){if(_0x1bf073){return _0x1bf073[_0x9a07('0x25')](_0x122e82)['then'](function(_0x2c21df){return _0x2c21df;});}return null;};}function removeEntity(_0x42db74,_0x44df8b){return function(_0x599144){if(_0x599144){return _0x599144[_0x9a07('0x26')]()[_0x9a07('0x27')](function(){var _0x335005=_0x599144['get']({'plain':!![]});var _0x4deabf='Lists';return db[_0x9a07('0x28')][_0x9a07('0x26')]({'where':{'type':_0x4deabf,'resourceId':_0x335005['id']}})[_0x9a07('0x27')](function(){return _0x599144;});})[_0x9a07('0x27')](function(){_0x42db74['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5d2113,_0x101258){return function(_0x3ca852){if(!_0x3ca852){_0x5d2113['sendStatus'](0x194);}return _0x3ca852;};}function handleError(_0x31b34f,_0x3183b2){_0x3183b2=_0x3183b2||0x1f4;return function(_0x1b1651){logger[_0x9a07('0x29')](_0x1b1651['stack']);if(_0x1b1651['name']){delete _0x1b1651[_0x9a07('0x2a')];}_0x31b34f[_0x9a07('0x19')](_0x3183b2)['send'](_0x1b1651);};}exports['index']=function(_0x923641,_0x4d1966){var _0x3e185a={},_0x3ece19={},_0x13e6ae={'count':0x0,'rows':[]};var _0x35d6c7=_[_0x9a07('0x2b')](db['CmList'][_0x9a07('0x2c')],function(_0x109f20){return{'name':_0x109f20['fieldName'],'type':_0x109f20[_0x9a07('0x2d')][_0x9a07('0x2e')]};});_0x3ece19[_0x9a07('0x2f')]=_[_0x9a07('0x2b')](_0x35d6c7,_0x9a07('0x2a'));_0x3ece19[_0x9a07('0x30')]=_['keys'](_0x923641[_0x9a07('0x30')]);_0x3ece19['filters']=_[_0x9a07('0x31')](_0x3ece19[_0x9a07('0x2f')],_0x3ece19[_0x9a07('0x30')]);_0x3e185a[_0x9a07('0x32')]=_[_0x9a07('0x31')](_0x3ece19[_0x9a07('0x2f')],qs[_0x9a07('0x33')](_0x923641[_0x9a07('0x30')][_0x9a07('0x33')]));_0x3e185a[_0x9a07('0x32')]=_0x3e185a[_0x9a07('0x32')]['length']?_0x3e185a[_0x9a07('0x32')]:_0x3ece19[_0x9a07('0x2f')];if(!_0x923641['query'][_0x9a07('0x34')](_0x9a07('0x35'))){_0x3e185a['limit']=qs[_0x9a07('0x1d')](_0x923641[_0x9a07('0x30')][_0x9a07('0x1d')]);_0x3e185a[_0x9a07('0x1b')]=qs[_0x9a07('0x1b')](_0x923641[_0x9a07('0x30')][_0x9a07('0x1b')]);}_0x3e185a[_0x9a07('0x36')]=qs[_0x9a07('0x37')](_0x923641[_0x9a07('0x30')][_0x9a07('0x37')]);_0x3e185a[_0x9a07('0x38')]=qs[_0x9a07('0x39')](_['pick'](_0x923641[_0x9a07('0x30')],_0x3ece19['filters']),_0x35d6c7);if(_0x923641['query'][_0x9a07('0x3a')]){_0x3e185a[_0x9a07('0x38')]=_[_0x9a07('0x3b')](_0x3e185a['where'],{'$or':_['map'](_0x35d6c7,function(_0xbb39ba){if(_0xbb39ba[_0x9a07('0x2d')]!==_0x9a07('0x3c')){var _0x981f8d={};_0x981f8d[_0xbb39ba[_0x9a07('0x2a')]]={'$like':'%'+_0x923641[_0x9a07('0x30')][_0x9a07('0x3a')]+'%'};return _0x981f8d;}})});}_0x3e185a=_[_0x9a07('0x3b')]({},_0x3e185a,_0x923641[_0x9a07('0x3d')]);var _0x1cb55a={'where':_0x3e185a['where']};return db[_0x9a07('0x3e')][_0x9a07('0x1e')](_0x1cb55a)['then'](function(_0x563df0){_0x13e6ae[_0x9a07('0x1e')]=_0x563df0;if(_0x923641[_0x9a07('0x30')]['includeAll']){_0x3e185a['include']=[{'all':!![]}];}return db[_0x9a07('0x3e')][_0x9a07('0x3f')](_0x3e185a);})[_0x9a07('0x27')](function(_0x260342){_0x13e6ae[_0x9a07('0x40')]=_0x260342;return _0x13e6ae;})[_0x9a07('0x27')](respondWithFilteredResult(_0x4d1966,_0x3e185a))['catch'](handleError(_0x4d1966,null));};exports['show']=function(_0x56db03,_0x37acb0){var _0x3c84a2={'raw':![],'where':{'id':_0x56db03[_0x9a07('0x41')]['id']}},_0x12fe62={};_0x12fe62[_0x9a07('0x2f')]=_[_0x9a07('0x42')](db['CmList']['rawAttributes']);_0x12fe62[_0x9a07('0x30')]=_['keys'](_0x56db03[_0x9a07('0x30')]);_0x12fe62[_0x9a07('0x39')]=_[_0x9a07('0x31')](_0x12fe62[_0x9a07('0x2f')],_0x12fe62[_0x9a07('0x30')]);_0x3c84a2[_0x9a07('0x32')]=_[_0x9a07('0x31')](_0x12fe62[_0x9a07('0x2f')],qs[_0x9a07('0x33')](_0x56db03[_0x9a07('0x30')]['fields']));_0x3c84a2[_0x9a07('0x32')]=_0x3c84a2['attributes']['length']?_0x3c84a2['attributes']:_0x12fe62['model'];if(_0x56db03[_0x9a07('0x30')][_0x9a07('0x43')]){_0x3c84a2[_0x9a07('0x44')]=[{'all':!![]}];}_0x3c84a2=_[_0x9a07('0x3b')]({},_0x3c84a2,_0x56db03[_0x9a07('0x3d')]);return db[_0x9a07('0x3e')][_0x9a07('0x45')](_0x3c84a2)[_0x9a07('0x27')](handleEntityNotFound(_0x37acb0,null))[_0x9a07('0x27')](respondWithResult(_0x37acb0,null))[_0x9a07('0x46')](handleError(_0x37acb0,null));};exports[_0x9a07('0x47')]=function(_0x43f55e,_0x573903){return db[_0x9a07('0x3e')][_0x9a07('0x47')](_0x43f55e[_0x9a07('0x48')],{})[_0x9a07('0x27')](function(_0x187ae1){var _0x250a65=_0x43f55e[_0x9a07('0x49')]['get']({'plain':!![]});if(!_0x250a65)throw new Error(_0x9a07('0x4a'));if(_0x250a65[_0x9a07('0x4b')]===_0x9a07('0x49')){var _0x23472e=_0x187ae1[_0x9a07('0x4c')]({'plain':!![]});var _0xd76c66=_0x9a07('0x4d');return db[_0x9a07('0x4e')]['find']({'where':{'name':_0xd76c66,'userProfileId':_0x250a65['userProfileId']},'raw':!![]})[_0x9a07('0x27')](function(_0x5c7f15){if(_0x5c7f15&&_0x5c7f15[_0x9a07('0x4f')]===0x0){return db[_0x9a07('0x28')][_0x9a07('0x47')]({'name':_0x23472e[_0x9a07('0x2a')],'resourceId':_0x23472e['id'],'type':_0x5c7f15[_0x9a07('0x2a')],'sectionId':_0x5c7f15['id']},{})[_0x9a07('0x27')](function(){return _0x187ae1;});}else{return _0x187ae1;}})['catch'](function(_0x215978){logger[_0x9a07('0x29')](_0x9a07('0x50'),_0x215978);throw _0x215978;});}return _0x187ae1;})[_0x9a07('0x27')](respondWithResult(_0x573903,0xc9))['catch'](handleError(_0x573903,null));};exports[_0x9a07('0x25')]=function(_0x22f25d,_0x3e4655){if(_0x22f25d[_0x9a07('0x48')]['id']){delete _0x22f25d[_0x9a07('0x48')]['id'];}return db[_0x9a07('0x3e')][_0x9a07('0x45')]({'where':{'id':_0x22f25d['params']['id']}})[_0x9a07('0x27')](handleEntityNotFound(_0x3e4655,null))[_0x9a07('0x27')](saveUpdates(_0x22f25d[_0x9a07('0x48')],null))[_0x9a07('0x27')](respondWithResult(_0x3e4655,null))[_0x9a07('0x46')](handleError(_0x3e4655,null));};exports[_0x9a07('0x26')]=function(_0x4082af,_0x2be21e){return db['CmList'][_0x9a07('0x45')]({'where':{'id':_0x4082af[_0x9a07('0x41')]['id']}})['then'](handleEntityNotFound(_0x2be21e,null))['then'](removeEntity(_0x2be21e,null))[_0x9a07('0x46')](handleError(_0x2be21e,null));};exports[_0x9a07('0x51')]=function(_0x29415a,_0x50aed1){return db[_0x9a07('0x3e')][_0x9a07('0x51')]()[_0x9a07('0x27')](respondWithResult(_0x50aed1,null))[_0x9a07('0x46')](handleError(_0x50aed1,null));};exports[_0x9a07('0x52')]=function(_0x42e3c8,_0x990b6a,_0x52c581){if(_0x42e3c8[_0x9a07('0x48')]['id']){delete _0x42e3c8[_0x9a07('0x48')]['id'];}return db[_0x9a07('0x3e')][_0x9a07('0x45')]({'where':{'id':_0x42e3c8['params']['id']}})[_0x9a07('0x27')](handleEntityNotFound(_0x990b6a,null))[_0x9a07('0x27')](function(_0x3bf6be){if(_0x3bf6be){_0x42e3c8[_0x9a07('0x48')][_0x9a07('0x53')]=_0x3bf6be['id'];return db['Disposition']['create'](_0x42e3c8[_0x9a07('0x48')]);}})[_0x9a07('0x27')](respondWithResult(_0x990b6a,null))[_0x9a07('0x46')](handleError(_0x990b6a,null));};exports[_0x9a07('0x54')]=function(_0x4843e9,_0x4528db,_0x4b2e9e){var _0x11e668={'raw':![],'where':{}};var _0x196e74={};var _0x180fb4={'count':0x0,'rows':[]};return db[_0x9a07('0x3e')][_0x9a07('0x55')]({'where':{'id':_0x4843e9[_0x9a07('0x41')]['id']}})[_0x9a07('0x27')](handleEntityNotFound(_0x4528db,null))['then'](function(_0x3820f1){if(_0x3820f1){_0x196e74['model']=_[_0x9a07('0x42')](db[_0x9a07('0x56')]['rawAttributes']);_0x196e74['query']=_[_0x9a07('0x42')](_0x4843e9[_0x9a07('0x30')]);_0x196e74['filters']=_['intersection'](_0x196e74[_0x9a07('0x2f')],_0x196e74[_0x9a07('0x30')]);_0x11e668[_0x9a07('0x32')]=_[_0x9a07('0x31')](_0x196e74['model'],qs[_0x9a07('0x33')](_0x4843e9[_0x9a07('0x30')][_0x9a07('0x33')]));_0x11e668[_0x9a07('0x32')]=_0x11e668['attributes'][_0x9a07('0x57')]?_0x11e668[_0x9a07('0x32')]:_0x196e74['model'];if(!_0x4843e9[_0x9a07('0x30')][_0x9a07('0x34')]('nolimit')){_0x11e668[_0x9a07('0x1d')]=qs[_0x9a07('0x1d')](_0x4843e9[_0x9a07('0x30')][_0x9a07('0x1d')]);_0x11e668[_0x9a07('0x1b')]=qs[_0x9a07('0x1b')](_0x4843e9[_0x9a07('0x30')][_0x9a07('0x1b')]);}_0x11e668[_0x9a07('0x36')]=qs[_0x9a07('0x37')](_0x4843e9[_0x9a07('0x30')][_0x9a07('0x37')]);_0x11e668[_0x9a07('0x38')]=qs[_0x9a07('0x39')](_[_0x9a07('0x58')](_0x4843e9[_0x9a07('0x30')],_0x196e74[_0x9a07('0x39')]));_0x11e668[_0x9a07('0x38')][_0x9a07('0x53')]=_0x3820f1['id'];if(_0x4843e9[_0x9a07('0x30')][_0x9a07('0x3a')]){_0x11e668['where']=_[_0x9a07('0x3b')](_0x11e668[_0x9a07('0x38')],{'$or':_[_0x9a07('0x2b')](_0x11e668[_0x9a07('0x32')],function(_0x5b4b46){var _0x1d5bc3={};_0x1d5bc3[_0x5b4b46]={'$like':'%'+_0x4843e9['query'][_0x9a07('0x3a')]+'%'};return _0x1d5bc3;})});}_0x11e668=_[_0x9a07('0x3b')]({},_0x11e668,_0x4843e9[_0x9a07('0x3d')]);return db[_0x9a07('0x56')][_0x9a07('0x1e')]({'where':_0x11e668[_0x9a07('0x38')]})[_0x9a07('0x27')](function(_0x50a5b2){_0x180fb4[_0x9a07('0x1e')]=_0x50a5b2;if(_0x4843e9[_0x9a07('0x30')]['includeAll']){_0x11e668[_0x9a07('0x44')]=[{'all':!![]}];}return db['Disposition'][_0x9a07('0x3f')](_0x11e668);})[_0x9a07('0x27')](function(_0x56036d){_0x180fb4[_0x9a07('0x40')]=_0x56036d;return _0x180fb4;});}})[_0x9a07('0x27')](respondWithFilteredResult(_0x4528db,_0x11e668))[_0x9a07('0x46')](handleError(_0x4528db,null));};exports['removeDispositions']=function(_0x5bbb95,_0x549056,_0x2bfddf){return db[_0x9a07('0x3e')]['find']({'where':{'id':_0x5bbb95[_0x9a07('0x41')]['id']}})[_0x9a07('0x27')](handleEntityNotFound(_0x549056,null))['then'](function(_0x23a609){if(_0x23a609){return _0x23a609[_0x9a07('0x59')](_0x5bbb95[_0x9a07('0x30')]['ids']);}})[_0x9a07('0x27')](respondWithStatusCode(_0x549056,null))['catch'](handleError(_0x549056,null));};exports['addContacts']=function(_0x3ae157,_0x33ac90,_0x29d04c){return db[_0x9a07('0x3e')]['find']({'where':{'id':_0x3ae157[_0x9a07('0x41')]['id']}})[_0x9a07('0x27')](handleEntityNotFound(_0x33ac90,null))[_0x9a07('0x27')](function(_0xd74e7a){if(_0xd74e7a){var _0x461bf1=[];var _0x416ce1={'success':[],'errors':[]};return db['CmContact'][_0x9a07('0x51')]()['then'](function(_0x57f4cd){if(_0x3ae157[_0x9a07('0x48')][_0x9a07('0x5a')]&&_['isArray'](_0x3ae157[_0x9a07('0x48')][_0x9a07('0x5a')])){if(_0x3ae157[_0x9a07('0x48')]['tags'][_0x9a07('0x57')]){_0x3ae157[_0x9a07('0x48')][_0x9a07('0x5a')]=_0x3ae157['body'][_0x9a07('0x5a')]['join'](';')+';';}else{_0x3ae157[_0x9a07('0x48')][_0x9a07('0x5a')]=null;}}else{_0x3ae157[_0x9a07('0x48')]['tags']=null;}if(_0x3ae157[_0x9a07('0x48')]&&_[_0x9a07('0x5b')](_0x3ae157[_0x9a07('0x48')])){for(var _0x225091=0x0;_0x225091<_0x3ae157['body'][_0x9a07('0x57')];_0x225091+=0x1){_0x3ae157[_0x9a07('0x48')][_0x225091][_0x9a07('0x53')]=_0x3ae157[_0x9a07('0x41')]['id'];_0x461bf1[_0x9a07('0x5c')](_0x3ae157[_0x9a07('0x48')][_0x225091]);}return BPromise[_0x9a07('0x5d')](_0x461bf1,function(_0x3cd68d){return db[_0x9a07('0x5e')][_0x9a07('0x47')](_[_0x9a07('0x5f')](_0x3cd68d,[_0x9a07('0x60'),'id'])||{},{'fields':_[_0x9a07('0x42')](_0x57f4cd),'raw':!![]})[_0x9a07('0x27')](function(_0x18bd2c){_0x416ce1[_0x9a07('0x61')][_0x9a07('0x5c')](_0x18bd2c[_0x9a07('0x62')]);})[_0x9a07('0x46')](function(_0x17eb2c){_0x416ce1[_0x9a07('0x63')][_0x9a07('0x5c')]({'data':_0x3cd68d,'error':_0x17eb2c[_0x9a07('0x64')]});});})['then'](function(_0x58c9fc){return _0x416ce1;})[_0x9a07('0x46')](function(_0x54f5b4){return _0x54f5b4;});}else{_0x33ac90[_0x9a07('0x19')](0x190)[_0x9a07('0x21')]({'message':_0x9a07('0x65')});}});}})[_0x9a07('0x27')](respondWithResult(_0x33ac90,null))['catch'](handleError(_0x33ac90,null));};exports['getContacts']=function(_0x4a0ba7,_0x307e1e,_0xec249){var _0x2cc3fc;return db[_0x9a07('0x3e')][_0x9a07('0x45')]({'where':{'id':_0x4a0ba7[_0x9a07('0x41')]['id']},'include':[{'model':db[_0x9a07('0x66')],'as':_0x9a07('0x67')}]})[_0x9a07('0x27')](handleEntityNotFound(_0x307e1e,null))[_0x9a07('0x27')](function(_0x1d0042){if(_0x1d0042){_0x2cc3fc=_0x1d0042;return db[_0x9a07('0x5e')]['rawAttributes'];}})[_0x9a07('0x27')](function(_0x1aa2f5){if(_0x1aa2f5){var _0x43a320={};var _0x44be61={};_0x44be61['model']=_[_0x9a07('0x68')](_['keys'](_0x1aa2f5),_[_0x9a07('0x2b')](_0x2cc3fc[_0x9a07('0x67')],function(_0x6b6da2){return util[_0x9a07('0x69')]('cf_%d',_0x6b6da2['id']);}));_0x44be61[_0x9a07('0x30')]=_['keys'](_0x4a0ba7[_0x9a07('0x30')]);_0x44be61[_0x9a07('0x39')]=_['intersection'](_0x44be61[_0x9a07('0x2f')],_0x44be61[_0x9a07('0x30')]);_0x43a320[_0x9a07('0x32')]=_[_0x9a07('0x31')](_0x44be61[_0x9a07('0x2f')],qs['fields'](_0x4a0ba7[_0x9a07('0x30')][_0x9a07('0x33')]));_0x43a320['attributes']=_0x43a320['attributes'][_0x9a07('0x57')]?_0x43a320[_0x9a07('0x32')]:_0x44be61[_0x9a07('0x2f')];if(!_0x4a0ba7['query'][_0x9a07('0x34')]('nolimit')){_0x43a320['limit']=qs[_0x9a07('0x1d')](_0x4a0ba7[_0x9a07('0x30')][_0x9a07('0x1d')]);_0x43a320[_0x9a07('0x1b')]=qs['offset'](_0x4a0ba7['query'][_0x9a07('0x1b')]);}_0x43a320[_0x9a07('0x36')]=qs[_0x9a07('0x37')](_0x4a0ba7[_0x9a07('0x30')][_0x9a07('0x37')]);_0x43a320[_0x9a07('0x38')]=qs[_0x9a07('0x39')](_['pick'](_0x4a0ba7[_0x9a07('0x30')],_0x44be61['filters']));_0x43a320[_0x9a07('0x6a')]=!![];if(_0x4a0ba7[_0x9a07('0x30')]['filter']){_0x43a320['where']=_['merge'](_0x43a320[_0x9a07('0x38')],{'$or':_[_0x9a07('0x2b')](_0x43a320[_0x9a07('0x32')],function(_0x59e6fa){var _0x16b598={};_0x16b598[_0x59e6fa]={'$like':'%'+_0x4a0ba7[_0x9a07('0x30')]['filter']+'%'};return _0x16b598;})});}_0x43a320=_[_0x9a07('0x3b')]({},_0x43a320,_0x4a0ba7[_0x9a07('0x3d')]);return _0x2cc3fc[_0x9a07('0x6b')](_0x43a320);}})['then'](respondWithResult(_0x307e1e,null))[_0x9a07('0x46')](handleError(_0x307e1e,null));};exports[_0x9a07('0x6c')]=function(_0x4e60f6,_0x279b34,_0x598a82){var _0xfef6f4;return db[_0x9a07('0x3e')][_0x9a07('0x45')]({'where':{'id':_0x4e60f6[_0x9a07('0x41')]['id']},'include':[{'model':db[_0x9a07('0x66')],'as':'CustomFields'}]})[_0x9a07('0x27')](handleEntityNotFound(_0x279b34,null))[_0x9a07('0x27')](function(_0xef4a4a){if(_0xef4a4a){_0xfef6f4=_0xef4a4a;return db[_0x9a07('0x5e')][_0x9a07('0x2c')];}})[_0x9a07('0x27')](function(_0x4a68b4){if(_0x4a68b4){var _0x49c95a={};var _0x419c4f={};_0x419c4f[_0x9a07('0x2f')]=_[_0x9a07('0x68')](_[_0x9a07('0x42')](_0x4a68b4),_['map'](_0xfef6f4[_0x9a07('0x67')],function(_0x1dcb31){return util[_0x9a07('0x69')](_0x9a07('0x6d'),_0x1dcb31['id']);}));_0x419c4f[_0x9a07('0x30')]=_[_0x9a07('0x42')](_0x4e60f6['query']);_0x419c4f[_0x9a07('0x39')]=_[_0x9a07('0x31')](_0x419c4f[_0x9a07('0x2f')],_0x419c4f[_0x9a07('0x30')]);_0x49c95a['attributes']=_[_0x9a07('0x31')](_0x419c4f[_0x9a07('0x2f')],qs['fields'](_0x4e60f6[_0x9a07('0x30')][_0x9a07('0x33')]));_0x49c95a[_0x9a07('0x32')]=_0x49c95a['attributes'][_0x9a07('0x57')]?_0x49c95a[_0x9a07('0x32')]:_0x419c4f['model'];if(!_0x4e60f6['query']['hasOwnProperty']('nolimit')){_0x49c95a['limit']=qs[_0x9a07('0x1d')](_0x4e60f6['query']['limit']);_0x49c95a[_0x9a07('0x1b')]=qs['offset'](_0x4e60f6[_0x9a07('0x30')][_0x9a07('0x1b')]);}_0x49c95a[_0x9a07('0x36')]=qs[_0x9a07('0x37')](_0x4e60f6['query']['sort']);_0x49c95a[_0x9a07('0x38')]=qs['filters'](_[_0x9a07('0x58')](_0x4e60f6[_0x9a07('0x30')],_0x419c4f[_0x9a07('0x39')]));_0x49c95a['raw']=!![];if(_0x4e60f6[_0x9a07('0x30')][_0x9a07('0x3a')]){_0x49c95a['where']=_[_0x9a07('0x3b')](_0x49c95a[_0x9a07('0x38')],{'$or':_['map'](_0x49c95a[_0x9a07('0x32')],function(_0x2a07f4){var _0x1c5569={};_0x1c5569[_0x2a07f4]={'$like':'%'+_0x4e60f6[_0x9a07('0x30')][_0x9a07('0x3a')]+'%'};return _0x1c5569;})});}_0x49c95a=_['merge']({},_0x49c95a,_0x4e60f6[_0x9a07('0x3d')]);return _0xfef6f4[_0x9a07('0x6b')](_0x49c95a);}})['then'](function(_0x2bb3ef){if(!_[_0x9a07('0x6e')](_0x2bb3ef)){var _0x1a8798=toCsv(_0x2bb3ef);var _0x283f46=Date[_0x9a07('0x6f')]();fs[_0x9a07('0x70')](util['format'](_0x9a07('0x71'),_0xfef6f4['id'],_0x283f46),_0x1a8798);_0x279b34['setHeader'](_0x9a07('0x72'),_0x9a07('0x73')+util[_0x9a07('0x69')](_0x9a07('0x74'),_0xfef6f4['id'],_0x283f46));_0x279b34[_0x9a07('0x75')]('Content-type',_0x9a07('0x76'));return _0x279b34['download'](util[_0x9a07('0x69')](_0x9a07('0x71'),_0xfef6f4['id'],_0x283f46));}else{return _0x279b34[_0x9a07('0x18')](0xcc);}})['catch'](handleError(_0x279b34,null));};exports[_0x9a07('0x77')]=function(_0x593ca5,_0x458bd1,_0x42448e){var _0x3817ff;delete _0x593ca5[_0x9a07('0x48')]['id'];return db['CmList'][_0x9a07('0x55')]({'where':{'id':_0x593ca5[_0x9a07('0x41')]['id']}})[_0x9a07('0x27')](handleEntityNotFound(_0x458bd1,null))[_0x9a07('0x27')](function(_0x1788b2){if(_0x1788b2){return db[_0x9a07('0x78')]['transaction'](function(_0x65488d){return db[_0x9a07('0x66')]['create'](_0x593ca5[_0x9a07('0x48')],{'transaction':_0x65488d})[_0x9a07('0x27')](function(_0x1346dd){_0x3817ff=_0x1346dd;return _0x1788b2[_0x9a07('0x79')](_0x1346dd,{'transaction':_0x65488d});})[_0x9a07('0x27')](function(){var _0x5474df={'type':db[_0x9a07('0x7a')]['TEXT'],'transaction':_0x65488d};switch(_0x593ca5[_0x9a07('0x48')][_0x9a07('0x2d')]){case _0x9a07('0x7b'):_0x5474df[_0x9a07('0x2d')]=db[_0x9a07('0x7a')][_0x9a07('0x7c')];break;case _0x9a07('0x7d'):_0x5474df[_0x9a07('0x2d')]=db['Sequelize'][_0x9a07('0x7e')];break;case _0x9a07('0x7f'):_0x5474df['type']=db['Sequelize'][_0x9a07('0x80')];_0x5474df['defaultValue']=![];break;default:}return db['sequelize'][_0x9a07('0x81')]['addColumn'](_0x9a07('0x82'),util[_0x9a07('0x69')](_0x9a07('0x83'),_0x3817ff['id']),_0x5474df);})[_0x9a07('0x27')](function(){return _0x3817ff;});});}})[_0x9a07('0x27')](respondWithResult(_0x458bd1,null))[_0x9a07('0x46')](handleError(_0x458bd1,null));};exports['getCustomFields']=function(_0x2e25f4,_0x5c38d9,_0x247c3d){var _0xca452c={};var _0x285b8b={};var _0x511ff1;var _0x106cfe;return db[_0x9a07('0x3e')]['findOne']({'where':{'id':_0x2e25f4[_0x9a07('0x41')]['id']}})['then'](handleEntityNotFound(_0x5c38d9,null))[_0x9a07('0x27')](function(_0x2872a3){if(_0x2872a3){_0x511ff1=_0x2872a3;_0x285b8b['model']=_[_0x9a07('0x42')](db[_0x9a07('0x66')][_0x9a07('0x2c')]);_0x285b8b[_0x9a07('0x30')]=_[_0x9a07('0x42')](_0x2e25f4['query']);_0x285b8b[_0x9a07('0x39')]=_[_0x9a07('0x31')](_0x285b8b[_0x9a07('0x2f')],_0x285b8b['query']);_0xca452c[_0x9a07('0x32')]=_[_0x9a07('0x31')](_0x285b8b[_0x9a07('0x2f')],qs[_0x9a07('0x33')](_0x2e25f4['query'][_0x9a07('0x33')]));_0xca452c[_0x9a07('0x32')]=_0xca452c['attributes'][_0x9a07('0x57')]?_0xca452c[_0x9a07('0x32')]:_0x285b8b[_0x9a07('0x2f')];_0xca452c[_0x9a07('0x36')]=qs[_0x9a07('0x37')](_0x2e25f4[_0x9a07('0x30')][_0x9a07('0x37')]);_0xca452c['where']=qs[_0x9a07('0x39')](_[_0x9a07('0x58')](_0x2e25f4[_0x9a07('0x30')],_0x285b8b['filters']));_0xca452c['where']=_[_0x9a07('0x3b')](_0xca452c[_0x9a07('0x38')],{'$or':[{'ListId':_0x2872a3['id']},{'ListId':null}]});if(_0x2e25f4[_0x9a07('0x30')][_0x9a07('0x3a')]){_0xca452c[_0x9a07('0x38')]=_['merge'](_0xca452c[_0x9a07('0x38')],{'$or':_[_0x9a07('0x2b')](_0xca452c['attributes'],function(_0x200839){var _0x62d42e={};_0x62d42e[_0x200839]={'$like':'%'+_0x2e25f4[_0x9a07('0x30')][_0x9a07('0x3a')]+'%'};return _0x62d42e;})});}_0xca452c=_[_0x9a07('0x3b')]({},_0xca452c,_0x2e25f4[_0x9a07('0x3d')]);return db[_0x9a07('0x66')]['findAndCountAll'](_0xca452c);}})[_0x9a07('0x27')](respondWithResult(_0x5c38d9,null))['catch'](handleError(_0x5c38d9,null));};exports[_0x9a07('0x84')]=function(_0x1328b7,_0x281c2f,_0x3630a9){return db[_0x9a07('0x3e')][_0x9a07('0x45')]({'where':{'id':_0x1328b7[_0x9a07('0x41')]['id']}})[_0x9a07('0x27')](handleEntityNotFound(_0x281c2f,null))[_0x9a07('0x27')](function(_0x2cf295){if(_0x2cf295){return _0x2cf295['addAgents'](_0x1328b7[_0x9a07('0x48')]['ids'],_['omit'](_0x1328b7['body'],['ids','id'])||{})['spread'](function(_0x36ce66){for(var _0x1d61ab=0x0;_0x1d61ab<_0x1328b7[_0x9a07('0x48')][_0x9a07('0x60')][_0x9a07('0x57')];_0x1d61ab+=0x1){socket['emit'](_0x9a07('0x85'),{'UserId':Number(_0x1328b7[_0x9a07('0x48')][_0x9a07('0x60')][_0x1d61ab]),'CmListId':Number(_0x1328b7[_0x9a07('0x41')]['id'])});}return _0x36ce66;});}})[_0x9a07('0x27')](respondWithResult(_0x281c2f,null))[_0x9a07('0x46')](handleError(_0x281c2f,null));};exports['removeAgents']=function(_0xa77151,_0x4419ac,_0x175002){return db['CmList'][_0x9a07('0x45')]({'where':{'id':_0xa77151[_0x9a07('0x41')]['id']}})[_0x9a07('0x27')](handleEntityNotFound(_0x4419ac,null))[_0x9a07('0x27')](function(_0x8ad757){if(_0x8ad757){return _0x8ad757[_0x9a07('0x86')](_0xa77151[_0x9a07('0x30')][_0x9a07('0x60')])[_0x9a07('0x27')](function(){if(_[_0x9a07('0x5b')](_0xa77151[_0x9a07('0x30')][_0x9a07('0x60')])){for(var _0x286442=0x0;_0x286442<_0xa77151[_0x9a07('0x30')][_0x9a07('0x60')][_0x9a07('0x57')];_0x286442+=0x1){socket[_0x9a07('0x87')](_0x9a07('0x88'),{'UserId':Number(_0xa77151[_0x9a07('0x30')][_0x9a07('0x60')][_0x286442]),'CmListId':Number(_0xa77151['params']['id'])});}}else{socket[_0x9a07('0x87')](_0x9a07('0x88'),{'UserId':Number(_0xa77151[_0x9a07('0x30')][_0x9a07('0x60')]),'CmListId':Number(_0xa77151[_0x9a07('0x41')]['id'])});}});}})[_0x9a07('0x27')](respondWithStatusCode(_0x4419ac,null))[_0x9a07('0x46')](handleError(_0x4419ac,null));};exports[_0x9a07('0x89')]=function(_0x24a5c7,_0x2180bd,_0x33df8a){var _0x417d99={};var _0x1da028={};var _0x39254c;var _0x2e4745;return db[_0x9a07('0x3e')]['findOne']({'where':{'id':_0x24a5c7['params']['id']}})[_0x9a07('0x27')](handleEntityNotFound(_0x2180bd,null))[_0x9a07('0x27')](function(_0x58a44f){if(_0x58a44f){_0x39254c=_0x58a44f;_0x1da028[_0x9a07('0x2f')]=_['keys'](db[_0x9a07('0x8a')][_0x9a07('0x2c')]);_0x1da028['query']=_['keys'](_0x24a5c7[_0x9a07('0x30')]);_0x1da028[_0x9a07('0x39')]=_[_0x9a07('0x31')](_0x1da028[_0x9a07('0x2f')],_0x1da028[_0x9a07('0x30')]);_0x417d99[_0x9a07('0x32')]=_[_0x9a07('0x31')](_0x1da028['model'],qs[_0x9a07('0x33')](_0x24a5c7[_0x9a07('0x30')][_0x9a07('0x33')]));_0x417d99['attributes']=_0x417d99[_0x9a07('0x32')][_0x9a07('0x57')]?_0x417d99['attributes']:_0x1da028[_0x9a07('0x2f')];_0x417d99[_0x9a07('0x36')]=qs[_0x9a07('0x37')](_0x24a5c7['query'][_0x9a07('0x37')]);_0x417d99[_0x9a07('0x38')]=qs['filters'](_[_0x9a07('0x58')](_0x24a5c7[_0x9a07('0x30')],_0x1da028[_0x9a07('0x39')]));if(_0x24a5c7[_0x9a07('0x30')][_0x9a07('0x3a')]){_0x417d99[_0x9a07('0x38')]=_['merge'](_0x417d99['where'],{'$or':_[_0x9a07('0x2b')](_0x417d99[_0x9a07('0x32')],function(_0x37c8ee){var _0x39475e={};_0x39475e[_0x37c8ee]={'$like':'%'+_0x24a5c7['query'][_0x9a07('0x3a')]+'%'};return _0x39475e;})});}_0x417d99=_[_0x9a07('0x3b')]({},_0x417d99,_0x24a5c7[_0x9a07('0x3d')]);return _0x39254c[_0x9a07('0x89')](_0x417d99);}})['then'](function(_0x33a062){if(_0x33a062){_0x2e4745=_0x33a062[_0x9a07('0x57')];if(!_0x24a5c7['query']['hasOwnProperty'](_0x9a07('0x35'))){_0x417d99[_0x9a07('0x1d')]=qs[_0x9a07('0x1d')](_0x24a5c7[_0x9a07('0x30')][_0x9a07('0x1d')]);_0x417d99[_0x9a07('0x1b')]=qs[_0x9a07('0x1b')](_0x24a5c7[_0x9a07('0x30')][_0x9a07('0x1b')]);}return _0x39254c[_0x9a07('0x89')](_0x417d99);}})[_0x9a07('0x27')](function(_0x1989af){if(_0x1989af){return _0x1989af?{'count':_0x2e4745,'rows':_0x1989af}:null;}})['then'](respondWithResult(_0x2180bd,null))[_0x9a07('0x46')](handleError(_0x2180bd,null));};
\ No newline at end of file
index c5e1cc2..d7b0f3e 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(_0x4a6d48,_0x5f4687){var _0x537824=function(_0x5a327a){while(--_0x5a327a){_0x4a6d48['push'](_0x4a6d48['shift']());}};_0x537824(++_0x5f4687);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'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(_0x158f01,_0x12af3e){var _0x5ef74e=function(_0x5e7adc){while(--_0x5e7adc){_0x158f01['push'](_0x158f01['shift']());}};_0x5ef74e(++_0x12af3e);}(_0x5fc3,0xa8));var _0x35fc=function(_0x54b283,_0x5eb8a6){_0x54b283=_0x54b283-0x0;var _0x2462b3=_0x5fc3[_0x54b283];return _0x2462b3;};'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 ee63805..7cdbf87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22fb=['define','CmList','../../config/logger','moment','bluebird','request-promise','path','rimraf','./cmList.attributes','exports'];(function(_0x34ea74,_0x406409){var _0x550e05=function(_0x2f1cdc){while(--_0x2f1cdc){_0x34ea74['push'](_0x34ea74['shift']());}};_0x550e05(++_0x406409);}(_0x22fb,0x192));var _0xb22f=function(_0x5e194c,_0x580f2b){_0x5e194c=_0x5e194c-0x0;var _0x2e9108=_0x22fb[_0x5e194c];return _0x2e9108;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xb22f('0x0'))('api');var moment=require(_0xb22f('0x1'));var BPromise=require(_0xb22f('0x2'));var rp=require(_0xb22f('0x3'));var fs=require('fs');var path=require(_0xb22f('0x4'));var rimraf=require(_0xb22f('0x5'));var config=require('../../config/environment');var attributes=require(_0xb22f('0x6'));module[_0xb22f('0x7')]=function(_0x2d1fb3,_0xc3ffcc){return _0x2d1fb3[_0xb22f('0x8')](_0xb22f('0x9'),attributes,{'tableName':'cm_lists','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb58b=['CmList','cm_lists','util','../../config/logger','api','bluebird','request-promise','rimraf','./cmList.attributes','exports','define'];(function(_0x5823a7,_0x3cc2d7){var _0x4f1d86=function(_0x26ff02){while(--_0x26ff02){_0x5823a7['push'](_0x5823a7['shift']());}};_0x4f1d86(++_0x3cc2d7);}(_0xb58b,0x1f1));var _0xbb58=function(_0x3ce77e,_0x1d2c06){_0x3ce77e=_0x3ce77e-0x0;var _0x359ea4=_0xb58b[_0x3ce77e];return _0x359ea4;};'use strict';var _=require('lodash');var util=require(_0xbb58('0x0'));var logger=require(_0xbb58('0x1'))(_0xbb58('0x2'));var moment=require('moment');var BPromise=require(_0xbb58('0x3'));var rp=require(_0xbb58('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xbb58('0x5'));var config=require('../../config/environment');var attributes=require(_0xbb58('0x6'));module[_0xbb58('0x7')]=function(_0x33fe85,_0x5cf8b1){return _0x33fe85[_0xbb58('0x8')](_0xbb58('0x9'),attributes,{'tableName':_0xbb58('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ea77ef3..1323c52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb5a=['util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./cmList.socket','register','request','then','info','CmList,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash'];(function(_0x43f881,_0xd6e5a2){var _0x365c14=function(_0x50d386){while(--_0x50d386){_0x43f881['push'](_0x43f881['shift']());}};_0x365c14(++_0xd6e5a2);}(_0xbb5a,0xca));var _0xabb5=function(_0x30c846,_0x2f78b3){_0x30c846=_0x30c846-0x0;var _0x47d29a=_0xbb5a[_0x30c846];return _0x47d29a;};'use strict';var _=require(_0xabb5('0x0'));var util=require(_0xabb5('0x1'));var moment=require('moment');var BPromise=require(_0xabb5('0x2'));var rs=require(_0xabb5('0x3'));var fs=require('fs');var Redis=require(_0xabb5('0x4'));var db=require(_0xabb5('0x5'))['db'];var utils=require(_0xabb5('0x6'));var logger=require(_0xabb5('0x7'))(_0xabb5('0x8'));var config=require(_0xabb5('0x9'));var jayson=require(_0xabb5('0xa'));var client=jayson[_0xabb5('0xb')][_0xabb5('0xc')]({'port':0x232a});config[_0xabb5('0xd')]=_[_0xabb5('0xe')](config[_0xabb5('0xd')],{'host':_0xabb5('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xabb5('0x10'))[_0xabb5('0x11')](socket);function respondWithRpcPromise(_0x3d859a,_0x15af92,_0x27df23){return new BPromise(function(_0xf23b33,_0xf0d27b){return client[_0xabb5('0x12')](_0x3d859a,_0x27df23)[_0xabb5('0x13')](function(_0x1bff3b){logger[_0xabb5('0x14')](_0xabb5('0x15'),_0x15af92,_0xabb5('0x16'));logger[_0xabb5('0x17')]('CmList,\x20%s,\x20%s,\x20%s',_0x15af92,_0xabb5('0x16'),JSON[_0xabb5('0x18')](_0x1bff3b));if(_0x1bff3b[_0xabb5('0x19')]){if(_0x1bff3b[_0xabb5('0x19')][_0xabb5('0x1a')]===0x1f4){logger['error'](_0xabb5('0x15'),_0x15af92,_0x1bff3b[_0xabb5('0x19')][_0xabb5('0x1b')]);return _0xf0d27b(_0x1bff3b['error'][_0xabb5('0x1b')]);}logger[_0xabb5('0x19')]('CmList,\x20%s,\x20%s',_0x15af92,_0x1bff3b[_0xabb5('0x19')][_0xabb5('0x1b')]);return _0xf23b33(_0x1bff3b[_0xabb5('0x19')][_0xabb5('0x1b')]);}else{logger[_0xabb5('0x14')](_0xabb5('0x15'),_0x15af92,_0xabb5('0x16'));_0xf23b33(_0x1bff3b['result'][_0xabb5('0x1b')]);}})[_0xabb5('0x1c')](function(_0x53d0f7){logger[_0xabb5('0x19')](_0xabb5('0x15'),_0x15af92,_0x53d0f7);_0xf0d27b(_0x53d0f7);});});}
\ No newline at end of file
+var _0xfd32=['error','CmList,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./cmList.socket','register','request','then','info','request\x20sent','debug','CmList,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x10d670,_0x178996){var _0x20d6f8=function(_0x4a4b87){while(--_0x4a4b87){_0x10d670['push'](_0x10d670['shift']());}};_0x20d6f8(++_0x178996);}(_0xfd32,0x1c5));var _0x2fd3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfd32[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x2fd3('0x0'));var util=require(_0x2fd3('0x1'));var moment=require(_0x2fd3('0x2'));var BPromise=require(_0x2fd3('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2fd3('0x4'))['db'];var utils=require(_0x2fd3('0x5'));var logger=require('../../config/logger')(_0x2fd3('0x6'));var config=require(_0x2fd3('0x7'));var jayson=require(_0x2fd3('0x8'));var client=jayson['client'][_0x2fd3('0x9')]({'port':0x232a});config[_0x2fd3('0xa')]=_[_0x2fd3('0xb')](config[_0x2fd3('0xa')],{'host':_0x2fd3('0xc'),'port':0x18eb});var socket=require(_0x2fd3('0xd'))(new Redis(config[_0x2fd3('0xa')]));require(_0x2fd3('0xe'))[_0x2fd3('0xf')](socket);function respondWithRpcPromise(_0x118ce6,_0x17d5cd,_0x490978){return new BPromise(function(_0x4b8caa,_0x16c050){return client[_0x2fd3('0x10')](_0x118ce6,_0x490978)[_0x2fd3('0x11')](function(_0x5cc06e){logger[_0x2fd3('0x12')]('CmList,\x20%s,\x20%s',_0x17d5cd,_0x2fd3('0x13'));logger[_0x2fd3('0x14')](_0x2fd3('0x15'),_0x17d5cd,_0x2fd3('0x13'),JSON[_0x2fd3('0x16')](_0x5cc06e));if(_0x5cc06e[_0x2fd3('0x17')]){if(_0x5cc06e['error']['code']===0x1f4){logger['error'](_0x2fd3('0x18'),_0x17d5cd,_0x5cc06e[_0x2fd3('0x17')][_0x2fd3('0x19')]);return _0x16c050(_0x5cc06e[_0x2fd3('0x17')][_0x2fd3('0x19')]);}logger[_0x2fd3('0x17')](_0x2fd3('0x18'),_0x17d5cd,_0x5cc06e[_0x2fd3('0x17')][_0x2fd3('0x19')]);return _0x4b8caa(_0x5cc06e[_0x2fd3('0x17')][_0x2fd3('0x19')]);}else{logger[_0x2fd3('0x12')](_0x2fd3('0x18'),_0x17d5cd,_0x2fd3('0x13'));_0x4b8caa(_0x5cc06e[_0x2fd3('0x1a')]['message']);}})[_0x2fd3('0x1b')](function(_0x29735e){logger['error']('CmList,\x20%s,\x20%s',_0x17d5cd,_0x29735e);_0x16c050(_0x29735e);});});}
\ No newline at end of file
index 9ac13ca..4b5cf9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e21=['length','cmList:','./cmList.events','remove','emit','removeListener','register'];(function(_0x4f41ec,_0x5a0cba){var _0xcca245=function(_0x228ffe){while(--_0x228ffe){_0x4f41ec['push'](_0x4f41ec['shift']());}};_0xcca245(++_0x5a0cba);}(_0x8e21,0x1de));var _0x18e2=function(_0x19a49f,_0x444d74){_0x19a49f=_0x19a49f-0x0;var _0x5351ae=_0x8e21[_0x19a49f];return _0x5351ae;};'use strict';var CmListEvents=require(_0x18e2('0x0'));var events=['save',_0x18e2('0x1'),'update'];function createListener(_0x2732c6,_0x5c93f3){return function(_0xc31198){_0x5c93f3[_0x18e2('0x2')](_0x2732c6,_0xc31198);};}function removeListener(_0x3915b3,_0x3fec66){return function(){CmListEvents[_0x18e2('0x3')](_0x3915b3,_0x3fec66);};}exports[_0x18e2('0x4')]=function(_0x5c995c){for(var _0x5a3880=0x0,_0x1fb6ae=events[_0x18e2('0x5')];_0x5a3880<_0x1fb6ae;_0x5a3880++){var _0x305e75=events[_0x5a3880];var _0x4d6337=createListener(_0x18e2('0x6')+_0x305e75,_0x5c995c);CmListEvents['on'](_0x305e75,_0x4d6337);}};
\ No newline at end of file
+var _0x692b=['./cmList.events','remove','update','emit','removeListener','register','length','cmList:'];(function(_0x119d25,_0x588c8){var _0x39cf30=function(_0x31c68c){while(--_0x31c68c){_0x119d25['push'](_0x119d25['shift']());}};_0x39cf30(++_0x588c8);}(_0x692b,0xb0));var _0xb692=function(_0x4af8e5,_0x5ae8fe){_0x4af8e5=_0x4af8e5-0x0;var _0x6d5554=_0x692b[_0x4af8e5];return _0x6d5554;};'use strict';var CmListEvents=require(_0xb692('0x0'));var events=['save',_0xb692('0x1'),_0xb692('0x2')];function createListener(_0x4650a6,_0x4baf1c){return function(_0x468a0f){_0x4baf1c[_0xb692('0x3')](_0x4650a6,_0x468a0f);};}function removeListener(_0x69ac5e,_0x369ac8){return function(){CmListEvents[_0xb692('0x4')](_0x69ac5e,_0x369ac8);};}exports[_0xb692('0x5')]=function(_0x2f7c6d){for(var _0x27372d=0x0,_0x24fa13=events[_0xb692('0x6')];_0x27372d<_0x24fa13;_0x27372d++){var _0x49db51=events[_0x27372d];var _0x42c14c=createListener(_0xb692('0x7')+_0x49db51,_0x2f7c6d);CmListEvents['on'](_0x49db51,_0x42c14c);}};
\ No newline at end of file
index a87a670..bbdd08a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59db=['getCustomFields','/:id/users','getAgents','post','addCustomField','addAgents','put','update','delete','destroy','/:id/dispositions','removeDispositions','removeAgents','exports','connect-timeout','express','../../components/auth/service','../../config/environment','./cmList.controller','isAuthenticated','get','/:id','/:id/contacts','getContacts','/:id/contacts/csv','getContactsCsv','/:id/fields'];(function(_0x8abd64,_0x539570){var _0xd2511e=function(_0x9fef7d){while(--_0x9fef7d){_0x8abd64['push'](_0x8abd64['shift']());}};_0xd2511e(++_0x539570);}(_0x59db,0x1a3));var _0xb59d=function(_0x4b8a65,_0x1cf2db){_0x4b8a65=_0x4b8a65-0x0;var _0x312793=_0x59db[_0x4b8a65];return _0x312793;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xb59d('0x0'));var express=require(_0xb59d('0x1'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xb59d('0x2'));var interaction=require('../../components/interaction/service');var config=require(_0xb59d('0x3'));var controller=require(_0xb59d('0x4'));router['get']('/',auth[_0xb59d('0x5')](),controller['index']);router[_0xb59d('0x6')]('/describe',auth[_0xb59d('0x5')](),controller['describe']);router[_0xb59d('0x6')](_0xb59d('0x7'),auth[_0xb59d('0x5')](),controller['show']);router[_0xb59d('0x6')]('/:id/dispositions',auth[_0xb59d('0x5')](),controller['getDispositions']);router[_0xb59d('0x6')](_0xb59d('0x8'),auth['isAuthenticated'](),controller[_0xb59d('0x9')]);router[_0xb59d('0x6')](_0xb59d('0xa'),auth[_0xb59d('0x5')](),controller[_0xb59d('0xb')]);router[_0xb59d('0x6')](_0xb59d('0xc'),auth[_0xb59d('0x5')](),controller[_0xb59d('0xd')]);router[_0xb59d('0x6')](_0xb59d('0xe'),auth[_0xb59d('0x5')](),controller[_0xb59d('0xf')]);router[_0xb59d('0x10')]('/',auth[_0xb59d('0x5')](),controller['create']);router[_0xb59d('0x10')]('/:id/dispositions',auth[_0xb59d('0x5')](),controller['addDisposition']);router['post'](_0xb59d('0x8'),auth[_0xb59d('0x5')](),controller['addContacts']);router[_0xb59d('0x10')](_0xb59d('0xc'),auth[_0xb59d('0x5')](),controller[_0xb59d('0x11')]);router['post'](_0xb59d('0xe'),auth[_0xb59d('0x5')](),controller[_0xb59d('0x12')]);router[_0xb59d('0x13')](_0xb59d('0x7'),auth['isAuthenticated'](),controller[_0xb59d('0x14')]);router[_0xb59d('0x15')]('/:id',auth[_0xb59d('0x5')](),controller[_0xb59d('0x16')]);router[_0xb59d('0x15')](_0xb59d('0x17'),auth[_0xb59d('0x5')](),controller[_0xb59d('0x18')]);router['delete'](_0xb59d('0xe'),auth['isAuthenticated'](),controller[_0xb59d('0x19')]);module[_0xb59d('0x1a')]=router;
\ No newline at end of file
+var _0x828d=['/:id','getDispositions','/:id/contacts','/:id/fields','getCustomFields','/:id/users','getAgents','post','create','addDisposition','addContacts','addCustomField','put','delete','destroy','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./cmList.controller','get','isAuthenticated','index','describe'];(function(_0x4c062e,_0x20f461){var _0x16e86e=function(_0x5b88c2){while(--_0x5b88c2){_0x4c062e['push'](_0x4c062e['shift']());}};_0x16e86e(++_0x20f461);}(_0x828d,0xb7));var _0xd828=function(_0x1ae71f,_0x5e890f){_0x1ae71f=_0x1ae71f-0x0;var _0x17857e=_0x828d[_0x1ae71f];return _0x17857e;};'use strict';var multer=require(_0xd828('0x0'));var util=require(_0xd828('0x1'));var path=require(_0xd828('0x2'));var timeout=require(_0xd828('0x3'));var express=require(_0xd828('0x4'));var router=express[_0xd828('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xd828('0x6'));var config=require(_0xd828('0x7'));var controller=require(_0xd828('0x8'));router[_0xd828('0x9')]('/',auth[_0xd828('0xa')](),controller[_0xd828('0xb')]);router[_0xd828('0x9')]('/describe',auth[_0xd828('0xa')](),controller[_0xd828('0xc')]);router[_0xd828('0x9')](_0xd828('0xd'),auth[_0xd828('0xa')](),controller['show']);router['get']('/:id/dispositions',auth['isAuthenticated'](),controller[_0xd828('0xe')]);router[_0xd828('0x9')](_0xd828('0xf'),auth['isAuthenticated'](),controller['getContacts']);router[_0xd828('0x9')]('/:id/contacts/csv',auth[_0xd828('0xa')](),controller['getContactsCsv']);router['get'](_0xd828('0x10'),auth[_0xd828('0xa')](),controller[_0xd828('0x11')]);router[_0xd828('0x9')](_0xd828('0x12'),auth[_0xd828('0xa')](),controller[_0xd828('0x13')]);router[_0xd828('0x14')]('/',auth['isAuthenticated'](),controller[_0xd828('0x15')]);router[_0xd828('0x14')]('/:id/dispositions',auth[_0xd828('0xa')](),controller[_0xd828('0x16')]);router[_0xd828('0x14')](_0xd828('0xf'),auth[_0xd828('0xa')](),controller[_0xd828('0x17')]);router[_0xd828('0x14')](_0xd828('0x10'),auth['isAuthenticated'](),controller[_0xd828('0x18')]);router[_0xd828('0x14')]('/:id/users',auth[_0xd828('0xa')](),controller['addAgents']);router[_0xd828('0x19')](_0xd828('0xd'),auth[_0xd828('0xa')](),controller['update']);router[_0xd828('0x1a')](_0xd828('0xd'),auth['isAuthenticated'](),controller[_0xd828('0x1b')]);router[_0xd828('0x1a')]('/:id/dispositions',auth[_0xd828('0xa')](),controller['removeDispositions']);router[_0xd828('0x1a')](_0xd828('0x12'),auth[_0xd828('0xa')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index a1c1a4e..252bada 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb72d=['exports','VIRTUAL','getDataValue','field','STRING','sequelize'];(function(_0x52704a,_0x161958){var _0x5f04fd=function(_0x4e7727){while(--_0x4e7727){_0x52704a['push'](_0x52704a['shift']());}};_0x5f04fd(++_0x161958);}(_0xb72d,0x12b));var _0xdb72=function(_0x38e4c3,_0xd960a0){_0x38e4c3=_0x38e4c3-0x0;var _0x5717b0=_0xb72d[_0x38e4c3];return _0x5717b0;};'use strict';var Sequelize=require(_0xdb72('0x0'));module[_0xdb72('0x1')]={'name':{'type':Sequelize[_0xdb72('0x2')],'get':function(_0x4985e4){return this[_0xdb72('0x3')](_0xdb72('0x4'));}},'field':{'type':Sequelize[_0xdb72('0x5')],'allowNull':![]},'operator':{'type':Sequelize[_0xdb72('0x5')],'allowNull':![]},'value':{'type':Sequelize[_0xdb72('0x5')],'allowNull':![]}};
\ No newline at end of file
+var _0xcce0=['VIRTUAL','getDataValue','STRING','sequelize','exports'];(function(_0x1542af,_0x54e629){var _0x79868c=function(_0x352732){while(--_0x352732){_0x1542af['push'](_0x1542af['shift']());}};_0x79868c(++_0x54e629);}(_0xcce0,0x71));var _0x0cce=function(_0x2f1de4,_0x2eb22a){_0x2f1de4=_0x2f1de4-0x0;var _0x15c699=_0xcce0[_0x2f1de4];return _0x15c699;};'use strict';var Sequelize=require(_0x0cce('0x0'));module[_0x0cce('0x1')]={'name':{'type':Sequelize[_0x0cce('0x2')],'get':function(_0xb521f6){return this[_0x0cce('0x3')]('field');}},'field':{'type':Sequelize[_0x0cce('0x4')],'allowNull':![]},'operator':{'type':Sequelize[_0x0cce('0x4')],'allowNull':![]},'value':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index f1dd226..993f517 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(_0x102053,_0x777f32){var _0x331a9d=function(_0x55e7ae){while(--_0x55e7ae){_0x102053['push'](_0x102053['shift']());}};_0x331a9d(++_0x777f32);}(_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(_0x255630,_0x5aa76e){var _0x580e48=function(_0x20db16){while(--_0x20db16){_0x255630['push'](_0x255630['shift']());}};_0x580e48(++_0x5aa76e);}(_0x7a54,0x106));var _0x47a5=function(_0x1f4ed2,_0x51eb95){_0x1f4ed2=_0x1f4ed2-0x0;var _0x354a6d=_0x7a54[_0x1f4ed2];return _0x354a6d;};'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 0bf84da..42317cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e8=['util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./condition.attributes','exports','tools_conditions','lodash'];(function(_0x184a9c,_0x345efe){var _0x5548c5=function(_0xa3ef9b){while(--_0xa3ef9b){_0x184a9c['push'](_0x184a9c['shift']());}};_0x5548c5(++_0x345efe);}(_0x70e8,0x15f));var _0x870e=function(_0x324caa,_0x2d60df){_0x324caa=_0x324caa-0x0;var _0x40c86a=_0x70e8[_0x324caa];return _0x40c86a;};'use strict';var _=require(_0x870e('0x0'));var util=require(_0x870e('0x1'));var logger=require(_0x870e('0x2'))('api');var moment=require(_0x870e('0x3'));var BPromise=require(_0x870e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x870e('0x5'));var rimraf=require(_0x870e('0x6'));var config=require(_0x870e('0x7'));var attributes=require(_0x870e('0x8'));module[_0x870e('0x9')]=function(_0x4d9b50,_0x5df017){return _0x4d9b50['define']('Condition',attributes,{'tableName':_0x870e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf4fe=['tools_conditions','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define'];(function(_0x3de8a4,_0x289a5c){var _0x4635cf=function(_0x2bddb8){while(--_0x2bddb8){_0x3de8a4['push'](_0x3de8a4['shift']());}};_0x4635cf(++_0x289a5c);}(_0xf4fe,0x115));var _0xef4f=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xf4fe[_0x5ddb1c];return _0x354adc;};'use strict';var _=require(_0xef4f('0x0'));var util=require(_0xef4f('0x1'));var logger=require('../../config/logger')(_0xef4f('0x2'));var moment=require(_0xef4f('0x3'));var BPromise=require(_0xef4f('0x4'));var rp=require(_0xef4f('0x5'));var fs=require('fs');var path=require(_0xef4f('0x6'));var rimraf=require(_0xef4f('0x7'));var config=require(_0xef4f('0x8'));var attributes=require('./condition.attributes');module[_0xef4f('0x9')]=function(_0x16105e,_0x1aef4e){return _0x16105e[_0xef4f('0xa')]('Condition',attributes,{'tableName':_0xef4f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bd8d25c..f1b024b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd704=['../../config/logger','rpc','../../config/environment','client','http','request','request\x20sent','debug','stringify','code','error','message','Condition,\x20%s,\x20%s','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x416cdc,_0x213b87){var _0x1931ce=function(_0x1dc762){while(--_0x1dc762){_0x416cdc['push'](_0x416cdc['shift']());}};_0x1931ce(++_0x213b87);}(_0xd704,0x12d));var _0x4d70=function(_0x3b5b38,_0x430e11){_0x3b5b38=_0x3b5b38-0x0;var _0x50ac5e=_0xd704[_0x3b5b38];return _0x50ac5e;};'use strict';var _=require(_0x4d70('0x0'));var util=require(_0x4d70('0x1'));var moment=require('moment');var BPromise=require(_0x4d70('0x2'));var rs=require(_0x4d70('0x3'));var fs=require('fs');var Redis=require(_0x4d70('0x4'));var db=require(_0x4d70('0x5'))['db'];var utils=require(_0x4d70('0x6'));var logger=require(_0x4d70('0x7'))(_0x4d70('0x8'));var config=require(_0x4d70('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x4d70('0xa')][_0x4d70('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3732b5,_0x1b4737,_0x268623){return new BPromise(function(_0xa13998,_0x3c2f2b){return client[_0x4d70('0xc')](_0x3732b5,_0x268623)['then'](function(_0x415d2d){logger['info']('Condition,\x20%s,\x20%s',_0x1b4737,_0x4d70('0xd'));logger[_0x4d70('0xe')]('Condition,\x20%s,\x20%s,\x20%s',_0x1b4737,'request\x20sent',JSON[_0x4d70('0xf')](_0x415d2d));if(_0x415d2d['error']){if(_0x415d2d['error'][_0x4d70('0x10')]===0x1f4){logger[_0x4d70('0x11')]('Condition,\x20%s,\x20%s',_0x1b4737,_0x415d2d['error'][_0x4d70('0x12')]);return _0x3c2f2b(_0x415d2d[_0x4d70('0x11')][_0x4d70('0x12')]);}logger[_0x4d70('0x11')]('Condition,\x20%s,\x20%s',_0x1b4737,_0x415d2d['error'][_0x4d70('0x12')]);return _0xa13998(_0x415d2d[_0x4d70('0x11')]['message']);}else{logger['info'](_0x4d70('0x13'),_0x1b4737,_0x4d70('0xd'));_0xa13998(_0x415d2d[_0x4d70('0x14')][_0x4d70('0x12')]);}})[_0x4d70('0x15')](function(_0x2fd06c){logger[_0x4d70('0x11')](_0x4d70('0x13'),_0x1b4737,_0x2fd06c);_0x3c2f2b(_0x2fd06c);});});}
\ No newline at end of file
+var _0x400c=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','Condition,\x20%s,\x20%s','debug','Condition,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','lodash','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x400c,0x94));var _0xc400=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x400c[_0x4cf98e];return _0x1623ac;};'use strict';var _=require(_0xc400('0x0'));var util=require('util');var moment=require(_0xc400('0x1'));var BPromise=require(_0xc400('0x2'));var rs=require(_0xc400('0x3'));var fs=require('fs');var Redis=require(_0xc400('0x4'));var db=require(_0xc400('0x5'))['db'];var utils=require(_0xc400('0x6'));var logger=require(_0xc400('0x7'))(_0xc400('0x8'));var config=require(_0xc400('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xc400('0xa')][_0xc400('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xb05be8,_0x2bdabb,_0x565fff){return new BPromise(function(_0x301b30,_0x41040c){return client[_0xc400('0xc')](_0xb05be8,_0x565fff)[_0xc400('0xd')](function(_0x49c0bb){logger[_0xc400('0xe')](_0xc400('0xf'),_0x2bdabb,'request\x20sent');logger[_0xc400('0x10')](_0xc400('0x11'),_0x2bdabb,'request\x20sent',JSON[_0xc400('0x12')](_0x49c0bb));if(_0x49c0bb[_0xc400('0x13')]){if(_0x49c0bb[_0xc400('0x13')][_0xc400('0x14')]===0x1f4){logger[_0xc400('0x13')]('Condition,\x20%s,\x20%s',_0x2bdabb,_0x49c0bb[_0xc400('0x13')]['message']);return _0x41040c(_0x49c0bb[_0xc400('0x13')][_0xc400('0x15')]);}logger[_0xc400('0x13')](_0xc400('0xf'),_0x2bdabb,_0x49c0bb[_0xc400('0x13')][_0xc400('0x15')]);return _0x301b30(_0x49c0bb[_0xc400('0x13')]['message']);}else{logger[_0xc400('0xe')](_0xc400('0xf'),_0x2bdabb,_0xc400('0x16'));_0x301b30(_0x49c0bb[_0xc400('0x17')][_0xc400('0x15')]);}})[_0xc400('0x18')](function(_0x354b66){logger[_0xc400('0x13')]('Condition,\x20%s,\x20%s',_0x2bdabb,_0x354b66);_0x41040c(_0x354b66);});});}
\ No newline at end of file
index d6740a6..70882bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf627=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./condition.controller','put','/:id','isAuthenticated','update','destroy','exports','multer','util'];(function(_0x4a5182,_0x135866){var _0x5c1ae5=function(_0x59eb7c){while(--_0x59eb7c){_0x4a5182['push'](_0x4a5182['shift']());}};_0x5c1ae5(++_0x135866);}(_0xf627,0x1a2));var _0x7f62=function(_0x4165a6,_0x26b88c){_0x4165a6=_0x4165a6-0x0;var _0x1a1054=_0xf627[_0x4165a6];return _0x1a1054;};'use strict';var multer=require(_0x7f62('0x0'));var util=require(_0x7f62('0x1'));var path=require('path');var timeout=require(_0x7f62('0x2'));var express=require(_0x7f62('0x3'));var router=express[_0x7f62('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x7f62('0x5'));var interaction=require(_0x7f62('0x6'));var config=require(_0x7f62('0x7'));var controller=require(_0x7f62('0x8'));router[_0x7f62('0x9')](_0x7f62('0xa'),auth[_0x7f62('0xb')](),controller[_0x7f62('0xc')]);router['delete']('/:id',auth[_0x7f62('0xb')](),controller[_0x7f62('0xd')]);module[_0x7f62('0xe')]=router;
\ No newline at end of file
+var _0x72f8=['path','connect-timeout','../../components/auth/service','../../config/environment','./condition.controller','put','/:id','isAuthenticated','update','delete','util'];(function(_0x1c1509,_0x2dfa81){var _0xf11b7=function(_0x17949e){while(--_0x17949e){_0x1c1509['push'](_0x1c1509['shift']());}};_0xf11b7(++_0x2dfa81);}(_0x72f8,0x107));var _0x872f=function(_0x47242d,_0x13f993){_0x47242d=_0x47242d-0x0;var _0x30273a=_0x72f8[_0x47242d];return _0x30273a;};'use strict';var multer=require('multer');var util=require(_0x872f('0x0'));var path=require(_0x872f('0x1'));var timeout=require(_0x872f('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x872f('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x872f('0x4'));var controller=require(_0x872f('0x5'));router[_0x872f('0x6')](_0x872f('0x7'),auth[_0x872f('0x8')](),controller[_0x872f('0x9')]);router[_0x872f('0xa')](_0x872f('0x7'),auth[_0x872f('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index d45028f..6abf562 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['name','exports','STRING'];(function(_0x152fe3,_0x12b0c8){var _0xc5bb39=function(_0x1fde42){while(--_0x1fde42){_0x152fe3['push'](_0x152fe3['shift']());}};_0xc5bb39(++_0x12b0c8);}(_0xbaf0,0x12a));var _0x0baf=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xbaf0[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require('sequelize');module[_0x0baf('0x0')]={'name':{'type':Sequelize[_0x0baf('0x1')],'allowNull':![],'unique':_0x0baf('0x2')},'description':{'type':Sequelize[_0x0baf('0x1')]}};
\ No newline at end of file
+var _0x0713=['STRING','name'];(function(_0x5a06a7,_0x502a10){var _0x54c123=function(_0x2ebcb3){while(--_0x2ebcb3){_0x5a06a7['push'](_0x5a06a7['shift']());}};_0x54c123(++_0x502a10);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x3071('0x0')],'allowNull':![],'unique':_0x3071('0x1')},'description':{'type':Sequelize[_0x3071('0x0')]}};
\ No newline at end of file
index bc808c1..4db76cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33a7=['pie-chart','attrSerie1','total','attrSerie3','web-report','attrReport','reportType','attrRefresh','error','widgetAttributes:\x20%s','addItem','DashboardId','getItems','DashboardItem','order','hasOwnProperty','nolimit','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','sox','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','redis','defaults','localhost','./dashboard.socket','register','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','CustomDashboards','UserProfileResource','destroy','stack','name','map','Dashboard','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','length','sort','pick','filter','merge','where','type','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','include','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','omit','createdAt','updatedAt','iframe','attrUrl','value','https://','attrPath','attrs','clock','attrHourFormat','attrTimezone','0.00','attrFontSize','attrMetric','attrVoiceQueues','multibar-chart'];(function(_0x7801d3,_0x2c0334){var _0x3496f2=function(_0x306a9c){while(--_0x306a9c){_0x7801d3['push'](_0x7801d3['shift']());}};_0x3496f2(++_0x2c0334);}(_0x33a7,0xfd));var _0x733a=function(_0x131fe7,_0x21fcdb){_0x131fe7=_0x131fe7-0x0;var _0x2eddf3=_0x33a7[_0x131fe7];return _0x2eddf3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x733a('0x0'));var zipdir=require(_0x733a('0x1'));var jsonpatch=require(_0x733a('0x2'));var rp=require(_0x733a('0x3'));var moment=require(_0x733a('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x733a('0x5'));var sox=require(_0x733a('0x6'));var csv=require('to-csv');var ejs=require(_0x733a('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x733a('0x8'));var squel=require(_0x733a('0x9'));var crypto=require('crypto');var jsforce=require(_0x733a('0xa'));var deskjs=require(_0x733a('0xb'));var toCsv=require(_0x733a('0xc'));var querystring=require(_0x733a('0xd'));var Papa=require('papaparse');var Redis=require(_0x733a('0xe'));var authService=require(_0x733a('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x733a('0x10'));var logger=require(_0x733a('0x11'))(_0x733a('0x12'));var utils=require(_0x733a('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x733a('0x14'))['db'];config[_0x733a('0x15')]=_[_0x733a('0x16')](config[_0x733a('0x15')],{'host':_0x733a('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x733a('0x15')]));require(_0x733a('0x18'))[_0x733a('0x19')](socket);function respondWithStatusCode(_0x4acecb,_0x529c4a){_0x529c4a=_0x529c4a||0xcc;return function(_0x56d778){if(_0x56d778){return _0x4acecb[_0x733a('0x1a')](_0x529c4a);}return _0x4acecb['status'](_0x529c4a)[_0x733a('0x1b')]();};}function respondWithResult(_0x130565,_0xef1724){_0xef1724=_0xef1724||0xc8;return function(_0x4ac60e){if(_0x4ac60e){return _0x130565[_0x733a('0x1c')](_0xef1724)[_0x733a('0x1d')](_0x4ac60e);}};}function respondWithFilteredResult(_0x25d696,_0x12f692){return function(_0x3a96fb){if(_0x3a96fb){var _0x5031b2=typeof _0x12f692[_0x733a('0x1e')]===_0x733a('0x1f')&&typeof _0x12f692['limit']===_0x733a('0x1f');var _0x32b365=_0x3a96fb[_0x733a('0x20')];var _0x3309ef=_0x5031b2?0x0:_0x12f692[_0x733a('0x1e')];var _0x341dc8=_0x5031b2?_0x3a96fb['count']:_0x12f692[_0x733a('0x1e')]+_0x12f692[_0x733a('0x21')];var _0x3a2db0;if(_0x341dc8>=_0x32b365){_0x341dc8=_0x32b365;_0x3a2db0=0xc8;}else{_0x3a2db0=0xce;}_0x25d696[_0x733a('0x1c')](_0x3a2db0);return _0x25d696[_0x733a('0x22')](_0x733a('0x23'),_0x3309ef+'-'+_0x341dc8+'/'+_0x32b365)[_0x733a('0x1d')](_0x3a96fb);}return null;};}function patchUpdates(_0x2672ef){return function(_0x2f43bc){try{jsonpatch[_0x733a('0x24')](_0x2f43bc,_0x2672ef,!![]);}catch(_0x162c82){return BPromise[_0x733a('0x25')](_0x162c82);}return _0x2f43bc[_0x733a('0x26')]();};}function saveUpdates(_0x3ed25a,_0x890452){return function(_0x2cfe6c){if(_0x2cfe6c){return _0x2cfe6c[_0x733a('0x27')](_0x3ed25a)[_0x733a('0x28')](function(_0x3a0637){return _0x3a0637;});}return null;};}function removeEntity(_0x12d95e,_0x39f15c){return function(_0x21c1be){if(_0x21c1be){return _0x21c1be['destroy']()['then'](function(){var _0x48744f=_0x21c1be['get']({'plain':!![]});var _0x13a574=_0x733a('0x29');return db[_0x733a('0x2a')][_0x733a('0x2b')]({'where':{'type':_0x13a574,'resourceId':_0x48744f['id']}})[_0x733a('0x28')](function(){return _0x21c1be;});})['then'](function(){_0x12d95e['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3cfc19,_0x5159d5){return function(_0x44e7b9){if(!_0x44e7b9){_0x3cfc19[_0x733a('0x1a')](0x194);}return _0x44e7b9;};}function handleError(_0x35ba71,_0x36e72d){_0x36e72d=_0x36e72d||0x1f4;return function(_0x153b0e){logger['error'](_0x153b0e[_0x733a('0x2c')]);if(_0x153b0e[_0x733a('0x2d')]){delete _0x153b0e[_0x733a('0x2d')];}_0x35ba71['status'](_0x36e72d)['send'](_0x153b0e);};}exports['index']=function(_0x9eb744,_0x148eb8){var _0x269e7d={},_0x487d66={},_0x54c6a5={'count':0x0,'rows':[]};var _0xaf612d=_[_0x733a('0x2e')](db[_0x733a('0x2f')][_0x733a('0x30')],function(_0x21fe45){return{'name':_0x21fe45[_0x733a('0x31')],'type':_0x21fe45['type']['key']};});_0x487d66[_0x733a('0x32')]=_[_0x733a('0x2e')](_0xaf612d,'name');_0x487d66[_0x733a('0x33')]=_[_0x733a('0x34')](_0x9eb744[_0x733a('0x33')]);_0x487d66[_0x733a('0x35')]=_[_0x733a('0x36')](_0x487d66[_0x733a('0x32')],_0x487d66[_0x733a('0x33')]);_0x269e7d[_0x733a('0x37')]=_[_0x733a('0x36')](_0x487d66[_0x733a('0x32')],qs[_0x733a('0x38')](_0x9eb744['query'][_0x733a('0x38')]));_0x269e7d['attributes']=_0x269e7d[_0x733a('0x37')][_0x733a('0x39')]?_0x269e7d['attributes']:_0x487d66[_0x733a('0x32')];if(!_0x9eb744['query']['hasOwnProperty']('nolimit')){_0x269e7d['limit']=qs[_0x733a('0x21')](_0x9eb744[_0x733a('0x33')][_0x733a('0x21')]);_0x269e7d[_0x733a('0x1e')]=qs['offset'](_0x9eb744[_0x733a('0x33')][_0x733a('0x1e')]);}_0x269e7d['order']=qs['sort'](_0x9eb744[_0x733a('0x33')][_0x733a('0x3a')]);_0x269e7d['where']=qs[_0x733a('0x35')](_[_0x733a('0x3b')](_0x9eb744['query'],_0x487d66[_0x733a('0x35')]),_0xaf612d);if(_0x9eb744[_0x733a('0x33')][_0x733a('0x3c')]){_0x269e7d['where']=_[_0x733a('0x3d')](_0x269e7d[_0x733a('0x3e')],{'$or':_[_0x733a('0x2e')](_0xaf612d,function(_0x5eac59){if(_0x5eac59[_0x733a('0x3f')]!==_0x733a('0x40')){var _0x4e2596={};_0x4e2596[_0x5eac59[_0x733a('0x2d')]]={'$like':'%'+_0x9eb744[_0x733a('0x33')][_0x733a('0x3c')]+'%'};return _0x4e2596;}})});}_0x269e7d=_['merge']({},_0x269e7d,_0x9eb744[_0x733a('0x41')]);var _0x2b4882={'where':_0x269e7d[_0x733a('0x3e')]};return db[_0x733a('0x2f')][_0x733a('0x20')](_0x2b4882)[_0x733a('0x28')](function(_0x2bb7f6){_0x54c6a5[_0x733a('0x20')]=_0x2bb7f6;if(_0x9eb744[_0x733a('0x33')][_0x733a('0x42')]){_0x269e7d['include']=[{'all':!![]}];}return db[_0x733a('0x2f')][_0x733a('0x43')](_0x269e7d);})[_0x733a('0x28')](function(_0x557876){_0x54c6a5[_0x733a('0x44')]=_0x557876;return _0x54c6a5;})[_0x733a('0x28')](respondWithFilteredResult(_0x148eb8,_0x269e7d))[_0x733a('0x45')](handleError(_0x148eb8,null));};exports[_0x733a('0x46')]=function(_0x5a788b,_0x267706){var _0x988be5={'raw':![],'where':{'id':_0x5a788b[_0x733a('0x47')]['id']}},_0x54c815={};_0x54c815[_0x733a('0x32')]=_['keys'](db[_0x733a('0x2f')][_0x733a('0x30')]);_0x54c815[_0x733a('0x33')]=_[_0x733a('0x34')](_0x5a788b[_0x733a('0x33')]);_0x54c815['filters']=_[_0x733a('0x36')](_0x54c815[_0x733a('0x32')],_0x54c815[_0x733a('0x33')]);_0x988be5[_0x733a('0x37')]=_[_0x733a('0x36')](_0x54c815[_0x733a('0x32')],qs['fields'](_0x5a788b[_0x733a('0x33')][_0x733a('0x38')]));_0x988be5[_0x733a('0x37')]=_0x988be5['attributes'][_0x733a('0x39')]?_0x988be5[_0x733a('0x37')]:_0x54c815[_0x733a('0x32')];if(_0x5a788b[_0x733a('0x33')][_0x733a('0x42')]){_0x988be5[_0x733a('0x48')]=[{'all':!![]}];}_0x988be5=_[_0x733a('0x3d')]({},_0x988be5,_0x5a788b['options']);return db['Dashboard'][_0x733a('0x49')](_0x988be5)['then'](handleEntityNotFound(_0x267706,null))[_0x733a('0x28')](respondWithResult(_0x267706,null))['catch'](handleError(_0x267706,null));};exports[_0x733a('0x4a')]=function(_0x336183,_0x22398f){return db[_0x733a('0x2f')][_0x733a('0x4a')](_0x336183[_0x733a('0x4b')],{})[_0x733a('0x28')](function(_0x1a4fa7){var _0xcbbe2d=_0x336183[_0x733a('0x4c')][_0x733a('0x4d')]({'plain':!![]});if(!_0xcbbe2d)throw new Error(_0x733a('0x4e'));if(_0xcbbe2d[_0x733a('0x4f')]===_0x733a('0x4c')){var _0x5d3f66=_0x1a4fa7[_0x733a('0x4d')]({'plain':!![]});var _0xc22e50=_0x733a('0x29');return db[_0x733a('0x50')][_0x733a('0x49')]({'where':{'name':_0xc22e50,'userProfileId':_0xcbbe2d[_0x733a('0x51')]},'raw':!![]})['then'](function(_0x451b9e){if(_0x451b9e&&_0x451b9e[_0x733a('0x52')]===0x0){return db['UserProfileResource'][_0x733a('0x4a')]({'name':_0x5d3f66[_0x733a('0x2d')],'resourceId':_0x5d3f66['id'],'type':_0x451b9e[_0x733a('0x2d')],'sectionId':_0x451b9e['id']},{})[_0x733a('0x28')](function(){return _0x1a4fa7;});}else{return _0x1a4fa7;}})[_0x733a('0x45')](function(_0x20eda1){logger['error'](_0x733a('0x53'),_0x20eda1);throw _0x20eda1;});}return _0x1a4fa7;})['then'](respondWithResult(_0x22398f,0xc9))[_0x733a('0x45')](handleError(_0x22398f,null));};exports['clone']=function(_0x55ac19,_0x30cf8c){var _0x5b9740={'where':{'id':_0x55ac19[_0x733a('0x47')]['id']}},_0x3c7fe5={};_0x3c7fe5['model']=_[_0x733a('0x34')](db['Dashboard']['rawAttributes']);_0x5b9740[_0x733a('0x37')]=_[_0x733a('0x36')](_0x3c7fe5[_0x733a('0x32')],qs[_0x733a('0x38')](_0x55ac19['query'][_0x733a('0x38')]));_0x5b9740[_0x733a('0x37')]=_0x5b9740[_0x733a('0x37')][_0x733a('0x39')]?_0x5b9740[_0x733a('0x37')]:_0x3c7fe5[_0x733a('0x32')];if(_0x55ac19[_0x733a('0x33')]['includeAll']){_0x5b9740[_0x733a('0x48')]=[{'all':!![]}];}_0x5b9740=_[_0x733a('0x3d')]({},_0x5b9740,_0x55ac19[_0x733a('0x41')]);return db['Dashboard'][_0x733a('0x49')](_0x5b9740)[_0x733a('0x28')](handleEntityNotFound(_0x30cf8c,null))['then'](function(_0x43f7d0){if(_0x43f7d0){var _0x5a2dfe=_0x43f7d0['get']({'plain':!![]});_0x5a2dfe=qs[_0x733a('0x54')](_0x5a2dfe,['id',_0x733a('0x55'),_0x733a('0x56')]);_0x55ac19[_0x733a('0x4b')]=_[_0x733a('0x54')](_0x55ac19[_0x733a('0x4b')],['id',_0x733a('0x55'),_0x733a('0x56')]);return db[_0x733a('0x2f')]['create'](_[_0x733a('0x3d')](_0x5a2dfe,_0x55ac19[_0x733a('0x4b')]),{'include':_0x55ac19[_0x733a('0x33')][_0x733a('0x42')]?[{'all':!![]}]:undefined})[_0x733a('0x28')](function(_0x19eed8){var _0x4003d8=_0x55ac19['user']['get']({'plain':!![]});if(!_0x4003d8)throw new Error(_0x733a('0x4e'));if(_0x4003d8[_0x733a('0x4f')]==='user'){var _0x4df83d=_0x19eed8['get']({'plain':!![]});var _0x496d17=_0x733a('0x29');return db[_0x733a('0x50')][_0x733a('0x49')]({'where':{'name':_0x496d17,'userProfileId':_0x4003d8[_0x733a('0x51')]},'raw':!![]})[_0x733a('0x28')](function(_0x374be2){if(_0x374be2&&_0x374be2[_0x733a('0x52')]===0x0){return db[_0x733a('0x2a')]['create']({'name':_0x4df83d['name'],'resourceId':_0x4df83d['id'],'type':_0x374be2['name'],'sectionId':_0x374be2['id']},{})[_0x733a('0x28')](function(){return _0x19eed8;});}else{return _0x19eed8;}})[_0x733a('0x45')](function(_0xddf4b1){logger['error'](_0x733a('0x53'),_0xddf4b1);throw _0xddf4b1;});}return _0x19eed8;});}})[_0x733a('0x28')](respondWithResult(_0x30cf8c,0xc9))[_0x733a('0x45')](handleError(_0x30cf8c,null));};exports[_0x733a('0x27')]=function(_0x3fd236,_0x44c67c){if(_0x3fd236[_0x733a('0x4b')]['id']){delete _0x3fd236['body']['id'];}return db[_0x733a('0x2f')]['find']({'where':{'id':_0x3fd236[_0x733a('0x47')]['id']}})['then'](handleEntityNotFound(_0x44c67c,null))['then'](saveUpdates(_0x3fd236[_0x733a('0x4b')],null))['then'](respondWithResult(_0x44c67c,null))[_0x733a('0x45')](handleError(_0x44c67c,null));};exports['destroy']=function(_0x25612e,_0x47bec6){return db['Dashboard'][_0x733a('0x49')]({'where':{'id':_0x25612e[_0x733a('0x47')]['id']}})[_0x733a('0x28')](handleEntityNotFound(_0x47bec6,null))['then'](removeEntity(_0x47bec6,null))[_0x733a('0x45')](handleError(_0x47bec6,null));};function widgetAttributes(_0x31714b){try{switch(_0x31714b[_0x733a('0x3f')]){case _0x733a('0x57'):return[{'name':'attrUrl','value':_0x31714b[_0x733a('0x58')]||(_0x31714b['attrs']&&_0x31714b['attrs'][0x0]?_0x31714b['attrs'][0x0][_0x733a('0x59')]:undefined)||_0x733a('0x5a')}];case'custom':return[{'name':'attrPath','value':_0x31714b[_0x733a('0x5b')]||(_0x31714b[_0x733a('0x5c')]&&_0x31714b['attrs'][0x0]?_0x31714b[_0x733a('0x5c')][0x0][_0x733a('0x59')]:undefined)||''}];case _0x733a('0x5d'):return[{'name':'attrHourFormat','value':_0x31714b[_0x733a('0x5e')]||(_0x31714b['attrs']&&_0x31714b['attrs'][0x0]?_0x31714b['attrs'][0x0][_0x733a('0x59')]:undefined)||'HH:mm:ss'},{'name':_0x733a('0x5f'),'value':_0x31714b[_0x733a('0x5f')]||(_0x31714b[_0x733a('0x5c')]&&_0x31714b['attrs'][0x1]?_0x31714b[_0x733a('0x5c')][0x1][_0x733a('0x59')]:undefined)||_0x733a('0x60')},{'name':_0x733a('0x61'),'value':_0x31714b['attrFontSize']||(_0x31714b[_0x733a('0x5c')]&&_0x31714b[_0x733a('0x5c')][0x2]?_0x31714b[_0x733a('0x5c')][0x2][_0x733a('0x59')]:undefined)||0xc}];case'counter':return[{'name':'attrMetric','value':_0x31714b[_0x733a('0x62')]||(_0x31714b[_0x733a('0x5c')]&&_0x31714b[_0x733a('0x5c')][0x0]?_0x31714b[_0x733a('0x5c')][0x0][_0x733a('0x59')]:undefined)||'total'},{'name':_0x733a('0x63'),'value':_0x31714b[_0x733a('0x63')]||(_0x31714b[_0x733a('0x5c')]&&_0x31714b[_0x733a('0x5c')][0x1]?_0x31714b[_0x733a('0x5c')][0x1][_0x733a('0x59')]:undefined)||[]},{'name':_0x733a('0x61'),'value':_0x31714b['attrFontSize']||(_0x31714b[_0x733a('0x5c')]&&_0x31714b['attrs'][0x2]?_0x31714b['attrs'][0x2][_0x733a('0x59')]:undefined)||0x14}];case _0x733a('0x64'):case _0x733a('0x65'):return[{'name':_0x733a('0x66'),'value':_0x31714b[_0x733a('0x66')]||(_0x31714b[_0x733a('0x5c')]&&_0x31714b['attrs'][0x0]?_0x31714b[_0x733a('0x5c')][0x0][_0x733a('0x59')]:undefined)||_0x733a('0x67')},{'name':'attrSerie2','value':_0x31714b['attrSerie2']||(_0x31714b[_0x733a('0x5c')]&&_0x31714b['attrs'][0x1]?_0x31714b[_0x733a('0x5c')][0x1]['value']:undefined)||null},{'name':_0x733a('0x68'),'value':_0x31714b['attrSerie3']||(_0x31714b['attrs']&&_0x31714b[_0x733a('0x5c')][0x2]?_0x31714b['attrs'][0x2][_0x733a('0x59')]:undefined)||null},{'name':_0x733a('0x63'),'value':_0x31714b['attrVoiceQueues']||(_0x31714b[_0x733a('0x5c')]&&_0x31714b[_0x733a('0x5c')][0x3]?_0x31714b['attrs'][0x3][_0x733a('0x59')]:undefined)||[]}];case _0x733a('0x69'):return[{'name':_0x733a('0x6a'),'type':_0x31714b[_0x733a('0x6b')]||(_0x31714b[_0x733a('0x5c')]&&_0x31714b[_0x733a('0x5c')][0x0]?_0x31714b['attrs'][0x0][_0x733a('0x3f')]:undefined)||null,'value':_0x31714b[_0x733a('0x6a')]||(_0x31714b[_0x733a('0x5c')]&&_0x31714b[_0x733a('0x5c')][0x0]?_0x31714b[_0x733a('0x5c')][0x0]['value']:undefined)||null},{'name':_0x733a('0x6c'),'value':_0x31714b[_0x733a('0x6c')]||(_0x31714b[_0x733a('0x5c')]&&_0x31714b[_0x733a('0x5c')][0x1]?_0x31714b[_0x733a('0x5c')][0x1][_0x733a('0x59')]:undefined)||0x0}];default:return[];}}catch(_0x220bd4){logger[_0x733a('0x6d')](_0x733a('0x6e'),JSON['stringify'](_0x220bd4));return[];}}exports[_0x733a('0x6f')]=function(_0x262c91,_0xc9de91,_0x24cdfb){if(_0x262c91[_0x733a('0x4b')]['id']){delete _0x262c91[_0x733a('0x4b')]['id'];}return db['Dashboard'][_0x733a('0x49')]({'where':{'id':_0x262c91[_0x733a('0x47')]['id']}})[_0x733a('0x28')](handleEntityNotFound(_0xc9de91,null))[_0x733a('0x28')](function(_0x2e5ba6){if(_0x2e5ba6){_0x262c91['body'][_0x733a('0x70')]=_0x2e5ba6['id'];_0x262c91[_0x733a('0x4b')][_0x733a('0x5c')]=widgetAttributes(_0x262c91[_0x733a('0x4b')]);return db['DashboardItem'][_0x733a('0x4a')](_0x262c91[_0x733a('0x4b')]);}})[_0x733a('0x28')](respondWithResult(_0xc9de91,null))[_0x733a('0x45')](handleError(_0xc9de91,null));};exports[_0x733a('0x71')]=function(_0x54ffc1,_0x4955ef,_0x298128){var _0x2513ca={};var _0x29a525={};var _0x2c56f7;var _0x2f7d17;return db[_0x733a('0x2f')]['findOne']({'where':{'id':_0x54ffc1['params']['id']}})['then'](handleEntityNotFound(_0x4955ef,null))[_0x733a('0x28')](function(_0x5b4e24){if(_0x5b4e24){_0x2c56f7=_0x5b4e24;_0x29a525[_0x733a('0x32')]=_[_0x733a('0x34')](db[_0x733a('0x72')][_0x733a('0x30')]);_0x29a525[_0x733a('0x33')]=_[_0x733a('0x34')](_0x54ffc1['query']);_0x29a525[_0x733a('0x35')]=_['intersection'](_0x29a525['model'],_0x29a525[_0x733a('0x33')]);_0x2513ca['attributes']=_[_0x733a('0x36')](_0x29a525[_0x733a('0x32')],qs['fields'](_0x54ffc1[_0x733a('0x33')][_0x733a('0x38')]));_0x2513ca[_0x733a('0x37')]=_0x2513ca[_0x733a('0x37')]['length']?_0x2513ca['attributes']:_0x29a525[_0x733a('0x32')];_0x2513ca[_0x733a('0x73')]=qs[_0x733a('0x3a')](_0x54ffc1[_0x733a('0x33')]['sort']);_0x2513ca['where']=qs[_0x733a('0x35')](_[_0x733a('0x3b')](_0x54ffc1[_0x733a('0x33')],_0x29a525[_0x733a('0x35')]));if(_0x54ffc1[_0x733a('0x33')][_0x733a('0x3c')]){_0x2513ca[_0x733a('0x3e')]=_[_0x733a('0x3d')](_0x2513ca[_0x733a('0x3e')],{'$or':_[_0x733a('0x2e')](_0x2513ca[_0x733a('0x37')],function(_0x3031d2){var _0x529f72={};_0x529f72[_0x3031d2]={'$like':'%'+_0x54ffc1[_0x733a('0x33')][_0x733a('0x3c')]+'%'};return _0x529f72;})});}_0x2513ca=_[_0x733a('0x3d')]({},_0x2513ca,_0x54ffc1[_0x733a('0x41')]);return _0x2c56f7[_0x733a('0x71')](_0x2513ca);}})[_0x733a('0x28')](function(_0x40722d){if(_0x40722d){_0x2f7d17=_0x40722d[_0x733a('0x39')];if(!_0x54ffc1['query'][_0x733a('0x74')](_0x733a('0x75'))){_0x2513ca['limit']=qs[_0x733a('0x21')](_0x54ffc1[_0x733a('0x33')][_0x733a('0x21')]);_0x2513ca[_0x733a('0x1e')]=qs[_0x733a('0x1e')](_0x54ffc1['query'][_0x733a('0x1e')]);}return _0x2c56f7[_0x733a('0x71')](_0x2513ca);}})[_0x733a('0x28')](function(_0x231366){if(_0x231366){return _0x231366?{'count':_0x2f7d17,'rows':_0x231366}:null;}})[_0x733a('0x28')](respondWithResult(_0x4955ef,null))[_0x733a('0x45')](handleError(_0x4955ef,null));};
\ No newline at end of file
+var _0x238a=['fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','json','offset','undefined','count','limit','set','apply','reject','save','then','UserProfileResource','destroy','end','error','stack','name','send','map','Dashboard','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','CustomDashboards','UserProfileSection','update','iframe','attrUrl','attrs','value','custom','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','attrMetric','total','attrVoiceQueues','multibar-chart','attrSerie1','attrSerie2','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','addItem','DashboardId','DashboardItem','getItems','length','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs'];(function(_0x22cc9a,_0xda386f){var _0x1d98d3=function(_0x560ed6){while(--_0x560ed6){_0x22cc9a['push'](_0x22cc9a['shift']());}};_0x1d98d3(++_0xda386f);}(_0x238a,0x71));var _0xa238=function(_0x289e64,_0x5adb3c){_0x289e64=_0x289e64-0x0;var _0x30246c=_0x238a[_0x289e64];return _0x30246c;};'use strict';var emlformat=require(_0xa238('0x0'));var rimraf=require(_0xa238('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa238('0x2'));var rp=require(_0xa238('0x3'));var moment=require(_0xa238('0x4'));var BPromise=require(_0xa238('0x5'));var Mustache=require(_0xa238('0x6'));var util=require(_0xa238('0x7'));var path=require('path');var sox=require(_0xa238('0x8'));var csv=require(_0xa238('0x9'));var ejs=require(_0xa238('0xa'));var fs=require('fs');var fs_extra=require(_0xa238('0xb'));var _=require(_0xa238('0xc'));var squel=require(_0xa238('0xd'));var crypto=require(_0xa238('0xe'));var jsforce=require(_0xa238('0xf'));var deskjs=require(_0xa238('0x10'));var toCsv=require(_0xa238('0x9'));var querystring=require(_0xa238('0x11'));var Papa=require(_0xa238('0x12'));var Redis=require(_0xa238('0x13'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xa238('0x14'));var hardwareService=require(_0xa238('0x15'));var logger=require('../../config/logger')(_0xa238('0x16'));var utils=require(_0xa238('0x17'));var config=require(_0xa238('0x18'));var licenseUtil=require(_0xa238('0x19'));var db=require('../../mysqldb')['db'];config[_0xa238('0x1a')]=_[_0xa238('0x1b')](config[_0xa238('0x1a')],{'host':_0xa238('0x1c'),'port':0x18eb});var socket=require(_0xa238('0x1d'))(new Redis(config['redis']));require('./dashboard.socket')[_0xa238('0x1e')](socket);function respondWithStatusCode(_0x4edf95,_0x2fcb0d){_0x2fcb0d=_0x2fcb0d||0xcc;return function(_0x534420){if(_0x534420){return _0x4edf95[_0xa238('0x1f')](_0x2fcb0d);}return _0x4edf95[_0xa238('0x20')](_0x2fcb0d)['end']();};}function respondWithResult(_0x58a38f,_0x21a7fd){_0x21a7fd=_0x21a7fd||0xc8;return function(_0x1fa94c){if(_0x1fa94c){return _0x58a38f[_0xa238('0x20')](_0x21a7fd)[_0xa238('0x21')](_0x1fa94c);}};}function respondWithFilteredResult(_0x50fade,_0x4831c8){return function(_0x3564c1){if(_0x3564c1){var _0x55515b=typeof _0x4831c8[_0xa238('0x22')]===_0xa238('0x23')&&typeof _0x4831c8['limit']===_0xa238('0x23');var _0x324b7b=_0x3564c1['count'];var _0x3ee591=_0x55515b?0x0:_0x4831c8[_0xa238('0x22')];var _0x2bb188=_0x55515b?_0x3564c1[_0xa238('0x24')]:_0x4831c8[_0xa238('0x22')]+_0x4831c8[_0xa238('0x25')];var _0x2a030;if(_0x2bb188>=_0x324b7b){_0x2bb188=_0x324b7b;_0x2a030=0xc8;}else{_0x2a030=0xce;}_0x50fade['status'](_0x2a030);return _0x50fade[_0xa238('0x26')]('Content-Range',_0x3ee591+'-'+_0x2bb188+'/'+_0x324b7b)[_0xa238('0x21')](_0x3564c1);}return null;};}function patchUpdates(_0x43d3bc){return function(_0x849f7f){try{jsonpatch[_0xa238('0x27')](_0x849f7f,_0x43d3bc,!![]);}catch(_0x281179){return BPromise[_0xa238('0x28')](_0x281179);}return _0x849f7f[_0xa238('0x29')]();};}function saveUpdates(_0x12eefa,_0x44969a){return function(_0x2db937){if(_0x2db937){return _0x2db937['update'](_0x12eefa)[_0xa238('0x2a')](function(_0x4016b4){return _0x4016b4;});}return null;};}function removeEntity(_0x285b54,_0x38fa19){return function(_0x5035fd){if(_0x5035fd){return _0x5035fd['destroy']()[_0xa238('0x2a')](function(){var _0x6692d0=_0x5035fd['get']({'plain':!![]});var _0x485020='CustomDashboards';return db[_0xa238('0x2b')][_0xa238('0x2c')]({'where':{'type':_0x485020,'resourceId':_0x6692d0['id']}})['then'](function(){return _0x5035fd;});})[_0xa238('0x2a')](function(){_0x285b54[_0xa238('0x20')](0xcc)[_0xa238('0x2d')]();});}};}function handleEntityNotFound(_0x489d0d,_0x4b0298){return function(_0x33fe3f){if(!_0x33fe3f){_0x489d0d[_0xa238('0x1f')](0x194);}return _0x33fe3f;};}function handleError(_0x5a5966,_0x3b998a){_0x3b998a=_0x3b998a||0x1f4;return function(_0x33a86c){logger[_0xa238('0x2e')](_0x33a86c[_0xa238('0x2f')]);if(_0x33a86c[_0xa238('0x30')]){delete _0x33a86c[_0xa238('0x30')];}_0x5a5966['status'](_0x3b998a)[_0xa238('0x31')](_0x33a86c);};}exports['index']=function(_0x1ca765,_0x35e350){var _0x3fdb22={},_0x3243cf={},_0x3735c2={'count':0x0,'rows':[]};var _0x98c960=_[_0xa238('0x32')](db[_0xa238('0x33')][_0xa238('0x34')],function(_0x1b882c){return{'name':_0x1b882c[_0xa238('0x35')],'type':_0x1b882c[_0xa238('0x36')][_0xa238('0x37')]};});_0x3243cf['model']=_[_0xa238('0x32')](_0x98c960,_0xa238('0x30'));_0x3243cf[_0xa238('0x38')]=_[_0xa238('0x39')](_0x1ca765[_0xa238('0x38')]);_0x3243cf[_0xa238('0x3a')]=_[_0xa238('0x3b')](_0x3243cf[_0xa238('0x3c')],_0x3243cf[_0xa238('0x38')]);_0x3fdb22['attributes']=_[_0xa238('0x3b')](_0x3243cf[_0xa238('0x3c')],qs[_0xa238('0x3d')](_0x1ca765[_0xa238('0x38')]['fields']));_0x3fdb22[_0xa238('0x3e')]=_0x3fdb22[_0xa238('0x3e')]['length']?_0x3fdb22[_0xa238('0x3e')]:_0x3243cf[_0xa238('0x3c')];if(!_0x1ca765[_0xa238('0x38')][_0xa238('0x3f')](_0xa238('0x40'))){_0x3fdb22[_0xa238('0x25')]=qs[_0xa238('0x25')](_0x1ca765[_0xa238('0x38')][_0xa238('0x25')]);_0x3fdb22['offset']=qs[_0xa238('0x22')](_0x1ca765[_0xa238('0x38')][_0xa238('0x22')]);}_0x3fdb22[_0xa238('0x41')]=qs[_0xa238('0x42')](_0x1ca765[_0xa238('0x38')][_0xa238('0x42')]);_0x3fdb22[_0xa238('0x43')]=qs['filters'](_[_0xa238('0x44')](_0x1ca765[_0xa238('0x38')],_0x3243cf[_0xa238('0x3a')]),_0x98c960);if(_0x1ca765[_0xa238('0x38')][_0xa238('0x45')]){_0x3fdb22[_0xa238('0x43')]=_[_0xa238('0x46')](_0x3fdb22['where'],{'$or':_[_0xa238('0x32')](_0x98c960,function(_0x157b97){if(_0x157b97['type']!==_0xa238('0x47')){var _0x26597f={};_0x26597f[_0x157b97[_0xa238('0x30')]]={'$like':'%'+_0x1ca765[_0xa238('0x38')]['filter']+'%'};return _0x26597f;}})});}_0x3fdb22=_[_0xa238('0x46')]({},_0x3fdb22,_0x1ca765[_0xa238('0x48')]);var _0x2c8261={'where':_0x3fdb22[_0xa238('0x43')]};return db[_0xa238('0x33')][_0xa238('0x24')](_0x2c8261)[_0xa238('0x2a')](function(_0x13bd0a){_0x3735c2[_0xa238('0x24')]=_0x13bd0a;if(_0x1ca765[_0xa238('0x38')][_0xa238('0x49')]){_0x3fdb22[_0xa238('0x4a')]=[{'all':!![]}];}return db[_0xa238('0x33')]['findAll'](_0x3fdb22);})[_0xa238('0x2a')](function(_0x4abadd){_0x3735c2[_0xa238('0x4b')]=_0x4abadd;return _0x3735c2;})['then'](respondWithFilteredResult(_0x35e350,_0x3fdb22))[_0xa238('0x4c')](handleError(_0x35e350,null));};exports[_0xa238('0x4d')]=function(_0x2998b5,_0x370daf){var _0x1975a2={'raw':![],'where':{'id':_0x2998b5[_0xa238('0x4e')]['id']}},_0x1a1ee8={};_0x1a1ee8[_0xa238('0x3c')]=_[_0xa238('0x39')](db[_0xa238('0x33')]['rawAttributes']);_0x1a1ee8['query']=_[_0xa238('0x39')](_0x2998b5[_0xa238('0x38')]);_0x1a1ee8['filters']=_['intersection'](_0x1a1ee8['model'],_0x1a1ee8['query']);_0x1975a2[_0xa238('0x3e')]=_[_0xa238('0x3b')](_0x1a1ee8[_0xa238('0x3c')],qs['fields'](_0x2998b5[_0xa238('0x38')][_0xa238('0x3d')]));_0x1975a2[_0xa238('0x3e')]=_0x1975a2['attributes']['length']?_0x1975a2[_0xa238('0x3e')]:_0x1a1ee8[_0xa238('0x3c')];if(_0x2998b5[_0xa238('0x38')][_0xa238('0x49')]){_0x1975a2[_0xa238('0x4a')]=[{'all':!![]}];}_0x1975a2=_[_0xa238('0x46')]({},_0x1975a2,_0x2998b5['options']);return db['Dashboard'][_0xa238('0x4f')](_0x1975a2)[_0xa238('0x2a')](handleEntityNotFound(_0x370daf,null))[_0xa238('0x2a')](respondWithResult(_0x370daf,null))[_0xa238('0x4c')](handleError(_0x370daf,null));};exports[_0xa238('0x50')]=function(_0x57ae15,_0x5cdd4e){return db[_0xa238('0x33')][_0xa238('0x50')](_0x57ae15[_0xa238('0x51')],{})['then'](function(_0x3b3325){var _0x177d39=_0x57ae15[_0xa238('0x52')][_0xa238('0x53')]({'plain':!![]});if(!_0x177d39)throw new Error(_0xa238('0x54'));if(_0x177d39[_0xa238('0x55')]===_0xa238('0x52')){var _0x495cb2=_0x3b3325[_0xa238('0x53')]({'plain':!![]});var _0x257c89='CustomDashboards';return db['UserProfileSection'][_0xa238('0x4f')]({'where':{'name':_0x257c89,'userProfileId':_0x177d39[_0xa238('0x56')]},'raw':!![]})[_0xa238('0x2a')](function(_0x4c38a9){if(_0x4c38a9&&_0x4c38a9[_0xa238('0x57')]===0x0){return db[_0xa238('0x2b')][_0xa238('0x50')]({'name':_0x495cb2['name'],'resourceId':_0x495cb2['id'],'type':_0x4c38a9[_0xa238('0x30')],'sectionId':_0x4c38a9['id']},{})['then'](function(){return _0x3b3325;});}else{return _0x3b3325;}})['catch'](function(_0x292ccd){logger['error'](_0xa238('0x58'),_0x292ccd);throw _0x292ccd;});}return _0x3b3325;})[_0xa238('0x2a')](respondWithResult(_0x5cdd4e,0xc9))[_0xa238('0x4c')](handleError(_0x5cdd4e,null));};exports[_0xa238('0x59')]=function(_0x60ea22,_0x2bef30){var _0x4d085a={'where':{'id':_0x60ea22[_0xa238('0x4e')]['id']}},_0x1bf9e3={};_0x1bf9e3['model']=_[_0xa238('0x39')](db[_0xa238('0x33')]['rawAttributes']);_0x4d085a[_0xa238('0x3e')]=_['intersection'](_0x1bf9e3[_0xa238('0x3c')],qs[_0xa238('0x3d')](_0x60ea22[_0xa238('0x38')][_0xa238('0x3d')]));_0x4d085a['attributes']=_0x4d085a['attributes']['length']?_0x4d085a[_0xa238('0x3e')]:_0x1bf9e3['model'];if(_0x60ea22['query'][_0xa238('0x49')]){_0x4d085a[_0xa238('0x4a')]=[{'all':!![]}];}_0x4d085a=_[_0xa238('0x46')]({},_0x4d085a,_0x60ea22[_0xa238('0x48')]);return db[_0xa238('0x33')]['find'](_0x4d085a)[_0xa238('0x2a')](handleEntityNotFound(_0x2bef30,null))[_0xa238('0x2a')](function(_0x96c56){if(_0x96c56){var _0x2c1edf=_0x96c56[_0xa238('0x53')]({'plain':!![]});_0x2c1edf=qs[_0xa238('0x5a')](_0x2c1edf,['id',_0xa238('0x5b'),_0xa238('0x5c')]);_0x60ea22[_0xa238('0x51')]=_[_0xa238('0x5a')](_0x60ea22[_0xa238('0x51')],['id','createdAt',_0xa238('0x5c')]);return db['Dashboard'][_0xa238('0x50')](_['merge'](_0x2c1edf,_0x60ea22['body']),{'include':_0x60ea22[_0xa238('0x38')]['includeAll']?[{'all':!![]}]:undefined})['then'](function(_0x5e745d){var _0x3fe8de=_0x60ea22['user'][_0xa238('0x53')]({'plain':!![]});if(!_0x3fe8de)throw new Error(_0xa238('0x54'));if(_0x3fe8de[_0xa238('0x55')]===_0xa238('0x52')){var _0x18010c=_0x5e745d[_0xa238('0x53')]({'plain':!![]});var _0x170d4b=_0xa238('0x5d');return db[_0xa238('0x5e')][_0xa238('0x4f')]({'where':{'name':_0x170d4b,'userProfileId':_0x3fe8de['userProfileId']},'raw':!![]})[_0xa238('0x2a')](function(_0x32529f){if(_0x32529f&&_0x32529f[_0xa238('0x57')]===0x0){return db[_0xa238('0x2b')][_0xa238('0x50')]({'name':_0x18010c[_0xa238('0x30')],'resourceId':_0x18010c['id'],'type':_0x32529f[_0xa238('0x30')],'sectionId':_0x32529f['id']},{})[_0xa238('0x2a')](function(){return _0x5e745d;});}else{return _0x5e745d;}})[_0xa238('0x4c')](function(_0x4cd2d9){logger[_0xa238('0x2e')](_0xa238('0x58'),_0x4cd2d9);throw _0x4cd2d9;});}return _0x5e745d;});}})[_0xa238('0x2a')](respondWithResult(_0x2bef30,0xc9))[_0xa238('0x4c')](handleError(_0x2bef30,null));};exports[_0xa238('0x5f')]=function(_0x1b33fa,_0x338cfd){if(_0x1b33fa['body']['id']){delete _0x1b33fa[_0xa238('0x51')]['id'];}return db[_0xa238('0x33')][_0xa238('0x4f')]({'where':{'id':_0x1b33fa['params']['id']}})[_0xa238('0x2a')](handleEntityNotFound(_0x338cfd,null))[_0xa238('0x2a')](saveUpdates(_0x1b33fa[_0xa238('0x51')],null))[_0xa238('0x2a')](respondWithResult(_0x338cfd,null))[_0xa238('0x4c')](handleError(_0x338cfd,null));};exports[_0xa238('0x2c')]=function(_0x4ac5f3,_0x144fba){return db['Dashboard'][_0xa238('0x4f')]({'where':{'id':_0x4ac5f3['params']['id']}})[_0xa238('0x2a')](handleEntityNotFound(_0x144fba,null))[_0xa238('0x2a')](removeEntity(_0x144fba,null))[_0xa238('0x4c')](handleError(_0x144fba,null));};function widgetAttributes(_0x4fc026){try{switch(_0x4fc026[_0xa238('0x36')]){case _0xa238('0x60'):return[{'name':_0xa238('0x61'),'value':_0x4fc026[_0xa238('0x61')]||(_0x4fc026[_0xa238('0x62')]&&_0x4fc026['attrs'][0x0]?_0x4fc026[_0xa238('0x62')][0x0][_0xa238('0x63')]:undefined)||'https://'}];case _0xa238('0x64'):return[{'name':'attrPath','value':_0x4fc026['attrPath']||(_0x4fc026[_0xa238('0x62')]&&_0x4fc026[_0xa238('0x62')][0x0]?_0x4fc026[_0xa238('0x62')][0x0][_0xa238('0x63')]:undefined)||''}];case _0xa238('0x65'):return[{'name':'attrHourFormat','value':_0x4fc026[_0xa238('0x66')]||(_0x4fc026['attrs']&&_0x4fc026[_0xa238('0x62')][0x0]?_0x4fc026[_0xa238('0x62')][0x0][_0xa238('0x63')]:undefined)||_0xa238('0x67')},{'name':'attrTimezone','value':_0x4fc026[_0xa238('0x68')]||(_0x4fc026['attrs']&&_0x4fc026[_0xa238('0x62')][0x1]?_0x4fc026['attrs'][0x1][_0xa238('0x63')]:undefined)||_0xa238('0x69')},{'name':_0xa238('0x6a'),'value':_0x4fc026[_0xa238('0x6a')]||(_0x4fc026['attrs']&&_0x4fc026[_0xa238('0x62')][0x2]?_0x4fc026[_0xa238('0x62')][0x2]['value']:undefined)||0xc}];case'counter':return[{'name':_0xa238('0x6b'),'value':_0x4fc026[_0xa238('0x6b')]||(_0x4fc026['attrs']&&_0x4fc026[_0xa238('0x62')][0x0]?_0x4fc026[_0xa238('0x62')][0x0][_0xa238('0x63')]:undefined)||_0xa238('0x6c')},{'name':_0xa238('0x6d'),'value':_0x4fc026['attrVoiceQueues']||(_0x4fc026['attrs']&&_0x4fc026[_0xa238('0x62')][0x1]?_0x4fc026[_0xa238('0x62')][0x1][_0xa238('0x63')]:undefined)||[]},{'name':'attrFontSize','value':_0x4fc026[_0xa238('0x6a')]||(_0x4fc026[_0xa238('0x62')]&&_0x4fc026['attrs'][0x2]?_0x4fc026[_0xa238('0x62')][0x2][_0xa238('0x63')]:undefined)||0x14}];case _0xa238('0x6e'):case'pie-chart':return[{'name':_0xa238('0x6f'),'value':_0x4fc026['attrSerie1']||(_0x4fc026['attrs']&&_0x4fc026[_0xa238('0x62')][0x0]?_0x4fc026[_0xa238('0x62')][0x0][_0xa238('0x63')]:undefined)||_0xa238('0x6c')},{'name':_0xa238('0x70'),'value':_0x4fc026[_0xa238('0x70')]||(_0x4fc026[_0xa238('0x62')]&&_0x4fc026['attrs'][0x1]?_0x4fc026[_0xa238('0x62')][0x1]['value']:undefined)||null},{'name':'attrSerie3','value':_0x4fc026['attrSerie3']||(_0x4fc026[_0xa238('0x62')]&&_0x4fc026[_0xa238('0x62')][0x2]?_0x4fc026[_0xa238('0x62')][0x2][_0xa238('0x63')]:undefined)||null},{'name':'attrVoiceQueues','value':_0x4fc026[_0xa238('0x6d')]||(_0x4fc026[_0xa238('0x62')]&&_0x4fc026[_0xa238('0x62')][0x3]?_0x4fc026[_0xa238('0x62')][0x3]['value']:undefined)||[]}];case _0xa238('0x71'):return[{'name':_0xa238('0x72'),'type':_0x4fc026[_0xa238('0x73')]||(_0x4fc026[_0xa238('0x62')]&&_0x4fc026['attrs'][0x0]?_0x4fc026[_0xa238('0x62')][0x0][_0xa238('0x36')]:undefined)||null,'value':_0x4fc026[_0xa238('0x72')]||(_0x4fc026[_0xa238('0x62')]&&_0x4fc026[_0xa238('0x62')][0x0]?_0x4fc026[_0xa238('0x62')][0x0][_0xa238('0x63')]:undefined)||null},{'name':'attrRefresh','value':_0x4fc026[_0xa238('0x74')]||(_0x4fc026[_0xa238('0x62')]&&_0x4fc026[_0xa238('0x62')][0x1]?_0x4fc026[_0xa238('0x62')][0x1][_0xa238('0x63')]:undefined)||0x0}];default:return[];}}catch(_0x5bff24){logger[_0xa238('0x2e')](_0xa238('0x75'),JSON[_0xa238('0x76')](_0x5bff24));return[];}}exports[_0xa238('0x77')]=function(_0x383878,_0x557648,_0x5ed818){if(_0x383878[_0xa238('0x51')]['id']){delete _0x383878[_0xa238('0x51')]['id'];}return db[_0xa238('0x33')][_0xa238('0x4f')]({'where':{'id':_0x383878['params']['id']}})[_0xa238('0x2a')](handleEntityNotFound(_0x557648,null))[_0xa238('0x2a')](function(_0x5b737c){if(_0x5b737c){_0x383878[_0xa238('0x51')][_0xa238('0x78')]=_0x5b737c['id'];_0x383878[_0xa238('0x51')][_0xa238('0x62')]=widgetAttributes(_0x383878['body']);return db[_0xa238('0x79')][_0xa238('0x50')](_0x383878['body']);}})[_0xa238('0x2a')](respondWithResult(_0x557648,null))[_0xa238('0x4c')](handleError(_0x557648,null));};exports[_0xa238('0x7a')]=function(_0x2918a8,_0x15ac42,_0x5d8ea3){var _0x513eac={};var _0x1c1ca6={};var _0x3a78dd;var _0x256b13;return db['Dashboard']['findOne']({'where':{'id':_0x2918a8[_0xa238('0x4e')]['id']}})['then'](handleEntityNotFound(_0x15ac42,null))[_0xa238('0x2a')](function(_0x16ef08){if(_0x16ef08){_0x3a78dd=_0x16ef08;_0x1c1ca6['model']=_[_0xa238('0x39')](db[_0xa238('0x79')][_0xa238('0x34')]);_0x1c1ca6[_0xa238('0x38')]=_[_0xa238('0x39')](_0x2918a8['query']);_0x1c1ca6['filters']=_[_0xa238('0x3b')](_0x1c1ca6[_0xa238('0x3c')],_0x1c1ca6[_0xa238('0x38')]);_0x513eac[_0xa238('0x3e')]=_['intersection'](_0x1c1ca6['model'],qs['fields'](_0x2918a8[_0xa238('0x38')][_0xa238('0x3d')]));_0x513eac[_0xa238('0x3e')]=_0x513eac[_0xa238('0x3e')][_0xa238('0x7b')]?_0x513eac[_0xa238('0x3e')]:_0x1c1ca6[_0xa238('0x3c')];_0x513eac[_0xa238('0x41')]=qs[_0xa238('0x42')](_0x2918a8[_0xa238('0x38')]['sort']);_0x513eac[_0xa238('0x43')]=qs['filters'](_[_0xa238('0x44')](_0x2918a8[_0xa238('0x38')],_0x1c1ca6[_0xa238('0x3a')]));if(_0x2918a8[_0xa238('0x38')][_0xa238('0x45')]){_0x513eac[_0xa238('0x43')]=_[_0xa238('0x46')](_0x513eac[_0xa238('0x43')],{'$or':_[_0xa238('0x32')](_0x513eac['attributes'],function(_0x567a67){var _0x345003={};_0x345003[_0x567a67]={'$like':'%'+_0x2918a8[_0xa238('0x38')][_0xa238('0x45')]+'%'};return _0x345003;})});}_0x513eac=_['merge']({},_0x513eac,_0x2918a8['options']);return _0x3a78dd['getItems'](_0x513eac);}})[_0xa238('0x2a')](function(_0x515e33){if(_0x515e33){_0x256b13=_0x515e33[_0xa238('0x7b')];if(!_0x2918a8[_0xa238('0x38')][_0xa238('0x3f')]('nolimit')){_0x513eac[_0xa238('0x25')]=qs['limit'](_0x2918a8['query'][_0xa238('0x25')]);_0x513eac['offset']=qs[_0xa238('0x22')](_0x2918a8[_0xa238('0x38')][_0xa238('0x22')]);}return _0x3a78dd['getItems'](_0x513eac);}})[_0xa238('0x2a')](function(_0x15ea8d){if(_0x15ea8d){return _0x15ea8d?{'count':_0x256b13,'rows':_0x15ea8d}:null;}})[_0xa238('0x2a')](respondWithResult(_0x15ac42,null))[_0xa238('0x4c')](handleError(_0x15ac42,null));};
\ No newline at end of file
index 84186e9..96cb8b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0eda=['setMaxListeners','remove','emit','hook','exports','events','../../mysqldb','Dashboard'];(function(_0x54e143,_0x4a0a3f){var _0xe3d1c3=function(_0x456728){while(--_0x456728){_0x54e143['push'](_0x54e143['shift']());}};_0xe3d1c3(++_0x4a0a3f);}(_0x0eda,0x85));var _0xa0ed=function(_0x2e0439,_0x4206d7){_0x2e0439=_0x2e0439-0x0;var _0x164d25=_0x0eda[_0x2e0439];return _0x164d25;};'use strict';var EventEmitter=require(_0xa0ed('0x0'));var Dashboard=require(_0xa0ed('0x1'))['db'][_0xa0ed('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents[_0xa0ed('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xa0ed('0x4')};function emitEvent(_0xb3c849){return function(_0x2e5cb4,_0x45ecd6,_0x35f9b8){DashboardEvents[_0xa0ed('0x5')](_0xb3c849+':'+_0x2e5cb4['id'],_0x2e5cb4);DashboardEvents[_0xa0ed('0x5')](_0xb3c849,_0x2e5cb4);_0x35f9b8(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Dashboard[_0xa0ed('0x6')](e,emitEvent(event));}}module[_0xa0ed('0x7')]=DashboardEvents;
\ No newline at end of file
+var _0x7172=['update','remove','emit','hook','exports','Dashboard','save'];(function(_0x57014b,_0x360c0f){var _0x2b258a=function(_0x52c4a3){while(--_0x52c4a3){_0x57014b['push'](_0x57014b['shift']());}};_0x2b258a(++_0x360c0f);}(_0x7172,0x1ef));var _0x2717=function(_0x4b25bb,_0x2a86e9){_0x4b25bb=_0x4b25bb-0x0;var _0x19c1ba=_0x7172[_0x4b25bb];return _0x19c1ba;};'use strict';var EventEmitter=require('events');var Dashboard=require('../../mysqldb')['db'][_0x2717('0x0')];var DashboardEvents=new EventEmitter();DashboardEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x2717('0x1'),'afterUpdate':_0x2717('0x2'),'afterDestroy':_0x2717('0x3')};function emitEvent(_0x349ec6){return function(_0x772f4,_0x283b00,_0x2b3c58){DashboardEvents[_0x2717('0x4')](_0x349ec6+':'+_0x772f4['id'],_0x772f4);DashboardEvents[_0x2717('0x4')](_0x349ec6,_0x772f4);_0x2b3c58(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Dashboard[_0x2717('0x5')](e,emitEvent(event));}}module[_0x2717('0x6')]=DashboardEvents;
\ No newline at end of file
index 30db8a6..245d664 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cba=['./dashboard.attributes','exports','define','Dashboard','dashboards','lodash','util','../../config/logger','moment','bluebird','request-promise','../../config/environment'];(function(_0x9d1040,_0x47cf09){var _0x506702=function(_0x32bc4d){while(--_0x32bc4d){_0x9d1040['push'](_0x9d1040['shift']());}};_0x506702(++_0x47cf09);}(_0x5cba,0x1cd));var _0xa5cb=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x5cba[_0x465a0c];return _0x1e202e;};'use strict';var _=require(_0xa5cb('0x0'));var util=require(_0xa5cb('0x1'));var logger=require(_0xa5cb('0x2'))('api');var moment=require(_0xa5cb('0x3'));var BPromise=require(_0xa5cb('0x4'));var rp=require(_0xa5cb('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xa5cb('0x6'));var attributes=require(_0xa5cb('0x7'));module[_0xa5cb('0x8')]=function(_0x50d450,_0x162446){return _0x50d450[_0xa5cb('0x9')](_0xa5cb('0xa'),attributes,{'tableName':_0xa5cb('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2938=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./dashboard.attributes','define','Dashboard'];(function(_0x36a69c,_0x3d8f2b){var _0x38bc87=function(_0x514aee){while(--_0x514aee){_0x36a69c['push'](_0x36a69c['shift']());}};_0x38bc87(++_0x3d8f2b);}(_0x2938,0xb0));var _0x8293=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2938[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x8293('0x0'));var util=require('util');var logger=require(_0x8293('0x1'))(_0x8293('0x2'));var moment=require(_0x8293('0x3'));var BPromise=require(_0x8293('0x4'));var rp=require(_0x8293('0x5'));var fs=require('fs');var path=require(_0x8293('0x6'));var rimraf=require(_0x8293('0x7'));var config=require('../../config/environment');var attributes=require(_0x8293('0x8'));module['exports']=function(_0x37d7a0,_0x3db329){return _0x37d7a0[_0x8293('0x9')](_0x8293('0xa'),attributes,{'tableName':'dashboards','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0f24d50..add2300 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0327=['../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','redis','defaults','localhost','./dashboard.socket','request','then','Dashboard,\x20%s,\x20%s','request\x20sent','debug','Dashboard,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0327,0x18f));var _0x7032=function(_0x5f0f2c,_0x9817bf){_0x5f0f2c=_0x5f0f2c-0x0;var _0x104e69=_0x0327[_0x5f0f2c];return _0x104e69;};'use strict';var _=require(_0x7032('0x0'));var util=require(_0x7032('0x1'));var moment=require(_0x7032('0x2'));var BPromise=require(_0x7032('0x3'));var rs=require(_0x7032('0x4'));var fs=require('fs');var Redis=require(_0x7032('0x5'));var db=require(_0x7032('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x7032('0x7'))('rpc');var config=require(_0x7032('0x8'));var jayson=require(_0x7032('0x9'));var client=jayson[_0x7032('0xa')]['http']({'port':0x232a});config[_0x7032('0xb')]=_[_0x7032('0xc')](config[_0x7032('0xb')],{'host':_0x7032('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7032('0xb')]));require(_0x7032('0xe'))['register'](socket);function respondWithRpcPromise(_0x226aa1,_0x5e4cf3,_0x35b113){return new BPromise(function(_0x3d8863,_0x172781){return client[_0x7032('0xf')](_0x226aa1,_0x35b113)[_0x7032('0x10')](function(_0x456dc6){logger['info'](_0x7032('0x11'),_0x5e4cf3,_0x7032('0x12'));logger[_0x7032('0x13')](_0x7032('0x14'),_0x5e4cf3,'request\x20sent',JSON['stringify'](_0x456dc6));if(_0x456dc6[_0x7032('0x15')]){if(_0x456dc6['error'][_0x7032('0x16')]===0x1f4){logger[_0x7032('0x15')](_0x7032('0x11'),_0x5e4cf3,_0x456dc6['error'][_0x7032('0x17')]);return _0x172781(_0x456dc6['error'][_0x7032('0x17')]);}logger[_0x7032('0x15')]('Dashboard,\x20%s,\x20%s',_0x5e4cf3,_0x456dc6[_0x7032('0x15')]['message']);return _0x3d8863(_0x456dc6[_0x7032('0x15')][_0x7032('0x17')]);}else{logger[_0x7032('0x18')](_0x7032('0x11'),_0x5e4cf3,'request\x20sent');_0x3d8863(_0x456dc6[_0x7032('0x19')][_0x7032('0x17')]);}})[_0x7032('0x1a')](function(_0x179419){logger[_0x7032('0x15')]('Dashboard,\x20%s,\x20%s',_0x5e4cf3,_0x179419);_0x172781(_0x179419);});});}
\ No newline at end of file
+var _0x2bd9=['lodash','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','localhost','socket.io-emitter','redis','request','then','info','Dashboard,\x20%s,\x20%s','request\x20sent','debug','Dashboard,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x44474f,_0x431580){var _0x427d97=function(_0x53f7d4){while(--_0x53f7d4){_0x44474f['push'](_0x44474f['shift']());}};_0x427d97(++_0x431580);}(_0x2bd9,0x64));var _0x92bd=function(_0x55f20f,_0x5255e6){_0x55f20f=_0x55f20f-0x0;var _0x4cae24=_0x2bd9[_0x55f20f];return _0x4cae24;};'use strict';var _=require(_0x92bd('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x92bd('0x1'));var rs=require(_0x92bd('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x92bd('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x92bd('0x4'))(_0x92bd('0x5'));var config=require(_0x92bd('0x6'));var jayson=require(_0x92bd('0x7'));var client=jayson['client'][_0x92bd('0x8')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0x92bd('0x9'),'port':0x18eb});var socket=require(_0x92bd('0xa'))(new Redis(config[_0x92bd('0xb')]));require('./dashboard.socket')['register'](socket);function respondWithRpcPromise(_0x44bfbf,_0x16d845,_0x2cd9b2){return new BPromise(function(_0x5a1410,_0x2e0fc4){return client[_0x92bd('0xc')](_0x44bfbf,_0x2cd9b2)[_0x92bd('0xd')](function(_0xa2b4e9){logger[_0x92bd('0xe')](_0x92bd('0xf'),_0x16d845,_0x92bd('0x10'));logger[_0x92bd('0x11')](_0x92bd('0x12'),_0x16d845,_0x92bd('0x10'),JSON[_0x92bd('0x13')](_0xa2b4e9));if(_0xa2b4e9[_0x92bd('0x14')]){if(_0xa2b4e9['error'][_0x92bd('0x15')]===0x1f4){logger['error'](_0x92bd('0xf'),_0x16d845,_0xa2b4e9['error'][_0x92bd('0x16')]);return _0x2e0fc4(_0xa2b4e9[_0x92bd('0x14')][_0x92bd('0x16')]);}logger[_0x92bd('0x14')](_0x92bd('0xf'),_0x16d845,_0xa2b4e9[_0x92bd('0x14')][_0x92bd('0x16')]);return _0x5a1410(_0xa2b4e9[_0x92bd('0x14')][_0x92bd('0x16')]);}else{logger[_0x92bd('0xe')](_0x92bd('0xf'),_0x16d845,_0x92bd('0x10'));_0x5a1410(_0xa2b4e9[_0x92bd('0x17')][_0x92bd('0x16')]);}})[_0x92bd('0x18')](function(_0x2fa279){logger['error'](_0x92bd('0xf'),_0x16d845,_0x2fa279);_0x2e0fc4(_0x2fa279);});});}
\ No newline at end of file
index 36fce85..4c7a134 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6873=['dashboard:','save','remove','update','emit','removeListener','register'];(function(_0x2b3aee,_0x483575){var _0x1c62ee=function(_0x207b1f){while(--_0x207b1f){_0x2b3aee['push'](_0x2b3aee['shift']());}};_0x1c62ee(++_0x483575);}(_0x6873,0x19e));var _0x3687=function(_0x8abd64,_0x539570){_0x8abd64=_0x8abd64-0x0;var _0xd2511e=_0x6873[_0x8abd64];return _0xd2511e;};'use strict';var DashboardEvents=require('./dashboard.events');var events=[_0x3687('0x0'),_0x3687('0x1'),_0x3687('0x2')];function createListener(_0x1b098e,_0x3339eb){return function(_0x1cb8a3){_0x3339eb[_0x3687('0x3')](_0x1b098e,_0x1cb8a3);};}function removeListener(_0x520e9b,_0x22b559){return function(){DashboardEvents[_0x3687('0x4')](_0x520e9b,_0x22b559);};}exports[_0x3687('0x5')]=function(_0xe91f50){for(var _0x3ade96=0x0,_0x3a087e=events['length'];_0x3ade96<_0x3a087e;_0x3ade96++){var _0x2a8107=events[_0x3ade96];var _0x27417c=createListener(_0x3687('0x6')+_0x2a8107,_0xe91f50);DashboardEvents['on'](_0x2a8107,_0x27417c);}};
\ No newline at end of file
+var _0x5724=['removeListener','register','length','./dashboard.events','remove'];(function(_0x51020b,_0x38c2c7){var _0x371e47=function(_0x2a538f){while(--_0x2a538f){_0x51020b['push'](_0x51020b['shift']());}};_0x371e47(++_0x38c2c7);}(_0x5724,0x1a7));var _0x4572=function(_0x16c4c4,_0xd3153b){_0x16c4c4=_0x16c4c4-0x0;var _0xd04663=_0x5724[_0x16c4c4];return _0xd04663;};'use strict';var DashboardEvents=require(_0x4572('0x0'));var events=['save',_0x4572('0x1'),'update'];function createListener(_0x8879d0,_0x48bded){return function(_0x324e14){_0x48bded['emit'](_0x8879d0,_0x324e14);};}function removeListener(_0x3ec23d,_0x456442){return function(){DashboardEvents[_0x4572('0x2')](_0x3ec23d,_0x456442);};}exports[_0x4572('0x3')]=function(_0x196665){for(var _0x1f34d7=0x0,_0x3482a8=events[_0x4572('0x4')];_0x1f34d7<_0x3482a8;_0x1f34d7++){var _0x2b26b8=events[_0x1f34d7];var _0x5e1f46=createListener('dashboard:'+_0x2b26b8,_0x196665);DashboardEvents['on'](_0x2b26b8,_0x5e1f46);}};
\ No newline at end of file
index e93aa28..6adeb8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f6b=['index','show','getItems','create','post','/:id/clone','addItem','put','delete','destroy','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboard.controller','get','isAuthenticated'];(function(_0x553fe0,_0xc8495f){var _0x4952ae=function(_0x270b34){while(--_0x270b34){_0x553fe0['push'](_0x553fe0['shift']());}};_0x4952ae(++_0xc8495f);}(_0x2f6b,0xf2));var _0xb2f6=function(_0x1a72f3,_0x217011){_0x1a72f3=_0x1a72f3-0x0;var _0x57ef47=_0x2f6b[_0x1a72f3];return _0x57ef47;};'use strict';var multer=require(_0xb2f6('0x0'));var util=require(_0xb2f6('0x1'));var path=require('path');var timeout=require(_0xb2f6('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xb2f6('0x3'));var auth=require(_0xb2f6('0x4'));var interaction=require(_0xb2f6('0x5'));var config=require(_0xb2f6('0x6'));var controller=require(_0xb2f6('0x7'));router[_0xb2f6('0x8')]('/',auth[_0xb2f6('0x9')](),controller[_0xb2f6('0xa')]);router[_0xb2f6('0x8')]('/:id',auth['isAuthenticated'](),controller[_0xb2f6('0xb')]);router[_0xb2f6('0x8')]('/:id/items',auth['isAuthenticated'](),controller[_0xb2f6('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0xb2f6('0xd')]);router[_0xb2f6('0xe')](_0xb2f6('0xf'),auth[_0xb2f6('0x9')](),controller['clone']);router[_0xb2f6('0xe')]('/:id/items',auth[_0xb2f6('0x9')](),controller[_0xb2f6('0x10')]);router[_0xb2f6('0x11')]('/:id',auth[_0xb2f6('0x9')](),controller['update']);router[_0xb2f6('0x12')]('/:id',auth[_0xb2f6('0x9')](),controller[_0xb2f6('0x13')]);module[_0xb2f6('0x14')]=router;
\ No newline at end of file
+var _0xe721=['show','/:id/items','getItems','post','create','/:id/clone','clone','addItem','put','/:id','update','delete','destroy','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','./dashboard.controller','get','isAuthenticated','index'];(function(_0x44e4af,_0xc77cfb){var _0x288203=function(_0x51a210){while(--_0x51a210){_0x44e4af['push'](_0x44e4af['shift']());}};_0x288203(++_0xc77cfb);}(_0xe721,0xe6));var _0x1e72=function(_0x56574a,_0x230873){_0x56574a=_0x56574a-0x0;var _0x3b9fed=_0xe721[_0x56574a];return _0x3b9fed;};'use strict';var multer=require(_0x1e72('0x0'));var util=require(_0x1e72('0x1'));var path=require('path');var timeout=require(_0x1e72('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x1e72('0x3'));var auth=require(_0x1e72('0x4'));var interaction=require(_0x1e72('0x5'));var config=require('../../config/environment');var controller=require(_0x1e72('0x6'));router[_0x1e72('0x7')]('/',auth[_0x1e72('0x8')](),controller[_0x1e72('0x9')]);router['get']('/:id',auth[_0x1e72('0x8')](),controller[_0x1e72('0xa')]);router['get'](_0x1e72('0xb'),auth[_0x1e72('0x8')](),controller[_0x1e72('0xc')]);router[_0x1e72('0xd')]('/',auth['isAuthenticated'](),controller[_0x1e72('0xe')]);router['post'](_0x1e72('0xf'),auth[_0x1e72('0x8')](),controller[_0x1e72('0x10')]);router[_0x1e72('0xd')](_0x1e72('0xb'),auth[_0x1e72('0x8')](),controller[_0x1e72('0x11')]);router[_0x1e72('0x12')](_0x1e72('0x13'),auth[_0x1e72('0x8')](),controller[_0x1e72('0x14')]);router[_0x1e72('0x15')](_0x1e72('0x13'),auth['isAuthenticated'](),controller[_0x1e72('0x16')]);module[_0x1e72('0x17')]=router;
\ No newline at end of file
index 35b2b78..df62bf4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1883=['stringify','INTEGER','#ffffff','sequelize','squel','lodash','exports','STRING','TEXT','long','parse','getDataValue','attrs','setDataValue'];(function(_0x44afa4,_0x5be27b){var _0xcad289=function(_0x206272){while(--_0x206272){_0x44afa4['push'](_0x44afa4['shift']());}};_0xcad289(++_0x5be27b);}(_0x1883,0xab));var _0x3188=function(_0x5e5a8a,_0x2ddd14){_0x5e5a8a=_0x5e5a8a-0x0;var _0x47599a=_0x1883[_0x5e5a8a];return _0x47599a;};'use strict';var Sequelize=require(_0x3188('0x0'));var squel=require(_0x3188('0x1'));var _=require(_0x3188('0x2'));module[_0x3188('0x3')]={'title':{'type':Sequelize[_0x3188('0x4')],'allowNull':![]},'type':{'type':Sequelize[_0x3188('0x4')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x3188('0x5')](_0x3188('0x6')),'get':function(){try{return JSON[_0x3188('0x7')](this[_0x3188('0x8')](_0x3188('0x9')));}catch(_0x345612){return[];}},'set':function(_0x408ae0){try{this[_0x3188('0xa')](_0x3188('0x9'),JSON[_0x3188('0xb')](_0x408ae0));}catch(_0x3e3afb){this['setDataValue'](_0x3188('0x9'),JSON[_0x3188('0xb')]([]));}}},'sizeX':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x3188('0xc')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize['INTEGER']},'col':{'type':Sequelize[_0x3188('0xc')]},'background':{'type':Sequelize[_0x3188('0x4')],'allowNull':![],'defaultValue':_0x3188('0xd'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x3188('0x4')],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x3188('0x4')]},'titleFontSize':{'type':Sequelize[_0x3188('0xc')],'defaultValue':0xc}};
\ No newline at end of file
+var _0x687b=['sequelize','squel','lodash','exports','TEXT','long','parse','getDataValue','attrs','setDataValue','stringify','INTEGER','STRING','#ffffff','#2196f3'];(function(_0x1f932e,_0x1e623b){var _0x39898e=function(_0x218cd1){while(--_0x218cd1){_0x1f932e['push'](_0x1f932e['shift']());}};_0x39898e(++_0x1e623b);}(_0x687b,0x14a));var _0xb687=function(_0x3a5da5,_0x58eaa0){_0x3a5da5=_0x3a5da5-0x0;var _0x2de0e5=_0x687b[_0x3a5da5];return _0x2de0e5;};'use strict';var Sequelize=require(_0xb687('0x0'));var squel=require(_0xb687('0x1'));var _=require(_0xb687('0x2'));module[_0xb687('0x3')]={'title':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['STRING'](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0xb687('0x4')](_0xb687('0x5')),'get':function(){try{return JSON[_0xb687('0x6')](this[_0xb687('0x7')](_0xb687('0x8')));}catch(_0x194c55){return[];}},'set':function(_0x16ccf3){try{this[_0xb687('0x9')](_0xb687('0x8'),JSON[_0xb687('0xa')](_0x16ccf3));}catch(_0x48942b){this[_0xb687('0x9')](_0xb687('0x8'),JSON['stringify']([]));}}},'sizeX':{'type':Sequelize[_0xb687('0xb')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0xb687('0xb')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0xb687('0xb')]},'col':{'type':Sequelize[_0xb687('0xb')]},'background':{'type':Sequelize[_0xb687('0xc')],'allowNull':![],'defaultValue':_0xb687('0xd'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0xb687('0xc')],'allowNull':![],'defaultValue':_0xb687('0xe'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0xb687('0xc')]},'titleFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc}};
\ No newline at end of file
index 2630646..4464c5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc30=['intersection','attributes','fields','query','includeAll','merge','options','find','catch','iframe','attrUrl','attrs','https://','attrPath','value','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','attrMetric','total','attrVoiceQueues','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','create','body','eml-format','rimraf','zip-dir','moment','bluebird','mustache','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','show','params','model','DashboardItem','keys'];(function(_0x32f057,_0x1a441a){var _0x5303c2=function(_0x2efd49){while(--_0x2efd49){_0x32f057['push'](_0x32f057['shift']());}};_0x5303c2(++_0x1a441a);}(_0xfc30,0xd8));var _0x0fc3=function(_0x456f79,_0x303e8b){_0x456f79=_0x456f79-0x0;var _0x57c261=_0xfc30[_0x456f79];return _0x57c261;};'use strict';var emlformat=require(_0x0fc3('0x0'));var rimraf=require(_0x0fc3('0x1'));var zipdir=require(_0x0fc3('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0fc3('0x3'));var BPromise=require(_0x0fc3('0x4'));var Mustache=require(_0x0fc3('0x5'));var util=require('util');var path=require(_0x0fc3('0x6'));var sox=require(_0x0fc3('0x7'));var csv=require(_0x0fc3('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0fc3('0x9'));var squel=require(_0x0fc3('0xa'));var crypto=require(_0x0fc3('0xb'));var jsforce=require(_0x0fc3('0xc'));var deskjs=require(_0x0fc3('0xd'));var toCsv=require(_0x0fc3('0x8'));var querystring=require(_0x0fc3('0xe'));var Papa=require(_0x0fc3('0xf'));var Redis=require(_0x0fc3('0x10'));var authService=require(_0x0fc3('0x11'));var qs=require(_0x0fc3('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0fc3('0x13'));var logger=require(_0x0fc3('0x14'))('api');var utils=require(_0x0fc3('0x15'));var config=require(_0x0fc3('0x16'));var licenseUtil=require(_0x0fc3('0x17'));var db=require(_0x0fc3('0x18'))['db'];config[_0x0fc3('0x19')]=_[_0x0fc3('0x1a')](config[_0x0fc3('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0x0fc3('0x1b'))(new Redis(config[_0x0fc3('0x19')]));require('./dashboardItem.socket')[_0x0fc3('0x1c')](socket);function respondWithStatusCode(_0x1e4bae,_0x5e49e4){_0x5e49e4=_0x5e49e4||0xcc;return function(_0x2d6d0d){if(_0x2d6d0d){return _0x1e4bae[_0x0fc3('0x1d')](_0x5e49e4);}return _0x1e4bae[_0x0fc3('0x1e')](_0x5e49e4)[_0x0fc3('0x1f')]();};}function respondWithResult(_0x1b1c14,_0x153044){_0x153044=_0x153044||0xc8;return function(_0x31ad6b){if(_0x31ad6b){return _0x1b1c14[_0x0fc3('0x1e')](_0x153044)[_0x0fc3('0x20')](_0x31ad6b);}};}function respondWithFilteredResult(_0x1d8d69,_0x48e997){return function(_0x117e36){if(_0x117e36){var _0x5342db=typeof _0x48e997[_0x0fc3('0x21')]==='undefined'&&typeof _0x48e997['limit']===_0x0fc3('0x22');var _0x33db03=_0x117e36[_0x0fc3('0x23')];var _0x21a075=_0x5342db?0x0:_0x48e997['offset'];var _0x705c46=_0x5342db?_0x117e36['count']:_0x48e997[_0x0fc3('0x21')]+_0x48e997[_0x0fc3('0x24')];var _0xd16e6e;if(_0x705c46>=_0x33db03){_0x705c46=_0x33db03;_0xd16e6e=0xc8;}else{_0xd16e6e=0xce;}_0x1d8d69[_0x0fc3('0x1e')](_0xd16e6e);return _0x1d8d69[_0x0fc3('0x25')](_0x0fc3('0x26'),_0x21a075+'-'+_0x705c46+'/'+_0x33db03)['json'](_0x117e36);}return null;};}function patchUpdates(_0x307dc4){return function(_0x30efad){try{jsonpatch[_0x0fc3('0x27')](_0x30efad,_0x307dc4,!![]);}catch(_0x1a09f7){return BPromise[_0x0fc3('0x28')](_0x1a09f7);}return _0x30efad[_0x0fc3('0x29')]();};}function saveUpdates(_0x2f9dea,_0x50a7b2){return function(_0x3bf2c9){if(_0x3bf2c9){return _0x3bf2c9[_0x0fc3('0x2a')](_0x2f9dea)[_0x0fc3('0x2b')](function(_0x2a1567){return _0x2a1567;});}return null;};}function removeEntity(_0x40010c,_0xf56354){return function(_0x3be557){if(_0x3be557){return _0x3be557[_0x0fc3('0x2c')]()[_0x0fc3('0x2b')](function(){_0x40010c[_0x0fc3('0x1e')](0xcc)[_0x0fc3('0x1f')]();});}};}function handleEntityNotFound(_0x2d7d66,_0x10d9a2){return function(_0x3eee55){if(!_0x3eee55){_0x2d7d66[_0x0fc3('0x1d')](0x194);}return _0x3eee55;};}function handleError(_0x1a474e,_0x4f51b1){_0x4f51b1=_0x4f51b1||0x1f4;return function(_0xfc1069){logger[_0x0fc3('0x2d')](_0xfc1069[_0x0fc3('0x2e')]);if(_0xfc1069[_0x0fc3('0x2f')]){delete _0xfc1069[_0x0fc3('0x2f')];}_0x1a474e[_0x0fc3('0x1e')](_0x4f51b1)[_0x0fc3('0x30')](_0xfc1069);};}exports[_0x0fc3('0x31')]=function(_0x4c247f,_0x2cdb8f){var _0x49c617={'raw':![],'where':{'id':_0x4c247f[_0x0fc3('0x32')]['id']}},_0x14732f={};_0x14732f[_0x0fc3('0x33')]=_['keys'](db[_0x0fc3('0x34')]['rawAttributes']);_0x14732f['query']=_[_0x0fc3('0x35')](_0x4c247f['query']);_0x14732f['filters']=_[_0x0fc3('0x36')](_0x14732f[_0x0fc3('0x33')],_0x14732f['query']);_0x49c617[_0x0fc3('0x37')]=_[_0x0fc3('0x36')](_0x14732f['model'],qs[_0x0fc3('0x38')](_0x4c247f['query']['fields']));_0x49c617[_0x0fc3('0x37')]=_0x49c617[_0x0fc3('0x37')]['length']?_0x49c617[_0x0fc3('0x37')]:_0x14732f[_0x0fc3('0x33')];if(_0x4c247f[_0x0fc3('0x39')][_0x0fc3('0x3a')]){_0x49c617['include']=[{'all':!![]}];}_0x49c617=_[_0x0fc3('0x3b')]({},_0x49c617,_0x4c247f[_0x0fc3('0x3c')]);return db[_0x0fc3('0x34')][_0x0fc3('0x3d')](_0x49c617)[_0x0fc3('0x2b')](handleEntityNotFound(_0x2cdb8f,null))[_0x0fc3('0x2b')](respondWithResult(_0x2cdb8f,null))[_0x0fc3('0x3e')](handleError(_0x2cdb8f,null));};exports[_0x0fc3('0x2c')]=function(_0x1d7b8e,_0x785a47){return db[_0x0fc3('0x34')]['find']({'where':{'id':_0x1d7b8e[_0x0fc3('0x32')]['id']}})[_0x0fc3('0x2b')](handleEntityNotFound(_0x785a47,null))[_0x0fc3('0x2b')](removeEntity(_0x785a47,null))['catch'](handleError(_0x785a47,null));};function widgetAttributes(_0x39b88b){try{switch(_0x39b88b['type']){case _0x0fc3('0x3f'):return[{'name':_0x0fc3('0x40'),'value':_0x39b88b[_0x0fc3('0x40')]||(_0x39b88b[_0x0fc3('0x41')]&&_0x39b88b[_0x0fc3('0x41')][0x0]?_0x39b88b['attrs'][0x0]['value']:undefined)||_0x0fc3('0x42')}];case'custom':return[{'name':_0x0fc3('0x43'),'value':_0x39b88b['attrPath']||(_0x39b88b[_0x0fc3('0x41')]&&_0x39b88b['attrs'][0x0]?_0x39b88b[_0x0fc3('0x41')][0x0][_0x0fc3('0x44')]:undefined)||''}];case _0x0fc3('0x45'):return[{'name':_0x0fc3('0x46'),'value':_0x39b88b[_0x0fc3('0x46')]||(_0x39b88b[_0x0fc3('0x41')]&&_0x39b88b[_0x0fc3('0x41')][0x0]?_0x39b88b[_0x0fc3('0x41')][0x0][_0x0fc3('0x44')]:undefined)||_0x0fc3('0x47')},{'name':_0x0fc3('0x48'),'value':_0x39b88b[_0x0fc3('0x48')]||(_0x39b88b[_0x0fc3('0x41')]&&_0x39b88b[_0x0fc3('0x41')][0x1]?_0x39b88b[_0x0fc3('0x41')][0x1][_0x0fc3('0x44')]:undefined)||_0x0fc3('0x49')},{'name':_0x0fc3('0x4a'),'value':_0x39b88b[_0x0fc3('0x4a')]||(_0x39b88b[_0x0fc3('0x41')]&&_0x39b88b['attrs'][0x2]?_0x39b88b[_0x0fc3('0x41')][0x2][_0x0fc3('0x44')]:undefined)||0xc}];case'counter':return[{'name':'attrMetric','value':_0x39b88b[_0x0fc3('0x4b')]||(_0x39b88b['attrs']&&_0x39b88b[_0x0fc3('0x41')][0x0]?_0x39b88b[_0x0fc3('0x41')][0x0][_0x0fc3('0x44')]:undefined)||_0x0fc3('0x4c')},{'name':_0x0fc3('0x4d'),'value':_0x39b88b[_0x0fc3('0x4d')]||(_0x39b88b[_0x0fc3('0x41')]&&_0x39b88b[_0x0fc3('0x41')][0x1]?_0x39b88b['attrs'][0x1][_0x0fc3('0x44')]:undefined)||[]},{'name':'attrFontSize','value':_0x39b88b[_0x0fc3('0x4a')]||(_0x39b88b[_0x0fc3('0x41')]&&_0x39b88b[_0x0fc3('0x41')][0x2]?_0x39b88b[_0x0fc3('0x41')][0x2][_0x0fc3('0x44')]:undefined)||0x14}];case'multibar-chart':case _0x0fc3('0x4e'):return[{'name':_0x0fc3('0x4f'),'value':_0x39b88b[_0x0fc3('0x4f')]||(_0x39b88b['attrs']&&_0x39b88b[_0x0fc3('0x41')][0x0]?_0x39b88b[_0x0fc3('0x41')][0x0]['value']:undefined)||_0x0fc3('0x4c')},{'name':_0x0fc3('0x50'),'value':_0x39b88b[_0x0fc3('0x50')]||(_0x39b88b['attrs']&&_0x39b88b[_0x0fc3('0x41')][0x1]?_0x39b88b[_0x0fc3('0x41')][0x1][_0x0fc3('0x44')]:undefined)||null},{'name':_0x0fc3('0x51'),'value':_0x39b88b[_0x0fc3('0x51')]||(_0x39b88b[_0x0fc3('0x41')]&&_0x39b88b[_0x0fc3('0x41')][0x2]?_0x39b88b[_0x0fc3('0x41')][0x2][_0x0fc3('0x44')]:undefined)||null},{'name':_0x0fc3('0x4d'),'value':_0x39b88b[_0x0fc3('0x4d')]||(_0x39b88b['attrs']&&_0x39b88b[_0x0fc3('0x41')][0x3]?_0x39b88b[_0x0fc3('0x41')][0x3][_0x0fc3('0x44')]:undefined)||[]}];case _0x0fc3('0x52'):return[{'name':_0x0fc3('0x53'),'type':_0x39b88b[_0x0fc3('0x54')]||(_0x39b88b[_0x0fc3('0x41')]&&_0x39b88b[_0x0fc3('0x41')][0x0]?_0x39b88b[_0x0fc3('0x41')][0x0]['type']:undefined)||null,'value':_0x39b88b['attrReport']||(_0x39b88b['attrs']&&_0x39b88b[_0x0fc3('0x41')][0x0]?_0x39b88b[_0x0fc3('0x41')][0x0][_0x0fc3('0x44')]:undefined)||null},{'name':'attrRefresh','value':_0x39b88b[_0x0fc3('0x55')]||(_0x39b88b['attrs']&&_0x39b88b[_0x0fc3('0x41')][0x1]?_0x39b88b['attrs'][0x1][_0x0fc3('0x44')]:undefined)||0x0}];default:return[];}}catch(_0x3adb4f){logger['error'](_0x0fc3('0x56'),JSON[_0x0fc3('0x57')](_0x3adb4f));return[];}}exports[_0x0fc3('0x58')]=function(_0x5f0da8,_0xe6e6ee){if(_0x5f0da8[_0x0fc3('0x59')]){_0x5f0da8[_0x0fc3('0x59')][_0x0fc3('0x41')]=widgetAttributes(_0x5f0da8[_0x0fc3('0x59')]);}return db[_0x0fc3('0x34')][_0x0fc3('0x58')](_0x5f0da8['body'],{})[_0x0fc3('0x2b')](respondWithResult(_0xe6e6ee,0xc9))[_0x0fc3('0x3e')](handleError(_0xe6e6ee,null));};exports[_0x0fc3('0x2a')]=function(_0x467670,_0x301ff9){if(_0x467670['body']['id']){delete _0x467670[_0x0fc3('0x59')]['id'];}_0x467670['body'][_0x0fc3('0x41')]=widgetAttributes(_0x467670[_0x0fc3('0x59')]);return db['DashboardItem'][_0x0fc3('0x3d')]({'where':{'id':_0x467670[_0x0fc3('0x32')]['id']}})[_0x0fc3('0x2b')](handleEntityNotFound(_0x301ff9,null))[_0x0fc3('0x2b')](saveUpdates(_0x467670['body'],null))[_0x0fc3('0x2b')](respondWithResult(_0x301ff9,null))[_0x0fc3('0x3e')](handleError(_0x301ff9,null));};
\ No newline at end of file
+var _0xc631=['includeAll','include','merge','DashboardItem','catch','find','type','iframe','attrUrl','attrs','value','https://','custom','attrPath','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','attrMetric','total','attrVoiceQueues','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','stringify','body','create','update','params','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./dashboardItem.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','destroy','then','error','send','show','keys','rawAttributes','query','filters','intersection','model','attributes','fields'];(function(_0x1c5d33,_0x5b1eac){var _0x3d4ac8=function(_0x466221){while(--_0x466221){_0x1c5d33['push'](_0x1c5d33['shift']());}};_0x3d4ac8(++_0x5b1eac);}(_0xc631,0x82));var _0x1c63=function(_0x109c82,_0x3b9af8){_0x109c82=_0x109c82-0x0;var _0x2ee709=_0xc631[_0x109c82];return _0x2ee709;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1c63('0x0'));var zipdir=require(_0x1c63('0x1'));var jsonpatch=require(_0x1c63('0x2'));var rp=require(_0x1c63('0x3'));var moment=require(_0x1c63('0x4'));var BPromise=require(_0x1c63('0x5'));var Mustache=require(_0x1c63('0x6'));var util=require(_0x1c63('0x7'));var path=require(_0x1c63('0x8'));var sox=require(_0x1c63('0x9'));var csv=require('to-csv');var ejs=require(_0x1c63('0xa'));var fs=require('fs');var fs_extra=require(_0x1c63('0xb'));var _=require(_0x1c63('0xc'));var squel=require(_0x1c63('0xd'));var crypto=require(_0x1c63('0xe'));var jsforce=require(_0x1c63('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x1c63('0x10'));var querystring=require(_0x1c63('0x11'));var Papa=require(_0x1c63('0x12'));var Redis=require(_0x1c63('0x13'));var authService=require(_0x1c63('0x14'));var qs=require(_0x1c63('0x15'));var as=require(_0x1c63('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x1c63('0x17'));var utils=require(_0x1c63('0x18'));var config=require(_0x1c63('0x19'));var licenseUtil=require(_0x1c63('0x1a'));var db=require(_0x1c63('0x1b'))['db'];config[_0x1c63('0x1c')]=_[_0x1c63('0x1d')](config[_0x1c63('0x1c')],{'host':_0x1c63('0x1e'),'port':0x18eb});var socket=require(_0x1c63('0x1f'))(new Redis(config['redis']));require(_0x1c63('0x20'))['register'](socket);function respondWithStatusCode(_0x1de79a,_0x1468bd){_0x1468bd=_0x1468bd||0xcc;return function(_0x3f0afd){if(_0x3f0afd){return _0x1de79a[_0x1c63('0x21')](_0x1468bd);}return _0x1de79a[_0x1c63('0x22')](_0x1468bd)[_0x1c63('0x23')]();};}function respondWithResult(_0x131eca,_0x5a852e){_0x5a852e=_0x5a852e||0xc8;return function(_0x518953){if(_0x518953){return _0x131eca[_0x1c63('0x22')](_0x5a852e)[_0x1c63('0x24')](_0x518953);}};}function respondWithFilteredResult(_0x5a6fc1,_0x4d4cc1){return function(_0x645a90){if(_0x645a90){var _0x55a94e=typeof _0x4d4cc1[_0x1c63('0x25')]===_0x1c63('0x26')&&typeof _0x4d4cc1[_0x1c63('0x27')]===_0x1c63('0x26');var _0x45d5cb=_0x645a90[_0x1c63('0x28')];var _0x4d3beb=_0x55a94e?0x0:_0x4d4cc1[_0x1c63('0x25')];var _0x567f90=_0x55a94e?_0x645a90['count']:_0x4d4cc1[_0x1c63('0x25')]+_0x4d4cc1[_0x1c63('0x27')];var _0x3f88e2;if(_0x567f90>=_0x45d5cb){_0x567f90=_0x45d5cb;_0x3f88e2=0xc8;}else{_0x3f88e2=0xce;}_0x5a6fc1[_0x1c63('0x22')](_0x3f88e2);return _0x5a6fc1[_0x1c63('0x29')](_0x1c63('0x2a'),_0x4d3beb+'-'+_0x567f90+'/'+_0x45d5cb)[_0x1c63('0x24')](_0x645a90);}return null;};}function patchUpdates(_0x534b24){return function(_0x257fd7){try{jsonpatch['apply'](_0x257fd7,_0x534b24,!![]);}catch(_0xec8500){return BPromise[_0x1c63('0x2b')](_0xec8500);}return _0x257fd7[_0x1c63('0x2c')]();};}function saveUpdates(_0x120394,_0x41d5ae){return function(_0x2b525f){if(_0x2b525f){return _0x2b525f['update'](_0x120394)['then'](function(_0x171d2a){return _0x171d2a;});}return null;};}function removeEntity(_0x3a0d3a,_0x15894d){return function(_0x1d2072){if(_0x1d2072){return _0x1d2072[_0x1c63('0x2d')]()[_0x1c63('0x2e')](function(){_0x3a0d3a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x35cc59,_0x5562d6){return function(_0x480020){if(!_0x480020){_0x35cc59[_0x1c63('0x21')](0x194);}return _0x480020;};}function handleError(_0xc85e63,_0xb4e5e1){_0xb4e5e1=_0xb4e5e1||0x1f4;return function(_0x245288){logger[_0x1c63('0x2f')](_0x245288['stack']);if(_0x245288['name']){delete _0x245288['name'];}_0xc85e63[_0x1c63('0x22')](_0xb4e5e1)[_0x1c63('0x30')](_0x245288);};}exports[_0x1c63('0x31')]=function(_0x1d1dd2,_0x12b6f5){var _0x41c66c={'raw':![],'where':{'id':_0x1d1dd2['params']['id']}},_0x1db553={};_0x1db553['model']=_[_0x1c63('0x32')](db['DashboardItem'][_0x1c63('0x33')]);_0x1db553[_0x1c63('0x34')]=_['keys'](_0x1d1dd2['query']);_0x1db553[_0x1c63('0x35')]=_[_0x1c63('0x36')](_0x1db553[_0x1c63('0x37')],_0x1db553[_0x1c63('0x34')]);_0x41c66c[_0x1c63('0x38')]=_[_0x1c63('0x36')](_0x1db553[_0x1c63('0x37')],qs[_0x1c63('0x39')](_0x1d1dd2[_0x1c63('0x34')][_0x1c63('0x39')]));_0x41c66c[_0x1c63('0x38')]=_0x41c66c[_0x1c63('0x38')]['length']?_0x41c66c[_0x1c63('0x38')]:_0x1db553[_0x1c63('0x37')];if(_0x1d1dd2[_0x1c63('0x34')][_0x1c63('0x3a')]){_0x41c66c[_0x1c63('0x3b')]=[{'all':!![]}];}_0x41c66c=_[_0x1c63('0x3c')]({},_0x41c66c,_0x1d1dd2['options']);return db[_0x1c63('0x3d')]['find'](_0x41c66c)[_0x1c63('0x2e')](handleEntityNotFound(_0x12b6f5,null))[_0x1c63('0x2e')](respondWithResult(_0x12b6f5,null))[_0x1c63('0x3e')](handleError(_0x12b6f5,null));};exports['destroy']=function(_0x4bde33,_0x4a41fb){return db['DashboardItem'][_0x1c63('0x3f')]({'where':{'id':_0x4bde33['params']['id']}})[_0x1c63('0x2e')](handleEntityNotFound(_0x4a41fb,null))[_0x1c63('0x2e')](removeEntity(_0x4a41fb,null))[_0x1c63('0x3e')](handleError(_0x4a41fb,null));};function widgetAttributes(_0x1b6c39){try{switch(_0x1b6c39[_0x1c63('0x40')]){case _0x1c63('0x41'):return[{'name':_0x1c63('0x42'),'value':_0x1b6c39[_0x1c63('0x42')]||(_0x1b6c39[_0x1c63('0x43')]&&_0x1b6c39['attrs'][0x0]?_0x1b6c39[_0x1c63('0x43')][0x0][_0x1c63('0x44')]:undefined)||_0x1c63('0x45')}];case _0x1c63('0x46'):return[{'name':'attrPath','value':_0x1b6c39[_0x1c63('0x47')]||(_0x1b6c39['attrs']&&_0x1b6c39[_0x1c63('0x43')][0x0]?_0x1b6c39[_0x1c63('0x43')][0x0]['value']:undefined)||''}];case'clock':return[{'name':_0x1c63('0x48'),'value':_0x1b6c39['attrHourFormat']||(_0x1b6c39[_0x1c63('0x43')]&&_0x1b6c39[_0x1c63('0x43')][0x0]?_0x1b6c39[_0x1c63('0x43')][0x0][_0x1c63('0x44')]:undefined)||_0x1c63('0x49')},{'name':_0x1c63('0x4a'),'value':_0x1b6c39[_0x1c63('0x4a')]||(_0x1b6c39[_0x1c63('0x43')]&&_0x1b6c39[_0x1c63('0x43')][0x1]?_0x1b6c39[_0x1c63('0x43')][0x1][_0x1c63('0x44')]:undefined)||_0x1c63('0x4b')},{'name':'attrFontSize','value':_0x1b6c39[_0x1c63('0x4c')]||(_0x1b6c39['attrs']&&_0x1b6c39['attrs'][0x2]?_0x1b6c39[_0x1c63('0x43')][0x2][_0x1c63('0x44')]:undefined)||0xc}];case'counter':return[{'name':_0x1c63('0x4d'),'value':_0x1b6c39[_0x1c63('0x4d')]||(_0x1b6c39['attrs']&&_0x1b6c39['attrs'][0x0]?_0x1b6c39[_0x1c63('0x43')][0x0][_0x1c63('0x44')]:undefined)||_0x1c63('0x4e')},{'name':'attrVoiceQueues','value':_0x1b6c39[_0x1c63('0x4f')]||(_0x1b6c39['attrs']&&_0x1b6c39[_0x1c63('0x43')][0x1]?_0x1b6c39[_0x1c63('0x43')][0x1][_0x1c63('0x44')]:undefined)||[]},{'name':_0x1c63('0x4c'),'value':_0x1b6c39[_0x1c63('0x4c')]||(_0x1b6c39['attrs']&&_0x1b6c39[_0x1c63('0x43')][0x2]?_0x1b6c39['attrs'][0x2][_0x1c63('0x44')]:undefined)||0x14}];case _0x1c63('0x50'):case _0x1c63('0x51'):return[{'name':'attrSerie1','value':_0x1b6c39[_0x1c63('0x52')]||(_0x1b6c39[_0x1c63('0x43')]&&_0x1b6c39[_0x1c63('0x43')][0x0]?_0x1b6c39['attrs'][0x0][_0x1c63('0x44')]:undefined)||_0x1c63('0x4e')},{'name':'attrSerie2','value':_0x1b6c39[_0x1c63('0x53')]||(_0x1b6c39[_0x1c63('0x43')]&&_0x1b6c39[_0x1c63('0x43')][0x1]?_0x1b6c39[_0x1c63('0x43')][0x1]['value']:undefined)||null},{'name':_0x1c63('0x54'),'value':_0x1b6c39[_0x1c63('0x54')]||(_0x1b6c39[_0x1c63('0x43')]&&_0x1b6c39[_0x1c63('0x43')][0x2]?_0x1b6c39[_0x1c63('0x43')][0x2]['value']:undefined)||null},{'name':'attrVoiceQueues','value':_0x1b6c39[_0x1c63('0x4f')]||(_0x1b6c39[_0x1c63('0x43')]&&_0x1b6c39[_0x1c63('0x43')][0x3]?_0x1b6c39[_0x1c63('0x43')][0x3][_0x1c63('0x44')]:undefined)||[]}];case _0x1c63('0x55'):return[{'name':_0x1c63('0x56'),'type':_0x1b6c39[_0x1c63('0x57')]||(_0x1b6c39['attrs']&&_0x1b6c39[_0x1c63('0x43')][0x0]?_0x1b6c39['attrs'][0x0]['type']:undefined)||null,'value':_0x1b6c39[_0x1c63('0x56')]||(_0x1b6c39[_0x1c63('0x43')]&&_0x1b6c39[_0x1c63('0x43')][0x0]?_0x1b6c39['attrs'][0x0]['value']:undefined)||null},{'name':'attrRefresh','value':_0x1b6c39[_0x1c63('0x58')]||(_0x1b6c39['attrs']&&_0x1b6c39[_0x1c63('0x43')][0x1]?_0x1b6c39['attrs'][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x5383a3){logger['error']('widgetAttributes:\x20%s',JSON[_0x1c63('0x59')](_0x5383a3));return[];}}exports['create']=function(_0xcd265b,_0x1790b2){if(_0xcd265b['body']){_0xcd265b[_0x1c63('0x5a')]['attrs']=widgetAttributes(_0xcd265b[_0x1c63('0x5a')]);}return db[_0x1c63('0x3d')][_0x1c63('0x5b')](_0xcd265b['body'],{})[_0x1c63('0x2e')](respondWithResult(_0x1790b2,0xc9))[_0x1c63('0x3e')](handleError(_0x1790b2,null));};exports[_0x1c63('0x5c')]=function(_0x2dabe2,_0x196f26){if(_0x2dabe2['body']['id']){delete _0x2dabe2[_0x1c63('0x5a')]['id'];}_0x2dabe2[_0x1c63('0x5a')][_0x1c63('0x43')]=widgetAttributes(_0x2dabe2[_0x1c63('0x5a')]);return db[_0x1c63('0x3d')][_0x1c63('0x3f')]({'where':{'id':_0x2dabe2[_0x1c63('0x5d')]['id']}})[_0x1c63('0x2e')](handleEntityNotFound(_0x196f26,null))[_0x1c63('0x2e')](saveUpdates(_0x2dabe2[_0x1c63('0x5a')],null))[_0x1c63('0x2e')](respondWithResult(_0x196f26,null))['catch'](handleError(_0x196f26,null));};
\ No newline at end of file
index ed23ecd..aaa7fe8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8946=['hasOwnProperty','hook','exports','events','../../mysqldb','DashboardItem','setMaxListeners','emit'];(function(_0x15fab0,_0x416c7d){var _0x1b41a8=function(_0x30d165){while(--_0x30d165){_0x15fab0['push'](_0x15fab0['shift']());}};_0x1b41a8(++_0x416c7d);}(_0x8946,0x193));var _0x6894=function(_0x34843e,_0x4c4224){_0x34843e=_0x34843e-0x0;var _0x598f7f=_0x8946[_0x34843e];return _0x598f7f;};'use strict';var EventEmitter=require(_0x6894('0x0'));var DashboardItem=require(_0x6894('0x1'))['db'][_0x6894('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0x6894('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x434bfa){return function(_0x55c9bb,_0x220744,_0x448350){DashboardItemEvents[_0x6894('0x4')](_0x434bfa+':'+_0x55c9bb['id'],_0x55c9bb);DashboardItemEvents[_0x6894('0x4')](_0x434bfa,_0x55c9bb);_0x448350(null);};}for(var e in events){if(events[_0x6894('0x5')](e)){var event=events[e];DashboardItem[_0x6894('0x6')](e,emitEvent(event));}}module[_0x6894('0x7')]=DashboardItemEvents;
\ No newline at end of file
+var _0x5a13=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save','update'];(function(_0x35b7c6,_0x7adb8e){var _0x40422e=function(_0x136762){while(--_0x136762){_0x35b7c6['push'](_0x35b7c6['shift']());}};_0x40422e(++_0x7adb8e);}(_0x5a13,0x145));var _0x35a1=function(_0x4dbd99,_0x580d62){_0x4dbd99=_0x4dbd99-0x0;var _0x5fd90c=_0x5a13[_0x4dbd99];return _0x5fd90c;};'use strict';var EventEmitter=require(_0x35a1('0x0'));var DashboardItem=require(_0x35a1('0x1'))['db']['DashboardItem'];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0x35a1('0x2')](0x0);var events={'afterCreate':_0x35a1('0x3'),'afterUpdate':_0x35a1('0x4'),'afterDestroy':_0x35a1('0x5')};function emitEvent(_0x135bd){return function(_0xcbad2f,_0x233e91,_0x57d474){DashboardItemEvents[_0x35a1('0x6')](_0x135bd+':'+_0xcbad2f['id'],_0xcbad2f);DashboardItemEvents[_0x35a1('0x6')](_0x135bd,_0xcbad2f);_0x57d474(null);};}for(var e in events){if(events[_0x35a1('0x7')](e)){var event=events[e];DashboardItem[_0x35a1('0x8')](e,emitEvent(event));}}module[_0x35a1('0x9')]=DashboardItemEvents;
\ No newline at end of file
index d585533..d119f8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa329=['../../config/logger','moment','bluebird','request-promise','path','../../config/environment','exports','DashboardItem','dashboard_items','lodash','util'];(function(_0x112077,_0x46b57f){var _0x3ead41=function(_0x4e5347){while(--_0x4e5347){_0x112077['push'](_0x112077['shift']());}};_0x3ead41(++_0x46b57f);}(_0xa329,0x1cc));var _0x9a32=function(_0x436cb5,_0x2cb52a){_0x436cb5=_0x436cb5-0x0;var _0x57bb18=_0xa329[_0x436cb5];return _0x57bb18;};'use strict';var _=require(_0x9a32('0x0'));var util=require(_0x9a32('0x1'));var logger=require(_0x9a32('0x2'))('api');var moment=require(_0x9a32('0x3'));var BPromise=require(_0x9a32('0x4'));var rp=require(_0x9a32('0x5'));var fs=require('fs');var path=require(_0x9a32('0x6'));var rimraf=require('rimraf');var config=require(_0x9a32('0x7'));var attributes=require('./dashboardItem.attributes');module[_0x9a32('0x8')]=function(_0x34e3c6,_0x3ac937){return _0x34e3c6['define'](_0x9a32('0x9'),attributes,{'tableName':_0x9a32('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9a47=['bluebird','request-promise','rimraf','../../config/environment','./dashboardItem.attributes','exports','define','DashboardItem','lodash','../../config/logger','api','moment'];(function(_0x2fb169,_0x46de58){var _0xc6e241=function(_0x439842){while(--_0x439842){_0x2fb169['push'](_0x2fb169['shift']());}};_0xc6e241(++_0x46de58);}(_0x9a47,0x14c));var _0x79a4=function(_0x283b6e,_0x4953be){_0x283b6e=_0x283b6e-0x0;var _0x47217e=_0x9a47[_0x283b6e];return _0x47217e;};'use strict';var _=require(_0x79a4('0x0'));var util=require('util');var logger=require(_0x79a4('0x1'))(_0x79a4('0x2'));var moment=require(_0x79a4('0x3'));var BPromise=require(_0x79a4('0x4'));var rp=require(_0x79a4('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x79a4('0x6'));var config=require(_0x79a4('0x7'));var attributes=require(_0x79a4('0x8'));module[_0x79a4('0x9')]=function(_0x43662b,_0x1a9037){return _0x43662b[_0x79a4('0xa')](_0x79a4('0xb'),attributes,{'tableName':'dashboard_items','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4ed8cbd..61f1fb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8233=['request\x20sent','result','catch','util','moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./dashboardItem.socket','register','request','then','DashboardItem,\x20%s,\x20%s,\x20%s','error','code','DashboardItem,\x20%s,\x20%s','message','info'];(function(_0x2235bf,_0x3a06a7){var _0x4c3a64=function(_0x3b3bb6){while(--_0x3b3bb6){_0x2235bf['push'](_0x2235bf['shift']());}};_0x4c3a64(++_0x3a06a7);}(_0x8233,0x198));var _0x3823=function(_0x594508,_0x4e384d){_0x594508=_0x594508-0x0;var _0x37d50d=_0x8233[_0x594508];return _0x37d50d;};'use strict';var _=require('lodash');var util=require(_0x3823('0x0'));var moment=require(_0x3823('0x1'));var BPromise=require('bluebird');var rs=require(_0x3823('0x2'));var fs=require('fs');var Redis=require(_0x3823('0x3'));var db=require(_0x3823('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x3823('0x5'));var config=require(_0x3823('0x6'));var jayson=require(_0x3823('0x7'));var client=jayson[_0x3823('0x8')][_0x3823('0x9')]({'port':0x232a});config[_0x3823('0xa')]=_[_0x3823('0xb')](config[_0x3823('0xa')],{'host':_0x3823('0xc'),'port':0x18eb});var socket=require(_0x3823('0xd'))(new Redis(config[_0x3823('0xa')]));require(_0x3823('0xe'))[_0x3823('0xf')](socket);function respondWithRpcPromise(_0x5177f2,_0x38e37e,_0x1d7fe1){return new BPromise(function(_0x15b429,_0x49ebd7){return client[_0x3823('0x10')](_0x5177f2,_0x1d7fe1)[_0x3823('0x11')](function(_0x136f5e){logger['info']('DashboardItem,\x20%s,\x20%s',_0x38e37e,'request\x20sent');logger['debug'](_0x3823('0x12'),_0x38e37e,'request\x20sent',JSON['stringify'](_0x136f5e));if(_0x136f5e[_0x3823('0x13')]){if(_0x136f5e[_0x3823('0x13')][_0x3823('0x14')]===0x1f4){logger['error'](_0x3823('0x15'),_0x38e37e,_0x136f5e[_0x3823('0x13')][_0x3823('0x16')]);return _0x49ebd7(_0x136f5e[_0x3823('0x13')][_0x3823('0x16')]);}logger['error'](_0x3823('0x15'),_0x38e37e,_0x136f5e[_0x3823('0x13')][_0x3823('0x16')]);return _0x15b429(_0x136f5e[_0x3823('0x13')][_0x3823('0x16')]);}else{logger[_0x3823('0x17')]('DashboardItem,\x20%s,\x20%s',_0x38e37e,_0x3823('0x18'));_0x15b429(_0x136f5e[_0x3823('0x19')][_0x3823('0x16')]);}})[_0x3823('0x1a')](function(_0x40fa74){logger[_0x3823('0x13')](_0x3823('0x15'),_0x38e37e,_0x40fa74);_0x49ebd7(_0x40fa74);});});}
\ No newline at end of file
+var _0x0fc6=['debug','DashboardItem,\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','defaults','redis','localhost','socket.io-emitter','./dashboardItem.socket','register','request','then','info','DashboardItem,\x20%s,\x20%s','request\x20sent'];(function(_0x44e78e,_0x5f2ba5){var _0xff1bb2=function(_0x1dc6a8){while(--_0x1dc6a8){_0x44e78e['push'](_0x44e78e['shift']());}};_0xff1bb2(++_0x5f2ba5);}(_0x0fc6,0x83));var _0x60fc=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x0fc6[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x60fc('0x0'));var util=require(_0x60fc('0x1'));var moment=require(_0x60fc('0x2'));var BPromise=require(_0x60fc('0x3'));var rs=require(_0x60fc('0x4'));var fs=require('fs');var Redis=require(_0x60fc('0x5'));var db=require(_0x60fc('0x6'))['db'];var utils=require(_0x60fc('0x7'));var logger=require('../../config/logger')(_0x60fc('0x8'));var config=require(_0x60fc('0x9'));var jayson=require(_0x60fc('0xa'));var client=jayson[_0x60fc('0xb')][_0x60fc('0xc')]({'port':0x232a});config['redis']=_[_0x60fc('0xd')](config[_0x60fc('0xe')],{'host':_0x60fc('0xf'),'port':0x18eb});var socket=require(_0x60fc('0x10'))(new Redis(config[_0x60fc('0xe')]));require(_0x60fc('0x11'))[_0x60fc('0x12')](socket);function respondWithRpcPromise(_0x3c9c15,_0x339aa4,_0x28280f){return new BPromise(function(_0x27aa57,_0x450191){return client[_0x60fc('0x13')](_0x3c9c15,_0x28280f)[_0x60fc('0x14')](function(_0x13ed65){logger[_0x60fc('0x15')](_0x60fc('0x16'),_0x339aa4,_0x60fc('0x17'));logger[_0x60fc('0x18')](_0x60fc('0x19'),_0x339aa4,'request\x20sent',JSON['stringify'](_0x13ed65));if(_0x13ed65[_0x60fc('0x1a')]){if(_0x13ed65[_0x60fc('0x1a')][_0x60fc('0x1b')]===0x1f4){logger[_0x60fc('0x1a')](_0x60fc('0x16'),_0x339aa4,_0x13ed65[_0x60fc('0x1a')][_0x60fc('0x1c')]);return _0x450191(_0x13ed65[_0x60fc('0x1a')][_0x60fc('0x1c')]);}logger['error']('DashboardItem,\x20%s,\x20%s',_0x339aa4,_0x13ed65[_0x60fc('0x1a')][_0x60fc('0x1c')]);return _0x27aa57(_0x13ed65['error'][_0x60fc('0x1c')]);}else{logger['info'](_0x60fc('0x16'),_0x339aa4,_0x60fc('0x17'));_0x27aa57(_0x13ed65[_0x60fc('0x1d')][_0x60fc('0x1c')]);}})[_0x60fc('0x1e')](function(_0x452ee0){logger['error']('DashboardItem,\x20%s,\x20%s',_0x339aa4,_0x452ee0);_0x450191(_0x452ee0);});});}
\ No newline at end of file
index 12a6838..1645ac5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ee3=['register','length','dashboardItem:','./dashboardItem.events','save','remove','update','emit'];(function(_0x3d00db,_0x3692b3){var _0x41f115=function(_0x3c94fd){while(--_0x3c94fd){_0x3d00db['push'](_0x3d00db['shift']());}};_0x41f115(++_0x3692b3);}(_0x6ee3,0xcb));var _0x36ee=function(_0x4cc0ec,_0x5da39f){_0x4cc0ec=_0x4cc0ec-0x0;var _0x1d2004=_0x6ee3[_0x4cc0ec];return _0x1d2004;};'use strict';var DashboardItemEvents=require(_0x36ee('0x0'));var events=[_0x36ee('0x1'),_0x36ee('0x2'),_0x36ee('0x3')];function createListener(_0x4a1864,_0x564481){return function(_0x56253b){_0x564481[_0x36ee('0x4')](_0x4a1864,_0x56253b);};}function removeListener(_0x2e3110,_0x3c6233){return function(){DashboardItemEvents['removeListener'](_0x2e3110,_0x3c6233);};}exports[_0x36ee('0x5')]=function(_0x33fd17){for(var _0x2feabb=0x0,_0x5c967a=events[_0x36ee('0x6')];_0x2feabb<_0x5c967a;_0x2feabb++){var _0x54ef21=events[_0x2feabb];var _0x5e9671=createListener(_0x36ee('0x7')+_0x54ef21,_0x33fd17);DashboardItemEvents['on'](_0x54ef21,_0x5e9671);}};
\ No newline at end of file
+var _0x37ae=['removeListener','register','length','./dashboardItem.events','save','remove','update','emit'];(function(_0x2a6809,_0x44edde){var _0x11c371=function(_0x1a4888){while(--_0x1a4888){_0x2a6809['push'](_0x2a6809['shift']());}};_0x11c371(++_0x44edde);}(_0x37ae,0x7b));var _0xe37a=function(_0x31b5b2,_0x5ab927){_0x31b5b2=_0x31b5b2-0x0;var _0x364f13=_0x37ae[_0x31b5b2];return _0x364f13;};'use strict';var DashboardItemEvents=require(_0xe37a('0x0'));var events=[_0xe37a('0x1'),_0xe37a('0x2'),_0xe37a('0x3')];function createListener(_0x53b766,_0x36fc56){return function(_0x27858b){_0x36fc56[_0xe37a('0x4')](_0x53b766,_0x27858b);};}function removeListener(_0x420773,_0x2b6aad){return function(){DashboardItemEvents[_0xe37a('0x5')](_0x420773,_0x2b6aad);};}exports[_0xe37a('0x6')]=function(_0x23456f){for(var _0x257fcd=0x0,_0x2c9892=events[_0xe37a('0x7')];_0x257fcd<_0x2c9892;_0x257fcd++){var _0x26e1ee=events[_0x257fcd];var _0xd0a411=createListener('dashboardItem:'+_0x26e1ee,_0x23456f);DashboardItemEvents['on'](_0x26e1ee,_0xd0a411);}};
\ No newline at end of file
index 2b5d560..92f2e8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99ad=['update','exports','path','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','show','post','create','put','/:id'];(function(_0x344b9e,_0x5f2d46){var _0x2b7d14=function(_0x35dfa7){while(--_0x35dfa7){_0x344b9e['push'](_0x344b9e['shift']());}};_0x2b7d14(++_0x5f2d46);}(_0x99ad,0x136));var _0xd99a=function(_0x177ce7,_0x47b859){_0x177ce7=_0x177ce7-0x0;var _0x19b2b9=_0x99ad[_0x177ce7];return _0x19b2b9;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xd99a('0x0'));var timeout=require('connect-timeout');var express=require(_0xd99a('0x1'));var router=express[_0xd99a('0x2')]();var fs_extra=require(_0xd99a('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xd99a('0x4'));var config=require('../../config/environment');var controller=require('./dashboardItem.controller');router[_0xd99a('0x5')]('/:id',auth[_0xd99a('0x6')](),controller[_0xd99a('0x7')]);router[_0xd99a('0x8')]('/',auth[_0xd99a('0x6')](),controller[_0xd99a('0x9')]);router[_0xd99a('0xa')](_0xd99a('0xb'),auth['isAuthenticated'](),controller[_0xd99a('0xc')]);router['delete'](_0xd99a('0xb'),auth[_0xd99a('0x6')](),controller['destroy']);module[_0xd99a('0xd')]=router;
\ No newline at end of file
+var _0xc68a=['put','update','destroy','exports','multer','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./dashboardItem.controller','get','/:id','isAuthenticated','show','create'];(function(_0x547bb6,_0x2d6f27){var _0x1a9154=function(_0x18080f){while(--_0x18080f){_0x547bb6['push'](_0x547bb6['shift']());}};_0x1a9154(++_0x2d6f27);}(_0xc68a,0xf4));var _0xac68=function(_0x2ba1b2,_0x1d4370){_0x2ba1b2=_0x2ba1b2-0x0;var _0x23345e=_0xc68a[_0x2ba1b2];return _0x23345e;};'use strict';var multer=require(_0xac68('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xac68('0x1'));var express=require(_0xac68('0x2'));var router=express['Router']();var fs_extra=require(_0xac68('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xac68('0x4'));var config=require(_0xac68('0x5'));var controller=require(_0xac68('0x6'));router[_0xac68('0x7')](_0xac68('0x8'),auth[_0xac68('0x9')](),controller[_0xac68('0xa')]);router['post']('/',auth[_0xac68('0x9')](),controller[_0xac68('0xb')]);router[_0xac68('0xc')]('/:id',auth[_0xac68('0x9')](),controller[_0xac68('0xd')]);router['delete'](_0xac68('0x8'),auth['isAuthenticated'](),controller[_0xac68('0xe')]);module[_0xac68('0xf')]=router;
\ No newline at end of file
index 59bb17d..24d813b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8823=['STRING','ENUM','first','second','third','sequelize'];(function(_0x51c2cb,_0x19e4d5){var _0x2433fa=function(_0x100587){while(--_0x100587){_0x51c2cb['push'](_0x51c2cb['shift']());}};_0x2433fa(++_0x19e4d5);}(_0x8823,0xf5));var _0x3882=function(_0x468e9e,_0x5aa325){_0x468e9e=_0x468e9e-0x0;var _0x2d0d1b=_0x8823[_0x468e9e];return _0x2d0d1b;};'use strict';var Sequelize=require(_0x3882('0x0'));module['exports']={'name':{'type':Sequelize[_0x3882('0x1')],'allowNull':![]},'level':{'type':Sequelize[_0x3882('0x2')](_0x3882('0x3'),_0x3882('0x4'),_0x3882('0x5')),'allowNull':![],'defaultValue':_0x3882('0x3')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x6bcf=['exports','STRING','ENUM','first','third','sequelize'];(function(_0xda01a0,_0xccbad5){var _0x4919b6=function(_0x5b458a){while(--_0x5b458a){_0xda01a0['push'](_0xda01a0['shift']());}};_0x4919b6(++_0xccbad5);}(_0x6bcf,0xa7));var _0xf6bc=function(_0x4d24f8,_0x186320){_0x4d24f8=_0x4d24f8-0x0;var _0x135250=_0x6bcf[_0x4d24f8];return _0x135250;};'use strict';var Sequelize=require(_0xf6bc('0x0'));module[_0xf6bc('0x1')]={'name':{'type':Sequelize[_0xf6bc('0x2')],'allowNull':![]},'level':{'type':Sequelize[_0xf6bc('0x3')](_0xf6bc('0x4'),'second',_0xf6bc('0x5')),'allowNull':![],'defaultValue':_0xf6bc('0x4')},'description':{'type':Sequelize[_0xf6bc('0x2')]}};
\ No newline at end of file
index 680e507..a826b92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e69=['update','then','get','Dispositions','UserProfileResource','destroy','stack','name','send','index','Disposition','type','key','model','map','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','sort','where','pick','filter','VIRTUAL','merge','options','include','findAll','catch','show','params','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','userProfileId','create','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save'];(function(_0xe6616d,_0x1e7814){var _0x187a52=function(_0x3c7572){while(--_0x3c7572){_0xe6616d['push'](_0xe6616d['shift']());}};_0x187a52(++_0x1e7814);}(_0x7e69,0x1b8));var _0x97e6=function(_0x57d4b2,_0x43236a){_0x57d4b2=_0x57d4b2-0x0;var _0x57fc1c=_0x7e69[_0x57d4b2];return _0x57fc1c;};'use strict';var emlformat=require(_0x97e6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x97e6('0x1'));var jsonpatch=require(_0x97e6('0x2'));var rp=require(_0x97e6('0x3'));var moment=require(_0x97e6('0x4'));var BPromise=require(_0x97e6('0x5'));var Mustache=require('mustache');var util=require(_0x97e6('0x6'));var path=require(_0x97e6('0x7'));var sox=require(_0x97e6('0x8'));var csv=require(_0x97e6('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x97e6('0xa'));var _=require(_0x97e6('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x97e6('0xc'));var toCsv=require('to-csv');var querystring=require(_0x97e6('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x97e6('0xe'));var qs=require(_0x97e6('0xf'));var as=require(_0x97e6('0x10'));var hardwareService=require(_0x97e6('0x11'));var logger=require('../../config/logger')(_0x97e6('0x12'));var utils=require('../../config/utils');var config=require(_0x97e6('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x97e6('0x14'))['db'];function respondWithStatusCode(_0x222ad4,_0x38506e){_0x38506e=_0x38506e||0xcc;return function(_0x292993){if(_0x292993){return _0x222ad4[_0x97e6('0x15')](_0x38506e);}return _0x222ad4['status'](_0x38506e)[_0x97e6('0x16')]();};}function respondWithResult(_0x237f5b,_0x48ac1b){_0x48ac1b=_0x48ac1b||0xc8;return function(_0x250ea7){if(_0x250ea7){return _0x237f5b[_0x97e6('0x17')](_0x48ac1b)[_0x97e6('0x18')](_0x250ea7);}};}function respondWithFilteredResult(_0x47c738,_0x1679f9){return function(_0x1a1a51){if(_0x1a1a51){var _0x423da1=typeof _0x1679f9[_0x97e6('0x19')]===_0x97e6('0x1a')&&typeof _0x1679f9[_0x97e6('0x1b')]===_0x97e6('0x1a');var _0x261e79=_0x1a1a51[_0x97e6('0x1c')];var _0x5a94ed=_0x423da1?0x0:_0x1679f9['offset'];var _0x22b8b7=_0x423da1?_0x1a1a51[_0x97e6('0x1c')]:_0x1679f9[_0x97e6('0x19')]+_0x1679f9[_0x97e6('0x1b')];var _0x4218eb;if(_0x22b8b7>=_0x261e79){_0x22b8b7=_0x261e79;_0x4218eb=0xc8;}else{_0x4218eb=0xce;}_0x47c738[_0x97e6('0x17')](_0x4218eb);return _0x47c738[_0x97e6('0x1d')](_0x97e6('0x1e'),_0x5a94ed+'-'+_0x22b8b7+'/'+_0x261e79)[_0x97e6('0x18')](_0x1a1a51);}return null;};}function patchUpdates(_0x199058){return function(_0x524737){try{jsonpatch[_0x97e6('0x1f')](_0x524737,_0x199058,!![]);}catch(_0x689513){return BPromise[_0x97e6('0x20')](_0x689513);}return _0x524737[_0x97e6('0x21')]();};}function saveUpdates(_0x4eb806,_0x3a3179){return function(_0x33246e){if(_0x33246e){return _0x33246e[_0x97e6('0x22')](_0x4eb806)[_0x97e6('0x23')](function(_0x269bc6){return _0x269bc6;});}return null;};}function removeEntity(_0x565851,_0x43e5b5){return function(_0x255dbf){if(_0x255dbf){return _0x255dbf['destroy']()[_0x97e6('0x23')](function(){var _0x9364fd=_0x255dbf[_0x97e6('0x24')]({'plain':!![]});var _0x522b24=_0x97e6('0x25');return db[_0x97e6('0x26')][_0x97e6('0x27')]({'where':{'type':_0x522b24,'resourceId':_0x9364fd['id']}})['then'](function(){return _0x255dbf;});})[_0x97e6('0x23')](function(){_0x565851[_0x97e6('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5209b3,_0x9a9a2d){return function(_0x2546e1){if(!_0x2546e1){_0x5209b3[_0x97e6('0x15')](0x194);}return _0x2546e1;};}function handleError(_0x2a8e90,_0x78379c){_0x78379c=_0x78379c||0x1f4;return function(_0x124c7b){logger['error'](_0x124c7b[_0x97e6('0x28')]);if(_0x124c7b['name']){delete _0x124c7b[_0x97e6('0x29')];}_0x2a8e90[_0x97e6('0x17')](_0x78379c)[_0x97e6('0x2a')](_0x124c7b);};}exports[_0x97e6('0x2b')]=function(_0x3f29ef,_0x4d7760){var _0x398fc4={},_0x40e2f9={},_0x41cb94={'count':0x0,'rows':[]};var _0x17c262=_['map'](db[_0x97e6('0x2c')]['rawAttributes'],function(_0x281faf){return{'name':_0x281faf['fieldName'],'type':_0x281faf[_0x97e6('0x2d')][_0x97e6('0x2e')]};});_0x40e2f9[_0x97e6('0x2f')]=_[_0x97e6('0x30')](_0x17c262,'name');_0x40e2f9['query']=_[_0x97e6('0x31')](_0x3f29ef[_0x97e6('0x32')]);_0x40e2f9[_0x97e6('0x33')]=_[_0x97e6('0x34')](_0x40e2f9[_0x97e6('0x2f')],_0x40e2f9[_0x97e6('0x32')]);_0x398fc4['attributes']=_['intersection'](_0x40e2f9[_0x97e6('0x2f')],qs[_0x97e6('0x35')](_0x3f29ef['query']['fields']));_0x398fc4[_0x97e6('0x36')]=_0x398fc4[_0x97e6('0x36')][_0x97e6('0x37')]?_0x398fc4[_0x97e6('0x36')]:_0x40e2f9[_0x97e6('0x2f')];if(!_0x3f29ef[_0x97e6('0x32')][_0x97e6('0x38')]('nolimit')){_0x398fc4[_0x97e6('0x1b')]=qs[_0x97e6('0x1b')](_0x3f29ef['query'][_0x97e6('0x1b')]);_0x398fc4[_0x97e6('0x19')]=qs[_0x97e6('0x19')](_0x3f29ef['query'][_0x97e6('0x19')]);}_0x398fc4['order']=qs[_0x97e6('0x39')](_0x3f29ef['query'][_0x97e6('0x39')]);_0x398fc4[_0x97e6('0x3a')]=qs['filters'](_[_0x97e6('0x3b')](_0x3f29ef[_0x97e6('0x32')],_0x40e2f9[_0x97e6('0x33')]),_0x17c262);if(_0x3f29ef[_0x97e6('0x32')][_0x97e6('0x3c')]){_0x398fc4[_0x97e6('0x3a')]=_['merge'](_0x398fc4['where'],{'$or':_['map'](_0x17c262,function(_0x934a4e){if(_0x934a4e[_0x97e6('0x2d')]!==_0x97e6('0x3d')){var _0x261f73={};_0x261f73[_0x934a4e[_0x97e6('0x29')]]={'$like':'%'+_0x3f29ef[_0x97e6('0x32')][_0x97e6('0x3c')]+'%'};return _0x261f73;}})});}_0x398fc4=_[_0x97e6('0x3e')]({},_0x398fc4,_0x3f29ef[_0x97e6('0x3f')]);var _0x20b372={'where':_0x398fc4['where']};return db[_0x97e6('0x2c')][_0x97e6('0x1c')](_0x20b372)['then'](function(_0x512eb2){_0x41cb94[_0x97e6('0x1c')]=_0x512eb2;if(_0x3f29ef[_0x97e6('0x32')]['includeAll']){_0x398fc4[_0x97e6('0x40')]=[{'all':!![]}];}return db['Disposition'][_0x97e6('0x41')](_0x398fc4);})['then'](function(_0x561438){_0x41cb94['rows']=_0x561438;return _0x41cb94;})[_0x97e6('0x23')](respondWithFilteredResult(_0x4d7760,_0x398fc4))[_0x97e6('0x42')](handleError(_0x4d7760,null));};exports[_0x97e6('0x43')]=function(_0x123a52,_0x3fe254){var _0x53f738={'raw':!![],'where':{'id':_0x123a52[_0x97e6('0x44')]['id']}},_0x7964f4={};_0x7964f4[_0x97e6('0x2f')]=_[_0x97e6('0x31')](db[_0x97e6('0x2c')]['rawAttributes']);_0x7964f4['query']=_[_0x97e6('0x31')](_0x123a52['query']);_0x7964f4[_0x97e6('0x33')]=_[_0x97e6('0x34')](_0x7964f4['model'],_0x7964f4[_0x97e6('0x32')]);_0x53f738[_0x97e6('0x36')]=_[_0x97e6('0x34')](_0x7964f4[_0x97e6('0x2f')],qs[_0x97e6('0x35')](_0x123a52['query'][_0x97e6('0x35')]));_0x53f738['attributes']=_0x53f738[_0x97e6('0x36')][_0x97e6('0x37')]?_0x53f738['attributes']:_0x7964f4['model'];if(_0x123a52[_0x97e6('0x32')]['includeAll']){_0x53f738[_0x97e6('0x40')]=[{'all':!![]}];}_0x53f738=_[_0x97e6('0x3e')]({},_0x53f738,_0x123a52[_0x97e6('0x3f')]);return db['Disposition']['find'](_0x53f738)[_0x97e6('0x23')](handleEntityNotFound(_0x3fe254,null))[_0x97e6('0x23')](respondWithResult(_0x3fe254,null))[_0x97e6('0x42')](handleError(_0x3fe254,null));};exports['create']=function(_0x1564b1,_0x364832){return db['Disposition']['create'](_0x1564b1['body'],{})['then'](function(_0x58b6d4){var _0x5b3fef=_0x1564b1['user'][_0x97e6('0x24')]({'plain':!![]});if(!_0x5b3fef)throw new Error(_0x97e6('0x45'));if(_0x5b3fef[_0x97e6('0x46')]===_0x97e6('0x47')){var _0x2a989e=_0x58b6d4[_0x97e6('0x24')]({'plain':!![]});var _0x42fcea=_0x97e6('0x25');return db[_0x97e6('0x48')][_0x97e6('0x49')]({'where':{'name':_0x42fcea,'userProfileId':_0x5b3fef[_0x97e6('0x4a')]},'raw':!![]})[_0x97e6('0x23')](function(_0x11fb6b){if(_0x11fb6b&&_0x11fb6b['autoAssociation']===0x0){return db[_0x97e6('0x26')][_0x97e6('0x4b')]({'name':_0x2a989e[_0x97e6('0x29')],'resourceId':_0x2a989e['id'],'type':_0x11fb6b[_0x97e6('0x29')],'sectionId':_0x11fb6b['id']},{})[_0x97e6('0x23')](function(){return _0x58b6d4;});}else{return _0x58b6d4;}})[_0x97e6('0x42')](function(_0x24d785){logger[_0x97e6('0x4c')](_0x97e6('0x4d'),_0x24d785);throw _0x24d785;});}return _0x58b6d4;})[_0x97e6('0x23')](respondWithResult(_0x364832,0xc9))['catch'](handleError(_0x364832,null));};exports[_0x97e6('0x22')]=function(_0x3273e5,_0x555fe4){if(_0x3273e5[_0x97e6('0x4e')]['id']){delete _0x3273e5[_0x97e6('0x4e')]['id'];}return db['Disposition'][_0x97e6('0x49')]({'where':{'id':_0x3273e5[_0x97e6('0x44')]['id']}})['then'](handleEntityNotFound(_0x555fe4,null))[_0x97e6('0x23')](saveUpdates(_0x3273e5['body'],null))[_0x97e6('0x23')](respondWithResult(_0x555fe4,null))[_0x97e6('0x42')](handleError(_0x555fe4,null));};exports['destroy']=function(_0x3f3971,_0x5f49db){return db[_0x97e6('0x2c')][_0x97e6('0x49')]({'where':{'id':_0x3f3971[_0x97e6('0x44')]['id']}})[_0x97e6('0x23')](handleEntityNotFound(_0x5f49db,null))[_0x97e6('0x23')](removeEntity(_0x5f49db,null))[_0x97e6('0x42')](handleError(_0x5f49db,null));};
\ No newline at end of file
+var _0x303f=['order','sort','pick','filter','where','VIRTUAL','merge','options','Disposition','includeAll','include','findAll','rows','catch','show','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','find','destroy','params','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','then','get','Dispositions','error','stack','name','send','index','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit'];(function(_0x16e0f5,_0x4ec0f3){var _0x4839d5=function(_0x296b8f){while(--_0x296b8f){_0x16e0f5['push'](_0x16e0f5['shift']());}};_0x4839d5(++_0x4ec0f3);}(_0x303f,0xbe));var _0xf303=function(_0x3ab031,_0x3fc7dd){_0x3ab031=_0x3ab031-0x0;var _0x33572e=_0x303f[_0x3ab031];return _0x33572e;};'use strict';var emlformat=require(_0xf303('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xf303('0x1'));var rp=require(_0xf303('0x2'));var moment=require(_0xf303('0x3'));var BPromise=require(_0xf303('0x4'));var Mustache=require(_0xf303('0x5'));var util=require('util');var path=require('path');var sox=require(_0xf303('0x6'));var csv=require(_0xf303('0x7'));var ejs=require(_0xf303('0x8'));var fs=require('fs');var fs_extra=require(_0xf303('0x9'));var _=require(_0xf303('0xa'));var squel=require(_0xf303('0xb'));var crypto=require('crypto');var jsforce=require(_0xf303('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xf303('0xd'));var Papa=require(_0xf303('0xe'));var Redis=require('ioredis');var authService=require(_0xf303('0xf'));var qs=require(_0xf303('0x10'));var as=require(_0xf303('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf303('0x12'))(_0xf303('0x13'));var utils=require(_0xf303('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xf303('0x15'));var db=require(_0xf303('0x16'))['db'];function respondWithStatusCode(_0x19d3c6,_0x219e0f){_0x219e0f=_0x219e0f||0xcc;return function(_0xe071f3){if(_0xe071f3){return _0x19d3c6[_0xf303('0x17')](_0x219e0f);}return _0x19d3c6[_0xf303('0x18')](_0x219e0f)[_0xf303('0x19')]();};}function respondWithResult(_0x37075d,_0x11af1b){_0x11af1b=_0x11af1b||0xc8;return function(_0x3a811f){if(_0x3a811f){return _0x37075d[_0xf303('0x18')](_0x11af1b)[_0xf303('0x1a')](_0x3a811f);}};}function respondWithFilteredResult(_0x58df2c,_0x4602da){return function(_0x2444cf){if(_0x2444cf){var _0xacad3e=typeof _0x4602da[_0xf303('0x1b')]===_0xf303('0x1c')&&typeof _0x4602da[_0xf303('0x1d')]==='undefined';var _0xabc7e7=_0x2444cf[_0xf303('0x1e')];var _0x260d23=_0xacad3e?0x0:_0x4602da['offset'];var _0x411a31=_0xacad3e?_0x2444cf[_0xf303('0x1e')]:_0x4602da[_0xf303('0x1b')]+_0x4602da[_0xf303('0x1d')];var _0x4bf835;if(_0x411a31>=_0xabc7e7){_0x411a31=_0xabc7e7;_0x4bf835=0xc8;}else{_0x4bf835=0xce;}_0x58df2c[_0xf303('0x18')](_0x4bf835);return _0x58df2c['set'](_0xf303('0x1f'),_0x260d23+'-'+_0x411a31+'/'+_0xabc7e7)[_0xf303('0x1a')](_0x2444cf);}return null;};}function patchUpdates(_0x2e33d0){return function(_0x4662cb){try{jsonpatch[_0xf303('0x20')](_0x4662cb,_0x2e33d0,!![]);}catch(_0x12ccb5){return BPromise['reject'](_0x12ccb5);}return _0x4662cb[_0xf303('0x21')]();};}function saveUpdates(_0x2d277e,_0xb0e551){return function(_0x301972){if(_0x301972){return _0x301972['update'](_0x2d277e)[_0xf303('0x22')](function(_0x3b089b){return _0x3b089b;});}return null;};}function removeEntity(_0x1b2532,_0x5cf111){return function(_0x546e9c){if(_0x546e9c){return _0x546e9c['destroy']()[_0xf303('0x22')](function(){var _0x480002=_0x546e9c[_0xf303('0x23')]({'plain':!![]});var _0x31ad26=_0xf303('0x24');return db['UserProfileResource']['destroy']({'where':{'type':_0x31ad26,'resourceId':_0x480002['id']}})[_0xf303('0x22')](function(){return _0x546e9c;});})[_0xf303('0x22')](function(){_0x1b2532['status'](0xcc)[_0xf303('0x19')]();});}};}function handleEntityNotFound(_0x3305ef,_0xe45ea8){return function(_0x1a6464){if(!_0x1a6464){_0x3305ef['sendStatus'](0x194);}return _0x1a6464;};}function handleError(_0xbb5713,_0x223b02){_0x223b02=_0x223b02||0x1f4;return function(_0x33268d){logger[_0xf303('0x25')](_0x33268d[_0xf303('0x26')]);if(_0x33268d[_0xf303('0x27')]){delete _0x33268d['name'];}_0xbb5713['status'](_0x223b02)[_0xf303('0x28')](_0x33268d);};}exports[_0xf303('0x29')]=function(_0x390ef7,_0x301979){var _0x54cdf1={},_0x3c059b={},_0x578ef7={'count':0x0,'rows':[]};var _0x59170c=_['map'](db['Disposition'][_0xf303('0x2a')],function(_0x3acaba){return{'name':_0x3acaba['fieldName'],'type':_0x3acaba[_0xf303('0x2b')][_0xf303('0x2c')]};});_0x3c059b[_0xf303('0x2d')]=_[_0xf303('0x2e')](_0x59170c,_0xf303('0x27'));_0x3c059b[_0xf303('0x2f')]=_[_0xf303('0x30')](_0x390ef7[_0xf303('0x2f')]);_0x3c059b[_0xf303('0x31')]=_[_0xf303('0x32')](_0x3c059b['model'],_0x3c059b[_0xf303('0x2f')]);_0x54cdf1[_0xf303('0x33')]=_[_0xf303('0x32')](_0x3c059b[_0xf303('0x2d')],qs[_0xf303('0x34')](_0x390ef7[_0xf303('0x2f')]['fields']));_0x54cdf1[_0xf303('0x33')]=_0x54cdf1[_0xf303('0x33')][_0xf303('0x35')]?_0x54cdf1[_0xf303('0x33')]:_0x3c059b[_0xf303('0x2d')];if(!_0x390ef7['query'][_0xf303('0x36')](_0xf303('0x37'))){_0x54cdf1[_0xf303('0x1d')]=qs[_0xf303('0x1d')](_0x390ef7[_0xf303('0x2f')]['limit']);_0x54cdf1[_0xf303('0x1b')]=qs[_0xf303('0x1b')](_0x390ef7[_0xf303('0x2f')][_0xf303('0x1b')]);}_0x54cdf1[_0xf303('0x38')]=qs[_0xf303('0x39')](_0x390ef7[_0xf303('0x2f')][_0xf303('0x39')]);_0x54cdf1['where']=qs[_0xf303('0x31')](_[_0xf303('0x3a')](_0x390ef7['query'],_0x3c059b[_0xf303('0x31')]),_0x59170c);if(_0x390ef7['query'][_0xf303('0x3b')]){_0x54cdf1[_0xf303('0x3c')]=_['merge'](_0x54cdf1[_0xf303('0x3c')],{'$or':_['map'](_0x59170c,function(_0x5d04fb){if(_0x5d04fb[_0xf303('0x2b')]!==_0xf303('0x3d')){var _0xa4b12d={};_0xa4b12d[_0x5d04fb[_0xf303('0x27')]]={'$like':'%'+_0x390ef7[_0xf303('0x2f')][_0xf303('0x3b')]+'%'};return _0xa4b12d;}})});}_0x54cdf1=_[_0xf303('0x3e')]({},_0x54cdf1,_0x390ef7[_0xf303('0x3f')]);var _0x1a8adc={'where':_0x54cdf1['where']};return db[_0xf303('0x40')][_0xf303('0x1e')](_0x1a8adc)[_0xf303('0x22')](function(_0x287091){_0x578ef7['count']=_0x287091;if(_0x390ef7[_0xf303('0x2f')][_0xf303('0x41')]){_0x54cdf1[_0xf303('0x42')]=[{'all':!![]}];}return db[_0xf303('0x40')][_0xf303('0x43')](_0x54cdf1);})[_0xf303('0x22')](function(_0x4598dd){_0x578ef7[_0xf303('0x44')]=_0x4598dd;return _0x578ef7;})[_0xf303('0x22')](respondWithFilteredResult(_0x301979,_0x54cdf1))[_0xf303('0x45')](handleError(_0x301979,null));};exports[_0xf303('0x46')]=function(_0x2bdadb,_0x1ce9c8){var _0x5b021d={'raw':!![],'where':{'id':_0x2bdadb['params']['id']}},_0x480a9b={};_0x480a9b['model']=_[_0xf303('0x30')](db[_0xf303('0x40')][_0xf303('0x2a')]);_0x480a9b[_0xf303('0x2f')]=_[_0xf303('0x30')](_0x2bdadb[_0xf303('0x2f')]);_0x480a9b[_0xf303('0x31')]=_[_0xf303('0x32')](_0x480a9b[_0xf303('0x2d')],_0x480a9b[_0xf303('0x2f')]);_0x5b021d['attributes']=_['intersection'](_0x480a9b['model'],qs['fields'](_0x2bdadb[_0xf303('0x2f')][_0xf303('0x34')]));_0x5b021d[_0xf303('0x33')]=_0x5b021d[_0xf303('0x33')][_0xf303('0x35')]?_0x5b021d[_0xf303('0x33')]:_0x480a9b[_0xf303('0x2d')];if(_0x2bdadb[_0xf303('0x2f')][_0xf303('0x41')]){_0x5b021d[_0xf303('0x42')]=[{'all':!![]}];}_0x5b021d=_[_0xf303('0x3e')]({},_0x5b021d,_0x2bdadb[_0xf303('0x3f')]);return db[_0xf303('0x40')]['find'](_0x5b021d)[_0xf303('0x22')](handleEntityNotFound(_0x1ce9c8,null))[_0xf303('0x22')](respondWithResult(_0x1ce9c8,null))['catch'](handleError(_0x1ce9c8,null));};exports[_0xf303('0x47')]=function(_0x53f5da,_0x449bd0){return db[_0xf303('0x40')][_0xf303('0x47')](_0x53f5da['body'],{})[_0xf303('0x22')](function(_0x1a15ee){var _0x479925=_0x53f5da['user'][_0xf303('0x23')]({'plain':!![]});if(!_0x479925)throw new Error(_0xf303('0x48'));if(_0x479925[_0xf303('0x49')]==='user'){var _0x59bb42=_0x1a15ee[_0xf303('0x23')]({'plain':!![]});var _0xa5e680='Dispositions';return db['UserProfileSection']['find']({'where':{'name':_0xa5e680,'userProfileId':_0x479925[_0xf303('0x4a')]},'raw':!![]})[_0xf303('0x22')](function(_0x516384){if(_0x516384&&_0x516384[_0xf303('0x4b')]===0x0){return db[_0xf303('0x4c')][_0xf303('0x47')]({'name':_0x59bb42['name'],'resourceId':_0x59bb42['id'],'type':_0x516384[_0xf303('0x27')],'sectionId':_0x516384['id']},{})[_0xf303('0x22')](function(){return _0x1a15ee;});}else{return _0x1a15ee;}})[_0xf303('0x45')](function(_0x36f8fb){logger['error'](_0xf303('0x4d'),_0x36f8fb);throw _0x36f8fb;});}return _0x1a15ee;})[_0xf303('0x22')](respondWithResult(_0x449bd0,0xc9))[_0xf303('0x45')](handleError(_0x449bd0,null));};exports['update']=function(_0x290ff8,_0x5b7a2b){if(_0x290ff8[_0xf303('0x4e')]['id']){delete _0x290ff8[_0xf303('0x4e')]['id'];}return db[_0xf303('0x40')][_0xf303('0x4f')]({'where':{'id':_0x290ff8['params']['id']}})['then'](handleEntityNotFound(_0x5b7a2b,null))['then'](saveUpdates(_0x290ff8[_0xf303('0x4e')],null))[_0xf303('0x22')](respondWithResult(_0x5b7a2b,null))[_0xf303('0x45')](handleError(_0x5b7a2b,null));};exports[_0xf303('0x50')]=function(_0x1d2249,_0x76bbc){return db['Disposition'][_0xf303('0x4f')]({'where':{'id':_0x1d2249[_0xf303('0x51')]['id']}})[_0xf303('0x22')](handleEntityNotFound(_0x76bbc,null))[_0xf303('0x22')](removeEntity(_0x76bbc,null))[_0xf303('0x45')](handleError(_0x76bbc,null));};
\ No newline at end of file
index 342445f..e25c51f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf43=['../../config/logger','api','bluebird','request-promise','rimraf','exports','define','Disposition','tools_dispositions','name_voice','name','ListId','name_chat','ChatWebsiteId','name_mail','name_sms','FaxAccountId','name_openchannel','OpenchannelAccountId','name_whatsapp','WhatsappAccountId','lodash','util'];(function(_0x16268a,_0x10ce1b){var _0x419a09=function(_0x2026c9){while(--_0x2026c9){_0x16268a['push'](_0x16268a['shift']());}};_0x419a09(++_0x10ce1b);}(_0xcf43,0x129));var _0x3cf4=function(_0x527781,_0x3e1e4d){_0x527781=_0x527781-0x0;var _0x27282b=_0xcf43[_0x527781];return _0x27282b;};'use strict';var _=require(_0x3cf4('0x0'));var util=require(_0x3cf4('0x1'));var logger=require(_0x3cf4('0x2'))(_0x3cf4('0x3'));var moment=require('moment');var BPromise=require(_0x3cf4('0x4'));var rp=require(_0x3cf4('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3cf4('0x6'));var config=require('../../config/environment');var attributes=require('./disposition.attributes');module[_0x3cf4('0x7')]=function(_0x5e2a43,_0x21ec3c){return _0x5e2a43[_0x3cf4('0x8')](_0x3cf4('0x9'),attributes,{'tableName':_0x3cf4('0xa'),'paranoid':![],'indexes':[{'unique':!![],'name':_0x3cf4('0xb'),'fields':[_0x3cf4('0xc'),_0x3cf4('0xd')]},{'unique':!![],'name':_0x3cf4('0xe'),'fields':[_0x3cf4('0xc'),_0x3cf4('0xf')]},{'unique':!![],'name':_0x3cf4('0x10'),'fields':[_0x3cf4('0xc'),'MailAccountId']},{'unique':!![],'name':_0x3cf4('0x11'),'fields':[_0x3cf4('0xc'),'SmsAccountId']},{'unique':!![],'name':'name_fax','fields':[_0x3cf4('0xc'),_0x3cf4('0x12')]},{'unique':!![],'name':_0x3cf4('0x13'),'fields':[_0x3cf4('0xc'),_0x3cf4('0x14')]},{'unique':!![],'name':_0x3cf4('0x15'),'fields':[_0x3cf4('0xc'),_0x3cf4('0x16')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfb67=['./disposition.attributes','exports','define','Disposition','tools_dispositions','name','ListId','ChatWebsiteId','name_mail','MailAccountId','SmsAccountId','name_fax','name_openchannel','OpenchannelAccountId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x2776c0,_0x3bdc05){var _0x42b7b7=function(_0x94d837){while(--_0x94d837){_0x2776c0['push'](_0x2776c0['shift']());}};_0x42b7b7(++_0x3bdc05);}(_0xfb67,0xdd));var _0x7fb6=function(_0x20eff5,_0x2d75bf){_0x20eff5=_0x20eff5-0x0;var _0x4c1b10=_0xfb67[_0x20eff5];return _0x4c1b10;};'use strict';var _=require(_0x7fb6('0x0'));var util=require(_0x7fb6('0x1'));var logger=require(_0x7fb6('0x2'))(_0x7fb6('0x3'));var moment=require(_0x7fb6('0x4'));var BPromise=require(_0x7fb6('0x5'));var rp=require(_0x7fb6('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7fb6('0x7'));var config=require(_0x7fb6('0x8'));var attributes=require(_0x7fb6('0x9'));module[_0x7fb6('0xa')]=function(_0x3e7393,_0x59b2e2){return _0x3e7393[_0x7fb6('0xb')](_0x7fb6('0xc'),attributes,{'tableName':_0x7fb6('0xd'),'paranoid':![],'indexes':[{'unique':!![],'name':'name_voice','fields':[_0x7fb6('0xe'),_0x7fb6('0xf')]},{'unique':!![],'name':'name_chat','fields':[_0x7fb6('0xe'),_0x7fb6('0x10')]},{'unique':!![],'name':_0x7fb6('0x11'),'fields':['name',_0x7fb6('0x12')]},{'unique':!![],'name':'name_sms','fields':[_0x7fb6('0xe'),_0x7fb6('0x13')]},{'unique':!![],'name':_0x7fb6('0x14'),'fields':[_0x7fb6('0xe'),'FaxAccountId']},{'unique':!![],'name':_0x7fb6('0x15'),'fields':[_0x7fb6('0xe'),_0x7fb6('0x16')]},{'unique':!![],'name':'name_whatsapp','fields':['name','WhatsappAccountId']}],'timestamps':!![]});};
\ No newline at end of file
index c185e57..430d836 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(_0x4911a7,_0x3abc55){var _0x49bdd2=function(_0x196537){while(--_0x196537){_0x4911a7['push'](_0x4911a7['shift']());}};_0x49bdd2(++_0x3abc55);}(_0xa9e0,0x123));var _0x0a9e=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0xa9e0[_0x491a7f];return _0x3d8f44;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
+var _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(_0x470d6e,_0x504967){var _0x3c2544=function(_0x1f5dee){while(--_0x1f5dee){_0x470d6e['push'](_0x470d6e['shift']());}};_0x3c2544(++_0x504967);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0xa9e0[_0x3c4737];return _0x2bb926;};'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 8a36d30..3d94735 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0ca=['index','/:id','show','post','create','put','update','delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./disposition.controller','get','isAuthenticated'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xe0ca,0x1d5));var _0xae0c=function(_0x180632,_0x3a229e){_0x180632=_0x180632-0x0;var _0x151961=_0xe0ca[_0x180632];return _0x151961;};'use strict';var multer=require(_0xae0c('0x0'));var util=require(_0xae0c('0x1'));var path=require(_0xae0c('0x2'));var timeout=require(_0xae0c('0x3'));var express=require(_0xae0c('0x4'));var router=express['Router']();var fs_extra=require(_0xae0c('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xae0c('0x6'));var config=require(_0xae0c('0x7'));var controller=require(_0xae0c('0x8'));router[_0xae0c('0x9')]('/',auth[_0xae0c('0xa')](),controller[_0xae0c('0xb')]);router[_0xae0c('0x9')](_0xae0c('0xc'),auth[_0xae0c('0xa')](),controller[_0xae0c('0xd')]);router[_0xae0c('0xe')]('/',auth[_0xae0c('0xa')](),controller[_0xae0c('0xf')]);router[_0xae0c('0x10')](_0xae0c('0xc'),auth[_0xae0c('0xa')](),controller[_0xae0c('0x11')]);router[_0xae0c('0x12')](_0xae0c('0xc'),auth[_0xae0c('0xa')](),controller['destroy']);module[_0xae0c('0x13')]=router;
\ No newline at end of file
+var _0xc579=['update','delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./disposition.controller','get','isAuthenticated','index','/:id','show','post','create'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xc579,0x159));var _0x9c57=function(_0x3cd713,_0x27a6af){_0x3cd713=_0x3cd713-0x0;var _0x474146=_0xc579[_0x3cd713];return _0x474146;};'use strict';var multer=require(_0x9c57('0x0'));var util=require('util');var path=require(_0x9c57('0x1'));var timeout=require(_0x9c57('0x2'));var express=require(_0x9c57('0x3'));var router=express[_0x9c57('0x4')]();var fs_extra=require(_0x9c57('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x9c57('0x6'));var config=require(_0x9c57('0x7'));var controller=require(_0x9c57('0x8'));router[_0x9c57('0x9')]('/',auth[_0x9c57('0xa')](),controller[_0x9c57('0xb')]);router[_0x9c57('0x9')](_0x9c57('0xc'),auth['isAuthenticated'](),controller[_0x9c57('0xd')]);router[_0x9c57('0xe')]('/',auth[_0x9c57('0xa')](),controller[_0x9c57('0xf')]);router['put'](_0x9c57('0xc'),auth['isAuthenticated'](),controller[_0x9c57('0x10')]);router[_0x9c57('0x11')](_0x9c57('0xc'),auth[_0x9c57('0xa')](),controller['destroy']);module[_0x9c57('0x12')]=router;
\ No newline at end of file
index cc1863f..555213c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a34=['TEXT','BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','STRING','xCALLY\x20Motion\x20Fax','ENUM','4800','7200','9600','12000','14400','INTEGER','IAX','DADHI','SIP'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7a34,0x146));var _0x47a3=function(_0x3e7ae6,_0x2e14d9){_0x3e7ae6=_0x3e7ae6-0x0;var _0xdfaa19=_0x7a34[_0x3e7ae6];return _0xdfaa19;};'use strict';var Sequelize=require(_0x47a3('0x0'));module[_0x47a3('0x1')]={'name':{'type':Sequelize[_0x47a3('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x47a3('0x2')]},'ecm':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'yes'},'headerinfo':{'type':Sequelize[_0x47a3('0x2')],'defaultValue':_0x47a3('0x3')},'localstationid':{'type':Sequelize['STRING'],'unique':'localstationid'},'minrate':{'type':Sequelize[_0x47a3('0x4')]('2400',_0x47a3('0x5'),_0x47a3('0x6'),_0x47a3('0x7'),_0x47a3('0x8'),_0x47a3('0x9')),'defaultValue':_0x47a3('0x5')},'maxrate':{'type':Sequelize[_0x47a3('0x4')]('2400',_0x47a3('0x5'),_0x47a3('0x6'),_0x47a3('0x7'),_0x47a3('0x8'),'14400'),'defaultValue':_0x47a3('0x9')},'modem':{'type':Sequelize[_0x47a3('0x2')],'defaultValue':'v17,v27,v29'},'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[_0x47a3('0xa')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x47a3('0x4')]('SIP',_0x47a3('0xb'),_0x47a3('0xc'),'KHOMP'),'defaultValue':_0x47a3('0xd')},'key':{'type':Sequelize[_0x47a3('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x47a3('0xe')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x47a3('0xf')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x47a3('0xf')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x47a3('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x47a3('0xf')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x47a3('0xf')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x47a3('0xa')],'allowNull':!![],'defaultValue':null,'comment':_0x47a3('0x10')},'mandatoryDisposition':{'type':Sequelize[_0x47a3('0xf')],'defaultValue':![],'comment':_0x47a3('0x11'),'set':function(_0x17efa1){if(!_0x17efa1)this['setDataValue'](_0x47a3('0x12'),null);this['setDataValue'](_0x47a3('0x13'),_0x17efa1);}}};
\ No newline at end of file
+var _0xf5f3=['setDataValue','sequelize','exports','STRING','yes','xCALLY\x20Motion\x20Fax','localstationid','ENUM','2400','4800','7200','12000','14400','v17,v27,v29','INTEGER','SIP','IAX','DADHI','KHOMP','TEXT','BOOLEAN'];(function(_0x1b22e8,_0x43582d){var _0x15dd16=function(_0x3a04c8){while(--_0x3a04c8){_0x1b22e8['push'](_0x1b22e8['shift']());}};_0x15dd16(++_0x43582d);}(_0xf5f3,0x151));var _0x3f5f=function(_0x2b1257,_0x3f4f2c){_0x2b1257=_0x2b1257-0x0;var _0x47aecd=_0xf5f3[_0x2b1257];return _0x47aecd;};'use strict';var Sequelize=require(_0x3f5f('0x0'));module[_0x3f5f('0x1')]={'name':{'type':Sequelize[_0x3f5f('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x3f5f('0x2')]},'ecm':{'type':Sequelize['ENUM'](_0x3f5f('0x3'),'no'),'defaultValue':_0x3f5f('0x3')},'headerinfo':{'type':Sequelize[_0x3f5f('0x2')],'defaultValue':_0x3f5f('0x4')},'localstationid':{'type':Sequelize[_0x3f5f('0x2')],'unique':_0x3f5f('0x5')},'minrate':{'type':Sequelize[_0x3f5f('0x6')](_0x3f5f('0x7'),_0x3f5f('0x8'),_0x3f5f('0x9'),'9600',_0x3f5f('0xa'),_0x3f5f('0xb')),'defaultValue':_0x3f5f('0x8')},'maxrate':{'type':Sequelize[_0x3f5f('0x6')](_0x3f5f('0x7'),_0x3f5f('0x8'),_0x3f5f('0x9'),'9600',_0x3f5f('0xa'),'14400'),'defaultValue':'14400'},'modem':{'type':Sequelize[_0x3f5f('0x2')],'defaultValue':_0x3f5f('0xc')},'gateway':{'type':Sequelize[_0x3f5f('0x2')],'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[_0x3f5f('0xd')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize['ENUM'](_0x3f5f('0xe'),_0x3f5f('0xf'),_0x3f5f('0x10'),_0x3f5f('0x11')),'defaultValue':'SIP'},'key':{'type':Sequelize[_0x3f5f('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x3f5f('0x12')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x3f5f('0x13')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x3f5f('0x13')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x3f5f('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x3f5f('0x13')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x3f5f('0x13')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x4a50ca){if(!_0x4a50ca)this[_0x3f5f('0x14')]('mandatoryDispositionPauseId',null);this[_0x3f5f('0x14')]('mandatoryDisposition',_0x4a50ca);}}};
\ No newline at end of file
index 6730b6f..b0469ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x966c=['includeAll','include','findAll','rows','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','FaxAccounts','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','destroy','describe','addDisposition','FaxAccountId','Disposition','getDispositions','findOne','hasOwnProperty','removeDispositions','ids','CannedAnswer','getAnswers','addInteraction','omit','FaxInteraction','nolimit','pick','CmContact','User','Owner','fullname','internal','Tag','Tags','color','tag','addApplications','sequelize','transaction','FaxApplication','bulkCreate','findAndCountAll','priority','getApplications','context','exten','localstationid','app','description','appdata','push','Answer','CDR(type)=inbound-fax','Set','ecm','gateway','faxdetect','headerinfo','maxrate','minrate','t38timeout','VoiceExtension','createdAt','updatedAt','TrunkId','findById','getMessages','FaxMessage','$gte','format','YYYY-MM-DD\x20HH:mm:ss','CmList','List','Contacts','DESC','attachments','root','server/files/attachments','basename','CheckAfterSend','isNil','from','List\x20not\x20found','Send\x20Fax\x20failed','out','filename','Contact\x20not\x20found','spread','ContactId','dataValues','Messages','SendFax','SendFaxRpc,\x20%s','addAgents','emit','userFaxAccount:save','removeAgents','isArray','userFaxAccount:remove','getAgents','eml-format','zip-dir','fast-json-patch','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','redis','register','jayson/promise','client','http','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','error','code','message','catch','sendStatus','status','json','offset','limit','undefined','count','set','apply','save','then','get','end','name','send','index','Pause','mandatoryDispositionPause','map','FaxAccount','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','order','sort','where','filters','filter','merge','options'];(function(_0x37b529,_0x6724e7){var _0x116152=function(_0x36d367){while(--_0x36d367){_0x37b529['push'](_0x37b529['shift']());}};_0x116152(++_0x6724e7);}(_0x966c,0x1d6));var _0xc966=function(_0x553c61,_0x590cd5){_0x553c61=_0x553c61-0x0;var _0x414b1e=_0x966c[_0x553c61];return _0x414b1e;};'use strict';var emlformat=require(_0xc966('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc966('0x1'));var jsonpatch=require(_0xc966('0x2'));var rp=require('request-promise');var moment=require(_0xc966('0x3'));var BPromise=require(_0xc966('0x4'));var Mustache=require('mustache');var util=require(_0xc966('0x5'));var path=require(_0xc966('0x6'));var sox=require('sox');var csv=require(_0xc966('0x7'));var ejs=require(_0xc966('0x8'));var fs=require('fs');var fs_extra=require(_0xc966('0x9'));var _=require(_0xc966('0xa'));var squel=require(_0xc966('0xb'));var crypto=require(_0xc966('0xc'));var jsforce=require(_0xc966('0xd'));var deskjs=require(_0xc966('0xe'));var toCsv=require(_0xc966('0x7'));var querystring=require(_0xc966('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xc966('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xc966('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc966('0x12'))(_0xc966('0x13'));var utils=require(_0xc966('0x14'));var config=require(_0xc966('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xc966('0x16')]=_['defaults'](config[_0xc966('0x16')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc966('0x16')]));require('./faxAccount.socket')[_0xc966('0x17')](socket);var jayson=require(_0xc966('0x18'));var client=jayson[_0xc966('0x19')][_0xc966('0x1a')]({'port':0x232c});var client9002=jayson[_0xc966('0x19')][_0xc966('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x268a16,_0x32670d,_0x3fc5fb,_0x4c2f2c){return new BPromise(function(_0x5e8ecc,_0x26fa4a){var _0x266b92=_0x4c2f2c||client;return _0x266b92['request'](_0x268a16,_0x3fc5fb)['then'](function(_0x3989db){logger['info'](_0xc966('0x1b'),_0x32670d,_0xc966('0x1c'));logger[_0xc966('0x1d')](_0xc966('0x1e'),_0x32670d,_0xc966('0x1c'),JSON['stringify'](_0x3989db));if(_0x3989db['error']){if(_0x3989db[_0xc966('0x1f')][_0xc966('0x20')]===0x1f4){logger[_0xc966('0x1f')](_0xc966('0x1b'),_0x32670d,_0x3989db['error'][_0xc966('0x21')]);return _0x26fa4a(_0x3989db[_0xc966('0x1f')][_0xc966('0x21')]);}logger['error']('FaxAccount,\x20%s,\x20%s',_0x32670d,_0x3989db[_0xc966('0x1f')][_0xc966('0x21')]);return _0x5e8ecc(_0x3989db[_0xc966('0x1f')][_0xc966('0x21')]);}else{logger['info'](_0xc966('0x1b'),_0x32670d,_0xc966('0x1c'));_0x5e8ecc(_0x3989db['result']['message']);}})[_0xc966('0x22')](function(_0x1ce272){logger['error'](_0xc966('0x1b'),_0x32670d,_0x1ce272);_0x26fa4a(_0x1ce272);});});}function respondWithStatusCode(_0x26846c,_0x3bd33d){_0x3bd33d=_0x3bd33d||0xcc;return function(_0x24b4b2){if(_0x24b4b2){return _0x26846c[_0xc966('0x23')](_0x3bd33d);}return _0x26846c['status'](_0x3bd33d)['end']();};}function respondWithResult(_0x4de874,_0xab26d1){_0xab26d1=_0xab26d1||0xc8;return function(_0x15966e){if(_0x15966e){return _0x4de874[_0xc966('0x24')](_0xab26d1)[_0xc966('0x25')](_0x15966e);}};}function respondWithFilteredResult(_0x444309,_0x23b3c4){return function(_0x1ec292){if(_0x1ec292){var _0x49be9b=typeof _0x23b3c4[_0xc966('0x26')]==='undefined'&&typeof _0x23b3c4[_0xc966('0x27')]===_0xc966('0x28');var _0x3ab2dc=_0x1ec292[_0xc966('0x29')];var _0x1ba680=_0x49be9b?0x0:_0x23b3c4[_0xc966('0x26')];var _0x20597f=_0x49be9b?_0x1ec292['count']:_0x23b3c4[_0xc966('0x26')]+_0x23b3c4[_0xc966('0x27')];var _0x2778b9;if(_0x20597f>=_0x3ab2dc){_0x20597f=_0x3ab2dc;_0x2778b9=0xc8;}else{_0x2778b9=0xce;}_0x444309[_0xc966('0x24')](_0x2778b9);return _0x444309[_0xc966('0x2a')]('Content-Range',_0x1ba680+'-'+_0x20597f+'/'+_0x3ab2dc)[_0xc966('0x25')](_0x1ec292);}return null;};}function patchUpdates(_0x62aafb){return function(_0x137f95){try{jsonpatch[_0xc966('0x2b')](_0x137f95,_0x62aafb,!![]);}catch(_0x588fe6){return BPromise['reject'](_0x588fe6);}return _0x137f95[_0xc966('0x2c')]();};}function saveUpdates(_0x173265,_0x27abc9){return function(_0x455eac){if(_0x455eac){return _0x455eac['update'](_0x173265)[_0xc966('0x2d')](function(_0x9a8ecf){return _0x9a8ecf;});}return null;};}function removeEntity(_0xbb017f,_0x20bdd5){return function(_0x4bc457){if(_0x4bc457){return _0x4bc457['destroy']()[_0xc966('0x2d')](function(){var _0x1bb163=_0x4bc457[_0xc966('0x2e')]({'plain':!![]});var _0x246857='FaxAccounts';return db['UserProfileResource']['destroy']({'where':{'type':_0x246857,'resourceId':_0x1bb163['id']}})[_0xc966('0x2d')](function(){return _0x4bc457;});})[_0xc966('0x2d')](function(){_0xbb017f[_0xc966('0x24')](0xcc)[_0xc966('0x2f')]();});}};}function handleEntityNotFound(_0x4d9898,_0x24d84){return function(_0x47f7ec){if(!_0x47f7ec){_0x4d9898[_0xc966('0x23')](0x194);}return _0x47f7ec;};}function handleError(_0x363aab,_0x3c41c2){_0x3c41c2=_0x3c41c2||0x1f4;return function(_0x3a4381){logger[_0xc966('0x1f')](_0x3a4381['stack']);if(_0x3a4381['name']){delete _0x3a4381[_0xc966('0x30')];}_0x363aab[_0xc966('0x24')](_0x3c41c2)[_0xc966('0x31')](_0x3a4381);};}exports[_0xc966('0x32')]=function(_0x1def3f,_0x34c7a2){var _0x26650b={'include':[{'model':db[_0xc966('0x33')],'as':_0xc966('0x34')}]},_0x36b4c3={},_0x57a0a0={'count':0x0,'rows':[]};var _0x38cb27=_[_0xc966('0x35')](db[_0xc966('0x36')][_0xc966('0x37')],function(_0x36e484){return{'name':_0x36e484[_0xc966('0x38')],'type':_0x36e484[_0xc966('0x39')][_0xc966('0x3a')]};});_0x36b4c3[_0xc966('0x3b')]=_[_0xc966('0x35')](_0x38cb27,_0xc966('0x30'));_0x36b4c3[_0xc966('0x3c')]=_[_0xc966('0x3d')](_0x1def3f['query']);_0x36b4c3['filters']=_[_0xc966('0x3e')](_0x36b4c3[_0xc966('0x3b')],_0x36b4c3[_0xc966('0x3c')]);_0x26650b[_0xc966('0x3f')]=_[_0xc966('0x3e')](_0x36b4c3[_0xc966('0x3b')],qs[_0xc966('0x40')](_0x1def3f[_0xc966('0x3c')]['fields']));_0x26650b[_0xc966('0x3f')]=_0x26650b['attributes'][_0xc966('0x41')]?_0x26650b['attributes']:_0x36b4c3[_0xc966('0x3b')];if(!_0x1def3f[_0xc966('0x3c')]['hasOwnProperty']('nolimit')){_0x26650b[_0xc966('0x27')]=qs[_0xc966('0x27')](_0x1def3f[_0xc966('0x3c')][_0xc966('0x27')]);_0x26650b[_0xc966('0x26')]=qs[_0xc966('0x26')](_0x1def3f['query'][_0xc966('0x26')]);}_0x26650b[_0xc966('0x42')]=qs[_0xc966('0x43')](_0x1def3f['query'][_0xc966('0x43')]);_0x26650b[_0xc966('0x44')]=qs[_0xc966('0x45')](_['pick'](_0x1def3f[_0xc966('0x3c')],_0x36b4c3[_0xc966('0x45')]),_0x38cb27);if(_0x1def3f[_0xc966('0x3c')][_0xc966('0x46')]){_0x26650b[_0xc966('0x44')]=_[_0xc966('0x47')](_0x26650b[_0xc966('0x44')],{'$or':_[_0xc966('0x35')](_0x38cb27,function(_0x4523e7){if(_0x4523e7['type']!=='VIRTUAL'){var _0x35e0f6={};_0x35e0f6[_0x4523e7[_0xc966('0x30')]]={'$like':'%'+_0x1def3f[_0xc966('0x3c')][_0xc966('0x46')]+'%'};return _0x35e0f6;}})});}_0x26650b=_[_0xc966('0x47')]({},_0x26650b,_0x1def3f[_0xc966('0x48')]);var _0xaf3d3f={'where':_0x26650b[_0xc966('0x44')]};return db[_0xc966('0x36')]['count'](_0xaf3d3f)[_0xc966('0x2d')](function(_0x4d39d6){_0x57a0a0[_0xc966('0x29')]=_0x4d39d6;if(_0x1def3f[_0xc966('0x3c')][_0xc966('0x49')]){_0x26650b[_0xc966('0x4a')]=[{'all':!![]}];}return db['FaxAccount'][_0xc966('0x4b')](_0x26650b);})[_0xc966('0x2d')](function(_0x5ce1cf){_0x57a0a0[_0xc966('0x4c')]=_0x5ce1cf;return _0x57a0a0;})['then'](respondWithFilteredResult(_0x34c7a2,_0x26650b))[_0xc966('0x22')](handleError(_0x34c7a2,null));};exports['show']=function(_0x49a192,_0x2e034a){var _0x368cd9={'raw':![],'where':{'id':_0x49a192[_0xc966('0x4d')]['id']},'include':[{'model':db[_0xc966('0x33')],'as':_0xc966('0x34')}]},_0x4d2209={};_0x4d2209[_0xc966('0x3b')]=_[_0xc966('0x3d')](db[_0xc966('0x36')][_0xc966('0x37')]);_0x4d2209[_0xc966('0x3c')]=_[_0xc966('0x3d')](_0x49a192[_0xc966('0x3c')]);_0x4d2209[_0xc966('0x45')]=_[_0xc966('0x3e')](_0x4d2209[_0xc966('0x3b')],_0x4d2209[_0xc966('0x3c')]);_0x368cd9['attributes']=_[_0xc966('0x3e')](_0x4d2209[_0xc966('0x3b')],qs['fields'](_0x49a192[_0xc966('0x3c')][_0xc966('0x40')]));_0x368cd9[_0xc966('0x3f')]=_0x368cd9[_0xc966('0x3f')]['length']?_0x368cd9['attributes']:_0x4d2209['model'];if(_0x49a192[_0xc966('0x3c')][_0xc966('0x49')]){_0x368cd9[_0xc966('0x4a')]=[{'all':!![]}];}_0x368cd9=_[_0xc966('0x47')]({},_0x368cd9,_0x49a192[_0xc966('0x48')]);return db[_0xc966('0x36')][_0xc966('0x4e')](_0x368cd9)[_0xc966('0x2d')](handleEntityNotFound(_0x2e034a,null))[_0xc966('0x2d')](respondWithResult(_0x2e034a,null))['catch'](handleError(_0x2e034a,null));};exports[_0xc966('0x4f')]=function(_0x3a2f1f,_0x3cf7e9){return db[_0xc966('0x36')][_0xc966('0x4f')](_0x3a2f1f[_0xc966('0x50')],{})[_0xc966('0x2d')](function(_0xcb914e){var _0x320f2f=_0x3a2f1f[_0xc966('0x51')][_0xc966('0x2e')]({'plain':!![]});if(!_0x320f2f)throw new Error(_0xc966('0x52'));if(_0x320f2f[_0xc966('0x53')]===_0xc966('0x51')){var _0x452214=_0xcb914e['get']({'plain':!![]});var _0x5373e9=_0xc966('0x54');return db[_0xc966('0x55')][_0xc966('0x4e')]({'where':{'name':_0x5373e9,'userProfileId':_0x320f2f[_0xc966('0x56')]},'raw':!![]})[_0xc966('0x2d')](function(_0x2d2b35){if(_0x2d2b35&&_0x2d2b35[_0xc966('0x57')]===0x0){return db[_0xc966('0x58')][_0xc966('0x4f')]({'name':_0x452214['name'],'resourceId':_0x452214['id'],'type':_0x2d2b35[_0xc966('0x30')],'sectionId':_0x2d2b35['id']},{})[_0xc966('0x2d')](function(){return _0xcb914e;});}else{return _0xcb914e;}})['catch'](function(_0x30e26f){logger[_0xc966('0x1f')](_0xc966('0x59'),_0x30e26f);throw _0x30e26f;});}return _0xcb914e;})[_0xc966('0x2d')](respondWithResult(_0x3cf7e9,0xc9))['catch'](handleError(_0x3cf7e9,null));};exports[_0xc966('0x5a')]=function(_0xd8c404,_0x43b45a){if(_0xd8c404[_0xc966('0x50')]['id']){delete _0xd8c404[_0xc966('0x50')]['id'];}return db[_0xc966('0x36')][_0xc966('0x4e')]({'where':{'id':_0xd8c404[_0xc966('0x4d')]['id']},'include':[{'model':db[_0xc966('0x33')],'as':_0xc966('0x34')}]})[_0xc966('0x2d')](handleEntityNotFound(_0x43b45a,null))[_0xc966('0x2d')](saveUpdates(_0xd8c404[_0xc966('0x50')],null))[_0xc966('0x2d')](respondWithResult(_0x43b45a,null))['catch'](handleError(_0x43b45a,null));};exports[_0xc966('0x5b')]=function(_0x543583,_0x154dee){return db[_0xc966('0x36')][_0xc966('0x4e')]({'where':{'id':_0x543583[_0xc966('0x4d')]['id']}})[_0xc966('0x2d')](handleEntityNotFound(_0x154dee,null))[_0xc966('0x2d')](removeEntity(_0x154dee,null))[_0xc966('0x22')](handleError(_0x154dee,null));};exports[_0xc966('0x5c')]=function(_0x2edd24,_0x3f6d05){return db[_0xc966('0x36')][_0xc966('0x5c')]()['then'](respondWithResult(_0x3f6d05,null))[_0xc966('0x22')](handleError(_0x3f6d05,null));};exports[_0xc966('0x5d')]=function(_0x380a14,_0x159c4a,_0x48fba1){if(_0x380a14[_0xc966('0x50')]['id']){delete _0x380a14[_0xc966('0x50')]['id'];}return db[_0xc966('0x36')][_0xc966('0x4e')]({'where':{'id':_0x380a14[_0xc966('0x4d')]['id']}})[_0xc966('0x2d')](handleEntityNotFound(_0x159c4a,null))[_0xc966('0x2d')](function(_0x29b869){if(_0x29b869){_0x380a14[_0xc966('0x50')][_0xc966('0x5e')]=_0x29b869['id'];return db[_0xc966('0x5f')]['create'](_0x380a14['body']);}})['then'](respondWithResult(_0x159c4a,null))[_0xc966('0x22')](handleError(_0x159c4a,null));};exports[_0xc966('0x60')]=function(_0x49b7b9,_0x4ca560,_0x4512d3){var _0x21b5ec={'raw':![],'where':{}};var _0x547461={};var _0x2ec34a={'count':0x0,'rows':[]};return db[_0xc966('0x36')][_0xc966('0x61')]({'where':{'id':_0x49b7b9[_0xc966('0x4d')]['id']}})['then'](handleEntityNotFound(_0x4ca560,null))[_0xc966('0x2d')](function(_0x30f69a){if(_0x30f69a){_0x547461[_0xc966('0x3b')]=_[_0xc966('0x3d')](db['Disposition'][_0xc966('0x37')]);_0x547461[_0xc966('0x3c')]=_['keys'](_0x49b7b9['query']);_0x547461[_0xc966('0x45')]=_[_0xc966('0x3e')](_0x547461['model'],_0x547461[_0xc966('0x3c')]);_0x21b5ec[_0xc966('0x3f')]=_[_0xc966('0x3e')](_0x547461['model'],qs[_0xc966('0x40')](_0x49b7b9[_0xc966('0x3c')]['fields']));_0x21b5ec[_0xc966('0x3f')]=_0x21b5ec['attributes'][_0xc966('0x41')]?_0x21b5ec[_0xc966('0x3f')]:_0x547461[_0xc966('0x3b')];if(!_0x49b7b9['query'][_0xc966('0x62')]('nolimit')){_0x21b5ec[_0xc966('0x27')]=qs['limit'](_0x49b7b9[_0xc966('0x3c')][_0xc966('0x27')]);_0x21b5ec[_0xc966('0x26')]=qs[_0xc966('0x26')](_0x49b7b9[_0xc966('0x3c')][_0xc966('0x26')]);}_0x21b5ec[_0xc966('0x42')]=qs[_0xc966('0x43')](_0x49b7b9['query'][_0xc966('0x43')]);_0x21b5ec[_0xc966('0x44')]=qs[_0xc966('0x45')](_['pick'](_0x49b7b9[_0xc966('0x3c')],_0x547461['filters']));_0x21b5ec[_0xc966('0x44')][_0xc966('0x5e')]=_0x30f69a['id'];if(_0x49b7b9[_0xc966('0x3c')][_0xc966('0x46')]){_0x21b5ec[_0xc966('0x44')]=_[_0xc966('0x47')](_0x21b5ec['where'],{'$or':_['map'](_0x21b5ec['attributes'],function(_0x3682c7){var _0x514b59={};_0x514b59[_0x3682c7]={'$like':'%'+_0x49b7b9['query'][_0xc966('0x46')]+'%'};return _0x514b59;})});}_0x21b5ec=_['merge']({},_0x21b5ec,_0x49b7b9[_0xc966('0x48')]);return db[_0xc966('0x5f')]['count']({'where':_0x21b5ec[_0xc966('0x44')]})['then'](function(_0x1652a1){_0x2ec34a[_0xc966('0x29')]=_0x1652a1;if(_0x49b7b9['query'][_0xc966('0x49')]){_0x21b5ec['include']=[{'all':!![]}];}return db[_0xc966('0x5f')][_0xc966('0x4b')](_0x21b5ec);})[_0xc966('0x2d')](function(_0x1c5a10){_0x2ec34a['rows']=_0x1c5a10;return _0x2ec34a;});}})[_0xc966('0x2d')](respondWithFilteredResult(_0x4ca560,_0x21b5ec))[_0xc966('0x22')](handleError(_0x4ca560,null));};exports[_0xc966('0x63')]=function(_0x62db26,_0x274c52,_0x4e5d93){return db[_0xc966('0x36')][_0xc966('0x4e')]({'where':{'id':_0x62db26[_0xc966('0x4d')]['id']}})[_0xc966('0x2d')](handleEntityNotFound(_0x274c52,null))[_0xc966('0x2d')](function(_0x455219){if(_0x455219){return _0x455219[_0xc966('0x63')](_0x62db26[_0xc966('0x3c')][_0xc966('0x64')]);}})[_0xc966('0x2d')](respondWithStatusCode(_0x274c52,null))[_0xc966('0x22')](handleError(_0x274c52,null));};exports['addAnswer']=function(_0x178abe,_0x5bb062,_0x28df07){if(_0x178abe[_0xc966('0x50')]['id']){delete _0x178abe[_0xc966('0x50')]['id'];}return db['FaxAccount'][_0xc966('0x4e')]({'where':{'id':_0x178abe[_0xc966('0x4d')]['id']}})[_0xc966('0x2d')](handleEntityNotFound(_0x5bb062,null))[_0xc966('0x2d')](function(_0x2f7ad4){if(_0x2f7ad4){_0x178abe[_0xc966('0x50')][_0xc966('0x5e')]=_0x2f7ad4['id'];return db[_0xc966('0x65')][_0xc966('0x4f')](_0x178abe[_0xc966('0x50')]);}})[_0xc966('0x2d')](respondWithResult(_0x5bb062,null))[_0xc966('0x22')](handleError(_0x5bb062,null));};exports[_0xc966('0x66')]=function(_0x11b791,_0x2dc115,_0x198720){var _0x4cb081={'raw':![],'where':{}};var _0x1a4d66={};var _0x2dc016={'count':0x0,'rows':[]};return db['FaxAccount'][_0xc966('0x61')]({'where':{'id':_0x11b791[_0xc966('0x4d')]['id']}})[_0xc966('0x2d')](handleEntityNotFound(_0x2dc115,null))[_0xc966('0x2d')](function(_0x4a7678){if(_0x4a7678){_0x1a4d66[_0xc966('0x3b')]=_['keys'](db['CannedAnswer'][_0xc966('0x37')]);_0x1a4d66['query']=_['keys'](_0x11b791[_0xc966('0x3c')]);_0x1a4d66['filters']=_['intersection'](_0x1a4d66[_0xc966('0x3b')],_0x1a4d66[_0xc966('0x3c')]);_0x4cb081['attributes']=_[_0xc966('0x3e')](_0x1a4d66[_0xc966('0x3b')],qs['fields'](_0x11b791['query']['fields']));_0x4cb081['attributes']=_0x4cb081[_0xc966('0x3f')][_0xc966('0x41')]?_0x4cb081['attributes']:_0x1a4d66[_0xc966('0x3b')];if(!_0x11b791[_0xc966('0x3c')][_0xc966('0x62')]('nolimit')){_0x4cb081[_0xc966('0x27')]=qs[_0xc966('0x27')](_0x11b791[_0xc966('0x3c')][_0xc966('0x27')]);_0x4cb081[_0xc966('0x26')]=qs[_0xc966('0x26')](_0x11b791[_0xc966('0x3c')][_0xc966('0x26')]);}_0x4cb081['order']=qs[_0xc966('0x43')](_0x11b791[_0xc966('0x3c')]['sort']);_0x4cb081[_0xc966('0x44')]=qs[_0xc966('0x45')](_['pick'](_0x11b791[_0xc966('0x3c')],_0x1a4d66[_0xc966('0x45')]));_0x4cb081[_0xc966('0x44')][_0xc966('0x5e')]=_0x4a7678['id'];if(_0x11b791[_0xc966('0x3c')][_0xc966('0x46')]){_0x4cb081[_0xc966('0x44')]=_['merge'](_0x4cb081['where'],{'$or':_[_0xc966('0x35')](_0x4cb081[_0xc966('0x3f')],function(_0x2dca94){var _0x5700c4={};_0x5700c4[_0x2dca94]={'$like':'%'+_0x11b791[_0xc966('0x3c')][_0xc966('0x46')]+'%'};return _0x5700c4;})});}_0x4cb081=_[_0xc966('0x47')]({},_0x4cb081,_0x11b791[_0xc966('0x48')]);return db[_0xc966('0x65')]['count']({'where':_0x4cb081[_0xc966('0x44')]})['then'](function(_0x49701c){_0x2dc016[_0xc966('0x29')]=_0x49701c;if(_0x11b791[_0xc966('0x3c')]['includeAll']){_0x4cb081[_0xc966('0x4a')]=[{'all':!![]}];}return db['CannedAnswer'][_0xc966('0x4b')](_0x4cb081);})['then'](function(_0x5f093c){_0x2dc016[_0xc966('0x4c')]=_0x5f093c;return _0x2dc016;});}})[_0xc966('0x2d')](respondWithFilteredResult(_0x2dc115,_0x4cb081))[_0xc966('0x22')](handleError(_0x2dc115,null));};exports['removeAnswers']=function(_0x60fffc,_0xfa62c0,_0x5b570f){return db[_0xc966('0x36')][_0xc966('0x4e')]({'where':{'id':_0x60fffc['params']['id']}})[_0xc966('0x2d')](handleEntityNotFound(_0xfa62c0,null))[_0xc966('0x2d')](function(_0x2ff294){if(_0x2ff294){return _0x2ff294['removeAnswers'](_0x60fffc[_0xc966('0x3c')][_0xc966('0x64')]);}})[_0xc966('0x2d')](respondWithStatusCode(_0xfa62c0,null))['catch'](handleError(_0xfa62c0,null));};exports[_0xc966('0x67')]=function(_0x21a120,_0x33e0b0,_0x25b47f){return db['FaxInteraction'][_0xc966('0x4e')]({'where':{'id':_0x21a120['params']['id']}})['then'](handleEntityNotFound(_0x33e0b0,null))['then'](function(_0x51aa56){if(_0x51aa56){return _0x51aa56[_0xc966('0x67')](_0x21a120[_0xc966('0x50')]['ids'],_[_0xc966('0x68')](_0x21a120[_0xc966('0x50')],[_0xc966('0x64'),'id'])||{});}})[_0xc966('0x2d')](respondWithResult(_0x33e0b0,null))[_0xc966('0x22')](handleError(_0x33e0b0,null));};exports['getInteractions']=function(_0x26c1a2,_0x1db1df,_0x3f7b66){var _0x569086={'raw':![],'where':{}};var _0x11e313={};var _0x468424={'count':0x0,'rows':[]};return db[_0xc966('0x36')][_0xc966('0x61')]({'where':{'id':_0x26c1a2[_0xc966('0x4d')]['id']}})[_0xc966('0x2d')](handleEntityNotFound(_0x1db1df,null))[_0xc966('0x2d')](function(_0x14f30){if(_0x14f30){_0x11e313[_0xc966('0x3b')]=_[_0xc966('0x3d')](db[_0xc966('0x69')][_0xc966('0x37')]);_0x11e313[_0xc966('0x3c')]=_[_0xc966('0x3d')](_0x26c1a2['query']);_0x11e313[_0xc966('0x45')]=_[_0xc966('0x3e')](_0x11e313['model'],_0x11e313[_0xc966('0x3c')]);_0x569086[_0xc966('0x3f')]=_[_0xc966('0x3e')](_0x11e313[_0xc966('0x3b')],qs[_0xc966('0x40')](_0x26c1a2[_0xc966('0x3c')][_0xc966('0x40')]));_0x569086[_0xc966('0x3f')]=_0x569086['attributes'][_0xc966('0x41')]?_0x569086['attributes']:_0x11e313[_0xc966('0x3b')];if(!_0x26c1a2[_0xc966('0x3c')][_0xc966('0x62')](_0xc966('0x6a'))){_0x569086[_0xc966('0x27')]=qs[_0xc966('0x27')](_0x26c1a2[_0xc966('0x3c')]['limit']);_0x569086[_0xc966('0x26')]=qs[_0xc966('0x26')](_0x26c1a2['query'][_0xc966('0x26')]);}_0x569086[_0xc966('0x42')]=qs[_0xc966('0x43')](_0x26c1a2[_0xc966('0x3c')]['sort']);_0x569086[_0xc966('0x44')]=qs[_0xc966('0x45')](_[_0xc966('0x6b')](_0x26c1a2['query'],_0x11e313[_0xc966('0x45')]));_0x569086[_0xc966('0x44')]['FaxAccountId']=_0x14f30['id'];if(_0x26c1a2[_0xc966('0x3c')][_0xc966('0x46')]){_0x569086[_0xc966('0x44')]=_[_0xc966('0x47')](_0x569086[_0xc966('0x44')],{'$or':_['map'](_0x569086[_0xc966('0x3f')],function(_0x5c0685){var _0xa26810={};_0xa26810[_0x5c0685]={'$like':'%'+_0x26c1a2[_0xc966('0x3c')]['filter']+'%'};return _0xa26810;})});}_0x569086=_[_0xc966('0x47')]({},_0x569086,_0x26c1a2[_0xc966('0x48')]);return db[_0xc966('0x69')][_0xc966('0x29')]({'where':_0x569086[_0xc966('0x44')]})['then'](function(_0x46ae2e){_0x468424['count']=_0x46ae2e;if(_0x26c1a2['query'][_0xc966('0x49')]){_0x569086[_0xc966('0x4a')]=[{'model':db[_0xc966('0x6c')],'as':'Contact','required':![]},{'model':db[_0xc966('0x6d')],'as':_0xc966('0x6e'),'attributes':[_0xc966('0x30'),_0xc966('0x6f'),_0xc966('0x70')],'required':![]},{'model':db[_0xc966('0x71')],'as':_0xc966('0x72'),'attributes':['id',_0xc966('0x30'),_0xc966('0x73')],'where':_0x26c1a2[_0xc966('0x3c')][_0xc966('0x74')]?{'id':_0x26c1a2[_0xc966('0x3c')][_0xc966('0x74')]}:undefined,'required':_0x26c1a2[_0xc966('0x3c')][_0xc966('0x74')]?!![]:![]}];}return db[_0xc966('0x69')][_0xc966('0x4b')](_0x569086);})['then'](function(_0x51a112){_0x468424[_0xc966('0x4c')]=_0x51a112;return _0x468424;});}})[_0xc966('0x2d')](respondWithFilteredResult(_0x1db1df,_0x569086))[_0xc966('0x22')](handleError(_0x1db1df,null));};exports[_0xc966('0x75')]=function(_0x3847d1,_0x5158da,_0x2a1e61){return db[_0xc966('0x36')][_0xc966('0x61')]({'where':{'id':_0x3847d1[_0xc966('0x4d')]['id']}})['then'](handleEntityNotFound(_0x5158da,null))[_0xc966('0x2d')](function(_0x336bc2){if(_0x336bc2){return db[_0xc966('0x76')][_0xc966('0x77')](function(_0x28347e){return db[_0xc966('0x78')][_0xc966('0x5b')]({'where':{'FaxAccountId':_0x3847d1[_0xc966('0x4d')]['id']},'transaction':_0x28347e})[_0xc966('0x2d')](function(_0x5377c2){var _0x3c1a48=_[_0xc966('0x35')](_0x3847d1[_0xc966('0x50')],function(_0x52aa1a){_0x52aa1a[_0xc966('0x5e')]=_0x3847d1[_0xc966('0x4d')]['id'];return _0x52aa1a;});return db['FaxApplication'][_0xc966('0x79')](_0x3c1a48,{'transaction':_0x28347e});});})[_0xc966('0x2d')](function(){return db[_0xc966('0x78')][_0xc966('0x7a')]({'where':{'FaxAccountId':_0x3847d1['params']['id']},'order':_0xc966('0x7b')});});}})[_0xc966('0x2d')](respondWithResult(_0x5158da,null))[_0xc966('0x22')](handleError(_0x5158da,null));};exports[_0xc966('0x7c')]=function(_0x3a5678,_0x2414ec,_0x409a86){var _0x102152={};var _0xc56727={};var _0x627b38;var _0x48f863;return db[_0xc966('0x36')][_0xc966('0x61')]({'where':{'id':_0x3a5678[_0xc966('0x4d')]['id']}})['then'](handleEntityNotFound(_0x2414ec,null))[_0xc966('0x2d')](function(_0x1b7c66){if(_0x1b7c66){_0x627b38=_0x1b7c66;_0xc56727['model']=_[_0xc966('0x3d')](db[_0xc966('0x78')][_0xc966('0x37')]);_0xc56727['query']=_[_0xc966('0x3d')](_0x3a5678[_0xc966('0x3c')]);_0xc56727[_0xc966('0x45')]=_[_0xc966('0x3e')](_0xc56727['model'],_0xc56727[_0xc966('0x3c')]);_0x102152[_0xc966('0x3f')]=_[_0xc966('0x3e')](_0xc56727[_0xc966('0x3b')],qs[_0xc966('0x40')](_0x3a5678[_0xc966('0x3c')][_0xc966('0x40')]));_0x102152[_0xc966('0x3f')]=_0x102152['attributes'][_0xc966('0x41')]?_0x102152[_0xc966('0x3f')]:_0xc56727['model'];_0x102152[_0xc966('0x42')]=qs['sort'](_0x3a5678[_0xc966('0x3c')][_0xc966('0x43')]);_0x102152['where']=qs['filters'](_[_0xc966('0x6b')](_0x3a5678[_0xc966('0x3c')],_0xc56727['filters']));if(_0x3a5678[_0xc966('0x3c')]['filter']){_0x102152[_0xc966('0x44')]=_[_0xc966('0x47')](_0x102152['where'],{'$or':_[_0xc966('0x35')](_0x102152['attributes'],function(_0x23aabe){var _0x2bced2={};_0x2bced2[_0x23aabe]={'$like':'%'+_0x3a5678[_0xc966('0x3c')][_0xc966('0x46')]+'%'};return _0x2bced2;})});}_0x102152=_[_0xc966('0x47')]({},_0x102152,_0x3a5678[_0xc966('0x48')]);return _0x627b38[_0xc966('0x7c')](_0x102152);}})[_0xc966('0x2d')](function(_0x2ea1ec){if(_0x2ea1ec){_0x48f863=_0x2ea1ec['length'];if(!_0x3a5678[_0xc966('0x3c')][_0xc966('0x62')](_0xc966('0x6a'))){_0x102152[_0xc966('0x27')]=qs[_0xc966('0x27')](_0x3a5678['query'][_0xc966('0x27')]);_0x102152[_0xc966('0x26')]=qs[_0xc966('0x26')](_0x3a5678[_0xc966('0x3c')]['offset']);}return _0x627b38[_0xc966('0x7c')](_0x102152);}})[_0xc966('0x2d')](function(_0x25b975){if(_0x25b975){return _0x25b975?{'count':_0x48f863,'rows':_0x25b975}:null;}})[_0xc966('0x2d')](respondWithResult(_0x2414ec,null))['catch'](handleError(_0x2414ec,null));};function Extension(_0x2fef00,_0x24e22d,_0x11a1e6,_0x4ad1dd){this[_0xc966('0x7d')]='from-voip-provider';this[_0xc966('0x7e')]=_0x2fef00[_0xc966('0x7f')];this[_0xc966('0x80')]=_0x4ad1dd;this[_0xc966('0x39')]='system';this[_0xc966('0x81')]='Fax\x20Extension';this[_0xc966('0x5e')]=_0x2fef00['id'];this[_0xc966('0x7b')]=_0x24e22d;this[_0xc966('0x82')]=_0x11a1e6;}function createExtensionsReciveFax(_0x64b6f7){var _0x3b62d5=0x1;var _0x1701a8=[];_0x1701a8[_0xc966('0x83')](new Extension(_0x64b6f7,_0x3b62d5,'',_0xc966('0x84')));_0x3b62d5+=0x1;_0x1701a8['push'](new Extension(_0x64b6f7,_0x3b62d5,_0xc966('0x85'),_0xc966('0x86')));_0x3b62d5+=0x1;for(var _0x5b7342 in _0x64b6f7){if(_0x64b6f7[_0xc966('0x62')](_0x5b7342)&&(_0x5b7342===_0xc966('0x87')||_0x5b7342===_0xc966('0x7f')||_0x5b7342===_0xc966('0x88')||_0x5b7342===_0xc966('0x89')||_0x5b7342===_0xc966('0x8a')||_0x5b7342===_0xc966('0x8b')||_0x5b7342===_0xc966('0x8c')||_0x5b7342==='modem'||_0x5b7342===_0xc966('0x8d'))){_0x1701a8[_0xc966('0x83')](new Extension(_0x64b6f7,_0x3b62d5,'FAXOPT('+_0x5b7342+')='+_0x64b6f7[_0x5b7342],_0xc966('0x86')));_0x3b62d5+=0x1;}}_0x1701a8[_0xc966('0x83')](new Extension(_0x64b6f7,_0x3b62d5,'6','Wait'));_0x3b62d5+=0x1;_0x1701a8[_0xc966('0x83')](new Extension(_0x64b6f7,_0x3b62d5,'/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d','ReceiveFax'));_0x3b62d5=0x0;return _0x1701a8;}exports['addAccountApplications']=function(_0xa82d60,_0x520abf,_0x44cd2e){var _0x1ab6bf;return db[_0xc966('0x76')]['transaction'](function(_0x5d6f1c){return db[_0xc966('0x36')][_0xc966('0x4f')](_0xa82d60[_0xc966('0x50')],{'transaction':_0x5d6f1c})[_0xc966('0x2d')](function(_0x318bb8){_0x1ab6bf=_0x318bb8[_0xc966('0x2e')]({'plain':!![]});return db[_0xc966('0x8e')]['bulkCreate'](createExtensionsReciveFax(_0x1ab6bf),{'transaction':_0x5d6f1c});});})[_0xc966('0x2d')](function(){return _0x1ab6bf;})['then'](respondWithResult(_0x520abf,null))['catch'](handleError(_0x520abf,null));};exports['updateAccountApplications']=function(_0x5e7eab,_0x350b73,_0x5648db){var _0x33ccdf;return db['sequelize'][_0xc966('0x77')](function(_0xe7bd9a){return db[_0xc966('0x36')][_0xc966('0x5a')](_0x5e7eab[_0xc966('0x50')],{'where':{'id':_0x5e7eab['body']['id']},'transaction':_0xe7bd9a})[_0xc966('0x2d')](function(_0x32b1ba){return db[_0xc966('0x8e')][_0xc966('0x5b')]({'where':{'FaxAccountId':_0x5e7eab[_0xc966('0x50')]['id']},'transaction':_0xe7bd9a})['then'](function(_0x3d79c2){return db['VoiceExtension']['bulkCreate'](createExtensionsReciveFax(_[_0xc966('0x68')](_0x5e7eab[_0xc966('0x50')],['tech',_0xc966('0x3a'),_0xc966('0x8f'),_0xc966('0x90'),_0xc966('0x91'),'ListId'])),{'transaction':_0xe7bd9a});});});})[_0xc966('0x2d')](function(){return db['FaxAccount'][_0xc966('0x92')](_0x5e7eab[_0xc966('0x50')]['id']);})[_0xc966('0x2d')](respondWithResult(_0x350b73,null))[_0xc966('0x22')](handleError(_0x350b73,null));};exports[_0xc966('0x93')]=function(_0x359380,_0xa66477,_0x20c2db){var _0x5b4cbe={'raw':!![],'where':{}};var _0x26c84c={};var _0x1c4007={'count':0x0,'rows':[]};return db[_0xc966('0x36')]['findOne']({'where':{'id':_0x359380['params']['id']}})[_0xc966('0x2d')](handleEntityNotFound(_0xa66477,null))[_0xc966('0x2d')](function(_0x1cbdf6){if(_0x1cbdf6){_0x26c84c['model']=_[_0xc966('0x3d')](db[_0xc966('0x94')]['rawAttributes']);_0x26c84c[_0xc966('0x3c')]=_[_0xc966('0x3d')](_0x359380[_0xc966('0x3c')]);_0x26c84c[_0xc966('0x45')]=_['intersection'](_0x26c84c[_0xc966('0x3b')],_0x26c84c[_0xc966('0x3c')]);_0x5b4cbe['attributes']=_[_0xc966('0x3e')](_0x26c84c[_0xc966('0x3b')],qs[_0xc966('0x40')](_0x359380['query'][_0xc966('0x40')]));_0x5b4cbe[_0xc966('0x3f')]=_0x5b4cbe[_0xc966('0x3f')][_0xc966('0x41')]?_0x5b4cbe['attributes']:_0x26c84c['model'];if(!_0x359380[_0xc966('0x3c')]['hasOwnProperty'](_0xc966('0x6a'))){_0x5b4cbe['limit']=qs[_0xc966('0x27')](_0x359380[_0xc966('0x3c')][_0xc966('0x27')]);_0x5b4cbe[_0xc966('0x26')]=qs[_0xc966('0x26')](_0x359380[_0xc966('0x3c')][_0xc966('0x26')]);}_0x5b4cbe[_0xc966('0x42')]=qs['sort'](_0x359380[_0xc966('0x3c')]['sort']);_0x5b4cbe[_0xc966('0x44')]=qs[_0xc966('0x45')](_[_0xc966('0x6b')](_0x359380[_0xc966('0x3c')],_0x26c84c[_0xc966('0x45')]));_0x5b4cbe[_0xc966('0x44')]['FaxAccountId']=_0x1cbdf6['id'];if(_0x359380['query'][_0xc966('0x46')]){_0x5b4cbe[_0xc966('0x44')]=_[_0xc966('0x47')](_0x5b4cbe[_0xc966('0x44')],{'$or':_['map'](_0x5b4cbe[_0xc966('0x3f')],function(_0x157989){var _0x31ff64={};_0x31ff64[_0x157989]={'$like':'%'+_0x359380[_0xc966('0x3c')][_0xc966('0x46')]+'%'};return _0x31ff64;})});}if(_0x359380[_0xc966('0x3c')][_0xc966('0x95')]){var _0x4948f2=_0x359380[_0xc966('0x3c')]['$gte']['split'](',');var _0xe68add={};_0xe68add[_0x4948f2[0x0]]={'$gte':moment(_0x4948f2[0x1])[_0xc966('0x96')](_0xc966('0x97'))};_0x5b4cbe[_0xc966('0x44')]=_[_0xc966('0x47')](_0x5b4cbe[_0xc966('0x44')],_0xe68add);}_0x5b4cbe=_[_0xc966('0x47')]({},_0x5b4cbe,_0x359380[_0xc966('0x48')]);return db['FaxMessage'][_0xc966('0x29')]({'where':_0x5b4cbe[_0xc966('0x44')]})[_0xc966('0x2d')](function(_0x531c64){_0x1c4007[_0xc966('0x29')]=_0x531c64;if(_0x359380[_0xc966('0x3c')][_0xc966('0x49')]){_0x5b4cbe['include']=[{'all':!![]}];}return db[_0xc966('0x94')][_0xc966('0x4b')](_0x5b4cbe);})['then'](function(_0x1e03a1){_0x1c4007['rows']=_0x1e03a1;return _0x1c4007;});}})[_0xc966('0x2d')](respondWithFilteredResult(_0xa66477,_0x5b4cbe))[_0xc966('0x22')](handleError(_0xa66477,null));};exports[_0xc966('0x31')]=function(_0x29dc3a,_0x14a311,_0x24197c){var _0x1d1681,_0xce403f={},_0x19a357;if(_0x29dc3a[_0xc966('0x50')]['to']){_0x19a357=_0x29dc3a[_0xc966('0x50')]['to'][0x0];}return db['FaxAccount'][_0xc966('0x4e')]({'where':{'id':_0x29dc3a[_0xc966('0x4d')]['id']},'include':[{'model':db[_0xc966('0x98')],'as':_0xc966('0x99'),'include':[{'model':db[_0xc966('0x6c')],'as':_0xc966('0x9a'),'where':{'fax':_0x19a357},'limit':0x1,'order':[[_0xc966('0x90'),_0xc966('0x9b')]]}]}]})[_0xc966('0x2d')](handleEntityNotFound(_0x14a311,null))[_0xc966('0x2d')](function(_0x5e1208){_0x1d1681=_0x5e1208;if(_0x29dc3a[_0xc966('0x50')][_0xc966('0x9c')]&&_0x29dc3a['body'][_0xc966('0x9c')]['length']){for(var _0x2e3978=0x0;_0x2e3978<_0x29dc3a[_0xc966('0x50')][_0xc966('0x9c')]['length'];_0x2e3978+=0x1){_0x29dc3a[_0xc966('0x50')]['attachments'][_0x2e3978]={'filename':_0x29dc3a['body'][_0xc966('0x9c')][_0x2e3978][_0xc966('0x30')],'id':_0x29dc3a['body'][_0xc966('0x9c')][_0x2e3978]['id'],'path':path['join'](config[_0xc966('0x9d')],_0xc966('0x9e'),_0x29dc3a['body'][_0xc966('0x9c')][_0x2e3978][_0xc966('0x9f')])};}}return respondWithRpcPromise(_0xc966('0xa0'),_0xc966('0xa0'),{'FaxAccountId':_[_0xc966('0xa1')](_0x29dc3a[_0xc966('0x4d')]['id'])?undefined:_0x29dc3a['params']['id'],'path':_[_0xc966('0xa1')](_0x29dc3a[_0xc966('0x50')]['attachments'][0x0][_0xc966('0x6')])?undefined:_0x29dc3a[_0xc966('0x50')]['attachments'][0x0][_0xc966('0x6')],'fax':_[_0xc966('0xa1')](_0x29dc3a[_0xc966('0x50')]['to'][0x0])?undefined:_0x29dc3a[_0xc966('0x50')]['to'][0x0]},client9002);})[_0xc966('0x2d')](function(){if(_0x1d1681){if(_[_0xc966('0xa1')](_0x29dc3a[_0xc966('0x50')][_0xc966('0xa2')])){_0x29dc3a[_0xc966('0x50')][_0xc966('0xa2')]=util[_0xc966('0x96')]('\x22%s\x22\x20<%s>',_0x1d1681[_0xc966('0x30')],_0x1d1681['fax']);}if(_0x1d1681['List']){if(_0x1d1681['List'][_0xc966('0x9a')][_0xc966('0x41')]){return _0x1d1681[_0xc966('0x99')][_0xc966('0x9a')][0x0];}else{return db[_0xc966('0x6c')][_0xc966('0x4f')](_['defaults'](_0x29dc3a[_0xc966('0x50')],{'firstName':_0x29dc3a[_0xc966('0x50')]['to'][0x0],'phone':_0x29dc3a[_0xc966('0x50')]['to'][0x0],'fax':_0x29dc3a[_0xc966('0x50')]['to'][0x0],'ListId':_0x1d1681['ListId']}));}}else{throw new Error(_0xc966('0xa3'));}}else{throw new Error(_0xc966('0xa4'));}})['then'](function(_0x2f4b5b){if(_0x2f4b5b){return db[_0xc966('0x69')]['find']({'where':{'ContactId':_0x2f4b5b['id'],'closed':![],'FaxAccountId':_0x1d1681['id']}})[_0xc966('0x2d')](function(_0x1d9dbd){if(_0x1d9dbd){return[_0x1d9dbd,![]];}return db[_0xc966('0x69')][_0xc966('0x4f')]({'UserId':_0x29dc3a[_0xc966('0x51')]['id'],'ContactId':_0x2f4b5b['id'],'FaxAccountId':_0x1d1681['id'],'fax':_0x29dc3a[_0xc966('0x50')]['to'][0x0],'firstMsgDirection':_0xc966('0xa5'),'Messages':[_['merge'](_0x29dc3a['body'],{'read':![],'body':_0x29dc3a[_0xc966('0x50')][_0xc966('0x9c')][0x0][_0xc966('0xa6')],'FaxAccountId':_0x1d1681['id'],'UserId':_0x29dc3a['user']['id'],'ContactId':_0x2f4b5b['id'],'AttachmentId':_0x29dc3a[_0xc966('0x50')]['attachments'][0x0]['id']})]},{'include':[{'model':db[_0xc966('0x94')],'as':'Messages'}]})[_0xc966('0x2d')](function(_0x1a66aa){return[_0x1a66aa,!![]];});});}else{throw new Error(_0xc966('0xa7'));}})[_0xc966('0xa8')](function(_0x1c4ebf,_0xad4f7e){if(_0xad4f7e){return _0x1c4ebf;}return db[_0xc966('0x94')][_0xc966('0x4f')]({'direction':_0xc966('0xa5'),'read':![],'body':_0x29dc3a[_0xc966('0x50')]['attachments'][0x0][_0xc966('0xa6')],'FaxAccountId':_0x1d1681['id'],'FaxInteractionId':_0x1c4ebf['id'],'UserId':_0x29dc3a[_0xc966('0x51')]['id'],'ContactId':_0x1c4ebf[_0xc966('0xa9')],'AttachmentId':_0x29dc3a['body'][_0xc966('0x9c')][0x0]['id']})[_0xc966('0x2d')](function(_0x29bc97){_0x1c4ebf[_0xc966('0xaa')][_0xc966('0xab')]=[];_0x1c4ebf[_0xc966('0xaa')][_0xc966('0xab')][_0xc966('0x83')](_0x29bc97[_0xc966('0xaa')]);return _0x1c4ebf;});})[_0xc966('0x2d')](function(_0x479d02){respondWithRpcPromise(_0xc966('0xac'),_0xc966('0xac'),{'FaxAccountId':_[_0xc966('0xa1')](_0x29dc3a['params']['id'])?undefined:_0x29dc3a[_0xc966('0x4d')]['id'],'path':_[_0xc966('0xa1')](_0x29dc3a[_0xc966('0x50')][_0xc966('0x9c')][0x0]['path'])?undefined:_0x29dc3a['body'][_0xc966('0x9c')][0x0][_0xc966('0x6')],'fax':_[_0xc966('0xa1')](_0x29dc3a[_0xc966('0x50')]['to'][0x0])?undefined:_0x29dc3a['body']['to'][0x0],'AttachmentId':_0x29dc3a[_0xc966('0x50')][_0xc966('0x9c')][0x0]['id']},client9002)[_0xc966('0x2d')](function(_0xd3d670){logger['info']('SendFaxRpc,\x20%s',_0xd3d670);})['catch'](function(_0x29c055){logger['info'](_0xc966('0xad'),_0x29c055);});return _0x479d02;})['then'](respondWithResult(_0x14a311,null))[_0xc966('0x22')](handleError(_0x14a311,null));};exports[_0xc966('0xae')]=function(_0x2df0a2,_0x3e3e4a,_0x10b70f){return db['FaxAccount'][_0xc966('0x4e')]({'where':{'id':_0x2df0a2[_0xc966('0x4d')]['id']}})[_0xc966('0x2d')](handleEntityNotFound(_0x3e3e4a,null))[_0xc966('0x2d')](function(_0x3d8d99){if(_0x3d8d99){return _0x3d8d99[_0xc966('0xae')](_0x2df0a2['body'][_0xc966('0x64')],_[_0xc966('0x68')](_0x2df0a2[_0xc966('0x50')],[_0xc966('0x64'),'id'])||{})['spread'](function(_0x583e27){for(var _0x2e6940=0x0;_0x2e6940<_0x2df0a2['body'][_0xc966('0x64')]['length'];_0x2e6940+=0x1){socket[_0xc966('0xaf')](_0xc966('0xb0'),{'UserId':Number(_0x2df0a2[_0xc966('0x50')][_0xc966('0x64')][_0x2e6940]),'FaxAccountId':Number(_0x2df0a2[_0xc966('0x4d')]['id'])});}return _0x583e27;});}})[_0xc966('0x2d')](respondWithResult(_0x3e3e4a,null))[_0xc966('0x22')](handleError(_0x3e3e4a,null));};exports[_0xc966('0xb1')]=function(_0x29b570,_0x377c77,_0x476a79){return db[_0xc966('0x36')][_0xc966('0x4e')]({'where':{'id':_0x29b570[_0xc966('0x4d')]['id']}})['then'](handleEntityNotFound(_0x377c77,null))[_0xc966('0x2d')](function(_0x4d4e92){if(_0x4d4e92){return _0x4d4e92['removeAgents'](_0x29b570[_0xc966('0x3c')]['ids'])[_0xc966('0x2d')](function(){if(_[_0xc966('0xb2')](_0x29b570[_0xc966('0x3c')][_0xc966('0x64')])){for(var _0x34713b=0x0;_0x34713b<_0x29b570[_0xc966('0x3c')][_0xc966('0x64')][_0xc966('0x41')];_0x34713b+=0x1){socket[_0xc966('0xaf')]('userFaxAccount:remove',{'UserId':Number(_0x29b570[_0xc966('0x3c')][_0xc966('0x64')][_0x34713b]),'FaxAccountId':Number(_0x29b570[_0xc966('0x4d')]['id'])});}}else{socket[_0xc966('0xaf')](_0xc966('0xb3'),{'UserId':Number(_0x29b570[_0xc966('0x3c')]['ids']),'FaxAccountId':Number(_0x29b570[_0xc966('0x4d')]['id'])});}});}})[_0xc966('0x2d')](respondWithStatusCode(_0x377c77,null))[_0xc966('0x22')](handleError(_0x377c77,null));};exports[_0xc966('0xb4')]=function(_0x2de4fd,_0x36b91b,_0x42e3b1){var _0xb8af9a={};var _0x47d87a={};var _0x44912e;var _0x44e35b;return db[_0xc966('0x36')][_0xc966('0x61')]({'where':{'id':_0x2de4fd['params']['id']}})[_0xc966('0x2d')](handleEntityNotFound(_0x36b91b,null))[_0xc966('0x2d')](function(_0x465fbc){if(_0x465fbc){_0x44912e=_0x465fbc;_0x47d87a[_0xc966('0x3b')]=_['keys'](db[_0xc966('0x6d')][_0xc966('0x37')]);_0x47d87a['query']=_[_0xc966('0x3d')](_0x2de4fd[_0xc966('0x3c')]);_0x47d87a[_0xc966('0x45')]=_['intersection'](_0x47d87a[_0xc966('0x3b')],_0x47d87a[_0xc966('0x3c')]);_0xb8af9a[_0xc966('0x3f')]=_['intersection'](_0x47d87a[_0xc966('0x3b')],qs[_0xc966('0x40')](_0x2de4fd[_0xc966('0x3c')][_0xc966('0x40')]));_0xb8af9a[_0xc966('0x3f')]=_0xb8af9a[_0xc966('0x3f')]['length']?_0xb8af9a[_0xc966('0x3f')]:_0x47d87a['model'];_0xb8af9a[_0xc966('0x42')]=qs['sort'](_0x2de4fd[_0xc966('0x3c')][_0xc966('0x43')]);_0xb8af9a['where']=qs[_0xc966('0x45')](_[_0xc966('0x6b')](_0x2de4fd[_0xc966('0x3c')],_0x47d87a[_0xc966('0x45')]));if(_0x2de4fd[_0xc966('0x3c')]['filter']){_0xb8af9a[_0xc966('0x44')]=_['merge'](_0xb8af9a[_0xc966('0x44')],{'$or':_[_0xc966('0x35')](_0xb8af9a['attributes'],function(_0x3e34d9){var _0x599605={};_0x599605[_0x3e34d9]={'$like':'%'+_0x2de4fd[_0xc966('0x3c')][_0xc966('0x46')]+'%'};return _0x599605;})});}_0xb8af9a=_['merge']({},_0xb8af9a,_0x2de4fd[_0xc966('0x48')]);return _0x44912e[_0xc966('0xb4')](_0xb8af9a);}})[_0xc966('0x2d')](function(_0x17c068){if(_0x17c068){_0x44e35b=_0x17c068[_0xc966('0x41')];if(!_0x2de4fd[_0xc966('0x3c')][_0xc966('0x62')](_0xc966('0x6a'))){_0xb8af9a[_0xc966('0x27')]=qs['limit'](_0x2de4fd['query'][_0xc966('0x27')]);_0xb8af9a[_0xc966('0x26')]=qs[_0xc966('0x26')](_0x2de4fd['query']['offset']);}return _0x44912e['getAgents'](_0xb8af9a);}})['then'](function(_0x320fd7){if(_0x320fd7){return _0x320fd7?{'count':_0x44e35b,'rows':_0x320fd7}:null;}})[_0xc966('0x2d')](respondWithResult(_0x36b91b,null))[_0xc966('0x22')](handleError(_0x36b91b,null));};
\ No newline at end of file
+var _0x55c0=['color','tag','addApplications','sequelize','FaxApplication','bulkCreate','findAndCountAll','priority','getApplications','context','exten','localstationid','description','appdata','push','Answer','CDR(type)=inbound-fax','Set','ecm','gateway','faxdetect','headerinfo','minrate','modem','t38timeout','FAXOPT(','ReceiveFax','transaction','updateAccountApplications','VoiceExtension','tech','key','createdAt','updatedAt','ListId','FaxMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','send','CmList','List','Contacts','DESC','attachments','join','root','server/files/attachments','basename','CheckAfterSend','isNil','path','from','\x22%s\x22\x20<%s>','fax','List\x20not\x20found','Send\x20Fax\x20failed','filename','Contact\x20not\x20found','spread','out','Messages','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','emit','userFaxAccount:save','removeAgents','isArray','userFaxAccount:remove','getAgents','User','eml-format','zip-dir','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','socket.io-emitter','./faxAccount.socket','register','jayson/promise','client','http','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','status','offset','count','limit','set','Content-Range','json','reject','update','destroy','FaxAccounts','end','sendStatus','stack','name','index','mandatoryDispositionPause','FaxAccount','type','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','findAll','rows','params','Pause','include','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','Disposition','findOne','nolimit','FaxAccountId','removeDispositions','ids','CannedAnswer','getAnswers','rawAttributes','removeAnswers','addInteraction','omit','getInteractions','FaxInteraction','CmContact','Contact','Owner','internal','Tag'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0x55c0,0x1cc));var _0x055c=function(_0x20ebb5,_0x237d88){_0x20ebb5=_0x20ebb5-0x0;var _0x487182=_0x55c0[_0x20ebb5];return _0x487182;};'use strict';var emlformat=require(_0x055c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x055c('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x055c('0x2'));var moment=require('moment');var BPromise=require(_0x055c('0x3'));var Mustache=require(_0x055c('0x4'));var util=require(_0x055c('0x5'));var path=require('path');var sox=require(_0x055c('0x6'));var csv=require(_0x055c('0x7'));var ejs=require(_0x055c('0x8'));var fs=require('fs');var fs_extra=require(_0x055c('0x9'));var _=require(_0x055c('0xa'));var squel=require(_0x055c('0xb'));var crypto=require(_0x055c('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x055c('0x7'));var querystring=require('querystring');var Papa=require(_0x055c('0xd'));var Redis=require(_0x055c('0xe'));var authService=require(_0x055c('0xf'));var qs=require(_0x055c('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x055c('0x11'));var logger=require('../../config/logger')(_0x055c('0x12'));var utils=require(_0x055c('0x13'));var config=require(_0x055c('0x14'));var licenseUtil=require(_0x055c('0x15'));var db=require(_0x055c('0x16'))['db'];config['redis']=_[_0x055c('0x17')](config[_0x055c('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x055c('0x19'))(new Redis(config[_0x055c('0x18')]));require(_0x055c('0x1a'))[_0x055c('0x1b')](socket);var jayson=require(_0x055c('0x1c'));var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0x055c('0x1d')][_0x055c('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x3ece4f,_0x31a2d6,_0x387077,_0x1ea730){return new BPromise(function(_0x4582fd,_0x52e52a){var _0x31dc3d=_0x1ea730||client;return _0x31dc3d[_0x055c('0x1f')](_0x3ece4f,_0x387077)[_0x055c('0x20')](function(_0x154693){logger[_0x055c('0x21')](_0x055c('0x22'),_0x31a2d6,_0x055c('0x23'));logger[_0x055c('0x24')](_0x055c('0x25'),_0x31a2d6,_0x055c('0x23'),JSON[_0x055c('0x26')](_0x154693));if(_0x154693[_0x055c('0x27')]){if(_0x154693[_0x055c('0x27')][_0x055c('0x28')]===0x1f4){logger['error'](_0x055c('0x22'),_0x31a2d6,_0x154693[_0x055c('0x27')][_0x055c('0x29')]);return _0x52e52a(_0x154693['error']['message']);}logger[_0x055c('0x27')]('FaxAccount,\x20%s,\x20%s',_0x31a2d6,_0x154693[_0x055c('0x27')][_0x055c('0x29')]);return _0x4582fd(_0x154693[_0x055c('0x27')][_0x055c('0x29')]);}else{logger['info']('FaxAccount,\x20%s,\x20%s',_0x31a2d6,'request\x20sent');_0x4582fd(_0x154693[_0x055c('0x2a')][_0x055c('0x29')]);}})[_0x055c('0x2b')](function(_0x3299fe){logger[_0x055c('0x27')]('FaxAccount,\x20%s,\x20%s',_0x31a2d6,_0x3299fe);_0x52e52a(_0x3299fe);});});}function respondWithStatusCode(_0x31e0c1,_0x322a1b){_0x322a1b=_0x322a1b||0xcc;return function(_0x394289){if(_0x394289){return _0x31e0c1['sendStatus'](_0x322a1b);}return _0x31e0c1[_0x055c('0x2c')](_0x322a1b)['end']();};}function respondWithResult(_0x3c4ffa,_0x1f82dd){_0x1f82dd=_0x1f82dd||0xc8;return function(_0x4d813d){if(_0x4d813d){return _0x3c4ffa['status'](_0x1f82dd)['json'](_0x4d813d);}};}function respondWithFilteredResult(_0xb85246,_0x2ccbd1){return function(_0x1eeb33){if(_0x1eeb33){var _0x55ac21=typeof _0x2ccbd1[_0x055c('0x2d')]==='undefined'&&typeof _0x2ccbd1['limit']==='undefined';var _0x1c7bcc=_0x1eeb33['count'];var _0x555dec=_0x55ac21?0x0:_0x2ccbd1['offset'];var _0x35c42a=_0x55ac21?_0x1eeb33[_0x055c('0x2e')]:_0x2ccbd1['offset']+_0x2ccbd1[_0x055c('0x2f')];var _0x50e198;if(_0x35c42a>=_0x1c7bcc){_0x35c42a=_0x1c7bcc;_0x50e198=0xc8;}else{_0x50e198=0xce;}_0xb85246['status'](_0x50e198);return _0xb85246[_0x055c('0x30')](_0x055c('0x31'),_0x555dec+'-'+_0x35c42a+'/'+_0x1c7bcc)[_0x055c('0x32')](_0x1eeb33);}return null;};}function patchUpdates(_0x2a872b){return function(_0xb78b74){try{jsonpatch['apply'](_0xb78b74,_0x2a872b,!![]);}catch(_0x2a8fd4){return BPromise[_0x055c('0x33')](_0x2a8fd4);}return _0xb78b74['save']();};}function saveUpdates(_0xc161fa,_0x3708c9){return function(_0x41695b){if(_0x41695b){return _0x41695b[_0x055c('0x34')](_0xc161fa)[_0x055c('0x20')](function(_0x16c1ec){return _0x16c1ec;});}return null;};}function removeEntity(_0x38ad7a,_0x2a357c){return function(_0x11ca84){if(_0x11ca84){return _0x11ca84[_0x055c('0x35')]()[_0x055c('0x20')](function(){var _0x5ed868=_0x11ca84['get']({'plain':!![]});var _0x346a4d=_0x055c('0x36');return db['UserProfileResource'][_0x055c('0x35')]({'where':{'type':_0x346a4d,'resourceId':_0x5ed868['id']}})[_0x055c('0x20')](function(){return _0x11ca84;});})['then'](function(){_0x38ad7a[_0x055c('0x2c')](0xcc)[_0x055c('0x37')]();});}};}function handleEntityNotFound(_0x4e0335,_0x3fd190){return function(_0x2f30f7){if(!_0x2f30f7){_0x4e0335[_0x055c('0x38')](0x194);}return _0x2f30f7;};}function handleError(_0x300189,_0x8d2742){_0x8d2742=_0x8d2742||0x1f4;return function(_0x287b87){logger[_0x055c('0x27')](_0x287b87[_0x055c('0x39')]);if(_0x287b87['name']){delete _0x287b87[_0x055c('0x3a')];}_0x300189[_0x055c('0x2c')](_0x8d2742)['send'](_0x287b87);};}exports[_0x055c('0x3b')]=function(_0x506b87,_0x3e214b){var _0x2ef8e1={'include':[{'model':db['Pause'],'as':_0x055c('0x3c')}]},_0x2c2d93={},_0x40c599={'count':0x0,'rows':[]};var _0x3401ae=_['map'](db[_0x055c('0x3d')]['rawAttributes'],function(_0x1ac064){return{'name':_0x1ac064['fieldName'],'type':_0x1ac064[_0x055c('0x3e')]['key']};});_0x2c2d93[_0x055c('0x3f')]=_[_0x055c('0x40')](_0x3401ae,_0x055c('0x3a'));_0x2c2d93[_0x055c('0x41')]=_[_0x055c('0x42')](_0x506b87['query']);_0x2c2d93[_0x055c('0x43')]=_[_0x055c('0x44')](_0x2c2d93[_0x055c('0x3f')],_0x2c2d93[_0x055c('0x41')]);_0x2ef8e1[_0x055c('0x45')]=_['intersection'](_0x2c2d93[_0x055c('0x3f')],qs[_0x055c('0x46')](_0x506b87['query']['fields']));_0x2ef8e1[_0x055c('0x45')]=_0x2ef8e1['attributes'][_0x055c('0x47')]?_0x2ef8e1[_0x055c('0x45')]:_0x2c2d93[_0x055c('0x3f')];if(!_0x506b87[_0x055c('0x41')][_0x055c('0x48')]('nolimit')){_0x2ef8e1[_0x055c('0x2f')]=qs[_0x055c('0x2f')](_0x506b87[_0x055c('0x41')][_0x055c('0x2f')]);_0x2ef8e1['offset']=qs[_0x055c('0x2d')](_0x506b87[_0x055c('0x41')][_0x055c('0x2d')]);}_0x2ef8e1[_0x055c('0x49')]=qs[_0x055c('0x4a')](_0x506b87[_0x055c('0x41')][_0x055c('0x4a')]);_0x2ef8e1[_0x055c('0x4b')]=qs[_0x055c('0x43')](_[_0x055c('0x4c')](_0x506b87[_0x055c('0x41')],_0x2c2d93[_0x055c('0x43')]),_0x3401ae);if(_0x506b87[_0x055c('0x41')][_0x055c('0x4d')]){_0x2ef8e1['where']=_['merge'](_0x2ef8e1[_0x055c('0x4b')],{'$or':_[_0x055c('0x40')](_0x3401ae,function(_0x2d9ba8){if(_0x2d9ba8['type']!==_0x055c('0x4e')){var _0x978881={};_0x978881[_0x2d9ba8[_0x055c('0x3a')]]={'$like':'%'+_0x506b87[_0x055c('0x41')]['filter']+'%'};return _0x978881;}})});}_0x2ef8e1=_[_0x055c('0x4f')]({},_0x2ef8e1,_0x506b87[_0x055c('0x50')]);var _0x849f97={'where':_0x2ef8e1[_0x055c('0x4b')]};return db['FaxAccount'][_0x055c('0x2e')](_0x849f97)[_0x055c('0x20')](function(_0x9a070e){_0x40c599[_0x055c('0x2e')]=_0x9a070e;if(_0x506b87['query'][_0x055c('0x51')]){_0x2ef8e1['include']=[{'all':!![]}];}return db['FaxAccount'][_0x055c('0x52')](_0x2ef8e1);})[_0x055c('0x20')](function(_0x1f6a82){_0x40c599[_0x055c('0x53')]=_0x1f6a82;return _0x40c599;})[_0x055c('0x20')](respondWithFilteredResult(_0x3e214b,_0x2ef8e1))[_0x055c('0x2b')](handleError(_0x3e214b,null));};exports['show']=function(_0x22e567,_0xd390c4){var _0x540c71={'raw':![],'where':{'id':_0x22e567[_0x055c('0x54')]['id']},'include':[{'model':db[_0x055c('0x55')],'as':_0x055c('0x3c')}]},_0x30f6b9={};_0x30f6b9['model']=_[_0x055c('0x42')](db['FaxAccount']['rawAttributes']);_0x30f6b9[_0x055c('0x41')]=_[_0x055c('0x42')](_0x22e567['query']);_0x30f6b9['filters']=_[_0x055c('0x44')](_0x30f6b9[_0x055c('0x3f')],_0x30f6b9['query']);_0x540c71[_0x055c('0x45')]=_[_0x055c('0x44')](_0x30f6b9[_0x055c('0x3f')],qs['fields'](_0x22e567['query']['fields']));_0x540c71[_0x055c('0x45')]=_0x540c71[_0x055c('0x45')][_0x055c('0x47')]?_0x540c71[_0x055c('0x45')]:_0x30f6b9[_0x055c('0x3f')];if(_0x22e567[_0x055c('0x41')][_0x055c('0x51')]){_0x540c71[_0x055c('0x56')]=[{'all':!![]}];}_0x540c71=_[_0x055c('0x4f')]({},_0x540c71,_0x22e567[_0x055c('0x50')]);return db[_0x055c('0x3d')]['find'](_0x540c71)[_0x055c('0x20')](handleEntityNotFound(_0xd390c4,null))[_0x055c('0x20')](respondWithResult(_0xd390c4,null))[_0x055c('0x2b')](handleError(_0xd390c4,null));};exports[_0x055c('0x57')]=function(_0x371be9,_0x4f8231){return db[_0x055c('0x3d')][_0x055c('0x57')](_0x371be9[_0x055c('0x58')],{})[_0x055c('0x20')](function(_0x139222){var _0x88bd2b=_0x371be9[_0x055c('0x59')][_0x055c('0x5a')]({'plain':!![]});if(!_0x88bd2b)throw new Error(_0x055c('0x5b'));if(_0x88bd2b[_0x055c('0x5c')]===_0x055c('0x59')){var _0x51c1ff=_0x139222['get']({'plain':!![]});var _0x473975=_0x055c('0x36');return db[_0x055c('0x5d')][_0x055c('0x5e')]({'where':{'name':_0x473975,'userProfileId':_0x88bd2b[_0x055c('0x5f')]},'raw':!![]})[_0x055c('0x20')](function(_0x243ff8){if(_0x243ff8&&_0x243ff8['autoAssociation']===0x0){return db[_0x055c('0x60')][_0x055c('0x57')]({'name':_0x51c1ff[_0x055c('0x3a')],'resourceId':_0x51c1ff['id'],'type':_0x243ff8['name'],'sectionId':_0x243ff8['id']},{})[_0x055c('0x20')](function(){return _0x139222;});}else{return _0x139222;}})['catch'](function(_0x5b1878){logger[_0x055c('0x27')](_0x055c('0x61'),_0x5b1878);throw _0x5b1878;});}return _0x139222;})[_0x055c('0x20')](respondWithResult(_0x4f8231,0xc9))[_0x055c('0x2b')](handleError(_0x4f8231,null));};exports[_0x055c('0x34')]=function(_0xac5dd5,_0x219854){if(_0xac5dd5['body']['id']){delete _0xac5dd5['body']['id'];}return db[_0x055c('0x3d')][_0x055c('0x5e')]({'where':{'id':_0xac5dd5['params']['id']},'include':[{'model':db[_0x055c('0x55')],'as':_0x055c('0x3c')}]})[_0x055c('0x20')](handleEntityNotFound(_0x219854,null))['then'](saveUpdates(_0xac5dd5[_0x055c('0x58')],null))[_0x055c('0x20')](respondWithResult(_0x219854,null))['catch'](handleError(_0x219854,null));};exports[_0x055c('0x35')]=function(_0xe85999,_0x1073c2){return db[_0x055c('0x3d')][_0x055c('0x5e')]({'where':{'id':_0xe85999['params']['id']}})[_0x055c('0x20')](handleEntityNotFound(_0x1073c2,null))[_0x055c('0x20')](removeEntity(_0x1073c2,null))[_0x055c('0x2b')](handleError(_0x1073c2,null));};exports[_0x055c('0x62')]=function(_0x6cdd78,_0xa9a315){return db[_0x055c('0x3d')]['describe']()[_0x055c('0x20')](respondWithResult(_0xa9a315,null))[_0x055c('0x2b')](handleError(_0xa9a315,null));};exports[_0x055c('0x63')]=function(_0x35b302,_0x438196,_0x190cc1){if(_0x35b302[_0x055c('0x58')]['id']){delete _0x35b302['body']['id'];}return db[_0x055c('0x3d')][_0x055c('0x5e')]({'where':{'id':_0x35b302['params']['id']}})['then'](handleEntityNotFound(_0x438196,null))[_0x055c('0x20')](function(_0x27e7da){if(_0x27e7da){_0x35b302[_0x055c('0x58')]['FaxAccountId']=_0x27e7da['id'];return db[_0x055c('0x64')][_0x055c('0x57')](_0x35b302[_0x055c('0x58')]);}})[_0x055c('0x20')](respondWithResult(_0x438196,null))[_0x055c('0x2b')](handleError(_0x438196,null));};exports['getDispositions']=function(_0x50945a,_0x15c367,_0x588a2f){var _0x51cbf4={'raw':![],'where':{}};var _0x245d53={};var _0x823f08={'count':0x0,'rows':[]};return db[_0x055c('0x3d')][_0x055c('0x65')]({'where':{'id':_0x50945a[_0x055c('0x54')]['id']}})[_0x055c('0x20')](handleEntityNotFound(_0x15c367,null))[_0x055c('0x20')](function(_0xe97917){if(_0xe97917){_0x245d53[_0x055c('0x3f')]=_[_0x055c('0x42')](db[_0x055c('0x64')]['rawAttributes']);_0x245d53[_0x055c('0x41')]=_[_0x055c('0x42')](_0x50945a[_0x055c('0x41')]);_0x245d53[_0x055c('0x43')]=_[_0x055c('0x44')](_0x245d53[_0x055c('0x3f')],_0x245d53[_0x055c('0x41')]);_0x51cbf4['attributes']=_[_0x055c('0x44')](_0x245d53[_0x055c('0x3f')],qs['fields'](_0x50945a[_0x055c('0x41')][_0x055c('0x46')]));_0x51cbf4['attributes']=_0x51cbf4[_0x055c('0x45')][_0x055c('0x47')]?_0x51cbf4[_0x055c('0x45')]:_0x245d53[_0x055c('0x3f')];if(!_0x50945a[_0x055c('0x41')][_0x055c('0x48')](_0x055c('0x66'))){_0x51cbf4[_0x055c('0x2f')]=qs[_0x055c('0x2f')](_0x50945a[_0x055c('0x41')][_0x055c('0x2f')]);_0x51cbf4[_0x055c('0x2d')]=qs[_0x055c('0x2d')](_0x50945a['query'][_0x055c('0x2d')]);}_0x51cbf4[_0x055c('0x49')]=qs[_0x055c('0x4a')](_0x50945a['query'][_0x055c('0x4a')]);_0x51cbf4[_0x055c('0x4b')]=qs[_0x055c('0x43')](_[_0x055c('0x4c')](_0x50945a[_0x055c('0x41')],_0x245d53[_0x055c('0x43')]));_0x51cbf4['where'][_0x055c('0x67')]=_0xe97917['id'];if(_0x50945a[_0x055c('0x41')][_0x055c('0x4d')]){_0x51cbf4['where']=_[_0x055c('0x4f')](_0x51cbf4['where'],{'$or':_[_0x055c('0x40')](_0x51cbf4[_0x055c('0x45')],function(_0x47d49b){var _0x2b5cc6={};_0x2b5cc6[_0x47d49b]={'$like':'%'+_0x50945a[_0x055c('0x41')][_0x055c('0x4d')]+'%'};return _0x2b5cc6;})});}_0x51cbf4=_[_0x055c('0x4f')]({},_0x51cbf4,_0x50945a[_0x055c('0x50')]);return db[_0x055c('0x64')][_0x055c('0x2e')]({'where':_0x51cbf4[_0x055c('0x4b')]})[_0x055c('0x20')](function(_0x376389){_0x823f08[_0x055c('0x2e')]=_0x376389;if(_0x50945a[_0x055c('0x41')][_0x055c('0x51')]){_0x51cbf4[_0x055c('0x56')]=[{'all':!![]}];}return db[_0x055c('0x64')][_0x055c('0x52')](_0x51cbf4);})[_0x055c('0x20')](function(_0x17e9a2){_0x823f08[_0x055c('0x53')]=_0x17e9a2;return _0x823f08;});}})[_0x055c('0x20')](respondWithFilteredResult(_0x15c367,_0x51cbf4))[_0x055c('0x2b')](handleError(_0x15c367,null));};exports[_0x055c('0x68')]=function(_0x141437,_0x4bab98,_0x2de551){return db[_0x055c('0x3d')]['find']({'where':{'id':_0x141437[_0x055c('0x54')]['id']}})['then'](handleEntityNotFound(_0x4bab98,null))[_0x055c('0x20')](function(_0x4e73cd){if(_0x4e73cd){return _0x4e73cd['removeDispositions'](_0x141437[_0x055c('0x41')][_0x055c('0x69')]);}})[_0x055c('0x20')](respondWithStatusCode(_0x4bab98,null))[_0x055c('0x2b')](handleError(_0x4bab98,null));};exports['addAnswer']=function(_0x127960,_0x4fc701,_0x369370){if(_0x127960[_0x055c('0x58')]['id']){delete _0x127960[_0x055c('0x58')]['id'];}return db[_0x055c('0x3d')]['find']({'where':{'id':_0x127960[_0x055c('0x54')]['id']}})[_0x055c('0x20')](handleEntityNotFound(_0x4fc701,null))['then'](function(_0x3be777){if(_0x3be777){_0x127960['body']['FaxAccountId']=_0x3be777['id'];return db[_0x055c('0x6a')][_0x055c('0x57')](_0x127960[_0x055c('0x58')]);}})[_0x055c('0x20')](respondWithResult(_0x4fc701,null))['catch'](handleError(_0x4fc701,null));};exports[_0x055c('0x6b')]=function(_0x4556cf,_0x1ce40a,_0x262fb9){var _0x144749={'raw':![],'where':{}};var _0x4ff422={};var _0x481502={'count':0x0,'rows':[]};return db['FaxAccount'][_0x055c('0x65')]({'where':{'id':_0x4556cf[_0x055c('0x54')]['id']}})['then'](handleEntityNotFound(_0x1ce40a,null))[_0x055c('0x20')](function(_0x31699d){if(_0x31699d){_0x4ff422[_0x055c('0x3f')]=_['keys'](db[_0x055c('0x6a')][_0x055c('0x6c')]);_0x4ff422[_0x055c('0x41')]=_[_0x055c('0x42')](_0x4556cf[_0x055c('0x41')]);_0x4ff422['filters']=_[_0x055c('0x44')](_0x4ff422[_0x055c('0x3f')],_0x4ff422['query']);_0x144749[_0x055c('0x45')]=_[_0x055c('0x44')](_0x4ff422[_0x055c('0x3f')],qs[_0x055c('0x46')](_0x4556cf['query']['fields']));_0x144749[_0x055c('0x45')]=_0x144749[_0x055c('0x45')][_0x055c('0x47')]?_0x144749[_0x055c('0x45')]:_0x4ff422['model'];if(!_0x4556cf[_0x055c('0x41')][_0x055c('0x48')]('nolimit')){_0x144749['limit']=qs[_0x055c('0x2f')](_0x4556cf['query'][_0x055c('0x2f')]);_0x144749['offset']=qs[_0x055c('0x2d')](_0x4556cf[_0x055c('0x41')][_0x055c('0x2d')]);}_0x144749[_0x055c('0x49')]=qs[_0x055c('0x4a')](_0x4556cf[_0x055c('0x41')][_0x055c('0x4a')]);_0x144749[_0x055c('0x4b')]=qs[_0x055c('0x43')](_[_0x055c('0x4c')](_0x4556cf['query'],_0x4ff422[_0x055c('0x43')]));_0x144749['where'][_0x055c('0x67')]=_0x31699d['id'];if(_0x4556cf['query'][_0x055c('0x4d')]){_0x144749['where']=_[_0x055c('0x4f')](_0x144749[_0x055c('0x4b')],{'$or':_[_0x055c('0x40')](_0x144749['attributes'],function(_0x4256ed){var _0x17d60a={};_0x17d60a[_0x4256ed]={'$like':'%'+_0x4556cf[_0x055c('0x41')][_0x055c('0x4d')]+'%'};return _0x17d60a;})});}_0x144749=_['merge']({},_0x144749,_0x4556cf[_0x055c('0x50')]);return db[_0x055c('0x6a')]['count']({'where':_0x144749[_0x055c('0x4b')]})['then'](function(_0x275f45){_0x481502[_0x055c('0x2e')]=_0x275f45;if(_0x4556cf[_0x055c('0x41')][_0x055c('0x51')]){_0x144749[_0x055c('0x56')]=[{'all':!![]}];}return db[_0x055c('0x6a')][_0x055c('0x52')](_0x144749);})[_0x055c('0x20')](function(_0x119d8a){_0x481502[_0x055c('0x53')]=_0x119d8a;return _0x481502;});}})[_0x055c('0x20')](respondWithFilteredResult(_0x1ce40a,_0x144749))[_0x055c('0x2b')](handleError(_0x1ce40a,null));};exports[_0x055c('0x6d')]=function(_0x5de258,_0x2542c6,_0x1ed4ba){return db[_0x055c('0x3d')]['find']({'where':{'id':_0x5de258[_0x055c('0x54')]['id']}})[_0x055c('0x20')](handleEntityNotFound(_0x2542c6,null))[_0x055c('0x20')](function(_0x399497){if(_0x399497){return _0x399497[_0x055c('0x6d')](_0x5de258[_0x055c('0x41')]['ids']);}})[_0x055c('0x20')](respondWithStatusCode(_0x2542c6,null))[_0x055c('0x2b')](handleError(_0x2542c6,null));};exports[_0x055c('0x6e')]=function(_0x70adba,_0x46f7fb,_0x4e246c){return db['FaxInteraction'][_0x055c('0x5e')]({'where':{'id':_0x70adba[_0x055c('0x54')]['id']}})[_0x055c('0x20')](handleEntityNotFound(_0x46f7fb,null))[_0x055c('0x20')](function(_0x468748){if(_0x468748){return _0x468748[_0x055c('0x6e')](_0x70adba[_0x055c('0x58')][_0x055c('0x69')],_[_0x055c('0x6f')](_0x70adba[_0x055c('0x58')],['ids','id'])||{});}})[_0x055c('0x20')](respondWithResult(_0x46f7fb,null))[_0x055c('0x2b')](handleError(_0x46f7fb,null));};exports[_0x055c('0x70')]=function(_0x30b61f,_0xc7d52,_0x29d94b){var _0x169d80={'raw':![],'where':{}};var _0x263236={};var _0x16b0c3={'count':0x0,'rows':[]};return db[_0x055c('0x3d')][_0x055c('0x65')]({'where':{'id':_0x30b61f[_0x055c('0x54')]['id']}})[_0x055c('0x20')](handleEntityNotFound(_0xc7d52,null))['then'](function(_0x1b2a18){if(_0x1b2a18){_0x263236[_0x055c('0x3f')]=_[_0x055c('0x42')](db['FaxInteraction'][_0x055c('0x6c')]);_0x263236['query']=_[_0x055c('0x42')](_0x30b61f['query']);_0x263236['filters']=_['intersection'](_0x263236[_0x055c('0x3f')],_0x263236[_0x055c('0x41')]);_0x169d80[_0x055c('0x45')]=_[_0x055c('0x44')](_0x263236[_0x055c('0x3f')],qs['fields'](_0x30b61f['query'][_0x055c('0x46')]));_0x169d80[_0x055c('0x45')]=_0x169d80[_0x055c('0x45')][_0x055c('0x47')]?_0x169d80['attributes']:_0x263236[_0x055c('0x3f')];if(!_0x30b61f[_0x055c('0x41')][_0x055c('0x48')](_0x055c('0x66'))){_0x169d80[_0x055c('0x2f')]=qs[_0x055c('0x2f')](_0x30b61f['query'][_0x055c('0x2f')]);_0x169d80['offset']=qs['offset'](_0x30b61f['query'][_0x055c('0x2d')]);}_0x169d80[_0x055c('0x49')]=qs[_0x055c('0x4a')](_0x30b61f['query']['sort']);_0x169d80['where']=qs[_0x055c('0x43')](_['pick'](_0x30b61f[_0x055c('0x41')],_0x263236[_0x055c('0x43')]));_0x169d80[_0x055c('0x4b')]['FaxAccountId']=_0x1b2a18['id'];if(_0x30b61f['query'][_0x055c('0x4d')]){_0x169d80['where']=_[_0x055c('0x4f')](_0x169d80[_0x055c('0x4b')],{'$or':_['map'](_0x169d80['attributes'],function(_0xe1d154){var _0xa40fc6={};_0xa40fc6[_0xe1d154]={'$like':'%'+_0x30b61f[_0x055c('0x41')][_0x055c('0x4d')]+'%'};return _0xa40fc6;})});}_0x169d80=_['merge']({},_0x169d80,_0x30b61f['options']);return db[_0x055c('0x71')][_0x055c('0x2e')]({'where':_0x169d80['where']})[_0x055c('0x20')](function(_0x256e55){_0x16b0c3[_0x055c('0x2e')]=_0x256e55;if(_0x30b61f[_0x055c('0x41')]['includeAll']){_0x169d80[_0x055c('0x56')]=[{'model':db[_0x055c('0x72')],'as':_0x055c('0x73'),'required':![]},{'model':db['User'],'as':_0x055c('0x74'),'attributes':[_0x055c('0x3a'),'fullname',_0x055c('0x75')],'required':![]},{'model':db[_0x055c('0x76')],'as':'Tags','attributes':['id',_0x055c('0x3a'),_0x055c('0x77')],'where':_0x30b61f[_0x055c('0x41')][_0x055c('0x78')]?{'id':_0x30b61f[_0x055c('0x41')]['tag']}:undefined,'required':_0x30b61f[_0x055c('0x41')][_0x055c('0x78')]?!![]:![]}];}return db[_0x055c('0x71')][_0x055c('0x52')](_0x169d80);})[_0x055c('0x20')](function(_0x315e02){_0x16b0c3[_0x055c('0x53')]=_0x315e02;return _0x16b0c3;});}})[_0x055c('0x20')](respondWithFilteredResult(_0xc7d52,_0x169d80))[_0x055c('0x2b')](handleError(_0xc7d52,null));};exports[_0x055c('0x79')]=function(_0x38da76,_0x3ff109,_0x913be3){return db[_0x055c('0x3d')]['findOne']({'where':{'id':_0x38da76[_0x055c('0x54')]['id']}})[_0x055c('0x20')](handleEntityNotFound(_0x3ff109,null))[_0x055c('0x20')](function(_0xc5341){if(_0xc5341){return db[_0x055c('0x7a')]['transaction'](function(_0x48e5a2){return db[_0x055c('0x7b')]['destroy']({'where':{'FaxAccountId':_0x38da76[_0x055c('0x54')]['id']},'transaction':_0x48e5a2})[_0x055c('0x20')](function(_0x54b0e0){var _0x4010c3=_[_0x055c('0x40')](_0x38da76[_0x055c('0x58')],function(_0x27e8c4){_0x27e8c4['FaxAccountId']=_0x38da76['params']['id'];return _0x27e8c4;});return db['FaxApplication'][_0x055c('0x7c')](_0x4010c3,{'transaction':_0x48e5a2});});})['then'](function(){return db[_0x055c('0x7b')][_0x055c('0x7d')]({'where':{'FaxAccountId':_0x38da76[_0x055c('0x54')]['id']},'order':_0x055c('0x7e')});});}})[_0x055c('0x20')](respondWithResult(_0x3ff109,null))[_0x055c('0x2b')](handleError(_0x3ff109,null));};exports[_0x055c('0x7f')]=function(_0x3fa3d3,_0x5f456c,_0x39d693){var _0x436c6e={};var _0x464e0a={};var _0x1985d9;var _0x2688ec;return db[_0x055c('0x3d')][_0x055c('0x65')]({'where':{'id':_0x3fa3d3['params']['id']}})['then'](handleEntityNotFound(_0x5f456c,null))[_0x055c('0x20')](function(_0x2386d0){if(_0x2386d0){_0x1985d9=_0x2386d0;_0x464e0a[_0x055c('0x3f')]=_[_0x055c('0x42')](db[_0x055c('0x7b')][_0x055c('0x6c')]);_0x464e0a[_0x055c('0x41')]=_[_0x055c('0x42')](_0x3fa3d3[_0x055c('0x41')]);_0x464e0a[_0x055c('0x43')]=_['intersection'](_0x464e0a[_0x055c('0x3f')],_0x464e0a[_0x055c('0x41')]);_0x436c6e[_0x055c('0x45')]=_[_0x055c('0x44')](_0x464e0a[_0x055c('0x3f')],qs[_0x055c('0x46')](_0x3fa3d3[_0x055c('0x41')][_0x055c('0x46')]));_0x436c6e[_0x055c('0x45')]=_0x436c6e[_0x055c('0x45')]['length']?_0x436c6e[_0x055c('0x45')]:_0x464e0a['model'];_0x436c6e['order']=qs[_0x055c('0x4a')](_0x3fa3d3[_0x055c('0x41')][_0x055c('0x4a')]);_0x436c6e[_0x055c('0x4b')]=qs['filters'](_[_0x055c('0x4c')](_0x3fa3d3[_0x055c('0x41')],_0x464e0a[_0x055c('0x43')]));if(_0x3fa3d3['query']['filter']){_0x436c6e[_0x055c('0x4b')]=_[_0x055c('0x4f')](_0x436c6e[_0x055c('0x4b')],{'$or':_[_0x055c('0x40')](_0x436c6e[_0x055c('0x45')],function(_0x26ac2c){var _0x1d2fed={};_0x1d2fed[_0x26ac2c]={'$like':'%'+_0x3fa3d3[_0x055c('0x41')]['filter']+'%'};return _0x1d2fed;})});}_0x436c6e=_[_0x055c('0x4f')]({},_0x436c6e,_0x3fa3d3[_0x055c('0x50')]);return _0x1985d9[_0x055c('0x7f')](_0x436c6e);}})[_0x055c('0x20')](function(_0x38d05e){if(_0x38d05e){_0x2688ec=_0x38d05e[_0x055c('0x47')];if(!_0x3fa3d3[_0x055c('0x41')][_0x055c('0x48')](_0x055c('0x66'))){_0x436c6e[_0x055c('0x2f')]=qs[_0x055c('0x2f')](_0x3fa3d3[_0x055c('0x41')][_0x055c('0x2f')]);_0x436c6e[_0x055c('0x2d')]=qs[_0x055c('0x2d')](_0x3fa3d3[_0x055c('0x41')][_0x055c('0x2d')]);}return _0x1985d9[_0x055c('0x7f')](_0x436c6e);}})['then'](function(_0x2841f2){if(_0x2841f2){return _0x2841f2?{'count':_0x2688ec,'rows':_0x2841f2}:null;}})[_0x055c('0x20')](respondWithResult(_0x5f456c,null))[_0x055c('0x2b')](handleError(_0x5f456c,null));};function Extension(_0x4ed79b,_0x41dd2d,_0x4d51fd,_0xbe861c){this[_0x055c('0x80')]='from-voip-provider';this[_0x055c('0x81')]=_0x4ed79b[_0x055c('0x82')];this['app']=_0xbe861c;this['type']='system';this[_0x055c('0x83')]='Fax\x20Extension';this[_0x055c('0x67')]=_0x4ed79b['id'];this['priority']=_0x41dd2d;this[_0x055c('0x84')]=_0x4d51fd;}function createExtensionsReciveFax(_0x1b54ab){var _0x538f65=0x1;var _0x58ae8d=[];_0x58ae8d[_0x055c('0x85')](new Extension(_0x1b54ab,_0x538f65,'',_0x055c('0x86')));_0x538f65+=0x1;_0x58ae8d[_0x055c('0x85')](new Extension(_0x1b54ab,_0x538f65,_0x055c('0x87'),_0x055c('0x88')));_0x538f65+=0x1;for(var _0x450a03 in _0x1b54ab){if(_0x1b54ab[_0x055c('0x48')](_0x450a03)&&(_0x450a03===_0x055c('0x89')||_0x450a03===_0x055c('0x82')||_0x450a03===_0x055c('0x8a')||_0x450a03===_0x055c('0x8b')||_0x450a03===_0x055c('0x8c')||_0x450a03==='maxrate'||_0x450a03===_0x055c('0x8d')||_0x450a03===_0x055c('0x8e')||_0x450a03===_0x055c('0x8f'))){_0x58ae8d[_0x055c('0x85')](new Extension(_0x1b54ab,_0x538f65,_0x055c('0x90')+_0x450a03+')='+_0x1b54ab[_0x450a03],_0x055c('0x88')));_0x538f65+=0x1;}}_0x58ae8d[_0x055c('0x85')](new Extension(_0x1b54ab,_0x538f65,'6','Wait'));_0x538f65+=0x1;_0x58ae8d['push'](new Extension(_0x1b54ab,_0x538f65,'/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',_0x055c('0x91')));_0x538f65=0x0;return _0x58ae8d;}exports['addAccountApplications']=function(_0x55462b,_0xd6ac4,_0x46c8d0){var _0x4dd14b;return db['sequelize'][_0x055c('0x92')](function(_0x1746a4){return db['FaxAccount']['create'](_0x55462b[_0x055c('0x58')],{'transaction':_0x1746a4})['then'](function(_0x4e30b5){_0x4dd14b=_0x4e30b5[_0x055c('0x5a')]({'plain':!![]});return db['VoiceExtension'][_0x055c('0x7c')](createExtensionsReciveFax(_0x4dd14b),{'transaction':_0x1746a4});});})[_0x055c('0x20')](function(){return _0x4dd14b;})['then'](respondWithResult(_0xd6ac4,null))[_0x055c('0x2b')](handleError(_0xd6ac4,null));};exports[_0x055c('0x93')]=function(_0x3e7486,_0x335661,_0xc98194){var _0x12ace7;return db['sequelize']['transaction'](function(_0x157b8e){return db[_0x055c('0x3d')][_0x055c('0x34')](_0x3e7486[_0x055c('0x58')],{'where':{'id':_0x3e7486['body']['id']},'transaction':_0x157b8e})[_0x055c('0x20')](function(_0xafab68){return db[_0x055c('0x94')][_0x055c('0x35')]({'where':{'FaxAccountId':_0x3e7486[_0x055c('0x58')]['id']},'transaction':_0x157b8e})[_0x055c('0x20')](function(_0x5073e4){return db['VoiceExtension'][_0x055c('0x7c')](createExtensionsReciveFax(_[_0x055c('0x6f')](_0x3e7486['body'],[_0x055c('0x95'),_0x055c('0x96'),_0x055c('0x97'),_0x055c('0x98'),'TrunkId',_0x055c('0x99')])),{'transaction':_0x157b8e});});});})['then'](function(){return db[_0x055c('0x3d')]['findById'](_0x3e7486[_0x055c('0x58')]['id']);})[_0x055c('0x20')](respondWithResult(_0x335661,null))['catch'](handleError(_0x335661,null));};exports['getMessages']=function(_0x32cf5a,_0x58f457,_0x49ac61){var _0x523fda={'raw':!![],'where':{}};var _0x105f29={};var _0x5c4d92={'count':0x0,'rows':[]};return db[_0x055c('0x3d')][_0x055c('0x65')]({'where':{'id':_0x32cf5a[_0x055c('0x54')]['id']}})[_0x055c('0x20')](handleEntityNotFound(_0x58f457,null))[_0x055c('0x20')](function(_0x3adcfd){if(_0x3adcfd){_0x105f29[_0x055c('0x3f')]=_['keys'](db[_0x055c('0x9a')][_0x055c('0x6c')]);_0x105f29[_0x055c('0x41')]=_[_0x055c('0x42')](_0x32cf5a[_0x055c('0x41')]);_0x105f29[_0x055c('0x43')]=_['intersection'](_0x105f29[_0x055c('0x3f')],_0x105f29[_0x055c('0x41')]);_0x523fda[_0x055c('0x45')]=_[_0x055c('0x44')](_0x105f29[_0x055c('0x3f')],qs['fields'](_0x32cf5a[_0x055c('0x41')][_0x055c('0x46')]));_0x523fda['attributes']=_0x523fda[_0x055c('0x45')]['length']?_0x523fda[_0x055c('0x45')]:_0x105f29[_0x055c('0x3f')];if(!_0x32cf5a['query'][_0x055c('0x48')](_0x055c('0x66'))){_0x523fda[_0x055c('0x2f')]=qs[_0x055c('0x2f')](_0x32cf5a[_0x055c('0x41')][_0x055c('0x2f')]);_0x523fda[_0x055c('0x2d')]=qs[_0x055c('0x2d')](_0x32cf5a[_0x055c('0x41')][_0x055c('0x2d')]);}_0x523fda[_0x055c('0x49')]=qs['sort'](_0x32cf5a[_0x055c('0x41')][_0x055c('0x4a')]);_0x523fda[_0x055c('0x4b')]=qs['filters'](_[_0x055c('0x4c')](_0x32cf5a['query'],_0x105f29[_0x055c('0x43')]));_0x523fda[_0x055c('0x4b')][_0x055c('0x67')]=_0x3adcfd['id'];if(_0x32cf5a[_0x055c('0x41')][_0x055c('0x4d')]){_0x523fda[_0x055c('0x4b')]=_[_0x055c('0x4f')](_0x523fda[_0x055c('0x4b')],{'$or':_[_0x055c('0x40')](_0x523fda[_0x055c('0x45')],function(_0x5766ea){var _0x244375={};_0x244375[_0x5766ea]={'$like':'%'+_0x32cf5a[_0x055c('0x41')][_0x055c('0x4d')]+'%'};return _0x244375;})});}if(_0x32cf5a[_0x055c('0x41')]['$gte']){var _0x419927=_0x32cf5a['query'][_0x055c('0x9b')][_0x055c('0x9c')](',');var _0x41495f={};_0x41495f[_0x419927[0x0]]={'$gte':moment(_0x419927[0x1])[_0x055c('0x9d')](_0x055c('0x9e'))};_0x523fda[_0x055c('0x4b')]=_['merge'](_0x523fda[_0x055c('0x4b')],_0x41495f);}_0x523fda=_[_0x055c('0x4f')]({},_0x523fda,_0x32cf5a['options']);return db[_0x055c('0x9a')][_0x055c('0x2e')]({'where':_0x523fda[_0x055c('0x4b')]})[_0x055c('0x20')](function(_0x1e3608){_0x5c4d92['count']=_0x1e3608;if(_0x32cf5a['query'][_0x055c('0x51')]){_0x523fda[_0x055c('0x56')]=[{'all':!![]}];}return db[_0x055c('0x9a')][_0x055c('0x52')](_0x523fda);})[_0x055c('0x20')](function(_0xb3f861){_0x5c4d92['rows']=_0xb3f861;return _0x5c4d92;});}})[_0x055c('0x20')](respondWithFilteredResult(_0x58f457,_0x523fda))[_0x055c('0x2b')](handleError(_0x58f457,null));};exports[_0x055c('0x9f')]=function(_0x507476,_0x28aae8,_0x39ff9f){var _0x5a7c38,_0x37f81b={},_0x400b87;if(_0x507476['body']['to']){_0x400b87=_0x507476[_0x055c('0x58')]['to'][0x0];}return db[_0x055c('0x3d')][_0x055c('0x5e')]({'where':{'id':_0x507476[_0x055c('0x54')]['id']},'include':[{'model':db[_0x055c('0xa0')],'as':_0x055c('0xa1'),'include':[{'model':db[_0x055c('0x72')],'as':_0x055c('0xa2'),'where':{'fax':_0x400b87},'limit':0x1,'order':[['updatedAt',_0x055c('0xa3')]]}]}]})[_0x055c('0x20')](handleEntityNotFound(_0x28aae8,null))[_0x055c('0x20')](function(_0x4b133e){_0x5a7c38=_0x4b133e;if(_0x507476['body']['attachments']&&_0x507476[_0x055c('0x58')][_0x055c('0xa4')]['length']){for(var _0x1a9815=0x0;_0x1a9815<_0x507476[_0x055c('0x58')][_0x055c('0xa4')][_0x055c('0x47')];_0x1a9815+=0x1){_0x507476[_0x055c('0x58')][_0x055c('0xa4')][_0x1a9815]={'filename':_0x507476[_0x055c('0x58')]['attachments'][_0x1a9815][_0x055c('0x3a')],'id':_0x507476['body'][_0x055c('0xa4')][_0x1a9815]['id'],'path':path[_0x055c('0xa5')](config[_0x055c('0xa6')],_0x055c('0xa7'),_0x507476[_0x055c('0x58')][_0x055c('0xa4')][_0x1a9815][_0x055c('0xa8')])};}}return respondWithRpcPromise(_0x055c('0xa9'),_0x055c('0xa9'),{'FaxAccountId':_[_0x055c('0xaa')](_0x507476[_0x055c('0x54')]['id'])?undefined:_0x507476[_0x055c('0x54')]['id'],'path':_[_0x055c('0xaa')](_0x507476[_0x055c('0x58')][_0x055c('0xa4')][0x0]['path'])?undefined:_0x507476[_0x055c('0x58')]['attachments'][0x0][_0x055c('0xab')],'fax':_[_0x055c('0xaa')](_0x507476[_0x055c('0x58')]['to'][0x0])?undefined:_0x507476['body']['to'][0x0]},client9002);})[_0x055c('0x20')](function(){if(_0x5a7c38){if(_['isNil'](_0x507476[_0x055c('0x58')][_0x055c('0xac')])){_0x507476['body'][_0x055c('0xac')]=util['format'](_0x055c('0xad'),_0x5a7c38[_0x055c('0x3a')],_0x5a7c38[_0x055c('0xae')]);}if(_0x5a7c38[_0x055c('0xa1')]){if(_0x5a7c38['List'][_0x055c('0xa2')][_0x055c('0x47')]){return _0x5a7c38[_0x055c('0xa1')][_0x055c('0xa2')][0x0];}else{return db[_0x055c('0x72')][_0x055c('0x57')](_[_0x055c('0x17')](_0x507476[_0x055c('0x58')],{'firstName':_0x507476['body']['to'][0x0],'phone':_0x507476['body']['to'][0x0],'fax':_0x507476[_0x055c('0x58')]['to'][0x0],'ListId':_0x5a7c38['ListId']}));}}else{throw new Error(_0x055c('0xaf'));}}else{throw new Error(_0x055c('0xb0'));}})[_0x055c('0x20')](function(_0x38ed3d){if(_0x38ed3d){return db[_0x055c('0x71')][_0x055c('0x5e')]({'where':{'ContactId':_0x38ed3d['id'],'closed':![],'FaxAccountId':_0x5a7c38['id']}})[_0x055c('0x20')](function(_0x4d4f2a){if(_0x4d4f2a){return[_0x4d4f2a,![]];}return db[_0x055c('0x71')][_0x055c('0x57')]({'UserId':_0x507476[_0x055c('0x59')]['id'],'ContactId':_0x38ed3d['id'],'FaxAccountId':_0x5a7c38['id'],'fax':_0x507476[_0x055c('0x58')]['to'][0x0],'firstMsgDirection':'out','Messages':[_[_0x055c('0x4f')](_0x507476[_0x055c('0x58')],{'read':![],'body':_0x507476[_0x055c('0x58')][_0x055c('0xa4')][0x0][_0x055c('0xb1')],'FaxAccountId':_0x5a7c38['id'],'UserId':_0x507476[_0x055c('0x59')]['id'],'ContactId':_0x38ed3d['id'],'AttachmentId':_0x507476[_0x055c('0x58')]['attachments'][0x0]['id']})]},{'include':[{'model':db[_0x055c('0x9a')],'as':'Messages'}]})['then'](function(_0xf7f2f3){return[_0xf7f2f3,!![]];});});}else{throw new Error(_0x055c('0xb2'));}})[_0x055c('0xb3')](function(_0x3b5ab2,_0x3bb217){if(_0x3bb217){return _0x3b5ab2;}return db[_0x055c('0x9a')][_0x055c('0x57')]({'direction':_0x055c('0xb4'),'read':![],'body':_0x507476[_0x055c('0x58')]['attachments'][0x0][_0x055c('0xb1')],'FaxAccountId':_0x5a7c38['id'],'FaxInteractionId':_0x3b5ab2['id'],'UserId':_0x507476[_0x055c('0x59')]['id'],'ContactId':_0x3b5ab2['ContactId'],'AttachmentId':_0x507476[_0x055c('0x58')][_0x055c('0xa4')][0x0]['id']})['then'](function(_0x369a9e){_0x3b5ab2['dataValues'][_0x055c('0xb5')]=[];_0x3b5ab2[_0x055c('0xb6')][_0x055c('0xb5')][_0x055c('0x85')](_0x369a9e['dataValues']);return _0x3b5ab2;});})[_0x055c('0x20')](function(_0x4181fb){respondWithRpcPromise(_0x055c('0xb7'),_0x055c('0xb7'),{'FaxAccountId':_['isNil'](_0x507476[_0x055c('0x54')]['id'])?undefined:_0x507476[_0x055c('0x54')]['id'],'path':_[_0x055c('0xaa')](_0x507476[_0x055c('0x58')][_0x055c('0xa4')][0x0][_0x055c('0xab')])?undefined:_0x507476[_0x055c('0x58')][_0x055c('0xa4')][0x0][_0x055c('0xab')],'fax':_[_0x055c('0xaa')](_0x507476['body']['to'][0x0])?undefined:_0x507476[_0x055c('0x58')]['to'][0x0],'AttachmentId':_0x507476['body'][_0x055c('0xa4')][0x0]['id']},client9002)[_0x055c('0x20')](function(_0x324a53){logger['info'](_0x055c('0xb8'),_0x324a53);})['catch'](function(_0x310874){logger['info'](_0x055c('0xb8'),_0x310874);});return _0x4181fb;})['then'](respondWithResult(_0x28aae8,null))[_0x055c('0x2b')](handleError(_0x28aae8,null));};exports[_0x055c('0xb9')]=function(_0x369d17,_0x3b9c19,_0x4adf71){return db[_0x055c('0x3d')][_0x055c('0x5e')]({'where':{'id':_0x369d17[_0x055c('0x54')]['id']}})[_0x055c('0x20')](handleEntityNotFound(_0x3b9c19,null))[_0x055c('0x20')](function(_0x43672c){if(_0x43672c){return _0x43672c[_0x055c('0xb9')](_0x369d17[_0x055c('0x58')][_0x055c('0x69')],_[_0x055c('0x6f')](_0x369d17[_0x055c('0x58')],[_0x055c('0x69'),'id'])||{})['spread'](function(_0xf23074){for(var _0xfe6a41=0x0;_0xfe6a41<_0x369d17[_0x055c('0x58')]['ids']['length'];_0xfe6a41+=0x1){socket[_0x055c('0xba')](_0x055c('0xbb'),{'UserId':Number(_0x369d17[_0x055c('0x58')][_0x055c('0x69')][_0xfe6a41]),'FaxAccountId':Number(_0x369d17['params']['id'])});}return _0xf23074;});}})[_0x055c('0x20')](respondWithResult(_0x3b9c19,null))['catch'](handleError(_0x3b9c19,null));};exports['removeAgents']=function(_0x5afff7,_0x42331b,_0x30d6ad){return db[_0x055c('0x3d')][_0x055c('0x5e')]({'where':{'id':_0x5afff7['params']['id']}})[_0x055c('0x20')](handleEntityNotFound(_0x42331b,null))[_0x055c('0x20')](function(_0x50061b){if(_0x50061b){return _0x50061b[_0x055c('0xbc')](_0x5afff7[_0x055c('0x41')]['ids'])[_0x055c('0x20')](function(){if(_[_0x055c('0xbd')](_0x5afff7[_0x055c('0x41')][_0x055c('0x69')])){for(var _0x207d34=0x0;_0x207d34<_0x5afff7['query'][_0x055c('0x69')]['length'];_0x207d34+=0x1){socket[_0x055c('0xba')](_0x055c('0xbe'),{'UserId':Number(_0x5afff7['query'][_0x055c('0x69')][_0x207d34]),'FaxAccountId':Number(_0x5afff7['params']['id'])});}}else{socket[_0x055c('0xba')](_0x055c('0xbe'),{'UserId':Number(_0x5afff7[_0x055c('0x41')][_0x055c('0x69')]),'FaxAccountId':Number(_0x5afff7[_0x055c('0x54')]['id'])});}});}})[_0x055c('0x20')](respondWithStatusCode(_0x42331b,null))[_0x055c('0x2b')](handleError(_0x42331b,null));};exports[_0x055c('0xbf')]=function(_0x4abaa4,_0x2bb36c,_0x3b3deb){var _0x144bb4={};var _0x4c7697={};var _0x16eeaa;var _0x2fbc68;return db[_0x055c('0x3d')]['findOne']({'where':{'id':_0x4abaa4[_0x055c('0x54')]['id']}})['then'](handleEntityNotFound(_0x2bb36c,null))['then'](function(_0xa52b64){if(_0xa52b64){_0x16eeaa=_0xa52b64;_0x4c7697['model']=_[_0x055c('0x42')](db[_0x055c('0xc0')][_0x055c('0x6c')]);_0x4c7697[_0x055c('0x41')]=_[_0x055c('0x42')](_0x4abaa4[_0x055c('0x41')]);_0x4c7697[_0x055c('0x43')]=_[_0x055c('0x44')](_0x4c7697[_0x055c('0x3f')],_0x4c7697[_0x055c('0x41')]);_0x144bb4[_0x055c('0x45')]=_[_0x055c('0x44')](_0x4c7697['model'],qs[_0x055c('0x46')](_0x4abaa4[_0x055c('0x41')]['fields']));_0x144bb4['attributes']=_0x144bb4[_0x055c('0x45')]['length']?_0x144bb4[_0x055c('0x45')]:_0x4c7697[_0x055c('0x3f')];_0x144bb4[_0x055c('0x49')]=qs[_0x055c('0x4a')](_0x4abaa4['query'][_0x055c('0x4a')]);_0x144bb4[_0x055c('0x4b')]=qs[_0x055c('0x43')](_['pick'](_0x4abaa4['query'],_0x4c7697[_0x055c('0x43')]));if(_0x4abaa4[_0x055c('0x41')]['filter']){_0x144bb4[_0x055c('0x4b')]=_[_0x055c('0x4f')](_0x144bb4[_0x055c('0x4b')],{'$or':_[_0x055c('0x40')](_0x144bb4[_0x055c('0x45')],function(_0x35e76e){var _0x2a31b4={};_0x2a31b4[_0x35e76e]={'$like':'%'+_0x4abaa4[_0x055c('0x41')]['filter']+'%'};return _0x2a31b4;})});}_0x144bb4=_[_0x055c('0x4f')]({},_0x144bb4,_0x4abaa4[_0x055c('0x50')]);return _0x16eeaa[_0x055c('0xbf')](_0x144bb4);}})[_0x055c('0x20')](function(_0x4059d0){if(_0x4059d0){_0x2fbc68=_0x4059d0[_0x055c('0x47')];if(!_0x4abaa4[_0x055c('0x41')]['hasOwnProperty'](_0x055c('0x66'))){_0x144bb4['limit']=qs[_0x055c('0x2f')](_0x4abaa4['query'][_0x055c('0x2f')]);_0x144bb4[_0x055c('0x2d')]=qs[_0x055c('0x2d')](_0x4abaa4['query'][_0x055c('0x2d')]);}return _0x16eeaa[_0x055c('0xbf')](_0x144bb4);}})['then'](function(_0x4788ee){if(_0x4788ee){return _0x4788ee?{'count':_0x2fbc68,'rows':_0x4788ee}:null;}})[_0x055c('0x20')](respondWithResult(_0x2bb36c,null))[_0x055c('0x2b')](handleError(_0x2bb36c,null));};
\ No newline at end of file
index 04a451e..ef75e88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9209=['exports','events','../../mysqldb','FaxAccount','setMaxListeners','save','emit','hasOwnProperty','hook'];(function(_0x10413d,_0x39ceb2){var _0x26c937=function(_0x3fb540){while(--_0x3fb540){_0x10413d['push'](_0x10413d['shift']());}};_0x26c937(++_0x39ceb2);}(_0x9209,0x1ba));var _0x9920=function(_0x413395,_0x2ca093){_0x413395=_0x413395-0x0;var _0x79a324=_0x9209[_0x413395];return _0x79a324;};'use strict';var EventEmitter=require(_0x9920('0x0'));var FaxAccount=require(_0x9920('0x1'))['db'][_0x9920('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x9920('0x3')](0x0);var events={'afterCreate':_0x9920('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x226362){return function(_0x21e6d4,_0x168140,_0x1987d8){FaxAccountEvents['emit'](_0x226362+':'+_0x21e6d4['id'],_0x21e6d4);FaxAccountEvents[_0x9920('0x5')](_0x226362,_0x21e6d4);_0x1987d8(null);};}for(var e in events){if(events[_0x9920('0x6')](e)){var event=events[e];FaxAccount[_0x9920('0x7')](e,emitEvent(event));}}module[_0x9920('0x8')]=FaxAccountEvents;
\ No newline at end of file
+var _0x33a5=['emit','hook','exports','events','../../mysqldb','FaxAccount','setMaxListeners','save','update','remove'];(function(_0x209ec9,_0x30378c){var _0x129b1b=function(_0x2f2b9e){while(--_0x2f2b9e){_0x209ec9['push'](_0x209ec9['shift']());}};_0x129b1b(++_0x30378c);}(_0x33a5,0x125));var _0x533a=function(_0x35f02d,_0x1e24e9){_0x35f02d=_0x35f02d-0x0;var _0x299593=_0x33a5[_0x35f02d];return _0x299593;};'use strict';var EventEmitter=require(_0x533a('0x0'));var FaxAccount=require(_0x533a('0x1'))['db'][_0x533a('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x533a('0x3')](0x0);var events={'afterCreate':_0x533a('0x4'),'afterUpdate':_0x533a('0x5'),'afterDestroy':_0x533a('0x6')};function emitEvent(_0x50db4f){return function(_0x95b42,_0x16b2da,_0x24ade8){FaxAccountEvents[_0x533a('0x7')](_0x50db4f+':'+_0x95b42['id'],_0x95b42);FaxAccountEvents[_0x533a('0x7')](_0x50db4f,_0x95b42);_0x24ade8(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxAccount[_0x533a('0x8')](e,emitEvent(event));}}module[_0x533a('0x9')]=FaxAccountEvents;
\ No newline at end of file
index 8287462..07f5a50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x396d=['fax_accounts','lodash','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./faxAccount.attributes','exports','define','FaxAccount'];(function(_0x40bffc,_0x3a45d7){var _0x3007e9=function(_0x4c8fda){while(--_0x4c8fda){_0x40bffc['push'](_0x40bffc['shift']());}};_0x3007e9(++_0x3a45d7);}(_0x396d,0x139));var _0xd396=function(_0x1d2326,_0x23b1d3){_0x1d2326=_0x1d2326-0x0;var _0x28bb03=_0x396d[_0x1d2326];return _0x28bb03;};'use strict';var _=require(_0xd396('0x0'));var util=require('util');var logger=require(_0xd396('0x1'))('api');var moment=require('moment');var BPromise=require(_0xd396('0x2'));var rp=require(_0xd396('0x3'));var fs=require('fs');var path=require(_0xd396('0x4'));var rimraf=require(_0xd396('0x5'));var config=require(_0xd396('0x6'));var attributes=require(_0xd396('0x7'));module[_0xd396('0x8')]=function(_0x36a037,_0x41e3b6){return _0x36a037[_0xd396('0x9')](_0xd396('0xa'),attributes,{'tableName':_0xd396('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb078=['rimraf','../../config/environment','./faxAccount.attributes','define','fax_accounts','lodash','util','../../config/logger','moment'];(function(_0x4f75b5,_0x4db76d){var _0x5c263b=function(_0x31e622){while(--_0x31e622){_0x4f75b5['push'](_0x4f75b5['shift']());}};_0x5c263b(++_0x4db76d);}(_0xb078,0xa7));var _0x8b07=function(_0x154005,_0x211db9){_0x154005=_0x154005-0x0;var _0x124e8a=_0xb078[_0x154005];return _0x124e8a;};'use strict';var _=require(_0x8b07('0x0'));var util=require(_0x8b07('0x1'));var logger=require(_0x8b07('0x2'))('api');var moment=require(_0x8b07('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x8b07('0x4'));var config=require(_0x8b07('0x5'));var attributes=require(_0x8b07('0x6'));module['exports']=function(_0x404c29,_0xd177ea){return _0x404c29[_0x8b07('0x7')]('FaxAccount',attributes,{'tableName':_0x8b07('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d247a2f..fc9ab25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a60=['push','close','created','interaction','FaxMessage','ContactId','UserId','User','name','unshift','agent','*,*,*,*','Start','startRouting','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','FaxAccount,\x20%s,\x20%s,\x20%s','error','code','message','catch','GetFaxAccount','FaxAccount','options','where','attributes','limit','include','model','map','debug','stringify','NotifyFaxAccount','body','fax','CmContact','describe','ValidationError','keys','createdAt','difference','updatedAt','CompanyId','ListId','isNil','from','Sequelize','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','account','CmList','List','DESC','FaxApplication','Applications','applications','orderBy','priority','asc','Contacts','length','create','FaxInteraction','spread','get'];(function(_0x1d3791,_0x51c613){var _0x40fbf5=function(_0xe5d147){while(--_0xe5d147){_0x1d3791['push'](_0x1d3791['shift']());}};_0x40fbf5(++_0x51c613);}(_0x3a60,0x16a));var _0x03a6=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x3a60[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x03a6('0x0'));var util=require(_0x03a6('0x1'));var moment=require('moment');var BPromise=require(_0x03a6('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x03a6('0x3'));var db=require(_0x03a6('0x4'))['db'];var utils=require(_0x03a6('0x5'));var logger=require(_0x03a6('0x6'))(_0x03a6('0x7'));var config=require('../../config/environment');var jayson=require(_0x03a6('0x8'));var client=jayson[_0x03a6('0x9')][_0x03a6('0xa')]({'port':0x232c});config[_0x03a6('0xb')]=_[_0x03a6('0xc')](config[_0x03a6('0xb')],{'host':_0x03a6('0xd'),'port':0x18eb});var socket=require(_0x03a6('0xe'))(new Redis(config[_0x03a6('0xb')]));require('./faxAccount.socket')[_0x03a6('0xf')](socket);function respondWithRpcPromise(_0x30c9aa,_0x365f48,_0x5d1652){return new BPromise(function(_0x4cb111,_0x4d0df0){return client[_0x03a6('0x10')](_0x30c9aa,_0x5d1652)[_0x03a6('0x11')](function(_0x17dc0b){logger[_0x03a6('0x12')](_0x03a6('0x13'),_0x365f48,_0x03a6('0x14'));logger['debug'](_0x03a6('0x15'),_0x365f48,_0x03a6('0x14'),JSON['stringify'](_0x17dc0b));if(_0x17dc0b[_0x03a6('0x16')]){if(_0x17dc0b[_0x03a6('0x16')][_0x03a6('0x17')]===0x1f4){logger['error']('FaxAccount,\x20%s,\x20%s',_0x365f48,_0x17dc0b['error'][_0x03a6('0x18')]);return _0x4d0df0(_0x17dc0b[_0x03a6('0x16')][_0x03a6('0x18')]);}logger['error'](_0x03a6('0x13'),_0x365f48,_0x17dc0b[_0x03a6('0x16')][_0x03a6('0x18')]);return _0x4cb111(_0x17dc0b['error'][_0x03a6('0x18')]);}else{logger['info'](_0x03a6('0x13'),_0x365f48,'request\x20sent');_0x4cb111(_0x17dc0b['result'][_0x03a6('0x18')]);}})[_0x03a6('0x19')](function(_0x424bba){logger[_0x03a6('0x16')]('FaxAccount,\x20%s,\x20%s',_0x365f48,_0x424bba);_0x4d0df0(_0x424bba);});});}exports[_0x03a6('0x1a')]=function(_0x3a2470){var _0x44b404=this;return new Promise(function(_0x1683bf,_0x1261b8){return db[_0x03a6('0x1b')]['findAll']({'raw':_0x3a2470[_0x03a6('0x1c')]?_0x3a2470['options']['raw']===undefined?!![]:![]:!![],'where':_0x3a2470[_0x03a6('0x1c')]?_0x3a2470[_0x03a6('0x1c')][_0x03a6('0x1d')]||null:null,'attributes':_0x3a2470[_0x03a6('0x1c')]?_0x3a2470[_0x03a6('0x1c')][_0x03a6('0x1e')]||null:null,'limit':_0x3a2470[_0x03a6('0x1c')]?_0x3a2470[_0x03a6('0x1c')][_0x03a6('0x1f')]||null:null,'include':_0x3a2470['options']?_0x3a2470[_0x03a6('0x1c')][_0x03a6('0x20')]?_['map'](_0x3a2470[_0x03a6('0x1c')]['include'],function(_0x2b8dc8){return{'model':db[_0x2b8dc8[_0x03a6('0x21')]],'as':_0x2b8dc8['as'],'attributes':_0x2b8dc8[_0x03a6('0x1e')],'include':_0x2b8dc8[_0x03a6('0x20')]?_[_0x03a6('0x22')](_0x2b8dc8[_0x03a6('0x20')],function(_0x17f863){return{'model':db[_0x17f863['model']],'as':_0x17f863['as'],'attributes':_0x17f863[_0x03a6('0x1e')],'include':_0x17f863[_0x03a6('0x20')]?_[_0x03a6('0x22')](_0x17f863['include'],function(_0x37157d){return{'model':db[_0x37157d[_0x03a6('0x21')]],'as':_0x37157d['as'],'attributes':_0x37157d[_0x03a6('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x03a6('0x11')](function(_0xef4e47){logger[_0x03a6('0x12')](_0x03a6('0x1a'),_0x3a2470);logger[_0x03a6('0x23')]('GetFaxAccount',_0x3a2470,JSON[_0x03a6('0x24')](_0xef4e47));_0x1683bf(_0xef4e47);})[_0x03a6('0x19')](function(_0x4aef6f){logger[_0x03a6('0x16')]('GetFaxAccount',_0x4aef6f['message'],_0x3a2470);_0x1261b8(_0x44b404[_0x03a6('0x16')](0x1f4,_0x4aef6f[_0x03a6('0x18')]));});});};exports[_0x03a6('0x25')]=function(_0x39715a,_0x3ee54c,_0x60c754){var _0x26b1da=this;return new Promise(function(_0x447c67,_0x45eeb7){var _0x511144={'body':_0x39715a[_0x03a6('0x26')],'channel':_0x03a6('0x27')};var _0x4c24fc=[];var _0x5e4965=[];var _0x2139bb={};return db[_0x03a6('0x28')][_0x03a6('0x29')]()[_0x03a6('0x11')](function(_0x539811){if(!_0x539811){throw new db['Sequelize'][(_0x03a6('0x2a'))]('no\x20available\x20attributes');}_0x4c24fc=_['difference'](_[_0x03a6('0x2b')](_0x539811),[_0x03a6('0x2c'),'updatedAt']);_0x5e4965=_[_0x03a6('0x2d')](_[_0x03a6('0x2b')](_0x539811),[_0x03a6('0x2c'),_0x03a6('0x2e'),_0x03a6('0x2f'),_0x03a6('0x30')]);if(_0x39715a[_0x03a6('0x26')]['id']){delete _0x39715a['body']['id'];}if(_[_0x03a6('0x31')](_0x39715a['body'][_0x03a6('0x32')])){throw new db[(_0x03a6('0x33'))][(_0x03a6('0x2a'))](_0x03a6('0x34'));}if(_[_0x03a6('0x31')](_0x39715a[_0x03a6('0x26')][_0x03a6('0x26')])||_0x39715a[_0x03a6('0x26')][_0x03a6('0x26')]===''){throw new db[(_0x03a6('0x33'))][(_0x03a6('0x2a'))](_0x03a6('0x35'));}if(_[_0x03a6('0x31')](_0x39715a['body'][_0x03a6('0x36')])){throw new db[(_0x03a6('0x33'))][(_0x03a6('0x2a'))](_0x03a6('0x37')+_0x5e4965);}if(!_[_0x03a6('0x38')](_0x5e4965,_0x39715a[_0x03a6('0x26')][_0x03a6('0x36')])){throw new db[(_0x03a6('0x33'))][(_0x03a6('0x2a'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x5e4965);}_0x2139bb[_0x39715a[_0x03a6('0x26')][_0x03a6('0x36')]]=_0x39715a[_0x03a6('0x26')][_0x03a6('0x32')];})['then'](function(){return db[_0x03a6('0x1b')]['find']({'where':{'id':_0x39715a[_0x03a6('0x39')]['id']},'include':[{'model':db[_0x03a6('0x3a')],'as':_0x03a6('0x3b'),'include':[{'model':db[_0x03a6('0x28')],'as':'Contacts','where':_0x2139bb,'limit':0x1,'order':[[_0x03a6('0x2e'),_0x03a6('0x3c')]]}]},{'model':db[_0x03a6('0x3d')],'as':_0x03a6('0x3e')}]});})[_0x03a6('0x11')](function(_0x24c2ac){if(_0x24c2ac&&_0x24c2ac[_0x03a6('0x3b')]){var _0x2bf478=_0x24c2ac['get']({'plain':!![]});_0x511144['account']=_0x2bf478;_0x511144[_0x03a6('0x3f')]=_0x2bf478[_0x03a6('0x3e')];_0x511144['list']=_0x2bf478[_0x03a6('0x3b')];_0x511144['applications']=_[_0x03a6('0x40')](_0x511144['applications'],[_0x03a6('0x41')],[_0x03a6('0x42')]);if(_0x511144[_0x03a6('0x39')][_0x03a6('0x3e')]){delete _0x511144[_0x03a6('0x39')][_0x03a6('0x3e')];}if(_0x511144[_0x03a6('0x39')][_0x03a6('0x3b')]&&_0x511144['account']['List'][_0x03a6('0x43')][_0x03a6('0x44')]){return _0x511144['account'][_0x03a6('0x3b')][_0x03a6('0x43')][0x0];}var _0x356801=_[_0x03a6('0xc')](_0x39715a[_0x03a6('0x26')],{'firstName':_0x39715a[_0x03a6('0x26')][_0x03a6('0x32')],'ListId':_0x2bf478[_0x03a6('0x30')]});_0x356801[_0x39715a[_0x03a6('0x26')][_0x03a6('0x36')]]=_0x39715a[_0x03a6('0x26')][_0x03a6('0x32')];return db[_0x03a6('0x28')][_0x03a6('0x45')](_0x356801,{'fields':_0x4c24fc,'raw':!![]});}})[_0x03a6('0x11')](function(_0xcbf9cc){_0x511144['contact']=_0xcbf9cc;if(_0xcbf9cc){var _0xb69bc7={'ContactId':_0xcbf9cc['id'],'FaxAccountId':_0x39715a[_0x03a6('0x39')]['id'],'fax':_0xcbf9cc[_0x03a6('0x27')]};return db['FaxInteraction']['find']({'where':{'ContactId':_0xcbf9cc['id'],'closed':![],'FaxAccountId':_0x39715a[_0x03a6('0x39')]['id']}})[_0x03a6('0x11')](function(_0x8e7b2){if(_0x8e7b2){return[_0x8e7b2,![]];}return db[_0x03a6('0x46')]['create'](_0xb69bc7)[_0x03a6('0x11')](function(_0x411a12){return[_0x411a12,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x03a6('0x47')](function(_0x3db690,_0xba1065){var _0x50ed36=_0x3db690[_0x03a6('0x48')]({'plain':!![]});if(_0xba1065){if(_0x511144[_0x03a6('0x39')]['autoclose']){_0x511144[_0x03a6('0x3f')][_0x03a6('0x49')]({'id':0x0,'priority':_0x511144[_0x03a6('0x3f')]['length']+0x1,'app':_0x03a6('0x4a'),'appdata':'unmanaged','interval':'*,*,*,*'});}_0x50ed36[_0x03a6('0x4b')]=!![];}else{_0x50ed36['created']=![];}_0x511144[_0x03a6('0x4c')]=_0x50ed36;return db[_0x03a6('0x4d')][_0x03a6('0x45')]({'body':_0x39715a['body'][_0x03a6('0x26')],'FaxAccountId':_0x39715a[_0x03a6('0x39')]['id'],'FaxInteractionId':_0x3db690['id'],'direction':'in','ContactId':_0x3db690[_0x03a6('0x4e')],'AttachmentId':_0x39715a[_0x03a6('0x26')]['AttachmentId']});})[_0x03a6('0x11')](function(_0x4bbdc9){_0x511144[_0x03a6('0x18')]=_0x4bbdc9;if(_0x511144[_0x03a6('0x4c')][_0x03a6('0x4f')]){return db[_0x03a6('0x50')]['find']({'attributes':['id',_0x03a6('0x51')],'where':{'id':_0x511144[_0x03a6('0x4c')][_0x03a6('0x4f')]}})[_0x03a6('0x11')](function(_0x81e8ad){if(_0x81e8ad){_0x511144[_0x03a6('0x3f')][_0x03a6('0x52')]({'id':0x0,'priority':0x0,'app':_0x03a6('0x53'),'appdata':_0x81e8ad[_0x03a6('0x51')]+','+(_0x511144[_0x03a6('0x39')]['waitForTheAssignedAgent']||0xa),'interval':_0x03a6('0x54')});}return respondWithRpcPromise(_0x03a6('0x55'),_0x03a6('0x56'),_0x511144);});}return respondWithRpcPromise(_0x03a6('0x55'),_0x03a6('0x56'),_0x511144);})[_0x03a6('0x11')](function(_0x2bb3bd){_0x447c67(_0x2bb3bd);})[_0x03a6('0x19')](function(_0x36d049){_0x45eeb7(_0x26b1da[_0x03a6('0x16')](0x1f4,_0x36d049[_0x03a6('0x18')]));});});};
\ No newline at end of file
+var _0xcce9=['mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','account','CmList','List','Contacts','updatedAt','DESC','Applications','get','applications','list','orderBy','priority','asc','length','create','contact','FaxInteraction','Contact\x20not\x20found','spread','push','close','unmanaged','*,*,*,*','created','interaction','FaxMessage','ContactId','User','name','unshift','agent','waitForTheAssignedAgent','Start','startRouting','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','defaults','localhost','socket.io-emitter','./faxAccount.socket','then','info','debug','FaxAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','FaxAccount,\x20%s,\x20%s','message','result','FaxAccount','findAll','options','raw','where','attributes','limit','map','model','include','GetFaxAccount','body','fax','CmContact','describe','Sequelize','ValidationError','no\x20available\x20attributes','createdAt','difference','CompanyId','ListId','from','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes'];(function(_0x1fe5b0,_0x1de371){var _0x485ea8=function(_0x3b7d07){while(--_0x3b7d07){_0x1fe5b0['push'](_0x1fe5b0['shift']());}};_0x485ea8(++_0x1de371);}(_0xcce9,0x1ec));var _0x9cce=function(_0x2ec0de,_0x4d7304){_0x2ec0de=_0x2ec0de-0x0;var _0x21535d=_0xcce9[_0x2ec0de];return _0x21535d;};'use strict';var _=require(_0x9cce('0x0'));var util=require('util');var moment=require(_0x9cce('0x1'));var BPromise=require(_0x9cce('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9cce('0x3'));var db=require(_0x9cce('0x4'))['db'];var utils=require(_0x9cce('0x5'));var logger=require('../../config/logger')(_0x9cce('0x6'));var config=require(_0x9cce('0x7'));var jayson=require(_0x9cce('0x8'));var client=jayson[_0x9cce('0x9')][_0x9cce('0xa')]({'port':0x232c});config['redis']=_[_0x9cce('0xb')](config['redis'],{'host':_0x9cce('0xc'),'port':0x18eb});var socket=require(_0x9cce('0xd'))(new Redis(config['redis']));require(_0x9cce('0xe'))['register'](socket);function respondWithRpcPromise(_0x4115a2,_0x8aa9f7,_0x58cb64){return new BPromise(function(_0x5b8677,_0x4b3f54){return client['request'](_0x4115a2,_0x58cb64)[_0x9cce('0xf')](function(_0x15c045){logger[_0x9cce('0x10')]('FaxAccount,\x20%s,\x20%s',_0x8aa9f7,'request\x20sent');logger[_0x9cce('0x11')](_0x9cce('0x12'),_0x8aa9f7,_0x9cce('0x13'),JSON[_0x9cce('0x14')](_0x15c045));if(_0x15c045[_0x9cce('0x15')]){if(_0x15c045['error']['code']===0x1f4){logger[_0x9cce('0x15')](_0x9cce('0x16'),_0x8aa9f7,_0x15c045['error']['message']);return _0x4b3f54(_0x15c045[_0x9cce('0x15')]['message']);}logger[_0x9cce('0x15')](_0x9cce('0x16'),_0x8aa9f7,_0x15c045[_0x9cce('0x15')][_0x9cce('0x17')]);return _0x5b8677(_0x15c045[_0x9cce('0x15')][_0x9cce('0x17')]);}else{logger['info'](_0x9cce('0x16'),_0x8aa9f7,_0x9cce('0x13'));_0x5b8677(_0x15c045[_0x9cce('0x18')][_0x9cce('0x17')]);}})['catch'](function(_0x8eb2e){logger[_0x9cce('0x15')]('FaxAccount,\x20%s,\x20%s',_0x8aa9f7,_0x8eb2e);_0x4b3f54(_0x8eb2e);});});}exports['GetFaxAccount']=function(_0x449b48){var _0x28a411=this;return new Promise(function(_0xae8446,_0x1231ca){return db[_0x9cce('0x19')][_0x9cce('0x1a')]({'raw':_0x449b48[_0x9cce('0x1b')]?_0x449b48[_0x9cce('0x1b')][_0x9cce('0x1c')]===undefined?!![]:![]:!![],'where':_0x449b48['options']?_0x449b48['options'][_0x9cce('0x1d')]||null:null,'attributes':_0x449b48[_0x9cce('0x1b')]?_0x449b48['options'][_0x9cce('0x1e')]||null:null,'limit':_0x449b48[_0x9cce('0x1b')]?_0x449b48[_0x9cce('0x1b')][_0x9cce('0x1f')]||null:null,'include':_0x449b48[_0x9cce('0x1b')]?_0x449b48[_0x9cce('0x1b')]['include']?_[_0x9cce('0x20')](_0x449b48['options']['include'],function(_0x18bf97){return{'model':db[_0x18bf97[_0x9cce('0x21')]],'as':_0x18bf97['as'],'attributes':_0x18bf97[_0x9cce('0x1e')],'include':_0x18bf97[_0x9cce('0x22')]?_[_0x9cce('0x20')](_0x18bf97[_0x9cce('0x22')],function(_0x3da44c){return{'model':db[_0x3da44c[_0x9cce('0x21')]],'as':_0x3da44c['as'],'attributes':_0x3da44c[_0x9cce('0x1e')],'include':_0x3da44c[_0x9cce('0x22')]?_[_0x9cce('0x20')](_0x3da44c['include'],function(_0x42f8e6){return{'model':db[_0x42f8e6[_0x9cce('0x21')]],'as':_0x42f8e6['as'],'attributes':_0x42f8e6['attributes']};}):[]};}):[]};}):[]:[]})[_0x9cce('0xf')](function(_0x508aec){logger[_0x9cce('0x10')]('GetFaxAccount',_0x449b48);logger[_0x9cce('0x11')]('GetFaxAccount',_0x449b48,JSON[_0x9cce('0x14')](_0x508aec));_0xae8446(_0x508aec);})['catch'](function(_0x225a3e){logger[_0x9cce('0x15')](_0x9cce('0x23'),_0x225a3e[_0x9cce('0x17')],_0x449b48);_0x1231ca(_0x28a411[_0x9cce('0x15')](0x1f4,_0x225a3e[_0x9cce('0x17')]));});});};exports['NotifyFaxAccount']=function(_0x1f379c,_0xd398f9,_0x46cb94){var _0x16d4c2=this;return new Promise(function(_0x50cdc7,_0x950ca3){var _0x306e29={'body':_0x1f379c[_0x9cce('0x24')],'channel':_0x9cce('0x25')};var _0x1cb1dd=[];var _0xa0b3b=[];var _0x5aeaf6={};return db[_0x9cce('0x26')][_0x9cce('0x27')]()[_0x9cce('0xf')](function(_0x5209f3){if(!_0x5209f3){throw new db[(_0x9cce('0x28'))][(_0x9cce('0x29'))](_0x9cce('0x2a'));}_0x1cb1dd=_['difference'](_['keys'](_0x5209f3),[_0x9cce('0x2b'),'updatedAt']);_0xa0b3b=_[_0x9cce('0x2c')](_['keys'](_0x5209f3),[_0x9cce('0x2b'),'updatedAt',_0x9cce('0x2d'),_0x9cce('0x2e')]);if(_0x1f379c[_0x9cce('0x24')]['id']){delete _0x1f379c[_0x9cce('0x24')]['id'];}if(_['isNil'](_0x1f379c[_0x9cce('0x24')][_0x9cce('0x2f')])){throw new db[(_0x9cce('0x28'))][(_0x9cce('0x29'))](_0x9cce('0x30'));}if(_[_0x9cce('0x31')](_0x1f379c[_0x9cce('0x24')][_0x9cce('0x24')])||_0x1f379c[_0x9cce('0x24')][_0x9cce('0x24')]===''){throw new db[(_0x9cce('0x28'))]['ValidationError'](_0x9cce('0x32'));}if(_[_0x9cce('0x31')](_0x1f379c['body'][_0x9cce('0x33')])){throw new db[(_0x9cce('0x28'))][(_0x9cce('0x29'))](_0x9cce('0x34')+_0xa0b3b);}if(!_[_0x9cce('0x35')](_0xa0b3b,_0x1f379c[_0x9cce('0x24')]['mapKey'])){throw new db[(_0x9cce('0x28'))]['ValidationError'](_0x9cce('0x36')+_0xa0b3b);}_0x5aeaf6[_0x1f379c[_0x9cce('0x24')]['mapKey']]=_0x1f379c['body'][_0x9cce('0x2f')];})['then'](function(){return db[_0x9cce('0x19')][_0x9cce('0x37')]({'where':{'id':_0x1f379c[_0x9cce('0x38')]['id']},'include':[{'model':db[_0x9cce('0x39')],'as':_0x9cce('0x3a'),'include':[{'model':db['CmContact'],'as':_0x9cce('0x3b'),'where':_0x5aeaf6,'limit':0x1,'order':[[_0x9cce('0x3c'),_0x9cce('0x3d')]]}]},{'model':db['FaxApplication'],'as':_0x9cce('0x3e')}]});})['then'](function(_0x591edc){if(_0x591edc&&_0x591edc[_0x9cce('0x3a')]){var _0x56d5fd=_0x591edc[_0x9cce('0x3f')]({'plain':!![]});_0x306e29['account']=_0x56d5fd;_0x306e29[_0x9cce('0x40')]=_0x56d5fd[_0x9cce('0x3e')];_0x306e29[_0x9cce('0x41')]=_0x56d5fd[_0x9cce('0x3a')];_0x306e29['applications']=_[_0x9cce('0x42')](_0x306e29['applications'],[_0x9cce('0x43')],[_0x9cce('0x44')]);if(_0x306e29[_0x9cce('0x38')][_0x9cce('0x3e')]){delete _0x306e29[_0x9cce('0x38')]['Applications'];}if(_0x306e29[_0x9cce('0x38')]['List']&&_0x306e29[_0x9cce('0x38')]['List'][_0x9cce('0x3b')][_0x9cce('0x45')]){return _0x306e29['account'][_0x9cce('0x3a')][_0x9cce('0x3b')][0x0];}var _0x40f3d1=_[_0x9cce('0xb')](_0x1f379c[_0x9cce('0x24')],{'firstName':_0x1f379c[_0x9cce('0x24')][_0x9cce('0x2f')],'ListId':_0x56d5fd[_0x9cce('0x2e')]});_0x40f3d1[_0x1f379c[_0x9cce('0x24')][_0x9cce('0x33')]]=_0x1f379c[_0x9cce('0x24')][_0x9cce('0x2f')];return db[_0x9cce('0x26')][_0x9cce('0x46')](_0x40f3d1,{'fields':_0x1cb1dd,'raw':!![]});}})['then'](function(_0x2089d6){_0x306e29[_0x9cce('0x47')]=_0x2089d6;if(_0x2089d6){var _0x1f8a8f={'ContactId':_0x2089d6['id'],'FaxAccountId':_0x1f379c['account']['id'],'fax':_0x2089d6['fax']};return db[_0x9cce('0x48')][_0x9cce('0x37')]({'where':{'ContactId':_0x2089d6['id'],'closed':![],'FaxAccountId':_0x1f379c[_0x9cce('0x38')]['id']}})[_0x9cce('0xf')](function(_0x4ea9d6){if(_0x4ea9d6){return[_0x4ea9d6,![]];}return db['FaxInteraction'][_0x9cce('0x46')](_0x1f8a8f)[_0x9cce('0xf')](function(_0x51b5e3){return[_0x51b5e3,!![]];});});}else{throw new Error(_0x9cce('0x49'));}})[_0x9cce('0x4a')](function(_0x81cf1e,_0x4416ee){var _0x501e9b=_0x81cf1e[_0x9cce('0x3f')]({'plain':!![]});if(_0x4416ee){if(_0x306e29['account']['autoclose']){_0x306e29[_0x9cce('0x40')][_0x9cce('0x4b')]({'id':0x0,'priority':_0x306e29[_0x9cce('0x40')][_0x9cce('0x45')]+0x1,'app':_0x9cce('0x4c'),'appdata':_0x9cce('0x4d'),'interval':_0x9cce('0x4e')});}_0x501e9b['created']=!![];}else{_0x501e9b[_0x9cce('0x4f')]=![];}_0x306e29[_0x9cce('0x50')]=_0x501e9b;return db[_0x9cce('0x51')][_0x9cce('0x46')]({'body':_0x1f379c[_0x9cce('0x24')][_0x9cce('0x24')],'FaxAccountId':_0x1f379c[_0x9cce('0x38')]['id'],'FaxInteractionId':_0x81cf1e['id'],'direction':'in','ContactId':_0x81cf1e[_0x9cce('0x52')],'AttachmentId':_0x1f379c[_0x9cce('0x24')]['AttachmentId']});})[_0x9cce('0xf')](function(_0x9e6f8c){_0x306e29['message']=_0x9e6f8c;if(_0x306e29['interaction']['UserId']){return db[_0x9cce('0x53')][_0x9cce('0x37')]({'attributes':['id',_0x9cce('0x54')],'where':{'id':_0x306e29[_0x9cce('0x50')]['UserId']}})[_0x9cce('0xf')](function(_0x2f8919){if(_0x2f8919){_0x306e29[_0x9cce('0x40')][_0x9cce('0x55')]({'id':0x0,'priority':0x0,'app':_0x9cce('0x56'),'appdata':_0x2f8919['name']+','+(_0x306e29['account'][_0x9cce('0x57')]||0xa),'interval':_0x9cce('0x4e')});}return respondWithRpcPromise('Start','startRouting',_0x306e29);});}return respondWithRpcPromise(_0x9cce('0x58'),_0x9cce('0x59'),_0x306e29);})['then'](function(_0x238a47){_0x50cdc7(_0x238a47);})[_0x9cce('0x5a')](function(_0x4b3d7b){_0x950ca3(_0x16d4c2[_0x9cce('0x15')](0x1f4,_0x4b3d7b[_0x9cce('0x17')]));});});};
\ No newline at end of file
index 3748ed5..686e618 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46e5=['removeListener','./faxAccount.events','remove','update','emit'];(function(_0x15bd8c,_0x930227){var _0x24e162=function(_0x5e9451){while(--_0x5e9451){_0x15bd8c['push'](_0x15bd8c['shift']());}};_0x24e162(++_0x930227);}(_0x46e5,0x65));var _0x546e=function(_0x77b730,_0x8fd044){_0x77b730=_0x77b730-0x0;var _0x4e7ac7=_0x46e5[_0x77b730];return _0x4e7ac7;};'use strict';var FaxAccountEvents=require(_0x546e('0x0'));var events=['save',_0x546e('0x1'),_0x546e('0x2')];function createListener(_0x493ba7,_0x50e2c9){return function(_0x5106be){_0x50e2c9[_0x546e('0x3')](_0x493ba7,_0x5106be);};}function removeListener(_0x5103f6,_0x172744){return function(){FaxAccountEvents[_0x546e('0x4')](_0x5103f6,_0x172744);};}exports['register']=function(_0x1de90f){for(var _0x3071ca=0x0,_0x4aae31=events['length'];_0x3071ca<_0x4aae31;_0x3071ca++){var _0x35e5cc=events[_0x3071ca];var _0x21aef8=createListener('faxAccount:'+_0x35e5cc,_0x1de90f);FaxAccountEvents['on'](_0x35e5cc,_0x21aef8);}};
\ No newline at end of file
+var _0xa9e6=['faxAccount:','emit','register'];(function(_0x529053,_0x557824){var _0x169a1b=function(_0x4f6bac){while(--_0x4f6bac){_0x529053['push'](_0x529053['shift']());}};_0x169a1b(++_0x557824);}(_0xa9e6,0xac));var _0x6a9e=function(_0x174ff6,_0x193dca){_0x174ff6=_0x174ff6-0x0;var _0xae7bc6=_0xa9e6[_0x174ff6];return _0xae7bc6;};'use strict';var FaxAccountEvents=require('./faxAccount.events');var events=['save','remove','update'];function createListener(_0x533e56,_0xda0513){return function(_0x55327a){_0xda0513[_0x6a9e('0x0')](_0x533e56,_0x55327a);};}function removeListener(_0x3d71f4,_0x3f2cf5){return function(){FaxAccountEvents['removeListener'](_0x3d71f4,_0x3f2cf5);};}exports[_0x6a9e('0x1')]=function(_0x2df661){for(var _0x215f58=0x0,_0x18dbb9=events['length'];_0x215f58<_0x18dbb9;_0x215f58++){var _0x2f7ca6=events[_0x215f58];var _0x48f59c=createListener(_0x6a9e('0x2')+_0x2f7ca6,_0x2df661);FaxAccountEvents['on'](_0x2f7ca6,_0x48f59c);}};
\ No newline at end of file
index 96f4205..fa1b5d3 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(_0x448116,_0xe6e7ef){var _0x22eb0d=function(_0x5e1c22){while(--_0x5e1c22){_0x448116['push'](_0x448116['shift']());}};_0x22eb0d(++_0xe6e7ef);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xa9e0[_0x47b58b];return _0x46bebe;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));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(_0x4953dc,_0x383cde){var _0x4caa29=function(_0x460f00){while(--_0x460f00){_0x4953dc['push'](_0x4953dc['shift']());}};_0x4caa29(++_0x383cde);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47e7cb,_0x4c1b8d){_0x47e7cb=_0x47e7cb-0x0;var _0x2a8874=_0xa9e0[_0x47e7cb];return _0x2a8874;};'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 908f12a..4690ec7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x540c=['*,*,*,*','sequelize','exports','INTEGER','noop','STRING'];(function(_0x4f5fdd,_0x5bcbb7){var _0x30e008=function(_0x19e725){while(--_0x19e725){_0x4f5fdd['push'](_0x4f5fdd['shift']());}};_0x30e008(++_0x5bcbb7);}(_0x540c,0x73));var _0xc540=function(_0xa46c0,_0x74e5d3){_0xa46c0=_0xa46c0-0x0;var _0x9e6bbe=_0x540c[_0xa46c0];return _0x9e6bbe;};'use strict';var Sequelize=require(_0xc540('0x0'));module[_0xc540('0x1')]={'priority':{'type':Sequelize[_0xc540('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xc540('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0xc540('0x4')]},'interval':{'type':Sequelize[_0xc540('0x4')],'defaultValue':_0xc540('0x5')}};
\ No newline at end of file
+var _0x2f76=['sequelize','exports','INTEGER','STRING','*,*,*,*'];(function(_0x2259cc,_0x56dcf1){var _0x43f121=function(_0x1a5fbc){while(--_0x1a5fbc){_0x2259cc['push'](_0x2259cc['shift']());}};_0x43f121(++_0x56dcf1);}(_0x2f76,0x18b));var _0x62f7=function(_0x9db63a,_0x61fa67){_0x9db63a=_0x9db63a-0x0;var _0x436cf9=_0x2f76[_0x9db63a];return _0x436cf9;};'use strict';var Sequelize=require(_0x62f7('0x0'));module[_0x62f7('0x1')]={'priority':{'type':Sequelize[_0x62f7('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x62f7('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x62f7('0x3')]},'interval':{'type':Sequelize[_0x62f7('0x3')],'defaultValue':_0x62f7('0x4')}};
\ No newline at end of file
index e45fbfa..b1514f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8247=['key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','type','VIRTUAL','merge','includeAll','include','findAll','rows','show','params','options','find','catch','create','body','eml-format','rimraf','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','update','then','destroy','error','stack','name','send','index','map','FaxApplication','rawAttributes','fieldName'];(function(_0x2c9ff7,_0x1640f6){var _0x9295dc=function(_0x1f9f9e){while(--_0x1f9f9e){_0x2c9ff7['push'](_0x2c9ff7['shift']());}};_0x9295dc(++_0x1640f6);}(_0x8247,0x14e));var _0x7824=function(_0x37a7c6,_0x3a84b6){_0x37a7c6=_0x37a7c6-0x0;var _0x539905=_0x8247[_0x37a7c6];return _0x539905;};'use strict';var emlformat=require(_0x7824('0x0'));var rimraf=require(_0x7824('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x7824('0x2'));var BPromise=require(_0x7824('0x3'));var Mustache=require(_0x7824('0x4'));var util=require(_0x7824('0x5'));var path=require(_0x7824('0x6'));var sox=require(_0x7824('0x7'));var csv=require(_0x7824('0x8'));var ejs=require(_0x7824('0x9'));var fs=require('fs');var fs_extra=require(_0x7824('0xa'));var _=require('lodash');var squel=require(_0x7824('0xb'));var crypto=require(_0x7824('0xc'));var jsforce=require(_0x7824('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x7824('0x8'));var querystring=require(_0x7824('0xe'));var Papa=require('papaparse');var Redis=require(_0x7824('0xf'));var authService=require(_0x7824('0x10'));var qs=require(_0x7824('0x11'));var as=require(_0x7824('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7824('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x7824('0x14'));var licenseUtil=require(_0x7824('0x15'));var db=require(_0x7824('0x16'))['db'];function respondWithStatusCode(_0x65456f,_0x7cd06a){_0x7cd06a=_0x7cd06a||0xcc;return function(_0x4522c1){if(_0x4522c1){return _0x65456f[_0x7824('0x17')](_0x7cd06a);}return _0x65456f[_0x7824('0x18')](_0x7cd06a)[_0x7824('0x19')]();};}function respondWithResult(_0x3d6133,_0x83b6d1){_0x83b6d1=_0x83b6d1||0xc8;return function(_0x1970ea){if(_0x1970ea){return _0x3d6133['status'](_0x83b6d1)[_0x7824('0x1a')](_0x1970ea);}};}function respondWithFilteredResult(_0x2d61fa,_0x41899a){return function(_0x17ee27){if(_0x17ee27){var _0x4803ea=typeof _0x41899a[_0x7824('0x1b')]===_0x7824('0x1c')&&typeof _0x41899a[_0x7824('0x1d')]===_0x7824('0x1c');var _0x4d0fac=_0x17ee27[_0x7824('0x1e')];var _0x473ef5=_0x4803ea?0x0:_0x41899a[_0x7824('0x1b')];var _0x1093ff=_0x4803ea?_0x17ee27['count']:_0x41899a[_0x7824('0x1b')]+_0x41899a[_0x7824('0x1d')];var _0x4ed783;if(_0x1093ff>=_0x4d0fac){_0x1093ff=_0x4d0fac;_0x4ed783=0xc8;}else{_0x4ed783=0xce;}_0x2d61fa[_0x7824('0x18')](_0x4ed783);return _0x2d61fa[_0x7824('0x1f')]('Content-Range',_0x473ef5+'-'+_0x1093ff+'/'+_0x4d0fac)[_0x7824('0x1a')](_0x17ee27);}return null;};}function patchUpdates(_0x2e12f0){return function(_0x556362){try{jsonpatch[_0x7824('0x20')](_0x556362,_0x2e12f0,!![]);}catch(_0xe51e90){return BPromise['reject'](_0xe51e90);}return _0x556362[_0x7824('0x21')]();};}function saveUpdates(_0x3d865a,_0x2baece){return function(_0x877715){if(_0x877715){return _0x877715[_0x7824('0x22')](_0x3d865a)[_0x7824('0x23')](function(_0x3a5326){return _0x3a5326;});}return null;};}function removeEntity(_0x1b93c4,_0x1a75a8){return function(_0x217eed){if(_0x217eed){return _0x217eed[_0x7824('0x24')]()['then'](function(){_0x1b93c4[_0x7824('0x18')](0xcc)[_0x7824('0x19')]();});}};}function handleEntityNotFound(_0x12d417,_0x34f829){return function(_0x52e1ab){if(!_0x52e1ab){_0x12d417[_0x7824('0x17')](0x194);}return _0x52e1ab;};}function handleError(_0x28f5c5,_0x21aba4){_0x21aba4=_0x21aba4||0x1f4;return function(_0x4fe074){logger[_0x7824('0x25')](_0x4fe074[_0x7824('0x26')]);if(_0x4fe074[_0x7824('0x27')]){delete _0x4fe074[_0x7824('0x27')];}_0x28f5c5[_0x7824('0x18')](_0x21aba4)[_0x7824('0x28')](_0x4fe074);};}exports[_0x7824('0x29')]=function(_0x1db4ee,_0x179ef3){var _0x56005b={},_0x5f01e7={},_0x165346={'count':0x0,'rows':[]};var _0x5d542c=_[_0x7824('0x2a')](db[_0x7824('0x2b')][_0x7824('0x2c')],function(_0x22a587){return{'name':_0x22a587[_0x7824('0x2d')],'type':_0x22a587['type'][_0x7824('0x2e')]};});_0x5f01e7[_0x7824('0x2f')]=_['map'](_0x5d542c,_0x7824('0x27'));_0x5f01e7[_0x7824('0x30')]=_[_0x7824('0x31')](_0x1db4ee['query']);_0x5f01e7['filters']=_['intersection'](_0x5f01e7[_0x7824('0x2f')],_0x5f01e7[_0x7824('0x30')]);_0x56005b[_0x7824('0x32')]=_[_0x7824('0x33')](_0x5f01e7[_0x7824('0x2f')],qs['fields'](_0x1db4ee[_0x7824('0x30')][_0x7824('0x34')]));_0x56005b[_0x7824('0x32')]=_0x56005b[_0x7824('0x32')][_0x7824('0x35')]?_0x56005b[_0x7824('0x32')]:_0x5f01e7[_0x7824('0x2f')];if(!_0x1db4ee[_0x7824('0x30')][_0x7824('0x36')](_0x7824('0x37'))){_0x56005b[_0x7824('0x1d')]=qs[_0x7824('0x1d')](_0x1db4ee['query']['limit']);_0x56005b[_0x7824('0x1b')]=qs['offset'](_0x1db4ee[_0x7824('0x30')][_0x7824('0x1b')]);}_0x56005b[_0x7824('0x38')]=qs['sort'](_0x1db4ee[_0x7824('0x30')][_0x7824('0x39')]);_0x56005b['where']=qs[_0x7824('0x3a')](_[_0x7824('0x3b')](_0x1db4ee['query'],_0x5f01e7[_0x7824('0x3a')]),_0x5d542c);if(_0x1db4ee['query'][_0x7824('0x3c')]){_0x56005b['where']=_['merge'](_0x56005b[_0x7824('0x3d')],{'$or':_[_0x7824('0x2a')](_0x5d542c,function(_0xd59e7d){if(_0xd59e7d[_0x7824('0x3e')]!==_0x7824('0x3f')){var _0x16fe08={};_0x16fe08[_0xd59e7d[_0x7824('0x27')]]={'$like':'%'+_0x1db4ee[_0x7824('0x30')][_0x7824('0x3c')]+'%'};return _0x16fe08;}})});}_0x56005b=_[_0x7824('0x40')]({},_0x56005b,_0x1db4ee['options']);var _0x2102c9={'where':_0x56005b['where']};return db[_0x7824('0x2b')][_0x7824('0x1e')](_0x2102c9)[_0x7824('0x23')](function(_0xa20bcd){_0x165346[_0x7824('0x1e')]=_0xa20bcd;if(_0x1db4ee['query'][_0x7824('0x41')]){_0x56005b[_0x7824('0x42')]=[{'all':!![]}];}return db[_0x7824('0x2b')][_0x7824('0x43')](_0x56005b);})[_0x7824('0x23')](function(_0x3de99e){_0x165346[_0x7824('0x44')]=_0x3de99e;return _0x165346;})[_0x7824('0x23')](respondWithFilteredResult(_0x179ef3,_0x56005b))['catch'](handleError(_0x179ef3,null));};exports[_0x7824('0x45')]=function(_0x5192b3,_0x7df3fc){var _0x53d8f4={'raw':!![],'where':{'id':_0x5192b3[_0x7824('0x46')]['id']}},_0xe75d9a={};_0xe75d9a[_0x7824('0x2f')]=_[_0x7824('0x31')](db[_0x7824('0x2b')][_0x7824('0x2c')]);_0xe75d9a[_0x7824('0x30')]=_[_0x7824('0x31')](_0x5192b3[_0x7824('0x30')]);_0xe75d9a['filters']=_[_0x7824('0x33')](_0xe75d9a['model'],_0xe75d9a[_0x7824('0x30')]);_0x53d8f4[_0x7824('0x32')]=_[_0x7824('0x33')](_0xe75d9a[_0x7824('0x2f')],qs[_0x7824('0x34')](_0x5192b3[_0x7824('0x30')][_0x7824('0x34')]));_0x53d8f4[_0x7824('0x32')]=_0x53d8f4['attributes'][_0x7824('0x35')]?_0x53d8f4[_0x7824('0x32')]:_0xe75d9a[_0x7824('0x2f')];if(_0x5192b3[_0x7824('0x30')][_0x7824('0x41')]){_0x53d8f4[_0x7824('0x42')]=[{'all':!![]}];}_0x53d8f4=_['merge']({},_0x53d8f4,_0x5192b3[_0x7824('0x47')]);return db[_0x7824('0x2b')][_0x7824('0x48')](_0x53d8f4)[_0x7824('0x23')](handleEntityNotFound(_0x7df3fc,null))[_0x7824('0x23')](respondWithResult(_0x7df3fc,null))[_0x7824('0x49')](handleError(_0x7df3fc,null));};exports[_0x7824('0x4a')]=function(_0x5f1301,_0x5ab878){return db[_0x7824('0x2b')]['create'](_0x5f1301['body'],{})[_0x7824('0x23')](respondWithResult(_0x5ab878,0xc9))['catch'](handleError(_0x5ab878,null));};exports['update']=function(_0x34ec49,_0x4c6bcb){if(_0x34ec49[_0x7824('0x4b')]['id']){delete _0x34ec49[_0x7824('0x4b')]['id'];}return db[_0x7824('0x2b')][_0x7824('0x48')]({'where':{'id':_0x34ec49['params']['id']}})[_0x7824('0x23')](handleEntityNotFound(_0x4c6bcb,null))[_0x7824('0x23')](saveUpdates(_0x34ec49[_0x7824('0x4b')],null))['then'](respondWithResult(_0x4c6bcb,null))[_0x7824('0x49')](handleError(_0x4c6bcb,null));};exports[_0x7824('0x24')]=function(_0x1ca218,_0x20e617){return db[_0x7824('0x2b')][_0x7824('0x48')]({'where':{'id':_0x1ca218[_0x7824('0x46')]['id']}})['then'](handleEntityNotFound(_0x20e617,null))[_0x7824('0x23')](removeEntity(_0x20e617,null))[_0x7824('0x49')](handleError(_0x20e617,null));};
\ No newline at end of file
+var _0x9389=['FaxApplication','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','order','sort','where','pick','filters','filter','merge','options','include','findAll','rows','catch','show','params','includeAll','create','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','reject','update','then','destroy','error','name','send','index','map'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x9389,0x18f));var _0x9938=function(_0x18cbc1,_0x425afa){_0x18cbc1=_0x18cbc1-0x0;var _0x411185=_0x9389[_0x18cbc1];return _0x411185;};'use strict';var emlformat=require(_0x9938('0x0'));var rimraf=require(_0x9938('0x1'));var zipdir=require(_0x9938('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9938('0x3'));var moment=require(_0x9938('0x4'));var BPromise=require(_0x9938('0x5'));var Mustache=require(_0x9938('0x6'));var util=require(_0x9938('0x7'));var path=require(_0x9938('0x8'));var sox=require(_0x9938('0x9'));var csv=require(_0x9938('0xa'));var ejs=require(_0x9938('0xb'));var fs=require('fs');var fs_extra=require(_0x9938('0xc'));var _=require('lodash');var squel=require(_0x9938('0xd'));var crypto=require('crypto');var jsforce=require(_0x9938('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x9938('0xa'));var querystring=require(_0x9938('0xf'));var Papa=require(_0x9938('0x10'));var Redis=require(_0x9938('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x9938('0x12'));var as=require(_0x9938('0x13'));var hardwareService=require(_0x9938('0x14'));var logger=require(_0x9938('0x15'))(_0x9938('0x16'));var utils=require('../../config/utils');var config=require(_0x9938('0x17'));var licenseUtil=require(_0x9938('0x18'));var db=require(_0x9938('0x19'))['db'];function respondWithStatusCode(_0x2bf4a3,_0x3d5bfa){_0x3d5bfa=_0x3d5bfa||0xcc;return function(_0x445b09){if(_0x445b09){return _0x2bf4a3[_0x9938('0x1a')](_0x3d5bfa);}return _0x2bf4a3[_0x9938('0x1b')](_0x3d5bfa)[_0x9938('0x1c')]();};}function respondWithResult(_0x205ce0,_0x5e7368){_0x5e7368=_0x5e7368||0xc8;return function(_0x42104d){if(_0x42104d){return _0x205ce0[_0x9938('0x1b')](_0x5e7368)[_0x9938('0x1d')](_0x42104d);}};}function respondWithFilteredResult(_0x3c3531,_0x2afe43){return function(_0x5728d9){if(_0x5728d9){var _0xbc8798=typeof _0x2afe43['offset']===_0x9938('0x1e')&&typeof _0x2afe43['limit']==='undefined';var _0x3b967c=_0x5728d9[_0x9938('0x1f')];var _0x3a5f2f=_0xbc8798?0x0:_0x2afe43['offset'];var _0x5a6446=_0xbc8798?_0x5728d9['count']:_0x2afe43[_0x9938('0x20')]+_0x2afe43[_0x9938('0x21')];var _0x3a3aa5;if(_0x5a6446>=_0x3b967c){_0x5a6446=_0x3b967c;_0x3a3aa5=0xc8;}else{_0x3a3aa5=0xce;}_0x3c3531[_0x9938('0x1b')](_0x3a3aa5);return _0x3c3531[_0x9938('0x22')](_0x9938('0x23'),_0x3a5f2f+'-'+_0x5a6446+'/'+_0x3b967c)[_0x9938('0x1d')](_0x5728d9);}return null;};}function patchUpdates(_0x1a3d1a){return function(_0x430fbc){try{jsonpatch['apply'](_0x430fbc,_0x1a3d1a,!![]);}catch(_0x339949){return BPromise[_0x9938('0x24')](_0x339949);}return _0x430fbc['save']();};}function saveUpdates(_0x35eefc,_0x1c8fc6){return function(_0x27db99){if(_0x27db99){return _0x27db99[_0x9938('0x25')](_0x35eefc)[_0x9938('0x26')](function(_0x75bfdc){return _0x75bfdc;});}return null;};}function removeEntity(_0x24d2ef,_0x3ef51f){return function(_0xd4411e){if(_0xd4411e){return _0xd4411e[_0x9938('0x27')]()[_0x9938('0x26')](function(){_0x24d2ef[_0x9938('0x1b')](0xcc)[_0x9938('0x1c')]();});}};}function handleEntityNotFound(_0x24e2ac,_0x46944e){return function(_0x5ab3e6){if(!_0x5ab3e6){_0x24e2ac['sendStatus'](0x194);}return _0x5ab3e6;};}function handleError(_0x222dc9,_0x138c50){_0x138c50=_0x138c50||0x1f4;return function(_0x361ec6){logger[_0x9938('0x28')](_0x361ec6['stack']);if(_0x361ec6[_0x9938('0x29')]){delete _0x361ec6[_0x9938('0x29')];}_0x222dc9[_0x9938('0x1b')](_0x138c50)[_0x9938('0x2a')](_0x361ec6);};}exports[_0x9938('0x2b')]=function(_0x598d16,_0x2e2307){var _0x1dba6a={},_0x2ac4eb={},_0x5b9bdd={'count':0x0,'rows':[]};var _0x2c94ad=_[_0x9938('0x2c')](db[_0x9938('0x2d')][_0x9938('0x2e')],function(_0x2fe789){return{'name':_0x2fe789[_0x9938('0x2f')],'type':_0x2fe789[_0x9938('0x30')][_0x9938('0x31')]};});_0x2ac4eb[_0x9938('0x32')]=_[_0x9938('0x2c')](_0x2c94ad,_0x9938('0x29'));_0x2ac4eb[_0x9938('0x33')]=_[_0x9938('0x34')](_0x598d16['query']);_0x2ac4eb['filters']=_[_0x9938('0x35')](_0x2ac4eb['model'],_0x2ac4eb[_0x9938('0x33')]);_0x1dba6a[_0x9938('0x36')]=_[_0x9938('0x35')](_0x2ac4eb[_0x9938('0x32')],qs[_0x9938('0x37')](_0x598d16[_0x9938('0x33')][_0x9938('0x37')]));_0x1dba6a['attributes']=_0x1dba6a[_0x9938('0x36')][_0x9938('0x38')]?_0x1dba6a[_0x9938('0x36')]:_0x2ac4eb[_0x9938('0x32')];if(!_0x598d16[_0x9938('0x33')]['hasOwnProperty']('nolimit')){_0x1dba6a['limit']=qs['limit'](_0x598d16[_0x9938('0x33')][_0x9938('0x21')]);_0x1dba6a[_0x9938('0x20')]=qs[_0x9938('0x20')](_0x598d16[_0x9938('0x33')][_0x9938('0x20')]);}_0x1dba6a[_0x9938('0x39')]=qs[_0x9938('0x3a')](_0x598d16[_0x9938('0x33')][_0x9938('0x3a')]);_0x1dba6a[_0x9938('0x3b')]=qs['filters'](_[_0x9938('0x3c')](_0x598d16[_0x9938('0x33')],_0x2ac4eb[_0x9938('0x3d')]),_0x2c94ad);if(_0x598d16[_0x9938('0x33')][_0x9938('0x3e')]){_0x1dba6a['where']=_[_0x9938('0x3f')](_0x1dba6a[_0x9938('0x3b')],{'$or':_[_0x9938('0x2c')](_0x2c94ad,function(_0x528552){if(_0x528552['type']!=='VIRTUAL'){var _0x16d5f4={};_0x16d5f4[_0x528552['name']]={'$like':'%'+_0x598d16[_0x9938('0x33')]['filter']+'%'};return _0x16d5f4;}})});}_0x1dba6a=_[_0x9938('0x3f')]({},_0x1dba6a,_0x598d16[_0x9938('0x40')]);var _0x34f928={'where':_0x1dba6a[_0x9938('0x3b')]};return db['FaxApplication'][_0x9938('0x1f')](_0x34f928)[_0x9938('0x26')](function(_0x4e155a){_0x5b9bdd[_0x9938('0x1f')]=_0x4e155a;if(_0x598d16[_0x9938('0x33')]['includeAll']){_0x1dba6a[_0x9938('0x41')]=[{'all':!![]}];}return db['FaxApplication'][_0x9938('0x42')](_0x1dba6a);})[_0x9938('0x26')](function(_0x27cfe9){_0x5b9bdd[_0x9938('0x43')]=_0x27cfe9;return _0x5b9bdd;})[_0x9938('0x26')](respondWithFilteredResult(_0x2e2307,_0x1dba6a))[_0x9938('0x44')](handleError(_0x2e2307,null));};exports[_0x9938('0x45')]=function(_0x4ba516,_0x3f7e4a){var _0x23c8de={'raw':!![],'where':{'id':_0x4ba516[_0x9938('0x46')]['id']}},_0x5a9149={};_0x5a9149[_0x9938('0x32')]=_[_0x9938('0x34')](db[_0x9938('0x2d')][_0x9938('0x2e')]);_0x5a9149['query']=_[_0x9938('0x34')](_0x4ba516['query']);_0x5a9149[_0x9938('0x3d')]=_[_0x9938('0x35')](_0x5a9149[_0x9938('0x32')],_0x5a9149[_0x9938('0x33')]);_0x23c8de['attributes']=_[_0x9938('0x35')](_0x5a9149[_0x9938('0x32')],qs[_0x9938('0x37')](_0x4ba516[_0x9938('0x33')][_0x9938('0x37')]));_0x23c8de[_0x9938('0x36')]=_0x23c8de[_0x9938('0x36')][_0x9938('0x38')]?_0x23c8de[_0x9938('0x36')]:_0x5a9149[_0x9938('0x32')];if(_0x4ba516[_0x9938('0x33')][_0x9938('0x47')]){_0x23c8de[_0x9938('0x41')]=[{'all':!![]}];}_0x23c8de=_[_0x9938('0x3f')]({},_0x23c8de,_0x4ba516[_0x9938('0x40')]);return db[_0x9938('0x2d')]['find'](_0x23c8de)[_0x9938('0x26')](handleEntityNotFound(_0x3f7e4a,null))[_0x9938('0x26')](respondWithResult(_0x3f7e4a,null))[_0x9938('0x44')](handleError(_0x3f7e4a,null));};exports['create']=function(_0x454190,_0x3edb4e){return db[_0x9938('0x2d')][_0x9938('0x48')](_0x454190[_0x9938('0x49')],{})[_0x9938('0x26')](respondWithResult(_0x3edb4e,0xc9))[_0x9938('0x44')](handleError(_0x3edb4e,null));};exports[_0x9938('0x25')]=function(_0x1106dc,_0x486d92){if(_0x1106dc[_0x9938('0x49')]['id']){delete _0x1106dc[_0x9938('0x49')]['id'];}return db[_0x9938('0x2d')]['find']({'where':{'id':_0x1106dc[_0x9938('0x46')]['id']}})[_0x9938('0x26')](handleEntityNotFound(_0x486d92,null))[_0x9938('0x26')](saveUpdates(_0x1106dc[_0x9938('0x49')],null))[_0x9938('0x26')](respondWithResult(_0x486d92,null))[_0x9938('0x44')](handleError(_0x486d92,null));};exports['destroy']=function(_0x3a6265,_0x58d508){return db['FaxApplication']['find']({'where':{'id':_0x3a6265[_0x9938('0x46')]['id']}})[_0x9938('0x26')](handleEntityNotFound(_0x58d508,null))[_0x9938('0x26')](removeEntity(_0x58d508,null))[_0x9938('0x44')](handleError(_0x58d508,null));};
\ No newline at end of file
index 8a78115..56fdbb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb2a=['util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','utf8mb4_unicode_ci','lodash'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xfb2a,0x154));var _0xafb2=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0xfb2a[_0x138adb];return _0x1b27f2;};'use strict';var _=require(_0xafb2('0x0'));var util=require(_0xafb2('0x1'));var logger=require(_0xafb2('0x2'))(_0xafb2('0x3'));var moment=require('moment');var BPromise=require(_0xafb2('0x4'));var rp=require(_0xafb2('0x5'));var fs=require('fs');var path=require(_0xafb2('0x6'));var rimraf=require(_0xafb2('0x7'));var config=require(_0xafb2('0x8'));var attributes=require('./faxApplication.attributes');module[_0xafb2('0x9')]=function(_0x3700fc,_0x2c961c){return _0x3700fc['define']('FaxApplication',attributes,{'tableName':'fax_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xafb2('0xa')});};
\ No newline at end of file
+var _0x01b9=['exports','define','FaxApplication','fax_applications','utf8mb4','util','../../config/logger','moment','request-promise','path','rimraf','./faxApplication.attributes'];(function(_0x455f76,_0x33e5c1){var _0x596b43=function(_0x25753b){while(--_0x25753b){_0x455f76['push'](_0x455f76['shift']());}};_0x596b43(++_0x33e5c1);}(_0x01b9,0x7d));var _0x901b=function(_0x4b49e0,_0x376a9e){_0x4b49e0=_0x4b49e0-0x0;var _0x52f8e7=_0x01b9[_0x4b49e0];return _0x52f8e7;};'use strict';var _=require('lodash');var util=require(_0x901b('0x0'));var logger=require(_0x901b('0x1'))('api');var moment=require(_0x901b('0x2'));var BPromise=require('bluebird');var rp=require(_0x901b('0x3'));var fs=require('fs');var path=require(_0x901b('0x4'));var rimraf=require(_0x901b('0x5'));var config=require('../../config/environment');var attributes=require(_0x901b('0x6'));module[_0x901b('0x7')]=function(_0x5e0eaa,_0x3dbb8c){return _0x5e0eaa[_0x901b('0x8')](_0x901b('0x9'),attributes,{'tableName':_0x901b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x901b('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 51a1a76..fdfe97a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0565=['where','limit','then','UpdateFaxApplication','debug','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','FaxApplication,\x20%s,\x20%s','request\x20sent','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','FaxApplication','update','body','options','raw'];(function(_0x302b5e,_0x564a8e){var _0x523ab7=function(_0x6aec8f){while(--_0x6aec8f){_0x302b5e['push'](_0x302b5e['shift']());}};_0x523ab7(++_0x564a8e);}(_0x0565,0x1e6));var _0x5056=function(_0x45d3f0,_0x4be53f){_0x45d3f0=_0x45d3f0-0x0;var _0x314b79=_0x0565[_0x45d3f0];return _0x314b79;};'use strict';var _=require('lodash');var util=require(_0x5056('0x0'));var moment=require(_0x5056('0x1'));var BPromise=require(_0x5056('0x2'));var rs=require(_0x5056('0x3'));var fs=require('fs');var Redis=require(_0x5056('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x5056('0x5'));var logger=require(_0x5056('0x6'))(_0x5056('0x7'));var config=require(_0x5056('0x8'));var jayson=require(_0x5056('0x9'));var client=jayson[_0x5056('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x9e8541,_0x409329,_0x2031ee){return new BPromise(function(_0x42668d,_0x30c735){return client[_0x5056('0xb')](_0x9e8541,_0x2031ee)['then'](function(_0x5003f3){logger['info'](_0x5056('0xc'),_0x409329,_0x5056('0xd'));logger['debug'](_0x5056('0xe'),_0x409329,_0x5056('0xd'),JSON[_0x5056('0xf')](_0x5003f3));if(_0x5003f3[_0x5056('0x10')]){if(_0x5003f3[_0x5056('0x10')][_0x5056('0x11')]===0x1f4){logger[_0x5056('0x10')](_0x5056('0xc'),_0x409329,_0x5003f3['error'][_0x5056('0x12')]);return _0x30c735(_0x5003f3[_0x5056('0x10')]['message']);}logger[_0x5056('0x10')](_0x5056('0xc'),_0x409329,_0x5003f3['error'][_0x5056('0x12')]);return _0x42668d(_0x5003f3[_0x5056('0x10')][_0x5056('0x12')]);}else{logger[_0x5056('0x13')](_0x5056('0xc'),_0x409329,'request\x20sent');_0x42668d(_0x5003f3[_0x5056('0x14')][_0x5056('0x12')]);}})['catch'](function(_0x2ecb25){logger[_0x5056('0x10')](_0x5056('0xc'),_0x409329,_0x2ecb25);_0x30c735(_0x2ecb25);});});}exports['UpdateFaxApplication']=function(_0xb2e6e7){var _0x250310=this;return new Promise(function(_0x413219,_0x8662b4){return db[_0x5056('0x15')][_0x5056('0x16')](_0xb2e6e7[_0x5056('0x17')],{'raw':_0xb2e6e7[_0x5056('0x18')]?_0xb2e6e7[_0x5056('0x18')][_0x5056('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xb2e6e7[_0x5056('0x18')]?_0xb2e6e7[_0x5056('0x18')][_0x5056('0x1a')]||null:null,'attributes':_0xb2e6e7[_0x5056('0x18')]?_0xb2e6e7['options']['attributes']||null:null,'limit':_0xb2e6e7[_0x5056('0x18')]?_0xb2e6e7[_0x5056('0x18')][_0x5056('0x1b')]||null:null})[_0x5056('0x1c')](function(_0x36fac2){logger[_0x5056('0x13')](_0x5056('0x1d'),_0xb2e6e7);logger[_0x5056('0x1e')]('UpdateFaxApplication',_0xb2e6e7,JSON[_0x5056('0xf')](_0x36fac2));_0x413219(_0x36fac2);})[_0x5056('0x1f')](function(_0x348229){logger[_0x5056('0x10')]('UpdateFaxApplication',_0x348229[_0x5056('0x12')],_0xb2e6e7);_0x8662b4(_0x250310[_0x5056('0x10')](0x1f4,_0x348229[_0x5056('0x12')]));});});};
\ No newline at end of file
+var _0x3cdb=['UpdateFaxApplication','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/logger','jayson/promise','client','request','then','info','FaxApplication,\x20%s,\x20%s','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s','error','code','message','result','FaxApplication','update','body','options','raw','where','attributes','limit'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3cdb,0x17b));var _0xb3cd=function(_0x496333,_0x1c47d6){_0x496333=_0x496333-0x0;var _0x44256e=_0x3cdb[_0x496333];return _0x44256e;};'use strict';var _=require(_0xb3cd('0x0'));var util=require('util');var moment=require(_0xb3cd('0x1'));var BPromise=require(_0xb3cd('0x2'));var rs=require(_0xb3cd('0x3'));var fs=require('fs');var Redis=require(_0xb3cd('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xb3cd('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xb3cd('0x6'));var client=jayson[_0xb3cd('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x36e94f,_0x4d8247,_0x4c0ce0){return new BPromise(function(_0x29d136,_0x49fc8f){return client[_0xb3cd('0x8')](_0x36e94f,_0x4c0ce0)[_0xb3cd('0x9')](function(_0x28a87f){logger[_0xb3cd('0xa')](_0xb3cd('0xb'),_0x4d8247,_0xb3cd('0xc'));logger[_0xb3cd('0xd')](_0xb3cd('0xe'),_0x4d8247,_0xb3cd('0xc'),JSON['stringify'](_0x28a87f));if(_0x28a87f[_0xb3cd('0xf')]){if(_0x28a87f[_0xb3cd('0xf')][_0xb3cd('0x10')]===0x1f4){logger[_0xb3cd('0xf')](_0xb3cd('0xb'),_0x4d8247,_0x28a87f[_0xb3cd('0xf')][_0xb3cd('0x11')]);return _0x49fc8f(_0x28a87f[_0xb3cd('0xf')][_0xb3cd('0x11')]);}logger[_0xb3cd('0xf')](_0xb3cd('0xb'),_0x4d8247,_0x28a87f[_0xb3cd('0xf')][_0xb3cd('0x11')]);return _0x29d136(_0x28a87f[_0xb3cd('0xf')][_0xb3cd('0x11')]);}else{logger[_0xb3cd('0xa')](_0xb3cd('0xb'),_0x4d8247,_0xb3cd('0xc'));_0x29d136(_0x28a87f[_0xb3cd('0x12')]['message']);}})['catch'](function(_0x356023){logger[_0xb3cd('0xf')](_0xb3cd('0xb'),_0x4d8247,_0x356023);_0x49fc8f(_0x356023);});});}exports['UpdateFaxApplication']=function(_0x5eede4){var _0x24aa97=this;return new Promise(function(_0x198af4,_0x11754a){return db[_0xb3cd('0x13')][_0xb3cd('0x14')](_0x5eede4[_0xb3cd('0x15')],{'raw':_0x5eede4['options']?_0x5eede4[_0xb3cd('0x16')][_0xb3cd('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5eede4[_0xb3cd('0x16')]?_0x5eede4[_0xb3cd('0x16')][_0xb3cd('0x18')]||null:null,'attributes':_0x5eede4[_0xb3cd('0x16')]?_0x5eede4['options'][_0xb3cd('0x19')]||null:null,'limit':_0x5eede4[_0xb3cd('0x16')]?_0x5eede4[_0xb3cd('0x16')][_0xb3cd('0x1a')]||null:null})[_0xb3cd('0x9')](function(_0x3a38b7){logger['info'](_0xb3cd('0x1b'),_0x5eede4);logger[_0xb3cd('0xd')](_0xb3cd('0x1b'),_0x5eede4,JSON['stringify'](_0x3a38b7));_0x198af4(_0x3a38b7);})[_0xb3cd('0x1c')](function(_0x13d115){logger[_0xb3cd('0xf')](_0xb3cd('0x1b'),_0x13d115[_0xb3cd('0x11')],_0x5eede4);_0x11754a(_0x24aa97['error'](0x1f4,_0x13d115['message']));});});};
\ No newline at end of file
index ca3c5a5..e586a53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c00=['delete','destroy','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','post','create','put','/:id','update'];(function(_0x3c9e1f,_0x1035d7){var _0x1c5236=function(_0x17fcf8){while(--_0x17fcf8){_0x3c9e1f['push'](_0x3c9e1f['shift']());}};_0x1c5236(++_0x1035d7);}(_0x5c00,0x17e));var _0x05c0=function(_0xf67f45,_0x36e087){_0xf67f45=_0xf67f45-0x0;var _0xd9ab5=_0x5c00[_0xf67f45];return _0xd9ab5;};'use strict';var multer=require(_0x05c0('0x0'));var util=require(_0x05c0('0x1'));var path=require(_0x05c0('0x2'));var timeout=require('connect-timeout');var express=require(_0x05c0('0x3'));var router=express['Router']();var fs_extra=require(_0x05c0('0x4'));var auth=require(_0x05c0('0x5'));var interaction=require(_0x05c0('0x6'));var config=require(_0x05c0('0x7'));var controller=require('./faxApplication.controller');router[_0x05c0('0x8')]('/',auth[_0x05c0('0x9')](),controller[_0x05c0('0xa')]);router[_0x05c0('0x8')]('/:id',auth[_0x05c0('0x9')](),controller[_0x05c0('0xb')]);router[_0x05c0('0xc')]('/',auth['isAuthenticated'](),controller[_0x05c0('0xd')]);router[_0x05c0('0xe')](_0x05c0('0xf'),auth[_0x05c0('0x9')](),controller[_0x05c0('0x10')]);router[_0x05c0('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x05c0('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x8603=['../../components/interaction/service','./faxApplication.controller','isAuthenticated','index','get','/:id','create','put','update','exports','util','path','connect-timeout','fs-extra','../../components/auth/service'];(function(_0x157d23,_0x4027b9){var _0x5b93cc=function(_0x18af99){while(--_0x18af99){_0x157d23['push'](_0x157d23['shift']());}};_0x5b93cc(++_0x4027b9);}(_0x8603,0x190));var _0x3860=function(_0x3e435a,_0x6dd0de){_0x3e435a=_0x3e435a-0x0;var _0x419ed0=_0x8603[_0x3e435a];return _0x419ed0;};'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['show']);router['post']('/',auth['isAuthenticated'](),controller[_0x3860('0xb')]);router[_0x3860('0xc')]('/:id',auth[_0x3860('0x7')](),controller[_0x3860('0xd')]);router['delete'](_0x3860('0xa'),auth[_0x3860('0x7')](),controller['destroy']);module[_0x3860('0xe')]=router;
\ No newline at end of file
index ace5b04..82f0c8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x703c=['sequelize','BOOLEAN','DATE','STRING','ENUM','out'];(function(_0x253804,_0x4101e2){var _0x26cb31=function(_0xfdc5b0){while(--_0xfdc5b0){_0x253804['push'](_0x253804['shift']());}};_0x26cb31(++_0x4101e2);}(_0x703c,0x19e));var _0xc703=function(_0xd0e201,_0x30d2a9){_0xd0e201=_0xd0e201-0x0;var _0x6e9022=_0x703c[_0xd0e201];return _0x6e9022;};'use strict';var Sequelize=require(_0xc703('0x0'));module['exports']={'closed':{'type':Sequelize[_0xc703('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xc703('0x2')]},'disposition':{'type':Sequelize[_0xc703('0x3')]},'secondDisposition':{'type':Sequelize[_0xc703('0x3')]},'thirdDisposition':{'type':Sequelize[_0xc703('0x3')]},'note':{'type':Sequelize[_0xc703('0x3')]},'read1stAt':{'type':Sequelize[_0xc703('0x2')]},'fax':{'type':Sequelize[_0xc703('0x3')]},'firstMsgDirection':{'type':Sequelize[_0xc703('0x4')]('in',_0xc703('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xc703('0x2')]},'lastMsgDirection':{'type':Sequelize[_0xc703('0x4')]('in',_0xc703('0x5')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0xd22d=['sequelize','BOOLEAN','DATE','STRING'];(function(_0x961a37,_0x33bdca){var _0x1ebd1b=function(_0x5bfd31){while(--_0x5bfd31){_0x961a37['push'](_0x961a37['shift']());}};_0x1ebd1b(++_0x33bdca);}(_0xd22d,0x1a8));var _0xdd22=function(_0x43b08,_0x15f967){_0x43b08=_0x43b08-0x0;var _0x5e05f4=_0xd22d[_0x43b08];return _0x5e05f4;};'use strict';var Sequelize=require(_0xdd22('0x0'));module['exports']={'closed':{'type':Sequelize[_0xdd22('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xdd22('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xdd22('0x3')]},'thirdDisposition':{'type':Sequelize[_0xdd22('0x3')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0xdd22('0x2')]},'fax':{'type':Sequelize['STRING']},'firstMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xdd22('0x2')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index 58a27a7..62f5e05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3cf=['u.id','ui.FaxInteractionId','user_has_fax_interactions','left_join','users','fax_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','a.id\x20=\x20i.FaxAccountId','fax_messages','me.FaxInteractionId\x20=\x20i.id','fax_interaction_has_tags','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','ContactId','buildExpression','text','start','Tag','User','$substring','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','some','compact','isEmpty','FaxAccountId','i.FaxAccountId\x20IN\x20?','concat','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','`unreadMessages`\x20>\x200','isArray','tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.fax\x20LIKE\x20?','i.id','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','i.FaxAccountId\x20IS\x20NOT\x20NULL','user','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','role','agent','sequelize','toString','keyBy','merge','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','Contact.firstName','c.lastName','Contact.lastName','c.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','groupBy','all','rows','show','params','include','options','create','describe','FaxMessage','addMessage','ids','omit','getMessages','findOne','pick','$gte','YYYY-MM-DD\x20HH:mm:ss','includeAll','addTags','setTags','spread','emit','faxInteractionTags:save','removeTags','download','join','server','files','tmp','root','attachments','format','transcript-%d-%s.zip','Attachment','Messages','createdAt','get','mkdirSync','basename','existsSync','createReadStream','pipe','createWriteStream','resolve','log','unlinkSync','eml-format','rimraf','fast-json-patch','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','localhost','socket.io-emitter','./faxInteraction.socket','sendStatus','status','offset','undefined','limit','count','Content-Range','json','apply','reject','update','destroy','then','end','name','send','Users','map','fullname','Tags','forEach','push','TagIds','catch','FaxInteraction','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','select','field','color','from','tools_tags'];(function(_0x52e141,_0x1d1d9b){var _0x285dd4=function(_0x57fe1b){while(--_0x57fe1b){_0x52e141['push'](_0x52e141['shift']());}};_0x285dd4(++_0x1d1d9b);}(_0xa3cf,0x166));var _0xfa3c=function(_0xff4b64,_0x2b7a56){_0xff4b64=_0xff4b64-0x0;var _0xd0459f=_0xa3cf[_0xff4b64];return _0xd0459f;};'use strict';var emlformat=require(_0xfa3c('0x0'));var rimraf=require(_0xfa3c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfa3c('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xfa3c('0x3'));var Mustache=require('mustache');var util=require(_0xfa3c('0x4'));var path=require('path');var sox=require(_0xfa3c('0x5'));var csv=require(_0xfa3c('0x6'));var ejs=require(_0xfa3c('0x7'));var fs=require('fs');var fs_extra=require(_0xfa3c('0x8'));var _=require(_0xfa3c('0x9'));var squel=require(_0xfa3c('0xa'));var crypto=require(_0xfa3c('0xb'));var jsforce=require(_0xfa3c('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xfa3c('0x6'));var querystring=require(_0xfa3c('0xd'));var Papa=require(_0xfa3c('0xe'));var Redis=require(_0xfa3c('0xf'));var authService=require(_0xfa3c('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfa3c('0x11'));var logger=require(_0xfa3c('0x12'))(_0xfa3c('0x13'));var utils=require(_0xfa3c('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xfa3c('0x15'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config['redis'],{'host':_0xfa3c('0x16'),'port':0x18eb});var socket=require(_0xfa3c('0x17'))(new Redis(config['redis']));require(_0xfa3c('0x18'))['register'](socket);function respondWithStatusCode(_0x2136f4,_0x2afe29){_0x2afe29=_0x2afe29||0xcc;return function(_0x70cef1){if(_0x70cef1){return _0x2136f4[_0xfa3c('0x19')](_0x2afe29);}return _0x2136f4[_0xfa3c('0x1a')](_0x2afe29)['end']();};}function respondWithResult(_0x33b1b3,_0x45d993){_0x45d993=_0x45d993||0xc8;return function(_0x112d14){if(_0x112d14){return _0x33b1b3[_0xfa3c('0x1a')](_0x45d993)['json'](_0x112d14);}};}function respondWithFilteredResult(_0xd54aa2,_0x105c3f){return function(_0x57ccc7){if(_0x57ccc7){var _0x4432fc=typeof _0x105c3f[_0xfa3c('0x1b')]===_0xfa3c('0x1c')&&typeof _0x105c3f[_0xfa3c('0x1d')]===_0xfa3c('0x1c');var _0x40101d=_0x57ccc7[_0xfa3c('0x1e')];var _0x42e706=_0x4432fc?0x0:_0x105c3f[_0xfa3c('0x1b')];var _0x131586=_0x4432fc?_0x57ccc7[_0xfa3c('0x1e')]:_0x105c3f[_0xfa3c('0x1b')]+_0x105c3f[_0xfa3c('0x1d')];var _0x182dae;if(_0x131586>=_0x40101d){_0x131586=_0x40101d;_0x182dae=0xc8;}else{_0x182dae=0xce;}_0xd54aa2[_0xfa3c('0x1a')](_0x182dae);return _0xd54aa2['set'](_0xfa3c('0x1f'),_0x42e706+'-'+_0x131586+'/'+_0x40101d)[_0xfa3c('0x20')](_0x57ccc7);}return null;};}function patchUpdates(_0x5b1cad){return function(_0x431302){try{jsonpatch[_0xfa3c('0x21')](_0x431302,_0x5b1cad,!![]);}catch(_0x2b14ec){return BPromise[_0xfa3c('0x22')](_0x2b14ec);}return _0x431302['save']();};}function saveUpdates(_0x11b81b,_0x481855){return function(_0x351699){if(_0x351699){return _0x351699[_0xfa3c('0x23')](_0x11b81b)['then'](function(_0x16cfd3){return _0x16cfd3;});}return null;};}function removeEntity(_0x5f481a,_0x355b4c){return function(_0x64b43d){if(_0x64b43d){return _0x64b43d[_0xfa3c('0x24')]()[_0xfa3c('0x25')](function(){_0x5f481a[_0xfa3c('0x1a')](0xcc)[_0xfa3c('0x26')]();});}};}function handleEntityNotFound(_0x4254b7,_0x5e284c){return function(_0x3e91da){if(!_0x3e91da){_0x4254b7['sendStatus'](0x194);}return _0x3e91da;};}function handleError(_0x55f673,_0x5e667a){_0x5e667a=_0x5e667a||0x1f4;return function(_0x323d7c){logger['error'](_0x323d7c['stack']);if(_0x323d7c[_0xfa3c('0x27')]){delete _0x323d7c[_0xfa3c('0x27')];}_0x55f673[_0xfa3c('0x1a')](_0x5e667a)[_0xfa3c('0x28')](_0x323d7c);};}function getInteractionUsers(_0x4e894f,_0x2edc1f){return new BPromise(function(_0x4d0f87,_0xd631b6){try{if(_0x2edc1f[_0x4e894f['id']]){_0x4e894f[_0xfa3c('0x29')]=_[_0xfa3c('0x2a')](_0x2edc1f[_0x4e894f['id']],function(_0x239f2a){return{'id':_0x239f2a['id'],'fullname':_0x239f2a[_0xfa3c('0x2b')]};});}}catch(_0x372da0){_0xd631b6(_0x372da0);}_0x4d0f87(_0x4e894f);});}function getInteractionTags(_0x56d1fb,_0x7617c){return new BPromise(function(_0x34a4f9,_0x4534a0){try{if(_0x56d1fb['TagIds']){_0x56d1fb[_0xfa3c('0x2c')]=[];_0x56d1fb['TagIds']['split'](',')[_0xfa3c('0x2d')](function(_0x1fce0f){_0x56d1fb['Tags'][_0xfa3c('0x2e')](_0x7617c[_0x1fce0f]);});}delete _0x56d1fb[_0xfa3c('0x2f')];}catch(_0x48edfe){_0x4534a0(_0x48edfe);}_0x34a4f9(_0x56d1fb);});}function updateFaxInteraction(_0x31d6c1,_0x3e4383,_0x4a96f6){return new BPromise(function(_0x4bbe1e,_0x25d5e7){return getInteractionUsers(_0x31d6c1,_0x4a96f6)[_0xfa3c('0x25')](function(_0x5bc554){return getInteractionTags(_0x5bc554,_0x3e4383);})[_0xfa3c('0x25')](function(_0x1e3b60){_0x4bbe1e(_0x1e3b60);})[_0xfa3c('0x30')](function(_0x494a5f){_0x25d5e7(_0x494a5f);});});}exports['index']=function(_0x54351e,_0x43c8bc){var _0x4f1bad={},_0x482ec5={},_0x502a45={'count':0x0,'rows':[]};var _0x14e333=_['map'](db[_0xfa3c('0x31')][_0xfa3c('0x32')],function(_0x12921a){return{'name':_0x12921a[_0xfa3c('0x33')],'type':_0x12921a[_0xfa3c('0x34')][_0xfa3c('0x35')]};});_0x482ec5['model']=_['map'](_0x14e333,'name');_0x482ec5[_0xfa3c('0x36')]=_[_0xfa3c('0x37')](_0x54351e['query']);_0x482ec5[_0xfa3c('0x38')]=_[_0xfa3c('0x39')](_0x482ec5[_0xfa3c('0x3a')],_0x482ec5[_0xfa3c('0x36')]);_0x4f1bad[_0xfa3c('0x3b')]=_['intersection'](_0x482ec5['model'],qs[_0xfa3c('0x3c')](_0x54351e[_0xfa3c('0x36')][_0xfa3c('0x3c')]));_0x4f1bad[_0xfa3c('0x3b')]=_0x4f1bad[_0xfa3c('0x3b')][_0xfa3c('0x3d')]?_0x4f1bad['attributes']:_0x482ec5[_0xfa3c('0x3a')];if(!_0x54351e['query'][_0xfa3c('0x3e')](_0xfa3c('0x3f'))){_0x4f1bad[_0xfa3c('0x1d')]=qs[_0xfa3c('0x1d')](_0x54351e['query'][_0xfa3c('0x1d')]);_0x4f1bad[_0xfa3c('0x1b')]=qs['offset'](_0x54351e[_0xfa3c('0x36')][_0xfa3c('0x1b')]);}_0x4f1bad[_0xfa3c('0x40')]=qs[_0xfa3c('0x41')](_0x54351e[_0xfa3c('0x36')]['sort']);_0x4f1bad[_0xfa3c('0x42')]=qs['filters'](_['pick'](_0x54351e[_0xfa3c('0x36')],_0x482ec5[_0xfa3c('0x38')]),_0x14e333);var _0x659681=[];var _0x36fe15=squel[_0xfa3c('0x43')]()[_0xfa3c('0x44')]('id')[_0xfa3c('0x44')](_0xfa3c('0x27'))[_0xfa3c('0x44')](_0xfa3c('0x45'))[_0xfa3c('0x46')](_0xfa3c('0x47'));var _0x347242=squel[_0xfa3c('0x43')]()[_0xfa3c('0x44')](_0xfa3c('0x48'))['field']('u.fullname')[_0xfa3c('0x44')](_0xfa3c('0x49'))[_0xfa3c('0x46')](_0xfa3c('0x4a'),'ui')[_0xfa3c('0x4b')](_0xfa3c('0x4c'),'u','u.id\x20=\x20ui.UserId');var _0x38c5fa=squel[_0xfa3c('0x43')]()[_0xfa3c('0x46')](_0xfa3c('0x4d'),'i')[_0xfa3c('0x4b')](_0xfa3c('0x4e'),'c',_0xfa3c('0x4f'))[_0xfa3c('0x4b')](_0xfa3c('0x4c'),'o',_0xfa3c('0x50'))[_0xfa3c('0x4b')]('fax_accounts','a',_0xfa3c('0x51'))['left_join'](_0xfa3c('0x52'),'me',_0xfa3c('0x53'))[_0xfa3c('0x4b')](_0xfa3c('0x54'),'it','it.FaxInteractionId\x20=\x20i.id')[_0xfa3c('0x4b')]('tools_tags','t',_0xfa3c('0x55'));var _0x5b81e5=squel[_0xfa3c('0x56')]();var _0x52342e=[];var _0x412326=squel['expr']();var _0x349b31;if(_0x54351e[_0xfa3c('0x36')][_0xfa3c('0x57')]){_0x349b31=as[_0xfa3c('0x58')](_0x54351e[_0xfa3c('0x36')][_0xfa3c('0x57')]);var _0x303d24=_0x349b31[_0xfa3c('0x59')];for(var _0x146814=0x0;_0x146814<_0x349b31[_0xfa3c('0x5a')][_0xfa3c('0x3d')];_0x146814++){var _0x28f0a7=_0x349b31[_0xfa3c('0x5a')][_0x146814];var _0x190711='i';var _0x38e7e6=_[_0xfa3c('0x5b')](_0x14e333,[_0xfa3c('0x27'),_0x28f0a7[_0xfa3c('0x44')]]);if(!_0x38e7e6){switch(_0x28f0a7[_0xfa3c('0x44')]){case'unreadMessages':if(_0x28f0a7[_0xfa3c('0x5c')]==0x1){_0x38c5fa[_0xfa3c('0x5d')]('`'+_0x28f0a7[_0xfa3c('0x44')]+_0xfa3c('0x5e'));}else{_0x38c5fa[_0xfa3c('0x5d')]('`'+_0x28f0a7['field']+_0xfa3c('0x5f'));}break;case _0xfa3c('0x60'):if(_0x28f0a7[_0xfa3c('0x61')]==='$substring'){if(_0x28f0a7[_0xfa3c('0x5c')][_0xfa3c('0x62')]('\x20')[_0xfa3c('0x3d')]>0x1){_0x5b81e5[_0x303d24](_0xfa3c('0x63'),qs[_0xfa3c('0x64')](_0x28f0a7['value']),null);}else{var _0x4739ac='%'+_0x28f0a7['value']+'%';_0x5b81e5[_0x303d24]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x4739ac,_0x4739ac,_0x4739ac);}}else{_0x38e7e6=_[_0xfa3c('0x5b')](_0x14e333,[_0xfa3c('0x27'),_0xfa3c('0x65')]);_0x28f0a7[_0xfa3c('0x44')]='ContactId';_0xd07cf5=as[_0xfa3c('0x66')](_0x190711,_0x38e7e6[_0xfa3c('0x34')],_0x28f0a7);_0x5b81e5[_0x303d24](_0xd07cf5[_0xfa3c('0x67')],_0xd07cf5[_0xfa3c('0x5c')][_0xfa3c('0x68')],_0xd07cf5[_0xfa3c('0x5c')][_0xfa3c('0x26')]);}break;case _0xfa3c('0x69'):var _0x38fd57=_0x28f0a7[_0xfa3c('0x5c')][_0xfa3c('0x62')](',')[_0xfa3c('0x2a')](function(_0x485e2c){return Number(_0x485e2c);});_0x38fd57[_0xfa3c('0x2d')](function(_0x2c00d7){_0x412326['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x2c00d7+',%');});_0x52342e=_['union'](_0x52342e,_0x38fd57);break;case _0xfa3c('0x6a'):if(_0x28f0a7[_0xfa3c('0x61')]===_0xfa3c('0x6b')){_0x5b81e5[_0x303d24](_0xfa3c('0x6c'),'%'+_0x28f0a7[_0xfa3c('0x5c')]+'%',null);}else{_0x38e7e6=_[_0xfa3c('0x5b')](_0x14e333,[_0xfa3c('0x27'),_0xfa3c('0x6d')]);_0x28f0a7[_0xfa3c('0x44')]=_0xfa3c('0x6d');_0xd07cf5=as[_0xfa3c('0x66')](_0x190711,_0x38e7e6['type'],_0x28f0a7);_0x5b81e5[_0x303d24](_0xd07cf5['text'],_0xd07cf5['value'][_0xfa3c('0x68')],_0xd07cf5['value'][_0xfa3c('0x26')]);}break;case _0xfa3c('0x6e'):_0xd07cf5=as['buildExpression']('me',null,_0x28f0a7);_0x5b81e5[_0x303d24](_0xd07cf5[_0xfa3c('0x67')],_0xd07cf5['value'][_0xfa3c('0x68')],_0xd07cf5[_0xfa3c('0x5c')][_0xfa3c('0x26')]);break;}}else{var _0xd07cf5=as[_0xfa3c('0x66')](_0x190711,_0x38e7e6[_0xfa3c('0x34')],_0x28f0a7);_0x5b81e5[_0x303d24](_0xd07cf5[_0xfa3c('0x67')],_0xd07cf5[_0xfa3c('0x5c')][_0xfa3c('0x68')],_0xd07cf5['value']['end']);}}}else{var _0x231555=_(_0x54351e[_0xfa3c('0x36')])[_0xfa3c('0x37')]()[_0xfa3c('0x2a')](function(_0x1c930f){return _[_0xfa3c('0x6f')](_0x14e333,[_0xfa3c('0x27'),_0x1c930f])?_0x1c930f:undefined;})[_0xfa3c('0x70')]()[_0xfa3c('0x5c')]();if(!_[_0xfa3c('0x71')](_0x231555)){_0x231555[_0xfa3c('0x2d')](function(_0x31a9b8){if(_0x31a9b8===_0xfa3c('0x72')){_0x38c5fa[_0xfa3c('0x42')](_0xfa3c('0x73'),[][_0xfa3c('0x74')](_0x54351e[_0xfa3c('0x36')][_0x31a9b8]));}else if(_0x31a9b8==='createdAt'){var _0x2227cc=JSON[_0xfa3c('0x75')](_0x54351e[_0xfa3c('0x36')][_0x31a9b8])['$gte'];var _0x1f3b5f=JSON['parse'](_0x54351e[_0xfa3c('0x36')][_0x31a9b8])[_0xfa3c('0x76')];_0x38c5fa[_0xfa3c('0x42')](_0xfa3c('0x77'),_0x2227cc,_0x1f3b5f);}else{if(_0x54351e[_0xfa3c('0x36')][_0x31a9b8]===_0xfa3c('0x78')){_0x38c5fa[_0xfa3c('0x42')]('i.'+_0x31a9b8+_0xfa3c('0x79'));}else{_0x38c5fa[_0xfa3c('0x42')]('i.'+_0x31a9b8+'\x20=\x20?',_0x54351e[_0xfa3c('0x36')][_0x31a9b8]);}}});}if(_0x54351e[_0xfa3c('0x36')]['read']){if(_0x54351e[_0xfa3c('0x36')]['read']==0x1){_0x38c5fa[_0xfa3c('0x5d')]('`unreadMessages`\x20=\x200');}else{_0x38c5fa[_0xfa3c('0x5d')](_0xfa3c('0x7a'));}}if(_0x54351e[_0xfa3c('0x36')]['tag']){_0x52342e=_[_0xfa3c('0x7b')](_0x54351e[_0xfa3c('0x36')][_0xfa3c('0x7c')])?_0x54351e[_0xfa3c('0x36')][_0xfa3c('0x7c')]:new Array(_0x54351e['query'][_0xfa3c('0x7c')]);_0x52342e[_0xfa3c('0x2d')](function(_0x5e38f7){_0x412326['or'](_0xfa3c('0x7d'),'%,'+_0x5e38f7+',%');});}if(_0x54351e[_0xfa3c('0x36')][_0xfa3c('0x7e')]){var _0x42f4b8=_0x54351e['query']['filter'][_0xfa3c('0x7f')]('\x5c','\x5c\x5c')[_0xfa3c('0x7f')](/'/g,'\x27\x27');if(qs[_0xfa3c('0x80')](_0x42f4b8)){_0x5b81e5['or'](_0xfa3c('0x81'),_0x42f4b8+'%')['or'](_0xfa3c('0x82'),_0x42f4b8+'%');}_0x5b81e5['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x42f4b8+'%');}}_0x38c5fa[_0xfa3c('0x42')](_0x5b81e5);_0x38c5fa['group'](_0xfa3c('0x83'));var _0x2b291f={'type':db['Sequelize'][_0xfa3c('0x84')][_0xfa3c('0x85')],'raw':!![]};var _0x1ecf18=_0x38c5fa[_0xfa3c('0x86')]();_0x1ecf18['field']('i.id');_0x1ecf18[_0xfa3c('0x44')](_0xfa3c('0x87'),'unreadMessages');if(_0x4f1bad[_0xfa3c('0x40')]){_0x4f1bad[_0xfa3c('0x40')][_0xfa3c('0x2d')](function(_0x4e1137){var _0x58997a=_0x4e1137[0x0]===_0xfa3c('0x88')?_0x4e1137[0x0]:'i.'+_0x4e1137[0x0];_0x38c5fa[_0xfa3c('0x40')](_0x58997a,_0x4e1137[0x1]===_0xfa3c('0x89')?![]:!![]);});}if(!_['isEmpty'](_0x52342e)){_0x38c5fa['having'](_0x412326);_0x1ecf18[_0xfa3c('0x42')](_0xfa3c('0x8a'),_0x52342e);}BPromise['resolve']()[_0xfa3c('0x25')](function(){if(!_0x349b31){if(_0x54351e[_0xfa3c('0x36')][_0xfa3c('0x72')])return;_0x1ecf18['where'](_0xfa3c('0x8b'));_0x38c5fa[_0xfa3c('0x42')](_0xfa3c('0x8b'));return;}if(_0x54351e[_0xfa3c('0x8c')]['role']!=='agent')return;return _0x54351e[_0xfa3c('0x8c')][_0xfa3c('0x8d')]({'attributes':['id'],'raw':!![]})[_0xfa3c('0x25')](function(_0x469908){if(_[_0xfa3c('0x71')](_0x469908)){_0x1ecf18['where'](_0xfa3c('0x8e'));_0x38c5fa[_0xfa3c('0x42')]('i.FaxAccountId\x20IS\x20NULL');}else{_0x1ecf18[_0xfa3c('0x42')](_0xfa3c('0x73'),_[_0xfa3c('0x2a')](_0x469908,'id'));_0x38c5fa[_0xfa3c('0x42')]('i.FaxAccountId\x20IN\x20?',_[_0xfa3c('0x2a')](_0x469908,'id'));}});})[_0xfa3c('0x25')](function(){if(_0x54351e[_0xfa3c('0x8c')][_0xfa3c('0x8f')]===_0xfa3c('0x90')&&!_0x349b31&&!_0x54351e[_0xfa3c('0x36')]['FaxAccountId'])return[];return db[_0xfa3c('0x91')]['query'](_0x1ecf18['toString'](),_0x2b291f);})['then'](function(_0x40e5c9){_0x502a45['count']=_0x40e5c9['length'];if(_0x502a45['count']===0x0)return[];return db[_0xfa3c('0x91')][_0xfa3c('0x36')](_0x36fe15[_0xfa3c('0x92')](),_0x2b291f)['then'](function(_0x8c80c8){_0x659681=_[_0xfa3c('0x93')](_0x8c80c8,'id');_0x2b291f=_[_0xfa3c('0x94')](_0x2b291f,{'model':db[_0xfa3c('0x31')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x54351e['query']['fields']){_0x4f1bad[_0xfa3c('0x3b')]['forEach'](function(_0x5e8347){_0x38c5fa[_0xfa3c('0x44')]('i.'+_0x5e8347);});}else{_0x38c5fa[_0xfa3c('0x44')](_0xfa3c('0x87'),'unreadMessages');_0x38c5fa['field'](_0xfa3c('0x95'),_0xfa3c('0x96'));_0x38c5fa['field'](_0xfa3c('0x97'),_0xfa3c('0x98'));_0x38c5fa[_0xfa3c('0x44')](_0xfa3c('0x99'),_0xfa3c('0x88'));_0x38c5fa[_0xfa3c('0x44')](_0xfa3c('0x9a'));_0x38c5fa[_0xfa3c('0x44')]('c.firstName',_0xfa3c('0x9b'));_0x38c5fa['field'](_0xfa3c('0x9c'),_0xfa3c('0x9d'));_0x38c5fa[_0xfa3c('0x44')](_0xfa3c('0x9e'),'Contact.email');_0x38c5fa[_0xfa3c('0x44')](_0xfa3c('0x9f'),_0xfa3c('0xa0'));_0x38c5fa[_0xfa3c('0x44')](_0xfa3c('0xa1'),_0xfa3c('0xa2'));_0x38c5fa[_0xfa3c('0x44')](_0xfa3c('0xa3'),_0xfa3c('0xa4'));_0x38c5fa[_0xfa3c('0x44')](_0xfa3c('0xa5'),'Owner.fullname');_0x38c5fa[_0xfa3c('0x44')]('o.internal',_0xfa3c('0xa6'));_0x38c5fa['field'](_0xfa3c('0xa7'),_0xfa3c('0x2f'));}if(_0x4f1bad[_0xfa3c('0x1d')])_0x38c5fa[_0xfa3c('0x1d')](_0x4f1bad[_0xfa3c('0x1d')]);if(_0x4f1bad['offset'])_0x38c5fa['offset'](_0x4f1bad[_0xfa3c('0x1b')]);return db[_0xfa3c('0x91')][_0xfa3c('0x36')](_0x38c5fa[_0xfa3c('0x92')](),_0x2b291f);})[_0xfa3c('0x25')](function(_0x23cff6){if(_0x23cff6[_0xfa3c('0x3d')]>0x0)_0x347242['where']('ui.FaxInteractionId\x20IN\x20?',_[_0xfa3c('0x2a')](_0x23cff6,'id'));return db[_0xfa3c('0x91')]['query'](_0x347242['toString'](),_0x2b291f)[_0xfa3c('0x25')](function(_0x46dd17){var _0x4e6547=_[_0xfa3c('0xa8')](_0x46dd17,'FaxInteractionId');var _0x469afa=[];_0x23cff6[_0xfa3c('0x2d')](function(_0x38fea7){_0x469afa['push'](updateFaxInteraction(_0x38fea7,_0x659681,_0x4e6547));});return BPromise[_0xfa3c('0xa9')](_0x469afa);});});})[_0xfa3c('0x25')](function(_0x3a3995){_0x502a45[_0xfa3c('0xaa')]=_0x3a3995;return _0x502a45;})['then'](respondWithFilteredResult(_0x43c8bc,_0x4f1bad))['catch'](handleError(_0x43c8bc,null));};exports[_0xfa3c('0xab')]=function(_0xb6c6e8,_0x3c541c){var _0x2b0452={'raw':![],'where':{'id':_0xb6c6e8[_0xfa3c('0xac')]['id']}},_0x63ac50={};_0x63ac50['model']=_[_0xfa3c('0x37')](db['FaxInteraction']['rawAttributes']);_0x63ac50[_0xfa3c('0x36')]=_[_0xfa3c('0x37')](_0xb6c6e8[_0xfa3c('0x36')]);_0x63ac50['filters']=_['intersection'](_0x63ac50[_0xfa3c('0x3a')],_0x63ac50[_0xfa3c('0x36')]);_0x2b0452[_0xfa3c('0x3b')]=_[_0xfa3c('0x39')](_0x63ac50[_0xfa3c('0x3a')],qs[_0xfa3c('0x3c')](_0xb6c6e8[_0xfa3c('0x36')][_0xfa3c('0x3c')]));_0x2b0452[_0xfa3c('0x3b')]=_0x2b0452[_0xfa3c('0x3b')]['length']?_0x2b0452[_0xfa3c('0x3b')]:_0x63ac50[_0xfa3c('0x3a')];if(_0xb6c6e8[_0xfa3c('0x36')]['includeAll']){_0x2b0452[_0xfa3c('0xad')]=[{'all':!![]}];}_0x2b0452=_[_0xfa3c('0x94')]({},_0x2b0452,_0xb6c6e8[_0xfa3c('0xae')]);return db[_0xfa3c('0x31')][_0xfa3c('0x5b')](_0x2b0452)['then'](handleEntityNotFound(_0x3c541c,null))[_0xfa3c('0x25')](respondWithResult(_0x3c541c,null))[_0xfa3c('0x30')](handleError(_0x3c541c,null));};exports[_0xfa3c('0xaf')]=function(_0x156d34,_0x5537d5){return db[_0xfa3c('0x31')][_0xfa3c('0xaf')](_0x156d34[_0xfa3c('0x6e')],{})[_0xfa3c('0x25')](respondWithResult(_0x5537d5,0xc9))[_0xfa3c('0x30')](handleError(_0x5537d5,null));};exports[_0xfa3c('0x23')]=function(_0x41de79,_0x3811fa){if(_0x41de79[_0xfa3c('0x6e')]['id']){delete _0x41de79[_0xfa3c('0x6e')]['id'];}return db[_0xfa3c('0x31')]['find']({'where':{'id':_0x41de79[_0xfa3c('0xac')]['id']}})['then'](handleEntityNotFound(_0x3811fa,null))[_0xfa3c('0x25')](saveUpdates(_0x41de79[_0xfa3c('0x6e')],null))[_0xfa3c('0x25')](respondWithResult(_0x3811fa,null))[_0xfa3c('0x30')](handleError(_0x3811fa,null));};exports[_0xfa3c('0x24')]=function(_0x396f4d,_0x11a48e){return db[_0xfa3c('0x31')][_0xfa3c('0x5b')]({'where':{'id':_0x396f4d[_0xfa3c('0xac')]['id']}})[_0xfa3c('0x25')](handleEntityNotFound(_0x11a48e,null))[_0xfa3c('0x25')](removeEntity(_0x11a48e,null))[_0xfa3c('0x30')](handleError(_0x11a48e,null));};exports[_0xfa3c('0xb0')]=function(_0x2c5d5c,_0x522390){return db[_0xfa3c('0x31')]['describe']()[_0xfa3c('0x25')](respondWithResult(_0x522390,null))['catch'](handleError(_0x522390,null));};exports['addMessage']=function(_0xc6470e,_0x2dd31b,_0x20de1d){return db[_0xfa3c('0xb1')][_0xfa3c('0x5b')]({'where':{'id':_0xc6470e['params']['id']}})['then'](handleEntityNotFound(_0x2dd31b,null))[_0xfa3c('0x25')](function(_0x3529fb){if(_0x3529fb){return _0x3529fb[_0xfa3c('0xb2')](_0xc6470e[_0xfa3c('0x6e')][_0xfa3c('0xb3')],_[_0xfa3c('0xb4')](_0xc6470e['body'],[_0xfa3c('0xb3'),'id'])||{});}})[_0xfa3c('0x25')](respondWithResult(_0x2dd31b,null))[_0xfa3c('0x30')](handleError(_0x2dd31b,null));};exports[_0xfa3c('0xb5')]=function(_0xc7001e,_0x58f672,_0x2ebe2d){var _0x2c1938={'raw':![],'where':{}};var _0x1a40a5={};var _0x45ab22={'count':0x0,'rows':[]};return db[_0xfa3c('0x31')][_0xfa3c('0xb6')]({'where':{'id':_0xc7001e['params']['id']}})[_0xfa3c('0x25')](handleEntityNotFound(_0x58f672,null))[_0xfa3c('0x25')](function(_0x226d7a){if(_0x226d7a){_0x1a40a5[_0xfa3c('0x3a')]=_[_0xfa3c('0x37')](db[_0xfa3c('0xb1')][_0xfa3c('0x32')]);_0x1a40a5['query']=_[_0xfa3c('0x37')](_0xc7001e['query']);_0x1a40a5[_0xfa3c('0x38')]=_[_0xfa3c('0x39')](_0x1a40a5['model'],_0x1a40a5[_0xfa3c('0x36')]);_0x2c1938[_0xfa3c('0x3b')]=_['intersection'](_0x1a40a5[_0xfa3c('0x3a')],qs[_0xfa3c('0x3c')](_0xc7001e[_0xfa3c('0x36')][_0xfa3c('0x3c')]));_0x2c1938[_0xfa3c('0x3b')]=_0x2c1938['attributes'][_0xfa3c('0x3d')]?_0x2c1938[_0xfa3c('0x3b')]:_0x1a40a5[_0xfa3c('0x3a')];if(!_0xc7001e[_0xfa3c('0x36')][_0xfa3c('0x3e')]('nolimit')){_0x2c1938[_0xfa3c('0x1d')]=qs[_0xfa3c('0x1d')](_0xc7001e[_0xfa3c('0x36')][_0xfa3c('0x1d')]);_0x2c1938[_0xfa3c('0x1b')]=qs[_0xfa3c('0x1b')](_0xc7001e[_0xfa3c('0x36')][_0xfa3c('0x1b')]);}_0x2c1938['order']=qs[_0xfa3c('0x41')](_0xc7001e[_0xfa3c('0x36')]['sort']);_0x2c1938[_0xfa3c('0x42')]=qs[_0xfa3c('0x38')](_[_0xfa3c('0xb7')](_0xc7001e[_0xfa3c('0x36')],_0x1a40a5[_0xfa3c('0x38')]));_0x2c1938[_0xfa3c('0x42')]['FaxInteractionId']=_0x226d7a['id'];if(_0xc7001e[_0xfa3c('0x36')][_0xfa3c('0x7e')]){_0x2c1938[_0xfa3c('0x42')]=_[_0xfa3c('0x94')](_0x2c1938[_0xfa3c('0x42')],{'$or':_[_0xfa3c('0x2a')](_0x2c1938[_0xfa3c('0x3b')],function(_0x1c225d){var _0x382e77={};_0x382e77[_0x1c225d]={'$like':'%'+_0xc7001e['query'][_0xfa3c('0x7e')]+'%'};return _0x382e77;})});}if(_0xc7001e[_0xfa3c('0x36')][_0xfa3c('0xb8')]){var _0x359a9b=_0xc7001e[_0xfa3c('0x36')][_0xfa3c('0xb8')]['split'](',');var _0x503ab1={};_0x503ab1[_0x359a9b[0x0]]={'$gte':moment(_0x359a9b[0x1])['format'](_0xfa3c('0xb9'))};_0x2c1938['where']=_[_0xfa3c('0x94')](_0x2c1938[_0xfa3c('0x42')],_0x503ab1);}_0x2c1938=_[_0xfa3c('0x94')]({},_0x2c1938,_0xc7001e[_0xfa3c('0xae')]);return db[_0xfa3c('0xb1')][_0xfa3c('0x1e')]({'where':_0x2c1938['where']})[_0xfa3c('0x25')](function(_0x57d6f9){_0x45ab22['count']=_0x57d6f9;if(_0xc7001e[_0xfa3c('0x36')][_0xfa3c('0xba')]){_0x2c1938[_0xfa3c('0xad')]=[{'all':!![]}];}return db[_0xfa3c('0xb1')]['findAll'](_0x2c1938);})[_0xfa3c('0x25')](function(_0x4b908f){_0x45ab22[_0xfa3c('0xaa')]=_0x4b908f;return _0x45ab22;});}})[_0xfa3c('0x25')](respondWithFilteredResult(_0x58f672,_0x2c1938))[_0xfa3c('0x30')](handleError(_0x58f672,null));};exports[_0xfa3c('0xbb')]=function(_0xb37807,_0x30e0d5,_0x483a4f){return db[_0xfa3c('0x31')][_0xfa3c('0x5b')]({'where':{'id':_0xb37807[_0xfa3c('0xac')]['id']}})[_0xfa3c('0x25')](handleEntityNotFound(_0x30e0d5,null))['then'](function(_0x207d45){if(_0x207d45){return _0x207d45[_0xfa3c('0xbc')](_0xb37807[_0xfa3c('0x6e')][_0xfa3c('0xb3')],_[_0xfa3c('0xb4')](_0xb37807[_0xfa3c('0x6e')],[_0xfa3c('0xb3'),'id'])||{})[_0xfa3c('0xbd')](function(){return db['Tag']['findAll']({'attributes':['id',_0xfa3c('0x27'),_0xfa3c('0x45')],'where':{'id':_0xb37807[_0xfa3c('0x6e')][_0xfa3c('0xb3')]}});})['then'](function(_0x1b8b60){socket[_0xfa3c('0xbe')](_0xfa3c('0xbf'),{'id':Number(_0xb37807[_0xfa3c('0xac')]['id']),'tags':_0x1b8b60||[]});return{'id':Number(_0xb37807[_0xfa3c('0xac')]['id']),'tags':_0x1b8b60||[]};});}})[_0xfa3c('0x25')](respondWithResult(_0x30e0d5,null))[_0xfa3c('0x30')](handleError(_0x30e0d5,null));};exports[_0xfa3c('0xc0')]=function(_0x5a4a84,_0xfe153,_0x2e3828){return db[_0xfa3c('0x31')]['find']({'where':{'id':_0x5a4a84[_0xfa3c('0xac')]['id']}})[_0xfa3c('0x25')](handleEntityNotFound(_0xfe153,null))['then'](function(_0x11bf39){if(_0x11bf39){return _0x11bf39['removeTags'](_0x5a4a84['query'][_0xfa3c('0xb3')]);}})['then'](respondWithStatusCode(_0xfe153,null))[_0xfa3c('0x30')](handleError(_0xfe153,null));};exports[_0xfa3c('0xc1')]=function(_0x35dfee,_0x2057ba){var _0x5106aa=moment()['unix']()[_0xfa3c('0x92')]();var _0x69a894=path[_0xfa3c('0xc2')](config['root'],_0xfa3c('0xc3'),_0xfa3c('0xc4'),_0xfa3c('0xc5'));var _0x3fae24=path[_0xfa3c('0xc2')](config[_0xfa3c('0xc6')],_0xfa3c('0xc3'),_0xfa3c('0xc4'),_0xfa3c('0xc7'));var _0x683559=path[_0xfa3c('0xc2')](_0x69a894,_0x5106aa);var _0x4566a4=util[_0xfa3c('0xc8')](_0xfa3c('0xc9'),_0x35dfee[_0xfa3c('0xac')]['id'],_0x5106aa);var _0x12dae2=path[_0xfa3c('0xc2')](_0x69a894,_0x4566a4);var _0x1d8d7a=[];_0x1d8d7a[_0xfa3c('0x2e')]({'model':db[_0xfa3c('0xca')],'as':_0xfa3c('0xca'),'raw':!![]});var _0x39dc97=[{'model':db['FaxMessage'],'as':_0xfa3c('0xcb'),'attributes':['id',_0xfa3c('0x6e'),_0xfa3c('0xcc')],'include':_0x1d8d7a}];return db[_0xfa3c('0x31')][_0xfa3c('0x5b')]({'where':{'id':_0x35dfee[_0xfa3c('0xac')]['id']},'include':_0x39dc97})[_0xfa3c('0x25')](handleEntityNotFound(_0x2057ba,null))[_0xfa3c('0x25')](function(_0x2551ee){if(_0x2551ee&&_0x2551ee[_0xfa3c('0xcb')]){var _0x1aeb74=_0x2551ee[_0xfa3c('0xcd')]({'plain':!![]});fs[_0xfa3c('0xce')](_0x683559);for(var _0xf70131=0x0;_0xf70131<_0x1aeb74[_0xfa3c('0xcb')]['length'];_0xf70131++){var _0x101325=_0x1aeb74[_0xfa3c('0xcb')][_0xf70131][_0xfa3c('0xca')];if(_0x101325){var _0x18b9a9=path[_0xfa3c('0xc2')](_0x3fae24,_0x101325[_0xfa3c('0xcf')]);if(fs[_0xfa3c('0xd0')](_0x18b9a9)){fs[_0xfa3c('0xd1')](_0x18b9a9)[_0xfa3c('0xd2')](fs[_0xfa3c('0xd3')](path[_0xfa3c('0xc2')](_0x683559,_0x101325[_0xfa3c('0xcf')])));}}}return BPromise[_0xfa3c('0xd4')]()[_0xfa3c('0x25')](function(){return new BPromise(function(_0x5cb638,_0x491775){zipdir(_0x683559,{'saveTo':_0x12dae2},function(_0x51310a,_0x56b5fa){if(_0x51310a)return _0x491775(_0x51310a);return _0x5cb638(_0x56b5fa);});})[_0xfa3c('0x25')](function(){return new BPromise(function(_0x1c8065,_0x186f3e){rimraf(_0x683559,function(_0x1a12a2){if(_0x1a12a2)_0x186f3e(_0x1a12a2);return _0x1c8065();});});})['then'](function(){return _0x2057ba[_0xfa3c('0xc1')](_0x12dae2,_0x4566a4,function(_0x473ed0){if(_0x473ed0){console[_0xfa3c('0xd5')]('err',_0x473ed0);}else{fs[_0xfa3c('0xd6')](_0x12dae2);}});});});}else{return _0x2057ba[_0xfa3c('0x19')](0xc8);}})[_0xfa3c('0x30')](handleError(_0x2057ba,null));};
\ No newline at end of file
+var _0x5588=['ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','register','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','then','destroy','end','error','stack','name','send','Users','map','fullname','TagIds','Tags','split','forEach','catch','index','FaxInteraction','rawAttributes','key','model','query','filters','attributes','fields','length','hasOwnProperty','order','sort','where','pick','select','field','from','tools_tags','u.fullname','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','a.id\x20=\x20i.FaxAccountId','fax_messages','fax_interaction_has_tags','it.FaxInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','unreadMessages','value','having','`\x20>\x200','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?','find','ContactId','buildExpression','start','Tag','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','type','text','keys','compact','isEmpty','FaxAccountId','i.FaxAccountId\x20IN\x20?','concat','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.fax\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','resolve','i.FaxAccountId\x20IS\x20NOT\x20NULL','user','role','i.FaxAccountId\x20IS\x20NULL','agent','sequelize','toString','keyBy','merge','Account.key','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.lastName','Contact.lastName','c.email','Contact.phone','c.mobile','Contact.mobile','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.FaxInteractionId\x20IN\x20?','groupBy','FaxInteractionId','push','all','rows','intersection','include','options','create','body','params','addMessage','ids','findOne','FaxMessage','nolimit','format','YYYY-MM-DD\x20HH:mm:ss','findAll','addTags','setTags','omit','spread','color','emit','removeTags','unix','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','Attachment','Messages','createdAt','get','mkdirSync','basename','createReadStream','pipe','createWriteStream','log','err','unlinkSync','eml-format','request-promise','moment','bluebird','mustache','util','path','sox'];(function(_0x13ba66,_0x55c8f0){var _0x5d573a=function(_0x512ee1){while(--_0x512ee1){_0x13ba66['push'](_0x13ba66['shift']());}};_0x5d573a(++_0x55c8f0);}(_0x5588,0x1b0));var _0x8558=function(_0x3709c2,_0x25f19e){_0x3709c2=_0x3709c2-0x0;var _0x4b09df=_0x5588[_0x3709c2];return _0x4b09df;};'use strict';var emlformat=require(_0x8558('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x8558('0x1'));var moment=require(_0x8558('0x2'));var BPromise=require(_0x8558('0x3'));var Mustache=require(_0x8558('0x4'));var util=require(_0x8558('0x5'));var path=require(_0x8558('0x6'));var sox=require(_0x8558('0x7'));var csv=require('to-csv');var ejs=require(_0x8558('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8558('0x9'));var squel=require(_0x8558('0xa'));var crypto=require(_0x8558('0xb'));var jsforce=require(_0x8558('0xc'));var deskjs=require(_0x8558('0xd'));var toCsv=require(_0x8558('0xe'));var querystring=require(_0x8558('0xf'));var Papa=require('papaparse');var Redis=require(_0x8558('0x10'));var authService=require(_0x8558('0x11'));var qs=require(_0x8558('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8558('0x13'));var logger=require(_0x8558('0x14'))(_0x8558('0x15'));var utils=require('../../config/utils');var config=require(_0x8558('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x8558('0x17'))['db'];config[_0x8558('0x18')]=_[_0x8558('0x19')](config['redis'],{'host':_0x8558('0x1a'),'port':0x18eb});var socket=require(_0x8558('0x1b'))(new Redis(config[_0x8558('0x18')]));require(_0x8558('0x1c'))[_0x8558('0x1d')](socket);function respondWithStatusCode(_0x1489ee,_0x12dc83){_0x12dc83=_0x12dc83||0xcc;return function(_0x16060e){if(_0x16060e){return _0x1489ee[_0x8558('0x1e')](_0x12dc83);}return _0x1489ee[_0x8558('0x1f')](_0x12dc83)['end']();};}function respondWithResult(_0x4b247e,_0x4addf4){_0x4addf4=_0x4addf4||0xc8;return function(_0x5646ba){if(_0x5646ba){return _0x4b247e[_0x8558('0x1f')](_0x4addf4)[_0x8558('0x20')](_0x5646ba);}};}function respondWithFilteredResult(_0xdbe062,_0x287c3a){return function(_0x30d26b){if(_0x30d26b){var _0x24d026=typeof _0x287c3a[_0x8558('0x21')]==='undefined'&&typeof _0x287c3a[_0x8558('0x22')]===_0x8558('0x23');var _0x2767cb=_0x30d26b[_0x8558('0x24')];var _0x532718=_0x24d026?0x0:_0x287c3a['offset'];var _0x29d7bf=_0x24d026?_0x30d26b['count']:_0x287c3a[_0x8558('0x21')]+_0x287c3a[_0x8558('0x22')];var _0x259d2a;if(_0x29d7bf>=_0x2767cb){_0x29d7bf=_0x2767cb;_0x259d2a=0xc8;}else{_0x259d2a=0xce;}_0xdbe062[_0x8558('0x1f')](_0x259d2a);return _0xdbe062[_0x8558('0x25')](_0x8558('0x26'),_0x532718+'-'+_0x29d7bf+'/'+_0x2767cb)[_0x8558('0x20')](_0x30d26b);}return null;};}function patchUpdates(_0x5072d6){return function(_0x26a672){try{jsonpatch[_0x8558('0x27')](_0x26a672,_0x5072d6,!![]);}catch(_0x44d11d){return BPromise[_0x8558('0x28')](_0x44d11d);}return _0x26a672['save']();};}function saveUpdates(_0x2393fa,_0x3a4d59){return function(_0x3e6778){if(_0x3e6778){return _0x3e6778[_0x8558('0x29')](_0x2393fa)[_0x8558('0x2a')](function(_0x4ce30a){return _0x4ce30a;});}return null;};}function removeEntity(_0x98c66f,_0x57d392){return function(_0x4a9eca){if(_0x4a9eca){return _0x4a9eca[_0x8558('0x2b')]()[_0x8558('0x2a')](function(){_0x98c66f[_0x8558('0x1f')](0xcc)[_0x8558('0x2c')]();});}};}function handleEntityNotFound(_0xcd45db,_0x1a592d){return function(_0x18d6bd){if(!_0x18d6bd){_0xcd45db[_0x8558('0x1e')](0x194);}return _0x18d6bd;};}function handleError(_0x65af5,_0x4bc332){_0x4bc332=_0x4bc332||0x1f4;return function(_0x114095){logger[_0x8558('0x2d')](_0x114095[_0x8558('0x2e')]);if(_0x114095['name']){delete _0x114095[_0x8558('0x2f')];}_0x65af5[_0x8558('0x1f')](_0x4bc332)[_0x8558('0x30')](_0x114095);};}function getInteractionUsers(_0x53a75e,_0x56bc65){return new BPromise(function(_0x10577c,_0x4bd44e){try{if(_0x56bc65[_0x53a75e['id']]){_0x53a75e[_0x8558('0x31')]=_[_0x8558('0x32')](_0x56bc65[_0x53a75e['id']],function(_0x53dde7){return{'id':_0x53dde7['id'],'fullname':_0x53dde7[_0x8558('0x33')]};});}}catch(_0x3684a1){_0x4bd44e(_0x3684a1);}_0x10577c(_0x53a75e);});}function getInteractionTags(_0x1a9e09,_0x207ddb){return new BPromise(function(_0x151078,_0x3ed142){try{if(_0x1a9e09[_0x8558('0x34')]){_0x1a9e09[_0x8558('0x35')]=[];_0x1a9e09['TagIds'][_0x8558('0x36')](',')[_0x8558('0x37')](function(_0x44cad1){_0x1a9e09[_0x8558('0x35')]['push'](_0x207ddb[_0x44cad1]);});}delete _0x1a9e09[_0x8558('0x34')];}catch(_0x3dd33f){_0x3ed142(_0x3dd33f);}_0x151078(_0x1a9e09);});}function updateFaxInteraction(_0x507c60,_0x5087fd,_0x4825e1){return new BPromise(function(_0x31e6eb,_0x598474){return getInteractionUsers(_0x507c60,_0x4825e1)['then'](function(_0x8114cf){return getInteractionTags(_0x8114cf,_0x5087fd);})[_0x8558('0x2a')](function(_0x294573){_0x31e6eb(_0x294573);})[_0x8558('0x38')](function(_0x313d5e){_0x598474(_0x313d5e);});});}exports[_0x8558('0x39')]=function(_0x4ec359,_0x2af79c){var _0x17949a={},_0x4e0929={},_0x38a65e={'count':0x0,'rows':[]};var _0x4ac717=_[_0x8558('0x32')](db[_0x8558('0x3a')][_0x8558('0x3b')],function(_0x17e066){return{'name':_0x17e066['fieldName'],'type':_0x17e066['type'][_0x8558('0x3c')]};});_0x4e0929[_0x8558('0x3d')]=_[_0x8558('0x32')](_0x4ac717,_0x8558('0x2f'));_0x4e0929['query']=_['keys'](_0x4ec359[_0x8558('0x3e')]);_0x4e0929[_0x8558('0x3f')]=_['intersection'](_0x4e0929['model'],_0x4e0929[_0x8558('0x3e')]);_0x17949a[_0x8558('0x40')]=_['intersection'](_0x4e0929[_0x8558('0x3d')],qs[_0x8558('0x41')](_0x4ec359[_0x8558('0x3e')][_0x8558('0x41')]));_0x17949a['attributes']=_0x17949a[_0x8558('0x40')][_0x8558('0x42')]?_0x17949a['attributes']:_0x4e0929[_0x8558('0x3d')];if(!_0x4ec359[_0x8558('0x3e')][_0x8558('0x43')]('nolimit')){_0x17949a[_0x8558('0x22')]=qs[_0x8558('0x22')](_0x4ec359[_0x8558('0x3e')][_0x8558('0x22')]);_0x17949a['offset']=qs[_0x8558('0x21')](_0x4ec359[_0x8558('0x3e')][_0x8558('0x21')]);}_0x17949a[_0x8558('0x44')]=qs[_0x8558('0x45')](_0x4ec359[_0x8558('0x3e')]['sort']);_0x17949a[_0x8558('0x46')]=qs[_0x8558('0x3f')](_[_0x8558('0x47')](_0x4ec359['query'],_0x4e0929[_0x8558('0x3f')]),_0x4ac717);var _0x270042=[];var _0x11fb57=squel[_0x8558('0x48')]()['field']('id')[_0x8558('0x49')]('name')[_0x8558('0x49')]('color')[_0x8558('0x4a')](_0x8558('0x4b'));var _0x2af5f0=squel[_0x8558('0x48')]()[_0x8558('0x49')]('u.id')[_0x8558('0x49')](_0x8558('0x4c'))['field'](_0x8558('0x4d'))[_0x8558('0x4a')](_0x8558('0x4e'),'ui')['left_join'](_0x8558('0x4f'),'u',_0x8558('0x50'));var _0x3d5217=squel['select']()[_0x8558('0x4a')](_0x8558('0x51'),'i')['left_join'](_0x8558('0x52'),'c',_0x8558('0x53'))['left_join'](_0x8558('0x4f'),'o',_0x8558('0x54'))[_0x8558('0x55')](_0x8558('0x56'),'a',_0x8558('0x57'))[_0x8558('0x55')](_0x8558('0x58'),'me','me.FaxInteractionId\x20=\x20i.id')[_0x8558('0x55')](_0x8558('0x59'),'it',_0x8558('0x5a'))['left_join'](_0x8558('0x4b'),'t',_0x8558('0x5b'));var _0x2d1655=squel[_0x8558('0x5c')]();var _0x1b64ec=[];var _0x2c6a33=squel[_0x8558('0x5c')]();var _0x3e07f5;if(_0x4ec359[_0x8558('0x3e')][_0x8558('0x5d')]){_0x3e07f5=as[_0x8558('0x5e')](_0x4ec359[_0x8558('0x3e')]['search']);var _0x2f0416=_0x3e07f5[_0x8558('0x5f')];for(var _0x3a1c54=0x0;_0x3a1c54<_0x3e07f5[_0x8558('0x60')]['length'];_0x3a1c54++){var _0xcaa9d4=_0x3e07f5[_0x8558('0x60')][_0x3a1c54];var _0x154202='i';var _0x3b5fc2=_['find'](_0x4ac717,['name',_0xcaa9d4[_0x8558('0x49')]]);if(!_0x3b5fc2){switch(_0xcaa9d4[_0x8558('0x49')]){case _0x8558('0x61'):if(_0xcaa9d4[_0x8558('0x62')]==0x1){_0x3d5217[_0x8558('0x63')]('`'+_0xcaa9d4[_0x8558('0x49')]+'`\x20=\x200');}else{_0x3d5217[_0x8558('0x63')]('`'+_0xcaa9d4[_0x8558('0x49')]+_0x8558('0x64'));}break;case'Contact':if(_0xcaa9d4[_0x8558('0x65')]==='$substring'){if(_0xcaa9d4[_0x8558('0x62')][_0x8558('0x36')]('\x20')['length']>0x1){_0x2d1655[_0x2f0416](_0x8558('0x66'),qs[_0x8558('0x67')](_0xcaa9d4['value']),null);}else{var _0x3913cf='%'+_0xcaa9d4['value']+'%';_0x2d1655[_0x2f0416](_0x8558('0x68'),_0x3913cf,_0x3913cf,_0x3913cf);}}else{_0x3b5fc2=_[_0x8558('0x69')](_0x4ac717,[_0x8558('0x2f'),_0x8558('0x6a')]);_0xcaa9d4['field']='ContactId';_0x57bc5d=as[_0x8558('0x6b')](_0x154202,_0x3b5fc2['type'],_0xcaa9d4);_0x2d1655[_0x2f0416](_0x57bc5d['text'],_0x57bc5d['value'][_0x8558('0x6c')],_0x57bc5d[_0x8558('0x62')][_0x8558('0x2c')]);}break;case _0x8558('0x6d'):var _0x5704a0=_0xcaa9d4['value'][_0x8558('0x36')](',')[_0x8558('0x32')](function(_0x578cdb){return Number(_0x578cdb);});_0x5704a0[_0x8558('0x37')](function(_0x5bbac0){_0x2c6a33['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x5bbac0+',%');});_0x1b64ec=_[_0x8558('0x6e')](_0x1b64ec,_0x5704a0);break;case _0x8558('0x6f'):if(_0xcaa9d4[_0x8558('0x65')]==='$substring'){_0x2d1655[_0x2f0416](_0x8558('0x70'),'%'+_0xcaa9d4['value']+'%',null);}else{_0x3b5fc2=_[_0x8558('0x69')](_0x4ac717,[_0x8558('0x2f'),_0x8558('0x71')]);_0xcaa9d4['field']=_0x8558('0x71');_0x57bc5d=as[_0x8558('0x6b')](_0x154202,_0x3b5fc2[_0x8558('0x72')],_0xcaa9d4);_0x2d1655[_0x2f0416](_0x57bc5d['text'],_0x57bc5d[_0x8558('0x62')][_0x8558('0x6c')],_0x57bc5d[_0x8558('0x62')]['end']);}break;case'body':_0x57bc5d=as[_0x8558('0x6b')]('me',null,_0xcaa9d4);_0x2d1655[_0x2f0416](_0x57bc5d[_0x8558('0x73')],_0x57bc5d[_0x8558('0x62')][_0x8558('0x6c')],_0x57bc5d[_0x8558('0x62')][_0x8558('0x2c')]);break;}}else{var _0x57bc5d=as['buildExpression'](_0x154202,_0x3b5fc2[_0x8558('0x72')],_0xcaa9d4);_0x2d1655[_0x2f0416](_0x57bc5d['text'],_0x57bc5d[_0x8558('0x62')][_0x8558('0x6c')],_0x57bc5d['value'][_0x8558('0x2c')]);}}}else{var _0x1fa86b=_(_0x4ec359[_0x8558('0x3e')])[_0x8558('0x74')]()[_0x8558('0x32')](function(_0x31af69){return _['some'](_0x4ac717,[_0x8558('0x2f'),_0x31af69])?_0x31af69:undefined;})[_0x8558('0x75')]()[_0x8558('0x62')]();if(!_[_0x8558('0x76')](_0x1fa86b)){_0x1fa86b[_0x8558('0x37')](function(_0x2f666c){if(_0x2f666c===_0x8558('0x77')){_0x3d5217[_0x8558('0x46')](_0x8558('0x78'),[][_0x8558('0x79')](_0x4ec359[_0x8558('0x3e')][_0x2f666c]));}else if(_0x2f666c==='createdAt'){var _0x2fa4e7=JSON[_0x8558('0x7a')](_0x4ec359[_0x8558('0x3e')][_0x2f666c])[_0x8558('0x7b')];var _0x35add9=JSON[_0x8558('0x7a')](_0x4ec359[_0x8558('0x3e')][_0x2f666c])[_0x8558('0x7c')];_0x3d5217['where'](_0x8558('0x7d'),_0x2fa4e7,_0x35add9);}else{if(_0x4ec359[_0x8558('0x3e')][_0x2f666c]===_0x8558('0x7e')){_0x3d5217[_0x8558('0x46')]('i.'+_0x2f666c+_0x8558('0x7f'));}else{_0x3d5217['where']('i.'+_0x2f666c+'\x20=\x20?',_0x4ec359[_0x8558('0x3e')][_0x2f666c]);}}});}if(_0x4ec359[_0x8558('0x3e')][_0x8558('0x80')]){if(_0x4ec359[_0x8558('0x3e')][_0x8558('0x80')]==0x1){_0x3d5217[_0x8558('0x63')](_0x8558('0x81'));}else{_0x3d5217[_0x8558('0x63')](_0x8558('0x82'));}}if(_0x4ec359[_0x8558('0x3e')][_0x8558('0x83')]){_0x1b64ec=_[_0x8558('0x84')](_0x4ec359['query'][_0x8558('0x83')])?_0x4ec359[_0x8558('0x3e')]['tag']:new Array(_0x4ec359[_0x8558('0x3e')]['tag']);_0x1b64ec['forEach'](function(_0x415f6b){_0x2c6a33['or'](_0x8558('0x85'),'%,'+_0x415f6b+',%');});}if(_0x4ec359[_0x8558('0x3e')]['filter']){var _0x33315e=_0x4ec359[_0x8558('0x3e')][_0x8558('0x86')][_0x8558('0x87')]('\x5c','\x5c\x5c')[_0x8558('0x87')](/'/g,'\x27\x27');if(qs[_0x8558('0x88')](_0x33315e)){_0x2d1655['or'](_0x8558('0x89'),_0x33315e+'%')['or'](_0x8558('0x8a'),_0x33315e+'%');}_0x2d1655['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x33315e+'%');}}_0x3d5217['where'](_0x2d1655);_0x3d5217[_0x8558('0x8b')](_0x8558('0x8c'));var _0x5d66fe={'type':db[_0x8558('0x8d')][_0x8558('0x8e')]['SELECT'],'raw':!![]};var _0x2a9d11=_0x3d5217[_0x8558('0x8f')]();_0x2a9d11['field'](_0x8558('0x8c'));_0x2a9d11[_0x8558('0x49')](_0x8558('0x90'),'unreadMessages');if(_0x17949a[_0x8558('0x44')]){_0x17949a['order'][_0x8558('0x37')](function(_0x53b3ca){var _0x57f306=_0x53b3ca[0x0]===_0x8558('0x91')?_0x53b3ca[0x0]:'i.'+_0x53b3ca[0x0];_0x3d5217['order'](_0x57f306,_0x53b3ca[0x1]===_0x8558('0x92')?![]:!![]);});}if(!_['isEmpty'](_0x1b64ec)){_0x3d5217[_0x8558('0x63')](_0x2c6a33);_0x2a9d11[_0x8558('0x46')]('t.id\x20IN\x20?',_0x1b64ec);}BPromise[_0x8558('0x93')]()['then'](function(){if(!_0x3e07f5){if(_0x4ec359[_0x8558('0x3e')][_0x8558('0x77')])return;_0x2a9d11[_0x8558('0x46')]('i.FaxAccountId\x20IS\x20NOT\x20NULL');_0x3d5217[_0x8558('0x46')](_0x8558('0x94'));return;}if(_0x4ec359[_0x8558('0x95')][_0x8558('0x96')]!=='agent')return;return _0x4ec359[_0x8558('0x95')]['getFaxAccounts']({'attributes':['id'],'raw':!![]})[_0x8558('0x2a')](function(_0x9d2f41){if(_[_0x8558('0x76')](_0x9d2f41)){_0x2a9d11['where'](_0x8558('0x97'));_0x3d5217['where'](_0x8558('0x97'));}else{_0x2a9d11[_0x8558('0x46')](_0x8558('0x78'),_[_0x8558('0x32')](_0x9d2f41,'id'));_0x3d5217[_0x8558('0x46')]('i.FaxAccountId\x20IN\x20?',_[_0x8558('0x32')](_0x9d2f41,'id'));}});})[_0x8558('0x2a')](function(){if(_0x4ec359[_0x8558('0x95')][_0x8558('0x96')]===_0x8558('0x98')&&!_0x3e07f5&&!_0x4ec359[_0x8558('0x3e')][_0x8558('0x77')])return[];return db[_0x8558('0x99')][_0x8558('0x3e')](_0x2a9d11[_0x8558('0x9a')](),_0x5d66fe);})[_0x8558('0x2a')](function(_0xdd817a){_0x38a65e[_0x8558('0x24')]=_0xdd817a[_0x8558('0x42')];if(_0x38a65e[_0x8558('0x24')]===0x0)return[];return db[_0x8558('0x99')][_0x8558('0x3e')](_0x11fb57['toString'](),_0x5d66fe)[_0x8558('0x2a')](function(_0x50173d){_0x270042=_[_0x8558('0x9b')](_0x50173d,'id');_0x5d66fe=_[_0x8558('0x9c')](_0x5d66fe,{'model':db[_0x8558('0x3a')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x4ec359[_0x8558('0x3e')][_0x8558('0x41')]){_0x17949a[_0x8558('0x40')][_0x8558('0x37')](function(_0x13f4a6){_0x3d5217[_0x8558('0x49')]('i.'+_0x13f4a6);});}else{_0x3d5217[_0x8558('0x49')](_0x8558('0x90'),'unreadMessages');_0x3d5217['field']('a.key',_0x8558('0x9d'));_0x3d5217[_0x8558('0x49')]('a.mandatoryDisposition',_0x8558('0x9e'));_0x3d5217['field'](_0x8558('0x9f'),_0x8558('0x91'));_0x3d5217[_0x8558('0x49')](_0x8558('0xa0'));_0x3d5217[_0x8558('0x49')]('c.firstName','Contact.firstName');_0x3d5217['field'](_0x8558('0xa1'),_0x8558('0xa2'));_0x3d5217[_0x8558('0x49')](_0x8558('0xa3'),'Contact.email');_0x3d5217[_0x8558('0x49')]('c.phone',_0x8558('0xa4'));_0x3d5217[_0x8558('0x49')](_0x8558('0xa5'),_0x8558('0xa6'));_0x3d5217[_0x8558('0x49')]('c.fax',_0x8558('0xa7'));_0x3d5217[_0x8558('0x49')](_0x8558('0xa8'),_0x8558('0xa9'));_0x3d5217[_0x8558('0x49')](_0x8558('0xaa'),_0x8558('0xab'));_0x3d5217[_0x8558('0x49')](_0x8558('0xac'),_0x8558('0x34'));}if(_0x17949a[_0x8558('0x22')])_0x3d5217[_0x8558('0x22')](_0x17949a[_0x8558('0x22')]);if(_0x17949a['offset'])_0x3d5217[_0x8558('0x21')](_0x17949a[_0x8558('0x21')]);return db[_0x8558('0x99')][_0x8558('0x3e')](_0x3d5217['toString'](),_0x5d66fe);})[_0x8558('0x2a')](function(_0x26b5c0){if(_0x26b5c0[_0x8558('0x42')]>0x0)_0x2af5f0['where'](_0x8558('0xad'),_[_0x8558('0x32')](_0x26b5c0,'id'));return db[_0x8558('0x99')][_0x8558('0x3e')](_0x2af5f0[_0x8558('0x9a')](),_0x5d66fe)[_0x8558('0x2a')](function(_0x340f7a){var _0x565f23=_[_0x8558('0xae')](_0x340f7a,_0x8558('0xaf'));var _0x580ce1=[];_0x26b5c0['forEach'](function(_0x1494a4){_0x580ce1[_0x8558('0xb0')](updateFaxInteraction(_0x1494a4,_0x270042,_0x565f23));});return BPromise[_0x8558('0xb1')](_0x580ce1);});});})[_0x8558('0x2a')](function(_0x46e8e0){_0x38a65e[_0x8558('0xb2')]=_0x46e8e0;return _0x38a65e;})[_0x8558('0x2a')](respondWithFilteredResult(_0x2af79c,_0x17949a))[_0x8558('0x38')](handleError(_0x2af79c,null));};exports['show']=function(_0x23a720,_0x309968){var _0x150e18={'raw':![],'where':{'id':_0x23a720['params']['id']}},_0x1e185f={};_0x1e185f['model']=_['keys'](db[_0x8558('0x3a')][_0x8558('0x3b')]);_0x1e185f[_0x8558('0x3e')]=_['keys'](_0x23a720[_0x8558('0x3e')]);_0x1e185f[_0x8558('0x3f')]=_[_0x8558('0xb3')](_0x1e185f[_0x8558('0x3d')],_0x1e185f[_0x8558('0x3e')]);_0x150e18[_0x8558('0x40')]=_[_0x8558('0xb3')](_0x1e185f['model'],qs[_0x8558('0x41')](_0x23a720[_0x8558('0x3e')][_0x8558('0x41')]));_0x150e18[_0x8558('0x40')]=_0x150e18[_0x8558('0x40')][_0x8558('0x42')]?_0x150e18['attributes']:_0x1e185f['model'];if(_0x23a720[_0x8558('0x3e')]['includeAll']){_0x150e18[_0x8558('0xb4')]=[{'all':!![]}];}_0x150e18=_[_0x8558('0x9c')]({},_0x150e18,_0x23a720[_0x8558('0xb5')]);return db[_0x8558('0x3a')][_0x8558('0x69')](_0x150e18)[_0x8558('0x2a')](handleEntityNotFound(_0x309968,null))[_0x8558('0x2a')](respondWithResult(_0x309968,null))[_0x8558('0x38')](handleError(_0x309968,null));};exports[_0x8558('0xb6')]=function(_0x328e79,_0x3177fd){return db['FaxInteraction']['create'](_0x328e79['body'],{})[_0x8558('0x2a')](respondWithResult(_0x3177fd,0xc9))[_0x8558('0x38')](handleError(_0x3177fd,null));};exports[_0x8558('0x29')]=function(_0x242e56,_0x93c177){if(_0x242e56[_0x8558('0xb7')]['id']){delete _0x242e56[_0x8558('0xb7')]['id'];}return db[_0x8558('0x3a')][_0x8558('0x69')]({'where':{'id':_0x242e56['params']['id']}})[_0x8558('0x2a')](handleEntityNotFound(_0x93c177,null))[_0x8558('0x2a')](saveUpdates(_0x242e56[_0x8558('0xb7')],null))[_0x8558('0x2a')](respondWithResult(_0x93c177,null))[_0x8558('0x38')](handleError(_0x93c177,null));};exports[_0x8558('0x2b')]=function(_0x32ef0b,_0x47ca28){return db['FaxInteraction']['find']({'where':{'id':_0x32ef0b[_0x8558('0xb8')]['id']}})[_0x8558('0x2a')](handleEntityNotFound(_0x47ca28,null))['then'](removeEntity(_0x47ca28,null))[_0x8558('0x38')](handleError(_0x47ca28,null));};exports['describe']=function(_0x4b6368,_0x2b6b3e){return db[_0x8558('0x3a')]['describe']()[_0x8558('0x2a')](respondWithResult(_0x2b6b3e,null))[_0x8558('0x38')](handleError(_0x2b6b3e,null));};exports[_0x8558('0xb9')]=function(_0xe3198a,_0x48dcf5,_0x8fbe64){return db['FaxMessage'][_0x8558('0x69')]({'where':{'id':_0xe3198a['params']['id']}})[_0x8558('0x2a')](handleEntityNotFound(_0x48dcf5,null))[_0x8558('0x2a')](function(_0x11cf0d){if(_0x11cf0d){return _0x11cf0d[_0x8558('0xb9')](_0xe3198a[_0x8558('0xb7')][_0x8558('0xba')],_['omit'](_0xe3198a[_0x8558('0xb7')],['ids','id'])||{});}})[_0x8558('0x2a')](respondWithResult(_0x48dcf5,null))[_0x8558('0x38')](handleError(_0x48dcf5,null));};exports['getMessages']=function(_0x50bbb5,_0x39ff20,_0x5db6d7){var _0x1e6147={'raw':![],'where':{}};var _0x5629a3={};var _0x287496={'count':0x0,'rows':[]};return db[_0x8558('0x3a')][_0x8558('0xbb')]({'where':{'id':_0x50bbb5[_0x8558('0xb8')]['id']}})['then'](handleEntityNotFound(_0x39ff20,null))['then'](function(_0x260c77){if(_0x260c77){_0x5629a3[_0x8558('0x3d')]=_['keys'](db[_0x8558('0xbc')][_0x8558('0x3b')]);_0x5629a3[_0x8558('0x3e')]=_['keys'](_0x50bbb5[_0x8558('0x3e')]);_0x5629a3['filters']=_[_0x8558('0xb3')](_0x5629a3[_0x8558('0x3d')],_0x5629a3[_0x8558('0x3e')]);_0x1e6147['attributes']=_[_0x8558('0xb3')](_0x5629a3[_0x8558('0x3d')],qs[_0x8558('0x41')](_0x50bbb5['query']['fields']));_0x1e6147['attributes']=_0x1e6147[_0x8558('0x40')][_0x8558('0x42')]?_0x1e6147[_0x8558('0x40')]:_0x5629a3[_0x8558('0x3d')];if(!_0x50bbb5[_0x8558('0x3e')][_0x8558('0x43')](_0x8558('0xbd'))){_0x1e6147[_0x8558('0x22')]=qs[_0x8558('0x22')](_0x50bbb5[_0x8558('0x3e')][_0x8558('0x22')]);_0x1e6147['offset']=qs[_0x8558('0x21')](_0x50bbb5[_0x8558('0x3e')][_0x8558('0x21')]);}_0x1e6147[_0x8558('0x44')]=qs[_0x8558('0x45')](_0x50bbb5[_0x8558('0x3e')][_0x8558('0x45')]);_0x1e6147['where']=qs['filters'](_[_0x8558('0x47')](_0x50bbb5[_0x8558('0x3e')],_0x5629a3[_0x8558('0x3f')]));_0x1e6147[_0x8558('0x46')][_0x8558('0xaf')]=_0x260c77['id'];if(_0x50bbb5[_0x8558('0x3e')][_0x8558('0x86')]){_0x1e6147[_0x8558('0x46')]=_[_0x8558('0x9c')](_0x1e6147[_0x8558('0x46')],{'$or':_[_0x8558('0x32')](_0x1e6147['attributes'],function(_0x16fc6f){var _0x101c4a={};_0x101c4a[_0x16fc6f]={'$like':'%'+_0x50bbb5['query'][_0x8558('0x86')]+'%'};return _0x101c4a;})});}if(_0x50bbb5[_0x8558('0x3e')][_0x8558('0x7b')]){var _0x30d01f=_0x50bbb5[_0x8558('0x3e')]['$gte'][_0x8558('0x36')](',');var _0x20b157={};_0x20b157[_0x30d01f[0x0]]={'$gte':moment(_0x30d01f[0x1])[_0x8558('0xbe')](_0x8558('0xbf'))};_0x1e6147['where']=_[_0x8558('0x9c')](_0x1e6147[_0x8558('0x46')],_0x20b157);}_0x1e6147=_['merge']({},_0x1e6147,_0x50bbb5['options']);return db[_0x8558('0xbc')][_0x8558('0x24')]({'where':_0x1e6147[_0x8558('0x46')]})[_0x8558('0x2a')](function(_0x4d5563){_0x287496[_0x8558('0x24')]=_0x4d5563;if(_0x50bbb5[_0x8558('0x3e')]['includeAll']){_0x1e6147[_0x8558('0xb4')]=[{'all':!![]}];}return db['FaxMessage'][_0x8558('0xc0')](_0x1e6147);})[_0x8558('0x2a')](function(_0x183991){_0x287496['rows']=_0x183991;return _0x287496;});}})['then'](respondWithFilteredResult(_0x39ff20,_0x1e6147))[_0x8558('0x38')](handleError(_0x39ff20,null));};exports[_0x8558('0xc1')]=function(_0x339819,_0x53d8b9,_0x38562c){return db[_0x8558('0x3a')][_0x8558('0x69')]({'where':{'id':_0x339819['params']['id']}})[_0x8558('0x2a')](handleEntityNotFound(_0x53d8b9,null))[_0x8558('0x2a')](function(_0x27b980){if(_0x27b980){return _0x27b980[_0x8558('0xc2')](_0x339819[_0x8558('0xb7')][_0x8558('0xba')],_[_0x8558('0xc3')](_0x339819[_0x8558('0xb7')],[_0x8558('0xba'),'id'])||{})[_0x8558('0xc4')](function(){return db['Tag'][_0x8558('0xc0')]({'attributes':['id',_0x8558('0x2f'),_0x8558('0xc5')],'where':{'id':_0x339819[_0x8558('0xb7')]['ids']}});})[_0x8558('0x2a')](function(_0x4f9e3e){socket[_0x8558('0xc6')]('faxInteractionTags:save',{'id':Number(_0x339819['params']['id']),'tags':_0x4f9e3e||[]});return{'id':Number(_0x339819[_0x8558('0xb8')]['id']),'tags':_0x4f9e3e||[]};});}})[_0x8558('0x2a')](respondWithResult(_0x53d8b9,null))[_0x8558('0x38')](handleError(_0x53d8b9,null));};exports['removeTags']=function(_0x16a759,_0x594957,_0xf8508f){return db[_0x8558('0x3a')][_0x8558('0x69')]({'where':{'id':_0x16a759['params']['id']}})[_0x8558('0x2a')](handleEntityNotFound(_0x594957,null))[_0x8558('0x2a')](function(_0x43720c){if(_0x43720c){return _0x43720c[_0x8558('0xc7')](_0x16a759[_0x8558('0x3e')][_0x8558('0xba')]);}})['then'](respondWithStatusCode(_0x594957,null))[_0x8558('0x38')](handleError(_0x594957,null));};exports['download']=function(_0xd45670,_0x8d258c){var _0x362126=moment()[_0x8558('0xc8')]()['toString']();var _0x40ab9e=path[_0x8558('0xc9')](config[_0x8558('0xca')],_0x8558('0xcb'),_0x8558('0xcc'),_0x8558('0xcd'));var _0x37772c=path['join'](config[_0x8558('0xca')],_0x8558('0xcb'),_0x8558('0xcc'),_0x8558('0xce'));var _0x20230c=path[_0x8558('0xc9')](_0x40ab9e,_0x362126);var _0x439fa2=util[_0x8558('0xbe')](_0x8558('0xcf'),_0xd45670[_0x8558('0xb8')]['id'],_0x362126);var _0x1cd37e=path['join'](_0x40ab9e,_0x439fa2);var _0x36b226=[];_0x36b226[_0x8558('0xb0')]({'model':db['Attachment'],'as':_0x8558('0xd0'),'raw':!![]});var _0x47d639=[{'model':db['FaxMessage'],'as':_0x8558('0xd1'),'attributes':['id',_0x8558('0xb7'),_0x8558('0xd2')],'include':_0x36b226}];return db['FaxInteraction'][_0x8558('0x69')]({'where':{'id':_0xd45670['params']['id']},'include':_0x47d639})[_0x8558('0x2a')](handleEntityNotFound(_0x8d258c,null))['then'](function(_0x55f803){if(_0x55f803&&_0x55f803[_0x8558('0xd1')]){var _0x4a2c3d=_0x55f803[_0x8558('0xd3')]({'plain':!![]});fs[_0x8558('0xd4')](_0x20230c);for(var _0x1eaa92=0x0;_0x1eaa92<_0x4a2c3d[_0x8558('0xd1')][_0x8558('0x42')];_0x1eaa92++){var _0x2341b4=_0x4a2c3d[_0x8558('0xd1')][_0x1eaa92][_0x8558('0xd0')];if(_0x2341b4){var _0x2b4fb0=path[_0x8558('0xc9')](_0x37772c,_0x2341b4[_0x8558('0xd5')]);if(fs['existsSync'](_0x2b4fb0)){fs[_0x8558('0xd6')](_0x2b4fb0)[_0x8558('0xd7')](fs[_0x8558('0xd8')](path[_0x8558('0xc9')](_0x20230c,_0x2341b4[_0x8558('0xd5')])));}}}return BPromise[_0x8558('0x93')]()[_0x8558('0x2a')](function(){return new BPromise(function(_0x5e4e54,_0x48a586){zipdir(_0x20230c,{'saveTo':_0x1cd37e},function(_0x13b26f,_0x1c91f0){if(_0x13b26f)return _0x48a586(_0x13b26f);return _0x5e4e54(_0x1c91f0);});})[_0x8558('0x2a')](function(){return new BPromise(function(_0x3af7e0,_0x2f7f3c){rimraf(_0x20230c,function(_0x345cf4){if(_0x345cf4)_0x2f7f3c(_0x345cf4);return _0x3af7e0();});});})[_0x8558('0x2a')](function(){return _0x8d258c['download'](_0x1cd37e,_0x439fa2,function(_0x511841){if(_0x511841){console[_0x8558('0xd9')](_0x8558('0xda'),_0x511841);}else{fs[_0x8558('0xdb')](_0x1cd37e);}});});});}else{return _0x8d258c[_0x8558('0x1e')](0xc8);}})['catch'](handleError(_0x8d258c,null));};
\ No newline at end of file
index 4ae8325..12cb5cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd109=['hasOwnProperty','exports','../../mysqldb','FaxInteraction','setMaxListeners','save','update','remove','then','setDataValue','Users','length','emit'];(function(_0x56f6c9,_0x341c49){var _0x36d779=function(_0x59e3b8){while(--_0x59e3b8){_0x56f6c9['push'](_0x56f6c9['shift']());}};_0x36d779(++_0x341c49);}(_0xd109,0xab));var _0x9d10=function(_0x7e2eb0,_0x17cd58){_0x7e2eb0=_0x7e2eb0-0x0;var _0xd92de4=_0xd109[_0x7e2eb0];return _0xd92de4;};'use strict';var EventEmitter=require('events');var FaxInteraction=require(_0x9d10('0x0'))['db'][_0x9d10('0x1')];var FaxMessage=require('../../mysqldb')['db']['FaxMessage'];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x9d10('0x2')](0x0);var events={'afterCreate':_0x9d10('0x3'),'afterUpdate':_0x9d10('0x4'),'afterDestroy':_0x9d10('0x5')};function emitEvent(_0x5cbd11){return function(_0x1c500c,_0x27bc18,_0x12ef20){_0x1c500c['getUsers']({'attributes':['id'],'raw':!![]})[_0x9d10('0x6')](function(_0x3ea777){_0x1c500c[_0x9d10('0x7')](_0x9d10('0x8'),_0x3ea777['map'](function(_0x1b6963){return{'id':_0x1b6963['id']};}));return FaxMessage['findAll']({'where':{'FaxInteractionId':_0x1c500c['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x4ebb8b){_0x1c500c[_0x9d10('0x7')]('unreadMessages',_0x4ebb8b[_0x9d10('0x9')]);FaxInteractionEvents[_0x9d10('0xa')](_0x5cbd11+':'+_0x1c500c['id'],_0x1c500c);FaxInteractionEvents[_0x9d10('0xa')](_0x5cbd11,_0x1c500c);_0x12ef20(null);})['catch'](_0x12ef20(null));};}for(var e in events){if(events[_0x9d10('0xb')](e)){var event=events[e];FaxInteraction['hook'](e,emitEvent(event));}}module[_0x9d10('0xc')]=FaxInteractionEvents;
\ No newline at end of file
+var _0x1304=['then','setDataValue','Users','map','findAll','unreadMessages','length','emit','hasOwnProperty','exports','events','../../mysqldb','setMaxListeners','update','remove','getUsers'];(function(_0x1f8a2a,_0x906b0f){var _0x4dcaa7=function(_0x55098d){while(--_0x55098d){_0x1f8a2a['push'](_0x1f8a2a['shift']());}};_0x4dcaa7(++_0x906b0f);}(_0x1304,0x1ba));var _0x4130=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1304[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x4130('0x0'));var FaxInteraction=require(_0x4130('0x1'))['db']['FaxInteraction'];var FaxMessage=require(_0x4130('0x1'))['db']['FaxMessage'];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x4130('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x4130('0x3'),'afterDestroy':_0x4130('0x4')};function emitEvent(_0x2a94ff){return function(_0x3cd66c,_0xd2a525,_0x4cf878){_0x3cd66c[_0x4130('0x5')]({'attributes':['id'],'raw':!![]})[_0x4130('0x6')](function(_0x59a5bb){_0x3cd66c[_0x4130('0x7')](_0x4130('0x8'),_0x59a5bb[_0x4130('0x9')](function(_0xdf9d05){return{'id':_0xdf9d05['id']};}));return FaxMessage[_0x4130('0xa')]({'where':{'FaxInteractionId':_0x3cd66c['id'],'direction':'in','read':![]},'raw':!![]});})[_0x4130('0x6')](function(_0x39278b){_0x3cd66c[_0x4130('0x7')](_0x4130('0xb'),_0x39278b[_0x4130('0xc')]);FaxInteractionEvents[_0x4130('0xd')](_0x2a94ff+':'+_0x3cd66c['id'],_0x3cd66c);FaxInteractionEvents['emit'](_0x2a94ff,_0x3cd66c);_0x4cf878(null);})['catch'](_0x4cf878(null));};}for(var e in events){if(events[_0x4130('0xe')](e)){var event=events[e];FaxInteraction['hook'](e,emitEvent(event));}}module[_0x4130('0xf')]=FaxInteractionEvents;
\ No newline at end of file
index d8e580d..3a0701f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d41=['YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./faxInteraction.attributes','define','FaxInteraction','changed','closed','closedAt','format'];(function(_0x5cead4,_0x95c854){var _0x25c561=function(_0x564dec){while(--_0x564dec){_0x5cead4['push'](_0x5cead4['shift']());}};_0x25c561(++_0x95c854);}(_0x8d41,0x1aa));var _0x18d4=function(_0x2eebfa,_0x2b23fd){_0x2eebfa=_0x2eebfa-0x0;var _0xdb8044=_0x8d41[_0x2eebfa];return _0xdb8044;};'use strict';var _=require(_0x18d4('0x0'));var util=require(_0x18d4('0x1'));var logger=require(_0x18d4('0x2'))(_0x18d4('0x3'));var moment=require(_0x18d4('0x4'));var BPromise=require('bluebird');var rp=require(_0x18d4('0x5'));var fs=require('fs');var path=require(_0x18d4('0x6'));var rimraf=require(_0x18d4('0x7'));var config=require(_0x18d4('0x8'));var attributes=require(_0x18d4('0x9'));module['exports']=function(_0xa68ffd,_0x25b129){return _0xa68ffd[_0x18d4('0xa')](_0x18d4('0xb'),attributes,{'tableName':'fax_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x3948b5,_0x4fc094,_0xdeb406){if(_0x3948b5[_0x18d4('0xc')](_0x18d4('0xd'))){_0x3948b5[_0x18d4('0xe')]=moment()[_0x18d4('0xf')](_0x18d4('0x10'));}_0xdeb406(null,_0x3948b5);}}});};
\ No newline at end of file
+var _0x9e29=['closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','../../config/logger','api','bluebird','path','rimraf','./faxInteraction.attributes','define','FaxInteraction','fax_interactions','closed'];(function(_0x2b9ae3,_0xd6d709){var _0x4e18a2=function(_0x397406){while(--_0x397406){_0x2b9ae3['push'](_0x2b9ae3['shift']());}};_0x4e18a2(++_0xd6d709);}(_0x9e29,0xd5));var _0x99e2=function(_0x7e2eb0,_0x17cd58){_0x7e2eb0=_0x7e2eb0-0x0;var _0xd92de4=_0x9e29[_0x7e2eb0];return _0xd92de4;};'use strict';var _=require(_0x99e2('0x0'));var util=require('util');var logger=require(_0x99e2('0x1'))(_0x99e2('0x2'));var moment=require('moment');var BPromise=require(_0x99e2('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x99e2('0x4'));var rimraf=require(_0x99e2('0x5'));var config=require('../../config/environment');var attributes=require(_0x99e2('0x6'));module['exports']=function(_0x2b2b45,_0x54e29d){return _0x2b2b45[_0x99e2('0x7')](_0x99e2('0x8'),attributes,{'tableName':_0x99e2('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x359c24,_0x13d103,_0x382e60){if(_0x359c24['changed'](_0x99e2('0xa'))){_0x359c24[_0x99e2('0xb')]=moment()[_0x99e2('0xc')](_0x99e2('0xd'));}_0x382e60(null,_0x359c24);}}});};
\ No newline at end of file
index 3e13415..1fbffe5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7934=['http','defaults','redis','localhost','socket.io-emitter','register','then','info','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','UpdateFaxInteraction','FaxInteraction','body','options','raw','attributes','catch','AddTagsToFaxInteraction','find','where','addTags','ids','omit','AddTags','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x420cb6,_0x116133){var _0x2a48b2=function(_0x422e72){while(--_0x422e72){_0x420cb6['push'](_0x420cb6['shift']());}};_0x2a48b2(++_0x116133);}(_0x7934,0x1ec));var _0x4793=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7934[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x4793('0x0'));var util=require('util');var moment=require(_0x4793('0x1'));var BPromise=require(_0x4793('0x2'));var rs=require(_0x4793('0x3'));var fs=require('fs');var Redis=require(_0x4793('0x4'));var db=require(_0x4793('0x5'))['db'];var utils=require(_0x4793('0x6'));var logger=require(_0x4793('0x7'))(_0x4793('0x8'));var config=require(_0x4793('0x9'));var jayson=require(_0x4793('0xa'));var client=jayson[_0x4793('0xb')][_0x4793('0xc')]({'port':0x232a});config['redis']=_[_0x4793('0xd')](config[_0x4793('0xe')],{'host':_0x4793('0xf'),'port':0x18eb});var socket=require(_0x4793('0x10'))(new Redis(config[_0x4793('0xe')]));require('./faxInteraction.socket')[_0x4793('0x11')](socket);function respondWithRpcPromise(_0x46eacd,_0x2e7fe4,_0xd39901){return new BPromise(function(_0x467523,_0x2a8c3a){return client['request'](_0x46eacd,_0xd39901)[_0x4793('0x12')](function(_0x48f3c1){logger[_0x4793('0x13')](_0x4793('0x14'),_0x2e7fe4,_0x4793('0x15'));logger[_0x4793('0x16')](_0x4793('0x17'),_0x2e7fe4,'request\x20sent',JSON[_0x4793('0x18')](_0x48f3c1));if(_0x48f3c1[_0x4793('0x19')]){if(_0x48f3c1[_0x4793('0x19')][_0x4793('0x1a')]===0x1f4){logger[_0x4793('0x19')](_0x4793('0x14'),_0x2e7fe4,_0x48f3c1[_0x4793('0x19')][_0x4793('0x1b')]);return _0x2a8c3a(_0x48f3c1[_0x4793('0x19')][_0x4793('0x1b')]);}logger['error'](_0x4793('0x14'),_0x2e7fe4,_0x48f3c1[_0x4793('0x19')][_0x4793('0x1b')]);return _0x467523(_0x48f3c1[_0x4793('0x19')][_0x4793('0x1b')]);}else{logger[_0x4793('0x13')](_0x4793('0x14'),_0x2e7fe4,_0x4793('0x15'));_0x467523(_0x48f3c1['result']['message']);}})['catch'](function(_0x4ef84e){logger[_0x4793('0x19')](_0x4793('0x14'),_0x2e7fe4,_0x4ef84e);_0x2a8c3a(_0x4ef84e);});});}exports[_0x4793('0x1c')]=function(_0x1d5a07){var _0x21012d=this;return new Promise(function(_0x46773d,_0x110bdc){return db[_0x4793('0x1d')]['update'](_0x1d5a07[_0x4793('0x1e')],{'raw':_0x1d5a07[_0x4793('0x1f')]?_0x1d5a07[_0x4793('0x1f')][_0x4793('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1d5a07['options']?_0x1d5a07[_0x4793('0x1f')]['where']||null:null,'attributes':_0x1d5a07[_0x4793('0x1f')]?_0x1d5a07['options'][_0x4793('0x21')]||null:null,'limit':_0x1d5a07[_0x4793('0x1f')]?_0x1d5a07[_0x4793('0x1f')]['limit']||null:null})[_0x4793('0x12')](function(_0x1fcc21){logger[_0x4793('0x13')](_0x4793('0x1c'),_0x1d5a07);logger[_0x4793('0x16')](_0x4793('0x1c'),_0x1d5a07,JSON['stringify'](_0x1fcc21));_0x46773d(_0x1fcc21);})[_0x4793('0x22')](function(_0x41717d){logger[_0x4793('0x19')]('UpdateFaxInteraction',_0x41717d['message'],_0x1d5a07);_0x110bdc(_0x21012d[_0x4793('0x19')](0x1f4,_0x41717d[_0x4793('0x1b')]));});});};exports[_0x4793('0x23')]=function(_0x127d20){return new Promise(function(_0x2895a9,_0x4e26c5){return db[_0x4793('0x1d')][_0x4793('0x24')]({'where':_0x127d20[_0x4793('0x1f')]?_0x127d20[_0x4793('0x1f')][_0x4793('0x25')]||null:null})['then'](function(_0x706e6a){if(_0x706e6a){return _0x706e6a[_0x4793('0x26')](_0x127d20[_0x4793('0x1e')][_0x4793('0x27')],_[_0x4793('0x28')](_0x127d20[_0x4793('0x1e')],[_0x4793('0x27'),'id'])||{});}})['spread'](function(_0x46438d){logger['info'](_0x4793('0x29'),_0x127d20);logger['debug'](_0x4793('0x29'),_0x127d20,JSON[_0x4793('0x18')](_0x46438d));_0x2895a9(_0x46438d);})[_0x4793('0x22')](function(_0x3d0348){logger[_0x4793('0x19')](_0x4793('0x29'),_0x3d0348[_0x4793('0x1b')],_0x127d20);_0x4e26c5(_this[_0x4793('0x19')](0x1f4,_0x3d0348['message']));});});};
\ No newline at end of file
+var _0xdb6c=['options','raw','where','attributes','AddTagsToFaxInteraction','find','addTags','ids','omit','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','redis','defaults','localhost','socket.io-emitter','register','request','then','info','FaxInteraction,\x20%s,\x20%s','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','UpdateFaxInteraction','FaxInteraction','update','body'];(function(_0x5da841,_0x9f830c){var _0xba8f82=function(_0x1913ce){while(--_0x1913ce){_0x5da841['push'](_0x5da841['shift']());}};_0xba8f82(++_0x9f830c);}(_0xdb6c,0xe1));var _0xcdb6=function(_0x8703db,_0x3dd1bf){_0x8703db=_0x8703db-0x0;var _0x1d411f=_0xdb6c[_0x8703db];return _0x1d411f;};'use strict';var _=require(_0xcdb6('0x0'));var util=require(_0xcdb6('0x1'));var moment=require(_0xcdb6('0x2'));var BPromise=require(_0xcdb6('0x3'));var rs=require(_0xcdb6('0x4'));var fs=require('fs');var Redis=require(_0xcdb6('0x5'));var db=require(_0xcdb6('0x6'))['db'];var utils=require(_0xcdb6('0x7'));var logger=require(_0xcdb6('0x8'))('rpc');var config=require(_0xcdb6('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xcdb6('0xa')]['http']({'port':0x232a});config[_0xcdb6('0xb')]=_[_0xcdb6('0xc')](config[_0xcdb6('0xb')],{'host':_0xcdb6('0xd'),'port':0x18eb});var socket=require(_0xcdb6('0xe'))(new Redis(config[_0xcdb6('0xb')]));require('./faxInteraction.socket')[_0xcdb6('0xf')](socket);function respondWithRpcPromise(_0x41f80d,_0x1db1a,_0x103a84){return new BPromise(function(_0x371ec0,_0x1c2164){return client[_0xcdb6('0x10')](_0x41f80d,_0x103a84)[_0xcdb6('0x11')](function(_0x16750b){logger[_0xcdb6('0x12')](_0xcdb6('0x13'),_0x1db1a,'request\x20sent');logger[_0xcdb6('0x14')](_0xcdb6('0x15'),_0x1db1a,_0xcdb6('0x16'),JSON[_0xcdb6('0x17')](_0x16750b));if(_0x16750b[_0xcdb6('0x18')]){if(_0x16750b[_0xcdb6('0x18')][_0xcdb6('0x19')]===0x1f4){logger[_0xcdb6('0x18')](_0xcdb6('0x13'),_0x1db1a,_0x16750b[_0xcdb6('0x18')][_0xcdb6('0x1a')]);return _0x1c2164(_0x16750b['error'][_0xcdb6('0x1a')]);}logger[_0xcdb6('0x18')](_0xcdb6('0x13'),_0x1db1a,_0x16750b[_0xcdb6('0x18')]['message']);return _0x371ec0(_0x16750b[_0xcdb6('0x18')][_0xcdb6('0x1a')]);}else{logger[_0xcdb6('0x12')](_0xcdb6('0x13'),_0x1db1a,'request\x20sent');_0x371ec0(_0x16750b[_0xcdb6('0x1b')][_0xcdb6('0x1a')]);}})[_0xcdb6('0x1c')](function(_0x24f3b4){logger['error'](_0xcdb6('0x13'),_0x1db1a,_0x24f3b4);_0x1c2164(_0x24f3b4);});});}exports[_0xcdb6('0x1d')]=function(_0x1626cd){var _0x58b473=this;return new Promise(function(_0x76290e,_0x5ebcef){return db[_0xcdb6('0x1e')][_0xcdb6('0x1f')](_0x1626cd[_0xcdb6('0x20')],{'raw':_0x1626cd[_0xcdb6('0x21')]?_0x1626cd[_0xcdb6('0x21')][_0xcdb6('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1626cd['options']?_0x1626cd[_0xcdb6('0x21')][_0xcdb6('0x23')]||null:null,'attributes':_0x1626cd[_0xcdb6('0x21')]?_0x1626cd[_0xcdb6('0x21')][_0xcdb6('0x24')]||null:null,'limit':_0x1626cd[_0xcdb6('0x21')]?_0x1626cd[_0xcdb6('0x21')]['limit']||null:null})[_0xcdb6('0x11')](function(_0x4d5d4c){logger[_0xcdb6('0x12')](_0xcdb6('0x1d'),_0x1626cd);logger[_0xcdb6('0x14')]('UpdateFaxInteraction',_0x1626cd,JSON[_0xcdb6('0x17')](_0x4d5d4c));_0x76290e(_0x4d5d4c);})['catch'](function(_0x546869){logger[_0xcdb6('0x18')]('UpdateFaxInteraction',_0x546869['message'],_0x1626cd);_0x5ebcef(_0x58b473[_0xcdb6('0x18')](0x1f4,_0x546869[_0xcdb6('0x1a')]));});});};exports[_0xcdb6('0x25')]=function(_0x592aa4){return new Promise(function(_0x522f1d,_0x264d18){return db['FaxInteraction'][_0xcdb6('0x26')]({'where':_0x592aa4[_0xcdb6('0x21')]?_0x592aa4[_0xcdb6('0x21')][_0xcdb6('0x23')]||null:null})[_0xcdb6('0x11')](function(_0x220fd5){if(_0x220fd5){return _0x220fd5[_0xcdb6('0x27')](_0x592aa4['body'][_0xcdb6('0x28')],_[_0xcdb6('0x29')](_0x592aa4[_0xcdb6('0x20')],[_0xcdb6('0x28'),'id'])||{});}})['spread'](function(_0x50998a){logger[_0xcdb6('0x12')]('AddTags',_0x592aa4);logger[_0xcdb6('0x14')](_0xcdb6('0x2a'),_0x592aa4,JSON['stringify'](_0x50998a));_0x522f1d(_0x50998a);})['catch'](function(_0x4b76c2){logger['error'](_0xcdb6('0x2a'),_0x4b76c2[_0xcdb6('0x1a')],_0x592aa4);_0x264d18(_this['error'](0x1f4,_0x4b76c2[_0xcdb6('0x1a')]));});});};
\ No newline at end of file
index a91cb3c..50db8cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5129=['./faxInteraction.events','remove','update','register','length','faxInteraction:'];(function(_0x186376,_0x5d988a){var _0x2dbdd9=function(_0x96908e){while(--_0x96908e){_0x186376['push'](_0x186376['shift']());}};_0x2dbdd9(++_0x5d988a);}(_0x5129,0x11a));var _0x9512=function(_0x26b450,_0x376bd4){_0x26b450=_0x26b450-0x0;var _0x31f267=_0x5129[_0x26b450];return _0x31f267;};'use strict';var FaxInteractionEvents=require(_0x9512('0x0'));var events=['save',_0x9512('0x1'),_0x9512('0x2')];function createListener(_0x57f75b,_0x27a848){return function(_0x2789c5){_0x27a848['emit'](_0x57f75b,_0x2789c5);};}function removeListener(_0x37925b,_0x59a6cc){return function(){FaxInteractionEvents['removeListener'](_0x37925b,_0x59a6cc);};}exports[_0x9512('0x3')]=function(_0x54e0dd){for(var _0x2e8a4e=0x0,_0x1374a3=events[_0x9512('0x4')];_0x2e8a4e<_0x1374a3;_0x2e8a4e++){var _0x23a18c=events[_0x2e8a4e];var _0x5dc145=createListener(_0x9512('0x5')+_0x23a18c,_0x54e0dd);FaxInteractionEvents['on'](_0x23a18c,_0x5dc145);}};
\ No newline at end of file
+var _0xbb02=['emit','removeListener','register','length','./faxInteraction.events','save','remove'];(function(_0x247f75,_0x14445e){var _0x485c3f=function(_0x6e1cf0){while(--_0x6e1cf0){_0x247f75['push'](_0x247f75['shift']());}};_0x485c3f(++_0x14445e);}(_0xbb02,0x123));var _0x2bb0=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xbb02[_0x4b369d];return _0x571a98;};'use strict';var FaxInteractionEvents=require(_0x2bb0('0x0'));var events=[_0x2bb0('0x1'),_0x2bb0('0x2'),'update'];function createListener(_0x3675c8,_0x1aa6b4){return function(_0x565dcc){_0x1aa6b4[_0x2bb0('0x3')](_0x3675c8,_0x565dcc);};}function removeListener(_0x14395b,_0x40e97e){return function(){FaxInteractionEvents[_0x2bb0('0x4')](_0x14395b,_0x40e97e);};}exports[_0x2bb0('0x5')]=function(_0x70c907){for(var _0xcb48b7=0x0,_0x49ff68=events[_0x2bb0('0x6')];_0xcb48b7<_0x49ff68;_0xcb48b7++){var _0x22cc32=events[_0xcb48b7];var _0x4bab7d=createListener('faxInteraction:'+_0x22cc32,_0x70c907);FaxInteractionEvents['on'](_0x22cc32,_0x4bab7d);}};
\ No newline at end of file
index 96d50a5..43b79cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f93=['tracked','fax','faxinteraction:addtags','addTags','put','faxinteraction:update','update','delete','destroy','removeTags','exports','multer','util','path','connect-timeout','fs-extra','../../config/environment','./faxInteraction.controller','get','isAuthenticated','/describe','describe','/:id','/:id/messages','getMessages','post','addMessage','/:id/tags'];(function(_0x42f009,_0x5e27b1){var _0x22a1e0=function(_0x297993){while(--_0x297993){_0x42f009['push'](_0x42f009['shift']());}};_0x22a1e0(++_0x5e27b1);}(_0x6f93,0xb3));var _0x36f9=function(_0x281950,_0x1e11b0){_0x281950=_0x281950-0x0;var _0x3bb4ef=_0x6f93[_0x281950];return _0x3bb4ef;};'use strict';var multer=require(_0x36f9('0x0'));var util=require(_0x36f9('0x1'));var path=require(_0x36f9('0x2'));var timeout=require(_0x36f9('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x36f9('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x36f9('0x5'));var controller=require(_0x36f9('0x6'));router[_0x36f9('0x7')]('/',auth[_0x36f9('0x8')](),controller['index']);router['get'](_0x36f9('0x9'),auth['isAuthenticated'](),controller[_0x36f9('0xa')]);router[_0x36f9('0x7')](_0x36f9('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x36f9('0x7')](_0x36f9('0xc'),auth[_0x36f9('0x8')](),controller[_0x36f9('0xd')]);router[_0x36f9('0x7')]('/:id/download',auth['isAuthenticated'](),controller['download']);router[_0x36f9('0xe')]('/',auth[_0x36f9('0x8')](),controller['create']);router[_0x36f9('0xe')](_0x36f9('0xc'),auth[_0x36f9('0x8')](),controller[_0x36f9('0xf')]);router[_0x36f9('0xe')](_0x36f9('0x10'),auth[_0x36f9('0x8')](),interaction[_0x36f9('0x11')](_0x36f9('0x12'),_0x36f9('0x13')),controller[_0x36f9('0x14')]);router[_0x36f9('0x15')]('/:id',auth[_0x36f9('0x8')](),interaction['tracked'](_0x36f9('0x12'),_0x36f9('0x16')),controller[_0x36f9('0x17')]);router[_0x36f9('0x18')]('/:id',auth[_0x36f9('0x8')](),interaction[_0x36f9('0x11')](_0x36f9('0x12'),'faxinteraction:destroy'),controller[_0x36f9('0x19')]);router['delete'](_0x36f9('0x10'),auth['isAuthenticated'](),controller[_0x36f9('0x1a')]);module[_0x36f9('0x1b')]=router;
\ No newline at end of file
+var _0xba25=['put','fax','faxinteraction:update','update','destroy','delete','removeTags','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','isAuthenticated','describe','/:id','show','getMessages','/:id/download','download','post','create','addMessage','/:id/tags','tracked','faxinteraction:addtags','addTags'];(function(_0x5248ad,_0x513775){var _0x842bd8=function(_0x11a938){while(--_0x11a938){_0x5248ad['push'](_0x5248ad['shift']());}};_0x842bd8(++_0x513775);}(_0xba25,0x194));var _0x5ba2=function(_0x1324eb,_0x5129d8){_0x1324eb=_0x1324eb-0x0;var _0x521d88=_0xba25[_0x1324eb];return _0x521d88;};'use strict';var multer=require('multer');var util=require(_0x5ba2('0x0'));var path=require(_0x5ba2('0x1'));var timeout=require(_0x5ba2('0x2'));var express=require(_0x5ba2('0x3'));var router=express[_0x5ba2('0x4')]();var fs_extra=require(_0x5ba2('0x5'));var auth=require(_0x5ba2('0x6'));var interaction=require(_0x5ba2('0x7'));var config=require(_0x5ba2('0x8'));var controller=require('./faxInteraction.controller');router[_0x5ba2('0x9')]('/',auth['isAuthenticated'](),controller[_0x5ba2('0xa')]);router[_0x5ba2('0x9')]('/describe',auth[_0x5ba2('0xb')](),controller[_0x5ba2('0xc')]);router[_0x5ba2('0x9')](_0x5ba2('0xd'),auth[_0x5ba2('0xb')](),controller[_0x5ba2('0xe')]);router['get']('/:id/messages',auth['isAuthenticated'](),controller[_0x5ba2('0xf')]);router['get'](_0x5ba2('0x10'),auth[_0x5ba2('0xb')](),controller[_0x5ba2('0x11')]);router[_0x5ba2('0x12')]('/',auth[_0x5ba2('0xb')](),controller[_0x5ba2('0x13')]);router['post']('/:id/messages',auth['isAuthenticated'](),controller[_0x5ba2('0x14')]);router[_0x5ba2('0x12')](_0x5ba2('0x15'),auth[_0x5ba2('0xb')](),interaction[_0x5ba2('0x16')]('fax',_0x5ba2('0x17')),controller[_0x5ba2('0x18')]);router[_0x5ba2('0x19')](_0x5ba2('0xd'),auth[_0x5ba2('0xb')](),interaction[_0x5ba2('0x16')](_0x5ba2('0x1a'),_0x5ba2('0x1b')),controller[_0x5ba2('0x1c')]);router['delete'](_0x5ba2('0xd'),auth[_0x5ba2('0xb')](),interaction[_0x5ba2('0x16')](_0x5ba2('0x1a'),'faxinteraction:destroy'),controller[_0x5ba2('0x1d')]);router[_0x5ba2('0x1e')](_0x5ba2('0x15'),auth[_0x5ba2('0xb')](),controller[_0x5ba2('0x1f')]);module[_0x5ba2('0x20')]=router;
\ No newline at end of file
index 98557f5..20957c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bdf=['BOOLEAN','out','DATE','sequelize','exports','TEXT','medium'];(function(_0x3f4ab8,_0x5f1d14){var _0x4c7577=function(_0x3e02cd){while(--_0x3e02cd){_0x3f4ab8['push'](_0x3f4ab8['shift']());}};_0x4c7577(++_0x5f1d14);}(_0x8bdf,0x1a7));var _0xf8bd=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x8bdf[_0x1facfa];return _0x9ec701;};'use strict';var Sequelize=require(_0xf8bd('0x0'));module[_0xf8bd('0x1')]={'body':{'type':Sequelize[_0xf8bd('0x2')](_0xf8bd('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xf8bd('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xf8bd('0x5')),'defaultValue':_0xf8bd('0x5'),'allowNull':![]},'failMessage':{'type':Sequelize[_0xf8bd('0x2')],'defaultValue':null},'readAt':{'type':Sequelize[_0xf8bd('0x6')]}};
\ No newline at end of file
+var _0xdad2=['out','DATE','exports','TEXT','BOOLEAN','ENUM'];(function(_0x122e16,_0x2aee15){var _0x505165=function(_0x4071f7){while(--_0x4071f7){_0x122e16['push'](_0x122e16['shift']());}};_0x505165(++_0x2aee15);}(_0xdad2,0x14c));var _0x2dad=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0xdad2[_0x1cc8fe];return _0x230054;};'use strict';var Sequelize=require('sequelize');module[_0x2dad('0x0')]={'body':{'type':Sequelize[_0x2dad('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x2dad('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x2dad('0x3')]('in',_0x2dad('0x4')),'defaultValue':'out','allowNull':![]},'failMessage':{'type':Sequelize[_0x2dad('0x1')],'defaultValue':null},'readAt':{'type':Sequelize[_0x2dad('0x5')]}};
\ No newline at end of file
index 6ae195b..a988505 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bf6=['debug','error','message','info','result','sendStatus','status','offset','undefined','limit','count','set','apply','reject','update','destroy','end','stack','name','send','index','map','FaxMessage','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','body','find','describe','../../config/logger','fax-interactions','accept','fax','user','agent','UserId','get','FaxInteraction','FaxInteractionId','isNil','read1stAt','format','YYYY-MM-DD\x20HH:mm:ss','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','stringify','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','SELECT','contact','fullname','email','internal','manual','interface','channel','motionChannel','event','EventManager','acceptmessage','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','rejectmessage','create','findOne','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','join','root','server','files','attachments','Attachment','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','lodash','squel','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../mysqldb','redis','defaults','socket.io-emitter','./faxMessage.socket','register','jayson/promise','http','client','then','FaxMessage,\x20%s,\x20%s','request\x20sent'];(function(_0x1b1396,_0x5139e6){var _0x19149f=function(_0x4b22bb){while(--_0x4b22bb){_0x1b1396['push'](_0x1b1396['shift']());}};_0x19149f(++_0x5139e6);}(_0x7bf6,0x17e));var _0x67bf=function(_0x3564b0,_0x5b6f87){_0x3564b0=_0x3564b0-0x0;var _0x5e7185=_0x7bf6[_0x3564b0];return _0x5e7185;};'use strict';var emlformat=require(_0x67bf('0x0'));var rimraf=require(_0x67bf('0x1'));var zipdir=require(_0x67bf('0x2'));var jsonpatch=require(_0x67bf('0x3'));var rp=require(_0x67bf('0x4'));var moment=require(_0x67bf('0x5'));var BPromise=require(_0x67bf('0x6'));var Mustache=require('mustache');var util=require(_0x67bf('0x7'));var path=require(_0x67bf('0x8'));var sox=require('sox');var csv=require(_0x67bf('0x9'));var ejs=require(_0x67bf('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x67bf('0xb'));var squel=require(_0x67bf('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x67bf('0xd'));var toCsv=require(_0x67bf('0x9'));var querystring=require(_0x67bf('0xe'));var Papa=require('papaparse');var Redis=require(_0x67bf('0xf'));var authService=require(_0x67bf('0x10'));var qs=require(_0x67bf('0x11'));var as=require(_0x67bf('0x12'));var hardwareService=require(_0x67bf('0x13'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x67bf('0x14'))['db'];config[_0x67bf('0x15')]=_[_0x67bf('0x16')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x67bf('0x17'))(new Redis(config['redis']));require(_0x67bf('0x18'))[_0x67bf('0x19')](socket);var jayson=require(_0x67bf('0x1a'));var client=jayson['client'][_0x67bf('0x1b')]({'port':0x232c});var client9002=jayson[_0x67bf('0x1c')][_0x67bf('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x33fbe3,_0x2d147a,_0x2bbec1,_0x1a47c2){return new BPromise(function(_0x1a0e62,_0x2ac61f){var _0x28c152=_0x1a47c2||client;return _0x28c152['request'](_0x33fbe3,_0x2bbec1)[_0x67bf('0x1d')](function(_0x30460e){logger['info'](_0x67bf('0x1e'),_0x2d147a,_0x67bf('0x1f'));logger[_0x67bf('0x20')]('FaxMessage,\x20%s,\x20%s,\x20%s',_0x2d147a,_0x67bf('0x1f'),JSON['stringify'](_0x30460e));if(_0x30460e[_0x67bf('0x21')]){if(_0x30460e['error']['code']===0x1f4){logger[_0x67bf('0x21')](_0x67bf('0x1e'),_0x2d147a,_0x30460e[_0x67bf('0x21')][_0x67bf('0x22')]);return _0x2ac61f(_0x30460e[_0x67bf('0x21')][_0x67bf('0x22')]);}logger['error']('FaxMessage,\x20%s,\x20%s',_0x2d147a,_0x30460e['error'][_0x67bf('0x22')]);return _0x1a0e62(_0x30460e[_0x67bf('0x21')][_0x67bf('0x22')]);}else{logger[_0x67bf('0x23')](_0x67bf('0x1e'),_0x2d147a,_0x67bf('0x1f'));_0x1a0e62(_0x30460e[_0x67bf('0x24')][_0x67bf('0x22')]);}})['catch'](function(_0x4f9773){logger[_0x67bf('0x21')](_0x67bf('0x1e'),_0x2d147a,_0x4f9773);_0x2ac61f(_0x4f9773);});});}function respondWithStatusCode(_0x13c2ce,_0x447d3b){_0x447d3b=_0x447d3b||0xcc;return function(_0x2ec617){if(_0x2ec617){return _0x13c2ce[_0x67bf('0x25')](_0x447d3b);}return _0x13c2ce['status'](_0x447d3b)['end']();};}function respondWithResult(_0x3fb7f7,_0x3f04e1){_0x3f04e1=_0x3f04e1||0xc8;return function(_0x395f78){if(_0x395f78){return _0x3fb7f7[_0x67bf('0x26')](_0x3f04e1)['json'](_0x395f78);}};}function respondWithFilteredResult(_0xa84dd0,_0x59ebaa){return function(_0x899399){if(_0x899399){var _0x1d9804=typeof _0x59ebaa[_0x67bf('0x27')]===_0x67bf('0x28')&&typeof _0x59ebaa[_0x67bf('0x29')]===_0x67bf('0x28');var _0x34252d=_0x899399[_0x67bf('0x2a')];var _0x5f42c5=_0x1d9804?0x0:_0x59ebaa[_0x67bf('0x27')];var _0x11f130=_0x1d9804?_0x899399[_0x67bf('0x2a')]:_0x59ebaa[_0x67bf('0x27')]+_0x59ebaa[_0x67bf('0x29')];var _0x2c2d59;if(_0x11f130>=_0x34252d){_0x11f130=_0x34252d;_0x2c2d59=0xc8;}else{_0x2c2d59=0xce;}_0xa84dd0[_0x67bf('0x26')](_0x2c2d59);return _0xa84dd0[_0x67bf('0x2b')]('Content-Range',_0x5f42c5+'-'+_0x11f130+'/'+_0x34252d)['json'](_0x899399);}return null;};}function patchUpdates(_0x1b905e){return function(_0x19737e){try{jsonpatch[_0x67bf('0x2c')](_0x19737e,_0x1b905e,!![]);}catch(_0x4efc4){return BPromise[_0x67bf('0x2d')](_0x4efc4);}return _0x19737e['save']();};}function saveUpdates(_0x416869,_0xdca8d5){return function(_0x3ba674){if(_0x3ba674){return _0x3ba674[_0x67bf('0x2e')](_0x416869)[_0x67bf('0x1d')](function(_0x326d1b){return _0x326d1b;});}return null;};}function removeEntity(_0x12ec0e,_0x29f717){return function(_0x464317){if(_0x464317){return _0x464317[_0x67bf('0x2f')]()[_0x67bf('0x1d')](function(){_0x12ec0e[_0x67bf('0x26')](0xcc)[_0x67bf('0x30')]();});}};}function handleEntityNotFound(_0x567645,_0x5978eb){return function(_0x54459a){if(!_0x54459a){_0x567645[_0x67bf('0x25')](0x194);}return _0x54459a;};}function handleError(_0x5d0221,_0x3e59a0){_0x3e59a0=_0x3e59a0||0x1f4;return function(_0x31c6fb){logger[_0x67bf('0x21')](_0x31c6fb[_0x67bf('0x31')]);if(_0x31c6fb[_0x67bf('0x32')]){delete _0x31c6fb['name'];}_0x5d0221[_0x67bf('0x26')](_0x3e59a0)[_0x67bf('0x33')](_0x31c6fb);};}exports[_0x67bf('0x34')]=function(_0x2c6580,_0x289081){var _0x47bbcd={},_0x4cf60d={},_0x5d69ca={'count':0x0,'rows':[]};var _0xc04798=_[_0x67bf('0x35')](db[_0x67bf('0x36')]['rawAttributes'],function(_0x17efc9){return{'name':_0x17efc9[_0x67bf('0x37')],'type':_0x17efc9[_0x67bf('0x38')][_0x67bf('0x39')]};});_0x4cf60d['model']=_[_0x67bf('0x35')](_0xc04798,_0x67bf('0x32'));_0x4cf60d[_0x67bf('0x3a')]=_[_0x67bf('0x3b')](_0x2c6580[_0x67bf('0x3a')]);_0x4cf60d[_0x67bf('0x3c')]=_[_0x67bf('0x3d')](_0x4cf60d[_0x67bf('0x3e')],_0x4cf60d['query']);_0x47bbcd[_0x67bf('0x3f')]=_[_0x67bf('0x3d')](_0x4cf60d[_0x67bf('0x3e')],qs[_0x67bf('0x40')](_0x2c6580[_0x67bf('0x3a')][_0x67bf('0x40')]));_0x47bbcd[_0x67bf('0x3f')]=_0x47bbcd['attributes'][_0x67bf('0x41')]?_0x47bbcd[_0x67bf('0x3f')]:_0x4cf60d[_0x67bf('0x3e')];if(!_0x2c6580[_0x67bf('0x3a')][_0x67bf('0x42')](_0x67bf('0x43'))){_0x47bbcd[_0x67bf('0x29')]=qs[_0x67bf('0x29')](_0x2c6580[_0x67bf('0x3a')][_0x67bf('0x29')]);_0x47bbcd['offset']=qs[_0x67bf('0x27')](_0x2c6580[_0x67bf('0x3a')][_0x67bf('0x27')]);}_0x47bbcd[_0x67bf('0x44')]=qs[_0x67bf('0x45')](_0x2c6580[_0x67bf('0x3a')][_0x67bf('0x45')]);_0x47bbcd['where']=qs[_0x67bf('0x3c')](_['pick'](_0x2c6580['query'],_0x4cf60d[_0x67bf('0x3c')]),_0xc04798);if(_0x2c6580[_0x67bf('0x3a')][_0x67bf('0x46')]){_0x47bbcd[_0x67bf('0x47')]=_[_0x67bf('0x48')](_0x47bbcd[_0x67bf('0x47')],{'$or':_[_0x67bf('0x35')](_0xc04798,function(_0x271f85){if(_0x271f85['type']!=='VIRTUAL'){var _0x272835={};_0x272835[_0x271f85[_0x67bf('0x32')]]={'$like':'%'+_0x2c6580['query'][_0x67bf('0x46')]+'%'};return _0x272835;}})});}_0x47bbcd=_[_0x67bf('0x48')]({},_0x47bbcd,_0x2c6580[_0x67bf('0x49')]);var _0x17b9a9={'where':_0x47bbcd[_0x67bf('0x47')]};return db[_0x67bf('0x36')]['count'](_0x17b9a9)[_0x67bf('0x1d')](function(_0x171c71){_0x5d69ca[_0x67bf('0x2a')]=_0x171c71;if(_0x2c6580[_0x67bf('0x3a')][_0x67bf('0x4a')]){_0x47bbcd[_0x67bf('0x4b')]=[{'all':!![]}];}return db['FaxMessage'][_0x67bf('0x4c')](_0x47bbcd);})[_0x67bf('0x1d')](function(_0x2c8c6d){_0x5d69ca[_0x67bf('0x4d')]=_0x2c8c6d;return _0x5d69ca;})[_0x67bf('0x1d')](respondWithFilteredResult(_0x289081,_0x47bbcd))[_0x67bf('0x4e')](handleError(_0x289081,null));};exports[_0x67bf('0x4f')]=function(_0xe4fb74,_0x4f2d22){var _0x25e35f={'raw':!![],'where':{'id':_0xe4fb74[_0x67bf('0x50')]['id']}},_0x5b3b7b={};_0x5b3b7b[_0x67bf('0x3e')]=_['keys'](db[_0x67bf('0x36')][_0x67bf('0x51')]);_0x5b3b7b['query']=_['keys'](_0xe4fb74[_0x67bf('0x3a')]);_0x5b3b7b[_0x67bf('0x3c')]=_[_0x67bf('0x3d')](_0x5b3b7b['model'],_0x5b3b7b[_0x67bf('0x3a')]);_0x25e35f['attributes']=_['intersection'](_0x5b3b7b[_0x67bf('0x3e')],qs[_0x67bf('0x40')](_0xe4fb74[_0x67bf('0x3a')][_0x67bf('0x40')]));_0x25e35f[_0x67bf('0x3f')]=_0x25e35f['attributes'][_0x67bf('0x41')]?_0x25e35f['attributes']:_0x5b3b7b[_0x67bf('0x3e')];if(_0xe4fb74[_0x67bf('0x3a')][_0x67bf('0x4a')]){_0x25e35f['include']=[{'all':!![]}];}_0x25e35f=_['merge']({},_0x25e35f,_0xe4fb74[_0x67bf('0x49')]);return db[_0x67bf('0x36')]['find'](_0x25e35f)[_0x67bf('0x1d')](handleEntityNotFound(_0x4f2d22,null))[_0x67bf('0x1d')](respondWithResult(_0x4f2d22,null))[_0x67bf('0x4e')](handleError(_0x4f2d22,null));};exports[_0x67bf('0x2e')]=function(_0x44154e,_0x4b0955){if(_0x44154e['body']['id']){delete _0x44154e[_0x67bf('0x52')]['id'];}return db['FaxMessage'][_0x67bf('0x53')]({'where':{'id':_0x44154e[_0x67bf('0x50')]['id']}})[_0x67bf('0x1d')](handleEntityNotFound(_0x4b0955,null))[_0x67bf('0x1d')](saveUpdates(_0x44154e[_0x67bf('0x52')],null))['then'](respondWithResult(_0x4b0955,null))[_0x67bf('0x4e')](handleError(_0x4b0955,null));};exports[_0x67bf('0x2f')]=function(_0xf4da70,_0x5cb73d){return db[_0x67bf('0x36')][_0x67bf('0x53')]({'where':{'id':_0xf4da70[_0x67bf('0x50')]['id']}})[_0x67bf('0x1d')](handleEntityNotFound(_0x5cb73d,null))[_0x67bf('0x1d')](removeEntity(_0x5cb73d,null))['catch'](handleError(_0x5cb73d,null));};exports[_0x67bf('0x54')]=function(_0x525cd2,_0x2b0823){return db[_0x67bf('0x36')]['describe']()[_0x67bf('0x1d')](respondWithResult(_0x2b0823,null))['catch'](handleError(_0x2b0823,null));};var interaction_log=require(_0x67bf('0x55'))(_0x67bf('0x56'));exports[_0x67bf('0x57')]=function(_0xfbb63e,_0x582838,_0x4c1d13){var _0x4418b2={'agent':{},'channel':_0x67bf('0x58')};if(_0xfbb63e[_0x67bf('0x52')]['id']){delete _0xfbb63e[_0x67bf('0x52')]['id'];}_0xfbb63e[_0x67bf('0x52')]['read']=!![];_0xfbb63e[_0x67bf('0x52')]['readAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0xfbb63e[_0x67bf('0x52')]['UserId']=_0xfbb63e[_0x67bf('0x52')]['UserId']||_0xfbb63e[_0x67bf('0x59')]['id'];_0x4418b2[_0x67bf('0x5a')]['id']=_0xfbb63e['body'][_0x67bf('0x5b')];return db[_0x67bf('0x36')][_0x67bf('0x53')]({'where':{'id':_0xfbb63e[_0x67bf('0x50')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x582838,null))[_0x67bf('0x1d')](saveUpdates(_0xfbb63e[_0x67bf('0x52')],null))[_0x67bf('0x1d')](function(_0x426a17){if(_0x426a17){_0x4418b2[_0x67bf('0x22')]=_0x426a17[_0x67bf('0x5c')]({'plain':!![]});return db[_0x67bf('0x5d')]['find']({'where':{'id':_0x426a17[_0x67bf('0x5e')]}});}return null;})[_0x67bf('0x1d')](handleEntityNotFound(_0x582838,null))['then'](function(_0x2ea59b){if(_0x2ea59b){return _0x2ea59b[_0x67bf('0x2e')]({'UserId':_0xfbb63e[_0x67bf('0x52')]['UserId'],'read1stAt':_[_0x67bf('0x5f')](_0x2ea59b[_0x67bf('0x60')])?moment()[_0x67bf('0x61')](_0x67bf('0x62')):undefined});}return null;})['then'](function(_0x23de9c){if(_0x23de9c){_0x4418b2[_0x67bf('0x63')]=_0x23de9c[_0x67bf('0x5c')]({'plain':!![]});interaction_log['info'](_0x67bf('0x64'),_0xfbb63e['user']['id'],_0xfbb63e['user'][_0x67bf('0x32')],_0xfbb63e[_0x67bf('0x59')][_0x67bf('0x65')],_0x4418b2[_0x67bf('0x63')]['id'],_0xfbb63e[_0x67bf('0x52')]?JSON[_0x67bf('0x66')](_0xfbb63e[_0x67bf('0x52')]):_0x67bf('0x67'));return respondWithRpcPromise(_0x67bf('0x68'),'acceptMessage',_0x4418b2);}return null;})['then'](function(_0x1bd3d0){var _0x4243cf=_0x67bf('0x69')+_0x1bd3d0[_0x67bf('0x22')][_0x67bf('0x6a')];return db[_0x67bf('0x6b')][_0x67bf('0x3a')](_0x4243cf,{'type':db['Sequelize'][_0x67bf('0x6c')][_0x67bf('0x6d')],'raw':!![]})['then'](function(_0xffeb4f){return _0xffeb4f;});})['then'](function(_0x2985cd){if(_0x2985cd){_0x4418b2[_0x67bf('0x22')][_0x67bf('0x6e')]=_0x2985cd[0x0];if(!_0xfbb63e[_0x67bf('0x52')][_0x67bf('0x5b')])return;return db['User'][_0x67bf('0x53')]({'where':{'id':_0xfbb63e[_0x67bf('0x52')][_0x67bf('0x5b')],'role':_0x67bf('0x5a')},'attributes':['id','name',_0x67bf('0x6f'),_0x67bf('0x70'),_0x67bf('0x71')],'raw':!![]});}return null;})[_0x67bf('0x1d')](function(_0x5d4a5c){if(!_0x5d4a5c)return null;_0x4418b2[_0x67bf('0x22')][_0x67bf('0x5a')]=_0x5d4a5c;return _0x4418b2;})[_0x67bf('0x1d')](function(_0x52dbf5){if(_0x52dbf5){if(_0xfbb63e['body'][_0x67bf('0x72')]){_0x4418b2[_0x67bf('0x22')][_0x67bf('0x73')]=util['format']('SIP/%s',_0xfbb63e['user'][_0x67bf('0x32')]);_0x4418b2[_0x67bf('0x22')]['channel']=_0x4418b2[_0x67bf('0x74')];_0x4418b2[_0x67bf('0x22')][_0x67bf('0x75')]=_0x4418b2[_0x67bf('0x74')];_0x4418b2['message'][_0x67bf('0x76')]=_0x67bf('0x57');return respondWithRpcPromise(_0x67bf('0x77'),_0x67bf('0x77'),{'event':_0x67bf('0x78'),'message':_0x4418b2['message']},client9002)['then'](function(){return _0x4418b2;});}return _0x4418b2;}return null;})[_0x67bf('0x1d')](respondWithResult(_0x582838,null))['catch'](handleError(_0x582838,null));};var interaction_log=require(_0x67bf('0x55'))('fax-interactions');exports[_0x67bf('0x2d')]=function(_0x69ed37,_0x3fbdbe,_0x2c5571){var _0x3615b1={'agent':{},'channel':_0x67bf('0x58')};if(_0x69ed37[_0x67bf('0x52')]['id']){delete _0x69ed37[_0x67bf('0x52')]['id'];}_0x69ed37[_0x67bf('0x52')][_0x67bf('0x5b')]=_0x69ed37[_0x67bf('0x52')][_0x67bf('0x5b')]||_0x69ed37[_0x67bf('0x59')]['id'];_0x3615b1['agent']['id']=_0x69ed37[_0x67bf('0x52')][_0x67bf('0x5b')];return db[_0x67bf('0x36')][_0x67bf('0x53')]({'where':{'id':_0x69ed37[_0x67bf('0x50')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x3fbdbe,null))['then'](function(_0x21dd8d){if(_0x21dd8d){_0x3615b1[_0x67bf('0x22')]=_0x21dd8d['get']({'plain':!![]});return db[_0x67bf('0x5d')][_0x67bf('0x53')]({'where':{'id':_0x21dd8d[_0x67bf('0x5e')]}});}return null;})[_0x67bf('0x1d')](handleEntityNotFound(_0x3fbdbe,null))[_0x67bf('0x1d')](function(_0x1d33c0){if(_0x1d33c0){_0x3615b1[_0x67bf('0x63')]=_0x1d33c0[_0x67bf('0x5c')]({'plain':!![]});interaction_log[_0x67bf('0x23')](_0x67bf('0x79'),_0x69ed37['user']['id'],_0x69ed37['user']['name'],_0x69ed37['user'][_0x67bf('0x65')],_0x3615b1[_0x67bf('0x63')]['id'],_0x69ed37[_0x67bf('0x52')]?JSON[_0x67bf('0x66')](_0x69ed37[_0x67bf('0x52')]):'null');return respondWithRpcPromise(_0x67bf('0x7a'),_0x67bf('0x7b'),_0x3615b1);}return null;})['then'](function(_0x573673){var _0x3a65fb=_0x67bf('0x69')+_0x573673[_0x67bf('0x22')]['ContactId'];return db[_0x67bf('0x6b')][_0x67bf('0x3a')](_0x3a65fb,{'type':db['Sequelize'][_0x67bf('0x6c')][_0x67bf('0x6d')],'raw':!![]})[_0x67bf('0x1d')](function(_0xb2697b){return _0xb2697b;});})[_0x67bf('0x1d')](function(_0x15747a){if(_0x15747a){_0x3615b1[_0x67bf('0x22')]['contact']=_0x15747a[0x0];if(!_0x69ed37[_0x67bf('0x52')][_0x67bf('0x5b')])return;return db['User'][_0x67bf('0x53')]({'where':{'id':_0x69ed37[_0x67bf('0x52')][_0x67bf('0x5b')],'role':_0x67bf('0x5a')},'attributes':['id',_0x67bf('0x32'),_0x67bf('0x6f'),_0x67bf('0x70'),_0x67bf('0x71')],'raw':!![]});}return null;})[_0x67bf('0x1d')](function(_0x24c54a){if(!_0x24c54a)return null;_0x3615b1[_0x67bf('0x22')][_0x67bf('0x5a')]=_0x24c54a;return _0x3615b1;})[_0x67bf('0x1d')](function(_0x3649bb){if(_0x3649bb){_0x3649bb[_0x67bf('0x22')][_0x67bf('0x73')]=util['format']('SIP/%s',_0x69ed37[_0x67bf('0x59')][_0x67bf('0x32')]);_0x3649bb[_0x67bf('0x22')][_0x67bf('0x74')]=_0x3615b1[_0x67bf('0x74')];_0x3649bb[_0x67bf('0x22')][_0x67bf('0x75')]=_0x3615b1['channel'];_0x3649bb['message']['event']=_0x67bf('0x2d');respondWithRpcPromise(_0x67bf('0x77'),_0x67bf('0x77'),{'event':_0x67bf('0x7c'),'message':_0x3649bb['message']},client9002);return _0x3615b1;}return null;})['then'](respondWithResult(_0x3fbdbe,null))['catch'](handleError(_0x3fbdbe,null));};exports[_0x67bf('0x7d')]=function(_0xdaf05b,_0x13a441){var _0x4d81f4;return db[_0x67bf('0x36')][_0x67bf('0x7d')](_0xdaf05b[_0x67bf('0x52')],{})[_0x67bf('0x1d')](function(_0x55018b){_0x4d81f4=_0x55018b;return db['CmContact'][_0x67bf('0x7e')]({'where':{'id':_0x4d81f4['ContactId']}});})['then'](function(_0x37b48a){if(_[_0x67bf('0x5f')](_0x37b48a)){return;}else{_0x4d81f4[_0x67bf('0x58')]=_0x37b48a[_0x67bf('0x58')];return db['Attachment'][_0x67bf('0x7e')]({'where':{'id':_0x4d81f4[_0x67bf('0x7f')]}});}})[_0x67bf('0x1d')](function(_0x275f54){return respondWithRpcPromise(_0x67bf('0x80'),_0x67bf('0x80'),{'FaxAccountId':_[_0x67bf('0x5f')](_0xdaf05b[_0x67bf('0x52')])?undefined:_0xdaf05b[_0x67bf('0x52')][_0x67bf('0x81')],'path':_['isNil'](_0x275f54)?undefined:util[_0x67bf('0x61')](_0x67bf('0x82'),_0x275f54[_0x67bf('0x83')]),'fax':_['isNil'](_0x4d81f4[_0x67bf('0x58')])?undefined:_0x4d81f4['fax'],'AttachmentId':_0x4d81f4[_0x67bf('0x7f')]},client9002);})[_0x67bf('0x1d')](respondWithResult(_0x13a441,0xc9))[_0x67bf('0x4e')](handleError(_0x13a441,null));};exports['download']=function(_0x444660,_0x25e3d7){var _0x50b123=path[_0x67bf('0x84')](config[_0x67bf('0x85')],_0x67bf('0x86'),_0x67bf('0x87'),_0x67bf('0x88'));return db[_0x67bf('0x36')]['find']({'where':{'id':_0x444660['params']['id']},'include':[{'model':db[_0x67bf('0x89')],'as':_0x67bf('0x89')}]})[_0x67bf('0x1d')](handleEntityNotFound(_0x25e3d7,null))[_0x67bf('0x1d')](function(_0x18a021){if(_0x18a021){return _0x25e3d7['download'](path['join'](_0x50b123,_0x18a021[_0x67bf('0x89')][_0x67bf('0x83')]));}})[_0x67bf('0x4e')](handleError(_0x25e3d7,null));};
\ No newline at end of file
+var _0xdab1=['describe','../../config/logger','fax-interactions','accept','fax','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','isNil','read1stAt','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','stringify','AcceptMessage','acceptMessage','ContactId','Sequelize','QueryTypes','SELECT','User','fullname','email','internal','manual','interface','SIP/%s','channel','event','EventManager','FaxInteraction','FaxInteractionId','RejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','contact','rejectmessage','create','CmContact','findOne','Attachment','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','download','join','root','server','files','attachments','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','register','jayson/promise','client','http','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','error','code','message','catch','json','undefined','limit','count','status','set','Content-Range','apply','reject','update','destroy','end','stack','name','index','map','FaxMessage','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','offset','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','params','length','include','body','find'];(function(_0x4005fe,_0x1fc3c1){var _0x50022d=function(_0x2ce718){while(--_0x2ce718){_0x4005fe['push'](_0x4005fe['shift']());}};_0x50022d(++_0x1fc3c1);}(_0xdab1,0x1e9));var _0x1dab=function(_0x3ab9ee,_0x4a74b8){_0x3ab9ee=_0x3ab9ee-0x0;var _0x82ee88=_0xdab1[_0x3ab9ee];return _0x82ee88;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1dab('0x0'));var zipdir=require(_0x1dab('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1dab('0x2'));var moment=require(_0x1dab('0x3'));var BPromise=require(_0x1dab('0x4'));var Mustache=require(_0x1dab('0x5'));var util=require(_0x1dab('0x6'));var path=require(_0x1dab('0x7'));var sox=require(_0x1dab('0x8'));var csv=require(_0x1dab('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1dab('0xa'));var _=require(_0x1dab('0xb'));var squel=require('squel');var crypto=require(_0x1dab('0xc'));var jsforce=require(_0x1dab('0xd'));var deskjs=require(_0x1dab('0xe'));var toCsv=require(_0x1dab('0x9'));var querystring=require('querystring');var Papa=require(_0x1dab('0xf'));var Redis=require('ioredis');var authService=require(_0x1dab('0x10'));var qs=require(_0x1dab('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1dab('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x1dab('0x13'));var licenseUtil=require(_0x1dab('0x14'));var db=require(_0x1dab('0x15'))['db'];config['redis']=_[_0x1dab('0x16')](config[_0x1dab('0x17')],{'host':_0x1dab('0x18'),'port':0x18eb});var socket=require(_0x1dab('0x19'))(new Redis(config[_0x1dab('0x17')]));require('./faxMessage.socket')[_0x1dab('0x1a')](socket);var jayson=require(_0x1dab('0x1b'));var client=jayson[_0x1dab('0x1c')][_0x1dab('0x1d')]({'port':0x232c});var client9002=jayson[_0x1dab('0x1c')]['http']({'port':0x232a});function respondWithRpcPromise(_0x53a442,_0x3b5073,_0x3dd601,_0x26f9d5){return new BPromise(function(_0x1e0726,_0x496ca9){var _0x8a9dd1=_0x26f9d5||client;return _0x8a9dd1['request'](_0x53a442,_0x3dd601)[_0x1dab('0x1e')](function(_0x5b97d0){logger[_0x1dab('0x1f')](_0x1dab('0x20'),_0x3b5073,_0x1dab('0x21'));logger[_0x1dab('0x22')](_0x1dab('0x23'),_0x3b5073,_0x1dab('0x21'),JSON['stringify'](_0x5b97d0));if(_0x5b97d0[_0x1dab('0x24')]){if(_0x5b97d0[_0x1dab('0x24')][_0x1dab('0x25')]===0x1f4){logger['error'](_0x1dab('0x20'),_0x3b5073,_0x5b97d0[_0x1dab('0x24')][_0x1dab('0x26')]);return _0x496ca9(_0x5b97d0[_0x1dab('0x24')]['message']);}logger[_0x1dab('0x24')](_0x1dab('0x20'),_0x3b5073,_0x5b97d0[_0x1dab('0x24')][_0x1dab('0x26')]);return _0x1e0726(_0x5b97d0[_0x1dab('0x24')][_0x1dab('0x26')]);}else{logger['info'](_0x1dab('0x20'),_0x3b5073,_0x1dab('0x21'));_0x1e0726(_0x5b97d0['result'][_0x1dab('0x26')]);}})[_0x1dab('0x27')](function(_0xff0035){logger[_0x1dab('0x24')](_0x1dab('0x20'),_0x3b5073,_0xff0035);_0x496ca9(_0xff0035);});});}function respondWithStatusCode(_0x431cd5,_0x334d5f){_0x334d5f=_0x334d5f||0xcc;return function(_0x2fd9be){if(_0x2fd9be){return _0x431cd5['sendStatus'](_0x334d5f);}return _0x431cd5['status'](_0x334d5f)['end']();};}function respondWithResult(_0x2077cc,_0xea714c){_0xea714c=_0xea714c||0xc8;return function(_0x5763b2){if(_0x5763b2){return _0x2077cc['status'](_0xea714c)[_0x1dab('0x28')](_0x5763b2);}};}function respondWithFilteredResult(_0x1557db,_0x146a80){return function(_0xb7c0cd){if(_0xb7c0cd){var _0x406a7d=typeof _0x146a80['offset']===_0x1dab('0x29')&&typeof _0x146a80[_0x1dab('0x2a')]===_0x1dab('0x29');var _0x49eed8=_0xb7c0cd[_0x1dab('0x2b')];var _0x4fc733=_0x406a7d?0x0:_0x146a80['offset'];var _0x9a279b=_0x406a7d?_0xb7c0cd[_0x1dab('0x2b')]:_0x146a80['offset']+_0x146a80[_0x1dab('0x2a')];var _0x241b57;if(_0x9a279b>=_0x49eed8){_0x9a279b=_0x49eed8;_0x241b57=0xc8;}else{_0x241b57=0xce;}_0x1557db[_0x1dab('0x2c')](_0x241b57);return _0x1557db[_0x1dab('0x2d')](_0x1dab('0x2e'),_0x4fc733+'-'+_0x9a279b+'/'+_0x49eed8)['json'](_0xb7c0cd);}return null;};}function patchUpdates(_0x11d3e8){return function(_0x1f7dfe){try{jsonpatch[_0x1dab('0x2f')](_0x1f7dfe,_0x11d3e8,!![]);}catch(_0x390368){return BPromise[_0x1dab('0x30')](_0x390368);}return _0x1f7dfe['save']();};}function saveUpdates(_0x25544c,_0x3f4157){return function(_0x4c51c2){if(_0x4c51c2){return _0x4c51c2[_0x1dab('0x31')](_0x25544c)[_0x1dab('0x1e')](function(_0x2a141c){return _0x2a141c;});}return null;};}function removeEntity(_0x1a5507,_0x3d59dd){return function(_0xfa1e9e){if(_0xfa1e9e){return _0xfa1e9e[_0x1dab('0x32')]()[_0x1dab('0x1e')](function(){_0x1a5507[_0x1dab('0x2c')](0xcc)[_0x1dab('0x33')]();});}};}function handleEntityNotFound(_0x13f7de,_0x733cc3){return function(_0x4ad7f0){if(!_0x4ad7f0){_0x13f7de['sendStatus'](0x194);}return _0x4ad7f0;};}function handleError(_0x3bdbe1,_0x309f0d){_0x309f0d=_0x309f0d||0x1f4;return function(_0x5863ec){logger[_0x1dab('0x24')](_0x5863ec[_0x1dab('0x34')]);if(_0x5863ec[_0x1dab('0x35')]){delete _0x5863ec[_0x1dab('0x35')];}_0x3bdbe1[_0x1dab('0x2c')](_0x309f0d)['send'](_0x5863ec);};}exports[_0x1dab('0x36')]=function(_0x461750,_0x5d9f36){var _0x53d7d5={},_0x12ab12={},_0x7e4b81={'count':0x0,'rows':[]};var _0x5a956c=_[_0x1dab('0x37')](db[_0x1dab('0x38')][_0x1dab('0x39')],function(_0x327f80){return{'name':_0x327f80[_0x1dab('0x3a')],'type':_0x327f80[_0x1dab('0x3b')][_0x1dab('0x3c')]};});_0x12ab12[_0x1dab('0x3d')]=_[_0x1dab('0x37')](_0x5a956c,_0x1dab('0x35'));_0x12ab12[_0x1dab('0x3e')]=_[_0x1dab('0x3f')](_0x461750[_0x1dab('0x3e')]);_0x12ab12[_0x1dab('0x40')]=_['intersection'](_0x12ab12[_0x1dab('0x3d')],_0x12ab12[_0x1dab('0x3e')]);_0x53d7d5[_0x1dab('0x41')]=_[_0x1dab('0x42')](_0x12ab12[_0x1dab('0x3d')],qs[_0x1dab('0x43')](_0x461750[_0x1dab('0x3e')][_0x1dab('0x43')]));_0x53d7d5['attributes']=_0x53d7d5[_0x1dab('0x41')]['length']?_0x53d7d5[_0x1dab('0x41')]:_0x12ab12[_0x1dab('0x3d')];if(!_0x461750[_0x1dab('0x3e')][_0x1dab('0x44')](_0x1dab('0x45'))){_0x53d7d5[_0x1dab('0x2a')]=qs[_0x1dab('0x2a')](_0x461750[_0x1dab('0x3e')]['limit']);_0x53d7d5['offset']=qs[_0x1dab('0x46')](_0x461750[_0x1dab('0x3e')]['offset']);}_0x53d7d5['order']=qs[_0x1dab('0x47')](_0x461750[_0x1dab('0x3e')]['sort']);_0x53d7d5[_0x1dab('0x48')]=qs[_0x1dab('0x40')](_[_0x1dab('0x49')](_0x461750[_0x1dab('0x3e')],_0x12ab12['filters']),_0x5a956c);if(_0x461750[_0x1dab('0x3e')][_0x1dab('0x4a')]){_0x53d7d5[_0x1dab('0x48')]=_[_0x1dab('0x4b')](_0x53d7d5[_0x1dab('0x48')],{'$or':_['map'](_0x5a956c,function(_0x1f9d82){if(_0x1f9d82[_0x1dab('0x3b')]!==_0x1dab('0x4c')){var _0x508a63={};_0x508a63[_0x1f9d82[_0x1dab('0x35')]]={'$like':'%'+_0x461750['query'][_0x1dab('0x4a')]+'%'};return _0x508a63;}})});}_0x53d7d5=_[_0x1dab('0x4b')]({},_0x53d7d5,_0x461750[_0x1dab('0x4d')]);var _0x5afbd9={'where':_0x53d7d5[_0x1dab('0x48')]};return db[_0x1dab('0x38')][_0x1dab('0x2b')](_0x5afbd9)[_0x1dab('0x1e')](function(_0xf7cb5f){_0x7e4b81[_0x1dab('0x2b')]=_0xf7cb5f;if(_0x461750[_0x1dab('0x3e')][_0x1dab('0x4e')]){_0x53d7d5['include']=[{'all':!![]}];}return db[_0x1dab('0x38')][_0x1dab('0x4f')](_0x53d7d5);})['then'](function(_0x4bc528){_0x7e4b81[_0x1dab('0x50')]=_0x4bc528;return _0x7e4b81;})[_0x1dab('0x1e')](respondWithFilteredResult(_0x5d9f36,_0x53d7d5))['catch'](handleError(_0x5d9f36,null));};exports[_0x1dab('0x51')]=function(_0xb8fa23,_0x284302){var _0x568109={'raw':!![],'where':{'id':_0xb8fa23[_0x1dab('0x52')]['id']}},_0x6f374d={};_0x6f374d[_0x1dab('0x3d')]=_[_0x1dab('0x3f')](db['FaxMessage']['rawAttributes']);_0x6f374d['query']=_[_0x1dab('0x3f')](_0xb8fa23[_0x1dab('0x3e')]);_0x6f374d[_0x1dab('0x40')]=_[_0x1dab('0x42')](_0x6f374d[_0x1dab('0x3d')],_0x6f374d['query']);_0x568109[_0x1dab('0x41')]=_['intersection'](_0x6f374d[_0x1dab('0x3d')],qs[_0x1dab('0x43')](_0xb8fa23[_0x1dab('0x3e')][_0x1dab('0x43')]));_0x568109[_0x1dab('0x41')]=_0x568109[_0x1dab('0x41')][_0x1dab('0x53')]?_0x568109[_0x1dab('0x41')]:_0x6f374d[_0x1dab('0x3d')];if(_0xb8fa23['query']['includeAll']){_0x568109[_0x1dab('0x54')]=[{'all':!![]}];}_0x568109=_[_0x1dab('0x4b')]({},_0x568109,_0xb8fa23[_0x1dab('0x4d')]);return db['FaxMessage']['find'](_0x568109)[_0x1dab('0x1e')](handleEntityNotFound(_0x284302,null))['then'](respondWithResult(_0x284302,null))[_0x1dab('0x27')](handleError(_0x284302,null));};exports[_0x1dab('0x31')]=function(_0x56e62a,_0x1cc575){if(_0x56e62a[_0x1dab('0x55')]['id']){delete _0x56e62a[_0x1dab('0x55')]['id'];}return db[_0x1dab('0x38')]['find']({'where':{'id':_0x56e62a[_0x1dab('0x52')]['id']}})[_0x1dab('0x1e')](handleEntityNotFound(_0x1cc575,null))[_0x1dab('0x1e')](saveUpdates(_0x56e62a['body'],null))[_0x1dab('0x1e')](respondWithResult(_0x1cc575,null))[_0x1dab('0x27')](handleError(_0x1cc575,null));};exports[_0x1dab('0x32')]=function(_0x29102a,_0x2d4514){return db[_0x1dab('0x38')][_0x1dab('0x56')]({'where':{'id':_0x29102a[_0x1dab('0x52')]['id']}})[_0x1dab('0x1e')](handleEntityNotFound(_0x2d4514,null))[_0x1dab('0x1e')](removeEntity(_0x2d4514,null))['catch'](handleError(_0x2d4514,null));};exports['describe']=function(_0x5c6f80,_0x101df3){return db['FaxMessage'][_0x1dab('0x57')]()['then'](respondWithResult(_0x101df3,null))[_0x1dab('0x27')](handleError(_0x101df3,null));};var interaction_log=require(_0x1dab('0x58'))(_0x1dab('0x59'));exports[_0x1dab('0x5a')]=function(_0x4f703a,_0x4a78f6,_0x4a4852){var _0x4ecbc9={'agent':{},'channel':_0x1dab('0x5b')};if(_0x4f703a['body']['id']){delete _0x4f703a[_0x1dab('0x55')]['id'];}_0x4f703a[_0x1dab('0x55')][_0x1dab('0x5c')]=!![];_0x4f703a[_0x1dab('0x55')][_0x1dab('0x5d')]=moment()[_0x1dab('0x5e')](_0x1dab('0x5f'));_0x4f703a[_0x1dab('0x55')]['UserId']=_0x4f703a[_0x1dab('0x55')][_0x1dab('0x60')]||_0x4f703a[_0x1dab('0x61')]['id'];_0x4ecbc9[_0x1dab('0x62')]['id']=_0x4f703a['body'][_0x1dab('0x60')];return db['FaxMessage'][_0x1dab('0x56')]({'where':{'id':_0x4f703a[_0x1dab('0x52')]['id'],'UserId':null}})[_0x1dab('0x1e')](handleEntityNotFound(_0x4a78f6,null))[_0x1dab('0x1e')](saveUpdates(_0x4f703a[_0x1dab('0x55')],null))[_0x1dab('0x1e')](function(_0x9e7b9d){if(_0x9e7b9d){_0x4ecbc9[_0x1dab('0x26')]=_0x9e7b9d[_0x1dab('0x63')]({'plain':!![]});return db['FaxInteraction'][_0x1dab('0x56')]({'where':{'id':_0x9e7b9d['FaxInteractionId']}});}return null;})[_0x1dab('0x1e')](handleEntityNotFound(_0x4a78f6,null))[_0x1dab('0x1e')](function(_0x58d514){if(_0x58d514){return _0x58d514[_0x1dab('0x31')]({'UserId':_0x4f703a[_0x1dab('0x55')][_0x1dab('0x60')],'read1stAt':_[_0x1dab('0x64')](_0x58d514[_0x1dab('0x65')])?moment()[_0x1dab('0x5e')](_0x1dab('0x5f')):undefined});}return null;})[_0x1dab('0x1e')](function(_0x3f252e){if(_0x3f252e){_0x4ecbc9[_0x1dab('0x66')]=_0x3f252e[_0x1dab('0x63')]({'plain':!![]});interaction_log[_0x1dab('0x1f')](_0x1dab('0x67'),_0x4f703a['user']['id'],_0x4f703a[_0x1dab('0x61')][_0x1dab('0x35')],_0x4f703a[_0x1dab('0x61')][_0x1dab('0x68')],_0x4ecbc9['interaction']['id'],_0x4f703a['body']?JSON[_0x1dab('0x69')](_0x4f703a[_0x1dab('0x55')]):'null');return respondWithRpcPromise(_0x1dab('0x6a'),_0x1dab('0x6b'),_0x4ecbc9);}return null;})['then'](function(_0x2ed3be){var _0x217f7d='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x2ed3be['message'][_0x1dab('0x6c')];return db['sequelize'][_0x1dab('0x3e')](_0x217f7d,{'type':db[_0x1dab('0x6d')][_0x1dab('0x6e')][_0x1dab('0x6f')],'raw':!![]})['then'](function(_0x21ea99){return _0x21ea99;});})['then'](function(_0xc94952){if(_0xc94952){_0x4ecbc9[_0x1dab('0x26')]['contact']=_0xc94952[0x0];if(!_0x4f703a[_0x1dab('0x55')]['UserId'])return;return db[_0x1dab('0x70')][_0x1dab('0x56')]({'where':{'id':_0x4f703a[_0x1dab('0x55')]['UserId'],'role':_0x1dab('0x62')},'attributes':['id',_0x1dab('0x35'),_0x1dab('0x71'),_0x1dab('0x72'),_0x1dab('0x73')],'raw':!![]});}return null;})['then'](function(_0x38ffcd){if(!_0x38ffcd)return null;_0x4ecbc9[_0x1dab('0x26')][_0x1dab('0x62')]=_0x38ffcd;return _0x4ecbc9;})['then'](function(_0x3be774){if(_0x3be774){if(_0x4f703a['body'][_0x1dab('0x74')]){_0x4ecbc9[_0x1dab('0x26')][_0x1dab('0x75')]=util[_0x1dab('0x5e')](_0x1dab('0x76'),_0x4f703a['user']['name']);_0x4ecbc9[_0x1dab('0x26')][_0x1dab('0x77')]=_0x4ecbc9[_0x1dab('0x77')];_0x4ecbc9['message'][_0x1dab('0x78')]=_0x1dab('0x5a');return respondWithRpcPromise(_0x1dab('0x79'),'EventManager',{'event':'acceptmessage','message':_0x4ecbc9['message']},client9002)[_0x1dab('0x1e')](function(){return _0x4ecbc9;});}return _0x4ecbc9;}return null;})[_0x1dab('0x1e')](respondWithResult(_0x4a78f6,null))[_0x1dab('0x27')](handleError(_0x4a78f6,null));};var interaction_log=require(_0x1dab('0x58'))(_0x1dab('0x59'));exports[_0x1dab('0x30')]=function(_0x3f7f3a,_0x264207,_0x316b66){var _0x4c0c72={'agent':{},'channel':_0x1dab('0x5b')};if(_0x3f7f3a[_0x1dab('0x55')]['id']){delete _0x3f7f3a[_0x1dab('0x55')]['id'];}_0x3f7f3a[_0x1dab('0x55')][_0x1dab('0x60')]=_0x3f7f3a['body'][_0x1dab('0x60')]||_0x3f7f3a[_0x1dab('0x61')]['id'];_0x4c0c72[_0x1dab('0x62')]['id']=_0x3f7f3a['body'][_0x1dab('0x60')];return db[_0x1dab('0x38')][_0x1dab('0x56')]({'where':{'id':_0x3f7f3a[_0x1dab('0x52')]['id'],'UserId':null}})[_0x1dab('0x1e')](handleEntityNotFound(_0x264207,null))[_0x1dab('0x1e')](function(_0x5e4d11){if(_0x5e4d11){_0x4c0c72[_0x1dab('0x26')]=_0x5e4d11['get']({'plain':!![]});return db[_0x1dab('0x7a')][_0x1dab('0x56')]({'where':{'id':_0x5e4d11[_0x1dab('0x7b')]}});}return null;})[_0x1dab('0x1e')](handleEntityNotFound(_0x264207,null))[_0x1dab('0x1e')](function(_0x3607e3){if(_0x3607e3){_0x4c0c72[_0x1dab('0x66')]=_0x3607e3[_0x1dab('0x63')]({'plain':!![]});interaction_log[_0x1dab('0x1f')]('[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x3f7f3a[_0x1dab('0x61')]['id'],_0x3f7f3a[_0x1dab('0x61')]['name'],_0x3f7f3a[_0x1dab('0x61')][_0x1dab('0x68')],_0x4c0c72[_0x1dab('0x66')]['id'],_0x3f7f3a[_0x1dab('0x55')]?JSON[_0x1dab('0x69')](_0x3f7f3a[_0x1dab('0x55')]):'null');return respondWithRpcPromise(_0x1dab('0x7c'),'rejectMessage',_0x4c0c72);}return null;})[_0x1dab('0x1e')](function(_0x92f6b2){var _0x30c201=_0x1dab('0x7d')+_0x92f6b2[_0x1dab('0x26')][_0x1dab('0x6c')];return db[_0x1dab('0x7e')][_0x1dab('0x3e')](_0x30c201,{'type':db[_0x1dab('0x6d')][_0x1dab('0x6e')]['SELECT'],'raw':!![]})[_0x1dab('0x1e')](function(_0x4f94ff){return _0x4f94ff;});})['then'](function(_0x5c998a){if(_0x5c998a){_0x4c0c72[_0x1dab('0x26')][_0x1dab('0x7f')]=_0x5c998a[0x0];if(!_0x3f7f3a[_0x1dab('0x55')][_0x1dab('0x60')])return;return db[_0x1dab('0x70')][_0x1dab('0x56')]({'where':{'id':_0x3f7f3a[_0x1dab('0x55')][_0x1dab('0x60')],'role':_0x1dab('0x62')},'attributes':['id','name',_0x1dab('0x71'),_0x1dab('0x72'),_0x1dab('0x73')],'raw':!![]});}return null;})[_0x1dab('0x1e')](function(_0x321395){if(!_0x321395)return null;_0x4c0c72[_0x1dab('0x26')][_0x1dab('0x62')]=_0x321395;return _0x4c0c72;})[_0x1dab('0x1e')](function(_0x30cebe){if(_0x30cebe){_0x30cebe[_0x1dab('0x26')][_0x1dab('0x75')]=util[_0x1dab('0x5e')](_0x1dab('0x76'),_0x3f7f3a['user'][_0x1dab('0x35')]);_0x30cebe[_0x1dab('0x26')]['channel']=_0x4c0c72[_0x1dab('0x77')];_0x30cebe[_0x1dab('0x26')][_0x1dab('0x78')]=_0x1dab('0x30');respondWithRpcPromise(_0x1dab('0x79'),_0x1dab('0x79'),{'event':_0x1dab('0x80'),'message':_0x30cebe[_0x1dab('0x26')]},client9002);return _0x4c0c72;}return null;})[_0x1dab('0x1e')](respondWithResult(_0x264207,null))[_0x1dab('0x27')](handleError(_0x264207,null));};exports[_0x1dab('0x81')]=function(_0x1efd1f,_0x2c5cc9){var _0x2b9081;return db[_0x1dab('0x38')][_0x1dab('0x81')](_0x1efd1f[_0x1dab('0x55')],{})[_0x1dab('0x1e')](function(_0x4ee827){_0x2b9081=_0x4ee827;return db[_0x1dab('0x82')][_0x1dab('0x83')]({'where':{'id':_0x2b9081[_0x1dab('0x6c')]}});})[_0x1dab('0x1e')](function(_0x5b631c){if(_['isNil'](_0x5b631c)){return;}else{_0x2b9081[_0x1dab('0x5b')]=_0x5b631c[_0x1dab('0x5b')];return db[_0x1dab('0x84')]['findOne']({'where':{'id':_0x2b9081[_0x1dab('0x85')]}});}})['then'](function(_0x3be17a){return respondWithRpcPromise(_0x1dab('0x86'),_0x1dab('0x86'),{'FaxAccountId':_['isNil'](_0x1efd1f['body'])?undefined:_0x1efd1f['body'][_0x1dab('0x87')],'path':_[_0x1dab('0x64')](_0x3be17a)?undefined:util[_0x1dab('0x5e')](_0x1dab('0x88'),_0x3be17a[_0x1dab('0x89')]),'fax':_[_0x1dab('0x64')](_0x2b9081[_0x1dab('0x5b')])?undefined:_0x2b9081[_0x1dab('0x5b')],'AttachmentId':_0x2b9081[_0x1dab('0x85')]},client9002);})[_0x1dab('0x1e')](respondWithResult(_0x2c5cc9,0xc9))[_0x1dab('0x27')](handleError(_0x2c5cc9,null));};exports[_0x1dab('0x8a')]=function(_0x31e507,_0x3b66a2){var _0x233c3a=path[_0x1dab('0x8b')](config[_0x1dab('0x8c')],_0x1dab('0x8d'),_0x1dab('0x8e'),_0x1dab('0x8f'));return db[_0x1dab('0x38')][_0x1dab('0x56')]({'where':{'id':_0x31e507[_0x1dab('0x52')]['id']},'include':[{'model':db['Attachment'],'as':_0x1dab('0x84')}]})[_0x1dab('0x1e')](handleEntityNotFound(_0x3b66a2,null))[_0x1dab('0x1e')](function(_0x5a72f9){if(_0x5a72f9){return _0x3b66a2[_0x1dab('0x8a')](path[_0x1dab('0x8b')](_0x233c3a,_0x5a72f9[_0x1dab('0x84')][_0x1dab('0x89')]));}})['catch'](handleError(_0x3b66a2,null));};
\ No newline at end of file
index 1080559..2a41a33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c16=['save','update','remove','emit','hasOwnProperty','exports','events','../../mysqldb','FaxMessage'];(function(_0x517d70,_0x1ff967){var _0x419864=function(_0x341c47){while(--_0x341c47){_0x517d70['push'](_0x517d70['shift']());}};_0x419864(++_0x1ff967);}(_0x2c16,0xf0));var _0x62c1=function(_0x882139,_0x442697){_0x882139=_0x882139-0x0;var _0x4dd411=_0x2c16[_0x882139];return _0x4dd411;};'use strict';var EventEmitter=require(_0x62c1('0x0'));var FaxMessage=require(_0x62c1('0x1'))['db'][_0x62c1('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x62c1('0x3'),'afterUpdate':_0x62c1('0x4'),'afterDestroy':_0x62c1('0x5')};function emitEvent(_0x1b49a4){return function(_0x8b3478,_0x4521ed,_0x10d47b){FaxMessageEvents[_0x62c1('0x6')](_0x1b49a4+':'+_0x8b3478['id'],_0x8b3478);FaxMessageEvents[_0x62c1('0x6')](_0x1b49a4,_0x8b3478);_0x10d47b(null);};}for(var e in events){if(events[_0x62c1('0x7')](e)){var event=events[e];FaxMessage['hook'](e,emitEvent(event));}}module[_0x62c1('0x8')]=FaxMessageEvents;
\ No newline at end of file
+var _0x2d06=['FaxMessage','setMaxListeners','save','remove','emit','hook','exports','../../mysqldb'];(function(_0x1d0035,_0x45354b){var _0x310e3a=function(_0x2004f0){while(--_0x2004f0){_0x1d0035['push'](_0x1d0035['shift']());}};_0x310e3a(++_0x45354b);}(_0x2d06,0x157));var _0x62d0=function(_0x2e4eba,_0x7d62da){_0x2e4eba=_0x2e4eba-0x0;var _0x12d5a7=_0x2d06[_0x2e4eba];return _0x12d5a7;};'use strict';var EventEmitter=require('events');var FaxMessage=require(_0x62d0('0x0'))['db'][_0x62d0('0x1')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x62d0('0x2')](0x0);var events={'afterCreate':_0x62d0('0x3'),'afterUpdate':'update','afterDestroy':_0x62d0('0x4')};function emitEvent(_0x32be50){return function(_0x2487bb,_0x984713,_0x5cf315){FaxMessageEvents[_0x62d0('0x5')](_0x32be50+':'+_0x2487bb['id'],_0x2487bb);FaxMessageEvents[_0x62d0('0x5')](_0x32be50,_0x2487bb);_0x5cf315(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxMessage[_0x62d0('0x6')](e,emitEvent(event));}}module[_0x62d0('0x7')]=FaxMessageEvents;
\ No newline at end of file
index 7989853..c94727d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x787b=['body','FULLTEXT','models','get','direction','toLowerCase','out','isNil','UserId','FaxInteraction','findOne','FaxInteractionId','then','update','createdAt','catch','error','utf8mb4','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./faxMessage.attributes','exports','FaxMessage'];(function(_0x1365ae,_0x25be8e){var _0x525a9e=function(_0x4110a7){while(--_0x4110a7){_0x1365ae['push'](_0x1365ae['shift']());}};_0x525a9e(++_0x25be8e);}(_0x787b,0x17e));var _0xb787=function(_0x46a671,_0x758e9a){_0x46a671=_0x46a671-0x0;var _0x526d75=_0x787b[_0x46a671];return _0x526d75;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xb787('0x0'))(_0xb787('0x1'));var moment=require('moment');var BPromise=require(_0xb787('0x2'));var rp=require(_0xb787('0x3'));var fs=require('fs');var path=require(_0xb787('0x4'));var rimraf=require(_0xb787('0x5'));var config=require(_0xb787('0x6'));var attributes=require(_0xb787('0x7'));module[_0xb787('0x8')]=function(_0x20af50,_0x3924ca){return _0x20af50['define'](_0xb787('0x9'),attributes,{'tableName':'fax_messages','paranoid':![],'indexes':[{'name':'fti_fax_messages','fields':[_0xb787('0xa')],'type':_0xb787('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4e4118,_0x1a028c,_0x27e076){var _0x3f4cf0=_0x20af50[_0xb787('0xc')];var _0x494ef7=_0x4e4118[_0xb787('0xd')]({'plain':!![]});if(_0x494ef7[_0xb787('0xe')]['toLowerCase']()==='in'||_0x494ef7[_0xb787('0xe')][_0xb787('0xf')]()===_0xb787('0x10')&&!_0x494ef7['secret']&&!_[_0xb787('0x11')](_0x494ef7[_0xb787('0x12')])){_0x3f4cf0[_0xb787('0x13')][_0xb787('0x14')]({'where':{'id':_0x494ef7[_0xb787('0x15')]}})[_0xb787('0x16')](function(_0x160d54){if(_0x160d54){_0x160d54[_0xb787('0x17')]({'lastMsgAt':_0x494ef7[_0xb787('0x18')],'lastMsgDirection':_0x494ef7[_0xb787('0xe')][_0xb787('0xf')]()});}})[_0xb787('0x19')](function(_0x2f8175){console[_0xb787('0x1a')](_0x2f8175);});}_0x27e076();}},'charset':_0xb787('0x1b'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x7bf3=['request-promise','path','./faxMessage.attributes','exports','define','fax_messages','fti_fax_messages','models','get','toLowerCase','out','isNil','UserId','FaxInteraction','findOne','FaxInteractionId','update','createdAt','catch','error','utf8mb4','lodash','util','../../config/logger','moment','bluebird'];(function(_0xa721a5,_0x55a92c){var _0x5511d0=function(_0x5a8dea){while(--_0x5a8dea){_0xa721a5['push'](_0xa721a5['shift']());}};_0x5511d0(++_0x55a92c);}(_0x7bf3,0x119));var _0x37bf=function(_0x27d978,_0x1b8927){_0x27d978=_0x27d978-0x0;var _0x373d25=_0x7bf3[_0x27d978];return _0x373d25;};'use strict';var _=require(_0x37bf('0x0'));var util=require(_0x37bf('0x1'));var logger=require(_0x37bf('0x2'))('api');var moment=require(_0x37bf('0x3'));var BPromise=require(_0x37bf('0x4'));var rp=require(_0x37bf('0x5'));var fs=require('fs');var path=require(_0x37bf('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x37bf('0x7'));module[_0x37bf('0x8')]=function(_0x3eee7d,_0x1a9846){return _0x3eee7d[_0x37bf('0x9')]('FaxMessage',attributes,{'tableName':_0x37bf('0xa'),'paranoid':![],'indexes':[{'name':_0x37bf('0xb'),'fields':['body'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x36c656,_0x58fa06,_0x239b2f){var _0x31681b=_0x3eee7d[_0x37bf('0xc')];var _0x139bac=_0x36c656[_0x37bf('0xd')]({'plain':!![]});if(_0x139bac['direction']['toLowerCase']()==='in'||_0x139bac['direction'][_0x37bf('0xe')]()===_0x37bf('0xf')&&!_0x139bac['secret']&&!_[_0x37bf('0x10')](_0x139bac[_0x37bf('0x11')])){_0x31681b[_0x37bf('0x12')][_0x37bf('0x13')]({'where':{'id':_0x139bac[_0x37bf('0x14')]}})['then'](function(_0x542b9f){if(_0x542b9f){_0x542b9f[_0x37bf('0x15')]({'lastMsgAt':_0x139bac[_0x37bf('0x16')],'lastMsgDirection':_0x139bac['direction'][_0x37bf('0xe')]()});}})[_0x37bf('0x17')](function(_0x3151ef){console[_0x37bf('0x18')](_0x3151ef);});}_0x239b2f();}},'charset':_0x37bf('0x19'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 0687674..9e2d0ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e85=['catch','FaxMessage','create','body','options','raw','info','CreateFaxMessage','UpdateFaxMessage','update','where','attributes','limit','lodash','util','bluebird','randomstring','../../config/logger','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./faxMessage.socket','request','then','request\x20sent','debug','stringify','error','code','FaxMessage,\x20%s,\x20%s','message','result'];(function(_0x33dbe7,_0x2baac5){var _0x6a957f=function(_0x1d1135){while(--_0x1d1135){_0x33dbe7['push'](_0x33dbe7['shift']());}};_0x6a957f(++_0x2baac5);}(_0x0e85,0x7c));var _0x50e8=function(_0x243b59,_0x3f9495){_0x243b59=_0x243b59-0x0;var _0x3e1676=_0x0e85[_0x243b59];return _0x3e1676;};'use strict';var _=require(_0x50e8('0x0'));var util=require(_0x50e8('0x1'));var moment=require('moment');var BPromise=require(_0x50e8('0x2'));var rs=require(_0x50e8('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x50e8('0x4'))('rpc');var config=require(_0x50e8('0x5'));var jayson=require(_0x50e8('0x6'));var client=jayson[_0x50e8('0x7')][_0x50e8('0x8')]({'port':0x232a});config['redis']=_[_0x50e8('0x9')](config[_0x50e8('0xa')],{'host':_0x50e8('0xb'),'port':0x18eb});var socket=require(_0x50e8('0xc'))(new Redis(config[_0x50e8('0xa')]));require(_0x50e8('0xd'))['register'](socket);function respondWithRpcPromise(_0x11717c,_0x228ed1,_0x19d1bc){return new BPromise(function(_0x2d4750,_0x154b9e){return client[_0x50e8('0xe')](_0x11717c,_0x19d1bc)[_0x50e8('0xf')](function(_0x3d25ea){logger['info']('FaxMessage,\x20%s,\x20%s',_0x228ed1,_0x50e8('0x10'));logger[_0x50e8('0x11')]('FaxMessage,\x20%s,\x20%s,\x20%s',_0x228ed1,'request\x20sent',JSON[_0x50e8('0x12')](_0x3d25ea));if(_0x3d25ea[_0x50e8('0x13')]){if(_0x3d25ea[_0x50e8('0x13')][_0x50e8('0x14')]===0x1f4){logger['error'](_0x50e8('0x15'),_0x228ed1,_0x3d25ea[_0x50e8('0x13')][_0x50e8('0x16')]);return _0x154b9e(_0x3d25ea['error']['message']);}logger[_0x50e8('0x13')](_0x50e8('0x15'),_0x228ed1,_0x3d25ea[_0x50e8('0x13')][_0x50e8('0x16')]);return _0x2d4750(_0x3d25ea[_0x50e8('0x13')][_0x50e8('0x16')]);}else{logger['info']('FaxMessage,\x20%s,\x20%s',_0x228ed1,_0x50e8('0x10'));_0x2d4750(_0x3d25ea[_0x50e8('0x17')][_0x50e8('0x16')]);}})[_0x50e8('0x18')](function(_0x5dae4e){logger[_0x50e8('0x13')](_0x50e8('0x15'),_0x228ed1,_0x5dae4e);_0x154b9e(_0x5dae4e);});});}exports['CreateFaxMessage']=function(_0x415596){var _0x55997c=this;return new Promise(function(_0x4d2318,_0xe04a5c){return db[_0x50e8('0x19')][_0x50e8('0x1a')](_0x415596[_0x50e8('0x1b')],{'raw':_0x415596['options']?_0x415596[_0x50e8('0x1c')][_0x50e8('0x1d')]===undefined?!![]:![]:!![]})['then'](function(_0x31d23c){logger[_0x50e8('0x1e')]('CreateFaxMessage',_0x415596);logger[_0x50e8('0x11')](_0x50e8('0x1f'),_0x415596,JSON['stringify'](_0x31d23c));_0x4d2318(_0x31d23c);})['catch'](function(_0x59582d){logger[_0x50e8('0x13')](_0x50e8('0x1f'),_0x59582d[_0x50e8('0x16')],_0x415596);_0xe04a5c(_0x55997c[_0x50e8('0x13')](0x1f4,_0x59582d[_0x50e8('0x16')]));});});};exports[_0x50e8('0x20')]=function(_0x53d848){var _0x3a6442=this;return new Promise(function(_0x396611,_0x4b3a09){return db[_0x50e8('0x19')][_0x50e8('0x21')](_0x53d848[_0x50e8('0x1b')],{'raw':_0x53d848[_0x50e8('0x1c')]?_0x53d848['options'][_0x50e8('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x53d848['options']?_0x53d848[_0x50e8('0x1c')][_0x50e8('0x22')]||null:null,'attributes':_0x53d848[_0x50e8('0x1c')]?_0x53d848['options'][_0x50e8('0x23')]||null:null,'limit':_0x53d848[_0x50e8('0x1c')]?_0x53d848[_0x50e8('0x1c')][_0x50e8('0x24')]||null:null})[_0x50e8('0xf')](function(_0x18aa31){logger[_0x50e8('0x1e')]('UpdateFaxMessage',_0x53d848);logger[_0x50e8('0x11')](_0x50e8('0x20'),_0x53d848,JSON['stringify'](_0x18aa31));_0x396611(_0x18aa31);})['catch'](function(_0x329b9c){logger[_0x50e8('0x13')](_0x50e8('0x20'),_0x329b9c['message'],_0x53d848);_0x4b3a09(_0x3a6442['error'](0x1f4,_0x329b9c[_0x50e8('0x16')]));});});};
\ No newline at end of file
+var _0xed1f=['jayson/promise','client','http','redis','defaults','localhost','./faxMessage.socket','request','then','FaxMessage,\x20%s,\x20%s','request\x20sent','FaxMessage,\x20%s,\x20%s,\x20%s','error','message','CreateFaxMessage','FaxMessage','create','body','options','raw','info','catch','UpdateFaxMessage','update','attributes','limit','debug','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xed1f,0x6a));var _0xfed1=function(_0x58e469,_0x95ee3e){_0x58e469=_0x58e469-0x0;var _0x4c01c5=_0xed1f[_0x58e469];return _0x4c01c5;};'use strict';var _=require(_0xfed1('0x0'));var util=require(_0xfed1('0x1'));var moment=require(_0xfed1('0x2'));var BPromise=require(_0xfed1('0x3'));var rs=require(_0xfed1('0x4'));var fs=require('fs');var Redis=require(_0xfed1('0x5'));var db=require(_0xfed1('0x6'))['db'];var utils=require(_0xfed1('0x7'));var logger=require(_0xfed1('0x8'))(_0xfed1('0x9'));var config=require(_0xfed1('0xa'));var jayson=require(_0xfed1('0xb'));var client=jayson[_0xfed1('0xc')][_0xfed1('0xd')]({'port':0x232a});config[_0xfed1('0xe')]=_[_0xfed1('0xf')](config[_0xfed1('0xe')],{'host':_0xfed1('0x10'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xfed1('0xe')]));require(_0xfed1('0x11'))['register'](socket);function respondWithRpcPromise(_0x1414be,_0x7bf48c,_0x4a564e){return new BPromise(function(_0x3ce017,_0x48c338){return client[_0xfed1('0x12')](_0x1414be,_0x4a564e)[_0xfed1('0x13')](function(_0x4a8369){logger['info'](_0xfed1('0x14'),_0x7bf48c,_0xfed1('0x15'));logger['debug'](_0xfed1('0x16'),_0x7bf48c,'request\x20sent',JSON['stringify'](_0x4a8369));if(_0x4a8369[_0xfed1('0x17')]){if(_0x4a8369[_0xfed1('0x17')]['code']===0x1f4){logger[_0xfed1('0x17')]('FaxMessage,\x20%s,\x20%s',_0x7bf48c,_0x4a8369['error'][_0xfed1('0x18')]);return _0x48c338(_0x4a8369[_0xfed1('0x17')][_0xfed1('0x18')]);}logger[_0xfed1('0x17')]('FaxMessage,\x20%s,\x20%s',_0x7bf48c,_0x4a8369[_0xfed1('0x17')]['message']);return _0x3ce017(_0x4a8369[_0xfed1('0x17')][_0xfed1('0x18')]);}else{logger['info'](_0xfed1('0x14'),_0x7bf48c,_0xfed1('0x15'));_0x3ce017(_0x4a8369['result']['message']);}})['catch'](function(_0x1e5afb){logger['error'](_0xfed1('0x14'),_0x7bf48c,_0x1e5afb);_0x48c338(_0x1e5afb);});});}exports[_0xfed1('0x19')]=function(_0x51a860){var _0x94cb84=this;return new Promise(function(_0x65f14b,_0x59ee9d){return db[_0xfed1('0x1a')][_0xfed1('0x1b')](_0x51a860[_0xfed1('0x1c')],{'raw':_0x51a860[_0xfed1('0x1d')]?_0x51a860['options'][_0xfed1('0x1e')]===undefined?!![]:![]:!![]})['then'](function(_0x446558){logger[_0xfed1('0x1f')](_0xfed1('0x19'),_0x51a860);logger['debug'](_0xfed1('0x19'),_0x51a860,JSON['stringify'](_0x446558));_0x65f14b(_0x446558);})[_0xfed1('0x20')](function(_0x2793b7){logger[_0xfed1('0x17')](_0xfed1('0x19'),_0x2793b7[_0xfed1('0x18')],_0x51a860);_0x59ee9d(_0x94cb84[_0xfed1('0x17')](0x1f4,_0x2793b7['message']));});});};exports[_0xfed1('0x21')]=function(_0xcb1cdc){var _0x49072b=this;return new Promise(function(_0x1d6c72,_0x2b9dd2){return db[_0xfed1('0x1a')][_0xfed1('0x22')](_0xcb1cdc[_0xfed1('0x1c')],{'raw':_0xcb1cdc[_0xfed1('0x1d')]?_0xcb1cdc['options'][_0xfed1('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xcb1cdc['options']?_0xcb1cdc[_0xfed1('0x1d')]['where']||null:null,'attributes':_0xcb1cdc['options']?_0xcb1cdc[_0xfed1('0x1d')][_0xfed1('0x23')]||null:null,'limit':_0xcb1cdc[_0xfed1('0x1d')]?_0xcb1cdc['options'][_0xfed1('0x24')]||null:null})[_0xfed1('0x13')](function(_0x13f414){logger[_0xfed1('0x1f')](_0xfed1('0x21'),_0xcb1cdc);logger[_0xfed1('0x25')]('UpdateFaxMessage',_0xcb1cdc,JSON[_0xfed1('0x26')](_0x13f414));_0x1d6c72(_0x13f414);})[_0xfed1('0x20')](function(_0x4fc309){logger['error'](_0xfed1('0x21'),_0x4fc309[_0xfed1('0x18')],_0xcb1cdc);_0x2b9dd2(_0x49072b[_0xfed1('0x17')](0x1f4,_0x4fc309[_0xfed1('0x18')]));});});};
\ No newline at end of file
index 9ac3c6d..24298bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1caf=['removeListener','register','length','faxMessage:','save','remove','update'];(function(_0x58d07b,_0x4e5991){var _0x1dc1fb=function(_0x4459bc){while(--_0x4459bc){_0x58d07b['push'](_0x58d07b['shift']());}};_0x1dc1fb(++_0x4e5991);}(_0x1caf,0x1d9));var _0xf1ca=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0x1caf[_0x24237f];return _0x48298e;};'use strict';var FaxMessageEvents=require('./faxMessage.events');var events=[_0xf1ca('0x0'),_0xf1ca('0x1'),_0xf1ca('0x2')];function createListener(_0x3f0003,_0x16340f){return function(_0x5bc1e5){_0x16340f['emit'](_0x3f0003,_0x5bc1e5);};}function removeListener(_0x301809,_0xd0b178){return function(){FaxMessageEvents[_0xf1ca('0x3')](_0x301809,_0xd0b178);};}exports[_0xf1ca('0x4')]=function(_0x3b9c8c){for(var _0x5732e3=0x0,_0x5458da=events[_0xf1ca('0x5')];_0x5732e3<_0x5458da;_0x5732e3++){var _0x24f2d9=events[_0x5732e3];var _0x3f1bef=createListener(_0xf1ca('0x6')+_0x24f2d9,_0x3b9c8c);FaxMessageEvents['on'](_0x24f2d9,_0x3f1bef);}};
\ No newline at end of file
+var _0x7554=['faxMessage:','save','remove','update','emit','length'];(function(_0x4a747d,_0x3b747f){var _0x3a5b5c=function(_0x4b3e81){while(--_0x4b3e81){_0x4a747d['push'](_0x4a747d['shift']());}};_0x3a5b5c(++_0x3b747f);}(_0x7554,0xbb));var _0x4755=function(_0x3f0dc2,_0x3352f4){_0x3f0dc2=_0x3f0dc2-0x0;var _0x37686b=_0x7554[_0x3f0dc2];return _0x37686b;};'use strict';var FaxMessageEvents=require('./faxMessage.events');var events=[_0x4755('0x0'),_0x4755('0x1'),_0x4755('0x2')];function createListener(_0x22dd88,_0x49f58c){return function(_0x2227f4){_0x49f58c[_0x4755('0x3')](_0x22dd88,_0x2227f4);};}function removeListener(_0x257724,_0x3c5d79){return function(){FaxMessageEvents['removeListener'](_0x257724,_0x3c5d79);};}exports['register']=function(_0x88f550){for(var _0x5de89a=0x0,_0x57d9aa=events[_0x4755('0x4')];_0x5de89a<_0x57d9aa;_0x5de89a++){var _0x2a50a6=events[_0x5de89a];var _0x13fd39=createListener(_0x4755('0x5')+_0x2a50a6,_0x88f550);FaxMessageEvents['on'](_0x2a50a6,_0x13fd39);}};
\ No newline at end of file
index 3e4c6b1..0513072 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3d1=['put','update','accept','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/download','download','post','tracked','fax','faxmessage:create','create'];(function(_0x1a48c9,_0x4f06aa){var _0x2fb5c1=function(_0x5cd25b){while(--_0x5cd25b){_0x1a48c9['push'](_0x1a48c9['shift']());}};_0x2fb5c1(++_0x4f06aa);}(_0xd3d1,0x172));var _0x1d3d=function(_0x5f0089,_0x227e2c){_0x5f0089=_0x5f0089-0x0;var _0x193892=_0xd3d1[_0x5f0089];return _0x193892;};'use strict';var multer=require(_0x1d3d('0x0'));var util=require(_0x1d3d('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x1d3d('0x2'));var router=express[_0x1d3d('0x3')]();var fs_extra=require(_0x1d3d('0x4'));var auth=require(_0x1d3d('0x5'));var interaction=require(_0x1d3d('0x6'));var config=require(_0x1d3d('0x7'));var controller=require(_0x1d3d('0x8'));router[_0x1d3d('0x9')]('/',auth[_0x1d3d('0xa')](),controller[_0x1d3d('0xb')]);router[_0x1d3d('0x9')](_0x1d3d('0xc'),auth[_0x1d3d('0xa')](),controller[_0x1d3d('0xd')]);router[_0x1d3d('0x9')](_0x1d3d('0xe'),auth[_0x1d3d('0xa')](),controller['show']);router[_0x1d3d('0x9')](_0x1d3d('0xf'),auth[_0x1d3d('0xa')](),controller[_0x1d3d('0x10')]);router[_0x1d3d('0x11')]('/',auth[_0x1d3d('0xa')](),interaction[_0x1d3d('0x12')](_0x1d3d('0x13'),_0x1d3d('0x14')),controller[_0x1d3d('0x15')]);router[_0x1d3d('0x16')]('/:id',auth[_0x1d3d('0xa')](),controller[_0x1d3d('0x17')]);router['put']('/:id/accept',auth[_0x1d3d('0xa')](),controller[_0x1d3d('0x18')]);router[_0x1d3d('0x16')]('/:id/reject',auth[_0x1d3d('0xa')](),controller['reject']);router[_0x1d3d('0x19')](_0x1d3d('0xe'),auth[_0x1d3d('0xa')](),controller[_0x1d3d('0x1a')]);module[_0x1d3d('0x1b')]=router;
\ No newline at end of file
+var _0x0565=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','/:id','show','/:id/download','post','tracked','create','update','/:id/accept','accept','/:id/reject','reject','delete','exports','multer'];(function(_0x28fbe3,_0x4ac6f8){var _0x45db6a=function(_0x296ecb){while(--_0x296ecb){_0x28fbe3['push'](_0x28fbe3['shift']());}};_0x45db6a(++_0x4ac6f8);}(_0x0565,0xf2));var _0x5056=function(_0x725b8e,_0xc22b48){_0x725b8e=_0x725b8e-0x0;var _0x43ac45=_0x0565[_0x725b8e];return _0x43ac45;};'use strict';var multer=require(_0x5056('0x0'));var util=require(_0x5056('0x1'));var path=require(_0x5056('0x2'));var timeout=require(_0x5056('0x3'));var express=require(_0x5056('0x4'));var router=express[_0x5056('0x5')]();var fs_extra=require(_0x5056('0x6'));var auth=require(_0x5056('0x7'));var interaction=require(_0x5056('0x8'));var config=require(_0x5056('0x9'));var controller=require('./faxMessage.controller');router[_0x5056('0xa')]('/',auth[_0x5056('0xb')](),controller[_0x5056('0xc')]);router[_0x5056('0xa')]('/describe',auth['isAuthenticated'](),controller[_0x5056('0xd')]);router[_0x5056('0xa')](_0x5056('0xe'),auth[_0x5056('0xb')](),controller[_0x5056('0xf')]);router[_0x5056('0xa')](_0x5056('0x10'),auth[_0x5056('0xb')](),controller['download']);router[_0x5056('0x11')]('/',auth[_0x5056('0xb')](),interaction[_0x5056('0x12')]('fax','faxmessage:create'),controller[_0x5056('0x13')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x5056('0x14')]);router['put'](_0x5056('0x15'),auth[_0x5056('0xb')](),controller[_0x5056('0x16')]);router['put'](_0x5056('0x17'),auth[_0x5056('0xb')](),controller[_0x5056('0x18')]);router[_0x5056('0x19')](_0x5056('0xe'),auth[_0x5056('0xb')](),controller['destroy']);module[_0x5056('0x1a')]=router;
\ No newline at end of file
index f5b36ea..97cda83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30e0=['STRING','ENUM','rrmemory','roundrobin','exports','name'];(function(_0x281316,_0xd583f){var _0x2dbc1=function(_0x1b19de){while(--_0x1b19de){_0x281316['push'](_0x281316['shift']());}};_0x2dbc1(++_0xd583f);}(_0x30e0,0x130));var _0x030e=function(_0x1af1e1,_0x37bc24){_0x1af1e1=_0x1af1e1-0x0;var _0x5f3450=_0x30e0[_0x1af1e1];return _0x5f3450;};'use strict';var Sequelize=require('sequelize');module[_0x030e('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0x030e('0x1'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x030e('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x030e('0x3')](_0x030e('0x4'),'beepall',_0x030e('0x5')),'allowNull':![]},'lastAgent':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xd301=['rrmemory','beepall','roundrobin','sequelize','STRING','INTEGER','ENUM'];(function(_0x7457fe,_0x564a5e){var _0x57a6e4=function(_0x566577){while(--_0x566577){_0x7457fe['push'](_0x7457fe['shift']());}};_0x57a6e4(++_0x564a5e);}(_0xd301,0x145));var _0x1d30=function(_0x34365b,_0x418c5a){_0x34365b=_0x34365b-0x0;var _0x12d73a=_0xd301[_0x34365b];return _0x12d73a;};'use strict';var Sequelize=require(_0x1d30('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x1d30('0x1')]},'timeout':{'type':Sequelize[_0x1d30('0x2')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x1d30('0x3')](_0x1d30('0x4'),_0x1d30('0x5'),_0x1d30('0x6')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x1d30('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 332044f..c7e2c76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26f7=['SELECT','every','TeamId','includes','all','union','value','removeTeams','isEmpty','removeAgents','emit','userFaxQueue:remove','omit','spread','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','save','update','destroy','then','get','FaxQueues','name','send','index','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','options','FaxQueue','includeAll','include','findAll','catch','show','fields','create','body','user','role','UserProfileSection','userProfileId','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','params','describe','getMembers','findOne','FaxQueueId','filter','UserFaxQueue','findAndCountAll','UserId','agent','faxPause','updatedAt','rows','format','%s/%s','createdAt','getTeams','Team','addTeams','ids','User','online','voicePause','interface','Agents','transaction','each','findOrCreate','forEach','userFaxQueue:save','field','team_has_fax_queues','FaxQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','sequelize','QueryTypes'];(function(_0x27756e,_0x4bb95d){var _0x5f5839=function(_0x2ece7b){while(--_0x2ece7b){_0x27756e['push'](_0x27756e['shift']());}};_0x5f5839(++_0x4bb95d);}(_0x26f7,0x12e));var _0x726f=function(_0x442981,_0x564dab){_0x442981=_0x442981-0x0;var _0x6da797=_0x26f7[_0x442981];return _0x6da797;};'use strict';var emlformat=require(_0x726f('0x0'));var rimraf=require(_0x726f('0x1'));var zipdir=require(_0x726f('0x2'));var jsonpatch=require(_0x726f('0x3'));var rp=require(_0x726f('0x4'));var moment=require(_0x726f('0x5'));var BPromise=require(_0x726f('0x6'));var Mustache=require(_0x726f('0x7'));var util=require('util');var path=require(_0x726f('0x8'));var sox=require(_0x726f('0x9'));var csv=require(_0x726f('0xa'));var ejs=require(_0x726f('0xb'));var fs=require('fs');var fs_extra=require(_0x726f('0xc'));var _=require(_0x726f('0xd'));var squel=require(_0x726f('0xe'));var crypto=require(_0x726f('0xf'));var jsforce=require(_0x726f('0x10'));var deskjs=require(_0x726f('0x11'));var toCsv=require(_0x726f('0xa'));var querystring=require(_0x726f('0x12'));var Papa=require(_0x726f('0x13'));var Redis=require(_0x726f('0x14'));var authService=require(_0x726f('0x15'));var qs=require(_0x726f('0x16'));var as=require(_0x726f('0x17'));var hardwareService=require(_0x726f('0x18'));var logger=require(_0x726f('0x19'))(_0x726f('0x1a'));var utils=require(_0x726f('0x1b'));var config=require(_0x726f('0x1c'));var licenseUtil=require(_0x726f('0x1d'));var db=require(_0x726f('0x1e'))['db'];config[_0x726f('0x1f')]=_['defaults'](config[_0x726f('0x1f')],{'host':_0x726f('0x20'),'port':0x18eb});var socket=require(_0x726f('0x21'))(new Redis(config[_0x726f('0x1f')]));require('./faxQueue.socket')[_0x726f('0x22')](socket);function respondWithStatusCode(_0x2611be,_0x235975){_0x235975=_0x235975||0xcc;return function(_0x19db52){if(_0x19db52){return _0x2611be[_0x726f('0x23')](_0x235975);}return _0x2611be[_0x726f('0x24')](_0x235975)[_0x726f('0x25')]();};}function respondWithResult(_0x5483e0,_0x3aa9aa){_0x3aa9aa=_0x3aa9aa||0xc8;return function(_0x5d69a2){if(_0x5d69a2){return _0x5483e0[_0x726f('0x24')](_0x3aa9aa)[_0x726f('0x26')](_0x5d69a2);}};}function respondWithFilteredResult(_0x58a918,_0x4677d0){return function(_0x4bf7d9){if(_0x4bf7d9){var _0x2e8e89=typeof _0x4677d0[_0x726f('0x27')]===_0x726f('0x28')&&typeof _0x4677d0[_0x726f('0x29')]==='undefined';var _0x1375bd=_0x4bf7d9[_0x726f('0x2a')];var _0x19860e=_0x2e8e89?0x0:_0x4677d0[_0x726f('0x27')];var _0x24d196=_0x2e8e89?_0x4bf7d9[_0x726f('0x2a')]:_0x4677d0[_0x726f('0x27')]+_0x4677d0[_0x726f('0x29')];var _0x59f461;if(_0x24d196>=_0x1375bd){_0x24d196=_0x1375bd;_0x59f461=0xc8;}else{_0x59f461=0xce;}_0x58a918[_0x726f('0x24')](_0x59f461);return _0x58a918['set'](_0x726f('0x2b'),_0x19860e+'-'+_0x24d196+'/'+_0x1375bd)['json'](_0x4bf7d9);}return null;};}function patchUpdates(_0x1e5603){return function(_0x49ece1){try{jsonpatch['apply'](_0x49ece1,_0x1e5603,!![]);}catch(_0x386cb4){return BPromise['reject'](_0x386cb4);}return _0x49ece1[_0x726f('0x2c')]();};}function saveUpdates(_0x17edbb,_0x313f04){return function(_0x391d81){if(_0x391d81){return _0x391d81[_0x726f('0x2d')](_0x17edbb)['then'](function(_0x406d33){return _0x406d33;});}return null;};}function removeEntity(_0x4c1e0e,_0x46a020){return function(_0x236513){if(_0x236513){return _0x236513[_0x726f('0x2e')]()[_0x726f('0x2f')](function(){var _0x18b256=_0x236513[_0x726f('0x30')]({'plain':!![]});var _0x4dd536=_0x726f('0x31');return db['UserProfileResource'][_0x726f('0x2e')]({'where':{'type':_0x4dd536,'resourceId':_0x18b256['id']}})[_0x726f('0x2f')](function(){return _0x236513;});})['then'](function(){_0x4c1e0e[_0x726f('0x24')](0xcc)[_0x726f('0x25')]();});}};}function handleEntityNotFound(_0x1aeaa9,_0x297022){return function(_0x1f83c9){if(!_0x1f83c9){_0x1aeaa9[_0x726f('0x23')](0x194);}return _0x1f83c9;};}function handleError(_0x489372,_0x26f6a0){_0x26f6a0=_0x26f6a0||0x1f4;return function(_0x3c418b){logger['error'](_0x3c418b['stack']);if(_0x3c418b['name']){delete _0x3c418b[_0x726f('0x32')];}_0x489372[_0x726f('0x24')](_0x26f6a0)[_0x726f('0x33')](_0x3c418b);};}exports[_0x726f('0x34')]=function(_0x26a157,_0x5f21ea){var _0x171113={},_0x2caedd={},_0xbc4f7a={'count':0x0,'rows':[]};var _0xf314c0=_['map'](db['FaxQueue'][_0x726f('0x35')],function(_0x2952f4){return{'name':_0x2952f4[_0x726f('0x36')],'type':_0x2952f4[_0x726f('0x37')][_0x726f('0x38')]};});_0x2caedd['model']=_[_0x726f('0x39')](_0xf314c0,_0x726f('0x32'));_0x2caedd[_0x726f('0x3a')]=_[_0x726f('0x3b')](_0x26a157[_0x726f('0x3a')]);_0x2caedd[_0x726f('0x3c')]=_[_0x726f('0x3d')](_0x2caedd[_0x726f('0x3e')],_0x2caedd[_0x726f('0x3a')]);_0x171113['attributes']=_[_0x726f('0x3d')](_0x2caedd[_0x726f('0x3e')],qs['fields'](_0x26a157[_0x726f('0x3a')]['fields']));_0x171113[_0x726f('0x3f')]=_0x171113[_0x726f('0x3f')][_0x726f('0x40')]?_0x171113[_0x726f('0x3f')]:_0x2caedd[_0x726f('0x3e')];if(!_0x26a157[_0x726f('0x3a')][_0x726f('0x41')](_0x726f('0x42'))){_0x171113[_0x726f('0x29')]=qs[_0x726f('0x29')](_0x26a157[_0x726f('0x3a')][_0x726f('0x29')]);_0x171113[_0x726f('0x27')]=qs[_0x726f('0x27')](_0x26a157['query'][_0x726f('0x27')]);}_0x171113[_0x726f('0x43')]=qs[_0x726f('0x44')](_0x26a157[_0x726f('0x3a')][_0x726f('0x44')]);_0x171113[_0x726f('0x45')]=qs[_0x726f('0x3c')](_[_0x726f('0x46')](_0x26a157[_0x726f('0x3a')],_0x2caedd[_0x726f('0x3c')]),_0xf314c0);if(_0x26a157[_0x726f('0x3a')]['filter']){_0x171113['where']=_[_0x726f('0x47')](_0x171113[_0x726f('0x45')],{'$or':_['map'](_0xf314c0,function(_0xa8a77a){if(_0xa8a77a[_0x726f('0x37')]!=='VIRTUAL'){var _0x117c12={};_0x117c12[_0xa8a77a[_0x726f('0x32')]]={'$like':'%'+_0x26a157[_0x726f('0x3a')]['filter']+'%'};return _0x117c12;}})});}_0x171113=_['merge']({},_0x171113,_0x26a157[_0x726f('0x48')]);var _0x43bf24={'where':_0x171113[_0x726f('0x45')]};return db[_0x726f('0x49')]['count'](_0x43bf24)['then'](function(_0x2d1293){_0xbc4f7a[_0x726f('0x2a')]=_0x2d1293;if(_0x26a157[_0x726f('0x3a')][_0x726f('0x4a')]){_0x171113[_0x726f('0x4b')]=[{'all':!![]}];}return db['FaxQueue'][_0x726f('0x4c')](_0x171113);})[_0x726f('0x2f')](function(_0x2981d8){_0xbc4f7a['rows']=_0x2981d8;return _0xbc4f7a;})[_0x726f('0x2f')](respondWithFilteredResult(_0x5f21ea,_0x171113))[_0x726f('0x4d')](handleError(_0x5f21ea,null));};exports[_0x726f('0x4e')]=function(_0x179560,_0x2cc849){var _0x3d1131={'raw':!![],'where':{'id':_0x179560['params']['id']}},_0x3f1cf7={};_0x3f1cf7[_0x726f('0x3e')]=_['keys'](db[_0x726f('0x49')][_0x726f('0x35')]);_0x3f1cf7['query']=_['keys'](_0x179560['query']);_0x3f1cf7[_0x726f('0x3c')]=_['intersection'](_0x3f1cf7[_0x726f('0x3e')],_0x3f1cf7['query']);_0x3d1131[_0x726f('0x3f')]=_['intersection'](_0x3f1cf7[_0x726f('0x3e')],qs[_0x726f('0x4f')](_0x179560[_0x726f('0x3a')][_0x726f('0x4f')]));_0x3d1131[_0x726f('0x3f')]=_0x3d1131[_0x726f('0x3f')][_0x726f('0x40')]?_0x3d1131[_0x726f('0x3f')]:_0x3f1cf7[_0x726f('0x3e')];if(_0x179560[_0x726f('0x3a')][_0x726f('0x4a')]){_0x3d1131[_0x726f('0x4b')]=[{'all':!![]}];}_0x3d1131=_[_0x726f('0x47')]({},_0x3d1131,_0x179560[_0x726f('0x48')]);return db[_0x726f('0x49')]['find'](_0x3d1131)[_0x726f('0x2f')](handleEntityNotFound(_0x2cc849,null))[_0x726f('0x2f')](respondWithResult(_0x2cc849,null))[_0x726f('0x4d')](handleError(_0x2cc849,null));};exports[_0x726f('0x50')]=function(_0x3ee303,_0x33e241){return db[_0x726f('0x49')][_0x726f('0x50')](_0x3ee303[_0x726f('0x51')],{})[_0x726f('0x2f')](function(_0x364369){var _0x352c0d=_0x3ee303[_0x726f('0x52')]['get']({'plain':!![]});if(!_0x352c0d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x352c0d[_0x726f('0x53')]==='user'){var _0x5a6247=_0x364369[_0x726f('0x30')]({'plain':!![]});var _0x535329='FaxQueues';return db[_0x726f('0x54')]['find']({'where':{'name':_0x535329,'userProfileId':_0x352c0d[_0x726f('0x55')]},'raw':!![]})[_0x726f('0x2f')](function(_0x24b705){if(_0x24b705&&_0x24b705['autoAssociation']===0x0){return db[_0x726f('0x56')][_0x726f('0x50')]({'name':_0x5a6247[_0x726f('0x32')],'resourceId':_0x5a6247['id'],'type':_0x24b705[_0x726f('0x32')],'sectionId':_0x24b705['id']},{})[_0x726f('0x2f')](function(){return _0x364369;});}else{return _0x364369;}})['catch'](function(_0x3ffbcd){logger[_0x726f('0x57')](_0x726f('0x58'),_0x3ffbcd);throw _0x3ffbcd;});}return _0x364369;})[_0x726f('0x2f')](respondWithResult(_0x33e241,0xc9))[_0x726f('0x4d')](handleError(_0x33e241,null));};exports[_0x726f('0x2d')]=function(_0x1da3ac,_0x54a48b){if(_0x1da3ac[_0x726f('0x51')]['id']){delete _0x1da3ac['body']['id'];}return db[_0x726f('0x49')][_0x726f('0x59')]({'where':{'id':_0x1da3ac[_0x726f('0x5a')]['id']}})['then'](handleEntityNotFound(_0x54a48b,null))['then'](saveUpdates(_0x1da3ac[_0x726f('0x51')],null))['then'](respondWithResult(_0x54a48b,null))['catch'](handleError(_0x54a48b,null));};exports['destroy']=function(_0x592740,_0x1cf2b8){return db[_0x726f('0x49')][_0x726f('0x59')]({'where':{'id':_0x592740[_0x726f('0x5a')]['id']}})[_0x726f('0x2f')](handleEntityNotFound(_0x1cf2b8,null))[_0x726f('0x2f')](removeEntity(_0x1cf2b8,null))['catch'](handleError(_0x1cf2b8,null));};exports[_0x726f('0x5b')]=function(_0x65e136,_0x29f6b0){return db[_0x726f('0x49')][_0x726f('0x5b')]()[_0x726f('0x2f')](respondWithResult(_0x29f6b0,null))[_0x726f('0x4d')](handleError(_0x29f6b0,null));};exports[_0x726f('0x5c')]=function(_0x181d81,_0x2e09da,_0x86aac1){var _0x53a88f={'raw':!![],'where':{}},_0x26dd4a={},_0x1c1c77;return db['FaxQueue'][_0x726f('0x5d')]({'where':{'id':_0x181d81[_0x726f('0x5a')]['id']}})[_0x726f('0x2f')](handleEntityNotFound(_0x2e09da,null))[_0x726f('0x2f')](function(_0x59bcf5){if(_0x59bcf5){_0x1c1c77=_0x59bcf5[_0x726f('0x30')]({'plain':!![]});_0x26dd4a[_0x726f('0x3e')]=_[_0x726f('0x3b')](db['UserFaxQueue'][_0x726f('0x35')]);_0x26dd4a[_0x726f('0x3a')]=_[_0x726f('0x3b')](_0x181d81[_0x726f('0x3a')]);_0x26dd4a['filters']=_[_0x726f('0x3d')](_0x26dd4a['model'],_0x26dd4a['query']);_0x53a88f[_0x726f('0x3f')]=_[_0x726f('0x3d')](_0x26dd4a[_0x726f('0x3e')],qs[_0x726f('0x4f')](_0x181d81['query'][_0x726f('0x4f')]));_0x53a88f[_0x726f('0x3f')]=_0x53a88f[_0x726f('0x3f')]['length']?_0x53a88f[_0x726f('0x3f')]:_0x26dd4a[_0x726f('0x3e')];if(!_0x181d81[_0x726f('0x3a')][_0x726f('0x41')](_0x726f('0x42'))){_0x53a88f[_0x726f('0x29')]=qs[_0x726f('0x29')](_0x181d81[_0x726f('0x3a')][_0x726f('0x29')]);_0x53a88f['offset']=qs['offset'](_0x181d81[_0x726f('0x3a')][_0x726f('0x27')]);}_0x53a88f[_0x726f('0x43')]=qs[_0x726f('0x44')](_0x181d81[_0x726f('0x3a')]['sort']);_0x53a88f[_0x726f('0x45')]=qs[_0x726f('0x3c')](_['pick'](_0x181d81[_0x726f('0x3a')],_0x26dd4a[_0x726f('0x3c')]));_0x53a88f['where'][_0x726f('0x5e')]=_0x59bcf5['id'];if(_0x181d81[_0x726f('0x3a')][_0x726f('0x5f')]){_0x53a88f['where']=_[_0x726f('0x47')](_0x53a88f[_0x726f('0x45')],{'$or':_[_0x726f('0x39')](_0x53a88f[_0x726f('0x3f')],function(_0x4bace6){var _0xb9e9af={};_0xb9e9af[_0x4bace6]={'$like':'%'+_0x181d81[_0x726f('0x3a')][_0x726f('0x5f')]+'%'};return _0xb9e9af;})});}_0x53a88f=_[_0x726f('0x47')]({},_0x53a88f,_0x181d81[_0x726f('0x48')]);return db[_0x726f('0x60')][_0x726f('0x4c')](_0x53a88f);}})[_0x726f('0x2f')](function(_0x34da10){if(_0x34da10){return db['User'][_0x726f('0x61')]({'where':{'id':_[_0x726f('0x39')](_0x34da10,_0x726f('0x62')),'role':_0x726f('0x63')},'attributes':['id',_0x726f('0x32'),_0x726f('0x64'),_0x726f('0x65'),'createdAt']});}})[_0x726f('0x2f')](function(_0x1d34c5){if(_0x1d34c5){return{'count':_0x1d34c5['count'],'rows':_[_0x726f('0x39')](_0x1d34c5[_0x726f('0x66')],function(_0x5c44e1){return{'membername':_0x5c44e1[_0x726f('0x32')],'UserId':_0x5c44e1['id'],'queue_name':_0x1c1c77['name'],'FaxQueueId':_0x1c1c77['id'],'interface':util[_0x726f('0x67')](_0x726f('0x68'),'SIP',_0x5c44e1['name']),'penalty':0x0,'paused':_0x5c44e1[_0x726f('0x64')],'createdAt':_0x5c44e1[_0x726f('0x69')],'updatedAt':_0x5c44e1[_0x726f('0x65')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x726f('0x2f')](respondWithFilteredResult(_0x2e09da,_0x53a88f))[_0x726f('0x4d')](handleError(_0x2e09da,null));};exports[_0x726f('0x6a')]=function(_0x16cb36,_0x2c1d0b,_0x28c4a2){var _0x49f83f={};var _0x22f9b2={};var _0x4766a9;var _0x42a6d6;return db[_0x726f('0x49')][_0x726f('0x5d')]({'where':{'id':_0x16cb36[_0x726f('0x5a')]['id']}})[_0x726f('0x2f')](handleEntityNotFound(_0x2c1d0b,null))[_0x726f('0x2f')](function(_0x28310f){if(_0x28310f){_0x4766a9=_0x28310f;_0x22f9b2['model']=_[_0x726f('0x3b')](db[_0x726f('0x6b')][_0x726f('0x35')]);_0x22f9b2[_0x726f('0x3a')]=_[_0x726f('0x3b')](_0x16cb36['query']);_0x22f9b2[_0x726f('0x3c')]=_[_0x726f('0x3d')](_0x22f9b2[_0x726f('0x3e')],_0x22f9b2[_0x726f('0x3a')]);_0x49f83f[_0x726f('0x3f')]=_[_0x726f('0x3d')](_0x22f9b2[_0x726f('0x3e')],qs[_0x726f('0x4f')](_0x16cb36['query'][_0x726f('0x4f')]));_0x49f83f['attributes']=_0x49f83f[_0x726f('0x3f')][_0x726f('0x40')]?_0x49f83f[_0x726f('0x3f')]:_0x22f9b2[_0x726f('0x3e')];_0x49f83f['order']=qs[_0x726f('0x44')](_0x16cb36[_0x726f('0x3a')]['sort']);_0x49f83f['where']=qs['filters'](_['pick'](_0x16cb36[_0x726f('0x3a')],_0x22f9b2[_0x726f('0x3c')]));if(_0x16cb36['query']['filter']){_0x49f83f['where']=_['merge'](_0x49f83f[_0x726f('0x45')],{'$or':_[_0x726f('0x39')](_0x49f83f[_0x726f('0x3f')],function(_0x4d5358){var _0x3b2b91={};_0x3b2b91[_0x4d5358]={'$like':'%'+_0x16cb36['query']['filter']+'%'};return _0x3b2b91;})});}_0x49f83f=_[_0x726f('0x47')]({},_0x49f83f,_0x16cb36[_0x726f('0x48')]);return _0x4766a9[_0x726f('0x6a')](_0x49f83f);}})[_0x726f('0x2f')](function(_0x4169a8){if(_0x4169a8){_0x42a6d6=_0x4169a8['length'];if(!_0x16cb36['query'][_0x726f('0x41')](_0x726f('0x42'))){_0x49f83f[_0x726f('0x29')]=qs['limit'](_0x16cb36['query'][_0x726f('0x29')]);_0x49f83f[_0x726f('0x27')]=qs[_0x726f('0x27')](_0x16cb36['query']['offset']);}return _0x4766a9[_0x726f('0x6a')](_0x49f83f);}})['then'](function(_0x4a9425){if(_0x4a9425){return _0x4a9425?{'count':_0x42a6d6,'rows':_0x4a9425}:null;}})[_0x726f('0x2f')](respondWithResult(_0x2c1d0b,null))[_0x726f('0x4d')](handleError(_0x2c1d0b,null));};exports[_0x726f('0x6c')]=function(_0x11eba4,_0x391452,_0xbadf0e){var _0x2fb4db=_0x11eba4[_0x726f('0x51')][_0x726f('0x6d')];return db['Team'][_0x726f('0x4c')]({'where':{'id':_0x2fb4db},'attributes':['id'],'include':[{'model':db[_0x726f('0x6e')],'as':'Agents','attributes':['id',_0x726f('0x32'),_0x726f('0x6f'),_0x726f('0x70'),_0x726f('0x71')],'raw':!![]}]})['then'](function(_0x3959dd){if(_0x3959dd){var _0x44b62d=_['flatMap'](_0x3959dd,function(_0x1f41fe){var _0x612f12=_0x1f41fe[_0x726f('0x30')]({'plain':!![]});return _0x612f12[_0x726f('0x72')];});return db[_0x726f('0x49')][_0x726f('0x59')]({'where':{'id':_0x11eba4[_0x726f('0x5a')]['id']}})['then'](function(_0x48781d){return db['sequelize'][_0x726f('0x73')](function(_0x34c02b){return _0x48781d[_0x726f('0x6c')](_0x2fb4db,{'transaction':_0x34c02b})['then'](function(){return BPromise[_0x726f('0x74')](_0x44b62d,function(_0x1e9fbd){return db[_0x726f('0x60')][_0x726f('0x75')]({'where':{'UserId':_0x1e9fbd['id'],'FaxQueueId':_0x11eba4[_0x726f('0x5a')]['id']},'transaction':_0x34c02b});});})[_0x726f('0x2f')](function(){_0x44b62d[_0x726f('0x76')](function(_0x2fe33d){socket['emit'](_0x726f('0x77'),{'UserId':_0x2fe33d['id'],'FaxQueueId':_0x48781d['id']});});});});});}})[_0x726f('0x2f')](respondWithStatusCode(_0x391452,null))[_0x726f('0x4d')](handleError(_0x391452,null));};exports['removeTeams']=function(_0x388b1e,_0x5498f0,_0x3763ca){return db[_0x726f('0x6b')][_0x726f('0x4c')]({'where':{'id':_0x388b1e['query'][_0x726f('0x6d')]},'attributes':['id'],'include':[{'model':db[_0x726f('0x6e')],'as':_0x726f('0x72'),'attributes':['id'],'raw':!![]}]})[_0x726f('0x2f')](handleEntityNotFound(_0x5498f0,null))['then'](function(_0x2c5700){var _0x4cddce=_[_0x726f('0x39')](_0x2c5700,'id');var _0x514772=[];var _0x2c217e=[];var _0x366930=squel['select']();_0x366930[_0x726f('0x78')]('tq.TeamId')['from'](_0x726f('0x79'),'tq')['join']('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')[_0x726f('0x45')](_0x726f('0x7a'),_0x388b1e[_0x726f('0x5a')]['id']);for(var _0x22c727=0x0;_0x22c727<_0x2c5700[_0x726f('0x40')];_0x22c727+=0x1){let _0x6b43d9=_0x2c5700[_0x22c727];for(var _0x4d78a2=0x0;_0x4d78a2<_0x6b43d9['Agents'][_0x726f('0x40')];_0x4d78a2+=0x1){let _0x33dcff=_0x6b43d9['Agents'][_0x4d78a2];var _0x244ed2=_0x366930['clone']();_0x244ed2[_0x726f('0x45')](_0x726f('0x7b'),_0x33dcff['id']);_0x2c217e[_0x726f('0x7c')](db[_0x726f('0x7d')][_0x726f('0x3a')](_0x244ed2['toString'](),{'type':db[_0x726f('0x7d')][_0x726f('0x7e')][_0x726f('0x7f')]})['then'](function(_0x12963d){if(_0x12963d[_0x726f('0x40')]===0x1){return _0x33dcff['id'];}else{var _0x4ce0ac=_[_0x726f('0x80')](_[_0x726f('0x39')](_0x12963d,_0x726f('0x81')),function(_0xed3fe3){return _[_0x726f('0x82')](_0x4cddce,_0xed3fe3);});if(_0x4ce0ac){return _0x33dcff['id'];}}}));}}return BPromise[_0x726f('0x83')](_0x2c217e)[_0x726f('0x2f')](function(_0x19c27e){_0x514772=_(_0x514772)[_0x726f('0x84')](_0x19c27e)['compact']()[_0x726f('0x85')]();return db[_0x726f('0x49')]['find']({'where':{'id':_0x388b1e[_0x726f('0x5a')]['id']}})[_0x726f('0x2f')](function(_0x22ac24){return db[_0x726f('0x7d')][_0x726f('0x73')](function(_0x344034){return _0x22ac24[_0x726f('0x86')](_0x388b1e[_0x726f('0x3a')][_0x726f('0x6d')],{'transaction':_0x344034})[_0x726f('0x2f')](function(){if(!_[_0x726f('0x87')](_0x514772)){return _0x22ac24[_0x726f('0x88')](_0x514772,{'transaction':_0x344034});}})[_0x726f('0x2f')](function(){_0x514772[_0x726f('0x76')](function(_0x1aae9e){socket[_0x726f('0x89')](_0x726f('0x8a'),{'UserId':_0x1aae9e,'FaxQueueId':_0x22ac24['id']});});});});});});})[_0x726f('0x2f')](respondWithStatusCode(_0x5498f0,null))['catch'](handleError(_0x5498f0,null));};exports['addAgents']=function(_0x274492,_0x3287b5,_0x487c82){return db[_0x726f('0x49')]['find']({'where':{'id':_0x274492[_0x726f('0x5a')]['id']}})[_0x726f('0x2f')](handleEntityNotFound(_0x3287b5,null))[_0x726f('0x2f')](function(_0x13d939){if(_0x13d939){return _0x13d939['addAgents'](_0x274492['body'][_0x726f('0x6d')],_[_0x726f('0x8b')](_0x274492['body'],['ids','id'])||{})[_0x726f('0x8c')](function(_0x5aba41){for(var _0x5aa9f1=0x0;_0x5aa9f1<_0x274492['body'][_0x726f('0x6d')]['length'];_0x5aa9f1+=0x1){socket['emit'](_0x726f('0x77'),{'UserId':Number(_0x274492[_0x726f('0x51')][_0x726f('0x6d')][_0x5aa9f1]),'FaxQueueId':Number(_0x274492['params']['id'])});}return _0x5aba41;});}})['then'](respondWithResult(_0x3287b5,null))[_0x726f('0x4d')](handleError(_0x3287b5,null));};exports['removeAgents']=function(_0x4914a2,_0x338ded,_0x2717f4){return db[_0x726f('0x49')][_0x726f('0x59')]({'where':{'id':_0x4914a2[_0x726f('0x5a')]['id']}})[_0x726f('0x2f')](handleEntityNotFound(_0x338ded,null))[_0x726f('0x2f')](function(_0x1da9f0){if(_0x1da9f0){return _0x1da9f0[_0x726f('0x88')](_0x4914a2['query']['ids'])['then'](function(){if(_[_0x726f('0x8d')](_0x4914a2[_0x726f('0x3a')][_0x726f('0x6d')])){for(var _0x846dfc=0x0;_0x846dfc<_0x4914a2[_0x726f('0x3a')]['ids'][_0x726f('0x40')];_0x846dfc+=0x1){socket['emit']('userFaxQueue:remove',{'UserId':Number(_0x4914a2['query'][_0x726f('0x6d')][_0x846dfc]),'FaxQueueId':Number(_0x4914a2[_0x726f('0x5a')]['id'])});}}else{socket[_0x726f('0x89')](_0x726f('0x8a'),{'UserId':Number(_0x4914a2[_0x726f('0x3a')][_0x726f('0x6d')]),'FaxQueueId':Number(_0x4914a2['params']['id'])});}});}})['then'](respondWithStatusCode(_0x338ded,null))['catch'](handleError(_0x338ded,null));};exports['getAgents']=function(_0x419b58,_0x37e4da,_0x220899){var _0x7824e7={};var _0x28a2c2={};var _0x2efb63;var _0x3345fe;return db[_0x726f('0x49')]['findOne']({'where':{'id':_0x419b58[_0x726f('0x5a')]['id']}})[_0x726f('0x2f')](handleEntityNotFound(_0x37e4da,null))[_0x726f('0x2f')](function(_0x2316d5){if(_0x2316d5){_0x2efb63=_0x2316d5;_0x28a2c2[_0x726f('0x3e')]=_['keys'](db[_0x726f('0x6e')][_0x726f('0x35')]);_0x28a2c2[_0x726f('0x3a')]=_[_0x726f('0x3b')](_0x419b58[_0x726f('0x3a')]);_0x28a2c2['filters']=_[_0x726f('0x3d')](_0x28a2c2['model'],_0x28a2c2['query']);_0x7824e7['attributes']=_[_0x726f('0x3d')](_0x28a2c2[_0x726f('0x3e')],qs[_0x726f('0x4f')](_0x419b58[_0x726f('0x3a')]['fields']));_0x7824e7[_0x726f('0x3f')]=_0x7824e7[_0x726f('0x3f')]['length']?_0x7824e7['attributes']:_0x28a2c2['model'];_0x7824e7[_0x726f('0x43')]=qs[_0x726f('0x44')](_0x419b58[_0x726f('0x3a')]['sort']);_0x7824e7[_0x726f('0x45')]=qs[_0x726f('0x3c')](_[_0x726f('0x46')](_0x419b58[_0x726f('0x3a')],_0x28a2c2[_0x726f('0x3c')]));if(_0x419b58['query'][_0x726f('0x5f')]){_0x7824e7[_0x726f('0x45')]=_['merge'](_0x7824e7[_0x726f('0x45')],{'$or':_[_0x726f('0x39')](_0x7824e7[_0x726f('0x3f')],function(_0xb7d1af){var _0x40c69d={};_0x40c69d[_0xb7d1af]={'$like':'%'+_0x419b58[_0x726f('0x3a')][_0x726f('0x5f')]+'%'};return _0x40c69d;})});}_0x7824e7=_[_0x726f('0x47')]({},_0x7824e7,_0x419b58[_0x726f('0x48')]);return _0x2efb63[_0x726f('0x8e')](_0x7824e7);}})[_0x726f('0x2f')](function(_0x456112){if(_0x456112){_0x3345fe=_0x456112[_0x726f('0x40')];if(!_0x419b58[_0x726f('0x3a')][_0x726f('0x41')](_0x726f('0x42'))){_0x7824e7['limit']=qs[_0x726f('0x29')](_0x419b58[_0x726f('0x3a')][_0x726f('0x29')]);_0x7824e7['offset']=qs['offset'](_0x419b58[_0x726f('0x3a')][_0x726f('0x27')]);}return _0x2efb63[_0x726f('0x8e')](_0x7824e7);}})[_0x726f('0x2f')](function(_0x8c0dc8){if(_0x8c0dc8){return _0x8c0dc8?{'count':_0x3345fe,'rows':_0x8c0dc8}:null;}})['then'](respondWithResult(_0x37e4da,null))[_0x726f('0x4d')](handleError(_0x37e4da,null));};
\ No newline at end of file
+var _0x0df3=['zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','update','then','get','FaxQueues','UserProfileResource','destroy','error','name','send','index','map','FaxQueue','rawAttributes','type','model','query','keys','filters','attributes','intersection','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','rows','catch','show','params','length','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','describe','getMembers','findOne','UserFaxQueue','hasOwnProperty','findAll','User','UserId','faxPause','updatedAt','createdAt','SIP','getTeams','Team','addTeams','ids','Agents','voicePause','interface','flatMap','sequelize','transaction','each','findOrCreate','removeTeams','select','field','tq.TeamId','team_has_fax_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','every','TeamId','includes','union','compact','value','isEmpty','removeAgents','forEach','emit','addAgents','spread','isArray','userFaxQueue:remove','getAgents','eml-format','rimraf'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x0df3,0x88));var _0x30df=function(_0x2f3ecd,_0x57976b){_0x2f3ecd=_0x2f3ecd-0x0;var _0xffdc44=_0x0df3[_0x2f3ecd];return _0xffdc44;};'use strict';var emlformat=require(_0x30df('0x0'));var rimraf=require(_0x30df('0x1'));var zipdir=require(_0x30df('0x2'));var jsonpatch=require(_0x30df('0x3'));var rp=require(_0x30df('0x4'));var moment=require(_0x30df('0x5'));var BPromise=require(_0x30df('0x6'));var Mustache=require(_0x30df('0x7'));var util=require(_0x30df('0x8'));var path=require('path');var sox=require(_0x30df('0x9'));var csv=require(_0x30df('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x30df('0xb'));var squel=require(_0x30df('0xc'));var crypto=require(_0x30df('0xd'));var jsforce=require(_0x30df('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x30df('0xf'));var Papa=require(_0x30df('0x10'));var Redis=require(_0x30df('0x11'));var authService=require(_0x30df('0x12'));var qs=require(_0x30df('0x13'));var as=require(_0x30df('0x14'));var hardwareService=require(_0x30df('0x15'));var logger=require(_0x30df('0x16'))(_0x30df('0x17'));var utils=require(_0x30df('0x18'));var config=require(_0x30df('0x19'));var licenseUtil=require(_0x30df('0x1a'));var db=require(_0x30df('0x1b'))['db'];config[_0x30df('0x1c')]=_[_0x30df('0x1d')](config[_0x30df('0x1c')],{'host':_0x30df('0x1e'),'port':0x18eb});var socket=require(_0x30df('0x1f'))(new Redis(config['redis']));require(_0x30df('0x20'))['register'](socket);function respondWithStatusCode(_0x39226b,_0x44fb31){_0x44fb31=_0x44fb31||0xcc;return function(_0x4a0966){if(_0x4a0966){return _0x39226b[_0x30df('0x21')](_0x44fb31);}return _0x39226b[_0x30df('0x22')](_0x44fb31)[_0x30df('0x23')]();};}function respondWithResult(_0x5e865b,_0x450c4c){_0x450c4c=_0x450c4c||0xc8;return function(_0x475cf4){if(_0x475cf4){return _0x5e865b[_0x30df('0x22')](_0x450c4c)[_0x30df('0x24')](_0x475cf4);}};}function respondWithFilteredResult(_0x1ef31a,_0x3496e7){return function(_0x29324b){if(_0x29324b){var _0xc3acb3=typeof _0x3496e7[_0x30df('0x25')]===_0x30df('0x26')&&typeof _0x3496e7[_0x30df('0x27')]==='undefined';var _0x4f8143=_0x29324b[_0x30df('0x28')];var _0x174917=_0xc3acb3?0x0:_0x3496e7['offset'];var _0x2894d5=_0xc3acb3?_0x29324b[_0x30df('0x28')]:_0x3496e7[_0x30df('0x25')]+_0x3496e7[_0x30df('0x27')];var _0x30fe23;if(_0x2894d5>=_0x4f8143){_0x2894d5=_0x4f8143;_0x30fe23=0xc8;}else{_0x30fe23=0xce;}_0x1ef31a['status'](_0x30fe23);return _0x1ef31a[_0x30df('0x29')]('Content-Range',_0x174917+'-'+_0x2894d5+'/'+_0x4f8143)[_0x30df('0x24')](_0x29324b);}return null;};}function patchUpdates(_0x224263){return function(_0x484cdf){try{jsonpatch[_0x30df('0x2a')](_0x484cdf,_0x224263,!![]);}catch(_0x472870){return BPromise['reject'](_0x472870);}return _0x484cdf[_0x30df('0x2b')]();};}function saveUpdates(_0x5373ab,_0x3cf783){return function(_0x1eb8af){if(_0x1eb8af){return _0x1eb8af[_0x30df('0x2c')](_0x5373ab)[_0x30df('0x2d')](function(_0x368bf2){return _0x368bf2;});}return null;};}function removeEntity(_0x222c67,_0x17ad28){return function(_0xf5877e){if(_0xf5877e){return _0xf5877e['destroy']()[_0x30df('0x2d')](function(){var _0x42ae57=_0xf5877e[_0x30df('0x2e')]({'plain':!![]});var _0x14a213=_0x30df('0x2f');return db[_0x30df('0x30')][_0x30df('0x31')]({'where':{'type':_0x14a213,'resourceId':_0x42ae57['id']}})[_0x30df('0x2d')](function(){return _0xf5877e;});})[_0x30df('0x2d')](function(){_0x222c67[_0x30df('0x22')](0xcc)[_0x30df('0x23')]();});}};}function handleEntityNotFound(_0x24d9ca,_0x4bb0aa){return function(_0x3e59a9){if(!_0x3e59a9){_0x24d9ca['sendStatus'](0x194);}return _0x3e59a9;};}function handleError(_0x3726e6,_0xa82c5a){_0xa82c5a=_0xa82c5a||0x1f4;return function(_0x411b1d){logger[_0x30df('0x32')](_0x411b1d['stack']);if(_0x411b1d[_0x30df('0x33')]){delete _0x411b1d[_0x30df('0x33')];}_0x3726e6['status'](_0xa82c5a)[_0x30df('0x34')](_0x411b1d);};}exports[_0x30df('0x35')]=function(_0x43bebb,_0x76bce8){var _0xb7f369={},_0x8dbf8={},_0x4f29b1={'count':0x0,'rows':[]};var _0x3183be=_[_0x30df('0x36')](db[_0x30df('0x37')][_0x30df('0x38')],function(_0x4b7911){return{'name':_0x4b7911['fieldName'],'type':_0x4b7911[_0x30df('0x39')]['key']};});_0x8dbf8[_0x30df('0x3a')]=_['map'](_0x3183be,_0x30df('0x33'));_0x8dbf8[_0x30df('0x3b')]=_[_0x30df('0x3c')](_0x43bebb[_0x30df('0x3b')]);_0x8dbf8[_0x30df('0x3d')]=_['intersection'](_0x8dbf8['model'],_0x8dbf8['query']);_0xb7f369[_0x30df('0x3e')]=_[_0x30df('0x3f')](_0x8dbf8['model'],qs['fields'](_0x43bebb[_0x30df('0x3b')][_0x30df('0x40')]));_0xb7f369[_0x30df('0x3e')]=_0xb7f369[_0x30df('0x3e')]['length']?_0xb7f369[_0x30df('0x3e')]:_0x8dbf8[_0x30df('0x3a')];if(!_0x43bebb[_0x30df('0x3b')]['hasOwnProperty'](_0x30df('0x41'))){_0xb7f369[_0x30df('0x27')]=qs[_0x30df('0x27')](_0x43bebb[_0x30df('0x3b')][_0x30df('0x27')]);_0xb7f369[_0x30df('0x25')]=qs[_0x30df('0x25')](_0x43bebb['query']['offset']);}_0xb7f369[_0x30df('0x42')]=qs[_0x30df('0x43')](_0x43bebb[_0x30df('0x3b')][_0x30df('0x43')]);_0xb7f369[_0x30df('0x44')]=qs[_0x30df('0x3d')](_[_0x30df('0x45')](_0x43bebb[_0x30df('0x3b')],_0x8dbf8[_0x30df('0x3d')]),_0x3183be);if(_0x43bebb[_0x30df('0x3b')][_0x30df('0x46')]){_0xb7f369[_0x30df('0x44')]=_[_0x30df('0x47')](_0xb7f369[_0x30df('0x44')],{'$or':_['map'](_0x3183be,function(_0x48e7f5){if(_0x48e7f5[_0x30df('0x39')]!==_0x30df('0x48')){var _0x66b570={};_0x66b570[_0x48e7f5[_0x30df('0x33')]]={'$like':'%'+_0x43bebb['query'][_0x30df('0x46')]+'%'};return _0x66b570;}})});}_0xb7f369=_['merge']({},_0xb7f369,_0x43bebb[_0x30df('0x49')]);var _0x500ab6={'where':_0xb7f369['where']};return db['FaxQueue']['count'](_0x500ab6)[_0x30df('0x2d')](function(_0x192fe0){_0x4f29b1['count']=_0x192fe0;if(_0x43bebb['query']['includeAll']){_0xb7f369['include']=[{'all':!![]}];}return db['FaxQueue']['findAll'](_0xb7f369);})[_0x30df('0x2d')](function(_0x11c022){_0x4f29b1[_0x30df('0x4a')]=_0x11c022;return _0x4f29b1;})['then'](respondWithFilteredResult(_0x76bce8,_0xb7f369))[_0x30df('0x4b')](handleError(_0x76bce8,null));};exports[_0x30df('0x4c')]=function(_0x4b415b,_0x312fbd){var _0x53a91d={'raw':!![],'where':{'id':_0x4b415b[_0x30df('0x4d')]['id']}},_0x47a3bc={};_0x47a3bc[_0x30df('0x3a')]=_[_0x30df('0x3c')](db[_0x30df('0x37')][_0x30df('0x38')]);_0x47a3bc['query']=_[_0x30df('0x3c')](_0x4b415b[_0x30df('0x3b')]);_0x47a3bc[_0x30df('0x3d')]=_[_0x30df('0x3f')](_0x47a3bc[_0x30df('0x3a')],_0x47a3bc[_0x30df('0x3b')]);_0x53a91d['attributes']=_[_0x30df('0x3f')](_0x47a3bc[_0x30df('0x3a')],qs[_0x30df('0x40')](_0x4b415b[_0x30df('0x3b')][_0x30df('0x40')]));_0x53a91d[_0x30df('0x3e')]=_0x53a91d[_0x30df('0x3e')][_0x30df('0x4e')]?_0x53a91d[_0x30df('0x3e')]:_0x47a3bc[_0x30df('0x3a')];if(_0x4b415b[_0x30df('0x3b')][_0x30df('0x4f')]){_0x53a91d['include']=[{'all':!![]}];}_0x53a91d=_[_0x30df('0x47')]({},_0x53a91d,_0x4b415b[_0x30df('0x49')]);return db[_0x30df('0x37')][_0x30df('0x50')](_0x53a91d)['then'](handleEntityNotFound(_0x312fbd,null))[_0x30df('0x2d')](respondWithResult(_0x312fbd,null))[_0x30df('0x4b')](handleError(_0x312fbd,null));};exports[_0x30df('0x51')]=function(_0x3a1138,_0x1f772d){return db['FaxQueue']['create'](_0x3a1138[_0x30df('0x52')],{})[_0x30df('0x2d')](function(_0x5e36e8){var _0x2a9f1f=_0x3a1138[_0x30df('0x53')][_0x30df('0x2e')]({'plain':!![]});if(!_0x2a9f1f)throw new Error(_0x30df('0x54'));if(_0x2a9f1f[_0x30df('0x55')]===_0x30df('0x53')){var _0x4cefb7=_0x5e36e8[_0x30df('0x2e')]({'plain':!![]});var _0x3630ee='FaxQueues';return db['UserProfileSection'][_0x30df('0x50')]({'where':{'name':_0x3630ee,'userProfileId':_0x2a9f1f['userProfileId']},'raw':!![]})['then'](function(_0x173ea4){if(_0x173ea4&&_0x173ea4[_0x30df('0x56')]===0x0){return db[_0x30df('0x30')][_0x30df('0x51')]({'name':_0x4cefb7['name'],'resourceId':_0x4cefb7['id'],'type':_0x173ea4[_0x30df('0x33')],'sectionId':_0x173ea4['id']},{})[_0x30df('0x2d')](function(){return _0x5e36e8;});}else{return _0x5e36e8;}})[_0x30df('0x4b')](function(_0x45cfdd){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x45cfdd);throw _0x45cfdd;});}return _0x5e36e8;})[_0x30df('0x2d')](respondWithResult(_0x1f772d,0xc9))['catch'](handleError(_0x1f772d,null));};exports[_0x30df('0x2c')]=function(_0x539703,_0x340dc0){if(_0x539703['body']['id']){delete _0x539703[_0x30df('0x52')]['id'];}return db[_0x30df('0x37')][_0x30df('0x50')]({'where':{'id':_0x539703[_0x30df('0x4d')]['id']}})['then'](handleEntityNotFound(_0x340dc0,null))[_0x30df('0x2d')](saveUpdates(_0x539703[_0x30df('0x52')],null))[_0x30df('0x2d')](respondWithResult(_0x340dc0,null))['catch'](handleError(_0x340dc0,null));};exports[_0x30df('0x31')]=function(_0x445c69,_0x36bbe0){return db[_0x30df('0x37')][_0x30df('0x50')]({'where':{'id':_0x445c69['params']['id']}})[_0x30df('0x2d')](handleEntityNotFound(_0x36bbe0,null))[_0x30df('0x2d')](removeEntity(_0x36bbe0,null))[_0x30df('0x4b')](handleError(_0x36bbe0,null));};exports[_0x30df('0x57')]=function(_0x49706f,_0x293d8b){return db[_0x30df('0x37')][_0x30df('0x57')]()[_0x30df('0x2d')](respondWithResult(_0x293d8b,null))[_0x30df('0x4b')](handleError(_0x293d8b,null));};exports[_0x30df('0x58')]=function(_0x146b1d,_0x3e967d,_0x30f06b){var _0x1ea8c3={'raw':!![],'where':{}},_0x3cf246={},_0x1a44cd;return db['FaxQueue'][_0x30df('0x59')]({'where':{'id':_0x146b1d[_0x30df('0x4d')]['id']}})[_0x30df('0x2d')](handleEntityNotFound(_0x3e967d,null))['then'](function(_0x5c1dc4){if(_0x5c1dc4){_0x1a44cd=_0x5c1dc4[_0x30df('0x2e')]({'plain':!![]});_0x3cf246[_0x30df('0x3a')]=_[_0x30df('0x3c')](db[_0x30df('0x5a')][_0x30df('0x38')]);_0x3cf246[_0x30df('0x3b')]=_['keys'](_0x146b1d[_0x30df('0x3b')]);_0x3cf246['filters']=_[_0x30df('0x3f')](_0x3cf246[_0x30df('0x3a')],_0x3cf246[_0x30df('0x3b')]);_0x1ea8c3[_0x30df('0x3e')]=_['intersection'](_0x3cf246[_0x30df('0x3a')],qs['fields'](_0x146b1d[_0x30df('0x3b')][_0x30df('0x40')]));_0x1ea8c3[_0x30df('0x3e')]=_0x1ea8c3[_0x30df('0x3e')][_0x30df('0x4e')]?_0x1ea8c3[_0x30df('0x3e')]:_0x3cf246[_0x30df('0x3a')];if(!_0x146b1d[_0x30df('0x3b')][_0x30df('0x5b')](_0x30df('0x41'))){_0x1ea8c3[_0x30df('0x27')]=qs['limit'](_0x146b1d[_0x30df('0x3b')][_0x30df('0x27')]);_0x1ea8c3['offset']=qs[_0x30df('0x25')](_0x146b1d[_0x30df('0x3b')]['offset']);}_0x1ea8c3[_0x30df('0x42')]=qs['sort'](_0x146b1d[_0x30df('0x3b')][_0x30df('0x43')]);_0x1ea8c3['where']=qs[_0x30df('0x3d')](_[_0x30df('0x45')](_0x146b1d[_0x30df('0x3b')],_0x3cf246[_0x30df('0x3d')]));_0x1ea8c3[_0x30df('0x44')]['FaxQueueId']=_0x5c1dc4['id'];if(_0x146b1d[_0x30df('0x3b')][_0x30df('0x46')]){_0x1ea8c3['where']=_[_0x30df('0x47')](_0x1ea8c3[_0x30df('0x44')],{'$or':_[_0x30df('0x36')](_0x1ea8c3[_0x30df('0x3e')],function(_0x2a1d14){var _0x30019b={};_0x30019b[_0x2a1d14]={'$like':'%'+_0x146b1d[_0x30df('0x3b')][_0x30df('0x46')]+'%'};return _0x30019b;})});}_0x1ea8c3=_[_0x30df('0x47')]({},_0x1ea8c3,_0x146b1d[_0x30df('0x49')]);return db[_0x30df('0x5a')][_0x30df('0x5c')](_0x1ea8c3);}})[_0x30df('0x2d')](function(_0x57ed68){if(_0x57ed68){return db[_0x30df('0x5d')]['findAndCountAll']({'where':{'id':_[_0x30df('0x36')](_0x57ed68,_0x30df('0x5e')),'role':'agent'},'attributes':['id','name',_0x30df('0x5f'),_0x30df('0x60'),_0x30df('0x61')]});}})[_0x30df('0x2d')](function(_0x1d98ce){if(_0x1d98ce){return{'count':_0x1d98ce[_0x30df('0x28')],'rows':_[_0x30df('0x36')](_0x1d98ce[_0x30df('0x4a')],function(_0x58fbd7){return{'membername':_0x58fbd7[_0x30df('0x33')],'UserId':_0x58fbd7['id'],'queue_name':_0x1a44cd[_0x30df('0x33')],'FaxQueueId':_0x1a44cd['id'],'interface':util['format']('%s/%s',_0x30df('0x62'),_0x58fbd7[_0x30df('0x33')]),'penalty':0x0,'paused':_0x58fbd7['faxPause'],'createdAt':_0x58fbd7[_0x30df('0x61')],'updatedAt':_0x58fbd7['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x30df('0x2d')](respondWithFilteredResult(_0x3e967d,_0x1ea8c3))[_0x30df('0x4b')](handleError(_0x3e967d,null));};exports[_0x30df('0x63')]=function(_0x4266a0,_0x408b2b,_0x4e559e){var _0x53632a={};var _0x549be2={};var _0x18e5ac;var _0x4d5e55;return db['FaxQueue'][_0x30df('0x59')]({'where':{'id':_0x4266a0[_0x30df('0x4d')]['id']}})[_0x30df('0x2d')](handleEntityNotFound(_0x408b2b,null))['then'](function(_0x27275e){if(_0x27275e){_0x18e5ac=_0x27275e;_0x549be2[_0x30df('0x3a')]=_['keys'](db[_0x30df('0x64')][_0x30df('0x38')]);_0x549be2['query']=_[_0x30df('0x3c')](_0x4266a0[_0x30df('0x3b')]);_0x549be2[_0x30df('0x3d')]=_['intersection'](_0x549be2[_0x30df('0x3a')],_0x549be2[_0x30df('0x3b')]);_0x53632a[_0x30df('0x3e')]=_[_0x30df('0x3f')](_0x549be2[_0x30df('0x3a')],qs['fields'](_0x4266a0[_0x30df('0x3b')]['fields']));_0x53632a['attributes']=_0x53632a[_0x30df('0x3e')][_0x30df('0x4e')]?_0x53632a[_0x30df('0x3e')]:_0x549be2[_0x30df('0x3a')];_0x53632a[_0x30df('0x42')]=qs[_0x30df('0x43')](_0x4266a0[_0x30df('0x3b')][_0x30df('0x43')]);_0x53632a[_0x30df('0x44')]=qs[_0x30df('0x3d')](_[_0x30df('0x45')](_0x4266a0[_0x30df('0x3b')],_0x549be2[_0x30df('0x3d')]));if(_0x4266a0[_0x30df('0x3b')][_0x30df('0x46')]){_0x53632a['where']=_['merge'](_0x53632a[_0x30df('0x44')],{'$or':_['map'](_0x53632a[_0x30df('0x3e')],function(_0x1cc122){var _0x5bde30={};_0x5bde30[_0x1cc122]={'$like':'%'+_0x4266a0[_0x30df('0x3b')][_0x30df('0x46')]+'%'};return _0x5bde30;})});}_0x53632a=_[_0x30df('0x47')]({},_0x53632a,_0x4266a0[_0x30df('0x49')]);return _0x18e5ac['getTeams'](_0x53632a);}})[_0x30df('0x2d')](function(_0x3dd034){if(_0x3dd034){_0x4d5e55=_0x3dd034[_0x30df('0x4e')];if(!_0x4266a0[_0x30df('0x3b')][_0x30df('0x5b')](_0x30df('0x41'))){_0x53632a[_0x30df('0x27')]=qs['limit'](_0x4266a0[_0x30df('0x3b')][_0x30df('0x27')]);_0x53632a[_0x30df('0x25')]=qs[_0x30df('0x25')](_0x4266a0[_0x30df('0x3b')][_0x30df('0x25')]);}return _0x18e5ac['getTeams'](_0x53632a);}})[_0x30df('0x2d')](function(_0x3f1a40){if(_0x3f1a40){return _0x3f1a40?{'count':_0x4d5e55,'rows':_0x3f1a40}:null;}})['then'](respondWithResult(_0x408b2b,null))[_0x30df('0x4b')](handleError(_0x408b2b,null));};exports[_0x30df('0x65')]=function(_0x4bf0ee,_0x26638f,_0x252286){var _0x4004fd=_0x4bf0ee[_0x30df('0x52')][_0x30df('0x66')];return db['Team'][_0x30df('0x5c')]({'where':{'id':_0x4004fd},'attributes':['id'],'include':[{'model':db[_0x30df('0x5d')],'as':_0x30df('0x67'),'attributes':['id','name','online',_0x30df('0x68'),_0x30df('0x69')],'raw':!![]}]})[_0x30df('0x2d')](function(_0x280580){if(_0x280580){var _0xe2107a=_[_0x30df('0x6a')](_0x280580,function(_0x23931b){var _0x354d8c=_0x23931b[_0x30df('0x2e')]({'plain':!![]});return _0x354d8c[_0x30df('0x67')];});return db[_0x30df('0x37')][_0x30df('0x50')]({'where':{'id':_0x4bf0ee[_0x30df('0x4d')]['id']}})[_0x30df('0x2d')](function(_0x4f72b4){return db[_0x30df('0x6b')][_0x30df('0x6c')](function(_0xc50a32){return _0x4f72b4[_0x30df('0x65')](_0x4004fd,{'transaction':_0xc50a32})[_0x30df('0x2d')](function(){return BPromise[_0x30df('0x6d')](_0xe2107a,function(_0x5ceed3){return db[_0x30df('0x5a')][_0x30df('0x6e')]({'where':{'UserId':_0x5ceed3['id'],'FaxQueueId':_0x4bf0ee[_0x30df('0x4d')]['id']},'transaction':_0xc50a32});});})[_0x30df('0x2d')](function(){_0xe2107a['forEach'](function(_0x649c58){socket['emit']('userFaxQueue:save',{'UserId':_0x649c58['id'],'FaxQueueId':_0x4f72b4['id']});});});});});}})['then'](respondWithStatusCode(_0x26638f,null))[_0x30df('0x4b')](handleError(_0x26638f,null));};exports[_0x30df('0x6f')]=function(_0x3d051d,_0x4abba6,_0x583d60){return db['Team'][_0x30df('0x5c')]({'where':{'id':_0x3d051d[_0x30df('0x3b')][_0x30df('0x66')]},'attributes':['id'],'include':[{'model':db[_0x30df('0x5d')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x30df('0x2d')](handleEntityNotFound(_0x4abba6,null))['then'](function(_0x14c0a9){var _0x508f7a=_[_0x30df('0x36')](_0x14c0a9,'id');var _0x16eb06=[];var _0x1a6663=[];var _0x462f75=squel[_0x30df('0x70')]();_0x462f75[_0x30df('0x71')](_0x30df('0x72'))['from'](_0x30df('0x73'),'tq')['join'](_0x30df('0x74'),'ut',_0x30df('0x75'))['where'](_0x30df('0x76'),_0x3d051d[_0x30df('0x4d')]['id']);for(var _0x1b7d24=0x0;_0x1b7d24<_0x14c0a9[_0x30df('0x4e')];_0x1b7d24+=0x1){let _0xd949f6=_0x14c0a9[_0x1b7d24];for(var _0xdfea1f=0x0;_0xdfea1f<_0xd949f6[_0x30df('0x67')]['length'];_0xdfea1f+=0x1){let _0x19565f=_0xd949f6[_0x30df('0x67')][_0xdfea1f];var _0x275f27=_0x462f75[_0x30df('0x77')]();_0x275f27[_0x30df('0x44')](_0x30df('0x78'),_0x19565f['id']);_0x1a6663[_0x30df('0x79')](db[_0x30df('0x6b')][_0x30df('0x3b')](_0x275f27[_0x30df('0x7a')](),{'type':db[_0x30df('0x6b')]['QueryTypes']['SELECT']})[_0x30df('0x2d')](function(_0x479b31){if(_0x479b31[_0x30df('0x4e')]===0x1){return _0x19565f['id'];}else{var _0x578e3a=_[_0x30df('0x7b')](_[_0x30df('0x36')](_0x479b31,_0x30df('0x7c')),function(_0x1f1af6){return _[_0x30df('0x7d')](_0x508f7a,_0x1f1af6);});if(_0x578e3a){return _0x19565f['id'];}}}));}}return BPromise['all'](_0x1a6663)['then'](function(_0x5684b8){_0x16eb06=_(_0x16eb06)[_0x30df('0x7e')](_0x5684b8)[_0x30df('0x7f')]()[_0x30df('0x80')]();return db[_0x30df('0x37')][_0x30df('0x50')]({'where':{'id':_0x3d051d[_0x30df('0x4d')]['id']}})[_0x30df('0x2d')](function(_0x3f6681){return db[_0x30df('0x6b')][_0x30df('0x6c')](function(_0x53c2ac){return _0x3f6681['removeTeams'](_0x3d051d[_0x30df('0x3b')][_0x30df('0x66')],{'transaction':_0x53c2ac})['then'](function(){if(!_[_0x30df('0x81')](_0x16eb06)){return _0x3f6681[_0x30df('0x82')](_0x16eb06,{'transaction':_0x53c2ac});}})[_0x30df('0x2d')](function(){_0x16eb06[_0x30df('0x83')](function(_0x1b4a17){socket[_0x30df('0x84')]('userFaxQueue:remove',{'UserId':_0x1b4a17,'FaxQueueId':_0x3f6681['id']});});});});});});})[_0x30df('0x2d')](respondWithStatusCode(_0x4abba6,null))[_0x30df('0x4b')](handleError(_0x4abba6,null));};exports['addAgents']=function(_0x50e799,_0x4e9024,_0x281d48){return db['FaxQueue'][_0x30df('0x50')]({'where':{'id':_0x50e799['params']['id']}})[_0x30df('0x2d')](handleEntityNotFound(_0x4e9024,null))[_0x30df('0x2d')](function(_0x1a03d4){if(_0x1a03d4){return _0x1a03d4[_0x30df('0x85')](_0x50e799['body'][_0x30df('0x66')],_['omit'](_0x50e799[_0x30df('0x52')],[_0x30df('0x66'),'id'])||{})[_0x30df('0x86')](function(_0x2868d1){for(var _0x58e803=0x0;_0x58e803<_0x50e799[_0x30df('0x52')][_0x30df('0x66')][_0x30df('0x4e')];_0x58e803+=0x1){socket[_0x30df('0x84')]('userFaxQueue:save',{'UserId':Number(_0x50e799[_0x30df('0x52')][_0x30df('0x66')][_0x58e803]),'FaxQueueId':Number(_0x50e799['params']['id'])});}return _0x2868d1;});}})['then'](respondWithResult(_0x4e9024,null))[_0x30df('0x4b')](handleError(_0x4e9024,null));};exports[_0x30df('0x82')]=function(_0x3c5556,_0x413693,_0x24cdc7){return db[_0x30df('0x37')][_0x30df('0x50')]({'where':{'id':_0x3c5556['params']['id']}})[_0x30df('0x2d')](handleEntityNotFound(_0x413693,null))[_0x30df('0x2d')](function(_0xb79f34){if(_0xb79f34){return _0xb79f34[_0x30df('0x82')](_0x3c5556[_0x30df('0x3b')][_0x30df('0x66')])[_0x30df('0x2d')](function(){if(_[_0x30df('0x87')](_0x3c5556[_0x30df('0x3b')]['ids'])){for(var _0x10f976=0x0;_0x10f976<_0x3c5556['query'][_0x30df('0x66')]['length'];_0x10f976+=0x1){socket[_0x30df('0x84')](_0x30df('0x88'),{'UserId':Number(_0x3c5556['query'][_0x30df('0x66')][_0x10f976]),'FaxQueueId':Number(_0x3c5556[_0x30df('0x4d')]['id'])});}}else{socket[_0x30df('0x84')](_0x30df('0x88'),{'UserId':Number(_0x3c5556[_0x30df('0x3b')][_0x30df('0x66')]),'FaxQueueId':Number(_0x3c5556[_0x30df('0x4d')]['id'])});}});}})['then'](respondWithStatusCode(_0x413693,null))[_0x30df('0x4b')](handleError(_0x413693,null));};exports['getAgents']=function(_0x1e1d38,_0x487464,_0x1d9aa3){var _0x3ce214={};var _0x4457d2={};var _0x28d213;var _0x2faa4b;return db[_0x30df('0x37')][_0x30df('0x59')]({'where':{'id':_0x1e1d38[_0x30df('0x4d')]['id']}})['then'](handleEntityNotFound(_0x487464,null))[_0x30df('0x2d')](function(_0x4e2951){if(_0x4e2951){_0x28d213=_0x4e2951;_0x4457d2[_0x30df('0x3a')]=_[_0x30df('0x3c')](db[_0x30df('0x5d')][_0x30df('0x38')]);_0x4457d2['query']=_[_0x30df('0x3c')](_0x1e1d38[_0x30df('0x3b')]);_0x4457d2[_0x30df('0x3d')]=_[_0x30df('0x3f')](_0x4457d2[_0x30df('0x3a')],_0x4457d2['query']);_0x3ce214[_0x30df('0x3e')]=_[_0x30df('0x3f')](_0x4457d2[_0x30df('0x3a')],qs['fields'](_0x1e1d38[_0x30df('0x3b')][_0x30df('0x40')]));_0x3ce214['attributes']=_0x3ce214['attributes']['length']?_0x3ce214[_0x30df('0x3e')]:_0x4457d2['model'];_0x3ce214['order']=qs[_0x30df('0x43')](_0x1e1d38['query'][_0x30df('0x43')]);_0x3ce214[_0x30df('0x44')]=qs[_0x30df('0x3d')](_['pick'](_0x1e1d38[_0x30df('0x3b')],_0x4457d2['filters']));if(_0x1e1d38['query'][_0x30df('0x46')]){_0x3ce214['where']=_[_0x30df('0x47')](_0x3ce214[_0x30df('0x44')],{'$or':_[_0x30df('0x36')](_0x3ce214[_0x30df('0x3e')],function(_0x3580b7){var _0x1a9c31={};_0x1a9c31[_0x3580b7]={'$like':'%'+_0x1e1d38[_0x30df('0x3b')][_0x30df('0x46')]+'%'};return _0x1a9c31;})});}_0x3ce214=_[_0x30df('0x47')]({},_0x3ce214,_0x1e1d38[_0x30df('0x49')]);return _0x28d213[_0x30df('0x89')](_0x3ce214);}})[_0x30df('0x2d')](function(_0x105d55){if(_0x105d55){_0x2faa4b=_0x105d55[_0x30df('0x4e')];if(!_0x1e1d38[_0x30df('0x3b')][_0x30df('0x5b')]('nolimit')){_0x3ce214[_0x30df('0x27')]=qs[_0x30df('0x27')](_0x1e1d38[_0x30df('0x3b')]['limit']);_0x3ce214['offset']=qs['offset'](_0x1e1d38[_0x30df('0x3b')][_0x30df('0x25')]);}return _0x28d213[_0x30df('0x89')](_0x3ce214);}})['then'](function(_0x4759f1){if(_0x4759f1){return _0x4759f1?{'count':_0x2faa4b,'rows':_0x4759f1}:null;}})['then'](respondWithResult(_0x487464,null))['catch'](handleError(_0x487464,null));};
\ No newline at end of file
index 7517a96..22e0df1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc3e=['save','remove','emit','hasOwnProperty','hook','../../mysqldb','FaxQueue'];(function(_0x7b23ce,_0x21da3f){var _0x153de9=function(_0x549b24){while(--_0x549b24){_0x7b23ce['push'](_0x7b23ce['shift']());}};_0x153de9(++_0x21da3f);}(_0xfc3e,0x12b));var _0xefc3=function(_0x316fac,_0x2d0131){_0x316fac=_0x316fac-0x0;var _0x5dee8f=_0xfc3e[_0x316fac];return _0x5dee8f;};'use strict';var EventEmitter=require('events');var FaxQueue=require(_0xefc3('0x0'))['db'][_0xefc3('0x1')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xefc3('0x2'),'afterUpdate':'update','afterDestroy':_0xefc3('0x3')};function emitEvent(_0x387a5a){return function(_0x2fd3c9,_0x2286c0,_0x27261d){FaxQueueEvents['emit'](_0x387a5a+':'+_0x2fd3c9['id'],_0x2fd3c9);FaxQueueEvents[_0xefc3('0x4')](_0x387a5a,_0x2fd3c9);_0x27261d(null);};}for(var e in events){if(events[_0xefc3('0x5')](e)){var event=events[e];FaxQueue[_0xefc3('0x6')](e,emitEvent(event));}}module['exports']=FaxQueueEvents;
\ No newline at end of file
+var _0x9e89=['events','../../mysqldb','update','emit','hasOwnProperty','hook','exports'];(function(_0x291d28,_0x5df027){var _0x3ca3ce=function(_0x420b88){while(--_0x420b88){_0x291d28['push'](_0x291d28['shift']());}};_0x3ca3ce(++_0x5df027);}(_0x9e89,0x12d));var _0x99e8=function(_0x56c620,_0x14e7da){_0x56c620=_0x56c620-0x0;var _0x33b8cc=_0x9e89[_0x56c620];return _0x33b8cc;};'use strict';var EventEmitter=require(_0x99e8('0x0'));var FaxQueue=require(_0x99e8('0x1'))['db']['FaxQueue'];var FaxQueueEvents=new EventEmitter();FaxQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x99e8('0x2'),'afterDestroy':'remove'};function emitEvent(_0x4e59fe){return function(_0x94b60,_0x2b4f86,_0x35cfb6){FaxQueueEvents[_0x99e8('0x3')](_0x4e59fe+':'+_0x94b60['id'],_0x94b60);FaxQueueEvents[_0x99e8('0x3')](_0x4e59fe,_0x94b60);_0x35cfb6(null);};}for(var e in events){if(events[_0x99e8('0x4')](e)){var event=events[e];FaxQueue[_0x99e8('0x5')](e,emitEvent(event));}}module[_0x99e8('0x6')]=FaxQueueEvents;
\ No newline at end of file
index 8f8ad33..09ec8f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37b2=['define','FaxQueue','fax_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxQueue.attributes','exports'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x37b2,0x13e));var _0x237b=function(_0x59328b,_0x3e1186){_0x59328b=_0x59328b-0x0;var _0x2593ea=_0x37b2[_0x59328b];return _0x2593ea;};'use strict';var _=require(_0x237b('0x0'));var util=require(_0x237b('0x1'));var logger=require(_0x237b('0x2'))(_0x237b('0x3'));var moment=require(_0x237b('0x4'));var BPromise=require(_0x237b('0x5'));var rp=require(_0x237b('0x6'));var fs=require('fs');var path=require(_0x237b('0x7'));var rimraf=require(_0x237b('0x8'));var config=require(_0x237b('0x9'));var attributes=require(_0x237b('0xa'));module[_0x237b('0xb')]=function(_0x186f28,_0x426507){return _0x186f28[_0x237b('0xc')](_0x237b('0xd'),attributes,{'tableName':_0x237b('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3b1a=['rimraf','./faxQueue.attributes','exports','define','FaxQueue','fax_queues','lodash','util','api','moment','bluebird','request-promise'];(function(_0x34d82c,_0x5f06ba){var _0x4c252f=function(_0x16c992){while(--_0x16c992){_0x34d82c['push'](_0x34d82c['shift']());}};_0x4c252f(++_0x5f06ba);}(_0x3b1a,0x14a));var _0xa3b1=function(_0x113982,_0x597be2){_0x113982=_0x113982-0x0;var _0x13ff92=_0x3b1a[_0x113982];return _0x13ff92;};'use strict';var _=require(_0xa3b1('0x0'));var util=require(_0xa3b1('0x1'));var logger=require('../../config/logger')(_0xa3b1('0x2'));var moment=require(_0xa3b1('0x3'));var BPromise=require(_0xa3b1('0x4'));var rp=require(_0xa3b1('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa3b1('0x6'));var config=require('../../config/environment');var attributes=require(_0xa3b1('0x7'));module[_0xa3b1('0x8')]=function(_0x214f02,_0x3cc1a9){return _0x214f02[_0xa3b1('0x9')](_0xa3b1('0xa'),attributes,{'tableName':_0xa3b1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cf54957..c7fd9e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5c7=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','FaxQueue,\x20%s,\x20%s','message','FaxQueue','findAll','options','raw','where','attributes','include','map','model','GetFaxQueue','catch','ShowFaxQueue','util','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x673e94,_0x359dc1){var _0x5a003d=function(_0x4a2ee1){while(--_0x4a2ee1){_0x673e94['push'](_0x673e94['shift']());}};_0x5a003d(++_0x359dc1);}(_0xc5c7,0x1e9));var _0x7c5c=function(_0x4ad83e,_0x33aefc){_0x4ad83e=_0x4ad83e-0x0;var _0x5c4de9=_0xc5c7[_0x4ad83e];return _0x5c4de9;};'use strict';var _=require('lodash');var util=require(_0x7c5c('0x0'));var moment=require('moment');var BPromise=require(_0x7c5c('0x1'));var rs=require(_0x7c5c('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7c5c('0x3'))['db'];var utils=require(_0x7c5c('0x4'));var logger=require(_0x7c5c('0x5'))(_0x7c5c('0x6'));var config=require(_0x7c5c('0x7'));var jayson=require(_0x7c5c('0x8'));var client=jayson[_0x7c5c('0x9')][_0x7c5c('0xa')]({'port':0x232a});config[_0x7c5c('0xb')]=_[_0x7c5c('0xc')](config[_0x7c5c('0xb')],{'host':_0x7c5c('0xd'),'port':0x18eb});var socket=require(_0x7c5c('0xe'))(new Redis(config[_0x7c5c('0xb')]));require('./faxQueue.socket')[_0x7c5c('0xf')](socket);function respondWithRpcPromise(_0x240a77,_0x567046,_0x8a3c59){return new BPromise(function(_0x120760,_0x1067c8){return client[_0x7c5c('0x10')](_0x240a77,_0x8a3c59)[_0x7c5c('0x11')](function(_0x167981){logger[_0x7c5c('0x12')]('FaxQueue,\x20%s,\x20%s',_0x567046,_0x7c5c('0x13'));logger[_0x7c5c('0x14')](_0x7c5c('0x15'),_0x567046,_0x7c5c('0x13'),JSON[_0x7c5c('0x16')](_0x167981));if(_0x167981[_0x7c5c('0x17')]){if(_0x167981[_0x7c5c('0x17')]['code']===0x1f4){logger[_0x7c5c('0x17')](_0x7c5c('0x18'),_0x567046,_0x167981[_0x7c5c('0x17')][_0x7c5c('0x19')]);return _0x1067c8(_0x167981[_0x7c5c('0x17')][_0x7c5c('0x19')]);}logger[_0x7c5c('0x17')](_0x7c5c('0x18'),_0x567046,_0x167981[_0x7c5c('0x17')][_0x7c5c('0x19')]);return _0x120760(_0x167981[_0x7c5c('0x17')][_0x7c5c('0x19')]);}else{logger[_0x7c5c('0x12')](_0x7c5c('0x18'),_0x567046,_0x7c5c('0x13'));_0x120760(_0x167981['result'][_0x7c5c('0x19')]);}})['catch'](function(_0x40009b){logger[_0x7c5c('0x17')](_0x7c5c('0x18'),_0x567046,_0x40009b);_0x1067c8(_0x40009b);});});}exports['GetFaxQueue']=function(_0x22bfaa){var _0x268b07=this;return new Promise(function(_0x3c1f9f,_0x41121f){return db[_0x7c5c('0x1a')][_0x7c5c('0x1b')]({'raw':_0x22bfaa[_0x7c5c('0x1c')]?_0x22bfaa[_0x7c5c('0x1c')][_0x7c5c('0x1d')]===undefined?!![]:![]:!![],'where':_0x22bfaa[_0x7c5c('0x1c')]?_0x22bfaa[_0x7c5c('0x1c')][_0x7c5c('0x1e')]||null:null,'attributes':_0x22bfaa[_0x7c5c('0x1c')]?_0x22bfaa[_0x7c5c('0x1c')][_0x7c5c('0x1f')]||null:null,'limit':_0x22bfaa[_0x7c5c('0x1c')]?_0x22bfaa[_0x7c5c('0x1c')]['limit']||null:null,'include':_0x22bfaa[_0x7c5c('0x1c')]?_0x22bfaa[_0x7c5c('0x1c')][_0x7c5c('0x20')]?_[_0x7c5c('0x21')](_0x22bfaa[_0x7c5c('0x1c')]['include'],function(_0x56c485){return{'model':db[_0x56c485[_0x7c5c('0x22')]],'as':_0x56c485['as'],'attributes':_0x56c485[_0x7c5c('0x1f')],'include':_0x56c485[_0x7c5c('0x20')]?_[_0x7c5c('0x21')](_0x56c485[_0x7c5c('0x20')],function(_0x336919){return{'model':db[_0x336919['model']],'as':_0x336919['as'],'attributes':_0x336919[_0x7c5c('0x1f')],'include':_0x336919[_0x7c5c('0x20')]?_[_0x7c5c('0x21')](_0x336919[_0x7c5c('0x20')],function(_0x254720){return{'model':db[_0x254720[_0x7c5c('0x22')]],'as':_0x254720['as'],'attributes':_0x254720[_0x7c5c('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x7c5c('0x11')](function(_0x4e6c59){logger['info'](_0x7c5c('0x23'),_0x22bfaa);logger[_0x7c5c('0x14')](_0x7c5c('0x23'),_0x22bfaa,JSON[_0x7c5c('0x16')](_0x4e6c59));_0x3c1f9f(_0x4e6c59);})[_0x7c5c('0x24')](function(_0x1e48e9){logger['error']('GetFaxQueue',_0x1e48e9[_0x7c5c('0x19')],_0x22bfaa);_0x41121f(_0x268b07[_0x7c5c('0x17')](0x1f4,_0x1e48e9[_0x7c5c('0x19')]));});});};exports[_0x7c5c('0x25')]=function(_0x542233){var _0x30f13f=this;return new Promise(function(_0x26b26a,_0x18a98e){return db[_0x7c5c('0x1a')]['find']({'raw':_0x542233[_0x7c5c('0x1c')]?_0x542233['options'][_0x7c5c('0x1d')]===undefined?!![]:![]:!![],'where':_0x542233[_0x7c5c('0x1c')]?_0x542233[_0x7c5c('0x1c')][_0x7c5c('0x1e')]||null:null,'attributes':_0x542233['options']?_0x542233[_0x7c5c('0x1c')][_0x7c5c('0x1f')]||null:null,'include':_0x542233['options']?_0x542233[_0x7c5c('0x1c')]['include']?_[_0x7c5c('0x21')](_0x542233[_0x7c5c('0x1c')][_0x7c5c('0x20')],function(_0x357bc6){return{'model':db[_0x357bc6['model']],'as':_0x357bc6['as'],'attributes':_0x357bc6[_0x7c5c('0x1f')],'include':_0x357bc6['include']?_['map'](_0x357bc6[_0x7c5c('0x20')],function(_0x30efca){return{'model':db[_0x30efca[_0x7c5c('0x22')]],'as':_0x30efca['as'],'attributes':_0x30efca['attributes'],'include':_0x30efca[_0x7c5c('0x20')]?_[_0x7c5c('0x21')](_0x30efca[_0x7c5c('0x20')],function(_0x3fbd32){return{'model':db[_0x3fbd32[_0x7c5c('0x22')]],'as':_0x3fbd32['as'],'attributes':_0x3fbd32['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x116ad8){logger[_0x7c5c('0x12')](_0x7c5c('0x25'),_0x542233);logger[_0x7c5c('0x14')](_0x7c5c('0x25'),_0x542233,JSON[_0x7c5c('0x16')](_0x116ad8));_0x26b26a(_0x116ad8);})[_0x7c5c('0x24')](function(_0x48d6b9){logger['error'](_0x7c5c('0x25'),_0x48d6b9[_0x7c5c('0x19')],_0x542233);_0x18a98e(_0x30f13f['error'](0x1f4,_0x48d6b9[_0x7c5c('0x19')]));});});};
\ No newline at end of file
+var _0xd2cd=['register','request','then','info','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','code','error','message','FaxQueue,\x20%s,\x20%s','result','catch','FaxQueue','findAll','options','raw','where','attributes','limit','include','map','model','GetFaxQueue','ShowFaxQueue','find','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','localhost','socket.io-emitter','./faxQueue.socket'];(function(_0x460666,_0x24bfa0){var _0x555cbf=function(_0x3b4743){while(--_0x3b4743){_0x460666['push'](_0x460666['shift']());}};_0x555cbf(++_0x24bfa0);}(_0xd2cd,0x96));var _0xdd2c=function(_0x2af47e,_0x1d2a86){_0x2af47e=_0x2af47e-0x0;var _0x5bca26=_0xd2cd[_0x2af47e];return _0x5bca26;};'use strict';var _=require('lodash');var util=require(_0xdd2c('0x0'));var moment=require('moment');var BPromise=require(_0xdd2c('0x1'));var rs=require(_0xdd2c('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xdd2c('0x3'))['db'];var utils=require(_0xdd2c('0x4'));var logger=require(_0xdd2c('0x5'))(_0xdd2c('0x6'));var config=require(_0xdd2c('0x7'));var jayson=require(_0xdd2c('0x8'));var client=jayson[_0xdd2c('0x9')]['http']({'port':0x232a});config[_0xdd2c('0xa')]=_['defaults'](config[_0xdd2c('0xa')],{'host':_0xdd2c('0xb'),'port':0x18eb});var socket=require(_0xdd2c('0xc'))(new Redis(config[_0xdd2c('0xa')]));require(_0xdd2c('0xd'))[_0xdd2c('0xe')](socket);function respondWithRpcPromise(_0x3e5778,_0x4820cb,_0x33877a){return new BPromise(function(_0x56619b,_0x42d993){return client[_0xdd2c('0xf')](_0x3e5778,_0x33877a)[_0xdd2c('0x10')](function(_0x48ecc1){logger[_0xdd2c('0x11')]('FaxQueue,\x20%s,\x20%s',_0x4820cb,_0xdd2c('0x12'));logger[_0xdd2c('0x13')](_0xdd2c('0x14'),_0x4820cb,_0xdd2c('0x12'),JSON[_0xdd2c('0x15')](_0x48ecc1));if(_0x48ecc1['error']){if(_0x48ecc1['error'][_0xdd2c('0x16')]===0x1f4){logger[_0xdd2c('0x17')]('FaxQueue,\x20%s,\x20%s',_0x4820cb,_0x48ecc1[_0xdd2c('0x17')][_0xdd2c('0x18')]);return _0x42d993(_0x48ecc1[_0xdd2c('0x17')][_0xdd2c('0x18')]);}logger[_0xdd2c('0x17')](_0xdd2c('0x19'),_0x4820cb,_0x48ecc1[_0xdd2c('0x17')][_0xdd2c('0x18')]);return _0x56619b(_0x48ecc1['error'][_0xdd2c('0x18')]);}else{logger['info'](_0xdd2c('0x19'),_0x4820cb,_0xdd2c('0x12'));_0x56619b(_0x48ecc1[_0xdd2c('0x1a')]['message']);}})[_0xdd2c('0x1b')](function(_0x102e6d){logger[_0xdd2c('0x17')](_0xdd2c('0x19'),_0x4820cb,_0x102e6d);_0x42d993(_0x102e6d);});});}exports['GetFaxQueue']=function(_0xb4b8c0){var _0x6ff4bc=this;return new Promise(function(_0x20ca2f,_0x4eebbd){return db[_0xdd2c('0x1c')][_0xdd2c('0x1d')]({'raw':_0xb4b8c0[_0xdd2c('0x1e')]?_0xb4b8c0[_0xdd2c('0x1e')][_0xdd2c('0x1f')]===undefined?!![]:![]:!![],'where':_0xb4b8c0[_0xdd2c('0x1e')]?_0xb4b8c0[_0xdd2c('0x1e')][_0xdd2c('0x20')]||null:null,'attributes':_0xb4b8c0[_0xdd2c('0x1e')]?_0xb4b8c0[_0xdd2c('0x1e')][_0xdd2c('0x21')]||null:null,'limit':_0xb4b8c0[_0xdd2c('0x1e')]?_0xb4b8c0[_0xdd2c('0x1e')][_0xdd2c('0x22')]||null:null,'include':_0xb4b8c0[_0xdd2c('0x1e')]?_0xb4b8c0[_0xdd2c('0x1e')][_0xdd2c('0x23')]?_[_0xdd2c('0x24')](_0xb4b8c0[_0xdd2c('0x1e')][_0xdd2c('0x23')],function(_0x3a14dc){return{'model':db[_0x3a14dc[_0xdd2c('0x25')]],'as':_0x3a14dc['as'],'attributes':_0x3a14dc[_0xdd2c('0x21')],'include':_0x3a14dc[_0xdd2c('0x23')]?_[_0xdd2c('0x24')](_0x3a14dc[_0xdd2c('0x23')],function(_0x5ec8c9){return{'model':db[_0x5ec8c9[_0xdd2c('0x25')]],'as':_0x5ec8c9['as'],'attributes':_0x5ec8c9[_0xdd2c('0x21')],'include':_0x5ec8c9[_0xdd2c('0x23')]?_['map'](_0x5ec8c9[_0xdd2c('0x23')],function(_0x81698a){return{'model':db[_0x81698a[_0xdd2c('0x25')]],'as':_0x81698a['as'],'attributes':_0x81698a['attributes']};}):[]};}):[]};}):[]:[]})[_0xdd2c('0x10')](function(_0x2b4baf){logger[_0xdd2c('0x11')](_0xdd2c('0x26'),_0xb4b8c0);logger[_0xdd2c('0x13')](_0xdd2c('0x26'),_0xb4b8c0,JSON['stringify'](_0x2b4baf));_0x20ca2f(_0x2b4baf);})[_0xdd2c('0x1b')](function(_0x1ce915){logger[_0xdd2c('0x17')](_0xdd2c('0x26'),_0x1ce915[_0xdd2c('0x18')],_0xb4b8c0);_0x4eebbd(_0x6ff4bc[_0xdd2c('0x17')](0x1f4,_0x1ce915['message']));});});};exports[_0xdd2c('0x27')]=function(_0x3bab8c){var _0x85b01=this;return new Promise(function(_0x1f128d,_0xab3571){return db[_0xdd2c('0x1c')][_0xdd2c('0x28')]({'raw':_0x3bab8c['options']?_0x3bab8c[_0xdd2c('0x1e')][_0xdd2c('0x1f')]===undefined?!![]:![]:!![],'where':_0x3bab8c[_0xdd2c('0x1e')]?_0x3bab8c[_0xdd2c('0x1e')]['where']||null:null,'attributes':_0x3bab8c[_0xdd2c('0x1e')]?_0x3bab8c[_0xdd2c('0x1e')][_0xdd2c('0x21')]||null:null,'include':_0x3bab8c[_0xdd2c('0x1e')]?_0x3bab8c[_0xdd2c('0x1e')][_0xdd2c('0x23')]?_[_0xdd2c('0x24')](_0x3bab8c[_0xdd2c('0x1e')][_0xdd2c('0x23')],function(_0x46e6fc){return{'model':db[_0x46e6fc['model']],'as':_0x46e6fc['as'],'attributes':_0x46e6fc[_0xdd2c('0x21')],'include':_0x46e6fc['include']?_[_0xdd2c('0x24')](_0x46e6fc[_0xdd2c('0x23')],function(_0x5ba694){return{'model':db[_0x5ba694['model']],'as':_0x5ba694['as'],'attributes':_0x5ba694[_0xdd2c('0x21')],'include':_0x5ba694[_0xdd2c('0x23')]?_['map'](_0x5ba694[_0xdd2c('0x23')],function(_0x5bf42f){return{'model':db[_0x5bf42f['model']],'as':_0x5bf42f['as'],'attributes':_0x5bf42f[_0xdd2c('0x21')]};}):[]};}):[]};}):[]:[]})[_0xdd2c('0x10')](function(_0x28df9c){logger[_0xdd2c('0x11')](_0xdd2c('0x27'),_0x3bab8c);logger[_0xdd2c('0x13')](_0xdd2c('0x27'),_0x3bab8c,JSON[_0xdd2c('0x15')](_0x28df9c));_0x1f128d(_0x28df9c);})[_0xdd2c('0x1b')](function(_0xd85e2c){logger[_0xdd2c('0x17')](_0xdd2c('0x27'),_0xd85e2c[_0xdd2c('0x18')],_0x3bab8c);_0xab3571(_0x85b01[_0xdd2c('0x17')](0x1f4,_0xd85e2c[_0xdd2c('0x18')]));});});};
\ No newline at end of file
index e0cf855..1ed5e0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3074=['register','length','faxQueue:','./faxQueue.events','remove','update'];(function(_0x38cd5d,_0x2452c9){var _0x4d33ec=function(_0x21ee12){while(--_0x21ee12){_0x38cd5d['push'](_0x38cd5d['shift']());}};_0x4d33ec(++_0x2452c9);}(_0x3074,0x1dd));var _0x4307=function(_0x423f6f,_0x3378e7){_0x423f6f=_0x423f6f-0x0;var _0x39ebc0=_0x3074[_0x423f6f];return _0x39ebc0;};'use strict';var FaxQueueEvents=require(_0x4307('0x0'));var events=['save',_0x4307('0x1'),_0x4307('0x2')];function createListener(_0x3dd976,_0x59f091){return function(_0x1fd56f){_0x59f091['emit'](_0x3dd976,_0x1fd56f);};}function removeListener(_0x256692,_0x31bf86){return function(){FaxQueueEvents['removeListener'](_0x256692,_0x31bf86);};}exports[_0x4307('0x3')]=function(_0x2c94ac){for(var _0xf59e6f=0x0,_0x590bda=events[_0x4307('0x4')];_0xf59e6f<_0x590bda;_0xf59e6f++){var _0x14e01d=events[_0xf59e6f];var _0x11663f=createListener(_0x4307('0x5')+_0x14e01d,_0x2c94ac);FaxQueueEvents['on'](_0x14e01d,_0x11663f);}};
\ No newline at end of file
+var _0x60c2=['removeListener','register','length','save','remove','update','emit'];(function(_0x258a42,_0x5e11d1){var _0x470826=function(_0x8b34a8){while(--_0x8b34a8){_0x258a42['push'](_0x258a42['shift']());}};_0x470826(++_0x5e11d1);}(_0x60c2,0x8f));var _0x260c=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x60c2[_0x502c7d];return _0x30b7ed;};'use strict';var FaxQueueEvents=require('./faxQueue.events');var events=[_0x260c('0x0'),_0x260c('0x1'),_0x260c('0x2')];function createListener(_0x3ad4c5,_0x2f5bc8){return function(_0x759b92){_0x2f5bc8[_0x260c('0x3')](_0x3ad4c5,_0x759b92);};}function removeListener(_0x309bde,_0x17a599){return function(){FaxQueueEvents[_0x260c('0x4')](_0x309bde,_0x17a599);};}exports[_0x260c('0x5')]=function(_0x13c7d0){for(var _0x558b0c=0x0,_0x14fab2=events[_0x260c('0x6')];_0x558b0c<_0x14fab2;_0x558b0c++){var _0x3b432d=events[_0x558b0c];var _0xf22c37=createListener('faxQueue:'+_0x3b432d,_0x13c7d0);FaxQueueEvents['on'](_0x3b432d,_0xf22c37);}};
\ No newline at end of file
index a73da20..fab2224 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8085=['Router','fs-extra','../../config/environment','./faxQueue.controller','isAuthenticated','index','get','/describe','describe','/:id','show','/:id/members','getMembers','getTeams','/:id/users','getAgents','post','/:id/teams','addTeams','addAgents','put','update','destroy','delete','removeTeams','removeAgents','multer','connect-timeout','express'];(function(_0x3b37ba,_0x3dc349){var _0x3e6483=function(_0x5b51d7){while(--_0x5b51d7){_0x3b37ba['push'](_0x3b37ba['shift']());}};_0x3e6483(++_0x3dc349);}(_0x8085,0x71));var _0x5808=function(_0x504df1,_0x289598){_0x504df1=_0x504df1-0x0;var _0x1063b5=_0x8085[_0x504df1];return _0x1063b5;};'use strict';var multer=require(_0x5808('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x5808('0x1'));var express=require(_0x5808('0x2'));var router=express[_0x5808('0x3')]();var fs_extra=require(_0x5808('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x5808('0x5'));var controller=require(_0x5808('0x6'));router['get']('/',auth[_0x5808('0x7')](),controller[_0x5808('0x8')]);router[_0x5808('0x9')](_0x5808('0xa'),auth[_0x5808('0x7')](),controller[_0x5808('0xb')]);router[_0x5808('0x9')](_0x5808('0xc'),auth[_0x5808('0x7')](),controller[_0x5808('0xd')]);router[_0x5808('0x9')](_0x5808('0xe'),auth[_0x5808('0x7')](),controller[_0x5808('0xf')]);router[_0x5808('0x9')]('/:id/teams',auth['isAuthenticated'](),controller[_0x5808('0x10')]);router[_0x5808('0x9')](_0x5808('0x11'),auth[_0x5808('0x7')](),controller[_0x5808('0x12')]);router[_0x5808('0x13')]('/',auth[_0x5808('0x7')](),controller['create']);router['post'](_0x5808('0x14'),auth[_0x5808('0x7')](),controller[_0x5808('0x15')]);router[_0x5808('0x13')](_0x5808('0x11'),auth[_0x5808('0x7')](),controller[_0x5808('0x16')]);router[_0x5808('0x17')](_0x5808('0xc'),auth[_0x5808('0x7')](),controller[_0x5808('0x18')]);router['delete'](_0x5808('0xc'),auth['isAuthenticated'](),controller[_0x5808('0x19')]);router[_0x5808('0x1a')](_0x5808('0x14'),auth['isAuthenticated'](),controller[_0x5808('0x1b')]);router[_0x5808('0x1a')]('/:id/users',auth['isAuthenticated'](),controller[_0x5808('0x1c')]);module['exports']=router;
\ No newline at end of file
+var _0x430c=['post','create','/:id/teams','/:id/users','addAgents','put','destroy','delete','removeAgents','multer','connect-timeout','express','Router','./faxQueue.controller','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/members','getMembers','getAgents'];(function(_0x239eaf,_0x1968b4){var _0x8863f7=function(_0x1b34d7){while(--_0x1b34d7){_0x239eaf['push'](_0x239eaf['shift']());}};_0x8863f7(++_0x1968b4);}(_0x430c,0x1a1));var _0xc430=function(_0x33dcf7,_0x3d5390){_0x33dcf7=_0x33dcf7-0x0;var _0x542d4e=_0x430c[_0x33dcf7];return _0x542d4e;};'use strict';var multer=require(_0xc430('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xc430('0x1'));var express=require(_0xc430('0x2'));var router=express[_0xc430('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xc430('0x4'));router[_0xc430('0x5')]('/',auth['isAuthenticated'](),controller[_0xc430('0x6')]);router['get'](_0xc430('0x7'),auth[_0xc430('0x8')](),controller[_0xc430('0x9')]);router[_0xc430('0x5')](_0xc430('0xa'),auth[_0xc430('0x8')](),controller[_0xc430('0xb')]);router[_0xc430('0x5')](_0xc430('0xc'),auth['isAuthenticated'](),controller[_0xc430('0xd')]);router[_0xc430('0x5')]('/:id/teams',auth[_0xc430('0x8')](),controller['getTeams']);router[_0xc430('0x5')]('/:id/users',auth[_0xc430('0x8')](),controller[_0xc430('0xe')]);router[_0xc430('0xf')]('/',auth[_0xc430('0x8')](),controller[_0xc430('0x10')]);router[_0xc430('0xf')](_0xc430('0x11'),auth['isAuthenticated'](),controller['addTeams']);router[_0xc430('0xf')](_0xc430('0x12'),auth[_0xc430('0x8')](),controller[_0xc430('0x13')]);router[_0xc430('0x14')]('/:id',auth[_0xc430('0x8')](),controller['update']);router['delete'](_0xc430('0xa'),auth[_0xc430('0x8')](),controller[_0xc430('0x15')]);router['delete']('/:id/teams',auth[_0xc430('0x8')](),controller['removeTeams']);router[_0xc430('0x16')]('/:id/users',auth['isAuthenticated'](),controller[_0xc430('0x17')]);module['exports']=router;
\ No newline at end of file
index 8f2e076..79056f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28e0=['sequelize','exports','STRING','DATE','moment'];(function(_0x8784e0,_0x788af2){var _0x48ca74=function(_0x2542f9){while(--_0x2542f9){_0x8784e0['push'](_0x8784e0['shift']());}};_0x48ca74(++_0x788af2);}(_0x28e0,0x126));var _0x028e=function(_0x45cf24,_0x38f928){_0x45cf24=_0x45cf24-0x0;var _0x4c9bc5=_0x28e0[_0x45cf24];return _0x4c9bc5;};'use strict';var moment=require(_0x028e('0x0'));var Sequelize=require(_0x028e('0x1'));module[_0x028e('0x2')]={'uniqueid':{'type':Sequelize[_0x028e('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x028e('0x3')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x028e('0x4')]},'acceptAt':{'type':Sequelize[_0x028e('0x4')]},'exitAt':{'type':Sequelize[_0x028e('0x4')]},'reason':{'type':Sequelize[_0x028e('0x3')]}};
\ No newline at end of file
+var _0x5ad6=['DATE','moment','STRING'];(function(_0x334841,_0x2bbc4c){var _0x5beb4b=function(_0x4bea72){while(--_0x4bea72){_0x334841['push'](_0x334841['shift']());}};_0x5beb4b(++_0x2bbc4c);}(_0x5ad6,0xfd));var _0x65ad=function(_0x1678c8,_0x1c32f4){_0x1678c8=_0x1678c8-0x0;var _0x387aa9=_0x5ad6[_0x1678c8];return _0x387aa9;};'use strict';var moment=require(_0x65ad('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x65ad('0x1')]},'joinAt':{'type':Sequelize[_0x65ad('0x2')]},'leaveAt':{'type':Sequelize[_0x65ad('0x2')]},'acceptAt':{'type':Sequelize[_0x65ad('0x2')]},'exitAt':{'type':Sequelize[_0x65ad('0x2')]},'reason':{'type':Sequelize[_0x65ad('0x1')]}};
\ No newline at end of file
index 512c638..c7b7d6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea70=['body','destroy','describe','eml-format','rimraf','zip-dir','request-promise','bluebird','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','undefined','limit','count','offset','set','Content-Range','json','reject','save','update','then','stack','name','send','index','map','FaxQueueReport','rawAttributes','fieldName','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filters','filter','type','VIRTUAL','merge','options','include','findAll','show','params','find','catch','create'];(function(_0x40db1b,_0x47fedf){var _0x372617=function(_0x3b6912){while(--_0x3b6912){_0x40db1b['push'](_0x40db1b['shift']());}};_0x372617(++_0x47fedf);}(_0xea70,0x175));var _0x0ea7=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xea70[_0x432682];return _0x463d05;};'use strict';var emlformat=require(_0x0ea7('0x0'));var rimraf=require(_0x0ea7('0x1'));var zipdir=require(_0x0ea7('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0ea7('0x3'));var moment=require('moment');var BPromise=require(_0x0ea7('0x4'));var Mustache=require('mustache');var util=require(_0x0ea7('0x5'));var path=require(_0x0ea7('0x6'));var sox=require(_0x0ea7('0x7'));var csv=require(_0x0ea7('0x8'));var ejs=require(_0x0ea7('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0ea7('0xa'));var squel=require(_0x0ea7('0xb'));var crypto=require('crypto');var jsforce=require(_0x0ea7('0xc'));var deskjs=require(_0x0ea7('0xd'));var toCsv=require('to-csv');var querystring=require(_0x0ea7('0xe'));var Papa=require(_0x0ea7('0xf'));var Redis=require(_0x0ea7('0x10'));var authService=require(_0x0ea7('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x0ea7('0x12'));var hardwareService=require(_0x0ea7('0x13'));var logger=require(_0x0ea7('0x14'))(_0x0ea7('0x15'));var utils=require(_0x0ea7('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x0ea7('0x17'));var db=require(_0x0ea7('0x18'))['db'];function respondWithStatusCode(_0x349753,_0x56d68f){_0x56d68f=_0x56d68f||0xcc;return function(_0x5addc6){if(_0x5addc6){return _0x349753['sendStatus'](_0x56d68f);}return _0x349753[_0x0ea7('0x19')](_0x56d68f)[_0x0ea7('0x1a')]();};}function respondWithResult(_0x3312b3,_0x2cd543){_0x2cd543=_0x2cd543||0xc8;return function(_0x4e1cd9){if(_0x4e1cd9){return _0x3312b3['status'](_0x2cd543)['json'](_0x4e1cd9);}};}function respondWithFilteredResult(_0x44e922,_0x1e52e1){return function(_0xa6b67f){if(_0xa6b67f){var _0x548dad=typeof _0x1e52e1['offset']===_0x0ea7('0x1b')&&typeof _0x1e52e1[_0x0ea7('0x1c')]===_0x0ea7('0x1b');var _0x22fae2=_0xa6b67f[_0x0ea7('0x1d')];var _0x987032=_0x548dad?0x0:_0x1e52e1[_0x0ea7('0x1e')];var _0x48f10a=_0x548dad?_0xa6b67f['count']:_0x1e52e1[_0x0ea7('0x1e')]+_0x1e52e1[_0x0ea7('0x1c')];var _0x4f526b;if(_0x48f10a>=_0x22fae2){_0x48f10a=_0x22fae2;_0x4f526b=0xc8;}else{_0x4f526b=0xce;}_0x44e922[_0x0ea7('0x19')](_0x4f526b);return _0x44e922[_0x0ea7('0x1f')](_0x0ea7('0x20'),_0x987032+'-'+_0x48f10a+'/'+_0x22fae2)[_0x0ea7('0x21')](_0xa6b67f);}return null;};}function patchUpdates(_0x306ace){return function(_0x38494d){try{jsonpatch['apply'](_0x38494d,_0x306ace,!![]);}catch(_0x1f3bce){return BPromise[_0x0ea7('0x22')](_0x1f3bce);}return _0x38494d[_0x0ea7('0x23')]();};}function saveUpdates(_0x61c70e,_0x411603){return function(_0x82bb8){if(_0x82bb8){return _0x82bb8[_0x0ea7('0x24')](_0x61c70e)[_0x0ea7('0x25')](function(_0x47b53b){return _0x47b53b;});}return null;};}function removeEntity(_0x25b6c9,_0x2a0f71){return function(_0x76d6a9){if(_0x76d6a9){return _0x76d6a9['destroy']()[_0x0ea7('0x25')](function(){_0x25b6c9[_0x0ea7('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3ba808,_0x5870b2){return function(_0x5adf93){if(!_0x5adf93){_0x3ba808['sendStatus'](0x194);}return _0x5adf93;};}function handleError(_0x32b956,_0x36ff0a){_0x36ff0a=_0x36ff0a||0x1f4;return function(_0x462715){logger['error'](_0x462715[_0x0ea7('0x26')]);if(_0x462715[_0x0ea7('0x27')]){delete _0x462715[_0x0ea7('0x27')];}_0x32b956[_0x0ea7('0x19')](_0x36ff0a)[_0x0ea7('0x28')](_0x462715);};}exports[_0x0ea7('0x29')]=function(_0x247c8c,_0x3fe1e3){var _0x4b6c47={},_0x27e9fd={},_0x3d07c3={'count':0x0,'rows':[]};var _0x51f18a=_[_0x0ea7('0x2a')](db[_0x0ea7('0x2b')][_0x0ea7('0x2c')],function(_0x465da4){return{'name':_0x465da4[_0x0ea7('0x2d')],'type':_0x465da4['type'][_0x0ea7('0x2e')]};});_0x27e9fd[_0x0ea7('0x2f')]=_[_0x0ea7('0x2a')](_0x51f18a,_0x0ea7('0x27'));_0x27e9fd[_0x0ea7('0x30')]=_[_0x0ea7('0x31')](_0x247c8c['query']);_0x27e9fd['filters']=_[_0x0ea7('0x32')](_0x27e9fd[_0x0ea7('0x2f')],_0x27e9fd[_0x0ea7('0x30')]);_0x4b6c47['attributes']=_['intersection'](_0x27e9fd[_0x0ea7('0x2f')],qs[_0x0ea7('0x33')](_0x247c8c[_0x0ea7('0x30')]['fields']));_0x4b6c47['attributes']=_0x4b6c47[_0x0ea7('0x34')][_0x0ea7('0x35')]?_0x4b6c47[_0x0ea7('0x34')]:_0x27e9fd[_0x0ea7('0x2f')];if(!_0x247c8c['query'][_0x0ea7('0x36')](_0x0ea7('0x37'))){_0x4b6c47['limit']=qs[_0x0ea7('0x1c')](_0x247c8c[_0x0ea7('0x30')][_0x0ea7('0x1c')]);_0x4b6c47[_0x0ea7('0x1e')]=qs['offset'](_0x247c8c[_0x0ea7('0x30')][_0x0ea7('0x1e')]);}_0x4b6c47['order']=qs[_0x0ea7('0x38')](_0x247c8c[_0x0ea7('0x30')][_0x0ea7('0x38')]);_0x4b6c47[_0x0ea7('0x39')]=qs[_0x0ea7('0x3a')](_['pick'](_0x247c8c[_0x0ea7('0x30')],_0x27e9fd[_0x0ea7('0x3a')]),_0x51f18a);if(_0x247c8c[_0x0ea7('0x30')][_0x0ea7('0x3b')]){_0x4b6c47['where']=_['merge'](_0x4b6c47[_0x0ea7('0x39')],{'$or':_[_0x0ea7('0x2a')](_0x51f18a,function(_0x521c1e){if(_0x521c1e[_0x0ea7('0x3c')]!==_0x0ea7('0x3d')){var _0x295708={};_0x295708[_0x521c1e[_0x0ea7('0x27')]]={'$like':'%'+_0x247c8c[_0x0ea7('0x30')][_0x0ea7('0x3b')]+'%'};return _0x295708;}})});}_0x4b6c47=_[_0x0ea7('0x3e')]({},_0x4b6c47,_0x247c8c[_0x0ea7('0x3f')]);var _0x11310a={'where':_0x4b6c47[_0x0ea7('0x39')]};return db['FaxQueueReport'][_0x0ea7('0x1d')](_0x11310a)[_0x0ea7('0x25')](function(_0x4fc3fb){_0x3d07c3[_0x0ea7('0x1d')]=_0x4fc3fb;if(_0x247c8c[_0x0ea7('0x30')]['includeAll']){_0x4b6c47[_0x0ea7('0x40')]=[{'all':!![]}];}return db['FaxQueueReport'][_0x0ea7('0x41')](_0x4b6c47);})[_0x0ea7('0x25')](function(_0x4f4bc3){_0x3d07c3['rows']=_0x4f4bc3;return _0x3d07c3;})[_0x0ea7('0x25')](respondWithFilteredResult(_0x3fe1e3,_0x4b6c47))['catch'](handleError(_0x3fe1e3,null));};exports[_0x0ea7('0x42')]=function(_0x8d2f37,_0x1eab95){var _0x461946={'raw':!![],'where':{'id':_0x8d2f37[_0x0ea7('0x43')]['id']}},_0x251f26={};_0x251f26[_0x0ea7('0x2f')]=_[_0x0ea7('0x31')](db[_0x0ea7('0x2b')][_0x0ea7('0x2c')]);_0x251f26['query']=_[_0x0ea7('0x31')](_0x8d2f37[_0x0ea7('0x30')]);_0x251f26[_0x0ea7('0x3a')]=_[_0x0ea7('0x32')](_0x251f26[_0x0ea7('0x2f')],_0x251f26[_0x0ea7('0x30')]);_0x461946[_0x0ea7('0x34')]=_[_0x0ea7('0x32')](_0x251f26['model'],qs[_0x0ea7('0x33')](_0x8d2f37['query'][_0x0ea7('0x33')]));_0x461946[_0x0ea7('0x34')]=_0x461946[_0x0ea7('0x34')]['length']?_0x461946[_0x0ea7('0x34')]:_0x251f26['model'];if(_0x8d2f37[_0x0ea7('0x30')]['includeAll']){_0x461946[_0x0ea7('0x40')]=[{'all':!![]}];}_0x461946=_[_0x0ea7('0x3e')]({},_0x461946,_0x8d2f37['options']);return db[_0x0ea7('0x2b')][_0x0ea7('0x44')](_0x461946)[_0x0ea7('0x25')](handleEntityNotFound(_0x1eab95,null))['then'](respondWithResult(_0x1eab95,null))[_0x0ea7('0x45')](handleError(_0x1eab95,null));};exports[_0x0ea7('0x46')]=function(_0x426388,_0xdedde2){return db[_0x0ea7('0x2b')][_0x0ea7('0x46')](_0x426388['body'],{})['then'](respondWithResult(_0xdedde2,0xc9))[_0x0ea7('0x45')](handleError(_0xdedde2,null));};exports[_0x0ea7('0x24')]=function(_0x2d6b25,_0x34d84e){if(_0x2d6b25['body']['id']){delete _0x2d6b25[_0x0ea7('0x47')]['id'];}return db[_0x0ea7('0x2b')][_0x0ea7('0x44')]({'where':{'id':_0x2d6b25[_0x0ea7('0x43')]['id']}})[_0x0ea7('0x25')](handleEntityNotFound(_0x34d84e,null))[_0x0ea7('0x25')](saveUpdates(_0x2d6b25[_0x0ea7('0x47')],null))[_0x0ea7('0x25')](respondWithResult(_0x34d84e,null))['catch'](handleError(_0x34d84e,null));};exports[_0x0ea7('0x48')]=function(_0x3a9e4c,_0x819d67){return db[_0x0ea7('0x2b')][_0x0ea7('0x44')]({'where':{'id':_0x3a9e4c[_0x0ea7('0x43')]['id']}})[_0x0ea7('0x25')](handleEntityNotFound(_0x819d67,null))[_0x0ea7('0x25')](removeEntity(_0x819d67,null))[_0x0ea7('0x45')](handleError(_0x819d67,null));};exports['describe']=function(_0x355bc3,_0x5bd597){return db[_0x0ea7('0x2b')][_0x0ea7('0x49')]()[_0x0ea7('0x25')](respondWithResult(_0x5bd597,null))[_0x0ea7('0x45')](handleError(_0x5bd597,null));};
\ No newline at end of file
+var _0x7846=['merge','type','VIRTUAL','options','includeAll','include','rows','catch','show','find','create','body','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/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','then','destroy','end','name','send','index','map','FaxQueueReport','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','order','sort','where','pick','filter'];(function(_0x378f89,_0x13f5c7){var _0x3239d5=function(_0xd0423c){while(--_0xd0423c){_0x378f89['push'](_0x378f89['shift']());}};_0x3239d5(++_0x13f5c7);}(_0x7846,0xf4));var _0x6784=function(_0xb7a459,_0xc13228){_0xb7a459=_0xb7a459-0x0;var _0x104ab5=_0x7846[_0xb7a459];return _0x104ab5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6784('0x0'));var zipdir=require(_0x6784('0x1'));var jsonpatch=require(_0x6784('0x2'));var rp=require(_0x6784('0x3'));var moment=require(_0x6784('0x4'));var BPromise=require(_0x6784('0x5'));var Mustache=require('mustache');var util=require(_0x6784('0x6'));var path=require(_0x6784('0x7'));var sox=require(_0x6784('0x8'));var csv=require(_0x6784('0x9'));var ejs=require(_0x6784('0xa'));var fs=require('fs');var fs_extra=require(_0x6784('0xb'));var _=require(_0x6784('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x6784('0xd'));var deskjs=require(_0x6784('0xe'));var toCsv=require(_0x6784('0x9'));var querystring=require(_0x6784('0xf'));var Papa=require(_0x6784('0x10'));var Redis=require(_0x6784('0x11'));var authService=require(_0x6784('0x12'));var qs=require(_0x6784('0x13'));var as=require(_0x6784('0x14'));var hardwareService=require(_0x6784('0x15'));var logger=require(_0x6784('0x16'))(_0x6784('0x17'));var utils=require(_0x6784('0x18'));var config=require(_0x6784('0x19'));var licenseUtil=require(_0x6784('0x1a'));var db=require(_0x6784('0x1b'))['db'];function respondWithStatusCode(_0x5a43c1,_0x221cb8){_0x221cb8=_0x221cb8||0xcc;return function(_0x42cd0f){if(_0x42cd0f){return _0x5a43c1[_0x6784('0x1c')](_0x221cb8);}return _0x5a43c1[_0x6784('0x1d')](_0x221cb8)['end']();};}function respondWithResult(_0x18b8a9,_0x681759){_0x681759=_0x681759||0xc8;return function(_0x62426d){if(_0x62426d){return _0x18b8a9[_0x6784('0x1d')](_0x681759)[_0x6784('0x1e')](_0x62426d);}};}function respondWithFilteredResult(_0x18929b,_0x474511){return function(_0x32eaf2){if(_0x32eaf2){var _0x1db6be=typeof _0x474511[_0x6784('0x1f')]===_0x6784('0x20')&&typeof _0x474511['limit']===_0x6784('0x20');var _0x575d8=_0x32eaf2[_0x6784('0x21')];var _0x2fd8a2=_0x1db6be?0x0:_0x474511['offset'];var _0x23f32e=_0x1db6be?_0x32eaf2[_0x6784('0x21')]:_0x474511[_0x6784('0x1f')]+_0x474511[_0x6784('0x22')];var _0x338067;if(_0x23f32e>=_0x575d8){_0x23f32e=_0x575d8;_0x338067=0xc8;}else{_0x338067=0xce;}_0x18929b['status'](_0x338067);return _0x18929b[_0x6784('0x23')](_0x6784('0x24'),_0x2fd8a2+'-'+_0x23f32e+'/'+_0x575d8)['json'](_0x32eaf2);}return null;};}function patchUpdates(_0x3f4178){return function(_0x2eeed8){try{jsonpatch[_0x6784('0x25')](_0x2eeed8,_0x3f4178,!![]);}catch(_0x461ced){return BPromise['reject'](_0x461ced);}return _0x2eeed8[_0x6784('0x26')]();};}function saveUpdates(_0x225a9e,_0x581690){return function(_0x37aea3){if(_0x37aea3){return _0x37aea3[_0x6784('0x27')](_0x225a9e)[_0x6784('0x28')](function(_0x305d64){return _0x305d64;});}return null;};}function removeEntity(_0x3cdfe2,_0x140a38){return function(_0x5452a8){if(_0x5452a8){return _0x5452a8[_0x6784('0x29')]()[_0x6784('0x28')](function(){_0x3cdfe2[_0x6784('0x1d')](0xcc)[_0x6784('0x2a')]();});}};}function handleEntityNotFound(_0x4ac355,_0x13598e){return function(_0x4a1b2b){if(!_0x4a1b2b){_0x4ac355[_0x6784('0x1c')](0x194);}return _0x4a1b2b;};}function handleError(_0x4db985,_0x3a287a){_0x3a287a=_0x3a287a||0x1f4;return function(_0x543c14){logger['error'](_0x543c14['stack']);if(_0x543c14[_0x6784('0x2b')]){delete _0x543c14[_0x6784('0x2b')];}_0x4db985[_0x6784('0x1d')](_0x3a287a)[_0x6784('0x2c')](_0x543c14);};}exports[_0x6784('0x2d')]=function(_0x280b56,_0x497fab){var _0x17537d={},_0x4b296b={},_0x569e31={'count':0x0,'rows':[]};var _0x5b5048=_[_0x6784('0x2e')](db[_0x6784('0x2f')][_0x6784('0x30')],function(_0x2036d6){return{'name':_0x2036d6[_0x6784('0x31')],'type':_0x2036d6['type'][_0x6784('0x32')]};});_0x4b296b[_0x6784('0x33')]=_[_0x6784('0x2e')](_0x5b5048,_0x6784('0x2b'));_0x4b296b[_0x6784('0x34')]=_[_0x6784('0x35')](_0x280b56['query']);_0x4b296b[_0x6784('0x36')]=_['intersection'](_0x4b296b['model'],_0x4b296b[_0x6784('0x34')]);_0x17537d[_0x6784('0x37')]=_[_0x6784('0x38')](_0x4b296b[_0x6784('0x33')],qs['fields'](_0x280b56[_0x6784('0x34')][_0x6784('0x39')]));_0x17537d[_0x6784('0x37')]=_0x17537d[_0x6784('0x37')][_0x6784('0x3a')]?_0x17537d[_0x6784('0x37')]:_0x4b296b[_0x6784('0x33')];if(!_0x280b56[_0x6784('0x34')]['hasOwnProperty']('nolimit')){_0x17537d[_0x6784('0x22')]=qs['limit'](_0x280b56[_0x6784('0x34')]['limit']);_0x17537d[_0x6784('0x1f')]=qs['offset'](_0x280b56[_0x6784('0x34')]['offset']);}_0x17537d[_0x6784('0x3b')]=qs[_0x6784('0x3c')](_0x280b56['query']['sort']);_0x17537d[_0x6784('0x3d')]=qs[_0x6784('0x36')](_[_0x6784('0x3e')](_0x280b56['query'],_0x4b296b['filters']),_0x5b5048);if(_0x280b56['query'][_0x6784('0x3f')]){_0x17537d[_0x6784('0x3d')]=_[_0x6784('0x40')](_0x17537d[_0x6784('0x3d')],{'$or':_[_0x6784('0x2e')](_0x5b5048,function(_0x54b0d0){if(_0x54b0d0[_0x6784('0x41')]!==_0x6784('0x42')){var _0x29060e={};_0x29060e[_0x54b0d0[_0x6784('0x2b')]]={'$like':'%'+_0x280b56[_0x6784('0x34')][_0x6784('0x3f')]+'%'};return _0x29060e;}})});}_0x17537d=_['merge']({},_0x17537d,_0x280b56[_0x6784('0x43')]);var _0x87118f={'where':_0x17537d[_0x6784('0x3d')]};return db[_0x6784('0x2f')][_0x6784('0x21')](_0x87118f)[_0x6784('0x28')](function(_0x31bff6){_0x569e31[_0x6784('0x21')]=_0x31bff6;if(_0x280b56[_0x6784('0x34')][_0x6784('0x44')]){_0x17537d[_0x6784('0x45')]=[{'all':!![]}];}return db[_0x6784('0x2f')]['findAll'](_0x17537d);})['then'](function(_0x11e22d){_0x569e31[_0x6784('0x46')]=_0x11e22d;return _0x569e31;})['then'](respondWithFilteredResult(_0x497fab,_0x17537d))[_0x6784('0x47')](handleError(_0x497fab,null));};exports[_0x6784('0x48')]=function(_0x185c0d,_0xbff90b){var _0xc8532a={'raw':!![],'where':{'id':_0x185c0d['params']['id']}},_0x2ccb02={};_0x2ccb02['model']=_[_0x6784('0x35')](db['FaxQueueReport'][_0x6784('0x30')]);_0x2ccb02[_0x6784('0x34')]=_[_0x6784('0x35')](_0x185c0d['query']);_0x2ccb02[_0x6784('0x36')]=_[_0x6784('0x38')](_0x2ccb02[_0x6784('0x33')],_0x2ccb02[_0x6784('0x34')]);_0xc8532a['attributes']=_[_0x6784('0x38')](_0x2ccb02['model'],qs['fields'](_0x185c0d[_0x6784('0x34')][_0x6784('0x39')]));_0xc8532a['attributes']=_0xc8532a['attributes'][_0x6784('0x3a')]?_0xc8532a[_0x6784('0x37')]:_0x2ccb02[_0x6784('0x33')];if(_0x185c0d['query'][_0x6784('0x44')]){_0xc8532a[_0x6784('0x45')]=[{'all':!![]}];}_0xc8532a=_['merge']({},_0xc8532a,_0x185c0d[_0x6784('0x43')]);return db[_0x6784('0x2f')][_0x6784('0x49')](_0xc8532a)['then'](handleEntityNotFound(_0xbff90b,null))[_0x6784('0x28')](respondWithResult(_0xbff90b,null))[_0x6784('0x47')](handleError(_0xbff90b,null));};exports[_0x6784('0x4a')]=function(_0x285ac0,_0x104967){return db[_0x6784('0x2f')][_0x6784('0x4a')](_0x285ac0[_0x6784('0x4b')],{})[_0x6784('0x28')](respondWithResult(_0x104967,0xc9))[_0x6784('0x47')](handleError(_0x104967,null));};exports['update']=function(_0x4c332e,_0x3955c7){if(_0x4c332e[_0x6784('0x4b')]['id']){delete _0x4c332e[_0x6784('0x4b')]['id'];}return db['FaxQueueReport'][_0x6784('0x49')]({'where':{'id':_0x4c332e['params']['id']}})[_0x6784('0x28')](handleEntityNotFound(_0x3955c7,null))[_0x6784('0x28')](saveUpdates(_0x4c332e['body'],null))[_0x6784('0x28')](respondWithResult(_0x3955c7,null))['catch'](handleError(_0x3955c7,null));};exports['destroy']=function(_0x3f3715,_0x504f0f){return db[_0x6784('0x2f')][_0x6784('0x49')]({'where':{'id':_0x3f3715['params']['id']}})['then'](handleEntityNotFound(_0x504f0f,null))[_0x6784('0x28')](removeEntity(_0x504f0f,null))[_0x6784('0x47')](handleError(_0x504f0f,null));};exports['describe']=function(_0x2f9c41,_0x453f09){return db[_0x6784('0x2f')][_0x6784('0x4c')]()[_0x6784('0x28')](respondWithResult(_0x453f09,null))[_0x6784('0x47')](handleError(_0x453f09,null));};
\ No newline at end of file
index 0d7b635..49da55b 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','./faxQueueReport.attributes','exports','define','FaxQueueReport','report_fax_queue','uniqueid','lodash'];(function(_0x455940,_0x1a3179){var _0x10032e=function(_0x3704b5){while(--_0x3704b5){_0x455940['push'](_0x455940['shift']());}};_0x10032e(++_0x1a3179);}(_0x326f,0xd1));var _0xf326=function(_0x335e6b,_0x3a14d9){_0x335e6b=_0x335e6b-0x0;var _0x1b808f=_0x326f[_0x335e6b];return _0x1b808f;};'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 _0xabce=['path','rimraf','../../config/environment','define','report_fax_queue','uniqueid','lodash','util','../../config/logger','api','moment'];(function(_0x30e124,_0x16241f){var _0x49503b=function(_0x1f02ca){while(--_0x1f02ca){_0x30e124['push'](_0x30e124['shift']());}};_0x49503b(++_0x16241f);}(_0xabce,0x103));var _0xeabc=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0xabce[_0x56482c];return _0x5aae7a;};'use strict';var _=require(_0xeabc('0x0'));var util=require(_0xeabc('0x1'));var logger=require(_0xeabc('0x2'))(_0xeabc('0x3'));var moment=require(_0xeabc('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xeabc('0x5'));var rimraf=require(_0xeabc('0x6'));var config=require(_0xeabc('0x7'));var attributes=require('./faxQueueReport.attributes');module['exports']=function(_0x1b07a8,_0x52a4d7){return _0x1b07a8[_0xeabc('0x8')]('FaxQueueReport',attributes,{'tableName':_0xeabc('0x9'),'paranoid':![],'indexes':[{'name':_0xeabc('0xa'),'fields':[_0xeabc('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 7fe5b21..741a1b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x333f=['message','info','result','catch','FaxQueueReport','create','options','CreateFaxQueueReport','debug','UpdateFaxQueueReport','update','body','raw','where','limit','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','request\x20sent','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxQueueReport,\x20%s,\x20%s'];(function(_0x581162,_0x2f98ec){var _0x575db7=function(_0x2ba01f){while(--_0x2ba01f){_0x581162['push'](_0x581162['shift']());}};_0x575db7(++_0x2f98ec);}(_0x333f,0x93));var _0xf333=function(_0x212ad8,_0x6cd3e2){_0x212ad8=_0x212ad8-0x0;var _0x3d4a3a=_0x333f[_0x212ad8];return _0x3d4a3a;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xf333('0x0'));var BPromise=require(_0xf333('0x1'));var rs=require(_0xf333('0x2'));var fs=require('fs');var Redis=require(_0xf333('0x3'));var db=require(_0xf333('0x4'))['db'];var utils=require(_0xf333('0x5'));var logger=require(_0xf333('0x6'))(_0xf333('0x7'));var config=require(_0xf333('0x8'));var jayson=require(_0xf333('0x9'));var client=jayson['client'][_0xf333('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4bd663,_0x4c6687,_0x19dfcf){return new BPromise(function(_0x5db1d2,_0x3a0521){return client['request'](_0x4bd663,_0x19dfcf)[_0xf333('0xb')](function(_0x581091){logger['info']('FaxQueueReport,\x20%s,\x20%s',_0x4c6687,_0xf333('0xc'));logger['debug'](_0xf333('0xd'),_0x4c6687,_0xf333('0xc'),JSON[_0xf333('0xe')](_0x581091));if(_0x581091[_0xf333('0xf')]){if(_0x581091['error'][_0xf333('0x10')]===0x1f4){logger[_0xf333('0xf')](_0xf333('0x11'),_0x4c6687,_0x581091[_0xf333('0xf')][_0xf333('0x12')]);return _0x3a0521(_0x581091[_0xf333('0xf')][_0xf333('0x12')]);}logger['error'](_0xf333('0x11'),_0x4c6687,_0x581091[_0xf333('0xf')]['message']);return _0x5db1d2(_0x581091[_0xf333('0xf')][_0xf333('0x12')]);}else{logger[_0xf333('0x13')](_0xf333('0x11'),_0x4c6687,'request\x20sent');_0x5db1d2(_0x581091[_0xf333('0x14')][_0xf333('0x12')]);}})[_0xf333('0x15')](function(_0x577f6f){logger[_0xf333('0xf')]('FaxQueueReport,\x20%s,\x20%s',_0x4c6687,_0x577f6f);_0x3a0521(_0x577f6f);});});}exports['CreateFaxQueueReport']=function(_0x45f1ee){var _0x7e6101=this;return new Promise(function(_0x5d6101,_0x24edcc){return db[_0xf333('0x16')][_0xf333('0x17')](_0x45f1ee['body'],{'raw':_0x45f1ee[_0xf333('0x18')]?_0x45f1ee[_0xf333('0x18')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x1db6c9){logger[_0xf333('0x13')](_0xf333('0x19'),_0x45f1ee);logger[_0xf333('0x1a')](_0xf333('0x19'),_0x45f1ee,JSON[_0xf333('0xe')](_0x1db6c9));_0x5d6101(_0x1db6c9);})[_0xf333('0x15')](function(_0x3803f3){logger[_0xf333('0xf')](_0xf333('0x19'),_0x3803f3['message'],_0x45f1ee);_0x24edcc(_0x7e6101[_0xf333('0xf')](0x1f4,_0x3803f3[_0xf333('0x12')]));});});};exports[_0xf333('0x1b')]=function(_0x25853c){var _0x496527=this;return new Promise(function(_0x638668,_0x249450){return db['FaxQueueReport'][_0xf333('0x1c')](_0x25853c[_0xf333('0x1d')],{'raw':_0x25853c[_0xf333('0x18')]?_0x25853c[_0xf333('0x18')][_0xf333('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x25853c[_0xf333('0x18')]?_0x25853c['options'][_0xf333('0x1f')]||null:null,'attributes':_0x25853c[_0xf333('0x18')]?_0x25853c['options']['attributes']||null:null,'limit':_0x25853c[_0xf333('0x18')]?_0x25853c[_0xf333('0x18')][_0xf333('0x20')]||null:null})[_0xf333('0xb')](function(_0x2d77db){logger['info']('UpdateFaxQueueReport',_0x25853c);logger[_0xf333('0x1a')](_0xf333('0x1b'),_0x25853c,JSON[_0xf333('0xe')](_0x2d77db));_0x638668(_0x2d77db);})['catch'](function(_0x5c6741){logger['error'](_0xf333('0x1b'),_0x5c6741[_0xf333('0x12')],_0x25853c);_0x249450(_0x496527['error'](0x1f4,_0x5c6741[_0xf333('0x12')]));});});};
\ No newline at end of file
+var _0x8fb7=['FaxQueueReport','create','options','CreateFaxQueueReport','update','body','raw','where','attributes','limit','UpdateFaxQueueReport','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify','code','error','message'];(function(_0x1429b7,_0x51a982){var _0x1f870b=function(_0x436b36){while(--_0x436b36){_0x1429b7['push'](_0x1429b7['shift']());}};_0x1f870b(++_0x51a982);}(_0x8fb7,0x72));var _0x78fb=function(_0x37b180,_0x56ed65){_0x37b180=_0x37b180-0x0;var _0x1c51cf=_0x8fb7[_0x37b180];return _0x1c51cf;};'use strict';var _=require(_0x78fb('0x0'));var util=require(_0x78fb('0x1'));var moment=require(_0x78fb('0x2'));var BPromise=require('bluebird');var rs=require(_0x78fb('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x78fb('0x4'))['db'];var utils=require(_0x78fb('0x5'));var logger=require('../../config/logger')(_0x78fb('0x6'));var config=require(_0x78fb('0x7'));var jayson=require(_0x78fb('0x8'));var client=jayson[_0x78fb('0x9')][_0x78fb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x519f7c,_0x553faa,_0x55f5bf){return new BPromise(function(_0x5d38e2,_0x3011d3){return client[_0x78fb('0xb')](_0x519f7c,_0x55f5bf)[_0x78fb('0xc')](function(_0x59e579){logger[_0x78fb('0xd')](_0x78fb('0xe'),_0x553faa,_0x78fb('0xf'));logger[_0x78fb('0x10')](_0x78fb('0x11'),_0x553faa,_0x78fb('0xf'),JSON[_0x78fb('0x12')](_0x59e579));if(_0x59e579['error']){if(_0x59e579['error'][_0x78fb('0x13')]===0x1f4){logger[_0x78fb('0x14')](_0x78fb('0xe'),_0x553faa,_0x59e579[_0x78fb('0x14')][_0x78fb('0x15')]);return _0x3011d3(_0x59e579['error'][_0x78fb('0x15')]);}logger[_0x78fb('0x14')](_0x78fb('0xe'),_0x553faa,_0x59e579[_0x78fb('0x14')][_0x78fb('0x15')]);return _0x5d38e2(_0x59e579[_0x78fb('0x14')][_0x78fb('0x15')]);}else{logger['info']('FaxQueueReport,\x20%s,\x20%s',_0x553faa,_0x78fb('0xf'));_0x5d38e2(_0x59e579['result'][_0x78fb('0x15')]);}})['catch'](function(_0x181a82){logger[_0x78fb('0x14')](_0x78fb('0xe'),_0x553faa,_0x181a82);_0x3011d3(_0x181a82);});});}exports['CreateFaxQueueReport']=function(_0x1cf52a){var _0x3de5e2=this;return new Promise(function(_0x308153,_0x569435){return db[_0x78fb('0x16')][_0x78fb('0x17')](_0x1cf52a['body'],{'raw':_0x1cf52a[_0x78fb('0x18')]?_0x1cf52a[_0x78fb('0x18')]['raw']===undefined?!![]:![]:!![]})[_0x78fb('0xc')](function(_0x486ecd){logger[_0x78fb('0xd')](_0x78fb('0x19'),_0x1cf52a);logger[_0x78fb('0x10')](_0x78fb('0x19'),_0x1cf52a,JSON[_0x78fb('0x12')](_0x486ecd));_0x308153(_0x486ecd);})['catch'](function(_0x1785c9){logger[_0x78fb('0x14')](_0x78fb('0x19'),_0x1785c9[_0x78fb('0x15')],_0x1cf52a);_0x569435(_0x3de5e2['error'](0x1f4,_0x1785c9[_0x78fb('0x15')]));});});};exports['UpdateFaxQueueReport']=function(_0x8a4291){var _0x59914f=this;return new Promise(function(_0x27bfac,_0x189cbd){return db[_0x78fb('0x16')][_0x78fb('0x1a')](_0x8a4291[_0x78fb('0x1b')],{'raw':_0x8a4291['options']?_0x8a4291['options'][_0x78fb('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x8a4291[_0x78fb('0x18')]?_0x8a4291['options'][_0x78fb('0x1d')]||null:null,'attributes':_0x8a4291[_0x78fb('0x18')]?_0x8a4291[_0x78fb('0x18')][_0x78fb('0x1e')]||null:null,'limit':_0x8a4291['options']?_0x8a4291['options'][_0x78fb('0x1f')]||null:null})['then'](function(_0x233d9c){logger[_0x78fb('0xd')](_0x78fb('0x20'),_0x8a4291);logger[_0x78fb('0x10')]('UpdateFaxQueueReport',_0x8a4291,JSON[_0x78fb('0x12')](_0x233d9c));_0x27bfac(_0x233d9c);})[_0x78fb('0x21')](function(_0x221e48){logger[_0x78fb('0x14')](_0x78fb('0x20'),_0x221e48[_0x78fb('0x15')],_0x8a4291);_0x189cbd(_0x59914f[_0x78fb('0x14')](0x1f4,_0x221e48[_0x78fb('0x15')]));});});};
\ No newline at end of file
index 556e277..a5900ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46e4=['../../components/auth/service','../../components/interaction/service','./faxQueueReport.controller','index','/describe','isAuthenticated','describe','get','/:id','show','post','create','put','update','delete','destroy','exports','util','path','connect-timeout','express'];(function(_0x3e6f26,_0x155dae){var _0x2bc2e8=function(_0x1525b6){while(--_0x1525b6){_0x3e6f26['push'](_0x3e6f26['shift']());}};_0x2bc2e8(++_0x155dae);}(_0x46e4,0x161));var _0x446e=function(_0x44fdd9,_0x1f9b98){_0x44fdd9=_0x44fdd9-0x0;var _0x2b1482=_0x46e4[_0x44fdd9];return _0x2b1482;};'use strict';var multer=require('multer');var util=require(_0x446e('0x0'));var path=require(_0x446e('0x1'));var timeout=require(_0x446e('0x2'));var express=require(_0x446e('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x446e('0x4'));var interaction=require(_0x446e('0x5'));var config=require('../../config/environment');var controller=require(_0x446e('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x446e('0x7')]);router['get'](_0x446e('0x8'),auth[_0x446e('0x9')](),controller[_0x446e('0xa')]);router[_0x446e('0xb')](_0x446e('0xc'),auth[_0x446e('0x9')](),controller[_0x446e('0xd')]);router[_0x446e('0xe')]('/',auth[_0x446e('0x9')](),controller[_0x446e('0xf')]);router[_0x446e('0x10')]('/:id',auth[_0x446e('0x9')](),controller[_0x446e('0x11')]);router[_0x446e('0x12')](_0x446e('0xc'),auth[_0x446e('0x9')](),controller[_0x446e('0x13')]);module[_0x446e('0x14')]=router;
\ No newline at end of file
+var _0x9d5f=['destroy','exports','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','/describe','describe','get','create','put','update','/:id'];(function(_0x125072,_0x5e3aeb){var _0x516136=function(_0x4d8adb){while(--_0x4d8adb){_0x125072['push'](_0x125072['shift']());}};_0x516136(++_0x5e3aeb);}(_0x9d5f,0x1de));var _0xf9d5=function(_0x353c02,_0x4f6765){_0x353c02=_0x353c02-0x0;var _0x419e3a=_0x9d5f[_0x353c02];return _0x419e3a;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xf9d5('0x0'));var timeout=require(_0xf9d5('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xf9d5('0x2'));var auth=require(_0xf9d5('0x3'));var interaction=require(_0xf9d5('0x4'));var config=require(_0xf9d5('0x5'));var controller=require('./faxQueueReport.controller');router['get']('/',auth[_0xf9d5('0x6')](),controller[_0xf9d5('0x7')]);router['get'](_0xf9d5('0x8'),auth[_0xf9d5('0x6')](),controller[_0xf9d5('0x9')]);router[_0xf9d5('0xa')]('/:id',auth[_0xf9d5('0x6')](),controller['show']);router['post']('/',auth[_0xf9d5('0x6')](),controller[_0xf9d5('0xb')]);router[_0xf9d5('0xc')]('/:id',auth[_0xf9d5('0x6')](),controller[_0xf9d5('0xd')]);router['delete'](_0xf9d5('0xe'),auth[_0xf9d5('0x6')](),controller[_0xf9d5('0xf')]);module[_0xf9d5('0x10')]=router;
\ No newline at end of file
index f6f6861..8b7ce57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['queue','DATE','NOW','moment','sequelize','exports','STRING','account','agent'];(function(_0x248a43,_0x59e52a){var _0x451379=function(_0x2c5209){while(--_0x2c5209){_0x248a43['push'](_0x248a43['shift']());}};_0x451379(++_0x59e52a);}(_0x34e8,0x12c));var _0x834e=function(_0x189d90,_0x3ed7cb){_0x189d90=_0x189d90-0x0;var _0x4dd3b4=_0x34e8[_0x189d90];return _0x4dd3b4;};'use strict';var moment=require(_0x834e('0x0'));var Sequelize=require(_0x834e('0x1'));module[_0x834e('0x2')]={'uniqueid':{'type':Sequelize[_0x834e('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x834e('0x4'),_0x834e('0x5'),_0x834e('0x6')),'allowNull':![],'defaultValue':_0x834e('0x6')},'transferredAt':{'type':Sequelize[_0x834e('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x834e('0x8')]}};
\ No newline at end of file
+var _0x008c=['ENUM','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x3c2e4e,_0x357207){var _0x773c58=function(_0x131231){while(--_0x131231){_0x3c2e4e['push'](_0x3c2e4e['shift']());}};_0x773c58(++_0x357207);}(_0x008c,0x188));var _0xc008=function(_0x49e66,_0x43f4b9){_0x49e66=_0x49e66-0x0;var _0x545549=_0x008c[_0x49e66];return _0x545549;};'use strict';var moment=require(_0xc008('0x0'));var Sequelize=require(_0xc008('0x1'));module[_0xc008('0x2')]={'uniqueid':{'type':Sequelize[_0xc008('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xc008('0x4')]('account',_0xc008('0x5'),_0xc008('0x6')),'allowNull':![],'defaultValue':_0xc008('0x6')},'transferredAt':{'type':Sequelize[_0xc008('0x7')],'allowNull':![],'defaultValue':Sequelize[_0xc008('0x8')]}};
\ No newline at end of file
index 30435da..68847be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x338a=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','then','stack','name','index','map','rawAttributes','type','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','FaxTransferReport','includeAll','include','findAll','rows','params','find','create','body','catch','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x14eeee,_0x3b35f6){var _0x3aff97=function(_0x29df16){while(--_0x29df16){_0x14eeee['push'](_0x14eeee['shift']());}};_0x3aff97(++_0x3b35f6);}(_0x338a,0xc5));var _0xa338=function(_0x22c320,_0xca0595){_0x22c320=_0x22c320-0x0;var _0x2a25e4=_0x338a[_0x22c320];return _0x2a25e4;};'use strict';var emlformat=require(_0xa338('0x0'));var rimraf=require(_0xa338('0x1'));var zipdir=require(_0xa338('0x2'));var jsonpatch=require(_0xa338('0x3'));var rp=require('request-promise');var moment=require(_0xa338('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xa338('0x5'));var util=require(_0xa338('0x6'));var path=require('path');var sox=require(_0xa338('0x7'));var csv=require(_0xa338('0x8'));var ejs=require(_0xa338('0x9'));var fs=require('fs');var fs_extra=require(_0xa338('0xa'));var _=require(_0xa338('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xa338('0xc'));var deskjs=require(_0xa338('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xa338('0xe'));var Redis=require(_0xa338('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xa338('0x10'));var as=require(_0xa338('0x11'));var hardwareService=require(_0xa338('0x12'));var logger=require(_0xa338('0x13'))(_0xa338('0x14'));var utils=require(_0xa338('0x15'));var config=require(_0xa338('0x16'));var licenseUtil=require(_0xa338('0x17'));var db=require(_0xa338('0x18'))['db'];function respondWithStatusCode(_0x587771,_0x77149c){_0x77149c=_0x77149c||0xcc;return function(_0x8789d){if(_0x8789d){return _0x587771[_0xa338('0x19')](_0x77149c);}return _0x587771[_0xa338('0x1a')](_0x77149c)[_0xa338('0x1b')]();};}function respondWithResult(_0x5063ed,_0x35d599){_0x35d599=_0x35d599||0xc8;return function(_0x2b536e){if(_0x2b536e){return _0x5063ed['status'](_0x35d599)['json'](_0x2b536e);}};}function respondWithFilteredResult(_0x52182a,_0x54c71e){return function(_0x3d0785){if(_0x3d0785){var _0x100400=typeof _0x54c71e[_0xa338('0x1c')]===_0xa338('0x1d')&&typeof _0x54c71e[_0xa338('0x1e')]===_0xa338('0x1d');var _0xbabf1a=_0x3d0785[_0xa338('0x1f')];var _0x22fc0f=_0x100400?0x0:_0x54c71e[_0xa338('0x1c')];var _0x345342=_0x100400?_0x3d0785[_0xa338('0x1f')]:_0x54c71e['offset']+_0x54c71e[_0xa338('0x1e')];var _0x239825;if(_0x345342>=_0xbabf1a){_0x345342=_0xbabf1a;_0x239825=0xc8;}else{_0x239825=0xce;}_0x52182a[_0xa338('0x1a')](_0x239825);return _0x52182a[_0xa338('0x20')](_0xa338('0x21'),_0x22fc0f+'-'+_0x345342+'/'+_0xbabf1a)[_0xa338('0x22')](_0x3d0785);}return null;};}function patchUpdates(_0x1bd3e4){return function(_0x545b97){try{jsonpatch[_0xa338('0x23')](_0x545b97,_0x1bd3e4,!![]);}catch(_0xf0daa7){return BPromise['reject'](_0xf0daa7);}return _0x545b97[_0xa338('0x24')]();};}function saveUpdates(_0x26f497,_0x3d4055){return function(_0xfafc8b){if(_0xfafc8b){return _0xfafc8b[_0xa338('0x25')](_0x26f497)[_0xa338('0x26')](function(_0x3803b0){return _0x3803b0;});}return null;};}function removeEntity(_0x23a405,_0x293b21){return function(_0x39b840){if(_0x39b840){return _0x39b840['destroy']()[_0xa338('0x26')](function(){_0x23a405[_0xa338('0x1a')](0xcc)[_0xa338('0x1b')]();});}};}function handleEntityNotFound(_0xa46bb8,_0x6d6105){return function(_0x485171){if(!_0x485171){_0xa46bb8[_0xa338('0x19')](0x194);}return _0x485171;};}function handleError(_0x29eb05,_0xc94d88){_0xc94d88=_0xc94d88||0x1f4;return function(_0x1d0fa4){logger['error'](_0x1d0fa4[_0xa338('0x27')]);if(_0x1d0fa4[_0xa338('0x28')]){delete _0x1d0fa4[_0xa338('0x28')];}_0x29eb05[_0xa338('0x1a')](_0xc94d88)['send'](_0x1d0fa4);};}exports[_0xa338('0x29')]=function(_0x170e26,_0x411bec){var _0x1a7cfc={},_0x4a5e83={},_0x406231={'count':0x0,'rows':[]};var _0xf98e7f=_[_0xa338('0x2a')](db['FaxTransferReport'][_0xa338('0x2b')],function(_0x399025){return{'name':_0x399025['fieldName'],'type':_0x399025[_0xa338('0x2c')]['key']};});_0x4a5e83[_0xa338('0x2d')]=_['map'](_0xf98e7f,'name');_0x4a5e83[_0xa338('0x2e')]=_[_0xa338('0x2f')](_0x170e26[_0xa338('0x2e')]);_0x4a5e83[_0xa338('0x30')]=_['intersection'](_0x4a5e83['model'],_0x4a5e83[_0xa338('0x2e')]);_0x1a7cfc[_0xa338('0x31')]=_[_0xa338('0x32')](_0x4a5e83[_0xa338('0x2d')],qs[_0xa338('0x33')](_0x170e26[_0xa338('0x2e')][_0xa338('0x33')]));_0x1a7cfc[_0xa338('0x31')]=_0x1a7cfc[_0xa338('0x31')][_0xa338('0x34')]?_0x1a7cfc[_0xa338('0x31')]:_0x4a5e83['model'];if(!_0x170e26[_0xa338('0x2e')][_0xa338('0x35')](_0xa338('0x36'))){_0x1a7cfc[_0xa338('0x1e')]=qs[_0xa338('0x1e')](_0x170e26[_0xa338('0x2e')][_0xa338('0x1e')]);_0x1a7cfc[_0xa338('0x1c')]=qs[_0xa338('0x1c')](_0x170e26[_0xa338('0x2e')][_0xa338('0x1c')]);}_0x1a7cfc['order']=qs[_0xa338('0x37')](_0x170e26[_0xa338('0x2e')][_0xa338('0x37')]);_0x1a7cfc[_0xa338('0x38')]=qs[_0xa338('0x30')](_['pick'](_0x170e26['query'],_0x4a5e83[_0xa338('0x30')]),_0xf98e7f);if(_0x170e26[_0xa338('0x2e')][_0xa338('0x39')]){_0x1a7cfc[_0xa338('0x38')]=_[_0xa338('0x3a')](_0x1a7cfc[_0xa338('0x38')],{'$or':_[_0xa338('0x2a')](_0xf98e7f,function(_0x39a12a){if(_0x39a12a[_0xa338('0x2c')]!==_0xa338('0x3b')){var _0x5dc022={};_0x5dc022[_0x39a12a[_0xa338('0x28')]]={'$like':'%'+_0x170e26[_0xa338('0x2e')][_0xa338('0x39')]+'%'};return _0x5dc022;}})});}_0x1a7cfc=_[_0xa338('0x3a')]({},_0x1a7cfc,_0x170e26[_0xa338('0x3c')]);var _0x3d0559={'where':_0x1a7cfc[_0xa338('0x38')]};return db[_0xa338('0x3d')][_0xa338('0x1f')](_0x3d0559)[_0xa338('0x26')](function(_0x5914d5){_0x406231[_0xa338('0x1f')]=_0x5914d5;if(_0x170e26['query'][_0xa338('0x3e')]){_0x1a7cfc[_0xa338('0x3f')]=[{'all':!![]}];}return db[_0xa338('0x3d')][_0xa338('0x40')](_0x1a7cfc);})['then'](function(_0xa3ac06){_0x406231[_0xa338('0x41')]=_0xa3ac06;return _0x406231;})['then'](respondWithFilteredResult(_0x411bec,_0x1a7cfc))['catch'](handleError(_0x411bec,null));};exports['show']=function(_0x35c3d6,_0xcb157e){var _0x406d0a={'raw':!![],'where':{'id':_0x35c3d6[_0xa338('0x42')]['id']}},_0x1084b7={};_0x1084b7[_0xa338('0x2d')]=_[_0xa338('0x2f')](db[_0xa338('0x3d')][_0xa338('0x2b')]);_0x1084b7['query']=_[_0xa338('0x2f')](_0x35c3d6['query']);_0x1084b7[_0xa338('0x30')]=_['intersection'](_0x1084b7['model'],_0x1084b7['query']);_0x406d0a[_0xa338('0x31')]=_[_0xa338('0x32')](_0x1084b7[_0xa338('0x2d')],qs[_0xa338('0x33')](_0x35c3d6['query']['fields']));_0x406d0a[_0xa338('0x31')]=_0x406d0a[_0xa338('0x31')]['length']?_0x406d0a[_0xa338('0x31')]:_0x1084b7[_0xa338('0x2d')];if(_0x35c3d6[_0xa338('0x2e')][_0xa338('0x3e')]){_0x406d0a[_0xa338('0x3f')]=[{'all':!![]}];}_0x406d0a=_[_0xa338('0x3a')]({},_0x406d0a,_0x35c3d6[_0xa338('0x3c')]);return db['FaxTransferReport'][_0xa338('0x43')](_0x406d0a)[_0xa338('0x26')](handleEntityNotFound(_0xcb157e,null))[_0xa338('0x26')](respondWithResult(_0xcb157e,null))['catch'](handleError(_0xcb157e,null));};exports[_0xa338('0x44')]=function(_0x4297cc,_0x15b085){return db['FaxTransferReport'][_0xa338('0x44')](_0x4297cc[_0xa338('0x45')],{})[_0xa338('0x26')](respondWithResult(_0x15b085,0xc9))[_0xa338('0x46')](handleError(_0x15b085,null));};exports[_0xa338('0x25')]=function(_0x3b89f0,_0x199216){if(_0x3b89f0[_0xa338('0x45')]['id']){delete _0x3b89f0['body']['id'];}return db[_0xa338('0x3d')][_0xa338('0x43')]({'where':{'id':_0x3b89f0[_0xa338('0x42')]['id']}})[_0xa338('0x26')](handleEntityNotFound(_0x199216,null))[_0xa338('0x26')](saveUpdates(_0x3b89f0[_0xa338('0x45')],null))['then'](respondWithResult(_0x199216,null))['catch'](handleError(_0x199216,null));};exports['destroy']=function(_0x2ba69b,_0x2f49cb){return db[_0xa338('0x3d')][_0xa338('0x43')]({'where':{'id':_0x2ba69b['params']['id']}})[_0xa338('0x26')](handleEntityNotFound(_0x2f49cb,null))['then'](removeEntity(_0x2f49cb,null))[_0xa338('0x46')](handleError(_0x2f49cb,null));};exports[_0xa338('0x47')]=function(_0x5a9068,_0x2068bb){return db[_0xa338('0x3d')][_0xa338('0x47')]()[_0xa338('0x26')](respondWithResult(_0x2068bb,null))[_0xa338('0x46')](handleError(_0x2068bb,null));};
\ No newline at end of file
+var _0x5b6a=['Content-Range','apply','reject','save','then','destroy','error','name','send','index','map','FaxTransferReport','rawAttributes','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','options','includeAll','include','findAll','rows','show','params','find','create','catch','body','describe','eml-format','rimraf','fast-json-patch','moment','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set'];(function(_0xb43d1b,_0x3935cf){var _0x4aafca=function(_0x3b26d2){while(--_0x3b26d2){_0xb43d1b['push'](_0xb43d1b['shift']());}};_0x4aafca(++_0x3935cf);}(_0x5b6a,0xbb));var _0xa5b6=function(_0x219197,_0x495225){_0x219197=_0x219197-0x0;var _0x3ec02c=_0x5b6a[_0x219197];return _0x3ec02c;};'use strict';var emlformat=require(_0xa5b6('0x0'));var rimraf=require(_0xa5b6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa5b6('0x2'));var rp=require('request-promise');var moment=require(_0xa5b6('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xa5b6('0x4'));var util=require(_0xa5b6('0x5'));var path=require(_0xa5b6('0x6'));var sox=require(_0xa5b6('0x7'));var csv=require(_0xa5b6('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa5b6('0x9'));var _=require('lodash');var squel=require(_0xa5b6('0xa'));var crypto=require(_0xa5b6('0xb'));var jsforce=require(_0xa5b6('0xc'));var deskjs=require(_0xa5b6('0xd'));var toCsv=require(_0xa5b6('0x8'));var querystring=require(_0xa5b6('0xe'));var Papa=require(_0xa5b6('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xa5b6('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa5b6('0x11'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xa5b6('0x12'));var db=require(_0xa5b6('0x13'))['db'];function respondWithStatusCode(_0x4dd631,_0xbb2666){_0xbb2666=_0xbb2666||0xcc;return function(_0x155caa){if(_0x155caa){return _0x4dd631[_0xa5b6('0x14')](_0xbb2666);}return _0x4dd631['status'](_0xbb2666)[_0xa5b6('0x15')]();};}function respondWithResult(_0x323e0b,_0x273679){_0x273679=_0x273679||0xc8;return function(_0x4545a0){if(_0x4545a0){return _0x323e0b[_0xa5b6('0x16')](_0x273679)[_0xa5b6('0x17')](_0x4545a0);}};}function respondWithFilteredResult(_0x2619a4,_0x2467c6){return function(_0x2282ba){if(_0x2282ba){var _0x432b8b=typeof _0x2467c6[_0xa5b6('0x18')]===_0xa5b6('0x19')&&typeof _0x2467c6[_0xa5b6('0x1a')]==='undefined';var _0x1b32b4=_0x2282ba['count'];var _0x3c5280=_0x432b8b?0x0:_0x2467c6['offset'];var _0x21c1b1=_0x432b8b?_0x2282ba[_0xa5b6('0x1b')]:_0x2467c6[_0xa5b6('0x18')]+_0x2467c6[_0xa5b6('0x1a')];var _0x4f968e;if(_0x21c1b1>=_0x1b32b4){_0x21c1b1=_0x1b32b4;_0x4f968e=0xc8;}else{_0x4f968e=0xce;}_0x2619a4[_0xa5b6('0x16')](_0x4f968e);return _0x2619a4[_0xa5b6('0x1c')](_0xa5b6('0x1d'),_0x3c5280+'-'+_0x21c1b1+'/'+_0x1b32b4)['json'](_0x2282ba);}return null;};}function patchUpdates(_0x4c6204){return function(_0x56ba5c){try{jsonpatch[_0xa5b6('0x1e')](_0x56ba5c,_0x4c6204,!![]);}catch(_0x54f33d){return BPromise[_0xa5b6('0x1f')](_0x54f33d);}return _0x56ba5c[_0xa5b6('0x20')]();};}function saveUpdates(_0x3e1eaa,_0x48c103){return function(_0x519c33){if(_0x519c33){return _0x519c33['update'](_0x3e1eaa)[_0xa5b6('0x21')](function(_0x1ed79b){return _0x1ed79b;});}return null;};}function removeEntity(_0x5e133d,_0x20c6b0){return function(_0x3841e8){if(_0x3841e8){return _0x3841e8[_0xa5b6('0x22')]()[_0xa5b6('0x21')](function(){_0x5e133d[_0xa5b6('0x16')](0xcc)[_0xa5b6('0x15')]();});}};}function handleEntityNotFound(_0x4c76de,_0x177643){return function(_0x24bd0b){if(!_0x24bd0b){_0x4c76de[_0xa5b6('0x14')](0x194);}return _0x24bd0b;};}function handleError(_0x5df23b,_0x2aad04){_0x2aad04=_0x2aad04||0x1f4;return function(_0x2e6f35){logger[_0xa5b6('0x23')](_0x2e6f35['stack']);if(_0x2e6f35['name']){delete _0x2e6f35[_0xa5b6('0x24')];}_0x5df23b[_0xa5b6('0x16')](_0x2aad04)[_0xa5b6('0x25')](_0x2e6f35);};}exports[_0xa5b6('0x26')]=function(_0x16424b,_0xdd42c2){var _0x4c8011={},_0x256dcc={},_0x1ed948={'count':0x0,'rows':[]};var _0x3ae5b0=_[_0xa5b6('0x27')](db[_0xa5b6('0x28')][_0xa5b6('0x29')],function(_0x64848e){return{'name':_0x64848e['fieldName'],'type':_0x64848e['type'][_0xa5b6('0x2a')]};});_0x256dcc[_0xa5b6('0x2b')]=_[_0xa5b6('0x27')](_0x3ae5b0,'name');_0x256dcc[_0xa5b6('0x2c')]=_[_0xa5b6('0x2d')](_0x16424b[_0xa5b6('0x2c')]);_0x256dcc[_0xa5b6('0x2e')]=_['intersection'](_0x256dcc['model'],_0x256dcc['query']);_0x4c8011[_0xa5b6('0x2f')]=_[_0xa5b6('0x30')](_0x256dcc[_0xa5b6('0x2b')],qs['fields'](_0x16424b[_0xa5b6('0x2c')][_0xa5b6('0x31')]));_0x4c8011[_0xa5b6('0x2f')]=_0x4c8011[_0xa5b6('0x2f')][_0xa5b6('0x32')]?_0x4c8011[_0xa5b6('0x2f')]:_0x256dcc[_0xa5b6('0x2b')];if(!_0x16424b['query'][_0xa5b6('0x33')](_0xa5b6('0x34'))){_0x4c8011[_0xa5b6('0x1a')]=qs[_0xa5b6('0x1a')](_0x16424b[_0xa5b6('0x2c')][_0xa5b6('0x1a')]);_0x4c8011[_0xa5b6('0x18')]=qs[_0xa5b6('0x18')](_0x16424b[_0xa5b6('0x2c')][_0xa5b6('0x18')]);}_0x4c8011[_0xa5b6('0x35')]=qs[_0xa5b6('0x36')](_0x16424b[_0xa5b6('0x2c')]['sort']);_0x4c8011[_0xa5b6('0x37')]=qs['filters'](_[_0xa5b6('0x38')](_0x16424b[_0xa5b6('0x2c')],_0x256dcc[_0xa5b6('0x2e')]),_0x3ae5b0);if(_0x16424b[_0xa5b6('0x2c')][_0xa5b6('0x39')]){_0x4c8011['where']=_[_0xa5b6('0x3a')](_0x4c8011[_0xa5b6('0x37')],{'$or':_['map'](_0x3ae5b0,function(_0x414fe6){if(_0x414fe6[_0xa5b6('0x3b')]!=='VIRTUAL'){var _0x513771={};_0x513771[_0x414fe6[_0xa5b6('0x24')]]={'$like':'%'+_0x16424b['query']['filter']+'%'};return _0x513771;}})});}_0x4c8011=_[_0xa5b6('0x3a')]({},_0x4c8011,_0x16424b[_0xa5b6('0x3c')]);var _0x3913f5={'where':_0x4c8011[_0xa5b6('0x37')]};return db[_0xa5b6('0x28')]['count'](_0x3913f5)['then'](function(_0x4d4a35){_0x1ed948[_0xa5b6('0x1b')]=_0x4d4a35;if(_0x16424b['query'][_0xa5b6('0x3d')]){_0x4c8011[_0xa5b6('0x3e')]=[{'all':!![]}];}return db[_0xa5b6('0x28')][_0xa5b6('0x3f')](_0x4c8011);})[_0xa5b6('0x21')](function(_0x3fde9f){_0x1ed948[_0xa5b6('0x40')]=_0x3fde9f;return _0x1ed948;})['then'](respondWithFilteredResult(_0xdd42c2,_0x4c8011))['catch'](handleError(_0xdd42c2,null));};exports[_0xa5b6('0x41')]=function(_0x21c884,_0x12f40a){var _0x283ad5={'raw':!![],'where':{'id':_0x21c884[_0xa5b6('0x42')]['id']}},_0x37ec55={};_0x37ec55[_0xa5b6('0x2b')]=_[_0xa5b6('0x2d')](db[_0xa5b6('0x28')]['rawAttributes']);_0x37ec55['query']=_[_0xa5b6('0x2d')](_0x21c884[_0xa5b6('0x2c')]);_0x37ec55[_0xa5b6('0x2e')]=_[_0xa5b6('0x30')](_0x37ec55[_0xa5b6('0x2b')],_0x37ec55[_0xa5b6('0x2c')]);_0x283ad5[_0xa5b6('0x2f')]=_[_0xa5b6('0x30')](_0x37ec55[_0xa5b6('0x2b')],qs['fields'](_0x21c884[_0xa5b6('0x2c')]['fields']));_0x283ad5[_0xa5b6('0x2f')]=_0x283ad5[_0xa5b6('0x2f')][_0xa5b6('0x32')]?_0x283ad5['attributes']:_0x37ec55[_0xa5b6('0x2b')];if(_0x21c884[_0xa5b6('0x2c')][_0xa5b6('0x3d')]){_0x283ad5['include']=[{'all':!![]}];}_0x283ad5=_['merge']({},_0x283ad5,_0x21c884[_0xa5b6('0x3c')]);return db['FaxTransferReport'][_0xa5b6('0x43')](_0x283ad5)['then'](handleEntityNotFound(_0x12f40a,null))[_0xa5b6('0x21')](respondWithResult(_0x12f40a,null))['catch'](handleError(_0x12f40a,null));};exports[_0xa5b6('0x44')]=function(_0x1880e5,_0x375af1){return db[_0xa5b6('0x28')][_0xa5b6('0x44')](_0x1880e5['body'],{})[_0xa5b6('0x21')](respondWithResult(_0x375af1,0xc9))[_0xa5b6('0x45')](handleError(_0x375af1,null));};exports['update']=function(_0x4c093c,_0x26b740){if(_0x4c093c[_0xa5b6('0x46')]['id']){delete _0x4c093c['body']['id'];}return db[_0xa5b6('0x28')][_0xa5b6('0x43')]({'where':{'id':_0x4c093c[_0xa5b6('0x42')]['id']}})['then'](handleEntityNotFound(_0x26b740,null))[_0xa5b6('0x21')](saveUpdates(_0x4c093c[_0xa5b6('0x46')],null))[_0xa5b6('0x21')](respondWithResult(_0x26b740,null))['catch'](handleError(_0x26b740,null));};exports[_0xa5b6('0x22')]=function(_0x2051ce,_0x5bebb4){return db[_0xa5b6('0x28')][_0xa5b6('0x43')]({'where':{'id':_0x2051ce[_0xa5b6('0x42')]['id']}})['then'](handleEntityNotFound(_0x5bebb4,null))[_0xa5b6('0x21')](removeEntity(_0x5bebb4,null))['catch'](handleError(_0x5bebb4,null));};exports[_0xa5b6('0x47')]=function(_0x49c412,_0xe3dadd){return db[_0xa5b6('0x28')][_0xa5b6('0x47')]()[_0xa5b6('0x21')](respondWithResult(_0xe3dadd,null))[_0xa5b6('0x45')](handleError(_0xe3dadd,null));};
\ No newline at end of file
index 184b364..ee5d245 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d96=['./faxTransferReport.attributes','exports','define','report_fax_transfer','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x4d96,0x89));var _0x64d9=function(_0x2f8484,_0x52cca5){_0x2f8484=_0x2f8484-0x0;var _0x46fc7e=_0x4d96[_0x2f8484];return _0x46fc7e;};'use strict';var _=require('lodash');var util=require(_0x64d9('0x0'));var logger=require(_0x64d9('0x1'))(_0x64d9('0x2'));var moment=require(_0x64d9('0x3'));var BPromise=require(_0x64d9('0x4'));var rp=require(_0x64d9('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x64d9('0x6'));var attributes=require(_0x64d9('0x7'));module[_0x64d9('0x8')]=function(_0x3c360b,_0x2aeefc){return _0x3c360b[_0x64d9('0x9')]('FaxTransferReport',attributes,{'tableName':_0x64d9('0xa'),'paranoid':![],'indexes':[{'name':_0x64d9('0xb'),'fields':[_0x64d9('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xaa55=['report_fax_transfer','uniqueid','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','exports','define'];(function(_0x817d9b,_0x3c37e3){var _0x2752e1=function(_0x2b434e){while(--_0x2b434e){_0x817d9b['push'](_0x817d9b['shift']());}};_0x2752e1(++_0x3c37e3);}(_0xaa55,0x183));var _0x5aa5=function(_0x54dfb0,_0x31aedf){_0x54dfb0=_0x54dfb0-0x0;var _0x173fe9=_0xaa55[_0x54dfb0];return _0x173fe9;};'use strict';var _=require('lodash');var util=require(_0x5aa5('0x0'));var logger=require(_0x5aa5('0x1'))(_0x5aa5('0x2'));var moment=require(_0x5aa5('0x3'));var BPromise=require(_0x5aa5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x5aa5('0x5'));var config=require(_0x5aa5('0x6'));var attributes=require('./faxTransferReport.attributes');module[_0x5aa5('0x7')]=function(_0x53764b,_0x603d33){return _0x53764b[_0x5aa5('0x8')]('FaxTransferReport',attributes,{'tableName':_0x5aa5('0x9'),'paranoid':![],'indexes':[{'name':_0x5aa5('0xa'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 43f9d9d..19b57df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28f4=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','FaxTransferReport,\x20%s,\x20%s','debug','request\x20sent','error','message','catch','lodash','util','ioredis','../../mysqldb'];(function(_0x583e98,_0x5534f5){var _0x84cc30=function(_0x4201ed){while(--_0x4201ed){_0x583e98['push'](_0x583e98['shift']());}};_0x84cc30(++_0x5534f5);}(_0x28f4,0x6e));var _0x428f=function(_0x576251,_0x41bd96){_0x576251=_0x576251-0x0;var _0x5d5c59=_0x28f4[_0x576251];return _0x5d5c59;};'use strict';var _=require(_0x428f('0x0'));var util=require(_0x428f('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x428f('0x2'));var db=require(_0x428f('0x3'))['db'];var utils=require(_0x428f('0x4'));var logger=require(_0x428f('0x5'))(_0x428f('0x6'));var config=require(_0x428f('0x7'));var jayson=require(_0x428f('0x8'));var client=jayson[_0x428f('0x9')][_0x428f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x210762,_0x26b976,_0x2e97d1){return new BPromise(function(_0x2c0ee0,_0x4d84f8){return client[_0x428f('0xb')](_0x210762,_0x2e97d1)['then'](function(_0x366fe8){logger[_0x428f('0xc')](_0x428f('0xd'),_0x26b976,'request\x20sent');logger[_0x428f('0xe')]('FaxTransferReport,\x20%s,\x20%s,\x20%s',_0x26b976,_0x428f('0xf'),JSON['stringify'](_0x366fe8));if(_0x366fe8[_0x428f('0x10')]){if(_0x366fe8[_0x428f('0x10')]['code']===0x1f4){logger[_0x428f('0x10')](_0x428f('0xd'),_0x26b976,_0x366fe8[_0x428f('0x10')][_0x428f('0x11')]);return _0x4d84f8(_0x366fe8[_0x428f('0x10')][_0x428f('0x11')]);}logger[_0x428f('0x10')]('FaxTransferReport,\x20%s,\x20%s',_0x26b976,_0x366fe8[_0x428f('0x10')][_0x428f('0x11')]);return _0x2c0ee0(_0x366fe8['error']['message']);}else{logger['info'](_0x428f('0xd'),_0x26b976,_0x428f('0xf'));_0x2c0ee0(_0x366fe8['result'][_0x428f('0x11')]);}})[_0x428f('0x12')](function(_0x529f33){logger['error'](_0x428f('0xd'),_0x26b976,_0x529f33);_0x4d84f8(_0x529f33);});});}
\ No newline at end of file
+var _0xd486=['stringify','error','code','FaxTransferReport,\x20%s,\x20%s','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','http','request','then','info','request\x20sent','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s'];(function(_0x9b1fd6,_0x15a735){var _0x37920d=function(_0x14cc2c){while(--_0x14cc2c){_0x9b1fd6['push'](_0x9b1fd6['shift']());}};_0x37920d(++_0x15a735);}(_0xd486,0xcd));var _0x6d48=function(_0x50b458,_0x1d7850){_0x50b458=_0x50b458-0x0;var _0x43437c=_0xd486[_0x50b458];return _0x43437c;};'use strict';var _=require('lodash');var util=require(_0x6d48('0x0'));var moment=require(_0x6d48('0x1'));var BPromise=require('bluebird');var rs=require(_0x6d48('0x2'));var fs=require('fs');var Redis=require(_0x6d48('0x3'));var db=require(_0x6d48('0x4'))['db'];var utils=require(_0x6d48('0x5'));var logger=require('../../config/logger')(_0x6d48('0x6'));var config=require('../../config/environment');var jayson=require(_0x6d48('0x7'));var client=jayson['client'][_0x6d48('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x595930,_0x5dc7ac,_0x5286eb){return new BPromise(function(_0x44d754,_0x159c33){return client[_0x6d48('0x9')](_0x595930,_0x5286eb)[_0x6d48('0xa')](function(_0x33d9a3){logger[_0x6d48('0xb')]('FaxTransferReport,\x20%s,\x20%s',_0x5dc7ac,_0x6d48('0xc'));logger[_0x6d48('0xd')](_0x6d48('0xe'),_0x5dc7ac,_0x6d48('0xc'),JSON[_0x6d48('0xf')](_0x33d9a3));if(_0x33d9a3['error']){if(_0x33d9a3[_0x6d48('0x10')][_0x6d48('0x11')]===0x1f4){logger[_0x6d48('0x10')](_0x6d48('0x12'),_0x5dc7ac,_0x33d9a3[_0x6d48('0x10')]['message']);return _0x159c33(_0x33d9a3[_0x6d48('0x10')][_0x6d48('0x13')]);}logger['error'](_0x6d48('0x12'),_0x5dc7ac,_0x33d9a3[_0x6d48('0x10')]['message']);return _0x44d754(_0x33d9a3['error']['message']);}else{logger['info'](_0x6d48('0x12'),_0x5dc7ac,'request\x20sent');_0x44d754(_0x33d9a3[_0x6d48('0x14')]['message']);}})[_0x6d48('0x15')](function(_0x1ae723){logger[_0x6d48('0x10')](_0x6d48('0x12'),_0x5dc7ac,_0x1ae723);_0x159c33(_0x1ae723);});});}
\ No newline at end of file
index 15f1c45..b49683c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x225d=['./faxTransferReport.controller','get','isAuthenticated','index','describe','/:id','show','post','create','put','delete','exports','multer','util','express','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x225d,0x11a));var _0xd225=function(_0x3f114d,_0x59a0d0){_0x3f114d=_0x3f114d-0x0;var _0x202870=_0x225d[_0x3f114d];return _0x202870;};'use strict';var multer=require(_0xd225('0x0'));var util=require(_0xd225('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xd225('0x2'));var router=express['Router']();var fs_extra=require(_0xd225('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xd225('0x4'));var config=require(_0xd225('0x5'));var controller=require(_0xd225('0x6'));router[_0xd225('0x7')]('/',auth[_0xd225('0x8')](),controller[_0xd225('0x9')]);router[_0xd225('0x7')]('/describe',auth['isAuthenticated'](),controller[_0xd225('0xa')]);router[_0xd225('0x7')](_0xd225('0xb'),auth[_0xd225('0x8')](),controller[_0xd225('0xc')]);router[_0xd225('0xd')]('/',auth['isAuthenticated'](),controller[_0xd225('0xe')]);router[_0xd225('0xf')](_0xd225('0xb'),auth['isAuthenticated'](),controller['update']);router[_0xd225('0x10')](_0xd225('0xb'),auth[_0xd225('0x8')](),controller['destroy']);module[_0xd225('0x11')]=router;
\ No newline at end of file
+var _0x893f=['index','/describe','/:id','show','post','create','update','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxTransferReport.controller','get','isAuthenticated'];(function(_0x3de030,_0x287b37){var _0x3fbb84=function(_0xd35029){while(--_0xd35029){_0x3de030['push'](_0x3de030['shift']());}};_0x3fbb84(++_0x287b37);}(_0x893f,0x16e));var _0xf893=function(_0x4ac3ca,_0x36fde3){_0x4ac3ca=_0x4ac3ca-0x0;var _0x319d6e=_0x893f[_0x4ac3ca];return _0x319d6e;};'use strict';var multer=require(_0xf893('0x0'));var util=require(_0xf893('0x1'));var path=require(_0xf893('0x2'));var timeout=require(_0xf893('0x3'));var express=require(_0xf893('0x4'));var router=express[_0xf893('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xf893('0x6'));var interaction=require(_0xf893('0x7'));var config=require(_0xf893('0x8'));var controller=require(_0xf893('0x9'));router[_0xf893('0xa')]('/',auth[_0xf893('0xb')](),controller[_0xf893('0xc')]);router[_0xf893('0xa')](_0xf893('0xd'),auth[_0xf893('0xb')](),controller['describe']);router['get'](_0xf893('0xe'),auth[_0xf893('0xb')](),controller[_0xf893('0xf')]);router[_0xf893('0x10')]('/',auth[_0xf893('0xb')](),controller[_0xf893('0x11')]);router['put']('/:id',auth[_0xf893('0xb')](),controller[_0xf893('0x12')]);router['delete'](_0xf893('0xe'),auth[_0xf893('0xb')](),controller[_0xf893('0x13')]);module[_0xf893('0x14')]=router;
\ No newline at end of file
index e90edef..7c65ed7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb510=['util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./intDeskAccount.controller','get','isAuthenticated','index','/:id','/:id/configurations','getConfigurations','create','post','put','update','delete','destroy','exports','multer'];(function(_0x25b439,_0xb20872){var _0xbf2210=function(_0x518b01){while(--_0x518b01){_0x25b439['push'](_0x25b439['shift']());}};_0xbf2210(++_0xb20872);}(_0xb510,0x13a));var _0x0b51=function(_0x4cece5,_0x2c85ca){_0x4cece5=_0x4cece5-0x0;var _0x264271=_0xb510[_0x4cece5];return _0x264271;};'use strict';var multer=require(_0x0b51('0x0'));var util=require(_0x0b51('0x1'));var path=require('path');var timeout=require(_0x0b51('0x2'));var express=require(_0x0b51('0x3'));var router=express['Router']();var fs_extra=require(_0x0b51('0x4'));var auth=require(_0x0b51('0x5'));var interaction=require(_0x0b51('0x6'));var config=require('../../config/environment');var controller=require(_0x0b51('0x7'));router[_0x0b51('0x8')]('/',auth[_0x0b51('0x9')](),controller[_0x0b51('0xa')]);router['get'](_0x0b51('0xb'),auth[_0x0b51('0x9')](),controller['show']);router[_0x0b51('0x8')](_0x0b51('0xc'),auth[_0x0b51('0x9')](),controller[_0x0b51('0xd')]);router['get']('/:id/fields',auth[_0x0b51('0x9')](),controller['getFields']);router['post']('/',auth[_0x0b51('0x9')](),controller[_0x0b51('0xe')]);router[_0x0b51('0xf')](_0x0b51('0xc'),auth['isAuthenticated'](),controller['addConfiguration']);router[_0x0b51('0x10')]('/:id',auth[_0x0b51('0x9')](),controller[_0x0b51('0x11')]);router[_0x0b51('0x12')](_0x0b51('0xb'),auth[_0x0b51('0x9')](),controller[_0x0b51('0x13')]);module[_0x0b51('0x14')]=router;
\ No newline at end of file
+var _0x394e=['/:id/configurations','/:id/fields','getFields','post','addConfiguration','put','delete','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','show'];(function(_0x2f333c,_0xb839ab){var _0x3adbc4=function(_0x11c531){while(--_0x11c531){_0x2f333c['push'](_0x2f333c['shift']());}};_0x3adbc4(++_0xb839ab);}(_0x394e,0x147));var _0xe394=function(_0x3a45cc,_0x48b29c){_0x3a45cc=_0x3a45cc-0x0;var _0xad0f1b=_0x394e[_0x3a45cc];return _0xad0f1b;};'use strict';var multer=require(_0xe394('0x0'));var util=require(_0xe394('0x1'));var path=require(_0xe394('0x2'));var timeout=require(_0xe394('0x3'));var express=require('express');var router=express[_0xe394('0x4')]();var fs_extra=require(_0xe394('0x5'));var auth=require(_0xe394('0x6'));var interaction=require(_0xe394('0x7'));var config=require('../../config/environment');var controller=require('./intDeskAccount.controller');router[_0xe394('0x8')]('/',auth[_0xe394('0x9')](),controller[_0xe394('0xa')]);router[_0xe394('0x8')](_0xe394('0xb'),auth[_0xe394('0x9')](),controller[_0xe394('0xc')]);router['get'](_0xe394('0xd'),auth[_0xe394('0x9')](),controller['getConfigurations']);router[_0xe394('0x8')](_0xe394('0xe'),auth[_0xe394('0x9')](),controller[_0xe394('0xf')]);router[_0xe394('0x10')]('/',auth['isAuthenticated'](),controller['create']);router[_0xe394('0x10')]('/:id/configurations',auth[_0xe394('0x9')](),controller[_0xe394('0x11')]);router[_0xe394('0x12')]('/:id',auth[_0xe394('0x9')](),controller['update']);router[_0xe394('0x13')]('/:id',auth[_0xe394('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index d3edc96..ebf3e44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8353=['ENUM','basic','integrationTab','sequelize','exports','STRING'];(function(_0x710815,_0x520da8){var _0x5b3b89=function(_0x2e1a8e){while(--_0x2e1a8e){_0x710815['push'](_0x710815['shift']());}};_0x5b3b89(++_0x520da8);}(_0x8353,0x117));var _0x3835=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x8353[_0x21a9d9];return _0x46adce;};'use strict';var Sequelize=require(_0x3835('0x0'));module[_0x3835('0x1')]={'name':{'type':Sequelize[_0x3835('0x2')]},'description':{'type':Sequelize[_0x3835('0x2')]},'username':{'type':Sequelize[_0x3835('0x2')]},'remoteUri':{'type':Sequelize['STRING']},'authType':{'type':Sequelize[_0x3835('0x3')](_0x3835('0x4')),'defaultValue':_0x3835('0x4')},'password':{'type':Sequelize[_0x3835('0x2')]},'consumerKey':{'type':Sequelize[_0x3835('0x2')]},'consumerSecret':{'type':Sequelize[_0x3835('0x2')]},'token':{'type':Sequelize['STRING']},'tokenSecret':{'type':Sequelize[_0x3835('0x2')]},'serverUrl':{'type':Sequelize[_0x3835('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x3835('0x5'),'newTab'),'defaultValue':_0x3835('0x5')}};
\ No newline at end of file
+var _0x2134=['ENUM','integrationTab','newTab','exports','STRING','basic'];(function(_0x49c68e,_0x1c1673){var _0x33032b=function(_0x42ac31){while(--_0x42ac31){_0x49c68e['push'](_0x49c68e['shift']());}};_0x33032b(++_0x1c1673);}(_0x2134,0x69));var _0x4213=function(_0x1f99cf,_0x5d4618){_0x1f99cf=_0x1f99cf-0x0;var _0x7eb0cf=_0x2134[_0x1f99cf];return _0x7eb0cf;};'use strict';var Sequelize=require('sequelize');module[_0x4213('0x0')]={'name':{'type':Sequelize[_0x4213('0x1')]},'description':{'type':Sequelize[_0x4213('0x1')]},'username':{'type':Sequelize[_0x4213('0x1')]},'remoteUri':{'type':Sequelize[_0x4213('0x1')]},'authType':{'type':Sequelize['ENUM'](_0x4213('0x2')),'defaultValue':_0x4213('0x2')},'password':{'type':Sequelize[_0x4213('0x1')]},'consumerKey':{'type':Sequelize[_0x4213('0x1')]},'consumerSecret':{'type':Sequelize[_0x4213('0x1')]},'token':{'type':Sequelize['STRING']},'tokenSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x4213('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x4213('0x3')](_0x4213('0x4'),_0x4213('0x5')),'defaultValue':'integrationTab'}};
\ No newline at end of file
index 238b952..9e4464e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e52=['type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','catch','show','params','find','create','body','destroy','getConfigurations','findOne','DeskConfiguration','pick','addConfiguration','AccountId','Subjects','getSubjects','channel','getDescriptions','DeskField','Descriptions','getFields','priority','remoteUri','authType','password','consumerSecret','token','tokenSecret','substring','lastIndexOf','GET','format','%s/custom_fields','application/json','headers','Authorization','Basic\x20%s','%s:%s','username','toString','base64','concat','_embedded','entries','label','test','getFields,\x20%s,\x20%s,\x20%s','stringify','send','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','undefined','offset','set','apply','reject','save','update','then','error','stack','name','map','DeskAccount','rawAttributes','fieldName'];(function(_0x20a558,_0x160e0e){var _0x53d3f7=function(_0x259bd8){while(--_0x259bd8){_0x20a558['push'](_0x20a558['shift']());}};_0x53d3f7(++_0x160e0e);}(_0x9e52,0xc1));var _0x29e5=function(_0x38e2b8,_0xd2968e){_0x38e2b8=_0x38e2b8-0x0;var _0x227ef0=_0x9e52[_0x38e2b8];return _0x227ef0;};'use strict';var emlformat=require(_0x29e5('0x0'));var rimraf=require(_0x29e5('0x1'));var zipdir=require(_0x29e5('0x2'));var jsonpatch=require(_0x29e5('0x3'));var rp=require(_0x29e5('0x4'));var moment=require(_0x29e5('0x5'));var BPromise=require(_0x29e5('0x6'));var Mustache=require(_0x29e5('0x7'));var util=require('util');var path=require('path');var sox=require(_0x29e5('0x8'));var csv=require(_0x29e5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x29e5('0xa'));var _=require(_0x29e5('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x29e5('0xc'));var deskjs=require(_0x29e5('0xd'));var toCsv=require('to-csv');var querystring=require(_0x29e5('0xe'));var Papa=require('papaparse');var Redis=require(_0x29e5('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x29e5('0x10'));var hardwareService=require(_0x29e5('0x11'));var logger=require(_0x29e5('0x12'))(_0x29e5('0x13'));var utils=require(_0x29e5('0x14'));var config=require(_0x29e5('0x15'));var licenseUtil=require(_0x29e5('0x16'));var db=require(_0x29e5('0x17'))['db'];var integrations=require(_0x29e5('0x18'));function respondWithStatusCode(_0x22059c,_0x313e42){_0x313e42=_0x313e42||0xcc;return function(_0x499ca9){if(_0x499ca9){return _0x22059c[_0x29e5('0x19')](_0x313e42);}return _0x22059c[_0x29e5('0x1a')](_0x313e42)['end']();};}function respondWithResult(_0x43ea2e,_0x5abd68){_0x5abd68=_0x5abd68||0xc8;return function(_0x53c374){if(_0x53c374){return _0x43ea2e['status'](_0x5abd68)[_0x29e5('0x1b')](_0x53c374);}};}function respondWithFilteredResult(_0x581243,_0x2fabfe){return function(_0xe63d16){if(_0xe63d16){var _0x4c67fb=typeof _0x2fabfe['offset']===_0x29e5('0x1c')&&typeof _0x2fabfe['limit']===_0x29e5('0x1c');var _0x4e3208=_0xe63d16['count'];var _0x5b7687=_0x4c67fb?0x0:_0x2fabfe['offset'];var _0x514e0f=_0x4c67fb?_0xe63d16['count']:_0x2fabfe[_0x29e5('0x1d')]+_0x2fabfe['limit'];var _0x4e965b;if(_0x514e0f>=_0x4e3208){_0x514e0f=_0x4e3208;_0x4e965b=0xc8;}else{_0x4e965b=0xce;}_0x581243['status'](_0x4e965b);return _0x581243[_0x29e5('0x1e')]('Content-Range',_0x5b7687+'-'+_0x514e0f+'/'+_0x4e3208)[_0x29e5('0x1b')](_0xe63d16);}return null;};}function patchUpdates(_0x2c8341){return function(_0x2272ec){try{jsonpatch[_0x29e5('0x1f')](_0x2272ec,_0x2c8341,!![]);}catch(_0x532d07){return BPromise[_0x29e5('0x20')](_0x532d07);}return _0x2272ec[_0x29e5('0x21')]();};}function saveUpdates(_0x5b058c,_0x1b13e4){return function(_0x53a902){if(_0x53a902){return _0x53a902[_0x29e5('0x22')](_0x5b058c)[_0x29e5('0x23')](function(_0xd4032b){return _0xd4032b;});}return null;};}function removeEntity(_0x175eff,_0x5375e9){return function(_0x369308){if(_0x369308){return _0x369308['destroy']()['then'](function(){_0x175eff[_0x29e5('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5b74cc,_0x320150){return function(_0x14f9e2){if(!_0x14f9e2){_0x5b74cc['sendStatus'](0x194);}return _0x14f9e2;};}function handleError(_0x1a87bc,_0x25c8fe){_0x25c8fe=_0x25c8fe||0x1f4;return function(_0x4ac8a5){logger[_0x29e5('0x24')](_0x4ac8a5[_0x29e5('0x25')]);if(_0x4ac8a5[_0x29e5('0x26')]){delete _0x4ac8a5[_0x29e5('0x26')];}_0x1a87bc[_0x29e5('0x1a')](_0x25c8fe)['send'](_0x4ac8a5);};}exports['index']=function(_0x4748c3,_0xec605){var _0xdf608a={},_0x7119b4={},_0x580c95={'count':0x0,'rows':[]};var _0x29b2e8=_[_0x29e5('0x27')](db[_0x29e5('0x28')][_0x29e5('0x29')],function(_0x202861){return{'name':_0x202861[_0x29e5('0x2a')],'type':_0x202861[_0x29e5('0x2b')][_0x29e5('0x2c')]};});_0x7119b4[_0x29e5('0x2d')]=_[_0x29e5('0x27')](_0x29b2e8,_0x29e5('0x26'));_0x7119b4[_0x29e5('0x2e')]=_[_0x29e5('0x2f')](_0x4748c3[_0x29e5('0x2e')]);_0x7119b4[_0x29e5('0x30')]=_['intersection'](_0x7119b4[_0x29e5('0x2d')],_0x7119b4['query']);_0xdf608a['attributes']=_[_0x29e5('0x31')](_0x7119b4[_0x29e5('0x2d')],qs[_0x29e5('0x32')](_0x4748c3['query']['fields']));_0xdf608a[_0x29e5('0x33')]=_0xdf608a['attributes'][_0x29e5('0x34')]?_0xdf608a[_0x29e5('0x33')]:_0x7119b4['model'];if(!_0x4748c3['query'][_0x29e5('0x35')](_0x29e5('0x36'))){_0xdf608a[_0x29e5('0x37')]=qs[_0x29e5('0x37')](_0x4748c3[_0x29e5('0x2e')][_0x29e5('0x37')]);_0xdf608a['offset']=qs[_0x29e5('0x1d')](_0x4748c3[_0x29e5('0x2e')][_0x29e5('0x1d')]);}_0xdf608a[_0x29e5('0x38')]=qs[_0x29e5('0x39')](_0x4748c3[_0x29e5('0x2e')]['sort']);_0xdf608a[_0x29e5('0x3a')]=qs[_0x29e5('0x30')](_['pick'](_0x4748c3[_0x29e5('0x2e')],_0x7119b4[_0x29e5('0x30')]),_0x29b2e8);if(_0x4748c3[_0x29e5('0x2e')][_0x29e5('0x3b')]){_0xdf608a['where']=_[_0x29e5('0x3c')](_0xdf608a[_0x29e5('0x3a')],{'$or':_[_0x29e5('0x27')](_0x29b2e8,function(_0x4e4daa){if(_0x4e4daa[_0x29e5('0x2b')]!==_0x29e5('0x3d')){var _0x2b30c2={};_0x2b30c2[_0x4e4daa[_0x29e5('0x26')]]={'$like':'%'+_0x4748c3[_0x29e5('0x2e')][_0x29e5('0x3b')]+'%'};return _0x2b30c2;}})});}_0xdf608a=_[_0x29e5('0x3c')]({},_0xdf608a,_0x4748c3[_0x29e5('0x3e')]);var _0x9b29e5={'where':_0xdf608a[_0x29e5('0x3a')]};return db[_0x29e5('0x28')][_0x29e5('0x3f')](_0x9b29e5)[_0x29e5('0x23')](function(_0x157979){_0x580c95[_0x29e5('0x3f')]=_0x157979;if(_0x4748c3[_0x29e5('0x2e')][_0x29e5('0x40')]){_0xdf608a[_0x29e5('0x41')]=[{'all':!![]}];}return db[_0x29e5('0x28')][_0x29e5('0x42')](_0xdf608a);})[_0x29e5('0x23')](function(_0x4d5e8b){_0x580c95[_0x29e5('0x43')]=_0x4d5e8b;return _0x580c95;})[_0x29e5('0x23')](respondWithFilteredResult(_0xec605,_0xdf608a))[_0x29e5('0x44')](handleError(_0xec605,null));};exports[_0x29e5('0x45')]=function(_0x14e40a,_0x59f60c){var _0x15a1ac={'raw':![],'where':{'id':_0x14e40a[_0x29e5('0x46')]['id']}},_0x14a0d3={};_0x14a0d3['model']=_[_0x29e5('0x2f')](db[_0x29e5('0x28')][_0x29e5('0x29')]);_0x14a0d3['query']=_[_0x29e5('0x2f')](_0x14e40a[_0x29e5('0x2e')]);_0x14a0d3['filters']=_[_0x29e5('0x31')](_0x14a0d3[_0x29e5('0x2d')],_0x14a0d3['query']);_0x15a1ac[_0x29e5('0x33')]=_[_0x29e5('0x31')](_0x14a0d3[_0x29e5('0x2d')],qs['fields'](_0x14e40a['query'][_0x29e5('0x32')]));_0x15a1ac[_0x29e5('0x33')]=_0x15a1ac[_0x29e5('0x33')][_0x29e5('0x34')]?_0x15a1ac['attributes']:_0x14a0d3[_0x29e5('0x2d')];if(_0x14e40a[_0x29e5('0x2e')][_0x29e5('0x40')]){_0x15a1ac['include']=[{'all':!![]}];}_0x15a1ac=_['merge']({},_0x15a1ac,_0x14e40a[_0x29e5('0x3e')]);return db['DeskAccount'][_0x29e5('0x47')](_0x15a1ac)[_0x29e5('0x23')](handleEntityNotFound(_0x59f60c,null))[_0x29e5('0x23')](respondWithResult(_0x59f60c,null))[_0x29e5('0x44')](handleError(_0x59f60c,null));};exports[_0x29e5('0x48')]=function(_0x4fa050,_0x5d8b63){return db[_0x29e5('0x28')][_0x29e5('0x48')](_0x4fa050[_0x29e5('0x49')],{})[_0x29e5('0x23')](respondWithResult(_0x5d8b63,0xc9))[_0x29e5('0x44')](handleError(_0x5d8b63,null));};exports[_0x29e5('0x22')]=function(_0x1c4856,_0x5763a4){if(_0x1c4856[_0x29e5('0x49')]['id']){delete _0x1c4856[_0x29e5('0x49')]['id'];}return db[_0x29e5('0x28')]['find']({'where':{'id':_0x1c4856[_0x29e5('0x46')]['id']}})[_0x29e5('0x23')](handleEntityNotFound(_0x5763a4,null))['then'](saveUpdates(_0x1c4856[_0x29e5('0x49')],null))[_0x29e5('0x23')](respondWithResult(_0x5763a4,null))[_0x29e5('0x44')](handleError(_0x5763a4,null));};exports[_0x29e5('0x4a')]=function(_0x3544ef,_0x59025d){return db['DeskAccount'][_0x29e5('0x47')]({'where':{'id':_0x3544ef[_0x29e5('0x46')]['id']}})[_0x29e5('0x23')](handleEntityNotFound(_0x59025d,null))[_0x29e5('0x23')](removeEntity(_0x59025d,null))['catch'](handleError(_0x59025d,null));};exports[_0x29e5('0x4b')]=function(_0x5b10a8,_0x50da80,_0x434dad){var _0x35e03d={};var _0x24aec3={};var _0x4fe8ca;var _0x3aa978;return db['DeskAccount'][_0x29e5('0x4c')]({'where':{'id':_0x5b10a8['params']['id']}})[_0x29e5('0x23')](handleEntityNotFound(_0x50da80,null))[_0x29e5('0x23')](function(_0x2f0bb5){if(_0x2f0bb5){_0x4fe8ca=_0x2f0bb5;_0x24aec3[_0x29e5('0x2d')]=_['keys'](db[_0x29e5('0x4d')]['rawAttributes']);_0x24aec3['query']=_['keys'](_0x5b10a8[_0x29e5('0x2e')]);_0x24aec3[_0x29e5('0x30')]=_[_0x29e5('0x31')](_0x24aec3[_0x29e5('0x2d')],_0x24aec3[_0x29e5('0x2e')]);_0x35e03d[_0x29e5('0x33')]=_[_0x29e5('0x31')](_0x24aec3['model'],qs[_0x29e5('0x32')](_0x5b10a8[_0x29e5('0x2e')]['fields']));_0x35e03d[_0x29e5('0x33')]=_0x35e03d['attributes'][_0x29e5('0x34')]?_0x35e03d['attributes']:_0x24aec3[_0x29e5('0x2d')];_0x35e03d[_0x29e5('0x38')]=qs[_0x29e5('0x39')](_0x5b10a8[_0x29e5('0x2e')][_0x29e5('0x39')]);_0x35e03d[_0x29e5('0x3a')]=qs[_0x29e5('0x30')](_[_0x29e5('0x4e')](_0x5b10a8['query'],_0x24aec3[_0x29e5('0x30')]));if(_0x5b10a8['query'][_0x29e5('0x3b')]){_0x35e03d['where']=_[_0x29e5('0x3c')](_0x35e03d[_0x29e5('0x3a')],{'$or':_[_0x29e5('0x27')](_0x35e03d[_0x29e5('0x33')],function(_0x41b5ab){var _0xc02598={};_0xc02598[_0x41b5ab]={'$like':'%'+_0x5b10a8['query'][_0x29e5('0x3b')]+'%'};return _0xc02598;})});}_0x35e03d=_[_0x29e5('0x3c')]({},_0x35e03d,_0x5b10a8['options']);return _0x4fe8ca[_0x29e5('0x4b')](_0x35e03d);}})['then'](function(_0x2069d8){if(_0x2069d8){_0x3aa978=_0x2069d8[_0x29e5('0x34')];if(!_0x5b10a8['query']['hasOwnProperty'](_0x29e5('0x36'))){_0x35e03d[_0x29e5('0x37')]=qs[_0x29e5('0x37')](_0x5b10a8['query'][_0x29e5('0x37')]);_0x35e03d[_0x29e5('0x1d')]=qs[_0x29e5('0x1d')](_0x5b10a8[_0x29e5('0x2e')][_0x29e5('0x1d')]);}return _0x4fe8ca[_0x29e5('0x4b')](_0x35e03d);}})['then'](function(_0x3a60ce){if(_0x3a60ce){return _0x3a60ce?{'count':_0x3aa978,'rows':_0x3a60ce}:null;}})[_0x29e5('0x23')](respondWithResult(_0x50da80,null))[_0x29e5('0x44')](handleError(_0x50da80,null));};exports[_0x29e5('0x4f')]=function(_0x432065,_0x2cda40,_0xc676a4){if(_0x432065[_0x29e5('0x49')]['id']){delete _0x432065[_0x29e5('0x49')]['id'];}return db[_0x29e5('0x28')]['findOne']({'where':{'id':_0x432065[_0x29e5('0x46')]['id']}})[_0x29e5('0x23')](handleEntityNotFound(_0x2cda40,null))[_0x29e5('0x23')](function(_0x40b471){if(_0x40b471){_0x432065[_0x29e5('0x49')][_0x29e5('0x50')]=_0x40b471['id'];_0x432065[_0x29e5('0x49')][_0x29e5('0x51')]=integrations[_0x29e5('0x52')](_0x432065[_0x29e5('0x49')][_0x29e5('0x53')],_0x432065['body']['type']);_0x432065[_0x29e5('0x49')]['Descriptions']=integrations[_0x29e5('0x54')](_0x432065['body'][_0x29e5('0x53')],_0x432065['body'][_0x29e5('0x2b')]);return db[_0x29e5('0x4d')]['create'](_0x432065[_0x29e5('0x49')],{'include':[{'model':db[_0x29e5('0x55')],'as':_0x29e5('0x51')},{'model':db[_0x29e5('0x55')],'as':_0x29e5('0x56')}]});}return null;})['then'](respondWithResult(_0x2cda40,null))['catch'](handleError(_0x2cda40,null));};exports[_0x29e5('0x57')]=function(_0x760e1a,_0x38c879,_0x376aa1){var _0x1f3ac1=[{'name':_0x29e5('0x58'),'label':_0x29e5('0x58'),'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 _0xb6f6a8='';return db['DeskAccount'][_0x29e5('0x4c')]({'where':{'id':_0x760e1a[_0x29e5('0x46')]['id']},'attributes':['id',_0x29e5('0x59'),_0x29e5('0x5a'),'username',_0x29e5('0x5b'),'consumerKey',_0x29e5('0x5c'),_0x29e5('0x5d'),_0x29e5('0x5e')]})[_0x29e5('0x23')](handleEntityNotFound(_0x38c879,null))['then'](function(_0x419981){if(_0x419981){_0xb6f6a8=_0x419981[_0x29e5('0x59')];var _0x1ffea7=_0xb6f6a8['slice'](-0x1);if(_0x1ffea7==='/'){_0xb6f6a8=_0xb6f6a8[_0x29e5('0x5f')](0x0,_0xb6f6a8[_0x29e5('0x60')](_0x1ffea7));}var _0x51fe13={'method':_0x29e5('0x61'),'uri':util[_0x29e5('0x62')](_0x29e5('0x63'),_0xb6f6a8),'headers':{'Content-Type':'application/json','Accept':_0x29e5('0x64')},'json':!![]};if(_0x419981['authType']==='basic'){_0x51fe13[_0x29e5('0x65')][_0x29e5('0x66')]=util[_0x29e5('0x62')](_0x29e5('0x67'),new Buffer(util[_0x29e5('0x62')](_0x29e5('0x68'),_0x419981[_0x29e5('0x69')],_0x419981[_0x29e5('0x5b')]))[_0x29e5('0x6a')](_0x29e5('0x6b')));}return rp(_0x51fe13)[_0x29e5('0x23')](function(_0x159d16){return _0x1f3ac1[_0x29e5('0x6c')](_[_0x29e5('0x27')](_0x159d16[_0x29e5('0x6d')][_0x29e5('0x6e')],function(_0x23da60){return{'id':_0x23da60[_0x29e5('0x26')],'name':_0x23da60[_0x29e5('0x26')],'type':_0x23da60['type'],'active':_0x23da60['active'],'label':_0x23da60[_0x29e5('0x6f')],'custom':!![]};}));});}})[_0x29e5('0x23')](function(_0x3c12c6){return{'count':_0x3c12c6[_0x29e5('0x34')],'rows':_0x3c12c6};})[_0x29e5('0x23')](respondWithResult(_0x38c879,null))[_0x29e5('0x44')](function(_0x224c1c){var _0xb6d152=_0x760e1a[_0x29e5('0x2e')][_0x29e5('0x70')]?0x1f4:_0x224c1c['statusCode']||0x1f4;logger[_0x29e5('0x24')](_0x29e5('0x71'),_0x29e5('0x57'),_0xb6d152,JSON[_0x29e5('0x72')](_0x224c1c));delete _0x224c1c[_0x29e5('0x26')];if(_0xb6d152===0x191){_0xb6d152=0x190;}_0x38c879[_0x29e5('0x1a')](_0xb6d152)[_0x29e5('0x73')](_0x760e1a[_0x29e5('0x2e')][_0x29e5('0x70')]?{'message':_0x29e5('0x74'),'statusCode':_0x224c1c[_0x29e5('0x75')]}:_0x224c1c);});};
\ No newline at end of file
+var _0x660d=['util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','limit','undefined','offset','count','set','Content-Range','json','reject','save','update','destroy','error','stack','name','index','map','rawAttributes','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','type','options','DeskAccount','then','includeAll','include','findAll','show','params','catch','create','body','find','getConfigurations','findOne','DeskConfiguration','addConfiguration','AccountId','Subjects','channel','Descriptions','getDescriptions','DeskField','priority','remoteUri','username','consumerKey','consumerSecret','token','substring','lastIndexOf','GET','format','%s/custom_fields','application/json','authType','basic','headers','Authorization','Basic\x20%s','%s:%s','password','toString','base64','concat','_embedded','entries','label','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','send','eml-format','rimraf','zip-dir','bluebird','mustache'];(function(_0x2e4e19,_0x493b50){var _0x9ba20b=function(_0x2f6456){while(--_0x2f6456){_0x2e4e19['push'](_0x2e4e19['shift']());}};_0x9ba20b(++_0x493b50);}(_0x660d,0x6e));var _0xd660=function(_0x30063a,_0x4a55c8){_0x30063a=_0x30063a-0x0;var _0x2024d2=_0x660d[_0x30063a];return _0x2024d2;};'use strict';var emlformat=require(_0xd660('0x0'));var rimraf=require(_0xd660('0x1'));var zipdir=require(_0xd660('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xd660('0x3'));var Mustache=require(_0xd660('0x4'));var util=require(_0xd660('0x5'));var path=require(_0xd660('0x6'));var sox=require('sox');var csv=require(_0xd660('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd660('0x8'));var _=require(_0xd660('0x9'));var squel=require(_0xd660('0xa'));var crypto=require(_0xd660('0xb'));var jsforce=require(_0xd660('0xc'));var deskjs=require(_0xd660('0xd'));var toCsv=require(_0xd660('0x7'));var querystring=require(_0xd660('0xe'));var Papa=require(_0xd660('0xf'));var Redis=require('ioredis');var authService=require(_0xd660('0x10'));var qs=require(_0xd660('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd660('0x12'));var logger=require(_0xd660('0x13'))(_0xd660('0x14'));var utils=require(_0xd660('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xd660('0x16'));var db=require(_0xd660('0x17'))['db'];var integrations=require(_0xd660('0x18'));function respondWithStatusCode(_0x3b2956,_0x2bb7aa){_0x2bb7aa=_0x2bb7aa||0xcc;return function(_0x7a518e){if(_0x7a518e){return _0x3b2956[_0xd660('0x19')](_0x2bb7aa);}return _0x3b2956[_0xd660('0x1a')](_0x2bb7aa)[_0xd660('0x1b')]();};}function respondWithResult(_0x14080e,_0x43eb9d){_0x43eb9d=_0x43eb9d||0xc8;return function(_0x4b3a36){if(_0x4b3a36){return _0x14080e['status'](_0x43eb9d)['json'](_0x4b3a36);}};}function respondWithFilteredResult(_0x1326ae,_0x401bfc){return function(_0x4339c4){if(_0x4339c4){var _0x2babf6=typeof _0x401bfc['offset']==='undefined'&&typeof _0x401bfc[_0xd660('0x1c')]===_0xd660('0x1d');var _0x5cc772=_0x4339c4['count'];var _0x56dfd3=_0x2babf6?0x0:_0x401bfc[_0xd660('0x1e')];var _0x52ff01=_0x2babf6?_0x4339c4[_0xd660('0x1f')]:_0x401bfc[_0xd660('0x1e')]+_0x401bfc[_0xd660('0x1c')];var _0x14f249;if(_0x52ff01>=_0x5cc772){_0x52ff01=_0x5cc772;_0x14f249=0xc8;}else{_0x14f249=0xce;}_0x1326ae[_0xd660('0x1a')](_0x14f249);return _0x1326ae[_0xd660('0x20')](_0xd660('0x21'),_0x56dfd3+'-'+_0x52ff01+'/'+_0x5cc772)[_0xd660('0x22')](_0x4339c4);}return null;};}function patchUpdates(_0x4f112a){return function(_0x2b7507){try{jsonpatch['apply'](_0x2b7507,_0x4f112a,!![]);}catch(_0x140200){return BPromise[_0xd660('0x23')](_0x140200);}return _0x2b7507[_0xd660('0x24')]();};}function saveUpdates(_0x56f5d1,_0xfe3aba){return function(_0x12f9f3){if(_0x12f9f3){return _0x12f9f3[_0xd660('0x25')](_0x56f5d1)['then'](function(_0x1f4723){return _0x1f4723;});}return null;};}function removeEntity(_0x28c354,_0x3ac322){return function(_0xb11b8a){if(_0xb11b8a){return _0xb11b8a[_0xd660('0x26')]()['then'](function(){_0x28c354[_0xd660('0x1a')](0xcc)[_0xd660('0x1b')]();});}};}function handleEntityNotFound(_0x444b7f,_0x4bcac2){return function(_0x1c06ef){if(!_0x1c06ef){_0x444b7f[_0xd660('0x19')](0x194);}return _0x1c06ef;};}function handleError(_0x22117c,_0xd4efc2){_0xd4efc2=_0xd4efc2||0x1f4;return function(_0x251406){logger[_0xd660('0x27')](_0x251406[_0xd660('0x28')]);if(_0x251406[_0xd660('0x29')]){delete _0x251406[_0xd660('0x29')];}_0x22117c[_0xd660('0x1a')](_0xd4efc2)['send'](_0x251406);};}exports[_0xd660('0x2a')]=function(_0x29f2c8,_0x253bf2){var _0x3bb6f6={},_0x2c865c={},_0x28ef09={'count':0x0,'rows':[]};var _0x805048=_[_0xd660('0x2b')](db['DeskAccount'][_0xd660('0x2c')],function(_0x42de1e){return{'name':_0x42de1e['fieldName'],'type':_0x42de1e['type'][_0xd660('0x2d')]};});_0x2c865c[_0xd660('0x2e')]=_[_0xd660('0x2b')](_0x805048,_0xd660('0x29'));_0x2c865c[_0xd660('0x2f')]=_[_0xd660('0x30')](_0x29f2c8[_0xd660('0x2f')]);_0x2c865c['filters']=_[_0xd660('0x31')](_0x2c865c['model'],_0x2c865c[_0xd660('0x2f')]);_0x3bb6f6[_0xd660('0x32')]=_[_0xd660('0x31')](_0x2c865c['model'],qs[_0xd660('0x33')](_0x29f2c8[_0xd660('0x2f')]['fields']));_0x3bb6f6[_0xd660('0x32')]=_0x3bb6f6[_0xd660('0x32')][_0xd660('0x34')]?_0x3bb6f6[_0xd660('0x32')]:_0x2c865c['model'];if(!_0x29f2c8[_0xd660('0x2f')][_0xd660('0x35')](_0xd660('0x36'))){_0x3bb6f6[_0xd660('0x1c')]=qs[_0xd660('0x1c')](_0x29f2c8[_0xd660('0x2f')][_0xd660('0x1c')]);_0x3bb6f6[_0xd660('0x1e')]=qs[_0xd660('0x1e')](_0x29f2c8[_0xd660('0x2f')]['offset']);}_0x3bb6f6[_0xd660('0x37')]=qs[_0xd660('0x38')](_0x29f2c8[_0xd660('0x2f')][_0xd660('0x38')]);_0x3bb6f6[_0xd660('0x39')]=qs[_0xd660('0x3a')](_['pick'](_0x29f2c8[_0xd660('0x2f')],_0x2c865c['filters']),_0x805048);if(_0x29f2c8[_0xd660('0x2f')][_0xd660('0x3b')]){_0x3bb6f6['where']=_[_0xd660('0x3c')](_0x3bb6f6[_0xd660('0x39')],{'$or':_['map'](_0x805048,function(_0x2e3641){if(_0x2e3641[_0xd660('0x3d')]!=='VIRTUAL'){var _0xdec552={};_0xdec552[_0x2e3641[_0xd660('0x29')]]={'$like':'%'+_0x29f2c8['query'][_0xd660('0x3b')]+'%'};return _0xdec552;}})});}_0x3bb6f6=_[_0xd660('0x3c')]({},_0x3bb6f6,_0x29f2c8[_0xd660('0x3e')]);var _0x1d987d={'where':_0x3bb6f6[_0xd660('0x39')]};return db[_0xd660('0x3f')][_0xd660('0x1f')](_0x1d987d)[_0xd660('0x40')](function(_0x55ee0c){_0x28ef09[_0xd660('0x1f')]=_0x55ee0c;if(_0x29f2c8['query'][_0xd660('0x41')]){_0x3bb6f6[_0xd660('0x42')]=[{'all':!![]}];}return db[_0xd660('0x3f')][_0xd660('0x43')](_0x3bb6f6);})[_0xd660('0x40')](function(_0x3cb00f){_0x28ef09['rows']=_0x3cb00f;return _0x28ef09;})[_0xd660('0x40')](respondWithFilteredResult(_0x253bf2,_0x3bb6f6))['catch'](handleError(_0x253bf2,null));};exports[_0xd660('0x44')]=function(_0x2c1bd2,_0x1f91b8){var _0x9630aa={'raw':![],'where':{'id':_0x2c1bd2[_0xd660('0x45')]['id']}},_0x2a601c={};_0x2a601c['model']=_[_0xd660('0x30')](db[_0xd660('0x3f')][_0xd660('0x2c')]);_0x2a601c[_0xd660('0x2f')]=_[_0xd660('0x30')](_0x2c1bd2['query']);_0x2a601c[_0xd660('0x3a')]=_[_0xd660('0x31')](_0x2a601c[_0xd660('0x2e')],_0x2a601c[_0xd660('0x2f')]);_0x9630aa[_0xd660('0x32')]=_[_0xd660('0x31')](_0x2a601c[_0xd660('0x2e')],qs[_0xd660('0x33')](_0x2c1bd2[_0xd660('0x2f')][_0xd660('0x33')]));_0x9630aa['attributes']=_0x9630aa['attributes']['length']?_0x9630aa['attributes']:_0x2a601c[_0xd660('0x2e')];if(_0x2c1bd2[_0xd660('0x2f')][_0xd660('0x41')]){_0x9630aa['include']=[{'all':!![]}];}_0x9630aa=_['merge']({},_0x9630aa,_0x2c1bd2[_0xd660('0x3e')]);return db['DeskAccount']['find'](_0x9630aa)[_0xd660('0x40')](handleEntityNotFound(_0x1f91b8,null))[_0xd660('0x40')](respondWithResult(_0x1f91b8,null))[_0xd660('0x46')](handleError(_0x1f91b8,null));};exports[_0xd660('0x47')]=function(_0x29ac1a,_0xf8daa8){return db[_0xd660('0x3f')][_0xd660('0x47')](_0x29ac1a['body'],{})[_0xd660('0x40')](respondWithResult(_0xf8daa8,0xc9))[_0xd660('0x46')](handleError(_0xf8daa8,null));};exports[_0xd660('0x25')]=function(_0x1d44df,_0x2260b7){if(_0x1d44df[_0xd660('0x48')]['id']){delete _0x1d44df['body']['id'];}return db[_0xd660('0x3f')][_0xd660('0x49')]({'where':{'id':_0x1d44df[_0xd660('0x45')]['id']}})['then'](handleEntityNotFound(_0x2260b7,null))[_0xd660('0x40')](saveUpdates(_0x1d44df[_0xd660('0x48')],null))['then'](respondWithResult(_0x2260b7,null))[_0xd660('0x46')](handleError(_0x2260b7,null));};exports[_0xd660('0x26')]=function(_0x4bac9f,_0x7a315d){return db[_0xd660('0x3f')]['find']({'where':{'id':_0x4bac9f[_0xd660('0x45')]['id']}})[_0xd660('0x40')](handleEntityNotFound(_0x7a315d,null))['then'](removeEntity(_0x7a315d,null))[_0xd660('0x46')](handleError(_0x7a315d,null));};exports[_0xd660('0x4a')]=function(_0x408491,_0x4ae3fb,_0x34f649){var _0x4e1ebf={};var _0x45f7c6={};var _0x325885;var _0x2a9855;return db[_0xd660('0x3f')][_0xd660('0x4b')]({'where':{'id':_0x408491[_0xd660('0x45')]['id']}})[_0xd660('0x40')](handleEntityNotFound(_0x4ae3fb,null))[_0xd660('0x40')](function(_0x12e9ac){if(_0x12e9ac){_0x325885=_0x12e9ac;_0x45f7c6[_0xd660('0x2e')]=_['keys'](db[_0xd660('0x4c')][_0xd660('0x2c')]);_0x45f7c6[_0xd660('0x2f')]=_[_0xd660('0x30')](_0x408491[_0xd660('0x2f')]);_0x45f7c6[_0xd660('0x3a')]=_[_0xd660('0x31')](_0x45f7c6['model'],_0x45f7c6[_0xd660('0x2f')]);_0x4e1ebf[_0xd660('0x32')]=_[_0xd660('0x31')](_0x45f7c6[_0xd660('0x2e')],qs[_0xd660('0x33')](_0x408491[_0xd660('0x2f')][_0xd660('0x33')]));_0x4e1ebf[_0xd660('0x32')]=_0x4e1ebf[_0xd660('0x32')][_0xd660('0x34')]?_0x4e1ebf[_0xd660('0x32')]:_0x45f7c6[_0xd660('0x2e')];_0x4e1ebf[_0xd660('0x37')]=qs[_0xd660('0x38')](_0x408491[_0xd660('0x2f')][_0xd660('0x38')]);_0x4e1ebf[_0xd660('0x39')]=qs['filters'](_['pick'](_0x408491['query'],_0x45f7c6[_0xd660('0x3a')]));if(_0x408491[_0xd660('0x2f')]['filter']){_0x4e1ebf[_0xd660('0x39')]=_[_0xd660('0x3c')](_0x4e1ebf[_0xd660('0x39')],{'$or':_['map'](_0x4e1ebf[_0xd660('0x32')],function(_0x16ab9a){var _0x515b9f={};_0x515b9f[_0x16ab9a]={'$like':'%'+_0x408491[_0xd660('0x2f')]['filter']+'%'};return _0x515b9f;})});}_0x4e1ebf=_[_0xd660('0x3c')]({},_0x4e1ebf,_0x408491[_0xd660('0x3e')]);return _0x325885[_0xd660('0x4a')](_0x4e1ebf);}})[_0xd660('0x40')](function(_0x534e6e){if(_0x534e6e){_0x2a9855=_0x534e6e['length'];if(!_0x408491[_0xd660('0x2f')][_0xd660('0x35')](_0xd660('0x36'))){_0x4e1ebf[_0xd660('0x1c')]=qs[_0xd660('0x1c')](_0x408491[_0xd660('0x2f')][_0xd660('0x1c')]);_0x4e1ebf[_0xd660('0x1e')]=qs[_0xd660('0x1e')](_0x408491[_0xd660('0x2f')][_0xd660('0x1e')]);}return _0x325885[_0xd660('0x4a')](_0x4e1ebf);}})[_0xd660('0x40')](function(_0xc654cb){if(_0xc654cb){return _0xc654cb?{'count':_0x2a9855,'rows':_0xc654cb}:null;}})[_0xd660('0x40')](respondWithResult(_0x4ae3fb,null))[_0xd660('0x46')](handleError(_0x4ae3fb,null));};exports[_0xd660('0x4d')]=function(_0x273ca9,_0x1f063d,_0x41c233){if(_0x273ca9[_0xd660('0x48')]['id']){delete _0x273ca9[_0xd660('0x48')]['id'];}return db['DeskAccount'][_0xd660('0x4b')]({'where':{'id':_0x273ca9[_0xd660('0x45')]['id']}})[_0xd660('0x40')](handleEntityNotFound(_0x1f063d,null))[_0xd660('0x40')](function(_0x4798e2){if(_0x4798e2){_0x273ca9[_0xd660('0x48')][_0xd660('0x4e')]=_0x4798e2['id'];_0x273ca9[_0xd660('0x48')][_0xd660('0x4f')]=integrations['getSubjects'](_0x273ca9[_0xd660('0x48')][_0xd660('0x50')],_0x273ca9[_0xd660('0x48')][_0xd660('0x3d')]);_0x273ca9['body'][_0xd660('0x51')]=integrations[_0xd660('0x52')](_0x273ca9[_0xd660('0x48')]['channel'],_0x273ca9['body']['type']);return db['DeskConfiguration']['create'](_0x273ca9[_0xd660('0x48')],{'include':[{'model':db[_0xd660('0x53')],'as':'Subjects'},{'model':db[_0xd660('0x53')],'as':'Descriptions'}]});}return null;})[_0xd660('0x40')](respondWithResult(_0x1f063d,null))['catch'](handleError(_0x1f063d,null));};exports['getFields']=function(_0x59954a,_0x280511,_0x579338){var _0x1f39ae=[{'name':_0xd660('0x54'),'label':_0xd660('0x54'),'custom':![],'options':[{'name':0x1,'value':0x1},{'name':0x2,'value':0x2},{'name':0x3,'value':0x3},{'name':0x4,'value':0x4},{'name':0x5,'value':0x5},{'name':0x6,'value':0x6},{'name':0x7,'value':0x7},{'name':0x8,'value':0x8},{'name':0x9,'value':0x9},{'name':0xa,'value':0xa}]}];var _0x5351fd='';return db[_0xd660('0x3f')]['findOne']({'where':{'id':_0x59954a[_0xd660('0x45')]['id']},'attributes':['id',_0xd660('0x55'),'authType',_0xd660('0x56'),'password',_0xd660('0x57'),_0xd660('0x58'),_0xd660('0x59'),'tokenSecret']})[_0xd660('0x40')](handleEntityNotFound(_0x280511,null))[_0xd660('0x40')](function(_0x4380d4){if(_0x4380d4){_0x5351fd=_0x4380d4['remoteUri'];var _0x2d18c0=_0x5351fd['slice'](-0x1);if(_0x2d18c0==='/'){_0x5351fd=_0x5351fd[_0xd660('0x5a')](0x0,_0x5351fd[_0xd660('0x5b')](_0x2d18c0));}var _0x223eba={'method':_0xd660('0x5c'),'uri':util[_0xd660('0x5d')](_0xd660('0x5e'),_0x5351fd),'headers':{'Content-Type':_0xd660('0x5f'),'Accept':'application/json'},'json':!![]};if(_0x4380d4[_0xd660('0x60')]===_0xd660('0x61')){_0x223eba[_0xd660('0x62')][_0xd660('0x63')]=util[_0xd660('0x5d')](_0xd660('0x64'),new Buffer(util['format'](_0xd660('0x65'),_0x4380d4[_0xd660('0x56')],_0x4380d4[_0xd660('0x66')]))[_0xd660('0x67')](_0xd660('0x68')));}return rp(_0x223eba)[_0xd660('0x40')](function(_0x531644){return _0x1f39ae[_0xd660('0x69')](_[_0xd660('0x2b')](_0x531644[_0xd660('0x6a')][_0xd660('0x6b')],function(_0xa73ef4){return{'id':_0xa73ef4['name'],'name':_0xa73ef4[_0xd660('0x29')],'type':_0xa73ef4['type'],'active':_0xa73ef4['active'],'label':_0xa73ef4[_0xd660('0x6c')],'custom':!![]};}));});}})[_0xd660('0x40')](function(_0x23c65b){return{'count':_0x23c65b[_0xd660('0x34')],'rows':_0x23c65b};})[_0xd660('0x40')](respondWithResult(_0x280511,null))[_0xd660('0x46')](function(_0x40946f){var _0x15a617=_0x59954a[_0xd660('0x2f')][_0xd660('0x6d')]?0x1f4:_0x40946f[_0xd660('0x6e')]||0x1f4;logger['error'](_0xd660('0x6f'),_0xd660('0x70'),_0x15a617,JSON[_0xd660('0x71')](_0x40946f));delete _0x40946f[_0xd660('0x29')];if(_0x15a617===0x191){_0x15a617=0x190;}_0x280511[_0xd660('0x1a')](_0x15a617)[_0xd660('0x72')](_0x59954a[_0xd660('0x2f')][_0xd660('0x6d')]?{'message':'Wrong\x20credentials','statusCode':_0x40946f['statusCode']}:_0x40946f);});};
\ No newline at end of file
index 6c929e3..d59ed70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2465=['./intDeskAccount.attributes','exports','DeskAccount','int_desk_accounts','lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x51b87e,_0x50a6e6){var _0x3f030c=function(_0x305609){while(--_0x305609){_0x51b87e['push'](_0x51b87e['shift']());}};_0x3f030c(++_0x50a6e6);}(_0x2465,0xdc));var _0x5246=function(_0xe9fe84,_0x98db76){_0xe9fe84=_0xe9fe84-0x0;var _0x23ccf4=_0x2465[_0xe9fe84];return _0x23ccf4;};'use strict';var _=require(_0x5246('0x0'));var util=require('util');var logger=require(_0x5246('0x1'))(_0x5246('0x2'));var moment=require(_0x5246('0x3'));var BPromise=require(_0x5246('0x4'));var rp=require(_0x5246('0x5'));var fs=require('fs');var path=require(_0x5246('0x6'));var rimraf=require('rimraf');var config=require(_0x5246('0x7'));var attributes=require(_0x5246('0x8'));var integrations=require('../../components/integrations/configuration');module[_0x5246('0x9')]=function(_0x3ba7aa,_0x31e06c){return _0x3ba7aa['define'](_0x5246('0xa'),attributes,{'tableName':_0x5246('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x804f=['request-promise','rimraf','../../config/environment','./intDeskAccount.attributes','../../components/integrations/configuration','define','DeskAccount','int_desk_accounts','lodash','util','../../config/logger','api'];(function(_0x16c2b1,_0x36a70c){var _0x199ac4=function(_0x2f1802){while(--_0x2f1802){_0x16c2b1['push'](_0x16c2b1['shift']());}};_0x199ac4(++_0x36a70c);}(_0x804f,0x158));var _0xf804=function(_0x3d3ef7,_0x5616c2){_0x3d3ef7=_0x3d3ef7-0x0;var _0x99c02f=_0x804f[_0x3d3ef7];return _0x99c02f;};'use strict';var _=require(_0xf804('0x0'));var util=require(_0xf804('0x1'));var logger=require(_0xf804('0x2'))(_0xf804('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xf804('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf804('0x5'));var config=require(_0xf804('0x6'));var attributes=require(_0xf804('0x7'));var integrations=require(_0xf804('0x8'));module['exports']=function(_0x5e5e48,_0x12472a){return _0x5e5e48[_0xf804('0x9')](_0xf804('0xa'),attributes,{'tableName':_0xf804('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ce7b3c4..e258a09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf224=['map','debug','catch','ShowDeskAccount','DeskAccount','then','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','info','request\x20sent','stringify','error','code','DeskAccount,\x20%s,\x20%s','message','result','GetDeskAccount','findAll','options','raw','where','attributes','include','model'];(function(_0x275855,_0x45bbab){var _0x395d15=function(_0xca1c0b){while(--_0xca1c0b){_0x275855['push'](_0x275855['shift']());}};_0x395d15(++_0x45bbab);}(_0xf224,0x138));var _0x4f22=function(_0x59bea3,_0x5a914){_0x59bea3=_0x59bea3-0x0;var _0x1e0952=_0xf224[_0x59bea3];return _0x1e0952;};'use strict';var _=require('lodash');var util=require(_0x4f22('0x0'));var moment=require(_0x4f22('0x1'));var BPromise=require(_0x4f22('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4f22('0x3'));var db=require(_0x4f22('0x4'))['db'];var utils=require(_0x4f22('0x5'));var logger=require(_0x4f22('0x6'))(_0x4f22('0x7'));var config=require('../../config/environment');var jayson=require(_0x4f22('0x8'));var client=jayson[_0x4f22('0x9')][_0x4f22('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x7fd942,_0x2aef2c,_0x2555fa){return new BPromise(function(_0x32ac62,_0x254750){return client[_0x4f22('0xb')](_0x7fd942,_0x2555fa)['then'](function(_0x5c806f){logger[_0x4f22('0xc')]('DeskAccount,\x20%s,\x20%s',_0x2aef2c,'request\x20sent');logger['debug']('DeskAccount,\x20%s,\x20%s,\x20%s',_0x2aef2c,_0x4f22('0xd'),JSON[_0x4f22('0xe')](_0x5c806f));if(_0x5c806f[_0x4f22('0xf')]){if(_0x5c806f[_0x4f22('0xf')][_0x4f22('0x10')]===0x1f4){logger['error'](_0x4f22('0x11'),_0x2aef2c,_0x5c806f['error'][_0x4f22('0x12')]);return _0x254750(_0x5c806f[_0x4f22('0xf')][_0x4f22('0x12')]);}logger[_0x4f22('0xf')](_0x4f22('0x11'),_0x2aef2c,_0x5c806f['error']['message']);return _0x32ac62(_0x5c806f[_0x4f22('0xf')]['message']);}else{logger['info'](_0x4f22('0x11'),_0x2aef2c,_0x4f22('0xd'));_0x32ac62(_0x5c806f[_0x4f22('0x13')][_0x4f22('0x12')]);}})['catch'](function(_0x27168c){logger[_0x4f22('0xf')](_0x4f22('0x11'),_0x2aef2c,_0x27168c);_0x254750(_0x27168c);});});}exports[_0x4f22('0x14')]=function(_0x527034){var _0x52003d=this;return new Promise(function(_0x9148bd,_0x2ab477){return db['DeskAccount'][_0x4f22('0x15')]({'raw':_0x527034[_0x4f22('0x16')]?_0x527034[_0x4f22('0x16')][_0x4f22('0x17')]===undefined?!![]:![]:!![],'where':_0x527034[_0x4f22('0x16')]?_0x527034[_0x4f22('0x16')][_0x4f22('0x18')]||null:null,'attributes':_0x527034[_0x4f22('0x16')]?_0x527034[_0x4f22('0x16')][_0x4f22('0x19')]||null:null,'limit':_0x527034[_0x4f22('0x16')]?_0x527034['options']['limit']||null:null,'include':_0x527034[_0x4f22('0x16')]?_0x527034[_0x4f22('0x16')][_0x4f22('0x1a')]?_['map'](_0x527034[_0x4f22('0x16')]['include'],function(_0x154667){return{'model':db[_0x154667[_0x4f22('0x1b')]],'as':_0x154667['as'],'attributes':_0x154667[_0x4f22('0x19')],'include':_0x154667[_0x4f22('0x1a')]?_[_0x4f22('0x1c')](_0x154667[_0x4f22('0x1a')],function(_0x4ed129){return{'model':db[_0x4ed129[_0x4f22('0x1b')]],'as':_0x4ed129['as'],'attributes':_0x4ed129[_0x4f22('0x19')],'include':_0x4ed129[_0x4f22('0x1a')]?_['map'](_0x4ed129[_0x4f22('0x1a')],function(_0x50ddfe){return{'model':db[_0x50ddfe[_0x4f22('0x1b')]],'as':_0x50ddfe['as'],'attributes':_0x50ddfe[_0x4f22('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x40e20c){logger[_0x4f22('0xc')](_0x4f22('0x14'),_0x527034);logger[_0x4f22('0x1d')](_0x4f22('0x14'),_0x527034,JSON[_0x4f22('0xe')](_0x40e20c));_0x9148bd(_0x40e20c);})[_0x4f22('0x1e')](function(_0x373b8e){logger[_0x4f22('0xf')](_0x4f22('0x14'),_0x373b8e[_0x4f22('0x12')],_0x527034);_0x2ab477(_0x52003d[_0x4f22('0xf')](0x1f4,_0x373b8e[_0x4f22('0x12')]));});});};exports[_0x4f22('0x1f')]=function(_0x5307dc){var _0x47cf9e=this;return new Promise(function(_0x3ecf5d,_0x3ac918){return db[_0x4f22('0x20')]['find']({'raw':_0x5307dc[_0x4f22('0x16')]?_0x5307dc[_0x4f22('0x16')][_0x4f22('0x17')]===undefined?!![]:![]:!![],'where':_0x5307dc['options']?_0x5307dc[_0x4f22('0x16')][_0x4f22('0x18')]||null:null,'attributes':_0x5307dc[_0x4f22('0x16')]?_0x5307dc[_0x4f22('0x16')][_0x4f22('0x19')]||null:null,'include':_0x5307dc[_0x4f22('0x16')]?_0x5307dc[_0x4f22('0x16')][_0x4f22('0x1a')]?_[_0x4f22('0x1c')](_0x5307dc[_0x4f22('0x16')][_0x4f22('0x1a')],function(_0x90929a){return{'model':db[_0x90929a['model']],'as':_0x90929a['as'],'attributes':_0x90929a[_0x4f22('0x19')],'include':_0x90929a[_0x4f22('0x1a')]?_[_0x4f22('0x1c')](_0x90929a[_0x4f22('0x1a')],function(_0x6172e1){return{'model':db[_0x6172e1['model']],'as':_0x6172e1['as'],'attributes':_0x6172e1[_0x4f22('0x19')],'include':_0x6172e1['include']?_[_0x4f22('0x1c')](_0x6172e1[_0x4f22('0x1a')],function(_0x34de3f){return{'model':db[_0x34de3f['model']],'as':_0x34de3f['as'],'attributes':_0x34de3f[_0x4f22('0x19')]};}):[]};}):[]};}):[]:[]})[_0x4f22('0x21')](function(_0x3c7015){logger[_0x4f22('0xc')](_0x4f22('0x1f'),_0x5307dc);logger[_0x4f22('0x1d')]('ShowDeskAccount',_0x5307dc,JSON[_0x4f22('0xe')](_0x3c7015));_0x3ecf5d(_0x3c7015);})[_0x4f22('0x1e')](function(_0x19df0f){logger[_0x4f22('0xf')](_0x4f22('0x1f'),_0x19df0f[_0x4f22('0x12')],_0x5307dc);_0x3ac918(_0x47cf9e[_0x4f22('0xf')](0x1f4,_0x19df0f[_0x4f22('0x12')]));});});};
\ No newline at end of file
+var _0xa6bf=['GetDeskAccount','DeskAccount','findAll','options','raw','where','attributes','limit','include','map','model','stringify','ShowDeskAccount','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','info','DeskAccount,\x20%s,\x20%s','request\x20sent','debug','DeskAccount,\x20%s,\x20%s,\x20%s','error','message','result','catch'];(function(_0x496b02,_0x4cf688){var _0x358680=function(_0x3e103f){while(--_0x3e103f){_0x496b02['push'](_0x496b02['shift']());}};_0x358680(++_0x4cf688);}(_0xa6bf,0x76));var _0xfa6b=function(_0x4fdadb,_0x4bbdc9){_0x4fdadb=_0x4fdadb-0x0;var _0x212abd=_0xa6bf[_0x4fdadb];return _0x212abd;};'use strict';var _=require(_0xfa6b('0x0'));var util=require(_0xfa6b('0x1'));var moment=require(_0xfa6b('0x2'));var BPromise=require(_0xfa6b('0x3'));var rs=require(_0xfa6b('0x4'));var fs=require('fs');var Redis=require(_0xfa6b('0x5'));var db=require(_0xfa6b('0x6'))['db'];var utils=require(_0xfa6b('0x7'));var logger=require(_0xfa6b('0x8'))('rpc');var config=require(_0xfa6b('0x9'));var jayson=require(_0xfa6b('0xa'));var client=jayson[_0xfa6b('0xb')][_0xfa6b('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x3cb264,_0x13c118,_0x98280b){return new BPromise(function(_0x3bc531,_0x21395b){return client['request'](_0x3cb264,_0x98280b)['then'](function(_0x2f5cc){logger[_0xfa6b('0xd')](_0xfa6b('0xe'),_0x13c118,_0xfa6b('0xf'));logger[_0xfa6b('0x10')](_0xfa6b('0x11'),_0x13c118,_0xfa6b('0xf'),JSON['stringify'](_0x2f5cc));if(_0x2f5cc[_0xfa6b('0x12')]){if(_0x2f5cc[_0xfa6b('0x12')]['code']===0x1f4){logger[_0xfa6b('0x12')](_0xfa6b('0xe'),_0x13c118,_0x2f5cc[_0xfa6b('0x12')]['message']);return _0x21395b(_0x2f5cc[_0xfa6b('0x12')]['message']);}logger[_0xfa6b('0x12')](_0xfa6b('0xe'),_0x13c118,_0x2f5cc[_0xfa6b('0x12')][_0xfa6b('0x13')]);return _0x3bc531(_0x2f5cc[_0xfa6b('0x12')][_0xfa6b('0x13')]);}else{logger[_0xfa6b('0xd')](_0xfa6b('0xe'),_0x13c118,_0xfa6b('0xf'));_0x3bc531(_0x2f5cc[_0xfa6b('0x14')][_0xfa6b('0x13')]);}})[_0xfa6b('0x15')](function(_0x5483ee){logger['error'](_0xfa6b('0xe'),_0x13c118,_0x5483ee);_0x21395b(_0x5483ee);});});}exports[_0xfa6b('0x16')]=function(_0x42efa1){var _0x412c00=this;return new Promise(function(_0x4b4801,_0x1dc8f3){return db[_0xfa6b('0x17')][_0xfa6b('0x18')]({'raw':_0x42efa1['options']?_0x42efa1[_0xfa6b('0x19')][_0xfa6b('0x1a')]===undefined?!![]:![]:!![],'where':_0x42efa1[_0xfa6b('0x19')]?_0x42efa1['options'][_0xfa6b('0x1b')]||null:null,'attributes':_0x42efa1[_0xfa6b('0x19')]?_0x42efa1['options'][_0xfa6b('0x1c')]||null:null,'limit':_0x42efa1['options']?_0x42efa1['options'][_0xfa6b('0x1d')]||null:null,'include':_0x42efa1[_0xfa6b('0x19')]?_0x42efa1[_0xfa6b('0x19')][_0xfa6b('0x1e')]?_[_0xfa6b('0x1f')](_0x42efa1['options']['include'],function(_0x7d4907){return{'model':db[_0x7d4907['model']],'as':_0x7d4907['as'],'attributes':_0x7d4907[_0xfa6b('0x1c')],'include':_0x7d4907[_0xfa6b('0x1e')]?_[_0xfa6b('0x1f')](_0x7d4907[_0xfa6b('0x1e')],function(_0x35bed5){return{'model':db[_0x35bed5[_0xfa6b('0x20')]],'as':_0x35bed5['as'],'attributes':_0x35bed5['attributes'],'include':_0x35bed5['include']?_['map'](_0x35bed5[_0xfa6b('0x1e')],function(_0x5bcefa){return{'model':db[_0x5bcefa[_0xfa6b('0x20')]],'as':_0x5bcefa['as'],'attributes':_0x5bcefa[_0xfa6b('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5538dd){logger['info'](_0xfa6b('0x16'),_0x42efa1);logger[_0xfa6b('0x10')]('GetDeskAccount',_0x42efa1,JSON[_0xfa6b('0x21')](_0x5538dd));_0x4b4801(_0x5538dd);})['catch'](function(_0x15b996){logger['error'](_0xfa6b('0x16'),_0x15b996[_0xfa6b('0x13')],_0x42efa1);_0x1dc8f3(_0x412c00[_0xfa6b('0x12')](0x1f4,_0x15b996[_0xfa6b('0x13')]));});});};exports[_0xfa6b('0x22')]=function(_0x559ce5){var _0x224a30=this;return new Promise(function(_0x5fe51,_0x314323){return db['DeskAccount']['find']({'raw':_0x559ce5[_0xfa6b('0x19')]?_0x559ce5['options']['raw']===undefined?!![]:![]:!![],'where':_0x559ce5[_0xfa6b('0x19')]?_0x559ce5[_0xfa6b('0x19')][_0xfa6b('0x1b')]||null:null,'attributes':_0x559ce5[_0xfa6b('0x19')]?_0x559ce5[_0xfa6b('0x19')][_0xfa6b('0x1c')]||null:null,'include':_0x559ce5[_0xfa6b('0x19')]?_0x559ce5[_0xfa6b('0x19')]['include']?_[_0xfa6b('0x1f')](_0x559ce5[_0xfa6b('0x19')]['include'],function(_0x574f7d){return{'model':db[_0x574f7d[_0xfa6b('0x20')]],'as':_0x574f7d['as'],'attributes':_0x574f7d[_0xfa6b('0x1c')],'include':_0x574f7d[_0xfa6b('0x1e')]?_['map'](_0x574f7d['include'],function(_0x111a91){return{'model':db[_0x111a91['model']],'as':_0x111a91['as'],'attributes':_0x111a91[_0xfa6b('0x1c')],'include':_0x111a91[_0xfa6b('0x1e')]?_['map'](_0x111a91[_0xfa6b('0x1e')],function(_0x33e1bb){return{'model':db[_0x33e1bb[_0xfa6b('0x20')]],'as':_0x33e1bb['as'],'attributes':_0x33e1bb['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x260b0c){logger['info'](_0xfa6b('0x22'),_0x559ce5);logger['debug'](_0xfa6b('0x22'),_0x559ce5,JSON['stringify'](_0x260b0c));_0x5fe51(_0x260b0c);})['catch'](function(_0x336d8f){logger['error'](_0xfa6b('0x22'),_0x336d8f[_0xfa6b('0x13')],_0x559ce5);_0x314323(_0x224a30[_0xfa6b('0x12')](0x1f4,_0x336d8f[_0xfa6b('0x13')]));});});};
\ No newline at end of file
index fe2b319..4b84d09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['../../config/environment','./intDeskConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','setTags','put','/:id','update','destroy','exports','multer','util','Router','fs-extra','../../components/interaction/service'];(function(_0x1bb58c,_0x2c8a4d){var _0x277586=function(_0x11fd4c){while(--_0x11fd4c){_0x1bb58c['push'](_0x1bb58c['shift']());}};_0x277586(++_0x2c8a4d);}(_0x55ca,0x126));var _0xa55c=function(_0x117713,_0x1b3f0c){_0x117713=_0x117713-0x0;var _0x310d68=_0x55ca[_0x117713];return _0x310d68;};'use strict';var multer=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa55c('0x2')]();var fs_extra=require(_0xa55c('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var controller=require(_0xa55c('0x6'));router[_0xa55c('0x7')]('/',auth[_0xa55c('0x8')](),controller[_0xa55c('0x9')]);router[_0xa55c('0x7')]('/:id',auth[_0xa55c('0x8')](),controller[_0xa55c('0xa')]);router['get'](_0xa55c('0xb'),auth[_0xa55c('0x8')](),controller['getFields']);router['get'](_0xa55c('0xc'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xd')]);router[_0xa55c('0x7')](_0xa55c('0xe'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xf')]);router[_0xa55c('0x7')](_0xa55c('0x10'),auth[_0xa55c('0x8')](),controller['getTags']);router['post']('/',auth[_0xa55c('0x8')](),controller['create']);router['post']('/:id/tags',auth[_0xa55c('0x8')](),controller[_0xa55c('0x11')]);router[_0xa55c('0x12')](_0xa55c('0x13'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x14')]);router['delete'](_0xa55c('0x13'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x15')]);module[_0xa55c('0x16')]=router;
\ No newline at end of file
+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(_0x1c9c67,_0x29be55){var _0x3e59c9=function(_0x538b0a){while(--_0x538b0a){_0x1c9c67['push'](_0x1c9c67['shift']());}};_0x3e59c9(++_0x29be55);}(_0x008c,0x188));var _0xc008=function(_0x470e3f,_0x3b513d){_0x470e3f=_0x470e3f-0x0;var _0x4fd22b=_0x008c[_0x470e3f];return _0x4fd22b;};'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 c5d3394..e999a94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0065=['STRING','sequelize','exports'];(function(_0x3f26a8,_0x444c20){var _0x5c1568=function(_0x11b078){while(--_0x11b078){_0x3f26a8['push'](_0x3f26a8['shift']());}};_0x5c1568(++_0x444c20);}(_0x0065,0x19c));var _0x5006=function(_0x3951e0,_0x2fa78){_0x3951e0=_0x3951e0-0x0;var _0x2da38e=_0x0065[_0x3951e0];return _0x2da38e;};'use strict';var Sequelize=require(_0x5006('0x0'));module[_0x5006('0x1')]={'name':{'type':Sequelize[_0x5006('0x2')]},'description':{'type':Sequelize[_0x5006('0x2')]}};
\ No newline at end of file
+var _0x74fc=['STRING','sequelize','exports'];(function(_0x4a0ce4,_0x122a45){var _0x1bab7a=function(_0x4642b6){while(--_0x4642b6){_0x4a0ce4['push'](_0x4a0ce4['shift']());}};_0x1bab7a(++_0x122a45);}(_0x74fc,0x18d));var _0xc74f=function(_0x1cb577,_0x1a0fc1){_0x1cb577=_0x1cb577-0x0;var _0x2963a5=_0x74fc[_0x1cb577];return _0x2963a5;};'use strict';var Sequelize=require(_0xc74f('0x0'));module[_0xc74f('0x1')]={'name':{'type':Sequelize[_0xc74f('0x2')]},'description':{'type':Sequelize[_0xc74f('0x2')]}};
\ No newline at end of file
index ad97bbd..205ed26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a34=['ejs','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','then','destroy','end','error','stack','name','map','DeskConfiguration','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','getFields','findOne','DeskField','nolimit','getSubjects','getDescriptions','getTags','setTags','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0x6a34,0x9f));var _0x46a3=function(_0x2c9af0,_0x5a6f07){_0x2c9af0=_0x2c9af0-0x0;var _0x380d91=_0x6a34[_0x2c9af0];return _0x380d91;};'use strict';var emlformat=require(_0x46a3('0x0'));var rimraf=require(_0x46a3('0x1'));var zipdir=require(_0x46a3('0x2'));var jsonpatch=require(_0x46a3('0x3'));var rp=require(_0x46a3('0x4'));var moment=require(_0x46a3('0x5'));var BPromise=require(_0x46a3('0x6'));var Mustache=require(_0x46a3('0x7'));var util=require('util');var path=require(_0x46a3('0x8'));var sox=require(_0x46a3('0x9'));var csv=require(_0x46a3('0xa'));var ejs=require(_0x46a3('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x46a3('0xc'));var squel=require(_0x46a3('0xd'));var crypto=require(_0x46a3('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x46a3('0xf'));var toCsv=require(_0x46a3('0xa'));var querystring=require(_0x46a3('0x10'));var Papa=require('papaparse');var Redis=require(_0x46a3('0x11'));var authService=require(_0x46a3('0x12'));var qs=require(_0x46a3('0x13'));var as=require(_0x46a3('0x14'));var hardwareService=require(_0x46a3('0x15'));var logger=require(_0x46a3('0x16'))('api');var utils=require(_0x46a3('0x17'));var config=require(_0x46a3('0x18'));var licenseUtil=require(_0x46a3('0x19'));var db=require(_0x46a3('0x1a'))['db'];function respondWithStatusCode(_0x53bce4,_0x37d47c){_0x37d47c=_0x37d47c||0xcc;return function(_0x18052d){if(_0x18052d){return _0x53bce4[_0x46a3('0x1b')](_0x37d47c);}return _0x53bce4[_0x46a3('0x1c')](_0x37d47c)['end']();};}function respondWithResult(_0x567213,_0xde26fb){_0xde26fb=_0xde26fb||0xc8;return function(_0x2692e7){if(_0x2692e7){return _0x567213[_0x46a3('0x1c')](_0xde26fb)[_0x46a3('0x1d')](_0x2692e7);}};}function respondWithFilteredResult(_0xb777ae,_0x138d89){return function(_0x40278c){if(_0x40278c){var _0x5e12cf=typeof _0x138d89[_0x46a3('0x1e')]==='undefined'&&typeof _0x138d89[_0x46a3('0x1f')]===_0x46a3('0x20');var _0x396a3d=_0x40278c[_0x46a3('0x21')];var _0x1e68c8=_0x5e12cf?0x0:_0x138d89[_0x46a3('0x1e')];var _0x134017=_0x5e12cf?_0x40278c[_0x46a3('0x21')]:_0x138d89[_0x46a3('0x1e')]+_0x138d89['limit'];var _0x182338;if(_0x134017>=_0x396a3d){_0x134017=_0x396a3d;_0x182338=0xc8;}else{_0x182338=0xce;}_0xb777ae[_0x46a3('0x1c')](_0x182338);return _0xb777ae[_0x46a3('0x22')](_0x46a3('0x23'),_0x1e68c8+'-'+_0x134017+'/'+_0x396a3d)['json'](_0x40278c);}return null;};}function patchUpdates(_0x29a9f7){return function(_0x2063aa){try{jsonpatch['apply'](_0x2063aa,_0x29a9f7,!![]);}catch(_0x442e1a){return BPromise[_0x46a3('0x24')](_0x442e1a);}return _0x2063aa[_0x46a3('0x25')]();};}function saveUpdates(_0x2505bc,_0x3f6d59){return function(_0x23fc1b){if(_0x23fc1b){return _0x23fc1b[_0x46a3('0x26')](_0x2505bc)[_0x46a3('0x27')](function(_0x86edcf){return _0x86edcf;});}return null;};}function removeEntity(_0x28992f,_0x1541e9){return function(_0x2205ac){if(_0x2205ac){return _0x2205ac[_0x46a3('0x28')]()[_0x46a3('0x27')](function(){_0x28992f[_0x46a3('0x1c')](0xcc)[_0x46a3('0x29')]();});}};}function handleEntityNotFound(_0x1289fa,_0x2633fc){return function(_0x16bad3){if(!_0x16bad3){_0x1289fa[_0x46a3('0x1b')](0x194);}return _0x16bad3;};}function handleError(_0x373bf9,_0x197993){_0x197993=_0x197993||0x1f4;return function(_0x466e5a){logger[_0x46a3('0x2a')](_0x466e5a[_0x46a3('0x2b')]);if(_0x466e5a[_0x46a3('0x2c')]){delete _0x466e5a[_0x46a3('0x2c')];}_0x373bf9['status'](_0x197993)['send'](_0x466e5a);};}exports['index']=function(_0xfc67,_0x406046){var _0x442969={},_0x2f8d94={},_0xa0ab53={'count':0x0,'rows':[]};var _0x369963=_[_0x46a3('0x2d')](db[_0x46a3('0x2e')][_0x46a3('0x2f')],function(_0x43f618){return{'name':_0x43f618[_0x46a3('0x30')],'type':_0x43f618[_0x46a3('0x31')][_0x46a3('0x32')]};});_0x2f8d94[_0x46a3('0x33')]=_[_0x46a3('0x2d')](_0x369963,_0x46a3('0x2c'));_0x2f8d94[_0x46a3('0x34')]=_[_0x46a3('0x35')](_0xfc67[_0x46a3('0x34')]);_0x2f8d94['filters']=_[_0x46a3('0x36')](_0x2f8d94[_0x46a3('0x33')],_0x2f8d94[_0x46a3('0x34')]);_0x442969[_0x46a3('0x37')]=_[_0x46a3('0x36')](_0x2f8d94[_0x46a3('0x33')],qs[_0x46a3('0x38')](_0xfc67[_0x46a3('0x34')][_0x46a3('0x38')]));_0x442969[_0x46a3('0x37')]=_0x442969['attributes'][_0x46a3('0x39')]?_0x442969[_0x46a3('0x37')]:_0x2f8d94[_0x46a3('0x33')];if(!_0xfc67[_0x46a3('0x34')][_0x46a3('0x3a')]('nolimit')){_0x442969[_0x46a3('0x1f')]=qs['limit'](_0xfc67[_0x46a3('0x34')][_0x46a3('0x1f')]);_0x442969['offset']=qs[_0x46a3('0x1e')](_0xfc67[_0x46a3('0x34')][_0x46a3('0x1e')]);}_0x442969[_0x46a3('0x3b')]=qs[_0x46a3('0x3c')](_0xfc67['query'][_0x46a3('0x3c')]);_0x442969[_0x46a3('0x3d')]=qs[_0x46a3('0x3e')](_[_0x46a3('0x3f')](_0xfc67['query'],_0x2f8d94['filters']),_0x369963);if(_0xfc67[_0x46a3('0x34')][_0x46a3('0x40')]){_0x442969['where']=_['merge'](_0x442969[_0x46a3('0x3d')],{'$or':_[_0x46a3('0x2d')](_0x369963,function(_0x57a5b6){if(_0x57a5b6[_0x46a3('0x31')]!=='VIRTUAL'){var _0x501b5b={};_0x501b5b[_0x57a5b6[_0x46a3('0x2c')]]={'$like':'%'+_0xfc67['query'][_0x46a3('0x40')]+'%'};return _0x501b5b;}})});}_0x442969=_[_0x46a3('0x41')]({},_0x442969,_0xfc67['options']);var _0x42bfee={'where':_0x442969[_0x46a3('0x3d')]};return db[_0x46a3('0x2e')][_0x46a3('0x21')](_0x42bfee)[_0x46a3('0x27')](function(_0x360e7c){_0xa0ab53['count']=_0x360e7c;if(_0xfc67[_0x46a3('0x34')][_0x46a3('0x42')]){_0x442969[_0x46a3('0x43')]=[{'all':!![]}];}return db[_0x46a3('0x2e')][_0x46a3('0x44')](_0x442969);})[_0x46a3('0x27')](function(_0x35a7fd){_0xa0ab53[_0x46a3('0x45')]=_0x35a7fd;return _0xa0ab53;})['then'](respondWithFilteredResult(_0x406046,_0x442969))[_0x46a3('0x46')](handleError(_0x406046,null));};exports[_0x46a3('0x47')]=function(_0x1c7902,_0x5b0047){var _0x2d9efe={'raw':![],'where':{'id':_0x1c7902[_0x46a3('0x48')]['id']}},_0x482fec={};_0x482fec['model']=_[_0x46a3('0x35')](db['DeskConfiguration'][_0x46a3('0x2f')]);_0x482fec[_0x46a3('0x34')]=_[_0x46a3('0x35')](_0x1c7902[_0x46a3('0x34')]);_0x482fec['filters']=_['intersection'](_0x482fec[_0x46a3('0x33')],_0x482fec['query']);_0x2d9efe[_0x46a3('0x37')]=_[_0x46a3('0x36')](_0x482fec[_0x46a3('0x33')],qs['fields'](_0x1c7902[_0x46a3('0x34')]['fields']));_0x2d9efe[_0x46a3('0x37')]=_0x2d9efe[_0x46a3('0x37')][_0x46a3('0x39')]?_0x2d9efe[_0x46a3('0x37')]:_0x482fec[_0x46a3('0x33')];if(_0x1c7902[_0x46a3('0x34')][_0x46a3('0x42')]){_0x2d9efe[_0x46a3('0x43')]=[{'all':!![]}];}_0x2d9efe=_[_0x46a3('0x41')]({},_0x2d9efe,_0x1c7902[_0x46a3('0x49')]);return db[_0x46a3('0x2e')][_0x46a3('0x4a')](_0x2d9efe)['then'](handleEntityNotFound(_0x5b0047,null))[_0x46a3('0x27')](respondWithResult(_0x5b0047,null))[_0x46a3('0x46')](handleError(_0x5b0047,null));};exports[_0x46a3('0x4b')]=function(_0x1bf9c2,_0x3d5d84){return db[_0x46a3('0x2e')][_0x46a3('0x4b')](_0x1bf9c2[_0x46a3('0x4c')],{})[_0x46a3('0x27')](respondWithResult(_0x3d5d84,0xc9))[_0x46a3('0x46')](handleError(_0x3d5d84,null));};exports['update']=function(_0x1bffd2,_0x102f38){if(_0x1bffd2[_0x46a3('0x4c')]['id']){delete _0x1bffd2['body']['id'];}return db['DeskConfiguration'][_0x46a3('0x4a')]({'where':{'id':_0x1bffd2[_0x46a3('0x48')]['id']}})['then'](handleEntityNotFound(_0x102f38,null))[_0x46a3('0x27')](saveUpdates(_0x1bffd2['body'],null))['then'](respondWithResult(_0x102f38,null))['catch'](handleError(_0x102f38,null));};exports[_0x46a3('0x28')]=function(_0x57b218,_0x5a3b5f){return db[_0x46a3('0x2e')]['find']({'where':{'id':_0x57b218['params']['id']}})[_0x46a3('0x27')](handleEntityNotFound(_0x5a3b5f,null))[_0x46a3('0x27')](removeEntity(_0x5a3b5f,null))[_0x46a3('0x46')](handleError(_0x5a3b5f,null));};exports[_0x46a3('0x4d')]=function(_0x25ad40,_0x218614,_0x1ea3d2){var _0x3d209f={};var _0x355425={};var _0x4a11c5;var _0x5b06d0;return db[_0x46a3('0x2e')][_0x46a3('0x4e')]({'where':{'id':_0x25ad40[_0x46a3('0x48')]['id']}})[_0x46a3('0x27')](handleEntityNotFound(_0x218614,null))['then'](function(_0x510f90){if(_0x510f90){_0x4a11c5=_0x510f90;_0x355425[_0x46a3('0x33')]=_['keys'](db[_0x46a3('0x4f')][_0x46a3('0x2f')]);_0x355425[_0x46a3('0x34')]=_[_0x46a3('0x35')](_0x25ad40[_0x46a3('0x34')]);_0x355425[_0x46a3('0x3e')]=_[_0x46a3('0x36')](_0x355425[_0x46a3('0x33')],_0x355425['query']);_0x3d209f[_0x46a3('0x37')]=_[_0x46a3('0x36')](_0x355425[_0x46a3('0x33')],qs[_0x46a3('0x38')](_0x25ad40[_0x46a3('0x34')][_0x46a3('0x38')]));_0x3d209f[_0x46a3('0x37')]=_0x3d209f['attributes'][_0x46a3('0x39')]?_0x3d209f[_0x46a3('0x37')]:_0x355425[_0x46a3('0x33')];_0x3d209f['order']=qs[_0x46a3('0x3c')](_0x25ad40[_0x46a3('0x34')][_0x46a3('0x3c')]);_0x3d209f[_0x46a3('0x3d')]=qs['filters'](_[_0x46a3('0x3f')](_0x25ad40[_0x46a3('0x34')],_0x355425[_0x46a3('0x3e')]));if(_0x25ad40[_0x46a3('0x34')][_0x46a3('0x40')]){_0x3d209f[_0x46a3('0x3d')]=_[_0x46a3('0x41')](_0x3d209f[_0x46a3('0x3d')],{'$or':_[_0x46a3('0x2d')](_0x3d209f[_0x46a3('0x37')],function(_0x938993){var _0x30d34e={};_0x30d34e[_0x938993]={'$like':'%'+_0x25ad40[_0x46a3('0x34')][_0x46a3('0x40')]+'%'};return _0x30d34e;})});}_0x3d209f=_[_0x46a3('0x41')]({},_0x3d209f,_0x25ad40[_0x46a3('0x49')]);return _0x4a11c5[_0x46a3('0x4d')](_0x3d209f);}})['then'](function(_0x2ce79f){if(_0x2ce79f){_0x5b06d0=_0x2ce79f[_0x46a3('0x39')];if(!_0x25ad40[_0x46a3('0x34')][_0x46a3('0x3a')](_0x46a3('0x50'))){_0x3d209f[_0x46a3('0x1f')]=qs[_0x46a3('0x1f')](_0x25ad40[_0x46a3('0x34')][_0x46a3('0x1f')]);_0x3d209f[_0x46a3('0x1e')]=qs[_0x46a3('0x1e')](_0x25ad40[_0x46a3('0x34')][_0x46a3('0x1e')]);}return _0x4a11c5[_0x46a3('0x4d')](_0x3d209f);}})[_0x46a3('0x27')](function(_0x1ce0f8){if(_0x1ce0f8){return _0x1ce0f8?{'count':_0x5b06d0,'rows':_0x1ce0f8}:null;}})[_0x46a3('0x27')](respondWithResult(_0x218614,null))['catch'](handleError(_0x218614,null));};exports[_0x46a3('0x51')]=function(_0x42fbad,_0x476b6d,_0x3057b4){var _0x1ff2aa={};var _0x1f4b36={};var _0x4cb0a1;var _0x2f3338;return db[_0x46a3('0x2e')][_0x46a3('0x4e')]({'where':{'id':_0x42fbad['params']['id']}})['then'](handleEntityNotFound(_0x476b6d,null))[_0x46a3('0x27')](function(_0xdd64ce){if(_0xdd64ce){_0x4cb0a1=_0xdd64ce;_0x1f4b36[_0x46a3('0x33')]=_[_0x46a3('0x35')](db['DeskField']['rawAttributes']);_0x1f4b36[_0x46a3('0x34')]=_[_0x46a3('0x35')](_0x42fbad[_0x46a3('0x34')]);_0x1f4b36['filters']=_['intersection'](_0x1f4b36['model'],_0x1f4b36[_0x46a3('0x34')]);_0x1ff2aa[_0x46a3('0x37')]=_['intersection'](_0x1f4b36[_0x46a3('0x33')],qs['fields'](_0x42fbad[_0x46a3('0x34')][_0x46a3('0x38')]));_0x1ff2aa[_0x46a3('0x37')]=_0x1ff2aa[_0x46a3('0x37')][_0x46a3('0x39')]?_0x1ff2aa['attributes']:_0x1f4b36[_0x46a3('0x33')];_0x1ff2aa[_0x46a3('0x3b')]=qs[_0x46a3('0x3c')](_0x42fbad['query'][_0x46a3('0x3c')]);_0x1ff2aa['where']=qs['filters'](_[_0x46a3('0x3f')](_0x42fbad[_0x46a3('0x34')],_0x1f4b36[_0x46a3('0x3e')]));if(_0x42fbad[_0x46a3('0x34')]['filter']){_0x1ff2aa[_0x46a3('0x3d')]=_[_0x46a3('0x41')](_0x1ff2aa[_0x46a3('0x3d')],{'$or':_[_0x46a3('0x2d')](_0x1ff2aa['attributes'],function(_0x40eda2){var _0x2c7cdb={};_0x2c7cdb[_0x40eda2]={'$like':'%'+_0x42fbad[_0x46a3('0x34')][_0x46a3('0x40')]+'%'};return _0x2c7cdb;})});}_0x1ff2aa=_[_0x46a3('0x41')]({},_0x1ff2aa,_0x42fbad[_0x46a3('0x49')]);return _0x4cb0a1[_0x46a3('0x51')](_0x1ff2aa);}})[_0x46a3('0x27')](function(_0xaca353){if(_0xaca353){_0x2f3338=_0xaca353[_0x46a3('0x39')];if(!_0x42fbad['query']['hasOwnProperty'](_0x46a3('0x50'))){_0x1ff2aa[_0x46a3('0x1f')]=qs['limit'](_0x42fbad[_0x46a3('0x34')]['limit']);_0x1ff2aa[_0x46a3('0x1e')]=qs[_0x46a3('0x1e')](_0x42fbad[_0x46a3('0x34')][_0x46a3('0x1e')]);}return _0x4cb0a1[_0x46a3('0x51')](_0x1ff2aa);}})[_0x46a3('0x27')](function(_0x59cf58){if(_0x59cf58){return _0x59cf58?{'count':_0x2f3338,'rows':_0x59cf58}:null;}})[_0x46a3('0x27')](respondWithResult(_0x476b6d,null))[_0x46a3('0x46')](handleError(_0x476b6d,null));};exports[_0x46a3('0x52')]=function(_0x2974bf,_0x5a21f4,_0x297dcd){var _0xe113c4={};var _0x13f5d1={};var _0x284f46;var _0x41236d;return db[_0x46a3('0x2e')]['findOne']({'where':{'id':_0x2974bf[_0x46a3('0x48')]['id']}})[_0x46a3('0x27')](handleEntityNotFound(_0x5a21f4,null))[_0x46a3('0x27')](function(_0x51bd77){if(_0x51bd77){_0x284f46=_0x51bd77;_0x13f5d1[_0x46a3('0x33')]=_[_0x46a3('0x35')](db[_0x46a3('0x4f')][_0x46a3('0x2f')]);_0x13f5d1[_0x46a3('0x34')]=_[_0x46a3('0x35')](_0x2974bf[_0x46a3('0x34')]);_0x13f5d1[_0x46a3('0x3e')]=_[_0x46a3('0x36')](_0x13f5d1[_0x46a3('0x33')],_0x13f5d1[_0x46a3('0x34')]);_0xe113c4[_0x46a3('0x37')]=_[_0x46a3('0x36')](_0x13f5d1[_0x46a3('0x33')],qs[_0x46a3('0x38')](_0x2974bf['query']['fields']));_0xe113c4[_0x46a3('0x37')]=_0xe113c4[_0x46a3('0x37')][_0x46a3('0x39')]?_0xe113c4['attributes']:_0x13f5d1['model'];_0xe113c4[_0x46a3('0x3b')]=qs[_0x46a3('0x3c')](_0x2974bf[_0x46a3('0x34')]['sort']);_0xe113c4['where']=qs[_0x46a3('0x3e')](_[_0x46a3('0x3f')](_0x2974bf['query'],_0x13f5d1[_0x46a3('0x3e')]));if(_0x2974bf[_0x46a3('0x34')][_0x46a3('0x40')]){_0xe113c4[_0x46a3('0x3d')]=_[_0x46a3('0x41')](_0xe113c4[_0x46a3('0x3d')],{'$or':_[_0x46a3('0x2d')](_0xe113c4[_0x46a3('0x37')],function(_0x563943){var _0x224f64={};_0x224f64[_0x563943]={'$like':'%'+_0x2974bf['query']['filter']+'%'};return _0x224f64;})});}_0xe113c4=_[_0x46a3('0x41')]({},_0xe113c4,_0x2974bf['options']);return _0x284f46[_0x46a3('0x52')](_0xe113c4);}})[_0x46a3('0x27')](function(_0x4111dd){if(_0x4111dd){_0x41236d=_0x4111dd[_0x46a3('0x39')];if(!_0x2974bf[_0x46a3('0x34')][_0x46a3('0x3a')]('nolimit')){_0xe113c4[_0x46a3('0x1f')]=qs['limit'](_0x2974bf[_0x46a3('0x34')][_0x46a3('0x1f')]);_0xe113c4['offset']=qs[_0x46a3('0x1e')](_0x2974bf['query']['offset']);}return _0x284f46[_0x46a3('0x52')](_0xe113c4);}})[_0x46a3('0x27')](function(_0x381e49){if(_0x381e49){return _0x381e49?{'count':_0x41236d,'rows':_0x381e49}:null;}})[_0x46a3('0x27')](respondWithResult(_0x5a21f4,null))['catch'](handleError(_0x5a21f4,null));};exports[_0x46a3('0x53')]=function(_0x27a634,_0x4da299,_0x27103d){var _0xd6753a={};var _0xd0385={};var _0x3e23e9;var _0x39e45e;return db['DeskConfiguration'][_0x46a3('0x4e')]({'where':{'id':_0x27a634[_0x46a3('0x48')]['id']}})[_0x46a3('0x27')](handleEntityNotFound(_0x4da299,null))['then'](function(_0x1b8e8f){if(_0x1b8e8f){_0x3e23e9=_0x1b8e8f;_0xd0385['model']=_[_0x46a3('0x35')](db['Tag'][_0x46a3('0x2f')]);_0xd0385[_0x46a3('0x34')]=_[_0x46a3('0x35')](_0x27a634[_0x46a3('0x34')]);_0xd0385[_0x46a3('0x3e')]=_[_0x46a3('0x36')](_0xd0385[_0x46a3('0x33')],_0xd0385[_0x46a3('0x34')]);_0xd6753a[_0x46a3('0x37')]=_[_0x46a3('0x36')](_0xd0385[_0x46a3('0x33')],qs[_0x46a3('0x38')](_0x27a634[_0x46a3('0x34')][_0x46a3('0x38')]));_0xd6753a[_0x46a3('0x37')]=_0xd6753a[_0x46a3('0x37')][_0x46a3('0x39')]?_0xd6753a[_0x46a3('0x37')]:_0xd0385[_0x46a3('0x33')];_0xd6753a['order']=qs[_0x46a3('0x3c')](_0x27a634[_0x46a3('0x34')][_0x46a3('0x3c')]);_0xd6753a[_0x46a3('0x3d')]=qs[_0x46a3('0x3e')](_[_0x46a3('0x3f')](_0x27a634['query'],_0xd0385[_0x46a3('0x3e')]));if(_0x27a634[_0x46a3('0x34')]['filter']){_0xd6753a[_0x46a3('0x3d')]=_['merge'](_0xd6753a[_0x46a3('0x3d')],{'$or':_['map'](_0xd6753a[_0x46a3('0x37')],function(_0x13e678){var _0x4a06e6={};_0x4a06e6[_0x13e678]={'$like':'%'+_0x27a634[_0x46a3('0x34')][_0x46a3('0x40')]+'%'};return _0x4a06e6;})});}_0xd6753a=_[_0x46a3('0x41')]({},_0xd6753a,_0x27a634[_0x46a3('0x49')]);return _0x3e23e9[_0x46a3('0x53')](_0xd6753a);}})[_0x46a3('0x27')](function(_0x5bb03f){if(_0x5bb03f){_0x39e45e=_0x5bb03f[_0x46a3('0x39')];if(!_0x27a634[_0x46a3('0x34')][_0x46a3('0x3a')](_0x46a3('0x50'))){_0xd6753a[_0x46a3('0x1f')]=qs[_0x46a3('0x1f')](_0x27a634['query'][_0x46a3('0x1f')]);_0xd6753a['offset']=qs['offset'](_0x27a634[_0x46a3('0x34')][_0x46a3('0x1e')]);}return _0x3e23e9[_0x46a3('0x53')](_0xd6753a);}})[_0x46a3('0x27')](function(_0x337893){if(_0x337893){return _0x337893?{'count':_0x39e45e,'rows':_0x337893}:null;}})[_0x46a3('0x27')](respondWithResult(_0x4da299,null))[_0x46a3('0x46')](handleError(_0x4da299,null));};exports['setTags']=function(_0x225dbe,_0x2212ad,_0x598283){if(_0x225dbe['body']['id']){delete _0x225dbe[_0x46a3('0x4c')]['id'];}return db[_0x46a3('0x2e')][_0x46a3('0x4e')]({'where':{'id':_0x225dbe[_0x46a3('0x48')]['id']}})[_0x46a3('0x27')](handleEntityNotFound(_0x2212ad,null))[_0x46a3('0x27')](function(_0x8129ff){if(_0x8129ff){return _0x8129ff[_0x46a3('0x54')](_0x225dbe[_0x46a3('0x4c')]['ids']||[]);}return null;})[_0x46a3('0x27')](respondWithResult(_0x2212ad,null))[_0x46a3('0x46')](handleError(_0x2212ad,null));};
\ No newline at end of file
+var _0x7cae=['to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','apply','reject','save','update','then','destroy','error','stack','send','index','map','DeskConfiguration','rawAttributes','type','key','name','keys','query','filters','intersection','model','attributes','fields','nolimit','limit','order','sort','where','pick','VIRTUAL','filter','options','include','findAll','rows','catch','includeAll','merge','find','create','body','params','getFields','findOne','DeskField','length','hasOwnProperty','getSubjects','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox'];(function(_0x355ce8,_0x5f1d0a){var _0x1db8b8=function(_0x277eb2){while(--_0x277eb2){_0x355ce8['push'](_0x355ce8['shift']());}};_0x1db8b8(++_0x5f1d0a);}(_0x7cae,0x1b2));var _0xe7ca=function(_0x4722ae,_0x57d118){_0x4722ae=_0x4722ae-0x0;var _0x32c256=_0x7cae[_0x4722ae];return _0x32c256;};'use strict';var emlformat=require(_0xe7ca('0x0'));var rimraf=require(_0xe7ca('0x1'));var zipdir=require(_0xe7ca('0x2'));var jsonpatch=require(_0xe7ca('0x3'));var rp=require(_0xe7ca('0x4'));var moment=require(_0xe7ca('0x5'));var BPromise=require(_0xe7ca('0x6'));var Mustache=require(_0xe7ca('0x7'));var util=require(_0xe7ca('0x8'));var path=require(_0xe7ca('0x9'));var sox=require(_0xe7ca('0xa'));var csv=require(_0xe7ca('0xb'));var ejs=require(_0xe7ca('0xc'));var fs=require('fs');var fs_extra=require(_0xe7ca('0xd'));var _=require(_0xe7ca('0xe'));var squel=require(_0xe7ca('0xf'));var crypto=require('crypto');var jsforce=require(_0xe7ca('0x10'));var deskjs=require(_0xe7ca('0x11'));var toCsv=require(_0xe7ca('0xb'));var querystring=require(_0xe7ca('0x12'));var Papa=require(_0xe7ca('0x13'));var Redis=require(_0xe7ca('0x14'));var authService=require(_0xe7ca('0x15'));var qs=require(_0xe7ca('0x16'));var as=require(_0xe7ca('0x17'));var hardwareService=require(_0xe7ca('0x18'));var logger=require(_0xe7ca('0x19'))(_0xe7ca('0x1a'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xe7ca('0x1b'));var db=require(_0xe7ca('0x1c'))['db'];function respondWithStatusCode(_0x43f556,_0x596590){_0x596590=_0x596590||0xcc;return function(_0x76c597){if(_0x76c597){return _0x43f556[_0xe7ca('0x1d')](_0x596590);}return _0x43f556[_0xe7ca('0x1e')](_0x596590)[_0xe7ca('0x1f')]();};}function respondWithResult(_0x286b5f,_0x38f731){_0x38f731=_0x38f731||0xc8;return function(_0x52de8b){if(_0x52de8b){return _0x286b5f[_0xe7ca('0x1e')](_0x38f731)[_0xe7ca('0x20')](_0x52de8b);}};}function respondWithFilteredResult(_0x2723e6,_0x473c12){return function(_0x131783){if(_0x131783){var _0x54094f=typeof _0x473c12[_0xe7ca('0x21')]===_0xe7ca('0x22')&&typeof _0x473c12['limit']===_0xe7ca('0x22');var _0x48d6b6=_0x131783[_0xe7ca('0x23')];var _0x3ec102=_0x54094f?0x0:_0x473c12['offset'];var _0x394c14=_0x54094f?_0x131783['count']:_0x473c12[_0xe7ca('0x21')]+_0x473c12['limit'];var _0x23a560;if(_0x394c14>=_0x48d6b6){_0x394c14=_0x48d6b6;_0x23a560=0xc8;}else{_0x23a560=0xce;}_0x2723e6['status'](_0x23a560);return _0x2723e6['set']('Content-Range',_0x3ec102+'-'+_0x394c14+'/'+_0x48d6b6)[_0xe7ca('0x20')](_0x131783);}return null;};}function patchUpdates(_0x9e9e5d){return function(_0x1baa71){try{jsonpatch[_0xe7ca('0x24')](_0x1baa71,_0x9e9e5d,!![]);}catch(_0x2af847){return BPromise[_0xe7ca('0x25')](_0x2af847);}return _0x1baa71[_0xe7ca('0x26')]();};}function saveUpdates(_0x50b1e3,_0x37f2e2){return function(_0x43c7aa){if(_0x43c7aa){return _0x43c7aa[_0xe7ca('0x27')](_0x50b1e3)[_0xe7ca('0x28')](function(_0x483992){return _0x483992;});}return null;};}function removeEntity(_0x90e5a1,_0x4902f6){return function(_0x5a857c){if(_0x5a857c){return _0x5a857c[_0xe7ca('0x29')]()[_0xe7ca('0x28')](function(){_0x90e5a1[_0xe7ca('0x1e')](0xcc)[_0xe7ca('0x1f')]();});}};}function handleEntityNotFound(_0x5a76e7,_0x18f399){return function(_0x11b5db){if(!_0x11b5db){_0x5a76e7[_0xe7ca('0x1d')](0x194);}return _0x11b5db;};}function handleError(_0x407f44,_0x3e6b71){_0x3e6b71=_0x3e6b71||0x1f4;return function(_0x116771){logger[_0xe7ca('0x2a')](_0x116771[_0xe7ca('0x2b')]);if(_0x116771['name']){delete _0x116771['name'];}_0x407f44[_0xe7ca('0x1e')](_0x3e6b71)[_0xe7ca('0x2c')](_0x116771);};}exports[_0xe7ca('0x2d')]=function(_0x2d9929,_0x251a5a){var _0x4a0020={},_0x3aaaa4={},_0x155dcd={'count':0x0,'rows':[]};var _0x172d1c=_[_0xe7ca('0x2e')](db[_0xe7ca('0x2f')][_0xe7ca('0x30')],function(_0x2754a1){return{'name':_0x2754a1['fieldName'],'type':_0x2754a1[_0xe7ca('0x31')][_0xe7ca('0x32')]};});_0x3aaaa4['model']=_[_0xe7ca('0x2e')](_0x172d1c,_0xe7ca('0x33'));_0x3aaaa4['query']=_[_0xe7ca('0x34')](_0x2d9929[_0xe7ca('0x35')]);_0x3aaaa4[_0xe7ca('0x36')]=_[_0xe7ca('0x37')](_0x3aaaa4[_0xe7ca('0x38')],_0x3aaaa4[_0xe7ca('0x35')]);_0x4a0020[_0xe7ca('0x39')]=_[_0xe7ca('0x37')](_0x3aaaa4[_0xe7ca('0x38')],qs[_0xe7ca('0x3a')](_0x2d9929[_0xe7ca('0x35')][_0xe7ca('0x3a')]));_0x4a0020[_0xe7ca('0x39')]=_0x4a0020[_0xe7ca('0x39')]['length']?_0x4a0020[_0xe7ca('0x39')]:_0x3aaaa4[_0xe7ca('0x38')];if(!_0x2d9929[_0xe7ca('0x35')]['hasOwnProperty'](_0xe7ca('0x3b'))){_0x4a0020['limit']=qs[_0xe7ca('0x3c')](_0x2d9929[_0xe7ca('0x35')][_0xe7ca('0x3c')]);_0x4a0020[_0xe7ca('0x21')]=qs[_0xe7ca('0x21')](_0x2d9929[_0xe7ca('0x35')][_0xe7ca('0x21')]);}_0x4a0020[_0xe7ca('0x3d')]=qs[_0xe7ca('0x3e')](_0x2d9929[_0xe7ca('0x35')][_0xe7ca('0x3e')]);_0x4a0020[_0xe7ca('0x3f')]=qs['filters'](_[_0xe7ca('0x40')](_0x2d9929[_0xe7ca('0x35')],_0x3aaaa4[_0xe7ca('0x36')]),_0x172d1c);if(_0x2d9929['query']['filter']){_0x4a0020[_0xe7ca('0x3f')]=_['merge'](_0x4a0020[_0xe7ca('0x3f')],{'$or':_['map'](_0x172d1c,function(_0x52822a){if(_0x52822a[_0xe7ca('0x31')]!==_0xe7ca('0x41')){var _0x203328={};_0x203328[_0x52822a['name']]={'$like':'%'+_0x2d9929['query'][_0xe7ca('0x42')]+'%'};return _0x203328;}})});}_0x4a0020=_['merge']({},_0x4a0020,_0x2d9929[_0xe7ca('0x43')]);var _0x298613={'where':_0x4a0020[_0xe7ca('0x3f')]};return db[_0xe7ca('0x2f')][_0xe7ca('0x23')](_0x298613)[_0xe7ca('0x28')](function(_0x569b9d){_0x155dcd['count']=_0x569b9d;if(_0x2d9929['query']['includeAll']){_0x4a0020[_0xe7ca('0x44')]=[{'all':!![]}];}return db[_0xe7ca('0x2f')][_0xe7ca('0x45')](_0x4a0020);})[_0xe7ca('0x28')](function(_0x18a798){_0x155dcd[_0xe7ca('0x46')]=_0x18a798;return _0x155dcd;})[_0xe7ca('0x28')](respondWithFilteredResult(_0x251a5a,_0x4a0020))[_0xe7ca('0x47')](handleError(_0x251a5a,null));};exports['show']=function(_0x2b8567,_0x454f14){var _0x4992a4={'raw':![],'where':{'id':_0x2b8567['params']['id']}},_0x209c39={};_0x209c39[_0xe7ca('0x38')]=_[_0xe7ca('0x34')](db[_0xe7ca('0x2f')][_0xe7ca('0x30')]);_0x209c39['query']=_['keys'](_0x2b8567['query']);_0x209c39[_0xe7ca('0x36')]=_[_0xe7ca('0x37')](_0x209c39['model'],_0x209c39[_0xe7ca('0x35')]);_0x4992a4[_0xe7ca('0x39')]=_[_0xe7ca('0x37')](_0x209c39['model'],qs[_0xe7ca('0x3a')](_0x2b8567[_0xe7ca('0x35')][_0xe7ca('0x3a')]));_0x4992a4[_0xe7ca('0x39')]=_0x4992a4[_0xe7ca('0x39')]['length']?_0x4992a4[_0xe7ca('0x39')]:_0x209c39[_0xe7ca('0x38')];if(_0x2b8567[_0xe7ca('0x35')][_0xe7ca('0x48')]){_0x4992a4['include']=[{'all':!![]}];}_0x4992a4=_[_0xe7ca('0x49')]({},_0x4992a4,_0x2b8567[_0xe7ca('0x43')]);return db['DeskConfiguration'][_0xe7ca('0x4a')](_0x4992a4)[_0xe7ca('0x28')](handleEntityNotFound(_0x454f14,null))[_0xe7ca('0x28')](respondWithResult(_0x454f14,null))[_0xe7ca('0x47')](handleError(_0x454f14,null));};exports[_0xe7ca('0x4b')]=function(_0xd618c0,_0x105f27){return db['DeskConfiguration'][_0xe7ca('0x4b')](_0xd618c0['body'],{})[_0xe7ca('0x28')](respondWithResult(_0x105f27,0xc9))[_0xe7ca('0x47')](handleError(_0x105f27,null));};exports['update']=function(_0x4bb6a9,_0x13f274){if(_0x4bb6a9[_0xe7ca('0x4c')]['id']){delete _0x4bb6a9[_0xe7ca('0x4c')]['id'];}return db[_0xe7ca('0x2f')][_0xe7ca('0x4a')]({'where':{'id':_0x4bb6a9[_0xe7ca('0x4d')]['id']}})['then'](handleEntityNotFound(_0x13f274,null))['then'](saveUpdates(_0x4bb6a9[_0xe7ca('0x4c')],null))[_0xe7ca('0x28')](respondWithResult(_0x13f274,null))[_0xe7ca('0x47')](handleError(_0x13f274,null));};exports[_0xe7ca('0x29')]=function(_0x1d50bf,_0xbdc079){return db['DeskConfiguration']['find']({'where':{'id':_0x1d50bf[_0xe7ca('0x4d')]['id']}})[_0xe7ca('0x28')](handleEntityNotFound(_0xbdc079,null))[_0xe7ca('0x28')](removeEntity(_0xbdc079,null))[_0xe7ca('0x47')](handleError(_0xbdc079,null));};exports[_0xe7ca('0x4e')]=function(_0x2483e4,_0x3b2031,_0x2924c5){var _0x52118c={};var _0x3e7ca4={};var _0x50388f;var _0x4188ee;return db['DeskConfiguration'][_0xe7ca('0x4f')]({'where':{'id':_0x2483e4[_0xe7ca('0x4d')]['id']}})[_0xe7ca('0x28')](handleEntityNotFound(_0x3b2031,null))['then'](function(_0xea81dd){if(_0xea81dd){_0x50388f=_0xea81dd;_0x3e7ca4[_0xe7ca('0x38')]=_[_0xe7ca('0x34')](db[_0xe7ca('0x50')][_0xe7ca('0x30')]);_0x3e7ca4[_0xe7ca('0x35')]=_[_0xe7ca('0x34')](_0x2483e4[_0xe7ca('0x35')]);_0x3e7ca4['filters']=_['intersection'](_0x3e7ca4[_0xe7ca('0x38')],_0x3e7ca4[_0xe7ca('0x35')]);_0x52118c[_0xe7ca('0x39')]=_[_0xe7ca('0x37')](_0x3e7ca4[_0xe7ca('0x38')],qs[_0xe7ca('0x3a')](_0x2483e4[_0xe7ca('0x35')][_0xe7ca('0x3a')]));_0x52118c[_0xe7ca('0x39')]=_0x52118c['attributes']['length']?_0x52118c[_0xe7ca('0x39')]:_0x3e7ca4[_0xe7ca('0x38')];_0x52118c[_0xe7ca('0x3d')]=qs[_0xe7ca('0x3e')](_0x2483e4[_0xe7ca('0x35')][_0xe7ca('0x3e')]);_0x52118c[_0xe7ca('0x3f')]=qs['filters'](_['pick'](_0x2483e4[_0xe7ca('0x35')],_0x3e7ca4[_0xe7ca('0x36')]));if(_0x2483e4['query'][_0xe7ca('0x42')]){_0x52118c[_0xe7ca('0x3f')]=_['merge'](_0x52118c[_0xe7ca('0x3f')],{'$or':_[_0xe7ca('0x2e')](_0x52118c[_0xe7ca('0x39')],function(_0x2fb2e8){var _0x4abe58={};_0x4abe58[_0x2fb2e8]={'$like':'%'+_0x2483e4[_0xe7ca('0x35')][_0xe7ca('0x42')]+'%'};return _0x4abe58;})});}_0x52118c=_[_0xe7ca('0x49')]({},_0x52118c,_0x2483e4[_0xe7ca('0x43')]);return _0x50388f['getFields'](_0x52118c);}})[_0xe7ca('0x28')](function(_0x33caef){if(_0x33caef){_0x4188ee=_0x33caef[_0xe7ca('0x51')];if(!_0x2483e4[_0xe7ca('0x35')][_0xe7ca('0x52')](_0xe7ca('0x3b'))){_0x52118c[_0xe7ca('0x3c')]=qs[_0xe7ca('0x3c')](_0x2483e4['query']['limit']);_0x52118c['offset']=qs[_0xe7ca('0x21')](_0x2483e4[_0xe7ca('0x35')][_0xe7ca('0x21')]);}return _0x50388f['getFields'](_0x52118c);}})[_0xe7ca('0x28')](function(_0x3d63d8){if(_0x3d63d8){return _0x3d63d8?{'count':_0x4188ee,'rows':_0x3d63d8}:null;}})[_0xe7ca('0x28')](respondWithResult(_0x3b2031,null))[_0xe7ca('0x47')](handleError(_0x3b2031,null));};exports['getSubjects']=function(_0x176d8e,_0xab7fd6,_0x4a97be){var _0x461737={};var _0x25f61e={};var _0x18d87b;var _0x428446;return db['DeskConfiguration']['findOne']({'where':{'id':_0x176d8e[_0xe7ca('0x4d')]['id']}})['then'](handleEntityNotFound(_0xab7fd6,null))[_0xe7ca('0x28')](function(_0x263892){if(_0x263892){_0x18d87b=_0x263892;_0x25f61e[_0xe7ca('0x38')]=_[_0xe7ca('0x34')](db['DeskField'][_0xe7ca('0x30')]);_0x25f61e[_0xe7ca('0x35')]=_[_0xe7ca('0x34')](_0x176d8e[_0xe7ca('0x35')]);_0x25f61e['filters']=_[_0xe7ca('0x37')](_0x25f61e[_0xe7ca('0x38')],_0x25f61e[_0xe7ca('0x35')]);_0x461737[_0xe7ca('0x39')]=_['intersection'](_0x25f61e['model'],qs[_0xe7ca('0x3a')](_0x176d8e[_0xe7ca('0x35')]['fields']));_0x461737['attributes']=_0x461737[_0xe7ca('0x39')][_0xe7ca('0x51')]?_0x461737[_0xe7ca('0x39')]:_0x25f61e[_0xe7ca('0x38')];_0x461737[_0xe7ca('0x3d')]=qs[_0xe7ca('0x3e')](_0x176d8e[_0xe7ca('0x35')][_0xe7ca('0x3e')]);_0x461737[_0xe7ca('0x3f')]=qs[_0xe7ca('0x36')](_[_0xe7ca('0x40')](_0x176d8e['query'],_0x25f61e[_0xe7ca('0x36')]));if(_0x176d8e[_0xe7ca('0x35')][_0xe7ca('0x42')]){_0x461737[_0xe7ca('0x3f')]=_[_0xe7ca('0x49')](_0x461737[_0xe7ca('0x3f')],{'$or':_[_0xe7ca('0x2e')](_0x461737[_0xe7ca('0x39')],function(_0x144dd1){var _0x29d625={};_0x29d625[_0x144dd1]={'$like':'%'+_0x176d8e[_0xe7ca('0x35')][_0xe7ca('0x42')]+'%'};return _0x29d625;})});}_0x461737=_['merge']({},_0x461737,_0x176d8e[_0xe7ca('0x43')]);return _0x18d87b['getSubjects'](_0x461737);}})[_0xe7ca('0x28')](function(_0x1e80e0){if(_0x1e80e0){_0x428446=_0x1e80e0[_0xe7ca('0x51')];if(!_0x176d8e[_0xe7ca('0x35')][_0xe7ca('0x52')](_0xe7ca('0x3b'))){_0x461737[_0xe7ca('0x3c')]=qs[_0xe7ca('0x3c')](_0x176d8e[_0xe7ca('0x35')]['limit']);_0x461737[_0xe7ca('0x21')]=qs[_0xe7ca('0x21')](_0x176d8e[_0xe7ca('0x35')][_0xe7ca('0x21')]);}return _0x18d87b[_0xe7ca('0x53')](_0x461737);}})['then'](function(_0x3ecde3){if(_0x3ecde3){return _0x3ecde3?{'count':_0x428446,'rows':_0x3ecde3}:null;}})['then'](respondWithResult(_0xab7fd6,null))['catch'](handleError(_0xab7fd6,null));};exports[_0xe7ca('0x54')]=function(_0xc0baa3,_0x508bc8,_0xdaf730){var _0x2a84c8={};var _0x181352={};var _0xad641f;var _0xff96fd;return db['DeskConfiguration'][_0xe7ca('0x4f')]({'where':{'id':_0xc0baa3[_0xe7ca('0x4d')]['id']}})[_0xe7ca('0x28')](handleEntityNotFound(_0x508bc8,null))[_0xe7ca('0x28')](function(_0x5343df){if(_0x5343df){_0xad641f=_0x5343df;_0x181352[_0xe7ca('0x38')]=_[_0xe7ca('0x34')](db['DeskField'][_0xe7ca('0x30')]);_0x181352[_0xe7ca('0x35')]=_['keys'](_0xc0baa3[_0xe7ca('0x35')]);_0x181352['filters']=_[_0xe7ca('0x37')](_0x181352['model'],_0x181352['query']);_0x2a84c8[_0xe7ca('0x39')]=_[_0xe7ca('0x37')](_0x181352[_0xe7ca('0x38')],qs['fields'](_0xc0baa3[_0xe7ca('0x35')][_0xe7ca('0x3a')]));_0x2a84c8['attributes']=_0x2a84c8[_0xe7ca('0x39')][_0xe7ca('0x51')]?_0x2a84c8[_0xe7ca('0x39')]:_0x181352[_0xe7ca('0x38')];_0x2a84c8[_0xe7ca('0x3d')]=qs[_0xe7ca('0x3e')](_0xc0baa3[_0xe7ca('0x35')][_0xe7ca('0x3e')]);_0x2a84c8[_0xe7ca('0x3f')]=qs[_0xe7ca('0x36')](_['pick'](_0xc0baa3['query'],_0x181352[_0xe7ca('0x36')]));if(_0xc0baa3['query'][_0xe7ca('0x42')]){_0x2a84c8['where']=_[_0xe7ca('0x49')](_0x2a84c8[_0xe7ca('0x3f')],{'$or':_[_0xe7ca('0x2e')](_0x2a84c8[_0xe7ca('0x39')],function(_0x3226d0){var _0x595ced={};_0x595ced[_0x3226d0]={'$like':'%'+_0xc0baa3['query'][_0xe7ca('0x42')]+'%'};return _0x595ced;})});}_0x2a84c8=_['merge']({},_0x2a84c8,_0xc0baa3['options']);return _0xad641f['getDescriptions'](_0x2a84c8);}})['then'](function(_0x58290a){if(_0x58290a){_0xff96fd=_0x58290a[_0xe7ca('0x51')];if(!_0xc0baa3[_0xe7ca('0x35')][_0xe7ca('0x52')]('nolimit')){_0x2a84c8[_0xe7ca('0x3c')]=qs[_0xe7ca('0x3c')](_0xc0baa3[_0xe7ca('0x35')][_0xe7ca('0x3c')]);_0x2a84c8[_0xe7ca('0x21')]=qs[_0xe7ca('0x21')](_0xc0baa3[_0xe7ca('0x35')][_0xe7ca('0x21')]);}return _0xad641f[_0xe7ca('0x54')](_0x2a84c8);}})[_0xe7ca('0x28')](function(_0x363454){if(_0x363454){return _0x363454?{'count':_0xff96fd,'rows':_0x363454}:null;}})[_0xe7ca('0x28')](respondWithResult(_0x508bc8,null))[_0xe7ca('0x47')](handleError(_0x508bc8,null));};exports[_0xe7ca('0x55')]=function(_0x1a994c,_0xf715de,_0x41b021){var _0x81a151={};var _0x3c4ece={};var _0x20bdfc;var _0x2edb15;return db[_0xe7ca('0x2f')]['findOne']({'where':{'id':_0x1a994c[_0xe7ca('0x4d')]['id']}})[_0xe7ca('0x28')](handleEntityNotFound(_0xf715de,null))['then'](function(_0x47e74d){if(_0x47e74d){_0x20bdfc=_0x47e74d;_0x3c4ece['model']=_[_0xe7ca('0x34')](db[_0xe7ca('0x56')][_0xe7ca('0x30')]);_0x3c4ece[_0xe7ca('0x35')]=_[_0xe7ca('0x34')](_0x1a994c[_0xe7ca('0x35')]);_0x3c4ece[_0xe7ca('0x36')]=_['intersection'](_0x3c4ece[_0xe7ca('0x38')],_0x3c4ece[_0xe7ca('0x35')]);_0x81a151[_0xe7ca('0x39')]=_[_0xe7ca('0x37')](_0x3c4ece[_0xe7ca('0x38')],qs[_0xe7ca('0x3a')](_0x1a994c['query'][_0xe7ca('0x3a')]));_0x81a151['attributes']=_0x81a151[_0xe7ca('0x39')][_0xe7ca('0x51')]?_0x81a151[_0xe7ca('0x39')]:_0x3c4ece[_0xe7ca('0x38')];_0x81a151[_0xe7ca('0x3d')]=qs['sort'](_0x1a994c['query'][_0xe7ca('0x3e')]);_0x81a151[_0xe7ca('0x3f')]=qs['filters'](_[_0xe7ca('0x40')](_0x1a994c[_0xe7ca('0x35')],_0x3c4ece[_0xe7ca('0x36')]));if(_0x1a994c[_0xe7ca('0x35')][_0xe7ca('0x42')]){_0x81a151[_0xe7ca('0x3f')]=_[_0xe7ca('0x49')](_0x81a151[_0xe7ca('0x3f')],{'$or':_['map'](_0x81a151[_0xe7ca('0x39')],function(_0x17f4ea){var _0x507334={};_0x507334[_0x17f4ea]={'$like':'%'+_0x1a994c[_0xe7ca('0x35')][_0xe7ca('0x42')]+'%'};return _0x507334;})});}_0x81a151=_[_0xe7ca('0x49')]({},_0x81a151,_0x1a994c[_0xe7ca('0x43')]);return _0x20bdfc[_0xe7ca('0x55')](_0x81a151);}})[_0xe7ca('0x28')](function(_0x2ddbd6){if(_0x2ddbd6){_0x2edb15=_0x2ddbd6['length'];if(!_0x1a994c[_0xe7ca('0x35')]['hasOwnProperty']('nolimit')){_0x81a151[_0xe7ca('0x3c')]=qs[_0xe7ca('0x3c')](_0x1a994c[_0xe7ca('0x35')]['limit']);_0x81a151[_0xe7ca('0x21')]=qs[_0xe7ca('0x21')](_0x1a994c['query'][_0xe7ca('0x21')]);}return _0x20bdfc[_0xe7ca('0x55')](_0x81a151);}})[_0xe7ca('0x28')](function(_0x3d3d27){if(_0x3d3d27){return _0x3d3d27?{'count':_0x2edb15,'rows':_0x3d3d27}:null;}})['then'](respondWithResult(_0xf715de,null))[_0xe7ca('0x47')](handleError(_0xf715de,null));};exports[_0xe7ca('0x57')]=function(_0x28f31f,_0x486a64,_0x3b4e78){if(_0x28f31f['body']['id']){delete _0x28f31f[_0xe7ca('0x4c')]['id'];}return db[_0xe7ca('0x2f')][_0xe7ca('0x4f')]({'where':{'id':_0x28f31f[_0xe7ca('0x4d')]['id']}})['then'](handleEntityNotFound(_0x486a64,null))[_0xe7ca('0x28')](function(_0x2760c7){if(_0x2760c7){return _0x2760c7[_0xe7ca('0x57')](_0x28f31f[_0xe7ca('0x4c')][_0xe7ca('0x58')]||[]);}return null;})[_0xe7ca('0x28')](respondWithResult(_0x486a64,null))[_0xe7ca('0x47')](handleError(_0x486a64,null));};
\ No newline at end of file
index 799732a..5f36eef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a4e=['request-promise','path','rimraf','../../config/environment','./intDeskConfiguration.attributes','define','DeskConfiguration','int_desk_configurations','util','api','moment','bluebird'];(function(_0x5daea3,_0x37dfce){var _0x47e381=function(_0x4da5b3){while(--_0x4da5b3){_0x5daea3['push'](_0x5daea3['shift']());}};_0x47e381(++_0x37dfce);}(_0x8a4e,0xbc));var _0xe8a4=function(_0x8cb592,_0x1d250d){_0x8cb592=_0x8cb592-0x0;var _0x108d23=_0x8a4e[_0x8cb592];return _0x108d23;};'use strict';var _=require('lodash');var util=require(_0xe8a4('0x0'));var logger=require('../../config/logger')(_0xe8a4('0x1'));var moment=require(_0xe8a4('0x2'));var BPromise=require(_0xe8a4('0x3'));var rp=require(_0xe8a4('0x4'));var fs=require('fs');var path=require(_0xe8a4('0x5'));var rimraf=require(_0xe8a4('0x6'));var config=require(_0xe8a4('0x7'));var attributes=require(_0xe8a4('0x8'));module['exports']=function(_0x458ce5,_0x4582f1){return _0x458ce5[_0xe8a4('0x9')](_0xe8a4('0xa'),attributes,{'tableName':_0xe8a4('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcfd2=['./intDeskConfiguration.attributes','DeskConfiguration','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x3f2790,_0x4b03ff){var _0x5e7773=function(_0x8062ec){while(--_0x8062ec){_0x3f2790['push'](_0x3f2790['shift']());}};_0x5e7773(++_0x4b03ff);}(_0xcfd2,0xe9));var _0x2cfd=function(_0x1ba2e5,_0xbcc3fb){_0x1ba2e5=_0x1ba2e5-0x0;var _0x2b8957=_0xcfd2[_0x1ba2e5];return _0x2b8957;};'use strict';var _=require(_0x2cfd('0x0'));var util=require(_0x2cfd('0x1'));var logger=require(_0x2cfd('0x2'))(_0x2cfd('0x3'));var moment=require(_0x2cfd('0x4'));var BPromise=require(_0x2cfd('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2cfd('0x6'));var rimraf=require(_0x2cfd('0x7'));var config=require(_0x2cfd('0x8'));var attributes=require(_0x2cfd('0x9'));module['exports']=function(_0x3c901c,_0x2e9553){return _0x3c901c['define'](_0x2cfd('0xa'),attributes,{'tableName':'int_desk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5ab67a6..8ae1085 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabf9=['request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','DeskConfiguration,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info'];(function(_0x47e7cb,_0x4c1b8d){var _0x2a8874=function(_0x36498f){while(--_0x36498f){_0x47e7cb['push'](_0x47e7cb['shift']());}};_0x2a8874(++_0x4c1b8d);}(_0xabf9,0x1e4));var _0x9abf=function(_0x2adf93,_0x1b1baa){_0x2adf93=_0x2adf93-0x0;var _0x4a8be9=_0xabf9[_0x2adf93];return _0x4a8be9;};'use strict';var _=require(_0x9abf('0x0'));var util=require(_0x9abf('0x1'));var moment=require(_0x9abf('0x2'));var BPromise=require(_0x9abf('0x3'));var rs=require(_0x9abf('0x4'));var fs=require('fs');var Redis=require(_0x9abf('0x5'));var db=require(_0x9abf('0x6'))['db'];var utils=require(_0x9abf('0x7'));var logger=require(_0x9abf('0x8'))(_0x9abf('0x9'));var config=require(_0x9abf('0xa'));var jayson=require(_0x9abf('0xb'));var client=jayson[_0x9abf('0xc')][_0x9abf('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x309081,_0x239186,_0x2f6730){return new BPromise(function(_0x5b9dc8,_0x21d73f){return client['request'](_0x309081,_0x2f6730)[_0x9abf('0xe')](function(_0x59ccd0){logger[_0x9abf('0xf')]('DeskConfiguration,\x20%s,\x20%s',_0x239186,_0x9abf('0x10'));logger[_0x9abf('0x11')](_0x9abf('0x12'),_0x239186,_0x9abf('0x10'),JSON[_0x9abf('0x13')](_0x59ccd0));if(_0x59ccd0[_0x9abf('0x14')]){if(_0x59ccd0[_0x9abf('0x14')]['code']===0x1f4){logger[_0x9abf('0x14')](_0x9abf('0x15'),_0x239186,_0x59ccd0[_0x9abf('0x14')]['message']);return _0x21d73f(_0x59ccd0[_0x9abf('0x14')][_0x9abf('0x16')]);}logger[_0x9abf('0x14')](_0x9abf('0x15'),_0x239186,_0x59ccd0[_0x9abf('0x14')][_0x9abf('0x16')]);return _0x5b9dc8(_0x59ccd0['error'][_0x9abf('0x16')]);}else{logger[_0x9abf('0xf')]('DeskConfiguration,\x20%s,\x20%s',_0x239186,_0x9abf('0x10'));_0x5b9dc8(_0x59ccd0[_0x9abf('0x17')]['message']);}})[_0x9abf('0x18')](function(_0x3268ae){logger[_0x9abf('0x14')](_0x9abf('0x15'),_0x239186,_0x3268ae);_0x21d73f(_0x3268ae);});});}
\ No newline at end of file
+var _0x11e3=['catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','client','http','request','then','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x2064ec,_0x359b63){var _0x31a60a=function(_0x860a22){while(--_0x860a22){_0x2064ec['push'](_0x2064ec['shift']());}};_0x31a60a(++_0x359b63);}(_0x11e3,0x6f));var _0x311e=function(_0x6f64d1,_0x1cc95a){_0x6f64d1=_0x6f64d1-0x0;var _0x1bc1f5=_0x11e3[_0x6f64d1];return _0x1bc1f5;};'use strict';var _=require(_0x311e('0x0'));var util=require(_0x311e('0x1'));var moment=require(_0x311e('0x2'));var BPromise=require(_0x311e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x311e('0x4'));var db=require(_0x311e('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x311e('0x6'))(_0x311e('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x311e('0x8')][_0x311e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x433af7,_0xd80072,_0x287bc8){return new BPromise(function(_0x7152cf,_0x3364d0){return client[_0x311e('0xa')](_0x433af7,_0x287bc8)[_0x311e('0xb')](function(_0x329b2e){logger[_0x311e('0xc')](_0x311e('0xd'),_0xd80072,_0x311e('0xe'));logger['debug'](_0x311e('0xf'),_0xd80072,'request\x20sent',JSON[_0x311e('0x10')](_0x329b2e));if(_0x329b2e[_0x311e('0x11')]){if(_0x329b2e[_0x311e('0x11')][_0x311e('0x12')]===0x1f4){logger['error']('DeskConfiguration,\x20%s,\x20%s',_0xd80072,_0x329b2e[_0x311e('0x11')]['message']);return _0x3364d0(_0x329b2e['error'][_0x311e('0x13')]);}logger[_0x311e('0x11')](_0x311e('0xd'),_0xd80072,_0x329b2e[_0x311e('0x11')][_0x311e('0x13')]);return _0x7152cf(_0x329b2e[_0x311e('0x11')]['message']);}else{logger[_0x311e('0xc')]('DeskConfiguration,\x20%s,\x20%s',_0xd80072,'request\x20sent');_0x7152cf(_0x329b2e[_0x311e('0x14')]['message']);}})[_0x311e('0x15')](function(_0x5df264){logger[_0x311e('0x11')](_0x311e('0xd'),_0xd80072,_0x5df264);_0x3364d0(_0x5df264);});});}
\ No newline at end of file
index fc5bf85..22dd8a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd755=['put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDeskField.controller','get','isAuthenticated','index','/:id','show','create'];(function(_0x49b207,_0x408ade){var _0x2dc8fa=function(_0x150975){while(--_0x150975){_0x49b207['push'](_0x49b207['shift']());}};_0x2dc8fa(++_0x408ade);}(_0xd755,0x109));var _0x5d75=function(_0xe22435,_0x27157f){_0xe22435=_0xe22435-0x0;var _0x4fa237=_0xd755[_0xe22435];return _0x4fa237;};'use strict';var multer=require(_0x5d75('0x0'));var util=require(_0x5d75('0x1'));var path=require(_0x5d75('0x2'));var timeout=require(_0x5d75('0x3'));var express=require('express');var router=express[_0x5d75('0x4')]();var fs_extra=require(_0x5d75('0x5'));var auth=require(_0x5d75('0x6'));var interaction=require(_0x5d75('0x7'));var config=require('../../config/environment');var controller=require(_0x5d75('0x8'));router[_0x5d75('0x9')]('/',auth[_0x5d75('0xa')](),controller[_0x5d75('0xb')]);router[_0x5d75('0x9')](_0x5d75('0xc'),auth['isAuthenticated'](),controller[_0x5d75('0xd')]);router['post']('/',auth[_0x5d75('0xa')](),controller[_0x5d75('0xe')]);router[_0x5d75('0xf')](_0x5d75('0xc'),auth['isAuthenticated'](),controller[_0x5d75('0x10')]);router[_0x5d75('0x11')](_0x5d75('0xc'),auth[_0x5d75('0xa')](),controller[_0x5d75('0x12')]);module[_0x5d75('0x13')]=router;
\ No newline at end of file
+var _0xfce9=['../../components/auth/service','../../components/interaction/service','./intDeskField.controller','get','isAuthenticated','index','post','put','update','delete','/:id','destroy','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x5ebc04,_0x14a363){var _0x17845c=function(_0x360850){while(--_0x360850){_0x5ebc04['push'](_0x5ebc04['shift']());}};_0x17845c(++_0x14a363);}(_0xfce9,0x66));var _0x9fce=function(_0x358653,_0xa1d9be){_0x358653=_0x358653-0x0;var _0x1178ae=_0xfce9[_0x358653];return _0x1178ae;};'use strict';var multer=require(_0x9fce('0x0'));var util=require('util');var path=require(_0x9fce('0x1'));var timeout=require(_0x9fce('0x2'));var express=require(_0x9fce('0x3'));var router=express[_0x9fce('0x4')]();var fs_extra=require(_0x9fce('0x5'));var auth=require(_0x9fce('0x6'));var interaction=require(_0x9fce('0x7'));var config=require('../../config/environment');var controller=require(_0x9fce('0x8'));router[_0x9fce('0x9')]('/',auth[_0x9fce('0xa')](),controller[_0x9fce('0xb')]);router['get']('/:id',auth[_0x9fce('0xa')](),controller['show']);router[_0x9fce('0xc')]('/',auth[_0x9fce('0xa')](),controller['create']);router[_0x9fce('0xd')]('/:id',auth[_0x9fce('0xa')](),controller[_0x9fce('0xe')]);router[_0x9fce('0xf')](_0x9fce('0x10'),auth[_0x9fce('0xa')](),controller[_0x9fce('0x11')]);module['exports']=router;
\ No newline at end of file
index 29b9565..f906cda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008b=['customVariable','keyValue','picklist','string','STRING','BOOLEAN','sequelize','exports','ENUM','variable'];(function(_0x545614,_0x8eb091){var _0x3d21a8=function(_0x2a90ff){while(--_0x2a90ff){_0x545614['push'](_0x545614['shift']());}};_0x3d21a8(++_0x8eb091);}(_0x008b,0x11e));var _0xb008=function(_0x5cf82,_0x9bc857){_0x5cf82=_0x5cf82-0x0;var _0x48f983=_0x008b[_0x5cf82];return _0x48f983;};'use strict';var Sequelize=require(_0xb008('0x0'));module[_0xb008('0x1')]={'type':{'type':Sequelize[_0xb008('0x2')]('string',_0xb008('0x3'),_0xb008('0x4'),_0xb008('0x5'),_0xb008('0x6')),'defaultValue':_0xb008('0x7')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xb008('0x2')](_0xb008('0x7'),_0xb008('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0xb008('0x8')]},'idField':{'type':Sequelize[_0xb008('0x8')]},'nameField':{'type':Sequelize[_0xb008('0x8')]},'customField':{'type':Sequelize[_0xb008('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xb008('0x8')]}};
\ No newline at end of file
+var _0xe7ab=['STRING','BOOLEAN','exports','ENUM','string','variable'];(function(_0x5b60fd,_0x25edc8){var _0x44d2c2=function(_0x79edbb){while(--_0x79edbb){_0x5b60fd['push'](_0x5b60fd['shift']());}};_0x44d2c2(++_0x25edc8);}(_0xe7ab,0x80));var _0xbe7a=function(_0x255a00,_0x60ef58){_0x255a00=_0x255a00-0x0;var _0x58b9a6=_0xe7ab[_0x255a00];return _0x58b9a6;};'use strict';var Sequelize=require('sequelize');module[_0xbe7a('0x0')]={'type':{'type':Sequelize[_0xbe7a('0x1')](_0xbe7a('0x2'),_0xbe7a('0x3'),'customVariable','keyValue','picklist'),'defaultValue':_0xbe7a('0x2')},'content':{'type':Sequelize[_0xbe7a('0x4')]},'key':{'type':Sequelize[_0xbe7a('0x4')]},'keyType':{'type':Sequelize[_0xbe7a('0x1')](_0xbe7a('0x2'),_0xbe7a('0x3'),'customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xbe7a('0x5')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 394e435..84d6024 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd185=['request-promise','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','map','fieldName','type','key','query','keys','filters','model','intersection','fields','attributes','hasOwnProperty','order','sort','where','pick','filter','merge','DeskField','includeAll','include','rows','catch','params','rawAttributes','length','options','find','create','body','eml-format','fast-json-patch'];(function(_0x2b1ebd,_0x147df3){var _0x1c56d4=function(_0x35c548){while(--_0x35c548){_0x2b1ebd['push'](_0x2b1ebd['shift']());}};_0x1c56d4(++_0x147df3);}(_0xd185,0x92));var _0x5d18=function(_0x4a22d5,_0x5b4987){_0x4a22d5=_0x4a22d5-0x0;var _0x1d0792=_0xd185[_0x4a22d5];return _0x1d0792;};'use strict';var emlformat=require(_0x5d18('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x5d18('0x1'));var rp=require(_0x5d18('0x2'));var moment=require('moment');var BPromise=require(_0x5d18('0x3'));var Mustache=require(_0x5d18('0x4'));var util=require(_0x5d18('0x5'));var path=require(_0x5d18('0x6'));var sox=require(_0x5d18('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5d18('0x8'));var _=require(_0x5d18('0x9'));var squel=require(_0x5d18('0xa'));var crypto=require(_0x5d18('0xb'));var jsforce=require(_0x5d18('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x5d18('0xd'));var Papa=require('papaparse');var Redis=require(_0x5d18('0xe'));var authService=require(_0x5d18('0xf'));var qs=require(_0x5d18('0x10'));var as=require(_0x5d18('0x11'));var hardwareService=require(_0x5d18('0x12'));var logger=require(_0x5d18('0x13'))(_0x5d18('0x14'));var utils=require(_0x5d18('0x15'));var config=require(_0x5d18('0x16'));var licenseUtil=require(_0x5d18('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x58a1fe,_0x4a73d1){_0x4a73d1=_0x4a73d1||0xcc;return function(_0x21c913){if(_0x21c913){return _0x58a1fe[_0x5d18('0x18')](_0x4a73d1);}return _0x58a1fe[_0x5d18('0x19')](_0x4a73d1)[_0x5d18('0x1a')]();};}function respondWithResult(_0x1fe54a,_0x37216c){_0x37216c=_0x37216c||0xc8;return function(_0x35a869){if(_0x35a869){return _0x1fe54a['status'](_0x37216c)[_0x5d18('0x1b')](_0x35a869);}};}function respondWithFilteredResult(_0x7f6e05,_0x535b9f){return function(_0x1fcc3b){if(_0x1fcc3b){var _0x380c86=typeof _0x535b9f[_0x5d18('0x1c')]==='undefined'&&typeof _0x535b9f[_0x5d18('0x1d')]===_0x5d18('0x1e');var _0x23770=_0x1fcc3b[_0x5d18('0x1f')];var _0x5de643=_0x380c86?0x0:_0x535b9f[_0x5d18('0x1c')];var _0x4e01f2=_0x380c86?_0x1fcc3b[_0x5d18('0x1f')]:_0x535b9f[_0x5d18('0x1c')]+_0x535b9f[_0x5d18('0x1d')];var _0x51fbd2;if(_0x4e01f2>=_0x23770){_0x4e01f2=_0x23770;_0x51fbd2=0xc8;}else{_0x51fbd2=0xce;}_0x7f6e05['status'](_0x51fbd2);return _0x7f6e05[_0x5d18('0x20')](_0x5d18('0x21'),_0x5de643+'-'+_0x4e01f2+'/'+_0x23770)[_0x5d18('0x1b')](_0x1fcc3b);}return null;};}function patchUpdates(_0xd7513d){return function(_0x1e5a26){try{jsonpatch[_0x5d18('0x22')](_0x1e5a26,_0xd7513d,!![]);}catch(_0x2a6354){return BPromise[_0x5d18('0x23')](_0x2a6354);}return _0x1e5a26[_0x5d18('0x24')]();};}function saveUpdates(_0x4f5692,_0x192e49){return function(_0x1dada0){if(_0x1dada0){return _0x1dada0[_0x5d18('0x25')](_0x4f5692)[_0x5d18('0x26')](function(_0x152a33){return _0x152a33;});}return null;};}function removeEntity(_0x2cc9a8,_0x2e612b){return function(_0xe417c9){if(_0xe417c9){return _0xe417c9[_0x5d18('0x27')]()['then'](function(){_0x2cc9a8[_0x5d18('0x19')](0xcc)[_0x5d18('0x1a')]();});}};}function handleEntityNotFound(_0x49b85e,_0x290c05){return function(_0x252792){if(!_0x252792){_0x49b85e[_0x5d18('0x18')](0x194);}return _0x252792;};}function handleError(_0x20e151,_0x1746aa){_0x1746aa=_0x1746aa||0x1f4;return function(_0x4b3634){logger['error'](_0x4b3634[_0x5d18('0x28')]);if(_0x4b3634[_0x5d18('0x29')]){delete _0x4b3634['name'];}_0x20e151[_0x5d18('0x19')](_0x1746aa)[_0x5d18('0x2a')](_0x4b3634);};}exports[_0x5d18('0x2b')]=function(_0x2b6c30,_0x16e00b){var _0x15bd0c={},_0x3a9301={},_0x1f4a53={'count':0x0,'rows':[]};var _0x144a44=_[_0x5d18('0x2c')](db['DeskField']['rawAttributes'],function(_0xaf348){return{'name':_0xaf348[_0x5d18('0x2d')],'type':_0xaf348[_0x5d18('0x2e')][_0x5d18('0x2f')]};});_0x3a9301['model']=_[_0x5d18('0x2c')](_0x144a44,_0x5d18('0x29'));_0x3a9301[_0x5d18('0x30')]=_[_0x5d18('0x31')](_0x2b6c30[_0x5d18('0x30')]);_0x3a9301[_0x5d18('0x32')]=_['intersection'](_0x3a9301[_0x5d18('0x33')],_0x3a9301[_0x5d18('0x30')]);_0x15bd0c['attributes']=_[_0x5d18('0x34')](_0x3a9301['model'],qs[_0x5d18('0x35')](_0x2b6c30[_0x5d18('0x30')][_0x5d18('0x35')]));_0x15bd0c['attributes']=_0x15bd0c[_0x5d18('0x36')]['length']?_0x15bd0c['attributes']:_0x3a9301[_0x5d18('0x33')];if(!_0x2b6c30[_0x5d18('0x30')][_0x5d18('0x37')]('nolimit')){_0x15bd0c[_0x5d18('0x1d')]=qs[_0x5d18('0x1d')](_0x2b6c30[_0x5d18('0x30')][_0x5d18('0x1d')]);_0x15bd0c[_0x5d18('0x1c')]=qs['offset'](_0x2b6c30[_0x5d18('0x30')]['offset']);}_0x15bd0c[_0x5d18('0x38')]=qs[_0x5d18('0x39')](_0x2b6c30[_0x5d18('0x30')][_0x5d18('0x39')]);_0x15bd0c[_0x5d18('0x3a')]=qs[_0x5d18('0x32')](_[_0x5d18('0x3b')](_0x2b6c30[_0x5d18('0x30')],_0x3a9301[_0x5d18('0x32')]),_0x144a44);if(_0x2b6c30[_0x5d18('0x30')][_0x5d18('0x3c')]){_0x15bd0c[_0x5d18('0x3a')]=_[_0x5d18('0x3d')](_0x15bd0c[_0x5d18('0x3a')],{'$or':_[_0x5d18('0x2c')](_0x144a44,function(_0x247a44){if(_0x247a44[_0x5d18('0x2e')]!=='VIRTUAL'){var _0x52842b={};_0x52842b[_0x247a44['name']]={'$like':'%'+_0x2b6c30[_0x5d18('0x30')][_0x5d18('0x3c')]+'%'};return _0x52842b;}})});}_0x15bd0c=_[_0x5d18('0x3d')]({},_0x15bd0c,_0x2b6c30['options']);var _0x59624f={'where':_0x15bd0c[_0x5d18('0x3a')]};return db[_0x5d18('0x3e')][_0x5d18('0x1f')](_0x59624f)[_0x5d18('0x26')](function(_0x2664fb){_0x1f4a53[_0x5d18('0x1f')]=_0x2664fb;if(_0x2b6c30[_0x5d18('0x30')][_0x5d18('0x3f')]){_0x15bd0c[_0x5d18('0x40')]=[{'all':!![]}];}return db[_0x5d18('0x3e')]['findAll'](_0x15bd0c);})[_0x5d18('0x26')](function(_0x35f4f3){_0x1f4a53[_0x5d18('0x41')]=_0x35f4f3;return _0x1f4a53;})[_0x5d18('0x26')](respondWithFilteredResult(_0x16e00b,_0x15bd0c))[_0x5d18('0x42')](handleError(_0x16e00b,null));};exports['show']=function(_0x13ccaa,_0x10ae56){var _0x552dcd={'raw':!![],'where':{'id':_0x13ccaa[_0x5d18('0x43')]['id']}},_0x31f1dc={};_0x31f1dc[_0x5d18('0x33')]=_[_0x5d18('0x31')](db['DeskField'][_0x5d18('0x44')]);_0x31f1dc['query']=_[_0x5d18('0x31')](_0x13ccaa['query']);_0x31f1dc[_0x5d18('0x32')]=_[_0x5d18('0x34')](_0x31f1dc[_0x5d18('0x33')],_0x31f1dc['query']);_0x552dcd[_0x5d18('0x36')]=_[_0x5d18('0x34')](_0x31f1dc[_0x5d18('0x33')],qs[_0x5d18('0x35')](_0x13ccaa['query'][_0x5d18('0x35')]));_0x552dcd[_0x5d18('0x36')]=_0x552dcd['attributes'][_0x5d18('0x45')]?_0x552dcd['attributes']:_0x31f1dc['model'];if(_0x13ccaa[_0x5d18('0x30')][_0x5d18('0x3f')]){_0x552dcd[_0x5d18('0x40')]=[{'all':!![]}];}_0x552dcd=_[_0x5d18('0x3d')]({},_0x552dcd,_0x13ccaa[_0x5d18('0x46')]);return db[_0x5d18('0x3e')][_0x5d18('0x47')](_0x552dcd)[_0x5d18('0x26')](handleEntityNotFound(_0x10ae56,null))['then'](respondWithResult(_0x10ae56,null))[_0x5d18('0x42')](handleError(_0x10ae56,null));};exports['create']=function(_0xcc5571,_0x1f191d){return db['DeskField'][_0x5d18('0x48')](_0xcc5571['body'],{})[_0x5d18('0x26')](respondWithResult(_0x1f191d,0xc9))[_0x5d18('0x42')](handleError(_0x1f191d,null));};exports[_0x5d18('0x25')]=function(_0x40444c,_0x494411){if(_0x40444c[_0x5d18('0x49')]['id']){delete _0x40444c['body']['id'];}return db['DeskField'][_0x5d18('0x47')]({'where':{'id':_0x40444c[_0x5d18('0x43')]['id']}})['then'](handleEntityNotFound(_0x494411,null))['then'](saveUpdates(_0x40444c[_0x5d18('0x49')],null))['then'](respondWithResult(_0x494411,null))[_0x5d18('0x42')](handleError(_0x494411,null));};exports['destroy']=function(_0x23ec5d,_0x5461a9){return db[_0x5d18('0x3e')][_0x5d18('0x47')]({'where':{'id':_0x23ec5d[_0x5d18('0x43')]['id']}})[_0x5d18('0x26')](handleEntityNotFound(_0x5461a9,null))[_0x5d18('0x26')](removeEntity(_0x5461a9,null))['catch'](handleError(_0x5461a9,null));};
\ No newline at end of file
+var _0x2bae=['../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','error','stack','name','send','DeskField','rawAttributes','type','key','model','map','query','keys','filters','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','params','intersection','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2bae,0x164));var _0xe2ba=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2bae[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xe2ba('0x0'));var rimraf=require(_0xe2ba('0x1'));var zipdir=require(_0xe2ba('0x2'));var jsonpatch=require(_0xe2ba('0x3'));var rp=require(_0xe2ba('0x4'));var moment=require(_0xe2ba('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xe2ba('0x6'));var util=require('util');var path=require(_0xe2ba('0x7'));var sox=require('sox');var csv=require(_0xe2ba('0x8'));var ejs=require(_0xe2ba('0x9'));var fs=require('fs');var fs_extra=require(_0xe2ba('0xa'));var _=require('lodash');var squel=require(_0xe2ba('0xb'));var crypto=require(_0xe2ba('0xc'));var jsforce=require(_0xe2ba('0xd'));var deskjs=require(_0xe2ba('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xe2ba('0xf'));var Redis=require(_0xe2ba('0x10'));var authService=require(_0xe2ba('0x11'));var qs=require(_0xe2ba('0x12'));var as=require(_0xe2ba('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe2ba('0x14'))(_0xe2ba('0x15'));var utils=require(_0xe2ba('0x16'));var config=require(_0xe2ba('0x17'));var licenseUtil=require(_0xe2ba('0x18'));var db=require(_0xe2ba('0x19'))['db'];function respondWithStatusCode(_0x2ab70c,_0x9e154c){_0x9e154c=_0x9e154c||0xcc;return function(_0x2da78d){if(_0x2da78d){return _0x2ab70c[_0xe2ba('0x1a')](_0x9e154c);}return _0x2ab70c[_0xe2ba('0x1b')](_0x9e154c)['end']();};}function respondWithResult(_0x13c591,_0x1b1dac){_0x1b1dac=_0x1b1dac||0xc8;return function(_0x5f48a2){if(_0x5f48a2){return _0x13c591[_0xe2ba('0x1b')](_0x1b1dac)[_0xe2ba('0x1c')](_0x5f48a2);}};}function respondWithFilteredResult(_0x1ecee0,_0x1d2547){return function(_0x718656){if(_0x718656){var _0x4a30ce=typeof _0x1d2547[_0xe2ba('0x1d')]===_0xe2ba('0x1e')&&typeof _0x1d2547[_0xe2ba('0x1f')]==='undefined';var _0x246aef=_0x718656[_0xe2ba('0x20')];var _0x3108fd=_0x4a30ce?0x0:_0x1d2547[_0xe2ba('0x1d')];var _0x10825d=_0x4a30ce?_0x718656[_0xe2ba('0x20')]:_0x1d2547[_0xe2ba('0x1d')]+_0x1d2547[_0xe2ba('0x1f')];var _0x12c934;if(_0x10825d>=_0x246aef){_0x10825d=_0x246aef;_0x12c934=0xc8;}else{_0x12c934=0xce;}_0x1ecee0[_0xe2ba('0x1b')](_0x12c934);return _0x1ecee0[_0xe2ba('0x21')]('Content-Range',_0x3108fd+'-'+_0x10825d+'/'+_0x246aef)[_0xe2ba('0x1c')](_0x718656);}return null;};}function patchUpdates(_0x382ccb){return function(_0x482829){try{jsonpatch[_0xe2ba('0x22')](_0x482829,_0x382ccb,!![]);}catch(_0x4dffdb){return BPromise[_0xe2ba('0x23')](_0x4dffdb);}return _0x482829[_0xe2ba('0x24')]();};}function saveUpdates(_0x3c8359,_0x5eed81){return function(_0x55ea9a){if(_0x55ea9a){return _0x55ea9a[_0xe2ba('0x25')](_0x3c8359)[_0xe2ba('0x26')](function(_0x4d696b){return _0x4d696b;});}return null;};}function removeEntity(_0x5ed37f,_0x5dcfa5){return function(_0x86b154){if(_0x86b154){return _0x86b154[_0xe2ba('0x27')]()[_0xe2ba('0x26')](function(){_0x5ed37f[_0xe2ba('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x40d9b4,_0x1b0601){return function(_0x5e6a76){if(!_0x5e6a76){_0x40d9b4[_0xe2ba('0x1a')](0x194);}return _0x5e6a76;};}function handleError(_0x31905b,_0x46eff9){_0x46eff9=_0x46eff9||0x1f4;return function(_0x38db6d){logger[_0xe2ba('0x28')](_0x38db6d[_0xe2ba('0x29')]);if(_0x38db6d[_0xe2ba('0x2a')]){delete _0x38db6d[_0xe2ba('0x2a')];}_0x31905b['status'](_0x46eff9)[_0xe2ba('0x2b')](_0x38db6d);};}exports['index']=function(_0x33840d,_0x520eb3){var _0x172334={},_0x1c8882={},_0x30d5c0={'count':0x0,'rows':[]};var _0x4fde3f=_['map'](db[_0xe2ba('0x2c')][_0xe2ba('0x2d')],function(_0x3d7f12){return{'name':_0x3d7f12['fieldName'],'type':_0x3d7f12[_0xe2ba('0x2e')][_0xe2ba('0x2f')]};});_0x1c8882[_0xe2ba('0x30')]=_[_0xe2ba('0x31')](_0x4fde3f,_0xe2ba('0x2a'));_0x1c8882[_0xe2ba('0x32')]=_[_0xe2ba('0x33')](_0x33840d['query']);_0x1c8882[_0xe2ba('0x34')]=_['intersection'](_0x1c8882[_0xe2ba('0x30')],_0x1c8882[_0xe2ba('0x32')]);_0x172334['attributes']=_['intersection'](_0x1c8882[_0xe2ba('0x30')],qs['fields'](_0x33840d[_0xe2ba('0x32')][_0xe2ba('0x35')]));_0x172334[_0xe2ba('0x36')]=_0x172334[_0xe2ba('0x36')][_0xe2ba('0x37')]?_0x172334[_0xe2ba('0x36')]:_0x1c8882[_0xe2ba('0x30')];if(!_0x33840d[_0xe2ba('0x32')][_0xe2ba('0x38')](_0xe2ba('0x39'))){_0x172334[_0xe2ba('0x1f')]=qs[_0xe2ba('0x1f')](_0x33840d[_0xe2ba('0x32')][_0xe2ba('0x1f')]);_0x172334['offset']=qs[_0xe2ba('0x1d')](_0x33840d[_0xe2ba('0x32')][_0xe2ba('0x1d')]);}_0x172334[_0xe2ba('0x3a')]=qs[_0xe2ba('0x3b')](_0x33840d[_0xe2ba('0x32')][_0xe2ba('0x3b')]);_0x172334[_0xe2ba('0x3c')]=qs['filters'](_[_0xe2ba('0x3d')](_0x33840d[_0xe2ba('0x32')],_0x1c8882[_0xe2ba('0x34')]),_0x4fde3f);if(_0x33840d[_0xe2ba('0x32')][_0xe2ba('0x3e')]){_0x172334[_0xe2ba('0x3c')]=_[_0xe2ba('0x3f')](_0x172334['where'],{'$or':_[_0xe2ba('0x31')](_0x4fde3f,function(_0x55aa55){if(_0x55aa55[_0xe2ba('0x2e')]!==_0xe2ba('0x40')){var _0x2366d0={};_0x2366d0[_0x55aa55[_0xe2ba('0x2a')]]={'$like':'%'+_0x33840d[_0xe2ba('0x32')][_0xe2ba('0x3e')]+'%'};return _0x2366d0;}})});}_0x172334=_[_0xe2ba('0x3f')]({},_0x172334,_0x33840d[_0xe2ba('0x41')]);var _0x231d7b={'where':_0x172334['where']};return db[_0xe2ba('0x2c')][_0xe2ba('0x20')](_0x231d7b)[_0xe2ba('0x26')](function(_0x26242f){_0x30d5c0[_0xe2ba('0x20')]=_0x26242f;if(_0x33840d[_0xe2ba('0x32')][_0xe2ba('0x42')]){_0x172334[_0xe2ba('0x43')]=[{'all':!![]}];}return db[_0xe2ba('0x2c')]['findAll'](_0x172334);})[_0xe2ba('0x26')](function(_0x5966b3){_0x30d5c0[_0xe2ba('0x44')]=_0x5966b3;return _0x30d5c0;})[_0xe2ba('0x26')](respondWithFilteredResult(_0x520eb3,_0x172334))['catch'](handleError(_0x520eb3,null));};exports['show']=function(_0x2a0e8a,_0x1f5a72){var _0x519c69={'raw':!![],'where':{'id':_0x2a0e8a[_0xe2ba('0x45')]['id']}},_0x1dc9dd={};_0x1dc9dd[_0xe2ba('0x30')]=_['keys'](db[_0xe2ba('0x2c')]['rawAttributes']);_0x1dc9dd[_0xe2ba('0x32')]=_['keys'](_0x2a0e8a[_0xe2ba('0x32')]);_0x1dc9dd[_0xe2ba('0x34')]=_[_0xe2ba('0x46')](_0x1dc9dd['model'],_0x1dc9dd[_0xe2ba('0x32')]);_0x519c69[_0xe2ba('0x36')]=_[_0xe2ba('0x46')](_0x1dc9dd[_0xe2ba('0x30')],qs[_0xe2ba('0x35')](_0x2a0e8a[_0xe2ba('0x32')][_0xe2ba('0x35')]));_0x519c69[_0xe2ba('0x36')]=_0x519c69[_0xe2ba('0x36')][_0xe2ba('0x37')]?_0x519c69[_0xe2ba('0x36')]:_0x1dc9dd[_0xe2ba('0x30')];if(_0x2a0e8a[_0xe2ba('0x32')][_0xe2ba('0x42')]){_0x519c69[_0xe2ba('0x43')]=[{'all':!![]}];}_0x519c69=_[_0xe2ba('0x3f')]({},_0x519c69,_0x2a0e8a[_0xe2ba('0x41')]);return db['DeskField'][_0xe2ba('0x47')](_0x519c69)[_0xe2ba('0x26')](handleEntityNotFound(_0x1f5a72,null))['then'](respondWithResult(_0x1f5a72,null))[_0xe2ba('0x48')](handleError(_0x1f5a72,null));};exports['create']=function(_0x584f5e,_0x3b2b00){return db['DeskField'][_0xe2ba('0x49')](_0x584f5e[_0xe2ba('0x4a')],{})[_0xe2ba('0x26')](respondWithResult(_0x3b2b00,0xc9))[_0xe2ba('0x48')](handleError(_0x3b2b00,null));};exports['update']=function(_0x5abb6b,_0x26e7e5){if(_0x5abb6b[_0xe2ba('0x4a')]['id']){delete _0x5abb6b[_0xe2ba('0x4a')]['id'];}return db[_0xe2ba('0x2c')][_0xe2ba('0x47')]({'where':{'id':_0x5abb6b[_0xe2ba('0x45')]['id']}})['then'](handleEntityNotFound(_0x26e7e5,null))[_0xe2ba('0x26')](saveUpdates(_0x5abb6b[_0xe2ba('0x4a')],null))[_0xe2ba('0x26')](respondWithResult(_0x26e7e5,null))[_0xe2ba('0x48')](handleError(_0x26e7e5,null));};exports[_0xe2ba('0x27')]=function(_0x5a1b24,_0x3468e5){return db[_0xe2ba('0x2c')][_0xe2ba('0x47')]({'where':{'id':_0x5a1b24['params']['id']}})[_0xe2ba('0x26')](handleEntityNotFound(_0x3468e5,null))[_0xe2ba('0x26')](removeEntity(_0x3468e5,null))['catch'](handleError(_0x3468e5,null));};
\ No newline at end of file
index 1a7da7f..3d0eab3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f84=['bluebird','path','../../config/environment','./intDeskField.attributes','exports','define','int_desk_fields','desk_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment'];(function(_0x51c56d,_0x19d157){var _0x468de0=function(_0x1b37df){while(--_0x1b37df){_0x51c56d['push'](_0x51c56d['shift']());}};_0x468de0(++_0x19d157);}(_0x1f84,0xcd));var _0x41f8=function(_0x253946,_0x1c8d56){_0x253946=_0x253946-0x0;var _0x198cd6=_0x1f84[_0x253946];return _0x198cd6;};'use strict';var _=require(_0x41f8('0x0'));var util=require(_0x41f8('0x1'));var logger=require(_0x41f8('0x2'))(_0x41f8('0x3'));var moment=require(_0x41f8('0x4'));var BPromise=require(_0x41f8('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x41f8('0x6'));var rimraf=require('rimraf');var config=require(_0x41f8('0x7'));var attributes=require(_0x41f8('0x8'));module[_0x41f8('0x9')]=function(_0x362cd3,_0x232558){return _0x362cd3[_0x41f8('0xa')]('DeskField',attributes,{'tableName':_0x41f8('0xb'),'paranoid':![],'indexes':[{'name':_0x41f8('0xc'),'fields':[_0x41f8('0xd'),_0x41f8('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x51c1=['int_desk_fields','desk_unique_index','FieldId','util','../../config/logger','bluebird','request-promise','path','rimraf','./intDeskField.attributes','DeskField'];(function(_0xf64500,_0x410815){var _0x58a6e0=function(_0x1fee17){while(--_0x1fee17){_0xf64500['push'](_0xf64500['shift']());}};_0x58a6e0(++_0x410815);}(_0x51c1,0x1dc));var _0x151c=function(_0x18a79d,_0x57bd2c){_0x18a79d=_0x18a79d-0x0;var _0x4f8848=_0x51c1[_0x18a79d];return _0x4f8848;};'use strict';var _=require('lodash');var util=require(_0x151c('0x0'));var logger=require(_0x151c('0x1'))('api');var moment=require('moment');var BPromise=require(_0x151c('0x2'));var rp=require(_0x151c('0x3'));var fs=require('fs');var path=require(_0x151c('0x4'));var rimraf=require(_0x151c('0x5'));var config=require('../../config/environment');var attributes=require(_0x151c('0x6'));module['exports']=function(_0x50a7e3,_0x1edcd1){return _0x50a7e3['define'](_0x151c('0x7'),attributes,{'tableName':_0x151c('0x8'),'paranoid':![],'indexes':[{'name':_0x151c('0x9'),'fields':['idField',_0x151c('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index d821d7c..caa1e27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9cf=['moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','debug','DeskField,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','DeskField,\x20%s,\x20%s','message','catch','lodash','util'];(function(_0x5a8893,_0x1d4c67){var _0x5d0c5d=function(_0x451ee){while(--_0x451ee){_0x5a8893['push'](_0x5a8893['shift']());}};_0x5d0c5d(++_0x1d4c67);}(_0xd9cf,0x11c));var _0xfd9c=function(_0x485c20,_0x53bf88){_0x485c20=_0x485c20-0x0;var _0x3e2a82=_0xd9cf[_0x485c20];return _0x3e2a82;};'use strict';var _=require(_0xfd9c('0x0'));var util=require(_0xfd9c('0x1'));var moment=require(_0xfd9c('0x2'));var BPromise=require(_0xfd9c('0x3'));var rs=require(_0xfd9c('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfd9c('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xfd9c('0x6'))(_0xfd9c('0x7'));var config=require(_0xfd9c('0x8'));var jayson=require(_0xfd9c('0x9'));var client=jayson[_0xfd9c('0xa')][_0xfd9c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x6da6a2,_0x3b6d6f,_0x28f39e){return new BPromise(function(_0x1d876f,_0x3050c5){return client[_0xfd9c('0xc')](_0x6da6a2,_0x28f39e)['then'](function(_0x3e8bba){logger[_0xfd9c('0xd')]('DeskField,\x20%s,\x20%s',_0x3b6d6f,'request\x20sent');logger[_0xfd9c('0xe')](_0xfd9c('0xf'),_0x3b6d6f,_0xfd9c('0x10'),JSON['stringify'](_0x3e8bba));if(_0x3e8bba[_0xfd9c('0x11')]){if(_0x3e8bba[_0xfd9c('0x11')][_0xfd9c('0x12')]===0x1f4){logger[_0xfd9c('0x11')](_0xfd9c('0x13'),_0x3b6d6f,_0x3e8bba[_0xfd9c('0x11')]['message']);return _0x3050c5(_0x3e8bba[_0xfd9c('0x11')][_0xfd9c('0x14')]);}logger[_0xfd9c('0x11')](_0xfd9c('0x13'),_0x3b6d6f,_0x3e8bba[_0xfd9c('0x11')][_0xfd9c('0x14')]);return _0x1d876f(_0x3e8bba[_0xfd9c('0x11')]['message']);}else{logger[_0xfd9c('0xd')]('DeskField,\x20%s,\x20%s',_0x3b6d6f,_0xfd9c('0x10'));_0x1d876f(_0x3e8bba['result'][_0xfd9c('0x14')]);}})[_0xfd9c('0x15')](function(_0x53d057){logger['error'](_0xfd9c('0x13'),_0x3b6d6f,_0x53d057);_0x3050c5(_0x53d057);});});}
\ No newline at end of file
+var _0xc77d=['client','http','request','then','info','DeskField,\x20%s,\x20%s','request\x20sent','debug','stringify','code','error','message','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x2a0137,_0x4c4ec4){var _0xaf5173=function(_0x4e5597){while(--_0x4e5597){_0x2a0137['push'](_0x2a0137['shift']());}};_0xaf5173(++_0x4c4ec4);}(_0xc77d,0x182));var _0xdc77=function(_0x46f2f5,_0x5a222d){_0x46f2f5=_0x46f2f5-0x0;var _0x5da818=_0xc77d[_0x46f2f5];return _0x5da818;};'use strict';var _=require(_0xdc77('0x0'));var util=require(_0xdc77('0x1'));var moment=require(_0xdc77('0x2'));var BPromise=require(_0xdc77('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xdc77('0x4'));var db=require(_0xdc77('0x5'))['db'];var utils=require(_0xdc77('0x6'));var logger=require(_0xdc77('0x7'))('rpc');var config=require(_0xdc77('0x8'));var jayson=require(_0xdc77('0x9'));var client=jayson[_0xdc77('0xa')][_0xdc77('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1ccbd7,_0x5d8a45,_0x2d68f6){return new BPromise(function(_0x2c7f88,_0x59cce8){return client[_0xdc77('0xc')](_0x1ccbd7,_0x2d68f6)[_0xdc77('0xd')](function(_0x553b0e){logger[_0xdc77('0xe')](_0xdc77('0xf'),_0x5d8a45,_0xdc77('0x10'));logger[_0xdc77('0x11')]('DeskField,\x20%s,\x20%s,\x20%s',_0x5d8a45,_0xdc77('0x10'),JSON[_0xdc77('0x12')](_0x553b0e));if(_0x553b0e['error']){if(_0x553b0e['error'][_0xdc77('0x13')]===0x1f4){logger[_0xdc77('0x14')](_0xdc77('0xf'),_0x5d8a45,_0x553b0e[_0xdc77('0x14')][_0xdc77('0x15')]);return _0x59cce8(_0x553b0e[_0xdc77('0x14')][_0xdc77('0x15')]);}logger['error'](_0xdc77('0xf'),_0x5d8a45,_0x553b0e[_0xdc77('0x14')][_0xdc77('0x15')]);return _0x2c7f88(_0x553b0e[_0xdc77('0x14')][_0xdc77('0x15')]);}else{logger['info'](_0xdc77('0xf'),_0x5d8a45,'request\x20sent');_0x2c7f88(_0x553b0e['result'][_0xdc77('0x15')]);}})['catch'](function(_0x4ef302){logger[_0xdc77('0x14')](_0xdc77('0xf'),_0x5d8a45,_0x4ef302);_0x59cce8(_0x4ef302);});});}
\ No newline at end of file
index d3be44b..2ce8fcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f94=['put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intDynamics365Account.controller','get','index','/:id','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration'];(function(_0x1589dd,_0x2b9d22){var _0x1bddd1=function(_0x3687f8){while(--_0x3687f8){_0x1589dd['push'](_0x1589dd['shift']());}};_0x1bddd1(++_0x2b9d22);}(_0x4f94,0x122));var _0x44f9=function(_0x4772ee,_0x15811b){_0x4772ee=_0x4772ee-0x0;var _0x582930=_0x4f94[_0x4772ee];return _0x582930;};'use strict';var multer=require(_0x44f9('0x0'));var util=require(_0x44f9('0x1'));var path=require(_0x44f9('0x2'));var timeout=require(_0x44f9('0x3'));var express=require(_0x44f9('0x4'));var router=express[_0x44f9('0x5')]();var fs_extra=require(_0x44f9('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x44f9('0x7'));var config=require(_0x44f9('0x8'));var controller=require(_0x44f9('0x9'));router[_0x44f9('0xa')]('/',auth['isAuthenticated'](),controller[_0x44f9('0xb')]);router[_0x44f9('0xa')](_0x44f9('0xc'),auth[_0x44f9('0xd')](),controller[_0x44f9('0xe')]);router['get'](_0x44f9('0xf'),auth[_0x44f9('0xd')](),controller[_0x44f9('0x10')]);router[_0x44f9('0xa')](_0x44f9('0x11'),auth['isAuthenticated'](),controller[_0x44f9('0x12')]);router[_0x44f9('0x13')]('/',auth[_0x44f9('0xd')](),controller[_0x44f9('0x14')]);router[_0x44f9('0x13')](_0x44f9('0xf'),auth[_0x44f9('0xd')](),controller[_0x44f9('0x15')]);router[_0x44f9('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x44f9('0x17')]);router[_0x44f9('0x18')](_0x44f9('0xc'),auth[_0x44f9('0xd')](),controller['destroy']);module[_0x44f9('0x19')]=router;
\ No newline at end of file
+var _0x7d08=['getConfigurations','/:id/fields','post','create','addConfiguration','put','update','destroy','exports','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDynamics365Account.controller','get','isAuthenticated','/:id','show','/:id/configurations'];(function(_0x2b7764,_0x2606f1){var _0x848dcb=function(_0x1ae85b){while(--_0x1ae85b){_0x2b7764['push'](_0x2b7764['shift']());}};_0x848dcb(++_0x2606f1);}(_0x7d08,0x198));var _0x87d0=function(_0x219099,_0x5e5c91){_0x219099=_0x219099-0x0;var _0x59078b=_0x7d08[_0x219099];return _0x59078b;};'use strict';var multer=require(_0x87d0('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x87d0('0x1'));var express=require('express');var router=express[_0x87d0('0x2')]();var fs_extra=require(_0x87d0('0x3'));var auth=require(_0x87d0('0x4'));var interaction=require(_0x87d0('0x5'));var config=require('../../config/environment');var controller=require(_0x87d0('0x6'));router[_0x87d0('0x7')]('/',auth[_0x87d0('0x8')](),controller['index']);router[_0x87d0('0x7')](_0x87d0('0x9'),auth[_0x87d0('0x8')](),controller[_0x87d0('0xa')]);router['get'](_0x87d0('0xb'),auth[_0x87d0('0x8')](),controller[_0x87d0('0xc')]);router['get'](_0x87d0('0xd'),auth[_0x87d0('0x8')](),controller['getFields']);router[_0x87d0('0xe')]('/',auth[_0x87d0('0x8')](),controller[_0x87d0('0xf')]);router['post'](_0x87d0('0xb'),auth[_0x87d0('0x8')](),controller[_0x87d0('0x10')]);router[_0x87d0('0x11')]('/:id',auth[_0x87d0('0x8')](),controller[_0x87d0('0x12')]);router['delete'](_0x87d0('0x9'),auth[_0x87d0('0x8')](),controller[_0x87d0('0x13')]);module[_0x87d0('0x14')]=router;
\ No newline at end of file
index a0eee13..a2b2f7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffc8=['STRING'];(function(_0x55d0ab,_0x3d06c2){var _0x1f146c=function(_0x1e96c0){while(--_0x1e96c0){_0x55d0ab['push'](_0x55d0ab['shift']());}};_0x1f146c(++_0x3d06c2);}(_0xffc8,0x111));var _0x8ffc=function(_0x6eaeb0,_0xa6cec7){_0x6eaeb0=_0x6eaeb0-0x0;var _0x176a7e=_0xffc8[_0x6eaeb0];return _0x176a7e;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x8ffc('0x0')]},'username':{'type':Sequelize[_0x8ffc('0x0')]},'password':{'type':Sequelize[_0x8ffc('0x0')]},'remoteUri':{'type':Sequelize[_0x8ffc('0x0')]},'tenantId':{'type':Sequelize[_0x8ffc('0x0')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x8ffc('0x0')]}};
\ No newline at end of file
+var _0x4cac=['sequelize','STRING'];(function(_0x31bbcb,_0x49f2d5){var _0x55dac1=function(_0x1baefd){while(--_0x1baefd){_0x31bbcb['push'](_0x31bbcb['shift']());}};_0x55dac1(++_0x49f2d5);}(_0x4cac,0x120));var _0xc4ca=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x4cac[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0xc4ca('0x0'));module['exports']={'name':{'type':Sequelize[_0xc4ca('0x1')]},'username':{'type':Sequelize[_0xc4ca('0x1')]},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xc4ca('0x1')]},'tenantId':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0xc4ca('0x1')]},'clientSecret':{'type':Sequelize[_0xc4ca('0x1')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xc4ca('0x1')]}};
\ No newline at end of file
index 2791f6c..e96f67c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee39=['modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','owneridname','owneridtype','owneridyominame','parentcaseidname','primarycontactidname','prioritycodename','productserialnumber','resolveby','resolvebykpiidname','responseby','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slaname','socialprofileidname','subjectidname','ticketnumber','transactioncurrencyidname','utcconversiontimezonecode','concat','password','remoteUri','tenantId','clientId','clientSecret','slice','substring','lastIndexOf','format','%s/api/data/v9.0/','https://login.microsoftonline.com/','/oauth2/token','username','GET','Bearer\x20','4.0','MetadataId','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Attributes','remove','includes','LogicalName','forEach','@odata.type','all','isNil','BooleanAttributeMetadata','push','StringAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','test','error','Wrong\x20credentials','statusCode',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','Options','Label','UserLocalizedLabel','Value','OptionSet','TrueOption','true','DisplayName',')/Attributes(',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','papaparse','../../components/auth/service','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','stack','name','send','index','map','Dynamics365Account','fieldName','key','model','query','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','type','options','includeAll','include','rows','catch','show','params','keys','find','create','body','getConfigurations','findOne','Dynamics365Configuration','rawAttributes','hasOwnProperty','AccountId','Subjects','getSubjects','getDescriptions','channel','Dynamics365Field','incident','PhoneCall','title','customerid','ownerid','subject','phonenumber','directioncode','phonecall_activity_parties','accountidyominame','actualserviceunits','contactidname','contactidyominame','contractdetailidname','createdbyexternalpartyname','createdbyyominame','createdon','createdonbehalfbyname','createdonbehalfbyyominame','customeridname','customeridtype','customeridyominame','emailaddress','entitlementidname','entityimage_timestamp','entityimage_url','escalatedon','firstresponsebykpiidname','followupby','importsequencenumber','influencescore','kbarticleidname','lastonholdtime','masteridname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedbyyominame','modifiedon'];(function(_0x348f2e,_0x415a3f){var _0x23f653=function(_0x5c6c5d){while(--_0x5c6c5d){_0x348f2e['push'](_0x348f2e['shift']());}};_0x23f653(++_0x415a3f);}(_0xee39,0x1e6));var _0x9ee3=function(_0x15cf36,_0x2326be){_0x15cf36=_0x15cf36-0x0;var _0x1ba2b9=_0xee39[_0x15cf36];return _0x1ba2b9;};'use strict';var emlformat=require(_0x9ee3('0x0'));var rimraf=require(_0x9ee3('0x1'));var zipdir=require(_0x9ee3('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9ee3('0x3'));var moment=require(_0x9ee3('0x4'));var BPromise=require(_0x9ee3('0x5'));var Mustache=require(_0x9ee3('0x6'));var util=require(_0x9ee3('0x7'));var path=require(_0x9ee3('0x8'));var sox=require(_0x9ee3('0x9'));var csv=require(_0x9ee3('0xa'));var ejs=require(_0x9ee3('0xb'));var fs=require('fs');var fs_extra=require(_0x9ee3('0xc'));var _=require('lodash');var squel=require(_0x9ee3('0xd'));var crypto=require(_0x9ee3('0xe'));var jsforce=require(_0x9ee3('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x9ee3('0xa'));var querystring=require('querystring');var Papa=require(_0x9ee3('0x10'));var Redis=require('ioredis');var authService=require(_0x9ee3('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9ee3('0x12'));var logger=require('../../config/logger')(_0x9ee3('0x13'));var utils=require('../../config/utils');var config=require(_0x9ee3('0x14'));var licenseUtil=require(_0x9ee3('0x15'));var db=require(_0x9ee3('0x16'))['db'];var integrations=require(_0x9ee3('0x17'));function respondWithStatusCode(_0x262724,_0x46eb9c){_0x46eb9c=_0x46eb9c||0xcc;return function(_0x64e211){if(_0x64e211){return _0x262724['sendStatus'](_0x46eb9c);}return _0x262724[_0x9ee3('0x18')](_0x46eb9c)[_0x9ee3('0x19')]();};}function respondWithResult(_0x7fa8c,_0x579438){_0x579438=_0x579438||0xc8;return function(_0x2cd693){if(_0x2cd693){return _0x7fa8c[_0x9ee3('0x18')](_0x579438)[_0x9ee3('0x1a')](_0x2cd693);}};}function respondWithFilteredResult(_0x4240e5,_0x53f4a0){return function(_0x47ce82){if(_0x47ce82){var _0xa60602=typeof _0x53f4a0[_0x9ee3('0x1b')]===_0x9ee3('0x1c')&&typeof _0x53f4a0[_0x9ee3('0x1d')]===_0x9ee3('0x1c');var _0x407a52=_0x47ce82['count'];var _0x4a987a=_0xa60602?0x0:_0x53f4a0[_0x9ee3('0x1b')];var _0x1342e2=_0xa60602?_0x47ce82[_0x9ee3('0x1e')]:_0x53f4a0[_0x9ee3('0x1b')]+_0x53f4a0[_0x9ee3('0x1d')];var _0x25fad6;if(_0x1342e2>=_0x407a52){_0x1342e2=_0x407a52;_0x25fad6=0xc8;}else{_0x25fad6=0xce;}_0x4240e5[_0x9ee3('0x18')](_0x25fad6);return _0x4240e5[_0x9ee3('0x1f')](_0x9ee3('0x20'),_0x4a987a+'-'+_0x1342e2+'/'+_0x407a52)[_0x9ee3('0x1a')](_0x47ce82);}return null;};}function patchUpdates(_0x506040){return function(_0x40f553){try{jsonpatch[_0x9ee3('0x21')](_0x40f553,_0x506040,!![]);}catch(_0x136706){return BPromise[_0x9ee3('0x22')](_0x136706);}return _0x40f553[_0x9ee3('0x23')]();};}function saveUpdates(_0x44bc5a,_0x5f1c6a){return function(_0xa34734){if(_0xa34734){return _0xa34734[_0x9ee3('0x24')](_0x44bc5a)[_0x9ee3('0x25')](function(_0x2533c6){return _0x2533c6;});}return null;};}function removeEntity(_0x54f404,_0x511a84){return function(_0x4142fc){if(_0x4142fc){return _0x4142fc[_0x9ee3('0x26')]()[_0x9ee3('0x25')](function(){_0x54f404[_0x9ee3('0x18')](0xcc)[_0x9ee3('0x19')]();});}};}function handleEntityNotFound(_0x123fc7,_0x353e55){return function(_0x144c79){if(!_0x144c79){_0x123fc7[_0x9ee3('0x27')](0x194);}return _0x144c79;};}function handleError(_0x3bfe3e,_0x3b17d8){_0x3b17d8=_0x3b17d8||0x1f4;return function(_0x598276){logger['error'](_0x598276[_0x9ee3('0x28')]);if(_0x598276[_0x9ee3('0x29')]){delete _0x598276[_0x9ee3('0x29')];}_0x3bfe3e[_0x9ee3('0x18')](_0x3b17d8)[_0x9ee3('0x2a')](_0x598276);};}exports[_0x9ee3('0x2b')]=function(_0x24f68f,_0x454f96){var _0xe64e6c={},_0x5633a3={},_0x41037f={'count':0x0,'rows':[]};var _0x182f21=_[_0x9ee3('0x2c')](db[_0x9ee3('0x2d')]['rawAttributes'],function(_0xb5987a){return{'name':_0xb5987a[_0x9ee3('0x2e')],'type':_0xb5987a['type'][_0x9ee3('0x2f')]};});_0x5633a3[_0x9ee3('0x30')]=_[_0x9ee3('0x2c')](_0x182f21,'name');_0x5633a3[_0x9ee3('0x31')]=_['keys'](_0x24f68f['query']);_0x5633a3[_0x9ee3('0x32')]=_[_0x9ee3('0x33')](_0x5633a3[_0x9ee3('0x30')],_0x5633a3[_0x9ee3('0x31')]);_0xe64e6c['attributes']=_[_0x9ee3('0x33')](_0x5633a3[_0x9ee3('0x30')],qs[_0x9ee3('0x34')](_0x24f68f[_0x9ee3('0x31')]['fields']));_0xe64e6c['attributes']=_0xe64e6c[_0x9ee3('0x35')][_0x9ee3('0x36')]?_0xe64e6c['attributes']:_0x5633a3[_0x9ee3('0x30')];if(!_0x24f68f[_0x9ee3('0x31')]['hasOwnProperty'](_0x9ee3('0x37'))){_0xe64e6c[_0x9ee3('0x1d')]=qs[_0x9ee3('0x1d')](_0x24f68f[_0x9ee3('0x31')]['limit']);_0xe64e6c[_0x9ee3('0x1b')]=qs[_0x9ee3('0x1b')](_0x24f68f[_0x9ee3('0x31')][_0x9ee3('0x1b')]);}_0xe64e6c[_0x9ee3('0x38')]=qs[_0x9ee3('0x39')](_0x24f68f[_0x9ee3('0x31')][_0x9ee3('0x39')]);_0xe64e6c[_0x9ee3('0x3a')]=qs[_0x9ee3('0x32')](_[_0x9ee3('0x3b')](_0x24f68f[_0x9ee3('0x31')],_0x5633a3[_0x9ee3('0x32')]),_0x182f21);if(_0x24f68f[_0x9ee3('0x31')][_0x9ee3('0x3c')]){_0xe64e6c[_0x9ee3('0x3a')]=_[_0x9ee3('0x3d')](_0xe64e6c[_0x9ee3('0x3a')],{'$or':_['map'](_0x182f21,function(_0xc2c10a){if(_0xc2c10a[_0x9ee3('0x3e')]!=='VIRTUAL'){var _0x1068fe={};_0x1068fe[_0xc2c10a[_0x9ee3('0x29')]]={'$like':'%'+_0x24f68f['query'][_0x9ee3('0x3c')]+'%'};return _0x1068fe;}})});}_0xe64e6c=_[_0x9ee3('0x3d')]({},_0xe64e6c,_0x24f68f[_0x9ee3('0x3f')]);var _0x5a3acb={'where':_0xe64e6c[_0x9ee3('0x3a')]};return db[_0x9ee3('0x2d')][_0x9ee3('0x1e')](_0x5a3acb)[_0x9ee3('0x25')](function(_0x31cf6d){_0x41037f[_0x9ee3('0x1e')]=_0x31cf6d;if(_0x24f68f[_0x9ee3('0x31')][_0x9ee3('0x40')]){_0xe64e6c[_0x9ee3('0x41')]=[{'all':!![]}];}return db[_0x9ee3('0x2d')]['findAll'](_0xe64e6c);})[_0x9ee3('0x25')](function(_0x39ef8c){_0x41037f[_0x9ee3('0x42')]=_0x39ef8c;return _0x41037f;})[_0x9ee3('0x25')](respondWithFilteredResult(_0x454f96,_0xe64e6c))[_0x9ee3('0x43')](handleError(_0x454f96,null));};exports[_0x9ee3('0x44')]=function(_0x44be20,_0x3f1ded){var _0x301976={'raw':![],'where':{'id':_0x44be20[_0x9ee3('0x45')]['id']}},_0x7b854d={};_0x7b854d[_0x9ee3('0x30')]=_[_0x9ee3('0x46')](db[_0x9ee3('0x2d')]['rawAttributes']);_0x7b854d[_0x9ee3('0x31')]=_['keys'](_0x44be20[_0x9ee3('0x31')]);_0x7b854d[_0x9ee3('0x32')]=_[_0x9ee3('0x33')](_0x7b854d[_0x9ee3('0x30')],_0x7b854d['query']);_0x301976[_0x9ee3('0x35')]=_['intersection'](_0x7b854d['model'],qs[_0x9ee3('0x34')](_0x44be20[_0x9ee3('0x31')]['fields']));_0x301976[_0x9ee3('0x35')]=_0x301976['attributes'][_0x9ee3('0x36')]?_0x301976['attributes']:_0x7b854d[_0x9ee3('0x30')];if(_0x44be20['query']['includeAll']){_0x301976[_0x9ee3('0x41')]=[{'all':!![]}];}_0x301976=_[_0x9ee3('0x3d')]({},_0x301976,_0x44be20[_0x9ee3('0x3f')]);return db['Dynamics365Account'][_0x9ee3('0x47')](_0x301976)[_0x9ee3('0x25')](handleEntityNotFound(_0x3f1ded,null))[_0x9ee3('0x25')](respondWithResult(_0x3f1ded,null))[_0x9ee3('0x43')](handleError(_0x3f1ded,null));};exports[_0x9ee3('0x48')]=function(_0x320cd6,_0x38d43f){return db['Dynamics365Account'][_0x9ee3('0x48')](_0x320cd6[_0x9ee3('0x49')],{})[_0x9ee3('0x25')](respondWithResult(_0x38d43f,0xc9))[_0x9ee3('0x43')](handleError(_0x38d43f,null));};exports['update']=function(_0x4005b5,_0xaa10be){if(_0x4005b5[_0x9ee3('0x49')]['id']){delete _0x4005b5['body']['id'];}return db[_0x9ee3('0x2d')][_0x9ee3('0x47')]({'where':{'id':_0x4005b5['params']['id']}})[_0x9ee3('0x25')](handleEntityNotFound(_0xaa10be,null))[_0x9ee3('0x25')](saveUpdates(_0x4005b5[_0x9ee3('0x49')],null))[_0x9ee3('0x25')](respondWithResult(_0xaa10be,null))[_0x9ee3('0x43')](handleError(_0xaa10be,null));};exports[_0x9ee3('0x26')]=function(_0x4ce44f,_0x5676a7){return db[_0x9ee3('0x2d')]['find']({'where':{'id':_0x4ce44f[_0x9ee3('0x45')]['id']}})[_0x9ee3('0x25')](handleEntityNotFound(_0x5676a7,null))['then'](removeEntity(_0x5676a7,null))['catch'](handleError(_0x5676a7,null));};exports[_0x9ee3('0x4a')]=function(_0x4e2aac,_0xeb05c1,_0x27def9){var _0x1116c0={};var _0x2643bc={};var _0x5bae59;var _0x4f8999;return db[_0x9ee3('0x2d')][_0x9ee3('0x4b')]({'where':{'id':_0x4e2aac[_0x9ee3('0x45')]['id']}})[_0x9ee3('0x25')](handleEntityNotFound(_0xeb05c1,null))[_0x9ee3('0x25')](function(_0x358720){if(_0x358720){_0x5bae59=_0x358720;_0x2643bc[_0x9ee3('0x30')]=_['keys'](db[_0x9ee3('0x4c')][_0x9ee3('0x4d')]);_0x2643bc[_0x9ee3('0x31')]=_[_0x9ee3('0x46')](_0x4e2aac[_0x9ee3('0x31')]);_0x2643bc[_0x9ee3('0x32')]=_['intersection'](_0x2643bc[_0x9ee3('0x30')],_0x2643bc['query']);_0x1116c0[_0x9ee3('0x35')]=_[_0x9ee3('0x33')](_0x2643bc[_0x9ee3('0x30')],qs[_0x9ee3('0x34')](_0x4e2aac[_0x9ee3('0x31')]['fields']));_0x1116c0[_0x9ee3('0x35')]=_0x1116c0[_0x9ee3('0x35')][_0x9ee3('0x36')]?_0x1116c0['attributes']:_0x2643bc[_0x9ee3('0x30')];_0x1116c0[_0x9ee3('0x38')]=qs['sort'](_0x4e2aac[_0x9ee3('0x31')][_0x9ee3('0x39')]);_0x1116c0['where']=qs[_0x9ee3('0x32')](_[_0x9ee3('0x3b')](_0x4e2aac['query'],_0x2643bc[_0x9ee3('0x32')]));if(_0x4e2aac[_0x9ee3('0x31')]['filter']){_0x1116c0[_0x9ee3('0x3a')]=_[_0x9ee3('0x3d')](_0x1116c0['where'],{'$or':_[_0x9ee3('0x2c')](_0x1116c0[_0x9ee3('0x35')],function(_0x34c070){var _0x25806a={};_0x25806a[_0x34c070]={'$like':'%'+_0x4e2aac[_0x9ee3('0x31')][_0x9ee3('0x3c')]+'%'};return _0x25806a;})});}_0x1116c0=_[_0x9ee3('0x3d')]({},_0x1116c0,_0x4e2aac[_0x9ee3('0x3f')]);return _0x5bae59[_0x9ee3('0x4a')](_0x1116c0);}})[_0x9ee3('0x25')](function(_0x36503){if(_0x36503){_0x4f8999=_0x36503[_0x9ee3('0x36')];if(!_0x4e2aac[_0x9ee3('0x31')][_0x9ee3('0x4e')](_0x9ee3('0x37'))){_0x1116c0['limit']=qs[_0x9ee3('0x1d')](_0x4e2aac[_0x9ee3('0x31')][_0x9ee3('0x1d')]);_0x1116c0[_0x9ee3('0x1b')]=qs[_0x9ee3('0x1b')](_0x4e2aac['query'][_0x9ee3('0x1b')]);}return _0x5bae59['getConfigurations'](_0x1116c0);}})[_0x9ee3('0x25')](function(_0x274dc8){if(_0x274dc8){return _0x274dc8?{'count':_0x4f8999,'rows':_0x274dc8}:null;}})[_0x9ee3('0x25')](respondWithResult(_0xeb05c1,null))[_0x9ee3('0x43')](handleError(_0xeb05c1,null));};exports['addConfiguration']=function(_0x4f2b80,_0x4284a3,_0x16ed27){if(_0x4f2b80[_0x9ee3('0x49')]['id']){delete _0x4f2b80[_0x9ee3('0x49')]['id'];}return db['Dynamics365Account'][_0x9ee3('0x4b')]({'where':{'id':_0x4f2b80[_0x9ee3('0x45')]['id']}})['then'](handleEntityNotFound(_0x4284a3,null))['then'](function(_0xd6e80f){if(_0xd6e80f){_0x4f2b80[_0x9ee3('0x49')][_0x9ee3('0x4f')]=_0xd6e80f['id'];_0x4f2b80[_0x9ee3('0x49')][_0x9ee3('0x50')]=integrations[_0x9ee3('0x51')](_0x4f2b80[_0x9ee3('0x49')]['channel'],_0x4f2b80['body']['type']);_0x4f2b80[_0x9ee3('0x49')]['Descriptions']=integrations[_0x9ee3('0x52')](_0x4f2b80[_0x9ee3('0x49')][_0x9ee3('0x53')],_0x4f2b80['body'][_0x9ee3('0x3e')]);return db[_0x9ee3('0x4c')][_0x9ee3('0x48')](_0x4f2b80[_0x9ee3('0x49')],{'include':[{'model':db[_0x9ee3('0x54')],'as':_0x9ee3('0x50')},{'model':db[_0x9ee3('0x54')],'as':'Descriptions'}]});}return null;})[_0x9ee3('0x25')](respondWithResult(_0x4284a3,null))[_0x9ee3('0x43')](handleError(_0x4284a3,null));};exports['getFields']=function(_0x1592eb,_0x326927,_0x36da32){var _0x3650bd=_0x1592eb[_0x9ee3('0x31')]['ticketType'];var _0x3cd92d=_0x3650bd===_0x9ee3('0x55')?'Incident':_0x9ee3('0x56');var _0x1fd079='';var _0x5ae68d='';var _0x281719='';var _0x29efd6='';var _0x938cc7='';var _0x5c7852='';var _0x1fec98='';var _0x26e860='';var _0x1c2223=[_0x9ee3('0x57'),'description',_0x9ee3('0x58'),_0x9ee3('0x59'),'caseorigincode',_0x9ee3('0x5a'),_0x9ee3('0x5b'),'regardingobjectid',_0x9ee3('0x5c'),_0x9ee3('0x5d')];var _0xa3db9e=['accountidname',_0x9ee3('0x5e'),_0x9ee3('0x5f'),'billedserviceunits',_0x9ee3('0x60'),_0x9ee3('0x61'),_0x9ee3('0x62'),'contractidname',_0x9ee3('0x63'),'createdbyexternalpartyyominame','createdbyname',_0x9ee3('0x64'),_0x9ee3('0x65'),_0x9ee3('0x66'),_0x9ee3('0x67'),_0x9ee3('0x68'),_0x9ee3('0x69'),_0x9ee3('0x6a'),_0x9ee3('0x6b'),_0x9ee3('0x6c'),_0x9ee3('0x6d'),_0x9ee3('0x6e'),_0x9ee3('0x6f'),'exchangerate',_0x9ee3('0x70'),_0x9ee3('0x71'),_0x9ee3('0x72'),_0x9ee3('0x73'),_0x9ee3('0x74'),_0x9ee3('0x75'),_0x9ee3('0x76'),'modifiedbyexternalpartyname',_0x9ee3('0x77'),_0x9ee3('0x78'),_0x9ee3('0x79'),_0x9ee3('0x7a'),_0x9ee3('0x7b'),_0x9ee3('0x7c'),_0x9ee3('0x7d'),_0x9ee3('0x7e'),_0x9ee3('0x7f'),'onholdtime','overriddencreatedon',_0x9ee3('0x80'),_0x9ee3('0x81'),_0x9ee3('0x82'),_0x9ee3('0x83'),_0x9ee3('0x84'),'primarycontactidyominame',_0x9ee3('0x85'),'productidname',_0x9ee3('0x86'),_0x9ee3('0x87'),_0x9ee3('0x88'),_0x9ee3('0x89'),_0x9ee3('0x8a'),_0x9ee3('0x8b'),_0x9ee3('0x8c'),'slainvokedidname',_0x9ee3('0x8d'),_0x9ee3('0x8e'),'statecode','statuscode',_0x9ee3('0x8f'),_0x9ee3('0x90'),'timezoneruleversionnumber',_0x9ee3('0x91'),'traversedpath',_0x9ee3('0x92'),'versionnumber'];var _0x2177ac=_0x1c2223[_0x9ee3('0x93')](_0xa3db9e);return db[_0x9ee3('0x2d')][_0x9ee3('0x4b')]({'where':{'id':_0x1592eb[_0x9ee3('0x45')]['id']},'attributes':['id','username',_0x9ee3('0x94'),_0x9ee3('0x95'),_0x9ee3('0x96'),_0x9ee3('0x97'),_0x9ee3('0x98')]})[_0x9ee3('0x25')](handleEntityNotFound(_0x326927,null))[_0x9ee3('0x25')](function(_0x413c6e){if(_0x413c6e){_0x26e860=_0x413c6e['remoteUri'];var _0x41026e=_0x26e860[_0x9ee3('0x99')](-0x1);if(_0x41026e==='/'){_0x26e860=_0x26e860[_0x9ee3('0x9a')](0x0,_0x26e860[_0x9ee3('0x9b')](_0x41026e));}_0x1fec98=util[_0x9ee3('0x9c')](_0x9ee3('0x9d'),_0x26e860);var _0x583f7e={'method':'POST','uri':_0x9ee3('0x9e')+_0x413c6e[_0x9ee3('0x96')]+_0x9ee3('0x9f'),'form':{'client_id':_0x413c6e[_0x9ee3('0x97')],'resource':_0x26e860,'username':_0x413c6e[_0x9ee3('0xa0')],'password':_0x413c6e['password'],'grant_type':_0x9ee3('0x94'),'client_secret':_0x413c6e[_0x9ee3('0x98')]},'json':!![]};return rp(_0x583f7e);}})[_0x9ee3('0x25')](function(_0x5ef0f8){_0x5c7852=_0x5ef0f8['access_token'];var _0x2ad6cb={'method':_0x9ee3('0xa1'),'uri':encodeURI(_0x1fec98+'EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27'+_0x3cd92d+'\x27'),'headers':{'Authorization':_0x9ee3('0xa2')+_0x5c7852,'If-None-Match':null,'OData-Version':_0x9ee3('0xa3')},'json':!![]};return rp(_0x2ad6cb);})[_0x9ee3('0x25')](function(_0x5535fa){var _0x3e4ec3=_0x5535fa['value'][0x0];var _0x44c9a1=_0x3e4ec3[_0x9ee3('0xa4')];var _0x45a05d={'method':_0x9ee3('0xa1'),'uri':_0x1fec98+_0x9ee3('0xa5')+_0x44c9a1+_0x9ee3('0xa6'),'headers':{'Authorization':_0x9ee3('0xa2')+_0x5c7852,'If-None-Match':null,'OData-Version':_0x9ee3('0xa3')},'json':!![]};return rp(_0x45a05d);})['then'](function(_0x15fb31){_0x1fd079=_0x15fb31;_0x5ae68d=_0x1fd079[_0x9ee3('0xa7')];_0x5ae68d=_[_0x9ee3('0xa8')](_0x5ae68d,function(_0x4bf3ef){return!_0x2177ac[_0x9ee3('0xa9')](_0x4bf3ef[_0x9ee3('0xaa')]);});var _0x2ac72c=[];var _0x33efe2=[];_0x5ae68d[_0x9ee3('0xab')](function(_0x1bc93a){if(_0x1bc93a[_0x9ee3('0xac')]){var _0x1c76cf=_0x1bc93a[_0x9ee3('0xac')]['substring'](_0x1bc93a['@odata.type'][_0x9ee3('0x9b')]('.')+0x1);if(_0x1c76cf==='PicklistAttributeMetadata'){_0x2ac72c['push'](getSelectList(_0x1fec98,_0x3650bd,_0x33efe2,_0x1fd079[_0x9ee3('0xa4')],_0x1bc93a[_0x9ee3('0xa4')],_0x5c7852));}}});return Promise[_0x9ee3('0xad')](_0x2ac72c);})[_0x9ee3('0x25')](function(_0x537588){_0x281719=_0x537588[0x0];var _0x1aceff=[];var _0x1e846c=[];_0x5ae68d[_0x9ee3('0xab')](function(_0x164763){if(!_[_0x9ee3('0xae')](_0x164763[_0x9ee3('0xac')])){var _0x10abed=_0x164763[_0x9ee3('0xac')][_0x9ee3('0x9a')](_0x164763[_0x9ee3('0xac')][_0x9ee3('0x9b')]('.')+0x1);if(_0x10abed===_0x9ee3('0xaf')){_0x1aceff[_0x9ee3('0xb0')](getBooleanList(_0x1fec98,_0x3650bd,_0x1e846c,_0x1fd079[_0x9ee3('0xa4')],_0x164763['MetadataId'],_0x5c7852));}}});return Promise[_0x9ee3('0xad')](_0x1aceff);})[_0x9ee3('0x25')](function(_0x410b3e){_0x29efd6=_0x410b3e[0x0];var _0x5c7f14=[];var _0x441527=[];_0x5ae68d[_0x9ee3('0xab')](function(_0x501de8){if(_0x501de8[_0x9ee3('0xac')]){var _0x811ec=_0x501de8[_0x9ee3('0xac')][_0x9ee3('0x9a')](_0x501de8[_0x9ee3('0xac')][_0x9ee3('0x9b')]('.')+0x1);if(_0x811ec===_0x9ee3('0xb1')||_0x811ec==='DoubleAttributeMetadata'||_0x811ec===_0x9ee3('0xb2')||_0x811ec===_0x9ee3('0xb3')||_0x811ec===_0x9ee3('0xb4')||_0x811ec===_0x9ee3('0xb5')||_0x811ec===_0x9ee3('0xb6')||_0x811ec===_0x9ee3('0xb7')||_0x811ec===_0x9ee3('0xb8')||_0x811ec===_0x9ee3('0xb9')){_0x5c7f14[_0x9ee3('0xb0')](getInputList(_0x1fec98,_0x3650bd,_0x811ec,_0x441527,_0x1fd079[_0x9ee3('0xa4')],_0x501de8[_0x9ee3('0xa4')],_0x5c7852));}}});return Promise[_0x9ee3('0xad')](_0x5c7f14);})[_0x9ee3('0x25')](function(_0x5cd6c9){_0x938cc7=_0x5cd6c9[0x0];var _0x5738bf=_0x281719[_0x9ee3('0x93')](_0x29efd6)[_0x9ee3('0x93')](_0x938cc7);var _0x21b3f3={'count':_0x5738bf[_0x9ee3('0x36')],'rows':_0x5738bf};return _0x21b3f3;})['then'](respondWithResult(_0x326927,null))[_0x9ee3('0x43')](function(_0xe009c5){var _0x15926d=_0x1592eb[_0x9ee3('0x31')][_0x9ee3('0xba')]?0x1f4:_0xe009c5['statusCode']||0x1f4;logger[_0x9ee3('0xbb')](_0xe009c5['stack']);delete _0xe009c5[_0x9ee3('0x29')];if(_0x15926d===0x191){_0x15926d=0x190;}_0x326927['status'](_0x15926d)[_0x9ee3('0x2a')](_0x1592eb['query'][_0x9ee3('0xba')]?{'message':_0x9ee3('0xbc'),'statusCode':_0xe009c5[_0x9ee3('0xbd')]}:_0xe009c5);});};function getSelectList(_0x596cea,_0xcd483b,_0x4751df,_0x18a5e2,_0x16d8a2,_0x40d7f1){var _0x3ae1ab={'method':_0x9ee3('0xa1'),'uri':_0x596cea+_0x9ee3('0xa5')+_0x18a5e2+')/Attributes('+_0x16d8a2+_0x9ee3('0xbe')+_0x9ee3('0xbf'),'headers':{'Authorization':_0x9ee3('0xa2')+_0x40d7f1,'If-None-Match':null,'OData-Version':_0x9ee3('0xa3')},'json':!![]};return rp(_0x3ae1ab)[_0x9ee3('0x25')](function(_0x14c99a){var _0x30cbf1=[];var _0x3f7f6c=_0x14c99a['OptionSet'][_0x9ee3('0xc0')];_0x3f7f6c[_0x9ee3('0xab')](function(_0x4f1fbd){_0x30cbf1[_0x9ee3('0xb0')]({'name':_0x4f1fbd[_0x9ee3('0xc1')][_0x9ee3('0xc2')][_0x9ee3('0xc1')],'value':String(_0x4f1fbd[_0x9ee3('0xc3')])});});var _0x5b8b93={'id':_0xcd483b+'_'+_0x14c99a[_0x9ee3('0xaa')],'name':_0x14c99a['DisplayName'][_0x9ee3('0xc2')][_0x9ee3('0xc1')],'custom':![],'options':_0x30cbf1};_0x4751df[_0x9ee3('0xb0')](_0x5b8b93);return _0x4751df;});}function getBooleanList(_0x7995c4,_0x20f16b,_0x1defcd,_0x1bb273,_0x27923a,_0x521828){var _0xe25c4d={'method':_0x9ee3('0xa1'),'uri':_0x7995c4+_0x9ee3('0xa5')+_0x1bb273+')/Attributes('+_0x27923a+')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','headers':{'Authorization':_0x9ee3('0xa2')+_0x521828,'If-None-Match':null,'OData-Version':_0x9ee3('0xa3')},'json':!![]};return rp(_0xe25c4d)['then'](function(_0x3ab1ae){var _0x39da5a=[];_0x39da5a['push']({'name':_0x3ab1ae[_0x9ee3('0xc4')][_0x9ee3('0xc5')][_0x9ee3('0xc1')][_0x9ee3('0xc2')][_0x9ee3('0xc1')],'value':_0x9ee3('0xc6')},{'name':_0x3ab1ae[_0x9ee3('0xc4')]['FalseOption'][_0x9ee3('0xc1')][_0x9ee3('0xc2')][_0x9ee3('0xc1')],'value':'false'});var _0x4683ef={'id':_0x20f16b+'_'+_0x3ab1ae[_0x9ee3('0xaa')],'name':_0x3ab1ae[_0x9ee3('0xc7')][_0x9ee3('0xc2')][_0x9ee3('0xc1')],'custom':![],'options':_0x39da5a};_0x1defcd[_0x9ee3('0xb0')](_0x4683ef);return _0x1defcd;});}function getInputList(_0x1d859b,_0x3a39d9,_0x5e0388,_0x55917f,_0x23695a,_0x58eca8,_0x2a89a5){var _0x165e00={'method':_0x9ee3('0xa1'),'uri':_0x1d859b+_0x9ee3('0xa5')+_0x23695a+_0x9ee3('0xc8')+_0x58eca8+_0x9ee3('0xc9')+_0x5e0388+_0x9ee3('0xca'),'headers':{'Authorization':_0x9ee3('0xa2')+_0x2a89a5,'If-None-Match':null,'OData-Version':_0x9ee3('0xa3')},'json':!![]};return rp(_0x165e00)[_0x9ee3('0x25')](function(_0x50dcbc){var _0x4c2787={'id':_0x3a39d9+'_'+_0x50dcbc[_0x9ee3('0xaa')],'name':_0x50dcbc[_0x9ee3('0xc7')][_0x9ee3('0xc2')]?_0x50dcbc[_0x9ee3('0xc7')][_0x9ee3('0xc2')][_0x9ee3('0xc1')]:_0x50dcbc['LogicalName'],'custom':![],'options':[]};_0x55917f[_0x9ee3('0xb0')](_0x4c2787);return _0x55917f;});}
\ No newline at end of file
+var _0xe062=['Options','Label',')/Attributes(',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','TrueOption','UserLocalizedLabel','true','DisplayName',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','eml-format','rimraf','fast-json-patch','request-promise','moment','util','path','ejs','fs-extra','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','map','Dynamics365Account','rawAttributes','fieldName','type','key','model','query','filters','attributes','fields','length','hasOwnProperty','nolimit','sort','filter','where','includeAll','include','findAll','rows','show','params','keys','intersection','options','find','catch','create','body','Dynamics365Configuration','order','merge','getConfigurations','addConfiguration','findOne','AccountId','Subjects','channel','Descriptions','getDescriptions','Dynamics365Field','getFields','ticketType','incident','Incident','PhoneCall','caseorigincode','subject','phonenumber','regardingobjectid','directioncode','phonecall_activity_parties','accountidname','accountidyominame','actualserviceunits','billedserviceunits','contactidname','contractdetailidname','contractidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdon','createdonbehalfbyname','createdonbehalfbyyominame','customeridname','customeridtype','customeridyominame','emailaddress','entityimage_timestamp','entityimage_url','escalatedon','exchangerate','firstresponsebykpiidname','followupby','importsequencenumber','influencescore','kbarticleidname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedbyyominame','modifiedon','modifiedonbehalfbyname','msdyn_iotalertname','overriddencreatedon','owneridname','owneridyominame','primarycontactidname','primarycontactidyominame','prioritycodename','productidname','resolveby','resolvebykpiidname','responseby','responsiblecontactidname','sentimentvalue','socialprofileidname','subjectidname','ticketnumber','timezoneruleversionnumber','transactioncurrencyidname','utcconversiontimezonecode','versionnumber','concat','username','password','remoteUri','tenantId','clientId','clientSecret','slice','substring','lastIndexOf','format','POST','https://login.microsoftonline.com/','/oauth2/token','access_token','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','4.0','value','MetadataId','GET','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Attributes','remove','includes','LogicalName','forEach','@odata.type','push','isNil','BooleanAttributeMetadata','all','StringAttributeMetadata','DoubleAttributeMetadata','BigIntAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','DecimalAttributeMetadata','test','statusCode',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','OptionSet'];(function(_0x17cca1,_0x4cd1f6){var _0x2a1d4a=function(_0x33c8a1){while(--_0x33c8a1){_0x17cca1['push'](_0x17cca1['shift']());}};_0x2a1d4a(++_0x4cd1f6);}(_0xe062,0xd5));var _0x2e06=function(_0x1c9d09,_0x428f08){_0x1c9d09=_0x1c9d09-0x0;var _0x3de494=_0xe062[_0x1c9d09];return _0x3de494;};'use strict';var emlformat=require(_0x2e06('0x0'));var rimraf=require(_0x2e06('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2e06('0x2'));var rp=require(_0x2e06('0x3'));var moment=require(_0x2e06('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x2e06('0x5'));var path=require(_0x2e06('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x2e06('0x7'));var fs=require('fs');var fs_extra=require(_0x2e06('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x2e06('0x9'));var jsforce=require(_0x2e06('0xa'));var deskjs=require(_0x2e06('0xb'));var toCsv=require(_0x2e06('0xc'));var querystring=require(_0x2e06('0xd'));var Papa=require(_0x2e06('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x2e06('0xf'));var as=require(_0x2e06('0x10'));var hardwareService=require(_0x2e06('0x11'));var logger=require('../../config/logger')(_0x2e06('0x12'));var utils=require(_0x2e06('0x13'));var config=require(_0x2e06('0x14'));var licenseUtil=require(_0x2e06('0x15'));var db=require('../../mysqldb')['db'];var integrations=require(_0x2e06('0x16'));function respondWithStatusCode(_0x11520b,_0x542f63){_0x542f63=_0x542f63||0xcc;return function(_0xd781db){if(_0xd781db){return _0x11520b[_0x2e06('0x17')](_0x542f63);}return _0x11520b['status'](_0x542f63)[_0x2e06('0x18')]();};}function respondWithResult(_0x2a3a2a,_0x9a3ab4){_0x9a3ab4=_0x9a3ab4||0xc8;return function(_0x25909a){if(_0x25909a){return _0x2a3a2a[_0x2e06('0x19')](_0x9a3ab4)[_0x2e06('0x1a')](_0x25909a);}};}function respondWithFilteredResult(_0x5e4795,_0x3b307d){return function(_0x330e5e){if(_0x330e5e){var _0x210e11=typeof _0x3b307d[_0x2e06('0x1b')]===_0x2e06('0x1c')&&typeof _0x3b307d[_0x2e06('0x1d')]===_0x2e06('0x1c');var _0xb67ba8=_0x330e5e[_0x2e06('0x1e')];var _0x4fd048=_0x210e11?0x0:_0x3b307d[_0x2e06('0x1b')];var _0x45052c=_0x210e11?_0x330e5e['count']:_0x3b307d[_0x2e06('0x1b')]+_0x3b307d[_0x2e06('0x1d')];var _0x2c2320;if(_0x45052c>=_0xb67ba8){_0x45052c=_0xb67ba8;_0x2c2320=0xc8;}else{_0x2c2320=0xce;}_0x5e4795[_0x2e06('0x19')](_0x2c2320);return _0x5e4795[_0x2e06('0x1f')](_0x2e06('0x20'),_0x4fd048+'-'+_0x45052c+'/'+_0xb67ba8)[_0x2e06('0x1a')](_0x330e5e);}return null;};}function patchUpdates(_0x38ec0f){return function(_0xf95487){try{jsonpatch[_0x2e06('0x21')](_0xf95487,_0x38ec0f,!![]);}catch(_0x358cf6){return BPromise[_0x2e06('0x22')](_0x358cf6);}return _0xf95487[_0x2e06('0x23')]();};}function saveUpdates(_0x2a31d7,_0x27d028){return function(_0x38b5db){if(_0x38b5db){return _0x38b5db[_0x2e06('0x24')](_0x2a31d7)[_0x2e06('0x25')](function(_0x4963eb){return _0x4963eb;});}return null;};}function removeEntity(_0x21eea1,_0x1c1e6f){return function(_0x74e8e6){if(_0x74e8e6){return _0x74e8e6[_0x2e06('0x26')]()[_0x2e06('0x25')](function(){_0x21eea1[_0x2e06('0x19')](0xcc)[_0x2e06('0x18')]();});}};}function handleEntityNotFound(_0x1ed50e,_0x202338){return function(_0x4a0dbc){if(!_0x4a0dbc){_0x1ed50e[_0x2e06('0x17')](0x194);}return _0x4a0dbc;};}function handleError(_0x123daf,_0xdcb6f8){_0xdcb6f8=_0xdcb6f8||0x1f4;return function(_0x3d1011){logger[_0x2e06('0x27')](_0x3d1011['stack']);if(_0x3d1011[_0x2e06('0x28')]){delete _0x3d1011['name'];}_0x123daf[_0x2e06('0x19')](_0xdcb6f8)[_0x2e06('0x29')](_0x3d1011);};}exports['index']=function(_0x149901,_0x18f703){var _0x3ff289={},_0x5116f1={},_0x5a48f6={'count':0x0,'rows':[]};var _0x2cb75f=_[_0x2e06('0x2a')](db[_0x2e06('0x2b')][_0x2e06('0x2c')],function(_0x394619){return{'name':_0x394619[_0x2e06('0x2d')],'type':_0x394619[_0x2e06('0x2e')][_0x2e06('0x2f')]};});_0x5116f1[_0x2e06('0x30')]=_['map'](_0x2cb75f,'name');_0x5116f1['query']=_['keys'](_0x149901[_0x2e06('0x31')]);_0x5116f1[_0x2e06('0x32')]=_['intersection'](_0x5116f1[_0x2e06('0x30')],_0x5116f1[_0x2e06('0x31')]);_0x3ff289[_0x2e06('0x33')]=_['intersection'](_0x5116f1[_0x2e06('0x30')],qs[_0x2e06('0x34')](_0x149901['query'][_0x2e06('0x34')]));_0x3ff289[_0x2e06('0x33')]=_0x3ff289[_0x2e06('0x33')][_0x2e06('0x35')]?_0x3ff289['attributes']:_0x5116f1[_0x2e06('0x30')];if(!_0x149901[_0x2e06('0x31')][_0x2e06('0x36')](_0x2e06('0x37'))){_0x3ff289['limit']=qs[_0x2e06('0x1d')](_0x149901[_0x2e06('0x31')]['limit']);_0x3ff289['offset']=qs['offset'](_0x149901[_0x2e06('0x31')]['offset']);}_0x3ff289['order']=qs[_0x2e06('0x38')](_0x149901[_0x2e06('0x31')][_0x2e06('0x38')]);_0x3ff289['where']=qs[_0x2e06('0x32')](_['pick'](_0x149901[_0x2e06('0x31')],_0x5116f1['filters']),_0x2cb75f);if(_0x149901[_0x2e06('0x31')][_0x2e06('0x39')]){_0x3ff289['where']=_['merge'](_0x3ff289[_0x2e06('0x3a')],{'$or':_[_0x2e06('0x2a')](_0x2cb75f,function(_0x1eb25a){if(_0x1eb25a[_0x2e06('0x2e')]!=='VIRTUAL'){var _0x453bc={};_0x453bc[_0x1eb25a['name']]={'$like':'%'+_0x149901['query'][_0x2e06('0x39')]+'%'};return _0x453bc;}})});}_0x3ff289=_['merge']({},_0x3ff289,_0x149901['options']);var _0x253b32={'where':_0x3ff289[_0x2e06('0x3a')]};return db[_0x2e06('0x2b')][_0x2e06('0x1e')](_0x253b32)[_0x2e06('0x25')](function(_0x1d9895){_0x5a48f6[_0x2e06('0x1e')]=_0x1d9895;if(_0x149901[_0x2e06('0x31')][_0x2e06('0x3b')]){_0x3ff289[_0x2e06('0x3c')]=[{'all':!![]}];}return db['Dynamics365Account'][_0x2e06('0x3d')](_0x3ff289);})[_0x2e06('0x25')](function(_0x403741){_0x5a48f6[_0x2e06('0x3e')]=_0x403741;return _0x5a48f6;})[_0x2e06('0x25')](respondWithFilteredResult(_0x18f703,_0x3ff289))['catch'](handleError(_0x18f703,null));};exports[_0x2e06('0x3f')]=function(_0x3ca31c,_0x4a4c20){var _0x4fbc3b={'raw':![],'where':{'id':_0x3ca31c[_0x2e06('0x40')]['id']}},_0x9206ab={};_0x9206ab[_0x2e06('0x30')]=_[_0x2e06('0x41')](db['Dynamics365Account'][_0x2e06('0x2c')]);_0x9206ab['query']=_[_0x2e06('0x41')](_0x3ca31c['query']);_0x9206ab[_0x2e06('0x32')]=_[_0x2e06('0x42')](_0x9206ab[_0x2e06('0x30')],_0x9206ab['query']);_0x4fbc3b[_0x2e06('0x33')]=_[_0x2e06('0x42')](_0x9206ab['model'],qs[_0x2e06('0x34')](_0x3ca31c[_0x2e06('0x31')][_0x2e06('0x34')]));_0x4fbc3b[_0x2e06('0x33')]=_0x4fbc3b[_0x2e06('0x33')]['length']?_0x4fbc3b[_0x2e06('0x33')]:_0x9206ab[_0x2e06('0x30')];if(_0x3ca31c[_0x2e06('0x31')]['includeAll']){_0x4fbc3b[_0x2e06('0x3c')]=[{'all':!![]}];}_0x4fbc3b=_['merge']({},_0x4fbc3b,_0x3ca31c[_0x2e06('0x43')]);return db['Dynamics365Account'][_0x2e06('0x44')](_0x4fbc3b)['then'](handleEntityNotFound(_0x4a4c20,null))[_0x2e06('0x25')](respondWithResult(_0x4a4c20,null))[_0x2e06('0x45')](handleError(_0x4a4c20,null));};exports['create']=function(_0x111509,_0x50a7a1){return db[_0x2e06('0x2b')][_0x2e06('0x46')](_0x111509[_0x2e06('0x47')],{})['then'](respondWithResult(_0x50a7a1,0xc9))[_0x2e06('0x45')](handleError(_0x50a7a1,null));};exports['update']=function(_0x1de5dd,_0x5975e5){if(_0x1de5dd[_0x2e06('0x47')]['id']){delete _0x1de5dd[_0x2e06('0x47')]['id'];}return db[_0x2e06('0x2b')][_0x2e06('0x44')]({'where':{'id':_0x1de5dd['params']['id']}})[_0x2e06('0x25')](handleEntityNotFound(_0x5975e5,null))[_0x2e06('0x25')](saveUpdates(_0x1de5dd['body'],null))['then'](respondWithResult(_0x5975e5,null))[_0x2e06('0x45')](handleError(_0x5975e5,null));};exports['destroy']=function(_0x132a78,_0x11a5be){return db['Dynamics365Account'][_0x2e06('0x44')]({'where':{'id':_0x132a78[_0x2e06('0x40')]['id']}})[_0x2e06('0x25')](handleEntityNotFound(_0x11a5be,null))[_0x2e06('0x25')](removeEntity(_0x11a5be,null))[_0x2e06('0x45')](handleError(_0x11a5be,null));};exports['getConfigurations']=function(_0x55fa1a,_0x222452,_0x139d97){var _0x25ceff={};var _0x2c55e5={};var _0x4dc278;var _0x1d8bb8;return db[_0x2e06('0x2b')]['findOne']({'where':{'id':_0x55fa1a[_0x2e06('0x40')]['id']}})[_0x2e06('0x25')](handleEntityNotFound(_0x222452,null))['then'](function(_0x5ba6ec){if(_0x5ba6ec){_0x4dc278=_0x5ba6ec;_0x2c55e5[_0x2e06('0x30')]=_[_0x2e06('0x41')](db[_0x2e06('0x48')][_0x2e06('0x2c')]);_0x2c55e5[_0x2e06('0x31')]=_['keys'](_0x55fa1a['query']);_0x2c55e5['filters']=_[_0x2e06('0x42')](_0x2c55e5[_0x2e06('0x30')],_0x2c55e5[_0x2e06('0x31')]);_0x25ceff[_0x2e06('0x33')]=_['intersection'](_0x2c55e5['model'],qs['fields'](_0x55fa1a[_0x2e06('0x31')][_0x2e06('0x34')]));_0x25ceff['attributes']=_0x25ceff[_0x2e06('0x33')]['length']?_0x25ceff[_0x2e06('0x33')]:_0x2c55e5[_0x2e06('0x30')];_0x25ceff[_0x2e06('0x49')]=qs[_0x2e06('0x38')](_0x55fa1a[_0x2e06('0x31')][_0x2e06('0x38')]);_0x25ceff[_0x2e06('0x3a')]=qs[_0x2e06('0x32')](_['pick'](_0x55fa1a[_0x2e06('0x31')],_0x2c55e5[_0x2e06('0x32')]));if(_0x55fa1a['query'][_0x2e06('0x39')]){_0x25ceff['where']=_[_0x2e06('0x4a')](_0x25ceff[_0x2e06('0x3a')],{'$or':_[_0x2e06('0x2a')](_0x25ceff[_0x2e06('0x33')],function(_0x4385fd){var _0x4dbbd4={};_0x4dbbd4[_0x4385fd]={'$like':'%'+_0x55fa1a['query'][_0x2e06('0x39')]+'%'};return _0x4dbbd4;})});}_0x25ceff=_['merge']({},_0x25ceff,_0x55fa1a[_0x2e06('0x43')]);return _0x4dc278[_0x2e06('0x4b')](_0x25ceff);}})[_0x2e06('0x25')](function(_0x5ada47){if(_0x5ada47){_0x1d8bb8=_0x5ada47['length'];if(!_0x55fa1a['query']['hasOwnProperty'](_0x2e06('0x37'))){_0x25ceff[_0x2e06('0x1d')]=qs[_0x2e06('0x1d')](_0x55fa1a['query'][_0x2e06('0x1d')]);_0x25ceff['offset']=qs[_0x2e06('0x1b')](_0x55fa1a[_0x2e06('0x31')][_0x2e06('0x1b')]);}return _0x4dc278[_0x2e06('0x4b')](_0x25ceff);}})['then'](function(_0xe785ca){if(_0xe785ca){return _0xe785ca?{'count':_0x1d8bb8,'rows':_0xe785ca}:null;}})[_0x2e06('0x25')](respondWithResult(_0x222452,null))[_0x2e06('0x45')](handleError(_0x222452,null));};exports[_0x2e06('0x4c')]=function(_0x309a5f,_0x136876,_0x4e8366){if(_0x309a5f[_0x2e06('0x47')]['id']){delete _0x309a5f[_0x2e06('0x47')]['id'];}return db['Dynamics365Account'][_0x2e06('0x4d')]({'where':{'id':_0x309a5f[_0x2e06('0x40')]['id']}})['then'](handleEntityNotFound(_0x136876,null))[_0x2e06('0x25')](function(_0x2cac99){if(_0x2cac99){_0x309a5f[_0x2e06('0x47')][_0x2e06('0x4e')]=_0x2cac99['id'];_0x309a5f['body'][_0x2e06('0x4f')]=integrations['getSubjects'](_0x309a5f[_0x2e06('0x47')][_0x2e06('0x50')],_0x309a5f['body'][_0x2e06('0x2e')]);_0x309a5f[_0x2e06('0x47')][_0x2e06('0x51')]=integrations[_0x2e06('0x52')](_0x309a5f['body']['channel'],_0x309a5f[_0x2e06('0x47')]['type']);return db[_0x2e06('0x48')][_0x2e06('0x46')](_0x309a5f['body'],{'include':[{'model':db[_0x2e06('0x53')],'as':_0x2e06('0x4f')},{'model':db['Dynamics365Field'],'as':'Descriptions'}]});}return null;})[_0x2e06('0x25')](respondWithResult(_0x136876,null))['catch'](handleError(_0x136876,null));};exports[_0x2e06('0x54')]=function(_0x11453d,_0x17e4bd,_0x1369e6){var _0xe5e2d8=_0x11453d[_0x2e06('0x31')][_0x2e06('0x55')];var _0x193205=_0xe5e2d8===_0x2e06('0x56')?_0x2e06('0x57'):_0x2e06('0x58');var _0x1d7e5c='';var _0x3bc2b1='';var _0x58acbc='';var _0x13c83c='';var _0x457354='';var _0x28304a='';var _0x1cfe10='';var _0x1ab6b0='';var _0x14c20f=['title','description','customerid','ownerid',_0x2e06('0x59'),_0x2e06('0x5a'),_0x2e06('0x5b'),_0x2e06('0x5c'),_0x2e06('0x5d'),_0x2e06('0x5e')];var _0x198a86=[_0x2e06('0x5f'),_0x2e06('0x60'),_0x2e06('0x61'),_0x2e06('0x62'),_0x2e06('0x63'),'contactidyominame',_0x2e06('0x64'),_0x2e06('0x65'),_0x2e06('0x66'),_0x2e06('0x67'),_0x2e06('0x68'),_0x2e06('0x69'),_0x2e06('0x6a'),_0x2e06('0x6b'),_0x2e06('0x6c'),_0x2e06('0x6d'),_0x2e06('0x6e'),_0x2e06('0x6f'),_0x2e06('0x70'),'entitlementidname',_0x2e06('0x71'),_0x2e06('0x72'),_0x2e06('0x73'),_0x2e06('0x74'),_0x2e06('0x75'),_0x2e06('0x76'),_0x2e06('0x77'),_0x2e06('0x78'),_0x2e06('0x79'),'lastonholdtime','masteridname','modifiedbyexternalpartyname',_0x2e06('0x7a'),_0x2e06('0x7b'),_0x2e06('0x7c'),_0x2e06('0x7d'),_0x2e06('0x7e'),'modifiedonbehalfbyyominame','msdyn_incidenttypename',_0x2e06('0x7f'),'numberofchildincidents','onholdtime',_0x2e06('0x80'),_0x2e06('0x81'),'owneridtype',_0x2e06('0x82'),'parentcaseidname',_0x2e06('0x83'),_0x2e06('0x84'),_0x2e06('0x85'),_0x2e06('0x86'),'productserialnumber',_0x2e06('0x87'),_0x2e06('0x88'),_0x2e06('0x89'),_0x2e06('0x8a'),'responsiblecontactidyominame',_0x2e06('0x8b'),'slainvokedidname','slaname',_0x2e06('0x8c'),'statecode','statuscode',_0x2e06('0x8d'),_0x2e06('0x8e'),_0x2e06('0x8f'),_0x2e06('0x90'),'traversedpath',_0x2e06('0x91'),_0x2e06('0x92')];var _0x346cda=_0x14c20f[_0x2e06('0x93')](_0x198a86);return db[_0x2e06('0x2b')][_0x2e06('0x4d')]({'where':{'id':_0x11453d[_0x2e06('0x40')]['id']},'attributes':['id',_0x2e06('0x94'),_0x2e06('0x95'),_0x2e06('0x96'),_0x2e06('0x97'),_0x2e06('0x98'),_0x2e06('0x99')]})[_0x2e06('0x25')](handleEntityNotFound(_0x17e4bd,null))[_0x2e06('0x25')](function(_0x2a7218){if(_0x2a7218){_0x1ab6b0=_0x2a7218[_0x2e06('0x96')];var _0x41d705=_0x1ab6b0[_0x2e06('0x9a')](-0x1);if(_0x41d705==='/'){_0x1ab6b0=_0x1ab6b0[_0x2e06('0x9b')](0x0,_0x1ab6b0[_0x2e06('0x9c')](_0x41d705));}_0x1cfe10=util[_0x2e06('0x9d')]('%s/api/data/v9.0/',_0x1ab6b0);var _0x1ec792={'method':_0x2e06('0x9e'),'uri':_0x2e06('0x9f')+_0x2a7218['tenantId']+_0x2e06('0xa0'),'form':{'client_id':_0x2a7218['clientId'],'resource':_0x1ab6b0,'username':_0x2a7218['username'],'password':_0x2a7218[_0x2e06('0x95')],'grant_type':_0x2e06('0x95'),'client_secret':_0x2a7218['clientSecret']},'json':!![]};return rp(_0x1ec792);}})[_0x2e06('0x25')](function(_0x3685d5){_0x28304a=_0x3685d5[_0x2e06('0xa1')];var _0xf211b={'method':'GET','uri':encodeURI(_0x1cfe10+_0x2e06('0xa2')+_0x193205+'\x27'),'headers':{'Authorization':_0x2e06('0xa3')+_0x28304a,'If-None-Match':null,'OData-Version':_0x2e06('0xa4')},'json':!![]};return rp(_0xf211b);})[_0x2e06('0x25')](function(_0x297dd8){var _0x4dc4aa=_0x297dd8[_0x2e06('0xa5')][0x0];var _0x28b892=_0x4dc4aa[_0x2e06('0xa6')];var _0x16c0f6={'method':_0x2e06('0xa7'),'uri':_0x1cfe10+_0x2e06('0xa8')+_0x28b892+_0x2e06('0xa9'),'headers':{'Authorization':_0x2e06('0xa3')+_0x28304a,'If-None-Match':null,'OData-Version':_0x2e06('0xa4')},'json':!![]};return rp(_0x16c0f6);})[_0x2e06('0x25')](function(_0x52c774){_0x1d7e5c=_0x52c774;_0x3bc2b1=_0x1d7e5c[_0x2e06('0xaa')];_0x3bc2b1=_[_0x2e06('0xab')](_0x3bc2b1,function(_0x17e6ff){return!_0x346cda[_0x2e06('0xac')](_0x17e6ff[_0x2e06('0xad')]);});var _0x4cd833=[];var _0x34094a=[];_0x3bc2b1[_0x2e06('0xae')](function(_0x50a366){if(_0x50a366[_0x2e06('0xaf')]){var _0x46fcb8=_0x50a366[_0x2e06('0xaf')]['substring'](_0x50a366[_0x2e06('0xaf')][_0x2e06('0x9c')]('.')+0x1);if(_0x46fcb8==='PicklistAttributeMetadata'){_0x4cd833[_0x2e06('0xb0')](getSelectList(_0x1cfe10,_0xe5e2d8,_0x34094a,_0x1d7e5c[_0x2e06('0xa6')],_0x50a366[_0x2e06('0xa6')],_0x28304a));}}});return Promise['all'](_0x4cd833);})[_0x2e06('0x25')](function(_0x15f0b5){_0x58acbc=_0x15f0b5[0x0];var _0xdeb315=[];var _0x2c74da=[];_0x3bc2b1['forEach'](function(_0xf02b8d){if(!_[_0x2e06('0xb1')](_0xf02b8d[_0x2e06('0xaf')])){var _0xeae7b6=_0xf02b8d[_0x2e06('0xaf')][_0x2e06('0x9b')](_0xf02b8d[_0x2e06('0xaf')][_0x2e06('0x9c')]('.')+0x1);if(_0xeae7b6===_0x2e06('0xb2')){_0xdeb315[_0x2e06('0xb0')](getBooleanList(_0x1cfe10,_0xe5e2d8,_0x2c74da,_0x1d7e5c[_0x2e06('0xa6')],_0xf02b8d[_0x2e06('0xa6')],_0x28304a));}}});return Promise[_0x2e06('0xb3')](_0xdeb315);})['then'](function(_0x2b513e){_0x13c83c=_0x2b513e[0x0];var _0x5ba3e0=[];var _0x4fc406=[];_0x3bc2b1[_0x2e06('0xae')](function(_0x32eeb3){if(_0x32eeb3[_0x2e06('0xaf')]){var _0x3dc893=_0x32eeb3[_0x2e06('0xaf')][_0x2e06('0x9b')](_0x32eeb3[_0x2e06('0xaf')][_0x2e06('0x9c')]('.')+0x1);if(_0x3dc893===_0x2e06('0xb4')||_0x3dc893===_0x2e06('0xb5')||_0x3dc893===_0x2e06('0xb6')||_0x3dc893==='IntegerAttributeMetadata'||_0x3dc893===_0x2e06('0xb7')||_0x3dc893===_0x2e06('0xb8')||_0x3dc893===_0x2e06('0xb9')||_0x3dc893===_0x2e06('0xba')||_0x3dc893==='StateAttributeMetadata'||_0x3dc893===_0x2e06('0xbb')){_0x5ba3e0[_0x2e06('0xb0')](getInputList(_0x1cfe10,_0xe5e2d8,_0x3dc893,_0x4fc406,_0x1d7e5c['MetadataId'],_0x32eeb3[_0x2e06('0xa6')],_0x28304a));}}});return Promise[_0x2e06('0xb3')](_0x5ba3e0);})['then'](function(_0x1f0571){_0x457354=_0x1f0571[0x0];var _0x3e5f2c=_0x58acbc[_0x2e06('0x93')](_0x13c83c)[_0x2e06('0x93')](_0x457354);var _0x2cd9e1={'count':_0x3e5f2c['length'],'rows':_0x3e5f2c};return _0x2cd9e1;})[_0x2e06('0x25')](respondWithResult(_0x17e4bd,null))[_0x2e06('0x45')](function(_0x90ce4){var _0xb7ba5=_0x11453d['query'][_0x2e06('0xbc')]?0x1f4:_0x90ce4[_0x2e06('0xbd')]||0x1f4;logger[_0x2e06('0x27')](_0x90ce4['stack']);delete _0x90ce4['name'];if(_0xb7ba5===0x191){_0xb7ba5=0x190;}_0x17e4bd[_0x2e06('0x19')](_0xb7ba5)[_0x2e06('0x29')](_0x11453d[_0x2e06('0x31')][_0x2e06('0xbc')]?{'message':'Wrong\x20credentials','statusCode':_0x90ce4[_0x2e06('0xbd')]}:_0x90ce4);});};function getSelectList(_0x78815,_0x11bb7a,_0x5ced86,_0x4a570b,_0x34f02d,_0x307660){var _0x2d03c4={'method':'GET','uri':_0x78815+_0x2e06('0xa8')+_0x4a570b+')/Attributes('+_0x34f02d+_0x2e06('0xbe')+_0x2e06('0xbf'),'headers':{'Authorization':_0x2e06('0xa3')+_0x307660,'If-None-Match':null,'OData-Version':_0x2e06('0xa4')},'json':!![]};return rp(_0x2d03c4)[_0x2e06('0x25')](function(_0x49553d){var _0x5b9e4f=[];var _0x2b1f75=_0x49553d[_0x2e06('0xc0')][_0x2e06('0xc1')];_0x2b1f75[_0x2e06('0xae')](function(_0x386d84){_0x5b9e4f[_0x2e06('0xb0')]({'name':_0x386d84[_0x2e06('0xc2')]['UserLocalizedLabel'][_0x2e06('0xc2')],'value':String(_0x386d84['Value'])});});var _0x492a36={'id':_0x11bb7a+'_'+_0x49553d[_0x2e06('0xad')],'name':_0x49553d['DisplayName']['UserLocalizedLabel'][_0x2e06('0xc2')],'custom':![],'options':_0x5b9e4f};_0x5ced86[_0x2e06('0xb0')](_0x492a36);return _0x5ced86;});}function getBooleanList(_0x331c6,_0x1039b1,_0x48f6be,_0x4f9944,_0x69cd94,_0xf2d164){var _0x13bfb1={'method':_0x2e06('0xa7'),'uri':_0x331c6+'EntityDefinitions('+_0x4f9944+_0x2e06('0xc3')+_0x69cd94+_0x2e06('0xc4'),'headers':{'Authorization':_0x2e06('0xa3')+_0xf2d164,'If-None-Match':null,'OData-Version':_0x2e06('0xa4')},'json':!![]};return rp(_0x13bfb1)['then'](function(_0x3fd245){var _0x44b9e4=[];_0x44b9e4[_0x2e06('0xb0')]({'name':_0x3fd245[_0x2e06('0xc0')][_0x2e06('0xc5')][_0x2e06('0xc2')][_0x2e06('0xc6')][_0x2e06('0xc2')],'value':_0x2e06('0xc7')},{'name':_0x3fd245['OptionSet']['FalseOption'][_0x2e06('0xc2')][_0x2e06('0xc6')]['Label'],'value':'false'});var _0x109172={'id':_0x1039b1+'_'+_0x3fd245['LogicalName'],'name':_0x3fd245[_0x2e06('0xc8')][_0x2e06('0xc6')][_0x2e06('0xc2')],'custom':![],'options':_0x44b9e4};_0x48f6be[_0x2e06('0xb0')](_0x109172);return _0x48f6be;});}function getInputList(_0x39cbce,_0x202e1d,_0x3593bf,_0x389d7a,_0x4abaa9,_0x4035c3,_0x3c0bcd){var _0x4f44b9={'method':_0x2e06('0xa7'),'uri':_0x39cbce+_0x2e06('0xa8')+_0x4abaa9+')/Attributes('+_0x4035c3+_0x2e06('0xc9')+_0x3593bf+_0x2e06('0xca'),'headers':{'Authorization':_0x2e06('0xa3')+_0x3c0bcd,'If-None-Match':null,'OData-Version':_0x2e06('0xa4')},'json':!![]};return rp(_0x4f44b9)[_0x2e06('0x25')](function(_0x59215a){var _0x4ec97b={'id':_0x202e1d+'_'+_0x59215a[_0x2e06('0xad')],'name':_0x59215a['DisplayName']['UserLocalizedLabel']?_0x59215a['DisplayName'][_0x2e06('0xc6')][_0x2e06('0xc2')]:_0x59215a[_0x2e06('0xad')],'custom':![],'options':[]};_0x389d7a[_0x2e06('0xb0')](_0x4ec97b);return _0x389d7a;});}
\ No newline at end of file
index 029cc19..9f3240b 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(_0x16f05b,_0x70d41b){var _0x27f065=function(_0x41c3bf){while(--_0x41c3bf){_0x16f05b['push'](_0x16f05b['shift']());}};_0x27f065(++_0x70d41b);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4480b9,_0x5c2949){_0x4480b9=_0x4480b9-0x0;var _0x3f0f02=_0xcb91[_0x4480b9];return _0x3f0f02;};'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 _0xb7e7=['int_dynamics365_accounts','lodash','../../config/logger','moment','request-promise','rimraf','../../config/environment','./intDynamics365Account.attributes','define'];(function(_0x40901c,_0x14050f){var _0x1376f5=function(_0x4dda9a){while(--_0x4dda9a){_0x40901c['push'](_0x40901c['shift']());}};_0x1376f5(++_0x14050f);}(_0xb7e7,0x121));var _0x7b7e=function(_0x47a349,_0x4699d9){_0x47a349=_0x47a349-0x0;var _0x18ab75=_0xb7e7[_0x47a349];return _0x18ab75;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var logger=require(_0x7b7e('0x1'))('api');var moment=require(_0x7b7e('0x2'));var BPromise=require('bluebird');var rp=require(_0x7b7e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var attributes=require(_0x7b7e('0x6'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x333fa4,_0x372bde){return _0x333fa4[_0x7b7e('0x7')]('Dynamics365Account',attributes,{'tableName':_0x7b7e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 730b90b..f2f2850 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a89=['result','catch','Dynamics365Account','findAll','options','limit','include','map','model','attributes','GetDynamics365Account','ShowDynamics365Account','find','raw','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','Dynamics365Account,\x20%s,\x20%s','message'];(function(_0x4e4625,_0x4c177c){var _0x4b9832=function(_0x3d4c9d){while(--_0x3d4c9d){_0x4e4625['push'](_0x4e4625['shift']());}};_0x4b9832(++_0x4c177c);}(_0x0a89,0xc2));var _0x90a8=function(_0x30b711,_0x1c3992){_0x30b711=_0x30b711-0x0;var _0x2551db=_0x0a89[_0x30b711];return _0x2551db;};'use strict';var _=require(_0x90a8('0x0'));var util=require(_0x90a8('0x1'));var moment=require(_0x90a8('0x2'));var BPromise=require(_0x90a8('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x90a8('0x4'));var db=require(_0x90a8('0x5'))['db'];var utils=require(_0x90a8('0x6'));var logger=require(_0x90a8('0x7'))(_0x90a8('0x8'));var config=require(_0x90a8('0x9'));var jayson=require(_0x90a8('0xa'));var client=jayson[_0x90a8('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x18efda,_0x372670,_0x2ae979){return new BPromise(function(_0x194111,_0x1293c4){return client[_0x90a8('0xc')](_0x18efda,_0x2ae979)[_0x90a8('0xd')](function(_0x2dd5a8){logger[_0x90a8('0xe')]('Dynamics365Account,\x20%s,\x20%s',_0x372670,_0x90a8('0xf'));logger[_0x90a8('0x10')](_0x90a8('0x11'),_0x372670,_0x90a8('0xf'),JSON[_0x90a8('0x12')](_0x2dd5a8));if(_0x2dd5a8['error']){if(_0x2dd5a8['error']['code']===0x1f4){logger[_0x90a8('0x13')](_0x90a8('0x14'),_0x372670,_0x2dd5a8['error'][_0x90a8('0x15')]);return _0x1293c4(_0x2dd5a8['error'][_0x90a8('0x15')]);}logger[_0x90a8('0x13')](_0x90a8('0x14'),_0x372670,_0x2dd5a8[_0x90a8('0x13')][_0x90a8('0x15')]);return _0x194111(_0x2dd5a8[_0x90a8('0x13')][_0x90a8('0x15')]);}else{logger[_0x90a8('0xe')](_0x90a8('0x14'),_0x372670,'request\x20sent');_0x194111(_0x2dd5a8[_0x90a8('0x16')]['message']);}})[_0x90a8('0x17')](function(_0x3709cd){logger['error'](_0x90a8('0x14'),_0x372670,_0x3709cd);_0x1293c4(_0x3709cd);});});}exports['GetDynamics365Account']=function(_0x2220cc){var _0x31aa00=this;return new Promise(function(_0x2c3193,_0x555fce){return db[_0x90a8('0x18')][_0x90a8('0x19')]({'raw':_0x2220cc[_0x90a8('0x1a')]?_0x2220cc[_0x90a8('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x2220cc[_0x90a8('0x1a')]?_0x2220cc[_0x90a8('0x1a')]['where']||null:null,'attributes':_0x2220cc['options']?_0x2220cc[_0x90a8('0x1a')]['attributes']||null:null,'limit':_0x2220cc[_0x90a8('0x1a')]?_0x2220cc[_0x90a8('0x1a')][_0x90a8('0x1b')]||null:null,'include':_0x2220cc[_0x90a8('0x1a')]?_0x2220cc[_0x90a8('0x1a')][_0x90a8('0x1c')]?_[_0x90a8('0x1d')](_0x2220cc[_0x90a8('0x1a')][_0x90a8('0x1c')],function(_0x3f201b){return{'model':db[_0x3f201b[_0x90a8('0x1e')]],'as':_0x3f201b['as'],'attributes':_0x3f201b[_0x90a8('0x1f')],'include':_0x3f201b[_0x90a8('0x1c')]?_[_0x90a8('0x1d')](_0x3f201b[_0x90a8('0x1c')],function(_0x412b89){return{'model':db[_0x412b89[_0x90a8('0x1e')]],'as':_0x412b89['as'],'attributes':_0x412b89[_0x90a8('0x1f')],'include':_0x412b89['include']?_[_0x90a8('0x1d')](_0x412b89[_0x90a8('0x1c')],function(_0x5aaf22){return{'model':db[_0x5aaf22['model']],'as':_0x5aaf22['as'],'attributes':_0x5aaf22[_0x90a8('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x90a8('0xd')](function(_0x5c8903){logger['info'](_0x90a8('0x20'),_0x2220cc);logger[_0x90a8('0x10')](_0x90a8('0x20'),_0x2220cc,JSON['stringify'](_0x5c8903));_0x2c3193(_0x5c8903);})['catch'](function(_0x29245e){logger[_0x90a8('0x13')](_0x90a8('0x20'),_0x29245e[_0x90a8('0x15')],_0x2220cc);_0x555fce(_0x31aa00[_0x90a8('0x13')](0x1f4,_0x29245e[_0x90a8('0x15')]));});});};exports[_0x90a8('0x21')]=function(_0x165ffd){var _0x5202fa=this;return new Promise(function(_0x2870d6,_0x25186b){return db['Dynamics365Account'][_0x90a8('0x22')]({'raw':_0x165ffd['options']?_0x165ffd['options'][_0x90a8('0x23')]===undefined?!![]:![]:!![],'where':_0x165ffd[_0x90a8('0x1a')]?_0x165ffd[_0x90a8('0x1a')]['where']||null:null,'attributes':_0x165ffd[_0x90a8('0x1a')]?_0x165ffd['options'][_0x90a8('0x1f')]||null:null,'include':_0x165ffd[_0x90a8('0x1a')]?_0x165ffd[_0x90a8('0x1a')][_0x90a8('0x1c')]?_[_0x90a8('0x1d')](_0x165ffd[_0x90a8('0x1a')][_0x90a8('0x1c')],function(_0xc9e71d){return{'model':db[_0xc9e71d['model']],'as':_0xc9e71d['as'],'attributes':_0xc9e71d['attributes'],'include':_0xc9e71d['include']?_[_0x90a8('0x1d')](_0xc9e71d[_0x90a8('0x1c')],function(_0x122fb5){return{'model':db[_0x122fb5[_0x90a8('0x1e')]],'as':_0x122fb5['as'],'attributes':_0x122fb5[_0x90a8('0x1f')],'include':_0x122fb5[_0x90a8('0x1c')]?_[_0x90a8('0x1d')](_0x122fb5[_0x90a8('0x1c')],function(_0x128b89){return{'model':db[_0x128b89[_0x90a8('0x1e')]],'as':_0x128b89['as'],'attributes':_0x128b89[_0x90a8('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x15a50a){logger[_0x90a8('0xe')]('ShowDynamics365Account',_0x165ffd);logger['debug'](_0x90a8('0x21'),_0x165ffd,JSON[_0x90a8('0x12')](_0x15a50a));_0x2870d6(_0x15a50a);})[_0x90a8('0x17')](function(_0x2a0d3b){logger[_0x90a8('0x13')](_0x90a8('0x21'),_0x2a0d3b[_0x90a8('0x15')],_0x165ffd);_0x25186b(_0x5202fa[_0x90a8('0x13')](0x1f4,_0x2a0d3b['message']));});});};
\ No newline at end of file
+var _0xc5fc=['result','catch','GetDynamics365Account','Dynamics365Account','findAll','options','raw','where','map','include','model','attributes','ShowDynamics365Account','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','then','info','Dynamics365Account,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0x5b2382,_0x487a93){var _0x387935=function(_0x192831){while(--_0x192831){_0x5b2382['push'](_0x5b2382['shift']());}};_0x387935(++_0x487a93);}(_0xc5fc,0x14d));var _0xcc5f=function(_0x4d8f0b,_0x4a156c){_0x4d8f0b=_0x4d8f0b-0x0;var _0x281e84=_0xc5fc[_0x4d8f0b];return _0x281e84;};'use strict';var _=require(_0xcc5f('0x0'));var util=require(_0xcc5f('0x1'));var moment=require(_0xcc5f('0x2'));var BPromise=require('bluebird');var rs=require(_0xcc5f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xcc5f('0x4'))['db'];var utils=require(_0xcc5f('0x5'));var logger=require(_0xcc5f('0x6'))('rpc');var config=require(_0xcc5f('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xcc5f('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4fc124,_0x1b4470,_0x185713){return new BPromise(function(_0x2f3e10,_0x4362dc){return client[_0xcc5f('0x9')](_0x4fc124,_0x185713)[_0xcc5f('0xa')](function(_0x1ca343){logger[_0xcc5f('0xb')](_0xcc5f('0xc'),_0x1b4470,_0xcc5f('0xd'));logger[_0xcc5f('0xe')](_0xcc5f('0xf'),_0x1b4470,_0xcc5f('0xd'),JSON[_0xcc5f('0x10')](_0x1ca343));if(_0x1ca343['error']){if(_0x1ca343[_0xcc5f('0x11')]['code']===0x1f4){logger['error']('Dynamics365Account,\x20%s,\x20%s',_0x1b4470,_0x1ca343[_0xcc5f('0x11')][_0xcc5f('0x12')]);return _0x4362dc(_0x1ca343['error'][_0xcc5f('0x12')]);}logger['error']('Dynamics365Account,\x20%s,\x20%s',_0x1b4470,_0x1ca343[_0xcc5f('0x11')][_0xcc5f('0x12')]);return _0x2f3e10(_0x1ca343[_0xcc5f('0x11')][_0xcc5f('0x12')]);}else{logger[_0xcc5f('0xb')](_0xcc5f('0xc'),_0x1b4470,'request\x20sent');_0x2f3e10(_0x1ca343[_0xcc5f('0x13')][_0xcc5f('0x12')]);}})[_0xcc5f('0x14')](function(_0x2f0afa){logger[_0xcc5f('0x11')](_0xcc5f('0xc'),_0x1b4470,_0x2f0afa);_0x4362dc(_0x2f0afa);});});}exports[_0xcc5f('0x15')]=function(_0x55de30){var _0x35c29e=this;return new Promise(function(_0xe354a3,_0x2e33c9){return db[_0xcc5f('0x16')][_0xcc5f('0x17')]({'raw':_0x55de30[_0xcc5f('0x18')]?_0x55de30[_0xcc5f('0x18')][_0xcc5f('0x19')]===undefined?!![]:![]:!![],'where':_0x55de30[_0xcc5f('0x18')]?_0x55de30[_0xcc5f('0x18')][_0xcc5f('0x1a')]||null:null,'attributes':_0x55de30[_0xcc5f('0x18')]?_0x55de30[_0xcc5f('0x18')]['attributes']||null:null,'limit':_0x55de30[_0xcc5f('0x18')]?_0x55de30[_0xcc5f('0x18')]['limit']||null:null,'include':_0x55de30[_0xcc5f('0x18')]?_0x55de30[_0xcc5f('0x18')]['include']?_[_0xcc5f('0x1b')](_0x55de30[_0xcc5f('0x18')][_0xcc5f('0x1c')],function(_0x402c03){return{'model':db[_0x402c03[_0xcc5f('0x1d')]],'as':_0x402c03['as'],'attributes':_0x402c03[_0xcc5f('0x1e')],'include':_0x402c03['include']?_[_0xcc5f('0x1b')](_0x402c03[_0xcc5f('0x1c')],function(_0x4e16f1){return{'model':db[_0x4e16f1['model']],'as':_0x4e16f1['as'],'attributes':_0x4e16f1['attributes'],'include':_0x4e16f1[_0xcc5f('0x1c')]?_[_0xcc5f('0x1b')](_0x4e16f1[_0xcc5f('0x1c')],function(_0x4f4f8b){return{'model':db[_0x4f4f8b[_0xcc5f('0x1d')]],'as':_0x4f4f8b['as'],'attributes':_0x4f4f8b['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x49a142){logger['info']('GetDynamics365Account',_0x55de30);logger[_0xcc5f('0xe')](_0xcc5f('0x15'),_0x55de30,JSON[_0xcc5f('0x10')](_0x49a142));_0xe354a3(_0x49a142);})['catch'](function(_0x213ff5){logger[_0xcc5f('0x11')](_0xcc5f('0x15'),_0x213ff5[_0xcc5f('0x12')],_0x55de30);_0x2e33c9(_0x35c29e['error'](0x1f4,_0x213ff5['message']));});});};exports[_0xcc5f('0x1f')]=function(_0x4186d7){var _0xe068bd=this;return new Promise(function(_0x2a2210,_0x204ff9){return db[_0xcc5f('0x16')]['find']({'raw':_0x4186d7[_0xcc5f('0x18')]?_0x4186d7[_0xcc5f('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x4186d7[_0xcc5f('0x18')]?_0x4186d7[_0xcc5f('0x18')][_0xcc5f('0x1a')]||null:null,'attributes':_0x4186d7[_0xcc5f('0x18')]?_0x4186d7[_0xcc5f('0x18')][_0xcc5f('0x1e')]||null:null,'include':_0x4186d7[_0xcc5f('0x18')]?_0x4186d7[_0xcc5f('0x18')][_0xcc5f('0x1c')]?_[_0xcc5f('0x1b')](_0x4186d7['options'][_0xcc5f('0x1c')],function(_0x42aaa6){return{'model':db[_0x42aaa6[_0xcc5f('0x1d')]],'as':_0x42aaa6['as'],'attributes':_0x42aaa6[_0xcc5f('0x1e')],'include':_0x42aaa6['include']?_[_0xcc5f('0x1b')](_0x42aaa6[_0xcc5f('0x1c')],function(_0x396d75){return{'model':db[_0x396d75[_0xcc5f('0x1d')]],'as':_0x396d75['as'],'attributes':_0x396d75['attributes'],'include':_0x396d75[_0xcc5f('0x1c')]?_[_0xcc5f('0x1b')](_0x396d75[_0xcc5f('0x1c')],function(_0x3ba340){return{'model':db[_0x3ba340[_0xcc5f('0x1d')]],'as':_0x3ba340['as'],'attributes':_0x3ba340[_0xcc5f('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3e8a70){logger[_0xcc5f('0xb')](_0xcc5f('0x1f'),_0x4186d7);logger[_0xcc5f('0xe')](_0xcc5f('0x1f'),_0x4186d7,JSON[_0xcc5f('0x10')](_0x3e8a70));_0x2a2210(_0x3e8a70);})['catch'](function(_0x299c3e){logger[_0xcc5f('0x11')](_0xcc5f('0x1f'),_0x299c3e[_0xcc5f('0x12')],_0x4186d7);_0x204ff9(_0xe068bd[_0xcc5f('0x11')](0x1f4,_0x299c3e[_0xcc5f('0x12')]));});});};
\ No newline at end of file
index f5834d6..018840b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8ae=['./intDynamics365Configuration.controller','get','isAuthenticated','index','/:id','show','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','put','update','delete','exports','path','connect-timeout','express','Router','fs-extra'];(function(_0x12823,_0x495ae3){var _0x4367a9=function(_0x2472f1){while(--_0x2472f1){_0x12823['push'](_0x12823['shift']());}};_0x4367a9(++_0x495ae3);}(_0xe8ae,0x163));var _0xee8a=function(_0x5546a9,_0x7666ee){_0x5546a9=_0x5546a9-0x0;var _0x13aed8=_0xe8ae[_0x5546a9];return _0x13aed8;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xee8a('0x0'));var timeout=require(_0xee8a('0x1'));var express=require(_0xee8a('0x2'));var router=express[_0xee8a('0x3')]();var fs_extra=require(_0xee8a('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xee8a('0x5'));router[_0xee8a('0x6')]('/',auth[_0xee8a('0x7')](),controller[_0xee8a('0x8')]);router[_0xee8a('0x6')](_0xee8a('0x9'),auth['isAuthenticated'](),controller[_0xee8a('0xa')]);router[_0xee8a('0x6')]('/:id/fields',auth[_0xee8a('0x7')](),controller[_0xee8a('0xb')]);router['get'](_0xee8a('0xc'),auth[_0xee8a('0x7')](),controller[_0xee8a('0xd')]);router['get'](_0xee8a('0xe'),auth[_0xee8a('0x7')](),controller[_0xee8a('0xf')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xee8a('0x10')](_0xee8a('0x9'),auth[_0xee8a('0x7')](),controller[_0xee8a('0x11')]);router[_0xee8a('0x12')](_0xee8a('0x9'),auth[_0xee8a('0x7')](),controller['destroy']);module[_0xee8a('0x13')]=router;
\ No newline at end of file
+var _0xa02f=['create','put','update','delete','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./intDynamics365Configuration.controller','get','isAuthenticated','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post'];(function(_0x42d345,_0x32963b){var _0x45a331=function(_0x18f50a){while(--_0x18f50a){_0x42d345['push'](_0x42d345['shift']());}};_0x45a331(++_0x32963b);}(_0xa02f,0xce));var _0xfa02=function(_0x25a9a6,_0x378dd6){_0x25a9a6=_0x25a9a6-0x0;var _0x40741b=_0xa02f[_0x25a9a6];return _0x40741b;};'use strict';var multer=require('multer');var util=require(_0xfa02('0x0'));var path=require(_0xfa02('0x1'));var timeout=require(_0xfa02('0x2'));var express=require(_0xfa02('0x3'));var router=express['Router']();var fs_extra=require(_0xfa02('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xfa02('0x5'));var config=require(_0xfa02('0x6'));var controller=require(_0xfa02('0x7'));router[_0xfa02('0x8')]('/',auth[_0xfa02('0x9')](),controller['index']);router[_0xfa02('0x8')](_0xfa02('0xa'),auth[_0xfa02('0x9')](),controller[_0xfa02('0xb')]);router['get'](_0xfa02('0xc'),auth[_0xfa02('0x9')](),controller[_0xfa02('0xd')]);router['get'](_0xfa02('0xe'),auth[_0xfa02('0x9')](),controller[_0xfa02('0xf')]);router['get'](_0xfa02('0x10'),auth[_0xfa02('0x9')](),controller[_0xfa02('0x11')]);router[_0xfa02('0x12')]('/',auth[_0xfa02('0x9')](),controller[_0xfa02('0x13')]);router[_0xfa02('0x14')](_0xfa02('0xa'),auth[_0xfa02('0x9')](),controller[_0xfa02('0x15')]);router[_0xfa02('0x16')](_0xfa02('0xa'),auth[_0xfa02('0x9')](),controller[_0xfa02('0x17')]);module[_0xfa02('0x18')]=router;
\ No newline at end of file
index b87aed4..2ea2324 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe039=['STRING','incident','phonecall','sequelize'];(function(_0xc60a0c,_0x2f8922){var _0x236e24=function(_0x314ac6){while(--_0x314ac6){_0xc60a0c['push'](_0xc60a0c['shift']());}};_0x236e24(++_0x2f8922);}(_0xe039,0x13f));var _0x9e03=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0xe039[_0x2763f2];return _0x3ef471;};'use strict';var Sequelize=require(_0x9e03('0x0'));module['exports']={'name':{'type':Sequelize[_0x9e03('0x1')]},'description':{'type':Sequelize[_0x9e03('0x1')]},'ticketType':{'type':Sequelize['ENUM'](_0x9e03('0x2'),_0x9e03('0x3')),'defaultValue':_0x9e03('0x2')}};
\ No newline at end of file
+var _0xd511=['incident','sequelize','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd511,0x10f));var _0x1d51=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd511[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x1d51('0x0'));module['exports']={'name':{'type':Sequelize[_0x1d51('0x1')]},'description':{'type':Sequelize[_0x1d51('0x1')]},'ticketType':{'type':Sequelize['ENUM'](_0x1d51('0x2'),'phonecall'),'defaultValue':_0x1d51('0x2')}};
\ No newline at end of file
index 015e366..ce523ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63a6=['rawAttributes','type','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','update','getFields','findOne','Dynamics365Field','order','filter','getSubjects','getDescriptions','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','then','destroy','sendStatus','name','send','map','Dynamics365Configuration'];(function(_0x5f45d6,_0x9dc90e){var _0x798711=function(_0x5a32a0){while(--_0x5a32a0){_0x5f45d6['push'](_0x5f45d6['shift']());}};_0x798711(++_0x9dc90e);}(_0x63a6,0x1ae));var _0x663a=function(_0x546125,_0xfa3bf){_0x546125=_0x546125-0x0;var _0x77b546=_0x63a6[_0x546125];return _0x77b546;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x663a('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x663a('0x1'));var rp=require(_0x663a('0x2'));var moment=require('moment');var BPromise=require(_0x663a('0x3'));var Mustache=require(_0x663a('0x4'));var util=require(_0x663a('0x5'));var path=require(_0x663a('0x6'));var sox=require(_0x663a('0x7'));var csv=require(_0x663a('0x8'));var ejs=require(_0x663a('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x663a('0xa'));var squel=require(_0x663a('0xb'));var crypto=require(_0x663a('0xc'));var jsforce=require(_0x663a('0xd'));var deskjs=require(_0x663a('0xe'));var toCsv=require(_0x663a('0x8'));var querystring=require(_0x663a('0xf'));var Papa=require(_0x663a('0x10'));var Redis=require('ioredis');var authService=require(_0x663a('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x663a('0x12'));var hardwareService=require(_0x663a('0x13'));var logger=require(_0x663a('0x14'))(_0x663a('0x15'));var utils=require(_0x663a('0x16'));var config=require(_0x663a('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x663a('0x18'))['db'];function respondWithStatusCode(_0xe5abb0,_0x16cd46){_0x16cd46=_0x16cd46||0xcc;return function(_0x71ccab){if(_0x71ccab){return _0xe5abb0['sendStatus'](_0x16cd46);}return _0xe5abb0[_0x663a('0x19')](_0x16cd46)[_0x663a('0x1a')]();};}function respondWithResult(_0x34bc7e,_0x2128af){_0x2128af=_0x2128af||0xc8;return function(_0x3a8722){if(_0x3a8722){return _0x34bc7e[_0x663a('0x19')](_0x2128af)[_0x663a('0x1b')](_0x3a8722);}};}function respondWithFilteredResult(_0x3b8178,_0x4630c3){return function(_0x1f78dd){if(_0x1f78dd){var _0x1cc3df=typeof _0x4630c3['offset']===_0x663a('0x1c')&&typeof _0x4630c3[_0x663a('0x1d')]===_0x663a('0x1c');var _0xe11865=_0x1f78dd[_0x663a('0x1e')];var _0x28f199=_0x1cc3df?0x0:_0x4630c3[_0x663a('0x1f')];var _0xa832fe=_0x1cc3df?_0x1f78dd[_0x663a('0x1e')]:_0x4630c3[_0x663a('0x1f')]+_0x4630c3[_0x663a('0x1d')];var _0x1539c9;if(_0xa832fe>=_0xe11865){_0xa832fe=_0xe11865;_0x1539c9=0xc8;}else{_0x1539c9=0xce;}_0x3b8178[_0x663a('0x19')](_0x1539c9);return _0x3b8178[_0x663a('0x20')](_0x663a('0x21'),_0x28f199+'-'+_0xa832fe+'/'+_0xe11865)[_0x663a('0x1b')](_0x1f78dd);}return null;};}function patchUpdates(_0x4e8514){return function(_0x53ec2a){try{jsonpatch[_0x663a('0x22')](_0x53ec2a,_0x4e8514,!![]);}catch(_0x1a185b){return BPromise[_0x663a('0x23')](_0x1a185b);}return _0x53ec2a[_0x663a('0x24')]();};}function saveUpdates(_0xbec807,_0x4d60a8){return function(_0x123a87){if(_0x123a87){return _0x123a87['update'](_0xbec807)[_0x663a('0x25')](function(_0x5ca99c){return _0x5ca99c;});}return null;};}function removeEntity(_0x19fb03,_0x2e3060){return function(_0x23518e){if(_0x23518e){return _0x23518e[_0x663a('0x26')]()[_0x663a('0x25')](function(){_0x19fb03[_0x663a('0x19')](0xcc)[_0x663a('0x1a')]();});}};}function handleEntityNotFound(_0x2e4a5c,_0x287f38){return function(_0x4ed0e7){if(!_0x4ed0e7){_0x2e4a5c[_0x663a('0x27')](0x194);}return _0x4ed0e7;};}function handleError(_0xdcb55,_0x3eae5f){_0x3eae5f=_0x3eae5f||0x1f4;return function(_0x3d9c34){logger['error'](_0x3d9c34['stack']);if(_0x3d9c34[_0x663a('0x28')]){delete _0x3d9c34[_0x663a('0x28')];}_0xdcb55['status'](_0x3eae5f)[_0x663a('0x29')](_0x3d9c34);};}exports['index']=function(_0x1931e6,_0x2b061a){var _0xc5cdb9={},_0x74eddb={},_0x34fc90={'count':0x0,'rows':[]};var _0x66f60a=_[_0x663a('0x2a')](db[_0x663a('0x2b')][_0x663a('0x2c')],function(_0x113c65){return{'name':_0x113c65['fieldName'],'type':_0x113c65[_0x663a('0x2d')]['key']};});_0x74eddb[_0x663a('0x2e')]=_[_0x663a('0x2a')](_0x66f60a,_0x663a('0x28'));_0x74eddb[_0x663a('0x2f')]=_[_0x663a('0x30')](_0x1931e6['query']);_0x74eddb[_0x663a('0x31')]=_['intersection'](_0x74eddb[_0x663a('0x2e')],_0x74eddb[_0x663a('0x2f')]);_0xc5cdb9[_0x663a('0x32')]=_[_0x663a('0x33')](_0x74eddb[_0x663a('0x2e')],qs['fields'](_0x1931e6[_0x663a('0x2f')][_0x663a('0x34')]));_0xc5cdb9[_0x663a('0x32')]=_0xc5cdb9[_0x663a('0x32')][_0x663a('0x35')]?_0xc5cdb9[_0x663a('0x32')]:_0x74eddb[_0x663a('0x2e')];if(!_0x1931e6[_0x663a('0x2f')][_0x663a('0x36')](_0x663a('0x37'))){_0xc5cdb9[_0x663a('0x1d')]=qs['limit'](_0x1931e6[_0x663a('0x2f')][_0x663a('0x1d')]);_0xc5cdb9['offset']=qs[_0x663a('0x1f')](_0x1931e6[_0x663a('0x2f')][_0x663a('0x1f')]);}_0xc5cdb9['order']=qs[_0x663a('0x38')](_0x1931e6['query'][_0x663a('0x38')]);_0xc5cdb9[_0x663a('0x39')]=qs[_0x663a('0x31')](_[_0x663a('0x3a')](_0x1931e6[_0x663a('0x2f')],_0x74eddb[_0x663a('0x31')]),_0x66f60a);if(_0x1931e6[_0x663a('0x2f')]['filter']){_0xc5cdb9[_0x663a('0x39')]=_[_0x663a('0x3b')](_0xc5cdb9[_0x663a('0x39')],{'$or':_[_0x663a('0x2a')](_0x66f60a,function(_0x5d996c){if(_0x5d996c[_0x663a('0x2d')]!=='VIRTUAL'){var _0x31a2bb={};_0x31a2bb[_0x5d996c[_0x663a('0x28')]]={'$like':'%'+_0x1931e6[_0x663a('0x2f')]['filter']+'%'};return _0x31a2bb;}})});}_0xc5cdb9=_[_0x663a('0x3b')]({},_0xc5cdb9,_0x1931e6['options']);var _0xaf841f={'where':_0xc5cdb9[_0x663a('0x39')]};return db[_0x663a('0x2b')][_0x663a('0x1e')](_0xaf841f)[_0x663a('0x25')](function(_0x4934f7){_0x34fc90[_0x663a('0x1e')]=_0x4934f7;if(_0x1931e6[_0x663a('0x2f')][_0x663a('0x3c')]){_0xc5cdb9[_0x663a('0x3d')]=[{'all':!![]}];}return db['Dynamics365Configuration'][_0x663a('0x3e')](_0xc5cdb9);})[_0x663a('0x25')](function(_0x13b1c6){_0x34fc90[_0x663a('0x3f')]=_0x13b1c6;return _0x34fc90;})[_0x663a('0x25')](respondWithFilteredResult(_0x2b061a,_0xc5cdb9))[_0x663a('0x40')](handleError(_0x2b061a,null));};exports[_0x663a('0x41')]=function(_0x2193eb,_0x2630cf){var _0x39f7c1={'raw':![],'where':{'id':_0x2193eb[_0x663a('0x42')]['id']}},_0x2bf81a={};_0x2bf81a['model']=_[_0x663a('0x30')](db[_0x663a('0x2b')][_0x663a('0x2c')]);_0x2bf81a[_0x663a('0x2f')]=_[_0x663a('0x30')](_0x2193eb[_0x663a('0x2f')]);_0x2bf81a[_0x663a('0x31')]=_[_0x663a('0x33')](_0x2bf81a['model'],_0x2bf81a[_0x663a('0x2f')]);_0x39f7c1[_0x663a('0x32')]=_[_0x663a('0x33')](_0x2bf81a[_0x663a('0x2e')],qs[_0x663a('0x34')](_0x2193eb['query'][_0x663a('0x34')]));_0x39f7c1[_0x663a('0x32')]=_0x39f7c1[_0x663a('0x32')][_0x663a('0x35')]?_0x39f7c1['attributes']:_0x2bf81a['model'];if(_0x2193eb[_0x663a('0x2f')][_0x663a('0x3c')]){_0x39f7c1['include']=[{'all':!![]}];}_0x39f7c1=_['merge']({},_0x39f7c1,_0x2193eb[_0x663a('0x43')]);return db[_0x663a('0x2b')][_0x663a('0x44')](_0x39f7c1)[_0x663a('0x25')](handleEntityNotFound(_0x2630cf,null))['then'](respondWithResult(_0x2630cf,null))[_0x663a('0x40')](handleError(_0x2630cf,null));};exports[_0x663a('0x45')]=function(_0x5a2c06,_0x453e98){return db[_0x663a('0x2b')]['create'](_0x5a2c06[_0x663a('0x46')],{})[_0x663a('0x25')](respondWithResult(_0x453e98,0xc9))[_0x663a('0x40')](handleError(_0x453e98,null));};exports[_0x663a('0x47')]=function(_0x183f3e,_0x386ffc){if(_0x183f3e[_0x663a('0x46')]['id']){delete _0x183f3e[_0x663a('0x46')]['id'];}return db[_0x663a('0x2b')][_0x663a('0x44')]({'where':{'id':_0x183f3e[_0x663a('0x42')]['id']}})[_0x663a('0x25')](handleEntityNotFound(_0x386ffc,null))[_0x663a('0x25')](saveUpdates(_0x183f3e['body'],null))[_0x663a('0x25')](respondWithResult(_0x386ffc,null))[_0x663a('0x40')](handleError(_0x386ffc,null));};exports[_0x663a('0x26')]=function(_0x9d2edf,_0x312948){return db['Dynamics365Configuration'][_0x663a('0x44')]({'where':{'id':_0x9d2edf[_0x663a('0x42')]['id']}})[_0x663a('0x25')](handleEntityNotFound(_0x312948,null))[_0x663a('0x25')](removeEntity(_0x312948,null))['catch'](handleError(_0x312948,null));};exports[_0x663a('0x48')]=function(_0x38267b,_0xa9b6dc,_0x2bf997){var _0x232004={};var _0x245125={};var _0x2aee32;var _0x564671;return db[_0x663a('0x2b')][_0x663a('0x49')]({'where':{'id':_0x38267b[_0x663a('0x42')]['id']}})[_0x663a('0x25')](handleEntityNotFound(_0xa9b6dc,null))[_0x663a('0x25')](function(_0x39f46e){if(_0x39f46e){_0x2aee32=_0x39f46e;_0x245125[_0x663a('0x2e')]=_['keys'](db[_0x663a('0x4a')][_0x663a('0x2c')]);_0x245125[_0x663a('0x2f')]=_[_0x663a('0x30')](_0x38267b[_0x663a('0x2f')]);_0x245125[_0x663a('0x31')]=_[_0x663a('0x33')](_0x245125[_0x663a('0x2e')],_0x245125[_0x663a('0x2f')]);_0x232004[_0x663a('0x32')]=_[_0x663a('0x33')](_0x245125[_0x663a('0x2e')],qs[_0x663a('0x34')](_0x38267b[_0x663a('0x2f')][_0x663a('0x34')]));_0x232004[_0x663a('0x32')]=_0x232004['attributes'][_0x663a('0x35')]?_0x232004[_0x663a('0x32')]:_0x245125[_0x663a('0x2e')];_0x232004[_0x663a('0x4b')]=qs['sort'](_0x38267b[_0x663a('0x2f')][_0x663a('0x38')]);_0x232004['where']=qs[_0x663a('0x31')](_[_0x663a('0x3a')](_0x38267b[_0x663a('0x2f')],_0x245125['filters']));if(_0x38267b[_0x663a('0x2f')][_0x663a('0x4c')]){_0x232004[_0x663a('0x39')]=_[_0x663a('0x3b')](_0x232004[_0x663a('0x39')],{'$or':_['map'](_0x232004['attributes'],function(_0x2a56ec){var _0x1535f5={};_0x1535f5[_0x2a56ec]={'$like':'%'+_0x38267b['query'][_0x663a('0x4c')]+'%'};return _0x1535f5;})});}_0x232004=_['merge']({},_0x232004,_0x38267b['options']);return _0x2aee32[_0x663a('0x48')](_0x232004);}})[_0x663a('0x25')](function(_0x1ca38c){if(_0x1ca38c){_0x564671=_0x1ca38c[_0x663a('0x35')];if(!_0x38267b[_0x663a('0x2f')][_0x663a('0x36')](_0x663a('0x37'))){_0x232004['limit']=qs[_0x663a('0x1d')](_0x38267b[_0x663a('0x2f')][_0x663a('0x1d')]);_0x232004[_0x663a('0x1f')]=qs[_0x663a('0x1f')](_0x38267b[_0x663a('0x2f')][_0x663a('0x1f')]);}return _0x2aee32[_0x663a('0x48')](_0x232004);}})[_0x663a('0x25')](function(_0x30a879){if(_0x30a879){return _0x30a879?{'count':_0x564671,'rows':_0x30a879}:null;}})[_0x663a('0x25')](respondWithResult(_0xa9b6dc,null))[_0x663a('0x40')](handleError(_0xa9b6dc,null));};exports[_0x663a('0x4d')]=function(_0x13c551,_0x1dd12a,_0x55529a){var _0x1be252={};var _0x403f7c={};var _0x141836;var _0x25afd7;return db['Dynamics365Configuration'][_0x663a('0x49')]({'where':{'id':_0x13c551[_0x663a('0x42')]['id']}})[_0x663a('0x25')](handleEntityNotFound(_0x1dd12a,null))[_0x663a('0x25')](function(_0xb2af34){if(_0xb2af34){_0x141836=_0xb2af34;_0x403f7c[_0x663a('0x2e')]=_[_0x663a('0x30')](db['Dynamics365Field'][_0x663a('0x2c')]);_0x403f7c['query']=_[_0x663a('0x30')](_0x13c551[_0x663a('0x2f')]);_0x403f7c[_0x663a('0x31')]=_[_0x663a('0x33')](_0x403f7c[_0x663a('0x2e')],_0x403f7c[_0x663a('0x2f')]);_0x1be252['attributes']=_[_0x663a('0x33')](_0x403f7c[_0x663a('0x2e')],qs[_0x663a('0x34')](_0x13c551['query'][_0x663a('0x34')]));_0x1be252[_0x663a('0x32')]=_0x1be252[_0x663a('0x32')]['length']?_0x1be252[_0x663a('0x32')]:_0x403f7c[_0x663a('0x2e')];_0x1be252['order']=qs['sort'](_0x13c551[_0x663a('0x2f')]['sort']);_0x1be252['where']=qs['filters'](_[_0x663a('0x3a')](_0x13c551['query'],_0x403f7c[_0x663a('0x31')]));if(_0x13c551[_0x663a('0x2f')]['filter']){_0x1be252[_0x663a('0x39')]=_['merge'](_0x1be252[_0x663a('0x39')],{'$or':_[_0x663a('0x2a')](_0x1be252[_0x663a('0x32')],function(_0x1ad7e4){var _0x472cb7={};_0x472cb7[_0x1ad7e4]={'$like':'%'+_0x13c551[_0x663a('0x2f')][_0x663a('0x4c')]+'%'};return _0x472cb7;})});}_0x1be252=_['merge']({},_0x1be252,_0x13c551[_0x663a('0x43')]);return _0x141836[_0x663a('0x4d')](_0x1be252);}})[_0x663a('0x25')](function(_0x4009c5){if(_0x4009c5){_0x25afd7=_0x4009c5['length'];if(!_0x13c551['query']['hasOwnProperty'](_0x663a('0x37'))){_0x1be252[_0x663a('0x1d')]=qs[_0x663a('0x1d')](_0x13c551[_0x663a('0x2f')][_0x663a('0x1d')]);_0x1be252[_0x663a('0x1f')]=qs[_0x663a('0x1f')](_0x13c551['query'][_0x663a('0x1f')]);}return _0x141836['getSubjects'](_0x1be252);}})['then'](function(_0x59bb9c){if(_0x59bb9c){return _0x59bb9c?{'count':_0x25afd7,'rows':_0x59bb9c}:null;}})['then'](respondWithResult(_0x1dd12a,null))['catch'](handleError(_0x1dd12a,null));};exports[_0x663a('0x4e')]=function(_0x2b7406,_0x2e4b3e,_0x2d5918){var _0x35a85b={};var _0x459619={};var _0x44b955;var _0x471980;return db[_0x663a('0x2b')][_0x663a('0x49')]({'where':{'id':_0x2b7406[_0x663a('0x42')]['id']}})['then'](handleEntityNotFound(_0x2e4b3e,null))[_0x663a('0x25')](function(_0x1917f6){if(_0x1917f6){_0x44b955=_0x1917f6;_0x459619[_0x663a('0x2e')]=_['keys'](db[_0x663a('0x4a')]['rawAttributes']);_0x459619[_0x663a('0x2f')]=_[_0x663a('0x30')](_0x2b7406[_0x663a('0x2f')]);_0x459619[_0x663a('0x31')]=_[_0x663a('0x33')](_0x459619[_0x663a('0x2e')],_0x459619[_0x663a('0x2f')]);_0x35a85b[_0x663a('0x32')]=_['intersection'](_0x459619[_0x663a('0x2e')],qs['fields'](_0x2b7406[_0x663a('0x2f')][_0x663a('0x34')]));_0x35a85b['attributes']=_0x35a85b[_0x663a('0x32')][_0x663a('0x35')]?_0x35a85b['attributes']:_0x459619[_0x663a('0x2e')];_0x35a85b[_0x663a('0x4b')]=qs[_0x663a('0x38')](_0x2b7406[_0x663a('0x2f')][_0x663a('0x38')]);_0x35a85b[_0x663a('0x39')]=qs['filters'](_['pick'](_0x2b7406[_0x663a('0x2f')],_0x459619['filters']));if(_0x2b7406[_0x663a('0x2f')][_0x663a('0x4c')]){_0x35a85b[_0x663a('0x39')]=_[_0x663a('0x3b')](_0x35a85b[_0x663a('0x39')],{'$or':_[_0x663a('0x2a')](_0x35a85b[_0x663a('0x32')],function(_0x52f73f){var _0x4496b7={};_0x4496b7[_0x52f73f]={'$like':'%'+_0x2b7406['query']['filter']+'%'};return _0x4496b7;})});}_0x35a85b=_[_0x663a('0x3b')]({},_0x35a85b,_0x2b7406['options']);return _0x44b955[_0x663a('0x4e')](_0x35a85b);}})[_0x663a('0x25')](function(_0xe64264){if(_0xe64264){_0x471980=_0xe64264[_0x663a('0x35')];if(!_0x2b7406[_0x663a('0x2f')][_0x663a('0x36')]('nolimit')){_0x35a85b[_0x663a('0x1d')]=qs['limit'](_0x2b7406[_0x663a('0x2f')][_0x663a('0x1d')]);_0x35a85b[_0x663a('0x1f')]=qs['offset'](_0x2b7406[_0x663a('0x2f')]['offset']);}return _0x44b955[_0x663a('0x4e')](_0x35a85b);}})[_0x663a('0x25')](function(_0x19f8f5){if(_0x19f8f5){return _0x19f8f5?{'count':_0x471980,'rows':_0x19f8f5}:null;}})[_0x663a('0x25')](respondWithResult(_0x2e4b3e,null))['catch'](handleError(_0x2e4b3e,null));};
\ No newline at end of file
+var _0x1095=['VIRTUAL','options','includeAll','include','catch','show','params','keys','find','create','body','destroy','getFields','Dynamics365Field','getSubjects','getDescriptions','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','lodash','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','error','stack','name','send','map','Dynamics365Configuration','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge'];(function(_0x296db0,_0x386561){var _0x3dfc52=function(_0x514e42){while(--_0x514e42){_0x296db0['push'](_0x296db0['shift']());}};_0x3dfc52(++_0x386561);}(_0x1095,0xf7));var _0x5109=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0x1095[_0x49ca18];return _0x145d54;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5109('0x0'));var zipdir=require(_0x5109('0x1'));var jsonpatch=require(_0x5109('0x2'));var rp=require(_0x5109('0x3'));var moment=require(_0x5109('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x5109('0x5'));var util=require(_0x5109('0x6'));var path=require('path');var sox=require(_0x5109('0x7'));var csv=require(_0x5109('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5109('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x5109('0xa'));var toCsv=require(_0x5109('0x8'));var querystring=require(_0x5109('0xb'));var Papa=require(_0x5109('0xc'));var Redis=require(_0x5109('0xd'));var authService=require(_0x5109('0xe'));var qs=require(_0x5109('0xf'));var as=require(_0x5109('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5109('0x11'))(_0x5109('0x12'));var utils=require(_0x5109('0x13'));var config=require(_0x5109('0x14'));var licenseUtil=require(_0x5109('0x15'));var db=require(_0x5109('0x16'))['db'];function respondWithStatusCode(_0x128780,_0x224e83){_0x224e83=_0x224e83||0xcc;return function(_0x31948e){if(_0x31948e){return _0x128780[_0x5109('0x17')](_0x224e83);}return _0x128780[_0x5109('0x18')](_0x224e83)[_0x5109('0x19')]();};}function respondWithResult(_0x5d74bb,_0x16181c){_0x16181c=_0x16181c||0xc8;return function(_0x25f29b){if(_0x25f29b){return _0x5d74bb[_0x5109('0x18')](_0x16181c)['json'](_0x25f29b);}};}function respondWithFilteredResult(_0x369709,_0x3b8f13){return function(_0x137bcd){if(_0x137bcd){var _0xedf740=typeof _0x3b8f13[_0x5109('0x1a')]===_0x5109('0x1b')&&typeof _0x3b8f13['limit']===_0x5109('0x1b');var _0x1e501e=_0x137bcd['count'];var _0x5229b4=_0xedf740?0x0:_0x3b8f13['offset'];var _0x3f41d0=_0xedf740?_0x137bcd[_0x5109('0x1c')]:_0x3b8f13[_0x5109('0x1a')]+_0x3b8f13[_0x5109('0x1d')];var _0x19fd2a;if(_0x3f41d0>=_0x1e501e){_0x3f41d0=_0x1e501e;_0x19fd2a=0xc8;}else{_0x19fd2a=0xce;}_0x369709[_0x5109('0x18')](_0x19fd2a);return _0x369709['set'](_0x5109('0x1e'),_0x5229b4+'-'+_0x3f41d0+'/'+_0x1e501e)['json'](_0x137bcd);}return null;};}function patchUpdates(_0x5b1aa4){return function(_0x3b943d){try{jsonpatch[_0x5109('0x1f')](_0x3b943d,_0x5b1aa4,!![]);}catch(_0x234872){return BPromise[_0x5109('0x20')](_0x234872);}return _0x3b943d[_0x5109('0x21')]();};}function saveUpdates(_0x171f3c,_0x1a1705){return function(_0xf08423){if(_0xf08423){return _0xf08423[_0x5109('0x22')](_0x171f3c)[_0x5109('0x23')](function(_0x1c31e7){return _0x1c31e7;});}return null;};}function removeEntity(_0x45a95a,_0x4f9bf9){return function(_0x577fea){if(_0x577fea){return _0x577fea['destroy']()[_0x5109('0x23')](function(){_0x45a95a[_0x5109('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3b9980,_0x412add){return function(_0x27cf09){if(!_0x27cf09){_0x3b9980[_0x5109('0x17')](0x194);}return _0x27cf09;};}function handleError(_0x170c28,_0x46e910){_0x46e910=_0x46e910||0x1f4;return function(_0x521634){logger[_0x5109('0x24')](_0x521634[_0x5109('0x25')]);if(_0x521634[_0x5109('0x26')]){delete _0x521634[_0x5109('0x26')];}_0x170c28[_0x5109('0x18')](_0x46e910)[_0x5109('0x27')](_0x521634);};}exports['index']=function(_0x50d68f,_0x296b3d){var _0x13fac1={},_0x1409e4={},_0x56b0ef={'count':0x0,'rows':[]};var _0x303957=_[_0x5109('0x28')](db[_0x5109('0x29')][_0x5109('0x2a')],function(_0x3a4b30){return{'name':_0x3a4b30[_0x5109('0x2b')],'type':_0x3a4b30[_0x5109('0x2c')][_0x5109('0x2d')]};});_0x1409e4[_0x5109('0x2e')]=_[_0x5109('0x28')](_0x303957,_0x5109('0x26'));_0x1409e4[_0x5109('0x2f')]=_['keys'](_0x50d68f[_0x5109('0x2f')]);_0x1409e4[_0x5109('0x30')]=_[_0x5109('0x31')](_0x1409e4[_0x5109('0x2e')],_0x1409e4[_0x5109('0x2f')]);_0x13fac1[_0x5109('0x32')]=_['intersection'](_0x1409e4[_0x5109('0x2e')],qs[_0x5109('0x33')](_0x50d68f[_0x5109('0x2f')][_0x5109('0x33')]));_0x13fac1[_0x5109('0x32')]=_0x13fac1[_0x5109('0x32')][_0x5109('0x34')]?_0x13fac1[_0x5109('0x32')]:_0x1409e4[_0x5109('0x2e')];if(!_0x50d68f[_0x5109('0x2f')][_0x5109('0x35')](_0x5109('0x36'))){_0x13fac1[_0x5109('0x1d')]=qs['limit'](_0x50d68f['query'][_0x5109('0x1d')]);_0x13fac1['offset']=qs['offset'](_0x50d68f['query'][_0x5109('0x1a')]);}_0x13fac1[_0x5109('0x37')]=qs[_0x5109('0x38')](_0x50d68f[_0x5109('0x2f')][_0x5109('0x38')]);_0x13fac1[_0x5109('0x39')]=qs['filters'](_[_0x5109('0x3a')](_0x50d68f[_0x5109('0x2f')],_0x1409e4[_0x5109('0x30')]),_0x303957);if(_0x50d68f[_0x5109('0x2f')][_0x5109('0x3b')]){_0x13fac1[_0x5109('0x39')]=_[_0x5109('0x3c')](_0x13fac1[_0x5109('0x39')],{'$or':_[_0x5109('0x28')](_0x303957,function(_0x3205a7){if(_0x3205a7[_0x5109('0x2c')]!==_0x5109('0x3d')){var _0x3ec5d3={};_0x3ec5d3[_0x3205a7[_0x5109('0x26')]]={'$like':'%'+_0x50d68f[_0x5109('0x2f')][_0x5109('0x3b')]+'%'};return _0x3ec5d3;}})});}_0x13fac1=_['merge']({},_0x13fac1,_0x50d68f[_0x5109('0x3e')]);var _0x51f60a={'where':_0x13fac1[_0x5109('0x39')]};return db[_0x5109('0x29')][_0x5109('0x1c')](_0x51f60a)[_0x5109('0x23')](function(_0x3f0ec1){_0x56b0ef[_0x5109('0x1c')]=_0x3f0ec1;if(_0x50d68f[_0x5109('0x2f')][_0x5109('0x3f')]){_0x13fac1[_0x5109('0x40')]=[{'all':!![]}];}return db[_0x5109('0x29')]['findAll'](_0x13fac1);})[_0x5109('0x23')](function(_0x33c700){_0x56b0ef['rows']=_0x33c700;return _0x56b0ef;})[_0x5109('0x23')](respondWithFilteredResult(_0x296b3d,_0x13fac1))[_0x5109('0x41')](handleError(_0x296b3d,null));};exports[_0x5109('0x42')]=function(_0x55fb99,_0x624e1d){var _0x1fa7b8={'raw':![],'where':{'id':_0x55fb99[_0x5109('0x43')]['id']}},_0x57be16={};_0x57be16['model']=_[_0x5109('0x44')](db[_0x5109('0x29')][_0x5109('0x2a')]);_0x57be16[_0x5109('0x2f')]=_[_0x5109('0x44')](_0x55fb99[_0x5109('0x2f')]);_0x57be16[_0x5109('0x30')]=_[_0x5109('0x31')](_0x57be16[_0x5109('0x2e')],_0x57be16[_0x5109('0x2f')]);_0x1fa7b8[_0x5109('0x32')]=_[_0x5109('0x31')](_0x57be16['model'],qs[_0x5109('0x33')](_0x55fb99[_0x5109('0x2f')]['fields']));_0x1fa7b8[_0x5109('0x32')]=_0x1fa7b8[_0x5109('0x32')][_0x5109('0x34')]?_0x1fa7b8['attributes']:_0x57be16['model'];if(_0x55fb99[_0x5109('0x2f')][_0x5109('0x3f')]){_0x1fa7b8[_0x5109('0x40')]=[{'all':!![]}];}_0x1fa7b8=_[_0x5109('0x3c')]({},_0x1fa7b8,_0x55fb99[_0x5109('0x3e')]);return db[_0x5109('0x29')][_0x5109('0x45')](_0x1fa7b8)['then'](handleEntityNotFound(_0x624e1d,null))[_0x5109('0x23')](respondWithResult(_0x624e1d,null))[_0x5109('0x41')](handleError(_0x624e1d,null));};exports[_0x5109('0x46')]=function(_0x351302,_0x28deca){return db[_0x5109('0x29')][_0x5109('0x46')](_0x351302['body'],{})[_0x5109('0x23')](respondWithResult(_0x28deca,0xc9))[_0x5109('0x41')](handleError(_0x28deca,null));};exports[_0x5109('0x22')]=function(_0x2d6937,_0x28d78b){if(_0x2d6937[_0x5109('0x47')]['id']){delete _0x2d6937[_0x5109('0x47')]['id'];}return db[_0x5109('0x29')][_0x5109('0x45')]({'where':{'id':_0x2d6937[_0x5109('0x43')]['id']}})['then'](handleEntityNotFound(_0x28d78b,null))[_0x5109('0x23')](saveUpdates(_0x2d6937[_0x5109('0x47')],null))[_0x5109('0x23')](respondWithResult(_0x28d78b,null))[_0x5109('0x41')](handleError(_0x28d78b,null));};exports[_0x5109('0x48')]=function(_0x56a739,_0x397710){return db['Dynamics365Configuration']['find']({'where':{'id':_0x56a739[_0x5109('0x43')]['id']}})['then'](handleEntityNotFound(_0x397710,null))[_0x5109('0x23')](removeEntity(_0x397710,null))[_0x5109('0x41')](handleError(_0x397710,null));};exports[_0x5109('0x49')]=function(_0x17be76,_0xdc537d,_0xc6b2e1){var _0x552a6e={};var _0x2dfedc={};var _0x4b784a;var _0x435f2b;return db[_0x5109('0x29')]['findOne']({'where':{'id':_0x17be76[_0x5109('0x43')]['id']}})['then'](handleEntityNotFound(_0xdc537d,null))[_0x5109('0x23')](function(_0x5f42ff){if(_0x5f42ff){_0x4b784a=_0x5f42ff;_0x2dfedc[_0x5109('0x2e')]=_['keys'](db[_0x5109('0x4a')]['rawAttributes']);_0x2dfedc[_0x5109('0x2f')]=_[_0x5109('0x44')](_0x17be76[_0x5109('0x2f')]);_0x2dfedc[_0x5109('0x30')]=_['intersection'](_0x2dfedc[_0x5109('0x2e')],_0x2dfedc[_0x5109('0x2f')]);_0x552a6e[_0x5109('0x32')]=_[_0x5109('0x31')](_0x2dfedc[_0x5109('0x2e')],qs[_0x5109('0x33')](_0x17be76[_0x5109('0x2f')][_0x5109('0x33')]));_0x552a6e[_0x5109('0x32')]=_0x552a6e[_0x5109('0x32')][_0x5109('0x34')]?_0x552a6e[_0x5109('0x32')]:_0x2dfedc['model'];_0x552a6e[_0x5109('0x37')]=qs[_0x5109('0x38')](_0x17be76[_0x5109('0x2f')][_0x5109('0x38')]);_0x552a6e[_0x5109('0x39')]=qs[_0x5109('0x30')](_[_0x5109('0x3a')](_0x17be76[_0x5109('0x2f')],_0x2dfedc[_0x5109('0x30')]));if(_0x17be76['query'][_0x5109('0x3b')]){_0x552a6e[_0x5109('0x39')]=_[_0x5109('0x3c')](_0x552a6e[_0x5109('0x39')],{'$or':_['map'](_0x552a6e[_0x5109('0x32')],function(_0x37ed35){var _0x2dc7c7={};_0x2dc7c7[_0x37ed35]={'$like':'%'+_0x17be76['query'][_0x5109('0x3b')]+'%'};return _0x2dc7c7;})});}_0x552a6e=_['merge']({},_0x552a6e,_0x17be76[_0x5109('0x3e')]);return _0x4b784a['getFields'](_0x552a6e);}})[_0x5109('0x23')](function(_0xaa9368){if(_0xaa9368){_0x435f2b=_0xaa9368['length'];if(!_0x17be76[_0x5109('0x2f')][_0x5109('0x35')](_0x5109('0x36'))){_0x552a6e[_0x5109('0x1d')]=qs[_0x5109('0x1d')](_0x17be76[_0x5109('0x2f')][_0x5109('0x1d')]);_0x552a6e[_0x5109('0x1a')]=qs[_0x5109('0x1a')](_0x17be76['query'][_0x5109('0x1a')]);}return _0x4b784a[_0x5109('0x49')](_0x552a6e);}})[_0x5109('0x23')](function(_0x8b317a){if(_0x8b317a){return _0x8b317a?{'count':_0x435f2b,'rows':_0x8b317a}:null;}})[_0x5109('0x23')](respondWithResult(_0xdc537d,null))[_0x5109('0x41')](handleError(_0xdc537d,null));};exports['getSubjects']=function(_0x12b2b7,_0x2fe699,_0x394a2f){var _0x382dc7={};var _0x51741b={};var _0x53209a;var _0x587948;return db[_0x5109('0x29')]['findOne']({'where':{'id':_0x12b2b7[_0x5109('0x43')]['id']}})[_0x5109('0x23')](handleEntityNotFound(_0x2fe699,null))[_0x5109('0x23')](function(_0x4d604b){if(_0x4d604b){_0x53209a=_0x4d604b;_0x51741b[_0x5109('0x2e')]=_[_0x5109('0x44')](db[_0x5109('0x4a')][_0x5109('0x2a')]);_0x51741b[_0x5109('0x2f')]=_[_0x5109('0x44')](_0x12b2b7[_0x5109('0x2f')]);_0x51741b[_0x5109('0x30')]=_[_0x5109('0x31')](_0x51741b[_0x5109('0x2e')],_0x51741b[_0x5109('0x2f')]);_0x382dc7['attributes']=_['intersection'](_0x51741b[_0x5109('0x2e')],qs[_0x5109('0x33')](_0x12b2b7['query'][_0x5109('0x33')]));_0x382dc7[_0x5109('0x32')]=_0x382dc7[_0x5109('0x32')][_0x5109('0x34')]?_0x382dc7['attributes']:_0x51741b[_0x5109('0x2e')];_0x382dc7[_0x5109('0x37')]=qs['sort'](_0x12b2b7[_0x5109('0x2f')][_0x5109('0x38')]);_0x382dc7['where']=qs[_0x5109('0x30')](_[_0x5109('0x3a')](_0x12b2b7['query'],_0x51741b[_0x5109('0x30')]));if(_0x12b2b7[_0x5109('0x2f')][_0x5109('0x3b')]){_0x382dc7[_0x5109('0x39')]=_['merge'](_0x382dc7[_0x5109('0x39')],{'$or':_['map'](_0x382dc7['attributes'],function(_0x41bc8c){var _0x12d7c4={};_0x12d7c4[_0x41bc8c]={'$like':'%'+_0x12b2b7[_0x5109('0x2f')][_0x5109('0x3b')]+'%'};return _0x12d7c4;})});}_0x382dc7=_[_0x5109('0x3c')]({},_0x382dc7,_0x12b2b7[_0x5109('0x3e')]);return _0x53209a[_0x5109('0x4b')](_0x382dc7);}})[_0x5109('0x23')](function(_0x35a212){if(_0x35a212){_0x587948=_0x35a212[_0x5109('0x34')];if(!_0x12b2b7[_0x5109('0x2f')]['hasOwnProperty'](_0x5109('0x36'))){_0x382dc7['limit']=qs['limit'](_0x12b2b7[_0x5109('0x2f')][_0x5109('0x1d')]);_0x382dc7[_0x5109('0x1a')]=qs[_0x5109('0x1a')](_0x12b2b7['query'][_0x5109('0x1a')]);}return _0x53209a['getSubjects'](_0x382dc7);}})[_0x5109('0x23')](function(_0x189228){if(_0x189228){return _0x189228?{'count':_0x587948,'rows':_0x189228}:null;}})[_0x5109('0x23')](respondWithResult(_0x2fe699,null))[_0x5109('0x41')](handleError(_0x2fe699,null));};exports['getDescriptions']=function(_0x5e175d,_0x10b683,_0x6e3e32){var _0x132588={};var _0x3d4219={};var _0x18164c;var _0x4221e6;return db[_0x5109('0x29')]['findOne']({'where':{'id':_0x5e175d[_0x5109('0x43')]['id']}})[_0x5109('0x23')](handleEntityNotFound(_0x10b683,null))[_0x5109('0x23')](function(_0x4fc359){if(_0x4fc359){_0x18164c=_0x4fc359;_0x3d4219[_0x5109('0x2e')]=_[_0x5109('0x44')](db[_0x5109('0x4a')][_0x5109('0x2a')]);_0x3d4219[_0x5109('0x2f')]=_['keys'](_0x5e175d[_0x5109('0x2f')]);_0x3d4219[_0x5109('0x30')]=_[_0x5109('0x31')](_0x3d4219[_0x5109('0x2e')],_0x3d4219[_0x5109('0x2f')]);_0x132588[_0x5109('0x32')]=_[_0x5109('0x31')](_0x3d4219[_0x5109('0x2e')],qs['fields'](_0x5e175d[_0x5109('0x2f')]['fields']));_0x132588[_0x5109('0x32')]=_0x132588[_0x5109('0x32')]['length']?_0x132588['attributes']:_0x3d4219['model'];_0x132588[_0x5109('0x37')]=qs[_0x5109('0x38')](_0x5e175d[_0x5109('0x2f')]['sort']);_0x132588[_0x5109('0x39')]=qs['filters'](_[_0x5109('0x3a')](_0x5e175d['query'],_0x3d4219[_0x5109('0x30')]));if(_0x5e175d[_0x5109('0x2f')][_0x5109('0x3b')]){_0x132588[_0x5109('0x39')]=_[_0x5109('0x3c')](_0x132588[_0x5109('0x39')],{'$or':_[_0x5109('0x28')](_0x132588[_0x5109('0x32')],function(_0x395364){var _0x2c8243={};_0x2c8243[_0x395364]={'$like':'%'+_0x5e175d[_0x5109('0x2f')][_0x5109('0x3b')]+'%'};return _0x2c8243;})});}_0x132588=_[_0x5109('0x3c')]({},_0x132588,_0x5e175d[_0x5109('0x3e')]);return _0x18164c[_0x5109('0x4c')](_0x132588);}})[_0x5109('0x23')](function(_0x2c85ff){if(_0x2c85ff){_0x4221e6=_0x2c85ff[_0x5109('0x34')];if(!_0x5e175d[_0x5109('0x2f')][_0x5109('0x35')]('nolimit')){_0x132588['limit']=qs[_0x5109('0x1d')](_0x5e175d['query'][_0x5109('0x1d')]);_0x132588['offset']=qs[_0x5109('0x1a')](_0x5e175d[_0x5109('0x2f')][_0x5109('0x1a')]);}return _0x18164c[_0x5109('0x4c')](_0x132588);}})[_0x5109('0x23')](function(_0x2003d4){if(_0x2003d4){return _0x2003d4?{'count':_0x4221e6,'rows':_0x2003d4}:null;}})[_0x5109('0x23')](respondWithResult(_0x10b683,null))[_0x5109('0x41')](handleError(_0x10b683,null));};
\ No newline at end of file
index 9fbc04c..3c44c4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbec5=['request-promise','path','../../config/environment','./intDynamics365Configuration.attributes','exports','define','Dynamics365Configuration','int_dynamics365_configurations','lodash','util','api','moment','bluebird'];(function(_0x2f37be,_0x3eacbb){var _0x1574f4=function(_0x2ca2b0){while(--_0x2ca2b0){_0x2f37be['push'](_0x2f37be['shift']());}};_0x1574f4(++_0x3eacbb);}(_0xbec5,0xe5));var _0x5bec=function(_0x2aa0e7,_0x4e5145){_0x2aa0e7=_0x2aa0e7-0x0;var _0x1472c0=_0xbec5[_0x2aa0e7];return _0x1472c0;};'use strict';var _=require(_0x5bec('0x0'));var util=require(_0x5bec('0x1'));var logger=require('../../config/logger')(_0x5bec('0x2'));var moment=require(_0x5bec('0x3'));var BPromise=require(_0x5bec('0x4'));var rp=require(_0x5bec('0x5'));var fs=require('fs');var path=require(_0x5bec('0x6'));var rimraf=require('rimraf');var config=require(_0x5bec('0x7'));var attributes=require(_0x5bec('0x8'));module[_0x5bec('0x9')]=function(_0x4aaac6,_0x3ed67a){return _0x4aaac6[_0x5bec('0xa')](_0x5bec('0xb'),attributes,{'tableName':_0x5bec('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb4e6=['path','rimraf','./intDynamics365Configuration.attributes','exports','define','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x8686bd,_0x227947){var _0x3e7f2f=function(_0x6ebc2c){while(--_0x6ebc2c){_0x8686bd['push'](_0x8686bd['shift']());}};_0x3e7f2f(++_0x227947);}(_0xb4e6,0x1f4));var _0x6b4e=function(_0x9edfd5,_0x286486){_0x9edfd5=_0x9edfd5-0x0;var _0x330738=_0xb4e6[_0x9edfd5];return _0x330738;};'use strict';var _=require(_0x6b4e('0x0'));var util=require('util');var logger=require(_0x6b4e('0x1'))(_0x6b4e('0x2'));var moment=require(_0x6b4e('0x3'));var BPromise=require(_0x6b4e('0x4'));var rp=require(_0x6b4e('0x5'));var fs=require('fs');var path=require(_0x6b4e('0x6'));var rimraf=require(_0x6b4e('0x7'));var config=require('../../config/environment');var attributes=require(_0x6b4e('0x8'));module[_0x6b4e('0x9')]=function(_0x1f67a2,_0x49de51){return _0x1f67a2[_0x6b4e('0xa')]('Dynamics365Configuration',attributes,{'tableName':'int_dynamics365_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7c49b64..1cbe43d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde0b=['request\x20sent','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify','message','error','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','Dynamics365Configuration,\x20%s,\x20%s'];(function(_0x4278ba,_0xb2ef35){var _0xcaba8f=function(_0x4ac2c9){while(--_0x4ac2c9){_0x4278ba['push'](_0x4278ba['shift']());}};_0xcaba8f(++_0xb2ef35);}(_0xde0b,0x1d1));var _0xbde0=function(_0x34025a,_0x333f5c){_0x34025a=_0x34025a-0x0;var _0x23d00c=_0xde0b[_0x34025a];return _0x23d00c;};'use strict';var _=require(_0xbde0('0x0'));var util=require(_0xbde0('0x1'));var moment=require(_0xbde0('0x2'));var BPromise=require(_0xbde0('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbde0('0x4'));var db=require(_0xbde0('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xbde0('0x6'))(_0xbde0('0x7'));var config=require(_0xbde0('0x8'));var jayson=require(_0xbde0('0x9'));var client=jayson[_0xbde0('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x34a20a,_0x3e998f,_0xaca2ef){return new BPromise(function(_0x14570b,_0x21e8c9){return client[_0xbde0('0xb')](_0x34a20a,_0xaca2ef)[_0xbde0('0xc')](function(_0x24a2c2){logger[_0xbde0('0xd')](_0xbde0('0xe'),_0x3e998f,_0xbde0('0xf'));logger['debug'](_0xbde0('0x10'),_0x3e998f,_0xbde0('0xf'),JSON[_0xbde0('0x11')](_0x24a2c2));if(_0x24a2c2['error']){if(_0x24a2c2['error']['code']===0x1f4){logger['error'](_0xbde0('0xe'),_0x3e998f,_0x24a2c2['error'][_0xbde0('0x12')]);return _0x21e8c9(_0x24a2c2[_0xbde0('0x13')][_0xbde0('0x12')]);}logger[_0xbde0('0x13')](_0xbde0('0xe'),_0x3e998f,_0x24a2c2[_0xbde0('0x13')][_0xbde0('0x12')]);return _0x14570b(_0x24a2c2[_0xbde0('0x13')][_0xbde0('0x12')]);}else{logger[_0xbde0('0xd')]('Dynamics365Configuration,\x20%s,\x20%s',_0x3e998f,'request\x20sent');_0x14570b(_0x24a2c2['result']['message']);}})['catch'](function(_0x30c280){logger[_0xbde0('0x13')](_0xbde0('0xe'),_0x3e998f,_0x30c280);_0x21e8c9(_0x30c280);});});}
\ No newline at end of file
+var _0x49ed=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Dynamics365Configuration,\x20%s,\x20%s','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x45c1aa,_0x2ad5c8){var _0x298eec=function(_0x37c781){while(--_0x37c781){_0x45c1aa['push'](_0x45c1aa['shift']());}};_0x298eec(++_0x2ad5c8);}(_0x49ed,0x189));var _0xd49e=function(_0x3df57e,_0x2bb480){_0x3df57e=_0x3df57e-0x0;var _0x132552=_0x49ed[_0x3df57e];return _0x132552;};'use strict';var _=require('lodash');var util=require(_0xd49e('0x0'));var moment=require(_0xd49e('0x1'));var BPromise=require(_0xd49e('0x2'));var rs=require(_0xd49e('0x3'));var fs=require('fs');var Redis=require(_0xd49e('0x4'));var db=require(_0xd49e('0x5'))['db'];var utils=require(_0xd49e('0x6'));var logger=require(_0xd49e('0x7'))(_0xd49e('0x8'));var config=require(_0xd49e('0x9'));var jayson=require(_0xd49e('0xa'));var client=jayson[_0xd49e('0xb')][_0xd49e('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xe3b7f3,_0x3b5d48,_0x42b6af){return new BPromise(function(_0x29cfca,_0x13d91c){return client[_0xd49e('0xd')](_0xe3b7f3,_0x42b6af)[_0xd49e('0xe')](function(_0x428b2f){logger['info'](_0xd49e('0xf'),_0x3b5d48,'request\x20sent');logger[_0xd49e('0x10')](_0xd49e('0x11'),_0x3b5d48,_0xd49e('0x12'),JSON[_0xd49e('0x13')](_0x428b2f));if(_0x428b2f[_0xd49e('0x14')]){if(_0x428b2f['error'][_0xd49e('0x15')]===0x1f4){logger[_0xd49e('0x14')](_0xd49e('0xf'),_0x3b5d48,_0x428b2f[_0xd49e('0x14')][_0xd49e('0x16')]);return _0x13d91c(_0x428b2f[_0xd49e('0x14')][_0xd49e('0x16')]);}logger['error'](_0xd49e('0xf'),_0x3b5d48,_0x428b2f['error'][_0xd49e('0x16')]);return _0x29cfca(_0x428b2f[_0xd49e('0x14')]['message']);}else{logger[_0xd49e('0x17')](_0xd49e('0xf'),_0x3b5d48,_0xd49e('0x12'));_0x29cfca(_0x428b2f[_0xd49e('0x18')][_0xd49e('0x16')]);}})['catch'](function(_0x2f1333){logger['error'](_0xd49e('0xf'),_0x3b5d48,_0x2f1333);_0x13d91c(_0x2f1333);});});}
\ No newline at end of file
index 45c6295..91474f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc96a=['./intDynamics365Field.controller','isAuthenticated','index','get','show','create','/:id','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x234755,_0x554741){var _0x3e60ee=function(_0x46a9b){while(--_0x46a9b){_0x234755['push'](_0x234755['shift']());}};_0x3e60ee(++_0x554741);}(_0xc96a,0x191));var _0xac96=function(_0x2d2ca2,_0x51873f){_0x2d2ca2=_0x2d2ca2-0x0;var _0x48489d=_0xc96a[_0x2d2ca2];return _0x48489d;};'use strict';var multer=require(_0xac96('0x0'));var util=require('util');var path=require(_0xac96('0x1'));var timeout=require(_0xac96('0x2'));var express=require(_0xac96('0x3'));var router=express[_0xac96('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xac96('0x5'));var interaction=require(_0xac96('0x6'));var config=require('../../config/environment');var controller=require(_0xac96('0x7'));router['get']('/',auth[_0xac96('0x8')](),controller[_0xac96('0x9')]);router[_0xac96('0xa')]('/:id',auth[_0xac96('0x8')](),controller[_0xac96('0xb')]);router['post']('/',auth[_0xac96('0x8')](),controller[_0xac96('0xc')]);router['put'](_0xac96('0xd'),auth[_0xac96('0x8')](),controller['update']);router[_0xac96('0xe')]('/:id',auth[_0xac96('0x8')](),controller[_0xac96('0xf')]);module[_0xac96('0x10')]=router;
\ No newline at end of file
+var _0x778e=['../../components/interaction/service','../../config/environment','./intDynamics365Field.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete','destroy','util','path','connect-timeout','express','fs-extra'];(function(_0x403c57,_0x280a51){var _0x35fa69=function(_0x13a356){while(--_0x13a356){_0x403c57['push'](_0x403c57['shift']());}};_0x35fa69(++_0x280a51);}(_0x778e,0xd3));var _0xe778=function(_0x721da2,_0x3cb98c){_0x721da2=_0x721da2-0x0;var _0x432ab1=_0x778e[_0x721da2];return _0x432ab1;};'use strict';var multer=require('multer');var util=require(_0xe778('0x0'));var path=require(_0xe778('0x1'));var timeout=require(_0xe778('0x2'));var express=require(_0xe778('0x3'));var router=express['Router']();var fs_extra=require(_0xe778('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xe778('0x5'));var config=require(_0xe778('0x6'));var controller=require(_0xe778('0x7'));router[_0xe778('0x8')]('/',auth[_0xe778('0x9')](),controller[_0xe778('0xa')]);router[_0xe778('0x8')](_0xe778('0xb'),auth['isAuthenticated'](),controller[_0xe778('0xc')]);router[_0xe778('0xd')]('/',auth[_0xe778('0x9')](),controller['create']);router[_0xe778('0xe')](_0xe778('0xb'),auth[_0xe778('0x9')](),controller[_0xe778('0xf')]);router[_0xe778('0x10')]('/:id',auth[_0xe778('0x9')](),controller[_0xe778('0x11')]);module['exports']=router;
\ No newline at end of file
index 2381894..dc3b1ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b2b=['ENUM','STRING','sequelize','exports','variable','customVariable','keyValue','picklist','string'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x8b2b,0x107));var _0xb8b2=function(_0x46fb49,_0x208b5f){_0x46fb49=_0x46fb49-0x0;var _0x1e53f5=_0x8b2b[_0x46fb49];return _0x1e53f5;};'use strict';var Sequelize=require(_0xb8b2('0x0'));module[_0xb8b2('0x1')]={'type':{'type':Sequelize['ENUM']('string',_0xb8b2('0x2'),_0xb8b2('0x3'),_0xb8b2('0x4'),_0xb8b2('0x5')),'defaultValue':_0xb8b2('0x6')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xb8b2('0x7')](_0xb8b2('0x6'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0xb8b2('0x8')]},'idField':{'type':Sequelize[_0xb8b2('0x8')]},'nameField':{'type':Sequelize[_0xb8b2('0x8')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xb8b2('0x8')]}};
\ No newline at end of file
+var _0xb4d2=['string','STRING','BOOLEAN','sequelize','exports','ENUM','variable','customVariable','keyValue','picklist'];(function(_0x3d760c,_0x3600e1){var _0x399178=function(_0x4db7eb){while(--_0x4db7eb){_0x3d760c['push'](_0x3d760c['shift']());}};_0x399178(++_0x3600e1);}(_0xb4d2,0x1c5));var _0x2b4d=function(_0x326bf8,_0xc6a626){_0x326bf8=_0x326bf8-0x0;var _0x50fb1e=_0xb4d2[_0x326bf8];return _0x50fb1e;};'use strict';var Sequelize=require(_0x2b4d('0x0'));module[_0x2b4d('0x1')]={'type':{'type':Sequelize[_0x2b4d('0x2')]('string',_0x2b4d('0x3'),_0x2b4d('0x4'),_0x2b4d('0x5'),_0x2b4d('0x6')),'defaultValue':_0x2b4d('0x7')},'content':{'type':Sequelize[_0x2b4d('0x8')]},'key':{'type':Sequelize[_0x2b4d('0x8')]},'keyType':{'type':Sequelize[_0x2b4d('0x2')]('string',_0x2b4d('0x3'),_0x2b4d('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x2b4d('0x8')]},'customField':{'type':Sequelize[_0x2b4d('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x2b4d('0x8')]}};
\ No newline at end of file
index 7ec7260..83f9250 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd038=['includeAll','findAll','rows','show','params','include','find','create','body','catch','rimraf','zip-dir','fast-json-patch','request-promise','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/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','index','map','Dynamics365Field','rawAttributes','type','key','model','filters','intersection','query','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge'];(function(_0x17698c,_0x45e0d1){var _0x1a29a1=function(_0x47e880){while(--_0x47e880){_0x17698c['push'](_0x17698c['shift']());}};_0x1a29a1(++_0x45e0d1);}(_0xd038,0x1cc));var _0x8d03=function(_0x1460f6,_0x59051a){_0x1460f6=_0x1460f6-0x0;var _0x46ce94=_0xd038[_0x1460f6];return _0x46ce94;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8d03('0x0'));var zipdir=require(_0x8d03('0x1'));var jsonpatch=require(_0x8d03('0x2'));var rp=require(_0x8d03('0x3'));var moment=require('moment');var BPromise=require(_0x8d03('0x4'));var Mustache=require(_0x8d03('0x5'));var util=require(_0x8d03('0x6'));var path=require('path');var sox=require(_0x8d03('0x7'));var csv=require(_0x8d03('0x8'));var ejs=require(_0x8d03('0x9'));var fs=require('fs');var fs_extra=require(_0x8d03('0xa'));var _=require(_0x8d03('0xb'));var squel=require(_0x8d03('0xc'));var crypto=require(_0x8d03('0xd'));var jsforce=require(_0x8d03('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x8d03('0x8'));var querystring=require(_0x8d03('0xf'));var Papa=require(_0x8d03('0x10'));var Redis=require(_0x8d03('0x11'));var authService=require(_0x8d03('0x12'));var qs=require(_0x8d03('0x13'));var as=require(_0x8d03('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8d03('0x15'))(_0x8d03('0x16'));var utils=require(_0x8d03('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x8d03('0x18'));var db=require(_0x8d03('0x19'))['db'];function respondWithStatusCode(_0x34827a,_0x7fbf5e){_0x7fbf5e=_0x7fbf5e||0xcc;return function(_0x59c219){if(_0x59c219){return _0x34827a[_0x8d03('0x1a')](_0x7fbf5e);}return _0x34827a[_0x8d03('0x1b')](_0x7fbf5e)['end']();};}function respondWithResult(_0x11e5cd,_0x75be75){_0x75be75=_0x75be75||0xc8;return function(_0x59fd15){if(_0x59fd15){return _0x11e5cd[_0x8d03('0x1b')](_0x75be75)[_0x8d03('0x1c')](_0x59fd15);}};}function respondWithFilteredResult(_0x3d25c4,_0x481386){return function(_0x3fc76e){if(_0x3fc76e){var _0x31a4cf=typeof _0x481386[_0x8d03('0x1d')]===_0x8d03('0x1e')&&typeof _0x481386['limit']===_0x8d03('0x1e');var _0x444ab5=_0x3fc76e[_0x8d03('0x1f')];var _0xd68b91=_0x31a4cf?0x0:_0x481386[_0x8d03('0x1d')];var _0x49bc4a=_0x31a4cf?_0x3fc76e[_0x8d03('0x1f')]:_0x481386[_0x8d03('0x1d')]+_0x481386[_0x8d03('0x20')];var _0x30cdac;if(_0x49bc4a>=_0x444ab5){_0x49bc4a=_0x444ab5;_0x30cdac=0xc8;}else{_0x30cdac=0xce;}_0x3d25c4[_0x8d03('0x1b')](_0x30cdac);return _0x3d25c4[_0x8d03('0x21')](_0x8d03('0x22'),_0xd68b91+'-'+_0x49bc4a+'/'+_0x444ab5)[_0x8d03('0x1c')](_0x3fc76e);}return null;};}function patchUpdates(_0x58c61d){return function(_0x27dc4d){try{jsonpatch[_0x8d03('0x23')](_0x27dc4d,_0x58c61d,!![]);}catch(_0x29a39a){return BPromise[_0x8d03('0x24')](_0x29a39a);}return _0x27dc4d[_0x8d03('0x25')]();};}function saveUpdates(_0x1b9270,_0x1ea3d2){return function(_0x2b4033){if(_0x2b4033){return _0x2b4033[_0x8d03('0x26')](_0x1b9270)[_0x8d03('0x27')](function(_0x228261){return _0x228261;});}return null;};}function removeEntity(_0x4a637d,_0xc2695){return function(_0x3f4bfd){if(_0x3f4bfd){return _0x3f4bfd[_0x8d03('0x28')]()[_0x8d03('0x27')](function(){_0x4a637d['status'](0xcc)[_0x8d03('0x29')]();});}};}function handleEntityNotFound(_0x58397f,_0x2b0edc){return function(_0x2e3c95){if(!_0x2e3c95){_0x58397f[_0x8d03('0x1a')](0x194);}return _0x2e3c95;};}function handleError(_0x24cdb2,_0x1c12f9){_0x1c12f9=_0x1c12f9||0x1f4;return function(_0x38a23d){logger[_0x8d03('0x2a')](_0x38a23d[_0x8d03('0x2b')]);if(_0x38a23d[_0x8d03('0x2c')]){delete _0x38a23d[_0x8d03('0x2c')];}_0x24cdb2['status'](_0x1c12f9)['send'](_0x38a23d);};}exports[_0x8d03('0x2d')]=function(_0x562bcf,_0x160c36){var _0x4c96c1={},_0x960b7={},_0x3bb6f6={'count':0x0,'rows':[]};var _0x17e099=_[_0x8d03('0x2e')](db[_0x8d03('0x2f')][_0x8d03('0x30')],function(_0x30085e){return{'name':_0x30085e['fieldName'],'type':_0x30085e[_0x8d03('0x31')][_0x8d03('0x32')]};});_0x960b7[_0x8d03('0x33')]=_['map'](_0x17e099,_0x8d03('0x2c'));_0x960b7['query']=_['keys'](_0x562bcf['query']);_0x960b7[_0x8d03('0x34')]=_[_0x8d03('0x35')](_0x960b7[_0x8d03('0x33')],_0x960b7[_0x8d03('0x36')]);_0x4c96c1['attributes']=_['intersection'](_0x960b7[_0x8d03('0x33')],qs[_0x8d03('0x37')](_0x562bcf[_0x8d03('0x36')][_0x8d03('0x37')]));_0x4c96c1['attributes']=_0x4c96c1[_0x8d03('0x38')][_0x8d03('0x39')]?_0x4c96c1[_0x8d03('0x38')]:_0x960b7['model'];if(!_0x562bcf[_0x8d03('0x36')][_0x8d03('0x3a')]('nolimit')){_0x4c96c1[_0x8d03('0x20')]=qs[_0x8d03('0x20')](_0x562bcf[_0x8d03('0x36')][_0x8d03('0x20')]);_0x4c96c1[_0x8d03('0x1d')]=qs[_0x8d03('0x1d')](_0x562bcf['query']['offset']);}_0x4c96c1[_0x8d03('0x3b')]=qs[_0x8d03('0x3c')](_0x562bcf[_0x8d03('0x36')][_0x8d03('0x3c')]);_0x4c96c1[_0x8d03('0x3d')]=qs[_0x8d03('0x34')](_[_0x8d03('0x3e')](_0x562bcf[_0x8d03('0x36')],_0x960b7[_0x8d03('0x34')]),_0x17e099);if(_0x562bcf[_0x8d03('0x36')][_0x8d03('0x3f')]){_0x4c96c1['where']=_[_0x8d03('0x40')](_0x4c96c1[_0x8d03('0x3d')],{'$or':_[_0x8d03('0x2e')](_0x17e099,function(_0x5d7eb9){if(_0x5d7eb9[_0x8d03('0x31')]!=='VIRTUAL'){var _0x4c7bd0={};_0x4c7bd0[_0x5d7eb9[_0x8d03('0x2c')]]={'$like':'%'+_0x562bcf[_0x8d03('0x36')][_0x8d03('0x3f')]+'%'};return _0x4c7bd0;}})});}_0x4c96c1=_['merge']({},_0x4c96c1,_0x562bcf['options']);var _0x119482={'where':_0x4c96c1[_0x8d03('0x3d')]};return db['Dynamics365Field'][_0x8d03('0x1f')](_0x119482)['then'](function(_0x71a3c6){_0x3bb6f6[_0x8d03('0x1f')]=_0x71a3c6;if(_0x562bcf['query'][_0x8d03('0x41')]){_0x4c96c1['include']=[{'all':!![]}];}return db[_0x8d03('0x2f')][_0x8d03('0x42')](_0x4c96c1);})[_0x8d03('0x27')](function(_0x4652f2){_0x3bb6f6[_0x8d03('0x43')]=_0x4652f2;return _0x3bb6f6;})[_0x8d03('0x27')](respondWithFilteredResult(_0x160c36,_0x4c96c1))['catch'](handleError(_0x160c36,null));};exports[_0x8d03('0x44')]=function(_0x54d71f,_0x145c4a){var _0xa1e582={'raw':!![],'where':{'id':_0x54d71f[_0x8d03('0x45')]['id']}},_0x1d8dc1={};_0x1d8dc1[_0x8d03('0x33')]=_['keys'](db['Dynamics365Field'][_0x8d03('0x30')]);_0x1d8dc1[_0x8d03('0x36')]=_['keys'](_0x54d71f['query']);_0x1d8dc1[_0x8d03('0x34')]=_[_0x8d03('0x35')](_0x1d8dc1[_0x8d03('0x33')],_0x1d8dc1[_0x8d03('0x36')]);_0xa1e582[_0x8d03('0x38')]=_['intersection'](_0x1d8dc1[_0x8d03('0x33')],qs[_0x8d03('0x37')](_0x54d71f[_0x8d03('0x36')][_0x8d03('0x37')]));_0xa1e582['attributes']=_0xa1e582['attributes']['length']?_0xa1e582[_0x8d03('0x38')]:_0x1d8dc1[_0x8d03('0x33')];if(_0x54d71f[_0x8d03('0x36')]['includeAll']){_0xa1e582[_0x8d03('0x46')]=[{'all':!![]}];}_0xa1e582=_[_0x8d03('0x40')]({},_0xa1e582,_0x54d71f['options']);return db['Dynamics365Field'][_0x8d03('0x47')](_0xa1e582)[_0x8d03('0x27')](handleEntityNotFound(_0x145c4a,null))['then'](respondWithResult(_0x145c4a,null))['catch'](handleError(_0x145c4a,null));};exports[_0x8d03('0x48')]=function(_0x3daca2,_0x436e8f){return db[_0x8d03('0x2f')]['create'](_0x3daca2[_0x8d03('0x49')],{})[_0x8d03('0x27')](respondWithResult(_0x436e8f,0xc9))['catch'](handleError(_0x436e8f,null));};exports[_0x8d03('0x26')]=function(_0x53c41e,_0x2bb2ef){if(_0x53c41e[_0x8d03('0x49')]['id']){delete _0x53c41e['body']['id'];}return db['Dynamics365Field'][_0x8d03('0x47')]({'where':{'id':_0x53c41e[_0x8d03('0x45')]['id']}})[_0x8d03('0x27')](handleEntityNotFound(_0x2bb2ef,null))['then'](saveUpdates(_0x53c41e['body'],null))['then'](respondWithResult(_0x2bb2ef,null))[_0x8d03('0x4a')](handleError(_0x2bb2ef,null));};exports[_0x8d03('0x28')]=function(_0x1cb079,_0x1d80c5){return db['Dynamics365Field'][_0x8d03('0x47')]({'where':{'id':_0x1cb079['params']['id']}})[_0x8d03('0x27')](handleEntityNotFound(_0x1d80c5,null))[_0x8d03('0x27')](removeEntity(_0x1d80c5,null))['catch'](handleError(_0x1d80c5,null));};
\ No newline at end of file
+var _0x166f=['index','map','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','catch','create','body','Dynamics365Field','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','then','destroy','error','stack','name','send'];(function(_0xdbdef0,_0xafc02c){var _0x13dedb=function(_0x28a2d9){while(--_0x28a2d9){_0xdbdef0['push'](_0xdbdef0['shift']());}};_0x13dedb(++_0xafc02c);}(_0x166f,0x198));var _0xf166=function(_0x3b228f,_0x2a9777){_0x3b228f=_0x3b228f-0x0;var _0x30c30e=_0x166f[_0x3b228f];return _0x30c30e;};'use strict';var emlformat=require(_0xf166('0x0'));var rimraf=require(_0xf166('0x1'));var zipdir=require(_0xf166('0x2'));var jsonpatch=require(_0xf166('0x3'));var rp=require(_0xf166('0x4'));var moment=require(_0xf166('0x5'));var BPromise=require(_0xf166('0x6'));var Mustache=require(_0xf166('0x7'));var util=require('util');var path=require(_0xf166('0x8'));var sox=require(_0xf166('0x9'));var csv=require(_0xf166('0xa'));var ejs=require(_0xf166('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xf166('0xc'));var crypto=require('crypto');var jsforce=require(_0xf166('0xd'));var deskjs=require(_0xf166('0xe'));var toCsv=require(_0xf166('0xa'));var querystring=require(_0xf166('0xf'));var Papa=require(_0xf166('0x10'));var Redis=require(_0xf166('0x11'));var authService=require(_0xf166('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf166('0x13'));var logger=require(_0xf166('0x14'))(_0xf166('0x15'));var utils=require(_0xf166('0x16'));var config=require(_0xf166('0x17'));var licenseUtil=require(_0xf166('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x315bbb,_0x175c8e){_0x175c8e=_0x175c8e||0xcc;return function(_0x116120){if(_0x116120){return _0x315bbb[_0xf166('0x19')](_0x175c8e);}return _0x315bbb[_0xf166('0x1a')](_0x175c8e)[_0xf166('0x1b')]();};}function respondWithResult(_0x3f6b7e,_0x1301ec){_0x1301ec=_0x1301ec||0xc8;return function(_0x5de6fb){if(_0x5de6fb){return _0x3f6b7e[_0xf166('0x1a')](_0x1301ec)[_0xf166('0x1c')](_0x5de6fb);}};}function respondWithFilteredResult(_0x9254af,_0x2e6a8b){return function(_0x1ecfaa){if(_0x1ecfaa){var _0x5125ec=typeof _0x2e6a8b[_0xf166('0x1d')]==='undefined'&&typeof _0x2e6a8b[_0xf166('0x1e')]===_0xf166('0x1f');var _0x18c631=_0x1ecfaa[_0xf166('0x20')];var _0x1e87ac=_0x5125ec?0x0:_0x2e6a8b[_0xf166('0x1d')];var _0x33e01a=_0x5125ec?_0x1ecfaa['count']:_0x2e6a8b[_0xf166('0x1d')]+_0x2e6a8b[_0xf166('0x1e')];var _0x2db4be;if(_0x33e01a>=_0x18c631){_0x33e01a=_0x18c631;_0x2db4be=0xc8;}else{_0x2db4be=0xce;}_0x9254af[_0xf166('0x1a')](_0x2db4be);return _0x9254af[_0xf166('0x21')](_0xf166('0x22'),_0x1e87ac+'-'+_0x33e01a+'/'+_0x18c631)[_0xf166('0x1c')](_0x1ecfaa);}return null;};}function patchUpdates(_0x12a9d4){return function(_0x374d13){try{jsonpatch['apply'](_0x374d13,_0x12a9d4,!![]);}catch(_0x3e8557){return BPromise[_0xf166('0x23')](_0x3e8557);}return _0x374d13['save']();};}function saveUpdates(_0x2b1369,_0x5bf6cc){return function(_0x18699c){if(_0x18699c){return _0x18699c['update'](_0x2b1369)[_0xf166('0x24')](function(_0x8c8805){return _0x8c8805;});}return null;};}function removeEntity(_0xaf19b5,_0x3b2c8c){return function(_0x524b8c){if(_0x524b8c){return _0x524b8c[_0xf166('0x25')]()[_0xf166('0x24')](function(){_0xaf19b5['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3a3931,_0x5a3b37){return function(_0x43393a){if(!_0x43393a){_0x3a3931[_0xf166('0x19')](0x194);}return _0x43393a;};}function handleError(_0x10b064,_0xa992ca){_0xa992ca=_0xa992ca||0x1f4;return function(_0x478b27){logger[_0xf166('0x26')](_0x478b27[_0xf166('0x27')]);if(_0x478b27[_0xf166('0x28')]){delete _0x478b27['name'];}_0x10b064[_0xf166('0x1a')](_0xa992ca)[_0xf166('0x29')](_0x478b27);};}exports[_0xf166('0x2a')]=function(_0x467a77,_0x392771){var _0x3fc451={},_0x5d3344={},_0x26fed9={'count':0x0,'rows':[]};var _0x529c26=_[_0xf166('0x2b')](db['Dynamics365Field']['rawAttributes'],function(_0x240c78){return{'name':_0x240c78[_0xf166('0x2c')],'type':_0x240c78[_0xf166('0x2d')][_0xf166('0x2e')]};});_0x5d3344[_0xf166('0x2f')]=_[_0xf166('0x2b')](_0x529c26,_0xf166('0x28'));_0x5d3344[_0xf166('0x30')]=_[_0xf166('0x31')](_0x467a77[_0xf166('0x30')]);_0x5d3344['filters']=_[_0xf166('0x32')](_0x5d3344['model'],_0x5d3344['query']);_0x3fc451['attributes']=_[_0xf166('0x32')](_0x5d3344[_0xf166('0x2f')],qs[_0xf166('0x33')](_0x467a77[_0xf166('0x30')]['fields']));_0x3fc451[_0xf166('0x34')]=_0x3fc451[_0xf166('0x34')][_0xf166('0x35')]?_0x3fc451['attributes']:_0x5d3344['model'];if(!_0x467a77['query'][_0xf166('0x36')]('nolimit')){_0x3fc451[_0xf166('0x1e')]=qs[_0xf166('0x1e')](_0x467a77[_0xf166('0x30')][_0xf166('0x1e')]);_0x3fc451[_0xf166('0x1d')]=qs['offset'](_0x467a77[_0xf166('0x30')]['offset']);}_0x3fc451[_0xf166('0x37')]=qs[_0xf166('0x38')](_0x467a77[_0xf166('0x30')][_0xf166('0x38')]);_0x3fc451[_0xf166('0x39')]=qs[_0xf166('0x3a')](_[_0xf166('0x3b')](_0x467a77['query'],_0x5d3344['filters']),_0x529c26);if(_0x467a77[_0xf166('0x30')][_0xf166('0x3c')]){_0x3fc451[_0xf166('0x39')]=_[_0xf166('0x3d')](_0x3fc451[_0xf166('0x39')],{'$or':_[_0xf166('0x2b')](_0x529c26,function(_0xe371e0){if(_0xe371e0[_0xf166('0x2d')]!==_0xf166('0x3e')){var _0x39e227={};_0x39e227[_0xe371e0['name']]={'$like':'%'+_0x467a77[_0xf166('0x30')][_0xf166('0x3c')]+'%'};return _0x39e227;}})});}_0x3fc451=_[_0xf166('0x3d')]({},_0x3fc451,_0x467a77[_0xf166('0x3f')]);var _0x2ca93a={'where':_0x3fc451[_0xf166('0x39')]};return db['Dynamics365Field'][_0xf166('0x20')](_0x2ca93a)[_0xf166('0x24')](function(_0x5a56b0){_0x26fed9[_0xf166('0x20')]=_0x5a56b0;if(_0x467a77[_0xf166('0x30')][_0xf166('0x40')]){_0x3fc451[_0xf166('0x41')]=[{'all':!![]}];}return db['Dynamics365Field'][_0xf166('0x42')](_0x3fc451);})[_0xf166('0x24')](function(_0x3b303a){_0x26fed9[_0xf166('0x43')]=_0x3b303a;return _0x26fed9;})[_0xf166('0x24')](respondWithFilteredResult(_0x392771,_0x3fc451))['catch'](handleError(_0x392771,null));};exports[_0xf166('0x44')]=function(_0x51a5f0,_0xadf5e2){var _0x296582={'raw':!![],'where':{'id':_0x51a5f0[_0xf166('0x45')]['id']}},_0x51fe4c={};_0x51fe4c[_0xf166('0x2f')]=_['keys'](db['Dynamics365Field']['rawAttributes']);_0x51fe4c[_0xf166('0x30')]=_[_0xf166('0x31')](_0x51a5f0['query']);_0x51fe4c[_0xf166('0x3a')]=_['intersection'](_0x51fe4c[_0xf166('0x2f')],_0x51fe4c[_0xf166('0x30')]);_0x296582[_0xf166('0x34')]=_[_0xf166('0x32')](_0x51fe4c[_0xf166('0x2f')],qs[_0xf166('0x33')](_0x51a5f0[_0xf166('0x30')][_0xf166('0x33')]));_0x296582[_0xf166('0x34')]=_0x296582[_0xf166('0x34')]['length']?_0x296582['attributes']:_0x51fe4c[_0xf166('0x2f')];if(_0x51a5f0['query'][_0xf166('0x40')]){_0x296582[_0xf166('0x41')]=[{'all':!![]}];}_0x296582=_[_0xf166('0x3d')]({},_0x296582,_0x51a5f0[_0xf166('0x3f')]);return db['Dynamics365Field']['find'](_0x296582)[_0xf166('0x24')](handleEntityNotFound(_0xadf5e2,null))[_0xf166('0x24')](respondWithResult(_0xadf5e2,null))[_0xf166('0x46')](handleError(_0xadf5e2,null));};exports[_0xf166('0x47')]=function(_0x56d162,_0x24c767){return db['Dynamics365Field'][_0xf166('0x47')](_0x56d162[_0xf166('0x48')],{})['then'](respondWithResult(_0x24c767,0xc9))[_0xf166('0x46')](handleError(_0x24c767,null));};exports['update']=function(_0x6a9ccc,_0x42cd7f){if(_0x6a9ccc[_0xf166('0x48')]['id']){delete _0x6a9ccc[_0xf166('0x48')]['id'];}return db[_0xf166('0x49')][_0xf166('0x4a')]({'where':{'id':_0x6a9ccc[_0xf166('0x45')]['id']}})[_0xf166('0x24')](handleEntityNotFound(_0x42cd7f,null))[_0xf166('0x24')](saveUpdates(_0x6a9ccc[_0xf166('0x48')],null))['then'](respondWithResult(_0x42cd7f,null))[_0xf166('0x46')](handleError(_0x42cd7f,null));};exports[_0xf166('0x25')]=function(_0x3a2de1,_0x3f05f9){return db[_0xf166('0x49')][_0xf166('0x4a')]({'where':{'id':_0x3a2de1[_0xf166('0x45')]['id']}})[_0xf166('0x24')](handleEntityNotFound(_0x3f05f9,null))[_0xf166('0x24')](removeEntity(_0x3f05f9,null))[_0xf166('0x46')](handleError(_0x3f05f9,null));};
\ No newline at end of file
index 39d4b84..6984963 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x477c=['int_dynamics365_fields','dynamics365_unique_index','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDynamics365Field.attributes','exports','Dynamics365Field'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x477c,0x13d));var _0xc477=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x477c[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xc477('0x0'));var util=require(_0xc477('0x1'));var logger=require(_0xc477('0x2'))(_0xc477('0x3'));var moment=require(_0xc477('0x4'));var BPromise=require(_0xc477('0x5'));var rp=require(_0xc477('0x6'));var fs=require('fs');var path=require(_0xc477('0x7'));var rimraf=require(_0xc477('0x8'));var config=require(_0xc477('0x9'));var attributes=require(_0xc477('0xa'));module[_0xc477('0xb')]=function(_0x56ef6a,_0x1f7ca8){return _0x56ef6a['define'](_0xc477('0xc'),attributes,{'tableName':_0xc477('0xd'),'paranoid':![],'indexes':[{'name':_0xc477('0xe'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x734b=['Dynamics365Field','idField','FieldId','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','exports','define'];(function(_0x57cbfb,_0x2de760){var _0x4cb933=function(_0x33cf6a){while(--_0x33cf6a){_0x57cbfb['push'](_0x57cbfb['shift']());}};_0x4cb933(++_0x2de760);}(_0x734b,0x189));var _0xb734=function(_0xbf8ebe,_0x3b69a5){_0xbf8ebe=_0xbf8ebe-0x0;var _0x1e25e8=_0x734b[_0xbf8ebe];return _0x1e25e8;};'use strict';var _=require(_0xb734('0x0'));var util=require(_0xb734('0x1'));var logger=require(_0xb734('0x2'))('api');var moment=require('moment');var BPromise=require(_0xb734('0x3'));var rp=require(_0xb734('0x4'));var fs=require('fs');var path=require(_0xb734('0x5'));var rimraf=require(_0xb734('0x6'));var config=require(_0xb734('0x7'));var attributes=require('./intDynamics365Field.attributes');module[_0xb734('0x8')]=function(_0xb6d4a4,_0x2a6194){return _0xb6d4a4[_0xb734('0x9')](_0xb734('0xa'),attributes,{'tableName':'int_dynamics365_fields','paranoid':![],'indexes':[{'name':'dynamics365_unique_index','fields':[_0xb734('0xb'),_0xb734('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 769d94b..4a138aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78d2=['catch','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','info','Dynamics365Field,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x54ba16,_0x4cc831){var _0x4f8cce=function(_0x4f4d54){while(--_0x4f4d54){_0x54ba16['push'](_0x54ba16['shift']());}};_0x4f8cce(++_0x4cc831);}(_0x78d2,0x119));var _0x278d=function(_0x3fb37a,_0x4fa12b){_0x3fb37a=_0x3fb37a-0x0;var _0x3e8cf0=_0x78d2[_0x3fb37a];return _0x3e8cf0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x278d('0x0'));var BPromise=require('bluebird');var rs=require(_0x278d('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x278d('0x2'))['db'];var utils=require(_0x278d('0x3'));var logger=require(_0x278d('0x4'))('rpc');var config=require('../../config/environment');var jayson=require(_0x278d('0x5'));var client=jayson[_0x278d('0x6')][_0x278d('0x7')]({'port':0x232a});function respondWithRpcPromise(_0xcc8433,_0x223b4d,_0x1033cd){return new BPromise(function(_0x162823,_0x53d1b6){return client[_0x278d('0x8')](_0xcc8433,_0x1033cd)['then'](function(_0x58955a){logger[_0x278d('0x9')](_0x278d('0xa'),_0x223b4d,_0x278d('0xb'));logger[_0x278d('0xc')](_0x278d('0xd'),_0x223b4d,_0x278d('0xb'),JSON[_0x278d('0xe')](_0x58955a));if(_0x58955a[_0x278d('0xf')]){if(_0x58955a[_0x278d('0xf')][_0x278d('0x10')]===0x1f4){logger[_0x278d('0xf')](_0x278d('0xa'),_0x223b4d,_0x58955a[_0x278d('0xf')]['message']);return _0x53d1b6(_0x58955a[_0x278d('0xf')][_0x278d('0x11')]);}logger[_0x278d('0xf')](_0x278d('0xa'),_0x223b4d,_0x58955a[_0x278d('0xf')]['message']);return _0x162823(_0x58955a[_0x278d('0xf')][_0x278d('0x11')]);}else{logger[_0x278d('0x9')]('Dynamics365Field,\x20%s,\x20%s',_0x223b4d,_0x278d('0xb'));_0x162823(_0x58955a[_0x278d('0x12')]['message']);}})[_0x278d('0x13')](function(_0x22d8da){logger['error'](_0x278d('0xa'),_0x223b4d,_0x22d8da);_0x53d1b6(_0x22d8da);});});}
\ No newline at end of file
+var _0xd8ac=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Dynamics365Field,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result'];(function(_0x42919a,_0xc47bf2){var _0x2e8eb3=function(_0x4c7ee4){while(--_0x4c7ee4){_0x42919a['push'](_0x42919a['shift']());}};_0x2e8eb3(++_0xc47bf2);}(_0xd8ac,0x8a));var _0xcd8a=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xd8ac[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0xcd8a('0x0'));var util=require(_0xcd8a('0x1'));var moment=require(_0xcd8a('0x2'));var BPromise=require(_0xcd8a('0x3'));var rs=require(_0xcd8a('0x4'));var fs=require('fs');var Redis=require(_0xcd8a('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xcd8a('0x6'));var logger=require('../../config/logger')(_0xcd8a('0x7'));var config=require(_0xcd8a('0x8'));var jayson=require(_0xcd8a('0x9'));var client=jayson[_0xcd8a('0xa')][_0xcd8a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x18b470,_0x56d2d7,_0x28fa86){return new BPromise(function(_0x1dfcbb,_0x186ce1){return client[_0xcd8a('0xc')](_0x18b470,_0x28fa86)[_0xcd8a('0xd')](function(_0x281a42){logger[_0xcd8a('0xe')](_0xcd8a('0xf'),_0x56d2d7,_0xcd8a('0x10'));logger[_0xcd8a('0x11')]('Dynamics365Field,\x20%s,\x20%s,\x20%s',_0x56d2d7,_0xcd8a('0x10'),JSON[_0xcd8a('0x12')](_0x281a42));if(_0x281a42[_0xcd8a('0x13')]){if(_0x281a42[_0xcd8a('0x13')][_0xcd8a('0x14')]===0x1f4){logger[_0xcd8a('0x13')](_0xcd8a('0xf'),_0x56d2d7,_0x281a42[_0xcd8a('0x13')][_0xcd8a('0x15')]);return _0x186ce1(_0x281a42[_0xcd8a('0x13')][_0xcd8a('0x15')]);}logger[_0xcd8a('0x13')](_0xcd8a('0xf'),_0x56d2d7,_0x281a42[_0xcd8a('0x13')][_0xcd8a('0x15')]);return _0x1dfcbb(_0x281a42['error']['message']);}else{logger[_0xcd8a('0xe')](_0xcd8a('0xf'),_0x56d2d7,_0xcd8a('0x10'));_0x1dfcbb(_0x281a42[_0xcd8a('0x16')]['message']);}})['catch'](function(_0x2846c3){logger[_0xcd8a('0x13')]('Dynamics365Field,\x20%s,\x20%s',_0x56d2d7,_0x2846c3);_0x186ce1(_0x2846c3);});});}
\ No newline at end of file
index 6a5a73b..cbf53c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1579=['exports','multer','util','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','get','isAuthenticated','index','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','put','/:id','update','destroy'];(function(_0x100504,_0x1423c2){var _0xe2d3f8=function(_0x47edca){while(--_0x47edca){_0x100504['push'](_0x100504['shift']());}};_0xe2d3f8(++_0x1423c2);}(_0x1579,0x143));var _0x9157=function(_0x5d1c45,_0x1f139f){_0x5d1c45=_0x5d1c45-0x0;var _0x29e5aa=_0x1579[_0x5d1c45];return _0x29e5aa;};'use strict';var multer=require(_0x9157('0x0'));var util=require(_0x9157('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x9157('0x2'));var router=express['Router']();var fs_extra=require(_0x9157('0x3'));var auth=require(_0x9157('0x4'));var interaction=require(_0x9157('0x5'));var config=require(_0x9157('0x6'));var controller=require(_0x9157('0x7'));router[_0x9157('0x8')]('/',auth[_0x9157('0x9')](),controller[_0x9157('0xa')]);router[_0x9157('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x9157('0xb')]);router[_0x9157('0x8')](_0x9157('0xc'),auth[_0x9157('0x9')](),controller[_0x9157('0xd')]);router[_0x9157('0x8')](_0x9157('0xe'),auth[_0x9157('0x9')](),controller[_0x9157('0xf')]);router[_0x9157('0x10')]('/',auth[_0x9157('0x9')](),controller[_0x9157('0x11')]);router[_0x9157('0x10')]('/:id/configurations',auth[_0x9157('0x9')](),controller['addConfiguration']);router[_0x9157('0x12')](_0x9157('0x13'),auth[_0x9157('0x9')](),controller[_0x9157('0x14')]);router['delete'](_0x9157('0x13'),auth['isAuthenticated'](),controller[_0x9157('0x15')]);module[_0x9157('0x16')]=router;
\ No newline at end of file
+var _0xcb48=['isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','post','create','/:id/configurations','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intFreshdeskAccount.controller','get'];(function(_0x10e76c,_0xb868f6){var _0x1becd7=function(_0x33191f){while(--_0x33191f){_0x10e76c['push'](_0x10e76c['shift']());}};_0x1becd7(++_0xb868f6);}(_0xcb48,0x6d));var _0x8cb4=function(_0xe121d1,_0x4f70a9){_0xe121d1=_0xe121d1-0x0;var _0x26818f=_0xcb48[_0xe121d1];return _0x26818f;};'use strict';var multer=require(_0x8cb4('0x0'));var util=require(_0x8cb4('0x1'));var path=require(_0x8cb4('0x2'));var timeout=require(_0x8cb4('0x3'));var express=require(_0x8cb4('0x4'));var router=express[_0x8cb4('0x5')]();var fs_extra=require(_0x8cb4('0x6'));var auth=require(_0x8cb4('0x7'));var interaction=require(_0x8cb4('0x8'));var config=require('../../config/environment');var controller=require(_0x8cb4('0x9'));router[_0x8cb4('0xa')]('/',auth[_0x8cb4('0xb')](),controller[_0x8cb4('0xc')]);router[_0x8cb4('0xa')](_0x8cb4('0xd'),auth['isAuthenticated'](),controller[_0x8cb4('0xe')]);router[_0x8cb4('0xa')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x8cb4('0xf')]);router[_0x8cb4('0xa')](_0x8cb4('0x10'),auth[_0x8cb4('0xb')](),controller['getFields']);router[_0x8cb4('0x11')]('/',auth[_0x8cb4('0xb')](),controller[_0x8cb4('0x12')]);router[_0x8cb4('0x11')](_0x8cb4('0x13'),auth[_0x8cb4('0xb')](),controller['addConfiguration']);router[_0x8cb4('0x14')](_0x8cb4('0xd'),auth[_0x8cb4('0xb')](),controller[_0x8cb4('0x15')]);router[_0x8cb4('0x16')]('/:id',auth[_0x8cb4('0xb')](),controller['destroy']);module[_0x8cb4('0x17')]=router;
\ No newline at end of file
index 9987f02..7605460 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a6d=['exports','STRING','username','sequelize'];(function(_0x424065,_0x572f82){var _0x2b6c16=function(_0xb39972){while(--_0xb39972){_0x424065['push'](_0x424065['shift']());}};_0x2b6c16(++_0x572f82);}(_0x3a6d,0x143));var _0xd3a6=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x3a6d[_0x53ccf2];return _0x5a2964;};'use strict';var Sequelize=require(_0xd3a6('0x0'));module[_0xd3a6('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xd3a6('0x2')]},'username':{'type':Sequelize[_0xd3a6('0x2')],'unique':_0xd3a6('0x3')},'apiKey':{'type':Sequelize[_0xd3a6('0x2')]},'remoteUri':{'type':Sequelize[_0xd3a6('0x2')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0xd3a6('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x4e2e=['username','remoteUri','exports','STRING'];(function(_0x52429d,_0x226326){var _0x19759c=function(_0x44a11b){while(--_0x44a11b){_0x52429d['push'](_0x52429d['shift']());}};_0x19759c(++_0x226326);}(_0x4e2e,0x1f2));var _0xe4e2=function(_0x47da79,_0x586ee3){_0x47da79=_0x47da79-0x0;var _0x455a0f=_0x4e2e[_0x47da79];return _0x455a0f;};'use strict';var Sequelize=require('sequelize');module[_0xe4e2('0x0')]={'name':{'type':Sequelize[_0xe4e2('0x1')]},'description':{'type':Sequelize[_0xe4e2('0x1')]},'username':{'type':Sequelize[_0xe4e2('0x1')],'unique':_0xe4e2('0x2')},'apiKey':{'type':Sequelize[_0xe4e2('0x1')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0xe4e2('0x3')},'serverUrl':{'type':Sequelize[_0xe4e2('0x1')],'allowNull':![]}};
\ No newline at end of file
index ea7734c..948102b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb3f=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','destroy','then','error','stack','name','FreshdeskAccount','rawAttributes','fieldName','type','key','map','query','filters','model','attributes','intersection','fields','length','hasOwnProperty','order','sort','filter','where','merge','VIRTUAL','include','rows','catch','show','params','keys','options','create','body','update','find','getConfigurations','findOne','pick','nolimit','addConfiguration','AccountId','Subjects','channel','Descriptions','FreshdeskConfiguration','FreshdeskField','remoteUri','apiKey','slice','substring','lastIndexOf','GET','format','%s/%s','api/v2/ticket_fields','Basic\x20%s','%s:X','toString','base64','requester','subject','agent','description','priority','group','company','includes','custom_text','custom_dropdown','label','default','choices','capitalize','test','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','send','statusCode','eml-format','rimraf','fast-json-patch','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x21f3ff,_0x37f2ad){var _0x1187b3=function(_0x204436){while(--_0x204436){_0x21f3ff['push'](_0x21f3ff['shift']());}};_0x1187b3(++_0x37f2ad);}(_0xfb3f,0xd9));var _0xffb3=function(_0x299822,_0x43baaf){_0x299822=_0x299822-0x0;var _0x3ba0ab=_0xfb3f[_0x299822];return _0x3ba0ab;};'use strict';var emlformat=require(_0xffb3('0x0'));var rimraf=require(_0xffb3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xffb3('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xffb3('0x3'));var Mustache=require('mustache');var util=require(_0xffb3('0x4'));var path=require(_0xffb3('0x5'));var sox=require(_0xffb3('0x6'));var csv=require(_0xffb3('0x7'));var ejs=require(_0xffb3('0x8'));var fs=require('fs');var fs_extra=require(_0xffb3('0x9'));var _=require(_0xffb3('0xa'));var squel=require(_0xffb3('0xb'));var crypto=require('crypto');var jsforce=require(_0xffb3('0xc'));var deskjs=require(_0xffb3('0xd'));var toCsv=require(_0xffb3('0x7'));var querystring=require(_0xffb3('0xe'));var Papa=require(_0xffb3('0xf'));var Redis=require('ioredis');var authService=require(_0xffb3('0x10'));var qs=require(_0xffb3('0x11'));var as=require(_0xffb3('0x12'));var hardwareService=require(_0xffb3('0x13'));var logger=require(_0xffb3('0x14'))(_0xffb3('0x15'));var utils=require(_0xffb3('0x16'));var config=require(_0xffb3('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xffb3('0x18'))['db'];var integrations=require(_0xffb3('0x19'));function respondWithStatusCode(_0x55192c,_0x21924a){_0x21924a=_0x21924a||0xcc;return function(_0x356e10){if(_0x356e10){return _0x55192c[_0xffb3('0x1a')](_0x21924a);}return _0x55192c[_0xffb3('0x1b')](_0x21924a)[_0xffb3('0x1c')]();};}function respondWithResult(_0x420156,_0x19ce6e){_0x19ce6e=_0x19ce6e||0xc8;return function(_0x2338f1){if(_0x2338f1){return _0x420156[_0xffb3('0x1b')](_0x19ce6e)[_0xffb3('0x1d')](_0x2338f1);}};}function respondWithFilteredResult(_0x38daab,_0x2c3ef7){return function(_0x4d3c48){if(_0x4d3c48){var _0x46ae17=typeof _0x2c3ef7[_0xffb3('0x1e')]===_0xffb3('0x1f')&&typeof _0x2c3ef7['limit']==='undefined';var _0x1f3d9a=_0x4d3c48[_0xffb3('0x20')];var _0x57d096=_0x46ae17?0x0:_0x2c3ef7[_0xffb3('0x1e')];var _0x30f403=_0x46ae17?_0x4d3c48[_0xffb3('0x20')]:_0x2c3ef7['offset']+_0x2c3ef7[_0xffb3('0x21')];var _0x45fdd6;if(_0x30f403>=_0x1f3d9a){_0x30f403=_0x1f3d9a;_0x45fdd6=0xc8;}else{_0x45fdd6=0xce;}_0x38daab['status'](_0x45fdd6);return _0x38daab[_0xffb3('0x22')](_0xffb3('0x23'),_0x57d096+'-'+_0x30f403+'/'+_0x1f3d9a)[_0xffb3('0x1d')](_0x4d3c48);}return null;};}function patchUpdates(_0x21c9ad){return function(_0x1e75a0){try{jsonpatch[_0xffb3('0x24')](_0x1e75a0,_0x21c9ad,!![]);}catch(_0x40dc49){return BPromise['reject'](_0x40dc49);}return _0x1e75a0[_0xffb3('0x25')]();};}function saveUpdates(_0xe4c60e,_0x5e0f48){return function(_0x38330a){if(_0x38330a){return _0x38330a['update'](_0xe4c60e)['then'](function(_0x24c502){return _0x24c502;});}return null;};}function removeEntity(_0x3d55e6,_0x22bbea){return function(_0x3bc410){if(_0x3bc410){return _0x3bc410[_0xffb3('0x26')]()[_0xffb3('0x27')](function(){_0x3d55e6['status'](0xcc)[_0xffb3('0x1c')]();});}};}function handleEntityNotFound(_0x588608,_0x1390c6){return function(_0x2f01ff){if(!_0x2f01ff){_0x588608['sendStatus'](0x194);}return _0x2f01ff;};}function handleError(_0x32e047,_0x5e0474){_0x5e0474=_0x5e0474||0x1f4;return function(_0x1eee6b){logger[_0xffb3('0x28')](_0x1eee6b[_0xffb3('0x29')]);if(_0x1eee6b[_0xffb3('0x2a')]){delete _0x1eee6b['name'];}_0x32e047['status'](_0x5e0474)['send'](_0x1eee6b);};}exports['index']=function(_0xe3d338,_0x5d1630){var _0x17f601={},_0x3e64bb={},_0x17462d={'count':0x0,'rows':[]};var _0x28f65d=_['map'](db[_0xffb3('0x2b')][_0xffb3('0x2c')],function(_0x4d544d){return{'name':_0x4d544d[_0xffb3('0x2d')],'type':_0x4d544d[_0xffb3('0x2e')][_0xffb3('0x2f')]};});_0x3e64bb['model']=_[_0xffb3('0x30')](_0x28f65d,_0xffb3('0x2a'));_0x3e64bb[_0xffb3('0x31')]=_['keys'](_0xe3d338[_0xffb3('0x31')]);_0x3e64bb[_0xffb3('0x32')]=_['intersection'](_0x3e64bb[_0xffb3('0x33')],_0x3e64bb[_0xffb3('0x31')]);_0x17f601[_0xffb3('0x34')]=_[_0xffb3('0x35')](_0x3e64bb[_0xffb3('0x33')],qs['fields'](_0xe3d338[_0xffb3('0x31')][_0xffb3('0x36')]));_0x17f601[_0xffb3('0x34')]=_0x17f601['attributes'][_0xffb3('0x37')]?_0x17f601[_0xffb3('0x34')]:_0x3e64bb['model'];if(!_0xe3d338[_0xffb3('0x31')][_0xffb3('0x38')]('nolimit')){_0x17f601[_0xffb3('0x21')]=qs[_0xffb3('0x21')](_0xe3d338['query']['limit']);_0x17f601['offset']=qs[_0xffb3('0x1e')](_0xe3d338[_0xffb3('0x31')]['offset']);}_0x17f601[_0xffb3('0x39')]=qs['sort'](_0xe3d338[_0xffb3('0x31')][_0xffb3('0x3a')]);_0x17f601['where']=qs[_0xffb3('0x32')](_['pick'](_0xe3d338[_0xffb3('0x31')],_0x3e64bb[_0xffb3('0x32')]),_0x28f65d);if(_0xe3d338['query'][_0xffb3('0x3b')]){_0x17f601[_0xffb3('0x3c')]=_[_0xffb3('0x3d')](_0x17f601[_0xffb3('0x3c')],{'$or':_[_0xffb3('0x30')](_0x28f65d,function(_0x748cef){if(_0x748cef[_0xffb3('0x2e')]!==_0xffb3('0x3e')){var _0x183968={};_0x183968[_0x748cef[_0xffb3('0x2a')]]={'$like':'%'+_0xe3d338[_0xffb3('0x31')][_0xffb3('0x3b')]+'%'};return _0x183968;}})});}_0x17f601=_[_0xffb3('0x3d')]({},_0x17f601,_0xe3d338['options']);var _0x2f6a9a={'where':_0x17f601[_0xffb3('0x3c')]};return db[_0xffb3('0x2b')]['count'](_0x2f6a9a)[_0xffb3('0x27')](function(_0x5bd952){_0x17462d[_0xffb3('0x20')]=_0x5bd952;if(_0xe3d338[_0xffb3('0x31')]['includeAll']){_0x17f601[_0xffb3('0x3f')]=[{'all':!![]}];}return db[_0xffb3('0x2b')]['findAll'](_0x17f601);})['then'](function(_0x354088){_0x17462d[_0xffb3('0x40')]=_0x354088;return _0x17462d;})['then'](respondWithFilteredResult(_0x5d1630,_0x17f601))[_0xffb3('0x41')](handleError(_0x5d1630,null));};exports[_0xffb3('0x42')]=function(_0x3f2b13,_0x1bfa03){var _0x2e8564={'raw':![],'where':{'id':_0x3f2b13[_0xffb3('0x43')]['id']}},_0x4c2d24={};_0x4c2d24[_0xffb3('0x33')]=_[_0xffb3('0x44')](db[_0xffb3('0x2b')][_0xffb3('0x2c')]);_0x4c2d24['query']=_['keys'](_0x3f2b13[_0xffb3('0x31')]);_0x4c2d24[_0xffb3('0x32')]=_['intersection'](_0x4c2d24[_0xffb3('0x33')],_0x4c2d24[_0xffb3('0x31')]);_0x2e8564[_0xffb3('0x34')]=_[_0xffb3('0x35')](_0x4c2d24['model'],qs['fields'](_0x3f2b13[_0xffb3('0x31')][_0xffb3('0x36')]));_0x2e8564[_0xffb3('0x34')]=_0x2e8564[_0xffb3('0x34')][_0xffb3('0x37')]?_0x2e8564[_0xffb3('0x34')]:_0x4c2d24['model'];if(_0x3f2b13[_0xffb3('0x31')]['includeAll']){_0x2e8564[_0xffb3('0x3f')]=[{'all':!![]}];}_0x2e8564=_[_0xffb3('0x3d')]({},_0x2e8564,_0x3f2b13[_0xffb3('0x45')]);return db[_0xffb3('0x2b')]['find'](_0x2e8564)['then'](handleEntityNotFound(_0x1bfa03,null))[_0xffb3('0x27')](respondWithResult(_0x1bfa03,null))['catch'](handleError(_0x1bfa03,null));};exports[_0xffb3('0x46')]=function(_0x30a92a,_0x1d542e){return db['FreshdeskAccount'][_0xffb3('0x46')](_0x30a92a[_0xffb3('0x47')],{})[_0xffb3('0x27')](respondWithResult(_0x1d542e,0xc9))[_0xffb3('0x41')](handleError(_0x1d542e,null));};exports[_0xffb3('0x48')]=function(_0x4b0fd3,_0x2dd1d7){if(_0x4b0fd3[_0xffb3('0x47')]['id']){delete _0x4b0fd3[_0xffb3('0x47')]['id'];}return db['FreshdeskAccount'][_0xffb3('0x49')]({'where':{'id':_0x4b0fd3[_0xffb3('0x43')]['id']}})[_0xffb3('0x27')](handleEntityNotFound(_0x2dd1d7,null))['then'](saveUpdates(_0x4b0fd3[_0xffb3('0x47')],null))[_0xffb3('0x27')](respondWithResult(_0x2dd1d7,null))[_0xffb3('0x41')](handleError(_0x2dd1d7,null));};exports[_0xffb3('0x26')]=function(_0x51a66e,_0x525ecf){return db['FreshdeskAccount']['find']({'where':{'id':_0x51a66e[_0xffb3('0x43')]['id']}})['then'](handleEntityNotFound(_0x525ecf,null))['then'](removeEntity(_0x525ecf,null))[_0xffb3('0x41')](handleError(_0x525ecf,null));};exports[_0xffb3('0x4a')]=function(_0x2edbce,_0xf72b36,_0x9030ae){var _0x6b0b72={};var _0x23e2b1={};var _0x5b50fe;var _0x29ba96;return db[_0xffb3('0x2b')][_0xffb3('0x4b')]({'where':{'id':_0x2edbce[_0xffb3('0x43')]['id']}})[_0xffb3('0x27')](handleEntityNotFound(_0xf72b36,null))[_0xffb3('0x27')](function(_0x4cf832){if(_0x4cf832){_0x5b50fe=_0x4cf832;_0x23e2b1[_0xffb3('0x33')]=_[_0xffb3('0x44')](db['FreshdeskConfiguration']['rawAttributes']);_0x23e2b1[_0xffb3('0x31')]=_['keys'](_0x2edbce[_0xffb3('0x31')]);_0x23e2b1[_0xffb3('0x32')]=_[_0xffb3('0x35')](_0x23e2b1['model'],_0x23e2b1['query']);_0x6b0b72['attributes']=_[_0xffb3('0x35')](_0x23e2b1['model'],qs['fields'](_0x2edbce['query'][_0xffb3('0x36')]));_0x6b0b72[_0xffb3('0x34')]=_0x6b0b72[_0xffb3('0x34')]['length']?_0x6b0b72[_0xffb3('0x34')]:_0x23e2b1['model'];_0x6b0b72[_0xffb3('0x39')]=qs[_0xffb3('0x3a')](_0x2edbce['query'][_0xffb3('0x3a')]);_0x6b0b72[_0xffb3('0x3c')]=qs[_0xffb3('0x32')](_[_0xffb3('0x4c')](_0x2edbce['query'],_0x23e2b1[_0xffb3('0x32')]));if(_0x2edbce[_0xffb3('0x31')][_0xffb3('0x3b')]){_0x6b0b72['where']=_['merge'](_0x6b0b72['where'],{'$or':_[_0xffb3('0x30')](_0x6b0b72[_0xffb3('0x34')],function(_0x4ee0e0){var _0x220bc4={};_0x220bc4[_0x4ee0e0]={'$like':'%'+_0x2edbce[_0xffb3('0x31')]['filter']+'%'};return _0x220bc4;})});}_0x6b0b72=_[_0xffb3('0x3d')]({},_0x6b0b72,_0x2edbce[_0xffb3('0x45')]);return _0x5b50fe[_0xffb3('0x4a')](_0x6b0b72);}})[_0xffb3('0x27')](function(_0x3bf20a){if(_0x3bf20a){_0x29ba96=_0x3bf20a['length'];if(!_0x2edbce[_0xffb3('0x31')][_0xffb3('0x38')](_0xffb3('0x4d'))){_0x6b0b72['limit']=qs[_0xffb3('0x21')](_0x2edbce[_0xffb3('0x31')]['limit']);_0x6b0b72[_0xffb3('0x1e')]=qs[_0xffb3('0x1e')](_0x2edbce['query']['offset']);}return _0x5b50fe[_0xffb3('0x4a')](_0x6b0b72);}})['then'](function(_0x2307a0){if(_0x2307a0){return _0x2307a0?{'count':_0x29ba96,'rows':_0x2307a0}:null;}})[_0xffb3('0x27')](respondWithResult(_0xf72b36,null))[_0xffb3('0x41')](handleError(_0xf72b36,null));};exports[_0xffb3('0x4e')]=function(_0x4595ac,_0x469a62,_0x28addf){if(_0x4595ac[_0xffb3('0x47')]['id']){delete _0x4595ac['body']['id'];}return db[_0xffb3('0x2b')][_0xffb3('0x4b')]({'where':{'id':_0x4595ac['params']['id']}})['then'](handleEntityNotFound(_0x469a62,null))[_0xffb3('0x27')](function(_0x44be9d){if(_0x44be9d){_0x4595ac[_0xffb3('0x47')][_0xffb3('0x4f')]=_0x44be9d['id'];_0x4595ac['body'][_0xffb3('0x50')]=integrations['getSubjects'](_0x4595ac['body'][_0xffb3('0x51')],_0x4595ac['body'][_0xffb3('0x2e')]);_0x4595ac[_0xffb3('0x47')][_0xffb3('0x52')]=integrations['getDescriptions'](_0x4595ac[_0xffb3('0x47')]['channel'],_0x4595ac[_0xffb3('0x47')][_0xffb3('0x2e')]);return db[_0xffb3('0x53')][_0xffb3('0x46')](_0x4595ac[_0xffb3('0x47')],{'include':[{'model':db[_0xffb3('0x54')],'as':_0xffb3('0x50')},{'model':db[_0xffb3('0x54')],'as':_0xffb3('0x52')}]});}return null;})[_0xffb3('0x27')](respondWithResult(_0x469a62,null))[_0xffb3('0x41')](handleError(_0x469a62,null));};exports['getFields']=function(_0x158491,_0x17a45c,_0xccd731){var _0x5435c9='';return db[_0xffb3('0x2b')][_0xffb3('0x4b')]({'where':{'id':_0x158491[_0xffb3('0x43')]['id']},'attributes':['id',_0xffb3('0x55'),_0xffb3('0x56')]})[_0xffb3('0x27')](handleEntityNotFound(_0x17a45c,null))['then'](function(_0x518077){if(_0x518077){_0x5435c9=_0x518077[_0xffb3('0x55')];var _0x194ce1=_0x5435c9[_0xffb3('0x57')](-0x1);if(_0x194ce1==='/'){_0x5435c9=_0x5435c9[_0xffb3('0x58')](0x0,_0x5435c9[_0xffb3('0x59')](_0x194ce1));}return rp({'method':_0xffb3('0x5a'),'uri':util[_0xffb3('0x5b')](_0xffb3('0x5c'),_0x5435c9,_0xffb3('0x5d')),'headers':{'Authorization':util[_0xffb3('0x5b')](_0xffb3('0x5e'),new Buffer(util[_0xffb3('0x5b')](_0xffb3('0x5f'),_0x518077[_0xffb3('0x56')]))[_0xffb3('0x60')](_0xffb3('0x61')))},'json':!![]});}})[_0xffb3('0x27')](function(_0x3d28de){if(_0x3d28de){var _0x12ff08=[_0xffb3('0x62'),_0xffb3('0x63'),_0xffb3('0x64'),_0xffb3('0x65'),_0xffb3('0x1b'),_0xffb3('0x66'),_0xffb3('0x67'),'source','ticket_type',_0xffb3('0x67'),_0xffb3('0x68')];_['remove'](_0x3d28de,function(_0x55b68e){return _0x12ff08[_0xffb3('0x69')](_0x55b68e[_0xffb3('0x2a')])||!_0x55b68e['default']&&_0x55b68e[_0xffb3('0x2e')]!==_0xffb3('0x6a')&&_0x55b68e['type']!==_0xffb3('0x6b');});return{'count':_0x3d28de[_0xffb3('0x37')],'rows':_[_0xffb3('0x30')](_0x3d28de,function(_0x29b846){return{'id':_0x29b846[_0xffb3('0x2a')],'name':_0x29b846[_0xffb3('0x6c')],'custom':!_0x29b846[_0xffb3('0x6d')],'options':_0x29b846['choices']?_['map'](_0x29b846[_0xffb3('0x6e')],function(_0x14b3b1){return{'name':_[_0xffb3('0x6f')](_0x14b3b1),'value':_0x14b3b1};}):[]};})};}})[_0xffb3('0x27')](respondWithResult(_0x17a45c,null))['catch'](function(_0x36e58e){var _0x4676e0=_0x158491[_0xffb3('0x31')][_0xffb3('0x70')]?0x1f4:_0x36e58e['statusCode']||0x1f4;logger[_0xffb3('0x28')](_0xffb3('0x71'),_0xffb3('0x72'),_0x4676e0,JSON[_0xffb3('0x73')](_0x36e58e));delete _0x36e58e['name'];if(_0x4676e0===0x191){_0x4676e0=0x190;}_0x17a45c[_0xffb3('0x1b')](_0x4676e0)[_0xffb3('0x74')](_0x158491[_0xffb3('0x31')][_0xffb3('0x70')]?{'message':'Wrong\x20credentials','statusCode':_0x36e58e[_0xffb3('0x75')]}:_0x36e58e);});};
\ No newline at end of file
+var _0x2ca5=['attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','rows','params','find','catch','create','body','getConfigurations','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','FreshdeskField','getFields','remoteUri','apiKey','slice','lastIndexOf','format','api/v2/ticket_fields','Basic\x20%s','%s:X','toString','base64','group','source','remove','includes','default','custom_dropdown','label','choices','capitalize','getFields,\x20%s,\x20%s,\x20%s','test','Wrong\x20credentials','statusCode','rimraf','zip-dir','fast-json-patch','moment','util','path','sox','lodash','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','destroy','then','error','stack','name','send','index','map','FreshdeskAccount','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model'];(function(_0x5f09c5,_0x2bfca0){var _0x426ad9=function(_0x18fe5f){while(--_0x18fe5f){_0x5f09c5['push'](_0x5f09c5['shift']());}};_0x426ad9(++_0x2bfca0);}(_0x2ca5,0x108));var _0x52ca=function(_0xc812a0,_0x37a9d3){_0xc812a0=_0xc812a0-0x0;var _0x14f339=_0x2ca5[_0xc812a0];return _0x14f339;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x52ca('0x0'));var zipdir=require(_0x52ca('0x1'));var jsonpatch=require(_0x52ca('0x2'));var rp=require('request-promise');var moment=require(_0x52ca('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x52ca('0x4'));var path=require(_0x52ca('0x5'));var sox=require(_0x52ca('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x52ca('0x7'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x52ca('0x8'));var deskjs=require(_0x52ca('0x9'));var toCsv=require(_0x52ca('0xa'));var querystring=require(_0x52ca('0xb'));var Papa=require(_0x52ca('0xc'));var Redis=require(_0x52ca('0xd'));var authService=require(_0x52ca('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x52ca('0xf'));var hardwareService=require(_0x52ca('0x10'));var logger=require(_0x52ca('0x11'))(_0x52ca('0x12'));var utils=require(_0x52ca('0x13'));var config=require(_0x52ca('0x14'));var licenseUtil=require(_0x52ca('0x15'));var db=require(_0x52ca('0x16'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x630ea2,_0x3471f8){_0x3471f8=_0x3471f8||0xcc;return function(_0x31a9a8){if(_0x31a9a8){return _0x630ea2[_0x52ca('0x17')](_0x3471f8);}return _0x630ea2[_0x52ca('0x18')](_0x3471f8)[_0x52ca('0x19')]();};}function respondWithResult(_0x12982b,_0x42ec50){_0x42ec50=_0x42ec50||0xc8;return function(_0x36d0e8){if(_0x36d0e8){return _0x12982b['status'](_0x42ec50)['json'](_0x36d0e8);}};}function respondWithFilteredResult(_0x26e83b,_0x83f3bb){return function(_0x10f302){if(_0x10f302){var _0x8d230=typeof _0x83f3bb[_0x52ca('0x1a')]===_0x52ca('0x1b')&&typeof _0x83f3bb[_0x52ca('0x1c')]===_0x52ca('0x1b');var _0x3442f1=_0x10f302[_0x52ca('0x1d')];var _0x390cef=_0x8d230?0x0:_0x83f3bb['offset'];var _0x328ae3=_0x8d230?_0x10f302[_0x52ca('0x1d')]:_0x83f3bb[_0x52ca('0x1a')]+_0x83f3bb[_0x52ca('0x1c')];var _0x3fc685;if(_0x328ae3>=_0x3442f1){_0x328ae3=_0x3442f1;_0x3fc685=0xc8;}else{_0x3fc685=0xce;}_0x26e83b[_0x52ca('0x18')](_0x3fc685);return _0x26e83b[_0x52ca('0x1e')](_0x52ca('0x1f'),_0x390cef+'-'+_0x328ae3+'/'+_0x3442f1)[_0x52ca('0x20')](_0x10f302);}return null;};}function patchUpdates(_0x9b383a){return function(_0x4492ca){try{jsonpatch['apply'](_0x4492ca,_0x9b383a,!![]);}catch(_0x2d139f){return BPromise[_0x52ca('0x21')](_0x2d139f);}return _0x4492ca[_0x52ca('0x22')]();};}function saveUpdates(_0x1e5d58,_0x42bf69){return function(_0x2ea090){if(_0x2ea090){return _0x2ea090[_0x52ca('0x23')](_0x1e5d58)['then'](function(_0x3d100a){return _0x3d100a;});}return null;};}function removeEntity(_0xc2a75f,_0x3719ad){return function(_0x18f919){if(_0x18f919){return _0x18f919[_0x52ca('0x24')]()[_0x52ca('0x25')](function(){_0xc2a75f[_0x52ca('0x18')](0xcc)[_0x52ca('0x19')]();});}};}function handleEntityNotFound(_0x54b05e,_0x4f9ed4){return function(_0x303464){if(!_0x303464){_0x54b05e['sendStatus'](0x194);}return _0x303464;};}function handleError(_0x27cc1f,_0x1b67d8){_0x1b67d8=_0x1b67d8||0x1f4;return function(_0x5c4abc){logger[_0x52ca('0x26')](_0x5c4abc[_0x52ca('0x27')]);if(_0x5c4abc[_0x52ca('0x28')]){delete _0x5c4abc[_0x52ca('0x28')];}_0x27cc1f['status'](_0x1b67d8)[_0x52ca('0x29')](_0x5c4abc);};}exports[_0x52ca('0x2a')]=function(_0x551dea,_0x4e9a2a){var _0x25ea10={},_0x55f177={},_0x1b1d8f={'count':0x0,'rows':[]};var _0x18fea7=_[_0x52ca('0x2b')](db[_0x52ca('0x2c')][_0x52ca('0x2d')],function(_0x161e78){return{'name':_0x161e78[_0x52ca('0x2e')],'type':_0x161e78[_0x52ca('0x2f')][_0x52ca('0x30')]};});_0x55f177['model']=_[_0x52ca('0x2b')](_0x18fea7,_0x52ca('0x28'));_0x55f177[_0x52ca('0x31')]=_[_0x52ca('0x32')](_0x551dea['query']);_0x55f177[_0x52ca('0x33')]=_[_0x52ca('0x34')](_0x55f177[_0x52ca('0x35')],_0x55f177[_0x52ca('0x31')]);_0x25ea10[_0x52ca('0x36')]=_['intersection'](_0x55f177[_0x52ca('0x35')],qs[_0x52ca('0x37')](_0x551dea[_0x52ca('0x31')][_0x52ca('0x37')]));_0x25ea10[_0x52ca('0x36')]=_0x25ea10['attributes'][_0x52ca('0x38')]?_0x25ea10[_0x52ca('0x36')]:_0x55f177[_0x52ca('0x35')];if(!_0x551dea[_0x52ca('0x31')][_0x52ca('0x39')](_0x52ca('0x3a'))){_0x25ea10[_0x52ca('0x1c')]=qs['limit'](_0x551dea[_0x52ca('0x31')]['limit']);_0x25ea10[_0x52ca('0x1a')]=qs[_0x52ca('0x1a')](_0x551dea[_0x52ca('0x31')][_0x52ca('0x1a')]);}_0x25ea10[_0x52ca('0x3b')]=qs['sort'](_0x551dea[_0x52ca('0x31')][_0x52ca('0x3c')]);_0x25ea10[_0x52ca('0x3d')]=qs['filters'](_[_0x52ca('0x3e')](_0x551dea[_0x52ca('0x31')],_0x55f177[_0x52ca('0x33')]),_0x18fea7);if(_0x551dea[_0x52ca('0x31')][_0x52ca('0x3f')]){_0x25ea10[_0x52ca('0x3d')]=_['merge'](_0x25ea10[_0x52ca('0x3d')],{'$or':_[_0x52ca('0x2b')](_0x18fea7,function(_0x4c9d69){if(_0x4c9d69[_0x52ca('0x2f')]!==_0x52ca('0x40')){var _0x2d892c={};_0x2d892c[_0x4c9d69[_0x52ca('0x28')]]={'$like':'%'+_0x551dea[_0x52ca('0x31')][_0x52ca('0x3f')]+'%'};return _0x2d892c;}})});}_0x25ea10=_[_0x52ca('0x41')]({},_0x25ea10,_0x551dea[_0x52ca('0x42')]);var _0xea976c={'where':_0x25ea10['where']};return db[_0x52ca('0x2c')]['count'](_0xea976c)[_0x52ca('0x25')](function(_0x110ca7){_0x1b1d8f[_0x52ca('0x1d')]=_0x110ca7;if(_0x551dea[_0x52ca('0x31')]['includeAll']){_0x25ea10['include']=[{'all':!![]}];}return db['FreshdeskAccount']['findAll'](_0x25ea10);})[_0x52ca('0x25')](function(_0x3b6954){_0x1b1d8f[_0x52ca('0x43')]=_0x3b6954;return _0x1b1d8f;})[_0x52ca('0x25')](respondWithFilteredResult(_0x4e9a2a,_0x25ea10))['catch'](handleError(_0x4e9a2a,null));};exports['show']=function(_0x1e8d16,_0x2c5787){var _0xd756d9={'raw':![],'where':{'id':_0x1e8d16[_0x52ca('0x44')]['id']}},_0x2afa53={};_0x2afa53[_0x52ca('0x35')]=_[_0x52ca('0x32')](db[_0x52ca('0x2c')][_0x52ca('0x2d')]);_0x2afa53[_0x52ca('0x31')]=_[_0x52ca('0x32')](_0x1e8d16['query']);_0x2afa53[_0x52ca('0x33')]=_['intersection'](_0x2afa53['model'],_0x2afa53[_0x52ca('0x31')]);_0xd756d9[_0x52ca('0x36')]=_[_0x52ca('0x34')](_0x2afa53['model'],qs[_0x52ca('0x37')](_0x1e8d16[_0x52ca('0x31')][_0x52ca('0x37')]));_0xd756d9[_0x52ca('0x36')]=_0xd756d9['attributes'][_0x52ca('0x38')]?_0xd756d9[_0x52ca('0x36')]:_0x2afa53['model'];if(_0x1e8d16[_0x52ca('0x31')]['includeAll']){_0xd756d9['include']=[{'all':!![]}];}_0xd756d9=_['merge']({},_0xd756d9,_0x1e8d16['options']);return db[_0x52ca('0x2c')][_0x52ca('0x45')](_0xd756d9)[_0x52ca('0x25')](handleEntityNotFound(_0x2c5787,null))['then'](respondWithResult(_0x2c5787,null))[_0x52ca('0x46')](handleError(_0x2c5787,null));};exports[_0x52ca('0x47')]=function(_0x2070f1,_0x471e35){return db[_0x52ca('0x2c')][_0x52ca('0x47')](_0x2070f1[_0x52ca('0x48')],{})[_0x52ca('0x25')](respondWithResult(_0x471e35,0xc9))[_0x52ca('0x46')](handleError(_0x471e35,null));};exports[_0x52ca('0x23')]=function(_0x1f65e2,_0x4cf6b1){if(_0x1f65e2[_0x52ca('0x48')]['id']){delete _0x1f65e2[_0x52ca('0x48')]['id'];}return db[_0x52ca('0x2c')][_0x52ca('0x45')]({'where':{'id':_0x1f65e2[_0x52ca('0x44')]['id']}})[_0x52ca('0x25')](handleEntityNotFound(_0x4cf6b1,null))[_0x52ca('0x25')](saveUpdates(_0x1f65e2[_0x52ca('0x48')],null))['then'](respondWithResult(_0x4cf6b1,null))['catch'](handleError(_0x4cf6b1,null));};exports['destroy']=function(_0x580cad,_0x4f5d18){return db[_0x52ca('0x2c')][_0x52ca('0x45')]({'where':{'id':_0x580cad[_0x52ca('0x44')]['id']}})[_0x52ca('0x25')](handleEntityNotFound(_0x4f5d18,null))['then'](removeEntity(_0x4f5d18,null))[_0x52ca('0x46')](handleError(_0x4f5d18,null));};exports[_0x52ca('0x49')]=function(_0x3e4b9e,_0x570b60,_0x264693){var _0x47cdc9={};var _0x465776={};var _0xd2957e;var _0x43d750;return db[_0x52ca('0x2c')]['findOne']({'where':{'id':_0x3e4b9e['params']['id']}})[_0x52ca('0x25')](handleEntityNotFound(_0x570b60,null))[_0x52ca('0x25')](function(_0x2d1a93){if(_0x2d1a93){_0xd2957e=_0x2d1a93;_0x465776[_0x52ca('0x35')]=_[_0x52ca('0x32')](db['FreshdeskConfiguration'][_0x52ca('0x2d')]);_0x465776[_0x52ca('0x31')]=_[_0x52ca('0x32')](_0x3e4b9e[_0x52ca('0x31')]);_0x465776[_0x52ca('0x33')]=_['intersection'](_0x465776['model'],_0x465776[_0x52ca('0x31')]);_0x47cdc9['attributes']=_['intersection'](_0x465776[_0x52ca('0x35')],qs[_0x52ca('0x37')](_0x3e4b9e[_0x52ca('0x31')][_0x52ca('0x37')]));_0x47cdc9[_0x52ca('0x36')]=_0x47cdc9[_0x52ca('0x36')][_0x52ca('0x38')]?_0x47cdc9[_0x52ca('0x36')]:_0x465776[_0x52ca('0x35')];_0x47cdc9[_0x52ca('0x3b')]=qs['sort'](_0x3e4b9e[_0x52ca('0x31')][_0x52ca('0x3c')]);_0x47cdc9[_0x52ca('0x3d')]=qs[_0x52ca('0x33')](_[_0x52ca('0x3e')](_0x3e4b9e[_0x52ca('0x31')],_0x465776[_0x52ca('0x33')]));if(_0x3e4b9e[_0x52ca('0x31')][_0x52ca('0x3f')]){_0x47cdc9[_0x52ca('0x3d')]=_['merge'](_0x47cdc9['where'],{'$or':_[_0x52ca('0x2b')](_0x47cdc9[_0x52ca('0x36')],function(_0x9de4e8){var _0x32bf1c={};_0x32bf1c[_0x9de4e8]={'$like':'%'+_0x3e4b9e[_0x52ca('0x31')]['filter']+'%'};return _0x32bf1c;})});}_0x47cdc9=_[_0x52ca('0x41')]({},_0x47cdc9,_0x3e4b9e[_0x52ca('0x42')]);return _0xd2957e['getConfigurations'](_0x47cdc9);}})['then'](function(_0x4ed6b5){if(_0x4ed6b5){_0x43d750=_0x4ed6b5[_0x52ca('0x38')];if(!_0x3e4b9e[_0x52ca('0x31')][_0x52ca('0x39')](_0x52ca('0x3a'))){_0x47cdc9[_0x52ca('0x1c')]=qs[_0x52ca('0x1c')](_0x3e4b9e[_0x52ca('0x31')]['limit']);_0x47cdc9[_0x52ca('0x1a')]=qs[_0x52ca('0x1a')](_0x3e4b9e[_0x52ca('0x31')][_0x52ca('0x1a')]);}return _0xd2957e[_0x52ca('0x49')](_0x47cdc9);}})[_0x52ca('0x25')](function(_0x411505){if(_0x411505){return _0x411505?{'count':_0x43d750,'rows':_0x411505}:null;}})['then'](respondWithResult(_0x570b60,null))[_0x52ca('0x46')](handleError(_0x570b60,null));};exports[_0x52ca('0x4a')]=function(_0x355a23,_0x172dd3,_0xe83173){if(_0x355a23[_0x52ca('0x48')]['id']){delete _0x355a23[_0x52ca('0x48')]['id'];}return db[_0x52ca('0x2c')][_0x52ca('0x4b')]({'where':{'id':_0x355a23['params']['id']}})[_0x52ca('0x25')](handleEntityNotFound(_0x172dd3,null))['then'](function(_0x4599b9){if(_0x4599b9){_0x355a23[_0x52ca('0x48')][_0x52ca('0x4c')]=_0x4599b9['id'];_0x355a23[_0x52ca('0x48')][_0x52ca('0x4d')]=integrations[_0x52ca('0x4e')](_0x355a23[_0x52ca('0x48')][_0x52ca('0x4f')],_0x355a23[_0x52ca('0x48')][_0x52ca('0x2f')]);_0x355a23['body'][_0x52ca('0x50')]=integrations['getDescriptions'](_0x355a23[_0x52ca('0x48')][_0x52ca('0x4f')],_0x355a23[_0x52ca('0x48')][_0x52ca('0x2f')]);return db['FreshdeskConfiguration']['create'](_0x355a23[_0x52ca('0x48')],{'include':[{'model':db['FreshdeskField'],'as':_0x52ca('0x4d')},{'model':db[_0x52ca('0x51')],'as':_0x52ca('0x50')}]});}return null;})[_0x52ca('0x25')](respondWithResult(_0x172dd3,null))[_0x52ca('0x46')](handleError(_0x172dd3,null));};exports[_0x52ca('0x52')]=function(_0x47c88a,_0x5b4a94,_0x36c7ce){var _0x2681b0='';return db[_0x52ca('0x2c')][_0x52ca('0x4b')]({'where':{'id':_0x47c88a[_0x52ca('0x44')]['id']},'attributes':['id',_0x52ca('0x53'),_0x52ca('0x54')]})[_0x52ca('0x25')](handleEntityNotFound(_0x5b4a94,null))[_0x52ca('0x25')](function(_0xab57b0){if(_0xab57b0){_0x2681b0=_0xab57b0['remoteUri'];var _0x1588a5=_0x2681b0[_0x52ca('0x55')](-0x1);if(_0x1588a5==='/'){_0x2681b0=_0x2681b0['substring'](0x0,_0x2681b0[_0x52ca('0x56')](_0x1588a5));}return rp({'method':'GET','uri':util[_0x52ca('0x57')]('%s/%s',_0x2681b0,_0x52ca('0x58')),'headers':{'Authorization':util[_0x52ca('0x57')](_0x52ca('0x59'),new Buffer(util[_0x52ca('0x57')](_0x52ca('0x5a'),_0xab57b0[_0x52ca('0x54')]))[_0x52ca('0x5b')](_0x52ca('0x5c')))},'json':!![]});}})['then'](function(_0x1ec0da){if(_0x1ec0da){var _0x1b208a=['requester','subject','agent','description',_0x52ca('0x18'),'priority',_0x52ca('0x5d'),_0x52ca('0x5e'),'ticket_type',_0x52ca('0x5d'),'company'];_[_0x52ca('0x5f')](_0x1ec0da,function(_0x3259f3){return _0x1b208a[_0x52ca('0x60')](_0x3259f3[_0x52ca('0x28')])||!_0x3259f3[_0x52ca('0x61')]&&_0x3259f3[_0x52ca('0x2f')]!=='custom_text'&&_0x3259f3[_0x52ca('0x2f')]!==_0x52ca('0x62');});return{'count':_0x1ec0da[_0x52ca('0x38')],'rows':_[_0x52ca('0x2b')](_0x1ec0da,function(_0x268088){return{'id':_0x268088[_0x52ca('0x28')],'name':_0x268088[_0x52ca('0x63')],'custom':!_0x268088['default'],'options':_0x268088[_0x52ca('0x64')]?_[_0x52ca('0x2b')](_0x268088[_0x52ca('0x64')],function(_0xfca5fd){return{'name':_[_0x52ca('0x65')](_0xfca5fd),'value':_0xfca5fd};}):[]};})};}})[_0x52ca('0x25')](respondWithResult(_0x5b4a94,null))['catch'](function(_0x159cee){var _0x5ba5e1=_0x47c88a['query']['test']?0x1f4:_0x159cee['statusCode']||0x1f4;logger[_0x52ca('0x26')](_0x52ca('0x66'),_0x52ca('0x52'),_0x5ba5e1,JSON['stringify'](_0x159cee));delete _0x159cee['name'];if(_0x5ba5e1===0x191){_0x5ba5e1=0x190;}_0x5b4a94[_0x52ca('0x18')](_0x5ba5e1)[_0x52ca('0x29')](_0x47c88a[_0x52ca('0x31')][_0x52ca('0x67')]?{'message':_0x52ca('0x68'),'statusCode':_0x159cee[_0x52ca('0x69')]}:_0x159cee);});};
\ No newline at end of file
index 0e35c4d..cec6d8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b4d=['FreshdeskAccount','int_freshdesk_accounts','lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','define'];(function(_0x3f993e,_0x2d5757){var _0x39c135=function(_0x39e00b){while(--_0x39e00b){_0x3f993e['push'](_0x3f993e['shift']());}};_0x39c135(++_0x2d5757);}(_0x4b4d,0xab));var _0xd4b4=function(_0x1266c9,_0x23a2db){_0x1266c9=_0x1266c9-0x0;var _0x5ebcde=_0x4b4d[_0x1266c9];return _0x5ebcde;};'use strict';var _=require(_0xd4b4('0x0'));var util=require('util');var logger=require(_0xd4b4('0x1'))(_0xd4b4('0x2'));var moment=require(_0xd4b4('0x3'));var BPromise=require('bluebird');var rp=require(_0xd4b4('0x4'));var fs=require('fs');var path=require(_0xd4b4('0x5'));var rimraf=require(_0xd4b4('0x6'));var config=require(_0xd4b4('0x7'));var attributes=require('./intFreshdeskAccount.attributes');var integrations=require(_0xd4b4('0x8'));module[_0xd4b4('0x9')]=function(_0x133f35,_0x40cdec){return _0x133f35[_0xd4b4('0xa')](_0xd4b4('0xb'),attributes,{'tableName':_0xd4b4('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2762=['exports','define','FreshdeskAccount','int_freshdesk_accounts','lodash','util','api','moment','bluebird','request-promise','../../config/environment','./intFreshdeskAccount.attributes','../../components/integrations/configuration'];(function(_0x583ca5,_0x511bc3){var _0x386847=function(_0x229300){while(--_0x229300){_0x583ca5['push'](_0x583ca5['shift']());}};_0x386847(++_0x511bc3);}(_0x2762,0x115));var _0x2276=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2762[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x2276('0x0'));var util=require(_0x2276('0x1'));var logger=require('../../config/logger')(_0x2276('0x2'));var moment=require(_0x2276('0x3'));var BPromise=require(_0x2276('0x4'));var rp=require(_0x2276('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x2276('0x6'));var attributes=require(_0x2276('0x7'));var integrations=require(_0x2276('0x8'));module[_0x2276('0x9')]=function(_0x5c0bb9,_0x53914c){return _0x5c0bb9[_0x2276('0xa')](_0x2276('0xb'),attributes,{'tableName':_0x2276('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cfe9d31..9b9c0a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x481b=['../../config/utils','rpc','../../config/environment','jayson/promise','client','then','info','request\x20sent','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','FreshdeskAccount,\x20%s,\x20%s','message','result','GetFreshdeskAccount','findAll','options','raw','attributes','map','include','model','catch','ShowFreshdeskAccount','FreshdeskAccount','find','where','lodash','util','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x4c4609,_0x3c515a){var _0x48ea99=function(_0x5d6df2){while(--_0x5d6df2){_0x4c4609['push'](_0x4c4609['shift']());}};_0x48ea99(++_0x3c515a);}(_0x481b,0x86));var _0xb481=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0x481b[_0x5f1391];return _0x50ebe3;};'use strict';var _=require(_0xb481('0x0'));var util=require(_0xb481('0x1'));var moment=require('moment');var BPromise=require(_0xb481('0x2'));var rs=require(_0xb481('0x3'));var fs=require('fs');var Redis=require(_0xb481('0x4'));var db=require(_0xb481('0x5'))['db'];var utils=require(_0xb481('0x6'));var logger=require('../../config/logger')(_0xb481('0x7'));var config=require(_0xb481('0x8'));var jayson=require(_0xb481('0x9'));var client=jayson[_0xb481('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1b635c,_0x3ddb14,_0x5db4fc){return new BPromise(function(_0x4453d8,_0xe7e125){return client['request'](_0x1b635c,_0x5db4fc)[_0xb481('0xb')](function(_0xbf2859){logger[_0xb481('0xc')]('FreshdeskAccount,\x20%s,\x20%s',_0x3ddb14,_0xb481('0xd'));logger[_0xb481('0xe')](_0xb481('0xf'),_0x3ddb14,_0xb481('0xd'),JSON[_0xb481('0x10')](_0xbf2859));if(_0xbf2859[_0xb481('0x11')]){if(_0xbf2859[_0xb481('0x11')][_0xb481('0x12')]===0x1f4){logger[_0xb481('0x11')](_0xb481('0x13'),_0x3ddb14,_0xbf2859[_0xb481('0x11')][_0xb481('0x14')]);return _0xe7e125(_0xbf2859[_0xb481('0x11')][_0xb481('0x14')]);}logger['error']('FreshdeskAccount,\x20%s,\x20%s',_0x3ddb14,_0xbf2859[_0xb481('0x11')][_0xb481('0x14')]);return _0x4453d8(_0xbf2859[_0xb481('0x11')][_0xb481('0x14')]);}else{logger[_0xb481('0xc')]('FreshdeskAccount,\x20%s,\x20%s',_0x3ddb14,_0xb481('0xd'));_0x4453d8(_0xbf2859[_0xb481('0x15')][_0xb481('0x14')]);}})['catch'](function(_0x292383){logger[_0xb481('0x11')]('FreshdeskAccount,\x20%s,\x20%s',_0x3ddb14,_0x292383);_0xe7e125(_0x292383);});});}exports[_0xb481('0x16')]=function(_0x29f9ba){var _0x4b1c39=this;return new Promise(function(_0xbae32a,_0x36f3d7){return db['FreshdeskAccount'][_0xb481('0x17')]({'raw':_0x29f9ba[_0xb481('0x18')]?_0x29f9ba[_0xb481('0x18')][_0xb481('0x19')]===undefined?!![]:![]:!![],'where':_0x29f9ba[_0xb481('0x18')]?_0x29f9ba[_0xb481('0x18')]['where']||null:null,'attributes':_0x29f9ba['options']?_0x29f9ba[_0xb481('0x18')][_0xb481('0x1a')]||null:null,'limit':_0x29f9ba[_0xb481('0x18')]?_0x29f9ba['options']['limit']||null:null,'include':_0x29f9ba[_0xb481('0x18')]?_0x29f9ba[_0xb481('0x18')]['include']?_[_0xb481('0x1b')](_0x29f9ba[_0xb481('0x18')][_0xb481('0x1c')],function(_0x337a6e){return{'model':db[_0x337a6e[_0xb481('0x1d')]],'as':_0x337a6e['as'],'attributes':_0x337a6e[_0xb481('0x1a')],'include':_0x337a6e[_0xb481('0x1c')]?_[_0xb481('0x1b')](_0x337a6e['include'],function(_0x534211){return{'model':db[_0x534211[_0xb481('0x1d')]],'as':_0x534211['as'],'attributes':_0x534211[_0xb481('0x1a')],'include':_0x534211[_0xb481('0x1c')]?_[_0xb481('0x1b')](_0x534211[_0xb481('0x1c')],function(_0x52ae45){return{'model':db[_0x52ae45[_0xb481('0x1d')]],'as':_0x52ae45['as'],'attributes':_0x52ae45['attributes']};}):[]};}):[]};}):[]:[]})[_0xb481('0xb')](function(_0x580821){logger['info'](_0xb481('0x16'),_0x29f9ba);logger[_0xb481('0xe')](_0xb481('0x16'),_0x29f9ba,JSON[_0xb481('0x10')](_0x580821));_0xbae32a(_0x580821);})[_0xb481('0x1e')](function(_0x55327){logger[_0xb481('0x11')](_0xb481('0x16'),_0x55327[_0xb481('0x14')],_0x29f9ba);_0x36f3d7(_0x4b1c39[_0xb481('0x11')](0x1f4,_0x55327[_0xb481('0x14')]));});});};exports[_0xb481('0x1f')]=function(_0x4b23d0){var _0x12db19=this;return new Promise(function(_0x1a2c05,_0x1f3801){return db[_0xb481('0x20')][_0xb481('0x21')]({'raw':_0x4b23d0['options']?_0x4b23d0['options']['raw']===undefined?!![]:![]:!![],'where':_0x4b23d0['options']?_0x4b23d0['options'][_0xb481('0x22')]||null:null,'attributes':_0x4b23d0[_0xb481('0x18')]?_0x4b23d0[_0xb481('0x18')]['attributes']||null:null,'include':_0x4b23d0[_0xb481('0x18')]?_0x4b23d0['options'][_0xb481('0x1c')]?_['map'](_0x4b23d0[_0xb481('0x18')]['include'],function(_0x4590d9){return{'model':db[_0x4590d9[_0xb481('0x1d')]],'as':_0x4590d9['as'],'attributes':_0x4590d9[_0xb481('0x1a')],'include':_0x4590d9[_0xb481('0x1c')]?_['map'](_0x4590d9['include'],function(_0x28ac74){return{'model':db[_0x28ac74[_0xb481('0x1d')]],'as':_0x28ac74['as'],'attributes':_0x28ac74[_0xb481('0x1a')],'include':_0x28ac74['include']?_[_0xb481('0x1b')](_0x28ac74['include'],function(_0x2a8536){return{'model':db[_0x2a8536[_0xb481('0x1d')]],'as':_0x2a8536['as'],'attributes':_0x2a8536[_0xb481('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xb481('0xb')](function(_0x5657c9){logger['info'](_0xb481('0x1f'),_0x4b23d0);logger[_0xb481('0xe')]('ShowFreshdeskAccount',_0x4b23d0,JSON[_0xb481('0x10')](_0x5657c9));_0x1a2c05(_0x5657c9);})[_0xb481('0x1e')](function(_0x214c4d){logger[_0xb481('0x11')](_0xb481('0x1f'),_0x214c4d[_0xb481('0x14')],_0x4b23d0);_0x1f3801(_0x12db19[_0xb481('0x11')](0x1f4,_0x214c4d['message']));});});};
\ No newline at end of file
+var _0xe134=['../../config/environment','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','catch','GetFreshdeskAccount','FreshdeskAccount','options','raw','where','limit','include','map','model','attributes','ShowFreshdeskAccount','lodash','moment','randomstring','../../mysqldb','../../config/utils','rpc'];(function(_0x40d97c,_0x5c0276){var _0x5307a3=function(_0x4c2ac2){while(--_0x4c2ac2){_0x40d97c['push'](_0x40d97c['shift']());}};_0x5307a3(++_0x5c0276);}(_0xe134,0x102));var _0x4e13=function(_0x10e1ce,_0x1f28eb){_0x10e1ce=_0x10e1ce-0x0;var _0x5be2ea=_0xe134[_0x10e1ce];return _0x5be2ea;};'use strict';var _=require(_0x4e13('0x0'));var util=require('util');var moment=require(_0x4e13('0x1'));var BPromise=require('bluebird');var rs=require(_0x4e13('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4e13('0x3'))['db'];var utils=require(_0x4e13('0x4'));var logger=require('../../config/logger')(_0x4e13('0x5'));var config=require(_0x4e13('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x4e13('0x7')][_0x4e13('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x44421c,_0x1331da,_0xd57201){return new BPromise(function(_0x396aec,_0x122717){return client[_0x4e13('0x9')](_0x44421c,_0xd57201)[_0x4e13('0xa')](function(_0x3e6a34){logger[_0x4e13('0xb')](_0x4e13('0xc'),_0x1331da,_0x4e13('0xd'));logger[_0x4e13('0xe')](_0x4e13('0xf'),_0x1331da,_0x4e13('0xd'),JSON[_0x4e13('0x10')](_0x3e6a34));if(_0x3e6a34[_0x4e13('0x11')]){if(_0x3e6a34[_0x4e13('0x11')][_0x4e13('0x12')]===0x1f4){logger[_0x4e13('0x11')](_0x4e13('0xc'),_0x1331da,_0x3e6a34[_0x4e13('0x11')]['message']);return _0x122717(_0x3e6a34['error'][_0x4e13('0x13')]);}logger[_0x4e13('0x11')](_0x4e13('0xc'),_0x1331da,_0x3e6a34['error'][_0x4e13('0x13')]);return _0x396aec(_0x3e6a34[_0x4e13('0x11')][_0x4e13('0x13')]);}else{logger[_0x4e13('0xb')](_0x4e13('0xc'),_0x1331da,'request\x20sent');_0x396aec(_0x3e6a34[_0x4e13('0x14')][_0x4e13('0x13')]);}})[_0x4e13('0x15')](function(_0x56b703){logger[_0x4e13('0x11')](_0x4e13('0xc'),_0x1331da,_0x56b703);_0x122717(_0x56b703);});});}exports[_0x4e13('0x16')]=function(_0x47a459){var _0x40cfc9=this;return new Promise(function(_0x5ddfac,_0x4c78a0){return db[_0x4e13('0x17')]['findAll']({'raw':_0x47a459[_0x4e13('0x18')]?_0x47a459[_0x4e13('0x18')][_0x4e13('0x19')]===undefined?!![]:![]:!![],'where':_0x47a459['options']?_0x47a459[_0x4e13('0x18')][_0x4e13('0x1a')]||null:null,'attributes':_0x47a459[_0x4e13('0x18')]?_0x47a459[_0x4e13('0x18')]['attributes']||null:null,'limit':_0x47a459[_0x4e13('0x18')]?_0x47a459[_0x4e13('0x18')][_0x4e13('0x1b')]||null:null,'include':_0x47a459['options']?_0x47a459['options'][_0x4e13('0x1c')]?_[_0x4e13('0x1d')](_0x47a459[_0x4e13('0x18')]['include'],function(_0x2569c5){return{'model':db[_0x2569c5[_0x4e13('0x1e')]],'as':_0x2569c5['as'],'attributes':_0x2569c5[_0x4e13('0x1f')],'include':_0x2569c5[_0x4e13('0x1c')]?_[_0x4e13('0x1d')](_0x2569c5[_0x4e13('0x1c')],function(_0x414c96){return{'model':db[_0x414c96['model']],'as':_0x414c96['as'],'attributes':_0x414c96[_0x4e13('0x1f')],'include':_0x414c96[_0x4e13('0x1c')]?_[_0x4e13('0x1d')](_0x414c96[_0x4e13('0x1c')],function(_0xf312a6){return{'model':db[_0xf312a6[_0x4e13('0x1e')]],'as':_0xf312a6['as'],'attributes':_0xf312a6[_0x4e13('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x4e13('0xa')](function(_0x46ed04){logger[_0x4e13('0xb')]('GetFreshdeskAccount',_0x47a459);logger[_0x4e13('0xe')]('GetFreshdeskAccount',_0x47a459,JSON[_0x4e13('0x10')](_0x46ed04));_0x5ddfac(_0x46ed04);})[_0x4e13('0x15')](function(_0x5ec15d){logger['error']('GetFreshdeskAccount',_0x5ec15d[_0x4e13('0x13')],_0x47a459);_0x4c78a0(_0x40cfc9['error'](0x1f4,_0x5ec15d[_0x4e13('0x13')]));});});};exports['ShowFreshdeskAccount']=function(_0x9ec73e){var _0x48e74=this;return new Promise(function(_0x1ce508,_0x54843b){return db[_0x4e13('0x17')]['find']({'raw':_0x9ec73e[_0x4e13('0x18')]?_0x9ec73e[_0x4e13('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x9ec73e[_0x4e13('0x18')]?_0x9ec73e[_0x4e13('0x18')]['where']||null:null,'attributes':_0x9ec73e[_0x4e13('0x18')]?_0x9ec73e['options'][_0x4e13('0x1f')]||null:null,'include':_0x9ec73e['options']?_0x9ec73e[_0x4e13('0x18')][_0x4e13('0x1c')]?_[_0x4e13('0x1d')](_0x9ec73e[_0x4e13('0x18')][_0x4e13('0x1c')],function(_0x3e1270){return{'model':db[_0x3e1270[_0x4e13('0x1e')]],'as':_0x3e1270['as'],'attributes':_0x3e1270[_0x4e13('0x1f')],'include':_0x3e1270['include']?_[_0x4e13('0x1d')](_0x3e1270['include'],function(_0x2b93f0){return{'model':db[_0x2b93f0[_0x4e13('0x1e')]],'as':_0x2b93f0['as'],'attributes':_0x2b93f0[_0x4e13('0x1f')],'include':_0x2b93f0[_0x4e13('0x1c')]?_[_0x4e13('0x1d')](_0x2b93f0['include'],function(_0x49579d){return{'model':db[_0x49579d[_0x4e13('0x1e')]],'as':_0x49579d['as'],'attributes':_0x49579d[_0x4e13('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x4e13('0xa')](function(_0x232670){logger[_0x4e13('0xb')](_0x4e13('0x20'),_0x9ec73e);logger[_0x4e13('0xe')]('ShowFreshdeskAccount',_0x9ec73e,JSON[_0x4e13('0x10')](_0x232670));_0x1ce508(_0x232670);})[_0x4e13('0x15')](function(_0x55e85b){logger[_0x4e13('0x11')](_0x4e13('0x20'),_0x55e85b['message'],_0x9ec73e);_0x54843b(_0x48e74[_0x4e13('0x11')](0x1f4,_0x55e85b['message']));});});};
\ No newline at end of file
index dfbcbdd..2ca81e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb174=['delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intFreshdeskConfiguration.controller','get','/:id','/:id/fields','isAuthenticated','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','create','setTags','put','update'];(function(_0x354aa7,_0x4c6615){var _0x4c12e8=function(_0x59bd74){while(--_0x59bd74){_0x354aa7['push'](_0x354aa7['shift']());}};_0x4c12e8(++_0x4c6615);}(_0xb174,0x106));var _0x4b17=function(_0x28ea80,_0x5ee173){_0x28ea80=_0x28ea80-0x0;var _0x676866=_0xb174[_0x28ea80];return _0x676866;};'use strict';var multer=require(_0x4b17('0x0'));var util=require('util');var path=require(_0x4b17('0x1'));var timeout=require(_0x4b17('0x2'));var express=require(_0x4b17('0x3'));var router=express[_0x4b17('0x4')]();var fs_extra=require(_0x4b17('0x5'));var auth=require(_0x4b17('0x6'));var interaction=require(_0x4b17('0x7'));var config=require('../../config/environment');var controller=require(_0x4b17('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x4b17('0x9')](_0x4b17('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x4b17('0x9')](_0x4b17('0xb'),auth[_0x4b17('0xc')](),controller[_0x4b17('0xd')]);router[_0x4b17('0x9')](_0x4b17('0xe'),auth['isAuthenticated'](),controller[_0x4b17('0xf')]);router[_0x4b17('0x9')](_0x4b17('0x10'),auth[_0x4b17('0xc')](),controller[_0x4b17('0x11')]);router[_0x4b17('0x9')](_0x4b17('0x12'),auth['isAuthenticated'](),controller[_0x4b17('0x13')]);router['post']('/',auth[_0x4b17('0xc')](),controller[_0x4b17('0x14')]);router['post'](_0x4b17('0x12'),auth[_0x4b17('0xc')](),controller[_0x4b17('0x15')]);router[_0x4b17('0x16')](_0x4b17('0xa'),auth[_0x4b17('0xc')](),controller[_0x4b17('0x17')]);router[_0x4b17('0x18')](_0x4b17('0xa'),auth[_0x4b17('0xc')](),controller['destroy']);module[_0x4b17('0x19')]=router;
\ No newline at end of file
+var _0xa7ee=['put','update','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','/:id/tags','getTags','post','create','setTags'];(function(_0x82fa71,_0x11b921){var _0x262198=function(_0x413ce8){while(--_0x413ce8){_0x82fa71['push'](_0x82fa71['shift']());}};_0x262198(++_0x11b921);}(_0xa7ee,0xdb));var _0xea7e=function(_0x1d3fdc,_0x2b5c54){_0x1d3fdc=_0x1d3fdc-0x0;var _0x128bb0=_0xa7ee[_0x1d3fdc];return _0x128bb0;};'use strict';var multer=require(_0xea7e('0x0'));var util=require('util');var path=require(_0xea7e('0x1'));var timeout=require(_0xea7e('0x2'));var express=require(_0xea7e('0x3'));var router=express[_0xea7e('0x4')]();var fs_extra=require(_0xea7e('0x5'));var auth=require(_0xea7e('0x6'));var interaction=require(_0xea7e('0x7'));var config=require('../../config/environment');var controller=require('./intFreshdeskConfiguration.controller');router[_0xea7e('0x8')]('/',auth[_0xea7e('0x9')](),controller[_0xea7e('0xa')]);router[_0xea7e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0xea7e('0xb')]);router[_0xea7e('0x8')](_0xea7e('0xc'),auth[_0xea7e('0x9')](),controller[_0xea7e('0xd')]);router[_0xea7e('0x8')](_0xea7e('0xe'),auth[_0xea7e('0x9')](),controller['getSubjects']);router[_0xea7e('0x8')](_0xea7e('0xf'),auth[_0xea7e('0x9')](),controller['getDescriptions']);router['get'](_0xea7e('0x10'),auth[_0xea7e('0x9')](),controller[_0xea7e('0x11')]);router[_0xea7e('0x12')]('/',auth['isAuthenticated'](),controller[_0xea7e('0x13')]);router[_0xea7e('0x12')](_0xea7e('0x10'),auth['isAuthenticated'](),controller[_0xea7e('0x14')]);router[_0xea7e('0x15')]('/:id',auth[_0xea7e('0x9')](),controller[_0xea7e('0x16')]);router['delete']('/:id',auth[_0xea7e('0x9')](),controller['destroy']);module[_0xea7e('0x17')]=router;
\ No newline at end of file
index 102490d..5236643 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6226=['exports','STRING','sequelize'];(function(_0xc0a3d3,_0x2c8d00){var _0x3386e8=function(_0x3f9df4){while(--_0x3f9df4){_0xc0a3d3['push'](_0xc0a3d3['shift']());}};_0x3386e8(++_0x2c8d00);}(_0x6226,0xc2));var _0x6622=function(_0x5207a2,_0x316913){_0x5207a2=_0x5207a2-0x0;var _0x314716=_0x6226[_0x5207a2];return _0x314716;};'use strict';var Sequelize=require(_0x6622('0x0'));module[_0x6622('0x1')]={'name':{'type':Sequelize[_0x6622('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x0649=['STRING','sequelize'];(function(_0x5ee029,_0x19f641){var _0x25942f=function(_0x574bf9){while(--_0x574bf9){_0x5ee029['push'](_0x5ee029['shift']());}};_0x25942f(++_0x19f641);}(_0x0649,0x10f));var _0x9064=function(_0x31234b,_0x307db9){_0x31234b=_0x31234b-0x0;var _0x395c91=_0x0649[_0x31234b];return _0x395c91;};'use strict';var Sequelize=require(_0x9064('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x9064('0x1')]}};
\ No newline at end of file
index a3106fb..c557b36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf48b=['filter','where','merge','includeAll','include','findAll','catch','show','params','length','options','find','create','body','getFields','findOne','FreshdeskField','order','pick','getSubjects','getDescriptions','getTags','Tag','setTags','rimraf','request-promise','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined','limit','count','offset','set','Content-Range','json','apply','save','update','then','destroy','end','error','stack','name','index','map','FreshdeskConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort'];(function(_0x5d5a99,_0x59ed48){var _0x3e7963=function(_0xa813c4){while(--_0xa813c4){_0x5d5a99['push'](_0x5d5a99['shift']());}};_0x3e7963(++_0x59ed48);}(_0xf48b,0x1a8));var _0xbf48=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xf48b[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbf48('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xbf48('0x1'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xbf48('0x2'));var sox=require(_0xbf48('0x3'));var csv=require('to-csv');var ejs=require(_0xbf48('0x4'));var fs=require('fs');var fs_extra=require(_0xbf48('0x5'));var _=require(_0xbf48('0x6'));var squel=require(_0xbf48('0x7'));var crypto=require('crypto');var jsforce=require(_0xbf48('0x8'));var deskjs=require(_0xbf48('0x9'));var toCsv=require('to-csv');var querystring=require(_0xbf48('0xa'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xbf48('0xb'));var qs=require(_0xbf48('0xc'));var as=require(_0xbf48('0xd'));var hardwareService=require(_0xbf48('0xe'));var logger=require(_0xbf48('0xf'))(_0xbf48('0x10'));var utils=require(_0xbf48('0x11'));var config=require(_0xbf48('0x12'));var licenseUtil=require(_0xbf48('0x13'));var db=require(_0xbf48('0x14'))['db'];function respondWithStatusCode(_0x2410d4,_0x8972f7){_0x8972f7=_0x8972f7||0xcc;return function(_0x11fcd5){if(_0x11fcd5){return _0x2410d4[_0xbf48('0x15')](_0x8972f7);}return _0x2410d4[_0xbf48('0x16')](_0x8972f7)['end']();};}function respondWithResult(_0x597d18,_0x2190d2){_0x2190d2=_0x2190d2||0xc8;return function(_0x1bdafa){if(_0x1bdafa){return _0x597d18[_0xbf48('0x16')](_0x2190d2)['json'](_0x1bdafa);}};}function respondWithFilteredResult(_0x2d1747,_0x4296a6){return function(_0xbb5b79){if(_0xbb5b79){var _0x5cbc2e=typeof _0x4296a6['offset']===_0xbf48('0x17')&&typeof _0x4296a6[_0xbf48('0x18')]==='undefined';var _0x25ede1=_0xbb5b79[_0xbf48('0x19')];var _0xf03f46=_0x5cbc2e?0x0:_0x4296a6[_0xbf48('0x1a')];var _0x357032=_0x5cbc2e?_0xbb5b79[_0xbf48('0x19')]:_0x4296a6[_0xbf48('0x1a')]+_0x4296a6[_0xbf48('0x18')];var _0x22f06b;if(_0x357032>=_0x25ede1){_0x357032=_0x25ede1;_0x22f06b=0xc8;}else{_0x22f06b=0xce;}_0x2d1747['status'](_0x22f06b);return _0x2d1747[_0xbf48('0x1b')](_0xbf48('0x1c'),_0xf03f46+'-'+_0x357032+'/'+_0x25ede1)[_0xbf48('0x1d')](_0xbb5b79);}return null;};}function patchUpdates(_0xcc1d17){return function(_0x1f922d){try{jsonpatch[_0xbf48('0x1e')](_0x1f922d,_0xcc1d17,!![]);}catch(_0x2750f3){return BPromise['reject'](_0x2750f3);}return _0x1f922d[_0xbf48('0x1f')]();};}function saveUpdates(_0x34cc06,_0x29cd1f){return function(_0x1ecbf9){if(_0x1ecbf9){return _0x1ecbf9[_0xbf48('0x20')](_0x34cc06)[_0xbf48('0x21')](function(_0x4b5111){return _0x4b5111;});}return null;};}function removeEntity(_0x5ac323,_0x3a4f94){return function(_0x5bcb25){if(_0x5bcb25){return _0x5bcb25[_0xbf48('0x22')]()[_0xbf48('0x21')](function(){_0x5ac323[_0xbf48('0x16')](0xcc)[_0xbf48('0x23')]();});}};}function handleEntityNotFound(_0x70670e,_0x5e6019){return function(_0x2d95d8){if(!_0x2d95d8){_0x70670e['sendStatus'](0x194);}return _0x2d95d8;};}function handleError(_0x911de4,_0x4eda41){_0x4eda41=_0x4eda41||0x1f4;return function(_0x50f6ff){logger[_0xbf48('0x24')](_0x50f6ff[_0xbf48('0x25')]);if(_0x50f6ff['name']){delete _0x50f6ff[_0xbf48('0x26')];}_0x911de4[_0xbf48('0x16')](_0x4eda41)['send'](_0x50f6ff);};}exports[_0xbf48('0x27')]=function(_0x54f350,_0x4364aa){var _0x93c4df={},_0x48fdd2={},_0x388df0={'count':0x0,'rows':[]};var _0x14e703=_[_0xbf48('0x28')](db[_0xbf48('0x29')][_0xbf48('0x2a')],function(_0x2a18d7){return{'name':_0x2a18d7[_0xbf48('0x2b')],'type':_0x2a18d7[_0xbf48('0x2c')][_0xbf48('0x2d')]};});_0x48fdd2[_0xbf48('0x2e')]=_[_0xbf48('0x28')](_0x14e703,_0xbf48('0x26'));_0x48fdd2[_0xbf48('0x2f')]=_[_0xbf48('0x30')](_0x54f350['query']);_0x48fdd2[_0xbf48('0x31')]=_[_0xbf48('0x32')](_0x48fdd2[_0xbf48('0x2e')],_0x48fdd2[_0xbf48('0x2f')]);_0x93c4df[_0xbf48('0x33')]=_['intersection'](_0x48fdd2[_0xbf48('0x2e')],qs[_0xbf48('0x34')](_0x54f350[_0xbf48('0x2f')][_0xbf48('0x34')]));_0x93c4df['attributes']=_0x93c4df[_0xbf48('0x33')]['length']?_0x93c4df[_0xbf48('0x33')]:_0x48fdd2[_0xbf48('0x2e')];if(!_0x54f350[_0xbf48('0x2f')][_0xbf48('0x35')](_0xbf48('0x36'))){_0x93c4df[_0xbf48('0x18')]=qs['limit'](_0x54f350[_0xbf48('0x2f')][_0xbf48('0x18')]);_0x93c4df[_0xbf48('0x1a')]=qs[_0xbf48('0x1a')](_0x54f350[_0xbf48('0x2f')][_0xbf48('0x1a')]);}_0x93c4df['order']=qs[_0xbf48('0x37')](_0x54f350[_0xbf48('0x2f')]['sort']);_0x93c4df['where']=qs[_0xbf48('0x31')](_['pick'](_0x54f350[_0xbf48('0x2f')],_0x48fdd2['filters']),_0x14e703);if(_0x54f350[_0xbf48('0x2f')][_0xbf48('0x38')]){_0x93c4df[_0xbf48('0x39')]=_[_0xbf48('0x3a')](_0x93c4df[_0xbf48('0x39')],{'$or':_[_0xbf48('0x28')](_0x14e703,function(_0x460d3b){if(_0x460d3b['type']!=='VIRTUAL'){var _0x1fa1ae={};_0x1fa1ae[_0x460d3b[_0xbf48('0x26')]]={'$like':'%'+_0x54f350[_0xbf48('0x2f')][_0xbf48('0x38')]+'%'};return _0x1fa1ae;}})});}_0x93c4df=_[_0xbf48('0x3a')]({},_0x93c4df,_0x54f350['options']);var _0x23b2ed={'where':_0x93c4df[_0xbf48('0x39')]};return db[_0xbf48('0x29')][_0xbf48('0x19')](_0x23b2ed)['then'](function(_0x1863bf){_0x388df0[_0xbf48('0x19')]=_0x1863bf;if(_0x54f350[_0xbf48('0x2f')][_0xbf48('0x3b')]){_0x93c4df[_0xbf48('0x3c')]=[{'all':!![]}];}return db['FreshdeskConfiguration'][_0xbf48('0x3d')](_0x93c4df);})[_0xbf48('0x21')](function(_0x5246d0){_0x388df0['rows']=_0x5246d0;return _0x388df0;})[_0xbf48('0x21')](respondWithFilteredResult(_0x4364aa,_0x93c4df))[_0xbf48('0x3e')](handleError(_0x4364aa,null));};exports[_0xbf48('0x3f')]=function(_0x4b532b,_0x239a75){var _0x2331fa={'raw':![],'where':{'id':_0x4b532b[_0xbf48('0x40')]['id']}},_0x4a2f71={};_0x4a2f71[_0xbf48('0x2e')]=_[_0xbf48('0x30')](db[_0xbf48('0x29')][_0xbf48('0x2a')]);_0x4a2f71[_0xbf48('0x2f')]=_['keys'](_0x4b532b['query']);_0x4a2f71[_0xbf48('0x31')]=_[_0xbf48('0x32')](_0x4a2f71['model'],_0x4a2f71[_0xbf48('0x2f')]);_0x2331fa[_0xbf48('0x33')]=_['intersection'](_0x4a2f71[_0xbf48('0x2e')],qs[_0xbf48('0x34')](_0x4b532b[_0xbf48('0x2f')][_0xbf48('0x34')]));_0x2331fa[_0xbf48('0x33')]=_0x2331fa[_0xbf48('0x33')][_0xbf48('0x41')]?_0x2331fa[_0xbf48('0x33')]:_0x4a2f71[_0xbf48('0x2e')];if(_0x4b532b['query']['includeAll']){_0x2331fa[_0xbf48('0x3c')]=[{'all':!![]}];}_0x2331fa=_[_0xbf48('0x3a')]({},_0x2331fa,_0x4b532b[_0xbf48('0x42')]);return db[_0xbf48('0x29')][_0xbf48('0x43')](_0x2331fa)[_0xbf48('0x21')](handleEntityNotFound(_0x239a75,null))['then'](respondWithResult(_0x239a75,null))[_0xbf48('0x3e')](handleError(_0x239a75,null));};exports['create']=function(_0x7467af,_0x5a48ad){return db['FreshdeskConfiguration'][_0xbf48('0x44')](_0x7467af[_0xbf48('0x45')],{})['then'](respondWithResult(_0x5a48ad,0xc9))[_0xbf48('0x3e')](handleError(_0x5a48ad,null));};exports[_0xbf48('0x20')]=function(_0x450253,_0x2089cc){if(_0x450253[_0xbf48('0x45')]['id']){delete _0x450253[_0xbf48('0x45')]['id'];}return db['FreshdeskConfiguration'][_0xbf48('0x43')]({'where':{'id':_0x450253[_0xbf48('0x40')]['id']}})[_0xbf48('0x21')](handleEntityNotFound(_0x2089cc,null))[_0xbf48('0x21')](saveUpdates(_0x450253['body'],null))[_0xbf48('0x21')](respondWithResult(_0x2089cc,null))[_0xbf48('0x3e')](handleError(_0x2089cc,null));};exports[_0xbf48('0x22')]=function(_0x26b850,_0x111972){return db['FreshdeskConfiguration'][_0xbf48('0x43')]({'where':{'id':_0x26b850['params']['id']}})[_0xbf48('0x21')](handleEntityNotFound(_0x111972,null))['then'](removeEntity(_0x111972,null))['catch'](handleError(_0x111972,null));};exports[_0xbf48('0x46')]=function(_0x9e7da3,_0x1d588c,_0x357007){var _0x469435={};var _0x4c8c12={};var _0x7f949f;var _0x4ec801;return db['FreshdeskConfiguration']['findOne']({'where':{'id':_0x9e7da3[_0xbf48('0x40')]['id']}})[_0xbf48('0x21')](handleEntityNotFound(_0x1d588c,null))[_0xbf48('0x21')](function(_0x383c99){if(_0x383c99){_0x7f949f=_0x383c99;_0x4c8c12[_0xbf48('0x2e')]=_['keys'](db['FreshdeskField'][_0xbf48('0x2a')]);_0x4c8c12['query']=_['keys'](_0x9e7da3[_0xbf48('0x2f')]);_0x4c8c12['filters']=_[_0xbf48('0x32')](_0x4c8c12[_0xbf48('0x2e')],_0x4c8c12[_0xbf48('0x2f')]);_0x469435[_0xbf48('0x33')]=_[_0xbf48('0x32')](_0x4c8c12[_0xbf48('0x2e')],qs[_0xbf48('0x34')](_0x9e7da3[_0xbf48('0x2f')]['fields']));_0x469435[_0xbf48('0x33')]=_0x469435['attributes'][_0xbf48('0x41')]?_0x469435['attributes']:_0x4c8c12[_0xbf48('0x2e')];_0x469435['order']=qs[_0xbf48('0x37')](_0x9e7da3['query']['sort']);_0x469435[_0xbf48('0x39')]=qs[_0xbf48('0x31')](_['pick'](_0x9e7da3[_0xbf48('0x2f')],_0x4c8c12[_0xbf48('0x31')]));if(_0x9e7da3[_0xbf48('0x2f')][_0xbf48('0x38')]){_0x469435[_0xbf48('0x39')]=_[_0xbf48('0x3a')](_0x469435[_0xbf48('0x39')],{'$or':_[_0xbf48('0x28')](_0x469435[_0xbf48('0x33')],function(_0xf9bfdf){var _0xca6513={};_0xca6513[_0xf9bfdf]={'$like':'%'+_0x9e7da3[_0xbf48('0x2f')][_0xbf48('0x38')]+'%'};return _0xca6513;})});}_0x469435=_[_0xbf48('0x3a')]({},_0x469435,_0x9e7da3[_0xbf48('0x42')]);return _0x7f949f[_0xbf48('0x46')](_0x469435);}})[_0xbf48('0x21')](function(_0x2eb0ce){if(_0x2eb0ce){_0x4ec801=_0x2eb0ce[_0xbf48('0x41')];if(!_0x9e7da3[_0xbf48('0x2f')][_0xbf48('0x35')](_0xbf48('0x36'))){_0x469435[_0xbf48('0x18')]=qs['limit'](_0x9e7da3[_0xbf48('0x2f')]['limit']);_0x469435[_0xbf48('0x1a')]=qs[_0xbf48('0x1a')](_0x9e7da3[_0xbf48('0x2f')]['offset']);}return _0x7f949f[_0xbf48('0x46')](_0x469435);}})[_0xbf48('0x21')](function(_0x1a3b0f){if(_0x1a3b0f){return _0x1a3b0f?{'count':_0x4ec801,'rows':_0x1a3b0f}:null;}})[_0xbf48('0x21')](respondWithResult(_0x1d588c,null))[_0xbf48('0x3e')](handleError(_0x1d588c,null));};exports['getSubjects']=function(_0x5d957f,_0xdca149,_0x3dbd4c){var _0x508e78={};var _0x5782fd={};var _0x55dac2;var _0x3d5912;return db[_0xbf48('0x29')][_0xbf48('0x47')]({'where':{'id':_0x5d957f[_0xbf48('0x40')]['id']}})[_0xbf48('0x21')](handleEntityNotFound(_0xdca149,null))[_0xbf48('0x21')](function(_0x5518dd){if(_0x5518dd){_0x55dac2=_0x5518dd;_0x5782fd['model']=_[_0xbf48('0x30')](db[_0xbf48('0x48')][_0xbf48('0x2a')]);_0x5782fd[_0xbf48('0x2f')]=_['keys'](_0x5d957f[_0xbf48('0x2f')]);_0x5782fd[_0xbf48('0x31')]=_[_0xbf48('0x32')](_0x5782fd[_0xbf48('0x2e')],_0x5782fd[_0xbf48('0x2f')]);_0x508e78[_0xbf48('0x33')]=_['intersection'](_0x5782fd[_0xbf48('0x2e')],qs[_0xbf48('0x34')](_0x5d957f[_0xbf48('0x2f')][_0xbf48('0x34')]));_0x508e78['attributes']=_0x508e78['attributes'][_0xbf48('0x41')]?_0x508e78[_0xbf48('0x33')]:_0x5782fd[_0xbf48('0x2e')];_0x508e78[_0xbf48('0x49')]=qs[_0xbf48('0x37')](_0x5d957f[_0xbf48('0x2f')][_0xbf48('0x37')]);_0x508e78['where']=qs[_0xbf48('0x31')](_[_0xbf48('0x4a')](_0x5d957f['query'],_0x5782fd[_0xbf48('0x31')]));if(_0x5d957f['query'][_0xbf48('0x38')]){_0x508e78['where']=_[_0xbf48('0x3a')](_0x508e78[_0xbf48('0x39')],{'$or':_[_0xbf48('0x28')](_0x508e78[_0xbf48('0x33')],function(_0x516cb8){var _0x5688dc={};_0x5688dc[_0x516cb8]={'$like':'%'+_0x5d957f[_0xbf48('0x2f')][_0xbf48('0x38')]+'%'};return _0x5688dc;})});}_0x508e78=_[_0xbf48('0x3a')]({},_0x508e78,_0x5d957f['options']);return _0x55dac2[_0xbf48('0x4b')](_0x508e78);}})[_0xbf48('0x21')](function(_0x394b75){if(_0x394b75){_0x3d5912=_0x394b75[_0xbf48('0x41')];if(!_0x5d957f[_0xbf48('0x2f')][_0xbf48('0x35')](_0xbf48('0x36'))){_0x508e78['limit']=qs[_0xbf48('0x18')](_0x5d957f[_0xbf48('0x2f')][_0xbf48('0x18')]);_0x508e78['offset']=qs['offset'](_0x5d957f['query']['offset']);}return _0x55dac2[_0xbf48('0x4b')](_0x508e78);}})['then'](function(_0x3749b4){if(_0x3749b4){return _0x3749b4?{'count':_0x3d5912,'rows':_0x3749b4}:null;}})['then'](respondWithResult(_0xdca149,null))[_0xbf48('0x3e')](handleError(_0xdca149,null));};exports[_0xbf48('0x4c')]=function(_0x229b2a,_0x1d06d8,_0x3513a4){var _0x1e9413={};var _0x456c52={};var _0x4bc7d3;var _0x214acc;return db[_0xbf48('0x29')][_0xbf48('0x47')]({'where':{'id':_0x229b2a[_0xbf48('0x40')]['id']}})[_0xbf48('0x21')](handleEntityNotFound(_0x1d06d8,null))[_0xbf48('0x21')](function(_0x399cf0){if(_0x399cf0){_0x4bc7d3=_0x399cf0;_0x456c52[_0xbf48('0x2e')]=_[_0xbf48('0x30')](db[_0xbf48('0x48')][_0xbf48('0x2a')]);_0x456c52[_0xbf48('0x2f')]=_['keys'](_0x229b2a['query']);_0x456c52[_0xbf48('0x31')]=_[_0xbf48('0x32')](_0x456c52[_0xbf48('0x2e')],_0x456c52['query']);_0x1e9413[_0xbf48('0x33')]=_[_0xbf48('0x32')](_0x456c52[_0xbf48('0x2e')],qs[_0xbf48('0x34')](_0x229b2a[_0xbf48('0x2f')][_0xbf48('0x34')]));_0x1e9413[_0xbf48('0x33')]=_0x1e9413['attributes']['length']?_0x1e9413[_0xbf48('0x33')]:_0x456c52[_0xbf48('0x2e')];_0x1e9413[_0xbf48('0x49')]=qs['sort'](_0x229b2a[_0xbf48('0x2f')][_0xbf48('0x37')]);_0x1e9413[_0xbf48('0x39')]=qs[_0xbf48('0x31')](_[_0xbf48('0x4a')](_0x229b2a['query'],_0x456c52['filters']));if(_0x229b2a[_0xbf48('0x2f')][_0xbf48('0x38')]){_0x1e9413[_0xbf48('0x39')]=_[_0xbf48('0x3a')](_0x1e9413[_0xbf48('0x39')],{'$or':_[_0xbf48('0x28')](_0x1e9413[_0xbf48('0x33')],function(_0x2c592d){var _0x10935f={};_0x10935f[_0x2c592d]={'$like':'%'+_0x229b2a[_0xbf48('0x2f')][_0xbf48('0x38')]+'%'};return _0x10935f;})});}_0x1e9413=_[_0xbf48('0x3a')]({},_0x1e9413,_0x229b2a['options']);return _0x4bc7d3[_0xbf48('0x4c')](_0x1e9413);}})['then'](function(_0x2d5942){if(_0x2d5942){_0x214acc=_0x2d5942[_0xbf48('0x41')];if(!_0x229b2a[_0xbf48('0x2f')]['hasOwnProperty'](_0xbf48('0x36'))){_0x1e9413[_0xbf48('0x18')]=qs[_0xbf48('0x18')](_0x229b2a[_0xbf48('0x2f')]['limit']);_0x1e9413['offset']=qs[_0xbf48('0x1a')](_0x229b2a['query']['offset']);}return _0x4bc7d3[_0xbf48('0x4c')](_0x1e9413);}})['then'](function(_0x1864ad){if(_0x1864ad){return _0x1864ad?{'count':_0x214acc,'rows':_0x1864ad}:null;}})[_0xbf48('0x21')](respondWithResult(_0x1d06d8,null))[_0xbf48('0x3e')](handleError(_0x1d06d8,null));};exports[_0xbf48('0x4d')]=function(_0x3ac1de,_0x51f9ec,_0x13bca5){var _0x5b4b36={};var _0x2e8454={};var _0x4462f3;var _0x442dd5;return db[_0xbf48('0x29')][_0xbf48('0x47')]({'where':{'id':_0x3ac1de['params']['id']}})['then'](handleEntityNotFound(_0x51f9ec,null))[_0xbf48('0x21')](function(_0x546408){if(_0x546408){_0x4462f3=_0x546408;_0x2e8454[_0xbf48('0x2e')]=_[_0xbf48('0x30')](db[_0xbf48('0x4e')]['rawAttributes']);_0x2e8454[_0xbf48('0x2f')]=_[_0xbf48('0x30')](_0x3ac1de['query']);_0x2e8454[_0xbf48('0x31')]=_[_0xbf48('0x32')](_0x2e8454[_0xbf48('0x2e')],_0x2e8454[_0xbf48('0x2f')]);_0x5b4b36[_0xbf48('0x33')]=_[_0xbf48('0x32')](_0x2e8454[_0xbf48('0x2e')],qs[_0xbf48('0x34')](_0x3ac1de['query'][_0xbf48('0x34')]));_0x5b4b36[_0xbf48('0x33')]=_0x5b4b36[_0xbf48('0x33')]['length']?_0x5b4b36[_0xbf48('0x33')]:_0x2e8454[_0xbf48('0x2e')];_0x5b4b36[_0xbf48('0x49')]=qs['sort'](_0x3ac1de['query']['sort']);_0x5b4b36[_0xbf48('0x39')]=qs['filters'](_['pick'](_0x3ac1de['query'],_0x2e8454['filters']));if(_0x3ac1de[_0xbf48('0x2f')][_0xbf48('0x38')]){_0x5b4b36[_0xbf48('0x39')]=_[_0xbf48('0x3a')](_0x5b4b36[_0xbf48('0x39')],{'$or':_['map'](_0x5b4b36['attributes'],function(_0x50f92c){var _0x84c709={};_0x84c709[_0x50f92c]={'$like':'%'+_0x3ac1de[_0xbf48('0x2f')][_0xbf48('0x38')]+'%'};return _0x84c709;})});}_0x5b4b36=_['merge']({},_0x5b4b36,_0x3ac1de[_0xbf48('0x42')]);return _0x4462f3[_0xbf48('0x4d')](_0x5b4b36);}})['then'](function(_0x4eef52){if(_0x4eef52){_0x442dd5=_0x4eef52[_0xbf48('0x41')];if(!_0x3ac1de[_0xbf48('0x2f')][_0xbf48('0x35')](_0xbf48('0x36'))){_0x5b4b36[_0xbf48('0x18')]=qs[_0xbf48('0x18')](_0x3ac1de[_0xbf48('0x2f')][_0xbf48('0x18')]);_0x5b4b36[_0xbf48('0x1a')]=qs[_0xbf48('0x1a')](_0x3ac1de[_0xbf48('0x2f')][_0xbf48('0x1a')]);}return _0x4462f3['getTags'](_0x5b4b36);}})[_0xbf48('0x21')](function(_0x141065){if(_0x141065){return _0x141065?{'count':_0x442dd5,'rows':_0x141065}:null;}})[_0xbf48('0x21')](respondWithResult(_0x51f9ec,null))[_0xbf48('0x3e')](handleError(_0x51f9ec,null));};exports[_0xbf48('0x4f')]=function(_0x52e15e,_0x526c0b,_0x23afa8){if(_0x52e15e[_0xbf48('0x45')]['id']){delete _0x52e15e[_0xbf48('0x45')]['id'];}return db['FreshdeskConfiguration'][_0xbf48('0x47')]({'where':{'id':_0x52e15e['params']['id']}})[_0xbf48('0x21')](handleEntityNotFound(_0x526c0b,null))[_0xbf48('0x21')](function(_0xe67fc4){if(_0xe67fc4){return _0xe67fc4[_0xbf48('0x4f')](_0x52e15e['body']['ids']||[]);}return null;})['then'](respondWithResult(_0x526c0b,null))[_0xbf48('0x3e')](handleError(_0x526c0b,null));};
\ No newline at end of file
+var _0xb4e8=['lodash','crypto','jsforce','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','apply','then','destroy','stack','name','send','index','fieldName','type','key','model','map','keys','query','filters','attributes','fields','hasOwnProperty','nolimit','order','sort','merge','where','VIRTUAL','options','FreshdeskConfiguration','includeAll','include','findAll','rows','catch','show','params','rawAttributes','intersection','length','find','create','body','getFields','findOne','FreshdeskField','pick','filter','getSubjects','getDescriptions','getTags','Tag','setTags','ids','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xb4e8,0x13a));var _0x8b4e=function(_0x591414,_0x11f91d){_0x591414=_0x591414-0x0;var _0x3e6ea0=_0xb4e8[_0x591414];return _0x3e6ea0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8b4e('0x0'));var zipdir=require(_0x8b4e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8b4e('0x2'));var moment=require('moment');var BPromise=require(_0x8b4e('0x3'));var Mustache=require(_0x8b4e('0x4'));var util=require(_0x8b4e('0x5'));var path=require(_0x8b4e('0x6'));var sox=require('sox');var csv=require(_0x8b4e('0x7'));var ejs=require(_0x8b4e('0x8'));var fs=require('fs');var fs_extra=require(_0x8b4e('0x9'));var _=require(_0x8b4e('0xa'));var squel=require('squel');var crypto=require(_0x8b4e('0xb'));var jsforce=require(_0x8b4e('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x8b4e('0x7'));var querystring=require('querystring');var Papa=require(_0x8b4e('0xd'));var Redis=require(_0x8b4e('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x8b4e('0xf'));var as=require(_0x8b4e('0x10'));var hardwareService=require(_0x8b4e('0x11'));var logger=require('../../config/logger')(_0x8b4e('0x12'));var utils=require(_0x8b4e('0x13'));var config=require(_0x8b4e('0x14'));var licenseUtil=require(_0x8b4e('0x15'));var db=require(_0x8b4e('0x16'))['db'];function respondWithStatusCode(_0x304940,_0x256119){_0x256119=_0x256119||0xcc;return function(_0x4da13e){if(_0x4da13e){return _0x304940[_0x8b4e('0x17')](_0x256119);}return _0x304940[_0x8b4e('0x18')](_0x256119)[_0x8b4e('0x19')]();};}function respondWithResult(_0x20a00b,_0xcf1f8b){_0xcf1f8b=_0xcf1f8b||0xc8;return function(_0x35231b){if(_0x35231b){return _0x20a00b['status'](_0xcf1f8b)[_0x8b4e('0x1a')](_0x35231b);}};}function respondWithFilteredResult(_0x225bd8,_0x1b62c4){return function(_0x439979){if(_0x439979){var _0x20c258=typeof _0x1b62c4[_0x8b4e('0x1b')]===_0x8b4e('0x1c')&&typeof _0x1b62c4[_0x8b4e('0x1d')]===_0x8b4e('0x1c');var _0x530992=_0x439979[_0x8b4e('0x1e')];var _0x24a287=_0x20c258?0x0:_0x1b62c4['offset'];var _0x357c4f=_0x20c258?_0x439979['count']:_0x1b62c4[_0x8b4e('0x1b')]+_0x1b62c4[_0x8b4e('0x1d')];var _0x4df435;if(_0x357c4f>=_0x530992){_0x357c4f=_0x530992;_0x4df435=0xc8;}else{_0x4df435=0xce;}_0x225bd8[_0x8b4e('0x18')](_0x4df435);return _0x225bd8['set']('Content-Range',_0x24a287+'-'+_0x357c4f+'/'+_0x530992)[_0x8b4e('0x1a')](_0x439979);}return null;};}function patchUpdates(_0x5a35ec){return function(_0x3ab095){try{jsonpatch[_0x8b4e('0x1f')](_0x3ab095,_0x5a35ec,!![]);}catch(_0x1709ed){return BPromise['reject'](_0x1709ed);}return _0x3ab095['save']();};}function saveUpdates(_0x1cdb16,_0x5d11b9){return function(_0x42068f){if(_0x42068f){return _0x42068f['update'](_0x1cdb16)[_0x8b4e('0x20')](function(_0x28f03d){return _0x28f03d;});}return null;};}function removeEntity(_0x407f78,_0x45caf7){return function(_0x578ee1){if(_0x578ee1){return _0x578ee1[_0x8b4e('0x21')]()[_0x8b4e('0x20')](function(){_0x407f78[_0x8b4e('0x18')](0xcc)[_0x8b4e('0x19')]();});}};}function handleEntityNotFound(_0x425aeb,_0x565ae0){return function(_0x5160ed){if(!_0x5160ed){_0x425aeb[_0x8b4e('0x17')](0x194);}return _0x5160ed;};}function handleError(_0x3f7fa4,_0x6dc92c){_0x6dc92c=_0x6dc92c||0x1f4;return function(_0xa1edec){logger['error'](_0xa1edec[_0x8b4e('0x22')]);if(_0xa1edec['name']){delete _0xa1edec[_0x8b4e('0x23')];}_0x3f7fa4['status'](_0x6dc92c)[_0x8b4e('0x24')](_0xa1edec);};}exports[_0x8b4e('0x25')]=function(_0x468c50,_0x1c31a3){var _0x7c8647={},_0x1a49f1={},_0x3b86bf={'count':0x0,'rows':[]};var _0x5d9c9d=_['map'](db['FreshdeskConfiguration']['rawAttributes'],function(_0x324821){return{'name':_0x324821[_0x8b4e('0x26')],'type':_0x324821[_0x8b4e('0x27')][_0x8b4e('0x28')]};});_0x1a49f1[_0x8b4e('0x29')]=_[_0x8b4e('0x2a')](_0x5d9c9d,_0x8b4e('0x23'));_0x1a49f1['query']=_[_0x8b4e('0x2b')](_0x468c50[_0x8b4e('0x2c')]);_0x1a49f1[_0x8b4e('0x2d')]=_['intersection'](_0x1a49f1[_0x8b4e('0x29')],_0x1a49f1[_0x8b4e('0x2c')]);_0x7c8647[_0x8b4e('0x2e')]=_['intersection'](_0x1a49f1['model'],qs[_0x8b4e('0x2f')](_0x468c50['query'][_0x8b4e('0x2f')]));_0x7c8647[_0x8b4e('0x2e')]=_0x7c8647[_0x8b4e('0x2e')]['length']?_0x7c8647[_0x8b4e('0x2e')]:_0x1a49f1['model'];if(!_0x468c50[_0x8b4e('0x2c')][_0x8b4e('0x30')](_0x8b4e('0x31'))){_0x7c8647[_0x8b4e('0x1d')]=qs['limit'](_0x468c50[_0x8b4e('0x2c')][_0x8b4e('0x1d')]);_0x7c8647[_0x8b4e('0x1b')]=qs['offset'](_0x468c50[_0x8b4e('0x2c')]['offset']);}_0x7c8647[_0x8b4e('0x32')]=qs[_0x8b4e('0x33')](_0x468c50[_0x8b4e('0x2c')][_0x8b4e('0x33')]);_0x7c8647['where']=qs[_0x8b4e('0x2d')](_['pick'](_0x468c50[_0x8b4e('0x2c')],_0x1a49f1[_0x8b4e('0x2d')]),_0x5d9c9d);if(_0x468c50[_0x8b4e('0x2c')]['filter']){_0x7c8647['where']=_[_0x8b4e('0x34')](_0x7c8647[_0x8b4e('0x35')],{'$or':_[_0x8b4e('0x2a')](_0x5d9c9d,function(_0x53d7c2){if(_0x53d7c2[_0x8b4e('0x27')]!==_0x8b4e('0x36')){var _0x2a426d={};_0x2a426d[_0x53d7c2['name']]={'$like':'%'+_0x468c50['query']['filter']+'%'};return _0x2a426d;}})});}_0x7c8647=_[_0x8b4e('0x34')]({},_0x7c8647,_0x468c50[_0x8b4e('0x37')]);var _0x374a74={'where':_0x7c8647[_0x8b4e('0x35')]};return db[_0x8b4e('0x38')][_0x8b4e('0x1e')](_0x374a74)[_0x8b4e('0x20')](function(_0x12a4f7){_0x3b86bf[_0x8b4e('0x1e')]=_0x12a4f7;if(_0x468c50['query'][_0x8b4e('0x39')]){_0x7c8647[_0x8b4e('0x3a')]=[{'all':!![]}];}return db[_0x8b4e('0x38')][_0x8b4e('0x3b')](_0x7c8647);})['then'](function(_0x410faf){_0x3b86bf[_0x8b4e('0x3c')]=_0x410faf;return _0x3b86bf;})[_0x8b4e('0x20')](respondWithFilteredResult(_0x1c31a3,_0x7c8647))[_0x8b4e('0x3d')](handleError(_0x1c31a3,null));};exports[_0x8b4e('0x3e')]=function(_0x13f521,_0x4c559c){var _0x3dd236={'raw':![],'where':{'id':_0x13f521[_0x8b4e('0x3f')]['id']}},_0x270078={};_0x270078[_0x8b4e('0x29')]=_[_0x8b4e('0x2b')](db[_0x8b4e('0x38')][_0x8b4e('0x40')]);_0x270078[_0x8b4e('0x2c')]=_[_0x8b4e('0x2b')](_0x13f521[_0x8b4e('0x2c')]);_0x270078[_0x8b4e('0x2d')]=_['intersection'](_0x270078[_0x8b4e('0x29')],_0x270078['query']);_0x3dd236[_0x8b4e('0x2e')]=_[_0x8b4e('0x41')](_0x270078['model'],qs[_0x8b4e('0x2f')](_0x13f521[_0x8b4e('0x2c')][_0x8b4e('0x2f')]));_0x3dd236[_0x8b4e('0x2e')]=_0x3dd236['attributes'][_0x8b4e('0x42')]?_0x3dd236[_0x8b4e('0x2e')]:_0x270078[_0x8b4e('0x29')];if(_0x13f521[_0x8b4e('0x2c')][_0x8b4e('0x39')]){_0x3dd236[_0x8b4e('0x3a')]=[{'all':!![]}];}_0x3dd236=_[_0x8b4e('0x34')]({},_0x3dd236,_0x13f521[_0x8b4e('0x37')]);return db[_0x8b4e('0x38')][_0x8b4e('0x43')](_0x3dd236)[_0x8b4e('0x20')](handleEntityNotFound(_0x4c559c,null))[_0x8b4e('0x20')](respondWithResult(_0x4c559c,null))[_0x8b4e('0x3d')](handleError(_0x4c559c,null));};exports[_0x8b4e('0x44')]=function(_0x461bd7,_0x292d71){return db[_0x8b4e('0x38')][_0x8b4e('0x44')](_0x461bd7[_0x8b4e('0x45')],{})[_0x8b4e('0x20')](respondWithResult(_0x292d71,0xc9))[_0x8b4e('0x3d')](handleError(_0x292d71,null));};exports['update']=function(_0x1549a4,_0x19dd39){if(_0x1549a4['body']['id']){delete _0x1549a4['body']['id'];}return db[_0x8b4e('0x38')][_0x8b4e('0x43')]({'where':{'id':_0x1549a4[_0x8b4e('0x3f')]['id']}})[_0x8b4e('0x20')](handleEntityNotFound(_0x19dd39,null))['then'](saveUpdates(_0x1549a4[_0x8b4e('0x45')],null))[_0x8b4e('0x20')](respondWithResult(_0x19dd39,null))[_0x8b4e('0x3d')](handleError(_0x19dd39,null));};exports[_0x8b4e('0x21')]=function(_0x21e88b,_0x1fce44){return db[_0x8b4e('0x38')][_0x8b4e('0x43')]({'where':{'id':_0x21e88b[_0x8b4e('0x3f')]['id']}})[_0x8b4e('0x20')](handleEntityNotFound(_0x1fce44,null))['then'](removeEntity(_0x1fce44,null))[_0x8b4e('0x3d')](handleError(_0x1fce44,null));};exports[_0x8b4e('0x46')]=function(_0x57147f,_0x185241,_0x22f0a5){var _0x4812c4={};var _0x302123={};var _0x3d4ad3;var _0x429a22;return db['FreshdeskConfiguration'][_0x8b4e('0x47')]({'where':{'id':_0x57147f['params']['id']}})[_0x8b4e('0x20')](handleEntityNotFound(_0x185241,null))[_0x8b4e('0x20')](function(_0x471ced){if(_0x471ced){_0x3d4ad3=_0x471ced;_0x302123['model']=_[_0x8b4e('0x2b')](db[_0x8b4e('0x48')]['rawAttributes']);_0x302123[_0x8b4e('0x2c')]=_[_0x8b4e('0x2b')](_0x57147f[_0x8b4e('0x2c')]);_0x302123['filters']=_['intersection'](_0x302123[_0x8b4e('0x29')],_0x302123[_0x8b4e('0x2c')]);_0x4812c4[_0x8b4e('0x2e')]=_[_0x8b4e('0x41')](_0x302123[_0x8b4e('0x29')],qs[_0x8b4e('0x2f')](_0x57147f[_0x8b4e('0x2c')][_0x8b4e('0x2f')]));_0x4812c4[_0x8b4e('0x2e')]=_0x4812c4[_0x8b4e('0x2e')][_0x8b4e('0x42')]?_0x4812c4[_0x8b4e('0x2e')]:_0x302123['model'];_0x4812c4['order']=qs[_0x8b4e('0x33')](_0x57147f[_0x8b4e('0x2c')][_0x8b4e('0x33')]);_0x4812c4[_0x8b4e('0x35')]=qs[_0x8b4e('0x2d')](_[_0x8b4e('0x49')](_0x57147f[_0x8b4e('0x2c')],_0x302123[_0x8b4e('0x2d')]));if(_0x57147f['query'][_0x8b4e('0x4a')]){_0x4812c4['where']=_[_0x8b4e('0x34')](_0x4812c4[_0x8b4e('0x35')],{'$or':_[_0x8b4e('0x2a')](_0x4812c4['attributes'],function(_0x683fa1){var _0xe150d2={};_0xe150d2[_0x683fa1]={'$like':'%'+_0x57147f[_0x8b4e('0x2c')]['filter']+'%'};return _0xe150d2;})});}_0x4812c4=_[_0x8b4e('0x34')]({},_0x4812c4,_0x57147f[_0x8b4e('0x37')]);return _0x3d4ad3[_0x8b4e('0x46')](_0x4812c4);}})[_0x8b4e('0x20')](function(_0x24e3c3){if(_0x24e3c3){_0x429a22=_0x24e3c3['length'];if(!_0x57147f['query'][_0x8b4e('0x30')](_0x8b4e('0x31'))){_0x4812c4[_0x8b4e('0x1d')]=qs[_0x8b4e('0x1d')](_0x57147f[_0x8b4e('0x2c')]['limit']);_0x4812c4['offset']=qs[_0x8b4e('0x1b')](_0x57147f[_0x8b4e('0x2c')][_0x8b4e('0x1b')]);}return _0x3d4ad3[_0x8b4e('0x46')](_0x4812c4);}})[_0x8b4e('0x20')](function(_0x4e18a4){if(_0x4e18a4){return _0x4e18a4?{'count':_0x429a22,'rows':_0x4e18a4}:null;}})['then'](respondWithResult(_0x185241,null))['catch'](handleError(_0x185241,null));};exports[_0x8b4e('0x4b')]=function(_0x9f921,_0x5bb053,_0x401926){var _0x13c679={};var _0x3d7655={};var _0x553dfa;var _0x2745eb;return db[_0x8b4e('0x38')][_0x8b4e('0x47')]({'where':{'id':_0x9f921[_0x8b4e('0x3f')]['id']}})['then'](handleEntityNotFound(_0x5bb053,null))[_0x8b4e('0x20')](function(_0x13cedd){if(_0x13cedd){_0x553dfa=_0x13cedd;_0x3d7655[_0x8b4e('0x29')]=_[_0x8b4e('0x2b')](db[_0x8b4e('0x48')][_0x8b4e('0x40')]);_0x3d7655[_0x8b4e('0x2c')]=_[_0x8b4e('0x2b')](_0x9f921[_0x8b4e('0x2c')]);_0x3d7655[_0x8b4e('0x2d')]=_[_0x8b4e('0x41')](_0x3d7655['model'],_0x3d7655[_0x8b4e('0x2c')]);_0x13c679[_0x8b4e('0x2e')]=_['intersection'](_0x3d7655[_0x8b4e('0x29')],qs['fields'](_0x9f921[_0x8b4e('0x2c')][_0x8b4e('0x2f')]));_0x13c679[_0x8b4e('0x2e')]=_0x13c679[_0x8b4e('0x2e')]['length']?_0x13c679['attributes']:_0x3d7655[_0x8b4e('0x29')];_0x13c679['order']=qs[_0x8b4e('0x33')](_0x9f921[_0x8b4e('0x2c')]['sort']);_0x13c679['where']=qs[_0x8b4e('0x2d')](_[_0x8b4e('0x49')](_0x9f921[_0x8b4e('0x2c')],_0x3d7655[_0x8b4e('0x2d')]));if(_0x9f921[_0x8b4e('0x2c')][_0x8b4e('0x4a')]){_0x13c679['where']=_[_0x8b4e('0x34')](_0x13c679[_0x8b4e('0x35')],{'$or':_['map'](_0x13c679[_0x8b4e('0x2e')],function(_0x394aa0){var _0x41106e={};_0x41106e[_0x394aa0]={'$like':'%'+_0x9f921[_0x8b4e('0x2c')][_0x8b4e('0x4a')]+'%'};return _0x41106e;})});}_0x13c679=_[_0x8b4e('0x34')]({},_0x13c679,_0x9f921[_0x8b4e('0x37')]);return _0x553dfa[_0x8b4e('0x4b')](_0x13c679);}})[_0x8b4e('0x20')](function(_0x101932){if(_0x101932){_0x2745eb=_0x101932[_0x8b4e('0x42')];if(!_0x9f921[_0x8b4e('0x2c')][_0x8b4e('0x30')]('nolimit')){_0x13c679[_0x8b4e('0x1d')]=qs['limit'](_0x9f921[_0x8b4e('0x2c')][_0x8b4e('0x1d')]);_0x13c679[_0x8b4e('0x1b')]=qs[_0x8b4e('0x1b')](_0x9f921[_0x8b4e('0x2c')]['offset']);}return _0x553dfa[_0x8b4e('0x4b')](_0x13c679);}})['then'](function(_0x37e7c7){if(_0x37e7c7){return _0x37e7c7?{'count':_0x2745eb,'rows':_0x37e7c7}:null;}})[_0x8b4e('0x20')](respondWithResult(_0x5bb053,null))[_0x8b4e('0x3d')](handleError(_0x5bb053,null));};exports['getDescriptions']=function(_0x1c5245,_0x2aca1a,_0x469723){var _0x5db6bd={};var _0x29a8c2={};var _0x1e1f13;var _0x3bcbaa;return db['FreshdeskConfiguration'][_0x8b4e('0x47')]({'where':{'id':_0x1c5245['params']['id']}})[_0x8b4e('0x20')](handleEntityNotFound(_0x2aca1a,null))[_0x8b4e('0x20')](function(_0x4b3b8a){if(_0x4b3b8a){_0x1e1f13=_0x4b3b8a;_0x29a8c2[_0x8b4e('0x29')]=_['keys'](db['FreshdeskField'][_0x8b4e('0x40')]);_0x29a8c2['query']=_[_0x8b4e('0x2b')](_0x1c5245[_0x8b4e('0x2c')]);_0x29a8c2[_0x8b4e('0x2d')]=_['intersection'](_0x29a8c2[_0x8b4e('0x29')],_0x29a8c2[_0x8b4e('0x2c')]);_0x5db6bd['attributes']=_[_0x8b4e('0x41')](_0x29a8c2[_0x8b4e('0x29')],qs[_0x8b4e('0x2f')](_0x1c5245['query'][_0x8b4e('0x2f')]));_0x5db6bd[_0x8b4e('0x2e')]=_0x5db6bd[_0x8b4e('0x2e')][_0x8b4e('0x42')]?_0x5db6bd[_0x8b4e('0x2e')]:_0x29a8c2[_0x8b4e('0x29')];_0x5db6bd[_0x8b4e('0x32')]=qs['sort'](_0x1c5245['query'][_0x8b4e('0x33')]);_0x5db6bd[_0x8b4e('0x35')]=qs['filters'](_['pick'](_0x1c5245[_0x8b4e('0x2c')],_0x29a8c2[_0x8b4e('0x2d')]));if(_0x1c5245[_0x8b4e('0x2c')][_0x8b4e('0x4a')]){_0x5db6bd[_0x8b4e('0x35')]=_[_0x8b4e('0x34')](_0x5db6bd[_0x8b4e('0x35')],{'$or':_[_0x8b4e('0x2a')](_0x5db6bd[_0x8b4e('0x2e')],function(_0x4fd93b){var _0x56ef1f={};_0x56ef1f[_0x4fd93b]={'$like':'%'+_0x1c5245[_0x8b4e('0x2c')][_0x8b4e('0x4a')]+'%'};return _0x56ef1f;})});}_0x5db6bd=_[_0x8b4e('0x34')]({},_0x5db6bd,_0x1c5245['options']);return _0x1e1f13['getDescriptions'](_0x5db6bd);}})[_0x8b4e('0x20')](function(_0x1e39b1){if(_0x1e39b1){_0x3bcbaa=_0x1e39b1['length'];if(!_0x1c5245[_0x8b4e('0x2c')][_0x8b4e('0x30')]('nolimit')){_0x5db6bd['limit']=qs[_0x8b4e('0x1d')](_0x1c5245[_0x8b4e('0x2c')][_0x8b4e('0x1d')]);_0x5db6bd[_0x8b4e('0x1b')]=qs[_0x8b4e('0x1b')](_0x1c5245[_0x8b4e('0x2c')][_0x8b4e('0x1b')]);}return _0x1e1f13[_0x8b4e('0x4c')](_0x5db6bd);}})[_0x8b4e('0x20')](function(_0x127369){if(_0x127369){return _0x127369?{'count':_0x3bcbaa,'rows':_0x127369}:null;}})['then'](respondWithResult(_0x2aca1a,null))[_0x8b4e('0x3d')](handleError(_0x2aca1a,null));};exports[_0x8b4e('0x4d')]=function(_0x25e06a,_0x57ecb8,_0x568e3e){var _0x2dc069={};var _0x18c2b2={};var _0x2706c3;var _0x353edf;return db['FreshdeskConfiguration'][_0x8b4e('0x47')]({'where':{'id':_0x25e06a[_0x8b4e('0x3f')]['id']}})[_0x8b4e('0x20')](handleEntityNotFound(_0x57ecb8,null))['then'](function(_0x3b5f4f){if(_0x3b5f4f){_0x2706c3=_0x3b5f4f;_0x18c2b2[_0x8b4e('0x29')]=_[_0x8b4e('0x2b')](db[_0x8b4e('0x4e')][_0x8b4e('0x40')]);_0x18c2b2[_0x8b4e('0x2c')]=_['keys'](_0x25e06a[_0x8b4e('0x2c')]);_0x18c2b2[_0x8b4e('0x2d')]=_['intersection'](_0x18c2b2[_0x8b4e('0x29')],_0x18c2b2[_0x8b4e('0x2c')]);_0x2dc069[_0x8b4e('0x2e')]=_['intersection'](_0x18c2b2['model'],qs['fields'](_0x25e06a[_0x8b4e('0x2c')][_0x8b4e('0x2f')]));_0x2dc069[_0x8b4e('0x2e')]=_0x2dc069[_0x8b4e('0x2e')][_0x8b4e('0x42')]?_0x2dc069[_0x8b4e('0x2e')]:_0x18c2b2['model'];_0x2dc069[_0x8b4e('0x32')]=qs[_0x8b4e('0x33')](_0x25e06a[_0x8b4e('0x2c')]['sort']);_0x2dc069[_0x8b4e('0x35')]=qs[_0x8b4e('0x2d')](_[_0x8b4e('0x49')](_0x25e06a[_0x8b4e('0x2c')],_0x18c2b2[_0x8b4e('0x2d')]));if(_0x25e06a[_0x8b4e('0x2c')][_0x8b4e('0x4a')]){_0x2dc069[_0x8b4e('0x35')]=_[_0x8b4e('0x34')](_0x2dc069['where'],{'$or':_[_0x8b4e('0x2a')](_0x2dc069[_0x8b4e('0x2e')],function(_0x157b98){var _0x669b22={};_0x669b22[_0x157b98]={'$like':'%'+_0x25e06a[_0x8b4e('0x2c')][_0x8b4e('0x4a')]+'%'};return _0x669b22;})});}_0x2dc069=_['merge']({},_0x2dc069,_0x25e06a['options']);return _0x2706c3['getTags'](_0x2dc069);}})[_0x8b4e('0x20')](function(_0xde3093){if(_0xde3093){_0x353edf=_0xde3093[_0x8b4e('0x42')];if(!_0x25e06a[_0x8b4e('0x2c')][_0x8b4e('0x30')](_0x8b4e('0x31'))){_0x2dc069[_0x8b4e('0x1d')]=qs['limit'](_0x25e06a[_0x8b4e('0x2c')][_0x8b4e('0x1d')]);_0x2dc069[_0x8b4e('0x1b')]=qs[_0x8b4e('0x1b')](_0x25e06a['query'][_0x8b4e('0x1b')]);}return _0x2706c3[_0x8b4e('0x4d')](_0x2dc069);}})[_0x8b4e('0x20')](function(_0x4acad1){if(_0x4acad1){return _0x4acad1?{'count':_0x353edf,'rows':_0x4acad1}:null;}})['then'](respondWithResult(_0x57ecb8,null))['catch'](handleError(_0x57ecb8,null));};exports['setTags']=function(_0x77bd2b,_0x3622c3,_0x34edf2){if(_0x77bd2b[_0x8b4e('0x45')]['id']){delete _0x77bd2b['body']['id'];}return db['FreshdeskConfiguration'][_0x8b4e('0x47')]({'where':{'id':_0x77bd2b[_0x8b4e('0x3f')]['id']}})[_0x8b4e('0x20')](handleEntityNotFound(_0x3622c3,null))[_0x8b4e('0x20')](function(_0x1b5a4e){if(_0x1b5a4e){return _0x1b5a4e[_0x8b4e('0x4f')](_0x77bd2b[_0x8b4e('0x45')][_0x8b4e('0x50')]||[]);}return null;})[_0x8b4e('0x20')](respondWithResult(_0x3622c3,null))[_0x8b4e('0x3d')](handleError(_0x3622c3,null));};
\ No newline at end of file
index 27a104d..1024ade 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x717d=['rimraf','../../config/environment','exports','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x1b8e60,_0x21b885){var _0x363363=function(_0x5987c7){while(--_0x5987c7){_0x1b8e60['push'](_0x1b8e60['shift']());}};_0x363363(++_0x21b885);}(_0x717d,0x1ce));var _0xd717=function(_0x4b4b0e,_0x6c674){_0x4b4b0e=_0x4b4b0e-0x0;var _0x4c2d91=_0x717d[_0x4b4b0e];return _0x4c2d91;};'use strict';var _=require(_0xd717('0x0'));var util=require(_0xd717('0x1'));var logger=require(_0xd717('0x2'))(_0xd717('0x3'));var moment=require('moment');var BPromise=require(_0xd717('0x4'));var rp=require(_0xd717('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd717('0x6'));var config=require(_0xd717('0x7'));var attributes=require('./intFreshdeskConfiguration.attributes');module[_0xd717('0x8')]=function(_0x144b57,_0x20483f){return _0x144b57['define']('FreshdeskConfiguration',attributes,{'tableName':'int_freshdesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x523c=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshdeskConfiguration.attributes','exports','define','int_freshdesk_configurations','lodash','../../config/logger'];(function(_0x12d6c2,_0x409bc8){var _0x1c9825=function(_0x569f66){while(--_0x569f66){_0x12d6c2['push'](_0x12d6c2['shift']());}};_0x1c9825(++_0x409bc8);}(_0x523c,0x1b8));var _0xc523=function(_0x26774d,_0x41b4d8){_0x26774d=_0x26774d-0x0;var _0x2bedef=_0x523c[_0x26774d];return _0x2bedef;};'use strict';var _=require(_0xc523('0x0'));var util=require('util');var logger=require(_0xc523('0x1'))(_0xc523('0x2'));var moment=require(_0xc523('0x3'));var BPromise=require(_0xc523('0x4'));var rp=require(_0xc523('0x5'));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[_0xc523('0xa')]=function(_0x4ccf2c,_0x17f4f7){return _0x4ccf2c[_0xc523('0xb')]('FreshdeskConfiguration',attributes,{'tableName':_0xc523('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 785ba27..285da9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf85a=['ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring'];(function(_0x2f64f3,_0x378ea8){var _0x56cc2e=function(_0x40c52a){while(--_0x40c52a){_0x2f64f3['push'](_0x2f64f3['shift']());}};_0x56cc2e(++_0x378ea8);}(_0xf85a,0x164));var _0xaf85=function(_0x3fcbd9,_0xc664d3){_0x3fcbd9=_0x3fcbd9-0x0;var _0x5e5a24=_0xf85a[_0x3fcbd9];return _0x5e5a24;};'use strict';var _=require(_0xaf85('0x0'));var util=require(_0xaf85('0x1'));var moment=require('moment');var BPromise=require(_0xaf85('0x2'));var rs=require(_0xaf85('0x3'));var fs=require('fs');var Redis=require(_0xaf85('0x4'));var db=require(_0xaf85('0x5'))['db'];var utils=require(_0xaf85('0x6'));var logger=require('../../config/logger')(_0xaf85('0x7'));var config=require(_0xaf85('0x8'));var jayson=require(_0xaf85('0x9'));var client=jayson[_0xaf85('0xa')][_0xaf85('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x49bd33,_0x5989c9,_0x2a1d2f){return new BPromise(function(_0x447ed4,_0x22cba4){return client[_0xaf85('0xc')](_0x49bd33,_0x2a1d2f)[_0xaf85('0xd')](function(_0x1a84ba){logger[_0xaf85('0xe')](_0xaf85('0xf'),_0x5989c9,_0xaf85('0x10'));logger[_0xaf85('0x11')]('FreshdeskConfiguration,\x20%s,\x20%s,\x20%s',_0x5989c9,_0xaf85('0x10'),JSON[_0xaf85('0x12')](_0x1a84ba));if(_0x1a84ba[_0xaf85('0x13')]){if(_0x1a84ba[_0xaf85('0x13')][_0xaf85('0x14')]===0x1f4){logger[_0xaf85('0x13')](_0xaf85('0xf'),_0x5989c9,_0x1a84ba['error'][_0xaf85('0x15')]);return _0x22cba4(_0x1a84ba[_0xaf85('0x13')]['message']);}logger['error']('FreshdeskConfiguration,\x20%s,\x20%s',_0x5989c9,_0x1a84ba[_0xaf85('0x13')]['message']);return _0x447ed4(_0x1a84ba['error'][_0xaf85('0x15')]);}else{logger['info']('FreshdeskConfiguration,\x20%s,\x20%s',_0x5989c9,'request\x20sent');_0x447ed4(_0x1a84ba[_0xaf85('0x16')]['message']);}})[_0xaf85('0x17')](function(_0x35da43){logger[_0xaf85('0x13')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x5989c9,_0x35da43);_0x22cba4(_0x35da43);});});}
\ No newline at end of file
+var _0xf84f=['FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','FreshdeskConfiguration,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug'];(function(_0x38413b,_0x134a69){var _0x24ccea=function(_0x495a58){while(--_0x495a58){_0x38413b['push'](_0x38413b['shift']());}};_0x24ccea(++_0x134a69);}(_0xf84f,0x127));var _0xff84=function(_0x1b8f47,_0x39fd81){_0x1b8f47=_0x1b8f47-0x0;var _0x7c0a43=_0xf84f[_0x1b8f47];return _0x7c0a43;};'use strict';var _=require(_0xff84('0x0'));var util=require(_0xff84('0x1'));var moment=require(_0xff84('0x2'));var BPromise=require(_0xff84('0x3'));var rs=require(_0xff84('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xff84('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xff84('0x6'))(_0xff84('0x7'));var config=require(_0xff84('0x8'));var jayson=require(_0xff84('0x9'));var client=jayson[_0xff84('0xa')][_0xff84('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2a3466,_0x3d5bde,_0x2e1f45){return new BPromise(function(_0x312189,_0x28647c){return client[_0xff84('0xc')](_0x2a3466,_0x2e1f45)[_0xff84('0xd')](function(_0x5d634d){logger[_0xff84('0xe')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x3d5bde,_0xff84('0xf'));logger[_0xff84('0x10')](_0xff84('0x11'),_0x3d5bde,'request\x20sent',JSON[_0xff84('0x12')](_0x5d634d));if(_0x5d634d[_0xff84('0x13')]){if(_0x5d634d[_0xff84('0x13')]['code']===0x1f4){logger[_0xff84('0x13')](_0xff84('0x14'),_0x3d5bde,_0x5d634d[_0xff84('0x13')][_0xff84('0x15')]);return _0x28647c(_0x5d634d[_0xff84('0x13')][_0xff84('0x15')]);}logger['error']('FreshdeskConfiguration,\x20%s,\x20%s',_0x3d5bde,_0x5d634d['error'][_0xff84('0x15')]);return _0x312189(_0x5d634d[_0xff84('0x13')][_0xff84('0x15')]);}else{logger[_0xff84('0xe')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x3d5bde,'request\x20sent');_0x312189(_0x5d634d[_0xff84('0x16')][_0xff84('0x15')]);}})[_0xff84('0x17')](function(_0x2f78dc){logger['error']('FreshdeskConfiguration,\x20%s,\x20%s',_0x3d5bde,_0x2f78dc);_0x28647c(_0x2f78dc);});});}
\ No newline at end of file
index b1f923c..bca51a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcce=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','create','put','/:id','update','delete','exports','Router'];(function(_0x126767,_0x2cf58e){var _0x2dcc66=function(_0x3f16a3){while(--_0x3f16a3){_0x126767['push'](_0x126767['shift']());}};_0x2dcc66(++_0x2cf58e);}(_0xdcce,0x1a3));var _0xedcc=function(_0x56e559,_0x468f6b){_0x56e559=_0x56e559-0x0;var _0x598841=_0xdcce[_0x56e559];return _0x598841;};'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[_0xedcc('0x0')]();var fs_extra=require(_0xedcc('0x1'));var auth=require(_0xedcc('0x2'));var interaction=require(_0xedcc('0x3'));var config=require(_0xedcc('0x4'));var controller=require('./intFreshdeskField.controller');router[_0xedcc('0x5')]('/',auth[_0xedcc('0x6')](),controller[_0xedcc('0x7')]);router[_0xedcc('0x5')]('/:id',auth[_0xedcc('0x6')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0xedcc('0x8')]);router[_0xedcc('0x9')](_0xedcc('0xa'),auth[_0xedcc('0x6')](),controller[_0xedcc('0xb')]);router[_0xedcc('0xc')](_0xedcc('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0xedcc('0xd')]=router;
\ No newline at end of file
+var _0x3fb7=['put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskField.controller','index','get','/:id','isAuthenticated','show','create'];(function(_0x50de6d,_0xf6c1e){var _0x5c6eb1=function(_0x1048ba){while(--_0x1048ba){_0x50de6d['push'](_0x50de6d['shift']());}};_0x5c6eb1(++_0xf6c1e);}(_0x3fb7,0x1d3));var _0x73fb=function(_0x5c7cf9,_0x48bc0f){_0x5c7cf9=_0x5c7cf9-0x0;var _0x2497d7=_0x3fb7[_0x5c7cf9];return _0x2497d7;};'use strict';var multer=require(_0x73fb('0x0'));var util=require(_0x73fb('0x1'));var path=require(_0x73fb('0x2'));var timeout=require(_0x73fb('0x3'));var express=require('express');var router=express[_0x73fb('0x4')]();var fs_extra=require(_0x73fb('0x5'));var auth=require(_0x73fb('0x6'));var interaction=require(_0x73fb('0x7'));var config=require(_0x73fb('0x8'));var controller=require(_0x73fb('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x73fb('0xa')]);router[_0x73fb('0xb')](_0x73fb('0xc'),auth[_0x73fb('0xd')](),controller[_0x73fb('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0x73fb('0xf')]);router[_0x73fb('0x10')](_0x73fb('0xc'),auth[_0x73fb('0xd')](),controller[_0x73fb('0x11')]);router[_0x73fb('0x12')]('/:id',auth[_0x73fb('0xd')](),controller[_0x73fb('0x13')]);module[_0x73fb('0x14')]=router;
\ No newline at end of file
index 2bf2a8a..e92966c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3983=['exports','ENUM','variable','customVariable','keyValue','picklist','STRING','string','sequelize'];(function(_0x368fb9,_0x1a9895){var _0x4892fb=function(_0x28d735){while(--_0x28d735){_0x368fb9['push'](_0x368fb9['shift']());}};_0x4892fb(++_0x1a9895);}(_0x3983,0x170));var _0x3398=function(_0x53892b,_0x36b6b1){_0x53892b=_0x53892b-0x0;var _0x216eb1=_0x3983[_0x53892b];return _0x216eb1;};'use strict';var Sequelize=require(_0x3398('0x0'));module[_0x3398('0x1')]={'type':{'type':Sequelize[_0x3398('0x2')]('string',_0x3398('0x3'),_0x3398('0x4'),_0x3398('0x5'),_0x3398('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0x3398('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x3398('0x2')](_0x3398('0x8'),_0x3398('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0x3398('0x7')]},'idField':{'type':Sequelize[_0x3398('0x7')]},'nameField':{'type':Sequelize[_0x3398('0x7')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x3398('0x7')]}};
\ No newline at end of file
+var _0xd9b0=['ENUM','string','variable','customVariable','keyValue','picklist','STRING','sequelize','exports'];(function(_0x412b2a,_0x11fb8a){var _0x5872e3=function(_0x202191){while(--_0x202191){_0x412b2a['push'](_0x412b2a['shift']());}};_0x5872e3(++_0x11fb8a);}(_0xd9b0,0x154));var _0x0d9b=function(_0x4d9485,_0x4f47c9){_0x4d9485=_0x4d9485-0x0;var _0x2f08dd=_0xd9b0[_0x4d9485];return _0x2f08dd;};'use strict';var Sequelize=require(_0x0d9b('0x0'));module[_0x0d9b('0x1')]={'type':{'type':Sequelize[_0x0d9b('0x2')](_0x0d9b('0x3'),_0x0d9b('0x4'),_0x0d9b('0x5'),_0x0d9b('0x6'),_0x0d9b('0x7')),'defaultValue':_0x0d9b('0x3')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x0d9b('0x8')]},'keyType':{'type':Sequelize[_0x0d9b('0x2')](_0x0d9b('0x3'),_0x0d9b('0x4'),_0x0d9b('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x0d9b('0x8')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x0d9b('0x8')]}};
\ No newline at end of file
index 0cdd257..ff01506 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe130=['includeAll','include','findAll','show','params','keys','length','find','catch','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','update','destroy','then','error','stack','name','send','map','FreshdeskField','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options'];(function(_0x132d12,_0x2c9799){var _0x1c3163=function(_0x7d9136){while(--_0x7d9136){_0x132d12['push'](_0x132d12['shift']());}};_0x1c3163(++_0x2c9799);}(_0xe130,0x127));var _0x0e13=function(_0x39e832,_0x1c18b5){_0x39e832=_0x39e832-0x0;var _0xe7b968=_0xe130[_0x39e832];return _0xe7b968;};'use strict';var emlformat=require(_0x0e13('0x0'));var rimraf=require(_0x0e13('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0e13('0x2'));var rp=require(_0x0e13('0x3'));var moment=require(_0x0e13('0x4'));var BPromise=require(_0x0e13('0x5'));var Mustache=require(_0x0e13('0x6'));var util=require('util');var path=require(_0x0e13('0x7'));var sox=require(_0x0e13('0x8'));var csv=require(_0x0e13('0x9'));var ejs=require(_0x0e13('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0e13('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0e13('0xc'));var toCsv=require(_0x0e13('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x0e13('0xd'));var authService=require(_0x0e13('0xe'));var qs=require(_0x0e13('0xf'));var as=require(_0x0e13('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x0e13('0x11'));var utils=require(_0x0e13('0x12'));var config=require(_0x0e13('0x13'));var licenseUtil=require(_0x0e13('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1b4391,_0x4d9ea0){_0x4d9ea0=_0x4d9ea0||0xcc;return function(_0x2ef77e){if(_0x2ef77e){return _0x1b4391[_0x0e13('0x15')](_0x4d9ea0);}return _0x1b4391[_0x0e13('0x16')](_0x4d9ea0)[_0x0e13('0x17')]();};}function respondWithResult(_0x2f0d82,_0x1ec6ad){_0x1ec6ad=_0x1ec6ad||0xc8;return function(_0x27c3cf){if(_0x27c3cf){return _0x2f0d82[_0x0e13('0x16')](_0x1ec6ad)[_0x0e13('0x18')](_0x27c3cf);}};}function respondWithFilteredResult(_0x530f82,_0x302763){return function(_0xbc1617){if(_0xbc1617){var _0x2057fe=typeof _0x302763[_0x0e13('0x19')]===_0x0e13('0x1a')&&typeof _0x302763[_0x0e13('0x1b')]==='undefined';var _0x11ec50=_0xbc1617[_0x0e13('0x1c')];var _0x510a2b=_0x2057fe?0x0:_0x302763['offset'];var _0x3b85fd=_0x2057fe?_0xbc1617['count']:_0x302763[_0x0e13('0x19')]+_0x302763['limit'];var _0x294aea;if(_0x3b85fd>=_0x11ec50){_0x3b85fd=_0x11ec50;_0x294aea=0xc8;}else{_0x294aea=0xce;}_0x530f82[_0x0e13('0x16')](_0x294aea);return _0x530f82[_0x0e13('0x1d')](_0x0e13('0x1e'),_0x510a2b+'-'+_0x3b85fd+'/'+_0x11ec50)[_0x0e13('0x18')](_0xbc1617);}return null;};}function patchUpdates(_0x5ef062){return function(_0x5cfba8){try{jsonpatch['apply'](_0x5cfba8,_0x5ef062,!![]);}catch(_0x2dddef){return BPromise[_0x0e13('0x1f')](_0x2dddef);}return _0x5cfba8['save']();};}function saveUpdates(_0x515222,_0x295eb0){return function(_0x296ed3){if(_0x296ed3){return _0x296ed3[_0x0e13('0x20')](_0x515222)['then'](function(_0x400e87){return _0x400e87;});}return null;};}function removeEntity(_0x70c3db,_0x22cc15){return function(_0x20303b){if(_0x20303b){return _0x20303b[_0x0e13('0x21')]()[_0x0e13('0x22')](function(){_0x70c3db[_0x0e13('0x16')](0xcc)[_0x0e13('0x17')]();});}};}function handleEntityNotFound(_0x3d6abf,_0x260bf7){return function(_0x9621e2){if(!_0x9621e2){_0x3d6abf[_0x0e13('0x15')](0x194);}return _0x9621e2;};}function handleError(_0x230684,_0x45edf7){_0x45edf7=_0x45edf7||0x1f4;return function(_0xfd19ed){logger[_0x0e13('0x23')](_0xfd19ed[_0x0e13('0x24')]);if(_0xfd19ed['name']){delete _0xfd19ed[_0x0e13('0x25')];}_0x230684[_0x0e13('0x16')](_0x45edf7)[_0x0e13('0x26')](_0xfd19ed);};}exports['index']=function(_0x2182ae,_0x1deb3b){var _0xa38940={},_0x4606de={},_0x5d41c3={'count':0x0,'rows':[]};var _0xe9151f=_[_0x0e13('0x27')](db[_0x0e13('0x28')][_0x0e13('0x29')],function(_0x2e65e2){return{'name':_0x2e65e2[_0x0e13('0x2a')],'type':_0x2e65e2[_0x0e13('0x2b')][_0x0e13('0x2c')]};});_0x4606de['model']=_[_0x0e13('0x27')](_0xe9151f,_0x0e13('0x25'));_0x4606de[_0x0e13('0x2d')]=_['keys'](_0x2182ae[_0x0e13('0x2d')]);_0x4606de[_0x0e13('0x2e')]=_[_0x0e13('0x2f')](_0x4606de[_0x0e13('0x30')],_0x4606de[_0x0e13('0x2d')]);_0xa38940[_0x0e13('0x31')]=_[_0x0e13('0x2f')](_0x4606de[_0x0e13('0x30')],qs[_0x0e13('0x32')](_0x2182ae['query'][_0x0e13('0x32')]));_0xa38940[_0x0e13('0x31')]=_0xa38940[_0x0e13('0x31')]['length']?_0xa38940[_0x0e13('0x31')]:_0x4606de['model'];if(!_0x2182ae[_0x0e13('0x2d')][_0x0e13('0x33')](_0x0e13('0x34'))){_0xa38940[_0x0e13('0x1b')]=qs[_0x0e13('0x1b')](_0x2182ae[_0x0e13('0x2d')][_0x0e13('0x1b')]);_0xa38940['offset']=qs['offset'](_0x2182ae[_0x0e13('0x2d')][_0x0e13('0x19')]);}_0xa38940[_0x0e13('0x35')]=qs[_0x0e13('0x36')](_0x2182ae[_0x0e13('0x2d')][_0x0e13('0x36')]);_0xa38940[_0x0e13('0x37')]=qs['filters'](_[_0x0e13('0x38')](_0x2182ae[_0x0e13('0x2d')],_0x4606de[_0x0e13('0x2e')]),_0xe9151f);if(_0x2182ae[_0x0e13('0x2d')][_0x0e13('0x39')]){_0xa38940['where']=_[_0x0e13('0x3a')](_0xa38940[_0x0e13('0x37')],{'$or':_[_0x0e13('0x27')](_0xe9151f,function(_0x4b17f2){if(_0x4b17f2[_0x0e13('0x2b')]!=='VIRTUAL'){var _0x33af9a={};_0x33af9a[_0x4b17f2['name']]={'$like':'%'+_0x2182ae[_0x0e13('0x2d')]['filter']+'%'};return _0x33af9a;}})});}_0xa38940=_[_0x0e13('0x3a')]({},_0xa38940,_0x2182ae[_0x0e13('0x3b')]);var _0x3cdc25={'where':_0xa38940[_0x0e13('0x37')]};return db[_0x0e13('0x28')][_0x0e13('0x1c')](_0x3cdc25)['then'](function(_0x445949){_0x5d41c3[_0x0e13('0x1c')]=_0x445949;if(_0x2182ae[_0x0e13('0x2d')][_0x0e13('0x3c')]){_0xa38940[_0x0e13('0x3d')]=[{'all':!![]}];}return db[_0x0e13('0x28')][_0x0e13('0x3e')](_0xa38940);})['then'](function(_0x164720){_0x5d41c3['rows']=_0x164720;return _0x5d41c3;})['then'](respondWithFilteredResult(_0x1deb3b,_0xa38940))['catch'](handleError(_0x1deb3b,null));};exports[_0x0e13('0x3f')]=function(_0xe6bb04,_0x3060e1){var _0x14ab2a={'raw':!![],'where':{'id':_0xe6bb04[_0x0e13('0x40')]['id']}},_0x3ee751={};_0x3ee751[_0x0e13('0x30')]=_['keys'](db[_0x0e13('0x28')]['rawAttributes']);_0x3ee751['query']=_[_0x0e13('0x41')](_0xe6bb04[_0x0e13('0x2d')]);_0x3ee751[_0x0e13('0x2e')]=_[_0x0e13('0x2f')](_0x3ee751['model'],_0x3ee751[_0x0e13('0x2d')]);_0x14ab2a[_0x0e13('0x31')]=_['intersection'](_0x3ee751[_0x0e13('0x30')],qs[_0x0e13('0x32')](_0xe6bb04[_0x0e13('0x2d')][_0x0e13('0x32')]));_0x14ab2a[_0x0e13('0x31')]=_0x14ab2a[_0x0e13('0x31')][_0x0e13('0x42')]?_0x14ab2a[_0x0e13('0x31')]:_0x3ee751[_0x0e13('0x30')];if(_0xe6bb04[_0x0e13('0x2d')]['includeAll']){_0x14ab2a['include']=[{'all':!![]}];}_0x14ab2a=_[_0x0e13('0x3a')]({},_0x14ab2a,_0xe6bb04[_0x0e13('0x3b')]);return db[_0x0e13('0x28')][_0x0e13('0x43')](_0x14ab2a)[_0x0e13('0x22')](handleEntityNotFound(_0x3060e1,null))['then'](respondWithResult(_0x3060e1,null))[_0x0e13('0x44')](handleError(_0x3060e1,null));};exports[_0x0e13('0x45')]=function(_0x30b637,_0x548259){return db[_0x0e13('0x28')]['create'](_0x30b637[_0x0e13('0x46')],{})[_0x0e13('0x22')](respondWithResult(_0x548259,0xc9))[_0x0e13('0x44')](handleError(_0x548259,null));};exports[_0x0e13('0x20')]=function(_0x35249c,_0x47e5b8){if(_0x35249c[_0x0e13('0x46')]['id']){delete _0x35249c['body']['id'];}return db[_0x0e13('0x28')][_0x0e13('0x43')]({'where':{'id':_0x35249c['params']['id']}})[_0x0e13('0x22')](handleEntityNotFound(_0x47e5b8,null))[_0x0e13('0x22')](saveUpdates(_0x35249c[_0x0e13('0x46')],null))[_0x0e13('0x22')](respondWithResult(_0x47e5b8,null))['catch'](handleError(_0x47e5b8,null));};exports[_0x0e13('0x21')]=function(_0x359de5,_0x4d9afd){return db[_0x0e13('0x28')]['find']({'where':{'id':_0x359de5['params']['id']}})['then'](handleEntityNotFound(_0x4d9afd,null))[_0x0e13('0x22')](removeEntity(_0x4d9afd,null))['catch'](handleError(_0x4d9afd,null));};
\ No newline at end of file
+var _0x7794=['status','end','json','offset','undefined','count','limit','Content-Range','apply','save','update','then','destroy','error','stack','name','index','map','fieldName','type','key','model','query','keys','attributes','intersection','fields','length','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','FreshdeskField','includeAll','findAll','rows','show','rawAttributes','include','find','catch','create','body','params','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','fs-extra','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','../../mysqldb'];(function(_0x2d5155,_0x54a71d){var _0x18aab3=function(_0x5d12cf){while(--_0x5d12cf){_0x2d5155['push'](_0x2d5155['shift']());}};_0x18aab3(++_0x54a71d);}(_0x7794,0x7b));var _0x4779=function(_0x234a8a,_0x1f4b01){_0x234a8a=_0x234a8a-0x0;var _0x333eb8=_0x7794[_0x234a8a];return _0x333eb8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4779('0x0'));var zipdir=require(_0x4779('0x1'));var jsonpatch=require(_0x4779('0x2'));var rp=require(_0x4779('0x3'));var moment=require('moment');var BPromise=require(_0x4779('0x4'));var Mustache=require(_0x4779('0x5'));var util=require('util');var path=require(_0x4779('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4779('0x7'));var _=require(_0x4779('0x8'));var squel=require('squel');var crypto=require(_0x4779('0x9'));var jsforce=require(_0x4779('0xa'));var deskjs=require(_0x4779('0xb'));var toCsv=require(_0x4779('0xc'));var querystring=require(_0x4779('0xd'));var Papa=require(_0x4779('0xe'));var Redis=require(_0x4779('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x4779('0x10'));var as=require(_0x4779('0x11'));var hardwareService=require(_0x4779('0x12'));var logger=require(_0x4779('0x13'))(_0x4779('0x14'));var utils=require(_0x4779('0x15'));var config=require(_0x4779('0x16'));var licenseUtil=require(_0x4779('0x17'));var db=require(_0x4779('0x18'))['db'];function respondWithStatusCode(_0x13c989,_0x50e17e){_0x50e17e=_0x50e17e||0xcc;return function(_0x5b1219){if(_0x5b1219){return _0x13c989['sendStatus'](_0x50e17e);}return _0x13c989[_0x4779('0x19')](_0x50e17e)[_0x4779('0x1a')]();};}function respondWithResult(_0xb9a06f,_0xddf5cd){_0xddf5cd=_0xddf5cd||0xc8;return function(_0x4fe370){if(_0x4fe370){return _0xb9a06f[_0x4779('0x19')](_0xddf5cd)[_0x4779('0x1b')](_0x4fe370);}};}function respondWithFilteredResult(_0x4d71a0,_0x599deb){return function(_0x1dbbe1){if(_0x1dbbe1){var _0x2de2be=typeof _0x599deb[_0x4779('0x1c')]===_0x4779('0x1d')&&typeof _0x599deb['limit']==='undefined';var _0x445e0b=_0x1dbbe1[_0x4779('0x1e')];var _0x19fbb6=_0x2de2be?0x0:_0x599deb['offset'];var _0x3dbe70=_0x2de2be?_0x1dbbe1['count']:_0x599deb[_0x4779('0x1c')]+_0x599deb[_0x4779('0x1f')];var _0x478fa5;if(_0x3dbe70>=_0x445e0b){_0x3dbe70=_0x445e0b;_0x478fa5=0xc8;}else{_0x478fa5=0xce;}_0x4d71a0[_0x4779('0x19')](_0x478fa5);return _0x4d71a0['set'](_0x4779('0x20'),_0x19fbb6+'-'+_0x3dbe70+'/'+_0x445e0b)[_0x4779('0x1b')](_0x1dbbe1);}return null;};}function patchUpdates(_0x143ef6){return function(_0x298e25){try{jsonpatch[_0x4779('0x21')](_0x298e25,_0x143ef6,!![]);}catch(_0x1ce270){return BPromise['reject'](_0x1ce270);}return _0x298e25[_0x4779('0x22')]();};}function saveUpdates(_0x4f2158,_0x4ad246){return function(_0xd983f0){if(_0xd983f0){return _0xd983f0[_0x4779('0x23')](_0x4f2158)[_0x4779('0x24')](function(_0x2b7ab6){return _0x2b7ab6;});}return null;};}function removeEntity(_0x555cd6,_0x152887){return function(_0x29a39a){if(_0x29a39a){return _0x29a39a[_0x4779('0x25')]()['then'](function(){_0x555cd6[_0x4779('0x19')](0xcc)[_0x4779('0x1a')]();});}};}function handleEntityNotFound(_0x577b13,_0x1ce2d2){return function(_0x38af24){if(!_0x38af24){_0x577b13['sendStatus'](0x194);}return _0x38af24;};}function handleError(_0x20db7e,_0x277f55){_0x277f55=_0x277f55||0x1f4;return function(_0x211af1){logger[_0x4779('0x26')](_0x211af1[_0x4779('0x27')]);if(_0x211af1[_0x4779('0x28')]){delete _0x211af1[_0x4779('0x28')];}_0x20db7e[_0x4779('0x19')](_0x277f55)['send'](_0x211af1);};}exports[_0x4779('0x29')]=function(_0x1607a5,_0xb028f){var _0x28a261={},_0x8b4c42={},_0x40fb18={'count':0x0,'rows':[]};var _0x13ec28=_[_0x4779('0x2a')](db['FreshdeskField']['rawAttributes'],function(_0x179717){return{'name':_0x179717[_0x4779('0x2b')],'type':_0x179717[_0x4779('0x2c')][_0x4779('0x2d')]};});_0x8b4c42[_0x4779('0x2e')]=_['map'](_0x13ec28,_0x4779('0x28'));_0x8b4c42[_0x4779('0x2f')]=_[_0x4779('0x30')](_0x1607a5[_0x4779('0x2f')]);_0x8b4c42['filters']=_['intersection'](_0x8b4c42[_0x4779('0x2e')],_0x8b4c42['query']);_0x28a261[_0x4779('0x31')]=_[_0x4779('0x32')](_0x8b4c42[_0x4779('0x2e')],qs[_0x4779('0x33')](_0x1607a5[_0x4779('0x2f')][_0x4779('0x33')]));_0x28a261[_0x4779('0x31')]=_0x28a261[_0x4779('0x31')][_0x4779('0x34')]?_0x28a261[_0x4779('0x31')]:_0x8b4c42[_0x4779('0x2e')];if(!_0x1607a5[_0x4779('0x2f')]['hasOwnProperty']('nolimit')){_0x28a261[_0x4779('0x1f')]=qs['limit'](_0x1607a5[_0x4779('0x2f')]['limit']);_0x28a261[_0x4779('0x1c')]=qs[_0x4779('0x1c')](_0x1607a5[_0x4779('0x2f')][_0x4779('0x1c')]);}_0x28a261[_0x4779('0x35')]=qs['sort'](_0x1607a5['query'][_0x4779('0x36')]);_0x28a261[_0x4779('0x37')]=qs[_0x4779('0x38')](_[_0x4779('0x39')](_0x1607a5[_0x4779('0x2f')],_0x8b4c42[_0x4779('0x38')]),_0x13ec28);if(_0x1607a5[_0x4779('0x2f')][_0x4779('0x3a')]){_0x28a261[_0x4779('0x37')]=_[_0x4779('0x3b')](_0x28a261[_0x4779('0x37')],{'$or':_[_0x4779('0x2a')](_0x13ec28,function(_0x88603f){if(_0x88603f[_0x4779('0x2c')]!==_0x4779('0x3c')){var _0x1a2c16={};_0x1a2c16[_0x88603f[_0x4779('0x28')]]={'$like':'%'+_0x1607a5[_0x4779('0x2f')][_0x4779('0x3a')]+'%'};return _0x1a2c16;}})});}_0x28a261=_['merge']({},_0x28a261,_0x1607a5[_0x4779('0x3d')]);var _0x58ca36={'where':_0x28a261[_0x4779('0x37')]};return db[_0x4779('0x3e')][_0x4779('0x1e')](_0x58ca36)[_0x4779('0x24')](function(_0xc9873e){_0x40fb18[_0x4779('0x1e')]=_0xc9873e;if(_0x1607a5['query'][_0x4779('0x3f')]){_0x28a261['include']=[{'all':!![]}];}return db[_0x4779('0x3e')][_0x4779('0x40')](_0x28a261);})[_0x4779('0x24')](function(_0x3a3589){_0x40fb18[_0x4779('0x41')]=_0x3a3589;return _0x40fb18;})[_0x4779('0x24')](respondWithFilteredResult(_0xb028f,_0x28a261))['catch'](handleError(_0xb028f,null));};exports[_0x4779('0x42')]=function(_0x5cdc2b,_0x20abf7){var _0x3f1889={'raw':!![],'where':{'id':_0x5cdc2b['params']['id']}},_0x2e60ab={};_0x2e60ab[_0x4779('0x2e')]=_[_0x4779('0x30')](db[_0x4779('0x3e')][_0x4779('0x43')]);_0x2e60ab[_0x4779('0x2f')]=_[_0x4779('0x30')](_0x5cdc2b[_0x4779('0x2f')]);_0x2e60ab[_0x4779('0x38')]=_[_0x4779('0x32')](_0x2e60ab[_0x4779('0x2e')],_0x2e60ab[_0x4779('0x2f')]);_0x3f1889[_0x4779('0x31')]=_[_0x4779('0x32')](_0x2e60ab[_0x4779('0x2e')],qs[_0x4779('0x33')](_0x5cdc2b['query']['fields']));_0x3f1889[_0x4779('0x31')]=_0x3f1889[_0x4779('0x31')][_0x4779('0x34')]?_0x3f1889[_0x4779('0x31')]:_0x2e60ab[_0x4779('0x2e')];if(_0x5cdc2b[_0x4779('0x2f')][_0x4779('0x3f')]){_0x3f1889[_0x4779('0x44')]=[{'all':!![]}];}_0x3f1889=_['merge']({},_0x3f1889,_0x5cdc2b[_0x4779('0x3d')]);return db[_0x4779('0x3e')][_0x4779('0x45')](_0x3f1889)[_0x4779('0x24')](handleEntityNotFound(_0x20abf7,null))[_0x4779('0x24')](respondWithResult(_0x20abf7,null))[_0x4779('0x46')](handleError(_0x20abf7,null));};exports['create']=function(_0x7f419c,_0x39ecb5){return db[_0x4779('0x3e')][_0x4779('0x47')](_0x7f419c[_0x4779('0x48')],{})['then'](respondWithResult(_0x39ecb5,0xc9))[_0x4779('0x46')](handleError(_0x39ecb5,null));};exports[_0x4779('0x23')]=function(_0x3873d4,_0x4a1040){if(_0x3873d4[_0x4779('0x48')]['id']){delete _0x3873d4['body']['id'];}return db[_0x4779('0x3e')][_0x4779('0x45')]({'where':{'id':_0x3873d4[_0x4779('0x49')]['id']}})['then'](handleEntityNotFound(_0x4a1040,null))[_0x4779('0x24')](saveUpdates(_0x3873d4['body'],null))[_0x4779('0x24')](respondWithResult(_0x4a1040,null))[_0x4779('0x46')](handleError(_0x4a1040,null));};exports[_0x4779('0x25')]=function(_0x58e14e,_0x5dfdb7){return db['FreshdeskField'][_0x4779('0x45')]({'where':{'id':_0x58e14e[_0x4779('0x49')]['id']}})['then'](handleEntityNotFound(_0x5dfdb7,null))[_0x4779('0x24')](removeEntity(_0x5dfdb7,null))[_0x4779('0x46')](handleError(_0x5dfdb7,null));};
\ No newline at end of file
index 53b2a79..2ffd83e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ee1=['FreshdeskField','freshdesk_unique_index','FieldId','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','exports','define'];(function(_0x14ac9e,_0x443c98){var _0x455527=function(_0x43c0bc){while(--_0x43c0bc){_0x14ac9e['push'](_0x14ac9e['shift']());}};_0x455527(++_0x443c98);}(_0x7ee1,0xab));var _0x17ee=function(_0x57046e,_0x146098){_0x57046e=_0x57046e-0x0;var _0xef13ef=_0x7ee1[_0x57046e];return _0xef13ef;};'use strict';var _=require(_0x17ee('0x0'));var util=require('util');var logger=require(_0x17ee('0x1'))(_0x17ee('0x2'));var moment=require(_0x17ee('0x3'));var BPromise=require(_0x17ee('0x4'));var rp=require(_0x17ee('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x17ee('0x6'));var config=require('../../config/environment');var attributes=require('./intFreshdeskField.attributes');module[_0x17ee('0x7')]=function(_0x2e4db0,_0x2efefb){return _0x2e4db0[_0x17ee('0x8')](_0x17ee('0x9'),attributes,{'tableName':'int_freshdesk_fields','paranoid':![],'indexes':[{'name':_0x17ee('0xa'),'fields':['idField',_0x17ee('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x65d9=['./intFreshdeskField.attributes','int_freshdesk_fields','freshdesk_unique_index','idField','FieldId','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf'];(function(_0x47d7ec,_0x17f197){var _0x98674a=function(_0x4f7db3){while(--_0x4f7db3){_0x47d7ec['push'](_0x47d7ec['shift']());}};_0x98674a(++_0x17f197);}(_0x65d9,0x1bf));var _0x965d=function(_0x23d6cf,_0x4c8015){_0x23d6cf=_0x23d6cf-0x0;var _0xeb1057=_0x65d9[_0x23d6cf];return _0xeb1057;};'use strict';var _=require(_0x965d('0x0'));var util=require(_0x965d('0x1'));var logger=require(_0x965d('0x2'))('api');var moment=require(_0x965d('0x3'));var BPromise=require(_0x965d('0x4'));var rp=require(_0x965d('0x5'));var fs=require('fs');var path=require(_0x965d('0x6'));var rimraf=require(_0x965d('0x7'));var config=require('../../config/environment');var attributes=require(_0x965d('0x8'));module['exports']=function(_0x758c4d,_0x36fe2c){return _0x758c4d['define']('FreshdeskField',attributes,{'tableName':_0x965d('0x9'),'paranoid':![],'indexes':[{'name':_0x965d('0xa'),'fields':[_0x965d('0xb'),_0x965d('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 095c471..783380c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc719=['message','FreshdeskField,\x20%s,\x20%s','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','then','request\x20sent','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x426b1b,_0x3f07fd){var _0x329fc7=function(_0x237cb1){while(--_0x237cb1){_0x426b1b['push'](_0x426b1b['shift']());}};_0x329fc7(++_0x3f07fd);}(_0xc719,0x180));var _0x9c71=function(_0x349915,_0x124261){_0x349915=_0x349915-0x0;var _0x8be4f3=_0xc719[_0x349915];return _0x8be4f3;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x9c71('0x0'));var BPromise=require(_0x9c71('0x1'));var rs=require(_0x9c71('0x2'));var fs=require('fs');var Redis=require(_0x9c71('0x3'));var db=require(_0x9c71('0x4'))['db'];var utils=require(_0x9c71('0x5'));var logger=require(_0x9c71('0x6'))(_0x9c71('0x7'));var config=require('../../config/environment');var jayson=require(_0x9c71('0x8'));var client=jayson['client'][_0x9c71('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3686c9,_0x5ad214,_0x29a633){return new BPromise(function(_0x142eb8,_0x1aebc9){return client['request'](_0x3686c9,_0x29a633)[_0x9c71('0xa')](function(_0x59a08e){logger['info']('FreshdeskField,\x20%s,\x20%s',_0x5ad214,_0x9c71('0xb'));logger['debug'](_0x9c71('0xc'),_0x5ad214,_0x9c71('0xb'),JSON[_0x9c71('0xd')](_0x59a08e));if(_0x59a08e[_0x9c71('0xe')]){if(_0x59a08e[_0x9c71('0xe')][_0x9c71('0xf')]===0x1f4){logger[_0x9c71('0xe')]('FreshdeskField,\x20%s,\x20%s',_0x5ad214,_0x59a08e['error']['message']);return _0x1aebc9(_0x59a08e[_0x9c71('0xe')][_0x9c71('0x10')]);}logger[_0x9c71('0xe')](_0x9c71('0x11'),_0x5ad214,_0x59a08e[_0x9c71('0xe')]['message']);return _0x142eb8(_0x59a08e[_0x9c71('0xe')][_0x9c71('0x10')]);}else{logger['info'](_0x9c71('0x11'),_0x5ad214,_0x9c71('0xb'));_0x142eb8(_0x59a08e[_0x9c71('0x12')][_0x9c71('0x10')]);}})[_0x9c71('0x13')](function(_0x1ce309){logger[_0x9c71('0xe')]('FreshdeskField,\x20%s,\x20%s',_0x5ad214,_0x1ce309);_0x1aebc9(_0x1ce309);});});}
\ No newline at end of file
+var _0x8e2e=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','info','FreshdeskField,\x20%s,\x20%s','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util'];(function(_0x28e5f2,_0x54c4eb){var _0x50fdb1=function(_0x3ab402){while(--_0x3ab402){_0x28e5f2['push'](_0x28e5f2['shift']());}};_0x50fdb1(++_0x54c4eb);}(_0x8e2e,0xb6));var _0xe8e2=function(_0x37bed5,_0x4fcea4){_0x37bed5=_0x37bed5-0x0;var _0xfd86c3=_0x8e2e[_0x37bed5];return _0xfd86c3;};'use strict';var _=require(_0xe8e2('0x0'));var util=require(_0xe8e2('0x1'));var moment=require('moment');var BPromise=require(_0xe8e2('0x2'));var rs=require(_0xe8e2('0x3'));var fs=require('fs');var Redis=require(_0xe8e2('0x4'));var db=require(_0xe8e2('0x5'))['db'];var utils=require(_0xe8e2('0x6'));var logger=require('../../config/logger')(_0xe8e2('0x7'));var config=require(_0xe8e2('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xe8e2('0x9')][_0xe8e2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1bf221,_0x2c6e8d,_0x2851fe){return new BPromise(function(_0x1cf144,_0x34597d){return client[_0xe8e2('0xb')](_0x1bf221,_0x2851fe)[_0xe8e2('0xc')](function(_0x53db51){logger[_0xe8e2('0xd')](_0xe8e2('0xe'),_0x2c6e8d,'request\x20sent');logger[_0xe8e2('0xf')](_0xe8e2('0x10'),_0x2c6e8d,_0xe8e2('0x11'),JSON[_0xe8e2('0x12')](_0x53db51));if(_0x53db51['error']){if(_0x53db51[_0xe8e2('0x13')][_0xe8e2('0x14')]===0x1f4){logger['error'](_0xe8e2('0xe'),_0x2c6e8d,_0x53db51[_0xe8e2('0x13')]['message']);return _0x34597d(_0x53db51[_0xe8e2('0x13')][_0xe8e2('0x15')]);}logger[_0xe8e2('0x13')](_0xe8e2('0xe'),_0x2c6e8d,_0x53db51[_0xe8e2('0x13')]['message']);return _0x1cf144(_0x53db51['error'][_0xe8e2('0x15')]);}else{logger[_0xe8e2('0xd')](_0xe8e2('0xe'),_0x2c6e8d,'request\x20sent');_0x1cf144(_0x53db51['result'][_0xe8e2('0x15')]);}})[_0xe8e2('0x16')](function(_0x386101){logger['error'](_0xe8e2('0xe'),_0x2c6e8d,_0x386101);_0x34597d(_0x386101);});});}
\ No newline at end of file
index fb9bbd9..ca44bfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1e3=['get','isAuthenticated','index','/:id','show','/:id/configurations','post','create','update','destroy','exports','multer','util','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./intFreshsalesAccount.controller'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0xe1e3,0x1bb));var _0x3e1e=function(_0x546ac1,_0x299ca0){_0x546ac1=_0x546ac1-0x0;var _0x598e74=_0xe1e3[_0x546ac1];return _0x598e74;};'use strict';var multer=require(_0x3e1e('0x0'));var util=require(_0x3e1e('0x1'));var path=require('path');var timeout=require(_0x3e1e('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x3e1e('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x3e1e('0x4'));var config=require(_0x3e1e('0x5'));var controller=require(_0x3e1e('0x6'));router[_0x3e1e('0x7')]('/',auth[_0x3e1e('0x8')](),controller[_0x3e1e('0x9')]);router['get'](_0x3e1e('0xa'),auth[_0x3e1e('0x8')](),controller[_0x3e1e('0xb')]);router[_0x3e1e('0x7')](_0x3e1e('0xc'),auth[_0x3e1e('0x8')](),controller['getConfigurations']);router['get']('/:id/fields',auth[_0x3e1e('0x8')](),controller['getFields']);router[_0x3e1e('0xd')]('/',auth[_0x3e1e('0x8')](),controller[_0x3e1e('0xe')]);router['post'](_0x3e1e('0xc'),auth['isAuthenticated'](),controller['addConfiguration']);router['put']('/:id',auth['isAuthenticated'](),controller[_0x3e1e('0xf')]);router['delete']('/:id',auth[_0x3e1e('0x8')](),controller[_0x3e1e('0x10')]);module[_0x3e1e('0x11')]=router;
\ No newline at end of file
+var _0x6324=['isAuthenticated','index','show','getConfigurations','getFields','post','create','/:id/configurations','put','update','delete','/:id','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../config/environment','get'];(function(_0x4d3055,_0x280ae7){var _0x4722f6=function(_0x53fa64){while(--_0x53fa64){_0x4d3055['push'](_0x4d3055['shift']());}};_0x4722f6(++_0x280ae7);}(_0x6324,0x142));var _0x4632=function(_0x564e9f,_0x225a15){_0x564e9f=_0x564e9f-0x0;var _0x3a9f3e=_0x6324[_0x564e9f];return _0x3a9f3e;};'use strict';var multer=require(_0x4632('0x0'));var util=require(_0x4632('0x1'));var path=require(_0x4632('0x2'));var timeout=require(_0x4632('0x3'));var express=require('express');var router=express[_0x4632('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x4632('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x4632('0x6'));var controller=require('./intFreshsalesAccount.controller');router[_0x4632('0x7')]('/',auth[_0x4632('0x8')](),controller[_0x4632('0x9')]);router[_0x4632('0x7')]('/:id',auth[_0x4632('0x8')](),controller[_0x4632('0xa')]);router[_0x4632('0x7')]('/:id/configurations',auth[_0x4632('0x8')](),controller[_0x4632('0xb')]);router['get']('/:id/fields',auth[_0x4632('0x8')](),controller[_0x4632('0xc')]);router[_0x4632('0xd')]('/',auth[_0x4632('0x8')](),controller[_0x4632('0xe')]);router[_0x4632('0xd')](_0x4632('0xf'),auth[_0x4632('0x8')](),controller['addConfiguration']);router[_0x4632('0x10')]('/:id',auth[_0x4632('0x8')](),controller[_0x4632('0x11')]);router[_0x4632('0x12')](_0x4632('0x13'),auth['isAuthenticated'](),controller[_0x4632('0x14')]);module[_0x4632('0x15')]=router;
\ No newline at end of file
index d2fd4b9..a4c93a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf55=['exports','STRING','remoteUri','sequelize'];(function(_0x3f5fb2,_0x43a56a){var _0x23f52d=function(_0x1530ee){while(--_0x1530ee){_0x3f5fb2['push'](_0x3f5fb2['shift']());}};_0x23f52d(++_0x43a56a);}(_0xdf55,0x83));var _0x5df5=function(_0xb93836,_0x2e7941){_0xb93836=_0xb93836-0x0;var _0x2b3e5b=_0xdf55[_0xb93836];return _0x2b3e5b;};'use strict';var Sequelize=require(_0x5df5('0x0'));module[_0x5df5('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x5df5('0x2')]},'username':{'type':Sequelize[_0x5df5('0x2')],'unique':'username'},'apiKey':{'type':Sequelize[_0x5df5('0x2')]},'remoteUri':{'type':Sequelize[_0x5df5('0x2')],'unique':_0x5df5('0x3')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0xb016=['remoteUri','sequelize','exports','STRING'];(function(_0x4599b6,_0x40c254){var _0x2e014c=function(_0x3c4d90){while(--_0x3c4d90){_0x4599b6['push'](_0x4599b6['shift']());}};_0x2e014c(++_0x40c254);}(_0xb016,0x159));var _0x6b01=function(_0x567630,_0x5f3f62){_0x567630=_0x567630-0x0;var _0x1f602a=_0xb016[_0x567630];return _0x1f602a;};'use strict';var Sequelize=require(_0x6b01('0x0'));module[_0x6b01('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x6b01('0x2')],'unique':'username'},'apiKey':{'type':Sequelize[_0x6b01('0x2')]},'remoteUri':{'type':Sequelize[_0x6b01('0x2')],'unique':_0x6b01('0x3')},'serverUrl':{'type':Sequelize[_0x6b01('0x2')],'allowNull':![]}};
\ No newline at end of file
index c463abd..9018b3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf38=['../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','destroy','stack','name','send','index','map','rawAttributes','type','key','model','query','keys','filters','attributes','length','hasOwnProperty','sort','where','pick','merge','filter','options','FreshsalesAccount','includeAll','include','findAll','rows','show','params','intersection','find','catch','create','body','findOne','fields','order','getConfigurations','nolimit','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshsalesConfiguration','FreshsalesField','getFields','username','remoteUri','slice','substring','lastIndexOf','GET','format','%s%s','apiKey','Requested\x20Resource\x20not\x20Found','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','fs-extra','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils'];(function(_0x56df8a,_0xae1416){var _0x44625d=function(_0x3511f4){while(--_0x3511f4){_0x56df8a['push'](_0x56df8a['shift']());}};_0x44625d(++_0xae1416);}(_0xbf38,0xb6));var _0x8bf3=function(_0x5a2162,_0x5a90a3){_0x5a2162=_0x5a2162-0x0;var _0x4561a7=_0xbf38[_0x5a2162];return _0x4561a7;};'use strict';var emlformat=require(_0x8bf3('0x0'));var rimraf=require(_0x8bf3('0x1'));var zipdir=require(_0x8bf3('0x2'));var jsonpatch=require(_0x8bf3('0x3'));var rp=require(_0x8bf3('0x4'));var moment=require(_0x8bf3('0x5'));var BPromise=require(_0x8bf3('0x6'));var Mustache=require('mustache');var util=require(_0x8bf3('0x7'));var path=require('path');var sox=require(_0x8bf3('0x8'));var csv=require(_0x8bf3('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8bf3('0xa'));var _=require('lodash');var squel=require(_0x8bf3('0xb'));var crypto=require('crypto');var jsforce=require(_0x8bf3('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x8bf3('0x9'));var querystring=require(_0x8bf3('0xd'));var Papa=require(_0x8bf3('0xe'));var Redis=require(_0x8bf3('0xf'));var authService=require(_0x8bf3('0x10'));var qs=require(_0x8bf3('0x11'));var as=require(_0x8bf3('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8bf3('0x13'))(_0x8bf3('0x14'));var utils=require(_0x8bf3('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x8bf3('0x16'));var db=require('../../mysqldb')['db'];var integrations=require(_0x8bf3('0x17'));function respondWithStatusCode(_0x557502,_0x2eede8){_0x2eede8=_0x2eede8||0xcc;return function(_0x5755a6){if(_0x5755a6){return _0x557502[_0x8bf3('0x18')](_0x2eede8);}return _0x557502[_0x8bf3('0x19')](_0x2eede8)[_0x8bf3('0x1a')]();};}function respondWithResult(_0x3bae2e,_0x3bb1c2){_0x3bb1c2=_0x3bb1c2||0xc8;return function(_0xcb869e){if(_0xcb869e){return _0x3bae2e[_0x8bf3('0x19')](_0x3bb1c2)[_0x8bf3('0x1b')](_0xcb869e);}};}function respondWithFilteredResult(_0x265193,_0x17a971){return function(_0x6e1a76){if(_0x6e1a76){var _0x57c74b=typeof _0x17a971['offset']===_0x8bf3('0x1c')&&typeof _0x17a971[_0x8bf3('0x1d')]===_0x8bf3('0x1c');var _0x55b54d=_0x6e1a76[_0x8bf3('0x1e')];var _0x34fe12=_0x57c74b?0x0:_0x17a971['offset'];var _0x348e43=_0x57c74b?_0x6e1a76['count']:_0x17a971[_0x8bf3('0x1f')]+_0x17a971[_0x8bf3('0x1d')];var _0x27a666;if(_0x348e43>=_0x55b54d){_0x348e43=_0x55b54d;_0x27a666=0xc8;}else{_0x27a666=0xce;}_0x265193['status'](_0x27a666);return _0x265193[_0x8bf3('0x20')](_0x8bf3('0x21'),_0x34fe12+'-'+_0x348e43+'/'+_0x55b54d)['json'](_0x6e1a76);}return null;};}function patchUpdates(_0x515e4f){return function(_0x41e8f3){try{jsonpatch[_0x8bf3('0x22')](_0x41e8f3,_0x515e4f,!![]);}catch(_0x18e3c2){return BPromise[_0x8bf3('0x23')](_0x18e3c2);}return _0x41e8f3['save']();};}function saveUpdates(_0x532607,_0x343ddb){return function(_0x3f0bab){if(_0x3f0bab){return _0x3f0bab[_0x8bf3('0x24')](_0x532607)[_0x8bf3('0x25')](function(_0x5c8fe8){return _0x5c8fe8;});}return null;};}function removeEntity(_0x3b3002,_0x188153){return function(_0x41d206){if(_0x41d206){return _0x41d206[_0x8bf3('0x26')]()[_0x8bf3('0x25')](function(){_0x3b3002[_0x8bf3('0x19')](0xcc)[_0x8bf3('0x1a')]();});}};}function handleEntityNotFound(_0x43ea28,_0x237904){return function(_0x102ae8){if(!_0x102ae8){_0x43ea28[_0x8bf3('0x18')](0x194);}return _0x102ae8;};}function handleError(_0x266f61,_0x52441d){_0x52441d=_0x52441d||0x1f4;return function(_0x9ff0c6){logger['error'](_0x9ff0c6[_0x8bf3('0x27')]);if(_0x9ff0c6['name']){delete _0x9ff0c6[_0x8bf3('0x28')];}_0x266f61[_0x8bf3('0x19')](_0x52441d)[_0x8bf3('0x29')](_0x9ff0c6);};}exports[_0x8bf3('0x2a')]=function(_0x6478d9,_0x3e6b12){var _0x23bd2e={},_0xb0509e={},_0x2995e3={'count':0x0,'rows':[]};var _0x49bf91=_[_0x8bf3('0x2b')](db['FreshsalesAccount'][_0x8bf3('0x2c')],function(_0x696088){return{'name':_0x696088['fieldName'],'type':_0x696088[_0x8bf3('0x2d')][_0x8bf3('0x2e')]};});_0xb0509e[_0x8bf3('0x2f')]=_[_0x8bf3('0x2b')](_0x49bf91,_0x8bf3('0x28'));_0xb0509e[_0x8bf3('0x30')]=_[_0x8bf3('0x31')](_0x6478d9[_0x8bf3('0x30')]);_0xb0509e[_0x8bf3('0x32')]=_['intersection'](_0xb0509e[_0x8bf3('0x2f')],_0xb0509e[_0x8bf3('0x30')]);_0x23bd2e['attributes']=_['intersection'](_0xb0509e['model'],qs['fields'](_0x6478d9[_0x8bf3('0x30')]['fields']));_0x23bd2e[_0x8bf3('0x33')]=_0x23bd2e['attributes'][_0x8bf3('0x34')]?_0x23bd2e[_0x8bf3('0x33')]:_0xb0509e[_0x8bf3('0x2f')];if(!_0x6478d9['query'][_0x8bf3('0x35')]('nolimit')){_0x23bd2e[_0x8bf3('0x1d')]=qs[_0x8bf3('0x1d')](_0x6478d9[_0x8bf3('0x30')][_0x8bf3('0x1d')]);_0x23bd2e[_0x8bf3('0x1f')]=qs[_0x8bf3('0x1f')](_0x6478d9[_0x8bf3('0x30')]['offset']);}_0x23bd2e['order']=qs[_0x8bf3('0x36')](_0x6478d9[_0x8bf3('0x30')][_0x8bf3('0x36')]);_0x23bd2e[_0x8bf3('0x37')]=qs[_0x8bf3('0x32')](_[_0x8bf3('0x38')](_0x6478d9[_0x8bf3('0x30')],_0xb0509e[_0x8bf3('0x32')]),_0x49bf91);if(_0x6478d9['query']['filter']){_0x23bd2e[_0x8bf3('0x37')]=_[_0x8bf3('0x39')](_0x23bd2e[_0x8bf3('0x37')],{'$or':_[_0x8bf3('0x2b')](_0x49bf91,function(_0x17c262){if(_0x17c262[_0x8bf3('0x2d')]!=='VIRTUAL'){var _0x4cc84a={};_0x4cc84a[_0x17c262[_0x8bf3('0x28')]]={'$like':'%'+_0x6478d9[_0x8bf3('0x30')][_0x8bf3('0x3a')]+'%'};return _0x4cc84a;}})});}_0x23bd2e=_[_0x8bf3('0x39')]({},_0x23bd2e,_0x6478d9[_0x8bf3('0x3b')]);var _0xb3df6c={'where':_0x23bd2e['where']};return db[_0x8bf3('0x3c')][_0x8bf3('0x1e')](_0xb3df6c)[_0x8bf3('0x25')](function(_0x355f0c){_0x2995e3[_0x8bf3('0x1e')]=_0x355f0c;if(_0x6478d9[_0x8bf3('0x30')][_0x8bf3('0x3d')]){_0x23bd2e[_0x8bf3('0x3e')]=[{'all':!![]}];}return db[_0x8bf3('0x3c')][_0x8bf3('0x3f')](_0x23bd2e);})[_0x8bf3('0x25')](function(_0x22fc0f){_0x2995e3[_0x8bf3('0x40')]=_0x22fc0f;return _0x2995e3;})['then'](respondWithFilteredResult(_0x3e6b12,_0x23bd2e))['catch'](handleError(_0x3e6b12,null));};exports[_0x8bf3('0x41')]=function(_0x5518a1,_0x48595c){var _0x3e6e52={'raw':![],'where':{'id':_0x5518a1[_0x8bf3('0x42')]['id']}},_0x2b2a86={};_0x2b2a86['model']=_[_0x8bf3('0x31')](db[_0x8bf3('0x3c')][_0x8bf3('0x2c')]);_0x2b2a86[_0x8bf3('0x30')]=_[_0x8bf3('0x31')](_0x5518a1['query']);_0x2b2a86['filters']=_[_0x8bf3('0x43')](_0x2b2a86[_0x8bf3('0x2f')],_0x2b2a86[_0x8bf3('0x30')]);_0x3e6e52[_0x8bf3('0x33')]=_[_0x8bf3('0x43')](_0x2b2a86[_0x8bf3('0x2f')],qs['fields'](_0x5518a1['query']['fields']));_0x3e6e52['attributes']=_0x3e6e52[_0x8bf3('0x33')][_0x8bf3('0x34')]?_0x3e6e52[_0x8bf3('0x33')]:_0x2b2a86[_0x8bf3('0x2f')];if(_0x5518a1[_0x8bf3('0x30')][_0x8bf3('0x3d')]){_0x3e6e52['include']=[{'all':!![]}];}_0x3e6e52=_[_0x8bf3('0x39')]({},_0x3e6e52,_0x5518a1[_0x8bf3('0x3b')]);return db[_0x8bf3('0x3c')][_0x8bf3('0x44')](_0x3e6e52)['then'](handleEntityNotFound(_0x48595c,null))[_0x8bf3('0x25')](respondWithResult(_0x48595c,null))[_0x8bf3('0x45')](handleError(_0x48595c,null));};exports[_0x8bf3('0x46')]=function(_0x26e13f,_0x250960){return db[_0x8bf3('0x3c')][_0x8bf3('0x46')](_0x26e13f[_0x8bf3('0x47')],{})[_0x8bf3('0x25')](respondWithResult(_0x250960,0xc9))['catch'](handleError(_0x250960,null));};exports[_0x8bf3('0x24')]=function(_0x4ce5a2,_0x32ac0a){if(_0x4ce5a2[_0x8bf3('0x47')]['id']){delete _0x4ce5a2[_0x8bf3('0x47')]['id'];}return db['FreshsalesAccount'][_0x8bf3('0x44')]({'where':{'id':_0x4ce5a2[_0x8bf3('0x42')]['id']}})['then'](handleEntityNotFound(_0x32ac0a,null))['then'](saveUpdates(_0x4ce5a2[_0x8bf3('0x47')],null))['then'](respondWithResult(_0x32ac0a,null))[_0x8bf3('0x45')](handleError(_0x32ac0a,null));};exports[_0x8bf3('0x26')]=function(_0x291cf1,_0xe1f9d7){return db[_0x8bf3('0x3c')][_0x8bf3('0x44')]({'where':{'id':_0x291cf1[_0x8bf3('0x42')]['id']}})[_0x8bf3('0x25')](handleEntityNotFound(_0xe1f9d7,null))['then'](removeEntity(_0xe1f9d7,null))[_0x8bf3('0x45')](handleError(_0xe1f9d7,null));};exports['getConfigurations']=function(_0x1f96af,_0x4be038,_0x4950c3){var _0x293f13={};var _0x398220={};var _0x4cd3b1;var _0x427b73;return db[_0x8bf3('0x3c')][_0x8bf3('0x48')]({'where':{'id':_0x1f96af['params']['id']}})[_0x8bf3('0x25')](handleEntityNotFound(_0x4be038,null))[_0x8bf3('0x25')](function(_0xdc2057){if(_0xdc2057){_0x4cd3b1=_0xdc2057;_0x398220[_0x8bf3('0x2f')]=_[_0x8bf3('0x31')](db['FreshsalesConfiguration'][_0x8bf3('0x2c')]);_0x398220[_0x8bf3('0x30')]=_['keys'](_0x1f96af[_0x8bf3('0x30')]);_0x398220[_0x8bf3('0x32')]=_[_0x8bf3('0x43')](_0x398220[_0x8bf3('0x2f')],_0x398220[_0x8bf3('0x30')]);_0x293f13[_0x8bf3('0x33')]=_['intersection'](_0x398220['model'],qs['fields'](_0x1f96af[_0x8bf3('0x30')][_0x8bf3('0x49')]));_0x293f13[_0x8bf3('0x33')]=_0x293f13['attributes'][_0x8bf3('0x34')]?_0x293f13['attributes']:_0x398220[_0x8bf3('0x2f')];_0x293f13[_0x8bf3('0x4a')]=qs['sort'](_0x1f96af[_0x8bf3('0x30')][_0x8bf3('0x36')]);_0x293f13['where']=qs['filters'](_[_0x8bf3('0x38')](_0x1f96af[_0x8bf3('0x30')],_0x398220[_0x8bf3('0x32')]));if(_0x1f96af[_0x8bf3('0x30')]['filter']){_0x293f13[_0x8bf3('0x37')]=_[_0x8bf3('0x39')](_0x293f13[_0x8bf3('0x37')],{'$or':_[_0x8bf3('0x2b')](_0x293f13['attributes'],function(_0x2a535b){var _0x57d5a2={};_0x57d5a2[_0x2a535b]={'$like':'%'+_0x1f96af[_0x8bf3('0x30')]['filter']+'%'};return _0x57d5a2;})});}_0x293f13=_['merge']({},_0x293f13,_0x1f96af['options']);return _0x4cd3b1[_0x8bf3('0x4b')](_0x293f13);}})[_0x8bf3('0x25')](function(_0x49e0f5){if(_0x49e0f5){_0x427b73=_0x49e0f5[_0x8bf3('0x34')];if(!_0x1f96af[_0x8bf3('0x30')][_0x8bf3('0x35')](_0x8bf3('0x4c'))){_0x293f13[_0x8bf3('0x1d')]=qs[_0x8bf3('0x1d')](_0x1f96af[_0x8bf3('0x30')][_0x8bf3('0x1d')]);_0x293f13[_0x8bf3('0x1f')]=qs['offset'](_0x1f96af[_0x8bf3('0x30')][_0x8bf3('0x1f')]);}return _0x4cd3b1['getConfigurations'](_0x293f13);}})[_0x8bf3('0x25')](function(_0x525cfa){if(_0x525cfa){return _0x525cfa?{'count':_0x427b73,'rows':_0x525cfa}:null;}})[_0x8bf3('0x25')](respondWithResult(_0x4be038,null))[_0x8bf3('0x45')](handleError(_0x4be038,null));};exports[_0x8bf3('0x4d')]=function(_0x5dbfe5,_0x59e99c,_0x956f2f){if(_0x5dbfe5[_0x8bf3('0x47')]['id']){delete _0x5dbfe5[_0x8bf3('0x47')]['id'];}return db[_0x8bf3('0x3c')][_0x8bf3('0x48')]({'where':{'id':_0x5dbfe5[_0x8bf3('0x42')]['id']}})[_0x8bf3('0x25')](handleEntityNotFound(_0x59e99c,null))[_0x8bf3('0x25')](function(_0x2dc15b){if(_0x2dc15b){_0x5dbfe5[_0x8bf3('0x47')][_0x8bf3('0x4e')]=_0x2dc15b['id'];_0x5dbfe5[_0x8bf3('0x47')][_0x8bf3('0x4f')]=integrations[_0x8bf3('0x50')](_0x5dbfe5[_0x8bf3('0x47')][_0x8bf3('0x51')],_0x5dbfe5[_0x8bf3('0x47')][_0x8bf3('0x2d')]);_0x5dbfe5['body'][_0x8bf3('0x52')]=integrations[_0x8bf3('0x53')](_0x5dbfe5[_0x8bf3('0x47')][_0x8bf3('0x51')],_0x5dbfe5[_0x8bf3('0x47')][_0x8bf3('0x2d')]);return db[_0x8bf3('0x54')][_0x8bf3('0x46')](_0x5dbfe5['body'],{'include':[{'model':db[_0x8bf3('0x55')],'as':_0x8bf3('0x4f')},{'model':db['FreshsalesField'],'as':_0x8bf3('0x52')}]});}return null;})[_0x8bf3('0x25')](respondWithResult(_0x59e99c,null))[_0x8bf3('0x45')](handleError(_0x59e99c,null));};exports[_0x8bf3('0x56')]=function(_0x5c3ce3,_0x31d5f9,_0x5e9eb6){var _0x138403='';var _0x45055b='';return db[_0x8bf3('0x3c')][_0x8bf3('0x48')]({'where':{'id':_0x5c3ce3['params']['id']},'attributes':['id',_0x8bf3('0x57'),_0x8bf3('0x58'),'apiKey']})[_0x8bf3('0x25')](handleEntityNotFound(_0x31d5f9,null))[_0x8bf3('0x25')](function(_0x14e32e){if(_0x14e32e){_0x45055b=_0x14e32e['username'];_0x138403=_0x14e32e[_0x8bf3('0x58')];var _0x48ffe1=_0x14e32e[_0x8bf3('0x58')][_0x8bf3('0x59')](-0x1);if(_0x48ffe1==='/'){_0x138403=_0x138403[_0x8bf3('0x5a')](0x0,_0x138403[_0x8bf3('0x5b')](_0x48ffe1));}return rp({'method':_0x8bf3('0x5c'),'uri':util[_0x8bf3('0x5d')](_0x8bf3('0x5e'),_0x138403,'/api/selector/owners'),'headers':{'Authorization':'Token\x20token='+_0x14e32e[_0x8bf3('0x5f')]},'json':!![]});}})[_0x8bf3('0x25')](function(_0x366b30){if(_0x366b30){var _0x5ea3f3=_0x366b30['users'];var _0x2a7931=![];var _0x1c2de9=null;for(_0x1c2de9=0x0;_0x1c2de9<_0x5ea3f3['length'];_0x1c2de9++){if(_0x5ea3f3[_0x1c2de9]['email']===_0x45055b){_0x2a7931=!![];}}if(_0x2a7931){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x8bf3('0x60')});}}})[_0x8bf3('0x25')](respondWithResult(_0x31d5f9,null))[_0x8bf3('0x45')](function(_0xaa827d){var _0x12cc8d=_0x5c3ce3['query'][_0x8bf3('0x61')]?0x1f4:_0xaa827d[_0x8bf3('0x62')]||0x1f4;logger[_0x8bf3('0x63')](_0x8bf3('0x64'),'getFields',_0x12cc8d,JSON['stringify'](_0xaa827d));delete _0xaa827d[_0x8bf3('0x28')];if(_0x12cc8d===0x191){_0x12cc8d=0x190;}_0x31d5f9[_0x8bf3('0x19')](_0x12cc8d)[_0x8bf3('0x29')](_0x5c3ce3[_0x8bf3('0x30')][_0x8bf3('0x61')]?{'message':_0x8bf3('0x65'),'statusCode':_0xaa827d[_0x8bf3('0x62')]}:_0xaa827d);});};
\ No newline at end of file
+var _0xc675=['getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','Wrong\x20credentials','eml-format','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','reject','save','then','error','stack','name','send','rawAttributes','fieldName','model','map','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','merge','type','filter','FreshsalesAccount','includeAll','findAll','rows','catch','show','params','keys','options','find','create','body','update','destroy','getConfigurations','FreshsalesConfiguration','pick','hasOwnProperty','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','FreshsalesField','username','remoteUri','apiKey','lastIndexOf','%s%s','test','statusCode'];(function(_0x10311c,_0x171751){var _0x1b5658=function(_0x22bcbd){while(--_0x22bcbd){_0x10311c['push'](_0x10311c['shift']());}};_0x1b5658(++_0x171751);}(_0xc675,0x11e));var _0x5c67=function(_0x5446d1,_0x11450a){_0x5446d1=_0x5446d1-0x0;var _0x29f2ea=_0xc675[_0x5446d1];return _0x29f2ea;};'use strict';var emlformat=require(_0x5c67('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x5c67('0x1'));var rp=require(_0x5c67('0x2'));var moment=require('moment');var BPromise=require(_0x5c67('0x3'));var Mustache=require(_0x5c67('0x4'));var util=require(_0x5c67('0x5'));var path=require(_0x5c67('0x6'));var sox=require('sox');var csv=require(_0x5c67('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5c67('0x8'));var _=require(_0x5c67('0x9'));var squel=require(_0x5c67('0xa'));var crypto=require(_0x5c67('0xb'));var jsforce=require(_0x5c67('0xc'));var deskjs=require(_0x5c67('0xd'));var toCsv=require(_0x5c67('0x7'));var querystring=require(_0x5c67('0xe'));var Papa=require(_0x5c67('0xf'));var Redis=require(_0x5c67('0x10'));var authService=require(_0x5c67('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x5c67('0x12'))(_0x5c67('0x13'));var utils=require(_0x5c67('0x14'));var config=require(_0x5c67('0x15'));var licenseUtil=require(_0x5c67('0x16'));var db=require('../../mysqldb')['db'];var integrations=require(_0x5c67('0x17'));function respondWithStatusCode(_0x4a85e3,_0x4622e9){_0x4622e9=_0x4622e9||0xcc;return function(_0x20d0af){if(_0x20d0af){return _0x4a85e3[_0x5c67('0x18')](_0x4622e9);}return _0x4a85e3[_0x5c67('0x19')](_0x4622e9)[_0x5c67('0x1a')]();};}function respondWithResult(_0x4eafa7,_0x2684d6){_0x2684d6=_0x2684d6||0xc8;return function(_0x5a25bd){if(_0x5a25bd){return _0x4eafa7['status'](_0x2684d6)['json'](_0x5a25bd);}};}function respondWithFilteredResult(_0x5b90f1,_0x26cc1f){return function(_0x8f967){if(_0x8f967){var _0x135740=typeof _0x26cc1f[_0x5c67('0x1b')]===_0x5c67('0x1c')&&typeof _0x26cc1f[_0x5c67('0x1d')]===_0x5c67('0x1c');var _0x178eb4=_0x8f967[_0x5c67('0x1e')];var _0x31ab6d=_0x135740?0x0:_0x26cc1f[_0x5c67('0x1b')];var _0x2eebf6=_0x135740?_0x8f967['count']:_0x26cc1f[_0x5c67('0x1b')]+_0x26cc1f[_0x5c67('0x1d')];var _0x297141;if(_0x2eebf6>=_0x178eb4){_0x2eebf6=_0x178eb4;_0x297141=0xc8;}else{_0x297141=0xce;}_0x5b90f1[_0x5c67('0x19')](_0x297141);return _0x5b90f1[_0x5c67('0x1f')](_0x5c67('0x20'),_0x31ab6d+'-'+_0x2eebf6+'/'+_0x178eb4)['json'](_0x8f967);}return null;};}function patchUpdates(_0x5bd82e){return function(_0x342849){try{jsonpatch['apply'](_0x342849,_0x5bd82e,!![]);}catch(_0x38d890){return BPromise[_0x5c67('0x21')](_0x38d890);}return _0x342849[_0x5c67('0x22')]();};}function saveUpdates(_0x3d044c,_0x2cc15e){return function(_0xf22e8f){if(_0xf22e8f){return _0xf22e8f['update'](_0x3d044c)[_0x5c67('0x23')](function(_0x3c0efd){return _0x3c0efd;});}return null;};}function removeEntity(_0xb570fa,_0x542e78){return function(_0x53b979){if(_0x53b979){return _0x53b979['destroy']()['then'](function(){_0xb570fa[_0x5c67('0x19')](0xcc)[_0x5c67('0x1a')]();});}};}function handleEntityNotFound(_0x1bfea9,_0x4d80d3){return function(_0x2c9c0d){if(!_0x2c9c0d){_0x1bfea9['sendStatus'](0x194);}return _0x2c9c0d;};}function handleError(_0x1381b5,_0x5a8fd4){_0x5a8fd4=_0x5a8fd4||0x1f4;return function(_0x51ecea){logger[_0x5c67('0x24')](_0x51ecea[_0x5c67('0x25')]);if(_0x51ecea[_0x5c67('0x26')]){delete _0x51ecea[_0x5c67('0x26')];}_0x1381b5[_0x5c67('0x19')](_0x5a8fd4)[_0x5c67('0x27')](_0x51ecea);};}exports['index']=function(_0x65070d,_0x31ca26){var _0x2614bd={},_0x39bd49={},_0x5e2e23={'count':0x0,'rows':[]};var _0x1546ed=_['map'](db['FreshsalesAccount'][_0x5c67('0x28')],function(_0x4737be){return{'name':_0x4737be[_0x5c67('0x29')],'type':_0x4737be['type']['key']};});_0x39bd49[_0x5c67('0x2a')]=_[_0x5c67('0x2b')](_0x1546ed,_0x5c67('0x26'));_0x39bd49[_0x5c67('0x2c')]=_['keys'](_0x65070d[_0x5c67('0x2c')]);_0x39bd49[_0x5c67('0x2d')]=_[_0x5c67('0x2e')](_0x39bd49[_0x5c67('0x2a')],_0x39bd49[_0x5c67('0x2c')]);_0x2614bd[_0x5c67('0x2f')]=_['intersection'](_0x39bd49['model'],qs[_0x5c67('0x30')](_0x65070d[_0x5c67('0x2c')][_0x5c67('0x30')]));_0x2614bd[_0x5c67('0x2f')]=_0x2614bd[_0x5c67('0x2f')][_0x5c67('0x31')]?_0x2614bd[_0x5c67('0x2f')]:_0x39bd49[_0x5c67('0x2a')];if(!_0x65070d['query']['hasOwnProperty'](_0x5c67('0x32'))){_0x2614bd[_0x5c67('0x1d')]=qs['limit'](_0x65070d['query'][_0x5c67('0x1d')]);_0x2614bd['offset']=qs[_0x5c67('0x1b')](_0x65070d['query'][_0x5c67('0x1b')]);}_0x2614bd[_0x5c67('0x33')]=qs[_0x5c67('0x34')](_0x65070d['query'][_0x5c67('0x34')]);_0x2614bd['where']=qs[_0x5c67('0x2d')](_['pick'](_0x65070d[_0x5c67('0x2c')],_0x39bd49[_0x5c67('0x2d')]),_0x1546ed);if(_0x65070d[_0x5c67('0x2c')]['filter']){_0x2614bd[_0x5c67('0x35')]=_[_0x5c67('0x36')](_0x2614bd[_0x5c67('0x35')],{'$or':_[_0x5c67('0x2b')](_0x1546ed,function(_0x32522f){if(_0x32522f[_0x5c67('0x37')]!=='VIRTUAL'){var _0x1bb7c8={};_0x1bb7c8[_0x32522f[_0x5c67('0x26')]]={'$like':'%'+_0x65070d['query'][_0x5c67('0x38')]+'%'};return _0x1bb7c8;}})});}_0x2614bd=_['merge']({},_0x2614bd,_0x65070d['options']);var _0x27f8f1={'where':_0x2614bd[_0x5c67('0x35')]};return db[_0x5c67('0x39')][_0x5c67('0x1e')](_0x27f8f1)[_0x5c67('0x23')](function(_0x481320){_0x5e2e23[_0x5c67('0x1e')]=_0x481320;if(_0x65070d['query'][_0x5c67('0x3a')]){_0x2614bd['include']=[{'all':!![]}];}return db['FreshsalesAccount'][_0x5c67('0x3b')](_0x2614bd);})[_0x5c67('0x23')](function(_0x125e3b){_0x5e2e23[_0x5c67('0x3c')]=_0x125e3b;return _0x5e2e23;})[_0x5c67('0x23')](respondWithFilteredResult(_0x31ca26,_0x2614bd))[_0x5c67('0x3d')](handleError(_0x31ca26,null));};exports[_0x5c67('0x3e')]=function(_0x1727ac,_0x17bac2){var _0x1c59fb={'raw':![],'where':{'id':_0x1727ac[_0x5c67('0x3f')]['id']}},_0x1a0a3c={};_0x1a0a3c[_0x5c67('0x2a')]=_[_0x5c67('0x40')](db[_0x5c67('0x39')][_0x5c67('0x28')]);_0x1a0a3c[_0x5c67('0x2c')]=_[_0x5c67('0x40')](_0x1727ac['query']);_0x1a0a3c[_0x5c67('0x2d')]=_[_0x5c67('0x2e')](_0x1a0a3c['model'],_0x1a0a3c[_0x5c67('0x2c')]);_0x1c59fb[_0x5c67('0x2f')]=_[_0x5c67('0x2e')](_0x1a0a3c['model'],qs['fields'](_0x1727ac[_0x5c67('0x2c')][_0x5c67('0x30')]));_0x1c59fb[_0x5c67('0x2f')]=_0x1c59fb['attributes']['length']?_0x1c59fb[_0x5c67('0x2f')]:_0x1a0a3c[_0x5c67('0x2a')];if(_0x1727ac[_0x5c67('0x2c')][_0x5c67('0x3a')]){_0x1c59fb['include']=[{'all':!![]}];}_0x1c59fb=_[_0x5c67('0x36')]({},_0x1c59fb,_0x1727ac[_0x5c67('0x41')]);return db[_0x5c67('0x39')][_0x5c67('0x42')](_0x1c59fb)[_0x5c67('0x23')](handleEntityNotFound(_0x17bac2,null))[_0x5c67('0x23')](respondWithResult(_0x17bac2,null))['catch'](handleError(_0x17bac2,null));};exports[_0x5c67('0x43')]=function(_0xf8491c,_0xcffe34){return db[_0x5c67('0x39')][_0x5c67('0x43')](_0xf8491c[_0x5c67('0x44')],{})['then'](respondWithResult(_0xcffe34,0xc9))[_0x5c67('0x3d')](handleError(_0xcffe34,null));};exports[_0x5c67('0x45')]=function(_0x1050c9,_0x16be73){if(_0x1050c9[_0x5c67('0x44')]['id']){delete _0x1050c9['body']['id'];}return db['FreshsalesAccount'][_0x5c67('0x42')]({'where':{'id':_0x1050c9['params']['id']}})[_0x5c67('0x23')](handleEntityNotFound(_0x16be73,null))[_0x5c67('0x23')](saveUpdates(_0x1050c9[_0x5c67('0x44')],null))['then'](respondWithResult(_0x16be73,null))[_0x5c67('0x3d')](handleError(_0x16be73,null));};exports[_0x5c67('0x46')]=function(_0x2258be,_0x26951c){return db[_0x5c67('0x39')][_0x5c67('0x42')]({'where':{'id':_0x2258be[_0x5c67('0x3f')]['id']}})[_0x5c67('0x23')](handleEntityNotFound(_0x26951c,null))[_0x5c67('0x23')](removeEntity(_0x26951c,null))['catch'](handleError(_0x26951c,null));};exports[_0x5c67('0x47')]=function(_0x578c2b,_0x366105,_0x765682){var _0x239bc8={};var _0x296722={};var _0x4c6dc1;var _0xc7eeb7;return db[_0x5c67('0x39')]['findOne']({'where':{'id':_0x578c2b['params']['id']}})[_0x5c67('0x23')](handleEntityNotFound(_0x366105,null))[_0x5c67('0x23')](function(_0x1e8b7c){if(_0x1e8b7c){_0x4c6dc1=_0x1e8b7c;_0x296722[_0x5c67('0x2a')]=_['keys'](db[_0x5c67('0x48')][_0x5c67('0x28')]);_0x296722[_0x5c67('0x2c')]=_[_0x5c67('0x40')](_0x578c2b[_0x5c67('0x2c')]);_0x296722['filters']=_['intersection'](_0x296722[_0x5c67('0x2a')],_0x296722[_0x5c67('0x2c')]);_0x239bc8[_0x5c67('0x2f')]=_[_0x5c67('0x2e')](_0x296722[_0x5c67('0x2a')],qs[_0x5c67('0x30')](_0x578c2b['query'][_0x5c67('0x30')]));_0x239bc8[_0x5c67('0x2f')]=_0x239bc8['attributes'][_0x5c67('0x31')]?_0x239bc8[_0x5c67('0x2f')]:_0x296722[_0x5c67('0x2a')];_0x239bc8[_0x5c67('0x33')]=qs[_0x5c67('0x34')](_0x578c2b[_0x5c67('0x2c')][_0x5c67('0x34')]);_0x239bc8['where']=qs[_0x5c67('0x2d')](_[_0x5c67('0x49')](_0x578c2b[_0x5c67('0x2c')],_0x296722['filters']));if(_0x578c2b[_0x5c67('0x2c')][_0x5c67('0x38')]){_0x239bc8[_0x5c67('0x35')]=_[_0x5c67('0x36')](_0x239bc8['where'],{'$or':_[_0x5c67('0x2b')](_0x239bc8[_0x5c67('0x2f')],function(_0x157c8e){var _0x500bb4={};_0x500bb4[_0x157c8e]={'$like':'%'+_0x578c2b[_0x5c67('0x2c')][_0x5c67('0x38')]+'%'};return _0x500bb4;})});}_0x239bc8=_['merge']({},_0x239bc8,_0x578c2b[_0x5c67('0x41')]);return _0x4c6dc1[_0x5c67('0x47')](_0x239bc8);}})['then'](function(_0xe21278){if(_0xe21278){_0xc7eeb7=_0xe21278['length'];if(!_0x578c2b[_0x5c67('0x2c')][_0x5c67('0x4a')](_0x5c67('0x32'))){_0x239bc8[_0x5c67('0x1d')]=qs['limit'](_0x578c2b[_0x5c67('0x2c')][_0x5c67('0x1d')]);_0x239bc8[_0x5c67('0x1b')]=qs['offset'](_0x578c2b[_0x5c67('0x2c')][_0x5c67('0x1b')]);}return _0x4c6dc1[_0x5c67('0x47')](_0x239bc8);}})[_0x5c67('0x23')](function(_0x480b01){if(_0x480b01){return _0x480b01?{'count':_0xc7eeb7,'rows':_0x480b01}:null;}})['then'](respondWithResult(_0x366105,null))[_0x5c67('0x3d')](handleError(_0x366105,null));};exports[_0x5c67('0x4b')]=function(_0x32bf3c,_0x1d2ae0,_0xf53ee2){if(_0x32bf3c[_0x5c67('0x44')]['id']){delete _0x32bf3c['body']['id'];}return db[_0x5c67('0x39')][_0x5c67('0x4c')]({'where':{'id':_0x32bf3c[_0x5c67('0x3f')]['id']}})['then'](handleEntityNotFound(_0x1d2ae0,null))[_0x5c67('0x23')](function(_0x244782){if(_0x244782){_0x32bf3c['body'][_0x5c67('0x4d')]=_0x244782['id'];_0x32bf3c[_0x5c67('0x44')][_0x5c67('0x4e')]=integrations[_0x5c67('0x4f')](_0x32bf3c['body'][_0x5c67('0x50')],_0x32bf3c[_0x5c67('0x44')][_0x5c67('0x37')]);_0x32bf3c[_0x5c67('0x44')][_0x5c67('0x51')]=integrations['getDescriptions'](_0x32bf3c[_0x5c67('0x44')][_0x5c67('0x50')],_0x32bf3c[_0x5c67('0x44')][_0x5c67('0x37')]);return db[_0x5c67('0x48')][_0x5c67('0x43')](_0x32bf3c[_0x5c67('0x44')],{'include':[{'model':db[_0x5c67('0x52')],'as':'Subjects'},{'model':db[_0x5c67('0x52')],'as':_0x5c67('0x51')}]});}return null;})[_0x5c67('0x23')](respondWithResult(_0x1d2ae0,null))[_0x5c67('0x3d')](handleError(_0x1d2ae0,null));};exports['getFields']=function(_0x3faf9f,_0x313779,_0x3baf25){var _0x346d7b='';var _0xbaed6e='';return db[_0x5c67('0x39')][_0x5c67('0x4c')]({'where':{'id':_0x3faf9f[_0x5c67('0x3f')]['id']},'attributes':['id',_0x5c67('0x53'),_0x5c67('0x54'),_0x5c67('0x55')]})[_0x5c67('0x23')](handleEntityNotFound(_0x313779,null))[_0x5c67('0x23')](function(_0x4a83ee){if(_0x4a83ee){_0xbaed6e=_0x4a83ee[_0x5c67('0x53')];_0x346d7b=_0x4a83ee[_0x5c67('0x54')];var _0x24cdd6=_0x4a83ee['remoteUri']['slice'](-0x1);if(_0x24cdd6==='/'){_0x346d7b=_0x346d7b['substring'](0x0,_0x346d7b[_0x5c67('0x56')](_0x24cdd6));}return rp({'method':'GET','uri':util['format'](_0x5c67('0x57'),_0x346d7b,'/api/selector/owners'),'headers':{'Authorization':'Token\x20token='+_0x4a83ee[_0x5c67('0x55')]},'json':!![]});}})['then'](function(_0x76c055){if(_0x76c055){var _0x2e3bda=_0x76c055['users'];var _0x5d130e=![];var _0x381ca8=null;for(_0x381ca8=0x0;_0x381ca8<_0x2e3bda[_0x5c67('0x31')];_0x381ca8++){if(_0x2e3bda[_0x381ca8]['email']===_0xbaed6e){_0x5d130e=!![];}}if(_0x5d130e){return!![];}else{throw new Error({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}})[_0x5c67('0x23')](respondWithResult(_0x313779,null))[_0x5c67('0x3d')](function(_0x41cb5b){var _0x5bc161=_0x3faf9f['query'][_0x5c67('0x58')]?0x1f4:_0x41cb5b[_0x5c67('0x59')]||0x1f4;logger[_0x5c67('0x24')](_0x5c67('0x5a'),_0x5c67('0x5b'),_0x5bc161,JSON[_0x5c67('0x5c')](_0x41cb5b));delete _0x41cb5b[_0x5c67('0x26')];if(_0x5bc161===0x191){_0x5bc161=0x190;}_0x313779[_0x5c67('0x19')](_0x5bc161)[_0x5c67('0x27')](_0x3faf9f[_0x5c67('0x2c')][_0x5c67('0x58')]?{'message':_0x5c67('0x5d'),'statusCode':_0x41cb5b[_0x5c67('0x59')]}:_0x41cb5b);});};
\ No newline at end of file
index f7c1b9c..e4a70ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['../../config/logger','api','moment','bluebird','request-promise','path','./intFreshsalesAccount.attributes','../../components/integrations/configuration','exports','define','int_freshsales_accounts','lodash','util'];(function(_0x82fe71,_0x5bef52){var _0xe6ce04=function(_0xea581e){while(--_0xea581e){_0x82fe71['push'](_0x82fe71['shift']());}};_0xe6ce04(++_0x5bef52);}(_0x5f2f,0x73));var _0xf5f2=function(_0x137926,_0x2e6f75){_0x137926=_0x137926-0x0;var _0x1b1b9d=_0x5f2f[_0x137926];return _0x1b1b9d;};'use strict';var _=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var logger=require(_0xf5f2('0x2'))(_0xf5f2('0x3'));var moment=require(_0xf5f2('0x4'));var BPromise=require(_0xf5f2('0x5'));var rp=require(_0xf5f2('0x6'));var fs=require('fs');var path=require(_0xf5f2('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xf5f2('0x8'));var integrations=require(_0xf5f2('0x9'));module[_0xf5f2('0xa')]=function(_0x3eebf6,_0x3133bc){return _0x3eebf6[_0xf5f2('0xb')]('FreshsalesAccount',attributes,{'tableName':_0xf5f2('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2d72=['exports','define','FreshsalesAccount','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration'];(function(_0x2786ea,_0x16c3c3){var _0x5c38e5=function(_0x5a53c5){while(--_0x5a53c5){_0x2786ea['push'](_0x2786ea['shift']());}};_0x5c38e5(++_0x16c3c3);}(_0x2d72,0xa8));var _0x22d7=function(_0x322c86,_0x4fbc29){_0x322c86=_0x322c86-0x0;var _0x326ad9=_0x2d72[_0x322c86];return _0x326ad9;};'use strict';var _=require(_0x22d7('0x0'));var util=require(_0x22d7('0x1'));var logger=require(_0x22d7('0x2'))(_0x22d7('0x3'));var moment=require(_0x22d7('0x4'));var BPromise=require(_0x22d7('0x5'));var rp=require(_0x22d7('0x6'));var fs=require('fs');var path=require(_0x22d7('0x7'));var rimraf=require(_0x22d7('0x8'));var config=require(_0x22d7('0x9'));var attributes=require(_0x22d7('0xa'));var integrations=require(_0x22d7('0xb'));module[_0x22d7('0xc')]=function(_0x100426,_0x52a3e3){return _0x100426[_0x22d7('0xd')](_0x22d7('0xe'),attributes,{'tableName':'int_freshsales_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8dd6d40..8364af0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a6b=['find','map','lodash','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','info','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','FreshsalesAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','GetFreshsalesAccount','FreshsalesAccount','findAll','options','raw','where','attributes','limit','include','model','then','debug','stringify','catch','ShowFreshsalesAccount'];(function(_0x13ce0c,_0x3f2a0d){var _0x4388fb=function(_0x27db4b){while(--_0x27db4b){_0x13ce0c['push'](_0x13ce0c['shift']());}};_0x4388fb(++_0x3f2a0d);}(_0x0a6b,0x18e));var _0xb0a6=function(_0x1630e0,_0x5d7ca4){_0x1630e0=_0x1630e0-0x0;var _0x236652=_0x0a6b[_0x1630e0];return _0x236652;};'use strict';var _=require(_0xb0a6('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xb0a6('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb0a6('0x2'))['db'];var utils=require(_0xb0a6('0x3'));var logger=require(_0xb0a6('0x4'))('rpc');var config=require(_0xb0a6('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xb0a6('0x6')][_0xb0a6('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5e2d2d,_0x11cd5b,_0x24515c){return new BPromise(function(_0x2a8516,_0x530c05){return client['request'](_0x5e2d2d,_0x24515c)['then'](function(_0x2ded05){logger[_0xb0a6('0x8')](_0xb0a6('0x9'),_0x11cd5b,_0xb0a6('0xa'));logger['debug'](_0xb0a6('0xb'),_0x11cd5b,_0xb0a6('0xa'),JSON['stringify'](_0x2ded05));if(_0x2ded05[_0xb0a6('0xc')]){if(_0x2ded05[_0xb0a6('0xc')][_0xb0a6('0xd')]===0x1f4){logger[_0xb0a6('0xc')](_0xb0a6('0x9'),_0x11cd5b,_0x2ded05[_0xb0a6('0xc')][_0xb0a6('0xe')]);return _0x530c05(_0x2ded05[_0xb0a6('0xc')][_0xb0a6('0xe')]);}logger[_0xb0a6('0xc')]('FreshsalesAccount,\x20%s,\x20%s',_0x11cd5b,_0x2ded05[_0xb0a6('0xc')]['message']);return _0x2a8516(_0x2ded05[_0xb0a6('0xc')]['message']);}else{logger[_0xb0a6('0x8')]('FreshsalesAccount,\x20%s,\x20%s',_0x11cd5b,_0xb0a6('0xa'));_0x2a8516(_0x2ded05[_0xb0a6('0xf')][_0xb0a6('0xe')]);}})['catch'](function(_0x56b594){logger[_0xb0a6('0xc')](_0xb0a6('0x9'),_0x11cd5b,_0x56b594);_0x530c05(_0x56b594);});});}exports[_0xb0a6('0x10')]=function(_0x18f994){var _0x10f504=this;return new Promise(function(_0x13a1c8,_0x567dd5){return db[_0xb0a6('0x11')][_0xb0a6('0x12')]({'raw':_0x18f994[_0xb0a6('0x13')]?_0x18f994[_0xb0a6('0x13')][_0xb0a6('0x14')]===undefined?!![]:![]:!![],'where':_0x18f994[_0xb0a6('0x13')]?_0x18f994['options'][_0xb0a6('0x15')]||null:null,'attributes':_0x18f994[_0xb0a6('0x13')]?_0x18f994[_0xb0a6('0x13')][_0xb0a6('0x16')]||null:null,'limit':_0x18f994[_0xb0a6('0x13')]?_0x18f994[_0xb0a6('0x13')][_0xb0a6('0x17')]||null:null,'include':_0x18f994[_0xb0a6('0x13')]?_0x18f994['options'][_0xb0a6('0x18')]?_['map'](_0x18f994[_0xb0a6('0x13')][_0xb0a6('0x18')],function(_0x4997df){return{'model':db[_0x4997df['model']],'as':_0x4997df['as'],'attributes':_0x4997df[_0xb0a6('0x16')],'include':_0x4997df[_0xb0a6('0x18')]?_['map'](_0x4997df[_0xb0a6('0x18')],function(_0x24574a){return{'model':db[_0x24574a[_0xb0a6('0x19')]],'as':_0x24574a['as'],'attributes':_0x24574a[_0xb0a6('0x16')],'include':_0x24574a['include']?_['map'](_0x24574a[_0xb0a6('0x18')],function(_0x1e9947){return{'model':db[_0x1e9947[_0xb0a6('0x19')]],'as':_0x1e9947['as'],'attributes':_0x1e9947['attributes']};}):[]};}):[]};}):[]:[]})[_0xb0a6('0x1a')](function(_0x3347ac){logger[_0xb0a6('0x8')](_0xb0a6('0x10'),_0x18f994);logger[_0xb0a6('0x1b')](_0xb0a6('0x10'),_0x18f994,JSON[_0xb0a6('0x1c')](_0x3347ac));_0x13a1c8(_0x3347ac);})[_0xb0a6('0x1d')](function(_0x4255b9){logger['error'](_0xb0a6('0x10'),_0x4255b9[_0xb0a6('0xe')],_0x18f994);_0x567dd5(_0x10f504[_0xb0a6('0xc')](0x1f4,_0x4255b9['message']));});});};exports[_0xb0a6('0x1e')]=function(_0x582fc2){var _0x131e46=this;return new Promise(function(_0x309a91,_0x114f91){return db[_0xb0a6('0x11')][_0xb0a6('0x1f')]({'raw':_0x582fc2[_0xb0a6('0x13')]?_0x582fc2[_0xb0a6('0x13')][_0xb0a6('0x14')]===undefined?!![]:![]:!![],'where':_0x582fc2[_0xb0a6('0x13')]?_0x582fc2[_0xb0a6('0x13')]['where']||null:null,'attributes':_0x582fc2['options']?_0x582fc2[_0xb0a6('0x13')][_0xb0a6('0x16')]||null:null,'include':_0x582fc2[_0xb0a6('0x13')]?_0x582fc2[_0xb0a6('0x13')][_0xb0a6('0x18')]?_[_0xb0a6('0x20')](_0x582fc2[_0xb0a6('0x13')][_0xb0a6('0x18')],function(_0x4b0479){return{'model':db[_0x4b0479[_0xb0a6('0x19')]],'as':_0x4b0479['as'],'attributes':_0x4b0479[_0xb0a6('0x16')],'include':_0x4b0479['include']?_[_0xb0a6('0x20')](_0x4b0479[_0xb0a6('0x18')],function(_0x52e397){return{'model':db[_0x52e397['model']],'as':_0x52e397['as'],'attributes':_0x52e397[_0xb0a6('0x16')],'include':_0x52e397[_0xb0a6('0x18')]?_[_0xb0a6('0x20')](_0x52e397[_0xb0a6('0x18')],function(_0x4310ae){return{'model':db[_0x4310ae[_0xb0a6('0x19')]],'as':_0x4310ae['as'],'attributes':_0x4310ae['attributes']};}):[]};}):[]};}):[]:[]})[_0xb0a6('0x1a')](function(_0x5c280e){logger[_0xb0a6('0x8')](_0xb0a6('0x1e'),_0x582fc2);logger['debug']('ShowFreshsalesAccount',_0x582fc2,JSON['stringify'](_0x5c280e));_0x309a91(_0x5c280e);})[_0xb0a6('0x1d')](function(_0xd484f){logger[_0xb0a6('0xc')](_0xb0a6('0x1e'),_0xd484f[_0xb0a6('0xe')],_0x582fc2);_0x114f91(_0x131e46['error'](0x1f4,_0xd484f[_0xb0a6('0xe')]));});});};
\ No newline at end of file
+var _0x323f=['debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','GetFreshsalesAccount','FreshsalesAccount','options','where','attributes','include','map','model','catch','ShowFreshsalesAccount','find','raw','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','FreshsalesAccount,\x20%s,\x20%s','request\x20sent'];(function(_0x3e44c9,_0x175083){var _0x1ca567=function(_0x204dcb){while(--_0x204dcb){_0x3e44c9['push'](_0x3e44c9['shift']());}};_0x1ca567(++_0x175083);}(_0x323f,0x1ee));var _0xf323=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0x323f[_0x5bd426];return _0x23a7eb;};'use strict';var _=require('lodash');var util=require(_0xf323('0x0'));var moment=require('moment');var BPromise=require(_0xf323('0x1'));var rs=require(_0xf323('0x2'));var fs=require('fs');var Redis=require(_0xf323('0x3'));var db=require(_0xf323('0x4'))['db'];var utils=require(_0xf323('0x5'));var logger=require(_0xf323('0x6'))(_0xf323('0x7'));var config=require(_0xf323('0x8'));var jayson=require(_0xf323('0x9'));var client=jayson[_0xf323('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0xb9a667,_0x444cba,_0x1af70d){return new BPromise(function(_0x2c8271,_0x8abeac){return client[_0xf323('0xb')](_0xb9a667,_0x1af70d)[_0xf323('0xc')](function(_0x2b24a2){logger[_0xf323('0xd')](_0xf323('0xe'),_0x444cba,_0xf323('0xf'));logger[_0xf323('0x10')](_0xf323('0x11'),_0x444cba,_0xf323('0xf'),JSON[_0xf323('0x12')](_0x2b24a2));if(_0x2b24a2[_0xf323('0x13')]){if(_0x2b24a2[_0xf323('0x13')]['code']===0x1f4){logger[_0xf323('0x13')](_0xf323('0xe'),_0x444cba,_0x2b24a2[_0xf323('0x13')]['message']);return _0x8abeac(_0x2b24a2[_0xf323('0x13')][_0xf323('0x14')]);}logger[_0xf323('0x13')](_0xf323('0xe'),_0x444cba,_0x2b24a2[_0xf323('0x13')][_0xf323('0x14')]);return _0x2c8271(_0x2b24a2['error']['message']);}else{logger[_0xf323('0xd')](_0xf323('0xe'),_0x444cba,_0xf323('0xf'));_0x2c8271(_0x2b24a2[_0xf323('0x15')][_0xf323('0x14')]);}})['catch'](function(_0xd6c25){logger[_0xf323('0x13')](_0xf323('0xe'),_0x444cba,_0xd6c25);_0x8abeac(_0xd6c25);});});}exports[_0xf323('0x16')]=function(_0x49b115){var _0x2db977=this;return new Promise(function(_0x272aec,_0x1a459d){return db[_0xf323('0x17')]['findAll']({'raw':_0x49b115[_0xf323('0x18')]?_0x49b115[_0xf323('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x49b115[_0xf323('0x18')]?_0x49b115[_0xf323('0x18')][_0xf323('0x19')]||null:null,'attributes':_0x49b115[_0xf323('0x18')]?_0x49b115['options'][_0xf323('0x1a')]||null:null,'limit':_0x49b115[_0xf323('0x18')]?_0x49b115[_0xf323('0x18')]['limit']||null:null,'include':_0x49b115[_0xf323('0x18')]?_0x49b115[_0xf323('0x18')][_0xf323('0x1b')]?_[_0xf323('0x1c')](_0x49b115[_0xf323('0x18')][_0xf323('0x1b')],function(_0x189b23){return{'model':db[_0x189b23[_0xf323('0x1d')]],'as':_0x189b23['as'],'attributes':_0x189b23[_0xf323('0x1a')],'include':_0x189b23['include']?_[_0xf323('0x1c')](_0x189b23[_0xf323('0x1b')],function(_0x33dc52){return{'model':db[_0x33dc52[_0xf323('0x1d')]],'as':_0x33dc52['as'],'attributes':_0x33dc52[_0xf323('0x1a')],'include':_0x33dc52[_0xf323('0x1b')]?_['map'](_0x33dc52[_0xf323('0x1b')],function(_0x56ce33){return{'model':db[_0x56ce33[_0xf323('0x1d')]],'as':_0x56ce33['as'],'attributes':_0x56ce33[_0xf323('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x46663b){logger[_0xf323('0xd')](_0xf323('0x16'),_0x49b115);logger[_0xf323('0x10')](_0xf323('0x16'),_0x49b115,JSON['stringify'](_0x46663b));_0x272aec(_0x46663b);})[_0xf323('0x1e')](function(_0x34b536){logger[_0xf323('0x13')](_0xf323('0x16'),_0x34b536[_0xf323('0x14')],_0x49b115);_0x1a459d(_0x2db977[_0xf323('0x13')](0x1f4,_0x34b536[_0xf323('0x14')]));});});};exports[_0xf323('0x1f')]=function(_0x139adc){var _0x52300b=this;return new Promise(function(_0x3f23cf,_0x15187c){return db[_0xf323('0x17')][_0xf323('0x20')]({'raw':_0x139adc[_0xf323('0x18')]?_0x139adc['options'][_0xf323('0x21')]===undefined?!![]:![]:!![],'where':_0x139adc[_0xf323('0x18')]?_0x139adc[_0xf323('0x18')][_0xf323('0x19')]||null:null,'attributes':_0x139adc[_0xf323('0x18')]?_0x139adc['options'][_0xf323('0x1a')]||null:null,'include':_0x139adc[_0xf323('0x18')]?_0x139adc[_0xf323('0x18')][_0xf323('0x1b')]?_['map'](_0x139adc[_0xf323('0x18')]['include'],function(_0x372c47){return{'model':db[_0x372c47[_0xf323('0x1d')]],'as':_0x372c47['as'],'attributes':_0x372c47['attributes'],'include':_0x372c47[_0xf323('0x1b')]?_['map'](_0x372c47[_0xf323('0x1b')],function(_0x4a49d2){return{'model':db[_0x4a49d2[_0xf323('0x1d')]],'as':_0x4a49d2['as'],'attributes':_0x4a49d2['attributes'],'include':_0x4a49d2[_0xf323('0x1b')]?_[_0xf323('0x1c')](_0x4a49d2['include'],function(_0x4964a5){return{'model':db[_0x4964a5['model']],'as':_0x4964a5['as'],'attributes':_0x4964a5[_0xf323('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xf323('0xc')](function(_0x79e636){logger[_0xf323('0xd')](_0xf323('0x1f'),_0x139adc);logger['debug']('ShowFreshsalesAccount',_0x139adc,JSON['stringify'](_0x79e636));_0x3f23cf(_0x79e636);})[_0xf323('0x1e')](function(_0x59fee2){logger[_0xf323('0x13')]('ShowFreshsalesAccount',_0x59fee2[_0xf323('0x14')],_0x139adc);_0x15187c(_0x52300b[_0xf323('0x13')](0x1f4,_0x59fee2[_0xf323('0x14')]));});});};
\ No newline at end of file
index 0a45151..290ce8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d0d=['../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesConfiguration.controller','get','isAuthenticated','index','/:id','show','getSubjects','/:id/descriptions','/:id/fields','getFields','create','exports','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x3d2d6f,_0x368872){var _0x5c0022=function(_0x408819){while(--_0x408819){_0x3d2d6f['push'](_0x3d2d6f['shift']());}};_0x5c0022(++_0x368872);}(_0x8d0d,0x120));var _0xd8d0=function(_0xdf703e,_0x1d44ce){_0xdf703e=_0xdf703e-0x0;var _0x29d406=_0x8d0d[_0xdf703e];return _0x29d406;};'use strict';var multer=require(_0xd8d0('0x0'));var util=require('util');var path=require(_0xd8d0('0x1'));var timeout=require(_0xd8d0('0x2'));var express=require(_0xd8d0('0x3'));var router=express[_0xd8d0('0x4')]();var fs_extra=require(_0xd8d0('0x5'));var auth=require(_0xd8d0('0x6'));var interaction=require(_0xd8d0('0x7'));var config=require(_0xd8d0('0x8'));var controller=require(_0xd8d0('0x9'));router[_0xd8d0('0xa')]('/',auth[_0xd8d0('0xb')](),controller[_0xd8d0('0xc')]);router[_0xd8d0('0xa')](_0xd8d0('0xd'),auth[_0xd8d0('0xb')](),controller[_0xd8d0('0xe')]);router[_0xd8d0('0xa')]('/:id/subjects',auth['isAuthenticated'](),controller[_0xd8d0('0xf')]);router[_0xd8d0('0xa')](_0xd8d0('0x10'),auth[_0xd8d0('0xb')](),controller['getDescriptions']);router[_0xd8d0('0xa')](_0xd8d0('0x11'),auth['isAuthenticated'](),controller[_0xd8d0('0x12')]);router['post']('/',auth['isAuthenticated'](),controller[_0xd8d0('0x13')]);router['put'](_0xd8d0('0xd'),auth[_0xd8d0('0xb')](),controller['update']);router['delete']('/:id',auth[_0xd8d0('0xb')](),controller['destroy']);module[_0xd8d0('0x14')]=router;
\ No newline at end of file
+var _0xf7f7=['../../config/environment','./intFreshsalesConfiguration.controller','get','/:id','isAuthenticated','show','/:id/subjects','getSubjects','getDescriptions','getFields','post','create','put','destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x9de7db,_0xdf6a08){var _0x347b10=function(_0x2fb2db){while(--_0x2fb2db){_0x9de7db['push'](_0x9de7db['shift']());}};_0x347b10(++_0xdf6a08);}(_0xf7f7,0x117));var _0x7f7f=function(_0x4f3b2d,_0x3bbf46){_0x4f3b2d=_0x4f3b2d-0x0;var _0x3dddfa=_0xf7f7[_0x4f3b2d];return _0x3dddfa;};'use strict';var multer=require(_0x7f7f('0x0'));var util=require(_0x7f7f('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x7f7f('0x2'));var router=express[_0x7f7f('0x3')]();var fs_extra=require(_0x7f7f('0x4'));var auth=require(_0x7f7f('0x5'));var interaction=require(_0x7f7f('0x6'));var config=require(_0x7f7f('0x7'));var controller=require(_0x7f7f('0x8'));router[_0x7f7f('0x9')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x7f7f('0xa'),auth[_0x7f7f('0xb')](),controller[_0x7f7f('0xc')]);router[_0x7f7f('0x9')](_0x7f7f('0xd'),auth[_0x7f7f('0xb')](),controller[_0x7f7f('0xe')]);router[_0x7f7f('0x9')]('/:id/descriptions',auth[_0x7f7f('0xb')](),controller[_0x7f7f('0xf')]);router['get']('/:id/fields',auth['isAuthenticated'](),controller[_0x7f7f('0x10')]);router[_0x7f7f('0x11')]('/',auth[_0x7f7f('0xb')](),controller[_0x7f7f('0x12')]);router[_0x7f7f('0x13')](_0x7f7f('0xa'),auth[_0x7f7f('0xb')](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x7f7f('0x14')]);module[_0x7f7f('0x15')]=router;
\ No newline at end of file
index 6af02e9..345e9e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc98e=['sequelize','exports','STRING'];(function(_0x1e577b,_0x287ef2){var _0xd77add=function(_0x4c0963){while(--_0x4c0963){_0x1e577b['push'](_0x1e577b['shift']());}};_0xd77add(++_0x287ef2);}(_0xc98e,0xb7));var _0xec98=function(_0x109544,_0x3fc5ff){_0x109544=_0x109544-0x0;var _0x20b142=_0xc98e[_0x109544];return _0x20b142;};'use strict';var Sequelize=require(_0xec98('0x0'));module[_0xec98('0x1')]={'name':{'type':Sequelize[_0xec98('0x2')]},'description':{'type':Sequelize[_0xec98('0x2')]}};
\ No newline at end of file
+var _0xfa85=['STRING','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xfa85,0x173));var _0x5fa8=function(_0x273580,_0x100883){_0x273580=_0x273580-0x0;var _0x511d5a=_0xfa85[_0x273580];return _0x511d5a;};'use strict';var Sequelize=require('sequelize');module[_0x5fa8('0x0')]={'name':{'type':Sequelize[_0x5fa8('0x1')]},'description':{'type':Sequelize[_0x5fa8('0x1')]}};
\ No newline at end of file
index 01d96c1..580f6b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0453=['FreshsalesConfiguration','includeAll','include','findAll','then','show','params','length','find','catch','create','body','getSubjects','map','FreshsalesField','getDescriptions','getFields','rimraf','zip-dir','fast-json-patch','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/utils','../../config/license/util','../../mysqldb','sendStatus','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','save','update','end','error','name','send','index','rawAttributes','fieldName','type','key','keys','query','model','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','options'];(function(_0x4910ca,_0x298ecc){var _0x5f2e8a=function(_0x29d850){while(--_0x29d850){_0x4910ca['push'](_0x4910ca['shift']());}};_0x5f2e8a(++_0x298ecc);}(_0x0453,0x155));var _0x3045=function(_0xb40c65,_0x275f76){_0xb40c65=_0xb40c65-0x0;var _0x278eda=_0x0453[_0xb40c65];return _0x278eda;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3045('0x0'));var zipdir=require(_0x3045('0x1'));var jsonpatch=require(_0x3045('0x2'));var rp=require('request-promise');var moment=require(_0x3045('0x3'));var BPromise=require(_0x3045('0x4'));var Mustache=require(_0x3045('0x5'));var util=require(_0x3045('0x6'));var path=require(_0x3045('0x7'));var sox=require(_0x3045('0x8'));var csv=require(_0x3045('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3045('0xa'));var _=require(_0x3045('0xb'));var squel=require(_0x3045('0xc'));var crypto=require('crypto');var jsforce=require(_0x3045('0xd'));var deskjs=require(_0x3045('0xe'));var toCsv=require(_0x3045('0x9'));var querystring=require(_0x3045('0xf'));var Papa=require(_0x3045('0x10'));var Redis=require(_0x3045('0x11'));var authService=require(_0x3045('0x12'));var qs=require(_0x3045('0x13'));var as=require(_0x3045('0x14'));var hardwareService=require(_0x3045('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x3045('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x3045('0x17'));var db=require(_0x3045('0x18'))['db'];function respondWithStatusCode(_0xe6131f,_0x56c056){_0x56c056=_0x56c056||0xcc;return function(_0x47257d){if(_0x47257d){return _0xe6131f[_0x3045('0x19')](_0x56c056);}return _0xe6131f['status'](_0x56c056)['end']();};}function respondWithResult(_0x379023,_0x146665){_0x146665=_0x146665||0xc8;return function(_0x1025dd){if(_0x1025dd){return _0x379023['status'](_0x146665)[_0x3045('0x1a')](_0x1025dd);}};}function respondWithFilteredResult(_0xda1a97,_0x522a49){return function(_0x3ca5aa){if(_0x3ca5aa){var _0x3cc99e=typeof _0x522a49[_0x3045('0x1b')]===_0x3045('0x1c')&&typeof _0x522a49[_0x3045('0x1d')]===_0x3045('0x1c');var _0x1c67dc=_0x3ca5aa[_0x3045('0x1e')];var _0x53055a=_0x3cc99e?0x0:_0x522a49[_0x3045('0x1b')];var _0x164f8f=_0x3cc99e?_0x3ca5aa[_0x3045('0x1e')]:_0x522a49[_0x3045('0x1b')]+_0x522a49[_0x3045('0x1d')];var _0x3b0b6a;if(_0x164f8f>=_0x1c67dc){_0x164f8f=_0x1c67dc;_0x3b0b6a=0xc8;}else{_0x3b0b6a=0xce;}_0xda1a97[_0x3045('0x1f')](_0x3b0b6a);return _0xda1a97[_0x3045('0x20')](_0x3045('0x21'),_0x53055a+'-'+_0x164f8f+'/'+_0x1c67dc)['json'](_0x3ca5aa);}return null;};}function patchUpdates(_0x10b960){return function(_0x157dfa){try{jsonpatch[_0x3045('0x22')](_0x157dfa,_0x10b960,!![]);}catch(_0x432e0a){return BPromise[_0x3045('0x23')](_0x432e0a);}return _0x157dfa[_0x3045('0x24')]();};}function saveUpdates(_0xfcfcac,_0x19e11e){return function(_0x9dc8ae){if(_0x9dc8ae){return _0x9dc8ae[_0x3045('0x25')](_0xfcfcac)['then'](function(_0x2327ab){return _0x2327ab;});}return null;};}function removeEntity(_0x30c44f,_0x56799b){return function(_0x297093){if(_0x297093){return _0x297093['destroy']()['then'](function(){_0x30c44f[_0x3045('0x1f')](0xcc)[_0x3045('0x26')]();});}};}function handleEntityNotFound(_0x152e4e,_0x21e002){return function(_0x32c650){if(!_0x32c650){_0x152e4e['sendStatus'](0x194);}return _0x32c650;};}function handleError(_0x512c33,_0x5bada7){_0x5bada7=_0x5bada7||0x1f4;return function(_0x1582be){logger[_0x3045('0x27')](_0x1582be['stack']);if(_0x1582be[_0x3045('0x28')]){delete _0x1582be[_0x3045('0x28')];}_0x512c33[_0x3045('0x1f')](_0x5bada7)[_0x3045('0x29')](_0x1582be);};}exports[_0x3045('0x2a')]=function(_0x19c151,_0x4689e3){var _0x56fb89={},_0xd8ffee={},_0x119b2b={'count':0x0,'rows':[]};var _0x38dca2=_['map'](db['FreshsalesConfiguration'][_0x3045('0x2b')],function(_0x53b6be){return{'name':_0x53b6be[_0x3045('0x2c')],'type':_0x53b6be[_0x3045('0x2d')][_0x3045('0x2e')]};});_0xd8ffee['model']=_['map'](_0x38dca2,_0x3045('0x28'));_0xd8ffee['query']=_[_0x3045('0x2f')](_0x19c151[_0x3045('0x30')]);_0xd8ffee['filters']=_['intersection'](_0xd8ffee[_0x3045('0x31')],_0xd8ffee[_0x3045('0x30')]);_0x56fb89[_0x3045('0x32')]=_[_0x3045('0x33')](_0xd8ffee['model'],qs['fields'](_0x19c151[_0x3045('0x30')][_0x3045('0x34')]));_0x56fb89[_0x3045('0x32')]=_0x56fb89[_0x3045('0x32')]['length']?_0x56fb89[_0x3045('0x32')]:_0xd8ffee[_0x3045('0x31')];if(!_0x19c151[_0x3045('0x30')][_0x3045('0x35')](_0x3045('0x36'))){_0x56fb89[_0x3045('0x1d')]=qs[_0x3045('0x1d')](_0x19c151[_0x3045('0x30')][_0x3045('0x1d')]);_0x56fb89[_0x3045('0x1b')]=qs['offset'](_0x19c151[_0x3045('0x30')][_0x3045('0x1b')]);}_0x56fb89[_0x3045('0x37')]=qs[_0x3045('0x38')](_0x19c151['query'][_0x3045('0x38')]);_0x56fb89[_0x3045('0x39')]=qs['filters'](_[_0x3045('0x3a')](_0x19c151[_0x3045('0x30')],_0xd8ffee[_0x3045('0x3b')]),_0x38dca2);if(_0x19c151[_0x3045('0x30')][_0x3045('0x3c')]){_0x56fb89[_0x3045('0x39')]=_[_0x3045('0x3d')](_0x56fb89[_0x3045('0x39')],{'$or':_['map'](_0x38dca2,function(_0x231077){if(_0x231077[_0x3045('0x2d')]!==_0x3045('0x3e')){var _0x585b97={};_0x585b97[_0x231077['name']]={'$like':'%'+_0x19c151[_0x3045('0x30')]['filter']+'%'};return _0x585b97;}})});}_0x56fb89=_[_0x3045('0x3d')]({},_0x56fb89,_0x19c151[_0x3045('0x3f')]);var _0x32a5a5={'where':_0x56fb89[_0x3045('0x39')]};return db[_0x3045('0x40')][_0x3045('0x1e')](_0x32a5a5)['then'](function(_0x4f2380){_0x119b2b[_0x3045('0x1e')]=_0x4f2380;if(_0x19c151[_0x3045('0x30')][_0x3045('0x41')]){_0x56fb89[_0x3045('0x42')]=[{'all':!![]}];}return db[_0x3045('0x40')][_0x3045('0x43')](_0x56fb89);})[_0x3045('0x44')](function(_0x8707d7){_0x119b2b['rows']=_0x8707d7;return _0x119b2b;})['then'](respondWithFilteredResult(_0x4689e3,_0x56fb89))['catch'](handleError(_0x4689e3,null));};exports[_0x3045('0x45')]=function(_0x48681c,_0xae7fd1){var _0xde521a={'raw':![],'where':{'id':_0x48681c[_0x3045('0x46')]['id']}},_0x2ac9ef={};_0x2ac9ef[_0x3045('0x31')]=_[_0x3045('0x2f')](db[_0x3045('0x40')][_0x3045('0x2b')]);_0x2ac9ef[_0x3045('0x30')]=_['keys'](_0x48681c[_0x3045('0x30')]);_0x2ac9ef[_0x3045('0x3b')]=_[_0x3045('0x33')](_0x2ac9ef[_0x3045('0x31')],_0x2ac9ef[_0x3045('0x30')]);_0xde521a['attributes']=_[_0x3045('0x33')](_0x2ac9ef[_0x3045('0x31')],qs[_0x3045('0x34')](_0x48681c[_0x3045('0x30')][_0x3045('0x34')]));_0xde521a[_0x3045('0x32')]=_0xde521a[_0x3045('0x32')][_0x3045('0x47')]?_0xde521a[_0x3045('0x32')]:_0x2ac9ef[_0x3045('0x31')];if(_0x48681c[_0x3045('0x30')][_0x3045('0x41')]){_0xde521a['include']=[{'all':!![]}];}_0xde521a=_[_0x3045('0x3d')]({},_0xde521a,_0x48681c[_0x3045('0x3f')]);return db[_0x3045('0x40')][_0x3045('0x48')](_0xde521a)[_0x3045('0x44')](handleEntityNotFound(_0xae7fd1,null))[_0x3045('0x44')](respondWithResult(_0xae7fd1,null))[_0x3045('0x49')](handleError(_0xae7fd1,null));};exports[_0x3045('0x4a')]=function(_0x17162c,_0x4e4532){return db[_0x3045('0x40')]['create'](_0x17162c[_0x3045('0x4b')],{})[_0x3045('0x44')](respondWithResult(_0x4e4532,0xc9))[_0x3045('0x49')](handleError(_0x4e4532,null));};exports[_0x3045('0x25')]=function(_0x5ae9d4,_0x14360b){if(_0x5ae9d4['body']['id']){delete _0x5ae9d4[_0x3045('0x4b')]['id'];}return db['FreshsalesConfiguration'][_0x3045('0x48')]({'where':{'id':_0x5ae9d4[_0x3045('0x46')]['id']}})[_0x3045('0x44')](handleEntityNotFound(_0x14360b,null))[_0x3045('0x44')](saveUpdates(_0x5ae9d4[_0x3045('0x4b')],null))[_0x3045('0x44')](respondWithResult(_0x14360b,null))[_0x3045('0x49')](handleError(_0x14360b,null));};exports['destroy']=function(_0x261b1b,_0x1f6979){return db[_0x3045('0x40')]['find']({'where':{'id':_0x261b1b[_0x3045('0x46')]['id']}})[_0x3045('0x44')](handleEntityNotFound(_0x1f6979,null))[_0x3045('0x44')](removeEntity(_0x1f6979,null))[_0x3045('0x49')](handleError(_0x1f6979,null));};exports[_0x3045('0x4c')]=function(_0x2319ba,_0xaa37e8,_0x19568b){var _0x7b9c19={};var _0x273e52={};var _0x42491b;var _0x1ed09f;return db[_0x3045('0x40')]['findOne']({'where':{'id':_0x2319ba[_0x3045('0x46')]['id']}})['then'](handleEntityNotFound(_0xaa37e8,null))[_0x3045('0x44')](function(_0x248cf8){if(_0x248cf8){_0x42491b=_0x248cf8;_0x273e52[_0x3045('0x31')]=_[_0x3045('0x2f')](db['FreshsalesField'][_0x3045('0x2b')]);_0x273e52[_0x3045('0x30')]=_[_0x3045('0x2f')](_0x2319ba[_0x3045('0x30')]);_0x273e52[_0x3045('0x3b')]=_[_0x3045('0x33')](_0x273e52[_0x3045('0x31')],_0x273e52[_0x3045('0x30')]);_0x7b9c19['attributes']=_[_0x3045('0x33')](_0x273e52['model'],qs[_0x3045('0x34')](_0x2319ba[_0x3045('0x30')][_0x3045('0x34')]));_0x7b9c19[_0x3045('0x32')]=_0x7b9c19['attributes'][_0x3045('0x47')]?_0x7b9c19[_0x3045('0x32')]:_0x273e52[_0x3045('0x31')];_0x7b9c19[_0x3045('0x37')]=qs[_0x3045('0x38')](_0x2319ba[_0x3045('0x30')]['sort']);_0x7b9c19[_0x3045('0x39')]=qs['filters'](_[_0x3045('0x3a')](_0x2319ba[_0x3045('0x30')],_0x273e52[_0x3045('0x3b')]));if(_0x2319ba[_0x3045('0x30')][_0x3045('0x3c')]){_0x7b9c19['where']=_[_0x3045('0x3d')](_0x7b9c19[_0x3045('0x39')],{'$or':_[_0x3045('0x4d')](_0x7b9c19[_0x3045('0x32')],function(_0x230039){var _0xd0079b={};_0xd0079b[_0x230039]={'$like':'%'+_0x2319ba[_0x3045('0x30')][_0x3045('0x3c')]+'%'};return _0xd0079b;})});}_0x7b9c19=_['merge']({},_0x7b9c19,_0x2319ba[_0x3045('0x3f')]);return _0x42491b['getSubjects'](_0x7b9c19);}})[_0x3045('0x44')](function(_0x1a17d7){if(_0x1a17d7){_0x1ed09f=_0x1a17d7['length'];if(!_0x2319ba[_0x3045('0x30')][_0x3045('0x35')](_0x3045('0x36'))){_0x7b9c19['limit']=qs[_0x3045('0x1d')](_0x2319ba[_0x3045('0x30')]['limit']);_0x7b9c19[_0x3045('0x1b')]=qs['offset'](_0x2319ba[_0x3045('0x30')][_0x3045('0x1b')]);}return _0x42491b[_0x3045('0x4c')](_0x7b9c19);}})['then'](function(_0x531484){if(_0x531484){return _0x531484?{'count':_0x1ed09f,'rows':_0x531484}:null;}})[_0x3045('0x44')](respondWithResult(_0xaa37e8,null))['catch'](handleError(_0xaa37e8,null));};exports['getDescriptions']=function(_0x3e4715,_0x1cd8ce,_0x2e06f7){var _0x238f95={};var _0x5d8dbf={};var _0x59baa6;var _0x5c88ca;return db[_0x3045('0x40')]['findOne']({'where':{'id':_0x3e4715[_0x3045('0x46')]['id']}})[_0x3045('0x44')](handleEntityNotFound(_0x1cd8ce,null))[_0x3045('0x44')](function(_0x3c4e88){if(_0x3c4e88){_0x59baa6=_0x3c4e88;_0x5d8dbf[_0x3045('0x31')]=_['keys'](db[_0x3045('0x4e')][_0x3045('0x2b')]);_0x5d8dbf['query']=_[_0x3045('0x2f')](_0x3e4715[_0x3045('0x30')]);_0x5d8dbf['filters']=_['intersection'](_0x5d8dbf[_0x3045('0x31')],_0x5d8dbf[_0x3045('0x30')]);_0x238f95[_0x3045('0x32')]=_[_0x3045('0x33')](_0x5d8dbf['model'],qs[_0x3045('0x34')](_0x3e4715['query'][_0x3045('0x34')]));_0x238f95['attributes']=_0x238f95['attributes'][_0x3045('0x47')]?_0x238f95[_0x3045('0x32')]:_0x5d8dbf['model'];_0x238f95[_0x3045('0x37')]=qs[_0x3045('0x38')](_0x3e4715[_0x3045('0x30')]['sort']);_0x238f95[_0x3045('0x39')]=qs[_0x3045('0x3b')](_['pick'](_0x3e4715['query'],_0x5d8dbf[_0x3045('0x3b')]));if(_0x3e4715[_0x3045('0x30')][_0x3045('0x3c')]){_0x238f95[_0x3045('0x39')]=_[_0x3045('0x3d')](_0x238f95[_0x3045('0x39')],{'$or':_[_0x3045('0x4d')](_0x238f95[_0x3045('0x32')],function(_0x5b2977){var _0x426903={};_0x426903[_0x5b2977]={'$like':'%'+_0x3e4715[_0x3045('0x30')][_0x3045('0x3c')]+'%'};return _0x426903;})});}_0x238f95=_[_0x3045('0x3d')]({},_0x238f95,_0x3e4715[_0x3045('0x3f')]);return _0x59baa6[_0x3045('0x4f')](_0x238f95);}})['then'](function(_0x2c31b6){if(_0x2c31b6){_0x5c88ca=_0x2c31b6[_0x3045('0x47')];if(!_0x3e4715['query']['hasOwnProperty'](_0x3045('0x36'))){_0x238f95[_0x3045('0x1d')]=qs['limit'](_0x3e4715[_0x3045('0x30')][_0x3045('0x1d')]);_0x238f95[_0x3045('0x1b')]=qs[_0x3045('0x1b')](_0x3e4715[_0x3045('0x30')][_0x3045('0x1b')]);}return _0x59baa6[_0x3045('0x4f')](_0x238f95);}})[_0x3045('0x44')](function(_0x2dc598){if(_0x2dc598){return _0x2dc598?{'count':_0x5c88ca,'rows':_0x2dc598}:null;}})['then'](respondWithResult(_0x1cd8ce,null))['catch'](handleError(_0x1cd8ce,null));};exports[_0x3045('0x50')]=function(_0x539c75,_0x30a0d5,_0x49b732){var _0x49d76e={};var _0x5b5b08={};var _0x4c874f;var _0x5c1230;return db[_0x3045('0x40')]['findOne']({'where':{'id':_0x539c75[_0x3045('0x46')]['id']}})['then'](handleEntityNotFound(_0x30a0d5,null))[_0x3045('0x44')](function(_0x43e3f2){if(_0x43e3f2){_0x4c874f=_0x43e3f2;_0x5b5b08[_0x3045('0x31')]=_['keys'](db[_0x3045('0x4e')][_0x3045('0x2b')]);_0x5b5b08[_0x3045('0x30')]=_[_0x3045('0x2f')](_0x539c75['query']);_0x5b5b08[_0x3045('0x3b')]=_[_0x3045('0x33')](_0x5b5b08[_0x3045('0x31')],_0x5b5b08[_0x3045('0x30')]);_0x49d76e[_0x3045('0x32')]=_['intersection'](_0x5b5b08[_0x3045('0x31')],qs['fields'](_0x539c75[_0x3045('0x30')][_0x3045('0x34')]));_0x49d76e['attributes']=_0x49d76e['attributes'][_0x3045('0x47')]?_0x49d76e[_0x3045('0x32')]:_0x5b5b08['model'];_0x49d76e[_0x3045('0x37')]=qs['sort'](_0x539c75[_0x3045('0x30')]['sort']);_0x49d76e[_0x3045('0x39')]=qs['filters'](_[_0x3045('0x3a')](_0x539c75[_0x3045('0x30')],_0x5b5b08['filters']));if(_0x539c75[_0x3045('0x30')]['filter']){_0x49d76e[_0x3045('0x39')]=_[_0x3045('0x3d')](_0x49d76e['where'],{'$or':_[_0x3045('0x4d')](_0x49d76e[_0x3045('0x32')],function(_0x57163c){var _0x135d27={};_0x135d27[_0x57163c]={'$like':'%'+_0x539c75['query'][_0x3045('0x3c')]+'%'};return _0x135d27;})});}_0x49d76e=_[_0x3045('0x3d')]({},_0x49d76e,_0x539c75[_0x3045('0x3f')]);return _0x4c874f[_0x3045('0x50')](_0x49d76e);}})[_0x3045('0x44')](function(_0x160587){if(_0x160587){_0x5c1230=_0x160587[_0x3045('0x47')];if(!_0x539c75[_0x3045('0x30')][_0x3045('0x35')](_0x3045('0x36'))){_0x49d76e[_0x3045('0x1d')]=qs['limit'](_0x539c75[_0x3045('0x30')][_0x3045('0x1d')]);_0x49d76e[_0x3045('0x1b')]=qs[_0x3045('0x1b')](_0x539c75[_0x3045('0x30')][_0x3045('0x1b')]);}return _0x4c874f['getFields'](_0x49d76e);}})['then'](function(_0x2bd184){if(_0x2bd184){return _0x2bd184?{'count':_0x5c1230,'rows':_0x2bd184}:null;}})['then'](respondWithResult(_0x30a0d5,null))[_0x3045('0x49')](handleError(_0x30a0d5,null));};
\ No newline at end of file
+var _0x5ebb=['../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','count','Content-Range','apply','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','FreshsalesConfiguration','includeAll','include','findAll','catch','show','params','intersection','create','body','find','getSubjects','findOne','FreshsalesField','hasOwnProperty','getDescriptions','getFields','eml-format','zip-dir','bluebird','mustache','util','path','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils'];(function(_0x5ab0fb,_0x355be1){var _0x15761a=function(_0x32f808){while(--_0x32f808){_0x5ab0fb['push'](_0x5ab0fb['shift']());}};_0x15761a(++_0x355be1);}(_0x5ebb,0xde));var _0xb5eb=function(_0x4b4358,_0x557225){_0x4b4358=_0x4b4358-0x0;var _0x4c4923=_0x5ebb[_0x4b4358];return _0x4c4923;};'use strict';var emlformat=require(_0xb5eb('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb5eb('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xb5eb('0x2'));var Mustache=require(_0xb5eb('0x3'));var util=require(_0xb5eb('0x4'));var path=require(_0xb5eb('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb5eb('0x6'));var _=require('lodash');var squel=require(_0xb5eb('0x7'));var crypto=require(_0xb5eb('0x8'));var jsforce=require(_0xb5eb('0x9'));var deskjs=require(_0xb5eb('0xa'));var toCsv=require(_0xb5eb('0xb'));var querystring=require(_0xb5eb('0xc'));var Papa=require('papaparse');var Redis=require(_0xb5eb('0xd'));var authService=require(_0xb5eb('0xe'));var qs=require(_0xb5eb('0xf'));var as=require(_0xb5eb('0x10'));var hardwareService=require(_0xb5eb('0x11'));var logger=require(_0xb5eb('0x12'))(_0xb5eb('0x13'));var utils=require(_0xb5eb('0x14'));var config=require(_0xb5eb('0x15'));var licenseUtil=require(_0xb5eb('0x16'));var db=require(_0xb5eb('0x17'))['db'];function respondWithStatusCode(_0x328244,_0x18ef3e){_0x18ef3e=_0x18ef3e||0xcc;return function(_0xebb813){if(_0xebb813){return _0x328244[_0xb5eb('0x18')](_0x18ef3e);}return _0x328244[_0xb5eb('0x19')](_0x18ef3e)[_0xb5eb('0x1a')]();};}function respondWithResult(_0x46032d,_0x40fe51){_0x40fe51=_0x40fe51||0xc8;return function(_0x18d4a9){if(_0x18d4a9){return _0x46032d[_0xb5eb('0x19')](_0x40fe51)[_0xb5eb('0x1b')](_0x18d4a9);}};}function respondWithFilteredResult(_0x5a78ba,_0x4dfe45){return function(_0xe20e0c){if(_0xe20e0c){var _0x228706=typeof _0x4dfe45['offset']===_0xb5eb('0x1c')&&typeof _0x4dfe45[_0xb5eb('0x1d')]==='undefined';var _0x35a132=_0xe20e0c['count'];var _0x5b580a=_0x228706?0x0:_0x4dfe45[_0xb5eb('0x1e')];var _0x40079a=_0x228706?_0xe20e0c[_0xb5eb('0x1f')]:_0x4dfe45[_0xb5eb('0x1e')]+_0x4dfe45['limit'];var _0x1dd976;if(_0x40079a>=_0x35a132){_0x40079a=_0x35a132;_0x1dd976=0xc8;}else{_0x1dd976=0xce;}_0x5a78ba[_0xb5eb('0x19')](_0x1dd976);return _0x5a78ba['set'](_0xb5eb('0x20'),_0x5b580a+'-'+_0x40079a+'/'+_0x35a132)[_0xb5eb('0x1b')](_0xe20e0c);}return null;};}function patchUpdates(_0x2f90b2){return function(_0x760839){try{jsonpatch[_0xb5eb('0x21')](_0x760839,_0x2f90b2,!![]);}catch(_0x43da54){return BPromise['reject'](_0x43da54);}return _0x760839[_0xb5eb('0x22')]();};}function saveUpdates(_0x5c0619,_0xb4c245){return function(_0x45767e){if(_0x45767e){return _0x45767e[_0xb5eb('0x23')](_0x5c0619)[_0xb5eb('0x24')](function(_0x3def53){return _0x3def53;});}return null;};}function removeEntity(_0x47cd1a,_0x43f3e8){return function(_0x58dc01){if(_0x58dc01){return _0x58dc01[_0xb5eb('0x25')]()[_0xb5eb('0x24')](function(){_0x47cd1a['status'](0xcc)[_0xb5eb('0x1a')]();});}};}function handleEntityNotFound(_0x46c74b,_0x34fb51){return function(_0x46e982){if(!_0x46e982){_0x46c74b['sendStatus'](0x194);}return _0x46e982;};}function handleError(_0x2f7af8,_0x3fdb86){_0x3fdb86=_0x3fdb86||0x1f4;return function(_0x55cb28){logger[_0xb5eb('0x26')](_0x55cb28[_0xb5eb('0x27')]);if(_0x55cb28[_0xb5eb('0x28')]){delete _0x55cb28[_0xb5eb('0x28')];}_0x2f7af8[_0xb5eb('0x19')](_0x3fdb86)[_0xb5eb('0x29')](_0x55cb28);};}exports[_0xb5eb('0x2a')]=function(_0x856c3f,_0x45bfc3){var _0x20915c={},_0x6e9427={},_0x4a11da={'count':0x0,'rows':[]};var _0x5f1b89=_[_0xb5eb('0x2b')](db['FreshsalesConfiguration'][_0xb5eb('0x2c')],function(_0x2c2aca){return{'name':_0x2c2aca[_0xb5eb('0x2d')],'type':_0x2c2aca[_0xb5eb('0x2e')][_0xb5eb('0x2f')]};});_0x6e9427[_0xb5eb('0x30')]=_[_0xb5eb('0x2b')](_0x5f1b89,_0xb5eb('0x28'));_0x6e9427[_0xb5eb('0x31')]=_[_0xb5eb('0x32')](_0x856c3f[_0xb5eb('0x31')]);_0x6e9427['filters']=_['intersection'](_0x6e9427['model'],_0x6e9427[_0xb5eb('0x31')]);_0x20915c[_0xb5eb('0x33')]=_['intersection'](_0x6e9427[_0xb5eb('0x30')],qs[_0xb5eb('0x34')](_0x856c3f['query'][_0xb5eb('0x34')]));_0x20915c[_0xb5eb('0x33')]=_0x20915c['attributes'][_0xb5eb('0x35')]?_0x20915c[_0xb5eb('0x33')]:_0x6e9427['model'];if(!_0x856c3f[_0xb5eb('0x31')]['hasOwnProperty'](_0xb5eb('0x36'))){_0x20915c[_0xb5eb('0x1d')]=qs['limit'](_0x856c3f[_0xb5eb('0x31')][_0xb5eb('0x1d')]);_0x20915c[_0xb5eb('0x1e')]=qs[_0xb5eb('0x1e')](_0x856c3f[_0xb5eb('0x31')][_0xb5eb('0x1e')]);}_0x20915c[_0xb5eb('0x37')]=qs[_0xb5eb('0x38')](_0x856c3f[_0xb5eb('0x31')][_0xb5eb('0x38')]);_0x20915c[_0xb5eb('0x39')]=qs[_0xb5eb('0x3a')](_[_0xb5eb('0x3b')](_0x856c3f['query'],_0x6e9427['filters']),_0x5f1b89);if(_0x856c3f[_0xb5eb('0x31')][_0xb5eb('0x3c')]){_0x20915c[_0xb5eb('0x39')]=_[_0xb5eb('0x3d')](_0x20915c['where'],{'$or':_[_0xb5eb('0x2b')](_0x5f1b89,function(_0x30d342){if(_0x30d342[_0xb5eb('0x2e')]!==_0xb5eb('0x3e')){var _0x2289e8={};_0x2289e8[_0x30d342['name']]={'$like':'%'+_0x856c3f[_0xb5eb('0x31')]['filter']+'%'};return _0x2289e8;}})});}_0x20915c=_[_0xb5eb('0x3d')]({},_0x20915c,_0x856c3f[_0xb5eb('0x3f')]);var _0x231746={'where':_0x20915c[_0xb5eb('0x39')]};return db[_0xb5eb('0x40')][_0xb5eb('0x1f')](_0x231746)[_0xb5eb('0x24')](function(_0x5154b5){_0x4a11da[_0xb5eb('0x1f')]=_0x5154b5;if(_0x856c3f[_0xb5eb('0x31')][_0xb5eb('0x41')]){_0x20915c[_0xb5eb('0x42')]=[{'all':!![]}];}return db[_0xb5eb('0x40')][_0xb5eb('0x43')](_0x20915c);})[_0xb5eb('0x24')](function(_0x3fd3a6){_0x4a11da['rows']=_0x3fd3a6;return _0x4a11da;})[_0xb5eb('0x24')](respondWithFilteredResult(_0x45bfc3,_0x20915c))[_0xb5eb('0x44')](handleError(_0x45bfc3,null));};exports[_0xb5eb('0x45')]=function(_0x49a72a,_0xe41961){var _0x178da5={'raw':![],'where':{'id':_0x49a72a[_0xb5eb('0x46')]['id']}},_0x670200={};_0x670200[_0xb5eb('0x30')]=_[_0xb5eb('0x32')](db[_0xb5eb('0x40')][_0xb5eb('0x2c')]);_0x670200['query']=_[_0xb5eb('0x32')](_0x49a72a[_0xb5eb('0x31')]);_0x670200[_0xb5eb('0x3a')]=_[_0xb5eb('0x47')](_0x670200['model'],_0x670200[_0xb5eb('0x31')]);_0x178da5[_0xb5eb('0x33')]=_[_0xb5eb('0x47')](_0x670200[_0xb5eb('0x30')],qs[_0xb5eb('0x34')](_0x49a72a[_0xb5eb('0x31')][_0xb5eb('0x34')]));_0x178da5[_0xb5eb('0x33')]=_0x178da5[_0xb5eb('0x33')][_0xb5eb('0x35')]?_0x178da5[_0xb5eb('0x33')]:_0x670200[_0xb5eb('0x30')];if(_0x49a72a['query']['includeAll']){_0x178da5[_0xb5eb('0x42')]=[{'all':!![]}];}_0x178da5=_[_0xb5eb('0x3d')]({},_0x178da5,_0x49a72a[_0xb5eb('0x3f')]);return db['FreshsalesConfiguration']['find'](_0x178da5)[_0xb5eb('0x24')](handleEntityNotFound(_0xe41961,null))[_0xb5eb('0x24')](respondWithResult(_0xe41961,null))[_0xb5eb('0x44')](handleError(_0xe41961,null));};exports[_0xb5eb('0x48')]=function(_0x97e8ce,_0x1c3e15){return db[_0xb5eb('0x40')][_0xb5eb('0x48')](_0x97e8ce[_0xb5eb('0x49')],{})[_0xb5eb('0x24')](respondWithResult(_0x1c3e15,0xc9))[_0xb5eb('0x44')](handleError(_0x1c3e15,null));};exports[_0xb5eb('0x23')]=function(_0x3646f1,_0xd4e2a1){if(_0x3646f1[_0xb5eb('0x49')]['id']){delete _0x3646f1[_0xb5eb('0x49')]['id'];}return db['FreshsalesConfiguration'][_0xb5eb('0x4a')]({'where':{'id':_0x3646f1[_0xb5eb('0x46')]['id']}})[_0xb5eb('0x24')](handleEntityNotFound(_0xd4e2a1,null))[_0xb5eb('0x24')](saveUpdates(_0x3646f1[_0xb5eb('0x49')],null))['then'](respondWithResult(_0xd4e2a1,null))['catch'](handleError(_0xd4e2a1,null));};exports[_0xb5eb('0x25')]=function(_0xc96920,_0x430f7d){return db[_0xb5eb('0x40')][_0xb5eb('0x4a')]({'where':{'id':_0xc96920[_0xb5eb('0x46')]['id']}})[_0xb5eb('0x24')](handleEntityNotFound(_0x430f7d,null))[_0xb5eb('0x24')](removeEntity(_0x430f7d,null))[_0xb5eb('0x44')](handleError(_0x430f7d,null));};exports[_0xb5eb('0x4b')]=function(_0x47445e,_0x5cfd00,_0xcaa21e){var _0x54f295={};var _0x203821={};var _0x3c2dc2;var _0x3d8a56;return db[_0xb5eb('0x40')][_0xb5eb('0x4c')]({'where':{'id':_0x47445e[_0xb5eb('0x46')]['id']}})['then'](handleEntityNotFound(_0x5cfd00,null))[_0xb5eb('0x24')](function(_0x30e5e9){if(_0x30e5e9){_0x3c2dc2=_0x30e5e9;_0x203821[_0xb5eb('0x30')]=_[_0xb5eb('0x32')](db[_0xb5eb('0x4d')][_0xb5eb('0x2c')]);_0x203821[_0xb5eb('0x31')]=_[_0xb5eb('0x32')](_0x47445e[_0xb5eb('0x31')]);_0x203821['filters']=_[_0xb5eb('0x47')](_0x203821[_0xb5eb('0x30')],_0x203821[_0xb5eb('0x31')]);_0x54f295[_0xb5eb('0x33')]=_[_0xb5eb('0x47')](_0x203821[_0xb5eb('0x30')],qs[_0xb5eb('0x34')](_0x47445e[_0xb5eb('0x31')][_0xb5eb('0x34')]));_0x54f295[_0xb5eb('0x33')]=_0x54f295[_0xb5eb('0x33')][_0xb5eb('0x35')]?_0x54f295[_0xb5eb('0x33')]:_0x203821[_0xb5eb('0x30')];_0x54f295[_0xb5eb('0x37')]=qs['sort'](_0x47445e[_0xb5eb('0x31')][_0xb5eb('0x38')]);_0x54f295[_0xb5eb('0x39')]=qs[_0xb5eb('0x3a')](_[_0xb5eb('0x3b')](_0x47445e[_0xb5eb('0x31')],_0x203821[_0xb5eb('0x3a')]));if(_0x47445e[_0xb5eb('0x31')]['filter']){_0x54f295[_0xb5eb('0x39')]=_[_0xb5eb('0x3d')](_0x54f295[_0xb5eb('0x39')],{'$or':_['map'](_0x54f295[_0xb5eb('0x33')],function(_0xad346c){var _0x8fcfc4={};_0x8fcfc4[_0xad346c]={'$like':'%'+_0x47445e['query'][_0xb5eb('0x3c')]+'%'};return _0x8fcfc4;})});}_0x54f295=_[_0xb5eb('0x3d')]({},_0x54f295,_0x47445e[_0xb5eb('0x3f')]);return _0x3c2dc2['getSubjects'](_0x54f295);}})['then'](function(_0x54e7dc){if(_0x54e7dc){_0x3d8a56=_0x54e7dc[_0xb5eb('0x35')];if(!_0x47445e['query'][_0xb5eb('0x4e')](_0xb5eb('0x36'))){_0x54f295[_0xb5eb('0x1d')]=qs[_0xb5eb('0x1d')](_0x47445e['query'][_0xb5eb('0x1d')]);_0x54f295[_0xb5eb('0x1e')]=qs['offset'](_0x47445e[_0xb5eb('0x31')][_0xb5eb('0x1e')]);}return _0x3c2dc2[_0xb5eb('0x4b')](_0x54f295);}})[_0xb5eb('0x24')](function(_0x4191f0){if(_0x4191f0){return _0x4191f0?{'count':_0x3d8a56,'rows':_0x4191f0}:null;}})[_0xb5eb('0x24')](respondWithResult(_0x5cfd00,null))[_0xb5eb('0x44')](handleError(_0x5cfd00,null));};exports['getDescriptions']=function(_0x413461,_0x1d3c2f,_0x6e2c54){var _0x47371b={};var _0x3071cb={};var _0x1fa3cb;var _0x4fd2b8;return db['FreshsalesConfiguration'][_0xb5eb('0x4c')]({'where':{'id':_0x413461[_0xb5eb('0x46')]['id']}})[_0xb5eb('0x24')](handleEntityNotFound(_0x1d3c2f,null))[_0xb5eb('0x24')](function(_0x38db20){if(_0x38db20){_0x1fa3cb=_0x38db20;_0x3071cb[_0xb5eb('0x30')]=_[_0xb5eb('0x32')](db[_0xb5eb('0x4d')]['rawAttributes']);_0x3071cb[_0xb5eb('0x31')]=_[_0xb5eb('0x32')](_0x413461['query']);_0x3071cb['filters']=_['intersection'](_0x3071cb['model'],_0x3071cb[_0xb5eb('0x31')]);_0x47371b[_0xb5eb('0x33')]=_[_0xb5eb('0x47')](_0x3071cb[_0xb5eb('0x30')],qs[_0xb5eb('0x34')](_0x413461['query'][_0xb5eb('0x34')]));_0x47371b[_0xb5eb('0x33')]=_0x47371b['attributes'][_0xb5eb('0x35')]?_0x47371b[_0xb5eb('0x33')]:_0x3071cb[_0xb5eb('0x30')];_0x47371b[_0xb5eb('0x37')]=qs[_0xb5eb('0x38')](_0x413461[_0xb5eb('0x31')][_0xb5eb('0x38')]);_0x47371b[_0xb5eb('0x39')]=qs[_0xb5eb('0x3a')](_[_0xb5eb('0x3b')](_0x413461['query'],_0x3071cb[_0xb5eb('0x3a')]));if(_0x413461[_0xb5eb('0x31')]['filter']){_0x47371b[_0xb5eb('0x39')]=_[_0xb5eb('0x3d')](_0x47371b[_0xb5eb('0x39')],{'$or':_[_0xb5eb('0x2b')](_0x47371b[_0xb5eb('0x33')],function(_0x3c90f9){var _0x3d2b41={};_0x3d2b41[_0x3c90f9]={'$like':'%'+_0x413461[_0xb5eb('0x31')][_0xb5eb('0x3c')]+'%'};return _0x3d2b41;})});}_0x47371b=_[_0xb5eb('0x3d')]({},_0x47371b,_0x413461[_0xb5eb('0x3f')]);return _0x1fa3cb['getDescriptions'](_0x47371b);}})['then'](function(_0x56820e){if(_0x56820e){_0x4fd2b8=_0x56820e[_0xb5eb('0x35')];if(!_0x413461[_0xb5eb('0x31')]['hasOwnProperty'](_0xb5eb('0x36'))){_0x47371b[_0xb5eb('0x1d')]=qs[_0xb5eb('0x1d')](_0x413461[_0xb5eb('0x31')]['limit']);_0x47371b[_0xb5eb('0x1e')]=qs[_0xb5eb('0x1e')](_0x413461[_0xb5eb('0x31')][_0xb5eb('0x1e')]);}return _0x1fa3cb[_0xb5eb('0x4f')](_0x47371b);}})[_0xb5eb('0x24')](function(_0x23db94){if(_0x23db94){return _0x23db94?{'count':_0x4fd2b8,'rows':_0x23db94}:null;}})[_0xb5eb('0x24')](respondWithResult(_0x1d3c2f,null))[_0xb5eb('0x44')](handleError(_0x1d3c2f,null));};exports[_0xb5eb('0x50')]=function(_0x24fee0,_0x3fb50b,_0x2a9a0e){var _0x3a33c3={};var _0x572908={};var _0x318ca0;var _0x5c2614;return db[_0xb5eb('0x40')]['findOne']({'where':{'id':_0x24fee0['params']['id']}})[_0xb5eb('0x24')](handleEntityNotFound(_0x3fb50b,null))[_0xb5eb('0x24')](function(_0x815d0e){if(_0x815d0e){_0x318ca0=_0x815d0e;_0x572908[_0xb5eb('0x30')]=_[_0xb5eb('0x32')](db['FreshsalesField'][_0xb5eb('0x2c')]);_0x572908[_0xb5eb('0x31')]=_[_0xb5eb('0x32')](_0x24fee0[_0xb5eb('0x31')]);_0x572908[_0xb5eb('0x3a')]=_[_0xb5eb('0x47')](_0x572908[_0xb5eb('0x30')],_0x572908[_0xb5eb('0x31')]);_0x3a33c3[_0xb5eb('0x33')]=_[_0xb5eb('0x47')](_0x572908[_0xb5eb('0x30')],qs[_0xb5eb('0x34')](_0x24fee0[_0xb5eb('0x31')][_0xb5eb('0x34')]));_0x3a33c3[_0xb5eb('0x33')]=_0x3a33c3[_0xb5eb('0x33')]['length']?_0x3a33c3[_0xb5eb('0x33')]:_0x572908[_0xb5eb('0x30')];_0x3a33c3[_0xb5eb('0x37')]=qs[_0xb5eb('0x38')](_0x24fee0[_0xb5eb('0x31')][_0xb5eb('0x38')]);_0x3a33c3[_0xb5eb('0x39')]=qs[_0xb5eb('0x3a')](_[_0xb5eb('0x3b')](_0x24fee0[_0xb5eb('0x31')],_0x572908['filters']));if(_0x24fee0[_0xb5eb('0x31')]['filter']){_0x3a33c3[_0xb5eb('0x39')]=_[_0xb5eb('0x3d')](_0x3a33c3[_0xb5eb('0x39')],{'$or':_[_0xb5eb('0x2b')](_0x3a33c3['attributes'],function(_0x4bdaad){var _0x44b535={};_0x44b535[_0x4bdaad]={'$like':'%'+_0x24fee0[_0xb5eb('0x31')][_0xb5eb('0x3c')]+'%'};return _0x44b535;})});}_0x3a33c3=_['merge']({},_0x3a33c3,_0x24fee0[_0xb5eb('0x3f')]);return _0x318ca0['getFields'](_0x3a33c3);}})[_0xb5eb('0x24')](function(_0x355f5a){if(_0x355f5a){_0x5c2614=_0x355f5a['length'];if(!_0x24fee0['query']['hasOwnProperty'](_0xb5eb('0x36'))){_0x3a33c3[_0xb5eb('0x1d')]=qs[_0xb5eb('0x1d')](_0x24fee0[_0xb5eb('0x31')]['limit']);_0x3a33c3[_0xb5eb('0x1e')]=qs[_0xb5eb('0x1e')](_0x24fee0[_0xb5eb('0x31')]['offset']);}return _0x318ca0[_0xb5eb('0x50')](_0x3a33c3);}})[_0xb5eb('0x24')](function(_0xb7dd3){if(_0xb7dd3){return _0xb7dd3?{'count':_0x5c2614,'rows':_0xb7dd3}:null;}})[_0xb5eb('0x24')](respondWithResult(_0x3fb50b,null))[_0xb5eb('0x44')](handleError(_0x3fb50b,null));};
\ No newline at end of file
index e375140..a5f28f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50bc=['./intFreshsalesConfiguration.attributes','exports','FreshsalesConfiguration','int_freshsales_configurations','util','../../config/logger','api','moment','rimraf'];(function(_0x381589,_0x27a707){var _0x2a075d=function(_0x4ea19d){while(--_0x4ea19d){_0x381589['push'](_0x381589['shift']());}};_0x2a075d(++_0x27a707);}(_0x50bc,0xf7));var _0xc50b=function(_0x9c1927,_0x3a5543){_0x9c1927=_0x9c1927-0x0;var _0x5b064e=_0x50bc[_0x9c1927];return _0x5b064e;};'use strict';var _=require('lodash');var util=require(_0xc50b('0x0'));var logger=require(_0xc50b('0x1'))(_0xc50b('0x2'));var moment=require(_0xc50b('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xc50b('0x4'));var config=require('../../config/environment');var attributes=require(_0xc50b('0x5'));module[_0xc50b('0x6')]=function(_0x235649,_0x13999b){return _0x235649['define'](_0xc50b('0x7'),attributes,{'tableName':_0xc50b('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xde8d=['bluebird','path','./intFreshsalesConfiguration.attributes','exports','FreshsalesConfiguration','int_freshsales_configurations','lodash','../../config/logger','moment'];(function(_0x52d477,_0x39e29b){var _0x5da74f=function(_0x7d7dfb){while(--_0x7d7dfb){_0x52d477['push'](_0x52d477['shift']());}};_0x5da74f(++_0x39e29b);}(_0xde8d,0x189));var _0xdde8=function(_0x46b9f8,_0x216a13){_0x46b9f8=_0x46b9f8-0x0;var _0x194a9d=_0xde8d[_0x46b9f8];return _0x194a9d;};'use strict';var _=require(_0xdde8('0x0'));var util=require('util');var logger=require(_0xdde8('0x1'))('api');var moment=require(_0xdde8('0x2'));var BPromise=require(_0xdde8('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xdde8('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xdde8('0x5'));module[_0xdde8('0x6')]=function(_0x4effb3,_0x51fd09){return _0x4effb3['define'](_0xdde8('0x7'),attributes,{'tableName':_0xdde8('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bf33c56..9d4ab10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8673=['../../config/environment','jayson/promise','client','http','request','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','FreshsalesConfiguration,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0x212cc9,_0x52b3f8){var _0x26053c=function(_0x5b3602){while(--_0x5b3602){_0x212cc9['push'](_0x212cc9['shift']());}};_0x26053c(++_0x52b3f8);}(_0x8673,0x151));var _0x3867=function(_0x298f8b,_0x100471){_0x298f8b=_0x298f8b-0x0;var _0x3a50e2=_0x8673[_0x298f8b];return _0x3a50e2;};'use strict';var _=require(_0x3867('0x0'));var util=require(_0x3867('0x1'));var moment=require(_0x3867('0x2'));var BPromise=require(_0x3867('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3867('0x4'));var db=require(_0x3867('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x3867('0x6'))(_0x3867('0x7'));var config=require(_0x3867('0x8'));var jayson=require(_0x3867('0x9'));var client=jayson[_0x3867('0xa')][_0x3867('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5521ec,_0x406681,_0x54ba54){return new BPromise(function(_0x516508,_0x28fd21){return client[_0x3867('0xc')](_0x5521ec,_0x54ba54)['then'](function(_0xc1e82e){logger['info']('FreshsalesConfiguration,\x20%s,\x20%s',_0x406681,_0x3867('0xd'));logger[_0x3867('0xe')](_0x3867('0xf'),_0x406681,_0x3867('0xd'),JSON[_0x3867('0x10')](_0xc1e82e));if(_0xc1e82e[_0x3867('0x11')]){if(_0xc1e82e[_0x3867('0x11')][_0x3867('0x12')]===0x1f4){logger[_0x3867('0x11')](_0x3867('0x13'),_0x406681,_0xc1e82e[_0x3867('0x11')][_0x3867('0x14')]);return _0x28fd21(_0xc1e82e[_0x3867('0x11')][_0x3867('0x14')]);}logger[_0x3867('0x11')](_0x3867('0x13'),_0x406681,_0xc1e82e[_0x3867('0x11')]['message']);return _0x516508(_0xc1e82e[_0x3867('0x11')]['message']);}else{logger['info'](_0x3867('0x13'),_0x406681,_0x3867('0xd'));_0x516508(_0xc1e82e[_0x3867('0x15')]['message']);}})[_0x3867('0x16')](function(_0x27c6c3){logger['error'](_0x3867('0x13'),_0x406681,_0x27c6c3);_0x28fd21(_0x27c6c3);});});}
\ No newline at end of file
+var _0x7ea7=['error','message','FreshsalesConfiguration,\x20%s,\x20%s','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','stringify'];(function(_0x39157f,_0x3d8c1e){var _0x1ae4e2=function(_0x3429af){while(--_0x3429af){_0x39157f['push'](_0x39157f['shift']());}};_0x1ae4e2(++_0x3d8c1e);}(_0x7ea7,0x83));var _0x77ea=function(_0x28f32c,_0x4cc342){_0x28f32c=_0x28f32c-0x0;var _0x355402=_0x7ea7[_0x28f32c];return _0x355402;};'use strict';var _=require(_0x77ea('0x0'));var util=require(_0x77ea('0x1'));var moment=require(_0x77ea('0x2'));var BPromise=require('bluebird');var rs=require(_0x77ea('0x3'));var fs=require('fs');var Redis=require(_0x77ea('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x77ea('0x5'));var logger=require(_0x77ea('0x6'))(_0x77ea('0x7'));var config=require(_0x77ea('0x8'));var jayson=require(_0x77ea('0x9'));var client=jayson[_0x77ea('0xa')][_0x77ea('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xb21c6e,_0x16c25c,_0x7fea69){return new BPromise(function(_0x506eb1,_0x5d4d55){return client['request'](_0xb21c6e,_0x7fea69)[_0x77ea('0xc')](function(_0x5ea49d){logger[_0x77ea('0xd')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x16c25c,'request\x20sent');logger['debug']('FreshsalesConfiguration,\x20%s,\x20%s,\x20%s',_0x16c25c,_0x77ea('0xe'),JSON[_0x77ea('0xf')](_0x5ea49d));if(_0x5ea49d['error']){if(_0x5ea49d[_0x77ea('0x10')]['code']===0x1f4){logger[_0x77ea('0x10')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x16c25c,_0x5ea49d[_0x77ea('0x10')][_0x77ea('0x11')]);return _0x5d4d55(_0x5ea49d['error']['message']);}logger[_0x77ea('0x10')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x16c25c,_0x5ea49d[_0x77ea('0x10')][_0x77ea('0x11')]);return _0x506eb1(_0x5ea49d['error'][_0x77ea('0x11')]);}else{logger[_0x77ea('0xd')](_0x77ea('0x12'),_0x16c25c,_0x77ea('0xe'));_0x506eb1(_0x5ea49d[_0x77ea('0x13')][_0x77ea('0x11')]);}})[_0x77ea('0x14')](function(_0x392b33){logger['error']('FreshsalesConfiguration,\x20%s,\x20%s',_0x16c25c,_0x392b33);_0x5d4d55(_0x392b33);});});}
\ No newline at end of file
index 77ebe3a..2426ba1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0bb=['create','put','update','delete','destroy','multer','util','path','express','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show','post'];(function(_0x2abbc7,_0x4e01f7){var _0x1f4801=function(_0x3aa686){while(--_0x3aa686){_0x2abbc7['push'](_0x2abbc7['shift']());}};_0x1f4801(++_0x4e01f7);}(_0xd0bb,0x1eb));var _0xbd0b=function(_0x3fa4bd,_0x14a72d){_0x3fa4bd=_0x3fa4bd-0x0;var _0x358c95=_0xd0bb[_0x3fa4bd];return _0x358c95;};'use strict';var multer=require(_0xbd0b('0x0'));var util=require(_0xbd0b('0x1'));var path=require(_0xbd0b('0x2'));var timeout=require('connect-timeout');var express=require(_0xbd0b('0x3'));var router=express['Router']();var fs_extra=require(_0xbd0b('0x4'));var auth=require(_0xbd0b('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xbd0b('0x6'));var controller=require('./intFreshsalesField.controller');router[_0xbd0b('0x7')]('/',auth[_0xbd0b('0x8')](),controller[_0xbd0b('0x9')]);router[_0xbd0b('0x7')](_0xbd0b('0xa'),auth['isAuthenticated'](),controller[_0xbd0b('0xb')]);router[_0xbd0b('0xc')]('/',auth[_0xbd0b('0x8')](),controller[_0xbd0b('0xd')]);router[_0xbd0b('0xe')]('/:id',auth['isAuthenticated'](),controller[_0xbd0b('0xf')]);router[_0xbd0b('0x10')]('/:id',auth[_0xbd0b('0x8')](),controller[_0xbd0b('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x4ea3=['multer','util','path','connect-timeout','Router','../../components/auth/service','./intFreshsalesField.controller','get','isAuthenticated','index','/:id','post','create','destroy'];(function(_0xcb0eb2,_0x3906bf){var _0xbab9b8=function(_0x24fa8a){while(--_0x24fa8a){_0xcb0eb2['push'](_0xcb0eb2['shift']());}};_0xbab9b8(++_0x3906bf);}(_0x4ea3,0x70));var _0x34ea=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x4ea3[_0x3947c9];return _0x2e7871;};'use strict';var multer=require(_0x34ea('0x0'));var util=require(_0x34ea('0x1'));var path=require(_0x34ea('0x2'));var timeout=require(_0x34ea('0x3'));var express=require('express');var router=express[_0x34ea('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x34ea('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x34ea('0x6'));router[_0x34ea('0x7')]('/',auth[_0x34ea('0x8')](),controller[_0x34ea('0x9')]);router[_0x34ea('0x7')](_0x34ea('0xa'),auth[_0x34ea('0x8')](),controller['show']);router[_0x34ea('0xb')]('/',auth[_0x34ea('0x8')](),controller[_0x34ea('0xc')]);router['put'](_0x34ea('0xa'),auth[_0x34ea('0x8')](),controller['update']);router['delete'](_0x34ea('0xa'),auth[_0x34ea('0x8')](),controller[_0x34ea('0xd')]);module['exports']=router;
\ No newline at end of file
index 9058edd..7f98277 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4793=['sequelize','exports','ENUM','string','customVariable','picklist','STRING','variable','BOOLEAN'];(function(_0x2d184f,_0x47ab54){var _0x282cad=function(_0x2f36bc){while(--_0x2f36bc){_0x2d184f['push'](_0x2d184f['shift']());}};_0x282cad(++_0x47ab54);}(_0x4793,0x129));var _0x3479=function(_0xfa86ad,_0x139d25){_0xfa86ad=_0xfa86ad-0x0;var _0x190e36=_0x4793[_0xfa86ad];return _0x190e36;};'use strict';var Sequelize=require(_0x3479('0x0'));module[_0x3479('0x1')]={'type':{'type':Sequelize[_0x3479('0x2')](_0x3479('0x3'),'variable',_0x3479('0x4'),'keyValue',_0x3479('0x5')),'defaultValue':_0x3479('0x3')},'content':{'type':Sequelize[_0x3479('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x3479('0x2')]('string',_0x3479('0x7'),'customVariable')},'keyContent':{'type':Sequelize[_0x3479('0x6')]},'idField':{'type':Sequelize[_0x3479('0x6')]},'nameField':{'type':Sequelize[_0x3479('0x6')]},'customField':{'type':Sequelize[_0x3479('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x3479('0x6')]}};
\ No newline at end of file
+var _0x3556=['customVariable','sequelize','ENUM','string','variable','keyValue','picklist','STRING'];(function(_0x589280,_0x46a0f2){var _0x499aad=function(_0x5255fe){while(--_0x5255fe){_0x589280['push'](_0x589280['shift']());}};_0x499aad(++_0x46a0f2);}(_0x3556,0x81));var _0x6355=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0x3556[_0x2be8c2];return _0x97f531;};'use strict';var Sequelize=require(_0x6355('0x0'));module['exports']={'type':{'type':Sequelize[_0x6355('0x1')](_0x6355('0x2'),_0x6355('0x3'),'customVariable',_0x6355('0x4'),_0x6355('0x5')),'defaultValue':_0x6355('0x2')},'content':{'type':Sequelize[_0x6355('0x6')]},'key':{'type':Sequelize[_0x6355('0x6')]},'keyType':{'type':Sequelize['ENUM'](_0x6355('0x2'),_0x6355('0x3'),_0x6355('0x7'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x6355('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 41cdd6b..34f4478 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1c2=['save','update','then','destroy','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','FreshsalesField','findAll','rows','catch','show','params','includeAll','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','ejs','lodash','squel','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply'];(function(_0x4a63fc,_0x167a02){var _0x30d4c3=function(_0x3eecb2){while(--_0x3eecb2){_0x4a63fc['push'](_0x4a63fc['shift']());}};_0x30d4c3(++_0x167a02);}(_0xd1c2,0x168));var _0x2d1c=function(_0x52ff30,_0x463647){_0x52ff30=_0x52ff30-0x0;var _0x5d9c42=_0xd1c2[_0x52ff30];return _0x5d9c42;};'use strict';var emlformat=require(_0x2d1c('0x0'));var rimraf=require(_0x2d1c('0x1'));var zipdir=require(_0x2d1c('0x2'));var jsonpatch=require(_0x2d1c('0x3'));var rp=require('request-promise');var moment=require(_0x2d1c('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x2d1c('0x5'));var util=require(_0x2d1c('0x6'));var path=require(_0x2d1c('0x7'));var sox=require(_0x2d1c('0x8'));var csv=require('to-csv');var ejs=require(_0x2d1c('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2d1c('0xa'));var squel=require(_0x2d1c('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x2d1c('0xc'));var toCsv=require('to-csv');var querystring=require(_0x2d1c('0xd'));var Papa=require('papaparse');var Redis=require(_0x2d1c('0xe'));var authService=require(_0x2d1c('0xf'));var qs=require(_0x2d1c('0x10'));var as=require(_0x2d1c('0x11'));var hardwareService=require(_0x2d1c('0x12'));var logger=require(_0x2d1c('0x13'))(_0x2d1c('0x14'));var utils=require(_0x2d1c('0x15'));var config=require(_0x2d1c('0x16'));var licenseUtil=require(_0x2d1c('0x17'));var db=require(_0x2d1c('0x18'))['db'];function respondWithStatusCode(_0x554731,_0x4f0241){_0x4f0241=_0x4f0241||0xcc;return function(_0x113a23){if(_0x113a23){return _0x554731['sendStatus'](_0x4f0241);}return _0x554731[_0x2d1c('0x19')](_0x4f0241)[_0x2d1c('0x1a')]();};}function respondWithResult(_0x1096b6,_0x4da083){_0x4da083=_0x4da083||0xc8;return function(_0x2dae9a){if(_0x2dae9a){return _0x1096b6[_0x2d1c('0x19')](_0x4da083)[_0x2d1c('0x1b')](_0x2dae9a);}};}function respondWithFilteredResult(_0x57b3f4,_0x5f210e){return function(_0x5617fa){if(_0x5617fa){var _0x535dbe=typeof _0x5f210e[_0x2d1c('0x1c')]===_0x2d1c('0x1d')&&typeof _0x5f210e[_0x2d1c('0x1e')]===_0x2d1c('0x1d');var _0x53494e=_0x5617fa[_0x2d1c('0x1f')];var _0x26a2fc=_0x535dbe?0x0:_0x5f210e['offset'];var _0x65457a=_0x535dbe?_0x5617fa[_0x2d1c('0x1f')]:_0x5f210e[_0x2d1c('0x1c')]+_0x5f210e[_0x2d1c('0x1e')];var _0xad0ec2;if(_0x65457a>=_0x53494e){_0x65457a=_0x53494e;_0xad0ec2=0xc8;}else{_0xad0ec2=0xce;}_0x57b3f4[_0x2d1c('0x19')](_0xad0ec2);return _0x57b3f4[_0x2d1c('0x20')](_0x2d1c('0x21'),_0x26a2fc+'-'+_0x65457a+'/'+_0x53494e)[_0x2d1c('0x1b')](_0x5617fa);}return null;};}function patchUpdates(_0x105212){return function(_0x5acd6){try{jsonpatch[_0x2d1c('0x22')](_0x5acd6,_0x105212,!![]);}catch(_0x1148d9){return BPromise['reject'](_0x1148d9);}return _0x5acd6[_0x2d1c('0x23')]();};}function saveUpdates(_0x16318c,_0x2a4296){return function(_0x3fc7b8){if(_0x3fc7b8){return _0x3fc7b8[_0x2d1c('0x24')](_0x16318c)[_0x2d1c('0x25')](function(_0x4b0b0f){return _0x4b0b0f;});}return null;};}function removeEntity(_0x9215e6,_0x1186de){return function(_0x15e185){if(_0x15e185){return _0x15e185[_0x2d1c('0x26')]()[_0x2d1c('0x25')](function(){_0x9215e6['status'](0xcc)[_0x2d1c('0x1a')]();});}};}function handleEntityNotFound(_0x2aeb01,_0x33a8ee){return function(_0x45cb2a){if(!_0x45cb2a){_0x2aeb01[_0x2d1c('0x27')](0x194);}return _0x45cb2a;};}function handleError(_0x494efe,_0x172f91){_0x172f91=_0x172f91||0x1f4;return function(_0x42139c){logger[_0x2d1c('0x28')](_0x42139c[_0x2d1c('0x29')]);if(_0x42139c[_0x2d1c('0x2a')]){delete _0x42139c[_0x2d1c('0x2a')];}_0x494efe[_0x2d1c('0x19')](_0x172f91)[_0x2d1c('0x2b')](_0x42139c);};}exports[_0x2d1c('0x2c')]=function(_0x17b084,_0x52e926){var _0x94d995={},_0x1b4c26={},_0x4a3f56={'count':0x0,'rows':[]};var _0x9efad1=_[_0x2d1c('0x2d')](db['FreshsalesField'][_0x2d1c('0x2e')],function(_0x50ec36){return{'name':_0x50ec36[_0x2d1c('0x2f')],'type':_0x50ec36[_0x2d1c('0x30')][_0x2d1c('0x31')]};});_0x1b4c26['model']=_[_0x2d1c('0x2d')](_0x9efad1,_0x2d1c('0x2a'));_0x1b4c26[_0x2d1c('0x32')]=_[_0x2d1c('0x33')](_0x17b084[_0x2d1c('0x32')]);_0x1b4c26[_0x2d1c('0x34')]=_[_0x2d1c('0x35')](_0x1b4c26[_0x2d1c('0x36')],_0x1b4c26[_0x2d1c('0x32')]);_0x94d995[_0x2d1c('0x37')]=_[_0x2d1c('0x35')](_0x1b4c26[_0x2d1c('0x36')],qs[_0x2d1c('0x38')](_0x17b084[_0x2d1c('0x32')]['fields']));_0x94d995['attributes']=_0x94d995['attributes'][_0x2d1c('0x39')]?_0x94d995['attributes']:_0x1b4c26[_0x2d1c('0x36')];if(!_0x17b084[_0x2d1c('0x32')][_0x2d1c('0x3a')](_0x2d1c('0x3b'))){_0x94d995[_0x2d1c('0x1e')]=qs[_0x2d1c('0x1e')](_0x17b084[_0x2d1c('0x32')]['limit']);_0x94d995[_0x2d1c('0x1c')]=qs[_0x2d1c('0x1c')](_0x17b084[_0x2d1c('0x32')]['offset']);}_0x94d995[_0x2d1c('0x3c')]=qs[_0x2d1c('0x3d')](_0x17b084[_0x2d1c('0x32')][_0x2d1c('0x3d')]);_0x94d995[_0x2d1c('0x3e')]=qs['filters'](_[_0x2d1c('0x3f')](_0x17b084[_0x2d1c('0x32')],_0x1b4c26[_0x2d1c('0x34')]),_0x9efad1);if(_0x17b084[_0x2d1c('0x32')][_0x2d1c('0x40')]){_0x94d995['where']=_[_0x2d1c('0x41')](_0x94d995['where'],{'$or':_['map'](_0x9efad1,function(_0x137ad5){if(_0x137ad5[_0x2d1c('0x30')]!==_0x2d1c('0x42')){var _0x36feed={};_0x36feed[_0x137ad5['name']]={'$like':'%'+_0x17b084['query'][_0x2d1c('0x40')]+'%'};return _0x36feed;}})});}_0x94d995=_['merge']({},_0x94d995,_0x17b084[_0x2d1c('0x43')]);var _0x1b5e62={'where':_0x94d995['where']};return db['FreshsalesField'][_0x2d1c('0x1f')](_0x1b5e62)[_0x2d1c('0x25')](function(_0x3afd77){_0x4a3f56[_0x2d1c('0x1f')]=_0x3afd77;if(_0x17b084[_0x2d1c('0x32')]['includeAll']){_0x94d995[_0x2d1c('0x44')]=[{'all':!![]}];}return db[_0x2d1c('0x45')][_0x2d1c('0x46')](_0x94d995);})[_0x2d1c('0x25')](function(_0x3394c3){_0x4a3f56[_0x2d1c('0x47')]=_0x3394c3;return _0x4a3f56;})[_0x2d1c('0x25')](respondWithFilteredResult(_0x52e926,_0x94d995))[_0x2d1c('0x48')](handleError(_0x52e926,null));};exports[_0x2d1c('0x49')]=function(_0x281623,_0x809280){var _0x3c7ca2={'raw':!![],'where':{'id':_0x281623[_0x2d1c('0x4a')]['id']}},_0x369b4a={};_0x369b4a[_0x2d1c('0x36')]=_[_0x2d1c('0x33')](db['FreshsalesField']['rawAttributes']);_0x369b4a[_0x2d1c('0x32')]=_['keys'](_0x281623['query']);_0x369b4a[_0x2d1c('0x34')]=_[_0x2d1c('0x35')](_0x369b4a[_0x2d1c('0x36')],_0x369b4a[_0x2d1c('0x32')]);_0x3c7ca2['attributes']=_[_0x2d1c('0x35')](_0x369b4a[_0x2d1c('0x36')],qs[_0x2d1c('0x38')](_0x281623[_0x2d1c('0x32')]['fields']));_0x3c7ca2[_0x2d1c('0x37')]=_0x3c7ca2[_0x2d1c('0x37')][_0x2d1c('0x39')]?_0x3c7ca2[_0x2d1c('0x37')]:_0x369b4a[_0x2d1c('0x36')];if(_0x281623[_0x2d1c('0x32')][_0x2d1c('0x4b')]){_0x3c7ca2[_0x2d1c('0x44')]=[{'all':!![]}];}_0x3c7ca2=_['merge']({},_0x3c7ca2,_0x281623[_0x2d1c('0x43')]);return db[_0x2d1c('0x45')][_0x2d1c('0x4c')](_0x3c7ca2)[_0x2d1c('0x25')](handleEntityNotFound(_0x809280,null))[_0x2d1c('0x25')](respondWithResult(_0x809280,null))[_0x2d1c('0x48')](handleError(_0x809280,null));};exports[_0x2d1c('0x4d')]=function(_0x46c64c,_0x14fe14){return db['FreshsalesField'][_0x2d1c('0x4d')](_0x46c64c[_0x2d1c('0x4e')],{})[_0x2d1c('0x25')](respondWithResult(_0x14fe14,0xc9))[_0x2d1c('0x48')](handleError(_0x14fe14,null));};exports['update']=function(_0x180644,_0x3ea8f8){if(_0x180644['body']['id']){delete _0x180644[_0x2d1c('0x4e')]['id'];}return db['FreshsalesField']['find']({'where':{'id':_0x180644[_0x2d1c('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3ea8f8,null))[_0x2d1c('0x25')](saveUpdates(_0x180644[_0x2d1c('0x4e')],null))[_0x2d1c('0x25')](respondWithResult(_0x3ea8f8,null))[_0x2d1c('0x48')](handleError(_0x3ea8f8,null));};exports[_0x2d1c('0x26')]=function(_0x30d246,_0x1c2f02){return db['FreshsalesField'][_0x2d1c('0x4c')]({'where':{'id':_0x30d246[_0x2d1c('0x4a')]['id']}})[_0x2d1c('0x25')](handleEntityNotFound(_0x1c2f02,null))[_0x2d1c('0x25')](removeEntity(_0x1c2f02,null))[_0x2d1c('0x48')](handleError(_0x1c2f02,null));};
\ No newline at end of file
+var _0x5368=['destroy','end','error','stack','name','send','FreshsalesField','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','map','VIRTUAL','options','include','findAll','find','catch','create','body','params','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','apply','reject','save','then'];(function(_0x1f9870,_0x4b1669){var _0x54086a=function(_0x43c13f){while(--_0x43c13f){_0x1f9870['push'](_0x1f9870['shift']());}};_0x54086a(++_0x4b1669);}(_0x5368,0x1c8));var _0x8536=function(_0x3fbd2e,_0x573106){_0x3fbd2e=_0x3fbd2e-0x0;var _0x2c14a1=_0x5368[_0x3fbd2e];return _0x2c14a1;};'use strict';var emlformat=require(_0x8536('0x0'));var rimraf=require(_0x8536('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8536('0x2'));var rp=require(_0x8536('0x3'));var moment=require(_0x8536('0x4'));var BPromise=require(_0x8536('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x8536('0x6'));var csv=require(_0x8536('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8536('0x8'));var squel=require(_0x8536('0x9'));var crypto=require(_0x8536('0xa'));var jsforce=require(_0x8536('0xb'));var deskjs=require(_0x8536('0xc'));var toCsv=require(_0x8536('0x7'));var querystring=require(_0x8536('0xd'));var Papa=require('papaparse');var Redis=require(_0x8536('0xe'));var authService=require(_0x8536('0xf'));var qs=require(_0x8536('0x10'));var as=require(_0x8536('0x11'));var hardwareService=require(_0x8536('0x12'));var logger=require(_0x8536('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x8536('0x14'));var licenseUtil=require(_0x8536('0x15'));var db=require(_0x8536('0x16'))['db'];function respondWithStatusCode(_0x5349be,_0x4653f2){_0x4653f2=_0x4653f2||0xcc;return function(_0x1d46a8){if(_0x1d46a8){return _0x5349be[_0x8536('0x17')](_0x4653f2);}return _0x5349be[_0x8536('0x18')](_0x4653f2)['end']();};}function respondWithResult(_0x2eb2c9,_0xa8eb7f){_0xa8eb7f=_0xa8eb7f||0xc8;return function(_0x3b0aeb){if(_0x3b0aeb){return _0x2eb2c9[_0x8536('0x18')](_0xa8eb7f)[_0x8536('0x19')](_0x3b0aeb);}};}function respondWithFilteredResult(_0x5cb099,_0x108011){return function(_0x342c75){if(_0x342c75){var _0x549f83=typeof _0x108011['offset']===_0x8536('0x1a')&&typeof _0x108011[_0x8536('0x1b')]==='undefined';var _0x199df1=_0x342c75[_0x8536('0x1c')];var _0x4a31c3=_0x549f83?0x0:_0x108011[_0x8536('0x1d')];var _0x3dbf2=_0x549f83?_0x342c75['count']:_0x108011['offset']+_0x108011[_0x8536('0x1b')];var _0x113c7f;if(_0x3dbf2>=_0x199df1){_0x3dbf2=_0x199df1;_0x113c7f=0xc8;}else{_0x113c7f=0xce;}_0x5cb099['status'](_0x113c7f);return _0x5cb099['set']('Content-Range',_0x4a31c3+'-'+_0x3dbf2+'/'+_0x199df1)[_0x8536('0x19')](_0x342c75);}return null;};}function patchUpdates(_0x4774b0){return function(_0xf3532){try{jsonpatch[_0x8536('0x1e')](_0xf3532,_0x4774b0,!![]);}catch(_0x551850){return BPromise[_0x8536('0x1f')](_0x551850);}return _0xf3532[_0x8536('0x20')]();};}function saveUpdates(_0x32deb4,_0x2411ec){return function(_0xd2dd2a){if(_0xd2dd2a){return _0xd2dd2a['update'](_0x32deb4)[_0x8536('0x21')](function(_0x2633cb){return _0x2633cb;});}return null;};}function removeEntity(_0xb49a9b,_0x2d2216){return function(_0x414c36){if(_0x414c36){return _0x414c36[_0x8536('0x22')]()[_0x8536('0x21')](function(){_0xb49a9b[_0x8536('0x18')](0xcc)[_0x8536('0x23')]();});}};}function handleEntityNotFound(_0x45fd53,_0x536654){return function(_0x59b58e){if(!_0x59b58e){_0x45fd53['sendStatus'](0x194);}return _0x59b58e;};}function handleError(_0x1fe736,_0x4a8a4a){_0x4a8a4a=_0x4a8a4a||0x1f4;return function(_0xd31b0b){logger[_0x8536('0x24')](_0xd31b0b[_0x8536('0x25')]);if(_0xd31b0b[_0x8536('0x26')]){delete _0xd31b0b[_0x8536('0x26')];}_0x1fe736[_0x8536('0x18')](_0x4a8a4a)[_0x8536('0x27')](_0xd31b0b);};}exports['index']=function(_0x433a1b,_0x503cd3){var _0xfdf42f={},_0x4ab20f={},_0x4ea1b7={'count':0x0,'rows':[]};var _0x20c50b=_['map'](db[_0x8536('0x28')][_0x8536('0x29')],function(_0x3273d6){return{'name':_0x3273d6[_0x8536('0x2a')],'type':_0x3273d6[_0x8536('0x2b')][_0x8536('0x2c')]};});_0x4ab20f[_0x8536('0x2d')]=_['map'](_0x20c50b,_0x8536('0x26'));_0x4ab20f[_0x8536('0x2e')]=_[_0x8536('0x2f')](_0x433a1b[_0x8536('0x2e')]);_0x4ab20f[_0x8536('0x30')]=_[_0x8536('0x31')](_0x4ab20f['model'],_0x4ab20f[_0x8536('0x2e')]);_0xfdf42f['attributes']=_[_0x8536('0x31')](_0x4ab20f[_0x8536('0x2d')],qs[_0x8536('0x32')](_0x433a1b[_0x8536('0x2e')][_0x8536('0x32')]));_0xfdf42f[_0x8536('0x33')]=_0xfdf42f[_0x8536('0x33')][_0x8536('0x34')]?_0xfdf42f[_0x8536('0x33')]:_0x4ab20f[_0x8536('0x2d')];if(!_0x433a1b[_0x8536('0x2e')][_0x8536('0x35')](_0x8536('0x36'))){_0xfdf42f[_0x8536('0x1b')]=qs[_0x8536('0x1b')](_0x433a1b[_0x8536('0x2e')][_0x8536('0x1b')]);_0xfdf42f[_0x8536('0x1d')]=qs[_0x8536('0x1d')](_0x433a1b[_0x8536('0x2e')][_0x8536('0x1d')]);}_0xfdf42f[_0x8536('0x37')]=qs['sort'](_0x433a1b['query'][_0x8536('0x38')]);_0xfdf42f[_0x8536('0x39')]=qs[_0x8536('0x30')](_['pick'](_0x433a1b[_0x8536('0x2e')],_0x4ab20f['filters']),_0x20c50b);if(_0x433a1b[_0x8536('0x2e')][_0x8536('0x3a')]){_0xfdf42f[_0x8536('0x39')]=_[_0x8536('0x3b')](_0xfdf42f['where'],{'$or':_[_0x8536('0x3c')](_0x20c50b,function(_0x310f72){if(_0x310f72[_0x8536('0x2b')]!==_0x8536('0x3d')){var _0x534d68={};_0x534d68[_0x310f72[_0x8536('0x26')]]={'$like':'%'+_0x433a1b[_0x8536('0x2e')][_0x8536('0x3a')]+'%'};return _0x534d68;}})});}_0xfdf42f=_[_0x8536('0x3b')]({},_0xfdf42f,_0x433a1b[_0x8536('0x3e')]);var _0x48462f={'where':_0xfdf42f['where']};return db['FreshsalesField'][_0x8536('0x1c')](_0x48462f)['then'](function(_0x21bf70){_0x4ea1b7['count']=_0x21bf70;if(_0x433a1b[_0x8536('0x2e')]['includeAll']){_0xfdf42f[_0x8536('0x3f')]=[{'all':!![]}];}return db['FreshsalesField'][_0x8536('0x40')](_0xfdf42f);})['then'](function(_0x13d6b2){_0x4ea1b7['rows']=_0x13d6b2;return _0x4ea1b7;})['then'](respondWithFilteredResult(_0x503cd3,_0xfdf42f))['catch'](handleError(_0x503cd3,null));};exports['show']=function(_0x241206,_0x280704){var _0x501068={'raw':!![],'where':{'id':_0x241206['params']['id']}},_0x47c74f={};_0x47c74f['model']=_[_0x8536('0x2f')](db[_0x8536('0x28')][_0x8536('0x29')]);_0x47c74f[_0x8536('0x2e')]=_[_0x8536('0x2f')](_0x241206[_0x8536('0x2e')]);_0x47c74f[_0x8536('0x30')]=_[_0x8536('0x31')](_0x47c74f[_0x8536('0x2d')],_0x47c74f[_0x8536('0x2e')]);_0x501068[_0x8536('0x33')]=_[_0x8536('0x31')](_0x47c74f[_0x8536('0x2d')],qs['fields'](_0x241206['query'][_0x8536('0x32')]));_0x501068[_0x8536('0x33')]=_0x501068[_0x8536('0x33')]['length']?_0x501068[_0x8536('0x33')]:_0x47c74f[_0x8536('0x2d')];if(_0x241206[_0x8536('0x2e')]['includeAll']){_0x501068[_0x8536('0x3f')]=[{'all':!![]}];}_0x501068=_[_0x8536('0x3b')]({},_0x501068,_0x241206[_0x8536('0x3e')]);return db['FreshsalesField'][_0x8536('0x41')](_0x501068)[_0x8536('0x21')](handleEntityNotFound(_0x280704,null))['then'](respondWithResult(_0x280704,null))[_0x8536('0x42')](handleError(_0x280704,null));};exports[_0x8536('0x43')]=function(_0x3a3ce4,_0x89f096){return db[_0x8536('0x28')]['create'](_0x3a3ce4['body'],{})[_0x8536('0x21')](respondWithResult(_0x89f096,0xc9))['catch'](handleError(_0x89f096,null));};exports['update']=function(_0x3379de,_0x415a83){if(_0x3379de[_0x8536('0x44')]['id']){delete _0x3379de[_0x8536('0x44')]['id'];}return db[_0x8536('0x28')]['find']({'where':{'id':_0x3379de[_0x8536('0x45')]['id']}})[_0x8536('0x21')](handleEntityNotFound(_0x415a83,null))[_0x8536('0x21')](saveUpdates(_0x3379de['body'],null))[_0x8536('0x21')](respondWithResult(_0x415a83,null))[_0x8536('0x42')](handleError(_0x415a83,null));};exports[_0x8536('0x22')]=function(_0x1f5813,_0x4f2185){return db[_0x8536('0x28')][_0x8536('0x41')]({'where':{'id':_0x1f5813['params']['id']}})[_0x8536('0x21')](handleEntityNotFound(_0x4f2185,null))[_0x8536('0x21')](removeEntity(_0x4f2185,null))[_0x8536('0x42')](handleError(_0x4f2185,null));};
\ No newline at end of file
index dfec839..b59c630 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(_0x1d1eef,_0x5930b8){var _0x360c1a=function(_0x4a4dae){while(--_0x4a4dae){_0x1d1eef['push'](_0x1d1eef['shift']());}};_0x360c1a(++_0x5930b8);}(_0x3c8b,0x18b));var _0xb3c8=function(_0x19809e,_0x89e6ad){_0x19809e=_0x19809e-0x0;var _0x2dc2e3=_0x3c8b[_0x19809e];return _0x2dc2e3;};'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 _0x6372=['lodash','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./intFreshsalesField.attributes','exports','freshsales_unique_index'];(function(_0x4b7e4d,_0x82d2ab){var _0x38d6af=function(_0x227432){while(--_0x227432){_0x4b7e4d['push'](_0x4b7e4d['shift']());}};_0x38d6af(++_0x82d2ab);}(_0x6372,0x1b8));var _0x2637=function(_0x41fcb6,_0x5d6fdc){_0x41fcb6=_0x41fcb6-0x0;var _0x2e55fc=_0x6372[_0x41fcb6];return _0x2e55fc;};'use strict';var _=require(_0x2637('0x0'));var util=require('util');var logger=require(_0x2637('0x1'))('api');var moment=require(_0x2637('0x2'));var BPromise=require(_0x2637('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2637('0x4'));var rimraf=require(_0x2637('0x5'));var config=require(_0x2637('0x6'));var attributes=require(_0x2637('0x7'));module[_0x2637('0x8')]=function(_0x5da891,_0x33d56c){return _0x5da891['define']('FreshsalesField',attributes,{'tableName':'int_freshsales_fields','paranoid':![],'indexes':[{'name':_0x2637('0x9'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index ca5adec..4468729 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafc4=['error','code','message','request\x20sent','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','http','request','then','info','FreshsalesField,\x20%s,\x20%s','FreshsalesField,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x4f34c6,_0x3249fa){var _0x338875=function(_0x4bf58b){while(--_0x4bf58b){_0x4f34c6['push'](_0x4f34c6['shift']());}};_0x338875(++_0x3249fa);}(_0xafc4,0x69));var _0x4afc=function(_0x5a9e00,_0x4db19d){_0x5a9e00=_0x5a9e00-0x0;var _0x3ea16e=_0xafc4[_0x5a9e00];return _0x3ea16e;};'use strict';var _=require(_0x4afc('0x0'));var util=require('util');var moment=require(_0x4afc('0x1'));var BPromise=require('bluebird');var rs=require(_0x4afc('0x2'));var fs=require('fs');var Redis=require(_0x4afc('0x3'));var db=require(_0x4afc('0x4'))['db'];var utils=require(_0x4afc('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x4afc('0x6'));var client=jayson[_0x4afc('0x7')][_0x4afc('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1bb281,_0xc828d9,_0xaf053d){return new BPromise(function(_0x5e1e29,_0x31e165){return client[_0x4afc('0x9')](_0x1bb281,_0xaf053d)[_0x4afc('0xa')](function(_0x1e6bf5){logger[_0x4afc('0xb')](_0x4afc('0xc'),_0xc828d9,'request\x20sent');logger['debug'](_0x4afc('0xd'),_0xc828d9,'request\x20sent',JSON[_0x4afc('0xe')](_0x1e6bf5));if(_0x1e6bf5[_0x4afc('0xf')]){if(_0x1e6bf5['error'][_0x4afc('0x10')]===0x1f4){logger[_0x4afc('0xf')](_0x4afc('0xc'),_0xc828d9,_0x1e6bf5[_0x4afc('0xf')][_0x4afc('0x11')]);return _0x31e165(_0x1e6bf5[_0x4afc('0xf')][_0x4afc('0x11')]);}logger[_0x4afc('0xf')]('FreshsalesField,\x20%s,\x20%s',_0xc828d9,_0x1e6bf5[_0x4afc('0xf')][_0x4afc('0x11')]);return _0x5e1e29(_0x1e6bf5[_0x4afc('0xf')][_0x4afc('0x11')]);}else{logger['info']('FreshsalesField,\x20%s,\x20%s',_0xc828d9,_0x4afc('0x12'));_0x5e1e29(_0x1e6bf5['result'][_0x4afc('0x11')]);}})[_0x4afc('0x13')](function(_0x2b928b){logger[_0x4afc('0xf')](_0x4afc('0xc'),_0xc828d9,_0x2b928b);_0x31e165(_0x2b928b);});});}
\ No newline at end of file
+var _0x187d=['lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','info','FreshsalesField,\x20%s,\x20%s','request\x20sent','debug','FreshsalesField,\x20%s,\x20%s,\x20%s','stringify','error','message','catch'];(function(_0x2b2cd0,_0x590e25){var _0x345eb8=function(_0x292f8a){while(--_0x292f8a){_0x2b2cd0['push'](_0x2b2cd0['shift']());}};_0x345eb8(++_0x590e25);}(_0x187d,0x93));var _0xd187=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0x187d[_0x110c3d];return _0x226d67;};'use strict';var _=require(_0xd187('0x0'));var util=require('util');var moment=require(_0xd187('0x1'));var BPromise=require(_0xd187('0x2'));var rs=require(_0xd187('0x3'));var fs=require('fs');var Redis=require(_0xd187('0x4'));var db=require(_0xd187('0x5'))['db'];var utils=require(_0xd187('0x6'));var logger=require('../../config/logger')(_0xd187('0x7'));var config=require(_0xd187('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xd187('0x9')][_0xd187('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x444a60,_0x1d3fe4,_0x28ce2f){return new BPromise(function(_0x2d6992,_0x358c45){return client[_0xd187('0xb')](_0x444a60,_0x28ce2f)['then'](function(_0x342539){logger[_0xd187('0xc')](_0xd187('0xd'),_0x1d3fe4,_0xd187('0xe'));logger[_0xd187('0xf')](_0xd187('0x10'),_0x1d3fe4,'request\x20sent',JSON[_0xd187('0x11')](_0x342539));if(_0x342539[_0xd187('0x12')]){if(_0x342539[_0xd187('0x12')]['code']===0x1f4){logger[_0xd187('0x12')](_0xd187('0xd'),_0x1d3fe4,_0x342539[_0xd187('0x12')]['message']);return _0x358c45(_0x342539[_0xd187('0x12')][_0xd187('0x13')]);}logger[_0xd187('0x12')](_0xd187('0xd'),_0x1d3fe4,_0x342539['error'][_0xd187('0x13')]);return _0x2d6992(_0x342539[_0xd187('0x12')][_0xd187('0x13')]);}else{logger[_0xd187('0xc')]('FreshsalesField,\x20%s,\x20%s',_0x1d3fe4,_0xd187('0xe'));_0x2d6992(_0x342539['result']['message']);}})[_0xd187('0x14')](function(_0x5a4986){logger['error'](_0xd187('0xd'),_0x1d3fe4,_0x5a4986);_0x358c45(_0x5a4986);});});}
\ No newline at end of file
index 1660483..ad3e527 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(_0x5c328a,_0xfce25b){var _0x1be9dd=function(_0x34beb4){while(--_0x34beb4){_0x5c328a['push'](_0x5c328a['shift']());}};_0x1be9dd(++_0xfce25b);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
+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(_0x1bd6e2,_0x4f378b){var _0x3c789e=function(_0x72912a){while(--_0x72912a){_0x1bd6e2['push'](_0x1bd6e2['shift']());}};_0x3c789e(++_0x4f378b);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('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 455ec8c..cbd5c01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a6e=['ENUM','integrationTab','newTab','sequelize','exports','STRING','username'];(function(_0x295811,_0x2825f4){var _0x147146=function(_0x939636){while(--_0x939636){_0x295811['push'](_0x295811['shift']());}};_0x147146(++_0x2825f4);}(_0x6a6e,0xe3));var _0xe6a6=function(_0x3be988,_0x5e92d8){_0x3be988=_0x3be988-0x0;var _0x4d194a=_0x6a6e[_0x3be988];return _0x4d194a;};'use strict';var Sequelize=require(_0xe6a6('0x0'));module[_0xe6a6('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xe6a6('0x2')]},'username':{'type':Sequelize[_0xe6a6('0x2')],'unique':_0xe6a6('0x3')},'remoteUri':{'type':Sequelize[_0xe6a6('0x2')]},'password':{'type':Sequelize[_0xe6a6('0x2')]},'clientId':{'type':Sequelize[_0xe6a6('0x2')]},'clientSecret':{'type':Sequelize['STRING']},'securityToken':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0xe6a6('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xe6a6('0x4')](_0xe6a6('0x5'),_0xe6a6('0x6')),'defaultValue':_0xe6a6('0x5')}};
\ No newline at end of file
+var _0xaac4=['sequelize','exports','STRING','username','integrationTab','newTab'];(function(_0x13f215,_0x55983c){var _0x1524c3=function(_0x5ded3f){while(--_0x5ded3f){_0x13f215['push'](_0x13f215['shift']());}};_0x1524c3(++_0x55983c);}(_0xaac4,0x6c));var _0x4aac=function(_0x1edf2a,_0x55c423){_0x1edf2a=_0x1edf2a-0x0;var _0x5698f0=_0xaac4[_0x1edf2a];return _0x5698f0;};'use strict';var Sequelize=require(_0x4aac('0x0'));module[_0x4aac('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x4aac('0x2')]},'username':{'type':Sequelize[_0x4aac('0x2')],'unique':_0x4aac('0x3')},'remoteUri':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x4aac('0x2')]},'clientId':{'type':Sequelize[_0x4aac('0x2')]},'clientSecret':{'type':Sequelize[_0x4aac('0x2')]},'securityToken':{'type':Sequelize[_0x4aac('0x2')]},'serverUrl':{'type':Sequelize[_0x4aac('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x4aac('0x4'),_0x4aac('0x5')),'defaultValue':_0x4aac('0x4')}};
\ No newline at end of file
index c9b45d2..40d99b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa58d=['querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','update','then','error','send','map','SalesforceAccount','rawAttributes','fieldName','type','key','model','name','keys','query','filters','intersection','attributes','fields','nolimit','sort','where','pick','filter','merge','options','findAll','rows','catch','show','params','length','includeAll','find','create','body','destroy','getConfigurations','findOne','order','hasOwnProperty','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','SalesforceConfiguration','SalesforceField','Task','remoteUri','clientId','clientSecret','username','password','securityToken','slice','lastIndexOf','Connection','concat','isNil','ticketType','describe','ActivityDate','IsReminderSet','Subject','Description','string','int','picklist','textarea','phone','remove','includes','label','custom','picklistValues','value','True','true','False','false','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa58d,0x1d6));var _0xda58=function(_0x204abb,_0x5b9c5c){_0x204abb=_0x204abb-0x0;var _0x1c580b=_0xa58d[_0x204abb];return _0x1c580b;};'use strict';var emlformat=require(_0xda58('0x0'));var rimraf=require(_0xda58('0x1'));var zipdir=require(_0xda58('0x2'));var jsonpatch=require(_0xda58('0x3'));var rp=require(_0xda58('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xda58('0x5'));var sox=require(_0xda58('0x6'));var csv=require(_0xda58('0x7'));var ejs=require(_0xda58('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xda58('0x9'));var squel=require(_0xda58('0xa'));var crypto=require(_0xda58('0xb'));var jsforce=require(_0xda58('0xc'));var deskjs=require(_0xda58('0xd'));var toCsv=require(_0xda58('0x7'));var querystring=require(_0xda58('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xda58('0xf'));var qs=require(_0xda58('0x10'));var as=require(_0xda58('0x11'));var hardwareService=require(_0xda58('0x12'));var logger=require(_0xda58('0x13'))(_0xda58('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xda58('0x15'))['db'];var integrations=require(_0xda58('0x16'));function respondWithStatusCode(_0x43e1ff,_0xe52527){_0xe52527=_0xe52527||0xcc;return function(_0xe0fab1){if(_0xe0fab1){return _0x43e1ff[_0xda58('0x17')](_0xe52527);}return _0x43e1ff[_0xda58('0x18')](_0xe52527)[_0xda58('0x19')]();};}function respondWithResult(_0x5637ca,_0x32f05b){_0x32f05b=_0x32f05b||0xc8;return function(_0x48dbb4){if(_0x48dbb4){return _0x5637ca[_0xda58('0x18')](_0x32f05b)[_0xda58('0x1a')](_0x48dbb4);}};}function respondWithFilteredResult(_0x58ec7d,_0x5a453e){return function(_0x296fa8){if(_0x296fa8){var _0x3b5c9a=typeof _0x5a453e['offset']===_0xda58('0x1b')&&typeof _0x5a453e[_0xda58('0x1c')]===_0xda58('0x1b');var _0x246408=_0x296fa8[_0xda58('0x1d')];var _0x5a8ab5=_0x3b5c9a?0x0:_0x5a453e[_0xda58('0x1e')];var _0x51c6d1=_0x3b5c9a?_0x296fa8[_0xda58('0x1d')]:_0x5a453e[_0xda58('0x1e')]+_0x5a453e['limit'];var _0x1a62e2;if(_0x51c6d1>=_0x246408){_0x51c6d1=_0x246408;_0x1a62e2=0xc8;}else{_0x1a62e2=0xce;}_0x58ec7d[_0xda58('0x18')](_0x1a62e2);return _0x58ec7d[_0xda58('0x1f')](_0xda58('0x20'),_0x5a8ab5+'-'+_0x51c6d1+'/'+_0x246408)['json'](_0x296fa8);}return null;};}function patchUpdates(_0xbd6ffe){return function(_0x1c41da){try{jsonpatch[_0xda58('0x21')](_0x1c41da,_0xbd6ffe,!![]);}catch(_0x2d6cf2){return BPromise['reject'](_0x2d6cf2);}return _0x1c41da['save']();};}function saveUpdates(_0x3c4af4,_0xd6d441){return function(_0x21ca51){if(_0x21ca51){return _0x21ca51[_0xda58('0x22')](_0x3c4af4)['then'](function(_0x56f534){return _0x56f534;});}return null;};}function removeEntity(_0x5762ca,_0xbee6e7){return function(_0x4dbf8b){if(_0x4dbf8b){return _0x4dbf8b['destroy']()[_0xda58('0x23')](function(){_0x5762ca['status'](0xcc)[_0xda58('0x19')]();});}};}function handleEntityNotFound(_0x49d56a,_0x123e3a){return function(_0x575b56){if(!_0x575b56){_0x49d56a[_0xda58('0x17')](0x194);}return _0x575b56;};}function handleError(_0x239b80,_0x5d1f12){_0x5d1f12=_0x5d1f12||0x1f4;return function(_0x2f4608){logger[_0xda58('0x24')](_0x2f4608['stack']);if(_0x2f4608['name']){delete _0x2f4608['name'];}_0x239b80[_0xda58('0x18')](_0x5d1f12)[_0xda58('0x25')](_0x2f4608);};}exports['index']=function(_0x4ca69e,_0x103d1b){var _0x3672cc={},_0x4e2394={},_0x49e037={'count':0x0,'rows':[]};var _0x388081=_[_0xda58('0x26')](db[_0xda58('0x27')][_0xda58('0x28')],function(_0xfb098d){return{'name':_0xfb098d[_0xda58('0x29')],'type':_0xfb098d[_0xda58('0x2a')][_0xda58('0x2b')]};});_0x4e2394[_0xda58('0x2c')]=_[_0xda58('0x26')](_0x388081,_0xda58('0x2d'));_0x4e2394['query']=_[_0xda58('0x2e')](_0x4ca69e[_0xda58('0x2f')]);_0x4e2394[_0xda58('0x30')]=_[_0xda58('0x31')](_0x4e2394[_0xda58('0x2c')],_0x4e2394[_0xda58('0x2f')]);_0x3672cc[_0xda58('0x32')]=_[_0xda58('0x31')](_0x4e2394['model'],qs[_0xda58('0x33')](_0x4ca69e['query']['fields']));_0x3672cc['attributes']=_0x3672cc['attributes']['length']?_0x3672cc[_0xda58('0x32')]:_0x4e2394[_0xda58('0x2c')];if(!_0x4ca69e[_0xda58('0x2f')]['hasOwnProperty'](_0xda58('0x34'))){_0x3672cc[_0xda58('0x1c')]=qs[_0xda58('0x1c')](_0x4ca69e[_0xda58('0x2f')]['limit']);_0x3672cc['offset']=qs[_0xda58('0x1e')](_0x4ca69e[_0xda58('0x2f')]['offset']);}_0x3672cc['order']=qs['sort'](_0x4ca69e[_0xda58('0x2f')][_0xda58('0x35')]);_0x3672cc[_0xda58('0x36')]=qs['filters'](_[_0xda58('0x37')](_0x4ca69e['query'],_0x4e2394['filters']),_0x388081);if(_0x4ca69e['query'][_0xda58('0x38')]){_0x3672cc[_0xda58('0x36')]=_[_0xda58('0x39')](_0x3672cc['where'],{'$or':_[_0xda58('0x26')](_0x388081,function(_0x4e2206){if(_0x4e2206[_0xda58('0x2a')]!=='VIRTUAL'){var _0x564092={};_0x564092[_0x4e2206[_0xda58('0x2d')]]={'$like':'%'+_0x4ca69e['query'][_0xda58('0x38')]+'%'};return _0x564092;}})});}_0x3672cc=_[_0xda58('0x39')]({},_0x3672cc,_0x4ca69e[_0xda58('0x3a')]);var _0x46245d={'where':_0x3672cc[_0xda58('0x36')]};return db[_0xda58('0x27')][_0xda58('0x1d')](_0x46245d)['then'](function(_0x3b7b1f){_0x49e037['count']=_0x3b7b1f;if(_0x4ca69e[_0xda58('0x2f')]['includeAll']){_0x3672cc['include']=[{'all':!![]}];}return db[_0xda58('0x27')][_0xda58('0x3b')](_0x3672cc);})['then'](function(_0x331038){_0x49e037[_0xda58('0x3c')]=_0x331038;return _0x49e037;})[_0xda58('0x23')](respondWithFilteredResult(_0x103d1b,_0x3672cc))[_0xda58('0x3d')](handleError(_0x103d1b,null));};exports[_0xda58('0x3e')]=function(_0x4c9610,_0x449aaf){var _0x5b9a9c={'raw':![],'where':{'id':_0x4c9610[_0xda58('0x3f')]['id']}},_0x6301f7={};_0x6301f7[_0xda58('0x2c')]=_[_0xda58('0x2e')](db[_0xda58('0x27')][_0xda58('0x28')]);_0x6301f7['query']=_[_0xda58('0x2e')](_0x4c9610[_0xda58('0x2f')]);_0x6301f7[_0xda58('0x30')]=_[_0xda58('0x31')](_0x6301f7[_0xda58('0x2c')],_0x6301f7['query']);_0x5b9a9c[_0xda58('0x32')]=_[_0xda58('0x31')](_0x6301f7[_0xda58('0x2c')],qs[_0xda58('0x33')](_0x4c9610[_0xda58('0x2f')][_0xda58('0x33')]));_0x5b9a9c['attributes']=_0x5b9a9c['attributes'][_0xda58('0x40')]?_0x5b9a9c[_0xda58('0x32')]:_0x6301f7['model'];if(_0x4c9610[_0xda58('0x2f')][_0xda58('0x41')]){_0x5b9a9c['include']=[{'all':!![]}];}_0x5b9a9c=_[_0xda58('0x39')]({},_0x5b9a9c,_0x4c9610['options']);return db[_0xda58('0x27')][_0xda58('0x42')](_0x5b9a9c)[_0xda58('0x23')](handleEntityNotFound(_0x449aaf,null))[_0xda58('0x23')](respondWithResult(_0x449aaf,null))[_0xda58('0x3d')](handleError(_0x449aaf,null));};exports[_0xda58('0x43')]=function(_0x8eda8f,_0x450e3b){return db[_0xda58('0x27')][_0xda58('0x43')](_0x8eda8f['body'],{})[_0xda58('0x23')](respondWithResult(_0x450e3b,0xc9))[_0xda58('0x3d')](handleError(_0x450e3b,null));};exports['update']=function(_0x46c9ff,_0x46a4f1){if(_0x46c9ff[_0xda58('0x44')]['id']){delete _0x46c9ff[_0xda58('0x44')]['id'];}return db[_0xda58('0x27')][_0xda58('0x42')]({'where':{'id':_0x46c9ff['params']['id']}})[_0xda58('0x23')](handleEntityNotFound(_0x46a4f1,null))[_0xda58('0x23')](saveUpdates(_0x46c9ff[_0xda58('0x44')],null))[_0xda58('0x23')](respondWithResult(_0x46a4f1,null))['catch'](handleError(_0x46a4f1,null));};exports[_0xda58('0x45')]=function(_0x2a8aac,_0x43dbeb){return db[_0xda58('0x27')][_0xda58('0x42')]({'where':{'id':_0x2a8aac['params']['id']}})[_0xda58('0x23')](handleEntityNotFound(_0x43dbeb,null))[_0xda58('0x23')](removeEntity(_0x43dbeb,null))[_0xda58('0x3d')](handleError(_0x43dbeb,null));};exports[_0xda58('0x46')]=function(_0x2605e5,_0x40306e,_0x136043){var _0x468088={};var _0x376908={};var _0x21aab0;var _0x5b238e;return db[_0xda58('0x27')][_0xda58('0x47')]({'where':{'id':_0x2605e5['params']['id']}})['then'](handleEntityNotFound(_0x40306e,null))[_0xda58('0x23')](function(_0x4b9a9f){if(_0x4b9a9f){_0x21aab0=_0x4b9a9f;_0x376908[_0xda58('0x2c')]=_[_0xda58('0x2e')](db['SalesforceConfiguration'][_0xda58('0x28')]);_0x376908[_0xda58('0x2f')]=_[_0xda58('0x2e')](_0x2605e5[_0xda58('0x2f')]);_0x376908['filters']=_[_0xda58('0x31')](_0x376908[_0xda58('0x2c')],_0x376908[_0xda58('0x2f')]);_0x468088[_0xda58('0x32')]=_[_0xda58('0x31')](_0x376908[_0xda58('0x2c')],qs[_0xda58('0x33')](_0x2605e5[_0xda58('0x2f')][_0xda58('0x33')]));_0x468088[_0xda58('0x32')]=_0x468088['attributes'][_0xda58('0x40')]?_0x468088[_0xda58('0x32')]:_0x376908[_0xda58('0x2c')];_0x468088[_0xda58('0x48')]=qs['sort'](_0x2605e5[_0xda58('0x2f')]['sort']);_0x468088['where']=qs[_0xda58('0x30')](_[_0xda58('0x37')](_0x2605e5[_0xda58('0x2f')],_0x376908[_0xda58('0x30')]));if(_0x2605e5['query'][_0xda58('0x38')]){_0x468088[_0xda58('0x36')]=_[_0xda58('0x39')](_0x468088[_0xda58('0x36')],{'$or':_[_0xda58('0x26')](_0x468088[_0xda58('0x32')],function(_0x2d21aa){var _0x535e5d={};_0x535e5d[_0x2d21aa]={'$like':'%'+_0x2605e5[_0xda58('0x2f')]['filter']+'%'};return _0x535e5d;})});}_0x468088=_['merge']({},_0x468088,_0x2605e5[_0xda58('0x3a')]);return _0x21aab0[_0xda58('0x46')](_0x468088);}})['then'](function(_0xf52a52){if(_0xf52a52){_0x5b238e=_0xf52a52[_0xda58('0x40')];if(!_0x2605e5['query'][_0xda58('0x49')]('nolimit')){_0x468088[_0xda58('0x1c')]=qs[_0xda58('0x1c')](_0x2605e5[_0xda58('0x2f')][_0xda58('0x1c')]);_0x468088[_0xda58('0x1e')]=qs['offset'](_0x2605e5[_0xda58('0x2f')]['offset']);}return _0x21aab0['getConfigurations'](_0x468088);}})[_0xda58('0x23')](function(_0x581dd4){if(_0x581dd4){return _0x581dd4?{'count':_0x5b238e,'rows':_0x581dd4}:null;}})[_0xda58('0x23')](respondWithResult(_0x40306e,null))[_0xda58('0x3d')](handleError(_0x40306e,null));};exports[_0xda58('0x4a')]=function(_0x1cfe98,_0xb06ab2,_0x1a5734){if(_0x1cfe98['body']['id']){delete _0x1cfe98[_0xda58('0x44')]['id'];}return db[_0xda58('0x27')]['findOne']({'where':{'id':_0x1cfe98[_0xda58('0x3f')]['id']}})[_0xda58('0x23')](handleEntityNotFound(_0xb06ab2,null))[_0xda58('0x23')](function(_0x1c553a){if(_0x1c553a){_0x1cfe98[_0xda58('0x44')][_0xda58('0x4b')]=_0x1c553a['id'];_0x1cfe98['body'][_0xda58('0x4c')]=integrations[_0xda58('0x4d')](_0x1cfe98[_0xda58('0x44')][_0xda58('0x4e')],_0x1cfe98[_0xda58('0x44')]['type']);_0x1cfe98[_0xda58('0x44')][_0xda58('0x4f')]=integrations[_0xda58('0x50')](_0x1cfe98[_0xda58('0x44')][_0xda58('0x4e')],_0x1cfe98[_0xda58('0x44')]['type']);return db[_0xda58('0x51')][_0xda58('0x43')](_0x1cfe98[_0xda58('0x44')],{'include':[{'model':db[_0xda58('0x52')],'as':_0xda58('0x4c')},{'model':db[_0xda58('0x52')],'as':'Descriptions'}]});}return null;})[_0xda58('0x23')](respondWithResult(_0xb06ab2,null))['catch'](handleError(_0xb06ab2,null));};exports['getFields']=function(_0x21d9f3,_0x4e9ecf,_0x1ae8ba){var _0x2a9e8e;var _0x4ca65b='';var _0x578d1f=_0xda58('0x53');return db['SalesforceAccount'][_0xda58('0x47')]({'where':{'id':_0x21d9f3[_0xda58('0x3f')]['id']},'attributes':['id',_0xda58('0x54'),_0xda58('0x55'),_0xda58('0x56'),_0xda58('0x57'),_0xda58('0x58'),_0xda58('0x59')]})[_0xda58('0x23')](handleEntityNotFound(_0x4e9ecf,null))['then'](function(_0x2f76cc){if(_0x2f76cc){_0x4ca65b=_0x2f76cc[_0xda58('0x54')];var _0x13924a=_0x4ca65b[_0xda58('0x5a')](-0x1);if(_0x13924a==='/'){_0x4ca65b=_0x4ca65b['substring'](0x0,_0x4ca65b[_0xda58('0x5b')](_0x13924a));}_0x2a9e8e=new jsforce[(_0xda58('0x5c'))]({'oauth2':{'loginUrl':_0x4ca65b,'clientId':_0x2f76cc[_0xda58('0x55')],'clientSecret':_0x2f76cc[_0xda58('0x56')]}});return _0x2a9e8e['login'](_0x2f76cc[_0xda58('0x57')],_0x2f76cc[_0xda58('0x58')][_0xda58('0x5d')](_0x2f76cc[_0xda58('0x59')]));}})[_0xda58('0x23')](function(_0x3b342e){if(_0x3b342e){if(!_[_0xda58('0x5e')](_0x21d9f3['query']['ticketType'])){_0x578d1f=_0x21d9f3['query'][_0xda58('0x5f')];}return _0x2a9e8e['sobject'](_0x578d1f)[_0xda58('0x60')]();}})['then'](function(_0x42ad79){var _0x1ff307=['OwnerId',_0xda58('0x61'),_0xda58('0x62'),'IsRecurrence',_0xda58('0x63'),_0xda58('0x64')];var _0x311022=[_0xda58('0x65'),_0xda58('0x66'),_0xda58('0x67'),'boolean','email',_0xda58('0x68'),_0xda58('0x69')];if(_0x42ad79){_[_0xda58('0x6a')](_0x42ad79['fields'],function(_0x572009){return _0x1ff307[_0xda58('0x6b')](_0x572009[_0xda58('0x2d')])||!_0x311022[_0xda58('0x6b')](_0x572009[_0xda58('0x2a')]);});return{'count':_0x42ad79[_0xda58('0x33')][_0xda58('0x40')],'rows':_[_0xda58('0x26')](_0x42ad79[_0xda58('0x33')],function(_0x495016){return{'id':_0x495016[_0xda58('0x2d')],'name':_0x495016[_0xda58('0x6c')],'custom':_0x495016[_0xda58('0x6d')],'options':_0x495016[_0xda58('0x6e')]['length']>0x0?_[_0xda58('0x26')](_0x495016[_0xda58('0x6e')],function(_0x55dbc7){return{'name':_0x55dbc7['label'],'value':_0x55dbc7[_0xda58('0x6f')]};}):_0x495016[_0xda58('0x2a')]=='boolean'?[{'name':_0xda58('0x70'),'value':_0xda58('0x71')},{'name':_0xda58('0x72'),'value':_0xda58('0x73')}]:[]};})};}})[_0xda58('0x23')](respondWithResult(_0x4e9ecf,null))['catch'](function(_0x904b33){var _0x4c97b7=_0x21d9f3['query'][_0xda58('0x74')]?0x1f4:_0x904b33[_0xda58('0x75')]||0x1f4;logger[_0xda58('0x24')](_0xda58('0x76'),_0xda58('0x77'),_0x4c97b7,JSON[_0xda58('0x78')](_0x904b33));delete _0x904b33[_0xda58('0x2d')];if(_0x4c97b7===0x191){_0x4c97b7=0x190;}_0x4e9ecf[_0xda58('0x18')](_0x4c97b7)[_0xda58('0x25')](_0x21d9f3[_0xda58('0x2f')][_0xda58('0x74')]?{'message':'Wrong\x20credentials','statusCode':_0x904b33[_0xda58('0x75')]}:_0x904b33);});};
\ No newline at end of file
+var _0xbe2b=['SalesforceAccount','count','include','findAll','rows','params','filters','intersection','includeAll','find','catch','create','body','update','getConfigurations','SalesforceConfiguration','hasOwnProperty','addConfiguration','Subjects','getSubjects','channel','type','Descriptions','getDescriptions','SalesforceField','getFields','remoteUri','clientId','clientSecret','username','password','securityToken','slice','substring','Connection','concat','isNil','ticketType','sobject','OwnerId','ActivityDate','IsReminderSet','IsRecurrence','Subject','Description','string','int','picklist','boolean','phone','remove','includes','label','custom','picklistValues','True','False','statusCode','stringify','test','Wrong\x20credentials','eml-format','zip-dir','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','save','then','destroy','error','stack','name','send','index','rawAttributes','fieldName','map','query','keys','model','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xbe2b,0xb6));var _0xbbe2=function(_0x40d1a5,_0x13ea0f){_0x40d1a5=_0x40d1a5-0x0;var _0x284cd5=_0xbe2b[_0x40d1a5];return _0x284cd5;};'use strict';var emlformat=require(_0xbbe2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbbe2('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xbbe2('0x2'));var moment=require(_0xbbe2('0x3'));var BPromise=require(_0xbbe2('0x4'));var Mustache=require('mustache');var util=require(_0xbbe2('0x5'));var path=require(_0xbbe2('0x6'));var sox=require('sox');var csv=require(_0xbbe2('0x7'));var ejs=require(_0xbbe2('0x8'));var fs=require('fs');var fs_extra=require(_0xbbe2('0x9'));var _=require('lodash');var squel=require(_0xbbe2('0xa'));var crypto=require(_0xbbe2('0xb'));var jsforce=require(_0xbbe2('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xbbe2('0x7'));var querystring=require(_0xbbe2('0xd'));var Papa=require(_0xbbe2('0xe'));var Redis=require(_0xbbe2('0xf'));var authService=require(_0xbbe2('0x10'));var qs=require(_0xbbe2('0x11'));var as=require(_0xbbe2('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xbbe2('0x13'));var utils=require('../../config/utils');var config=require(_0xbbe2('0x14'));var licenseUtil=require(_0xbbe2('0x15'));var db=require(_0xbbe2('0x16'))['db'];var integrations=require(_0xbbe2('0x17'));function respondWithStatusCode(_0x4d5291,_0x56e345){_0x56e345=_0x56e345||0xcc;return function(_0x2df0c2){if(_0x2df0c2){return _0x4d5291[_0xbbe2('0x18')](_0x56e345);}return _0x4d5291[_0xbbe2('0x19')](_0x56e345)[_0xbbe2('0x1a')]();};}function respondWithResult(_0x14cfaf,_0x205ac5){_0x205ac5=_0x205ac5||0xc8;return function(_0x1d99c0){if(_0x1d99c0){return _0x14cfaf[_0xbbe2('0x19')](_0x205ac5)[_0xbbe2('0x1b')](_0x1d99c0);}};}function respondWithFilteredResult(_0x5e8927,_0x58532c){return function(_0x40fe5d){if(_0x40fe5d){var _0x402792=typeof _0x58532c[_0xbbe2('0x1c')]===_0xbbe2('0x1d')&&typeof _0x58532c[_0xbbe2('0x1e')]===_0xbbe2('0x1d');var _0x58173d=_0x40fe5d['count'];var _0x27b81f=_0x402792?0x0:_0x58532c[_0xbbe2('0x1c')];var _0x2e753a=_0x402792?_0x40fe5d['count']:_0x58532c[_0xbbe2('0x1c')]+_0x58532c['limit'];var _0x56fafb;if(_0x2e753a>=_0x58173d){_0x2e753a=_0x58173d;_0x56fafb=0xc8;}else{_0x56fafb=0xce;}_0x5e8927['status'](_0x56fafb);return _0x5e8927[_0xbbe2('0x1f')](_0xbbe2('0x20'),_0x27b81f+'-'+_0x2e753a+'/'+_0x58173d)[_0xbbe2('0x1b')](_0x40fe5d);}return null;};}function patchUpdates(_0x3ac102){return function(_0x1b92db){try{jsonpatch[_0xbbe2('0x21')](_0x1b92db,_0x3ac102,!![]);}catch(_0x1c3129){return BPromise['reject'](_0x1c3129);}return _0x1b92db[_0xbbe2('0x22')]();};}function saveUpdates(_0x110f6e,_0x135df3){return function(_0x7462d1){if(_0x7462d1){return _0x7462d1['update'](_0x110f6e)[_0xbbe2('0x23')](function(_0x2ae843){return _0x2ae843;});}return null;};}function removeEntity(_0x5babfc,_0x24739d){return function(_0x5b385b){if(_0x5b385b){return _0x5b385b[_0xbbe2('0x24')]()[_0xbbe2('0x23')](function(){_0x5babfc[_0xbbe2('0x19')](0xcc)[_0xbbe2('0x1a')]();});}};}function handleEntityNotFound(_0x3cc446,_0x53a54b){return function(_0x19f297){if(!_0x19f297){_0x3cc446[_0xbbe2('0x18')](0x194);}return _0x19f297;};}function handleError(_0x2d240d,_0x5f0338){_0x5f0338=_0x5f0338||0x1f4;return function(_0x14fd4d){logger[_0xbbe2('0x25')](_0x14fd4d[_0xbbe2('0x26')]);if(_0x14fd4d[_0xbbe2('0x27')]){delete _0x14fd4d[_0xbbe2('0x27')];}_0x2d240d['status'](_0x5f0338)[_0xbbe2('0x28')](_0x14fd4d);};}exports[_0xbbe2('0x29')]=function(_0x4f97e4,_0x5e081f){var _0x58a014={},_0x397395={},_0x41c359={'count':0x0,'rows':[]};var _0x5da649=_['map'](db['SalesforceAccount'][_0xbbe2('0x2a')],function(_0x13a1af){return{'name':_0x13a1af[_0xbbe2('0x2b')],'type':_0x13a1af['type']['key']};});_0x397395['model']=_[_0xbbe2('0x2c')](_0x5da649,_0xbbe2('0x27'));_0x397395[_0xbbe2('0x2d')]=_[_0xbbe2('0x2e')](_0x4f97e4[_0xbbe2('0x2d')]);_0x397395['filters']=_['intersection'](_0x397395[_0xbbe2('0x2f')],_0x397395['query']);_0x58a014[_0xbbe2('0x30')]=_['intersection'](_0x397395[_0xbbe2('0x2f')],qs[_0xbbe2('0x31')](_0x4f97e4['query'][_0xbbe2('0x31')]));_0x58a014['attributes']=_0x58a014['attributes'][_0xbbe2('0x32')]?_0x58a014[_0xbbe2('0x30')]:_0x397395[_0xbbe2('0x2f')];if(!_0x4f97e4[_0xbbe2('0x2d')]['hasOwnProperty'](_0xbbe2('0x33'))){_0x58a014[_0xbbe2('0x1e')]=qs[_0xbbe2('0x1e')](_0x4f97e4['query'][_0xbbe2('0x1e')]);_0x58a014[_0xbbe2('0x1c')]=qs[_0xbbe2('0x1c')](_0x4f97e4[_0xbbe2('0x2d')][_0xbbe2('0x1c')]);}_0x58a014[_0xbbe2('0x34')]=qs[_0xbbe2('0x35')](_0x4f97e4[_0xbbe2('0x2d')][_0xbbe2('0x35')]);_0x58a014[_0xbbe2('0x36')]=qs['filters'](_[_0xbbe2('0x37')](_0x4f97e4[_0xbbe2('0x2d')],_0x397395['filters']),_0x5da649);if(_0x4f97e4[_0xbbe2('0x2d')][_0xbbe2('0x38')]){_0x58a014[_0xbbe2('0x36')]=_[_0xbbe2('0x39')](_0x58a014[_0xbbe2('0x36')],{'$or':_[_0xbbe2('0x2c')](_0x5da649,function(_0x3c01c5){if(_0x3c01c5['type']!==_0xbbe2('0x3a')){var _0x36dbab={};_0x36dbab[_0x3c01c5[_0xbbe2('0x27')]]={'$like':'%'+_0x4f97e4['query'][_0xbbe2('0x38')]+'%'};return _0x36dbab;}})});}_0x58a014=_[_0xbbe2('0x39')]({},_0x58a014,_0x4f97e4[_0xbbe2('0x3b')]);var _0x286b3a={'where':_0x58a014[_0xbbe2('0x36')]};return db[_0xbbe2('0x3c')][_0xbbe2('0x3d')](_0x286b3a)[_0xbbe2('0x23')](function(_0x301c99){_0x41c359['count']=_0x301c99;if(_0x4f97e4[_0xbbe2('0x2d')]['includeAll']){_0x58a014[_0xbbe2('0x3e')]=[{'all':!![]}];}return db[_0xbbe2('0x3c')][_0xbbe2('0x3f')](_0x58a014);})['then'](function(_0x1379ca){_0x41c359[_0xbbe2('0x40')]=_0x1379ca;return _0x41c359;})[_0xbbe2('0x23')](respondWithFilteredResult(_0x5e081f,_0x58a014))['catch'](handleError(_0x5e081f,null));};exports['show']=function(_0x3916ea,_0x3be2a6){var _0x25fb86={'raw':![],'where':{'id':_0x3916ea[_0xbbe2('0x41')]['id']}},_0x2344e2={};_0x2344e2[_0xbbe2('0x2f')]=_[_0xbbe2('0x2e')](db['SalesforceAccount'][_0xbbe2('0x2a')]);_0x2344e2[_0xbbe2('0x2d')]=_['keys'](_0x3916ea[_0xbbe2('0x2d')]);_0x2344e2[_0xbbe2('0x42')]=_[_0xbbe2('0x43')](_0x2344e2['model'],_0x2344e2[_0xbbe2('0x2d')]);_0x25fb86['attributes']=_[_0xbbe2('0x43')](_0x2344e2['model'],qs[_0xbbe2('0x31')](_0x3916ea[_0xbbe2('0x2d')][_0xbbe2('0x31')]));_0x25fb86['attributes']=_0x25fb86[_0xbbe2('0x30')][_0xbbe2('0x32')]?_0x25fb86[_0xbbe2('0x30')]:_0x2344e2[_0xbbe2('0x2f')];if(_0x3916ea[_0xbbe2('0x2d')][_0xbbe2('0x44')]){_0x25fb86[_0xbbe2('0x3e')]=[{'all':!![]}];}_0x25fb86=_['merge']({},_0x25fb86,_0x3916ea['options']);return db[_0xbbe2('0x3c')][_0xbbe2('0x45')](_0x25fb86)['then'](handleEntityNotFound(_0x3be2a6,null))[_0xbbe2('0x23')](respondWithResult(_0x3be2a6,null))[_0xbbe2('0x46')](handleError(_0x3be2a6,null));};exports[_0xbbe2('0x47')]=function(_0x2bdd59,_0x204e30){return db[_0xbbe2('0x3c')][_0xbbe2('0x47')](_0x2bdd59[_0xbbe2('0x48')],{})['then'](respondWithResult(_0x204e30,0xc9))[_0xbbe2('0x46')](handleError(_0x204e30,null));};exports[_0xbbe2('0x49')]=function(_0x195b11,_0x1568e){if(_0x195b11[_0xbbe2('0x48')]['id']){delete _0x195b11[_0xbbe2('0x48')]['id'];}return db[_0xbbe2('0x3c')]['find']({'where':{'id':_0x195b11[_0xbbe2('0x41')]['id']}})[_0xbbe2('0x23')](handleEntityNotFound(_0x1568e,null))['then'](saveUpdates(_0x195b11[_0xbbe2('0x48')],null))[_0xbbe2('0x23')](respondWithResult(_0x1568e,null))[_0xbbe2('0x46')](handleError(_0x1568e,null));};exports[_0xbbe2('0x24')]=function(_0x4c27ea,_0x558e19){return db[_0xbbe2('0x3c')][_0xbbe2('0x45')]({'where':{'id':_0x4c27ea['params']['id']}})[_0xbbe2('0x23')](handleEntityNotFound(_0x558e19,null))[_0xbbe2('0x23')](removeEntity(_0x558e19,null))['catch'](handleError(_0x558e19,null));};exports[_0xbbe2('0x4a')]=function(_0xfaac9c,_0x234ec4,_0x5311b3){var _0x2d40cb={};var _0x409802={};var _0x398471;var _0x24dc28;return db[_0xbbe2('0x3c')]['findOne']({'where':{'id':_0xfaac9c[_0xbbe2('0x41')]['id']}})[_0xbbe2('0x23')](handleEntityNotFound(_0x234ec4,null))[_0xbbe2('0x23')](function(_0x934bb2){if(_0x934bb2){_0x398471=_0x934bb2;_0x409802[_0xbbe2('0x2f')]=_[_0xbbe2('0x2e')](db[_0xbbe2('0x4b')][_0xbbe2('0x2a')]);_0x409802[_0xbbe2('0x2d')]=_[_0xbbe2('0x2e')](_0xfaac9c[_0xbbe2('0x2d')]);_0x409802[_0xbbe2('0x42')]=_[_0xbbe2('0x43')](_0x409802[_0xbbe2('0x2f')],_0x409802[_0xbbe2('0x2d')]);_0x2d40cb[_0xbbe2('0x30')]=_['intersection'](_0x409802[_0xbbe2('0x2f')],qs[_0xbbe2('0x31')](_0xfaac9c[_0xbbe2('0x2d')][_0xbbe2('0x31')]));_0x2d40cb[_0xbbe2('0x30')]=_0x2d40cb[_0xbbe2('0x30')]['length']?_0x2d40cb[_0xbbe2('0x30')]:_0x409802[_0xbbe2('0x2f')];_0x2d40cb[_0xbbe2('0x34')]=qs[_0xbbe2('0x35')](_0xfaac9c['query'][_0xbbe2('0x35')]);_0x2d40cb['where']=qs[_0xbbe2('0x42')](_[_0xbbe2('0x37')](_0xfaac9c[_0xbbe2('0x2d')],_0x409802['filters']));if(_0xfaac9c[_0xbbe2('0x2d')][_0xbbe2('0x38')]){_0x2d40cb['where']=_['merge'](_0x2d40cb[_0xbbe2('0x36')],{'$or':_[_0xbbe2('0x2c')](_0x2d40cb[_0xbbe2('0x30')],function(_0x574bb5){var _0x4c6d6f={};_0x4c6d6f[_0x574bb5]={'$like':'%'+_0xfaac9c[_0xbbe2('0x2d')][_0xbbe2('0x38')]+'%'};return _0x4c6d6f;})});}_0x2d40cb=_[_0xbbe2('0x39')]({},_0x2d40cb,_0xfaac9c[_0xbbe2('0x3b')]);return _0x398471[_0xbbe2('0x4a')](_0x2d40cb);}})[_0xbbe2('0x23')](function(_0x75f991){if(_0x75f991){_0x24dc28=_0x75f991[_0xbbe2('0x32')];if(!_0xfaac9c['query'][_0xbbe2('0x4c')](_0xbbe2('0x33'))){_0x2d40cb[_0xbbe2('0x1e')]=qs['limit'](_0xfaac9c[_0xbbe2('0x2d')]['limit']);_0x2d40cb['offset']=qs['offset'](_0xfaac9c[_0xbbe2('0x2d')][_0xbbe2('0x1c')]);}return _0x398471['getConfigurations'](_0x2d40cb);}})[_0xbbe2('0x23')](function(_0x2e037e){if(_0x2e037e){return _0x2e037e?{'count':_0x24dc28,'rows':_0x2e037e}:null;}})[_0xbbe2('0x23')](respondWithResult(_0x234ec4,null))['catch'](handleError(_0x234ec4,null));};exports[_0xbbe2('0x4d')]=function(_0xaef2c5,_0x257e7a,_0x214d21){if(_0xaef2c5['body']['id']){delete _0xaef2c5['body']['id'];}return db[_0xbbe2('0x3c')]['findOne']({'where':{'id':_0xaef2c5['params']['id']}})[_0xbbe2('0x23')](handleEntityNotFound(_0x257e7a,null))[_0xbbe2('0x23')](function(_0x3ad240){if(_0x3ad240){_0xaef2c5[_0xbbe2('0x48')]['AccountId']=_0x3ad240['id'];_0xaef2c5[_0xbbe2('0x48')][_0xbbe2('0x4e')]=integrations[_0xbbe2('0x4f')](_0xaef2c5[_0xbbe2('0x48')][_0xbbe2('0x50')],_0xaef2c5[_0xbbe2('0x48')][_0xbbe2('0x51')]);_0xaef2c5[_0xbbe2('0x48')][_0xbbe2('0x52')]=integrations[_0xbbe2('0x53')](_0xaef2c5[_0xbbe2('0x48')][_0xbbe2('0x50')],_0xaef2c5[_0xbbe2('0x48')][_0xbbe2('0x51')]);return db[_0xbbe2('0x4b')]['create'](_0xaef2c5[_0xbbe2('0x48')],{'include':[{'model':db[_0xbbe2('0x54')],'as':_0xbbe2('0x4e')},{'model':db[_0xbbe2('0x54')],'as':_0xbbe2('0x52')}]});}return null;})[_0xbbe2('0x23')](respondWithResult(_0x257e7a,null))['catch'](handleError(_0x257e7a,null));};exports[_0xbbe2('0x55')]=function(_0x4c2176,_0x56ca24,_0x2adb55){var _0x8d2887;var _0x3202e3='';var _0x2adf87='Task';return db[_0xbbe2('0x3c')]['findOne']({'where':{'id':_0x4c2176[_0xbbe2('0x41')]['id']},'attributes':['id',_0xbbe2('0x56'),_0xbbe2('0x57'),_0xbbe2('0x58'),_0xbbe2('0x59'),_0xbbe2('0x5a'),_0xbbe2('0x5b')]})['then'](handleEntityNotFound(_0x56ca24,null))[_0xbbe2('0x23')](function(_0x5d8e2f){if(_0x5d8e2f){_0x3202e3=_0x5d8e2f[_0xbbe2('0x56')];var _0x4c77af=_0x3202e3[_0xbbe2('0x5c')](-0x1);if(_0x4c77af==='/'){_0x3202e3=_0x3202e3[_0xbbe2('0x5d')](0x0,_0x3202e3['lastIndexOf'](_0x4c77af));}_0x8d2887=new jsforce[(_0xbbe2('0x5e'))]({'oauth2':{'loginUrl':_0x3202e3,'clientId':_0x5d8e2f[_0xbbe2('0x57')],'clientSecret':_0x5d8e2f[_0xbbe2('0x58')]}});return _0x8d2887['login'](_0x5d8e2f[_0xbbe2('0x59')],_0x5d8e2f[_0xbbe2('0x5a')][_0xbbe2('0x5f')](_0x5d8e2f[_0xbbe2('0x5b')]));}})[_0xbbe2('0x23')](function(_0x234726){if(_0x234726){if(!_[_0xbbe2('0x60')](_0x4c2176[_0xbbe2('0x2d')]['ticketType'])){_0x2adf87=_0x4c2176['query'][_0xbbe2('0x61')];}return _0x8d2887[_0xbbe2('0x62')](_0x2adf87)['describe']();}})[_0xbbe2('0x23')](function(_0x12f705){var _0x31794e=[_0xbbe2('0x63'),_0xbbe2('0x64'),_0xbbe2('0x65'),_0xbbe2('0x66'),_0xbbe2('0x67'),_0xbbe2('0x68')];var _0x25b428=[_0xbbe2('0x69'),_0xbbe2('0x6a'),_0xbbe2('0x6b'),_0xbbe2('0x6c'),'email','textarea',_0xbbe2('0x6d')];if(_0x12f705){_[_0xbbe2('0x6e')](_0x12f705['fields'],function(_0x3ff44e){return _0x31794e['includes'](_0x3ff44e[_0xbbe2('0x27')])||!_0x25b428[_0xbbe2('0x6f')](_0x3ff44e[_0xbbe2('0x51')]);});return{'count':_0x12f705[_0xbbe2('0x31')][_0xbbe2('0x32')],'rows':_[_0xbbe2('0x2c')](_0x12f705[_0xbbe2('0x31')],function(_0x40bd17){return{'id':_0x40bd17[_0xbbe2('0x27')],'name':_0x40bd17[_0xbbe2('0x70')],'custom':_0x40bd17[_0xbbe2('0x71')],'options':_0x40bd17[_0xbbe2('0x72')][_0xbbe2('0x32')]>0x0?_[_0xbbe2('0x2c')](_0x40bd17['picklistValues'],function(_0x55c6e5){return{'name':_0x55c6e5[_0xbbe2('0x70')],'value':_0x55c6e5['value']};}):_0x40bd17[_0xbbe2('0x51')]=='boolean'?[{'name':_0xbbe2('0x73'),'value':'true'},{'name':_0xbbe2('0x74'),'value':'false'}]:[]};})};}})[_0xbbe2('0x23')](respondWithResult(_0x56ca24,null))[_0xbbe2('0x46')](function(_0x33bdf7){var _0x4bf13f=_0x4c2176[_0xbbe2('0x2d')]['test']?0x1f4:_0x33bdf7[_0xbbe2('0x75')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0xbbe2('0x55'),_0x4bf13f,JSON[_0xbbe2('0x76')](_0x33bdf7));delete _0x33bdf7[_0xbbe2('0x27')];if(_0x4bf13f===0x191){_0x4bf13f=0x190;}_0x56ca24[_0xbbe2('0x19')](_0x4bf13f)['send'](_0x4c2176['query'][_0xbbe2('0x77')]?{'message':_0xbbe2('0x78'),'statusCode':_0x33bdf7['statusCode']}:_0x33bdf7);});};
\ No newline at end of file
index 0c2bbe8..c13db78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c64=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSalesforceAccount.attributes','../../components/integrations/configuration','exports','int_salesforce_accounts','util','../../config/logger'];(function(_0xf59372,_0x151b72){var _0x4809c1=function(_0x957c7){while(--_0x957c7){_0xf59372['push'](_0xf59372['shift']());}};_0x4809c1(++_0x151b72);}(_0x9c64,0x16a));var _0x49c6=function(_0x583324,_0x2bacc6){_0x583324=_0x583324-0x0;var _0x45b2b8=_0x9c64[_0x583324];return _0x45b2b8;};'use strict';var _=require('lodash');var util=require(_0x49c6('0x0'));var logger=require(_0x49c6('0x1'))(_0x49c6('0x2'));var moment=require(_0x49c6('0x3'));var BPromise=require(_0x49c6('0x4'));var rp=require(_0x49c6('0x5'));var fs=require('fs');var path=require(_0x49c6('0x6'));var rimraf=require(_0x49c6('0x7'));var config=require(_0x49c6('0x8'));var attributes=require(_0x49c6('0x9'));var integrations=require(_0x49c6('0xa'));module[_0x49c6('0xb')]=function(_0x26881d,_0x194b7f){return _0x26881d['define']('SalesforceAccount',attributes,{'tableName':_0x49c6('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa142=['int_salesforce_accounts','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSalesforceAccount.attributes','../../components/integrations/configuration','define','SalesforceAccount'];(function(_0x36ae06,_0x57da2d){var _0x25ffc7=function(_0x38be3a){while(--_0x38be3a){_0x36ae06['push'](_0x36ae06['shift']());}};_0x25ffc7(++_0x57da2d);}(_0xa142,0x1eb));var _0x2a14=function(_0x47cc41,_0x11e552){_0x47cc41=_0x47cc41-0x0;var _0x580c72=_0xa142[_0x47cc41];return _0x580c72;};'use strict';var _=require('lodash');var util=require(_0x2a14('0x0'));var logger=require(_0x2a14('0x1'))(_0x2a14('0x2'));var moment=require(_0x2a14('0x3'));var BPromise=require(_0x2a14('0x4'));var rp=require(_0x2a14('0x5'));var fs=require('fs');var path=require(_0x2a14('0x6'));var rimraf=require(_0x2a14('0x7'));var config=require(_0x2a14('0x8'));var attributes=require(_0x2a14('0x9'));var integrations=require(_0x2a14('0xa'));module['exports']=function(_0x56affe,_0x46a080){return _0x56affe[_0x2a14('0xb')](_0x2a14('0xc'),attributes,{'tableName':_0x2a14('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6c7cc61..a00c356 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbda7=['catch','ShowSalesforceAccount','SalesforceAccount','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetSalesforceAccount','findAll','options','raw','where','attributes','map','model','include'];(function(_0x1c8acb,_0x29f3dd){var _0x5bd397=function(_0x3024fa){while(--_0x3024fa){_0x1c8acb['push'](_0x1c8acb['shift']());}};_0x5bd397(++_0x29f3dd);}(_0xbda7,0x1ca));var _0x7bda=function(_0x9f15ae,_0x37d403){_0x9f15ae=_0x9f15ae-0x0;var _0x1c2e71=_0xbda7[_0x9f15ae];return _0x1c2e71;};'use strict';var _=require(_0x7bda('0x0'));var util=require(_0x7bda('0x1'));var moment=require(_0x7bda('0x2'));var BPromise=require(_0x7bda('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7bda('0x4'));var db=require(_0x7bda('0x5'))['db'];var utils=require(_0x7bda('0x6'));var logger=require(_0x7bda('0x7'))(_0x7bda('0x8'));var config=require(_0x7bda('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x7bda('0xa')][_0x7bda('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x27f906,_0x3853cc,_0x51aa86){return new BPromise(function(_0x264ddf,_0x543c3e){return client['request'](_0x27f906,_0x51aa86)[_0x7bda('0xc')](function(_0x240965){logger[_0x7bda('0xd')](_0x7bda('0xe'),_0x3853cc,_0x7bda('0xf'));logger[_0x7bda('0x10')](_0x7bda('0x11'),_0x3853cc,_0x7bda('0xf'),JSON[_0x7bda('0x12')](_0x240965));if(_0x240965[_0x7bda('0x13')]){if(_0x240965[_0x7bda('0x13')][_0x7bda('0x14')]===0x1f4){logger[_0x7bda('0x13')]('SalesforceAccount,\x20%s,\x20%s',_0x3853cc,_0x240965[_0x7bda('0x13')]['message']);return _0x543c3e(_0x240965[_0x7bda('0x13')][_0x7bda('0x15')]);}logger[_0x7bda('0x13')](_0x7bda('0xe'),_0x3853cc,_0x240965[_0x7bda('0x13')][_0x7bda('0x15')]);return _0x264ddf(_0x240965['error'][_0x7bda('0x15')]);}else{logger[_0x7bda('0xd')](_0x7bda('0xe'),_0x3853cc,_0x7bda('0xf'));_0x264ddf(_0x240965[_0x7bda('0x16')][_0x7bda('0x15')]);}})['catch'](function(_0x9cbd67){logger[_0x7bda('0x13')](_0x7bda('0xe'),_0x3853cc,_0x9cbd67);_0x543c3e(_0x9cbd67);});});}exports[_0x7bda('0x17')]=function(_0x276bb7){var _0x52bbf6=this;return new Promise(function(_0x47b393,_0x46e3a4){return db['SalesforceAccount'][_0x7bda('0x18')]({'raw':_0x276bb7[_0x7bda('0x19')]?_0x276bb7[_0x7bda('0x19')][_0x7bda('0x1a')]===undefined?!![]:![]:!![],'where':_0x276bb7['options']?_0x276bb7['options'][_0x7bda('0x1b')]||null:null,'attributes':_0x276bb7[_0x7bda('0x19')]?_0x276bb7['options'][_0x7bda('0x1c')]||null:null,'limit':_0x276bb7['options']?_0x276bb7[_0x7bda('0x19')]['limit']||null:null,'include':_0x276bb7[_0x7bda('0x19')]?_0x276bb7[_0x7bda('0x19')]['include']?_[_0x7bda('0x1d')](_0x276bb7[_0x7bda('0x19')]['include'],function(_0x57d699){return{'model':db[_0x57d699[_0x7bda('0x1e')]],'as':_0x57d699['as'],'attributes':_0x57d699[_0x7bda('0x1c')],'include':_0x57d699['include']?_[_0x7bda('0x1d')](_0x57d699[_0x7bda('0x1f')],function(_0xdc3f0f){return{'model':db[_0xdc3f0f[_0x7bda('0x1e')]],'as':_0xdc3f0f['as'],'attributes':_0xdc3f0f[_0x7bda('0x1c')],'include':_0xdc3f0f['include']?_['map'](_0xdc3f0f[_0x7bda('0x1f')],function(_0x4a1b78){return{'model':db[_0x4a1b78[_0x7bda('0x1e')]],'as':_0x4a1b78['as'],'attributes':_0x4a1b78[_0x7bda('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x7bda('0xc')](function(_0x168da5){logger[_0x7bda('0xd')]('GetSalesforceAccount',_0x276bb7);logger[_0x7bda('0x10')](_0x7bda('0x17'),_0x276bb7,JSON[_0x7bda('0x12')](_0x168da5));_0x47b393(_0x168da5);})[_0x7bda('0x20')](function(_0x33d782){logger['error'](_0x7bda('0x17'),_0x33d782[_0x7bda('0x15')],_0x276bb7);_0x46e3a4(_0x52bbf6['error'](0x1f4,_0x33d782[_0x7bda('0x15')]));});});};exports[_0x7bda('0x21')]=function(_0x10237e){var _0x3dc1fa=this;return new Promise(function(_0x3e67f0,_0x25140a){return db[_0x7bda('0x22')]['find']({'raw':_0x10237e[_0x7bda('0x19')]?_0x10237e[_0x7bda('0x19')][_0x7bda('0x1a')]===undefined?!![]:![]:!![],'where':_0x10237e[_0x7bda('0x19')]?_0x10237e[_0x7bda('0x19')]['where']||null:null,'attributes':_0x10237e[_0x7bda('0x19')]?_0x10237e[_0x7bda('0x19')][_0x7bda('0x1c')]||null:null,'include':_0x10237e['options']?_0x10237e[_0x7bda('0x19')][_0x7bda('0x1f')]?_['map'](_0x10237e[_0x7bda('0x19')][_0x7bda('0x1f')],function(_0x5c080d){return{'model':db[_0x5c080d[_0x7bda('0x1e')]],'as':_0x5c080d['as'],'attributes':_0x5c080d['attributes'],'include':_0x5c080d['include']?_[_0x7bda('0x1d')](_0x5c080d[_0x7bda('0x1f')],function(_0x137e5c){return{'model':db[_0x137e5c[_0x7bda('0x1e')]],'as':_0x137e5c['as'],'attributes':_0x137e5c[_0x7bda('0x1c')],'include':_0x137e5c[_0x7bda('0x1f')]?_['map'](_0x137e5c[_0x7bda('0x1f')],function(_0x427948){return{'model':db[_0x427948[_0x7bda('0x1e')]],'as':_0x427948['as'],'attributes':_0x427948[_0x7bda('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x7bda('0xc')](function(_0x41cd19){logger[_0x7bda('0xd')](_0x7bda('0x21'),_0x10237e);logger[_0x7bda('0x10')]('ShowSalesforceAccount',_0x10237e,JSON['stringify'](_0x41cd19));_0x3e67f0(_0x41cd19);})[_0x7bda('0x20')](function(_0x589f4a){logger[_0x7bda('0x13')]('ShowSalesforceAccount',_0x589f4a[_0x7bda('0x15')],_0x10237e);_0x25140a(_0x3dc1fa['error'](0x1f4,_0x589f4a[_0x7bda('0x15')]));});});};
\ No newline at end of file
+var _0x5951=['limit','map','include','model','ShowSalesforceAccount','SalesforceAccount','find','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','request','then','info','request\x20sent','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','stringify','error','SalesforceAccount,\x20%s,\x20%s','message','result','catch','GetSalesforceAccount','findAll','options','raw','where','attributes'];(function(_0x2b8206,_0x471abc){var _0x407970=function(_0x2b640f){while(--_0x2b640f){_0x2b8206['push'](_0x2b8206['shift']());}};_0x407970(++_0x471abc);}(_0x5951,0x17d));var _0x1595=function(_0x4fe01d,_0x413f6e){_0x4fe01d=_0x4fe01d-0x0;var _0x5b565a=_0x5951[_0x4fe01d];return _0x5b565a;};'use strict';var _=require(_0x1595('0x0'));var util=require(_0x1595('0x1'));var moment=require(_0x1595('0x2'));var BPromise=require(_0x1595('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1595('0x4'));var db=require(_0x1595('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x1595('0x6'))(_0x1595('0x7'));var config=require(_0x1595('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x24c4d3,_0x4e774c,_0x2612b1){return new BPromise(function(_0x5dc233,_0x5dba2c){return client[_0x1595('0x9')](_0x24c4d3,_0x2612b1)[_0x1595('0xa')](function(_0x41a9b5){logger[_0x1595('0xb')]('SalesforceAccount,\x20%s,\x20%s',_0x4e774c,_0x1595('0xc'));logger[_0x1595('0xd')](_0x1595('0xe'),_0x4e774c,_0x1595('0xc'),JSON[_0x1595('0xf')](_0x41a9b5));if(_0x41a9b5['error']){if(_0x41a9b5[_0x1595('0x10')]['code']===0x1f4){logger['error'](_0x1595('0x11'),_0x4e774c,_0x41a9b5[_0x1595('0x10')][_0x1595('0x12')]);return _0x5dba2c(_0x41a9b5['error'][_0x1595('0x12')]);}logger[_0x1595('0x10')](_0x1595('0x11'),_0x4e774c,_0x41a9b5[_0x1595('0x10')][_0x1595('0x12')]);return _0x5dc233(_0x41a9b5[_0x1595('0x10')][_0x1595('0x12')]);}else{logger[_0x1595('0xb')](_0x1595('0x11'),_0x4e774c,_0x1595('0xc'));_0x5dc233(_0x41a9b5[_0x1595('0x13')]['message']);}})[_0x1595('0x14')](function(_0x68d634){logger[_0x1595('0x10')](_0x1595('0x11'),_0x4e774c,_0x68d634);_0x5dba2c(_0x68d634);});});}exports[_0x1595('0x15')]=function(_0x128c02){var _0x452d19=this;return new Promise(function(_0x140a6b,_0x408300){return db['SalesforceAccount'][_0x1595('0x16')]({'raw':_0x128c02['options']?_0x128c02[_0x1595('0x17')][_0x1595('0x18')]===undefined?!![]:![]:!![],'where':_0x128c02[_0x1595('0x17')]?_0x128c02[_0x1595('0x17')][_0x1595('0x19')]||null:null,'attributes':_0x128c02[_0x1595('0x17')]?_0x128c02[_0x1595('0x17')][_0x1595('0x1a')]||null:null,'limit':_0x128c02[_0x1595('0x17')]?_0x128c02[_0x1595('0x17')][_0x1595('0x1b')]||null:null,'include':_0x128c02['options']?_0x128c02[_0x1595('0x17')]['include']?_[_0x1595('0x1c')](_0x128c02[_0x1595('0x17')]['include'],function(_0x5dbb85){return{'model':db[_0x5dbb85['model']],'as':_0x5dbb85['as'],'attributes':_0x5dbb85['attributes'],'include':_0x5dbb85[_0x1595('0x1d')]?_['map'](_0x5dbb85[_0x1595('0x1d')],function(_0x495500){return{'model':db[_0x495500[_0x1595('0x1e')]],'as':_0x495500['as'],'attributes':_0x495500['attributes'],'include':_0x495500[_0x1595('0x1d')]?_[_0x1595('0x1c')](_0x495500[_0x1595('0x1d')],function(_0x287031){return{'model':db[_0x287031['model']],'as':_0x287031['as'],'attributes':_0x287031[_0x1595('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2a217f){logger[_0x1595('0xb')](_0x1595('0x15'),_0x128c02);logger[_0x1595('0xd')](_0x1595('0x15'),_0x128c02,JSON[_0x1595('0xf')](_0x2a217f));_0x140a6b(_0x2a217f);})[_0x1595('0x14')](function(_0x45aa99){logger[_0x1595('0x10')](_0x1595('0x15'),_0x45aa99[_0x1595('0x12')],_0x128c02);_0x408300(_0x452d19[_0x1595('0x10')](0x1f4,_0x45aa99['message']));});});};exports[_0x1595('0x1f')]=function(_0x298bdd){var _0x449e80=this;return new Promise(function(_0x19ebc5,_0x3de4c6){return db[_0x1595('0x20')][_0x1595('0x21')]({'raw':_0x298bdd[_0x1595('0x17')]?_0x298bdd[_0x1595('0x17')][_0x1595('0x18')]===undefined?!![]:![]:!![],'where':_0x298bdd[_0x1595('0x17')]?_0x298bdd['options'][_0x1595('0x19')]||null:null,'attributes':_0x298bdd[_0x1595('0x17')]?_0x298bdd[_0x1595('0x17')][_0x1595('0x1a')]||null:null,'include':_0x298bdd[_0x1595('0x17')]?_0x298bdd[_0x1595('0x17')]['include']?_[_0x1595('0x1c')](_0x298bdd[_0x1595('0x17')][_0x1595('0x1d')],function(_0x3d8232){return{'model':db[_0x3d8232[_0x1595('0x1e')]],'as':_0x3d8232['as'],'attributes':_0x3d8232[_0x1595('0x1a')],'include':_0x3d8232[_0x1595('0x1d')]?_['map'](_0x3d8232['include'],function(_0xca8b30){return{'model':db[_0xca8b30[_0x1595('0x1e')]],'as':_0xca8b30['as'],'attributes':_0xca8b30['attributes'],'include':_0xca8b30[_0x1595('0x1d')]?_[_0x1595('0x1c')](_0xca8b30[_0x1595('0x1d')],function(_0x50bf01){return{'model':db[_0x50bf01[_0x1595('0x1e')]],'as':_0x50bf01['as'],'attributes':_0x50bf01[_0x1595('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x1595('0xa')](function(_0x23abb0){logger[_0x1595('0xb')](_0x1595('0x1f'),_0x298bdd);logger['debug']('ShowSalesforceAccount',_0x298bdd,JSON[_0x1595('0xf')](_0x23abb0));_0x19ebc5(_0x23abb0);})[_0x1595('0x14')](function(_0x514b){logger[_0x1595('0x10')]('ShowSalesforceAccount',_0x514b[_0x1595('0x12')],_0x298bdd);_0x3de4c6(_0x449e80[_0x1595('0x10')](0x1f4,_0x514b[_0x1595('0x12')]));});});};
\ No newline at end of file
index 00f8b9c..ec2764c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['post','create','put','/:id','update','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','/:id/subjects','getSubjects','getDescriptions'];(function(_0x99868f,_0xbdb8e7){var _0x27a71b=function(_0x41feca){while(--_0x41feca){_0x99868f['push'](_0x99868f['shift']());}};_0x27a71b(++_0xbdb8e7);}(_0x0b0e,0x187));var _0xe0b0=function(_0x3f9ea9,_0x19840d){_0x3f9ea9=_0x3f9ea9-0x0;var _0x291e7f=_0x0b0e[_0x3f9ea9];return _0x291e7f;};'use strict';var multer=require(_0xe0b0('0x0'));var util=require('util');var path=require(_0xe0b0('0x1'));var timeout=require('connect-timeout');var express=require(_0xe0b0('0x2'));var router=express[_0xe0b0('0x3')]();var fs_extra=require(_0xe0b0('0x4'));var auth=require(_0xe0b0('0x5'));var interaction=require(_0xe0b0('0x6'));var config=require(_0xe0b0('0x7'));var controller=require(_0xe0b0('0x8'));router[_0xe0b0('0x9')]('/',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0xb')]);router[_0xe0b0('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xe0b0('0xc')]);router[_0xe0b0('0x9')](_0xe0b0('0xd'),auth[_0xe0b0('0xa')](),controller['getFields']);router[_0xe0b0('0x9')](_0xe0b0('0xe'),auth['isAuthenticated'](),controller[_0xe0b0('0xf')]);router[_0xe0b0('0x9')]('/:id/descriptions',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x10')]);router[_0xe0b0('0x11')]('/',auth['isAuthenticated'](),controller[_0xe0b0('0x12')]);router[_0xe0b0('0x13')](_0xe0b0('0x14'),auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x15')]);router['delete'](_0xe0b0('0x14'),auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x16')]);module[_0xe0b0('0x17')]=router;
\ No newline at end of file
+var _0x7a54=['getSubjects','getDescriptions','post','create','put','update','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceConfiguration.controller','get','index','/:id','isAuthenticated','/:id/subjects'];(function(_0x1e6b76,_0x4b4b55){var _0x4b1d3e=function(_0xdf9c27){while(--_0xdf9c27){_0x1e6b76['push'](_0x1e6b76['shift']());}};_0x4b1d3e(++_0x4b4b55);}(_0x7a54,0x106));var _0x47a5=function(_0x192e07,_0x3b269f){_0x192e07=_0x192e07-0x0;var _0x304758=_0x7a54[_0x192e07];return _0x304758;};'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('0x9')]('/:id/fields',auth['isAuthenticated'](),controller['getFields']);router[_0x47a5('0x9')](_0x47a5('0xd'),auth['isAuthenticated'](),controller[_0x47a5('0xe')]);router['get']('/:id/descriptions',auth[_0x47a5('0xc')](),controller[_0x47a5('0xf')]);router[_0x47a5('0x10')]('/',auth[_0x47a5('0xc')](),controller[_0x47a5('0x11')]);router[_0x47a5('0x12')](_0x47a5('0xb'),auth['isAuthenticated'](),controller[_0x47a5('0x13')]);router[_0x47a5('0x14')](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x15')]);module[_0x47a5('0x16')]=router;
\ No newline at end of file
index 18a0e96..a88f19f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1058=['contact','lead','account','sequelize','STRING','ENUM','Task','contact_lead'];(function(_0x3f3f77,_0x42801b){var _0x229b23=function(_0x3af08a){while(--_0x3af08a){_0x3f3f77['push'](_0x3f3f77['shift']());}};_0x229b23(++_0x42801b);}(_0x1058,0xcb));var _0x8105=function(_0x2470a5,_0x3392ad){_0x2470a5=_0x2470a5-0x0;var _0x4d6c94=_0x1058[_0x2470a5];return _0x4d6c94;};'use strict';var Sequelize=require(_0x8105('0x0'));module['exports']={'name':{'type':Sequelize[_0x8105('0x1')]},'description':{'type':Sequelize[_0x8105('0x1')]},'ticketType':{'type':Sequelize[_0x8105('0x2')](_0x8105('0x3'),'Case'),'defaultValue':_0x8105('0x3')},'moduleSearch':{'type':Sequelize[_0x8105('0x2')](_0x8105('0x4'),_0x8105('0x5'),_0x8105('0x6'),'account_contact_lead','account'),'defaultValue':_0x8105('0x4')},'moduleCreate':{'type':Sequelize[_0x8105('0x2')]('nothing',_0x8105('0x5'),_0x8105('0x6'),_0x8105('0x7')),'defaultValue':_0x8105('0x6')},'leadId':{'type':Sequelize[_0x8105('0x1')]},'additionalSearchAccount':{'type':Sequelize[_0x8105('0x1')]},'additionalSearchContact':{'type':Sequelize[_0x8105('0x1')]},'additionalSearchLead':{'type':Sequelize[_0x8105('0x1')]}};
\ No newline at end of file
+var _0x357e=['Case','ENUM','contact_lead','contact','lead','account_contact_lead','account','nothing','sequelize','exports','STRING','Task'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0x357e,0x170));var _0xe357=function(_0x7e2eb0,_0x17cd58){_0x7e2eb0=_0x7e2eb0-0x0;var _0xd92de4=_0x357e[_0x7e2eb0];return _0xd92de4;};'use strict';var Sequelize=require(_0xe357('0x0'));module[_0xe357('0x1')]={'name':{'type':Sequelize[_0xe357('0x2')]},'description':{'type':Sequelize[_0xe357('0x2')]},'ticketType':{'type':Sequelize['ENUM'](_0xe357('0x3'),_0xe357('0x4')),'defaultValue':_0xe357('0x3')},'moduleSearch':{'type':Sequelize[_0xe357('0x5')](_0xe357('0x6'),_0xe357('0x7'),_0xe357('0x8'),_0xe357('0x9'),_0xe357('0xa')),'defaultValue':_0xe357('0x6')},'moduleCreate':{'type':Sequelize[_0xe357('0x5')](_0xe357('0xb'),_0xe357('0x7'),'lead',_0xe357('0xa')),'defaultValue':_0xe357('0x8')},'leadId':{'type':Sequelize[_0xe357('0x2')]},'additionalSearchAccount':{'type':Sequelize['STRING']},'additionalSearchContact':{'type':Sequelize[_0xe357('0x2')]},'additionalSearchLead':{'type':Sequelize[_0xe357('0x2')]}};
\ No newline at end of file
index 6c4d9fa..ce2885f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x714a=['../../config/license/hardware','api','../../config/license/util','sendStatus','end','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','then','destroy','error','name','send','index','map','SalesforceConfiguration','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','sort','pick','filter','where','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','order','getFields','nolimit','getSubjects','getDescriptions','findOne','rimraf','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x5d9eca,_0x516294){var _0x326510=function(_0x5edd76){while(--_0x5edd76){_0x5d9eca['push'](_0x5d9eca['shift']());}};_0x326510(++_0x516294);}(_0x714a,0xd8));var _0xa714=function(_0x27280b,_0x2a742){_0x27280b=_0x27280b-0x0;var _0x43eff8=_0x714a[_0x27280b];return _0x43eff8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa714('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa714('0x1'));var rp=require(_0xa714('0x2'));var moment=require(_0xa714('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xa714('0x4'));var util=require('util');var path=require(_0xa714('0x5'));var sox=require(_0xa714('0x6'));var csv=require(_0xa714('0x7'));var ejs=require(_0xa714('0x8'));var fs=require('fs');var fs_extra=require(_0xa714('0x9'));var _=require(_0xa714('0xa'));var squel=require(_0xa714('0xb'));var crypto=require(_0xa714('0xc'));var jsforce=require(_0xa714('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xa714('0xe'));var Papa=require('papaparse');var Redis=require(_0xa714('0xf'));var authService=require(_0xa714('0x10'));var qs=require(_0xa714('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa714('0x12'));var logger=require('../../config/logger')(_0xa714('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xa714('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1095dc,_0x3000a2){_0x3000a2=_0x3000a2||0xcc;return function(_0x335b5b){if(_0x335b5b){return _0x1095dc[_0xa714('0x15')](_0x3000a2);}return _0x1095dc['status'](_0x3000a2)[_0xa714('0x16')]();};}function respondWithResult(_0x173405,_0x7e0324){_0x7e0324=_0x7e0324||0xc8;return function(_0x32003a){if(_0x32003a){return _0x173405[_0xa714('0x17')](_0x7e0324)['json'](_0x32003a);}};}function respondWithFilteredResult(_0x3dc041,_0x759b60){return function(_0x2b6606){if(_0x2b6606){var _0x239790=typeof _0x759b60['offset']===_0xa714('0x18')&&typeof _0x759b60[_0xa714('0x19')]==='undefined';var _0x235556=_0x2b6606[_0xa714('0x1a')];var _0x460966=_0x239790?0x0:_0x759b60['offset'];var _0x2cf4a9=_0x239790?_0x2b6606[_0xa714('0x1a')]:_0x759b60[_0xa714('0x1b')]+_0x759b60[_0xa714('0x19')];var _0x972ca2;if(_0x2cf4a9>=_0x235556){_0x2cf4a9=_0x235556;_0x972ca2=0xc8;}else{_0x972ca2=0xce;}_0x3dc041['status'](_0x972ca2);return _0x3dc041[_0xa714('0x1c')](_0xa714('0x1d'),_0x460966+'-'+_0x2cf4a9+'/'+_0x235556)[_0xa714('0x1e')](_0x2b6606);}return null;};}function patchUpdates(_0x38ae36){return function(_0x7b9f39){try{jsonpatch[_0xa714('0x1f')](_0x7b9f39,_0x38ae36,!![]);}catch(_0x3140a9){return BPromise[_0xa714('0x20')](_0x3140a9);}return _0x7b9f39[_0xa714('0x21')]();};}function saveUpdates(_0x2edc56,_0x22efaf){return function(_0x57f81e){if(_0x57f81e){return _0x57f81e[_0xa714('0x22')](_0x2edc56)[_0xa714('0x23')](function(_0x43ebfd){return _0x43ebfd;});}return null;};}function removeEntity(_0x4b78e7,_0x2870de){return function(_0x5bfd8b){if(_0x5bfd8b){return _0x5bfd8b[_0xa714('0x24')]()['then'](function(){_0x4b78e7[_0xa714('0x17')](0xcc)[_0xa714('0x16')]();});}};}function handleEntityNotFound(_0x75505e,_0x116642){return function(_0x1bffba){if(!_0x1bffba){_0x75505e[_0xa714('0x15')](0x194);}return _0x1bffba;};}function handleError(_0x2e4461,_0xa1498e){_0xa1498e=_0xa1498e||0x1f4;return function(_0x1cca99){logger[_0xa714('0x25')](_0x1cca99['stack']);if(_0x1cca99[_0xa714('0x26')]){delete _0x1cca99['name'];}_0x2e4461[_0xa714('0x17')](_0xa1498e)[_0xa714('0x27')](_0x1cca99);};}exports[_0xa714('0x28')]=function(_0x9a7c8f,_0x831c1){var _0x2ba8f7={},_0x15dc1f={},_0x1cf669={'count':0x0,'rows':[]};var _0x413b6f=_[_0xa714('0x29')](db[_0xa714('0x2a')][_0xa714('0x2b')],function(_0x4960dc){return{'name':_0x4960dc[_0xa714('0x2c')],'type':_0x4960dc[_0xa714('0x2d')][_0xa714('0x2e')]};});_0x15dc1f['model']=_[_0xa714('0x29')](_0x413b6f,_0xa714('0x26'));_0x15dc1f[_0xa714('0x2f')]=_[_0xa714('0x30')](_0x9a7c8f[_0xa714('0x2f')]);_0x15dc1f[_0xa714('0x31')]=_[_0xa714('0x32')](_0x15dc1f[_0xa714('0x33')],_0x15dc1f['query']);_0x2ba8f7['attributes']=_[_0xa714('0x32')](_0x15dc1f[_0xa714('0x33')],qs[_0xa714('0x34')](_0x9a7c8f['query'][_0xa714('0x34')]));_0x2ba8f7[_0xa714('0x35')]=_0x2ba8f7['attributes'][_0xa714('0x36')]?_0x2ba8f7['attributes']:_0x15dc1f['model'];if(!_0x9a7c8f[_0xa714('0x2f')][_0xa714('0x37')]('nolimit')){_0x2ba8f7[_0xa714('0x19')]=qs['limit'](_0x9a7c8f[_0xa714('0x2f')][_0xa714('0x19')]);_0x2ba8f7[_0xa714('0x1b')]=qs[_0xa714('0x1b')](_0x9a7c8f[_0xa714('0x2f')]['offset']);}_0x2ba8f7['order']=qs['sort'](_0x9a7c8f[_0xa714('0x2f')][_0xa714('0x38')]);_0x2ba8f7['where']=qs[_0xa714('0x31')](_[_0xa714('0x39')](_0x9a7c8f['query'],_0x15dc1f[_0xa714('0x31')]),_0x413b6f);if(_0x9a7c8f[_0xa714('0x2f')][_0xa714('0x3a')]){_0x2ba8f7[_0xa714('0x3b')]=_[_0xa714('0x3c')](_0x2ba8f7['where'],{'$or':_[_0xa714('0x29')](_0x413b6f,function(_0x468f9a){if(_0x468f9a['type']!=='VIRTUAL'){var _0x49a521={};_0x49a521[_0x468f9a[_0xa714('0x26')]]={'$like':'%'+_0x9a7c8f[_0xa714('0x2f')][_0xa714('0x3a')]+'%'};return _0x49a521;}})});}_0x2ba8f7=_[_0xa714('0x3c')]({},_0x2ba8f7,_0x9a7c8f[_0xa714('0x3d')]);var _0x4dae26={'where':_0x2ba8f7[_0xa714('0x3b')]};return db[_0xa714('0x2a')][_0xa714('0x1a')](_0x4dae26)[_0xa714('0x23')](function(_0xee4089){_0x1cf669['count']=_0xee4089;if(_0x9a7c8f[_0xa714('0x2f')][_0xa714('0x3e')]){_0x2ba8f7[_0xa714('0x3f')]=[{'all':!![]}];}return db['SalesforceConfiguration'][_0xa714('0x40')](_0x2ba8f7);})[_0xa714('0x23')](function(_0x32b9a7){_0x1cf669[_0xa714('0x41')]=_0x32b9a7;return _0x1cf669;})[_0xa714('0x23')](respondWithFilteredResult(_0x831c1,_0x2ba8f7))[_0xa714('0x42')](handleError(_0x831c1,null));};exports[_0xa714('0x43')]=function(_0x595f78,_0x20b696){var _0x2bd93e={'raw':![],'where':{'id':_0x595f78[_0xa714('0x44')]['id']}},_0xb77632={};_0xb77632[_0xa714('0x33')]=_['keys'](db[_0xa714('0x2a')]['rawAttributes']);_0xb77632['query']=_[_0xa714('0x30')](_0x595f78[_0xa714('0x2f')]);_0xb77632[_0xa714('0x31')]=_[_0xa714('0x32')](_0xb77632[_0xa714('0x33')],_0xb77632[_0xa714('0x2f')]);_0x2bd93e['attributes']=_['intersection'](_0xb77632[_0xa714('0x33')],qs[_0xa714('0x34')](_0x595f78[_0xa714('0x2f')][_0xa714('0x34')]));_0x2bd93e['attributes']=_0x2bd93e['attributes'][_0xa714('0x36')]?_0x2bd93e[_0xa714('0x35')]:_0xb77632[_0xa714('0x33')];if(_0x595f78[_0xa714('0x2f')][_0xa714('0x3e')]){_0x2bd93e['include']=[{'all':!![]}];}_0x2bd93e=_[_0xa714('0x3c')]({},_0x2bd93e,_0x595f78[_0xa714('0x3d')]);return db[_0xa714('0x2a')][_0xa714('0x45')](_0x2bd93e)[_0xa714('0x23')](handleEntityNotFound(_0x20b696,null))[_0xa714('0x23')](respondWithResult(_0x20b696,null))[_0xa714('0x42')](handleError(_0x20b696,null));};exports[_0xa714('0x46')]=function(_0x323ab9,_0x2e8673){return db[_0xa714('0x2a')][_0xa714('0x46')](_0x323ab9[_0xa714('0x47')],{})[_0xa714('0x23')](respondWithResult(_0x2e8673,0xc9))[_0xa714('0x42')](handleError(_0x2e8673,null));};exports[_0xa714('0x22')]=function(_0x481d31,_0x15ae84){if(_0x481d31[_0xa714('0x47')]['id']){delete _0x481d31[_0xa714('0x47')]['id'];}return db[_0xa714('0x2a')][_0xa714('0x45')]({'where':{'id':_0x481d31['params']['id']}})['then'](handleEntityNotFound(_0x15ae84,null))[_0xa714('0x23')](saveUpdates(_0x481d31[_0xa714('0x47')],null))[_0xa714('0x23')](respondWithResult(_0x15ae84,null))[_0xa714('0x42')](handleError(_0x15ae84,null));};exports[_0xa714('0x24')]=function(_0x26d8ce,_0x30fd5e){return db[_0xa714('0x2a')][_0xa714('0x45')]({'where':{'id':_0x26d8ce[_0xa714('0x44')]['id']}})[_0xa714('0x23')](handleEntityNotFound(_0x30fd5e,null))[_0xa714('0x23')](removeEntity(_0x30fd5e,null))[_0xa714('0x42')](handleError(_0x30fd5e,null));};exports['getFields']=function(_0x520159,_0x2c982a,_0x4645a3){var _0x5e4ab3={};var _0x570fb5={};var _0x21e7e3;var _0x50a1f3;return db[_0xa714('0x2a')]['findOne']({'where':{'id':_0x520159[_0xa714('0x44')]['id']}})[_0xa714('0x23')](handleEntityNotFound(_0x2c982a,null))[_0xa714('0x23')](function(_0x3b7f6f){if(_0x3b7f6f){_0x21e7e3=_0x3b7f6f;_0x570fb5[_0xa714('0x33')]=_[_0xa714('0x30')](db['SalesforceField'][_0xa714('0x2b')]);_0x570fb5['query']=_[_0xa714('0x30')](_0x520159['query']);_0x570fb5[_0xa714('0x31')]=_[_0xa714('0x32')](_0x570fb5['model'],_0x570fb5[_0xa714('0x2f')]);_0x5e4ab3[_0xa714('0x35')]=_[_0xa714('0x32')](_0x570fb5[_0xa714('0x33')],qs['fields'](_0x520159[_0xa714('0x2f')]['fields']));_0x5e4ab3[_0xa714('0x35')]=_0x5e4ab3[_0xa714('0x35')]['length']?_0x5e4ab3[_0xa714('0x35')]:_0x570fb5['model'];_0x5e4ab3[_0xa714('0x48')]=qs[_0xa714('0x38')](_0x520159['query'][_0xa714('0x38')]);_0x5e4ab3['where']=qs[_0xa714('0x31')](_['pick'](_0x520159[_0xa714('0x2f')],_0x570fb5[_0xa714('0x31')]));if(_0x520159[_0xa714('0x2f')][_0xa714('0x3a')]){_0x5e4ab3[_0xa714('0x3b')]=_[_0xa714('0x3c')](_0x5e4ab3[_0xa714('0x3b')],{'$or':_['map'](_0x5e4ab3[_0xa714('0x35')],function(_0x3fa1e0){var _0xbfb36={};_0xbfb36[_0x3fa1e0]={'$like':'%'+_0x520159[_0xa714('0x2f')][_0xa714('0x3a')]+'%'};return _0xbfb36;})});}_0x5e4ab3=_[_0xa714('0x3c')]({},_0x5e4ab3,_0x520159[_0xa714('0x3d')]);return _0x21e7e3[_0xa714('0x49')](_0x5e4ab3);}})['then'](function(_0x1e89ae){if(_0x1e89ae){_0x50a1f3=_0x1e89ae[_0xa714('0x36')];if(!_0x520159[_0xa714('0x2f')][_0xa714('0x37')](_0xa714('0x4a'))){_0x5e4ab3[_0xa714('0x19')]=qs[_0xa714('0x19')](_0x520159[_0xa714('0x2f')][_0xa714('0x19')]);_0x5e4ab3['offset']=qs[_0xa714('0x1b')](_0x520159['query'][_0xa714('0x1b')]);}return _0x21e7e3[_0xa714('0x49')](_0x5e4ab3);}})[_0xa714('0x23')](function(_0x497fe6){if(_0x497fe6){return _0x497fe6?{'count':_0x50a1f3,'rows':_0x497fe6}:null;}})[_0xa714('0x23')](respondWithResult(_0x2c982a,null))['catch'](handleError(_0x2c982a,null));};exports[_0xa714('0x4b')]=function(_0x5e5a76,_0x445f99,_0x5a9409){var _0x4aa6b8={};var _0x5d598d={};var _0x4c62c0;var _0x1e381f;return db[_0xa714('0x2a')]['findOne']({'where':{'id':_0x5e5a76[_0xa714('0x44')]['id']}})['then'](handleEntityNotFound(_0x445f99,null))[_0xa714('0x23')](function(_0x398609){if(_0x398609){_0x4c62c0=_0x398609;_0x5d598d['model']=_[_0xa714('0x30')](db['SalesforceField'][_0xa714('0x2b')]);_0x5d598d[_0xa714('0x2f')]=_['keys'](_0x5e5a76[_0xa714('0x2f')]);_0x5d598d[_0xa714('0x31')]=_['intersection'](_0x5d598d['model'],_0x5d598d['query']);_0x4aa6b8[_0xa714('0x35')]=_['intersection'](_0x5d598d[_0xa714('0x33')],qs[_0xa714('0x34')](_0x5e5a76[_0xa714('0x2f')]['fields']));_0x4aa6b8[_0xa714('0x35')]=_0x4aa6b8[_0xa714('0x35')][_0xa714('0x36')]?_0x4aa6b8[_0xa714('0x35')]:_0x5d598d[_0xa714('0x33')];_0x4aa6b8['order']=qs[_0xa714('0x38')](_0x5e5a76['query'][_0xa714('0x38')]);_0x4aa6b8[_0xa714('0x3b')]=qs[_0xa714('0x31')](_[_0xa714('0x39')](_0x5e5a76[_0xa714('0x2f')],_0x5d598d[_0xa714('0x31')]));if(_0x5e5a76['query'][_0xa714('0x3a')]){_0x4aa6b8[_0xa714('0x3b')]=_[_0xa714('0x3c')](_0x4aa6b8[_0xa714('0x3b')],{'$or':_['map'](_0x4aa6b8['attributes'],function(_0x16b561){var _0x22add6={};_0x22add6[_0x16b561]={'$like':'%'+_0x5e5a76[_0xa714('0x2f')][_0xa714('0x3a')]+'%'};return _0x22add6;})});}_0x4aa6b8=_[_0xa714('0x3c')]({},_0x4aa6b8,_0x5e5a76['options']);return _0x4c62c0[_0xa714('0x4b')](_0x4aa6b8);}})[_0xa714('0x23')](function(_0xc6d5f2){if(_0xc6d5f2){_0x1e381f=_0xc6d5f2[_0xa714('0x36')];if(!_0x5e5a76[_0xa714('0x2f')][_0xa714('0x37')](_0xa714('0x4a'))){_0x4aa6b8[_0xa714('0x19')]=qs[_0xa714('0x19')](_0x5e5a76[_0xa714('0x2f')][_0xa714('0x19')]);_0x4aa6b8['offset']=qs[_0xa714('0x1b')](_0x5e5a76[_0xa714('0x2f')][_0xa714('0x1b')]);}return _0x4c62c0[_0xa714('0x4b')](_0x4aa6b8);}})[_0xa714('0x23')](function(_0x58b475){if(_0x58b475){return _0x58b475?{'count':_0x1e381f,'rows':_0x58b475}:null;}})[_0xa714('0x23')](respondWithResult(_0x445f99,null))['catch'](handleError(_0x445f99,null));};exports[_0xa714('0x4c')]=function(_0x2dec11,_0x4b84d7,_0x3501d3){var _0x28f078={};var _0x591c86={};var _0x6c748f;var _0x582240;return db['SalesforceConfiguration'][_0xa714('0x4d')]({'where':{'id':_0x2dec11[_0xa714('0x44')]['id']}})[_0xa714('0x23')](handleEntityNotFound(_0x4b84d7,null))['then'](function(_0x4ba985){if(_0x4ba985){_0x6c748f=_0x4ba985;_0x591c86[_0xa714('0x33')]=_['keys'](db['SalesforceField']['rawAttributes']);_0x591c86[_0xa714('0x2f')]=_[_0xa714('0x30')](_0x2dec11[_0xa714('0x2f')]);_0x591c86[_0xa714('0x31')]=_[_0xa714('0x32')](_0x591c86[_0xa714('0x33')],_0x591c86[_0xa714('0x2f')]);_0x28f078['attributes']=_[_0xa714('0x32')](_0x591c86[_0xa714('0x33')],qs[_0xa714('0x34')](_0x2dec11[_0xa714('0x2f')]['fields']));_0x28f078[_0xa714('0x35')]=_0x28f078[_0xa714('0x35')][_0xa714('0x36')]?_0x28f078[_0xa714('0x35')]:_0x591c86[_0xa714('0x33')];_0x28f078[_0xa714('0x48')]=qs[_0xa714('0x38')](_0x2dec11[_0xa714('0x2f')][_0xa714('0x38')]);_0x28f078['where']=qs[_0xa714('0x31')](_[_0xa714('0x39')](_0x2dec11[_0xa714('0x2f')],_0x591c86['filters']));if(_0x2dec11[_0xa714('0x2f')][_0xa714('0x3a')]){_0x28f078[_0xa714('0x3b')]=_['merge'](_0x28f078['where'],{'$or':_[_0xa714('0x29')](_0x28f078[_0xa714('0x35')],function(_0x15afcb){var _0x426627={};_0x426627[_0x15afcb]={'$like':'%'+_0x2dec11[_0xa714('0x2f')][_0xa714('0x3a')]+'%'};return _0x426627;})});}_0x28f078=_['merge']({},_0x28f078,_0x2dec11[_0xa714('0x3d')]);return _0x6c748f[_0xa714('0x4c')](_0x28f078);}})[_0xa714('0x23')](function(_0x320ecb){if(_0x320ecb){_0x582240=_0x320ecb['length'];if(!_0x2dec11[_0xa714('0x2f')]['hasOwnProperty'](_0xa714('0x4a'))){_0x28f078[_0xa714('0x19')]=qs[_0xa714('0x19')](_0x2dec11['query'][_0xa714('0x19')]);_0x28f078[_0xa714('0x1b')]=qs['offset'](_0x2dec11[_0xa714('0x2f')][_0xa714('0x1b')]);}return _0x6c748f[_0xa714('0x4c')](_0x28f078);}})[_0xa714('0x23')](function(_0x2301e9){if(_0x2301e9){return _0x2301e9?{'count':_0x582240,'rows':_0x2301e9}:null;}})[_0xa714('0x23')](respondWithResult(_0x4b84d7,null))[_0xa714('0x42')](handleError(_0x4b84d7,null));};
\ No newline at end of file
+var _0xcf95=['find','create','body','getFields','SalesforceField','order','getSubjects','getDescriptions','findOne','eml-format','rimraf','moment','bluebird','mustache','util','sox','to-csv','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','reject','save','update','destroy','then','error','stack','name','index','map','SalesforceConfiguration','fieldName','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filters','filter','merge','options','includeAll','include','rows','catch','params','rawAttributes'];(function(_0x22e094,_0x38da27){var _0xf7115b=function(_0x3e629e){while(--_0x3e629e){_0x22e094['push'](_0x22e094['shift']());}};_0xf7115b(++_0x38da27);}(_0xcf95,0xa1));var _0x5cf9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcf95[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x5cf9('0x0'));var rimraf=require(_0x5cf9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x5cf9('0x2'));var BPromise=require(_0x5cf9('0x3'));var Mustache=require(_0x5cf9('0x4'));var util=require(_0x5cf9('0x5'));var path=require('path');var sox=require(_0x5cf9('0x6'));var csv=require(_0x5cf9('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5cf9('0x8'));var squel=require(_0x5cf9('0x9'));var crypto=require('crypto');var jsforce=require(_0x5cf9('0xa'));var deskjs=require(_0x5cf9('0xb'));var toCsv=require(_0x5cf9('0x7'));var querystring=require(_0x5cf9('0xc'));var Papa=require(_0x5cf9('0xd'));var Redis=require(_0x5cf9('0xe'));var authService=require(_0x5cf9('0xf'));var qs=require(_0x5cf9('0x10'));var as=require(_0x5cf9('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5cf9('0x12'))(_0x5cf9('0x13'));var utils=require(_0x5cf9('0x14'));var config=require(_0x5cf9('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x5cf9('0x16'))['db'];function respondWithStatusCode(_0x191b90,_0x3094d9){_0x3094d9=_0x3094d9||0xcc;return function(_0x565b32){if(_0x565b32){return _0x191b90[_0x5cf9('0x17')](_0x3094d9);}return _0x191b90[_0x5cf9('0x18')](_0x3094d9)[_0x5cf9('0x19')]();};}function respondWithResult(_0x141c9e,_0x5f132e){_0x5f132e=_0x5f132e||0xc8;return function(_0xe787ae){if(_0xe787ae){return _0x141c9e[_0x5cf9('0x18')](_0x5f132e)['json'](_0xe787ae);}};}function respondWithFilteredResult(_0x576855,_0x5b8bf8){return function(_0x4cb11d){if(_0x4cb11d){var _0x184461=typeof _0x5b8bf8[_0x5cf9('0x1a')]===_0x5cf9('0x1b')&&typeof _0x5b8bf8[_0x5cf9('0x1c')]==='undefined';var _0x2fe568=_0x4cb11d[_0x5cf9('0x1d')];var _0x4ef361=_0x184461?0x0:_0x5b8bf8['offset'];var _0x17e526=_0x184461?_0x4cb11d[_0x5cf9('0x1d')]:_0x5b8bf8[_0x5cf9('0x1a')]+_0x5b8bf8[_0x5cf9('0x1c')];var _0x1b55cd;if(_0x17e526>=_0x2fe568){_0x17e526=_0x2fe568;_0x1b55cd=0xc8;}else{_0x1b55cd=0xce;}_0x576855['status'](_0x1b55cd);return _0x576855['set'](_0x5cf9('0x1e'),_0x4ef361+'-'+_0x17e526+'/'+_0x2fe568)[_0x5cf9('0x1f')](_0x4cb11d);}return null;};}function patchUpdates(_0x1f4da8){return function(_0x2865c6){try{jsonpatch['apply'](_0x2865c6,_0x1f4da8,!![]);}catch(_0x2e28c7){return BPromise[_0x5cf9('0x20')](_0x2e28c7);}return _0x2865c6[_0x5cf9('0x21')]();};}function saveUpdates(_0x3510cc,_0x5d1f80){return function(_0x2ee22a){if(_0x2ee22a){return _0x2ee22a[_0x5cf9('0x22')](_0x3510cc)['then'](function(_0x12f478){return _0x12f478;});}return null;};}function removeEntity(_0x2d153e,_0x17d689){return function(_0x2fe5f1){if(_0x2fe5f1){return _0x2fe5f1[_0x5cf9('0x23')]()[_0x5cf9('0x24')](function(){_0x2d153e[_0x5cf9('0x18')](0xcc)[_0x5cf9('0x19')]();});}};}function handleEntityNotFound(_0x2bc8c6,_0x4de284){return function(_0x46d31c){if(!_0x46d31c){_0x2bc8c6['sendStatus'](0x194);}return _0x46d31c;};}function handleError(_0x30b294,_0x1a976e){_0x1a976e=_0x1a976e||0x1f4;return function(_0x2831af){logger[_0x5cf9('0x25')](_0x2831af[_0x5cf9('0x26')]);if(_0x2831af[_0x5cf9('0x27')]){delete _0x2831af[_0x5cf9('0x27')];}_0x30b294[_0x5cf9('0x18')](_0x1a976e)['send'](_0x2831af);};}exports[_0x5cf9('0x28')]=function(_0x382c62,_0x11a939){var _0x4e029c={},_0x57fde4={},_0x2793b5={'count':0x0,'rows':[]};var _0x59b15e=_[_0x5cf9('0x29')](db[_0x5cf9('0x2a')]['rawAttributes'],function(_0x376446){return{'name':_0x376446[_0x5cf9('0x2b')],'type':_0x376446[_0x5cf9('0x2c')]['key']};});_0x57fde4[_0x5cf9('0x2d')]=_[_0x5cf9('0x29')](_0x59b15e,_0x5cf9('0x27'));_0x57fde4[_0x5cf9('0x2e')]=_[_0x5cf9('0x2f')](_0x382c62[_0x5cf9('0x2e')]);_0x57fde4['filters']=_[_0x5cf9('0x30')](_0x57fde4[_0x5cf9('0x2d')],_0x57fde4['query']);_0x4e029c[_0x5cf9('0x31')]=_['intersection'](_0x57fde4['model'],qs['fields'](_0x382c62['query'][_0x5cf9('0x32')]));_0x4e029c[_0x5cf9('0x31')]=_0x4e029c[_0x5cf9('0x31')][_0x5cf9('0x33')]?_0x4e029c[_0x5cf9('0x31')]:_0x57fde4[_0x5cf9('0x2d')];if(!_0x382c62[_0x5cf9('0x2e')][_0x5cf9('0x34')](_0x5cf9('0x35'))){_0x4e029c[_0x5cf9('0x1c')]=qs[_0x5cf9('0x1c')](_0x382c62['query'][_0x5cf9('0x1c')]);_0x4e029c[_0x5cf9('0x1a')]=qs[_0x5cf9('0x1a')](_0x382c62[_0x5cf9('0x2e')][_0x5cf9('0x1a')]);}_0x4e029c['order']=qs[_0x5cf9('0x36')](_0x382c62[_0x5cf9('0x2e')][_0x5cf9('0x36')]);_0x4e029c[_0x5cf9('0x37')]=qs['filters'](_[_0x5cf9('0x38')](_0x382c62['query'],_0x57fde4[_0x5cf9('0x39')]),_0x59b15e);if(_0x382c62[_0x5cf9('0x2e')][_0x5cf9('0x3a')]){_0x4e029c[_0x5cf9('0x37')]=_[_0x5cf9('0x3b')](_0x4e029c[_0x5cf9('0x37')],{'$or':_[_0x5cf9('0x29')](_0x59b15e,function(_0x732390){if(_0x732390['type']!=='VIRTUAL'){var _0x577478={};_0x577478[_0x732390[_0x5cf9('0x27')]]={'$like':'%'+_0x382c62[_0x5cf9('0x2e')]['filter']+'%'};return _0x577478;}})});}_0x4e029c=_[_0x5cf9('0x3b')]({},_0x4e029c,_0x382c62[_0x5cf9('0x3c')]);var _0x367e7a={'where':_0x4e029c['where']};return db[_0x5cf9('0x2a')]['count'](_0x367e7a)[_0x5cf9('0x24')](function(_0x19cdeb){_0x2793b5[_0x5cf9('0x1d')]=_0x19cdeb;if(_0x382c62[_0x5cf9('0x2e')][_0x5cf9('0x3d')]){_0x4e029c[_0x5cf9('0x3e')]=[{'all':!![]}];}return db[_0x5cf9('0x2a')]['findAll'](_0x4e029c);})[_0x5cf9('0x24')](function(_0x23e863){_0x2793b5[_0x5cf9('0x3f')]=_0x23e863;return _0x2793b5;})[_0x5cf9('0x24')](respondWithFilteredResult(_0x11a939,_0x4e029c))[_0x5cf9('0x40')](handleError(_0x11a939,null));};exports['show']=function(_0x3c8da8,_0x43d199){var _0x4b960e={'raw':![],'where':{'id':_0x3c8da8[_0x5cf9('0x41')]['id']}},_0x5cb2c0={};_0x5cb2c0[_0x5cf9('0x2d')]=_[_0x5cf9('0x2f')](db[_0x5cf9('0x2a')][_0x5cf9('0x42')]);_0x5cb2c0['query']=_[_0x5cf9('0x2f')](_0x3c8da8['query']);_0x5cb2c0[_0x5cf9('0x39')]=_['intersection'](_0x5cb2c0[_0x5cf9('0x2d')],_0x5cb2c0['query']);_0x4b960e[_0x5cf9('0x31')]=_['intersection'](_0x5cb2c0[_0x5cf9('0x2d')],qs['fields'](_0x3c8da8[_0x5cf9('0x2e')][_0x5cf9('0x32')]));_0x4b960e[_0x5cf9('0x31')]=_0x4b960e[_0x5cf9('0x31')][_0x5cf9('0x33')]?_0x4b960e[_0x5cf9('0x31')]:_0x5cb2c0[_0x5cf9('0x2d')];if(_0x3c8da8[_0x5cf9('0x2e')][_0x5cf9('0x3d')]){_0x4b960e[_0x5cf9('0x3e')]=[{'all':!![]}];}_0x4b960e=_[_0x5cf9('0x3b')]({},_0x4b960e,_0x3c8da8[_0x5cf9('0x3c')]);return db[_0x5cf9('0x2a')][_0x5cf9('0x43')](_0x4b960e)['then'](handleEntityNotFound(_0x43d199,null))['then'](respondWithResult(_0x43d199,null))[_0x5cf9('0x40')](handleError(_0x43d199,null));};exports[_0x5cf9('0x44')]=function(_0x1b7c85,_0xdcd9ba){return db[_0x5cf9('0x2a')]['create'](_0x1b7c85[_0x5cf9('0x45')],{})['then'](respondWithResult(_0xdcd9ba,0xc9))['catch'](handleError(_0xdcd9ba,null));};exports['update']=function(_0x2390a8,_0x4f6830){if(_0x2390a8[_0x5cf9('0x45')]['id']){delete _0x2390a8[_0x5cf9('0x45')]['id'];}return db[_0x5cf9('0x2a')]['find']({'where':{'id':_0x2390a8[_0x5cf9('0x41')]['id']}})[_0x5cf9('0x24')](handleEntityNotFound(_0x4f6830,null))['then'](saveUpdates(_0x2390a8[_0x5cf9('0x45')],null))['then'](respondWithResult(_0x4f6830,null))[_0x5cf9('0x40')](handleError(_0x4f6830,null));};exports['destroy']=function(_0x8dd4fe,_0x4e5769){return db['SalesforceConfiguration'][_0x5cf9('0x43')]({'where':{'id':_0x8dd4fe['params']['id']}})[_0x5cf9('0x24')](handleEntityNotFound(_0x4e5769,null))[_0x5cf9('0x24')](removeEntity(_0x4e5769,null))[_0x5cf9('0x40')](handleError(_0x4e5769,null));};exports[_0x5cf9('0x46')]=function(_0x487f9b,_0x5993d1,_0x28b448){var _0x14b79e={};var _0x255617={};var _0x447571;var _0x202de7;return db[_0x5cf9('0x2a')]['findOne']({'where':{'id':_0x487f9b[_0x5cf9('0x41')]['id']}})['then'](handleEntityNotFound(_0x5993d1,null))[_0x5cf9('0x24')](function(_0x27e634){if(_0x27e634){_0x447571=_0x27e634;_0x255617[_0x5cf9('0x2d')]=_['keys'](db[_0x5cf9('0x47')]['rawAttributes']);_0x255617['query']=_[_0x5cf9('0x2f')](_0x487f9b[_0x5cf9('0x2e')]);_0x255617[_0x5cf9('0x39')]=_[_0x5cf9('0x30')](_0x255617[_0x5cf9('0x2d')],_0x255617[_0x5cf9('0x2e')]);_0x14b79e[_0x5cf9('0x31')]=_['intersection'](_0x255617[_0x5cf9('0x2d')],qs[_0x5cf9('0x32')](_0x487f9b[_0x5cf9('0x2e')][_0x5cf9('0x32')]));_0x14b79e['attributes']=_0x14b79e['attributes'][_0x5cf9('0x33')]?_0x14b79e['attributes']:_0x255617[_0x5cf9('0x2d')];_0x14b79e[_0x5cf9('0x48')]=qs[_0x5cf9('0x36')](_0x487f9b['query']['sort']);_0x14b79e[_0x5cf9('0x37')]=qs[_0x5cf9('0x39')](_[_0x5cf9('0x38')](_0x487f9b[_0x5cf9('0x2e')],_0x255617[_0x5cf9('0x39')]));if(_0x487f9b['query'][_0x5cf9('0x3a')]){_0x14b79e[_0x5cf9('0x37')]=_[_0x5cf9('0x3b')](_0x14b79e['where'],{'$or':_[_0x5cf9('0x29')](_0x14b79e[_0x5cf9('0x31')],function(_0x3d1510){var _0x78482d={};_0x78482d[_0x3d1510]={'$like':'%'+_0x487f9b['query'][_0x5cf9('0x3a')]+'%'};return _0x78482d;})});}_0x14b79e=_['merge']({},_0x14b79e,_0x487f9b[_0x5cf9('0x3c')]);return _0x447571['getFields'](_0x14b79e);}})[_0x5cf9('0x24')](function(_0x349ad7){if(_0x349ad7){_0x202de7=_0x349ad7[_0x5cf9('0x33')];if(!_0x487f9b[_0x5cf9('0x2e')][_0x5cf9('0x34')](_0x5cf9('0x35'))){_0x14b79e['limit']=qs['limit'](_0x487f9b[_0x5cf9('0x2e')]['limit']);_0x14b79e['offset']=qs[_0x5cf9('0x1a')](_0x487f9b[_0x5cf9('0x2e')][_0x5cf9('0x1a')]);}return _0x447571[_0x5cf9('0x46')](_0x14b79e);}})[_0x5cf9('0x24')](function(_0x70bc9d){if(_0x70bc9d){return _0x70bc9d?{'count':_0x202de7,'rows':_0x70bc9d}:null;}})[_0x5cf9('0x24')](respondWithResult(_0x5993d1,null))[_0x5cf9('0x40')](handleError(_0x5993d1,null));};exports[_0x5cf9('0x49')]=function(_0x20390a,_0xbee90f,_0x727796){var _0x20f6af={};var _0x2683ee={};var _0x243bf9;var _0x1b7cf9;return db[_0x5cf9('0x2a')]['findOne']({'where':{'id':_0x20390a[_0x5cf9('0x41')]['id']}})['then'](handleEntityNotFound(_0xbee90f,null))['then'](function(_0x581012){if(_0x581012){_0x243bf9=_0x581012;_0x2683ee[_0x5cf9('0x2d')]=_['keys'](db[_0x5cf9('0x47')][_0x5cf9('0x42')]);_0x2683ee['query']=_[_0x5cf9('0x2f')](_0x20390a['query']);_0x2683ee[_0x5cf9('0x39')]=_['intersection'](_0x2683ee[_0x5cf9('0x2d')],_0x2683ee[_0x5cf9('0x2e')]);_0x20f6af['attributes']=_[_0x5cf9('0x30')](_0x2683ee[_0x5cf9('0x2d')],qs['fields'](_0x20390a[_0x5cf9('0x2e')][_0x5cf9('0x32')]));_0x20f6af[_0x5cf9('0x31')]=_0x20f6af[_0x5cf9('0x31')][_0x5cf9('0x33')]?_0x20f6af[_0x5cf9('0x31')]:_0x2683ee[_0x5cf9('0x2d')];_0x20f6af[_0x5cf9('0x48')]=qs['sort'](_0x20390a['query'][_0x5cf9('0x36')]);_0x20f6af[_0x5cf9('0x37')]=qs['filters'](_[_0x5cf9('0x38')](_0x20390a[_0x5cf9('0x2e')],_0x2683ee[_0x5cf9('0x39')]));if(_0x20390a[_0x5cf9('0x2e')][_0x5cf9('0x3a')]){_0x20f6af[_0x5cf9('0x37')]=_['merge'](_0x20f6af[_0x5cf9('0x37')],{'$or':_[_0x5cf9('0x29')](_0x20f6af[_0x5cf9('0x31')],function(_0x13faa7){var _0x1d492b={};_0x1d492b[_0x13faa7]={'$like':'%'+_0x20390a[_0x5cf9('0x2e')][_0x5cf9('0x3a')]+'%'};return _0x1d492b;})});}_0x20f6af=_['merge']({},_0x20f6af,_0x20390a['options']);return _0x243bf9[_0x5cf9('0x49')](_0x20f6af);}})['then'](function(_0xd8d8ac){if(_0xd8d8ac){_0x1b7cf9=_0xd8d8ac[_0x5cf9('0x33')];if(!_0x20390a['query'][_0x5cf9('0x34')](_0x5cf9('0x35'))){_0x20f6af[_0x5cf9('0x1c')]=qs[_0x5cf9('0x1c')](_0x20390a['query'][_0x5cf9('0x1c')]);_0x20f6af[_0x5cf9('0x1a')]=qs[_0x5cf9('0x1a')](_0x20390a[_0x5cf9('0x2e')]['offset']);}return _0x243bf9['getSubjects'](_0x20f6af);}})['then'](function(_0x516b14){if(_0x516b14){return _0x516b14?{'count':_0x1b7cf9,'rows':_0x516b14}:null;}})[_0x5cf9('0x24')](respondWithResult(_0xbee90f,null))[_0x5cf9('0x40')](handleError(_0xbee90f,null));};exports[_0x5cf9('0x4a')]=function(_0x4648ff,_0xf44125,_0x22eced){var _0x405d4b={};var _0x4be77c={};var _0xccea5a;var _0xb979d4;return db[_0x5cf9('0x2a')][_0x5cf9('0x4b')]({'where':{'id':_0x4648ff[_0x5cf9('0x41')]['id']}})[_0x5cf9('0x24')](handleEntityNotFound(_0xf44125,null))['then'](function(_0x1b780e){if(_0x1b780e){_0xccea5a=_0x1b780e;_0x4be77c[_0x5cf9('0x2d')]=_[_0x5cf9('0x2f')](db[_0x5cf9('0x47')][_0x5cf9('0x42')]);_0x4be77c[_0x5cf9('0x2e')]=_[_0x5cf9('0x2f')](_0x4648ff['query']);_0x4be77c[_0x5cf9('0x39')]=_['intersection'](_0x4be77c[_0x5cf9('0x2d')],_0x4be77c[_0x5cf9('0x2e')]);_0x405d4b[_0x5cf9('0x31')]=_[_0x5cf9('0x30')](_0x4be77c['model'],qs[_0x5cf9('0x32')](_0x4648ff['query']['fields']));_0x405d4b[_0x5cf9('0x31')]=_0x405d4b[_0x5cf9('0x31')][_0x5cf9('0x33')]?_0x405d4b[_0x5cf9('0x31')]:_0x4be77c[_0x5cf9('0x2d')];_0x405d4b['order']=qs['sort'](_0x4648ff[_0x5cf9('0x2e')][_0x5cf9('0x36')]);_0x405d4b[_0x5cf9('0x37')]=qs['filters'](_['pick'](_0x4648ff[_0x5cf9('0x2e')],_0x4be77c[_0x5cf9('0x39')]));if(_0x4648ff[_0x5cf9('0x2e')][_0x5cf9('0x3a')]){_0x405d4b[_0x5cf9('0x37')]=_['merge'](_0x405d4b['where'],{'$or':_[_0x5cf9('0x29')](_0x405d4b[_0x5cf9('0x31')],function(_0x297b0f){var _0x52f329={};_0x52f329[_0x297b0f]={'$like':'%'+_0x4648ff[_0x5cf9('0x2e')]['filter']+'%'};return _0x52f329;})});}_0x405d4b=_[_0x5cf9('0x3b')]({},_0x405d4b,_0x4648ff[_0x5cf9('0x3c')]);return _0xccea5a[_0x5cf9('0x4a')](_0x405d4b);}})[_0x5cf9('0x24')](function(_0x59e599){if(_0x59e599){_0xb979d4=_0x59e599['length'];if(!_0x4648ff[_0x5cf9('0x2e')][_0x5cf9('0x34')](_0x5cf9('0x35'))){_0x405d4b[_0x5cf9('0x1c')]=qs['limit'](_0x4648ff[_0x5cf9('0x2e')][_0x5cf9('0x1c')]);_0x405d4b['offset']=qs[_0x5cf9('0x1a')](_0x4648ff[_0x5cf9('0x2e')][_0x5cf9('0x1a')]);}return _0xccea5a['getDescriptions'](_0x405d4b);}})[_0x5cf9('0x24')](function(_0x2a0144){if(_0x2a0144){return _0x2a0144?{'count':_0xb979d4,'rows':_0x2a0144}:null;}})['then'](respondWithResult(_0xf44125,null))[_0x5cf9('0x40')](handleError(_0xf44125,null));};
\ No newline at end of file
index f3de83f..6707e2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffea=['./intSalesforceConfiguration.attributes','exports','define','SalesforceConfiguration','int_salesforce_configurations','lodash','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment'];(function(_0x1d80be,_0x3a60ff){var _0xf9a4f3=function(_0x5b8a08){while(--_0x5b8a08){_0x1d80be['push'](_0x1d80be['shift']());}};_0xf9a4f3(++_0x3a60ff);}(_0xffea,0x1e6));var _0xaffe=function(_0x7a2621,_0x23ae6b){_0x7a2621=_0x7a2621-0x0;var _0xdaced1=_0xffea[_0x7a2621];return _0xdaced1;};'use strict';var _=require(_0xaffe('0x0'));var util=require(_0xaffe('0x1'));var logger=require(_0xaffe('0x2'))(_0xaffe('0x3'));var moment=require('moment');var BPromise=require(_0xaffe('0x4'));var rp=require(_0xaffe('0x5'));var fs=require('fs');var path=require(_0xaffe('0x6'));var rimraf=require('rimraf');var config=require(_0xaffe('0x7'));var attributes=require(_0xaffe('0x8'));module[_0xaffe('0x9')]=function(_0x3c3ebe,_0x325881){return _0x3c3ebe[_0xaffe('0xa')](_0xaffe('0xb'),attributes,{'tableName':_0xaffe('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9b90=['exports','define','SalesforceConfiguration','int_salesforce_configurations','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x5c72f4,_0x4ae090){var _0x494dd3=function(_0x25bf05){while(--_0x25bf05){_0x5c72f4['push'](_0x5c72f4['shift']());}};_0x494dd3(++_0x4ae090);}(_0x9b90,0x19b));var _0x09b9=function(_0x5ab1f9,_0x3f1ffe){_0x5ab1f9=_0x5ab1f9-0x0;var _0x506fcb=_0x9b90[_0x5ab1f9];return _0x506fcb;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x09b9('0x0'))('api');var moment=require(_0x09b9('0x1'));var BPromise=require(_0x09b9('0x2'));var rp=require(_0x09b9('0x3'));var fs=require('fs');var path=require(_0x09b9('0x4'));var rimraf=require(_0x09b9('0x5'));var config=require(_0x09b9('0x6'));var attributes=require('./intSalesforceConfiguration.attributes');module[_0x09b9('0x7')]=function(_0x4a13c2,_0x43ea90){return _0x4a13c2[_0x09b9('0x8')](_0x09b9('0x9'),attributes,{'tableName':_0x09b9('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f73b9e3..aac16a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0381=['SalesforceConfiguration,\x20%s,\x20%s','message','info','catch','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','request\x20sent','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x0381,0x100));var _0x1038=function(_0x246e23,_0x866eb4){_0x246e23=_0x246e23-0x0;var _0xf062b4=_0x0381[_0x246e23];return _0xf062b4;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1038('0x0'));var BPromise=require(_0x1038('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1038('0x2'));var db=require(_0x1038('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x1038('0x4'))(_0x1038('0x5'));var config=require(_0x1038('0x6'));var jayson=require(_0x1038('0x7'));var client=jayson[_0x1038('0x8')][_0x1038('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xd732ea,_0x54bc72,_0x98b0fc){return new BPromise(function(_0x3283d0,_0x597a76){return client['request'](_0xd732ea,_0x98b0fc)[_0x1038('0xa')](function(_0x43b9e8){logger['info']('SalesforceConfiguration,\x20%s,\x20%s',_0x54bc72,_0x1038('0xb'));logger[_0x1038('0xc')](_0x1038('0xd'),_0x54bc72,_0x1038('0xb'),JSON[_0x1038('0xe')](_0x43b9e8));if(_0x43b9e8[_0x1038('0xf')]){if(_0x43b9e8[_0x1038('0xf')][_0x1038('0x10')]===0x1f4){logger['error'](_0x1038('0x11'),_0x54bc72,_0x43b9e8['error'][_0x1038('0x12')]);return _0x597a76(_0x43b9e8[_0x1038('0xf')]['message']);}logger[_0x1038('0xf')](_0x1038('0x11'),_0x54bc72,_0x43b9e8[_0x1038('0xf')][_0x1038('0x12')]);return _0x3283d0(_0x43b9e8['error'][_0x1038('0x12')]);}else{logger[_0x1038('0x13')]('SalesforceConfiguration,\x20%s,\x20%s',_0x54bc72,_0x1038('0xb'));_0x3283d0(_0x43b9e8['result'][_0x1038('0x12')]);}})[_0x1038('0x14')](function(_0xd841b9){logger['error'](_0x1038('0x11'),_0x54bc72,_0xd841b9);_0x597a76(_0xd841b9);});});}
\ No newline at end of file
+var _0x8036=['http','info','request\x20sent','debug','error','code','SalesforceConfiguration,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client'];(function(_0xed8e74,_0x3bb4c3){var _0x335632=function(_0x44fa07){while(--_0x44fa07){_0xed8e74['push'](_0xed8e74['shift']());}};_0x335632(++_0x3bb4c3);}(_0x8036,0x105));var _0x6803=function(_0x18490c,_0x4213a9){_0x18490c=_0x18490c-0x0;var _0x229226=_0x8036[_0x18490c];return _0x229226;};'use strict';var _=require(_0x6803('0x0'));var util=require(_0x6803('0x1'));var moment=require(_0x6803('0x2'));var BPromise=require(_0x6803('0x3'));var rs=require(_0x6803('0x4'));var fs=require('fs');var Redis=require(_0x6803('0x5'));var db=require(_0x6803('0x6'))['db'];var utils=require(_0x6803('0x7'));var logger=require(_0x6803('0x8'))(_0x6803('0x9'));var config=require(_0x6803('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x6803('0xb')][_0x6803('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x546a2f,_0x31361b,_0x1a50fa){return new BPromise(function(_0x424fe3,_0x338c16){return client['request'](_0x546a2f,_0x1a50fa)['then'](function(_0x1cf8b7){logger[_0x6803('0xd')]('SalesforceConfiguration,\x20%s,\x20%s',_0x31361b,_0x6803('0xe'));logger[_0x6803('0xf')]('SalesforceConfiguration,\x20%s,\x20%s,\x20%s',_0x31361b,_0x6803('0xe'),JSON['stringify'](_0x1cf8b7));if(_0x1cf8b7['error']){if(_0x1cf8b7[_0x6803('0x10')][_0x6803('0x11')]===0x1f4){logger['error'](_0x6803('0x12'),_0x31361b,_0x1cf8b7['error'][_0x6803('0x13')]);return _0x338c16(_0x1cf8b7[_0x6803('0x10')]['message']);}logger[_0x6803('0x10')](_0x6803('0x12'),_0x31361b,_0x1cf8b7[_0x6803('0x10')][_0x6803('0x13')]);return _0x424fe3(_0x1cf8b7[_0x6803('0x10')][_0x6803('0x13')]);}else{logger[_0x6803('0xd')](_0x6803('0x12'),_0x31361b,_0x6803('0xe'));_0x424fe3(_0x1cf8b7['result'][_0x6803('0x13')]);}})[_0x6803('0x14')](function(_0x3f0ff7){logger[_0x6803('0x10')](_0x6803('0x12'),_0x31361b,_0x3f0ff7);_0x338c16(_0x3f0ff7);});});}
\ No newline at end of file
index 34832c2..e4bf6cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa740=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intSalesforceField.controller','get','/:id','isAuthenticated','post','create','delete','destroy','exports','multer'];(function(_0x158a2a,_0x5e9252){var _0x57b463=function(_0x1f5ea6){while(--_0x1f5ea6){_0x158a2a['push'](_0x158a2a['shift']());}};_0x57b463(++_0x5e9252);}(_0xa740,0x167));var _0x0a74=function(_0x19fff4,_0x5bbd5a){_0x19fff4=_0x19fff4-0x0;var _0x5c83d3=_0xa740[_0x19fff4];return _0x5c83d3;};'use strict';var multer=require(_0x0a74('0x0'));var util=require(_0x0a74('0x1'));var path=require(_0x0a74('0x2'));var timeout=require(_0x0a74('0x3'));var express=require(_0x0a74('0x4'));var router=express[_0x0a74('0x5')]();var fs_extra=require(_0x0a74('0x6'));var auth=require(_0x0a74('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x0a74('0x8'));var controller=require(_0x0a74('0x9'));router[_0x0a74('0xa')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x0a74('0xb'),auth[_0x0a74('0xc')](),controller['show']);router[_0x0a74('0xd')]('/',auth[_0x0a74('0xc')](),controller[_0x0a74('0xe')]);router['put'](_0x0a74('0xb'),auth[_0x0a74('0xc')](),controller['update']);router[_0x0a74('0xf')](_0x0a74('0xb'),auth[_0x0a74('0xc')](),controller[_0x0a74('0x10')]);module[_0x0a74('0x11')]=router;
\ No newline at end of file
+var _0xa6df=['delete','destroy','exports','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceField.controller','get','isAuthenticated','/:id','show','post','create','put','update'];(function(_0x2eb4d8,_0xd98b65){var _0x4dcb57=function(_0x316a04){while(--_0x316a04){_0x2eb4d8['push'](_0x2eb4d8['shift']());}};_0x4dcb57(++_0xd98b65);}(_0xa6df,0x1e9));var _0xfa6d=function(_0x5da805,_0x5320d5){_0x5da805=_0x5da805-0x0;var _0x11ffb1=_0xa6df[_0x5da805];return _0x11ffb1;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xfa6d('0x0'));var express=require(_0xfa6d('0x1'));var router=express[_0xfa6d('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xfa6d('0x3'));var interaction=require(_0xfa6d('0x4'));var config=require(_0xfa6d('0x5'));var controller=require(_0xfa6d('0x6'));router[_0xfa6d('0x7')]('/',auth[_0xfa6d('0x8')](),controller['index']);router[_0xfa6d('0x7')](_0xfa6d('0x9'),auth[_0xfa6d('0x8')](),controller[_0xfa6d('0xa')]);router[_0xfa6d('0xb')]('/',auth[_0xfa6d('0x8')](),controller[_0xfa6d('0xc')]);router[_0xfa6d('0xd')](_0xfa6d('0x9'),auth[_0xfa6d('0x8')](),controller[_0xfa6d('0xe')]);router[_0xfa6d('0xf')](_0xfa6d('0x9'),auth[_0xfa6d('0x8')](),controller[_0xfa6d('0x10')]);module[_0xfa6d('0x11')]=router;
\ No newline at end of file
index cec1472..750135d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd607=['exports','ENUM','string','variable','customVariable','picklist','STRING','sequelize'];(function(_0x18067c,_0x597b1c){var _0x10d78e=function(_0x29acf9){while(--_0x29acf9){_0x18067c['push'](_0x18067c['shift']());}};_0x10d78e(++_0x597b1c);}(_0xd607,0x1e7));var _0x7d60=function(_0x39e375,_0x49649f){_0x39e375=_0x39e375-0x0;var _0x304c28=_0xd607[_0x39e375];return _0x304c28;};'use strict';var Sequelize=require(_0x7d60('0x0'));module[_0x7d60('0x1')]={'type':{'type':Sequelize[_0x7d60('0x2')](_0x7d60('0x3'),_0x7d60('0x4'),_0x7d60('0x5'),'keyValue',_0x7d60('0x6')),'defaultValue':_0x7d60('0x3')},'content':{'type':Sequelize[_0x7d60('0x7')]},'key':{'type':Sequelize[_0x7d60('0x7')]},'keyType':{'type':Sequelize[_0x7d60('0x2')](_0x7d60('0x3'),_0x7d60('0x4'),_0x7d60('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x7d60('0x7')]},'variableName':{'type':Sequelize[_0x7d60('0x7')]}};
\ No newline at end of file
+var _0x39bd=['picklist','STRING','exports','ENUM','string','variable','customVariable','keyValue'];(function(_0x5cde56,_0x2b507f){var _0x184d13=function(_0x5d8549){while(--_0x5d8549){_0x5cde56['push'](_0x5cde56['shift']());}};_0x184d13(++_0x2b507f);}(_0x39bd,0x12a));var _0xd39b=function(_0x59188a,_0x1a196e){_0x59188a=_0x59188a-0x0;var _0x39ebd3=_0x39bd[_0x59188a];return _0x39ebd3;};'use strict';var Sequelize=require('sequelize');module[_0xd39b('0x0')]={'type':{'type':Sequelize[_0xd39b('0x1')](_0xd39b('0x2'),_0xd39b('0x3'),_0xd39b('0x4'),_0xd39b('0x5'),_0xd39b('0x6')),'defaultValue':_0xd39b('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xd39b('0x7')]},'keyType':{'type':Sequelize[_0xd39b('0x1')]('string',_0xd39b('0x3'),_0xd39b('0x4'))},'keyContent':{'type':Sequelize[_0xd39b('0x7')]},'idField':{'type':Sequelize[_0xd39b('0x7')]},'variableName':{'type':Sequelize[_0xd39b('0x7')]}};
\ No newline at end of file
index 825b7a9..7c7db78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71ff=['../../mysqldb','sendStatus','status','json','offset','undefined','count','set','apply','reject','then','destroy','end','error','stack','name','send','index','map','fieldName','type','key','query','keys','filters','model','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','order','where','pick','filter','merge','VIRTUAL','options','SalesforceField','includeAll','include','rows','show','params','rawAttributes','find','catch','create','body','update','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/utils'];(function(_0x336082,_0x5c364b){var _0x2ea2eb=function(_0x4c6c53){while(--_0x4c6c53){_0x336082['push'](_0x336082['shift']());}};_0x2ea2eb(++_0x5c364b);}(_0x71ff,0x19c));var _0xf71f=function(_0x25ab75,_0x32b0f6){_0x25ab75=_0x25ab75-0x0;var _0x42873f=_0x71ff[_0x25ab75];return _0x42873f;};'use strict';var emlformat=require(_0xf71f('0x0'));var rimraf=require(_0xf71f('0x1'));var zipdir=require(_0xf71f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf71f('0x3'));var moment=require(_0xf71f('0x4'));var BPromise=require(_0xf71f('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xf71f('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xf71f('0x7'));var fs=require('fs');var fs_extra=require(_0xf71f('0x8'));var _=require(_0xf71f('0x9'));var squel=require(_0xf71f('0xa'));var crypto=require(_0xf71f('0xb'));var jsforce=require(_0xf71f('0xc'));var deskjs=require(_0xf71f('0xd'));var toCsv=require(_0xf71f('0xe'));var querystring=require('querystring');var Papa=require(_0xf71f('0xf'));var Redis=require(_0xf71f('0x10'));var authService=require(_0xf71f('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf71f('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0xf71f('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xf71f('0x14'))['db'];function respondWithStatusCode(_0x30ae0c,_0x5bbb45){_0x5bbb45=_0x5bbb45||0xcc;return function(_0x12faa9){if(_0x12faa9){return _0x30ae0c[_0xf71f('0x15')](_0x5bbb45);}return _0x30ae0c[_0xf71f('0x16')](_0x5bbb45)['end']();};}function respondWithResult(_0x2d88e9,_0x293be4){_0x293be4=_0x293be4||0xc8;return function(_0x255435){if(_0x255435){return _0x2d88e9['status'](_0x293be4)[_0xf71f('0x17')](_0x255435);}};}function respondWithFilteredResult(_0x1d40ad,_0x5a08c3){return function(_0x2ca58e){if(_0x2ca58e){var _0x502ee3=typeof _0x5a08c3[_0xf71f('0x18')]===_0xf71f('0x19')&&typeof _0x5a08c3['limit']===_0xf71f('0x19');var _0x1849b9=_0x2ca58e[_0xf71f('0x1a')];var _0x25acb5=_0x502ee3?0x0:_0x5a08c3[_0xf71f('0x18')];var _0x20ebab=_0x502ee3?_0x2ca58e[_0xf71f('0x1a')]:_0x5a08c3[_0xf71f('0x18')]+_0x5a08c3['limit'];var _0x5ce4aa;if(_0x20ebab>=_0x1849b9){_0x20ebab=_0x1849b9;_0x5ce4aa=0xc8;}else{_0x5ce4aa=0xce;}_0x1d40ad[_0xf71f('0x16')](_0x5ce4aa);return _0x1d40ad[_0xf71f('0x1b')]('Content-Range',_0x25acb5+'-'+_0x20ebab+'/'+_0x1849b9)[_0xf71f('0x17')](_0x2ca58e);}return null;};}function patchUpdates(_0x1cf57f){return function(_0x1fe46a){try{jsonpatch[_0xf71f('0x1c')](_0x1fe46a,_0x1cf57f,!![]);}catch(_0xd1aac){return BPromise[_0xf71f('0x1d')](_0xd1aac);}return _0x1fe46a['save']();};}function saveUpdates(_0x45d1c8,_0x12bb23){return function(_0x255377){if(_0x255377){return _0x255377['update'](_0x45d1c8)[_0xf71f('0x1e')](function(_0x21c9ed){return _0x21c9ed;});}return null;};}function removeEntity(_0x29de56,_0x41016f){return function(_0x390832){if(_0x390832){return _0x390832[_0xf71f('0x1f')]()[_0xf71f('0x1e')](function(){_0x29de56[_0xf71f('0x16')](0xcc)[_0xf71f('0x20')]();});}};}function handleEntityNotFound(_0xe54de4,_0x2a856c){return function(_0xada079){if(!_0xada079){_0xe54de4[_0xf71f('0x15')](0x194);}return _0xada079;};}function handleError(_0x43c6e3,_0x4ee270){_0x4ee270=_0x4ee270||0x1f4;return function(_0x2c51e6){logger[_0xf71f('0x21')](_0x2c51e6[_0xf71f('0x22')]);if(_0x2c51e6[_0xf71f('0x23')]){delete _0x2c51e6[_0xf71f('0x23')];}_0x43c6e3[_0xf71f('0x16')](_0x4ee270)[_0xf71f('0x24')](_0x2c51e6);};}exports[_0xf71f('0x25')]=function(_0x47b32,_0x2f65e0){var _0x45888c={},_0x336ce1={},_0x5b52ce={'count':0x0,'rows':[]};var _0x14a597=_[_0xf71f('0x26')](db['SalesforceField']['rawAttributes'],function(_0x368c8f){return{'name':_0x368c8f[_0xf71f('0x27')],'type':_0x368c8f[_0xf71f('0x28')][_0xf71f('0x29')]};});_0x336ce1['model']=_[_0xf71f('0x26')](_0x14a597,'name');_0x336ce1[_0xf71f('0x2a')]=_[_0xf71f('0x2b')](_0x47b32[_0xf71f('0x2a')]);_0x336ce1[_0xf71f('0x2c')]=_['intersection'](_0x336ce1[_0xf71f('0x2d')],_0x336ce1[_0xf71f('0x2a')]);_0x45888c['attributes']=_[_0xf71f('0x2e')](_0x336ce1[_0xf71f('0x2d')],qs[_0xf71f('0x2f')](_0x47b32[_0xf71f('0x2a')][_0xf71f('0x2f')]));_0x45888c[_0xf71f('0x30')]=_0x45888c[_0xf71f('0x30')][_0xf71f('0x31')]?_0x45888c['attributes']:_0x336ce1['model'];if(!_0x47b32[_0xf71f('0x2a')][_0xf71f('0x32')](_0xf71f('0x33'))){_0x45888c[_0xf71f('0x34')]=qs[_0xf71f('0x34')](_0x47b32[_0xf71f('0x2a')][_0xf71f('0x34')]);_0x45888c['offset']=qs[_0xf71f('0x18')](_0x47b32[_0xf71f('0x2a')]['offset']);}_0x45888c[_0xf71f('0x35')]=qs['sort'](_0x47b32[_0xf71f('0x2a')]['sort']);_0x45888c[_0xf71f('0x36')]=qs[_0xf71f('0x2c')](_[_0xf71f('0x37')](_0x47b32[_0xf71f('0x2a')],_0x336ce1[_0xf71f('0x2c')]),_0x14a597);if(_0x47b32[_0xf71f('0x2a')][_0xf71f('0x38')]){_0x45888c[_0xf71f('0x36')]=_[_0xf71f('0x39')](_0x45888c[_0xf71f('0x36')],{'$or':_[_0xf71f('0x26')](_0x14a597,function(_0x11b977){if(_0x11b977[_0xf71f('0x28')]!==_0xf71f('0x3a')){var _0x483319={};_0x483319[_0x11b977['name']]={'$like':'%'+_0x47b32[_0xf71f('0x2a')][_0xf71f('0x38')]+'%'};return _0x483319;}})});}_0x45888c=_[_0xf71f('0x39')]({},_0x45888c,_0x47b32[_0xf71f('0x3b')]);var _0x470154={'where':_0x45888c[_0xf71f('0x36')]};return db[_0xf71f('0x3c')][_0xf71f('0x1a')](_0x470154)[_0xf71f('0x1e')](function(_0x468f5f){_0x5b52ce[_0xf71f('0x1a')]=_0x468f5f;if(_0x47b32[_0xf71f('0x2a')][_0xf71f('0x3d')]){_0x45888c[_0xf71f('0x3e')]=[{'all':!![]}];}return db[_0xf71f('0x3c')]['findAll'](_0x45888c);})[_0xf71f('0x1e')](function(_0x12ca9b){_0x5b52ce[_0xf71f('0x3f')]=_0x12ca9b;return _0x5b52ce;})['then'](respondWithFilteredResult(_0x2f65e0,_0x45888c))['catch'](handleError(_0x2f65e0,null));};exports[_0xf71f('0x40')]=function(_0x2c9657,_0x214aed){var _0x343ec0={'raw':!![],'where':{'id':_0x2c9657[_0xf71f('0x41')]['id']}},_0x46b6cf={};_0x46b6cf[_0xf71f('0x2d')]=_['keys'](db['SalesforceField'][_0xf71f('0x42')]);_0x46b6cf[_0xf71f('0x2a')]=_['keys'](_0x2c9657['query']);_0x46b6cf[_0xf71f('0x2c')]=_[_0xf71f('0x2e')](_0x46b6cf[_0xf71f('0x2d')],_0x46b6cf[_0xf71f('0x2a')]);_0x343ec0[_0xf71f('0x30')]=_['intersection'](_0x46b6cf[_0xf71f('0x2d')],qs[_0xf71f('0x2f')](_0x2c9657[_0xf71f('0x2a')][_0xf71f('0x2f')]));_0x343ec0[_0xf71f('0x30')]=_0x343ec0['attributes'][_0xf71f('0x31')]?_0x343ec0[_0xf71f('0x30')]:_0x46b6cf['model'];if(_0x2c9657[_0xf71f('0x2a')][_0xf71f('0x3d')]){_0x343ec0[_0xf71f('0x3e')]=[{'all':!![]}];}_0x343ec0=_['merge']({},_0x343ec0,_0x2c9657[_0xf71f('0x3b')]);return db[_0xf71f('0x3c')][_0xf71f('0x43')](_0x343ec0)[_0xf71f('0x1e')](handleEntityNotFound(_0x214aed,null))['then'](respondWithResult(_0x214aed,null))[_0xf71f('0x44')](handleError(_0x214aed,null));};exports['create']=function(_0x343dc0,_0x3d59f5){return db['SalesforceField'][_0xf71f('0x45')](_0x343dc0[_0xf71f('0x46')],{})[_0xf71f('0x1e')](respondWithResult(_0x3d59f5,0xc9))[_0xf71f('0x44')](handleError(_0x3d59f5,null));};exports[_0xf71f('0x47')]=function(_0x597cc4,_0x442696){if(_0x597cc4[_0xf71f('0x46')]['id']){delete _0x597cc4[_0xf71f('0x46')]['id'];}return db[_0xf71f('0x3c')][_0xf71f('0x43')]({'where':{'id':_0x597cc4['params']['id']}})['then'](handleEntityNotFound(_0x442696,null))[_0xf71f('0x1e')](saveUpdates(_0x597cc4[_0xf71f('0x46')],null))[_0xf71f('0x1e')](respondWithResult(_0x442696,null))[_0xf71f('0x44')](handleError(_0x442696,null));};exports[_0xf71f('0x1f')]=function(_0x44782d,_0xd8d77c){return db[_0xf71f('0x3c')][_0xf71f('0x43')]({'where':{'id':_0x44782d['params']['id']}})[_0xf71f('0x1e')](handleEntityNotFound(_0xd8d77c,null))[_0xf71f('0x1e')](removeEntity(_0xd8d77c,null))[_0xf71f('0x44')](handleError(_0xd8d77c,null));};
\ No newline at end of file
+var _0xd603=['to-csv','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','../../mysqldb','sendStatus','status','end','json','undefined','offset','limit','set','apply','update','then','destroy','name','send','index','map','SalesforceField','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','nolimit','sort','where','VIRTUAL','merge','options','count','includeAll','findAll','rows','catch','show','include','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox'];(function(_0x58d902,_0x47d2c4){var _0x23f064=function(_0x16a025){while(--_0x16a025){_0x58d902['push'](_0x58d902['shift']());}};_0x23f064(++_0x47d2c4);}(_0xd603,0x1e7));var _0x3d60=function(_0x309d93,_0x157662){_0x309d93=_0x309d93-0x0;var _0x2dd61d=_0xd603[_0x309d93];return _0x2dd61d;};'use strict';var emlformat=require(_0x3d60('0x0'));var rimraf=require(_0x3d60('0x1'));var zipdir=require(_0x3d60('0x2'));var jsonpatch=require(_0x3d60('0x3'));var rp=require('request-promise');var moment=require(_0x3d60('0x4'));var BPromise=require(_0x3d60('0x5'));var Mustache=require(_0x3d60('0x6'));var util=require(_0x3d60('0x7'));var path=require(_0x3d60('0x8'));var sox=require(_0x3d60('0x9'));var csv=require(_0x3d60('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3d60('0xb'));var _=require(_0x3d60('0xc'));var squel=require(_0x3d60('0xd'));var crypto=require(_0x3d60('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x3d60('0xf'));var toCsv=require(_0x3d60('0xa'));var querystring=require(_0x3d60('0x10'));var Papa=require(_0x3d60('0x11'));var Redis=require(_0x3d60('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x3d60('0x13'));var as=require(_0x3d60('0x14'));var hardwareService=require(_0x3d60('0x15'));var logger=require(_0x3d60('0x16'))('api');var utils=require(_0x3d60('0x17'));var config=require(_0x3d60('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x3d60('0x19'))['db'];function respondWithStatusCode(_0x507ba2,_0xcb2321){_0xcb2321=_0xcb2321||0xcc;return function(_0x1baec1){if(_0x1baec1){return _0x507ba2[_0x3d60('0x1a')](_0xcb2321);}return _0x507ba2[_0x3d60('0x1b')](_0xcb2321)[_0x3d60('0x1c')]();};}function respondWithResult(_0x5a92d8,_0x13eed6){_0x13eed6=_0x13eed6||0xc8;return function(_0x3a755a){if(_0x3a755a){return _0x5a92d8['status'](_0x13eed6)[_0x3d60('0x1d')](_0x3a755a);}};}function respondWithFilteredResult(_0xe5e9a7,_0x1af567){return function(_0x49341e){if(_0x49341e){var _0x4c639e=typeof _0x1af567['offset']===_0x3d60('0x1e')&&typeof _0x1af567['limit']===_0x3d60('0x1e');var _0x5b1e94=_0x49341e['count'];var _0x296a45=_0x4c639e?0x0:_0x1af567['offset'];var _0x5160f7=_0x4c639e?_0x49341e['count']:_0x1af567[_0x3d60('0x1f')]+_0x1af567[_0x3d60('0x20')];var _0x36b9a7;if(_0x5160f7>=_0x5b1e94){_0x5160f7=_0x5b1e94;_0x36b9a7=0xc8;}else{_0x36b9a7=0xce;}_0xe5e9a7['status'](_0x36b9a7);return _0xe5e9a7[_0x3d60('0x21')]('Content-Range',_0x296a45+'-'+_0x5160f7+'/'+_0x5b1e94)[_0x3d60('0x1d')](_0x49341e);}return null;};}function patchUpdates(_0x1f4358){return function(_0x4a9e9c){try{jsonpatch[_0x3d60('0x22')](_0x4a9e9c,_0x1f4358,!![]);}catch(_0x2d1e40){return BPromise['reject'](_0x2d1e40);}return _0x4a9e9c['save']();};}function saveUpdates(_0x34ecd8,_0x262198){return function(_0x186f3f){if(_0x186f3f){return _0x186f3f[_0x3d60('0x23')](_0x34ecd8)[_0x3d60('0x24')](function(_0x44f270){return _0x44f270;});}return null;};}function removeEntity(_0x577cf5,_0xa4e2c3){return function(_0x795440){if(_0x795440){return _0x795440[_0x3d60('0x25')]()[_0x3d60('0x24')](function(){_0x577cf5['status'](0xcc)[_0x3d60('0x1c')]();});}};}function handleEntityNotFound(_0x110327,_0x122c5e){return function(_0x220873){if(!_0x220873){_0x110327['sendStatus'](0x194);}return _0x220873;};}function handleError(_0x2b46d6,_0xc80ddb){_0xc80ddb=_0xc80ddb||0x1f4;return function(_0x387623){logger['error'](_0x387623['stack']);if(_0x387623[_0x3d60('0x26')]){delete _0x387623[_0x3d60('0x26')];}_0x2b46d6[_0x3d60('0x1b')](_0xc80ddb)[_0x3d60('0x27')](_0x387623);};}exports[_0x3d60('0x28')]=function(_0x40b4ac,_0xe1dd15){var _0x5d22f8={},_0x43b1cc={},_0x316494={'count':0x0,'rows':[]};var _0x23efd3=_[_0x3d60('0x29')](db[_0x3d60('0x2a')][_0x3d60('0x2b')],function(_0x265683){return{'name':_0x265683[_0x3d60('0x2c')],'type':_0x265683[_0x3d60('0x2d')][_0x3d60('0x2e')]};});_0x43b1cc[_0x3d60('0x2f')]=_[_0x3d60('0x29')](_0x23efd3,'name');_0x43b1cc[_0x3d60('0x30')]=_[_0x3d60('0x31')](_0x40b4ac['query']);_0x43b1cc[_0x3d60('0x32')]=_['intersection'](_0x43b1cc[_0x3d60('0x2f')],_0x43b1cc['query']);_0x5d22f8[_0x3d60('0x33')]=_[_0x3d60('0x34')](_0x43b1cc[_0x3d60('0x2f')],qs[_0x3d60('0x35')](_0x40b4ac[_0x3d60('0x30')][_0x3d60('0x35')]));_0x5d22f8['attributes']=_0x5d22f8[_0x3d60('0x33')][_0x3d60('0x36')]?_0x5d22f8[_0x3d60('0x33')]:_0x43b1cc['model'];if(!_0x40b4ac[_0x3d60('0x30')]['hasOwnProperty'](_0x3d60('0x37'))){_0x5d22f8['limit']=qs['limit'](_0x40b4ac[_0x3d60('0x30')][_0x3d60('0x20')]);_0x5d22f8[_0x3d60('0x1f')]=qs[_0x3d60('0x1f')](_0x40b4ac['query'][_0x3d60('0x1f')]);}_0x5d22f8['order']=qs[_0x3d60('0x38')](_0x40b4ac[_0x3d60('0x30')][_0x3d60('0x38')]);_0x5d22f8[_0x3d60('0x39')]=qs[_0x3d60('0x32')](_['pick'](_0x40b4ac['query'],_0x43b1cc[_0x3d60('0x32')]),_0x23efd3);if(_0x40b4ac['query']['filter']){_0x5d22f8[_0x3d60('0x39')]=_['merge'](_0x5d22f8['where'],{'$or':_[_0x3d60('0x29')](_0x23efd3,function(_0x1ec028){if(_0x1ec028[_0x3d60('0x2d')]!==_0x3d60('0x3a')){var _0x46d35f={};_0x46d35f[_0x1ec028[_0x3d60('0x26')]]={'$like':'%'+_0x40b4ac[_0x3d60('0x30')]['filter']+'%'};return _0x46d35f;}})});}_0x5d22f8=_[_0x3d60('0x3b')]({},_0x5d22f8,_0x40b4ac[_0x3d60('0x3c')]);var _0x1161e6={'where':_0x5d22f8[_0x3d60('0x39')]};return db[_0x3d60('0x2a')]['count'](_0x1161e6)[_0x3d60('0x24')](function(_0x53a227){_0x316494[_0x3d60('0x3d')]=_0x53a227;if(_0x40b4ac[_0x3d60('0x30')][_0x3d60('0x3e')]){_0x5d22f8['include']=[{'all':!![]}];}return db['SalesforceField'][_0x3d60('0x3f')](_0x5d22f8);})[_0x3d60('0x24')](function(_0x38e583){_0x316494[_0x3d60('0x40')]=_0x38e583;return _0x316494;})[_0x3d60('0x24')](respondWithFilteredResult(_0xe1dd15,_0x5d22f8))[_0x3d60('0x41')](handleError(_0xe1dd15,null));};exports[_0x3d60('0x42')]=function(_0x173fc7,_0x34694e){var _0x463b37={'raw':!![],'where':{'id':_0x173fc7['params']['id']}},_0x27404a={};_0x27404a['model']=_[_0x3d60('0x31')](db[_0x3d60('0x2a')][_0x3d60('0x2b')]);_0x27404a[_0x3d60('0x30')]=_['keys'](_0x173fc7['query']);_0x27404a[_0x3d60('0x32')]=_[_0x3d60('0x34')](_0x27404a[_0x3d60('0x2f')],_0x27404a[_0x3d60('0x30')]);_0x463b37[_0x3d60('0x33')]=_[_0x3d60('0x34')](_0x27404a[_0x3d60('0x2f')],qs[_0x3d60('0x35')](_0x173fc7[_0x3d60('0x30')][_0x3d60('0x35')]));_0x463b37[_0x3d60('0x33')]=_0x463b37['attributes'][_0x3d60('0x36')]?_0x463b37[_0x3d60('0x33')]:_0x27404a['model'];if(_0x173fc7['query'][_0x3d60('0x3e')]){_0x463b37[_0x3d60('0x43')]=[{'all':!![]}];}_0x463b37=_[_0x3d60('0x3b')]({},_0x463b37,_0x173fc7[_0x3d60('0x3c')]);return db[_0x3d60('0x2a')]['find'](_0x463b37)['then'](handleEntityNotFound(_0x34694e,null))['then'](respondWithResult(_0x34694e,null))[_0x3d60('0x41')](handleError(_0x34694e,null));};exports[_0x3d60('0x44')]=function(_0x77343d,_0x1fe02e){return db[_0x3d60('0x2a')][_0x3d60('0x44')](_0x77343d['body'],{})[_0x3d60('0x24')](respondWithResult(_0x1fe02e,0xc9))[_0x3d60('0x41')](handleError(_0x1fe02e,null));};exports[_0x3d60('0x23')]=function(_0x5a0907,_0x11a327){if(_0x5a0907[_0x3d60('0x45')]['id']){delete _0x5a0907[_0x3d60('0x45')]['id'];}return db[_0x3d60('0x2a')]['find']({'where':{'id':_0x5a0907[_0x3d60('0x46')]['id']}})[_0x3d60('0x24')](handleEntityNotFound(_0x11a327,null))[_0x3d60('0x24')](saveUpdates(_0x5a0907[_0x3d60('0x45')],null))[_0x3d60('0x24')](respondWithResult(_0x11a327,null))[_0x3d60('0x41')](handleError(_0x11a327,null));};exports[_0x3d60('0x25')]=function(_0x3a2c56,_0x1d9da4){return db[_0x3d60('0x2a')]['find']({'where':{'id':_0x3a2c56[_0x3d60('0x46')]['id']}})[_0x3d60('0x24')](handleEntityNotFound(_0x1d9da4,null))[_0x3d60('0x24')](removeEntity(_0x1d9da4,null))[_0x3d60('0x41')](handleError(_0x1d9da4,null));};
\ No newline at end of file
index 84fdf88..88c25f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x813a=['int_salesforce_fields','salesforce_unique_index','idField','FieldId','util','../../config/logger','api','request-promise','./intSalesforceField.attributes','exports','define','SalesforceField'];(function(_0x4508ee,_0x418bf8){var _0x1f238a=function(_0x580d4b){while(--_0x580d4b){_0x4508ee['push'](_0x4508ee['shift']());}};_0x1f238a(++_0x418bf8);}(_0x813a,0xc4));var _0xa813=function(_0x3c47f4,_0x11b97a){_0x3c47f4=_0x3c47f4-0x0;var _0x4ce115=_0x813a[_0x3c47f4];return _0x4ce115;};'use strict';var _=require('lodash');var util=require(_0xa813('0x0'));var logger=require(_0xa813('0x1'))(_0xa813('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa813('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xa813('0x4'));module[_0xa813('0x5')]=function(_0x459732,_0x462ce2){return _0x459732[_0xa813('0x6')](_0xa813('0x7'),attributes,{'tableName':_0xa813('0x8'),'paranoid':![],'indexes':[{'name':_0xa813('0x9'),'fields':[_0xa813('0xa'),_0xa813('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x196d=['exports','define','SalesforceField','int_salesforce_fields','salesforce_unique_index','idField','FieldId','lodash','util','../../config/logger','moment','path','rimraf','./intSalesforceField.attributes'];(function(_0x559e02,_0x43f1ef){var _0x32e154=function(_0x2a6d5d){while(--_0x2a6d5d){_0x559e02['push'](_0x559e02['shift']());}};_0x32e154(++_0x43f1ef);}(_0x196d,0xd9));var _0xd196=function(_0x1477ef,_0x54a5d6){_0x1477ef=_0x1477ef-0x0;var _0x164acd=_0x196d[_0x1477ef];return _0x164acd;};'use strict';var _=require(_0xd196('0x0'));var util=require(_0xd196('0x1'));var logger=require(_0xd196('0x2'))('api');var moment=require(_0xd196('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xd196('0x4'));var rimraf=require(_0xd196('0x5'));var config=require('../../config/environment');var attributes=require(_0xd196('0x6'));module[_0xd196('0x7')]=function(_0x33a389,_0xd02d38){return _0x33a389[_0xd196('0x8')](_0xd196('0x9'),attributes,{'tableName':_0xd196('0xa'),'paranoid':![],'indexes':[{'name':_0xd196('0xb'),'fields':[_0xd196('0xc'),_0xd196('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index b70370d..10811ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04c7=['debug','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','code','SalesforceField,\x20%s,\x20%s','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','then','info','request\x20sent'];(function(_0x316373,_0x4e3893){var _0x3643a2=function(_0x2c4568){while(--_0x2c4568){_0x316373['push'](_0x316373['shift']());}};_0x3643a2(++_0x4e3893);}(_0x04c7,0x16e));var _0x704c=function(_0x48e921,_0x20cf98){_0x48e921=_0x48e921-0x0;var _0x4986fe=_0x04c7[_0x48e921];return _0x4986fe;};'use strict';var _=require('lodash');var util=require(_0x704c('0x0'));var moment=require(_0x704c('0x1'));var BPromise=require('bluebird');var rs=require(_0x704c('0x2'));var fs=require('fs');var Redis=require(_0x704c('0x3'));var db=require(_0x704c('0x4'))['db'];var utils=require(_0x704c('0x5'));var logger=require(_0x704c('0x6'))('rpc');var config=require(_0x704c('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x704c('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1024bc,_0x47e227,_0x129868){return new BPromise(function(_0x3961a1,_0x16a6ed){return client['request'](_0x1024bc,_0x129868)[_0x704c('0x9')](function(_0x4bffdb){logger[_0x704c('0xa')]('SalesforceField,\x20%s,\x20%s',_0x47e227,_0x704c('0xb'));logger[_0x704c('0xc')](_0x704c('0xd'),_0x47e227,_0x704c('0xb'),JSON[_0x704c('0xe')](_0x4bffdb));if(_0x4bffdb['error']){if(_0x4bffdb[_0x704c('0xf')][_0x704c('0x10')]===0x1f4){logger['error'](_0x704c('0x11'),_0x47e227,_0x4bffdb['error']['message']);return _0x16a6ed(_0x4bffdb['error'][_0x704c('0x12')]);}logger['error'](_0x704c('0x11'),_0x47e227,_0x4bffdb[_0x704c('0xf')][_0x704c('0x12')]);return _0x3961a1(_0x4bffdb['error']['message']);}else{logger[_0x704c('0xa')](_0x704c('0x11'),_0x47e227,'request\x20sent');_0x3961a1(_0x4bffdb[_0x704c('0x13')][_0x704c('0x12')]);}})[_0x704c('0x14')](function(_0x2b2729){logger['error'](_0x704c('0x11'),_0x47e227,_0x2b2729);_0x16a6ed(_0x2b2729);});});}
\ No newline at end of file
+var _0x5603=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','moment','ioredis','../../config/utils'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x5603,0x64));var _0x3560=function(_0x5383e7,_0x3052ee){_0x5383e7=_0x5383e7-0x0;var _0x513eb3=_0x5603[_0x5383e7];return _0x513eb3;};'use strict';var _=require(_0x3560('0x0'));var util=require(_0x3560('0x1'));var moment=require(_0x3560('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3560('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x3560('0x4'));var logger=require(_0x3560('0x5'))(_0x3560('0x6'));var config=require(_0x3560('0x7'));var jayson=require(_0x3560('0x8'));var client=jayson[_0x3560('0x9')][_0x3560('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4ea250,_0x1fafa5,_0x385b52){return new BPromise(function(_0x34340a,_0x14c202){return client['request'](_0x4ea250,_0x385b52)[_0x3560('0xb')](function(_0x37f3eb){logger[_0x3560('0xc')]('SalesforceField,\x20%s,\x20%s',_0x1fafa5,_0x3560('0xd'));logger[_0x3560('0xe')]('SalesforceField,\x20%s,\x20%s,\x20%s',_0x1fafa5,_0x3560('0xd'),JSON[_0x3560('0xf')](_0x37f3eb));if(_0x37f3eb[_0x3560('0x10')]){if(_0x37f3eb[_0x3560('0x10')][_0x3560('0x11')]===0x1f4){logger[_0x3560('0x10')]('SalesforceField,\x20%s,\x20%s',_0x1fafa5,_0x37f3eb[_0x3560('0x10')]['message']);return _0x14c202(_0x37f3eb['error'][_0x3560('0x12')]);}logger[_0x3560('0x10')]('SalesforceField,\x20%s,\x20%s',_0x1fafa5,_0x37f3eb[_0x3560('0x10')][_0x3560('0x12')]);return _0x34340a(_0x37f3eb[_0x3560('0x10')]['message']);}else{logger[_0x3560('0xc')]('SalesforceField,\x20%s,\x20%s',_0x1fafa5,_0x3560('0xd'));_0x34340a(_0x37f3eb[_0x3560('0x13')]['message']);}})[_0x3560('0x14')](function(_0x44a81e){logger['error']('SalesforceField,\x20%s,\x20%s',_0x1fafa5,_0x44a81e);_0x14c202(_0x44a81e);});});}
\ No newline at end of file
index 98d51c2..432d7dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e8e=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','/:id','show','get','/:id/configurations','getConfigurations','/:id/fields','getFields','create','addConfiguration','put','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x30dee9,_0x2e1041){var _0x40d2c6=function(_0x323dcb){while(--_0x323dcb){_0x30dee9['push'](_0x30dee9['shift']());}};_0x40d2c6(++_0x2e1041);}(_0x7e8e,0x91));var _0xe7e8=function(_0x3aaf0a,_0x450970){_0x3aaf0a=_0x3aaf0a-0x0;var _0x33e6bc=_0x7e8e[_0x3aaf0a];return _0x33e6bc;};'use strict';var multer=require(_0xe7e8('0x0'));var util=require(_0xe7e8('0x1'));var path=require(_0xe7e8('0x2'));var timeout=require(_0xe7e8('0x3'));var express=require(_0xe7e8('0x4'));var router=express[_0xe7e8('0x5')]();var fs_extra=require(_0xe7e8('0x6'));var auth=require(_0xe7e8('0x7'));var interaction=require(_0xe7e8('0x8'));var config=require(_0xe7e8('0x9'));var controller=require('./intServicenowAccount.controller');router['get']('/',auth[_0xe7e8('0xa')](),controller[_0xe7e8('0xb')]);router['get'](_0xe7e8('0xc'),auth[_0xe7e8('0xa')](),controller[_0xe7e8('0xd')]);router[_0xe7e8('0xe')](_0xe7e8('0xf'),auth[_0xe7e8('0xa')](),controller[_0xe7e8('0x10')]);router[_0xe7e8('0xe')](_0xe7e8('0x11'),auth['isAuthenticated'](),controller[_0xe7e8('0x12')]);router['post']('/',auth[_0xe7e8('0xa')](),controller[_0xe7e8('0x13')]);router['post'](_0xe7e8('0xf'),auth['isAuthenticated'](),controller[_0xe7e8('0x14')]);router[_0xe7e8('0x15')](_0xe7e8('0xc'),auth[_0xe7e8('0xa')](),controller['update']);router[_0xe7e8('0x16')](_0xe7e8('0xc'),auth['isAuthenticated'](),controller[_0xe7e8('0x17')]);module[_0xe7e8('0x18')]=router;
\ No newline at end of file
+var _0xb268=['delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller','get','isAuthenticated','show','/:id/configurations','getConfigurations','create','post','addConfiguration','/:id'];(function(_0x2215cc,_0x4a6f75){var _0x34ecf4=function(_0xb33077){while(--_0xb33077){_0x2215cc['push'](_0x2215cc['shift']());}};_0x34ecf4(++_0x4a6f75);}(_0xb268,0x114));var _0x8b26=function(_0x5310c7,_0x44e980){_0x5310c7=_0x5310c7-0x0;var _0x117543=_0xb268[_0x5310c7];return _0x117543;};'use strict';var multer=require(_0x8b26('0x0'));var util=require(_0x8b26('0x1'));var path=require(_0x8b26('0x2'));var timeout=require(_0x8b26('0x3'));var express=require(_0x8b26('0x4'));var router=express[_0x8b26('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x8b26('0x6'));var config=require(_0x8b26('0x7'));var controller=require(_0x8b26('0x8'));router[_0x8b26('0x9')]('/',auth[_0x8b26('0xa')](),controller['index']);router[_0x8b26('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x8b26('0xb')]);router[_0x8b26('0x9')](_0x8b26('0xc'),auth[_0x8b26('0xa')](),controller[_0x8b26('0xd')]);router[_0x8b26('0x9')]('/:id/fields',auth[_0x8b26('0xa')](),controller['getFields']);router['post']('/',auth[_0x8b26('0xa')](),controller[_0x8b26('0xe')]);router[_0x8b26('0xf')]('/:id/configurations',auth[_0x8b26('0xa')](),controller[_0x8b26('0x10')]);router['put'](_0x8b26('0x11'),auth['isAuthenticated'](),controller['update']);router[_0x8b26('0x12')](_0x8b26('0x11'),auth[_0x8b26('0xa')](),controller[_0x8b26('0x13')]);module[_0x8b26('0x14')]=router;
\ No newline at end of file
index d515dfc..0371588 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb52=['remoteUri','sequelize','exports','STRING','username'];(function(_0x18d8e4,_0x1b580e){var _0x53c5da=function(_0x58d964){while(--_0x58d964){_0x18d8e4['push'](_0x18d8e4['shift']());}};_0x53c5da(++_0x1b580e);}(_0xeb52,0xce));var _0x2eb5=function(_0x1ab320,_0x1b6b75){_0x1ab320=_0x1ab320-0x0;var _0x3cc3f9=_0xeb52[_0x1ab320];return _0x3cc3f9;};'use strict';var Sequelize=require(_0x2eb5('0x0'));module[_0x2eb5('0x1')]={'name':{'type':Sequelize[_0x2eb5('0x2')]},'description':{'type':Sequelize[_0x2eb5('0x2')]},'username':{'type':Sequelize[_0x2eb5('0x2')],'unique':_0x2eb5('0x3')},'password':{'type':Sequelize['STRING']},'email':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x2eb5('0x2')],'unique':_0x2eb5('0x4')},'serverUrl':{'type':Sequelize[_0x2eb5('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x6929=['exports','STRING','username','remoteUri'];(function(_0x19cc94,_0x3e4faf){var _0x48386b=function(_0x37d6f3){while(--_0x37d6f3){_0x19cc94['push'](_0x19cc94['shift']());}};_0x48386b(++_0x3e4faf);}(_0x6929,0xa4));var _0x9692=function(_0x11880b,_0x129bb9){_0x11880b=_0x11880b-0x0;var _0x1a1df0=_0x6929[_0x11880b];return _0x1a1df0;};'use strict';var Sequelize=require('sequelize');module[_0x9692('0x0')]={'name':{'type':Sequelize[_0x9692('0x1')]},'description':{'type':Sequelize[_0x9692('0x1')]},'username':{'type':Sequelize['STRING'],'unique':_0x9692('0x2')},'password':{'type':Sequelize[_0x9692('0x1')]},'email':{'type':Sequelize[_0x9692('0x1')]},'remoteUri':{'type':Sequelize[_0x9692('0x1')],'unique':_0x9692('0x3')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index fe92b3c..b49fa42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7951=['due_date','reopen_count','sys_tags','correlation_id','location','username','password','email','remoteUri','serverUrl','substring','lastIndexOf','%s/api/now/doc/table/schema/','format','%s/api/now/table/','GET','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','assign','remove','includes','forEach','internalType','label','push','all','TCL:\x20_object','concat','ServiceNow\x20error:\x20','test','statusCode','Wrong\x20credentials','False','false','value','rimraf','zip-dir','request-promise','bluebird','mustache','util','sox','to-csv','ejs','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','../../components/integrations/configuration','sendStatus','status','end','offset','limit','undefined','count','json','apply','save','update','then','error','stack','name','send','index','map','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','ServicenowAccount','include','findAll','rows','catch','show','params','rawAttributes','includeAll','options','find','create','body','destroy','getConfigurations','ServicenowConfiguration','pick','findOne','AccountId','getSubjects','Descriptions','getDescriptions','channel','ServicenowField','Subjects','getFields','made_sla','hold_reason','knowledge','subcategory','notify','incident_state','severity','category','caused_by','watch_list','sys_updated_on','child_incidents','approval_history','resolved_by','sys_updated_by','opened_by','user_input','sys_created_on','state','sys_created_by','order','cmdb_ci','impact','active','work_notes_list','priority','time_worked','expected_start','business_duration','work_end','reopened_time','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','follow_up','sys_id','contact_type','reopened_by','urgency','problem_id','reassignment_count','assigned_to','sla_due','comments_and_work_notes'];(function(_0x30d618,_0x590668){var _0x39731a=function(_0x53e0fe){while(--_0x53e0fe){_0x30d618['push'](_0x30d618['shift']());}};_0x39731a(++_0x590668);}(_0x7951,0x189));var _0x1795=function(_0x3f24f0,_0x4808ff){_0x3f24f0=_0x3f24f0-0x0;var _0x20b6b0=_0x7951[_0x3f24f0];return _0x20b6b0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1795('0x0'));var zipdir=require(_0x1795('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1795('0x2'));var moment=require('moment');var BPromise=require(_0x1795('0x3'));var Mustache=require(_0x1795('0x4'));var util=require(_0x1795('0x5'));var path=require('path');var sox=require(_0x1795('0x6'));var csv=require(_0x1795('0x7'));var ejs=require(_0x1795('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1795('0x9'));var squel=require(_0x1795('0xa'));var crypto=require(_0x1795('0xb'));var jsforce=require(_0x1795('0xc'));var deskjs=require(_0x1795('0xd'));var toCsv=require(_0x1795('0x7'));var querystring=require(_0x1795('0xe'));var Papa=require(_0x1795('0xf'));var Redis=require('ioredis');var authService=require(_0x1795('0x10'));var qs=require(_0x1795('0x11'));var as=require(_0x1795('0x12'));var hardwareService=require(_0x1795('0x13'));var logger=require(_0x1795('0x14'))(_0x1795('0x15'));var utils=require(_0x1795('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x1795('0x17'));var db=require(_0x1795('0x18'))['db'];var integrations=require(_0x1795('0x19'));function respondWithStatusCode(_0x1ec28e,_0x47c1fc){_0x47c1fc=_0x47c1fc||0xcc;return function(_0x8f38fa){if(_0x8f38fa){return _0x1ec28e[_0x1795('0x1a')](_0x47c1fc);}return _0x1ec28e[_0x1795('0x1b')](_0x47c1fc)[_0x1795('0x1c')]();};}function respondWithResult(_0x5e0223,_0x16e413){_0x16e413=_0x16e413||0xc8;return function(_0x1c707f){if(_0x1c707f){return _0x5e0223['status'](_0x16e413)['json'](_0x1c707f);}};}function respondWithFilteredResult(_0x2b44da,_0x5128ba){return function(_0x1a4be1){if(_0x1a4be1){var _0x4d98c9=typeof _0x5128ba[_0x1795('0x1d')]==='undefined'&&typeof _0x5128ba[_0x1795('0x1e')]===_0x1795('0x1f');var _0x4197a3=_0x1a4be1[_0x1795('0x20')];var _0x30104d=_0x4d98c9?0x0:_0x5128ba[_0x1795('0x1d')];var _0x3b67f7=_0x4d98c9?_0x1a4be1[_0x1795('0x20')]:_0x5128ba[_0x1795('0x1d')]+_0x5128ba[_0x1795('0x1e')];var _0x416600;if(_0x3b67f7>=_0x4197a3){_0x3b67f7=_0x4197a3;_0x416600=0xc8;}else{_0x416600=0xce;}_0x2b44da[_0x1795('0x1b')](_0x416600);return _0x2b44da['set']('Content-Range',_0x30104d+'-'+_0x3b67f7+'/'+_0x4197a3)[_0x1795('0x21')](_0x1a4be1);}return null;};}function patchUpdates(_0x52e425){return function(_0xef12d7){try{jsonpatch[_0x1795('0x22')](_0xef12d7,_0x52e425,!![]);}catch(_0x3b395d){return BPromise['reject'](_0x3b395d);}return _0xef12d7[_0x1795('0x23')]();};}function saveUpdates(_0x3d2963,_0x40e00b){return function(_0xdc68dc){if(_0xdc68dc){return _0xdc68dc[_0x1795('0x24')](_0x3d2963)[_0x1795('0x25')](function(_0x1db50b){return _0x1db50b;});}return null;};}function removeEntity(_0x3e26fe,_0x276d3a){return function(_0x111d3c){if(_0x111d3c){return _0x111d3c['destroy']()[_0x1795('0x25')](function(){_0x3e26fe[_0x1795('0x1b')](0xcc)[_0x1795('0x1c')]();});}};}function handleEntityNotFound(_0x56dffb,_0x19419c){return function(_0x29ccad){if(!_0x29ccad){_0x56dffb[_0x1795('0x1a')](0x194);}return _0x29ccad;};}function handleError(_0x4a5aa5,_0x517a8c){_0x517a8c=_0x517a8c||0x1f4;return function(_0xda24d8){logger[_0x1795('0x26')](_0xda24d8[_0x1795('0x27')]);if(_0xda24d8[_0x1795('0x28')]){delete _0xda24d8[_0x1795('0x28')];}_0x4a5aa5[_0x1795('0x1b')](_0x517a8c)[_0x1795('0x29')](_0xda24d8);};}exports[_0x1795('0x2a')]=function(_0x2377ad,_0x5729e4){var _0x4567e5={},_0x108f5b={},_0xd446b3={'count':0x0,'rows':[]};var _0x588309=_[_0x1795('0x2b')](db['ServicenowAccount']['rawAttributes'],function(_0x23f5d3){return{'name':_0x23f5d3[_0x1795('0x2c')],'type':_0x23f5d3[_0x1795('0x2d')][_0x1795('0x2e')]};});_0x108f5b[_0x1795('0x2f')]=_[_0x1795('0x2b')](_0x588309,_0x1795('0x28'));_0x108f5b[_0x1795('0x30')]=_[_0x1795('0x31')](_0x2377ad[_0x1795('0x30')]);_0x108f5b[_0x1795('0x32')]=_[_0x1795('0x33')](_0x108f5b[_0x1795('0x2f')],_0x108f5b['query']);_0x4567e5[_0x1795('0x34')]=_[_0x1795('0x33')](_0x108f5b['model'],qs[_0x1795('0x35')](_0x2377ad[_0x1795('0x30')]['fields']));_0x4567e5['attributes']=_0x4567e5['attributes'][_0x1795('0x36')]?_0x4567e5[_0x1795('0x34')]:_0x108f5b[_0x1795('0x2f')];if(!_0x2377ad['query'][_0x1795('0x37')](_0x1795('0x38'))){_0x4567e5['limit']=qs[_0x1795('0x1e')](_0x2377ad[_0x1795('0x30')][_0x1795('0x1e')]);_0x4567e5[_0x1795('0x1d')]=qs['offset'](_0x2377ad[_0x1795('0x30')][_0x1795('0x1d')]);}_0x4567e5['order']=qs['sort'](_0x2377ad['query'][_0x1795('0x39')]);_0x4567e5[_0x1795('0x3a')]=qs[_0x1795('0x32')](_['pick'](_0x2377ad[_0x1795('0x30')],_0x108f5b[_0x1795('0x32')]),_0x588309);if(_0x2377ad['query'][_0x1795('0x3b')]){_0x4567e5['where']=_[_0x1795('0x3c')](_0x4567e5[_0x1795('0x3a')],{'$or':_[_0x1795('0x2b')](_0x588309,function(_0x28b5de){if(_0x28b5de[_0x1795('0x2d')]!==_0x1795('0x3d')){var _0x3c0bab={};_0x3c0bab[_0x28b5de[_0x1795('0x28')]]={'$like':'%'+_0x2377ad['query'][_0x1795('0x3b')]+'%'};return _0x3c0bab;}})});}_0x4567e5=_['merge']({},_0x4567e5,_0x2377ad['options']);var _0x56adc4={'where':_0x4567e5[_0x1795('0x3a')]};return db[_0x1795('0x3e')]['count'](_0x56adc4)['then'](function(_0x1eb221){_0xd446b3[_0x1795('0x20')]=_0x1eb221;if(_0x2377ad[_0x1795('0x30')]['includeAll']){_0x4567e5[_0x1795('0x3f')]=[{'all':!![]}];}return db[_0x1795('0x3e')][_0x1795('0x40')](_0x4567e5);})['then'](function(_0x43d691){_0xd446b3[_0x1795('0x41')]=_0x43d691;return _0xd446b3;})[_0x1795('0x25')](respondWithFilteredResult(_0x5729e4,_0x4567e5))[_0x1795('0x42')](handleError(_0x5729e4,null));};exports[_0x1795('0x43')]=function(_0x45dcff,_0x3ea08c){var _0x37f2bf={'raw':![],'where':{'id':_0x45dcff[_0x1795('0x44')]['id']}},_0x91c6d6={};_0x91c6d6['model']=_[_0x1795('0x31')](db['ServicenowAccount'][_0x1795('0x45')]);_0x91c6d6[_0x1795('0x30')]=_[_0x1795('0x31')](_0x45dcff['query']);_0x91c6d6[_0x1795('0x32')]=_['intersection'](_0x91c6d6[_0x1795('0x2f')],_0x91c6d6['query']);_0x37f2bf[_0x1795('0x34')]=_[_0x1795('0x33')](_0x91c6d6['model'],qs[_0x1795('0x35')](_0x45dcff['query']['fields']));_0x37f2bf[_0x1795('0x34')]=_0x37f2bf[_0x1795('0x34')][_0x1795('0x36')]?_0x37f2bf[_0x1795('0x34')]:_0x91c6d6[_0x1795('0x2f')];if(_0x45dcff[_0x1795('0x30')][_0x1795('0x46')]){_0x37f2bf['include']=[{'all':!![]}];}_0x37f2bf=_[_0x1795('0x3c')]({},_0x37f2bf,_0x45dcff[_0x1795('0x47')]);return db[_0x1795('0x3e')][_0x1795('0x48')](_0x37f2bf)[_0x1795('0x25')](handleEntityNotFound(_0x3ea08c,null))[_0x1795('0x25')](respondWithResult(_0x3ea08c,null))[_0x1795('0x42')](handleError(_0x3ea08c,null));};exports[_0x1795('0x49')]=function(_0x364488,_0x3ef8d6){return db[_0x1795('0x3e')][_0x1795('0x49')](_0x364488[_0x1795('0x4a')],{})[_0x1795('0x25')](respondWithResult(_0x3ef8d6,0xc9))['catch'](handleError(_0x3ef8d6,null));};exports['update']=function(_0x299e78,_0x45c1db){if(_0x299e78['body']['id']){delete _0x299e78[_0x1795('0x4a')]['id'];}return db[_0x1795('0x3e')][_0x1795('0x48')]({'where':{'id':_0x299e78['params']['id']}})[_0x1795('0x25')](handleEntityNotFound(_0x45c1db,null))[_0x1795('0x25')](saveUpdates(_0x299e78['body'],null))[_0x1795('0x25')](respondWithResult(_0x45c1db,null))[_0x1795('0x42')](handleError(_0x45c1db,null));};exports[_0x1795('0x4b')]=function(_0x2d3d02,_0x59a2dd){return db[_0x1795('0x3e')]['find']({'where':{'id':_0x2d3d02[_0x1795('0x44')]['id']}})['then'](handleEntityNotFound(_0x59a2dd,null))[_0x1795('0x25')](removeEntity(_0x59a2dd,null))['catch'](handleError(_0x59a2dd,null));};exports[_0x1795('0x4c')]=function(_0x4e9bf7,_0x4eef98,_0x3e1c74){var _0x2d27eb={};var _0x4b4aac={};var _0x5478a7;var _0x59811c;return db[_0x1795('0x3e')]['findOne']({'where':{'id':_0x4e9bf7[_0x1795('0x44')]['id']}})[_0x1795('0x25')](handleEntityNotFound(_0x4eef98,null))[_0x1795('0x25')](function(_0x9588f9){if(_0x9588f9){_0x5478a7=_0x9588f9;_0x4b4aac[_0x1795('0x2f')]=_[_0x1795('0x31')](db[_0x1795('0x4d')][_0x1795('0x45')]);_0x4b4aac[_0x1795('0x30')]=_[_0x1795('0x31')](_0x4e9bf7[_0x1795('0x30')]);_0x4b4aac[_0x1795('0x32')]=_[_0x1795('0x33')](_0x4b4aac[_0x1795('0x2f')],_0x4b4aac[_0x1795('0x30')]);_0x2d27eb[_0x1795('0x34')]=_[_0x1795('0x33')](_0x4b4aac[_0x1795('0x2f')],qs[_0x1795('0x35')](_0x4e9bf7['query'][_0x1795('0x35')]));_0x2d27eb['attributes']=_0x2d27eb[_0x1795('0x34')][_0x1795('0x36')]?_0x2d27eb[_0x1795('0x34')]:_0x4b4aac[_0x1795('0x2f')];_0x2d27eb['order']=qs[_0x1795('0x39')](_0x4e9bf7[_0x1795('0x30')]['sort']);_0x2d27eb[_0x1795('0x3a')]=qs[_0x1795('0x32')](_[_0x1795('0x4e')](_0x4e9bf7[_0x1795('0x30')],_0x4b4aac[_0x1795('0x32')]));if(_0x4e9bf7[_0x1795('0x30')][_0x1795('0x3b')]){_0x2d27eb[_0x1795('0x3a')]=_[_0x1795('0x3c')](_0x2d27eb['where'],{'$or':_[_0x1795('0x2b')](_0x2d27eb[_0x1795('0x34')],function(_0x3f5f0d){var _0x2b8119={};_0x2b8119[_0x3f5f0d]={'$like':'%'+_0x4e9bf7[_0x1795('0x30')][_0x1795('0x3b')]+'%'};return _0x2b8119;})});}_0x2d27eb=_['merge']({},_0x2d27eb,_0x4e9bf7[_0x1795('0x47')]);return _0x5478a7[_0x1795('0x4c')](_0x2d27eb);}})['then'](function(_0x4c7650){if(_0x4c7650){_0x59811c=_0x4c7650[_0x1795('0x36')];if(!_0x4e9bf7['query'][_0x1795('0x37')](_0x1795('0x38'))){_0x2d27eb[_0x1795('0x1e')]=qs[_0x1795('0x1e')](_0x4e9bf7['query'][_0x1795('0x1e')]);_0x2d27eb[_0x1795('0x1d')]=qs[_0x1795('0x1d')](_0x4e9bf7[_0x1795('0x30')][_0x1795('0x1d')]);}return _0x5478a7[_0x1795('0x4c')](_0x2d27eb);}})[_0x1795('0x25')](function(_0x45ec66){if(_0x45ec66){return _0x45ec66?{'count':_0x59811c,'rows':_0x45ec66}:null;}})[_0x1795('0x25')](respondWithResult(_0x4eef98,null))[_0x1795('0x42')](handleError(_0x4eef98,null));};exports['addConfiguration']=function(_0x4ce911,_0x395493,_0x3707e0){if(_0x4ce911[_0x1795('0x4a')]['id']){delete _0x4ce911[_0x1795('0x4a')]['id'];}return db[_0x1795('0x3e')][_0x1795('0x4f')]({'where':{'id':_0x4ce911[_0x1795('0x44')]['id']}})['then'](handleEntityNotFound(_0x395493,null))[_0x1795('0x25')](function(_0xa482ef){if(_0xa482ef){_0x4ce911[_0x1795('0x4a')][_0x1795('0x50')]=_0xa482ef['id'];_0x4ce911[_0x1795('0x4a')]['Subjects']=integrations[_0x1795('0x51')](_0x4ce911['body']['channel'],_0x4ce911[_0x1795('0x4a')]['type']);_0x4ce911[_0x1795('0x4a')][_0x1795('0x52')]=integrations[_0x1795('0x53')](_0x4ce911[_0x1795('0x4a')][_0x1795('0x54')],_0x4ce911[_0x1795('0x4a')]['type']);return db[_0x1795('0x4d')][_0x1795('0x49')](_0x4ce911[_0x1795('0x4a')],{'include':[{'model':db[_0x1795('0x55')],'as':_0x1795('0x56')},{'model':db[_0x1795('0x55')],'as':_0x1795('0x52')}]});}return null;})['then'](respondWithResult(_0x395493,null))[_0x1795('0x42')](handleError(_0x395493,null));};exports[_0x1795('0x57')]=function(_0x5652a1,_0x3d9000,_0x3786e1){var _0x37e741=[_0x1795('0x58'),_0x1795('0x59'),_0x1795('0x5a'),_0x1795('0x5b'),'close_code',_0x1795('0x5c'),_0x1795('0x5d'),_0x1795('0x5e'),_0x1795('0x5f')];var _0x52b202=['parent',_0x1795('0x58'),_0x1795('0x60'),_0x1795('0x61'),'upon_reject',_0x1795('0x62'),_0x1795('0x63'),_0x1795('0x59'),_0x1795('0x64'),'number',_0x1795('0x65'),_0x1795('0x66'),_0x1795('0x67'),_0x1795('0x68'),_0x1795('0x69'),'sys_domain',_0x1795('0x6a'),_0x1795('0x6b'),_0x1795('0x5a'),_0x1795('0x6c'),'calendar_stc','closed_at',_0x1795('0x6d'),'delivery_plan',_0x1795('0x6e'),_0x1795('0x6f'),_0x1795('0x70'),'business_service',_0x1795('0x71'),'sys_domain_path','rfc',_0x1795('0x72'),_0x1795('0x73'),'opened_at',_0x1795('0x74'),'group_list',_0x1795('0x75'),_0x1795('0x76'),'resolved_at','caller_id',_0x1795('0x77'),'subcategory',_0x1795('0x78'),_0x1795('0x79'),_0x1795('0x7a'),_0x1795('0x7b'),'delivery_task','work_start',_0x1795('0x7c'),_0x1795('0x7d'),_0x1795('0x7e'),_0x1795('0x7f'),_0x1795('0x80'),_0x1795('0x5c'),_0x1795('0x81'),_0x1795('0x82'),'closed_by',_0x1795('0x83'),'parent_incident',_0x1795('0x84'),_0x1795('0x85'),_0x1795('0x86'),_0x1795('0x5d'),_0x1795('0x87'),_0x1795('0x88'),'company',_0x1795('0x89'),'activity_due',_0x1795('0x8a'),'severity','comments',_0x1795('0x8b'),'approval',_0x1795('0x8c'),_0x1795('0x8d'),'sys_mod_count',_0x1795('0x8e'),_0x1795('0x8f'),'escalation','upon_approval',_0x1795('0x90'),_0x1795('0x91'),_0x1795('0x5f')];var _0x30e278='';var _0x61d72d='';var _0x3a6038=[];var _0x1cb3a2='';var _0x30fa64='';var _0x9f36d3=[];var _0x1ea9fa='';var _0x8d3d87='';var _0x1671b9={};var _0x107374='';return db['ServicenowAccount'][_0x1795('0x4f')]({'where':{'id':_0x5652a1[_0x1795('0x44')]['id']},'attributes':['id',_0x1795('0x92'),_0x1795('0x93'),_0x1795('0x94'),_0x1795('0x95'),_0x1795('0x96')]})[_0x1795('0x25')](handleEntityNotFound(_0x3d9000,null))[_0x1795('0x25')](function(_0x3a3856){if(_0x3a3856){_0x107374=_0x3a3856['remoteUri'];var _0x574d85=_0x107374['slice'](-0x1);if(_0x574d85==='/'){_0x107374=_0x107374[_0x1795('0x97')](0x0,_0x107374[_0x1795('0x98')](_0x574d85));}_0x8d3d87=util['format'](_0x1795('0x99'),_0x107374);_0x1ea9fa=util[_0x1795('0x9a')](_0x1795('0x9b'),_0x107374);_0x1671b9={'user':_0x3a3856[_0x1795('0x92')],'pass':_0x3a3856[_0x1795('0x93')]};var _0x1a3d31={'method':_0x1795('0x9c'),'uri':_0x8d3d87+_0x1795('0x9d'),'auth':_0x1671b9,'json':!![]};return rp(_0x1a3d31);}})[_0x1795('0x25')](function(_0x3f1735){if(_0x3f1735[_0x1795('0x9e')][_0x1795('0x36')]>0x0){_0x30e278=_0x3f1735[_0x1795('0x9e')];}console[_0x1795('0x9f')](_0x1795('0xa0'),_0x30e278);_0x9f36d3=[];_0x61d72d=Object[_0x1795('0xa1')]([],_0x30e278);_[_0x1795('0xa2')](_0x61d72d,function(_0x5bc617){return!_0x37e741[_0x1795('0xa3')](_0x5bc617[_0x1795('0x28')]);});_0x61d72d[_0x1795('0xa4')](function(_0x25c2a1){var _0x2aeaf7=createFieldObject(_0x1ea9fa,_0x1671b9,_0x25c2a1[_0x1795('0xa5')],_0x25c2a1[_0x1795('0x28')],_0x25c2a1[_0x1795('0xa6')],![]);_0x9f36d3[_0x1795('0xa7')](_0x2aeaf7);});return Promise[_0x1795('0xa8')](_0x9f36d3);})[_0x1795('0x25')](function(_0x55d2b9){_0x3a6038=_0x55d2b9;_0x1cb3a2=Object[_0x1795('0xa1')]([],_0x30e278);console[_0x1795('0x9f')](_0x1795('0xa9'),_0x30e278);_[_0x1795('0xa2')](_0x1cb3a2,function(_0x4c8829){return _0x52b202[_0x1795('0xa3')](_0x4c8829['name']);});console[_0x1795('0x9f')]('TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom',_0x1cb3a2);_0x9f36d3=[];_0x1cb3a2['forEach'](function(_0x225904){var _0x31163c=createFieldObject(_0x1ea9fa,_0x1671b9,_0x225904['internalType'],_0x225904['name'],_0x225904[_0x1795('0xa6')],!![]);_0x9f36d3[_0x1795('0xa7')](_0x31163c);});return Promise[_0x1795('0xa8')](_0x9f36d3);})[_0x1795('0x25')](function(_0x46b3f9){_0x30fa64=_0x46b3f9;var _0x199935=_0x3a6038[_0x1795('0xaa')](_0x30fa64);return{'count':_0x199935[_0x1795('0x36')],'rows':_0x199935};})[_0x1795('0x25')](respondWithResult(_0x3d9000,null))[_0x1795('0x42')](function(_0xa3c260){console[_0x1795('0x9f')](_0x1795('0xab')+_0xa3c260);var _0x1e6a8b=_0x5652a1['query'][_0x1795('0xac')]?0x1f4:_0xa3c260[_0x1795('0xad')]||0x1f4;logger[_0x1795('0x26')](_0xa3c260['stack']);delete _0xa3c260[_0x1795('0x28')];if(_0x1e6a8b===0x191){_0x1e6a8b=0x190;}_0x3d9000['status'](_0x1e6a8b)[_0x1795('0x29')](_0x5652a1[_0x1795('0x30')]['test']?{'message':_0x1795('0xae'),'statusCode':_0xa3c260[_0x1795('0xad')]}:_0xa3c260);});};function createFieldObject(_0x480696,_0x55f2aa,_0x387465,_0x40029b,_0x5a7f54,_0x33fdd4){return new Promise(function(_0x46354a,_0x2062f7){var _0xa9384c={'id':_0x40029b,'name':_0x5a7f54,'custom':_0x33fdd4};if(_0x387465==='boolean'){_0xa9384c[_0x1795('0x47')]=[{'name':'True','value':'true'},{'name':_0x1795('0xaf'),'value':_0x1795('0xb0')}];_0x46354a(_0xa9384c);}else{var _0x3b209f={'method':'GET','uri':_0x480696+'sys_choice?sysparm_query=name=incident^element='+_0x40029b,'auth':_0x55f2aa,'json':!![]};return rp(_0x3b209f)[_0x1795('0x25')](function(_0x5182eb){var _0x441475=[];if(_0x5182eb[_0x1795('0x9e')][_0x1795('0x36')]>0x0){_0x5182eb[_0x1795('0x9e')]['forEach'](function(_0x4369b6){if(_0x4369b6['inactive']==='false'){var _0x4a07be={'name':_0x4369b6[_0x1795('0xa6')],'value':_0x4369b6[_0x1795('0xb1')]};_0x441475[_0x1795('0xa7')](_0x4a07be);}});}_0xa9384c[_0x1795('0x47')]=_0x441475;if(_0xa9384c[_0x1795('0x47')][_0x1795('0x36')]>0x0){_0x46354a(_0xa9384c);}else{if(_0x33fdd4==![]){_0x46354a();}else{_0x46354a(_0xa9384c);}}});}});}
\ No newline at end of file
+var _0x82a6=['intersection','model','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','getConfigurations','findOne','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','ServicenowField','getFields','made_sla','knowledge','subcategory','close_code','notify','incident_state','severity','category','caused_by','watch_list','upon_reject','sys_updated_on','hold_reason','number','resolved_by','opened_by','user_input','sys_created_on','calendar_stc','closed_at','delivery_plan','impact','active','work_notes_list','business_service','priority','rfc','time_worked','opened_at','business_duration','group_list','reopened_time','resolved_at','caller_id','approval_set','short_description','correlation_display','delivery_task','sys_class_name','close_notes','closed_by','follow_up','parent_incident','contact_type','reopened_by','problem_id','company','activity_due','assigned_to','comments','sla_due','approval','comments_and_work_notes','due_date','sys_mod_count','sys_tags','escalation','upon_approval','correlation_id','location','username','password','email','remoteUri','serverUrl','slice','substring','lastIndexOf','format','%s/api/now/doc/table/schema/','%s/api/now/table/','GET','incident?sysparm_display_value=all','result','incident\x20table\x20objects','forEach','all','assign','log','TCL:\x20_object','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','internalType','label','push','ServiceNow\x20error:\x20','test','statusCode','Wrong\x20credentials','boolean','True','true','False','false','sys_choice?sysparm_query=name=incident^element=','value','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../components/integrations/configuration','sendStatus','status','end','offset','undefined','count','Content-Range','json','reject','update','then','destroy','error','stack','send','index','ServicenowAccount','rawAttributes','fieldName','key','map','name','query','keys','filters'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x82a6,0x13e));var _0x682a=function(_0x48fe2c,_0x54f6d5){_0x48fe2c=_0x48fe2c-0x0;var _0x21fd7f=_0x82a6[_0x48fe2c];return _0x21fd7f;};'use strict';var emlformat=require(_0x682a('0x0'));var rimraf=require(_0x682a('0x1'));var zipdir=require(_0x682a('0x2'));var jsonpatch=require(_0x682a('0x3'));var rp=require(_0x682a('0x4'));var moment=require('moment');var BPromise=require(_0x682a('0x5'));var Mustache=require(_0x682a('0x6'));var util=require(_0x682a('0x7'));var path=require(_0x682a('0x8'));var sox=require(_0x682a('0x9'));var csv=require(_0x682a('0xa'));var ejs=require(_0x682a('0xb'));var fs=require('fs');var fs_extra=require(_0x682a('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x682a('0xd'));var jsforce=require(_0x682a('0xe'));var deskjs=require(_0x682a('0xf'));var toCsv=require(_0x682a('0xa'));var querystring=require(_0x682a('0x10'));var Papa=require(_0x682a('0x11'));var Redis=require(_0x682a('0x12'));var authService=require(_0x682a('0x13'));var qs=require(_0x682a('0x14'));var as=require(_0x682a('0x15'));var hardwareService=require(_0x682a('0x16'));var logger=require('../../config/logger')(_0x682a('0x17'));var utils=require(_0x682a('0x18'));var config=require(_0x682a('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0x682a('0x1a'));function respondWithStatusCode(_0x5b6453,_0x285215){_0x285215=_0x285215||0xcc;return function(_0x39d5d0){if(_0x39d5d0){return _0x5b6453[_0x682a('0x1b')](_0x285215);}return _0x5b6453[_0x682a('0x1c')](_0x285215)[_0x682a('0x1d')]();};}function respondWithResult(_0x47e364,_0x57b2e8){_0x57b2e8=_0x57b2e8||0xc8;return function(_0x10dadf){if(_0x10dadf){return _0x47e364[_0x682a('0x1c')](_0x57b2e8)['json'](_0x10dadf);}};}function respondWithFilteredResult(_0x4ce384,_0x3b6a50){return function(_0x17c273){if(_0x17c273){var _0x4cc9ad=typeof _0x3b6a50[_0x682a('0x1e')]===_0x682a('0x1f')&&typeof _0x3b6a50['limit']==='undefined';var _0x148cd2=_0x17c273['count'];var _0x17f669=_0x4cc9ad?0x0:_0x3b6a50[_0x682a('0x1e')];var _0x575f1b=_0x4cc9ad?_0x17c273[_0x682a('0x20')]:_0x3b6a50[_0x682a('0x1e')]+_0x3b6a50['limit'];var _0x2cedb8;if(_0x575f1b>=_0x148cd2){_0x575f1b=_0x148cd2;_0x2cedb8=0xc8;}else{_0x2cedb8=0xce;}_0x4ce384[_0x682a('0x1c')](_0x2cedb8);return _0x4ce384['set'](_0x682a('0x21'),_0x17f669+'-'+_0x575f1b+'/'+_0x148cd2)[_0x682a('0x22')](_0x17c273);}return null;};}function patchUpdates(_0x2a64cf){return function(_0x126727){try{jsonpatch['apply'](_0x126727,_0x2a64cf,!![]);}catch(_0x48d412){return BPromise[_0x682a('0x23')](_0x48d412);}return _0x126727['save']();};}function saveUpdates(_0x5d5263,_0x44ae90){return function(_0x376307){if(_0x376307){return _0x376307[_0x682a('0x24')](_0x5d5263)[_0x682a('0x25')](function(_0x3c64a4){return _0x3c64a4;});}return null;};}function removeEntity(_0x182eab,_0x20f0c0){return function(_0x431209){if(_0x431209){return _0x431209[_0x682a('0x26')]()[_0x682a('0x25')](function(){_0x182eab[_0x682a('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x512f94,_0x5b2b34){return function(_0x22c101){if(!_0x22c101){_0x512f94['sendStatus'](0x194);}return _0x22c101;};}function handleError(_0x3e28cb,_0x170a21){_0x170a21=_0x170a21||0x1f4;return function(_0xfb03e0){logger[_0x682a('0x27')](_0xfb03e0[_0x682a('0x28')]);if(_0xfb03e0['name']){delete _0xfb03e0['name'];}_0x3e28cb['status'](_0x170a21)[_0x682a('0x29')](_0xfb03e0);};}exports[_0x682a('0x2a')]=function(_0x434c17,_0x51dd8c){var _0x45042e={},_0x119ea7={},_0x8aaf09={'count':0x0,'rows':[]};var _0x343cd8=_['map'](db[_0x682a('0x2b')][_0x682a('0x2c')],function(_0x58f17a){return{'name':_0x58f17a[_0x682a('0x2d')],'type':_0x58f17a['type'][_0x682a('0x2e')]};});_0x119ea7['model']=_[_0x682a('0x2f')](_0x343cd8,_0x682a('0x30'));_0x119ea7[_0x682a('0x31')]=_[_0x682a('0x32')](_0x434c17[_0x682a('0x31')]);_0x119ea7[_0x682a('0x33')]=_[_0x682a('0x34')](_0x119ea7[_0x682a('0x35')],_0x119ea7[_0x682a('0x31')]);_0x45042e[_0x682a('0x36')]=_[_0x682a('0x34')](_0x119ea7[_0x682a('0x35')],qs[_0x682a('0x37')](_0x434c17[_0x682a('0x31')]['fields']));_0x45042e['attributes']=_0x45042e[_0x682a('0x36')][_0x682a('0x38')]?_0x45042e[_0x682a('0x36')]:_0x119ea7['model'];if(!_0x434c17[_0x682a('0x31')][_0x682a('0x39')](_0x682a('0x3a'))){_0x45042e[_0x682a('0x3b')]=qs[_0x682a('0x3b')](_0x434c17[_0x682a('0x31')][_0x682a('0x3b')]);_0x45042e[_0x682a('0x1e')]=qs[_0x682a('0x1e')](_0x434c17[_0x682a('0x31')]['offset']);}_0x45042e[_0x682a('0x3c')]=qs[_0x682a('0x3d')](_0x434c17[_0x682a('0x31')][_0x682a('0x3d')]);_0x45042e[_0x682a('0x3e')]=qs[_0x682a('0x33')](_[_0x682a('0x3f')](_0x434c17['query'],_0x119ea7[_0x682a('0x33')]),_0x343cd8);if(_0x434c17[_0x682a('0x31')][_0x682a('0x40')]){_0x45042e[_0x682a('0x3e')]=_[_0x682a('0x41')](_0x45042e[_0x682a('0x3e')],{'$or':_[_0x682a('0x2f')](_0x343cd8,function(_0x343deb){if(_0x343deb[_0x682a('0x42')]!==_0x682a('0x43')){var _0xdc8c78={};_0xdc8c78[_0x343deb[_0x682a('0x30')]]={'$like':'%'+_0x434c17['query'][_0x682a('0x40')]+'%'};return _0xdc8c78;}})});}_0x45042e=_[_0x682a('0x41')]({},_0x45042e,_0x434c17[_0x682a('0x44')]);var _0x17e83d={'where':_0x45042e['where']};return db[_0x682a('0x2b')][_0x682a('0x20')](_0x17e83d)[_0x682a('0x25')](function(_0xe5b51f){_0x8aaf09['count']=_0xe5b51f;if(_0x434c17[_0x682a('0x31')][_0x682a('0x45')]){_0x45042e[_0x682a('0x46')]=[{'all':!![]}];}return db[_0x682a('0x2b')][_0x682a('0x47')](_0x45042e);})[_0x682a('0x25')](function(_0x3121e5){_0x8aaf09[_0x682a('0x48')]=_0x3121e5;return _0x8aaf09;})[_0x682a('0x25')](respondWithFilteredResult(_0x51dd8c,_0x45042e))[_0x682a('0x49')](handleError(_0x51dd8c,null));};exports[_0x682a('0x4a')]=function(_0x4df75c,_0x1e41bd){var _0x5c742e={'raw':![],'where':{'id':_0x4df75c[_0x682a('0x4b')]['id']}},_0x37867b={};_0x37867b[_0x682a('0x35')]=_[_0x682a('0x32')](db['ServicenowAccount']['rawAttributes']);_0x37867b['query']=_[_0x682a('0x32')](_0x4df75c[_0x682a('0x31')]);_0x37867b[_0x682a('0x33')]=_[_0x682a('0x34')](_0x37867b[_0x682a('0x35')],_0x37867b['query']);_0x5c742e[_0x682a('0x36')]=_[_0x682a('0x34')](_0x37867b['model'],qs[_0x682a('0x37')](_0x4df75c[_0x682a('0x31')][_0x682a('0x37')]));_0x5c742e[_0x682a('0x36')]=_0x5c742e['attributes'][_0x682a('0x38')]?_0x5c742e[_0x682a('0x36')]:_0x37867b[_0x682a('0x35')];if(_0x4df75c[_0x682a('0x31')][_0x682a('0x45')]){_0x5c742e[_0x682a('0x46')]=[{'all':!![]}];}_0x5c742e=_[_0x682a('0x41')]({},_0x5c742e,_0x4df75c[_0x682a('0x44')]);return db[_0x682a('0x2b')][_0x682a('0x4c')](_0x5c742e)[_0x682a('0x25')](handleEntityNotFound(_0x1e41bd,null))['then'](respondWithResult(_0x1e41bd,null))['catch'](handleError(_0x1e41bd,null));};exports[_0x682a('0x4d')]=function(_0xb21e62,_0x4519cc){return db[_0x682a('0x2b')]['create'](_0xb21e62[_0x682a('0x4e')],{})[_0x682a('0x25')](respondWithResult(_0x4519cc,0xc9))[_0x682a('0x49')](handleError(_0x4519cc,null));};exports[_0x682a('0x24')]=function(_0x449996,_0x2e4ee3){if(_0x449996['body']['id']){delete _0x449996[_0x682a('0x4e')]['id'];}return db[_0x682a('0x2b')]['find']({'where':{'id':_0x449996[_0x682a('0x4b')]['id']}})[_0x682a('0x25')](handleEntityNotFound(_0x2e4ee3,null))[_0x682a('0x25')](saveUpdates(_0x449996[_0x682a('0x4e')],null))['then'](respondWithResult(_0x2e4ee3,null))[_0x682a('0x49')](handleError(_0x2e4ee3,null));};exports[_0x682a('0x26')]=function(_0x47a302,_0x162638){return db[_0x682a('0x2b')]['find']({'where':{'id':_0x47a302[_0x682a('0x4b')]['id']}})[_0x682a('0x25')](handleEntityNotFound(_0x162638,null))['then'](removeEntity(_0x162638,null))[_0x682a('0x49')](handleError(_0x162638,null));};exports[_0x682a('0x4f')]=function(_0x342c48,_0x14dc32,_0x5c7221){var _0x2b54ed={};var _0x2b2b8a={};var _0x462ee0;var _0x580f83;return db[_0x682a('0x2b')][_0x682a('0x50')]({'where':{'id':_0x342c48[_0x682a('0x4b')]['id']}})[_0x682a('0x25')](handleEntityNotFound(_0x14dc32,null))[_0x682a('0x25')](function(_0x37072e){if(_0x37072e){_0x462ee0=_0x37072e;_0x2b2b8a[_0x682a('0x35')]=_[_0x682a('0x32')](db['ServicenowConfiguration']['rawAttributes']);_0x2b2b8a[_0x682a('0x31')]=_[_0x682a('0x32')](_0x342c48[_0x682a('0x31')]);_0x2b2b8a[_0x682a('0x33')]=_[_0x682a('0x34')](_0x2b2b8a[_0x682a('0x35')],_0x2b2b8a[_0x682a('0x31')]);_0x2b54ed['attributes']=_[_0x682a('0x34')](_0x2b2b8a[_0x682a('0x35')],qs[_0x682a('0x37')](_0x342c48['query']['fields']));_0x2b54ed[_0x682a('0x36')]=_0x2b54ed[_0x682a('0x36')][_0x682a('0x38')]?_0x2b54ed[_0x682a('0x36')]:_0x2b2b8a[_0x682a('0x35')];_0x2b54ed[_0x682a('0x3c')]=qs[_0x682a('0x3d')](_0x342c48[_0x682a('0x31')][_0x682a('0x3d')]);_0x2b54ed[_0x682a('0x3e')]=qs[_0x682a('0x33')](_[_0x682a('0x3f')](_0x342c48['query'],_0x2b2b8a['filters']));if(_0x342c48[_0x682a('0x31')][_0x682a('0x40')]){_0x2b54ed[_0x682a('0x3e')]=_[_0x682a('0x41')](_0x2b54ed[_0x682a('0x3e')],{'$or':_[_0x682a('0x2f')](_0x2b54ed[_0x682a('0x36')],function(_0x442b0b){var _0x11044e={};_0x11044e[_0x442b0b]={'$like':'%'+_0x342c48[_0x682a('0x31')][_0x682a('0x40')]+'%'};return _0x11044e;})});}_0x2b54ed=_[_0x682a('0x41')]({},_0x2b54ed,_0x342c48[_0x682a('0x44')]);return _0x462ee0[_0x682a('0x4f')](_0x2b54ed);}})[_0x682a('0x25')](function(_0x28faf1){if(_0x28faf1){_0x580f83=_0x28faf1[_0x682a('0x38')];if(!_0x342c48['query']['hasOwnProperty']('nolimit')){_0x2b54ed[_0x682a('0x3b')]=qs[_0x682a('0x3b')](_0x342c48[_0x682a('0x31')]['limit']);_0x2b54ed[_0x682a('0x1e')]=qs['offset'](_0x342c48['query'][_0x682a('0x1e')]);}return _0x462ee0[_0x682a('0x4f')](_0x2b54ed);}})[_0x682a('0x25')](function(_0x293947){if(_0x293947){return _0x293947?{'count':_0x580f83,'rows':_0x293947}:null;}})[_0x682a('0x25')](respondWithResult(_0x14dc32,null))[_0x682a('0x49')](handleError(_0x14dc32,null));};exports[_0x682a('0x51')]=function(_0x2eb537,_0x444c10,_0x409e9a){if(_0x2eb537[_0x682a('0x4e')]['id']){delete _0x2eb537['body']['id'];}return db[_0x682a('0x2b')][_0x682a('0x50')]({'where':{'id':_0x2eb537[_0x682a('0x4b')]['id']}})[_0x682a('0x25')](handleEntityNotFound(_0x444c10,null))[_0x682a('0x25')](function(_0x35f8da){if(_0x35f8da){_0x2eb537[_0x682a('0x4e')][_0x682a('0x52')]=_0x35f8da['id'];_0x2eb537[_0x682a('0x4e')][_0x682a('0x53')]=integrations[_0x682a('0x54')](_0x2eb537[_0x682a('0x4e')][_0x682a('0x55')],_0x2eb537[_0x682a('0x4e')]['type']);_0x2eb537[_0x682a('0x4e')][_0x682a('0x56')]=integrations[_0x682a('0x57')](_0x2eb537['body'][_0x682a('0x55')],_0x2eb537[_0x682a('0x4e')][_0x682a('0x42')]);return db['ServicenowConfiguration']['create'](_0x2eb537['body'],{'include':[{'model':db[_0x682a('0x58')],'as':_0x682a('0x53')},{'model':db['ServicenowField'],'as':'Descriptions'}]});}return null;})[_0x682a('0x25')](respondWithResult(_0x444c10,null))[_0x682a('0x49')](handleError(_0x444c10,null));};exports[_0x682a('0x59')]=function(_0x13e8a3,_0x459e20,_0x1fc46c){var _0x15bb0b=[_0x682a('0x5a'),'hold_reason',_0x682a('0x5b'),_0x682a('0x5c'),_0x682a('0x5d'),_0x682a('0x5e'),_0x682a('0x5f'),_0x682a('0x60'),_0x682a('0x61')];var _0x4d8744=['parent',_0x682a('0x5a'),_0x682a('0x62'),_0x682a('0x63'),_0x682a('0x64'),_0x682a('0x65'),'child_incidents',_0x682a('0x66'),'approval_history',_0x682a('0x67'),_0x682a('0x68'),'sys_updated_by',_0x682a('0x69'),_0x682a('0x6a'),_0x682a('0x6b'),'sys_domain','state','sys_created_by','knowledge',_0x682a('0x3c'),_0x682a('0x6c'),_0x682a('0x6d'),'cmdb_ci',_0x682a('0x6e'),_0x682a('0x6f'),_0x682a('0x70'),_0x682a('0x71'),_0x682a('0x72'),_0x682a('0x73'),'sys_domain_path',_0x682a('0x74'),_0x682a('0x75'),'expected_start',_0x682a('0x76'),_0x682a('0x77'),_0x682a('0x78'),'work_end',_0x682a('0x79'),_0x682a('0x7a'),_0x682a('0x7b'),_0x682a('0x7c'),_0x682a('0x5c'),'work_notes',_0x682a('0x7d'),_0x682a('0x5d'),_0x682a('0x7e'),_0x682a('0x7f'),'work_start','assignment_group','business_stc','additional_assignee_list','description','calendar_duration',_0x682a('0x5e'),_0x682a('0x80'),_0x682a('0x81'),_0x682a('0x82'),_0x682a('0x83'),_0x682a('0x84'),'sys_id',_0x682a('0x85'),_0x682a('0x86'),'incident_state','urgency',_0x682a('0x87'),_0x682a('0x88'),'reassignment_count',_0x682a('0x89'),_0x682a('0x8a'),'severity',_0x682a('0x8b'),_0x682a('0x8c'),_0x682a('0x8d'),_0x682a('0x8e'),_0x682a('0x8f'),_0x682a('0x90'),'reopen_count',_0x682a('0x91'),_0x682a('0x92'),_0x682a('0x93'),_0x682a('0x94'),_0x682a('0x95'),_0x682a('0x61')];var _0x1a34e8='';var _0x4ee18d='';var _0x4d7620=[];var _0x45cb54='';var _0x4a0c28='';var _0x327498=[];var _0x926243='';var _0x8a41ce='';var _0x596e0b={};var _0x475a24='';return db[_0x682a('0x2b')][_0x682a('0x50')]({'where':{'id':_0x13e8a3[_0x682a('0x4b')]['id']},'attributes':['id',_0x682a('0x96'),_0x682a('0x97'),_0x682a('0x98'),_0x682a('0x99'),_0x682a('0x9a')]})['then'](handleEntityNotFound(_0x459e20,null))[_0x682a('0x25')](function(_0x38c02e){if(_0x38c02e){_0x475a24=_0x38c02e[_0x682a('0x99')];var _0x18557b=_0x475a24[_0x682a('0x9b')](-0x1);if(_0x18557b==='/'){_0x475a24=_0x475a24[_0x682a('0x9c')](0x0,_0x475a24[_0x682a('0x9d')](_0x18557b));}_0x8a41ce=util[_0x682a('0x9e')](_0x682a('0x9f'),_0x475a24);_0x926243=util[_0x682a('0x9e')](_0x682a('0xa0'),_0x475a24);_0x596e0b={'user':_0x38c02e[_0x682a('0x96')],'pass':_0x38c02e[_0x682a('0x97')]};var _0x340013={'method':_0x682a('0xa1'),'uri':_0x8a41ce+_0x682a('0xa2'),'auth':_0x596e0b,'json':!![]};return rp(_0x340013);}})[_0x682a('0x25')](function(_0x207b23){if(_0x207b23[_0x682a('0xa3')][_0x682a('0x38')]>0x0){_0x1a34e8=_0x207b23[_0x682a('0xa3')];}console['log'](_0x682a('0xa4'),_0x1a34e8);_0x327498=[];_0x4ee18d=Object['assign']([],_0x1a34e8);_['remove'](_0x4ee18d,function(_0x5490f3){return!_0x15bb0b['includes'](_0x5490f3[_0x682a('0x30')]);});_0x4ee18d[_0x682a('0xa5')](function(_0x5aa6ea){var _0x23432d=createFieldObject(_0x926243,_0x596e0b,_0x5aa6ea['internalType'],_0x5aa6ea['name'],_0x5aa6ea['label'],![]);_0x327498['push'](_0x23432d);});return Promise[_0x682a('0xa6')](_0x327498);})[_0x682a('0x25')](function(_0x193d6a){_0x4d7620=_0x193d6a;_0x45cb54=Object[_0x682a('0xa7')]([],_0x1a34e8);console[_0x682a('0xa8')](_0x682a('0xa9'),_0x1a34e8);_['remove'](_0x45cb54,function(_0x30457f){return _0x4d8744['includes'](_0x30457f['name']);});console[_0x682a('0xa8')](_0x682a('0xaa'),_0x45cb54);_0x327498=[];_0x45cb54[_0x682a('0xa5')](function(_0xbd0db0){var _0x37f541=createFieldObject(_0x926243,_0x596e0b,_0xbd0db0[_0x682a('0xab')],_0xbd0db0[_0x682a('0x30')],_0xbd0db0[_0x682a('0xac')],!![]);_0x327498[_0x682a('0xad')](_0x37f541);});return Promise[_0x682a('0xa6')](_0x327498);})[_0x682a('0x25')](function(_0x414512){_0x4a0c28=_0x414512;var _0x57d17e=_0x4d7620['concat'](_0x4a0c28);return{'count':_0x57d17e['length'],'rows':_0x57d17e};})[_0x682a('0x25')](respondWithResult(_0x459e20,null))[_0x682a('0x49')](function(_0x4fae46){console[_0x682a('0xa8')](_0x682a('0xae')+_0x4fae46);var _0x440561=_0x13e8a3['query'][_0x682a('0xaf')]?0x1f4:_0x4fae46[_0x682a('0xb0')]||0x1f4;logger['error'](_0x4fae46[_0x682a('0x28')]);delete _0x4fae46['name'];if(_0x440561===0x191){_0x440561=0x190;}_0x459e20[_0x682a('0x1c')](_0x440561)[_0x682a('0x29')](_0x13e8a3[_0x682a('0x31')][_0x682a('0xaf')]?{'message':_0x682a('0xb1'),'statusCode':_0x4fae46['statusCode']}:_0x4fae46);});};function createFieldObject(_0x431ffe,_0x5150a1,_0x2ae897,_0x1be34c,_0x4c87aa,_0x2fdb8c){return new Promise(function(_0x249cc3,_0x3db1ed){var _0x6a67bd={'id':_0x1be34c,'name':_0x4c87aa,'custom':_0x2fdb8c};if(_0x2ae897===_0x682a('0xb2')){_0x6a67bd[_0x682a('0x44')]=[{'name':_0x682a('0xb3'),'value':_0x682a('0xb4')},{'name':_0x682a('0xb5'),'value':_0x682a('0xb6')}];_0x249cc3(_0x6a67bd);}else{var _0x29f856={'method':_0x682a('0xa1'),'uri':_0x431ffe+_0x682a('0xb7')+_0x1be34c,'auth':_0x5150a1,'json':!![]};return rp(_0x29f856)[_0x682a('0x25')](function(_0x3d4108){var _0x4a614d=[];if(_0x3d4108[_0x682a('0xa3')][_0x682a('0x38')]>0x0){_0x3d4108['result'][_0x682a('0xa5')](function(_0x57c291){if(_0x57c291['inactive']===_0x682a('0xb6')){var _0x47fda5={'name':_0x57c291[_0x682a('0xac')],'value':_0x57c291[_0x682a('0xb8')]};_0x4a614d['push'](_0x47fda5);}});}_0x6a67bd[_0x682a('0x44')]=_0x4a614d;if(_0x6a67bd[_0x682a('0x44')]['length']>0x0){_0x249cc3(_0x6a67bd);}else{if(_0x2fdb8c==![]){_0x249cc3();}else{_0x249cc3(_0x6a67bd);}}});}});}
\ No newline at end of file
index 5177d27..118665e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71ab=['path','rimraf','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration','exports','define','ServicenowAccount','int_servicenow_accounts','util','api','bluebird','request-promise'];(function(_0xe1650,_0x158a86){var _0x365799=function(_0x5dda62){while(--_0x5dda62){_0xe1650['push'](_0xe1650['shift']());}};_0x365799(++_0x158a86);}(_0x71ab,0x64));var _0xb71a=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x71ab[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require('lodash');var util=require(_0xb71a('0x0'));var logger=require('../../config/logger')(_0xb71a('0x1'));var moment=require('moment');var BPromise=require(_0xb71a('0x2'));var rp=require(_0xb71a('0x3'));var fs=require('fs');var path=require(_0xb71a('0x4'));var rimraf=require(_0xb71a('0x5'));var config=require(_0xb71a('0x6'));var attributes=require(_0xb71a('0x7'));var integrations=require(_0xb71a('0x8'));module[_0xb71a('0x9')]=function(_0x22c072,_0x35a84e){return _0x22c072[_0xb71a('0xa')](_0xb71a('0xb'),attributes,{'tableName':_0xb71a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x687b=['./intServicenowAccount.attributes','../../components/integrations/configuration','exports','define','int_servicenow_accounts','lodash','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment'];(function(_0x195ae8,_0x53a465){var _0x26f260=function(_0x4c3ed0){while(--_0x4c3ed0){_0x195ae8['push'](_0x195ae8['shift']());}};_0x26f260(++_0x53a465);}(_0x687b,0x14a));var _0xb687=function(_0x4c894b,_0x54fa91){_0x4c894b=_0x4c894b-0x0;var _0x490258=_0x687b[_0x4c894b];return _0x490258;};'use strict';var _=require(_0xb687('0x0'));var util=require(_0xb687('0x1'));var logger=require(_0xb687('0x2'))(_0xb687('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xb687('0x4'));var fs=require('fs');var path=require(_0xb687('0x5'));var rimraf=require(_0xb687('0x6'));var config=require(_0xb687('0x7'));var attributes=require(_0xb687('0x8'));var integrations=require(_0xb687('0x9'));module[_0xb687('0xa')]=function(_0xf43a1f,_0x47ffea){return _0xf43a1f[_0xb687('0xb')]('ServicenowAccount',attributes,{'tableName':_0xb687('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b41bf2f..4b92ab4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4520=['then','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','ServicenowAccount,\x20%s,\x20%s','request\x20sent','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','error','message','info','result','catch','GetServicenowAccount','options','raw','where','attributes','limit','include','map','model','stringify','ShowServicenowAccount','find'];(function(_0x349d46,_0x224056){var _0x33456e=function(_0x53c027){while(--_0x53c027){_0x349d46['push'](_0x349d46['shift']());}};_0x33456e(++_0x224056);}(_0x4520,0x12a));var _0x0452=function(_0x3c9310,_0x58f0c7){_0x3c9310=_0x3c9310-0x0;var _0x24e56c=_0x4520[_0x3c9310];return _0x24e56c;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x0452('0x0'));var BPromise=require('bluebird');var rs=require(_0x0452('0x1'));var fs=require('fs');var Redis=require(_0x0452('0x2'));var db=require(_0x0452('0x3'))['db'];var utils=require(_0x0452('0x4'));var logger=require(_0x0452('0x5'))(_0x0452('0x6'));var config=require(_0x0452('0x7'));var jayson=require(_0x0452('0x8'));var client=jayson['client'][_0x0452('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xc314d8,_0xf13181,_0x3ce0de){return new BPromise(function(_0x40a7fb,_0x413e31){return client[_0x0452('0xa')](_0xc314d8,_0x3ce0de)['then'](function(_0x2253ab){logger['info'](_0x0452('0xb'),_0xf13181,_0x0452('0xc'));logger[_0x0452('0xd')](_0x0452('0xe'),_0xf13181,_0x0452('0xc'),JSON['stringify'](_0x2253ab));if(_0x2253ab[_0x0452('0xf')]){if(_0x2253ab[_0x0452('0xf')]['code']===0x1f4){logger['error'](_0x0452('0xb'),_0xf13181,_0x2253ab[_0x0452('0xf')][_0x0452('0x10')]);return _0x413e31(_0x2253ab[_0x0452('0xf')]['message']);}logger[_0x0452('0xf')]('ServicenowAccount,\x20%s,\x20%s',_0xf13181,_0x2253ab[_0x0452('0xf')][_0x0452('0x10')]);return _0x40a7fb(_0x2253ab[_0x0452('0xf')][_0x0452('0x10')]);}else{logger[_0x0452('0x11')]('ServicenowAccount,\x20%s,\x20%s',_0xf13181,'request\x20sent');_0x40a7fb(_0x2253ab[_0x0452('0x12')]['message']);}})[_0x0452('0x13')](function(_0x27cd43){logger['error'](_0x0452('0xb'),_0xf13181,_0x27cd43);_0x413e31(_0x27cd43);});});}exports[_0x0452('0x14')]=function(_0x3397e7){var _0x518c53=this;return new Promise(function(_0x2cff49,_0xe0bf7c){return db['ServicenowAccount']['findAll']({'raw':_0x3397e7[_0x0452('0x15')]?_0x3397e7[_0x0452('0x15')][_0x0452('0x16')]===undefined?!![]:![]:!![],'where':_0x3397e7[_0x0452('0x15')]?_0x3397e7['options'][_0x0452('0x17')]||null:null,'attributes':_0x3397e7[_0x0452('0x15')]?_0x3397e7[_0x0452('0x15')][_0x0452('0x18')]||null:null,'limit':_0x3397e7[_0x0452('0x15')]?_0x3397e7[_0x0452('0x15')][_0x0452('0x19')]||null:null,'include':_0x3397e7[_0x0452('0x15')]?_0x3397e7['options'][_0x0452('0x1a')]?_[_0x0452('0x1b')](_0x3397e7['options'][_0x0452('0x1a')],function(_0x238b56){return{'model':db[_0x238b56['model']],'as':_0x238b56['as'],'attributes':_0x238b56[_0x0452('0x18')],'include':_0x238b56[_0x0452('0x1a')]?_[_0x0452('0x1b')](_0x238b56[_0x0452('0x1a')],function(_0x4f2eae){return{'model':db[_0x4f2eae[_0x0452('0x1c')]],'as':_0x4f2eae['as'],'attributes':_0x4f2eae[_0x0452('0x18')],'include':_0x4f2eae[_0x0452('0x1a')]?_[_0x0452('0x1b')](_0x4f2eae['include'],function(_0x25e358){return{'model':db[_0x25e358[_0x0452('0x1c')]],'as':_0x25e358['as'],'attributes':_0x25e358[_0x0452('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x14e6ee){logger[_0x0452('0x11')](_0x0452('0x14'),_0x3397e7);logger[_0x0452('0xd')](_0x0452('0x14'),_0x3397e7,JSON[_0x0452('0x1d')](_0x14e6ee));_0x2cff49(_0x14e6ee);})[_0x0452('0x13')](function(_0x507cde){logger[_0x0452('0xf')](_0x0452('0x14'),_0x507cde[_0x0452('0x10')],_0x3397e7);_0xe0bf7c(_0x518c53[_0x0452('0xf')](0x1f4,_0x507cde[_0x0452('0x10')]));});});};exports[_0x0452('0x1e')]=function(_0x45b1b6){var _0x6020e3=this;return new Promise(function(_0x542be8,_0x267cf6){return db['ServicenowAccount'][_0x0452('0x1f')]({'raw':_0x45b1b6[_0x0452('0x15')]?_0x45b1b6[_0x0452('0x15')][_0x0452('0x16')]===undefined?!![]:![]:!![],'where':_0x45b1b6[_0x0452('0x15')]?_0x45b1b6[_0x0452('0x15')][_0x0452('0x17')]||null:null,'attributes':_0x45b1b6[_0x0452('0x15')]?_0x45b1b6[_0x0452('0x15')][_0x0452('0x18')]||null:null,'include':_0x45b1b6['options']?_0x45b1b6[_0x0452('0x15')][_0x0452('0x1a')]?_[_0x0452('0x1b')](_0x45b1b6[_0x0452('0x15')][_0x0452('0x1a')],function(_0x378366){return{'model':db[_0x378366['model']],'as':_0x378366['as'],'attributes':_0x378366[_0x0452('0x18')],'include':_0x378366[_0x0452('0x1a')]?_[_0x0452('0x1b')](_0x378366[_0x0452('0x1a')],function(_0xc927dc){return{'model':db[_0xc927dc[_0x0452('0x1c')]],'as':_0xc927dc['as'],'attributes':_0xc927dc[_0x0452('0x18')],'include':_0xc927dc['include']?_['map'](_0xc927dc[_0x0452('0x1a')],function(_0x981b36){return{'model':db[_0x981b36[_0x0452('0x1c')]],'as':_0x981b36['as'],'attributes':_0x981b36[_0x0452('0x18')]};}):[]};}):[]};}):[]:[]})[_0x0452('0x20')](function(_0x55a14b){logger['info']('ShowServicenowAccount',_0x45b1b6);logger[_0x0452('0xd')](_0x0452('0x1e'),_0x45b1b6,JSON[_0x0452('0x1d')](_0x55a14b));_0x542be8(_0x55a14b);})[_0x0452('0x13')](function(_0x416fea){logger['error']('ShowServicenowAccount',_0x416fea['message'],_0x45b1b6);_0x267cf6(_0x6020e3[_0x0452('0xf')](0x1f4,_0x416fea[_0x0452('0x10')]));});});};
\ No newline at end of file
+var _0xae3d=['attributes','then','ShowServicenowAccount','find','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','ServicenowAccount,\x20%s,\x20%s','request\x20sent','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetServicenowAccount','ServicenowAccount','findAll','options','raw','where','limit','include','map','model'];(function(_0x5a2818,_0x49ccf7){var _0x303d9d=function(_0x5a9b7e){while(--_0x5a9b7e){_0x5a2818['push'](_0x5a2818['shift']());}};_0x303d9d(++_0x49ccf7);}(_0xae3d,0x12c));var _0xdae3=function(_0x456fb1,_0x859a1d){_0x456fb1=_0x456fb1-0x0;var _0x4083d6=_0xae3d[_0x456fb1];return _0x4083d6;};'use strict';var _=require(_0xdae3('0x0'));var util=require(_0xdae3('0x1'));var moment=require(_0xdae3('0x2'));var BPromise=require(_0xdae3('0x3'));var rs=require(_0xdae3('0x4'));var fs=require('fs');var Redis=require(_0xdae3('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xdae3('0x6'));var logger=require(_0xdae3('0x7'))(_0xdae3('0x8'));var config=require(_0xdae3('0x9'));var jayson=require(_0xdae3('0xa'));var client=jayson[_0xdae3('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2d8b42,_0x55ae8d,_0x4166dd){return new BPromise(function(_0x182498,_0x350ad9){return client['request'](_0x2d8b42,_0x4166dd)['then'](function(_0x275236){logger[_0xdae3('0xc')](_0xdae3('0xd'),_0x55ae8d,_0xdae3('0xe'));logger[_0xdae3('0xf')](_0xdae3('0x10'),_0x55ae8d,_0xdae3('0xe'),JSON[_0xdae3('0x11')](_0x275236));if(_0x275236[_0xdae3('0x12')]){if(_0x275236['error'][_0xdae3('0x13')]===0x1f4){logger[_0xdae3('0x12')](_0xdae3('0xd'),_0x55ae8d,_0x275236[_0xdae3('0x12')][_0xdae3('0x14')]);return _0x350ad9(_0x275236['error'][_0xdae3('0x14')]);}logger[_0xdae3('0x12')](_0xdae3('0xd'),_0x55ae8d,_0x275236['error'][_0xdae3('0x14')]);return _0x182498(_0x275236['error'][_0xdae3('0x14')]);}else{logger[_0xdae3('0xc')](_0xdae3('0xd'),_0x55ae8d,_0xdae3('0xe'));_0x182498(_0x275236[_0xdae3('0x15')][_0xdae3('0x14')]);}})[_0xdae3('0x16')](function(_0x415ce3){logger[_0xdae3('0x12')](_0xdae3('0xd'),_0x55ae8d,_0x415ce3);_0x350ad9(_0x415ce3);});});}exports[_0xdae3('0x17')]=function(_0x4165a5){var _0x13fa43=this;return new Promise(function(_0x16aa45,_0x26484c){return db[_0xdae3('0x18')][_0xdae3('0x19')]({'raw':_0x4165a5[_0xdae3('0x1a')]?_0x4165a5[_0xdae3('0x1a')][_0xdae3('0x1b')]===undefined?!![]:![]:!![],'where':_0x4165a5[_0xdae3('0x1a')]?_0x4165a5[_0xdae3('0x1a')][_0xdae3('0x1c')]||null:null,'attributes':_0x4165a5[_0xdae3('0x1a')]?_0x4165a5['options']['attributes']||null:null,'limit':_0x4165a5['options']?_0x4165a5['options'][_0xdae3('0x1d')]||null:null,'include':_0x4165a5[_0xdae3('0x1a')]?_0x4165a5[_0xdae3('0x1a')][_0xdae3('0x1e')]?_[_0xdae3('0x1f')](_0x4165a5['options'][_0xdae3('0x1e')],function(_0x922746){return{'model':db[_0x922746[_0xdae3('0x20')]],'as':_0x922746['as'],'attributes':_0x922746[_0xdae3('0x21')],'include':_0x922746['include']?_[_0xdae3('0x1f')](_0x922746['include'],function(_0x14293){return{'model':db[_0x14293[_0xdae3('0x20')]],'as':_0x14293['as'],'attributes':_0x14293[_0xdae3('0x21')],'include':_0x14293['include']?_[_0xdae3('0x1f')](_0x14293[_0xdae3('0x1e')],function(_0xde5f1c){return{'model':db[_0xde5f1c['model']],'as':_0xde5f1c['as'],'attributes':_0xde5f1c[_0xdae3('0x21')]};}):[]};}):[]};}):[]:[]})[_0xdae3('0x22')](function(_0x2a8a8c){logger[_0xdae3('0xc')](_0xdae3('0x17'),_0x4165a5);logger[_0xdae3('0xf')](_0xdae3('0x17'),_0x4165a5,JSON[_0xdae3('0x11')](_0x2a8a8c));_0x16aa45(_0x2a8a8c);})[_0xdae3('0x16')](function(_0x5ce09f){logger['error'](_0xdae3('0x17'),_0x5ce09f[_0xdae3('0x14')],_0x4165a5);_0x26484c(_0x13fa43[_0xdae3('0x12')](0x1f4,_0x5ce09f[_0xdae3('0x14')]));});});};exports[_0xdae3('0x23')]=function(_0x126367){var _0x394ed4=this;return new Promise(function(_0x517407,_0x51ca03){return db[_0xdae3('0x18')][_0xdae3('0x24')]({'raw':_0x126367['options']?_0x126367['options'][_0xdae3('0x1b')]===undefined?!![]:![]:!![],'where':_0x126367['options']?_0x126367[_0xdae3('0x1a')][_0xdae3('0x1c')]||null:null,'attributes':_0x126367[_0xdae3('0x1a')]?_0x126367[_0xdae3('0x1a')][_0xdae3('0x21')]||null:null,'include':_0x126367['options']?_0x126367[_0xdae3('0x1a')][_0xdae3('0x1e')]?_[_0xdae3('0x1f')](_0x126367[_0xdae3('0x1a')][_0xdae3('0x1e')],function(_0x20ca88){return{'model':db[_0x20ca88[_0xdae3('0x20')]],'as':_0x20ca88['as'],'attributes':_0x20ca88['attributes'],'include':_0x20ca88['include']?_['map'](_0x20ca88['include'],function(_0x409f40){return{'model':db[_0x409f40['model']],'as':_0x409f40['as'],'attributes':_0x409f40['attributes'],'include':_0x409f40[_0xdae3('0x1e')]?_['map'](_0x409f40['include'],function(_0x28b47f){return{'model':db[_0x28b47f[_0xdae3('0x20')]],'as':_0x28b47f['as'],'attributes':_0x28b47f['attributes']};}):[]};}):[]};}):[]:[]})[_0xdae3('0x22')](function(_0xd77629){logger[_0xdae3('0xc')]('ShowServicenowAccount',_0x126367);logger[_0xdae3('0xf')](_0xdae3('0x23'),_0x126367,JSON[_0xdae3('0x11')](_0xd77629));_0x517407(_0xd77629);})[_0xdae3('0x16')](function(_0x272dc9){logger[_0xdae3('0x12')](_0xdae3('0x23'),_0x272dc9[_0xdae3('0x14')],_0x126367);_0x51ca03(_0x394ed4[_0xdae3('0x12')](0x1f4,_0x272dc9['message']));});});};
\ No newline at end of file
index f845c02..1b52594 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe76=['./intServicenowConfiguration.controller','index','get','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','update','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x38128e,_0x5ee4de){var _0x4abcf4=function(_0x2aea40){while(--_0x2aea40){_0x38128e['push'](_0x38128e['shift']());}};_0x4abcf4(++_0x5ee4de);}(_0xbe76,0x149));var _0x6be7=function(_0x21f9c2,_0x2b3d2a){_0x21f9c2=_0x21f9c2-0x0;var _0x3da17f=_0xbe76[_0x21f9c2];return _0x3da17f;};'use strict';var multer=require('multer');var util=require(_0x6be7('0x0'));var path=require(_0x6be7('0x1'));var timeout=require(_0x6be7('0x2'));var express=require(_0x6be7('0x3'));var router=express[_0x6be7('0x4')]();var fs_extra=require(_0x6be7('0x5'));var auth=require(_0x6be7('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x6be7('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x6be7('0x8')]);router[_0x6be7('0x9')](_0x6be7('0xa'),auth[_0x6be7('0xb')](),controller[_0x6be7('0xc')]);router['get'](_0x6be7('0xd'),auth[_0x6be7('0xb')](),controller[_0x6be7('0xe')]);router[_0x6be7('0x9')](_0x6be7('0xf'),auth[_0x6be7('0xb')](),controller[_0x6be7('0x10')]);router['get'](_0x6be7('0x11'),auth[_0x6be7('0xb')](),controller[_0x6be7('0x12')]);router[_0x6be7('0x13')]('/',auth[_0x6be7('0xb')](),controller[_0x6be7('0x14')]);router['put'](_0x6be7('0xa'),auth[_0x6be7('0xb')](),controller[_0x6be7('0x15')]);router['delete'](_0x6be7('0xa'),auth[_0x6be7('0xb')](),controller[_0x6be7('0x16')]);module[_0x6be7('0x17')]=router;
\ No newline at end of file
+var _0xdd17=['./intServicenowConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','update','destroy','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x2d819b,_0x321af5){var _0x3799fd=function(_0x50090b){while(--_0x50090b){_0x2d819b['push'](_0x2d819b['shift']());}};_0x3799fd(++_0x321af5);}(_0xdd17,0xb1));var _0x7dd1=function(_0x2badee,_0xa39b95){_0x2badee=_0x2badee-0x0;var _0x3f645c=_0xdd17[_0x2badee];return _0x3f645c;};'use strict';var multer=require('multer');var util=require(_0x7dd1('0x0'));var path=require('path');var timeout=require(_0x7dd1('0x1'));var express=require(_0x7dd1('0x2'));var router=express[_0x7dd1('0x3')]();var fs_extra=require(_0x7dd1('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x7dd1('0x5'));var config=require(_0x7dd1('0x6'));var controller=require(_0x7dd1('0x7'));router[_0x7dd1('0x8')]('/',auth[_0x7dd1('0x9')](),controller[_0x7dd1('0xa')]);router[_0x7dd1('0x8')](_0x7dd1('0xb'),auth[_0x7dd1('0x9')](),controller[_0x7dd1('0xc')]);router['get'](_0x7dd1('0xd'),auth[_0x7dd1('0x9')](),controller[_0x7dd1('0xe')]);router[_0x7dd1('0x8')](_0x7dd1('0xf'),auth[_0x7dd1('0x9')](),controller[_0x7dd1('0x10')]);router[_0x7dd1('0x8')](_0x7dd1('0x11'),auth['isAuthenticated'](),controller[_0x7dd1('0x12')]);router[_0x7dd1('0x13')]('/',auth[_0x7dd1('0x9')](),controller[_0x7dd1('0x14')]);router['put'](_0x7dd1('0xb'),auth[_0x7dd1('0x9')](),controller[_0x7dd1('0x15')]);router['delete'](_0x7dd1('0xb'),auth[_0x7dd1('0x9')](),controller[_0x7dd1('0x16')]);module['exports']=router;
\ No newline at end of file
index 844e991..ac565cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x908d=['STRING','exports'];(function(_0x367abb,_0x30d4da){var _0x3e8d3b=function(_0xf07444){while(--_0xf07444){_0x367abb['push'](_0x367abb['shift']());}};_0x3e8d3b(++_0x30d4da);}(_0x908d,0x10f));var _0xd908=function(_0x51f8cd,_0x59bff3){_0x51f8cd=_0x51f8cd-0x0;var _0x5c1603=_0x908d[_0x51f8cd];return _0x5c1603;};'use strict';var Sequelize=require('sequelize');module[_0xd908('0x0')]={'name':{'type':Sequelize[_0xd908('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x47c0=['STRING','sequelize','exports'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x47c0,0x1a8));var _0x047c=function(_0x4556a0,_0x25f095){_0x4556a0=_0x4556a0-0x0;var _0x21d58c=_0x47c0[_0x4556a0];return _0x21d58c;};'use strict';var Sequelize=require(_0x047c('0x0'));module[_0x047c('0x1')]={'name':{'type':Sequelize[_0x047c('0x2')]},'description':{'type':Sequelize[_0x047c('0x2')]}};
\ No newline at end of file
index c6b57a0..ebb590b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93cb=['rawAttributes','type','key','model','map','keys','query','intersection','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','options','ServicenowConfiguration','includeAll','include','findAll','catch','create','update','body','find','params','destroy','getFields','ServicenowField','hasOwnProperty','getSubjects','getDescriptions','findOne','eml-format','rimraf','request-promise','moment','bluebird','mustache','path','sox','ejs','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','json','offset','undefined','count','limit','status','Content-Range','apply','reject','save','then','error','stack','name','send','index'];(function(_0x2e10fd,_0x360b2c){var _0x512d8f=function(_0x3fb690){while(--_0x3fb690){_0x2e10fd['push'](_0x2e10fd['shift']());}};_0x512d8f(++_0x360b2c);}(_0x93cb,0xc3));var _0xb93c=function(_0x122096,_0x60c295){_0x122096=_0x122096-0x0;var _0x3d1966=_0x93cb[_0x122096];return _0x3d1966;};'use strict';var emlformat=require(_0xb93c('0x0'));var rimraf=require(_0xb93c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xb93c('0x2'));var moment=require(_0xb93c('0x3'));var BPromise=require(_0xb93c('0x4'));var Mustache=require(_0xb93c('0x5'));var util=require('util');var path=require(_0xb93c('0x6'));var sox=require(_0xb93c('0x7'));var csv=require('to-csv');var ejs=require(_0xb93c('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xb93c('0x9'));var crypto=require(_0xb93c('0xa'));var jsforce=require(_0xb93c('0xb'));var deskjs=require(_0xb93c('0xc'));var toCsv=require(_0xb93c('0xd'));var querystring=require(_0xb93c('0xe'));var Papa=require(_0xb93c('0xf'));var Redis=require(_0xb93c('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xb93c('0x11'));var as=require(_0xb93c('0x12'));var hardwareService=require(_0xb93c('0x13'));var logger=require(_0xb93c('0x14'))('api');var utils=require(_0xb93c('0x15'));var config=require(_0xb93c('0x16'));var licenseUtil=require(_0xb93c('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3843ca,_0x3e154f){_0x3e154f=_0x3e154f||0xcc;return function(_0x3a4ff6){if(_0x3a4ff6){return _0x3843ca[_0xb93c('0x18')](_0x3e154f);}return _0x3843ca['status'](_0x3e154f)[_0xb93c('0x19')]();};}function respondWithResult(_0x1e7a5c,_0x3fd22a){_0x3fd22a=_0x3fd22a||0xc8;return function(_0x34882d){if(_0x34882d){return _0x1e7a5c['status'](_0x3fd22a)[_0xb93c('0x1a')](_0x34882d);}};}function respondWithFilteredResult(_0x52a032,_0x189011){return function(_0x17842a){if(_0x17842a){var _0x3608d4=typeof _0x189011[_0xb93c('0x1b')]===_0xb93c('0x1c')&&typeof _0x189011['limit']===_0xb93c('0x1c');var _0x3e7562=_0x17842a[_0xb93c('0x1d')];var _0x47f2bf=_0x3608d4?0x0:_0x189011[_0xb93c('0x1b')];var _0x517488=_0x3608d4?_0x17842a['count']:_0x189011[_0xb93c('0x1b')]+_0x189011[_0xb93c('0x1e')];var _0x4043c0;if(_0x517488>=_0x3e7562){_0x517488=_0x3e7562;_0x4043c0=0xc8;}else{_0x4043c0=0xce;}_0x52a032[_0xb93c('0x1f')](_0x4043c0);return _0x52a032['set'](_0xb93c('0x20'),_0x47f2bf+'-'+_0x517488+'/'+_0x3e7562)[_0xb93c('0x1a')](_0x17842a);}return null;};}function patchUpdates(_0x279f2e){return function(_0x2d3e49){try{jsonpatch[_0xb93c('0x21')](_0x2d3e49,_0x279f2e,!![]);}catch(_0xc873bc){return BPromise[_0xb93c('0x22')](_0xc873bc);}return _0x2d3e49[_0xb93c('0x23')]();};}function saveUpdates(_0x3e4f52,_0x39ca4f){return function(_0x591b54){if(_0x591b54){return _0x591b54['update'](_0x3e4f52)[_0xb93c('0x24')](function(_0x21bade){return _0x21bade;});}return null;};}function removeEntity(_0x2f1262,_0x150aa8){return function(_0x787986){if(_0x787986){return _0x787986['destroy']()[_0xb93c('0x24')](function(){_0x2f1262[_0xb93c('0x1f')](0xcc)[_0xb93c('0x19')]();});}};}function handleEntityNotFound(_0x304bd5,_0x1c8176){return function(_0x18231b){if(!_0x18231b){_0x304bd5[_0xb93c('0x18')](0x194);}return _0x18231b;};}function handleError(_0x1a73e2,_0x26d2f3){_0x26d2f3=_0x26d2f3||0x1f4;return function(_0x49f93a){logger[_0xb93c('0x25')](_0x49f93a[_0xb93c('0x26')]);if(_0x49f93a[_0xb93c('0x27')]){delete _0x49f93a[_0xb93c('0x27')];}_0x1a73e2[_0xb93c('0x1f')](_0x26d2f3)[_0xb93c('0x28')](_0x49f93a);};}exports[_0xb93c('0x29')]=function(_0x1cb9b9,_0x376b70){var _0xdca86c={},_0x2ecbe6={},_0x3888fd={'count':0x0,'rows':[]};var _0x42cd47=_['map'](db['ServicenowConfiguration'][_0xb93c('0x2a')],function(_0x53c3e0){return{'name':_0x53c3e0['fieldName'],'type':_0x53c3e0[_0xb93c('0x2b')][_0xb93c('0x2c')]};});_0x2ecbe6[_0xb93c('0x2d')]=_[_0xb93c('0x2e')](_0x42cd47,_0xb93c('0x27'));_0x2ecbe6['query']=_[_0xb93c('0x2f')](_0x1cb9b9[_0xb93c('0x30')]);_0x2ecbe6['filters']=_[_0xb93c('0x31')](_0x2ecbe6[_0xb93c('0x2d')],_0x2ecbe6[_0xb93c('0x30')]);_0xdca86c[_0xb93c('0x32')]=_[_0xb93c('0x31')](_0x2ecbe6[_0xb93c('0x2d')],qs[_0xb93c('0x33')](_0x1cb9b9[_0xb93c('0x30')][_0xb93c('0x33')]));_0xdca86c[_0xb93c('0x32')]=_0xdca86c[_0xb93c('0x32')][_0xb93c('0x34')]?_0xdca86c[_0xb93c('0x32')]:_0x2ecbe6[_0xb93c('0x2d')];if(!_0x1cb9b9[_0xb93c('0x30')]['hasOwnProperty'](_0xb93c('0x35'))){_0xdca86c['limit']=qs[_0xb93c('0x1e')](_0x1cb9b9[_0xb93c('0x30')]['limit']);_0xdca86c[_0xb93c('0x1b')]=qs[_0xb93c('0x1b')](_0x1cb9b9['query']['offset']);}_0xdca86c[_0xb93c('0x36')]=qs[_0xb93c('0x37')](_0x1cb9b9[_0xb93c('0x30')][_0xb93c('0x37')]);_0xdca86c[_0xb93c('0x38')]=qs[_0xb93c('0x39')](_[_0xb93c('0x3a')](_0x1cb9b9['query'],_0x2ecbe6[_0xb93c('0x39')]),_0x42cd47);if(_0x1cb9b9[_0xb93c('0x30')][_0xb93c('0x3b')]){_0xdca86c[_0xb93c('0x38')]=_[_0xb93c('0x3c')](_0xdca86c[_0xb93c('0x38')],{'$or':_[_0xb93c('0x2e')](_0x42cd47,function(_0x8fb961){if(_0x8fb961[_0xb93c('0x2b')]!=='VIRTUAL'){var _0x3de3f6={};_0x3de3f6[_0x8fb961['name']]={'$like':'%'+_0x1cb9b9[_0xb93c('0x30')][_0xb93c('0x3b')]+'%'};return _0x3de3f6;}})});}_0xdca86c=_['merge']({},_0xdca86c,_0x1cb9b9[_0xb93c('0x3d')]);var _0x53f12c={'where':_0xdca86c[_0xb93c('0x38')]};return db[_0xb93c('0x3e')]['count'](_0x53f12c)[_0xb93c('0x24')](function(_0x34a1d0){_0x3888fd[_0xb93c('0x1d')]=_0x34a1d0;if(_0x1cb9b9[_0xb93c('0x30')][_0xb93c('0x3f')]){_0xdca86c[_0xb93c('0x40')]=[{'all':!![]}];}return db[_0xb93c('0x3e')][_0xb93c('0x41')](_0xdca86c);})['then'](function(_0x5ead83){_0x3888fd['rows']=_0x5ead83;return _0x3888fd;})[_0xb93c('0x24')](respondWithFilteredResult(_0x376b70,_0xdca86c))[_0xb93c('0x42')](handleError(_0x376b70,null));};exports['show']=function(_0x150805,_0x22f2c8){var _0x196d1c={'raw':![],'where':{'id':_0x150805['params']['id']}},_0x8be6f3={};_0x8be6f3[_0xb93c('0x2d')]=_[_0xb93c('0x2f')](db[_0xb93c('0x3e')]['rawAttributes']);_0x8be6f3['query']=_['keys'](_0x150805[_0xb93c('0x30')]);_0x8be6f3[_0xb93c('0x39')]=_[_0xb93c('0x31')](_0x8be6f3[_0xb93c('0x2d')],_0x8be6f3[_0xb93c('0x30')]);_0x196d1c['attributes']=_['intersection'](_0x8be6f3['model'],qs[_0xb93c('0x33')](_0x150805[_0xb93c('0x30')][_0xb93c('0x33')]));_0x196d1c[_0xb93c('0x32')]=_0x196d1c[_0xb93c('0x32')][_0xb93c('0x34')]?_0x196d1c['attributes']:_0x8be6f3['model'];if(_0x150805[_0xb93c('0x30')][_0xb93c('0x3f')]){_0x196d1c[_0xb93c('0x40')]=[{'all':!![]}];}_0x196d1c=_['merge']({},_0x196d1c,_0x150805[_0xb93c('0x3d')]);return db['ServicenowConfiguration']['find'](_0x196d1c)[_0xb93c('0x24')](handleEntityNotFound(_0x22f2c8,null))[_0xb93c('0x24')](respondWithResult(_0x22f2c8,null))[_0xb93c('0x42')](handleError(_0x22f2c8,null));};exports[_0xb93c('0x43')]=function(_0x58e1b8,_0x28dfcd){return db['ServicenowConfiguration'][_0xb93c('0x43')](_0x58e1b8['body'],{})[_0xb93c('0x24')](respondWithResult(_0x28dfcd,0xc9))[_0xb93c('0x42')](handleError(_0x28dfcd,null));};exports[_0xb93c('0x44')]=function(_0x57a13f,_0x399a22){if(_0x57a13f[_0xb93c('0x45')]['id']){delete _0x57a13f[_0xb93c('0x45')]['id'];}return db[_0xb93c('0x3e')][_0xb93c('0x46')]({'where':{'id':_0x57a13f[_0xb93c('0x47')]['id']}})[_0xb93c('0x24')](handleEntityNotFound(_0x399a22,null))[_0xb93c('0x24')](saveUpdates(_0x57a13f[_0xb93c('0x45')],null))[_0xb93c('0x24')](respondWithResult(_0x399a22,null))['catch'](handleError(_0x399a22,null));};exports[_0xb93c('0x48')]=function(_0x4f9ed6,_0x42451e){return db['ServicenowConfiguration'][_0xb93c('0x46')]({'where':{'id':_0x4f9ed6[_0xb93c('0x47')]['id']}})[_0xb93c('0x24')](handleEntityNotFound(_0x42451e,null))[_0xb93c('0x24')](removeEntity(_0x42451e,null))[_0xb93c('0x42')](handleError(_0x42451e,null));};exports[_0xb93c('0x49')]=function(_0x1f49a3,_0x2b24c0,_0x3db9df){var _0xaca561={};var _0x36ff64={};var _0x200007;var _0x1e6155;return db['ServicenowConfiguration']['findOne']({'where':{'id':_0x1f49a3[_0xb93c('0x47')]['id']}})[_0xb93c('0x24')](handleEntityNotFound(_0x2b24c0,null))[_0xb93c('0x24')](function(_0x2fa724){if(_0x2fa724){_0x200007=_0x2fa724;_0x36ff64['model']=_['keys'](db[_0xb93c('0x4a')][_0xb93c('0x2a')]);_0x36ff64[_0xb93c('0x30')]=_[_0xb93c('0x2f')](_0x1f49a3['query']);_0x36ff64[_0xb93c('0x39')]=_[_0xb93c('0x31')](_0x36ff64[_0xb93c('0x2d')],_0x36ff64[_0xb93c('0x30')]);_0xaca561['attributes']=_[_0xb93c('0x31')](_0x36ff64[_0xb93c('0x2d')],qs[_0xb93c('0x33')](_0x1f49a3[_0xb93c('0x30')][_0xb93c('0x33')]));_0xaca561[_0xb93c('0x32')]=_0xaca561[_0xb93c('0x32')][_0xb93c('0x34')]?_0xaca561[_0xb93c('0x32')]:_0x36ff64[_0xb93c('0x2d')];_0xaca561[_0xb93c('0x36')]=qs[_0xb93c('0x37')](_0x1f49a3[_0xb93c('0x30')][_0xb93c('0x37')]);_0xaca561[_0xb93c('0x38')]=qs[_0xb93c('0x39')](_[_0xb93c('0x3a')](_0x1f49a3[_0xb93c('0x30')],_0x36ff64[_0xb93c('0x39')]));if(_0x1f49a3[_0xb93c('0x30')][_0xb93c('0x3b')]){_0xaca561[_0xb93c('0x38')]=_[_0xb93c('0x3c')](_0xaca561[_0xb93c('0x38')],{'$or':_[_0xb93c('0x2e')](_0xaca561['attributes'],function(_0x5ae15f){var _0x115f28={};_0x115f28[_0x5ae15f]={'$like':'%'+_0x1f49a3[_0xb93c('0x30')][_0xb93c('0x3b')]+'%'};return _0x115f28;})});}_0xaca561=_[_0xb93c('0x3c')]({},_0xaca561,_0x1f49a3['options']);return _0x200007[_0xb93c('0x49')](_0xaca561);}})[_0xb93c('0x24')](function(_0x466807){if(_0x466807){_0x1e6155=_0x466807[_0xb93c('0x34')];if(!_0x1f49a3[_0xb93c('0x30')][_0xb93c('0x4b')](_0xb93c('0x35'))){_0xaca561['limit']=qs[_0xb93c('0x1e')](_0x1f49a3[_0xb93c('0x30')][_0xb93c('0x1e')]);_0xaca561[_0xb93c('0x1b')]=qs[_0xb93c('0x1b')](_0x1f49a3[_0xb93c('0x30')][_0xb93c('0x1b')]);}return _0x200007[_0xb93c('0x49')](_0xaca561);}})[_0xb93c('0x24')](function(_0x179247){if(_0x179247){return _0x179247?{'count':_0x1e6155,'rows':_0x179247}:null;}})[_0xb93c('0x24')](respondWithResult(_0x2b24c0,null))[_0xb93c('0x42')](handleError(_0x2b24c0,null));};exports[_0xb93c('0x4c')]=function(_0x3b9d1,_0x7c7cc9,_0x3fffe5){var _0x52df72={};var _0x36baa4={};var _0x3c0675;var _0x5d1a6a;return db[_0xb93c('0x3e')]['findOne']({'where':{'id':_0x3b9d1['params']['id']}})['then'](handleEntityNotFound(_0x7c7cc9,null))[_0xb93c('0x24')](function(_0x4cba7d){if(_0x4cba7d){_0x3c0675=_0x4cba7d;_0x36baa4[_0xb93c('0x2d')]=_['keys'](db['ServicenowField'][_0xb93c('0x2a')]);_0x36baa4[_0xb93c('0x30')]=_[_0xb93c('0x2f')](_0x3b9d1['query']);_0x36baa4[_0xb93c('0x39')]=_[_0xb93c('0x31')](_0x36baa4[_0xb93c('0x2d')],_0x36baa4['query']);_0x52df72[_0xb93c('0x32')]=_[_0xb93c('0x31')](_0x36baa4['model'],qs[_0xb93c('0x33')](_0x3b9d1[_0xb93c('0x30')][_0xb93c('0x33')]));_0x52df72[_0xb93c('0x32')]=_0x52df72[_0xb93c('0x32')][_0xb93c('0x34')]?_0x52df72[_0xb93c('0x32')]:_0x36baa4[_0xb93c('0x2d')];_0x52df72[_0xb93c('0x36')]=qs[_0xb93c('0x37')](_0x3b9d1[_0xb93c('0x30')][_0xb93c('0x37')]);_0x52df72[_0xb93c('0x38')]=qs['filters'](_[_0xb93c('0x3a')](_0x3b9d1[_0xb93c('0x30')],_0x36baa4['filters']));if(_0x3b9d1[_0xb93c('0x30')][_0xb93c('0x3b')]){_0x52df72[_0xb93c('0x38')]=_[_0xb93c('0x3c')](_0x52df72[_0xb93c('0x38')],{'$or':_['map'](_0x52df72['attributes'],function(_0x48aebe){var _0x346ef3={};_0x346ef3[_0x48aebe]={'$like':'%'+_0x3b9d1[_0xb93c('0x30')][_0xb93c('0x3b')]+'%'};return _0x346ef3;})});}_0x52df72=_[_0xb93c('0x3c')]({},_0x52df72,_0x3b9d1['options']);return _0x3c0675[_0xb93c('0x4c')](_0x52df72);}})['then'](function(_0x2a4f44){if(_0x2a4f44){_0x5d1a6a=_0x2a4f44[_0xb93c('0x34')];if(!_0x3b9d1[_0xb93c('0x30')]['hasOwnProperty'](_0xb93c('0x35'))){_0x52df72[_0xb93c('0x1e')]=qs[_0xb93c('0x1e')](_0x3b9d1[_0xb93c('0x30')]['limit']);_0x52df72[_0xb93c('0x1b')]=qs[_0xb93c('0x1b')](_0x3b9d1[_0xb93c('0x30')][_0xb93c('0x1b')]);}return _0x3c0675[_0xb93c('0x4c')](_0x52df72);}})[_0xb93c('0x24')](function(_0x378f9b){if(_0x378f9b){return _0x378f9b?{'count':_0x5d1a6a,'rows':_0x378f9b}:null;}})[_0xb93c('0x24')](respondWithResult(_0x7c7cc9,null))[_0xb93c('0x42')](handleError(_0x7c7cc9,null));};exports[_0xb93c('0x4d')]=function(_0x1ba429,_0x524cea,_0x557b06){var _0x21dd67={};var _0x47bff3={};var _0x1b669f;var _0x28d54d;return db[_0xb93c('0x3e')][_0xb93c('0x4e')]({'where':{'id':_0x1ba429['params']['id']}})[_0xb93c('0x24')](handleEntityNotFound(_0x524cea,null))[_0xb93c('0x24')](function(_0x6e1322){if(_0x6e1322){_0x1b669f=_0x6e1322;_0x47bff3[_0xb93c('0x2d')]=_[_0xb93c('0x2f')](db[_0xb93c('0x4a')]['rawAttributes']);_0x47bff3[_0xb93c('0x30')]=_['keys'](_0x1ba429['query']);_0x47bff3[_0xb93c('0x39')]=_[_0xb93c('0x31')](_0x47bff3[_0xb93c('0x2d')],_0x47bff3['query']);_0x21dd67['attributes']=_[_0xb93c('0x31')](_0x47bff3[_0xb93c('0x2d')],qs[_0xb93c('0x33')](_0x1ba429[_0xb93c('0x30')][_0xb93c('0x33')]));_0x21dd67[_0xb93c('0x32')]=_0x21dd67[_0xb93c('0x32')][_0xb93c('0x34')]?_0x21dd67[_0xb93c('0x32')]:_0x47bff3['model'];_0x21dd67['order']=qs[_0xb93c('0x37')](_0x1ba429['query'][_0xb93c('0x37')]);_0x21dd67['where']=qs[_0xb93c('0x39')](_[_0xb93c('0x3a')](_0x1ba429[_0xb93c('0x30')],_0x47bff3[_0xb93c('0x39')]));if(_0x1ba429[_0xb93c('0x30')]['filter']){_0x21dd67[_0xb93c('0x38')]=_[_0xb93c('0x3c')](_0x21dd67['where'],{'$or':_[_0xb93c('0x2e')](_0x21dd67['attributes'],function(_0x105cb0){var _0x58c7aa={};_0x58c7aa[_0x105cb0]={'$like':'%'+_0x1ba429[_0xb93c('0x30')][_0xb93c('0x3b')]+'%'};return _0x58c7aa;})});}_0x21dd67=_[_0xb93c('0x3c')]({},_0x21dd67,_0x1ba429[_0xb93c('0x3d')]);return _0x1b669f[_0xb93c('0x4d')](_0x21dd67);}})['then'](function(_0x41f098){if(_0x41f098){_0x28d54d=_0x41f098['length'];if(!_0x1ba429[_0xb93c('0x30')][_0xb93c('0x4b')]('nolimit')){_0x21dd67[_0xb93c('0x1e')]=qs[_0xb93c('0x1e')](_0x1ba429[_0xb93c('0x30')][_0xb93c('0x1e')]);_0x21dd67[_0xb93c('0x1b')]=qs['offset'](_0x1ba429[_0xb93c('0x30')][_0xb93c('0x1b')]);}return _0x1b669f['getDescriptions'](_0x21dd67);}})[_0xb93c('0x24')](function(_0x35a788){if(_0x35a788){return _0x35a788?{'count':_0x28d54d,'rows':_0x35a788}:null;}})[_0xb93c('0x24')](respondWithResult(_0x524cea,null))[_0xb93c('0x42')](handleError(_0x524cea,null));};
\ No newline at end of file
+var _0xcff9=['ejs','lodash','squel','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','undefined','limit','count','offset','Content-Range','apply','save','update','then','destroy','stack','name','send','index','map','ServicenowConfiguration','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','sort','where','pick','filter','merge','options','includeAll','findAll','rows','catch','show','params','fields','include','find','create','body','getFields','ServicenowField','hasOwnProperty','nolimit','getSubjects','findOne','order','getDescriptions','rawAttributes','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv'];(function(_0x4b7c92,_0x38587d){var _0x22b768=function(_0x5b4901){while(--_0x5b4901){_0x4b7c92['push'](_0x4b7c92['shift']());}};_0x22b768(++_0x38587d);}(_0xcff9,0x93));var _0x9cff=function(_0x416fda,_0x102f03){_0x416fda=_0x416fda-0x0;var _0x4887d4=_0xcff9[_0x416fda];return _0x4887d4;};'use strict';var emlformat=require(_0x9cff('0x0'));var rimraf=require(_0x9cff('0x1'));var zipdir=require(_0x9cff('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9cff('0x3'));var moment=require(_0x9cff('0x4'));var BPromise=require(_0x9cff('0x5'));var Mustache=require(_0x9cff('0x6'));var util=require(_0x9cff('0x7'));var path=require(_0x9cff('0x8'));var sox=require(_0x9cff('0x9'));var csv=require(_0x9cff('0xa'));var ejs=require(_0x9cff('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9cff('0xc'));var squel=require(_0x9cff('0xd'));var crypto=require('crypto');var jsforce=require(_0x9cff('0xe'));var deskjs=require(_0x9cff('0xf'));var toCsv=require(_0x9cff('0xa'));var querystring=require('querystring');var Papa=require(_0x9cff('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x9cff('0x11'));var as=require(_0x9cff('0x12'));var hardwareService=require(_0x9cff('0x13'));var logger=require(_0x9cff('0x14'))(_0x9cff('0x15'));var utils=require(_0x9cff('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x9cff('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3819f0,_0x56a31e){_0x56a31e=_0x56a31e||0xcc;return function(_0x244778){if(_0x244778){return _0x3819f0[_0x9cff('0x18')](_0x56a31e);}return _0x3819f0[_0x9cff('0x19')](_0x56a31e)[_0x9cff('0x1a')]();};}function respondWithResult(_0x5ceff2,_0x508bdc){_0x508bdc=_0x508bdc||0xc8;return function(_0x1bea96){if(_0x1bea96){return _0x5ceff2[_0x9cff('0x19')](_0x508bdc)['json'](_0x1bea96);}};}function respondWithFilteredResult(_0xdebd7c,_0xfccf97){return function(_0x24b08c){if(_0x24b08c){var _0x3575dd=typeof _0xfccf97['offset']===_0x9cff('0x1b')&&typeof _0xfccf97[_0x9cff('0x1c')]===_0x9cff('0x1b');var _0x2008eb=_0x24b08c['count'];var _0x48905f=_0x3575dd?0x0:_0xfccf97['offset'];var _0x221806=_0x3575dd?_0x24b08c[_0x9cff('0x1d')]:_0xfccf97[_0x9cff('0x1e')]+_0xfccf97[_0x9cff('0x1c')];var _0x4795e8;if(_0x221806>=_0x2008eb){_0x221806=_0x2008eb;_0x4795e8=0xc8;}else{_0x4795e8=0xce;}_0xdebd7c[_0x9cff('0x19')](_0x4795e8);return _0xdebd7c['set'](_0x9cff('0x1f'),_0x48905f+'-'+_0x221806+'/'+_0x2008eb)['json'](_0x24b08c);}return null;};}function patchUpdates(_0xe84656){return function(_0x36e66c){try{jsonpatch[_0x9cff('0x20')](_0x36e66c,_0xe84656,!![]);}catch(_0x2822f4){return BPromise['reject'](_0x2822f4);}return _0x36e66c[_0x9cff('0x21')]();};}function saveUpdates(_0x1f0a0c,_0xa6e8b){return function(_0x51125e){if(_0x51125e){return _0x51125e[_0x9cff('0x22')](_0x1f0a0c)[_0x9cff('0x23')](function(_0x45b42b){return _0x45b42b;});}return null;};}function removeEntity(_0x34d5ec,_0x50e425){return function(_0x27b254){if(_0x27b254){return _0x27b254[_0x9cff('0x24')]()[_0x9cff('0x23')](function(){_0x34d5ec[_0x9cff('0x19')](0xcc)[_0x9cff('0x1a')]();});}};}function handleEntityNotFound(_0x49166d,_0x9cbf7d){return function(_0x17b1f5){if(!_0x17b1f5){_0x49166d[_0x9cff('0x18')](0x194);}return _0x17b1f5;};}function handleError(_0x58af67,_0x292e46){_0x292e46=_0x292e46||0x1f4;return function(_0x1a3cf9){logger['error'](_0x1a3cf9[_0x9cff('0x25')]);if(_0x1a3cf9[_0x9cff('0x26')]){delete _0x1a3cf9[_0x9cff('0x26')];}_0x58af67[_0x9cff('0x19')](_0x292e46)[_0x9cff('0x27')](_0x1a3cf9);};}exports[_0x9cff('0x28')]=function(_0x5c6e40,_0xe157de){var _0x329e72={},_0x533611={},_0x2bb7c8={'count':0x0,'rows':[]};var _0x184f08=_[_0x9cff('0x29')](db[_0x9cff('0x2a')]['rawAttributes'],function(_0x592c35){return{'name':_0x592c35[_0x9cff('0x2b')],'type':_0x592c35[_0x9cff('0x2c')][_0x9cff('0x2d')]};});_0x533611[_0x9cff('0x2e')]=_[_0x9cff('0x29')](_0x184f08,_0x9cff('0x26'));_0x533611[_0x9cff('0x2f')]=_[_0x9cff('0x30')](_0x5c6e40['query']);_0x533611[_0x9cff('0x31')]=_[_0x9cff('0x32')](_0x533611[_0x9cff('0x2e')],_0x533611[_0x9cff('0x2f')]);_0x329e72[_0x9cff('0x33')]=_[_0x9cff('0x32')](_0x533611[_0x9cff('0x2e')],qs['fields'](_0x5c6e40[_0x9cff('0x2f')]['fields']));_0x329e72[_0x9cff('0x33')]=_0x329e72[_0x9cff('0x33')][_0x9cff('0x34')]?_0x329e72['attributes']:_0x533611[_0x9cff('0x2e')];if(!_0x5c6e40[_0x9cff('0x2f')]['hasOwnProperty']('nolimit')){_0x329e72[_0x9cff('0x1c')]=qs[_0x9cff('0x1c')](_0x5c6e40[_0x9cff('0x2f')][_0x9cff('0x1c')]);_0x329e72[_0x9cff('0x1e')]=qs['offset'](_0x5c6e40[_0x9cff('0x2f')][_0x9cff('0x1e')]);}_0x329e72['order']=qs['sort'](_0x5c6e40['query'][_0x9cff('0x35')]);_0x329e72[_0x9cff('0x36')]=qs[_0x9cff('0x31')](_[_0x9cff('0x37')](_0x5c6e40[_0x9cff('0x2f')],_0x533611[_0x9cff('0x31')]),_0x184f08);if(_0x5c6e40[_0x9cff('0x2f')][_0x9cff('0x38')]){_0x329e72[_0x9cff('0x36')]=_[_0x9cff('0x39')](_0x329e72[_0x9cff('0x36')],{'$or':_['map'](_0x184f08,function(_0x3f1230){if(_0x3f1230['type']!=='VIRTUAL'){var _0x81ceda={};_0x81ceda[_0x3f1230[_0x9cff('0x26')]]={'$like':'%'+_0x5c6e40[_0x9cff('0x2f')][_0x9cff('0x38')]+'%'};return _0x81ceda;}})});}_0x329e72=_[_0x9cff('0x39')]({},_0x329e72,_0x5c6e40[_0x9cff('0x3a')]);var _0x5b8f67={'where':_0x329e72['where']};return db[_0x9cff('0x2a')][_0x9cff('0x1d')](_0x5b8f67)['then'](function(_0x502ff7){_0x2bb7c8[_0x9cff('0x1d')]=_0x502ff7;if(_0x5c6e40['query'][_0x9cff('0x3b')]){_0x329e72['include']=[{'all':!![]}];}return db[_0x9cff('0x2a')][_0x9cff('0x3c')](_0x329e72);})[_0x9cff('0x23')](function(_0x402c21){_0x2bb7c8[_0x9cff('0x3d')]=_0x402c21;return _0x2bb7c8;})['then'](respondWithFilteredResult(_0xe157de,_0x329e72))[_0x9cff('0x3e')](handleError(_0xe157de,null));};exports[_0x9cff('0x3f')]=function(_0xad95a7,_0x3565ed){var _0x4f9265={'raw':![],'where':{'id':_0xad95a7[_0x9cff('0x40')]['id']}},_0x1c41dd={};_0x1c41dd['model']=_['keys'](db[_0x9cff('0x2a')]['rawAttributes']);_0x1c41dd[_0x9cff('0x2f')]=_[_0x9cff('0x30')](_0xad95a7[_0x9cff('0x2f')]);_0x1c41dd[_0x9cff('0x31')]=_[_0x9cff('0x32')](_0x1c41dd[_0x9cff('0x2e')],_0x1c41dd[_0x9cff('0x2f')]);_0x4f9265[_0x9cff('0x33')]=_[_0x9cff('0x32')](_0x1c41dd['model'],qs[_0x9cff('0x41')](_0xad95a7['query'][_0x9cff('0x41')]));_0x4f9265[_0x9cff('0x33')]=_0x4f9265[_0x9cff('0x33')]['length']?_0x4f9265[_0x9cff('0x33')]:_0x1c41dd['model'];if(_0xad95a7[_0x9cff('0x2f')][_0x9cff('0x3b')]){_0x4f9265[_0x9cff('0x42')]=[{'all':!![]}];}_0x4f9265=_['merge']({},_0x4f9265,_0xad95a7[_0x9cff('0x3a')]);return db['ServicenowConfiguration'][_0x9cff('0x43')](_0x4f9265)[_0x9cff('0x23')](handleEntityNotFound(_0x3565ed,null))['then'](respondWithResult(_0x3565ed,null))[_0x9cff('0x3e')](handleError(_0x3565ed,null));};exports[_0x9cff('0x44')]=function(_0x3c5566,_0x1f51e1){return db[_0x9cff('0x2a')][_0x9cff('0x44')](_0x3c5566[_0x9cff('0x45')],{})[_0x9cff('0x23')](respondWithResult(_0x1f51e1,0xc9))[_0x9cff('0x3e')](handleError(_0x1f51e1,null));};exports[_0x9cff('0x22')]=function(_0x3c2337,_0x390818){if(_0x3c2337[_0x9cff('0x45')]['id']){delete _0x3c2337[_0x9cff('0x45')]['id'];}return db['ServicenowConfiguration'][_0x9cff('0x43')]({'where':{'id':_0x3c2337[_0x9cff('0x40')]['id']}})['then'](handleEntityNotFound(_0x390818,null))[_0x9cff('0x23')](saveUpdates(_0x3c2337['body'],null))[_0x9cff('0x23')](respondWithResult(_0x390818,null))[_0x9cff('0x3e')](handleError(_0x390818,null));};exports[_0x9cff('0x24')]=function(_0x15563e,_0x1871e0){return db['ServicenowConfiguration'][_0x9cff('0x43')]({'where':{'id':_0x15563e[_0x9cff('0x40')]['id']}})[_0x9cff('0x23')](handleEntityNotFound(_0x1871e0,null))['then'](removeEntity(_0x1871e0,null))[_0x9cff('0x3e')](handleError(_0x1871e0,null));};exports[_0x9cff('0x46')]=function(_0x5880a6,_0xef881a,_0x7143c5){var _0x4f66ca={};var _0xb428ca={};var _0x1c027f;var _0x13d21d;return db[_0x9cff('0x2a')]['findOne']({'where':{'id':_0x5880a6[_0x9cff('0x40')]['id']}})[_0x9cff('0x23')](handleEntityNotFound(_0xef881a,null))[_0x9cff('0x23')](function(_0x5463d2){if(_0x5463d2){_0x1c027f=_0x5463d2;_0xb428ca[_0x9cff('0x2e')]=_[_0x9cff('0x30')](db[_0x9cff('0x47')]['rawAttributes']);_0xb428ca[_0x9cff('0x2f')]=_['keys'](_0x5880a6[_0x9cff('0x2f')]);_0xb428ca[_0x9cff('0x31')]=_[_0x9cff('0x32')](_0xb428ca[_0x9cff('0x2e')],_0xb428ca['query']);_0x4f66ca[_0x9cff('0x33')]=_[_0x9cff('0x32')](_0xb428ca[_0x9cff('0x2e')],qs[_0x9cff('0x41')](_0x5880a6[_0x9cff('0x2f')][_0x9cff('0x41')]));_0x4f66ca[_0x9cff('0x33')]=_0x4f66ca[_0x9cff('0x33')]['length']?_0x4f66ca[_0x9cff('0x33')]:_0xb428ca[_0x9cff('0x2e')];_0x4f66ca['order']=qs[_0x9cff('0x35')](_0x5880a6['query']['sort']);_0x4f66ca[_0x9cff('0x36')]=qs[_0x9cff('0x31')](_[_0x9cff('0x37')](_0x5880a6[_0x9cff('0x2f')],_0xb428ca[_0x9cff('0x31')]));if(_0x5880a6['query'][_0x9cff('0x38')]){_0x4f66ca[_0x9cff('0x36')]=_[_0x9cff('0x39')](_0x4f66ca[_0x9cff('0x36')],{'$or':_[_0x9cff('0x29')](_0x4f66ca[_0x9cff('0x33')],function(_0x3b4cae){var _0x293b89={};_0x293b89[_0x3b4cae]={'$like':'%'+_0x5880a6[_0x9cff('0x2f')][_0x9cff('0x38')]+'%'};return _0x293b89;})});}_0x4f66ca=_['merge']({},_0x4f66ca,_0x5880a6['options']);return _0x1c027f[_0x9cff('0x46')](_0x4f66ca);}})[_0x9cff('0x23')](function(_0x2e0a14){if(_0x2e0a14){_0x13d21d=_0x2e0a14['length'];if(!_0x5880a6[_0x9cff('0x2f')][_0x9cff('0x48')](_0x9cff('0x49'))){_0x4f66ca[_0x9cff('0x1c')]=qs['limit'](_0x5880a6['query'][_0x9cff('0x1c')]);_0x4f66ca['offset']=qs[_0x9cff('0x1e')](_0x5880a6[_0x9cff('0x2f')]['offset']);}return _0x1c027f['getFields'](_0x4f66ca);}})[_0x9cff('0x23')](function(_0x5a0789){if(_0x5a0789){return _0x5a0789?{'count':_0x13d21d,'rows':_0x5a0789}:null;}})[_0x9cff('0x23')](respondWithResult(_0xef881a,null))[_0x9cff('0x3e')](handleError(_0xef881a,null));};exports[_0x9cff('0x4a')]=function(_0xc4a669,_0x55120c,_0x2e070b){var _0x27b925={};var _0x42f23b={};var _0x5a06a3;var _0x44ac93;return db['ServicenowConfiguration'][_0x9cff('0x4b')]({'where':{'id':_0xc4a669[_0x9cff('0x40')]['id']}})['then'](handleEntityNotFound(_0x55120c,null))['then'](function(_0xccfc69){if(_0xccfc69){_0x5a06a3=_0xccfc69;_0x42f23b['model']=_[_0x9cff('0x30')](db['ServicenowField']['rawAttributes']);_0x42f23b['query']=_['keys'](_0xc4a669[_0x9cff('0x2f')]);_0x42f23b[_0x9cff('0x31')]=_[_0x9cff('0x32')](_0x42f23b['model'],_0x42f23b[_0x9cff('0x2f')]);_0x27b925['attributes']=_[_0x9cff('0x32')](_0x42f23b[_0x9cff('0x2e')],qs[_0x9cff('0x41')](_0xc4a669['query'][_0x9cff('0x41')]));_0x27b925[_0x9cff('0x33')]=_0x27b925[_0x9cff('0x33')][_0x9cff('0x34')]?_0x27b925['attributes']:_0x42f23b[_0x9cff('0x2e')];_0x27b925[_0x9cff('0x4c')]=qs[_0x9cff('0x35')](_0xc4a669['query']['sort']);_0x27b925['where']=qs['filters'](_[_0x9cff('0x37')](_0xc4a669['query'],_0x42f23b[_0x9cff('0x31')]));if(_0xc4a669['query'][_0x9cff('0x38')]){_0x27b925['where']=_[_0x9cff('0x39')](_0x27b925['where'],{'$or':_[_0x9cff('0x29')](_0x27b925[_0x9cff('0x33')],function(_0x415acc){var _0x1528af={};_0x1528af[_0x415acc]={'$like':'%'+_0xc4a669['query']['filter']+'%'};return _0x1528af;})});}_0x27b925=_[_0x9cff('0x39')]({},_0x27b925,_0xc4a669[_0x9cff('0x3a')]);return _0x5a06a3[_0x9cff('0x4a')](_0x27b925);}})['then'](function(_0x23a10a){if(_0x23a10a){_0x44ac93=_0x23a10a[_0x9cff('0x34')];if(!_0xc4a669['query'][_0x9cff('0x48')](_0x9cff('0x49'))){_0x27b925[_0x9cff('0x1c')]=qs['limit'](_0xc4a669[_0x9cff('0x2f')]['limit']);_0x27b925['offset']=qs[_0x9cff('0x1e')](_0xc4a669['query']['offset']);}return _0x5a06a3[_0x9cff('0x4a')](_0x27b925);}})[_0x9cff('0x23')](function(_0x2528c3){if(_0x2528c3){return _0x2528c3?{'count':_0x44ac93,'rows':_0x2528c3}:null;}})[_0x9cff('0x23')](respondWithResult(_0x55120c,null))['catch'](handleError(_0x55120c,null));};exports[_0x9cff('0x4d')]=function(_0x482cae,_0x214deb,_0x186f0d){var _0x40d659={};var _0x857fbf={};var _0x1342a2;var _0x4d4885;return db['ServicenowConfiguration']['findOne']({'where':{'id':_0x482cae[_0x9cff('0x40')]['id']}})['then'](handleEntityNotFound(_0x214deb,null))[_0x9cff('0x23')](function(_0x5cf929){if(_0x5cf929){_0x1342a2=_0x5cf929;_0x857fbf[_0x9cff('0x2e')]=_[_0x9cff('0x30')](db[_0x9cff('0x47')][_0x9cff('0x4e')]);_0x857fbf[_0x9cff('0x2f')]=_[_0x9cff('0x30')](_0x482cae[_0x9cff('0x2f')]);_0x857fbf[_0x9cff('0x31')]=_[_0x9cff('0x32')](_0x857fbf[_0x9cff('0x2e')],_0x857fbf[_0x9cff('0x2f')]);_0x40d659[_0x9cff('0x33')]=_[_0x9cff('0x32')](_0x857fbf[_0x9cff('0x2e')],qs[_0x9cff('0x41')](_0x482cae[_0x9cff('0x2f')][_0x9cff('0x41')]));_0x40d659[_0x9cff('0x33')]=_0x40d659['attributes'][_0x9cff('0x34')]?_0x40d659[_0x9cff('0x33')]:_0x857fbf[_0x9cff('0x2e')];_0x40d659[_0x9cff('0x4c')]=qs[_0x9cff('0x35')](_0x482cae[_0x9cff('0x2f')]['sort']);_0x40d659[_0x9cff('0x36')]=qs[_0x9cff('0x31')](_[_0x9cff('0x37')](_0x482cae[_0x9cff('0x2f')],_0x857fbf[_0x9cff('0x31')]));if(_0x482cae['query'][_0x9cff('0x38')]){_0x40d659['where']=_[_0x9cff('0x39')](_0x40d659[_0x9cff('0x36')],{'$or':_[_0x9cff('0x29')](_0x40d659[_0x9cff('0x33')],function(_0x2bba5c){var _0x1d1972={};_0x1d1972[_0x2bba5c]={'$like':'%'+_0x482cae[_0x9cff('0x2f')]['filter']+'%'};return _0x1d1972;})});}_0x40d659=_['merge']({},_0x40d659,_0x482cae[_0x9cff('0x3a')]);return _0x1342a2[_0x9cff('0x4d')](_0x40d659);}})[_0x9cff('0x23')](function(_0x4dc37d){if(_0x4dc37d){_0x4d4885=_0x4dc37d['length'];if(!_0x482cae[_0x9cff('0x2f')][_0x9cff('0x48')]('nolimit')){_0x40d659['limit']=qs['limit'](_0x482cae['query'][_0x9cff('0x1c')]);_0x40d659[_0x9cff('0x1e')]=qs['offset'](_0x482cae[_0x9cff('0x2f')]['offset']);}return _0x1342a2['getDescriptions'](_0x40d659);}})[_0x9cff('0x23')](function(_0x1cedf8){if(_0x1cedf8){return _0x1cedf8?{'count':_0x4d4885,'rows':_0x1cedf8}:null;}})[_0x9cff('0x23')](respondWithResult(_0x214deb,null))['catch'](handleError(_0x214deb,null));};
\ No newline at end of file
index 15691bb..392ebc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51c5=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intServicenowConfiguration.attributes','exports','define','ServicenowConfiguration'];(function(_0x5d3eb2,_0x170fc8){var _0x4dfd46=function(_0x375d6c){while(--_0x375d6c){_0x5d3eb2['push'](_0x5d3eb2['shift']());}};_0x4dfd46(++_0x170fc8);}(_0x51c5,0x8f));var _0x551c=function(_0x4c445a,_0x4ee80f){_0x4c445a=_0x4c445a-0x0;var _0x2f611c=_0x51c5[_0x4c445a];return _0x2f611c;};'use strict';var _=require(_0x551c('0x0'));var util=require(_0x551c('0x1'));var logger=require(_0x551c('0x2'))(_0x551c('0x3'));var moment=require(_0x551c('0x4'));var BPromise=require(_0x551c('0x5'));var rp=require(_0x551c('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x551c('0x7'));var config=require(_0x551c('0x8'));var attributes=require(_0x551c('0x9'));module[_0x551c('0xa')]=function(_0xe0272c,_0x1aa8df){return _0xe0272c[_0x551c('0xb')](_0x551c('0xc'),attributes,{'tableName':'int_servicenow_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x69d3=['../../config/logger','moment','bluebird','rimraf','exports','define','ServicenowConfiguration','int_servicenow_configurations','lodash','util'];(function(_0x49b207,_0x408ade){var _0x2dc8fa=function(_0x150975){while(--_0x150975){_0x49b207['push'](_0x49b207['shift']());}};_0x2dc8fa(++_0x408ade);}(_0x69d3,0xda));var _0x369d=function(_0x117c8e,_0x494684){_0x117c8e=_0x117c8e-0x0;var _0x328304=_0x69d3[_0x117c8e];return _0x328304;};'use strict';var _=require(_0x369d('0x0'));var util=require(_0x369d('0x1'));var logger=require(_0x369d('0x2'))('api');var moment=require(_0x369d('0x3'));var BPromise=require(_0x369d('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x369d('0x5'));var config=require('../../config/environment');var attributes=require('./intServicenowConfiguration.attributes');module[_0x369d('0x6')]=function(_0x2f2a53,_0x18c9f1){return _0x2f2a53[_0x369d('0x7')](_0x369d('0x8'),attributes,{'tableName':_0x369d('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8283622..5dcb900 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06f2=['request','then','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x4f4216,_0x2d47a1){var _0xc0484b=function(_0x3fe889){while(--_0x3fe889){_0x4f4216['push'](_0x4f4216['shift']());}};_0xc0484b(++_0x2d47a1);}(_0x06f2,0x96));var _0x206f=function(_0x51cc8b,_0x1bf7d1){_0x51cc8b=_0x51cc8b-0x0;var _0x2ce6e4=_0x06f2[_0x51cc8b];return _0x2ce6e4;};'use strict';var _=require('lodash');var util=require(_0x206f('0x0'));var moment=require(_0x206f('0x1'));var BPromise=require(_0x206f('0x2'));var rs=require(_0x206f('0x3'));var fs=require('fs');var Redis=require(_0x206f('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x206f('0x5'));var logger=require(_0x206f('0x6'))(_0x206f('0x7'));var config=require(_0x206f('0x8'));var jayson=require(_0x206f('0x9'));var client=jayson['client'][_0x206f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x518619,_0x2b336d,_0x16bbfd){return new BPromise(function(_0x3c23c0,_0x3c4b73){return client[_0x206f('0xb')](_0x518619,_0x16bbfd)[_0x206f('0xc')](function(_0x394ec6){logger['info'](_0x206f('0xd'),_0x2b336d,_0x206f('0xe'));logger[_0x206f('0xf')]('ServicenowConfiguration,\x20%s,\x20%s,\x20%s',_0x2b336d,_0x206f('0xe'),JSON[_0x206f('0x10')](_0x394ec6));if(_0x394ec6[_0x206f('0x11')]){if(_0x394ec6[_0x206f('0x11')][_0x206f('0x12')]===0x1f4){logger[_0x206f('0x11')](_0x206f('0xd'),_0x2b336d,_0x394ec6['error']['message']);return _0x3c4b73(_0x394ec6[_0x206f('0x11')]['message']);}logger[_0x206f('0x11')](_0x206f('0xd'),_0x2b336d,_0x394ec6[_0x206f('0x11')][_0x206f('0x13')]);return _0x3c23c0(_0x394ec6[_0x206f('0x11')]['message']);}else{logger[_0x206f('0x14')]('ServicenowConfiguration,\x20%s,\x20%s',_0x2b336d,'request\x20sent');_0x3c23c0(_0x394ec6[_0x206f('0x15')][_0x206f('0x13')]);}})[_0x206f('0x16')](function(_0x5af80f){logger[_0x206f('0x11')](_0x206f('0xd'),_0x2b336d,_0x5af80f);_0x3c4b73(_0x5af80f);});});}
\ No newline at end of file
+var _0x0eee=['jayson/promise','http','info','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x5be898,_0xc20ebc){var _0x3dfa4c=function(_0x295105){while(--_0x295105){_0x5be898['push'](_0x5be898['shift']());}};_0x3dfa4c(++_0xc20ebc);}(_0x0eee,0xb3));var _0xe0ee=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0x0eee[_0x187ee1];return _0x388160;};'use strict';var _=require(_0xe0ee('0x0'));var util=require(_0xe0ee('0x1'));var moment=require(_0xe0ee('0x2'));var BPromise=require('bluebird');var rs=require(_0xe0ee('0x3'));var fs=require('fs');var Redis=require(_0xe0ee('0x4'));var db=require(_0xe0ee('0x5'))['db'];var utils=require(_0xe0ee('0x6'));var logger=require(_0xe0ee('0x7'))(_0xe0ee('0x8'));var config=require(_0xe0ee('0x9'));var jayson=require(_0xe0ee('0xa'));var client=jayson['client'][_0xe0ee('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x92bc36,_0xd491e2,_0x216704){return new BPromise(function(_0x5191e5,_0x538cf8){return client['request'](_0x92bc36,_0x216704)['then'](function(_0xd6ac51){logger[_0xe0ee('0xc')](_0xe0ee('0xd'),_0xd491e2,_0xe0ee('0xe'));logger[_0xe0ee('0xf')](_0xe0ee('0x10'),_0xd491e2,'request\x20sent',JSON['stringify'](_0xd6ac51));if(_0xd6ac51[_0xe0ee('0x11')]){if(_0xd6ac51['error'][_0xe0ee('0x12')]===0x1f4){logger[_0xe0ee('0x11')]('ServicenowConfiguration,\x20%s,\x20%s',_0xd491e2,_0xd6ac51[_0xe0ee('0x11')][_0xe0ee('0x13')]);return _0x538cf8(_0xd6ac51[_0xe0ee('0x11')][_0xe0ee('0x13')]);}logger[_0xe0ee('0x11')]('ServicenowConfiguration,\x20%s,\x20%s',_0xd491e2,_0xd6ac51[_0xe0ee('0x11')]['message']);return _0x5191e5(_0xd6ac51[_0xe0ee('0x11')][_0xe0ee('0x13')]);}else{logger[_0xe0ee('0xc')]('ServicenowConfiguration,\x20%s,\x20%s',_0xd491e2,'request\x20sent');_0x5191e5(_0xd6ac51[_0xe0ee('0x14')]['message']);}})['catch'](function(_0x2bf08b){logger[_0xe0ee('0x11')]('ServicenowConfiguration,\x20%s,\x20%s',_0xd491e2,_0x2bf08b);_0x538cf8(_0x2bf08b);});});}
\ No newline at end of file
index a17c704..61c7fea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb74=['delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intServicenowField.controller','get','index','/:id','isAuthenticated','show','post','create','put','update'];(function(_0x46d8b2,_0x3829c4){var _0x1a351f=function(_0x279ce5){while(--_0x279ce5){_0x46d8b2['push'](_0x46d8b2['shift']());}};_0x1a351f(++_0x3829c4);}(_0xdb74,0x107));var _0x4db7=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0xdb74[_0x311c35];return _0x5cc50c;};'use strict';var multer=require('multer');var util=require(_0x4db7('0x0'));var path=require(_0x4db7('0x1'));var timeout=require(_0x4db7('0x2'));var express=require('express');var router=express[_0x4db7('0x3')]();var fs_extra=require(_0x4db7('0x4'));var auth=require(_0x4db7('0x5'));var interaction=require(_0x4db7('0x6'));var config=require('../../config/environment');var controller=require(_0x4db7('0x7'));router[_0x4db7('0x8')]('/',auth['isAuthenticated'](),controller[_0x4db7('0x9')]);router[_0x4db7('0x8')](_0x4db7('0xa'),auth[_0x4db7('0xb')](),controller[_0x4db7('0xc')]);router[_0x4db7('0xd')]('/',auth[_0x4db7('0xb')](),controller[_0x4db7('0xe')]);router[_0x4db7('0xf')](_0x4db7('0xa'),auth[_0x4db7('0xb')](),controller[_0x4db7('0x10')]);router[_0x4db7('0x11')](_0x4db7('0xa'),auth[_0x4db7('0xb')](),controller[_0x4db7('0x12')]);module[_0x4db7('0x13')]=router;
\ No newline at end of file
+var _0x749a=['../../config/environment','./intServicenowField.controller','get','index','/:id','isAuthenticated','show','post','create','delete','destroy','path','connect-timeout','Router'];(function(_0x21bfab,_0x2fee48){var _0x4db318=function(_0x10396d){while(--_0x10396d){_0x21bfab['push'](_0x21bfab['shift']());}};_0x4db318(++_0x2fee48);}(_0x749a,0x169));var _0xa749=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x749a[_0x20a584];return _0x4b41a8;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xa749('0x0'));var timeout=require(_0xa749('0x1'));var express=require('express');var router=express[_0xa749('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xa749('0x3'));var controller=require(_0xa749('0x4'));router[_0xa749('0x5')]('/',auth['isAuthenticated'](),controller[_0xa749('0x6')]);router[_0xa749('0x5')](_0xa749('0x7'),auth[_0xa749('0x8')](),controller[_0xa749('0x9')]);router[_0xa749('0xa')]('/',auth[_0xa749('0x8')](),controller[_0xa749('0xb')]);router['put']('/:id',auth[_0xa749('0x8')](),controller['update']);router[_0xa749('0xc')]('/:id',auth['isAuthenticated'](),controller[_0xa749('0xd')]);module['exports']=router;
\ No newline at end of file
index d2d6b29..0b22217 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14d9=['keyValue','picklist','STRING','BOOLEAN','exports','ENUM','string','variable','customVariable'];(function(_0x3281cc,_0x1226a7){var _0x1bc18b=function(_0x3f8283){while(--_0x3f8283){_0x3281cc['push'](_0x3281cc['shift']());}};_0x1bc18b(++_0x1226a7);}(_0x14d9,0x13f));var _0x914d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x14d9[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module[_0x914d('0x0')]={'type':{'type':Sequelize[_0x914d('0x1')](_0x914d('0x2'),_0x914d('0x3'),_0x914d('0x4'),_0x914d('0x5'),_0x914d('0x6')),'defaultValue':_0x914d('0x2')},'content':{'type':Sequelize[_0x914d('0x7')]},'key':{'type':Sequelize[_0x914d('0x7')]},'keyType':{'type':Sequelize[_0x914d('0x1')](_0x914d('0x2'),_0x914d('0x3'),_0x914d('0x4'))},'keyContent':{'type':Sequelize[_0x914d('0x7')]},'idField':{'type':Sequelize[_0x914d('0x7')]},'nameField':{'type':Sequelize[_0x914d('0x7')]},'customField':{'type':Sequelize[_0x914d('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x914d('0x7')]}};
\ No newline at end of file
+var _0x0cbd=['keyValue','STRING','BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable'];(function(_0x4418e0,_0x1c0477){var _0x5cafb9=function(_0xfdf38b){while(--_0xfdf38b){_0x4418e0['push'](_0x4418e0['shift']());}};_0x5cafb9(++_0x1c0477);}(_0x0cbd,0xb7));var _0xd0cb=function(_0x5a2ac2,_0x3b668d){_0x5a2ac2=_0x5a2ac2-0x0;var _0x6b558=_0x0cbd[_0x5a2ac2];return _0x6b558;};'use strict';var Sequelize=require(_0xd0cb('0x0'));module[_0xd0cb('0x1')]={'type':{'type':Sequelize[_0xd0cb('0x2')](_0xd0cb('0x3'),_0xd0cb('0x4'),_0xd0cb('0x5'),_0xd0cb('0x6'),'picklist'),'defaultValue':_0xd0cb('0x3')},'content':{'type':Sequelize[_0xd0cb('0x7')]},'key':{'type':Sequelize[_0xd0cb('0x7')]},'keyType':{'type':Sequelize[_0xd0cb('0x2')](_0xd0cb('0x3'),_0xd0cb('0x4'),_0xd0cb('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xd0cb('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xd0cb('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index c0a7d7c..d74bd38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e3b=['VIRTUAL','options','ServicenowField','includeAll','include','findAll','rows','catch','show','keys','find','create','body','params','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','end','error','name','send','index','map','rawAttributes','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge'];(function(_0x4ad9ff,_0xa8e5e8){var _0x1a8afc=function(_0x1195b5){while(--_0x1195b5){_0x4ad9ff['push'](_0x4ad9ff['shift']());}};_0x1a8afc(++_0xa8e5e8);}(_0x0e3b,0xfb));var _0xb0e3=function(_0x389da0,_0x136b50){_0x389da0=_0x389da0-0x0;var _0x5e8153=_0x0e3b[_0x389da0];return _0x5e8153;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb0e3('0x0'));var zipdir=require(_0xb0e3('0x1'));var jsonpatch=require(_0xb0e3('0x2'));var rp=require(_0xb0e3('0x3'));var moment=require('moment');var BPromise=require(_0xb0e3('0x4'));var Mustache=require(_0xb0e3('0x5'));var util=require(_0xb0e3('0x6'));var path=require('path');var sox=require(_0xb0e3('0x7'));var csv=require(_0xb0e3('0x8'));var ejs=require(_0xb0e3('0x9'));var fs=require('fs');var fs_extra=require(_0xb0e3('0xa'));var _=require(_0xb0e3('0xb'));var squel=require(_0xb0e3('0xc'));var crypto=require(_0xb0e3('0xd'));var jsforce=require(_0xb0e3('0xe'));var deskjs=require(_0xb0e3('0xf'));var toCsv=require('to-csv');var querystring=require(_0xb0e3('0x10'));var Papa=require(_0xb0e3('0x11'));var Redis=require(_0xb0e3('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xb0e3('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb0e3('0x14'));var logger=require(_0xb0e3('0x15'))(_0xb0e3('0x16'));var utils=require(_0xb0e3('0x17'));var config=require(_0xb0e3('0x18'));var licenseUtil=require(_0xb0e3('0x19'));var db=require(_0xb0e3('0x1a'))['db'];function respondWithStatusCode(_0x1fed77,_0x595456){_0x595456=_0x595456||0xcc;return function(_0x229f1f){if(_0x229f1f){return _0x1fed77[_0xb0e3('0x1b')](_0x595456);}return _0x1fed77[_0xb0e3('0x1c')](_0x595456)['end']();};}function respondWithResult(_0x155165,_0xa93cc){_0xa93cc=_0xa93cc||0xc8;return function(_0x36e63a){if(_0x36e63a){return _0x155165[_0xb0e3('0x1c')](_0xa93cc)[_0xb0e3('0x1d')](_0x36e63a);}};}function respondWithFilteredResult(_0x11eac1,_0x2f21ea){return function(_0x4046d5){if(_0x4046d5){var _0x120f6d=typeof _0x2f21ea[_0xb0e3('0x1e')]===_0xb0e3('0x1f')&&typeof _0x2f21ea[_0xb0e3('0x20')]===_0xb0e3('0x1f');var _0x23e15b=_0x4046d5['count'];var _0x3177d9=_0x120f6d?0x0:_0x2f21ea[_0xb0e3('0x1e')];var _0x19b0c8=_0x120f6d?_0x4046d5[_0xb0e3('0x21')]:_0x2f21ea[_0xb0e3('0x1e')]+_0x2f21ea[_0xb0e3('0x20')];var _0x383a63;if(_0x19b0c8>=_0x23e15b){_0x19b0c8=_0x23e15b;_0x383a63=0xc8;}else{_0x383a63=0xce;}_0x11eac1[_0xb0e3('0x1c')](_0x383a63);return _0x11eac1[_0xb0e3('0x22')](_0xb0e3('0x23'),_0x3177d9+'-'+_0x19b0c8+'/'+_0x23e15b)[_0xb0e3('0x1d')](_0x4046d5);}return null;};}function patchUpdates(_0x1884b6){return function(_0x493fd0){try{jsonpatch[_0xb0e3('0x24')](_0x493fd0,_0x1884b6,!![]);}catch(_0x25d585){return BPromise['reject'](_0x25d585);}return _0x493fd0[_0xb0e3('0x25')]();};}function saveUpdates(_0x25a7f1,_0x2bc560){return function(_0x245e2d){if(_0x245e2d){return _0x245e2d[_0xb0e3('0x26')](_0x25a7f1)[_0xb0e3('0x27')](function(_0x3a2dbf){return _0x3a2dbf;});}return null;};}function removeEntity(_0x341dfb,_0x5d78d4){return function(_0xbf1a7){if(_0xbf1a7){return _0xbf1a7[_0xb0e3('0x28')]()[_0xb0e3('0x27')](function(){_0x341dfb[_0xb0e3('0x1c')](0xcc)[_0xb0e3('0x29')]();});}};}function handleEntityNotFound(_0x436a3e,_0x411ff9){return function(_0x387d71){if(!_0x387d71){_0x436a3e[_0xb0e3('0x1b')](0x194);}return _0x387d71;};}function handleError(_0x26727f,_0x5b534c){_0x5b534c=_0x5b534c||0x1f4;return function(_0x380d39){logger[_0xb0e3('0x2a')](_0x380d39['stack']);if(_0x380d39[_0xb0e3('0x2b')]){delete _0x380d39['name'];}_0x26727f['status'](_0x5b534c)[_0xb0e3('0x2c')](_0x380d39);};}exports[_0xb0e3('0x2d')]=function(_0x52aa99,_0x461744){var _0x5ca2fd={},_0x18827e={},_0x24d72e={'count':0x0,'rows':[]};var _0xdcb4e8=_[_0xb0e3('0x2e')](db['ServicenowField'][_0xb0e3('0x2f')],function(_0x49fe45){return{'name':_0x49fe45['fieldName'],'type':_0x49fe45[_0xb0e3('0x30')][_0xb0e3('0x31')]};});_0x18827e['model']=_[_0xb0e3('0x2e')](_0xdcb4e8,_0xb0e3('0x2b'));_0x18827e['query']=_['keys'](_0x52aa99[_0xb0e3('0x32')]);_0x18827e[_0xb0e3('0x33')]=_[_0xb0e3('0x34')](_0x18827e[_0xb0e3('0x35')],_0x18827e['query']);_0x5ca2fd[_0xb0e3('0x36')]=_[_0xb0e3('0x34')](_0x18827e[_0xb0e3('0x35')],qs[_0xb0e3('0x37')](_0x52aa99[_0xb0e3('0x32')][_0xb0e3('0x37')]));_0x5ca2fd[_0xb0e3('0x36')]=_0x5ca2fd[_0xb0e3('0x36')][_0xb0e3('0x38')]?_0x5ca2fd[_0xb0e3('0x36')]:_0x18827e[_0xb0e3('0x35')];if(!_0x52aa99['query'][_0xb0e3('0x39')](_0xb0e3('0x3a'))){_0x5ca2fd[_0xb0e3('0x20')]=qs[_0xb0e3('0x20')](_0x52aa99['query'][_0xb0e3('0x20')]);_0x5ca2fd['offset']=qs[_0xb0e3('0x1e')](_0x52aa99[_0xb0e3('0x32')][_0xb0e3('0x1e')]);}_0x5ca2fd[_0xb0e3('0x3b')]=qs[_0xb0e3('0x3c')](_0x52aa99['query']['sort']);_0x5ca2fd[_0xb0e3('0x3d')]=qs[_0xb0e3('0x33')](_[_0xb0e3('0x3e')](_0x52aa99[_0xb0e3('0x32')],_0x18827e['filters']),_0xdcb4e8);if(_0x52aa99['query'][_0xb0e3('0x3f')]){_0x5ca2fd[_0xb0e3('0x3d')]=_[_0xb0e3('0x40')](_0x5ca2fd[_0xb0e3('0x3d')],{'$or':_[_0xb0e3('0x2e')](_0xdcb4e8,function(_0x58606d){if(_0x58606d['type']!==_0xb0e3('0x41')){var _0x1a9236={};_0x1a9236[_0x58606d[_0xb0e3('0x2b')]]={'$like':'%'+_0x52aa99['query'][_0xb0e3('0x3f')]+'%'};return _0x1a9236;}})});}_0x5ca2fd=_[_0xb0e3('0x40')]({},_0x5ca2fd,_0x52aa99[_0xb0e3('0x42')]);var _0x1bf4b3={'where':_0x5ca2fd[_0xb0e3('0x3d')]};return db[_0xb0e3('0x43')][_0xb0e3('0x21')](_0x1bf4b3)[_0xb0e3('0x27')](function(_0x5c5abd){_0x24d72e[_0xb0e3('0x21')]=_0x5c5abd;if(_0x52aa99[_0xb0e3('0x32')][_0xb0e3('0x44')]){_0x5ca2fd[_0xb0e3('0x45')]=[{'all':!![]}];}return db['ServicenowField'][_0xb0e3('0x46')](_0x5ca2fd);})[_0xb0e3('0x27')](function(_0x1f030d){_0x24d72e[_0xb0e3('0x47')]=_0x1f030d;return _0x24d72e;})[_0xb0e3('0x27')](respondWithFilteredResult(_0x461744,_0x5ca2fd))[_0xb0e3('0x48')](handleError(_0x461744,null));};exports[_0xb0e3('0x49')]=function(_0x57b8d2,_0x2ee774){var _0x2d8ccf={'raw':!![],'where':{'id':_0x57b8d2['params']['id']}},_0x4ff53c={};_0x4ff53c[_0xb0e3('0x35')]=_[_0xb0e3('0x4a')](db[_0xb0e3('0x43')][_0xb0e3('0x2f')]);_0x4ff53c[_0xb0e3('0x32')]=_['keys'](_0x57b8d2[_0xb0e3('0x32')]);_0x4ff53c[_0xb0e3('0x33')]=_['intersection'](_0x4ff53c[_0xb0e3('0x35')],_0x4ff53c[_0xb0e3('0x32')]);_0x2d8ccf[_0xb0e3('0x36')]=_['intersection'](_0x4ff53c[_0xb0e3('0x35')],qs['fields'](_0x57b8d2[_0xb0e3('0x32')]['fields']));_0x2d8ccf[_0xb0e3('0x36')]=_0x2d8ccf[_0xb0e3('0x36')][_0xb0e3('0x38')]?_0x2d8ccf['attributes']:_0x4ff53c['model'];if(_0x57b8d2[_0xb0e3('0x32')]['includeAll']){_0x2d8ccf['include']=[{'all':!![]}];}_0x2d8ccf=_[_0xb0e3('0x40')]({},_0x2d8ccf,_0x57b8d2['options']);return db[_0xb0e3('0x43')][_0xb0e3('0x4b')](_0x2d8ccf)[_0xb0e3('0x27')](handleEntityNotFound(_0x2ee774,null))[_0xb0e3('0x27')](respondWithResult(_0x2ee774,null))[_0xb0e3('0x48')](handleError(_0x2ee774,null));};exports[_0xb0e3('0x4c')]=function(_0x52c609,_0x174d96){return db[_0xb0e3('0x43')]['create'](_0x52c609[_0xb0e3('0x4d')],{})[_0xb0e3('0x27')](respondWithResult(_0x174d96,0xc9))['catch'](handleError(_0x174d96,null));};exports[_0xb0e3('0x26')]=function(_0x57ef53,_0x3239a1){if(_0x57ef53['body']['id']){delete _0x57ef53[_0xb0e3('0x4d')]['id'];}return db[_0xb0e3('0x43')][_0xb0e3('0x4b')]({'where':{'id':_0x57ef53[_0xb0e3('0x4e')]['id']}})[_0xb0e3('0x27')](handleEntityNotFound(_0x3239a1,null))['then'](saveUpdates(_0x57ef53[_0xb0e3('0x4d')],null))[_0xb0e3('0x27')](respondWithResult(_0x3239a1,null))[_0xb0e3('0x48')](handleError(_0x3239a1,null));};exports[_0xb0e3('0x28')]=function(_0x49a104,_0x2e981b){return db[_0xb0e3('0x43')]['find']({'where':{'id':_0x49a104[_0xb0e3('0x4e')]['id']}})['then'](handleEntityNotFound(_0x2e981b,null))['then'](removeEntity(_0x2e981b,null))[_0xb0e3('0x48')](handleError(_0x2e981b,null));};
\ No newline at end of file
+var _0xcf09=['limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','ServicenowField','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','filter','where','VIRTUAL','options','includeAll','findAll','rows','catch','show','keys','include','merge','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined'];(function(_0xe4feb6,_0x13474f){var _0x29c6ac=function(_0x8bb2f7){while(--_0x8bb2f7){_0xe4feb6['push'](_0xe4feb6['shift']());}};_0x29c6ac(++_0x13474f);}(_0xcf09,0xc8));var _0x9cf0=function(_0x1c5f66,_0x3cc252){_0x1c5f66=_0x1c5f66-0x0;var _0x156576=_0xcf09[_0x1c5f66];return _0x156576;};'use strict';var emlformat=require(_0x9cf0('0x0'));var rimraf=require(_0x9cf0('0x1'));var zipdir=require(_0x9cf0('0x2'));var jsonpatch=require(_0x9cf0('0x3'));var rp=require(_0x9cf0('0x4'));var moment=require('moment');var BPromise=require(_0x9cf0('0x5'));var Mustache=require(_0x9cf0('0x6'));var util=require(_0x9cf0('0x7'));var path=require(_0x9cf0('0x8'));var sox=require(_0x9cf0('0x9'));var csv=require(_0x9cf0('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9cf0('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x9cf0('0xc'));var deskjs=require(_0x9cf0('0xd'));var toCsv=require(_0x9cf0('0xa'));var querystring=require(_0x9cf0('0xe'));var Papa=require(_0x9cf0('0xf'));var Redis=require(_0x9cf0('0x10'));var authService=require(_0x9cf0('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x9cf0('0x12'));var hardwareService=require(_0x9cf0('0x13'));var logger=require(_0x9cf0('0x14'))(_0x9cf0('0x15'));var utils=require('../../config/utils');var config=require(_0x9cf0('0x16'));var licenseUtil=require(_0x9cf0('0x17'));var db=require(_0x9cf0('0x18'))['db'];function respondWithStatusCode(_0x5a03b6,_0x436a2b){_0x436a2b=_0x436a2b||0xcc;return function(_0x862f66){if(_0x862f66){return _0x5a03b6[_0x9cf0('0x19')](_0x436a2b);}return _0x5a03b6['status'](_0x436a2b)[_0x9cf0('0x1a')]();};}function respondWithResult(_0x4f69c9,_0x56effc){_0x56effc=_0x56effc||0xc8;return function(_0x12a5e3){if(_0x12a5e3){return _0x4f69c9[_0x9cf0('0x1b')](_0x56effc)[_0x9cf0('0x1c')](_0x12a5e3);}};}function respondWithFilteredResult(_0x2b9e07,_0x44f017){return function(_0x2d08d8){if(_0x2d08d8){var _0x47734e=typeof _0x44f017[_0x9cf0('0x1d')]===_0x9cf0('0x1e')&&typeof _0x44f017[_0x9cf0('0x1f')]===_0x9cf0('0x1e');var _0x11ee04=_0x2d08d8[_0x9cf0('0x20')];var _0x118469=_0x47734e?0x0:_0x44f017['offset'];var _0x583aa7=_0x47734e?_0x2d08d8['count']:_0x44f017['offset']+_0x44f017[_0x9cf0('0x1f')];var _0x238dce;if(_0x583aa7>=_0x11ee04){_0x583aa7=_0x11ee04;_0x238dce=0xc8;}else{_0x238dce=0xce;}_0x2b9e07['status'](_0x238dce);return _0x2b9e07[_0x9cf0('0x21')](_0x9cf0('0x22'),_0x118469+'-'+_0x583aa7+'/'+_0x11ee04)[_0x9cf0('0x1c')](_0x2d08d8);}return null;};}function patchUpdates(_0x435844){return function(_0x1320ca){try{jsonpatch[_0x9cf0('0x23')](_0x1320ca,_0x435844,!![]);}catch(_0x47a551){return BPromise[_0x9cf0('0x24')](_0x47a551);}return _0x1320ca[_0x9cf0('0x25')]();};}function saveUpdates(_0x3d4029,_0x7710bc){return function(_0x23edb0){if(_0x23edb0){return _0x23edb0[_0x9cf0('0x26')](_0x3d4029)[_0x9cf0('0x27')](function(_0x23122f){return _0x23122f;});}return null;};}function removeEntity(_0x36342d,_0x1e1815){return function(_0x4f83c8){if(_0x4f83c8){return _0x4f83c8[_0x9cf0('0x28')]()[_0x9cf0('0x27')](function(){_0x36342d[_0x9cf0('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x121c2d,_0x1265c0){return function(_0x3eeea1){if(!_0x3eeea1){_0x121c2d[_0x9cf0('0x19')](0x194);}return _0x3eeea1;};}function handleError(_0x5114d5,_0x264350){_0x264350=_0x264350||0x1f4;return function(_0x352a6f){logger[_0x9cf0('0x29')](_0x352a6f[_0x9cf0('0x2a')]);if(_0x352a6f['name']){delete _0x352a6f[_0x9cf0('0x2b')];}_0x5114d5[_0x9cf0('0x1b')](_0x264350)[_0x9cf0('0x2c')](_0x352a6f);};}exports[_0x9cf0('0x2d')]=function(_0x19f7bb,_0x1adb65){var _0x63afe={},_0x3b06b8={},_0x25b7ac={'count':0x0,'rows':[]};var _0x56bd93=_[_0x9cf0('0x2e')](db[_0x9cf0('0x2f')][_0x9cf0('0x30')],function(_0x1adff7){return{'name':_0x1adff7['fieldName'],'type':_0x1adff7[_0x9cf0('0x31')][_0x9cf0('0x32')]};});_0x3b06b8[_0x9cf0('0x33')]=_[_0x9cf0('0x2e')](_0x56bd93,'name');_0x3b06b8[_0x9cf0('0x34')]=_['keys'](_0x19f7bb[_0x9cf0('0x34')]);_0x3b06b8[_0x9cf0('0x35')]=_[_0x9cf0('0x36')](_0x3b06b8['model'],_0x3b06b8['query']);_0x63afe[_0x9cf0('0x37')]=_[_0x9cf0('0x36')](_0x3b06b8[_0x9cf0('0x33')],qs[_0x9cf0('0x38')](_0x19f7bb['query'][_0x9cf0('0x38')]));_0x63afe['attributes']=_0x63afe[_0x9cf0('0x37')][_0x9cf0('0x39')]?_0x63afe[_0x9cf0('0x37')]:_0x3b06b8[_0x9cf0('0x33')];if(!_0x19f7bb['query'][_0x9cf0('0x3a')](_0x9cf0('0x3b'))){_0x63afe['limit']=qs[_0x9cf0('0x1f')](_0x19f7bb['query'][_0x9cf0('0x1f')]);_0x63afe[_0x9cf0('0x1d')]=qs[_0x9cf0('0x1d')](_0x19f7bb[_0x9cf0('0x34')][_0x9cf0('0x1d')]);}_0x63afe['order']=qs[_0x9cf0('0x3c')](_0x19f7bb['query'][_0x9cf0('0x3c')]);_0x63afe['where']=qs[_0x9cf0('0x35')](_['pick'](_0x19f7bb['query'],_0x3b06b8[_0x9cf0('0x35')]),_0x56bd93);if(_0x19f7bb[_0x9cf0('0x34')][_0x9cf0('0x3d')]){_0x63afe[_0x9cf0('0x3e')]=_['merge'](_0x63afe['where'],{'$or':_['map'](_0x56bd93,function(_0x2f3501){if(_0x2f3501[_0x9cf0('0x31')]!==_0x9cf0('0x3f')){var _0x2d7c16={};_0x2d7c16[_0x2f3501['name']]={'$like':'%'+_0x19f7bb[_0x9cf0('0x34')][_0x9cf0('0x3d')]+'%'};return _0x2d7c16;}})});}_0x63afe=_['merge']({},_0x63afe,_0x19f7bb[_0x9cf0('0x40')]);var _0x3be39a={'where':_0x63afe['where']};return db[_0x9cf0('0x2f')][_0x9cf0('0x20')](_0x3be39a)[_0x9cf0('0x27')](function(_0x3b3466){_0x25b7ac[_0x9cf0('0x20')]=_0x3b3466;if(_0x19f7bb[_0x9cf0('0x34')][_0x9cf0('0x41')]){_0x63afe['include']=[{'all':!![]}];}return db['ServicenowField'][_0x9cf0('0x42')](_0x63afe);})[_0x9cf0('0x27')](function(_0x453ffb){_0x25b7ac[_0x9cf0('0x43')]=_0x453ffb;return _0x25b7ac;})[_0x9cf0('0x27')](respondWithFilteredResult(_0x1adb65,_0x63afe))[_0x9cf0('0x44')](handleError(_0x1adb65,null));};exports[_0x9cf0('0x45')]=function(_0x7c9915,_0x1a2386){var _0x4d7c9e={'raw':!![],'where':{'id':_0x7c9915['params']['id']}},_0x317184={};_0x317184['model']=_[_0x9cf0('0x46')](db[_0x9cf0('0x2f')]['rawAttributes']);_0x317184[_0x9cf0('0x34')]=_[_0x9cf0('0x46')](_0x7c9915[_0x9cf0('0x34')]);_0x317184[_0x9cf0('0x35')]=_['intersection'](_0x317184[_0x9cf0('0x33')],_0x317184[_0x9cf0('0x34')]);_0x4d7c9e[_0x9cf0('0x37')]=_[_0x9cf0('0x36')](_0x317184['model'],qs['fields'](_0x7c9915[_0x9cf0('0x34')][_0x9cf0('0x38')]));_0x4d7c9e['attributes']=_0x4d7c9e[_0x9cf0('0x37')][_0x9cf0('0x39')]?_0x4d7c9e[_0x9cf0('0x37')]:_0x317184[_0x9cf0('0x33')];if(_0x7c9915[_0x9cf0('0x34')][_0x9cf0('0x41')]){_0x4d7c9e[_0x9cf0('0x47')]=[{'all':!![]}];}_0x4d7c9e=_[_0x9cf0('0x48')]({},_0x4d7c9e,_0x7c9915[_0x9cf0('0x40')]);return db[_0x9cf0('0x2f')][_0x9cf0('0x49')](_0x4d7c9e)[_0x9cf0('0x27')](handleEntityNotFound(_0x1a2386,null))[_0x9cf0('0x27')](respondWithResult(_0x1a2386,null))[_0x9cf0('0x44')](handleError(_0x1a2386,null));};exports[_0x9cf0('0x4a')]=function(_0x263eee,_0x260b79){return db[_0x9cf0('0x2f')][_0x9cf0('0x4a')](_0x263eee[_0x9cf0('0x4b')],{})[_0x9cf0('0x27')](respondWithResult(_0x260b79,0xc9))['catch'](handleError(_0x260b79,null));};exports[_0x9cf0('0x26')]=function(_0x258537,_0x231966){if(_0x258537['body']['id']){delete _0x258537[_0x9cf0('0x4b')]['id'];}return db[_0x9cf0('0x2f')][_0x9cf0('0x49')]({'where':{'id':_0x258537[_0x9cf0('0x4c')]['id']}})['then'](handleEntityNotFound(_0x231966,null))['then'](saveUpdates(_0x258537[_0x9cf0('0x4b')],null))[_0x9cf0('0x27')](respondWithResult(_0x231966,null))[_0x9cf0('0x44')](handleError(_0x231966,null));};exports['destroy']=function(_0x57dbc6,_0x166dbc){return db[_0x9cf0('0x2f')][_0x9cf0('0x49')]({'where':{'id':_0x57dbc6[_0x9cf0('0x4c')]['id']}})[_0x9cf0('0x27')](handleEntityNotFound(_0x166dbc,null))[_0x9cf0('0x27')](removeEntity(_0x166dbc,null))[_0x9cf0('0x44')](handleError(_0x166dbc,null));};
\ No newline at end of file
index 4696be2..e5a7727 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x034f=['FieldId','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','exports','define','ServicenowField','int_servicenow_fields','servicenow_unique_index','idField'];(function(_0x36436d,_0x20292c){var _0x34615d=function(_0x5447af){while(--_0x5447af){_0x36436d['push'](_0x36436d['shift']());}};_0x34615d(++_0x20292c);}(_0x034f,0x7f));var _0xf034=function(_0x2cbc93,_0x728161){_0x2cbc93=_0x2cbc93-0x0;var _0x303598=_0x034f[_0x2cbc93];return _0x303598;};'use strict';var _=require('lodash');var util=require(_0xf034('0x0'));var logger=require(_0xf034('0x1'))(_0xf034('0x2'));var moment=require('moment');var BPromise=require(_0xf034('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf034('0x4'));var rimraf=require(_0xf034('0x5'));var config=require(_0xf034('0x6'));var attributes=require('./intServicenowField.attributes');module[_0xf034('0x7')]=function(_0x4da853,_0x5f35ab){return _0x4da853[_0xf034('0x8')](_0xf034('0x9'),attributes,{'tableName':_0xf034('0xa'),'paranoid':![],'indexes':[{'name':_0xf034('0xb'),'fields':[_0xf034('0xc'),_0xf034('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7417=['idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','path','../../config/environment','./intServicenowField.attributes','exports','define','ServicenowField','int_servicenow_fields','servicenow_unique_index'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7417,0x112));var _0x7741=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x7417[_0x432682];return _0x463d05;};'use strict';var _=require(_0x7741('0x0'));var util=require(_0x7741('0x1'));var logger=require(_0x7741('0x2'))(_0x7741('0x3'));var moment=require(_0x7741('0x4'));var BPromise=require(_0x7741('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7741('0x6'));var rimraf=require('rimraf');var config=require(_0x7741('0x7'));var attributes=require(_0x7741('0x8'));module[_0x7741('0x9')]=function(_0x291bb0,_0x21c5a3){return _0x291bb0[_0x7741('0xa')](_0x7741('0xb'),attributes,{'tableName':_0x7741('0xc'),'paranoid':![],'indexes':[{'name':_0x7741('0xd'),'fields':[_0x7741('0xe'),_0x7741('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index b939371..5927998 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['code','message','ServicenowField,\x20%s,\x20%s','result','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','debug','ServicenowField,\x20%s,\x20%s,\x20%s','request\x20sent','error'];(function(_0x3427af,_0x558a08){var _0x24d5a7=function(_0x78c7ee){while(--_0x78c7ee){_0x3427af['push'](_0x3427af['shift']());}};_0x24d5a7(++_0x558a08);}(_0x9bde,0xe1));var _0xe9bd=function(_0x32fab6,_0x49bb58){_0x32fab6=_0x32fab6-0x0;var _0x5bc0ea=_0x9bde[_0x32fab6];return _0x5bc0ea;};'use strict';var _=require('lodash');var util=require(_0xe9bd('0x0'));var moment=require('moment');var BPromise=require(_0xe9bd('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe9bd('0x2'));var db=require(_0xe9bd('0x3'))['db'];var utils=require(_0xe9bd('0x4'));var logger=require(_0xe9bd('0x5'))(_0xe9bd('0x6'));var config=require(_0xe9bd('0x7'));var jayson=require(_0xe9bd('0x8'));var client=jayson['client'][_0xe9bd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5f18fe,_0x22a438,_0xa66ae2){return new BPromise(function(_0x2d5c75,_0x3ef9e3){return client[_0xe9bd('0xa')](_0x5f18fe,_0xa66ae2)[_0xe9bd('0xb')](function(_0x439abc){logger[_0xe9bd('0xc')]('ServicenowField,\x20%s,\x20%s',_0x22a438,'request\x20sent');logger[_0xe9bd('0xd')](_0xe9bd('0xe'),_0x22a438,_0xe9bd('0xf'),JSON['stringify'](_0x439abc));if(_0x439abc[_0xe9bd('0x10')]){if(_0x439abc[_0xe9bd('0x10')][_0xe9bd('0x11')]===0x1f4){logger[_0xe9bd('0x10')]('ServicenowField,\x20%s,\x20%s',_0x22a438,_0x439abc[_0xe9bd('0x10')]['message']);return _0x3ef9e3(_0x439abc[_0xe9bd('0x10')][_0xe9bd('0x12')]);}logger[_0xe9bd('0x10')]('ServicenowField,\x20%s,\x20%s',_0x22a438,_0x439abc['error'][_0xe9bd('0x12')]);return _0x2d5c75(_0x439abc[_0xe9bd('0x10')][_0xe9bd('0x12')]);}else{logger[_0xe9bd('0xc')](_0xe9bd('0x13'),_0x22a438,_0xe9bd('0xf'));_0x2d5c75(_0x439abc[_0xe9bd('0x14')]['message']);}})[_0xe9bd('0x15')](function(_0x464a1b){logger[_0xe9bd('0x10')]('ServicenowField,\x20%s,\x20%s',_0x22a438,_0x464a1b);_0x3ef9e3(_0x464a1b);});});}
\ No newline at end of file
+var _0xf4eb=['ServicenowField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x23c284,_0x436efd){var _0x5da5ca=function(_0x5dc835){while(--_0x5dc835){_0x23c284['push'](_0x23c284['shift']());}};_0x5da5ca(++_0x436efd);}(_0xf4eb,0xec));var _0xbf4e=function(_0x28e056,_0x38a2e8){_0x28e056=_0x28e056-0x0;var _0x5e7d83=_0xf4eb[_0x28e056];return _0x5e7d83;};'use strict';var _=require(_0xbf4e('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbf4e('0x1'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xbf4e('0x2'))(_0xbf4e('0x3'));var config=require(_0xbf4e('0x4'));var jayson=require(_0xbf4e('0x5'));var client=jayson[_0xbf4e('0x6')][_0xbf4e('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x15b99f,_0x540736,_0x449d55){return new BPromise(function(_0x5013c2,_0x5e23d4){return client[_0xbf4e('0x8')](_0x15b99f,_0x449d55)[_0xbf4e('0x9')](function(_0xcc4097){logger[_0xbf4e('0xa')](_0xbf4e('0xb'),_0x540736,_0xbf4e('0xc'));logger[_0xbf4e('0xd')]('ServicenowField,\x20%s,\x20%s,\x20%s',_0x540736,'request\x20sent',JSON[_0xbf4e('0xe')](_0xcc4097));if(_0xcc4097['error']){if(_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x10')]===0x1f4){logger['error'](_0xbf4e('0xb'),_0x540736,_0xcc4097['error']['message']);return _0x5e23d4(_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x11')]);}logger[_0xbf4e('0xf')](_0xbf4e('0xb'),_0x540736,_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x11')]);return _0x5013c2(_0xcc4097['error']['message']);}else{logger[_0xbf4e('0xa')](_0xbf4e('0xb'),_0x540736,_0xbf4e('0xc'));_0x5013c2(_0xcc4097['result'][_0xbf4e('0x11')]);}})[_0xbf4e('0x12')](function(_0x912fc0){logger[_0xbf4e('0xf')]('ServicenowField,\x20%s,\x20%s',_0x540736,_0x912fc0);_0x5e23d4(_0x912fc0);});});}
\ No newline at end of file
index fe5f535..0044290 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSugarcrmAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x2313c0,_0x4a1d11){var _0x5c736f=function(_0x24481a){while(--_0x24481a){_0x2313c0['push'](_0x2313c0['shift']());}};_0x5c736f(++_0x4a1d11);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
+var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSugarcrmAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x1e51f9,_0x5bebaf){var _0x2f3890=function(_0x45535a){while(--_0x45535a){_0x1e51f9['push'](_0x1e51f9['shift']());}};_0x2f3890(++_0x5bebaf);}(_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 987732f..c367c38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x3f5406,_0x4a6ce7){var _0x2045d8=function(_0x1bc781){while(--_0x1bc781){_0x3f5406['push'](_0x3f5406['shift']());}};_0x2045d8(++_0x4a6ce7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1c546c,_0x5c57cb){_0x1c546c=_0x1c546c-0x0;var _0x2cc384=_0xa9e0[_0x1c546c];return _0x2cc384;};'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(_0x4857e0,_0x18c55c){var _0x4ebc14=function(_0xc147d4){while(--_0xc147d4){_0x4857e0['push'](_0x4857e0['shift']());}};_0x4ebc14(++_0x18c55c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c2a69,_0x4c8b41){_0x3c2a69=_0x3c2a69-0x0;var _0x596bc8=_0xa9e0[_0x3c2a69];return _0x596bc8;};'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 6e408fd..0c6ccea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf56b=['end','error','send','index','map','SugarcrmAccount','rawAttributes','type','key','model','query','intersection','attributes','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','findAll','show','params','keys','includeAll','find','catch','create','body','getConfigurations','findOne','SugarcrmConfiguration','addConfiguration','AccountId','getSubjects','Descriptions','getDescriptions','channel','SugarcrmField','Subjects','getFields','name','created_by','description','duration_hours','duration_minutes','parent_id','parent_name','username','password','remoteUri','slice','substring','lastIndexOf','POST','format','%s%s','/service/v4_1/rest.php','login','JSON','xCALLY\x20Motion\x20Integration','Password\x20Expired','stringify','Calls','values','module_fields','remove','includes','endsWith','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy'];(function(_0x1a151d,_0x4e9f33){var _0x53d471=function(_0x18ab51){while(--_0x18ab51){_0x1a151d['push'](_0x1a151d['shift']());}};_0x53d471(++_0x4e9f33);}(_0xf56b,0x13c));var _0xbf56=function(_0x7a7673,_0x53eb9b){_0x7a7673=_0x7a7673-0x0;var _0x20eda1=_0xf56b[_0x7a7673];return _0x20eda1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbf56('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbf56('0x1'));var rp=require(_0xbf56('0x2'));var moment=require(_0xbf56('0x3'));var BPromise=require(_0xbf56('0x4'));var Mustache=require(_0xbf56('0x5'));var util=require(_0xbf56('0x6'));var path=require(_0xbf56('0x7'));var sox=require(_0xbf56('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbf56('0x9'));var squel=require('squel');var crypto=require(_0xbf56('0xa'));var jsforce=require(_0xbf56('0xb'));var deskjs=require(_0xbf56('0xc'));var toCsv=require(_0xbf56('0xd'));var querystring=require(_0xbf56('0xe'));var Papa=require(_0xbf56('0xf'));var Redis=require(_0xbf56('0x10'));var authService=require(_0xbf56('0x11'));var qs=require(_0xbf56('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbf56('0x13'));var logger=require(_0xbf56('0x14'))(_0xbf56('0x15'));var utils=require(_0xbf56('0x16'));var config=require(_0xbf56('0x17'));var licenseUtil=require(_0xbf56('0x18'));var db=require(_0xbf56('0x19'))['db'];var integrations=require(_0xbf56('0x1a'));function respondWithStatusCode(_0x432383,_0x55bc0a){_0x55bc0a=_0x55bc0a||0xcc;return function(_0x397b7d){if(_0x397b7d){return _0x432383[_0xbf56('0x1b')](_0x55bc0a);}return _0x432383['status'](_0x55bc0a)['end']();};}function respondWithResult(_0x4baa92,_0x250570){_0x250570=_0x250570||0xc8;return function(_0x102c9c){if(_0x102c9c){return _0x4baa92[_0xbf56('0x1c')](_0x250570)[_0xbf56('0x1d')](_0x102c9c);}};}function respondWithFilteredResult(_0x455bbd,_0x3765d7){return function(_0x143c24){if(_0x143c24){var _0x2373a0=typeof _0x3765d7[_0xbf56('0x1e')]===_0xbf56('0x1f')&&typeof _0x3765d7[_0xbf56('0x20')]===_0xbf56('0x1f');var _0x1bd163=_0x143c24[_0xbf56('0x21')];var _0x332c25=_0x2373a0?0x0:_0x3765d7[_0xbf56('0x1e')];var _0x4fb36a=_0x2373a0?_0x143c24[_0xbf56('0x21')]:_0x3765d7[_0xbf56('0x1e')]+_0x3765d7[_0xbf56('0x20')];var _0x18eae3;if(_0x4fb36a>=_0x1bd163){_0x4fb36a=_0x1bd163;_0x18eae3=0xc8;}else{_0x18eae3=0xce;}_0x455bbd['status'](_0x18eae3);return _0x455bbd[_0xbf56('0x22')](_0xbf56('0x23'),_0x332c25+'-'+_0x4fb36a+'/'+_0x1bd163)['json'](_0x143c24);}return null;};}function patchUpdates(_0x3bb8ef){return function(_0x23cd35){try{jsonpatch['apply'](_0x23cd35,_0x3bb8ef,!![]);}catch(_0x78eb1d){return BPromise[_0xbf56('0x24')](_0x78eb1d);}return _0x23cd35[_0xbf56('0x25')]();};}function saveUpdates(_0xb489cc,_0x519691){return function(_0x8a3284){if(_0x8a3284){return _0x8a3284[_0xbf56('0x26')](_0xb489cc)[_0xbf56('0x27')](function(_0x1c9a3e){return _0x1c9a3e;});}return null;};}function removeEntity(_0x2fba65,_0x23b32a){return function(_0x577589){if(_0x577589){return _0x577589[_0xbf56('0x28')]()[_0xbf56('0x27')](function(){_0x2fba65[_0xbf56('0x1c')](0xcc)[_0xbf56('0x29')]();});}};}function handleEntityNotFound(_0x549298,_0x436026){return function(_0x290c2a){if(!_0x290c2a){_0x549298[_0xbf56('0x1b')](0x194);}return _0x290c2a;};}function handleError(_0x4c3309,_0x2addef){_0x2addef=_0x2addef||0x1f4;return function(_0x33ff02){logger[_0xbf56('0x2a')](_0x33ff02['stack']);if(_0x33ff02['name']){delete _0x33ff02['name'];}_0x4c3309['status'](_0x2addef)[_0xbf56('0x2b')](_0x33ff02);};}exports[_0xbf56('0x2c')]=function(_0x3b688b,_0x4e3c70){var _0x398f0f={},_0x46c4b5={},_0x432dc2={'count':0x0,'rows':[]};var _0x35f05c=_[_0xbf56('0x2d')](db[_0xbf56('0x2e')][_0xbf56('0x2f')],function(_0x27679e){return{'name':_0x27679e['fieldName'],'type':_0x27679e[_0xbf56('0x30')][_0xbf56('0x31')]};});_0x46c4b5[_0xbf56('0x32')]=_['map'](_0x35f05c,'name');_0x46c4b5[_0xbf56('0x33')]=_['keys'](_0x3b688b[_0xbf56('0x33')]);_0x46c4b5['filters']=_[_0xbf56('0x34')](_0x46c4b5[_0xbf56('0x32')],_0x46c4b5[_0xbf56('0x33')]);_0x398f0f[_0xbf56('0x35')]=_[_0xbf56('0x34')](_0x46c4b5[_0xbf56('0x32')],qs[_0xbf56('0x36')](_0x3b688b[_0xbf56('0x33')]['fields']));_0x398f0f[_0xbf56('0x35')]=_0x398f0f[_0xbf56('0x35')][_0xbf56('0x37')]?_0x398f0f['attributes']:_0x46c4b5[_0xbf56('0x32')];if(!_0x3b688b['query']['hasOwnProperty'](_0xbf56('0x38'))){_0x398f0f['limit']=qs[_0xbf56('0x20')](_0x3b688b[_0xbf56('0x33')][_0xbf56('0x20')]);_0x398f0f['offset']=qs[_0xbf56('0x1e')](_0x3b688b[_0xbf56('0x33')][_0xbf56('0x1e')]);}_0x398f0f[_0xbf56('0x39')]=qs[_0xbf56('0x3a')](_0x3b688b[_0xbf56('0x33')]['sort']);_0x398f0f[_0xbf56('0x3b')]=qs[_0xbf56('0x3c')](_[_0xbf56('0x3d')](_0x3b688b[_0xbf56('0x33')],_0x46c4b5['filters']),_0x35f05c);if(_0x3b688b['query'][_0xbf56('0x3e')]){_0x398f0f[_0xbf56('0x3b')]=_[_0xbf56('0x3f')](_0x398f0f[_0xbf56('0x3b')],{'$or':_['map'](_0x35f05c,function(_0xf9fdd3){if(_0xf9fdd3['type']!==_0xbf56('0x40')){var _0x38a3fb={};_0x38a3fb[_0xf9fdd3['name']]={'$like':'%'+_0x3b688b[_0xbf56('0x33')][_0xbf56('0x3e')]+'%'};return _0x38a3fb;}})});}_0x398f0f=_['merge']({},_0x398f0f,_0x3b688b[_0xbf56('0x41')]);var _0xcabf05={'where':_0x398f0f[_0xbf56('0x3b')]};return db[_0xbf56('0x2e')]['count'](_0xcabf05)[_0xbf56('0x27')](function(_0x428ac0){_0x432dc2[_0xbf56('0x21')]=_0x428ac0;if(_0x3b688b[_0xbf56('0x33')]['includeAll']){_0x398f0f['include']=[{'all':!![]}];}return db['SugarcrmAccount'][_0xbf56('0x42')](_0x398f0f);})[_0xbf56('0x27')](function(_0x4f889f){_0x432dc2['rows']=_0x4f889f;return _0x432dc2;})[_0xbf56('0x27')](respondWithFilteredResult(_0x4e3c70,_0x398f0f))['catch'](handleError(_0x4e3c70,null));};exports[_0xbf56('0x43')]=function(_0x577b02,_0x2c777b){var _0x3de4fc={'raw':![],'where':{'id':_0x577b02[_0xbf56('0x44')]['id']}},_0x39be0b={};_0x39be0b[_0xbf56('0x32')]=_[_0xbf56('0x45')](db[_0xbf56('0x2e')][_0xbf56('0x2f')]);_0x39be0b[_0xbf56('0x33')]=_[_0xbf56('0x45')](_0x577b02[_0xbf56('0x33')]);_0x39be0b[_0xbf56('0x3c')]=_['intersection'](_0x39be0b[_0xbf56('0x32')],_0x39be0b[_0xbf56('0x33')]);_0x3de4fc['attributes']=_[_0xbf56('0x34')](_0x39be0b[_0xbf56('0x32')],qs['fields'](_0x577b02[_0xbf56('0x33')][_0xbf56('0x36')]));_0x3de4fc[_0xbf56('0x35')]=_0x3de4fc[_0xbf56('0x35')][_0xbf56('0x37')]?_0x3de4fc[_0xbf56('0x35')]:_0x39be0b[_0xbf56('0x32')];if(_0x577b02[_0xbf56('0x33')][_0xbf56('0x46')]){_0x3de4fc['include']=[{'all':!![]}];}_0x3de4fc=_[_0xbf56('0x3f')]({},_0x3de4fc,_0x577b02[_0xbf56('0x41')]);return db[_0xbf56('0x2e')][_0xbf56('0x47')](_0x3de4fc)[_0xbf56('0x27')](handleEntityNotFound(_0x2c777b,null))['then'](respondWithResult(_0x2c777b,null))[_0xbf56('0x48')](handleError(_0x2c777b,null));};exports[_0xbf56('0x49')]=function(_0x47e473,_0x384175){return db[_0xbf56('0x2e')]['create'](_0x47e473['body'],{})['then'](respondWithResult(_0x384175,0xc9))[_0xbf56('0x48')](handleError(_0x384175,null));};exports[_0xbf56('0x26')]=function(_0x1e9042,_0x4b835a){if(_0x1e9042['body']['id']){delete _0x1e9042[_0xbf56('0x4a')]['id'];}return db[_0xbf56('0x2e')][_0xbf56('0x47')]({'where':{'id':_0x1e9042[_0xbf56('0x44')]['id']}})[_0xbf56('0x27')](handleEntityNotFound(_0x4b835a,null))[_0xbf56('0x27')](saveUpdates(_0x1e9042['body'],null))[_0xbf56('0x27')](respondWithResult(_0x4b835a,null))[_0xbf56('0x48')](handleError(_0x4b835a,null));};exports[_0xbf56('0x28')]=function(_0x22198d,_0x29a290){return db[_0xbf56('0x2e')][_0xbf56('0x47')]({'where':{'id':_0x22198d[_0xbf56('0x44')]['id']}})[_0xbf56('0x27')](handleEntityNotFound(_0x29a290,null))[_0xbf56('0x27')](removeEntity(_0x29a290,null))[_0xbf56('0x48')](handleError(_0x29a290,null));};exports[_0xbf56('0x4b')]=function(_0x3b8aa3,_0x49a653,_0x116627){var _0x2d694d={};var _0x1ea6df={};var _0x5bfaec;var _0x377625;return db[_0xbf56('0x2e')][_0xbf56('0x4c')]({'where':{'id':_0x3b8aa3[_0xbf56('0x44')]['id']}})['then'](handleEntityNotFound(_0x49a653,null))['then'](function(_0xe6d8f1){if(_0xe6d8f1){_0x5bfaec=_0xe6d8f1;_0x1ea6df['model']=_[_0xbf56('0x45')](db[_0xbf56('0x4d')][_0xbf56('0x2f')]);_0x1ea6df[_0xbf56('0x33')]=_[_0xbf56('0x45')](_0x3b8aa3[_0xbf56('0x33')]);_0x1ea6df[_0xbf56('0x3c')]=_[_0xbf56('0x34')](_0x1ea6df[_0xbf56('0x32')],_0x1ea6df[_0xbf56('0x33')]);_0x2d694d[_0xbf56('0x35')]=_[_0xbf56('0x34')](_0x1ea6df[_0xbf56('0x32')],qs[_0xbf56('0x36')](_0x3b8aa3['query'][_0xbf56('0x36')]));_0x2d694d[_0xbf56('0x35')]=_0x2d694d['attributes'][_0xbf56('0x37')]?_0x2d694d[_0xbf56('0x35')]:_0x1ea6df[_0xbf56('0x32')];_0x2d694d[_0xbf56('0x39')]=qs[_0xbf56('0x3a')](_0x3b8aa3['query'][_0xbf56('0x3a')]);_0x2d694d[_0xbf56('0x3b')]=qs[_0xbf56('0x3c')](_[_0xbf56('0x3d')](_0x3b8aa3[_0xbf56('0x33')],_0x1ea6df[_0xbf56('0x3c')]));if(_0x3b8aa3['query'][_0xbf56('0x3e')]){_0x2d694d[_0xbf56('0x3b')]=_[_0xbf56('0x3f')](_0x2d694d[_0xbf56('0x3b')],{'$or':_['map'](_0x2d694d[_0xbf56('0x35')],function(_0x3ec51e){var _0x18a781={};_0x18a781[_0x3ec51e]={'$like':'%'+_0x3b8aa3[_0xbf56('0x33')][_0xbf56('0x3e')]+'%'};return _0x18a781;})});}_0x2d694d=_['merge']({},_0x2d694d,_0x3b8aa3[_0xbf56('0x41')]);return _0x5bfaec[_0xbf56('0x4b')](_0x2d694d);}})[_0xbf56('0x27')](function(_0x5ccf90){if(_0x5ccf90){_0x377625=_0x5ccf90[_0xbf56('0x37')];if(!_0x3b8aa3[_0xbf56('0x33')]['hasOwnProperty'](_0xbf56('0x38'))){_0x2d694d[_0xbf56('0x20')]=qs[_0xbf56('0x20')](_0x3b8aa3[_0xbf56('0x33')][_0xbf56('0x20')]);_0x2d694d['offset']=qs['offset'](_0x3b8aa3['query'][_0xbf56('0x1e')]);}return _0x5bfaec[_0xbf56('0x4b')](_0x2d694d);}})[_0xbf56('0x27')](function(_0x2bf508){if(_0x2bf508){return _0x2bf508?{'count':_0x377625,'rows':_0x2bf508}:null;}})['then'](respondWithResult(_0x49a653,null))[_0xbf56('0x48')](handleError(_0x49a653,null));};exports[_0xbf56('0x4e')]=function(_0x368c15,_0x599e3e,_0x2a36a2){if(_0x368c15[_0xbf56('0x4a')]['id']){delete _0x368c15[_0xbf56('0x4a')]['id'];}return db[_0xbf56('0x2e')][_0xbf56('0x4c')]({'where':{'id':_0x368c15[_0xbf56('0x44')]['id']}})['then'](handleEntityNotFound(_0x599e3e,null))['then'](function(_0x46851c){if(_0x46851c){_0x368c15['body'][_0xbf56('0x4f')]=_0x46851c['id'];_0x368c15[_0xbf56('0x4a')]['Subjects']=integrations[_0xbf56('0x50')](_0x368c15[_0xbf56('0x4a')]['channel'],_0x368c15[_0xbf56('0x4a')][_0xbf56('0x30')]);_0x368c15[_0xbf56('0x4a')][_0xbf56('0x51')]=integrations[_0xbf56('0x52')](_0x368c15['body'][_0xbf56('0x53')],_0x368c15[_0xbf56('0x4a')][_0xbf56('0x30')]);return db[_0xbf56('0x4d')][_0xbf56('0x49')](_0x368c15[_0xbf56('0x4a')],{'include':[{'model':db[_0xbf56('0x54')],'as':_0xbf56('0x55')},{'model':db[_0xbf56('0x54')],'as':_0xbf56('0x51')}]});}return null;})[_0xbf56('0x27')](respondWithResult(_0x599e3e,null))[_0xbf56('0x48')](handleError(_0x599e3e,null));};exports[_0xbf56('0x56')]=function(_0xd89dec,_0x531fbb,_0x21f843){var _0xee3b05='';var _0x5182b4=['id',_0xbf56('0x57'),'assigned_user_id',_0xbf56('0x58'),_0xbf56('0x59'),'date_start',_0xbf56('0x5a'),_0xbf56('0x5b'),_0xbf56('0x5c'),'parent_type',_0xbf56('0x5d'),'direction'];return db[_0xbf56('0x2e')][_0xbf56('0x4c')]({'where':{'id':_0xd89dec[_0xbf56('0x44')]['id']},'attributes':['id',_0xbf56('0x5e'),_0xbf56('0x5f'),'remoteUri']})['then'](handleEntityNotFound(_0x531fbb,null))[_0xbf56('0x27')](function(_0x28ac0a){if(_0x28ac0a){_0xee3b05=_0x28ac0a[_0xbf56('0x60')];var _0x3a2fca=_0xee3b05[_0xbf56('0x61')](-0x1);if(_0x3a2fca==='/'){_0xee3b05=_0xee3b05[_0xbf56('0x62')](0x0,_0xee3b05[_0xbf56('0x63')](_0x3a2fca));}return rp({'method':_0xbf56('0x64'),'uri':util[_0xbf56('0x65')](_0xbf56('0x66'),_0xee3b05,_0xbf56('0x67')),'json':!![],'form':{'method':_0xbf56('0x68'),'input_type':_0xbf56('0x69'),'response_type':_0xbf56('0x69'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x28ac0a[_0xbf56('0x5e')],'password':_0x28ac0a[_0xbf56('0x5f')],'encryption':'PLAIN'},'application':_0xbf56('0x6a')})}});}})['then'](function(_0x195909){if(_0x195909&&_0x195909[_0xbf56('0x57')]!=='Invalid\x20Login'&&_0x195909[_0xbf56('0x57')]!==_0xbf56('0x6b')){return rp({'method':_0xbf56('0x64'),'uri':util[_0xbf56('0x65')](_0xbf56('0x66'),_0xee3b05,'/service/v4_1/rest.php'),'json':!![],'form':{'method':'get_module_fields','input_type':_0xbf56('0x69'),'response_type':'JSON','rest_data':JSON[_0xbf56('0x6c')]({'session':_0x195909['id'],'module_name':_0xbf56('0x6d')})}})['then'](function(_0x1ebafa){if(_0x1ebafa){var _0xa227f=_[_0xbf56('0x6e')](_0x1ebafa[_0xbf56('0x6f')]);_[_0xbf56('0x70')](_0xa227f,function(_0x45d5a1){return _0x5182b4[_0xbf56('0x71')](_0x45d5a1[_0xbf56('0x57')]);});return{'count':_0xa227f[_0xbf56('0x37')],'rows':_['map'](_0xa227f,function(_0x105a75){return{'id':_0x105a75['name'],'name':_0x105a75['label'],'custom':_[_0xbf56('0x72')](_0x105a75[_0xbf56('0x57')],'_c')?!![]:![],'options':_0x105a75[_0xbf56('0x41')]?_[_0xbf56('0x2d')](_[_0xbf56('0x6e')](_0x105a75['options']),function(_0x486669){return{'name':_0x486669['value'],'value':_0x486669['name']};}):[]};})};}})[_0xbf56('0x27')](respondWithResult(_0x531fbb,null))['catch'](function(_0x71450a){var _0x1b699f=_0xd89dec[_0xbf56('0x33')][_0xbf56('0x73')]?0x1f4:_0x71450a[_0xbf56('0x74')]||0x1f4;logger[_0xbf56('0x2a')](_0xbf56('0x75'),'getFields',_0x1b699f,JSON['stringify'](_0x71450a));delete _0x71450a[_0xbf56('0x57')];if(_0x1b699f===0x191){_0x1b699f=0x190;}_0x531fbb[_0xbf56('0x1c')](_0x1b699f)['send'](_0xd89dec[_0xbf56('0x33')][_0xbf56('0x73')]?{'message':_0xbf56('0x76'),'statusCode':_0x71450a[_0xbf56('0x74')]}:_0x71450a);});}else{var _0x46d642=0x1f4;_0x531fbb[_0xbf56('0x1c')](_0x46d642)[_0xbf56('0x2b')]({'message':_0xbf56('0x76'),'statusCode':0x190});}});};
\ No newline at end of file
+var _0x0642=['statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','Wrong\x20credentials','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','count','limit','apply','save','then','destroy','end','sendStatus','error','stack','name','send','index','map','SugarcrmAccount','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','rawAttributes','length','options','find','catch','create','body','update','getConfigurations','findOne','SugarcrmConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','duration_hours','parent_name','password','remoteUri','slice','substring','lastIndexOf','POST','format','%s%s','login','JSON','username','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','Password\x20Expired','/service/v4_1/rest.php','stringify','Calls','values','remove','includes','label','endsWith','value','test'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x0642,0x1dc));var _0x2064=function(_0x1e4f2f,_0x35edfa){_0x1e4f2f=_0x1e4f2f-0x0;var _0xccea89=_0x0642[_0x1e4f2f];return _0xccea89;};'use strict';var emlformat=require(_0x2064('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2064('0x1'));var jsonpatch=require(_0x2064('0x2'));var rp=require(_0x2064('0x3'));var moment=require(_0x2064('0x4'));var BPromise=require(_0x2064('0x5'));var Mustache=require(_0x2064('0x6'));var util=require(_0x2064('0x7'));var path=require(_0x2064('0x8'));var sox=require('sox');var csv=require(_0x2064('0x9'));var ejs=require(_0x2064('0xa'));var fs=require('fs');var fs_extra=require(_0x2064('0xb'));var _=require(_0x2064('0xc'));var squel=require(_0x2064('0xd'));var crypto=require(_0x2064('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x2064('0xf'));var toCsv=require(_0x2064('0x9'));var querystring=require(_0x2064('0x10'));var Papa=require(_0x2064('0x11'));var Redis=require(_0x2064('0x12'));var authService=require(_0x2064('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2064('0x14'));var logger=require('../../config/logger')(_0x2064('0x15'));var utils=require(_0x2064('0x16'));var config=require(_0x2064('0x17'));var licenseUtil=require(_0x2064('0x18'));var db=require(_0x2064('0x19'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x4eb2a6,_0x3e1fbb){_0x3e1fbb=_0x3e1fbb||0xcc;return function(_0x333a04){if(_0x333a04){return _0x4eb2a6['sendStatus'](_0x3e1fbb);}return _0x4eb2a6[_0x2064('0x1a')](_0x3e1fbb)['end']();};}function respondWithResult(_0x3bc52e,_0x4b9bfa){_0x4b9bfa=_0x4b9bfa||0xc8;return function(_0x123c40){if(_0x123c40){return _0x3bc52e['status'](_0x4b9bfa)[_0x2064('0x1b')](_0x123c40);}};}function respondWithFilteredResult(_0x202655,_0x15e045){return function(_0x144c54){if(_0x144c54){var _0x46d373=typeof _0x15e045[_0x2064('0x1c')]===_0x2064('0x1d')&&typeof _0x15e045['limit']===_0x2064('0x1d');var _0x31f58c=_0x144c54[_0x2064('0x1e')];var _0x2e0687=_0x46d373?0x0:_0x15e045['offset'];var _0x542f11=_0x46d373?_0x144c54[_0x2064('0x1e')]:_0x15e045[_0x2064('0x1c')]+_0x15e045[_0x2064('0x1f')];var _0xb51d6a;if(_0x542f11>=_0x31f58c){_0x542f11=_0x31f58c;_0xb51d6a=0xc8;}else{_0xb51d6a=0xce;}_0x202655[_0x2064('0x1a')](_0xb51d6a);return _0x202655['set']('Content-Range',_0x2e0687+'-'+_0x542f11+'/'+_0x31f58c)[_0x2064('0x1b')](_0x144c54);}return null;};}function patchUpdates(_0x3bd41c){return function(_0x4a74a9){try{jsonpatch[_0x2064('0x20')](_0x4a74a9,_0x3bd41c,!![]);}catch(_0x2e76c1){return BPromise['reject'](_0x2e76c1);}return _0x4a74a9[_0x2064('0x21')]();};}function saveUpdates(_0x5752d2,_0x410a12){return function(_0x26c0cd){if(_0x26c0cd){return _0x26c0cd['update'](_0x5752d2)[_0x2064('0x22')](function(_0x188dfd){return _0x188dfd;});}return null;};}function removeEntity(_0x224711,_0x324a9e){return function(_0x3dbb65){if(_0x3dbb65){return _0x3dbb65[_0x2064('0x23')]()[_0x2064('0x22')](function(){_0x224711['status'](0xcc)[_0x2064('0x24')]();});}};}function handleEntityNotFound(_0x3aab66,_0x28ab76){return function(_0x30ae67){if(!_0x30ae67){_0x3aab66[_0x2064('0x25')](0x194);}return _0x30ae67;};}function handleError(_0x214e93,_0xa679ab){_0xa679ab=_0xa679ab||0x1f4;return function(_0x466ec6){logger[_0x2064('0x26')](_0x466ec6[_0x2064('0x27')]);if(_0x466ec6[_0x2064('0x28')]){delete _0x466ec6['name'];}_0x214e93[_0x2064('0x1a')](_0xa679ab)[_0x2064('0x29')](_0x466ec6);};}exports[_0x2064('0x2a')]=function(_0xeb0290,_0x1bc046){var _0x57d0c8={},_0x1e6f30={},_0x109c2c={'count':0x0,'rows':[]};var _0x99e055=_[_0x2064('0x2b')](db[_0x2064('0x2c')]['rawAttributes'],function(_0x4f09b1){return{'name':_0x4f09b1[_0x2064('0x2d')],'type':_0x4f09b1[_0x2064('0x2e')][_0x2064('0x2f')]};});_0x1e6f30[_0x2064('0x30')]=_[_0x2064('0x2b')](_0x99e055,_0x2064('0x28'));_0x1e6f30[_0x2064('0x31')]=_[_0x2064('0x32')](_0xeb0290[_0x2064('0x31')]);_0x1e6f30[_0x2064('0x33')]=_[_0x2064('0x34')](_0x1e6f30['model'],_0x1e6f30[_0x2064('0x31')]);_0x57d0c8[_0x2064('0x35')]=_[_0x2064('0x34')](_0x1e6f30[_0x2064('0x30')],qs[_0x2064('0x36')](_0xeb0290[_0x2064('0x31')]['fields']));_0x57d0c8['attributes']=_0x57d0c8[_0x2064('0x35')]['length']?_0x57d0c8[_0x2064('0x35')]:_0x1e6f30[_0x2064('0x30')];if(!_0xeb0290[_0x2064('0x31')][_0x2064('0x37')](_0x2064('0x38'))){_0x57d0c8[_0x2064('0x1f')]=qs['limit'](_0xeb0290[_0x2064('0x31')]['limit']);_0x57d0c8[_0x2064('0x1c')]=qs[_0x2064('0x1c')](_0xeb0290['query'][_0x2064('0x1c')]);}_0x57d0c8[_0x2064('0x39')]=qs[_0x2064('0x3a')](_0xeb0290['query']['sort']);_0x57d0c8[_0x2064('0x3b')]=qs[_0x2064('0x33')](_['pick'](_0xeb0290[_0x2064('0x31')],_0x1e6f30[_0x2064('0x33')]),_0x99e055);if(_0xeb0290[_0x2064('0x31')][_0x2064('0x3c')]){_0x57d0c8[_0x2064('0x3b')]=_[_0x2064('0x3d')](_0x57d0c8[_0x2064('0x3b')],{'$or':_['map'](_0x99e055,function(_0x287af5){if(_0x287af5[_0x2064('0x2e')]!==_0x2064('0x3e')){var _0x14ee07={};_0x14ee07[_0x287af5[_0x2064('0x28')]]={'$like':'%'+_0xeb0290[_0x2064('0x31')][_0x2064('0x3c')]+'%'};return _0x14ee07;}})});}_0x57d0c8=_[_0x2064('0x3d')]({},_0x57d0c8,_0xeb0290['options']);var _0xd671f0={'where':_0x57d0c8[_0x2064('0x3b')]};return db[_0x2064('0x2c')][_0x2064('0x1e')](_0xd671f0)['then'](function(_0x5455cf){_0x109c2c[_0x2064('0x1e')]=_0x5455cf;if(_0xeb0290[_0x2064('0x31')][_0x2064('0x3f')]){_0x57d0c8[_0x2064('0x40')]=[{'all':!![]}];}return db[_0x2064('0x2c')][_0x2064('0x41')](_0x57d0c8);})[_0x2064('0x22')](function(_0x359990){_0x109c2c[_0x2064('0x42')]=_0x359990;return _0x109c2c;})['then'](respondWithFilteredResult(_0x1bc046,_0x57d0c8))['catch'](handleError(_0x1bc046,null));};exports[_0x2064('0x43')]=function(_0x47331e,_0x52aa74){var _0x56ddd9={'raw':![],'where':{'id':_0x47331e[_0x2064('0x44')]['id']}},_0x4c7eb7={};_0x4c7eb7[_0x2064('0x30')]=_[_0x2064('0x32')](db[_0x2064('0x2c')][_0x2064('0x45')]);_0x4c7eb7[_0x2064('0x31')]=_[_0x2064('0x32')](_0x47331e[_0x2064('0x31')]);_0x4c7eb7[_0x2064('0x33')]=_[_0x2064('0x34')](_0x4c7eb7['model'],_0x4c7eb7[_0x2064('0x31')]);_0x56ddd9[_0x2064('0x35')]=_['intersection'](_0x4c7eb7['model'],qs['fields'](_0x47331e[_0x2064('0x31')][_0x2064('0x36')]));_0x56ddd9[_0x2064('0x35')]=_0x56ddd9[_0x2064('0x35')][_0x2064('0x46')]?_0x56ddd9['attributes']:_0x4c7eb7[_0x2064('0x30')];if(_0x47331e[_0x2064('0x31')][_0x2064('0x3f')]){_0x56ddd9[_0x2064('0x40')]=[{'all':!![]}];}_0x56ddd9=_[_0x2064('0x3d')]({},_0x56ddd9,_0x47331e[_0x2064('0x47')]);return db[_0x2064('0x2c')][_0x2064('0x48')](_0x56ddd9)[_0x2064('0x22')](handleEntityNotFound(_0x52aa74,null))['then'](respondWithResult(_0x52aa74,null))[_0x2064('0x49')](handleError(_0x52aa74,null));};exports[_0x2064('0x4a')]=function(_0x1819c9,_0x23c2ae){return db['SugarcrmAccount'][_0x2064('0x4a')](_0x1819c9[_0x2064('0x4b')],{})['then'](respondWithResult(_0x23c2ae,0xc9))[_0x2064('0x49')](handleError(_0x23c2ae,null));};exports[_0x2064('0x4c')]=function(_0x279e82,_0x493e92){if(_0x279e82[_0x2064('0x4b')]['id']){delete _0x279e82[_0x2064('0x4b')]['id'];}return db[_0x2064('0x2c')][_0x2064('0x48')]({'where':{'id':_0x279e82[_0x2064('0x44')]['id']}})[_0x2064('0x22')](handleEntityNotFound(_0x493e92,null))['then'](saveUpdates(_0x279e82[_0x2064('0x4b')],null))[_0x2064('0x22')](respondWithResult(_0x493e92,null))[_0x2064('0x49')](handleError(_0x493e92,null));};exports['destroy']=function(_0x25e554,_0x36b70b){return db['SugarcrmAccount'][_0x2064('0x48')]({'where':{'id':_0x25e554[_0x2064('0x44')]['id']}})['then'](handleEntityNotFound(_0x36b70b,null))[_0x2064('0x22')](removeEntity(_0x36b70b,null))[_0x2064('0x49')](handleError(_0x36b70b,null));};exports[_0x2064('0x4d')]=function(_0x5a47c1,_0x520e42,_0x54a2dc){var _0x4b1106={};var _0x4983a5={};var _0x5e0901;var _0x583ad4;return db[_0x2064('0x2c')][_0x2064('0x4e')]({'where':{'id':_0x5a47c1['params']['id']}})[_0x2064('0x22')](handleEntityNotFound(_0x520e42,null))[_0x2064('0x22')](function(_0x56c90f){if(_0x56c90f){_0x5e0901=_0x56c90f;_0x4983a5['model']=_[_0x2064('0x32')](db[_0x2064('0x4f')][_0x2064('0x45')]);_0x4983a5[_0x2064('0x31')]=_[_0x2064('0x32')](_0x5a47c1['query']);_0x4983a5[_0x2064('0x33')]=_[_0x2064('0x34')](_0x4983a5['model'],_0x4983a5[_0x2064('0x31')]);_0x4b1106[_0x2064('0x35')]=_[_0x2064('0x34')](_0x4983a5[_0x2064('0x30')],qs[_0x2064('0x36')](_0x5a47c1[_0x2064('0x31')][_0x2064('0x36')]));_0x4b1106[_0x2064('0x35')]=_0x4b1106[_0x2064('0x35')][_0x2064('0x46')]?_0x4b1106[_0x2064('0x35')]:_0x4983a5['model'];_0x4b1106[_0x2064('0x39')]=qs[_0x2064('0x3a')](_0x5a47c1[_0x2064('0x31')][_0x2064('0x3a')]);_0x4b1106[_0x2064('0x3b')]=qs[_0x2064('0x33')](_['pick'](_0x5a47c1[_0x2064('0x31')],_0x4983a5['filters']));if(_0x5a47c1['query'][_0x2064('0x3c')]){_0x4b1106['where']=_[_0x2064('0x3d')](_0x4b1106['where'],{'$or':_[_0x2064('0x2b')](_0x4b1106[_0x2064('0x35')],function(_0x83335f){var _0x5cce9d={};_0x5cce9d[_0x83335f]={'$like':'%'+_0x5a47c1[_0x2064('0x31')][_0x2064('0x3c')]+'%'};return _0x5cce9d;})});}_0x4b1106=_[_0x2064('0x3d')]({},_0x4b1106,_0x5a47c1[_0x2064('0x47')]);return _0x5e0901[_0x2064('0x4d')](_0x4b1106);}})[_0x2064('0x22')](function(_0x499ae9){if(_0x499ae9){_0x583ad4=_0x499ae9[_0x2064('0x46')];if(!_0x5a47c1['query'][_0x2064('0x37')](_0x2064('0x38'))){_0x4b1106[_0x2064('0x1f')]=qs[_0x2064('0x1f')](_0x5a47c1[_0x2064('0x31')][_0x2064('0x1f')]);_0x4b1106[_0x2064('0x1c')]=qs[_0x2064('0x1c')](_0x5a47c1[_0x2064('0x31')][_0x2064('0x1c')]);}return _0x5e0901[_0x2064('0x4d')](_0x4b1106);}})['then'](function(_0x4bae50){if(_0x4bae50){return _0x4bae50?{'count':_0x583ad4,'rows':_0x4bae50}:null;}})[_0x2064('0x22')](respondWithResult(_0x520e42,null))['catch'](handleError(_0x520e42,null));};exports[_0x2064('0x50')]=function(_0x2fd7d7,_0x58e933,_0xa1b509){if(_0x2fd7d7[_0x2064('0x4b')]['id']){delete _0x2fd7d7['body']['id'];}return db['SugarcrmAccount'][_0x2064('0x4e')]({'where':{'id':_0x2fd7d7[_0x2064('0x44')]['id']}})[_0x2064('0x22')](handleEntityNotFound(_0x58e933,null))[_0x2064('0x22')](function(_0x307dd1){if(_0x307dd1){_0x2fd7d7[_0x2064('0x4b')][_0x2064('0x51')]=_0x307dd1['id'];_0x2fd7d7['body'][_0x2064('0x52')]=integrations[_0x2064('0x53')](_0x2fd7d7[_0x2064('0x4b')][_0x2064('0x54')],_0x2fd7d7['body'][_0x2064('0x2e')]);_0x2fd7d7[_0x2064('0x4b')][_0x2064('0x55')]=integrations[_0x2064('0x56')](_0x2fd7d7['body'][_0x2064('0x54')],_0x2fd7d7['body'][_0x2064('0x2e')]);return db[_0x2064('0x4f')][_0x2064('0x4a')](_0x2fd7d7[_0x2064('0x4b')],{'include':[{'model':db['SugarcrmField'],'as':'Subjects'},{'model':db['SugarcrmField'],'as':_0x2064('0x55')}]});}return null;})[_0x2064('0x22')](respondWithResult(_0x58e933,null))[_0x2064('0x49')](handleError(_0x58e933,null));};exports['getFields']=function(_0x37987e,_0x52263c,_0x503697){var _0x2645c2='';var _0x518070=['id','name','assigned_user_id','created_by','description','date_start',_0x2064('0x57'),'duration_minutes','parent_id','parent_type',_0x2064('0x58'),'direction'];return db[_0x2064('0x2c')][_0x2064('0x4e')]({'where':{'id':_0x37987e['params']['id']},'attributes':['id','username',_0x2064('0x59'),_0x2064('0x5a')]})['then'](handleEntityNotFound(_0x52263c,null))[_0x2064('0x22')](function(_0x5f2d54){if(_0x5f2d54){_0x2645c2=_0x5f2d54[_0x2064('0x5a')];var _0x13058a=_0x2645c2[_0x2064('0x5b')](-0x1);if(_0x13058a==='/'){_0x2645c2=_0x2645c2[_0x2064('0x5c')](0x0,_0x2645c2[_0x2064('0x5d')](_0x13058a));}return rp({'method':_0x2064('0x5e'),'uri':util[_0x2064('0x5f')](_0x2064('0x60'),_0x2645c2,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0x2064('0x61'),'input_type':'JSON','response_type':_0x2064('0x62'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x5f2d54[_0x2064('0x63')],'password':_0x5f2d54[_0x2064('0x59')],'encryption':_0x2064('0x64')},'application':_0x2064('0x65')})}});}})['then'](function(_0x3f0593){if(_0x3f0593&&_0x3f0593['name']!==_0x2064('0x66')&&_0x3f0593['name']!==_0x2064('0x67')){return rp({'method':_0x2064('0x5e'),'uri':util[_0x2064('0x5f')](_0x2064('0x60'),_0x2645c2,_0x2064('0x68')),'json':!![],'form':{'method':'get_module_fields','input_type':'JSON','response_type':_0x2064('0x62'),'rest_data':JSON[_0x2064('0x69')]({'session':_0x3f0593['id'],'module_name':_0x2064('0x6a')})}})[_0x2064('0x22')](function(_0x481050){if(_0x481050){var _0x44f32e=_[_0x2064('0x6b')](_0x481050['module_fields']);_[_0x2064('0x6c')](_0x44f32e,function(_0x34aabb){return _0x518070[_0x2064('0x6d')](_0x34aabb[_0x2064('0x28')]);});return{'count':_0x44f32e['length'],'rows':_['map'](_0x44f32e,function(_0xbf0a03){return{'id':_0xbf0a03[_0x2064('0x28')],'name':_0xbf0a03[_0x2064('0x6e')],'custom':_[_0x2064('0x6f')](_0xbf0a03[_0x2064('0x28')],'_c')?!![]:![],'options':_0xbf0a03[_0x2064('0x47')]?_['map'](_['values'](_0xbf0a03[_0x2064('0x47')]),function(_0x1feb10){return{'name':_0x1feb10[_0x2064('0x70')],'value':_0x1feb10['name']};}):[]};})};}})[_0x2064('0x22')](respondWithResult(_0x52263c,null))[_0x2064('0x49')](function(_0x43ace5){var _0x4f172f=_0x37987e['query'][_0x2064('0x71')]?0x1f4:_0x43ace5[_0x2064('0x72')]||0x1f4;logger['error'](_0x2064('0x73'),_0x2064('0x74'),_0x4f172f,JSON[_0x2064('0x69')](_0x43ace5));delete _0x43ace5[_0x2064('0x28')];if(_0x4f172f===0x191){_0x4f172f=0x190;}_0x52263c[_0x2064('0x1a')](_0x4f172f)[_0x2064('0x29')](_0x37987e[_0x2064('0x31')]['test']?{'message':'Wrong\x20credentials','statusCode':_0x43ace5[_0x2064('0x72')]}:_0x43ace5);});}else{var _0x501556=0x1f4;_0x52263c[_0x2064('0x1a')](_0x501556)[_0x2064('0x29')]({'message':_0x2064('0x75'),'statusCode':0x190});}});};
\ No newline at end of file
index a194058..413d759 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1efe=['path','rimraf','./intSugarcrmAccount.attributes','../../components/integrations/configuration','exports','define','int_sugarcrm_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x301b78,_0x1742f3){var _0x2db9f9=function(_0x48a663){while(--_0x48a663){_0x301b78['push'](_0x301b78['shift']());}};_0x2db9f9(++_0x1742f3);}(_0x1efe,0x1d5));var _0xe1ef=function(_0x279d37,_0x14de3f){_0x279d37=_0x279d37-0x0;var _0x530173=_0x1efe[_0x279d37];return _0x530173;};'use strict';var _=require(_0xe1ef('0x0'));var util=require(_0xe1ef('0x1'));var logger=require(_0xe1ef('0x2'))(_0xe1ef('0x3'));var moment=require(_0xe1ef('0x4'));var BPromise=require(_0xe1ef('0x5'));var rp=require(_0xe1ef('0x6'));var fs=require('fs');var path=require(_0xe1ef('0x7'));var rimraf=require(_0xe1ef('0x8'));var config=require('../../config/environment');var attributes=require(_0xe1ef('0x9'));var integrations=require(_0xe1ef('0xa'));module[_0xe1ef('0xb')]=function(_0x5c35fd,_0xc413fb){return _0x5c35fd[_0xe1ef('0xc')]('SugarcrmAccount',attributes,{'tableName':_0xe1ef('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb486=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','exports','define','SugarcrmAccount','int_sugarcrm_accounts','lodash','util','api'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xb486,0x138));var _0x6b48=function(_0x152702,_0x5a9ea7){_0x152702=_0x152702-0x0;var _0x100fd6=_0xb486[_0x152702];return _0x100fd6;};'use strict';var _=require(_0x6b48('0x0'));var util=require(_0x6b48('0x1'));var logger=require('../../config/logger')(_0x6b48('0x2'));var moment=require(_0x6b48('0x3'));var BPromise=require(_0x6b48('0x4'));var rp=require(_0x6b48('0x5'));var fs=require('fs');var path=require(_0x6b48('0x6'));var rimraf=require(_0x6b48('0x7'));var config=require(_0x6b48('0x8'));var attributes=require(_0x6b48('0x9'));var integrations=require(_0x6b48('0xa'));module[_0x6b48('0xb')]=function(_0x40ae92,_0x366a50){return _0x40ae92[_0x6b48('0xc')](_0x6b48('0xd'),attributes,{'tableName':_0x6b48('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 30b8427..eceeb08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ef7=['debug','stringify','error','code','message','info','catch','GetSugarcrmAccount','findAll','options','raw','where','attributes','limit','include','map','model','SugarcrmAccount','find','ShowSugarcrmAccount','util','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','SugarcrmAccount,\x20%s,\x20%s','request\x20sent'];(function(_0x5bf7bd,_0x52d967){var _0x4d3227=function(_0x15ed27){while(--_0x15ed27){_0x5bf7bd['push'](_0x5bf7bd['shift']());}};_0x4d3227(++_0x52d967);}(_0x0ef7,0x1a0));var _0x70ef=function(_0x439d59,_0x11ccdf){_0x439d59=_0x439d59-0x0;var _0x3670c7=_0x0ef7[_0x439d59];return _0x3670c7;};'use strict';var _=require('lodash');var util=require(_0x70ef('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x70ef('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x70ef('0x2'));var logger=require(_0x70ef('0x3'))(_0x70ef('0x4'));var config=require(_0x70ef('0x5'));var jayson=require(_0x70ef('0x6'));var client=jayson[_0x70ef('0x7')][_0x70ef('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3e8637,_0x42e7c3,_0x2a21ef){return new BPromise(function(_0xac3858,_0xa35d23){return client[_0x70ef('0x9')](_0x3e8637,_0x2a21ef)[_0x70ef('0xa')](function(_0x3014b5){logger['info'](_0x70ef('0xb'),_0x42e7c3,_0x70ef('0xc'));logger[_0x70ef('0xd')]('SugarcrmAccount,\x20%s,\x20%s,\x20%s',_0x42e7c3,_0x70ef('0xc'),JSON[_0x70ef('0xe')](_0x3014b5));if(_0x3014b5[_0x70ef('0xf')]){if(_0x3014b5[_0x70ef('0xf')][_0x70ef('0x10')]===0x1f4){logger[_0x70ef('0xf')]('SugarcrmAccount,\x20%s,\x20%s',_0x42e7c3,_0x3014b5[_0x70ef('0xf')][_0x70ef('0x11')]);return _0xa35d23(_0x3014b5['error']['message']);}logger[_0x70ef('0xf')]('SugarcrmAccount,\x20%s,\x20%s',_0x42e7c3,_0x3014b5['error'][_0x70ef('0x11')]);return _0xac3858(_0x3014b5['error'][_0x70ef('0x11')]);}else{logger[_0x70ef('0x12')](_0x70ef('0xb'),_0x42e7c3,_0x70ef('0xc'));_0xac3858(_0x3014b5['result']['message']);}})[_0x70ef('0x13')](function(_0x1c23b4){logger[_0x70ef('0xf')](_0x70ef('0xb'),_0x42e7c3,_0x1c23b4);_0xa35d23(_0x1c23b4);});});}exports[_0x70ef('0x14')]=function(_0x9d9103){var _0x26a890=this;return new Promise(function(_0x1655f4,_0x4a6941){return db['SugarcrmAccount'][_0x70ef('0x15')]({'raw':_0x9d9103[_0x70ef('0x16')]?_0x9d9103[_0x70ef('0x16')][_0x70ef('0x17')]===undefined?!![]:![]:!![],'where':_0x9d9103['options']?_0x9d9103['options'][_0x70ef('0x18')]||null:null,'attributes':_0x9d9103[_0x70ef('0x16')]?_0x9d9103[_0x70ef('0x16')][_0x70ef('0x19')]||null:null,'limit':_0x9d9103[_0x70ef('0x16')]?_0x9d9103['options'][_0x70ef('0x1a')]||null:null,'include':_0x9d9103[_0x70ef('0x16')]?_0x9d9103[_0x70ef('0x16')][_0x70ef('0x1b')]?_[_0x70ef('0x1c')](_0x9d9103[_0x70ef('0x16')][_0x70ef('0x1b')],function(_0x3e4240){return{'model':db[_0x3e4240['model']],'as':_0x3e4240['as'],'attributes':_0x3e4240[_0x70ef('0x19')],'include':_0x3e4240[_0x70ef('0x1b')]?_[_0x70ef('0x1c')](_0x3e4240[_0x70ef('0x1b')],function(_0x2d2733){return{'model':db[_0x2d2733[_0x70ef('0x1d')]],'as':_0x2d2733['as'],'attributes':_0x2d2733[_0x70ef('0x19')],'include':_0x2d2733[_0x70ef('0x1b')]?_[_0x70ef('0x1c')](_0x2d2733[_0x70ef('0x1b')],function(_0x4d73d5){return{'model':db[_0x4d73d5[_0x70ef('0x1d')]],'as':_0x4d73d5['as'],'attributes':_0x4d73d5[_0x70ef('0x19')]};}):[]};}):[]};}):[]:[]})[_0x70ef('0xa')](function(_0x15120c){logger['info'](_0x70ef('0x14'),_0x9d9103);logger[_0x70ef('0xd')](_0x70ef('0x14'),_0x9d9103,JSON[_0x70ef('0xe')](_0x15120c));_0x1655f4(_0x15120c);})['catch'](function(_0x4b1ec0){logger['error'](_0x70ef('0x14'),_0x4b1ec0[_0x70ef('0x11')],_0x9d9103);_0x4a6941(_0x26a890['error'](0x1f4,_0x4b1ec0[_0x70ef('0x11')]));});});};exports['ShowSugarcrmAccount']=function(_0x524336){var _0x3816d6=this;return new Promise(function(_0x21b229,_0xc43773){return db[_0x70ef('0x1e')][_0x70ef('0x1f')]({'raw':_0x524336[_0x70ef('0x16')]?_0x524336[_0x70ef('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x524336['options']?_0x524336['options'][_0x70ef('0x18')]||null:null,'attributes':_0x524336['options']?_0x524336['options'][_0x70ef('0x19')]||null:null,'include':_0x524336[_0x70ef('0x16')]?_0x524336[_0x70ef('0x16')]['include']?_[_0x70ef('0x1c')](_0x524336[_0x70ef('0x16')][_0x70ef('0x1b')],function(_0x3d1409){return{'model':db[_0x3d1409['model']],'as':_0x3d1409['as'],'attributes':_0x3d1409[_0x70ef('0x19')],'include':_0x3d1409[_0x70ef('0x1b')]?_['map'](_0x3d1409['include'],function(_0x1908f0){return{'model':db[_0x1908f0[_0x70ef('0x1d')]],'as':_0x1908f0['as'],'attributes':_0x1908f0[_0x70ef('0x19')],'include':_0x1908f0[_0x70ef('0x1b')]?_[_0x70ef('0x1c')](_0x1908f0['include'],function(_0x2e9237){return{'model':db[_0x2e9237['model']],'as':_0x2e9237['as'],'attributes':_0x2e9237[_0x70ef('0x19')]};}):[]};}):[]};}):[]:[]})[_0x70ef('0xa')](function(_0x30d4ef){logger['info']('ShowSugarcrmAccount',_0x524336);logger[_0x70ef('0xd')](_0x70ef('0x20'),_0x524336,JSON[_0x70ef('0xe')](_0x30d4ef));_0x21b229(_0x30d4ef);})[_0x70ef('0x13')](function(_0x2fa52e){logger[_0x70ef('0xf')](_0x70ef('0x20'),_0x2fa52e[_0x70ef('0x11')],_0x524336);_0xc43773(_0x3816d6[_0x70ef('0xf')](0x1f4,_0x2fa52e[_0x70ef('0x11')]));});});};
\ No newline at end of file
+var _0xa036=['../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','catch','GetSugarcrmAccount','SugarcrmAccount','findAll','options','limit','map','include','model','attributes','stringify','ShowSugarcrmAccount','raw','where','then','lodash','util','randomstring','ioredis'];(function(_0x9ca9d1,_0x512b16){var _0x1db0ca=function(_0x1278aa){while(--_0x1278aa){_0x9ca9d1['push'](_0x9ca9d1['shift']());}};_0x1db0ca(++_0x512b16);}(_0xa036,0xa1));var _0x6a03=function(_0x8f3061,_0x4fb07d){_0x8f3061=_0x8f3061-0x0;var _0x545aee=_0xa036[_0x8f3061];return _0x545aee;};'use strict';var _=require(_0x6a03('0x0'));var util=require(_0x6a03('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x6a03('0x2'));var fs=require('fs');var Redis=require(_0x6a03('0x3'));var db=require(_0x6a03('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x6a03('0x5'))(_0x6a03('0x6'));var config=require(_0x6a03('0x7'));var jayson=require(_0x6a03('0x8'));var client=jayson[_0x6a03('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x59bef1,_0x35b8e9,_0x3b163f){return new BPromise(function(_0x235f49,_0x3fb615){return client[_0x6a03('0xa')](_0x59bef1,_0x3b163f)['then'](function(_0x271fd6){logger['info'](_0x6a03('0xb'),_0x35b8e9,_0x6a03('0xc'));logger['debug']('SugarcrmAccount,\x20%s,\x20%s,\x20%s',_0x35b8e9,_0x6a03('0xc'),JSON['stringify'](_0x271fd6));if(_0x271fd6[_0x6a03('0xd')]){if(_0x271fd6[_0x6a03('0xd')][_0x6a03('0xe')]===0x1f4){logger[_0x6a03('0xd')](_0x6a03('0xb'),_0x35b8e9,_0x271fd6[_0x6a03('0xd')][_0x6a03('0xf')]);return _0x3fb615(_0x271fd6['error']['message']);}logger[_0x6a03('0xd')](_0x6a03('0xb'),_0x35b8e9,_0x271fd6[_0x6a03('0xd')][_0x6a03('0xf')]);return _0x235f49(_0x271fd6[_0x6a03('0xd')][_0x6a03('0xf')]);}else{logger[_0x6a03('0x10')](_0x6a03('0xb'),_0x35b8e9,_0x6a03('0xc'));_0x235f49(_0x271fd6[_0x6a03('0x11')][_0x6a03('0xf')]);}})[_0x6a03('0x12')](function(_0x2acd7c){logger['error'](_0x6a03('0xb'),_0x35b8e9,_0x2acd7c);_0x3fb615(_0x2acd7c);});});}exports[_0x6a03('0x13')]=function(_0x4a6c7b){var _0x3669ac=this;return new Promise(function(_0x17f0e2,_0x1ba723){return db[_0x6a03('0x14')][_0x6a03('0x15')]({'raw':_0x4a6c7b[_0x6a03('0x16')]?_0x4a6c7b[_0x6a03('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x4a6c7b[_0x6a03('0x16')]?_0x4a6c7b[_0x6a03('0x16')]['where']||null:null,'attributes':_0x4a6c7b[_0x6a03('0x16')]?_0x4a6c7b[_0x6a03('0x16')]['attributes']||null:null,'limit':_0x4a6c7b['options']?_0x4a6c7b['options'][_0x6a03('0x17')]||null:null,'include':_0x4a6c7b[_0x6a03('0x16')]?_0x4a6c7b['options']['include']?_[_0x6a03('0x18')](_0x4a6c7b[_0x6a03('0x16')][_0x6a03('0x19')],function(_0x24cf76){return{'model':db[_0x24cf76[_0x6a03('0x1a')]],'as':_0x24cf76['as'],'attributes':_0x24cf76['attributes'],'include':_0x24cf76['include']?_['map'](_0x24cf76[_0x6a03('0x19')],function(_0x4f2981){return{'model':db[_0x4f2981[_0x6a03('0x1a')]],'as':_0x4f2981['as'],'attributes':_0x4f2981['attributes'],'include':_0x4f2981[_0x6a03('0x19')]?_[_0x6a03('0x18')](_0x4f2981[_0x6a03('0x19')],function(_0x5b4453){return{'model':db[_0x5b4453[_0x6a03('0x1a')]],'as':_0x5b4453['as'],'attributes':_0x5b4453[_0x6a03('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x54d577){logger['info'](_0x6a03('0x13'),_0x4a6c7b);logger['debug'](_0x6a03('0x13'),_0x4a6c7b,JSON[_0x6a03('0x1c')](_0x54d577));_0x17f0e2(_0x54d577);})[_0x6a03('0x12')](function(_0x14ea35){logger[_0x6a03('0xd')](_0x6a03('0x13'),_0x14ea35[_0x6a03('0xf')],_0x4a6c7b);_0x1ba723(_0x3669ac[_0x6a03('0xd')](0x1f4,_0x14ea35[_0x6a03('0xf')]));});});};exports[_0x6a03('0x1d')]=function(_0x57efcd){var _0x212833=this;return new Promise(function(_0x225646,_0x22ee90){return db[_0x6a03('0x14')]['find']({'raw':_0x57efcd[_0x6a03('0x16')]?_0x57efcd[_0x6a03('0x16')][_0x6a03('0x1e')]===undefined?!![]:![]:!![],'where':_0x57efcd[_0x6a03('0x16')]?_0x57efcd[_0x6a03('0x16')][_0x6a03('0x1f')]||null:null,'attributes':_0x57efcd[_0x6a03('0x16')]?_0x57efcd[_0x6a03('0x16')]['attributes']||null:null,'include':_0x57efcd[_0x6a03('0x16')]?_0x57efcd[_0x6a03('0x16')][_0x6a03('0x19')]?_[_0x6a03('0x18')](_0x57efcd[_0x6a03('0x16')][_0x6a03('0x19')],function(_0x183464){return{'model':db[_0x183464[_0x6a03('0x1a')]],'as':_0x183464['as'],'attributes':_0x183464[_0x6a03('0x1b')],'include':_0x183464[_0x6a03('0x19')]?_['map'](_0x183464[_0x6a03('0x19')],function(_0x525a03){return{'model':db[_0x525a03[_0x6a03('0x1a')]],'as':_0x525a03['as'],'attributes':_0x525a03[_0x6a03('0x1b')],'include':_0x525a03[_0x6a03('0x19')]?_[_0x6a03('0x18')](_0x525a03[_0x6a03('0x19')],function(_0x4020b6){return{'model':db[_0x4020b6[_0x6a03('0x1a')]],'as':_0x4020b6['as'],'attributes':_0x4020b6[_0x6a03('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x6a03('0x20')](function(_0x4c1491){logger[_0x6a03('0x10')](_0x6a03('0x1d'),_0x57efcd);logger['debug']('ShowSugarcrmAccount',_0x57efcd,JSON['stringify'](_0x4c1491));_0x225646(_0x4c1491);})[_0x6a03('0x12')](function(_0x80cf3c){logger['error'](_0x6a03('0x1d'),_0x80cf3c[_0x6a03('0xf')],_0x57efcd);_0x22ee90(_0x212833[_0x6a03('0xd')](0x1f4,_0x80cf3c[_0x6a03('0xf')]));});});};
\ No newline at end of file
index c063c3a..2ad58c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5432=['get','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','getDescriptions','post','create','update','delete','destroy','multer','util','connect-timeout','express','../../components/auth/service'];(function(_0x35d4e9,_0x298c61){var _0x5c2770=function(_0x2f326a){while(--_0x2f326a){_0x35d4e9['push'](_0x35d4e9['shift']());}};_0x5c2770(++_0x298c61);}(_0x5432,0x187));var _0x2543=function(_0x290877,_0x58359f){_0x290877=_0x290877-0x0;var _0x5c8e1e=_0x5432[_0x290877];return _0x5c8e1e;};'use strict';var multer=require(_0x2543('0x0'));var util=require(_0x2543('0x1'));var path=require('path');var timeout=require(_0x2543('0x2'));var express=require(_0x2543('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x2543('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./intSugarcrmConfiguration.controller');router[_0x2543('0x5')]('/',auth['isAuthenticated'](),controller['index']);router[_0x2543('0x5')](_0x2543('0x6'),auth[_0x2543('0x7')](),controller[_0x2543('0x8')]);router[_0x2543('0x5')](_0x2543('0x9'),auth['isAuthenticated'](),controller[_0x2543('0xa')]);router[_0x2543('0x5')](_0x2543('0xb'),auth[_0x2543('0x7')](),controller['getSubjects']);router[_0x2543('0x5')]('/:id/descriptions',auth['isAuthenticated'](),controller[_0x2543('0xc')]);router[_0x2543('0xd')]('/',auth['isAuthenticated'](),controller[_0x2543('0xe')]);router['put'](_0x2543('0x6'),auth[_0x2543('0x7')](),controller[_0x2543('0xf')]);router[_0x2543('0x10')](_0x2543('0x6'),auth[_0x2543('0x7')](),controller[_0x2543('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x2841=['getDescriptions','post','create','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/fields','/:id/descriptions'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0x2841,0x131));var _0x1284=function(_0xba1760,_0x191969){_0xba1760=_0xba1760-0x0;var _0x1f3143=_0x2841[_0xba1760];return _0x1f3143;};'use strict';var multer=require(_0x1284('0x0'));var util=require(_0x1284('0x1'));var path=require(_0x1284('0x2'));var timeout=require(_0x1284('0x3'));var express=require(_0x1284('0x4'));var router=express[_0x1284('0x5')]();var fs_extra=require(_0x1284('0x6'));var auth=require(_0x1284('0x7'));var interaction=require(_0x1284('0x8'));var config=require(_0x1284('0x9'));var controller=require('./intSugarcrmConfiguration.controller');router[_0x1284('0xa')]('/',auth[_0x1284('0xb')](),controller[_0x1284('0xc')]);router['get'](_0x1284('0xd'),auth[_0x1284('0xb')](),controller[_0x1284('0xe')]);router[_0x1284('0xa')](_0x1284('0xf'),auth[_0x1284('0xb')](),controller['getFields']);router[_0x1284('0xa')]('/:id/subjects',auth[_0x1284('0xb')](),controller['getSubjects']);router[_0x1284('0xa')](_0x1284('0x10'),auth['isAuthenticated'](),controller[_0x1284('0x11')]);router[_0x1284('0x12')]('/',auth[_0x1284('0xb')](),controller[_0x1284('0x13')]);router['put'](_0x1284('0xd'),auth[_0x1284('0xb')](),controller[_0x1284('0x14')]);router[_0x1284('0x15')](_0x1284('0xd'),auth[_0x1284('0xb')](),controller['destroy']);module[_0x1284('0x16')]=router;
\ No newline at end of file
index e17a64e..eee94ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4ab=['sequelize'];(function(_0x293f84,_0xfa7600){var _0x4dd3b1=function(_0x4e4d07){while(--_0x4e4d07){_0x293f84['push'](_0x293f84['shift']());}};_0x4dd3b1(++_0xfa7600);}(_0xc4ab,0x1a6));var _0xbc4a=function(_0x283660,_0x49b33a){_0x283660=_0x283660-0x0;var _0x5cb1d2=_0xc4ab[_0x283660];return _0x5cb1d2;};'use strict';var Sequelize=require(_0xbc4a('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x4d88=['STRING','sequelize'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4d88,0x9d));var _0x84d8=function(_0x5d99dd,_0x4bb40b){_0x5d99dd=_0x5d99dd-0x0;var _0x148a26=_0x4d88[_0x5d99dd];return _0x148a26;};'use strict';var Sequelize=require(_0x84d8('0x0'));module['exports']={'name':{'type':Sequelize[_0x84d8('0x1')]},'description':{'type':Sequelize[_0x84d8('0x1')]}};
\ No newline at end of file
index dc2772e..217504a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd11a=['fieldName','type','key','query','keys','intersection','attributes','model','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','options','include','rows','catch','show','params','includeAll','find','create','body','getFields','findOne','SugarcrmField','nolimit','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','limit','count','set','Content-Range','json','apply','reject','update','destroy','then','end','error','stack','name','map','SugarcrmConfiguration','rawAttributes'];(function(_0x3c8ec8,_0x289d7f){var _0x3fe210=function(_0x4518be){while(--_0x4518be){_0x3c8ec8['push'](_0x3c8ec8['shift']());}};_0x3fe210(++_0x289d7f);}(_0xd11a,0x10c));var _0xad11=function(_0x486df6,_0x3389a7){_0x486df6=_0x486df6-0x0;var _0x2efb3b=_0xd11a[_0x486df6];return _0x2efb3b;};'use strict';var emlformat=require(_0xad11('0x0'));var rimraf=require(_0xad11('0x1'));var zipdir=require(_0xad11('0x2'));var jsonpatch=require(_0xad11('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xad11('0x4'));var Mustache=require(_0xad11('0x5'));var util=require('util');var path=require('path');var sox=require(_0xad11('0x6'));var csv=require(_0xad11('0x7'));var ejs=require(_0xad11('0x8'));var fs=require('fs');var fs_extra=require(_0xad11('0x9'));var _=require(_0xad11('0xa'));var squel=require(_0xad11('0xb'));var crypto=require(_0xad11('0xc'));var jsforce=require(_0xad11('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xad11('0x7'));var querystring=require(_0xad11('0xe'));var Papa=require(_0xad11('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xad11('0x10'));var as=require(_0xad11('0x11'));var hardwareService=require(_0xad11('0x12'));var logger=require(_0xad11('0x13'))(_0xad11('0x14'));var utils=require('../../config/utils');var config=require(_0xad11('0x15'));var licenseUtil=require(_0xad11('0x16'));var db=require(_0xad11('0x17'))['db'];function respondWithStatusCode(_0x2b577a,_0x742bb0){_0x742bb0=_0x742bb0||0xcc;return function(_0xb75f45){if(_0xb75f45){return _0x2b577a[_0xad11('0x18')](_0x742bb0);}return _0x2b577a['status'](_0x742bb0)['end']();};}function respondWithResult(_0x4e595b,_0x5eafb5){_0x5eafb5=_0x5eafb5||0xc8;return function(_0x3290a3){if(_0x3290a3){return _0x4e595b[_0xad11('0x19')](_0x5eafb5)['json'](_0x3290a3);}};}function respondWithFilteredResult(_0x382569,_0x3c0d3e){return function(_0xec37d4){if(_0xec37d4){var _0xf86999=typeof _0x3c0d3e[_0xad11('0x1a')]==='undefined'&&typeof _0x3c0d3e[_0xad11('0x1b')]==='undefined';var _0x3a60b1=_0xec37d4[_0xad11('0x1c')];var _0x3e22d2=_0xf86999?0x0:_0x3c0d3e['offset'];var _0x3fa2fd=_0xf86999?_0xec37d4[_0xad11('0x1c')]:_0x3c0d3e['offset']+_0x3c0d3e[_0xad11('0x1b')];var _0x562757;if(_0x3fa2fd>=_0x3a60b1){_0x3fa2fd=_0x3a60b1;_0x562757=0xc8;}else{_0x562757=0xce;}_0x382569[_0xad11('0x19')](_0x562757);return _0x382569[_0xad11('0x1d')](_0xad11('0x1e'),_0x3e22d2+'-'+_0x3fa2fd+'/'+_0x3a60b1)[_0xad11('0x1f')](_0xec37d4);}return null;};}function patchUpdates(_0x2cec91){return function(_0x533ad0){try{jsonpatch[_0xad11('0x20')](_0x533ad0,_0x2cec91,!![]);}catch(_0xccffeb){return BPromise[_0xad11('0x21')](_0xccffeb);}return _0x533ad0['save']();};}function saveUpdates(_0x100521,_0x22b062){return function(_0x1f0e19){if(_0x1f0e19){return _0x1f0e19[_0xad11('0x22')](_0x100521)['then'](function(_0x5da7ee){return _0x5da7ee;});}return null;};}function removeEntity(_0x35dc20,_0x4f314d){return function(_0x2c9e4b){if(_0x2c9e4b){return _0x2c9e4b[_0xad11('0x23')]()[_0xad11('0x24')](function(){_0x35dc20[_0xad11('0x19')](0xcc)[_0xad11('0x25')]();});}};}function handleEntityNotFound(_0x54760d,_0x584185){return function(_0x34f31f){if(!_0x34f31f){_0x54760d[_0xad11('0x18')](0x194);}return _0x34f31f;};}function handleError(_0x584eae,_0x1ea44f){_0x1ea44f=_0x1ea44f||0x1f4;return function(_0x4bc63b){logger[_0xad11('0x26')](_0x4bc63b[_0xad11('0x27')]);if(_0x4bc63b[_0xad11('0x28')]){delete _0x4bc63b['name'];}_0x584eae[_0xad11('0x19')](_0x1ea44f)['send'](_0x4bc63b);};}exports['index']=function(_0x1ee89d,_0x487f5b){var _0x1ff8ef={},_0x51fb65={},_0x1c0dd8={'count':0x0,'rows':[]};var _0x278d0d=_[_0xad11('0x29')](db[_0xad11('0x2a')][_0xad11('0x2b')],function(_0x335908){return{'name':_0x335908[_0xad11('0x2c')],'type':_0x335908[_0xad11('0x2d')][_0xad11('0x2e')]};});_0x51fb65['model']=_[_0xad11('0x29')](_0x278d0d,_0xad11('0x28'));_0x51fb65[_0xad11('0x2f')]=_[_0xad11('0x30')](_0x1ee89d[_0xad11('0x2f')]);_0x51fb65['filters']=_[_0xad11('0x31')](_0x51fb65['model'],_0x51fb65[_0xad11('0x2f')]);_0x1ff8ef[_0xad11('0x32')]=_[_0xad11('0x31')](_0x51fb65[_0xad11('0x33')],qs[_0xad11('0x34')](_0x1ee89d[_0xad11('0x2f')]['fields']));_0x1ff8ef[_0xad11('0x32')]=_0x1ff8ef[_0xad11('0x32')][_0xad11('0x35')]?_0x1ff8ef['attributes']:_0x51fb65['model'];if(!_0x1ee89d[_0xad11('0x2f')][_0xad11('0x36')]('nolimit')){_0x1ff8ef[_0xad11('0x1b')]=qs[_0xad11('0x1b')](_0x1ee89d[_0xad11('0x2f')][_0xad11('0x1b')]);_0x1ff8ef[_0xad11('0x1a')]=qs[_0xad11('0x1a')](_0x1ee89d[_0xad11('0x2f')][_0xad11('0x1a')]);}_0x1ff8ef[_0xad11('0x37')]=qs[_0xad11('0x38')](_0x1ee89d[_0xad11('0x2f')][_0xad11('0x38')]);_0x1ff8ef[_0xad11('0x39')]=qs[_0xad11('0x3a')](_[_0xad11('0x3b')](_0x1ee89d['query'],_0x51fb65[_0xad11('0x3a')]),_0x278d0d);if(_0x1ee89d[_0xad11('0x2f')][_0xad11('0x3c')]){_0x1ff8ef[_0xad11('0x39')]=_['merge'](_0x1ff8ef['where'],{'$or':_['map'](_0x278d0d,function(_0x189a55){if(_0x189a55[_0xad11('0x2d')]!=='VIRTUAL'){var _0x2614ad={};_0x2614ad[_0x189a55[_0xad11('0x28')]]={'$like':'%'+_0x1ee89d['query']['filter']+'%'};return _0x2614ad;}})});}_0x1ff8ef=_[_0xad11('0x3d')]({},_0x1ff8ef,_0x1ee89d[_0xad11('0x3e')]);var _0x478b64={'where':_0x1ff8ef[_0xad11('0x39')]};return db[_0xad11('0x2a')]['count'](_0x478b64)[_0xad11('0x24')](function(_0xcab3dd){_0x1c0dd8[_0xad11('0x1c')]=_0xcab3dd;if(_0x1ee89d[_0xad11('0x2f')]['includeAll']){_0x1ff8ef[_0xad11('0x3f')]=[{'all':!![]}];}return db[_0xad11('0x2a')]['findAll'](_0x1ff8ef);})[_0xad11('0x24')](function(_0x38ad60){_0x1c0dd8[_0xad11('0x40')]=_0x38ad60;return _0x1c0dd8;})[_0xad11('0x24')](respondWithFilteredResult(_0x487f5b,_0x1ff8ef))[_0xad11('0x41')](handleError(_0x487f5b,null));};exports[_0xad11('0x42')]=function(_0x108674,_0x257c97){var _0x8867fe={'raw':![],'where':{'id':_0x108674[_0xad11('0x43')]['id']}},_0xbee154={};_0xbee154[_0xad11('0x33')]=_[_0xad11('0x30')](db['SugarcrmConfiguration'][_0xad11('0x2b')]);_0xbee154[_0xad11('0x2f')]=_[_0xad11('0x30')](_0x108674[_0xad11('0x2f')]);_0xbee154['filters']=_[_0xad11('0x31')](_0xbee154[_0xad11('0x33')],_0xbee154[_0xad11('0x2f')]);_0x8867fe['attributes']=_[_0xad11('0x31')](_0xbee154[_0xad11('0x33')],qs[_0xad11('0x34')](_0x108674['query']['fields']));_0x8867fe[_0xad11('0x32')]=_0x8867fe[_0xad11('0x32')][_0xad11('0x35')]?_0x8867fe[_0xad11('0x32')]:_0xbee154[_0xad11('0x33')];if(_0x108674[_0xad11('0x2f')][_0xad11('0x44')]){_0x8867fe[_0xad11('0x3f')]=[{'all':!![]}];}_0x8867fe=_[_0xad11('0x3d')]({},_0x8867fe,_0x108674['options']);return db[_0xad11('0x2a')][_0xad11('0x45')](_0x8867fe)[_0xad11('0x24')](handleEntityNotFound(_0x257c97,null))[_0xad11('0x24')](respondWithResult(_0x257c97,null))['catch'](handleError(_0x257c97,null));};exports[_0xad11('0x46')]=function(_0x81a2aa,_0x54ddce){return db[_0xad11('0x2a')][_0xad11('0x46')](_0x81a2aa[_0xad11('0x47')],{})[_0xad11('0x24')](respondWithResult(_0x54ddce,0xc9))[_0xad11('0x41')](handleError(_0x54ddce,null));};exports[_0xad11('0x22')]=function(_0x1b2419,_0x4d89cc){if(_0x1b2419[_0xad11('0x47')]['id']){delete _0x1b2419[_0xad11('0x47')]['id'];}return db['SugarcrmConfiguration']['find']({'where':{'id':_0x1b2419[_0xad11('0x43')]['id']}})[_0xad11('0x24')](handleEntityNotFound(_0x4d89cc,null))[_0xad11('0x24')](saveUpdates(_0x1b2419['body'],null))[_0xad11('0x24')](respondWithResult(_0x4d89cc,null))[_0xad11('0x41')](handleError(_0x4d89cc,null));};exports[_0xad11('0x23')]=function(_0x46ace7,_0xcb4ae6){return db[_0xad11('0x2a')][_0xad11('0x45')]({'where':{'id':_0x46ace7[_0xad11('0x43')]['id']}})['then'](handleEntityNotFound(_0xcb4ae6,null))['then'](removeEntity(_0xcb4ae6,null))[_0xad11('0x41')](handleError(_0xcb4ae6,null));};exports[_0xad11('0x48')]=function(_0x16e3be,_0x5033a1,_0x3fc751){var _0x37c786={};var _0xe2660c={};var _0x5a88d1;var _0x3ade56;return db[_0xad11('0x2a')][_0xad11('0x49')]({'where':{'id':_0x16e3be[_0xad11('0x43')]['id']}})['then'](handleEntityNotFound(_0x5033a1,null))[_0xad11('0x24')](function(_0x16e945){if(_0x16e945){_0x5a88d1=_0x16e945;_0xe2660c[_0xad11('0x33')]=_[_0xad11('0x30')](db[_0xad11('0x4a')][_0xad11('0x2b')]);_0xe2660c['query']=_[_0xad11('0x30')](_0x16e3be['query']);_0xe2660c[_0xad11('0x3a')]=_[_0xad11('0x31')](_0xe2660c['model'],_0xe2660c[_0xad11('0x2f')]);_0x37c786['attributes']=_[_0xad11('0x31')](_0xe2660c[_0xad11('0x33')],qs[_0xad11('0x34')](_0x16e3be[_0xad11('0x2f')]['fields']));_0x37c786[_0xad11('0x32')]=_0x37c786[_0xad11('0x32')][_0xad11('0x35')]?_0x37c786['attributes']:_0xe2660c[_0xad11('0x33')];_0x37c786[_0xad11('0x37')]=qs[_0xad11('0x38')](_0x16e3be[_0xad11('0x2f')][_0xad11('0x38')]);_0x37c786[_0xad11('0x39')]=qs[_0xad11('0x3a')](_['pick'](_0x16e3be[_0xad11('0x2f')],_0xe2660c[_0xad11('0x3a')]));if(_0x16e3be['query'][_0xad11('0x3c')]){_0x37c786[_0xad11('0x39')]=_[_0xad11('0x3d')](_0x37c786['where'],{'$or':_[_0xad11('0x29')](_0x37c786[_0xad11('0x32')],function(_0x4c1875){var _0x45fb79={};_0x45fb79[_0x4c1875]={'$like':'%'+_0x16e3be['query'][_0xad11('0x3c')]+'%'};return _0x45fb79;})});}_0x37c786=_[_0xad11('0x3d')]({},_0x37c786,_0x16e3be[_0xad11('0x3e')]);return _0x5a88d1['getFields'](_0x37c786);}})['then'](function(_0x1712aa){if(_0x1712aa){_0x3ade56=_0x1712aa['length'];if(!_0x16e3be[_0xad11('0x2f')][_0xad11('0x36')](_0xad11('0x4b'))){_0x37c786[_0xad11('0x1b')]=qs[_0xad11('0x1b')](_0x16e3be[_0xad11('0x2f')]['limit']);_0x37c786['offset']=qs[_0xad11('0x1a')](_0x16e3be[_0xad11('0x2f')]['offset']);}return _0x5a88d1[_0xad11('0x48')](_0x37c786);}})['then'](function(_0x5b67a0){if(_0x5b67a0){return _0x5b67a0?{'count':_0x3ade56,'rows':_0x5b67a0}:null;}})[_0xad11('0x24')](respondWithResult(_0x5033a1,null))[_0xad11('0x41')](handleError(_0x5033a1,null));};exports[_0xad11('0x4c')]=function(_0x2d0c10,_0x2ebc33,_0x72eea1){var _0x21d86b={};var _0xcfdbc8={};var _0x4e73dc;var _0x2153a4;return db[_0xad11('0x2a')][_0xad11('0x49')]({'where':{'id':_0x2d0c10[_0xad11('0x43')]['id']}})[_0xad11('0x24')](handleEntityNotFound(_0x2ebc33,null))[_0xad11('0x24')](function(_0x5dafc9){if(_0x5dafc9){_0x4e73dc=_0x5dafc9;_0xcfdbc8[_0xad11('0x33')]=_[_0xad11('0x30')](db['SugarcrmField'][_0xad11('0x2b')]);_0xcfdbc8[_0xad11('0x2f')]=_['keys'](_0x2d0c10[_0xad11('0x2f')]);_0xcfdbc8[_0xad11('0x3a')]=_['intersection'](_0xcfdbc8[_0xad11('0x33')],_0xcfdbc8[_0xad11('0x2f')]);_0x21d86b['attributes']=_[_0xad11('0x31')](_0xcfdbc8['model'],qs['fields'](_0x2d0c10[_0xad11('0x2f')][_0xad11('0x34')]));_0x21d86b[_0xad11('0x32')]=_0x21d86b[_0xad11('0x32')][_0xad11('0x35')]?_0x21d86b[_0xad11('0x32')]:_0xcfdbc8['model'];_0x21d86b[_0xad11('0x37')]=qs['sort'](_0x2d0c10['query'][_0xad11('0x38')]);_0x21d86b[_0xad11('0x39')]=qs[_0xad11('0x3a')](_['pick'](_0x2d0c10['query'],_0xcfdbc8[_0xad11('0x3a')]));if(_0x2d0c10[_0xad11('0x2f')][_0xad11('0x3c')]){_0x21d86b['where']=_[_0xad11('0x3d')](_0x21d86b[_0xad11('0x39')],{'$or':_[_0xad11('0x29')](_0x21d86b[_0xad11('0x32')],function(_0x19dea1){var _0x3a99b0={};_0x3a99b0[_0x19dea1]={'$like':'%'+_0x2d0c10['query']['filter']+'%'};return _0x3a99b0;})});}_0x21d86b=_['merge']({},_0x21d86b,_0x2d0c10['options']);return _0x4e73dc[_0xad11('0x4c')](_0x21d86b);}})[_0xad11('0x24')](function(_0x1459c3){if(_0x1459c3){_0x2153a4=_0x1459c3[_0xad11('0x35')];if(!_0x2d0c10[_0xad11('0x2f')][_0xad11('0x36')]('nolimit')){_0x21d86b[_0xad11('0x1b')]=qs[_0xad11('0x1b')](_0x2d0c10[_0xad11('0x2f')][_0xad11('0x1b')]);_0x21d86b[_0xad11('0x1a')]=qs['offset'](_0x2d0c10[_0xad11('0x2f')][_0xad11('0x1a')]);}return _0x4e73dc[_0xad11('0x4c')](_0x21d86b);}})[_0xad11('0x24')](function(_0x4ae1ae){if(_0x4ae1ae){return _0x4ae1ae?{'count':_0x2153a4,'rows':_0x4ae1ae}:null;}})[_0xad11('0x24')](respondWithResult(_0x2ebc33,null))[_0xad11('0x41')](handleError(_0x2ebc33,null));};exports[_0xad11('0x4d')]=function(_0x3243d5,_0x220511,_0x413b45){var _0x194e26={};var _0x455c0b={};var _0x10b6bf;var _0x2bd31a;return db[_0xad11('0x2a')]['findOne']({'where':{'id':_0x3243d5['params']['id']}})['then'](handleEntityNotFound(_0x220511,null))[_0xad11('0x24')](function(_0x24d6c4){if(_0x24d6c4){_0x10b6bf=_0x24d6c4;_0x455c0b[_0xad11('0x33')]=_['keys'](db[_0xad11('0x4a')][_0xad11('0x2b')]);_0x455c0b[_0xad11('0x2f')]=_[_0xad11('0x30')](_0x3243d5[_0xad11('0x2f')]);_0x455c0b[_0xad11('0x3a')]=_[_0xad11('0x31')](_0x455c0b[_0xad11('0x33')],_0x455c0b[_0xad11('0x2f')]);_0x194e26[_0xad11('0x32')]=_['intersection'](_0x455c0b[_0xad11('0x33')],qs[_0xad11('0x34')](_0x3243d5['query']['fields']));_0x194e26['attributes']=_0x194e26[_0xad11('0x32')][_0xad11('0x35')]?_0x194e26[_0xad11('0x32')]:_0x455c0b[_0xad11('0x33')];_0x194e26[_0xad11('0x37')]=qs[_0xad11('0x38')](_0x3243d5[_0xad11('0x2f')][_0xad11('0x38')]);_0x194e26[_0xad11('0x39')]=qs['filters'](_[_0xad11('0x3b')](_0x3243d5[_0xad11('0x2f')],_0x455c0b['filters']));if(_0x3243d5[_0xad11('0x2f')][_0xad11('0x3c')]){_0x194e26[_0xad11('0x39')]=_[_0xad11('0x3d')](_0x194e26[_0xad11('0x39')],{'$or':_[_0xad11('0x29')](_0x194e26[_0xad11('0x32')],function(_0x5929b5){var _0x11adf3={};_0x11adf3[_0x5929b5]={'$like':'%'+_0x3243d5['query'][_0xad11('0x3c')]+'%'};return _0x11adf3;})});}_0x194e26=_[_0xad11('0x3d')]({},_0x194e26,_0x3243d5[_0xad11('0x3e')]);return _0x10b6bf[_0xad11('0x4d')](_0x194e26);}})['then'](function(_0x5ca52b){if(_0x5ca52b){_0x2bd31a=_0x5ca52b['length'];if(!_0x3243d5[_0xad11('0x2f')][_0xad11('0x36')](_0xad11('0x4b'))){_0x194e26[_0xad11('0x1b')]=qs[_0xad11('0x1b')](_0x3243d5[_0xad11('0x2f')][_0xad11('0x1b')]);_0x194e26['offset']=qs[_0xad11('0x1a')](_0x3243d5[_0xad11('0x2f')]['offset']);}return _0x10b6bf[_0xad11('0x4d')](_0x194e26);}})[_0xad11('0x24')](function(_0x343c73){if(_0x343c73){return _0x343c73?{'count':_0x2bd31a,'rows':_0x343c73}:null;}})['then'](respondWithResult(_0x220511,null))['catch'](handleError(_0x220511,null));};
\ No newline at end of file
+var _0x2cae=['keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filters','merge','VIRTUAL','filter','options','includeAll','show','params','rawAttributes','catch','create','body','update','find','getFields','findOne','getSubjects','SugarcrmField','order','getDescriptions','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/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','then','error','stack','name','index','map','SugarcrmConfiguration','fieldName','type','model','query'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x2cae,0x1bd));var _0xe2ca=function(_0x11f249,_0x4ca4a8){_0x11f249=_0x11f249-0x0;var _0x5c3656=_0x2cae[_0x11f249];return _0x5c3656;};'use strict';var emlformat=require(_0xe2ca('0x0'));var rimraf=require(_0xe2ca('0x1'));var zipdir=require(_0xe2ca('0x2'));var jsonpatch=require(_0xe2ca('0x3'));var rp=require('request-promise');var moment=require(_0xe2ca('0x4'));var BPromise=require(_0xe2ca('0x5'));var Mustache=require(_0xe2ca('0x6'));var util=require(_0xe2ca('0x7'));var path=require(_0xe2ca('0x8'));var sox=require(_0xe2ca('0x9'));var csv=require(_0xe2ca('0xa'));var ejs=require(_0xe2ca('0xb'));var fs=require('fs');var fs_extra=require(_0xe2ca('0xc'));var _=require(_0xe2ca('0xd'));var squel=require(_0xe2ca('0xe'));var crypto=require('crypto');var jsforce=require(_0xe2ca('0xf'));var deskjs=require(_0xe2ca('0x10'));var toCsv=require(_0xe2ca('0xa'));var querystring=require(_0xe2ca('0x11'));var Papa=require(_0xe2ca('0x12'));var Redis=require(_0xe2ca('0x13'));var authService=require(_0xe2ca('0x14'));var qs=require(_0xe2ca('0x15'));var as=require(_0xe2ca('0x16'));var hardwareService=require(_0xe2ca('0x17'));var logger=require(_0xe2ca('0x18'))(_0xe2ca('0x19'));var utils=require(_0xe2ca('0x1a'));var config=require(_0xe2ca('0x1b'));var licenseUtil=require('../../config/license/util');var db=require(_0xe2ca('0x1c'))['db'];function respondWithStatusCode(_0x122983,_0x5d6dba){_0x5d6dba=_0x5d6dba||0xcc;return function(_0x50b1fc){if(_0x50b1fc){return _0x122983[_0xe2ca('0x1d')](_0x5d6dba);}return _0x122983[_0xe2ca('0x1e')](_0x5d6dba)[_0xe2ca('0x1f')]();};}function respondWithResult(_0x423613,_0x35e0e5){_0x35e0e5=_0x35e0e5||0xc8;return function(_0x4c52b1){if(_0x4c52b1){return _0x423613['status'](_0x35e0e5)[_0xe2ca('0x20')](_0x4c52b1);}};}function respondWithFilteredResult(_0x2d1500,_0x2a2fe3){return function(_0x2f4264){if(_0x2f4264){var _0x157026=typeof _0x2a2fe3['offset']===_0xe2ca('0x21')&&typeof _0x2a2fe3[_0xe2ca('0x22')]===_0xe2ca('0x21');var _0x22c2e4=_0x2f4264[_0xe2ca('0x23')];var _0x8befb1=_0x157026?0x0:_0x2a2fe3['offset'];var _0x4b9a8d=_0x157026?_0x2f4264['count']:_0x2a2fe3[_0xe2ca('0x24')]+_0x2a2fe3[_0xe2ca('0x22')];var _0x47300b;if(_0x4b9a8d>=_0x22c2e4){_0x4b9a8d=_0x22c2e4;_0x47300b=0xc8;}else{_0x47300b=0xce;}_0x2d1500[_0xe2ca('0x1e')](_0x47300b);return _0x2d1500[_0xe2ca('0x25')](_0xe2ca('0x26'),_0x8befb1+'-'+_0x4b9a8d+'/'+_0x22c2e4)[_0xe2ca('0x20')](_0x2f4264);}return null;};}function patchUpdates(_0x5b488a){return function(_0x1cc32a){try{jsonpatch[_0xe2ca('0x27')](_0x1cc32a,_0x5b488a,!![]);}catch(_0x454065){return BPromise[_0xe2ca('0x28')](_0x454065);}return _0x1cc32a[_0xe2ca('0x29')]();};}function saveUpdates(_0x2bdc49,_0x40dad5){return function(_0x2428e9){if(_0x2428e9){return _0x2428e9['update'](_0x2bdc49)[_0xe2ca('0x2a')](function(_0x56e1d3){return _0x56e1d3;});}return null;};}function removeEntity(_0x217d54,_0x16ddb5){return function(_0x1838ad){if(_0x1838ad){return _0x1838ad['destroy']()[_0xe2ca('0x2a')](function(){_0x217d54['status'](0xcc)[_0xe2ca('0x1f')]();});}};}function handleEntityNotFound(_0x4dcdb1,_0x3a9330){return function(_0x4c2b2f){if(!_0x4c2b2f){_0x4dcdb1[_0xe2ca('0x1d')](0x194);}return _0x4c2b2f;};}function handleError(_0x22f2d4,_0x5bddfa){_0x5bddfa=_0x5bddfa||0x1f4;return function(_0x598ace){logger[_0xe2ca('0x2b')](_0x598ace[_0xe2ca('0x2c')]);if(_0x598ace[_0xe2ca('0x2d')]){delete _0x598ace['name'];}_0x22f2d4['status'](_0x5bddfa)['send'](_0x598ace);};}exports[_0xe2ca('0x2e')]=function(_0x35cd25,_0x3a61af){var _0x13a732={},_0x54375e={},_0x1ef3e7={'count':0x0,'rows':[]};var _0x4dd9ea=_[_0xe2ca('0x2f')](db[_0xe2ca('0x30')]['rawAttributes'],function(_0x5eac58){return{'name':_0x5eac58[_0xe2ca('0x31')],'type':_0x5eac58[_0xe2ca('0x32')]['key']};});_0x54375e[_0xe2ca('0x33')]=_[_0xe2ca('0x2f')](_0x4dd9ea,_0xe2ca('0x2d'));_0x54375e[_0xe2ca('0x34')]=_[_0xe2ca('0x35')](_0x35cd25[_0xe2ca('0x34')]);_0x54375e['filters']=_[_0xe2ca('0x36')](_0x54375e[_0xe2ca('0x33')],_0x54375e[_0xe2ca('0x34')]);_0x13a732[_0xe2ca('0x37')]=_[_0xe2ca('0x36')](_0x54375e[_0xe2ca('0x33')],qs['fields'](_0x35cd25[_0xe2ca('0x34')][_0xe2ca('0x38')]));_0x13a732[_0xe2ca('0x37')]=_0x13a732[_0xe2ca('0x37')][_0xe2ca('0x39')]?_0x13a732[_0xe2ca('0x37')]:_0x54375e[_0xe2ca('0x33')];if(!_0x35cd25[_0xe2ca('0x34')][_0xe2ca('0x3a')](_0xe2ca('0x3b'))){_0x13a732[_0xe2ca('0x22')]=qs[_0xe2ca('0x22')](_0x35cd25[_0xe2ca('0x34')][_0xe2ca('0x22')]);_0x13a732[_0xe2ca('0x24')]=qs[_0xe2ca('0x24')](_0x35cd25[_0xe2ca('0x34')]['offset']);}_0x13a732['order']=qs[_0xe2ca('0x3c')](_0x35cd25[_0xe2ca('0x34')][_0xe2ca('0x3c')]);_0x13a732[_0xe2ca('0x3d')]=qs['filters'](_[_0xe2ca('0x3e')](_0x35cd25[_0xe2ca('0x34')],_0x54375e[_0xe2ca('0x3f')]),_0x4dd9ea);if(_0x35cd25[_0xe2ca('0x34')]['filter']){_0x13a732[_0xe2ca('0x3d')]=_[_0xe2ca('0x40')](_0x13a732[_0xe2ca('0x3d')],{'$or':_[_0xe2ca('0x2f')](_0x4dd9ea,function(_0x1ea44a){if(_0x1ea44a['type']!==_0xe2ca('0x41')){var _0x2fdfa5={};_0x2fdfa5[_0x1ea44a[_0xe2ca('0x2d')]]={'$like':'%'+_0x35cd25['query'][_0xe2ca('0x42')]+'%'};return _0x2fdfa5;}})});}_0x13a732=_[_0xe2ca('0x40')]({},_0x13a732,_0x35cd25[_0xe2ca('0x43')]);var _0x44d6b5={'where':_0x13a732[_0xe2ca('0x3d')]};return db[_0xe2ca('0x30')][_0xe2ca('0x23')](_0x44d6b5)[_0xe2ca('0x2a')](function(_0x3dd75d){_0x1ef3e7[_0xe2ca('0x23')]=_0x3dd75d;if(_0x35cd25[_0xe2ca('0x34')][_0xe2ca('0x44')]){_0x13a732['include']=[{'all':!![]}];}return db[_0xe2ca('0x30')]['findAll'](_0x13a732);})[_0xe2ca('0x2a')](function(_0x586a6f){_0x1ef3e7['rows']=_0x586a6f;return _0x1ef3e7;})[_0xe2ca('0x2a')](respondWithFilteredResult(_0x3a61af,_0x13a732))['catch'](handleError(_0x3a61af,null));};exports[_0xe2ca('0x45')]=function(_0x479182,_0x144705){var _0x38f787={'raw':![],'where':{'id':_0x479182[_0xe2ca('0x46')]['id']}},_0x1f5c3e={};_0x1f5c3e['model']=_[_0xe2ca('0x35')](db[_0xe2ca('0x30')][_0xe2ca('0x47')]);_0x1f5c3e[_0xe2ca('0x34')]=_[_0xe2ca('0x35')](_0x479182[_0xe2ca('0x34')]);_0x1f5c3e[_0xe2ca('0x3f')]=_[_0xe2ca('0x36')](_0x1f5c3e[_0xe2ca('0x33')],_0x1f5c3e[_0xe2ca('0x34')]);_0x38f787[_0xe2ca('0x37')]=_['intersection'](_0x1f5c3e['model'],qs[_0xe2ca('0x38')](_0x479182[_0xe2ca('0x34')][_0xe2ca('0x38')]));_0x38f787['attributes']=_0x38f787[_0xe2ca('0x37')]['length']?_0x38f787['attributes']:_0x1f5c3e['model'];if(_0x479182[_0xe2ca('0x34')][_0xe2ca('0x44')]){_0x38f787['include']=[{'all':!![]}];}_0x38f787=_['merge']({},_0x38f787,_0x479182[_0xe2ca('0x43')]);return db['SugarcrmConfiguration']['find'](_0x38f787)['then'](handleEntityNotFound(_0x144705,null))[_0xe2ca('0x2a')](respondWithResult(_0x144705,null))[_0xe2ca('0x48')](handleError(_0x144705,null));};exports[_0xe2ca('0x49')]=function(_0x23f8d0,_0x4a609a){return db[_0xe2ca('0x30')]['create'](_0x23f8d0[_0xe2ca('0x4a')],{})[_0xe2ca('0x2a')](respondWithResult(_0x4a609a,0xc9))[_0xe2ca('0x48')](handleError(_0x4a609a,null));};exports[_0xe2ca('0x4b')]=function(_0x1356f8,_0x127c42){if(_0x1356f8[_0xe2ca('0x4a')]['id']){delete _0x1356f8[_0xe2ca('0x4a')]['id'];}return db[_0xe2ca('0x30')]['find']({'where':{'id':_0x1356f8[_0xe2ca('0x46')]['id']}})[_0xe2ca('0x2a')](handleEntityNotFound(_0x127c42,null))[_0xe2ca('0x2a')](saveUpdates(_0x1356f8['body'],null))[_0xe2ca('0x2a')](respondWithResult(_0x127c42,null))['catch'](handleError(_0x127c42,null));};exports['destroy']=function(_0x30b475,_0x283145){return db[_0xe2ca('0x30')][_0xe2ca('0x4c')]({'where':{'id':_0x30b475[_0xe2ca('0x46')]['id']}})['then'](handleEntityNotFound(_0x283145,null))['then'](removeEntity(_0x283145,null))[_0xe2ca('0x48')](handleError(_0x283145,null));};exports[_0xe2ca('0x4d')]=function(_0x519e7b,_0x2ef143,_0x2a54ab){var _0x1b2f4e={};var _0x56823a={};var _0x52b2d5;var _0x4f0398;return db[_0xe2ca('0x30')][_0xe2ca('0x4e')]({'where':{'id':_0x519e7b[_0xe2ca('0x46')]['id']}})[_0xe2ca('0x2a')](handleEntityNotFound(_0x2ef143,null))['then'](function(_0x4b42b9){if(_0x4b42b9){_0x52b2d5=_0x4b42b9;_0x56823a[_0xe2ca('0x33')]=_[_0xe2ca('0x35')](db['SugarcrmField'][_0xe2ca('0x47')]);_0x56823a['query']=_['keys'](_0x519e7b['query']);_0x56823a[_0xe2ca('0x3f')]=_[_0xe2ca('0x36')](_0x56823a[_0xe2ca('0x33')],_0x56823a[_0xe2ca('0x34')]);_0x1b2f4e[_0xe2ca('0x37')]=_[_0xe2ca('0x36')](_0x56823a[_0xe2ca('0x33')],qs[_0xe2ca('0x38')](_0x519e7b[_0xe2ca('0x34')][_0xe2ca('0x38')]));_0x1b2f4e[_0xe2ca('0x37')]=_0x1b2f4e[_0xe2ca('0x37')][_0xe2ca('0x39')]?_0x1b2f4e[_0xe2ca('0x37')]:_0x56823a[_0xe2ca('0x33')];_0x1b2f4e['order']=qs['sort'](_0x519e7b[_0xe2ca('0x34')][_0xe2ca('0x3c')]);_0x1b2f4e[_0xe2ca('0x3d')]=qs['filters'](_['pick'](_0x519e7b[_0xe2ca('0x34')],_0x56823a[_0xe2ca('0x3f')]));if(_0x519e7b['query'][_0xe2ca('0x42')]){_0x1b2f4e[_0xe2ca('0x3d')]=_[_0xe2ca('0x40')](_0x1b2f4e['where'],{'$or':_[_0xe2ca('0x2f')](_0x1b2f4e[_0xe2ca('0x37')],function(_0x2b5e30){var _0x2905fb={};_0x2905fb[_0x2b5e30]={'$like':'%'+_0x519e7b[_0xe2ca('0x34')]['filter']+'%'};return _0x2905fb;})});}_0x1b2f4e=_[_0xe2ca('0x40')]({},_0x1b2f4e,_0x519e7b[_0xe2ca('0x43')]);return _0x52b2d5[_0xe2ca('0x4d')](_0x1b2f4e);}})[_0xe2ca('0x2a')](function(_0xb87376){if(_0xb87376){_0x4f0398=_0xb87376[_0xe2ca('0x39')];if(!_0x519e7b[_0xe2ca('0x34')][_0xe2ca('0x3a')]('nolimit')){_0x1b2f4e[_0xe2ca('0x22')]=qs[_0xe2ca('0x22')](_0x519e7b[_0xe2ca('0x34')]['limit']);_0x1b2f4e[_0xe2ca('0x24')]=qs['offset'](_0x519e7b[_0xe2ca('0x34')][_0xe2ca('0x24')]);}return _0x52b2d5[_0xe2ca('0x4d')](_0x1b2f4e);}})[_0xe2ca('0x2a')](function(_0x26eb10){if(_0x26eb10){return _0x26eb10?{'count':_0x4f0398,'rows':_0x26eb10}:null;}})[_0xe2ca('0x2a')](respondWithResult(_0x2ef143,null))[_0xe2ca('0x48')](handleError(_0x2ef143,null));};exports[_0xe2ca('0x4f')]=function(_0x53f6ec,_0x8a85fa,_0x248a27){var _0x246ec3={};var _0x3725a1={};var _0x8d14a9;var _0x463218;return db[_0xe2ca('0x30')][_0xe2ca('0x4e')]({'where':{'id':_0x53f6ec[_0xe2ca('0x46')]['id']}})['then'](handleEntityNotFound(_0x8a85fa,null))[_0xe2ca('0x2a')](function(_0xb47ad5){if(_0xb47ad5){_0x8d14a9=_0xb47ad5;_0x3725a1['model']=_['keys'](db[_0xe2ca('0x50')]['rawAttributes']);_0x3725a1['query']=_['keys'](_0x53f6ec[_0xe2ca('0x34')]);_0x3725a1['filters']=_[_0xe2ca('0x36')](_0x3725a1['model'],_0x3725a1[_0xe2ca('0x34')]);_0x246ec3[_0xe2ca('0x37')]=_[_0xe2ca('0x36')](_0x3725a1[_0xe2ca('0x33')],qs[_0xe2ca('0x38')](_0x53f6ec[_0xe2ca('0x34')][_0xe2ca('0x38')]));_0x246ec3[_0xe2ca('0x37')]=_0x246ec3['attributes'][_0xe2ca('0x39')]?_0x246ec3[_0xe2ca('0x37')]:_0x3725a1[_0xe2ca('0x33')];_0x246ec3[_0xe2ca('0x51')]=qs['sort'](_0x53f6ec[_0xe2ca('0x34')]['sort']);_0x246ec3[_0xe2ca('0x3d')]=qs['filters'](_[_0xe2ca('0x3e')](_0x53f6ec[_0xe2ca('0x34')],_0x3725a1[_0xe2ca('0x3f')]));if(_0x53f6ec[_0xe2ca('0x34')][_0xe2ca('0x42')]){_0x246ec3[_0xe2ca('0x3d')]=_[_0xe2ca('0x40')](_0x246ec3[_0xe2ca('0x3d')],{'$or':_[_0xe2ca('0x2f')](_0x246ec3['attributes'],function(_0x2513b4){var _0xdfc7f1={};_0xdfc7f1[_0x2513b4]={'$like':'%'+_0x53f6ec[_0xe2ca('0x34')][_0xe2ca('0x42')]+'%'};return _0xdfc7f1;})});}_0x246ec3=_['merge']({},_0x246ec3,_0x53f6ec[_0xe2ca('0x43')]);return _0x8d14a9['getSubjects'](_0x246ec3);}})[_0xe2ca('0x2a')](function(_0x281eb9){if(_0x281eb9){_0x463218=_0x281eb9[_0xe2ca('0x39')];if(!_0x53f6ec['query']['hasOwnProperty'](_0xe2ca('0x3b'))){_0x246ec3[_0xe2ca('0x22')]=qs['limit'](_0x53f6ec[_0xe2ca('0x34')][_0xe2ca('0x22')]);_0x246ec3[_0xe2ca('0x24')]=qs['offset'](_0x53f6ec[_0xe2ca('0x34')][_0xe2ca('0x24')]);}return _0x8d14a9[_0xe2ca('0x4f')](_0x246ec3);}})[_0xe2ca('0x2a')](function(_0x3fddb1){if(_0x3fddb1){return _0x3fddb1?{'count':_0x463218,'rows':_0x3fddb1}:null;}})[_0xe2ca('0x2a')](respondWithResult(_0x8a85fa,null))['catch'](handleError(_0x8a85fa,null));};exports['getDescriptions']=function(_0x5d89a2,_0x13a10f,_0x548b86){var _0x494bc5={};var _0x2484a0={};var _0x37c2c8;var _0x5abf52;return db[_0xe2ca('0x30')][_0xe2ca('0x4e')]({'where':{'id':_0x5d89a2[_0xe2ca('0x46')]['id']}})[_0xe2ca('0x2a')](handleEntityNotFound(_0x13a10f,null))[_0xe2ca('0x2a')](function(_0x269679){if(_0x269679){_0x37c2c8=_0x269679;_0x2484a0[_0xe2ca('0x33')]=_[_0xe2ca('0x35')](db['SugarcrmField']['rawAttributes']);_0x2484a0[_0xe2ca('0x34')]=_['keys'](_0x5d89a2[_0xe2ca('0x34')]);_0x2484a0[_0xe2ca('0x3f')]=_[_0xe2ca('0x36')](_0x2484a0['model'],_0x2484a0['query']);_0x494bc5[_0xe2ca('0x37')]=_[_0xe2ca('0x36')](_0x2484a0[_0xe2ca('0x33')],qs['fields'](_0x5d89a2[_0xe2ca('0x34')][_0xe2ca('0x38')]));_0x494bc5[_0xe2ca('0x37')]=_0x494bc5['attributes'][_0xe2ca('0x39')]?_0x494bc5[_0xe2ca('0x37')]:_0x2484a0[_0xe2ca('0x33')];_0x494bc5[_0xe2ca('0x51')]=qs[_0xe2ca('0x3c')](_0x5d89a2[_0xe2ca('0x34')][_0xe2ca('0x3c')]);_0x494bc5[_0xe2ca('0x3d')]=qs[_0xe2ca('0x3f')](_[_0xe2ca('0x3e')](_0x5d89a2['query'],_0x2484a0['filters']));if(_0x5d89a2[_0xe2ca('0x34')][_0xe2ca('0x42')]){_0x494bc5['where']=_['merge'](_0x494bc5[_0xe2ca('0x3d')],{'$or':_[_0xe2ca('0x2f')](_0x494bc5[_0xe2ca('0x37')],function(_0xacbde5){var _0x34a142={};_0x34a142[_0xacbde5]={'$like':'%'+_0x5d89a2[_0xe2ca('0x34')]['filter']+'%'};return _0x34a142;})});}_0x494bc5=_[_0xe2ca('0x40')]({},_0x494bc5,_0x5d89a2[_0xe2ca('0x43')]);return _0x37c2c8[_0xe2ca('0x52')](_0x494bc5);}})[_0xe2ca('0x2a')](function(_0x473fcd){if(_0x473fcd){_0x5abf52=_0x473fcd[_0xe2ca('0x39')];if(!_0x5d89a2['query'][_0xe2ca('0x3a')](_0xe2ca('0x3b'))){_0x494bc5['limit']=qs[_0xe2ca('0x22')](_0x5d89a2[_0xe2ca('0x34')][_0xe2ca('0x22')]);_0x494bc5[_0xe2ca('0x24')]=qs[_0xe2ca('0x24')](_0x5d89a2[_0xe2ca('0x34')][_0xe2ca('0x24')]);}return _0x37c2c8[_0xe2ca('0x52')](_0x494bc5);}})['then'](function(_0x172cf6){if(_0x172cf6){return _0x172cf6?{'count':_0x5abf52,'rows':_0x172cf6}:null;}})[_0xe2ca('0x2a')](respondWithResult(_0x13a10f,null))[_0xe2ca('0x48')](handleError(_0x13a10f,null));};
\ No newline at end of file
index 9493768..edb2a52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e9b=['int_sugarcrm_configurations','lodash','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./intSugarcrmConfiguration.attributes','define','SugarcrmConfiguration'];(function(_0x2bc375,_0x3085f9){var _0x3796c8=function(_0xa402c2){while(--_0xa402c2){_0x2bc375['push'](_0x2bc375['shift']());}};_0x3796c8(++_0x3085f9);}(_0x4e9b,0x1ed));var _0xb4e9=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0x4e9b[_0x5d6456];return _0x4d66c1;};'use strict';var _=require(_0xb4e9('0x0'));var util=require('util');var logger=require(_0xb4e9('0x1'))(_0xb4e9('0x2'));var moment=require('moment');var BPromise=require(_0xb4e9('0x3'));var rp=require(_0xb4e9('0x4'));var fs=require('fs');var path=require(_0xb4e9('0x5'));var rimraf=require(_0xb4e9('0x6'));var config=require(_0xb4e9('0x7'));var attributes=require(_0xb4e9('0x8'));module['exports']=function(_0x389d99,_0x38e189){return _0x389d99[_0xb4e9('0x9')](_0xb4e9('0xa'),attributes,{'tableName':_0xb4e9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x06d2=['request-promise','path','rimraf','./intSugarcrmConfiguration.attributes','exports','int_sugarcrm_configurations','util','moment','bluebird'];(function(_0x41c45f,_0x15f570){var _0x2731f3=function(_0x25ef12){while(--_0x25ef12){_0x41c45f['push'](_0x41c45f['shift']());}};_0x2731f3(++_0x15f570);}(_0x06d2,0x138));var _0x206d=function(_0x3fe6f4,_0x221e39){_0x3fe6f4=_0x3fe6f4-0x0;var _0x330489=_0x06d2[_0x3fe6f4];return _0x330489;};'use strict';var _=require('lodash');var util=require(_0x206d('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x206d('0x1'));var BPromise=require(_0x206d('0x2'));var rp=require(_0x206d('0x3'));var fs=require('fs');var path=require(_0x206d('0x4'));var rimraf=require(_0x206d('0x5'));var config=require('../../config/environment');var attributes=require(_0x206d('0x6'));module[_0x206d('0x7')]=function(_0x3f9711,_0x310172){return _0x3f9711['define']('SugarcrmConfiguration',attributes,{'tableName':_0x206d('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d51083b..24e92f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x950b=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird'];(function(_0x2ef345,_0x7edda2){var _0x3dbad6=function(_0x53cf70){while(--_0x53cf70){_0x2ef345['push'](_0x2ef345['shift']());}};_0x3dbad6(++_0x7edda2);}(_0x950b,0x146));var _0xb950=function(_0x5c4504,_0x43bd6d){_0x5c4504=_0x5c4504-0x0;var _0xa9e952=_0x950b[_0x5c4504];return _0xa9e952;};'use strict';var _=require(_0xb950('0x0'));var util=require(_0xb950('0x1'));var moment=require(_0xb950('0x2'));var BPromise=require(_0xb950('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb950('0x4'));var db=require(_0xb950('0x5'))['db'];var utils=require(_0xb950('0x6'));var logger=require(_0xb950('0x7'))(_0xb950('0x8'));var config=require(_0xb950('0x9'));var jayson=require(_0xb950('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2c20b9,_0x5adcfc,_0x5a7784){return new BPromise(function(_0x44269e,_0x319149){return client[_0xb950('0xb')](_0x2c20b9,_0x5a7784)[_0xb950('0xc')](function(_0xa4419d){logger[_0xb950('0xd')](_0xb950('0xe'),_0x5adcfc,_0xb950('0xf'));logger['debug'](_0xb950('0x10'),_0x5adcfc,_0xb950('0xf'),JSON[_0xb950('0x11')](_0xa4419d));if(_0xa4419d[_0xb950('0x12')]){if(_0xa4419d[_0xb950('0x12')][_0xb950('0x13')]===0x1f4){logger[_0xb950('0x12')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x5adcfc,_0xa4419d[_0xb950('0x12')][_0xb950('0x14')]);return _0x319149(_0xa4419d['error'][_0xb950('0x14')]);}logger['error'](_0xb950('0xe'),_0x5adcfc,_0xa4419d['error'][_0xb950('0x14')]);return _0x44269e(_0xa4419d[_0xb950('0x12')][_0xb950('0x14')]);}else{logger['info']('SugarcrmConfiguration,\x20%s,\x20%s',_0x5adcfc,'request\x20sent');_0x44269e(_0xa4419d['result'][_0xb950('0x14')]);}})[_0xb950('0x15')](function(_0x59d866){logger[_0xb950('0x12')](_0xb950('0xe'),_0x5adcfc,_0x59d866);_0x319149(_0x59d866);});});}
\ No newline at end of file
+var _0xbca8=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x4e3ccd,_0x337c0a){var _0x3048e0=function(_0x565eca){while(--_0x565eca){_0x4e3ccd['push'](_0x4e3ccd['shift']());}};_0x3048e0(++_0x337c0a);}(_0xbca8,0xaa));var _0x8bca=function(_0x42a1bb,_0x28989f){_0x42a1bb=_0x42a1bb-0x0;var _0x2f41e6=_0xbca8[_0x42a1bb];return _0x2f41e6;};'use strict';var _=require(_0x8bca('0x0'));var util=require(_0x8bca('0x1'));var moment=require(_0x8bca('0x2'));var BPromise=require(_0x8bca('0x3'));var rs=require(_0x8bca('0x4'));var fs=require('fs');var Redis=require(_0x8bca('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x8bca('0x6'))(_0x8bca('0x7'));var config=require(_0x8bca('0x8'));var jayson=require(_0x8bca('0x9'));var client=jayson[_0x8bca('0xa')][_0x8bca('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x74dc84,_0x173cb9,_0x36b475){return new BPromise(function(_0x317b0d,_0x2f08b1){return client['request'](_0x74dc84,_0x36b475)[_0x8bca('0xc')](function(_0xd10cc1){logger['info'](_0x8bca('0xd'),_0x173cb9,_0x8bca('0xe'));logger[_0x8bca('0xf')]('SugarcrmConfiguration,\x20%s,\x20%s,\x20%s',_0x173cb9,_0x8bca('0xe'),JSON[_0x8bca('0x10')](_0xd10cc1));if(_0xd10cc1[_0x8bca('0x11')]){if(_0xd10cc1[_0x8bca('0x11')]['code']===0x1f4){logger['error'](_0x8bca('0xd'),_0x173cb9,_0xd10cc1[_0x8bca('0x11')]['message']);return _0x2f08b1(_0xd10cc1[_0x8bca('0x11')][_0x8bca('0x12')]);}logger[_0x8bca('0x11')](_0x8bca('0xd'),_0x173cb9,_0xd10cc1[_0x8bca('0x11')][_0x8bca('0x12')]);return _0x317b0d(_0xd10cc1[_0x8bca('0x11')][_0x8bca('0x12')]);}else{logger[_0x8bca('0x13')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x173cb9,'request\x20sent');_0x317b0d(_0xd10cc1[_0x8bca('0x14')][_0x8bca('0x12')]);}})[_0x8bca('0x15')](function(_0x591773){logger[_0x8bca('0x11')](_0x8bca('0xd'),_0x173cb9,_0x591773);_0x2f08b1(_0x591773);});});}
\ No newline at end of file
index 9a566d1..49ac2b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x804a=['Router','fs-extra','../../components/interaction/service','./intSugarcrmField.controller','get','isAuthenticated','show','post','/:id','destroy','multer','connect-timeout'];(function(_0x395265,_0x3a5d76){var _0x2fb974=function(_0x42c08d){while(--_0x42c08d){_0x395265['push'](_0x395265['shift']());}};_0x2fb974(++_0x3a5d76);}(_0x804a,0xbe));var _0xa804=function(_0x57e964,_0x5516ed){_0x57e964=_0x57e964-0x0;var _0x121ae9=_0x804a[_0x57e964];return _0x121ae9;};'use strict';var multer=require(_0xa804('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xa804('0x1'));var express=require('express');var router=express[_0xa804('0x2')]();var fs_extra=require(_0xa804('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa804('0x4'));var config=require('../../config/environment');var controller=require(_0xa804('0x5'));router[_0xa804('0x6')]('/',auth[_0xa804('0x7')](),controller['index']);router['get']('/:id',auth[_0xa804('0x7')](),controller[_0xa804('0x8')]);router[_0xa804('0x9')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xa804('0xa'),auth[_0xa804('0x7')](),controller['update']);router['delete'](_0xa804('0xa'),auth[_0xa804('0x7')](),controller[_0xa804('0xb')]);module['exports']=router;
\ No newline at end of file
+var _0x51eb=['exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./intSugarcrmField.controller','get','isAuthenticated','index','show','post','put','update','delete','/:id','destroy'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x51eb,0xac));var _0xb51e=function(_0xc929a6,_0x4adc9e){_0xc929a6=_0xc929a6-0x0;var _0x2f8b1e=_0x51eb[_0xc929a6];return _0x2f8b1e;};'use strict';var multer=require('multer');var util=require(_0xb51e('0x0'));var path=require(_0xb51e('0x1'));var timeout=require(_0xb51e('0x2'));var express=require('express');var router=express[_0xb51e('0x3')]();var fs_extra=require(_0xb51e('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xb51e('0x5'));var config=require(_0xb51e('0x6'));var controller=require(_0xb51e('0x7'));router[_0xb51e('0x8')]('/',auth[_0xb51e('0x9')](),controller[_0xb51e('0xa')]);router[_0xb51e('0x8')]('/:id',auth[_0xb51e('0x9')](),controller[_0xb51e('0xb')]);router[_0xb51e('0xc')]('/',auth[_0xb51e('0x9')](),controller['create']);router[_0xb51e('0xd')]('/:id',auth[_0xb51e('0x9')](),controller[_0xb51e('0xe')]);router[_0xb51e('0xf')](_0xb51e('0x10'),auth[_0xb51e('0x9')](),controller[_0xb51e('0x11')]);module[_0xb51e('0x12')]=router;
\ No newline at end of file
index 1adc532..71b88c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4600=['customVariable','picklist','STRING','variable','BOOLEAN','sequelize','ENUM','string'];(function(_0x24b791,_0x3a47c4){var _0x44f134=function(_0x2e89fc){while(--_0x2e89fc){_0x24b791['push'](_0x24b791['shift']());}};_0x44f134(++_0x3a47c4);}(_0x4600,0xdd));var _0x0460=function(_0x4584b7,_0x396a41){_0x4584b7=_0x4584b7-0x0;var _0x2bbf5c=_0x4600[_0x4584b7];return _0x2bbf5c;};'use strict';var Sequelize=require(_0x0460('0x0'));module['exports']={'type':{'type':Sequelize[_0x0460('0x1')](_0x0460('0x2'),'variable',_0x0460('0x3'),'keyValue',_0x0460('0x4')),'defaultValue':_0x0460('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x0460('0x5')]},'keyType':{'type':Sequelize[_0x0460('0x1')](_0x0460('0x2'),_0x0460('0x6'),_0x0460('0x3'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x0460('0x5')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x0460('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x0460('0x5')]}};
\ No newline at end of file
+var _0xa8a8=['customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string','variable'];(function(_0x181a3d,_0x5b9211){var _0x1c8483=function(_0x4c4175){while(--_0x4c4175){_0x181a3d['push'](_0x181a3d['shift']());}};_0x1c8483(++_0x5b9211);}(_0xa8a8,0x177));var _0x8a8a=function(_0x467b5e,_0xbe174d){_0x467b5e=_0x467b5e-0x0;var _0x10e5fd=_0xa8a8[_0x467b5e];return _0x10e5fd;};'use strict';var Sequelize=require(_0x8a8a('0x0'));module[_0x8a8a('0x1')]={'type':{'type':Sequelize[_0x8a8a('0x2')](_0x8a8a('0x3'),_0x8a8a('0x4'),_0x8a8a('0x5'),_0x8a8a('0x6'),_0x8a8a('0x7')),'defaultValue':'string'},'content':{'type':Sequelize[_0x8a8a('0x8')]},'key':{'type':Sequelize[_0x8a8a('0x8')]},'keyType':{'type':Sequelize[_0x8a8a('0x2')](_0x8a8a('0x3'),_0x8a8a('0x4'),_0x8a8a('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x8a8a('0x8')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x8a8a('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x8a8a('0x8')]}};
\ No newline at end of file
index 5fd5cb8..69bdd05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8f0=['pick','filters','filter','merge','type','VIRTUAL','includeAll','include','rows','catch','show','options','find','create','body','params','destroy','eml-format','rimraf','zip-dir','fast-json-patch','mustache','util','path','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','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','json','limit','undefined','count','offset','status','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','map','SugarcrmField','fieldName','model','query','keys','attributes','intersection','fields','hasOwnProperty','nolimit','order','where'];(function(_0xbf8ebe,_0x3b69a5){var _0x1e25e8=function(_0x40c390){while(--_0x40c390){_0xbf8ebe['push'](_0xbf8ebe['shift']());}};_0x1e25e8(++_0x3b69a5);}(_0xd8f0,0x1d3));var _0x0d8f=function(_0x24e91d,_0x5d6ffe){_0x24e91d=_0x24e91d-0x0;var _0x324d8d=_0xd8f0[_0x24e91d];return _0x324d8d;};'use strict';var emlformat=require(_0x0d8f('0x0'));var rimraf=require(_0x0d8f('0x1'));var zipdir=require(_0x0d8f('0x2'));var jsonpatch=require(_0x0d8f('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x0d8f('0x4'));var util=require(_0x0d8f('0x5'));var path=require(_0x0d8f('0x6'));var sox=require(_0x0d8f('0x7'));var csv=require(_0x0d8f('0x8'));var ejs=require(_0x0d8f('0x9'));var fs=require('fs');var fs_extra=require(_0x0d8f('0xa'));var _=require(_0x0d8f('0xb'));var squel=require(_0x0d8f('0xc'));var crypto=require(_0x0d8f('0xd'));var jsforce=require(_0x0d8f('0xe'));var deskjs=require(_0x0d8f('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0d8f('0x10'));var Redis=require(_0x0d8f('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x0d8f('0x12'));var as=require(_0x0d8f('0x13'));var hardwareService=require(_0x0d8f('0x14'));var logger=require(_0x0d8f('0x15'))(_0x0d8f('0x16'));var utils=require(_0x0d8f('0x17'));var config=require(_0x0d8f('0x18'));var licenseUtil=require(_0x0d8f('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3dc6e4,_0x55f08f){_0x55f08f=_0x55f08f||0xcc;return function(_0x4a1e09){if(_0x4a1e09){return _0x3dc6e4[_0x0d8f('0x1a')](_0x55f08f);}return _0x3dc6e4['status'](_0x55f08f)[_0x0d8f('0x1b')]();};}function respondWithResult(_0x20289c,_0x4d104f){_0x4d104f=_0x4d104f||0xc8;return function(_0x16595e){if(_0x16595e){return _0x20289c['status'](_0x4d104f)[_0x0d8f('0x1c')](_0x16595e);}};}function respondWithFilteredResult(_0x3533c0,_0x2646f3){return function(_0x28e356){if(_0x28e356){var _0x39a7f9=typeof _0x2646f3['offset']==='undefined'&&typeof _0x2646f3[_0x0d8f('0x1d')]===_0x0d8f('0x1e');var _0x505cf9=_0x28e356[_0x0d8f('0x1f')];var _0x58a18c=_0x39a7f9?0x0:_0x2646f3['offset'];var _0x803af4=_0x39a7f9?_0x28e356[_0x0d8f('0x1f')]:_0x2646f3[_0x0d8f('0x20')]+_0x2646f3[_0x0d8f('0x1d')];var _0x3eba00;if(_0x803af4>=_0x505cf9){_0x803af4=_0x505cf9;_0x3eba00=0xc8;}else{_0x3eba00=0xce;}_0x3533c0[_0x0d8f('0x21')](_0x3eba00);return _0x3533c0[_0x0d8f('0x22')](_0x0d8f('0x23'),_0x58a18c+'-'+_0x803af4+'/'+_0x505cf9)[_0x0d8f('0x1c')](_0x28e356);}return null;};}function patchUpdates(_0x57c865){return function(_0x5f3d9b){try{jsonpatch[_0x0d8f('0x24')](_0x5f3d9b,_0x57c865,!![]);}catch(_0x2c5248){return BPromise[_0x0d8f('0x25')](_0x2c5248);}return _0x5f3d9b[_0x0d8f('0x26')]();};}function saveUpdates(_0x4d7305,_0x369931){return function(_0x26fbe1){if(_0x26fbe1){return _0x26fbe1[_0x0d8f('0x27')](_0x4d7305)[_0x0d8f('0x28')](function(_0x419e4a){return _0x419e4a;});}return null;};}function removeEntity(_0x3a985e,_0x521273){return function(_0x28049e){if(_0x28049e){return _0x28049e['destroy']()[_0x0d8f('0x28')](function(){_0x3a985e['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x246162,_0x4b26b4){return function(_0x4fdc24){if(!_0x4fdc24){_0x246162[_0x0d8f('0x1a')](0x194);}return _0x4fdc24;};}function handleError(_0x3dd531,_0xe01b4c){_0xe01b4c=_0xe01b4c||0x1f4;return function(_0xf2dabe){logger[_0x0d8f('0x29')](_0xf2dabe[_0x0d8f('0x2a')]);if(_0xf2dabe[_0x0d8f('0x2b')]){delete _0xf2dabe[_0x0d8f('0x2b')];}_0x3dd531['status'](_0xe01b4c)[_0x0d8f('0x2c')](_0xf2dabe);};}exports['index']=function(_0x42ba46,_0x18c51e){var _0x6b704c={},_0xd0c9d6={},_0x3bd2c7={'count':0x0,'rows':[]};var _0x4d681a=_[_0x0d8f('0x2d')](db[_0x0d8f('0x2e')]['rawAttributes'],function(_0xc0fc2f){return{'name':_0xc0fc2f[_0x0d8f('0x2f')],'type':_0xc0fc2f['type']['key']};});_0xd0c9d6[_0x0d8f('0x30')]=_[_0x0d8f('0x2d')](_0x4d681a,'name');_0xd0c9d6[_0x0d8f('0x31')]=_[_0x0d8f('0x32')](_0x42ba46[_0x0d8f('0x31')]);_0xd0c9d6['filters']=_['intersection'](_0xd0c9d6['model'],_0xd0c9d6[_0x0d8f('0x31')]);_0x6b704c[_0x0d8f('0x33')]=_[_0x0d8f('0x34')](_0xd0c9d6['model'],qs[_0x0d8f('0x35')](_0x42ba46['query'][_0x0d8f('0x35')]));_0x6b704c[_0x0d8f('0x33')]=_0x6b704c[_0x0d8f('0x33')]['length']?_0x6b704c[_0x0d8f('0x33')]:_0xd0c9d6[_0x0d8f('0x30')];if(!_0x42ba46['query'][_0x0d8f('0x36')](_0x0d8f('0x37'))){_0x6b704c[_0x0d8f('0x1d')]=qs[_0x0d8f('0x1d')](_0x42ba46['query'][_0x0d8f('0x1d')]);_0x6b704c[_0x0d8f('0x20')]=qs['offset'](_0x42ba46[_0x0d8f('0x31')][_0x0d8f('0x20')]);}_0x6b704c[_0x0d8f('0x38')]=qs['sort'](_0x42ba46[_0x0d8f('0x31')]['sort']);_0x6b704c[_0x0d8f('0x39')]=qs['filters'](_[_0x0d8f('0x3a')](_0x42ba46[_0x0d8f('0x31')],_0xd0c9d6[_0x0d8f('0x3b')]),_0x4d681a);if(_0x42ba46['query'][_0x0d8f('0x3c')]){_0x6b704c[_0x0d8f('0x39')]=_[_0x0d8f('0x3d')](_0x6b704c[_0x0d8f('0x39')],{'$or':_[_0x0d8f('0x2d')](_0x4d681a,function(_0x4a9ba3){if(_0x4a9ba3[_0x0d8f('0x3e')]!==_0x0d8f('0x3f')){var _0x78ffa4={};_0x78ffa4[_0x4a9ba3[_0x0d8f('0x2b')]]={'$like':'%'+_0x42ba46['query'][_0x0d8f('0x3c')]+'%'};return _0x78ffa4;}})});}_0x6b704c=_[_0x0d8f('0x3d')]({},_0x6b704c,_0x42ba46['options']);var _0x49e14d={'where':_0x6b704c[_0x0d8f('0x39')]};return db[_0x0d8f('0x2e')]['count'](_0x49e14d)[_0x0d8f('0x28')](function(_0x55f5f7){_0x3bd2c7['count']=_0x55f5f7;if(_0x42ba46[_0x0d8f('0x31')][_0x0d8f('0x40')]){_0x6b704c[_0x0d8f('0x41')]=[{'all':!![]}];}return db[_0x0d8f('0x2e')]['findAll'](_0x6b704c);})[_0x0d8f('0x28')](function(_0x2f9453){_0x3bd2c7[_0x0d8f('0x42')]=_0x2f9453;return _0x3bd2c7;})[_0x0d8f('0x28')](respondWithFilteredResult(_0x18c51e,_0x6b704c))[_0x0d8f('0x43')](handleError(_0x18c51e,null));};exports[_0x0d8f('0x44')]=function(_0x211dd8,_0x41266e){var _0x10afcb={'raw':!![],'where':{'id':_0x211dd8['params']['id']}},_0x2e2a0b={};_0x2e2a0b[_0x0d8f('0x30')]=_[_0x0d8f('0x32')](db[_0x0d8f('0x2e')]['rawAttributes']);_0x2e2a0b['query']=_[_0x0d8f('0x32')](_0x211dd8[_0x0d8f('0x31')]);_0x2e2a0b[_0x0d8f('0x3b')]=_[_0x0d8f('0x34')](_0x2e2a0b[_0x0d8f('0x30')],_0x2e2a0b[_0x0d8f('0x31')]);_0x10afcb[_0x0d8f('0x33')]=_[_0x0d8f('0x34')](_0x2e2a0b[_0x0d8f('0x30')],qs[_0x0d8f('0x35')](_0x211dd8[_0x0d8f('0x31')]['fields']));_0x10afcb['attributes']=_0x10afcb['attributes']['length']?_0x10afcb[_0x0d8f('0x33')]:_0x2e2a0b['model'];if(_0x211dd8[_0x0d8f('0x31')][_0x0d8f('0x40')]){_0x10afcb['include']=[{'all':!![]}];}_0x10afcb=_[_0x0d8f('0x3d')]({},_0x10afcb,_0x211dd8[_0x0d8f('0x45')]);return db[_0x0d8f('0x2e')][_0x0d8f('0x46')](_0x10afcb)[_0x0d8f('0x28')](handleEntityNotFound(_0x41266e,null))['then'](respondWithResult(_0x41266e,null))[_0x0d8f('0x43')](handleError(_0x41266e,null));};exports[_0x0d8f('0x47')]=function(_0x234f9d,_0x20839e){return db[_0x0d8f('0x2e')][_0x0d8f('0x47')](_0x234f9d[_0x0d8f('0x48')],{})['then'](respondWithResult(_0x20839e,0xc9))[_0x0d8f('0x43')](handleError(_0x20839e,null));};exports['update']=function(_0xacbd50,_0x4aa5e2){if(_0xacbd50[_0x0d8f('0x48')]['id']){delete _0xacbd50[_0x0d8f('0x48')]['id'];}return db[_0x0d8f('0x2e')][_0x0d8f('0x46')]({'where':{'id':_0xacbd50[_0x0d8f('0x49')]['id']}})['then'](handleEntityNotFound(_0x4aa5e2,null))['then'](saveUpdates(_0xacbd50[_0x0d8f('0x48')],null))['then'](respondWithResult(_0x4aa5e2,null))[_0x0d8f('0x43')](handleError(_0x4aa5e2,null));};exports[_0x0d8f('0x4a')]=function(_0x20f0cf,_0x5dc685){return db['SugarcrmField']['find']({'where':{'id':_0x20f0cf[_0x0d8f('0x49')]['id']}})[_0x0d8f('0x28')](handleEntityNotFound(_0x5dc685,null))[_0x0d8f('0x28')](removeEntity(_0x5dc685,null))[_0x0d8f('0x43')](handleError(_0x5dc685,null));};
\ No newline at end of file
+var _0xb522=['reject','then','end','error','stack','name','send','index','SugarcrmField','rawAttributes','fieldName','type','key','map','keys','query','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filters','filter','merge','options','include','rows','catch','params','includeAll','find','create','body','update','destroy','eml-format','rimraf','fast-json-patch','request-promise','moment','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','apply'];(function(_0x5962b4,_0x84be73){var _0xe6443c=function(_0x2b37d4){while(--_0x2b37d4){_0x5962b4['push'](_0x5962b4['shift']());}};_0xe6443c(++_0x84be73);}(_0xb522,0x154));var _0x2b52=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb522[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x2b52('0x0'));var rimraf=require(_0x2b52('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2b52('0x2'));var rp=require(_0x2b52('0x3'));var moment=require(_0x2b52('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x2b52('0x5'));var path=require(_0x2b52('0x6'));var sox=require(_0x2b52('0x7'));var csv=require('to-csv');var ejs=require(_0x2b52('0x8'));var fs=require('fs');var fs_extra=require(_0x2b52('0x9'));var _=require(_0x2b52('0xa'));var squel=require(_0x2b52('0xb'));var crypto=require(_0x2b52('0xc'));var jsforce=require(_0x2b52('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x2b52('0xe'));var querystring=require(_0x2b52('0xf'));var Papa=require(_0x2b52('0x10'));var Redis=require(_0x2b52('0x11'));var authService=require(_0x2b52('0x12'));var qs=require(_0x2b52('0x13'));var as=require(_0x2b52('0x14'));var hardwareService=require(_0x2b52('0x15'));var logger=require(_0x2b52('0x16'))(_0x2b52('0x17'));var utils=require('../../config/utils');var config=require(_0x2b52('0x18'));var licenseUtil=require(_0x2b52('0x19'));var db=require(_0x2b52('0x1a'))['db'];function respondWithStatusCode(_0x58e4f6,_0x799cde){_0x799cde=_0x799cde||0xcc;return function(_0x1f0c98){if(_0x1f0c98){return _0x58e4f6[_0x2b52('0x1b')](_0x799cde);}return _0x58e4f6[_0x2b52('0x1c')](_0x799cde)['end']();};}function respondWithResult(_0x66850c,_0x2a639f){_0x2a639f=_0x2a639f||0xc8;return function(_0x2479ab){if(_0x2479ab){return _0x66850c[_0x2b52('0x1c')](_0x2a639f)[_0x2b52('0x1d')](_0x2479ab);}};}function respondWithFilteredResult(_0x1d96d7,_0x42254b){return function(_0x2c35e5){if(_0x2c35e5){var _0xcd2168=typeof _0x42254b[_0x2b52('0x1e')]==='undefined'&&typeof _0x42254b[_0x2b52('0x1f')]===_0x2b52('0x20');var _0x4d059b=_0x2c35e5[_0x2b52('0x21')];var _0x28f246=_0xcd2168?0x0:_0x42254b[_0x2b52('0x1e')];var _0x2e5c48=_0xcd2168?_0x2c35e5[_0x2b52('0x21')]:_0x42254b[_0x2b52('0x1e')]+_0x42254b[_0x2b52('0x1f')];var _0x2e75b4;if(_0x2e5c48>=_0x4d059b){_0x2e5c48=_0x4d059b;_0x2e75b4=0xc8;}else{_0x2e75b4=0xce;}_0x1d96d7[_0x2b52('0x1c')](_0x2e75b4);return _0x1d96d7['set']('Content-Range',_0x28f246+'-'+_0x2e5c48+'/'+_0x4d059b)['json'](_0x2c35e5);}return null;};}function patchUpdates(_0x15a15d){return function(_0x50c803){try{jsonpatch[_0x2b52('0x22')](_0x50c803,_0x15a15d,!![]);}catch(_0x19dc1b){return BPromise[_0x2b52('0x23')](_0x19dc1b);}return _0x50c803['save']();};}function saveUpdates(_0x58cc6f,_0x3e3e32){return function(_0x33ffa1){if(_0x33ffa1){return _0x33ffa1['update'](_0x58cc6f)[_0x2b52('0x24')](function(_0x4039d4){return _0x4039d4;});}return null;};}function removeEntity(_0x3c8d5a,_0x41dd94){return function(_0x15ebb2){if(_0x15ebb2){return _0x15ebb2['destroy']()[_0x2b52('0x24')](function(){_0x3c8d5a[_0x2b52('0x1c')](0xcc)[_0x2b52('0x25')]();});}};}function handleEntityNotFound(_0x8baa3d,_0x9a2dbb){return function(_0x3072f9){if(!_0x3072f9){_0x8baa3d['sendStatus'](0x194);}return _0x3072f9;};}function handleError(_0x4b59d8,_0x166173){_0x166173=_0x166173||0x1f4;return function(_0x179798){logger[_0x2b52('0x26')](_0x179798[_0x2b52('0x27')]);if(_0x179798[_0x2b52('0x28')]){delete _0x179798[_0x2b52('0x28')];}_0x4b59d8['status'](_0x166173)[_0x2b52('0x29')](_0x179798);};}exports[_0x2b52('0x2a')]=function(_0x2aa190,_0x5d9072){var _0x5cca74={},_0x40405a={},_0x197bdc={'count':0x0,'rows':[]};var _0x170cdc=_['map'](db[_0x2b52('0x2b')][_0x2b52('0x2c')],function(_0x8e2317){return{'name':_0x8e2317[_0x2b52('0x2d')],'type':_0x8e2317[_0x2b52('0x2e')][_0x2b52('0x2f')]};});_0x40405a['model']=_[_0x2b52('0x30')](_0x170cdc,_0x2b52('0x28'));_0x40405a['query']=_[_0x2b52('0x31')](_0x2aa190[_0x2b52('0x32')]);_0x40405a['filters']=_[_0x2b52('0x33')](_0x40405a[_0x2b52('0x34')],_0x40405a[_0x2b52('0x32')]);_0x5cca74[_0x2b52('0x35')]=_['intersection'](_0x40405a[_0x2b52('0x34')],qs['fields'](_0x2aa190[_0x2b52('0x32')][_0x2b52('0x36')]));_0x5cca74[_0x2b52('0x35')]=_0x5cca74[_0x2b52('0x35')][_0x2b52('0x37')]?_0x5cca74[_0x2b52('0x35')]:_0x40405a[_0x2b52('0x34')];if(!_0x2aa190[_0x2b52('0x32')][_0x2b52('0x38')](_0x2b52('0x39'))){_0x5cca74[_0x2b52('0x1f')]=qs[_0x2b52('0x1f')](_0x2aa190[_0x2b52('0x32')][_0x2b52('0x1f')]);_0x5cca74['offset']=qs['offset'](_0x2aa190['query']['offset']);}_0x5cca74['order']=qs[_0x2b52('0x3a')](_0x2aa190[_0x2b52('0x32')][_0x2b52('0x3a')]);_0x5cca74[_0x2b52('0x3b')]=qs['filters'](_[_0x2b52('0x3c')](_0x2aa190[_0x2b52('0x32')],_0x40405a[_0x2b52('0x3d')]),_0x170cdc);if(_0x2aa190[_0x2b52('0x32')][_0x2b52('0x3e')]){_0x5cca74[_0x2b52('0x3b')]=_[_0x2b52('0x3f')](_0x5cca74[_0x2b52('0x3b')],{'$or':_[_0x2b52('0x30')](_0x170cdc,function(_0x3a88f4){if(_0x3a88f4[_0x2b52('0x2e')]!=='VIRTUAL'){var _0x22aa2a={};_0x22aa2a[_0x3a88f4[_0x2b52('0x28')]]={'$like':'%'+_0x2aa190[_0x2b52('0x32')][_0x2b52('0x3e')]+'%'};return _0x22aa2a;}})});}_0x5cca74=_[_0x2b52('0x3f')]({},_0x5cca74,_0x2aa190[_0x2b52('0x40')]);var _0x17c8c1={'where':_0x5cca74[_0x2b52('0x3b')]};return db[_0x2b52('0x2b')][_0x2b52('0x21')](_0x17c8c1)[_0x2b52('0x24')](function(_0x11a1b2){_0x197bdc[_0x2b52('0x21')]=_0x11a1b2;if(_0x2aa190[_0x2b52('0x32')]['includeAll']){_0x5cca74[_0x2b52('0x41')]=[{'all':!![]}];}return db['SugarcrmField']['findAll'](_0x5cca74);})[_0x2b52('0x24')](function(_0x14a5e2){_0x197bdc[_0x2b52('0x42')]=_0x14a5e2;return _0x197bdc;})[_0x2b52('0x24')](respondWithFilteredResult(_0x5d9072,_0x5cca74))[_0x2b52('0x43')](handleError(_0x5d9072,null));};exports['show']=function(_0x47a46b,_0x302810){var _0x498efa={'raw':!![],'where':{'id':_0x47a46b[_0x2b52('0x44')]['id']}},_0x167f93={};_0x167f93[_0x2b52('0x34')]=_['keys'](db[_0x2b52('0x2b')][_0x2b52('0x2c')]);_0x167f93[_0x2b52('0x32')]=_[_0x2b52('0x31')](_0x47a46b[_0x2b52('0x32')]);_0x167f93[_0x2b52('0x3d')]=_[_0x2b52('0x33')](_0x167f93[_0x2b52('0x34')],_0x167f93[_0x2b52('0x32')]);_0x498efa['attributes']=_[_0x2b52('0x33')](_0x167f93['model'],qs[_0x2b52('0x36')](_0x47a46b[_0x2b52('0x32')][_0x2b52('0x36')]));_0x498efa[_0x2b52('0x35')]=_0x498efa['attributes'][_0x2b52('0x37')]?_0x498efa['attributes']:_0x167f93[_0x2b52('0x34')];if(_0x47a46b[_0x2b52('0x32')][_0x2b52('0x45')]){_0x498efa[_0x2b52('0x41')]=[{'all':!![]}];}_0x498efa=_[_0x2b52('0x3f')]({},_0x498efa,_0x47a46b[_0x2b52('0x40')]);return db[_0x2b52('0x2b')][_0x2b52('0x46')](_0x498efa)[_0x2b52('0x24')](handleEntityNotFound(_0x302810,null))['then'](respondWithResult(_0x302810,null))[_0x2b52('0x43')](handleError(_0x302810,null));};exports[_0x2b52('0x47')]=function(_0x57a331,_0x1be28d){return db[_0x2b52('0x2b')][_0x2b52('0x47')](_0x57a331[_0x2b52('0x48')],{})[_0x2b52('0x24')](respondWithResult(_0x1be28d,0xc9))[_0x2b52('0x43')](handleError(_0x1be28d,null));};exports[_0x2b52('0x49')]=function(_0x74f147,_0x5bc9fb){if(_0x74f147['body']['id']){delete _0x74f147['body']['id'];}return db[_0x2b52('0x2b')][_0x2b52('0x46')]({'where':{'id':_0x74f147[_0x2b52('0x44')]['id']}})[_0x2b52('0x24')](handleEntityNotFound(_0x5bc9fb,null))[_0x2b52('0x24')](saveUpdates(_0x74f147[_0x2b52('0x48')],null))[_0x2b52('0x24')](respondWithResult(_0x5bc9fb,null))['catch'](handleError(_0x5bc9fb,null));};exports[_0x2b52('0x4a')]=function(_0x4342b4,_0x562ed3){return db[_0x2b52('0x2b')][_0x2b52('0x46')]({'where':{'id':_0x4342b4['params']['id']}})[_0x2b52('0x24')](handleEntityNotFound(_0x562ed3,null))[_0x2b52('0x24')](removeEntity(_0x562ed3,null))[_0x2b52('0x43')](handleError(_0x562ed3,null));};
\ No newline at end of file
index 5915dd3..a95eeb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc61f=['int_sugarcrm_fields','idField','FieldId','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./intSugarcrmField.attributes','define','SugarcrmField'];(function(_0x530151,_0x27ab6d){var _0x129774=function(_0x57f945){while(--_0x57f945){_0x530151['push'](_0x530151['shift']());}};_0x129774(++_0x27ab6d);}(_0xc61f,0x17d));var _0xfc61=function(_0x1e9934,_0x4146e6){_0x1e9934=_0x1e9934-0x0;var _0x358df6=_0xc61f[_0x1e9934];return _0x358df6;};'use strict';var _=require(_0xfc61('0x0'));var util=require(_0xfc61('0x1'));var logger=require(_0xfc61('0x2'))('api');var moment=require(_0xfc61('0x3'));var BPromise=require(_0xfc61('0x4'));var rp=require(_0xfc61('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xfc61('0x6'));var config=require(_0xfc61('0x7'));var attributes=require(_0xfc61('0x8'));module['exports']=function(_0x27ae6b,_0x3547b0){return _0x27ae6b[_0xfc61('0x9')](_0xfc61('0xa'),attributes,{'tableName':_0xfc61('0xb'),'paranoid':![],'indexes':[{'name':'sugarcrm_unique_index','fields':[_0xfc61('0xc'),_0xfc61('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa74d=['int_sugarcrm_fields','FieldId','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./intSugarcrmField.attributes','define','SugarcrmField'];(function(_0x29d2d2,_0x3344){var _0x3f6476=function(_0x29c2a2){while(--_0x29c2a2){_0x29d2d2['push'](_0x29d2d2['shift']());}};_0x3f6476(++_0x3344);}(_0xa74d,0x1bc));var _0xda74=function(_0x5719d8,_0x22a01a){_0x5719d8=_0x5719d8-0x0;var _0x5b9f6b=_0xa74d[_0x5719d8];return _0x5b9f6b;};'use strict';var _=require('lodash');var util=require(_0xda74('0x0'));var logger=require(_0xda74('0x1'))(_0xda74('0x2'));var moment=require('moment');var BPromise=require(_0xda74('0x3'));var rp=require(_0xda74('0x4'));var fs=require('fs');var path=require(_0xda74('0x5'));var rimraf=require(_0xda74('0x6'));var config=require(_0xda74('0x7'));var attributes=require(_0xda74('0x8'));module['exports']=function(_0x407f67,_0x39c1f3){return _0x407f67[_0xda74('0x9')](_0xda74('0xa'),attributes,{'tableName':_0xda74('0xb'),'paranoid':![],'indexes':[{'name':'sugarcrm_unique_index','fields':['idField',_0xda74('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 84e6eee..be7f20e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd1d=['ioredis','../../mysqldb','rpc','jayson/promise','client','http','request','then','SugarcrmField,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','info','result','lodash','bluebird','randomstring'];(function(_0xd09668,_0x1435b2){var _0x68726=function(_0x54a030){while(--_0x54a030){_0xd09668['push'](_0xd09668['shift']());}};_0x68726(++_0x1435b2);}(_0xbd1d,0x82));var _0xdbd1=function(_0x4a4760,_0x7ce6b4){_0x4a4760=_0x4a4760-0x0;var _0x3c2c17=_0xbd1d[_0x4a4760];return _0x3c2c17;};'use strict';var _=require(_0xdbd1('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xdbd1('0x1'));var rs=require(_0xdbd1('0x2'));var fs=require('fs');var Redis=require(_0xdbd1('0x3'));var db=require(_0xdbd1('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xdbd1('0x5'));var config=require('../../config/environment');var jayson=require(_0xdbd1('0x6'));var client=jayson[_0xdbd1('0x7')][_0xdbd1('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x35f2d7,_0x576500,_0x5bd090){return new BPromise(function(_0x18a4c9,_0x6d5df3){return client[_0xdbd1('0x9')](_0x35f2d7,_0x5bd090)[_0xdbd1('0xa')](function(_0x173c31){logger['info'](_0xdbd1('0xb'),_0x576500,'request\x20sent');logger[_0xdbd1('0xc')]('SugarcrmField,\x20%s,\x20%s,\x20%s',_0x576500,_0xdbd1('0xd'),JSON[_0xdbd1('0xe')](_0x173c31));if(_0x173c31['error']){if(_0x173c31[_0xdbd1('0xf')]['code']===0x1f4){logger['error'](_0xdbd1('0xb'),_0x576500,_0x173c31['error']['message']);return _0x6d5df3(_0x173c31['error'][_0xdbd1('0x10')]);}logger['error'](_0xdbd1('0xb'),_0x576500,_0x173c31[_0xdbd1('0xf')]['message']);return _0x18a4c9(_0x173c31[_0xdbd1('0xf')]['message']);}else{logger[_0xdbd1('0x11')](_0xdbd1('0xb'),_0x576500,'request\x20sent');_0x18a4c9(_0x173c31[_0xdbd1('0x12')][_0xdbd1('0x10')]);}})['catch'](function(_0x5ef751){logger[_0xdbd1('0xf')]('SugarcrmField,\x20%s,\x20%s',_0x576500,_0x5ef751);_0x6d5df3(_0x5ef751);});});}
\ No newline at end of file
+var _0x450e=['message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','SugarcrmField,\x20%s,\x20%s','request\x20sent','SugarcrmField,\x20%s,\x20%s,\x20%s','error','code'];(function(_0x3ce141,_0x3cd925){var _0x32d83a=function(_0x138bf6){while(--_0x138bf6){_0x3ce141['push'](_0x3ce141['shift']());}};_0x32d83a(++_0x3cd925);}(_0x450e,0x1d0));var _0xe450=function(_0x4a7414,_0x38cf5c){_0x4a7414=_0x4a7414-0x0;var _0x472415=_0x450e[_0x4a7414];return _0x472415;};'use strict';var _=require(_0xe450('0x0'));var util=require(_0xe450('0x1'));var moment=require(_0xe450('0x2'));var BPromise=require(_0xe450('0x3'));var rs=require(_0xe450('0x4'));var fs=require('fs');var Redis=require(_0xe450('0x5'));var db=require(_0xe450('0x6'))['db'];var utils=require(_0xe450('0x7'));var logger=require(_0xe450('0x8'))('rpc');var config=require(_0xe450('0x9'));var jayson=require(_0xe450('0xa'));var client=jayson[_0xe450('0xb')][_0xe450('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5327dd,_0x4fc4ff,_0xd7b8a8){return new BPromise(function(_0x2fa439,_0x320bef){return client['request'](_0x5327dd,_0xd7b8a8)[_0xe450('0xd')](function(_0x3fe585){logger['info'](_0xe450('0xe'),_0x4fc4ff,_0xe450('0xf'));logger['debug'](_0xe450('0x10'),_0x4fc4ff,_0xe450('0xf'),JSON['stringify'](_0x3fe585));if(_0x3fe585[_0xe450('0x11')]){if(_0x3fe585[_0xe450('0x11')][_0xe450('0x12')]===0x1f4){logger[_0xe450('0x11')](_0xe450('0xe'),_0x4fc4ff,_0x3fe585['error'][_0xe450('0x13')]);return _0x320bef(_0x3fe585[_0xe450('0x11')]['message']);}logger['error'](_0xe450('0xe'),_0x4fc4ff,_0x3fe585[_0xe450('0x11')][_0xe450('0x13')]);return _0x2fa439(_0x3fe585[_0xe450('0x11')][_0xe450('0x13')]);}else{logger[_0xe450('0x14')]('SugarcrmField,\x20%s,\x20%s',_0x4fc4ff,_0xe450('0xf'));_0x2fa439(_0x3fe585[_0xe450('0x15')][_0xe450('0x13')]);}})[_0xe450('0x16')](function(_0x314529){logger[_0xe450('0x11')](_0xe450('0xe'),_0x4fc4ff,_0x314529);_0x320bef(_0x314529);});});}
\ No newline at end of file
index 47b03f4..98f5ead 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e68=['isAuthenticated','index','get','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerAccount.controller'];(function(_0x1e4150,_0x55b02a){var _0x1ce3ee=function(_0x59324e){while(--_0x59324e){_0x1e4150['push'](_0x1e4150['shift']());}};_0x1ce3ee(++_0x55b02a);}(_0x3e68,0x190));var _0x83e6=function(_0x355f57,_0x420977){_0x355f57=_0x355f57-0x0;var _0x3a16d8=_0x3e68[_0x355f57];return _0x3a16d8;};'use strict';var multer=require(_0x83e6('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x83e6('0x1'));var express=require('express');var router=express[_0x83e6('0x2')]();var fs_extra=require(_0x83e6('0x3'));var auth=require(_0x83e6('0x4'));var interaction=require(_0x83e6('0x5'));var config=require(_0x83e6('0x6'));var controller=require(_0x83e6('0x7'));router['get']('/',auth[_0x83e6('0x8')](),controller[_0x83e6('0x9')]);router[_0x83e6('0xa')](_0x83e6('0xb'),auth[_0x83e6('0x8')](),controller[_0x83e6('0xc')]);router['get'](_0x83e6('0xd'),auth[_0x83e6('0x8')](),controller[_0x83e6('0xe')]);router[_0x83e6('0xa')](_0x83e6('0xf'),auth[_0x83e6('0x8')](),controller[_0x83e6('0x10')]);router[_0x83e6('0x11')]('/',auth[_0x83e6('0x8')](),controller[_0x83e6('0x12')]);router['post']('/:id/configurations',auth['isAuthenticated'](),controller[_0x83e6('0x13')]);router[_0x83e6('0x14')](_0x83e6('0xb'),auth['isAuthenticated'](),controller[_0x83e6('0x15')]);router[_0x83e6('0x16')](_0x83e6('0xb'),auth['isAuthenticated'](),controller[_0x83e6('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0x71c8=['post','create','addConfiguration','put','update','destroy','exports','multer','util','path','Router','../../components/auth/service','../../config/environment','./intVtigerAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields'];(function(_0x119f77,_0x3b5bc9){var _0x391c44=function(_0xc702d7){while(--_0xc702d7){_0x119f77['push'](_0x119f77['shift']());}};_0x391c44(++_0x3b5bc9);}(_0x71c8,0x149));var _0x871c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x71c8[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x871c('0x0'));var util=require(_0x871c('0x1'));var path=require(_0x871c('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x871c('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x871c('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x871c('0x5'));var controller=require(_0x871c('0x6'));router[_0x871c('0x7')]('/',auth[_0x871c('0x8')](),controller[_0x871c('0x9')]);router['get'](_0x871c('0xa'),auth['isAuthenticated'](),controller[_0x871c('0xb')]);router[_0x871c('0x7')](_0x871c('0xc'),auth[_0x871c('0x8')](),controller[_0x871c('0xd')]);router[_0x871c('0x7')](_0x871c('0xe'),auth['isAuthenticated'](),controller[_0x871c('0xf')]);router[_0x871c('0x10')]('/',auth[_0x871c('0x8')](),controller[_0x871c('0x11')]);router[_0x871c('0x10')]('/:id/configurations',auth[_0x871c('0x8')](),controller[_0x871c('0x12')]);router[_0x871c('0x13')](_0x871c('0xa'),auth['isAuthenticated'](),controller[_0x871c('0x14')]);router['delete'](_0x871c('0xa'),auth[_0x871c('0x8')](),controller[_0x871c('0x15')]);module[_0x871c('0x16')]=router;
\ No newline at end of file
index 7cdf128..c09e071 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25f3=['exports','STRING','HelpDesk'];(function(_0x26295e,_0x14332a){var _0x45ed90=function(_0x10e12a){while(--_0x10e12a){_0x26295e['push'](_0x26295e['shift']());}};_0x45ed90(++_0x14332a);}(_0x25f3,0x1c2));var _0x325f=function(_0x15b8d4,_0x5cfaab){_0x15b8d4=_0x15b8d4-0x0;var _0x37c2bc=_0x25f3[_0x15b8d4];return _0x37c2bc;};'use strict';var Sequelize=require('sequelize');module[_0x325f('0x0')]={'name':{'type':Sequelize[_0x325f('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x325f('0x1')]},'username':{'type':Sequelize[_0x325f('0x1')],'allowNull':![]},'moduleName':{'type':Sequelize[_0x325f('0x1')],'allowNull':![],'defaultValue':_0x325f('0x2')},'remoteUri':{'type':Sequelize['STRING'],'allowNull':![]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'accessKey':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x3c03=['sequelize','exports','STRING'];(function(_0x498c6f,_0xc1fbaa){var _0x3c6e41=function(_0x3397b2){while(--_0x3397b2){_0x498c6f['push'](_0x498c6f['shift']());}};_0x3c6e41(++_0xc1fbaa);}(_0x3c03,0x19b));var _0x33c0=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x3c03[_0x126558];return _0x1f6d14;};'use strict';var Sequelize=require(_0x33c0('0x0'));module[_0x33c0('0x1')]={'name':{'type':Sequelize[_0x33c0('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING'],'allowNull':![]},'moduleName':{'type':Sequelize[_0x33c0('0x2')],'allowNull':![],'defaultValue':'HelpDesk'},'remoteUri':{'type':Sequelize[_0x33c0('0x2')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x33c0('0x2')],'allowNull':![]},'accessKey':{'type':Sequelize[_0x33c0('0x2')],'allowNull':![]}};
\ No newline at end of file
index 9c98ca0..54ba13a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd5f=['json','offset','limit','undefined','count','Content-Range','reject','save','update','then','destroy','end','stack','name','send','index','map','VtigerAccount','rawAttributes','fieldName','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','filters','merge','type','filter','options','includeAll','include','rows','catch','find','create','body','params','getConfigurations','VtigerConfiguration','order','pick','findOne','AccountId','Subjects','getSubjects','channel','getDescriptions','VtigerField','Descriptions','md5','getFields','username','description','moduleName','remoteUri','serverUrl','accessKey','slice','substring','lastIndexOf','format','%s/webservice.php','GET','getchallenge','POST','login','token','success','describe','result','sessionName','autogenerated','owner','remove','false','label','startsWith','cf_','picklist','picklistValues','value','log','vTiger\x20error:\x20','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','stringify','eml-format','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status'];(function(_0x216586,_0x2e9346){var _0x2c0807=function(_0x3ade09){while(--_0x3ade09){_0x216586['push'](_0x216586['shift']());}};_0x2c0807(++_0x2e9346);}(_0xdd5f,0x156));var _0xfdd5=function(_0x487b0c,_0x14ff74){_0x487b0c=_0x487b0c-0x0;var _0x1adbdc=_0xdd5f[_0x487b0c];return _0x1adbdc;};'use strict';var emlformat=require(_0xfdd5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfdd5('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfdd5('0x2'));var moment=require(_0xfdd5('0x3'));var BPromise=require(_0xfdd5('0x4'));var Mustache=require('mustache');var util=require(_0xfdd5('0x5'));var path=require(_0xfdd5('0x6'));var sox=require(_0xfdd5('0x7'));var csv=require(_0xfdd5('0x8'));var ejs=require(_0xfdd5('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfdd5('0xa'));var squel=require(_0xfdd5('0xb'));var crypto=require(_0xfdd5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xfdd5('0xd'));var toCsv=require(_0xfdd5('0x8'));var querystring=require('querystring');var Papa=require(_0xfdd5('0xe'));var Redis=require(_0xfdd5('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xfdd5('0x10'));var as=require(_0xfdd5('0x11'));var hardwareService=require(_0xfdd5('0x12'));var logger=require('../../config/logger')(_0xfdd5('0x13'));var utils=require(_0xfdd5('0x14'));var config=require(_0xfdd5('0x15'));var licenseUtil=require(_0xfdd5('0x16'));var db=require(_0xfdd5('0x17'))['db'];var integrations=require(_0xfdd5('0x18'));function respondWithStatusCode(_0x311251,_0x219540){_0x219540=_0x219540||0xcc;return function(_0x435987){if(_0x435987){return _0x311251[_0xfdd5('0x19')](_0x219540);}return _0x311251[_0xfdd5('0x1a')](_0x219540)['end']();};}function respondWithResult(_0x250844,_0x1f5405){_0x1f5405=_0x1f5405||0xc8;return function(_0x133018){if(_0x133018){return _0x250844[_0xfdd5('0x1a')](_0x1f5405)[_0xfdd5('0x1b')](_0x133018);}};}function respondWithFilteredResult(_0xa12a74,_0x2a4159){return function(_0x22b3c2){if(_0x22b3c2){var _0x1c4f56=typeof _0x2a4159[_0xfdd5('0x1c')]==='undefined'&&typeof _0x2a4159[_0xfdd5('0x1d')]===_0xfdd5('0x1e');var _0x270574=_0x22b3c2[_0xfdd5('0x1f')];var _0x2f7e8d=_0x1c4f56?0x0:_0x2a4159[_0xfdd5('0x1c')];var _0x8e4cb=_0x1c4f56?_0x22b3c2[_0xfdd5('0x1f')]:_0x2a4159[_0xfdd5('0x1c')]+_0x2a4159[_0xfdd5('0x1d')];var _0x5a3d28;if(_0x8e4cb>=_0x270574){_0x8e4cb=_0x270574;_0x5a3d28=0xc8;}else{_0x5a3d28=0xce;}_0xa12a74['status'](_0x5a3d28);return _0xa12a74['set'](_0xfdd5('0x20'),_0x2f7e8d+'-'+_0x8e4cb+'/'+_0x270574)[_0xfdd5('0x1b')](_0x22b3c2);}return null;};}function patchUpdates(_0x27cce0){return function(_0x4d7203){try{jsonpatch['apply'](_0x4d7203,_0x27cce0,!![]);}catch(_0x14b059){return BPromise[_0xfdd5('0x21')](_0x14b059);}return _0x4d7203[_0xfdd5('0x22')]();};}function saveUpdates(_0x359349,_0x222dbf){return function(_0x2d1a94){if(_0x2d1a94){return _0x2d1a94[_0xfdd5('0x23')](_0x359349)[_0xfdd5('0x24')](function(_0x2e72d6){return _0x2e72d6;});}return null;};}function removeEntity(_0x2f35c1,_0x3f3dbd){return function(_0x271e54){if(_0x271e54){return _0x271e54[_0xfdd5('0x25')]()[_0xfdd5('0x24')](function(){_0x2f35c1[_0xfdd5('0x1a')](0xcc)[_0xfdd5('0x26')]();});}};}function handleEntityNotFound(_0x5f4a99,_0x4345a8){return function(_0x2ab7d6){if(!_0x2ab7d6){_0x5f4a99[_0xfdd5('0x19')](0x194);}return _0x2ab7d6;};}function handleError(_0x3ed242,_0x2f91dc){_0x2f91dc=_0x2f91dc||0x1f4;return function(_0x216ba3){logger['error'](_0x216ba3[_0xfdd5('0x27')]);if(_0x216ba3[_0xfdd5('0x28')]){delete _0x216ba3[_0xfdd5('0x28')];}_0x3ed242[_0xfdd5('0x1a')](_0x2f91dc)[_0xfdd5('0x29')](_0x216ba3);};}exports[_0xfdd5('0x2a')]=function(_0xbc15b2,_0x491178){var _0x355a20={},_0x369ab3={},_0x576c96={'count':0x0,'rows':[]};var _0x3b09a0=_[_0xfdd5('0x2b')](db[_0xfdd5('0x2c')][_0xfdd5('0x2d')],function(_0x2022c9){return{'name':_0x2022c9[_0xfdd5('0x2e')],'type':_0x2022c9['type'][_0xfdd5('0x2f')]};});_0x369ab3[_0xfdd5('0x30')]=_[_0xfdd5('0x2b')](_0x3b09a0,_0xfdd5('0x28'));_0x369ab3[_0xfdd5('0x31')]=_[_0xfdd5('0x32')](_0xbc15b2[_0xfdd5('0x31')]);_0x369ab3['filters']=_['intersection'](_0x369ab3[_0xfdd5('0x30')],_0x369ab3['query']);_0x355a20[_0xfdd5('0x33')]=_[_0xfdd5('0x34')](_0x369ab3[_0xfdd5('0x30')],qs[_0xfdd5('0x35')](_0xbc15b2[_0xfdd5('0x31')][_0xfdd5('0x35')]));_0x355a20[_0xfdd5('0x33')]=_0x355a20[_0xfdd5('0x33')][_0xfdd5('0x36')]?_0x355a20[_0xfdd5('0x33')]:_0x369ab3[_0xfdd5('0x30')];if(!_0xbc15b2[_0xfdd5('0x31')][_0xfdd5('0x37')](_0xfdd5('0x38'))){_0x355a20[_0xfdd5('0x1d')]=qs['limit'](_0xbc15b2[_0xfdd5('0x31')][_0xfdd5('0x1d')]);_0x355a20['offset']=qs[_0xfdd5('0x1c')](_0xbc15b2[_0xfdd5('0x31')][_0xfdd5('0x1c')]);}_0x355a20['order']=qs[_0xfdd5('0x39')](_0xbc15b2['query']['sort']);_0x355a20[_0xfdd5('0x3a')]=qs[_0xfdd5('0x3b')](_['pick'](_0xbc15b2[_0xfdd5('0x31')],_0x369ab3[_0xfdd5('0x3b')]),_0x3b09a0);if(_0xbc15b2[_0xfdd5('0x31')]['filter']){_0x355a20[_0xfdd5('0x3a')]=_[_0xfdd5('0x3c')](_0x355a20[_0xfdd5('0x3a')],{'$or':_['map'](_0x3b09a0,function(_0x18ae73){if(_0x18ae73[_0xfdd5('0x3d')]!=='VIRTUAL'){var _0x530d8c={};_0x530d8c[_0x18ae73[_0xfdd5('0x28')]]={'$like':'%'+_0xbc15b2[_0xfdd5('0x31')][_0xfdd5('0x3e')]+'%'};return _0x530d8c;}})});}_0x355a20=_[_0xfdd5('0x3c')]({},_0x355a20,_0xbc15b2[_0xfdd5('0x3f')]);var _0x293113={'where':_0x355a20[_0xfdd5('0x3a')]};return db[_0xfdd5('0x2c')][_0xfdd5('0x1f')](_0x293113)[_0xfdd5('0x24')](function(_0x4e2a3){_0x576c96['count']=_0x4e2a3;if(_0xbc15b2['query'][_0xfdd5('0x40')]){_0x355a20[_0xfdd5('0x41')]=[{'all':!![]}];}return db[_0xfdd5('0x2c')]['findAll'](_0x355a20);})[_0xfdd5('0x24')](function(_0x381cbf){_0x576c96[_0xfdd5('0x42')]=_0x381cbf;return _0x576c96;})[_0xfdd5('0x24')](respondWithFilteredResult(_0x491178,_0x355a20))[_0xfdd5('0x43')](handleError(_0x491178,null));};exports['show']=function(_0x578557,_0x28f467){var _0x5113c0={'raw':![],'where':{'id':_0x578557['params']['id']}},_0x30e7f4={};_0x30e7f4[_0xfdd5('0x30')]=_[_0xfdd5('0x32')](db['VtigerAccount']['rawAttributes']);_0x30e7f4[_0xfdd5('0x31')]=_[_0xfdd5('0x32')](_0x578557[_0xfdd5('0x31')]);_0x30e7f4[_0xfdd5('0x3b')]=_[_0xfdd5('0x34')](_0x30e7f4[_0xfdd5('0x30')],_0x30e7f4['query']);_0x5113c0['attributes']=_[_0xfdd5('0x34')](_0x30e7f4[_0xfdd5('0x30')],qs['fields'](_0x578557['query'][_0xfdd5('0x35')]));_0x5113c0[_0xfdd5('0x33')]=_0x5113c0[_0xfdd5('0x33')][_0xfdd5('0x36')]?_0x5113c0[_0xfdd5('0x33')]:_0x30e7f4[_0xfdd5('0x30')];if(_0x578557[_0xfdd5('0x31')][_0xfdd5('0x40')]){_0x5113c0[_0xfdd5('0x41')]=[{'all':!![]}];}_0x5113c0=_['merge']({},_0x5113c0,_0x578557['options']);return db[_0xfdd5('0x2c')][_0xfdd5('0x44')](_0x5113c0)[_0xfdd5('0x24')](handleEntityNotFound(_0x28f467,null))[_0xfdd5('0x24')](respondWithResult(_0x28f467,null))['catch'](handleError(_0x28f467,null));};exports[_0xfdd5('0x45')]=function(_0x52b587,_0x5194bd){return db[_0xfdd5('0x2c')][_0xfdd5('0x45')](_0x52b587[_0xfdd5('0x46')],{})[_0xfdd5('0x24')](respondWithResult(_0x5194bd,0xc9))['catch'](handleError(_0x5194bd,null));};exports['update']=function(_0x588d88,_0x484e95){if(_0x588d88[_0xfdd5('0x46')]['id']){delete _0x588d88[_0xfdd5('0x46')]['id'];}return db[_0xfdd5('0x2c')][_0xfdd5('0x44')]({'where':{'id':_0x588d88[_0xfdd5('0x47')]['id']}})['then'](handleEntityNotFound(_0x484e95,null))[_0xfdd5('0x24')](saveUpdates(_0x588d88[_0xfdd5('0x46')],null))[_0xfdd5('0x24')](respondWithResult(_0x484e95,null))['catch'](handleError(_0x484e95,null));};exports[_0xfdd5('0x25')]=function(_0x33751f,_0x248920){return db[_0xfdd5('0x2c')][_0xfdd5('0x44')]({'where':{'id':_0x33751f[_0xfdd5('0x47')]['id']}})[_0xfdd5('0x24')](handleEntityNotFound(_0x248920,null))[_0xfdd5('0x24')](removeEntity(_0x248920,null))['catch'](handleError(_0x248920,null));};exports[_0xfdd5('0x48')]=function(_0x2ac0cf,_0x5d4201,_0x1fc364){var _0x32a330={};var _0x4da4bd={};var _0x136a65;var _0x4164ba;return db['VtigerAccount']['findOne']({'where':{'id':_0x2ac0cf[_0xfdd5('0x47')]['id']}})[_0xfdd5('0x24')](handleEntityNotFound(_0x5d4201,null))[_0xfdd5('0x24')](function(_0x20d566){if(_0x20d566){_0x136a65=_0x20d566;_0x4da4bd[_0xfdd5('0x30')]=_[_0xfdd5('0x32')](db[_0xfdd5('0x49')][_0xfdd5('0x2d')]);_0x4da4bd[_0xfdd5('0x31')]=_[_0xfdd5('0x32')](_0x2ac0cf[_0xfdd5('0x31')]);_0x4da4bd['filters']=_[_0xfdd5('0x34')](_0x4da4bd[_0xfdd5('0x30')],_0x4da4bd[_0xfdd5('0x31')]);_0x32a330[_0xfdd5('0x33')]=_[_0xfdd5('0x34')](_0x4da4bd['model'],qs[_0xfdd5('0x35')](_0x2ac0cf[_0xfdd5('0x31')][_0xfdd5('0x35')]));_0x32a330[_0xfdd5('0x33')]=_0x32a330[_0xfdd5('0x33')]['length']?_0x32a330[_0xfdd5('0x33')]:_0x4da4bd[_0xfdd5('0x30')];_0x32a330[_0xfdd5('0x4a')]=qs[_0xfdd5('0x39')](_0x2ac0cf[_0xfdd5('0x31')][_0xfdd5('0x39')]);_0x32a330[_0xfdd5('0x3a')]=qs[_0xfdd5('0x3b')](_[_0xfdd5('0x4b')](_0x2ac0cf[_0xfdd5('0x31')],_0x4da4bd[_0xfdd5('0x3b')]));if(_0x2ac0cf[_0xfdd5('0x31')][_0xfdd5('0x3e')]){_0x32a330[_0xfdd5('0x3a')]=_[_0xfdd5('0x3c')](_0x32a330[_0xfdd5('0x3a')],{'$or':_['map'](_0x32a330[_0xfdd5('0x33')],function(_0x8b2532){var _0x3d6ef6={};_0x3d6ef6[_0x8b2532]={'$like':'%'+_0x2ac0cf['query']['filter']+'%'};return _0x3d6ef6;})});}_0x32a330=_[_0xfdd5('0x3c')]({},_0x32a330,_0x2ac0cf[_0xfdd5('0x3f')]);return _0x136a65[_0xfdd5('0x48')](_0x32a330);}})[_0xfdd5('0x24')](function(_0x4000b2){if(_0x4000b2){_0x4164ba=_0x4000b2[_0xfdd5('0x36')];if(!_0x2ac0cf[_0xfdd5('0x31')][_0xfdd5('0x37')](_0xfdd5('0x38'))){_0x32a330[_0xfdd5('0x1d')]=qs[_0xfdd5('0x1d')](_0x2ac0cf['query'][_0xfdd5('0x1d')]);_0x32a330[_0xfdd5('0x1c')]=qs[_0xfdd5('0x1c')](_0x2ac0cf[_0xfdd5('0x31')]['offset']);}return _0x136a65[_0xfdd5('0x48')](_0x32a330);}})['then'](function(_0x564fb6){if(_0x564fb6){return _0x564fb6?{'count':_0x4164ba,'rows':_0x564fb6}:null;}})[_0xfdd5('0x24')](respondWithResult(_0x5d4201,null))[_0xfdd5('0x43')](handleError(_0x5d4201,null));};exports['addConfiguration']=function(_0x115e5e,_0x4137c6,_0xc13f82){if(_0x115e5e[_0xfdd5('0x46')]['id']){delete _0x115e5e[_0xfdd5('0x46')]['id'];}return db['VtigerAccount'][_0xfdd5('0x4c')]({'where':{'id':_0x115e5e['params']['id']}})['then'](handleEntityNotFound(_0x4137c6,null))[_0xfdd5('0x24')](function(_0x1f774c){if(_0x1f774c){_0x115e5e['body'][_0xfdd5('0x4d')]=_0x1f774c['id'];_0x115e5e[_0xfdd5('0x46')][_0xfdd5('0x4e')]=integrations[_0xfdd5('0x4f')](_0x115e5e[_0xfdd5('0x46')][_0xfdd5('0x50')],_0x115e5e[_0xfdd5('0x46')][_0xfdd5('0x3d')]);_0x115e5e['body']['Descriptions']=integrations[_0xfdd5('0x51')](_0x115e5e[_0xfdd5('0x46')][_0xfdd5('0x50')],_0x115e5e[_0xfdd5('0x46')][_0xfdd5('0x3d')]);return db[_0xfdd5('0x49')]['create'](_0x115e5e[_0xfdd5('0x46')],{'include':[{'model':db[_0xfdd5('0x52')],'as':_0xfdd5('0x4e')},{'model':db['VtigerField'],'as':_0xfdd5('0x53')}]});}return null;})[_0xfdd5('0x24')](respondWithResult(_0x4137c6,null))[_0xfdd5('0x43')](handleError(_0x4137c6,null));};var md5=require(_0xfdd5('0x54'));exports[_0xfdd5('0x55')]=function(_0x33188c,_0x1a1f19,_0x5a288d){var _0x155216=null;var _0x550eda=null;var _0x295839=null;var _0x8df601=null;var _0x38b19c='';return db['VtigerAccount']['findOne']({'where':{'id':_0x33188c[_0xfdd5('0x47')]['id']},'attributes':['id',_0xfdd5('0x28'),_0xfdd5('0x56'),_0xfdd5('0x57'),_0xfdd5('0x58'),_0xfdd5('0x59'),_0xfdd5('0x5a'),_0xfdd5('0x5b')]})['then'](handleEntityNotFound(_0x1a1f19,null))[_0xfdd5('0x24')](function(_0x2f670d){if(_0x2f670d){_0x155216=_0x2f670d[_0xfdd5('0x56')];_0x550eda=_0x2f670d[_0xfdd5('0x5b')];_0x295839=_0x2f670d[_0xfdd5('0x58')];_0x38b19c=_0x2f670d[_0xfdd5('0x59')];var _0x3c108=_0x38b19c[_0xfdd5('0x5c')](-0x1);if(_0x3c108==='/'){_0x38b19c=_0x38b19c[_0xfdd5('0x5d')](0x0,_0x38b19c[_0xfdd5('0x5e')](_0x3c108));}_0x8df601=util[_0xfdd5('0x5f')](_0xfdd5('0x60'),_0x38b19c);var _0x3782f7={'method':_0xfdd5('0x61'),'uri':_0x8df601,'qs':{'operation':_0xfdd5('0x62'),'username':_0x2f670d[_0xfdd5('0x56')]},'json':!![]};return rp(_0x3782f7);}})[_0xfdd5('0x24')](function(_0x2d70c6){if(_0x2d70c6['success']){var _0x25dff8={'method':_0xfdd5('0x63'),'uri':_0x8df601,'form':{'operation':_0xfdd5('0x64'),'username':_0x155216,'accessKey':md5(_0x2d70c6['result'][_0xfdd5('0x65')]+_0x550eda)},'json':!![]};return rp(_0x25dff8);}})[_0xfdd5('0x24')](function(_0x3de0e0){if(_0x3de0e0[_0xfdd5('0x66')]){var _0xa9956={'method':_0xfdd5('0x61'),'uri':_0x8df601,'qs':{'operation':_0xfdd5('0x67'),'username':_0x155216,'sessionName':_0x3de0e0[_0xfdd5('0x68')][_0xfdd5('0x69')],'elementType':_0x295839},'json':!![]};return rp(_0xa9956);}})[_0xfdd5('0x24')](function(_0xe30977){if(_0xe30977['success']){var _0x128417=[_0xfdd5('0x6a'),'reference',_0xfdd5('0x6b')];_[_0xfdd5('0x6c')](_0xe30977[_0xfdd5('0x68')][_0xfdd5('0x35')],function(_0x1e1b8c){return _0x128417['includes'](_0x1e1b8c[_0xfdd5('0x3d')]['name']);});_['remove'](_0xe30977[_0xfdd5('0x68')][_0xfdd5('0x35')],function(_0x15a9b4){return _0x15a9b4['editable']===_0xfdd5('0x6d');});return{'count':_0xe30977['result'][_0xfdd5('0x35')]['length'],'rows':_[_0xfdd5('0x2b')](_0xe30977[_0xfdd5('0x68')][_0xfdd5('0x35')],function(_0x31db62){return{'id':_0x31db62[_0xfdd5('0x28')],'name':_0x31db62[_0xfdd5('0x6e')],'custom':_[_0xfdd5('0x6f')](_0x31db62['name'],_0xfdd5('0x70'))?!![]:![],'options':_0x31db62['type'][_0xfdd5('0x28')]===_0xfdd5('0x71')&&_0x31db62[_0xfdd5('0x3d')]['picklistValues'][_0xfdd5('0x36')]>0x0?_['map'](_0x31db62[_0xfdd5('0x3d')][_0xfdd5('0x72')],function(_0x272130){return{'name':_0x272130[_0xfdd5('0x6e')],'value':_0x272130[_0xfdd5('0x73')]};}):[]};})};}})['then'](respondWithResult(_0x1a1f19,null))['catch'](function(_0x312998){console[_0xfdd5('0x74')](_0xfdd5('0x75')+_0x312998);var _0x49dc3c=_0x33188c['query'][_0xfdd5('0x76')]?0x1f4:_0x312998[_0xfdd5('0x77')]||0x1f4;logger[_0xfdd5('0x78')](_0xfdd5('0x79'),_0xfdd5('0x55'),_0x49dc3c,JSON[_0xfdd5('0x7a')](_0x312998));delete _0x312998['name'];if(_0x49dc3c===0x191){_0x49dc3c=0x190;}_0x1a1f19[_0xfdd5('0x1a')](_0x49dc3c)[_0xfdd5('0x29')](_0x33188c[_0xfdd5('0x31')][_0xfdd5('0x76')]?{'message':'Wrong\x20credentials','statusCode':_0x312998[_0xfdd5('0x77')]}:_0x312998);});};
\ No newline at end of file
+var _0x9aa8=['Subjects','md5','getFields','description','accessKey','moduleName','slice','substring','lastIndexOf','format','GET','getchallenge','username','success','POST','login','result','describe','sessionName','owner','includes','remove','editable','startsWith','cf_','picklistValues','label','value','log','vTiger\x20error:\x20','test','statusCode','error','eml-format','zip-dir','fast-json-patch','request-promise','moment','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','then','stack','name','send','index','map','VtigerAccount','fieldName','type','key','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','include','find','create','body','update','destroy','getConfigurations','findOne','VtigerConfiguration','rawAttributes','order','addConfiguration','AccountId','getSubjects','channel','Descriptions','getDescriptions','VtigerField'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x9aa8,0x9a));var _0x89aa=function(_0x2d493c,_0x1992e8){_0x2d493c=_0x2d493c-0x0;var _0x406e2c=_0x9aa8[_0x2d493c];return _0x406e2c;};'use strict';var emlformat=require(_0x89aa('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x89aa('0x1'));var jsonpatch=require(_0x89aa('0x2'));var rp=require(_0x89aa('0x3'));var moment=require(_0x89aa('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x89aa('0x5'));var csv=require(_0x89aa('0x6'));var ejs=require(_0x89aa('0x7'));var fs=require('fs');var fs_extra=require(_0x89aa('0x8'));var _=require(_0x89aa('0x9'));var squel=require(_0x89aa('0xa'));var crypto=require(_0x89aa('0xb'));var jsforce=require(_0x89aa('0xc'));var deskjs=require(_0x89aa('0xd'));var toCsv=require(_0x89aa('0x6'));var querystring=require(_0x89aa('0xe'));var Papa=require('papaparse');var Redis=require(_0x89aa('0xf'));var authService=require(_0x89aa('0x10'));var qs=require(_0x89aa('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x89aa('0x12'));var logger=require(_0x89aa('0x13'))(_0x89aa('0x14'));var utils=require(_0x89aa('0x15'));var config=require(_0x89aa('0x16'));var licenseUtil=require(_0x89aa('0x17'));var db=require(_0x89aa('0x18'))['db'];var integrations=require(_0x89aa('0x19'));function respondWithStatusCode(_0x4b96ba,_0x3b1ef8){_0x3b1ef8=_0x3b1ef8||0xcc;return function(_0xf6070e){if(_0xf6070e){return _0x4b96ba[_0x89aa('0x1a')](_0x3b1ef8);}return _0x4b96ba[_0x89aa('0x1b')](_0x3b1ef8)[_0x89aa('0x1c')]();};}function respondWithResult(_0x454187,_0x42934f){_0x42934f=_0x42934f||0xc8;return function(_0x144a5c){if(_0x144a5c){return _0x454187[_0x89aa('0x1b')](_0x42934f)[_0x89aa('0x1d')](_0x144a5c);}};}function respondWithFilteredResult(_0x29ba02,_0x1a4e2c){return function(_0x562809){if(_0x562809){var _0x111912=typeof _0x1a4e2c[_0x89aa('0x1e')]===_0x89aa('0x1f')&&typeof _0x1a4e2c[_0x89aa('0x20')]===_0x89aa('0x1f');var _0x25a6d0=_0x562809[_0x89aa('0x21')];var _0x44c370=_0x111912?0x0:_0x1a4e2c['offset'];var _0x2ab7d7=_0x111912?_0x562809[_0x89aa('0x21')]:_0x1a4e2c[_0x89aa('0x1e')]+_0x1a4e2c[_0x89aa('0x20')];var _0x2e85bd;if(_0x2ab7d7>=_0x25a6d0){_0x2ab7d7=_0x25a6d0;_0x2e85bd=0xc8;}else{_0x2e85bd=0xce;}_0x29ba02[_0x89aa('0x1b')](_0x2e85bd);return _0x29ba02[_0x89aa('0x22')]('Content-Range',_0x44c370+'-'+_0x2ab7d7+'/'+_0x25a6d0)[_0x89aa('0x1d')](_0x562809);}return null;};}function patchUpdates(_0x45da7f){return function(_0x1870db){try{jsonpatch[_0x89aa('0x23')](_0x1870db,_0x45da7f,!![]);}catch(_0x193ea0){return BPromise[_0x89aa('0x24')](_0x193ea0);}return _0x1870db['save']();};}function saveUpdates(_0x31e037,_0x237a94){return function(_0x193020){if(_0x193020){return _0x193020['update'](_0x31e037)[_0x89aa('0x25')](function(_0x54e852){return _0x54e852;});}return null;};}function removeEntity(_0xb7e829,_0x402f69){return function(_0x3a78d2){if(_0x3a78d2){return _0x3a78d2['destroy']()[_0x89aa('0x25')](function(){_0xb7e829[_0x89aa('0x1b')](0xcc)[_0x89aa('0x1c')]();});}};}function handleEntityNotFound(_0x31107f,_0x3a799e){return function(_0x5d8b56){if(!_0x5d8b56){_0x31107f[_0x89aa('0x1a')](0x194);}return _0x5d8b56;};}function handleError(_0x1527de,_0x1dfa46){_0x1dfa46=_0x1dfa46||0x1f4;return function(_0x2ddf83){logger['error'](_0x2ddf83[_0x89aa('0x26')]);if(_0x2ddf83[_0x89aa('0x27')]){delete _0x2ddf83[_0x89aa('0x27')];}_0x1527de[_0x89aa('0x1b')](_0x1dfa46)[_0x89aa('0x28')](_0x2ddf83);};}exports[_0x89aa('0x29')]=function(_0x1859e5,_0x5f3904){var _0x116815={},_0x23f530={},_0x82fef2={'count':0x0,'rows':[]};var _0x1c48fa=_[_0x89aa('0x2a')](db[_0x89aa('0x2b')]['rawAttributes'],function(_0x26057e){return{'name':_0x26057e[_0x89aa('0x2c')],'type':_0x26057e[_0x89aa('0x2d')][_0x89aa('0x2e')]};});_0x23f530[_0x89aa('0x2f')]=_[_0x89aa('0x2a')](_0x1c48fa,_0x89aa('0x27'));_0x23f530['query']=_[_0x89aa('0x30')](_0x1859e5[_0x89aa('0x31')]);_0x23f530[_0x89aa('0x32')]=_['intersection'](_0x23f530['model'],_0x23f530['query']);_0x116815[_0x89aa('0x33')]=_[_0x89aa('0x34')](_0x23f530[_0x89aa('0x2f')],qs[_0x89aa('0x35')](_0x1859e5[_0x89aa('0x31')]['fields']));_0x116815[_0x89aa('0x33')]=_0x116815[_0x89aa('0x33')][_0x89aa('0x36')]?_0x116815[_0x89aa('0x33')]:_0x23f530[_0x89aa('0x2f')];if(!_0x1859e5[_0x89aa('0x31')][_0x89aa('0x37')](_0x89aa('0x38'))){_0x116815[_0x89aa('0x20')]=qs[_0x89aa('0x20')](_0x1859e5['query'][_0x89aa('0x20')]);_0x116815[_0x89aa('0x1e')]=qs[_0x89aa('0x1e')](_0x1859e5[_0x89aa('0x31')]['offset']);}_0x116815['order']=qs[_0x89aa('0x39')](_0x1859e5['query'][_0x89aa('0x39')]);_0x116815[_0x89aa('0x3a')]=qs[_0x89aa('0x32')](_[_0x89aa('0x3b')](_0x1859e5[_0x89aa('0x31')],_0x23f530['filters']),_0x1c48fa);if(_0x1859e5[_0x89aa('0x31')][_0x89aa('0x3c')]){_0x116815[_0x89aa('0x3a')]=_[_0x89aa('0x3d')](_0x116815['where'],{'$or':_['map'](_0x1c48fa,function(_0x6700ed){if(_0x6700ed[_0x89aa('0x2d')]!==_0x89aa('0x3e')){var _0x2a0fcd={};_0x2a0fcd[_0x6700ed[_0x89aa('0x27')]]={'$like':'%'+_0x1859e5[_0x89aa('0x31')][_0x89aa('0x3c')]+'%'};return _0x2a0fcd;}})});}_0x116815=_[_0x89aa('0x3d')]({},_0x116815,_0x1859e5[_0x89aa('0x3f')]);var _0x28796d={'where':_0x116815[_0x89aa('0x3a')]};return db[_0x89aa('0x2b')]['count'](_0x28796d)['then'](function(_0x4cbc82){_0x82fef2[_0x89aa('0x21')]=_0x4cbc82;if(_0x1859e5[_0x89aa('0x31')][_0x89aa('0x40')]){_0x116815['include']=[{'all':!![]}];}return db['VtigerAccount'][_0x89aa('0x41')](_0x116815);})[_0x89aa('0x25')](function(_0xe476d6){_0x82fef2[_0x89aa('0x42')]=_0xe476d6;return _0x82fef2;})[_0x89aa('0x25')](respondWithFilteredResult(_0x5f3904,_0x116815))[_0x89aa('0x43')](handleError(_0x5f3904,null));};exports[_0x89aa('0x44')]=function(_0x359fa1,_0x543fcb){var _0x45615e={'raw':![],'where':{'id':_0x359fa1[_0x89aa('0x45')]['id']}},_0x192dcf={};_0x192dcf[_0x89aa('0x2f')]=_['keys'](db[_0x89aa('0x2b')]['rawAttributes']);_0x192dcf[_0x89aa('0x31')]=_['keys'](_0x359fa1[_0x89aa('0x31')]);_0x192dcf['filters']=_['intersection'](_0x192dcf['model'],_0x192dcf[_0x89aa('0x31')]);_0x45615e['attributes']=_[_0x89aa('0x34')](_0x192dcf[_0x89aa('0x2f')],qs[_0x89aa('0x35')](_0x359fa1[_0x89aa('0x31')]['fields']));_0x45615e[_0x89aa('0x33')]=_0x45615e[_0x89aa('0x33')][_0x89aa('0x36')]?_0x45615e[_0x89aa('0x33')]:_0x192dcf[_0x89aa('0x2f')];if(_0x359fa1['query'][_0x89aa('0x40')]){_0x45615e[_0x89aa('0x46')]=[{'all':!![]}];}_0x45615e=_[_0x89aa('0x3d')]({},_0x45615e,_0x359fa1[_0x89aa('0x3f')]);return db['VtigerAccount'][_0x89aa('0x47')](_0x45615e)[_0x89aa('0x25')](handleEntityNotFound(_0x543fcb,null))[_0x89aa('0x25')](respondWithResult(_0x543fcb,null))[_0x89aa('0x43')](handleError(_0x543fcb,null));};exports[_0x89aa('0x48')]=function(_0x7de387,_0x40ac15){return db['VtigerAccount'][_0x89aa('0x48')](_0x7de387[_0x89aa('0x49')],{})['then'](respondWithResult(_0x40ac15,0xc9))[_0x89aa('0x43')](handleError(_0x40ac15,null));};exports[_0x89aa('0x4a')]=function(_0x750b04,_0x28bf30){if(_0x750b04['body']['id']){delete _0x750b04['body']['id'];}return db[_0x89aa('0x2b')]['find']({'where':{'id':_0x750b04[_0x89aa('0x45')]['id']}})[_0x89aa('0x25')](handleEntityNotFound(_0x28bf30,null))[_0x89aa('0x25')](saveUpdates(_0x750b04['body'],null))['then'](respondWithResult(_0x28bf30,null))[_0x89aa('0x43')](handleError(_0x28bf30,null));};exports[_0x89aa('0x4b')]=function(_0x253078,_0xd339fe){return db['VtigerAccount']['find']({'where':{'id':_0x253078[_0x89aa('0x45')]['id']}})['then'](handleEntityNotFound(_0xd339fe,null))[_0x89aa('0x25')](removeEntity(_0xd339fe,null))[_0x89aa('0x43')](handleError(_0xd339fe,null));};exports[_0x89aa('0x4c')]=function(_0x28621e,_0x5c8d49,_0x1162f6){var _0x43d195={};var _0x373b11={};var _0x34bb7f;var _0x498f39;return db['VtigerAccount'][_0x89aa('0x4d')]({'where':{'id':_0x28621e['params']['id']}})['then'](handleEntityNotFound(_0x5c8d49,null))[_0x89aa('0x25')](function(_0x1f6bc6){if(_0x1f6bc6){_0x34bb7f=_0x1f6bc6;_0x373b11[_0x89aa('0x2f')]=_['keys'](db[_0x89aa('0x4e')][_0x89aa('0x4f')]);_0x373b11[_0x89aa('0x31')]=_[_0x89aa('0x30')](_0x28621e[_0x89aa('0x31')]);_0x373b11[_0x89aa('0x32')]=_[_0x89aa('0x34')](_0x373b11[_0x89aa('0x2f')],_0x373b11['query']);_0x43d195[_0x89aa('0x33')]=_[_0x89aa('0x34')](_0x373b11[_0x89aa('0x2f')],qs['fields'](_0x28621e[_0x89aa('0x31')][_0x89aa('0x35')]));_0x43d195[_0x89aa('0x33')]=_0x43d195['attributes'][_0x89aa('0x36')]?_0x43d195[_0x89aa('0x33')]:_0x373b11[_0x89aa('0x2f')];_0x43d195[_0x89aa('0x50')]=qs[_0x89aa('0x39')](_0x28621e[_0x89aa('0x31')]['sort']);_0x43d195['where']=qs[_0x89aa('0x32')](_[_0x89aa('0x3b')](_0x28621e[_0x89aa('0x31')],_0x373b11[_0x89aa('0x32')]));if(_0x28621e[_0x89aa('0x31')][_0x89aa('0x3c')]){_0x43d195[_0x89aa('0x3a')]=_['merge'](_0x43d195[_0x89aa('0x3a')],{'$or':_['map'](_0x43d195[_0x89aa('0x33')],function(_0x5c959c){var _0x364dae={};_0x364dae[_0x5c959c]={'$like':'%'+_0x28621e['query'][_0x89aa('0x3c')]+'%'};return _0x364dae;})});}_0x43d195=_['merge']({},_0x43d195,_0x28621e[_0x89aa('0x3f')]);return _0x34bb7f[_0x89aa('0x4c')](_0x43d195);}})[_0x89aa('0x25')](function(_0x236005){if(_0x236005){_0x498f39=_0x236005[_0x89aa('0x36')];if(!_0x28621e[_0x89aa('0x31')][_0x89aa('0x37')](_0x89aa('0x38'))){_0x43d195['limit']=qs['limit'](_0x28621e[_0x89aa('0x31')][_0x89aa('0x20')]);_0x43d195['offset']=qs[_0x89aa('0x1e')](_0x28621e[_0x89aa('0x31')]['offset']);}return _0x34bb7f[_0x89aa('0x4c')](_0x43d195);}})[_0x89aa('0x25')](function(_0x47c86c){if(_0x47c86c){return _0x47c86c?{'count':_0x498f39,'rows':_0x47c86c}:null;}})['then'](respondWithResult(_0x5c8d49,null))[_0x89aa('0x43')](handleError(_0x5c8d49,null));};exports[_0x89aa('0x51')]=function(_0x55428a,_0x107711,_0x23492e){if(_0x55428a[_0x89aa('0x49')]['id']){delete _0x55428a[_0x89aa('0x49')]['id'];}return db[_0x89aa('0x2b')][_0x89aa('0x4d')]({'where':{'id':_0x55428a[_0x89aa('0x45')]['id']}})[_0x89aa('0x25')](handleEntityNotFound(_0x107711,null))[_0x89aa('0x25')](function(_0x4a8e85){if(_0x4a8e85){_0x55428a[_0x89aa('0x49')][_0x89aa('0x52')]=_0x4a8e85['id'];_0x55428a['body']['Subjects']=integrations[_0x89aa('0x53')](_0x55428a['body'][_0x89aa('0x54')],_0x55428a[_0x89aa('0x49')][_0x89aa('0x2d')]);_0x55428a[_0x89aa('0x49')][_0x89aa('0x55')]=integrations[_0x89aa('0x56')](_0x55428a['body']['channel'],_0x55428a['body']['type']);return db['VtigerConfiguration'][_0x89aa('0x48')](_0x55428a[_0x89aa('0x49')],{'include':[{'model':db[_0x89aa('0x57')],'as':_0x89aa('0x58')},{'model':db[_0x89aa('0x57')],'as':_0x89aa('0x55')}]});}return null;})[_0x89aa('0x25')](respondWithResult(_0x107711,null))['catch'](handleError(_0x107711,null));};var md5=require(_0x89aa('0x59'));exports[_0x89aa('0x5a')]=function(_0x48b3a3,_0x41137c,_0x103036){var _0x17c0d4=null;var _0x44104b=null;var _0x474db4=null;var _0x5d67a3=null;var _0x292ef7='';return db[_0x89aa('0x2b')][_0x89aa('0x4d')]({'where':{'id':_0x48b3a3['params']['id']},'attributes':['id','name','username',_0x89aa('0x5b'),'moduleName','remoteUri','serverUrl',_0x89aa('0x5c')]})[_0x89aa('0x25')](handleEntityNotFound(_0x41137c,null))['then'](function(_0x398e4f){if(_0x398e4f){_0x17c0d4=_0x398e4f['username'];_0x44104b=_0x398e4f[_0x89aa('0x5c')];_0x474db4=_0x398e4f[_0x89aa('0x5d')];_0x292ef7=_0x398e4f['remoteUri'];var _0x39b013=_0x292ef7[_0x89aa('0x5e')](-0x1);if(_0x39b013==='/'){_0x292ef7=_0x292ef7[_0x89aa('0x5f')](0x0,_0x292ef7[_0x89aa('0x60')](_0x39b013));}_0x5d67a3=util[_0x89aa('0x61')]('%s/webservice.php',_0x292ef7);var _0x5aae97={'method':_0x89aa('0x62'),'uri':_0x5d67a3,'qs':{'operation':_0x89aa('0x63'),'username':_0x398e4f[_0x89aa('0x64')]},'json':!![]};return rp(_0x5aae97);}})['then'](function(_0x4c2efe){if(_0x4c2efe[_0x89aa('0x65')]){var _0x37c816={'method':_0x89aa('0x66'),'uri':_0x5d67a3,'form':{'operation':_0x89aa('0x67'),'username':_0x17c0d4,'accessKey':md5(_0x4c2efe[_0x89aa('0x68')]['token']+_0x44104b)},'json':!![]};return rp(_0x37c816);}})[_0x89aa('0x25')](function(_0x3e73ab){if(_0x3e73ab[_0x89aa('0x65')]){var _0x21cbe8={'method':'GET','uri':_0x5d67a3,'qs':{'operation':_0x89aa('0x69'),'username':_0x17c0d4,'sessionName':_0x3e73ab[_0x89aa('0x68')][_0x89aa('0x6a')],'elementType':_0x474db4},'json':!![]};return rp(_0x21cbe8);}})[_0x89aa('0x25')](function(_0x40db9f){if(_0x40db9f[_0x89aa('0x65')]){var _0x31a14e=['autogenerated','reference',_0x89aa('0x6b')];_['remove'](_0x40db9f[_0x89aa('0x68')][_0x89aa('0x35')],function(_0x12c08e){return _0x31a14e[_0x89aa('0x6c')](_0x12c08e[_0x89aa('0x2d')][_0x89aa('0x27')]);});_[_0x89aa('0x6d')](_0x40db9f['result'][_0x89aa('0x35')],function(_0x161dfa){return _0x161dfa[_0x89aa('0x6e')]==='false';});return{'count':_0x40db9f[_0x89aa('0x68')]['fields']['length'],'rows':_[_0x89aa('0x2a')](_0x40db9f['result'][_0x89aa('0x35')],function(_0x337e2d){return{'id':_0x337e2d[_0x89aa('0x27')],'name':_0x337e2d['label'],'custom':_[_0x89aa('0x6f')](_0x337e2d[_0x89aa('0x27')],_0x89aa('0x70'))?!![]:![],'options':_0x337e2d[_0x89aa('0x2d')]['name']==='picklist'&&_0x337e2d['type'][_0x89aa('0x71')]['length']>0x0?_[_0x89aa('0x2a')](_0x337e2d[_0x89aa('0x2d')][_0x89aa('0x71')],function(_0x357837){return{'name':_0x357837[_0x89aa('0x72')],'value':_0x357837[_0x89aa('0x73')]};}):[]};})};}})[_0x89aa('0x25')](respondWithResult(_0x41137c,null))[_0x89aa('0x43')](function(_0x11325f){console[_0x89aa('0x74')](_0x89aa('0x75')+_0x11325f);var _0x314865=_0x48b3a3[_0x89aa('0x31')][_0x89aa('0x76')]?0x1f4:_0x11325f[_0x89aa('0x77')]||0x1f4;logger[_0x89aa('0x78')]('getFields,\x20%s,\x20%s,\x20%s',_0x89aa('0x5a'),_0x314865,JSON['stringify'](_0x11325f));delete _0x11325f[_0x89aa('0x27')];if(_0x314865===0x191){_0x314865=0x190;}_0x41137c[_0x89aa('0x1b')](_0x314865)['send'](_0x48b3a3['query'][_0x89aa('0x76')]?{'message':'Wrong\x20credentials','statusCode':_0x11325f[_0x89aa('0x77')]}:_0x11325f);});};
\ No newline at end of file
index 7523ab6..4d867b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdbb=['./intVtigerAccount.attributes','../../components/integrations/configuration','exports','define','VtigerAccount','lodash','../../config/logger','api','moment','rimraf','../../config/environment'];(function(_0x2806f6,_0x294105){var _0x32ebb1=function(_0x5e875d){while(--_0x5e875d){_0x2806f6['push'](_0x2806f6['shift']());}};_0x32ebb1(++_0x294105);}(_0xbdbb,0x1e9));var _0xbbdb=function(_0x59b341,_0x122518){_0x59b341=_0x59b341-0x0;var _0x5690b1=_0xbdbb[_0x59b341];return _0x5690b1;};'use strict';var _=require(_0xbbdb('0x0'));var util=require('util');var logger=require(_0xbbdb('0x1'))(_0xbbdb('0x2'));var moment=require(_0xbbdb('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xbbdb('0x4'));var config=require(_0xbbdb('0x5'));var attributes=require(_0xbbdb('0x6'));var integrations=require(_0xbbdb('0x7'));module[_0xbbdb('0x8')]=function(_0x44900d,_0x2dd8d2){return _0x44900d[_0xbbdb('0x9')](_0xbbdb('0xa'),attributes,{'tableName':'int_vtiger_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe1c4=['api','moment','bluebird','request-promise','path','./intVtigerAccount.attributes','../../components/integrations/configuration','exports','define','VtigerAccount','util'];(function(_0x1591fc,_0x40fd0d){var _0x3eed47=function(_0x1b3c47){while(--_0x1b3c47){_0x1591fc['push'](_0x1591fc['shift']());}};_0x3eed47(++_0x40fd0d);}(_0xe1c4,0xaf));var _0x4e1c=function(_0x16957f,_0x33143b){_0x16957f=_0x16957f-0x0;var _0x155bf0=_0xe1c4[_0x16957f];return _0x155bf0;};'use strict';var _=require('lodash');var util=require(_0x4e1c('0x0'));var logger=require('../../config/logger')(_0x4e1c('0x1'));var moment=require(_0x4e1c('0x2'));var BPromise=require(_0x4e1c('0x3'));var rp=require(_0x4e1c('0x4'));var fs=require('fs');var path=require(_0x4e1c('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x4e1c('0x6'));var integrations=require(_0x4e1c('0x7'));module[_0x4e1c('0x8')]=function(_0x520b11,_0x1193ad){return _0x520b11[_0x4e1c('0x9')](_0x4e1c('0xa'),attributes,{'tableName':'int_vtiger_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cfd1d5b..bb13b08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['stringify','error','message','result','catch','GetVtigerAccount','VtigerAccount','findAll','options','where','attributes','limit','include','map','model','ShowVtigerAccount','find','raw','util','moment','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','debug','VtigerAccount,\x20%s,\x20%s,\x20%s'];(function(_0x1f86e0,_0xc5852){var _0x281a1e=function(_0x3f5c04){while(--_0x3f5c04){_0x1f86e0['push'](_0x1f86e0['shift']());}};_0x281a1e(++_0xc5852);}(_0x757a,0xde));var _0xa757=function(_0x1c7b9f,_0x22d7f9){_0x1c7b9f=_0x1c7b9f-0x0;var _0x53fd2d=_0x757a[_0x1c7b9f];return _0x53fd2d;};'use strict';var _=require('lodash');var util=require(_0xa757('0x0'));var moment=require(_0xa757('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa757('0x2'))['db'];var utils=require(_0xa757('0x3'));var logger=require(_0xa757('0x4'))(_0xa757('0x5'));var config=require(_0xa757('0x6'));var jayson=require(_0xa757('0x7'));var client=jayson['client'][_0xa757('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4343b6,_0x53be0e,_0x2930fa){return new BPromise(function(_0x2f7793,_0x447344){return client[_0xa757('0x9')](_0x4343b6,_0x2930fa)[_0xa757('0xa')](function(_0x5aef8a){logger[_0xa757('0xb')](_0xa757('0xc'),_0x53be0e,_0xa757('0xd'));logger[_0xa757('0xe')](_0xa757('0xf'),_0x53be0e,_0xa757('0xd'),JSON[_0xa757('0x10')](_0x5aef8a));if(_0x5aef8a['error']){if(_0x5aef8a['error']['code']===0x1f4){logger['error']('VtigerAccount,\x20%s,\x20%s',_0x53be0e,_0x5aef8a[_0xa757('0x11')]['message']);return _0x447344(_0x5aef8a['error'][_0xa757('0x12')]);}logger['error']('VtigerAccount,\x20%s,\x20%s',_0x53be0e,_0x5aef8a[_0xa757('0x11')][_0xa757('0x12')]);return _0x2f7793(_0x5aef8a[_0xa757('0x11')][_0xa757('0x12')]);}else{logger[_0xa757('0xb')](_0xa757('0xc'),_0x53be0e,_0xa757('0xd'));_0x2f7793(_0x5aef8a[_0xa757('0x13')][_0xa757('0x12')]);}})[_0xa757('0x14')](function(_0x50aac1){logger[_0xa757('0x11')](_0xa757('0xc'),_0x53be0e,_0x50aac1);_0x447344(_0x50aac1);});});}exports[_0xa757('0x15')]=function(_0x4d9f58){var _0x54b305=this;return new Promise(function(_0x151c04,_0x468d45){return db[_0xa757('0x16')][_0xa757('0x17')]({'raw':_0x4d9f58[_0xa757('0x18')]?_0x4d9f58[_0xa757('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x4d9f58[_0xa757('0x18')]?_0x4d9f58['options'][_0xa757('0x19')]||null:null,'attributes':_0x4d9f58[_0xa757('0x18')]?_0x4d9f58[_0xa757('0x18')][_0xa757('0x1a')]||null:null,'limit':_0x4d9f58['options']?_0x4d9f58['options'][_0xa757('0x1b')]||null:null,'include':_0x4d9f58[_0xa757('0x18')]?_0x4d9f58[_0xa757('0x18')][_0xa757('0x1c')]?_[_0xa757('0x1d')](_0x4d9f58[_0xa757('0x18')][_0xa757('0x1c')],function(_0x21f1af){return{'model':db[_0x21f1af[_0xa757('0x1e')]],'as':_0x21f1af['as'],'attributes':_0x21f1af['attributes'],'include':_0x21f1af[_0xa757('0x1c')]?_['map'](_0x21f1af[_0xa757('0x1c')],function(_0x47903b){return{'model':db[_0x47903b[_0xa757('0x1e')]],'as':_0x47903b['as'],'attributes':_0x47903b[_0xa757('0x1a')],'include':_0x47903b[_0xa757('0x1c')]?_['map'](_0x47903b[_0xa757('0x1c')],function(_0xcd98bd){return{'model':db[_0xcd98bd[_0xa757('0x1e')]],'as':_0xcd98bd['as'],'attributes':_0xcd98bd[_0xa757('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x449a7d){logger['info']('GetVtigerAccount',_0x4d9f58);logger['debug']('GetVtigerAccount',_0x4d9f58,JSON[_0xa757('0x10')](_0x449a7d));_0x151c04(_0x449a7d);})['catch'](function(_0x2208f9){logger[_0xa757('0x11')]('GetVtigerAccount',_0x2208f9[_0xa757('0x12')],_0x4d9f58);_0x468d45(_0x54b305['error'](0x1f4,_0x2208f9[_0xa757('0x12')]));});});};exports[_0xa757('0x1f')]=function(_0x5307c3){var _0x235e54=this;return new Promise(function(_0x5ade7b,_0x3a4a66){return db[_0xa757('0x16')][_0xa757('0x20')]({'raw':_0x5307c3[_0xa757('0x18')]?_0x5307c3[_0xa757('0x18')][_0xa757('0x21')]===undefined?!![]:![]:!![],'where':_0x5307c3[_0xa757('0x18')]?_0x5307c3[_0xa757('0x18')][_0xa757('0x19')]||null:null,'attributes':_0x5307c3[_0xa757('0x18')]?_0x5307c3[_0xa757('0x18')][_0xa757('0x1a')]||null:null,'include':_0x5307c3[_0xa757('0x18')]?_0x5307c3[_0xa757('0x18')][_0xa757('0x1c')]?_[_0xa757('0x1d')](_0x5307c3[_0xa757('0x18')][_0xa757('0x1c')],function(_0x1eacde){return{'model':db[_0x1eacde[_0xa757('0x1e')]],'as':_0x1eacde['as'],'attributes':_0x1eacde[_0xa757('0x1a')],'include':_0x1eacde[_0xa757('0x1c')]?_[_0xa757('0x1d')](_0x1eacde[_0xa757('0x1c')],function(_0x59700d){return{'model':db[_0x59700d[_0xa757('0x1e')]],'as':_0x59700d['as'],'attributes':_0x59700d[_0xa757('0x1a')],'include':_0x59700d[_0xa757('0x1c')]?_[_0xa757('0x1d')](_0x59700d[_0xa757('0x1c')],function(_0x51e2aa){return{'model':db[_0x51e2aa[_0xa757('0x1e')]],'as':_0x51e2aa['as'],'attributes':_0x51e2aa[_0xa757('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xa757('0xa')](function(_0x2c34b1){logger[_0xa757('0xb')](_0xa757('0x1f'),_0x5307c3);logger['debug'](_0xa757('0x1f'),_0x5307c3,JSON[_0xa757('0x10')](_0x2c34b1));_0x5ade7b(_0x2c34b1);})[_0xa757('0x14')](function(_0xc34409){logger[_0xa757('0x11')](_0xa757('0x1f'),_0xc34409[_0xa757('0x12')],_0x5307c3);_0x3a4a66(_0x235e54[_0xa757('0x11')](0x1f4,_0xc34409[_0xa757('0x12')]));});});};
\ No newline at end of file
+var _0x7d25=['raw','where','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','client','request','info','VtigerAccount,\x20%s,\x20%s','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetVtigerAccount','VtigerAccount','findAll','options','attributes','limit','include','map','model','then','ShowVtigerAccount','find'];(function(_0x127bb2,_0x849c5f){var _0x596034=function(_0x307a4c){while(--_0x307a4c){_0x127bb2['push'](_0x127bb2['shift']());}};_0x596034(++_0x849c5f);}(_0x7d25,0x8a));var _0x57d2=function(_0x1a7846,_0x59723e){_0x1a7846=_0x1a7846-0x0;var _0x48049=_0x7d25[_0x1a7846];return _0x48049;};'use strict';var _=require('lodash');var util=require(_0x57d2('0x0'));var moment=require(_0x57d2('0x1'));var BPromise=require(_0x57d2('0x2'));var rs=require(_0x57d2('0x3'));var fs=require('fs');var Redis=require(_0x57d2('0x4'));var db=require(_0x57d2('0x5'))['db'];var utils=require(_0x57d2('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x57d2('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1f43b2,_0x263d35,_0x147194){return new BPromise(function(_0x59ae87,_0x49e3e5){return client[_0x57d2('0x8')](_0x1f43b2,_0x147194)['then'](function(_0x3a1ec5){logger[_0x57d2('0x9')](_0x57d2('0xa'),_0x263d35,'request\x20sent');logger[_0x57d2('0xb')](_0x57d2('0xc'),_0x263d35,_0x57d2('0xd'),JSON[_0x57d2('0xe')](_0x3a1ec5));if(_0x3a1ec5[_0x57d2('0xf')]){if(_0x3a1ec5[_0x57d2('0xf')][_0x57d2('0x10')]===0x1f4){logger[_0x57d2('0xf')](_0x57d2('0xa'),_0x263d35,_0x3a1ec5[_0x57d2('0xf')][_0x57d2('0x11')]);return _0x49e3e5(_0x3a1ec5[_0x57d2('0xf')][_0x57d2('0x11')]);}logger[_0x57d2('0xf')](_0x57d2('0xa'),_0x263d35,_0x3a1ec5[_0x57d2('0xf')]['message']);return _0x59ae87(_0x3a1ec5['error'][_0x57d2('0x11')]);}else{logger[_0x57d2('0x9')]('VtigerAccount,\x20%s,\x20%s',_0x263d35,_0x57d2('0xd'));_0x59ae87(_0x3a1ec5[_0x57d2('0x12')]['message']);}})[_0x57d2('0x13')](function(_0x4986ad){logger[_0x57d2('0xf')]('VtigerAccount,\x20%s,\x20%s',_0x263d35,_0x4986ad);_0x49e3e5(_0x4986ad);});});}exports[_0x57d2('0x14')]=function(_0x7d4cf1){var _0x2ecfdf=this;return new Promise(function(_0x4a94e3,_0x525cfc){return db[_0x57d2('0x15')][_0x57d2('0x16')]({'raw':_0x7d4cf1[_0x57d2('0x17')]?_0x7d4cf1[_0x57d2('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x7d4cf1[_0x57d2('0x17')]?_0x7d4cf1[_0x57d2('0x17')]['where']||null:null,'attributes':_0x7d4cf1['options']?_0x7d4cf1[_0x57d2('0x17')][_0x57d2('0x18')]||null:null,'limit':_0x7d4cf1[_0x57d2('0x17')]?_0x7d4cf1[_0x57d2('0x17')][_0x57d2('0x19')]||null:null,'include':_0x7d4cf1[_0x57d2('0x17')]?_0x7d4cf1[_0x57d2('0x17')][_0x57d2('0x1a')]?_[_0x57d2('0x1b')](_0x7d4cf1[_0x57d2('0x17')][_0x57d2('0x1a')],function(_0x456fe1){return{'model':db[_0x456fe1[_0x57d2('0x1c')]],'as':_0x456fe1['as'],'attributes':_0x456fe1[_0x57d2('0x18')],'include':_0x456fe1['include']?_[_0x57d2('0x1b')](_0x456fe1[_0x57d2('0x1a')],function(_0x3c7de8){return{'model':db[_0x3c7de8[_0x57d2('0x1c')]],'as':_0x3c7de8['as'],'attributes':_0x3c7de8[_0x57d2('0x18')],'include':_0x3c7de8['include']?_[_0x57d2('0x1b')](_0x3c7de8[_0x57d2('0x1a')],function(_0x995928){return{'model':db[_0x995928[_0x57d2('0x1c')]],'as':_0x995928['as'],'attributes':_0x995928[_0x57d2('0x18')]};}):[]};}):[]};}):[]:[]})[_0x57d2('0x1d')](function(_0x9bdb11){logger['info'](_0x57d2('0x14'),_0x7d4cf1);logger[_0x57d2('0xb')](_0x57d2('0x14'),_0x7d4cf1,JSON[_0x57d2('0xe')](_0x9bdb11));_0x4a94e3(_0x9bdb11);})[_0x57d2('0x13')](function(_0x7c33f3){logger[_0x57d2('0xf')](_0x57d2('0x14'),_0x7c33f3[_0x57d2('0x11')],_0x7d4cf1);_0x525cfc(_0x2ecfdf[_0x57d2('0xf')](0x1f4,_0x7c33f3['message']));});});};exports[_0x57d2('0x1e')]=function(_0x3da926){var _0x26e052=this;return new Promise(function(_0x3e017c,_0x484597){return db[_0x57d2('0x15')][_0x57d2('0x1f')]({'raw':_0x3da926[_0x57d2('0x17')]?_0x3da926[_0x57d2('0x17')][_0x57d2('0x20')]===undefined?!![]:![]:!![],'where':_0x3da926[_0x57d2('0x17')]?_0x3da926[_0x57d2('0x17')][_0x57d2('0x21')]||null:null,'attributes':_0x3da926[_0x57d2('0x17')]?_0x3da926['options'][_0x57d2('0x18')]||null:null,'include':_0x3da926[_0x57d2('0x17')]?_0x3da926['options'][_0x57d2('0x1a')]?_[_0x57d2('0x1b')](_0x3da926['options'][_0x57d2('0x1a')],function(_0x1c4ea5){return{'model':db[_0x1c4ea5[_0x57d2('0x1c')]],'as':_0x1c4ea5['as'],'attributes':_0x1c4ea5[_0x57d2('0x18')],'include':_0x1c4ea5[_0x57d2('0x1a')]?_['map'](_0x1c4ea5['include'],function(_0x581ebc){return{'model':db[_0x581ebc['model']],'as':_0x581ebc['as'],'attributes':_0x581ebc[_0x57d2('0x18')],'include':_0x581ebc[_0x57d2('0x1a')]?_[_0x57d2('0x1b')](_0x581ebc[_0x57d2('0x1a')],function(_0x13beac){return{'model':db[_0x13beac['model']],'as':_0x13beac['as'],'attributes':_0x13beac[_0x57d2('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3378a6){logger[_0x57d2('0x9')](_0x57d2('0x1e'),_0x3da926);logger['debug'](_0x57d2('0x1e'),_0x3da926,JSON[_0x57d2('0xe')](_0x3378a6));_0x3e017c(_0x3378a6);})['catch'](function(_0xb33455){logger[_0x57d2('0xf')](_0x57d2('0x1e'),_0xb33455[_0x57d2('0x11')],_0x3da926);_0x484597(_0x26e052[_0x57d2('0xf')](0x1f4,_0xb33455[_0x57d2('0x11')]));});});};
\ No newline at end of file
index 0638531..80412aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0656=['multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','create','update','delete','destroy','exports'];(function(_0x258b93,_0x188ccc){var _0x35484b=function(_0x2563ea){while(--_0x2563ea){_0x258b93['push'](_0x258b93['shift']());}};_0x35484b(++_0x188ccc);}(_0x0656,0x12c));var _0x6065=function(_0x11d459,_0x43eeea){_0x11d459=_0x11d459-0x0;var _0x21203c=_0x0656[_0x11d459];return _0x21203c;};'use strict';var multer=require(_0x6065('0x0'));var util=require('util');var path=require(_0x6065('0x1'));var timeout=require(_0x6065('0x2'));var express=require(_0x6065('0x3'));var router=express[_0x6065('0x4')]();var fs_extra=require(_0x6065('0x5'));var auth=require(_0x6065('0x6'));var interaction=require(_0x6065('0x7'));var config=require(_0x6065('0x8'));var controller=require(_0x6065('0x9'));router[_0x6065('0xa')]('/',auth[_0x6065('0xb')](),controller[_0x6065('0xc')]);router['get'](_0x6065('0xd'),auth[_0x6065('0xb')](),controller[_0x6065('0xe')]);router[_0x6065('0xa')](_0x6065('0xf'),auth[_0x6065('0xb')](),controller[_0x6065('0x10')]);router[_0x6065('0xa')]('/:id/subjects',auth[_0x6065('0xb')](),controller[_0x6065('0x11')]);router[_0x6065('0xa')](_0x6065('0x12'),auth['isAuthenticated'](),controller[_0x6065('0x13')]);router['post']('/',auth['isAuthenticated'](),controller[_0x6065('0x14')]);router['put'](_0x6065('0xd'),auth['isAuthenticated'](),controller[_0x6065('0x15')]);router[_0x6065('0x16')](_0x6065('0xd'),auth[_0x6065('0xb')](),controller[_0x6065('0x17')]);module[_0x6065('0x18')]=router;
\ No newline at end of file
+var _0xfc5b=['getDescriptions','post','/:id','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','get','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions'];(function(_0x63e481,_0x2e7f8d){var _0x2ad56f=function(_0x48f066){while(--_0x48f066){_0x63e481['push'](_0x63e481['shift']());}};_0x2ad56f(++_0x2e7f8d);}(_0xfc5b,0xd8));var _0xbfc5=function(_0x597e6c,_0x2700ee){_0x597e6c=_0x597e6c-0x0;var _0x5628e8=_0xfc5b[_0x597e6c];return _0x5628e8;};'use strict';var multer=require(_0xbfc5('0x0'));var util=require(_0xbfc5('0x1'));var path=require(_0xbfc5('0x2'));var timeout=require(_0xbfc5('0x3'));var express=require(_0xbfc5('0x4'));var router=express[_0xbfc5('0x5')]();var fs_extra=require(_0xbfc5('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./intVtigerConfiguration.controller');router[_0xbfc5('0x7')]('/',auth[_0xbfc5('0x8')](),controller['index']);router[_0xbfc5('0x7')]('/:id',auth[_0xbfc5('0x8')](),controller[_0xbfc5('0x9')]);router[_0xbfc5('0x7')](_0xbfc5('0xa'),auth[_0xbfc5('0x8')](),controller[_0xbfc5('0xb')]);router[_0xbfc5('0x7')](_0xbfc5('0xc'),auth[_0xbfc5('0x8')](),controller[_0xbfc5('0xd')]);router[_0xbfc5('0x7')](_0xbfc5('0xe'),auth[_0xbfc5('0x8')](),controller[_0xbfc5('0xf')]);router[_0xbfc5('0x10')]('/',auth[_0xbfc5('0x8')](),controller['create']);router['put'](_0xbfc5('0x11'),auth['isAuthenticated'](),controller[_0xbfc5('0x12')]);router['delete'](_0xbfc5('0x11'),auth[_0xbfc5('0x8')](),controller[_0xbfc5('0x13')]);module[_0xbfc5('0x14')]=router;
\ No newline at end of file
index e656c60..6ae819c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddfd=['exports','STRING'];(function(_0xedb496,_0x538bd3){var _0x3f0949=function(_0x3bbafa){while(--_0x3bbafa){_0xedb496['push'](_0xedb496['shift']());}};_0x3f0949(++_0x538bd3);}(_0xddfd,0xee));var _0xdddf=function(_0x56504c,_0x1527a0){_0x56504c=_0x56504c-0x0;var _0x87bf25=_0xddfd[_0x56504c];return _0x87bf25;};'use strict';var Sequelize=require('sequelize');module[_0xdddf('0x0')]={'name':{'type':Sequelize[_0xdddf('0x1')]},'description':{'type':Sequelize[_0xdddf('0x1')]}};
\ No newline at end of file
+var _0x7216=['exports','sequelize'];(function(_0xe0e0ec,_0xd7570a){var _0x1016a5=function(_0x433f5b){while(--_0x433f5b){_0xe0e0ec['push'](_0xe0e0ec['shift']());}};_0x1016a5(++_0xd7570a);}(_0x7216,0x1e7));var _0x6721=function(_0x170da8,_0x570526){_0x170da8=_0x170da8-0x0;var _0x1b76a0=_0x7216[_0x170da8];return _0x1b76a0;};'use strict';var Sequelize=require(_0x6721('0x0'));module[_0x6721('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index de5c4c7..a443fe7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ad0=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','rawAttributes','type','key','model','query','keys','intersection','attributes','length','hasOwnProperty','sort','where','filters','pick','filter','merge','map','options','VtigerConfiguration','includeAll','include','findAll','rows','show','params','fields','find','create','body','catch','getFields','findOne','order','nolimit','VtigerField','getSubjects','getDescriptions','eml-format','rimraf','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/advancedSearch'];(function(_0x370cb2,_0x84cc77){var _0xcfe3d9=function(_0x118a5e){while(--_0x118a5e){_0x370cb2['push'](_0x370cb2['shift']());}};_0xcfe3d9(++_0x84cc77);}(_0x5ad0,0x137));var _0x05ad=function(_0x369633,_0x263fb9){_0x369633=_0x369633-0x0;var _0x1eda8c=_0x5ad0[_0x369633];return _0x1eda8c;};'use strict';var emlformat=require(_0x05ad('0x0'));var rimraf=require(_0x05ad('0x1'));var zipdir=require(_0x05ad('0x2'));var jsonpatch=require(_0x05ad('0x3'));var rp=require(_0x05ad('0x4'));var moment=require(_0x05ad('0x5'));var BPromise=require(_0x05ad('0x6'));var Mustache=require(_0x05ad('0x7'));var util=require(_0x05ad('0x8'));var path=require(_0x05ad('0x9'));var sox=require(_0x05ad('0xa'));var csv=require(_0x05ad('0xb'));var ejs=require(_0x05ad('0xc'));var fs=require('fs');var fs_extra=require(_0x05ad('0xd'));var _=require(_0x05ad('0xe'));var squel=require('squel');var crypto=require(_0x05ad('0xf'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x05ad('0xb'));var querystring=require(_0x05ad('0x10'));var Papa=require(_0x05ad('0x11'));var Redis=require(_0x05ad('0x12'));var authService=require(_0x05ad('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x05ad('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x05ad('0x15'));var utils=require(_0x05ad('0x16'));var config=require(_0x05ad('0x17'));var licenseUtil=require(_0x05ad('0x18'));var db=require(_0x05ad('0x19'))['db'];function respondWithStatusCode(_0x118a7d,_0x3b8e8b){_0x3b8e8b=_0x3b8e8b||0xcc;return function(_0x1c03c7){if(_0x1c03c7){return _0x118a7d[_0x05ad('0x1a')](_0x3b8e8b);}return _0x118a7d[_0x05ad('0x1b')](_0x3b8e8b)[_0x05ad('0x1c')]();};}function respondWithResult(_0x8e4c4a,_0x3a6338){_0x3a6338=_0x3a6338||0xc8;return function(_0x5eea4f){if(_0x5eea4f){return _0x8e4c4a['status'](_0x3a6338)[_0x05ad('0x1d')](_0x5eea4f);}};}function respondWithFilteredResult(_0x1e80be,_0x58f89e){return function(_0xcccd88){if(_0xcccd88){var _0x4054d8=typeof _0x58f89e['offset']===_0x05ad('0x1e')&&typeof _0x58f89e[_0x05ad('0x1f')]==='undefined';var _0x2a04d7=_0xcccd88[_0x05ad('0x20')];var _0x1b39c4=_0x4054d8?0x0:_0x58f89e[_0x05ad('0x21')];var _0x5a8686=_0x4054d8?_0xcccd88['count']:_0x58f89e[_0x05ad('0x21')]+_0x58f89e['limit'];var _0x7a51d8;if(_0x5a8686>=_0x2a04d7){_0x5a8686=_0x2a04d7;_0x7a51d8=0xc8;}else{_0x7a51d8=0xce;}_0x1e80be[_0x05ad('0x1b')](_0x7a51d8);return _0x1e80be[_0x05ad('0x22')](_0x05ad('0x23'),_0x1b39c4+'-'+_0x5a8686+'/'+_0x2a04d7)['json'](_0xcccd88);}return null;};}function patchUpdates(_0x23e69e){return function(_0x3c12b4){try{jsonpatch['apply'](_0x3c12b4,_0x23e69e,!![]);}catch(_0x1fbe97){return BPromise[_0x05ad('0x24')](_0x1fbe97);}return _0x3c12b4[_0x05ad('0x25')]();};}function saveUpdates(_0x12218c,_0x6ea257){return function(_0x5d3025){if(_0x5d3025){return _0x5d3025[_0x05ad('0x26')](_0x12218c)[_0x05ad('0x27')](function(_0x42974c){return _0x42974c;});}return null;};}function removeEntity(_0x5e9c64,_0x281b73){return function(_0x2af25b){if(_0x2af25b){return _0x2af25b[_0x05ad('0x28')]()[_0x05ad('0x27')](function(){_0x5e9c64[_0x05ad('0x1b')](0xcc)[_0x05ad('0x1c')]();});}};}function handleEntityNotFound(_0x1a30ed,_0x7fbe89){return function(_0x1c26e3){if(!_0x1c26e3){_0x1a30ed[_0x05ad('0x1a')](0x194);}return _0x1c26e3;};}function handleError(_0x5b9c89,_0x4616bd){_0x4616bd=_0x4616bd||0x1f4;return function(_0x71a83b){logger[_0x05ad('0x29')](_0x71a83b[_0x05ad('0x2a')]);if(_0x71a83b[_0x05ad('0x2b')]){delete _0x71a83b[_0x05ad('0x2b')];}_0x5b9c89[_0x05ad('0x1b')](_0x4616bd)[_0x05ad('0x2c')](_0x71a83b);};}exports[_0x05ad('0x2d')]=function(_0x276808,_0x580703){var _0x360c1b={},_0x2150e2={},_0x20b4c7={'count':0x0,'rows':[]};var _0x59f216=_['map'](db['VtigerConfiguration'][_0x05ad('0x2e')],function(_0x168906){return{'name':_0x168906['fieldName'],'type':_0x168906[_0x05ad('0x2f')][_0x05ad('0x30')]};});_0x2150e2[_0x05ad('0x31')]=_['map'](_0x59f216,_0x05ad('0x2b'));_0x2150e2[_0x05ad('0x32')]=_[_0x05ad('0x33')](_0x276808[_0x05ad('0x32')]);_0x2150e2['filters']=_['intersection'](_0x2150e2[_0x05ad('0x31')],_0x2150e2[_0x05ad('0x32')]);_0x360c1b['attributes']=_[_0x05ad('0x34')](_0x2150e2[_0x05ad('0x31')],qs['fields'](_0x276808[_0x05ad('0x32')]['fields']));_0x360c1b[_0x05ad('0x35')]=_0x360c1b['attributes'][_0x05ad('0x36')]?_0x360c1b[_0x05ad('0x35')]:_0x2150e2[_0x05ad('0x31')];if(!_0x276808[_0x05ad('0x32')][_0x05ad('0x37')]('nolimit')){_0x360c1b['limit']=qs['limit'](_0x276808[_0x05ad('0x32')][_0x05ad('0x1f')]);_0x360c1b[_0x05ad('0x21')]=qs[_0x05ad('0x21')](_0x276808[_0x05ad('0x32')]['offset']);}_0x360c1b['order']=qs['sort'](_0x276808[_0x05ad('0x32')][_0x05ad('0x38')]);_0x360c1b[_0x05ad('0x39')]=qs[_0x05ad('0x3a')](_[_0x05ad('0x3b')](_0x276808[_0x05ad('0x32')],_0x2150e2['filters']),_0x59f216);if(_0x276808[_0x05ad('0x32')][_0x05ad('0x3c')]){_0x360c1b[_0x05ad('0x39')]=_[_0x05ad('0x3d')](_0x360c1b[_0x05ad('0x39')],{'$or':_[_0x05ad('0x3e')](_0x59f216,function(_0x5ad009){if(_0x5ad009[_0x05ad('0x2f')]!=='VIRTUAL'){var _0x2d8e8f={};_0x2d8e8f[_0x5ad009[_0x05ad('0x2b')]]={'$like':'%'+_0x276808[_0x05ad('0x32')][_0x05ad('0x3c')]+'%'};return _0x2d8e8f;}})});}_0x360c1b=_[_0x05ad('0x3d')]({},_0x360c1b,_0x276808[_0x05ad('0x3f')]);var _0x5c1cb8={'where':_0x360c1b[_0x05ad('0x39')]};return db[_0x05ad('0x40')][_0x05ad('0x20')](_0x5c1cb8)['then'](function(_0x2048f0){_0x20b4c7[_0x05ad('0x20')]=_0x2048f0;if(_0x276808[_0x05ad('0x32')][_0x05ad('0x41')]){_0x360c1b[_0x05ad('0x42')]=[{'all':!![]}];}return db[_0x05ad('0x40')][_0x05ad('0x43')](_0x360c1b);})[_0x05ad('0x27')](function(_0x27e56f){_0x20b4c7[_0x05ad('0x44')]=_0x27e56f;return _0x20b4c7;})[_0x05ad('0x27')](respondWithFilteredResult(_0x580703,_0x360c1b))['catch'](handleError(_0x580703,null));};exports[_0x05ad('0x45')]=function(_0x372982,_0x53560d){var _0x472bf7={'raw':![],'where':{'id':_0x372982[_0x05ad('0x46')]['id']}},_0x2fc305={};_0x2fc305[_0x05ad('0x31')]=_['keys'](db[_0x05ad('0x40')][_0x05ad('0x2e')]);_0x2fc305['query']=_[_0x05ad('0x33')](_0x372982['query']);_0x2fc305[_0x05ad('0x3a')]=_[_0x05ad('0x34')](_0x2fc305[_0x05ad('0x31')],_0x2fc305[_0x05ad('0x32')]);_0x472bf7[_0x05ad('0x35')]=_[_0x05ad('0x34')](_0x2fc305['model'],qs[_0x05ad('0x47')](_0x372982[_0x05ad('0x32')]['fields']));_0x472bf7[_0x05ad('0x35')]=_0x472bf7[_0x05ad('0x35')]['length']?_0x472bf7[_0x05ad('0x35')]:_0x2fc305[_0x05ad('0x31')];if(_0x372982[_0x05ad('0x32')][_0x05ad('0x41')]){_0x472bf7['include']=[{'all':!![]}];}_0x472bf7=_[_0x05ad('0x3d')]({},_0x472bf7,_0x372982[_0x05ad('0x3f')]);return db[_0x05ad('0x40')][_0x05ad('0x48')](_0x472bf7)[_0x05ad('0x27')](handleEntityNotFound(_0x53560d,null))[_0x05ad('0x27')](respondWithResult(_0x53560d,null))['catch'](handleError(_0x53560d,null));};exports[_0x05ad('0x49')]=function(_0x5d5b82,_0x327fac){return db[_0x05ad('0x40')][_0x05ad('0x49')](_0x5d5b82[_0x05ad('0x4a')],{})['then'](respondWithResult(_0x327fac,0xc9))[_0x05ad('0x4b')](handleError(_0x327fac,null));};exports[_0x05ad('0x26')]=function(_0x1e4b7e,_0xead31){if(_0x1e4b7e[_0x05ad('0x4a')]['id']){delete _0x1e4b7e[_0x05ad('0x4a')]['id'];}return db['VtigerConfiguration'][_0x05ad('0x48')]({'where':{'id':_0x1e4b7e[_0x05ad('0x46')]['id']}})['then'](handleEntityNotFound(_0xead31,null))[_0x05ad('0x27')](saveUpdates(_0x1e4b7e[_0x05ad('0x4a')],null))['then'](respondWithResult(_0xead31,null))[_0x05ad('0x4b')](handleError(_0xead31,null));};exports['destroy']=function(_0x265345,_0x1759ef){return db['VtigerConfiguration']['find']({'where':{'id':_0x265345[_0x05ad('0x46')]['id']}})['then'](handleEntityNotFound(_0x1759ef,null))[_0x05ad('0x27')](removeEntity(_0x1759ef,null))['catch'](handleError(_0x1759ef,null));};exports[_0x05ad('0x4c')]=function(_0x17bcef,_0x497007,_0x16555c){var _0x297263={};var _0x12f178={};var _0x1989de;var _0x812da6;return db[_0x05ad('0x40')][_0x05ad('0x4d')]({'where':{'id':_0x17bcef[_0x05ad('0x46')]['id']}})[_0x05ad('0x27')](handleEntityNotFound(_0x497007,null))[_0x05ad('0x27')](function(_0x339003){if(_0x339003){_0x1989de=_0x339003;_0x12f178[_0x05ad('0x31')]=_[_0x05ad('0x33')](db['VtigerField'][_0x05ad('0x2e')]);_0x12f178[_0x05ad('0x32')]=_[_0x05ad('0x33')](_0x17bcef['query']);_0x12f178[_0x05ad('0x3a')]=_[_0x05ad('0x34')](_0x12f178['model'],_0x12f178[_0x05ad('0x32')]);_0x297263[_0x05ad('0x35')]=_[_0x05ad('0x34')](_0x12f178[_0x05ad('0x31')],qs['fields'](_0x17bcef[_0x05ad('0x32')][_0x05ad('0x47')]));_0x297263['attributes']=_0x297263[_0x05ad('0x35')][_0x05ad('0x36')]?_0x297263['attributes']:_0x12f178[_0x05ad('0x31')];_0x297263[_0x05ad('0x4e')]=qs['sort'](_0x17bcef[_0x05ad('0x32')][_0x05ad('0x38')]);_0x297263[_0x05ad('0x39')]=qs[_0x05ad('0x3a')](_[_0x05ad('0x3b')](_0x17bcef[_0x05ad('0x32')],_0x12f178['filters']));if(_0x17bcef['query'][_0x05ad('0x3c')]){_0x297263[_0x05ad('0x39')]=_[_0x05ad('0x3d')](_0x297263[_0x05ad('0x39')],{'$or':_[_0x05ad('0x3e')](_0x297263['attributes'],function(_0x504a87){var _0x4af922={};_0x4af922[_0x504a87]={'$like':'%'+_0x17bcef[_0x05ad('0x32')][_0x05ad('0x3c')]+'%'};return _0x4af922;})});}_0x297263=_[_0x05ad('0x3d')]({},_0x297263,_0x17bcef[_0x05ad('0x3f')]);return _0x1989de[_0x05ad('0x4c')](_0x297263);}})[_0x05ad('0x27')](function(_0xae06be){if(_0xae06be){_0x812da6=_0xae06be[_0x05ad('0x36')];if(!_0x17bcef[_0x05ad('0x32')][_0x05ad('0x37')](_0x05ad('0x4f'))){_0x297263[_0x05ad('0x1f')]=qs[_0x05ad('0x1f')](_0x17bcef['query'][_0x05ad('0x1f')]);_0x297263[_0x05ad('0x21')]=qs[_0x05ad('0x21')](_0x17bcef['query'][_0x05ad('0x21')]);}return _0x1989de[_0x05ad('0x4c')](_0x297263);}})[_0x05ad('0x27')](function(_0x17373a){if(_0x17373a){return _0x17373a?{'count':_0x812da6,'rows':_0x17373a}:null;}})['then'](respondWithResult(_0x497007,null))['catch'](handleError(_0x497007,null));};exports['getSubjects']=function(_0x507dd4,_0x4940ee,_0x57decf){var _0x1c0cab={};var _0x337144={};var _0x2af7c8;var _0x1a4811;return db[_0x05ad('0x40')][_0x05ad('0x4d')]({'where':{'id':_0x507dd4[_0x05ad('0x46')]['id']}})[_0x05ad('0x27')](handleEntityNotFound(_0x4940ee,null))['then'](function(_0x193bbf){if(_0x193bbf){_0x2af7c8=_0x193bbf;_0x337144[_0x05ad('0x31')]=_[_0x05ad('0x33')](db[_0x05ad('0x50')][_0x05ad('0x2e')]);_0x337144['query']=_[_0x05ad('0x33')](_0x507dd4['query']);_0x337144[_0x05ad('0x3a')]=_[_0x05ad('0x34')](_0x337144[_0x05ad('0x31')],_0x337144[_0x05ad('0x32')]);_0x1c0cab[_0x05ad('0x35')]=_['intersection'](_0x337144[_0x05ad('0x31')],qs[_0x05ad('0x47')](_0x507dd4[_0x05ad('0x32')][_0x05ad('0x47')]));_0x1c0cab[_0x05ad('0x35')]=_0x1c0cab[_0x05ad('0x35')]['length']?_0x1c0cab[_0x05ad('0x35')]:_0x337144[_0x05ad('0x31')];_0x1c0cab[_0x05ad('0x4e')]=qs[_0x05ad('0x38')](_0x507dd4[_0x05ad('0x32')]['sort']);_0x1c0cab[_0x05ad('0x39')]=qs[_0x05ad('0x3a')](_[_0x05ad('0x3b')](_0x507dd4[_0x05ad('0x32')],_0x337144[_0x05ad('0x3a')]));if(_0x507dd4[_0x05ad('0x32')][_0x05ad('0x3c')]){_0x1c0cab[_0x05ad('0x39')]=_[_0x05ad('0x3d')](_0x1c0cab[_0x05ad('0x39')],{'$or':_['map'](_0x1c0cab[_0x05ad('0x35')],function(_0x10881b){var _0x2938b8={};_0x2938b8[_0x10881b]={'$like':'%'+_0x507dd4[_0x05ad('0x32')][_0x05ad('0x3c')]+'%'};return _0x2938b8;})});}_0x1c0cab=_[_0x05ad('0x3d')]({},_0x1c0cab,_0x507dd4['options']);return _0x2af7c8[_0x05ad('0x51')](_0x1c0cab);}})[_0x05ad('0x27')](function(_0x49f7e8){if(_0x49f7e8){_0x1a4811=_0x49f7e8[_0x05ad('0x36')];if(!_0x507dd4['query'][_0x05ad('0x37')]('nolimit')){_0x1c0cab['limit']=qs['limit'](_0x507dd4['query'][_0x05ad('0x1f')]);_0x1c0cab['offset']=qs['offset'](_0x507dd4[_0x05ad('0x32')][_0x05ad('0x21')]);}return _0x2af7c8[_0x05ad('0x51')](_0x1c0cab);}})[_0x05ad('0x27')](function(_0x5dc368){if(_0x5dc368){return _0x5dc368?{'count':_0x1a4811,'rows':_0x5dc368}:null;}})[_0x05ad('0x27')](respondWithResult(_0x4940ee,null))[_0x05ad('0x4b')](handleError(_0x4940ee,null));};exports[_0x05ad('0x52')]=function(_0x2df1b9,_0x2304a7,_0x42e509){var _0x42ebce={};var _0x4c7c1c={};var _0x383aff;var _0x2f38f9;return db[_0x05ad('0x40')][_0x05ad('0x4d')]({'where':{'id':_0x2df1b9[_0x05ad('0x46')]['id']}})[_0x05ad('0x27')](handleEntityNotFound(_0x2304a7,null))[_0x05ad('0x27')](function(_0x228d5b){if(_0x228d5b){_0x383aff=_0x228d5b;_0x4c7c1c[_0x05ad('0x31')]=_[_0x05ad('0x33')](db[_0x05ad('0x50')]['rawAttributes']);_0x4c7c1c['query']=_[_0x05ad('0x33')](_0x2df1b9[_0x05ad('0x32')]);_0x4c7c1c[_0x05ad('0x3a')]=_[_0x05ad('0x34')](_0x4c7c1c[_0x05ad('0x31')],_0x4c7c1c[_0x05ad('0x32')]);_0x42ebce['attributes']=_[_0x05ad('0x34')](_0x4c7c1c['model'],qs[_0x05ad('0x47')](_0x2df1b9[_0x05ad('0x32')]['fields']));_0x42ebce[_0x05ad('0x35')]=_0x42ebce[_0x05ad('0x35')][_0x05ad('0x36')]?_0x42ebce[_0x05ad('0x35')]:_0x4c7c1c[_0x05ad('0x31')];_0x42ebce[_0x05ad('0x4e')]=qs[_0x05ad('0x38')](_0x2df1b9[_0x05ad('0x32')][_0x05ad('0x38')]);_0x42ebce[_0x05ad('0x39')]=qs[_0x05ad('0x3a')](_[_0x05ad('0x3b')](_0x2df1b9['query'],_0x4c7c1c[_0x05ad('0x3a')]));if(_0x2df1b9[_0x05ad('0x32')]['filter']){_0x42ebce['where']=_[_0x05ad('0x3d')](_0x42ebce['where'],{'$or':_[_0x05ad('0x3e')](_0x42ebce[_0x05ad('0x35')],function(_0x6d02fc){var _0x4d8155={};_0x4d8155[_0x6d02fc]={'$like':'%'+_0x2df1b9[_0x05ad('0x32')][_0x05ad('0x3c')]+'%'};return _0x4d8155;})});}_0x42ebce=_[_0x05ad('0x3d')]({},_0x42ebce,_0x2df1b9['options']);return _0x383aff['getDescriptions'](_0x42ebce);}})['then'](function(_0x5adf09){if(_0x5adf09){_0x2f38f9=_0x5adf09[_0x05ad('0x36')];if(!_0x2df1b9[_0x05ad('0x32')][_0x05ad('0x37')](_0x05ad('0x4f'))){_0x42ebce['limit']=qs['limit'](_0x2df1b9['query'][_0x05ad('0x1f')]);_0x42ebce['offset']=qs[_0x05ad('0x21')](_0x2df1b9[_0x05ad('0x32')][_0x05ad('0x21')]);}return _0x383aff[_0x05ad('0x52')](_0x42ebce);}})[_0x05ad('0x27')](function(_0x444050){if(_0x444050){return _0x444050?{'count':_0x2f38f9,'rows':_0x444050}:null;}})[_0x05ad('0x27')](respondWithResult(_0x2304a7,null))['catch'](handleError(_0x2304a7,null));};
\ No newline at end of file
+var _0x715d=['request-promise','mustache','sox','to-csv','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','error','stack','send','index','map','VtigerConfiguration','fieldName','type','key','name','query','keys','filters','intersection','attributes','fields','length','model','hasOwnProperty','order','sort','where','pick','merge','filter','options','includeAll','include','findAll','rows','catch','rawAttributes','find','create','body','getFields','findOne','params','VtigerField','nolimit','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x3633fe,_0x74d2d6){var _0x1c9703=function(_0x420fc5){while(--_0x420fc5){_0x3633fe['push'](_0x3633fe['shift']());}};_0x1c9703(++_0x74d2d6);}(_0x715d,0x1d0));var _0xd715=function(_0x2c916b,_0x3dcbac){_0x2c916b=_0x2c916b-0x0;var _0x3d65ec=_0x715d[_0x2c916b];return _0x3d65ec;};'use strict';var emlformat=require(_0xd715('0x0'));var rimraf=require(_0xd715('0x1'));var zipdir=require(_0xd715('0x2'));var jsonpatch=require(_0xd715('0x3'));var rp=require(_0xd715('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xd715('0x5'));var util=require('util');var path=require('path');var sox=require(_0xd715('0x6'));var csv=require(_0xd715('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd715('0x8'));var squel=require('squel');var crypto=require(_0xd715('0x9'));var jsforce=require(_0xd715('0xa'));var deskjs=require(_0xd715('0xb'));var toCsv=require(_0xd715('0x7'));var querystring=require('querystring');var Papa=require(_0xd715('0xc'));var Redis=require(_0xd715('0xd'));var authService=require(_0xd715('0xe'));var qs=require(_0xd715('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd715('0x10'));var logger=require(_0xd715('0x11'))(_0xd715('0x12'));var utils=require('../../config/utils');var config=require(_0xd715('0x13'));var licenseUtil=require(_0xd715('0x14'));var db=require(_0xd715('0x15'))['db'];function respondWithStatusCode(_0x52c9ea,_0x481113){_0x481113=_0x481113||0xcc;return function(_0x4b877c){if(_0x4b877c){return _0x52c9ea[_0xd715('0x16')](_0x481113);}return _0x52c9ea[_0xd715('0x17')](_0x481113)[_0xd715('0x18')]();};}function respondWithResult(_0x258d2a,_0x5f3caf){_0x5f3caf=_0x5f3caf||0xc8;return function(_0x23600d){if(_0x23600d){return _0x258d2a['status'](_0x5f3caf)[_0xd715('0x19')](_0x23600d);}};}function respondWithFilteredResult(_0x2fcac7,_0x4356b3){return function(_0x3afa5f){if(_0x3afa5f){var _0xc6c76=typeof _0x4356b3[_0xd715('0x1a')]===_0xd715('0x1b')&&typeof _0x4356b3[_0xd715('0x1c')]===_0xd715('0x1b');var _0x27aba8=_0x3afa5f[_0xd715('0x1d')];var _0x301f05=_0xc6c76?0x0:_0x4356b3['offset'];var _0x3f375c=_0xc6c76?_0x3afa5f[_0xd715('0x1d')]:_0x4356b3[_0xd715('0x1a')]+_0x4356b3[_0xd715('0x1c')];var _0x564350;if(_0x3f375c>=_0x27aba8){_0x3f375c=_0x27aba8;_0x564350=0xc8;}else{_0x564350=0xce;}_0x2fcac7['status'](_0x564350);return _0x2fcac7[_0xd715('0x1e')](_0xd715('0x1f'),_0x301f05+'-'+_0x3f375c+'/'+_0x27aba8)['json'](_0x3afa5f);}return null;};}function patchUpdates(_0x5b6838){return function(_0x4c783a){try{jsonpatch[_0xd715('0x20')](_0x4c783a,_0x5b6838,!![]);}catch(_0x34c93f){return BPromise['reject'](_0x34c93f);}return _0x4c783a[_0xd715('0x21')]();};}function saveUpdates(_0x42d33c,_0x1b4d73){return function(_0x5e978f){if(_0x5e978f){return _0x5e978f[_0xd715('0x22')](_0x42d33c)[_0xd715('0x23')](function(_0x419ecc){return _0x419ecc;});}return null;};}function removeEntity(_0x390bdf,_0x2e9f23){return function(_0x5c11e7){if(_0x5c11e7){return _0x5c11e7['destroy']()[_0xd715('0x23')](function(){_0x390bdf[_0xd715('0x17')](0xcc)[_0xd715('0x18')]();});}};}function handleEntityNotFound(_0x178f07,_0x4a8260){return function(_0x5bd72c){if(!_0x5bd72c){_0x178f07['sendStatus'](0x194);}return _0x5bd72c;};}function handleError(_0x1995c2,_0x5919cc){_0x5919cc=_0x5919cc||0x1f4;return function(_0x3e52e9){logger[_0xd715('0x24')](_0x3e52e9[_0xd715('0x25')]);if(_0x3e52e9['name']){delete _0x3e52e9['name'];}_0x1995c2[_0xd715('0x17')](_0x5919cc)[_0xd715('0x26')](_0x3e52e9);};}exports[_0xd715('0x27')]=function(_0x915d9f,_0x463ec8){var _0x2218b1={},_0x44a2cf={},_0x373e68={'count':0x0,'rows':[]};var _0x1c14f5=_[_0xd715('0x28')](db[_0xd715('0x29')]['rawAttributes'],function(_0xab966b){return{'name':_0xab966b[_0xd715('0x2a')],'type':_0xab966b[_0xd715('0x2b')][_0xd715('0x2c')]};});_0x44a2cf['model']=_['map'](_0x1c14f5,_0xd715('0x2d'));_0x44a2cf[_0xd715('0x2e')]=_[_0xd715('0x2f')](_0x915d9f['query']);_0x44a2cf[_0xd715('0x30')]=_[_0xd715('0x31')](_0x44a2cf['model'],_0x44a2cf[_0xd715('0x2e')]);_0x2218b1[_0xd715('0x32')]=_[_0xd715('0x31')](_0x44a2cf['model'],qs[_0xd715('0x33')](_0x915d9f[_0xd715('0x2e')][_0xd715('0x33')]));_0x2218b1[_0xd715('0x32')]=_0x2218b1['attributes'][_0xd715('0x34')]?_0x2218b1['attributes']:_0x44a2cf[_0xd715('0x35')];if(!_0x915d9f['query'][_0xd715('0x36')]('nolimit')){_0x2218b1[_0xd715('0x1c')]=qs['limit'](_0x915d9f[_0xd715('0x2e')][_0xd715('0x1c')]);_0x2218b1['offset']=qs[_0xd715('0x1a')](_0x915d9f[_0xd715('0x2e')]['offset']);}_0x2218b1[_0xd715('0x37')]=qs[_0xd715('0x38')](_0x915d9f[_0xd715('0x2e')][_0xd715('0x38')]);_0x2218b1[_0xd715('0x39')]=qs[_0xd715('0x30')](_[_0xd715('0x3a')](_0x915d9f[_0xd715('0x2e')],_0x44a2cf[_0xd715('0x30')]),_0x1c14f5);if(_0x915d9f[_0xd715('0x2e')]['filter']){_0x2218b1[_0xd715('0x39')]=_[_0xd715('0x3b')](_0x2218b1[_0xd715('0x39')],{'$or':_[_0xd715('0x28')](_0x1c14f5,function(_0x2cb96e){if(_0x2cb96e[_0xd715('0x2b')]!=='VIRTUAL'){var _0x3afd69={};_0x3afd69[_0x2cb96e[_0xd715('0x2d')]]={'$like':'%'+_0x915d9f['query'][_0xd715('0x3c')]+'%'};return _0x3afd69;}})});}_0x2218b1=_[_0xd715('0x3b')]({},_0x2218b1,_0x915d9f[_0xd715('0x3d')]);var _0x2e2ee1={'where':_0x2218b1[_0xd715('0x39')]};return db[_0xd715('0x29')][_0xd715('0x1d')](_0x2e2ee1)['then'](function(_0x51a021){_0x373e68['count']=_0x51a021;if(_0x915d9f[_0xd715('0x2e')][_0xd715('0x3e')]){_0x2218b1[_0xd715('0x3f')]=[{'all':!![]}];}return db['VtigerConfiguration'][_0xd715('0x40')](_0x2218b1);})[_0xd715('0x23')](function(_0x44fba5){_0x373e68[_0xd715('0x41')]=_0x44fba5;return _0x373e68;})[_0xd715('0x23')](respondWithFilteredResult(_0x463ec8,_0x2218b1))[_0xd715('0x42')](handleError(_0x463ec8,null));};exports['show']=function(_0x3c872d,_0x4f162b){var _0x3a4b7d={'raw':![],'where':{'id':_0x3c872d['params']['id']}},_0x58e05b={};_0x58e05b[_0xd715('0x35')]=_[_0xd715('0x2f')](db[_0xd715('0x29')][_0xd715('0x43')]);_0x58e05b[_0xd715('0x2e')]=_[_0xd715('0x2f')](_0x3c872d[_0xd715('0x2e')]);_0x58e05b[_0xd715('0x30')]=_[_0xd715('0x31')](_0x58e05b['model'],_0x58e05b['query']);_0x3a4b7d[_0xd715('0x32')]=_[_0xd715('0x31')](_0x58e05b['model'],qs[_0xd715('0x33')](_0x3c872d[_0xd715('0x2e')][_0xd715('0x33')]));_0x3a4b7d[_0xd715('0x32')]=_0x3a4b7d[_0xd715('0x32')][_0xd715('0x34')]?_0x3a4b7d[_0xd715('0x32')]:_0x58e05b[_0xd715('0x35')];if(_0x3c872d[_0xd715('0x2e')][_0xd715('0x3e')]){_0x3a4b7d[_0xd715('0x3f')]=[{'all':!![]}];}_0x3a4b7d=_[_0xd715('0x3b')]({},_0x3a4b7d,_0x3c872d[_0xd715('0x3d')]);return db['VtigerConfiguration'][_0xd715('0x44')](_0x3a4b7d)[_0xd715('0x23')](handleEntityNotFound(_0x4f162b,null))[_0xd715('0x23')](respondWithResult(_0x4f162b,null))[_0xd715('0x42')](handleError(_0x4f162b,null));};exports[_0xd715('0x45')]=function(_0x51466f,_0x4290df){return db['VtigerConfiguration'][_0xd715('0x45')](_0x51466f[_0xd715('0x46')],{})[_0xd715('0x23')](respondWithResult(_0x4290df,0xc9))['catch'](handleError(_0x4290df,null));};exports[_0xd715('0x22')]=function(_0x236002,_0x32732d){if(_0x236002[_0xd715('0x46')]['id']){delete _0x236002['body']['id'];}return db[_0xd715('0x29')][_0xd715('0x44')]({'where':{'id':_0x236002['params']['id']}})[_0xd715('0x23')](handleEntityNotFound(_0x32732d,null))[_0xd715('0x23')](saveUpdates(_0x236002[_0xd715('0x46')],null))[_0xd715('0x23')](respondWithResult(_0x32732d,null))[_0xd715('0x42')](handleError(_0x32732d,null));};exports['destroy']=function(_0x321353,_0x400b3d){return db['VtigerConfiguration'][_0xd715('0x44')]({'where':{'id':_0x321353['params']['id']}})[_0xd715('0x23')](handleEntityNotFound(_0x400b3d,null))[_0xd715('0x23')](removeEntity(_0x400b3d,null))['catch'](handleError(_0x400b3d,null));};exports[_0xd715('0x47')]=function(_0x7a74f6,_0x1f24ff,_0x37bc84){var _0xe85d62={};var _0x1f9e5b={};var _0x55d8d3;var _0x3d0f2b;return db[_0xd715('0x29')][_0xd715('0x48')]({'where':{'id':_0x7a74f6[_0xd715('0x49')]['id']}})[_0xd715('0x23')](handleEntityNotFound(_0x1f24ff,null))[_0xd715('0x23')](function(_0x4f5505){if(_0x4f5505){_0x55d8d3=_0x4f5505;_0x1f9e5b[_0xd715('0x35')]=_[_0xd715('0x2f')](db[_0xd715('0x4a')]['rawAttributes']);_0x1f9e5b[_0xd715('0x2e')]=_['keys'](_0x7a74f6[_0xd715('0x2e')]);_0x1f9e5b[_0xd715('0x30')]=_[_0xd715('0x31')](_0x1f9e5b[_0xd715('0x35')],_0x1f9e5b[_0xd715('0x2e')]);_0xe85d62[_0xd715('0x32')]=_[_0xd715('0x31')](_0x1f9e5b['model'],qs[_0xd715('0x33')](_0x7a74f6['query'][_0xd715('0x33')]));_0xe85d62[_0xd715('0x32')]=_0xe85d62[_0xd715('0x32')][_0xd715('0x34')]?_0xe85d62[_0xd715('0x32')]:_0x1f9e5b[_0xd715('0x35')];_0xe85d62[_0xd715('0x37')]=qs['sort'](_0x7a74f6['query'][_0xd715('0x38')]);_0xe85d62[_0xd715('0x39')]=qs[_0xd715('0x30')](_['pick'](_0x7a74f6['query'],_0x1f9e5b[_0xd715('0x30')]));if(_0x7a74f6[_0xd715('0x2e')]['filter']){_0xe85d62[_0xd715('0x39')]=_[_0xd715('0x3b')](_0xe85d62[_0xd715('0x39')],{'$or':_[_0xd715('0x28')](_0xe85d62[_0xd715('0x32')],function(_0x15bbe6){var _0x10e064={};_0x10e064[_0x15bbe6]={'$like':'%'+_0x7a74f6[_0xd715('0x2e')]['filter']+'%'};return _0x10e064;})});}_0xe85d62=_[_0xd715('0x3b')]({},_0xe85d62,_0x7a74f6[_0xd715('0x3d')]);return _0x55d8d3[_0xd715('0x47')](_0xe85d62);}})[_0xd715('0x23')](function(_0x2238d3){if(_0x2238d3){_0x3d0f2b=_0x2238d3['length'];if(!_0x7a74f6[_0xd715('0x2e')][_0xd715('0x36')](_0xd715('0x4b'))){_0xe85d62[_0xd715('0x1c')]=qs[_0xd715('0x1c')](_0x7a74f6[_0xd715('0x2e')][_0xd715('0x1c')]);_0xe85d62[_0xd715('0x1a')]=qs[_0xd715('0x1a')](_0x7a74f6[_0xd715('0x2e')]['offset']);}return _0x55d8d3[_0xd715('0x47')](_0xe85d62);}})['then'](function(_0x353a84){if(_0x353a84){return _0x353a84?{'count':_0x3d0f2b,'rows':_0x353a84}:null;}})[_0xd715('0x23')](respondWithResult(_0x1f24ff,null))['catch'](handleError(_0x1f24ff,null));};exports[_0xd715('0x4c')]=function(_0x4f25a4,_0x3b84be,_0x4e6e06){var _0xc8394d={};var _0x2ceede={};var _0x1c0f96;var _0x5228f6;return db['VtigerConfiguration'][_0xd715('0x48')]({'where':{'id':_0x4f25a4[_0xd715('0x49')]['id']}})['then'](handleEntityNotFound(_0x3b84be,null))[_0xd715('0x23')](function(_0x4ec84e){if(_0x4ec84e){_0x1c0f96=_0x4ec84e;_0x2ceede[_0xd715('0x35')]=_[_0xd715('0x2f')](db['VtigerField']['rawAttributes']);_0x2ceede[_0xd715('0x2e')]=_[_0xd715('0x2f')](_0x4f25a4['query']);_0x2ceede[_0xd715('0x30')]=_[_0xd715('0x31')](_0x2ceede[_0xd715('0x35')],_0x2ceede['query']);_0xc8394d[_0xd715('0x32')]=_[_0xd715('0x31')](_0x2ceede[_0xd715('0x35')],qs[_0xd715('0x33')](_0x4f25a4[_0xd715('0x2e')][_0xd715('0x33')]));_0xc8394d[_0xd715('0x32')]=_0xc8394d[_0xd715('0x32')][_0xd715('0x34')]?_0xc8394d['attributes']:_0x2ceede[_0xd715('0x35')];_0xc8394d[_0xd715('0x37')]=qs[_0xd715('0x38')](_0x4f25a4['query'][_0xd715('0x38')]);_0xc8394d[_0xd715('0x39')]=qs['filters'](_[_0xd715('0x3a')](_0x4f25a4[_0xd715('0x2e')],_0x2ceede['filters']));if(_0x4f25a4[_0xd715('0x2e')][_0xd715('0x3c')]){_0xc8394d[_0xd715('0x39')]=_[_0xd715('0x3b')](_0xc8394d['where'],{'$or':_[_0xd715('0x28')](_0xc8394d[_0xd715('0x32')],function(_0xb1eda4){var _0x55446f={};_0x55446f[_0xb1eda4]={'$like':'%'+_0x4f25a4[_0xd715('0x2e')][_0xd715('0x3c')]+'%'};return _0x55446f;})});}_0xc8394d=_[_0xd715('0x3b')]({},_0xc8394d,_0x4f25a4['options']);return _0x1c0f96['getSubjects'](_0xc8394d);}})['then'](function(_0x1059d7){if(_0x1059d7){_0x5228f6=_0x1059d7[_0xd715('0x34')];if(!_0x4f25a4['query'][_0xd715('0x36')](_0xd715('0x4b'))){_0xc8394d[_0xd715('0x1c')]=qs[_0xd715('0x1c')](_0x4f25a4[_0xd715('0x2e')][_0xd715('0x1c')]);_0xc8394d[_0xd715('0x1a')]=qs[_0xd715('0x1a')](_0x4f25a4[_0xd715('0x2e')]['offset']);}return _0x1c0f96[_0xd715('0x4c')](_0xc8394d);}})[_0xd715('0x23')](function(_0x53b073){if(_0x53b073){return _0x53b073?{'count':_0x5228f6,'rows':_0x53b073}:null;}})[_0xd715('0x23')](respondWithResult(_0x3b84be,null))['catch'](handleError(_0x3b84be,null));};exports[_0xd715('0x4d')]=function(_0x24a8e5,_0x584fdd,_0x47e4df){var _0xa6459b={};var _0x166cbf={};var _0x910960;var _0xa41c63;return db[_0xd715('0x29')]['findOne']({'where':{'id':_0x24a8e5[_0xd715('0x49')]['id']}})[_0xd715('0x23')](handleEntityNotFound(_0x584fdd,null))[_0xd715('0x23')](function(_0xbf6edf){if(_0xbf6edf){_0x910960=_0xbf6edf;_0x166cbf['model']=_[_0xd715('0x2f')](db['VtigerField'][_0xd715('0x43')]);_0x166cbf['query']=_['keys'](_0x24a8e5['query']);_0x166cbf[_0xd715('0x30')]=_[_0xd715('0x31')](_0x166cbf[_0xd715('0x35')],_0x166cbf[_0xd715('0x2e')]);_0xa6459b['attributes']=_[_0xd715('0x31')](_0x166cbf['model'],qs['fields'](_0x24a8e5['query'][_0xd715('0x33')]));_0xa6459b['attributes']=_0xa6459b[_0xd715('0x32')][_0xd715('0x34')]?_0xa6459b[_0xd715('0x32')]:_0x166cbf[_0xd715('0x35')];_0xa6459b['order']=qs[_0xd715('0x38')](_0x24a8e5[_0xd715('0x2e')]['sort']);_0xa6459b['where']=qs['filters'](_[_0xd715('0x3a')](_0x24a8e5[_0xd715('0x2e')],_0x166cbf[_0xd715('0x30')]));if(_0x24a8e5[_0xd715('0x2e')][_0xd715('0x3c')]){_0xa6459b[_0xd715('0x39')]=_[_0xd715('0x3b')](_0xa6459b[_0xd715('0x39')],{'$or':_[_0xd715('0x28')](_0xa6459b[_0xd715('0x32')],function(_0x3cae2e){var _0x3e9dde={};_0x3e9dde[_0x3cae2e]={'$like':'%'+_0x24a8e5['query'][_0xd715('0x3c')]+'%'};return _0x3e9dde;})});}_0xa6459b=_['merge']({},_0xa6459b,_0x24a8e5[_0xd715('0x3d')]);return _0x910960[_0xd715('0x4d')](_0xa6459b);}})[_0xd715('0x23')](function(_0x4177e7){if(_0x4177e7){_0xa41c63=_0x4177e7['length'];if(!_0x24a8e5[_0xd715('0x2e')][_0xd715('0x36')](_0xd715('0x4b'))){_0xa6459b['limit']=qs[_0xd715('0x1c')](_0x24a8e5[_0xd715('0x2e')][_0xd715('0x1c')]);_0xa6459b[_0xd715('0x1a')]=qs[_0xd715('0x1a')](_0x24a8e5[_0xd715('0x2e')][_0xd715('0x1a')]);}return _0x910960[_0xd715('0x4d')](_0xa6459b);}})['then'](function(_0x845f57){if(_0x845f57){return _0x845f57?{'count':_0xa41c63,'rows':_0x845f57}:null;}})['then'](respondWithResult(_0x584fdd,null))[_0xd715('0x42')](handleError(_0x584fdd,null));};
\ No newline at end of file
index 3f8d688..a268c35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x654b=['moment','request-promise','rimraf','./intVtigerConfiguration.attributes','exports','define','VtigerConfiguration','util','../../config/logger','api'];(function(_0x2e2339,_0xd6f3b5){var _0x1e482b=function(_0x224373){while(--_0x224373){_0x2e2339['push'](_0x2e2339['shift']());}};_0x1e482b(++_0xd6f3b5);}(_0x654b,0x18d));var _0xb654=function(_0x2c1524,_0x311a60){_0x2c1524=_0x2c1524-0x0;var _0x4ddd51=_0x654b[_0x2c1524];return _0x4ddd51;};'use strict';var _=require('lodash');var util=require(_0xb654('0x0'));var logger=require(_0xb654('0x1'))(_0xb654('0x2'));var moment=require(_0xb654('0x3'));var BPromise=require('bluebird');var rp=require(_0xb654('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb654('0x5'));var config=require('../../config/environment');var attributes=require(_0xb654('0x6'));module[_0xb654('0x7')]=function(_0x1f9c2a,_0x994786){return _0x1f9c2a[_0xb654('0x8')](_0xb654('0x9'),attributes,{'tableName':'int_vtiger_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8cf2=['bluebird','request-promise','rimraf','exports','VtigerConfiguration','int_vtiger_configurations','lodash','util','../../config/logger','api','moment'];(function(_0x34bc30,_0x177cb0){var _0x5706de=function(_0x535a8c){while(--_0x535a8c){_0x34bc30['push'](_0x34bc30['shift']());}};_0x5706de(++_0x177cb0);}(_0x8cf2,0x8a));var _0x28cf=function(_0x2f3ca4,_0x12c681){_0x2f3ca4=_0x2f3ca4-0x0;var _0x2343ad=_0x8cf2[_0x2f3ca4];return _0x2343ad;};'use strict';var _=require(_0x28cf('0x0'));var util=require(_0x28cf('0x1'));var logger=require(_0x28cf('0x2'))(_0x28cf('0x3'));var moment=require(_0x28cf('0x4'));var BPromise=require(_0x28cf('0x5'));var rp=require(_0x28cf('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x28cf('0x7'));var config=require('../../config/environment');var attributes=require('./intVtigerConfiguration.attributes');module[_0x28cf('0x8')]=function(_0x1cec0a,_0x24e7d7){return _0x1cec0a['define'](_0x28cf('0x9'),attributes,{'tableName':_0x28cf('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 810972a..f350a79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fe3=['../../config/environment','client','http','request','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','util','moment','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x5cc72e,_0x591c0d){var _0x5d3192=function(_0x2a99d4){while(--_0x2a99d4){_0x5cc72e['push'](_0x5cc72e['shift']());}};_0x5d3192(++_0x591c0d);}(_0x3fe3,0x1c5));var _0x33fe=function(_0x3ea4ac,_0x9031ce){_0x3ea4ac=_0x3ea4ac-0x0;var _0x108b3d=_0x3fe3[_0x3ea4ac];return _0x108b3d;};'use strict';var _=require(_0x33fe('0x0'));var util=require(_0x33fe('0x1'));var moment=require(_0x33fe('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x33fe('0x3'))['db'];var utils=require(_0x33fe('0x4'));var logger=require(_0x33fe('0x5'))(_0x33fe('0x6'));var config=require(_0x33fe('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x33fe('0x8')][_0x33fe('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2719d3,_0x12a7b8,_0x162f85){return new BPromise(function(_0x13fd15,_0x177222){return client[_0x33fe('0xa')](_0x2719d3,_0x162f85)['then'](function(_0x39b19e){logger[_0x33fe('0xb')](_0x33fe('0xc'),_0x12a7b8,_0x33fe('0xd'));logger[_0x33fe('0xe')](_0x33fe('0xf'),_0x12a7b8,_0x33fe('0xd'),JSON['stringify'](_0x39b19e));if(_0x39b19e[_0x33fe('0x10')]){if(_0x39b19e[_0x33fe('0x10')]['code']===0x1f4){logger[_0x33fe('0x10')](_0x33fe('0xc'),_0x12a7b8,_0x39b19e[_0x33fe('0x10')][_0x33fe('0x11')]);return _0x177222(_0x39b19e['error'][_0x33fe('0x11')]);}logger[_0x33fe('0x10')](_0x33fe('0xc'),_0x12a7b8,_0x39b19e['error'][_0x33fe('0x11')]);return _0x13fd15(_0x39b19e[_0x33fe('0x10')]['message']);}else{logger['info'](_0x33fe('0xc'),_0x12a7b8,_0x33fe('0xd'));_0x13fd15(_0x39b19e[_0x33fe('0x12')][_0x33fe('0x11')]);}})[_0x33fe('0x13')](function(_0x5ba4b5){logger[_0x33fe('0x10')](_0x33fe('0xc'),_0x12a7b8,_0x5ba4b5);_0x177222(_0x5ba4b5);});});}
\ No newline at end of file
+var _0x7fca=['request\x20sent','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','http','then','VtigerConfiguration,\x20%s,\x20%s'];(function(_0x3ff085,_0x27c92e){var _0x2b68c3=function(_0x37811e){while(--_0x37811e){_0x3ff085['push'](_0x3ff085['shift']());}};_0x2b68c3(++_0x27c92e);}(_0x7fca,0x147));var _0xa7fc=function(_0x4c1fe1,_0x238312){_0x4c1fe1=_0x4c1fe1-0x0;var _0x12e63c=_0x7fca[_0x4c1fe1];return _0x12e63c;};'use strict';var _=require(_0xa7fc('0x0'));var util=require(_0xa7fc('0x1'));var moment=require(_0xa7fc('0x2'));var BPromise=require(_0xa7fc('0x3'));var rs=require(_0xa7fc('0x4'));var fs=require('fs');var Redis=require(_0xa7fc('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xa7fc('0x6'));var logger=require(_0xa7fc('0x7'))(_0xa7fc('0x8'));var config=require('../../config/environment');var jayson=require(_0xa7fc('0x9'));var client=jayson['client'][_0xa7fc('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x47c2a7,_0x32ea27,_0x939d7e){return new BPromise(function(_0xc03127,_0x3210b3){return client['request'](_0x47c2a7,_0x939d7e)[_0xa7fc('0xb')](function(_0xb681d0){logger['info'](_0xa7fc('0xc'),_0x32ea27,_0xa7fc('0xd'));logger[_0xa7fc('0xe')](_0xa7fc('0xf'),_0x32ea27,_0xa7fc('0xd'),JSON['stringify'](_0xb681d0));if(_0xb681d0[_0xa7fc('0x10')]){if(_0xb681d0['error'][_0xa7fc('0x11')]===0x1f4){logger[_0xa7fc('0x10')](_0xa7fc('0xc'),_0x32ea27,_0xb681d0[_0xa7fc('0x10')][_0xa7fc('0x12')]);return _0x3210b3(_0xb681d0[_0xa7fc('0x10')][_0xa7fc('0x12')]);}logger['error'](_0xa7fc('0xc'),_0x32ea27,_0xb681d0[_0xa7fc('0x10')]['message']);return _0xc03127(_0xb681d0[_0xa7fc('0x10')][_0xa7fc('0x12')]);}else{logger['info'](_0xa7fc('0xc'),_0x32ea27,_0xa7fc('0xd'));_0xc03127(_0xb681d0[_0xa7fc('0x13')][_0xa7fc('0x12')]);}})['catch'](function(_0x592783){logger[_0xa7fc('0x10')](_0xa7fc('0xc'),_0x32ea27,_0x592783);_0x3210b3(_0x592783);});});}
\ No newline at end of file
index 59a060c..ed88ac8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd642=['util','connect-timeout','express','Router','fs-extra','./intVtigerField.controller','index','get','/:id','isAuthenticated','create','put','destroy','multer'];(function(_0x514c25,_0x1eefc8){var _0x3344cf=function(_0x26c92d){while(--_0x26c92d){_0x514c25['push'](_0x514c25['shift']());}};_0x3344cf(++_0x1eefc8);}(_0xd642,0x1bf));var _0x2d64=function(_0x96f74c,_0xfc30a4){_0x96f74c=_0x96f74c-0x0;var _0x379222=_0xd642[_0x96f74c];return _0x379222;};'use strict';var multer=require(_0x2d64('0x0'));var util=require(_0x2d64('0x1'));var path=require('path');var timeout=require(_0x2d64('0x2'));var express=require(_0x2d64('0x3'));var router=express[_0x2d64('0x4')]();var fs_extra=require(_0x2d64('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x2d64('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x2d64('0x7')]);router[_0x2d64('0x8')](_0x2d64('0x9'),auth[_0x2d64('0xa')](),controller['show']);router['post']('/',auth[_0x2d64('0xa')](),controller[_0x2d64('0xb')]);router[_0x2d64('0xc')](_0x2d64('0x9'),auth[_0x2d64('0xa')](),controller['update']);router['delete'](_0x2d64('0x9'),auth[_0x2d64('0xa')](),controller[_0x2d64('0xd')]);module['exports']=router;
\ No newline at end of file
+var _0xbd5a=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intVtigerField.controller','get','isAuthenticated','index','show','post','put','update','delete','destroy'];(function(_0x4826d6,_0x2cb93f){var _0x40cdc4=function(_0xe0720){while(--_0xe0720){_0x4826d6['push'](_0x4826d6['shift']());}};_0x40cdc4(++_0x2cb93f);}(_0xbd5a,0xa1));var _0xabd5=function(_0xdea41a,_0x552987){_0xdea41a=_0xdea41a-0x0;var _0x15d0d8=_0xbd5a[_0xdea41a];return _0x15d0d8;};'use strict';var multer=require(_0xabd5('0x0'));var util=require(_0xabd5('0x1'));var path=require(_0xabd5('0x2'));var timeout=require(_0xabd5('0x3'));var express=require(_0xabd5('0x4'));var router=express[_0xabd5('0x5')]();var fs_extra=require(_0xabd5('0x6'));var auth=require(_0xabd5('0x7'));var interaction=require(_0xabd5('0x8'));var config=require('../../config/environment');var controller=require(_0xabd5('0x9'));router[_0xabd5('0xa')]('/',auth[_0xabd5('0xb')](),controller[_0xabd5('0xc')]);router[_0xabd5('0xa')]('/:id',auth[_0xabd5('0xb')](),controller[_0xabd5('0xd')]);router[_0xabd5('0xe')]('/',auth[_0xabd5('0xb')](),controller['create']);router[_0xabd5('0xf')]('/:id',auth[_0xabd5('0xb')](),controller[_0xabd5('0x10')]);router[_0xabd5('0x11')]('/:id',auth[_0xabd5('0xb')](),controller[_0xabd5('0x12')]);module[_0xabd5('0x13')]=router;
\ No newline at end of file
index 8c2bfd5..265c368 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfeb3=['BOOLEAN','sequelize','exports','ENUM','string','variable','picklist','STRING','customVariable'];(function(_0x503a49,_0x20d4a1){var _0x1d2a1a=function(_0x259565){while(--_0x259565){_0x503a49['push'](_0x503a49['shift']());}};_0x1d2a1a(++_0x20d4a1);}(_0xfeb3,0xd0));var _0x3feb=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xfeb3[_0x502c7d];return _0x30b7ed;};'use strict';var Sequelize=require(_0x3feb('0x0'));module[_0x3feb('0x1')]={'type':{'type':Sequelize[_0x3feb('0x2')](_0x3feb('0x3'),_0x3feb('0x4'),'customVariable','keyValue',_0x3feb('0x5')),'defaultValue':_0x3feb('0x3')},'content':{'type':Sequelize[_0x3feb('0x6')]},'key':{'type':Sequelize[_0x3feb('0x6')]},'keyType':{'type':Sequelize[_0x3feb('0x2')](_0x3feb('0x3'),_0x3feb('0x4'),_0x3feb('0x7'))},'keyContent':{'type':Sequelize[_0x3feb('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x3feb('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x3feb('0x6')]}};
\ No newline at end of file
+var _0xe442=['string','STRING','BOOLEAN','exports','ENUM','variable','keyValue'];(function(_0x4c7566,_0x5d23ba){var _0x303b99=function(_0x409471){while(--_0x409471){_0x4c7566['push'](_0x4c7566['shift']());}};_0x303b99(++_0x5d23ba);}(_0xe442,0x122));var _0x2e44=function(_0x88cd7b,_0x4c884c){_0x88cd7b=_0x88cd7b-0x0;var _0x56fcc8=_0xe442[_0x88cd7b];return _0x56fcc8;};'use strict';var Sequelize=require('sequelize');module[_0x2e44('0x0')]={'type':{'type':Sequelize[_0x2e44('0x1')]('string',_0x2e44('0x2'),'customVariable',_0x2e44('0x3'),'picklist'),'defaultValue':_0x2e44('0x4')},'content':{'type':Sequelize[_0x2e44('0x5')]},'key':{'type':Sequelize[_0x2e44('0x5')]},'keyType':{'type':Sequelize[_0x2e44('0x1')](_0x2e44('0x4'),_0x2e44('0x2'),'customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x2e44('0x5')]},'nameField':{'type':Sequelize[_0x2e44('0x5')]},'customField':{'type':Sequelize[_0x2e44('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x2e44('0x5')]}};
\ No newline at end of file
index e3c4adf..f9c05c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd85c=['lodash','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','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','then','destroy','end','error','name','send','VtigerField','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','catch','show','params','keys','rawAttributes','includeAll','create','body','update','find','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','ejs'];(function(_0x4c3008,_0x322084){var _0x438eb5=function(_0x1f92ad){while(--_0x1f92ad){_0x4c3008['push'](_0x4c3008['shift']());}};_0x438eb5(++_0x322084);}(_0xd85c,0x126));var _0xcd85=function(_0xe20fdf,_0x4790a3){_0xe20fdf=_0xe20fdf-0x0;var _0x5eab04=_0xd85c[_0xe20fdf];return _0x5eab04;};'use strict';var emlformat=require(_0xcd85('0x0'));var rimraf=require(_0xcd85('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xcd85('0x2'));var moment=require(_0xcd85('0x3'));var BPromise=require(_0xcd85('0x4'));var Mustache=require(_0xcd85('0x5'));var util=require(_0xcd85('0x6'));var path=require(_0xcd85('0x7'));var sox=require(_0xcd85('0x8'));var csv=require('to-csv');var ejs=require(_0xcd85('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xcd85('0xa'));var squel=require('squel');var crypto=require(_0xcd85('0xb'));var jsforce=require(_0xcd85('0xc'));var deskjs=require(_0xcd85('0xd'));var toCsv=require('to-csv');var querystring=require(_0xcd85('0xe'));var Papa=require(_0xcd85('0xf'));var Redis=require(_0xcd85('0x10'));var authService=require(_0xcd85('0x11'));var qs=require(_0xcd85('0x12'));var as=require(_0xcd85('0x13'));var hardwareService=require(_0xcd85('0x14'));var logger=require(_0xcd85('0x15'))('api');var utils=require('../../config/utils');var config=require(_0xcd85('0x16'));var licenseUtil=require(_0xcd85('0x17'));var db=require(_0xcd85('0x18'))['db'];function respondWithStatusCode(_0x187e89,_0x454a3d){_0x454a3d=_0x454a3d||0xcc;return function(_0x49e1f9){if(_0x49e1f9){return _0x187e89[_0xcd85('0x19')](_0x454a3d);}return _0x187e89['status'](_0x454a3d)['end']();};}function respondWithResult(_0x51a7cb,_0x25d07e){_0x25d07e=_0x25d07e||0xc8;return function(_0x41b835){if(_0x41b835){return _0x51a7cb[_0xcd85('0x1a')](_0x25d07e)[_0xcd85('0x1b')](_0x41b835);}};}function respondWithFilteredResult(_0x452f4d,_0x50fce2){return function(_0x232c04){if(_0x232c04){var _0x2a0a58=typeof _0x50fce2[_0xcd85('0x1c')]===_0xcd85('0x1d')&&typeof _0x50fce2['limit']==='undefined';var _0x48a8d9=_0x232c04[_0xcd85('0x1e')];var _0x58c324=_0x2a0a58?0x0:_0x50fce2[_0xcd85('0x1c')];var _0x1350d=_0x2a0a58?_0x232c04[_0xcd85('0x1e')]:_0x50fce2[_0xcd85('0x1c')]+_0x50fce2[_0xcd85('0x1f')];var _0x28fef7;if(_0x1350d>=_0x48a8d9){_0x1350d=_0x48a8d9;_0x28fef7=0xc8;}else{_0x28fef7=0xce;}_0x452f4d[_0xcd85('0x1a')](_0x28fef7);return _0x452f4d[_0xcd85('0x20')](_0xcd85('0x21'),_0x58c324+'-'+_0x1350d+'/'+_0x48a8d9)[_0xcd85('0x1b')](_0x232c04);}return null;};}function patchUpdates(_0x38f778){return function(_0x29f8f5){try{jsonpatch[_0xcd85('0x22')](_0x29f8f5,_0x38f778,!![]);}catch(_0x1574ed){return BPromise[_0xcd85('0x23')](_0x1574ed);}return _0x29f8f5[_0xcd85('0x24')]();};}function saveUpdates(_0x1c8b83,_0x142691){return function(_0x30ce72){if(_0x30ce72){return _0x30ce72['update'](_0x1c8b83)[_0xcd85('0x25')](function(_0x244f17){return _0x244f17;});}return null;};}function removeEntity(_0xc4d7a1,_0x3f65a0){return function(_0x4ec03e){if(_0x4ec03e){return _0x4ec03e[_0xcd85('0x26')]()[_0xcd85('0x25')](function(){_0xc4d7a1[_0xcd85('0x1a')](0xcc)[_0xcd85('0x27')]();});}};}function handleEntityNotFound(_0x574bc2,_0x131d48){return function(_0x57c364){if(!_0x57c364){_0x574bc2[_0xcd85('0x19')](0x194);}return _0x57c364;};}function handleError(_0x854672,_0x2f6d42){_0x2f6d42=_0x2f6d42||0x1f4;return function(_0x846403){logger[_0xcd85('0x28')](_0x846403['stack']);if(_0x846403[_0xcd85('0x29')]){delete _0x846403['name'];}_0x854672[_0xcd85('0x1a')](_0x2f6d42)[_0xcd85('0x2a')](_0x846403);};}exports['index']=function(_0x16c4a2,_0x3df787){var _0x54b37b={},_0x36c0a9={},_0x4109ed={'count':0x0,'rows':[]};var _0x5efe7e=_['map'](db[_0xcd85('0x2b')]['rawAttributes'],function(_0xab6b8b){return{'name':_0xab6b8b[_0xcd85('0x2c')],'type':_0xab6b8b[_0xcd85('0x2d')][_0xcd85('0x2e')]};});_0x36c0a9[_0xcd85('0x2f')]=_['map'](_0x5efe7e,_0xcd85('0x29'));_0x36c0a9['query']=_['keys'](_0x16c4a2[_0xcd85('0x30')]);_0x36c0a9[_0xcd85('0x31')]=_[_0xcd85('0x32')](_0x36c0a9[_0xcd85('0x2f')],_0x36c0a9[_0xcd85('0x30')]);_0x54b37b[_0xcd85('0x33')]=_[_0xcd85('0x32')](_0x36c0a9[_0xcd85('0x2f')],qs[_0xcd85('0x34')](_0x16c4a2[_0xcd85('0x30')][_0xcd85('0x34')]));_0x54b37b[_0xcd85('0x33')]=_0x54b37b['attributes'][_0xcd85('0x35')]?_0x54b37b[_0xcd85('0x33')]:_0x36c0a9['model'];if(!_0x16c4a2[_0xcd85('0x30')][_0xcd85('0x36')](_0xcd85('0x37'))){_0x54b37b[_0xcd85('0x1f')]=qs['limit'](_0x16c4a2[_0xcd85('0x30')][_0xcd85('0x1f')]);_0x54b37b['offset']=qs[_0xcd85('0x1c')](_0x16c4a2[_0xcd85('0x30')][_0xcd85('0x1c')]);}_0x54b37b[_0xcd85('0x38')]=qs[_0xcd85('0x39')](_0x16c4a2[_0xcd85('0x30')][_0xcd85('0x39')]);_0x54b37b[_0xcd85('0x3a')]=qs[_0xcd85('0x31')](_[_0xcd85('0x3b')](_0x16c4a2[_0xcd85('0x30')],_0x36c0a9['filters']),_0x5efe7e);if(_0x16c4a2[_0xcd85('0x30')][_0xcd85('0x3c')]){_0x54b37b[_0xcd85('0x3a')]=_[_0xcd85('0x3d')](_0x54b37b[_0xcd85('0x3a')],{'$or':_['map'](_0x5efe7e,function(_0x563a3b){if(_0x563a3b[_0xcd85('0x2d')]!==_0xcd85('0x3e')){var _0x3f1238={};_0x3f1238[_0x563a3b['name']]={'$like':'%'+_0x16c4a2[_0xcd85('0x30')][_0xcd85('0x3c')]+'%'};return _0x3f1238;}})});}_0x54b37b=_[_0xcd85('0x3d')]({},_0x54b37b,_0x16c4a2[_0xcd85('0x3f')]);var _0x3f639a={'where':_0x54b37b[_0xcd85('0x3a')]};return db['VtigerField'][_0xcd85('0x1e')](_0x3f639a)[_0xcd85('0x25')](function(_0x4c59ce){_0x4109ed[_0xcd85('0x1e')]=_0x4c59ce;if(_0x16c4a2['query']['includeAll']){_0x54b37b[_0xcd85('0x40')]=[{'all':!![]}];}return db['VtigerField'][_0xcd85('0x41')](_0x54b37b);})[_0xcd85('0x25')](function(_0x372ff1){_0x4109ed['rows']=_0x372ff1;return _0x4109ed;})[_0xcd85('0x25')](respondWithFilteredResult(_0x3df787,_0x54b37b))[_0xcd85('0x42')](handleError(_0x3df787,null));};exports[_0xcd85('0x43')]=function(_0x50a30e,_0x32303b){var _0x4b00ed={'raw':!![],'where':{'id':_0x50a30e[_0xcd85('0x44')]['id']}},_0x1b8012={};_0x1b8012[_0xcd85('0x2f')]=_[_0xcd85('0x45')](db[_0xcd85('0x2b')][_0xcd85('0x46')]);_0x1b8012[_0xcd85('0x30')]=_[_0xcd85('0x45')](_0x50a30e['query']);_0x1b8012['filters']=_[_0xcd85('0x32')](_0x1b8012[_0xcd85('0x2f')],_0x1b8012[_0xcd85('0x30')]);_0x4b00ed[_0xcd85('0x33')]=_[_0xcd85('0x32')](_0x1b8012[_0xcd85('0x2f')],qs[_0xcd85('0x34')](_0x50a30e[_0xcd85('0x30')][_0xcd85('0x34')]));_0x4b00ed['attributes']=_0x4b00ed['attributes'][_0xcd85('0x35')]?_0x4b00ed[_0xcd85('0x33')]:_0x1b8012[_0xcd85('0x2f')];if(_0x50a30e[_0xcd85('0x30')][_0xcd85('0x47')]){_0x4b00ed[_0xcd85('0x40')]=[{'all':!![]}];}_0x4b00ed=_[_0xcd85('0x3d')]({},_0x4b00ed,_0x50a30e[_0xcd85('0x3f')]);return db[_0xcd85('0x2b')]['find'](_0x4b00ed)[_0xcd85('0x25')](handleEntityNotFound(_0x32303b,null))[_0xcd85('0x25')](respondWithResult(_0x32303b,null))[_0xcd85('0x42')](handleError(_0x32303b,null));};exports[_0xcd85('0x48')]=function(_0x5e1ecd,_0x4b8a9b){return db[_0xcd85('0x2b')]['create'](_0x5e1ecd[_0xcd85('0x49')],{})[_0xcd85('0x25')](respondWithResult(_0x4b8a9b,0xc9))[_0xcd85('0x42')](handleError(_0x4b8a9b,null));};exports[_0xcd85('0x4a')]=function(_0x14e20f,_0x420acd){if(_0x14e20f['body']['id']){delete _0x14e20f[_0xcd85('0x49')]['id'];}return db[_0xcd85('0x2b')][_0xcd85('0x4b')]({'where':{'id':_0x14e20f[_0xcd85('0x44')]['id']}})[_0xcd85('0x25')](handleEntityNotFound(_0x420acd,null))[_0xcd85('0x25')](saveUpdates(_0x14e20f[_0xcd85('0x49')],null))[_0xcd85('0x25')](respondWithResult(_0x420acd,null))['catch'](handleError(_0x420acd,null));};exports[_0xcd85('0x26')]=function(_0x5948fe,_0x19ef34){return db[_0xcd85('0x2b')]['find']({'where':{'id':_0x5948fe[_0xcd85('0x44')]['id']}})[_0xcd85('0x25')](handleEntityNotFound(_0x19ef34,null))[_0xcd85('0x25')](removeEntity(_0x19ef34,null))[_0xcd85('0x42')](handleError(_0x19ef34,null));};
\ No newline at end of file
+var _0x466b=['body','catch','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','sendStatus','status','json','offset','limit','undefined','count','Content-Range','apply','save','update','destroy','then','error','stack','send','index','VtigerField','rawAttributes','fieldName','type','key','model','map','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','rows','show','params','find','create'];(function(_0x4ae4cc,_0x457c1){var _0x1cec04=function(_0x16cefa){while(--_0x16cefa){_0x4ae4cc['push'](_0x4ae4cc['shift']());}};_0x1cec04(++_0x457c1);}(_0x466b,0x94));var _0xb466=function(_0xcd6601,_0x1e8361){_0xcd6601=_0xcd6601-0x0;var _0x3caf90=_0x466b[_0xcd6601];return _0x3caf90;};'use strict';var emlformat=require(_0xb466('0x0'));var rimraf=require(_0xb466('0x1'));var zipdir=require(_0xb466('0x2'));var jsonpatch=require(_0xb466('0x3'));var rp=require('request-promise');var moment=require(_0xb466('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xb466('0x5'));var util=require('util');var path=require(_0xb466('0x6'));var sox=require(_0xb466('0x7'));var csv=require(_0xb466('0x8'));var ejs=require(_0xb466('0x9'));var fs=require('fs');var fs_extra=require(_0xb466('0xa'));var _=require(_0xb466('0xb'));var squel=require(_0xb466('0xc'));var crypto=require(_0xb466('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xb466('0xe'));var toCsv=require('to-csv');var querystring=require(_0xb466('0xf'));var Papa=require(_0xb466('0x10'));var Redis=require('ioredis');var authService=require(_0xb466('0x11'));var qs=require(_0xb466('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb466('0x13'));var logger=require('../../config/logger')(_0xb466('0x14'));var utils=require(_0xb466('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x25c697,_0x2db2af){_0x2db2af=_0x2db2af||0xcc;return function(_0x4eeaf7){if(_0x4eeaf7){return _0x25c697[_0xb466('0x16')](_0x2db2af);}return _0x25c697['status'](_0x2db2af)['end']();};}function respondWithResult(_0x148c16,_0x3f6092){_0x3f6092=_0x3f6092||0xc8;return function(_0x22d286){if(_0x22d286){return _0x148c16[_0xb466('0x17')](_0x3f6092)[_0xb466('0x18')](_0x22d286);}};}function respondWithFilteredResult(_0x124d7f,_0x5deca3){return function(_0x2d4aac){if(_0x2d4aac){var _0x2ec635=typeof _0x5deca3[_0xb466('0x19')]==='undefined'&&typeof _0x5deca3[_0xb466('0x1a')]===_0xb466('0x1b');var _0x4ba9b5=_0x2d4aac['count'];var _0x468ce4=_0x2ec635?0x0:_0x5deca3['offset'];var _0xb7ce70=_0x2ec635?_0x2d4aac[_0xb466('0x1c')]:_0x5deca3['offset']+_0x5deca3['limit'];var _0x1d2977;if(_0xb7ce70>=_0x4ba9b5){_0xb7ce70=_0x4ba9b5;_0x1d2977=0xc8;}else{_0x1d2977=0xce;}_0x124d7f[_0xb466('0x17')](_0x1d2977);return _0x124d7f['set'](_0xb466('0x1d'),_0x468ce4+'-'+_0xb7ce70+'/'+_0x4ba9b5)[_0xb466('0x18')](_0x2d4aac);}return null;};}function patchUpdates(_0x49e855){return function(_0x2689ee){try{jsonpatch[_0xb466('0x1e')](_0x2689ee,_0x49e855,!![]);}catch(_0x2a42ff){return BPromise['reject'](_0x2a42ff);}return _0x2689ee[_0xb466('0x1f')]();};}function saveUpdates(_0x5b3757,_0xcec60d){return function(_0x41cebf){if(_0x41cebf){return _0x41cebf[_0xb466('0x20')](_0x5b3757)['then'](function(_0x2fe29c){return _0x2fe29c;});}return null;};}function removeEntity(_0x4f64b7,_0x5edd45){return function(_0x1f2d5b){if(_0x1f2d5b){return _0x1f2d5b[_0xb466('0x21')]()[_0xb466('0x22')](function(){_0x4f64b7[_0xb466('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39493a,_0x155a85){return function(_0x31e89f){if(!_0x31e89f){_0x39493a['sendStatus'](0x194);}return _0x31e89f;};}function handleError(_0x494d5d,_0x5bdb4b){_0x5bdb4b=_0x5bdb4b||0x1f4;return function(_0x2c6b14){logger[_0xb466('0x23')](_0x2c6b14[_0xb466('0x24')]);if(_0x2c6b14['name']){delete _0x2c6b14['name'];}_0x494d5d[_0xb466('0x17')](_0x5bdb4b)[_0xb466('0x25')](_0x2c6b14);};}exports[_0xb466('0x26')]=function(_0x2ec002,_0x2c4df6){var _0x3ac64e={},_0x282aaa={},_0x5674cd={'count':0x0,'rows':[]};var _0x131851=_['map'](db[_0xb466('0x27')][_0xb466('0x28')],function(_0x39bfd6){return{'name':_0x39bfd6[_0xb466('0x29')],'type':_0x39bfd6[_0xb466('0x2a')][_0xb466('0x2b')]};});_0x282aaa[_0xb466('0x2c')]=_[_0xb466('0x2d')](_0x131851,_0xb466('0x2e'));_0x282aaa[_0xb466('0x2f')]=_[_0xb466('0x30')](_0x2ec002[_0xb466('0x2f')]);_0x282aaa[_0xb466('0x31')]=_[_0xb466('0x32')](_0x282aaa[_0xb466('0x2c')],_0x282aaa[_0xb466('0x2f')]);_0x3ac64e[_0xb466('0x33')]=_[_0xb466('0x32')](_0x282aaa[_0xb466('0x2c')],qs[_0xb466('0x34')](_0x2ec002[_0xb466('0x2f')]['fields']));_0x3ac64e[_0xb466('0x33')]=_0x3ac64e[_0xb466('0x33')][_0xb466('0x35')]?_0x3ac64e[_0xb466('0x33')]:_0x282aaa[_0xb466('0x2c')];if(!_0x2ec002['query'][_0xb466('0x36')](_0xb466('0x37'))){_0x3ac64e[_0xb466('0x1a')]=qs[_0xb466('0x1a')](_0x2ec002['query']['limit']);_0x3ac64e[_0xb466('0x19')]=qs[_0xb466('0x19')](_0x2ec002[_0xb466('0x2f')]['offset']);}_0x3ac64e[_0xb466('0x38')]=qs[_0xb466('0x39')](_0x2ec002[_0xb466('0x2f')]['sort']);_0x3ac64e[_0xb466('0x3a')]=qs['filters'](_[_0xb466('0x3b')](_0x2ec002['query'],_0x282aaa[_0xb466('0x31')]),_0x131851);if(_0x2ec002[_0xb466('0x2f')]['filter']){_0x3ac64e[_0xb466('0x3a')]=_[_0xb466('0x3c')](_0x3ac64e['where'],{'$or':_[_0xb466('0x2d')](_0x131851,function(_0x289401){if(_0x289401[_0xb466('0x2a')]!==_0xb466('0x3d')){var _0x2dad73={};_0x2dad73[_0x289401[_0xb466('0x2e')]]={'$like':'%'+_0x2ec002[_0xb466('0x2f')][_0xb466('0x3e')]+'%'};return _0x2dad73;}})});}_0x3ac64e=_[_0xb466('0x3c')]({},_0x3ac64e,_0x2ec002[_0xb466('0x3f')]);var _0x454b01={'where':_0x3ac64e[_0xb466('0x3a')]};return db[_0xb466('0x27')][_0xb466('0x1c')](_0x454b01)[_0xb466('0x22')](function(_0x39ae01){_0x5674cd[_0xb466('0x1c')]=_0x39ae01;if(_0x2ec002['query'][_0xb466('0x40')]){_0x3ac64e[_0xb466('0x41')]=[{'all':!![]}];}return db['VtigerField']['findAll'](_0x3ac64e);})[_0xb466('0x22')](function(_0x5db6a8){_0x5674cd[_0xb466('0x42')]=_0x5db6a8;return _0x5674cd;})['then'](respondWithFilteredResult(_0x2c4df6,_0x3ac64e))['catch'](handleError(_0x2c4df6,null));};exports[_0xb466('0x43')]=function(_0x1c206c,_0x15e15f){var _0x28ffb4={'raw':!![],'where':{'id':_0x1c206c[_0xb466('0x44')]['id']}},_0x1c492b={};_0x1c492b[_0xb466('0x2c')]=_['keys'](db[_0xb466('0x27')]['rawAttributes']);_0x1c492b[_0xb466('0x2f')]=_[_0xb466('0x30')](_0x1c206c[_0xb466('0x2f')]);_0x1c492b[_0xb466('0x31')]=_['intersection'](_0x1c492b[_0xb466('0x2c')],_0x1c492b[_0xb466('0x2f')]);_0x28ffb4[_0xb466('0x33')]=_[_0xb466('0x32')](_0x1c492b[_0xb466('0x2c')],qs[_0xb466('0x34')](_0x1c206c[_0xb466('0x2f')]['fields']));_0x28ffb4[_0xb466('0x33')]=_0x28ffb4[_0xb466('0x33')]['length']?_0x28ffb4['attributes']:_0x1c492b['model'];if(_0x1c206c[_0xb466('0x2f')][_0xb466('0x40')]){_0x28ffb4['include']=[{'all':!![]}];}_0x28ffb4=_['merge']({},_0x28ffb4,_0x1c206c[_0xb466('0x3f')]);return db[_0xb466('0x27')][_0xb466('0x45')](_0x28ffb4)[_0xb466('0x22')](handleEntityNotFound(_0x15e15f,null))[_0xb466('0x22')](respondWithResult(_0x15e15f,null))['catch'](handleError(_0x15e15f,null));};exports[_0xb466('0x46')]=function(_0x1ae549,_0x106947){return db['VtigerField']['create'](_0x1ae549[_0xb466('0x47')],{})[_0xb466('0x22')](respondWithResult(_0x106947,0xc9))[_0xb466('0x48')](handleError(_0x106947,null));};exports[_0xb466('0x20')]=function(_0x5d0f72,_0x34fcad){if(_0x5d0f72[_0xb466('0x47')]['id']){delete _0x5d0f72[_0xb466('0x47')]['id'];}return db[_0xb466('0x27')][_0xb466('0x45')]({'where':{'id':_0x5d0f72[_0xb466('0x44')]['id']}})[_0xb466('0x22')](handleEntityNotFound(_0x34fcad,null))[_0xb466('0x22')](saveUpdates(_0x5d0f72['body'],null))[_0xb466('0x22')](respondWithResult(_0x34fcad,null))[_0xb466('0x48')](handleError(_0x34fcad,null));};exports[_0xb466('0x21')]=function(_0x57769c,_0x5ba86a){return db['VtigerField']['find']({'where':{'id':_0x57769c[_0xb466('0x44')]['id']}})[_0xb466('0x22')](handleEntityNotFound(_0x5ba86a,null))[_0xb466('0x22')](removeEntity(_0x5ba86a,null))[_0xb466('0x48')](handleError(_0x5ba86a,null));};
\ No newline at end of file
index ad91758..e9ef04c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0751=['rimraf','../../config/environment','exports','define','VtigerField','int_vtiger_fields','vtiger_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x5b28df,_0x5a42b8){var _0x3f1588=function(_0x5d1c8c){while(--_0x5d1c8c){_0x5b28df['push'](_0x5b28df['shift']());}};_0x3f1588(++_0x5a42b8);}(_0x0751,0x79));var _0x1075=function(_0x2629a2,_0xc206c9){_0x2629a2=_0x2629a2-0x0;var _0x199803=_0x0751[_0x2629a2];return _0x199803;};'use strict';var _=require(_0x1075('0x0'));var util=require(_0x1075('0x1'));var logger=require(_0x1075('0x2'))(_0x1075('0x3'));var moment=require(_0x1075('0x4'));var BPromise=require('bluebird');var rp=require(_0x1075('0x5'));var fs=require('fs');var path=require(_0x1075('0x6'));var rimraf=require(_0x1075('0x7'));var config=require(_0x1075('0x8'));var attributes=require('./intVtigerField.attributes');module[_0x1075('0x9')]=function(_0x429855,_0x500785){return _0x429855[_0x1075('0xa')](_0x1075('0xb'),attributes,{'tableName':_0x1075('0xc'),'paranoid':![],'indexes':[{'name':_0x1075('0xd'),'fields':[_0x1075('0xe'),_0x1075('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7780=['vtiger_unique_index','idField','FieldId','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment','./intVtigerField.attributes','exports','VtigerField','int_vtiger_fields'];(function(_0x5774be,_0x2259d3){var _0x4914b4=function(_0x1eebc3){while(--_0x1eebc3){_0x5774be['push'](_0x5774be['shift']());}};_0x4914b4(++_0x2259d3);}(_0x7780,0x137));var _0x0778=function(_0x4b2494,_0x494d41){_0x4b2494=_0x4b2494-0x0;var _0x2c1436=_0x7780[_0x4b2494];return _0x2c1436;};'use strict';var _=require(_0x0778('0x0'));var util=require(_0x0778('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x0778('0x2'));var rp=require(_0x0778('0x3'));var fs=require('fs');var path=require(_0x0778('0x4'));var rimraf=require(_0x0778('0x5'));var config=require(_0x0778('0x6'));var attributes=require(_0x0778('0x7'));module[_0x0778('0x8')]=function(_0x38aac3,_0x4cece1){return _0x38aac3['define'](_0x0778('0x9'),attributes,{'tableName':_0x0778('0xa'),'paranoid':![],'indexes':[{'name':_0x0778('0xb'),'fields':[_0x0778('0xc'),_0x0778('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 50a9816..76829df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5bbd=['../../config/environment','jayson/promise','info','VtigerField,\x20%s,\x20%s','debug','VtigerField,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x48c937,_0x33ed99){var _0xc16e8f=function(_0x50daf6){while(--_0x50daf6){_0x48c937['push'](_0x48c937['shift']());}};_0xc16e8f(++_0x33ed99);}(_0x5bbd,0x12b));var _0xd5bb=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5bbd[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xd5bb('0x0'));var util=require(_0xd5bb('0x1'));var moment=require(_0xd5bb('0x2'));var BPromise=require(_0xd5bb('0x3'));var rs=require(_0xd5bb('0x4'));var fs=require('fs');var Redis=require(_0xd5bb('0x5'));var db=require(_0xd5bb('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xd5bb('0x7'));var jayson=require(_0xd5bb('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x292873,_0x5093d3,_0x3878ba){return new BPromise(function(_0x17c08f,_0x1e7ad6){return client['request'](_0x292873,_0x3878ba)['then'](function(_0x44ffea){logger[_0xd5bb('0x9')](_0xd5bb('0xa'),_0x5093d3,'request\x20sent');logger[_0xd5bb('0xb')](_0xd5bb('0xc'),_0x5093d3,_0xd5bb('0xd'),JSON['stringify'](_0x44ffea));if(_0x44ffea['error']){if(_0x44ffea[_0xd5bb('0xe')][_0xd5bb('0xf')]===0x1f4){logger['error'](_0xd5bb('0xa'),_0x5093d3,_0x44ffea['error'][_0xd5bb('0x10')]);return _0x1e7ad6(_0x44ffea['error'][_0xd5bb('0x10')]);}logger[_0xd5bb('0xe')]('VtigerField,\x20%s,\x20%s',_0x5093d3,_0x44ffea[_0xd5bb('0xe')][_0xd5bb('0x10')]);return _0x17c08f(_0x44ffea[_0xd5bb('0xe')]['message']);}else{logger['info'](_0xd5bb('0xa'),_0x5093d3,_0xd5bb('0xd'));_0x17c08f(_0x44ffea['result'][_0xd5bb('0x10')]);}})[_0xd5bb('0x11')](function(_0x3b7021){logger[_0xd5bb('0xe')]('VtigerField,\x20%s,\x20%s',_0x5093d3,_0x3b7021);_0x1e7ad6(_0x3b7021);});});}
\ No newline at end of file
+var _0x5137=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','stringify','error','message','result','catch','VtigerField,\x20%s,\x20%s','lodash','moment','bluebird','ioredis','../../mysqldb'];(function(_0x3a7a9c,_0x24f7d6){var _0x59156e=function(_0x5bc930){while(--_0x5bc930){_0x3a7a9c['push'](_0x3a7a9c['shift']());}};_0x59156e(++_0x24f7d6);}(_0x5137,0x1c9));var _0x7513=function(_0x4f14c5,_0x485e41){_0x4f14c5=_0x4f14c5-0x0;var _0x52ea51=_0x5137[_0x4f14c5];return _0x52ea51;};'use strict';var _=require(_0x7513('0x0'));var util=require('util');var moment=require(_0x7513('0x1'));var BPromise=require(_0x7513('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7513('0x3'));var db=require(_0x7513('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x7513('0x5'))(_0x7513('0x6'));var config=require(_0x7513('0x7'));var jayson=require(_0x7513('0x8'));var client=jayson[_0x7513('0x9')][_0x7513('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x49a090,_0x4ab635,_0x5bad5f){return new BPromise(function(_0x13dbe8,_0x72877e){return client[_0x7513('0xb')](_0x49a090,_0x5bad5f)[_0x7513('0xc')](function(_0x285b89){logger[_0x7513('0xd')]('VtigerField,\x20%s,\x20%s',_0x4ab635,_0x7513('0xe'));logger['debug']('VtigerField,\x20%s,\x20%s,\x20%s',_0x4ab635,'request\x20sent',JSON[_0x7513('0xf')](_0x285b89));if(_0x285b89[_0x7513('0x10')]){if(_0x285b89[_0x7513('0x10')]['code']===0x1f4){logger[_0x7513('0x10')]('VtigerField,\x20%s,\x20%s',_0x4ab635,_0x285b89[_0x7513('0x10')][_0x7513('0x11')]);return _0x72877e(_0x285b89[_0x7513('0x10')][_0x7513('0x11')]);}logger['error']('VtigerField,\x20%s,\x20%s',_0x4ab635,_0x285b89[_0x7513('0x10')][_0x7513('0x11')]);return _0x13dbe8(_0x285b89[_0x7513('0x10')][_0x7513('0x11')]);}else{logger[_0x7513('0xd')]('VtigerField,\x20%s,\x20%s',_0x4ab635,_0x7513('0xe'));_0x13dbe8(_0x285b89[_0x7513('0x12')][_0x7513('0x11')]);}})[_0x7513('0x13')](function(_0x6e3b4f){logger[_0x7513('0x10')](_0x7513('0x14'),_0x4ab635,_0x6e3b4f);_0x72877e(_0x6e3b4f);});});}
\ No newline at end of file
index dcbc837..5e34c29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c43=['exports','path','express','Router','../../components/auth/service','../../config/environment','./intZendeskAccount.controller','isAuthenticated','index','get','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','put','update','delete','destroy'];(function(_0x4bf96c,_0x4d24fd){var _0x281d09=function(_0x56538e){while(--_0x56538e){_0x4bf96c['push'](_0x4bf96c['shift']());}};_0x281d09(++_0x4d24fd);}(_0x7c43,0xf3));var _0x37c4=function(_0x596c96,_0x3c2f5d){_0x596c96=_0x596c96-0x0;var _0x4c607f=_0x7c43[_0x596c96];return _0x4c607f;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x37c4('0x0'));var timeout=require('connect-timeout');var express=require(_0x37c4('0x1'));var router=express[_0x37c4('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x37c4('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x37c4('0x4'));var controller=require(_0x37c4('0x5'));router['get']('/',auth[_0x37c4('0x6')](),controller[_0x37c4('0x7')]);router[_0x37c4('0x8')](_0x37c4('0x9'),auth[_0x37c4('0x6')](),controller[_0x37c4('0xa')]);router[_0x37c4('0x8')](_0x37c4('0xb'),auth['isAuthenticated'](),controller[_0x37c4('0xc')]);router['get'](_0x37c4('0xd'),auth[_0x37c4('0x6')](),controller[_0x37c4('0xe')]);router[_0x37c4('0xf')]('/',auth[_0x37c4('0x6')](),controller[_0x37c4('0x10')]);router[_0x37c4('0xf')](_0x37c4('0xb'),auth[_0x37c4('0x6')](),controller['addConfiguration']);router[_0x37c4('0x11')]('/:id',auth[_0x37c4('0x6')](),controller[_0x37c4('0x12')]);router[_0x37c4('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x37c4('0x14')]);module[_0x37c4('0x15')]=router;
\ No newline at end of file
+var _0x9a05=['addConfiguration','put','/:id','delete','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intZendeskAccount.controller','index','show','get','/:id/configurations','isAuthenticated','getConfigurations','getFields','post','create'];(function(_0x1221d5,_0x16dbca){var _0x1ef857=function(_0x8f8faf){while(--_0x8f8faf){_0x1221d5['push'](_0x1221d5['shift']());}};_0x1ef857(++_0x16dbca);}(_0x9a05,0x14e));var _0x59a0=function(_0x327f28,_0x8c9705){_0x327f28=_0x327f28-0x0;var _0x414bdc=_0x9a05[_0x327f28];return _0x414bdc;};'use strict';var multer=require(_0x59a0('0x0'));var util=require(_0x59a0('0x1'));var path=require('path');var timeout=require(_0x59a0('0x2'));var express=require(_0x59a0('0x3'));var router=express[_0x59a0('0x4')]();var fs_extra=require(_0x59a0('0x5'));var auth=require(_0x59a0('0x6'));var interaction=require(_0x59a0('0x7'));var config=require('../../config/environment');var controller=require(_0x59a0('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x59a0('0x9')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x59a0('0xa')]);router[_0x59a0('0xb')](_0x59a0('0xc'),auth[_0x59a0('0xd')](),controller[_0x59a0('0xe')]);router['get']('/:id/fields',auth[_0x59a0('0xd')](),controller[_0x59a0('0xf')]);router[_0x59a0('0x10')]('/',auth[_0x59a0('0xd')](),controller[_0x59a0('0x11')]);router['post']('/:id/configurations',auth['isAuthenticated'](),controller[_0x59a0('0x12')]);router[_0x59a0('0x13')](_0x59a0('0x14'),auth[_0x59a0('0xd')](),controller['update']);router[_0x59a0('0x15')](_0x59a0('0x14'),auth[_0x59a0('0xd')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 4f48745..de035e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07e8=['exports','STRING','remoteUri','ENUM','password','integrationTab','newTab','sequelize'];(function(_0x3a3758,_0x4dd8cf){var _0x1a9234=function(_0x3dda22){while(--_0x3dda22){_0x3a3758['push'](_0x3a3758['shift']());}};_0x1a9234(++_0x4dd8cf);}(_0x07e8,0x10f));var _0x807e=function(_0x354cdb,_0x1ccb8e){_0x354cdb=_0x354cdb-0x0;var _0xce4eb3=_0x07e8[_0x354cdb];return _0xce4eb3;};'use strict';var Sequelize=require(_0x807e('0x0'));module[_0x807e('0x1')]={'name':{'type':Sequelize[_0x807e('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x807e('0x2')],'unique':'username'},'password':{'type':Sequelize[_0x807e('0x2')]},'token':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize['STRING'],'unique':_0x807e('0x3')},'authType':{'type':Sequelize[_0x807e('0x4')](_0x807e('0x5'),'token'),'defaultValue':_0x807e('0x5')},'serverUrl':{'type':Sequelize[_0x807e('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x807e('0x4')](_0x807e('0x6'),_0x807e('0x7')),'defaultValue':'integrationTab'}};
\ No newline at end of file
+var _0x4317=['ENUM','password','integrationTab','newTab','exports','STRING','username','remoteUri'];(function(_0x32f7d7,_0x54231b){var _0x133d09=function(_0x41a7ab){while(--_0x41a7ab){_0x32f7d7['push'](_0x32f7d7['shift']());}};_0x133d09(++_0x54231b);}(_0x4317,0x7c));var _0x7431=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x4317[_0x1facfa];return _0x9ec701;};'use strict';var Sequelize=require('sequelize');module[_0x7431('0x0')]={'name':{'type':Sequelize[_0x7431('0x1')]},'description':{'type':Sequelize[_0x7431('0x1')]},'username':{'type':Sequelize['STRING'],'unique':_0x7431('0x2')},'password':{'type':Sequelize[_0x7431('0x1')]},'token':{'type':Sequelize[_0x7431('0x1')]},'remoteUri':{'type':Sequelize[_0x7431('0x1')],'unique':_0x7431('0x3')},'authType':{'type':Sequelize[_0x7431('0x4')]('password','token'),'defaultValue':_0x7431('0x5')},'serverUrl':{'type':Sequelize[_0x7431('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x7431('0x4')](_0x7431('0x6'),_0x7431('0x7')),'defaultValue':_0x7431('0x6')}};
\ No newline at end of file
index ba3506c..b22f0ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91a7=['includes','position','system_field_options','custom_field_options','test','getFields,\x20%s,\x20%s,\x20%s','statusCode','rimraf','zip-dir','fast-json-patch','moment','mustache','sox','to-csv','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','set','apply','reject','save','update','then','sendStatus','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','ZendeskAccount','count','include','rows','params','keys','includeAll','find','catch','create','body','destroy','getConfigurations','ZendeskConfiguration','hasOwnProperty','AccountId','Subjects','getSubjects','channel','ZendeskField','Descriptions','getFields','findOne','username','password','token','authType','remoteUri','slice','substring','lastIndexOf','GET','format','%s/%s','Basic\x20%s','headers','toString','base64','Sequelize','ValidationError','subject','description','group','assignee','remove','ticket_fields'];(function(_0x133fe2,_0x48cc86){var _0x262988=function(_0x44f9c5){while(--_0x44f9c5){_0x133fe2['push'](_0x133fe2['shift']());}};_0x262988(++_0x48cc86);}(_0x91a7,0xe7));var _0x791a=function(_0x1e6beb,_0x186539){_0x1e6beb=_0x1e6beb-0x0;var _0x54738c=_0x91a7[_0x1e6beb];return _0x54738c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x791a('0x0'));var zipdir=require(_0x791a('0x1'));var jsonpatch=require(_0x791a('0x2'));var rp=require('request-promise');var moment=require(_0x791a('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x791a('0x4'));var util=require('util');var path=require('path');var sox=require(_0x791a('0x5'));var csv=require(_0x791a('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x791a('0x7'));var _=require('lodash');var squel=require(_0x791a('0x8'));var crypto=require(_0x791a('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x791a('0xa'));var toCsv=require(_0x791a('0x6'));var querystring=require(_0x791a('0xb'));var Papa=require(_0x791a('0xc'));var Redis=require(_0x791a('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x791a('0xe'));var as=require(_0x791a('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x791a('0x10'))(_0x791a('0x11'));var utils=require(_0x791a('0x12'));var config=require(_0x791a('0x13'));var licenseUtil=require(_0x791a('0x14'));var db=require(_0x791a('0x15'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x5daecd,_0xc92016){_0xc92016=_0xc92016||0xcc;return function(_0x2f2d8d){if(_0x2f2d8d){return _0x5daecd['sendStatus'](_0xc92016);}return _0x5daecd[_0x791a('0x16')](_0xc92016)[_0x791a('0x17')]();};}function respondWithResult(_0x5d5b11,_0x2887f0){_0x2887f0=_0x2887f0||0xc8;return function(_0x31b86d){if(_0x31b86d){return _0x5d5b11[_0x791a('0x16')](_0x2887f0)[_0x791a('0x18')](_0x31b86d);}};}function respondWithFilteredResult(_0x55e845,_0x2ce2e0){return function(_0x575d11){if(_0x575d11){var _0x43dea6=typeof _0x2ce2e0[_0x791a('0x19')]==='undefined'&&typeof _0x2ce2e0[_0x791a('0x1a')]==='undefined';var _0x35fe48=_0x575d11['count'];var _0x4a84ee=_0x43dea6?0x0:_0x2ce2e0['offset'];var _0x40f0d3=_0x43dea6?_0x575d11['count']:_0x2ce2e0['offset']+_0x2ce2e0[_0x791a('0x1a')];var _0x5a702e;if(_0x40f0d3>=_0x35fe48){_0x40f0d3=_0x35fe48;_0x5a702e=0xc8;}else{_0x5a702e=0xce;}_0x55e845[_0x791a('0x16')](_0x5a702e);return _0x55e845[_0x791a('0x1b')]('Content-Range',_0x4a84ee+'-'+_0x40f0d3+'/'+_0x35fe48)[_0x791a('0x18')](_0x575d11);}return null;};}function patchUpdates(_0xcb5e66){return function(_0x234514){try{jsonpatch[_0x791a('0x1c')](_0x234514,_0xcb5e66,!![]);}catch(_0x530e32){return BPromise[_0x791a('0x1d')](_0x530e32);}return _0x234514[_0x791a('0x1e')]();};}function saveUpdates(_0x25bae5,_0x9e17b5){return function(_0x3200dd){if(_0x3200dd){return _0x3200dd[_0x791a('0x1f')](_0x25bae5)[_0x791a('0x20')](function(_0x45a67d){return _0x45a67d;});}return null;};}function removeEntity(_0x323c6a,_0xe8e452){return function(_0x137992){if(_0x137992){return _0x137992['destroy']()[_0x791a('0x20')](function(){_0x323c6a[_0x791a('0x16')](0xcc)[_0x791a('0x17')]();});}};}function handleEntityNotFound(_0x2966b8,_0x4d748a){return function(_0x456480){if(!_0x456480){_0x2966b8[_0x791a('0x21')](0x194);}return _0x456480;};}function handleError(_0x51dcca,_0xdfa84f){_0xdfa84f=_0xdfa84f||0x1f4;return function(_0x1785f5){logger[_0x791a('0x22')](_0x1785f5['stack']);if(_0x1785f5[_0x791a('0x23')]){delete _0x1785f5[_0x791a('0x23')];}_0x51dcca[_0x791a('0x16')](_0xdfa84f)[_0x791a('0x24')](_0x1785f5);};}exports[_0x791a('0x25')]=function(_0x1a9c6b,_0x628816){var _0x889534={},_0x58bbc0={},_0xbc3436={'count':0x0,'rows':[]};var _0x9e9332=_[_0x791a('0x26')](db['ZendeskAccount'][_0x791a('0x27')],function(_0x5df656){return{'name':_0x5df656[_0x791a('0x28')],'type':_0x5df656[_0x791a('0x29')][_0x791a('0x2a')]};});_0x58bbc0[_0x791a('0x2b')]=_[_0x791a('0x26')](_0x9e9332,_0x791a('0x23'));_0x58bbc0[_0x791a('0x2c')]=_['keys'](_0x1a9c6b[_0x791a('0x2c')]);_0x58bbc0[_0x791a('0x2d')]=_[_0x791a('0x2e')](_0x58bbc0[_0x791a('0x2b')],_0x58bbc0[_0x791a('0x2c')]);_0x889534['attributes']=_[_0x791a('0x2e')](_0x58bbc0[_0x791a('0x2b')],qs[_0x791a('0x2f')](_0x1a9c6b[_0x791a('0x2c')][_0x791a('0x2f')]));_0x889534['attributes']=_0x889534[_0x791a('0x30')][_0x791a('0x31')]?_0x889534[_0x791a('0x30')]:_0x58bbc0[_0x791a('0x2b')];if(!_0x1a9c6b[_0x791a('0x2c')]['hasOwnProperty'](_0x791a('0x32'))){_0x889534['limit']=qs[_0x791a('0x1a')](_0x1a9c6b['query']['limit']);_0x889534[_0x791a('0x19')]=qs[_0x791a('0x19')](_0x1a9c6b[_0x791a('0x2c')][_0x791a('0x19')]);}_0x889534[_0x791a('0x33')]=qs[_0x791a('0x34')](_0x1a9c6b[_0x791a('0x2c')]['sort']);_0x889534[_0x791a('0x35')]=qs['filters'](_[_0x791a('0x36')](_0x1a9c6b['query'],_0x58bbc0[_0x791a('0x2d')]),_0x9e9332);if(_0x1a9c6b[_0x791a('0x2c')]['filter']){_0x889534[_0x791a('0x35')]=_[_0x791a('0x37')](_0x889534['where'],{'$or':_[_0x791a('0x26')](_0x9e9332,function(_0x165e2b){if(_0x165e2b[_0x791a('0x29')]!==_0x791a('0x38')){var _0x29d267={};_0x29d267[_0x165e2b[_0x791a('0x23')]]={'$like':'%'+_0x1a9c6b[_0x791a('0x2c')][_0x791a('0x39')]+'%'};return _0x29d267;}})});}_0x889534=_[_0x791a('0x37')]({},_0x889534,_0x1a9c6b[_0x791a('0x3a')]);var _0x587481={'where':_0x889534[_0x791a('0x35')]};return db[_0x791a('0x3b')][_0x791a('0x3c')](_0x587481)['then'](function(_0xf4e2fa){_0xbc3436['count']=_0xf4e2fa;if(_0x1a9c6b['query']['includeAll']){_0x889534[_0x791a('0x3d')]=[{'all':!![]}];}return db[_0x791a('0x3b')]['findAll'](_0x889534);})[_0x791a('0x20')](function(_0x2d1692){_0xbc3436[_0x791a('0x3e')]=_0x2d1692;return _0xbc3436;})[_0x791a('0x20')](respondWithFilteredResult(_0x628816,_0x889534))['catch'](handleError(_0x628816,null));};exports['show']=function(_0x57b9ba,_0x2f0395){var _0x216dd3={'raw':![],'where':{'id':_0x57b9ba[_0x791a('0x3f')]['id']}},_0x4e0191={};_0x4e0191[_0x791a('0x2b')]=_[_0x791a('0x40')](db[_0x791a('0x3b')]['rawAttributes']);_0x4e0191[_0x791a('0x2c')]=_['keys'](_0x57b9ba[_0x791a('0x2c')]);_0x4e0191[_0x791a('0x2d')]=_[_0x791a('0x2e')](_0x4e0191[_0x791a('0x2b')],_0x4e0191[_0x791a('0x2c')]);_0x216dd3['attributes']=_[_0x791a('0x2e')](_0x4e0191[_0x791a('0x2b')],qs[_0x791a('0x2f')](_0x57b9ba[_0x791a('0x2c')][_0x791a('0x2f')]));_0x216dd3['attributes']=_0x216dd3[_0x791a('0x30')][_0x791a('0x31')]?_0x216dd3['attributes']:_0x4e0191['model'];if(_0x57b9ba[_0x791a('0x2c')][_0x791a('0x41')]){_0x216dd3[_0x791a('0x3d')]=[{'all':!![]}];}_0x216dd3=_['merge']({},_0x216dd3,_0x57b9ba['options']);return db[_0x791a('0x3b')][_0x791a('0x42')](_0x216dd3)['then'](handleEntityNotFound(_0x2f0395,null))[_0x791a('0x20')](respondWithResult(_0x2f0395,null))[_0x791a('0x43')](handleError(_0x2f0395,null));};exports[_0x791a('0x44')]=function(_0x549980,_0x5a30a6){return db[_0x791a('0x3b')][_0x791a('0x44')](_0x549980[_0x791a('0x45')],{})[_0x791a('0x20')](respondWithResult(_0x5a30a6,0xc9))['catch'](handleError(_0x5a30a6,null));};exports[_0x791a('0x1f')]=function(_0x9f768a,_0x4e6d0d){if(_0x9f768a[_0x791a('0x45')]['id']){delete _0x9f768a['body']['id'];}return db[_0x791a('0x3b')][_0x791a('0x42')]({'where':{'id':_0x9f768a[_0x791a('0x3f')]['id']}})[_0x791a('0x20')](handleEntityNotFound(_0x4e6d0d,null))[_0x791a('0x20')](saveUpdates(_0x9f768a[_0x791a('0x45')],null))[_0x791a('0x20')](respondWithResult(_0x4e6d0d,null))['catch'](handleError(_0x4e6d0d,null));};exports[_0x791a('0x46')]=function(_0x1fd826,_0x4bffa6){return db[_0x791a('0x3b')][_0x791a('0x42')]({'where':{'id':_0x1fd826['params']['id']}})[_0x791a('0x20')](handleEntityNotFound(_0x4bffa6,null))[_0x791a('0x20')](removeEntity(_0x4bffa6,null))[_0x791a('0x43')](handleError(_0x4bffa6,null));};exports[_0x791a('0x47')]=function(_0xd5ec90,_0x4d82eb,_0x4ab42f){var _0x5a616f={};var _0x305033={};var _0x51b556;var _0x4c7555;return db[_0x791a('0x3b')]['findOne']({'where':{'id':_0xd5ec90[_0x791a('0x3f')]['id']}})[_0x791a('0x20')](handleEntityNotFound(_0x4d82eb,null))['then'](function(_0x5166b5){if(_0x5166b5){_0x51b556=_0x5166b5;_0x305033[_0x791a('0x2b')]=_['keys'](db[_0x791a('0x48')][_0x791a('0x27')]);_0x305033[_0x791a('0x2c')]=_['keys'](_0xd5ec90[_0x791a('0x2c')]);_0x305033[_0x791a('0x2d')]=_['intersection'](_0x305033[_0x791a('0x2b')],_0x305033[_0x791a('0x2c')]);_0x5a616f[_0x791a('0x30')]=_[_0x791a('0x2e')](_0x305033[_0x791a('0x2b')],qs[_0x791a('0x2f')](_0xd5ec90['query']['fields']));_0x5a616f[_0x791a('0x30')]=_0x5a616f['attributes'][_0x791a('0x31')]?_0x5a616f[_0x791a('0x30')]:_0x305033[_0x791a('0x2b')];_0x5a616f[_0x791a('0x33')]=qs[_0x791a('0x34')](_0xd5ec90[_0x791a('0x2c')][_0x791a('0x34')]);_0x5a616f['where']=qs[_0x791a('0x2d')](_[_0x791a('0x36')](_0xd5ec90[_0x791a('0x2c')],_0x305033[_0x791a('0x2d')]));if(_0xd5ec90[_0x791a('0x2c')][_0x791a('0x39')]){_0x5a616f[_0x791a('0x35')]=_['merge'](_0x5a616f[_0x791a('0x35')],{'$or':_['map'](_0x5a616f['attributes'],function(_0x1cc240){var _0x3c81e2={};_0x3c81e2[_0x1cc240]={'$like':'%'+_0xd5ec90[_0x791a('0x2c')][_0x791a('0x39')]+'%'};return _0x3c81e2;})});}_0x5a616f=_[_0x791a('0x37')]({},_0x5a616f,_0xd5ec90[_0x791a('0x3a')]);return _0x51b556[_0x791a('0x47')](_0x5a616f);}})[_0x791a('0x20')](function(_0x2bfb66){if(_0x2bfb66){_0x4c7555=_0x2bfb66[_0x791a('0x31')];if(!_0xd5ec90[_0x791a('0x2c')][_0x791a('0x49')](_0x791a('0x32'))){_0x5a616f[_0x791a('0x1a')]=qs[_0x791a('0x1a')](_0xd5ec90[_0x791a('0x2c')][_0x791a('0x1a')]);_0x5a616f[_0x791a('0x19')]=qs[_0x791a('0x19')](_0xd5ec90[_0x791a('0x2c')]['offset']);}return _0x51b556[_0x791a('0x47')](_0x5a616f);}})[_0x791a('0x20')](function(_0x380087){if(_0x380087){return _0x380087?{'count':_0x4c7555,'rows':_0x380087}:null;}})[_0x791a('0x20')](respondWithResult(_0x4d82eb,null))[_0x791a('0x43')](handleError(_0x4d82eb,null));};exports['addConfiguration']=function(_0x42ce59,_0x3d24bd,_0x277774){if(_0x42ce59[_0x791a('0x45')]['id']){delete _0x42ce59['body']['id'];}return db[_0x791a('0x3b')]['findOne']({'where':{'id':_0x42ce59['params']['id']}})['then'](handleEntityNotFound(_0x3d24bd,null))['then'](function(_0x22aaf2){if(_0x22aaf2){_0x42ce59[_0x791a('0x45')][_0x791a('0x4a')]=_0x22aaf2['id'];_0x42ce59[_0x791a('0x45')][_0x791a('0x4b')]=integrations[_0x791a('0x4c')](_0x42ce59[_0x791a('0x45')]['channel'],_0x42ce59['body'][_0x791a('0x29')]);_0x42ce59[_0x791a('0x45')]['Descriptions']=integrations['getDescriptions'](_0x42ce59[_0x791a('0x45')][_0x791a('0x4d')],_0x42ce59['body'][_0x791a('0x29')]);return db[_0x791a('0x48')][_0x791a('0x44')](_0x42ce59[_0x791a('0x45')],{'include':[{'model':db['ZendeskField'],'as':'Subjects'},{'model':db[_0x791a('0x4e')],'as':_0x791a('0x4f')}]});}return null;})['then'](respondWithResult(_0x3d24bd,null))[_0x791a('0x43')](handleError(_0x3d24bd,null));};exports[_0x791a('0x50')]=function(_0x10b51f,_0x3838c4,_0x565c83){var _0x24efc2='';return db[_0x791a('0x3b')][_0x791a('0x51')]({'where':{'id':_0x10b51f[_0x791a('0x3f')]['id']},'attributes':['id',_0x791a('0x52'),_0x791a('0x53'),_0x791a('0x54'),_0x791a('0x55'),'remoteUri']})['then'](handleEntityNotFound(_0x3838c4,null))['then'](function(_0xf8ac72){if(_0xf8ac72){_0x24efc2=_0xf8ac72[_0x791a('0x56')];var _0x1118a8=_0x24efc2[_0x791a('0x57')](-0x1);if(_0x1118a8==='/'){_0x24efc2=_0x24efc2[_0x791a('0x58')](0x0,_0x24efc2[_0x791a('0x59')](_0x1118a8));}var _0x348e54={'method':_0x791a('0x5a'),'uri':util[_0x791a('0x5b')](_0x791a('0x5c'),_0x24efc2,'ticket_fields'),'json':!![]};switch(_0xf8ac72[_0x791a('0x55')]){case _0x791a('0x53'):_0x348e54['headers']={'Authorization':util[_0x791a('0x5b')](_0x791a('0x5d'),new Buffer(util['format']('%s:%s',_0xf8ac72[_0x791a('0x52')],_0xf8ac72[_0x791a('0x53')]))['toString']('base64'))};break;case _0x791a('0x54'):_0x348e54[_0x791a('0x5e')]={'Authorization':util[_0x791a('0x5b')]('Basic\x20%s',new Buffer(util[_0x791a('0x5b')]('%s/token:%s',_0xf8ac72[_0x791a('0x52')],_0xf8ac72[_0x791a('0x54')]))[_0x791a('0x5f')](_0x791a('0x60')))};break;default:throw new db[(_0x791a('0x61'))][(_0x791a('0x62'))]('Unknown\x20authentication\x20type');}return rp(_0x348e54);}})[_0x791a('0x20')](function(_0x2e666e){if(_0x2e666e){var _0x41d1a5=[_0x791a('0x63'),_0x791a('0x64'),_0x791a('0x65'),_0x791a('0x66')];_[_0x791a('0x67')](_0x2e666e[_0x791a('0x68')],function(_0x203fc5){return _0x41d1a5[_0x791a('0x69')](_0x203fc5[_0x791a('0x29')]);});return{'count':_0x2e666e[_0x791a('0x68')][_0x791a('0x31')],'rows':_[_0x791a('0x26')](_0x2e666e[_0x791a('0x68')],function(_0x3272c0){return{'id':_0x3272c0['id'],'name':_0x3272c0[_0x791a('0x6a')]>0x7?_0x3272c0['title']:_0x3272c0[_0x791a('0x29')],'custom':_0x3272c0[_0x791a('0x6a')]>0x7?!![]:![],'options':_0x3272c0[_0x791a('0x6b')]?_0x3272c0[_0x791a('0x6b')]:_0x3272c0[_0x791a('0x6c')]?_0x3272c0['custom_field_options']:[]};})};}})[_0x791a('0x20')](respondWithResult(_0x3838c4,null))['catch'](function(_0x467d65){var _0x48b8dc=_0x10b51f[_0x791a('0x2c')][_0x791a('0x6d')]?0x1f4:_0x467d65['statusCode']||0x1f4;logger[_0x791a('0x22')](_0x791a('0x6e'),_0x791a('0x50'),_0x48b8dc,JSON['stringify'](_0x467d65));delete _0x467d65[_0x791a('0x23')];if(_0x48b8dc===0x191){_0x48b8dc=0x190;}_0x3838c4['status'](_0x48b8dc)[_0x791a('0x24')](_0x10b51f['query']['test']?{'message':'Wrong\x20credentials','statusCode':_0x467d65[_0x791a('0x6f')]}:_0x467d65);});};
\ No newline at end of file
+var _0x8f59=['keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','options','ZendeskAccount','includeAll','include','rows','params','find','catch','create','body','getConfigurations','findOne','ZendeskConfiguration','filter','Subjects','getSubjects','channel','ZendeskField','Descriptions','getFields','password','token','authType','remoteUri','slice','substring','lastIndexOf','format','ticket_fields','headers','Basic\x20%s','username','toString','base64','%s/token:%s','Sequelize','ValidationError','Unknown\x20authentication\x20type','subject','description','remove','position','system_field_options','custom_field_options','test','statusCode','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','end','status','json','undefined','limit','offset','count','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query'];(function(_0x5c7dc6,_0x2f7fe2){var _0x3d0dc4=function(_0x235930){while(--_0x235930){_0x5c7dc6['push'](_0x5c7dc6['shift']());}};_0x3d0dc4(++_0x2f7fe2);}(_0x8f59,0x11d));var _0x98f5=function(_0x8409e1,_0x52a92b){_0x8409e1=_0x8409e1-0x0;var _0x1e15e0=_0x8f59[_0x8409e1];return _0x1e15e0;};'use strict';var emlformat=require(_0x98f5('0x0'));var rimraf=require(_0x98f5('0x1'));var zipdir=require(_0x98f5('0x2'));var jsonpatch=require(_0x98f5('0x3'));var rp=require(_0x98f5('0x4'));var moment=require(_0x98f5('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x98f5('0x6'));var util=require(_0x98f5('0x7'));var path=require(_0x98f5('0x8'));var sox=require(_0x98f5('0x9'));var csv=require('to-csv');var ejs=require(_0x98f5('0xa'));var fs=require('fs');var fs_extra=require(_0x98f5('0xb'));var _=require(_0x98f5('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x98f5('0xd'));var deskjs=require(_0x98f5('0xe'));var toCsv=require(_0x98f5('0xf'));var querystring=require('querystring');var Papa=require(_0x98f5('0x10'));var Redis=require(_0x98f5('0x11'));var authService=require(_0x98f5('0x12'));var qs=require(_0x98f5('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x98f5('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x98f5('0x15'));var config=require(_0x98f5('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x98f5('0x17'))['db'];var integrations=require(_0x98f5('0x18'));function respondWithStatusCode(_0x1f00e8,_0x160626){_0x160626=_0x160626||0xcc;return function(_0x3286f7){if(_0x3286f7){return _0x1f00e8[_0x98f5('0x19')](_0x160626);}return _0x1f00e8['status'](_0x160626)[_0x98f5('0x1a')]();};}function respondWithResult(_0xbade31,_0x5b8bab){_0x5b8bab=_0x5b8bab||0xc8;return function(_0x9df84){if(_0x9df84){return _0xbade31[_0x98f5('0x1b')](_0x5b8bab)[_0x98f5('0x1c')](_0x9df84);}};}function respondWithFilteredResult(_0x4ae70d,_0x2437e7){return function(_0xc7a49b){if(_0xc7a49b){var _0x113545=typeof _0x2437e7['offset']===_0x98f5('0x1d')&&typeof _0x2437e7[_0x98f5('0x1e')]==='undefined';var _0x1df52d=_0xc7a49b['count'];var _0x10c57c=_0x113545?0x0:_0x2437e7[_0x98f5('0x1f')];var _0x2291d5=_0x113545?_0xc7a49b[_0x98f5('0x20')]:_0x2437e7[_0x98f5('0x1f')]+_0x2437e7[_0x98f5('0x1e')];var _0x484e1d;if(_0x2291d5>=_0x1df52d){_0x2291d5=_0x1df52d;_0x484e1d=0xc8;}else{_0x484e1d=0xce;}_0x4ae70d[_0x98f5('0x1b')](_0x484e1d);return _0x4ae70d['set'](_0x98f5('0x21'),_0x10c57c+'-'+_0x2291d5+'/'+_0x1df52d)[_0x98f5('0x1c')](_0xc7a49b);}return null;};}function patchUpdates(_0x5deca0){return function(_0x146db1){try{jsonpatch[_0x98f5('0x22')](_0x146db1,_0x5deca0,!![]);}catch(_0x331695){return BPromise[_0x98f5('0x23')](_0x331695);}return _0x146db1[_0x98f5('0x24')]();};}function saveUpdates(_0x3dc7c2,_0x38b46d){return function(_0x5ac2b7){if(_0x5ac2b7){return _0x5ac2b7[_0x98f5('0x25')](_0x3dc7c2)['then'](function(_0xcb10d6){return _0xcb10d6;});}return null;};}function removeEntity(_0x495889,_0x44bfbb){return function(_0x40c69b){if(_0x40c69b){return _0x40c69b[_0x98f5('0x26')]()[_0x98f5('0x27')](function(){_0x495889[_0x98f5('0x1b')](0xcc)[_0x98f5('0x1a')]();});}};}function handleEntityNotFound(_0x46dbd4,_0x58d506){return function(_0x27a533){if(!_0x27a533){_0x46dbd4[_0x98f5('0x19')](0x194);}return _0x27a533;};}function handleError(_0x5d7423,_0x1a1c55){_0x1a1c55=_0x1a1c55||0x1f4;return function(_0x18b0af){logger[_0x98f5('0x28')](_0x18b0af[_0x98f5('0x29')]);if(_0x18b0af[_0x98f5('0x2a')]){delete _0x18b0af[_0x98f5('0x2a')];}_0x5d7423[_0x98f5('0x1b')](_0x1a1c55)[_0x98f5('0x2b')](_0x18b0af);};}exports['index']=function(_0x4c10b8,_0x428c85){var _0x71661e={},_0x18bb29={},_0x209d15={'count':0x0,'rows':[]};var _0x15bf92=_[_0x98f5('0x2c')](db['ZendeskAccount'][_0x98f5('0x2d')],function(_0x6d7418){return{'name':_0x6d7418[_0x98f5('0x2e')],'type':_0x6d7418[_0x98f5('0x2f')][_0x98f5('0x30')]};});_0x18bb29[_0x98f5('0x31')]=_['map'](_0x15bf92,_0x98f5('0x2a'));_0x18bb29[_0x98f5('0x32')]=_[_0x98f5('0x33')](_0x4c10b8[_0x98f5('0x32')]);_0x18bb29['filters']=_[_0x98f5('0x34')](_0x18bb29[_0x98f5('0x31')],_0x18bb29[_0x98f5('0x32')]);_0x71661e[_0x98f5('0x35')]=_[_0x98f5('0x34')](_0x18bb29[_0x98f5('0x31')],qs[_0x98f5('0x36')](_0x4c10b8[_0x98f5('0x32')][_0x98f5('0x36')]));_0x71661e[_0x98f5('0x35')]=_0x71661e[_0x98f5('0x35')][_0x98f5('0x37')]?_0x71661e[_0x98f5('0x35')]:_0x18bb29[_0x98f5('0x31')];if(!_0x4c10b8[_0x98f5('0x32')][_0x98f5('0x38')](_0x98f5('0x39'))){_0x71661e[_0x98f5('0x1e')]=qs[_0x98f5('0x1e')](_0x4c10b8[_0x98f5('0x32')]['limit']);_0x71661e[_0x98f5('0x1f')]=qs['offset'](_0x4c10b8['query'][_0x98f5('0x1f')]);}_0x71661e[_0x98f5('0x3a')]=qs[_0x98f5('0x3b')](_0x4c10b8[_0x98f5('0x32')]['sort']);_0x71661e[_0x98f5('0x3c')]=qs[_0x98f5('0x3d')](_[_0x98f5('0x3e')](_0x4c10b8['query'],_0x18bb29[_0x98f5('0x3d')]),_0x15bf92);if(_0x4c10b8[_0x98f5('0x32')]['filter']){_0x71661e[_0x98f5('0x3c')]=_[_0x98f5('0x3f')](_0x71661e[_0x98f5('0x3c')],{'$or':_['map'](_0x15bf92,function(_0x15d704){if(_0x15d704[_0x98f5('0x2f')]!==_0x98f5('0x40')){var _0x544fbf={};_0x544fbf[_0x15d704[_0x98f5('0x2a')]]={'$like':'%'+_0x4c10b8['query']['filter']+'%'};return _0x544fbf;}})});}_0x71661e=_[_0x98f5('0x3f')]({},_0x71661e,_0x4c10b8[_0x98f5('0x41')]);var _0x33e6e2={'where':_0x71661e[_0x98f5('0x3c')]};return db[_0x98f5('0x42')][_0x98f5('0x20')](_0x33e6e2)['then'](function(_0x4a4129){_0x209d15[_0x98f5('0x20')]=_0x4a4129;if(_0x4c10b8[_0x98f5('0x32')][_0x98f5('0x43')]){_0x71661e[_0x98f5('0x44')]=[{'all':!![]}];}return db['ZendeskAccount']['findAll'](_0x71661e);})[_0x98f5('0x27')](function(_0x469d2c){_0x209d15[_0x98f5('0x45')]=_0x469d2c;return _0x209d15;})[_0x98f5('0x27')](respondWithFilteredResult(_0x428c85,_0x71661e))['catch'](handleError(_0x428c85,null));};exports['show']=function(_0x3db067,_0x3a191f){var _0x372c33={'raw':![],'where':{'id':_0x3db067[_0x98f5('0x46')]['id']}},_0x4a9b53={};_0x4a9b53['model']=_[_0x98f5('0x33')](db['ZendeskAccount'][_0x98f5('0x2d')]);_0x4a9b53[_0x98f5('0x32')]=_[_0x98f5('0x33')](_0x3db067['query']);_0x4a9b53[_0x98f5('0x3d')]=_[_0x98f5('0x34')](_0x4a9b53['model'],_0x4a9b53[_0x98f5('0x32')]);_0x372c33[_0x98f5('0x35')]=_['intersection'](_0x4a9b53[_0x98f5('0x31')],qs['fields'](_0x3db067[_0x98f5('0x32')][_0x98f5('0x36')]));_0x372c33['attributes']=_0x372c33['attributes']['length']?_0x372c33['attributes']:_0x4a9b53[_0x98f5('0x31')];if(_0x3db067['query'][_0x98f5('0x43')]){_0x372c33[_0x98f5('0x44')]=[{'all':!![]}];}_0x372c33=_[_0x98f5('0x3f')]({},_0x372c33,_0x3db067[_0x98f5('0x41')]);return db[_0x98f5('0x42')][_0x98f5('0x47')](_0x372c33)['then'](handleEntityNotFound(_0x3a191f,null))[_0x98f5('0x27')](respondWithResult(_0x3a191f,null))[_0x98f5('0x48')](handleError(_0x3a191f,null));};exports[_0x98f5('0x49')]=function(_0x2c3cef,_0x178867){return db[_0x98f5('0x42')]['create'](_0x2c3cef[_0x98f5('0x4a')],{})[_0x98f5('0x27')](respondWithResult(_0x178867,0xc9))[_0x98f5('0x48')](handleError(_0x178867,null));};exports[_0x98f5('0x25')]=function(_0x4a0cda,_0x2c5f96){if(_0x4a0cda[_0x98f5('0x4a')]['id']){delete _0x4a0cda[_0x98f5('0x4a')]['id'];}return db[_0x98f5('0x42')][_0x98f5('0x47')]({'where':{'id':_0x4a0cda['params']['id']}})[_0x98f5('0x27')](handleEntityNotFound(_0x2c5f96,null))[_0x98f5('0x27')](saveUpdates(_0x4a0cda['body'],null))[_0x98f5('0x27')](respondWithResult(_0x2c5f96,null))['catch'](handleError(_0x2c5f96,null));};exports[_0x98f5('0x26')]=function(_0x4cb157,_0x1bd2b9){return db[_0x98f5('0x42')][_0x98f5('0x47')]({'where':{'id':_0x4cb157['params']['id']}})[_0x98f5('0x27')](handleEntityNotFound(_0x1bd2b9,null))[_0x98f5('0x27')](removeEntity(_0x1bd2b9,null))[_0x98f5('0x48')](handleError(_0x1bd2b9,null));};exports[_0x98f5('0x4b')]=function(_0xde3d2d,_0xf39073,_0x37e620){var _0x1891ac={};var _0x2c3a23={};var _0x2e48a1;var _0x50343c;return db[_0x98f5('0x42')][_0x98f5('0x4c')]({'where':{'id':_0xde3d2d[_0x98f5('0x46')]['id']}})[_0x98f5('0x27')](handleEntityNotFound(_0xf39073,null))[_0x98f5('0x27')](function(_0x23e955){if(_0x23e955){_0x2e48a1=_0x23e955;_0x2c3a23['model']=_[_0x98f5('0x33')](db[_0x98f5('0x4d')][_0x98f5('0x2d')]);_0x2c3a23[_0x98f5('0x32')]=_[_0x98f5('0x33')](_0xde3d2d[_0x98f5('0x32')]);_0x2c3a23['filters']=_['intersection'](_0x2c3a23['model'],_0x2c3a23[_0x98f5('0x32')]);_0x1891ac[_0x98f5('0x35')]=_[_0x98f5('0x34')](_0x2c3a23[_0x98f5('0x31')],qs['fields'](_0xde3d2d[_0x98f5('0x32')]['fields']));_0x1891ac[_0x98f5('0x35')]=_0x1891ac['attributes']['length']?_0x1891ac[_0x98f5('0x35')]:_0x2c3a23[_0x98f5('0x31')];_0x1891ac[_0x98f5('0x3a')]=qs['sort'](_0xde3d2d['query'][_0x98f5('0x3b')]);_0x1891ac[_0x98f5('0x3c')]=qs['filters'](_[_0x98f5('0x3e')](_0xde3d2d[_0x98f5('0x32')],_0x2c3a23['filters']));if(_0xde3d2d[_0x98f5('0x32')][_0x98f5('0x4e')]){_0x1891ac[_0x98f5('0x3c')]=_['merge'](_0x1891ac[_0x98f5('0x3c')],{'$or':_[_0x98f5('0x2c')](_0x1891ac[_0x98f5('0x35')],function(_0xabde69){var _0x459c64={};_0x459c64[_0xabde69]={'$like':'%'+_0xde3d2d[_0x98f5('0x32')][_0x98f5('0x4e')]+'%'};return _0x459c64;})});}_0x1891ac=_['merge']({},_0x1891ac,_0xde3d2d[_0x98f5('0x41')]);return _0x2e48a1[_0x98f5('0x4b')](_0x1891ac);}})[_0x98f5('0x27')](function(_0x58041d){if(_0x58041d){_0x50343c=_0x58041d['length'];if(!_0xde3d2d[_0x98f5('0x32')][_0x98f5('0x38')]('nolimit')){_0x1891ac['limit']=qs['limit'](_0xde3d2d['query'][_0x98f5('0x1e')]);_0x1891ac['offset']=qs[_0x98f5('0x1f')](_0xde3d2d[_0x98f5('0x32')][_0x98f5('0x1f')]);}return _0x2e48a1[_0x98f5('0x4b')](_0x1891ac);}})[_0x98f5('0x27')](function(_0x26cc86){if(_0x26cc86){return _0x26cc86?{'count':_0x50343c,'rows':_0x26cc86}:null;}})[_0x98f5('0x27')](respondWithResult(_0xf39073,null))[_0x98f5('0x48')](handleError(_0xf39073,null));};exports['addConfiguration']=function(_0x4d89b6,_0x3b8229,_0x505209){if(_0x4d89b6[_0x98f5('0x4a')]['id']){delete _0x4d89b6[_0x98f5('0x4a')]['id'];}return db[_0x98f5('0x42')]['findOne']({'where':{'id':_0x4d89b6[_0x98f5('0x46')]['id']}})['then'](handleEntityNotFound(_0x3b8229,null))['then'](function(_0x595aee){if(_0x595aee){_0x4d89b6[_0x98f5('0x4a')]['AccountId']=_0x595aee['id'];_0x4d89b6[_0x98f5('0x4a')][_0x98f5('0x4f')]=integrations[_0x98f5('0x50')](_0x4d89b6['body']['channel'],_0x4d89b6['body'][_0x98f5('0x2f')]);_0x4d89b6[_0x98f5('0x4a')]['Descriptions']=integrations['getDescriptions'](_0x4d89b6[_0x98f5('0x4a')][_0x98f5('0x51')],_0x4d89b6[_0x98f5('0x4a')][_0x98f5('0x2f')]);return db[_0x98f5('0x4d')][_0x98f5('0x49')](_0x4d89b6[_0x98f5('0x4a')],{'include':[{'model':db[_0x98f5('0x52')],'as':_0x98f5('0x4f')},{'model':db['ZendeskField'],'as':_0x98f5('0x53')}]});}return null;})[_0x98f5('0x27')](respondWithResult(_0x3b8229,null))[_0x98f5('0x48')](handleError(_0x3b8229,null));};exports[_0x98f5('0x54')]=function(_0x50911c,_0x3e00bf,_0x48b175){var _0x42c7a6='';return db['ZendeskAccount'][_0x98f5('0x4c')]({'where':{'id':_0x50911c[_0x98f5('0x46')]['id']},'attributes':['id','username',_0x98f5('0x55'),_0x98f5('0x56'),_0x98f5('0x57'),'remoteUri']})[_0x98f5('0x27')](handleEntityNotFound(_0x3e00bf,null))[_0x98f5('0x27')](function(_0x14c4f1){if(_0x14c4f1){_0x42c7a6=_0x14c4f1[_0x98f5('0x58')];var _0x154e19=_0x42c7a6[_0x98f5('0x59')](-0x1);if(_0x154e19==='/'){_0x42c7a6=_0x42c7a6[_0x98f5('0x5a')](0x0,_0x42c7a6[_0x98f5('0x5b')](_0x154e19));}var _0x368f76={'method':'GET','uri':util[_0x98f5('0x5c')]('%s/%s',_0x42c7a6,_0x98f5('0x5d')),'json':!![]};switch(_0x14c4f1[_0x98f5('0x57')]){case _0x98f5('0x55'):_0x368f76[_0x98f5('0x5e')]={'Authorization':util['format'](_0x98f5('0x5f'),new Buffer(util[_0x98f5('0x5c')]('%s:%s',_0x14c4f1[_0x98f5('0x60')],_0x14c4f1['password']))[_0x98f5('0x61')](_0x98f5('0x62')))};break;case _0x98f5('0x56'):_0x368f76[_0x98f5('0x5e')]={'Authorization':util['format']('Basic\x20%s',new Buffer(util[_0x98f5('0x5c')](_0x98f5('0x63'),_0x14c4f1['username'],_0x14c4f1[_0x98f5('0x56')]))[_0x98f5('0x61')](_0x98f5('0x62')))};break;default:throw new db[(_0x98f5('0x64'))][(_0x98f5('0x65'))](_0x98f5('0x66'));}return rp(_0x368f76);}})[_0x98f5('0x27')](function(_0x1a3cb8){if(_0x1a3cb8){var _0x2e0484=[_0x98f5('0x67'),_0x98f5('0x68'),'group','assignee'];_[_0x98f5('0x69')](_0x1a3cb8[_0x98f5('0x5d')],function(_0x10cd2d){return _0x2e0484['includes'](_0x10cd2d[_0x98f5('0x2f')]);});return{'count':_0x1a3cb8[_0x98f5('0x5d')]['length'],'rows':_[_0x98f5('0x2c')](_0x1a3cb8[_0x98f5('0x5d')],function(_0x4c1dda){return{'id':_0x4c1dda['id'],'name':_0x4c1dda['position']>0x7?_0x4c1dda['title']:_0x4c1dda['type'],'custom':_0x4c1dda[_0x98f5('0x6a')]>0x7?!![]:![],'options':_0x4c1dda[_0x98f5('0x6b')]?_0x4c1dda['system_field_options']:_0x4c1dda[_0x98f5('0x6c')]?_0x4c1dda[_0x98f5('0x6c')]:[]};})};}})['then'](respondWithResult(_0x3e00bf,null))[_0x98f5('0x48')](function(_0x4f582b){var _0x4814da=_0x50911c[_0x98f5('0x32')][_0x98f5('0x6d')]?0x1f4:_0x4f582b[_0x98f5('0x6e')]||0x1f4;logger[_0x98f5('0x28')]('getFields,\x20%s,\x20%s,\x20%s',_0x98f5('0x54'),_0x4814da,JSON['stringify'](_0x4f582b));delete _0x4f582b['name'];if(_0x4814da===0x191){_0x4814da=0x190;}_0x3e00bf['status'](_0x4814da)[_0x98f5('0x2b')](_0x50911c[_0x98f5('0x32')][_0x98f5('0x6d')]?{'message':_0x98f5('0x6f'),'statusCode':_0x4f582b[_0x98f5('0x6e')]}:_0x4f582b);});};
\ No newline at end of file
index b0ffa21..014663c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3fc=['../../config/logger','api','moment','bluebird','path','rimraf','exports','define','int_zendesk_accounts','util'];(function(_0x531d15,_0x599af5){var _0x271a18=function(_0x31284d){while(--_0x31284d){_0x531d15['push'](_0x531d15['shift']());}};_0x271a18(++_0x599af5);}(_0xc3fc,0x121));var _0xcc3f=function(_0x2bf730,_0x3d5fd7){_0x2bf730=_0x2bf730-0x0;var _0x32ac9f=_0xc3fc[_0x2bf730];return _0x32ac9f;};'use strict';var _=require('lodash');var util=require(_0xcc3f('0x0'));var logger=require(_0xcc3f('0x1'))(_0xcc3f('0x2'));var moment=require(_0xcc3f('0x3'));var BPromise=require(_0xcc3f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xcc3f('0x5'));var rimraf=require(_0xcc3f('0x6'));var config=require('../../config/environment');var attributes=require('./intZendeskAccount.attributes');var integrations=require('../../components/integrations/configuration');module[_0xcc3f('0x7')]=function(_0x43f040,_0x2c517e){return _0x43f040[_0xcc3f('0x8')]('ZendeskAccount',attributes,{'tableName':_0xcc3f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa0ab=['path','./intZendeskAccount.attributes','define','lodash','../../config/logger','api','bluebird','request-promise'];(function(_0x352851,_0x250b47){var _0x5549ad=function(_0x205b9b){while(--_0x205b9b){_0x352851['push'](_0x352851['shift']());}};_0x5549ad(++_0x250b47);}(_0xa0ab,0x1eb));var _0xba0a=function(_0x5442c6,_0x6a7ac9){_0x5442c6=_0x5442c6-0x0;var _0x539526=_0xa0ab[_0x5442c6];return _0x539526;};'use strict';var _=require(_0xba0a('0x0'));var util=require('util');var logger=require(_0xba0a('0x1'))(_0xba0a('0x2'));var moment=require('moment');var BPromise=require(_0xba0a('0x3'));var rp=require(_0xba0a('0x4'));var fs=require('fs');var path=require(_0xba0a('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xba0a('0x6'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x3aa4b7,_0x5d90b8){return _0x3aa4b7[_0xba0a('0x7')]('ZendeskAccount',attributes,{'tableName':'int_zendesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7acdc58..b4c2521 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3757=['ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','ZendeskAccount,\x20%s,\x20%s','ZendeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','ZendeskAccount','findAll','options','raw','where','include','model','map','attributes','GetZendeskAccount','debug','ShowZendeskAccount','find','util','moment','bluebird','randomstring'];(function(_0x949408,_0x9dd895){var _0xb2e479=function(_0x4bff2d){while(--_0x4bff2d){_0x949408['push'](_0x949408['shift']());}};_0xb2e479(++_0x9dd895);}(_0x3757,0xf8));var _0x7375=function(_0x48cc8c,_0x36f7c6){_0x48cc8c=_0x48cc8c-0x0;var _0x750ee=_0x3757[_0x48cc8c];return _0x750ee;};'use strict';var _=require('lodash');var util=require(_0x7375('0x0'));var moment=require(_0x7375('0x1'));var BPromise=require(_0x7375('0x2'));var rs=require(_0x7375('0x3'));var fs=require('fs');var Redis=require(_0x7375('0x4'));var db=require(_0x7375('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x7375('0x6'))('rpc');var config=require(_0x7375('0x7'));var jayson=require(_0x7375('0x8'));var client=jayson[_0x7375('0x9')][_0x7375('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4e6570,_0x15e96a,_0x484b2a){return new BPromise(function(_0x59fc98,_0x1859f3){return client[_0x7375('0xb')](_0x4e6570,_0x484b2a)[_0x7375('0xc')](function(_0x56bcd7){logger[_0x7375('0xd')](_0x7375('0xe'),_0x15e96a,'request\x20sent');logger['debug'](_0x7375('0xf'),_0x15e96a,_0x7375('0x10'),JSON[_0x7375('0x11')](_0x56bcd7));if(_0x56bcd7[_0x7375('0x12')]){if(_0x56bcd7[_0x7375('0x12')][_0x7375('0x13')]===0x1f4){logger[_0x7375('0x12')](_0x7375('0xe'),_0x15e96a,_0x56bcd7[_0x7375('0x12')][_0x7375('0x14')]);return _0x1859f3(_0x56bcd7[_0x7375('0x12')][_0x7375('0x14')]);}logger['error'](_0x7375('0xe'),_0x15e96a,_0x56bcd7[_0x7375('0x12')]['message']);return _0x59fc98(_0x56bcd7[_0x7375('0x12')][_0x7375('0x14')]);}else{logger['info'](_0x7375('0xe'),_0x15e96a,_0x7375('0x10'));_0x59fc98(_0x56bcd7[_0x7375('0x15')][_0x7375('0x14')]);}})[_0x7375('0x16')](function(_0x2af02e){logger[_0x7375('0x12')]('ZendeskAccount,\x20%s,\x20%s',_0x15e96a,_0x2af02e);_0x1859f3(_0x2af02e);});});}exports['GetZendeskAccount']=function(_0x1d3372){var _0x2bc99d=this;return new Promise(function(_0x355330,_0x26a47c){return db[_0x7375('0x17')][_0x7375('0x18')]({'raw':_0x1d3372[_0x7375('0x19')]?_0x1d3372[_0x7375('0x19')][_0x7375('0x1a')]===undefined?!![]:![]:!![],'where':_0x1d3372[_0x7375('0x19')]?_0x1d3372['options'][_0x7375('0x1b')]||null:null,'attributes':_0x1d3372[_0x7375('0x19')]?_0x1d3372[_0x7375('0x19')]['attributes']||null:null,'limit':_0x1d3372[_0x7375('0x19')]?_0x1d3372[_0x7375('0x19')]['limit']||null:null,'include':_0x1d3372[_0x7375('0x19')]?_0x1d3372['options'][_0x7375('0x1c')]?_['map'](_0x1d3372['options']['include'],function(_0x3cd4){return{'model':db[_0x3cd4[_0x7375('0x1d')]],'as':_0x3cd4['as'],'attributes':_0x3cd4['attributes'],'include':_0x3cd4[_0x7375('0x1c')]?_[_0x7375('0x1e')](_0x3cd4[_0x7375('0x1c')],function(_0x7dbf22){return{'model':db[_0x7dbf22[_0x7375('0x1d')]],'as':_0x7dbf22['as'],'attributes':_0x7dbf22[_0x7375('0x1f')],'include':_0x7dbf22[_0x7375('0x1c')]?_[_0x7375('0x1e')](_0x7dbf22[_0x7375('0x1c')],function(_0x4db0a9){return{'model':db[_0x4db0a9['model']],'as':_0x4db0a9['as'],'attributes':_0x4db0a9[_0x7375('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x7375('0xc')](function(_0xd28dbe){logger[_0x7375('0xd')](_0x7375('0x20'),_0x1d3372);logger[_0x7375('0x21')](_0x7375('0x20'),_0x1d3372,JSON[_0x7375('0x11')](_0xd28dbe));_0x355330(_0xd28dbe);})[_0x7375('0x16')](function(_0x2440f4){logger[_0x7375('0x12')](_0x7375('0x20'),_0x2440f4['message'],_0x1d3372);_0x26a47c(_0x2bc99d[_0x7375('0x12')](0x1f4,_0x2440f4[_0x7375('0x14')]));});});};exports[_0x7375('0x22')]=function(_0x2b0e51){var _0x2d2578=this;return new Promise(function(_0x52806d,_0xdc1da2){return db[_0x7375('0x17')][_0x7375('0x23')]({'raw':_0x2b0e51[_0x7375('0x19')]?_0x2b0e51[_0x7375('0x19')][_0x7375('0x1a')]===undefined?!![]:![]:!![],'where':_0x2b0e51['options']?_0x2b0e51[_0x7375('0x19')][_0x7375('0x1b')]||null:null,'attributes':_0x2b0e51[_0x7375('0x19')]?_0x2b0e51[_0x7375('0x19')][_0x7375('0x1f')]||null:null,'include':_0x2b0e51[_0x7375('0x19')]?_0x2b0e51[_0x7375('0x19')][_0x7375('0x1c')]?_['map'](_0x2b0e51[_0x7375('0x19')][_0x7375('0x1c')],function(_0x51088a){return{'model':db[_0x51088a['model']],'as':_0x51088a['as'],'attributes':_0x51088a['attributes'],'include':_0x51088a[_0x7375('0x1c')]?_[_0x7375('0x1e')](_0x51088a[_0x7375('0x1c')],function(_0x49b0fc){return{'model':db[_0x49b0fc['model']],'as':_0x49b0fc['as'],'attributes':_0x49b0fc['attributes'],'include':_0x49b0fc['include']?_['map'](_0x49b0fc['include'],function(_0x1fd934){return{'model':db[_0x1fd934[_0x7375('0x1d')]],'as':_0x1fd934['as'],'attributes':_0x1fd934['attributes']};}):[]};}):[]};}):[]:[]})[_0x7375('0xc')](function(_0x4cdf19){logger[_0x7375('0xd')](_0x7375('0x22'),_0x2b0e51);logger[_0x7375('0x21')](_0x7375('0x22'),_0x2b0e51,JSON[_0x7375('0x11')](_0x4cdf19));_0x52806d(_0x4cdf19);})[_0x7375('0x16')](function(_0x10a454){logger[_0x7375('0x12')]('ShowZendeskAccount',_0x10a454[_0x7375('0x14')],_0x2b0e51);_0xdc1da2(_0x2d2578[_0x7375('0x12')](0x1f4,_0x10a454['message']));});});};
\ No newline at end of file
+var _0xbad9=['map','model','catch','ShowZendeskAccount','ZendeskAccount','where','stringify','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','info','ZendeskAccount,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','GetZendeskAccount','options','raw','attributes','limit','include'];(function(_0x21d266,_0x1f2ddb){var _0x21e549=function(_0xa68d99){while(--_0xa68d99){_0x21d266['push'](_0x21d266['shift']());}};_0x21e549(++_0x1f2ddb);}(_0xbad9,0x6d));var _0x9bad=function(_0x3c6a41,_0xb6f415){_0x3c6a41=_0x3c6a41-0x0;var _0x35eb17=_0xbad9[_0x3c6a41];return _0x35eb17;};'use strict';var _=require(_0x9bad('0x0'));var util=require(_0x9bad('0x1'));var moment=require(_0x9bad('0x2'));var BPromise=require('bluebird');var rs=require(_0x9bad('0x3'));var fs=require('fs');var Redis=require(_0x9bad('0x4'));var db=require(_0x9bad('0x5'))['db'];var utils=require(_0x9bad('0x6'));var logger=require(_0x9bad('0x7'))(_0x9bad('0x8'));var config=require('../../config/environment');var jayson=require(_0x9bad('0x9'));var client=jayson[_0x9bad('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2f147f,_0x59eeeb,_0xe84dc4){return new BPromise(function(_0x3ec7c7,_0x167b4f){return client[_0x9bad('0xb')](_0x2f147f,_0xe84dc4)[_0x9bad('0xc')](function(_0x172241){logger[_0x9bad('0xd')](_0x9bad('0xe'),_0x59eeeb,_0x9bad('0xf'));logger[_0x9bad('0x10')]('ZendeskAccount,\x20%s,\x20%s,\x20%s',_0x59eeeb,_0x9bad('0xf'),JSON['stringify'](_0x172241));if(_0x172241[_0x9bad('0x11')]){if(_0x172241[_0x9bad('0x11')][_0x9bad('0x12')]===0x1f4){logger[_0x9bad('0x11')](_0x9bad('0xe'),_0x59eeeb,_0x172241[_0x9bad('0x11')][_0x9bad('0x13')]);return _0x167b4f(_0x172241[_0x9bad('0x11')][_0x9bad('0x13')]);}logger[_0x9bad('0x11')](_0x9bad('0xe'),_0x59eeeb,_0x172241['error'][_0x9bad('0x13')]);return _0x3ec7c7(_0x172241[_0x9bad('0x11')][_0x9bad('0x13')]);}else{logger[_0x9bad('0xd')](_0x9bad('0xe'),_0x59eeeb,'request\x20sent');_0x3ec7c7(_0x172241[_0x9bad('0x14')]['message']);}})['catch'](function(_0x539246){logger[_0x9bad('0x11')](_0x9bad('0xe'),_0x59eeeb,_0x539246);_0x167b4f(_0x539246);});});}exports[_0x9bad('0x15')]=function(_0x1dbb90){var _0xd52fe0=this;return new Promise(function(_0x99fef7,_0x36a7d8){return db['ZendeskAccount']['findAll']({'raw':_0x1dbb90['options']?_0x1dbb90[_0x9bad('0x16')][_0x9bad('0x17')]===undefined?!![]:![]:!![],'where':_0x1dbb90['options']?_0x1dbb90['options']['where']||null:null,'attributes':_0x1dbb90[_0x9bad('0x16')]?_0x1dbb90[_0x9bad('0x16')][_0x9bad('0x18')]||null:null,'limit':_0x1dbb90['options']?_0x1dbb90['options'][_0x9bad('0x19')]||null:null,'include':_0x1dbb90[_0x9bad('0x16')]?_0x1dbb90[_0x9bad('0x16')][_0x9bad('0x1a')]?_[_0x9bad('0x1b')](_0x1dbb90[_0x9bad('0x16')][_0x9bad('0x1a')],function(_0x13f3b3){return{'model':db[_0x13f3b3[_0x9bad('0x1c')]],'as':_0x13f3b3['as'],'attributes':_0x13f3b3[_0x9bad('0x18')],'include':_0x13f3b3['include']?_[_0x9bad('0x1b')](_0x13f3b3[_0x9bad('0x1a')],function(_0x2fba3a){return{'model':db[_0x2fba3a[_0x9bad('0x1c')]],'as':_0x2fba3a['as'],'attributes':_0x2fba3a[_0x9bad('0x18')],'include':_0x2fba3a[_0x9bad('0x1a')]?_[_0x9bad('0x1b')](_0x2fba3a['include'],function(_0x572f85){return{'model':db[_0x572f85[_0x9bad('0x1c')]],'as':_0x572f85['as'],'attributes':_0x572f85['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x1423c5){logger[_0x9bad('0xd')](_0x9bad('0x15'),_0x1dbb90);logger[_0x9bad('0x10')](_0x9bad('0x15'),_0x1dbb90,JSON['stringify'](_0x1423c5));_0x99fef7(_0x1423c5);})[_0x9bad('0x1d')](function(_0x14189f){logger['error']('GetZendeskAccount',_0x14189f[_0x9bad('0x13')],_0x1dbb90);_0x36a7d8(_0xd52fe0['error'](0x1f4,_0x14189f['message']));});});};exports[_0x9bad('0x1e')]=function(_0x46ded9){var _0x41b18b=this;return new Promise(function(_0x27c7bf,_0x187376){return db[_0x9bad('0x1f')]['find']({'raw':_0x46ded9['options']?_0x46ded9[_0x9bad('0x16')][_0x9bad('0x17')]===undefined?!![]:![]:!![],'where':_0x46ded9[_0x9bad('0x16')]?_0x46ded9[_0x9bad('0x16')][_0x9bad('0x20')]||null:null,'attributes':_0x46ded9[_0x9bad('0x16')]?_0x46ded9[_0x9bad('0x16')]['attributes']||null:null,'include':_0x46ded9[_0x9bad('0x16')]?_0x46ded9[_0x9bad('0x16')]['include']?_[_0x9bad('0x1b')](_0x46ded9[_0x9bad('0x16')]['include'],function(_0x5a64fb){return{'model':db[_0x5a64fb[_0x9bad('0x1c')]],'as':_0x5a64fb['as'],'attributes':_0x5a64fb[_0x9bad('0x18')],'include':_0x5a64fb[_0x9bad('0x1a')]?_[_0x9bad('0x1b')](_0x5a64fb['include'],function(_0x4c9261){return{'model':db[_0x4c9261[_0x9bad('0x1c')]],'as':_0x4c9261['as'],'attributes':_0x4c9261[_0x9bad('0x18')],'include':_0x4c9261[_0x9bad('0x1a')]?_[_0x9bad('0x1b')](_0x4c9261[_0x9bad('0x1a')],function(_0x1833eb){return{'model':db[_0x1833eb['model']],'as':_0x1833eb['as'],'attributes':_0x1833eb[_0x9bad('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2534cb){logger[_0x9bad('0xd')](_0x9bad('0x1e'),_0x46ded9);logger[_0x9bad('0x10')]('ShowZendeskAccount',_0x46ded9,JSON[_0x9bad('0x21')](_0x2534cb));_0x27c7bf(_0x2534cb);})[_0x9bad('0x1d')](function(_0x4458ee){logger[_0x9bad('0x11')](_0x9bad('0x1e'),_0x4458ee[_0x9bad('0x13')],_0x46ded9);_0x187376(_0x41b18b[_0x9bad('0x11')](0x1f4,_0x4458ee[_0x9bad('0x13')]));});});};
\ No newline at end of file
index cf51285..21b669d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fc2=['get','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./intZendeskConfiguration.controller','isAuthenticated','index','/:id','show'];(function(_0x15c2ac,_0xab0694){var _0x1d869b=function(_0x3eb635){while(--_0x3eb635){_0x15c2ac['push'](_0x15c2ac['shift']());}};_0x1d869b(++_0xab0694);}(_0x4fc2,0x111));var _0x24fc=function(_0x859a3a,_0x2864cd){_0x859a3a=_0x859a3a-0x0;var _0x48e4f0=_0x4fc2[_0x859a3a];return _0x48e4f0;};'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['getFields']);router[_0x24fc('0xd')](_0x24fc('0xf'),auth[_0x24fc('0x9')](),controller[_0x24fc('0x10')]);router[_0x24fc('0xd')](_0x24fc('0x11'),auth[_0x24fc('0x9')](),controller[_0x24fc('0x12')]);router['get'](_0x24fc('0x13'),auth[_0x24fc('0x9')](),controller['getTags']);router[_0x24fc('0x14')]('/',auth[_0x24fc('0x9')](),controller[_0x24fc('0x15')]);router[_0x24fc('0x14')](_0x24fc('0x13'),auth[_0x24fc('0x9')](),controller['setTags']);router[_0x24fc('0x16')](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0x17')]);router['delete'](_0x24fc('0xb'),auth['isAuthenticated'](),controller[_0x24fc('0x18')]);module[_0x24fc('0x19')]=router;
\ No newline at end of file
+var _0x0abf=['connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','getFields','/:id/subjects','getDescriptions','/:id/tags','getTags','post','create','setTags','put','/:id','update','delete','destroy','exports','multer','path'];(function(_0x4629ed,_0x59ef85){var _0x52ca04=function(_0x59dc63){while(--_0x59dc63){_0x4629ed['push'](_0x4629ed['shift']());}};_0x52ca04(++_0x59ef85);}(_0x0abf,0xe8));var _0xf0ab=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x0abf[_0x501510];return _0x1e6ee5;};'use strict';var multer=require(_0xf0ab('0x0'));var util=require('util');var path=require(_0xf0ab('0x1'));var timeout=require(_0xf0ab('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xf0ab('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xf0ab('0x4'));var config=require(_0xf0ab('0x5'));var controller=require(_0xf0ab('0x6'));router[_0xf0ab('0x7')]('/',auth[_0xf0ab('0x8')](),controller[_0xf0ab('0x9')]);router[_0xf0ab('0x7')]('/:id',auth[_0xf0ab('0x8')](),controller[_0xf0ab('0xa')]);router[_0xf0ab('0x7')](_0xf0ab('0xb'),auth['isAuthenticated'](),controller[_0xf0ab('0xc')]);router[_0xf0ab('0x7')](_0xf0ab('0xd'),auth['isAuthenticated'](),controller['getSubjects']);router[_0xf0ab('0x7')]('/:id/descriptions',auth[_0xf0ab('0x8')](),controller[_0xf0ab('0xe')]);router[_0xf0ab('0x7')](_0xf0ab('0xf'),auth[_0xf0ab('0x8')](),controller[_0xf0ab('0x10')]);router[_0xf0ab('0x11')]('/',auth['isAuthenticated'](),controller[_0xf0ab('0x12')]);router[_0xf0ab('0x11')](_0xf0ab('0xf'),auth[_0xf0ab('0x8')](),controller[_0xf0ab('0x13')]);router[_0xf0ab('0x14')](_0xf0ab('0x15'),auth[_0xf0ab('0x8')](),controller[_0xf0ab('0x16')]);router[_0xf0ab('0x17')](_0xf0ab('0x15'),auth[_0xf0ab('0x8')](),controller[_0xf0ab('0x18')]);module[_0xf0ab('0x19')]=router;
\ No newline at end of file
index 6fdc0cd..fe22ecc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7055=['STRING'];(function(_0x2faddb,_0xc18b78){var _0x273c05=function(_0x1a3785){while(--_0x1a3785){_0x2faddb['push'](_0x2faddb['shift']());}};_0x273c05(++_0xc18b78);}(_0x7055,0xa5));var _0x5705=function(_0x1057a3,_0x28d9b7){_0x1057a3=_0x1057a3-0x0;var _0x131cdb=_0x7055[_0x1057a3];return _0x131cdb;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x5705('0x0')]}};
\ No newline at end of file
+var _0x8a14=['sequelize','exports','STRING'];(function(_0x255d5b,_0x4f6f35){var _0x3e141a=function(_0x249ee2){while(--_0x249ee2){_0x255d5b['push'](_0x255d5b['shift']());}};_0x3e141a(++_0x4f6f35);}(_0x8a14,0x1b6));var _0x48a1=function(_0x38ab87,_0x18225f){_0x38ab87=_0x38ab87-0x0;var _0x53ace3=_0x8a14[_0x38ab87];return _0x53ace3;};'use strict';var Sequelize=require(_0x48a1('0x0'));module[_0x48a1('0x1')]={'name':{'type':Sequelize[_0x48a1('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 277cfb8..aa04f02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73f8=['util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','set','save','update','then','stack','name','send','index','rawAttributes','fieldName','key','model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','includeAll','include','ZendeskConfiguration','findAll','rows','catch','find','create','body','params','destroy','getFields','ZendeskField','order','getSubjects','getDescriptions','getTags','findOne','Tag','setTags','ids','eml-format','rimraf','fast-json-patch','bluebird','mustache'];(function(_0x2909b4,_0x1ad87f){var _0x47e4fa=function(_0x200acf){while(--_0x200acf){_0x2909b4['push'](_0x2909b4['shift']());}};_0x47e4fa(++_0x1ad87f);}(_0x73f8,0xa1));var _0x873f=function(_0x4e9628,_0x250573){_0x4e9628=_0x4e9628-0x0;var _0x27bc8c=_0x73f8[_0x4e9628];return _0x27bc8c;};'use strict';var emlformat=require(_0x873f('0x0'));var rimraf=require(_0x873f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x873f('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x873f('0x3'));var Mustache=require(_0x873f('0x4'));var util=require(_0x873f('0x5'));var path=require(_0x873f('0x6'));var sox=require(_0x873f('0x7'));var csv=require(_0x873f('0x8'));var ejs=require(_0x873f('0x9'));var fs=require('fs');var fs_extra=require(_0x873f('0xa'));var _=require(_0x873f('0xb'));var squel=require(_0x873f('0xc'));var crypto=require(_0x873f('0xd'));var jsforce=require(_0x873f('0xe'));var deskjs=require(_0x873f('0xf'));var toCsv=require(_0x873f('0x8'));var querystring=require(_0x873f('0x10'));var Papa=require(_0x873f('0x11'));var Redis=require('ioredis');var authService=require(_0x873f('0x12'));var qs=require(_0x873f('0x13'));var as=require(_0x873f('0x14'));var hardwareService=require(_0x873f('0x15'));var logger=require(_0x873f('0x16'))(_0x873f('0x17'));var utils=require('../../config/utils');var config=require(_0x873f('0x18'));var licenseUtil=require(_0x873f('0x19'));var db=require(_0x873f('0x1a'))['db'];function respondWithStatusCode(_0x490918,_0x2036bb){_0x2036bb=_0x2036bb||0xcc;return function(_0x3e26bc){if(_0x3e26bc){return _0x490918['sendStatus'](_0x2036bb);}return _0x490918['status'](_0x2036bb)[_0x873f('0x1b')]();};}function respondWithResult(_0x2d76a2,_0x109bed){_0x109bed=_0x109bed||0xc8;return function(_0x2ab140){if(_0x2ab140){return _0x2d76a2[_0x873f('0x1c')](_0x109bed)[_0x873f('0x1d')](_0x2ab140);}};}function respondWithFilteredResult(_0x4c4c64,_0x1dfa8f){return function(_0x17a4df){if(_0x17a4df){var _0x3729c3=typeof _0x1dfa8f[_0x873f('0x1e')]===_0x873f('0x1f')&&typeof _0x1dfa8f[_0x873f('0x20')]===_0x873f('0x1f');var _0x26a312=_0x17a4df[_0x873f('0x21')];var _0xedcf56=_0x3729c3?0x0:_0x1dfa8f[_0x873f('0x1e')];var _0x2d8876=_0x3729c3?_0x17a4df[_0x873f('0x21')]:_0x1dfa8f[_0x873f('0x1e')]+_0x1dfa8f[_0x873f('0x20')];var _0x24b571;if(_0x2d8876>=_0x26a312){_0x2d8876=_0x26a312;_0x24b571=0xc8;}else{_0x24b571=0xce;}_0x4c4c64[_0x873f('0x1c')](_0x24b571);return _0x4c4c64[_0x873f('0x22')]('Content-Range',_0xedcf56+'-'+_0x2d8876+'/'+_0x26a312)['json'](_0x17a4df);}return null;};}function patchUpdates(_0x4f7329){return function(_0x49d528){try{jsonpatch['apply'](_0x49d528,_0x4f7329,!![]);}catch(_0x33a4ce){return BPromise['reject'](_0x33a4ce);}return _0x49d528[_0x873f('0x23')]();};}function saveUpdates(_0x50e86d,_0x580703){return function(_0x1a5b04){if(_0x1a5b04){return _0x1a5b04[_0x873f('0x24')](_0x50e86d)[_0x873f('0x25')](function(_0xf35962){return _0xf35962;});}return null;};}function removeEntity(_0x3dcb71,_0x3aa1b6){return function(_0xa47401){if(_0xa47401){return _0xa47401['destroy']()[_0x873f('0x25')](function(){_0x3dcb71[_0x873f('0x1c')](0xcc)[_0x873f('0x1b')]();});}};}function handleEntityNotFound(_0xb01271,_0x406412){return function(_0x545cec){if(!_0x545cec){_0xb01271['sendStatus'](0x194);}return _0x545cec;};}function handleError(_0x2f1871,_0x3ed159){_0x3ed159=_0x3ed159||0x1f4;return function(_0x523f95){logger['error'](_0x523f95[_0x873f('0x26')]);if(_0x523f95[_0x873f('0x27')]){delete _0x523f95[_0x873f('0x27')];}_0x2f1871[_0x873f('0x1c')](_0x3ed159)[_0x873f('0x28')](_0x523f95);};}exports[_0x873f('0x29')]=function(_0x33848f,_0x3e6f6e){var _0x2d3292={},_0xd1cabc={},_0x42e288={'count':0x0,'rows':[]};var _0x38bb92=_['map'](db['ZendeskConfiguration'][_0x873f('0x2a')],function(_0x5ca9b8){return{'name':_0x5ca9b8[_0x873f('0x2b')],'type':_0x5ca9b8['type'][_0x873f('0x2c')]};});_0xd1cabc[_0x873f('0x2d')]=_[_0x873f('0x2e')](_0x38bb92,'name');_0xd1cabc['query']=_[_0x873f('0x2f')](_0x33848f['query']);_0xd1cabc[_0x873f('0x30')]=_[_0x873f('0x31')](_0xd1cabc['model'],_0xd1cabc[_0x873f('0x32')]);_0x2d3292[_0x873f('0x33')]=_['intersection'](_0xd1cabc[_0x873f('0x2d')],qs[_0x873f('0x34')](_0x33848f[_0x873f('0x32')]['fields']));_0x2d3292[_0x873f('0x33')]=_0x2d3292[_0x873f('0x33')][_0x873f('0x35')]?_0x2d3292['attributes']:_0xd1cabc['model'];if(!_0x33848f[_0x873f('0x32')][_0x873f('0x36')](_0x873f('0x37'))){_0x2d3292[_0x873f('0x20')]=qs[_0x873f('0x20')](_0x33848f[_0x873f('0x32')]['limit']);_0x2d3292[_0x873f('0x1e')]=qs[_0x873f('0x1e')](_0x33848f[_0x873f('0x32')]['offset']);}_0x2d3292['order']=qs[_0x873f('0x38')](_0x33848f[_0x873f('0x32')]['sort']);_0x2d3292[_0x873f('0x39')]=qs[_0x873f('0x30')](_[_0x873f('0x3a')](_0x33848f['query'],_0xd1cabc[_0x873f('0x30')]),_0x38bb92);if(_0x33848f[_0x873f('0x32')][_0x873f('0x3b')]){_0x2d3292[_0x873f('0x39')]=_[_0x873f('0x3c')](_0x2d3292[_0x873f('0x39')],{'$or':_['map'](_0x38bb92,function(_0x4eae93){if(_0x4eae93['type']!=='VIRTUAL'){var _0x264267={};_0x264267[_0x4eae93[_0x873f('0x27')]]={'$like':'%'+_0x33848f[_0x873f('0x32')][_0x873f('0x3b')]+'%'};return _0x264267;}})});}_0x2d3292=_[_0x873f('0x3c')]({},_0x2d3292,_0x33848f[_0x873f('0x3d')]);var _0x519e92={'where':_0x2d3292[_0x873f('0x39')]};return db['ZendeskConfiguration'][_0x873f('0x21')](_0x519e92)['then'](function(_0x2fd006){_0x42e288[_0x873f('0x21')]=_0x2fd006;if(_0x33848f[_0x873f('0x32')][_0x873f('0x3e')]){_0x2d3292[_0x873f('0x3f')]=[{'all':!![]}];}return db[_0x873f('0x40')][_0x873f('0x41')](_0x2d3292);})[_0x873f('0x25')](function(_0x2376ec){_0x42e288[_0x873f('0x42')]=_0x2376ec;return _0x42e288;})[_0x873f('0x25')](respondWithFilteredResult(_0x3e6f6e,_0x2d3292))[_0x873f('0x43')](handleError(_0x3e6f6e,null));};exports['show']=function(_0x4f4621,_0x36a416){var _0x3fadc4={'raw':![],'where':{'id':_0x4f4621['params']['id']}},_0x424335={};_0x424335[_0x873f('0x2d')]=_[_0x873f('0x2f')](db[_0x873f('0x40')]['rawAttributes']);_0x424335[_0x873f('0x32')]=_['keys'](_0x4f4621['query']);_0x424335['filters']=_[_0x873f('0x31')](_0x424335[_0x873f('0x2d')],_0x424335[_0x873f('0x32')]);_0x3fadc4[_0x873f('0x33')]=_[_0x873f('0x31')](_0x424335['model'],qs[_0x873f('0x34')](_0x4f4621['query']['fields']));_0x3fadc4[_0x873f('0x33')]=_0x3fadc4[_0x873f('0x33')]['length']?_0x3fadc4[_0x873f('0x33')]:_0x424335[_0x873f('0x2d')];if(_0x4f4621[_0x873f('0x32')]['includeAll']){_0x3fadc4[_0x873f('0x3f')]=[{'all':!![]}];}_0x3fadc4=_[_0x873f('0x3c')]({},_0x3fadc4,_0x4f4621['options']);return db[_0x873f('0x40')][_0x873f('0x44')](_0x3fadc4)['then'](handleEntityNotFound(_0x36a416,null))[_0x873f('0x25')](respondWithResult(_0x36a416,null))[_0x873f('0x43')](handleError(_0x36a416,null));};exports[_0x873f('0x45')]=function(_0x9c1447,_0x10a6a6){return db[_0x873f('0x40')][_0x873f('0x45')](_0x9c1447[_0x873f('0x46')],{})['then'](respondWithResult(_0x10a6a6,0xc9))[_0x873f('0x43')](handleError(_0x10a6a6,null));};exports[_0x873f('0x24')]=function(_0x4c33fb,_0x203a59){if(_0x4c33fb[_0x873f('0x46')]['id']){delete _0x4c33fb[_0x873f('0x46')]['id'];}return db[_0x873f('0x40')]['find']({'where':{'id':_0x4c33fb[_0x873f('0x47')]['id']}})[_0x873f('0x25')](handleEntityNotFound(_0x203a59,null))[_0x873f('0x25')](saveUpdates(_0x4c33fb[_0x873f('0x46')],null))[_0x873f('0x25')](respondWithResult(_0x203a59,null))[_0x873f('0x43')](handleError(_0x203a59,null));};exports[_0x873f('0x48')]=function(_0x589e65,_0x272311){return db[_0x873f('0x40')][_0x873f('0x44')]({'where':{'id':_0x589e65['params']['id']}})[_0x873f('0x25')](handleEntityNotFound(_0x272311,null))[_0x873f('0x25')](removeEntity(_0x272311,null))['catch'](handleError(_0x272311,null));};exports[_0x873f('0x49')]=function(_0x12a024,_0x5586e4,_0x73a587){var _0x1f9b86={};var _0x1126da={};var _0x26e3ed;var _0x584e1b;return db[_0x873f('0x40')]['findOne']({'where':{'id':_0x12a024[_0x873f('0x47')]['id']}})[_0x873f('0x25')](handleEntityNotFound(_0x5586e4,null))[_0x873f('0x25')](function(_0x3fa122){if(_0x3fa122){_0x26e3ed=_0x3fa122;_0x1126da[_0x873f('0x2d')]=_['keys'](db[_0x873f('0x4a')][_0x873f('0x2a')]);_0x1126da[_0x873f('0x32')]=_[_0x873f('0x2f')](_0x12a024[_0x873f('0x32')]);_0x1126da[_0x873f('0x30')]=_[_0x873f('0x31')](_0x1126da[_0x873f('0x2d')],_0x1126da[_0x873f('0x32')]);_0x1f9b86[_0x873f('0x33')]=_[_0x873f('0x31')](_0x1126da[_0x873f('0x2d')],qs[_0x873f('0x34')](_0x12a024[_0x873f('0x32')][_0x873f('0x34')]));_0x1f9b86[_0x873f('0x33')]=_0x1f9b86['attributes'][_0x873f('0x35')]?_0x1f9b86['attributes']:_0x1126da['model'];_0x1f9b86[_0x873f('0x4b')]=qs[_0x873f('0x38')](_0x12a024[_0x873f('0x32')][_0x873f('0x38')]);_0x1f9b86[_0x873f('0x39')]=qs[_0x873f('0x30')](_[_0x873f('0x3a')](_0x12a024['query'],_0x1126da['filters']));if(_0x12a024[_0x873f('0x32')][_0x873f('0x3b')]){_0x1f9b86[_0x873f('0x39')]=_[_0x873f('0x3c')](_0x1f9b86[_0x873f('0x39')],{'$or':_['map'](_0x1f9b86[_0x873f('0x33')],function(_0x3634ca){var _0x1746dd={};_0x1746dd[_0x3634ca]={'$like':'%'+_0x12a024['query'][_0x873f('0x3b')]+'%'};return _0x1746dd;})});}_0x1f9b86=_[_0x873f('0x3c')]({},_0x1f9b86,_0x12a024[_0x873f('0x3d')]);return _0x26e3ed[_0x873f('0x49')](_0x1f9b86);}})[_0x873f('0x25')](function(_0x203e7a){if(_0x203e7a){_0x584e1b=_0x203e7a[_0x873f('0x35')];if(!_0x12a024['query'][_0x873f('0x36')](_0x873f('0x37'))){_0x1f9b86['limit']=qs['limit'](_0x12a024[_0x873f('0x32')][_0x873f('0x20')]);_0x1f9b86[_0x873f('0x1e')]=qs['offset'](_0x12a024[_0x873f('0x32')][_0x873f('0x1e')]);}return _0x26e3ed[_0x873f('0x49')](_0x1f9b86);}})['then'](function(_0x160210){if(_0x160210){return _0x160210?{'count':_0x584e1b,'rows':_0x160210}:null;}})[_0x873f('0x25')](respondWithResult(_0x5586e4,null))['catch'](handleError(_0x5586e4,null));};exports[_0x873f('0x4c')]=function(_0x236988,_0x31e938,_0x1354cf){var _0x2609e7={};var _0x5a88b8={};var _0x354442;var _0x13c6c4;return db['ZendeskConfiguration']['findOne']({'where':{'id':_0x236988[_0x873f('0x47')]['id']}})['then'](handleEntityNotFound(_0x31e938,null))[_0x873f('0x25')](function(_0x480cc1){if(_0x480cc1){_0x354442=_0x480cc1;_0x5a88b8['model']=_[_0x873f('0x2f')](db[_0x873f('0x4a')]['rawAttributes']);_0x5a88b8[_0x873f('0x32')]=_[_0x873f('0x2f')](_0x236988[_0x873f('0x32')]);_0x5a88b8['filters']=_[_0x873f('0x31')](_0x5a88b8['model'],_0x5a88b8['query']);_0x2609e7['attributes']=_[_0x873f('0x31')](_0x5a88b8['model'],qs[_0x873f('0x34')](_0x236988['query'][_0x873f('0x34')]));_0x2609e7[_0x873f('0x33')]=_0x2609e7[_0x873f('0x33')][_0x873f('0x35')]?_0x2609e7[_0x873f('0x33')]:_0x5a88b8[_0x873f('0x2d')];_0x2609e7['order']=qs[_0x873f('0x38')](_0x236988['query']['sort']);_0x2609e7[_0x873f('0x39')]=qs[_0x873f('0x30')](_[_0x873f('0x3a')](_0x236988[_0x873f('0x32')],_0x5a88b8[_0x873f('0x30')]));if(_0x236988['query'][_0x873f('0x3b')]){_0x2609e7['where']=_[_0x873f('0x3c')](_0x2609e7[_0x873f('0x39')],{'$or':_[_0x873f('0x2e')](_0x2609e7[_0x873f('0x33')],function(_0xc46e6e){var _0x4745d2={};_0x4745d2[_0xc46e6e]={'$like':'%'+_0x236988['query'][_0x873f('0x3b')]+'%'};return _0x4745d2;})});}_0x2609e7=_['merge']({},_0x2609e7,_0x236988[_0x873f('0x3d')]);return _0x354442[_0x873f('0x4c')](_0x2609e7);}})[_0x873f('0x25')](function(_0x3a9c9a){if(_0x3a9c9a){_0x13c6c4=_0x3a9c9a[_0x873f('0x35')];if(!_0x236988[_0x873f('0x32')][_0x873f('0x36')](_0x873f('0x37'))){_0x2609e7[_0x873f('0x20')]=qs[_0x873f('0x20')](_0x236988['query'][_0x873f('0x20')]);_0x2609e7['offset']=qs[_0x873f('0x1e')](_0x236988[_0x873f('0x32')][_0x873f('0x1e')]);}return _0x354442[_0x873f('0x4c')](_0x2609e7);}})[_0x873f('0x25')](function(_0x3db732){if(_0x3db732){return _0x3db732?{'count':_0x13c6c4,'rows':_0x3db732}:null;}})[_0x873f('0x25')](respondWithResult(_0x31e938,null))[_0x873f('0x43')](handleError(_0x31e938,null));};exports[_0x873f('0x4d')]=function(_0x4c9bbd,_0x32c922,_0x2971e4){var _0x52bec6={};var _0x4807f6={};var _0x454aea;var _0x32fcd3;return db[_0x873f('0x40')]['findOne']({'where':{'id':_0x4c9bbd[_0x873f('0x47')]['id']}})[_0x873f('0x25')](handleEntityNotFound(_0x32c922,null))['then'](function(_0x5d89c5){if(_0x5d89c5){_0x454aea=_0x5d89c5;_0x4807f6[_0x873f('0x2d')]=_[_0x873f('0x2f')](db[_0x873f('0x4a')]['rawAttributes']);_0x4807f6[_0x873f('0x32')]=_[_0x873f('0x2f')](_0x4c9bbd[_0x873f('0x32')]);_0x4807f6[_0x873f('0x30')]=_['intersection'](_0x4807f6['model'],_0x4807f6[_0x873f('0x32')]);_0x52bec6[_0x873f('0x33')]=_[_0x873f('0x31')](_0x4807f6[_0x873f('0x2d')],qs[_0x873f('0x34')](_0x4c9bbd[_0x873f('0x32')][_0x873f('0x34')]));_0x52bec6[_0x873f('0x33')]=_0x52bec6['attributes'][_0x873f('0x35')]?_0x52bec6[_0x873f('0x33')]:_0x4807f6['model'];_0x52bec6[_0x873f('0x4b')]=qs['sort'](_0x4c9bbd[_0x873f('0x32')][_0x873f('0x38')]);_0x52bec6['where']=qs['filters'](_['pick'](_0x4c9bbd[_0x873f('0x32')],_0x4807f6[_0x873f('0x30')]));if(_0x4c9bbd[_0x873f('0x32')][_0x873f('0x3b')]){_0x52bec6[_0x873f('0x39')]=_[_0x873f('0x3c')](_0x52bec6['where'],{'$or':_[_0x873f('0x2e')](_0x52bec6['attributes'],function(_0x4a6abe){var _0x58f08f={};_0x58f08f[_0x4a6abe]={'$like':'%'+_0x4c9bbd[_0x873f('0x32')][_0x873f('0x3b')]+'%'};return _0x58f08f;})});}_0x52bec6=_[_0x873f('0x3c')]({},_0x52bec6,_0x4c9bbd[_0x873f('0x3d')]);return _0x454aea[_0x873f('0x4d')](_0x52bec6);}})[_0x873f('0x25')](function(_0xa84148){if(_0xa84148){_0x32fcd3=_0xa84148[_0x873f('0x35')];if(!_0x4c9bbd[_0x873f('0x32')][_0x873f('0x36')](_0x873f('0x37'))){_0x52bec6['limit']=qs['limit'](_0x4c9bbd['query'][_0x873f('0x20')]);_0x52bec6[_0x873f('0x1e')]=qs['offset'](_0x4c9bbd[_0x873f('0x32')][_0x873f('0x1e')]);}return _0x454aea[_0x873f('0x4d')](_0x52bec6);}})['then'](function(_0x1222f7){if(_0x1222f7){return _0x1222f7?{'count':_0x32fcd3,'rows':_0x1222f7}:null;}})[_0x873f('0x25')](respondWithResult(_0x32c922,null))[_0x873f('0x43')](handleError(_0x32c922,null));};exports[_0x873f('0x4e')]=function(_0x3e1c1a,_0x5a25df,_0x58ecc0){var _0x202979={};var _0x3f2498={};var _0x47114b;var _0x4f5cf5;return db[_0x873f('0x40')][_0x873f('0x4f')]({'where':{'id':_0x3e1c1a[_0x873f('0x47')]['id']}})[_0x873f('0x25')](handleEntityNotFound(_0x5a25df,null))[_0x873f('0x25')](function(_0x59b9c4){if(_0x59b9c4){_0x47114b=_0x59b9c4;_0x3f2498[_0x873f('0x2d')]=_[_0x873f('0x2f')](db[_0x873f('0x50')][_0x873f('0x2a')]);_0x3f2498[_0x873f('0x32')]=_[_0x873f('0x2f')](_0x3e1c1a['query']);_0x3f2498['filters']=_[_0x873f('0x31')](_0x3f2498[_0x873f('0x2d')],_0x3f2498[_0x873f('0x32')]);_0x202979['attributes']=_[_0x873f('0x31')](_0x3f2498[_0x873f('0x2d')],qs[_0x873f('0x34')](_0x3e1c1a['query'][_0x873f('0x34')]));_0x202979['attributes']=_0x202979[_0x873f('0x33')][_0x873f('0x35')]?_0x202979['attributes']:_0x3f2498['model'];_0x202979[_0x873f('0x4b')]=qs[_0x873f('0x38')](_0x3e1c1a[_0x873f('0x32')][_0x873f('0x38')]);_0x202979['where']=qs['filters'](_['pick'](_0x3e1c1a[_0x873f('0x32')],_0x3f2498[_0x873f('0x30')]));if(_0x3e1c1a[_0x873f('0x32')][_0x873f('0x3b')]){_0x202979[_0x873f('0x39')]=_[_0x873f('0x3c')](_0x202979[_0x873f('0x39')],{'$or':_[_0x873f('0x2e')](_0x202979[_0x873f('0x33')],function(_0x513a54){var _0x5119a0={};_0x5119a0[_0x513a54]={'$like':'%'+_0x3e1c1a[_0x873f('0x32')][_0x873f('0x3b')]+'%'};return _0x5119a0;})});}_0x202979=_[_0x873f('0x3c')]({},_0x202979,_0x3e1c1a[_0x873f('0x3d')]);return _0x47114b[_0x873f('0x4e')](_0x202979);}})[_0x873f('0x25')](function(_0x939999){if(_0x939999){_0x4f5cf5=_0x939999[_0x873f('0x35')];if(!_0x3e1c1a[_0x873f('0x32')]['hasOwnProperty'](_0x873f('0x37'))){_0x202979[_0x873f('0x20')]=qs[_0x873f('0x20')](_0x3e1c1a['query'][_0x873f('0x20')]);_0x202979[_0x873f('0x1e')]=qs[_0x873f('0x1e')](_0x3e1c1a[_0x873f('0x32')]['offset']);}return _0x47114b['getTags'](_0x202979);}})['then'](function(_0x51361c){if(_0x51361c){return _0x51361c?{'count':_0x4f5cf5,'rows':_0x51361c}:null;}})[_0x873f('0x25')](respondWithResult(_0x5a25df,null))[_0x873f('0x43')](handleError(_0x5a25df,null));};exports[_0x873f('0x51')]=function(_0x343aab,_0x1e2412,_0x55f59f){if(_0x343aab['body']['id']){delete _0x343aab[_0x873f('0x46')]['id'];}return db[_0x873f('0x40')][_0x873f('0x4f')]({'where':{'id':_0x343aab[_0x873f('0x47')]['id']}})['then'](handleEntityNotFound(_0x1e2412,null))[_0x873f('0x25')](function(_0x2375d6){if(_0x2375d6){return _0x2375d6[_0x873f('0x51')](_0x343aab[_0x873f('0x46')][_0x873f('0x52')]||[]);}return null;})[_0x873f('0x25')](respondWithResult(_0x1e2412,null))[_0x873f('0x43')](handleError(_0x1e2412,null));};
\ No newline at end of file
+var _0x4377=['count','set','Content-Range','json','apply','reject','update','then','destroy','error','stack','name','send','index','map','ZendeskConfiguration','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','order','sort','where','pick','filter','VIRTUAL','include','rows','catch','show','includeAll','merge','options','find','create','body','params','getFields','findOne','nolimit','getSubjects','ZendeskField','hasOwnProperty','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','sendStatus','end','status','offset','undefined','limit'];(function(_0x24cb8c,_0x423901){var _0x2b9b59=function(_0x21ded5){while(--_0x21ded5){_0x24cb8c['push'](_0x24cb8c['shift']());}};_0x2b9b59(++_0x423901);}(_0x4377,0xe2));var _0x7437=function(_0x36cbc7,_0xe7956a){_0x36cbc7=_0x36cbc7-0x0;var _0xe182bf=_0x4377[_0x36cbc7];return _0xe182bf;};'use strict';var emlformat=require(_0x7437('0x0'));var rimraf=require(_0x7437('0x1'));var zipdir=require(_0x7437('0x2'));var jsonpatch=require(_0x7437('0x3'));var rp=require('request-promise');var moment=require(_0x7437('0x4'));var BPromise=require(_0x7437('0x5'));var Mustache=require(_0x7437('0x6'));var util=require(_0x7437('0x7'));var path=require(_0x7437('0x8'));var sox=require(_0x7437('0x9'));var csv=require(_0x7437('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x7437('0xb'));var crypto=require(_0x7437('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x7437('0xd'));var toCsv=require('to-csv');var querystring=require(_0x7437('0xe'));var Papa=require(_0x7437('0xf'));var Redis=require(_0x7437('0x10'));var authService=require(_0x7437('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x7437('0x12'));var hardwareService=require(_0x7437('0x13'));var logger=require('../../config/logger')(_0x7437('0x14'));var utils=require('../../config/utils');var config=require(_0x7437('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x7437('0x16'))['db'];function respondWithStatusCode(_0x4bfb1f,_0x49744d){_0x49744d=_0x49744d||0xcc;return function(_0x1c9b7f){if(_0x1c9b7f){return _0x4bfb1f[_0x7437('0x17')](_0x49744d);}return _0x4bfb1f['status'](_0x49744d)[_0x7437('0x18')]();};}function respondWithResult(_0x255974,_0x3933d8){_0x3933d8=_0x3933d8||0xc8;return function(_0x4bdf87){if(_0x4bdf87){return _0x255974[_0x7437('0x19')](_0x3933d8)['json'](_0x4bdf87);}};}function respondWithFilteredResult(_0x2f5ed8,_0x33f073){return function(_0x2fe07e){if(_0x2fe07e){var _0x556ca7=typeof _0x33f073[_0x7437('0x1a')]===_0x7437('0x1b')&&typeof _0x33f073[_0x7437('0x1c')]===_0x7437('0x1b');var _0x2369a8=_0x2fe07e[_0x7437('0x1d')];var _0x4526c3=_0x556ca7?0x0:_0x33f073[_0x7437('0x1a')];var _0x1a65b1=_0x556ca7?_0x2fe07e[_0x7437('0x1d')]:_0x33f073[_0x7437('0x1a')]+_0x33f073[_0x7437('0x1c')];var _0x1f100b;if(_0x1a65b1>=_0x2369a8){_0x1a65b1=_0x2369a8;_0x1f100b=0xc8;}else{_0x1f100b=0xce;}_0x2f5ed8[_0x7437('0x19')](_0x1f100b);return _0x2f5ed8[_0x7437('0x1e')](_0x7437('0x1f'),_0x4526c3+'-'+_0x1a65b1+'/'+_0x2369a8)[_0x7437('0x20')](_0x2fe07e);}return null;};}function patchUpdates(_0x2b37f4){return function(_0x58e590){try{jsonpatch[_0x7437('0x21')](_0x58e590,_0x2b37f4,!![]);}catch(_0x3a8841){return BPromise[_0x7437('0x22')](_0x3a8841);}return _0x58e590['save']();};}function saveUpdates(_0x2e5cd6,_0x4619f3){return function(_0xaed6db){if(_0xaed6db){return _0xaed6db[_0x7437('0x23')](_0x2e5cd6)[_0x7437('0x24')](function(_0x49bc82){return _0x49bc82;});}return null;};}function removeEntity(_0x3cc7df,_0x2c598e){return function(_0x969dcc){if(_0x969dcc){return _0x969dcc[_0x7437('0x25')]()[_0x7437('0x24')](function(){_0x3cc7df[_0x7437('0x19')](0xcc)[_0x7437('0x18')]();});}};}function handleEntityNotFound(_0x18eb09,_0x532894){return function(_0x55c275){if(!_0x55c275){_0x18eb09['sendStatus'](0x194);}return _0x55c275;};}function handleError(_0x1fbdeb,_0x3f1897){_0x3f1897=_0x3f1897||0x1f4;return function(_0x1f0d4b){logger[_0x7437('0x26')](_0x1f0d4b[_0x7437('0x27')]);if(_0x1f0d4b[_0x7437('0x28')]){delete _0x1f0d4b[_0x7437('0x28')];}_0x1fbdeb[_0x7437('0x19')](_0x3f1897)[_0x7437('0x29')](_0x1f0d4b);};}exports[_0x7437('0x2a')]=function(_0x517d13,_0x3f571b){var _0x534485={},_0x411cf1={},_0x1dcd90={'count':0x0,'rows':[]};var _0x375b75=_[_0x7437('0x2b')](db[_0x7437('0x2c')][_0x7437('0x2d')],function(_0x2b9258){return{'name':_0x2b9258[_0x7437('0x2e')],'type':_0x2b9258[_0x7437('0x2f')][_0x7437('0x30')]};});_0x411cf1['model']=_[_0x7437('0x2b')](_0x375b75,_0x7437('0x28'));_0x411cf1[_0x7437('0x31')]=_[_0x7437('0x32')](_0x517d13['query']);_0x411cf1[_0x7437('0x33')]=_[_0x7437('0x34')](_0x411cf1['model'],_0x411cf1['query']);_0x534485['attributes']=_[_0x7437('0x34')](_0x411cf1[_0x7437('0x35')],qs['fields'](_0x517d13['query'][_0x7437('0x36')]));_0x534485[_0x7437('0x37')]=_0x534485[_0x7437('0x37')][_0x7437('0x38')]?_0x534485[_0x7437('0x37')]:_0x411cf1[_0x7437('0x35')];if(!_0x517d13[_0x7437('0x31')]['hasOwnProperty']('nolimit')){_0x534485[_0x7437('0x1c')]=qs[_0x7437('0x1c')](_0x517d13[_0x7437('0x31')][_0x7437('0x1c')]);_0x534485[_0x7437('0x1a')]=qs[_0x7437('0x1a')](_0x517d13[_0x7437('0x31')]['offset']);}_0x534485[_0x7437('0x39')]=qs[_0x7437('0x3a')](_0x517d13[_0x7437('0x31')]['sort']);_0x534485[_0x7437('0x3b')]=qs[_0x7437('0x33')](_[_0x7437('0x3c')](_0x517d13[_0x7437('0x31')],_0x411cf1[_0x7437('0x33')]),_0x375b75);if(_0x517d13[_0x7437('0x31')][_0x7437('0x3d')]){_0x534485[_0x7437('0x3b')]=_['merge'](_0x534485[_0x7437('0x3b')],{'$or':_[_0x7437('0x2b')](_0x375b75,function(_0x30d9cb){if(_0x30d9cb['type']!==_0x7437('0x3e')){var _0x1e8599={};_0x1e8599[_0x30d9cb[_0x7437('0x28')]]={'$like':'%'+_0x517d13[_0x7437('0x31')]['filter']+'%'};return _0x1e8599;}})});}_0x534485=_['merge']({},_0x534485,_0x517d13['options']);var _0xb3e18a={'where':_0x534485['where']};return db[_0x7437('0x2c')][_0x7437('0x1d')](_0xb3e18a)['then'](function(_0x5dfdb5){_0x1dcd90[_0x7437('0x1d')]=_0x5dfdb5;if(_0x517d13[_0x7437('0x31')]['includeAll']){_0x534485[_0x7437('0x3f')]=[{'all':!![]}];}return db['ZendeskConfiguration']['findAll'](_0x534485);})[_0x7437('0x24')](function(_0x567dd8){_0x1dcd90[_0x7437('0x40')]=_0x567dd8;return _0x1dcd90;})[_0x7437('0x24')](respondWithFilteredResult(_0x3f571b,_0x534485))[_0x7437('0x41')](handleError(_0x3f571b,null));};exports[_0x7437('0x42')]=function(_0x3080b8,_0x41ed13){var _0x1a0017={'raw':![],'where':{'id':_0x3080b8['params']['id']}},_0x567993={};_0x567993[_0x7437('0x35')]=_[_0x7437('0x32')](db[_0x7437('0x2c')]['rawAttributes']);_0x567993[_0x7437('0x31')]=_[_0x7437('0x32')](_0x3080b8[_0x7437('0x31')]);_0x567993[_0x7437('0x33')]=_[_0x7437('0x34')](_0x567993[_0x7437('0x35')],_0x567993['query']);_0x1a0017[_0x7437('0x37')]=_[_0x7437('0x34')](_0x567993[_0x7437('0x35')],qs[_0x7437('0x36')](_0x3080b8[_0x7437('0x31')][_0x7437('0x36')]));_0x1a0017['attributes']=_0x1a0017[_0x7437('0x37')][_0x7437('0x38')]?_0x1a0017[_0x7437('0x37')]:_0x567993[_0x7437('0x35')];if(_0x3080b8['query'][_0x7437('0x43')]){_0x1a0017[_0x7437('0x3f')]=[{'all':!![]}];}_0x1a0017=_[_0x7437('0x44')]({},_0x1a0017,_0x3080b8[_0x7437('0x45')]);return db[_0x7437('0x2c')][_0x7437('0x46')](_0x1a0017)[_0x7437('0x24')](handleEntityNotFound(_0x41ed13,null))[_0x7437('0x24')](respondWithResult(_0x41ed13,null))[_0x7437('0x41')](handleError(_0x41ed13,null));};exports[_0x7437('0x47')]=function(_0x421134,_0x1fda52){return db[_0x7437('0x2c')][_0x7437('0x47')](_0x421134[_0x7437('0x48')],{})[_0x7437('0x24')](respondWithResult(_0x1fda52,0xc9))[_0x7437('0x41')](handleError(_0x1fda52,null));};exports[_0x7437('0x23')]=function(_0x35c7a9,_0x45a0a2){if(_0x35c7a9['body']['id']){delete _0x35c7a9[_0x7437('0x48')]['id'];}return db['ZendeskConfiguration'][_0x7437('0x46')]({'where':{'id':_0x35c7a9[_0x7437('0x49')]['id']}})[_0x7437('0x24')](handleEntityNotFound(_0x45a0a2,null))['then'](saveUpdates(_0x35c7a9[_0x7437('0x48')],null))[_0x7437('0x24')](respondWithResult(_0x45a0a2,null))[_0x7437('0x41')](handleError(_0x45a0a2,null));};exports[_0x7437('0x25')]=function(_0x47dc74,_0x9fad7d){return db[_0x7437('0x2c')][_0x7437('0x46')]({'where':{'id':_0x47dc74['params']['id']}})[_0x7437('0x24')](handleEntityNotFound(_0x9fad7d,null))['then'](removeEntity(_0x9fad7d,null))['catch'](handleError(_0x9fad7d,null));};exports[_0x7437('0x4a')]=function(_0xde93d5,_0x1d11f5,_0x2dddd){var _0x3febca={};var _0x42aa05={};var _0x5895b;var _0xbecd35;return db[_0x7437('0x2c')][_0x7437('0x4b')]({'where':{'id':_0xde93d5[_0x7437('0x49')]['id']}})['then'](handleEntityNotFound(_0x1d11f5,null))['then'](function(_0x1091b2){if(_0x1091b2){_0x5895b=_0x1091b2;_0x42aa05['model']=_[_0x7437('0x32')](db['ZendeskField'][_0x7437('0x2d')]);_0x42aa05[_0x7437('0x31')]=_['keys'](_0xde93d5[_0x7437('0x31')]);_0x42aa05[_0x7437('0x33')]=_[_0x7437('0x34')](_0x42aa05['model'],_0x42aa05[_0x7437('0x31')]);_0x3febca[_0x7437('0x37')]=_[_0x7437('0x34')](_0x42aa05['model'],qs[_0x7437('0x36')](_0xde93d5[_0x7437('0x31')][_0x7437('0x36')]));_0x3febca[_0x7437('0x37')]=_0x3febca[_0x7437('0x37')][_0x7437('0x38')]?_0x3febca['attributes']:_0x42aa05[_0x7437('0x35')];_0x3febca[_0x7437('0x39')]=qs[_0x7437('0x3a')](_0xde93d5['query'][_0x7437('0x3a')]);_0x3febca['where']=qs['filters'](_['pick'](_0xde93d5['query'],_0x42aa05[_0x7437('0x33')]));if(_0xde93d5[_0x7437('0x31')]['filter']){_0x3febca[_0x7437('0x3b')]=_[_0x7437('0x44')](_0x3febca[_0x7437('0x3b')],{'$or':_[_0x7437('0x2b')](_0x3febca[_0x7437('0x37')],function(_0x4fba6e){var _0x564e89={};_0x564e89[_0x4fba6e]={'$like':'%'+_0xde93d5['query'][_0x7437('0x3d')]+'%'};return _0x564e89;})});}_0x3febca=_['merge']({},_0x3febca,_0xde93d5[_0x7437('0x45')]);return _0x5895b['getFields'](_0x3febca);}})[_0x7437('0x24')](function(_0x1225bd){if(_0x1225bd){_0xbecd35=_0x1225bd['length'];if(!_0xde93d5[_0x7437('0x31')]['hasOwnProperty'](_0x7437('0x4c'))){_0x3febca[_0x7437('0x1c')]=qs[_0x7437('0x1c')](_0xde93d5[_0x7437('0x31')][_0x7437('0x1c')]);_0x3febca[_0x7437('0x1a')]=qs[_0x7437('0x1a')](_0xde93d5['query'][_0x7437('0x1a')]);}return _0x5895b[_0x7437('0x4a')](_0x3febca);}})[_0x7437('0x24')](function(_0x175054){if(_0x175054){return _0x175054?{'count':_0xbecd35,'rows':_0x175054}:null;}})[_0x7437('0x24')](respondWithResult(_0x1d11f5,null))[_0x7437('0x41')](handleError(_0x1d11f5,null));};exports[_0x7437('0x4d')]=function(_0x3f14f6,_0x2fb170,_0x2b22fd){var _0xe9839d={};var _0x27446e={};var _0x1eb4be;var _0x13d909;return db['ZendeskConfiguration'][_0x7437('0x4b')]({'where':{'id':_0x3f14f6[_0x7437('0x49')]['id']}})[_0x7437('0x24')](handleEntityNotFound(_0x2fb170,null))[_0x7437('0x24')](function(_0x2f3968){if(_0x2f3968){_0x1eb4be=_0x2f3968;_0x27446e[_0x7437('0x35')]=_[_0x7437('0x32')](db[_0x7437('0x4e')][_0x7437('0x2d')]);_0x27446e[_0x7437('0x31')]=_[_0x7437('0x32')](_0x3f14f6[_0x7437('0x31')]);_0x27446e[_0x7437('0x33')]=_[_0x7437('0x34')](_0x27446e['model'],_0x27446e[_0x7437('0x31')]);_0xe9839d['attributes']=_[_0x7437('0x34')](_0x27446e[_0x7437('0x35')],qs[_0x7437('0x36')](_0x3f14f6[_0x7437('0x31')]['fields']));_0xe9839d['attributes']=_0xe9839d[_0x7437('0x37')][_0x7437('0x38')]?_0xe9839d[_0x7437('0x37')]:_0x27446e[_0x7437('0x35')];_0xe9839d['order']=qs[_0x7437('0x3a')](_0x3f14f6[_0x7437('0x31')][_0x7437('0x3a')]);_0xe9839d[_0x7437('0x3b')]=qs[_0x7437('0x33')](_[_0x7437('0x3c')](_0x3f14f6[_0x7437('0x31')],_0x27446e[_0x7437('0x33')]));if(_0x3f14f6[_0x7437('0x31')][_0x7437('0x3d')]){_0xe9839d[_0x7437('0x3b')]=_[_0x7437('0x44')](_0xe9839d['where'],{'$or':_[_0x7437('0x2b')](_0xe9839d[_0x7437('0x37')],function(_0x2763ce){var _0x445afb={};_0x445afb[_0x2763ce]={'$like':'%'+_0x3f14f6[_0x7437('0x31')][_0x7437('0x3d')]+'%'};return _0x445afb;})});}_0xe9839d=_[_0x7437('0x44')]({},_0xe9839d,_0x3f14f6[_0x7437('0x45')]);return _0x1eb4be['getSubjects'](_0xe9839d);}})[_0x7437('0x24')](function(_0x4c9129){if(_0x4c9129){_0x13d909=_0x4c9129[_0x7437('0x38')];if(!_0x3f14f6[_0x7437('0x31')][_0x7437('0x4f')](_0x7437('0x4c'))){_0xe9839d[_0x7437('0x1c')]=qs[_0x7437('0x1c')](_0x3f14f6['query'][_0x7437('0x1c')]);_0xe9839d[_0x7437('0x1a')]=qs[_0x7437('0x1a')](_0x3f14f6[_0x7437('0x31')][_0x7437('0x1a')]);}return _0x1eb4be[_0x7437('0x4d')](_0xe9839d);}})[_0x7437('0x24')](function(_0x44dd8d){if(_0x44dd8d){return _0x44dd8d?{'count':_0x13d909,'rows':_0x44dd8d}:null;}})[_0x7437('0x24')](respondWithResult(_0x2fb170,null))[_0x7437('0x41')](handleError(_0x2fb170,null));};exports[_0x7437('0x50')]=function(_0x29c860,_0x236d5f,_0x5389be){var _0x490164={};var _0x43e8d4={};var _0xca683d;var _0x1855db;return db[_0x7437('0x2c')][_0x7437('0x4b')]({'where':{'id':_0x29c860[_0x7437('0x49')]['id']}})['then'](handleEntityNotFound(_0x236d5f,null))[_0x7437('0x24')](function(_0x43b5b8){if(_0x43b5b8){_0xca683d=_0x43b5b8;_0x43e8d4['model']=_['keys'](db[_0x7437('0x4e')][_0x7437('0x2d')]);_0x43e8d4[_0x7437('0x31')]=_[_0x7437('0x32')](_0x29c860['query']);_0x43e8d4[_0x7437('0x33')]=_['intersection'](_0x43e8d4[_0x7437('0x35')],_0x43e8d4['query']);_0x490164[_0x7437('0x37')]=_[_0x7437('0x34')](_0x43e8d4[_0x7437('0x35')],qs[_0x7437('0x36')](_0x29c860['query']['fields']));_0x490164[_0x7437('0x37')]=_0x490164[_0x7437('0x37')][_0x7437('0x38')]?_0x490164[_0x7437('0x37')]:_0x43e8d4[_0x7437('0x35')];_0x490164[_0x7437('0x39')]=qs['sort'](_0x29c860[_0x7437('0x31')]['sort']);_0x490164[_0x7437('0x3b')]=qs[_0x7437('0x33')](_[_0x7437('0x3c')](_0x29c860['query'],_0x43e8d4[_0x7437('0x33')]));if(_0x29c860['query'][_0x7437('0x3d')]){_0x490164[_0x7437('0x3b')]=_[_0x7437('0x44')](_0x490164[_0x7437('0x3b')],{'$or':_[_0x7437('0x2b')](_0x490164['attributes'],function(_0x228a93){var _0x29967a={};_0x29967a[_0x228a93]={'$like':'%'+_0x29c860[_0x7437('0x31')][_0x7437('0x3d')]+'%'};return _0x29967a;})});}_0x490164=_[_0x7437('0x44')]({},_0x490164,_0x29c860[_0x7437('0x45')]);return _0xca683d['getDescriptions'](_0x490164);}})[_0x7437('0x24')](function(_0x1e2ce1){if(_0x1e2ce1){_0x1855db=_0x1e2ce1[_0x7437('0x38')];if(!_0x29c860[_0x7437('0x31')]['hasOwnProperty'](_0x7437('0x4c'))){_0x490164[_0x7437('0x1c')]=qs['limit'](_0x29c860['query'][_0x7437('0x1c')]);_0x490164['offset']=qs['offset'](_0x29c860[_0x7437('0x31')][_0x7437('0x1a')]);}return _0xca683d[_0x7437('0x50')](_0x490164);}})[_0x7437('0x24')](function(_0x35dc1a){if(_0x35dc1a){return _0x35dc1a?{'count':_0x1855db,'rows':_0x35dc1a}:null;}})[_0x7437('0x24')](respondWithResult(_0x236d5f,null))['catch'](handleError(_0x236d5f,null));};exports[_0x7437('0x51')]=function(_0x5194f9,_0x554f60,_0x45c3c5){var _0x88334e={};var _0x68e18e={};var _0x507cf4;var _0x38b417;return db['ZendeskConfiguration'][_0x7437('0x4b')]({'where':{'id':_0x5194f9[_0x7437('0x49')]['id']}})[_0x7437('0x24')](handleEntityNotFound(_0x554f60,null))[_0x7437('0x24')](function(_0xa2fe4){if(_0xa2fe4){_0x507cf4=_0xa2fe4;_0x68e18e[_0x7437('0x35')]=_[_0x7437('0x32')](db[_0x7437('0x52')]['rawAttributes']);_0x68e18e['query']=_[_0x7437('0x32')](_0x5194f9[_0x7437('0x31')]);_0x68e18e['filters']=_[_0x7437('0x34')](_0x68e18e[_0x7437('0x35')],_0x68e18e[_0x7437('0x31')]);_0x88334e[_0x7437('0x37')]=_[_0x7437('0x34')](_0x68e18e[_0x7437('0x35')],qs[_0x7437('0x36')](_0x5194f9[_0x7437('0x31')][_0x7437('0x36')]));_0x88334e[_0x7437('0x37')]=_0x88334e[_0x7437('0x37')][_0x7437('0x38')]?_0x88334e[_0x7437('0x37')]:_0x68e18e['model'];_0x88334e[_0x7437('0x39')]=qs[_0x7437('0x3a')](_0x5194f9[_0x7437('0x31')][_0x7437('0x3a')]);_0x88334e['where']=qs[_0x7437('0x33')](_['pick'](_0x5194f9[_0x7437('0x31')],_0x68e18e[_0x7437('0x33')]));if(_0x5194f9[_0x7437('0x31')][_0x7437('0x3d')]){_0x88334e[_0x7437('0x3b')]=_[_0x7437('0x44')](_0x88334e[_0x7437('0x3b')],{'$or':_[_0x7437('0x2b')](_0x88334e[_0x7437('0x37')],function(_0x1a562f){var _0x4b727f={};_0x4b727f[_0x1a562f]={'$like':'%'+_0x5194f9[_0x7437('0x31')]['filter']+'%'};return _0x4b727f;})});}_0x88334e=_[_0x7437('0x44')]({},_0x88334e,_0x5194f9[_0x7437('0x45')]);return _0x507cf4[_0x7437('0x51')](_0x88334e);}})[_0x7437('0x24')](function(_0x3f01e8){if(_0x3f01e8){_0x38b417=_0x3f01e8[_0x7437('0x38')];if(!_0x5194f9[_0x7437('0x31')][_0x7437('0x4f')](_0x7437('0x4c'))){_0x88334e[_0x7437('0x1c')]=qs[_0x7437('0x1c')](_0x5194f9[_0x7437('0x31')][_0x7437('0x1c')]);_0x88334e['offset']=qs['offset'](_0x5194f9[_0x7437('0x31')][_0x7437('0x1a')]);}return _0x507cf4['getTags'](_0x88334e);}})[_0x7437('0x24')](function(_0x5f0616){if(_0x5f0616){return _0x5f0616?{'count':_0x38b417,'rows':_0x5f0616}:null;}})['then'](respondWithResult(_0x554f60,null))[_0x7437('0x41')](handleError(_0x554f60,null));};exports['setTags']=function(_0x4155c2,_0x417b70,_0x55d393){if(_0x4155c2[_0x7437('0x48')]['id']){delete _0x4155c2['body']['id'];}return db[_0x7437('0x2c')]['findOne']({'where':{'id':_0x4155c2['params']['id']}})[_0x7437('0x24')](handleEntityNotFound(_0x417b70,null))[_0x7437('0x24')](function(_0x592878){if(_0x592878){return _0x592878[_0x7437('0x53')](_0x4155c2['body'][_0x7437('0x54')]||[]);}return null;})[_0x7437('0x24')](respondWithResult(_0x417b70,null))[_0x7437('0x41')](handleError(_0x417b70,null));};
\ No newline at end of file
index 2e88340..2fa7846 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['define','int_zendesk_configurations','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./intZendeskConfiguration.attributes','exports'];(function(_0x44ace6,_0x448496){var _0x1b5359=function(_0x149c04){while(--_0x149c04){_0x44ace6['push'](_0x44ace6['shift']());}};_0x1b5359(++_0x448496);}(_0x757a,0xde));var _0xa757=function(_0x277153,_0x21d626){_0x277153=_0x277153-0x0;var _0x9e67fd=_0x757a[_0x277153];return _0x9e67fd;};'use strict';var _=require('lodash');var util=require(_0xa757('0x0'));var logger=require(_0xa757('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa757('0x2'));var fs=require('fs');var path=require(_0xa757('0x3'));var rimraf=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var attributes=require(_0xa757('0x6'));module[_0xa757('0x7')]=function(_0x5edca8,_0xae0e7c){return _0x5edca8[_0xa757('0x8')]('ZendeskConfiguration',attributes,{'tableName':_0xa757('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xed3c=['util','../../config/logger','api','bluebird','request-promise','path','./intZendeskConfiguration.attributes','exports','lodash'];(function(_0x1bed61,_0x120a04){var _0x36e817=function(_0x162ca7){while(--_0x162ca7){_0x1bed61['push'](_0x1bed61['shift']());}};_0x36e817(++_0x120a04);}(_0xed3c,0x1a6));var _0xced3=function(_0xd256a1,_0x2aae80){_0xd256a1=_0xd256a1-0x0;var _0x2a11a4=_0xed3c[_0xd256a1];return _0x2a11a4;};'use strict';var _=require(_0xced3('0x0'));var util=require(_0xced3('0x1'));var logger=require(_0xced3('0x2'))(_0xced3('0x3'));var moment=require('moment');var BPromise=require(_0xced3('0x4'));var rp=require(_0xced3('0x5'));var fs=require('fs');var path=require(_0xced3('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xced3('0x7'));module[_0xced3('0x8')]=function(_0x2f92f8,_0x1cd694){return _0x2f92f8['define']('ZendeskConfiguration',attributes,{'tableName':'int_zendesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d935088..4b685ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd64c=['code','ZendeskConfiguration,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','then','info','request\x20sent','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x28958d,_0xfa5f9f){var _0x439c72=function(_0x280df5){while(--_0x280df5){_0x28958d['push'](_0x28958d['shift']());}};_0x439c72(++_0xfa5f9f);}(_0xd64c,0xe1));var _0xcd64=function(_0x2d4bc4,_0x31f604){_0x2d4bc4=_0x2d4bc4-0x0;var _0x313536=_0xd64c[_0x2d4bc4];return _0x313536;};'use strict';var _=require(_0xcd64('0x0'));var util=require(_0xcd64('0x1'));var moment=require(_0xcd64('0x2'));var BPromise=require(_0xcd64('0x3'));var rs=require(_0xcd64('0x4'));var fs=require('fs');var Redis=require(_0xcd64('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xcd64('0x6'));var logger=require(_0xcd64('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xcd64('0x8'));var client=jayson[_0xcd64('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x124bd5,_0x1552a0,_0x23b1f8){return new BPromise(function(_0x5ec7c4,_0x4724f9){return client['request'](_0x124bd5,_0x23b1f8)[_0xcd64('0xa')](function(_0xa0e811){logger[_0xcd64('0xb')]('ZendeskConfiguration,\x20%s,\x20%s',_0x1552a0,_0xcd64('0xc'));logger[_0xcd64('0xd')](_0xcd64('0xe'),_0x1552a0,_0xcd64('0xc'),JSON[_0xcd64('0xf')](_0xa0e811));if(_0xa0e811[_0xcd64('0x10')]){if(_0xa0e811[_0xcd64('0x10')][_0xcd64('0x11')]===0x1f4){logger[_0xcd64('0x10')](_0xcd64('0x12'),_0x1552a0,_0xa0e811[_0xcd64('0x10')][_0xcd64('0x13')]);return _0x4724f9(_0xa0e811['error']['message']);}logger[_0xcd64('0x10')](_0xcd64('0x12'),_0x1552a0,_0xa0e811[_0xcd64('0x10')][_0xcd64('0x13')]);return _0x5ec7c4(_0xa0e811[_0xcd64('0x10')][_0xcd64('0x13')]);}else{logger[_0xcd64('0xb')]('ZendeskConfiguration,\x20%s,\x20%s',_0x1552a0,'request\x20sent');_0x5ec7c4(_0xa0e811[_0xcd64('0x14')][_0xcd64('0x13')]);}})[_0xcd64('0x15')](function(_0x31036a){logger['error'](_0xcd64('0x12'),_0x1552a0,_0x31036a);_0x4724f9(_0x31036a);});});}
\ No newline at end of file
+var _0xe0b7=['request','then','info','ZendeskConfiguration,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http'];(function(_0x1969a7,_0x5a133a){var _0x3d665f=function(_0x39c64b){while(--_0x39c64b){_0x1969a7['push'](_0x1969a7['shift']());}};_0x3d665f(++_0x5a133a);}(_0xe0b7,0x137));var _0x7e0b=function(_0x5391f4,_0x4254f3){_0x5391f4=_0x5391f4-0x0;var _0x1551cc=_0xe0b7[_0x5391f4];return _0x1551cc;};'use strict';var _=require(_0x7e0b('0x0'));var util=require(_0x7e0b('0x1'));var moment=require(_0x7e0b('0x2'));var BPromise=require(_0x7e0b('0x3'));var rs=require(_0x7e0b('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7e0b('0x5'))['db'];var utils=require(_0x7e0b('0x6'));var logger=require('../../config/logger')(_0x7e0b('0x7'));var config=require(_0x7e0b('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x7e0b('0x9')][_0x7e0b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x22b61f,_0xb72179,_0x50862a){return new BPromise(function(_0x471f05,_0x273615){return client[_0x7e0b('0xb')](_0x22b61f,_0x50862a)[_0x7e0b('0xc')](function(_0x43f4e4){logger[_0x7e0b('0xd')](_0x7e0b('0xe'),_0xb72179,'request\x20sent');logger[_0x7e0b('0xf')]('ZendeskConfiguration,\x20%s,\x20%s,\x20%s',_0xb72179,_0x7e0b('0x10'),JSON[_0x7e0b('0x11')](_0x43f4e4));if(_0x43f4e4[_0x7e0b('0x12')]){if(_0x43f4e4[_0x7e0b('0x12')][_0x7e0b('0x13')]===0x1f4){logger[_0x7e0b('0x12')]('ZendeskConfiguration,\x20%s,\x20%s',_0xb72179,_0x43f4e4[_0x7e0b('0x12')][_0x7e0b('0x14')]);return _0x273615(_0x43f4e4[_0x7e0b('0x12')]['message']);}logger['error'](_0x7e0b('0xe'),_0xb72179,_0x43f4e4[_0x7e0b('0x12')][_0x7e0b('0x14')]);return _0x471f05(_0x43f4e4[_0x7e0b('0x12')][_0x7e0b('0x14')]);}else{logger[_0x7e0b('0xd')]('ZendeskConfiguration,\x20%s,\x20%s',_0xb72179,_0x7e0b('0x10'));_0x471f05(_0x43f4e4[_0x7e0b('0x15')][_0x7e0b('0x14')]);}})[_0x7e0b('0x16')](function(_0x53cab5){logger[_0x7e0b('0x12')](_0x7e0b('0xe'),_0xb72179,_0x53cab5);_0x273615(_0x53cab5);});});}
\ No newline at end of file
index 498c10a..30c1cdf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6725=['put','update','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskField.controller','get','isAuthenticated','index','/:id','show','post','create'];(function(_0x2f5d30,_0x502f29){var _0x18e5f9=function(_0x270d76){while(--_0x270d76){_0x2f5d30['push'](_0x2f5d30['shift']());}};_0x18e5f9(++_0x502f29);}(_0x6725,0x116));var _0x5672=function(_0x602a0a,_0x4beae6){_0x602a0a=_0x602a0a-0x0;var _0x2b132c=_0x6725[_0x602a0a];return _0x2b132c;};'use strict';var multer=require(_0x5672('0x0'));var util=require('util');var path=require(_0x5672('0x1'));var timeout=require('connect-timeout');var express=require(_0x5672('0x2'));var router=express[_0x5672('0x3')]();var fs_extra=require(_0x5672('0x4'));var auth=require(_0x5672('0x5'));var interaction=require(_0x5672('0x6'));var config=require(_0x5672('0x7'));var controller=require(_0x5672('0x8'));router[_0x5672('0x9')]('/',auth[_0x5672('0xa')](),controller[_0x5672('0xb')]);router[_0x5672('0x9')](_0x5672('0xc'),auth['isAuthenticated'](),controller[_0x5672('0xd')]);router[_0x5672('0xe')]('/',auth[_0x5672('0xa')](),controller[_0x5672('0xf')]);router[_0x5672('0x10')](_0x5672('0xc'),auth[_0x5672('0xa')](),controller[_0x5672('0x11')]);router[_0x5672('0x12')](_0x5672('0xc'),auth[_0x5672('0xa')](),controller[_0x5672('0x13')]);module[_0x5672('0x14')]=router;
\ No newline at end of file
+var _0x5455=['../../config/environment','get','isAuthenticated','index','/:id','show','post','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x1d24eb,_0x12295b){var _0x1dc576=function(_0x4d5770){while(--_0x4d5770){_0x1d24eb['push'](_0x1d24eb['shift']());}};_0x1dc576(++_0x12295b);}(_0x5455,0xef));var _0x5545=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x5455[_0x4b369d];return _0x571a98;};'use strict';var multer=require(_0x5545('0x0'));var util=require(_0x5545('0x1'));var path=require(_0x5545('0x2'));var timeout=require(_0x5545('0x3'));var express=require(_0x5545('0x4'));var router=express[_0x5545('0x5')]();var fs_extra=require(_0x5545('0x6'));var auth=require(_0x5545('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x5545('0x8'));var controller=require('./intZendeskField.controller');router[_0x5545('0x9')]('/',auth[_0x5545('0xa')](),controller[_0x5545('0xb')]);router['get'](_0x5545('0xc'),auth[_0x5545('0xa')](),controller[_0x5545('0xd')]);router[_0x5545('0xe')]('/',auth[_0x5545('0xa')](),controller['create']);router[_0x5545('0xf')](_0x5545('0xc'),auth[_0x5545('0xa')](),controller[_0x5545('0x10')]);router[_0x5545('0x11')](_0x5545('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0x5545('0x12')]=router;
\ No newline at end of file
index b926dca..d7abcad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb4b=['STRING','sequelize','exports','ENUM','string','variable','customVariable','keyValue','picklist'];(function(_0x4cbe30,_0x218e5c){var _0x59ba9a=function(_0x5ed0b2){while(--_0x5ed0b2){_0x4cbe30['push'](_0x4cbe30['shift']());}};_0x59ba9a(++_0x218e5c);}(_0xdb4b,0xfd));var _0xbdb4=function(_0x568ae7,_0x2b5fa3){_0x568ae7=_0x568ae7-0x0;var _0x257050=_0xdb4b[_0x568ae7];return _0x257050;};'use strict';var Sequelize=require(_0xbdb4('0x0'));module[_0xbdb4('0x1')]={'type':{'type':Sequelize[_0xbdb4('0x2')](_0xbdb4('0x3'),_0xbdb4('0x4'),_0xbdb4('0x5'),_0xbdb4('0x6'),_0xbdb4('0x7')),'defaultValue':_0xbdb4('0x3')},'content':{'type':Sequelize[_0xbdb4('0x8')]},'key':{'type':Sequelize[_0xbdb4('0x8')]},'keyType':{'type':Sequelize[_0xbdb4('0x2')]('string',_0xbdb4('0x4'),_0xbdb4('0x5'))},'keyContent':{'type':Sequelize[_0xbdb4('0x8')]},'idField':{'type':Sequelize[_0xbdb4('0x8')]},'nameField':{'type':Sequelize[_0xbdb4('0x8')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xbdb4('0x8')]}};
\ No newline at end of file
+var _0x0ca9=['exports','ENUM','keyValue','string','STRING','variable','customVariable','BOOLEAN','sequelize'];(function(_0x5d6be3,_0x2f3535){var _0x5461df=function(_0x16d32f){while(--_0x16d32f){_0x5d6be3['push'](_0x5d6be3['shift']());}};_0x5461df(++_0x2f3535);}(_0x0ca9,0xbc));var _0x90ca=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x0ca9[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x90ca('0x0'));module[_0x90ca('0x1')]={'type':{'type':Sequelize[_0x90ca('0x2')]('string','variable','customVariable',_0x90ca('0x3'),'picklist'),'defaultValue':_0x90ca('0x4')},'content':{'type':Sequelize[_0x90ca('0x5')]},'key':{'type':Sequelize[_0x90ca('0x5')]},'keyType':{'type':Sequelize[_0x90ca('0x2')]('string',_0x90ca('0x6'),_0x90ca('0x7'))},'keyContent':{'type':Sequelize[_0x90ca('0x5')]},'idField':{'type':Sequelize[_0x90ca('0x5')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x90ca('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index c37bf8f..1614eb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd66c=['error','stack','name','send','index','map','ZendeskField','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','fields','create','body','params','find','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','end','json','offset','limit','count','status','set','Content-Range','reject','save','update','then','destroy','sendStatus'];(function(_0xdbe2de,_0x3bdc5a){var _0x2facd7=function(_0x50df58){while(--_0x50df58){_0xdbe2de['push'](_0xdbe2de['shift']());}};_0x2facd7(++_0x3bdc5a);}(_0xd66c,0x106));var _0xcd66=function(_0x276a59,_0x7927ec){_0x276a59=_0x276a59-0x0;var _0x968168=_0xd66c[_0x276a59];return _0x968168;};'use strict';var emlformat=require(_0xcd66('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xcd66('0x1'));var jsonpatch=require(_0xcd66('0x2'));var rp=require(_0xcd66('0x3'));var moment=require(_0xcd66('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xcd66('0x5'));var util=require(_0xcd66('0x6'));var path=require(_0xcd66('0x7'));var sox=require(_0xcd66('0x8'));var csv=require(_0xcd66('0x9'));var ejs=require(_0xcd66('0xa'));var fs=require('fs');var fs_extra=require(_0xcd66('0xb'));var _=require(_0xcd66('0xc'));var squel=require('squel');var crypto=require(_0xcd66('0xd'));var jsforce=require(_0xcd66('0xe'));var deskjs=require(_0xcd66('0xf'));var toCsv=require(_0xcd66('0x9'));var querystring=require(_0xcd66('0x10'));var Papa=require(_0xcd66('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xcd66('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xcd66('0x13'));var logger=require(_0xcd66('0x14'))('api');var utils=require(_0xcd66('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xcd66('0x16'));var db=require(_0xcd66('0x17'))['db'];function respondWithStatusCode(_0x1cb4a9,_0x3e4e92){_0x3e4e92=_0x3e4e92||0xcc;return function(_0x35479d){if(_0x35479d){return _0x1cb4a9['sendStatus'](_0x3e4e92);}return _0x1cb4a9['status'](_0x3e4e92)[_0xcd66('0x18')]();};}function respondWithResult(_0x5d9bb4,_0x28ae0c){_0x28ae0c=_0x28ae0c||0xc8;return function(_0x588b46){if(_0x588b46){return _0x5d9bb4['status'](_0x28ae0c)[_0xcd66('0x19')](_0x588b46);}};}function respondWithFilteredResult(_0x1fafad,_0x4df4df){return function(_0x3178a7){if(_0x3178a7){var _0x3ed659=typeof _0x4df4df[_0xcd66('0x1a')]==='undefined'&&typeof _0x4df4df[_0xcd66('0x1b')]==='undefined';var _0x1268db=_0x3178a7[_0xcd66('0x1c')];var _0x191f8e=_0x3ed659?0x0:_0x4df4df[_0xcd66('0x1a')];var _0x35d431=_0x3ed659?_0x3178a7[_0xcd66('0x1c')]:_0x4df4df[_0xcd66('0x1a')]+_0x4df4df[_0xcd66('0x1b')];var _0x417907;if(_0x35d431>=_0x1268db){_0x35d431=_0x1268db;_0x417907=0xc8;}else{_0x417907=0xce;}_0x1fafad[_0xcd66('0x1d')](_0x417907);return _0x1fafad[_0xcd66('0x1e')](_0xcd66('0x1f'),_0x191f8e+'-'+_0x35d431+'/'+_0x1268db)[_0xcd66('0x19')](_0x3178a7);}return null;};}function patchUpdates(_0x2d3819){return function(_0x842033){try{jsonpatch['apply'](_0x842033,_0x2d3819,!![]);}catch(_0x3e3bea){return BPromise[_0xcd66('0x20')](_0x3e3bea);}return _0x842033[_0xcd66('0x21')]();};}function saveUpdates(_0x11c75c,_0x1cc184){return function(_0x1f8a04){if(_0x1f8a04){return _0x1f8a04[_0xcd66('0x22')](_0x11c75c)[_0xcd66('0x23')](function(_0x64424a){return _0x64424a;});}return null;};}function removeEntity(_0x35e19e,_0x5ec2d5){return function(_0x2ab69e){if(_0x2ab69e){return _0x2ab69e[_0xcd66('0x24')]()['then'](function(){_0x35e19e[_0xcd66('0x1d')](0xcc)[_0xcd66('0x18')]();});}};}function handleEntityNotFound(_0xb37e77,_0x526e13){return function(_0x141a64){if(!_0x141a64){_0xb37e77[_0xcd66('0x25')](0x194);}return _0x141a64;};}function handleError(_0x3de898,_0x54ac81){_0x54ac81=_0x54ac81||0x1f4;return function(_0x12891d){logger[_0xcd66('0x26')](_0x12891d[_0xcd66('0x27')]);if(_0x12891d[_0xcd66('0x28')]){delete _0x12891d[_0xcd66('0x28')];}_0x3de898[_0xcd66('0x1d')](_0x54ac81)[_0xcd66('0x29')](_0x12891d);};}exports[_0xcd66('0x2a')]=function(_0x51201f,_0xb6d828){var _0x51a7f6={},_0x2506d3={},_0x851a5c={'count':0x0,'rows':[]};var _0x2dfa40=_[_0xcd66('0x2b')](db[_0xcd66('0x2c')][_0xcd66('0x2d')],function(_0x54597e){return{'name':_0x54597e[_0xcd66('0x2e')],'type':_0x54597e[_0xcd66('0x2f')][_0xcd66('0x30')]};});_0x2506d3[_0xcd66('0x31')]=_['map'](_0x2dfa40,_0xcd66('0x28'));_0x2506d3[_0xcd66('0x32')]=_[_0xcd66('0x33')](_0x51201f[_0xcd66('0x32')]);_0x2506d3[_0xcd66('0x34')]=_['intersection'](_0x2506d3[_0xcd66('0x31')],_0x2506d3[_0xcd66('0x32')]);_0x51a7f6[_0xcd66('0x35')]=_[_0xcd66('0x36')](_0x2506d3['model'],qs['fields'](_0x51201f[_0xcd66('0x32')]['fields']));_0x51a7f6[_0xcd66('0x35')]=_0x51a7f6[_0xcd66('0x35')][_0xcd66('0x37')]?_0x51a7f6[_0xcd66('0x35')]:_0x2506d3[_0xcd66('0x31')];if(!_0x51201f[_0xcd66('0x32')][_0xcd66('0x38')]('nolimit')){_0x51a7f6[_0xcd66('0x1b')]=qs[_0xcd66('0x1b')](_0x51201f[_0xcd66('0x32')][_0xcd66('0x1b')]);_0x51a7f6['offset']=qs[_0xcd66('0x1a')](_0x51201f[_0xcd66('0x32')][_0xcd66('0x1a')]);}_0x51a7f6[_0xcd66('0x39')]=qs[_0xcd66('0x3a')](_0x51201f[_0xcd66('0x32')][_0xcd66('0x3a')]);_0x51a7f6[_0xcd66('0x3b')]=qs[_0xcd66('0x34')](_[_0xcd66('0x3c')](_0x51201f[_0xcd66('0x32')],_0x2506d3[_0xcd66('0x34')]),_0x2dfa40);if(_0x51201f[_0xcd66('0x32')][_0xcd66('0x3d')]){_0x51a7f6[_0xcd66('0x3b')]=_[_0xcd66('0x3e')](_0x51a7f6[_0xcd66('0x3b')],{'$or':_[_0xcd66('0x2b')](_0x2dfa40,function(_0x17a327){if(_0x17a327['type']!=='VIRTUAL'){var _0x8e55c6={};_0x8e55c6[_0x17a327['name']]={'$like':'%'+_0x51201f[_0xcd66('0x32')][_0xcd66('0x3d')]+'%'};return _0x8e55c6;}})});}_0x51a7f6=_[_0xcd66('0x3e')]({},_0x51a7f6,_0x51201f[_0xcd66('0x3f')]);var _0x2bfb26={'where':_0x51a7f6['where']};return db[_0xcd66('0x2c')][_0xcd66('0x1c')](_0x2bfb26)['then'](function(_0xd6bd6f){_0x851a5c[_0xcd66('0x1c')]=_0xd6bd6f;if(_0x51201f['query'][_0xcd66('0x40')]){_0x51a7f6[_0xcd66('0x41')]=[{'all':!![]}];}return db[_0xcd66('0x2c')][_0xcd66('0x42')](_0x51a7f6);})[_0xcd66('0x23')](function(_0x285ef4){_0x851a5c[_0xcd66('0x43')]=_0x285ef4;return _0x851a5c;})['then'](respondWithFilteredResult(_0xb6d828,_0x51a7f6))[_0xcd66('0x44')](handleError(_0xb6d828,null));};exports[_0xcd66('0x45')]=function(_0x2bb778,_0x333ee1){var _0x62802e={'raw':!![],'where':{'id':_0x2bb778['params']['id']}},_0x7e904d={};_0x7e904d[_0xcd66('0x31')]=_[_0xcd66('0x33')](db[_0xcd66('0x2c')][_0xcd66('0x2d')]);_0x7e904d['query']=_[_0xcd66('0x33')](_0x2bb778[_0xcd66('0x32')]);_0x7e904d[_0xcd66('0x34')]=_[_0xcd66('0x36')](_0x7e904d[_0xcd66('0x31')],_0x7e904d[_0xcd66('0x32')]);_0x62802e[_0xcd66('0x35')]=_[_0xcd66('0x36')](_0x7e904d[_0xcd66('0x31')],qs[_0xcd66('0x46')](_0x2bb778[_0xcd66('0x32')][_0xcd66('0x46')]));_0x62802e[_0xcd66('0x35')]=_0x62802e[_0xcd66('0x35')][_0xcd66('0x37')]?_0x62802e[_0xcd66('0x35')]:_0x7e904d[_0xcd66('0x31')];if(_0x2bb778['query'][_0xcd66('0x40')]){_0x62802e[_0xcd66('0x41')]=[{'all':!![]}];}_0x62802e=_[_0xcd66('0x3e')]({},_0x62802e,_0x2bb778[_0xcd66('0x3f')]);return db[_0xcd66('0x2c')]['find'](_0x62802e)[_0xcd66('0x23')](handleEntityNotFound(_0x333ee1,null))[_0xcd66('0x23')](respondWithResult(_0x333ee1,null))['catch'](handleError(_0x333ee1,null));};exports['create']=function(_0x533289,_0x11079c){return db[_0xcd66('0x2c')][_0xcd66('0x47')](_0x533289[_0xcd66('0x48')],{})[_0xcd66('0x23')](respondWithResult(_0x11079c,0xc9))[_0xcd66('0x44')](handleError(_0x11079c,null));};exports['update']=function(_0x2efa27,_0x558f09){if(_0x2efa27[_0xcd66('0x48')]['id']){delete _0x2efa27[_0xcd66('0x48')]['id'];}return db['ZendeskField']['find']({'where':{'id':_0x2efa27[_0xcd66('0x49')]['id']}})[_0xcd66('0x23')](handleEntityNotFound(_0x558f09,null))['then'](saveUpdates(_0x2efa27[_0xcd66('0x48')],null))['then'](respondWithResult(_0x558f09,null))[_0xcd66('0x44')](handleError(_0x558f09,null));};exports[_0xcd66('0x24')]=function(_0xb9051d,_0x52496f){return db[_0xcd66('0x2c')][_0xcd66('0x4a')]({'where':{'id':_0xb9051d[_0xcd66('0x49')]['id']}})[_0xcd66('0x23')](handleEntityNotFound(_0x52496f,null))[_0xcd66('0x23')](removeEntity(_0x52496f,null))['catch'](handleError(_0x52496f,null));};
\ No newline at end of file
+var _0xe9ad=['status','end','json','offset','undefined','limit','set','Content-Range','apply','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','ZendeskField','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','count','includeAll','include','findAll','catch','params','options','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','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/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x4fa738,_0x2a491c){var _0x55bf55=function(_0x185d53){while(--_0x185d53){_0x4fa738['push'](_0x4fa738['shift']());}};_0x55bf55(++_0x2a491c);}(_0xe9ad,0x82));var _0xde9a=function(_0x5e9d35,_0x382c91){_0x5e9d35=_0x5e9d35-0x0;var _0x3beb2e=_0xe9ad[_0x5e9d35];return _0x3beb2e;};'use strict';var emlformat=require(_0xde9a('0x0'));var rimraf=require(_0xde9a('0x1'));var zipdir=require(_0xde9a('0x2'));var jsonpatch=require(_0xde9a('0x3'));var rp=require(_0xde9a('0x4'));var moment=require(_0xde9a('0x5'));var BPromise=require(_0xde9a('0x6'));var Mustache=require('mustache');var util=require(_0xde9a('0x7'));var path=require(_0xde9a('0x8'));var sox=require(_0xde9a('0x9'));var csv=require(_0xde9a('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xde9a('0xb'));var _=require(_0xde9a('0xc'));var squel=require(_0xde9a('0xd'));var crypto=require('crypto');var jsforce=require(_0xde9a('0xe'));var deskjs=require(_0xde9a('0xf'));var toCsv=require(_0xde9a('0xa'));var querystring=require(_0xde9a('0x10'));var Papa=require(_0xde9a('0x11'));var Redis=require(_0xde9a('0x12'));var authService=require(_0xde9a('0x13'));var qs=require(_0xde9a('0x14'));var as=require(_0xde9a('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xde9a('0x16'))(_0xde9a('0x17'));var utils=require(_0xde9a('0x18'));var config=require(_0xde9a('0x19'));var licenseUtil=require(_0xde9a('0x1a'));var db=require(_0xde9a('0x1b'))['db'];function respondWithStatusCode(_0x1cb3bd,_0x3a9b1a){_0x3a9b1a=_0x3a9b1a||0xcc;return function(_0xd81956){if(_0xd81956){return _0x1cb3bd['sendStatus'](_0x3a9b1a);}return _0x1cb3bd[_0xde9a('0x1c')](_0x3a9b1a)[_0xde9a('0x1d')]();};}function respondWithResult(_0x2f2e11,_0x267d5b){_0x267d5b=_0x267d5b||0xc8;return function(_0x1c1873){if(_0x1c1873){return _0x2f2e11[_0xde9a('0x1c')](_0x267d5b)[_0xde9a('0x1e')](_0x1c1873);}};}function respondWithFilteredResult(_0x432d3c,_0x3f0e39){return function(_0x474713){if(_0x474713){var _0x50ffb8=typeof _0x3f0e39[_0xde9a('0x1f')]===_0xde9a('0x20')&&typeof _0x3f0e39[_0xde9a('0x21')]===_0xde9a('0x20');var _0x454156=_0x474713['count'];var _0x12ba7f=_0x50ffb8?0x0:_0x3f0e39[_0xde9a('0x1f')];var _0x3b89ef=_0x50ffb8?_0x474713['count']:_0x3f0e39[_0xde9a('0x1f')]+_0x3f0e39['limit'];var _0x8f481a;if(_0x3b89ef>=_0x454156){_0x3b89ef=_0x454156;_0x8f481a=0xc8;}else{_0x8f481a=0xce;}_0x432d3c['status'](_0x8f481a);return _0x432d3c[_0xde9a('0x22')](_0xde9a('0x23'),_0x12ba7f+'-'+_0x3b89ef+'/'+_0x454156)[_0xde9a('0x1e')](_0x474713);}return null;};}function patchUpdates(_0x4add81){return function(_0x43b1bb){try{jsonpatch[_0xde9a('0x24')](_0x43b1bb,_0x4add81,!![]);}catch(_0x4e4e02){return BPromise['reject'](_0x4e4e02);}return _0x43b1bb[_0xde9a('0x25')]();};}function saveUpdates(_0x416b36,_0x56550b){return function(_0x290d8d){if(_0x290d8d){return _0x290d8d[_0xde9a('0x26')](_0x416b36)[_0xde9a('0x27')](function(_0x402b06){return _0x402b06;});}return null;};}function removeEntity(_0xa48b6b,_0x284c96){return function(_0x544f9d){if(_0x544f9d){return _0x544f9d[_0xde9a('0x28')]()[_0xde9a('0x27')](function(){_0xa48b6b[_0xde9a('0x1c')](0xcc)[_0xde9a('0x1d')]();});}};}function handleEntityNotFound(_0xfd4b9d,_0xdcc5d2){return function(_0xbc8e99){if(!_0xbc8e99){_0xfd4b9d[_0xde9a('0x29')](0x194);}return _0xbc8e99;};}function handleError(_0x125720,_0x490b11){_0x490b11=_0x490b11||0x1f4;return function(_0x5ab5e5){logger[_0xde9a('0x2a')](_0x5ab5e5[_0xde9a('0x2b')]);if(_0x5ab5e5[_0xde9a('0x2c')]){delete _0x5ab5e5[_0xde9a('0x2c')];}_0x125720['status'](_0x490b11)[_0xde9a('0x2d')](_0x5ab5e5);};}exports[_0xde9a('0x2e')]=function(_0x467ce2,_0x51806d){var _0x3bd254={},_0x5890c5={},_0xff4daf={'count':0x0,'rows':[]};var _0x5d238f=_[_0xde9a('0x2f')](db[_0xde9a('0x30')][_0xde9a('0x31')],function(_0x422b05){return{'name':_0x422b05[_0xde9a('0x32')],'type':_0x422b05[_0xde9a('0x33')][_0xde9a('0x34')]};});_0x5890c5['model']=_[_0xde9a('0x2f')](_0x5d238f,_0xde9a('0x2c'));_0x5890c5[_0xde9a('0x35')]=_[_0xde9a('0x36')](_0x467ce2[_0xde9a('0x35')]);_0x5890c5[_0xde9a('0x37')]=_[_0xde9a('0x38')](_0x5890c5[_0xde9a('0x39')],_0x5890c5[_0xde9a('0x35')]);_0x3bd254[_0xde9a('0x3a')]=_[_0xde9a('0x38')](_0x5890c5[_0xde9a('0x39')],qs[_0xde9a('0x3b')](_0x467ce2[_0xde9a('0x35')]['fields']));_0x3bd254['attributes']=_0x3bd254[_0xde9a('0x3a')]['length']?_0x3bd254[_0xde9a('0x3a')]:_0x5890c5[_0xde9a('0x39')];if(!_0x467ce2['query'][_0xde9a('0x3c')](_0xde9a('0x3d'))){_0x3bd254[_0xde9a('0x21')]=qs['limit'](_0x467ce2['query'][_0xde9a('0x21')]);_0x3bd254[_0xde9a('0x1f')]=qs['offset'](_0x467ce2[_0xde9a('0x35')][_0xde9a('0x1f')]);}_0x3bd254[_0xde9a('0x3e')]=qs[_0xde9a('0x3f')](_0x467ce2[_0xde9a('0x35')][_0xde9a('0x3f')]);_0x3bd254[_0xde9a('0x40')]=qs[_0xde9a('0x37')](_[_0xde9a('0x41')](_0x467ce2[_0xde9a('0x35')],_0x5890c5['filters']),_0x5d238f);if(_0x467ce2[_0xde9a('0x35')][_0xde9a('0x42')]){_0x3bd254[_0xde9a('0x40')]=_[_0xde9a('0x43')](_0x3bd254['where'],{'$or':_[_0xde9a('0x2f')](_0x5d238f,function(_0xbdfe73){if(_0xbdfe73[_0xde9a('0x33')]!==_0xde9a('0x44')){var _0x22381c={};_0x22381c[_0xbdfe73[_0xde9a('0x2c')]]={'$like':'%'+_0x467ce2['query'][_0xde9a('0x42')]+'%'};return _0x22381c;}})});}_0x3bd254=_[_0xde9a('0x43')]({},_0x3bd254,_0x467ce2['options']);var _0x42d263={'where':_0x3bd254[_0xde9a('0x40')]};return db[_0xde9a('0x30')][_0xde9a('0x45')](_0x42d263)[_0xde9a('0x27')](function(_0x5ccb51){_0xff4daf[_0xde9a('0x45')]=_0x5ccb51;if(_0x467ce2[_0xde9a('0x35')][_0xde9a('0x46')]){_0x3bd254[_0xde9a('0x47')]=[{'all':!![]}];}return db[_0xde9a('0x30')][_0xde9a('0x48')](_0x3bd254);})[_0xde9a('0x27')](function(_0x2b87f0){_0xff4daf['rows']=_0x2b87f0;return _0xff4daf;})[_0xde9a('0x27')](respondWithFilteredResult(_0x51806d,_0x3bd254))[_0xde9a('0x49')](handleError(_0x51806d,null));};exports['show']=function(_0x236522,_0x5bf795){var _0x37736b={'raw':!![],'where':{'id':_0x236522[_0xde9a('0x4a')]['id']}},_0x229181={};_0x229181[_0xde9a('0x39')]=_[_0xde9a('0x36')](db[_0xde9a('0x30')][_0xde9a('0x31')]);_0x229181[_0xde9a('0x35')]=_['keys'](_0x236522['query']);_0x229181[_0xde9a('0x37')]=_[_0xde9a('0x38')](_0x229181['model'],_0x229181['query']);_0x37736b[_0xde9a('0x3a')]=_[_0xde9a('0x38')](_0x229181[_0xde9a('0x39')],qs[_0xde9a('0x3b')](_0x236522[_0xde9a('0x35')]['fields']));_0x37736b[_0xde9a('0x3a')]=_0x37736b['attributes']['length']?_0x37736b[_0xde9a('0x3a')]:_0x229181[_0xde9a('0x39')];if(_0x236522['query'][_0xde9a('0x46')]){_0x37736b[_0xde9a('0x47')]=[{'all':!![]}];}_0x37736b=_['merge']({},_0x37736b,_0x236522[_0xde9a('0x4b')]);return db[_0xde9a('0x30')][_0xde9a('0x4c')](_0x37736b)[_0xde9a('0x27')](handleEntityNotFound(_0x5bf795,null))[_0xde9a('0x27')](respondWithResult(_0x5bf795,null))[_0xde9a('0x49')](handleError(_0x5bf795,null));};exports[_0xde9a('0x4d')]=function(_0x58c343,_0x57d705){return db['ZendeskField']['create'](_0x58c343[_0xde9a('0x4e')],{})[_0xde9a('0x27')](respondWithResult(_0x57d705,0xc9))[_0xde9a('0x49')](handleError(_0x57d705,null));};exports[_0xde9a('0x26')]=function(_0x31de98,_0xe4c867){if(_0x31de98[_0xde9a('0x4e')]['id']){delete _0x31de98[_0xde9a('0x4e')]['id'];}return db[_0xde9a('0x30')][_0xde9a('0x4c')]({'where':{'id':_0x31de98[_0xde9a('0x4a')]['id']}})[_0xde9a('0x27')](handleEntityNotFound(_0xe4c867,null))['then'](saveUpdates(_0x31de98[_0xde9a('0x4e')],null))[_0xde9a('0x27')](respondWithResult(_0xe4c867,null))[_0xde9a('0x49')](handleError(_0xe4c867,null));};exports[_0xde9a('0x28')]=function(_0xc6d00b,_0x27524f){return db[_0xde9a('0x30')][_0xde9a('0x4c')]({'where':{'id':_0xc6d00b[_0xde9a('0x4a')]['id']}})[_0xde9a('0x27')](handleEntityNotFound(_0x27524f,null))['then'](removeEntity(_0x27524f,null))['catch'](handleError(_0x27524f,null));};
\ No newline at end of file
index 77f6bb2..590b731 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x694a=['bluebird','request-promise','rimraf','./intZendeskField.attributes','exports','define','idField','FieldId','lodash','util','../../config/logger','api','moment'];(function(_0x1b7e2b,_0x1e8717){var _0x121830=function(_0x2aba6d){while(--_0x2aba6d){_0x1b7e2b['push'](_0x1b7e2b['shift']());}};_0x121830(++_0x1e8717);}(_0x694a,0x1c2));var _0xa694=function(_0x311909,_0x414bf7){_0x311909=_0x311909-0x0;var _0x8d3163=_0x694a[_0x311909];return _0x8d3163;};'use strict';var _=require(_0xa694('0x0'));var util=require(_0xa694('0x1'));var logger=require(_0xa694('0x2'))(_0xa694('0x3'));var moment=require(_0xa694('0x4'));var BPromise=require(_0xa694('0x5'));var rp=require(_0xa694('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa694('0x7'));var config=require('../../config/environment');var attributes=require(_0xa694('0x8'));module[_0xa694('0x9')]=function(_0x17f7d4,_0x170c22){return _0x17f7d4[_0xa694('0xa')]('ZendeskField',attributes,{'tableName':'int_zendesk_fields','paranoid':![],'indexes':[{'name':'zendesk_unique_index','fields':[_0xa694('0xb'),_0xa694('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1be8=['int_zendesk_fields','zendesk_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','./intZendeskField.attributes','exports','define'];(function(_0x494d1f,_0x3f72ff){var _0x457b6e=function(_0x38cb16){while(--_0x38cb16){_0x494d1f['push'](_0x494d1f['shift']());}};_0x457b6e(++_0x3f72ff);}(_0x1be8,0xc7));var _0x81be=function(_0x322f4d,_0x2211c6){_0x322f4d=_0x322f4d-0x0;var _0x548443=_0x1be8[_0x322f4d];return _0x548443;};'use strict';var _=require(_0x81be('0x0'));var util=require(_0x81be('0x1'));var logger=require(_0x81be('0x2'))(_0x81be('0x3'));var moment=require(_0x81be('0x4'));var BPromise=require(_0x81be('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x81be('0x6'));var rimraf=require(_0x81be('0x7'));var config=require('../../config/environment');var attributes=require(_0x81be('0x8'));module[_0x81be('0x9')]=function(_0x866142,_0x84fd7f){return _0x866142[_0x81be('0xa')]('ZendeskField',attributes,{'tableName':_0x81be('0xb'),'paranoid':![],'indexes':[{'name':_0x81be('0xc'),'fields':[_0x81be('0xd'),_0x81be('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index ff7e4ce..00cb23a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb08=['moment','bluebird','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','ZendeskField,\x20%s,\x20%s','ZendeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','catch'];(function(_0x533990,_0x21fe8d){var _0x5a5e2a=function(_0x2539c3){while(--_0x2539c3){_0x533990['push'](_0x533990['shift']());}};_0x5a5e2a(++_0x21fe8d);}(_0xfb08,0x190));var _0x8fb0=function(_0x40b133,_0x24a5a7){_0x40b133=_0x40b133-0x0;var _0x38d315=_0xfb08[_0x40b133];return _0x38d315;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x8fb0('0x0'));var BPromise=require(_0x8fb0('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8fb0('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x8fb0('0x3'));var logger=require('../../config/logger')(_0x8fb0('0x4'));var config=require(_0x8fb0('0x5'));var jayson=require(_0x8fb0('0x6'));var client=jayson[_0x8fb0('0x7')][_0x8fb0('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x36cb4e,_0x563c0b,_0x5d41d4){return new BPromise(function(_0x51ed63,_0x4fb3e8){return client[_0x8fb0('0x9')](_0x36cb4e,_0x5d41d4)[_0x8fb0('0xa')](function(_0x1bb152){logger['info'](_0x8fb0('0xb'),_0x563c0b,'request\x20sent');logger['debug'](_0x8fb0('0xc'),_0x563c0b,'request\x20sent',JSON[_0x8fb0('0xd')](_0x1bb152));if(_0x1bb152['error']){if(_0x1bb152[_0x8fb0('0xe')][_0x8fb0('0xf')]===0x1f4){logger['error'](_0x8fb0('0xb'),_0x563c0b,_0x1bb152[_0x8fb0('0xe')][_0x8fb0('0x10')]);return _0x4fb3e8(_0x1bb152[_0x8fb0('0xe')][_0x8fb0('0x10')]);}logger[_0x8fb0('0xe')](_0x8fb0('0xb'),_0x563c0b,_0x1bb152[_0x8fb0('0xe')][_0x8fb0('0x10')]);return _0x51ed63(_0x1bb152[_0x8fb0('0xe')][_0x8fb0('0x10')]);}else{logger[_0x8fb0('0x11')](_0x8fb0('0xb'),_0x563c0b,_0x8fb0('0x12'));_0x51ed63(_0x1bb152['result'][_0x8fb0('0x10')]);}})[_0x8fb0('0x13')](function(_0x2f7d8f){logger[_0x8fb0('0xe')](_0x8fb0('0xb'),_0x563c0b,_0x2f7d8f);_0x4fb3e8(_0x2f7d8f);});});}
\ No newline at end of file
+var _0x357e=['randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','info','ZendeskField,\x20%s,\x20%s','debug','ZendeskField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash'];(function(_0xfe91da,_0x5822a5){var _0x3070c8=function(_0x47f5f9){while(--_0x47f5f9){_0xfe91da['push'](_0xfe91da['shift']());}};_0x3070c8(++_0x5822a5);}(_0x357e,0x8f));var _0xe357=function(_0x4b7895,_0x3c4f5d){_0x4b7895=_0x4b7895-0x0;var _0x264180=_0x357e[_0x4b7895];return _0x264180;};'use strict';var _=require(_0xe357('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xe357('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xe357('0x2'));var logger=require(_0xe357('0x3'))(_0xe357('0x4'));var config=require('../../config/environment');var jayson=require(_0xe357('0x5'));var client=jayson[_0xe357('0x6')][_0xe357('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x385422,_0x4877b5,_0x54c1a1){return new BPromise(function(_0x248c3d,_0x4b2a13){return client['request'](_0x385422,_0x54c1a1)['then'](function(_0x23549c){logger[_0xe357('0x8')](_0xe357('0x9'),_0x4877b5,'request\x20sent');logger[_0xe357('0xa')](_0xe357('0xb'),_0x4877b5,_0xe357('0xc'),JSON[_0xe357('0xd')](_0x23549c));if(_0x23549c[_0xe357('0xe')]){if(_0x23549c[_0xe357('0xe')][_0xe357('0xf')]===0x1f4){logger[_0xe357('0xe')](_0xe357('0x9'),_0x4877b5,_0x23549c[_0xe357('0xe')]['message']);return _0x4b2a13(_0x23549c[_0xe357('0xe')][_0xe357('0x10')]);}logger[_0xe357('0xe')](_0xe357('0x9'),_0x4877b5,_0x23549c[_0xe357('0xe')]['message']);return _0x248c3d(_0x23549c['error']['message']);}else{logger[_0xe357('0x8')](_0xe357('0x9'),_0x4877b5,_0xe357('0xc'));_0x248c3d(_0x23549c[_0xe357('0x11')][_0xe357('0x10')]);}})['catch'](function(_0x35854f){logger[_0xe357('0xe')]('ZendeskField,\x20%s,\x20%s',_0x4877b5,_0x35854f);_0x4b2a13(_0x35854f);});});}
\ No newline at end of file
index 15c7923..8cc8262 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fd4=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intZohoAccount.controller','isAuthenticated','index','get','/:id','show','/:id/configurations','getConfigurations','/:id/fields','post','create','put','update','destroy','util','connect-timeout','express'];(function(_0x32b62e,_0x422213){var _0x967254=function(_0x25dfaa){while(--_0x25dfaa){_0x32b62e['push'](_0x32b62e['shift']());}};_0x967254(++_0x422213);}(_0x7fd4,0x177));var _0x47fd=function(_0x21f9c2,_0x2b3d2a){_0x21f9c2=_0x21f9c2-0x0;var _0x3da17f=_0x7fd4[_0x21f9c2];return _0x3da17f;};'use strict';var multer=require('multer');var util=require(_0x47fd('0x0'));var path=require('path');var timeout=require(_0x47fd('0x1'));var express=require(_0x47fd('0x2'));var router=express[_0x47fd('0x3')]();var fs_extra=require(_0x47fd('0x4'));var auth=require(_0x47fd('0x5'));var interaction=require(_0x47fd('0x6'));var config=require('../../config/environment');var controller=require(_0x47fd('0x7'));router['get']('/',auth[_0x47fd('0x8')](),controller[_0x47fd('0x9')]);router[_0x47fd('0xa')](_0x47fd('0xb'),auth[_0x47fd('0x8')](),controller[_0x47fd('0xc')]);router['get'](_0x47fd('0xd'),auth[_0x47fd('0x8')](),controller[_0x47fd('0xe')]);router[_0x47fd('0xa')](_0x47fd('0xf'),auth['isAuthenticated'](),controller['getFields']);router[_0x47fd('0x10')]('/',auth[_0x47fd('0x8')](),controller[_0x47fd('0x11')]);router[_0x47fd('0x10')](_0x47fd('0xd'),auth[_0x47fd('0x8')](),controller['addConfiguration']);router[_0x47fd('0x12')]('/:id',auth[_0x47fd('0x8')](),controller[_0x47fd('0x13')]);router['delete']('/:id',auth[_0x47fd('0x8')](),controller[_0x47fd('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x7dcc=['../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoAccount.controller','get','isAuthenticated','/:id','/:id/configurations','/:id/fields','getFields','post','addConfiguration','update','destroy','exports','util','connect-timeout','express','Router','fs-extra'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7dcc,0xaf));var _0xc7dc=function(_0x7d5a8b,_0x2aedef){_0x7d5a8b=_0x7d5a8b-0x0;var _0x56ac46=_0x7dcc[_0x7d5a8b];return _0x56ac46;};'use strict';var multer=require('multer');var util=require(_0xc7dc('0x0'));var path=require('path');var timeout=require(_0xc7dc('0x1'));var express=require(_0xc7dc('0x2'));var router=express[_0xc7dc('0x3')]();var fs_extra=require(_0xc7dc('0x4'));var auth=require(_0xc7dc('0x5'));var interaction=require(_0xc7dc('0x6'));var config=require(_0xc7dc('0x7'));var controller=require(_0xc7dc('0x8'));router[_0xc7dc('0x9')]('/',auth[_0xc7dc('0xa')](),controller['index']);router['get'](_0xc7dc('0xb'),auth['isAuthenticated'](),controller['show']);router['get'](_0xc7dc('0xc'),auth['isAuthenticated'](),controller['getConfigurations']);router['get'](_0xc7dc('0xd'),auth[_0xc7dc('0xa')](),controller[_0xc7dc('0xe')]);router['post']('/',auth[_0xc7dc('0xa')](),controller['create']);router[_0xc7dc('0xf')](_0xc7dc('0xc'),auth[_0xc7dc('0xa')](),controller[_0xc7dc('0x10')]);router['put']('/:id',auth[_0xc7dc('0xa')](),controller[_0xc7dc('0x11')]);router['delete'](_0xc7dc('0xb'),auth['isAuthenticated'](),controller[_0xc7dc('0x12')]);module[_0xc7dc('0x13')]=router;
\ No newline at end of file
index 62c15c1..c359bca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda55=['STRING','sequelize','exports'];(function(_0x4fde08,_0x463a36){var _0x12e725=function(_0x2670c5){while(--_0x2670c5){_0x4fde08['push'](_0x4fde08['shift']());}};_0x12e725(++_0x463a36);}(_0xda55,0x6d));var _0x5da5=function(_0x38f5fe,_0x53da89){_0x38f5fe=_0x38f5fe-0x0;var _0x54ab60=_0xda55[_0x38f5fe];return _0x54ab60;};'use strict';var Sequelize=require(_0x5da5('0x0'));module[_0x5da5('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x5da5('0x2')]},'zone':{'type':Sequelize[_0x5da5('0x2')]},'clientId':{'type':Sequelize[_0x5da5('0x2')]},'clientSecret':{'type':Sequelize[_0x5da5('0x2')]},'serverUrl':{'type':Sequelize[_0x5da5('0x2')],'allowNull':![]},'code':{'type':Sequelize['STRING']},'refreshToken':{'type':Sequelize[_0x5da5('0x2')]}};
\ No newline at end of file
+var _0xd64b=['STRING','sequelize'];(function(_0x24df55,_0x3ebb80){var _0x47292b=function(_0x22b7b5){while(--_0x22b7b5){_0x24df55['push'](_0x24df55['shift']());}};_0x47292b(++_0x3ebb80);}(_0xd64b,0xc1));var _0xbd64=function(_0x190987,_0x310a24){_0x190987=_0x190987-0x0;var _0x5254a5=_0xd64b[_0x190987];return _0x5254a5;};'use strict';var Sequelize=require(_0xbd64('0x0'));module['exports']={'name':{'type':Sequelize[_0xbd64('0x1')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xbd64('0x1')]},'zone':{'type':Sequelize[_0xbd64('0x1')]},'clientId':{'type':Sequelize[_0xbd64('0x1')]},'clientSecret':{'type':Sequelize[_0xbd64('0x1')]},'serverUrl':{'type':Sequelize[_0xbd64('0x1')],'allowNull':![]},'code':{'type':Sequelize['STRING']},'refreshToken':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 1ac4b9d..eded18a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0cf=['https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','host','serverUrl','code','zoho.eu','slice','substring','lastIndexOf','GET','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','Zoho-oauthtoken\x20','response','Owner','Subject','Description','WhoId','Call_Duration','Call_Result','Call_Start_Time','Call_Type','remove','api_name','system_mandatory','push','custom_field','data_type','pick_list_values','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','send','test','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../components/integrations/configuration','sendStatus','status','json','offset','limit','count','Content-Range','apply','reject','save','update','destroy','then','end','error','stack','name','index','map','rawAttributes','type','key','model','query','filters','intersection','fields','attributes','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','ZohoAccount','rows','show','keys','length','find','catch','create','body','params','getConfigurations','findOne','ZohoConfiguration','hasOwnProperty','addConfiguration','AccountId','Subjects','channel','ZohoField','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in'];(function(_0x10eb92,_0x52eaf5){var _0x113e84=function(_0x4486c2){while(--_0x4486c2){_0x10eb92['push'](_0x10eb92['shift']());}};_0x113e84(++_0x52eaf5);}(_0xf0cf,0x133));var _0xff0c=function(_0x1ec7db,_0x2ff8cc){_0x1ec7db=_0x1ec7db-0x0;var _0x20327a=_0xf0cf[_0x1ec7db];return _0x20327a;};'use strict';var emlformat=require(_0xff0c('0x0'));var rimraf=require(_0xff0c('0x1'));var zipdir=require(_0xff0c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xff0c('0x3'));var BPromise=require(_0xff0c('0x4'));var Mustache=require(_0xff0c('0x5'));var util=require(_0xff0c('0x6'));var path=require(_0xff0c('0x7'));var sox=require(_0xff0c('0x8'));var csv=require('to-csv');var ejs=require(_0xff0c('0x9'));var fs=require('fs');var fs_extra=require(_0xff0c('0xa'));var _=require(_0xff0c('0xb'));var squel=require(_0xff0c('0xc'));var crypto=require(_0xff0c('0xd'));var jsforce=require(_0xff0c('0xe'));var deskjs=require(_0xff0c('0xf'));var toCsv=require(_0xff0c('0x10'));var querystring=require(_0xff0c('0x11'));var Papa=require(_0xff0c('0x12'));var Redis=require(_0xff0c('0x13'));var authService=require(_0xff0c('0x14'));var qs=require(_0xff0c('0x15'));var as=require(_0xff0c('0x16'));var hardwareService=require(_0xff0c('0x17'));var logger=require(_0xff0c('0x18'))(_0xff0c('0x19'));var utils=require(_0xff0c('0x1a'));var config=require(_0xff0c('0x1b'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0xff0c('0x1c'));function respondWithStatusCode(_0x2a869e,_0x41b6f5){_0x41b6f5=_0x41b6f5||0xcc;return function(_0x48db1a){if(_0x48db1a){return _0x2a869e[_0xff0c('0x1d')](_0x41b6f5);}return _0x2a869e['status'](_0x41b6f5)['end']();};}function respondWithResult(_0xaf9208,_0x996eb8){_0x996eb8=_0x996eb8||0xc8;return function(_0x401d3d){if(_0x401d3d){return _0xaf9208[_0xff0c('0x1e')](_0x996eb8)[_0xff0c('0x1f')](_0x401d3d);}};}function respondWithFilteredResult(_0x11cc64,_0xa92507){return function(_0x5c23eb){if(_0x5c23eb){var _0x24af53=typeof _0xa92507[_0xff0c('0x20')]==='undefined'&&typeof _0xa92507[_0xff0c('0x21')]==='undefined';var _0x19d224=_0x5c23eb[_0xff0c('0x22')];var _0x272f1a=_0x24af53?0x0:_0xa92507['offset'];var _0x1fa807=_0x24af53?_0x5c23eb[_0xff0c('0x22')]:_0xa92507[_0xff0c('0x20')]+_0xa92507[_0xff0c('0x21')];var _0x1846cd;if(_0x1fa807>=_0x19d224){_0x1fa807=_0x19d224;_0x1846cd=0xc8;}else{_0x1846cd=0xce;}_0x11cc64['status'](_0x1846cd);return _0x11cc64['set'](_0xff0c('0x23'),_0x272f1a+'-'+_0x1fa807+'/'+_0x19d224)[_0xff0c('0x1f')](_0x5c23eb);}return null;};}function patchUpdates(_0x1edf93){return function(_0x449027){try{jsonpatch[_0xff0c('0x24')](_0x449027,_0x1edf93,!![]);}catch(_0x3c1183){return BPromise[_0xff0c('0x25')](_0x3c1183);}return _0x449027[_0xff0c('0x26')]();};}function saveUpdates(_0x2381cb,_0x2435c8){return function(_0x2dd3bb){if(_0x2dd3bb){return _0x2dd3bb[_0xff0c('0x27')](_0x2381cb)['then'](function(_0x52e437){return _0x52e437;});}return null;};}function removeEntity(_0x26a71a,_0x20ab79){return function(_0x1ee8e){if(_0x1ee8e){return _0x1ee8e[_0xff0c('0x28')]()[_0xff0c('0x29')](function(){_0x26a71a['status'](0xcc)[_0xff0c('0x2a')]();});}};}function handleEntityNotFound(_0x437fa3,_0x4ddd32){return function(_0x7f3745){if(!_0x7f3745){_0x437fa3[_0xff0c('0x1d')](0x194);}return _0x7f3745;};}function handleError(_0x21e43a,_0x1003cf){_0x1003cf=_0x1003cf||0x1f4;return function(_0x39575a){logger[_0xff0c('0x2b')](_0x39575a[_0xff0c('0x2c')]);if(_0x39575a[_0xff0c('0x2d')]){delete _0x39575a[_0xff0c('0x2d')];}_0x21e43a['status'](_0x1003cf)['send'](_0x39575a);};}exports[_0xff0c('0x2e')]=function(_0x357fbf,_0x4ec765){var _0xed45e0={},_0x2a3697={},_0x30bbfb={'count':0x0,'rows':[]};var _0x12f404=_[_0xff0c('0x2f')](db['ZohoAccount'][_0xff0c('0x30')],function(_0x5d502a){return{'name':_0x5d502a['fieldName'],'type':_0x5d502a[_0xff0c('0x31')][_0xff0c('0x32')]};});_0x2a3697[_0xff0c('0x33')]=_[_0xff0c('0x2f')](_0x12f404,_0xff0c('0x2d'));_0x2a3697[_0xff0c('0x34')]=_['keys'](_0x357fbf[_0xff0c('0x34')]);_0x2a3697[_0xff0c('0x35')]=_[_0xff0c('0x36')](_0x2a3697[_0xff0c('0x33')],_0x2a3697[_0xff0c('0x34')]);_0xed45e0['attributes']=_['intersection'](_0x2a3697[_0xff0c('0x33')],qs[_0xff0c('0x37')](_0x357fbf['query'][_0xff0c('0x37')]));_0xed45e0['attributes']=_0xed45e0[_0xff0c('0x38')]['length']?_0xed45e0[_0xff0c('0x38')]:_0x2a3697['model'];if(!_0x357fbf[_0xff0c('0x34')]['hasOwnProperty'](_0xff0c('0x39'))){_0xed45e0[_0xff0c('0x21')]=qs[_0xff0c('0x21')](_0x357fbf[_0xff0c('0x34')][_0xff0c('0x21')]);_0xed45e0[_0xff0c('0x20')]=qs[_0xff0c('0x20')](_0x357fbf[_0xff0c('0x34')]['offset']);}_0xed45e0[_0xff0c('0x3a')]=qs[_0xff0c('0x3b')](_0x357fbf['query'][_0xff0c('0x3b')]);_0xed45e0[_0xff0c('0x3c')]=qs[_0xff0c('0x35')](_[_0xff0c('0x3d')](_0x357fbf['query'],_0x2a3697[_0xff0c('0x35')]),_0x12f404);if(_0x357fbf[_0xff0c('0x34')][_0xff0c('0x3e')]){_0xed45e0[_0xff0c('0x3c')]=_[_0xff0c('0x3f')](_0xed45e0['where'],{'$or':_[_0xff0c('0x2f')](_0x12f404,function(_0x429096){if(_0x429096[_0xff0c('0x31')]!==_0xff0c('0x40')){var _0x49d658={};_0x49d658[_0x429096['name']]={'$like':'%'+_0x357fbf[_0xff0c('0x34')]['filter']+'%'};return _0x49d658;}})});}_0xed45e0=_[_0xff0c('0x3f')]({},_0xed45e0,_0x357fbf[_0xff0c('0x41')]);var _0x5b5e0f={'where':_0xed45e0[_0xff0c('0x3c')]};return db['ZohoAccount']['count'](_0x5b5e0f)[_0xff0c('0x29')](function(_0x2191f5){_0x30bbfb[_0xff0c('0x22')]=_0x2191f5;if(_0x357fbf[_0xff0c('0x34')][_0xff0c('0x42')]){_0xed45e0[_0xff0c('0x43')]=[{'all':!![]}];}return db[_0xff0c('0x44')]['findAll'](_0xed45e0);})['then'](function(_0x518b64){_0x30bbfb[_0xff0c('0x45')]=_0x518b64;return _0x30bbfb;})[_0xff0c('0x29')](respondWithFilteredResult(_0x4ec765,_0xed45e0))['catch'](handleError(_0x4ec765,null));};exports[_0xff0c('0x46')]=function(_0x5367af,_0x5ac2d2){var _0x2d306b={'raw':![],'where':{'id':_0x5367af['params']['id']}},_0x562fbf={};_0x562fbf['model']=_['keys'](db[_0xff0c('0x44')][_0xff0c('0x30')]);_0x562fbf[_0xff0c('0x34')]=_[_0xff0c('0x47')](_0x5367af[_0xff0c('0x34')]);_0x562fbf['filters']=_[_0xff0c('0x36')](_0x562fbf[_0xff0c('0x33')],_0x562fbf[_0xff0c('0x34')]);_0x2d306b[_0xff0c('0x38')]=_[_0xff0c('0x36')](_0x562fbf['model'],qs[_0xff0c('0x37')](_0x5367af[_0xff0c('0x34')][_0xff0c('0x37')]));_0x2d306b[_0xff0c('0x38')]=_0x2d306b[_0xff0c('0x38')][_0xff0c('0x48')]?_0x2d306b[_0xff0c('0x38')]:_0x562fbf['model'];if(_0x5367af[_0xff0c('0x34')][_0xff0c('0x42')]){_0x2d306b[_0xff0c('0x43')]=[{'all':!![]}];}_0x2d306b=_[_0xff0c('0x3f')]({},_0x2d306b,_0x5367af[_0xff0c('0x41')]);return db[_0xff0c('0x44')][_0xff0c('0x49')](_0x2d306b)['then'](handleEntityNotFound(_0x5ac2d2,null))[_0xff0c('0x29')](respondWithResult(_0x5ac2d2,null))[_0xff0c('0x4a')](handleError(_0x5ac2d2,null));};exports[_0xff0c('0x4b')]=function(_0x205220,_0x30cbde){return db[_0xff0c('0x44')][_0xff0c('0x4b')](_0x205220[_0xff0c('0x4c')],{})['then'](respondWithResult(_0x30cbde,0xc9))[_0xff0c('0x4a')](handleError(_0x30cbde,null));};exports[_0xff0c('0x27')]=function(_0x315ae6,_0x31745b){if(_0x315ae6[_0xff0c('0x4c')]['id']){delete _0x315ae6[_0xff0c('0x4c')]['id'];}return db[_0xff0c('0x44')][_0xff0c('0x49')]({'where':{'id':_0x315ae6[_0xff0c('0x4d')]['id']}})[_0xff0c('0x29')](handleEntityNotFound(_0x31745b,null))['then'](saveUpdates(_0x315ae6[_0xff0c('0x4c')],null))['then'](respondWithResult(_0x31745b,null))[_0xff0c('0x4a')](handleError(_0x31745b,null));};exports[_0xff0c('0x28')]=function(_0x3d2654,_0x171fae){return db['ZohoAccount']['find']({'where':{'id':_0x3d2654[_0xff0c('0x4d')]['id']}})[_0xff0c('0x29')](handleEntityNotFound(_0x171fae,null))[_0xff0c('0x29')](removeEntity(_0x171fae,null))[_0xff0c('0x4a')](handleError(_0x171fae,null));};exports[_0xff0c('0x4e')]=function(_0x15542e,_0x43b7d6,_0x4b4361){var _0x5c7ceb={};var _0x5b4afc={};var _0x309fa8;var _0x243863;return db[_0xff0c('0x44')][_0xff0c('0x4f')]({'where':{'id':_0x15542e[_0xff0c('0x4d')]['id']}})[_0xff0c('0x29')](handleEntityNotFound(_0x43b7d6,null))[_0xff0c('0x29')](function(_0x9ac136){if(_0x9ac136){_0x309fa8=_0x9ac136;_0x5b4afc[_0xff0c('0x33')]=_[_0xff0c('0x47')](db[_0xff0c('0x50')][_0xff0c('0x30')]);_0x5b4afc[_0xff0c('0x34')]=_[_0xff0c('0x47')](_0x15542e[_0xff0c('0x34')]);_0x5b4afc['filters']=_[_0xff0c('0x36')](_0x5b4afc[_0xff0c('0x33')],_0x5b4afc[_0xff0c('0x34')]);_0x5c7ceb['attributes']=_[_0xff0c('0x36')](_0x5b4afc['model'],qs[_0xff0c('0x37')](_0x15542e[_0xff0c('0x34')][_0xff0c('0x37')]));_0x5c7ceb[_0xff0c('0x38')]=_0x5c7ceb[_0xff0c('0x38')]['length']?_0x5c7ceb[_0xff0c('0x38')]:_0x5b4afc[_0xff0c('0x33')];_0x5c7ceb[_0xff0c('0x3a')]=qs[_0xff0c('0x3b')](_0x15542e[_0xff0c('0x34')][_0xff0c('0x3b')]);_0x5c7ceb[_0xff0c('0x3c')]=qs['filters'](_[_0xff0c('0x3d')](_0x15542e[_0xff0c('0x34')],_0x5b4afc[_0xff0c('0x35')]));if(_0x15542e[_0xff0c('0x34')][_0xff0c('0x3e')]){_0x5c7ceb[_0xff0c('0x3c')]=_[_0xff0c('0x3f')](_0x5c7ceb[_0xff0c('0x3c')],{'$or':_[_0xff0c('0x2f')](_0x5c7ceb[_0xff0c('0x38')],function(_0x11d8af){var _0x5eb193={};_0x5eb193[_0x11d8af]={'$like':'%'+_0x15542e[_0xff0c('0x34')][_0xff0c('0x3e')]+'%'};return _0x5eb193;})});}_0x5c7ceb=_[_0xff0c('0x3f')]({},_0x5c7ceb,_0x15542e[_0xff0c('0x41')]);return _0x309fa8['getConfigurations'](_0x5c7ceb);}})[_0xff0c('0x29')](function(_0x998041){if(_0x998041){_0x243863=_0x998041['length'];if(!_0x15542e[_0xff0c('0x34')][_0xff0c('0x51')](_0xff0c('0x39'))){_0x5c7ceb['limit']=qs[_0xff0c('0x21')](_0x15542e['query'][_0xff0c('0x21')]);_0x5c7ceb['offset']=qs[_0xff0c('0x20')](_0x15542e[_0xff0c('0x34')][_0xff0c('0x20')]);}return _0x309fa8[_0xff0c('0x4e')](_0x5c7ceb);}})[_0xff0c('0x29')](function(_0x19658a){if(_0x19658a){return _0x19658a?{'count':_0x243863,'rows':_0x19658a}:null;}})['then'](respondWithResult(_0x43b7d6,null))[_0xff0c('0x4a')](handleError(_0x43b7d6,null));};exports[_0xff0c('0x52')]=function(_0x32c1d3,_0x3d9c7e,_0x731915){if(_0x32c1d3[_0xff0c('0x4c')]['id']){delete _0x32c1d3[_0xff0c('0x4c')]['id'];}return db['ZohoAccount'][_0xff0c('0x4f')]({'where':{'id':_0x32c1d3[_0xff0c('0x4d')]['id']}})[_0xff0c('0x29')](handleEntityNotFound(_0x3d9c7e,null))[_0xff0c('0x29')](function(_0x586db7){if(_0x586db7){_0x32c1d3[_0xff0c('0x4c')][_0xff0c('0x53')]=_0x586db7['id'];_0x32c1d3[_0xff0c('0x4c')][_0xff0c('0x54')]=integrations['getSubjects'](_0x32c1d3[_0xff0c('0x4c')][_0xff0c('0x55')],_0x32c1d3['body'][_0xff0c('0x31')]);_0x32c1d3[_0xff0c('0x4c')]['Descriptions']=integrations['getDescriptions'](_0x32c1d3[_0xff0c('0x4c')][_0xff0c('0x55')],_0x32c1d3[_0xff0c('0x4c')][_0xff0c('0x31')]);return db[_0xff0c('0x50')][_0xff0c('0x4b')](_0x32c1d3[_0xff0c('0x4c')],{'include':[{'model':db[_0xff0c('0x56')],'as':'Subjects'},{'model':db[_0xff0c('0x56')],'as':'Descriptions'}]});}return null;})[_0xff0c('0x29')](respondWithResult(_0x3d9c7e,null))[_0xff0c('0x4a')](handleError(_0x3d9c7e,null));};function getAccessToken(_0x4458cf){return new Promise(function(_0x3650a0,_0x26ecc6){var _0x2de14f;switch(_0x4458cf[_0xff0c('0x57')]){case'US':_0x2de14f=_0xff0c('0x58');break;case'AU':_0x2de14f=_0xff0c('0x59');break;case'EU':_0x2de14f=_0xff0c('0x5a');break;case'IN':_0x2de14f=_0xff0c('0x5b');break;case'CN':_0x2de14f=_0xff0c('0x5c');break;default:_0x2de14f=_0xff0c('0x5a');break;}var _0x38b312={'method':_0xff0c('0x5d'),'uri':_0x2de14f+_0xff0c('0x5e'),'qs':{'refresh_token':_0x4458cf[_0xff0c('0x5f')],'client_id':_0x4458cf[_0xff0c('0x60')],'client_secret':_0x4458cf[_0xff0c('0x61')],'grant_type':'refresh_token'},'json':!![]};return rp(_0x38b312)[_0xff0c('0x29')](function(_0x20d99d){if(_0x20d99d[_0xff0c('0x62')]){_0x3650a0(_0x20d99d[_0xff0c('0x62')]);}else{_0x26ecc6(_0xff0c('0x63'));}})[_0xff0c('0x4a')](function(_0x2139e0){_0x26ecc6(_0x2139e0);});});}exports['getFields']=function(_0x4f871d,_0x451c99,_0x1e02df){var _0x39befc,_0x2b4f30,_0x5f92ed,_0x53b2d8,_0x356140;return db[_0xff0c('0x44')][_0xff0c('0x4f')]({'where':{'id':_0x4f871d[_0xff0c('0x4d')]['id']},'attributes':['id',_0xff0c('0x64'),_0xff0c('0x57'),_0xff0c('0x60'),_0xff0c('0x61'),_0xff0c('0x65'),_0xff0c('0x66'),_0xff0c('0x5f')]})['then'](handleEntityNotFound(_0x451c99,null))[_0xff0c('0x29')](function(_0x524cef){_0x356140=_0x524cef;_0x39befc=_0x356140[_0xff0c('0x64')];_0x2b4f30=_0x39befc===_0xff0c('0x67')?'eu':'com';_0x5f92ed=_0x356140['serverUrl'];var _0xcf6295=_0x5f92ed[_0xff0c('0x68')](-0x1);if(_0xcf6295==='/'||_0xcf6295==='\x5c'||_0xcf6295===':'){_0x5f92ed=_0x5f92ed[_0xff0c('0x69')](0x0,_0x5f92ed[_0xff0c('0x6a')](_0xcf6295));}if(!_0x356140['refreshToken']){throw new Error('Refresh\x20Token\x20not\x20available\x20for\x20the\x20account');}return getAccessToken(_0x356140);})[_0xff0c('0x29')](function(_0x66a9e2){if(_0x66a9e2){return rp({'method':_0xff0c('0x6b'),'uri':util['format'](_0xff0c('0x6c'),_0x2b4f30),'qs':{'module':_0xff0c('0x6d')},'headers':{'Authorization':_0xff0c('0x6e')+_0x66a9e2},'json':!![]});}})['then'](function(_0x179a70){if(_0x179a70){if(_0x179a70['response']&&_0x179a70['response']['error']){throw new Error(_0x179a70[_0xff0c('0x6f')][_0xff0c('0x2b')]['message']);}var _0x5b5647=[];var _0x54b79b=[];var _0x4d1588=[_0xff0c('0x70'),_0xff0c('0x71'),_0xff0c('0x72'),_0xff0c('0x73'),_0xff0c('0x74'),_0xff0c('0x75'),_0xff0c('0x76'),_0xff0c('0x77')];_0x54b79b=_[_0xff0c('0x78')](_0x179a70[_0xff0c('0x37')],function(_0x325143){return _0x4d1588['includes'](_0x325143[_0xff0c('0x79')]);});for(var _0x1d3047=0x0;_0x1d3047<_0x54b79b[_0xff0c('0x48')];_0x1d3047++){if(_0x54b79b[_0x1d3047][_0xff0c('0x7a')]===![]){_0x5b5647[_0xff0c('0x7b')]({'id':_0x54b79b[_0x1d3047]['id'],'name':_0x54b79b[_0x1d3047]['display_label'],'custom':_0x54b79b[_0x1d3047][_0xff0c('0x7c')],'options':_0x54b79b[_0x1d3047][_0xff0c('0x7d')]==='picklist'&&_0x54b79b[_0x1d3047][_0xff0c('0x7e')]['length']>-0x1?_[_0xff0c('0x2f')](_0x54b79b[_0x1d3047][_0xff0c('0x7e')],function(_0x3ce5c9){return{'name':_0x3ce5c9,'value':_0x3ce5c9};}):[]});}}return{'count':_0x5b5647[_0xff0c('0x48')],'rows':_0x5b5647};}else{return{'count':0x0,'rows':[]};}})[_0xff0c('0x29')](respondWithResult(_0x451c99,null))[_0xff0c('0x4a')](function(_0x443e7d){var _0x17436a=_0x4f871d[_0xff0c('0x34')]['test']?0x1f4:_0x443e7d[_0xff0c('0x7f')]||0x1f4;logger[_0xff0c('0x2b')](_0xff0c('0x80'),_0xff0c('0x81'),_0x17436a,JSON[_0xff0c('0x82')](_0x443e7d));delete _0x443e7d[_0xff0c('0x2d')];if(_0x17436a===0x191){_0x17436a=0x190;}_0x451c99[_0xff0c('0x1e')](_0x17436a)[_0xff0c('0x83')](_0x4f871d[_0xff0c('0x34')][_0xff0c('0x84')]?{'message':'Wrong\x20credentials','statusCode':_0x443e7d['statusCode']}:_0x443e7d);});};
\ No newline at end of file
+var _0xd8dd=['../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','Content-Range','apply','save','then','sendStatus','stack','name','index','map','ZohoAccount','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','merge','options','include','rows','catch','params','includeAll','find','create','body','getConfigurations','ZohoConfiguration','filter','hasOwnProperty','addConfiguration','findOne','Subjects','channel','Descriptions','getDescriptions','ZohoField','zone','https://accounts.zoho.com','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','Unable\x20to\x20retrieve\x20the\x20access\x20token','host','serverUrl','zoho.eu','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Zoho-oauthtoken\x20','response','error','message','Description','WhoId','Call_Duration','Call_Result','Call_Type','remove','includes','api_name','system_mandatory','custom_field','data_type','picklist','pick_list_values','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','fs-extra','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils'];(function(_0x39950f,_0x419783){var _0x9c327=function(_0x3bd442){while(--_0x3bd442){_0x39950f['push'](_0x39950f['shift']());}};_0x9c327(++_0x419783);}(_0xd8dd,0xda));var _0xdd8d=function(_0x4b7c86,_0x3c033c){_0x4b7c86=_0x4b7c86-0x0;var _0x10d869=_0xd8dd[_0x4b7c86];return _0x10d869;};'use strict';var emlformat=require(_0xdd8d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xdd8d('0x1'));var jsonpatch=require(_0xdd8d('0x2'));var rp=require(_0xdd8d('0x3'));var moment=require(_0xdd8d('0x4'));var BPromise=require(_0xdd8d('0x5'));var Mustache=require(_0xdd8d('0x6'));var util=require(_0xdd8d('0x7'));var path=require(_0xdd8d('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdd8d('0x9'));var _=require('lodash');var squel=require(_0xdd8d('0xa'));var crypto=require(_0xdd8d('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xdd8d('0xc'));var toCsv=require(_0xdd8d('0xd'));var querystring=require(_0xdd8d('0xe'));var Papa=require('papaparse');var Redis=require(_0xdd8d('0xf'));var authService=require(_0xdd8d('0x10'));var qs=require(_0xdd8d('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdd8d('0x12'));var logger=require(_0xdd8d('0x13'))(_0xdd8d('0x14'));var utils=require(_0xdd8d('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xdd8d('0x16'));var db=require(_0xdd8d('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x18d05f,_0x472d9d){_0x472d9d=_0x472d9d||0xcc;return function(_0x1ba991){if(_0x1ba991){return _0x18d05f['sendStatus'](_0x472d9d);}return _0x18d05f[_0xdd8d('0x18')](_0x472d9d)[_0xdd8d('0x19')]();};}function respondWithResult(_0x199714,_0x27235f){_0x27235f=_0x27235f||0xc8;return function(_0x26d65f){if(_0x26d65f){return _0x199714[_0xdd8d('0x18')](_0x27235f)[_0xdd8d('0x1a')](_0x26d65f);}};}function respondWithFilteredResult(_0x980cbc,_0x895724){return function(_0x3c44f4){if(_0x3c44f4){var _0x4154cf=typeof _0x895724[_0xdd8d('0x1b')]==='undefined'&&typeof _0x895724[_0xdd8d('0x1c')]===_0xdd8d('0x1d');var _0x185967=_0x3c44f4[_0xdd8d('0x1e')];var _0x137b2b=_0x4154cf?0x0:_0x895724[_0xdd8d('0x1b')];var _0x984967=_0x4154cf?_0x3c44f4[_0xdd8d('0x1e')]:_0x895724[_0xdd8d('0x1b')]+_0x895724[_0xdd8d('0x1c')];var _0x3e27e1;if(_0x984967>=_0x185967){_0x984967=_0x185967;_0x3e27e1=0xc8;}else{_0x3e27e1=0xce;}_0x980cbc[_0xdd8d('0x18')](_0x3e27e1);return _0x980cbc['set'](_0xdd8d('0x1f'),_0x137b2b+'-'+_0x984967+'/'+_0x185967)[_0xdd8d('0x1a')](_0x3c44f4);}return null;};}function patchUpdates(_0x53af91){return function(_0x26f876){try{jsonpatch[_0xdd8d('0x20')](_0x26f876,_0x53af91,!![]);}catch(_0x453d82){return BPromise['reject'](_0x453d82);}return _0x26f876[_0xdd8d('0x21')]();};}function saveUpdates(_0x5d783b,_0x38c170){return function(_0x300f9e){if(_0x300f9e){return _0x300f9e['update'](_0x5d783b)['then'](function(_0x248e80){return _0x248e80;});}return null;};}function removeEntity(_0x42d55e,_0x4f16de){return function(_0x458e69){if(_0x458e69){return _0x458e69['destroy']()[_0xdd8d('0x22')](function(){_0x42d55e['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xae14b7,_0x2fe413){return function(_0x1c1f89){if(!_0x1c1f89){_0xae14b7[_0xdd8d('0x23')](0x194);}return _0x1c1f89;};}function handleError(_0x5efcab,_0x41f4e4){_0x41f4e4=_0x41f4e4||0x1f4;return function(_0xcf2a16){logger['error'](_0xcf2a16[_0xdd8d('0x24')]);if(_0xcf2a16[_0xdd8d('0x25')]){delete _0xcf2a16[_0xdd8d('0x25')];}_0x5efcab[_0xdd8d('0x18')](_0x41f4e4)['send'](_0xcf2a16);};}exports[_0xdd8d('0x26')]=function(_0x4d8d46,_0x43c9b0){var _0x5c3422={},_0x2f2b4d={},_0x1718ba={'count':0x0,'rows':[]};var _0xdca5f4=_[_0xdd8d('0x27')](db[_0xdd8d('0x28')][_0xdd8d('0x29')],function(_0x10fab8){return{'name':_0x10fab8['fieldName'],'type':_0x10fab8[_0xdd8d('0x2a')][_0xdd8d('0x2b')]};});_0x2f2b4d[_0xdd8d('0x2c')]=_[_0xdd8d('0x27')](_0xdca5f4,_0xdd8d('0x25'));_0x2f2b4d[_0xdd8d('0x2d')]=_[_0xdd8d('0x2e')](_0x4d8d46[_0xdd8d('0x2d')]);_0x2f2b4d[_0xdd8d('0x2f')]=_[_0xdd8d('0x30')](_0x2f2b4d['model'],_0x2f2b4d[_0xdd8d('0x2d')]);_0x5c3422[_0xdd8d('0x31')]=_[_0xdd8d('0x30')](_0x2f2b4d[_0xdd8d('0x2c')],qs[_0xdd8d('0x32')](_0x4d8d46[_0xdd8d('0x2d')][_0xdd8d('0x32')]));_0x5c3422[_0xdd8d('0x31')]=_0x5c3422[_0xdd8d('0x31')][_0xdd8d('0x33')]?_0x5c3422['attributes']:_0x2f2b4d[_0xdd8d('0x2c')];if(!_0x4d8d46[_0xdd8d('0x2d')]['hasOwnProperty'](_0xdd8d('0x34'))){_0x5c3422[_0xdd8d('0x1c')]=qs['limit'](_0x4d8d46[_0xdd8d('0x2d')][_0xdd8d('0x1c')]);_0x5c3422[_0xdd8d('0x1b')]=qs[_0xdd8d('0x1b')](_0x4d8d46[_0xdd8d('0x2d')][_0xdd8d('0x1b')]);}_0x5c3422[_0xdd8d('0x35')]=qs['sort'](_0x4d8d46[_0xdd8d('0x2d')][_0xdd8d('0x36')]);_0x5c3422[_0xdd8d('0x37')]=qs[_0xdd8d('0x2f')](_[_0xdd8d('0x38')](_0x4d8d46[_0xdd8d('0x2d')],_0x2f2b4d[_0xdd8d('0x2f')]),_0xdca5f4);if(_0x4d8d46[_0xdd8d('0x2d')]['filter']){_0x5c3422['where']=_[_0xdd8d('0x39')](_0x5c3422[_0xdd8d('0x37')],{'$or':_[_0xdd8d('0x27')](_0xdca5f4,function(_0x3f6e16){if(_0x3f6e16['type']!=='VIRTUAL'){var _0x232e64={};_0x232e64[_0x3f6e16['name']]={'$like':'%'+_0x4d8d46['query']['filter']+'%'};return _0x232e64;}})});}_0x5c3422=_[_0xdd8d('0x39')]({},_0x5c3422,_0x4d8d46[_0xdd8d('0x3a')]);var _0x3fd915={'where':_0x5c3422[_0xdd8d('0x37')]};return db[_0xdd8d('0x28')][_0xdd8d('0x1e')](_0x3fd915)[_0xdd8d('0x22')](function(_0x4942fa){_0x1718ba[_0xdd8d('0x1e')]=_0x4942fa;if(_0x4d8d46[_0xdd8d('0x2d')]['includeAll']){_0x5c3422[_0xdd8d('0x3b')]=[{'all':!![]}];}return db['ZohoAccount']['findAll'](_0x5c3422);})[_0xdd8d('0x22')](function(_0x2e088a){_0x1718ba[_0xdd8d('0x3c')]=_0x2e088a;return _0x1718ba;})[_0xdd8d('0x22')](respondWithFilteredResult(_0x43c9b0,_0x5c3422))[_0xdd8d('0x3d')](handleError(_0x43c9b0,null));};exports['show']=function(_0x3e3291,_0x344ad3){var _0x20f8fd={'raw':![],'where':{'id':_0x3e3291[_0xdd8d('0x3e')]['id']}},_0x77aa6a={};_0x77aa6a['model']=_[_0xdd8d('0x2e')](db['ZohoAccount'][_0xdd8d('0x29')]);_0x77aa6a['query']=_[_0xdd8d('0x2e')](_0x3e3291[_0xdd8d('0x2d')]);_0x77aa6a[_0xdd8d('0x2f')]=_[_0xdd8d('0x30')](_0x77aa6a[_0xdd8d('0x2c')],_0x77aa6a[_0xdd8d('0x2d')]);_0x20f8fd[_0xdd8d('0x31')]=_[_0xdd8d('0x30')](_0x77aa6a['model'],qs[_0xdd8d('0x32')](_0x3e3291[_0xdd8d('0x2d')]['fields']));_0x20f8fd[_0xdd8d('0x31')]=_0x20f8fd[_0xdd8d('0x31')]['length']?_0x20f8fd[_0xdd8d('0x31')]:_0x77aa6a[_0xdd8d('0x2c')];if(_0x3e3291['query'][_0xdd8d('0x3f')]){_0x20f8fd[_0xdd8d('0x3b')]=[{'all':!![]}];}_0x20f8fd=_[_0xdd8d('0x39')]({},_0x20f8fd,_0x3e3291['options']);return db['ZohoAccount'][_0xdd8d('0x40')](_0x20f8fd)[_0xdd8d('0x22')](handleEntityNotFound(_0x344ad3,null))[_0xdd8d('0x22')](respondWithResult(_0x344ad3,null))[_0xdd8d('0x3d')](handleError(_0x344ad3,null));};exports[_0xdd8d('0x41')]=function(_0x47877b,_0x4a954d){return db[_0xdd8d('0x28')][_0xdd8d('0x41')](_0x47877b[_0xdd8d('0x42')],{})[_0xdd8d('0x22')](respondWithResult(_0x4a954d,0xc9))[_0xdd8d('0x3d')](handleError(_0x4a954d,null));};exports['update']=function(_0x2cadbb,_0xebf7bb){if(_0x2cadbb[_0xdd8d('0x42')]['id']){delete _0x2cadbb[_0xdd8d('0x42')]['id'];}return db[_0xdd8d('0x28')][_0xdd8d('0x40')]({'where':{'id':_0x2cadbb['params']['id']}})[_0xdd8d('0x22')](handleEntityNotFound(_0xebf7bb,null))[_0xdd8d('0x22')](saveUpdates(_0x2cadbb['body'],null))['then'](respondWithResult(_0xebf7bb,null))['catch'](handleError(_0xebf7bb,null));};exports['destroy']=function(_0x2b4073,_0x2ae827){return db[_0xdd8d('0x28')][_0xdd8d('0x40')]({'where':{'id':_0x2b4073[_0xdd8d('0x3e')]['id']}})[_0xdd8d('0x22')](handleEntityNotFound(_0x2ae827,null))[_0xdd8d('0x22')](removeEntity(_0x2ae827,null))[_0xdd8d('0x3d')](handleError(_0x2ae827,null));};exports[_0xdd8d('0x43')]=function(_0x13ca2f,_0x30d420,_0x4220f1){var _0x4a44d1={};var _0x11cca6={};var _0x44548c;var _0x2b7b33;return db[_0xdd8d('0x28')]['findOne']({'where':{'id':_0x13ca2f[_0xdd8d('0x3e')]['id']}})[_0xdd8d('0x22')](handleEntityNotFound(_0x30d420,null))[_0xdd8d('0x22')](function(_0x53daf5){if(_0x53daf5){_0x44548c=_0x53daf5;_0x11cca6[_0xdd8d('0x2c')]=_[_0xdd8d('0x2e')](db[_0xdd8d('0x44')]['rawAttributes']);_0x11cca6[_0xdd8d('0x2d')]=_[_0xdd8d('0x2e')](_0x13ca2f[_0xdd8d('0x2d')]);_0x11cca6['filters']=_[_0xdd8d('0x30')](_0x11cca6[_0xdd8d('0x2c')],_0x11cca6['query']);_0x4a44d1[_0xdd8d('0x31')]=_[_0xdd8d('0x30')](_0x11cca6['model'],qs[_0xdd8d('0x32')](_0x13ca2f[_0xdd8d('0x2d')]['fields']));_0x4a44d1['attributes']=_0x4a44d1[_0xdd8d('0x31')][_0xdd8d('0x33')]?_0x4a44d1['attributes']:_0x11cca6[_0xdd8d('0x2c')];_0x4a44d1[_0xdd8d('0x35')]=qs[_0xdd8d('0x36')](_0x13ca2f['query'][_0xdd8d('0x36')]);_0x4a44d1[_0xdd8d('0x37')]=qs[_0xdd8d('0x2f')](_[_0xdd8d('0x38')](_0x13ca2f[_0xdd8d('0x2d')],_0x11cca6[_0xdd8d('0x2f')]));if(_0x13ca2f['query']['filter']){_0x4a44d1[_0xdd8d('0x37')]=_[_0xdd8d('0x39')](_0x4a44d1[_0xdd8d('0x37')],{'$or':_[_0xdd8d('0x27')](_0x4a44d1['attributes'],function(_0x1344bc){var _0x3e65c3={};_0x3e65c3[_0x1344bc]={'$like':'%'+_0x13ca2f[_0xdd8d('0x2d')][_0xdd8d('0x45')]+'%'};return _0x3e65c3;})});}_0x4a44d1=_['merge']({},_0x4a44d1,_0x13ca2f['options']);return _0x44548c[_0xdd8d('0x43')](_0x4a44d1);}})[_0xdd8d('0x22')](function(_0x141b2e){if(_0x141b2e){_0x2b7b33=_0x141b2e[_0xdd8d('0x33')];if(!_0x13ca2f[_0xdd8d('0x2d')][_0xdd8d('0x46')](_0xdd8d('0x34'))){_0x4a44d1['limit']=qs[_0xdd8d('0x1c')](_0x13ca2f[_0xdd8d('0x2d')][_0xdd8d('0x1c')]);_0x4a44d1[_0xdd8d('0x1b')]=qs[_0xdd8d('0x1b')](_0x13ca2f[_0xdd8d('0x2d')][_0xdd8d('0x1b')]);}return _0x44548c[_0xdd8d('0x43')](_0x4a44d1);}})[_0xdd8d('0x22')](function(_0x3cba78){if(_0x3cba78){return _0x3cba78?{'count':_0x2b7b33,'rows':_0x3cba78}:null;}})['then'](respondWithResult(_0x30d420,null))[_0xdd8d('0x3d')](handleError(_0x30d420,null));};exports[_0xdd8d('0x47')]=function(_0x44fcfd,_0x534ad,_0x5ef555){if(_0x44fcfd[_0xdd8d('0x42')]['id']){delete _0x44fcfd['body']['id'];}return db[_0xdd8d('0x28')][_0xdd8d('0x48')]({'where':{'id':_0x44fcfd[_0xdd8d('0x3e')]['id']}})[_0xdd8d('0x22')](handleEntityNotFound(_0x534ad,null))['then'](function(_0x5d602a){if(_0x5d602a){_0x44fcfd[_0xdd8d('0x42')]['AccountId']=_0x5d602a['id'];_0x44fcfd[_0xdd8d('0x42')][_0xdd8d('0x49')]=integrations['getSubjects'](_0x44fcfd[_0xdd8d('0x42')][_0xdd8d('0x4a')],_0x44fcfd[_0xdd8d('0x42')][_0xdd8d('0x2a')]);_0x44fcfd['body'][_0xdd8d('0x4b')]=integrations[_0xdd8d('0x4c')](_0x44fcfd[_0xdd8d('0x42')][_0xdd8d('0x4a')],_0x44fcfd[_0xdd8d('0x42')][_0xdd8d('0x2a')]);return db[_0xdd8d('0x44')][_0xdd8d('0x41')](_0x44fcfd[_0xdd8d('0x42')],{'include':[{'model':db[_0xdd8d('0x4d')],'as':'Subjects'},{'model':db[_0xdd8d('0x4d')],'as':_0xdd8d('0x4b')}]});}return null;})[_0xdd8d('0x22')](respondWithResult(_0x534ad,null))['catch'](handleError(_0x534ad,null));};function getAccessToken(_0x3bbdad){return new Promise(function(_0x36b76f,_0x244ff4){var _0x8d430f;switch(_0x3bbdad[_0xdd8d('0x4e')]){case'US':_0x8d430f=_0xdd8d('0x4f');break;case'AU':_0x8d430f='https://accounts.zoho.com.au';break;case'EU':_0x8d430f=_0xdd8d('0x50');break;case'IN':_0x8d430f=_0xdd8d('0x51');break;case'CN':_0x8d430f=_0xdd8d('0x52');break;default:_0x8d430f='https://accounts.zoho.eu';break;}var _0x3d825b={'method':_0xdd8d('0x53'),'uri':_0x8d430f+_0xdd8d('0x54'),'qs':{'refresh_token':_0x3bbdad[_0xdd8d('0x55')],'client_id':_0x3bbdad[_0xdd8d('0x56')],'client_secret':_0x3bbdad[_0xdd8d('0x57')],'grant_type':'refresh_token'},'json':!![]};return rp(_0x3d825b)[_0xdd8d('0x22')](function(_0x5e6b47){if(_0x5e6b47['access_token']){_0x36b76f(_0x5e6b47['access_token']);}else{_0x244ff4(_0xdd8d('0x58'));}})[_0xdd8d('0x3d')](function(_0x489ed8){_0x244ff4(_0x489ed8);});});}exports['getFields']=function(_0x4c518a,_0xb2f50c,_0x2c1613){var _0x14c2b9,_0x4bf502,_0x3d019c,_0x10d180,_0x4e180e;return db['ZohoAccount'][_0xdd8d('0x48')]({'where':{'id':_0x4c518a[_0xdd8d('0x3e')]['id']},'attributes':['id',_0xdd8d('0x59'),_0xdd8d('0x4e'),_0xdd8d('0x56'),_0xdd8d('0x57'),_0xdd8d('0x5a'),'code',_0xdd8d('0x55')]})[_0xdd8d('0x22')](handleEntityNotFound(_0xb2f50c,null))[_0xdd8d('0x22')](function(_0x35b4f6){_0x4e180e=_0x35b4f6;_0x14c2b9=_0x4e180e[_0xdd8d('0x59')];_0x4bf502=_0x14c2b9===_0xdd8d('0x5b')?'eu':'com';_0x3d019c=_0x4e180e[_0xdd8d('0x5a')];var _0x2f3593=_0x3d019c['slice'](-0x1);if(_0x2f3593==='/'||_0x2f3593==='\x5c'||_0x2f3593===':'){_0x3d019c=_0x3d019c[_0xdd8d('0x5c')](0x0,_0x3d019c[_0xdd8d('0x5d')](_0x2f3593));}if(!_0x4e180e['refreshToken']){throw new Error(_0xdd8d('0x5e'));}return getAccessToken(_0x4e180e);})['then'](function(_0x5736e4){if(_0x5736e4){return rp({'method':_0xdd8d('0x5f'),'uri':util[_0xdd8d('0x60')](_0xdd8d('0x61'),_0x4bf502),'qs':{'module':'Calls'},'headers':{'Authorization':_0xdd8d('0x62')+_0x5736e4},'json':!![]});}})[_0xdd8d('0x22')](function(_0x1fd2da){if(_0x1fd2da){if(_0x1fd2da[_0xdd8d('0x63')]&&_0x1fd2da[_0xdd8d('0x63')][_0xdd8d('0x64')]){throw new Error(_0x1fd2da[_0xdd8d('0x63')]['error'][_0xdd8d('0x65')]);}var _0x475a5d=[];var _0xab2307=[];var _0x2c21f8=['Owner','Subject',_0xdd8d('0x66'),_0xdd8d('0x67'),_0xdd8d('0x68'),_0xdd8d('0x69'),'Call_Start_Time',_0xdd8d('0x6a')];_0xab2307=_[_0xdd8d('0x6b')](_0x1fd2da[_0xdd8d('0x32')],function(_0x40e7ec){return _0x2c21f8[_0xdd8d('0x6c')](_0x40e7ec[_0xdd8d('0x6d')]);});for(var _0x46793b=0x0;_0x46793b<_0xab2307[_0xdd8d('0x33')];_0x46793b++){if(_0xab2307[_0x46793b][_0xdd8d('0x6e')]===![]){_0x475a5d['push']({'id':_0xab2307[_0x46793b]['id'],'name':_0xab2307[_0x46793b]['display_label'],'custom':_0xab2307[_0x46793b][_0xdd8d('0x6f')],'options':_0xab2307[_0x46793b][_0xdd8d('0x70')]===_0xdd8d('0x71')&&_0xab2307[_0x46793b][_0xdd8d('0x72')][_0xdd8d('0x33')]>-0x1?_[_0xdd8d('0x27')](_0xab2307[_0x46793b][_0xdd8d('0x72')],function(_0x188891){return{'name':_0x188891,'value':_0x188891};}):[]});}}return{'count':_0x475a5d[_0xdd8d('0x33')],'rows':_0x475a5d};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithResult(_0xb2f50c,null))[_0xdd8d('0x3d')](function(_0x4caac3){var _0x23a60f=_0x4c518a[_0xdd8d('0x2d')][_0xdd8d('0x73')]?0x1f4:_0x4caac3[_0xdd8d('0x74')]||0x1f4;logger[_0xdd8d('0x64')](_0xdd8d('0x75'),_0xdd8d('0x76'),_0x23a60f,JSON[_0xdd8d('0x77')](_0x4caac3));delete _0x4caac3['name'];if(_0x23a60f===0x191){_0x23a60f=0x190;}_0xb2f50c[_0xdd8d('0x18')](_0x23a60f)['send'](_0x4c518a[_0xdd8d('0x2d')][_0xdd8d('0x73')]?{'message':'Wrong\x20credentials','statusCode':_0x4caac3[_0xdd8d('0x74')]}:_0x4caac3);});};
\ No newline at end of file
index 187fe17..132d3ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb2e=['https://accounts.zoho.eu','POST','/oauth/v2/token','clientId','clientSecret','application/x-www-form-urlencoded','then','parse','refresh_token','refreshToken','info','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','error','format','inspect','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','zone','https://accounts.zoho.com','catch','lodash','moment','bluebird','request-promise','rimraf','../../config/environment','../../components/integrations/configuration','exports','int_zoho_accounts','changed','serverUrl','code','host','lastIndexOf','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn'];(function(_0x9aada2,_0xd2d349){var _0x196dff=function(_0x5ad061){while(--_0x5ad061){_0x9aada2['push'](_0x9aada2['shift']());}};_0x196dff(++_0xd2d349);}(_0xeb2e,0xa8));var _0xeeb2=function(_0x733313,_0x329dd5){_0x733313=_0x733313-0x0;var _0x4e84f0=_0xeb2e[_0x733313];return _0x4e84f0;};'use strict';var _=require(_0xeeb2('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xeeb2('0x1'));var BPromise=require(_0xeeb2('0x2'));var rp=require(_0xeeb2('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xeeb2('0x4'));var config=require(_0xeeb2('0x5'));var attributes=require('./intZohoAccount.attributes');var integrations=require(_0xeeb2('0x6'));module[_0xeeb2('0x7')]=function(_0x3612bf,_0x179b96){return _0x3612bf['define']('ZohoAccount',attributes,{'tableName':_0xeeb2('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x2b32a0,_0x41a4d9,_0x205419){if(_0x2b32a0[_0xeeb2('0x9')]('zone')||_0x2b32a0[_0xeeb2('0x9')](_0xeeb2('0xa'))||_0x2b32a0['changed']('clientId')||_0x2b32a0[_0xeeb2('0x9')]('clientSecret')||_0x2b32a0[_0xeeb2('0x9')](_0xeeb2('0xb'))||_0x2b32a0[_0xeeb2('0x9')](_0xeeb2('0xc'))){var _0x36eba6,_0x9a2047;_0x36eba6=_0x2b32a0[_0xeeb2('0xa')];var _0x1122bf=_0x36eba6['slice'](-0x1);if(_0x1122bf==='/'||_0x1122bf==='\x5c'||_0x1122bf===':'){_0x36eba6=_0x36eba6['substring'](0x0,_0x36eba6[_0xeeb2('0xd')](_0x1122bf));}switch(_0x2b32a0['zone']){case'US':_0x9a2047='https://accounts.zoho.com';break;case'AU':_0x9a2047=_0xeeb2('0xe');break;case'IN':_0x9a2047=_0xeeb2('0xf');break;case'CN':_0x9a2047=_0xeeb2('0x10');break;default:_0x9a2047=_0xeeb2('0x11');break;}var _0x570f61={'method':_0xeeb2('0x12'),'uri':_0x9a2047+_0xeeb2('0x13'),'form':{'grant_type':'authorization_code','client_id':_0x2b32a0[_0xeeb2('0x14')],'client_secret':_0x2b32a0[_0xeeb2('0x15')],'redirect_uri':_0x2b32a0[_0xeeb2('0xa')],'code':_0x2b32a0[_0xeeb2('0xb')]},'headers':{'Content-Type':_0xeeb2('0x16')}};return rp(_0x570f61)[_0xeeb2('0x17')](function(_0x597947){var _0x268742=JSON[_0xeeb2('0x18')](_0x597947);if(_0x268742[_0xeeb2('0x19')]){_0x2b32a0[_0xeeb2('0x1a')]=_0x268742['refresh_token'];logger[_0xeeb2('0x1b')](util['format'](_0xeeb2('0x1c'),_0x2b32a0[_0xeeb2('0x1d')],_0x2b32a0['id']));}else{logger[_0xeeb2('0x1e')](util[_0xeeb2('0x1f')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x2b32a0['name'],_0x2b32a0['id']),util[_0xeeb2('0x20')](_0x268742,{'showHidden':![],'depth':null}));}return _0x205419(null,_0x41a4d9);})['catch'](function(_0x417378){logger[_0xeeb2('0x1e')](util['format'](_0xeeb2('0x21'),_0x2b32a0[_0xeeb2('0x1d')],_0x2b32a0['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x205419(_0x417378);});}else{return _0x205419(null,_0x41a4d9);}},'beforeUpdate':function(_0x2cb42c,_0x1d77c2,_0xf2dd99){if(_0x2cb42c[_0xeeb2('0x9')](_0xeeb2('0x22'))||_0x2cb42c[_0xeeb2('0x9')](_0xeeb2('0xa'))||_0x2cb42c[_0xeeb2('0x9')](_0xeeb2('0x14'))||_0x2cb42c[_0xeeb2('0x9')](_0xeeb2('0x15'))||_0x2cb42c[_0xeeb2('0x9')](_0xeeb2('0xb'))||_0x2cb42c[_0xeeb2('0x9')](_0xeeb2('0xc'))){var _0x3301f6,_0x58a266;_0x3301f6=_0x2cb42c[_0xeeb2('0xa')];var _0x547ae0=_0x3301f6['slice'](-0x1);if(_0x547ae0==='/'||_0x547ae0==='\x5c'||_0x547ae0===':'){_0x3301f6=_0x3301f6['substring'](0x0,_0x3301f6[_0xeeb2('0xd')](_0x547ae0));}switch(_0x2cb42c['zone']){case'US':_0x58a266=_0xeeb2('0x23');break;case'AU':_0x58a266=_0xeeb2('0xe');break;case'IN':_0x58a266='https://accounts.zoho.in';break;case'CN':_0x58a266=_0xeeb2('0x10');break;default:_0x58a266='https://accounts.zoho.eu';break;}var _0x2545e7={'method':_0xeeb2('0x12'),'uri':_0x58a266+'/oauth/v2/token','form':{'grant_type':'authorization_code','client_id':_0x2cb42c[_0xeeb2('0x14')],'client_secret':_0x2cb42c[_0xeeb2('0x15')],'redirect_uri':_0x2cb42c[_0xeeb2('0xa')],'code':_0x2cb42c[_0xeeb2('0xb')]},'headers':{'Content-Type':_0xeeb2('0x16')}};return rp(_0x2545e7)[_0xeeb2('0x17')](function(_0x5bbb00){var _0x42eaa4=JSON[_0xeeb2('0x18')](_0x5bbb00);if(_0x42eaa4['refresh_token']){_0x2cb42c[_0xeeb2('0x1a')]=_0x42eaa4['refresh_token'];logger[_0xeeb2('0x1b')](util[_0xeeb2('0x1f')](_0xeeb2('0x1c'),_0x2cb42c['name'],_0x2cb42c['id']));}else{logger[_0xeeb2('0x1e')](util[_0xeeb2('0x1f')](_0xeeb2('0x21'),_0x2cb42c[_0xeeb2('0x1d')],_0x2cb42c['id']),util['inspect'](_0x42eaa4,{'showHidden':![],'depth':null}));}return _0xf2dd99(null,_0x1d77c2);})[_0xeeb2('0x24')](function(_0x4a4bc1){logger[_0xeeb2('0x1e')](util[_0xeeb2('0x1f')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x2cb42c[_0xeeb2('0x1d')],_0x2cb42c['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0xf2dd99(_0x4a4bc1);});}else{return _0xf2dd99(null,_0x1d77c2);}}}});};
\ No newline at end of file
+var _0x712b=['../../config/environment','./intZohoAccount.attributes','../../components/integrations/configuration','define','int_zoho_accounts','changed','serverUrl','clientSecret','code','host','slice','substring','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','authorization_code','clientId','application/x-www-form-urlencoded','refresh_token','refreshToken','info','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','inspect','catch','error','format','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','lastIndexOf','then','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0x712b,0xfa));var _0xb712=function(_0x15642f,_0xa48ed6){_0x15642f=_0x15642f-0x0;var _0x2c2691=_0x712b[_0x15642f];return _0x2c2691;};'use strict';var _=require('lodash');var util=require(_0xb712('0x0'));var logger=require(_0xb712('0x1'))(_0xb712('0x2'));var moment=require(_0xb712('0x3'));var BPromise=require(_0xb712('0x4'));var rp=require(_0xb712('0x5'));var fs=require('fs');var path=require(_0xb712('0x6'));var rimraf=require(_0xb712('0x7'));var config=require(_0xb712('0x8'));var attributes=require(_0xb712('0x9'));var integrations=require(_0xb712('0xa'));module['exports']=function(_0x3523a5,_0x1a2e13){return _0x3523a5[_0xb712('0xb')]('ZohoAccount',attributes,{'tableName':_0xb712('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x5783fc,_0x1a39a5,_0x2cfa56){if(_0x5783fc[_0xb712('0xd')]('zone')||_0x5783fc[_0xb712('0xd')](_0xb712('0xe'))||_0x5783fc[_0xb712('0xd')]('clientId')||_0x5783fc[_0xb712('0xd')](_0xb712('0xf'))||_0x5783fc[_0xb712('0xd')](_0xb712('0x10'))||_0x5783fc[_0xb712('0xd')](_0xb712('0x11'))){var _0x48dbe0,_0x1a498b;_0x48dbe0=_0x5783fc[_0xb712('0xe')];var _0x44606d=_0x48dbe0[_0xb712('0x12')](-0x1);if(_0x44606d==='/'||_0x44606d==='\x5c'||_0x44606d===':'){_0x48dbe0=_0x48dbe0[_0xb712('0x13')](0x0,_0x48dbe0['lastIndexOf'](_0x44606d));}switch(_0x5783fc[_0xb712('0x14')]){case'US':_0x1a498b=_0xb712('0x15');break;case'AU':_0x1a498b=_0xb712('0x16');break;case'IN':_0x1a498b=_0xb712('0x17');break;case'CN':_0x1a498b=_0xb712('0x18');break;default:_0x1a498b=_0xb712('0x19');break;}var _0x2803be={'method':_0xb712('0x1a'),'uri':_0x1a498b+_0xb712('0x1b'),'form':{'grant_type':_0xb712('0x1c'),'client_id':_0x5783fc[_0xb712('0x1d')],'client_secret':_0x5783fc['clientSecret'],'redirect_uri':_0x5783fc[_0xb712('0xe')],'code':_0x5783fc[_0xb712('0x10')]},'headers':{'Content-Type':_0xb712('0x1e')}};return rp(_0x2803be)['then'](function(_0x2bb5aa){var _0x4391f4=JSON['parse'](_0x2bb5aa);if(_0x4391f4[_0xb712('0x1f')]){_0x5783fc[_0xb712('0x20')]=_0x4391f4[_0xb712('0x1f')];logger[_0xb712('0x21')](util['format'](_0xb712('0x22'),_0x5783fc[_0xb712('0x23')],_0x5783fc['id']));}else{logger['error'](util['format']('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x5783fc['name'],_0x5783fc['id']),util[_0xb712('0x24')](_0x4391f4,{'showHidden':![],'depth':null}));}return _0x2cfa56(null,_0x1a39a5);})[_0xb712('0x25')](function(_0x3a43de){logger[_0xb712('0x26')](util[_0xb712('0x27')](_0xb712('0x28'),_0x5783fc[_0xb712('0x23')],_0x5783fc['id']),util[_0xb712('0x24')](parsedResult,{'showHidden':![],'depth':null}));return _0x2cfa56(_0x3a43de);});}else{return _0x2cfa56(null,_0x1a39a5);}},'beforeUpdate':function(_0x41e2d3,_0x3f1af7,_0x417a4f){if(_0x41e2d3[_0xb712('0xd')]('zone')||_0x41e2d3[_0xb712('0xd')](_0xb712('0xe'))||_0x41e2d3[_0xb712('0xd')](_0xb712('0x1d'))||_0x41e2d3[_0xb712('0xd')](_0xb712('0xf'))||_0x41e2d3[_0xb712('0xd')]('code')||_0x41e2d3[_0xb712('0xd')](_0xb712('0x11'))){var _0x15f6cf,_0xc0005c;_0x15f6cf=_0x41e2d3[_0xb712('0xe')];var _0x39a480=_0x15f6cf[_0xb712('0x12')](-0x1);if(_0x39a480==='/'||_0x39a480==='\x5c'||_0x39a480===':'){_0x15f6cf=_0x15f6cf[_0xb712('0x13')](0x0,_0x15f6cf[_0xb712('0x29')](_0x39a480));}switch(_0x41e2d3[_0xb712('0x14')]){case'US':_0xc0005c=_0xb712('0x15');break;case'AU':_0xc0005c=_0xb712('0x16');break;case'IN':_0xc0005c=_0xb712('0x17');break;case'CN':_0xc0005c=_0xb712('0x18');break;default:_0xc0005c=_0xb712('0x19');break;}var _0x51aba1={'method':'POST','uri':_0xc0005c+_0xb712('0x1b'),'form':{'grant_type':_0xb712('0x1c'),'client_id':_0x41e2d3[_0xb712('0x1d')],'client_secret':_0x41e2d3[_0xb712('0xf')],'redirect_uri':_0x41e2d3[_0xb712('0xe')],'code':_0x41e2d3[_0xb712('0x10')]},'headers':{'Content-Type':_0xb712('0x1e')}};return rp(_0x51aba1)[_0xb712('0x2a')](function(_0x2c53b2){var _0x5860f5=JSON['parse'](_0x2c53b2);if(_0x5860f5[_0xb712('0x1f')]){_0x41e2d3[_0xb712('0x20')]=_0x5860f5['refresh_token'];logger[_0xb712('0x21')](util[_0xb712('0x27')](_0xb712('0x22'),_0x41e2d3[_0xb712('0x23')],_0x41e2d3['id']));}else{logger[_0xb712('0x26')](util[_0xb712('0x27')](_0xb712('0x28'),_0x41e2d3['name'],_0x41e2d3['id']),util[_0xb712('0x24')](_0x5860f5,{'showHidden':![],'depth':null}));}return _0x417a4f(null,_0x3f1af7);})[_0xb712('0x25')](function(_0x109802){logger[_0xb712('0x26')](util[_0xb712('0x27')](_0xb712('0x28'),_0x41e2d3[_0xb712('0x23')],_0x41e2d3['id']),util[_0xb712('0x24')](parsedResult,{'showHidden':![],'depth':null}));return _0x417a4f(_0x109802);});}else{return _0x417a4f(null,_0x3f1af7);}}}});};
\ No newline at end of file
index 1153989..8493bb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe2c=['result','catch','ZohoAccount','findAll','options','where','attributes','include','map','model','then','GetZohoAccount','debug','ShowZohoAccount','find','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','info','ZohoAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x227f56,_0x273e10){var _0x23c7c6=function(_0x1156c2){while(--_0x1156c2){_0x227f56['push'](_0x227f56['shift']());}};_0x23c7c6(++_0x273e10);}(_0xbe2c,0x18f));var _0xcbe2=function(_0xd4a5,_0x12a607){_0xd4a5=_0xd4a5-0x0;var _0x4c99f6=_0xbe2c[_0xd4a5];return _0x4c99f6;};'use strict';var _=require(_0xcbe2('0x0'));var util=require(_0xcbe2('0x1'));var moment=require('moment');var BPromise=require(_0xcbe2('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xcbe2('0x3'));var db=require(_0xcbe2('0x4'))['db'];var utils=require(_0xcbe2('0x5'));var logger=require(_0xcbe2('0x6'))(_0xcbe2('0x7'));var config=require('../../config/environment');var jayson=require(_0xcbe2('0x8'));var client=jayson[_0xcbe2('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2c0389,_0x3eb920,_0x1c28ab){return new BPromise(function(_0x294a61,_0x21233e){return client['request'](_0x2c0389,_0x1c28ab)['then'](function(_0xb7fe3c){logger[_0xcbe2('0xa')](_0xcbe2('0xb'),_0x3eb920,_0xcbe2('0xc'));logger['debug']('ZohoAccount,\x20%s,\x20%s,\x20%s',_0x3eb920,_0xcbe2('0xc'),JSON[_0xcbe2('0xd')](_0xb7fe3c));if(_0xb7fe3c[_0xcbe2('0xe')]){if(_0xb7fe3c[_0xcbe2('0xe')][_0xcbe2('0xf')]===0x1f4){logger[_0xcbe2('0xe')]('ZohoAccount,\x20%s,\x20%s',_0x3eb920,_0xb7fe3c[_0xcbe2('0xe')][_0xcbe2('0x10')]);return _0x21233e(_0xb7fe3c['error'][_0xcbe2('0x10')]);}logger['error'](_0xcbe2('0xb'),_0x3eb920,_0xb7fe3c['error'][_0xcbe2('0x10')]);return _0x294a61(_0xb7fe3c['error']['message']);}else{logger[_0xcbe2('0xa')]('ZohoAccount,\x20%s,\x20%s',_0x3eb920,_0xcbe2('0xc'));_0x294a61(_0xb7fe3c[_0xcbe2('0x11')][_0xcbe2('0x10')]);}})[_0xcbe2('0x12')](function(_0x40dc0f){logger[_0xcbe2('0xe')](_0xcbe2('0xb'),_0x3eb920,_0x40dc0f);_0x21233e(_0x40dc0f);});});}exports['GetZohoAccount']=function(_0xb968ac){var _0x5acacd=this;return new Promise(function(_0x1c09cb,_0xff2918){return db[_0xcbe2('0x13')][_0xcbe2('0x14')]({'raw':_0xb968ac['options']?_0xb968ac[_0xcbe2('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0xb968ac['options']?_0xb968ac[_0xcbe2('0x15')][_0xcbe2('0x16')]||null:null,'attributes':_0xb968ac[_0xcbe2('0x15')]?_0xb968ac['options'][_0xcbe2('0x17')]||null:null,'limit':_0xb968ac[_0xcbe2('0x15')]?_0xb968ac[_0xcbe2('0x15')]['limit']||null:null,'include':_0xb968ac[_0xcbe2('0x15')]?_0xb968ac[_0xcbe2('0x15')][_0xcbe2('0x18')]?_[_0xcbe2('0x19')](_0xb968ac[_0xcbe2('0x15')][_0xcbe2('0x18')],function(_0x2f1e25){return{'model':db[_0x2f1e25[_0xcbe2('0x1a')]],'as':_0x2f1e25['as'],'attributes':_0x2f1e25['attributes'],'include':_0x2f1e25[_0xcbe2('0x18')]?_[_0xcbe2('0x19')](_0x2f1e25['include'],function(_0x40039f){return{'model':db[_0x40039f[_0xcbe2('0x1a')]],'as':_0x40039f['as'],'attributes':_0x40039f[_0xcbe2('0x17')],'include':_0x40039f[_0xcbe2('0x18')]?_[_0xcbe2('0x19')](_0x40039f['include'],function(_0xbc5aab){return{'model':db[_0xbc5aab[_0xcbe2('0x1a')]],'as':_0xbc5aab['as'],'attributes':_0xbc5aab['attributes']};}):[]};}):[]};}):[]:[]})[_0xcbe2('0x1b')](function(_0x5ad2e9){logger[_0xcbe2('0xa')](_0xcbe2('0x1c'),_0xb968ac);logger[_0xcbe2('0x1d')](_0xcbe2('0x1c'),_0xb968ac,JSON['stringify'](_0x5ad2e9));_0x1c09cb(_0x5ad2e9);})[_0xcbe2('0x12')](function(_0x37eb8b){logger['error'](_0xcbe2('0x1c'),_0x37eb8b[_0xcbe2('0x10')],_0xb968ac);_0xff2918(_0x5acacd[_0xcbe2('0xe')](0x1f4,_0x37eb8b[_0xcbe2('0x10')]));});});};exports[_0xcbe2('0x1e')]=function(_0x3cffd1){var _0x3744f3=this;return new Promise(function(_0x8824fc,_0x39ab14){return db[_0xcbe2('0x13')][_0xcbe2('0x1f')]({'raw':_0x3cffd1[_0xcbe2('0x15')]?_0x3cffd1[_0xcbe2('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x3cffd1[_0xcbe2('0x15')]?_0x3cffd1[_0xcbe2('0x15')]['where']||null:null,'attributes':_0x3cffd1['options']?_0x3cffd1[_0xcbe2('0x15')]['attributes']||null:null,'include':_0x3cffd1[_0xcbe2('0x15')]?_0x3cffd1[_0xcbe2('0x15')][_0xcbe2('0x18')]?_[_0xcbe2('0x19')](_0x3cffd1[_0xcbe2('0x15')][_0xcbe2('0x18')],function(_0x183953){return{'model':db[_0x183953['model']],'as':_0x183953['as'],'attributes':_0x183953[_0xcbe2('0x17')],'include':_0x183953['include']?_['map'](_0x183953[_0xcbe2('0x18')],function(_0x4bd628){return{'model':db[_0x4bd628[_0xcbe2('0x1a')]],'as':_0x4bd628['as'],'attributes':_0x4bd628['attributes'],'include':_0x4bd628[_0xcbe2('0x18')]?_[_0xcbe2('0x19')](_0x4bd628['include'],function(_0x97be46){return{'model':db[_0x97be46['model']],'as':_0x97be46['as'],'attributes':_0x97be46[_0xcbe2('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5e9023){logger[_0xcbe2('0xa')]('ShowZohoAccount',_0x3cffd1);logger['debug'](_0xcbe2('0x1e'),_0x3cffd1,JSON['stringify'](_0x5e9023));_0x8824fc(_0x5e9023);})[_0xcbe2('0x12')](function(_0xc0cc08){logger[_0xcbe2('0xe')]('ShowZohoAccount',_0xc0cc08[_0xcbe2('0x10')],_0x3cffd1);_0x39ab14(_0x3744f3[_0xcbe2('0xe')](0x1f4,_0xc0cc08['message']));});});};
\ No newline at end of file
+var _0xb923=['randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','then','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','error','message','info','result','GetZohoAccount','ZohoAccount','findAll','options','raw','where','attributes','model','include','map','stringify','find','ShowZohoAccount','catch','lodash','util','moment'];(function(_0x19c700,_0x1662ee){var _0x213fe9=function(_0x1fd039){while(--_0x1fd039){_0x19c700['push'](_0x19c700['shift']());}};_0x213fe9(++_0x1662ee);}(_0xb923,0xa2));var _0x3b92=function(_0x3d7360,_0x120839){_0x3d7360=_0x3d7360-0x0;var _0x40102c=_0xb923[_0x3d7360];return _0x40102c;};'use strict';var _=require(_0x3b92('0x0'));var util=require(_0x3b92('0x1'));var moment=require(_0x3b92('0x2'));var BPromise=require('bluebird');var rs=require(_0x3b92('0x3'));var fs=require('fs');var Redis=require(_0x3b92('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x3b92('0x5'));var config=require(_0x3b92('0x6'));var jayson=require(_0x3b92('0x7'));var client=jayson[_0x3b92('0x8')][_0x3b92('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2b490c,_0x6809d9,_0x48b468){return new BPromise(function(_0x511c10,_0x2aefa5){return client['request'](_0x2b490c,_0x48b468)[_0x3b92('0xa')](function(_0x43b28a){logger['info'](_0x3b92('0xb'),_0x6809d9,_0x3b92('0xc'));logger[_0x3b92('0xd')](_0x3b92('0xe'),_0x6809d9,_0x3b92('0xc'),JSON['stringify'](_0x43b28a));if(_0x43b28a[_0x3b92('0xf')]){if(_0x43b28a['error']['code']===0x1f4){logger[_0x3b92('0xf')](_0x3b92('0xb'),_0x6809d9,_0x43b28a[_0x3b92('0xf')][_0x3b92('0x10')]);return _0x2aefa5(_0x43b28a['error']['message']);}logger[_0x3b92('0xf')]('ZohoAccount,\x20%s,\x20%s',_0x6809d9,_0x43b28a['error'][_0x3b92('0x10')]);return _0x511c10(_0x43b28a[_0x3b92('0xf')][_0x3b92('0x10')]);}else{logger[_0x3b92('0x11')](_0x3b92('0xb'),_0x6809d9,'request\x20sent');_0x511c10(_0x43b28a[_0x3b92('0x12')][_0x3b92('0x10')]);}})['catch'](function(_0x4e6da7){logger[_0x3b92('0xf')](_0x3b92('0xb'),_0x6809d9,_0x4e6da7);_0x2aefa5(_0x4e6da7);});});}exports[_0x3b92('0x13')]=function(_0x1859b4){var _0x3d7f80=this;return new Promise(function(_0xc2cd15,_0x361754){return db[_0x3b92('0x14')][_0x3b92('0x15')]({'raw':_0x1859b4[_0x3b92('0x16')]?_0x1859b4[_0x3b92('0x16')][_0x3b92('0x17')]===undefined?!![]:![]:!![],'where':_0x1859b4[_0x3b92('0x16')]?_0x1859b4['options'][_0x3b92('0x18')]||null:null,'attributes':_0x1859b4[_0x3b92('0x16')]?_0x1859b4[_0x3b92('0x16')][_0x3b92('0x19')]||null:null,'limit':_0x1859b4[_0x3b92('0x16')]?_0x1859b4[_0x3b92('0x16')]['limit']||null:null,'include':_0x1859b4[_0x3b92('0x16')]?_0x1859b4[_0x3b92('0x16')]['include']?_['map'](_0x1859b4['options']['include'],function(_0x450f2e){return{'model':db[_0x450f2e[_0x3b92('0x1a')]],'as':_0x450f2e['as'],'attributes':_0x450f2e[_0x3b92('0x19')],'include':_0x450f2e[_0x3b92('0x1b')]?_[_0x3b92('0x1c')](_0x450f2e[_0x3b92('0x1b')],function(_0x427a90){return{'model':db[_0x427a90['model']],'as':_0x427a90['as'],'attributes':_0x427a90[_0x3b92('0x19')],'include':_0x427a90['include']?_[_0x3b92('0x1c')](_0x427a90['include'],function(_0x24a15f){return{'model':db[_0x24a15f[_0x3b92('0x1a')]],'as':_0x24a15f['as'],'attributes':_0x24a15f[_0x3b92('0x19')]};}):[]};}):[]};}):[]:[]})[_0x3b92('0xa')](function(_0x42fc82){logger[_0x3b92('0x11')]('GetZohoAccount',_0x1859b4);logger[_0x3b92('0xd')](_0x3b92('0x13'),_0x1859b4,JSON[_0x3b92('0x1d')](_0x42fc82));_0xc2cd15(_0x42fc82);})['catch'](function(_0x4ac7b4){logger[_0x3b92('0xf')](_0x3b92('0x13'),_0x4ac7b4['message'],_0x1859b4);_0x361754(_0x3d7f80['error'](0x1f4,_0x4ac7b4[_0x3b92('0x10')]));});});};exports['ShowZohoAccount']=function(_0x2d8b2e){var _0x4e404c=this;return new Promise(function(_0x5b8e18,_0x4a3596){return db[_0x3b92('0x14')][_0x3b92('0x1e')]({'raw':_0x2d8b2e['options']?_0x2d8b2e[_0x3b92('0x16')][_0x3b92('0x17')]===undefined?!![]:![]:!![],'where':_0x2d8b2e['options']?_0x2d8b2e[_0x3b92('0x16')][_0x3b92('0x18')]||null:null,'attributes':_0x2d8b2e[_0x3b92('0x16')]?_0x2d8b2e['options']['attributes']||null:null,'include':_0x2d8b2e[_0x3b92('0x16')]?_0x2d8b2e[_0x3b92('0x16')][_0x3b92('0x1b')]?_['map'](_0x2d8b2e['options'][_0x3b92('0x1b')],function(_0x5cd23f){return{'model':db[_0x5cd23f[_0x3b92('0x1a')]],'as':_0x5cd23f['as'],'attributes':_0x5cd23f[_0x3b92('0x19')],'include':_0x5cd23f[_0x3b92('0x1b')]?_[_0x3b92('0x1c')](_0x5cd23f[_0x3b92('0x1b')],function(_0x1ec1e2){return{'model':db[_0x1ec1e2[_0x3b92('0x1a')]],'as':_0x1ec1e2['as'],'attributes':_0x1ec1e2['attributes'],'include':_0x1ec1e2[_0x3b92('0x1b')]?_[_0x3b92('0x1c')](_0x1ec1e2[_0x3b92('0x1b')],function(_0x49d036){return{'model':db[_0x49d036[_0x3b92('0x1a')]],'as':_0x49d036['as'],'attributes':_0x49d036[_0x3b92('0x19')]};}):[]};}):[]};}):[]:[]})[_0x3b92('0xa')](function(_0x1a7bbb){logger[_0x3b92('0x11')](_0x3b92('0x1f'),_0x2d8b2e);logger[_0x3b92('0xd')](_0x3b92('0x1f'),_0x2d8b2e,JSON[_0x3b92('0x1d')](_0x1a7bbb));_0x5b8e18(_0x1a7bbb);})[_0x3b92('0x20')](function(_0x2920a5){logger[_0x3b92('0xf')](_0x3b92('0x1f'),_0x2920a5[_0x3b92('0x10')],_0x2d8b2e);_0x4a3596(_0x4e404c[_0x3b92('0xf')](0x1f4,_0x2920a5[_0x3b92('0x10')]));});});};
\ No newline at end of file
index 384811f..46e9a24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3287=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoConfiguration.controller','get','isAuthenticated','/:id','/:id/subjects','getSubjects','/:id/descriptions','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0x3287,0x1ab));var _0x7328=function(_0x3aedf5,_0x150c1d){_0x3aedf5=_0x3aedf5-0x0;var _0x5e1ac5=_0x3287[_0x3aedf5];return _0x5e1ac5;};'use strict';var multer=require(_0x7328('0x0'));var util=require(_0x7328('0x1'));var path=require(_0x7328('0x2'));var timeout=require(_0x7328('0x3'));var express=require(_0x7328('0x4'));var router=express[_0x7328('0x5')]();var fs_extra=require(_0x7328('0x6'));var auth=require(_0x7328('0x7'));var interaction=require(_0x7328('0x8'));var config=require(_0x7328('0x9'));var controller=require(_0x7328('0xa'));router[_0x7328('0xb')]('/',auth[_0x7328('0xc')](),controller['index']);router[_0x7328('0xb')](_0x7328('0xd'),auth[_0x7328('0xc')](),controller['show']);router['get']('/:id/fields',auth['isAuthenticated'](),controller['getFields']);router['get'](_0x7328('0xe'),auth[_0x7328('0xc')](),controller[_0x7328('0xf')]);router[_0x7328('0xb')](_0x7328('0x10'),auth[_0x7328('0xc')](),controller['getDescriptions']);router[_0x7328('0x11')]('/',auth[_0x7328('0xc')](),controller[_0x7328('0x12')]);router[_0x7328('0x13')](_0x7328('0xd'),auth[_0x7328('0xc')](),controller[_0x7328('0x14')]);router[_0x7328('0x15')](_0x7328('0xd'),auth[_0x7328('0xc')](),controller[_0x7328('0x16')]);module[_0x7328('0x17')]=router;
\ No newline at end of file
+var _0xda75=['destroy','exports','multer','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoConfiguration.controller','get','isAuthenticated','/:id','show','/:id/fields','getFields','getSubjects','getDescriptions','create','update','delete'];(function(_0x22b56c,_0x2880bc){var _0x5def9f=function(_0x3b4943){while(--_0x3b4943){_0x22b56c['push'](_0x22b56c['shift']());}};_0x5def9f(++_0x2880bc);}(_0xda75,0x1bb));var _0x5da7=function(_0x56b748,_0x9297ef){_0x56b748=_0x56b748-0x0;var _0x4ab538=_0xda75[_0x56b748];return _0x4ab538;};'use strict';var multer=require(_0x5da7('0x0'));var util=require('util');var path=require(_0x5da7('0x1'));var timeout=require(_0x5da7('0x2'));var express=require(_0x5da7('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x5da7('0x4'));var interaction=require(_0x5da7('0x5'));var config=require(_0x5da7('0x6'));var controller=require(_0x5da7('0x7'));router[_0x5da7('0x8')]('/',auth[_0x5da7('0x9')](),controller['index']);router['get'](_0x5da7('0xa'),auth[_0x5da7('0x9')](),controller[_0x5da7('0xb')]);router[_0x5da7('0x8')](_0x5da7('0xc'),auth[_0x5da7('0x9')](),controller[_0x5da7('0xd')]);router[_0x5da7('0x8')]('/:id/subjects',auth[_0x5da7('0x9')](),controller[_0x5da7('0xe')]);router[_0x5da7('0x8')]('/:id/descriptions',auth[_0x5da7('0x9')](),controller[_0x5da7('0xf')]);router['post']('/',auth[_0x5da7('0x9')](),controller[_0x5da7('0x10')]);router['put'](_0x5da7('0xa'),auth[_0x5da7('0x9')](),controller[_0x5da7('0x11')]);router[_0x5da7('0x12')](_0x5da7('0xa'),auth['isAuthenticated'](),controller[_0x5da7('0x13')]);module[_0x5da7('0x14')]=router;
\ No newline at end of file
index 76985af..bec2d4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8e5=['nothing','contact_lead','exports','STRING','ENUM','lead','contact'];(function(_0x1cbe6b,_0x4cd68b){var _0x596cf1=function(_0x179bae){while(--_0x179bae){_0x1cbe6b['push'](_0x1cbe6b['shift']());}};_0x596cf1(++_0x4cd68b);}(_0xd8e5,0x6b));var _0x5d8e=function(_0x4fa989,_0x2dfdbc){_0x4fa989=_0x4fa989-0x0;var _0x1f14ee=_0xd8e5[_0x4fa989];return _0x1f14ee;};'use strict';var Sequelize=require('sequelize');module[_0x5d8e('0x0')]={'name':{'type':Sequelize[_0x5d8e('0x1')]},'moduleCreate':{'type':Sequelize[_0x5d8e('0x2')](_0x5d8e('0x3'),_0x5d8e('0x4'),_0x5d8e('0x5')),'defaultValue':_0x5d8e('0x3')},'moduleSearch':{'type':Sequelize['ENUM'](_0x5d8e('0x6'),_0x5d8e('0x4'),_0x5d8e('0x3')),'defaultValue':_0x5d8e('0x6')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x2568=['nothing','contact_lead','sequelize','STRING','ENUM','lead','contact'];(function(_0x1256cd,_0x8939b9){var _0x4a310f=function(_0xce289b){while(--_0xce289b){_0x1256cd['push'](_0x1256cd['shift']());}};_0x4a310f(++_0x8939b9);}(_0x2568,0x12f));var _0x8256=function(_0x16cc17,_0x49727d){_0x16cc17=_0x16cc17-0x0;var _0x434278=_0x2568[_0x16cc17];return _0x434278;};'use strict';var Sequelize=require(_0x8256('0x0'));module['exports']={'name':{'type':Sequelize[_0x8256('0x1')]},'moduleCreate':{'type':Sequelize[_0x8256('0x2')](_0x8256('0x3'),_0x8256('0x4'),_0x8256('0x5')),'defaultValue':'lead'},'moduleSearch':{'type':Sequelize['ENUM'](_0x8256('0x6'),_0x8256('0x4'),_0x8256('0x3')),'defaultValue':_0x8256('0x6')},'description':{'type':Sequelize[_0x8256('0x1')]}};
\ No newline at end of file
index a1373da..cff92e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf988=['options','includeAll','rows','show','params','include','find','create','body','catch','getFields','findOne','ZohoField','getSubjects','getDescriptions','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','then','destroy','end','sendStatus','error','stack','name','index','map','ZohoConfiguration','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge'];(function(_0x552192,_0x4d9370){var _0x6b7953=function(_0x4bccbf){while(--_0x4bccbf){_0x552192['push'](_0x552192['shift']());}};_0x6b7953(++_0x4d9370);}(_0xf988,0x1ae));var _0x8f98=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xf988[_0x122ef9];return _0x42fba0;};'use strict';var emlformat=require(_0x8f98('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8f98('0x1'));var jsonpatch=require(_0x8f98('0x2'));var rp=require(_0x8f98('0x3'));var moment=require('moment');var BPromise=require(_0x8f98('0x4'));var Mustache=require(_0x8f98('0x5'));var util=require(_0x8f98('0x6'));var path=require(_0x8f98('0x7'));var sox=require(_0x8f98('0x8'));var csv=require(_0x8f98('0x9'));var ejs=require(_0x8f98('0xa'));var fs=require('fs');var fs_extra=require(_0x8f98('0xb'));var _=require(_0x8f98('0xc'));var squel=require(_0x8f98('0xd'));var crypto=require('crypto');var jsforce=require(_0x8f98('0xe'));var deskjs=require(_0x8f98('0xf'));var toCsv=require(_0x8f98('0x9'));var querystring=require(_0x8f98('0x10'));var Papa=require(_0x8f98('0x11'));var Redis=require(_0x8f98('0x12'));var authService=require(_0x8f98('0x13'));var qs=require(_0x8f98('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8f98('0x15'));var logger=require(_0x8f98('0x16'))('api');var utils=require(_0x8f98('0x17'));var config=require(_0x8f98('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x8f98('0x19'))['db'];function respondWithStatusCode(_0x340f6f,_0x20d33a){_0x20d33a=_0x20d33a||0xcc;return function(_0x6436e5){if(_0x6436e5){return _0x340f6f['sendStatus'](_0x20d33a);}return _0x340f6f[_0x8f98('0x1a')](_0x20d33a)['end']();};}function respondWithResult(_0x49e2c8,_0x46e3e6){_0x46e3e6=_0x46e3e6||0xc8;return function(_0x470b99){if(_0x470b99){return _0x49e2c8['status'](_0x46e3e6)['json'](_0x470b99);}};}function respondWithFilteredResult(_0x365b4e,_0x16928a){return function(_0x140dbc){if(_0x140dbc){var _0x282c95=typeof _0x16928a[_0x8f98('0x1b')]===_0x8f98('0x1c')&&typeof _0x16928a[_0x8f98('0x1d')]===_0x8f98('0x1c');var _0x391e26=_0x140dbc[_0x8f98('0x1e')];var _0x3f3497=_0x282c95?0x0:_0x16928a[_0x8f98('0x1b')];var _0x2730ed=_0x282c95?_0x140dbc[_0x8f98('0x1e')]:_0x16928a[_0x8f98('0x1b')]+_0x16928a['limit'];var _0x4f7d85;if(_0x2730ed>=_0x391e26){_0x2730ed=_0x391e26;_0x4f7d85=0xc8;}else{_0x4f7d85=0xce;}_0x365b4e[_0x8f98('0x1a')](_0x4f7d85);return _0x365b4e['set'](_0x8f98('0x1f'),_0x3f3497+'-'+_0x2730ed+'/'+_0x391e26)[_0x8f98('0x20')](_0x140dbc);}return null;};}function patchUpdates(_0x4be875){return function(_0x4e8900){try{jsonpatch[_0x8f98('0x21')](_0x4e8900,_0x4be875,!![]);}catch(_0x265267){return BPromise[_0x8f98('0x22')](_0x265267);}return _0x4e8900[_0x8f98('0x23')]();};}function saveUpdates(_0x107a55,_0x24c748){return function(_0x5b79eb){if(_0x5b79eb){return _0x5b79eb[_0x8f98('0x24')](_0x107a55)[_0x8f98('0x25')](function(_0x448b90){return _0x448b90;});}return null;};}function removeEntity(_0x456657,_0x23c533){return function(_0x33ed8d){if(_0x33ed8d){return _0x33ed8d[_0x8f98('0x26')]()[_0x8f98('0x25')](function(){_0x456657[_0x8f98('0x1a')](0xcc)[_0x8f98('0x27')]();});}};}function handleEntityNotFound(_0x4cad6e,_0x2ee5bb){return function(_0x468034){if(!_0x468034){_0x4cad6e[_0x8f98('0x28')](0x194);}return _0x468034;};}function handleError(_0x4c82ef,_0x2cf0cc){_0x2cf0cc=_0x2cf0cc||0x1f4;return function(_0x5f00e7){logger[_0x8f98('0x29')](_0x5f00e7[_0x8f98('0x2a')]);if(_0x5f00e7[_0x8f98('0x2b')]){delete _0x5f00e7[_0x8f98('0x2b')];}_0x4c82ef[_0x8f98('0x1a')](_0x2cf0cc)['send'](_0x5f00e7);};}exports[_0x8f98('0x2c')]=function(_0x47489f,_0x4cffe4){var _0x10dae3={},_0x4b27f9={},_0x256153={'count':0x0,'rows':[]};var _0x11d6e7=_[_0x8f98('0x2d')](db[_0x8f98('0x2e')][_0x8f98('0x2f')],function(_0x8be1be){return{'name':_0x8be1be[_0x8f98('0x30')],'type':_0x8be1be['type'][_0x8f98('0x31')]};});_0x4b27f9[_0x8f98('0x32')]=_[_0x8f98('0x2d')](_0x11d6e7,_0x8f98('0x2b'));_0x4b27f9[_0x8f98('0x33')]=_[_0x8f98('0x34')](_0x47489f['query']);_0x4b27f9[_0x8f98('0x35')]=_[_0x8f98('0x36')](_0x4b27f9[_0x8f98('0x32')],_0x4b27f9[_0x8f98('0x33')]);_0x10dae3['attributes']=_[_0x8f98('0x36')](_0x4b27f9[_0x8f98('0x32')],qs[_0x8f98('0x37')](_0x47489f[_0x8f98('0x33')][_0x8f98('0x37')]));_0x10dae3[_0x8f98('0x38')]=_0x10dae3[_0x8f98('0x38')][_0x8f98('0x39')]?_0x10dae3[_0x8f98('0x38')]:_0x4b27f9['model'];if(!_0x47489f[_0x8f98('0x33')][_0x8f98('0x3a')](_0x8f98('0x3b'))){_0x10dae3['limit']=qs[_0x8f98('0x1d')](_0x47489f[_0x8f98('0x33')]['limit']);_0x10dae3[_0x8f98('0x1b')]=qs[_0x8f98('0x1b')](_0x47489f['query']['offset']);}_0x10dae3[_0x8f98('0x3c')]=qs[_0x8f98('0x3d')](_0x47489f[_0x8f98('0x33')][_0x8f98('0x3d')]);_0x10dae3[_0x8f98('0x3e')]=qs[_0x8f98('0x35')](_[_0x8f98('0x3f')](_0x47489f['query'],_0x4b27f9[_0x8f98('0x35')]),_0x11d6e7);if(_0x47489f[_0x8f98('0x33')][_0x8f98('0x40')]){_0x10dae3[_0x8f98('0x3e')]=_['merge'](_0x10dae3[_0x8f98('0x3e')],{'$or':_[_0x8f98('0x2d')](_0x11d6e7,function(_0x21dc72){if(_0x21dc72[_0x8f98('0x41')]!==_0x8f98('0x42')){var _0x1db1a7={};_0x1db1a7[_0x21dc72[_0x8f98('0x2b')]]={'$like':'%'+_0x47489f[_0x8f98('0x33')]['filter']+'%'};return _0x1db1a7;}})});}_0x10dae3=_[_0x8f98('0x43')]({},_0x10dae3,_0x47489f[_0x8f98('0x44')]);var _0x5288e1={'where':_0x10dae3[_0x8f98('0x3e')]};return db[_0x8f98('0x2e')]['count'](_0x5288e1)[_0x8f98('0x25')](function(_0x4b00f2){_0x256153[_0x8f98('0x1e')]=_0x4b00f2;if(_0x47489f[_0x8f98('0x33')][_0x8f98('0x45')]){_0x10dae3['include']=[{'all':!![]}];}return db[_0x8f98('0x2e')]['findAll'](_0x10dae3);})[_0x8f98('0x25')](function(_0x18fad0){_0x256153[_0x8f98('0x46')]=_0x18fad0;return _0x256153;})[_0x8f98('0x25')](respondWithFilteredResult(_0x4cffe4,_0x10dae3))['catch'](handleError(_0x4cffe4,null));};exports[_0x8f98('0x47')]=function(_0xeb4b56,_0x5befc2){var _0x5e3218={'raw':![],'where':{'id':_0xeb4b56[_0x8f98('0x48')]['id']}},_0x5a896b={};_0x5a896b['model']=_[_0x8f98('0x34')](db[_0x8f98('0x2e')][_0x8f98('0x2f')]);_0x5a896b[_0x8f98('0x33')]=_[_0x8f98('0x34')](_0xeb4b56[_0x8f98('0x33')]);_0x5a896b['filters']=_['intersection'](_0x5a896b[_0x8f98('0x32')],_0x5a896b['query']);_0x5e3218[_0x8f98('0x38')]=_[_0x8f98('0x36')](_0x5a896b[_0x8f98('0x32')],qs[_0x8f98('0x37')](_0xeb4b56[_0x8f98('0x33')]['fields']));_0x5e3218[_0x8f98('0x38')]=_0x5e3218['attributes'][_0x8f98('0x39')]?_0x5e3218[_0x8f98('0x38')]:_0x5a896b['model'];if(_0xeb4b56[_0x8f98('0x33')]['includeAll']){_0x5e3218[_0x8f98('0x49')]=[{'all':!![]}];}_0x5e3218=_['merge']({},_0x5e3218,_0xeb4b56[_0x8f98('0x44')]);return db[_0x8f98('0x2e')][_0x8f98('0x4a')](_0x5e3218)[_0x8f98('0x25')](handleEntityNotFound(_0x5befc2,null))[_0x8f98('0x25')](respondWithResult(_0x5befc2,null))['catch'](handleError(_0x5befc2,null));};exports[_0x8f98('0x4b')]=function(_0x2e726e,_0x3cf00c){return db['ZohoConfiguration'][_0x8f98('0x4b')](_0x2e726e[_0x8f98('0x4c')],{})[_0x8f98('0x25')](respondWithResult(_0x3cf00c,0xc9))[_0x8f98('0x4d')](handleError(_0x3cf00c,null));};exports[_0x8f98('0x24')]=function(_0x373ca1,_0x57e3f6){if(_0x373ca1[_0x8f98('0x4c')]['id']){delete _0x373ca1[_0x8f98('0x4c')]['id'];}return db['ZohoConfiguration'][_0x8f98('0x4a')]({'where':{'id':_0x373ca1[_0x8f98('0x48')]['id']}})['then'](handleEntityNotFound(_0x57e3f6,null))[_0x8f98('0x25')](saveUpdates(_0x373ca1['body'],null))[_0x8f98('0x25')](respondWithResult(_0x57e3f6,null))[_0x8f98('0x4d')](handleError(_0x57e3f6,null));};exports[_0x8f98('0x26')]=function(_0x507ad2,_0x558677){return db[_0x8f98('0x2e')][_0x8f98('0x4a')]({'where':{'id':_0x507ad2['params']['id']}})[_0x8f98('0x25')](handleEntityNotFound(_0x558677,null))[_0x8f98('0x25')](removeEntity(_0x558677,null))[_0x8f98('0x4d')](handleError(_0x558677,null));};exports[_0x8f98('0x4e')]=function(_0x43bc89,_0x47251f,_0xbeda7d){var _0x15cb0d={};var _0x29d9f6={};var _0x292e77;var _0x309f35;return db[_0x8f98('0x2e')][_0x8f98('0x4f')]({'where':{'id':_0x43bc89[_0x8f98('0x48')]['id']}})[_0x8f98('0x25')](handleEntityNotFound(_0x47251f,null))[_0x8f98('0x25')](function(_0x57df94){if(_0x57df94){_0x292e77=_0x57df94;_0x29d9f6[_0x8f98('0x32')]=_['keys'](db[_0x8f98('0x50')]['rawAttributes']);_0x29d9f6[_0x8f98('0x33')]=_['keys'](_0x43bc89[_0x8f98('0x33')]);_0x29d9f6[_0x8f98('0x35')]=_[_0x8f98('0x36')](_0x29d9f6[_0x8f98('0x32')],_0x29d9f6[_0x8f98('0x33')]);_0x15cb0d['attributes']=_['intersection'](_0x29d9f6[_0x8f98('0x32')],qs[_0x8f98('0x37')](_0x43bc89[_0x8f98('0x33')][_0x8f98('0x37')]));_0x15cb0d[_0x8f98('0x38')]=_0x15cb0d['attributes'][_0x8f98('0x39')]?_0x15cb0d[_0x8f98('0x38')]:_0x29d9f6['model'];_0x15cb0d[_0x8f98('0x3c')]=qs[_0x8f98('0x3d')](_0x43bc89['query']['sort']);_0x15cb0d[_0x8f98('0x3e')]=qs[_0x8f98('0x35')](_[_0x8f98('0x3f')](_0x43bc89[_0x8f98('0x33')],_0x29d9f6[_0x8f98('0x35')]));if(_0x43bc89[_0x8f98('0x33')]['filter']){_0x15cb0d[_0x8f98('0x3e')]=_['merge'](_0x15cb0d[_0x8f98('0x3e')],{'$or':_['map'](_0x15cb0d[_0x8f98('0x38')],function(_0x2b8d62){var _0x5e1ae1={};_0x5e1ae1[_0x2b8d62]={'$like':'%'+_0x43bc89['query']['filter']+'%'};return _0x5e1ae1;})});}_0x15cb0d=_[_0x8f98('0x43')]({},_0x15cb0d,_0x43bc89[_0x8f98('0x44')]);return _0x292e77[_0x8f98('0x4e')](_0x15cb0d);}})[_0x8f98('0x25')](function(_0x5dd104){if(_0x5dd104){_0x309f35=_0x5dd104[_0x8f98('0x39')];if(!_0x43bc89[_0x8f98('0x33')]['hasOwnProperty'](_0x8f98('0x3b'))){_0x15cb0d[_0x8f98('0x1d')]=qs[_0x8f98('0x1d')](_0x43bc89[_0x8f98('0x33')][_0x8f98('0x1d')]);_0x15cb0d[_0x8f98('0x1b')]=qs[_0x8f98('0x1b')](_0x43bc89['query'][_0x8f98('0x1b')]);}return _0x292e77[_0x8f98('0x4e')](_0x15cb0d);}})[_0x8f98('0x25')](function(_0x4516fe){if(_0x4516fe){return _0x4516fe?{'count':_0x309f35,'rows':_0x4516fe}:null;}})[_0x8f98('0x25')](respondWithResult(_0x47251f,null))[_0x8f98('0x4d')](handleError(_0x47251f,null));};exports[_0x8f98('0x51')]=function(_0x172307,_0x4b57bb,_0x37c126){var _0x5db460={};var _0x3c8546={};var _0x508121;var _0x2ddf97;return db[_0x8f98('0x2e')][_0x8f98('0x4f')]({'where':{'id':_0x172307[_0x8f98('0x48')]['id']}})[_0x8f98('0x25')](handleEntityNotFound(_0x4b57bb,null))[_0x8f98('0x25')](function(_0x5f447b){if(_0x5f447b){_0x508121=_0x5f447b;_0x3c8546[_0x8f98('0x32')]=_[_0x8f98('0x34')](db[_0x8f98('0x50')][_0x8f98('0x2f')]);_0x3c8546[_0x8f98('0x33')]=_['keys'](_0x172307[_0x8f98('0x33')]);_0x3c8546[_0x8f98('0x35')]=_[_0x8f98('0x36')](_0x3c8546[_0x8f98('0x32')],_0x3c8546[_0x8f98('0x33')]);_0x5db460[_0x8f98('0x38')]=_[_0x8f98('0x36')](_0x3c8546[_0x8f98('0x32')],qs[_0x8f98('0x37')](_0x172307[_0x8f98('0x33')][_0x8f98('0x37')]));_0x5db460[_0x8f98('0x38')]=_0x5db460['attributes'][_0x8f98('0x39')]?_0x5db460[_0x8f98('0x38')]:_0x3c8546['model'];_0x5db460['order']=qs[_0x8f98('0x3d')](_0x172307['query'][_0x8f98('0x3d')]);_0x5db460[_0x8f98('0x3e')]=qs[_0x8f98('0x35')](_[_0x8f98('0x3f')](_0x172307['query'],_0x3c8546[_0x8f98('0x35')]));if(_0x172307[_0x8f98('0x33')]['filter']){_0x5db460[_0x8f98('0x3e')]=_[_0x8f98('0x43')](_0x5db460[_0x8f98('0x3e')],{'$or':_['map'](_0x5db460['attributes'],function(_0x7c8069){var _0x2ed5c9={};_0x2ed5c9[_0x7c8069]={'$like':'%'+_0x172307[_0x8f98('0x33')]['filter']+'%'};return _0x2ed5c9;})});}_0x5db460=_[_0x8f98('0x43')]({},_0x5db460,_0x172307['options']);return _0x508121[_0x8f98('0x51')](_0x5db460);}})['then'](function(_0x56b5ca){if(_0x56b5ca){_0x2ddf97=_0x56b5ca[_0x8f98('0x39')];if(!_0x172307[_0x8f98('0x33')][_0x8f98('0x3a')](_0x8f98('0x3b'))){_0x5db460[_0x8f98('0x1d')]=qs[_0x8f98('0x1d')](_0x172307['query'][_0x8f98('0x1d')]);_0x5db460[_0x8f98('0x1b')]=qs['offset'](_0x172307['query'][_0x8f98('0x1b')]);}return _0x508121['getSubjects'](_0x5db460);}})[_0x8f98('0x25')](function(_0x3435af){if(_0x3435af){return _0x3435af?{'count':_0x2ddf97,'rows':_0x3435af}:null;}})['then'](respondWithResult(_0x4b57bb,null))['catch'](handleError(_0x4b57bb,null));};exports[_0x8f98('0x52')]=function(_0x2a1650,_0x1a2881,_0x238a00){var _0x3911f8={};var _0xe9eea1={};var _0x35cc8e;var _0x55abe9;return db['ZohoConfiguration']['findOne']({'where':{'id':_0x2a1650[_0x8f98('0x48')]['id']}})[_0x8f98('0x25')](handleEntityNotFound(_0x1a2881,null))[_0x8f98('0x25')](function(_0x10a498){if(_0x10a498){_0x35cc8e=_0x10a498;_0xe9eea1['model']=_[_0x8f98('0x34')](db[_0x8f98('0x50')]['rawAttributes']);_0xe9eea1[_0x8f98('0x33')]=_[_0x8f98('0x34')](_0x2a1650[_0x8f98('0x33')]);_0xe9eea1[_0x8f98('0x35')]=_['intersection'](_0xe9eea1[_0x8f98('0x32')],_0xe9eea1['query']);_0x3911f8[_0x8f98('0x38')]=_[_0x8f98('0x36')](_0xe9eea1[_0x8f98('0x32')],qs[_0x8f98('0x37')](_0x2a1650[_0x8f98('0x33')]['fields']));_0x3911f8[_0x8f98('0x38')]=_0x3911f8[_0x8f98('0x38')][_0x8f98('0x39')]?_0x3911f8['attributes']:_0xe9eea1[_0x8f98('0x32')];_0x3911f8[_0x8f98('0x3c')]=qs[_0x8f98('0x3d')](_0x2a1650['query'][_0x8f98('0x3d')]);_0x3911f8[_0x8f98('0x3e')]=qs[_0x8f98('0x35')](_['pick'](_0x2a1650[_0x8f98('0x33')],_0xe9eea1[_0x8f98('0x35')]));if(_0x2a1650['query'][_0x8f98('0x40')]){_0x3911f8['where']=_['merge'](_0x3911f8[_0x8f98('0x3e')],{'$or':_['map'](_0x3911f8[_0x8f98('0x38')],function(_0x1c2770){var _0x14b68b={};_0x14b68b[_0x1c2770]={'$like':'%'+_0x2a1650[_0x8f98('0x33')][_0x8f98('0x40')]+'%'};return _0x14b68b;})});}_0x3911f8=_[_0x8f98('0x43')]({},_0x3911f8,_0x2a1650[_0x8f98('0x44')]);return _0x35cc8e['getDescriptions'](_0x3911f8);}})[_0x8f98('0x25')](function(_0xb56ceb){if(_0xb56ceb){_0x55abe9=_0xb56ceb[_0x8f98('0x39')];if(!_0x2a1650['query'][_0x8f98('0x3a')](_0x8f98('0x3b'))){_0x3911f8['limit']=qs['limit'](_0x2a1650[_0x8f98('0x33')]['limit']);_0x3911f8['offset']=qs[_0x8f98('0x1b')](_0x2a1650['query'][_0x8f98('0x1b')]);}return _0x35cc8e[_0x8f98('0x52')](_0x3911f8);}})[_0x8f98('0x25')](function(_0x2b6faa){if(_0x2b6faa){return _0x2b6faa?{'count':_0x55abe9,'rows':_0x2b6faa}:null;}})[_0x8f98('0x25')](respondWithResult(_0x1a2881,null))[_0x8f98('0x4d')](handleError(_0x1a2881,null));};
\ No newline at end of file
+var _0x8a93=['ZohoField','eml-format','rimraf','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','reject','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','rows','catch','params','ZohoConfiguration','create','body','find','getFields','findOne','getSubjects','getDescriptions'];(function(_0x1b4b64,_0x57de56){var _0x52a18b=function(_0x2b0b8f){while(--_0x2b0b8f){_0x1b4b64['push'](_0x1b4b64['shift']());}};_0x52a18b(++_0x57de56);}(_0x8a93,0xee));var _0x38a9=function(_0x1f5ab3,_0x2d2473){_0x1f5ab3=_0x1f5ab3-0x0;var _0x2bd0d7=_0x8a93[_0x1f5ab3];return _0x2bd0d7;};'use strict';var emlformat=require(_0x38a9('0x0'));var rimraf=require(_0x38a9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x38a9('0x2'));var rp=require('request-promise');var moment=require(_0x38a9('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x38a9('0x4'));var util=require(_0x38a9('0x5'));var path=require(_0x38a9('0x6'));var sox=require(_0x38a9('0x7'));var csv=require(_0x38a9('0x8'));var ejs=require(_0x38a9('0x9'));var fs=require('fs');var fs_extra=require(_0x38a9('0xa'));var _=require(_0x38a9('0xb'));var squel=require(_0x38a9('0xc'));var crypto=require(_0x38a9('0xd'));var jsforce=require(_0x38a9('0xe'));var deskjs=require(_0x38a9('0xf'));var toCsv=require('to-csv');var querystring=require(_0x38a9('0x10'));var Papa=require(_0x38a9('0x11'));var Redis=require(_0x38a9('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x38a9('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x38a9('0x14'));var logger=require('../../config/logger')(_0x38a9('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x38a9('0x16'))['db'];function respondWithStatusCode(_0x37e877,_0xb139cd){_0xb139cd=_0xb139cd||0xcc;return function(_0x525890){if(_0x525890){return _0x37e877[_0x38a9('0x17')](_0xb139cd);}return _0x37e877['status'](_0xb139cd)[_0x38a9('0x18')]();};}function respondWithResult(_0x3f9f73,_0x3cfb40){_0x3cfb40=_0x3cfb40||0xc8;return function(_0x1cff17){if(_0x1cff17){return _0x3f9f73[_0x38a9('0x19')](_0x3cfb40)[_0x38a9('0x1a')](_0x1cff17);}};}function respondWithFilteredResult(_0x3284b3,_0x2ff521){return function(_0x35d31e){if(_0x35d31e){var _0x4511b2=typeof _0x2ff521[_0x38a9('0x1b')]==='undefined'&&typeof _0x2ff521[_0x38a9('0x1c')]===_0x38a9('0x1d');var _0x2e5e4b=_0x35d31e['count'];var _0x3fcc76=_0x4511b2?0x0:_0x2ff521[_0x38a9('0x1b')];var _0x28d717=_0x4511b2?_0x35d31e[_0x38a9('0x1e')]:_0x2ff521[_0x38a9('0x1b')]+_0x2ff521['limit'];var _0x3865c;if(_0x28d717>=_0x2e5e4b){_0x28d717=_0x2e5e4b;_0x3865c=0xc8;}else{_0x3865c=0xce;}_0x3284b3['status'](_0x3865c);return _0x3284b3[_0x38a9('0x1f')](_0x38a9('0x20'),_0x3fcc76+'-'+_0x28d717+'/'+_0x2e5e4b)['json'](_0x35d31e);}return null;};}function patchUpdates(_0x13a04e){return function(_0x390b4b){try{jsonpatch['apply'](_0x390b4b,_0x13a04e,!![]);}catch(_0x450138){return BPromise[_0x38a9('0x21')](_0x450138);}return _0x390b4b['save']();};}function saveUpdates(_0x490ff8,_0x3a07f0){return function(_0x8ef3cd){if(_0x8ef3cd){return _0x8ef3cd[_0x38a9('0x22')](_0x490ff8)[_0x38a9('0x23')](function(_0x5c10b8){return _0x5c10b8;});}return null;};}function removeEntity(_0x227ebc,_0x1f3a5d){return function(_0x103a6c){if(_0x103a6c){return _0x103a6c[_0x38a9('0x24')]()['then'](function(){_0x227ebc['status'](0xcc)[_0x38a9('0x18')]();});}};}function handleEntityNotFound(_0x13a933,_0x3c3bd6){return function(_0x567e4){if(!_0x567e4){_0x13a933['sendStatus'](0x194);}return _0x567e4;};}function handleError(_0x1eaece,_0x349831){_0x349831=_0x349831||0x1f4;return function(_0x1ea9df){logger[_0x38a9('0x25')](_0x1ea9df[_0x38a9('0x26')]);if(_0x1ea9df[_0x38a9('0x27')]){delete _0x1ea9df[_0x38a9('0x27')];}_0x1eaece[_0x38a9('0x19')](_0x349831)[_0x38a9('0x28')](_0x1ea9df);};}exports[_0x38a9('0x29')]=function(_0x1b64a1,_0x21de16){var _0x42bcfc={},_0x2be206={},_0x418496={'count':0x0,'rows':[]};var _0x3db2b1=_[_0x38a9('0x2a')](db['ZohoConfiguration'][_0x38a9('0x2b')],function(_0x595e3e){return{'name':_0x595e3e[_0x38a9('0x2c')],'type':_0x595e3e['type'][_0x38a9('0x2d')]};});_0x2be206['model']=_['map'](_0x3db2b1,'name');_0x2be206[_0x38a9('0x2e')]=_[_0x38a9('0x2f')](_0x1b64a1['query']);_0x2be206[_0x38a9('0x30')]=_[_0x38a9('0x31')](_0x2be206[_0x38a9('0x32')],_0x2be206['query']);_0x42bcfc[_0x38a9('0x33')]=_[_0x38a9('0x31')](_0x2be206[_0x38a9('0x32')],qs[_0x38a9('0x34')](_0x1b64a1[_0x38a9('0x2e')][_0x38a9('0x34')]));_0x42bcfc[_0x38a9('0x33')]=_0x42bcfc['attributes'][_0x38a9('0x35')]?_0x42bcfc[_0x38a9('0x33')]:_0x2be206['model'];if(!_0x1b64a1[_0x38a9('0x2e')][_0x38a9('0x36')](_0x38a9('0x37'))){_0x42bcfc[_0x38a9('0x1c')]=qs['limit'](_0x1b64a1[_0x38a9('0x2e')][_0x38a9('0x1c')]);_0x42bcfc[_0x38a9('0x1b')]=qs[_0x38a9('0x1b')](_0x1b64a1[_0x38a9('0x2e')]['offset']);}_0x42bcfc[_0x38a9('0x38')]=qs[_0x38a9('0x39')](_0x1b64a1[_0x38a9('0x2e')][_0x38a9('0x39')]);_0x42bcfc[_0x38a9('0x3a')]=qs[_0x38a9('0x30')](_[_0x38a9('0x3b')](_0x1b64a1[_0x38a9('0x2e')],_0x2be206['filters']),_0x3db2b1);if(_0x1b64a1[_0x38a9('0x2e')][_0x38a9('0x3c')]){_0x42bcfc[_0x38a9('0x3a')]=_[_0x38a9('0x3d')](_0x42bcfc[_0x38a9('0x3a')],{'$or':_[_0x38a9('0x2a')](_0x3db2b1,function(_0x33dd43){if(_0x33dd43[_0x38a9('0x3e')]!==_0x38a9('0x3f')){var _0x5d9b35={};_0x5d9b35[_0x33dd43[_0x38a9('0x27')]]={'$like':'%'+_0x1b64a1['query'][_0x38a9('0x3c')]+'%'};return _0x5d9b35;}})});}_0x42bcfc=_[_0x38a9('0x3d')]({},_0x42bcfc,_0x1b64a1[_0x38a9('0x40')]);var _0x329ca2={'where':_0x42bcfc['where']};return db['ZohoConfiguration'][_0x38a9('0x1e')](_0x329ca2)[_0x38a9('0x23')](function(_0x37cd9c){_0x418496[_0x38a9('0x1e')]=_0x37cd9c;if(_0x1b64a1[_0x38a9('0x2e')][_0x38a9('0x41')]){_0x42bcfc[_0x38a9('0x42')]=[{'all':!![]}];}return db['ZohoConfiguration']['findAll'](_0x42bcfc);})[_0x38a9('0x23')](function(_0x291fe4){_0x418496[_0x38a9('0x43')]=_0x291fe4;return _0x418496;})[_0x38a9('0x23')](respondWithFilteredResult(_0x21de16,_0x42bcfc))[_0x38a9('0x44')](handleError(_0x21de16,null));};exports['show']=function(_0x5b247c,_0x2f0952){var _0x3d18ef={'raw':![],'where':{'id':_0x5b247c[_0x38a9('0x45')]['id']}},_0x4fc3f2={};_0x4fc3f2[_0x38a9('0x32')]=_[_0x38a9('0x2f')](db[_0x38a9('0x46')][_0x38a9('0x2b')]);_0x4fc3f2['query']=_[_0x38a9('0x2f')](_0x5b247c[_0x38a9('0x2e')]);_0x4fc3f2[_0x38a9('0x30')]=_[_0x38a9('0x31')](_0x4fc3f2[_0x38a9('0x32')],_0x4fc3f2[_0x38a9('0x2e')]);_0x3d18ef['attributes']=_[_0x38a9('0x31')](_0x4fc3f2[_0x38a9('0x32')],qs['fields'](_0x5b247c[_0x38a9('0x2e')][_0x38a9('0x34')]));_0x3d18ef['attributes']=_0x3d18ef[_0x38a9('0x33')][_0x38a9('0x35')]?_0x3d18ef[_0x38a9('0x33')]:_0x4fc3f2[_0x38a9('0x32')];if(_0x5b247c[_0x38a9('0x2e')][_0x38a9('0x41')]){_0x3d18ef[_0x38a9('0x42')]=[{'all':!![]}];}_0x3d18ef=_[_0x38a9('0x3d')]({},_0x3d18ef,_0x5b247c[_0x38a9('0x40')]);return db[_0x38a9('0x46')]['find'](_0x3d18ef)[_0x38a9('0x23')](handleEntityNotFound(_0x2f0952,null))[_0x38a9('0x23')](respondWithResult(_0x2f0952,null))['catch'](handleError(_0x2f0952,null));};exports['create']=function(_0x33d2c5,_0x3fb917){return db['ZohoConfiguration'][_0x38a9('0x47')](_0x33d2c5[_0x38a9('0x48')],{})[_0x38a9('0x23')](respondWithResult(_0x3fb917,0xc9))['catch'](handleError(_0x3fb917,null));};exports['update']=function(_0x39c749,_0xba7096){if(_0x39c749[_0x38a9('0x48')]['id']){delete _0x39c749[_0x38a9('0x48')]['id'];}return db[_0x38a9('0x46')][_0x38a9('0x49')]({'where':{'id':_0x39c749[_0x38a9('0x45')]['id']}})['then'](handleEntityNotFound(_0xba7096,null))[_0x38a9('0x23')](saveUpdates(_0x39c749['body'],null))[_0x38a9('0x23')](respondWithResult(_0xba7096,null))['catch'](handleError(_0xba7096,null));};exports[_0x38a9('0x24')]=function(_0x16c4d8,_0x3be34c){return db['ZohoConfiguration'][_0x38a9('0x49')]({'where':{'id':_0x16c4d8['params']['id']}})['then'](handleEntityNotFound(_0x3be34c,null))[_0x38a9('0x23')](removeEntity(_0x3be34c,null))['catch'](handleError(_0x3be34c,null));};exports[_0x38a9('0x4a')]=function(_0x145d63,_0x339596,_0x565fab){var _0x469ad0={};var _0x92a55e={};var _0xbaaec1;var _0x21190a;return db[_0x38a9('0x46')][_0x38a9('0x4b')]({'where':{'id':_0x145d63[_0x38a9('0x45')]['id']}})['then'](handleEntityNotFound(_0x339596,null))['then'](function(_0xdbb3ad){if(_0xdbb3ad){_0xbaaec1=_0xdbb3ad;_0x92a55e[_0x38a9('0x32')]=_[_0x38a9('0x2f')](db['ZohoField']['rawAttributes']);_0x92a55e['query']=_[_0x38a9('0x2f')](_0x145d63['query']);_0x92a55e[_0x38a9('0x30')]=_[_0x38a9('0x31')](_0x92a55e[_0x38a9('0x32')],_0x92a55e[_0x38a9('0x2e')]);_0x469ad0['attributes']=_[_0x38a9('0x31')](_0x92a55e[_0x38a9('0x32')],qs[_0x38a9('0x34')](_0x145d63['query'][_0x38a9('0x34')]));_0x469ad0[_0x38a9('0x33')]=_0x469ad0['attributes'][_0x38a9('0x35')]?_0x469ad0[_0x38a9('0x33')]:_0x92a55e[_0x38a9('0x32')];_0x469ad0[_0x38a9('0x38')]=qs[_0x38a9('0x39')](_0x145d63[_0x38a9('0x2e')][_0x38a9('0x39')]);_0x469ad0['where']=qs['filters'](_['pick'](_0x145d63[_0x38a9('0x2e')],_0x92a55e[_0x38a9('0x30')]));if(_0x145d63[_0x38a9('0x2e')]['filter']){_0x469ad0['where']=_[_0x38a9('0x3d')](_0x469ad0[_0x38a9('0x3a')],{'$or':_['map'](_0x469ad0[_0x38a9('0x33')],function(_0x4ea8dc){var _0x786644={};_0x786644[_0x4ea8dc]={'$like':'%'+_0x145d63[_0x38a9('0x2e')][_0x38a9('0x3c')]+'%'};return _0x786644;})});}_0x469ad0=_[_0x38a9('0x3d')]({},_0x469ad0,_0x145d63[_0x38a9('0x40')]);return _0xbaaec1[_0x38a9('0x4a')](_0x469ad0);}})[_0x38a9('0x23')](function(_0xf8707e){if(_0xf8707e){_0x21190a=_0xf8707e[_0x38a9('0x35')];if(!_0x145d63['query'][_0x38a9('0x36')](_0x38a9('0x37'))){_0x469ad0[_0x38a9('0x1c')]=qs['limit'](_0x145d63[_0x38a9('0x2e')][_0x38a9('0x1c')]);_0x469ad0[_0x38a9('0x1b')]=qs[_0x38a9('0x1b')](_0x145d63['query'][_0x38a9('0x1b')]);}return _0xbaaec1[_0x38a9('0x4a')](_0x469ad0);}})['then'](function(_0x4acaa7){if(_0x4acaa7){return _0x4acaa7?{'count':_0x21190a,'rows':_0x4acaa7}:null;}})[_0x38a9('0x23')](respondWithResult(_0x339596,null))['catch'](handleError(_0x339596,null));};exports[_0x38a9('0x4c')]=function(_0x30598d,_0x19907d,_0x19735d){var _0x5a26b7={};var _0x29f4a0={};var _0x40ade8;var _0x135722;return db[_0x38a9('0x46')][_0x38a9('0x4b')]({'where':{'id':_0x30598d[_0x38a9('0x45')]['id']}})['then'](handleEntityNotFound(_0x19907d,null))[_0x38a9('0x23')](function(_0x5e2118){if(_0x5e2118){_0x40ade8=_0x5e2118;_0x29f4a0['model']=_['keys'](db['ZohoField'][_0x38a9('0x2b')]);_0x29f4a0[_0x38a9('0x2e')]=_[_0x38a9('0x2f')](_0x30598d['query']);_0x29f4a0['filters']=_[_0x38a9('0x31')](_0x29f4a0[_0x38a9('0x32')],_0x29f4a0['query']);_0x5a26b7[_0x38a9('0x33')]=_[_0x38a9('0x31')](_0x29f4a0[_0x38a9('0x32')],qs['fields'](_0x30598d['query'][_0x38a9('0x34')]));_0x5a26b7[_0x38a9('0x33')]=_0x5a26b7[_0x38a9('0x33')][_0x38a9('0x35')]?_0x5a26b7[_0x38a9('0x33')]:_0x29f4a0[_0x38a9('0x32')];_0x5a26b7[_0x38a9('0x38')]=qs[_0x38a9('0x39')](_0x30598d['query']['sort']);_0x5a26b7[_0x38a9('0x3a')]=qs['filters'](_[_0x38a9('0x3b')](_0x30598d[_0x38a9('0x2e')],_0x29f4a0['filters']));if(_0x30598d[_0x38a9('0x2e')][_0x38a9('0x3c')]){_0x5a26b7['where']=_['merge'](_0x5a26b7['where'],{'$or':_[_0x38a9('0x2a')](_0x5a26b7[_0x38a9('0x33')],function(_0x4befd9){var _0x2d8008={};_0x2d8008[_0x4befd9]={'$like':'%'+_0x30598d[_0x38a9('0x2e')][_0x38a9('0x3c')]+'%'};return _0x2d8008;})});}_0x5a26b7=_[_0x38a9('0x3d')]({},_0x5a26b7,_0x30598d[_0x38a9('0x40')]);return _0x40ade8['getSubjects'](_0x5a26b7);}})[_0x38a9('0x23')](function(_0x2ce29f){if(_0x2ce29f){_0x135722=_0x2ce29f['length'];if(!_0x30598d[_0x38a9('0x2e')][_0x38a9('0x36')](_0x38a9('0x37'))){_0x5a26b7['limit']=qs['limit'](_0x30598d['query'][_0x38a9('0x1c')]);_0x5a26b7[_0x38a9('0x1b')]=qs['offset'](_0x30598d[_0x38a9('0x2e')]['offset']);}return _0x40ade8[_0x38a9('0x4c')](_0x5a26b7);}})[_0x38a9('0x23')](function(_0x1f01f7){if(_0x1f01f7){return _0x1f01f7?{'count':_0x135722,'rows':_0x1f01f7}:null;}})['then'](respondWithResult(_0x19907d,null))[_0x38a9('0x44')](handleError(_0x19907d,null));};exports[_0x38a9('0x4d')]=function(_0x528248,_0x3bd691,_0x509187){var _0x55e197={};var _0x37f36c={};var _0x322366;var _0x5c65ed;return db[_0x38a9('0x46')][_0x38a9('0x4b')]({'where':{'id':_0x528248[_0x38a9('0x45')]['id']}})['then'](handleEntityNotFound(_0x3bd691,null))[_0x38a9('0x23')](function(_0x34bf8c){if(_0x34bf8c){_0x322366=_0x34bf8c;_0x37f36c[_0x38a9('0x32')]=_['keys'](db[_0x38a9('0x4e')][_0x38a9('0x2b')]);_0x37f36c['query']=_[_0x38a9('0x2f')](_0x528248[_0x38a9('0x2e')]);_0x37f36c[_0x38a9('0x30')]=_['intersection'](_0x37f36c[_0x38a9('0x32')],_0x37f36c['query']);_0x55e197['attributes']=_[_0x38a9('0x31')](_0x37f36c['model'],qs[_0x38a9('0x34')](_0x528248[_0x38a9('0x2e')][_0x38a9('0x34')]));_0x55e197[_0x38a9('0x33')]=_0x55e197[_0x38a9('0x33')][_0x38a9('0x35')]?_0x55e197[_0x38a9('0x33')]:_0x37f36c[_0x38a9('0x32')];_0x55e197[_0x38a9('0x38')]=qs[_0x38a9('0x39')](_0x528248[_0x38a9('0x2e')][_0x38a9('0x39')]);_0x55e197[_0x38a9('0x3a')]=qs['filters'](_[_0x38a9('0x3b')](_0x528248[_0x38a9('0x2e')],_0x37f36c[_0x38a9('0x30')]));if(_0x528248[_0x38a9('0x2e')][_0x38a9('0x3c')]){_0x55e197[_0x38a9('0x3a')]=_[_0x38a9('0x3d')](_0x55e197[_0x38a9('0x3a')],{'$or':_[_0x38a9('0x2a')](_0x55e197[_0x38a9('0x33')],function(_0x17e4e8){var _0x2323e8={};_0x2323e8[_0x17e4e8]={'$like':'%'+_0x528248[_0x38a9('0x2e')][_0x38a9('0x3c')]+'%'};return _0x2323e8;})});}_0x55e197=_['merge']({},_0x55e197,_0x528248['options']);return _0x322366[_0x38a9('0x4d')](_0x55e197);}})[_0x38a9('0x23')](function(_0x5529aa){if(_0x5529aa){_0x5c65ed=_0x5529aa[_0x38a9('0x35')];if(!_0x528248['query'][_0x38a9('0x36')](_0x38a9('0x37'))){_0x55e197[_0x38a9('0x1c')]=qs[_0x38a9('0x1c')](_0x528248['query'][_0x38a9('0x1c')]);_0x55e197[_0x38a9('0x1b')]=qs[_0x38a9('0x1b')](_0x528248[_0x38a9('0x2e')][_0x38a9('0x1b')]);}return _0x322366[_0x38a9('0x4d')](_0x55e197);}})[_0x38a9('0x23')](function(_0x2b84eb){if(_0x2b84eb){return _0x2b84eb?{'count':_0x5c65ed,'rows':_0x2b84eb}:null;}})[_0x38a9('0x23')](respondWithResult(_0x3bd691,null))[_0x38a9('0x44')](handleError(_0x3bd691,null));};
\ No newline at end of file
index db90e51..02330ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e07=['path','rimraf','../../config/environment','exports','ZohoConfiguration','int_zoho_configurations','lodash','util','api','moment','request-promise'];(function(_0x383dc2,_0x57b489){var _0x10934f=function(_0x51e2ff){while(--_0x51e2ff){_0x383dc2['push'](_0x383dc2['shift']());}};_0x10934f(++_0x57b489);}(_0x0e07,0x7f));var _0x70e0=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x0e07[_0x1035c1];return _0x308d67;};'use strict';var _=require(_0x70e0('0x0'));var util=require(_0x70e0('0x1'));var logger=require('../../config/logger')(_0x70e0('0x2'));var moment=require(_0x70e0('0x3'));var BPromise=require('bluebird');var rp=require(_0x70e0('0x4'));var fs=require('fs');var path=require(_0x70e0('0x5'));var rimraf=require(_0x70e0('0x6'));var config=require(_0x70e0('0x7'));var attributes=require('./intZohoConfiguration.attributes');module[_0x70e0('0x8')]=function(_0x492fd1,_0x7bedcf){return _0x492fd1['define'](_0x70e0('0x9'),attributes,{'tableName':_0x70e0('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x595c=['./intZohoConfiguration.attributes','exports','define','ZohoConfiguration','lodash','util','../../config/logger','api','moment','bluebird','path'];(function(_0x641afe,_0x22d726){var _0x2dfe9a=function(_0x33a370){while(--_0x33a370){_0x641afe['push'](_0x641afe['shift']());}};_0x2dfe9a(++_0x22d726);}(_0x595c,0xeb));var _0xc595=function(_0x37dd96,_0x3544fa){_0x37dd96=_0x37dd96-0x0;var _0x524727=_0x595c[_0x37dd96];return _0x524727;};'use strict';var _=require(_0xc595('0x0'));var util=require(_0xc595('0x1'));var logger=require(_0xc595('0x2'))(_0xc595('0x3'));var moment=require(_0xc595('0x4'));var BPromise=require(_0xc595('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc595('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xc595('0x7'));module[_0xc595('0x8')]=function(_0x3a12e3,_0x23fac9){return _0x3a12e3[_0xc595('0x9')](_0xc595('0xa'),attributes,{'tableName':'int_zoho_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0e63782..bfbe1a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc33=['code','message','result','catch','lodash','util','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','info','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','error'];(function(_0x5c351c,_0x2046d8){var _0x26f3b3=function(_0x47ac18){while(--_0x47ac18){_0x5c351c['push'](_0x5c351c['shift']());}};_0x26f3b3(++_0x2046d8);}(_0xdc33,0x148));var _0x3dc3=function(_0x4590cd,_0x52ea0b){_0x4590cd=_0x4590cd-0x0;var _0x2984b6=_0xdc33[_0x4590cd];return _0x2984b6;};'use strict';var _=require(_0x3dc3('0x0'));var util=require(_0x3dc3('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3dc3('0x2'));var db=require(_0x3dc3('0x3'))['db'];var utils=require(_0x3dc3('0x4'));var logger=require(_0x3dc3('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x3dc3('0x6'));var client=jayson[_0x3dc3('0x7')][_0x3dc3('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4dbb41,_0xa1cd1a,_0x2f0e49){return new BPromise(function(_0x26ab37,_0x3ad384){return client[_0x3dc3('0x9')](_0x4dbb41,_0x2f0e49)['then'](function(_0xeb5eff){logger[_0x3dc3('0xa')](_0x3dc3('0xb'),_0xa1cd1a,'request\x20sent');logger['debug']('ZohoConfiguration,\x20%s,\x20%s,\x20%s',_0xa1cd1a,_0x3dc3('0xc'),JSON['stringify'](_0xeb5eff));if(_0xeb5eff[_0x3dc3('0xd')]){if(_0xeb5eff[_0x3dc3('0xd')][_0x3dc3('0xe')]===0x1f4){logger[_0x3dc3('0xd')](_0x3dc3('0xb'),_0xa1cd1a,_0xeb5eff[_0x3dc3('0xd')][_0x3dc3('0xf')]);return _0x3ad384(_0xeb5eff[_0x3dc3('0xd')][_0x3dc3('0xf')]);}logger[_0x3dc3('0xd')](_0x3dc3('0xb'),_0xa1cd1a,_0xeb5eff[_0x3dc3('0xd')][_0x3dc3('0xf')]);return _0x26ab37(_0xeb5eff[_0x3dc3('0xd')][_0x3dc3('0xf')]);}else{logger[_0x3dc3('0xa')](_0x3dc3('0xb'),_0xa1cd1a,_0x3dc3('0xc'));_0x26ab37(_0xeb5eff[_0x3dc3('0x10')][_0x3dc3('0xf')]);}})[_0x3dc3('0x11')](function(_0x18c846){logger['error'](_0x3dc3('0xb'),_0xa1cd1a,_0x18c846);_0x3ad384(_0x18c846);});});}
\ No newline at end of file
+var _0x6d52=['http','request','info','ZohoConfiguration,\x20%s,\x20%s','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','util','moment','randomstring','ioredis','../../config/utils','rpc','jayson/promise','client'];(function(_0x2b910f,_0x24d2d1){var _0x8818e3=function(_0x23126f){while(--_0x23126f){_0x2b910f['push'](_0x2b910f['shift']());}};_0x8818e3(++_0x24d2d1);}(_0x6d52,0x8b));var _0x26d5=function(_0x3344fc,_0x9a268e){_0x3344fc=_0x3344fc-0x0;var _0x4b83cf=_0x6d52[_0x3344fc];return _0x4b83cf;};'use strict';var _=require('lodash');var util=require(_0x26d5('0x0'));var moment=require(_0x26d5('0x1'));var BPromise=require('bluebird');var rs=require(_0x26d5('0x2'));var fs=require('fs');var Redis=require(_0x26d5('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x26d5('0x4'));var logger=require('../../config/logger')(_0x26d5('0x5'));var config=require('../../config/environment');var jayson=require(_0x26d5('0x6'));var client=jayson[_0x26d5('0x7')][_0x26d5('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3336c5,_0x403bcc,_0x33830a){return new BPromise(function(_0x222a56,_0x5de63a){return client[_0x26d5('0x9')](_0x3336c5,_0x33830a)['then'](function(_0x8b11fb){logger[_0x26d5('0xa')](_0x26d5('0xb'),_0x403bcc,'request\x20sent');logger[_0x26d5('0xc')](_0x26d5('0xd'),_0x403bcc,'request\x20sent',JSON[_0x26d5('0xe')](_0x8b11fb));if(_0x8b11fb[_0x26d5('0xf')]){if(_0x8b11fb['error'][_0x26d5('0x10')]===0x1f4){logger['error']('ZohoConfiguration,\x20%s,\x20%s',_0x403bcc,_0x8b11fb[_0x26d5('0xf')][_0x26d5('0x11')]);return _0x5de63a(_0x8b11fb['error'][_0x26d5('0x11')]);}logger['error'](_0x26d5('0xb'),_0x403bcc,_0x8b11fb[_0x26d5('0xf')][_0x26d5('0x11')]);return _0x222a56(_0x8b11fb['error']['message']);}else{logger[_0x26d5('0xa')](_0x26d5('0xb'),_0x403bcc,_0x26d5('0x12'));_0x222a56(_0x8b11fb[_0x26d5('0x13')][_0x26d5('0x11')]);}})[_0x26d5('0x14')](function(_0x4d0626){logger['error'](_0x26d5('0xb'),_0x403bcc,_0x4d0626);_0x5de63a(_0x4d0626);});});}
\ No newline at end of file
index bb34fe2..2bf3825 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa83a=['delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','/:id','show','post','create','update'];(function(_0x4a5f11,_0x49e856){var _0x631a38=function(_0x47ac95){while(--_0x47ac95){_0x4a5f11['push'](_0x4a5f11['shift']());}};_0x631a38(++_0x49e856);}(_0xa83a,0x16a));var _0xaa83=function(_0x1f53ff,_0x451076){_0x1f53ff=_0x1f53ff-0x0;var _0x599de3=_0xa83a[_0x1f53ff];return _0x599de3;};'use strict';var multer=require('multer');var util=require(_0xaa83('0x0'));var path=require(_0xaa83('0x1'));var timeout=require(_0xaa83('0x2'));var express=require(_0xaa83('0x3'));var router=express[_0xaa83('0x4')]();var fs_extra=require(_0xaa83('0x5'));var auth=require(_0xaa83('0x6'));var interaction=require(_0xaa83('0x7'));var config=require(_0xaa83('0x8'));var controller=require('./intZohoField.controller');router['get']('/',auth[_0xaa83('0x9')](),controller['index']);router[_0xaa83('0xa')](_0xaa83('0xb'),auth[_0xaa83('0x9')](),controller[_0xaa83('0xc')]);router[_0xaa83('0xd')]('/',auth[_0xaa83('0x9')](),controller[_0xaa83('0xe')]);router['put'](_0xaa83('0xb'),auth[_0xaa83('0x9')](),controller[_0xaa83('0xf')]);router[_0xaa83('0x10')]('/:id',auth[_0xaa83('0x9')](),controller[_0xaa83('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x6b0d=['Router','fs-extra','../../components/auth/service','../../config/environment','./intZohoField.controller','get','isAuthenticated','index','/:id','post','create','destroy','exports','multer','path','connect-timeout','express'];(function(_0x2fb784,_0x2e4ae0){var _0x266853=function(_0x5e3e51){while(--_0x5e3e51){_0x2fb784['push'](_0x2fb784['shift']());}};_0x266853(++_0x2e4ae0);}(_0x6b0d,0x13f));var _0xd6b0=function(_0x1f8ab4,_0x25cfd0){_0x1f8ab4=_0x1f8ab4-0x0;var _0x41e921=_0x6b0d[_0x1f8ab4];return _0x41e921;};'use strict';var multer=require(_0xd6b0('0x0'));var util=require('util');var path=require(_0xd6b0('0x1'));var timeout=require(_0xd6b0('0x2'));var express=require(_0xd6b0('0x3'));var router=express[_0xd6b0('0x4')]();var fs_extra=require(_0xd6b0('0x5'));var auth=require(_0xd6b0('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xd6b0('0x7'));var controller=require(_0xd6b0('0x8'));router[_0xd6b0('0x9')]('/',auth[_0xd6b0('0xa')](),controller[_0xd6b0('0xb')]);router['get'](_0xd6b0('0xc'),auth[_0xd6b0('0xa')](),controller['show']);router[_0xd6b0('0xd')]('/',auth[_0xd6b0('0xa')](),controller[_0xd6b0('0xe')]);router['put'](_0xd6b0('0xc'),auth[_0xd6b0('0xa')](),controller['update']);router['delete'](_0xd6b0('0xc'),auth[_0xd6b0('0xa')](),controller[_0xd6b0('0xf')]);module[_0xd6b0('0x10')]=router;
\ No newline at end of file
index 783ecb2..2302094 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62c4=['BOOLEAN','ENUM','keyValue','STRING','string','variable','customVariable'];(function(_0x1c99ce,_0x651181){var _0x49bf4f=function(_0x3862dd){while(--_0x3862dd){_0x1c99ce['push'](_0x1c99ce['shift']());}};_0x49bf4f(++_0x651181);}(_0x62c4,0x10b));var _0x462c=function(_0x5b7ad0,_0x2ef5ed){_0x5b7ad0=_0x5b7ad0-0x0;var _0x21ba44=_0x62c4[_0x5b7ad0];return _0x21ba44;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x462c('0x0')]('string','variable','customVariable',_0x462c('0x1'),'picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0x462c('0x2')]},'key':{'type':Sequelize[_0x462c('0x2')]},'keyType':{'type':Sequelize['ENUM'](_0x462c('0x3'),_0x462c('0x4'),_0x462c('0x5'))},'keyContent':{'type':Sequelize[_0x462c('0x2')]},'idField':{'type':Sequelize[_0x462c('0x2')]},'nameField':{'type':Sequelize[_0x462c('0x2')]},'customField':{'type':Sequelize[_0x462c('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x462c('0x2')]}};
\ No newline at end of file
+var _0x6f7d=['keyValue','picklist','STRING','variable','BOOLEAN','sequelize','exports','ENUM','string','customVariable'];(function(_0x11aee5,_0x27fa94){var _0x2e8c9d=function(_0x33ff83){while(--_0x33ff83){_0x11aee5['push'](_0x11aee5['shift']());}};_0x2e8c9d(++_0x27fa94);}(_0x6f7d,0xeb));var _0xd6f7=function(_0x49891e,_0x3feb8b){_0x49891e=_0x49891e-0x0;var _0x13a067=_0x6f7d[_0x49891e];return _0x13a067;};'use strict';var Sequelize=require(_0xd6f7('0x0'));module[_0xd6f7('0x1')]={'type':{'type':Sequelize[_0xd6f7('0x2')](_0xd6f7('0x3'),'variable',_0xd6f7('0x4'),_0xd6f7('0x5'),_0xd6f7('0x6')),'defaultValue':_0xd6f7('0x3')},'content':{'type':Sequelize[_0xd6f7('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0xd6f7('0x3'),_0xd6f7('0x8'),_0xd6f7('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xd6f7('0x7')]},'customField':{'type':Sequelize[_0xd6f7('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xd6f7('0x7')]}};
\ No newline at end of file
index 04e08bc..a7c95a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05ea=['params','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','error','stack','name','index','map','ZohoField','fieldName','type','key','query','filters','attributes','intersection','model','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','then','includeAll','include','findAll','rows','catch','show','keys','rawAttributes','find','create','update','body'];(function(_0x52b2ba,_0x385f19){var _0x1a879d=function(_0x345ba3){while(--_0x345ba3){_0x52b2ba['push'](_0x52b2ba['shift']());}};_0x1a879d(++_0x385f19);}(_0x05ea,0x187));var _0xa05e=function(_0x2ac4af,_0x288c53){_0x2ac4af=_0x2ac4af-0x0;var _0x3a36df=_0x05ea[_0x2ac4af];return _0x3a36df;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa05e('0x0'));var zipdir=require(_0xa05e('0x1'));var jsonpatch=require(_0xa05e('0x2'));var rp=require('request-promise');var moment=require(_0xa05e('0x3'));var BPromise=require(_0xa05e('0x4'));var Mustache=require('mustache');var util=require(_0xa05e('0x5'));var path=require(_0xa05e('0x6'));var sox=require(_0xa05e('0x7'));var csv=require(_0xa05e('0x8'));var ejs=require(_0xa05e('0x9'));var fs=require('fs');var fs_extra=require(_0xa05e('0xa'));var _=require(_0xa05e('0xb'));var squel=require(_0xa05e('0xc'));var crypto=require(_0xa05e('0xd'));var jsforce=require(_0xa05e('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xa05e('0x8'));var querystring=require(_0xa05e('0xf'));var Papa=require(_0xa05e('0x10'));var Redis=require(_0xa05e('0x11'));var authService=require(_0xa05e('0x12'));var qs=require(_0xa05e('0x13'));var as=require(_0xa05e('0x14'));var hardwareService=require(_0xa05e('0x15'));var logger=require(_0xa05e('0x16'))('api');var utils=require(_0xa05e('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xa05e('0x18'))['db'];function respondWithStatusCode(_0x50ae05,_0x3ca77e){_0x3ca77e=_0x3ca77e||0xcc;return function(_0x2b3f7e){if(_0x2b3f7e){return _0x50ae05[_0xa05e('0x19')](_0x3ca77e);}return _0x50ae05[_0xa05e('0x1a')](_0x3ca77e)[_0xa05e('0x1b')]();};}function respondWithResult(_0x110653,_0x54de2a){_0x54de2a=_0x54de2a||0xc8;return function(_0x4f3cad){if(_0x4f3cad){return _0x110653['status'](_0x54de2a)[_0xa05e('0x1c')](_0x4f3cad);}};}function respondWithFilteredResult(_0x4925cf,_0x3097e6){return function(_0x107a0d){if(_0x107a0d){var _0x428e54=typeof _0x3097e6[_0xa05e('0x1d')]===_0xa05e('0x1e')&&typeof _0x3097e6[_0xa05e('0x1f')]===_0xa05e('0x1e');var _0x2be969=_0x107a0d[_0xa05e('0x20')];var _0x3e341e=_0x428e54?0x0:_0x3097e6[_0xa05e('0x1d')];var _0x500b78=_0x428e54?_0x107a0d[_0xa05e('0x20')]:_0x3097e6[_0xa05e('0x1d')]+_0x3097e6[_0xa05e('0x1f')];var _0x26f6ed;if(_0x500b78>=_0x2be969){_0x500b78=_0x2be969;_0x26f6ed=0xc8;}else{_0x26f6ed=0xce;}_0x4925cf['status'](_0x26f6ed);return _0x4925cf[_0xa05e('0x21')](_0xa05e('0x22'),_0x3e341e+'-'+_0x500b78+'/'+_0x2be969)[_0xa05e('0x1c')](_0x107a0d);}return null;};}function patchUpdates(_0x22e9a9){return function(_0xec1590){try{jsonpatch[_0xa05e('0x23')](_0xec1590,_0x22e9a9,!![]);}catch(_0x236d56){return BPromise[_0xa05e('0x24')](_0x236d56);}return _0xec1590[_0xa05e('0x25')]();};}function saveUpdates(_0x13d00a,_0x544c0a){return function(_0x1adf76){if(_0x1adf76){return _0x1adf76['update'](_0x13d00a)['then'](function(_0x1a9624){return _0x1a9624;});}return null;};}function removeEntity(_0x47c7b4,_0x45fa63){return function(_0x448fbc){if(_0x448fbc){return _0x448fbc[_0xa05e('0x26')]()['then'](function(){_0x47c7b4[_0xa05e('0x1a')](0xcc)[_0xa05e('0x1b')]();});}};}function handleEntityNotFound(_0x4c6cf0,_0x40c998){return function(_0x32b051){if(!_0x32b051){_0x4c6cf0['sendStatus'](0x194);}return _0x32b051;};}function handleError(_0x1601cb,_0xd2849b){_0xd2849b=_0xd2849b||0x1f4;return function(_0x49f32f){logger[_0xa05e('0x27')](_0x49f32f[_0xa05e('0x28')]);if(_0x49f32f['name']){delete _0x49f32f[_0xa05e('0x29')];}_0x1601cb[_0xa05e('0x1a')](_0xd2849b)['send'](_0x49f32f);};}exports[_0xa05e('0x2a')]=function(_0x289faf,_0x5b2fe2){var _0x26985b={},_0x290be2={},_0x5aba8b={'count':0x0,'rows':[]};var _0x592fd2=_[_0xa05e('0x2b')](db[_0xa05e('0x2c')]['rawAttributes'],function(_0x35c20c){return{'name':_0x35c20c[_0xa05e('0x2d')],'type':_0x35c20c[_0xa05e('0x2e')][_0xa05e('0x2f')]};});_0x290be2['model']=_[_0xa05e('0x2b')](_0x592fd2,_0xa05e('0x29'));_0x290be2['query']=_['keys'](_0x289faf[_0xa05e('0x30')]);_0x290be2[_0xa05e('0x31')]=_['intersection'](_0x290be2['model'],_0x290be2[_0xa05e('0x30')]);_0x26985b[_0xa05e('0x32')]=_[_0xa05e('0x33')](_0x290be2[_0xa05e('0x34')],qs[_0xa05e('0x35')](_0x289faf['query'][_0xa05e('0x35')]));_0x26985b[_0xa05e('0x32')]=_0x26985b[_0xa05e('0x32')][_0xa05e('0x36')]?_0x26985b['attributes']:_0x290be2[_0xa05e('0x34')];if(!_0x289faf[_0xa05e('0x30')]['hasOwnProperty'](_0xa05e('0x37'))){_0x26985b[_0xa05e('0x1f')]=qs['limit'](_0x289faf[_0xa05e('0x30')][_0xa05e('0x1f')]);_0x26985b[_0xa05e('0x1d')]=qs[_0xa05e('0x1d')](_0x289faf['query'][_0xa05e('0x1d')]);}_0x26985b[_0xa05e('0x38')]=qs[_0xa05e('0x39')](_0x289faf[_0xa05e('0x30')][_0xa05e('0x39')]);_0x26985b[_0xa05e('0x3a')]=qs[_0xa05e('0x31')](_[_0xa05e('0x3b')](_0x289faf[_0xa05e('0x30')],_0x290be2[_0xa05e('0x31')]),_0x592fd2);if(_0x289faf['query'][_0xa05e('0x3c')]){_0x26985b[_0xa05e('0x3a')]=_[_0xa05e('0x3d')](_0x26985b[_0xa05e('0x3a')],{'$or':_[_0xa05e('0x2b')](_0x592fd2,function(_0x514960){if(_0x514960['type']!==_0xa05e('0x3e')){var _0x15e88c={};_0x15e88c[_0x514960['name']]={'$like':'%'+_0x289faf[_0xa05e('0x30')][_0xa05e('0x3c')]+'%'};return _0x15e88c;}})});}_0x26985b=_[_0xa05e('0x3d')]({},_0x26985b,_0x289faf[_0xa05e('0x3f')]);var _0x78d04e={'where':_0x26985b[_0xa05e('0x3a')]};return db['ZohoField']['count'](_0x78d04e)[_0xa05e('0x40')](function(_0xf68b40){_0x5aba8b[_0xa05e('0x20')]=_0xf68b40;if(_0x289faf[_0xa05e('0x30')][_0xa05e('0x41')]){_0x26985b[_0xa05e('0x42')]=[{'all':!![]}];}return db['ZohoField'][_0xa05e('0x43')](_0x26985b);})[_0xa05e('0x40')](function(_0x34be5d){_0x5aba8b[_0xa05e('0x44')]=_0x34be5d;return _0x5aba8b;})[_0xa05e('0x40')](respondWithFilteredResult(_0x5b2fe2,_0x26985b))[_0xa05e('0x45')](handleError(_0x5b2fe2,null));};exports[_0xa05e('0x46')]=function(_0x2a0c1c,_0x58a7c5){var _0x259f52={'raw':!![],'where':{'id':_0x2a0c1c['params']['id']}},_0x5b0436={};_0x5b0436[_0xa05e('0x34')]=_[_0xa05e('0x47')](db[_0xa05e('0x2c')][_0xa05e('0x48')]);_0x5b0436[_0xa05e('0x30')]=_[_0xa05e('0x47')](_0x2a0c1c[_0xa05e('0x30')]);_0x5b0436[_0xa05e('0x31')]=_['intersection'](_0x5b0436[_0xa05e('0x34')],_0x5b0436[_0xa05e('0x30')]);_0x259f52[_0xa05e('0x32')]=_['intersection'](_0x5b0436[_0xa05e('0x34')],qs[_0xa05e('0x35')](_0x2a0c1c['query']['fields']));_0x259f52[_0xa05e('0x32')]=_0x259f52['attributes'][_0xa05e('0x36')]?_0x259f52['attributes']:_0x5b0436[_0xa05e('0x34')];if(_0x2a0c1c[_0xa05e('0x30')]['includeAll']){_0x259f52[_0xa05e('0x42')]=[{'all':!![]}];}_0x259f52=_[_0xa05e('0x3d')]({},_0x259f52,_0x2a0c1c[_0xa05e('0x3f')]);return db['ZohoField'][_0xa05e('0x49')](_0x259f52)['then'](handleEntityNotFound(_0x58a7c5,null))[_0xa05e('0x40')](respondWithResult(_0x58a7c5,null))[_0xa05e('0x45')](handleError(_0x58a7c5,null));};exports[_0xa05e('0x4a')]=function(_0x44b3d8,_0x19f142){return db[_0xa05e('0x2c')]['create'](_0x44b3d8['body'],{})[_0xa05e('0x40')](respondWithResult(_0x19f142,0xc9))[_0xa05e('0x45')](handleError(_0x19f142,null));};exports[_0xa05e('0x4b')]=function(_0x15a689,_0x1c7c17){if(_0x15a689[_0xa05e('0x4c')]['id']){delete _0x15a689[_0xa05e('0x4c')]['id'];}return db['ZohoField'][_0xa05e('0x49')]({'where':{'id':_0x15a689[_0xa05e('0x4d')]['id']}})[_0xa05e('0x40')](handleEntityNotFound(_0x1c7c17,null))[_0xa05e('0x40')](saveUpdates(_0x15a689[_0xa05e('0x4c')],null))[_0xa05e('0x40')](respondWithResult(_0x1c7c17,null))[_0xa05e('0x45')](handleError(_0x1c7c17,null));};exports[_0xa05e('0x26')]=function(_0x455ca5,_0x4d71bc){return db[_0xa05e('0x2c')][_0xa05e('0x49')]({'where':{'id':_0x455ca5[_0xa05e('0x4d')]['id']}})[_0xa05e('0x40')](handleEntityNotFound(_0x4d71bc,null))['then'](removeEntity(_0x4d71bc,null))[_0xa05e('0x45')](handleError(_0x4d71bc,null));};
\ No newline at end of file
+var _0x6ae6=['ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','then','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','where','pick','filter','merge','type','options','ZohoField','includeAll','include','findAll','rows','catch','show','params','find','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse'];(function(_0x563b40,_0x3b1cba){var _0x5b6af1=function(_0x3bb82f){while(--_0x3bb82f){_0x563b40['push'](_0x563b40['shift']());}};_0x5b6af1(++_0x3b1cba);}(_0x6ae6,0x15c));var _0x66ae=function(_0x43b08,_0x15f967){_0x43b08=_0x43b08-0x0;var _0x5e05f4=_0x6ae6[_0x43b08];return _0x5e05f4;};'use strict';var emlformat=require(_0x66ae('0x0'));var rimraf=require(_0x66ae('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x66ae('0x2'));var rp=require(_0x66ae('0x3'));var moment=require(_0x66ae('0x4'));var BPromise=require(_0x66ae('0x5'));var Mustache=require('mustache');var util=require(_0x66ae('0x6'));var path=require('path');var sox=require(_0x66ae('0x7'));var csv=require(_0x66ae('0x8'));var ejs=require(_0x66ae('0x9'));var fs=require('fs');var fs_extra=require(_0x66ae('0xa'));var _=require('lodash');var squel=require(_0x66ae('0xb'));var crypto=require(_0x66ae('0xc'));var jsforce=require(_0x66ae('0xd'));var deskjs=require(_0x66ae('0xe'));var toCsv=require('to-csv');var querystring=require(_0x66ae('0xf'));var Papa=require(_0x66ae('0x10'));var Redis=require(_0x66ae('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x66ae('0x12'));var hardwareService=require(_0x66ae('0x13'));var logger=require(_0x66ae('0x14'))(_0x66ae('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x66ae('0x16'))['db'];function respondWithStatusCode(_0x4d6b7c,_0x1341b9){_0x1341b9=_0x1341b9||0xcc;return function(_0x255fe0){if(_0x255fe0){return _0x4d6b7c['sendStatus'](_0x1341b9);}return _0x4d6b7c[_0x66ae('0x17')](_0x1341b9)[_0x66ae('0x18')]();};}function respondWithResult(_0x5bfc30,_0x141301){_0x141301=_0x141301||0xc8;return function(_0x443390){if(_0x443390){return _0x5bfc30[_0x66ae('0x17')](_0x141301)[_0x66ae('0x19')](_0x443390);}};}function respondWithFilteredResult(_0x7844f8,_0x21b13c){return function(_0xa9f274){if(_0xa9f274){var _0x280d32=typeof _0x21b13c[_0x66ae('0x1a')]==='undefined'&&typeof _0x21b13c['limit']===_0x66ae('0x1b');var _0x3d4f2e=_0xa9f274[_0x66ae('0x1c')];var _0x560edc=_0x280d32?0x0:_0x21b13c[_0x66ae('0x1a')];var _0x90fdb4=_0x280d32?_0xa9f274[_0x66ae('0x1c')]:_0x21b13c[_0x66ae('0x1a')]+_0x21b13c[_0x66ae('0x1d')];var _0x334090;if(_0x90fdb4>=_0x3d4f2e){_0x90fdb4=_0x3d4f2e;_0x334090=0xc8;}else{_0x334090=0xce;}_0x7844f8[_0x66ae('0x17')](_0x334090);return _0x7844f8[_0x66ae('0x1e')](_0x66ae('0x1f'),_0x560edc+'-'+_0x90fdb4+'/'+_0x3d4f2e)[_0x66ae('0x19')](_0xa9f274);}return null;};}function patchUpdates(_0xd5663a){return function(_0xd5b1e2){try{jsonpatch[_0x66ae('0x20')](_0xd5b1e2,_0xd5663a,!![]);}catch(_0x3ce534){return BPromise[_0x66ae('0x21')](_0x3ce534);}return _0xd5b1e2[_0x66ae('0x22')]();};}function saveUpdates(_0x361386,_0x28de72){return function(_0x257175){if(_0x257175){return _0x257175[_0x66ae('0x23')](_0x361386)['then'](function(_0x75402c){return _0x75402c;});}return null;};}function removeEntity(_0x45929b,_0x123d93){return function(_0x5c69c5){if(_0x5c69c5){return _0x5c69c5[_0x66ae('0x24')]()[_0x66ae('0x25')](function(){_0x45929b[_0x66ae('0x17')](0xcc)[_0x66ae('0x18')]();});}};}function handleEntityNotFound(_0x22870a,_0x3a3042){return function(_0x41a4cc){if(!_0x41a4cc){_0x22870a[_0x66ae('0x26')](0x194);}return _0x41a4cc;};}function handleError(_0x32e3c9,_0x6bf8b6){_0x6bf8b6=_0x6bf8b6||0x1f4;return function(_0x3145c8){logger['error'](_0x3145c8[_0x66ae('0x27')]);if(_0x3145c8['name']){delete _0x3145c8[_0x66ae('0x28')];}_0x32e3c9[_0x66ae('0x17')](_0x6bf8b6)[_0x66ae('0x29')](_0x3145c8);};}exports[_0x66ae('0x2a')]=function(_0xcd9efb,_0x56fa80){var _0x3eedcc={},_0x192f05={},_0x2f734b={'count':0x0,'rows':[]};var _0x190e7b=_[_0x66ae('0x2b')](db['ZohoField'][_0x66ae('0x2c')],function(_0x401772){return{'name':_0x401772[_0x66ae('0x2d')],'type':_0x401772['type']['key']};});_0x192f05[_0x66ae('0x2e')]=_[_0x66ae('0x2b')](_0x190e7b,'name');_0x192f05['query']=_[_0x66ae('0x2f')](_0xcd9efb[_0x66ae('0x30')]);_0x192f05[_0x66ae('0x31')]=_[_0x66ae('0x32')](_0x192f05[_0x66ae('0x2e')],_0x192f05['query']);_0x3eedcc[_0x66ae('0x33')]=_['intersection'](_0x192f05['model'],qs[_0x66ae('0x34')](_0xcd9efb['query'][_0x66ae('0x34')]));_0x3eedcc[_0x66ae('0x33')]=_0x3eedcc[_0x66ae('0x33')][_0x66ae('0x35')]?_0x3eedcc[_0x66ae('0x33')]:_0x192f05[_0x66ae('0x2e')];if(!_0xcd9efb[_0x66ae('0x30')]['hasOwnProperty'](_0x66ae('0x36'))){_0x3eedcc[_0x66ae('0x1d')]=qs[_0x66ae('0x1d')](_0xcd9efb[_0x66ae('0x30')][_0x66ae('0x1d')]);_0x3eedcc[_0x66ae('0x1a')]=qs[_0x66ae('0x1a')](_0xcd9efb[_0x66ae('0x30')][_0x66ae('0x1a')]);}_0x3eedcc[_0x66ae('0x37')]=qs['sort'](_0xcd9efb['query']['sort']);_0x3eedcc[_0x66ae('0x38')]=qs[_0x66ae('0x31')](_[_0x66ae('0x39')](_0xcd9efb['query'],_0x192f05[_0x66ae('0x31')]),_0x190e7b);if(_0xcd9efb['query'][_0x66ae('0x3a')]){_0x3eedcc[_0x66ae('0x38')]=_[_0x66ae('0x3b')](_0x3eedcc[_0x66ae('0x38')],{'$or':_[_0x66ae('0x2b')](_0x190e7b,function(_0x26bc93){if(_0x26bc93[_0x66ae('0x3c')]!=='VIRTUAL'){var _0x425a13={};_0x425a13[_0x26bc93[_0x66ae('0x28')]]={'$like':'%'+_0xcd9efb[_0x66ae('0x30')][_0x66ae('0x3a')]+'%'};return _0x425a13;}})});}_0x3eedcc=_[_0x66ae('0x3b')]({},_0x3eedcc,_0xcd9efb[_0x66ae('0x3d')]);var _0x20253d={'where':_0x3eedcc[_0x66ae('0x38')]};return db[_0x66ae('0x3e')][_0x66ae('0x1c')](_0x20253d)['then'](function(_0x51fd24){_0x2f734b[_0x66ae('0x1c')]=_0x51fd24;if(_0xcd9efb[_0x66ae('0x30')][_0x66ae('0x3f')]){_0x3eedcc[_0x66ae('0x40')]=[{'all':!![]}];}return db[_0x66ae('0x3e')][_0x66ae('0x41')](_0x3eedcc);})[_0x66ae('0x25')](function(_0x40f0cb){_0x2f734b[_0x66ae('0x42')]=_0x40f0cb;return _0x2f734b;})[_0x66ae('0x25')](respondWithFilteredResult(_0x56fa80,_0x3eedcc))[_0x66ae('0x43')](handleError(_0x56fa80,null));};exports[_0x66ae('0x44')]=function(_0x286efd,_0x29ae85){var _0x310ffe={'raw':!![],'where':{'id':_0x286efd[_0x66ae('0x45')]['id']}},_0x355380={};_0x355380[_0x66ae('0x2e')]=_['keys'](db['ZohoField'][_0x66ae('0x2c')]);_0x355380['query']=_[_0x66ae('0x2f')](_0x286efd[_0x66ae('0x30')]);_0x355380[_0x66ae('0x31')]=_[_0x66ae('0x32')](_0x355380[_0x66ae('0x2e')],_0x355380[_0x66ae('0x30')]);_0x310ffe[_0x66ae('0x33')]=_['intersection'](_0x355380['model'],qs[_0x66ae('0x34')](_0x286efd[_0x66ae('0x30')]['fields']));_0x310ffe[_0x66ae('0x33')]=_0x310ffe[_0x66ae('0x33')]['length']?_0x310ffe['attributes']:_0x355380[_0x66ae('0x2e')];if(_0x286efd[_0x66ae('0x30')][_0x66ae('0x3f')]){_0x310ffe[_0x66ae('0x40')]=[{'all':!![]}];}_0x310ffe=_[_0x66ae('0x3b')]({},_0x310ffe,_0x286efd[_0x66ae('0x3d')]);return db[_0x66ae('0x3e')][_0x66ae('0x46')](_0x310ffe)[_0x66ae('0x25')](handleEntityNotFound(_0x29ae85,null))['then'](respondWithResult(_0x29ae85,null))[_0x66ae('0x43')](handleError(_0x29ae85,null));};exports[_0x66ae('0x47')]=function(_0x2b4a5a,_0x125403){return db[_0x66ae('0x3e')]['create'](_0x2b4a5a[_0x66ae('0x48')],{})[_0x66ae('0x25')](respondWithResult(_0x125403,0xc9))[_0x66ae('0x43')](handleError(_0x125403,null));};exports['update']=function(_0x3e8fef,_0x255d4b){if(_0x3e8fef[_0x66ae('0x48')]['id']){delete _0x3e8fef['body']['id'];}return db[_0x66ae('0x3e')][_0x66ae('0x46')]({'where':{'id':_0x3e8fef[_0x66ae('0x45')]['id']}})[_0x66ae('0x25')](handleEntityNotFound(_0x255d4b,null))['then'](saveUpdates(_0x3e8fef[_0x66ae('0x48')],null))[_0x66ae('0x25')](respondWithResult(_0x255d4b,null))[_0x66ae('0x43')](handleError(_0x255d4b,null));};exports['destroy']=function(_0x38c40c,_0x52b262){return db['ZohoField']['find']({'where':{'id':_0x38c40c['params']['id']}})[_0x66ae('0x25')](handleEntityNotFound(_0x52b262,null))[_0x66ae('0x25')](removeEntity(_0x52b262,null))[_0x66ae('0x43')](handleError(_0x52b262,null));};
\ No newline at end of file
index 658e463..a07b61f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0120=['rimraf','../../config/environment','./intZohoField.attributes','exports','ZohoField','int_zoho_fields','zoho_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0xb949a9,_0x2f948a){var _0x31932b=function(_0x1e7414){while(--_0x1e7414){_0xb949a9['push'](_0xb949a9['shift']());}};_0x31932b(++_0x2f948a);}(_0x0120,0x6f));var _0x0012=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x0120[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0x0012('0x0'));var util=require(_0x0012('0x1'));var logger=require(_0x0012('0x2'))(_0x0012('0x3'));var moment=require(_0x0012('0x4'));var BPromise=require(_0x0012('0x5'));var rp=require(_0x0012('0x6'));var fs=require('fs');var path=require(_0x0012('0x7'));var rimraf=require(_0x0012('0x8'));var config=require(_0x0012('0x9'));var attributes=require(_0x0012('0xa'));module[_0x0012('0xb')]=function(_0x4eaa5b,_0x4b396c){return _0x4eaa5b['define'](_0x0012('0xc'),attributes,{'tableName':_0x0012('0xd'),'paranoid':![],'indexes':[{'name':_0x0012('0xe'),'fields':[_0x0012('0xf'),_0x0012('0x10')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x627e=['define','ZohoField','int_zoho_fields','zoho_unique_index','FieldId','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x461403,_0x17c439){var _0x47716c=function(_0x247470){while(--_0x247470){_0x461403['push'](_0x461403['shift']());}};_0x47716c(++_0x17c439);}(_0x627e,0x14a));var _0xe627=function(_0x4911ab,_0x3c80bb){_0x4911ab=_0x4911ab-0x0;var _0x1c5716=_0x627e[_0x4911ab];return _0x1c5716;};'use strict';var _=require(_0xe627('0x0'));var util=require(_0xe627('0x1'));var logger=require(_0xe627('0x2'))(_0xe627('0x3'));var moment=require(_0xe627('0x4'));var BPromise=require('bluebird');var rp=require(_0xe627('0x5'));var fs=require('fs');var path=require(_0xe627('0x6'));var rimraf=require(_0xe627('0x7'));var config=require('../../config/environment');var attributes=require('./intZohoField.attributes');module['exports']=function(_0x1a1a3d,_0x3f2791){return _0x1a1a3d[_0xe627('0x8')](_0xe627('0x9'),attributes,{'tableName':_0xe627('0xa'),'paranoid':![],'indexes':[{'name':_0xe627('0xb'),'fields':['idField',_0xe627('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index fb08530..a61119e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7749=['message','catch','lodash','moment','bluebird','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','ZohoField,\x20%s,\x20%s','debug','ZohoField,\x20%s,\x20%s,\x20%s','request\x20sent','error','code'];(function(_0xefc148,_0x115db0){var _0x442f0a=function(_0x13e774){while(--_0x13e774){_0xefc148['push'](_0xefc148['shift']());}};_0x442f0a(++_0x115db0);}(_0x7749,0x17e));var _0x9774=function(_0xf9dca1,_0x324d98){_0xf9dca1=_0xf9dca1-0x0;var _0x518bbc=_0x7749[_0xf9dca1];return _0x518bbc;};'use strict';var _=require(_0x9774('0x0'));var util=require('util');var moment=require(_0x9774('0x1'));var BPromise=require(_0x9774('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9774('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x9774('0x4'))(_0x9774('0x5'));var config=require(_0x9774('0x6'));var jayson=require(_0x9774('0x7'));var client=jayson[_0x9774('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x43dd11,_0x34de9a,_0x140810){return new BPromise(function(_0x355f41,_0x322f0a){return client[_0x9774('0x9')](_0x43dd11,_0x140810)[_0x9774('0xa')](function(_0x58e2f6){logger[_0x9774('0xb')](_0x9774('0xc'),_0x34de9a,'request\x20sent');logger[_0x9774('0xd')](_0x9774('0xe'),_0x34de9a,_0x9774('0xf'),JSON['stringify'](_0x58e2f6));if(_0x58e2f6['error']){if(_0x58e2f6[_0x9774('0x10')][_0x9774('0x11')]===0x1f4){logger[_0x9774('0x10')](_0x9774('0xc'),_0x34de9a,_0x58e2f6['error'][_0x9774('0x12')]);return _0x322f0a(_0x58e2f6[_0x9774('0x10')][_0x9774('0x12')]);}logger[_0x9774('0x10')](_0x9774('0xc'),_0x34de9a,_0x58e2f6['error'][_0x9774('0x12')]);return _0x355f41(_0x58e2f6[_0x9774('0x10')][_0x9774('0x12')]);}else{logger['info'](_0x9774('0xc'),_0x34de9a,_0x9774('0xf'));_0x355f41(_0x58e2f6['result'][_0x9774('0x12')]);}})[_0x9774('0x13')](function(_0x53fc21){logger['error']('ZohoField,\x20%s,\x20%s',_0x34de9a,_0x53fc21);_0x322f0a(_0x53fc21);});});}
\ No newline at end of file
+var _0xdb79=['debug','ZohoField,\x20%s,\x20%s,\x20%s','error','code','message','ZohoField,\x20%s,\x20%s','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','request\x20sent'];(function(_0xbc3682,_0x8401d2){var _0x403e28=function(_0x36bd9d){while(--_0x36bd9d){_0xbc3682['push'](_0xbc3682['shift']());}};_0x403e28(++_0x8401d2);}(_0xdb79,0x86));var _0x9db7=function(_0x4c12ec,_0x2e9103){_0x4c12ec=_0x4c12ec-0x0;var _0x3ae42c=_0xdb79[_0x4c12ec];return _0x3ae42c;};'use strict';var _=require(_0x9db7('0x0'));var util=require(_0x9db7('0x1'));var moment=require(_0x9db7('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9db7('0x3'));var db=require(_0x9db7('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x9db7('0x5'))(_0x9db7('0x6'));var config=require(_0x9db7('0x7'));var jayson=require(_0x9db7('0x8'));var client=jayson[_0x9db7('0x9')][_0x9db7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1e7e82,_0x4c8073,_0x4346e3){return new BPromise(function(_0x16409e,_0x20d779){return client['request'](_0x1e7e82,_0x4346e3)['then'](function(_0x3958ad){logger[_0x9db7('0xb')]('ZohoField,\x20%s,\x20%s',_0x4c8073,_0x9db7('0xc'));logger[_0x9db7('0xd')](_0x9db7('0xe'),_0x4c8073,'request\x20sent',JSON['stringify'](_0x3958ad));if(_0x3958ad[_0x9db7('0xf')]){if(_0x3958ad[_0x9db7('0xf')][_0x9db7('0x10')]===0x1f4){logger['error']('ZohoField,\x20%s,\x20%s',_0x4c8073,_0x3958ad[_0x9db7('0xf')][_0x9db7('0x11')]);return _0x20d779(_0x3958ad[_0x9db7('0xf')][_0x9db7('0x11')]);}logger[_0x9db7('0xf')]('ZohoField,\x20%s,\x20%s',_0x4c8073,_0x3958ad[_0x9db7('0xf')]['message']);return _0x16409e(_0x3958ad[_0x9db7('0xf')][_0x9db7('0x11')]);}else{logger['info'](_0x9db7('0x12'),_0x4c8073,_0x9db7('0xc'));_0x16409e(_0x3958ad[_0x9db7('0x13')][_0x9db7('0x11')]);}})[_0x9db7('0x14')](function(_0xc210b3){logger[_0x9db7('0xf')]('ZohoField,\x20%s,\x20%s',_0x4c8073,_0xc210b3);_0x20d779(_0xc210b3);});});}
\ No newline at end of file
index a92bc64..6a46125 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(_0x1a33ad,_0x218bbe){var _0x5b6734=function(_0x3c22ee){while(--_0x3c22ee){_0x1a33ad['push'](_0x1a33ad['shift']());}};_0x5b6734(++_0x218bbe);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
+var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x470fef,_0xe48cf0){var _0x358499=function(_0xfb80ac){while(--_0xfb80ac){_0x470fef['push'](_0x470fef['shift']());}};_0x358499(++_0xe48cf0);}(_0x70e0,0x17b));var _0x070e=function(_0x1d27ea,_0x426823){_0x1d27ea=_0x1d27ea-0x0;var _0x510915=_0x70e0[_0x1d27ea];return _0x510915;};'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 f84ffa7..abe9235 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x051f=['STRING','unique_name_and_version','INTEGER','exports'];(function(_0x57d370,_0x3ed0f6){var _0x550fd2=function(_0x59634f){while(--_0x59634f){_0x57d370['push'](_0x57d370['shift']());}};_0x550fd2(++_0x3ed0f6);}(_0x051f,0x177));var _0xf051=function(_0x582f51,_0x2bf3e7){_0x582f51=_0x582f51-0x0;var _0x5130eb=_0x051f[_0x582f51];return _0x5130eb;};'use strict';var Sequelize=require('sequelize');module[_0xf051('0x0')]={'name':{'type':Sequelize[_0xf051('0x1')],'allowNull':![],'unique':_0xf051('0x2')},'version':{'type':Sequelize[_0xf051('0x1')],'allowNull':![],'unique':_0xf051('0x2')},'main':{'type':Sequelize[_0xf051('0x1')],'defaultValue':'app.js'},'filename':{'type':Sequelize[_0xf051('0x1')]},'path':{'type':Sequelize[_0xf051('0x1')]},'type':{'type':Sequelize[_0xf051('0x1')]},'size':{'type':Sequelize[_0xf051('0x3')]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'author':{'type':Sequelize[_0xf051('0x1')]},'logo':{'type':Sequelize[_0xf051('0x1')]},'state':{'type':Sequelize[_0xf051('0x1')],'unique':'state'},'description':{'type':Sequelize[_0xf051('0x1')]},'title':{'type':Sequelize[_0xf051('0x1')]},'remoteUri':{'type':Sequelize[_0xf051('0x1')]},'link':{'type':Sequelize['STRING'],'defaultValue':'#'}};
\ No newline at end of file
+var _0x3992=['unique_name_and_version','app.js','BOOLEAN','exports','STRING'];(function(_0x5289a0,_0x35465c){var _0x3726fd=function(_0x24b596){while(--_0x24b596){_0x5289a0['push'](_0x5289a0['shift']());}};_0x3726fd(++_0x35465c);}(_0x3992,0x175));var _0x2399=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0x3992[_0x30ae5e];return _0x1f2e93;};'use strict';var Sequelize=require('sequelize');module[_0x2399('0x0')]={'name':{'type':Sequelize[_0x2399('0x1')],'allowNull':![],'unique':_0x2399('0x2')},'version':{'type':Sequelize[_0x2399('0x1')],'allowNull':![],'unique':'unique_name_and_version'},'main':{'type':Sequelize[_0x2399('0x1')],'defaultValue':_0x2399('0x3')},'filename':{'type':Sequelize[_0x2399('0x1')]},'path':{'type':Sequelize[_0x2399('0x1')]},'type':{'type':Sequelize[_0x2399('0x1')]},'size':{'type':Sequelize['INTEGER']},'active':{'type':Sequelize[_0x2399('0x4')],'defaultValue':![]},'author':{'type':Sequelize[_0x2399('0x1')]},'logo':{'type':Sequelize[_0x2399('0x1')]},'state':{'type':Sequelize[_0x2399('0x1')],'unique':'state'},'description':{'type':Sequelize[_0x2399('0x1')]},'title':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x2399('0x1')]},'link':{'type':Sequelize[_0x2399('0x1')],'defaultValue':'#'}};
\ No newline at end of file
index da578b1..e82493b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['count','set','Content-Range','apply','reject','save','then','sendStatus','name','send','map','Integration','rawAttributes','fieldName','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','rows','show','params','include','find','catch','create','update','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0x53ec,0x192));var _0xc53e=function(_0x3c4274,_0x858023){_0x3c4274=_0x3c4274-0x0;var _0x36a214=_0x53ec[_0x3c4274];return _0x36a214;};'use strict';var emlformat=require(_0xc53e('0x0'));var rimraf=require(_0xc53e('0x1'));var zipdir=require(_0xc53e('0x2'));var jsonpatch=require(_0xc53e('0x3'));var rp=require(_0xc53e('0x4'));var moment=require(_0xc53e('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xc53e('0x6'));var util=require('util');var path=require(_0xc53e('0x7'));var sox=require(_0xc53e('0x8'));var csv=require('to-csv');var ejs=require(_0xc53e('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc53e('0xa'));var squel=require(_0xc53e('0xb'));var crypto=require('crypto');var jsforce=require(_0xc53e('0xc'));var deskjs=require(_0xc53e('0xd'));var toCsv=require(_0xc53e('0xe'));var querystring=require(_0xc53e('0xf'));var Papa=require(_0xc53e('0x10'));var Redis=require(_0xc53e('0x11'));var authService=require(_0xc53e('0x12'));var qs=require(_0xc53e('0x13'));var as=require(_0xc53e('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xc53e('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xc53e('0x16'));var db=require(_0xc53e('0x17'))['db'];function respondWithStatusCode(_0x863fa,_0x4203aa){_0x4203aa=_0x4203aa||0xcc;return function(_0x56f0e5){if(_0x56f0e5){return _0x863fa['sendStatus'](_0x4203aa);}return _0x863fa[_0xc53e('0x18')](_0x4203aa)[_0xc53e('0x19')]();};}function respondWithResult(_0x7cd798,_0x3d2e17){_0x3d2e17=_0x3d2e17||0xc8;return function(_0x358ef3){if(_0x358ef3){return _0x7cd798[_0xc53e('0x18')](_0x3d2e17)[_0xc53e('0x1a')](_0x358ef3);}};}function respondWithFilteredResult(_0x19c0d1,_0x455e4d){return function(_0x2ad6eb){if(_0x2ad6eb){var _0x5b0a88=typeof _0x455e4d[_0xc53e('0x1b')]===_0xc53e('0x1c')&&typeof _0x455e4d[_0xc53e('0x1d')]===_0xc53e('0x1c');var _0x15333b=_0x2ad6eb[_0xc53e('0x1e')];var _0x164016=_0x5b0a88?0x0:_0x455e4d[_0xc53e('0x1b')];var _0x3b550e=_0x5b0a88?_0x2ad6eb['count']:_0x455e4d['offset']+_0x455e4d[_0xc53e('0x1d')];var _0x2a5bac;if(_0x3b550e>=_0x15333b){_0x3b550e=_0x15333b;_0x2a5bac=0xc8;}else{_0x2a5bac=0xce;}_0x19c0d1[_0xc53e('0x18')](_0x2a5bac);return _0x19c0d1[_0xc53e('0x1f')](_0xc53e('0x20'),_0x164016+'-'+_0x3b550e+'/'+_0x15333b)[_0xc53e('0x1a')](_0x2ad6eb);}return null;};}function patchUpdates(_0x15a015){return function(_0x25702b){try{jsonpatch[_0xc53e('0x21')](_0x25702b,_0x15a015,!![]);}catch(_0x401af6){return BPromise[_0xc53e('0x22')](_0x401af6);}return _0x25702b[_0xc53e('0x23')]();};}function saveUpdates(_0x426467,_0x4fb695){return function(_0x47cfdd){if(_0x47cfdd){return _0x47cfdd['update'](_0x426467)[_0xc53e('0x24')](function(_0x384218){return _0x384218;});}return null;};}function removeEntity(_0x7591c1,_0x4015c8){return function(_0x180811){if(_0x180811){return _0x180811['destroy']()['then'](function(){_0x7591c1[_0xc53e('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1ae55e,_0x3a5ce8){return function(_0x443179){if(!_0x443179){_0x1ae55e[_0xc53e('0x25')](0x194);}return _0x443179;};}function handleError(_0x63c5dc,_0x4df8cf){_0x4df8cf=_0x4df8cf||0x1f4;return function(_0x398e7a){logger['error'](_0x398e7a['stack']);if(_0x398e7a['name']){delete _0x398e7a[_0xc53e('0x26')];}_0x63c5dc['status'](_0x4df8cf)[_0xc53e('0x27')](_0x398e7a);};}exports['index']=function(_0x24a77e,_0x5112d2){var _0x5ce216={},_0x8f0ee6={},_0x6a62b0={'count':0x0,'rows':[]};var _0x42dec1=_[_0xc53e('0x28')](db[_0xc53e('0x29')][_0xc53e('0x2a')],function(_0x3280fe){return{'name':_0x3280fe[_0xc53e('0x2b')],'type':_0x3280fe['type'][_0xc53e('0x2c')]};});_0x8f0ee6[_0xc53e('0x2d')]=_[_0xc53e('0x28')](_0x42dec1,'name');_0x8f0ee6[_0xc53e('0x2e')]=_['keys'](_0x24a77e[_0xc53e('0x2e')]);_0x8f0ee6[_0xc53e('0x2f')]=_['intersection'](_0x8f0ee6['model'],_0x8f0ee6[_0xc53e('0x2e')]);_0x5ce216[_0xc53e('0x30')]=_[_0xc53e('0x31')](_0x8f0ee6[_0xc53e('0x2d')],qs[_0xc53e('0x32')](_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x32')]));_0x5ce216[_0xc53e('0x30')]=_0x5ce216['attributes'][_0xc53e('0x33')]?_0x5ce216[_0xc53e('0x30')]:_0x8f0ee6[_0xc53e('0x2d')];if(!_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x34')](_0xc53e('0x35'))){_0x5ce216[_0xc53e('0x1d')]=qs[_0xc53e('0x1d')](_0x24a77e[_0xc53e('0x2e')]['limit']);_0x5ce216[_0xc53e('0x1b')]=qs['offset'](_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x1b')]);}_0x5ce216['order']=qs[_0xc53e('0x36')](_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x36')]);_0x5ce216['where']=qs[_0xc53e('0x2f')](_[_0xc53e('0x37')](_0x24a77e[_0xc53e('0x2e')],_0x8f0ee6[_0xc53e('0x2f')]),_0x42dec1);if(_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x38')]){_0x5ce216[_0xc53e('0x39')]=_['merge'](_0x5ce216[_0xc53e('0x39')],{'$or':_[_0xc53e('0x28')](_0x42dec1,function(_0x2db711){if(_0x2db711['type']!==_0xc53e('0x3a')){var _0x5e8ab7={};_0x5e8ab7[_0x2db711[_0xc53e('0x26')]]={'$like':'%'+_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x38')]+'%'};return _0x5e8ab7;}})});}_0x5ce216=_[_0xc53e('0x3b')]({},_0x5ce216,_0x24a77e[_0xc53e('0x3c')]);var _0x5507d0={'where':_0x5ce216[_0xc53e('0x39')]};return db[_0xc53e('0x29')]['count'](_0x5507d0)['then'](function(_0x5e9e15){_0x6a62b0['count']=_0x5e9e15;if(_0x24a77e[_0xc53e('0x2e')][_0xc53e('0x3d')]){_0x5ce216['include']=[{'all':!![]}];}return db[_0xc53e('0x29')]['findAll'](_0x5ce216);})['then'](function(_0x53447e){_0x6a62b0[_0xc53e('0x3e')]=_0x53447e;return _0x6a62b0;})['then'](respondWithFilteredResult(_0x5112d2,_0x5ce216))['catch'](handleError(_0x5112d2,null));};exports[_0xc53e('0x3f')]=function(_0x53a82f,_0x422088){var _0x360af9={'raw':![],'where':{'id':_0x53a82f[_0xc53e('0x40')]['id']}},_0x49f204={};_0x49f204[_0xc53e('0x2d')]=_['keys'](db[_0xc53e('0x29')]['rawAttributes']);_0x49f204['query']=_['keys'](_0x53a82f['query']);_0x49f204[_0xc53e('0x2f')]=_[_0xc53e('0x31')](_0x49f204[_0xc53e('0x2d')],_0x49f204['query']);_0x360af9[_0xc53e('0x30')]=_[_0xc53e('0x31')](_0x49f204['model'],qs['fields'](_0x53a82f[_0xc53e('0x2e')][_0xc53e('0x32')]));_0x360af9[_0xc53e('0x30')]=_0x360af9['attributes'][_0xc53e('0x33')]?_0x360af9[_0xc53e('0x30')]:_0x49f204[_0xc53e('0x2d')];if(_0x53a82f[_0xc53e('0x2e')][_0xc53e('0x3d')]){_0x360af9[_0xc53e('0x41')]=[{'all':!![]}];}_0x360af9=_[_0xc53e('0x3b')]({},_0x360af9,_0x53a82f['options']);return db[_0xc53e('0x29')][_0xc53e('0x42')](_0x360af9)[_0xc53e('0x24')](handleEntityNotFound(_0x422088,null))['then'](respondWithResult(_0x422088,null))[_0xc53e('0x43')](handleError(_0x422088,null));};exports[_0xc53e('0x44')]=function(_0x4458c8,_0x15e744){return db[_0xc53e('0x29')][_0xc53e('0x44')](_0x4458c8['body'],{})[_0xc53e('0x24')](respondWithResult(_0x15e744,0xc9))[_0xc53e('0x43')](handleError(_0x15e744,null));};exports[_0xc53e('0x45')]=function(_0x5a6e41,_0x33d45c){if(_0x5a6e41[_0xc53e('0x46')]['id']){delete _0x5a6e41[_0xc53e('0x46')]['id'];}return db[_0xc53e('0x29')][_0xc53e('0x42')]({'where':{'id':_0x5a6e41[_0xc53e('0x40')]['id']}})[_0xc53e('0x24')](handleEntityNotFound(_0x33d45c,null))[_0xc53e('0x24')](saveUpdates(_0x5a6e41[_0xc53e('0x46')],null))[_0xc53e('0x24')](respondWithResult(_0x33d45c,null))['catch'](handleError(_0x33d45c,null));};exports[_0xc53e('0x47')]=function(_0x17cf13,_0x38520c){return db[_0xc53e('0x29')][_0xc53e('0x42')]({'where':{'id':_0x17cf13['params']['id']}})['then'](handleEntityNotFound(_0x38520c,null))[_0xc53e('0x24')](removeEntity(_0x38520c,null))['catch'](handleError(_0x38520c,null));};
\ No newline at end of file
+var _0xafc4=['reject','save','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','Integration','includeAll','catch','show','params','create','body','find','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'];(function(_0x5c73e5,_0x2ba756){var _0x501028=function(_0x209d1c){while(--_0x209d1c){_0x5c73e5['push'](_0x5c73e5['shift']());}};_0x501028(++_0x2ba756);}(_0xafc4,0x69));var _0x4afc=function(_0x3a1eec,_0x284417){_0x3a1eec=_0x3a1eec-0x0;var _0x354806=_0xafc4[_0x3a1eec];return _0x354806;};'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['Integration'][_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['Integration']['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['Integration']['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));};
\ No newline at end of file
index a850e65..b46ebb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e35=['./integration.attributes','define','Integration','integrations','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x478414,_0xcf142d){var _0x5eb6b9=function(_0x10e6fe){while(--_0x10e6fe){_0x478414['push'](_0x478414['shift']());}};_0x5eb6b9(++_0xcf142d);}(_0x7e35,0x1d8));var _0x57e3=function(_0x59cc31,_0x4d61e2){_0x59cc31=_0x59cc31-0x0;var _0x86bdc=_0x7e35[_0x59cc31];return _0x86bdc;};'use strict';var _=require('lodash');var util=require(_0x57e3('0x0'));var logger=require(_0x57e3('0x1'))(_0x57e3('0x2'));var moment=require(_0x57e3('0x3'));var BPromise=require(_0x57e3('0x4'));var rp=require(_0x57e3('0x5'));var fs=require('fs');var path=require(_0x57e3('0x6'));var rimraf=require(_0x57e3('0x7'));var config=require(_0x57e3('0x8'));var attributes=require(_0x57e3('0x9'));module['exports']=function(_0x5881b0,_0x4db615){return _0x5881b0[_0x57e3('0xa')](_0x57e3('0xb'),attributes,{'tableName':_0x57e3('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x62bb=['integrations','util','moment','path','rimraf','exports','define','Integration'];(function(_0x303f17,_0x4f8d86){var _0x3107f7=function(_0x2d6763){while(--_0x2d6763){_0x303f17['push'](_0x303f17['shift']());}};_0x3107f7(++_0x4f8d86);}(_0x62bb,0x149));var _0xb62b=function(_0x201fa7,_0x586553){_0x201fa7=_0x201fa7-0x0;var _0x237f5f=_0x62bb[_0x201fa7];return _0x237f5f;};'use strict';var _=require('lodash');var util=require(_0xb62b('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xb62b('0x1'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xb62b('0x2'));var rimraf=require(_0xb62b('0x3'));var config=require('../../config/environment');var attributes=require('./integration.attributes');module[_0xb62b('0x4')]=function(_0x30f238,_0x202d21){return _0x30f238[_0xb62b('0x5')](_0xb62b('0x6'),attributes,{'tableName':_0xb62b('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e66dac3..4e81432 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2c7=['../../config/logger','jayson/promise','client','http','request','then','Integration,\x20%s,\x20%s','request\x20sent','debug','Integration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x7e2eb0,_0x17cd58){var _0xd92de4=function(_0x5d005b){while(--_0x5d005b){_0x7e2eb0['push'](_0x7e2eb0['shift']());}};_0xd92de4(++_0x17cd58);}(_0xc2c7,0x134));var _0x7c2c=function(_0x36a6de,_0x24cb9e){_0x36a6de=_0x36a6de-0x0;var _0x22ba02=_0xc2c7[_0x36a6de];return _0x22ba02;};'use strict';var _=require('lodash');var util=require(_0x7c2c('0x0'));var moment=require(_0x7c2c('0x1'));var BPromise=require(_0x7c2c('0x2'));var rs=require(_0x7c2c('0x3'));var fs=require('fs');var Redis=require(_0x7c2c('0x4'));var db=require(_0x7c2c('0x5'))['db'];var utils=require(_0x7c2c('0x6'));var logger=require(_0x7c2c('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x7c2c('0x8'));var client=jayson[_0x7c2c('0x9')][_0x7c2c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x54f027,_0x4abe93,_0x5a1027){return new BPromise(function(_0x2274cd,_0x29638d){return client[_0x7c2c('0xb')](_0x54f027,_0x5a1027)[_0x7c2c('0xc')](function(_0x279cff){logger['info'](_0x7c2c('0xd'),_0x4abe93,_0x7c2c('0xe'));logger[_0x7c2c('0xf')](_0x7c2c('0x10'),_0x4abe93,_0x7c2c('0xe'),JSON[_0x7c2c('0x11')](_0x279cff));if(_0x279cff[_0x7c2c('0x12')]){if(_0x279cff[_0x7c2c('0x12')][_0x7c2c('0x13')]===0x1f4){logger[_0x7c2c('0x12')](_0x7c2c('0xd'),_0x4abe93,_0x279cff[_0x7c2c('0x12')][_0x7c2c('0x14')]);return _0x29638d(_0x279cff[_0x7c2c('0x12')][_0x7c2c('0x14')]);}logger[_0x7c2c('0x12')]('Integration,\x20%s,\x20%s',_0x4abe93,_0x279cff['error'][_0x7c2c('0x14')]);return _0x2274cd(_0x279cff[_0x7c2c('0x12')][_0x7c2c('0x14')]);}else{logger['info'](_0x7c2c('0xd'),_0x4abe93,_0x7c2c('0xe'));_0x2274cd(_0x279cff['result'][_0x7c2c('0x14')]);}})['catch'](function(_0x1aa355){logger['error'](_0x7c2c('0xd'),_0x4abe93,_0x1aa355);_0x29638d(_0x1aa355);});});}
\ No newline at end of file
+var _0x2542=['info','Integration,\x20%s,\x20%s','debug','Integration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then'];(function(_0x410f02,_0x3d18e9){var _0x2c84e4=function(_0x8436e4){while(--_0x8436e4){_0x410f02['push'](_0x410f02['shift']());}};_0x2c84e4(++_0x3d18e9);}(_0x2542,0x169));var _0x2254=function(_0x481739,_0x714003){_0x481739=_0x481739-0x0;var _0x20f1d4=_0x2542[_0x481739];return _0x20f1d4;};'use strict';var _=require(_0x2254('0x0'));var util=require(_0x2254('0x1'));var moment=require(_0x2254('0x2'));var BPromise=require(_0x2254('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2254('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2254('0x5'));var logger=require(_0x2254('0x6'))(_0x2254('0x7'));var config=require(_0x2254('0x8'));var jayson=require(_0x2254('0x9'));var client=jayson['client'][_0x2254('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xe8ca50,_0x2ee7ee,_0x3c45ec){return new BPromise(function(_0x1637ad,_0x477b47){return client[_0x2254('0xb')](_0xe8ca50,_0x3c45ec)[_0x2254('0xc')](function(_0xb395da){logger[_0x2254('0xd')](_0x2254('0xe'),_0x2ee7ee,'request\x20sent');logger[_0x2254('0xf')](_0x2254('0x10'),_0x2ee7ee,_0x2254('0x11'),JSON[_0x2254('0x12')](_0xb395da));if(_0xb395da['error']){if(_0xb395da['error'][_0x2254('0x13')]===0x1f4){logger[_0x2254('0x14')](_0x2254('0xe'),_0x2ee7ee,_0xb395da[_0x2254('0x14')][_0x2254('0x15')]);return _0x477b47(_0xb395da[_0x2254('0x14')]['message']);}logger[_0x2254('0x14')](_0x2254('0xe'),_0x2ee7ee,_0xb395da['error'][_0x2254('0x15')]);return _0x1637ad(_0xb395da[_0x2254('0x14')][_0x2254('0x15')]);}else{logger[_0x2254('0xd')](_0x2254('0xe'),_0x2ee7ee,_0x2254('0x11'));_0x1637ad(_0xb395da['result'][_0x2254('0x15')]);}})['catch'](function(_0x327d6d){logger[_0x2254('0x14')](_0x2254('0xe'),_0x2ee7ee,_0x327d6d);_0x477b47(_0x327d6d);});});}
\ No newline at end of file
index f08aa77..dbafc4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1967=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./integrationReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','update','delete','destroy','exports','util','path','connect-timeout'];(function(_0x11ba83,_0xd5611a){var _0x3f3925=function(_0x3d7cb0){while(--_0x3d7cb0){_0x11ba83['push'](_0x11ba83['shift']());}};_0x3f3925(++_0xd5611a);}(_0x1967,0x173));var _0x7196=function(_0x201495,_0x327960){_0x201495=_0x201495-0x0;var _0x1ce497=_0x1967[_0x201495];return _0x1ce497;};'use strict';var multer=require('multer');var util=require(_0x7196('0x0'));var path=require(_0x7196('0x1'));var timeout=require(_0x7196('0x2'));var express=require(_0x7196('0x3'));var router=express[_0x7196('0x4')]();var fs_extra=require(_0x7196('0x5'));var auth=require(_0x7196('0x6'));var interaction=require(_0x7196('0x7'));var config=require(_0x7196('0x8'));var controller=require(_0x7196('0x9'));router['get']('/',auth[_0x7196('0xa')](),controller[_0x7196('0xb')]);router[_0x7196('0xc')](_0x7196('0xd'),auth[_0x7196('0xa')](),controller[_0x7196('0xe')]);router['get'](_0x7196('0xf'),auth[_0x7196('0xa')](),controller[_0x7196('0x10')]);router[_0x7196('0x11')]('/',auth[_0x7196('0xa')](),controller['create']);router['put'](_0x7196('0xf'),auth[_0x7196('0xa')](),controller[_0x7196('0x12')]);router[_0x7196('0x13')](_0x7196('0xf'),auth[_0x7196('0xa')](),controller[_0x7196('0x14')]);module[_0x7196('0x15')]=router;
\ No newline at end of file
+var _0x2542=['put','update','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./integrationReport.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post'];(function(_0x43d0b3,_0x1fde9b){var _0x59e3a7=function(_0x5cfa5a){while(--_0x5cfa5a){_0x43d0b3['push'](_0x43d0b3['shift']());}};_0x59e3a7(++_0x1fde9b);}(_0x2542,0x169));var _0x2254=function(_0x3c7cc4,_0x358aa5){_0x3c7cc4=_0x3c7cc4-0x0;var _0x2ccad1=_0x2542[_0x3c7cc4];return _0x2ccad1;};'use strict';var multer=require(_0x2254('0x0'));var util=require(_0x2254('0x1'));var path=require(_0x2254('0x2'));var timeout=require(_0x2254('0x3'));var express=require('express');var router=express[_0x2254('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x2254('0x5'));var interaction=require(_0x2254('0x6'));var config=require(_0x2254('0x7'));var controller=require(_0x2254('0x8'));router[_0x2254('0x9')]('/',auth['isAuthenticated'](),controller[_0x2254('0xa')]);router[_0x2254('0x9')](_0x2254('0xb'),auth[_0x2254('0xc')](),controller[_0x2254('0xd')]);router[_0x2254('0x9')](_0x2254('0xe'),auth[_0x2254('0xc')](),controller[_0x2254('0xf')]);router[_0x2254('0x10')]('/',auth[_0x2254('0xc')](),controller['create']);router[_0x2254('0x11')](_0x2254('0xe'),auth[_0x2254('0xc')](),controller[_0x2254('0x12')]);router['delete']('/:id',auth[_0x2254('0xc')](),controller[_0x2254('0x13')]);module[_0x2254('0x14')]=router;
\ No newline at end of file
index a81dada..a1a5380 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d06=['ENUM','SENT','FAILED','exports','STRING','INTEGER','DATE','BOOLEAN','TEXT'];(function(_0x163625,_0x24439c){var _0x6d181c=function(_0x57643d){while(--_0x57643d){_0x163625['push'](_0x163625['shift']());}};_0x6d181c(++_0x24439c);}(_0x6d06,0x111));var _0x66d0=function(_0x4c98b9,_0x1ad11b){_0x4c98b9=_0x4c98b9-0x0;var _0x3a257a=_0x6d06[_0x4c98b9];return _0x3a257a;};'use strict';var Sequelize=require('sequelize');module[_0x66d0('0x0')]={'integration':{'type':Sequelize[_0x66d0('0x1')]},'eventChannel':{'type':Sequelize[_0x66d0('0x1')]},'exitStatus':{'type':Sequelize[_0x66d0('0x1')]},'ticketId':{'type':Sequelize['STRING']},'integrationId':{'type':Sequelize[_0x66d0('0x2')]},'contacts':{'type':Sequelize[_0x66d0('0x1')]},'uniqueid':{'type':Sequelize[_0x66d0('0x1')]},'calleridnum':{'type':Sequelize[_0x66d0('0x1')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x66d0('0x1')]},'interface':{'type':Sequelize[_0x66d0('0x1')]},'membername':{'type':Sequelize[_0x66d0('0x1')]},'agentcalledAt':{'type':Sequelize[_0x66d0('0x3')]},'agentconnectAt':{'type':Sequelize[_0x66d0('0x3')]},'holdtime':{'type':Sequelize[_0x66d0('0x2')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x66d0('0x3')]},'talktime':{'type':Sequelize[_0x66d0('0x2')]},'agentacw':{'type':Sequelize[_0x66d0('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x66d0('0x2')]},'reason':{'type':Sequelize[_0x66d0('0x1')]},'agentringnoanswer':{'type':Sequelize[_0x66d0('0x4')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x66d0('0x3')]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0x66d0('0x3')]},'lastevent':{'type':Sequelize[_0x66d0('0x1')]},'channel':{'type':Sequelize[_0x66d0('0x1')]},'channelstate':{'type':Sequelize[_0x66d0('0x2')]},'channelstatedesc':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x66d0('0x1')]},'connectedlinename':{'type':Sequelize[_0x66d0('0x1')]},'language':{'type':Sequelize[_0x66d0('0x1')]},'accountcode':{'type':Sequelize[_0x66d0('0x1')]},'context':{'type':Sequelize[_0x66d0('0x1')]},'exten':{'type':Sequelize[_0x66d0('0x1')]},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0x66d0('0x1')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0x66d0('0x1')]},'destcalleridnum':{'type':Sequelize[_0x66d0('0x1')]},'destcalleridname':{'type':Sequelize[_0x66d0('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0x66d0('0x1')]},'destconnectedlinename':{'type':Sequelize[_0x66d0('0x1')]},'destlanguage':{'type':Sequelize[_0x66d0('0x1')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x66d0('0x1')]},'destpriority':{'type':Sequelize[_0x66d0('0x1')]},'destuniqueid':{'type':Sequelize[_0x66d0('0x1')]},'messageId':{'type':Sequelize[_0x66d0('0x1')]},'inReplyTo':{'type':Sequelize[_0x66d0('0x1')]},'subject':{'type':Sequelize[_0x66d0('0x1')]},'from':{'type':Sequelize[_0x66d0('0x1')]},'to':{'type':Sequelize[_0x66d0('0x1')]},'cc':{'type':Sequelize['STRING']},'attachment':{'type':Sequelize[_0x66d0('0x5')]},'html':{'type':Sequelize[_0x66d0('0x5')]},'text':{'type':Sequelize['TEXT']},'status':{'type':Sequelize[_0x66d0('0x6')](_0x66d0('0x7'),'SENDING','RECEIVED',_0x66d0('0x8'))},'url':{'type':Sequelize[_0x66d0('0x1')]},'app':{'type':Sequelize[_0x66d0('0x1')]},'appdata':{'type':Sequelize[_0x66d0('0x1')]},'projectId':{'type':Sequelize[_0x66d0('0x2')]}};
\ No newline at end of file
+var _0xf594=['STRING','DATE','BOOLEAN','INTEGER','TEXT','SENT','SENDING','RECEIVED','FAILED','sequelize'];(function(_0x3a6b3c,_0x10faf5){var _0x51f097=function(_0x18dee6){while(--_0x18dee6){_0x3a6b3c['push'](_0x3a6b3c['shift']());}};_0x51f097(++_0x10faf5);}(_0xf594,0x81));var _0x4f59=function(_0x57bcef,_0x309324){_0x57bcef=_0x57bcef-0x0;var _0x5be37e=_0xf594[_0x57bcef];return _0x5be37e;};'use strict';var Sequelize=require(_0x4f59('0x0'));module['exports']={'integration':{'type':Sequelize[_0x4f59('0x1')]},'eventChannel':{'type':Sequelize[_0x4f59('0x1')]},'exitStatus':{'type':Sequelize[_0x4f59('0x1')]},'ticketId':{'type':Sequelize[_0x4f59('0x1')]},'integrationId':{'type':Sequelize['INTEGER']},'contacts':{'type':Sequelize[_0x4f59('0x1')]},'uniqueid':{'type':Sequelize[_0x4f59('0x1')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x4f59('0x1')]},'queue':{'type':Sequelize[_0x4f59('0x1')]},'interface':{'type':Sequelize[_0x4f59('0x1')]},'membername':{'type':Sequelize[_0x4f59('0x1')]},'agentcalledAt':{'type':Sequelize[_0x4f59('0x2')]},'agentconnectAt':{'type':Sequelize[_0x4f59('0x2')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize[_0x4f59('0x3')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x4f59('0x2')]},'talktime':{'type':Sequelize[_0x4f59('0x4')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x4f59('0x4')]},'reason':{'type':Sequelize[_0x4f59('0x1')]},'agentringnoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x4f59('0x2')]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0x4f59('0x2')]},'lastevent':{'type':Sequelize[_0x4f59('0x1')]},'channel':{'type':Sequelize[_0x4f59('0x1')]},'channelstate':{'type':Sequelize[_0x4f59('0x4')]},'channelstatedesc':{'type':Sequelize[_0x4f59('0x1')]},'connectedlinenum':{'type':Sequelize[_0x4f59('0x1')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x4f59('0x1')]},'context':{'type':Sequelize[_0x4f59('0x1')]},'exten':{'type':Sequelize[_0x4f59('0x1')]},'priority':{'type':Sequelize[_0x4f59('0x1')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x4f59('0x4')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0x4f59('0x1')]},'destcalleridname':{'type':Sequelize[_0x4f59('0x1')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0x4f59('0x1')]},'destlanguage':{'type':Sequelize[_0x4f59('0x1')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0x4f59('0x1')]},'destexten':{'type':Sequelize[_0x4f59('0x1')]},'destpriority':{'type':Sequelize[_0x4f59('0x1')]},'destuniqueid':{'type':Sequelize['STRING']},'messageId':{'type':Sequelize[_0x4f59('0x1')]},'inReplyTo':{'type':Sequelize[_0x4f59('0x1')]},'subject':{'type':Sequelize['STRING']},'from':{'type':Sequelize[_0x4f59('0x1')]},'to':{'type':Sequelize[_0x4f59('0x1')]},'cc':{'type':Sequelize[_0x4f59('0x1')]},'attachment':{'type':Sequelize[_0x4f59('0x5')]},'html':{'type':Sequelize[_0x4f59('0x5')]},'text':{'type':Sequelize[_0x4f59('0x5')]},'status':{'type':Sequelize['ENUM'](_0x4f59('0x6'),_0x4f59('0x7'),_0x4f59('0x8'),_0x4f59('0x9'))},'url':{'type':Sequelize[_0x4f59('0x1')]},'app':{'type':Sequelize[_0x4f59('0x1')]},'appdata':{'type':Sequelize[_0x4f59('0x1')]},'projectId':{'type':Sequelize[_0x4f59('0x4')]}};
\ No newline at end of file
index ed1c4cf..f229866 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc854=['map','query','filters','intersection','model','fields','attributes','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','params','keys','rawAttributes','length','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','IntegrationReport','fieldName','type','key'];(function(_0xf3d32c,_0xd29dcc){var _0x4516e6=function(_0x236a34){while(--_0x236a34){_0xf3d32c['push'](_0xf3d32c['shift']());}};_0x4516e6(++_0xd29dcc);}(_0xc854,0x158));var _0x4c85=function(_0x43241c,_0xad3f71){_0x43241c=_0x43241c-0x0;var _0x43b112=_0xc854[_0x43241c];return _0x43b112;};'use strict';var emlformat=require(_0x4c85('0x0'));var rimraf=require(_0x4c85('0x1'));var zipdir=require(_0x4c85('0x2'));var jsonpatch=require(_0x4c85('0x3'));var rp=require(_0x4c85('0x4'));var moment=require(_0x4c85('0x5'));var BPromise=require(_0x4c85('0x6'));var Mustache=require(_0x4c85('0x7'));var util=require(_0x4c85('0x8'));var path=require('path');var sox=require(_0x4c85('0x9'));var csv=require(_0x4c85('0xa'));var ejs=require(_0x4c85('0xb'));var fs=require('fs');var fs_extra=require(_0x4c85('0xc'));var _=require(_0x4c85('0xd'));var squel=require(_0x4c85('0xe'));var crypto=require('crypto');var jsforce=require(_0x4c85('0xf'));var deskjs=require(_0x4c85('0x10'));var toCsv=require(_0x4c85('0xa'));var querystring=require(_0x4c85('0x11'));var Papa=require(_0x4c85('0x12'));var Redis=require(_0x4c85('0x13'));var authService=require(_0x4c85('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x4c85('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4c85('0x16'))(_0x4c85('0x17'));var utils=require(_0x4c85('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x4c85('0x19'));var db=require(_0x4c85('0x1a'))['db'];function respondWithStatusCode(_0x22d4d7,_0x49ce6f){_0x49ce6f=_0x49ce6f||0xcc;return function(_0x5f2d63){if(_0x5f2d63){return _0x22d4d7[_0x4c85('0x1b')](_0x49ce6f);}return _0x22d4d7[_0x4c85('0x1c')](_0x49ce6f)[_0x4c85('0x1d')]();};}function respondWithResult(_0xad751d,_0x170504){_0x170504=_0x170504||0xc8;return function(_0x38aacf){if(_0x38aacf){return _0xad751d[_0x4c85('0x1c')](_0x170504)[_0x4c85('0x1e')](_0x38aacf);}};}function respondWithFilteredResult(_0x48d398,_0x1d486c){return function(_0x364203){if(_0x364203){var _0xf70674=typeof _0x1d486c[_0x4c85('0x1f')]===_0x4c85('0x20')&&typeof _0x1d486c[_0x4c85('0x21')]===_0x4c85('0x20');var _0x4e2e7f=_0x364203['count'];var _0x5b6f5c=_0xf70674?0x0:_0x1d486c[_0x4c85('0x1f')];var _0x2cea7b=_0xf70674?_0x364203[_0x4c85('0x22')]:_0x1d486c['offset']+_0x1d486c['limit'];var _0x1e5e85;if(_0x2cea7b>=_0x4e2e7f){_0x2cea7b=_0x4e2e7f;_0x1e5e85=0xc8;}else{_0x1e5e85=0xce;}_0x48d398['status'](_0x1e5e85);return _0x48d398[_0x4c85('0x23')](_0x4c85('0x24'),_0x5b6f5c+'-'+_0x2cea7b+'/'+_0x4e2e7f)[_0x4c85('0x1e')](_0x364203);}return null;};}function patchUpdates(_0x12104b){return function(_0xedb374){try{jsonpatch[_0x4c85('0x25')](_0xedb374,_0x12104b,!![]);}catch(_0xadc25d){return BPromise[_0x4c85('0x26')](_0xadc25d);}return _0xedb374[_0x4c85('0x27')]();};}function saveUpdates(_0x398d9d,_0x1370a0){return function(_0x246150){if(_0x246150){return _0x246150[_0x4c85('0x28')](_0x398d9d)[_0x4c85('0x29')](function(_0x15b465){return _0x15b465;});}return null;};}function removeEntity(_0x1fe514,_0x102d42){return function(_0x565dc6){if(_0x565dc6){return _0x565dc6[_0x4c85('0x2a')]()[_0x4c85('0x29')](function(){_0x1fe514[_0x4c85('0x1c')](0xcc)[_0x4c85('0x1d')]();});}};}function handleEntityNotFound(_0x1fbfa0,_0x2d2561){return function(_0x3a8a96){if(!_0x3a8a96){_0x1fbfa0[_0x4c85('0x1b')](0x194);}return _0x3a8a96;};}function handleError(_0x107a8f,_0x200cc5){_0x200cc5=_0x200cc5||0x1f4;return function(_0x57de81){logger['error'](_0x57de81[_0x4c85('0x2b')]);if(_0x57de81[_0x4c85('0x2c')]){delete _0x57de81[_0x4c85('0x2c')];}_0x107a8f[_0x4c85('0x1c')](_0x200cc5)[_0x4c85('0x2d')](_0x57de81);};}exports[_0x4c85('0x2e')]=function(_0x22ec9f,_0x433608){var _0x2fc359={},_0x292b99={},_0x181482={'count':0x0,'rows':[]};var _0x58bbcc=_['map'](db[_0x4c85('0x2f')]['rawAttributes'],function(_0x1302bd){return{'name':_0x1302bd[_0x4c85('0x30')],'type':_0x1302bd[_0x4c85('0x31')][_0x4c85('0x32')]};});_0x292b99['model']=_[_0x4c85('0x33')](_0x58bbcc,_0x4c85('0x2c'));_0x292b99[_0x4c85('0x34')]=_['keys'](_0x22ec9f['query']);_0x292b99[_0x4c85('0x35')]=_[_0x4c85('0x36')](_0x292b99[_0x4c85('0x37')],_0x292b99['query']);_0x2fc359['attributes']=_['intersection'](_0x292b99[_0x4c85('0x37')],qs[_0x4c85('0x38')](_0x22ec9f[_0x4c85('0x34')][_0x4c85('0x38')]));_0x2fc359['attributes']=_0x2fc359[_0x4c85('0x39')]['length']?_0x2fc359[_0x4c85('0x39')]:_0x292b99[_0x4c85('0x37')];if(!_0x22ec9f[_0x4c85('0x34')]['hasOwnProperty'](_0x4c85('0x3a'))){_0x2fc359['limit']=qs['limit'](_0x22ec9f[_0x4c85('0x34')]['limit']);_0x2fc359['offset']=qs['offset'](_0x22ec9f[_0x4c85('0x34')][_0x4c85('0x1f')]);}_0x2fc359[_0x4c85('0x3b')]=qs['sort'](_0x22ec9f[_0x4c85('0x34')][_0x4c85('0x3c')]);_0x2fc359[_0x4c85('0x3d')]=qs['filters'](_[_0x4c85('0x3e')](_0x22ec9f['query'],_0x292b99[_0x4c85('0x35')]),_0x58bbcc);if(_0x22ec9f[_0x4c85('0x34')][_0x4c85('0x3f')]){_0x2fc359[_0x4c85('0x3d')]=_[_0x4c85('0x40')](_0x2fc359[_0x4c85('0x3d')],{'$or':_['map'](_0x58bbcc,function(_0x2d0822){if(_0x2d0822[_0x4c85('0x31')]!==_0x4c85('0x41')){var _0x514d0e={};_0x514d0e[_0x2d0822['name']]={'$like':'%'+_0x22ec9f[_0x4c85('0x34')]['filter']+'%'};return _0x514d0e;}})});}_0x2fc359=_[_0x4c85('0x40')]({},_0x2fc359,_0x22ec9f[_0x4c85('0x42')]);var _0xf04bf9={'where':_0x2fc359[_0x4c85('0x3d')]};return db[_0x4c85('0x2f')]['count'](_0xf04bf9)[_0x4c85('0x29')](function(_0x3e78c7){_0x181482[_0x4c85('0x22')]=_0x3e78c7;if(_0x22ec9f[_0x4c85('0x34')][_0x4c85('0x43')]){_0x2fc359[_0x4c85('0x44')]=[{'all':!![]}];}return db[_0x4c85('0x2f')][_0x4c85('0x45')](_0x2fc359);})[_0x4c85('0x29')](function(_0x17a476){_0x181482['rows']=_0x17a476;return _0x181482;})['then'](respondWithFilteredResult(_0x433608,_0x2fc359))[_0x4c85('0x46')](handleError(_0x433608,null));};exports['show']=function(_0x47bc5a,_0x351c52){var _0x12da7c={'raw':![],'where':{'id':_0x47bc5a[_0x4c85('0x47')]['id']}},_0x4d5790={};_0x4d5790[_0x4c85('0x37')]=_[_0x4c85('0x48')](db['IntegrationReport'][_0x4c85('0x49')]);_0x4d5790[_0x4c85('0x34')]=_[_0x4c85('0x48')](_0x47bc5a['query']);_0x4d5790['filters']=_[_0x4c85('0x36')](_0x4d5790[_0x4c85('0x37')],_0x4d5790['query']);_0x12da7c[_0x4c85('0x39')]=_['intersection'](_0x4d5790['model'],qs[_0x4c85('0x38')](_0x47bc5a[_0x4c85('0x34')]['fields']));_0x12da7c[_0x4c85('0x39')]=_0x12da7c[_0x4c85('0x39')][_0x4c85('0x4a')]?_0x12da7c[_0x4c85('0x39')]:_0x4d5790[_0x4c85('0x37')];if(_0x47bc5a['query'][_0x4c85('0x43')]){_0x12da7c[_0x4c85('0x44')]=[{'all':!![]}];}_0x12da7c=_[_0x4c85('0x40')]({},_0x12da7c,_0x47bc5a[_0x4c85('0x42')]);return db[_0x4c85('0x2f')][_0x4c85('0x4b')](_0x12da7c)[_0x4c85('0x29')](handleEntityNotFound(_0x351c52,null))[_0x4c85('0x29')](respondWithResult(_0x351c52,null))['catch'](handleError(_0x351c52,null));};exports[_0x4c85('0x4c')]=function(_0x403f63,_0x3cdb37){return db[_0x4c85('0x2f')][_0x4c85('0x4c')](_0x403f63[_0x4c85('0x4d')],{})[_0x4c85('0x29')](respondWithResult(_0x3cdb37,0xc9))[_0x4c85('0x46')](handleError(_0x3cdb37,null));};exports['update']=function(_0x398111,_0x5523ce){if(_0x398111[_0x4c85('0x4d')]['id']){delete _0x398111[_0x4c85('0x4d')]['id'];}return db[_0x4c85('0x2f')][_0x4c85('0x4b')]({'where':{'id':_0x398111[_0x4c85('0x47')]['id']}})[_0x4c85('0x29')](handleEntityNotFound(_0x5523ce,null))[_0x4c85('0x29')](saveUpdates(_0x398111['body'],null))[_0x4c85('0x29')](respondWithResult(_0x5523ce,null))[_0x4c85('0x46')](handleError(_0x5523ce,null));};exports[_0x4c85('0x2a')]=function(_0x2ba673,_0x591b3c){return db[_0x4c85('0x2f')][_0x4c85('0x4b')]({'where':{'id':_0x2ba673[_0x4c85('0x47')]['id']}})[_0x4c85('0x29')](handleEntityNotFound(_0x591b3c,null))['then'](removeEntity(_0x591b3c,null))['catch'](handleError(_0x591b3c,null));};exports[_0x4c85('0x4e')]=function(_0x4ea1ab,_0x385fac){return db[_0x4c85('0x2f')][_0x4c85('0x4e')]()[_0x4c85('0x29')](respondWithResult(_0x385fac,null))[_0x4c85('0x46')](handleError(_0x385fac,null));};
\ No newline at end of file
+var _0xf5ff=['fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','filter','includeAll','findAll','rows','show','params','include','options','find','catch','create','body','destroy','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','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','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','offset','limit','undefined','count','status','set','apply','reject','update','then','error','stack','name','send','index','map','IntegrationReport','rawAttributes','fieldName','type','key','model','query','keys','attributes','intersection'];(function(_0x4fca79,_0x5cc14c){var _0xfee8fc=function(_0x46dcf2){while(--_0x46dcf2){_0x4fca79['push'](_0x4fca79['shift']());}};_0xfee8fc(++_0x5cc14c);}(_0xf5ff,0x1ed));var _0xff5f=function(_0x497eda,_0x3af9a4){_0x497eda=_0x497eda-0x0;var _0x53079f=_0xf5ff[_0x497eda];return _0x53079f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xff5f('0x0'));var zipdir=require(_0xff5f('0x1'));var jsonpatch=require(_0xff5f('0x2'));var rp=require('request-promise');var moment=require(_0xff5f('0x3'));var BPromise=require(_0xff5f('0x4'));var Mustache=require('mustache');var util=require(_0xff5f('0x5'));var path=require('path');var sox=require(_0xff5f('0x6'));var csv=require(_0xff5f('0x7'));var ejs=require(_0xff5f('0x8'));var fs=require('fs');var fs_extra=require(_0xff5f('0x9'));var _=require(_0xff5f('0xa'));var squel=require(_0xff5f('0xb'));var crypto=require(_0xff5f('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xff5f('0xd'));var toCsv=require(_0xff5f('0x7'));var querystring=require(_0xff5f('0xe'));var Papa=require(_0xff5f('0xf'));var Redis=require(_0xff5f('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xff5f('0x11'));var as=require(_0xff5f('0x12'));var hardwareService=require(_0xff5f('0x13'));var logger=require(_0xff5f('0x14'))(_0xff5f('0x15'));var utils=require(_0xff5f('0x16'));var config=require(_0xff5f('0x17'));var licenseUtil=require(_0xff5f('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x59870d,_0x36913c){_0x36913c=_0x36913c||0xcc;return function(_0x261196){if(_0x261196){return _0x59870d[_0xff5f('0x19')](_0x36913c);}return _0x59870d['status'](_0x36913c)[_0xff5f('0x1a')]();};}function respondWithResult(_0xe54c10,_0x31e050){_0x31e050=_0x31e050||0xc8;return function(_0xf422cf){if(_0xf422cf){return _0xe54c10['status'](_0x31e050)['json'](_0xf422cf);}};}function respondWithFilteredResult(_0x3b3d15,_0x3e95b9){return function(_0x46ec0f){if(_0x46ec0f){var _0x5dc7f7=typeof _0x3e95b9[_0xff5f('0x1b')]==='undefined'&&typeof _0x3e95b9[_0xff5f('0x1c')]===_0xff5f('0x1d');var _0x1c6c0b=_0x46ec0f['count'];var _0x40550f=_0x5dc7f7?0x0:_0x3e95b9[_0xff5f('0x1b')];var _0x4c5d30=_0x5dc7f7?_0x46ec0f[_0xff5f('0x1e')]:_0x3e95b9[_0xff5f('0x1b')]+_0x3e95b9[_0xff5f('0x1c')];var _0x26300e;if(_0x4c5d30>=_0x1c6c0b){_0x4c5d30=_0x1c6c0b;_0x26300e=0xc8;}else{_0x26300e=0xce;}_0x3b3d15[_0xff5f('0x1f')](_0x26300e);return _0x3b3d15[_0xff5f('0x20')]('Content-Range',_0x40550f+'-'+_0x4c5d30+'/'+_0x1c6c0b)['json'](_0x46ec0f);}return null;};}function patchUpdates(_0x1cb737){return function(_0x167c3a){try{jsonpatch[_0xff5f('0x21')](_0x167c3a,_0x1cb737,!![]);}catch(_0x58674d){return BPromise[_0xff5f('0x22')](_0x58674d);}return _0x167c3a['save']();};}function saveUpdates(_0x47306e,_0x3f3ea1){return function(_0x1a5ea3){if(_0x1a5ea3){return _0x1a5ea3[_0xff5f('0x23')](_0x47306e)[_0xff5f('0x24')](function(_0x2aadfa){return _0x2aadfa;});}return null;};}function removeEntity(_0x3ded3a,_0x10a332){return function(_0x4618cd){if(_0x4618cd){return _0x4618cd['destroy']()[_0xff5f('0x24')](function(){_0x3ded3a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5b9bc1,_0x400e66){return function(_0x4382e6){if(!_0x4382e6){_0x5b9bc1[_0xff5f('0x19')](0x194);}return _0x4382e6;};}function handleError(_0x50b23d,_0x553680){_0x553680=_0x553680||0x1f4;return function(_0xb0443a){logger[_0xff5f('0x25')](_0xb0443a[_0xff5f('0x26')]);if(_0xb0443a[_0xff5f('0x27')]){delete _0xb0443a[_0xff5f('0x27')];}_0x50b23d[_0xff5f('0x1f')](_0x553680)[_0xff5f('0x28')](_0xb0443a);};}exports[_0xff5f('0x29')]=function(_0x2d4e74,_0x48b693){var _0x54f630={},_0xf8fee0={},_0x3508e8={'count':0x0,'rows':[]};var _0xa5b924=_[_0xff5f('0x2a')](db[_0xff5f('0x2b')][_0xff5f('0x2c')],function(_0x35bae4){return{'name':_0x35bae4[_0xff5f('0x2d')],'type':_0x35bae4[_0xff5f('0x2e')][_0xff5f('0x2f')]};});_0xf8fee0[_0xff5f('0x30')]=_[_0xff5f('0x2a')](_0xa5b924,_0xff5f('0x27'));_0xf8fee0[_0xff5f('0x31')]=_[_0xff5f('0x32')](_0x2d4e74['query']);_0xf8fee0['filters']=_['intersection'](_0xf8fee0[_0xff5f('0x30')],_0xf8fee0[_0xff5f('0x31')]);_0x54f630[_0xff5f('0x33')]=_[_0xff5f('0x34')](_0xf8fee0[_0xff5f('0x30')],qs['fields'](_0x2d4e74['query'][_0xff5f('0x35')]));_0x54f630[_0xff5f('0x33')]=_0x54f630['attributes'][_0xff5f('0x36')]?_0x54f630['attributes']:_0xf8fee0[_0xff5f('0x30')];if(!_0x2d4e74['query'][_0xff5f('0x37')](_0xff5f('0x38'))){_0x54f630[_0xff5f('0x1c')]=qs[_0xff5f('0x1c')](_0x2d4e74['query'][_0xff5f('0x1c')]);_0x54f630[_0xff5f('0x1b')]=qs[_0xff5f('0x1b')](_0x2d4e74[_0xff5f('0x31')][_0xff5f('0x1b')]);}_0x54f630[_0xff5f('0x39')]=qs[_0xff5f('0x3a')](_0x2d4e74[_0xff5f('0x31')][_0xff5f('0x3a')]);_0x54f630[_0xff5f('0x3b')]=qs[_0xff5f('0x3c')](_[_0xff5f('0x3d')](_0x2d4e74[_0xff5f('0x31')],_0xf8fee0[_0xff5f('0x3c')]),_0xa5b924);if(_0x2d4e74[_0xff5f('0x31')]['filter']){_0x54f630[_0xff5f('0x3b')]=_[_0xff5f('0x3e')](_0x54f630[_0xff5f('0x3b')],{'$or':_['map'](_0xa5b924,function(_0x5cde1d){if(_0x5cde1d[_0xff5f('0x2e')]!==_0xff5f('0x3f')){var _0x7bc6f0={};_0x7bc6f0[_0x5cde1d[_0xff5f('0x27')]]={'$like':'%'+_0x2d4e74[_0xff5f('0x31')][_0xff5f('0x40')]+'%'};return _0x7bc6f0;}})});}_0x54f630=_['merge']({},_0x54f630,_0x2d4e74['options']);var _0x5be3b4={'where':_0x54f630[_0xff5f('0x3b')]};return db[_0xff5f('0x2b')][_0xff5f('0x1e')](_0x5be3b4)['then'](function(_0x4efd61){_0x3508e8['count']=_0x4efd61;if(_0x2d4e74[_0xff5f('0x31')][_0xff5f('0x41')]){_0x54f630['include']=[{'all':!![]}];}return db[_0xff5f('0x2b')][_0xff5f('0x42')](_0x54f630);})[_0xff5f('0x24')](function(_0x50db39){_0x3508e8[_0xff5f('0x43')]=_0x50db39;return _0x3508e8;})['then'](respondWithFilteredResult(_0x48b693,_0x54f630))['catch'](handleError(_0x48b693,null));};exports[_0xff5f('0x44')]=function(_0x36ab46,_0x13a524){var _0x5395a1={'raw':![],'where':{'id':_0x36ab46[_0xff5f('0x45')]['id']}},_0x332d84={};_0x332d84[_0xff5f('0x30')]=_[_0xff5f('0x32')](db[_0xff5f('0x2b')][_0xff5f('0x2c')]);_0x332d84[_0xff5f('0x31')]=_['keys'](_0x36ab46['query']);_0x332d84['filters']=_[_0xff5f('0x34')](_0x332d84[_0xff5f('0x30')],_0x332d84[_0xff5f('0x31')]);_0x5395a1['attributes']=_[_0xff5f('0x34')](_0x332d84[_0xff5f('0x30')],qs[_0xff5f('0x35')](_0x36ab46[_0xff5f('0x31')]['fields']));_0x5395a1[_0xff5f('0x33')]=_0x5395a1[_0xff5f('0x33')]['length']?_0x5395a1[_0xff5f('0x33')]:_0x332d84[_0xff5f('0x30')];if(_0x36ab46[_0xff5f('0x31')]['includeAll']){_0x5395a1[_0xff5f('0x46')]=[{'all':!![]}];}_0x5395a1=_[_0xff5f('0x3e')]({},_0x5395a1,_0x36ab46[_0xff5f('0x47')]);return db['IntegrationReport'][_0xff5f('0x48')](_0x5395a1)[_0xff5f('0x24')](handleEntityNotFound(_0x13a524,null))['then'](respondWithResult(_0x13a524,null))[_0xff5f('0x49')](handleError(_0x13a524,null));};exports[_0xff5f('0x4a')]=function(_0x570db0,_0x1402b3){return db[_0xff5f('0x2b')][_0xff5f('0x4a')](_0x570db0[_0xff5f('0x4b')],{})[_0xff5f('0x24')](respondWithResult(_0x1402b3,0xc9))[_0xff5f('0x49')](handleError(_0x1402b3,null));};exports[_0xff5f('0x23')]=function(_0x41b144,_0xa10fd2){if(_0x41b144['body']['id']){delete _0x41b144[_0xff5f('0x4b')]['id'];}return db[_0xff5f('0x2b')][_0xff5f('0x48')]({'where':{'id':_0x41b144['params']['id']}})[_0xff5f('0x24')](handleEntityNotFound(_0xa10fd2,null))[_0xff5f('0x24')](saveUpdates(_0x41b144[_0xff5f('0x4b')],null))[_0xff5f('0x24')](respondWithResult(_0xa10fd2,null))[_0xff5f('0x49')](handleError(_0xa10fd2,null));};exports[_0xff5f('0x4c')]=function(_0x49c3fe,_0x15208b){return db[_0xff5f('0x2b')][_0xff5f('0x48')]({'where':{'id':_0x49c3fe[_0xff5f('0x45')]['id']}})[_0xff5f('0x24')](handleEntityNotFound(_0x15208b,null))[_0xff5f('0x24')](removeEntity(_0x15208b,null))[_0xff5f('0x49')](handleError(_0x15208b,null));};exports[_0xff5f('0x4d')]=function(_0x48f01e,_0x2ab906){return db['IntegrationReport'][_0xff5f('0x4d')]()[_0xff5f('0x24')](respondWithResult(_0x2ab906,null))[_0xff5f('0x49')](handleError(_0x2ab906,null));};
\ No newline at end of file
index e1b149d..2783ea5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb89c=['./integrationReport.attributes','define','IntegrationReport','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x5cd51d,_0x20d4fa){var _0x444608=function(_0x32a9dc){while(--_0x32a9dc){_0x5cd51d['push'](_0x5cd51d['shift']());}};_0x444608(++_0x20d4fa);}(_0xb89c,0x1ef));var _0xcb89=function(_0x4f7dfe,_0x2fa4a0){_0x4f7dfe=_0x4f7dfe-0x0;var _0x18c892=_0xb89c[_0x4f7dfe];return _0x18c892;};'use strict';var _=require('lodash');var util=require(_0xcb89('0x0'));var logger=require(_0xcb89('0x1'))(_0xcb89('0x2'));var moment=require(_0xcb89('0x3'));var BPromise=require(_0xcb89('0x4'));var rp=require(_0xcb89('0x5'));var fs=require('fs');var path=require(_0xcb89('0x6'));var rimraf=require(_0xcb89('0x7'));var config=require(_0xcb89('0x8'));var attributes=require(_0xcb89('0x9'));module['exports']=function(_0x35983b,_0xae90e3){return _0x35983b[_0xcb89('0xa')](_0xcb89('0xb'),attributes,{'tableName':'report_integration','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x615c=['./integrationReport.attributes','exports','report_integration','lodash','util','../../config/logger','bluebird','path','rimraf','../../config/environment'];(function(_0x43747e,_0x13b832){var _0x7fb853=function(_0x4b1028){while(--_0x4b1028){_0x43747e['push'](_0x43747e['shift']());}};_0x7fb853(++_0x13b832);}(_0x615c,0x193));var _0xc615=function(_0x367a3d,_0x452717){_0x367a3d=_0x367a3d-0x0;var _0x460539=_0x615c[_0x367a3d];return _0x460539;};'use strict';var _=require(_0xc615('0x0'));var util=require(_0xc615('0x1'));var logger=require(_0xc615('0x2'))('api');var moment=require('moment');var BPromise=require(_0xc615('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc615('0x4'));var rimraf=require(_0xc615('0x5'));var config=require(_0xc615('0x6'));var attributes=require(_0xc615('0x7'));module[_0xc615('0x8')]=function(_0x1645fb,_0xba0e3a){return _0x1645fb['define']('IntegrationReport',attributes,{'tableName':_0xc615('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a628dad..81ad81e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','lodash','util'];(function(_0x1897be,_0x1ab064){var _0x30b007=function(_0x1f84c3){while(--_0x1f84c3){_0x1897be['push'](_0x1897be['shift']());}};_0x30b007(++_0x1ab064);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x2e4aa2,_0x11956a){_0x2e4aa2=_0x2e4aa2-0x0;var _0x5e6092=_0xc4aa[_0x2e4aa2];return _0x5e6092;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('IntegrationReport,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}
\ No newline at end of file
+var _0xadb5=['error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','IntegrationReport,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x327b49,_0xc232b8){var _0x4e7265=function(_0x4e99c1){while(--_0x4e99c1){_0x327b49['push'](_0x327b49['shift']());}};_0x4e7265(++_0xc232b8);}(_0xadb5,0xad));var _0x5adb=function(_0x417bb1,_0xa98277){_0x417bb1=_0x417bb1-0x0;var _0x265324=_0xadb5[_0x417bb1];return _0x265324;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var moment=require('moment');var BPromise=require(_0x5adb('0x1'));var rs=require(_0x5adb('0x2'));var fs=require('fs');var Redis=require(_0x5adb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5adb('0x4'));var logger=require(_0x5adb('0x5'))(_0x5adb('0x6'));var config=require('../../config/environment');var jayson=require(_0x5adb('0x7'));var client=jayson[_0x5adb('0x8')][_0x5adb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3213e8,_0xdf3776,_0x353885){return new BPromise(function(_0x47228a,_0x6d1b45){return client[_0x5adb('0xa')](_0x3213e8,_0x353885)[_0x5adb('0xb')](function(_0x34f59d){logger[_0x5adb('0xc')](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));logger['debug']('IntegrationReport,\x20%s,\x20%s,\x20%s',_0xdf3776,_0x5adb('0xe'),JSON[_0x5adb('0xf')](_0x34f59d));if(_0x34f59d[_0x5adb('0x10')]){if(_0x34f59d['error'][_0x5adb('0x11')]===0x1f4){logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d['error'][_0x5adb('0x12')]);return _0x6d1b45(_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);}logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);return _0x47228a(_0x34f59d['error'][_0x5adb('0x12')]);}else{logger['info'](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));_0x47228a(_0x34f59d[_0x5adb('0x13')][_0x5adb('0x12')]);}})[_0x5adb('0x14')](function(_0x39d24d){logger[_0x5adb('0x10')](_0x5adb('0xd'),_0xdf3776,_0x39d24d);_0x6d1b45(_0x39d24d);});});}
\ No newline at end of file
index a8563e6..89bcc48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf006=['addIntervals','put','/:id','update','destroy','exports','path','connect-timeout','Router','../../components/auth/service','./interval.controller','get','isAuthenticated','show','/:id/sub_intervals','getIntervals','post','create','addInterval','/:id/sub_intervals/create_many'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0xf006,0x146));var _0x6f00=function(_0x5b1208,_0x958935){_0x5b1208=_0x5b1208-0x0;var _0x34c899=_0xf006[_0x5b1208];return _0x34c899;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x6f00('0x0'));var timeout=require(_0x6f00('0x1'));var express=require('express');var router=express[_0x6f00('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x6f00('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x6f00('0x4'));router[_0x6f00('0x5')]('/',auth[_0x6f00('0x6')](),controller['index']);router[_0x6f00('0x5')]('/:id',auth[_0x6f00('0x6')](),controller[_0x6f00('0x7')]);router[_0x6f00('0x5')](_0x6f00('0x8'),auth[_0x6f00('0x6')](),controller[_0x6f00('0x9')]);router[_0x6f00('0xa')]('/',auth[_0x6f00('0x6')](),controller[_0x6f00('0xb')]);router[_0x6f00('0xa')](_0x6f00('0x8'),auth[_0x6f00('0x6')](),controller[_0x6f00('0xc')]);router['post'](_0x6f00('0xd'),auth[_0x6f00('0x6')](),controller[_0x6f00('0xe')]);router[_0x6f00('0xf')](_0x6f00('0x10'),auth['isAuthenticated'](),controller[_0x6f00('0x11')]);router['delete'](_0x6f00('0x10'),auth['isAuthenticated'](),controller[_0x6f00('0x12')]);module[_0x6f00('0x13')]=router;
\ No newline at end of file
+var _0xf981=['isAuthenticated','show','/:id/sub_intervals','getIntervals','post','create','addInterval','/:id/sub_intervals/create_many','addIntervals','put','update','delete','destroy','multer','util','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./interval.controller','get'];(function(_0x23cd34,_0xe7e8f7){var _0x1e1e48=function(_0x820992){while(--_0x820992){_0x23cd34['push'](_0x23cd34['shift']());}};_0x1e1e48(++_0xe7e8f7);}(_0xf981,0x1af));var _0x1f98=function(_0x4d7be4,_0x393887){_0x4d7be4=_0x4d7be4-0x0;var _0x2b257c=_0xf981[_0x4d7be4];return _0x2b257c;};'use strict';var multer=require(_0x1f98('0x0'));var util=require(_0x1f98('0x1'));var path=require(_0x1f98('0x2'));var timeout=require('connect-timeout');var express=require(_0x1f98('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x1f98('0x4'));var interaction=require(_0x1f98('0x5'));var config=require(_0x1f98('0x6'));var controller=require(_0x1f98('0x7'));router[_0x1f98('0x8')]('/',auth[_0x1f98('0x9')](),controller['index']);router[_0x1f98('0x8')]('/:id',auth[_0x1f98('0x9')](),controller[_0x1f98('0xa')]);router['get'](_0x1f98('0xb'),auth[_0x1f98('0x9')](),controller[_0x1f98('0xc')]);router[_0x1f98('0xd')]('/',auth[_0x1f98('0x9')](),controller[_0x1f98('0xe')]);router[_0x1f98('0xd')](_0x1f98('0xb'),auth[_0x1f98('0x9')](),controller[_0x1f98('0xf')]);router['post'](_0x1f98('0x10'),auth['isAuthenticated'](),controller[_0x1f98('0x11')]);router[_0x1f98('0x12')]('/:id',auth[_0x1f98('0x9')](),controller[_0x1f98('0x13')]);router[_0x1f98('0x14')]('/:id',auth[_0x1f98('0x9')](),controller[_0x1f98('0x15')]);module['exports']=router;
\ No newline at end of file
index 84437ca..1d11e37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37b8=['exports','STRING','sequelize'];(function(_0x777a6b,_0x53d27a){var _0x52423d=function(_0x5a79b8){while(--_0x5a79b8){_0x777a6b['push'](_0x777a6b['shift']());}};_0x52423d(++_0x53d27a);}(_0x37b8,0x1e2));var _0x837b=function(_0x30fe3a,_0x26a088){_0x30fe3a=_0x30fe3a-0x0;var _0x5a08d2=_0x37b8[_0x30fe3a];return _0x5a08d2;};'use strict';var Sequelize=require(_0x837b('0x0'));module[_0x837b('0x1')]={'name':{'type':Sequelize[_0x837b('0x2')]},'description':{'type':Sequelize[_0x837b('0x2')]},'interval':{'type':Sequelize[_0x837b('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0x36cd=['exports','STRING'];(function(_0x173441,_0x26b0d9){var _0x2423a8=function(_0x4d96c2){while(--_0x4d96c2){_0x173441['push'](_0x173441['shift']());}};_0x2423a8(++_0x26b0d9);}(_0x36cd,0x1cc));var _0xd36c=function(_0x3ec69d,_0xf8aade){_0x3ec69d=_0x3ec69d-0x0;var _0x394c7e=_0x36cd[_0x3ec69d];return _0x394c7e;};'use strict';var Sequelize=require('sequelize');module[_0xd36c('0x0')]={'name':{'type':Sequelize[_0xd36c('0x1')]},'description':{'type':Sequelize[_0xd36c('0x1')]},'interval':{'type':Sequelize[_0xd36c('0x1')],'allowNull':!![]}};
\ No newline at end of file
index 45d5581..85069af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81a1=['params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','addInterval','IntervalId','sort','getIntervals','nolimit','addIntervals','findOne','sequelize','transaction','bulkCreate','eml-format','rimraf','zip-dir','moment','bluebird','util','path','ejs','lodash','squel','crypto','jsforce','to-csv','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/extensions/rewrite','sendStatus','status','undefined','limit','count','offset','Content-Range','save','destroy','then','get','Intervals','end','error','stack','name','send','index','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','pick','filter','where','merge','options','Interval','include','findAll','rows','catch','show'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x81a1,0x6e));var _0x181a=function(_0xeaa115,_0x564245){_0xeaa115=_0xeaa115-0x0;var _0x462593=_0x81a1[_0xeaa115];return _0x462593;};'use strict';var emlformat=require(_0x181a('0x0'));var rimraf=require(_0x181a('0x1'));var zipdir=require(_0x181a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x181a('0x3'));var BPromise=require(_0x181a('0x4'));var Mustache=require('mustache');var util=require(_0x181a('0x5'));var path=require(_0x181a('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x181a('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x181a('0x8'));var squel=require(_0x181a('0x9'));var crypto=require(_0x181a('0xa'));var jsforce=require(_0x181a('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x181a('0xc'));var querystring=require('querystring');var Papa=require(_0x181a('0xd'));var Redis=require('ioredis');var authService=require(_0x181a('0xe'));var qs=require(_0x181a('0xf'));var as=require(_0x181a('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x181a('0x11'))(_0x181a('0x12'));var utils=require('../../config/utils');var config=require(_0x181a('0x13'));var licenseUtil=require(_0x181a('0x14'));var db=require(_0x181a('0x15'))['db'];var extensions=require(_0x181a('0x16'));function respondWithStatusCode(_0x39f743,_0x3fa831){_0x3fa831=_0x3fa831||0xcc;return function(_0x5a62d5){if(_0x5a62d5){return _0x39f743[_0x181a('0x17')](_0x3fa831);}return _0x39f743[_0x181a('0x18')](_0x3fa831)['end']();};}function respondWithResult(_0x1c736c,_0x139b8c){_0x139b8c=_0x139b8c||0xc8;return function(_0x147f8a){if(_0x147f8a){return _0x1c736c[_0x181a('0x18')](_0x139b8c)['json'](_0x147f8a);}};}function respondWithFilteredResult(_0x40f9d0,_0x5cd533){return function(_0x22448d){if(_0x22448d){var _0x2e55c7=typeof _0x5cd533['offset']===_0x181a('0x19')&&typeof _0x5cd533[_0x181a('0x1a')]===_0x181a('0x19');var _0x4a2a9d=_0x22448d[_0x181a('0x1b')];var _0x4c2fd6=_0x2e55c7?0x0:_0x5cd533[_0x181a('0x1c')];var _0x4ad1e5=_0x2e55c7?_0x22448d[_0x181a('0x1b')]:_0x5cd533[_0x181a('0x1c')]+_0x5cd533[_0x181a('0x1a')];var _0x34cc0d;if(_0x4ad1e5>=_0x4a2a9d){_0x4ad1e5=_0x4a2a9d;_0x34cc0d=0xc8;}else{_0x34cc0d=0xce;}_0x40f9d0['status'](_0x34cc0d);return _0x40f9d0['set'](_0x181a('0x1d'),_0x4c2fd6+'-'+_0x4ad1e5+'/'+_0x4a2a9d)['json'](_0x22448d);}return null;};}function patchUpdates(_0x19a539){return function(_0x1bf397){try{jsonpatch['apply'](_0x1bf397,_0x19a539,!![]);}catch(_0x2001b9){return BPromise['reject'](_0x2001b9);}return _0x1bf397[_0x181a('0x1e')]();};}function saveUpdates(_0x1e74e9,_0x44f671){return function(_0x183347){if(_0x183347){return _0x183347['update'](_0x1e74e9)['then'](function(_0x477887){return _0x477887;});}return null;};}function removeEntity(_0x33fcf6,_0x20873f){return function(_0x2a81a3){if(_0x2a81a3){return _0x2a81a3[_0x181a('0x1f')]()[_0x181a('0x20')](function(){var _0x38fd54=_0x2a81a3[_0x181a('0x21')]({'plain':!![]});var _0x20e0b5=_0x181a('0x22');return db['UserProfileResource'][_0x181a('0x1f')]({'where':{'type':_0x20e0b5,'resourceId':_0x38fd54['id']}})[_0x181a('0x20')](function(){return _0x2a81a3;});})['then'](function(){_0x33fcf6[_0x181a('0x18')](0xcc)[_0x181a('0x23')]();});}};}function handleEntityNotFound(_0x1798cf,_0x1fe931){return function(_0x312d62){if(!_0x312d62){_0x1798cf[_0x181a('0x17')](0x194);}return _0x312d62;};}function handleError(_0x2ec397,_0x13f413){_0x13f413=_0x13f413||0x1f4;return function(_0x3aa86d){logger[_0x181a('0x24')](_0x3aa86d[_0x181a('0x25')]);if(_0x3aa86d[_0x181a('0x26')]){delete _0x3aa86d[_0x181a('0x26')];}_0x2ec397[_0x181a('0x18')](_0x13f413)[_0x181a('0x27')](_0x3aa86d);};}exports[_0x181a('0x28')]=function(_0x42bbaa,_0x2e496b){var _0x10cd76={},_0x2e6fee={},_0xa9c3d9={'count':0x0,'rows':[]};var _0x1ee45b=_[_0x181a('0x29')](db['Interval'][_0x181a('0x2a')],function(_0x4654be){return{'name':_0x4654be['fieldName'],'type':_0x4654be[_0x181a('0x2b')][_0x181a('0x2c')]};});_0x2e6fee[_0x181a('0x2d')]=_[_0x181a('0x29')](_0x1ee45b,_0x181a('0x26'));_0x2e6fee[_0x181a('0x2e')]=_[_0x181a('0x2f')](_0x42bbaa[_0x181a('0x2e')]);_0x2e6fee[_0x181a('0x30')]=_[_0x181a('0x31')](_0x2e6fee[_0x181a('0x2d')],_0x2e6fee[_0x181a('0x2e')]);_0x10cd76[_0x181a('0x32')]=_[_0x181a('0x31')](_0x2e6fee[_0x181a('0x2d')],qs[_0x181a('0x33')](_0x42bbaa[_0x181a('0x2e')]['fields']));_0x10cd76['attributes']=_0x10cd76['attributes'][_0x181a('0x34')]?_0x10cd76['attributes']:_0x2e6fee[_0x181a('0x2d')];if(!_0x42bbaa[_0x181a('0x2e')][_0x181a('0x35')]('nolimit')){_0x10cd76[_0x181a('0x1a')]=qs[_0x181a('0x1a')](_0x42bbaa[_0x181a('0x2e')][_0x181a('0x1a')]);_0x10cd76['offset']=qs[_0x181a('0x1c')](_0x42bbaa[_0x181a('0x2e')][_0x181a('0x1c')]);}_0x10cd76[_0x181a('0x36')]=qs['sort'](_0x42bbaa[_0x181a('0x2e')]['sort']);_0x10cd76['where']=qs[_0x181a('0x30')](_[_0x181a('0x37')](_0x42bbaa['query'],_0x2e6fee['filters']),_0x1ee45b);if(_0x42bbaa[_0x181a('0x2e')][_0x181a('0x38')]){_0x10cd76[_0x181a('0x39')]=_[_0x181a('0x3a')](_0x10cd76[_0x181a('0x39')],{'$or':_[_0x181a('0x29')](_0x1ee45b,function(_0x8ec634){if(_0x8ec634['type']!=='VIRTUAL'){var _0x1ac0ee={};_0x1ac0ee[_0x8ec634[_0x181a('0x26')]]={'$like':'%'+_0x42bbaa['query']['filter']+'%'};return _0x1ac0ee;}})});}_0x10cd76=_[_0x181a('0x3a')]({},_0x10cd76,_0x42bbaa[_0x181a('0x3b')]);var _0x5e02ed={'where':_0x10cd76[_0x181a('0x39')]};return db[_0x181a('0x3c')][_0x181a('0x1b')](_0x5e02ed)[_0x181a('0x20')](function(_0x528d37){_0xa9c3d9[_0x181a('0x1b')]=_0x528d37;if(_0x42bbaa['query']['includeAll']){_0x10cd76[_0x181a('0x3d')]=[{'all':!![]}];}return db[_0x181a('0x3c')][_0x181a('0x3e')](_0x10cd76);})[_0x181a('0x20')](function(_0x2a9c7b){_0xa9c3d9[_0x181a('0x3f')]=_0x2a9c7b;return _0xa9c3d9;})['then'](respondWithFilteredResult(_0x2e496b,_0x10cd76))[_0x181a('0x40')](handleError(_0x2e496b,null));};exports[_0x181a('0x41')]=function(_0x3e6b3d,_0x417823){var _0x11a706={'raw':!![],'where':{'id':_0x3e6b3d[_0x181a('0x42')]['id']}},_0x3165f3={};_0x3165f3[_0x181a('0x2d')]=_[_0x181a('0x2f')](db[_0x181a('0x3c')][_0x181a('0x2a')]);_0x3165f3[_0x181a('0x2e')]=_[_0x181a('0x2f')](_0x3e6b3d[_0x181a('0x2e')]);_0x3165f3['filters']=_['intersection'](_0x3165f3[_0x181a('0x2d')],_0x3165f3['query']);_0x11a706[_0x181a('0x32')]=_[_0x181a('0x31')](_0x3165f3['model'],qs[_0x181a('0x33')](_0x3e6b3d[_0x181a('0x2e')][_0x181a('0x33')]));_0x11a706['attributes']=_0x11a706['attributes']['length']?_0x11a706['attributes']:_0x3165f3[_0x181a('0x2d')];if(_0x3e6b3d['query']['includeAll']){_0x11a706['include']=[{'all':!![]}];}_0x11a706=_[_0x181a('0x3a')]({},_0x11a706,_0x3e6b3d[_0x181a('0x3b')]);return db[_0x181a('0x3c')][_0x181a('0x43')](_0x11a706)['then'](handleEntityNotFound(_0x417823,null))['then'](respondWithResult(_0x417823,null))[_0x181a('0x40')](handleError(_0x417823,null));};exports[_0x181a('0x44')]=function(_0x5eade3,_0x22c93c){return db[_0x181a('0x3c')][_0x181a('0x44')](_0x5eade3[_0x181a('0x45')],{})[_0x181a('0x20')](function(_0x3a46b8){var _0x3a29b1=_0x5eade3['user'][_0x181a('0x21')]({'plain':!![]});if(!_0x3a29b1)throw new Error(_0x181a('0x46'));if(_0x3a29b1[_0x181a('0x47')]===_0x181a('0x48')){var _0x5d7c7d=_0x3a46b8[_0x181a('0x21')]({'plain':!![]});var _0x4dae55=_0x181a('0x22');return db['UserProfileSection'][_0x181a('0x43')]({'where':{'name':_0x4dae55,'userProfileId':_0x3a29b1[_0x181a('0x49')]},'raw':!![]})['then'](function(_0x1b2614){if(_0x1b2614&&_0x1b2614[_0x181a('0x4a')]===0x0){return db[_0x181a('0x4b')][_0x181a('0x44')]({'name':_0x5d7c7d[_0x181a('0x26')],'resourceId':_0x5d7c7d['id'],'type':_0x1b2614[_0x181a('0x26')],'sectionId':_0x1b2614['id']},{})[_0x181a('0x20')](function(){return _0x3a46b8;});}else{return _0x3a46b8;}})[_0x181a('0x40')](function(_0x237b0f){logger[_0x181a('0x24')](_0x181a('0x4c'),_0x237b0f);throw _0x237b0f;});}return _0x3a46b8;})['then'](respondWithResult(_0x22c93c,0xc9))['catch'](handleError(_0x22c93c,null));};exports[_0x181a('0x4d')]=function(_0x312c39,_0x453b9c){if(_0x312c39[_0x181a('0x45')]['id']){delete _0x312c39[_0x181a('0x45')]['id'];}return db[_0x181a('0x3c')][_0x181a('0x43')]({'where':{'id':_0x312c39['params']['id']}})['then'](handleEntityNotFound(_0x453b9c,null))[_0x181a('0x20')](saveUpdates(_0x312c39[_0x181a('0x45')],null))[_0x181a('0x20')](respondWithResult(_0x453b9c,null))[_0x181a('0x40')](handleError(_0x453b9c,null));};exports[_0x181a('0x1f')]=function(_0xaead67,_0x5b1fb8){return db[_0x181a('0x3c')][_0x181a('0x43')]({'where':{'id':_0xaead67[_0x181a('0x42')]['id']}})[_0x181a('0x20')](handleEntityNotFound(_0x5b1fb8,null))[_0x181a('0x20')](removeEntity(_0x5b1fb8,null))['catch'](handleError(_0x5b1fb8,null));};exports[_0x181a('0x4e')]=function(_0x57733c,_0x108611,_0xa98ee7){if(_0x57733c['body']['id']){delete _0x57733c[_0x181a('0x45')]['id'];}return db[_0x181a('0x3c')][_0x181a('0x43')]({'where':{'id':_0x57733c[_0x181a('0x42')]['id']}})['then'](handleEntityNotFound(_0x108611,null))[_0x181a('0x20')](function(_0x3c602e){if(_0x3c602e){_0x57733c[_0x181a('0x45')][_0x181a('0x4f')]=_0x3c602e['id'];return db[_0x181a('0x3c')][_0x181a('0x44')](_0x57733c[_0x181a('0x45')]);}})[_0x181a('0x20')](respondWithResult(_0x108611,null))[_0x181a('0x40')](handleError(_0x108611,null));};exports['getIntervals']=function(_0x734459,_0x28483b,_0x3c4f20){var _0x9cdfb6={};var _0x4cbd27={};var _0x51ed30;var _0x4743c3;return db[_0x181a('0x3c')]['findOne']({'where':{'id':_0x734459[_0x181a('0x42')]['id']}})['then'](handleEntityNotFound(_0x28483b,null))[_0x181a('0x20')](function(_0x3af071){if(_0x3af071){_0x51ed30=_0x3af071;_0x4cbd27['model']=_[_0x181a('0x2f')](db[_0x181a('0x3c')][_0x181a('0x2a')]);_0x4cbd27[_0x181a('0x2e')]=_[_0x181a('0x2f')](_0x734459['query']);_0x4cbd27[_0x181a('0x30')]=_[_0x181a('0x31')](_0x4cbd27[_0x181a('0x2d')],_0x4cbd27[_0x181a('0x2e')]);_0x9cdfb6[_0x181a('0x32')]=_[_0x181a('0x31')](_0x4cbd27[_0x181a('0x2d')],qs[_0x181a('0x33')](_0x734459['query'][_0x181a('0x33')]));_0x9cdfb6[_0x181a('0x32')]=_0x9cdfb6[_0x181a('0x32')][_0x181a('0x34')]?_0x9cdfb6[_0x181a('0x32')]:_0x4cbd27[_0x181a('0x2d')];_0x9cdfb6[_0x181a('0x36')]=qs[_0x181a('0x50')](_0x734459[_0x181a('0x2e')][_0x181a('0x50')]);_0x9cdfb6['where']=qs[_0x181a('0x30')](_['pick'](_0x734459[_0x181a('0x2e')],_0x4cbd27[_0x181a('0x30')]));if(_0x734459['query'][_0x181a('0x38')]){_0x9cdfb6['where']=_[_0x181a('0x3a')](_0x9cdfb6[_0x181a('0x39')],{'$or':_[_0x181a('0x29')](_0x9cdfb6[_0x181a('0x32')],function(_0x197e9b){var _0x7a36a1={};_0x7a36a1[_0x197e9b]={'$like':'%'+_0x734459[_0x181a('0x2e')]['filter']+'%'};return _0x7a36a1;})});}_0x9cdfb6=_[_0x181a('0x3a')]({},_0x9cdfb6,_0x734459[_0x181a('0x3b')]);return _0x51ed30[_0x181a('0x51')](_0x9cdfb6);}})['then'](function(_0x27a557){if(_0x27a557){_0x4743c3=_0x27a557[_0x181a('0x34')];if(!_0x734459[_0x181a('0x2e')][_0x181a('0x35')](_0x181a('0x52'))){_0x9cdfb6['limit']=qs[_0x181a('0x1a')](_0x734459[_0x181a('0x2e')][_0x181a('0x1a')]);_0x9cdfb6['offset']=qs[_0x181a('0x1c')](_0x734459[_0x181a('0x2e')][_0x181a('0x1c')]);}return _0x51ed30[_0x181a('0x51')](_0x9cdfb6);}})[_0x181a('0x20')](function(_0x32edea){if(_0x32edea){return _0x32edea?{'count':_0x4743c3,'rows':_0x32edea}:null;}})['then'](respondWithResult(_0x28483b,null))['catch'](handleError(_0x28483b,null));};exports[_0x181a('0x53')]=function(_0x3f192e,_0x5101e0,_0x935af0){return db['Interval'][_0x181a('0x54')]({'where':{'id':_0x3f192e[_0x181a('0x42')]['id']}})[_0x181a('0x20')](handleEntityNotFound(_0x5101e0,null))[_0x181a('0x20')](function(_0x3ca509){if(_0x3ca509){return db[_0x181a('0x55')][_0x181a('0x56')](function(_0x1424ae){return db[_0x181a('0x3c')][_0x181a('0x1f')]({'where':{'IntervalId':_0x3f192e['params']['id']},'transaction':_0x1424ae})['then'](function(_0x2e6c5b){var _0x51f8b3=_[_0x181a('0x29')](_0x3f192e[_0x181a('0x45')],function(_0x172902){delete _0x172902['id'];_0x172902[_0x181a('0x4f')]=_0x3f192e['params']['id'];return _0x172902;});return db['Interval'][_0x181a('0x57')](_0x51f8b3,{'transaction':_0x1424ae});});})[_0x181a('0x20')](function(){return db[_0x181a('0x3c')]['findAll']({'where':{'IntervalId':_0x3f192e[_0x181a('0x42')]['id']}});});}})[_0x181a('0x20')](respondWithResult(_0x5101e0,null))[_0x181a('0x40')](handleError(_0x5101e0,null));};
\ No newline at end of file
+var _0x859a=['get','Intervals','UserProfileResource','name','send','index','Interval','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','includeAll','include','findAll','catch','params','keys','options','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','IntervalId','getIntervals','findOne','addIntervals','sequelize','transaction','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','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','../../components/extensions/rewrite','sendStatus','end','status','json','offset','undefined','count','limit','apply','save','update','then','destroy'];(function(_0x5de923,_0x2db5ad){var _0x32fb09=function(_0x559ec7){while(--_0x559ec7){_0x5de923['push'](_0x5de923['shift']());}};_0x32fb09(++_0x2db5ad);}(_0x859a,0x136));var _0xa859=function(_0x185d66,_0x250fe2){_0x185d66=_0x185d66-0x0;var _0x4de318=_0x859a[_0x185d66];return _0x4de318;};'use strict';var emlformat=require(_0xa859('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa859('0x1'));var jsonpatch=require(_0xa859('0x2'));var rp=require(_0xa859('0x3'));var moment=require(_0xa859('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xa859('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xa859('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa859('0x7'));var _=require(_0xa859('0x8'));var squel=require(_0xa859('0x9'));var crypto=require(_0xa859('0xa'));var jsforce=require(_0xa859('0xb'));var deskjs=require(_0xa859('0xc'));var toCsv=require('to-csv');var querystring=require(_0xa859('0xd'));var Papa=require('papaparse');var Redis=require(_0xa859('0xe'));var authService=require(_0xa859('0xf'));var qs=require(_0xa859('0x10'));var as=require(_0xa859('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa859('0x12'))(_0xa859('0x13'));var utils=require(_0xa859('0x14'));var config=require(_0xa859('0x15'));var licenseUtil=require(_0xa859('0x16'));var db=require(_0xa859('0x17'))['db'];var extensions=require(_0xa859('0x18'));function respondWithStatusCode(_0x933f0,_0x41af7a){_0x41af7a=_0x41af7a||0xcc;return function(_0x53ca9b){if(_0x53ca9b){return _0x933f0[_0xa859('0x19')](_0x41af7a);}return _0x933f0['status'](_0x41af7a)[_0xa859('0x1a')]();};}function respondWithResult(_0x3dc014,_0x5ca838){_0x5ca838=_0x5ca838||0xc8;return function(_0x28d44e){if(_0x28d44e){return _0x3dc014[_0xa859('0x1b')](_0x5ca838)[_0xa859('0x1c')](_0x28d44e);}};}function respondWithFilteredResult(_0x122bfa,_0x4724e5){return function(_0x167224){if(_0x167224){var _0x9dde91=typeof _0x4724e5[_0xa859('0x1d')]===_0xa859('0x1e')&&typeof _0x4724e5['limit']==='undefined';var _0x8c1995=_0x167224[_0xa859('0x1f')];var _0x268d26=_0x9dde91?0x0:_0x4724e5[_0xa859('0x1d')];var _0x48d9aa=_0x9dde91?_0x167224[_0xa859('0x1f')]:_0x4724e5[_0xa859('0x1d')]+_0x4724e5[_0xa859('0x20')];var _0x26e11d;if(_0x48d9aa>=_0x8c1995){_0x48d9aa=_0x8c1995;_0x26e11d=0xc8;}else{_0x26e11d=0xce;}_0x122bfa[_0xa859('0x1b')](_0x26e11d);return _0x122bfa['set']('Content-Range',_0x268d26+'-'+_0x48d9aa+'/'+_0x8c1995)[_0xa859('0x1c')](_0x167224);}return null;};}function patchUpdates(_0x226625){return function(_0x21f830){try{jsonpatch[_0xa859('0x21')](_0x21f830,_0x226625,!![]);}catch(_0x14bc65){return BPromise['reject'](_0x14bc65);}return _0x21f830[_0xa859('0x22')]();};}function saveUpdates(_0x1ca902,_0x2505ef){return function(_0x2d37f7){if(_0x2d37f7){return _0x2d37f7[_0xa859('0x23')](_0x1ca902)[_0xa859('0x24')](function(_0x219faa){return _0x219faa;});}return null;};}function removeEntity(_0x382203,_0x2dddaa){return function(_0x38b60e){if(_0x38b60e){return _0x38b60e[_0xa859('0x25')]()[_0xa859('0x24')](function(){var _0x2dc5d8=_0x38b60e[_0xa859('0x26')]({'plain':!![]});var _0x2c03a4=_0xa859('0x27');return db[_0xa859('0x28')][_0xa859('0x25')]({'where':{'type':_0x2c03a4,'resourceId':_0x2dc5d8['id']}})[_0xa859('0x24')](function(){return _0x38b60e;});})[_0xa859('0x24')](function(){_0x382203['status'](0xcc)[_0xa859('0x1a')]();});}};}function handleEntityNotFound(_0x4bf9c0,_0x478da7){return function(_0x34d1a8){if(!_0x34d1a8){_0x4bf9c0[_0xa859('0x19')](0x194);}return _0x34d1a8;};}function handleError(_0x1c4035,_0x309ebf){_0x309ebf=_0x309ebf||0x1f4;return function(_0x4c9c65){logger['error'](_0x4c9c65['stack']);if(_0x4c9c65[_0xa859('0x29')]){delete _0x4c9c65[_0xa859('0x29')];}_0x1c4035['status'](_0x309ebf)[_0xa859('0x2a')](_0x4c9c65);};}exports[_0xa859('0x2b')]=function(_0x474690,_0x441809){var _0x273c2b={},_0x1292a1={},_0x3b6f39={'count':0x0,'rows':[]};var _0x432f7e=_['map'](db[_0xa859('0x2c')][_0xa859('0x2d')],function(_0x101159){return{'name':_0x101159[_0xa859('0x2e')],'type':_0x101159[_0xa859('0x2f')][_0xa859('0x30')]};});_0x1292a1[_0xa859('0x31')]=_[_0xa859('0x32')](_0x432f7e,_0xa859('0x29'));_0x1292a1[_0xa859('0x33')]=_['keys'](_0x474690['query']);_0x1292a1[_0xa859('0x34')]=_[_0xa859('0x35')](_0x1292a1[_0xa859('0x31')],_0x1292a1['query']);_0x273c2b[_0xa859('0x36')]=_[_0xa859('0x35')](_0x1292a1[_0xa859('0x31')],qs[_0xa859('0x37')](_0x474690[_0xa859('0x33')][_0xa859('0x37')]));_0x273c2b[_0xa859('0x36')]=_0x273c2b[_0xa859('0x36')][_0xa859('0x38')]?_0x273c2b[_0xa859('0x36')]:_0x1292a1[_0xa859('0x31')];if(!_0x474690[_0xa859('0x33')][_0xa859('0x39')](_0xa859('0x3a'))){_0x273c2b['limit']=qs[_0xa859('0x20')](_0x474690[_0xa859('0x33')]['limit']);_0x273c2b[_0xa859('0x1d')]=qs[_0xa859('0x1d')](_0x474690[_0xa859('0x33')][_0xa859('0x1d')]);}_0x273c2b[_0xa859('0x3b')]=qs[_0xa859('0x3c')](_0x474690[_0xa859('0x33')][_0xa859('0x3c')]);_0x273c2b[_0xa859('0x3d')]=qs[_0xa859('0x34')](_[_0xa859('0x3e')](_0x474690[_0xa859('0x33')],_0x1292a1[_0xa859('0x34')]),_0x432f7e);if(_0x474690[_0xa859('0x33')]['filter']){_0x273c2b[_0xa859('0x3d')]=_[_0xa859('0x3f')](_0x273c2b[_0xa859('0x3d')],{'$or':_[_0xa859('0x32')](_0x432f7e,function(_0x395a2a){if(_0x395a2a[_0xa859('0x2f')]!=='VIRTUAL'){var _0x5c58bb={};_0x5c58bb[_0x395a2a['name']]={'$like':'%'+_0x474690[_0xa859('0x33')][_0xa859('0x40')]+'%'};return _0x5c58bb;}})});}_0x273c2b=_[_0xa859('0x3f')]({},_0x273c2b,_0x474690['options']);var _0x56153e={'where':_0x273c2b[_0xa859('0x3d')]};return db['Interval'][_0xa859('0x1f')](_0x56153e)[_0xa859('0x24')](function(_0x284d20){_0x3b6f39[_0xa859('0x1f')]=_0x284d20;if(_0x474690[_0xa859('0x33')][_0xa859('0x41')]){_0x273c2b[_0xa859('0x42')]=[{'all':!![]}];}return db[_0xa859('0x2c')][_0xa859('0x43')](_0x273c2b);})[_0xa859('0x24')](function(_0x20cae2){_0x3b6f39['rows']=_0x20cae2;return _0x3b6f39;})[_0xa859('0x24')](respondWithFilteredResult(_0x441809,_0x273c2b))[_0xa859('0x44')](handleError(_0x441809,null));};exports['show']=function(_0x1c685b,_0x1043c9){var _0x4b01f5={'raw':!![],'where':{'id':_0x1c685b[_0xa859('0x45')]['id']}},_0xe30161={};_0xe30161['model']=_['keys'](db[_0xa859('0x2c')][_0xa859('0x2d')]);_0xe30161['query']=_[_0xa859('0x46')](_0x1c685b[_0xa859('0x33')]);_0xe30161[_0xa859('0x34')]=_[_0xa859('0x35')](_0xe30161[_0xa859('0x31')],_0xe30161['query']);_0x4b01f5[_0xa859('0x36')]=_['intersection'](_0xe30161['model'],qs[_0xa859('0x37')](_0x1c685b[_0xa859('0x33')][_0xa859('0x37')]));_0x4b01f5[_0xa859('0x36')]=_0x4b01f5[_0xa859('0x36')][_0xa859('0x38')]?_0x4b01f5['attributes']:_0xe30161[_0xa859('0x31')];if(_0x1c685b[_0xa859('0x33')][_0xa859('0x41')]){_0x4b01f5[_0xa859('0x42')]=[{'all':!![]}];}_0x4b01f5=_[_0xa859('0x3f')]({},_0x4b01f5,_0x1c685b[_0xa859('0x47')]);return db[_0xa859('0x2c')][_0xa859('0x48')](_0x4b01f5)[_0xa859('0x24')](handleEntityNotFound(_0x1043c9,null))[_0xa859('0x24')](respondWithResult(_0x1043c9,null))['catch'](handleError(_0x1043c9,null));};exports[_0xa859('0x49')]=function(_0x259529,_0x248582){return db['Interval'][_0xa859('0x49')](_0x259529[_0xa859('0x4a')],{})[_0xa859('0x24')](function(_0x5e4622){var _0x5ef8d1=_0x259529['user'][_0xa859('0x26')]({'plain':!![]});if(!_0x5ef8d1)throw new Error(_0xa859('0x4b'));if(_0x5ef8d1[_0xa859('0x4c')]==='user'){var _0x57b6b0=_0x5e4622['get']({'plain':!![]});var _0x55f6ef='Intervals';return db['UserProfileSection'][_0xa859('0x48')]({'where':{'name':_0x55f6ef,'userProfileId':_0x5ef8d1[_0xa859('0x4d')]},'raw':!![]})['then'](function(_0x155853){if(_0x155853&&_0x155853[_0xa859('0x4e')]===0x0){return db[_0xa859('0x28')][_0xa859('0x49')]({'name':_0x57b6b0[_0xa859('0x29')],'resourceId':_0x57b6b0['id'],'type':_0x155853[_0xa859('0x29')],'sectionId':_0x155853['id']},{})[_0xa859('0x24')](function(){return _0x5e4622;});}else{return _0x5e4622;}})[_0xa859('0x44')](function(_0x2ec9bb){logger[_0xa859('0x4f')](_0xa859('0x50'),_0x2ec9bb);throw _0x2ec9bb;});}return _0x5e4622;})['then'](respondWithResult(_0x248582,0xc9))[_0xa859('0x44')](handleError(_0x248582,null));};exports[_0xa859('0x23')]=function(_0x9e5c4a,_0x474337){if(_0x9e5c4a[_0xa859('0x4a')]['id']){delete _0x9e5c4a[_0xa859('0x4a')]['id'];}return db[_0xa859('0x2c')]['find']({'where':{'id':_0x9e5c4a['params']['id']}})[_0xa859('0x24')](handleEntityNotFound(_0x474337,null))['then'](saveUpdates(_0x9e5c4a[_0xa859('0x4a')],null))[_0xa859('0x24')](respondWithResult(_0x474337,null))[_0xa859('0x44')](handleError(_0x474337,null));};exports[_0xa859('0x25')]=function(_0x5e2858,_0xc5612){return db[_0xa859('0x2c')][_0xa859('0x48')]({'where':{'id':_0x5e2858[_0xa859('0x45')]['id']}})['then'](handleEntityNotFound(_0xc5612,null))[_0xa859('0x24')](removeEntity(_0xc5612,null))[_0xa859('0x44')](handleError(_0xc5612,null));};exports['addInterval']=function(_0x351305,_0x4f1292,_0xa778fa){if(_0x351305[_0xa859('0x4a')]['id']){delete _0x351305['body']['id'];}return db[_0xa859('0x2c')][_0xa859('0x48')]({'where':{'id':_0x351305[_0xa859('0x45')]['id']}})[_0xa859('0x24')](handleEntityNotFound(_0x4f1292,null))['then'](function(_0x11f094){if(_0x11f094){_0x351305[_0xa859('0x4a')][_0xa859('0x51')]=_0x11f094['id'];return db[_0xa859('0x2c')][_0xa859('0x49')](_0x351305[_0xa859('0x4a')]);}})[_0xa859('0x24')](respondWithResult(_0x4f1292,null))[_0xa859('0x44')](handleError(_0x4f1292,null));};exports[_0xa859('0x52')]=function(_0x1ff16b,_0x1e78ce,_0x5e16fa){var _0x32e1eb={};var _0x8c31c3={};var _0x1183bb;var _0x26b921;return db['Interval'][_0xa859('0x53')]({'where':{'id':_0x1ff16b[_0xa859('0x45')]['id']}})[_0xa859('0x24')](handleEntityNotFound(_0x1e78ce,null))[_0xa859('0x24')](function(_0xddb00d){if(_0xddb00d){_0x1183bb=_0xddb00d;_0x8c31c3[_0xa859('0x31')]=_['keys'](db[_0xa859('0x2c')][_0xa859('0x2d')]);_0x8c31c3[_0xa859('0x33')]=_[_0xa859('0x46')](_0x1ff16b['query']);_0x8c31c3[_0xa859('0x34')]=_[_0xa859('0x35')](_0x8c31c3['model'],_0x8c31c3[_0xa859('0x33')]);_0x32e1eb[_0xa859('0x36')]=_[_0xa859('0x35')](_0x8c31c3[_0xa859('0x31')],qs[_0xa859('0x37')](_0x1ff16b[_0xa859('0x33')][_0xa859('0x37')]));_0x32e1eb[_0xa859('0x36')]=_0x32e1eb[_0xa859('0x36')][_0xa859('0x38')]?_0x32e1eb[_0xa859('0x36')]:_0x8c31c3[_0xa859('0x31')];_0x32e1eb[_0xa859('0x3b')]=qs['sort'](_0x1ff16b[_0xa859('0x33')][_0xa859('0x3c')]);_0x32e1eb[_0xa859('0x3d')]=qs['filters'](_[_0xa859('0x3e')](_0x1ff16b[_0xa859('0x33')],_0x8c31c3[_0xa859('0x34')]));if(_0x1ff16b['query'][_0xa859('0x40')]){_0x32e1eb[_0xa859('0x3d')]=_[_0xa859('0x3f')](_0x32e1eb[_0xa859('0x3d')],{'$or':_['map'](_0x32e1eb['attributes'],function(_0xb5c750){var _0x1b8b56={};_0x1b8b56[_0xb5c750]={'$like':'%'+_0x1ff16b[_0xa859('0x33')][_0xa859('0x40')]+'%'};return _0x1b8b56;})});}_0x32e1eb=_[_0xa859('0x3f')]({},_0x32e1eb,_0x1ff16b[_0xa859('0x47')]);return _0x1183bb[_0xa859('0x52')](_0x32e1eb);}})['then'](function(_0x26c2ec){if(_0x26c2ec){_0x26b921=_0x26c2ec[_0xa859('0x38')];if(!_0x1ff16b[_0xa859('0x33')][_0xa859('0x39')]('nolimit')){_0x32e1eb[_0xa859('0x20')]=qs[_0xa859('0x20')](_0x1ff16b[_0xa859('0x33')][_0xa859('0x20')]);_0x32e1eb[_0xa859('0x1d')]=qs['offset'](_0x1ff16b[_0xa859('0x33')][_0xa859('0x1d')]);}return _0x1183bb['getIntervals'](_0x32e1eb);}})['then'](function(_0x4afc6f){if(_0x4afc6f){return _0x4afc6f?{'count':_0x26b921,'rows':_0x4afc6f}:null;}})[_0xa859('0x24')](respondWithResult(_0x1e78ce,null))[_0xa859('0x44')](handleError(_0x1e78ce,null));};exports[_0xa859('0x54')]=function(_0x3716d7,_0x31559c,_0x223887){return db[_0xa859('0x2c')][_0xa859('0x53')]({'where':{'id':_0x3716d7[_0xa859('0x45')]['id']}})[_0xa859('0x24')](handleEntityNotFound(_0x31559c,null))[_0xa859('0x24')](function(_0x2895c2){if(_0x2895c2){return db[_0xa859('0x55')][_0xa859('0x56')](function(_0x15bd59){return db[_0xa859('0x2c')][_0xa859('0x25')]({'where':{'IntervalId':_0x3716d7['params']['id']},'transaction':_0x15bd59})['then'](function(_0x2db748){var _0x8d4ee8=_[_0xa859('0x32')](_0x3716d7[_0xa859('0x4a')],function(_0x386793){delete _0x386793['id'];_0x386793[_0xa859('0x51')]=_0x3716d7[_0xa859('0x45')]['id'];return _0x386793;});return db['Interval']['bulkCreate'](_0x8d4ee8,{'transaction':_0x15bd59});});})[_0xa859('0x24')](function(){return db[_0xa859('0x2c')]['findAll']({'where':{'IntervalId':_0x3716d7['params']['id']}});});}})[_0xa859('0x24')](respondWithResult(_0x31559c,null))[_0xa859('0x44')](handleError(_0x31559c,null));};
\ No newline at end of file
index 0d55c54..b9209b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32c2=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','../../components/extensions/rewrite','exports','define','Interval','tools_intervals','rewrite','lodash','util'];(function(_0x311909,_0x414bf7){var _0x8d3163=function(_0x226f55){while(--_0x226f55){_0x311909['push'](_0x311909['shift']());}};_0x8d3163(++_0x414bf7);}(_0x32c2,0x1c0));var _0x232c=function(_0xefb203,_0x253b72){_0xefb203=_0xefb203-0x0;var _0x1bf1bd=_0x32c2[_0xefb203];return _0x1bf1bd;};'use strict';var _=require(_0x232c('0x0'));var util=require(_0x232c('0x1'));var logger=require(_0x232c('0x2'))(_0x232c('0x3'));var moment=require(_0x232c('0x4'));var BPromise=require(_0x232c('0x5'));var rp=require(_0x232c('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x232c('0x7'));var config=require(_0x232c('0x8'));var attributes=require('./interval.attributes');var extensions=require(_0x232c('0x9'));module[_0x232c('0xa')]=function(_0x5f4107,_0x310bbf){return _0x5f4107[_0x232c('0xb')](_0x232c('0xc'),attributes,{'tableName':_0x232c('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x16cb66,_0x4c7083){extensions['rewrite'](_0x5f4107,_0x16cb66);},'afterBulkCreate':function(_0x2546f1,_0x16849e,_0x22c8cc){_0x22c8cc();extensions[_0x232c('0xe')](_0x5f4107,_0x2546f1[0x0]);},'afterUpdate':function(_0x4b35ae,_0x5639ef){extensions[_0x232c('0xe')](_0x5f4107,_0x4b35ae);},'afterDestroy':function(_0x567faa,_0x30a3ee){extensions[_0x232c('0xe')](_0x5f4107,_0x567faa);}}});};
\ No newline at end of file
+var _0x8a8c=['request-promise','path','../../config/environment','exports','define','Interval','tools_intervals','rewrite','lodash','util','../../config/logger','bluebird'];(function(_0x2c0467,_0x1b83aa){var _0x2b999b=function(_0x18275d){while(--_0x18275d){_0x2c0467['push'](_0x2c0467['shift']());}};_0x2b999b(++_0x1b83aa);}(_0x8a8c,0x1a0));var _0xc8a8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8a8c[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xc8a8('0x0'));var util=require(_0xc8a8('0x1'));var logger=require(_0xc8a8('0x2'))('api');var moment=require('moment');var BPromise=require(_0xc8a8('0x3'));var rp=require(_0xc8a8('0x4'));var fs=require('fs');var path=require(_0xc8a8('0x5'));var rimraf=require('rimraf');var config=require(_0xc8a8('0x6'));var attributes=require('./interval.attributes');var extensions=require('../../components/extensions/rewrite');module[_0xc8a8('0x7')]=function(_0xdda027,_0xd60f2f){return _0xdda027[_0xc8a8('0x8')](_0xc8a8('0x9'),attributes,{'tableName':_0xc8a8('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x468160,_0x38f3bb){extensions[_0xc8a8('0xb')](_0xdda027,_0x468160);},'afterBulkCreate':function(_0x4232f9,_0x19647b,_0x3af1a8){_0x3af1a8();extensions['rewrite'](_0xdda027,_0x4232f9[0x0]);},'afterUpdate':function(_0x4772a0,_0x37bb4e){extensions[_0xc8a8('0xb')](_0xdda027,_0x4772a0);},'afterDestroy':function(_0x193095,_0xe3e057){extensions[_0xc8a8('0xb')](_0xdda027,_0x193095);}}});};
\ No newline at end of file
index 2cd2629..26acf1f 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(_0x209bbf,_0x2e2375){var _0x592d4b=function(_0x419947){while(--_0x419947){_0x209bbf['push'](_0x209bbf['shift']());}};_0x592d4b(++_0x2e2375);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0xa9e0[_0x47a7d0];return _0xb9bd08;};'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(_0x5b1c50,_0x56e694){var _0x2d379b=function(_0x981b9c){while(--_0x981b9c){_0x5b1c50['push'](_0x5b1c50['shift']());}};_0x2d379b(++_0x56e694);}(_0xa9e0,0x123));var _0x0a9e=function(_0x934425,_0x5af72f){_0x934425=_0x934425-0x0;var _0x31d596=_0xa9e0[_0x934425];return _0x31d596;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}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 23e5c4a..d180626 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['./jira.controller','post','send','exports','express','../../components/auth/service'];(function(_0x39096d,_0x51f8a0){var _0x13da4f=function(_0x11e6b2){while(--_0x11e6b2){_0x39096d['push'](_0x39096d['shift']());}};_0x13da4f(++_0x51f8a0);}(_0xb10b,0x12a));var _0xbb10=function(_0x21dd50,_0x921f70){_0x21dd50=_0x21dd50-0x0;var _0x1b7d5e=_0xb10b[_0x21dd50];return _0x1b7d5e;};'use strict';var express=require(_0xbb10('0x0'));var router=express['Router']();var auth=require(_0xbb10('0x1'));var controller=require(_0xbb10('0x2'));router[_0xbb10('0x3')]('/',auth['isAuthenticated'](),controller[_0xbb10('0x4')]);module[_0xbb10('0x5')]=router;
\ No newline at end of file
+var _0xb10b=['./jira.controller','post','send','exports','express','../../components/auth/service'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0xb10b,0x12a));var _0xbb10=function(_0x19efbc,_0x10b7d7){_0x19efbc=_0x19efbc-0x0;var _0x205c5e=_0xb10b[_0x19efbc];return _0x205c5e;};'use strict';var express=require(_0xbb10('0x0'));var router=express['Router']();var auth=require(_0xbb10('0x1'));var controller=require(_0xbb10('0x2'));router[_0xbb10('0x3')]('/',auth['isAuthenticated'](),controller[_0xbb10('0x4')]);module[_0xbb10('0x5')]=router;
\ No newline at end of file
index 7583c3b..27945df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81ff=['Bug','fields','customfield_11500','email','oldToken','customfield_11502','newToken','name','customfield_11504','customfield_10102','track.xcallymotion.com','POST','Basic\x20','base64','request','setEncoding','end','status','statusCode','json','parse','error','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','send','connection','remoteAddress','socket','body','bluebird','https','../../config/logger','api','support','3eAmWpBVP0','key','MOTGUI','\x20from\x20','stringify'];(function(_0x4b49c9,_0x290d55){var _0xab2d67=function(_0x3a8e9c){while(--_0x3a8e9c){_0x4b49c9['push'](_0x4b49c9['shift']());}};_0xab2d67(++_0x290d55);}(_0x81ff,0xb9));var _0xf81f=function(_0x28e53a,_0x266519){_0x28e53a=_0x28e53a-0x0;var _0x1caa4a=_0x81ff[_0x28e53a];return _0x1caa4a;};'use strict';var BPromise=require(_0xf81f('0x0'));var https=require(_0xf81f('0x1'));var logger=require(_0xf81f('0x2'))(_0xf81f('0x3'));var USERNAME=_0xf81f('0x4');var PASSWORD=_0xf81f('0x5');function openIssue(_0x13bd31,_0x27c409){var _0x2244d8={'fields':{'project':{'key':_0x13bd31[_0xf81f('0x6')]||_0xf81f('0x7')},'summary':(_0x13bd31['summary']||'Report')+_0xf81f('0x8')+_0x13bd31['ip'],'description':_0x13bd31['description']||JSON[_0xf81f('0x9')](_0x13bd31),'issuetype':{'name':_0x13bd31['issuetype']||_0xf81f('0xa')}}};_0x2244d8[_0xf81f('0xb')][_0xf81f('0xc')]=_0x13bd31[_0xf81f('0xd')];_0x2244d8[_0xf81f('0xb')]['customfield_11501']=_0x13bd31[_0xf81f('0xe')];_0x2244d8[_0xf81f('0xb')][_0xf81f('0xf')]=_0x13bd31[_0xf81f('0x10')];_0x2244d8[_0xf81f('0xb')]['customfield_11503']=_0x13bd31[_0xf81f('0x11')];_0x2244d8[_0xf81f('0xb')][_0xf81f('0x12')]=_0x13bd31['reason'];_0x2244d8[_0xf81f('0xb')][_0xf81f('0x13')]=_0x13bd31['ip'];var _0x54e17d={'host':_0xf81f('0x14'),'port':0x1bb,'path':'/rest/api/2/issue','method':_0xf81f('0x15'),'timeout':0x4e20,'headers':{'Content-Type':'application/json','Authorization':_0xf81f('0x16')+new Buffer(USERNAME+':'+PASSWORD)['toString'](_0xf81f('0x17'))}};var _0x31b47c=JSON[_0xf81f('0x9')](_0x2244d8);var _0x500498=https[_0xf81f('0x18')](_0x54e17d,function(_0x798dae){_0x798dae[_0xf81f('0x19')]('utf8');var _0x54481a='';_0x798dae['on']('data',function(_0x2abd8d){_0x54481a+=_0x2abd8d;});_0x798dae['on'](_0xf81f('0x1a'),function(){if(_0x27c409){return _0x27c409[_0xf81f('0x1b')](_0x798dae[_0xf81f('0x1c')])[_0xf81f('0x1d')](JSON[_0xf81f('0x1e')](_0x54481a));}});});_0x500498['on'](_0xf81f('0x1f'),function(_0x737557){if(_0x27c409){return _0x27c409['status'](0x1f4)['json']({'errors':[{'message':_0xf81f('0x20'),'type':_0xf81f('0x21')}]});}});_0x500498['write'](_0x31b47c);_0x500498[_0xf81f('0x1a')]();}exports['openIssue']=openIssue;exports[_0xf81f('0x22')]=function(_0x28d7fe,_0x129b93){_0x28d7fe['body']['ip']=_0x28d7fe['headers']['x-forwarded-for']||_0x28d7fe[_0xf81f('0x23')][_0xf81f('0x24')]||_0x28d7fe['socket'][_0xf81f('0x24')]||_0x28d7fe['connection'][_0xf81f('0x25')]['remoteAddress'];return openIssue(_0x28d7fe[_0xf81f('0x26')],_0x129b93);};
\ No newline at end of file
+var _0xd606=['connection','bluebird','https','api','support','3eAmWpBVP0','key','MOTGUI','Report','stringify','issuetype','Bug','fields','customfield_11500','email','oldToken','customfield_11502','newToken','customfield_11503','name','customfield_11504','reason','customfield_10102','track.xcallymotion.com','Basic\x20','toString','base64','request','setEncoding','utf8','end','status','statusCode','json','parse','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','openIssue','send','body','headers','x-forwarded-for','remoteAddress','socket'];(function(_0x35290b,_0x4ec7f8){var _0x523384=function(_0x107c39){while(--_0x107c39){_0x35290b['push'](_0x35290b['shift']());}};_0x523384(++_0x4ec7f8);}(_0xd606,0x135));var _0x6d60=function(_0x439bed,_0x56a7f0){_0x439bed=_0x439bed-0x0;var _0x10edc0=_0xd606[_0x439bed];return _0x10edc0;};'use strict';var BPromise=require(_0x6d60('0x0'));var https=require(_0x6d60('0x1'));var logger=require('../../config/logger')(_0x6d60('0x2'));var USERNAME=_0x6d60('0x3');var PASSWORD=_0x6d60('0x4');function openIssue(_0x45807d,_0x274f35){var _0x1de455={'fields':{'project':{'key':_0x45807d[_0x6d60('0x5')]||_0x6d60('0x6')},'summary':(_0x45807d['summary']||_0x6d60('0x7'))+'\x20from\x20'+_0x45807d['ip'],'description':_0x45807d['description']||JSON[_0x6d60('0x8')](_0x45807d),'issuetype':{'name':_0x45807d[_0x6d60('0x9')]||_0x6d60('0xa')}}};_0x1de455[_0x6d60('0xb')][_0x6d60('0xc')]=_0x45807d[_0x6d60('0xd')];_0x1de455['fields']['customfield_11501']=_0x45807d[_0x6d60('0xe')];_0x1de455[_0x6d60('0xb')][_0x6d60('0xf')]=_0x45807d[_0x6d60('0x10')];_0x1de455[_0x6d60('0xb')][_0x6d60('0x11')]=_0x45807d[_0x6d60('0x12')];_0x1de455[_0x6d60('0xb')][_0x6d60('0x13')]=_0x45807d[_0x6d60('0x14')];_0x1de455['fields'][_0x6d60('0x15')]=_0x45807d['ip'];var _0x5002d2={'host':_0x6d60('0x16'),'port':0x1bb,'path':'/rest/api/2/issue','method':'POST','timeout':0x4e20,'headers':{'Content-Type':'application/json','Authorization':_0x6d60('0x17')+new Buffer(USERNAME+':'+PASSWORD)[_0x6d60('0x18')](_0x6d60('0x19'))}};var _0x1818fb=JSON[_0x6d60('0x8')](_0x1de455);var _0x42c8cc=https[_0x6d60('0x1a')](_0x5002d2,function(_0x20e503){_0x20e503[_0x6d60('0x1b')](_0x6d60('0x1c'));var _0x230dfa='';_0x20e503['on']('data',function(_0x133534){_0x230dfa+=_0x133534;});_0x20e503['on'](_0x6d60('0x1d'),function(){if(_0x274f35){return _0x274f35[_0x6d60('0x1e')](_0x20e503[_0x6d60('0x1f')])[_0x6d60('0x20')](JSON[_0x6d60('0x21')](_0x230dfa));}});});_0x42c8cc['on']('error',function(_0x2be7d8){if(_0x274f35){return _0x274f35[_0x6d60('0x1e')](0x1f4)[_0x6d60('0x20')]({'errors':[{'message':_0x6d60('0x22'),'type':_0x6d60('0x23')}]});}});_0x42c8cc['write'](_0x1818fb);_0x42c8cc[_0x6d60('0x1d')]();}exports[_0x6d60('0x24')]=openIssue;exports[_0x6d60('0x25')]=function(_0x381463,_0x59ad5a){_0x381463[_0x6d60('0x26')]['ip']=_0x381463[_0x6d60('0x27')][_0x6d60('0x28')]||_0x381463['connection'][_0x6d60('0x29')]||_0x381463[_0x6d60('0x2a')][_0x6d60('0x29')]||_0x381463[_0x6d60('0x2b')][_0x6d60('0x2a')]['remoteAddress'];return openIssue(_0x381463[_0x6d60('0x26')],_0x59ad5a);};
\ No newline at end of file
index f2facef..8bd7df3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['./jscriptyAnswerReport.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','exports','multer','Router','../../components/interaction/service','../../config/environment'];(function(_0x316ca6,_0x1b1764){var _0x56ca34=function(_0x59f395){while(--_0x59f395){_0x316ca6['push'](_0x316ca6['shift']());}};_0x56ca34(++_0x1b1764);}(_0xf4eb,0xec));var _0xbf4e=function(_0x3dfab7,_0x320db5){_0x3dfab7=_0x3dfab7-0x0;var _0x3fdfc9=_0xf4eb[_0x3dfab7];return _0x3fdfc9;};'use strict';var multer=require(_0xbf4e('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xbf4e('0x1')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xbf4e('0x2'));var config=require(_0xbf4e('0x3'));var controller=require(_0xbf4e('0x4'));router[_0xbf4e('0x5')]('/',auth[_0xbf4e('0x6')](),controller[_0xbf4e('0x7')]);router[_0xbf4e('0x5')]('/describe',auth[_0xbf4e('0x6')](),controller['describe']);router['get'](_0xbf4e('0x8'),auth[_0xbf4e('0x6')](),controller[_0xbf4e('0x9')]);router[_0xbf4e('0xa')]('/',auth[_0xbf4e('0x6')](),controller[_0xbf4e('0xb')]);router[_0xbf4e('0xc')]('/:id',auth['isAuthenticated'](),controller[_0xbf4e('0xd')]);router['delete'](_0xbf4e('0x8'),auth[_0xbf4e('0x6')](),controller['destroy']);module[_0xbf4e('0xe')]=router;
\ No newline at end of file
+var _0xa74f=['/describe','isAuthenticated','describe','show','post','put','/:id','update','delete','exports','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptyAnswerReport.controller','index','get'];(function(_0x2345cc,_0x61aa6b){var _0x538643=function(_0x2a4c12){while(--_0x2a4c12){_0x2345cc['push'](_0x2345cc['shift']());}};_0x538643(++_0x61aa6b);}(_0xa74f,0x9a));var _0xfa74=function(_0x2bf466,_0x4929a5){_0x2bf466=_0x2bf466-0x0;var _0x856885=_0xa74f[_0x2bf466];return _0x856885;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xfa74('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xfa74('0x1')]();var fs_extra=require(_0xfa74('0x2'));var auth=require(_0xfa74('0x3'));var interaction=require(_0xfa74('0x4'));var config=require('../../config/environment');var controller=require(_0xfa74('0x5'));router['get']('/',auth['isAuthenticated'](),controller[_0xfa74('0x6')]);router[_0xfa74('0x7')](_0xfa74('0x8'),auth[_0xfa74('0x9')](),controller[_0xfa74('0xa')]);router[_0xfa74('0x7')]('/:id',auth[_0xfa74('0x9')](),controller[_0xfa74('0xb')]);router[_0xfa74('0xc')]('/',auth[_0xfa74('0x9')](),controller['create']);router[_0xfa74('0xd')](_0xfa74('0xe'),auth['isAuthenticated'](),controller[_0xfa74('0xf')]);router[_0xfa74('0x10')](_0xfa74('0xe'),auth[_0xfa74('0x9')](),controller['destroy']);module[_0xfa74('0x11')]=router;
\ No newline at end of file
index d789996..1c9311b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x36c5b0,_0x5001da){var _0xf19333=function(_0x1e880a){while(--_0x1e880a){_0x36c5b0['push'](_0x36c5b0['shift']());}};_0xf19333(++_0x5001da);}(_0x7a54,0x106));var _0x47a5=function(_0xeec77,_0x51c330){_0xeec77=_0xeec77-0x0;var _0x44ddc7=_0x7a54[_0xeec77];return _0x44ddc7;};'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(_0x5c2e3e,_0x26ecd3){var _0x53f64a=function(_0x2b5df8){while(--_0x2b5df8){_0x5c2e3e['push'](_0x5c2e3e['shift']());}};_0x53f64a(++_0x26ecd3);}(_0x7a54,0x106));var _0x47a5=function(_0x361c41,_0x5a87c2){_0x361c41=_0x361c41-0x0;var _0xeba087=_0x7a54[_0x361c41];return _0xeba087;};'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 c51c95b..bcb114c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42b0=['update','destroy','then','stack','name','send','index','JscriptyAnswerReport','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','count','include','rows','catch','show','params','includeAll','create','body','find','describe','eml-format','rimraf','fast-json-patch','moment','util','path','sox','to-csv','ejs','squel','crypto','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','json','offset','undefined','limit','set','apply','reject','save'];(function(_0x12f502,_0x17b594){var _0x8dd5e5=function(_0x5259e3){while(--_0x5259e3){_0x12f502['push'](_0x12f502['shift']());}};_0x8dd5e5(++_0x17b594);}(_0x42b0,0xbc));var _0x042b=function(_0x43e53b,_0xc4f07c){_0x43e53b=_0x43e53b-0x0;var _0x5deb08=_0x42b0[_0x43e53b];return _0x5deb08;};'use strict';var emlformat=require(_0x042b('0x0'));var rimraf=require(_0x042b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x042b('0x2'));var rp=require('request-promise');var moment=require(_0x042b('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x042b('0x4'));var path=require(_0x042b('0x5'));var sox=require(_0x042b('0x6'));var csv=require(_0x042b('0x7'));var ejs=require(_0x042b('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x042b('0x9'));var crypto=require(_0x042b('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x042b('0x7'));var querystring=require('querystring');var Papa=require(_0x042b('0xb'));var Redis=require('ioredis');var authService=require(_0x042b('0xc'));var qs=require(_0x042b('0xd'));var as=require(_0x042b('0xe'));var hardwareService=require(_0x042b('0xf'));var logger=require(_0x042b('0x10'))(_0x042b('0x11'));var utils=require(_0x042b('0x12'));var config=require(_0x042b('0x13'));var licenseUtil=require(_0x042b('0x14'));var db=require(_0x042b('0x15'))['db'];function respondWithStatusCode(_0x2c0a6f,_0x35414e){_0x35414e=_0x35414e||0xcc;return function(_0x950ed9){if(_0x950ed9){return _0x2c0a6f['sendStatus'](_0x35414e);}return _0x2c0a6f[_0x042b('0x16')](_0x35414e)['end']();};}function respondWithResult(_0x1e5626,_0x5681bd){_0x5681bd=_0x5681bd||0xc8;return function(_0x31c22e){if(_0x31c22e){return _0x1e5626[_0x042b('0x16')](_0x5681bd)[_0x042b('0x17')](_0x31c22e);}};}function respondWithFilteredResult(_0xf9f4f3,_0x30c86f){return function(_0x183225){if(_0x183225){var _0x4dc4a6=typeof _0x30c86f[_0x042b('0x18')]===_0x042b('0x19')&&typeof _0x30c86f[_0x042b('0x1a')]===_0x042b('0x19');var _0x1e4eee=_0x183225['count'];var _0x2e2cb6=_0x4dc4a6?0x0:_0x30c86f[_0x042b('0x18')];var _0x4b5c25=_0x4dc4a6?_0x183225['count']:_0x30c86f[_0x042b('0x18')]+_0x30c86f[_0x042b('0x1a')];var _0x561d06;if(_0x4b5c25>=_0x1e4eee){_0x4b5c25=_0x1e4eee;_0x561d06=0xc8;}else{_0x561d06=0xce;}_0xf9f4f3[_0x042b('0x16')](_0x561d06);return _0xf9f4f3[_0x042b('0x1b')]('Content-Range',_0x2e2cb6+'-'+_0x4b5c25+'/'+_0x1e4eee)['json'](_0x183225);}return null;};}function patchUpdates(_0x5e6d8a){return function(_0x4eec67){try{jsonpatch[_0x042b('0x1c')](_0x4eec67,_0x5e6d8a,!![]);}catch(_0x23c915){return BPromise[_0x042b('0x1d')](_0x23c915);}return _0x4eec67[_0x042b('0x1e')]();};}function saveUpdates(_0x336c40,_0x50be84){return function(_0x36fabf){if(_0x36fabf){return _0x36fabf[_0x042b('0x1f')](_0x336c40)['then'](function(_0x5bc416){return _0x5bc416;});}return null;};}function removeEntity(_0x434d21,_0x59af51){return function(_0x558889){if(_0x558889){return _0x558889[_0x042b('0x20')]()[_0x042b('0x21')](function(){_0x434d21['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3204fc,_0x2f6e67){return function(_0x3c5491){if(!_0x3c5491){_0x3204fc['sendStatus'](0x194);}return _0x3c5491;};}function handleError(_0xda0462,_0x45d2c6){_0x45d2c6=_0x45d2c6||0x1f4;return function(_0x1b1250){logger['error'](_0x1b1250[_0x042b('0x22')]);if(_0x1b1250[_0x042b('0x23')]){delete _0x1b1250['name'];}_0xda0462[_0x042b('0x16')](_0x45d2c6)[_0x042b('0x24')](_0x1b1250);};}exports[_0x042b('0x25')]=function(_0x39596c,_0x52e467){var _0x5b5fe7={},_0x572d6a={},_0x5c0c41={'count':0x0,'rows':[]};var _0x34bb9e=_['map'](db[_0x042b('0x26')][_0x042b('0x27')],function(_0xddc276){return{'name':_0xddc276[_0x042b('0x28')],'type':_0xddc276[_0x042b('0x29')][_0x042b('0x2a')]};});_0x572d6a[_0x042b('0x2b')]=_[_0x042b('0x2c')](_0x34bb9e,_0x042b('0x23'));_0x572d6a[_0x042b('0x2d')]=_[_0x042b('0x2e')](_0x39596c[_0x042b('0x2d')]);_0x572d6a[_0x042b('0x2f')]=_[_0x042b('0x30')](_0x572d6a[_0x042b('0x2b')],_0x572d6a[_0x042b('0x2d')]);_0x5b5fe7['attributes']=_[_0x042b('0x30')](_0x572d6a[_0x042b('0x2b')],qs[_0x042b('0x31')](_0x39596c[_0x042b('0x2d')][_0x042b('0x31')]));_0x5b5fe7[_0x042b('0x32')]=_0x5b5fe7['attributes'][_0x042b('0x33')]?_0x5b5fe7[_0x042b('0x32')]:_0x572d6a['model'];if(!_0x39596c[_0x042b('0x2d')][_0x042b('0x34')](_0x042b('0x35'))){_0x5b5fe7[_0x042b('0x1a')]=qs['limit'](_0x39596c[_0x042b('0x2d')][_0x042b('0x1a')]);_0x5b5fe7[_0x042b('0x18')]=qs[_0x042b('0x18')](_0x39596c[_0x042b('0x2d')]['offset']);}_0x5b5fe7[_0x042b('0x36')]=qs[_0x042b('0x37')](_0x39596c[_0x042b('0x2d')]['sort']);_0x5b5fe7[_0x042b('0x38')]=qs['filters'](_[_0x042b('0x39')](_0x39596c[_0x042b('0x2d')],_0x572d6a['filters']),_0x34bb9e);if(_0x39596c[_0x042b('0x2d')][_0x042b('0x3a')]){_0x5b5fe7['where']=_['merge'](_0x5b5fe7[_0x042b('0x38')],{'$or':_[_0x042b('0x2c')](_0x34bb9e,function(_0x4aa81d){if(_0x4aa81d[_0x042b('0x29')]!==_0x042b('0x3b')){var _0x1f38c2={};_0x1f38c2[_0x4aa81d['name']]={'$like':'%'+_0x39596c['query'][_0x042b('0x3a')]+'%'};return _0x1f38c2;}})});}_0x5b5fe7=_[_0x042b('0x3c')]({},_0x5b5fe7,_0x39596c[_0x042b('0x3d')]);var _0x296b35={'where':_0x5b5fe7['where']};return db['JscriptyAnswerReport'][_0x042b('0x3e')](_0x296b35)['then'](function(_0x220653){_0x5c0c41['count']=_0x220653;if(_0x39596c[_0x042b('0x2d')]['includeAll']){_0x5b5fe7[_0x042b('0x3f')]=[{'all':!![]}];}return db[_0x042b('0x26')]['findAll'](_0x5b5fe7);})[_0x042b('0x21')](function(_0x5471fa){_0x5c0c41[_0x042b('0x40')]=_0x5471fa;return _0x5c0c41;})['then'](respondWithFilteredResult(_0x52e467,_0x5b5fe7))[_0x042b('0x41')](handleError(_0x52e467,null));};exports[_0x042b('0x42')]=function(_0x1a9245,_0x4ee3a4){var _0x527f49={'raw':!![],'where':{'id':_0x1a9245[_0x042b('0x43')]['id']}},_0x1fb824={};_0x1fb824[_0x042b('0x2b')]=_[_0x042b('0x2e')](db[_0x042b('0x26')][_0x042b('0x27')]);_0x1fb824[_0x042b('0x2d')]=_[_0x042b('0x2e')](_0x1a9245[_0x042b('0x2d')]);_0x1fb824[_0x042b('0x2f')]=_['intersection'](_0x1fb824[_0x042b('0x2b')],_0x1fb824[_0x042b('0x2d')]);_0x527f49[_0x042b('0x32')]=_[_0x042b('0x30')](_0x1fb824['model'],qs['fields'](_0x1a9245[_0x042b('0x2d')]['fields']));_0x527f49[_0x042b('0x32')]=_0x527f49[_0x042b('0x32')][_0x042b('0x33')]?_0x527f49['attributes']:_0x1fb824[_0x042b('0x2b')];if(_0x1a9245[_0x042b('0x2d')][_0x042b('0x44')]){_0x527f49[_0x042b('0x3f')]=[{'all':!![]}];}_0x527f49=_[_0x042b('0x3c')]({},_0x527f49,_0x1a9245[_0x042b('0x3d')]);return db[_0x042b('0x26')]['find'](_0x527f49)[_0x042b('0x21')](handleEntityNotFound(_0x4ee3a4,null))['then'](respondWithResult(_0x4ee3a4,null))[_0x042b('0x41')](handleError(_0x4ee3a4,null));};exports[_0x042b('0x45')]=function(_0x533862,_0x37488a){return db[_0x042b('0x26')][_0x042b('0x45')](_0x533862[_0x042b('0x46')],{})[_0x042b('0x21')](respondWithResult(_0x37488a,0xc9))[_0x042b('0x41')](handleError(_0x37488a,null));};exports[_0x042b('0x1f')]=function(_0x476eda,_0x48fe3e){if(_0x476eda[_0x042b('0x46')]['id']){delete _0x476eda[_0x042b('0x46')]['id'];}return db[_0x042b('0x26')][_0x042b('0x47')]({'where':{'id':_0x476eda[_0x042b('0x43')]['id']}})['then'](handleEntityNotFound(_0x48fe3e,null))['then'](saveUpdates(_0x476eda['body'],null))[_0x042b('0x21')](respondWithResult(_0x48fe3e,null))[_0x042b('0x41')](handleError(_0x48fe3e,null));};exports[_0x042b('0x20')]=function(_0x396da4,_0x261c87){return db['JscriptyAnswerReport']['find']({'where':{'id':_0x396da4[_0x042b('0x43')]['id']}})['then'](handleEntityNotFound(_0x261c87,null))['then'](removeEntity(_0x261c87,null))[_0x042b('0x41')](handleError(_0x261c87,null));};exports['describe']=function(_0x15e46f,_0x170056){return db[_0x042b('0x26')][_0x042b('0x48')]()['then'](respondWithResult(_0x170056,null))[_0x042b('0x41')](handleError(_0x170056,null));};
\ No newline at end of file
+var _0xdcc4=['params','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','Content-Range','json','apply','reject','save','update','then','destroy','stack','name','send','index','map','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','JscriptyAnswerReport','includeAll','include','findAll','show'];(function(_0x533c1d,_0x5604c5){var _0x2f9e1c=function(_0x3764d0){while(--_0x3764d0){_0x533c1d['push'](_0x533c1d['shift']());}};_0x2f9e1c(++_0x5604c5);}(_0xdcc4,0xea));var _0x4dcc=function(_0x1ad81a,_0x52afad){_0x1ad81a=_0x1ad81a-0x0;var _0x499832=_0xdcc4[_0x1ad81a];return _0x499832;};'use strict';var emlformat=require(_0x4dcc('0x0'));var rimraf=require(_0x4dcc('0x1'));var zipdir=require(_0x4dcc('0x2'));var jsonpatch=require(_0x4dcc('0x3'));var rp=require(_0x4dcc('0x4'));var moment=require('moment');var BPromise=require(_0x4dcc('0x5'));var Mustache=require(_0x4dcc('0x6'));var util=require(_0x4dcc('0x7'));var path=require(_0x4dcc('0x8'));var sox=require(_0x4dcc('0x9'));var csv=require(_0x4dcc('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4dcc('0xb'));var _=require('lodash');var squel=require(_0x4dcc('0xc'));var crypto=require(_0x4dcc('0xd'));var jsforce=require(_0x4dcc('0xe'));var deskjs=require(_0x4dcc('0xf'));var toCsv=require('to-csv');var querystring=require(_0x4dcc('0x10'));var Papa=require(_0x4dcc('0x11'));var Redis=require(_0x4dcc('0x12'));var authService=require(_0x4dcc('0x13'));var qs=require(_0x4dcc('0x14'));var as=require(_0x4dcc('0x15'));var hardwareService=require(_0x4dcc('0x16'));var logger=require(_0x4dcc('0x17'))('api');var utils=require(_0x4dcc('0x18'));var config=require(_0x4dcc('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x4dcc('0x1a'))['db'];function respondWithStatusCode(_0x20013a,_0x49cfbb){_0x49cfbb=_0x49cfbb||0xcc;return function(_0x5cc1d1){if(_0x5cc1d1){return _0x20013a[_0x4dcc('0x1b')](_0x49cfbb);}return _0x20013a[_0x4dcc('0x1c')](_0x49cfbb)[_0x4dcc('0x1d')]();};}function respondWithResult(_0xa28755,_0x3760c9){_0x3760c9=_0x3760c9||0xc8;return function(_0x62a437){if(_0x62a437){return _0xa28755[_0x4dcc('0x1c')](_0x3760c9)['json'](_0x62a437);}};}function respondWithFilteredResult(_0x4cb7f0,_0x26c28c){return function(_0x407072){if(_0x407072){var _0xde3a5f=typeof _0x26c28c[_0x4dcc('0x1e')]===_0x4dcc('0x1f')&&typeof _0x26c28c['limit']===_0x4dcc('0x1f');var _0x387523=_0x407072['count'];var _0x4ba591=_0xde3a5f?0x0:_0x26c28c['offset'];var _0x418392=_0xde3a5f?_0x407072[_0x4dcc('0x20')]:_0x26c28c['offset']+_0x26c28c[_0x4dcc('0x21')];var _0x3fbb60;if(_0x418392>=_0x387523){_0x418392=_0x387523;_0x3fbb60=0xc8;}else{_0x3fbb60=0xce;}_0x4cb7f0[_0x4dcc('0x1c')](_0x3fbb60);return _0x4cb7f0['set'](_0x4dcc('0x22'),_0x4ba591+'-'+_0x418392+'/'+_0x387523)[_0x4dcc('0x23')](_0x407072);}return null;};}function patchUpdates(_0x39209e){return function(_0x2eb5ec){try{jsonpatch[_0x4dcc('0x24')](_0x2eb5ec,_0x39209e,!![]);}catch(_0x444387){return BPromise[_0x4dcc('0x25')](_0x444387);}return _0x2eb5ec[_0x4dcc('0x26')]();};}function saveUpdates(_0x1b2834,_0x1ed6d0){return function(_0x235f4f){if(_0x235f4f){return _0x235f4f[_0x4dcc('0x27')](_0x1b2834)[_0x4dcc('0x28')](function(_0x9007cc){return _0x9007cc;});}return null;};}function removeEntity(_0xdeab92,_0xc1c37b){return function(_0x537f32){if(_0x537f32){return _0x537f32[_0x4dcc('0x29')]()[_0x4dcc('0x28')](function(){_0xdeab92[_0x4dcc('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x35470e,_0x589149){return function(_0x3a548a){if(!_0x3a548a){_0x35470e[_0x4dcc('0x1b')](0x194);}return _0x3a548a;};}function handleError(_0x558419,_0x3853ae){_0x3853ae=_0x3853ae||0x1f4;return function(_0x2afff8){logger['error'](_0x2afff8[_0x4dcc('0x2a')]);if(_0x2afff8[_0x4dcc('0x2b')]){delete _0x2afff8['name'];}_0x558419['status'](_0x3853ae)[_0x4dcc('0x2c')](_0x2afff8);};}exports[_0x4dcc('0x2d')]=function(_0x160805,_0x562d1f){var _0x30c617={},_0x5c2464={},_0x2ffac7={'count':0x0,'rows':[]};var _0x279524=_[_0x4dcc('0x2e')](db['JscriptyAnswerReport'][_0x4dcc('0x2f')],function(_0x4dd2e6){return{'name':_0x4dd2e6['fieldName'],'type':_0x4dd2e6[_0x4dcc('0x30')]['key']};});_0x5c2464[_0x4dcc('0x31')]=_[_0x4dcc('0x2e')](_0x279524,_0x4dcc('0x2b'));_0x5c2464[_0x4dcc('0x32')]=_[_0x4dcc('0x33')](_0x160805[_0x4dcc('0x32')]);_0x5c2464[_0x4dcc('0x34')]=_[_0x4dcc('0x35')](_0x5c2464[_0x4dcc('0x31')],_0x5c2464[_0x4dcc('0x32')]);_0x30c617[_0x4dcc('0x36')]=_['intersection'](_0x5c2464['model'],qs[_0x4dcc('0x37')](_0x160805['query'][_0x4dcc('0x37')]));_0x30c617[_0x4dcc('0x36')]=_0x30c617[_0x4dcc('0x36')][_0x4dcc('0x38')]?_0x30c617[_0x4dcc('0x36')]:_0x5c2464[_0x4dcc('0x31')];if(!_0x160805[_0x4dcc('0x32')][_0x4dcc('0x39')]('nolimit')){_0x30c617[_0x4dcc('0x21')]=qs['limit'](_0x160805[_0x4dcc('0x32')]['limit']);_0x30c617[_0x4dcc('0x1e')]=qs['offset'](_0x160805[_0x4dcc('0x32')][_0x4dcc('0x1e')]);}_0x30c617[_0x4dcc('0x3a')]=qs[_0x4dcc('0x3b')](_0x160805[_0x4dcc('0x32')]['sort']);_0x30c617[_0x4dcc('0x3c')]=qs['filters'](_[_0x4dcc('0x3d')](_0x160805[_0x4dcc('0x32')],_0x5c2464[_0x4dcc('0x34')]),_0x279524);if(_0x160805[_0x4dcc('0x32')][_0x4dcc('0x3e')]){_0x30c617[_0x4dcc('0x3c')]=_[_0x4dcc('0x3f')](_0x30c617[_0x4dcc('0x3c')],{'$or':_[_0x4dcc('0x2e')](_0x279524,function(_0x42d534){if(_0x42d534[_0x4dcc('0x30')]!==_0x4dcc('0x40')){var _0x4d4b92={};_0x4d4b92[_0x42d534['name']]={'$like':'%'+_0x160805[_0x4dcc('0x32')][_0x4dcc('0x3e')]+'%'};return _0x4d4b92;}})});}_0x30c617=_[_0x4dcc('0x3f')]({},_0x30c617,_0x160805['options']);var _0x478343={'where':_0x30c617['where']};return db[_0x4dcc('0x41')]['count'](_0x478343)['then'](function(_0x12d859){_0x2ffac7[_0x4dcc('0x20')]=_0x12d859;if(_0x160805[_0x4dcc('0x32')][_0x4dcc('0x42')]){_0x30c617[_0x4dcc('0x43')]=[{'all':!![]}];}return db[_0x4dcc('0x41')][_0x4dcc('0x44')](_0x30c617);})[_0x4dcc('0x28')](function(_0x5ec283){_0x2ffac7['rows']=_0x5ec283;return _0x2ffac7;})[_0x4dcc('0x28')](respondWithFilteredResult(_0x562d1f,_0x30c617))['catch'](handleError(_0x562d1f,null));};exports[_0x4dcc('0x45')]=function(_0x5545ed,_0x2cc3f7){var _0x4f3fa4={'raw':!![],'where':{'id':_0x5545ed[_0x4dcc('0x46')]['id']}},_0x34edc0={};_0x34edc0['model']=_[_0x4dcc('0x33')](db[_0x4dcc('0x41')][_0x4dcc('0x2f')]);_0x34edc0['query']=_[_0x4dcc('0x33')](_0x5545ed[_0x4dcc('0x32')]);_0x34edc0[_0x4dcc('0x34')]=_[_0x4dcc('0x35')](_0x34edc0[_0x4dcc('0x31')],_0x34edc0[_0x4dcc('0x32')]);_0x4f3fa4[_0x4dcc('0x36')]=_['intersection'](_0x34edc0[_0x4dcc('0x31')],qs[_0x4dcc('0x37')](_0x5545ed[_0x4dcc('0x32')]['fields']));_0x4f3fa4[_0x4dcc('0x36')]=_0x4f3fa4[_0x4dcc('0x36')]['length']?_0x4f3fa4[_0x4dcc('0x36')]:_0x34edc0[_0x4dcc('0x31')];if(_0x5545ed[_0x4dcc('0x32')][_0x4dcc('0x42')]){_0x4f3fa4[_0x4dcc('0x43')]=[{'all':!![]}];}_0x4f3fa4=_[_0x4dcc('0x3f')]({},_0x4f3fa4,_0x5545ed['options']);return db[_0x4dcc('0x41')][_0x4dcc('0x47')](_0x4f3fa4)[_0x4dcc('0x28')](handleEntityNotFound(_0x2cc3f7,null))['then'](respondWithResult(_0x2cc3f7,null))[_0x4dcc('0x48')](handleError(_0x2cc3f7,null));};exports['create']=function(_0x481b0c,_0x346afd){return db['JscriptyAnswerReport'][_0x4dcc('0x49')](_0x481b0c[_0x4dcc('0x4a')],{})[_0x4dcc('0x28')](respondWithResult(_0x346afd,0xc9))['catch'](handleError(_0x346afd,null));};exports[_0x4dcc('0x27')]=function(_0x53e1f1,_0x33f80c){if(_0x53e1f1['body']['id']){delete _0x53e1f1[_0x4dcc('0x4a')]['id'];}return db[_0x4dcc('0x41')]['find']({'where':{'id':_0x53e1f1[_0x4dcc('0x46')]['id']}})[_0x4dcc('0x28')](handleEntityNotFound(_0x33f80c,null))[_0x4dcc('0x28')](saveUpdates(_0x53e1f1[_0x4dcc('0x4a')],null))[_0x4dcc('0x28')](respondWithResult(_0x33f80c,null))[_0x4dcc('0x48')](handleError(_0x33f80c,null));};exports[_0x4dcc('0x29')]=function(_0x5970fb,_0x222ec8){return db[_0x4dcc('0x41')][_0x4dcc('0x47')]({'where':{'id':_0x5970fb[_0x4dcc('0x46')]['id']}})[_0x4dcc('0x28')](handleEntityNotFound(_0x222ec8,null))['then'](removeEntity(_0x222ec8,null))[_0x4dcc('0x48')](handleError(_0x222ec8,null));};exports[_0x4dcc('0x4b')]=function(_0x10968e,_0x3302bf){return db[_0x4dcc('0x41')][_0x4dcc('0x4b')]()[_0x4dcc('0x28')](respondWithResult(_0x3302bf,null))['catch'](handleError(_0x3302bf,null));};
\ No newline at end of file
index ab78fcf..c164c61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde6f=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./jscriptyAnswerReport.attributes','exports','define','JscriptyAnswerReport','report_jscripty_answers'];(function(_0xb415fc,_0x5f4555){var _0x5d05ba=function(_0xab932e){while(--_0xab932e){_0xb415fc['push'](_0xb415fc['shift']());}};_0x5d05ba(++_0x5f4555);}(_0xde6f,0x84));var _0xfde6=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xde6f[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xfde6('0x0'))(_0xfde6('0x1'));var moment=require(_0xfde6('0x2'));var BPromise=require('bluebird');var rp=require(_0xfde6('0x3'));var fs=require('fs');var path=require(_0xfde6('0x4'));var rimraf=require(_0xfde6('0x5'));var config=require(_0xfde6('0x6'));var attributes=require(_0xfde6('0x7'));module[_0xfde6('0x8')]=function(_0x50d21a,_0x5628ea){return _0x50d21a[_0xfde6('0x9')](_0xfde6('0xa'),attributes,{'tableName':_0xfde6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x996a=['define','report_jscripty_answers','lodash','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./jscriptyAnswerReport.attributes','exports'];(function(_0x202df8,_0xb11ff1){var _0x3eefbb=function(_0x1ca249){while(--_0x1ca249){_0x202df8['push'](_0x202df8['shift']());}};_0x3eefbb(++_0xb11ff1);}(_0x996a,0x1e2));var _0xa996=function(_0x5ec582,_0x1f4a90){_0x5ec582=_0x5ec582-0x0;var _0x372b2e=_0x996a[_0x5ec582];return _0x372b2e;};'use strict';var _=require(_0xa996('0x0'));var util=require(_0xa996('0x1'));var logger=require(_0xa996('0x2'))('api');var moment=require(_0xa996('0x3'));var BPromise=require('bluebird');var rp=require(_0xa996('0x4'));var fs=require('fs');var path=require(_0xa996('0x5'));var rimraf=require(_0xa996('0x6'));var config=require(_0xa996('0x7'));var attributes=require(_0xa996('0x8'));module[_0xa996('0x9')]=function(_0x5a4254,_0x48d2a6){return _0x5a4254[_0xa996('0xa')]('JscriptyAnswerReport',attributes,{'tableName':_0xa996('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ee14af7..59053ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc27=['JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','http','request','then','info','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x262fb3,_0x4fae4d){var _0x1cb5ac=function(_0x5ce152){while(--_0x5ce152){_0x262fb3['push'](_0x262fb3['shift']());}};_0x1cb5ac(++_0x4fae4d);}(_0xcc27,0xec));var _0x7cc2=function(_0x43ff36,_0x152cb7){_0x43ff36=_0x43ff36-0x0;var _0x6b6c08=_0xcc27[_0x43ff36];return _0x6b6c08;};'use strict';var _=require(_0x7cc2('0x0'));var util=require('util');var moment=require(_0x7cc2('0x1'));var BPromise=require(_0x7cc2('0x2'));var rs=require(_0x7cc2('0x3'));var fs=require('fs');var Redis=require(_0x7cc2('0x4'));var db=require(_0x7cc2('0x5'))['db'];var utils=require(_0x7cc2('0x6'));var logger=require('../../config/logger')(_0x7cc2('0x7'));var config=require('../../config/environment');var jayson=require(_0x7cc2('0x8'));var client=jayson['client'][_0x7cc2('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5f0079,_0x446f96,_0x43f7de){return new BPromise(function(_0x37e1bc,_0x30c912){return client[_0x7cc2('0xa')](_0x5f0079,_0x43f7de)[_0x7cc2('0xb')](function(_0x2be146){logger[_0x7cc2('0xc')](_0x7cc2('0xd'),_0x446f96,_0x7cc2('0xe'));logger[_0x7cc2('0xf')](_0x7cc2('0x10'),_0x446f96,'request\x20sent',JSON['stringify'](_0x2be146));if(_0x2be146[_0x7cc2('0x11')]){if(_0x2be146[_0x7cc2('0x11')]['code']===0x1f4){logger[_0x7cc2('0x11')](_0x7cc2('0xd'),_0x446f96,_0x2be146['error']['message']);return _0x30c912(_0x2be146['error'][_0x7cc2('0x12')]);}logger[_0x7cc2('0x11')](_0x7cc2('0xd'),_0x446f96,_0x2be146[_0x7cc2('0x11')][_0x7cc2('0x12')]);return _0x37e1bc(_0x2be146[_0x7cc2('0x11')][_0x7cc2('0x12')]);}else{logger[_0x7cc2('0xc')](_0x7cc2('0xd'),_0x446f96,'request\x20sent');_0x37e1bc(_0x2be146[_0x7cc2('0x13')]['message']);}})[_0x7cc2('0x14')](function(_0x3d7e94){logger[_0x7cc2('0x11')](_0x7cc2('0xd'),_0x446f96,_0x3d7e94);_0x30c912(_0x3d7e94);});});}
\ No newline at end of file
+var _0x1f77=['result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','JscriptyAnswerReport,\x20%s,\x20%s','message'];(function(_0x54d4fe,_0x55e869){var _0x1ab5bb=function(_0x5b1af2){while(--_0x5b1af2){_0x54d4fe['push'](_0x54d4fe['shift']());}};_0x1ab5bb(++_0x55e869);}(_0x1f77,0x1b9));var _0x71f7=function(_0x5ac482,_0x26358d){_0x5ac482=_0x5ac482-0x0;var _0x4f4e4a=_0x1f77[_0x5ac482];return _0x4f4e4a;};'use strict';var _=require('lodash');var util=require(_0x71f7('0x0'));var moment=require(_0x71f7('0x1'));var BPromise=require(_0x71f7('0x2'));var rs=require(_0x71f7('0x3'));var fs=require('fs');var Redis=require(_0x71f7('0x4'));var db=require(_0x71f7('0x5'))['db'];var utils=require(_0x71f7('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x71f7('0x7'));var jayson=require(_0x71f7('0x8'));var client=jayson[_0x71f7('0x9')][_0x71f7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2c33b7,_0x2f29f5,_0x5ea1ef){return new BPromise(function(_0x2e79f2,_0x3cd1d7){return client[_0x71f7('0xb')](_0x2c33b7,_0x5ea1ef)[_0x71f7('0xc')](function(_0xa785a4){logger[_0x71f7('0xd')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x2f29f5,'request\x20sent');logger[_0x71f7('0xe')](_0x71f7('0xf'),_0x2f29f5,_0x71f7('0x10'),JSON['stringify'](_0xa785a4));if(_0xa785a4['error']){if(_0xa785a4[_0x71f7('0x11')][_0x71f7('0x12')]===0x1f4){logger[_0x71f7('0x11')](_0x71f7('0x13'),_0x2f29f5,_0xa785a4[_0x71f7('0x11')][_0x71f7('0x14')]);return _0x3cd1d7(_0xa785a4[_0x71f7('0x11')]['message']);}logger[_0x71f7('0x11')](_0x71f7('0x13'),_0x2f29f5,_0xa785a4[_0x71f7('0x11')]['message']);return _0x2e79f2(_0xa785a4[_0x71f7('0x11')]['message']);}else{logger[_0x71f7('0xd')](_0x71f7('0x13'),_0x2f29f5,_0x71f7('0x10'));_0x2e79f2(_0xa785a4[_0x71f7('0x15')][_0x71f7('0x14')]);}})['catch'](function(_0x42a6c0){logger[_0x71f7('0x11')](_0x71f7('0x13'),_0x2f29f5,_0x42a6c0);_0x3cd1d7(_0x42a6c0);});});}
\ No newline at end of file
index 83e3246..d0804d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2684=['isAuthenticated','/:id/sessions','/:id/answers','getAnswers','/:id/summary','getSummary','create','/:id/clone','clone','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptyProject.controller','get'];(function(_0x4b8b98,_0x178c88){var _0x1fb023=function(_0x53aa9b){while(--_0x53aa9b){_0x4b8b98['push'](_0x4b8b98['shift']());}};_0x1fb023(++_0x178c88);}(_0x2684,0x12d));var _0x4268=function(_0x3df1bf,_0x58d83e){_0x3df1bf=_0x3df1bf-0x0;var _0x182289=_0x2684[_0x3df1bf];return _0x182289;};'use strict';var multer=require(_0x4268('0x0'));var util=require(_0x4268('0x1'));var path=require(_0x4268('0x2'));var timeout=require(_0x4268('0x3'));var express=require(_0x4268('0x4'));var router=express[_0x4268('0x5')]();var fs_extra=require(_0x4268('0x6'));var auth=require(_0x4268('0x7'));var interaction=require(_0x4268('0x8'));var config=require('../../config/environment');var controller=require(_0x4268('0x9'));router[_0x4268('0xa')]('/',auth[_0x4268('0xb')](),controller['index']);router[_0x4268('0xa')]('/:id',auth[_0x4268('0xb')](),controller['show']);router[_0x4268('0xa')](_0x4268('0xc'),auth[_0x4268('0xb')](),controller['getSessions']);router[_0x4268('0xa')](_0x4268('0xd'),auth[_0x4268('0xb')](),controller[_0x4268('0xe')]);router[_0x4268('0xa')](_0x4268('0xf'),auth['isAuthenticated'](),timeout('30s'),controller[_0x4268('0x10')]);router['post']('/',auth[_0x4268('0xb')](),controller[_0x4268('0x11')]);router['post'](_0x4268('0x12'),auth['isAuthenticated'](),controller[_0x4268('0x13')]);router['put']('/:id',auth[_0x4268('0xb')](),controller[_0x4268('0x14')]);router[_0x4268('0x15')]('/:id',auth[_0x4268('0xb')](),controller[_0x4268('0x16')]);module[_0x4268('0x17')]=router;
\ No newline at end of file
+var _0xc443=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyProject.controller','get','isAuthenticated','show','/:id/sessions','getSessions','/:id/answers','getAnswers','/:id/summary','30s','getSummary','post','create','/:id/clone','clone','put','/:id','delete','exports','multer','util','connect-timeout','express'];(function(_0x27a5bb,_0x3f4cfb){var _0x2e17ea=function(_0x22912d){while(--_0x22912d){_0x27a5bb['push'](_0x27a5bb['shift']());}};_0x2e17ea(++_0x3f4cfb);}(_0xc443,0x9e));var _0x3c44=function(_0x2d4132,_0x18dc6d){_0x2d4132=_0x2d4132-0x0;var _0x5911a5=_0xc443[_0x2d4132];return _0x5911a5;};'use strict';var multer=require(_0x3c44('0x0'));var util=require(_0x3c44('0x1'));var path=require('path');var timeout=require(_0x3c44('0x2'));var express=require(_0x3c44('0x3'));var router=express[_0x3c44('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x3c44('0x5'));var interaction=require(_0x3c44('0x6'));var config=require(_0x3c44('0x7'));var controller=require(_0x3c44('0x8'));router[_0x3c44('0x9')]('/',auth[_0x3c44('0xa')](),controller['index']);router[_0x3c44('0x9')]('/:id',auth[_0x3c44('0xa')](),controller[_0x3c44('0xb')]);router[_0x3c44('0x9')](_0x3c44('0xc'),auth[_0x3c44('0xa')](),controller[_0x3c44('0xd')]);router[_0x3c44('0x9')](_0x3c44('0xe'),auth[_0x3c44('0xa')](),controller[_0x3c44('0xf')]);router[_0x3c44('0x9')](_0x3c44('0x10'),auth[_0x3c44('0xa')](),timeout(_0x3c44('0x11')),controller[_0x3c44('0x12')]);router[_0x3c44('0x13')]('/',auth[_0x3c44('0xa')](),controller[_0x3c44('0x14')]);router['post'](_0x3c44('0x15'),auth[_0x3c44('0xa')](),controller[_0x3c44('0x16')]);router[_0x3c44('0x17')](_0x3c44('0x18'),auth[_0x3c44('0xa')](),controller['update']);router[_0x3c44('0x19')](_0x3c44('0x18'),auth[_0x3c44('0xa')](),controller['destroy']);module[_0x3c44('0x1a')]=router;
\ No newline at end of file
index 31f0afe..be4ca3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86f6=['{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','name','description','BOOLEAN','util','exports','STRING','long','setDataValue','formData','stringify','isString','format'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0x86f6,0xd7));var _0x686f=function(_0x237e86,_0x4c628e){_0x237e86=_0x237e86-0x0;var _0x2bcf51=_0x86f6[_0x237e86];return _0x2bcf51;};'use strict';var Sequelize=require('sequelize');var _=require('lodash');var util=require(_0x686f('0x0'));module[_0x686f('0x1')]={'name':{'type':Sequelize[_0x686f('0x2')],'unique':'name'},'description':{'type':Sequelize['STRING']},'formData':{'type':Sequelize['TEXT'](_0x686f('0x3')),'set':function(_0x48bd99){if(_['isObjectLike'](_0x48bd99)){this[_0x686f('0x4')](_0x686f('0x5'),JSON[_0x686f('0x6')](_0x48bd99));}else if(_[_0x686f('0x7')](_0x48bd99)){this['setDataValue'](_0x686f('0x5'),_0x48bd99);}else{this[_0x686f('0x4')](_0x686f('0x5'),util[_0x686f('0x8')](_0x686f('0x9'),this[_0x686f('0xa')](_0x686f('0xb'))||'',this[_0x686f('0xa')](_0x686f('0xc'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0x686f('0xd')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x686f('0xd')],'defaultValue':![]}};
\ No newline at end of file
+var _0x3470=['isObjectLike','setDataValue','formData','stringify','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','description','BOOLEAN','lodash','util','exports','STRING','name','TEXT'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3470,0x182));var _0x0347=function(_0x16207f,_0x53795d){_0x16207f=_0x16207f-0x0;var _0x57dd8d=_0x3470[_0x16207f];return _0x57dd8d;};'use strict';var Sequelize=require('sequelize');var _=require(_0x0347('0x0'));var util=require(_0x0347('0x1'));module[_0x0347('0x2')]={'name':{'type':Sequelize[_0x0347('0x3')],'unique':_0x0347('0x4')},'description':{'type':Sequelize[_0x0347('0x3')]},'formData':{'type':Sequelize[_0x0347('0x5')]('long'),'set':function(_0x2ebe44){if(_[_0x0347('0x6')](_0x2ebe44)){this[_0x0347('0x7')](_0x0347('0x8'),JSON[_0x0347('0x9')](_0x2ebe44));}else if(_['isString'](_0x2ebe44)){this[_0x0347('0x7')](_0x0347('0x8'),_0x2ebe44);}else{this[_0x0347('0x7')](_0x0347('0x8'),util['format'](_0x0347('0xa'),this[_0x0347('0xb')](_0x0347('0x4'))||'',this['getDataValue'](_0x0347('0xc'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0x0347('0xd')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x0347('0xd')],'defaultValue':![]}};
\ No newline at end of file
index e41f33d..bf15ee7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c80=['catch','show','params','includeAll','include','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Projects','find','userProfileId','UserProfileResource','omit','createdAt','updatedAt','UserProfileSection','autoAssociation','getSessions','findOne','JscriptySessionReport','filters','ProjectId','getAnswers','JscriptyAnswerReport','rows','fromCharCode','toString','indexOf','replace','getSummary','startTime','parse','JscriptyQuestionReport','questionId','question','format','YYYY-MM-DD\x20HH:mm:ss','SessionId','answer','now','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','Content-type','text/csv','download','eml-format','rimraf','request-promise','moment','bluebird','util','path','sox','ejs','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','destroy','then','get','error','stack','name','send','index','map','JscriptyProject','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','options','findAll'];(function(_0x420214,_0x3f9e13){var _0x3ee9f9=function(_0x14e6f6){while(--_0x14e6f6){_0x420214['push'](_0x420214['shift']());}};_0x3ee9f9(++_0x3f9e13);}(_0x7c80,0xa4));var _0x07c8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7c80[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x07c8('0x0'));var rimraf=require(_0x07c8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x07c8('0x2'));var moment=require(_0x07c8('0x3'));var BPromise=require(_0x07c8('0x4'));var Mustache=require('mustache');var util=require(_0x07c8('0x5'));var path=require(_0x07c8('0x6'));var sox=require(_0x07c8('0x7'));var csv=require('to-csv');var ejs=require(_0x07c8('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x07c8('0x9'));var crypto=require(_0x07c8('0xa'));var jsforce=require(_0x07c8('0xb'));var deskjs=require(_0x07c8('0xc'));var toCsv=require(_0x07c8('0xd'));var querystring=require(_0x07c8('0xe'));var Papa=require('papaparse');var Redis=require(_0x07c8('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x07c8('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x07c8('0x11'))('api');var utils=require('../../config/utils');var config=require(_0x07c8('0x12'));var licenseUtil=require(_0x07c8('0x13'));var db=require(_0x07c8('0x14'))['db'];function respondWithStatusCode(_0x39d243,_0x5c2abf){_0x5c2abf=_0x5c2abf||0xcc;return function(_0x338d94){if(_0x338d94){return _0x39d243[_0x07c8('0x15')](_0x5c2abf);}return _0x39d243[_0x07c8('0x16')](_0x5c2abf)[_0x07c8('0x17')]();};}function respondWithResult(_0x5d84de,_0x5da90b){_0x5da90b=_0x5da90b||0xc8;return function(_0x29fe2b){if(_0x29fe2b){return _0x5d84de['status'](_0x5da90b)[_0x07c8('0x18')](_0x29fe2b);}};}function respondWithFilteredResult(_0x439159,_0x3d2e32){return function(_0x3997e7){if(_0x3997e7){var _0x1d6bca=typeof _0x3d2e32[_0x07c8('0x19')]===_0x07c8('0x1a')&&typeof _0x3d2e32[_0x07c8('0x1b')]===_0x07c8('0x1a');var _0x1a85c0=_0x3997e7[_0x07c8('0x1c')];var _0x36da01=_0x1d6bca?0x0:_0x3d2e32[_0x07c8('0x19')];var _0x444259=_0x1d6bca?_0x3997e7[_0x07c8('0x1c')]:_0x3d2e32[_0x07c8('0x19')]+_0x3d2e32[_0x07c8('0x1b')];var _0x12aeb1;if(_0x444259>=_0x1a85c0){_0x444259=_0x1a85c0;_0x12aeb1=0xc8;}else{_0x12aeb1=0xce;}_0x439159['status'](_0x12aeb1);return _0x439159[_0x07c8('0x1d')]('Content-Range',_0x36da01+'-'+_0x444259+'/'+_0x1a85c0)['json'](_0x3997e7);}return null;};}function patchUpdates(_0x5bb42b){return function(_0xeb1372){try{jsonpatch[_0x07c8('0x1e')](_0xeb1372,_0x5bb42b,!![]);}catch(_0x2750a2){return BPromise[_0x07c8('0x1f')](_0x2750a2);}return _0xeb1372[_0x07c8('0x20')]();};}function saveUpdates(_0x4e33b3,_0x397ccd){return function(_0x278561){if(_0x278561){return _0x278561[_0x07c8('0x21')](_0x4e33b3)['then'](function(_0xefbb7d){return _0xefbb7d;});}return null;};}function removeEntity(_0x356d4f,_0x3e3965){return function(_0x470fe1){if(_0x470fe1){return _0x470fe1[_0x07c8('0x22')]()[_0x07c8('0x23')](function(){var _0x4ae36a=_0x470fe1[_0x07c8('0x24')]({'plain':!![]});var _0x550a69='Projects';return db['UserProfileResource']['destroy']({'where':{'type':_0x550a69,'resourceId':_0x4ae36a['id']}})[_0x07c8('0x23')](function(){return _0x470fe1;});})[_0x07c8('0x23')](function(){_0x356d4f[_0x07c8('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ce5da,_0x569886){return function(_0x13086a){if(!_0x13086a){_0x4ce5da[_0x07c8('0x15')](0x194);}return _0x13086a;};}function handleError(_0x5faab8,_0x6dbc13){_0x6dbc13=_0x6dbc13||0x1f4;return function(_0x129455){logger[_0x07c8('0x25')](_0x129455[_0x07c8('0x26')]);if(_0x129455['name']){delete _0x129455[_0x07c8('0x27')];}_0x5faab8['status'](_0x6dbc13)[_0x07c8('0x28')](_0x129455);};}exports[_0x07c8('0x29')]=function(_0x50dbec,_0x3132b0){var _0x4d7c4e={},_0xd7edf9={},_0x26deb0={'count':0x0,'rows':[]};var _0x300682=_[_0x07c8('0x2a')](db[_0x07c8('0x2b')][_0x07c8('0x2c')],function(_0x1382c6){return{'name':_0x1382c6[_0x07c8('0x2d')],'type':_0x1382c6[_0x07c8('0x2e')][_0x07c8('0x2f')]};});_0xd7edf9[_0x07c8('0x30')]=_[_0x07c8('0x2a')](_0x300682,_0x07c8('0x27'));_0xd7edf9[_0x07c8('0x31')]=_[_0x07c8('0x32')](_0x50dbec[_0x07c8('0x31')]);_0xd7edf9['filters']=_[_0x07c8('0x33')](_0xd7edf9[_0x07c8('0x30')],_0xd7edf9['query']);_0x4d7c4e[_0x07c8('0x34')]=_[_0x07c8('0x33')](_0xd7edf9[_0x07c8('0x30')],qs[_0x07c8('0x35')](_0x50dbec[_0x07c8('0x31')][_0x07c8('0x35')]));_0x4d7c4e[_0x07c8('0x34')]=_0x4d7c4e['attributes'][_0x07c8('0x36')]?_0x4d7c4e[_0x07c8('0x34')]:_0xd7edf9[_0x07c8('0x30')];if(!_0x50dbec[_0x07c8('0x31')][_0x07c8('0x37')](_0x07c8('0x38'))){_0x4d7c4e[_0x07c8('0x1b')]=qs[_0x07c8('0x1b')](_0x50dbec[_0x07c8('0x31')]['limit']);_0x4d7c4e[_0x07c8('0x19')]=qs[_0x07c8('0x19')](_0x50dbec[_0x07c8('0x31')][_0x07c8('0x19')]);}_0x4d7c4e[_0x07c8('0x39')]=qs[_0x07c8('0x3a')](_0x50dbec[_0x07c8('0x31')][_0x07c8('0x3a')]);_0x4d7c4e['where']=qs['filters'](_[_0x07c8('0x3b')](_0x50dbec[_0x07c8('0x31')],_0xd7edf9['filters']),_0x300682);if(_0x50dbec[_0x07c8('0x31')][_0x07c8('0x3c')]){_0x4d7c4e['where']=_[_0x07c8('0x3d')](_0x4d7c4e[_0x07c8('0x3e')],{'$or':_[_0x07c8('0x2a')](_0x300682,function(_0x233af2){if(_0x233af2[_0x07c8('0x2e')]!==_0x07c8('0x3f')){var _0x230c1a={};_0x230c1a[_0x233af2[_0x07c8('0x27')]]={'$like':'%'+_0x50dbec['query'][_0x07c8('0x3c')]+'%'};return _0x230c1a;}})});}_0x4d7c4e=_['merge']({},_0x4d7c4e,_0x50dbec[_0x07c8('0x40')]);var _0x207a82={'where':_0x4d7c4e[_0x07c8('0x3e')]};return db[_0x07c8('0x2b')][_0x07c8('0x1c')](_0x207a82)['then'](function(_0x5e88b){_0x26deb0[_0x07c8('0x1c')]=_0x5e88b;if(_0x50dbec[_0x07c8('0x31')]['includeAll']){_0x4d7c4e['include']=[{'all':!![]}];}return db[_0x07c8('0x2b')][_0x07c8('0x41')](_0x4d7c4e);})[_0x07c8('0x23')](function(_0x435908){_0x26deb0['rows']=_0x435908;return _0x26deb0;})[_0x07c8('0x23')](respondWithFilteredResult(_0x3132b0,_0x4d7c4e))[_0x07c8('0x42')](handleError(_0x3132b0,null));};exports[_0x07c8('0x43')]=function(_0x28ea4b,_0x18e443){var _0x298f41={'raw':![],'where':{'id':_0x28ea4b[_0x07c8('0x44')]['id']}},_0x1a574d={};_0x1a574d['model']=_['keys'](db[_0x07c8('0x2b')]['rawAttributes']);_0x1a574d[_0x07c8('0x31')]=_['keys'](_0x28ea4b[_0x07c8('0x31')]);_0x1a574d['filters']=_['intersection'](_0x1a574d[_0x07c8('0x30')],_0x1a574d[_0x07c8('0x31')]);_0x298f41[_0x07c8('0x34')]=_[_0x07c8('0x33')](_0x1a574d[_0x07c8('0x30')],qs[_0x07c8('0x35')](_0x28ea4b[_0x07c8('0x31')][_0x07c8('0x35')]));_0x298f41[_0x07c8('0x34')]=_0x298f41[_0x07c8('0x34')]['length']?_0x298f41['attributes']:_0x1a574d['model'];if(_0x28ea4b[_0x07c8('0x31')][_0x07c8('0x45')]){_0x298f41[_0x07c8('0x46')]=[{'all':!![]}];}_0x298f41=_[_0x07c8('0x3d')]({},_0x298f41,_0x28ea4b['options']);return db[_0x07c8('0x2b')]['find'](_0x298f41)[_0x07c8('0x23')](handleEntityNotFound(_0x18e443,null))['then'](respondWithResult(_0x18e443,null))[_0x07c8('0x42')](handleError(_0x18e443,null));};exports[_0x07c8('0x47')]=function(_0x264b33,_0x40754e){return db[_0x07c8('0x2b')][_0x07c8('0x47')](_0x264b33[_0x07c8('0x48')],{})[_0x07c8('0x23')](function(_0x4ba4e3){var _0x33be4d=_0x264b33['user'][_0x07c8('0x24')]({'plain':!![]});if(!_0x33be4d)throw new Error(_0x07c8('0x49'));if(_0x33be4d[_0x07c8('0x4a')]===_0x07c8('0x4b')){var _0x53b280=_0x4ba4e3[_0x07c8('0x24')]({'plain':!![]});var _0xa8b33c=_0x07c8('0x4c');return db['UserProfileSection'][_0x07c8('0x4d')]({'where':{'name':_0xa8b33c,'userProfileId':_0x33be4d[_0x07c8('0x4e')]},'raw':!![]})[_0x07c8('0x23')](function(_0x5a65ec){if(_0x5a65ec&&_0x5a65ec['autoAssociation']===0x0){return db[_0x07c8('0x4f')]['create']({'name':_0x53b280['name'],'resourceId':_0x53b280['id'],'type':_0x5a65ec['name'],'sectionId':_0x5a65ec['id']},{})[_0x07c8('0x23')](function(){return _0x4ba4e3;});}else{return _0x4ba4e3;}})[_0x07c8('0x42')](function(_0x47aa2a){logger[_0x07c8('0x25')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x47aa2a);throw _0x47aa2a;});}return _0x4ba4e3;})[_0x07c8('0x23')](respondWithResult(_0x40754e,0xc9))['catch'](handleError(_0x40754e,null));};exports['clone']=function(_0x16786b,_0x2181cc){var _0x595dae={'where':{'id':_0x16786b['params']['id']}},_0x428dac={};_0x428dac[_0x07c8('0x30')]=_[_0x07c8('0x32')](db[_0x07c8('0x2b')][_0x07c8('0x2c')]);_0x595dae[_0x07c8('0x34')]=_[_0x07c8('0x33')](_0x428dac[_0x07c8('0x30')],qs[_0x07c8('0x35')](_0x16786b[_0x07c8('0x31')][_0x07c8('0x35')]));_0x595dae[_0x07c8('0x34')]=_0x595dae[_0x07c8('0x34')][_0x07c8('0x36')]?_0x595dae[_0x07c8('0x34')]:_0x428dac[_0x07c8('0x30')];if(_0x16786b[_0x07c8('0x31')][_0x07c8('0x45')]){_0x595dae['include']=[{'all':!![]}];}_0x595dae=_['merge']({},_0x595dae,_0x16786b[_0x07c8('0x40')]);return db['JscriptyProject']['find'](_0x595dae)['then'](handleEntityNotFound(_0x2181cc,null))[_0x07c8('0x23')](function(_0xb064a0){if(_0xb064a0){var _0x526b51=_0xb064a0[_0x07c8('0x24')]({'plain':!![]});_0x526b51=qs[_0x07c8('0x50')](_0x526b51,['id',_0x07c8('0x51'),_0x07c8('0x52')]);_0x16786b[_0x07c8('0x48')]=_[_0x07c8('0x50')](_0x16786b[_0x07c8('0x48')],['id','createdAt',_0x07c8('0x52')]);return db['JscriptyProject'][_0x07c8('0x47')](_[_0x07c8('0x3d')](_0x526b51,_0x16786b['body']),{'include':_0x16786b[_0x07c8('0x31')][_0x07c8('0x45')]?[{'all':!![]}]:undefined})[_0x07c8('0x23')](function(_0x556f91){var _0x1ea139=_0x16786b[_0x07c8('0x4b')][_0x07c8('0x24')]({'plain':!![]});if(!_0x1ea139)throw new Error(_0x07c8('0x49'));if(_0x1ea139[_0x07c8('0x4a')]===_0x07c8('0x4b')){var _0x2b58a7=_0x556f91[_0x07c8('0x24')]({'plain':!![]});var _0x23e6be=_0x07c8('0x4c');return db[_0x07c8('0x53')]['find']({'where':{'name':_0x23e6be,'userProfileId':_0x1ea139['userProfileId']},'raw':!![]})[_0x07c8('0x23')](function(_0x16cda8){if(_0x16cda8&&_0x16cda8[_0x07c8('0x54')]===0x0){return db[_0x07c8('0x4f')][_0x07c8('0x47')]({'name':_0x2b58a7[_0x07c8('0x27')],'resourceId':_0x2b58a7['id'],'type':_0x16cda8[_0x07c8('0x27')],'sectionId':_0x16cda8['id']},{})[_0x07c8('0x23')](function(){return _0x556f91;});}else{return _0x556f91;}})[_0x07c8('0x42')](function(_0x4a6c60){logger[_0x07c8('0x25')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4a6c60);throw _0x4a6c60;});}return _0x556f91;});}})[_0x07c8('0x23')](respondWithResult(_0x2181cc,0xc9))[_0x07c8('0x42')](handleError(_0x2181cc,null));};exports[_0x07c8('0x21')]=function(_0x14a4a9,_0x484e3d){if(_0x14a4a9[_0x07c8('0x48')]['id']){delete _0x14a4a9[_0x07c8('0x48')]['id'];}return db['JscriptyProject'][_0x07c8('0x4d')]({'where':{'id':_0x14a4a9[_0x07c8('0x44')]['id']}})['then'](handleEntityNotFound(_0x484e3d,null))[_0x07c8('0x23')](saveUpdates(_0x14a4a9[_0x07c8('0x48')],null))[_0x07c8('0x23')](respondWithResult(_0x484e3d,null))[_0x07c8('0x42')](handleError(_0x484e3d,null));};exports[_0x07c8('0x22')]=function(_0x4024af,_0x506242){return db[_0x07c8('0x2b')]['find']({'where':{'id':_0x4024af[_0x07c8('0x44')]['id']}})['then'](handleEntityNotFound(_0x506242,null))['then'](removeEntity(_0x506242,null))[_0x07c8('0x42')](handleError(_0x506242,null));};exports[_0x07c8('0x55')]=function(_0x56874b,_0x242bfc,_0x239499){var _0x33d0a0={'raw':!![],'where':{}};var _0x4d1086={};var _0xd9d1dc={'count':0x0,'rows':[]};return db[_0x07c8('0x2b')][_0x07c8('0x56')]({'where':{'id':_0x56874b[_0x07c8('0x44')]['id']}})[_0x07c8('0x23')](handleEntityNotFound(_0x242bfc,null))[_0x07c8('0x23')](function(_0x17abad){if(_0x17abad){_0x4d1086[_0x07c8('0x30')]=_['keys'](db[_0x07c8('0x57')]['rawAttributes']);_0x4d1086[_0x07c8('0x31')]=_['keys'](_0x56874b[_0x07c8('0x31')]);_0x4d1086[_0x07c8('0x58')]=_[_0x07c8('0x33')](_0x4d1086['model'],_0x4d1086[_0x07c8('0x31')]);_0x33d0a0[_0x07c8('0x34')]=_[_0x07c8('0x33')](_0x4d1086[_0x07c8('0x30')],qs[_0x07c8('0x35')](_0x56874b[_0x07c8('0x31')]['fields']));_0x33d0a0[_0x07c8('0x34')]=_0x33d0a0[_0x07c8('0x34')]['length']?_0x33d0a0[_0x07c8('0x34')]:_0x4d1086[_0x07c8('0x30')];if(!_0x56874b[_0x07c8('0x31')][_0x07c8('0x37')](_0x07c8('0x38'))){_0x33d0a0[_0x07c8('0x1b')]=qs[_0x07c8('0x1b')](_0x56874b[_0x07c8('0x31')]['limit']);_0x33d0a0[_0x07c8('0x19')]=qs[_0x07c8('0x19')](_0x56874b[_0x07c8('0x31')]['offset']);}_0x33d0a0[_0x07c8('0x39')]=qs['sort'](_0x56874b[_0x07c8('0x31')][_0x07c8('0x3a')]);_0x33d0a0[_0x07c8('0x3e')]=qs['filters'](_[_0x07c8('0x3b')](_0x56874b['query'],_0x4d1086['filters']));_0x33d0a0[_0x07c8('0x3e')][_0x07c8('0x59')]=_0x17abad['id'];if(_0x56874b[_0x07c8('0x31')][_0x07c8('0x3c')]){_0x33d0a0[_0x07c8('0x3e')]=_['merge'](_0x33d0a0[_0x07c8('0x3e')],{'$or':_[_0x07c8('0x2a')](_0x33d0a0[_0x07c8('0x34')],function(_0x3f2e46){var _0x16041c={};_0x16041c[_0x3f2e46]={'$like':'%'+_0x56874b[_0x07c8('0x31')][_0x07c8('0x3c')]+'%'};return _0x16041c;})});}_0x33d0a0=_['merge']({},_0x33d0a0,_0x56874b[_0x07c8('0x40')]);return db[_0x07c8('0x57')][_0x07c8('0x1c')]({'where':_0x33d0a0[_0x07c8('0x3e')]})[_0x07c8('0x23')](function(_0xfc349c){_0xd9d1dc[_0x07c8('0x1c')]=_0xfc349c;if(_0x56874b['query'][_0x07c8('0x45')]){_0x33d0a0[_0x07c8('0x46')]=[{'all':!![]}];}return db['JscriptySessionReport']['findAll'](_0x33d0a0);})[_0x07c8('0x23')](function(_0x28df2c){_0xd9d1dc['rows']=_0x28df2c;return _0xd9d1dc;});}})[_0x07c8('0x23')](respondWithFilteredResult(_0x242bfc,_0x33d0a0))['catch'](handleError(_0x242bfc,null));};exports[_0x07c8('0x5a')]=function(_0x18a5ec,_0x3342da,_0x46fd72){var _0x2341a4={'raw':!![],'where':{}};var _0x3abfa9={};var _0x5413cb={'count':0x0,'rows':[]};return db[_0x07c8('0x2b')][_0x07c8('0x56')]({'where':{'id':_0x18a5ec[_0x07c8('0x44')]['id']}})[_0x07c8('0x23')](handleEntityNotFound(_0x3342da,null))['then'](function(_0x4329c0){if(_0x4329c0){_0x3abfa9[_0x07c8('0x30')]=_['keys'](db['JscriptyAnswerReport']['rawAttributes']);_0x3abfa9[_0x07c8('0x31')]=_[_0x07c8('0x32')](_0x18a5ec[_0x07c8('0x31')]);_0x3abfa9[_0x07c8('0x58')]=_['intersection'](_0x3abfa9[_0x07c8('0x30')],_0x3abfa9['query']);_0x2341a4['attributes']=_[_0x07c8('0x33')](_0x3abfa9['model'],qs[_0x07c8('0x35')](_0x18a5ec[_0x07c8('0x31')][_0x07c8('0x35')]));_0x2341a4['attributes']=_0x2341a4[_0x07c8('0x34')]['length']?_0x2341a4['attributes']:_0x3abfa9['model'];if(!_0x18a5ec[_0x07c8('0x31')][_0x07c8('0x37')]('nolimit')){_0x2341a4[_0x07c8('0x1b')]=qs['limit'](_0x18a5ec[_0x07c8('0x31')][_0x07c8('0x1b')]);_0x2341a4[_0x07c8('0x19')]=qs[_0x07c8('0x19')](_0x18a5ec['query'][_0x07c8('0x19')]);}_0x2341a4['order']=qs[_0x07c8('0x3a')](_0x18a5ec['query'][_0x07c8('0x3a')]);_0x2341a4['where']=qs[_0x07c8('0x58')](_[_0x07c8('0x3b')](_0x18a5ec['query'],_0x3abfa9[_0x07c8('0x58')]));_0x2341a4[_0x07c8('0x3e')][_0x07c8('0x59')]=_0x4329c0['id'];if(_0x18a5ec[_0x07c8('0x31')]['filter']){_0x2341a4[_0x07c8('0x3e')]=_['merge'](_0x2341a4[_0x07c8('0x3e')],{'$or':_['map'](_0x2341a4[_0x07c8('0x34')],function(_0x468c17){var _0x3890d0={};_0x3890d0[_0x468c17]={'$like':'%'+_0x18a5ec[_0x07c8('0x31')][_0x07c8('0x3c')]+'%'};return _0x3890d0;})});}_0x2341a4=_[_0x07c8('0x3d')]({},_0x2341a4,_0x18a5ec[_0x07c8('0x40')]);return db[_0x07c8('0x5b')]['count']({'where':_0x2341a4[_0x07c8('0x3e')]})[_0x07c8('0x23')](function(_0x516346){_0x5413cb[_0x07c8('0x1c')]=_0x516346;if(_0x18a5ec['query'][_0x07c8('0x45')]){_0x2341a4[_0x07c8('0x46')]=[{'all':!![]}];}return db[_0x07c8('0x5b')][_0x07c8('0x41')](_0x2341a4);})['then'](function(_0x2eb084){_0x5413cb[_0x07c8('0x5c')]=_0x2eb084;return _0x5413cb;});}})[_0x07c8('0x23')](respondWithFilteredResult(_0x3342da,_0x2341a4))['catch'](handleError(_0x3342da,null));};function char(_0x5d4048){return'number'===typeof _0x5d4048?String[_0x07c8('0x5d')][_0x07c8('0x1e')](null,arguments):_0x5d4048;}function needsEncapsulation(_0x2ccb94){return!!_0x2ccb94&&(_0x2ccb94[_0x07c8('0x5e')]()[_0x07c8('0x5f')](char(0xd))>=0x0||_0x2ccb94[_0x07c8('0x5e')]()[_0x07c8('0x5f')](char(0xa))>=0x0||_0x2ccb94[_0x07c8('0x5e')]()[_0x07c8('0x5f')](char(0x2c))>=0x0||_0x2ccb94[_0x07c8('0x5e')]()[_0x07c8('0x5f')](char(0x22))>=0x0);}function encapsulate(_0x5ef448){var _0x1d9a95=char(0x22),_0x391552='\x5c'+char(0x22),_0xb06eed=_0x5ef448[_0x07c8('0x5e')]()[_0x07c8('0x60')](new RegExp(_0x1d9a95,'g'),_0x391552);return _0x1d9a95+_0xb06eed+_0x1d9a95;}exports[_0x07c8('0x61')]=function(_0x36ce4e,_0x139e5c,_0x5b36d8){var _0x2c9ca8,_0x40582b;var _0x28dadc={'where':{'ProjectId':_0x36ce4e[_0x07c8('0x44')]['id']}};if(_0x36ce4e['query'][_0x07c8('0x62')]){_0x28dadc['where']['starttime']=JSON[_0x07c8('0x63')](_0x36ce4e[_0x07c8('0x31')]['startTime']);}return db[_0x07c8('0x57')][_0x07c8('0x41')](_0x28dadc)[_0x07c8('0x23')](handleEntityNotFound(_0x139e5c,null))[_0x07c8('0x23')](function(_0x567acd){if(_0x567acd){_0x2c9ca8=_0x567acd;return db[_0x07c8('0x64')][_0x07c8('0x41')]({'where':{'SessionId':{'$in':_[_0x07c8('0x2a')](_0x2c9ca8,'id')},'ProjectId':_0x36ce4e[_0x07c8('0x44')]['id']},'order':'-createdAt'});}})[_0x07c8('0x23')](handleEntityNotFound(_0x139e5c,null))['then'](function(_0x50d965){if(_0x50d965){_0x40582b=_0x50d965;var _0x5891bc={};for(var _0x2ce952=0x0,_0x347f68=_0x40582b[_0x07c8('0x36')];_0x2ce952<_0x347f68;_0x2ce952++){if(!_0x5891bc[_0x07c8('0x37')](_0x40582b[_0x2ce952][_0x07c8('0x65')])){_0x5891bc[_0x40582b[_0x2ce952][_0x07c8('0x65')]]=needsEncapsulation(_0x40582b[_0x2ce952][_0x07c8('0x66')])?encapsulate(_0x40582b[_0x2ce952]['question']):_0x40582b[_0x2ce952][_0x07c8('0x66')];}}var _0x4f4e56=[],_0x589ac3={};for(var _0x2aa164=0x0,_0x4c06dd=_0x2c9ca8[_0x07c8('0x36')];_0x2aa164<_0x4c06dd;_0x2aa164++){_0x589ac3={'ProjectId':_0x36ce4e[_0x07c8('0x44')]['id'],'SessionId':_0x2c9ca8[_0x2aa164]['id'],'StartTime':moment(_0x2c9ca8[_0x2aa164]['starttime'])[_0x07c8('0x67')](_0x07c8('0x68'))};for(var _0x1b6612=0x0,_0x1a529c=_0x40582b['length'];_0x1b6612<_0x1a529c;_0x1b6612++){if(_0x40582b[_0x1b6612][_0x07c8('0x69')]==_0x2c9ca8[_0x2aa164]['id']&&_0x5891bc[_0x07c8('0x37')](_0x40582b[_0x1b6612][_0x07c8('0x65')])){_0x589ac3[_0x5891bc[_0x40582b[_0x1b6612][_0x07c8('0x65')]]]=_0x40582b[_0x1b6612][_0x07c8('0x6a')];}}for(var _0x12ca68 in _0x5891bc){if(!_0x589ac3[_0x07c8('0x37')](_0x5891bc[_0x12ca68])){_0x589ac3[_0x5891bc[_0x12ca68]]=null;}}_0x4f4e56['push'](_0x589ac3);}return _0x4f4e56;}})[_0x07c8('0x23')](function(_0x30a748){if(!_['isEmpty'](_0x30a748)){var _0x50eedd=toCsv(_0x30a748);var _0x13ddc1=Date[_0x07c8('0x6b')]();fs['writeFileSync'](util[_0x07c8('0x67')](_0x07c8('0x6c'),_0x36ce4e[_0x07c8('0x44')]['id'],_0x13ddc1),_0x50eedd);_0x139e5c[_0x07c8('0x6d')]('Content-disposition',_0x07c8('0x6e')+util[_0x07c8('0x67')](_0x07c8('0x6f'),_0x36ce4e[_0x07c8('0x44')]['id'],_0x13ddc1));_0x139e5c['setHeader'](_0x07c8('0x70'),_0x07c8('0x71'));return _0x139e5c[_0x07c8('0x72')](util[_0x07c8('0x67')]('/tmp/Jscripty_Project_%d_Summary_%s.csv',_0x36ce4e[_0x07c8('0x44')]['id'],_0x13ddc1));}else{return _0x139e5c['sendStatus'](0xcc);}})[_0x07c8('0x42')](handleError(_0x139e5c,null));};
\ No newline at end of file
+var _0x6c4d=['now','setHeader','Content-disposition','attachment;\x20filename=','format','Jscripty_Project_%d_Summary_%s.csv','Content-type','text/csv','download','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','offset','undefined','count','limit','Content-Range','apply','reject','save','update','destroy','then','get','Projects','UserProfileResource','sendStatus','name','index','map','JscriptyProject','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','show','params','length','find','catch','body','user','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','keys','include','omit','createdAt','updatedAt','create','role','getSessions','findOne','JscriptySessionReport','hasOwnProperty','ProjectId','findAll','rows','getAnswers','JscriptyAnswerReport','fromCharCode','toString','indexOf','replace','startTime','parse','JscriptyQuestionReport','-createdAt','question','starttime','YYYY-MM-DD\x20HH:mm:ss','questionId','push','isEmpty'];(function(_0x2dc343,_0xf015a2){var _0x51eac5=function(_0x1adfef){while(--_0x1adfef){_0x2dc343['push'](_0x2dc343['shift']());}};_0x51eac5(++_0xf015a2);}(_0x6c4d,0x1dd));var _0xd6c4=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x6c4d[_0x1facfa];return _0x9ec701;};'use strict';var emlformat=require(_0xd6c4('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd6c4('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd6c4('0x2'));var moment=require(_0xd6c4('0x3'));var BPromise=require(_0xd6c4('0x4'));var Mustache=require(_0xd6c4('0x5'));var util=require(_0xd6c4('0x6'));var path=require(_0xd6c4('0x7'));var sox=require('sox');var csv=require(_0xd6c4('0x8'));var ejs=require(_0xd6c4('0x9'));var fs=require('fs');var fs_extra=require(_0xd6c4('0xa'));var _=require(_0xd6c4('0xb'));var squel=require('squel');var crypto=require(_0xd6c4('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xd6c4('0xd'));var Papa=require(_0xd6c4('0xe'));var Redis=require(_0xd6c4('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xd6c4('0x10'));var as=require(_0xd6c4('0x11'));var hardwareService=require(_0xd6c4('0x12'));var logger=require(_0xd6c4('0x13'))(_0xd6c4('0x14'));var utils=require(_0xd6c4('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xd6c4('0x16'));var db=require(_0xd6c4('0x17'))['db'];function respondWithStatusCode(_0x550135,_0x3f9a9c){_0x3f9a9c=_0x3f9a9c||0xcc;return function(_0x42a3c7){if(_0x42a3c7){return _0x550135['sendStatus'](_0x3f9a9c);}return _0x550135[_0xd6c4('0x18')](_0x3f9a9c)[_0xd6c4('0x19')]();};}function respondWithResult(_0x5f513a,_0xad02d6){_0xad02d6=_0xad02d6||0xc8;return function(_0x4bce31){if(_0x4bce31){return _0x5f513a[_0xd6c4('0x18')](_0xad02d6)['json'](_0x4bce31);}};}function respondWithFilteredResult(_0x10f358,_0x3162ca){return function(_0x2f8e24){if(_0x2f8e24){var _0x4267ca=typeof _0x3162ca[_0xd6c4('0x1a')]==='undefined'&&typeof _0x3162ca['limit']===_0xd6c4('0x1b');var _0x2d52f8=_0x2f8e24[_0xd6c4('0x1c')];var _0x205cdd=_0x4267ca?0x0:_0x3162ca[_0xd6c4('0x1a')];var _0x109e05=_0x4267ca?_0x2f8e24[_0xd6c4('0x1c')]:_0x3162ca[_0xd6c4('0x1a')]+_0x3162ca[_0xd6c4('0x1d')];var _0xefc9eb;if(_0x109e05>=_0x2d52f8){_0x109e05=_0x2d52f8;_0xefc9eb=0xc8;}else{_0xefc9eb=0xce;}_0x10f358[_0xd6c4('0x18')](_0xefc9eb);return _0x10f358['set'](_0xd6c4('0x1e'),_0x205cdd+'-'+_0x109e05+'/'+_0x2d52f8)['json'](_0x2f8e24);}return null;};}function patchUpdates(_0x18861b){return function(_0xdaefea){try{jsonpatch[_0xd6c4('0x1f')](_0xdaefea,_0x18861b,!![]);}catch(_0x16a6a9){return BPromise[_0xd6c4('0x20')](_0x16a6a9);}return _0xdaefea[_0xd6c4('0x21')]();};}function saveUpdates(_0x20feb1,_0x353645){return function(_0x5977e5){if(_0x5977e5){return _0x5977e5[_0xd6c4('0x22')](_0x20feb1)['then'](function(_0x582ab3){return _0x582ab3;});}return null;};}function removeEntity(_0x433025,_0x13adf9){return function(_0x2a467f){if(_0x2a467f){return _0x2a467f[_0xd6c4('0x23')]()[_0xd6c4('0x24')](function(){var _0x1c4660=_0x2a467f[_0xd6c4('0x25')]({'plain':!![]});var _0x2745b9=_0xd6c4('0x26');return db[_0xd6c4('0x27')][_0xd6c4('0x23')]({'where':{'type':_0x2745b9,'resourceId':_0x1c4660['id']}})[_0xd6c4('0x24')](function(){return _0x2a467f;});})[_0xd6c4('0x24')](function(){_0x433025[_0xd6c4('0x18')](0xcc)[_0xd6c4('0x19')]();});}};}function handleEntityNotFound(_0x3dc746,_0x3dc051){return function(_0x1d0638){if(!_0x1d0638){_0x3dc746[_0xd6c4('0x28')](0x194);}return _0x1d0638;};}function handleError(_0x17535f,_0x572b8a){_0x572b8a=_0x572b8a||0x1f4;return function(_0x269684){logger['error'](_0x269684['stack']);if(_0x269684[_0xd6c4('0x29')]){delete _0x269684[_0xd6c4('0x29')];}_0x17535f[_0xd6c4('0x18')](_0x572b8a)['send'](_0x269684);};}exports[_0xd6c4('0x2a')]=function(_0x18d837,_0x49aa7f){var _0x560f5c={},_0x4fa3b7={},_0x13399e={'count':0x0,'rows':[]};var _0x3e8ecb=_[_0xd6c4('0x2b')](db[_0xd6c4('0x2c')][_0xd6c4('0x2d')],function(_0x5808c4){return{'name':_0x5808c4[_0xd6c4('0x2e')],'type':_0x5808c4[_0xd6c4('0x2f')][_0xd6c4('0x30')]};});_0x4fa3b7[_0xd6c4('0x31')]=_[_0xd6c4('0x2b')](_0x3e8ecb,'name');_0x4fa3b7[_0xd6c4('0x32')]=_['keys'](_0x18d837['query']);_0x4fa3b7[_0xd6c4('0x33')]=_['intersection'](_0x4fa3b7[_0xd6c4('0x31')],_0x4fa3b7[_0xd6c4('0x32')]);_0x560f5c['attributes']=_[_0xd6c4('0x34')](_0x4fa3b7[_0xd6c4('0x31')],qs[_0xd6c4('0x35')](_0x18d837['query'][_0xd6c4('0x35')]));_0x560f5c[_0xd6c4('0x36')]=_0x560f5c['attributes']['length']?_0x560f5c['attributes']:_0x4fa3b7[_0xd6c4('0x31')];if(!_0x18d837[_0xd6c4('0x32')]['hasOwnProperty'](_0xd6c4('0x37'))){_0x560f5c['limit']=qs[_0xd6c4('0x1d')](_0x18d837[_0xd6c4('0x32')]['limit']);_0x560f5c[_0xd6c4('0x1a')]=qs[_0xd6c4('0x1a')](_0x18d837[_0xd6c4('0x32')][_0xd6c4('0x1a')]);}_0x560f5c[_0xd6c4('0x38')]=qs[_0xd6c4('0x39')](_0x18d837[_0xd6c4('0x32')]['sort']);_0x560f5c[_0xd6c4('0x3a')]=qs[_0xd6c4('0x33')](_[_0xd6c4('0x3b')](_0x18d837[_0xd6c4('0x32')],_0x4fa3b7['filters']),_0x3e8ecb);if(_0x18d837[_0xd6c4('0x32')]['filter']){_0x560f5c[_0xd6c4('0x3a')]=_[_0xd6c4('0x3c')](_0x560f5c[_0xd6c4('0x3a')],{'$or':_[_0xd6c4('0x2b')](_0x3e8ecb,function(_0xfc60f8){if(_0xfc60f8['type']!==_0xd6c4('0x3d')){var _0x137de0={};_0x137de0[_0xfc60f8['name']]={'$like':'%'+_0x18d837['query'][_0xd6c4('0x3e')]+'%'};return _0x137de0;}})});}_0x560f5c=_[_0xd6c4('0x3c')]({},_0x560f5c,_0x18d837[_0xd6c4('0x3f')]);var _0x4e28ed={'where':_0x560f5c['where']};return db['JscriptyProject'][_0xd6c4('0x1c')](_0x4e28ed)[_0xd6c4('0x24')](function(_0x238b37){_0x13399e[_0xd6c4('0x1c')]=_0x238b37;if(_0x18d837[_0xd6c4('0x32')][_0xd6c4('0x40')]){_0x560f5c['include']=[{'all':!![]}];}return db[_0xd6c4('0x2c')]['findAll'](_0x560f5c);})[_0xd6c4('0x24')](function(_0x395e93){_0x13399e['rows']=_0x395e93;return _0x13399e;})[_0xd6c4('0x24')](respondWithFilteredResult(_0x49aa7f,_0x560f5c))['catch'](handleError(_0x49aa7f,null));};exports[_0xd6c4('0x41')]=function(_0x3078b4,_0x54a92d){var _0x5b91a4={'raw':![],'where':{'id':_0x3078b4[_0xd6c4('0x42')]['id']}},_0x4e37a1={};_0x4e37a1[_0xd6c4('0x31')]=_['keys'](db['JscriptyProject']['rawAttributes']);_0x4e37a1[_0xd6c4('0x32')]=_['keys'](_0x3078b4['query']);_0x4e37a1[_0xd6c4('0x33')]=_[_0xd6c4('0x34')](_0x4e37a1[_0xd6c4('0x31')],_0x4e37a1[_0xd6c4('0x32')]);_0x5b91a4['attributes']=_[_0xd6c4('0x34')](_0x4e37a1[_0xd6c4('0x31')],qs[_0xd6c4('0x35')](_0x3078b4[_0xd6c4('0x32')][_0xd6c4('0x35')]));_0x5b91a4[_0xd6c4('0x36')]=_0x5b91a4['attributes'][_0xd6c4('0x43')]?_0x5b91a4[_0xd6c4('0x36')]:_0x4e37a1['model'];if(_0x3078b4[_0xd6c4('0x32')][_0xd6c4('0x40')]){_0x5b91a4['include']=[{'all':!![]}];}_0x5b91a4=_['merge']({},_0x5b91a4,_0x3078b4[_0xd6c4('0x3f')]);return db[_0xd6c4('0x2c')][_0xd6c4('0x44')](_0x5b91a4)['then'](handleEntityNotFound(_0x54a92d,null))[_0xd6c4('0x24')](respondWithResult(_0x54a92d,null))[_0xd6c4('0x45')](handleError(_0x54a92d,null));};exports['create']=function(_0x144621,_0x51d5cb){return db[_0xd6c4('0x2c')]['create'](_0x144621[_0xd6c4('0x46')],{})[_0xd6c4('0x24')](function(_0x24f745){var _0x563366=_0x144621[_0xd6c4('0x47')]['get']({'plain':!![]});if(!_0x563366)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x563366['role']==='user'){var _0x22735b=_0x24f745[_0xd6c4('0x25')]({'plain':!![]});var _0x429526='Projects';return db[_0xd6c4('0x48')][_0xd6c4('0x44')]({'where':{'name':_0x429526,'userProfileId':_0x563366[_0xd6c4('0x49')]},'raw':!![]})[_0xd6c4('0x24')](function(_0x1aafe8){if(_0x1aafe8&&_0x1aafe8[_0xd6c4('0x4a')]===0x0){return db[_0xd6c4('0x27')]['create']({'name':_0x22735b[_0xd6c4('0x29')],'resourceId':_0x22735b['id'],'type':_0x1aafe8[_0xd6c4('0x29')],'sectionId':_0x1aafe8['id']},{})['then'](function(){return _0x24f745;});}else{return _0x24f745;}})[_0xd6c4('0x45')](function(_0x4662b7){logger[_0xd6c4('0x4b')](_0xd6c4('0x4c'),_0x4662b7);throw _0x4662b7;});}return _0x24f745;})[_0xd6c4('0x24')](respondWithResult(_0x51d5cb,0xc9))[_0xd6c4('0x45')](handleError(_0x51d5cb,null));};exports[_0xd6c4('0x4d')]=function(_0x3c655e,_0x1004f7){var _0x11b3ad={'where':{'id':_0x3c655e[_0xd6c4('0x42')]['id']}},_0x3d27f2={};_0x3d27f2[_0xd6c4('0x31')]=_[_0xd6c4('0x4e')](db[_0xd6c4('0x2c')][_0xd6c4('0x2d')]);_0x11b3ad[_0xd6c4('0x36')]=_[_0xd6c4('0x34')](_0x3d27f2[_0xd6c4('0x31')],qs['fields'](_0x3c655e[_0xd6c4('0x32')][_0xd6c4('0x35')]));_0x11b3ad[_0xd6c4('0x36')]=_0x11b3ad[_0xd6c4('0x36')]['length']?_0x11b3ad[_0xd6c4('0x36')]:_0x3d27f2[_0xd6c4('0x31')];if(_0x3c655e[_0xd6c4('0x32')][_0xd6c4('0x40')]){_0x11b3ad[_0xd6c4('0x4f')]=[{'all':!![]}];}_0x11b3ad=_[_0xd6c4('0x3c')]({},_0x11b3ad,_0x3c655e[_0xd6c4('0x3f')]);return db[_0xd6c4('0x2c')][_0xd6c4('0x44')](_0x11b3ad)[_0xd6c4('0x24')](handleEntityNotFound(_0x1004f7,null))[_0xd6c4('0x24')](function(_0x44ed9d){if(_0x44ed9d){var _0x228924=_0x44ed9d[_0xd6c4('0x25')]({'plain':!![]});_0x228924=qs[_0xd6c4('0x50')](_0x228924,['id',_0xd6c4('0x51'),'updatedAt']);_0x3c655e[_0xd6c4('0x46')]=_[_0xd6c4('0x50')](_0x3c655e['body'],['id',_0xd6c4('0x51'),_0xd6c4('0x52')]);return db['JscriptyProject'][_0xd6c4('0x53')](_['merge'](_0x228924,_0x3c655e[_0xd6c4('0x46')]),{'include':_0x3c655e[_0xd6c4('0x32')]['includeAll']?[{'all':!![]}]:undefined})['then'](function(_0x47421e){var _0x2aab9e=_0x3c655e[_0xd6c4('0x47')][_0xd6c4('0x25')]({'plain':!![]});if(!_0x2aab9e)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2aab9e[_0xd6c4('0x54')]===_0xd6c4('0x47')){var _0x1af473=_0x47421e[_0xd6c4('0x25')]({'plain':!![]});var _0x2d6492=_0xd6c4('0x26');return db[_0xd6c4('0x48')][_0xd6c4('0x44')]({'where':{'name':_0x2d6492,'userProfileId':_0x2aab9e['userProfileId']},'raw':!![]})[_0xd6c4('0x24')](function(_0x72f90c){if(_0x72f90c&&_0x72f90c[_0xd6c4('0x4a')]===0x0){return db['UserProfileResource'][_0xd6c4('0x53')]({'name':_0x1af473[_0xd6c4('0x29')],'resourceId':_0x1af473['id'],'type':_0x72f90c[_0xd6c4('0x29')],'sectionId':_0x72f90c['id']},{})[_0xd6c4('0x24')](function(){return _0x47421e;});}else{return _0x47421e;}})[_0xd6c4('0x45')](function(_0x1a18a5){logger[_0xd6c4('0x4b')](_0xd6c4('0x4c'),_0x1a18a5);throw _0x1a18a5;});}return _0x47421e;});}})[_0xd6c4('0x24')](respondWithResult(_0x1004f7,0xc9))[_0xd6c4('0x45')](handleError(_0x1004f7,null));};exports[_0xd6c4('0x22')]=function(_0x3cacaf,_0x1cbf11){if(_0x3cacaf['body']['id']){delete _0x3cacaf[_0xd6c4('0x46')]['id'];}return db[_0xd6c4('0x2c')][_0xd6c4('0x44')]({'where':{'id':_0x3cacaf[_0xd6c4('0x42')]['id']}})[_0xd6c4('0x24')](handleEntityNotFound(_0x1cbf11,null))['then'](saveUpdates(_0x3cacaf['body'],null))[_0xd6c4('0x24')](respondWithResult(_0x1cbf11,null))[_0xd6c4('0x45')](handleError(_0x1cbf11,null));};exports[_0xd6c4('0x23')]=function(_0x1deaa0,_0x4f95e6){return db[_0xd6c4('0x2c')][_0xd6c4('0x44')]({'where':{'id':_0x1deaa0[_0xd6c4('0x42')]['id']}})['then'](handleEntityNotFound(_0x4f95e6,null))[_0xd6c4('0x24')](removeEntity(_0x4f95e6,null))[_0xd6c4('0x45')](handleError(_0x4f95e6,null));};exports[_0xd6c4('0x55')]=function(_0x1f66f8,_0x10e365,_0x452a4e){var _0x260bbf={'raw':!![],'where':{}};var _0x5eca8b={};var _0x5add7a={'count':0x0,'rows':[]};return db[_0xd6c4('0x2c')][_0xd6c4('0x56')]({'where':{'id':_0x1f66f8[_0xd6c4('0x42')]['id']}})[_0xd6c4('0x24')](handleEntityNotFound(_0x10e365,null))['then'](function(_0x143512){if(_0x143512){_0x5eca8b[_0xd6c4('0x31')]=_[_0xd6c4('0x4e')](db[_0xd6c4('0x57')][_0xd6c4('0x2d')]);_0x5eca8b[_0xd6c4('0x32')]=_[_0xd6c4('0x4e')](_0x1f66f8['query']);_0x5eca8b[_0xd6c4('0x33')]=_[_0xd6c4('0x34')](_0x5eca8b[_0xd6c4('0x31')],_0x5eca8b['query']);_0x260bbf['attributes']=_[_0xd6c4('0x34')](_0x5eca8b[_0xd6c4('0x31')],qs[_0xd6c4('0x35')](_0x1f66f8[_0xd6c4('0x32')][_0xd6c4('0x35')]));_0x260bbf['attributes']=_0x260bbf[_0xd6c4('0x36')]['length']?_0x260bbf[_0xd6c4('0x36')]:_0x5eca8b[_0xd6c4('0x31')];if(!_0x1f66f8['query'][_0xd6c4('0x58')](_0xd6c4('0x37'))){_0x260bbf[_0xd6c4('0x1d')]=qs[_0xd6c4('0x1d')](_0x1f66f8[_0xd6c4('0x32')]['limit']);_0x260bbf['offset']=qs['offset'](_0x1f66f8[_0xd6c4('0x32')][_0xd6c4('0x1a')]);}_0x260bbf[_0xd6c4('0x38')]=qs[_0xd6c4('0x39')](_0x1f66f8['query'][_0xd6c4('0x39')]);_0x260bbf['where']=qs[_0xd6c4('0x33')](_['pick'](_0x1f66f8['query'],_0x5eca8b['filters']));_0x260bbf[_0xd6c4('0x3a')][_0xd6c4('0x59')]=_0x143512['id'];if(_0x1f66f8[_0xd6c4('0x32')]['filter']){_0x260bbf[_0xd6c4('0x3a')]=_[_0xd6c4('0x3c')](_0x260bbf['where'],{'$or':_[_0xd6c4('0x2b')](_0x260bbf[_0xd6c4('0x36')],function(_0x5d8bd9){var _0x4babd7={};_0x4babd7[_0x5d8bd9]={'$like':'%'+_0x1f66f8[_0xd6c4('0x32')]['filter']+'%'};return _0x4babd7;})});}_0x260bbf=_[_0xd6c4('0x3c')]({},_0x260bbf,_0x1f66f8[_0xd6c4('0x3f')]);return db[_0xd6c4('0x57')][_0xd6c4('0x1c')]({'where':_0x260bbf['where']})['then'](function(_0x2b967d){_0x5add7a[_0xd6c4('0x1c')]=_0x2b967d;if(_0x1f66f8[_0xd6c4('0x32')]['includeAll']){_0x260bbf['include']=[{'all':!![]}];}return db[_0xd6c4('0x57')][_0xd6c4('0x5a')](_0x260bbf);})[_0xd6c4('0x24')](function(_0x33eb2f){_0x5add7a[_0xd6c4('0x5b')]=_0x33eb2f;return _0x5add7a;});}})['then'](respondWithFilteredResult(_0x10e365,_0x260bbf))[_0xd6c4('0x45')](handleError(_0x10e365,null));};exports[_0xd6c4('0x5c')]=function(_0x401a80,_0x57c305,_0x410a91){var _0x3623f9={'raw':!![],'where':{}};var _0x90b26a={};var _0x501b51={'count':0x0,'rows':[]};return db[_0xd6c4('0x2c')][_0xd6c4('0x56')]({'where':{'id':_0x401a80[_0xd6c4('0x42')]['id']}})['then'](handleEntityNotFound(_0x57c305,null))[_0xd6c4('0x24')](function(_0x1ef9b4){if(_0x1ef9b4){_0x90b26a[_0xd6c4('0x31')]=_[_0xd6c4('0x4e')](db[_0xd6c4('0x5d')][_0xd6c4('0x2d')]);_0x90b26a[_0xd6c4('0x32')]=_[_0xd6c4('0x4e')](_0x401a80['query']);_0x90b26a['filters']=_[_0xd6c4('0x34')](_0x90b26a[_0xd6c4('0x31')],_0x90b26a[_0xd6c4('0x32')]);_0x3623f9[_0xd6c4('0x36')]=_[_0xd6c4('0x34')](_0x90b26a['model'],qs['fields'](_0x401a80[_0xd6c4('0x32')][_0xd6c4('0x35')]));_0x3623f9[_0xd6c4('0x36')]=_0x3623f9[_0xd6c4('0x36')][_0xd6c4('0x43')]?_0x3623f9[_0xd6c4('0x36')]:_0x90b26a[_0xd6c4('0x31')];if(!_0x401a80[_0xd6c4('0x32')][_0xd6c4('0x58')]('nolimit')){_0x3623f9['limit']=qs['limit'](_0x401a80[_0xd6c4('0x32')][_0xd6c4('0x1d')]);_0x3623f9[_0xd6c4('0x1a')]=qs[_0xd6c4('0x1a')](_0x401a80[_0xd6c4('0x32')][_0xd6c4('0x1a')]);}_0x3623f9[_0xd6c4('0x38')]=qs[_0xd6c4('0x39')](_0x401a80[_0xd6c4('0x32')][_0xd6c4('0x39')]);_0x3623f9['where']=qs[_0xd6c4('0x33')](_[_0xd6c4('0x3b')](_0x401a80[_0xd6c4('0x32')],_0x90b26a[_0xd6c4('0x33')]));_0x3623f9[_0xd6c4('0x3a')][_0xd6c4('0x59')]=_0x1ef9b4['id'];if(_0x401a80[_0xd6c4('0x32')][_0xd6c4('0x3e')]){_0x3623f9['where']=_[_0xd6c4('0x3c')](_0x3623f9[_0xd6c4('0x3a')],{'$or':_[_0xd6c4('0x2b')](_0x3623f9['attributes'],function(_0x2381aa){var _0x41ec60={};_0x41ec60[_0x2381aa]={'$like':'%'+_0x401a80[_0xd6c4('0x32')][_0xd6c4('0x3e')]+'%'};return _0x41ec60;})});}_0x3623f9=_[_0xd6c4('0x3c')]({},_0x3623f9,_0x401a80[_0xd6c4('0x3f')]);return db[_0xd6c4('0x5d')]['count']({'where':_0x3623f9[_0xd6c4('0x3a')]})[_0xd6c4('0x24')](function(_0x44c6c3){_0x501b51[_0xd6c4('0x1c')]=_0x44c6c3;if(_0x401a80[_0xd6c4('0x32')][_0xd6c4('0x40')]){_0x3623f9[_0xd6c4('0x4f')]=[{'all':!![]}];}return db[_0xd6c4('0x5d')][_0xd6c4('0x5a')](_0x3623f9);})[_0xd6c4('0x24')](function(_0x317055){_0x501b51['rows']=_0x317055;return _0x501b51;});}})[_0xd6c4('0x24')](respondWithFilteredResult(_0x57c305,_0x3623f9))[_0xd6c4('0x45')](handleError(_0x57c305,null));};function char(_0x4c98cb){return'number'===typeof _0x4c98cb?String[_0xd6c4('0x5e')][_0xd6c4('0x1f')](null,arguments):_0x4c98cb;}function needsEncapsulation(_0x6d902b){return!!_0x6d902b&&(_0x6d902b[_0xd6c4('0x5f')]()[_0xd6c4('0x60')](char(0xd))>=0x0||_0x6d902b[_0xd6c4('0x5f')]()[_0xd6c4('0x60')](char(0xa))>=0x0||_0x6d902b['toString']()[_0xd6c4('0x60')](char(0x2c))>=0x0||_0x6d902b[_0xd6c4('0x5f')]()['indexOf'](char(0x22))>=0x0);}function encapsulate(_0x51489e){var _0x1d5e95=char(0x22),_0x35b00d='\x5c'+char(0x22),_0x443ae1=_0x51489e['toString']()[_0xd6c4('0x61')](new RegExp(_0x1d5e95,'g'),_0x35b00d);return _0x1d5e95+_0x443ae1+_0x1d5e95;}exports['getSummary']=function(_0x99a6b5,_0x3db26d,_0x3b8467){var _0x3c89a9,_0x3f8e7b;var _0x56a800={'where':{'ProjectId':_0x99a6b5[_0xd6c4('0x42')]['id']}};if(_0x99a6b5['query'][_0xd6c4('0x62')]){_0x56a800[_0xd6c4('0x3a')]['starttime']=JSON[_0xd6c4('0x63')](_0x99a6b5[_0xd6c4('0x32')][_0xd6c4('0x62')]);}return db[_0xd6c4('0x57')][_0xd6c4('0x5a')](_0x56a800)[_0xd6c4('0x24')](handleEntityNotFound(_0x3db26d,null))[_0xd6c4('0x24')](function(_0x226e15){if(_0x226e15){_0x3c89a9=_0x226e15;return db[_0xd6c4('0x64')][_0xd6c4('0x5a')]({'where':{'SessionId':{'$in':_['map'](_0x3c89a9,'id')},'ProjectId':_0x99a6b5[_0xd6c4('0x42')]['id']},'order':_0xd6c4('0x65')});}})['then'](handleEntityNotFound(_0x3db26d,null))[_0xd6c4('0x24')](function(_0x566819){if(_0x566819){_0x3f8e7b=_0x566819;var _0x22af34={};for(var _0x1673f8=0x0,_0xd37e02=_0x3f8e7b[_0xd6c4('0x43')];_0x1673f8<_0xd37e02;_0x1673f8++){if(!_0x22af34['hasOwnProperty'](_0x3f8e7b[_0x1673f8]['questionId'])){_0x22af34[_0x3f8e7b[_0x1673f8]['questionId']]=needsEncapsulation(_0x3f8e7b[_0x1673f8][_0xd6c4('0x66')])?encapsulate(_0x3f8e7b[_0x1673f8]['question']):_0x3f8e7b[_0x1673f8]['question'];}}var _0x456b27=[],_0x190b4d={};for(var _0xf4a9d2=0x0,_0x32de60=_0x3c89a9[_0xd6c4('0x43')];_0xf4a9d2<_0x32de60;_0xf4a9d2++){_0x190b4d={'ProjectId':_0x99a6b5[_0xd6c4('0x42')]['id'],'SessionId':_0x3c89a9[_0xf4a9d2]['id'],'StartTime':moment(_0x3c89a9[_0xf4a9d2][_0xd6c4('0x67')])['format'](_0xd6c4('0x68'))};for(var _0x81b7d2=0x0,_0x31c448=_0x3f8e7b['length'];_0x81b7d2<_0x31c448;_0x81b7d2++){if(_0x3f8e7b[_0x81b7d2]['SessionId']==_0x3c89a9[_0xf4a9d2]['id']&&_0x22af34[_0xd6c4('0x58')](_0x3f8e7b[_0x81b7d2][_0xd6c4('0x69')])){_0x190b4d[_0x22af34[_0x3f8e7b[_0x81b7d2][_0xd6c4('0x69')]]]=_0x3f8e7b[_0x81b7d2]['answer'];}}for(var _0x4d93b6 in _0x22af34){if(!_0x190b4d[_0xd6c4('0x58')](_0x22af34[_0x4d93b6])){_0x190b4d[_0x22af34[_0x4d93b6]]=null;}}_0x456b27[_0xd6c4('0x6a')](_0x190b4d);}return _0x456b27;}})[_0xd6c4('0x24')](function(_0x9b17d3){if(!_[_0xd6c4('0x6b')](_0x9b17d3)){var _0x10d720=toCsv(_0x9b17d3);var _0x942773=Date[_0xd6c4('0x6c')]();fs['writeFileSync'](util['format']('/tmp/Jscripty_Project_%d_Summary_%s.csv',_0x99a6b5[_0xd6c4('0x42')]['id'],_0x942773),_0x10d720);_0x3db26d[_0xd6c4('0x6d')](_0xd6c4('0x6e'),_0xd6c4('0x6f')+util[_0xd6c4('0x70')](_0xd6c4('0x71'),_0x99a6b5['params']['id'],_0x942773));_0x3db26d[_0xd6c4('0x6d')](_0xd6c4('0x72'),_0xd6c4('0x73'));return _0x3db26d[_0xd6c4('0x74')](util['format']('/tmp/Jscripty_Project_%d_Summary_%s.csv',_0x99a6b5[_0xd6c4('0x42')]['id'],_0x942773));}else{return _0x3db26d[_0xd6c4('0x28')](0xcc);}})[_0xd6c4('0x45')](handleError(_0x3db26d,null));};
\ No newline at end of file
index 65a4b32..1a5c7d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac31=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','define','JscriptyProject','jscripty_projects','lodash','util'];(function(_0x5b5603,_0x2abf98){var _0x402979=function(_0x128f73){while(--_0x128f73){_0x5b5603['push'](_0x5b5603['shift']());}};_0x402979(++_0x2abf98);}(_0xac31,0xca));var _0x1ac3=function(_0x547e37,_0x2d5852){_0x547e37=_0x547e37-0x0;var _0x3eaa7d=_0xac31[_0x547e37];return _0x3eaa7d;};'use strict';var _=require(_0x1ac3('0x0'));var util=require(_0x1ac3('0x1'));var logger=require(_0x1ac3('0x2'))(_0x1ac3('0x3'));var moment=require(_0x1ac3('0x4'));var BPromise=require(_0x1ac3('0x5'));var rp=require(_0x1ac3('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1ac3('0x7'));var config=require(_0x1ac3('0x8'));var attributes=require('./jscriptyProject.attributes');module['exports']=function(_0xbe22b7,_0x20027f){return _0xbe22b7[_0x1ac3('0x9')](_0x1ac3('0xa'),attributes,{'tableName':_0x1ac3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe9e7=['../../config/environment','./jscriptyProject.attributes','define','jscripty_projects','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf'];(function(_0x11b677,_0x2e556f){var _0x34ccdb=function(_0x28c277){while(--_0x28c277){_0x11b677['push'](_0x11b677['shift']());}};_0x34ccdb(++_0x2e556f);}(_0xe9e7,0x1f0));var _0x7e9e=function(_0x55081f,_0x3fc0e7){_0x55081f=_0x55081f-0x0;var _0x2f0566=_0xe9e7[_0x55081f];return _0x2f0566;};'use strict';var _=require(_0x7e9e('0x0'));var util=require(_0x7e9e('0x1'));var logger=require(_0x7e9e('0x2'))('api');var moment=require(_0x7e9e('0x3'));var BPromise=require(_0x7e9e('0x4'));var rp=require(_0x7e9e('0x5'));var fs=require('fs');var path=require(_0x7e9e('0x6'));var rimraf=require(_0x7e9e('0x7'));var config=require(_0x7e9e('0x8'));var attributes=require(_0x7e9e('0x9'));module['exports']=function(_0x319f70,_0x134fac){return _0x319f70[_0x7e9e('0xa')]('JscriptyProject',attributes,{'tableName':_0x7e9e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 451e835..3584281 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x5c70d0,_0xfeac42){var _0x484491=function(_0x533149){while(--_0x533149){_0x5c70d0['push'](_0x5c70d0['shift']());}};_0x484491(++_0xfeac42);}(_0xf4eb,0xec));var _0xbf4e=function(_0x254cba,_0x338141){_0x254cba=_0x254cba-0x0;var _0x49463a=_0xf4eb[_0x254cba];return _0x49463a;};'use strict';var _=require(_0xbf4e('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbf4e('0x1'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xbf4e('0x2'))(_0xbf4e('0x3'));var config=require(_0xbf4e('0x4'));var jayson=require(_0xbf4e('0x5'));var client=jayson[_0xbf4e('0x6')][_0xbf4e('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x15b99f,_0x540736,_0x449d55){return new BPromise(function(_0x5013c2,_0x5e23d4){return client[_0xbf4e('0x8')](_0x15b99f,_0x449d55)[_0xbf4e('0x9')](function(_0xcc4097){logger[_0xbf4e('0xa')](_0xbf4e('0xb'),_0x540736,_0xbf4e('0xc'));logger[_0xbf4e('0xd')]('JscriptyProject,\x20%s,\x20%s,\x20%s',_0x540736,'request\x20sent',JSON[_0xbf4e('0xe')](_0xcc4097));if(_0xcc4097['error']){if(_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x10')]===0x1f4){logger['error'](_0xbf4e('0xb'),_0x540736,_0xcc4097['error']['message']);return _0x5e23d4(_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x11')]);}logger[_0xbf4e('0xf')](_0xbf4e('0xb'),_0x540736,_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x11')]);return _0x5013c2(_0xcc4097['error']['message']);}else{logger[_0xbf4e('0xa')](_0xbf4e('0xb'),_0x540736,_0xbf4e('0xc'));_0x5013c2(_0xcc4097['result'][_0xbf4e('0x11')]);}})[_0xbf4e('0x12')](function(_0x912fc0){logger[_0xbf4e('0xf')]('JscriptyProject,\x20%s,\x20%s',_0x540736,_0x912fc0);_0x5e23d4(_0x912fc0);});});}
\ No newline at end of file
+var _0xbdb7=['request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','info','JscriptyProject,\x20%s,\x20%s'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xbdb7,0x12e));var _0x7bdb=function(_0x17882c,_0x4b964b){_0x17882c=_0x17882c-0x0;var _0x355a59=_0xbdb7[_0x17882c];return _0x355a59;};'use strict';var _=require(_0x7bdb('0x0'));var util=require(_0x7bdb('0x1'));var moment=require(_0x7bdb('0x2'));var BPromise=require(_0x7bdb('0x3'));var rs=require(_0x7bdb('0x4'));var fs=require('fs');var Redis=require(_0x7bdb('0x5'));var db=require(_0x7bdb('0x6'))['db'];var utils=require(_0x7bdb('0x7'));var logger=require(_0x7bdb('0x8'))('rpc');var config=require(_0x7bdb('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x7bdb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1e23a3,_0x493bde,_0x513cba){return new BPromise(function(_0x468041,_0x11a877){return client['request'](_0x1e23a3,_0x513cba)['then'](function(_0xdc2ffc){logger[_0x7bdb('0xb')](_0x7bdb('0xc'),_0x493bde,_0x7bdb('0xd'));logger[_0x7bdb('0xe')](_0x7bdb('0xf'),_0x493bde,_0x7bdb('0xd'),JSON[_0x7bdb('0x10')](_0xdc2ffc));if(_0xdc2ffc['error']){if(_0xdc2ffc['error']['code']===0x1f4){logger[_0x7bdb('0x11')](_0x7bdb('0xc'),_0x493bde,_0xdc2ffc['error'][_0x7bdb('0x12')]);return _0x11a877(_0xdc2ffc['error']['message']);}logger[_0x7bdb('0x11')](_0x7bdb('0xc'),_0x493bde,_0xdc2ffc['error']['message']);return _0x468041(_0xdc2ffc['error'][_0x7bdb('0x12')]);}else{logger[_0x7bdb('0xb')](_0x7bdb('0xc'),_0x493bde,_0x7bdb('0xd'));_0x468041(_0xdc2ffc[_0x7bdb('0x13')][_0x7bdb('0x12')]);}})[_0x7bdb('0x14')](function(_0x1b2d9b){logger['error'](_0x7bdb('0xc'),_0x493bde,_0x1b2d9b);_0x11a877(_0x1b2d9b);});});}
\ No newline at end of file
index cfdb0ed..ee1c8a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x903d=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller','get','isAuthenticated','index','/describe','describe','/:id','put','update','delete','destroy','exports','util','path','connect-timeout','Router'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x903d,0x1b4));var _0xd903=function(_0xf1b44d,_0xfdef4c){_0xf1b44d=_0xf1b44d-0x0;var _0x3d8dfb=_0x903d[_0xf1b44d];return _0x3d8dfb;};'use strict';var multer=require('multer');var util=require(_0xd903('0x0'));var path=require(_0xd903('0x1'));var timeout=require(_0xd903('0x2'));var express=require('express');var router=express[_0xd903('0x3')]();var fs_extra=require(_0xd903('0x4'));var auth=require(_0xd903('0x5'));var interaction=require(_0xd903('0x6'));var config=require(_0xd903('0x7'));var controller=require(_0xd903('0x8'));router[_0xd903('0x9')]('/',auth[_0xd903('0xa')](),controller[_0xd903('0xb')]);router[_0xd903('0x9')](_0xd903('0xc'),auth[_0xd903('0xa')](),controller[_0xd903('0xd')]);router[_0xd903('0x9')](_0xd903('0xe'),auth[_0xd903('0xa')](),controller['show']);router['post']('/',auth[_0xd903('0xa')](),controller['create']);router[_0xd903('0xf')](_0xd903('0xe'),auth[_0xd903('0xa')](),controller[_0xd903('0x10')]);router[_0xd903('0x11')](_0xd903('0xe'),auth[_0xd903('0xa')](),controller[_0xd903('0x12')]);module[_0xd903('0x13')]=router;
\ No newline at end of file
+var _0x8028=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','update','destroy','multer','util'];(function(_0x4e9628,_0x250573){var _0x27bc8c=function(_0xb3b7ae){while(--_0xb3b7ae){_0x4e9628['push'](_0x4e9628['shift']());}};_0x27bc8c(++_0x250573);}(_0x8028,0xe5));var _0x8802=function(_0x3a1b58,_0x16ae40){_0x3a1b58=_0x3a1b58-0x0;var _0x3f63b7=_0x8028[_0x3a1b58];return _0x3f63b7;};'use strict';var multer=require(_0x8802('0x0'));var util=require(_0x8802('0x1'));var path=require(_0x8802('0x2'));var timeout=require(_0x8802('0x3'));var express=require(_0x8802('0x4'));var router=express[_0x8802('0x5')]();var fs_extra=require(_0x8802('0x6'));var auth=require(_0x8802('0x7'));var interaction=require(_0x8802('0x8'));var config=require(_0x8802('0x9'));var controller=require(_0x8802('0xa'));router[_0x8802('0xb')]('/',auth[_0x8802('0xc')](),controller[_0x8802('0xd')]);router[_0x8802('0xb')](_0x8802('0xe'),auth[_0x8802('0xc')](),controller[_0x8802('0xf')]);router[_0x8802('0xb')](_0x8802('0x10'),auth[_0x8802('0xc')](),controller[_0x8802('0x11')]);router[_0x8802('0x12')]('/',auth[_0x8802('0xc')](),controller['create']);router['put'](_0x8802('0x10'),auth[_0x8802('0xc')](),controller[_0x8802('0x13')]);router['delete'](_0x8802('0x10'),auth[_0x8802('0xc')](),controller[_0x8802('0x14')]);module['exports']=router;
\ No newline at end of file
index e68f161..e7d1b8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x2e4aa2,_0x11956a){var _0x5e6092=function(_0x4c12c2){while(--_0x4c12c2){_0x2e4aa2['push'](_0x2e4aa2['shift']());}};_0x5e6092(++_0x11956a);}(_0x7a54,0x106));var _0x47a5=function(_0x32285e,_0x5e5694){_0x32285e=_0x32285e-0x0;var _0x4f29c2=_0x7a54[_0x32285e];return _0x4f29c2;};'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(_0x4d613c,_0x55f220){var _0x301fe3=function(_0x5eec0b){while(--_0x5eec0b){_0x4d613c['push'](_0x4d613c['shift']());}};_0x301fe3(++_0x55f220);}(_0x7a54,0x106));var _0x47a5=function(_0x470bf5,_0x45c141){_0x470bf5=_0x470bf5-0x0;var _0x317101=_0x7a54[_0x470bf5];return _0x317101;};'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 668ec00..17f3e66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d4c=['intersection','attributes','fields','nolimit','limit','sort','where','filter','merge','VIRTUAL','options','JscriptyQuestionReport','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','update','destroy','describe','eml-format','rimraf','fast-json-patch','moment','bluebird','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','set','Content-Range','apply','save','then','stack','name','index','map','rawAttributes','type','key','model','query','keys','filters'];(function(_0x57d9da,_0x3487e0){var _0x1d8809=function(_0xd33054){while(--_0xd33054){_0x57d9da['push'](_0x57d9da['shift']());}};_0x1d8809(++_0x3487e0);}(_0x9d4c,0xaa));var _0xc9d4=function(_0x12b650,_0x22418f){_0x12b650=_0x12b650-0x0;var _0x39c3d5=_0x9d4c[_0x12b650];return _0x39c3d5;};'use strict';var emlformat=require(_0xc9d4('0x0'));var rimraf=require(_0xc9d4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc9d4('0x2'));var rp=require('request-promise');var moment=require(_0xc9d4('0x3'));var BPromise=require(_0xc9d4('0x4'));var Mustache=require('mustache');var util=require(_0xc9d4('0x5'));var path=require(_0xc9d4('0x6'));var sox=require(_0xc9d4('0x7'));var csv=require(_0xc9d4('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc9d4('0x9'));var _=require('lodash');var squel=require(_0xc9d4('0xa'));var crypto=require(_0xc9d4('0xb'));var jsforce=require(_0xc9d4('0xc'));var deskjs=require(_0xc9d4('0xd'));var toCsv=require(_0xc9d4('0x8'));var querystring=require(_0xc9d4('0xe'));var Papa=require(_0xc9d4('0xf'));var Redis=require('ioredis');var authService=require(_0xc9d4('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xc9d4('0x11'));var hardwareService=require(_0xc9d4('0x12'));var logger=require('../../config/logger')(_0xc9d4('0x13'));var utils=require(_0xc9d4('0x14'));var config=require(_0xc9d4('0x15'));var licenseUtil=require(_0xc9d4('0x16'));var db=require(_0xc9d4('0x17'))['db'];function respondWithStatusCode(_0x29c887,_0x309cc3){_0x309cc3=_0x309cc3||0xcc;return function(_0x2a2b63){if(_0x2a2b63){return _0x29c887[_0xc9d4('0x18')](_0x309cc3);}return _0x29c887[_0xc9d4('0x19')](_0x309cc3)[_0xc9d4('0x1a')]();};}function respondWithResult(_0x6da4a3,_0x2e07f4){_0x2e07f4=_0x2e07f4||0xc8;return function(_0x1be6b2){if(_0x1be6b2){return _0x6da4a3[_0xc9d4('0x19')](_0x2e07f4)['json'](_0x1be6b2);}};}function respondWithFilteredResult(_0x25e248,_0x4b4777){return function(_0xdb59cb){if(_0xdb59cb){var _0x5e2393=typeof _0x4b4777[_0xc9d4('0x1b')]===_0xc9d4('0x1c')&&typeof _0x4b4777['limit']===_0xc9d4('0x1c');var _0x29f1cf=_0xdb59cb[_0xc9d4('0x1d')];var _0x475fc8=_0x5e2393?0x0:_0x4b4777['offset'];var _0x558b12=_0x5e2393?_0xdb59cb[_0xc9d4('0x1d')]:_0x4b4777['offset']+_0x4b4777['limit'];var _0x1c52f5;if(_0x558b12>=_0x29f1cf){_0x558b12=_0x29f1cf;_0x1c52f5=0xc8;}else{_0x1c52f5=0xce;}_0x25e248[_0xc9d4('0x19')](_0x1c52f5);return _0x25e248[_0xc9d4('0x1e')](_0xc9d4('0x1f'),_0x475fc8+'-'+_0x558b12+'/'+_0x29f1cf)['json'](_0xdb59cb);}return null;};}function patchUpdates(_0x4e040d){return function(_0x5047b8){try{jsonpatch[_0xc9d4('0x20')](_0x5047b8,_0x4e040d,!![]);}catch(_0xdeceef){return BPromise['reject'](_0xdeceef);}return _0x5047b8[_0xc9d4('0x21')]();};}function saveUpdates(_0x6bad7d,_0x5f564c){return function(_0x1321da){if(_0x1321da){return _0x1321da['update'](_0x6bad7d)[_0xc9d4('0x22')](function(_0x125ebd){return _0x125ebd;});}return null;};}function removeEntity(_0xa1f9f0,_0x4a2f64){return function(_0x3c4a95){if(_0x3c4a95){return _0x3c4a95['destroy']()[_0xc9d4('0x22')](function(){_0xa1f9f0['status'](0xcc)[_0xc9d4('0x1a')]();});}};}function handleEntityNotFound(_0x47f9f6,_0x20774e){return function(_0x3176d6){if(!_0x3176d6){_0x47f9f6[_0xc9d4('0x18')](0x194);}return _0x3176d6;};}function handleError(_0x41acc2,_0x128113){_0x128113=_0x128113||0x1f4;return function(_0x4e4503){logger['error'](_0x4e4503[_0xc9d4('0x23')]);if(_0x4e4503[_0xc9d4('0x24')]){delete _0x4e4503[_0xc9d4('0x24')];}_0x41acc2['status'](_0x128113)['send'](_0x4e4503);};}exports[_0xc9d4('0x25')]=function(_0x2cb166,_0x1e6c39){var _0x387d0e={},_0x4a8a28={},_0x2ae94c={'count':0x0,'rows':[]};var _0x4ac81c=_[_0xc9d4('0x26')](db['JscriptyQuestionReport'][_0xc9d4('0x27')],function(_0x23b12b){return{'name':_0x23b12b['fieldName'],'type':_0x23b12b[_0xc9d4('0x28')][_0xc9d4('0x29')]};});_0x4a8a28[_0xc9d4('0x2a')]=_[_0xc9d4('0x26')](_0x4ac81c,'name');_0x4a8a28[_0xc9d4('0x2b')]=_[_0xc9d4('0x2c')](_0x2cb166[_0xc9d4('0x2b')]);_0x4a8a28[_0xc9d4('0x2d')]=_[_0xc9d4('0x2e')](_0x4a8a28[_0xc9d4('0x2a')],_0x4a8a28[_0xc9d4('0x2b')]);_0x387d0e[_0xc9d4('0x2f')]=_[_0xc9d4('0x2e')](_0x4a8a28['model'],qs[_0xc9d4('0x30')](_0x2cb166[_0xc9d4('0x2b')][_0xc9d4('0x30')]));_0x387d0e[_0xc9d4('0x2f')]=_0x387d0e['attributes']['length']?_0x387d0e['attributes']:_0x4a8a28[_0xc9d4('0x2a')];if(!_0x2cb166[_0xc9d4('0x2b')]['hasOwnProperty'](_0xc9d4('0x31'))){_0x387d0e['limit']=qs['limit'](_0x2cb166[_0xc9d4('0x2b')][_0xc9d4('0x32')]);_0x387d0e[_0xc9d4('0x1b')]=qs[_0xc9d4('0x1b')](_0x2cb166[_0xc9d4('0x2b')][_0xc9d4('0x1b')]);}_0x387d0e['order']=qs[_0xc9d4('0x33')](_0x2cb166[_0xc9d4('0x2b')][_0xc9d4('0x33')]);_0x387d0e[_0xc9d4('0x34')]=qs[_0xc9d4('0x2d')](_['pick'](_0x2cb166[_0xc9d4('0x2b')],_0x4a8a28[_0xc9d4('0x2d')]),_0x4ac81c);if(_0x2cb166[_0xc9d4('0x2b')][_0xc9d4('0x35')]){_0x387d0e[_0xc9d4('0x34')]=_[_0xc9d4('0x36')](_0x387d0e[_0xc9d4('0x34')],{'$or':_[_0xc9d4('0x26')](_0x4ac81c,function(_0x4aa93b){if(_0x4aa93b[_0xc9d4('0x28')]!==_0xc9d4('0x37')){var _0x4c20cd={};_0x4c20cd[_0x4aa93b['name']]={'$like':'%'+_0x2cb166[_0xc9d4('0x2b')]['filter']+'%'};return _0x4c20cd;}})});}_0x387d0e=_[_0xc9d4('0x36')]({},_0x387d0e,_0x2cb166[_0xc9d4('0x38')]);var _0x5bf17d={'where':_0x387d0e['where']};return db[_0xc9d4('0x39')][_0xc9d4('0x1d')](_0x5bf17d)[_0xc9d4('0x22')](function(_0x4109c5){_0x2ae94c[_0xc9d4('0x1d')]=_0x4109c5;if(_0x2cb166[_0xc9d4('0x2b')][_0xc9d4('0x3a')]){_0x387d0e[_0xc9d4('0x3b')]=[{'all':!![]}];}return db[_0xc9d4('0x39')][_0xc9d4('0x3c')](_0x387d0e);})[_0xc9d4('0x22')](function(_0x53cf30){_0x2ae94c[_0xc9d4('0x3d')]=_0x53cf30;return _0x2ae94c;})[_0xc9d4('0x22')](respondWithFilteredResult(_0x1e6c39,_0x387d0e))[_0xc9d4('0x3e')](handleError(_0x1e6c39,null));};exports[_0xc9d4('0x3f')]=function(_0xe5e387,_0x8cdfcd){var _0x198335={'raw':!![],'where':{'id':_0xe5e387[_0xc9d4('0x40')]['id']}},_0x45106e={};_0x45106e[_0xc9d4('0x2a')]=_['keys'](db[_0xc9d4('0x39')][_0xc9d4('0x27')]);_0x45106e[_0xc9d4('0x2b')]=_['keys'](_0xe5e387[_0xc9d4('0x2b')]);_0x45106e['filters']=_[_0xc9d4('0x2e')](_0x45106e[_0xc9d4('0x2a')],_0x45106e[_0xc9d4('0x2b')]);_0x198335['attributes']=_[_0xc9d4('0x2e')](_0x45106e['model'],qs['fields'](_0xe5e387[_0xc9d4('0x2b')][_0xc9d4('0x30')]));_0x198335[_0xc9d4('0x2f')]=_0x198335[_0xc9d4('0x2f')][_0xc9d4('0x41')]?_0x198335[_0xc9d4('0x2f')]:_0x45106e['model'];if(_0xe5e387[_0xc9d4('0x2b')]['includeAll']){_0x198335[_0xc9d4('0x3b')]=[{'all':!![]}];}_0x198335=_['merge']({},_0x198335,_0xe5e387[_0xc9d4('0x38')]);return db[_0xc9d4('0x39')][_0xc9d4('0x42')](_0x198335)['then'](handleEntityNotFound(_0x8cdfcd,null))['then'](respondWithResult(_0x8cdfcd,null))[_0xc9d4('0x3e')](handleError(_0x8cdfcd,null));};exports[_0xc9d4('0x43')]=function(_0x5959a8,_0x12e9dd){return db['JscriptyQuestionReport'][_0xc9d4('0x43')](_0x5959a8[_0xc9d4('0x44')],{})[_0xc9d4('0x22')](respondWithResult(_0x12e9dd,0xc9))[_0xc9d4('0x3e')](handleError(_0x12e9dd,null));};exports[_0xc9d4('0x45')]=function(_0x170955,_0x3d2d30){if(_0x170955['body']['id']){delete _0x170955[_0xc9d4('0x44')]['id'];}return db[_0xc9d4('0x39')]['find']({'where':{'id':_0x170955[_0xc9d4('0x40')]['id']}})[_0xc9d4('0x22')](handleEntityNotFound(_0x3d2d30,null))[_0xc9d4('0x22')](saveUpdates(_0x170955[_0xc9d4('0x44')],null))[_0xc9d4('0x22')](respondWithResult(_0x3d2d30,null))['catch'](handleError(_0x3d2d30,null));};exports[_0xc9d4('0x46')]=function(_0x534201,_0x53340d){return db[_0xc9d4('0x39')]['find']({'where':{'id':_0x534201[_0xc9d4('0x40')]['id']}})[_0xc9d4('0x22')](handleEntityNotFound(_0x53340d,null))['then'](removeEntity(_0x53340d,null))[_0xc9d4('0x3e')](handleError(_0x53340d,null));};exports[_0xc9d4('0x47')]=function(_0x59458d,_0x535068){return db[_0xc9d4('0x39')][_0xc9d4('0x47')]()['then'](respondWithResult(_0x535068,null))['catch'](handleError(_0x535068,null));};
\ No newline at end of file
+var _0xb5fa=['body','update','find','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','save','then','destroy','error','stack','name','send','index','map','JscriptyQuestionReport','type','key','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','rawAttributes','include','create'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb5fa,0x9f));var _0xab5f=function(_0x50788d,_0x2049b8){_0x50788d=_0x50788d-0x0;var _0x21622f=_0xb5fa[_0x50788d];return _0x21622f;};'use strict';var emlformat=require(_0xab5f('0x0'));var rimraf=require(_0xab5f('0x1'));var zipdir=require(_0xab5f('0x2'));var jsonpatch=require(_0xab5f('0x3'));var rp=require(_0xab5f('0x4'));var moment=require(_0xab5f('0x5'));var BPromise=require(_0xab5f('0x6'));var Mustache=require(_0xab5f('0x7'));var util=require(_0xab5f('0x8'));var path=require(_0xab5f('0x9'));var sox=require(_0xab5f('0xa'));var csv=require(_0xab5f('0xb'));var ejs=require(_0xab5f('0xc'));var fs=require('fs');var fs_extra=require(_0xab5f('0xd'));var _=require(_0xab5f('0xe'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xab5f('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xab5f('0xb'));var querystring=require(_0xab5f('0x10'));var Papa=require(_0xab5f('0x11'));var Redis=require('ioredis');var authService=require(_0xab5f('0x12'));var qs=require(_0xab5f('0x13'));var as=require(_0xab5f('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xab5f('0x15'))(_0xab5f('0x16'));var utils=require(_0xab5f('0x17'));var config=require(_0xab5f('0x18'));var licenseUtil=require(_0xab5f('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4475e7,_0x376b4d){_0x376b4d=_0x376b4d||0xcc;return function(_0x3a05d6){if(_0x3a05d6){return _0x4475e7[_0xab5f('0x1a')](_0x376b4d);}return _0x4475e7[_0xab5f('0x1b')](_0x376b4d)[_0xab5f('0x1c')]();};}function respondWithResult(_0x9a7589,_0x4b90a0){_0x4b90a0=_0x4b90a0||0xc8;return function(_0x3babd5){if(_0x3babd5){return _0x9a7589[_0xab5f('0x1b')](_0x4b90a0)[_0xab5f('0x1d')](_0x3babd5);}};}function respondWithFilteredResult(_0x17218c,_0x3921eb){return function(_0x450eb5){if(_0x450eb5){var _0xa1b238=typeof _0x3921eb[_0xab5f('0x1e')]===_0xab5f('0x1f')&&typeof _0x3921eb[_0xab5f('0x20')]===_0xab5f('0x1f');var _0x2beb3b=_0x450eb5['count'];var _0x5afd87=_0xa1b238?0x0:_0x3921eb[_0xab5f('0x1e')];var _0x8f9b78=_0xa1b238?_0x450eb5[_0xab5f('0x21')]:_0x3921eb[_0xab5f('0x1e')]+_0x3921eb[_0xab5f('0x20')];var _0x586d63;if(_0x8f9b78>=_0x2beb3b){_0x8f9b78=_0x2beb3b;_0x586d63=0xc8;}else{_0x586d63=0xce;}_0x17218c['status'](_0x586d63);return _0x17218c[_0xab5f('0x22')]('Content-Range',_0x5afd87+'-'+_0x8f9b78+'/'+_0x2beb3b)['json'](_0x450eb5);}return null;};}function patchUpdates(_0x522eb2){return function(_0xc025b3){try{jsonpatch['apply'](_0xc025b3,_0x522eb2,!![]);}catch(_0x2e8b8a){return BPromise[_0xab5f('0x23')](_0x2e8b8a);}return _0xc025b3[_0xab5f('0x24')]();};}function saveUpdates(_0xf582ba,_0x5f7a1f){return function(_0x4d7631){if(_0x4d7631){return _0x4d7631['update'](_0xf582ba)[_0xab5f('0x25')](function(_0x1e6a19){return _0x1e6a19;});}return null;};}function removeEntity(_0x4430c9,_0x3fbfe3){return function(_0x344663){if(_0x344663){return _0x344663[_0xab5f('0x26')]()[_0xab5f('0x25')](function(){_0x4430c9[_0xab5f('0x1b')](0xcc)[_0xab5f('0x1c')]();});}};}function handleEntityNotFound(_0x1eea77,_0x20cae9){return function(_0x33ff0c){if(!_0x33ff0c){_0x1eea77['sendStatus'](0x194);}return _0x33ff0c;};}function handleError(_0x949d49,_0x31db5e){_0x31db5e=_0x31db5e||0x1f4;return function(_0x3f2039){logger[_0xab5f('0x27')](_0x3f2039[_0xab5f('0x28')]);if(_0x3f2039[_0xab5f('0x29')]){delete _0x3f2039[_0xab5f('0x29')];}_0x949d49[_0xab5f('0x1b')](_0x31db5e)[_0xab5f('0x2a')](_0x3f2039);};}exports[_0xab5f('0x2b')]=function(_0x2d44bd,_0x5f2ea6){var _0x272a72={},_0x50a4b0={},_0x15dfb5={'count':0x0,'rows':[]};var _0x56536c=_[_0xab5f('0x2c')](db[_0xab5f('0x2d')]['rawAttributes'],function(_0x3b584d){return{'name':_0x3b584d['fieldName'],'type':_0x3b584d[_0xab5f('0x2e')][_0xab5f('0x2f')]};});_0x50a4b0['model']=_[_0xab5f('0x2c')](_0x56536c,'name');_0x50a4b0[_0xab5f('0x30')]=_[_0xab5f('0x31')](_0x2d44bd['query']);_0x50a4b0[_0xab5f('0x32')]=_['intersection'](_0x50a4b0[_0xab5f('0x33')],_0x50a4b0[_0xab5f('0x30')]);_0x272a72[_0xab5f('0x34')]=_[_0xab5f('0x35')](_0x50a4b0[_0xab5f('0x33')],qs[_0xab5f('0x36')](_0x2d44bd[_0xab5f('0x30')]['fields']));_0x272a72[_0xab5f('0x34')]=_0x272a72[_0xab5f('0x34')][_0xab5f('0x37')]?_0x272a72[_0xab5f('0x34')]:_0x50a4b0[_0xab5f('0x33')];if(!_0x2d44bd[_0xab5f('0x30')][_0xab5f('0x38')]('nolimit')){_0x272a72['limit']=qs[_0xab5f('0x20')](_0x2d44bd[_0xab5f('0x30')]['limit']);_0x272a72[_0xab5f('0x1e')]=qs['offset'](_0x2d44bd[_0xab5f('0x30')][_0xab5f('0x1e')]);}_0x272a72['order']=qs[_0xab5f('0x39')](_0x2d44bd['query'][_0xab5f('0x39')]);_0x272a72[_0xab5f('0x3a')]=qs[_0xab5f('0x32')](_[_0xab5f('0x3b')](_0x2d44bd[_0xab5f('0x30')],_0x50a4b0[_0xab5f('0x32')]),_0x56536c);if(_0x2d44bd[_0xab5f('0x30')][_0xab5f('0x3c')]){_0x272a72[_0xab5f('0x3a')]=_[_0xab5f('0x3d')](_0x272a72[_0xab5f('0x3a')],{'$or':_['map'](_0x56536c,function(_0x3cbb69){if(_0x3cbb69['type']!==_0xab5f('0x3e')){var _0x83ac05={};_0x83ac05[_0x3cbb69['name']]={'$like':'%'+_0x2d44bd[_0xab5f('0x30')][_0xab5f('0x3c')]+'%'};return _0x83ac05;}})});}_0x272a72=_[_0xab5f('0x3d')]({},_0x272a72,_0x2d44bd[_0xab5f('0x3f')]);var _0x48e352={'where':_0x272a72[_0xab5f('0x3a')]};return db['JscriptyQuestionReport'][_0xab5f('0x21')](_0x48e352)[_0xab5f('0x25')](function(_0x119503){_0x15dfb5[_0xab5f('0x21')]=_0x119503;if(_0x2d44bd['query'][_0xab5f('0x40')]){_0x272a72['include']=[{'all':!![]}];}return db[_0xab5f('0x2d')][_0xab5f('0x41')](_0x272a72);})[_0xab5f('0x25')](function(_0x3f648a){_0x15dfb5[_0xab5f('0x42')]=_0x3f648a;return _0x15dfb5;})[_0xab5f('0x25')](respondWithFilteredResult(_0x5f2ea6,_0x272a72))[_0xab5f('0x43')](handleError(_0x5f2ea6,null));};exports[_0xab5f('0x44')]=function(_0x2eda81,_0x2b9df4){var _0x5b99f7={'raw':!![],'where':{'id':_0x2eda81['params']['id']}},_0x2c89a1={};_0x2c89a1['model']=_[_0xab5f('0x31')](db[_0xab5f('0x2d')][_0xab5f('0x45')]);_0x2c89a1[_0xab5f('0x30')]=_[_0xab5f('0x31')](_0x2eda81[_0xab5f('0x30')]);_0x2c89a1['filters']=_['intersection'](_0x2c89a1[_0xab5f('0x33')],_0x2c89a1[_0xab5f('0x30')]);_0x5b99f7['attributes']=_['intersection'](_0x2c89a1['model'],qs[_0xab5f('0x36')](_0x2eda81[_0xab5f('0x30')][_0xab5f('0x36')]));_0x5b99f7[_0xab5f('0x34')]=_0x5b99f7[_0xab5f('0x34')][_0xab5f('0x37')]?_0x5b99f7[_0xab5f('0x34')]:_0x2c89a1[_0xab5f('0x33')];if(_0x2eda81['query']['includeAll']){_0x5b99f7[_0xab5f('0x46')]=[{'all':!![]}];}_0x5b99f7=_[_0xab5f('0x3d')]({},_0x5b99f7,_0x2eda81[_0xab5f('0x3f')]);return db[_0xab5f('0x2d')]['find'](_0x5b99f7)[_0xab5f('0x25')](handleEntityNotFound(_0x2b9df4,null))[_0xab5f('0x25')](respondWithResult(_0x2b9df4,null))[_0xab5f('0x43')](handleError(_0x2b9df4,null));};exports[_0xab5f('0x47')]=function(_0x3e8336,_0x291f25){return db['JscriptyQuestionReport'][_0xab5f('0x47')](_0x3e8336[_0xab5f('0x48')],{})[_0xab5f('0x25')](respondWithResult(_0x291f25,0xc9))['catch'](handleError(_0x291f25,null));};exports[_0xab5f('0x49')]=function(_0x4291df,_0x446859){if(_0x4291df[_0xab5f('0x48')]['id']){delete _0x4291df[_0xab5f('0x48')]['id'];}return db[_0xab5f('0x2d')][_0xab5f('0x4a')]({'where':{'id':_0x4291df[_0xab5f('0x4b')]['id']}})[_0xab5f('0x25')](handleEntityNotFound(_0x446859,null))[_0xab5f('0x25')](saveUpdates(_0x4291df['body'],null))[_0xab5f('0x25')](respondWithResult(_0x446859,null))[_0xab5f('0x43')](handleError(_0x446859,null));};exports[_0xab5f('0x26')]=function(_0x444675,_0xd62158){return db[_0xab5f('0x2d')][_0xab5f('0x4a')]({'where':{'id':_0x444675['params']['id']}})[_0xab5f('0x25')](handleEntityNotFound(_0xd62158,null))[_0xab5f('0x25')](removeEntity(_0xd62158,null))[_0xab5f('0x43')](handleError(_0xd62158,null));};exports[_0xab5f('0x4c')]=function(_0x1a0d01,_0x583a43){return db[_0xab5f('0x2d')][_0xab5f('0x4c')]()[_0xab5f('0x25')](respondWithResult(_0x583a43,null))[_0xab5f('0x43')](handleError(_0x583a43,null));};
\ No newline at end of file
index cfbf556..05a768f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d5d=['api','bluebird','request-promise','rimraf','../../config/environment','exports','define','report_jscripty_questions','lodash','util','../../config/logger'];(function(_0x71fb3,_0x2b6e41){var _0x17cd49=function(_0x540588){while(--_0x540588){_0x71fb3['push'](_0x71fb3['shift']());}};_0x17cd49(++_0x2b6e41);}(_0x8d5d,0x110));var _0xd8d5=function(_0x425d50,_0x244fe6){_0x425d50=_0x425d50-0x0;var _0x2fe1f4=_0x8d5d[_0x425d50];return _0x2fe1f4;};'use strict';var _=require(_0xd8d5('0x0'));var util=require(_0xd8d5('0x1'));var logger=require(_0xd8d5('0x2'))(_0xd8d5('0x3'));var moment=require('moment');var BPromise=require(_0xd8d5('0x4'));var rp=require(_0xd8d5('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd8d5('0x6'));var config=require(_0xd8d5('0x7'));var attributes=require('./jscriptyQuestionReport.attributes');module[_0xd8d5('0x8')]=function(_0x1ea942,_0x4d46ee){return _0x1ea942[_0xd8d5('0x9')]('JscriptyQuestionReport',attributes,{'tableName':_0xd8d5('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfe14=['exports','define','report_jscripty_questions','util','moment','request-promise','path','rimraf','../../config/environment'];(function(_0xe8969c,_0x1a5279){var _0x165af5=function(_0x2195d7){while(--_0x2195d7){_0xe8969c['push'](_0xe8969c['shift']());}};_0x165af5(++_0x1a5279);}(_0xfe14,0x1f2));var _0x4fe1=function(_0x1d5dc5,_0x238990){_0x1d5dc5=_0x1d5dc5-0x0;var _0x2db555=_0xfe14[_0x1d5dc5];return _0x2db555;};'use strict';var _=require('lodash');var util=require(_0x4fe1('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x4fe1('0x1'));var BPromise=require('bluebird');var rp=require(_0x4fe1('0x2'));var fs=require('fs');var path=require(_0x4fe1('0x3'));var rimraf=require(_0x4fe1('0x4'));var config=require(_0x4fe1('0x5'));var attributes=require('./jscriptyQuestionReport.attributes');module[_0x4fe1('0x6')]=function(_0x2719fe,_0x4154f1){return _0x2719fe[_0x4fe1('0x7')]('JscriptyQuestionReport',attributes,{'tableName':_0x4fe1('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 55e917f..026a1af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe675=['bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','JscriptyQuestionReport,\x20%s,\x20%s','debug','request\x20sent','error','message','result','catch','lodash','util','moment'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xe675,0xcf));var _0x5e67=function(_0x52bf4e,_0x309762){_0x52bf4e=_0x52bf4e-0x0;var _0x45c923=_0xe675[_0x52bf4e];return _0x45c923;};'use strict';var _=require(_0x5e67('0x0'));var util=require(_0x5e67('0x1'));var moment=require(_0x5e67('0x2'));var BPromise=require(_0x5e67('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5e67('0x4'));var db=require(_0x5e67('0x5'))['db'];var utils=require(_0x5e67('0x6'));var logger=require(_0x5e67('0x7'))(_0x5e67('0x8'));var config=require('../../config/environment');var jayson=require(_0x5e67('0x9'));var client=jayson[_0x5e67('0xa')][_0x5e67('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4d2fb2,_0x345abb,_0x4db5ca){return new BPromise(function(_0x158ae8,_0x13ad2){return client['request'](_0x4d2fb2,_0x4db5ca)[_0x5e67('0xc')](function(_0x58a813){logger[_0x5e67('0xd')](_0x5e67('0xe'),_0x345abb,'request\x20sent');logger[_0x5e67('0xf')]('JscriptyQuestionReport,\x20%s,\x20%s,\x20%s',_0x345abb,_0x5e67('0x10'),JSON['stringify'](_0x58a813));if(_0x58a813[_0x5e67('0x11')]){if(_0x58a813[_0x5e67('0x11')]['code']===0x1f4){logger[_0x5e67('0x11')](_0x5e67('0xe'),_0x345abb,_0x58a813['error'][_0x5e67('0x12')]);return _0x13ad2(_0x58a813['error'][_0x5e67('0x12')]);}logger['error'](_0x5e67('0xe'),_0x345abb,_0x58a813[_0x5e67('0x11')][_0x5e67('0x12')]);return _0x158ae8(_0x58a813['error'][_0x5e67('0x12')]);}else{logger[_0x5e67('0xd')](_0x5e67('0xe'),_0x345abb,'request\x20sent');_0x158ae8(_0x58a813[_0x5e67('0x13')][_0x5e67('0x12')]);}})[_0x5e67('0x14')](function(_0x2e177e){logger[_0x5e67('0x11')](_0x5e67('0xe'),_0x345abb,_0x2e177e);_0x13ad2(_0x2e177e);});});}
\ No newline at end of file
+var _0xe89f=['JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info'];(function(_0x297eea,_0x5060be){var _0x1c42d2=function(_0x3afff4){while(--_0x3afff4){_0x297eea['push'](_0x297eea['shift']());}};_0x1c42d2(++_0x5060be);}(_0xe89f,0x11e));var _0xfe89=function(_0x3b2a1f,_0x430f90){_0x3b2a1f=_0x3b2a1f-0x0;var _0xb24e50=_0xe89f[_0x3b2a1f];return _0xb24e50;};'use strict';var _=require('lodash');var util=require(_0xfe89('0x0'));var moment=require('moment');var BPromise=require(_0xfe89('0x1'));var rs=require(_0xfe89('0x2'));var fs=require('fs');var Redis=require(_0xfe89('0x3'));var db=require(_0xfe89('0x4'))['db'];var utils=require(_0xfe89('0x5'));var logger=require(_0xfe89('0x6'))('rpc');var config=require(_0xfe89('0x7'));var jayson=require(_0xfe89('0x8'));var client=jayson['client'][_0xfe89('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x305942,_0x861ed,_0x5b0b74){return new BPromise(function(_0x578bba,_0x5c7d09){return client[_0xfe89('0xa')](_0x305942,_0x5b0b74)[_0xfe89('0xb')](function(_0x5260f9){logger[_0xfe89('0xc')](_0xfe89('0xd'),_0x861ed,_0xfe89('0xe'));logger[_0xfe89('0xf')](_0xfe89('0x10'),_0x861ed,_0xfe89('0xe'),JSON[_0xfe89('0x11')](_0x5260f9));if(_0x5260f9['error']){if(_0x5260f9[_0xfe89('0x12')][_0xfe89('0x13')]===0x1f4){logger[_0xfe89('0x12')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x861ed,_0x5260f9[_0xfe89('0x12')][_0xfe89('0x14')]);return _0x5c7d09(_0x5260f9[_0xfe89('0x12')]['message']);}logger[_0xfe89('0x12')](_0xfe89('0xd'),_0x861ed,_0x5260f9[_0xfe89('0x12')][_0xfe89('0x14')]);return _0x578bba(_0x5260f9['error'][_0xfe89('0x14')]);}else{logger[_0xfe89('0xc')](_0xfe89('0xd'),_0x861ed,'request\x20sent');_0x578bba(_0x5260f9[_0xfe89('0x15')]['message']);}})[_0xfe89('0x16')](function(_0x31b82f){logger['error']('JscriptyQuestionReport,\x20%s,\x20%s',_0x861ed,_0x31b82f);_0x5c7d09(_0x31b82f);});});}
\ No newline at end of file
index f644b2f..cf384d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf913=['describe','/:id','show','/:id/questions','getQuestions','post','create','put','update','destroy','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptySessionReport.controller','get','isAuthenticated','index'];(function(_0xb9d4a0,_0x567b19){var _0x2cc656=function(_0x47c335){while(--_0x47c335){_0xb9d4a0['push'](_0xb9d4a0['shift']());}};_0x2cc656(++_0x567b19);}(_0xf913,0x128));var _0x3f91=function(_0x1ab463,_0x27fa05){_0x1ab463=_0x1ab463-0x0;var _0x1904c1=_0xf913[_0x1ab463];return _0x1904c1;};'use strict';var multer=require(_0x3f91('0x0'));var util=require(_0x3f91('0x1'));var path=require(_0x3f91('0x2'));var timeout=require(_0x3f91('0x3'));var express=require('express');var router=express[_0x3f91('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x3f91('0x5'));var interaction=require(_0x3f91('0x6'));var config=require(_0x3f91('0x7'));var controller=require(_0x3f91('0x8'));router[_0x3f91('0x9')]('/',auth[_0x3f91('0xa')](),controller[_0x3f91('0xb')]);router[_0x3f91('0x9')]('/describe',auth[_0x3f91('0xa')](),controller[_0x3f91('0xc')]);router[_0x3f91('0x9')](_0x3f91('0xd'),auth[_0x3f91('0xa')](),controller[_0x3f91('0xe')]);router[_0x3f91('0x9')](_0x3f91('0xf'),auth[_0x3f91('0xa')](),controller[_0x3f91('0x10')]);router[_0x3f91('0x11')]('/',auth[_0x3f91('0xa')](),controller[_0x3f91('0x12')]);router[_0x3f91('0x13')](_0x3f91('0xd'),auth[_0x3f91('0xa')](),controller[_0x3f91('0x14')]);router['delete'](_0x3f91('0xd'),auth[_0x3f91('0xa')](),controller[_0x3f91('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0xd448=['connect-timeout','express','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','describe','/:id','show','/:id/questions','getQuestions','create','put','delete','destroy','exports','multer','util','path'];(function(_0x132019,_0x116eb9){var _0x40a7d3=function(_0x7466b){while(--_0x7466b){_0x132019['push'](_0x132019['shift']());}};_0x40a7d3(++_0x116eb9);}(_0xd448,0x165));var _0x8d44=function(_0x106d51,_0x2eb27c){_0x106d51=_0x106d51-0x0;var _0x1924b9=_0xd448[_0x106d51];return _0x1924b9;};'use strict';var multer=require(_0x8d44('0x0'));var util=require(_0x8d44('0x1'));var path=require(_0x8d44('0x2'));var timeout=require(_0x8d44('0x3'));var express=require(_0x8d44('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x8d44('0x5'));var interaction=require(_0x8d44('0x6'));var config=require('../../config/environment');var controller=require('./jscriptySessionReport.controller');router['get']('/',auth[_0x8d44('0x7')](),controller[_0x8d44('0x8')]);router[_0x8d44('0x9')]('/describe',auth[_0x8d44('0x7')](),controller[_0x8d44('0xa')]);router[_0x8d44('0x9')](_0x8d44('0xb'),auth[_0x8d44('0x7')](),controller[_0x8d44('0xc')]);router[_0x8d44('0x9')](_0x8d44('0xd'),auth[_0x8d44('0x7')](),controller[_0x8d44('0xe')]);router['post']('/',auth[_0x8d44('0x7')](),controller[_0x8d44('0xf')]);router[_0x8d44('0x10')]('/:id',auth[_0x8d44('0x7')](),controller['update']);router[_0x8d44('0x11')]('/:id',auth[_0x8d44('0x7')](),controller[_0x8d44('0x12')]);module[_0x8d44('0x13')]=router;
\ No newline at end of file
index c2ccd37..37397b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe538=['starttime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','STRING','BOOLEAN','moment','DATE','setDataValue'];(function(_0x5c7e77,_0x372833){var _0x31e43c=function(_0x26fe61){while(--_0x26fe61){_0x5c7e77['push'](_0x5c7e77['shift']());}};_0x31e43c(++_0x372833);}(_0xe538,0xba));var _0x8e53=function(_0x35a0e2,_0x302ad1){_0x35a0e2=_0x35a0e2-0x0;var _0x31ea9a=_0xe538[_0x35a0e2];return _0x31ea9a;};'use strict';var moment=require(_0x8e53('0x0'));var Sequelize=require('sequelize');module['exports']={'starttime':{'type':Sequelize[_0x8e53('0x1')],'set':function(_0x121804){this[_0x8e53('0x2')](_0x8e53('0x3'),_0x121804);this[_0x8e53('0x2')](_0x8e53('0x4'),moment()[_0x8e53('0x5')](_0x8e53('0x6')));}},'endtime':{'type':Sequelize[_0x8e53('0x1')]},'membername':{'type':Sequelize[_0x8e53('0x7')]},'projectname':{'type':Sequelize[_0x8e53('0x7')]},'queue':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x8e53('0x7')]},'calleridnum':{'type':Sequelize[_0x8e53('0x7')]},'completed':{'type':Sequelize[_0x8e53('0x8')],'defaultValue':![]}};
\ No newline at end of file
+var _0xc57e=['BOOLEAN','moment','DATE','starttime','setDataValue','endtime','format','YYYY-MM-DD\x20HH:mm:ss','STRING'];(function(_0x3ff353,_0x1f69c4){var _0x5e919c=function(_0xd1a6d4){while(--_0xd1a6d4){_0x3ff353['push'](_0x3ff353['shift']());}};_0x5e919c(++_0x1f69c4);}(_0xc57e,0xa3));var _0xec57=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xc57e[_0x20a584];return _0x4b41a8;};'use strict';var moment=require(_0xec57('0x0'));var Sequelize=require('sequelize');module['exports']={'starttime':{'type':Sequelize[_0xec57('0x1')],'set':function(_0x50ef7c){this['setDataValue'](_0xec57('0x2'),_0x50ef7c);this[_0xec57('0x3')](_0xec57('0x4'),moment()[_0xec57('0x5')](_0xec57('0x6')));}},'endtime':{'type':Sequelize['DATE']},'membername':{'type':Sequelize['STRING']},'projectname':{'type':Sequelize[_0xec57('0x7')]},'queue':{'type':Sequelize[_0xec57('0x7')]},'uniqueid':{'type':Sequelize[_0xec57('0x7')]},'calleridname':{'type':Sequelize[_0xec57('0x7')]},'calleridnum':{'type':Sequelize[_0xec57('0x7')]},'completed':{'type':Sequelize[_0xec57('0x8')],'defaultValue':![]}};
\ No newline at end of file
index e3ef650..d8211d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0804=['fast-json-patch','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','key','keys','filters','intersection','model','query','attributes','fields','length','order','sort','pick','filter','where','merge','options','JscriptySessionReport','include','findAll','rows','catch','show','params','includeAll','find','create','body','describe','getQuestions','findOne','JscriptyQuestionReport','hasOwnProperty','nolimit','SessionId','eml-format','zip-dir'];(function(_0x28ca54,_0x191410){var _0x4c6493=function(_0x5a78d3){while(--_0x5a78d3){_0x28ca54['push'](_0x28ca54['shift']());}};_0x4c6493(++_0x191410);}(_0x0804,0x18e));var _0x4080=function(_0x58547b,_0x4b89c2){_0x58547b=_0x58547b-0x0;var _0x1d3fd2=_0x0804[_0x58547b];return _0x1d3fd2;};'use strict';var emlformat=require(_0x4080('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4080('0x1'));var jsonpatch=require(_0x4080('0x2'));var rp=require('request-promise');var moment=require(_0x4080('0x3'));var BPromise=require(_0x4080('0x4'));var Mustache=require(_0x4080('0x5'));var util=require(_0x4080('0x6'));var path=require('path');var sox=require(_0x4080('0x7'));var csv=require('to-csv');var ejs=require(_0x4080('0x8'));var fs=require('fs');var fs_extra=require(_0x4080('0x9'));var _=require(_0x4080('0xa'));var squel=require(_0x4080('0xb'));var crypto=require(_0x4080('0xc'));var jsforce=require(_0x4080('0xd'));var deskjs=require(_0x4080('0xe'));var toCsv=require('to-csv');var querystring=require(_0x4080('0xf'));var Papa=require('papaparse');var Redis=require(_0x4080('0x10'));var authService=require(_0x4080('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x4080('0x12'));var hardwareService=require(_0x4080('0x13'));var logger=require('../../config/logger')(_0x4080('0x14'));var utils=require('../../config/utils');var config=require(_0x4080('0x15'));var licenseUtil=require(_0x4080('0x16'));var db=require(_0x4080('0x17'))['db'];function respondWithStatusCode(_0x5499b6,_0x18a39f){_0x18a39f=_0x18a39f||0xcc;return function(_0x3b4939){if(_0x3b4939){return _0x5499b6[_0x4080('0x18')](_0x18a39f);}return _0x5499b6[_0x4080('0x19')](_0x18a39f)[_0x4080('0x1a')]();};}function respondWithResult(_0x2ae2ba,_0xfb9bad){_0xfb9bad=_0xfb9bad||0xc8;return function(_0x11fff1){if(_0x11fff1){return _0x2ae2ba['status'](_0xfb9bad)[_0x4080('0x1b')](_0x11fff1);}};}function respondWithFilteredResult(_0x466f65,_0x36cd75){return function(_0x535e39){if(_0x535e39){var _0x380897=typeof _0x36cd75[_0x4080('0x1c')]==='undefined'&&typeof _0x36cd75[_0x4080('0x1d')]===_0x4080('0x1e');var _0x5662b8=_0x535e39[_0x4080('0x1f')];var _0x3731d9=_0x380897?0x0:_0x36cd75[_0x4080('0x1c')];var _0x621198=_0x380897?_0x535e39[_0x4080('0x1f')]:_0x36cd75[_0x4080('0x1c')]+_0x36cd75['limit'];var _0x29d8e7;if(_0x621198>=_0x5662b8){_0x621198=_0x5662b8;_0x29d8e7=0xc8;}else{_0x29d8e7=0xce;}_0x466f65[_0x4080('0x19')](_0x29d8e7);return _0x466f65['set'](_0x4080('0x20'),_0x3731d9+'-'+_0x621198+'/'+_0x5662b8)['json'](_0x535e39);}return null;};}function patchUpdates(_0x40d0fa){return function(_0x27fce7){try{jsonpatch[_0x4080('0x21')](_0x27fce7,_0x40d0fa,!![]);}catch(_0x38ea76){return BPromise[_0x4080('0x22')](_0x38ea76);}return _0x27fce7[_0x4080('0x23')]();};}function saveUpdates(_0x25c5a3,_0x318db0){return function(_0x53194d){if(_0x53194d){return _0x53194d[_0x4080('0x24')](_0x25c5a3)[_0x4080('0x25')](function(_0x5340fa){return _0x5340fa;});}return null;};}function removeEntity(_0x44834a,_0x466c10){return function(_0x52a2e7){if(_0x52a2e7){return _0x52a2e7[_0x4080('0x26')]()['then'](function(){_0x44834a['status'](0xcc)[_0x4080('0x1a')]();});}};}function handleEntityNotFound(_0x4c3f60,_0x5e98cc){return function(_0x5e0c64){if(!_0x5e0c64){_0x4c3f60[_0x4080('0x18')](0x194);}return _0x5e0c64;};}function handleError(_0x548b62,_0x2d2fd8){_0x2d2fd8=_0x2d2fd8||0x1f4;return function(_0x54e4b5){logger['error'](_0x54e4b5[_0x4080('0x27')]);if(_0x54e4b5[_0x4080('0x28')]){delete _0x54e4b5[_0x4080('0x28')];}_0x548b62[_0x4080('0x19')](_0x2d2fd8)[_0x4080('0x29')](_0x54e4b5);};}exports[_0x4080('0x2a')]=function(_0x16d283,_0x448c61){var _0x45b28a={},_0x3bd701={},_0x119f66={'count':0x0,'rows':[]};var _0x50a612=_[_0x4080('0x2b')](db['JscriptySessionReport'][_0x4080('0x2c')],function(_0x29c1d7){return{'name':_0x29c1d7[_0x4080('0x2d')],'type':_0x29c1d7['type'][_0x4080('0x2e')]};});_0x3bd701['model']=_[_0x4080('0x2b')](_0x50a612,'name');_0x3bd701['query']=_[_0x4080('0x2f')](_0x16d283['query']);_0x3bd701[_0x4080('0x30')]=_[_0x4080('0x31')](_0x3bd701[_0x4080('0x32')],_0x3bd701[_0x4080('0x33')]);_0x45b28a[_0x4080('0x34')]=_[_0x4080('0x31')](_0x3bd701['model'],qs[_0x4080('0x35')](_0x16d283[_0x4080('0x33')][_0x4080('0x35')]));_0x45b28a[_0x4080('0x34')]=_0x45b28a['attributes'][_0x4080('0x36')]?_0x45b28a[_0x4080('0x34')]:_0x3bd701[_0x4080('0x32')];if(!_0x16d283[_0x4080('0x33')]['hasOwnProperty']('nolimit')){_0x45b28a['limit']=qs[_0x4080('0x1d')](_0x16d283[_0x4080('0x33')][_0x4080('0x1d')]);_0x45b28a[_0x4080('0x1c')]=qs[_0x4080('0x1c')](_0x16d283[_0x4080('0x33')][_0x4080('0x1c')]);}_0x45b28a[_0x4080('0x37')]=qs[_0x4080('0x38')](_0x16d283['query'][_0x4080('0x38')]);_0x45b28a['where']=qs[_0x4080('0x30')](_[_0x4080('0x39')](_0x16d283[_0x4080('0x33')],_0x3bd701['filters']),_0x50a612);if(_0x16d283[_0x4080('0x33')][_0x4080('0x3a')]){_0x45b28a[_0x4080('0x3b')]=_[_0x4080('0x3c')](_0x45b28a[_0x4080('0x3b')],{'$or':_[_0x4080('0x2b')](_0x50a612,function(_0x2de5c0){if(_0x2de5c0['type']!=='VIRTUAL'){var _0x1302ae={};_0x1302ae[_0x2de5c0['name']]={'$like':'%'+_0x16d283[_0x4080('0x33')][_0x4080('0x3a')]+'%'};return _0x1302ae;}})});}_0x45b28a=_['merge']({},_0x45b28a,_0x16d283[_0x4080('0x3d')]);var _0x1f1ada={'where':_0x45b28a['where']};return db[_0x4080('0x3e')][_0x4080('0x1f')](_0x1f1ada)[_0x4080('0x25')](function(_0x323d11){_0x119f66[_0x4080('0x1f')]=_0x323d11;if(_0x16d283['query']['includeAll']){_0x45b28a[_0x4080('0x3f')]=[{'all':!![]}];}return db[_0x4080('0x3e')][_0x4080('0x40')](_0x45b28a);})[_0x4080('0x25')](function(_0x2b8bb2){_0x119f66[_0x4080('0x41')]=_0x2b8bb2;return _0x119f66;})[_0x4080('0x25')](respondWithFilteredResult(_0x448c61,_0x45b28a))[_0x4080('0x42')](handleError(_0x448c61,null));};exports[_0x4080('0x43')]=function(_0xc27f54,_0xc59d2f){var _0xa7863d={'raw':!![],'where':{'id':_0xc27f54[_0x4080('0x44')]['id']}},_0x191541={};_0x191541[_0x4080('0x32')]=_['keys'](db[_0x4080('0x3e')][_0x4080('0x2c')]);_0x191541[_0x4080('0x33')]=_['keys'](_0xc27f54[_0x4080('0x33')]);_0x191541[_0x4080('0x30')]=_[_0x4080('0x31')](_0x191541['model'],_0x191541[_0x4080('0x33')]);_0xa7863d[_0x4080('0x34')]=_[_0x4080('0x31')](_0x191541[_0x4080('0x32')],qs[_0x4080('0x35')](_0xc27f54[_0x4080('0x33')]['fields']));_0xa7863d[_0x4080('0x34')]=_0xa7863d['attributes']['length']?_0xa7863d['attributes']:_0x191541[_0x4080('0x32')];if(_0xc27f54[_0x4080('0x33')][_0x4080('0x45')]){_0xa7863d[_0x4080('0x3f')]=[{'all':!![]}];}_0xa7863d=_[_0x4080('0x3c')]({},_0xa7863d,_0xc27f54[_0x4080('0x3d')]);return db[_0x4080('0x3e')][_0x4080('0x46')](_0xa7863d)[_0x4080('0x25')](handleEntityNotFound(_0xc59d2f,null))[_0x4080('0x25')](respondWithResult(_0xc59d2f,null))[_0x4080('0x42')](handleError(_0xc59d2f,null));};exports[_0x4080('0x47')]=function(_0xd93492,_0x3b3eca){return db[_0x4080('0x3e')][_0x4080('0x47')](_0xd93492[_0x4080('0x48')],{})['then'](respondWithResult(_0x3b3eca,0xc9))[_0x4080('0x42')](handleError(_0x3b3eca,null));};exports[_0x4080('0x24')]=function(_0x5d5372,_0x5aef27){if(_0x5d5372[_0x4080('0x48')]['id']){delete _0x5d5372[_0x4080('0x48')]['id'];}return db[_0x4080('0x3e')]['find']({'where':{'id':_0x5d5372[_0x4080('0x44')]['id']}})[_0x4080('0x25')](handleEntityNotFound(_0x5aef27,null))[_0x4080('0x25')](saveUpdates(_0x5d5372[_0x4080('0x48')],null))[_0x4080('0x25')](respondWithResult(_0x5aef27,null))[_0x4080('0x42')](handleError(_0x5aef27,null));};exports[_0x4080('0x26')]=function(_0x125cd3,_0x39fa79){return db['JscriptySessionReport'][_0x4080('0x46')]({'where':{'id':_0x125cd3[_0x4080('0x44')]['id']}})[_0x4080('0x25')](handleEntityNotFound(_0x39fa79,null))[_0x4080('0x25')](removeEntity(_0x39fa79,null))[_0x4080('0x42')](handleError(_0x39fa79,null));};exports[_0x4080('0x49')]=function(_0x544236,_0x25fb99){return db[_0x4080('0x3e')][_0x4080('0x49')]()[_0x4080('0x25')](respondWithResult(_0x25fb99,null))['catch'](handleError(_0x25fb99,null));};exports[_0x4080('0x4a')]=function(_0x346a3d,_0x1c18e9,_0x2de950){var _0x158807={'raw':!![],'where':{}};var _0x10d46d={};var _0x219b59={'count':0x0,'rows':[]};return db['JscriptySessionReport'][_0x4080('0x4b')]({'where':{'id':_0x346a3d['params']['id']}})[_0x4080('0x25')](handleEntityNotFound(_0x1c18e9,null))['then'](function(_0x7942b0){if(_0x7942b0){_0x10d46d[_0x4080('0x32')]=_[_0x4080('0x2f')](db[_0x4080('0x4c')][_0x4080('0x2c')]);_0x10d46d[_0x4080('0x33')]=_[_0x4080('0x2f')](_0x346a3d[_0x4080('0x33')]);_0x10d46d['filters']=_[_0x4080('0x31')](_0x10d46d[_0x4080('0x32')],_0x10d46d[_0x4080('0x33')]);_0x158807[_0x4080('0x34')]=_[_0x4080('0x31')](_0x10d46d[_0x4080('0x32')],qs[_0x4080('0x35')](_0x346a3d[_0x4080('0x33')][_0x4080('0x35')]));_0x158807[_0x4080('0x34')]=_0x158807[_0x4080('0x34')][_0x4080('0x36')]?_0x158807[_0x4080('0x34')]:_0x10d46d[_0x4080('0x32')];if(!_0x346a3d[_0x4080('0x33')][_0x4080('0x4d')](_0x4080('0x4e'))){_0x158807[_0x4080('0x1d')]=qs['limit'](_0x346a3d[_0x4080('0x33')][_0x4080('0x1d')]);_0x158807[_0x4080('0x1c')]=qs[_0x4080('0x1c')](_0x346a3d['query'][_0x4080('0x1c')]);}_0x158807[_0x4080('0x37')]=qs['sort'](_0x346a3d[_0x4080('0x33')][_0x4080('0x38')]);_0x158807['where']=qs[_0x4080('0x30')](_['pick'](_0x346a3d[_0x4080('0x33')],_0x10d46d[_0x4080('0x30')]));_0x158807[_0x4080('0x3b')][_0x4080('0x4f')]=_0x7942b0['id'];if(_0x346a3d[_0x4080('0x33')]['filter']){_0x158807[_0x4080('0x3b')]=_[_0x4080('0x3c')](_0x158807['where'],{'$or':_[_0x4080('0x2b')](_0x158807['attributes'],function(_0x3588f4){var _0x1dde25={};_0x1dde25[_0x3588f4]={'$like':'%'+_0x346a3d[_0x4080('0x33')]['filter']+'%'};return _0x1dde25;})});}_0x158807=_[_0x4080('0x3c')]({},_0x158807,_0x346a3d[_0x4080('0x3d')]);return db[_0x4080('0x4c')][_0x4080('0x1f')]({'where':_0x158807[_0x4080('0x3b')]})[_0x4080('0x25')](function(_0x17b1e3){_0x219b59[_0x4080('0x1f')]=_0x17b1e3;if(_0x346a3d['query'][_0x4080('0x45')]){_0x158807['include']=[{'all':!![]}];}return db[_0x4080('0x4c')][_0x4080('0x40')](_0x158807);})[_0x4080('0x25')](function(_0x571ea6){_0x219b59['rows']=_0x571ea6;return _0x219b59;});}})[_0x4080('0x25')](respondWithFilteredResult(_0x1c18e9,_0x158807))[_0x4080('0x42')](handleError(_0x1c18e9,null));};
\ No newline at end of file
+var _0x8219=['crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','end','status','offset','undefined','count','limit','set','apply','reject','save','then','stack','name','send','map','JscriptySessionReport','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','findAll','rows','catch','show','params','rawAttributes','include','find','create','body','update','destroy','getQuestions','findOne','JscriptyQuestionReport','SessionId','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash'];(function(_0x161f7b,_0x40b649){var _0x3ec45f=function(_0x2816aa){while(--_0x2816aa){_0x161f7b['push'](_0x161f7b['shift']());}};_0x3ec45f(++_0x40b649);}(_0x8219,0x1cd));var _0x9821=function(_0x299ecf,_0x5e642b){_0x299ecf=_0x299ecf-0x0;var _0x4813c9=_0x8219[_0x299ecf];return _0x4813c9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9821('0x0'));var zipdir=require(_0x9821('0x1'));var jsonpatch=require(_0x9821('0x2'));var rp=require(_0x9821('0x3'));var moment=require(_0x9821('0x4'));var BPromise=require(_0x9821('0x5'));var Mustache=require('mustache');var util=require(_0x9821('0x6'));var path=require(_0x9821('0x7'));var sox=require(_0x9821('0x8'));var csv=require(_0x9821('0x9'));var ejs=require(_0x9821('0xa'));var fs=require('fs');var fs_extra=require(_0x9821('0xb'));var _=require(_0x9821('0xc'));var squel=require('squel');var crypto=require(_0x9821('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x9821('0xe'));var toCsv=require(_0x9821('0x9'));var querystring=require('querystring');var Papa=require(_0x9821('0xf'));var Redis=require('ioredis');var authService=require(_0x9821('0x10'));var qs=require(_0x9821('0x11'));var as=require(_0x9821('0x12'));var hardwareService=require(_0x9821('0x13'));var logger=require(_0x9821('0x14'))(_0x9821('0x15'));var utils=require('../../config/utils');var config=require(_0x9821('0x16'));var licenseUtil=require(_0x9821('0x17'));var db=require(_0x9821('0x18'))['db'];function respondWithStatusCode(_0x79e2c9,_0x37a46a){_0x37a46a=_0x37a46a||0xcc;return function(_0x4a79a3){if(_0x4a79a3){return _0x79e2c9['sendStatus'](_0x37a46a);}return _0x79e2c9['status'](_0x37a46a)[_0x9821('0x19')]();};}function respondWithResult(_0x5b6782,_0xd02387){_0xd02387=_0xd02387||0xc8;return function(_0x47608f){if(_0x47608f){return _0x5b6782[_0x9821('0x1a')](_0xd02387)['json'](_0x47608f);}};}function respondWithFilteredResult(_0x4349d1,_0x2918db){return function(_0x50fd20){if(_0x50fd20){var _0x51b303=typeof _0x2918db[_0x9821('0x1b')]===_0x9821('0x1c')&&typeof _0x2918db['limit']===_0x9821('0x1c');var _0x10bf44=_0x50fd20[_0x9821('0x1d')];var _0x441dfa=_0x51b303?0x0:_0x2918db[_0x9821('0x1b')];var _0x47e4a5=_0x51b303?_0x50fd20[_0x9821('0x1d')]:_0x2918db[_0x9821('0x1b')]+_0x2918db[_0x9821('0x1e')];var _0x98ee63;if(_0x47e4a5>=_0x10bf44){_0x47e4a5=_0x10bf44;_0x98ee63=0xc8;}else{_0x98ee63=0xce;}_0x4349d1[_0x9821('0x1a')](_0x98ee63);return _0x4349d1[_0x9821('0x1f')]('Content-Range',_0x441dfa+'-'+_0x47e4a5+'/'+_0x10bf44)['json'](_0x50fd20);}return null;};}function patchUpdates(_0x190ff0){return function(_0x3e3730){try{jsonpatch[_0x9821('0x20')](_0x3e3730,_0x190ff0,!![]);}catch(_0x4ebf08){return BPromise[_0x9821('0x21')](_0x4ebf08);}return _0x3e3730[_0x9821('0x22')]();};}function saveUpdates(_0x317291,_0x3fa9a6){return function(_0x10568c){if(_0x10568c){return _0x10568c['update'](_0x317291)[_0x9821('0x23')](function(_0x479e33){return _0x479e33;});}return null;};}function removeEntity(_0xd9307f,_0x22282){return function(_0x5b7a48){if(_0x5b7a48){return _0x5b7a48['destroy']()[_0x9821('0x23')](function(){_0xd9307f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x138b90,_0xb7c229){return function(_0x4b45b3){if(!_0x4b45b3){_0x138b90['sendStatus'](0x194);}return _0x4b45b3;};}function handleError(_0x139d99,_0x5f1abd){_0x5f1abd=_0x5f1abd||0x1f4;return function(_0x73b208){logger['error'](_0x73b208[_0x9821('0x24')]);if(_0x73b208[_0x9821('0x25')]){delete _0x73b208[_0x9821('0x25')];}_0x139d99[_0x9821('0x1a')](_0x5f1abd)[_0x9821('0x26')](_0x73b208);};}exports['index']=function(_0xfaa9a6,_0x74eeeb){var _0x20be0d={},_0x37a518={},_0x37e358={'count':0x0,'rows':[]};var _0x1f9c47=_[_0x9821('0x27')](db[_0x9821('0x28')]['rawAttributes'],function(_0x25842b){return{'name':_0x25842b[_0x9821('0x29')],'type':_0x25842b[_0x9821('0x2a')][_0x9821('0x2b')]};});_0x37a518[_0x9821('0x2c')]=_['map'](_0x1f9c47,'name');_0x37a518[_0x9821('0x2d')]=_[_0x9821('0x2e')](_0xfaa9a6[_0x9821('0x2d')]);_0x37a518[_0x9821('0x2f')]=_['intersection'](_0x37a518['model'],_0x37a518['query']);_0x20be0d[_0x9821('0x30')]=_[_0x9821('0x31')](_0x37a518[_0x9821('0x2c')],qs[_0x9821('0x32')](_0xfaa9a6[_0x9821('0x2d')]['fields']));_0x20be0d[_0x9821('0x30')]=_0x20be0d[_0x9821('0x30')][_0x9821('0x33')]?_0x20be0d[_0x9821('0x30')]:_0x37a518[_0x9821('0x2c')];if(!_0xfaa9a6[_0x9821('0x2d')][_0x9821('0x34')](_0x9821('0x35'))){_0x20be0d[_0x9821('0x1e')]=qs['limit'](_0xfaa9a6['query'][_0x9821('0x1e')]);_0x20be0d[_0x9821('0x1b')]=qs[_0x9821('0x1b')](_0xfaa9a6[_0x9821('0x2d')]['offset']);}_0x20be0d[_0x9821('0x36')]=qs['sort'](_0xfaa9a6['query'][_0x9821('0x37')]);_0x20be0d[_0x9821('0x38')]=qs[_0x9821('0x2f')](_[_0x9821('0x39')](_0xfaa9a6[_0x9821('0x2d')],_0x37a518[_0x9821('0x2f')]),_0x1f9c47);if(_0xfaa9a6[_0x9821('0x2d')]['filter']){_0x20be0d[_0x9821('0x38')]=_['merge'](_0x20be0d[_0x9821('0x38')],{'$or':_['map'](_0x1f9c47,function(_0x51a1b5){if(_0x51a1b5[_0x9821('0x2a')]!==_0x9821('0x3a')){var _0x4c9491={};_0x4c9491[_0x51a1b5[_0x9821('0x25')]]={'$like':'%'+_0xfaa9a6['query'][_0x9821('0x3b')]+'%'};return _0x4c9491;}})});}_0x20be0d=_[_0x9821('0x3c')]({},_0x20be0d,_0xfaa9a6[_0x9821('0x3d')]);var _0x241245={'where':_0x20be0d[_0x9821('0x38')]};return db[_0x9821('0x28')][_0x9821('0x1d')](_0x241245)[_0x9821('0x23')](function(_0x1b8524){_0x37e358['count']=_0x1b8524;if(_0xfaa9a6['query'][_0x9821('0x3e')]){_0x20be0d['include']=[{'all':!![]}];}return db['JscriptySessionReport'][_0x9821('0x3f')](_0x20be0d);})[_0x9821('0x23')](function(_0x3f112a){_0x37e358[_0x9821('0x40')]=_0x3f112a;return _0x37e358;})[_0x9821('0x23')](respondWithFilteredResult(_0x74eeeb,_0x20be0d))[_0x9821('0x41')](handleError(_0x74eeeb,null));};exports[_0x9821('0x42')]=function(_0x29b9dc,_0x439083){var _0x2c64c6={'raw':!![],'where':{'id':_0x29b9dc[_0x9821('0x43')]['id']}},_0x4647f6={};_0x4647f6['model']=_[_0x9821('0x2e')](db['JscriptySessionReport'][_0x9821('0x44')]);_0x4647f6['query']=_[_0x9821('0x2e')](_0x29b9dc[_0x9821('0x2d')]);_0x4647f6[_0x9821('0x2f')]=_[_0x9821('0x31')](_0x4647f6[_0x9821('0x2c')],_0x4647f6['query']);_0x2c64c6[_0x9821('0x30')]=_[_0x9821('0x31')](_0x4647f6[_0x9821('0x2c')],qs['fields'](_0x29b9dc[_0x9821('0x2d')][_0x9821('0x32')]));_0x2c64c6['attributes']=_0x2c64c6['attributes'][_0x9821('0x33')]?_0x2c64c6[_0x9821('0x30')]:_0x4647f6[_0x9821('0x2c')];if(_0x29b9dc[_0x9821('0x2d')][_0x9821('0x3e')]){_0x2c64c6[_0x9821('0x45')]=[{'all':!![]}];}_0x2c64c6=_[_0x9821('0x3c')]({},_0x2c64c6,_0x29b9dc[_0x9821('0x3d')]);return db['JscriptySessionReport'][_0x9821('0x46')](_0x2c64c6)[_0x9821('0x23')](handleEntityNotFound(_0x439083,null))[_0x9821('0x23')](respondWithResult(_0x439083,null))[_0x9821('0x41')](handleError(_0x439083,null));};exports[_0x9821('0x47')]=function(_0x22355e,_0x4f2ca0){return db[_0x9821('0x28')][_0x9821('0x47')](_0x22355e[_0x9821('0x48')],{})[_0x9821('0x23')](respondWithResult(_0x4f2ca0,0xc9))[_0x9821('0x41')](handleError(_0x4f2ca0,null));};exports[_0x9821('0x49')]=function(_0x4cf68f,_0x5393cd){if(_0x4cf68f[_0x9821('0x48')]['id']){delete _0x4cf68f[_0x9821('0x48')]['id'];}return db[_0x9821('0x28')][_0x9821('0x46')]({'where':{'id':_0x4cf68f[_0x9821('0x43')]['id']}})[_0x9821('0x23')](handleEntityNotFound(_0x5393cd,null))[_0x9821('0x23')](saveUpdates(_0x4cf68f[_0x9821('0x48')],null))[_0x9821('0x23')](respondWithResult(_0x5393cd,null))[_0x9821('0x41')](handleError(_0x5393cd,null));};exports[_0x9821('0x4a')]=function(_0x617bd6,_0x390684){return db[_0x9821('0x28')]['find']({'where':{'id':_0x617bd6[_0x9821('0x43')]['id']}})[_0x9821('0x23')](handleEntityNotFound(_0x390684,null))[_0x9821('0x23')](removeEntity(_0x390684,null))[_0x9821('0x41')](handleError(_0x390684,null));};exports['describe']=function(_0x458a2a,_0x2b07e2){return db[_0x9821('0x28')]['describe']()[_0x9821('0x23')](respondWithResult(_0x2b07e2,null))[_0x9821('0x41')](handleError(_0x2b07e2,null));};exports[_0x9821('0x4b')]=function(_0x3cf61b,_0x594ba2,_0x2e15cc){var _0x2881da={'raw':!![],'where':{}};var _0x1dbe2f={};var _0x18b777={'count':0x0,'rows':[]};return db['JscriptySessionReport'][_0x9821('0x4c')]({'where':{'id':_0x3cf61b[_0x9821('0x43')]['id']}})[_0x9821('0x23')](handleEntityNotFound(_0x594ba2,null))[_0x9821('0x23')](function(_0x173493){if(_0x173493){_0x1dbe2f[_0x9821('0x2c')]=_[_0x9821('0x2e')](db[_0x9821('0x4d')][_0x9821('0x44')]);_0x1dbe2f['query']=_[_0x9821('0x2e')](_0x3cf61b[_0x9821('0x2d')]);_0x1dbe2f[_0x9821('0x2f')]=_[_0x9821('0x31')](_0x1dbe2f['model'],_0x1dbe2f[_0x9821('0x2d')]);_0x2881da[_0x9821('0x30')]=_['intersection'](_0x1dbe2f[_0x9821('0x2c')],qs[_0x9821('0x32')](_0x3cf61b['query'][_0x9821('0x32')]));_0x2881da[_0x9821('0x30')]=_0x2881da['attributes'][_0x9821('0x33')]?_0x2881da['attributes']:_0x1dbe2f[_0x9821('0x2c')];if(!_0x3cf61b[_0x9821('0x2d')][_0x9821('0x34')]('nolimit')){_0x2881da[_0x9821('0x1e')]=qs[_0x9821('0x1e')](_0x3cf61b[_0x9821('0x2d')][_0x9821('0x1e')]);_0x2881da[_0x9821('0x1b')]=qs[_0x9821('0x1b')](_0x3cf61b[_0x9821('0x2d')][_0x9821('0x1b')]);}_0x2881da['order']=qs['sort'](_0x3cf61b['query'][_0x9821('0x37')]);_0x2881da[_0x9821('0x38')]=qs[_0x9821('0x2f')](_[_0x9821('0x39')](_0x3cf61b['query'],_0x1dbe2f[_0x9821('0x2f')]));_0x2881da[_0x9821('0x38')][_0x9821('0x4e')]=_0x173493['id'];if(_0x3cf61b[_0x9821('0x2d')][_0x9821('0x3b')]){_0x2881da['where']=_[_0x9821('0x3c')](_0x2881da[_0x9821('0x38')],{'$or':_['map'](_0x2881da[_0x9821('0x30')],function(_0x3fb4ec){var _0x289d51={};_0x289d51[_0x3fb4ec]={'$like':'%'+_0x3cf61b[_0x9821('0x2d')]['filter']+'%'};return _0x289d51;})});}_0x2881da=_[_0x9821('0x3c')]({},_0x2881da,_0x3cf61b['options']);return db[_0x9821('0x4d')][_0x9821('0x1d')]({'where':_0x2881da['where']})[_0x9821('0x23')](function(_0x5cd67b){_0x18b777['count']=_0x5cd67b;if(_0x3cf61b[_0x9821('0x2d')][_0x9821('0x3e')]){_0x2881da[_0x9821('0x45')]=[{'all':!![]}];}return db[_0x9821('0x4d')][_0x9821('0x3f')](_0x2881da);})[_0x9821('0x23')](function(_0x6feb7d){_0x18b777[_0x9821('0x40')]=_0x6feb7d;return _0x18b777;});}})[_0x9821('0x23')](respondWithFilteredResult(_0x594ba2,_0x2881da))[_0x9821('0x41')](handleError(_0x594ba2,null));};
\ No newline at end of file
index 846700e..7d0146a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fbe=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./jscriptySessionReport.attributes','exports','define','JscriptySessionReport'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x25f0d5,_0xc2dbf1){_0x25f0d5=_0x25f0d5-0x0;var _0x3dac6b=_0x7fbe[_0x25f0d5];return _0x3dac6b;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xe7fb('0x0'))(_0xe7fb('0x1'));var moment=require(_0xe7fb('0x2'));var BPromise=require(_0xe7fb('0x3'));var rp=require(_0xe7fb('0x4'));var fs=require('fs');var path=require(_0xe7fb('0x5'));var rimraf=require(_0xe7fb('0x6'));var config=require(_0xe7fb('0x7'));var attributes=require(_0xe7fb('0x8'));module[_0xe7fb('0x9')]=function(_0x290172,_0x12d1b0){return _0x290172[_0xe7fb('0xa')](_0xe7fb('0xb'),attributes,{'tableName':'report_jscripty_sessions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7dfd=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./jscriptySessionReport.attributes','exports','define','JscriptySessionReport','report_jscripty_sessions'];(function(_0xc07b33,_0x3d745f){var _0x746787=function(_0x31700e){while(--_0x31700e){_0xc07b33['push'](_0xc07b33['shift']());}};_0x746787(++_0x3d745f);}(_0x7dfd,0x1c2));var _0xd7df=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7dfd[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xd7df('0x0'));var util=require(_0xd7df('0x1'));var logger=require(_0xd7df('0x2'))(_0xd7df('0x3'));var moment=require(_0xd7df('0x4'));var BPromise=require(_0xd7df('0x5'));var rp=require(_0xd7df('0x6'));var fs=require('fs');var path=require(_0xd7df('0x7'));var rimraf=require(_0xd7df('0x8'));var config=require(_0xd7df('0x9'));var attributes=require(_0xd7df('0xa'));module[_0xd7df('0xb')]=function(_0x36cf0f,_0x39ce98){return _0x36cf0f[_0xd7df('0xc')](_0xd7df('0xd'),attributes,{'tableName':_0xd7df('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2919b8e..9207a15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4888=['../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x4646c0,_0x41ebb7){var _0x29f51d=function(_0x11cb12){while(--_0x11cb12){_0x4646c0['push'](_0x4646c0['shift']());}};_0x29f51d(++_0x41ebb7);}(_0x4888,0x198));var _0x8488=function(_0x2806f6,_0x294105){_0x2806f6=_0x2806f6-0x0;var _0x32ebb1=_0x4888[_0x2806f6];return _0x32ebb1;};'use strict';var _=require('lodash');var util=require(_0x8488('0x0'));var moment=require(_0x8488('0x1'));var BPromise=require(_0x8488('0x2'));var rs=require(_0x8488('0x3'));var fs=require('fs');var Redis=require(_0x8488('0x4'));var db=require(_0x8488('0x5'))['db'];var utils=require(_0x8488('0x6'));var logger=require('../../config/logger')(_0x8488('0x7'));var config=require(_0x8488('0x8'));var jayson=require(_0x8488('0x9'));var client=jayson[_0x8488('0xa')][_0x8488('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x19e508,_0x5250a1,_0x5b30a7){return new BPromise(function(_0x56aad0,_0x568a82){return client[_0x8488('0xc')](_0x19e508,_0x5b30a7)[_0x8488('0xd')](function(_0x542bd8){logger[_0x8488('0xe')](_0x8488('0xf'),_0x5250a1,_0x8488('0x10'));logger[_0x8488('0x11')]('JscriptySessionReport,\x20%s,\x20%s,\x20%s',_0x5250a1,_0x8488('0x10'),JSON[_0x8488('0x12')](_0x542bd8));if(_0x542bd8[_0x8488('0x13')]){if(_0x542bd8[_0x8488('0x13')][_0x8488('0x14')]===0x1f4){logger['error'](_0x8488('0xf'),_0x5250a1,_0x542bd8[_0x8488('0x13')]['message']);return _0x568a82(_0x542bd8['error'][_0x8488('0x15')]);}logger['error'](_0x8488('0xf'),_0x5250a1,_0x542bd8['error']['message']);return _0x56aad0(_0x542bd8[_0x8488('0x13')][_0x8488('0x15')]);}else{logger[_0x8488('0xe')](_0x8488('0xf'),_0x5250a1,_0x8488('0x10'));_0x56aad0(_0x542bd8[_0x8488('0x16')][_0x8488('0x15')]);}})['catch'](function(_0x3dad45){logger[_0x8488('0x13')](_0x8488('0xf'),_0x5250a1,_0x3dad45);_0x568a82(_0x3dad45);});});}
\ No newline at end of file
+var _0x8aad=['stringify','error','code','message','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','rpc','client','http','request','info','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptySessionReport,\x20%s,\x20%s,\x20%s'];(function(_0x269d3c,_0x3c2082){var _0x393caf=function(_0x2d2aa8){while(--_0x2d2aa8){_0x269d3c['push'](_0x269d3c['shift']());}};_0x393caf(++_0x3c2082);}(_0x8aad,0x146));var _0xd8aa=function(_0x3de463,_0x531a27){_0x3de463=_0x3de463-0x0;var _0x40327f=_0x8aad[_0x3de463];return _0x40327f;};'use strict';var _=require(_0xd8aa('0x0'));var util=require(_0xd8aa('0x1'));var moment=require('moment');var BPromise=require(_0xd8aa('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd8aa('0x3'));var db=require(_0xd8aa('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xd8aa('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xd8aa('0x6')][_0xd8aa('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x16ea12,_0x4a4b10,_0x2a559d){return new BPromise(function(_0x1da411,_0x2a23b5){return client[_0xd8aa('0x8')](_0x16ea12,_0x2a559d)['then'](function(_0x5de228){logger[_0xd8aa('0x9')](_0xd8aa('0xa'),_0x4a4b10,_0xd8aa('0xb'));logger[_0xd8aa('0xc')](_0xd8aa('0xd'),_0x4a4b10,'request\x20sent',JSON[_0xd8aa('0xe')](_0x5de228));if(_0x5de228[_0xd8aa('0xf')]){if(_0x5de228[_0xd8aa('0xf')][_0xd8aa('0x10')]===0x1f4){logger[_0xd8aa('0xf')](_0xd8aa('0xa'),_0x4a4b10,_0x5de228[_0xd8aa('0xf')][_0xd8aa('0x11')]);return _0x2a23b5(_0x5de228[_0xd8aa('0xf')][_0xd8aa('0x11')]);}logger['error']('JscriptySessionReport,\x20%s,\x20%s',_0x4a4b10,_0x5de228[_0xd8aa('0xf')][_0xd8aa('0x11')]);return _0x1da411(_0x5de228[_0xd8aa('0xf')]['message']);}else{logger[_0xd8aa('0x9')](_0xd8aa('0xa'),_0x4a4b10,_0xd8aa('0xb'));_0x1da411(_0x5de228[_0xd8aa('0x12')]['message']);}})[_0xd8aa('0x13')](function(_0xa9ba1b){logger['error'](_0xd8aa('0xa'),_0x4a4b10,_0xa9ba1b);_0x2a23b5(_0xa9ba1b);});});}
\ No newline at end of file
index 66b90e4..9d2b9f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff2a=['/:id','isAuthenticated','update','exports','util','path','express','Router','../../components/auth/service','../../config/environment','./license.controller','index','put'];(function(_0x369151,_0x179f72){var _0x4292d5=function(_0x330422){while(--_0x330422){_0x369151['push'](_0x369151['shift']());}};_0x4292d5(++_0x179f72);}(_0xff2a,0x93));var _0xaff2=function(_0xe8668f,_0x42446c){_0xe8668f=_0xe8668f-0x0;var _0xf3d4ff=_0xff2a[_0xe8668f];return _0xf3d4ff;};'use strict';var multer=require('multer');var util=require(_0xaff2('0x0'));var path=require(_0xaff2('0x1'));var timeout=require('connect-timeout');var express=require(_0xaff2('0x2'));var router=express[_0xaff2('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xaff2('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xaff2('0x5'));var controller=require(_0xaff2('0x6'));router['get']('/',controller[_0xaff2('0x7')]);router[_0xaff2('0x8')](_0xaff2('0x9'),auth[_0xaff2('0xa')](),controller[_0xaff2('0xb')]);module[_0xaff2('0xc')]=router;
\ No newline at end of file
+var _0x1f26=['util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./license.controller','get','put','/:id','isAuthenticated','exports','multer'];(function(_0x21446d,_0xbf802b){var _0x11e317=function(_0x43e386){while(--_0x43e386){_0x21446d['push'](_0x21446d['shift']());}};_0x11e317(++_0xbf802b);}(_0x1f26,0xb5));var _0x61f2=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x1f26[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0x61f2('0x0'));var util=require(_0x61f2('0x1'));var path=require(_0x61f2('0x2'));var timeout=require('connect-timeout');var express=require(_0x61f2('0x3'));var router=express[_0x61f2('0x4')]();var fs_extra=require(_0x61f2('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x61f2('0x6'));var config=require(_0x61f2('0x7'));var controller=require(_0x61f2('0x8'));router[_0x61f2('0x9')]('/',controller['index']);router[_0x61f2('0xa')](_0x61f2('0xb'),auth[_0x61f2('0xc')](),controller['update']);module[_0x61f2('0xd')]=router;
\ No newline at end of file
index 1c40ea2..4971ab6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x975a=['INTEGER','sequelize','exports','TEXT'];(function(_0x354407,_0x4ff27a){var _0x553679=function(_0x5a42ce){while(--_0x5a42ce){_0x354407['push'](_0x354407['shift']());}};_0x553679(++_0x4ff27a);}(_0x975a,0x9d));var _0xa975=function(_0x214673,_0x39adf4){_0x214673=_0x214673-0x0;var _0x4c52fb=_0x975a[_0x214673];return _0x4c52fb;};'use strict';var Sequelize=require(_0xa975('0x0'));module[_0xa975('0x1')]={'license':{'type':Sequelize[_0xa975('0x2')]},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize['STRING']},'chatLicenseExceeded':{'type':Sequelize[_0xa975('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xd2df=['STRING','TEXT'];(function(_0xf40d11,_0xb4dd63){var _0x2c21c8=function(_0x14a2cc){while(--_0x14a2cc){_0xf40d11['push'](_0xf40d11['shift']());}};_0x2c21c8(++_0xb4dd63);}(_0xd2df,0x89));var _0xfd2d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd2df[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module['exports']={'license':{'type':Sequelize[_0xfd2d('0x0')]},'data1':{'type':Sequelize[_0xfd2d('0x1')]},'data2':{'type':Sequelize['STRING']},'chatLicenseExceeded':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 3464664..1b704dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf494=['fields','length','merge','options','getLicense','body','License','find','params','get','key','demo','catch','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','update','then','error','stack','name','../../config/license/util','index','model','rawAttributes','query','keys','filters','intersection','attributes'];(function(_0x47e7cb,_0x4c1b8d){var _0x2a8874=function(_0x36498f){while(--_0x36498f){_0x47e7cb['push'](_0x47e7cb['shift']());}};_0x2a8874(++_0x4c1b8d);}(_0xf494,0x1c6));var _0x4f49=function(_0x594707,_0x9f2444){_0x594707=_0x594707-0x0;var _0x481025=_0xf494[_0x594707];return _0x481025;};'use strict';var emlformat=require(_0x4f49('0x0'));var rimraf=require(_0x4f49('0x1'));var zipdir=require(_0x4f49('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4f49('0x3'));var moment=require(_0x4f49('0x4'));var BPromise=require(_0x4f49('0x5'));var Mustache=require(_0x4f49('0x6'));var util=require(_0x4f49('0x7'));var path=require(_0x4f49('0x8'));var sox=require(_0x4f49('0x9'));var csv=require(_0x4f49('0xa'));var ejs=require(_0x4f49('0xb'));var fs=require('fs');var fs_extra=require(_0x4f49('0xc'));var _=require(_0x4f49('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x4f49('0xe'));var deskjs=require(_0x4f49('0xf'));var toCsv=require(_0x4f49('0xa'));var querystring=require(_0x4f49('0x10'));var Papa=require(_0x4f49('0x11'));var Redis=require(_0x4f49('0x12'));var authService=require(_0x4f49('0x13'));var qs=require(_0x4f49('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4f49('0x15'));var logger=require(_0x4f49('0x16'))('api');var utils=require(_0x4f49('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x4f49('0x18'))['db'];function respondWithStatusCode(_0x12527d,_0x4bf89f){_0x4bf89f=_0x4bf89f||0xcc;return function(_0x1e1c37){if(_0x1e1c37){return _0x12527d[_0x4f49('0x19')](_0x4bf89f);}return _0x12527d[_0x4f49('0x1a')](_0x4bf89f)[_0x4f49('0x1b')]();};}function respondWithResult(_0x1a0f1e,_0x2f0131){_0x2f0131=_0x2f0131||0xc8;return function(_0xfdb477){if(_0xfdb477){return _0x1a0f1e['status'](_0x2f0131)[_0x4f49('0x1c')](_0xfdb477);}};}function respondWithFilteredResult(_0x1f2d0d,_0x415e83){return function(_0x5878f4){if(_0x5878f4){var _0x5bdfaf=typeof _0x415e83[_0x4f49('0x1d')]===_0x4f49('0x1e')&&typeof _0x415e83[_0x4f49('0x1f')]==='undefined';var _0x1dccfd=_0x5878f4[_0x4f49('0x20')];var _0x4e85df=_0x5bdfaf?0x0:_0x415e83['offset'];var _0x5bb23b=_0x5bdfaf?_0x5878f4['count']:_0x415e83['offset']+_0x415e83[_0x4f49('0x1f')];var _0x1834f4;if(_0x5bb23b>=_0x1dccfd){_0x5bb23b=_0x1dccfd;_0x1834f4=0xc8;}else{_0x1834f4=0xce;}_0x1f2d0d[_0x4f49('0x1a')](_0x1834f4);return _0x1f2d0d[_0x4f49('0x21')]('Content-Range',_0x4e85df+'-'+_0x5bb23b+'/'+_0x1dccfd)[_0x4f49('0x1c')](_0x5878f4);}return null;};}function patchUpdates(_0x2aed27){return function(_0x197a49){try{jsonpatch[_0x4f49('0x22')](_0x197a49,_0x2aed27,!![]);}catch(_0xea82f8){return BPromise['reject'](_0xea82f8);}return _0x197a49[_0x4f49('0x23')]();};}function saveUpdates(_0x357446,_0x3ae590){return function(_0x53b57d){if(_0x53b57d){return _0x53b57d[_0x4f49('0x24')](_0x357446)[_0x4f49('0x25')](function(_0x32ca7b){return _0x32ca7b;});}return null;};}function removeEntity(_0x43c458,_0x9d30aa){return function(_0x36187b){if(_0x36187b){return _0x36187b['destroy']()['then'](function(){_0x43c458[_0x4f49('0x1a')](0xcc)[_0x4f49('0x1b')]();});}};}function handleEntityNotFound(_0x4fedbb,_0x408552){return function(_0x2c1519){if(!_0x2c1519){_0x4fedbb[_0x4f49('0x19')](0x194);}return _0x2c1519;};}function handleError(_0x525950,_0xc54070){_0xc54070=_0xc54070||0x1f4;return function(_0x2eed1c){logger[_0x4f49('0x26')](_0x2eed1c[_0x4f49('0x27')]);if(_0x2eed1c[_0x4f49('0x28')]){delete _0x2eed1c[_0x4f49('0x28')];}_0x525950['status'](_0xc54070)['send'](_0x2eed1c);};}var utilLicense=require(_0x4f49('0x29'));exports[_0x4f49('0x2a')]=function(_0x605c91,_0x560050){var _0x3cbfbd={'raw':!![],'where':{'id':0x1}},_0x206203={};_0x206203[_0x4f49('0x2b')]=_['keys'](db['License'][_0x4f49('0x2c')]);_0x206203[_0x4f49('0x2d')]=_[_0x4f49('0x2e')](_0x605c91['query']);_0x206203[_0x4f49('0x2f')]=_[_0x4f49('0x30')](_0x206203[_0x4f49('0x2b')],_0x206203[_0x4f49('0x2d')]);_0x3cbfbd[_0x4f49('0x31')]=_[_0x4f49('0x30')](_0x206203[_0x4f49('0x2b')],qs[_0x4f49('0x32')](_0x605c91[_0x4f49('0x2d')][_0x4f49('0x32')]));_0x3cbfbd[_0x4f49('0x31')]=_0x3cbfbd[_0x4f49('0x31')][_0x4f49('0x33')]?_0x3cbfbd[_0x4f49('0x31')]:_0x206203[_0x4f49('0x2b')];_0x3cbfbd=_[_0x4f49('0x34')]({},_0x3cbfbd,_0x605c91[_0x4f49('0x35')]);return utilLicense[_0x4f49('0x36')](_0x3cbfbd)[_0x4f49('0x25')](respondWithResult(_0x560050,null))['catch'](handleError(_0x560050,null));};exports[_0x4f49('0x24')]=function(_0x46b7ba,_0x24f568){if(_0x46b7ba[_0x4f49('0x37')]['id']){delete _0x46b7ba[_0x4f49('0x37')]['id'];}return db[_0x4f49('0x38')][_0x4f49('0x39')]({'where':{'id':_0x46b7ba[_0x4f49('0x3a')]['id']}})[_0x4f49('0x25')](handleEntityNotFound(_0x24f568,null))[_0x4f49('0x25')](function(_0x44e6a0){var _0x343365=_0x44e6a0[_0x4f49('0x3b')]({'plain':!![]});return utilLicense['checkLicense'](_0x343365,_0x46b7ba[_0x4f49('0x37')][_0x4f49('0x3c')]);})[_0x4f49('0x25')](function(_0x26014f){if(!_0x26014f[_0x4f49('0x3d')]){return saveUpdates(_0x46b7ba[_0x4f49('0x37')],null);}return _0x26014f;})[_0x4f49('0x25')](respondWithResult(_0x24f568,null))[_0x4f49('0x3e')](handleError(_0x24f568,null));};
\ No newline at end of file
+var _0x2ef3=['length','options','then','catch','body','params','get','checkLicense','demo','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','error','stack','name','send','index','model','keys','rawAttributes','query','filters','intersection','attributes','fields'];(function(_0x21e8a8,_0x1990e0){var _0x895006=function(_0x148e34){while(--_0x148e34){_0x21e8a8['push'](_0x21e8a8['shift']());}};_0x895006(++_0x1990e0);}(_0x2ef3,0xba));var _0x32ef=function(_0x51ddcd,_0x5dcb17){_0x51ddcd=_0x51ddcd-0x0;var _0x2a9d7e=_0x2ef3[_0x51ddcd];return _0x2a9d7e;};'use strict';var emlformat=require(_0x32ef('0x0'));var rimraf=require(_0x32ef('0x1'));var zipdir=require(_0x32ef('0x2'));var jsonpatch=require(_0x32ef('0x3'));var rp=require(_0x32ef('0x4'));var moment=require(_0x32ef('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x32ef('0x6'));var util=require(_0x32ef('0x7'));var path=require('path');var sox=require(_0x32ef('0x8'));var csv=require(_0x32ef('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x32ef('0xa'));var squel=require(_0x32ef('0xb'));var crypto=require(_0x32ef('0xc'));var jsforce=require(_0x32ef('0xd'));var deskjs=require(_0x32ef('0xe'));var toCsv=require(_0x32ef('0x9'));var querystring=require(_0x32ef('0xf'));var Papa=require(_0x32ef('0x10'));var Redis=require(_0x32ef('0x11'));var authService=require(_0x32ef('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x32ef('0x13'));var logger=require(_0x32ef('0x14'))(_0x32ef('0x15'));var utils=require(_0x32ef('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x32ef('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1a5106,_0x49d590){_0x49d590=_0x49d590||0xcc;return function(_0x3e98df){if(_0x3e98df){return _0x1a5106[_0x32ef('0x18')](_0x49d590);}return _0x1a5106['status'](_0x49d590)['end']();};}function respondWithResult(_0x19ce1,_0x4d8009){_0x4d8009=_0x4d8009||0xc8;return function(_0x326fce){if(_0x326fce){return _0x19ce1[_0x32ef('0x19')](_0x4d8009)[_0x32ef('0x1a')](_0x326fce);}};}function respondWithFilteredResult(_0x54c7f5,_0x57aff1){return function(_0x55bf0b){if(_0x55bf0b){var _0x531e30=typeof _0x57aff1[_0x32ef('0x1b')]===_0x32ef('0x1c')&&typeof _0x57aff1[_0x32ef('0x1d')]==='undefined';var _0x5d559b=_0x55bf0b[_0x32ef('0x1e')];var _0x1a9476=_0x531e30?0x0:_0x57aff1[_0x32ef('0x1b')];var _0x57863c=_0x531e30?_0x55bf0b[_0x32ef('0x1e')]:_0x57aff1[_0x32ef('0x1b')]+_0x57aff1['limit'];var _0x304505;if(_0x57863c>=_0x5d559b){_0x57863c=_0x5d559b;_0x304505=0xc8;}else{_0x304505=0xce;}_0x54c7f5[_0x32ef('0x19')](_0x304505);return _0x54c7f5[_0x32ef('0x1f')](_0x32ef('0x20'),_0x1a9476+'-'+_0x57863c+'/'+_0x5d559b)[_0x32ef('0x1a')](_0x55bf0b);}return null;};}function patchUpdates(_0x3aec05){return function(_0x4de441){try{jsonpatch[_0x32ef('0x21')](_0x4de441,_0x3aec05,!![]);}catch(_0x5cc3ef){return BPromise[_0x32ef('0x22')](_0x5cc3ef);}return _0x4de441[_0x32ef('0x23')]();};}function saveUpdates(_0x49f2d8,_0x1af371){return function(_0x97780){if(_0x97780){return _0x97780[_0x32ef('0x24')](_0x49f2d8)['then'](function(_0x57f5e5){return _0x57f5e5;});}return null;};}function removeEntity(_0x22f2d7,_0xb30fab){return function(_0x225feb){if(_0x225feb){return _0x225feb['destroy']()['then'](function(){_0x22f2d7[_0x32ef('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x51a412,_0x278495){return function(_0x14d4b3){if(!_0x14d4b3){_0x51a412[_0x32ef('0x18')](0x194);}return _0x14d4b3;};}function handleError(_0x1dbe98,_0x15ce54){_0x15ce54=_0x15ce54||0x1f4;return function(_0x234175){logger[_0x32ef('0x25')](_0x234175[_0x32ef('0x26')]);if(_0x234175[_0x32ef('0x27')]){delete _0x234175[_0x32ef('0x27')];}_0x1dbe98[_0x32ef('0x19')](_0x15ce54)[_0x32ef('0x28')](_0x234175);};}var utilLicense=require('../../config/license/util');exports[_0x32ef('0x29')]=function(_0x2f5d06,_0x5a04cd){var _0x12de1a={'raw':!![],'where':{'id':0x1}},_0x3c569d={};_0x3c569d[_0x32ef('0x2a')]=_[_0x32ef('0x2b')](db['License'][_0x32ef('0x2c')]);_0x3c569d[_0x32ef('0x2d')]=_[_0x32ef('0x2b')](_0x2f5d06[_0x32ef('0x2d')]);_0x3c569d[_0x32ef('0x2e')]=_[_0x32ef('0x2f')](_0x3c569d[_0x32ef('0x2a')],_0x3c569d['query']);_0x12de1a[_0x32ef('0x30')]=_['intersection'](_0x3c569d[_0x32ef('0x2a')],qs[_0x32ef('0x31')](_0x2f5d06['query'][_0x32ef('0x31')]));_0x12de1a[_0x32ef('0x30')]=_0x12de1a[_0x32ef('0x30')][_0x32ef('0x32')]?_0x12de1a[_0x32ef('0x30')]:_0x3c569d['model'];_0x12de1a=_['merge']({},_0x12de1a,_0x2f5d06[_0x32ef('0x33')]);return utilLicense['getLicense'](_0x12de1a)[_0x32ef('0x34')](respondWithResult(_0x5a04cd,null))[_0x32ef('0x35')](handleError(_0x5a04cd,null));};exports[_0x32ef('0x24')]=function(_0x390670,_0x389583){if(_0x390670[_0x32ef('0x36')]['id']){delete _0x390670['body']['id'];}return db['License']['find']({'where':{'id':_0x390670[_0x32ef('0x37')]['id']}})[_0x32ef('0x34')](handleEntityNotFound(_0x389583,null))[_0x32ef('0x34')](function(_0x5f2443){var _0x4fb402=_0x5f2443[_0x32ef('0x38')]({'plain':!![]});return utilLicense[_0x32ef('0x39')](_0x4fb402,_0x390670[_0x32ef('0x36')]['key']);})['then'](function(_0xcbdec8){if(!_0xcbdec8[_0x32ef('0x3a')]){return saveUpdates(_0x390670[_0x32ef('0x36')],null);}return _0xcbdec8;})[_0x32ef('0x34')](respondWithResult(_0x389583,null))[_0x32ef('0x35')](handleError(_0x389583,null));};
\ No newline at end of file
index d90d0a4..efd70f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bff=['moment','bluebird','request-promise','exports','define','license','lodash','util','../../config/logger','api'];(function(_0xf6b5a7,_0x3e9474){var _0x4cb73a=function(_0x5daebb){while(--_0x5daebb){_0xf6b5a7['push'](_0xf6b5a7['shift']());}};_0x4cb73a(++_0x3e9474);}(_0x8bff,0x1d2));var _0xf8bf=function(_0x32f85e,_0x3748c7){_0x32f85e=_0x32f85e-0x0;var _0x1963c9=_0x8bff[_0x32f85e];return _0x1963c9;};'use strict';var _=require(_0xf8bf('0x0'));var util=require(_0xf8bf('0x1'));var logger=require(_0xf8bf('0x2'))(_0xf8bf('0x3'));var moment=require(_0xf8bf('0x4'));var BPromise=require(_0xf8bf('0x5'));var rp=require(_0xf8bf('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./license.attributes');module[_0xf8bf('0x7')]=function(_0x3bfe63,_0x1369d4){return _0x3bfe63[_0xf8bf('0x8')]('License',attributes,{'tableName':_0xf8bf('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x44bd=['lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment','./license.attributes','exports','License','license'];(function(_0x30182f,_0x30ce41){var _0x5207db=function(_0x50a417){while(--_0x50a417){_0x30182f['push'](_0x30182f['shift']());}};_0x5207db(++_0x30ce41);}(_0x44bd,0x6c));var _0xd44b=function(_0x186c6c,_0x2774b4){_0x186c6c=_0x186c6c-0x0;var _0x3a6298=_0x44bd[_0x186c6c];return _0x3a6298;};'use strict';var _=require(_0xd44b('0x0'));var util=require(_0xd44b('0x1'));var logger=require(_0xd44b('0x2'))(_0xd44b('0x3'));var moment=require(_0xd44b('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xd44b('0x5'));var rimraf=require(_0xd44b('0x6'));var config=require(_0xd44b('0x7'));var attributes=require(_0xd44b('0x8'));module[_0xd44b('0x9')]=function(_0x777283,_0x58ce68){return _0x777283['define'](_0xd44b('0xa'),attributes,{'tableName':_0xd44b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 36f6fe9..94ec963 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26bf=['License,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','License,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0x26bf,0xf5));var _0xf26b=function(_0x1a2889,_0xea581){_0x1a2889=_0x1a2889-0x0;var _0x19da9d=_0x26bf[_0x1a2889];return _0x19da9d;};'use strict';var _=require(_0xf26b('0x0'));var util=require(_0xf26b('0x1'));var moment=require(_0xf26b('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf26b('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xf26b('0x4'));var logger=require(_0xf26b('0x5'))(_0xf26b('0x6'));var config=require(_0xf26b('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xf26b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x436578,_0x550f50,_0x140d34){return new BPromise(function(_0x25fe95,_0x2ae384){return client[_0xf26b('0x9')](_0x436578,_0x140d34)[_0xf26b('0xa')](function(_0x34ad50){logger[_0xf26b('0xb')](_0xf26b('0xc'),_0x550f50,_0xf26b('0xd'));logger[_0xf26b('0xe')](_0xf26b('0xf'),_0x550f50,'request\x20sent',JSON['stringify'](_0x34ad50));if(_0x34ad50[_0xf26b('0x10')]){if(_0x34ad50[_0xf26b('0x10')][_0xf26b('0x11')]===0x1f4){logger[_0xf26b('0x10')](_0xf26b('0xc'),_0x550f50,_0x34ad50['error'][_0xf26b('0x12')]);return _0x2ae384(_0x34ad50[_0xf26b('0x10')][_0xf26b('0x12')]);}logger[_0xf26b('0x10')](_0xf26b('0xc'),_0x550f50,_0x34ad50[_0xf26b('0x10')]['message']);return _0x25fe95(_0x34ad50[_0xf26b('0x10')][_0xf26b('0x12')]);}else{logger[_0xf26b('0xb')](_0xf26b('0xc'),_0x550f50,_0xf26b('0xd'));_0x25fe95(_0x34ad50['result']['message']);}})[_0xf26b('0x13')](function(_0x30a8cb){logger[_0xf26b('0x10')]('License,\x20%s,\x20%s',_0x550f50,_0x30a8cb);_0x2ae384(_0x30a8cb);});});}
\ No newline at end of file
+var _0x2fd9=['lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','request','then','info','License,\x20%s,\x20%s','request\x20sent','debug','License,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x4b366e,_0x479e1f){var _0x464dff=function(_0x5ac61c){while(--_0x5ac61c){_0x4b366e['push'](_0x4b366e['shift']());}};_0x464dff(++_0x479e1f);}(_0x2fd9,0x134));var _0x92fd=function(_0x3b33b9,_0x106957){_0x3b33b9=_0x3b33b9-0x0;var _0x38b257=_0x2fd9[_0x3b33b9];return _0x38b257;};'use strict';var _=require(_0x92fd('0x0'));var util=require(_0x92fd('0x1'));var moment=require(_0x92fd('0x2'));var BPromise=require('bluebird');var rs=require(_0x92fd('0x3'));var fs=require('fs');var Redis=require(_0x92fd('0x4'));var db=require(_0x92fd('0x5'))['db'];var utils=require(_0x92fd('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x92fd('0x7'));var jayson=require(_0x92fd('0x8'));var client=jayson[_0x92fd('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x93eba1,_0x36ae27,_0x45c9f5){return new BPromise(function(_0x1e4beb,_0x1a0eae){return client[_0x92fd('0xa')](_0x93eba1,_0x45c9f5)[_0x92fd('0xb')](function(_0x32fa67){logger[_0x92fd('0xc')](_0x92fd('0xd'),_0x36ae27,_0x92fd('0xe'));logger[_0x92fd('0xf')](_0x92fd('0x10'),_0x36ae27,_0x92fd('0xe'),JSON[_0x92fd('0x11')](_0x32fa67));if(_0x32fa67[_0x92fd('0x12')]){if(_0x32fa67[_0x92fd('0x12')][_0x92fd('0x13')]===0x1f4){logger[_0x92fd('0x12')](_0x92fd('0xd'),_0x36ae27,_0x32fa67[_0x92fd('0x12')][_0x92fd('0x14')]);return _0x1a0eae(_0x32fa67[_0x92fd('0x12')][_0x92fd('0x14')]);}logger[_0x92fd('0x12')](_0x92fd('0xd'),_0x36ae27,_0x32fa67[_0x92fd('0x12')][_0x92fd('0x14')]);return _0x1e4beb(_0x32fa67['error'][_0x92fd('0x14')]);}else{logger[_0x92fd('0xc')]('License,\x20%s,\x20%s',_0x36ae27,_0x92fd('0xe'));_0x1e4beb(_0x32fa67[_0x92fd('0x15')][_0x92fd('0x14')]);}})['catch'](function(_0x4c97d2){logger[_0x92fd('0x12')]('License,\x20%s,\x20%s',_0x36ae27,_0x4c97d2);_0x1a0eae(_0x4c97d2);});});}
\ No newline at end of file
index 749112b..7501360 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7a6=['index','/describe','isAuthenticated','describe','/:id','show','/:id/dispositions','/:id/canned_answers','getAnswers','/:id/in_servers','getImap','/:id/out_servers','getSmtp','/:id/applications','/:id/messages','getMessages','verifySmtp','/:id/users','post','create','addImap','addSmtp','/:id/interactions','/:id/send','send','put','update','delete','removeDispositions','removeSmtp','destroy','removeAgents','exports','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailAccount.controller','get'];(function(_0x5ee044,_0x4e21ac){var _0x27084e=function(_0x4b95c6){while(--_0x4b95c6){_0x5ee044['push'](_0x5ee044['shift']());}};_0x27084e(++_0x4e21ac);}(_0xa7a6,0xee));var _0x6a7a=function(_0x24ae03,_0x334660){_0x24ae03=_0x24ae03-0x0;var _0x38a29e=_0xa7a6[_0x24ae03];return _0x38a29e;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x6a7a('0x0'));var timeout=require(_0x6a7a('0x1'));var express=require('express');var router=express[_0x6a7a('0x2')]();var fs_extra=require(_0x6a7a('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x6a7a('0x4'));var config=require(_0x6a7a('0x5'));var controller=require(_0x6a7a('0x6'));router[_0x6a7a('0x7')]('/',auth['isAuthenticated'](),controller[_0x6a7a('0x8')]);router[_0x6a7a('0x7')](_0x6a7a('0x9'),auth[_0x6a7a('0xa')](),controller[_0x6a7a('0xb')]);router[_0x6a7a('0x7')](_0x6a7a('0xc'),auth[_0x6a7a('0xa')](),controller[_0x6a7a('0xd')]);router[_0x6a7a('0x7')](_0x6a7a('0xe'),auth['isAuthenticated'](),controller['getDispositions']);router[_0x6a7a('0x7')](_0x6a7a('0xf'),auth[_0x6a7a('0xa')](),controller[_0x6a7a('0x10')]);router[_0x6a7a('0x7')](_0x6a7a('0x11'),auth[_0x6a7a('0xa')](),controller[_0x6a7a('0x12')]);router[_0x6a7a('0x7')](_0x6a7a('0x13'),auth[_0x6a7a('0xa')](),controller[_0x6a7a('0x14')]);router[_0x6a7a('0x7')]('/:id/interactions',auth['isAuthenticated'](),controller['getInteractions']);router[_0x6a7a('0x7')](_0x6a7a('0x15'),auth['isAuthenticated'](),controller['getApplications']);router[_0x6a7a('0x7')](_0x6a7a('0x16'),auth['isAuthenticated'](),controller[_0x6a7a('0x17')]);router[_0x6a7a('0x7')]('/:id/verify',auth['isAuthenticated'](),controller[_0x6a7a('0x18')]);router[_0x6a7a('0x7')](_0x6a7a('0x19'),auth[_0x6a7a('0xa')](),controller['getAgents']);router['post'](_0x6a7a('0xe'),auth[_0x6a7a('0xa')](),controller['addDisposition']);router[_0x6a7a('0x1a')](_0x6a7a('0xf'),auth[_0x6a7a('0xa')](),controller['addAnswer']);router['post']('/',auth[_0x6a7a('0xa')](),controller[_0x6a7a('0x1b')]);router[_0x6a7a('0x1a')]('/:id/in_servers',auth[_0x6a7a('0xa')](),controller[_0x6a7a('0x1c')]);router['post']('/:id/out_servers',auth[_0x6a7a('0xa')](),controller[_0x6a7a('0x1d')]);router[_0x6a7a('0x1a')](_0x6a7a('0x1e'),auth[_0x6a7a('0xa')](),controller['addInteraction']);router[_0x6a7a('0x1a')](_0x6a7a('0x15'),auth[_0x6a7a('0xa')](),controller['addApplications']);router['post'](_0x6a7a('0x1f'),auth[_0x6a7a('0xa')](),controller[_0x6a7a('0x20')]);router[_0x6a7a('0x1a')](_0x6a7a('0x19'),auth['isAuthenticated'](),controller['addAgents']);router[_0x6a7a('0x21')](_0x6a7a('0xc'),auth[_0x6a7a('0xa')](),controller[_0x6a7a('0x22')]);router[_0x6a7a('0x23')](_0x6a7a('0xe'),auth[_0x6a7a('0xa')](),controller[_0x6a7a('0x24')]);router[_0x6a7a('0x23')](_0x6a7a('0xf'),auth['isAuthenticated'](),controller['removeAnswers']);router[_0x6a7a('0x23')](_0x6a7a('0x11'),auth[_0x6a7a('0xa')](),controller['removeImap']);router['delete']('/:id/out_servers',auth[_0x6a7a('0xa')](),controller[_0x6a7a('0x25')]);router[_0x6a7a('0x23')](_0x6a7a('0xc'),auth[_0x6a7a('0xa')](),controller[_0x6a7a('0x26')]);router[_0x6a7a('0x23')]('/:id/users',auth['isAuthenticated'](),controller[_0x6a7a('0x27')]);module[_0x6a7a('0x28')]=router;
\ No newline at end of file
+var _0x8572=['getSmtp','/:id/interactions','getInteractions','getApplications','/:id/messages','getMessages','/:id/verify','verifySmtp','/:id/users','getAgents','post','addAnswer','create','/:id/in_servers','addImap','addSmtp','addInteraction','/:id/applications','addApplications','/:id/send','send','put','update','delete','removeAnswers','removeImap','removeSmtp','destroy','removeAgents','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailAccount.controller','isAuthenticated','index','get','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/out_servers'];(function(_0x438ec5,_0x555ab0){var _0x25c516=function(_0x529b3c){while(--_0x529b3c){_0x438ec5['push'](_0x438ec5['shift']());}};_0x25c516(++_0x555ab0);}(_0x8572,0x1e0));var _0x2857=function(_0x5d2803,_0xf375bd){_0x5d2803=_0x5d2803-0x0;var _0xdcad2c=_0x8572[_0x5d2803];return _0xdcad2c;};'use strict';var multer=require(_0x2857('0x0'));var util=require('util');var path=require(_0x2857('0x1'));var timeout=require(_0x2857('0x2'));var express=require(_0x2857('0x3'));var router=express[_0x2857('0x4')]();var fs_extra=require(_0x2857('0x5'));var auth=require(_0x2857('0x6'));var interaction=require(_0x2857('0x7'));var config=require(_0x2857('0x8'));var controller=require(_0x2857('0x9'));router['get']('/',auth[_0x2857('0xa')](),controller[_0x2857('0xb')]);router['get']('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x2857('0xc')](_0x2857('0xd'),auth[_0x2857('0xa')](),controller[_0x2857('0xe')]);router['get'](_0x2857('0xf'),auth[_0x2857('0xa')](),controller[_0x2857('0x10')]);router['get'](_0x2857('0x11'),auth['isAuthenticated'](),controller[_0x2857('0x12')]);router['get']('/:id/in_servers',auth[_0x2857('0xa')](),controller['getImap']);router[_0x2857('0xc')](_0x2857('0x13'),auth[_0x2857('0xa')](),controller[_0x2857('0x14')]);router[_0x2857('0xc')](_0x2857('0x15'),auth[_0x2857('0xa')](),controller[_0x2857('0x16')]);router[_0x2857('0xc')]('/:id/applications',auth[_0x2857('0xa')](),controller[_0x2857('0x17')]);router[_0x2857('0xc')](_0x2857('0x18'),auth[_0x2857('0xa')](),controller[_0x2857('0x19')]);router[_0x2857('0xc')](_0x2857('0x1a'),auth['isAuthenticated'](),controller[_0x2857('0x1b')]);router['get'](_0x2857('0x1c'),auth['isAuthenticated'](),controller[_0x2857('0x1d')]);router[_0x2857('0x1e')](_0x2857('0xf'),auth[_0x2857('0xa')](),controller['addDisposition']);router[_0x2857('0x1e')](_0x2857('0x11'),auth[_0x2857('0xa')](),controller[_0x2857('0x1f')]);router['post']('/',auth[_0x2857('0xa')](),controller[_0x2857('0x20')]);router[_0x2857('0x1e')](_0x2857('0x21'),auth['isAuthenticated'](),controller[_0x2857('0x22')]);router[_0x2857('0x1e')](_0x2857('0x13'),auth['isAuthenticated'](),controller[_0x2857('0x23')]);router[_0x2857('0x1e')]('/:id/interactions',auth[_0x2857('0xa')](),controller[_0x2857('0x24')]);router[_0x2857('0x1e')](_0x2857('0x25'),auth[_0x2857('0xa')](),controller[_0x2857('0x26')]);router[_0x2857('0x1e')](_0x2857('0x27'),auth[_0x2857('0xa')](),controller[_0x2857('0x28')]);router[_0x2857('0x1e')](_0x2857('0x1c'),auth[_0x2857('0xa')](),controller['addAgents']);router[_0x2857('0x29')](_0x2857('0xd'),auth[_0x2857('0xa')](),controller[_0x2857('0x2a')]);router[_0x2857('0x2b')](_0x2857('0xf'),auth[_0x2857('0xa')](),controller['removeDispositions']);router[_0x2857('0x2b')](_0x2857('0x11'),auth[_0x2857('0xa')](),controller[_0x2857('0x2c')]);router['delete'](_0x2857('0x21'),auth[_0x2857('0xa')](),controller[_0x2857('0x2d')]);router[_0x2857('0x2b')]('/:id/out_servers',auth[_0x2857('0xa')](),controller[_0x2857('0x2e')]);router[_0x2857('0x2b')](_0x2857('0xd'),auth[_0x2857('0xa')](),controller[_0x2857('0x2f')]);router[_0x2857('0x2b')](_0x2857('0x1c'),auth['isAuthenticated'](),controller[_0x2857('0x30')]);module[_0x2857('0x31')]=router;
\ No newline at end of file
index 8e682c4..cd02355 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31af=['mandatoryDisposition','sequelize','exports','STRING','TEXT','BOOLEAN','INTEGER','UNSIGNED','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId'];(function(_0x55333e,_0x9020fb){var _0x223f9c=function(_0x1054a9){while(--_0x1054a9){_0x55333e['push'](_0x55333e['shift']());}};_0x223f9c(++_0x9020fb);}(_0x31af,0xde));var _0xf31a=function(_0x25d267,_0x50dcfb){_0x25d267=_0x25d267-0x0;var _0x1a046f=_0x31af[_0x25d267];return _0x1a046f;};'use strict';var Sequelize=require(_0xf31a('0x0'));module[_0xf31a('0x1')]={'description':{'type':Sequelize[_0xf31a('0x2')]},'name':{'type':Sequelize['STRING'],'allowNull':![]},'service':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize[_0xf31a('0x2')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'key':{'type':Sequelize[_0xf31a('0x2')],'allowNull':![]},'template':{'type':Sequelize[_0xf31a('0x3')]},'markAsUnread':{'type':Sequelize[_0xf31a('0x4')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0xf31a('0x2')],'allowNull':![],'defaultValue':'Arial,Helvetica,sans-serif'},'fontSize':{'type':Sequelize[_0xf31a('0x5')](0x2)[_0xf31a('0x6')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0xf31a('0x3')],'defaultValue':function(){return _0xf31a('0x7');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xf31a('0x4')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xf31a('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xf31a('0x4')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xf31a('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xf31a('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xf31a('0x5')],'allowNull':!![],'defaultValue':null,'comment':_0xf31a('0x8')},'mandatoryDisposition':{'type':Sequelize[_0xf31a('0x4')],'defaultValue':![],'comment':_0xf31a('0x9'),'set':function(_0x5165aa){if(!_0x5165aa)this[_0xf31a('0xa')](_0xf31a('0xb'),null);this[_0xf31a('0xa')](_0xf31a('0xc'),_0x5165aa);}}};
\ No newline at end of file
+var _0x55ca=['Arial,Helvetica,sans-serif','INTEGER','UNSIGNED','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','STRING','BOOLEAN','TEXT'];(function(_0x3ce3c,_0x319337){var _0x55a2c9=function(_0x1568d0){while(--_0x1568d0){_0x3ce3c['push'](_0x3ce3c['shift']());}};_0x55a2c9(++_0x319337);}(_0x55ca,0x126));var _0xa55c=function(_0x8b8564,_0x162976){_0x8b8564=_0x8b8564-0x0;var _0x360c61=_0x55ca[_0x8b8564];return _0x360c61;};'use strict';var Sequelize=require(_0xa55c('0x0'));module[_0xa55c('0x1')]={'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize['STRING'],'allowNull':![]},'service':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize[_0xa55c('0x2')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0xa55c('0x3')],'defaultValue':!![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'template':{'type':Sequelize[_0xa55c('0x4')]},'markAsUnread':{'type':Sequelize[_0xa55c('0x3')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0xa55c('0x2')],'allowNull':![],'defaultValue':_0xa55c('0x5')},'fontSize':{'type':Sequelize[_0xa55c('0x6')](0x2)[_0xa55c('0x7')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0xa55c('0x4')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}';}},'notificationSound':{'type':Sequelize[_0xa55c('0x3')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xa55c('0x3')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xa55c('0x3')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xa55c('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xa55c('0x6')],'allowNull':!![],'defaultValue':null,'comment':_0xa55c('0x8')},'mandatoryDisposition':{'type':Sequelize[_0xa55c('0x3')],'defaultValue':![],'comment':_0xa55c('0x9'),'set':function(_0x31646d){if(!_0x31646d)this[_0xa55c('0xa')](_0xa55c('0xb'),null);this[_0xa55c('0xa')](_0xa55c('0xc'),_0x31646d);}}};
\ No newline at end of file
index be47c18..5a05442 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5833=['User','internal','Tag','Tags','tag','sequelize','transaction','MailApplication','findAndCountAll','priority','getApplications','getMessages','MailMessage','$gte','split','format','true','CmList','List','DESC','from','%s\x20<%s>','attachments','root','server/files/attachments','basename','auth','secure','SendMail','sendMail','Contacts','messageId','attach','out','YYYY-MM-DD\x20HH:mm:ss','Interaction','Messages','verifySmtp','VerifySmtp','Sequelize','ValidationError','addAgents','omit','emit','userMailAccount:save','removeAgents','isArray','userMailAccount:remove','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','querystring','html-to-text','juice','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','redis','defaults','socket.io-emitter','./mailAccount.socket','register','jayson/promise','client','http','then','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','undefined','limit','count','offset','Content-Range','json','apply','update','destroy','get','MailAccounts','UserProfileResource','stack','name','send','index','MailServerIn','Imap','MailServerOut','Smtp','MailAccount','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','include','findAll','rows','show','Pause','find','body','params','describe','addDisposition','MailAccountId','Disposition','create','getDispositions','findOne','pick','includeAll','removeDispositions','ids','getAnswers','CannedAnswer','removeAnswers','key','ListId','isNil','active','description','cservice','cauthentication','user','cuser','password','pass','cpassword','authentication','host','port','service','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','getSmtp','setSmtp','addInteraction','MailInteraction','getInteractions','CmContact','Contact'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x5833,0xee));var _0x3583=function(_0x332bea,_0x34b4ea){_0x332bea=_0x332bea-0x0;var _0x2e1fda=_0x5833[_0x332bea];return _0x2e1fda;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3583('0x0'));var zipdir=require(_0x3583('0x1'));var jsonpatch=require(_0x3583('0x2'));var rp=require(_0x3583('0x3'));var moment=require('moment');var BPromise=require(_0x3583('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x3583('0x5'));var sox=require(_0x3583('0x6'));var csv=require(_0x3583('0x7'));var ejs=require(_0x3583('0x8'));var fs=require('fs');var fs_extra=require(_0x3583('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x3583('0xa'));var jsforce=require(_0x3583('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x3583('0x7'));var querystring=require(_0x3583('0xc'));var Papa=require('papaparse');var htmlToText=require(_0x3583('0xd'));var juice=require(_0x3583('0xe'));var Redis=require(_0x3583('0xf'));var authService=require(_0x3583('0x10'));var qs=require(_0x3583('0x11'));var as=require(_0x3583('0x12'));var hardwareService=require(_0x3583('0x13'));var logger=require(_0x3583('0x14'))(_0x3583('0x15'));var utils=require('../../config/utils');var config=require(_0x3583('0x16'));var licenseUtil=require(_0x3583('0x17'));var db=require('../../mysqldb')['db'];config[_0x3583('0x18')]=_[_0x3583('0x19')](config[_0x3583('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x3583('0x1a'))(new Redis(config[_0x3583('0x18')]));require(_0x3583('0x1b'))[_0x3583('0x1c')](socket);var jayson=require(_0x3583('0x1d'));var client=jayson[_0x3583('0x1e')][_0x3583('0x1f')]({'port':0x232b});function respondWithRpcPromise(_0x2bcf73,_0x10a805,_0x19d713,_0x4c8f64){return new BPromise(function(_0xff974,_0x3ac849){var _0x27d3c3=_0x4c8f64||client;return _0x27d3c3['request'](_0x2bcf73,_0x19d713)[_0x3583('0x20')](function(_0x5b2e64){logger['info'](_0x3583('0x21'),_0x10a805,_0x3583('0x22'));logger[_0x3583('0x23')](_0x3583('0x24'),_0x10a805,_0x3583('0x22'),JSON[_0x3583('0x25')](_0x5b2e64));if(_0x5b2e64[_0x3583('0x26')]){if(_0x5b2e64[_0x3583('0x26')][_0x3583('0x27')]===0x1f4){logger[_0x3583('0x26')](_0x3583('0x21'),_0x10a805,_0x5b2e64[_0x3583('0x26')][_0x3583('0x28')]);return _0x3ac849(_0x5b2e64[_0x3583('0x26')][_0x3583('0x28')]);}logger[_0x3583('0x26')](_0x3583('0x21'),_0x10a805,_0x5b2e64['error'][_0x3583('0x28')]);return _0xff974(_0x5b2e64[_0x3583('0x26')][_0x3583('0x28')]);}else{logger['info']('MailAccount,\x20%s,\x20%s',_0x10a805,_0x3583('0x22'));_0xff974(_0x5b2e64[_0x3583('0x29')][_0x3583('0x28')]);}})[_0x3583('0x2a')](function(_0x5322a6){logger['error']('MailAccount,\x20%s,\x20%s',_0x10a805,_0x5322a6);_0x3ac849(_0x5322a6);});});}function respondWithStatusCode(_0x4b8f4e,_0x574944){_0x574944=_0x574944||0xcc;return function(_0x4234b5){if(_0x4234b5){return _0x4b8f4e[_0x3583('0x2b')](_0x574944);}return _0x4b8f4e[_0x3583('0x2c')](_0x574944)[_0x3583('0x2d')]();};}function respondWithResult(_0x38d66f,_0x2f5f8a){_0x2f5f8a=_0x2f5f8a||0xc8;return function(_0x18b26b){if(_0x18b26b){return _0x38d66f['status'](_0x2f5f8a)['json'](_0x18b26b);}};}function respondWithFilteredResult(_0x5b9904,_0x5a8b95){return function(_0x857073){if(_0x857073){var _0x3e1127=typeof _0x5a8b95['offset']===_0x3583('0x2e')&&typeof _0x5a8b95[_0x3583('0x2f')]===_0x3583('0x2e');var _0x286edc=_0x857073[_0x3583('0x30')];var _0x4e5c43=_0x3e1127?0x0:_0x5a8b95[_0x3583('0x31')];var _0x3ace16=_0x3e1127?_0x857073['count']:_0x5a8b95[_0x3583('0x31')]+_0x5a8b95['limit'];var _0x192b22;if(_0x3ace16>=_0x286edc){_0x3ace16=_0x286edc;_0x192b22=0xc8;}else{_0x192b22=0xce;}_0x5b9904[_0x3583('0x2c')](_0x192b22);return _0x5b9904['set'](_0x3583('0x32'),_0x4e5c43+'-'+_0x3ace16+'/'+_0x286edc)[_0x3583('0x33')](_0x857073);}return null;};}function patchUpdates(_0x334283){return function(_0x24e682){try{jsonpatch[_0x3583('0x34')](_0x24e682,_0x334283,!![]);}catch(_0x25c1ae){return BPromise['reject'](_0x25c1ae);}return _0x24e682['save']();};}function saveUpdates(_0x465fb6,_0x3c24c8){return function(_0x15d3e7){if(_0x15d3e7){return _0x15d3e7[_0x3583('0x35')](_0x465fb6)['then'](function(_0x48d0c7){return _0x48d0c7;});}return null;};}function removeEntity(_0x32542d,_0x4d336f){return function(_0x43df5d){if(_0x43df5d){return _0x43df5d[_0x3583('0x36')]()['then'](function(){var _0x1c6e6c=_0x43df5d[_0x3583('0x37')]({'plain':!![]});var _0x550913=_0x3583('0x38');return db[_0x3583('0x39')][_0x3583('0x36')]({'where':{'type':_0x550913,'resourceId':_0x1c6e6c['id']}})[_0x3583('0x20')](function(){return _0x43df5d;});})[_0x3583('0x20')](function(){_0x32542d['status'](0xcc)[_0x3583('0x2d')]();});}};}function handleEntityNotFound(_0x52ae99,_0x1de34c){return function(_0x583ca5){if(!_0x583ca5){_0x52ae99[_0x3583('0x2b')](0x194);}return _0x583ca5;};}function handleError(_0x4f0626,_0x2de50a){_0x2de50a=_0x2de50a||0x1f4;return function(_0x346f5c){logger['error'](_0x346f5c[_0x3583('0x3a')]);if(_0x346f5c[_0x3583('0x3b')]){delete _0x346f5c[_0x3583('0x3b')];}_0x4f0626[_0x3583('0x2c')](_0x2de50a)[_0x3583('0x3c')](_0x346f5c);};}exports[_0x3583('0x3d')]=function(_0x21eead,_0x2b26ff){var _0x36e92d={'include':[{'model':db[_0x3583('0x3e')],'as':_0x3583('0x3f')},{'model':db[_0x3583('0x40')],'as':_0x3583('0x41')},{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x233496={},_0x53ae10={'count':0x0,'rows':[]};var _0x37c50f=_['map'](db[_0x3583('0x42')][_0x3583('0x43')],function(_0x5a30d7){return{'name':_0x5a30d7[_0x3583('0x44')],'type':_0x5a30d7[_0x3583('0x45')]['key']};});_0x233496[_0x3583('0x46')]=_[_0x3583('0x47')](_0x37c50f,_0x3583('0x3b'));_0x233496[_0x3583('0x48')]=_[_0x3583('0x49')](_0x21eead[_0x3583('0x48')]);_0x233496[_0x3583('0x4a')]=_[_0x3583('0x4b')](_0x233496[_0x3583('0x46')],_0x233496['query']);_0x36e92d[_0x3583('0x4c')]=_[_0x3583('0x4b')](_0x233496[_0x3583('0x46')],qs[_0x3583('0x4d')](_0x21eead[_0x3583('0x48')][_0x3583('0x4d')]));_0x36e92d[_0x3583('0x4c')]=_0x36e92d[_0x3583('0x4c')][_0x3583('0x4e')]?_0x36e92d[_0x3583('0x4c')]:_0x233496[_0x3583('0x46')];if(!_0x21eead['query'][_0x3583('0x4f')](_0x3583('0x50'))){_0x36e92d['limit']=qs[_0x3583('0x2f')](_0x21eead[_0x3583('0x48')]['limit']);_0x36e92d[_0x3583('0x31')]=qs[_0x3583('0x31')](_0x21eead['query'][_0x3583('0x31')]);}_0x36e92d[_0x3583('0x51')]=qs[_0x3583('0x52')](_0x21eead[_0x3583('0x48')][_0x3583('0x52')]);_0x36e92d[_0x3583('0x53')]=qs[_0x3583('0x4a')](_['pick'](_0x21eead[_0x3583('0x48')],_0x233496[_0x3583('0x4a')]),_0x37c50f);if(_0x21eead[_0x3583('0x48')][_0x3583('0x54')]){_0x36e92d[_0x3583('0x53')]=_[_0x3583('0x55')](_0x36e92d['where'],{'$or':_[_0x3583('0x47')](_0x37c50f,function(_0x373450){if(_0x373450[_0x3583('0x45')]!==_0x3583('0x56')){var _0x1745ee={};_0x1745ee[_0x373450[_0x3583('0x3b')]]={'$like':'%'+_0x21eead[_0x3583('0x48')]['filter']+'%'};return _0x1745ee;}})});}_0x36e92d=_[_0x3583('0x55')]({},_0x36e92d,_0x21eead[_0x3583('0x57')]);var _0x5bc4d3={'where':_0x36e92d[_0x3583('0x53')]};return db[_0x3583('0x42')][_0x3583('0x30')](_0x5bc4d3)['then'](function(_0x1bdb8d){_0x53ae10[_0x3583('0x30')]=_0x1bdb8d;if(_0x21eead[_0x3583('0x48')]['includeAll']){_0x36e92d[_0x3583('0x58')]=[{'all':!![]}];}return db['MailAccount'][_0x3583('0x59')](_0x36e92d);})[_0x3583('0x20')](function(_0x29d65a){_0x53ae10[_0x3583('0x5a')]=_0x29d65a;return _0x53ae10;})[_0x3583('0x20')](respondWithFilteredResult(_0x2b26ff,_0x36e92d))[_0x3583('0x2a')](handleError(_0x2b26ff,null));};exports[_0x3583('0x5b')]=function(_0x116a96,_0x4fa026){var _0x231efb={'raw':![],'where':{'id':_0x116a96['params']['id']},'include':[{'model':db[_0x3583('0x3e')],'as':_0x3583('0x3f')},{'model':db[_0x3583('0x40')],'as':'Smtp'},{'model':db[_0x3583('0x5c')],'as':'mandatoryDispositionPause'}]},_0x5d11cd={};_0x5d11cd['model']=_[_0x3583('0x49')](db[_0x3583('0x42')][_0x3583('0x43')]);_0x5d11cd[_0x3583('0x48')]=_[_0x3583('0x49')](_0x116a96[_0x3583('0x48')]);_0x5d11cd['filters']=_['intersection'](_0x5d11cd[_0x3583('0x46')],_0x5d11cd[_0x3583('0x48')]);_0x231efb['attributes']=_[_0x3583('0x4b')](_0x5d11cd[_0x3583('0x46')],qs[_0x3583('0x4d')](_0x116a96[_0x3583('0x48')][_0x3583('0x4d')]));_0x231efb[_0x3583('0x4c')]=_0x231efb[_0x3583('0x4c')][_0x3583('0x4e')]?_0x231efb[_0x3583('0x4c')]:_0x5d11cd['model'];if(_0x116a96[_0x3583('0x48')]['includeAll']){_0x231efb[_0x3583('0x58')]=[{'all':!![]}];}_0x231efb=_[_0x3583('0x55')]({},_0x231efb,_0x116a96[_0x3583('0x57')]);return db['MailAccount'][_0x3583('0x5d')](_0x231efb)['then'](handleEntityNotFound(_0x4fa026,null))[_0x3583('0x20')](respondWithResult(_0x4fa026,null))[_0x3583('0x2a')](handleError(_0x4fa026,null));};exports[_0x3583('0x35')]=function(_0x400b92,_0x3cfdb0){if(_0x400b92['body']['id']){delete _0x400b92[_0x3583('0x5e')]['id'];}return db[_0x3583('0x42')][_0x3583('0x5d')]({'where':{'id':_0x400b92[_0x3583('0x5f')]['id']},'include':[{'model':db[_0x3583('0x3e')],'as':'Imap'},{'model':db['MailServerOut'],'as':_0x3583('0x41')},{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})[_0x3583('0x20')](handleEntityNotFound(_0x3cfdb0,null))[_0x3583('0x20')](saveUpdates(_0x400b92['body'],null))[_0x3583('0x20')](function(_0x33eb76){if(_0x33eb76&&_0x400b92[_0x3583('0x5e')]['Imap']){return db[_0x3583('0x3e')][_0x3583('0x35')](_0x400b92['body']['Imap'],{'where':{'MailAccountId':_0x33eb76['id']}})['then'](function(){return _0x33eb76;});}return _0x33eb76;})[_0x3583('0x20')](function(_0x431128){if(_0x431128&&_0x400b92[_0x3583('0x5e')]['Smtp']){return db[_0x3583('0x40')]['update'](_0x400b92[_0x3583('0x5e')][_0x3583('0x41')],{'where':{'MailAccountId':_0x431128['id']}})['then'](function(){return _0x431128;});}return _0x431128;})[_0x3583('0x20')](respondWithResult(_0x3cfdb0,null))['catch'](handleError(_0x3cfdb0,null));};exports[_0x3583('0x60')]=function(_0x129b55,_0x130aa1){return db['MailAccount'][_0x3583('0x60')]()[_0x3583('0x20')](respondWithResult(_0x130aa1,null))[_0x3583('0x2a')](handleError(_0x130aa1,null));};exports[_0x3583('0x61')]=function(_0x12c4f5,_0x58483c,_0x333324){if(_0x12c4f5['body']['id']){delete _0x12c4f5[_0x3583('0x5e')]['id'];}return db[_0x3583('0x42')][_0x3583('0x5d')]({'where':{'id':_0x12c4f5[_0x3583('0x5f')]['id']}})[_0x3583('0x20')](handleEntityNotFound(_0x58483c,null))[_0x3583('0x20')](function(_0xeea17d){if(_0xeea17d){_0x12c4f5[_0x3583('0x5e')][_0x3583('0x62')]=_0xeea17d['id'];return db[_0x3583('0x63')][_0x3583('0x64')](_0x12c4f5['body']);}})[_0x3583('0x20')](respondWithResult(_0x58483c,null))['catch'](handleError(_0x58483c,null));};exports[_0x3583('0x65')]=function(_0x48d2cd,_0x3770dc,_0xd75d3a){var _0x1d48e9={'raw':![],'where':{}};var _0x1cc89c={};var _0x1d5f5c={'count':0x0,'rows':[]};return db['MailAccount'][_0x3583('0x66')]({'where':{'id':_0x48d2cd[_0x3583('0x5f')]['id']}})[_0x3583('0x20')](handleEntityNotFound(_0x3770dc,null))[_0x3583('0x20')](function(_0x226a78){if(_0x226a78){_0x1cc89c[_0x3583('0x46')]=_['keys'](db['Disposition']['rawAttributes']);_0x1cc89c['query']=_[_0x3583('0x49')](_0x48d2cd[_0x3583('0x48')]);_0x1cc89c[_0x3583('0x4a')]=_[_0x3583('0x4b')](_0x1cc89c[_0x3583('0x46')],_0x1cc89c[_0x3583('0x48')]);_0x1d48e9[_0x3583('0x4c')]=_[_0x3583('0x4b')](_0x1cc89c[_0x3583('0x46')],qs['fields'](_0x48d2cd[_0x3583('0x48')][_0x3583('0x4d')]));_0x1d48e9[_0x3583('0x4c')]=_0x1d48e9['attributes'][_0x3583('0x4e')]?_0x1d48e9[_0x3583('0x4c')]:_0x1cc89c['model'];if(!_0x48d2cd[_0x3583('0x48')][_0x3583('0x4f')](_0x3583('0x50'))){_0x1d48e9[_0x3583('0x2f')]=qs[_0x3583('0x2f')](_0x48d2cd[_0x3583('0x48')][_0x3583('0x2f')]);_0x1d48e9[_0x3583('0x31')]=qs[_0x3583('0x31')](_0x48d2cd['query'][_0x3583('0x31')]);}_0x1d48e9[_0x3583('0x51')]=qs[_0x3583('0x52')](_0x48d2cd['query'][_0x3583('0x52')]);_0x1d48e9[_0x3583('0x53')]=qs[_0x3583('0x4a')](_[_0x3583('0x67')](_0x48d2cd[_0x3583('0x48')],_0x1cc89c[_0x3583('0x4a')]));_0x1d48e9['where']['MailAccountId']=_0x226a78['id'];if(_0x48d2cd[_0x3583('0x48')][_0x3583('0x54')]){_0x1d48e9['where']=_[_0x3583('0x55')](_0x1d48e9['where'],{'$or':_['map'](_0x1d48e9[_0x3583('0x4c')],function(_0x983940){var _0x3065b4={};_0x3065b4[_0x983940]={'$like':'%'+_0x48d2cd[_0x3583('0x48')]['filter']+'%'};return _0x3065b4;})});}_0x1d48e9=_[_0x3583('0x55')]({},_0x1d48e9,_0x48d2cd[_0x3583('0x57')]);return db[_0x3583('0x63')][_0x3583('0x30')]({'where':_0x1d48e9[_0x3583('0x53')]})[_0x3583('0x20')](function(_0x3b02ee){_0x1d5f5c[_0x3583('0x30')]=_0x3b02ee;if(_0x48d2cd[_0x3583('0x48')][_0x3583('0x68')]){_0x1d48e9[_0x3583('0x58')]=[{'all':!![]}];}return db[_0x3583('0x63')]['findAll'](_0x1d48e9);})['then'](function(_0x1dccf6){_0x1d5f5c[_0x3583('0x5a')]=_0x1dccf6;return _0x1d5f5c;});}})['then'](respondWithFilteredResult(_0x3770dc,_0x1d48e9))[_0x3583('0x2a')](handleError(_0x3770dc,null));};exports[_0x3583('0x69')]=function(_0x41a245,_0x323184,_0x4f96be){return db[_0x3583('0x42')][_0x3583('0x5d')]({'where':{'id':_0x41a245['params']['id']}})[_0x3583('0x20')](handleEntityNotFound(_0x323184,null))[_0x3583('0x20')](function(_0x31def0){if(_0x31def0){return _0x31def0[_0x3583('0x69')](_0x41a245['query'][_0x3583('0x6a')]);}})[_0x3583('0x20')](respondWithStatusCode(_0x323184,null))[_0x3583('0x2a')](handleError(_0x323184,null));};exports['addAnswer']=function(_0x1e898f,_0xe71337,_0x4618a4){if(_0x1e898f['body']['id']){delete _0x1e898f[_0x3583('0x5e')]['id'];}return db[_0x3583('0x42')][_0x3583('0x5d')]({'where':{'id':_0x1e898f[_0x3583('0x5f')]['id']}})['then'](handleEntityNotFound(_0xe71337,null))['then'](function(_0x37888e){if(_0x37888e){_0x1e898f[_0x3583('0x5e')]['MailAccountId']=_0x37888e['id'];return db['CannedAnswer'][_0x3583('0x64')](_0x1e898f[_0x3583('0x5e')]);}})[_0x3583('0x20')](respondWithResult(_0xe71337,null))[_0x3583('0x2a')](handleError(_0xe71337,null));};exports[_0x3583('0x6b')]=function(_0x3a80d0,_0x3bbaa4,_0x1ab8b7){var _0x278277={'raw':![],'where':{}};var _0x350bc2={};var _0x2be8b0={'count':0x0,'rows':[]};return db[_0x3583('0x42')]['findOne']({'where':{'id':_0x3a80d0[_0x3583('0x5f')]['id']}})['then'](handleEntityNotFound(_0x3bbaa4,null))['then'](function(_0x33c7cd){if(_0x33c7cd){_0x350bc2[_0x3583('0x46')]=_[_0x3583('0x49')](db['CannedAnswer'][_0x3583('0x43')]);_0x350bc2['query']=_[_0x3583('0x49')](_0x3a80d0[_0x3583('0x48')]);_0x350bc2[_0x3583('0x4a')]=_['intersection'](_0x350bc2['model'],_0x350bc2[_0x3583('0x48')]);_0x278277['attributes']=_[_0x3583('0x4b')](_0x350bc2[_0x3583('0x46')],qs[_0x3583('0x4d')](_0x3a80d0['query'][_0x3583('0x4d')]));_0x278277[_0x3583('0x4c')]=_0x278277[_0x3583('0x4c')][_0x3583('0x4e')]?_0x278277[_0x3583('0x4c')]:_0x350bc2[_0x3583('0x46')];if(!_0x3a80d0[_0x3583('0x48')][_0x3583('0x4f')](_0x3583('0x50'))){_0x278277[_0x3583('0x2f')]=qs[_0x3583('0x2f')](_0x3a80d0[_0x3583('0x48')][_0x3583('0x2f')]);_0x278277['offset']=qs[_0x3583('0x31')](_0x3a80d0[_0x3583('0x48')][_0x3583('0x31')]);}_0x278277[_0x3583('0x51')]=qs['sort'](_0x3a80d0[_0x3583('0x48')][_0x3583('0x52')]);_0x278277[_0x3583('0x53')]=qs[_0x3583('0x4a')](_[_0x3583('0x67')](_0x3a80d0[_0x3583('0x48')],_0x350bc2[_0x3583('0x4a')]));_0x278277['where'][_0x3583('0x62')]=_0x33c7cd['id'];if(_0x3a80d0[_0x3583('0x48')]['filter']){_0x278277[_0x3583('0x53')]=_[_0x3583('0x55')](_0x278277[_0x3583('0x53')],{'$or':_[_0x3583('0x47')](_0x278277[_0x3583('0x4c')],function(_0x5c4a21){var _0x37e0e9={};_0x37e0e9[_0x5c4a21]={'$like':'%'+_0x3a80d0[_0x3583('0x48')]['filter']+'%'};return _0x37e0e9;})});}_0x278277=_['merge']({},_0x278277,_0x3a80d0[_0x3583('0x57')]);return db[_0x3583('0x6c')][_0x3583('0x30')]({'where':_0x278277[_0x3583('0x53')]})[_0x3583('0x20')](function(_0x328374){_0x2be8b0['count']=_0x328374;if(_0x3a80d0[_0x3583('0x48')]['includeAll']){_0x278277[_0x3583('0x58')]=[{'all':!![]}];}return db['CannedAnswer'][_0x3583('0x59')](_0x278277);})[_0x3583('0x20')](function(_0x2838f9){_0x2be8b0[_0x3583('0x5a')]=_0x2838f9;return _0x2be8b0;});}})['then'](respondWithFilteredResult(_0x3bbaa4,_0x278277))[_0x3583('0x2a')](handleError(_0x3bbaa4,null));};exports[_0x3583('0x6d')]=function(_0x184ace,_0x50078d,_0x615c4a){return db['MailAccount'][_0x3583('0x5d')]({'where':{'id':_0x184ace['params']['id']}})[_0x3583('0x20')](handleEntityNotFound(_0x50078d,null))[_0x3583('0x20')](function(_0x29d61e){if(_0x29d61e){return _0x29d61e[_0x3583('0x6d')](_0x184ace[_0x3583('0x48')][_0x3583('0x6a')]);}})[_0x3583('0x20')](respondWithStatusCode(_0x50078d,null))[_0x3583('0x2a')](handleError(_0x50078d,null));};exports[_0x3583('0x64')]=function(_0x217ab9,_0x25c4df){var _0x14a74f={'name':_0x217ab9[_0x3583('0x5e')][_0x3583('0x3b')],'key':_0x217ab9[_0x3583('0x5e')][_0x3583('0x6e')],'email':_0x217ab9[_0x3583('0x5e')]['email'],'ListId':_0x217ab9[_0x3583('0x5e')][_0x3583('0x6f')],'active':!_[_0x3583('0x70')](_0x217ab9[_0x3583('0x5e')][_0x3583('0x71')])?_0x217ab9[_0x3583('0x5e')][_0x3583('0x71')]:!![],'description':_0x217ab9[_0x3583('0x5e')][_0x3583('0x72')]||null,'Imap':{},'Smtp':{}};if(_[_0x3583('0x70')](_0x217ab9[_0x3583('0x5e')][_0x3583('0x73')])){if(_0x217ab9[_0x3583('0x5e')][_0x3583('0x74')]){_0x14a74f[_0x3583('0x3f')][_0x3583('0x75')]=_0x14a74f[_0x3583('0x41')][_0x3583('0x75')]=_0x217ab9['body'][_0x3583('0x76')];_0x14a74f[_0x3583('0x3f')][_0x3583('0x77')]=_0x14a74f[_0x3583('0x41')][_0x3583('0x78')]=_0x217ab9[_0x3583('0x5e')][_0x3583('0x79')];}else{_0x14a74f[_0x3583('0x3f')][_0x3583('0x7a')]=_0x14a74f[_0x3583('0x41')][_0x3583('0x7a')]=![];}_0x14a74f[_0x3583('0x3f')][_0x3583('0x7b')]=_0x217ab9[_0x3583('0x5e')][_0x3583('0x3f')][_0x3583('0x7b')];_0x14a74f[_0x3583('0x3f')]['port']=_0x217ab9[_0x3583('0x5e')][_0x3583('0x3f')]['port'];_0x14a74f[_0x3583('0x41')][_0x3583('0x7b')]=_0x217ab9[_0x3583('0x5e')][_0x3583('0x41')][_0x3583('0x7b')];_0x14a74f[_0x3583('0x41')][_0x3583('0x7c')]=_0x217ab9[_0x3583('0x5e')]['Smtp'][_0x3583('0x7c')];}else{_0x14a74f[_0x3583('0x3f')]['service']=_0x14a74f['Smtp'][_0x3583('0x7d')]=_0x217ab9[_0x3583('0x5e')][_0x3583('0x73')];_0x14a74f[_0x3583('0x3f')][_0x3583('0x75')]=_0x14a74f[_0x3583('0x41')][_0x3583('0x75')]=_0x217ab9[_0x3583('0x5e')]['cuser'];_0x14a74f['Imap']['password']=_0x14a74f[_0x3583('0x41')][_0x3583('0x78')]=_0x217ab9[_0x3583('0x5e')]['cpassword'];}return db[_0x3583('0x42')][_0x3583('0x64')](_0x14a74f,{'include':[{'model':db[_0x3583('0x40')],'as':_0x3583('0x41')},{'model':db[_0x3583('0x3e')],'as':'Imap'}]})[_0x3583('0x20')](function(_0x47afde){var _0x4ec8a4=_0x217ab9[_0x3583('0x75')]['get']({'plain':!![]});if(!_0x4ec8a4)throw new Error(_0x3583('0x7e'));if(_0x4ec8a4[_0x3583('0x7f')]==='user'){var _0x44f5b2=_0x47afde[_0x3583('0x37')]({'plain':!![]});return db[_0x3583('0x80')][_0x3583('0x5d')]({'where':{'name':_0x3583('0x38'),'userProfileId':_0x4ec8a4[_0x3583('0x81')]},'raw':!![]})[_0x3583('0x20')](function(_0x3deb3d){if(_0x3deb3d&&_0x3deb3d['autoAssociation']===0x0){return db[_0x3583('0x39')]['create']({'name':_0x44f5b2[_0x3583('0x3b')],'resourceId':_0x44f5b2['id'],'type':_0x3deb3d[_0x3583('0x3b')],'sectionId':_0x3deb3d['id']},{})['then'](function(){return _0x47afde;});}else{return _0x47afde;}})[_0x3583('0x2a')](function(_0x40b6e8){logger[_0x3583('0x26')](_0x3583('0x82'),_0x40b6e8);throw _0x40b6e8;});}return _0x47afde;})[_0x3583('0x20')](respondWithResult(_0x25c4df,0xc9))['catch'](handleError(_0x25c4df,null));};exports['getImap']=function(_0xc9cdff,_0x35da83,_0x52db08){return db[_0x3583('0x42')][_0x3583('0x66')]({'where':{'id':_0xc9cdff[_0x3583('0x5f')]['id']}})['then'](handleEntityNotFound(_0x35da83,null))[_0x3583('0x20')](function(_0x35b7ad){if(_0x35b7ad){return _0x35b7ad[_0x3583('0x83')]();}return null;})[_0x3583('0x20')](respondWithResult(_0x35da83,null))[_0x3583('0x2a')](handleError(_0x35da83,null));};exports[_0x3583('0x84')]=function(_0x183a51,_0xb8fa4a,_0x253bcf){if(_0x183a51[_0x3583('0x5e')]['id']){delete _0x183a51[_0x3583('0x5e')]['id'];}return db[_0x3583('0x42')][_0x3583('0x5d')]({'where':{'id':_0x183a51['params']['id']}})['then'](handleEntityNotFound(_0xb8fa4a,null))[_0x3583('0x20')](function(_0x3779dc){if(_0x3779dc){_0x183a51['body'][_0x3583('0x62')]=_0x3779dc['id'];return db['MailServerIn'][_0x3583('0x64')](_0x183a51[_0x3583('0x5e')]);}})[_0x3583('0x20')](respondWithResult(_0xb8fa4a,null))['catch'](handleError(_0xb8fa4a,null));};exports['removeImap']=function(_0x54b93f,_0x147f3e,_0x42d90f){return db['MailAccount'][_0x3583('0x66')]({'where':{'id':_0x54b93f[_0x3583('0x5f')]['id']}})[_0x3583('0x20')](handleEntityNotFound(_0x147f3e,null))[_0x3583('0x20')](function(_0x270640){if(_0x270640){return _0x270640['setImap'](null);}return null;})[_0x3583('0x20')](respondWithStatusCode(_0x147f3e,null))[_0x3583('0x2a')](handleError(_0x147f3e,null));};exports[_0x3583('0x85')]=function(_0x5d70f9,_0x568642,_0x4fe683){return db['MailAccount'][_0x3583('0x66')]({'where':{'id':_0x5d70f9[_0x3583('0x5f')]['id']}})['then'](handleEntityNotFound(_0x568642,null))[_0x3583('0x20')](function(_0x3069a5){if(_0x3069a5){return _0x3069a5[_0x3583('0x85')]();}return null;})[_0x3583('0x20')](respondWithResult(_0x568642,null))[_0x3583('0x2a')](handleError(_0x568642,null));};exports['addSmtp']=function(_0x2d6c4b,_0x2f020f,_0x2c3e10){if(_0x2d6c4b['body']['id']){delete _0x2d6c4b[_0x3583('0x5e')]['id'];}return db[_0x3583('0x42')]['find']({'where':{'id':_0x2d6c4b[_0x3583('0x5f')]['id']}})[_0x3583('0x20')](handleEntityNotFound(_0x2f020f,null))[_0x3583('0x20')](function(_0x5da785){if(_0x5da785){_0x2d6c4b[_0x3583('0x5e')][_0x3583('0x62')]=_0x5da785['id'];return db[_0x3583('0x40')]['create'](_0x2d6c4b['body']);}})[_0x3583('0x20')](respondWithResult(_0x2f020f,null))[_0x3583('0x2a')](handleError(_0x2f020f,null));};exports['removeSmtp']=function(_0x4e552f,_0x4da17f,_0x370bd5){return db[_0x3583('0x42')][_0x3583('0x66')]({'where':{'id':_0x4e552f['params']['id']}})[_0x3583('0x20')](handleEntityNotFound(_0x4da17f,null))['then'](function(_0x30e42b){if(_0x30e42b){return _0x30e42b[_0x3583('0x86')](null);}return null;})[_0x3583('0x20')](respondWithStatusCode(_0x4da17f,null))[_0x3583('0x2a')](handleError(_0x4da17f,null));};exports[_0x3583('0x87')]=function(_0xd012ee,_0x55145a,_0x1eb2d5){return db[_0x3583('0x88')][_0x3583('0x5d')]({'where':{'id':_0xd012ee[_0x3583('0x5f')]['id']}})['then'](handleEntityNotFound(_0x55145a,null))['then'](function(_0x1b390a){if(_0x1b390a){return _0x1b390a['addInteraction'](_0xd012ee[_0x3583('0x5e')][_0x3583('0x6a')],_['omit'](_0xd012ee[_0x3583('0x5e')],['ids','id'])||{});}})[_0x3583('0x20')](respondWithResult(_0x55145a,null))['catch'](handleError(_0x55145a,null));};exports[_0x3583('0x89')]=function(_0x5dbbad,_0x31d076,_0x2f003d){var _0x19bde5={'raw':![],'where':{}};var _0x14ba56={};var _0x15d1e4={'count':0x0,'rows':[]};return db['MailAccount']['findOne']({'where':{'id':_0x5dbbad['params']['id']}})[_0x3583('0x20')](handleEntityNotFound(_0x31d076,null))[_0x3583('0x20')](function(_0x372025){if(_0x372025){_0x14ba56[_0x3583('0x46')]=_[_0x3583('0x49')](db[_0x3583('0x88')][_0x3583('0x43')]);_0x14ba56['query']=_['keys'](_0x5dbbad['query']);_0x14ba56[_0x3583('0x4a')]=_[_0x3583('0x4b')](_0x14ba56[_0x3583('0x46')],_0x14ba56[_0x3583('0x48')]);_0x19bde5[_0x3583('0x4c')]=_[_0x3583('0x4b')](_0x14ba56[_0x3583('0x46')],qs[_0x3583('0x4d')](_0x5dbbad[_0x3583('0x48')][_0x3583('0x4d')]));_0x19bde5[_0x3583('0x4c')]=_0x19bde5[_0x3583('0x4c')]['length']?_0x19bde5[_0x3583('0x4c')]:_0x14ba56[_0x3583('0x46')];if(!_0x5dbbad[_0x3583('0x48')][_0x3583('0x4f')](_0x3583('0x50'))){_0x19bde5[_0x3583('0x2f')]=qs['limit'](_0x5dbbad['query'][_0x3583('0x2f')]);_0x19bde5[_0x3583('0x31')]=qs['offset'](_0x5dbbad[_0x3583('0x48')][_0x3583('0x31')]);}_0x19bde5[_0x3583('0x51')]=qs['sort'](_0x5dbbad[_0x3583('0x48')][_0x3583('0x52')]);_0x19bde5[_0x3583('0x53')]=qs[_0x3583('0x4a')](_['pick'](_0x5dbbad['query'],_0x14ba56[_0x3583('0x4a')]));_0x19bde5['where'][_0x3583('0x62')]=_0x372025['id'];if(_0x5dbbad[_0x3583('0x48')][_0x3583('0x54')]){_0x19bde5['where']=_[_0x3583('0x55')](_0x19bde5[_0x3583('0x53')],{'$or':_['map'](_0x19bde5[_0x3583('0x4c')],function(_0x580dc9){var _0x198ade={};_0x198ade[_0x580dc9]={'$like':'%'+_0x5dbbad['query'][_0x3583('0x54')]+'%'};return _0x198ade;})});}_0x19bde5=_[_0x3583('0x55')]({},_0x19bde5,_0x5dbbad[_0x3583('0x57')]);return db[_0x3583('0x88')][_0x3583('0x30')]({'where':_0x19bde5[_0x3583('0x53')]})[_0x3583('0x20')](function(_0x2dbdba){_0x15d1e4[_0x3583('0x30')]=_0x2dbdba;if(_0x5dbbad[_0x3583('0x48')][_0x3583('0x68')]){_0x19bde5[_0x3583('0x58')]=[{'model':db[_0x3583('0x8a')],'as':_0x3583('0x8b'),'required':![]},{'model':db[_0x3583('0x8c')],'as':'Owner','attributes':[_0x3583('0x3b'),'fullname',_0x3583('0x8d')],'required':![]},{'model':db[_0x3583('0x8e')],'as':_0x3583('0x8f'),'attributes':['id',_0x3583('0x3b'),'color'],'where':_0x5dbbad[_0x3583('0x48')]['tag']?{'id':_0x5dbbad[_0x3583('0x48')][_0x3583('0x90')]}:undefined,'required':_0x5dbbad[_0x3583('0x48')][_0x3583('0x90')]?!![]:![]}];}return db[_0x3583('0x88')][_0x3583('0x59')](_0x19bde5);})['then'](function(_0x496751){_0x15d1e4[_0x3583('0x5a')]=_0x496751;return _0x15d1e4;});}})[_0x3583('0x20')](respondWithFilteredResult(_0x31d076,_0x19bde5))[_0x3583('0x2a')](handleError(_0x31d076,null));};exports['addApplications']=function(_0x54ac9c,_0x220870,_0xb53c62){return db['MailAccount'][_0x3583('0x66')]({'where':{'id':_0x54ac9c[_0x3583('0x5f')]['id']}})[_0x3583('0x20')](handleEntityNotFound(_0x220870,null))[_0x3583('0x20')](function(_0x5e7f7b){if(_0x5e7f7b){return db[_0x3583('0x91')][_0x3583('0x92')](function(_0x276e5a){return db[_0x3583('0x93')][_0x3583('0x36')]({'where':{'MailAccountId':_0x54ac9c[_0x3583('0x5f')]['id']},'transaction':_0x276e5a})[_0x3583('0x20')](function(_0x20ee13){var _0x4f93d3=_[_0x3583('0x47')](_0x54ac9c['body'],function(_0x5b1169){_0x5b1169['MailAccountId']=_0x54ac9c[_0x3583('0x5f')]['id'];return _0x5b1169;});return db[_0x3583('0x93')]['bulkCreate'](_0x4f93d3,{'transaction':_0x276e5a});});})[_0x3583('0x20')](function(){return db['MailApplication'][_0x3583('0x94')]({'where':{'MailAccountId':_0x54ac9c[_0x3583('0x5f')]['id']},'order':_0x3583('0x95')});});}})['then'](respondWithResult(_0x220870,null))[_0x3583('0x2a')](handleError(_0x220870,null));};exports[_0x3583('0x96')]=function(_0x428061,_0x2fea7e,_0x4c09b2){var _0xf2ee28={};var _0x2993b4={};var _0x582c24;var _0x20e9ce;return db['MailAccount'][_0x3583('0x66')]({'where':{'id':_0x428061[_0x3583('0x5f')]['id']}})[_0x3583('0x20')](handleEntityNotFound(_0x2fea7e,null))[_0x3583('0x20')](function(_0x249faa){if(_0x249faa){_0x582c24=_0x249faa;_0x2993b4[_0x3583('0x46')]=_[_0x3583('0x49')](db[_0x3583('0x93')][_0x3583('0x43')]);_0x2993b4[_0x3583('0x48')]=_['keys'](_0x428061[_0x3583('0x48')]);_0x2993b4[_0x3583('0x4a')]=_[_0x3583('0x4b')](_0x2993b4[_0x3583('0x46')],_0x2993b4[_0x3583('0x48')]);_0xf2ee28['attributes']=_[_0x3583('0x4b')](_0x2993b4['model'],qs[_0x3583('0x4d')](_0x428061[_0x3583('0x48')]['fields']));_0xf2ee28[_0x3583('0x4c')]=_0xf2ee28['attributes'][_0x3583('0x4e')]?_0xf2ee28[_0x3583('0x4c')]:_0x2993b4[_0x3583('0x46')];_0xf2ee28['order']=qs[_0x3583('0x52')](_0x428061[_0x3583('0x48')][_0x3583('0x52')]);_0xf2ee28['where']=qs[_0x3583('0x4a')](_['pick'](_0x428061['query'],_0x2993b4[_0x3583('0x4a')]));if(_0x428061['query'][_0x3583('0x54')]){_0xf2ee28['where']=_['merge'](_0xf2ee28[_0x3583('0x53')],{'$or':_[_0x3583('0x47')](_0xf2ee28['attributes'],function(_0x59cbf4){var _0x1b284d={};_0x1b284d[_0x59cbf4]={'$like':'%'+_0x428061[_0x3583('0x48')][_0x3583('0x54')]+'%'};return _0x1b284d;})});}_0xf2ee28=_[_0x3583('0x55')]({},_0xf2ee28,_0x428061[_0x3583('0x57')]);return _0x582c24[_0x3583('0x96')](_0xf2ee28);}})[_0x3583('0x20')](function(_0x101809){if(_0x101809){_0x20e9ce=_0x101809['length'];if(!_0x428061['query'][_0x3583('0x4f')](_0x3583('0x50'))){_0xf2ee28['limit']=qs[_0x3583('0x2f')](_0x428061[_0x3583('0x48')][_0x3583('0x2f')]);_0xf2ee28[_0x3583('0x31')]=qs[_0x3583('0x31')](_0x428061['query'][_0x3583('0x31')]);}return _0x582c24[_0x3583('0x96')](_0xf2ee28);}})[_0x3583('0x20')](function(_0x3aa4cb){if(_0x3aa4cb){return _0x3aa4cb?{'count':_0x20e9ce,'rows':_0x3aa4cb}:null;}})[_0x3583('0x20')](respondWithResult(_0x2fea7e,null))[_0x3583('0x2a')](handleError(_0x2fea7e,null));};exports[_0x3583('0x97')]=function(_0x294f74,_0x37f187,_0x2fa36f){var _0xdb3e4c={'raw':!![],'where':{}};var _0x3b60c1={};var _0x19308e={'count':0x0,'rows':[]};return db[_0x3583('0x42')][_0x3583('0x66')]({'where':{'id':_0x294f74[_0x3583('0x5f')]['id']}})[_0x3583('0x20')](handleEntityNotFound(_0x37f187,null))['then'](function(_0x3d7d3c){if(_0x3d7d3c){_0x3b60c1[_0x3583('0x46')]=_['keys'](db[_0x3583('0x98')]['rawAttributes']);_0x3b60c1[_0x3583('0x48')]=_[_0x3583('0x49')](_0x294f74[_0x3583('0x48')]);_0x3b60c1[_0x3583('0x4a')]=_[_0x3583('0x4b')](_0x3b60c1[_0x3583('0x46')],_0x3b60c1['query']);_0xdb3e4c['attributes']=_[_0x3583('0x4b')](_0x3b60c1[_0x3583('0x46')],qs[_0x3583('0x4d')](_0x294f74[_0x3583('0x48')]['fields']));_0xdb3e4c['attributes']=_0xdb3e4c[_0x3583('0x4c')][_0x3583('0x4e')]?_0xdb3e4c[_0x3583('0x4c')]:_0x3b60c1['model'];if(!_0x294f74[_0x3583('0x48')][_0x3583('0x4f')](_0x3583('0x50'))){_0xdb3e4c[_0x3583('0x2f')]=qs[_0x3583('0x2f')](_0x294f74[_0x3583('0x48')][_0x3583('0x2f')]);_0xdb3e4c[_0x3583('0x31')]=qs[_0x3583('0x31')](_0x294f74[_0x3583('0x48')][_0x3583('0x31')]);}_0xdb3e4c['order']=qs[_0x3583('0x52')](_0x294f74['query']['sort']);_0xdb3e4c[_0x3583('0x53')]=qs['filters'](_['pick'](_0x294f74[_0x3583('0x48')],_0x3b60c1['filters']));_0xdb3e4c[_0x3583('0x53')][_0x3583('0x62')]=_0x3d7d3c['id'];if(_0x294f74[_0x3583('0x48')][_0x3583('0x54')]){_0xdb3e4c['where']=_[_0x3583('0x55')](_0xdb3e4c['where'],{'$or':_[_0x3583('0x47')](_0xdb3e4c[_0x3583('0x4c')],function(_0x49b51e){var _0x164cc5={};_0x164cc5[_0x49b51e]={'$like':'%'+_0x294f74[_0x3583('0x48')][_0x3583('0x54')]+'%'};return _0x164cc5;})});}if(_0x294f74['query']['$gte']){var _0x57b3c8=_0x294f74[_0x3583('0x48')][_0x3583('0x99')][_0x3583('0x9a')](',');var _0x458be3={};_0x458be3[_0x57b3c8[0x0]]={'$gte':moment(_0x57b3c8[0x1])[_0x3583('0x9b')]('YYYY-MM-DD\x20HH:mm:ss')};_0xdb3e4c['where']=_['merge'](_0xdb3e4c[_0x3583('0x53')],_0x458be3);}_0xdb3e4c=_[_0x3583('0x55')]({},_0xdb3e4c,_0x294f74[_0x3583('0x57')]);return db[_0x3583('0x98')][_0x3583('0x30')]({'where':_0xdb3e4c[_0x3583('0x53')]})[_0x3583('0x20')](function(_0x3e8d99){_0x19308e['count']=_0x3e8d99;if(_0x294f74[_0x3583('0x48')][_0x3583('0x68')]){_0xdb3e4c[_0x3583('0x58')]=[{'all':!![]}];}return db[_0x3583('0x98')][_0x3583('0x59')](_0xdb3e4c);})[_0x3583('0x20')](function(_0x293cbb){if(_0x294f74[_0x3583('0x48')]['inlineCss']===_0x3583('0x9c')){for(var _0xd9275d=0x0;_0xd9275d<_0x293cbb['length'];_0xd9275d++){_0x293cbb[_0xd9275d][_0x3583('0x5e')]=juice(_0x293cbb[_0xd9275d][_0x3583('0x5e')]);}}_0x19308e[_0x3583('0x5a')]=_0x293cbb;return _0x19308e;});}})[_0x3583('0x20')](respondWithFilteredResult(_0x37f187,_0xdb3e4c))[_0x3583('0x2a')](handleError(_0x37f187,null));};exports['send']=function(_0x95e74c,_0xdaf1f0,_0x42a351){var _0x239f05,_0x1f88c8={},_0x53c3ab;if(_0x95e74c[_0x3583('0x5e')]['to']){_0x53c3ab=_0x95e74c[_0x3583('0x5e')]['to']['split'](',')[0x0];}return db[_0x3583('0x42')][_0x3583('0x5d')]({'where':{'id':_0x95e74c[_0x3583('0x5f')]['id']},'include':[{'model':db[_0x3583('0x9d')],'as':_0x3583('0x9e'),'include':[{'model':db['CmContact'],'as':'Contacts','where':{'email':_0x53c3ab},'limit':0x1,'order':[['updatedAt',_0x3583('0x9f')]]}]},{'model':db[_0x3583('0x40')],'as':_0x3583('0x41'),'raw':!![]}]})[_0x3583('0x20')](handleEntityNotFound(_0xdaf1f0,null))[_0x3583('0x20')](function(_0x50d354){if(_0x50d354){_0x239f05=_0x50d354;if(_0x50d354[_0x3583('0x41')]){if(_['isNil'](_0x95e74c[_0x3583('0x5e')][_0x3583('0xa0')])){_0x95e74c['body']['from']=util[_0x3583('0x9b')](_0x3583('0xa1'),_0x50d354[_0x3583('0x3b')],_0x50d354['email']||_0x50d354[_0x3583('0x41')]['user']);}if(_0x95e74c[_0x3583('0x5e')][_0x3583('0xa2')]&&_0x95e74c[_0x3583('0x5e')][_0x3583('0xa2')]['length']){for(var _0x2aac91=0x0;_0x2aac91<_0x95e74c[_0x3583('0x5e')]['attachments'][_0x3583('0x4e')];_0x2aac91+=0x1){_0x95e74c[_0x3583('0x5e')][_0x3583('0xa2')][_0x2aac91]={'filename':_0x95e74c[_0x3583('0x5e')][_0x3583('0xa2')][_0x2aac91][_0x3583('0x3b')],'path':path['join'](config[_0x3583('0xa3')],_0x3583('0xa4'),_0x95e74c[_0x3583('0x5e')][_0x3583('0xa2')][_0x2aac91][_0x3583('0xa5')])};}}var _0x5802a7={'tls':{'rejectUnauthorized':![]}};if(_[_0x3583('0x70')](_0x50d354[_0x3583('0x41')][_0x3583('0x7d')])){if(_0x50d354['Smtp'][_0x3583('0x7a')]){_0x5802a7[_0x3583('0xa6')]={'user':_0x50d354[_0x3583('0x41')]['user'],'pass':_0x50d354[_0x3583('0x41')][_0x3583('0x78')]};}_0x5802a7['host']=_0x50d354[_0x3583('0x41')][_0x3583('0x7b')];_0x5802a7[_0x3583('0x7c')]=_0x50d354['Smtp'][_0x3583('0x7c')];_0x5802a7[_0x3583('0xa7')]=_0x50d354[_0x3583('0x41')][_0x3583('0xa7')];}else{_0x5802a7['service']=_0x50d354[_0x3583('0x41')][_0x3583('0x7d')];_0x5802a7[_0x3583('0xa6')]={'user':_0x50d354[_0x3583('0x41')]['user'],'pass':_0x50d354[_0x3583('0x41')][_0x3583('0x78')]};}return respondWithRpcPromise(_0x3583('0xa8'),_0x3583('0xa9'),{'account':_0x5802a7,'message':_0x95e74c[_0x3583('0x5e')]});}else{throw new Error('List\x20not\x20found');}}})[_0x3583('0x20')](function(_0x1bd522){if(_0x1bd522){_0x1f88c8=_0x1bd522;if(_0x239f05[_0x3583('0x9e')]){if(_0x239f05[_0x3583('0x9e')][_0x3583('0xaa')][_0x3583('0x4e')]){return _0x239f05[_0x3583('0x9e')][_0x3583('0xaa')][0x0];}else{return db[_0x3583('0x8a')][_0x3583('0x64')](_['defaults'](_0x95e74c[_0x3583('0x5e')],{'firstName':_0x95e74c[_0x3583('0x5e')]['to'],'email':_0x95e74c[_0x3583('0x5e')]['to'],'phone':_0x95e74c['body']['to'],'ListId':_0x239f05[_0x3583('0x6f')]}));}}else{throw new Error('List\x20not\x20found');}}})[_0x3583('0x20')](function(_0x39eaa6){if(_0x39eaa6){var _0x216696={'UserId':_0x95e74c[_0x3583('0x75')]['id'],'ContactId':_0x39eaa6['id'],'MailAccountId':_0x239f05['id'],'inReplyTo':_0x1f88c8[_0x3583('0xab')],'to':_0x95e74c['body']['from'],'cc':_0x95e74c['body']['cc'],'subject':_0x95e74c[_0x3583('0x5e')]['subject'],'attach':_0x95e74c[_0x3583('0x5e')][_0x3583('0xac')],'firstMsgDirection':_0x3583('0xad'),'lastMsgAt':moment()[_0x3583('0x9b')](_0x3583('0xae')),'lastMsgDirection':_0x3583('0xad'),'Messages':[_[_0x3583('0x55')](_0x95e74c['body'],{'messageId':_0x1f88c8['messageId'],'sentAt':moment()[_0x3583('0x9b')](_0x3583('0xae')),'read':!![],'MailAccountId':_0x239f05['id'],'UserId':_0x95e74c['user']['id'],'ContactId':_0x39eaa6['id']})]};if(_0x95e74c[_0x3583('0x5e')][_0x3583('0xaf')]){_0x216696=_['merge'](_0x216696,_0x95e74c[_0x3583('0x5e')]['Interaction']);}return db[_0x3583('0x88')]['create'](_0x216696,{'include':[{'model':db['MailMessage'],'as':_0x3583('0xb0')}]});}})[_0x3583('0x20')](respondWithResult(_0xdaf1f0,null))[_0x3583('0x2a')](handleError(_0xdaf1f0,null));};exports[_0x3583('0xb1')]=function(_0x5ce5be,_0x19e9fc,_0x4af936){return db[_0x3583('0x42')][_0x3583('0x5d')]({'where':{'id':_0x5ce5be[_0x3583('0x5f')]['id']},'include':[{'model':db[_0x3583('0x40')],'as':_0x3583('0x41'),'raw':!![]}]})[_0x3583('0x20')](handleEntityNotFound(_0x19e9fc,null))[_0x3583('0x20')](function(_0x377d31){if(_0x377d31&&_0x377d31[_0x3583('0x41')]){var _0x46e809={'id':_0x377d31['id'],'tls':{'rejectUnauthorized':![]}};if(_0x377d31[_0x3583('0x41')][_0x3583('0x7d')]){_0x46e809['service']=_0x377d31[_0x3583('0x41')][_0x3583('0x7d')];}else{_0x46e809['host']=_0x377d31[_0x3583('0x41')][_0x3583('0x7b')];_0x46e809[_0x3583('0x7c')]=_0x377d31[_0x3583('0x41')][_0x3583('0x7c')];_0x46e809[_0x3583('0xa7')]=_0x377d31[_0x3583('0x41')]['secure'];}if(_0x377d31[_0x3583('0x41')]['authentication']){_0x46e809['auth']={'user':_0x377d31['Smtp']['user'],'pass':_0x377d31[_0x3583('0x41')][_0x3583('0x78')]};}return respondWithRpcPromise(_0x3583('0xb2'),_0x3583('0xb1'),{'account':_0x46e809});}})[_0x3583('0x20')](respondWithResult(_0x19e9fc,null))[_0x3583('0x2a')](handleError(_0x19e9fc,null));};exports[_0x3583('0x36')]=function(_0x5a8831,_0x448a53){return db[_0x3583('0x42')][_0x3583('0x5d')]({'where':{'id':_0x5a8831['params']['id']}})['then'](handleEntityNotFound(_0x448a53,null))['then'](function(_0x1541a6){if(_0x1541a6&&_0x1541a6['service']){throw new db[(_0x3583('0xb3'))][(_0x3583('0xb4'))]('You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account');}return _0x1541a6;})[_0x3583('0x20')](removeEntity(_0x448a53,null))['catch'](handleError(_0x448a53,null));};exports['addAgents']=function(_0x364a89,_0x1c8f40,_0x20b870){return db[_0x3583('0x42')][_0x3583('0x5d')]({'where':{'id':_0x364a89[_0x3583('0x5f')]['id']}})[_0x3583('0x20')](handleEntityNotFound(_0x1c8f40,null))[_0x3583('0x20')](function(_0x44ac4b){if(_0x44ac4b){return _0x44ac4b[_0x3583('0xb5')](_0x364a89['body'][_0x3583('0x6a')],_[_0x3583('0xb6')](_0x364a89[_0x3583('0x5e')],[_0x3583('0x6a'),'id'])||{})['spread'](function(_0x38edc0){for(var _0x151cfc=0x0;_0x151cfc<_0x364a89[_0x3583('0x5e')][_0x3583('0x6a')][_0x3583('0x4e')];_0x151cfc+=0x1){socket[_0x3583('0xb7')](_0x3583('0xb8'),{'UserId':Number(_0x364a89[_0x3583('0x5e')][_0x3583('0x6a')][_0x151cfc]),'MailAccountId':Number(_0x364a89[_0x3583('0x5f')]['id'])});}return _0x38edc0;});}})[_0x3583('0x20')](respondWithResult(_0x1c8f40,null))[_0x3583('0x2a')](handleError(_0x1c8f40,null));};exports['removeAgents']=function(_0x8c407f,_0x5af916,_0x4ce77a){return db[_0x3583('0x42')][_0x3583('0x5d')]({'where':{'id':_0x8c407f[_0x3583('0x5f')]['id']}})[_0x3583('0x20')](handleEntityNotFound(_0x5af916,null))[_0x3583('0x20')](function(_0x500068){if(_0x500068){return _0x500068[_0x3583('0xb9')](_0x8c407f[_0x3583('0x48')][_0x3583('0x6a')])[_0x3583('0x20')](function(){if(_[_0x3583('0xba')](_0x8c407f[_0x3583('0x48')]['ids'])){for(var _0x1651db=0x0;_0x1651db<_0x8c407f['query'][_0x3583('0x6a')][_0x3583('0x4e')];_0x1651db+=0x1){socket[_0x3583('0xb7')](_0x3583('0xbb'),{'UserId':Number(_0x8c407f[_0x3583('0x48')]['ids'][_0x1651db]),'MailAccountId':Number(_0x8c407f[_0x3583('0x5f')]['id'])});}}else{socket[_0x3583('0xb7')](_0x3583('0xbb'),{'UserId':Number(_0x8c407f[_0x3583('0x48')]['ids']),'MailAccountId':Number(_0x8c407f[_0x3583('0x5f')]['id'])});}});}})[_0x3583('0x20')](respondWithStatusCode(_0x5af916,null))[_0x3583('0x2a')](handleError(_0x5af916,null));};exports[_0x3583('0xbc')]=function(_0xaba4c7,_0x443126,_0x250e9d){var _0xd2f29a={};var _0x2381e8={};var _0x288b57;var _0x2caa6c;return db[_0x3583('0x42')]['findOne']({'where':{'id':_0xaba4c7[_0x3583('0x5f')]['id']}})[_0x3583('0x20')](handleEntityNotFound(_0x443126,null))[_0x3583('0x20')](function(_0x43d309){if(_0x43d309){_0x288b57=_0x43d309;_0x2381e8[_0x3583('0x46')]=_[_0x3583('0x49')](db[_0x3583('0x8c')][_0x3583('0x43')]);_0x2381e8[_0x3583('0x48')]=_[_0x3583('0x49')](_0xaba4c7[_0x3583('0x48')]);_0x2381e8['filters']=_[_0x3583('0x4b')](_0x2381e8[_0x3583('0x46')],_0x2381e8['query']);_0xd2f29a['attributes']=_['intersection'](_0x2381e8[_0x3583('0x46')],qs[_0x3583('0x4d')](_0xaba4c7[_0x3583('0x48')]['fields']));_0xd2f29a[_0x3583('0x4c')]=_0xd2f29a['attributes'][_0x3583('0x4e')]?_0xd2f29a['attributes']:_0x2381e8[_0x3583('0x46')];_0xd2f29a[_0x3583('0x51')]=qs['sort'](_0xaba4c7[_0x3583('0x48')][_0x3583('0x52')]);_0xd2f29a['where']=qs[_0x3583('0x4a')](_['pick'](_0xaba4c7[_0x3583('0x48')],_0x2381e8[_0x3583('0x4a')]));if(_0xaba4c7[_0x3583('0x48')][_0x3583('0x54')]){_0xd2f29a[_0x3583('0x53')]=_[_0x3583('0x55')](_0xd2f29a[_0x3583('0x53')],{'$or':_[_0x3583('0x47')](_0xd2f29a[_0x3583('0x4c')],function(_0x49020c){var _0x1dc640={};_0x1dc640[_0x49020c]={'$like':'%'+_0xaba4c7[_0x3583('0x48')]['filter']+'%'};return _0x1dc640;})});}_0xd2f29a=_[_0x3583('0x55')]({},_0xd2f29a,_0xaba4c7[_0x3583('0x57')]);return _0x288b57[_0x3583('0xbc')](_0xd2f29a);}})[_0x3583('0x20')](function(_0x49f7c4){if(_0x49f7c4){_0x2caa6c=_0x49f7c4[_0x3583('0x4e')];if(!_0xaba4c7[_0x3583('0x48')][_0x3583('0x4f')](_0x3583('0x50'))){_0xd2f29a['limit']=qs['limit'](_0xaba4c7[_0x3583('0x48')][_0x3583('0x2f')]);_0xd2f29a[_0x3583('0x31')]=qs[_0x3583('0x31')](_0xaba4c7[_0x3583('0x48')][_0x3583('0x31')]);}return _0x288b57[_0x3583('0xbc')](_0xd2f29a);}})[_0x3583('0x20')](function(_0x595da0){if(_0x595da0){return _0x595da0?{'count':_0x2caa6c,'rows':_0x595da0}:null;}})[_0x3583('0x20')](respondWithResult(_0x443126,null))[_0x3583('0x2a')](handleError(_0x443126,null));};
\ No newline at end of file
+var _0x636f=['%s\x20<%s>','attachments','join','root','server/files/attachments','basename','auth','secure','SendMail','sendMail','List\x20not\x20found','Contacts','ListId','messageId','attach','out','Interaction','Messages','verifySmtp','VerifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','userMailAccount:save','removeAgents','emit','userMailAccount:remove','getAgents','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','html-to-text','juice','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','jayson/promise','http','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','reject','save','destroy','end','stack','name','index','MailServerIn','Imap','Smtp','Pause','map','MailAccount','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','VIRTUAL','include','show','mandatoryDispositionPause','fields','includeAll','options','find','update','body','MailServerOut','describe','addDisposition','params','MailAccountId','Disposition','create','getDispositions','nolimit','removeDispositions','ids','getAnswers','findOne','CannedAnswer','findAll','rows','removeAnswers','email','isNil','description','cservice','cauthentication','user','cuser','pass','authentication','host','port','service','password','cpassword','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','getImap','addImap','removeImap','getSmtp','addSmtp','removeSmtp','addInteraction','omit','getInteractions','MailInteraction','User','Owner','fullname','Tag','Tags','tag','addApplications','transaction','MailApplication','findAndCountAll','priority','getApplications','MailMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','send','CmList','List','CmContact','DESC','from'];(function(_0x30d5a5,_0x5b3ade){var _0x7188a0=function(_0x3b6ab2){while(--_0x3b6ab2){_0x30d5a5['push'](_0x30d5a5['shift']());}};_0x7188a0(++_0x5b3ade);}(_0x636f,0xe3));var _0xf636=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x636f[_0x3bf83f];return _0x22c4a9;};'use strict';var emlformat=require(_0xf636('0x0'));var rimraf=require(_0xf636('0x1'));var zipdir=require(_0xf636('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf636('0x3'));var moment=require('moment');var BPromise=require(_0xf636('0x4'));var Mustache=require(_0xf636('0x5'));var util=require(_0xf636('0x6'));var path=require(_0xf636('0x7'));var sox=require(_0xf636('0x8'));var csv=require(_0xf636('0x9'));var ejs=require(_0xf636('0xa'));var fs=require('fs');var fs_extra=require(_0xf636('0xb'));var _=require(_0xf636('0xc'));var squel=require(_0xf636('0xd'));var crypto=require('crypto');var jsforce=require(_0xf636('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xf636('0xf'));var Papa=require(_0xf636('0x10'));var htmlToText=require(_0xf636('0x11'));var juice=require(_0xf636('0x12'));var Redis=require(_0xf636('0x13'));var authService=require(_0xf636('0x14'));var qs=require(_0xf636('0x15'));var as=require(_0xf636('0x16'));var hardwareService=require(_0xf636('0x17'));var logger=require(_0xf636('0x18'))(_0xf636('0x19'));var utils=require(_0xf636('0x1a'));var config=require('../../config/environment');var licenseUtil=require(_0xf636('0x1b'));var db=require('../../mysqldb')['db'];config[_0xf636('0x1c')]=_[_0xf636('0x1d')](config[_0xf636('0x1c')],{'host':_0xf636('0x1e'),'port':0x18eb});var socket=require(_0xf636('0x1f'))(new Redis(config['redis']));require(_0xf636('0x20'))['register'](socket);var jayson=require(_0xf636('0x21'));var client=jayson['client'][_0xf636('0x22')]({'port':0x232b});function respondWithRpcPromise(_0x4f5e3d,_0x4e785f,_0x5a4a88,_0x44f714){return new BPromise(function(_0x44b351,_0x433560){var _0x12ef9a=_0x44f714||client;return _0x12ef9a['request'](_0x4f5e3d,_0x5a4a88)[_0xf636('0x23')](function(_0x357eae){logger[_0xf636('0x24')](_0xf636('0x25'),_0x4e785f,_0xf636('0x26'));logger[_0xf636('0x27')](_0xf636('0x28'),_0x4e785f,_0xf636('0x26'),JSON[_0xf636('0x29')](_0x357eae));if(_0x357eae[_0xf636('0x2a')]){if(_0x357eae[_0xf636('0x2a')][_0xf636('0x2b')]===0x1f4){logger[_0xf636('0x2a')](_0xf636('0x25'),_0x4e785f,_0x357eae[_0xf636('0x2a')]['message']);return _0x433560(_0x357eae['error'][_0xf636('0x2c')]);}logger[_0xf636('0x2a')](_0xf636('0x25'),_0x4e785f,_0x357eae[_0xf636('0x2a')][_0xf636('0x2c')]);return _0x44b351(_0x357eae[_0xf636('0x2a')][_0xf636('0x2c')]);}else{logger[_0xf636('0x24')](_0xf636('0x25'),_0x4e785f,'request\x20sent');_0x44b351(_0x357eae[_0xf636('0x2d')][_0xf636('0x2c')]);}})[_0xf636('0x2e')](function(_0x3278ee){logger[_0xf636('0x2a')](_0xf636('0x25'),_0x4e785f,_0x3278ee);_0x433560(_0x3278ee);});});}function respondWithStatusCode(_0x51e6b0,_0x539877){_0x539877=_0x539877||0xcc;return function(_0x32d69d){if(_0x32d69d){return _0x51e6b0[_0xf636('0x2f')](_0x539877);}return _0x51e6b0[_0xf636('0x30')](_0x539877)['end']();};}function respondWithResult(_0x164262,_0x5511a7){_0x5511a7=_0x5511a7||0xc8;return function(_0x1c8482){if(_0x1c8482){return _0x164262[_0xf636('0x30')](_0x5511a7)[_0xf636('0x31')](_0x1c8482);}};}function respondWithFilteredResult(_0x586441,_0x42561c){return function(_0x3a4c81){if(_0x3a4c81){var _0x598b4e=typeof _0x42561c[_0xf636('0x32')]===_0xf636('0x33')&&typeof _0x42561c['limit']===_0xf636('0x33');var _0x2ad6c8=_0x3a4c81[_0xf636('0x34')];var _0x5baf53=_0x598b4e?0x0:_0x42561c[_0xf636('0x32')];var _0x5d6fbd=_0x598b4e?_0x3a4c81['count']:_0x42561c['offset']+_0x42561c[_0xf636('0x35')];var _0x3994dc;if(_0x5d6fbd>=_0x2ad6c8){_0x5d6fbd=_0x2ad6c8;_0x3994dc=0xc8;}else{_0x3994dc=0xce;}_0x586441[_0xf636('0x30')](_0x3994dc);return _0x586441[_0xf636('0x36')](_0xf636('0x37'),_0x5baf53+'-'+_0x5d6fbd+'/'+_0x2ad6c8)[_0xf636('0x31')](_0x3a4c81);}return null;};}function patchUpdates(_0x3132e7){return function(_0x1a41e5){try{jsonpatch['apply'](_0x1a41e5,_0x3132e7,!![]);}catch(_0x507d20){return BPromise[_0xf636('0x38')](_0x507d20);}return _0x1a41e5[_0xf636('0x39')]();};}function saveUpdates(_0x474430,_0x29bcce){return function(_0x239f4d){if(_0x239f4d){return _0x239f4d['update'](_0x474430)[_0xf636('0x23')](function(_0x5e24bd){return _0x5e24bd;});}return null;};}function removeEntity(_0x362b28,_0x3d1641){return function(_0x153629){if(_0x153629){return _0x153629['destroy']()[_0xf636('0x23')](function(){var _0x22aff5=_0x153629['get']({'plain':!![]});var _0xfcd6d6='MailAccounts';return db['UserProfileResource'][_0xf636('0x3a')]({'where':{'type':_0xfcd6d6,'resourceId':_0x22aff5['id']}})['then'](function(){return _0x153629;});})[_0xf636('0x23')](function(){_0x362b28['status'](0xcc)[_0xf636('0x3b')]();});}};}function handleEntityNotFound(_0x328dbb,_0x38f57a){return function(_0x4e150c){if(!_0x4e150c){_0x328dbb[_0xf636('0x2f')](0x194);}return _0x4e150c;};}function handleError(_0x11839e,_0x51de9d){_0x51de9d=_0x51de9d||0x1f4;return function(_0x32537b){logger[_0xf636('0x2a')](_0x32537b[_0xf636('0x3c')]);if(_0x32537b[_0xf636('0x3d')]){delete _0x32537b[_0xf636('0x3d')];}_0x11839e['status'](_0x51de9d)['send'](_0x32537b);};}exports[_0xf636('0x3e')]=function(_0x436028,_0x457357){var _0x531e8c={'include':[{'model':db[_0xf636('0x3f')],'as':_0xf636('0x40')},{'model':db['MailServerOut'],'as':_0xf636('0x41')},{'model':db[_0xf636('0x42')],'as':'mandatoryDispositionPause'}]},_0x315974={},_0x183158={'count':0x0,'rows':[]};var _0x6bbabc=_[_0xf636('0x43')](db[_0xf636('0x44')][_0xf636('0x45')],function(_0x3cadbd){return{'name':_0x3cadbd[_0xf636('0x46')],'type':_0x3cadbd['type'][_0xf636('0x47')]};});_0x315974[_0xf636('0x48')]=_['map'](_0x6bbabc,'name');_0x315974['query']=_[_0xf636('0x49')](_0x436028[_0xf636('0x4a')]);_0x315974[_0xf636('0x4b')]=_[_0xf636('0x4c')](_0x315974['model'],_0x315974['query']);_0x531e8c[_0xf636('0x4d')]=_[_0xf636('0x4c')](_0x315974['model'],qs['fields'](_0x436028[_0xf636('0x4a')]['fields']));_0x531e8c[_0xf636('0x4d')]=_0x531e8c[_0xf636('0x4d')][_0xf636('0x4e')]?_0x531e8c[_0xf636('0x4d')]:_0x315974[_0xf636('0x48')];if(!_0x436028[_0xf636('0x4a')][_0xf636('0x4f')]('nolimit')){_0x531e8c[_0xf636('0x35')]=qs['limit'](_0x436028[_0xf636('0x4a')][_0xf636('0x35')]);_0x531e8c[_0xf636('0x32')]=qs[_0xf636('0x32')](_0x436028[_0xf636('0x4a')]['offset']);}_0x531e8c[_0xf636('0x50')]=qs['sort'](_0x436028['query'][_0xf636('0x51')]);_0x531e8c[_0xf636('0x52')]=qs['filters'](_[_0xf636('0x53')](_0x436028['query'],_0x315974[_0xf636('0x4b')]),_0x6bbabc);if(_0x436028[_0xf636('0x4a')][_0xf636('0x54')]){_0x531e8c[_0xf636('0x52')]=_[_0xf636('0x55')](_0x531e8c[_0xf636('0x52')],{'$or':_['map'](_0x6bbabc,function(_0x1686ce){if(_0x1686ce[_0xf636('0x56')]!==_0xf636('0x57')){var _0x3102bb={};_0x3102bb[_0x1686ce[_0xf636('0x3d')]]={'$like':'%'+_0x436028['query'][_0xf636('0x54')]+'%'};return _0x3102bb;}})});}_0x531e8c=_[_0xf636('0x55')]({},_0x531e8c,_0x436028['options']);var _0x14839d={'where':_0x531e8c[_0xf636('0x52')]};return db[_0xf636('0x44')][_0xf636('0x34')](_0x14839d)[_0xf636('0x23')](function(_0x56b221){_0x183158[_0xf636('0x34')]=_0x56b221;if(_0x436028['query']['includeAll']){_0x531e8c[_0xf636('0x58')]=[{'all':!![]}];}return db[_0xf636('0x44')]['findAll'](_0x531e8c);})['then'](function(_0x4d0195){_0x183158['rows']=_0x4d0195;return _0x183158;})['then'](respondWithFilteredResult(_0x457357,_0x531e8c))['catch'](handleError(_0x457357,null));};exports[_0xf636('0x59')]=function(_0x1b1e89,_0x47fa2d){var _0x4c8244={'raw':![],'where':{'id':_0x1b1e89['params']['id']},'include':[{'model':db[_0xf636('0x3f')],'as':'Imap'},{'model':db['MailServerOut'],'as':_0xf636('0x41')},{'model':db[_0xf636('0x42')],'as':_0xf636('0x5a')}]},_0x35e85a={};_0x35e85a[_0xf636('0x48')]=_[_0xf636('0x49')](db[_0xf636('0x44')][_0xf636('0x45')]);_0x35e85a[_0xf636('0x4a')]=_[_0xf636('0x49')](_0x1b1e89['query']);_0x35e85a['filters']=_['intersection'](_0x35e85a[_0xf636('0x48')],_0x35e85a[_0xf636('0x4a')]);_0x4c8244[_0xf636('0x4d')]=_['intersection'](_0x35e85a[_0xf636('0x48')],qs[_0xf636('0x5b')](_0x1b1e89[_0xf636('0x4a')][_0xf636('0x5b')]));_0x4c8244['attributes']=_0x4c8244[_0xf636('0x4d')][_0xf636('0x4e')]?_0x4c8244[_0xf636('0x4d')]:_0x35e85a[_0xf636('0x48')];if(_0x1b1e89[_0xf636('0x4a')][_0xf636('0x5c')]){_0x4c8244[_0xf636('0x58')]=[{'all':!![]}];}_0x4c8244=_[_0xf636('0x55')]({},_0x4c8244,_0x1b1e89[_0xf636('0x5d')]);return db[_0xf636('0x44')][_0xf636('0x5e')](_0x4c8244)['then'](handleEntityNotFound(_0x47fa2d,null))['then'](respondWithResult(_0x47fa2d,null))[_0xf636('0x2e')](handleError(_0x47fa2d,null));};exports[_0xf636('0x5f')]=function(_0x329437,_0x412de3){if(_0x329437[_0xf636('0x60')]['id']){delete _0x329437['body']['id'];}return db['MailAccount'][_0xf636('0x5e')]({'where':{'id':_0x329437['params']['id']},'include':[{'model':db[_0xf636('0x3f')],'as':'Imap'},{'model':db[_0xf636('0x61')],'as':_0xf636('0x41')},{'model':db[_0xf636('0x42')],'as':_0xf636('0x5a')}]})['then'](handleEntityNotFound(_0x412de3,null))[_0xf636('0x23')](saveUpdates(_0x329437['body'],null))[_0xf636('0x23')](function(_0x56f3c3){if(_0x56f3c3&&_0x329437[_0xf636('0x60')][_0xf636('0x40')]){return db['MailServerIn'][_0xf636('0x5f')](_0x329437[_0xf636('0x60')][_0xf636('0x40')],{'where':{'MailAccountId':_0x56f3c3['id']}})[_0xf636('0x23')](function(){return _0x56f3c3;});}return _0x56f3c3;})[_0xf636('0x23')](function(_0x11cd94){if(_0x11cd94&&_0x329437[_0xf636('0x60')][_0xf636('0x41')]){return db[_0xf636('0x61')][_0xf636('0x5f')](_0x329437[_0xf636('0x60')]['Smtp'],{'where':{'MailAccountId':_0x11cd94['id']}})[_0xf636('0x23')](function(){return _0x11cd94;});}return _0x11cd94;})[_0xf636('0x23')](respondWithResult(_0x412de3,null))['catch'](handleError(_0x412de3,null));};exports[_0xf636('0x62')]=function(_0x3c0276,_0x4c4359){return db[_0xf636('0x44')]['describe']()[_0xf636('0x23')](respondWithResult(_0x4c4359,null))[_0xf636('0x2e')](handleError(_0x4c4359,null));};exports[_0xf636('0x63')]=function(_0x8244f5,_0x583c6b,_0x1aa12d){if(_0x8244f5[_0xf636('0x60')]['id']){delete _0x8244f5[_0xf636('0x60')]['id'];}return db[_0xf636('0x44')][_0xf636('0x5e')]({'where':{'id':_0x8244f5[_0xf636('0x64')]['id']}})[_0xf636('0x23')](handleEntityNotFound(_0x583c6b,null))[_0xf636('0x23')](function(_0x1769c8){if(_0x1769c8){_0x8244f5['body'][_0xf636('0x65')]=_0x1769c8['id'];return db[_0xf636('0x66')][_0xf636('0x67')](_0x8244f5[_0xf636('0x60')]);}})[_0xf636('0x23')](respondWithResult(_0x583c6b,null))[_0xf636('0x2e')](handleError(_0x583c6b,null));};exports[_0xf636('0x68')]=function(_0x5d7576,_0x44d37d,_0xd54661){var _0x3a6b28={'raw':![],'where':{}};var _0x43e817={};var _0x4d0d82={'count':0x0,'rows':[]};return db['MailAccount']['findOne']({'where':{'id':_0x5d7576[_0xf636('0x64')]['id']}})['then'](handleEntityNotFound(_0x44d37d,null))[_0xf636('0x23')](function(_0x4bf89c){if(_0x4bf89c){_0x43e817['model']=_[_0xf636('0x49')](db[_0xf636('0x66')][_0xf636('0x45')]);_0x43e817[_0xf636('0x4a')]=_[_0xf636('0x49')](_0x5d7576[_0xf636('0x4a')]);_0x43e817[_0xf636('0x4b')]=_['intersection'](_0x43e817[_0xf636('0x48')],_0x43e817[_0xf636('0x4a')]);_0x3a6b28['attributes']=_[_0xf636('0x4c')](_0x43e817[_0xf636('0x48')],qs[_0xf636('0x5b')](_0x5d7576[_0xf636('0x4a')][_0xf636('0x5b')]));_0x3a6b28[_0xf636('0x4d')]=_0x3a6b28[_0xf636('0x4d')]['length']?_0x3a6b28['attributes']:_0x43e817[_0xf636('0x48')];if(!_0x5d7576['query'][_0xf636('0x4f')](_0xf636('0x69'))){_0x3a6b28[_0xf636('0x35')]=qs[_0xf636('0x35')](_0x5d7576['query'][_0xf636('0x35')]);_0x3a6b28[_0xf636('0x32')]=qs[_0xf636('0x32')](_0x5d7576[_0xf636('0x4a')][_0xf636('0x32')]);}_0x3a6b28['order']=qs[_0xf636('0x51')](_0x5d7576[_0xf636('0x4a')][_0xf636('0x51')]);_0x3a6b28[_0xf636('0x52')]=qs[_0xf636('0x4b')](_[_0xf636('0x53')](_0x5d7576[_0xf636('0x4a')],_0x43e817[_0xf636('0x4b')]));_0x3a6b28[_0xf636('0x52')][_0xf636('0x65')]=_0x4bf89c['id'];if(_0x5d7576[_0xf636('0x4a')][_0xf636('0x54')]){_0x3a6b28['where']=_[_0xf636('0x55')](_0x3a6b28[_0xf636('0x52')],{'$or':_[_0xf636('0x43')](_0x3a6b28[_0xf636('0x4d')],function(_0x135a42){var _0x4c9606={};_0x4c9606[_0x135a42]={'$like':'%'+_0x5d7576[_0xf636('0x4a')][_0xf636('0x54')]+'%'};return _0x4c9606;})});}_0x3a6b28=_[_0xf636('0x55')]({},_0x3a6b28,_0x5d7576[_0xf636('0x5d')]);return db[_0xf636('0x66')]['count']({'where':_0x3a6b28[_0xf636('0x52')]})[_0xf636('0x23')](function(_0x126900){_0x4d0d82['count']=_0x126900;if(_0x5d7576[_0xf636('0x4a')][_0xf636('0x5c')]){_0x3a6b28[_0xf636('0x58')]=[{'all':!![]}];}return db[_0xf636('0x66')]['findAll'](_0x3a6b28);})[_0xf636('0x23')](function(_0x392815){_0x4d0d82['rows']=_0x392815;return _0x4d0d82;});}})[_0xf636('0x23')](respondWithFilteredResult(_0x44d37d,_0x3a6b28))[_0xf636('0x2e')](handleError(_0x44d37d,null));};exports[_0xf636('0x6a')]=function(_0x1bd96b,_0x48c77f,_0x289317){return db['MailAccount'][_0xf636('0x5e')]({'where':{'id':_0x1bd96b[_0xf636('0x64')]['id']}})['then'](handleEntityNotFound(_0x48c77f,null))['then'](function(_0x31d7c4){if(_0x31d7c4){return _0x31d7c4[_0xf636('0x6a')](_0x1bd96b[_0xf636('0x4a')][_0xf636('0x6b')]);}})['then'](respondWithStatusCode(_0x48c77f,null))['catch'](handleError(_0x48c77f,null));};exports['addAnswer']=function(_0x1f7d98,_0x49e27a,_0x3c30c5){if(_0x1f7d98[_0xf636('0x60')]['id']){delete _0x1f7d98[_0xf636('0x60')]['id'];}return db['MailAccount'][_0xf636('0x5e')]({'where':{'id':_0x1f7d98[_0xf636('0x64')]['id']}})[_0xf636('0x23')](handleEntityNotFound(_0x49e27a,null))[_0xf636('0x23')](function(_0x4de056){if(_0x4de056){_0x1f7d98[_0xf636('0x60')][_0xf636('0x65')]=_0x4de056['id'];return db['CannedAnswer'][_0xf636('0x67')](_0x1f7d98['body']);}})['then'](respondWithResult(_0x49e27a,null))['catch'](handleError(_0x49e27a,null));};exports[_0xf636('0x6c')]=function(_0x188993,_0x5b9f92,_0x2fbf21){var _0x57b1a9={'raw':![],'where':{}};var _0x9b4bd5={};var _0x1c381b={'count':0x0,'rows':[]};return db[_0xf636('0x44')][_0xf636('0x6d')]({'where':{'id':_0x188993[_0xf636('0x64')]['id']}})[_0xf636('0x23')](handleEntityNotFound(_0x5b9f92,null))[_0xf636('0x23')](function(_0x1bd946){if(_0x1bd946){_0x9b4bd5['model']=_[_0xf636('0x49')](db[_0xf636('0x6e')][_0xf636('0x45')]);_0x9b4bd5['query']=_['keys'](_0x188993[_0xf636('0x4a')]);_0x9b4bd5[_0xf636('0x4b')]=_[_0xf636('0x4c')](_0x9b4bd5[_0xf636('0x48')],_0x9b4bd5[_0xf636('0x4a')]);_0x57b1a9[_0xf636('0x4d')]=_[_0xf636('0x4c')](_0x9b4bd5[_0xf636('0x48')],qs[_0xf636('0x5b')](_0x188993[_0xf636('0x4a')]['fields']));_0x57b1a9[_0xf636('0x4d')]=_0x57b1a9[_0xf636('0x4d')]['length']?_0x57b1a9['attributes']:_0x9b4bd5['model'];if(!_0x188993[_0xf636('0x4a')]['hasOwnProperty'](_0xf636('0x69'))){_0x57b1a9[_0xf636('0x35')]=qs[_0xf636('0x35')](_0x188993[_0xf636('0x4a')]['limit']);_0x57b1a9['offset']=qs[_0xf636('0x32')](_0x188993['query'][_0xf636('0x32')]);}_0x57b1a9[_0xf636('0x50')]=qs[_0xf636('0x51')](_0x188993[_0xf636('0x4a')][_0xf636('0x51')]);_0x57b1a9[_0xf636('0x52')]=qs['filters'](_['pick'](_0x188993[_0xf636('0x4a')],_0x9b4bd5[_0xf636('0x4b')]));_0x57b1a9[_0xf636('0x52')][_0xf636('0x65')]=_0x1bd946['id'];if(_0x188993['query'][_0xf636('0x54')]){_0x57b1a9[_0xf636('0x52')]=_[_0xf636('0x55')](_0x57b1a9['where'],{'$or':_[_0xf636('0x43')](_0x57b1a9[_0xf636('0x4d')],function(_0x173f3a){var _0x5a63e6={};_0x5a63e6[_0x173f3a]={'$like':'%'+_0x188993[_0xf636('0x4a')][_0xf636('0x54')]+'%'};return _0x5a63e6;})});}_0x57b1a9=_['merge']({},_0x57b1a9,_0x188993['options']);return db[_0xf636('0x6e')][_0xf636('0x34')]({'where':_0x57b1a9[_0xf636('0x52')]})[_0xf636('0x23')](function(_0x5718fb){_0x1c381b[_0xf636('0x34')]=_0x5718fb;if(_0x188993[_0xf636('0x4a')]['includeAll']){_0x57b1a9[_0xf636('0x58')]=[{'all':!![]}];}return db[_0xf636('0x6e')][_0xf636('0x6f')](_0x57b1a9);})[_0xf636('0x23')](function(_0xd57afb){_0x1c381b[_0xf636('0x70')]=_0xd57afb;return _0x1c381b;});}})[_0xf636('0x23')](respondWithFilteredResult(_0x5b9f92,_0x57b1a9))[_0xf636('0x2e')](handleError(_0x5b9f92,null));};exports['removeAnswers']=function(_0x51cbbb,_0x442b99,_0x3330c3){return db[_0xf636('0x44')][_0xf636('0x5e')]({'where':{'id':_0x51cbbb[_0xf636('0x64')]['id']}})[_0xf636('0x23')](handleEntityNotFound(_0x442b99,null))[_0xf636('0x23')](function(_0x35c91b){if(_0x35c91b){return _0x35c91b[_0xf636('0x71')](_0x51cbbb[_0xf636('0x4a')][_0xf636('0x6b')]);}})['then'](respondWithStatusCode(_0x442b99,null))[_0xf636('0x2e')](handleError(_0x442b99,null));};exports['create']=function(_0x7a8120,_0x32443e){var _0x335732={'name':_0x7a8120[_0xf636('0x60')][_0xf636('0x3d')],'key':_0x7a8120['body']['key'],'email':_0x7a8120[_0xf636('0x60')][_0xf636('0x72')],'ListId':_0x7a8120[_0xf636('0x60')]['ListId'],'active':!_[_0xf636('0x73')](_0x7a8120[_0xf636('0x60')]['active'])?_0x7a8120['body']['active']:!![],'description':_0x7a8120['body'][_0xf636('0x74')]||null,'Imap':{},'Smtp':{}};if(_['isNil'](_0x7a8120[_0xf636('0x60')][_0xf636('0x75')])){if(_0x7a8120[_0xf636('0x60')][_0xf636('0x76')]){_0x335732[_0xf636('0x40')]['user']=_0x335732['Smtp'][_0xf636('0x77')]=_0x7a8120[_0xf636('0x60')][_0xf636('0x78')];_0x335732[_0xf636('0x40')]['password']=_0x335732['Smtp'][_0xf636('0x79')]=_0x7a8120[_0xf636('0x60')]['cpassword'];}else{_0x335732['Imap'][_0xf636('0x7a')]=_0x335732['Smtp']['authentication']=![];}_0x335732['Imap'][_0xf636('0x7b')]=_0x7a8120[_0xf636('0x60')]['Imap'][_0xf636('0x7b')];_0x335732[_0xf636('0x40')][_0xf636('0x7c')]=_0x7a8120[_0xf636('0x60')][_0xf636('0x40')][_0xf636('0x7c')];_0x335732['Smtp']['host']=_0x7a8120[_0xf636('0x60')][_0xf636('0x41')][_0xf636('0x7b')];_0x335732[_0xf636('0x41')][_0xf636('0x7c')]=_0x7a8120['body'][_0xf636('0x41')]['port'];}else{_0x335732[_0xf636('0x40')][_0xf636('0x7d')]=_0x335732[_0xf636('0x41')]['service']=_0x7a8120['body'][_0xf636('0x75')];_0x335732['Imap'][_0xf636('0x77')]=_0x335732['Smtp'][_0xf636('0x77')]=_0x7a8120[_0xf636('0x60')][_0xf636('0x78')];_0x335732['Imap'][_0xf636('0x7e')]=_0x335732[_0xf636('0x41')][_0xf636('0x79')]=_0x7a8120[_0xf636('0x60')][_0xf636('0x7f')];}return db[_0xf636('0x44')][_0xf636('0x67')](_0x335732,{'include':[{'model':db[_0xf636('0x61')],'as':_0xf636('0x41')},{'model':db[_0xf636('0x3f')],'as':_0xf636('0x40')}]})[_0xf636('0x23')](function(_0x55e67c){var _0x41bd53=_0x7a8120[_0xf636('0x77')][_0xf636('0x80')]({'plain':!![]});if(!_0x41bd53)throw new Error(_0xf636('0x81'));if(_0x41bd53['role']===_0xf636('0x77')){var _0x346a3c=_0x55e67c['get']({'plain':!![]});return db[_0xf636('0x82')][_0xf636('0x5e')]({'where':{'name':'MailAccounts','userProfileId':_0x41bd53[_0xf636('0x83')]},'raw':!![]})[_0xf636('0x23')](function(_0x5f77cb){if(_0x5f77cb&&_0x5f77cb[_0xf636('0x84')]===0x0){return db[_0xf636('0x85')][_0xf636('0x67')]({'name':_0x346a3c[_0xf636('0x3d')],'resourceId':_0x346a3c['id'],'type':_0x5f77cb[_0xf636('0x3d')],'sectionId':_0x5f77cb['id']},{})[_0xf636('0x23')](function(){return _0x55e67c;});}else{return _0x55e67c;}})[_0xf636('0x2e')](function(_0x3e0173){logger[_0xf636('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3e0173);throw _0x3e0173;});}return _0x55e67c;})[_0xf636('0x23')](respondWithResult(_0x32443e,0xc9))[_0xf636('0x2e')](handleError(_0x32443e,null));};exports[_0xf636('0x86')]=function(_0x3569d7,_0x1280c1,_0x22de19){return db[_0xf636('0x44')][_0xf636('0x6d')]({'where':{'id':_0x3569d7[_0xf636('0x64')]['id']}})['then'](handleEntityNotFound(_0x1280c1,null))[_0xf636('0x23')](function(_0x4f8e4d){if(_0x4f8e4d){return _0x4f8e4d[_0xf636('0x86')]();}return null;})[_0xf636('0x23')](respondWithResult(_0x1280c1,null))[_0xf636('0x2e')](handleError(_0x1280c1,null));};exports[_0xf636('0x87')]=function(_0x53436c,_0x19c423,_0x542258){if(_0x53436c[_0xf636('0x60')]['id']){delete _0x53436c[_0xf636('0x60')]['id'];}return db['MailAccount'][_0xf636('0x5e')]({'where':{'id':_0x53436c['params']['id']}})[_0xf636('0x23')](handleEntityNotFound(_0x19c423,null))[_0xf636('0x23')](function(_0x3d4d14){if(_0x3d4d14){_0x53436c[_0xf636('0x60')][_0xf636('0x65')]=_0x3d4d14['id'];return db[_0xf636('0x3f')][_0xf636('0x67')](_0x53436c[_0xf636('0x60')]);}})[_0xf636('0x23')](respondWithResult(_0x19c423,null))['catch'](handleError(_0x19c423,null));};exports[_0xf636('0x88')]=function(_0x1dd2a8,_0x5a7f52,_0x580d82){return db[_0xf636('0x44')][_0xf636('0x6d')]({'where':{'id':_0x1dd2a8[_0xf636('0x64')]['id']}})[_0xf636('0x23')](handleEntityNotFound(_0x5a7f52,null))[_0xf636('0x23')](function(_0x47a865){if(_0x47a865){return _0x47a865['setImap'](null);}return null;})[_0xf636('0x23')](respondWithStatusCode(_0x5a7f52,null))[_0xf636('0x2e')](handleError(_0x5a7f52,null));};exports[_0xf636('0x89')]=function(_0x3dc890,_0xf65fd7,_0x658425){return db[_0xf636('0x44')][_0xf636('0x6d')]({'where':{'id':_0x3dc890[_0xf636('0x64')]['id']}})['then'](handleEntityNotFound(_0xf65fd7,null))[_0xf636('0x23')](function(_0x208790){if(_0x208790){return _0x208790[_0xf636('0x89')]();}return null;})['then'](respondWithResult(_0xf65fd7,null))[_0xf636('0x2e')](handleError(_0xf65fd7,null));};exports[_0xf636('0x8a')]=function(_0x336fb6,_0x386b1b,_0xb00fb9){if(_0x336fb6[_0xf636('0x60')]['id']){delete _0x336fb6[_0xf636('0x60')]['id'];}return db[_0xf636('0x44')][_0xf636('0x5e')]({'where':{'id':_0x336fb6[_0xf636('0x64')]['id']}})['then'](handleEntityNotFound(_0x386b1b,null))[_0xf636('0x23')](function(_0x179629){if(_0x179629){_0x336fb6[_0xf636('0x60')][_0xf636('0x65')]=_0x179629['id'];return db[_0xf636('0x61')][_0xf636('0x67')](_0x336fb6[_0xf636('0x60')]);}})[_0xf636('0x23')](respondWithResult(_0x386b1b,null))[_0xf636('0x2e')](handleError(_0x386b1b,null));};exports[_0xf636('0x8b')]=function(_0x319963,_0x12faec,_0x2a9647){return db[_0xf636('0x44')][_0xf636('0x6d')]({'where':{'id':_0x319963['params']['id']}})[_0xf636('0x23')](handleEntityNotFound(_0x12faec,null))['then'](function(_0xd2db97){if(_0xd2db97){return _0xd2db97['setSmtp'](null);}return null;})[_0xf636('0x23')](respondWithStatusCode(_0x12faec,null))[_0xf636('0x2e')](handleError(_0x12faec,null));};exports['addInteraction']=function(_0x387eb9,_0x273ec4,_0x544c33){return db['MailInteraction'][_0xf636('0x5e')]({'where':{'id':_0x387eb9['params']['id']}})[_0xf636('0x23')](handleEntityNotFound(_0x273ec4,null))['then'](function(_0x20aa2b){if(_0x20aa2b){return _0x20aa2b[_0xf636('0x8c')](_0x387eb9[_0xf636('0x60')]['ids'],_[_0xf636('0x8d')](_0x387eb9['body'],[_0xf636('0x6b'),'id'])||{});}})['then'](respondWithResult(_0x273ec4,null))['catch'](handleError(_0x273ec4,null));};exports[_0xf636('0x8e')]=function(_0xf91879,_0x3e8929,_0xa44b49){var _0x23bd37={'raw':![],'where':{}};var _0x2052b7={};var _0x4acc90={'count':0x0,'rows':[]};return db[_0xf636('0x44')]['findOne']({'where':{'id':_0xf91879['params']['id']}})[_0xf636('0x23')](handleEntityNotFound(_0x3e8929,null))[_0xf636('0x23')](function(_0x97f5b8){if(_0x97f5b8){_0x2052b7['model']=_[_0xf636('0x49')](db[_0xf636('0x8f')][_0xf636('0x45')]);_0x2052b7['query']=_['keys'](_0xf91879[_0xf636('0x4a')]);_0x2052b7[_0xf636('0x4b')]=_['intersection'](_0x2052b7['model'],_0x2052b7['query']);_0x23bd37['attributes']=_[_0xf636('0x4c')](_0x2052b7[_0xf636('0x48')],qs[_0xf636('0x5b')](_0xf91879['query']['fields']));_0x23bd37[_0xf636('0x4d')]=_0x23bd37[_0xf636('0x4d')][_0xf636('0x4e')]?_0x23bd37[_0xf636('0x4d')]:_0x2052b7[_0xf636('0x48')];if(!_0xf91879['query'][_0xf636('0x4f')](_0xf636('0x69'))){_0x23bd37[_0xf636('0x35')]=qs[_0xf636('0x35')](_0xf91879[_0xf636('0x4a')][_0xf636('0x35')]);_0x23bd37[_0xf636('0x32')]=qs[_0xf636('0x32')](_0xf91879['query'][_0xf636('0x32')]);}_0x23bd37[_0xf636('0x50')]=qs['sort'](_0xf91879[_0xf636('0x4a')][_0xf636('0x51')]);_0x23bd37[_0xf636('0x52')]=qs[_0xf636('0x4b')](_[_0xf636('0x53')](_0xf91879[_0xf636('0x4a')],_0x2052b7[_0xf636('0x4b')]));_0x23bd37['where'][_0xf636('0x65')]=_0x97f5b8['id'];if(_0xf91879[_0xf636('0x4a')][_0xf636('0x54')]){_0x23bd37[_0xf636('0x52')]=_[_0xf636('0x55')](_0x23bd37['where'],{'$or':_[_0xf636('0x43')](_0x23bd37[_0xf636('0x4d')],function(_0x571a6f){var _0xd1dec1={};_0xd1dec1[_0x571a6f]={'$like':'%'+_0xf91879[_0xf636('0x4a')][_0xf636('0x54')]+'%'};return _0xd1dec1;})});}_0x23bd37=_[_0xf636('0x55')]({},_0x23bd37,_0xf91879[_0xf636('0x5d')]);return db[_0xf636('0x8f')][_0xf636('0x34')]({'where':_0x23bd37[_0xf636('0x52')]})['then'](function(_0x3d5115){_0x4acc90[_0xf636('0x34')]=_0x3d5115;if(_0xf91879[_0xf636('0x4a')][_0xf636('0x5c')]){_0x23bd37[_0xf636('0x58')]=[{'model':db['CmContact'],'as':'Contact','required':![]},{'model':db[_0xf636('0x90')],'as':_0xf636('0x91'),'attributes':[_0xf636('0x3d'),_0xf636('0x92'),'internal'],'required':![]},{'model':db[_0xf636('0x93')],'as':_0xf636('0x94'),'attributes':['id','name','color'],'where':_0xf91879[_0xf636('0x4a')][_0xf636('0x95')]?{'id':_0xf91879[_0xf636('0x4a')][_0xf636('0x95')]}:undefined,'required':_0xf91879[_0xf636('0x4a')][_0xf636('0x95')]?!![]:![]}];}return db['MailInteraction'][_0xf636('0x6f')](_0x23bd37);})[_0xf636('0x23')](function(_0x248df5){_0x4acc90[_0xf636('0x70')]=_0x248df5;return _0x4acc90;});}})[_0xf636('0x23')](respondWithFilteredResult(_0x3e8929,_0x23bd37))[_0xf636('0x2e')](handleError(_0x3e8929,null));};exports[_0xf636('0x96')]=function(_0x2a568c,_0x3cddb1,_0x13767f){return db[_0xf636('0x44')][_0xf636('0x6d')]({'where':{'id':_0x2a568c[_0xf636('0x64')]['id']}})[_0xf636('0x23')](handleEntityNotFound(_0x3cddb1,null))[_0xf636('0x23')](function(_0x18d502){if(_0x18d502){return db['sequelize'][_0xf636('0x97')](function(_0x24134a){return db[_0xf636('0x98')]['destroy']({'where':{'MailAccountId':_0x2a568c[_0xf636('0x64')]['id']},'transaction':_0x24134a})[_0xf636('0x23')](function(_0x429041){var _0x5084f2=_[_0xf636('0x43')](_0x2a568c[_0xf636('0x60')],function(_0x3da25b){_0x3da25b[_0xf636('0x65')]=_0x2a568c[_0xf636('0x64')]['id'];return _0x3da25b;});return db[_0xf636('0x98')]['bulkCreate'](_0x5084f2,{'transaction':_0x24134a});});})[_0xf636('0x23')](function(){return db['MailApplication'][_0xf636('0x99')]({'where':{'MailAccountId':_0x2a568c['params']['id']},'order':_0xf636('0x9a')});});}})[_0xf636('0x23')](respondWithResult(_0x3cddb1,null))[_0xf636('0x2e')](handleError(_0x3cddb1,null));};exports[_0xf636('0x9b')]=function(_0x18d5c1,_0x23f87c,_0x2f8d43){var _0x519b5e={};var _0x3c2f7b={};var _0x4c327c;var _0x7ab7b2;return db[_0xf636('0x44')][_0xf636('0x6d')]({'where':{'id':_0x18d5c1[_0xf636('0x64')]['id']}})[_0xf636('0x23')](handleEntityNotFound(_0x23f87c,null))[_0xf636('0x23')](function(_0x5aa2b6){if(_0x5aa2b6){_0x4c327c=_0x5aa2b6;_0x3c2f7b[_0xf636('0x48')]=_[_0xf636('0x49')](db['MailApplication'][_0xf636('0x45')]);_0x3c2f7b[_0xf636('0x4a')]=_[_0xf636('0x49')](_0x18d5c1['query']);_0x3c2f7b[_0xf636('0x4b')]=_['intersection'](_0x3c2f7b['model'],_0x3c2f7b[_0xf636('0x4a')]);_0x519b5e['attributes']=_[_0xf636('0x4c')](_0x3c2f7b[_0xf636('0x48')],qs['fields'](_0x18d5c1['query'][_0xf636('0x5b')]));_0x519b5e['attributes']=_0x519b5e[_0xf636('0x4d')][_0xf636('0x4e')]?_0x519b5e['attributes']:_0x3c2f7b[_0xf636('0x48')];_0x519b5e[_0xf636('0x50')]=qs['sort'](_0x18d5c1[_0xf636('0x4a')][_0xf636('0x51')]);_0x519b5e[_0xf636('0x52')]=qs[_0xf636('0x4b')](_[_0xf636('0x53')](_0x18d5c1[_0xf636('0x4a')],_0x3c2f7b['filters']));if(_0x18d5c1[_0xf636('0x4a')][_0xf636('0x54')]){_0x519b5e[_0xf636('0x52')]=_[_0xf636('0x55')](_0x519b5e['where'],{'$or':_['map'](_0x519b5e[_0xf636('0x4d')],function(_0x565e97){var _0x150c4c={};_0x150c4c[_0x565e97]={'$like':'%'+_0x18d5c1[_0xf636('0x4a')]['filter']+'%'};return _0x150c4c;})});}_0x519b5e=_['merge']({},_0x519b5e,_0x18d5c1[_0xf636('0x5d')]);return _0x4c327c[_0xf636('0x9b')](_0x519b5e);}})[_0xf636('0x23')](function(_0x7da96){if(_0x7da96){_0x7ab7b2=_0x7da96[_0xf636('0x4e')];if(!_0x18d5c1[_0xf636('0x4a')][_0xf636('0x4f')]('nolimit')){_0x519b5e['limit']=qs[_0xf636('0x35')](_0x18d5c1[_0xf636('0x4a')][_0xf636('0x35')]);_0x519b5e['offset']=qs[_0xf636('0x32')](_0x18d5c1['query']['offset']);}return _0x4c327c[_0xf636('0x9b')](_0x519b5e);}})[_0xf636('0x23')](function(_0x8cb841){if(_0x8cb841){return _0x8cb841?{'count':_0x7ab7b2,'rows':_0x8cb841}:null;}})[_0xf636('0x23')](respondWithResult(_0x23f87c,null))[_0xf636('0x2e')](handleError(_0x23f87c,null));};exports['getMessages']=function(_0x325bd3,_0x10d5ac,_0x525c7f){var _0x2a56eb={'raw':!![],'where':{}};var _0x1a5427={};var _0x19b05c={'count':0x0,'rows':[]};return db[_0xf636('0x44')][_0xf636('0x6d')]({'where':{'id':_0x325bd3[_0xf636('0x64')]['id']}})[_0xf636('0x23')](handleEntityNotFound(_0x10d5ac,null))['then'](function(_0x18cd11){if(_0x18cd11){_0x1a5427[_0xf636('0x48')]=_['keys'](db[_0xf636('0x9c')][_0xf636('0x45')]);_0x1a5427['query']=_[_0xf636('0x49')](_0x325bd3[_0xf636('0x4a')]);_0x1a5427['filters']=_[_0xf636('0x4c')](_0x1a5427[_0xf636('0x48')],_0x1a5427[_0xf636('0x4a')]);_0x2a56eb[_0xf636('0x4d')]=_[_0xf636('0x4c')](_0x1a5427['model'],qs[_0xf636('0x5b')](_0x325bd3[_0xf636('0x4a')][_0xf636('0x5b')]));_0x2a56eb[_0xf636('0x4d')]=_0x2a56eb[_0xf636('0x4d')][_0xf636('0x4e')]?_0x2a56eb['attributes']:_0x1a5427['model'];if(!_0x325bd3[_0xf636('0x4a')]['hasOwnProperty'](_0xf636('0x69'))){_0x2a56eb[_0xf636('0x35')]=qs[_0xf636('0x35')](_0x325bd3[_0xf636('0x4a')]['limit']);_0x2a56eb['offset']=qs['offset'](_0x325bd3['query'][_0xf636('0x32')]);}_0x2a56eb['order']=qs[_0xf636('0x51')](_0x325bd3[_0xf636('0x4a')][_0xf636('0x51')]);_0x2a56eb[_0xf636('0x52')]=qs[_0xf636('0x4b')](_[_0xf636('0x53')](_0x325bd3[_0xf636('0x4a')],_0x1a5427[_0xf636('0x4b')]));_0x2a56eb[_0xf636('0x52')][_0xf636('0x65')]=_0x18cd11['id'];if(_0x325bd3[_0xf636('0x4a')][_0xf636('0x54')]){_0x2a56eb[_0xf636('0x52')]=_['merge'](_0x2a56eb[_0xf636('0x52')],{'$or':_[_0xf636('0x43')](_0x2a56eb[_0xf636('0x4d')],function(_0x349195){var _0x2149c6={};_0x2149c6[_0x349195]={'$like':'%'+_0x325bd3['query'][_0xf636('0x54')]+'%'};return _0x2149c6;})});}if(_0x325bd3['query'][_0xf636('0x9d')]){var _0x2c6347=_0x325bd3[_0xf636('0x4a')]['$gte'][_0xf636('0x9e')](',');var _0x5a41ac={};_0x5a41ac[_0x2c6347[0x0]]={'$gte':moment(_0x2c6347[0x1])[_0xf636('0x9f')](_0xf636('0xa0'))};_0x2a56eb['where']=_['merge'](_0x2a56eb[_0xf636('0x52')],_0x5a41ac);}_0x2a56eb=_[_0xf636('0x55')]({},_0x2a56eb,_0x325bd3[_0xf636('0x5d')]);return db[_0xf636('0x9c')]['count']({'where':_0x2a56eb['where']})['then'](function(_0x47eafa){_0x19b05c[_0xf636('0x34')]=_0x47eafa;if(_0x325bd3[_0xf636('0x4a')]['includeAll']){_0x2a56eb['include']=[{'all':!![]}];}return db[_0xf636('0x9c')]['findAll'](_0x2a56eb);})[_0xf636('0x23')](function(_0x50e047){if(_0x325bd3[_0xf636('0x4a')]['inlineCss']==='true'){for(var _0x5bbea0=0x0;_0x5bbea0<_0x50e047[_0xf636('0x4e')];_0x5bbea0++){_0x50e047[_0x5bbea0][_0xf636('0x60')]=juice(_0x50e047[_0x5bbea0]['body']);}}_0x19b05c[_0xf636('0x70')]=_0x50e047;return _0x19b05c;});}})[_0xf636('0x23')](respondWithFilteredResult(_0x10d5ac,_0x2a56eb))[_0xf636('0x2e')](handleError(_0x10d5ac,null));};exports[_0xf636('0xa1')]=function(_0xd471fc,_0x3c41a7,_0x2b3e3f){var _0x2ddc67,_0x22b23f={},_0x5258be;if(_0xd471fc[_0xf636('0x60')]['to']){_0x5258be=_0xd471fc['body']['to']['split'](',')[0x0];}return db[_0xf636('0x44')][_0xf636('0x5e')]({'where':{'id':_0xd471fc[_0xf636('0x64')]['id']},'include':[{'model':db[_0xf636('0xa2')],'as':_0xf636('0xa3'),'include':[{'model':db[_0xf636('0xa4')],'as':'Contacts','where':{'email':_0x5258be},'limit':0x1,'order':[['updatedAt',_0xf636('0xa5')]]}]},{'model':db[_0xf636('0x61')],'as':'Smtp','raw':!![]}]})[_0xf636('0x23')](handleEntityNotFound(_0x3c41a7,null))[_0xf636('0x23')](function(_0x25f5d1){if(_0x25f5d1){_0x2ddc67=_0x25f5d1;if(_0x25f5d1[_0xf636('0x41')]){if(_['isNil'](_0xd471fc[_0xf636('0x60')][_0xf636('0xa6')])){_0xd471fc['body']['from']=util['format'](_0xf636('0xa7'),_0x25f5d1[_0xf636('0x3d')],_0x25f5d1[_0xf636('0x72')]||_0x25f5d1[_0xf636('0x41')][_0xf636('0x77')]);}if(_0xd471fc['body'][_0xf636('0xa8')]&&_0xd471fc[_0xf636('0x60')][_0xf636('0xa8')][_0xf636('0x4e')]){for(var _0x2593c6=0x0;_0x2593c6<_0xd471fc[_0xf636('0x60')][_0xf636('0xa8')]['length'];_0x2593c6+=0x1){_0xd471fc['body'][_0xf636('0xa8')][_0x2593c6]={'filename':_0xd471fc[_0xf636('0x60')][_0xf636('0xa8')][_0x2593c6][_0xf636('0x3d')],'path':path[_0xf636('0xa9')](config[_0xf636('0xaa')],_0xf636('0xab'),_0xd471fc['body'][_0xf636('0xa8')][_0x2593c6][_0xf636('0xac')])};}}var _0x5088ff={'tls':{'rejectUnauthorized':![]}};if(_['isNil'](_0x25f5d1[_0xf636('0x41')][_0xf636('0x7d')])){if(_0x25f5d1['Smtp'][_0xf636('0x7a')]){_0x5088ff[_0xf636('0xad')]={'user':_0x25f5d1['Smtp'][_0xf636('0x77')],'pass':_0x25f5d1[_0xf636('0x41')][_0xf636('0x79')]};}_0x5088ff[_0xf636('0x7b')]=_0x25f5d1[_0xf636('0x41')][_0xf636('0x7b')];_0x5088ff[_0xf636('0x7c')]=_0x25f5d1[_0xf636('0x41')][_0xf636('0x7c')];_0x5088ff[_0xf636('0xae')]=_0x25f5d1[_0xf636('0x41')][_0xf636('0xae')];}else{_0x5088ff['service']=_0x25f5d1[_0xf636('0x41')]['service'];_0x5088ff[_0xf636('0xad')]={'user':_0x25f5d1[_0xf636('0x41')][_0xf636('0x77')],'pass':_0x25f5d1[_0xf636('0x41')][_0xf636('0x79')]};}return respondWithRpcPromise(_0xf636('0xaf'),_0xf636('0xb0'),{'account':_0x5088ff,'message':_0xd471fc['body']});}else{throw new Error(_0xf636('0xb1'));}}})[_0xf636('0x23')](function(_0x3857fa){if(_0x3857fa){_0x22b23f=_0x3857fa;if(_0x2ddc67[_0xf636('0xa3')]){if(_0x2ddc67[_0xf636('0xa3')]['Contacts'][_0xf636('0x4e')]){return _0x2ddc67[_0xf636('0xa3')][_0xf636('0xb2')][0x0];}else{return db[_0xf636('0xa4')]['create'](_[_0xf636('0x1d')](_0xd471fc[_0xf636('0x60')],{'firstName':_0xd471fc[_0xf636('0x60')]['to'],'email':_0xd471fc['body']['to'],'phone':_0xd471fc['body']['to'],'ListId':_0x2ddc67[_0xf636('0xb3')]}));}}else{throw new Error('List\x20not\x20found');}}})[_0xf636('0x23')](function(_0x590fb6){if(_0x590fb6){var _0x3640cd={'UserId':_0xd471fc[_0xf636('0x77')]['id'],'ContactId':_0x590fb6['id'],'MailAccountId':_0x2ddc67['id'],'inReplyTo':_0x22b23f[_0xf636('0xb4')],'to':_0xd471fc['body'][_0xf636('0xa6')],'cc':_0xd471fc[_0xf636('0x60')]['cc'],'subject':_0xd471fc[_0xf636('0x60')]['subject'],'attach':_0xd471fc[_0xf636('0x60')][_0xf636('0xb5')],'firstMsgDirection':'out','lastMsgAt':moment()[_0xf636('0x9f')](_0xf636('0xa0')),'lastMsgDirection':_0xf636('0xb6'),'Messages':[_['merge'](_0xd471fc[_0xf636('0x60')],{'messageId':_0x22b23f['messageId'],'sentAt':moment()[_0xf636('0x9f')]('YYYY-MM-DD\x20HH:mm:ss'),'read':!![],'MailAccountId':_0x2ddc67['id'],'UserId':_0xd471fc[_0xf636('0x77')]['id'],'ContactId':_0x590fb6['id']})]};if(_0xd471fc[_0xf636('0x60')][_0xf636('0xb7')]){_0x3640cd=_[_0xf636('0x55')](_0x3640cd,_0xd471fc[_0xf636('0x60')][_0xf636('0xb7')]);}return db['MailInteraction'][_0xf636('0x67')](_0x3640cd,{'include':[{'model':db[_0xf636('0x9c')],'as':_0xf636('0xb8')}]});}})['then'](respondWithResult(_0x3c41a7,null))['catch'](handleError(_0x3c41a7,null));};exports[_0xf636('0xb9')]=function(_0x3106cf,_0x92a5b,_0x514cb8){return db[_0xf636('0x44')][_0xf636('0x5e')]({'where':{'id':_0x3106cf['params']['id']},'include':[{'model':db['MailServerOut'],'as':_0xf636('0x41'),'raw':!![]}]})['then'](handleEntityNotFound(_0x92a5b,null))[_0xf636('0x23')](function(_0x390ea1){if(_0x390ea1&&_0x390ea1[_0xf636('0x41')]){var _0x58db50={'id':_0x390ea1['id'],'tls':{'rejectUnauthorized':![]}};if(_0x390ea1[_0xf636('0x41')]['service']){_0x58db50[_0xf636('0x7d')]=_0x390ea1[_0xf636('0x41')][_0xf636('0x7d')];}else{_0x58db50[_0xf636('0x7b')]=_0x390ea1['Smtp'][_0xf636('0x7b')];_0x58db50[_0xf636('0x7c')]=_0x390ea1[_0xf636('0x41')][_0xf636('0x7c')];_0x58db50[_0xf636('0xae')]=_0x390ea1[_0xf636('0x41')][_0xf636('0xae')];}if(_0x390ea1[_0xf636('0x41')][_0xf636('0x7a')]){_0x58db50[_0xf636('0xad')]={'user':_0x390ea1[_0xf636('0x41')][_0xf636('0x77')],'pass':_0x390ea1[_0xf636('0x41')][_0xf636('0x79')]};}return respondWithRpcPromise(_0xf636('0xba'),_0xf636('0xb9'),{'account':_0x58db50});}})[_0xf636('0x23')](respondWithResult(_0x92a5b,null))['catch'](handleError(_0x92a5b,null));};exports['destroy']=function(_0xd104c8,_0x32e15f){return db[_0xf636('0x44')][_0xf636('0x5e')]({'where':{'id':_0xd104c8['params']['id']}})[_0xf636('0x23')](handleEntityNotFound(_0x32e15f,null))['then'](function(_0x5fc4ca){if(_0x5fc4ca&&_0x5fc4ca[_0xf636('0x7d')]){throw new db[(_0xf636('0xbb'))][(_0xf636('0xbc'))](_0xf636('0xbd'));}return _0x5fc4ca;})[_0xf636('0x23')](removeEntity(_0x32e15f,null))[_0xf636('0x2e')](handleError(_0x32e15f,null));};exports[_0xf636('0xbe')]=function(_0x43a887,_0x3ec2d3,_0x4c9820){return db[_0xf636('0x44')][_0xf636('0x5e')]({'where':{'id':_0x43a887[_0xf636('0x64')]['id']}})['then'](handleEntityNotFound(_0x3ec2d3,null))[_0xf636('0x23')](function(_0x37f3c8){if(_0x37f3c8){return _0x37f3c8[_0xf636('0xbe')](_0x43a887[_0xf636('0x60')]['ids'],_[_0xf636('0x8d')](_0x43a887['body'],[_0xf636('0x6b'),'id'])||{})[_0xf636('0xbf')](function(_0x3de92a){for(var _0x5dfb61=0x0;_0x5dfb61<_0x43a887[_0xf636('0x60')][_0xf636('0x6b')]['length'];_0x5dfb61+=0x1){socket['emit'](_0xf636('0xc0'),{'UserId':Number(_0x43a887[_0xf636('0x60')][_0xf636('0x6b')][_0x5dfb61]),'MailAccountId':Number(_0x43a887[_0xf636('0x64')]['id'])});}return _0x3de92a;});}})[_0xf636('0x23')](respondWithResult(_0x3ec2d3,null))[_0xf636('0x2e')](handleError(_0x3ec2d3,null));};exports[_0xf636('0xc1')]=function(_0x3f0ffc,_0x4f8109,_0x95ba7f){return db[_0xf636('0x44')][_0xf636('0x5e')]({'where':{'id':_0x3f0ffc[_0xf636('0x64')]['id']}})[_0xf636('0x23')](handleEntityNotFound(_0x4f8109,null))[_0xf636('0x23')](function(_0x6c3c93){if(_0x6c3c93){return _0x6c3c93[_0xf636('0xc1')](_0x3f0ffc[_0xf636('0x4a')][_0xf636('0x6b')])['then'](function(){if(_['isArray'](_0x3f0ffc[_0xf636('0x4a')][_0xf636('0x6b')])){for(var _0x5806b9=0x0;_0x5806b9<_0x3f0ffc[_0xf636('0x4a')][_0xf636('0x6b')][_0xf636('0x4e')];_0x5806b9+=0x1){socket[_0xf636('0xc2')](_0xf636('0xc3'),{'UserId':Number(_0x3f0ffc['query']['ids'][_0x5806b9]),'MailAccountId':Number(_0x3f0ffc['params']['id'])});}}else{socket['emit'](_0xf636('0xc3'),{'UserId':Number(_0x3f0ffc[_0xf636('0x4a')][_0xf636('0x6b')]),'MailAccountId':Number(_0x3f0ffc[_0xf636('0x64')]['id'])});}});}})['then'](respondWithStatusCode(_0x4f8109,null))[_0xf636('0x2e')](handleError(_0x4f8109,null));};exports[_0xf636('0xc4')]=function(_0x22f19a,_0x26bd85,_0x40a389){var _0x112f35={};var _0x5584c2={};var _0x5d4ab0;var _0x56c605;return db['MailAccount'][_0xf636('0x6d')]({'where':{'id':_0x22f19a['params']['id']}})[_0xf636('0x23')](handleEntityNotFound(_0x26bd85,null))[_0xf636('0x23')](function(_0x368eb3){if(_0x368eb3){_0x5d4ab0=_0x368eb3;_0x5584c2[_0xf636('0x48')]=_[_0xf636('0x49')](db[_0xf636('0x90')][_0xf636('0x45')]);_0x5584c2['query']=_[_0xf636('0x49')](_0x22f19a[_0xf636('0x4a')]);_0x5584c2['filters']=_['intersection'](_0x5584c2['model'],_0x5584c2['query']);_0x112f35[_0xf636('0x4d')]=_['intersection'](_0x5584c2['model'],qs['fields'](_0x22f19a[_0xf636('0x4a')][_0xf636('0x5b')]));_0x112f35[_0xf636('0x4d')]=_0x112f35[_0xf636('0x4d')]['length']?_0x112f35[_0xf636('0x4d')]:_0x5584c2[_0xf636('0x48')];_0x112f35['order']=qs[_0xf636('0x51')](_0x22f19a[_0xf636('0x4a')][_0xf636('0x51')]);_0x112f35[_0xf636('0x52')]=qs[_0xf636('0x4b')](_['pick'](_0x22f19a['query'],_0x5584c2['filters']));if(_0x22f19a[_0xf636('0x4a')]['filter']){_0x112f35[_0xf636('0x52')]=_[_0xf636('0x55')](_0x112f35[_0xf636('0x52')],{'$or':_['map'](_0x112f35[_0xf636('0x4d')],function(_0x3cdace){var _0x156630={};_0x156630[_0x3cdace]={'$like':'%'+_0x22f19a[_0xf636('0x4a')][_0xf636('0x54')]+'%'};return _0x156630;})});}_0x112f35=_['merge']({},_0x112f35,_0x22f19a[_0xf636('0x5d')]);return _0x5d4ab0[_0xf636('0xc4')](_0x112f35);}})['then'](function(_0x584447){if(_0x584447){_0x56c605=_0x584447[_0xf636('0x4e')];if(!_0x22f19a[_0xf636('0x4a')][_0xf636('0x4f')](_0xf636('0x69'))){_0x112f35['limit']=qs[_0xf636('0x35')](_0x22f19a[_0xf636('0x4a')]['limit']);_0x112f35[_0xf636('0x32')]=qs['offset'](_0x22f19a[_0xf636('0x4a')][_0xf636('0x32')]);}return _0x5d4ab0['getAgents'](_0x112f35);}})[_0xf636('0x23')](function(_0x13eaad){if(_0x13eaad){return _0x13eaad?{'count':_0x56c605,'rows':_0x13eaad}:null;}})[_0xf636('0x23')](respondWithResult(_0x26bd85,null))[_0xf636('0x2e')](handleError(_0x26bd85,null));};
\ No newline at end of file
index c6e092b..c34dbab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d07=['hook','exports','events','MailAccount','emit','hasOwnProperty'];(function(_0x341850,_0x227d13){var _0x550b31=function(_0x2c78f9){while(--_0x2c78f9){_0x341850['push'](_0x341850['shift']());}};_0x550b31(++_0x227d13);}(_0x4d07,0x18e));var _0x74d0=function(_0x5912b2,_0x227589){_0x5912b2=_0x5912b2-0x0;var _0x44b48e=_0x4d07[_0x5912b2];return _0x44b48e;};'use strict';var EventEmitter=require(_0x74d0('0x0'));var MailAccount=require('../../mysqldb')['db'][_0x74d0('0x1')];var MailAccountEvents=new EventEmitter();MailAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x214bc6){return function(_0x464dbf,_0x28dc64,_0x236780){MailAccountEvents[_0x74d0('0x2')](_0x214bc6+':'+_0x464dbf['id'],_0x464dbf);MailAccountEvents[_0x74d0('0x2')](_0x214bc6,_0x464dbf);_0x236780(null);};}for(var e in events){if(events[_0x74d0('0x3')](e)){var event=events[e];MailAccount[_0x74d0('0x4')](e,emitEvent(event));}}module[_0x74d0('0x5')]=MailAccountEvents;
\ No newline at end of file
+var _0x0b97=['exports','MailAccount','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x16b614,_0x236729){var _0x5657=function(_0x208e98){while(--_0x208e98){_0x16b614['push'](_0x16b614['shift']());}};_0x5657(++_0x236729);}(_0x0b97,0xf4));var _0x70b9=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x0b97[_0x17d9e3];return _0x14192d;};'use strict';var EventEmitter=require('events');var MailAccount=require('../../mysqldb')['db'][_0x70b9('0x0')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x70b9('0x1')](0x0);var events={'afterCreate':_0x70b9('0x2'),'afterUpdate':_0x70b9('0x3'),'afterDestroy':_0x70b9('0x4')};function emitEvent(_0x44409b){return function(_0x1d6635,_0x185643,_0x5930bf){MailAccountEvents[_0x70b9('0x5')](_0x44409b+':'+_0x1d6635['id'],_0x1d6635);MailAccountEvents[_0x70b9('0x5')](_0x44409b,_0x1d6635);_0x5930bf(null);};}for(var e in events){if(events[_0x70b9('0x6')](e)){var event=events[e];MailAccount[_0x70b9('0x7')](e,emitEvent(event));}}module[_0x70b9('0x8')]=MailAccountEvents;
\ No newline at end of file
index d09e8ed..c95b7ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd905=['lodash','util','api','request-promise','rimraf','./mailAccount.attributes','define','MailAccount'];(function(_0x43ffa4,_0x655a2c){var _0x36c6e9=function(_0x31c4e3){while(--_0x31c4e3){_0x43ffa4['push'](_0x43ffa4['shift']());}};_0x36c6e9(++_0x655a2c);}(_0xd905,0x1e0));var _0x5d90=function(_0x4a9520,_0x4e67b2){_0x4a9520=_0x4a9520-0x0;var _0x27d098=_0xd905[_0x4a9520];return _0x27d098;};'use strict';var _=require(_0x5d90('0x0'));var util=require(_0x5d90('0x1'));var logger=require('../../config/logger')(_0x5d90('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x5d90('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5d90('0x4'));var config=require('../../config/environment');var attributes=require(_0x5d90('0x5'));module['exports']=function(_0x127442,_0x4c04ae){return _0x127442[_0x5d90('0x6')](_0x5d90('0x7'),attributes,{'tableName':'mail_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xebd8=['api','moment','bluebird','request-promise','rimraf','./mailAccount.attributes','define','MailAccount','mail_accounts','lodash'];(function(_0xc5b783,_0x21ca5f){var _0xe90117=function(_0x380700){while(--_0x380700){_0xc5b783['push'](_0xc5b783['shift']());}};_0xe90117(++_0x21ca5f);}(_0xebd8,0x1ad));var _0x8ebd=function(_0x5c4c57,_0x14d594){_0x5c4c57=_0x5c4c57-0x0;var _0x113f33=_0xebd8[_0x5c4c57];return _0x113f33;};'use strict';var _=require(_0x8ebd('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x8ebd('0x1'));var moment=require(_0x8ebd('0x2'));var BPromise=require(_0x8ebd('0x3'));var rp=require(_0x8ebd('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8ebd('0x5'));var config=require('../../config/environment');var attributes=require(_0x8ebd('0x6'));module['exports']=function(_0x1dc56a,_0x13d1ef){return _0x1dc56a[_0x8ebd('0x7')](_0x8ebd('0x8'),attributes,{'tableName':_0x8ebd('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 712828a..f06e06a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec49=['Start','startRouting','util','moment','bluebird','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','defaults','localhost','redis','./mailAccount.socket','register','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetMailAccount','findAll','options','raw','where','attributes','limit','map','include','model','debug','MailAccount','find','ShowMailAccount','NotifyMailAccount','body','mail','difference','keys','CmContact','rawAttributes','createdAt','updatedAt','CompanyId','ListId','from','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','account','List','Contacts','DESC','MailApplication','MailServerOut','Smtp','get','omit','applications','list','priority','asc','push','length','close','*,*,*,*','Applications','create','List\x20not\x20found','contact','messageId','generate','subject','attach','format','MailInteraction','MailMessage','Messages','Contact\x20not\x20found','YYYY-MM-DD\x20HH:mm:ss','interaction','created','attachments','originTo','originCc','bcc','ChatWebsiteId','originChannel','Email','Attachment','Attachments','UserId','User','name','unshift','agent','waitForTheAssignedAgent'];(function(_0x2fbd0e,_0x3460a9){var _0x481c9f=function(_0x4bc402){while(--_0x4bc402){_0x2fbd0e['push'](_0x2fbd0e['shift']());}};_0x481c9f(++_0x3460a9);}(_0xec49,0x6c));var _0x9ec4=function(_0x28f17b,_0x27ce52){_0x28f17b=_0x28f17b-0x0;var _0x167400=_0xec49[_0x28f17b];return _0x167400;};'use strict';var _=require('lodash');var util=require(_0x9ec4('0x0'));var moment=require(_0x9ec4('0x1'));var BPromise=require(_0x9ec4('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9ec4('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x9ec4('0x4'));var logger=require('../../config/logger')(_0x9ec4('0x5'));var config=require(_0x9ec4('0x6'));var jayson=require(_0x9ec4('0x7'));var client=jayson[_0x9ec4('0x8')][_0x9ec4('0x9')]({'port':0x232c});config['redis']=_[_0x9ec4('0xa')](config['redis'],{'host':_0x9ec4('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9ec4('0xc')]));require(_0x9ec4('0xd'))[_0x9ec4('0xe')](socket);function respondWithRpcPromise(_0x31c3ef,_0x170487,_0x3ab23a){return new BPromise(function(_0x2ace30,_0x3f2114){return client[_0x9ec4('0xf')](_0x31c3ef,_0x3ab23a)[_0x9ec4('0x10')](function(_0x3982a6){logger[_0x9ec4('0x11')](_0x9ec4('0x12'),_0x170487,_0x9ec4('0x13'));logger['debug']('MailAccount,\x20%s,\x20%s,\x20%s',_0x170487,_0x9ec4('0x13'),JSON[_0x9ec4('0x14')](_0x3982a6));if(_0x3982a6[_0x9ec4('0x15')]){if(_0x3982a6[_0x9ec4('0x15')][_0x9ec4('0x16')]===0x1f4){logger[_0x9ec4('0x15')](_0x9ec4('0x12'),_0x170487,_0x3982a6[_0x9ec4('0x15')][_0x9ec4('0x17')]);return _0x3f2114(_0x3982a6[_0x9ec4('0x15')][_0x9ec4('0x17')]);}logger['error'](_0x9ec4('0x12'),_0x170487,_0x3982a6['error'][_0x9ec4('0x17')]);return _0x2ace30(_0x3982a6['error'][_0x9ec4('0x17')]);}else{logger[_0x9ec4('0x11')](_0x9ec4('0x12'),_0x170487,'request\x20sent');_0x2ace30(_0x3982a6[_0x9ec4('0x18')][_0x9ec4('0x17')]);}})[_0x9ec4('0x19')](function(_0x201e48){logger[_0x9ec4('0x15')](_0x9ec4('0x12'),_0x170487,_0x201e48);_0x3f2114(_0x201e48);});});}exports[_0x9ec4('0x1a')]=function(_0x473166){var _0x6c1a1a=this;return new Promise(function(_0x26a107,_0x1cc30a){return db['MailAccount'][_0x9ec4('0x1b')]({'raw':_0x473166[_0x9ec4('0x1c')]?_0x473166[_0x9ec4('0x1c')][_0x9ec4('0x1d')]===undefined?!![]:![]:!![],'where':_0x473166[_0x9ec4('0x1c')]?_0x473166[_0x9ec4('0x1c')][_0x9ec4('0x1e')]||null:null,'attributes':_0x473166['options']?_0x473166[_0x9ec4('0x1c')][_0x9ec4('0x1f')]||null:null,'limit':_0x473166[_0x9ec4('0x1c')]?_0x473166[_0x9ec4('0x1c')][_0x9ec4('0x20')]||null:null,'include':_0x473166[_0x9ec4('0x1c')]?_0x473166['options']['include']?_[_0x9ec4('0x21')](_0x473166[_0x9ec4('0x1c')][_0x9ec4('0x22')],function(_0x406e88){return{'model':db[_0x406e88['model']],'as':_0x406e88['as'],'attributes':_0x406e88[_0x9ec4('0x1f')],'include':_0x406e88[_0x9ec4('0x22')]?_[_0x9ec4('0x21')](_0x406e88[_0x9ec4('0x22')],function(_0x1562fa){return{'model':db[_0x1562fa[_0x9ec4('0x23')]],'as':_0x1562fa['as'],'attributes':_0x1562fa[_0x9ec4('0x1f')],'include':_0x1562fa[_0x9ec4('0x22')]?_[_0x9ec4('0x21')](_0x1562fa[_0x9ec4('0x22')],function(_0x822ab2){return{'model':db[_0x822ab2['model']],'as':_0x822ab2['as'],'attributes':_0x822ab2[_0x9ec4('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x9ec4('0x10')](function(_0xd3f1d9){logger[_0x9ec4('0x11')](_0x9ec4('0x1a'),_0x473166);logger[_0x9ec4('0x24')](_0x9ec4('0x1a'),_0x473166,JSON[_0x9ec4('0x14')](_0xd3f1d9));_0x26a107(_0xd3f1d9);})['catch'](function(_0xf79c82){logger[_0x9ec4('0x15')](_0x9ec4('0x1a'),_0xf79c82[_0x9ec4('0x17')],_0x473166);_0x1cc30a(_0x6c1a1a[_0x9ec4('0x15')](0x1f4,_0xf79c82[_0x9ec4('0x17')]));});});};exports['ShowMailAccount']=function(_0x37fefb){var _0x5633d0=this;return new Promise(function(_0x743307,_0x2b70fd){return db[_0x9ec4('0x25')][_0x9ec4('0x26')]({'raw':_0x37fefb[_0x9ec4('0x1c')]?_0x37fefb['options'][_0x9ec4('0x1d')]===undefined?!![]:![]:!![],'where':_0x37fefb[_0x9ec4('0x1c')]?_0x37fefb[_0x9ec4('0x1c')][_0x9ec4('0x1e')]||null:null,'attributes':_0x37fefb[_0x9ec4('0x1c')]?_0x37fefb[_0x9ec4('0x1c')][_0x9ec4('0x1f')]||null:null,'include':_0x37fefb[_0x9ec4('0x1c')]?_0x37fefb['options'][_0x9ec4('0x22')]?_[_0x9ec4('0x21')](_0x37fefb[_0x9ec4('0x1c')]['include'],function(_0x5ee60c){return{'model':db[_0x5ee60c[_0x9ec4('0x23')]],'as':_0x5ee60c['as'],'attributes':_0x5ee60c[_0x9ec4('0x1f')],'include':_0x5ee60c[_0x9ec4('0x22')]?_['map'](_0x5ee60c[_0x9ec4('0x22')],function(_0x5f2209){return{'model':db[_0x5f2209[_0x9ec4('0x23')]],'as':_0x5f2209['as'],'attributes':_0x5f2209['attributes'],'include':_0x5f2209[_0x9ec4('0x22')]?_[_0x9ec4('0x21')](_0x5f2209[_0x9ec4('0x22')],function(_0xcd75a8){return{'model':db[_0xcd75a8[_0x9ec4('0x23')]],'as':_0xcd75a8['as'],'attributes':_0xcd75a8[_0x9ec4('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x9ec4('0x10')](function(_0x10782b){logger[_0x9ec4('0x11')](_0x9ec4('0x27'),_0x37fefb);logger[_0x9ec4('0x24')](_0x9ec4('0x27'),_0x37fefb,JSON[_0x9ec4('0x14')](_0x10782b));_0x743307(_0x10782b);})[_0x9ec4('0x19')](function(_0x312edd){logger[_0x9ec4('0x15')](_0x9ec4('0x27'),_0x312edd[_0x9ec4('0x17')],_0x37fefb);_0x2b70fd(_0x5633d0[_0x9ec4('0x15')](0x1f4,_0x312edd[_0x9ec4('0x17')]));});});};exports[_0x9ec4('0x28')]=function(_0x2c51fb){var _0x4b0472=this;return new Promise(function(_0x19799f,_0x19f656){var _0x5c53c4={'body':_0x2c51fb[_0x9ec4('0x29')],'channel':_0x9ec4('0x2a')};var _0x18073d=_[_0x9ec4('0x2b')](_[_0x9ec4('0x2c')](db[_0x9ec4('0x2d')][_0x9ec4('0x2e')]),[_0x9ec4('0x2f'),_0x9ec4('0x30'),_0x9ec4('0x31'),_0x9ec4('0x32')]);var _0x353a66=![];if(_0x2c51fb[_0x9ec4('0x29')]['id']){delete _0x2c51fb['body']['id'];}if(_['isNil'](_0x2c51fb[_0x9ec4('0x29')][_0x9ec4('0x33')])){return _0x19f656(_0x4b0472[_0x9ec4('0x15')](0x1f4,'from\x20is\x20mandatory'));}if(_[_0x9ec4('0x34')](_0x2c51fb[_0x9ec4('0x29')][_0x9ec4('0x29')])||_0x2c51fb['body']['body']===''){return _0x19f656(_0x4b0472[_0x9ec4('0x15')](0x1f4,'body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0x9ec4('0x34')](_0x2c51fb[_0x9ec4('0x29')][_0x9ec4('0x35')])){return _0x19f656(_0x4b0472[_0x9ec4('0x15')](0x1f4,_0x9ec4('0x36')+_0x18073d));}if(!_[_0x9ec4('0x37')](_0x18073d,_0x2c51fb['body']['mapKey'])){return _0x19f656(_0x4b0472['error'](0x1f4,'mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x18073d));}var _0x15133e={};_0x15133e[_0x2c51fb[_0x9ec4('0x29')][_0x9ec4('0x35')]]=_0x2c51fb[_0x9ec4('0x29')]['from'];return db[_0x9ec4('0x25')][_0x9ec4('0x26')]({'where':{'id':_0x2c51fb[_0x9ec4('0x38')]['id']},'include':[{'model':db['CmList'],'as':_0x9ec4('0x39'),'include':[{'model':db[_0x9ec4('0x2d')],'as':_0x9ec4('0x3a'),'where':_0x15133e,'limit':0x1,'order':[['updatedAt',_0x9ec4('0x3b')]]}]},{'model':db[_0x9ec4('0x3c')],'as':'Applications'},{'model':db[_0x9ec4('0x3d')],'as':_0x9ec4('0x3e')}]})[_0x9ec4('0x10')](function(_0x250c7a){if(_0x250c7a&&_0x250c7a['List']){var _0x3cd99f=_0x250c7a[_0x9ec4('0x3f')]({'plain':!![]});_0x5c53c4[_0x9ec4('0x38')]=_[_0x9ec4('0x40')](_0x3cd99f,['Applications',_0x9ec4('0x39')]);_0x5c53c4[_0x9ec4('0x41')]=_0x3cd99f['Applications'];_0x5c53c4[_0x9ec4('0x42')]=_0x3cd99f[_0x9ec4('0x39')];_0x5c53c4['applications']=_['orderBy'](_0x5c53c4['applications'],[_0x9ec4('0x43')],[_0x9ec4('0x44')]);if(_0x5c53c4[_0x9ec4('0x38')]&&_0x5c53c4[_0x9ec4('0x38')]['autoclose']){_0x5c53c4[_0x9ec4('0x41')][_0x9ec4('0x45')]({'id':0x0,'priority':_0x5c53c4[_0x9ec4('0x41')][_0x9ec4('0x46')]+0x1,'app':_0x9ec4('0x47'),'appdata':'autoclose','interval':_0x9ec4('0x48')});}if(_0x5c53c4[_0x9ec4('0x38')][_0x9ec4('0x49')]){delete _0x5c53c4['account'][_0x9ec4('0x49')];}if(_0x5c53c4[_0x9ec4('0x38')][_0x9ec4('0x39')]){delete _0x5c53c4[_0x9ec4('0x38')][_0x9ec4('0x39')];}if(_0x3cd99f['List'][_0x9ec4('0x3a')][_0x9ec4('0x46')]){return _0x3cd99f[_0x9ec4('0x39')][_0x9ec4('0x3a')][0x0];}var _0x2f075b=_[_0x9ec4('0xa')](_0x2c51fb[_0x9ec4('0x29')],{'firstName':_0x2c51fb[_0x9ec4('0x29')][_0x9ec4('0x33')],'ListId':_0x3cd99f[_0x9ec4('0x32')]});_0x2f075b[_0x2c51fb[_0x9ec4('0x29')][_0x9ec4('0x35')]]=_0x2c51fb[_0x9ec4('0x29')][_0x9ec4('0x33')];return db[_0x9ec4('0x2d')][_0x9ec4('0x4a')](_0x2f075b);}else{throw new Error(_0x9ec4('0x4b'));}})[_0x9ec4('0x10')](function(_0x52212b){_0x5c53c4[_0x9ec4('0x4c')]=_0x52212b;if(_0x52212b){if(!_0x2c51fb[_0x9ec4('0x29')]['message']['messageId']){_0x2c51fb[_0x9ec4('0x29')][_0x9ec4('0x17')][_0x9ec4('0x4d')]=rs[_0x9ec4('0x4e')]()+'\x20'+_0x2c51fb[_0x9ec4('0x29')]['message'][_0x9ec4('0x33')];}var _0x50dc06={'ContactId':_0x52212b['id'],'MailAccountId':_0x2c51fb[_0x9ec4('0x38')]['id'],'inReplyTo':_0x2c51fb[_0x9ec4('0x29')][_0x9ec4('0x17')][_0x9ec4('0x4d')],'to':_0x2c51fb[_0x9ec4('0x29')][_0x9ec4('0x17')][_0x9ec4('0x33')],'cc':_0x2c51fb['body']['message']['cc'],'subject':_0x2c51fb[_0x9ec4('0x29')][_0x9ec4('0x17')][_0x9ec4('0x4f')],'attach':_0x2c51fb[_0x9ec4('0x29')][_0x9ec4('0x17')][_0x9ec4('0x50')],'lastMsgAt':moment()[_0x9ec4('0x51')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'};return db[_0x9ec4('0x52')]['find']({'where':{'closed':![],'MailAccountId':_0x2c51fb[_0x9ec4('0x38')]['id']},'include':[{'model':db[_0x9ec4('0x53')],'as':_0x9ec4('0x54'),'attributes':[_0x9ec4('0x4d')],'where':{'messageId':_0x2c51fb['body'][_0x9ec4('0x17')]['inReplyTo']}}]})[_0x9ec4('0x10')](function(_0x46858e){if(_0x46858e){return[_0x46858e,![]];}return db['MailInteraction'][_0x9ec4('0x4a')](_0x50dc06)[_0x9ec4('0x10')](function(_0x1a48c5){return[_0x1a48c5,!![]];});});}else{throw new Error(_0x9ec4('0x55'));}})['spread'](function(_0x25eba5,_0x578636){if(_0x25eba5){_0x353a66=_0x578636;if(!_0x578636){return _0x25eba5['update']({'inReplyTo':_0x2c51fb[_0x9ec4('0x29')][_0x9ec4('0x17')][_0x9ec4('0x4d')],'to':_0x2c51fb['body'][_0x9ec4('0x17')][_0x9ec4('0x33')],'cc':_0x2c51fb[_0x9ec4('0x29')][_0x9ec4('0x17')]['cc'],'subject':_0x2c51fb['body']['message'][_0x9ec4('0x4f')],'attach':_0x25eba5[_0x9ec4('0x50')]?_0x25eba5[_0x9ec4('0x50')]:_0x2c51fb[_0x9ec4('0x29')]['message'][_0x9ec4('0x50')],'substatus':null,'substatusAt':moment()[_0x9ec4('0x51')](_0x9ec4('0x56')),'lastMsgAt':moment()['format'](_0x9ec4('0x56')),'lastMsgDirection':'in'});}else{return _0x25eba5;}}})[_0x9ec4('0x10')](function(_0x4225de){_0x5c53c4[_0x9ec4('0x57')]=_0x4225de[_0x9ec4('0x3f')]({'plain':!![]});_0x5c53c4['interaction'][_0x9ec4('0x58')]=_0x353a66;return db[_0x9ec4('0x53')]['create']({'body':_0x2c51fb[_0x9ec4('0x29')][_0x9ec4('0x29')],'MailAccountId':_0x2c51fb['account']['id'],'MailInteractionId':_0x4225de['id'],'direction':'in','ContactId':_0x5c53c4[_0x9ec4('0x4c')]['id'],'messageId':_0x2c51fb['body'][_0x9ec4('0x17')][_0x9ec4('0x4d')],'from':_0x2c51fb[_0x9ec4('0x29')][_0x9ec4('0x17')][_0x9ec4('0x33')],'to':_0x2c51fb[_0x9ec4('0x29')][_0x9ec4('0x17')]['to'],'cc':_0x2c51fb[_0x9ec4('0x29')][_0x9ec4('0x17')]['cc'],'subject':_0x2c51fb['body'][_0x9ec4('0x17')][_0x9ec4('0x4f')],'attach':_0x2c51fb[_0x9ec4('0x29')][_0x9ec4('0x17')]['attach'],'Attachments':_0x2c51fb[_0x9ec4('0x29')][_0x9ec4('0x17')][_0x9ec4('0x59')],'originTo':_0x2c51fb[_0x9ec4('0x29')][_0x9ec4('0x17')][_0x9ec4('0x5a')],'originCc':_0x2c51fb[_0x9ec4('0x29')]['message'][_0x9ec4('0x5b')],'bcc':_0x2c51fb[_0x9ec4('0x29')]['message'][_0x9ec4('0x5c')],'ChatWebsiteId':_0x2c51fb[_0x9ec4('0x29')][_0x9ec4('0x17')][_0x9ec4('0x5d')]||null,'originChannel':_0x2c51fb['body'][_0x9ec4('0x17')][_0x9ec4('0x5e')]||_0x9ec4('0x5f'),'ChatOfflineMessageId':_0x2c51fb[_0x9ec4('0x29')]['message']['ChatOfflineMessageId']||null},{'include':[{'model':db[_0x9ec4('0x60')],'as':_0x9ec4('0x61')}]});})[_0x9ec4('0x10')](function(_0x52b997){_0x5c53c4[_0x9ec4('0x17')]=_0x52b997;if(_0x5c53c4[_0x9ec4('0x57')][_0x9ec4('0x62')]){return db[_0x9ec4('0x63')]['find']({'attributes':['id',_0x9ec4('0x64')],'where':{'id':_0x5c53c4[_0x9ec4('0x57')][_0x9ec4('0x62')]}})[_0x9ec4('0x10')](function(_0x5dab2b){if(_0x5dab2b){_0x5c53c4[_0x9ec4('0x41')][_0x9ec4('0x65')]({'id':0x0,'priority':0x0,'app':_0x9ec4('0x66'),'appdata':_0x5dab2b[_0x9ec4('0x64')]+','+(_0x5c53c4[_0x9ec4('0x38')][_0x9ec4('0x67')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x9ec4('0x68'),_0x9ec4('0x69'),_0x5c53c4);});}return respondWithRpcPromise(_0x9ec4('0x68'),_0x9ec4('0x69'),_0x5c53c4);})['then'](function(_0x522809){_0x19799f(_0x522809);})['catch'](function(_0x15632c){_0x19f656(_0x4b0472[_0x9ec4('0x15')](0x1f4,_0x15632c[_0x9ec4('0x17')]));});});};
\ No newline at end of file
+var _0x43e7=['startRouting','Start','util','moment','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','request','then','MailAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','GetMailAccount','MailAccount','findAll','options','raw','attributes','limit','include','map','model','debug','ShowMailAccount','where','body','mail','difference','keys','CmContact','rawAttributes','createdAt','updatedAt','CompanyId','ListId','from','body\x20is\x20mandatory\x20and\x20not\x20empty','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','account','List','Contacts','MailApplication','Applications','MailServerOut','Smtp','applications','orderBy','priority','asc','autoclose','push','close','*,*,*,*','length','defaults','List\x20not\x20found','contact','messageId','subject','attach','format','YYYY-MM-DD\x20HH:mm:ss','inReplyTo','MailInteraction','create','Contact\x20not\x20found','spread','update','interaction','get','created','MailMessage','attachments','originTo','originCc','ChatWebsiteId','ChatOfflineMessageId','Attachment','UserId','User','name','unshift','agent','waitForTheAssignedAgent'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x43e7,0xce));var _0x743e=function(_0x296144,_0x26bbbf){_0x296144=_0x296144-0x0;var _0x5329b1=_0x43e7[_0x296144];return _0x5329b1;};'use strict';var _=require('lodash');var util=require(_0x743e('0x0'));var moment=require(_0x743e('0x1'));var BPromise=require(_0x743e('0x2'));var rs=require(_0x743e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x743e('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x743e('0x5'));var config=require(_0x743e('0x6'));var jayson=require(_0x743e('0x7'));var client=jayson['client'][_0x743e('0x8')]({'port':0x232c});config[_0x743e('0x9')]=_['defaults'](config[_0x743e('0x9')],{'host':_0x743e('0xa'),'port':0x18eb});var socket=require(_0x743e('0xb'))(new Redis(config[_0x743e('0x9')]));require('./mailAccount.socket')['register'](socket);function respondWithRpcPromise(_0x35e402,_0x1b022c,_0x43a51a){return new BPromise(function(_0x32914f,_0x10a0b8){return client[_0x743e('0xc')](_0x35e402,_0x43a51a)[_0x743e('0xd')](function(_0x4bd58e){logger['info'](_0x743e('0xe'),_0x1b022c,'request\x20sent');logger['debug']('MailAccount,\x20%s,\x20%s,\x20%s',_0x1b022c,_0x743e('0xf'),JSON[_0x743e('0x10')](_0x4bd58e));if(_0x4bd58e[_0x743e('0x11')]){if(_0x4bd58e[_0x743e('0x11')][_0x743e('0x12')]===0x1f4){logger[_0x743e('0x11')]('MailAccount,\x20%s,\x20%s',_0x1b022c,_0x4bd58e[_0x743e('0x11')][_0x743e('0x13')]);return _0x10a0b8(_0x4bd58e[_0x743e('0x11')][_0x743e('0x13')]);}logger[_0x743e('0x11')](_0x743e('0xe'),_0x1b022c,_0x4bd58e[_0x743e('0x11')][_0x743e('0x13')]);return _0x32914f(_0x4bd58e['error'][_0x743e('0x13')]);}else{logger[_0x743e('0x14')]('MailAccount,\x20%s,\x20%s',_0x1b022c,'request\x20sent');_0x32914f(_0x4bd58e[_0x743e('0x15')][_0x743e('0x13')]);}})[_0x743e('0x16')](function(_0x1e95da){logger[_0x743e('0x11')](_0x743e('0xe'),_0x1b022c,_0x1e95da);_0x10a0b8(_0x1e95da);});});}exports[_0x743e('0x17')]=function(_0x5f24e3){var _0x53f104=this;return new Promise(function(_0x1394e1,_0x174389){return db[_0x743e('0x18')][_0x743e('0x19')]({'raw':_0x5f24e3[_0x743e('0x1a')]?_0x5f24e3[_0x743e('0x1a')][_0x743e('0x1b')]===undefined?!![]:![]:!![],'where':_0x5f24e3[_0x743e('0x1a')]?_0x5f24e3[_0x743e('0x1a')]['where']||null:null,'attributes':_0x5f24e3[_0x743e('0x1a')]?_0x5f24e3['options'][_0x743e('0x1c')]||null:null,'limit':_0x5f24e3['options']?_0x5f24e3[_0x743e('0x1a')][_0x743e('0x1d')]||null:null,'include':_0x5f24e3[_0x743e('0x1a')]?_0x5f24e3[_0x743e('0x1a')][_0x743e('0x1e')]?_[_0x743e('0x1f')](_0x5f24e3['options'][_0x743e('0x1e')],function(_0x38eb48){return{'model':db[_0x38eb48['model']],'as':_0x38eb48['as'],'attributes':_0x38eb48['attributes'],'include':_0x38eb48[_0x743e('0x1e')]?_['map'](_0x38eb48['include'],function(_0xa3ea50){return{'model':db[_0xa3ea50[_0x743e('0x20')]],'as':_0xa3ea50['as'],'attributes':_0xa3ea50[_0x743e('0x1c')],'include':_0xa3ea50['include']?_['map'](_0xa3ea50[_0x743e('0x1e')],function(_0x81748b){return{'model':db[_0x81748b[_0x743e('0x20')]],'as':_0x81748b['as'],'attributes':_0x81748b[_0x743e('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1e2be0){logger[_0x743e('0x14')](_0x743e('0x17'),_0x5f24e3);logger[_0x743e('0x21')](_0x743e('0x17'),_0x5f24e3,JSON['stringify'](_0x1e2be0));_0x1394e1(_0x1e2be0);})['catch'](function(_0xf62705){logger['error']('GetMailAccount',_0xf62705['message'],_0x5f24e3);_0x174389(_0x53f104[_0x743e('0x11')](0x1f4,_0xf62705[_0x743e('0x13')]));});});};exports[_0x743e('0x22')]=function(_0x491f6e){var _0x2406f5=this;return new Promise(function(_0x19c297,_0x204e99){return db[_0x743e('0x18')]['find']({'raw':_0x491f6e['options']?_0x491f6e[_0x743e('0x1a')][_0x743e('0x1b')]===undefined?!![]:![]:!![],'where':_0x491f6e[_0x743e('0x1a')]?_0x491f6e[_0x743e('0x1a')][_0x743e('0x23')]||null:null,'attributes':_0x491f6e['options']?_0x491f6e['options'][_0x743e('0x1c')]||null:null,'include':_0x491f6e[_0x743e('0x1a')]?_0x491f6e['options'][_0x743e('0x1e')]?_[_0x743e('0x1f')](_0x491f6e[_0x743e('0x1a')][_0x743e('0x1e')],function(_0x4c427e){return{'model':db[_0x4c427e[_0x743e('0x20')]],'as':_0x4c427e['as'],'attributes':_0x4c427e[_0x743e('0x1c')],'include':_0x4c427e[_0x743e('0x1e')]?_[_0x743e('0x1f')](_0x4c427e[_0x743e('0x1e')],function(_0x7aa432){return{'model':db[_0x7aa432[_0x743e('0x20')]],'as':_0x7aa432['as'],'attributes':_0x7aa432[_0x743e('0x1c')],'include':_0x7aa432[_0x743e('0x1e')]?_[_0x743e('0x1f')](_0x7aa432[_0x743e('0x1e')],function(_0x2c8528){return{'model':db[_0x2c8528[_0x743e('0x20')]],'as':_0x2c8528['as'],'attributes':_0x2c8528['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x112f08){logger['info'](_0x743e('0x22'),_0x491f6e);logger[_0x743e('0x21')]('ShowMailAccount',_0x491f6e,JSON['stringify'](_0x112f08));_0x19c297(_0x112f08);})['catch'](function(_0x1c3b66){logger[_0x743e('0x11')](_0x743e('0x22'),_0x1c3b66[_0x743e('0x13')],_0x491f6e);_0x204e99(_0x2406f5[_0x743e('0x11')](0x1f4,_0x1c3b66['message']));});});};exports['NotifyMailAccount']=function(_0x326a50){var _0x280b5e=this;return new Promise(function(_0x4d8489,_0x59a530){var _0x48d0f9={'body':_0x326a50[_0x743e('0x24')],'channel':_0x743e('0x25')};var _0x536d5e=_[_0x743e('0x26')](_[_0x743e('0x27')](db[_0x743e('0x28')][_0x743e('0x29')]),[_0x743e('0x2a'),_0x743e('0x2b'),_0x743e('0x2c'),_0x743e('0x2d')]);var _0x90b320=![];if(_0x326a50[_0x743e('0x24')]['id']){delete _0x326a50[_0x743e('0x24')]['id'];}if(_['isNil'](_0x326a50[_0x743e('0x24')][_0x743e('0x2e')])){return _0x59a530(_0x280b5e['error'](0x1f4,'from\x20is\x20mandatory'));}if(_['isNil'](_0x326a50[_0x743e('0x24')]['body'])||_0x326a50['body'][_0x743e('0x24')]===''){return _0x59a530(_0x280b5e[_0x743e('0x11')](0x1f4,_0x743e('0x2f')));}if(_[_0x743e('0x30')](_0x326a50[_0x743e('0x24')][_0x743e('0x31')])){return _0x59a530(_0x280b5e['error'](0x1f4,_0x743e('0x32')+_0x536d5e));}if(!_[_0x743e('0x33')](_0x536d5e,_0x326a50[_0x743e('0x24')][_0x743e('0x31')])){return _0x59a530(_0x280b5e['error'](0x1f4,_0x743e('0x34')+_0x536d5e));}var _0x21ce47={};_0x21ce47[_0x326a50[_0x743e('0x24')]['mapKey']]=_0x326a50[_0x743e('0x24')][_0x743e('0x2e')];return db[_0x743e('0x18')][_0x743e('0x35')]({'where':{'id':_0x326a50[_0x743e('0x36')]['id']},'include':[{'model':db['CmList'],'as':_0x743e('0x37'),'include':[{'model':db[_0x743e('0x28')],'as':_0x743e('0x38'),'where':_0x21ce47,'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db[_0x743e('0x39')],'as':_0x743e('0x3a')},{'model':db[_0x743e('0x3b')],'as':_0x743e('0x3c')}]})[_0x743e('0xd')](function(_0x8545f6){if(_0x8545f6&&_0x8545f6[_0x743e('0x37')]){var _0x1aacdd=_0x8545f6['get']({'plain':!![]});_0x48d0f9[_0x743e('0x36')]=_['omit'](_0x1aacdd,['Applications',_0x743e('0x37')]);_0x48d0f9[_0x743e('0x3d')]=_0x1aacdd['Applications'];_0x48d0f9['list']=_0x1aacdd['List'];_0x48d0f9['applications']=_[_0x743e('0x3e')](_0x48d0f9[_0x743e('0x3d')],[_0x743e('0x3f')],[_0x743e('0x40')]);if(_0x48d0f9['account']&&_0x48d0f9[_0x743e('0x36')][_0x743e('0x41')]){_0x48d0f9[_0x743e('0x3d')][_0x743e('0x42')]({'id':0x0,'priority':_0x48d0f9[_0x743e('0x3d')]['length']+0x1,'app':_0x743e('0x43'),'appdata':'autoclose','interval':_0x743e('0x44')});}if(_0x48d0f9['account']['Applications']){delete _0x48d0f9['account'][_0x743e('0x3a')];}if(_0x48d0f9[_0x743e('0x36')][_0x743e('0x37')]){delete _0x48d0f9['account'][_0x743e('0x37')];}if(_0x1aacdd['List'][_0x743e('0x38')][_0x743e('0x45')]){return _0x1aacdd[_0x743e('0x37')][_0x743e('0x38')][0x0];}var _0x4a1883=_[_0x743e('0x46')](_0x326a50[_0x743e('0x24')],{'firstName':_0x326a50[_0x743e('0x24')][_0x743e('0x2e')],'ListId':_0x1aacdd['ListId']});_0x4a1883[_0x326a50[_0x743e('0x24')][_0x743e('0x31')]]=_0x326a50[_0x743e('0x24')][_0x743e('0x2e')];return db[_0x743e('0x28')]['create'](_0x4a1883);}else{throw new Error(_0x743e('0x47'));}})[_0x743e('0xd')](function(_0x17e144){_0x48d0f9[_0x743e('0x48')]=_0x17e144;if(_0x17e144){if(!_0x326a50[_0x743e('0x24')][_0x743e('0x13')]['messageId']){_0x326a50[_0x743e('0x24')][_0x743e('0x13')][_0x743e('0x49')]=rs['generate']()+'\x20'+_0x326a50[_0x743e('0x24')][_0x743e('0x13')][_0x743e('0x2e')];}var _0x50b1c7={'ContactId':_0x17e144['id'],'MailAccountId':_0x326a50[_0x743e('0x36')]['id'],'inReplyTo':_0x326a50['body'][_0x743e('0x13')]['messageId'],'to':_0x326a50[_0x743e('0x24')]['message']['from'],'cc':_0x326a50[_0x743e('0x24')][_0x743e('0x13')]['cc'],'subject':_0x326a50['body'][_0x743e('0x13')][_0x743e('0x4a')],'attach':_0x326a50[_0x743e('0x24')][_0x743e('0x13')][_0x743e('0x4b')],'lastMsgAt':moment()[_0x743e('0x4c')](_0x743e('0x4d')),'lastMsgDirection':'in'};return db['MailInteraction'][_0x743e('0x35')]({'where':{'closed':![],'MailAccountId':_0x326a50[_0x743e('0x36')]['id']},'include':[{'model':db['MailMessage'],'as':'Messages','attributes':['messageId'],'where':{'messageId':_0x326a50[_0x743e('0x24')][_0x743e('0x13')][_0x743e('0x4e')]}}]})[_0x743e('0xd')](function(_0x5e018d){if(_0x5e018d){return[_0x5e018d,![]];}return db[_0x743e('0x4f')][_0x743e('0x50')](_0x50b1c7)['then'](function(_0x52ccc2){return[_0x52ccc2,!![]];});});}else{throw new Error(_0x743e('0x51'));}})[_0x743e('0x52')](function(_0x4b8222,_0x1ccee3){if(_0x4b8222){_0x90b320=_0x1ccee3;if(!_0x1ccee3){return _0x4b8222[_0x743e('0x53')]({'inReplyTo':_0x326a50[_0x743e('0x24')]['message'][_0x743e('0x49')],'to':_0x326a50['body'][_0x743e('0x13')][_0x743e('0x2e')],'cc':_0x326a50[_0x743e('0x24')][_0x743e('0x13')]['cc'],'subject':_0x326a50[_0x743e('0x24')][_0x743e('0x13')]['subject'],'attach':_0x4b8222['attach']?_0x4b8222['attach']:_0x326a50[_0x743e('0x24')][_0x743e('0x13')]['attach'],'substatus':null,'substatusAt':moment()[_0x743e('0x4c')](_0x743e('0x4d')),'lastMsgAt':moment()[_0x743e('0x4c')](_0x743e('0x4d')),'lastMsgDirection':'in'});}else{return _0x4b8222;}}})[_0x743e('0xd')](function(_0x2f7049){_0x48d0f9[_0x743e('0x54')]=_0x2f7049[_0x743e('0x55')]({'plain':!![]});_0x48d0f9[_0x743e('0x54')][_0x743e('0x56')]=_0x90b320;return db[_0x743e('0x57')][_0x743e('0x50')]({'body':_0x326a50['body'][_0x743e('0x24')],'MailAccountId':_0x326a50[_0x743e('0x36')]['id'],'MailInteractionId':_0x2f7049['id'],'direction':'in','ContactId':_0x48d0f9[_0x743e('0x48')]['id'],'messageId':_0x326a50[_0x743e('0x24')]['message'][_0x743e('0x49')],'from':_0x326a50[_0x743e('0x24')][_0x743e('0x13')][_0x743e('0x2e')],'to':_0x326a50[_0x743e('0x24')][_0x743e('0x13')]['to'],'cc':_0x326a50[_0x743e('0x24')][_0x743e('0x13')]['cc'],'subject':_0x326a50[_0x743e('0x24')][_0x743e('0x13')][_0x743e('0x4a')],'attach':_0x326a50['body'][_0x743e('0x13')][_0x743e('0x4b')],'Attachments':_0x326a50[_0x743e('0x24')][_0x743e('0x13')][_0x743e('0x58')],'originTo':_0x326a50[_0x743e('0x24')]['message'][_0x743e('0x59')],'originCc':_0x326a50[_0x743e('0x24')][_0x743e('0x13')][_0x743e('0x5a')],'bcc':_0x326a50['body'][_0x743e('0x13')]['bcc'],'ChatWebsiteId':_0x326a50[_0x743e('0x24')]['message'][_0x743e('0x5b')]||null,'originChannel':_0x326a50[_0x743e('0x24')][_0x743e('0x13')]['originChannel']||'Email','ChatOfflineMessageId':_0x326a50[_0x743e('0x24')][_0x743e('0x13')][_0x743e('0x5c')]||null},{'include':[{'model':db[_0x743e('0x5d')],'as':'Attachments'}]});})[_0x743e('0xd')](function(_0x397653){_0x48d0f9[_0x743e('0x13')]=_0x397653;if(_0x48d0f9[_0x743e('0x54')][_0x743e('0x5e')]){return db[_0x743e('0x5f')][_0x743e('0x35')]({'attributes':['id',_0x743e('0x60')],'where':{'id':_0x48d0f9[_0x743e('0x54')]['UserId']}})[_0x743e('0xd')](function(_0x4acb41){if(_0x4acb41){_0x48d0f9[_0x743e('0x3d')][_0x743e('0x61')]({'id':0x0,'priority':0x0,'app':_0x743e('0x62'),'appdata':_0x4acb41['name']+','+(_0x48d0f9[_0x743e('0x36')][_0x743e('0x63')]||0xa),'interval':_0x743e('0x44')});}return respondWithRpcPromise('Start',_0x743e('0x64'),_0x48d0f9);});}return respondWithRpcPromise(_0x743e('0x65'),_0x743e('0x64'),_0x48d0f9);})[_0x743e('0xd')](function(_0x3f170d){_0x4d8489(_0x3f170d);})[_0x743e('0x16')](function(_0x57c0ad){_0x59a530(_0x280b5e[_0x743e('0x11')](0x1f4,_0x57c0ad[_0x743e('0x13')]));});});};
\ No newline at end of file
index 0a53848..42d8139 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3164=['update','emit','removeListener','register','mailAccount:','./mailAccount.events','save','remove'];(function(_0x6addb5,_0x4706a9){var _0x1d8085=function(_0x2a09ec){while(--_0x2a09ec){_0x6addb5['push'](_0x6addb5['shift']());}};_0x1d8085(++_0x4706a9);}(_0x3164,0x85));var _0x4316=function(_0x3bc255,_0x5712b0){_0x3bc255=_0x3bc255-0x0;var _0x14e4fc=_0x3164[_0x3bc255];return _0x14e4fc;};'use strict';var MailAccountEvents=require(_0x4316('0x0'));var events=[_0x4316('0x1'),_0x4316('0x2'),_0x4316('0x3')];function createListener(_0x343ae7,_0x1821ca){return function(_0x345a8f){_0x1821ca[_0x4316('0x4')](_0x343ae7,_0x345a8f);};}function removeListener(_0x102cfe,_0xb7cb37){return function(){MailAccountEvents[_0x4316('0x5')](_0x102cfe,_0xb7cb37);};}exports[_0x4316('0x6')]=function(_0x3f82c4){for(var _0x364941=0x0,_0x5ed321=events['length'];_0x364941<_0x5ed321;_0x364941++){var _0x375ce2=events[_0x364941];var _0x242b12=createListener(_0x4316('0x7')+_0x375ce2,_0x3f82c4);MailAccountEvents['on'](_0x375ce2,_0x242b12);}};
\ No newline at end of file
+var _0x251e=['remove','emit','removeListener','register','length','mailAccount:','save'];(function(_0x26eeb2,_0x416eb8){var _0x1c0398=function(_0x592146){while(--_0x592146){_0x26eeb2['push'](_0x26eeb2['shift']());}};_0x1c0398(++_0x416eb8);}(_0x251e,0x102));var _0xe251=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x251e[_0x3dd15e];return _0x231fd0;};'use strict';var MailAccountEvents=require('./mailAccount.events');var events=[_0xe251('0x0'),_0xe251('0x1'),'update'];function createListener(_0x4a7aed,_0x57c37e){return function(_0x3327ec){_0x57c37e[_0xe251('0x2')](_0x4a7aed,_0x3327ec);};}function removeListener(_0x59ad29,_0x789e29){return function(){MailAccountEvents[_0xe251('0x3')](_0x59ad29,_0x789e29);};}exports[_0xe251('0x4')]=function(_0xd86854){for(var _0x34cb58=0x0,_0x28591d=events[_0xe251('0x5')];_0x34cb58<_0x28591d;_0x34cb58++){var _0x23a5c7=events[_0x34cb58];var _0x351d45=createListener(_0xe251('0x6')+_0x23a5c7,_0xd86854);MailAccountEvents['on'](_0x23a5c7,_0x351d45);}};
\ No newline at end of file
index b6aa517..2457fd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe3d=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','show','put','delete','destroy','util','path','connect-timeout'];(function(_0x4b3172,_0x470bd5){var _0x3d67c3=function(_0x1fa0f3){while(--_0x1fa0f3){_0x4b3172['push'](_0x4b3172['shift']());}};_0x3d67c3(++_0x470bd5);}(_0xbe3d,0x66));var _0xdbe3=function(_0x205b48,_0x366c2c){_0x205b48=_0x205b48-0x0;var _0xa2d878=_0xbe3d[_0x205b48];return _0xa2d878;};'use strict';var multer=require('multer');var util=require(_0xdbe3('0x0'));var path=require(_0xdbe3('0x1'));var timeout=require(_0xdbe3('0x2'));var express=require('express');var router=express[_0xdbe3('0x3')]();var fs_extra=require(_0xdbe3('0x4'));var auth=require(_0xdbe3('0x5'));var interaction=require(_0xdbe3('0x6'));var config=require(_0xdbe3('0x7'));var controller=require('./mailApplication.controller');router[_0xdbe3('0x8')](_0xdbe3('0x9'),auth[_0xdbe3('0xa')](),controller[_0xdbe3('0xb')]);router[_0xdbe3('0xc')]('/:id',auth[_0xdbe3('0xa')](),controller['update']);router[_0xdbe3('0xd')](_0xdbe3('0x9'),auth[_0xdbe3('0xa')](),controller[_0xdbe3('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0x5abc=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailApplication.controller','/:id','isAuthenticated','show','put','delete','destroy'];(function(_0x3f3bad,_0x193f06){var _0x4f0801=function(_0x5cfd32){while(--_0x5cfd32){_0x3f3bad['push'](_0x3f3bad['shift']());}};_0x4f0801(++_0x193f06);}(_0x5abc,0x6d));var _0xc5ab=function(_0x51c358,_0x46246b){_0x51c358=_0x51c358-0x0;var _0x15edc5=_0x5abc[_0x51c358];return _0x15edc5;};'use strict';var multer=require(_0xc5ab('0x0'));var util=require(_0xc5ab('0x1'));var path=require(_0xc5ab('0x2'));var timeout=require(_0xc5ab('0x3'));var express=require(_0xc5ab('0x4'));var router=express[_0xc5ab('0x5')]();var fs_extra=require(_0xc5ab('0x6'));var auth=require(_0xc5ab('0x7'));var interaction=require(_0xc5ab('0x8'));var config=require(_0xc5ab('0x9'));var controller=require(_0xc5ab('0xa'));router['get'](_0xc5ab('0xb'),auth[_0xc5ab('0xc')](),controller[_0xc5ab('0xd')]);router[_0xc5ab('0xe')](_0xc5ab('0xb'),auth[_0xc5ab('0xc')](),controller['update']);router[_0xc5ab('0xf')](_0xc5ab('0xb'),auth[_0xc5ab('0xc')](),controller[_0xc5ab('0x10')]);module[_0xc5ab('0x11')]=router;
\ No newline at end of file
index d6fa48d..ec2510a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf66b=['STRING','noop','TEXT','*,*,*,*','exports'];(function(_0x13edb1,_0x32d69a){var _0x3fa656=function(_0x5ba395){while(--_0x5ba395){_0x13edb1['push'](_0x13edb1['shift']());}};_0x3fa656(++_0x32d69a);}(_0xf66b,0x180));var _0xbf66=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0xf66b[_0x13d07a];return _0x5ee0ee;};'use strict';var Sequelize=require('sequelize');module[_0xbf66('0x0')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xbf66('0x1')],'allowNull':![],'defaultValue':_0xbf66('0x2')},'appdata':{'type':Sequelize[_0xbf66('0x3')]()},'description':{'type':Sequelize[_0xbf66('0x1')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xbf66('0x4')}};
\ No newline at end of file
+var _0x0b14=['noop','TEXT','*,*,*,*','exports','INTEGER','STRING'];(function(_0x320eda,_0x152bfe){var _0x79d96e=function(_0x71cc4f){while(--_0x71cc4f){_0x320eda['push'](_0x320eda['shift']());}};_0x79d96e(++_0x152bfe);}(_0x0b14,0xed));var _0x40b1=function(_0xa9c9d9,_0x4bde51){_0xa9c9d9=_0xa9c9d9-0x0;var _0x278c58=_0x0b14[_0xa9c9d9];return _0x278c58;};'use strict';var Sequelize=require('sequelize');module[_0x40b1('0x0')]={'priority':{'type':Sequelize[_0x40b1('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x40b1('0x2')],'allowNull':![],'defaultValue':_0x40b1('0x3')},'appdata':{'type':Sequelize[_0x40b1('0x4')]()},'description':{'type':Sequelize[_0x40b1('0x2')]},'interval':{'type':Sequelize[_0x40b1('0x2')],'defaultValue':_0x40b1('0x5')}};
\ No newline at end of file
index f229159..d9712b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['name','status','send','show','params','keys','MailApplication','rawAttributes','query','intersection','model','fields','attributes','length','includeAll','merge','options','find','then','catch','body','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','fs-extra','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','end','undefined','count','offset','limit','set','Content-Range','json','apply','reject','update','destroy','sendStatus'];(function(_0x1ead1d,_0x15b2d4){var _0x4e6075=function(_0x4418d5){while(--_0x4418d5){_0x1ead1d['push'](_0x1ead1d['shift']());}};_0x4e6075(++_0x15b2d4);}(_0xb43b,0x1b2));var _0xbb43=function(_0x4f9ae6,_0x1c8dda){_0x4f9ae6=_0x4f9ae6-0x0;var _0x1dd4c2=_0xb43b[_0x4f9ae6];return _0x1dd4c2;};'use strict';var emlformat=require(_0xbb43('0x0'));var rimraf=require(_0xbb43('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbb43('0x2'));var rp=require(_0xbb43('0x3'));var moment=require(_0xbb43('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xbb43('0x5'));var util=require(_0xbb43('0x6'));var path=require(_0xbb43('0x7'));var sox=require(_0xbb43('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbb43('0x9'));var _=require('lodash');var squel=require(_0xbb43('0xa'));var crypto=require(_0xbb43('0xb'));var jsforce=require(_0xbb43('0xc'));var deskjs=require(_0xbb43('0xd'));var toCsv=require(_0xbb43('0xe'));var querystring=require('querystring');var Papa=require(_0xbb43('0xf'));var Redis=require(_0xbb43('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xbb43('0x11'));var as=require(_0xbb43('0x12'));var hardwareService=require(_0xbb43('0x13'));var logger=require(_0xbb43('0x14'))(_0xbb43('0x15'));var utils=require(_0xbb43('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xbb43('0x17'));var db=require(_0xbb43('0x18'))['db'];function respondWithStatusCode(_0x50e2c0,_0x578392){_0x578392=_0x578392||0xcc;return function(_0x41e7e5){if(_0x41e7e5){return _0x50e2c0['sendStatus'](_0x578392);}return _0x50e2c0['status'](_0x578392)[_0xbb43('0x19')]();};}function respondWithResult(_0x5a509f,_0x68d45d){_0x68d45d=_0x68d45d||0xc8;return function(_0x43021d){if(_0x43021d){return _0x5a509f['status'](_0x68d45d)['json'](_0x43021d);}};}function respondWithFilteredResult(_0x4d5bcf,_0x338120){return function(_0x2abce0){if(_0x2abce0){var _0x57bd1d=typeof _0x338120['offset']===_0xbb43('0x1a')&&typeof _0x338120['limit']==='undefined';var _0x2b0797=_0x2abce0[_0xbb43('0x1b')];var _0x2e3b43=_0x57bd1d?0x0:_0x338120['offset'];var _0x1c16d7=_0x57bd1d?_0x2abce0['count']:_0x338120[_0xbb43('0x1c')]+_0x338120[_0xbb43('0x1d')];var _0x4dfc54;if(_0x1c16d7>=_0x2b0797){_0x1c16d7=_0x2b0797;_0x4dfc54=0xc8;}else{_0x4dfc54=0xce;}_0x4d5bcf['status'](_0x4dfc54);return _0x4d5bcf[_0xbb43('0x1e')](_0xbb43('0x1f'),_0x2e3b43+'-'+_0x1c16d7+'/'+_0x2b0797)[_0xbb43('0x20')](_0x2abce0);}return null;};}function patchUpdates(_0x2bf2d4){return function(_0x5bcce7){try{jsonpatch[_0xbb43('0x21')](_0x5bcce7,_0x2bf2d4,!![]);}catch(_0x5f4416){return BPromise[_0xbb43('0x22')](_0x5f4416);}return _0x5bcce7['save']();};}function saveUpdates(_0x2f5e31,_0x565256){return function(_0x3f323e){if(_0x3f323e){return _0x3f323e[_0xbb43('0x23')](_0x2f5e31)['then'](function(_0x1d0768){return _0x1d0768;});}return null;};}function removeEntity(_0x4dfb7f,_0xf24e60){return function(_0x298ce2){if(_0x298ce2){return _0x298ce2[_0xbb43('0x24')]()['then'](function(){_0x4dfb7f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x269ca5,_0x32d7f0){return function(_0x5d8310){if(!_0x5d8310){_0x269ca5[_0xbb43('0x25')](0x194);}return _0x5d8310;};}function handleError(_0x2da653,_0x226827){_0x226827=_0x226827||0x1f4;return function(_0x3874fb){logger['error'](_0x3874fb['stack']);if(_0x3874fb[_0xbb43('0x26')]){delete _0x3874fb[_0xbb43('0x26')];}_0x2da653[_0xbb43('0x27')](_0x226827)[_0xbb43('0x28')](_0x3874fb);};}exports[_0xbb43('0x29')]=function(_0x40b04b,_0x21d386){var _0x473828={'raw':!![],'where':{'id':_0x40b04b[_0xbb43('0x2a')]['id']}},_0x539730={};_0x539730['model']=_[_0xbb43('0x2b')](db[_0xbb43('0x2c')][_0xbb43('0x2d')]);_0x539730[_0xbb43('0x2e')]=_['keys'](_0x40b04b[_0xbb43('0x2e')]);_0x539730['filters']=_['intersection'](_0x539730['model'],_0x539730[_0xbb43('0x2e')]);_0x473828['attributes']=_[_0xbb43('0x2f')](_0x539730[_0xbb43('0x30')],qs[_0xbb43('0x31')](_0x40b04b['query'][_0xbb43('0x31')]));_0x473828[_0xbb43('0x32')]=_0x473828[_0xbb43('0x32')][_0xbb43('0x33')]?_0x473828[_0xbb43('0x32')]:_0x539730[_0xbb43('0x30')];if(_0x40b04b[_0xbb43('0x2e')][_0xbb43('0x34')]){_0x473828['include']=[{'all':!![]}];}_0x473828=_[_0xbb43('0x35')]({},_0x473828,_0x40b04b[_0xbb43('0x36')]);return db[_0xbb43('0x2c')][_0xbb43('0x37')](_0x473828)[_0xbb43('0x38')](handleEntityNotFound(_0x21d386,null))[_0xbb43('0x38')](respondWithResult(_0x21d386,null))[_0xbb43('0x39')](handleError(_0x21d386,null));};exports[_0xbb43('0x23')]=function(_0x349a83,_0x57105c){if(_0x349a83[_0xbb43('0x3a')]['id']){delete _0x349a83[_0xbb43('0x3a')]['id'];}return db[_0xbb43('0x2c')][_0xbb43('0x37')]({'where':{'id':_0x349a83[_0xbb43('0x2a')]['id']}})[_0xbb43('0x38')](handleEntityNotFound(_0x57105c,null))['then'](saveUpdates(_0x349a83[_0xbb43('0x3a')],null))[_0xbb43('0x38')](respondWithResult(_0x57105c,null))['catch'](handleError(_0x57105c,null));};exports[_0xbb43('0x24')]=function(_0x2c9a7c,_0x11d384){return db['MailApplication']['find']({'where':{'id':_0x2c9a7c['params']['id']}})[_0xbb43('0x38')](handleEntityNotFound(_0x11d384,null))[_0xbb43('0x38')](removeEntity(_0x11d384,null))['catch'](handleError(_0x11d384,null));};
\ No newline at end of file
+var _0xd8b0=['attributes','length','include','merge','find','catch','body','params','eml-format','rimraf','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','save','update','then','destroy','error','name','show','model','MailApplication','query','keys','intersection','fields'];(function(_0x1bfe44,_0x4e410e){var _0x1103cb=function(_0x1e850e){while(--_0x1e850e){_0x1bfe44['push'](_0x1bfe44['shift']());}};_0x1103cb(++_0x4e410e);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x0d8b('0x0'));var rimraf=require(_0x0d8b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0d8b('0x2'));var BPromise=require(_0x0d8b('0x3'));var Mustache=require(_0x0d8b('0x4'));var util=require(_0x0d8b('0x5'));var path=require(_0x0d8b('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x0d8b('0x7'));var fs=require('fs');var fs_extra=require(_0x0d8b('0x8'));var _=require(_0x0d8b('0x9'));var squel=require('squel');var crypto=require(_0x0d8b('0xa'));var jsforce=require(_0x0d8b('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x0d8b('0xc'));var querystring=require(_0x0d8b('0xd'));var Papa=require(_0x0d8b('0xe'));var Redis=require(_0x0d8b('0xf'));var authService=require(_0x0d8b('0x10'));var qs=require(_0x0d8b('0x11'));var as=require(_0x0d8b('0x12'));var hardwareService=require(_0x0d8b('0x13'));var logger=require('../../config/logger')(_0x0d8b('0x14'));var utils=require('../../config/utils');var config=require(_0x0d8b('0x15'));var licenseUtil=require(_0x0d8b('0x16'));var db=require(_0x0d8b('0x17'))['db'];function respondWithStatusCode(_0x92cdd8,_0x35a07b){_0x35a07b=_0x35a07b||0xcc;return function(_0x32bb1a){if(_0x32bb1a){return _0x92cdd8[_0x0d8b('0x18')](_0x35a07b);}return _0x92cdd8[_0x0d8b('0x19')](_0x35a07b)[_0x0d8b('0x1a')]();};}function respondWithResult(_0x2ce75e,_0x5ad086){_0x5ad086=_0x5ad086||0xc8;return function(_0xe65334){if(_0xe65334){return _0x2ce75e[_0x0d8b('0x19')](_0x5ad086)[_0x0d8b('0x1b')](_0xe65334);}};}function respondWithFilteredResult(_0x4f6f21,_0x23eb7b){return function(_0xa86349){if(_0xa86349){var _0x17f7df=typeof _0x23eb7b[_0x0d8b('0x1c')]===_0x0d8b('0x1d')&&typeof _0x23eb7b['limit']===_0x0d8b('0x1d');var _0x4586c2=_0xa86349[_0x0d8b('0x1e')];var _0x5fecbd=_0x17f7df?0x0:_0x23eb7b[_0x0d8b('0x1c')];var _0x18dd2d=_0x17f7df?_0xa86349[_0x0d8b('0x1e')]:_0x23eb7b[_0x0d8b('0x1c')]+_0x23eb7b['limit'];var _0x27512e;if(_0x18dd2d>=_0x4586c2){_0x18dd2d=_0x4586c2;_0x27512e=0xc8;}else{_0x27512e=0xce;}_0x4f6f21[_0x0d8b('0x19')](_0x27512e);return _0x4f6f21[_0x0d8b('0x1f')](_0x0d8b('0x20'),_0x5fecbd+'-'+_0x18dd2d+'/'+_0x4586c2)[_0x0d8b('0x1b')](_0xa86349);}return null;};}function patchUpdates(_0x5b709c){return function(_0x393beb){try{jsonpatch[_0x0d8b('0x21')](_0x393beb,_0x5b709c,!![]);}catch(_0x50ec1e){return BPromise['reject'](_0x50ec1e);}return _0x393beb[_0x0d8b('0x22')]();};}function saveUpdates(_0x54a9a7,_0x56c729){return function(_0x5527d8){if(_0x5527d8){return _0x5527d8[_0x0d8b('0x23')](_0x54a9a7)[_0x0d8b('0x24')](function(_0x214778){return _0x214778;});}return null;};}function removeEntity(_0x38efc8,_0x221071){return function(_0x2c64e2){if(_0x2c64e2){return _0x2c64e2[_0x0d8b('0x25')]()[_0x0d8b('0x24')](function(){_0x38efc8[_0x0d8b('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0xe8bbee,_0x4463ee){return function(_0x5363e3){if(!_0x5363e3){_0xe8bbee[_0x0d8b('0x18')](0x194);}return _0x5363e3;};}function handleError(_0x4a0ae4,_0x3dd149){_0x3dd149=_0x3dd149||0x1f4;return function(_0x234bdd){logger[_0x0d8b('0x26')](_0x234bdd['stack']);if(_0x234bdd['name']){delete _0x234bdd[_0x0d8b('0x27')];}_0x4a0ae4[_0x0d8b('0x19')](_0x3dd149)['send'](_0x234bdd);};}exports[_0x0d8b('0x28')]=function(_0x59aa83,_0x1b2b59){var _0x4b59e5={'raw':!![],'where':{'id':_0x59aa83['params']['id']}},_0x97050a={};_0x97050a[_0x0d8b('0x29')]=_['keys'](db[_0x0d8b('0x2a')]['rawAttributes']);_0x97050a[_0x0d8b('0x2b')]=_[_0x0d8b('0x2c')](_0x59aa83[_0x0d8b('0x2b')]);_0x97050a['filters']=_['intersection'](_0x97050a['model'],_0x97050a[_0x0d8b('0x2b')]);_0x4b59e5['attributes']=_[_0x0d8b('0x2d')](_0x97050a['model'],qs['fields'](_0x59aa83[_0x0d8b('0x2b')][_0x0d8b('0x2e')]));_0x4b59e5[_0x0d8b('0x2f')]=_0x4b59e5[_0x0d8b('0x2f')][_0x0d8b('0x30')]?_0x4b59e5[_0x0d8b('0x2f')]:_0x97050a[_0x0d8b('0x29')];if(_0x59aa83[_0x0d8b('0x2b')]['includeAll']){_0x4b59e5[_0x0d8b('0x31')]=[{'all':!![]}];}_0x4b59e5=_[_0x0d8b('0x32')]({},_0x4b59e5,_0x59aa83['options']);return db[_0x0d8b('0x2a')][_0x0d8b('0x33')](_0x4b59e5)[_0x0d8b('0x24')](handleEntityNotFound(_0x1b2b59,null))['then'](respondWithResult(_0x1b2b59,null))[_0x0d8b('0x34')](handleError(_0x1b2b59,null));};exports[_0x0d8b('0x23')]=function(_0x206157,_0x31ceba){if(_0x206157[_0x0d8b('0x35')]['id']){delete _0x206157['body']['id'];}return db[_0x0d8b('0x2a')][_0x0d8b('0x33')]({'where':{'id':_0x206157['params']['id']}})[_0x0d8b('0x24')](handleEntityNotFound(_0x31ceba,null))[_0x0d8b('0x24')](saveUpdates(_0x206157[_0x0d8b('0x35')],null))[_0x0d8b('0x24')](respondWithResult(_0x31ceba,null))[_0x0d8b('0x34')](handleError(_0x31ceba,null));};exports['destroy']=function(_0x497a71,_0x41b4f9){return db['MailApplication']['find']({'where':{'id':_0x497a71[_0x0d8b('0x36')]['id']}})[_0x0d8b('0x24')](handleEntityNotFound(_0x41b4f9,null))[_0x0d8b('0x24')](removeEntity(_0x41b4f9,null))[_0x0d8b('0x34')](handleError(_0x41b4f9,null));};
\ No newline at end of file
index a3d94c1..8ee8842 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2dc2=['moment','bluebird','path','../../config/environment','define','MailApplication','mail_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api'];(function(_0x247705,_0x52b3d0){var _0x1edb0f=function(_0xf9f794){while(--_0xf9f794){_0x247705['push'](_0x247705['shift']());}};_0x1edb0f(++_0x52b3d0);}(_0x2dc2,0x11a));var _0x22dc=function(_0xdc37a1,_0x53ebb9){_0xdc37a1=_0xdc37a1-0x0;var _0x99b4fe=_0x2dc2[_0xdc37a1];return _0x99b4fe;};'use strict';var _=require(_0x22dc('0x0'));var util=require(_0x22dc('0x1'));var logger=require(_0x22dc('0x2'))(_0x22dc('0x3'));var moment=require(_0x22dc('0x4'));var BPromise=require(_0x22dc('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x22dc('0x6'));var rimraf=require('rimraf');var config=require(_0x22dc('0x7'));var attributes=require('./mailApplication.attributes');module['exports']=function(_0x5a4012,_0x3cedd4){return _0x5a4012[_0x22dc('0x8')](_0x22dc('0x9'),attributes,{'tableName':_0x22dc('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x22dc('0xb'),'collate':_0x22dc('0xc')});};
\ No newline at end of file
+var _0x9446=['exports','define','MailApplication','utf8mb4_unicode_ci','util','../../config/logger','api','path','../../config/environment','./mailApplication.attributes'];(function(_0x2b5a7b,_0x49d66e){var _0x1c4d7b=function(_0xa1d618){while(--_0xa1d618){_0x2b5a7b['push'](_0x2b5a7b['shift']());}};_0x1c4d7b(++_0x49d66e);}(_0x9446,0xa4));var _0x6944=function(_0x3b3b13,_0x58d80f){_0x3b3b13=_0x3b3b13-0x0;var _0x432f4a=_0x9446[_0x3b3b13];return _0x432f4a;};'use strict';var _=require('lodash');var util=require(_0x6944('0x0'));var logger=require(_0x6944('0x1'))(_0x6944('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x6944('0x3'));var rimraf=require('rimraf');var config=require(_0x6944('0x4'));var attributes=require(_0x6944('0x5'));module[_0x6944('0x6')]=function(_0xb710cd,_0x290db9){return _0xb710cd[_0x6944('0x7')](_0x6944('0x8'),attributes,{'tableName':'mail_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x6944('0x9')});};
\ No newline at end of file
index b1d9e76..3d2fceb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeaf8=['stringify','error','message','result','catch','UpdateMailApplication','MailApplication','options','raw','limit','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','MailApplication,\x20%s,\x20%s','request\x20sent','debug','MailApplication,\x20%s,\x20%s,\x20%s'];(function(_0x237d67,_0x4ff2db){var _0x292dfb=function(_0x565a7d){while(--_0x565a7d){_0x237d67['push'](_0x237d67['shift']());}};_0x292dfb(++_0x4ff2db);}(_0xeaf8,0x192));var _0x8eaf=function(_0x48a10f,_0x38cd51){_0x48a10f=_0x48a10f-0x0;var _0x15c5f6=_0xeaf8[_0x48a10f];return _0x15c5f6;};'use strict';var _=require(_0x8eaf('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x8eaf('0x1'));var rs=require(_0x8eaf('0x2'));var fs=require('fs');var Redis=require(_0x8eaf('0x3'));var db=require(_0x8eaf('0x4'))['db'];var utils=require(_0x8eaf('0x5'));var logger=require(_0x8eaf('0x6'))('rpc');var config=require(_0x8eaf('0x7'));var jayson=require(_0x8eaf('0x8'));var client=jayson[_0x8eaf('0x9')][_0x8eaf('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3600f7,_0xea7a3f,_0x206ccc){return new BPromise(function(_0x55ddac,_0x4f2b04){return client[_0x8eaf('0xb')](_0x3600f7,_0x206ccc)[_0x8eaf('0xc')](function(_0x195c15){logger[_0x8eaf('0xd')](_0x8eaf('0xe'),_0xea7a3f,_0x8eaf('0xf'));logger[_0x8eaf('0x10')](_0x8eaf('0x11'),_0xea7a3f,_0x8eaf('0xf'),JSON[_0x8eaf('0x12')](_0x195c15));if(_0x195c15[_0x8eaf('0x13')]){if(_0x195c15[_0x8eaf('0x13')]['code']===0x1f4){logger[_0x8eaf('0x13')](_0x8eaf('0xe'),_0xea7a3f,_0x195c15[_0x8eaf('0x13')][_0x8eaf('0x14')]);return _0x4f2b04(_0x195c15[_0x8eaf('0x13')][_0x8eaf('0x14')]);}logger[_0x8eaf('0x13')](_0x8eaf('0xe'),_0xea7a3f,_0x195c15[_0x8eaf('0x13')][_0x8eaf('0x14')]);return _0x55ddac(_0x195c15[_0x8eaf('0x13')]['message']);}else{logger[_0x8eaf('0xd')](_0x8eaf('0xe'),_0xea7a3f,_0x8eaf('0xf'));_0x55ddac(_0x195c15[_0x8eaf('0x15')][_0x8eaf('0x14')]);}})[_0x8eaf('0x16')](function(_0x33a6ad){logger[_0x8eaf('0x13')](_0x8eaf('0xe'),_0xea7a3f,_0x33a6ad);_0x4f2b04(_0x33a6ad);});});}exports[_0x8eaf('0x17')]=function(_0x2f1678){var _0x3e0686=this;return new Promise(function(_0x5c1261,_0x4133fb){return db[_0x8eaf('0x18')]['update'](_0x2f1678['body'],{'raw':_0x2f1678[_0x8eaf('0x19')]?_0x2f1678['options'][_0x8eaf('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2f1678[_0x8eaf('0x19')]?_0x2f1678['options']['where']||null:null,'attributes':_0x2f1678[_0x8eaf('0x19')]?_0x2f1678['options']['attributes']||null:null,'limit':_0x2f1678['options']?_0x2f1678[_0x8eaf('0x19')][_0x8eaf('0x1b')]||null:null})[_0x8eaf('0xc')](function(_0x30f5cd){logger[_0x8eaf('0xd')](_0x8eaf('0x17'),_0x2f1678);logger['debug'](_0x8eaf('0x17'),_0x2f1678,JSON['stringify'](_0x30f5cd));_0x5c1261(_0x30f5cd);})[_0x8eaf('0x16')](function(_0x32aca9){logger['error'](_0x8eaf('0x17'),_0x32aca9['message'],_0x2f1678);_0x4133fb(_0x3e0686[_0x8eaf('0x13')](0x1f4,_0x32aca9[_0x8eaf('0x14')]));});});};
\ No newline at end of file
+var _0x7686=['info','request\x20sent','debug','MailApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','MailApplication,\x20%s,\x20%s','message','result','catch','UpdateMailApplication','MailApplication','update','body','options','raw','attributes','limit','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','then'];(function(_0x4dbaad,_0x730318){var _0x226c72=function(_0x501972){while(--_0x501972){_0x4dbaad['push'](_0x4dbaad['shift']());}};_0x226c72(++_0x730318);}(_0x7686,0x12a));var _0x6768=function(_0x714597,_0x596490){_0x714597=_0x714597-0x0;var _0x3229be=_0x7686[_0x714597];return _0x3229be;};'use strict';var _=require('lodash');var util=require(_0x6768('0x0'));var moment=require(_0x6768('0x1'));var BPromise=require(_0x6768('0x2'));var rs=require(_0x6768('0x3'));var fs=require('fs');var Redis=require(_0x6768('0x4'));var db=require(_0x6768('0x5'))['db'];var utils=require(_0x6768('0x6'));var logger=require(_0x6768('0x7'))(_0x6768('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x6768('0x9')][_0x6768('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1f824b,_0x1ccf85,_0x393711){return new BPromise(function(_0x151d36,_0x1ccfb9){return client['request'](_0x1f824b,_0x393711)[_0x6768('0xb')](function(_0x43a61d){logger[_0x6768('0xc')]('MailApplication,\x20%s,\x20%s',_0x1ccf85,_0x6768('0xd'));logger[_0x6768('0xe')](_0x6768('0xf'),_0x1ccf85,_0x6768('0xd'),JSON[_0x6768('0x10')](_0x43a61d));if(_0x43a61d[_0x6768('0x11')]){if(_0x43a61d[_0x6768('0x11')][_0x6768('0x12')]===0x1f4){logger['error'](_0x6768('0x13'),_0x1ccf85,_0x43a61d['error'][_0x6768('0x14')]);return _0x1ccfb9(_0x43a61d[_0x6768('0x11')][_0x6768('0x14')]);}logger[_0x6768('0x11')](_0x6768('0x13'),_0x1ccf85,_0x43a61d[_0x6768('0x11')][_0x6768('0x14')]);return _0x151d36(_0x43a61d['error']['message']);}else{logger[_0x6768('0xc')]('MailApplication,\x20%s,\x20%s',_0x1ccf85,_0x6768('0xd'));_0x151d36(_0x43a61d[_0x6768('0x15')][_0x6768('0x14')]);}})[_0x6768('0x16')](function(_0x1ee648){logger['error'](_0x6768('0x13'),_0x1ccf85,_0x1ee648);_0x1ccfb9(_0x1ee648);});});}exports[_0x6768('0x17')]=function(_0x35d260){var _0x9d13df=this;return new Promise(function(_0xc57658,_0x525abe){return db[_0x6768('0x18')][_0x6768('0x19')](_0x35d260[_0x6768('0x1a')],{'raw':_0x35d260[_0x6768('0x1b')]?_0x35d260[_0x6768('0x1b')][_0x6768('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x35d260['options']?_0x35d260[_0x6768('0x1b')]['where']||null:null,'attributes':_0x35d260[_0x6768('0x1b')]?_0x35d260[_0x6768('0x1b')][_0x6768('0x1d')]||null:null,'limit':_0x35d260[_0x6768('0x1b')]?_0x35d260['options'][_0x6768('0x1e')]||null:null})['then'](function(_0x3f297d){logger[_0x6768('0xc')](_0x6768('0x17'),_0x35d260);logger[_0x6768('0xe')](_0x6768('0x17'),_0x35d260,JSON[_0x6768('0x10')](_0x3f297d));_0xc57658(_0x3f297d);})[_0x6768('0x16')](function(_0x28970f){logger[_0x6768('0x11')](_0x6768('0x17'),_0x28970f[_0x6768('0x14')],_0x35d260);_0x525abe(_0x9d13df[_0x6768('0x11')](0x1f4,_0x28970f[_0x6768('0x14')]));});});};
\ No newline at end of file
index 29aae3b..45e8380 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b47=['show','/:id/messages','getMessages','/:id/download','create','addMessage','post','/:id/tags','tracked','mailinteraction:addtags','put','mail','mailinteraction:update','update','mailinteraction:destroy','destroy','delete','exports','Router','../../components/interaction/service','./mailInteraction.controller','isAuthenticated','index','get','describe','/:id'];(function(_0x17726c,_0x5151b3){var _0xb1472c=function(_0x56a323){while(--_0x56a323){_0x17726c['push'](_0x17726c['shift']());}};_0xb1472c(++_0x5151b3);}(_0x2b47,0x198));var _0x72b4=function(_0x2db272,_0x5c7dd6){_0x2db272=_0x2db272-0x0;var _0x346892=_0x2b47[_0x2db272];return _0x346892;};'use strict';var express=require('express');var router=express[_0x72b4('0x0')]();var auth=require('../../components/auth/service');var interaction=require(_0x72b4('0x1'));var controller=require(_0x72b4('0x2'));router['get']('/',auth[_0x72b4('0x3')](),controller[_0x72b4('0x4')]);router[_0x72b4('0x5')]('/describe',auth['isAuthenticated'](),controller[_0x72b4('0x6')]);router['get'](_0x72b4('0x7'),auth[_0x72b4('0x3')](),controller[_0x72b4('0x8')]);router[_0x72b4('0x5')](_0x72b4('0x9'),auth[_0x72b4('0x3')](),controller[_0x72b4('0xa')]);router[_0x72b4('0x5')](_0x72b4('0xb'),auth[_0x72b4('0x3')](),controller['download']);router['post']('/',auth['isAuthenticated'](),controller[_0x72b4('0xc')]);router['post'](_0x72b4('0x9'),auth['isAuthenticated'](),controller[_0x72b4('0xd')]);router[_0x72b4('0xe')](_0x72b4('0xf'),auth[_0x72b4('0x3')](),interaction[_0x72b4('0x10')]('mail',_0x72b4('0x11')),controller['addTags']);router[_0x72b4('0x12')](_0x72b4('0x7'),auth['isAuthenticated'](),interaction[_0x72b4('0x10')](_0x72b4('0x13'),_0x72b4('0x14')),controller[_0x72b4('0x15')]);router['delete']('/:id',auth[_0x72b4('0x3')](),interaction[_0x72b4('0x10')](_0x72b4('0x13'),_0x72b4('0x16')),controller[_0x72b4('0x17')]);router[_0x72b4('0x18')](_0x72b4('0xf'),auth[_0x72b4('0x3')](),controller['removeTags']);module[_0x72b4('0x19')]=router;
\ No newline at end of file
+var _0x602f=['mailinteraction:update','update','delete','mailinteraction:destroy','destroy','/:id/tags','removeTags','exports','Router','../../components/auth/service','../../components/interaction/service','./mailInteraction.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/messages','/:id/download','download','post','create','tracked','mail','addTags'];(function(_0x1a85fe,_0x39dda1){var _0x506810=function(_0x4e5235){while(--_0x4e5235){_0x1a85fe['push'](_0x1a85fe['shift']());}};_0x506810(++_0x39dda1);}(_0x602f,0x1a8));var _0xf602=function(_0x3710fa,_0xd3edd1){_0x3710fa=_0x3710fa-0x0;var _0x1b90a6=_0x602f[_0x3710fa];return _0x1b90a6;};'use strict';var express=require('express');var router=express[_0xf602('0x0')]();var auth=require(_0xf602('0x1'));var interaction=require(_0xf602('0x2'));var controller=require(_0xf602('0x3'));router[_0xf602('0x4')]('/',auth[_0xf602('0x5')](),controller['index']);router['get'](_0xf602('0x6'),auth[_0xf602('0x5')](),controller[_0xf602('0x7')]);router[_0xf602('0x4')](_0xf602('0x8'),auth[_0xf602('0x5')](),controller[_0xf602('0x9')]);router[_0xf602('0x4')](_0xf602('0xa'),auth[_0xf602('0x5')](),controller['getMessages']);router[_0xf602('0x4')](_0xf602('0xb'),auth[_0xf602('0x5')](),controller[_0xf602('0xc')]);router[_0xf602('0xd')]('/',auth[_0xf602('0x5')](),controller[_0xf602('0xe')]);router['post'](_0xf602('0xa'),auth[_0xf602('0x5')](),controller['addMessage']);router[_0xf602('0xd')]('/:id/tags',auth[_0xf602('0x5')](),interaction[_0xf602('0xf')](_0xf602('0x10'),'mailinteraction:addtags'),controller[_0xf602('0x11')]);router['put'](_0xf602('0x8'),auth[_0xf602('0x5')](),interaction[_0xf602('0xf')](_0xf602('0x10'),_0xf602('0x12')),controller[_0xf602('0x13')]);router[_0xf602('0x14')](_0xf602('0x8'),auth[_0xf602('0x5')](),interaction[_0xf602('0xf')]('mail',_0xf602('0x15')),controller[_0xf602('0x16')]);router[_0xf602('0x14')](_0xf602('0x17'),auth[_0xf602('0x5')](),controller[_0xf602('0x18')]);module[_0xf602('0x19')]=router;
\ No newline at end of file
index 27423f1..4fd4747 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe577=['ENUM','out','sequelize','iconv','exports','BOOLEAN','STRING','long','TEXT','DATE'];(function(_0x40a3bd,_0x26b586){var _0x224d4c=function(_0x2d8749){while(--_0x2d8749){_0x40a3bd['push'](_0x40a3bd['shift']());}};_0x224d4c(++_0x26b586);}(_0xe577,0xb6));var _0x7e57=function(_0x2dea24,_0x2fc021){_0x2dea24=_0x2dea24-0x0;var _0x309d58=_0xe577[_0x2dea24];return _0x309d58;};'use strict';var Sequelize=require(_0x7e57('0x0'));var iconv=require(_0x7e57('0x1'));module[_0x7e57('0x2')]={'closed':{'type':Sequelize[_0x7e57('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x7e57('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x7e57('0x4')]},'inReplyTo':{'type':Sequelize['STRING'](0x1fe)},'to':{'type':Sequelize[_0x7e57('0x4')]},'cc':{'type':Sequelize['TEXT'](_0x7e57('0x5'))},'subject':{'type':Sequelize[_0x7e57('0x6')]()},'attach':{'type':Sequelize[_0x7e57('0x3')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x7e57('0x7')]},'substatus':{'type':Sequelize['STRING'](0x3c)},'substatusAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x7e57('0x8')]('in',_0x7e57('0x9')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x7e57('0x7')]},'lastMsgDirection':{'type':Sequelize[_0x7e57('0x8')]('in',_0x7e57('0x9')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x7e57('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x8c5a=['BOOLEAN','DATE','STRING','TEXT','long','ENUM','sequelize','iconv','exports'];(function(_0x5ca784,_0x28bea2){var _0x5aa579=function(_0x531234){while(--_0x531234){_0x5ca784['push'](_0x5ca784['shift']());}};_0x5aa579(++_0x28bea2);}(_0x8c5a,0x1b6));var _0xa8c5=function(_0x235cc2,_0x29f45e){_0x235cc2=_0x235cc2-0x0;var _0x3e2023=_0x8c5a[_0x235cc2];return _0x3e2023;};'use strict';var Sequelize=require(_0xa8c5('0x0'));var iconv=require(_0xa8c5('0x1'));module[_0xa8c5('0x2')]={'closed':{'type':Sequelize[_0xa8c5('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xa8c5('0x4')]},'disposition':{'type':Sequelize[_0xa8c5('0x5')]},'secondDisposition':{'type':Sequelize[_0xa8c5('0x5')]},'thirdDisposition':{'type':Sequelize[_0xa8c5('0x5')]},'note':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize[_0xa8c5('0x5')](0x1fe)},'to':{'type':Sequelize[_0xa8c5('0x5')]},'cc':{'type':Sequelize[_0xa8c5('0x6')](_0xa8c5('0x7'))},'subject':{'type':Sequelize[_0xa8c5('0x6')]()},'attach':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0xa8c5('0x4')]},'substatus':{'type':Sequelize[_0xa8c5('0x5')](0x3c)},'substatusAt':{'type':Sequelize[_0xa8c5('0x4')]},'firstMsgDirection':{'type':Sequelize[_0xa8c5('0x8')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xa8c5('0x4')]},'lastMsgDirection':{'type':Sequelize[_0xa8c5('0x8')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xa8c5('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 30a60ab..b9b8cbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.MailInteractionId\x20IN\x20?','groupBy','MailInteractionId','Setting','findOne','enableEmailPreview','show','params','rawAttributes','includeAll','include','merge','options','create','body','describe','addMessage','ids','omit','getMessages','nolimit','pick','$gte','format','YYYY-MM-DD\x20HH:mm:ss','findAll','inlineCss','rows','spread','emit','mailInteractionTags:save','removeTags','download','unix','join','server','tmp','root','files','attachments','transcript-%d-%s.zip','Attachment','Attachments','Messages','subject','get','each','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','bcc','Bcc','basename','existsSync','build','message%d.eml','unlinkSync','eml-format','zip-dir','moment','bluebird','path','lodash','squel','juice','ioredis','../../components/parsers/qs','../../config/logger','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailInteraction.socket','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','update','destroy','then','error','stack','name','send','fullname','TagIds','Tags','split','forEach','push','MailMessage','out','-id','trimStart','plainBody','catch','index','map','MailInteraction','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','field','color','tools_tags','u.id','ui.MailInteractionId','from','user_has_mail_interactions','left_join','users','u.id\x20=\x20ui.UserId','select','mail_interactions','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','mail_accounts','a.id\x20=\x20i.MailAccountId','mail_messages','me.MailInteractionId\x20=\x20i.id','it.MailInteractionId\x20=\x20i.id','expr','search','parseSearch','conditions','length','find','unreadMessages','value','having','`\x20>\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','type','text','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','start','some','compact','isEmpty','i.MailAccountId\x20IN\x20?','concat','createdAt','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','isEmail','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','SELECT','clone','i.id','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','DESC','t.id\x20IN\x20?','resolve','MailAccountId','i.MailAccountId\x20IS\x20NOT\x20NULL','role','getMailAccounts','i.MailAccountId\x20IS\x20NULL','agent','toString','sequelize','keyBy','a.key','Account.key','Account.mandatoryDisposition','CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20(\x27%\x27\x20+\x20a.email\x20+\x20\x27%\x27)\x20THEN\x20SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201)\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName','i.createdAt','i.updatedAt','i.closed','i.attach','i.lastMsgAt','i.subject','i.disposition','i.secondDisposition','i.thirdDisposition','i.ContactId','i.MailAccountId','Contact.firstName','c.email'];(function(_0xbb091,_0x3fe7ee){var _0x467a04=function(_0x3a978d){while(--_0x3a978d){_0xbb091['push'](_0xbb091['shift']());}};_0x467a04(++_0x3fe7ee);}(_0xb10b,0x12a));var _0xbb10=function(_0x5e8b46,_0x21eb4a){_0x5e8b46=_0x5e8b46-0x0;var _0x252814=_0xb10b[_0x5e8b46];return _0x252814;};'use strict';var emlformat=require(_0xbb10('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbb10('0x1'));var moment=require(_0xbb10('0x2'));var BPromise=require(_0xbb10('0x3'));var util=require('util');var path=require(_0xbb10('0x4'));var fs=require('fs');var _=require(_0xbb10('0x5'));var squel=require(_0xbb10('0x6'));var juice=require(_0xbb10('0x7'));var Redis=require(_0xbb10('0x8'));var qs=require(_0xbb10('0x9'));var as=require('../../components/parsers/advancedSearch');var logger=require(_0xbb10('0xa'))(_0xbb10('0xb'));var config=require('../../config/environment');var db=require(_0xbb10('0xc'))['db'];config[_0xbb10('0xd')]=_[_0xbb10('0xe')](config[_0xbb10('0xd')],{'host':_0xbb10('0xf'),'port':0x18eb});var socket=require(_0xbb10('0x10'))(new Redis(config[_0xbb10('0xd')]));require(_0xbb10('0x11'))['register'](socket);function respondWithStatusCode(_0x4e47f8,_0x20bd61){_0x20bd61=_0x20bd61||0xcc;return function(_0x118a74){if(_0x118a74){return _0x4e47f8[_0xbb10('0x12')](_0x20bd61);}return _0x4e47f8['status'](_0x20bd61)[_0xbb10('0x13')]();};}function respondWithResult(_0x5be7e0,_0x44fb19){_0x44fb19=_0x44fb19||0xc8;return function(_0x916a32){if(_0x916a32){return _0x5be7e0[_0xbb10('0x14')](_0x44fb19)[_0xbb10('0x15')](_0x916a32);}};}function respondWithFilteredResult(_0x442548,_0x147230){return function(_0x58a612){if(_0x58a612){var _0x26e021=typeof _0x147230[_0xbb10('0x16')]===_0xbb10('0x17')&&typeof _0x147230[_0xbb10('0x18')]===_0xbb10('0x17');var _0x2f2ebf=_0x58a612[_0xbb10('0x19')];var _0x36b5e8=_0x26e021?0x0:_0x147230[_0xbb10('0x16')];var _0x2b184e=_0x26e021?_0x58a612['count']:_0x147230[_0xbb10('0x16')]+_0x147230[_0xbb10('0x18')];var _0x133ac2;if(_0x2b184e>=_0x2f2ebf){_0x2b184e=_0x2f2ebf;_0x133ac2=0xc8;}else{_0x133ac2=0xce;}_0x442548[_0xbb10('0x14')](_0x133ac2);return _0x442548[_0xbb10('0x1a')](_0xbb10('0x1b'),_0x36b5e8+'-'+_0x2b184e+'/'+_0x2f2ebf)[_0xbb10('0x15')](_0x58a612);}return null;};}function saveUpdates(_0x30efc6){return function(_0xbf2906){if(_0xbf2906){return _0xbf2906[_0xbb10('0x1c')](_0x30efc6)['then'](function(_0x5ff0cf){return _0x5ff0cf;});}return null;};}function removeEntity(_0x19f48d){return function(_0x388fab){if(_0x388fab){return _0x388fab[_0xbb10('0x1d')]()[_0xbb10('0x1e')](function(){_0x19f48d[_0xbb10('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x12f888){return function(_0x12ef77){if(!_0x12ef77){_0x12f888['sendStatus'](0x194);}return _0x12ef77;};}function handleError(_0x4c4b0d,_0x8e2b97){_0x8e2b97=_0x8e2b97||0x1f4;return function(_0x311abe){logger[_0xbb10('0x1f')](_0x311abe[_0xbb10('0x20')]);if(_0x311abe[_0xbb10('0x21')]){delete _0x311abe[_0xbb10('0x21')];}_0x4c4b0d[_0xbb10('0x14')](_0x8e2b97)[_0xbb10('0x22')](_0x311abe);};}function getInteractionUsers(_0x7f2377,_0x395404){return new BPromise(function(_0x3ba6cd,_0x26ad93){try{if(_0x395404[_0x7f2377['id']]){_0x7f2377['Users']=_['map'](_0x395404[_0x7f2377['id']],function(_0x4fb5e0){return{'id':_0x4fb5e0['id'],'fullname':_0x4fb5e0[_0xbb10('0x23')]};});}}catch(_0x3c5ae7){_0x26ad93(_0x3c5ae7);}_0x3ba6cd(_0x7f2377);});}function getInteractionTags(_0x2c89b9,_0x4e25ff){return new BPromise(function(_0x2fdde9,_0x24d586){try{if(_0x2c89b9[_0xbb10('0x24')]){_0x2c89b9[_0xbb10('0x25')]=[];_0x2c89b9[_0xbb10('0x24')][_0xbb10('0x26')](',')[_0xbb10('0x27')](function(_0x4aabb9){_0x2c89b9[_0xbb10('0x25')][_0xbb10('0x28')](_0x4e25ff[_0x4aabb9]);});}delete _0x2c89b9[_0xbb10('0x24')];}catch(_0x2e0249){_0x24d586(_0x2e0249);}_0x2fdde9(_0x2c89b9);});}function getLastMessageText(_0x1d30aa){return new BPromise(function(_0x2ff4c1,_0x5d5c80){return db[_0xbb10('0x29')]['findOne']({'where':{'$and':[{'MailInteractionId':_0x1d30aa['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0xbb10('0x2a')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':['plainBody'],'order':_0xbb10('0x2b'),'raw':!![]})[_0xbb10('0x1e')](function(_0x1b59f9){if(_0x1b59f9&&_0x1b59f9['plainBody']){_0x1d30aa['lastMsgText']=_[_0xbb10('0x2c')](_0x1b59f9[_0xbb10('0x2d')]);}_0x2ff4c1(_0x1d30aa);})['catch'](function(_0x359ad4){_0x5d5c80(_0x359ad4);});});}function updateMailInteraction(_0x37dde7,_0x2f653f,_0x1c0b57,_0x37a83f){return new BPromise(function(_0x138bc6,_0xf85197){return getInteractionUsers(_0x37dde7,_0x1c0b57)['then'](function(_0x25acb3){return getInteractionTags(_0x25acb3,_0x2f653f);})[_0xbb10('0x1e')](function(_0x441d15){if(_0x37a83f){_0x138bc6(getLastMessageText(_0x441d15));}else{_0x138bc6(_0x441d15);}})[_0xbb10('0x2e')](function(_0xfb2c5e){_0xf85197(_0xfb2c5e);});});}exports[_0xbb10('0x2f')]=function(_0x188cbd,_0x10202c){var _0x3c8d7d={},_0x56943c={},_0x2b5352={'count':0x0,'rows':[]};var _0x150107=_[_0xbb10('0x30')](db[_0xbb10('0x31')]['rawAttributes'],function(_0x111762){return{'name':_0x111762['fieldName'],'type':_0x111762['type'][_0xbb10('0x32')]};});_0x56943c[_0xbb10('0x33')]=_[_0xbb10('0x30')](_0x150107,_0xbb10('0x21'));_0x56943c[_0xbb10('0x34')]=_[_0xbb10('0x35')](_0x188cbd['query']);_0x56943c[_0xbb10('0x36')]=_[_0xbb10('0x37')](_0x56943c['model'],_0x56943c['query']);_0x3c8d7d['attributes']=_[_0xbb10('0x37')](_0x56943c[_0xbb10('0x33')],qs[_0xbb10('0x38')](_0x188cbd['query'][_0xbb10('0x38')]));_0x3c8d7d[_0xbb10('0x39')]=_0x3c8d7d[_0xbb10('0x39')]['length']?_0x3c8d7d[_0xbb10('0x39')]:_0x56943c[_0xbb10('0x33')];if(!_0x188cbd[_0xbb10('0x34')][_0xbb10('0x3a')]('nolimit')){_0x3c8d7d[_0xbb10('0x18')]=qs[_0xbb10('0x18')](_0x188cbd['query'][_0xbb10('0x18')]);_0x3c8d7d[_0xbb10('0x16')]=qs[_0xbb10('0x16')](_0x188cbd[_0xbb10('0x34')][_0xbb10('0x16')]);}_0x3c8d7d[_0xbb10('0x3b')]=qs['sort'](_0x188cbd[_0xbb10('0x34')][_0xbb10('0x3c')]);_0x3c8d7d[_0xbb10('0x3d')]=qs[_0xbb10('0x36')](_['pick'](_0x188cbd[_0xbb10('0x34')],_0x56943c[_0xbb10('0x36')]),_0x150107);var _0x23dc18=[];var _0x403beb=squel['select']()[_0xbb10('0x3e')]('id')[_0xbb10('0x3e')]('name')['field'](_0xbb10('0x3f'))['from'](_0xbb10('0x40'));var _0x180933=squel['select']()[_0xbb10('0x3e')](_0xbb10('0x41'))[_0xbb10('0x3e')]('u.fullname')[_0xbb10('0x3e')](_0xbb10('0x42'))[_0xbb10('0x43')](_0xbb10('0x44'),'ui')[_0xbb10('0x45')](_0xbb10('0x46'),'u',_0xbb10('0x47'));var _0x3efa96=squel[_0xbb10('0x48')]()[_0xbb10('0x43')](_0xbb10('0x49'),'i')[_0xbb10('0x45')]('cm_contacts','c',_0xbb10('0x4a'))[_0xbb10('0x45')]('users','o',_0xbb10('0x4b'))[_0xbb10('0x45')](_0xbb10('0x4c'),'a',_0xbb10('0x4d'))[_0xbb10('0x45')](_0xbb10('0x4e'),'me',_0xbb10('0x4f'))['left_join']('mail_interaction_has_tags','it',_0xbb10('0x50'))[_0xbb10('0x45')](_0xbb10('0x40'),'t','t.id\x20=\x20it.TagId');var _0x5f0c12=squel[_0xbb10('0x51')]();var _0x34cf4e=[];var _0x1bd054=squel[_0xbb10('0x51')]();var _0x10159b;if(_0x188cbd[_0xbb10('0x34')][_0xbb10('0x52')]){_0x10159b=as[_0xbb10('0x53')](_0x188cbd[_0xbb10('0x34')][_0xbb10('0x52')]);var _0x550111=_0x10159b['sqlOperator'];for(var _0x412e13=0x0;_0x412e13<_0x10159b[_0xbb10('0x54')][_0xbb10('0x55')];_0x412e13++){var _0xb014b0=_0x10159b[_0xbb10('0x54')][_0x412e13];var _0x440f9e='i';var _0x358e7e=_[_0xbb10('0x56')](_0x150107,[_0xbb10('0x21'),_0xb014b0[_0xbb10('0x3e')]]);if(!_0x358e7e){switch(_0xb014b0[_0xbb10('0x3e')]){case _0xbb10('0x57'):if(_0xb014b0[_0xbb10('0x58')]==0x1){_0x3efa96[_0xbb10('0x59')]('`'+_0xb014b0[_0xbb10('0x3e')]+'`\x20=\x200');}else{_0x3efa96[_0xbb10('0x59')]('`'+_0xb014b0['field']+_0xbb10('0x5a'));}break;case _0xbb10('0x5b'):if(_0xb014b0[_0xbb10('0x5c')]===_0xbb10('0x5d')){if(_0xb014b0[_0xbb10('0x58')][_0xbb10('0x26')]('\x20')[_0xbb10('0x55')]>0x1){_0x5f0c12[_0x550111](_0xbb10('0x5e'),qs[_0xbb10('0x5f')](_0xb014b0[_0xbb10('0x58')]),null);}else{var _0x44a056='%'+_0xb014b0[_0xbb10('0x58')]+'%';_0x5f0c12[_0x550111](_0xbb10('0x60'),_0x44a056,_0x44a056,_0x44a056);}}else{_0x358e7e=_[_0xbb10('0x56')](_0x150107,[_0xbb10('0x21'),'ContactId']);_0xb014b0[_0xbb10('0x3e')]=_0xbb10('0x61');_0x155dc5=as[_0xbb10('0x62')](_0x440f9e,_0x358e7e[_0xbb10('0x63')],_0xb014b0);_0x5f0c12[_0x550111](_0x155dc5[_0xbb10('0x64')],_0x155dc5[_0xbb10('0x58')]['start'],_0x155dc5[_0xbb10('0x58')][_0xbb10('0x13')]);}break;case _0xbb10('0x65'):var _0x14fed3=_0xb014b0[_0xbb10('0x58')][_0xbb10('0x26')](',')[_0xbb10('0x30')](function(_0x12ec18){return Number(_0x12ec18);});_0x14fed3[_0xbb10('0x27')](function(_0x40c4fb){_0x1bd054['or'](_0xbb10('0x66'),'%,'+_0x40c4fb+',%');});_0x34cf4e=_[_0xbb10('0x67')](_0x34cf4e,_0x14fed3);break;case _0xbb10('0x68'):if(_0xb014b0['operator']==='$substring'){_0x5f0c12[_0x550111](_0xbb10('0x69'),'%'+_0xb014b0[_0xbb10('0x58')]+'%',null);}else{_0x358e7e=_[_0xbb10('0x56')](_0x150107,[_0xbb10('0x21'),'UserId']);_0xb014b0['field']=_0xbb10('0x6a');_0x155dc5=as[_0xbb10('0x62')](_0x440f9e,_0x358e7e[_0xbb10('0x63')],_0xb014b0);_0x5f0c12[_0x550111](_0x155dc5[_0xbb10('0x64')],_0x155dc5[_0xbb10('0x58')][_0xbb10('0x6b')],_0x155dc5[_0xbb10('0x58')]['end']);}break;case _0xbb10('0x2d'):_0x155dc5=as[_0xbb10('0x62')]('me',null,_0xb014b0);_0x5f0c12[_0x550111](_0x155dc5['text'],_0x155dc5['value']['start'],_0x155dc5[_0xbb10('0x58')][_0xbb10('0x13')]);break;}}else{var _0x155dc5=as['buildExpression'](_0x440f9e,_0x358e7e['type'],_0xb014b0);_0x5f0c12[_0x550111](_0x155dc5['text'],_0x155dc5[_0xbb10('0x58')][_0xbb10('0x6b')],_0x155dc5[_0xbb10('0x58')]['end']);}}}else{var _0xa1bbd9=_(_0x188cbd[_0xbb10('0x34')])['keys']()['map'](function(_0x27d7b9){return _[_0xbb10('0x6c')](_0x150107,[_0xbb10('0x21'),_0x27d7b9])?_0x27d7b9:undefined;})[_0xbb10('0x6d')]()['value']();if(!_[_0xbb10('0x6e')](_0xa1bbd9)){_0xa1bbd9[_0xbb10('0x27')](function(_0xa7179d){if(_0xa7179d==='MailAccountId'){_0x3efa96[_0xbb10('0x3d')](_0xbb10('0x6f'),[][_0xbb10('0x70')](_0x188cbd['query'][_0xa7179d]));}else if(_0xa7179d===_0xbb10('0x71')){var _0x31e85e=JSON[_0xbb10('0x72')](_0x188cbd[_0xbb10('0x34')][_0xa7179d])['$gte'];var _0x251417=JSON[_0xbb10('0x72')](_0x188cbd[_0xbb10('0x34')][_0xa7179d])[_0xbb10('0x73')];_0x3efa96['where'](_0xbb10('0x74'),_0x31e85e,_0x251417);}else{if(_0x188cbd[_0xbb10('0x34')][_0xa7179d]===_0xbb10('0x75')){_0x3efa96[_0xbb10('0x3d')]('i.'+_0xa7179d+_0xbb10('0x76'));}else{_0x3efa96[_0xbb10('0x3d')]('i.'+_0xa7179d+_0xbb10('0x77'),_0x188cbd['query'][_0xa7179d]);}}});}if(_0x188cbd['query']['read']){if(_0x188cbd[_0xbb10('0x34')][_0xbb10('0x78')]==0x1){_0x3efa96[_0xbb10('0x59')]('`unreadMessages`\x20=\x200');}else{_0x3efa96['having'](_0xbb10('0x79'));}}if(_0x188cbd[_0xbb10('0x34')][_0xbb10('0x7a')]){_0x34cf4e=_[_0xbb10('0x7b')](_0x188cbd[_0xbb10('0x34')][_0xbb10('0x7a')])?_0x188cbd['query'][_0xbb10('0x7a')]:new Array(_0x188cbd[_0xbb10('0x34')][_0xbb10('0x7a')]);_0x34cf4e[_0xbb10('0x27')](function(_0x2aaaa6){_0x1bd054['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x2aaaa6+',%');});}if(_0x188cbd['query']['filter']){var _0x329da7=_0x188cbd[_0xbb10('0x34')][_0xbb10('0x7c')][_0xbb10('0x7d')]('\x5c','\x5c\x5c')[_0xbb10('0x7d')](/'/g,'\x27\x27');if(qs[_0xbb10('0x7e')](_0x329da7)){_0x5f0c12['or']('i.id\x20LIKE\x20?',_0x329da7+'%');}else if(qs[_0xbb10('0x7f')](_0x329da7)){_0x5f0c12['or']('c.email\x20LIKE\x20?',_0x329da7+'%');}else{_0x5f0c12['or']('MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x329da7))['or'](_0xbb10('0x80'),qs[_0xbb10('0x5f')](_0x329da7));}}}_0x3efa96[_0xbb10('0x3d')](_0x5f0c12);_0x3efa96[_0xbb10('0x81')]('i.id');var _0x122d38={'type':db['Sequelize']['QueryTypes'][_0xbb10('0x82')],'raw':!![]};var _0xfe3db0=_0x3efa96[_0xbb10('0x83')]();_0xfe3db0[_0xbb10('0x3e')](_0xbb10('0x84'));_0xfe3db0['field'](_0xbb10('0x85'),_0xbb10('0x57'));if(_0x3c8d7d[_0xbb10('0x3b')]){_0x3c8d7d[_0xbb10('0x3b')][_0xbb10('0x27')](function(_0x27f42f){var _0x174395=_0x27f42f[0x0]==='contactName'?_0x27f42f[0x0]:'i.'+_0x27f42f[0x0];_0x3efa96[_0xbb10('0x3b')](_0x174395,_0x27f42f[0x1]===_0xbb10('0x86')?![]:!![]);});}if(!_[_0xbb10('0x6e')](_0x34cf4e)){_0x3efa96[_0xbb10('0x59')](_0x1bd054);_0xfe3db0[_0xbb10('0x3d')](_0xbb10('0x87'),_0x34cf4e);}BPromise[_0xbb10('0x88')]()[_0xbb10('0x1e')](function(){if(!_0x10159b){if(_0x188cbd['query'][_0xbb10('0x89')])return;_0xfe3db0[_0xbb10('0x3d')](_0xbb10('0x8a'));_0x3efa96['where']('i.MailAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x188cbd['user'][_0xbb10('0x8b')]!=='agent')return;return _0x188cbd['user'][_0xbb10('0x8c')]({'attributes':['id'],'raw':!![]})[_0xbb10('0x1e')](function(_0x33ff06){if(_[_0xbb10('0x6e')](_0x33ff06)){_0xfe3db0[_0xbb10('0x3d')](_0xbb10('0x8d'));_0x3efa96[_0xbb10('0x3d')](_0xbb10('0x8d'));}else{_0xfe3db0[_0xbb10('0x3d')]('i.MailAccountId\x20IN\x20?',_[_0xbb10('0x30')](_0x33ff06,'id'));_0x3efa96[_0xbb10('0x3d')](_0xbb10('0x6f'),_[_0xbb10('0x30')](_0x33ff06,'id'));}});})['then'](function(){if(_0x188cbd['user'][_0xbb10('0x8b')]===_0xbb10('0x8e')&&!_0x10159b&&!_0x188cbd[_0xbb10('0x34')][_0xbb10('0x89')])return[];return db['sequelize'][_0xbb10('0x34')](_0xfe3db0[_0xbb10('0x8f')](),_0x122d38);})[_0xbb10('0x1e')](function(_0xf7b3e1){_0x2b5352[_0xbb10('0x19')]=_0xf7b3e1['length'];if(_0x2b5352['count']===0x0)return[];return db[_0xbb10('0x90')][_0xbb10('0x34')](_0x403beb[_0xbb10('0x8f')](),_0x122d38)['then'](function(_0x256b35){_0x23dc18=_[_0xbb10('0x91')](_0x256b35,'id');_0x122d38=_['merge'](_0x122d38,{'model':db['MailInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x188cbd[_0xbb10('0x34')][_0xbb10('0x38')]){_0x3c8d7d[_0xbb10('0x39')]['forEach'](function(_0x32d5a5){_0x3efa96[_0xbb10('0x3e')]('i.'+_0x32d5a5);});}else{_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x85'),_0xbb10('0x57'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x92'),_0xbb10('0x93'));_0x3efa96[_0xbb10('0x3e')]('a.mandatoryDisposition',_0xbb10('0x94'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x95'),_0xbb10('0x96'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x84'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x97'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x98'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x99'));_0x3efa96['field']('i.closedAt');_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x9a'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x9b'));_0x3efa96[_0xbb10('0x3e')]('i.lastMsgDirection');_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x9c'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x9d'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0x9e'));_0x3efa96['field'](_0xbb10('0x9f'));_0x3efa96[_0xbb10('0x3e')]('i.substatus');_0x3efa96[_0xbb10('0x3e')]('i.to');_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa0'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa1'));_0x3efa96[_0xbb10('0x3e')]('i.UserId');_0x3efa96[_0xbb10('0x3e')]('c.firstName',_0xbb10('0xa2'));_0x3efa96[_0xbb10('0x3e')]('c.lastName','Contact.lastName');_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa3'),_0xbb10('0xa4'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa5'),_0xbb10('0xa6'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa7'),_0xbb10('0xa8'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xa9'),'Contact.fax');_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xaa'),_0xbb10('0xab'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xac'),_0xbb10('0xad'));_0x3efa96[_0xbb10('0x3e')](_0xbb10('0xae'),_0xbb10('0x24'));}if(_0x3c8d7d[_0xbb10('0x18')])_0x3efa96[_0xbb10('0x18')](_0x3c8d7d[_0xbb10('0x18')]);if(_0x3c8d7d['offset'])_0x3efa96[_0xbb10('0x16')](_0x3c8d7d['offset']);return db[_0xbb10('0x90')][_0xbb10('0x34')](_0x3efa96[_0xbb10('0x8f')](),_0x122d38);})[_0xbb10('0x1e')](function(_0x38d369){if(_0x38d369['length']>0x0)_0x180933[_0xbb10('0x3d')](_0xbb10('0xaf'),_[_0xbb10('0x30')](_0x38d369,'id'));return db[_0xbb10('0x90')][_0xbb10('0x34')](_0x180933[_0xbb10('0x8f')](),_0x122d38)['then'](function(_0x4bd470){var _0x5cc9d7=_[_0xbb10('0xb0')](_0x4bd470,_0xbb10('0xb1'));var _0x57d5a1=[];return db[_0xbb10('0xb2')][_0xbb10('0xb3')]({'attributes':['enableEmailPreview'],'raw':!![]})[_0xbb10('0x1e')](function(_0xaede56){var _0x5642c3=_0xaede56[_0xbb10('0xb4')];_0x38d369['forEach'](function(_0x34cec7){_0x57d5a1[_0xbb10('0x28')](updateMailInteraction(_0x34cec7,_0x23dc18,_0x5cc9d7,_0x5642c3));});return BPromise['all'](_0x57d5a1);});});});})[_0xbb10('0x1e')](function(_0x28cc74){_0x2b5352['rows']=_0x28cc74;return _0x2b5352;})['then'](respondWithFilteredResult(_0x10202c,_0x3c8d7d))[_0xbb10('0x2e')](handleError(_0x10202c,null));};exports[_0xbb10('0xb5')]=function(_0x3e0e34,_0x3299bc){var _0x3ceb77={'raw':![],'where':{'id':_0x3e0e34[_0xbb10('0xb6')]['id']}},_0x4c3bdc={};_0x4c3bdc[_0xbb10('0x33')]=_[_0xbb10('0x35')](db['MailInteraction'][_0xbb10('0xb7')]);_0x4c3bdc[_0xbb10('0x34')]=_[_0xbb10('0x35')](_0x3e0e34[_0xbb10('0x34')]);_0x4c3bdc[_0xbb10('0x36')]=_[_0xbb10('0x37')](_0x4c3bdc[_0xbb10('0x33')],_0x4c3bdc[_0xbb10('0x34')]);_0x3ceb77[_0xbb10('0x39')]=_['intersection'](_0x4c3bdc['model'],qs[_0xbb10('0x38')](_0x3e0e34[_0xbb10('0x34')][_0xbb10('0x38')]));_0x3ceb77[_0xbb10('0x39')]=_0x3ceb77[_0xbb10('0x39')][_0xbb10('0x55')]?_0x3ceb77[_0xbb10('0x39')]:_0x4c3bdc[_0xbb10('0x33')];if(_0x3e0e34[_0xbb10('0x34')][_0xbb10('0xb8')]){_0x3ceb77[_0xbb10('0xb9')]=[{'all':!![]}];}_0x3ceb77=_[_0xbb10('0xba')]({},_0x3ceb77,_0x3e0e34[_0xbb10('0xbb')]);return db['MailInteraction'][_0xbb10('0x56')](_0x3ceb77)[_0xbb10('0x1e')](handleEntityNotFound(_0x3299bc,null))[_0xbb10('0x1e')](respondWithResult(_0x3299bc,null))[_0xbb10('0x2e')](handleError(_0x3299bc,null));};exports[_0xbb10('0xbc')]=function(_0xd9284e,_0x4258fc){return db[_0xbb10('0x31')][_0xbb10('0xbc')](_0xd9284e[_0xbb10('0xbd')],{})[_0xbb10('0x1e')](respondWithResult(_0x4258fc,0xc9))['catch'](handleError(_0x4258fc,null));};exports[_0xbb10('0x1c')]=function(_0x5e1ac5,_0x3faaca){if(_0x5e1ac5[_0xbb10('0xbd')]['id']){delete _0x5e1ac5[_0xbb10('0xbd')]['id'];}return db[_0xbb10('0x31')][_0xbb10('0x56')]({'where':{'id':_0x5e1ac5[_0xbb10('0xb6')]['id']}})['then'](handleEntityNotFound(_0x3faaca,null))[_0xbb10('0x1e')](saveUpdates(_0x5e1ac5['body'],null))[_0xbb10('0x1e')](respondWithResult(_0x3faaca,null))[_0xbb10('0x2e')](handleError(_0x3faaca,null));};exports[_0xbb10('0x1d')]=function(_0x576bb6,_0x2b652c){return db[_0xbb10('0x31')][_0xbb10('0x56')]({'where':{'id':_0x576bb6[_0xbb10('0xb6')]['id']}})[_0xbb10('0x1e')](handleEntityNotFound(_0x2b652c,null))[_0xbb10('0x1e')](removeEntity(_0x2b652c,null))[_0xbb10('0x2e')](handleError(_0x2b652c,null));};exports[_0xbb10('0xbe')]=function(_0x589565,_0x3696b3){return db['MailInteraction'][_0xbb10('0xbe')]()[_0xbb10('0x1e')](respondWithResult(_0x3696b3,null))[_0xbb10('0x2e')](handleError(_0x3696b3,null));};exports[_0xbb10('0xbf')]=function(_0x44c229,_0x40271f){return db[_0xbb10('0x29')]['find']({'where':{'id':_0x44c229[_0xbb10('0xb6')]['id']}})['then'](handleEntityNotFound(_0x40271f,null))['then'](function(_0x1513e0){if(_0x1513e0){return _0x1513e0[_0xbb10('0xbf')](_0x44c229[_0xbb10('0xbd')][_0xbb10('0xc0')],_[_0xbb10('0xc1')](_0x44c229[_0xbb10('0xbd')],['ids','id'])||{});}})[_0xbb10('0x1e')](respondWithResult(_0x40271f,null))[_0xbb10('0x2e')](handleError(_0x40271f,null));};exports[_0xbb10('0xc2')]=function(_0xb1b7c8,_0x136520){var _0x28127c={'raw':![],'where':{}};var _0x528aff={};var _0xdfdc42={'count':0x0,'rows':[]};return db[_0xbb10('0x31')][_0xbb10('0xb3')]({'where':{'id':_0xb1b7c8[_0xbb10('0xb6')]['id']}})[_0xbb10('0x1e')](handleEntityNotFound(_0x136520,null))[_0xbb10('0x1e')](function(_0x2764e1){if(_0x2764e1){_0x528aff['model']=_[_0xbb10('0x35')](db['MailMessage'][_0xbb10('0xb7')]);_0x528aff['query']=_['keys'](_0xb1b7c8[_0xbb10('0x34')]);_0x528aff[_0xbb10('0x36')]=_[_0xbb10('0x37')](_0x528aff[_0xbb10('0x33')],_0x528aff[_0xbb10('0x34')]);_0x28127c['attributes']=_[_0xbb10('0x37')](_0x528aff['model'],qs['fields'](_0xb1b7c8['query'][_0xbb10('0x38')]));_0x28127c[_0xbb10('0x39')]=_0x28127c[_0xbb10('0x39')][_0xbb10('0x55')]?_0x28127c[_0xbb10('0x39')]:_0x528aff['model'];if(!_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0x3a')](_0xbb10('0xc3'))){_0x28127c[_0xbb10('0x18')]=qs[_0xbb10('0x18')](_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0x18')]);_0x28127c['offset']=qs['offset'](_0xb1b7c8['query'][_0xbb10('0x16')]);}_0x28127c[_0xbb10('0x3b')]=qs[_0xbb10('0x3c')](_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0x3c')]);_0x28127c[_0xbb10('0x3d')]=qs[_0xbb10('0x36')](_[_0xbb10('0xc4')](_0xb1b7c8[_0xbb10('0x34')],_0x528aff[_0xbb10('0x36')]));_0x28127c['where']['MailInteractionId']=_0x2764e1['id'];if(_0xb1b7c8['query'][_0xbb10('0x7c')]){_0x28127c[_0xbb10('0x3d')]=_[_0xbb10('0xba')](_0x28127c['where'],{'$or':_[_0xbb10('0x30')](_0x28127c[_0xbb10('0x39')],function(_0x2c638d){var _0x290280={};_0x290280[_0x2c638d]={'$like':'%'+_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0x7c')]+'%'};return _0x290280;})});}if(_0xb1b7c8['query']['$gte']){var _0x356660=_0xb1b7c8['query'][_0xbb10('0xc5')][_0xbb10('0x26')](',');var _0x152ca9={};_0x152ca9[_0x356660[0x0]]={'$gte':moment(_0x356660[0x1])[_0xbb10('0xc6')](_0xbb10('0xc7'))};_0x28127c[_0xbb10('0x3d')]=_[_0xbb10('0xba')](_0x28127c[_0xbb10('0x3d')],_0x152ca9);}_0x28127c=_[_0xbb10('0xba')]({},_0x28127c,_0xb1b7c8[_0xbb10('0xbb')]);return db['MailMessage'][_0xbb10('0x19')]({'where':_0x28127c['where']})[_0xbb10('0x1e')](function(_0x5547fa){_0xdfdc42[_0xbb10('0x19')]=_0x5547fa;if(_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0xb8')]){_0x28127c[_0xbb10('0xb9')]=[{'all':!![]}];}return db['MailMessage'][_0xbb10('0xc8')](_0x28127c);})['then'](function(_0xfe1154){if(_0xb1b7c8[_0xbb10('0x34')][_0xbb10('0xc9')]==='true'){for(var _0x298167=0x0;_0x298167<_0xfe1154[_0xbb10('0x55')];_0x298167++){_0xfe1154[_0x298167][_0xbb10('0xbd')]=juice(_0xfe1154[_0x298167][_0xbb10('0xbd')]);}}_0xdfdc42[_0xbb10('0xca')]=_0xfe1154;return _0xdfdc42;});}})[_0xbb10('0x1e')](respondWithFilteredResult(_0x136520,_0x28127c))['catch'](handleError(_0x136520,null));};exports['addTags']=function(_0x522a88,_0x26a752){return db['MailInteraction'][_0xbb10('0x56')]({'where':{'id':_0x522a88['params']['id']}})[_0xbb10('0x1e')](handleEntityNotFound(_0x26a752,null))[_0xbb10('0x1e')](function(_0x385ad3){if(_0x385ad3){return _0x385ad3['setTags'](_0x522a88['body'][_0xbb10('0xc0')],_[_0xbb10('0xc1')](_0x522a88[_0xbb10('0xbd')],['ids','id'])||{})[_0xbb10('0xcb')](function(){return db[_0xbb10('0x65')][_0xbb10('0xc8')]({'attributes':['id','name','color'],'where':{'id':_0x522a88['body'][_0xbb10('0xc0')]}});})['then'](function(_0x3dfbcd){socket[_0xbb10('0xcc')](_0xbb10('0xcd'),{'id':Number(_0x522a88[_0xbb10('0xb6')]['id']),'tags':_0x3dfbcd||[]});return{'id':Number(_0x522a88[_0xbb10('0xb6')]['id']),'tags':_0x3dfbcd||[]};});}})[_0xbb10('0x1e')](respondWithResult(_0x26a752,null))[_0xbb10('0x2e')](handleError(_0x26a752,null));};exports[_0xbb10('0xce')]=function(_0x2746eb,_0x431792){return db[_0xbb10('0x31')]['find']({'where':{'id':_0x2746eb[_0xbb10('0xb6')]['id']}})[_0xbb10('0x1e')](handleEntityNotFound(_0x431792,null))['then'](function(_0x14ef50){if(_0x14ef50){return _0x14ef50['removeTags'](_0x2746eb['query'][_0xbb10('0xc0')]);}})[_0xbb10('0x1e')](respondWithStatusCode(_0x431792,null))[_0xbb10('0x2e')](handleError(_0x431792,null));};exports[_0xbb10('0xcf')]=function(_0x99c4,_0x4ca4ce){var _0x161171=moment()[_0xbb10('0xd0')]()['toString']();var _0xa45726=path[_0xbb10('0xd1')](config['root'],_0xbb10('0xd2'),'files',_0xbb10('0xd3'));var _0x8e8049=path[_0xbb10('0xd1')](config[_0xbb10('0xd4')],_0xbb10('0xd2'),_0xbb10('0xd5'),_0xbb10('0xd6'));var _0x56f902=path[_0xbb10('0xd1')](_0xa45726,_0x161171);var _0x4720a1=util[_0xbb10('0xc6')](_0xbb10('0xd7'),_0x99c4[_0xbb10('0xb6')]['id'],_0x161171);var _0x1301e3=path['join'](_0xa45726,_0x4720a1);var _0x550301=[];if(_0x99c4['query'][_0xbb10('0xd6')]){_0x550301[_0xbb10('0x28')]({'model':db[_0xbb10('0xd8')],'as':_0xbb10('0xd9'),'raw':!![]});}var _0x57700b=[{'model':db[_0xbb10('0x29')],'as':_0xbb10('0xda'),'attributes':['id',_0xbb10('0xbd'),'from','to','cc','bcc',_0xbb10('0xdb'),'createdAt'],'where':{'secret':![]},'order':qs[_0xbb10('0x3c')]('id'),'include':_0x550301}];return db[_0xbb10('0x31')][_0xbb10('0x56')]({'where':{'id':_0x99c4[_0xbb10('0xb6')]['id']},'include':_0x57700b})[_0xbb10('0x1e')](handleEntityNotFound(_0x4ca4ce,null))[_0xbb10('0x1e')](function(_0x1fe250){if(_0x1fe250&&_0x1fe250['Messages']){var _0x424371=_0x1fe250[_0xbb10('0xdc')]({'plain':!![]});fs['mkdirSync'](_0x56f902);return BPromise[_0xbb10('0xdd')](_0x424371[_0xbb10('0xda')],function(_0x32f261,_0x5b11a2){var _0x4b490a={'from':_0x32f261['from'],'to':_0x32f261['to'],'subject':_0x32f261[_0xbb10('0xdb')],'html':_0x32f261[_0xbb10('0xbd')],'headers':{'Date':moment(_0x32f261['createdAt'])[_0xbb10('0xc6')](_0xbb10('0xde'))},'attachments':[]};if(_0x32f261['cc']){_0x4b490a[_0xbb10('0xdf')]['Cc']=_0x32f261['cc'];}if(_0x32f261[_0xbb10('0xe0')]){_0x4b490a[_0xbb10('0xdf')][_0xbb10('0xe1')]=_0x32f261[_0xbb10('0xe0')];}return new BPromise(function(_0x48f0eb,_0x304603){if(_0x32f261['Attachments']){for(var _0x5a7c4e=0x0;_0x5a7c4e<_0x32f261['Attachments'][_0xbb10('0x55')];_0x5a7c4e++){var _0x572d73=_0x32f261['Attachments'][_0x5a7c4e];var _0x1f09f1=path['join'](_0x8e8049,_0x572d73[_0xbb10('0xe2')]);if(fs[_0xbb10('0xe3')](_0x1f09f1)){_0x4b490a[_0xbb10('0xd6')]['push']({'name':_0x572d73['name'],'contentType':_0x572d73[_0xbb10('0x63')],'data':fs['readFileSync'](_0x1f09f1)});}}}emlformat[_0xbb10('0xe4')](_0x4b490a,function(_0x211172,_0x589ecb){if(_0x211172)return _0x304603(_0x211172);fs['writeFileSync'](path[_0xbb10('0xd1')](_0x56f902,util[_0xbb10('0xc6')](_0xbb10('0xe5'),_0x5b11a2)),_0x589ecb);return _0x48f0eb(_0x589ecb);});});})['then'](function(){return new BPromise(function(_0x4f4aa8,_0x426a4f){zipdir(_0x56f902,{'saveTo':_0x1301e3},function(_0x22f153,_0x4d47cc){if(_0x22f153)return _0x426a4f(_0x22f153);return _0x4f4aa8(_0x4d47cc);});})[_0xbb10('0x1e')](function(){return new BPromise(function(_0x203e5a,_0xe88e90){rimraf(_0x56f902,function(_0x4845b5){if(_0x4845b5)_0xe88e90(_0x4845b5);return _0x203e5a();});});})[_0xbb10('0x1e')](function(){return _0x4ca4ce[_0xbb10('0xcf')](_0x1301e3,_0x4720a1,function(_0x166f4f){if(!_0x166f4f)fs[_0xbb10('0xe6')](_0x1301e3);});});});}else{return _0x4ca4ce[_0xbb10('0x12')](0xc8);}})[_0xbb10('0x2e')](handleError(_0x4ca4ce,null));};
\ No newline at end of file
+var _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(_0x452f0e,_0x1c4169){var _0x4c56c0=function(_0x7fef05){while(--_0x7fef05){_0x452f0e['push'](_0x452f0e['shift']());}};_0x4c56c0(++_0x1c4169);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b349a,_0x22222c){_0x1b349a=_0x1b349a-0x0;var _0x5d1f7c=_0xa9e0[_0x1b349a];return _0x5d1f7c;};'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 12647cb..b2e0bf0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x157c=['../../mysqldb','MailMessage','setMaxListeners','update','remove','then','setDataValue','Users','findAll','unreadMessages','length','emit','catch','exports','events','MailInteraction'];(function(_0x562f3b,_0x4c65ae){var _0x1edd55=function(_0xe67e06){while(--_0xe67e06){_0x562f3b['push'](_0x562f3b['shift']());}};_0x1edd55(++_0x4c65ae);}(_0x157c,0x15e));var _0xc157=function(_0xac151d,_0x4ea1d2){_0xac151d=_0xac151d-0x0;var _0x111dba=_0x157c[_0xac151d];return _0x111dba;};'use strict';var EventEmitter=require(_0xc157('0x0'));var MailInteraction=require('../../mysqldb')['db'][_0xc157('0x1')];var MailMessage=require(_0xc157('0x2'))['db'][_0xc157('0x3')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0xc157('0x4')](0x0);var events={'afterCreate':'save','afterUpdate':_0xc157('0x5'),'afterDestroy':_0xc157('0x6')};function emitEvent(_0x5f369e){return function(_0x25ea61,_0x281afe,_0xdd7431){_0x25ea61['getUsers']({'attributes':['id'],'raw':!![]})[_0xc157('0x7')](function(_0x1a7923){_0x25ea61[_0xc157('0x8')](_0xc157('0x9'),_0x1a7923['map'](function(_0x51548b){return{'id':_0x51548b['id']};}));return MailMessage[_0xc157('0xa')]({'where':{'MailInteractionId':_0x25ea61['id'],'direction':'in','read':![]},'raw':!![]});})[_0xc157('0x7')](function(_0x1de482){_0x25ea61[_0xc157('0x8')](_0xc157('0xb'),_0x1de482[_0xc157('0xc')]);MailInteractionEvents[_0xc157('0xd')](_0x5f369e+':'+_0x25ea61['id'],_0x25ea61);MailInteractionEvents[_0xc157('0xd')](_0x5f369e,_0x25ea61);_0xdd7431(null);})[_0xc157('0xe')](_0xdd7431(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailInteraction['hook'](e,emitEvent(event));}}module[_0xc157('0xf')]=MailInteractionEvents;
\ No newline at end of file
+var _0x7c55=['map','findAll','then','setDataValue','unreadMessages','length','emit','catch','hook','exports','events','../../mysqldb','MailInteraction','MailMessage','save','remove','Users'];(function(_0x5f0089,_0x227e2c){var _0x193892=function(_0x24051f){while(--_0x24051f){_0x5f0089['push'](_0x5f0089['shift']());}};_0x193892(++_0x227e2c);}(_0x7c55,0x180));var _0x57c5=function(_0x53166b,_0x2c6363){_0x53166b=_0x53166b-0x0;var _0x421ae6=_0x7c55[_0x53166b];return _0x421ae6;};'use strict';var EventEmitter=require(_0x57c5('0x0'));var MailInteraction=require(_0x57c5('0x1'))['db'][_0x57c5('0x2')];var MailMessage=require(_0x57c5('0x1'))['db'][_0x57c5('0x3')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x57c5('0x4'),'afterUpdate':'update','afterDestroy':_0x57c5('0x5')};function emitEvent(_0x3719a4){return function(_0x174f88,_0x1b5302,_0x1be252){_0x174f88['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x4d39b1){_0x174f88['setDataValue'](_0x57c5('0x6'),_0x4d39b1[_0x57c5('0x7')](function(_0x25aeda){return{'id':_0x25aeda['id']};}));return MailMessage[_0x57c5('0x8')]({'where':{'MailInteractionId':_0x174f88['id'],'direction':'in','read':![]},'raw':!![]});})[_0x57c5('0x9')](function(_0x515f62){_0x174f88[_0x57c5('0xa')](_0x57c5('0xb'),_0x515f62[_0x57c5('0xc')]);MailInteractionEvents[_0x57c5('0xd')](_0x3719a4+':'+_0x174f88['id'],_0x174f88);MailInteractionEvents['emit'](_0x3719a4,_0x174f88);_0x1be252(null);})[_0x57c5('0xe')](_0x1be252(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailInteraction[_0x57c5('0xf')](e,emitEvent(event));}}module[_0x57c5('0x10')]=MailInteractionEvents;
\ No newline at end of file
index ca4f294..c777616 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8f2=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailInteraction.attributes','MailInteraction','mail_interactions','fti_mail_interactions','FULLTEXT','substatus','substatusAt','YYYY-MM-DD\x20HH:mm:ss','closed','format','changed','closedAt','MailMessage','update','then','catch','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger'];(function(_0x4839a2,_0x1f67eb){var _0x465147=function(_0x4eae2e){while(--_0x4eae2e){_0x4839a2['push'](_0x4839a2['shift']());}};_0x465147(++_0x1f67eb);}(_0xd8f2,0xbb));var _0x2d8f=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xd8f2[_0x3947c9];return _0x2e7871;};'use strict';var _=require('lodash');var util=require(_0x2d8f('0x0'));var logger=require(_0x2d8f('0x1'))(_0x2d8f('0x2'));var moment=require(_0x2d8f('0x3'));var BPromise=require(_0x2d8f('0x4'));var rp=require(_0x2d8f('0x5'));var fs=require('fs');var path=require(_0x2d8f('0x6'));var rimraf=require(_0x2d8f('0x7'));var config=require(_0x2d8f('0x8'));var attributes=require(_0x2d8f('0x9'));module['exports']=function(_0x3c063f,_0xa184fa){return _0x3c063f['define'](_0x2d8f('0xa'),attributes,{'tableName':_0x2d8f('0xb'),'paranoid':![],'indexes':[{'name':_0x2d8f('0xc'),'fields':['subject','to'],'type':_0x2d8f('0xd')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x57aa8f,_0x5eecbd,_0x19d5c6){if(_0x57aa8f[_0x2d8f('0xe')]){_0x57aa8f[_0x2d8f('0xf')]=moment()['format'](_0x2d8f('0x10'));}if(_0x57aa8f[_0x2d8f('0x11')]){_0x57aa8f['closedAt']=moment()[_0x2d8f('0x12')](_0x2d8f('0x10'));}_0x19d5c6(null,_0x5eecbd);},'beforeUpdate':function(_0x2c6f55,_0x1ae697,_0xea7c03){if(_0x2c6f55[_0x2d8f('0x13')](_0x2d8f('0xe'))){_0x2c6f55[_0x2d8f('0xf')]=_0x2c6f55[_0x2d8f('0xe')]?moment()[_0x2d8f('0x12')](_0x2d8f('0x10')):null;}if(_0x2c6f55[_0x2d8f('0x13')](_0x2d8f('0x11'))){_0x2c6f55[_0x2d8f('0x14')]=moment()[_0x2d8f('0x12')](_0x2d8f('0x10'));_0x2c6f55[_0x2d8f('0xe')]=null;_0x2c6f55[_0x2d8f('0xf')]=null;}_0xea7c03(null,_0x2c6f55);},'afterUpdate':function(_0xf67a1f,_0x1f2ad8,_0x5dba8d){var _0x453842=_0x3c063f['models'];var _0x371d75=_0xf67a1f['get']({'plain':!![]});if(_0x371d75['closed']){return _0x453842[_0x2d8f('0x15')][_0x2d8f('0x16')]({'read':!![]},{'where':{'MailInteractionId':_0x371d75['id']}})[_0x2d8f('0x17')](function(){_0x5dba8d();})[_0x2d8f('0x18')](function(_0x18cff7){_0x5dba8d(_0x18cff7);});}else{_0x5dba8d();}}},'charset':_0x2d8f('0x19'),'collate':_0x2d8f('0x1a')});};
\ No newline at end of file
+var _0x8dcd=['closedAt','substatus','changed','closed','update','then','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailInteraction.attributes','exports','define','MailInteraction','mail_interactions','subject','FULLTEXT','substatusAt','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x481657,_0x3f66e4){var _0x2e5568=function(_0x162875){while(--_0x162875){_0x481657['push'](_0x481657['shift']());}};_0x2e5568(++_0x3f66e4);}(_0x8dcd,0x1ee));var _0xd8dc=function(_0x12636e,_0x29aa88){_0x12636e=_0x12636e-0x0;var _0x3a3337=_0x8dcd[_0x12636e];return _0x3a3337;};'use strict';var _=require('lodash');var util=require(_0xd8dc('0x0'));var logger=require(_0xd8dc('0x1'))(_0xd8dc('0x2'));var moment=require(_0xd8dc('0x3'));var BPromise=require(_0xd8dc('0x4'));var rp=require(_0xd8dc('0x5'));var fs=require('fs');var path=require(_0xd8dc('0x6'));var rimraf=require(_0xd8dc('0x7'));var config=require(_0xd8dc('0x8'));var attributes=require(_0xd8dc('0x9'));module[_0xd8dc('0xa')]=function(_0x520f57,_0x226a4d){return _0x520f57[_0xd8dc('0xb')](_0xd8dc('0xc'),attributes,{'tableName':_0xd8dc('0xd'),'paranoid':![],'indexes':[{'name':'fti_mail_interactions','fields':[_0xd8dc('0xe'),'to'],'type':_0xd8dc('0xf')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x4ab1fa,_0x4cde4f,_0x12e5b3){if(_0x4ab1fa['substatus']){_0x4ab1fa[_0xd8dc('0x10')]=moment()[_0xd8dc('0x11')](_0xd8dc('0x12'));}if(_0x4ab1fa['closed']){_0x4ab1fa[_0xd8dc('0x13')]=moment()['format'](_0xd8dc('0x12'));}_0x12e5b3(null,_0x4cde4f);},'beforeUpdate':function(_0x54fad4,_0x495a89,_0x55ab7c){if(_0x54fad4['changed']('substatus')){_0x54fad4[_0xd8dc('0x10')]=_0x54fad4[_0xd8dc('0x14')]?moment()['format'](_0xd8dc('0x12')):null;}if(_0x54fad4[_0xd8dc('0x15')](_0xd8dc('0x16'))){_0x54fad4[_0xd8dc('0x13')]=moment()[_0xd8dc('0x11')](_0xd8dc('0x12'));_0x54fad4[_0xd8dc('0x14')]=null;_0x54fad4['substatusAt']=null;}_0x55ab7c(null,_0x54fad4);},'afterUpdate':function(_0x18d854,_0x12c65b,_0x7c2527){var _0x412f14=_0x520f57['models'];var _0x8eba8d=_0x18d854['get']({'plain':!![]});if(_0x8eba8d[_0xd8dc('0x16')]){return _0x412f14['MailMessage'][_0xd8dc('0x17')]({'read':!![]},{'where':{'MailInteractionId':_0x8eba8d['id']}})[_0xd8dc('0x18')](function(){_0x7c2527();})['catch'](function(_0x1e290a){_0x7c2527(_0x1e290a);});}else{_0x7c2527();}}},'charset':_0xd8dc('0x19'),'collate':_0xd8dc('0x1a')});};
\ No newline at end of file
index 3d8d430..1f1502a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf198=['socket.io-emitter','register','request','then','info','MailInteraction,\x20%s,\x20%s','request\x20sent','debug','MailInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','MailInteraction','update','body','options','attributes','limit','UpdateMailInteraction','where','spread','AddTags','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost'];(function(_0x21ff06,_0x59a73c){var _0x2e4a11=function(_0x2fc366){while(--_0x2fc366){_0x21ff06['push'](_0x21ff06['shift']());}};_0x2e4a11(++_0x59a73c);}(_0xf198,0xd1));var _0x8f19=function(_0x5b9049,_0x1ebc46){_0x5b9049=_0x5b9049-0x0;var _0x1fd946=_0xf198[_0x5b9049];return _0x1fd946;};'use strict';var _=require('lodash');var util=require(_0x8f19('0x0'));var moment=require('moment');var BPromise=require(_0x8f19('0x1'));var rs=require(_0x8f19('0x2'));var fs=require('fs');var Redis=require(_0x8f19('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x8f19('0x4'));var logger=require(_0x8f19('0x5'))(_0x8f19('0x6'));var config=require(_0x8f19('0x7'));var jayson=require(_0x8f19('0x8'));var client=jayson[_0x8f19('0x9')]['http']({'port':0x232a});config[_0x8f19('0xa')]=_[_0x8f19('0xb')](config[_0x8f19('0xa')],{'host':_0x8f19('0xc'),'port':0x18eb});var socket=require(_0x8f19('0xd'))(new Redis(config[_0x8f19('0xa')]));require('./mailInteraction.socket')[_0x8f19('0xe')](socket);function respondWithRpcPromise(_0x26171d,_0x1fe175,_0x4a5d1b){return new BPromise(function(_0x15f0d3,_0x3a1595){return client[_0x8f19('0xf')](_0x26171d,_0x4a5d1b)[_0x8f19('0x10')](function(_0x5b0b93){logger[_0x8f19('0x11')](_0x8f19('0x12'),_0x1fe175,_0x8f19('0x13'));logger[_0x8f19('0x14')](_0x8f19('0x15'),_0x1fe175,_0x8f19('0x13'),JSON[_0x8f19('0x16')](_0x5b0b93));if(_0x5b0b93[_0x8f19('0x17')]){if(_0x5b0b93['error'][_0x8f19('0x18')]===0x1f4){logger[_0x8f19('0x17')](_0x8f19('0x12'),_0x1fe175,_0x5b0b93[_0x8f19('0x17')][_0x8f19('0x19')]);return _0x3a1595(_0x5b0b93['error'][_0x8f19('0x19')]);}logger[_0x8f19('0x17')](_0x8f19('0x12'),_0x1fe175,_0x5b0b93[_0x8f19('0x17')][_0x8f19('0x19')]);return _0x15f0d3(_0x5b0b93[_0x8f19('0x17')]['message']);}else{logger['info'](_0x8f19('0x12'),_0x1fe175,'request\x20sent');_0x15f0d3(_0x5b0b93['result']['message']);}})[_0x8f19('0x1a')](function(_0xdf88f2){logger[_0x8f19('0x17')](_0x8f19('0x12'),_0x1fe175,_0xdf88f2);_0x3a1595(_0xdf88f2);});});}exports['UpdateMailInteraction']=function(_0x63b6df){var _0x546384=this;return new Promise(function(_0x1142c5,_0x16d351){return db[_0x8f19('0x1b')][_0x8f19('0x1c')](_0x63b6df[_0x8f19('0x1d')],{'raw':_0x63b6df[_0x8f19('0x1e')]?_0x63b6df[_0x8f19('0x1e')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x63b6df[_0x8f19('0x1e')]?_0x63b6df[_0x8f19('0x1e')]['where']||null:null,'attributes':_0x63b6df[_0x8f19('0x1e')]?_0x63b6df['options'][_0x8f19('0x1f')]||null:null,'limit':_0x63b6df['options']?_0x63b6df[_0x8f19('0x1e')][_0x8f19('0x20')]||null:null})[_0x8f19('0x10')](function(_0x2ab0cc){logger[_0x8f19('0x11')](_0x8f19('0x21'),_0x63b6df);logger['debug']('UpdateMailInteraction',_0x63b6df,JSON[_0x8f19('0x16')](_0x2ab0cc));_0x1142c5(_0x2ab0cc);})[_0x8f19('0x1a')](function(_0x41b5d5){logger['error'](_0x8f19('0x21'),_0x41b5d5[_0x8f19('0x19')],_0x63b6df);_0x16d351(_0x546384[_0x8f19('0x17')](0x1f4,_0x41b5d5[_0x8f19('0x19')]));});});};exports['AddTagsToMailInteraction']=function(_0x1de08e){return new Promise(function(_0x271438,_0x282980){return db[_0x8f19('0x1b')]['find']({'where':_0x1de08e[_0x8f19('0x1e')]?_0x1de08e[_0x8f19('0x1e')][_0x8f19('0x22')]||null:null})[_0x8f19('0x10')](function(_0x3bdc92){if(_0x3bdc92){return _0x3bdc92['addTags'](_0x1de08e[_0x8f19('0x1d')]['ids'],_['omit'](_0x1de08e[_0x8f19('0x1d')],['ids','id'])||{});}})[_0x8f19('0x23')](function(_0x38a06c){logger['info'](_0x8f19('0x24'),_0x1de08e);logger[_0x8f19('0x14')](_0x8f19('0x24'),_0x1de08e,JSON['stringify'](_0x38a06c));_0x271438(_0x38a06c);})['catch'](function(_0x1fb0dd){logger[_0x8f19('0x17')](_0x8f19('0x24'),_0x1fb0dd[_0x8f19('0x19')],_0x1de08e);_0x282980(_this[_0x8f19('0x17')](0x1f4,_0x1fb0dd[_0x8f19('0x19')]));});});};
\ No newline at end of file
+var _0x77d4=['ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./mailInteraction.socket','register','then','MailInteraction,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','MailInteraction','update','body','options','raw','where','attributes','info','UpdateMailInteraction','AddTagsToMailInteraction','addTags','ids','omit','spread','AddTags','debug','util','bluebird'];(function(_0x2fe4e6,_0x39f94e){var _0x331d75=function(_0x346bdf){while(--_0x346bdf){_0x2fe4e6['push'](_0x2fe4e6['shift']());}};_0x331d75(++_0x39f94e);}(_0x77d4,0x108));var _0x477d=function(_0x144ae9,_0x4f551f){_0x144ae9=_0x144ae9-0x0;var _0x2bae3d=_0x77d4[_0x144ae9];return _0x2bae3d;};'use strict';var _=require('lodash');var util=require(_0x477d('0x0'));var moment=require('moment');var BPromise=require(_0x477d('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x477d('0x2'));var db=require(_0x477d('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x477d('0x4'));var config=require(_0x477d('0x5'));var jayson=require(_0x477d('0x6'));var client=jayson[_0x477d('0x7')][_0x477d('0x8')]({'port':0x232a});config[_0x477d('0x9')]=_['defaults'](config['redis'],{'host':_0x477d('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x477d('0xb'))[_0x477d('0xc')](socket);function respondWithRpcPromise(_0x204cb9,_0x2c326c,_0x1cef1c){return new BPromise(function(_0x58ff29,_0x932cc9){return client['request'](_0x204cb9,_0x1cef1c)[_0x477d('0xd')](function(_0x462ac1){logger['info'](_0x477d('0xe'),_0x2c326c,_0x477d('0xf'));logger['debug']('MailInteraction,\x20%s,\x20%s,\x20%s',_0x2c326c,_0x477d('0xf'),JSON[_0x477d('0x10')](_0x462ac1));if(_0x462ac1['error']){if(_0x462ac1[_0x477d('0x11')][_0x477d('0x12')]===0x1f4){logger['error']('MailInteraction,\x20%s,\x20%s',_0x2c326c,_0x462ac1[_0x477d('0x11')]['message']);return _0x932cc9(_0x462ac1[_0x477d('0x11')][_0x477d('0x13')]);}logger[_0x477d('0x11')]('MailInteraction,\x20%s,\x20%s',_0x2c326c,_0x462ac1[_0x477d('0x11')][_0x477d('0x13')]);return _0x58ff29(_0x462ac1[_0x477d('0x11')][_0x477d('0x13')]);}else{logger['info'](_0x477d('0xe'),_0x2c326c,'request\x20sent');_0x58ff29(_0x462ac1[_0x477d('0x14')][_0x477d('0x13')]);}})[_0x477d('0x15')](function(_0x458489){logger[_0x477d('0x11')](_0x477d('0xe'),_0x2c326c,_0x458489);_0x932cc9(_0x458489);});});}exports['UpdateMailInteraction']=function(_0x33db7a){var _0x49c442=this;return new Promise(function(_0xe934a7,_0x24a6d5){return db[_0x477d('0x16')][_0x477d('0x17')](_0x33db7a[_0x477d('0x18')],{'raw':_0x33db7a[_0x477d('0x19')]?_0x33db7a[_0x477d('0x19')][_0x477d('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x33db7a[_0x477d('0x19')]?_0x33db7a[_0x477d('0x19')][_0x477d('0x1b')]||null:null,'attributes':_0x33db7a[_0x477d('0x19')]?_0x33db7a[_0x477d('0x19')][_0x477d('0x1c')]||null:null,'limit':_0x33db7a['options']?_0x33db7a[_0x477d('0x19')]['limit']||null:null})[_0x477d('0xd')](function(_0x2506d8){logger[_0x477d('0x1d')](_0x477d('0x1e'),_0x33db7a);logger['debug'](_0x477d('0x1e'),_0x33db7a,JSON[_0x477d('0x10')](_0x2506d8));_0xe934a7(_0x2506d8);})[_0x477d('0x15')](function(_0x48ee5e){logger['error'](_0x477d('0x1e'),_0x48ee5e[_0x477d('0x13')],_0x33db7a);_0x24a6d5(_0x49c442[_0x477d('0x11')](0x1f4,_0x48ee5e['message']));});});};exports[_0x477d('0x1f')]=function(_0x297d15){return new Promise(function(_0x74ebb4,_0xe4dd40){return db[_0x477d('0x16')]['find']({'where':_0x297d15[_0x477d('0x19')]?_0x297d15[_0x477d('0x19')][_0x477d('0x1b')]||null:null})[_0x477d('0xd')](function(_0x32c5d7){if(_0x32c5d7){return _0x32c5d7[_0x477d('0x20')](_0x297d15[_0x477d('0x18')][_0x477d('0x21')],_[_0x477d('0x22')](_0x297d15[_0x477d('0x18')],[_0x477d('0x21'),'id'])||{});}})[_0x477d('0x23')](function(_0x138c6d){logger[_0x477d('0x1d')](_0x477d('0x24'),_0x297d15);logger[_0x477d('0x25')](_0x477d('0x24'),_0x297d15,JSON[_0x477d('0x10')](_0x138c6d));_0x74ebb4(_0x138c6d);})[_0x477d('0x15')](function(_0x266dbf){logger['error'](_0x477d('0x24'),_0x266dbf['message'],_0x297d15);_0xe4dd40(_this[_0x477d('0x11')](0x1f4,_0x266dbf[_0x477d('0x13')]));});});};
\ No newline at end of file
index 8198b76..4b6bbdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc51e=['removeListener','register','length','./mailInteraction.events','update','emit'];(function(_0x882c43,_0x3f9678){var _0x297932=function(_0x3437a8){while(--_0x3437a8){_0x882c43['push'](_0x882c43['shift']());}};_0x297932(++_0x3f9678);}(_0xc51e,0x123));var _0xec51=function(_0x2f3738,_0x115a52){_0x2f3738=_0x2f3738-0x0;var _0x3dfa2c=_0xc51e[_0x2f3738];return _0x3dfa2c;};'use strict';var MailInteractionEvents=require(_0xec51('0x0'));var events=['save','remove',_0xec51('0x1')];function createListener(_0x620a3e,_0x169643){return function(_0x25d566){_0x169643[_0xec51('0x2')](_0x620a3e,_0x25d566);};}function removeListener(_0x2b7523,_0x4df4d6){return function(){MailInteractionEvents[_0xec51('0x3')](_0x2b7523,_0x4df4d6);};}exports[_0xec51('0x4')]=function(_0x47000c){for(var _0x6b6576=0x0,_0x16df7b=events[_0xec51('0x5')];_0x6b6576<_0x16df7b;_0x6b6576++){var _0x3d46e5=events[_0x6b6576];var _0x3795b4=createListener('mailInteraction:'+_0x3d46e5,_0x47000c);MailInteractionEvents['on'](_0x3d46e5,_0x3795b4);}};
\ No newline at end of file
+var _0xcbbe=['update','emit','removeListener','register','length','mailInteraction:','./mailInteraction.events','save'];(function(_0x1e7b16,_0x4607a1){var _0x37fadc=function(_0x1fc9ce){while(--_0x1fc9ce){_0x1e7b16['push'](_0x1e7b16['shift']());}};_0x37fadc(++_0x4607a1);}(_0xcbbe,0x176));var _0xecbb=function(_0x819464,_0x46fc91){_0x819464=_0x819464-0x0;var _0x49dcc0=_0xcbbe[_0x819464];return _0x49dcc0;};'use strict';var MailInteractionEvents=require(_0xecbb('0x0'));var events=[_0xecbb('0x1'),'remove',_0xecbb('0x2')];function createListener(_0x145bbb,_0x5637f1){return function(_0x330ff7){_0x5637f1[_0xecbb('0x3')](_0x145bbb,_0x330ff7);};}function removeListener(_0xda9e4f,_0x30e7f2){return function(){MailInteractionEvents[_0xecbb('0x4')](_0xda9e4f,_0x30e7f2);};}exports[_0xecbb('0x5')]=function(_0x1332c4){for(var _0x488264=0x0,_0x5191fe=events[_0xecbb('0x6')];_0x488264<_0x5191fe;_0x488264++){var _0x16dded=events[_0x488264];var _0x53af9a=createListener(_0xecbb('0x7')+_0x16dded,_0x1332c4);MailInteractionEvents['on'](_0x16dded,_0x53af9a);}};
\ No newline at end of file
index 868a80b..2cf18ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d9b=['put','/:id/accept','accept','/:id/reject','destroy','exports','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','./mailMessage.controller','isAuthenticated','index','/describe','describe','get','/:id','show','post','tracked','mailmessage:create','create','update'];(function(_0x2d2ca2,_0x51873f){var _0x48489d=function(_0x1a2cf7){while(--_0x1a2cf7){_0x2d2ca2['push'](_0x2d2ca2['shift']());}};_0x48489d(++_0x51873f);}(_0x9d9b,0x1e1));var _0xb9d9=function(_0x344dc4,_0x50eb33){_0x344dc4=_0x344dc4-0x0;var _0x3e722f=_0x9d9b[_0x344dc4];return _0x3e722f;};'use strict';var multer=require('multer');var util=require(_0xb9d9('0x0'));var path=require(_0xb9d9('0x1'));var timeout=require('connect-timeout');var express=require(_0xb9d9('0x2'));var router=express['Router']();var fs_extra=require(_0xb9d9('0x3'));var auth=require(_0xb9d9('0x4'));var interaction=require(_0xb9d9('0x5'));var config=require('../../config/environment');var controller=require(_0xb9d9('0x6'));router['get']('/',auth[_0xb9d9('0x7')](),controller[_0xb9d9('0x8')]);router['get'](_0xb9d9('0x9'),auth[_0xb9d9('0x7')](),controller[_0xb9d9('0xa')]);router[_0xb9d9('0xb')](_0xb9d9('0xc'),auth[_0xb9d9('0x7')](),controller[_0xb9d9('0xd')]);router['get']('/:id/download',auth['isAuthenticated'](),controller['download']);router[_0xb9d9('0xe')]('/',auth[_0xb9d9('0x7')](),interaction[_0xb9d9('0xf')]('mail',_0xb9d9('0x10')),controller[_0xb9d9('0x11')]);router['put'](_0xb9d9('0xc'),auth['isAuthenticated'](),controller[_0xb9d9('0x12')]);router[_0xb9d9('0x13')](_0xb9d9('0x14'),auth[_0xb9d9('0x7')](),controller[_0xb9d9('0x15')]);router[_0xb9d9('0x13')](_0xb9d9('0x16'),auth[_0xb9d9('0x7')](),controller['reject']);router['delete'](_0xb9d9('0xc'),auth[_0xb9d9('0x7')](),controller[_0xb9d9('0x17')]);module[_0xb9d9('0x18')]=router;
\ No newline at end of file
+var _0x9861=['post','mail','put','update','/:id/accept','accept','/:id/reject','delete','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/download'];(function(_0x5cdc6f,_0x509123){var _0x2c3758=function(_0xba130d){while(--_0xba130d){_0x5cdc6f['push'](_0x5cdc6f['shift']());}};_0x2c3758(++_0x509123);}(_0x9861,0x176));var _0x1986=function(_0x5eac89,_0x23d776){_0x5eac89=_0x5eac89-0x0;var _0x2666df=_0x9861[_0x5eac89];return _0x2666df;};'use strict';var multer=require(_0x1986('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x1986('0x1'));var express=require(_0x1986('0x2'));var router=express[_0x1986('0x3')]();var fs_extra=require(_0x1986('0x4'));var auth=require(_0x1986('0x5'));var interaction=require(_0x1986('0x6'));var config=require('../../config/environment');var controller=require(_0x1986('0x7'));router[_0x1986('0x8')]('/',auth[_0x1986('0x9')](),controller[_0x1986('0xa')]);router[_0x1986('0x8')](_0x1986('0xb'),auth[_0x1986('0x9')](),controller[_0x1986('0xc')]);router[_0x1986('0x8')](_0x1986('0xd'),auth['isAuthenticated'](),controller[_0x1986('0xe')]);router[_0x1986('0x8')](_0x1986('0xf'),auth[_0x1986('0x9')](),controller['download']);router[_0x1986('0x10')]('/',auth[_0x1986('0x9')](),interaction['tracked'](_0x1986('0x11'),'mailmessage:create'),controller['create']);router[_0x1986('0x12')](_0x1986('0xd'),auth[_0x1986('0x9')](),controller[_0x1986('0x13')]);router[_0x1986('0x12')](_0x1986('0x14'),auth[_0x1986('0x9')](),controller[_0x1986('0x15')]);router[_0x1986('0x12')](_0x1986('0x16'),auth['isAuthenticated'](),controller['reject']);router[_0x1986('0x17')](_0x1986('0xd'),auth['isAuthenticated'](),controller[_0x1986('0x18')]);module[_0x1986('0x19')]=router;
\ No newline at end of file
index 1372332..90af77d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58ff=['sequelize','lodash','exports','TEXT','long','medium','ENUM','out','STRING','INTEGER','BOOLEAN','Email'];(function(_0x205147,_0x2a415f){var _0x214c1b=function(_0xe16c58){while(--_0xe16c58){_0x205147['push'](_0x205147['shift']());}};_0x214c1b(++_0x2a415f);}(_0x58ff,0x180));var _0xf58f=function(_0x3dd964,_0x58452e){_0x3dd964=_0x3dd964-0x0;var _0x588bd6=_0x58ff[_0x3dd964];return _0x588bd6;};'use strict';var Sequelize=require(_0xf58f('0x0'));var _=require(_0xf58f('0x1'));module[_0xf58f('0x2')]={'body':{'type':Sequelize[_0xf58f('0x3')](_0xf58f('0x4')),'allowNull':![]},'plainBody':{'type':Sequelize[_0xf58f('0x3')](_0xf58f('0x5'))},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0xf58f('0x6')]('in','out'),'defaultValue':_0xf58f('0x7'),'allowNull':![]},'messageId':{'type':Sequelize[_0xf58f('0x8')](0x1fe)},'from':{'type':Sequelize[_0xf58f('0x8')]},'to':{'type':Sequelize[_0xf58f('0x3')](_0xf58f('0x4'))},'cc':{'type':Sequelize[_0xf58f('0x3')](_0xf58f('0x4'))},'bcc':{'type':Sequelize[_0xf58f('0x3')](_0xf58f('0x4'))},'subject':{'type':Sequelize['TEXT']},'sentAt':{'type':Sequelize['DATE']},'attach':{'type':Sequelize[_0xf58f('0x9')],'defaultValue':0x0},'secret':{'type':Sequelize[_0xf58f('0xa')],'defaultValue':![]},'readAt':{'type':Sequelize['DATE']},'originTo':{'type':Sequelize['TEXT']('long')},'originCc':{'type':Sequelize[_0xf58f('0x3')](_0xf58f('0x4'))},'originChannel':{'type':Sequelize['ENUM'](_0xf58f('0xb'),'Chat'),'defaultValue':_0xf58f('0xb'),'allowNull':![]}};
\ No newline at end of file
+var _0x7ca1=['Email','Chat','sequelize','TEXT','medium','out','STRING','long','DATE','INTEGER','BOOLEAN','ENUM'];(function(_0x17e298,_0x50b2ab){var _0x344aa8=function(_0x15c50){while(--_0x15c50){_0x17e298['push'](_0x17e298['shift']());}};_0x344aa8(++_0x50b2ab);}(_0x7ca1,0x9e));var _0x17ca=function(_0x1eafa3,_0x2e69df){_0x1eafa3=_0x1eafa3-0x0;var _0x16f60c=_0x7ca1[_0x1eafa3];return _0x16f60c;};'use strict';var Sequelize=require(_0x17ca('0x0'));var _=require('lodash');module['exports']={'body':{'type':Sequelize['TEXT']('long'),'allowNull':![]},'plainBody':{'type':Sequelize[_0x17ca('0x1')](_0x17ca('0x2'))},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0x17ca('0x3'),'allowNull':![]},'messageId':{'type':Sequelize[_0x17ca('0x4')](0x1fe)},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize[_0x17ca('0x1')](_0x17ca('0x5'))},'cc':{'type':Sequelize['TEXT'](_0x17ca('0x5'))},'bcc':{'type':Sequelize[_0x17ca('0x1')](_0x17ca('0x5'))},'subject':{'type':Sequelize[_0x17ca('0x1')]},'sentAt':{'type':Sequelize[_0x17ca('0x6')]},'attach':{'type':Sequelize[_0x17ca('0x7')],'defaultValue':0x0},'secret':{'type':Sequelize[_0x17ca('0x8')],'defaultValue':![]},'readAt':{'type':Sequelize[_0x17ca('0x6')]},'originTo':{'type':Sequelize['TEXT'](_0x17ca('0x5'))},'originCc':{'type':Sequelize[_0x17ca('0x1')](_0x17ca('0x5'))},'originChannel':{'type':Sequelize[_0x17ca('0x9')](_0x17ca('0xa'),_0x17ca('0xb')),'defaultValue':'Email','allowNull':![]}};
\ No newline at end of file
index 6d39036..4356fdf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5dea=['catch','status','json','offset','limit','undefined','count','Content-Range','update','then','destroy','end','stack','name','send','map','rawAttributes','fieldName','type','key','keys','query','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','MailMessage','includeAll','findAll','show','find','body','params','describe','create','direction','out','secret','split','MailAccount','findOne','CmList','List','CmContact','Contacts','updatedAt','DESC','Smtp','isNil','service','port','secure','authentication','user','pass','auth','attachments','join','root','basename','ListId','List\x20not\x20found','SendMail','format','YYYY-MM-DD\x20HH:mm:ss','stringify','accept','mail','read','readAt','UserId','agent','get','MailInteractionId','read1stAt','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','sequelize','Sequelize','SELECT','contact','fullname','internal','interface','SIP/%s','motionChannel','channel','event','EventManager','acceptmessage','reject','MailInteraction','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','ContactId','QueryTypes','User','rejectmessage','unix','toString','server','files','tmp','from','bcc','subject','Attachments','createdAt','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','push','build','download','unlinkSync','moment','bluebird','util','path','lodash','ioredis','html-to-text','../../components/parsers/qs','../../config/logger','api','mail-interactions','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./mailMessage.socket','register','jayson/promise','client','http','request','info','request\x20sent','MailMessage,\x20%s,\x20%s,\x20%s','error','code','MailMessage,\x20%s,\x20%s','message','result'];(function(_0x2f7231,_0x20670d){var _0x1a9d86=function(_0x27c00d){while(--_0x27c00d){_0x2f7231['push'](_0x2f7231['shift']());}};_0x1a9d86(++_0x20670d);}(_0x5dea,0x1c5));var _0xa5de=function(_0x23341f,_0xb59ff7){_0x23341f=_0x23341f-0x0;var _0x1d73a2=_0x5dea[_0x23341f];return _0x1d73a2;};'use strict';var emlformat=require('eml-format');var moment=require(_0xa5de('0x0'));var BPromise=require(_0xa5de('0x1'));var util=require(_0xa5de('0x2'));var path=require(_0xa5de('0x3'));var fs=require('fs');var _=require(_0xa5de('0x4'));var Redis=require(_0xa5de('0x5'));var htmlToText=require(_0xa5de('0x6'));var qs=require(_0xa5de('0x7'));var logger=require(_0xa5de('0x8'))(_0xa5de('0x9'));var interaction_log=require(_0xa5de('0x8'))(_0xa5de('0xa'));var config=require('../../config/environment');var db=require(_0xa5de('0xb'))['db'];config['redis']=_[_0xa5de('0xc')](config[_0xa5de('0xd')],{'host':_0xa5de('0xe'),'port':0x18eb});var socket=require(_0xa5de('0xf'))(new Redis(config[_0xa5de('0xd')]));require(_0xa5de('0x10'))[_0xa5de('0x11')](socket);var jayson=require(_0xa5de('0x12'));var client=jayson[_0xa5de('0x13')]['http']({'port':0x232c});var client9003=jayson['client']['http']({'port':0x232b});var client9002=jayson['client'][_0xa5de('0x14')]({'port':0x232a});function respondWithRpcPromise(_0x3374a5,_0x97b5bf,_0x17bd7c,_0x37c2e4){return new BPromise(function(_0x349b99,_0x214595){var _0x27736a=_0x37c2e4||client;return _0x27736a[_0xa5de('0x15')](_0x3374a5,_0x17bd7c)['then'](function(_0x2ea490){logger[_0xa5de('0x16')]('MailMessage,\x20%s,\x20%s',_0x97b5bf,_0xa5de('0x17'));logger['debug'](_0xa5de('0x18'),_0x97b5bf,_0xa5de('0x17'),JSON['stringify'](_0x2ea490));if(_0x2ea490[_0xa5de('0x19')]){if(_0x2ea490[_0xa5de('0x19')][_0xa5de('0x1a')]===0x1f4){logger[_0xa5de('0x19')](_0xa5de('0x1b'),_0x97b5bf,_0x2ea490[_0xa5de('0x19')][_0xa5de('0x1c')]);return _0x214595(_0x2ea490[_0xa5de('0x19')][_0xa5de('0x1c')]);}logger[_0xa5de('0x19')]('MailMessage,\x20%s,\x20%s',_0x97b5bf,_0x2ea490[_0xa5de('0x19')]['message']);return _0x349b99(_0x2ea490[_0xa5de('0x19')][_0xa5de('0x1c')]);}else{logger[_0xa5de('0x16')](_0xa5de('0x1b'),_0x97b5bf,_0xa5de('0x17'));_0x349b99(_0x2ea490[_0xa5de('0x1d')][_0xa5de('0x1c')]);}})[_0xa5de('0x1e')](function(_0x43dd45){logger['error'](_0xa5de('0x1b'),_0x97b5bf,_0x43dd45);_0x214595(_0x43dd45);});});}function respondWithResult(_0x10d7e9,_0x2af701){_0x2af701=_0x2af701||0xc8;return function(_0x32471e){if(_0x32471e){return _0x10d7e9[_0xa5de('0x1f')](_0x2af701)[_0xa5de('0x20')](_0x32471e);}};}function respondWithFilteredResult(_0x2d7279,_0x5e23dc){return function(_0x17617c){if(_0x17617c){var _0x1aae8b=typeof _0x5e23dc[_0xa5de('0x21')]==='undefined'&&typeof _0x5e23dc[_0xa5de('0x22')]===_0xa5de('0x23');var _0x23af58=_0x17617c[_0xa5de('0x24')];var _0x580623=_0x1aae8b?0x0:_0x5e23dc[_0xa5de('0x21')];var _0x5c0694=_0x1aae8b?_0x17617c[_0xa5de('0x24')]:_0x5e23dc[_0xa5de('0x21')]+_0x5e23dc[_0xa5de('0x22')];var _0x5f4c43;if(_0x5c0694>=_0x23af58){_0x5c0694=_0x23af58;_0x5f4c43=0xc8;}else{_0x5f4c43=0xce;}_0x2d7279[_0xa5de('0x1f')](_0x5f4c43);return _0x2d7279['set'](_0xa5de('0x25'),_0x580623+'-'+_0x5c0694+'/'+_0x23af58)[_0xa5de('0x20')](_0x17617c);}return null;};}function saveUpdates(_0x3d15a0){return function(_0x3e8d47){if(_0x3e8d47){return _0x3e8d47[_0xa5de('0x26')](_0x3d15a0)[_0xa5de('0x27')](function(_0x2dc0ff){return _0x2dc0ff;});}return null;};}function removeEntity(_0x4614a2){return function(_0x4504ba){if(_0x4504ba){return _0x4504ba[_0xa5de('0x28')]()[_0xa5de('0x27')](function(){_0x4614a2[_0xa5de('0x1f')](0xcc)[_0xa5de('0x29')]();});}};}function handleEntityNotFound(_0x3559af){return function(_0x206746){if(!_0x206746){_0x3559af['sendStatus'](0x194);}return _0x206746;};}function handleError(_0x3d8426,_0x377c64){_0x377c64=_0x377c64||0x1f4;return function(_0x17c1e9){logger[_0xa5de('0x19')](_0x17c1e9[_0xa5de('0x2a')]);if(_0x17c1e9[_0xa5de('0x2b')]){delete _0x17c1e9[_0xa5de('0x2b')];}_0x3d8426[_0xa5de('0x1f')](_0x377c64)[_0xa5de('0x2c')](_0x17c1e9);};}exports['index']=function(_0x405a29,_0x387f00){var _0x2c6421={},_0x110916={},_0x436d86={'count':0x0,'rows':[]};var _0x3c2573=_[_0xa5de('0x2d')](db['MailMessage'][_0xa5de('0x2e')],function(_0x4efe08){return{'name':_0x4efe08[_0xa5de('0x2f')],'type':_0x4efe08[_0xa5de('0x30')][_0xa5de('0x31')]};});_0x110916['model']=_[_0xa5de('0x2d')](_0x3c2573,_0xa5de('0x2b'));_0x110916['query']=_[_0xa5de('0x32')](_0x405a29[_0xa5de('0x33')]);_0x110916['filters']=_[_0xa5de('0x34')](_0x110916['model'],_0x110916[_0xa5de('0x33')]);_0x2c6421[_0xa5de('0x35')]=_['intersection'](_0x110916[_0xa5de('0x36')],qs['fields'](_0x405a29[_0xa5de('0x33')][_0xa5de('0x37')]));_0x2c6421[_0xa5de('0x35')]=_0x2c6421['attributes'][_0xa5de('0x38')]?_0x2c6421[_0xa5de('0x35')]:_0x110916['model'];if(!_0x405a29[_0xa5de('0x33')][_0xa5de('0x39')](_0xa5de('0x3a'))){_0x2c6421['limit']=qs[_0xa5de('0x22')](_0x405a29[_0xa5de('0x33')][_0xa5de('0x22')]);_0x2c6421[_0xa5de('0x21')]=qs[_0xa5de('0x21')](_0x405a29[_0xa5de('0x33')][_0xa5de('0x21')]);}_0x2c6421[_0xa5de('0x3b')]=qs[_0xa5de('0x3c')](_0x405a29['query'][_0xa5de('0x3c')]);_0x2c6421[_0xa5de('0x3d')]=qs[_0xa5de('0x3e')](_[_0xa5de('0x3f')](_0x405a29[_0xa5de('0x33')],_0x110916[_0xa5de('0x3e')]),_0x3c2573);if(_0x405a29[_0xa5de('0x33')][_0xa5de('0x40')]){_0x2c6421[_0xa5de('0x3d')]=_[_0xa5de('0x41')](_0x2c6421['where'],{'$or':_[_0xa5de('0x2d')](_0x3c2573,function(_0x304405){if(_0x304405[_0xa5de('0x30')]!==_0xa5de('0x42')){var _0x27a810={};_0x27a810[_0x304405[_0xa5de('0x2b')]]={'$like':'%'+_0x405a29['query'][_0xa5de('0x40')]+'%'};return _0x27a810;}})});}_0x2c6421=_['merge']({},_0x2c6421,_0x405a29[_0xa5de('0x43')]);var _0x165deb={'where':_0x2c6421['where']};return db[_0xa5de('0x44')][_0xa5de('0x24')](_0x165deb)[_0xa5de('0x27')](function(_0x3f7419){_0x436d86[_0xa5de('0x24')]=_0x3f7419;if(_0x405a29[_0xa5de('0x33')][_0xa5de('0x45')]){_0x2c6421['include']=[{'all':!![]}];}return db['MailMessage'][_0xa5de('0x46')](_0x2c6421);})[_0xa5de('0x27')](function(_0x26301a){_0x436d86['rows']=_0x26301a;return _0x436d86;})['then'](respondWithFilteredResult(_0x387f00,_0x2c6421))[_0xa5de('0x1e')](handleError(_0x387f00,null));};exports[_0xa5de('0x47')]=function(_0x3efc5b,_0x557e5c){var _0xa58e22={'raw':!![],'where':{'id':_0x3efc5b['params']['id']}},_0x2e303b={};_0x2e303b['model']=_[_0xa5de('0x32')](db[_0xa5de('0x44')]['rawAttributes']);_0x2e303b[_0xa5de('0x33')]=_['keys'](_0x3efc5b[_0xa5de('0x33')]);_0x2e303b[_0xa5de('0x3e')]=_['intersection'](_0x2e303b[_0xa5de('0x36')],_0x2e303b[_0xa5de('0x33')]);_0xa58e22['attributes']=_[_0xa5de('0x34')](_0x2e303b['model'],qs[_0xa5de('0x37')](_0x3efc5b[_0xa5de('0x33')][_0xa5de('0x37')]));_0xa58e22[_0xa5de('0x35')]=_0xa58e22['attributes'][_0xa5de('0x38')]?_0xa58e22[_0xa5de('0x35')]:_0x2e303b['model'];if(_0x3efc5b[_0xa5de('0x33')][_0xa5de('0x45')]){_0xa58e22['include']=[{'all':!![]}];}_0xa58e22=_[_0xa5de('0x41')]({},_0xa58e22,_0x3efc5b[_0xa5de('0x43')]);return db[_0xa5de('0x44')][_0xa5de('0x48')](_0xa58e22)['then'](handleEntityNotFound(_0x557e5c,null))[_0xa5de('0x27')](respondWithResult(_0x557e5c,null))[_0xa5de('0x1e')](handleError(_0x557e5c,null));};exports[_0xa5de('0x26')]=function(_0x1c70ef,_0x1ce1cc){if(_0x1c70ef[_0xa5de('0x49')]['id']){delete _0x1c70ef[_0xa5de('0x49')]['id'];}return db['MailMessage'][_0xa5de('0x48')]({'where':{'id':_0x1c70ef['params']['id']}})[_0xa5de('0x27')](handleEntityNotFound(_0x1ce1cc,null))[_0xa5de('0x27')](saveUpdates(_0x1c70ef[_0xa5de('0x49')],null))['then'](respondWithResult(_0x1ce1cc,null))[_0xa5de('0x1e')](handleError(_0x1ce1cc,null));};exports['destroy']=function(_0x2c6e82,_0x122061){return db['MailMessage'][_0xa5de('0x48')]({'where':{'id':_0x2c6e82[_0xa5de('0x4a')]['id']}})[_0xa5de('0x27')](handleEntityNotFound(_0x122061,null))[_0xa5de('0x27')](removeEntity(_0x122061,null))[_0xa5de('0x1e')](handleError(_0x122061,null));};exports['describe']=function(_0x1b3f10,_0x44af8f){return db[_0xa5de('0x44')][_0xa5de('0x4b')]()[_0xa5de('0x27')](respondWithResult(_0x44af8f,null))[_0xa5de('0x1e')](handleError(_0x44af8f,null));};exports['create']=function(_0x4a1179,_0x17dcf5){return db[_0xa5de('0x44')][_0xa5de('0x4c')](_0x4a1179[_0xa5de('0x49')])['then'](function(_0x4c3832){if(_0x4c3832){if(_0x4c3832[_0xa5de('0x4d')]===_0xa5de('0x4e')&&!_0x4c3832[_0xa5de('0x4f')]){var _0x4d2840,_0x3a749f,_0x1533af;if(_0x4a1179[_0xa5de('0x49')]['to']){_0x3a749f=_0x4a1179[_0xa5de('0x49')]['to'][_0xa5de('0x50')](',')[0x0];}return db[_0xa5de('0x51')][_0xa5de('0x52')]({'where':{'id':_0x4c3832['MailAccountId']},'include':[{'model':db[_0xa5de('0x53')],'as':_0xa5de('0x54'),'include':[{'model':db[_0xa5de('0x55')],'as':_0xa5de('0x56'),'where':{'email':_0x3a749f},'limit':0x1,'order':[[_0xa5de('0x57'),_0xa5de('0x58')]]}]},{'model':db['MailServerOut'],'as':_0xa5de('0x59'),'raw':!![]}]})['then'](function(_0x1a310e){_0x4d2840=_0x1a310e;if(_0x4d2840&&_0x4d2840['Smtp']){var _0x16f2e4={'tls':{'rejectUnauthorized':![]}};if(_[_0xa5de('0x5a')](_0x4d2840[_0xa5de('0x59')][_0xa5de('0x5b')])){_0x16f2e4['host']=_0x4d2840[_0xa5de('0x59')]['host'];_0x16f2e4[_0xa5de('0x5c')]=_0x4d2840[_0xa5de('0x59')][_0xa5de('0x5c')];_0x16f2e4[_0xa5de('0x5d')]=_0x4d2840[_0xa5de('0x59')][_0xa5de('0x5d')];if(_0x4d2840['Smtp'][_0xa5de('0x5e')]){_0x16f2e4['auth']={'user':_0x4d2840[_0xa5de('0x59')][_0xa5de('0x5f')],'pass':_0x4d2840[_0xa5de('0x59')][_0xa5de('0x60')]};}}else{_0x16f2e4['service']=_0x4d2840[_0xa5de('0x59')][_0xa5de('0x5b')];_0x16f2e4[_0xa5de('0x61')]={'user':_0x4d2840['Smtp'][_0xa5de('0x5f')],'pass':_0x4d2840[_0xa5de('0x59')]['pass']};_0x16f2e4[_0xa5de('0x5d')]=_0x4d2840[_0xa5de('0x59')][_0xa5de('0x5d')];}if(_0x4a1179[_0xa5de('0x49')][_0xa5de('0x62')]&&_0x4a1179[_0xa5de('0x49')][_0xa5de('0x62')][_0xa5de('0x38')]){for(var _0x23d22d=0x0;_0x23d22d<_0x4a1179[_0xa5de('0x49')]['attachments'][_0xa5de('0x38')];_0x23d22d+=0x1){_0x4a1179[_0xa5de('0x49')][_0xa5de('0x62')][_0x23d22d]={'filename':_0x4a1179[_0xa5de('0x49')][_0xa5de('0x62')][_0x23d22d][_0xa5de('0x2b')],'path':path[_0xa5de('0x63')](config[_0xa5de('0x64')],'server/files/attachments',_0x4a1179[_0xa5de('0x49')][_0xa5de('0x62')][_0x23d22d][_0xa5de('0x65')])};}}_0x1533af={'account':_0x16f2e4,'message':_0x4a1179[_0xa5de('0x49')]};return;}})['then'](function(){if(_0x4d2840[_0xa5de('0x54')]){if(_0x4d2840['List'][_0xa5de('0x56')][_0xa5de('0x38')]){return _0x4d2840['List'][_0xa5de('0x56')][0x0];}else{return db[_0xa5de('0x55')][_0xa5de('0x4c')](_[_0xa5de('0xc')](_0x4a1179[_0xa5de('0x49')],{'firstName':_0x4a1179[_0xa5de('0x49')]['to'],'email':_0x4a1179[_0xa5de('0x49')]['to'],'phone':_0x4a1179['body']['to'],'ListId':_0x4d2840[_0xa5de('0x66')]}));}}else{throw new Error(_0xa5de('0x67'));}})['then'](function(){if(_0x1533af){return respondWithRpcPromise(_0xa5de('0x68'),'sendMail',_0x1533af,client9003)[_0xa5de('0x27')](function(_0x178d03){return _0x4c3832['update']({'read':!![],'messageId':_0x178d03['messageId'],'sentAt':moment()[_0xa5de('0x69')](_0xa5de('0x6a'))});})['catch'](function(_0x2904ff){logger['error']('%s',JSON[_0xa5de('0x6b')](_0x2904ff));return _0x4c3832;});}return _0x4c3832;});}return _0x4c3832;}})['then'](respondWithResult(_0x17dcf5,0xc9))[_0xa5de('0x1e')](handleError(_0x17dcf5,null));};exports[_0xa5de('0x6c')]=function(_0x5bd6b1,_0x133dea){var _0x232899={'agent':{},'channel':_0xa5de('0x6d')};if(_0x5bd6b1['body']['id']){delete _0x5bd6b1['body']['id'];}_0x5bd6b1[_0xa5de('0x49')][_0xa5de('0x6e')]=!![];_0x5bd6b1['body'][_0xa5de('0x6f')]=moment()[_0xa5de('0x69')](_0xa5de('0x6a'));_0x5bd6b1['body'][_0xa5de('0x70')]=_0x5bd6b1[_0xa5de('0x49')]['UserId']||_0x5bd6b1[_0xa5de('0x5f')]['id'];_0x232899[_0xa5de('0x71')]['id']=_0x5bd6b1[_0xa5de('0x49')]['UserId'];return db[_0xa5de('0x44')][_0xa5de('0x48')]({'where':{'id':_0x5bd6b1[_0xa5de('0x4a')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x133dea,null))[_0xa5de('0x27')](saveUpdates(_0x5bd6b1[_0xa5de('0x49')],null))['then'](function(_0x203cad){if(_0x203cad){_0x232899[_0xa5de('0x1c')]=_0x203cad[_0xa5de('0x72')]({'plain':!![]});return db['MailInteraction']['find']({'where':{'id':_0x203cad[_0xa5de('0x73')]}});}return null;})[_0xa5de('0x27')](handleEntityNotFound(_0x133dea,null))[_0xa5de('0x27')](function(_0x4f9982){if(_0x4f9982){return _0x4f9982[_0xa5de('0x26')]({'UserId':_0x5bd6b1[_0xa5de('0x49')][_0xa5de('0x70')],'read1stAt':_[_0xa5de('0x5a')](_0x4f9982[_0xa5de('0x74')])?moment()[_0xa5de('0x69')](_0xa5de('0x6a')):undefined});}return null;})[_0xa5de('0x27')](function(_0x441d03){if(_0x441d03){_0x232899[_0xa5de('0x75')]=_0x441d03['get']({'plain':!![]});interaction_log[_0xa5de('0x16')](_0xa5de('0x76'),_0x5bd6b1[_0xa5de('0x5f')]['id'],_0x5bd6b1[_0xa5de('0x5f')]['name'],_0x5bd6b1[_0xa5de('0x5f')][_0xa5de('0x77')],_0x232899[_0xa5de('0x75')]['id'],_0x5bd6b1[_0xa5de('0x49')]?JSON[_0xa5de('0x6b')](_0x5bd6b1[_0xa5de('0x49')]):_0xa5de('0x78'));return respondWithRpcPromise('AcceptMessage',_0xa5de('0x79'),_0x232899);}return null;})[_0xa5de('0x27')](function(_0x425df1){var _0x41df00=_0xa5de('0x7a')+_0x425df1[_0xa5de('0x1c')]['ContactId'];return db[_0xa5de('0x7b')][_0xa5de('0x33')](_0x41df00,{'type':db[_0xa5de('0x7c')]['QueryTypes'][_0xa5de('0x7d')],'raw':!![]})[_0xa5de('0x27')](function(_0x338cf4){return _0x338cf4;});})[_0xa5de('0x27')](function(_0x1f84ec){if(_0x1f84ec){_0x232899[_0xa5de('0x1c')][_0xa5de('0x7e')]=_0x1f84ec[0x0];if(!_0x5bd6b1[_0xa5de('0x49')]['UserId'])return;return db['User'][_0xa5de('0x48')]({'where':{'id':_0x5bd6b1[_0xa5de('0x49')][_0xa5de('0x70')],'role':_0xa5de('0x71')},'attributes':['id',_0xa5de('0x2b'),_0xa5de('0x7f'),'email',_0xa5de('0x80')],'raw':!![]});}return null;})[_0xa5de('0x27')](function(_0x3f35f4){if(!_0x3f35f4)return null;_0x232899[_0xa5de('0x1c')][_0xa5de('0x71')]=_0x3f35f4;return _0x232899;})[_0xa5de('0x27')](function(_0x19c95d){if(_0x19c95d){if(_0x5bd6b1['body']['manual']){_0x232899[_0xa5de('0x1c')][_0xa5de('0x81')]=util[_0xa5de('0x69')](_0xa5de('0x82'),_0x5bd6b1[_0xa5de('0x5f')][_0xa5de('0x2b')]);_0x232899[_0xa5de('0x1c')]['channel']=_0x232899['channel'];_0x232899[_0xa5de('0x1c')][_0xa5de('0x83')]=_0x232899[_0xa5de('0x84')];_0x232899['message'][_0xa5de('0x85')]='accept';_0x232899[_0xa5de('0x1c')][_0xa5de('0x49')]=htmlToText['fromString'](_0x232899['message'][_0xa5de('0x49')]);return respondWithRpcPromise(_0xa5de('0x86'),_0xa5de('0x86'),{'event':_0xa5de('0x87'),'message':_0x232899[_0xa5de('0x1c')]},client9002)[_0xa5de('0x27')](function(){return _0x232899;});}return _0x232899;}return null;})[_0xa5de('0x27')](respondWithResult(_0x133dea,null))[_0xa5de('0x1e')](handleError(_0x133dea,null));};exports[_0xa5de('0x88')]=function(_0x410727,_0x3c7705){var _0x2fee43={'agent':{},'channel':_0xa5de('0x6d')};if(_0x410727[_0xa5de('0x49')]['id']){delete _0x410727[_0xa5de('0x49')]['id'];}_0x410727[_0xa5de('0x49')][_0xa5de('0x70')]=_0x410727[_0xa5de('0x49')][_0xa5de('0x70')]||_0x410727[_0xa5de('0x5f')]['id'];_0x2fee43[_0xa5de('0x71')]['id']=_0x410727['body'][_0xa5de('0x70')];return db[_0xa5de('0x44')][_0xa5de('0x48')]({'where':{'id':_0x410727[_0xa5de('0x4a')]['id'],'UserId':null}})[_0xa5de('0x27')](handleEntityNotFound(_0x3c7705,null))['then'](function(_0x3c9ba2){if(_0x3c9ba2){_0x2fee43[_0xa5de('0x1c')]=_0x3c9ba2[_0xa5de('0x72')]({'plain':!![]});return db[_0xa5de('0x89')][_0xa5de('0x48')]({'where':{'id':_0x3c9ba2[_0xa5de('0x73')]}});}return null;})[_0xa5de('0x27')](handleEntityNotFound(_0x3c7705,null))[_0xa5de('0x27')](function(_0x2c6cec){if(_0x2c6cec){_0x2fee43[_0xa5de('0x75')]=_0x2c6cec[_0xa5de('0x72')]({'plain':!![]});interaction_log['info'](_0xa5de('0x8a'),_0x410727[_0xa5de('0x5f')]['id'],_0x410727[_0xa5de('0x5f')][_0xa5de('0x2b')],_0x410727[_0xa5de('0x5f')][_0xa5de('0x77')],_0x2fee43[_0xa5de('0x75')]['id'],_0x410727[_0xa5de('0x49')]?JSON[_0xa5de('0x6b')](_0x410727[_0xa5de('0x49')]):_0xa5de('0x78'));return respondWithRpcPromise(_0xa5de('0x8b'),_0xa5de('0x8c'),_0x2fee43);}return null;})['then'](function(_0x235c8b){var _0x2dea7e=_0xa5de('0x7a')+_0x235c8b[_0xa5de('0x1c')][_0xa5de('0x8d')];return db['sequelize'][_0xa5de('0x33')](_0x2dea7e,{'type':db[_0xa5de('0x7c')][_0xa5de('0x8e')][_0xa5de('0x7d')],'raw':!![]})[_0xa5de('0x27')](function(_0x3e9923){return _0x3e9923;});})['then'](function(_0x3c3f81){if(_0x3c3f81){_0x2fee43[_0xa5de('0x1c')][_0xa5de('0x7e')]=_0x3c3f81[0x0];if(!_0x410727['body']['UserId'])return;return db[_0xa5de('0x8f')][_0xa5de('0x48')]({'where':{'id':_0x410727[_0xa5de('0x49')][_0xa5de('0x70')],'role':_0xa5de('0x71')},'attributes':['id',_0xa5de('0x2b'),_0xa5de('0x7f'),'email',_0xa5de('0x80')],'raw':!![]});}return null;})[_0xa5de('0x27')](function(_0x2392d8){if(!_0x2392d8)return null;_0x2fee43[_0xa5de('0x1c')]['agent']=_0x2392d8;return _0x2fee43;})[_0xa5de('0x27')](function(_0x237b23){if(_0x237b23){_0x237b23[_0xa5de('0x1c')]['interface']=util[_0xa5de('0x69')](_0xa5de('0x82'),_0x410727['user'][_0xa5de('0x2b')]);_0x237b23[_0xa5de('0x1c')][_0xa5de('0x84')]=_0x2fee43[_0xa5de('0x84')];_0x237b23[_0xa5de('0x1c')][_0xa5de('0x83')]=_0x2fee43[_0xa5de('0x84')];_0x237b23[_0xa5de('0x1c')][_0xa5de('0x85')]=_0xa5de('0x88');_0x237b23[_0xa5de('0x1c')][_0xa5de('0x49')]=htmlToText['fromString'](_0x2fee43[_0xa5de('0x1c')]['body']);respondWithRpcPromise(_0xa5de('0x86'),'EventManager',{'event':_0xa5de('0x90'),'message':_0x237b23['message']},client9002);return _0x2fee43;}return null;})[_0xa5de('0x27')](respondWithResult(_0x3c7705,null))['catch'](handleError(_0x3c7705,null));};exports['download']=function(_0x49bd9b,_0x404266){var _0xa375f8=moment()[_0xa5de('0x91')]()[_0xa5de('0x92')]();var _0x16d1f2=path[_0xa5de('0x63')](config[_0xa5de('0x64')],_0xa5de('0x93'),_0xa5de('0x94'),_0xa5de('0x95'));var _0x56207c=path['join'](config[_0xa5de('0x64')],_0xa5de('0x93'),_0xa5de('0x94'),_0xa5de('0x62'));var _0x5c2390=util[_0xa5de('0x69')]('message-%s.eml',_0xa375f8);return db['MailMessage'][_0xa5de('0x48')]({'where':{'id':_0x49bd9b[_0xa5de('0x4a')]['id']},'attributes':['id',_0xa5de('0x49'),_0xa5de('0x96'),'to','cc',_0xa5de('0x97'),_0xa5de('0x98'),'createdAt'],'include':_0x49bd9b[_0xa5de('0x33')]['attachments']?[{'model':db['Attachment'],'as':_0xa5de('0x99')}]:undefined})['then'](handleEntityNotFound(_0x404266,null))[_0xa5de('0x27')](function(_0x1ad146){if(_0x1ad146){var _0x4922d1=_0x1ad146;var _0x52855f={'from':_0x4922d1[_0xa5de('0x96')],'to':_0x4922d1['to'],'subject':_0x4922d1['subject'],'html':_0x4922d1['body'],'headers':{'Date':moment(_0x4922d1[_0xa5de('0x9a')])['format'](_0xa5de('0x9b'))},'attachments':[]};if(_0x1ad146['cc']){_0x52855f[_0xa5de('0x9c')]['Cc']=_0x1ad146['cc'];}if(_0x1ad146['bcc']){_0x52855f[_0xa5de('0x9c')]['Bcc']=_0x1ad146['bcc'];}return new BPromise(function(_0xe2ccb0,_0x9d6023){if(_0x1ad146[_0xa5de('0x99')]){for(var _0x4b102c=0x0;_0x4b102c<_0x1ad146['Attachments'][_0xa5de('0x38')];_0x4b102c++){var _0x51f51c=_0x1ad146[_0xa5de('0x99')][_0x4b102c];var _0x460ae5=path['join'](_0x56207c,_0x51f51c[_0xa5de('0x65')]);if(fs['existsSync'](_0x460ae5)){_0x52855f[_0xa5de('0x62')][_0xa5de('0x9d')]({'name':_0x51f51c[_0xa5de('0x2b')],'contentType':_0x51f51c[_0xa5de('0x30')],'data':fs['readFileSync'](_0x460ae5)});}}}emlformat[_0xa5de('0x9e')](_0x52855f,function(_0x556bd,_0x2a1bb8){if(_0x556bd)return _0x9d6023(_0x556bd);fs['writeFileSync'](path[_0xa5de('0x63')](_0x16d1f2,_0x5c2390),_0x2a1bb8);return _0xe2ccb0(_0x2a1bb8);});});}})[_0xa5de('0x27')](function(_0x4f175b){if(_0x4f175b){return _0x404266[_0xa5de('0x9f')](path[_0xa5de('0x63')](_0x16d1f2,_0x5c2390),_0x5c2390,function(_0x348b9f){if(!_0x348b9f)fs[_0xa5de('0xa0')](path[_0xa5de('0x63')](_0x16d1f2,_0x5c2390));});}})[_0xa5de('0x1e')](handleError(_0x404266,null));};
\ No newline at end of file
+var _0x74a7=['info','result','status','json','offset','undefined','limit','count','set','Content-Range','destroy','end','stack','name','send','index','map','MailMessage','rawAttributes','type','key','query','filters','intersection','model','fields','attributes','length','order','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','keys','find','body','describe','create','secret','MailAccountId','List','Contacts','updatedAt','MailServerOut','Smtp','service','host','port','secure','authentication','user','attachments','root','server/files/attachments','List\x20not\x20found','sendMail','update','messageId','format','YYYY-MM-DD\x20HH:mm:ss','accept','mail','readAt','UserId','get','MailInteraction','MailInteractionId','read1stAt','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','AcceptMessage','ContactId','sequelize','Sequelize','SELECT','contact','User','agent','fullname','email','internal','manual','interface','SIP/%s','channel','event','fromString','EventManager','reject','interaction','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','rejectMessage','QueryTypes','rejectmessage','download','unix','toString','join','server','tmp','files','from','subject','createdAt','Attachment','Attachments','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','bcc','basename','existsSync','push','build','writeFileSync','unlinkSync','eml-format','bluebird','util','ioredis','../../components/parsers/qs','../../config/logger','api','mail-interactions','../../config/environment','../../mysqldb','redis','defaults','html-entities','./mailMessage.socket','register','http','client','then','MailMessage,\x20%s,\x20%s','request\x20sent','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x74a7,0x7d));var _0x774a=function(_0xb0f552,_0x168d80){_0xb0f552=_0xb0f552-0x0;var _0x2f1a6c=_0x74a7[_0xb0f552];return _0x2f1a6c;};'use strict';var emlformat=require(_0x774a('0x0'));var moment=require('moment');var BPromise=require(_0x774a('0x1'));var util=require(_0x774a('0x2'));var path=require('path');var fs=require('fs');var _=require('lodash');var Redis=require(_0x774a('0x3'));var htmlToText=require('html-to-text');var qs=require(_0x774a('0x4'));var logger=require(_0x774a('0x5'))(_0x774a('0x6'));var interaction_log=require('../../config/logger')(_0x774a('0x7'));var config=require(_0x774a('0x8'));var db=require(_0x774a('0x9'))['db'];config[_0x774a('0xa')]=_[_0x774a('0xb')](config[_0x774a('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x774a('0xa')]));var htmlEntities=require(_0x774a('0xc'));require(_0x774a('0xd'))[_0x774a('0xe')](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0x774a('0xf')]({'port':0x232c});var client9003=jayson['client'][_0x774a('0xf')]({'port':0x232b});var client9002=jayson[_0x774a('0x10')][_0x774a('0xf')]({'port':0x232a});function respondWithRpcPromise(_0x375f04,_0x38b716,_0x2265ff,_0x2f0e05){return new BPromise(function(_0x1b339b,_0x21a4c2){var _0x4d7f21=_0x2f0e05||client;return _0x4d7f21['request'](_0x375f04,_0x2265ff)[_0x774a('0x11')](function(_0x3959fc){logger['info'](_0x774a('0x12'),_0x38b716,_0x774a('0x13'));logger['debug'](_0x774a('0x14'),_0x38b716,_0x774a('0x13'),JSON[_0x774a('0x15')](_0x3959fc));if(_0x3959fc[_0x774a('0x16')]){if(_0x3959fc[_0x774a('0x16')][_0x774a('0x17')]===0x1f4){logger[_0x774a('0x16')](_0x774a('0x12'),_0x38b716,_0x3959fc['error'][_0x774a('0x18')]);return _0x21a4c2(_0x3959fc[_0x774a('0x16')][_0x774a('0x18')]);}logger[_0x774a('0x16')]('MailMessage,\x20%s,\x20%s',_0x38b716,_0x3959fc[_0x774a('0x16')]['message']);return _0x1b339b(_0x3959fc['error'][_0x774a('0x18')]);}else{logger[_0x774a('0x19')](_0x774a('0x12'),_0x38b716,'request\x20sent');_0x1b339b(_0x3959fc[_0x774a('0x1a')][_0x774a('0x18')]);}})['catch'](function(_0xd114ee){logger['error'](_0x774a('0x12'),_0x38b716,_0xd114ee);_0x21a4c2(_0xd114ee);});});}function respondWithResult(_0x51f2d6,_0x34698c){_0x34698c=_0x34698c||0xc8;return function(_0x38521e){if(_0x38521e){return _0x51f2d6[_0x774a('0x1b')](_0x34698c)[_0x774a('0x1c')](_0x38521e);}};}function respondWithFilteredResult(_0x21e679,_0x5c2287){return function(_0x2455d8){if(_0x2455d8){var _0x1559ea=typeof _0x5c2287[_0x774a('0x1d')]===_0x774a('0x1e')&&typeof _0x5c2287[_0x774a('0x1f')]===_0x774a('0x1e');var _0x40f5ff=_0x2455d8[_0x774a('0x20')];var _0x233a95=_0x1559ea?0x0:_0x5c2287[_0x774a('0x1d')];var _0x38da61=_0x1559ea?_0x2455d8['count']:_0x5c2287['offset']+_0x5c2287['limit'];var _0x3080c9;if(_0x38da61>=_0x40f5ff){_0x38da61=_0x40f5ff;_0x3080c9=0xc8;}else{_0x3080c9=0xce;}_0x21e679[_0x774a('0x1b')](_0x3080c9);return _0x21e679[_0x774a('0x21')](_0x774a('0x22'),_0x233a95+'-'+_0x38da61+'/'+_0x40f5ff)[_0x774a('0x1c')](_0x2455d8);}return null;};}function saveUpdates(_0xaa9a8c){return function(_0x1bb8dd){if(_0x1bb8dd){return _0x1bb8dd['update'](_0xaa9a8c)['then'](function(_0x19c6e5){return _0x19c6e5;});}return null;};}function removeEntity(_0x4b5b5b){return function(_0x4f8eb7){if(_0x4f8eb7){return _0x4f8eb7[_0x774a('0x23')]()[_0x774a('0x11')](function(){_0x4b5b5b[_0x774a('0x1b')](0xcc)[_0x774a('0x24')]();});}};}function handleEntityNotFound(_0x233d20){return function(_0x3709c0){if(!_0x3709c0){_0x233d20['sendStatus'](0x194);}return _0x3709c0;};}function handleError(_0x24e09b,_0x18be4c){_0x18be4c=_0x18be4c||0x1f4;return function(_0x78ff0){logger[_0x774a('0x16')](_0x78ff0[_0x774a('0x25')]);if(_0x78ff0[_0x774a('0x26')]){delete _0x78ff0[_0x774a('0x26')];}_0x24e09b[_0x774a('0x1b')](_0x18be4c)[_0x774a('0x27')](_0x78ff0);};}exports[_0x774a('0x28')]=function(_0x1cf6e8,_0x840c69){var _0x45b76c={},_0x3623ca={},_0xdeb9ec={'count':0x0,'rows':[]};var _0x3d0766=_[_0x774a('0x29')](db[_0x774a('0x2a')][_0x774a('0x2b')],function(_0x1c4540){return{'name':_0x1c4540['fieldName'],'type':_0x1c4540[_0x774a('0x2c')][_0x774a('0x2d')]};});_0x3623ca['model']=_['map'](_0x3d0766,_0x774a('0x26'));_0x3623ca[_0x774a('0x2e')]=_['keys'](_0x1cf6e8[_0x774a('0x2e')]);_0x3623ca[_0x774a('0x2f')]=_[_0x774a('0x30')](_0x3623ca[_0x774a('0x31')],_0x3623ca[_0x774a('0x2e')]);_0x45b76c['attributes']=_[_0x774a('0x30')](_0x3623ca[_0x774a('0x31')],qs[_0x774a('0x32')](_0x1cf6e8[_0x774a('0x2e')][_0x774a('0x32')]));_0x45b76c[_0x774a('0x33')]=_0x45b76c[_0x774a('0x33')][_0x774a('0x34')]?_0x45b76c[_0x774a('0x33')]:_0x3623ca[_0x774a('0x31')];if(!_0x1cf6e8['query']['hasOwnProperty']('nolimit')){_0x45b76c[_0x774a('0x1f')]=qs[_0x774a('0x1f')](_0x1cf6e8[_0x774a('0x2e')]['limit']);_0x45b76c[_0x774a('0x1d')]=qs[_0x774a('0x1d')](_0x1cf6e8[_0x774a('0x2e')][_0x774a('0x1d')]);}_0x45b76c[_0x774a('0x35')]=qs[_0x774a('0x36')](_0x1cf6e8[_0x774a('0x2e')][_0x774a('0x36')]);_0x45b76c['where']=qs['filters'](_[_0x774a('0x37')](_0x1cf6e8[_0x774a('0x2e')],_0x3623ca['filters']),_0x3d0766);if(_0x1cf6e8['query'][_0x774a('0x38')]){_0x45b76c[_0x774a('0x39')]=_['merge'](_0x45b76c[_0x774a('0x39')],{'$or':_[_0x774a('0x29')](_0x3d0766,function(_0x14ff44){if(_0x14ff44['type']!==_0x774a('0x3a')){var _0x3bac8d={};_0x3bac8d[_0x14ff44[_0x774a('0x26')]]={'$like':'%'+_0x1cf6e8[_0x774a('0x2e')][_0x774a('0x38')]+'%'};return _0x3bac8d;}})});}_0x45b76c=_[_0x774a('0x3b')]({},_0x45b76c,_0x1cf6e8[_0x774a('0x3c')]);var _0x15442f={'where':_0x45b76c[_0x774a('0x39')]};return db[_0x774a('0x2a')][_0x774a('0x20')](_0x15442f)['then'](function(_0x4263a5){_0xdeb9ec[_0x774a('0x20')]=_0x4263a5;if(_0x1cf6e8[_0x774a('0x2e')][_0x774a('0x3d')]){_0x45b76c[_0x774a('0x3e')]=[{'all':!![]}];}return db['MailMessage']['findAll'](_0x45b76c);})[_0x774a('0x11')](function(_0x412375){_0xdeb9ec[_0x774a('0x3f')]=_0x412375;return _0xdeb9ec;})[_0x774a('0x11')](respondWithFilteredResult(_0x840c69,_0x45b76c))[_0x774a('0x40')](handleError(_0x840c69,null));};exports[_0x774a('0x41')]=function(_0x292813,_0x3ff0b2){var _0x5ad1f1={'raw':!![],'where':{'id':_0x292813[_0x774a('0x42')]['id']}},_0x417ac6={};_0x417ac6['model']=_['keys'](db[_0x774a('0x2a')][_0x774a('0x2b')]);_0x417ac6['query']=_[_0x774a('0x43')](_0x292813['query']);_0x417ac6[_0x774a('0x2f')]=_[_0x774a('0x30')](_0x417ac6[_0x774a('0x31')],_0x417ac6[_0x774a('0x2e')]);_0x5ad1f1['attributes']=_['intersection'](_0x417ac6[_0x774a('0x31')],qs[_0x774a('0x32')](_0x292813[_0x774a('0x2e')]['fields']));_0x5ad1f1[_0x774a('0x33')]=_0x5ad1f1['attributes'][_0x774a('0x34')]?_0x5ad1f1[_0x774a('0x33')]:_0x417ac6['model'];if(_0x292813[_0x774a('0x2e')]['includeAll']){_0x5ad1f1[_0x774a('0x3e')]=[{'all':!![]}];}_0x5ad1f1=_[_0x774a('0x3b')]({},_0x5ad1f1,_0x292813[_0x774a('0x3c')]);return db[_0x774a('0x2a')][_0x774a('0x44')](_0x5ad1f1)[_0x774a('0x11')](handleEntityNotFound(_0x3ff0b2,null))[_0x774a('0x11')](respondWithResult(_0x3ff0b2,null))['catch'](handleError(_0x3ff0b2,null));};exports['update']=function(_0x598989,_0x422a87){if(_0x598989['body']['id']){delete _0x598989[_0x774a('0x45')]['id'];}return db['MailMessage'][_0x774a('0x44')]({'where':{'id':_0x598989['params']['id']}})[_0x774a('0x11')](handleEntityNotFound(_0x422a87,null))[_0x774a('0x11')](saveUpdates(_0x598989[_0x774a('0x45')],null))['then'](respondWithResult(_0x422a87,null))['catch'](handleError(_0x422a87,null));};exports[_0x774a('0x23')]=function(_0x2da211,_0x44390b){return db[_0x774a('0x2a')][_0x774a('0x44')]({'where':{'id':_0x2da211[_0x774a('0x42')]['id']}})[_0x774a('0x11')](handleEntityNotFound(_0x44390b,null))[_0x774a('0x11')](removeEntity(_0x44390b,null))[_0x774a('0x40')](handleError(_0x44390b,null));};exports['describe']=function(_0x43364a,_0x46ffb5){return db[_0x774a('0x2a')][_0x774a('0x46')]()[_0x774a('0x11')](respondWithResult(_0x46ffb5,null))[_0x774a('0x40')](handleError(_0x46ffb5,null));};exports[_0x774a('0x47')]=function(_0xeb4dac,_0xa7f822){return db[_0x774a('0x2a')][_0x774a('0x47')](_0xeb4dac[_0x774a('0x45')])['then'](function(_0x30fd3e){if(_0x30fd3e){if(_0x30fd3e['direction']==='out'&&!_0x30fd3e[_0x774a('0x48')]){var _0x252fef,_0x5e50d5,_0x4a6cbd;if(_0xeb4dac[_0x774a('0x45')]['to']){_0x5e50d5=_0xeb4dac[_0x774a('0x45')]['to']['split'](',')[0x0];}return db['MailAccount']['findOne']({'where':{'id':_0x30fd3e[_0x774a('0x49')]},'include':[{'model':db['CmList'],'as':_0x774a('0x4a'),'include':[{'model':db['CmContact'],'as':_0x774a('0x4b'),'where':{'email':_0x5e50d5},'limit':0x1,'order':[[_0x774a('0x4c'),'DESC']]}]},{'model':db[_0x774a('0x4d')],'as':_0x774a('0x4e'),'raw':!![]}]})[_0x774a('0x11')](function(_0xb27afe){_0x252fef=_0xb27afe;if(_0x252fef&&_0x252fef[_0x774a('0x4e')]){var _0x4ad272={'tls':{'rejectUnauthorized':![]}};if(_['isNil'](_0x252fef[_0x774a('0x4e')][_0x774a('0x4f')])){_0x4ad272[_0x774a('0x50')]=_0x252fef[_0x774a('0x4e')][_0x774a('0x50')];_0x4ad272['port']=_0x252fef[_0x774a('0x4e')][_0x774a('0x51')];_0x4ad272[_0x774a('0x52')]=_0x252fef[_0x774a('0x4e')]['secure'];if(_0x252fef[_0x774a('0x4e')][_0x774a('0x53')]){_0x4ad272['auth']={'user':_0x252fef['Smtp'][_0x774a('0x54')],'pass':_0x252fef[_0x774a('0x4e')]['pass']};}}else{_0x4ad272[_0x774a('0x4f')]=_0x252fef[_0x774a('0x4e')][_0x774a('0x4f')];_0x4ad272['auth']={'user':_0x252fef[_0x774a('0x4e')][_0x774a('0x54')],'pass':_0x252fef[_0x774a('0x4e')]['pass']};_0x4ad272[_0x774a('0x52')]=_0x252fef[_0x774a('0x4e')][_0x774a('0x52')];}if(_0xeb4dac[_0x774a('0x45')][_0x774a('0x55')]&&_0xeb4dac[_0x774a('0x45')][_0x774a('0x55')][_0x774a('0x34')]){for(var _0x459b7e=0x0;_0x459b7e<_0xeb4dac[_0x774a('0x45')][_0x774a('0x55')][_0x774a('0x34')];_0x459b7e+=0x1){_0xeb4dac[_0x774a('0x45')]['attachments'][_0x459b7e]={'filename':_0xeb4dac[_0x774a('0x45')]['attachments'][_0x459b7e][_0x774a('0x26')],'path':path['join'](config[_0x774a('0x56')],_0x774a('0x57'),_0xeb4dac[_0x774a('0x45')][_0x774a('0x55')][_0x459b7e]['basename'])};}}_0x4a6cbd={'account':_0x4ad272,'message':_0xeb4dac['body']};return;}})[_0x774a('0x11')](function(){if(_0x252fef['List']){if(_0x252fef['List'][_0x774a('0x4b')][_0x774a('0x34')]){return _0x252fef[_0x774a('0x4a')]['Contacts'][0x0];}else{return db['CmContact'][_0x774a('0x47')](_[_0x774a('0xb')](_0xeb4dac['body'],{'firstName':_0xeb4dac[_0x774a('0x45')]['to'],'email':_0xeb4dac[_0x774a('0x45')]['to'],'phone':_0xeb4dac['body']['to'],'ListId':_0x252fef['ListId']}));}}else{throw new Error(_0x774a('0x58'));}})[_0x774a('0x11')](function(){if(_0x4a6cbd){return respondWithRpcPromise('SendMail',_0x774a('0x59'),_0x4a6cbd,client9003)[_0x774a('0x11')](function(_0x4c7690){return _0x30fd3e[_0x774a('0x5a')]({'read':!![],'messageId':_0x4c7690[_0x774a('0x5b')],'sentAt':moment()[_0x774a('0x5c')](_0x774a('0x5d'))});})['catch'](function(_0x2bc9c3){logger['error']('%s',JSON[_0x774a('0x15')](_0x2bc9c3));return _0x30fd3e;});}return _0x30fd3e;});}return _0x30fd3e;}})[_0x774a('0x11')](respondWithResult(_0xa7f822,0xc9))[_0x774a('0x40')](handleError(_0xa7f822,null));};exports[_0x774a('0x5e')]=function(_0x172f56,_0x225a63){var _0x2ce188={'agent':{},'channel':_0x774a('0x5f')};if(_0x172f56[_0x774a('0x45')]['id']){delete _0x172f56[_0x774a('0x45')]['id'];}_0x172f56[_0x774a('0x45')]['read']=!![];_0x172f56['body'][_0x774a('0x60')]=moment()[_0x774a('0x5c')](_0x774a('0x5d'));_0x172f56[_0x774a('0x45')][_0x774a('0x61')]=_0x172f56[_0x774a('0x45')][_0x774a('0x61')]||_0x172f56[_0x774a('0x54')]['id'];_0x2ce188['agent']['id']=_0x172f56[_0x774a('0x45')][_0x774a('0x61')];return db[_0x774a('0x2a')]['find']({'where':{'id':_0x172f56['params']['id'],'UserId':null}})[_0x774a('0x11')](handleEntityNotFound(_0x225a63,null))['then'](saveUpdates(_0x172f56[_0x774a('0x45')],null))[_0x774a('0x11')](function(_0x289980){if(_0x289980){_0x2ce188['message']=_0x289980[_0x774a('0x62')]({'plain':!![]});return db[_0x774a('0x63')][_0x774a('0x44')]({'where':{'id':_0x289980[_0x774a('0x64')]}});}return null;})[_0x774a('0x11')](handleEntityNotFound(_0x225a63,null))[_0x774a('0x11')](function(_0x437487){if(_0x437487){return _0x437487[_0x774a('0x5a')]({'UserId':_0x172f56[_0x774a('0x45')][_0x774a('0x61')],'read1stAt':_['isNil'](_0x437487[_0x774a('0x65')])?moment()[_0x774a('0x5c')](_0x774a('0x5d')):undefined});}return null;})[_0x774a('0x11')](function(_0x2b731d){if(_0x2b731d){_0x2ce188['interaction']=_0x2b731d['get']({'plain':!![]});interaction_log[_0x774a('0x19')](_0x774a('0x66'),_0x172f56[_0x774a('0x54')]['id'],_0x172f56[_0x774a('0x54')][_0x774a('0x26')],_0x172f56[_0x774a('0x54')]['role'],_0x2ce188['interaction']['id'],_0x172f56[_0x774a('0x45')]?JSON[_0x774a('0x15')](_0x172f56[_0x774a('0x45')]):_0x774a('0x67'));return respondWithRpcPromise(_0x774a('0x68'),'acceptMessage',_0x2ce188);}return null;})[_0x774a('0x11')](function(_0x4421fc){var _0x2b2969='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4421fc[_0x774a('0x18')][_0x774a('0x69')];return db[_0x774a('0x6a')][_0x774a('0x2e')](_0x2b2969,{'type':db[_0x774a('0x6b')]['QueryTypes'][_0x774a('0x6c')],'raw':!![]})['then'](function(_0x4d216b){return _0x4d216b;});})[_0x774a('0x11')](function(_0x5ddd5c){if(_0x5ddd5c){_0x2ce188[_0x774a('0x18')][_0x774a('0x6d')]=_0x5ddd5c[0x0];if(!_0x172f56['body'][_0x774a('0x61')])return;return db[_0x774a('0x6e')][_0x774a('0x44')]({'where':{'id':_0x172f56['body'][_0x774a('0x61')],'role':_0x774a('0x6f')},'attributes':['id',_0x774a('0x26'),_0x774a('0x70'),_0x774a('0x71'),_0x774a('0x72')],'raw':!![]});}return null;})[_0x774a('0x11')](function(_0x55ce4b){if(!_0x55ce4b)return null;_0x2ce188[_0x774a('0x18')]['agent']=_0x55ce4b;return _0x2ce188;})['then'](function(_0xf10de3){if(_0xf10de3){if(_0x172f56[_0x774a('0x45')][_0x774a('0x73')]){_0x2ce188[_0x774a('0x18')][_0x774a('0x74')]=util[_0x774a('0x5c')](_0x774a('0x75'),_0x172f56[_0x774a('0x54')][_0x774a('0x26')]);_0x2ce188[_0x774a('0x18')][_0x774a('0x76')]=_0x2ce188[_0x774a('0x76')];_0x2ce188[_0x774a('0x18')][_0x774a('0x77')]=_0x774a('0x5e');_0x2ce188[_0x774a('0x18')]['body']=htmlToText[_0x774a('0x78')](_0x2ce188[_0x774a('0x18')][_0x774a('0x45')]);return respondWithRpcPromise(_0x774a('0x79'),_0x774a('0x79'),{'event':'acceptmessage','message':_0x2ce188[_0x774a('0x18')]},client9002)['then'](function(){return _0x2ce188;});}return _0x2ce188;}return null;})[_0x774a('0x11')](respondWithResult(_0x225a63,null))['catch'](handleError(_0x225a63,null));};exports[_0x774a('0x7a')]=function(_0x463c67,_0x392e8a){var _0x3cb216={'agent':{},'channel':'mail'};if(_0x463c67[_0x774a('0x45')]['id']){delete _0x463c67[_0x774a('0x45')]['id'];}_0x463c67[_0x774a('0x45')]['UserId']=_0x463c67['body'][_0x774a('0x61')]||_0x463c67[_0x774a('0x54')]['id'];_0x3cb216[_0x774a('0x6f')]['id']=_0x463c67[_0x774a('0x45')][_0x774a('0x61')];return db[_0x774a('0x2a')][_0x774a('0x44')]({'where':{'id':_0x463c67[_0x774a('0x42')]['id'],'UserId':null}})[_0x774a('0x11')](handleEntityNotFound(_0x392e8a,null))[_0x774a('0x11')](function(_0x271eca){if(_0x271eca){_0x3cb216['message']=_0x271eca[_0x774a('0x62')]({'plain':!![]});return db[_0x774a('0x63')][_0x774a('0x44')]({'where':{'id':_0x271eca[_0x774a('0x64')]}});}return null;})[_0x774a('0x11')](handleEntityNotFound(_0x392e8a,null))[_0x774a('0x11')](function(_0x450f7c){if(_0x450f7c){_0x3cb216[_0x774a('0x7b')]=_0x450f7c[_0x774a('0x62')]({'plain':!![]});interaction_log[_0x774a('0x19')](_0x774a('0x7c'),_0x463c67[_0x774a('0x54')]['id'],_0x463c67[_0x774a('0x54')]['name'],_0x463c67[_0x774a('0x54')][_0x774a('0x7d')],_0x3cb216[_0x774a('0x7b')]['id'],_0x463c67['body']?JSON[_0x774a('0x15')](_0x463c67[_0x774a('0x45')]):_0x774a('0x67'));return respondWithRpcPromise('RejectMessage',_0x774a('0x7e'),_0x3cb216);}return null;})[_0x774a('0x11')](function(_0x59ff25){var _0xa64234='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x59ff25[_0x774a('0x18')]['ContactId'];return db[_0x774a('0x6a')][_0x774a('0x2e')](_0xa64234,{'type':db[_0x774a('0x6b')][_0x774a('0x7f')][_0x774a('0x6c')],'raw':!![]})['then'](function(_0x802f8e){return _0x802f8e;});})[_0x774a('0x11')](function(_0x3507b1){if(_0x3507b1){_0x3cb216[_0x774a('0x18')][_0x774a('0x6d')]=_0x3507b1[0x0];if(!_0x463c67[_0x774a('0x45')][_0x774a('0x61')])return;return db['User'][_0x774a('0x44')]({'where':{'id':_0x463c67[_0x774a('0x45')]['UserId'],'role':_0x774a('0x6f')},'attributes':['id',_0x774a('0x26'),_0x774a('0x70'),_0x774a('0x71'),'internal'],'raw':!![]});}return null;})[_0x774a('0x11')](function(_0x26d489){if(!_0x26d489)return null;_0x3cb216[_0x774a('0x18')][_0x774a('0x6f')]=_0x26d489;return _0x3cb216;})['then'](function(_0x418c4a){if(_0x418c4a){_0x418c4a['message'][_0x774a('0x74')]=util[_0x774a('0x5c')](_0x774a('0x75'),_0x463c67['user'][_0x774a('0x26')]);_0x418c4a['message'][_0x774a('0x76')]=_0x3cb216[_0x774a('0x76')];_0x418c4a[_0x774a('0x18')][_0x774a('0x77')]=_0x774a('0x7a');_0x418c4a[_0x774a('0x18')][_0x774a('0x45')]=htmlToText['fromString'](_0x3cb216[_0x774a('0x18')][_0x774a('0x45')]);respondWithRpcPromise(_0x774a('0x79'),'EventManager',{'event':_0x774a('0x80'),'message':_0x418c4a[_0x774a('0x18')]},client9002);return _0x3cb216;}return null;})[_0x774a('0x11')](respondWithResult(_0x392e8a,null))[_0x774a('0x40')](handleError(_0x392e8a,null));};exports[_0x774a('0x81')]=function(_0xcf80a9,_0x517efc){var _0x1d7cb7=moment()[_0x774a('0x82')]()[_0x774a('0x83')]();var _0x2827ae=path[_0x774a('0x84')](config[_0x774a('0x56')],_0x774a('0x85'),'files',_0x774a('0x86'));var _0x5a4fad=path['join'](config[_0x774a('0x56')],_0x774a('0x85'),_0x774a('0x87'),_0x774a('0x55'));var _0x1f9a0f=util[_0x774a('0x5c')]('message-%s.eml',_0x1d7cb7);return db['MailMessage']['find']({'where':{'id':_0xcf80a9[_0x774a('0x42')]['id']},'attributes':['id',_0x774a('0x45'),_0x774a('0x88'),'to','cc','bcc',_0x774a('0x89'),_0x774a('0x8a')],'include':_0xcf80a9[_0x774a('0x2e')]['attachments']?[{'model':db[_0x774a('0x8b')],'as':_0x774a('0x8c')}]:undefined})[_0x774a('0x11')](handleEntityNotFound(_0x517efc,null))['then'](function(_0x2b684e){if(_0x2b684e){var _0x142aec=_0x2b684e;var _0x5a4da6={'from':_0x142aec[_0x774a('0x88')],'to':_0x142aec['to'],'subject':_0x142aec[_0x774a('0x89')],'html':htmlEntities['decode'](_0x142aec[_0x774a('0x45')]),'headers':{'Date':moment(_0x142aec[_0x774a('0x8a')])[_0x774a('0x5c')](_0x774a('0x8d'))},'attachments':[]};if(_0x2b684e['cc']){_0x5a4da6[_0x774a('0x8e')]['Cc']=_0x2b684e['cc'];}if(_0x2b684e[_0x774a('0x8f')]){_0x5a4da6[_0x774a('0x8e')]['Bcc']=_0x2b684e['bcc'];}return new BPromise(function(_0x367411,_0x1c56f0){if(_0x2b684e[_0x774a('0x8c')]){for(var _0x92652b=0x0;_0x92652b<_0x2b684e['Attachments'][_0x774a('0x34')];_0x92652b++){var _0x425244=_0x2b684e[_0x774a('0x8c')][_0x92652b];var _0x439f12=path[_0x774a('0x84')](_0x5a4fad,_0x425244[_0x774a('0x90')]);if(fs[_0x774a('0x91')](_0x439f12)){_0x5a4da6[_0x774a('0x55')][_0x774a('0x92')]({'name':_0x425244[_0x774a('0x26')],'contentType':_0x425244[_0x774a('0x2c')],'data':fs['readFileSync'](_0x439f12)});}}}emlformat[_0x774a('0x93')](_0x5a4da6,function(_0x4d6f81,_0x1590c8){if(_0x4d6f81)return _0x1c56f0(_0x4d6f81);fs[_0x774a('0x94')](path[_0x774a('0x84')](_0x2827ae,_0x1f9a0f),_0x1590c8);return _0x367411(_0x1590c8);});});}})[_0x774a('0x11')](function(_0x2bcbb){if(_0x2bcbb){return _0x517efc[_0x774a('0x81')](path[_0x774a('0x84')](_0x2827ae,_0x1f9a0f),_0x1f9a0f,function(_0xbf0f71){if(!_0xbf0f71)fs[_0x774a('0x95')](path[_0x774a('0x84')](_0x2827ae,_0x1f9a0f));});}})[_0x774a('0x40')](handleError(_0x517efc,null));};
\ No newline at end of file
index ec1ef17..0dd9678 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6402=['update','remove','emit','hasOwnProperty','hook','exports','setMaxListeners','save'];(function(_0x494ffe,_0x557e9e){var _0x1a3f2b=function(_0x52ed7f){while(--_0x52ed7f){_0x494ffe['push'](_0x494ffe['shift']());}};_0x1a3f2b(++_0x557e9e);}(_0x6402,0x66));var _0x2640=function(_0x1fff84,_0x3432fe){_0x1fff84=_0x1fff84-0x0;var _0x4c9c8c=_0x6402[_0x1fff84];return _0x4c9c8c;};'use strict';var EventEmitter=require('events');var MailMessage=require('../../mysqldb')['db']['MailMessage'];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x2640('0x0')](0x0);var events={'afterCreate':_0x2640('0x1'),'afterUpdate':_0x2640('0x2'),'afterDestroy':_0x2640('0x3')};function emitEvent(_0x5393b3){return function(_0x413d52,_0x2e0119,_0x589608){MailMessageEvents[_0x2640('0x4')](_0x5393b3+':'+_0x413d52['id'],_0x413d52);MailMessageEvents['emit'](_0x5393b3,_0x413d52);_0x589608(null);};}for(var e in events){if(events[_0x2640('0x5')](e)){var event=events[e];MailMessage[_0x2640('0x6')](e,emitEvent(event));}}module[_0x2640('0x7')]=MailMessageEvents;
\ No newline at end of file
+var _0xbc8b=['update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save'];(function(_0x585f94,_0x225545){var _0x391d35=function(_0x48aed0){while(--_0x48aed0){_0x585f94['push'](_0x585f94['shift']());}};_0x391d35(++_0x225545);}(_0xbc8b,0x196));var _0xbbc8=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0xbc8b[_0xbca1b1];return _0x4e1686;};'use strict';var EventEmitter=require(_0xbbc8('0x0'));var MailMessage=require(_0xbbc8('0x1'))['db']['MailMessage'];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0xbbc8('0x2')](0x0);var events={'afterCreate':_0xbbc8('0x3'),'afterUpdate':_0xbbc8('0x4'),'afterDestroy':_0xbbc8('0x5')};function emitEvent(_0x13dcd6){return function(_0x3fc067,_0x1c6c60,_0x3d5bd2){MailMessageEvents['emit'](_0x13dcd6+':'+_0x3fc067['id'],_0x3fc067);MailMessageEvents[_0xbbc8('0x6')](_0x13dcd6,_0x3fc067);_0x3d5bd2(null);};}for(var e in events){if(events[_0xbbc8('0x7')](e)){var event=events[e];MailMessage[_0xbbc8('0x8')](e,emitEvent(event));}}module[_0xbbc8('0x9')]=MailMessageEvents;
\ No newline at end of file
index e07ac3f..6f752fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa77a=['createdAt','direction','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','html-to-text','rimraf','../../config/environment','./mailMessage.attributes','define','MailMessage','messageId','fti_mail_messages','plainBody','subject','FULLTEXT','body','fromString','models','get','toLowerCase','out','secret','UserId','MailInteraction','findOne','MailInteractionId','then'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xa77a,0x126));var _0xaa77=function(_0x541ea6,_0x51cab6){_0x541ea6=_0x541ea6-0x0;var _0x3c3e84=_0xa77a[_0x541ea6];return _0x3c3e84;};'use strict';var _=require(_0xaa77('0x0'));var util=require(_0xaa77('0x1'));var logger=require(_0xaa77('0x2'))(_0xaa77('0x3'));var moment=require(_0xaa77('0x4'));var BPromise=require(_0xaa77('0x5'));var rp=require(_0xaa77('0x6'));var htmlToText=require(_0xaa77('0x7'));var fs=require('fs');var path=require('path');var rimraf=require(_0xaa77('0x8'));var config=require(_0xaa77('0x9'));var attributes=require(_0xaa77('0xa'));module['exports']=function(_0x5ebc30,_0x36313e){return _0x5ebc30[_0xaa77('0xb')](_0xaa77('0xc'),attributes,{'tableName':'mail_messages','paranoid':![],'indexes':[{'name':_0xaa77('0xd'),'fields':[_0xaa77('0xd')]},{'name':_0xaa77('0xe'),'fields':[_0xaa77('0xf'),_0xaa77('0x10')],'type':_0xaa77('0x11')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x33ccee,_0x1b050c,_0x52888d){if(_0x33ccee[_0xaa77('0x12')]){_0x33ccee[_0xaa77('0xf')]=htmlToText[_0xaa77('0x13')](_0x33ccee[_0xaa77('0x12')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x52888d(null,_0x1b050c);},'afterCreate':function(_0x47dde1,_0xa31242,_0x6f9a2b){var _0x1f8d8e=_0x5ebc30[_0xaa77('0x14')];var _0x283c96=_0x47dde1[_0xaa77('0x15')]({'plain':!![]});if(_0x283c96['direction']['toLowerCase']()==='in'||_0x283c96['direction'][_0xaa77('0x16')]()===_0xaa77('0x17')&&!_0x283c96[_0xaa77('0x18')]&&!_['isNil'](_0x283c96[_0xaa77('0x19')])){_0x1f8d8e[_0xaa77('0x1a')][_0xaa77('0x1b')]({'where':{'id':_0x283c96[_0xaa77('0x1c')]}})[_0xaa77('0x1d')](function(_0x266a36){if(_0x266a36){_0x266a36['update']({'lastMsgAt':_0x283c96[_0xaa77('0x1e')],'lastMsgDirection':_0x283c96[_0xaa77('0x1f')][_0xaa77('0x16')]()});}})[_0xaa77('0x20')](function(_0x330d54){console[_0xaa77('0x21')](_0x330d54);});}_0x6f9a2b();}},'charset':_0xaa77('0x22'),'collate':_0xaa77('0x23')});};
\ No newline at end of file
+var _0x0126=['models','get','direction','out','secret','UserId','MailInteraction','then','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','moment','html-to-text','rimraf','../../config/environment','exports','MailMessage','mail_messages','messageId','fti_mail_messages','plainBody','FULLTEXT','body','fromString'];(function(_0x1ccf5f,_0x2d6e7c){var _0x5045c3=function(_0x3dbf22){while(--_0x3dbf22){_0x1ccf5f['push'](_0x1ccf5f['shift']());}};_0x5045c3(++_0x2d6e7c);}(_0x0126,0x1de));var _0x6012=function(_0x57d357,_0x113487){_0x57d357=_0x57d357-0x0;var _0x1be154=_0x0126[_0x57d357];return _0x1be154;};'use strict';var _=require(_0x6012('0x0'));var util=require(_0x6012('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x6012('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var htmlToText=require(_0x6012('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6012('0x4'));var config=require(_0x6012('0x5'));var attributes=require('./mailMessage.attributes');module[_0x6012('0x6')]=function(_0x4e85a0,_0x3a5921){return _0x4e85a0['define'](_0x6012('0x7'),attributes,{'tableName':_0x6012('0x8'),'paranoid':![],'indexes':[{'name':_0x6012('0x9'),'fields':['messageId']},{'name':_0x6012('0xa'),'fields':[_0x6012('0xb'),'subject'],'type':_0x6012('0xc')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x239a4a,_0x2eff3c,_0x50631f){if(_0x239a4a[_0x6012('0xd')]){_0x239a4a[_0x6012('0xb')]=htmlToText[_0x6012('0xe')](_0x239a4a['body'],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x50631f(null,_0x2eff3c);},'afterCreate':function(_0x36edab,_0x34d629,_0x5476b6){var _0x3133dd=_0x4e85a0[_0x6012('0xf')];var _0x5624dc=_0x36edab[_0x6012('0x10')]({'plain':!![]});if(_0x5624dc['direction']['toLowerCase']()==='in'||_0x5624dc[_0x6012('0x11')]['toLowerCase']()===_0x6012('0x12')&&!_0x5624dc[_0x6012('0x13')]&&!_['isNil'](_0x5624dc[_0x6012('0x14')])){_0x3133dd[_0x6012('0x15')]['findOne']({'where':{'id':_0x5624dc['MailInteractionId']}})[_0x6012('0x16')](function(_0x6055c6){if(_0x6055c6){_0x6055c6[_0x6012('0x17')]({'lastMsgAt':_0x5624dc[_0x6012('0x18')],'lastMsgDirection':_0x5624dc[_0x6012('0x11')]['toLowerCase']()});}})[_0x6012('0x19')](function(_0x41e930){console[_0x6012('0x1a')](_0x41e930);});}_0x5476b6();}},'charset':_0x6012('0x1b'),'collate':_0x6012('0x1c')});};
\ No newline at end of file
index c55e0fc..37e3801 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32b6=['raw','CreateMailMessage','stringify','lodash','util','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./mailMessage.socket','register','request','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','body','options'];(function(_0x5ce3c8,_0x2503bd){var _0xa76867=function(_0x52815e){while(--_0x52815e){_0x5ce3c8['push'](_0x5ce3c8['shift']());}};_0xa76867(++_0x2503bd);}(_0x32b6,0x1d1));var _0x632b=function(_0x47c6f7,_0x557aad){_0x47c6f7=_0x47c6f7-0x0;var _0x3a3845=_0x32b6[_0x47c6f7];return _0x3a3845;};'use strict';var _=require(_0x632b('0x0'));var util=require(_0x632b('0x1'));var moment=require('moment');var BPromise=require(_0x632b('0x2'));var rs=require(_0x632b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x632b('0x4'));var logger=require(_0x632b('0x5'))(_0x632b('0x6'));var config=require(_0x632b('0x7'));var jayson=require(_0x632b('0x8'));var client=jayson[_0x632b('0x9')][_0x632b('0xa')]({'port':0x232a});config[_0x632b('0xb')]=_[_0x632b('0xc')](config[_0x632b('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x632b('0xd'))(new Redis(config[_0x632b('0xb')]));require(_0x632b('0xe'))[_0x632b('0xf')](socket);function respondWithRpcPromise(_0x4961b1,_0x5904e8,_0x56e7b6){return new BPromise(function(_0x3ce569,_0x484b3a){return client[_0x632b('0x10')](_0x4961b1,_0x56e7b6)[_0x632b('0x11')](function(_0x2eca51){logger[_0x632b('0x12')](_0x632b('0x13'),_0x5904e8,_0x632b('0x14'));logger[_0x632b('0x15')](_0x632b('0x16'),_0x5904e8,_0x632b('0x14'),JSON['stringify'](_0x2eca51));if(_0x2eca51[_0x632b('0x17')]){if(_0x2eca51[_0x632b('0x17')][_0x632b('0x18')]===0x1f4){logger['error'](_0x632b('0x13'),_0x5904e8,_0x2eca51[_0x632b('0x17')][_0x632b('0x19')]);return _0x484b3a(_0x2eca51[_0x632b('0x17')][_0x632b('0x19')]);}logger[_0x632b('0x17')]('MailMessage,\x20%s,\x20%s',_0x5904e8,_0x2eca51[_0x632b('0x17')]['message']);return _0x3ce569(_0x2eca51['error'][_0x632b('0x19')]);}else{logger['info'](_0x632b('0x13'),_0x5904e8,_0x632b('0x14'));_0x3ce569(_0x2eca51[_0x632b('0x1a')]['message']);}})[_0x632b('0x1b')](function(_0x32ca1){logger[_0x632b('0x17')](_0x632b('0x13'),_0x5904e8,_0x32ca1);_0x484b3a(_0x32ca1);});});}exports['CreateMailMessage']=function(_0x472e34){var _0xd9d29f=this;return new Promise(function(_0x4f377f,_0x116f62){return db['MailMessage']['create'](_0x472e34[_0x632b('0x1c')],{'raw':_0x472e34['options']?_0x472e34[_0x632b('0x1d')][_0x632b('0x1e')]===undefined?!![]:![]:!![]})[_0x632b('0x11')](function(_0x540bfb){logger[_0x632b('0x12')](_0x632b('0x1f'),_0x472e34);logger['debug'](_0x632b('0x1f'),_0x472e34,JSON[_0x632b('0x20')](_0x540bfb));_0x4f377f(_0x540bfb);})[_0x632b('0x1b')](function(_0x1e448c){logger[_0x632b('0x17')](_0x632b('0x1f'),_0x1e448c['message'],_0x472e34);_0x116f62(_0xd9d29f['error'](0x1f4,_0x1e448c[_0x632b('0x19')]));});});};
\ No newline at end of file
+var _0x2272=['MailMessage','create','body','options','raw','stringify','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./mailMessage.socket','request','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','CreateMailMessage'];(function(_0x2f4673,_0x10117c){var _0x5c4a9a=function(_0x125b3d){while(--_0x125b3d){_0x2f4673['push'](_0x2f4673['shift']());}};_0x5c4a9a(++_0x10117c);}(_0x2272,0xd8));var _0x2227=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x2272[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require(_0x2227('0x0'));var util=require(_0x2227('0x1'));var moment=require(_0x2227('0x2'));var BPromise=require(_0x2227('0x3'));var rs=require(_0x2227('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2227('0x5'))['db'];var utils=require(_0x2227('0x6'));var logger=require(_0x2227('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x2227('0x8'));var client=jayson[_0x2227('0x9')][_0x2227('0xa')]({'port':0x232a});config[_0x2227('0xb')]=_[_0x2227('0xc')](config[_0x2227('0xb')],{'host':_0x2227('0xd'),'port':0x18eb});var socket=require(_0x2227('0xe'))(new Redis(config[_0x2227('0xb')]));require(_0x2227('0xf'))['register'](socket);function respondWithRpcPromise(_0x799370,_0x5c1cba,_0x2f66ca){return new BPromise(function(_0x2d1c39,_0x164735){return client[_0x2227('0x10')](_0x799370,_0x2f66ca)[_0x2227('0x11')](function(_0x51ed54){logger[_0x2227('0x12')](_0x2227('0x13'),_0x5c1cba,_0x2227('0x14'));logger[_0x2227('0x15')](_0x2227('0x16'),_0x5c1cba,_0x2227('0x14'),JSON['stringify'](_0x51ed54));if(_0x51ed54['error']){if(_0x51ed54['error'][_0x2227('0x17')]===0x1f4){logger['error'](_0x2227('0x13'),_0x5c1cba,_0x51ed54[_0x2227('0x18')]['message']);return _0x164735(_0x51ed54[_0x2227('0x18')][_0x2227('0x19')]);}logger[_0x2227('0x18')](_0x2227('0x13'),_0x5c1cba,_0x51ed54[_0x2227('0x18')][_0x2227('0x19')]);return _0x2d1c39(_0x51ed54['error'][_0x2227('0x19')]);}else{logger[_0x2227('0x12')](_0x2227('0x13'),_0x5c1cba,'request\x20sent');_0x2d1c39(_0x51ed54[_0x2227('0x1a')][_0x2227('0x19')]);}})[_0x2227('0x1b')](function(_0x2482ba){logger[_0x2227('0x18')](_0x2227('0x13'),_0x5c1cba,_0x2482ba);_0x164735(_0x2482ba);});});}exports[_0x2227('0x1c')]=function(_0x4e0bba){var _0x386e6a=this;return new Promise(function(_0x59f988,_0x2b26b7){return db[_0x2227('0x1d')][_0x2227('0x1e')](_0x4e0bba[_0x2227('0x1f')],{'raw':_0x4e0bba[_0x2227('0x20')]?_0x4e0bba[_0x2227('0x20')][_0x2227('0x21')]===undefined?!![]:![]:!![]})[_0x2227('0x11')](function(_0x3299fd){logger[_0x2227('0x12')](_0x2227('0x1c'),_0x4e0bba);logger['debug'](_0x2227('0x1c'),_0x4e0bba,JSON[_0x2227('0x22')](_0x3299fd));_0x59f988(_0x3299fd);})['catch'](function(_0x2cef4b){logger[_0x2227('0x18')]('CreateMailMessage',_0x2cef4b['message'],_0x4e0bba);_0x2b26b7(_0x386e6a[_0x2227('0x18')](0x1f4,_0x2cef4b[_0x2227('0x19')]));});});};
\ No newline at end of file
index edd5064..45656bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd293=['length','mailMessage:','./mailMessage.events','removeListener'];(function(_0x4be6b9,_0x2871c5){var _0x3a2870=function(_0xaa3114){while(--_0xaa3114){_0x4be6b9['push'](_0x4be6b9['shift']());}};_0x3a2870(++_0x2871c5);}(_0xd293,0x10e));var _0x3d29=function(_0x40ee81,_0x118f7d){_0x40ee81=_0x40ee81-0x0;var _0x8d81b2=_0xd293[_0x40ee81];return _0x8d81b2;};'use strict';var MailMessageEvents=require(_0x3d29('0x0'));var events=['save','remove','update'];function createListener(_0x2541e5,_0x17354d){return function(_0x15063b){_0x17354d['emit'](_0x2541e5,_0x15063b);};}function removeListener(_0x13fe0d,_0x2df6a9){return function(){MailMessageEvents[_0x3d29('0x1')](_0x13fe0d,_0x2df6a9);};}exports['register']=function(_0x2a9239){for(var _0x55fdc2=0x0,_0x47538a=events[_0x3d29('0x2')];_0x55fdc2<_0x47538a;_0x55fdc2++){var _0x36dd09=events[_0x55fdc2];var _0x1d1d36=createListener(_0x3d29('0x3')+_0x36dd09,_0x2a9239);MailMessageEvents['on'](_0x36dd09,_0x1d1d36);}};
\ No newline at end of file
+var _0xe4ec=['removeListener','register','length','mailMessage:','save','update','emit'];(function(_0x56d5ed,_0xd0b5a3){var _0x2c859e=function(_0xda6e51){while(--_0xda6e51){_0x56d5ed['push'](_0x56d5ed['shift']());}};_0x2c859e(++_0xd0b5a3);}(_0xe4ec,0x11c));var _0xce4e=function(_0x12788c,_0x5ef58a){_0x12788c=_0x12788c-0x0;var _0x512fa5=_0xe4ec[_0x12788c];return _0x512fa5;};'use strict';var MailMessageEvents=require('./mailMessage.events');var events=[_0xce4e('0x0'),'remove',_0xce4e('0x1')];function createListener(_0x14bfb3,_0x3af39a){return function(_0x4d3e1b){_0x3af39a[_0xce4e('0x2')](_0x14bfb3,_0x4d3e1b);};}function removeListener(_0xab969b,_0xaf6296){return function(){MailMessageEvents[_0xce4e('0x3')](_0xab969b,_0xaf6296);};}exports[_0xce4e('0x4')]=function(_0x464809){for(var _0x133772=0x0,_0x5270be=events[_0xce4e('0x5')];_0x133772<_0x5270be;_0x133772++){var _0x53e28a=events[_0x133772];var _0x595549=createListener(_0xce4e('0x6')+_0x53e28a,_0x464809);MailMessageEvents['on'](_0x53e28a,_0x595549);}};
\ No newline at end of file
index 39b4a32..c392a4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaedb=['./mailQueue.controller','isAuthenticated','index','get','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getAgents','post','create','addTeams','/:id/users','addAgents','delete','removeAgents','exports','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x233220,_0x4b9591){var _0x3747e8=function(_0x1905aa){while(--_0x1905aa){_0x233220['push'](_0x233220['shift']());}};_0x3747e8(++_0x4b9591);}(_0xaedb,0x107));var _0xbaed=function(_0x6629f5,_0x49adc5){_0x6629f5=_0x6629f5-0x0;var _0x1ba145=_0xaedb[_0x6629f5];return _0x1ba145;};'use strict';var multer=require('multer');var util=require(_0xbaed('0x0'));var path=require(_0xbaed('0x1'));var timeout=require('connect-timeout');var express=require(_0xbaed('0x2'));var router=express[_0xbaed('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xbaed('0x4'));var interaction=require(_0xbaed('0x5'));var config=require(_0xbaed('0x6'));var controller=require(_0xbaed('0x7'));router['get']('/',auth[_0xbaed('0x8')](),controller[_0xbaed('0x9')]);router[_0xbaed('0xa')](_0xbaed('0xb'),auth[_0xbaed('0x8')](),controller[_0xbaed('0xc')]);router[_0xbaed('0xa')](_0xbaed('0xd'),auth[_0xbaed('0x8')](),controller[_0xbaed('0xe')]);router[_0xbaed('0xa')](_0xbaed('0xf'),auth['isAuthenticated'](),controller[_0xbaed('0x10')]);router['get'](_0xbaed('0x11'),auth[_0xbaed('0x8')](),controller['getTeams']);router['get']('/:id/users',auth['isAuthenticated'](),controller[_0xbaed('0x12')]);router[_0xbaed('0x13')]('/',auth['isAuthenticated'](),controller[_0xbaed('0x14')]);router[_0xbaed('0x13')](_0xbaed('0x11'),auth[_0xbaed('0x8')](),controller[_0xbaed('0x15')]);router['post'](_0xbaed('0x16'),auth['isAuthenticated'](),controller[_0xbaed('0x17')]);router['put']('/:id',auth[_0xbaed('0x8')](),controller['update']);router['delete'](_0xbaed('0xd'),auth[_0xbaed('0x8')](),controller['destroy']);router[_0xbaed('0x18')]('/:id/teams',auth[_0xbaed('0x8')](),controller['removeTeams']);router['delete'](_0xbaed('0x16'),auth['isAuthenticated'](),controller[_0xbaed('0x19')]);module[_0xbaed('0x1a')]=router;
\ No newline at end of file
+var _0xcfe3=['delete','destroy','removeTeams','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueue.controller','get','isAuthenticated','/describe','/:id','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','addTeams','update'];(function(_0x1a6cb2,_0x1945e0){var _0x1482a1=function(_0x145f6f){while(--_0x145f6f){_0x1a6cb2['push'](_0x1a6cb2['shift']());}};_0x1482a1(++_0x1945e0);}(_0xcfe3,0x1d8));var _0x3cfe=function(_0x36fc4c,_0x1c3ff8){_0x36fc4c=_0x36fc4c-0x0;var _0x5a7210=_0xcfe3[_0x36fc4c];return _0x5a7210;};'use strict';var multer=require(_0x3cfe('0x0'));var util=require('util');var path=require(_0x3cfe('0x1'));var timeout=require(_0x3cfe('0x2'));var express=require(_0x3cfe('0x3'));var router=express['Router']();var fs_extra=require(_0x3cfe('0x4'));var auth=require(_0x3cfe('0x5'));var interaction=require(_0x3cfe('0x6'));var config=require(_0x3cfe('0x7'));var controller=require(_0x3cfe('0x8'));router[_0x3cfe('0x9')]('/',auth[_0x3cfe('0xa')](),controller['index']);router[_0x3cfe('0x9')](_0x3cfe('0xb'),auth[_0x3cfe('0xa')](),controller['describe']);router[_0x3cfe('0x9')](_0x3cfe('0xc'),auth[_0x3cfe('0xa')](),controller['show']);router[_0x3cfe('0x9')](_0x3cfe('0xd'),auth[_0x3cfe('0xa')](),controller[_0x3cfe('0xe')]);router[_0x3cfe('0x9')](_0x3cfe('0xf'),auth['isAuthenticated'](),controller[_0x3cfe('0x10')]);router[_0x3cfe('0x9')](_0x3cfe('0x11'),auth[_0x3cfe('0xa')](),controller[_0x3cfe('0x12')]);router[_0x3cfe('0x13')]('/',auth[_0x3cfe('0xa')](),controller['create']);router[_0x3cfe('0x13')](_0x3cfe('0xf'),auth[_0x3cfe('0xa')](),controller[_0x3cfe('0x14')]);router[_0x3cfe('0x13')](_0x3cfe('0x11'),auth[_0x3cfe('0xa')](),controller['addAgents']);router['put'](_0x3cfe('0xc'),auth[_0x3cfe('0xa')](),controller[_0x3cfe('0x15')]);router[_0x3cfe('0x16')](_0x3cfe('0xc'),auth[_0x3cfe('0xa')](),controller[_0x3cfe('0x17')]);router['delete'](_0x3cfe('0xf'),auth[_0x3cfe('0xa')](),controller[_0x3cfe('0x18')]);router['delete'](_0x3cfe('0x11'),auth[_0x3cfe('0xa')](),controller['removeAgents']);module[_0x3cfe('0x19')]=router;
\ No newline at end of file
index b296190..cbf7cf1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x016d=['name','ENUM','beepall','roundrobin','sequelize','STRING'];(function(_0x240347,_0x39ab4f){var _0x34dbf8=function(_0x185cd0){while(--_0x185cd0){_0x240347['push'](_0x240347['shift']());}};_0x34dbf8(++_0x39ab4f);}(_0x016d,0xa0));var _0xd016=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x016d[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0xd016('0x0'));module['exports']={'name':{'type':Sequelize[_0xd016('0x1')],'unique':_0xd016('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xd016('0x1')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xd016('0x3')]('rrmemory',_0xd016('0x4'),_0xd016('0x5'))}};
\ No newline at end of file
+var _0x1b1a=['ENUM','rrmemory','beepall','roundrobin','sequelize','STRING','name','INTEGER'];(function(_0x3ae528,_0x48614a){var _0x472cc9=function(_0x1767b7){while(--_0x1767b7){_0x3ae528['push'](_0x3ae528['shift']());}};_0x472cc9(++_0x48614a);}(_0x1b1a,0xac));var _0xa1b1=function(_0x1168a1,_0xa0d8c9){_0x1168a1=_0x1168a1-0x0;var _0xcc5ad8=_0x1b1a[_0x1168a1];return _0xcc5ad8;};'use strict';var Sequelize=require(_0xa1b1('0x0'));module['exports']={'name':{'type':Sequelize[_0xa1b1('0x1')],'unique':_0xa1b1('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xa1b1('0x1')]},'timeout':{'type':Sequelize[_0xa1b1('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xa1b1('0x4')](_0xa1b1('0x5'),_0xa1b1('0x6'),_0xa1b1('0x7'))}};
\ No newline at end of file
index f03550b..9fc190b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfaf3=['addAgents','spread','userMailQueue:save','isArray','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./mailQueue.socket','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','reject','update','then','MailQueues','UserProfileResource','error','name','send','map','MailQueue','rawAttributes','fieldName','type','key','model','query','keys','filters','fields','attributes','order','sort','pick','filter','where','VIRTUAL','merge','options','include','findAll','catch','params','intersection','length','includeAll','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','describe','getMembers','hasOwnProperty','nolimit','MailQueueId','UserMailQueue','User','findAndCountAll','UserId','agent','mailPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','findOne','Team','addTeams','ids','Agents','online','voicePause','interface','sequelize','findOrCreate','forEach','select','field','tq.TeamId','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ut.UserId\x20=\x20?','push','toString','SELECT','every','includes','union','compact','value','removeTeams','isEmpty','removeAgents','emit','userMailQueue:remove'];(function(_0x3a429d,_0x5bc6a9){var _0x3adfa1=function(_0x543d91){while(--_0x543d91){_0x3a429d['push'](_0x3a429d['shift']());}};_0x3adfa1(++_0x5bc6a9);}(_0xfaf3,0x93));var _0x3faf=function(_0x39fbd4,_0x150283){_0x39fbd4=_0x39fbd4-0x0;var _0x343944=_0xfaf3[_0x39fbd4];return _0x343944;};'use strict';var emlformat=require(_0x3faf('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3faf('0x1'));var jsonpatch=require(_0x3faf('0x2'));var rp=require(_0x3faf('0x3'));var moment=require(_0x3faf('0x4'));var BPromise=require(_0x3faf('0x5'));var Mustache=require(_0x3faf('0x6'));var util=require(_0x3faf('0x7'));var path=require(_0x3faf('0x8'));var sox=require(_0x3faf('0x9'));var csv=require(_0x3faf('0xa'));var ejs=require(_0x3faf('0xb'));var fs=require('fs');var fs_extra=require(_0x3faf('0xc'));var _=require(_0x3faf('0xd'));var squel=require(_0x3faf('0xe'));var crypto=require(_0x3faf('0xf'));var jsforce=require(_0x3faf('0x10'));var deskjs=require(_0x3faf('0x11'));var toCsv=require('to-csv');var querystring=require(_0x3faf('0x12'));var Papa=require(_0x3faf('0x13'));var Redis=require(_0x3faf('0x14'));var authService=require(_0x3faf('0x15'));var qs=require(_0x3faf('0x16'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3faf('0x17'));var logger=require(_0x3faf('0x18'))(_0x3faf('0x19'));var utils=require(_0x3faf('0x1a'));var config=require(_0x3faf('0x1b'));var licenseUtil=require(_0x3faf('0x1c'));var db=require(_0x3faf('0x1d'))['db'];config[_0x3faf('0x1e')]=_[_0x3faf('0x1f')](config['redis'],{'host':_0x3faf('0x20'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3faf('0x1e')]));require(_0x3faf('0x21'))['register'](socket);function respondWithStatusCode(_0x31995d,_0x4e34fe){_0x4e34fe=_0x4e34fe||0xcc;return function(_0x59fd15){if(_0x59fd15){return _0x31995d[_0x3faf('0x22')](_0x4e34fe);}return _0x31995d['status'](_0x4e34fe)['end']();};}function respondWithResult(_0x1a6d5e,_0x34894a){_0x34894a=_0x34894a||0xc8;return function(_0x8d80a2){if(_0x8d80a2){return _0x1a6d5e[_0x3faf('0x23')](_0x34894a)[_0x3faf('0x24')](_0x8d80a2);}};}function respondWithFilteredResult(_0xbdb00,_0x47795d){return function(_0x5568db){if(_0x5568db){var _0x3d311d=typeof _0x47795d[_0x3faf('0x25')]===_0x3faf('0x26')&&typeof _0x47795d['limit']===_0x3faf('0x26');var _0x29306c=_0x5568db[_0x3faf('0x27')];var _0x47d7a4=_0x3d311d?0x0:_0x47795d[_0x3faf('0x25')];var _0x2e382d=_0x3d311d?_0x5568db['count']:_0x47795d[_0x3faf('0x25')]+_0x47795d[_0x3faf('0x28')];var _0x15806a;if(_0x2e382d>=_0x29306c){_0x2e382d=_0x29306c;_0x15806a=0xc8;}else{_0x15806a=0xce;}_0xbdb00[_0x3faf('0x23')](_0x15806a);return _0xbdb00[_0x3faf('0x29')](_0x3faf('0x2a'),_0x47d7a4+'-'+_0x2e382d+'/'+_0x29306c)[_0x3faf('0x24')](_0x5568db);}return null;};}function patchUpdates(_0x44c73d){return function(_0x1d3728){try{jsonpatch['apply'](_0x1d3728,_0x44c73d,!![]);}catch(_0x7c968){return BPromise[_0x3faf('0x2b')](_0x7c968);}return _0x1d3728['save']();};}function saveUpdates(_0x1ba12b,_0x7071bd){return function(_0x44a47f){if(_0x44a47f){return _0x44a47f[_0x3faf('0x2c')](_0x1ba12b)[_0x3faf('0x2d')](function(_0x230aa9){return _0x230aa9;});}return null;};}function removeEntity(_0x1f7b8e,_0x5eff89){return function(_0x1c611a){if(_0x1c611a){return _0x1c611a['destroy']()[_0x3faf('0x2d')](function(){var _0x5f347e=_0x1c611a['get']({'plain':!![]});var _0x26c4ab=_0x3faf('0x2e');return db[_0x3faf('0x2f')]['destroy']({'where':{'type':_0x26c4ab,'resourceId':_0x5f347e['id']}})[_0x3faf('0x2d')](function(){return _0x1c611a;});})['then'](function(){_0x1f7b8e[_0x3faf('0x23')](0xcc)['end']();});}};}function handleEntityNotFound(_0x24fe39,_0xcec611){return function(_0x43d660){if(!_0x43d660){_0x24fe39['sendStatus'](0x194);}return _0x43d660;};}function handleError(_0x3d112a,_0x37cd79){_0x37cd79=_0x37cd79||0x1f4;return function(_0x54587e){logger[_0x3faf('0x30')](_0x54587e['stack']);if(_0x54587e[_0x3faf('0x31')]){delete _0x54587e[_0x3faf('0x31')];}_0x3d112a[_0x3faf('0x23')](_0x37cd79)[_0x3faf('0x32')](_0x54587e);};}exports['index']=function(_0x21c1ce,_0x3fa177){var _0x5f54f8={},_0x226db5={},_0x38ab8e={'count':0x0,'rows':[]};var _0x1ec31d=_[_0x3faf('0x33')](db[_0x3faf('0x34')][_0x3faf('0x35')],function(_0x5bbb13){return{'name':_0x5bbb13[_0x3faf('0x36')],'type':_0x5bbb13[_0x3faf('0x37')][_0x3faf('0x38')]};});_0x226db5[_0x3faf('0x39')]=_['map'](_0x1ec31d,_0x3faf('0x31'));_0x226db5[_0x3faf('0x3a')]=_[_0x3faf('0x3b')](_0x21c1ce['query']);_0x226db5[_0x3faf('0x3c')]=_['intersection'](_0x226db5[_0x3faf('0x39')],_0x226db5[_0x3faf('0x3a')]);_0x5f54f8['attributes']=_['intersection'](_0x226db5[_0x3faf('0x39')],qs[_0x3faf('0x3d')](_0x21c1ce[_0x3faf('0x3a')]['fields']));_0x5f54f8['attributes']=_0x5f54f8['attributes']['length']?_0x5f54f8[_0x3faf('0x3e')]:_0x226db5[_0x3faf('0x39')];if(!_0x21c1ce[_0x3faf('0x3a')]['hasOwnProperty']('nolimit')){_0x5f54f8[_0x3faf('0x28')]=qs['limit'](_0x21c1ce[_0x3faf('0x3a')][_0x3faf('0x28')]);_0x5f54f8[_0x3faf('0x25')]=qs['offset'](_0x21c1ce['query']['offset']);}_0x5f54f8[_0x3faf('0x3f')]=qs[_0x3faf('0x40')](_0x21c1ce[_0x3faf('0x3a')]['sort']);_0x5f54f8['where']=qs[_0x3faf('0x3c')](_[_0x3faf('0x41')](_0x21c1ce['query'],_0x226db5[_0x3faf('0x3c')]),_0x1ec31d);if(_0x21c1ce[_0x3faf('0x3a')][_0x3faf('0x42')]){_0x5f54f8[_0x3faf('0x43')]=_['merge'](_0x5f54f8[_0x3faf('0x43')],{'$or':_[_0x3faf('0x33')](_0x1ec31d,function(_0x278012){if(_0x278012[_0x3faf('0x37')]!==_0x3faf('0x44')){var _0x26ed54={};_0x26ed54[_0x278012[_0x3faf('0x31')]]={'$like':'%'+_0x21c1ce[_0x3faf('0x3a')][_0x3faf('0x42')]+'%'};return _0x26ed54;}})});}_0x5f54f8=_[_0x3faf('0x45')]({},_0x5f54f8,_0x21c1ce[_0x3faf('0x46')]);var _0xe538e3={'where':_0x5f54f8['where']};return db[_0x3faf('0x34')][_0x3faf('0x27')](_0xe538e3)[_0x3faf('0x2d')](function(_0x1ec838){_0x38ab8e[_0x3faf('0x27')]=_0x1ec838;if(_0x21c1ce[_0x3faf('0x3a')]['includeAll']){_0x5f54f8[_0x3faf('0x47')]=[{'all':!![]}];}return db[_0x3faf('0x34')][_0x3faf('0x48')](_0x5f54f8);})[_0x3faf('0x2d')](function(_0x3ee414){_0x38ab8e['rows']=_0x3ee414;return _0x38ab8e;})[_0x3faf('0x2d')](respondWithFilteredResult(_0x3fa177,_0x5f54f8))[_0x3faf('0x49')](handleError(_0x3fa177,null));};exports['show']=function(_0x2d38c6,_0x558b55){var _0x3b59c7={'raw':!![],'where':{'id':_0x2d38c6[_0x3faf('0x4a')]['id']}},_0x4fb496={};_0x4fb496[_0x3faf('0x39')]=_[_0x3faf('0x3b')](db[_0x3faf('0x34')][_0x3faf('0x35')]);_0x4fb496[_0x3faf('0x3a')]=_['keys'](_0x2d38c6['query']);_0x4fb496[_0x3faf('0x3c')]=_['intersection'](_0x4fb496[_0x3faf('0x39')],_0x4fb496['query']);_0x3b59c7[_0x3faf('0x3e')]=_[_0x3faf('0x4b')](_0x4fb496[_0x3faf('0x39')],qs['fields'](_0x2d38c6[_0x3faf('0x3a')][_0x3faf('0x3d')]));_0x3b59c7[_0x3faf('0x3e')]=_0x3b59c7['attributes'][_0x3faf('0x4c')]?_0x3b59c7[_0x3faf('0x3e')]:_0x4fb496[_0x3faf('0x39')];if(_0x2d38c6[_0x3faf('0x3a')][_0x3faf('0x4d')]){_0x3b59c7[_0x3faf('0x47')]=[{'all':!![]}];}_0x3b59c7=_[_0x3faf('0x45')]({},_0x3b59c7,_0x2d38c6[_0x3faf('0x46')]);return db[_0x3faf('0x34')][_0x3faf('0x4e')](_0x3b59c7)[_0x3faf('0x2d')](handleEntityNotFound(_0x558b55,null))[_0x3faf('0x2d')](respondWithResult(_0x558b55,null))[_0x3faf('0x49')](handleError(_0x558b55,null));};exports[_0x3faf('0x4f')]=function(_0x58f292,_0x299fcf){return db[_0x3faf('0x34')][_0x3faf('0x4f')](_0x58f292[_0x3faf('0x50')],{})[_0x3faf('0x2d')](function(_0x5774d8){var _0x5a6b97=_0x58f292['user'][_0x3faf('0x51')]({'plain':!![]});if(!_0x5a6b97)throw new Error(_0x3faf('0x52'));if(_0x5a6b97[_0x3faf('0x53')]===_0x3faf('0x54')){var _0x159029=_0x5774d8['get']({'plain':!![]});var _0x510db3=_0x3faf('0x2e');return db[_0x3faf('0x55')][_0x3faf('0x4e')]({'where':{'name':_0x510db3,'userProfileId':_0x5a6b97[_0x3faf('0x56')]},'raw':!![]})['then'](function(_0x515c1d){if(_0x515c1d&&_0x515c1d[_0x3faf('0x57')]===0x0){return db[_0x3faf('0x2f')][_0x3faf('0x4f')]({'name':_0x159029[_0x3faf('0x31')],'resourceId':_0x159029['id'],'type':_0x515c1d[_0x3faf('0x31')],'sectionId':_0x515c1d['id']},{})['then'](function(){return _0x5774d8;});}else{return _0x5774d8;}})['catch'](function(_0xfdacd5){logger[_0x3faf('0x30')](_0x3faf('0x58'),_0xfdacd5);throw _0xfdacd5;});}return _0x5774d8;})['then'](respondWithResult(_0x299fcf,0xc9))[_0x3faf('0x49')](handleError(_0x299fcf,null));};exports[_0x3faf('0x2c')]=function(_0x5b7ec1,_0x4ce652){if(_0x5b7ec1['body']['id']){delete _0x5b7ec1[_0x3faf('0x50')]['id'];}return db[_0x3faf('0x34')][_0x3faf('0x4e')]({'where':{'id':_0x5b7ec1['params']['id']}})[_0x3faf('0x2d')](handleEntityNotFound(_0x4ce652,null))['then'](saveUpdates(_0x5b7ec1['body'],null))[_0x3faf('0x2d')](respondWithResult(_0x4ce652,null))['catch'](handleError(_0x4ce652,null));};exports[_0x3faf('0x59')]=function(_0x472db0,_0x2aedff){return db[_0x3faf('0x34')][_0x3faf('0x4e')]({'where':{'id':_0x472db0[_0x3faf('0x4a')]['id']}})[_0x3faf('0x2d')](handleEntityNotFound(_0x2aedff,null))['then'](removeEntity(_0x2aedff,null))[_0x3faf('0x49')](handleError(_0x2aedff,null));};exports[_0x3faf('0x5a')]=function(_0x10bebb,_0x587aa3){return db['MailQueue'][_0x3faf('0x5a')]()[_0x3faf('0x2d')](respondWithResult(_0x587aa3,null))['catch'](handleError(_0x587aa3,null));};exports[_0x3faf('0x5b')]=function(_0x4dd929,_0x12ff00,_0x315a44){var _0x265f90={'raw':!![],'where':{}},_0x159376={},_0x1189c4;return db[_0x3faf('0x34')]['findOne']({'where':{'id':_0x4dd929[_0x3faf('0x4a')]['id']}})[_0x3faf('0x2d')](handleEntityNotFound(_0x12ff00,null))[_0x3faf('0x2d')](function(_0x14be21){if(_0x14be21){_0x1189c4=_0x14be21[_0x3faf('0x51')]({'plain':!![]});_0x159376[_0x3faf('0x39')]=_[_0x3faf('0x3b')](db['UserMailQueue']['rawAttributes']);_0x159376[_0x3faf('0x3a')]=_[_0x3faf('0x3b')](_0x4dd929['query']);_0x159376[_0x3faf('0x3c')]=_[_0x3faf('0x4b')](_0x159376[_0x3faf('0x39')],_0x159376[_0x3faf('0x3a')]);_0x265f90[_0x3faf('0x3e')]=_[_0x3faf('0x4b')](_0x159376[_0x3faf('0x39')],qs[_0x3faf('0x3d')](_0x4dd929[_0x3faf('0x3a')][_0x3faf('0x3d')]));_0x265f90[_0x3faf('0x3e')]=_0x265f90['attributes']['length']?_0x265f90[_0x3faf('0x3e')]:_0x159376['model'];if(!_0x4dd929[_0x3faf('0x3a')][_0x3faf('0x5c')](_0x3faf('0x5d'))){_0x265f90['limit']=qs[_0x3faf('0x28')](_0x4dd929['query'][_0x3faf('0x28')]);_0x265f90[_0x3faf('0x25')]=qs[_0x3faf('0x25')](_0x4dd929[_0x3faf('0x3a')]['offset']);}_0x265f90[_0x3faf('0x3f')]=qs['sort'](_0x4dd929[_0x3faf('0x3a')]['sort']);_0x265f90[_0x3faf('0x43')]=qs[_0x3faf('0x3c')](_['pick'](_0x4dd929[_0x3faf('0x3a')],_0x159376[_0x3faf('0x3c')]));_0x265f90[_0x3faf('0x43')][_0x3faf('0x5e')]=_0x14be21['id'];if(_0x4dd929[_0x3faf('0x3a')][_0x3faf('0x42')]){_0x265f90['where']=_[_0x3faf('0x45')](_0x265f90[_0x3faf('0x43')],{'$or':_['map'](_0x265f90[_0x3faf('0x3e')],function(_0x1e567e){var _0x34c550={};_0x34c550[_0x1e567e]={'$like':'%'+_0x4dd929[_0x3faf('0x3a')]['filter']+'%'};return _0x34c550;})});}_0x265f90=_[_0x3faf('0x45')]({},_0x265f90,_0x4dd929[_0x3faf('0x46')]);return db[_0x3faf('0x5f')][_0x3faf('0x48')](_0x265f90);}})[_0x3faf('0x2d')](function(_0x43230f){if(_0x43230f){return db[_0x3faf('0x60')][_0x3faf('0x61')]({'where':{'id':_[_0x3faf('0x33')](_0x43230f,_0x3faf('0x62')),'role':_0x3faf('0x63')},'attributes':['id',_0x3faf('0x31'),_0x3faf('0x64'),_0x3faf('0x65'),_0x3faf('0x66')]});}})[_0x3faf('0x2d')](function(_0x58f55d){if(_0x58f55d){return{'count':_0x58f55d['count'],'rows':_[_0x3faf('0x33')](_0x58f55d['rows'],function(_0x8b2359){return{'membername':_0x8b2359['name'],'UserId':_0x8b2359['id'],'queue_name':_0x1189c4[_0x3faf('0x31')],'MailQueueId':_0x1189c4['id'],'interface':util[_0x3faf('0x67')](_0x3faf('0x68'),_0x3faf('0x69'),_0x8b2359['name']),'penalty':0x0,'paused':_0x8b2359[_0x3faf('0x64')],'createdAt':_0x8b2359['createdAt'],'updatedAt':_0x8b2359['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x3faf('0x2d')](respondWithFilteredResult(_0x12ff00,_0x265f90))[_0x3faf('0x49')](handleError(_0x12ff00,null));};exports[_0x3faf('0x6a')]=function(_0x1c175b,_0x9aa336,_0x6bb58b){var _0x15687e={};var _0x46a786={};var _0x2a9974;var _0x35b94d;return db[_0x3faf('0x34')][_0x3faf('0x6b')]({'where':{'id':_0x1c175b['params']['id']}})[_0x3faf('0x2d')](handleEntityNotFound(_0x9aa336,null))['then'](function(_0x4275ce){if(_0x4275ce){_0x2a9974=_0x4275ce;_0x46a786[_0x3faf('0x39')]=_['keys'](db[_0x3faf('0x6c')][_0x3faf('0x35')]);_0x46a786[_0x3faf('0x3a')]=_[_0x3faf('0x3b')](_0x1c175b[_0x3faf('0x3a')]);_0x46a786['filters']=_[_0x3faf('0x4b')](_0x46a786[_0x3faf('0x39')],_0x46a786[_0x3faf('0x3a')]);_0x15687e[_0x3faf('0x3e')]=_[_0x3faf('0x4b')](_0x46a786[_0x3faf('0x39')],qs['fields'](_0x1c175b['query'][_0x3faf('0x3d')]));_0x15687e['attributes']=_0x15687e[_0x3faf('0x3e')]['length']?_0x15687e['attributes']:_0x46a786['model'];_0x15687e['order']=qs[_0x3faf('0x40')](_0x1c175b[_0x3faf('0x3a')][_0x3faf('0x40')]);_0x15687e[_0x3faf('0x43')]=qs['filters'](_[_0x3faf('0x41')](_0x1c175b[_0x3faf('0x3a')],_0x46a786['filters']));if(_0x1c175b[_0x3faf('0x3a')][_0x3faf('0x42')]){_0x15687e[_0x3faf('0x43')]=_[_0x3faf('0x45')](_0x15687e[_0x3faf('0x43')],{'$or':_[_0x3faf('0x33')](_0x15687e[_0x3faf('0x3e')],function(_0x481423){var _0x401a6c={};_0x401a6c[_0x481423]={'$like':'%'+_0x1c175b[_0x3faf('0x3a')][_0x3faf('0x42')]+'%'};return _0x401a6c;})});}_0x15687e=_[_0x3faf('0x45')]({},_0x15687e,_0x1c175b[_0x3faf('0x46')]);return _0x2a9974[_0x3faf('0x6a')](_0x15687e);}})[_0x3faf('0x2d')](function(_0x399fa){if(_0x399fa){_0x35b94d=_0x399fa[_0x3faf('0x4c')];if(!_0x1c175b[_0x3faf('0x3a')][_0x3faf('0x5c')]('nolimit')){_0x15687e[_0x3faf('0x28')]=qs[_0x3faf('0x28')](_0x1c175b[_0x3faf('0x3a')]['limit']);_0x15687e[_0x3faf('0x25')]=qs[_0x3faf('0x25')](_0x1c175b[_0x3faf('0x3a')]['offset']);}return _0x2a9974[_0x3faf('0x6a')](_0x15687e);}})[_0x3faf('0x2d')](function(_0xdc28c4){if(_0xdc28c4){return _0xdc28c4?{'count':_0x35b94d,'rows':_0xdc28c4}:null;}})[_0x3faf('0x2d')](respondWithResult(_0x9aa336,null))[_0x3faf('0x49')](handleError(_0x9aa336,null));};exports[_0x3faf('0x6d')]=function(_0x4280a4,_0x1b8eda,_0x2548d0){var _0x2acc47=_0x4280a4[_0x3faf('0x50')][_0x3faf('0x6e')];return db[_0x3faf('0x6c')][_0x3faf('0x48')]({'where':{'id':_0x2acc47},'attributes':['id'],'include':[{'model':db['User'],'as':_0x3faf('0x6f'),'attributes':['id',_0x3faf('0x31'),_0x3faf('0x70'),_0x3faf('0x71'),_0x3faf('0x72')],'raw':!![]}]})[_0x3faf('0x2d')](function(_0x2a567f){if(_0x2a567f){var _0xef8e15=_['flatMap'](_0x2a567f,function(_0x1be8db){var _0x375ea3=_0x1be8db[_0x3faf('0x51')]({'plain':!![]});return _0x375ea3['Agents'];});return db[_0x3faf('0x34')]['find']({'where':{'id':_0x4280a4[_0x3faf('0x4a')]['id']}})[_0x3faf('0x2d')](function(_0x571f8f){return db[_0x3faf('0x73')]['transaction'](function(_0x5cbfcc){return _0x571f8f[_0x3faf('0x6d')](_0x2acc47,{'transaction':_0x5cbfcc})['then'](function(){return BPromise['each'](_0xef8e15,function(_0x18422c){return db[_0x3faf('0x5f')][_0x3faf('0x74')]({'where':{'UserId':_0x18422c['id'],'MailQueueId':_0x4280a4[_0x3faf('0x4a')]['id']},'transaction':_0x5cbfcc});});})[_0x3faf('0x2d')](function(){_0xef8e15[_0x3faf('0x75')](function(_0xb70e31){socket['emit']('userMailQueue:save',{'UserId':_0xb70e31['id'],'MailQueueId':_0x571f8f['id']});});});});});}})[_0x3faf('0x2d')](respondWithStatusCode(_0x1b8eda,null))[_0x3faf('0x49')](handleError(_0x1b8eda,null));};exports['removeTeams']=function(_0x419c1b,_0x273721,_0xcc8776){return db[_0x3faf('0x6c')][_0x3faf('0x48')]({'where':{'id':_0x419c1b[_0x3faf('0x3a')][_0x3faf('0x6e')]},'attributes':['id'],'include':[{'model':db[_0x3faf('0x60')],'as':_0x3faf('0x6f'),'attributes':['id'],'raw':!![]}]})[_0x3faf('0x2d')](handleEntityNotFound(_0x273721,null))[_0x3faf('0x2d')](function(_0x5e3ca3){var _0x10fe8e=_[_0x3faf('0x33')](_0x5e3ca3,'id');var _0x454aa6=[];var _0x1431e2=[];var _0x38ef20=squel[_0x3faf('0x76')]();_0x38ef20[_0x3faf('0x77')](_0x3faf('0x78'))['from']('team_has_mail_queues','tq')['join'](_0x3faf('0x79'),'ut',_0x3faf('0x7a'))[_0x3faf('0x43')]('MailQueueId\x20=\x20?',_0x419c1b[_0x3faf('0x4a')]['id']);for(var _0x47eb2c=0x0;_0x47eb2c<_0x5e3ca3[_0x3faf('0x4c')];_0x47eb2c+=0x1){let _0x3c8712=_0x5e3ca3[_0x47eb2c];for(var _0x407511=0x0;_0x407511<_0x3c8712['Agents']['length'];_0x407511+=0x1){let _0x330bc4=_0x3c8712[_0x3faf('0x6f')][_0x407511];var _0x16fb0e=_0x38ef20['clone']();_0x16fb0e[_0x3faf('0x43')](_0x3faf('0x7b'),_0x330bc4['id']);_0x1431e2[_0x3faf('0x7c')](db['sequelize'][_0x3faf('0x3a')](_0x16fb0e[_0x3faf('0x7d')](),{'type':db[_0x3faf('0x73')]['QueryTypes'][_0x3faf('0x7e')]})[_0x3faf('0x2d')](function(_0xa923cd){if(_0xa923cd['length']===0x1){return _0x330bc4['id'];}else{var _0x1bb381=_[_0x3faf('0x7f')](_[_0x3faf('0x33')](_0xa923cd,'TeamId'),function(_0x4daed2){return _[_0x3faf('0x80')](_0x10fe8e,_0x4daed2);});if(_0x1bb381){return _0x330bc4['id'];}}}));}}return BPromise['all'](_0x1431e2)[_0x3faf('0x2d')](function(_0x716e2a){_0x454aa6=_(_0x454aa6)[_0x3faf('0x81')](_0x716e2a)[_0x3faf('0x82')]()[_0x3faf('0x83')]();return db[_0x3faf('0x34')][_0x3faf('0x4e')]({'where':{'id':_0x419c1b[_0x3faf('0x4a')]['id']}})[_0x3faf('0x2d')](function(_0x9ede16){return db[_0x3faf('0x73')]['transaction'](function(_0x8d5ae2){return _0x9ede16[_0x3faf('0x84')](_0x419c1b['query'][_0x3faf('0x6e')],{'transaction':_0x8d5ae2})[_0x3faf('0x2d')](function(){if(!_[_0x3faf('0x85')](_0x454aa6)){return _0x9ede16[_0x3faf('0x86')](_0x454aa6,{'transaction':_0x8d5ae2});}})[_0x3faf('0x2d')](function(){_0x454aa6[_0x3faf('0x75')](function(_0x34fe6a){socket[_0x3faf('0x87')](_0x3faf('0x88'),{'UserId':_0x34fe6a,'MailQueueId':_0x9ede16['id']});});});});});});})['then'](respondWithStatusCode(_0x273721,null))[_0x3faf('0x49')](handleError(_0x273721,null));};exports[_0x3faf('0x89')]=function(_0x4a5d99,_0x51c92c,_0x7999e8){return db['MailQueue'][_0x3faf('0x4e')]({'where':{'id':_0x4a5d99[_0x3faf('0x4a')]['id']}})['then'](handleEntityNotFound(_0x51c92c,null))[_0x3faf('0x2d')](function(_0x53fb4e){if(_0x53fb4e){return _0x53fb4e[_0x3faf('0x89')](_0x4a5d99[_0x3faf('0x50')][_0x3faf('0x6e')],_['omit'](_0x4a5d99['body'],[_0x3faf('0x6e'),'id'])||{})[_0x3faf('0x8a')](function(_0x16d23c){for(var _0x30b3c0=0x0;_0x30b3c0<_0x4a5d99[_0x3faf('0x50')]['ids']['length'];_0x30b3c0+=0x1){socket['emit'](_0x3faf('0x8b'),{'UserId':Number(_0x4a5d99[_0x3faf('0x50')]['ids'][_0x30b3c0]),'MailQueueId':Number(_0x4a5d99[_0x3faf('0x4a')]['id'])});}return _0x16d23c;});}})[_0x3faf('0x2d')](respondWithResult(_0x51c92c,null))['catch'](handleError(_0x51c92c,null));};exports[_0x3faf('0x86')]=function(_0x3824ad,_0x2b66ac,_0x31d890){return db['MailQueue'][_0x3faf('0x4e')]({'where':{'id':_0x3824ad[_0x3faf('0x4a')]['id']}})[_0x3faf('0x2d')](handleEntityNotFound(_0x2b66ac,null))[_0x3faf('0x2d')](function(_0x433e7b){if(_0x433e7b){return _0x433e7b[_0x3faf('0x86')](_0x3824ad['query'][_0x3faf('0x6e')])[_0x3faf('0x2d')](function(){if(_[_0x3faf('0x8c')](_0x3824ad['query'][_0x3faf('0x6e')])){for(var _0xb0266d=0x0;_0xb0266d<_0x3824ad[_0x3faf('0x3a')]['ids'][_0x3faf('0x4c')];_0xb0266d+=0x1){socket['emit'](_0x3faf('0x88'),{'UserId':Number(_0x3824ad['query']['ids'][_0xb0266d]),'MailQueueId':Number(_0x3824ad[_0x3faf('0x4a')]['id'])});}}else{socket['emit'](_0x3faf('0x88'),{'UserId':Number(_0x3824ad[_0x3faf('0x3a')][_0x3faf('0x6e')]),'MailQueueId':Number(_0x3824ad[_0x3faf('0x4a')]['id'])});}});}})[_0x3faf('0x2d')](respondWithStatusCode(_0x2b66ac,null))[_0x3faf('0x49')](handleError(_0x2b66ac,null));};exports[_0x3faf('0x8d')]=function(_0x32a0f1,_0x4dad51,_0x2702f4){var _0x5069fa={};var _0x13364c={};var _0x74f76e;var _0x27f865;return db[_0x3faf('0x34')][_0x3faf('0x6b')]({'where':{'id':_0x32a0f1[_0x3faf('0x4a')]['id']}})[_0x3faf('0x2d')](handleEntityNotFound(_0x4dad51,null))[_0x3faf('0x2d')](function(_0x47f260){if(_0x47f260){_0x74f76e=_0x47f260;_0x13364c[_0x3faf('0x39')]=_['keys'](db[_0x3faf('0x60')][_0x3faf('0x35')]);_0x13364c['query']=_[_0x3faf('0x3b')](_0x32a0f1['query']);_0x13364c[_0x3faf('0x3c')]=_[_0x3faf('0x4b')](_0x13364c[_0x3faf('0x39')],_0x13364c['query']);_0x5069fa[_0x3faf('0x3e')]=_[_0x3faf('0x4b')](_0x13364c['model'],qs[_0x3faf('0x3d')](_0x32a0f1['query']['fields']));_0x5069fa[_0x3faf('0x3e')]=_0x5069fa[_0x3faf('0x3e')][_0x3faf('0x4c')]?_0x5069fa['attributes']:_0x13364c['model'];_0x5069fa[_0x3faf('0x3f')]=qs['sort'](_0x32a0f1[_0x3faf('0x3a')]['sort']);_0x5069fa['where']=qs[_0x3faf('0x3c')](_[_0x3faf('0x41')](_0x32a0f1[_0x3faf('0x3a')],_0x13364c['filters']));if(_0x32a0f1[_0x3faf('0x3a')]['filter']){_0x5069fa['where']=_[_0x3faf('0x45')](_0x5069fa[_0x3faf('0x43')],{'$or':_[_0x3faf('0x33')](_0x5069fa['attributes'],function(_0x3532d4){var _0x16efa5={};_0x16efa5[_0x3532d4]={'$like':'%'+_0x32a0f1[_0x3faf('0x3a')][_0x3faf('0x42')]+'%'};return _0x16efa5;})});}_0x5069fa=_[_0x3faf('0x45')]({},_0x5069fa,_0x32a0f1[_0x3faf('0x46')]);return _0x74f76e[_0x3faf('0x8d')](_0x5069fa);}})['then'](function(_0x5c8a48){if(_0x5c8a48){_0x27f865=_0x5c8a48[_0x3faf('0x4c')];if(!_0x32a0f1['query'][_0x3faf('0x5c')]('nolimit')){_0x5069fa['limit']=qs[_0x3faf('0x28')](_0x32a0f1[_0x3faf('0x3a')][_0x3faf('0x28')]);_0x5069fa[_0x3faf('0x25')]=qs[_0x3faf('0x25')](_0x32a0f1[_0x3faf('0x3a')]['offset']);}return _0x74f76e[_0x3faf('0x8d')](_0x5069fa);}})[_0x3faf('0x2d')](function(_0x11e0de){if(_0x11e0de){return _0x11e0de?{'count':_0x27f865,'rows':_0x11e0de}:null;}})['then'](respondWithResult(_0x4dad51,null))[_0x3faf('0x49')](handleError(_0x4dad51,null));};
\ No newline at end of file
+var _0x01b7=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','redis','socket.io-emitter','./mailQueue.socket','register','sendStatus','status','json','offset','limit','count','set','Content-Range','reject','update','then','destroy','MailQueues','end','error','stack','name','map','MailQueue','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','includeAll','include','catch','show','params','options','find','create','body','user','get','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserMailQueue','MailQueueId','filter','findAll','User','findAndCountAll','createdAt','rows','%s/%s','SIP','mailPause','updatedAt','getTeams','Team','addTeams','ids','Agents','voicePause','interface','flatMap','sequelize','each','findOrCreate','forEach','emit','userMailQueue:save','removeTeams','select','field','from','team_has_mail_queues','join','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','toString','every','all','union','value','isEmpty','removeAgents','userMailQueue:remove','addAgents','omit','spread','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x01b7,0x17f));var _0x701b=function(_0x2dfaf3,_0x2e21d2){_0x2dfaf3=_0x2dfaf3-0x0;var _0x119bb7=_0x01b7[_0x2dfaf3];return _0x119bb7;};'use strict';var emlformat=require(_0x701b('0x0'));var rimraf=require(_0x701b('0x1'));var zipdir=require(_0x701b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x701b('0x3'));var moment=require(_0x701b('0x4'));var BPromise=require(_0x701b('0x5'));var Mustache=require(_0x701b('0x6'));var util=require(_0x701b('0x7'));var path=require(_0x701b('0x8'));var sox=require(_0x701b('0x9'));var csv=require(_0x701b('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x701b('0xb'));var _=require(_0x701b('0xc'));var squel=require(_0x701b('0xd'));var crypto=require(_0x701b('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x701b('0xa'));var querystring=require(_0x701b('0xf'));var Papa=require(_0x701b('0x10'));var Redis=require(_0x701b('0x11'));var authService=require(_0x701b('0x12'));var qs=require(_0x701b('0x13'));var as=require(_0x701b('0x14'));var hardwareService=require(_0x701b('0x15'));var logger=require(_0x701b('0x16'))(_0x701b('0x17'));var utils=require('../../config/utils');var config=require(_0x701b('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x701b('0x19')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x701b('0x1a'))(new Redis(config[_0x701b('0x19')]));require(_0x701b('0x1b'))[_0x701b('0x1c')](socket);function respondWithStatusCode(_0x5e11fc,_0x1daf3b){_0x1daf3b=_0x1daf3b||0xcc;return function(_0xb76d47){if(_0xb76d47){return _0x5e11fc[_0x701b('0x1d')](_0x1daf3b);}return _0x5e11fc[_0x701b('0x1e')](_0x1daf3b)['end']();};}function respondWithResult(_0xcd2b4f,_0x2b07a9){_0x2b07a9=_0x2b07a9||0xc8;return function(_0x218eaa){if(_0x218eaa){return _0xcd2b4f[_0x701b('0x1e')](_0x2b07a9)[_0x701b('0x1f')](_0x218eaa);}};}function respondWithFilteredResult(_0x34d0da,_0x220bbb){return function(_0x2e6640){if(_0x2e6640){var _0x42f649=typeof _0x220bbb[_0x701b('0x20')]==='undefined'&&typeof _0x220bbb[_0x701b('0x21')]==='undefined';var _0x407023=_0x2e6640[_0x701b('0x22')];var _0x23298f=_0x42f649?0x0:_0x220bbb[_0x701b('0x20')];var _0x4586d7=_0x42f649?_0x2e6640['count']:_0x220bbb[_0x701b('0x20')]+_0x220bbb[_0x701b('0x21')];var _0x38dd6f;if(_0x4586d7>=_0x407023){_0x4586d7=_0x407023;_0x38dd6f=0xc8;}else{_0x38dd6f=0xce;}_0x34d0da[_0x701b('0x1e')](_0x38dd6f);return _0x34d0da[_0x701b('0x23')](_0x701b('0x24'),_0x23298f+'-'+_0x4586d7+'/'+_0x407023)[_0x701b('0x1f')](_0x2e6640);}return null;};}function patchUpdates(_0x5136c6){return function(_0x173f15){try{jsonpatch['apply'](_0x173f15,_0x5136c6,!![]);}catch(_0x2070df){return BPromise[_0x701b('0x25')](_0x2070df);}return _0x173f15['save']();};}function saveUpdates(_0x3e0622,_0x54b956){return function(_0x388920){if(_0x388920){return _0x388920[_0x701b('0x26')](_0x3e0622)[_0x701b('0x27')](function(_0xf5011a){return _0xf5011a;});}return null;};}function removeEntity(_0x22a8d1,_0x3a47a7){return function(_0x5adc6a){if(_0x5adc6a){return _0x5adc6a[_0x701b('0x28')]()[_0x701b('0x27')](function(){var _0x6bc1a3=_0x5adc6a['get']({'plain':!![]});var _0x54602c=_0x701b('0x29');return db['UserProfileResource'][_0x701b('0x28')]({'where':{'type':_0x54602c,'resourceId':_0x6bc1a3['id']}})['then'](function(){return _0x5adc6a;});})[_0x701b('0x27')](function(){_0x22a8d1[_0x701b('0x1e')](0xcc)[_0x701b('0x2a')]();});}};}function handleEntityNotFound(_0x145256,_0x2214c1){return function(_0x494eba){if(!_0x494eba){_0x145256[_0x701b('0x1d')](0x194);}return _0x494eba;};}function handleError(_0x2dac38,_0x344ed6){_0x344ed6=_0x344ed6||0x1f4;return function(_0x1b33c7){logger[_0x701b('0x2b')](_0x1b33c7[_0x701b('0x2c')]);if(_0x1b33c7['name']){delete _0x1b33c7[_0x701b('0x2d')];}_0x2dac38[_0x701b('0x1e')](_0x344ed6)['send'](_0x1b33c7);};}exports['index']=function(_0x29997c,_0xd11934){var _0x3f830b={},_0x135105={},_0x5e56d8={'count':0x0,'rows':[]};var _0x5bba53=_[_0x701b('0x2e')](db[_0x701b('0x2f')][_0x701b('0x30')],function(_0x21e3cf){return{'name':_0x21e3cf['fieldName'],'type':_0x21e3cf[_0x701b('0x31')][_0x701b('0x32')]};});_0x135105[_0x701b('0x33')]=_[_0x701b('0x2e')](_0x5bba53,_0x701b('0x2d'));_0x135105[_0x701b('0x34')]=_[_0x701b('0x35')](_0x29997c['query']);_0x135105[_0x701b('0x36')]=_['intersection'](_0x135105['model'],_0x135105['query']);_0x3f830b[_0x701b('0x37')]=_[_0x701b('0x38')](_0x135105[_0x701b('0x33')],qs[_0x701b('0x39')](_0x29997c['query']['fields']));_0x3f830b[_0x701b('0x37')]=_0x3f830b['attributes'][_0x701b('0x3a')]?_0x3f830b[_0x701b('0x37')]:_0x135105[_0x701b('0x33')];if(!_0x29997c[_0x701b('0x34')][_0x701b('0x3b')](_0x701b('0x3c'))){_0x3f830b['limit']=qs[_0x701b('0x21')](_0x29997c[_0x701b('0x34')][_0x701b('0x21')]);_0x3f830b[_0x701b('0x20')]=qs[_0x701b('0x20')](_0x29997c[_0x701b('0x34')]['offset']);}_0x3f830b[_0x701b('0x3d')]=qs[_0x701b('0x3e')](_0x29997c[_0x701b('0x34')][_0x701b('0x3e')]);_0x3f830b[_0x701b('0x3f')]=qs[_0x701b('0x36')](_[_0x701b('0x40')](_0x29997c[_0x701b('0x34')],_0x135105[_0x701b('0x36')]),_0x5bba53);if(_0x29997c['query']['filter']){_0x3f830b[_0x701b('0x3f')]=_[_0x701b('0x41')](_0x3f830b['where'],{'$or':_[_0x701b('0x2e')](_0x5bba53,function(_0x2fda9b){if(_0x2fda9b[_0x701b('0x31')]!==_0x701b('0x42')){var _0x3faf97={};_0x3faf97[_0x2fda9b['name']]={'$like':'%'+_0x29997c[_0x701b('0x34')]['filter']+'%'};return _0x3faf97;}})});}_0x3f830b=_['merge']({},_0x3f830b,_0x29997c['options']);var _0x323724={'where':_0x3f830b['where']};return db[_0x701b('0x2f')][_0x701b('0x22')](_0x323724)[_0x701b('0x27')](function(_0x4941c4){_0x5e56d8[_0x701b('0x22')]=_0x4941c4;if(_0x29997c['query'][_0x701b('0x43')]){_0x3f830b[_0x701b('0x44')]=[{'all':!![]}];}return db[_0x701b('0x2f')]['findAll'](_0x3f830b);})[_0x701b('0x27')](function(_0x38e9eb){_0x5e56d8['rows']=_0x38e9eb;return _0x5e56d8;})['then'](respondWithFilteredResult(_0xd11934,_0x3f830b))[_0x701b('0x45')](handleError(_0xd11934,null));};exports[_0x701b('0x46')]=function(_0x2804a3,_0x4ad569){var _0x1522c4={'raw':!![],'where':{'id':_0x2804a3[_0x701b('0x47')]['id']}},_0x47a752={};_0x47a752[_0x701b('0x33')]=_[_0x701b('0x35')](db[_0x701b('0x2f')][_0x701b('0x30')]);_0x47a752[_0x701b('0x34')]=_[_0x701b('0x35')](_0x2804a3[_0x701b('0x34')]);_0x47a752['filters']=_['intersection'](_0x47a752[_0x701b('0x33')],_0x47a752[_0x701b('0x34')]);_0x1522c4[_0x701b('0x37')]=_[_0x701b('0x38')](_0x47a752[_0x701b('0x33')],qs[_0x701b('0x39')](_0x2804a3[_0x701b('0x34')][_0x701b('0x39')]));_0x1522c4[_0x701b('0x37')]=_0x1522c4['attributes']['length']?_0x1522c4[_0x701b('0x37')]:_0x47a752[_0x701b('0x33')];if(_0x2804a3[_0x701b('0x34')]['includeAll']){_0x1522c4[_0x701b('0x44')]=[{'all':!![]}];}_0x1522c4=_[_0x701b('0x41')]({},_0x1522c4,_0x2804a3[_0x701b('0x48')]);return db[_0x701b('0x2f')][_0x701b('0x49')](_0x1522c4)[_0x701b('0x27')](handleEntityNotFound(_0x4ad569,null))['then'](respondWithResult(_0x4ad569,null))[_0x701b('0x45')](handleError(_0x4ad569,null));};exports[_0x701b('0x4a')]=function(_0x4db136,_0x256781){return db[_0x701b('0x2f')][_0x701b('0x4a')](_0x4db136[_0x701b('0x4b')],{})[_0x701b('0x27')](function(_0x5560f6){var _0x540dd5=_0x4db136[_0x701b('0x4c')][_0x701b('0x4d')]({'plain':!![]});if(!_0x540dd5)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x540dd5['role']===_0x701b('0x4c')){var _0x1479b1=_0x5560f6['get']({'plain':!![]});var _0x1a8d1b='MailQueues';return db[_0x701b('0x4e')][_0x701b('0x49')]({'where':{'name':_0x1a8d1b,'userProfileId':_0x540dd5[_0x701b('0x4f')]},'raw':!![]})[_0x701b('0x27')](function(_0x4080b6){if(_0x4080b6&&_0x4080b6[_0x701b('0x50')]===0x0){return db[_0x701b('0x51')][_0x701b('0x4a')]({'name':_0x1479b1['name'],'resourceId':_0x1479b1['id'],'type':_0x4080b6[_0x701b('0x2d')],'sectionId':_0x4080b6['id']},{})[_0x701b('0x27')](function(){return _0x5560f6;});}else{return _0x5560f6;}})[_0x701b('0x45')](function(_0x1d5f56){logger['error'](_0x701b('0x52'),_0x1d5f56);throw _0x1d5f56;});}return _0x5560f6;})[_0x701b('0x27')](respondWithResult(_0x256781,0xc9))['catch'](handleError(_0x256781,null));};exports[_0x701b('0x26')]=function(_0x4a79bb,_0x4fa510){if(_0x4a79bb[_0x701b('0x4b')]['id']){delete _0x4a79bb[_0x701b('0x4b')]['id'];}return db[_0x701b('0x2f')][_0x701b('0x49')]({'where':{'id':_0x4a79bb[_0x701b('0x47')]['id']}})[_0x701b('0x27')](handleEntityNotFound(_0x4fa510,null))[_0x701b('0x27')](saveUpdates(_0x4a79bb[_0x701b('0x4b')],null))[_0x701b('0x27')](respondWithResult(_0x4fa510,null))[_0x701b('0x45')](handleError(_0x4fa510,null));};exports[_0x701b('0x28')]=function(_0x82b35e,_0x338972){return db['MailQueue'][_0x701b('0x49')]({'where':{'id':_0x82b35e[_0x701b('0x47')]['id']}})[_0x701b('0x27')](handleEntityNotFound(_0x338972,null))[_0x701b('0x27')](removeEntity(_0x338972,null))[_0x701b('0x45')](handleError(_0x338972,null));};exports['describe']=function(_0x4b2eb8,_0x575d3e){return db[_0x701b('0x2f')][_0x701b('0x53')]()['then'](respondWithResult(_0x575d3e,null))['catch'](handleError(_0x575d3e,null));};exports[_0x701b('0x54')]=function(_0x34d456,_0x45f619,_0x3efb6d){var _0x5646c8={'raw':!![],'where':{}},_0x327488={},_0x9615e8;return db['MailQueue'][_0x701b('0x55')]({'where':{'id':_0x34d456[_0x701b('0x47')]['id']}})[_0x701b('0x27')](handleEntityNotFound(_0x45f619,null))[_0x701b('0x27')](function(_0x72673c){if(_0x72673c){_0x9615e8=_0x72673c[_0x701b('0x4d')]({'plain':!![]});_0x327488[_0x701b('0x33')]=_[_0x701b('0x35')](db[_0x701b('0x56')][_0x701b('0x30')]);_0x327488[_0x701b('0x34')]=_[_0x701b('0x35')](_0x34d456['query']);_0x327488[_0x701b('0x36')]=_[_0x701b('0x38')](_0x327488[_0x701b('0x33')],_0x327488['query']);_0x5646c8['attributes']=_[_0x701b('0x38')](_0x327488[_0x701b('0x33')],qs[_0x701b('0x39')](_0x34d456['query']['fields']));_0x5646c8[_0x701b('0x37')]=_0x5646c8[_0x701b('0x37')][_0x701b('0x3a')]?_0x5646c8[_0x701b('0x37')]:_0x327488['model'];if(!_0x34d456['query'][_0x701b('0x3b')](_0x701b('0x3c'))){_0x5646c8[_0x701b('0x21')]=qs[_0x701b('0x21')](_0x34d456[_0x701b('0x34')][_0x701b('0x21')]);_0x5646c8[_0x701b('0x20')]=qs[_0x701b('0x20')](_0x34d456[_0x701b('0x34')][_0x701b('0x20')]);}_0x5646c8[_0x701b('0x3d')]=qs[_0x701b('0x3e')](_0x34d456[_0x701b('0x34')][_0x701b('0x3e')]);_0x5646c8['where']=qs[_0x701b('0x36')](_['pick'](_0x34d456[_0x701b('0x34')],_0x327488[_0x701b('0x36')]));_0x5646c8[_0x701b('0x3f')][_0x701b('0x57')]=_0x72673c['id'];if(_0x34d456[_0x701b('0x34')][_0x701b('0x58')]){_0x5646c8[_0x701b('0x3f')]=_['merge'](_0x5646c8[_0x701b('0x3f')],{'$or':_['map'](_0x5646c8[_0x701b('0x37')],function(_0x56f8b0){var _0x390459={};_0x390459[_0x56f8b0]={'$like':'%'+_0x34d456[_0x701b('0x34')][_0x701b('0x58')]+'%'};return _0x390459;})});}_0x5646c8=_[_0x701b('0x41')]({},_0x5646c8,_0x34d456[_0x701b('0x48')]);return db[_0x701b('0x56')][_0x701b('0x59')](_0x5646c8);}})['then'](function(_0x297b92){if(_0x297b92){return db[_0x701b('0x5a')][_0x701b('0x5b')]({'where':{'id':_[_0x701b('0x2e')](_0x297b92,'UserId'),'role':'agent'},'attributes':['id',_0x701b('0x2d'),'mailPause','updatedAt',_0x701b('0x5c')]});}})[_0x701b('0x27')](function(_0x3157c9){if(_0x3157c9){return{'count':_0x3157c9['count'],'rows':_[_0x701b('0x2e')](_0x3157c9[_0x701b('0x5d')],function(_0x1c14bc){return{'membername':_0x1c14bc['name'],'UserId':_0x1c14bc['id'],'queue_name':_0x9615e8['name'],'MailQueueId':_0x9615e8['id'],'interface':util['format'](_0x701b('0x5e'),_0x701b('0x5f'),_0x1c14bc['name']),'penalty':0x0,'paused':_0x1c14bc[_0x701b('0x60')],'createdAt':_0x1c14bc[_0x701b('0x5c')],'updatedAt':_0x1c14bc[_0x701b('0x61')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x45f619,_0x5646c8))[_0x701b('0x45')](handleError(_0x45f619,null));};exports[_0x701b('0x62')]=function(_0x3fa707,_0x5f0c26,_0x2eb2b0){var _0x2f54af={};var _0x29999d={};var _0x2f19ae;var _0x56ef19;return db[_0x701b('0x2f')][_0x701b('0x55')]({'where':{'id':_0x3fa707[_0x701b('0x47')]['id']}})[_0x701b('0x27')](handleEntityNotFound(_0x5f0c26,null))[_0x701b('0x27')](function(_0x20884d){if(_0x20884d){_0x2f19ae=_0x20884d;_0x29999d[_0x701b('0x33')]=_[_0x701b('0x35')](db[_0x701b('0x63')][_0x701b('0x30')]);_0x29999d['query']=_[_0x701b('0x35')](_0x3fa707[_0x701b('0x34')]);_0x29999d['filters']=_['intersection'](_0x29999d['model'],_0x29999d[_0x701b('0x34')]);_0x2f54af[_0x701b('0x37')]=_[_0x701b('0x38')](_0x29999d[_0x701b('0x33')],qs[_0x701b('0x39')](_0x3fa707['query']['fields']));_0x2f54af['attributes']=_0x2f54af['attributes'][_0x701b('0x3a')]?_0x2f54af[_0x701b('0x37')]:_0x29999d[_0x701b('0x33')];_0x2f54af[_0x701b('0x3d')]=qs[_0x701b('0x3e')](_0x3fa707[_0x701b('0x34')][_0x701b('0x3e')]);_0x2f54af[_0x701b('0x3f')]=qs[_0x701b('0x36')](_[_0x701b('0x40')](_0x3fa707[_0x701b('0x34')],_0x29999d[_0x701b('0x36')]));if(_0x3fa707[_0x701b('0x34')][_0x701b('0x58')]){_0x2f54af['where']=_[_0x701b('0x41')](_0x2f54af[_0x701b('0x3f')],{'$or':_['map'](_0x2f54af[_0x701b('0x37')],function(_0x116be1){var _0xae9c8b={};_0xae9c8b[_0x116be1]={'$like':'%'+_0x3fa707[_0x701b('0x34')][_0x701b('0x58')]+'%'};return _0xae9c8b;})});}_0x2f54af=_['merge']({},_0x2f54af,_0x3fa707[_0x701b('0x48')]);return _0x2f19ae[_0x701b('0x62')](_0x2f54af);}})[_0x701b('0x27')](function(_0x35c119){if(_0x35c119){_0x56ef19=_0x35c119[_0x701b('0x3a')];if(!_0x3fa707['query']['hasOwnProperty']('nolimit')){_0x2f54af[_0x701b('0x21')]=qs[_0x701b('0x21')](_0x3fa707['query'][_0x701b('0x21')]);_0x2f54af[_0x701b('0x20')]=qs[_0x701b('0x20')](_0x3fa707[_0x701b('0x34')][_0x701b('0x20')]);}return _0x2f19ae[_0x701b('0x62')](_0x2f54af);}})[_0x701b('0x27')](function(_0x45e13c){if(_0x45e13c){return _0x45e13c?{'count':_0x56ef19,'rows':_0x45e13c}:null;}})[_0x701b('0x27')](respondWithResult(_0x5f0c26,null))[_0x701b('0x45')](handleError(_0x5f0c26,null));};exports[_0x701b('0x64')]=function(_0x2ba4d5,_0x23792b,_0x5f09de){var _0x123b96=_0x2ba4d5['body'][_0x701b('0x65')];return db[_0x701b('0x63')][_0x701b('0x59')]({'where':{'id':_0x123b96},'attributes':['id'],'include':[{'model':db[_0x701b('0x5a')],'as':_0x701b('0x66'),'attributes':['id',_0x701b('0x2d'),'online',_0x701b('0x67'),_0x701b('0x68')],'raw':!![]}]})[_0x701b('0x27')](function(_0x44b501){if(_0x44b501){var _0x5cce6b=_[_0x701b('0x69')](_0x44b501,function(_0x16c5f1){var _0x206f1f=_0x16c5f1['get']({'plain':!![]});return _0x206f1f[_0x701b('0x66')];});return db[_0x701b('0x2f')][_0x701b('0x49')]({'where':{'id':_0x2ba4d5[_0x701b('0x47')]['id']}})['then'](function(_0x51ab1c){return db[_0x701b('0x6a')]['transaction'](function(_0x576ea9){return _0x51ab1c['addTeams'](_0x123b96,{'transaction':_0x576ea9})[_0x701b('0x27')](function(){return BPromise[_0x701b('0x6b')](_0x5cce6b,function(_0x1327ba){return db[_0x701b('0x56')][_0x701b('0x6c')]({'where':{'UserId':_0x1327ba['id'],'MailQueueId':_0x2ba4d5['params']['id']},'transaction':_0x576ea9});});})[_0x701b('0x27')](function(){_0x5cce6b[_0x701b('0x6d')](function(_0x3a6740){socket[_0x701b('0x6e')](_0x701b('0x6f'),{'UserId':_0x3a6740['id'],'MailQueueId':_0x51ab1c['id']});});});});});}})[_0x701b('0x27')](respondWithStatusCode(_0x23792b,null))[_0x701b('0x45')](handleError(_0x23792b,null));};exports[_0x701b('0x70')]=function(_0x4ed3d0,_0x28dfea,_0x150d51){return db[_0x701b('0x63')][_0x701b('0x59')]({'where':{'id':_0x4ed3d0[_0x701b('0x34')][_0x701b('0x65')]},'attributes':['id'],'include':[{'model':db[_0x701b('0x5a')],'as':_0x701b('0x66'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x28dfea,null))[_0x701b('0x27')](function(_0x77d438){var _0xfd98b4=_[_0x701b('0x2e')](_0x77d438,'id');var _0x129a37=[];var _0x4e9549=[];var _0x170582=squel[_0x701b('0x71')]();_0x170582[_0x701b('0x72')]('tq.TeamId')[_0x701b('0x73')](_0x701b('0x74'),'tq')[_0x701b('0x75')]('user_has_teams','ut',_0x701b('0x76'))[_0x701b('0x3f')]('MailQueueId\x20=\x20?',_0x4ed3d0['params']['id']);for(var _0x22771d=0x0;_0x22771d<_0x77d438[_0x701b('0x3a')];_0x22771d+=0x1){let _0x497aa3=_0x77d438[_0x22771d];for(var _0x38c099=0x0;_0x38c099<_0x497aa3[_0x701b('0x66')][_0x701b('0x3a')];_0x38c099+=0x1){let _0x18fec4=_0x497aa3[_0x701b('0x66')][_0x38c099];var _0x2efb0a=_0x170582[_0x701b('0x77')]();_0x2efb0a[_0x701b('0x3f')](_0x701b('0x78'),_0x18fec4['id']);_0x4e9549[_0x701b('0x79')](db[_0x701b('0x6a')][_0x701b('0x34')](_0x2efb0a[_0x701b('0x7a')](),{'type':db['sequelize']['QueryTypes']['SELECT']})[_0x701b('0x27')](function(_0x2a35b4){if(_0x2a35b4[_0x701b('0x3a')]===0x1){return _0x18fec4['id'];}else{var _0x2d966c=_[_0x701b('0x7b')](_[_0x701b('0x2e')](_0x2a35b4,'TeamId'),function(_0x4f7b65){return _['includes'](_0xfd98b4,_0x4f7b65);});if(_0x2d966c){return _0x18fec4['id'];}}}));}}return BPromise[_0x701b('0x7c')](_0x4e9549)['then'](function(_0xca4b99){_0x129a37=_(_0x129a37)[_0x701b('0x7d')](_0xca4b99)['compact']()[_0x701b('0x7e')]();return db[_0x701b('0x2f')][_0x701b('0x49')]({'where':{'id':_0x4ed3d0[_0x701b('0x47')]['id']}})[_0x701b('0x27')](function(_0x3a9761){return db['sequelize']['transaction'](function(_0x4dfe4c){return _0x3a9761[_0x701b('0x70')](_0x4ed3d0[_0x701b('0x34')][_0x701b('0x65')],{'transaction':_0x4dfe4c})[_0x701b('0x27')](function(){if(!_[_0x701b('0x7f')](_0x129a37)){return _0x3a9761[_0x701b('0x80')](_0x129a37,{'transaction':_0x4dfe4c});}})['then'](function(){_0x129a37['forEach'](function(_0x44cecc){socket[_0x701b('0x6e')](_0x701b('0x81'),{'UserId':_0x44cecc,'MailQueueId':_0x3a9761['id']});});});});});});})[_0x701b('0x27')](respondWithStatusCode(_0x28dfea,null))[_0x701b('0x45')](handleError(_0x28dfea,null));};exports[_0x701b('0x82')]=function(_0x1d4082,_0x5552e9,_0x15a7f7){return db[_0x701b('0x2f')][_0x701b('0x49')]({'where':{'id':_0x1d4082[_0x701b('0x47')]['id']}})[_0x701b('0x27')](handleEntityNotFound(_0x5552e9,null))['then'](function(_0x19ab97){if(_0x19ab97){return _0x19ab97[_0x701b('0x82')](_0x1d4082[_0x701b('0x4b')][_0x701b('0x65')],_[_0x701b('0x83')](_0x1d4082[_0x701b('0x4b')],[_0x701b('0x65'),'id'])||{})[_0x701b('0x84')](function(_0x581726){for(var _0x10820a=0x0;_0x10820a<_0x1d4082[_0x701b('0x4b')][_0x701b('0x65')]['length'];_0x10820a+=0x1){socket[_0x701b('0x6e')](_0x701b('0x6f'),{'UserId':Number(_0x1d4082[_0x701b('0x4b')][_0x701b('0x65')][_0x10820a]),'MailQueueId':Number(_0x1d4082['params']['id'])});}return _0x581726;});}})['then'](respondWithResult(_0x5552e9,null))['catch'](handleError(_0x5552e9,null));};exports[_0x701b('0x80')]=function(_0x1f40e8,_0x2ac9e2,_0x3f9eff){return db[_0x701b('0x2f')][_0x701b('0x49')]({'where':{'id':_0x1f40e8[_0x701b('0x47')]['id']}})[_0x701b('0x27')](handleEntityNotFound(_0x2ac9e2,null))['then'](function(_0x314704){if(_0x314704){return _0x314704['removeAgents'](_0x1f40e8['query']['ids'])[_0x701b('0x27')](function(){if(_['isArray'](_0x1f40e8['query'][_0x701b('0x65')])){for(var _0x4c131f=0x0;_0x4c131f<_0x1f40e8[_0x701b('0x34')][_0x701b('0x65')][_0x701b('0x3a')];_0x4c131f+=0x1){socket[_0x701b('0x6e')](_0x701b('0x81'),{'UserId':Number(_0x1f40e8['query'][_0x701b('0x65')][_0x4c131f]),'MailQueueId':Number(_0x1f40e8[_0x701b('0x47')]['id'])});}}else{socket[_0x701b('0x6e')]('userMailQueue:remove',{'UserId':Number(_0x1f40e8[_0x701b('0x34')][_0x701b('0x65')]),'MailQueueId':Number(_0x1f40e8['params']['id'])});}});}})[_0x701b('0x27')](respondWithStatusCode(_0x2ac9e2,null))['catch'](handleError(_0x2ac9e2,null));};exports[_0x701b('0x85')]=function(_0x1f4f0b,_0x3d9393,_0x29a973){var _0x1cfda2={};var _0x3a7bef={};var _0x5ca52a;var _0x3021c6;return db['MailQueue'][_0x701b('0x55')]({'where':{'id':_0x1f4f0b[_0x701b('0x47')]['id']}})[_0x701b('0x27')](handleEntityNotFound(_0x3d9393,null))['then'](function(_0x1bc6e4){if(_0x1bc6e4){_0x5ca52a=_0x1bc6e4;_0x3a7bef[_0x701b('0x33')]=_[_0x701b('0x35')](db['User']['rawAttributes']);_0x3a7bef[_0x701b('0x34')]=_[_0x701b('0x35')](_0x1f4f0b[_0x701b('0x34')]);_0x3a7bef[_0x701b('0x36')]=_[_0x701b('0x38')](_0x3a7bef[_0x701b('0x33')],_0x3a7bef[_0x701b('0x34')]);_0x1cfda2[_0x701b('0x37')]=_[_0x701b('0x38')](_0x3a7bef[_0x701b('0x33')],qs['fields'](_0x1f4f0b[_0x701b('0x34')][_0x701b('0x39')]));_0x1cfda2['attributes']=_0x1cfda2[_0x701b('0x37')][_0x701b('0x3a')]?_0x1cfda2[_0x701b('0x37')]:_0x3a7bef[_0x701b('0x33')];_0x1cfda2[_0x701b('0x3d')]=qs['sort'](_0x1f4f0b['query'][_0x701b('0x3e')]);_0x1cfda2[_0x701b('0x3f')]=qs[_0x701b('0x36')](_[_0x701b('0x40')](_0x1f4f0b[_0x701b('0x34')],_0x3a7bef[_0x701b('0x36')]));if(_0x1f4f0b[_0x701b('0x34')][_0x701b('0x58')]){_0x1cfda2[_0x701b('0x3f')]=_[_0x701b('0x41')](_0x1cfda2[_0x701b('0x3f')],{'$or':_[_0x701b('0x2e')](_0x1cfda2[_0x701b('0x37')],function(_0x16d41d){var _0x54b214={};_0x54b214[_0x16d41d]={'$like':'%'+_0x1f4f0b['query']['filter']+'%'};return _0x54b214;})});}_0x1cfda2=_[_0x701b('0x41')]({},_0x1cfda2,_0x1f4f0b['options']);return _0x5ca52a[_0x701b('0x85')](_0x1cfda2);}})[_0x701b('0x27')](function(_0x106f4c){if(_0x106f4c){_0x3021c6=_0x106f4c[_0x701b('0x3a')];if(!_0x1f4f0b[_0x701b('0x34')][_0x701b('0x3b')](_0x701b('0x3c'))){_0x1cfda2['limit']=qs['limit'](_0x1f4f0b[_0x701b('0x34')][_0x701b('0x21')]);_0x1cfda2['offset']=qs['offset'](_0x1f4f0b[_0x701b('0x34')][_0x701b('0x20')]);}return _0x5ca52a[_0x701b('0x85')](_0x1cfda2);}})['then'](function(_0x239579){if(_0x239579){return _0x239579?{'count':_0x3021c6,'rows':_0x239579}:null;}})[_0x701b('0x27')](respondWithResult(_0x3d9393,null))['catch'](handleError(_0x3d9393,null));};
\ No newline at end of file
index 89c8988..5b41131 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe661=['save','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x4c5696,_0x118bd3){var _0x35886d=function(_0x4fdcb7){while(--_0x4fdcb7){_0x4c5696['push'](_0x4c5696['shift']());}};_0x35886d(++_0x118bd3);}(_0xe661,0x166));var _0x1e66=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xe661[_0x14add3];return _0x4a174f;};'use strict';var EventEmitter=require(_0x1e66('0x0'));var MailQueue=require(_0x1e66('0x1'))['db']['MailQueue'];var MailQueueEvents=new EventEmitter();MailQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x1e66('0x2'),'afterUpdate':'update','afterDestroy':_0x1e66('0x3')};function emitEvent(_0x82c3b){return function(_0x1299a2,_0x2c24fe,_0x16b3d2){MailQueueEvents[_0x1e66('0x4')](_0x82c3b+':'+_0x1299a2['id'],_0x1299a2);MailQueueEvents[_0x1e66('0x4')](_0x82c3b,_0x1299a2);_0x16b3d2(null);};}for(var e in events){if(events[_0x1e66('0x5')](e)){var event=events[e];MailQueue[_0x1e66('0x6')](e,emitEvent(event));}}module[_0x1e66('0x7')]=MailQueueEvents;
\ No newline at end of file
+var _0xee86=['update','remove','emit','exports','events','MailQueue','setMaxListeners','save'];(function(_0x5628a0,_0x1adf2b){var _0x12f9a9=function(_0x321486){while(--_0x321486){_0x5628a0['push'](_0x5628a0['shift']());}};_0x12f9a9(++_0x1adf2b);}(_0xee86,0x144));var _0x6ee8=function(_0x3ab9ee,_0x4a74b8){_0x3ab9ee=_0x3ab9ee-0x0;var _0x82ee88=_0xee86[_0x3ab9ee];return _0x82ee88;};'use strict';var EventEmitter=require(_0x6ee8('0x0'));var MailQueue=require('../../mysqldb')['db'][_0x6ee8('0x1')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x6ee8('0x2')](0x0);var events={'afterCreate':_0x6ee8('0x3'),'afterUpdate':_0x6ee8('0x4'),'afterDestroy':_0x6ee8('0x5')};function emitEvent(_0x261648){return function(_0x210b5d,_0x265fd0,_0x29680a){MailQueueEvents[_0x6ee8('0x6')](_0x261648+':'+_0x210b5d['id'],_0x210b5d);MailQueueEvents[_0x6ee8('0x6')](_0x261648,_0x210b5d);_0x29680a(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailQueue['hook'](e,emitEvent(event));}}module[_0x6ee8('0x7')]=MailQueueEvents;
\ No newline at end of file
index c75f8ac..9e39604 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0f9=['api','moment','bluebird','path','rimraf','../../config/environment','exports','define','MailQueue','util','../../config/logger'];(function(_0x5c5e5d,_0x36e7ac){var _0x3e47ad=function(_0x2f6feb){while(--_0x2f6feb){_0x5c5e5d['push'](_0x5c5e5d['shift']());}};_0x3e47ad(++_0x36e7ac);}(_0xc0f9,0x1ed));var _0x9c0f=function(_0x1b8f5a,_0x57c154){_0x1b8f5a=_0x1b8f5a-0x0;var _0x594189=_0xc0f9[_0x1b8f5a];return _0x594189;};'use strict';var _=require('lodash');var util=require(_0x9c0f('0x0'));var logger=require(_0x9c0f('0x1'))(_0x9c0f('0x2'));var moment=require(_0x9c0f('0x3'));var BPromise=require(_0x9c0f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9c0f('0x5'));var rimraf=require(_0x9c0f('0x6'));var config=require(_0x9c0f('0x7'));var attributes=require('./mailQueue.attributes');module[_0x9c0f('0x8')]=function(_0x35d5c2,_0xcb9da1){return _0x35d5c2[_0x9c0f('0x9')](_0x9c0f('0xa'),attributes,{'tableName':'mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9ffe=['exports','MailQueue','lodash','util','../../config/logger','request-promise','rimraf','./mailQueue.attributes'];(function(_0x552875,_0x294d6a){var _0x4cc2f1=function(_0x4cf0e1){while(--_0x4cf0e1){_0x552875['push'](_0x552875['shift']());}};_0x4cc2f1(++_0x294d6a);}(_0x9ffe,0xba));var _0xe9ff=function(_0x52bdfe,_0x5282ec){_0x52bdfe=_0x52bdfe-0x0;var _0x5c6df7=_0x9ffe[_0x52bdfe];return _0x5c6df7;};'use strict';var _=require(_0xe9ff('0x0'));var util=require(_0xe9ff('0x1'));var logger=require(_0xe9ff('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xe9ff('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe9ff('0x4'));var config=require('../../config/environment');var attributes=require(_0xe9ff('0x5'));module[_0xe9ff('0x6')]=function(_0x4f39c0,_0x5b399d){return _0x4f39c0['define'](_0xe9ff('0x7'),attributes,{'tableName':'mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index df02d17..4478605 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bf8=['request\x20sent','debug','MailQueue,\x20%s,\x20%s,\x20%s','code','error','message','catch','GetMailQueue','MailQueue','options','raw','attributes','limit','include','map','model','stringify','ShowMailQueue','find','where','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','redis','defaults','socket.io-emitter','then','info','MailQueue,\x20%s,\x20%s'];(function(_0x5e85a7,_0x180744){var _0x4768b1=function(_0x2cc65d){while(--_0x2cc65d){_0x5e85a7['push'](_0x5e85a7['shift']());}};_0x4768b1(++_0x180744);}(_0x1bf8,0x161));var _0x81bf=function(_0x305a37,_0x534646){_0x305a37=_0x305a37-0x0;var _0x1dfc2a=_0x1bf8[_0x305a37];return _0x1dfc2a;};'use strict';var _=require(_0x81bf('0x0'));var util=require(_0x81bf('0x1'));var moment=require(_0x81bf('0x2'));var BPromise=require(_0x81bf('0x3'));var rs=require(_0x81bf('0x4'));var fs=require('fs');var Redis=require(_0x81bf('0x5'));var db=require(_0x81bf('0x6'))['db'];var utils=require(_0x81bf('0x7'));var logger=require('../../config/logger')(_0x81bf('0x8'));var config=require(_0x81bf('0x9'));var jayson=require(_0x81bf('0xa'));var client=jayson['client']['http']({'port':0x232a});config[_0x81bf('0xb')]=_[_0x81bf('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x81bf('0xd'))(new Redis(config[_0x81bf('0xb')]));require('./mailQueue.socket')['register'](socket);function respondWithRpcPromise(_0x43258f,_0x1ea255,_0x3928f2){return new BPromise(function(_0x11f3e3,_0x136e75){return client['request'](_0x43258f,_0x3928f2)[_0x81bf('0xe')](function(_0x375fa2){logger[_0x81bf('0xf')](_0x81bf('0x10'),_0x1ea255,_0x81bf('0x11'));logger[_0x81bf('0x12')](_0x81bf('0x13'),_0x1ea255,'request\x20sent',JSON['stringify'](_0x375fa2));if(_0x375fa2['error']){if(_0x375fa2['error'][_0x81bf('0x14')]===0x1f4){logger[_0x81bf('0x15')](_0x81bf('0x10'),_0x1ea255,_0x375fa2[_0x81bf('0x15')][_0x81bf('0x16')]);return _0x136e75(_0x375fa2[_0x81bf('0x15')][_0x81bf('0x16')]);}logger[_0x81bf('0x15')](_0x81bf('0x10'),_0x1ea255,_0x375fa2[_0x81bf('0x15')]['message']);return _0x11f3e3(_0x375fa2[_0x81bf('0x15')][_0x81bf('0x16')]);}else{logger[_0x81bf('0xf')](_0x81bf('0x10'),_0x1ea255,_0x81bf('0x11'));_0x11f3e3(_0x375fa2['result']['message']);}})[_0x81bf('0x17')](function(_0x59f381){logger[_0x81bf('0x15')](_0x81bf('0x10'),_0x1ea255,_0x59f381);_0x136e75(_0x59f381);});});}exports[_0x81bf('0x18')]=function(_0x428014){var _0x1d713d=this;return new Promise(function(_0x2cc7e2,_0x2cd6f3){return db[_0x81bf('0x19')]['findAll']({'raw':_0x428014[_0x81bf('0x1a')]?_0x428014[_0x81bf('0x1a')][_0x81bf('0x1b')]===undefined?!![]:![]:!![],'where':_0x428014[_0x81bf('0x1a')]?_0x428014[_0x81bf('0x1a')]['where']||null:null,'attributes':_0x428014[_0x81bf('0x1a')]?_0x428014[_0x81bf('0x1a')][_0x81bf('0x1c')]||null:null,'limit':_0x428014[_0x81bf('0x1a')]?_0x428014['options'][_0x81bf('0x1d')]||null:null,'include':_0x428014[_0x81bf('0x1a')]?_0x428014[_0x81bf('0x1a')][_0x81bf('0x1e')]?_[_0x81bf('0x1f')](_0x428014[_0x81bf('0x1a')][_0x81bf('0x1e')],function(_0x534fb7){return{'model':db[_0x534fb7['model']],'as':_0x534fb7['as'],'attributes':_0x534fb7[_0x81bf('0x1c')],'include':_0x534fb7[_0x81bf('0x1e')]?_[_0x81bf('0x1f')](_0x534fb7[_0x81bf('0x1e')],function(_0x210330){return{'model':db[_0x210330[_0x81bf('0x20')]],'as':_0x210330['as'],'attributes':_0x210330['attributes'],'include':_0x210330['include']?_[_0x81bf('0x1f')](_0x210330[_0x81bf('0x1e')],function(_0x94271){return{'model':db[_0x94271['model']],'as':_0x94271['as'],'attributes':_0x94271[_0x81bf('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x216bb4){logger[_0x81bf('0xf')](_0x81bf('0x18'),_0x428014);logger[_0x81bf('0x12')](_0x81bf('0x18'),_0x428014,JSON[_0x81bf('0x21')](_0x216bb4));_0x2cc7e2(_0x216bb4);})[_0x81bf('0x17')](function(_0x10fc24){logger[_0x81bf('0x15')](_0x81bf('0x18'),_0x10fc24[_0x81bf('0x16')],_0x428014);_0x2cd6f3(_0x1d713d[_0x81bf('0x15')](0x1f4,_0x10fc24[_0x81bf('0x16')]));});});};exports[_0x81bf('0x22')]=function(_0x2f4e7c){var _0x201d0e=this;return new Promise(function(_0x157f74,_0x373759){return db[_0x81bf('0x19')][_0x81bf('0x23')]({'raw':_0x2f4e7c['options']?_0x2f4e7c[_0x81bf('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x2f4e7c[_0x81bf('0x1a')]?_0x2f4e7c['options'][_0x81bf('0x24')]||null:null,'attributes':_0x2f4e7c[_0x81bf('0x1a')]?_0x2f4e7c[_0x81bf('0x1a')][_0x81bf('0x1c')]||null:null,'include':_0x2f4e7c['options']?_0x2f4e7c[_0x81bf('0x1a')][_0x81bf('0x1e')]?_[_0x81bf('0x1f')](_0x2f4e7c[_0x81bf('0x1a')][_0x81bf('0x1e')],function(_0x91adf){return{'model':db[_0x91adf[_0x81bf('0x20')]],'as':_0x91adf['as'],'attributes':_0x91adf[_0x81bf('0x1c')],'include':_0x91adf[_0x81bf('0x1e')]?_['map'](_0x91adf['include'],function(_0x135b37){return{'model':db[_0x135b37[_0x81bf('0x20')]],'as':_0x135b37['as'],'attributes':_0x135b37[_0x81bf('0x1c')],'include':_0x135b37[_0x81bf('0x1e')]?_[_0x81bf('0x1f')](_0x135b37[_0x81bf('0x1e')],function(_0x1f28ad){return{'model':db[_0x1f28ad[_0x81bf('0x20')]],'as':_0x1f28ad['as'],'attributes':_0x1f28ad[_0x81bf('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x81bf('0xe')](function(_0x3db54d){logger[_0x81bf('0xf')](_0x81bf('0x22'),_0x2f4e7c);logger[_0x81bf('0x12')](_0x81bf('0x22'),_0x2f4e7c,JSON['stringify'](_0x3db54d));_0x157f74(_0x3db54d);})[_0x81bf('0x17')](function(_0x38f498){logger['error'](_0x81bf('0x22'),_0x38f498[_0x81bf('0x16')],_0x2f4e7c);_0x373759(_0x201d0e[_0x81bf('0x15')](0x1f4,_0x38f498[_0x81bf('0x16')]));});});};
\ No newline at end of file
+var _0xc62c=['http','defaults','localhost','redis','./mailQueue.socket','register','then','info','MailQueue,\x20%s,\x20%s','request\x20sent','debug','MailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetMailQueue','MailQueue','findAll','options','attributes','map','include','model','ShowMailQueue','find','raw','where','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x469af7,_0x53e07d){var _0x4ca29b=function(_0x1baa21){while(--_0x1baa21){_0x469af7['push'](_0x469af7['shift']());}};_0x4ca29b(++_0x53e07d);}(_0xc62c,0x1c2));var _0xcc62=function(_0x24d0f7,_0x42cda7){_0x24d0f7=_0x24d0f7-0x0;var _0x1fa1a6=_0xc62c[_0x24d0f7];return _0x1fa1a6;};'use strict';var _=require(_0xcc62('0x0'));var util=require(_0xcc62('0x1'));var moment=require(_0xcc62('0x2'));var BPromise=require(_0xcc62('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xcc62('0x4'));var db=require(_0xcc62('0x5'))['db'];var utils=require(_0xcc62('0x6'));var logger=require(_0xcc62('0x7'))(_0xcc62('0x8'));var config=require(_0xcc62('0x9'));var jayson=require(_0xcc62('0xa'));var client=jayson[_0xcc62('0xb')][_0xcc62('0xc')]({'port':0x232a});config['redis']=_[_0xcc62('0xd')](config['redis'],{'host':_0xcc62('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xcc62('0xf')]));require(_0xcc62('0x10'))[_0xcc62('0x11')](socket);function respondWithRpcPromise(_0x29957c,_0x463192,_0x3af56a){return new BPromise(function(_0x10b0b8,_0x4fce32){return client['request'](_0x29957c,_0x3af56a)[_0xcc62('0x12')](function(_0x4bd641){logger[_0xcc62('0x13')](_0xcc62('0x14'),_0x463192,_0xcc62('0x15'));logger[_0xcc62('0x16')](_0xcc62('0x17'),_0x463192,_0xcc62('0x15'),JSON[_0xcc62('0x18')](_0x4bd641));if(_0x4bd641[_0xcc62('0x19')]){if(_0x4bd641[_0xcc62('0x19')][_0xcc62('0x1a')]===0x1f4){logger[_0xcc62('0x19')](_0xcc62('0x14'),_0x463192,_0x4bd641['error'][_0xcc62('0x1b')]);return _0x4fce32(_0x4bd641[_0xcc62('0x19')]['message']);}logger[_0xcc62('0x19')](_0xcc62('0x14'),_0x463192,_0x4bd641[_0xcc62('0x19')][_0xcc62('0x1b')]);return _0x10b0b8(_0x4bd641[_0xcc62('0x19')][_0xcc62('0x1b')]);}else{logger[_0xcc62('0x13')]('MailQueue,\x20%s,\x20%s',_0x463192,'request\x20sent');_0x10b0b8(_0x4bd641[_0xcc62('0x1c')][_0xcc62('0x1b')]);}})[_0xcc62('0x1d')](function(_0x478e05){logger['error'](_0xcc62('0x14'),_0x463192,_0x478e05);_0x4fce32(_0x478e05);});});}exports[_0xcc62('0x1e')]=function(_0x5236dc){var _0x280238=this;return new Promise(function(_0x4f117c,_0x368a00){return db[_0xcc62('0x1f')][_0xcc62('0x20')]({'raw':_0x5236dc['options']?_0x5236dc[_0xcc62('0x21')]['raw']===undefined?!![]:![]:!![],'where':_0x5236dc[_0xcc62('0x21')]?_0x5236dc[_0xcc62('0x21')]['where']||null:null,'attributes':_0x5236dc[_0xcc62('0x21')]?_0x5236dc[_0xcc62('0x21')][_0xcc62('0x22')]||null:null,'limit':_0x5236dc['options']?_0x5236dc['options']['limit']||null:null,'include':_0x5236dc[_0xcc62('0x21')]?_0x5236dc['options']['include']?_[_0xcc62('0x23')](_0x5236dc[_0xcc62('0x21')][_0xcc62('0x24')],function(_0x586834){return{'model':db[_0x586834['model']],'as':_0x586834['as'],'attributes':_0x586834[_0xcc62('0x22')],'include':_0x586834[_0xcc62('0x24')]?_[_0xcc62('0x23')](_0x586834['include'],function(_0x28e7ec){return{'model':db[_0x28e7ec[_0xcc62('0x25')]],'as':_0x28e7ec['as'],'attributes':_0x28e7ec[_0xcc62('0x22')],'include':_0x28e7ec[_0xcc62('0x24')]?_['map'](_0x28e7ec[_0xcc62('0x24')],function(_0x4aa5a2){return{'model':db[_0x4aa5a2[_0xcc62('0x25')]],'as':_0x4aa5a2['as'],'attributes':_0x4aa5a2['attributes']};}):[]};}):[]};}):[]:[]})[_0xcc62('0x12')](function(_0x4893e8){logger[_0xcc62('0x13')](_0xcc62('0x1e'),_0x5236dc);logger[_0xcc62('0x16')](_0xcc62('0x1e'),_0x5236dc,JSON['stringify'](_0x4893e8));_0x4f117c(_0x4893e8);})[_0xcc62('0x1d')](function(_0x3ad52b){logger['error']('GetMailQueue',_0x3ad52b[_0xcc62('0x1b')],_0x5236dc);_0x368a00(_0x280238[_0xcc62('0x19')](0x1f4,_0x3ad52b[_0xcc62('0x1b')]));});});};exports[_0xcc62('0x26')]=function(_0x528cf4){var _0x2c18aa=this;return new Promise(function(_0xa9d8c9,_0x2095a0){return db['MailQueue'][_0xcc62('0x27')]({'raw':_0x528cf4[_0xcc62('0x21')]?_0x528cf4['options'][_0xcc62('0x28')]===undefined?!![]:![]:!![],'where':_0x528cf4[_0xcc62('0x21')]?_0x528cf4[_0xcc62('0x21')][_0xcc62('0x29')]||null:null,'attributes':_0x528cf4[_0xcc62('0x21')]?_0x528cf4[_0xcc62('0x21')][_0xcc62('0x22')]||null:null,'include':_0x528cf4['options']?_0x528cf4[_0xcc62('0x21')][_0xcc62('0x24')]?_['map'](_0x528cf4['options']['include'],function(_0x984ca2){return{'model':db[_0x984ca2[_0xcc62('0x25')]],'as':_0x984ca2['as'],'attributes':_0x984ca2[_0xcc62('0x22')],'include':_0x984ca2[_0xcc62('0x24')]?_[_0xcc62('0x23')](_0x984ca2[_0xcc62('0x24')],function(_0x1f8b49){return{'model':db[_0x1f8b49[_0xcc62('0x25')]],'as':_0x1f8b49['as'],'attributes':_0x1f8b49[_0xcc62('0x22')],'include':_0x1f8b49[_0xcc62('0x24')]?_['map'](_0x1f8b49[_0xcc62('0x24')],function(_0x79ad57){return{'model':db[_0x79ad57[_0xcc62('0x25')]],'as':_0x79ad57['as'],'attributes':_0x79ad57[_0xcc62('0x22')]};}):[]};}):[]};}):[]:[]})[_0xcc62('0x12')](function(_0x3939d9){logger[_0xcc62('0x13')](_0xcc62('0x26'),_0x528cf4);logger['debug']('ShowMailQueue',_0x528cf4,JSON['stringify'](_0x3939d9));_0xa9d8c9(_0x3939d9);})[_0xcc62('0x1d')](function(_0x3c8b49){logger[_0xcc62('0x19')](_0xcc62('0x26'),_0x3c8b49[_0xcc62('0x1b')],_0x528cf4);_0x2095a0(_0x2c18aa['error'](0x1f4,_0x3c8b49['message']));});});};
\ No newline at end of file
index ca31c51..264c7da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d65=['./mailQueue.events','save','update','emit','removeListener','register'];(function(_0x4f0e77,_0x253bc4){var _0x47d74c=function(_0x359a2a){while(--_0x359a2a){_0x4f0e77['push'](_0x4f0e77['shift']());}};_0x47d74c(++_0x253bc4);}(_0x2d65,0x1f2));var _0x52d6=function(_0x6788ac,_0x47a4d5){_0x6788ac=_0x6788ac-0x0;var _0x4e0439=_0x2d65[_0x6788ac];return _0x4e0439;};'use strict';var MailQueueEvents=require(_0x52d6('0x0'));var events=[_0x52d6('0x1'),'remove',_0x52d6('0x2')];function createListener(_0x4b8bc5,_0x1dc7ed){return function(_0x3741ab){_0x1dc7ed[_0x52d6('0x3')](_0x4b8bc5,_0x3741ab);};}function removeListener(_0x2969ef,_0x5cadff){return function(){MailQueueEvents[_0x52d6('0x4')](_0x2969ef,_0x5cadff);};}exports[_0x52d6('0x5')]=function(_0x15aa48){for(var _0x3d3acc=0x0,_0x261f88=events['length'];_0x3d3acc<_0x261f88;_0x3d3acc++){var _0x2ec89e=events[_0x3d3acc];var _0x18b4ab=createListener('mailQueue:'+_0x2ec89e,_0x15aa48);MailQueueEvents['on'](_0x2ec89e,_0x18b4ab);}};
\ No newline at end of file
+var _0x233e=['mailQueue:','save','remove','emit','removeListener','register','length'];(function(_0xb26c7a,_0x202458){var _0x539326=function(_0x5b9f10){while(--_0x5b9f10){_0xb26c7a['push'](_0xb26c7a['shift']());}};_0x539326(++_0x202458);}(_0x233e,0x1dd));var _0xe233=function(_0x2a52e2,_0x1e462d){_0x2a52e2=_0x2a52e2-0x0;var _0x4c4427=_0x233e[_0x2a52e2];return _0x4c4427;};'use strict';var MailQueueEvents=require('./mailQueue.events');var events=[_0xe233('0x0'),_0xe233('0x1'),'update'];function createListener(_0x1e0047,_0x5d9607){return function(_0x5b3b86){_0x5d9607[_0xe233('0x2')](_0x1e0047,_0x5b3b86);};}function removeListener(_0xdc4374,_0x25b6bd){return function(){MailQueueEvents[_0xe233('0x3')](_0xdc4374,_0x25b6bd);};}exports[_0xe233('0x4')]=function(_0x488c8f){for(var _0x4e0c5b=0x0,_0x74df9a=events[_0xe233('0x5')];_0x4e0c5b<_0x74df9a;_0x4e0c5b++){var _0x3725b1=events[_0x4e0c5b];var _0x2da6ad=createListener(_0xe233('0x6')+_0x3725b1,_0x488c8f);MailQueueEvents['on'](_0x3725b1,_0x2da6ad);}};
\ No newline at end of file
index a5f0672..451a9d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5754=['show','post','create','update','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueueReport.controller','get','index','/describe','isAuthenticated','describe','/:id'];(function(_0x2cc594,_0x4d727b){var _0x4abff7=function(_0x22b01d){while(--_0x22b01d){_0x2cc594['push'](_0x2cc594['shift']());}};_0x4abff7(++_0x4d727b);}(_0x5754,0x1a8));var _0x4575=function(_0x11c6fc,_0x4d536d){_0x11c6fc=_0x11c6fc-0x0;var _0x3b851e=_0x5754[_0x11c6fc];return _0x3b851e;};'use strict';var multer=require(_0x4575('0x0'));var util=require(_0x4575('0x1'));var path=require(_0x4575('0x2'));var timeout=require(_0x4575('0x3'));var express=require('express');var router=express[_0x4575('0x4')]();var fs_extra=require(_0x4575('0x5'));var auth=require(_0x4575('0x6'));var interaction=require(_0x4575('0x7'));var config=require(_0x4575('0x8'));var controller=require(_0x4575('0x9'));router[_0x4575('0xa')]('/',auth['isAuthenticated'](),controller[_0x4575('0xb')]);router[_0x4575('0xa')](_0x4575('0xc'),auth[_0x4575('0xd')](),controller[_0x4575('0xe')]);router['get'](_0x4575('0xf'),auth['isAuthenticated'](),controller[_0x4575('0x10')]);router[_0x4575('0x11')]('/',auth[_0x4575('0xd')](),controller[_0x4575('0x12')]);router['put'](_0x4575('0xf'),auth['isAuthenticated'](),controller[_0x4575('0x13')]);router['delete'](_0x4575('0xf'),auth['isAuthenticated'](),controller[_0x4575('0x14')]);module[_0x4575('0x15')]=router;
\ No newline at end of file
+var _0x3acf=['create','put','update','delete','/:id','destroy','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueueReport.controller','get','index','isAuthenticated','show'];(function(_0x5a9666,_0x30bc94){var _0x28601f=function(_0x52e447){while(--_0x52e447){_0x5a9666['push'](_0x5a9666['shift']());}};_0x28601f(++_0x30bc94);}(_0x3acf,0x197));var _0xf3ac=function(_0x2f54b6,_0x3cc6cb){_0x2f54b6=_0x2f54b6-0x0;var _0x169f21=_0x3acf[_0x2f54b6];return _0x169f21;};'use strict';var multer=require(_0xf3ac('0x0'));var util=require(_0xf3ac('0x1'));var path=require(_0xf3ac('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xf3ac('0x3')]();var fs_extra=require(_0xf3ac('0x4'));var auth=require(_0xf3ac('0x5'));var interaction=require(_0xf3ac('0x6'));var config=require(_0xf3ac('0x7'));var controller=require(_0xf3ac('0x8'));router[_0xf3ac('0x9')]('/',auth['isAuthenticated'](),controller[_0xf3ac('0xa')]);router[_0xf3ac('0x9')]('/describe',auth[_0xf3ac('0xb')](),controller['describe']);router[_0xf3ac('0x9')]('/:id',auth[_0xf3ac('0xb')](),controller[_0xf3ac('0xc')]);router['post']('/',auth[_0xf3ac('0xb')](),controller[_0xf3ac('0xd')]);router[_0xf3ac('0xe')]('/:id',auth[_0xf3ac('0xb')](),controller[_0xf3ac('0xf')]);router[_0xf3ac('0x10')](_0xf3ac('0x11'),auth[_0xf3ac('0xb')](),controller[_0xf3ac('0x12')]);module[_0xf3ac('0x13')]=router;
\ No newline at end of file
index 1dd2dc0..89022d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4677=['DATE','moment','exports','STRING'];(function(_0x39c734,_0x2f3e06){var _0xb2a2f9=function(_0x502f3f){while(--_0x502f3f){_0x39c734['push'](_0x39c734['shift']());}};_0xb2a2f9(++_0x2f3e06);}(_0x4677,0x155));var _0x7467=function(_0x33656b,_0xc4b65c){_0x33656b=_0x33656b-0x0;var _0x13d4dd=_0x4677[_0x33656b];return _0x13d4dd;};'use strict';var moment=require(_0x7467('0x0'));var Sequelize=require('sequelize');module[_0x7467('0x1')]={'uniqueid':{'type':Sequelize[_0x7467('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x7467('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x7467('0x3')]},'acceptAt':{'type':Sequelize[_0x7467('0x3')]},'exitAt':{'type':Sequelize[_0x7467('0x3')]},'reason':{'type':Sequelize[_0x7467('0x2')]}};
\ No newline at end of file
+var _0xd710=['moment','sequelize','exports','DATE'];(function(_0x39096d,_0x51f8a0){var _0x13da4f=function(_0x11e6b2){while(--_0x11e6b2){_0x39096d['push'](_0x39096d['shift']());}};_0x13da4f(++_0x51f8a0);}(_0xd710,0x12c));var _0x0d71=function(_0x2d03df,_0x53dcc8){_0x2d03df=_0x2d03df-0x0;var _0x2eacc1=_0xd710[_0x2d03df];return _0x2eacc1;};'use strict';var moment=require(_0x0d71('0x0'));var Sequelize=require(_0x0d71('0x1'));module[_0x0d71('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x0d71('0x3')]},'acceptAt':{'type':Sequelize[_0x0d71('0x3')]},'exitAt':{'type':Sequelize[_0x0d71('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index c6a0052..aca0899 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7096=['Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','name','send','map','rawAttributes','fieldName','type','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','limit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','rows','params','MailQueueReport','find','catch','create','body','describe','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','count','set'];(function(_0x5af93d,_0xa9ecba){var _0x16cc7e=function(_0x1773c1){while(--_0x1773c1){_0x5af93d['push'](_0x5af93d['shift']());}};_0x16cc7e(++_0xa9ecba);}(_0x7096,0x10c));var _0x6709=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x7096[_0x1035c1];return _0x308d67;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6709('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6709('0x1'));var rp=require('request-promise');var moment=require(_0x6709('0x2'));var BPromise=require(_0x6709('0x3'));var Mustache=require(_0x6709('0x4'));var util=require(_0x6709('0x5'));var path=require(_0x6709('0x6'));var sox=require(_0x6709('0x7'));var csv=require(_0x6709('0x8'));var ejs=require(_0x6709('0x9'));var fs=require('fs');var fs_extra=require(_0x6709('0xa'));var _=require(_0x6709('0xb'));var squel=require(_0x6709('0xc'));var crypto=require(_0x6709('0xd'));var jsforce=require(_0x6709('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x6709('0xf'));var Papa=require(_0x6709('0x10'));var Redis=require(_0x6709('0x11'));var authService=require(_0x6709('0x12'));var qs=require(_0x6709('0x13'));var as=require(_0x6709('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x6709('0x15'));var utils=require(_0x6709('0x16'));var config=require(_0x6709('0x17'));var licenseUtil=require(_0x6709('0x18'));var db=require(_0x6709('0x19'))['db'];function respondWithStatusCode(_0x288f51,_0x1d56a5){_0x1d56a5=_0x1d56a5||0xcc;return function(_0x1ac547){if(_0x1ac547){return _0x288f51['sendStatus'](_0x1d56a5);}return _0x288f51[_0x6709('0x1a')](_0x1d56a5)[_0x6709('0x1b')]();};}function respondWithResult(_0x4d5255,_0x3706e1){_0x3706e1=_0x3706e1||0xc8;return function(_0x4e4587){if(_0x4e4587){return _0x4d5255[_0x6709('0x1a')](_0x3706e1)['json'](_0x4e4587);}};}function respondWithFilteredResult(_0x41af1f,_0x4bc059){return function(_0x149233){if(_0x149233){var _0x28866a=typeof _0x4bc059[_0x6709('0x1c')]===_0x6709('0x1d')&&typeof _0x4bc059['limit']==='undefined';var _0x5c4f94=_0x149233[_0x6709('0x1e')];var _0x235a54=_0x28866a?0x0:_0x4bc059['offset'];var _0x9c1fd8=_0x28866a?_0x149233[_0x6709('0x1e')]:_0x4bc059[_0x6709('0x1c')]+_0x4bc059['limit'];var _0x13cf04;if(_0x9c1fd8>=_0x5c4f94){_0x9c1fd8=_0x5c4f94;_0x13cf04=0xc8;}else{_0x13cf04=0xce;}_0x41af1f[_0x6709('0x1a')](_0x13cf04);return _0x41af1f[_0x6709('0x1f')](_0x6709('0x20'),_0x235a54+'-'+_0x9c1fd8+'/'+_0x5c4f94)['json'](_0x149233);}return null;};}function patchUpdates(_0x3c4971){return function(_0x1edac3){try{jsonpatch[_0x6709('0x21')](_0x1edac3,_0x3c4971,!![]);}catch(_0x3cf882){return BPromise[_0x6709('0x22')](_0x3cf882);}return _0x1edac3[_0x6709('0x23')]();};}function saveUpdates(_0x45921e,_0x17763d){return function(_0x386224){if(_0x386224){return _0x386224[_0x6709('0x24')](_0x45921e)[_0x6709('0x25')](function(_0xa36371){return _0xa36371;});}return null;};}function removeEntity(_0x5cf48b,_0x29f25f){return function(_0x81138e){if(_0x81138e){return _0x81138e[_0x6709('0x26')]()['then'](function(){_0x5cf48b[_0x6709('0x1a')](0xcc)[_0x6709('0x1b')]();});}};}function handleEntityNotFound(_0x20a347,_0x44b465){return function(_0x588e00){if(!_0x588e00){_0x20a347[_0x6709('0x27')](0x194);}return _0x588e00;};}function handleError(_0x3076fe,_0x50f7d6){_0x50f7d6=_0x50f7d6||0x1f4;return function(_0x585073){logger[_0x6709('0x28')](_0x585073['stack']);if(_0x585073[_0x6709('0x29')]){delete _0x585073[_0x6709('0x29')];}_0x3076fe['status'](_0x50f7d6)[_0x6709('0x2a')](_0x585073);};}exports['index']=function(_0x46a325,_0x3cd555){var _0x5b6906={},_0x137137={},_0x4e6989={'count':0x0,'rows':[]};var _0xe066d8=_[_0x6709('0x2b')](db['MailQueueReport'][_0x6709('0x2c')],function(_0x5deff5){return{'name':_0x5deff5[_0x6709('0x2d')],'type':_0x5deff5[_0x6709('0x2e')]['key']};});_0x137137['model']=_[_0x6709('0x2b')](_0xe066d8,_0x6709('0x29'));_0x137137[_0x6709('0x2f')]=_[_0x6709('0x30')](_0x46a325[_0x6709('0x2f')]);_0x137137[_0x6709('0x31')]=_[_0x6709('0x32')](_0x137137[_0x6709('0x33')],_0x137137[_0x6709('0x2f')]);_0x5b6906['attributes']=_[_0x6709('0x32')](_0x137137[_0x6709('0x33')],qs[_0x6709('0x34')](_0x46a325[_0x6709('0x2f')]['fields']));_0x5b6906[_0x6709('0x35')]=_0x5b6906[_0x6709('0x35')][_0x6709('0x36')]?_0x5b6906[_0x6709('0x35')]:_0x137137['model'];if(!_0x46a325[_0x6709('0x2f')][_0x6709('0x37')]('nolimit')){_0x5b6906[_0x6709('0x38')]=qs[_0x6709('0x38')](_0x46a325['query'][_0x6709('0x38')]);_0x5b6906[_0x6709('0x1c')]=qs[_0x6709('0x1c')](_0x46a325[_0x6709('0x2f')][_0x6709('0x1c')]);}_0x5b6906[_0x6709('0x39')]=qs[_0x6709('0x3a')](_0x46a325['query'][_0x6709('0x3a')]);_0x5b6906[_0x6709('0x3b')]=qs['filters'](_[_0x6709('0x3c')](_0x46a325[_0x6709('0x2f')],_0x137137[_0x6709('0x31')]),_0xe066d8);if(_0x46a325[_0x6709('0x2f')][_0x6709('0x3d')]){_0x5b6906[_0x6709('0x3b')]=_['merge'](_0x5b6906[_0x6709('0x3b')],{'$or':_['map'](_0xe066d8,function(_0x31e05a){if(_0x31e05a[_0x6709('0x2e')]!==_0x6709('0x3e')){var _0x48492f={};_0x48492f[_0x31e05a[_0x6709('0x29')]]={'$like':'%'+_0x46a325[_0x6709('0x2f')][_0x6709('0x3d')]+'%'};return _0x48492f;}})});}_0x5b6906=_[_0x6709('0x3f')]({},_0x5b6906,_0x46a325[_0x6709('0x40')]);var _0x1030ee={'where':_0x5b6906[_0x6709('0x3b')]};return db['MailQueueReport'][_0x6709('0x1e')](_0x1030ee)[_0x6709('0x25')](function(_0x50fbcd){_0x4e6989[_0x6709('0x1e')]=_0x50fbcd;if(_0x46a325[_0x6709('0x2f')][_0x6709('0x41')]){_0x5b6906[_0x6709('0x42')]=[{'all':!![]}];}return db['MailQueueReport']['findAll'](_0x5b6906);})[_0x6709('0x25')](function(_0x3f0da1){_0x4e6989[_0x6709('0x43')]=_0x3f0da1;return _0x4e6989;})[_0x6709('0x25')](respondWithFilteredResult(_0x3cd555,_0x5b6906))['catch'](handleError(_0x3cd555,null));};exports['show']=function(_0x5af1fb,_0x3d4237){var _0x293577={'raw':!![],'where':{'id':_0x5af1fb[_0x6709('0x44')]['id']}},_0x54f74e={};_0x54f74e[_0x6709('0x33')]=_['keys'](db['MailQueueReport'][_0x6709('0x2c')]);_0x54f74e[_0x6709('0x2f')]=_[_0x6709('0x30')](_0x5af1fb[_0x6709('0x2f')]);_0x54f74e[_0x6709('0x31')]=_['intersection'](_0x54f74e[_0x6709('0x33')],_0x54f74e['query']);_0x293577[_0x6709('0x35')]=_[_0x6709('0x32')](_0x54f74e[_0x6709('0x33')],qs['fields'](_0x5af1fb[_0x6709('0x2f')]['fields']));_0x293577['attributes']=_0x293577[_0x6709('0x35')][_0x6709('0x36')]?_0x293577[_0x6709('0x35')]:_0x54f74e[_0x6709('0x33')];if(_0x5af1fb[_0x6709('0x2f')][_0x6709('0x41')]){_0x293577[_0x6709('0x42')]=[{'all':!![]}];}_0x293577=_[_0x6709('0x3f')]({},_0x293577,_0x5af1fb[_0x6709('0x40')]);return db[_0x6709('0x45')][_0x6709('0x46')](_0x293577)[_0x6709('0x25')](handleEntityNotFound(_0x3d4237,null))[_0x6709('0x25')](respondWithResult(_0x3d4237,null))[_0x6709('0x47')](handleError(_0x3d4237,null));};exports[_0x6709('0x48')]=function(_0x4f82a0,_0xfbb810){return db['MailQueueReport']['create'](_0x4f82a0[_0x6709('0x49')],{})[_0x6709('0x25')](respondWithResult(_0xfbb810,0xc9))[_0x6709('0x47')](handleError(_0xfbb810,null));};exports[_0x6709('0x24')]=function(_0x22363b,_0x2b05dc){if(_0x22363b[_0x6709('0x49')]['id']){delete _0x22363b[_0x6709('0x49')]['id'];}return db['MailQueueReport'][_0x6709('0x46')]({'where':{'id':_0x22363b[_0x6709('0x44')]['id']}})[_0x6709('0x25')](handleEntityNotFound(_0x2b05dc,null))[_0x6709('0x25')](saveUpdates(_0x22363b['body'],null))[_0x6709('0x25')](respondWithResult(_0x2b05dc,null))['catch'](handleError(_0x2b05dc,null));};exports[_0x6709('0x26')]=function(_0x34a950,_0x2a563b){return db[_0x6709('0x45')][_0x6709('0x46')]({'where':{'id':_0x34a950['params']['id']}})[_0x6709('0x25')](handleEntityNotFound(_0x2a563b,null))[_0x6709('0x25')](removeEntity(_0x2a563b,null))[_0x6709('0x47')](handleError(_0x2a563b,null));};exports[_0x6709('0x4a')]=function(_0x1015e0,_0x55188c){return db['MailQueueReport'][_0x6709('0x4a')]()['then'](respondWithResult(_0x55188c,null))['catch'](handleError(_0x55188c,null));};
\ No newline at end of file
+var _0x1a85=['describe','zip-dir','fast-json-patch','request-promise','mustache','util','path','to-csv','fs-extra','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','end','error','stack','name','send','index','MailQueueReport','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','length','hasOwnProperty','nolimit','sort','where','pick','map','VIRTUAL','merge','options','include','findAll','rows','catch','show','fields','includeAll','find','create','body','params','destroy'];(function(_0x24bc28,_0x237aa0){var _0x4fd2b3=function(_0x557e21){while(--_0x557e21){_0x24bc28['push'](_0x24bc28['shift']());}};_0x4fd2b3(++_0x237aa0);}(_0x1a85,0x178));var _0x51a8=function(_0x12954a,_0x304691){_0x12954a=_0x12954a-0x0;var _0x5ccde2=_0x1a85[_0x12954a];return _0x5ccde2;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x51a8('0x0'));var jsonpatch=require(_0x51a8('0x1'));var rp=require(_0x51a8('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x51a8('0x3'));var util=require(_0x51a8('0x4'));var path=require(_0x51a8('0x5'));var sox=require('sox');var csv=require(_0x51a8('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x51a8('0x7'));var _=require('lodash');var squel=require(_0x51a8('0x8'));var crypto=require(_0x51a8('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x51a8('0xa'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x51a8('0xb'));var Redis=require(_0x51a8('0xc'));var authService=require(_0x51a8('0xd'));var qs=require(_0x51a8('0xe'));var as=require(_0x51a8('0xf'));var hardwareService=require(_0x51a8('0x10'));var logger=require(_0x51a8('0x11'))(_0x51a8('0x12'));var utils=require(_0x51a8('0x13'));var config=require(_0x51a8('0x14'));var licenseUtil=require(_0x51a8('0x15'));var db=require(_0x51a8('0x16'))['db'];function respondWithStatusCode(_0x38a1d2,_0x1827e6){_0x1827e6=_0x1827e6||0xcc;return function(_0x43c042){if(_0x43c042){return _0x38a1d2[_0x51a8('0x17')](_0x1827e6);}return _0x38a1d2[_0x51a8('0x18')](_0x1827e6)['end']();};}function respondWithResult(_0x461f5c,_0x7a4c36){_0x7a4c36=_0x7a4c36||0xc8;return function(_0xaec066){if(_0xaec066){return _0x461f5c['status'](_0x7a4c36)[_0x51a8('0x19')](_0xaec066);}};}function respondWithFilteredResult(_0x547d40,_0x10584b){return function(_0x2b8d37){if(_0x2b8d37){var _0x39cd45=typeof _0x10584b[_0x51a8('0x1a')]===_0x51a8('0x1b')&&typeof _0x10584b[_0x51a8('0x1c')]===_0x51a8('0x1b');var _0x516abc=_0x2b8d37[_0x51a8('0x1d')];var _0x45a433=_0x39cd45?0x0:_0x10584b[_0x51a8('0x1a')];var _0x23539e=_0x39cd45?_0x2b8d37[_0x51a8('0x1d')]:_0x10584b[_0x51a8('0x1a')]+_0x10584b['limit'];var _0x1df8c2;if(_0x23539e>=_0x516abc){_0x23539e=_0x516abc;_0x1df8c2=0xc8;}else{_0x1df8c2=0xce;}_0x547d40[_0x51a8('0x18')](_0x1df8c2);return _0x547d40[_0x51a8('0x1e')](_0x51a8('0x1f'),_0x45a433+'-'+_0x23539e+'/'+_0x516abc)[_0x51a8('0x19')](_0x2b8d37);}return null;};}function patchUpdates(_0x3bc044){return function(_0x28aea0){try{jsonpatch[_0x51a8('0x20')](_0x28aea0,_0x3bc044,!![]);}catch(_0x5ac1c0){return BPromise[_0x51a8('0x21')](_0x5ac1c0);}return _0x28aea0['save']();};}function saveUpdates(_0xfe0ddb,_0x12c029){return function(_0x8bda40){if(_0x8bda40){return _0x8bda40[_0x51a8('0x22')](_0xfe0ddb)['then'](function(_0xae3588){return _0xae3588;});}return null;};}function removeEntity(_0x4b9cdd,_0x47f063){return function(_0x23d26a){if(_0x23d26a){return _0x23d26a['destroy']()[_0x51a8('0x23')](function(){_0x4b9cdd[_0x51a8('0x18')](0xcc)[_0x51a8('0x24')]();});}};}function handleEntityNotFound(_0x18e2f3,_0x157554){return function(_0x2f2f05){if(!_0x2f2f05){_0x18e2f3[_0x51a8('0x17')](0x194);}return _0x2f2f05;};}function handleError(_0x1326a2,_0x5b3f49){_0x5b3f49=_0x5b3f49||0x1f4;return function(_0x273ce2){logger[_0x51a8('0x25')](_0x273ce2[_0x51a8('0x26')]);if(_0x273ce2[_0x51a8('0x27')]){delete _0x273ce2[_0x51a8('0x27')];}_0x1326a2[_0x51a8('0x18')](_0x5b3f49)[_0x51a8('0x28')](_0x273ce2);};}exports[_0x51a8('0x29')]=function(_0xec08ae,_0x4b5cda){var _0x20c6b5={},_0x347a02={},_0x4a1548={'count':0x0,'rows':[]};var _0x2f9d53=_['map'](db[_0x51a8('0x2a')][_0x51a8('0x2b')],function(_0x143f46){return{'name':_0x143f46[_0x51a8('0x2c')],'type':_0x143f46[_0x51a8('0x2d')]['key']};});_0x347a02[_0x51a8('0x2e')]=_['map'](_0x2f9d53,_0x51a8('0x27'));_0x347a02[_0x51a8('0x2f')]=_[_0x51a8('0x30')](_0xec08ae['query']);_0x347a02[_0x51a8('0x31')]=_['intersection'](_0x347a02[_0x51a8('0x2e')],_0x347a02[_0x51a8('0x2f')]);_0x20c6b5[_0x51a8('0x32')]=_[_0x51a8('0x33')](_0x347a02[_0x51a8('0x2e')],qs['fields'](_0xec08ae[_0x51a8('0x2f')]['fields']));_0x20c6b5[_0x51a8('0x32')]=_0x20c6b5[_0x51a8('0x32')][_0x51a8('0x34')]?_0x20c6b5['attributes']:_0x347a02[_0x51a8('0x2e')];if(!_0xec08ae[_0x51a8('0x2f')][_0x51a8('0x35')](_0x51a8('0x36'))){_0x20c6b5[_0x51a8('0x1c')]=qs['limit'](_0xec08ae['query']['limit']);_0x20c6b5[_0x51a8('0x1a')]=qs[_0x51a8('0x1a')](_0xec08ae['query'][_0x51a8('0x1a')]);}_0x20c6b5['order']=qs[_0x51a8('0x37')](_0xec08ae[_0x51a8('0x2f')][_0x51a8('0x37')]);_0x20c6b5[_0x51a8('0x38')]=qs[_0x51a8('0x31')](_[_0x51a8('0x39')](_0xec08ae['query'],_0x347a02['filters']),_0x2f9d53);if(_0xec08ae[_0x51a8('0x2f')]['filter']){_0x20c6b5['where']=_['merge'](_0x20c6b5[_0x51a8('0x38')],{'$or':_[_0x51a8('0x3a')](_0x2f9d53,function(_0x3cbf97){if(_0x3cbf97['type']!==_0x51a8('0x3b')){var _0x25d772={};_0x25d772[_0x3cbf97[_0x51a8('0x27')]]={'$like':'%'+_0xec08ae[_0x51a8('0x2f')]['filter']+'%'};return _0x25d772;}})});}_0x20c6b5=_[_0x51a8('0x3c')]({},_0x20c6b5,_0xec08ae[_0x51a8('0x3d')]);var _0x1b0333={'where':_0x20c6b5['where']};return db[_0x51a8('0x2a')]['count'](_0x1b0333)[_0x51a8('0x23')](function(_0x1e637a){_0x4a1548[_0x51a8('0x1d')]=_0x1e637a;if(_0xec08ae[_0x51a8('0x2f')]['includeAll']){_0x20c6b5[_0x51a8('0x3e')]=[{'all':!![]}];}return db[_0x51a8('0x2a')][_0x51a8('0x3f')](_0x20c6b5);})[_0x51a8('0x23')](function(_0xa33fc){_0x4a1548[_0x51a8('0x40')]=_0xa33fc;return _0x4a1548;})[_0x51a8('0x23')](respondWithFilteredResult(_0x4b5cda,_0x20c6b5))[_0x51a8('0x41')](handleError(_0x4b5cda,null));};exports[_0x51a8('0x42')]=function(_0x4b8467,_0x22e6e6){var _0x2afb74={'raw':!![],'where':{'id':_0x4b8467['params']['id']}},_0x4c7c67={};_0x4c7c67[_0x51a8('0x2e')]=_[_0x51a8('0x30')](db[_0x51a8('0x2a')][_0x51a8('0x2b')]);_0x4c7c67[_0x51a8('0x2f')]=_[_0x51a8('0x30')](_0x4b8467[_0x51a8('0x2f')]);_0x4c7c67[_0x51a8('0x31')]=_[_0x51a8('0x33')](_0x4c7c67[_0x51a8('0x2e')],_0x4c7c67['query']);_0x2afb74[_0x51a8('0x32')]=_[_0x51a8('0x33')](_0x4c7c67[_0x51a8('0x2e')],qs[_0x51a8('0x43')](_0x4b8467[_0x51a8('0x2f')][_0x51a8('0x43')]));_0x2afb74['attributes']=_0x2afb74[_0x51a8('0x32')]['length']?_0x2afb74[_0x51a8('0x32')]:_0x4c7c67[_0x51a8('0x2e')];if(_0x4b8467[_0x51a8('0x2f')][_0x51a8('0x44')]){_0x2afb74[_0x51a8('0x3e')]=[{'all':!![]}];}_0x2afb74=_['merge']({},_0x2afb74,_0x4b8467['options']);return db[_0x51a8('0x2a')][_0x51a8('0x45')](_0x2afb74)[_0x51a8('0x23')](handleEntityNotFound(_0x22e6e6,null))[_0x51a8('0x23')](respondWithResult(_0x22e6e6,null))[_0x51a8('0x41')](handleError(_0x22e6e6,null));};exports['create']=function(_0x504a43,_0xcbd998){return db[_0x51a8('0x2a')][_0x51a8('0x46')](_0x504a43[_0x51a8('0x47')],{})[_0x51a8('0x23')](respondWithResult(_0xcbd998,0xc9))[_0x51a8('0x41')](handleError(_0xcbd998,null));};exports[_0x51a8('0x22')]=function(_0x1103a3,_0x301578){if(_0x1103a3['body']['id']){delete _0x1103a3['body']['id'];}return db['MailQueueReport'][_0x51a8('0x45')]({'where':{'id':_0x1103a3[_0x51a8('0x48')]['id']}})[_0x51a8('0x23')](handleEntityNotFound(_0x301578,null))['then'](saveUpdates(_0x1103a3[_0x51a8('0x47')],null))[_0x51a8('0x23')](respondWithResult(_0x301578,null))['catch'](handleError(_0x301578,null));};exports[_0x51a8('0x49')]=function(_0x4fb93c,_0x50a2f8){return db[_0x51a8('0x2a')][_0x51a8('0x45')]({'where':{'id':_0x4fb93c[_0x51a8('0x48')]['id']}})['then'](handleEntityNotFound(_0x50a2f8,null))['then'](removeEntity(_0x50a2f8,null))[_0x51a8('0x41')](handleError(_0x50a2f8,null));};exports['describe']=function(_0x21c4da,_0xc89617){return db[_0x51a8('0x2a')][_0x51a8('0x4a')]()[_0x51a8('0x23')](respondWithResult(_0xc89617,null))[_0x51a8('0x41')](handleError(_0xc89617,null));};
\ No newline at end of file
index 38fb734..fac7fe3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6bac=['uniqueid','lodash','util','api','bluebird','request-promise','path','rimraf','./mailQueueReport.attributes','exports','define','MailQueueReport'];(function(_0x5de7c2,_0x5c354e){var _0x5364bf=function(_0x1ceb13){while(--_0x1ceb13){_0x5de7c2['push'](_0x5de7c2['shift']());}};_0x5364bf(++_0x5c354e);}(_0x6bac,0xf1));var _0xc6ba=function(_0x31d717,_0x5d60c3){_0x31d717=_0x31d717-0x0;var _0x34d2f8=_0x6bac[_0x31d717];return _0x34d2f8;};'use strict';var _=require(_0xc6ba('0x0'));var util=require(_0xc6ba('0x1'));var logger=require('../../config/logger')(_0xc6ba('0x2'));var moment=require('moment');var BPromise=require(_0xc6ba('0x3'));var rp=require(_0xc6ba('0x4'));var fs=require('fs');var path=require(_0xc6ba('0x5'));var rimraf=require(_0xc6ba('0x6'));var config=require('../../config/environment');var attributes=require(_0xc6ba('0x7'));module[_0xc6ba('0x8')]=function(_0x1f2244,_0x521a0e){return _0x1f2244[_0xc6ba('0x9')](_0xc6ba('0xa'),attributes,{'tableName':'report_mail_queue','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xc6ba('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2010=['api','moment','bluebird','request-promise','path','rimraf','./mailQueueReport.attributes','exports','define','MailQueueReport','report_mail_queue','uniqueid','lodash','util'];(function(_0x4b526b,_0x2f1317){var _0x57f25d=function(_0xbd39a0){while(--_0xbd39a0){_0x4b526b['push'](_0x4b526b['shift']());}};_0x57f25d(++_0x2f1317);}(_0x2010,0x124));var _0x0201=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2010[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x0201('0x0'));var util=require(_0x0201('0x1'));var logger=require('../../config/logger')(_0x0201('0x2'));var moment=require(_0x0201('0x3'));var BPromise=require(_0x0201('0x4'));var rp=require(_0x0201('0x5'));var fs=require('fs');var path=require(_0x0201('0x6'));var rimraf=require(_0x0201('0x7'));var config=require('../../config/environment');var attributes=require(_0x0201('0x8'));module[_0x0201('0x9')]=function(_0x10d62a,_0x29b195){return _0x10d62a[_0x0201('0xa')](_0x0201('0xb'),attributes,{'tableName':_0x0201('0xc'),'paranoid':![],'indexes':[{'name':_0x0201('0xd'),'fields':[_0x0201('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 639d1b1..7f21f5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['MailQueueReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateMailQueueReport','create','options','raw','debug','MailQueueReport','body','attributes','limit','UpdateMailQueueReport','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info'];(function(_0x64a9ca,_0x43440f){var _0x319429=function(_0xb11879){while(--_0xb11879){_0x64a9ca['push'](_0x64a9ca['shift']());}};_0x319429(++_0x43440f);}(_0xadb5,0xad));var _0x5adb=function(_0x4e29e3,_0x373655){_0x4e29e3=_0x4e29e3-0x0;var _0x53b96a=_0xadb5[_0x4e29e3];return _0x53b96a;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var moment=require('moment');var BPromise=require(_0x5adb('0x1'));var rs=require(_0x5adb('0x2'));var fs=require('fs');var Redis=require(_0x5adb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5adb('0x4'));var logger=require(_0x5adb('0x5'))(_0x5adb('0x6'));var config=require('../../config/environment');var jayson=require(_0x5adb('0x7'));var client=jayson[_0x5adb('0x8')][_0x5adb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3213e8,_0xdf3776,_0x353885){return new BPromise(function(_0x47228a,_0x6d1b45){return client[_0x5adb('0xa')](_0x3213e8,_0x353885)[_0x5adb('0xb')](function(_0x34f59d){logger[_0x5adb('0xc')](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));logger['debug']('MailQueueReport,\x20%s,\x20%s,\x20%s',_0xdf3776,_0x5adb('0xe'),JSON[_0x5adb('0xf')](_0x34f59d));if(_0x34f59d[_0x5adb('0x10')]){if(_0x34f59d['error'][_0x5adb('0x11')]===0x1f4){logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d['error'][_0x5adb('0x12')]);return _0x6d1b45(_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);}logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);return _0x47228a(_0x34f59d['error'][_0x5adb('0x12')]);}else{logger['info'](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));_0x47228a(_0x34f59d[_0x5adb('0x13')][_0x5adb('0x12')]);}})[_0x5adb('0x14')](function(_0x39d24d){logger[_0x5adb('0x10')](_0x5adb('0xd'),_0xdf3776,_0x39d24d);_0x6d1b45(_0x39d24d);});});}exports[_0x5adb('0x15')]=function(_0x529b65){var _0x3fff62=this;return new Promise(function(_0x5de028,_0x1d9e86){return db['MailQueueReport'][_0x5adb('0x16')](_0x529b65['body'],{'raw':_0x529b65['options']?_0x529b65[_0x5adb('0x17')][_0x5adb('0x18')]===undefined?!![]:![]:!![]})[_0x5adb('0xb')](function(_0x1fd4a7){logger[_0x5adb('0xc')]('CreateMailQueueReport',_0x529b65);logger[_0x5adb('0x19')]('CreateMailQueueReport',_0x529b65,JSON['stringify'](_0x1fd4a7));_0x5de028(_0x1fd4a7);})[_0x5adb('0x14')](function(_0x379b33){logger[_0x5adb('0x10')](_0x5adb('0x15'),_0x379b33[_0x5adb('0x12')],_0x529b65);_0x1d9e86(_0x3fff62[_0x5adb('0x10')](0x1f4,_0x379b33[_0x5adb('0x12')]));});});};exports['UpdateMailQueueReport']=function(_0x4b1957){var _0x373cc3=this;return new Promise(function(_0x3220cd,_0x3839fb){return db[_0x5adb('0x1a')]['update'](_0x4b1957[_0x5adb('0x1b')],{'raw':_0x4b1957[_0x5adb('0x17')]?_0x4b1957['options'][_0x5adb('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')]['where']||null:null,'attributes':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')][_0x5adb('0x1c')]||null:null,'limit':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')][_0x5adb('0x1d')]||null:null})['then'](function(_0x49992e){logger['info'](_0x5adb('0x1e'),_0x4b1957);logger[_0x5adb('0x19')](_0x5adb('0x1e'),_0x4b1957,JSON[_0x5adb('0xf')](_0x49992e));_0x3220cd(_0x49992e);})[_0x5adb('0x14')](function(_0x4de310){logger[_0x5adb('0x10')](_0x5adb('0x1e'),_0x4de310[_0x5adb('0x12')],_0x4b1957);_0x3839fb(_0x373cc3[_0x5adb('0x10')](0x1f4,_0x4de310[_0x5adb('0x12')]));});});};
\ No newline at end of file
+var _0xdb28=['UpdateMailQueueReport','MailQueueReport','update','raw','where','limit','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','MailQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','CreateMailQueueReport','create','body','options'];(function(_0x3799cd,_0x131494){var _0x3410d3=function(_0x4a742b){while(--_0x4a742b){_0x3799cd['push'](_0x3799cd['shift']());}};_0x3410d3(++_0x131494);}(_0xdb28,0x106));var _0x8db2=function(_0x4b883b,_0xbd7aba){_0x4b883b=_0x4b883b-0x0;var _0x226000=_0xdb28[_0x4b883b];return _0x226000;};'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')]('MailQueueReport,\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);});});}exports[_0x8db2('0x16')]=function(_0x3fddc2){var _0x2efd06=this;return new Promise(function(_0x46ce14,_0x51d60d){return db['MailQueueReport'][_0x8db2('0x17')](_0x3fddc2[_0x8db2('0x18')],{'raw':_0x3fddc2[_0x8db2('0x19')]?_0x3fddc2[_0x8db2('0x19')]['raw']===undefined?!![]:![]:!![]})[_0x8db2('0xc')](function(_0x36a9ff){logger[_0x8db2('0x14')](_0x8db2('0x16'),_0x3fddc2);logger[_0x8db2('0xf')]('CreateMailQueueReport',_0x3fddc2,JSON[_0x8db2('0x10')](_0x36a9ff));_0x46ce14(_0x36a9ff);})[_0x8db2('0x15')](function(_0x18f69c){logger[_0x8db2('0x11')](_0x8db2('0x16'),_0x18f69c[_0x8db2('0x13')],_0x3fddc2);_0x51d60d(_0x2efd06[_0x8db2('0x11')](0x1f4,_0x18f69c['message']));});});};exports[_0x8db2('0x1a')]=function(_0x4f6516){var _0x5725f0=this;return new Promise(function(_0x52a9ca,_0x4d923c){return db[_0x8db2('0x1b')][_0x8db2('0x1c')](_0x4f6516[_0x8db2('0x18')],{'raw':_0x4f6516[_0x8db2('0x19')]?_0x4f6516[_0x8db2('0x19')][_0x8db2('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4f6516['options']?_0x4f6516[_0x8db2('0x19')][_0x8db2('0x1e')]||null:null,'attributes':_0x4f6516[_0x8db2('0x19')]?_0x4f6516[_0x8db2('0x19')]['attributes']||null:null,'limit':_0x4f6516[_0x8db2('0x19')]?_0x4f6516[_0x8db2('0x19')][_0x8db2('0x1f')]||null:null})[_0x8db2('0xc')](function(_0xbe5ece){logger[_0x8db2('0x14')](_0x8db2('0x1a'),_0x4f6516);logger[_0x8db2('0xf')](_0x8db2('0x1a'),_0x4f6516,JSON['stringify'](_0xbe5ece));_0x52a9ca(_0xbe5ece);})[_0x8db2('0x15')](function(_0x50b28d){logger['error'](_0x8db2('0x1a'),_0x50b28d[_0x8db2('0x13')],_0x4f6516);_0x4d923c(_0x5725f0[_0x8db2('0x11')](0x1f4,_0x50b28d['message']));});});};
\ No newline at end of file
index 2088d97..cd4b17b 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(_0x8cfd08,_0x656b39){var _0x1c6452=function(_0x34a7cc){while(--_0x34a7cc){_0x8cfd08['push'](_0x8cfd08['shift']());}};_0x1c6452(++_0x656b39);}(_0x9c44,0x178));var _0x49c4=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0x9c44[_0x1d1779];return _0x2377e9;};'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(_0x49e532,_0x5c0cf7){var _0x2a3823=function(_0x5e0420){while(--_0x5e0420){_0x49e532['push'](_0x49e532['shift']());}};_0x2a3823(++_0x5c0cf7);}(_0xe706,0xa3));var _0x6e70=function(_0x53758c,_0x5664af){_0x53758c=_0x53758c-0x0;var _0x425eff=_0xe706[_0x53758c];return _0x425eff;};'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 d6c1378..c0bf4c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbee3=['INTEGER','exports','BOOLEAN','STRING'];(function(_0x5777aa,_0x1c01b0){var _0x40f69e=function(_0x40675b){while(--_0x40675b){_0x5777aa['push'](_0x5777aa['shift']());}};_0x40f69e(++_0x1c01b0);}(_0xbee3,0xd5));var _0x3bee=function(_0x51be20,_0x3d5246){_0x51be20=_0x51be20-0x0;var _0xd275ea=_0xbee3[_0x51be20];return _0xd275ea;};'use strict';var Sequelize=require('sequelize');module[_0x3bee('0x0')]={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize[_0x3bee('0x1')],'defaultValue':!![]},'user':{'type':Sequelize[_0x3bee('0x2')]},'password':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0x3bee('0x3')]},'tls':{'type':Sequelize[_0x3bee('0x1')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x3bee('0x2')],'defaultValue':'INBOX'},'connTimeout':{'type':Sequelize[_0x3bee('0x3')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0x3bee('0x3')],'defaultValue':0x5},'service':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xfe57=['STRING','INTEGER','INBOX','sequelize','exports','BOOLEAN'];(function(_0x2235bf,_0x3a06a7){var _0x4c3a64=function(_0x3b3bb6){while(--_0x3b3bb6){_0x2235bf['push'](_0x2235bf['shift']());}};_0x4c3a64(++_0x3a06a7);}(_0xfe57,0x195));var _0x7fe5=function(_0x3a8db5,_0x31cff7){_0x3a8db5=_0x3a8db5-0x0;var _0x2c03cd=_0xfe57[_0x3a8db5];return _0x2c03cd;};'use strict';var Sequelize=require(_0x7fe5('0x0'));module[_0x7fe5('0x1')]={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize[_0x7fe5('0x2')],'defaultValue':!![]},'user':{'type':Sequelize[_0x7fe5('0x3')]},'password':{'type':Sequelize[_0x7fe5('0x3')]},'port':{'type':Sequelize[_0x7fe5('0x4')]},'tls':{'type':Sequelize[_0x7fe5('0x2')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x7fe5('0x3')],'defaultValue':_0x7fe5('0x5')},'connTimeout':{'type':Sequelize[_0x7fe5('0x4')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0x7fe5('0x4')],'defaultValue':0x5},'service':{'type':Sequelize[_0x7fe5('0x3')]}};
\ No newline at end of file
index ef23349..caa15d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x076a=['define','MailServerIn','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','exports'];(function(_0x1e730e,_0x1bed73){var _0x46c191=function(_0x34feac){while(--_0x34feac){_0x1e730e['push'](_0x1e730e['shift']());}};_0x46c191(++_0x1bed73);}(_0x076a,0x92));var _0xa076=function(_0x382189,_0x4c38a9){_0x382189=_0x382189-0x0;var _0x36f350=_0x076a[_0x382189];return _0x36f350;};'use strict';var _=require(_0xa076('0x0'));var util=require(_0xa076('0x1'));var logger=require(_0xa076('0x2'))(_0xa076('0x3'));var moment=require(_0xa076('0x4'));var BPromise=require(_0xa076('0x5'));var rp=require(_0xa076('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa076('0x7'));var config=require(_0xa076('0x8'));var attributes=require('./mailServerIn.attributes');module[_0xa076('0x9')]=function(_0xd467f6,_0x485e26){return _0xd467f6[_0xa076('0xa')](_0xa076('0xb'),attributes,{'tableName':'mail_servers_in','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8f2c=['request-promise','../../config/environment','./mailServerIn.attributes','exports','define','MailServerIn','mail_servers_in','lodash','../../config/logger','api','bluebird'];(function(_0xbd08b4,_0x4790ed){var _0x314f1e=function(_0x161589){while(--_0x161589){_0xbd08b4['push'](_0xbd08b4['shift']());}};_0x314f1e(++_0x4790ed);}(_0x8f2c,0x6a));var _0xc8f2=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0x8f2c[_0x27af45];return _0x18df21;};'use strict';var _=require(_0xc8f2('0x0'));var util=require('util');var logger=require(_0xc8f2('0x1'))(_0xc8f2('0x2'));var moment=require('moment');var BPromise=require(_0xc8f2('0x3'));var rp=require(_0xc8f2('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xc8f2('0x5'));var attributes=require(_0xc8f2('0x6'));module[_0xc8f2('0x7')]=function(_0x222a2e,_0x4f5d98){return _0x222a2e[_0xc8f2('0x8')](_0xc8f2('0x9'),attributes,{'tableName':_0xc8f2('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c145915..eb2d718 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec08=['map','model','attributes','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','MailServerIn,\x20%s,\x20%s','request\x20sent','debug','MailServerIn,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','GetMailServerIn','findAll','options','raw','where','include'];(function(_0x4058a7,_0x46326c){var _0x26079f=function(_0xa16e96){while(--_0xa16e96){_0x4058a7['push'](_0x4058a7['shift']());}};_0x26079f(++_0x46326c);}(_0xec08,0xad));var _0x8ec0=function(_0x379f98,_0x26e8cd){_0x379f98=_0x379f98-0x0;var _0x250ba2=_0xec08[_0x379f98];return _0x250ba2;};'use strict';var _=require('lodash');var util=require(_0x8ec0('0x0'));var moment=require('moment');var BPromise=require(_0x8ec0('0x1'));var rs=require(_0x8ec0('0x2'));var fs=require('fs');var Redis=require(_0x8ec0('0x3'));var db=require(_0x8ec0('0x4'))['db'];var utils=require(_0x8ec0('0x5'));var logger=require(_0x8ec0('0x6'))(_0x8ec0('0x7'));var config=require(_0x8ec0('0x8'));var jayson=require(_0x8ec0('0x9'));var client=jayson[_0x8ec0('0xa')][_0x8ec0('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xe6f4dc,_0x1a021d,_0x1a06c8){return new BPromise(function(_0x590a23,_0x2821eb){return client[_0x8ec0('0xc')](_0xe6f4dc,_0x1a06c8)[_0x8ec0('0xd')](function(_0x1fc9c0){logger[_0x8ec0('0xe')](_0x8ec0('0xf'),_0x1a021d,_0x8ec0('0x10'));logger[_0x8ec0('0x11')](_0x8ec0('0x12'),_0x1a021d,'request\x20sent',JSON[_0x8ec0('0x13')](_0x1fc9c0));if(_0x1fc9c0['error']){if(_0x1fc9c0['error'][_0x8ec0('0x14')]===0x1f4){logger['error'](_0x8ec0('0xf'),_0x1a021d,_0x1fc9c0[_0x8ec0('0x15')][_0x8ec0('0x16')]);return _0x2821eb(_0x1fc9c0['error'][_0x8ec0('0x16')]);}logger[_0x8ec0('0x15')](_0x8ec0('0xf'),_0x1a021d,_0x1fc9c0['error'][_0x8ec0('0x16')]);return _0x590a23(_0x1fc9c0[_0x8ec0('0x15')][_0x8ec0('0x16')]);}else{logger[_0x8ec0('0xe')](_0x8ec0('0xf'),_0x1a021d,_0x8ec0('0x10'));_0x590a23(_0x1fc9c0[_0x8ec0('0x17')][_0x8ec0('0x16')]);}})[_0x8ec0('0x18')](function(_0x26b3a7){logger[_0x8ec0('0x15')](_0x8ec0('0xf'),_0x1a021d,_0x26b3a7);_0x2821eb(_0x26b3a7);});});}exports[_0x8ec0('0x19')]=function(_0x92d98f){var _0x583b7b=this;return new Promise(function(_0x2dfc23,_0x54599d){return db['MailServerIn'][_0x8ec0('0x1a')]({'raw':_0x92d98f['options']?_0x92d98f[_0x8ec0('0x1b')][_0x8ec0('0x1c')]===undefined?!![]:![]:!![],'where':_0x92d98f['options']?_0x92d98f['options'][_0x8ec0('0x1d')]||null:null,'attributes':_0x92d98f['options']?_0x92d98f[_0x8ec0('0x1b')]['attributes']||null:null,'limit':_0x92d98f[_0x8ec0('0x1b')]?_0x92d98f['options']['limit']||null:null,'include':_0x92d98f['options']?_0x92d98f[_0x8ec0('0x1b')][_0x8ec0('0x1e')]?_[_0x8ec0('0x1f')](_0x92d98f[_0x8ec0('0x1b')][_0x8ec0('0x1e')],function(_0x3c150c){return{'model':db[_0x3c150c[_0x8ec0('0x20')]],'as':_0x3c150c['as'],'attributes':_0x3c150c[_0x8ec0('0x21')],'include':_0x3c150c[_0x8ec0('0x1e')]?_[_0x8ec0('0x1f')](_0x3c150c[_0x8ec0('0x1e')],function(_0x5124bd){return{'model':db[_0x5124bd['model']],'as':_0x5124bd['as'],'attributes':_0x5124bd[_0x8ec0('0x21')],'include':_0x5124bd[_0x8ec0('0x1e')]?_[_0x8ec0('0x1f')](_0x5124bd[_0x8ec0('0x1e')],function(_0x448819){return{'model':db[_0x448819[_0x8ec0('0x20')]],'as':_0x448819['as'],'attributes':_0x448819['attributes']};}):[]};}):[]};}):[]:[]})[_0x8ec0('0xd')](function(_0x1ab61c){logger[_0x8ec0('0xe')]('GetMailServerIn',_0x92d98f);logger[_0x8ec0('0x11')]('GetMailServerIn',_0x92d98f,JSON[_0x8ec0('0x13')](_0x1ab61c));_0x2dfc23(_0x1ab61c);})[_0x8ec0('0x18')](function(_0x236c80){logger[_0x8ec0('0x15')](_0x8ec0('0x19'),_0x236c80[_0x8ec0('0x16')],_0x92d98f);_0x54599d(_0x583b7b['error'](0x1f4,_0x236c80[_0x8ec0('0x16')]));});});};
\ No newline at end of file
+var _0x2d5e=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','MailServerIn,\x20%s,\x20%s','debug','MailServerIn,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','GetMailServerIn','MailServerIn','options','raw','where','attributes','limit','include','map','model','catch','lodash','bluebird','ioredis'];(function(_0x347c61,_0x5c038e){var _0x3c5237=function(_0x514ddc){while(--_0x514ddc){_0x347c61['push'](_0x347c61['shift']());}};_0x3c5237(++_0x5c038e);}(_0x2d5e,0x19d));var _0xe2d5=function(_0xab760,_0xd2bc5b){_0xab760=_0xab760-0x0;var _0x54168f=_0x2d5e[_0xab760];return _0x54168f;};'use strict';var _=require(_0xe2d5('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xe2d5('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe2d5('0x2'));var db=require(_0xe2d5('0x3'))['db'];var utils=require(_0xe2d5('0x4'));var logger=require('../../config/logger')(_0xe2d5('0x5'));var config=require(_0xe2d5('0x6'));var jayson=require(_0xe2d5('0x7'));var client=jayson[_0xe2d5('0x8')][_0xe2d5('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x21f74d,_0x411c77,_0x512f16){return new BPromise(function(_0x548942,_0x2ce53b){return client['request'](_0x21f74d,_0x512f16)[_0xe2d5('0xa')](function(_0x2a0cf1){logger[_0xe2d5('0xb')](_0xe2d5('0xc'),_0x411c77,'request\x20sent');logger[_0xe2d5('0xd')](_0xe2d5('0xe'),_0x411c77,'request\x20sent',JSON[_0xe2d5('0xf')](_0x2a0cf1));if(_0x2a0cf1[_0xe2d5('0x10')]){if(_0x2a0cf1['error'][_0xe2d5('0x11')]===0x1f4){logger[_0xe2d5('0x10')](_0xe2d5('0xc'),_0x411c77,_0x2a0cf1[_0xe2d5('0x10')]['message']);return _0x2ce53b(_0x2a0cf1[_0xe2d5('0x10')][_0xe2d5('0x12')]);}logger[_0xe2d5('0x10')](_0xe2d5('0xc'),_0x411c77,_0x2a0cf1[_0xe2d5('0x10')][_0xe2d5('0x12')]);return _0x548942(_0x2a0cf1[_0xe2d5('0x10')][_0xe2d5('0x12')]);}else{logger[_0xe2d5('0xb')]('MailServerIn,\x20%s,\x20%s',_0x411c77,_0xe2d5('0x13'));_0x548942(_0x2a0cf1[_0xe2d5('0x14')]['message']);}})['catch'](function(_0x5d70d3){logger['error'](_0xe2d5('0xc'),_0x411c77,_0x5d70d3);_0x2ce53b(_0x5d70d3);});});}exports[_0xe2d5('0x15')]=function(_0x2050e3){var _0x280213=this;return new Promise(function(_0x309131,_0x2b61f2){return db[_0xe2d5('0x16')]['findAll']({'raw':_0x2050e3['options']?_0x2050e3[_0xe2d5('0x17')][_0xe2d5('0x18')]===undefined?!![]:![]:!![],'where':_0x2050e3[_0xe2d5('0x17')]?_0x2050e3[_0xe2d5('0x17')][_0xe2d5('0x19')]||null:null,'attributes':_0x2050e3[_0xe2d5('0x17')]?_0x2050e3[_0xe2d5('0x17')][_0xe2d5('0x1a')]||null:null,'limit':_0x2050e3[_0xe2d5('0x17')]?_0x2050e3[_0xe2d5('0x17')][_0xe2d5('0x1b')]||null:null,'include':_0x2050e3[_0xe2d5('0x17')]?_0x2050e3['options'][_0xe2d5('0x1c')]?_[_0xe2d5('0x1d')](_0x2050e3['options']['include'],function(_0x296c4b){return{'model':db[_0x296c4b[_0xe2d5('0x1e')]],'as':_0x296c4b['as'],'attributes':_0x296c4b[_0xe2d5('0x1a')],'include':_0x296c4b[_0xe2d5('0x1c')]?_['map'](_0x296c4b[_0xe2d5('0x1c')],function(_0x4d2c1d){return{'model':db[_0x4d2c1d[_0xe2d5('0x1e')]],'as':_0x4d2c1d['as'],'attributes':_0x4d2c1d[_0xe2d5('0x1a')],'include':_0x4d2c1d[_0xe2d5('0x1c')]?_[_0xe2d5('0x1d')](_0x4d2c1d[_0xe2d5('0x1c')],function(_0x361ab9){return{'model':db[_0x361ab9[_0xe2d5('0x1e')]],'as':_0x361ab9['as'],'attributes':_0x361ab9[_0xe2d5('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xe2d5('0xa')](function(_0x394967){logger[_0xe2d5('0xb')]('GetMailServerIn',_0x2050e3);logger[_0xe2d5('0xd')](_0xe2d5('0x15'),_0x2050e3,JSON[_0xe2d5('0xf')](_0x394967));_0x309131(_0x394967);})[_0xe2d5('0x1f')](function(_0x5f13ca){logger[_0xe2d5('0x10')](_0xe2d5('0x15'),_0x5f13ca['message'],_0x2050e3);_0x2b61f2(_0x280213['error'](0x1f4,_0x5f13ca[_0xe2d5('0x12')]));});});};
\ No newline at end of file
index 5c7387c..325eece 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailServerOut.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0x5bd426,_0x4878e5){var _0x23a7eb=function(_0x594b42){while(--_0x594b42){_0x5bd426['push'](_0x5bd426['shift']());}};_0x23a7eb(++_0x4878e5);}(_0x9957,0x93));var _0x7995=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9957[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0xe')]('/',auth['isAuthenticated'](),controller[_0x7995('0xf')]);router[_0x7995('0x10')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router[_0x7995('0x12')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0x13')]);module[_0x7995('0x14')]=router;
\ No newline at end of file
+var _0x9957=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailServerOut.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0x18cd5b,_0x10240b){var _0x5eaa52=function(_0x2bccad){while(--_0x2bccad){_0x18cd5b['push'](_0x18cd5b['shift']());}};_0x5eaa52(++_0x10240b);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0xe')]('/',auth['isAuthenticated'](),controller[_0x7995('0xf')]);router[_0x7995('0x10')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router[_0x7995('0x12')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0x13')]);module[_0x7995('0x14')]=router;
\ No newline at end of file
index d216b4e..952a5b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcc7=['BOOLEAN','STRING','INTEGER'];(function(_0x4d83ab,_0x1a67ab){var _0x4ddbeb=function(_0x1e0c42){while(--_0x1e0c42){_0x4d83ab['push'](_0x4d83ab['shift']());}};_0x4ddbeb(++_0x1a67ab);}(_0xfcc7,0x6a));var _0x7fcc=function(_0xd2d54,_0x5329f7){_0xd2d54=_0xd2d54-0x0;var _0x78b113=_0xfcc7[_0xd2d54];return _0x78b113;};'use strict';var Sequelize=require('sequelize');module['exports']={'description':{'type':Sequelize[_0x7fcc('0x0')]},'host':{'type':Sequelize[_0x7fcc('0x0')]},'user':{'type':Sequelize['STRING']},'pass':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0x7fcc('0x1')]},'secure':{'type':Sequelize[_0x7fcc('0x2')],'defaultValue':![]},'service':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize[_0x7fcc('0x2')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x33d4=['exports','STRING','INTEGER','BOOLEAN'];(function(_0x4fbfd9,_0x3ab91a){var _0x31dc94=function(_0x11e53b){while(--_0x11e53b){_0x4fbfd9['push'](_0x4fbfd9['shift']());}};_0x31dc94(++_0x3ab91a);}(_0x33d4,0x1a4));var _0x433d=function(_0x3a53f7,_0x316a3b){_0x3a53f7=_0x3a53f7-0x0;var _0x490b9c=_0x33d4[_0x3a53f7];return _0x490b9c;};'use strict';var Sequelize=require('sequelize');module[_0x433d('0x0')]={'description':{'type':Sequelize[_0x433d('0x1')]},'host':{'type':Sequelize[_0x433d('0x1')]},'user':{'type':Sequelize[_0x433d('0x1')]},'pass':{'type':Sequelize[_0x433d('0x1')]},'port':{'type':Sequelize[_0x433d('0x2')]},'secure':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'service':{'type':Sequelize[_0x433d('0x1')]},'authentication':{'type':Sequelize[_0x433d('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index d8b9029..316d5c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2068=['intersection','query','fields','attributes','length','nolimit','where','filters','pick','merge','VIRTUAL','filter','MailServerOut','includeAll','include','findAll','catch','show','params','find','create','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../mysqldb','sendStatus','status','undefined','limit','offset','count','set','Content-Range','json','apply','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys'];(function(_0x78d733,_0x4aa741){var _0x5b913a=function(_0x5f0f57){while(--_0x5f0f57){_0x78d733['push'](_0x78d733['shift']());}};_0x5b913a(++_0x4aa741);}(_0x2068,0xeb));var _0x8206=function(_0x40c601,_0x25997e){_0x40c601=_0x40c601-0x0;var _0x214a0=_0x2068[_0x40c601];return _0x214a0;};'use strict';var emlformat=require(_0x8206('0x0'));var rimraf=require(_0x8206('0x1'));var zipdir=require(_0x8206('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8206('0x3'));var moment=require(_0x8206('0x4'));var BPromise=require(_0x8206('0x5'));var Mustache=require(_0x8206('0x6'));var util=require('util');var path=require('path');var sox=require(_0x8206('0x7'));var csv=require(_0x8206('0x8'));var ejs=require(_0x8206('0x9'));var fs=require('fs');var fs_extra=require(_0x8206('0xa'));var _=require(_0x8206('0xb'));var squel=require(_0x8206('0xc'));var crypto=require(_0x8206('0xd'));var jsforce=require(_0x8206('0xe'));var deskjs=require(_0x8206('0xf'));var toCsv=require(_0x8206('0x8'));var querystring=require(_0x8206('0x10'));var Papa=require('papaparse');var Redis=require(_0x8206('0x11'));var authService=require(_0x8206('0x12'));var qs=require(_0x8206('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8206('0x14'));var logger=require('../../config/logger')(_0x8206('0x15'));var utils=require(_0x8206('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x8206('0x17'))['db'];function respondWithStatusCode(_0x319491,_0x4b5df7){_0x4b5df7=_0x4b5df7||0xcc;return function(_0x1ab0ea){if(_0x1ab0ea){return _0x319491[_0x8206('0x18')](_0x4b5df7);}return _0x319491['status'](_0x4b5df7)['end']();};}function respondWithResult(_0x5c879e,_0x4b610f){_0x4b610f=_0x4b610f||0xc8;return function(_0x3aacce){if(_0x3aacce){return _0x5c879e[_0x8206('0x19')](_0x4b610f)['json'](_0x3aacce);}};}function respondWithFilteredResult(_0x41e775,_0x44729c){return function(_0x114d75){if(_0x114d75){var _0x3baac9=typeof _0x44729c['offset']===_0x8206('0x1a')&&typeof _0x44729c[_0x8206('0x1b')]===_0x8206('0x1a');var _0x475a8d=_0x114d75['count'];var _0x4aa872=_0x3baac9?0x0:_0x44729c[_0x8206('0x1c')];var _0x28253c=_0x3baac9?_0x114d75[_0x8206('0x1d')]:_0x44729c['offset']+_0x44729c[_0x8206('0x1b')];var _0xcee9ac;if(_0x28253c>=_0x475a8d){_0x28253c=_0x475a8d;_0xcee9ac=0xc8;}else{_0xcee9ac=0xce;}_0x41e775[_0x8206('0x19')](_0xcee9ac);return _0x41e775[_0x8206('0x1e')](_0x8206('0x1f'),_0x4aa872+'-'+_0x28253c+'/'+_0x475a8d)[_0x8206('0x20')](_0x114d75);}return null;};}function patchUpdates(_0x3bfee9){return function(_0x672338){try{jsonpatch[_0x8206('0x21')](_0x672338,_0x3bfee9,!![]);}catch(_0x1d1eff){return BPromise['reject'](_0x1d1eff);}return _0x672338['save']();};}function saveUpdates(_0x1638fa,_0x57e837){return function(_0x27b7f3){if(_0x27b7f3){return _0x27b7f3[_0x8206('0x22')](_0x1638fa)[_0x8206('0x23')](function(_0x2025c2){return _0x2025c2;});}return null;};}function removeEntity(_0x15fea5,_0x38e8ef){return function(_0x3b0ca7){if(_0x3b0ca7){return _0x3b0ca7[_0x8206('0x24')]()[_0x8206('0x23')](function(){_0x15fea5[_0x8206('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39c7a7,_0x3f951f){return function(_0x2ecfc7){if(!_0x2ecfc7){_0x39c7a7['sendStatus'](0x194);}return _0x2ecfc7;};}function handleError(_0x2034da,_0x5a626f){_0x5a626f=_0x5a626f||0x1f4;return function(_0x13a190){logger[_0x8206('0x25')](_0x13a190[_0x8206('0x26')]);if(_0x13a190[_0x8206('0x27')]){delete _0x13a190[_0x8206('0x27')];}_0x2034da[_0x8206('0x19')](_0x5a626f)[_0x8206('0x28')](_0x13a190);};}exports[_0x8206('0x29')]=function(_0xb6e23c,_0x510513){var _0x50fd4b={},_0x198972={},_0x5b3932={'count':0x0,'rows':[]};var _0x550dc3=_[_0x8206('0x2a')](db['MailServerOut'][_0x8206('0x2b')],function(_0x2dd1ec){return{'name':_0x2dd1ec[_0x8206('0x2c')],'type':_0x2dd1ec[_0x8206('0x2d')][_0x8206('0x2e')]};});_0x198972[_0x8206('0x2f')]=_['map'](_0x550dc3,_0x8206('0x27'));_0x198972['query']=_[_0x8206('0x30')](_0xb6e23c['query']);_0x198972['filters']=_[_0x8206('0x31')](_0x198972[_0x8206('0x2f')],_0x198972[_0x8206('0x32')]);_0x50fd4b['attributes']=_[_0x8206('0x31')](_0x198972[_0x8206('0x2f')],qs[_0x8206('0x33')](_0xb6e23c[_0x8206('0x32')][_0x8206('0x33')]));_0x50fd4b['attributes']=_0x50fd4b[_0x8206('0x34')][_0x8206('0x35')]?_0x50fd4b[_0x8206('0x34')]:_0x198972['model'];if(!_0xb6e23c[_0x8206('0x32')]['hasOwnProperty'](_0x8206('0x36'))){_0x50fd4b['limit']=qs[_0x8206('0x1b')](_0xb6e23c[_0x8206('0x32')][_0x8206('0x1b')]);_0x50fd4b[_0x8206('0x1c')]=qs[_0x8206('0x1c')](_0xb6e23c['query']['offset']);}_0x50fd4b['order']=qs['sort'](_0xb6e23c[_0x8206('0x32')]['sort']);_0x50fd4b[_0x8206('0x37')]=qs[_0x8206('0x38')](_[_0x8206('0x39')](_0xb6e23c[_0x8206('0x32')],_0x198972['filters']),_0x550dc3);if(_0xb6e23c[_0x8206('0x32')]['filter']){_0x50fd4b[_0x8206('0x37')]=_[_0x8206('0x3a')](_0x50fd4b['where'],{'$or':_[_0x8206('0x2a')](_0x550dc3,function(_0x1b18c1){if(_0x1b18c1[_0x8206('0x2d')]!==_0x8206('0x3b')){var _0x51a671={};_0x51a671[_0x1b18c1[_0x8206('0x27')]]={'$like':'%'+_0xb6e23c[_0x8206('0x32')][_0x8206('0x3c')]+'%'};return _0x51a671;}})});}_0x50fd4b=_[_0x8206('0x3a')]({},_0x50fd4b,_0xb6e23c['options']);var _0x3129e0={'where':_0x50fd4b[_0x8206('0x37')]};return db[_0x8206('0x3d')][_0x8206('0x1d')](_0x3129e0)['then'](function(_0x435dec){_0x5b3932[_0x8206('0x1d')]=_0x435dec;if(_0xb6e23c[_0x8206('0x32')][_0x8206('0x3e')]){_0x50fd4b[_0x8206('0x3f')]=[{'all':!![]}];}return db[_0x8206('0x3d')][_0x8206('0x40')](_0x50fd4b);})[_0x8206('0x23')](function(_0xef3bc){_0x5b3932['rows']=_0xef3bc;return _0x5b3932;})[_0x8206('0x23')](respondWithFilteredResult(_0x510513,_0x50fd4b))[_0x8206('0x41')](handleError(_0x510513,null));};exports[_0x8206('0x42')]=function(_0x3f6cd5,_0x33afe8){var _0x13db34={'raw':!![],'where':{'id':_0x3f6cd5[_0x8206('0x43')]['id']}},_0x747dbf={};_0x747dbf['model']=_[_0x8206('0x30')](db[_0x8206('0x3d')][_0x8206('0x2b')]);_0x747dbf['query']=_[_0x8206('0x30')](_0x3f6cd5['query']);_0x747dbf[_0x8206('0x38')]=_['intersection'](_0x747dbf[_0x8206('0x2f')],_0x747dbf[_0x8206('0x32')]);_0x13db34[_0x8206('0x34')]=_[_0x8206('0x31')](_0x747dbf[_0x8206('0x2f')],qs['fields'](_0x3f6cd5['query']['fields']));_0x13db34['attributes']=_0x13db34[_0x8206('0x34')]['length']?_0x13db34['attributes']:_0x747dbf[_0x8206('0x2f')];if(_0x3f6cd5[_0x8206('0x32')][_0x8206('0x3e')]){_0x13db34[_0x8206('0x3f')]=[{'all':!![]}];}_0x13db34=_['merge']({},_0x13db34,_0x3f6cd5['options']);return db['MailServerOut'][_0x8206('0x44')](_0x13db34)[_0x8206('0x23')](handleEntityNotFound(_0x33afe8,null))[_0x8206('0x23')](respondWithResult(_0x33afe8,null))['catch'](handleError(_0x33afe8,null));};exports['create']=function(_0x1056ef,_0x27114e){return db['MailServerOut'][_0x8206('0x45')](_0x1056ef[_0x8206('0x46')],{})[_0x8206('0x23')](respondWithResult(_0x27114e,0xc9))[_0x8206('0x41')](handleError(_0x27114e,null));};exports[_0x8206('0x22')]=function(_0xefc049,_0x2e07a3){if(_0xefc049[_0x8206('0x46')]['id']){delete _0xefc049[_0x8206('0x46')]['id'];}return db[_0x8206('0x3d')][_0x8206('0x44')]({'where':{'id':_0xefc049['params']['id']}})['then'](handleEntityNotFound(_0x2e07a3,null))[_0x8206('0x23')](saveUpdates(_0xefc049[_0x8206('0x46')],null))[_0x8206('0x23')](respondWithResult(_0x2e07a3,null))['catch'](handleError(_0x2e07a3,null));};exports[_0x8206('0x24')]=function(_0x1da2dc,_0x41e687){return db[_0x8206('0x3d')]['find']({'where':{'id':_0x1da2dc[_0x8206('0x43')]['id']}})[_0x8206('0x23')](handleEntityNotFound(_0x41e687,null))[_0x8206('0x23')](removeEntity(_0x41e687,null))[_0x8206('0x41')](handleError(_0x41e687,null));};
\ No newline at end of file
+var _0xa18f=['options','include','findAll','rows','show','params','rawAttributes','length','includeAll','find','catch','body','eml-format','rimraf','zip-dir','fast-json-patch','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','undefined','count','offset','limit','set','Content-Range','json','reject','save','update','then','destroy','error','stack','name','index','MailServerOut','type','model','map','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','pick','filter','where','merge','VIRTUAL'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0xa18f,0x16f));var _0xfa18=function(_0x348c2a,_0x3fd0b3){_0x348c2a=_0x348c2a-0x0;var _0x5166ac=_0xa18f[_0x348c2a];return _0x5166ac;};'use strict';var emlformat=require(_0xfa18('0x0'));var rimraf=require(_0xfa18('0x1'));var zipdir=require(_0xfa18('0x2'));var jsonpatch=require(_0xfa18('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xfa18('0x4'));var path=require(_0xfa18('0x5'));var sox=require(_0xfa18('0x6'));var csv=require(_0xfa18('0x7'));var ejs=require(_0xfa18('0x8'));var fs=require('fs');var fs_extra=require(_0xfa18('0x9'));var _=require(_0xfa18('0xa'));var squel=require(_0xfa18('0xb'));var crypto=require('crypto');var jsforce=require(_0xfa18('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xfa18('0x7'));var querystring=require(_0xfa18('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xfa18('0xe'));var qs=require(_0xfa18('0xf'));var as=require(_0xfa18('0x10'));var hardwareService=require(_0xfa18('0x11'));var logger=require(_0xfa18('0x12'))(_0xfa18('0x13'));var utils=require('../../config/utils');var config=require(_0xfa18('0x14'));var licenseUtil=require(_0xfa18('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x42c7bd,_0x4ea618){_0x4ea618=_0x4ea618||0xcc;return function(_0x480d90){if(_0x480d90){return _0x42c7bd[_0xfa18('0x16')](_0x4ea618);}return _0x42c7bd[_0xfa18('0x17')](_0x4ea618)[_0xfa18('0x18')]();};}function respondWithResult(_0x35fa84,_0x15521a){_0x15521a=_0x15521a||0xc8;return function(_0x2a8ea3){if(_0x2a8ea3){return _0x35fa84['status'](_0x15521a)['json'](_0x2a8ea3);}};}function respondWithFilteredResult(_0x534897,_0x347c81){return function(_0x3f5c03){if(_0x3f5c03){var _0x13d9f8=typeof _0x347c81['offset']===_0xfa18('0x19')&&typeof _0x347c81['limit']===_0xfa18('0x19');var _0x188d87=_0x3f5c03[_0xfa18('0x1a')];var _0x2c7f74=_0x13d9f8?0x0:_0x347c81[_0xfa18('0x1b')];var _0x54ef62=_0x13d9f8?_0x3f5c03[_0xfa18('0x1a')]:_0x347c81[_0xfa18('0x1b')]+_0x347c81[_0xfa18('0x1c')];var _0x4665a8;if(_0x54ef62>=_0x188d87){_0x54ef62=_0x188d87;_0x4665a8=0xc8;}else{_0x4665a8=0xce;}_0x534897[_0xfa18('0x17')](_0x4665a8);return _0x534897[_0xfa18('0x1d')](_0xfa18('0x1e'),_0x2c7f74+'-'+_0x54ef62+'/'+_0x188d87)[_0xfa18('0x1f')](_0x3f5c03);}return null;};}function patchUpdates(_0x511a5c){return function(_0x50e412){try{jsonpatch['apply'](_0x50e412,_0x511a5c,!![]);}catch(_0x1c1b91){return BPromise[_0xfa18('0x20')](_0x1c1b91);}return _0x50e412[_0xfa18('0x21')]();};}function saveUpdates(_0x445130,_0x5c4b78){return function(_0x4b931f){if(_0x4b931f){return _0x4b931f[_0xfa18('0x22')](_0x445130)[_0xfa18('0x23')](function(_0x318d8b){return _0x318d8b;});}return null;};}function removeEntity(_0x460336,_0x4ca214){return function(_0x2a00c5){if(_0x2a00c5){return _0x2a00c5[_0xfa18('0x24')]()[_0xfa18('0x23')](function(){_0x460336[_0xfa18('0x17')](0xcc)[_0xfa18('0x18')]();});}};}function handleEntityNotFound(_0x274882,_0x3ca302){return function(_0xf184c2){if(!_0xf184c2){_0x274882['sendStatus'](0x194);}return _0xf184c2;};}function handleError(_0x59fab4,_0x501c10){_0x501c10=_0x501c10||0x1f4;return function(_0x9b5d30){logger[_0xfa18('0x25')](_0x9b5d30[_0xfa18('0x26')]);if(_0x9b5d30[_0xfa18('0x27')]){delete _0x9b5d30['name'];}_0x59fab4[_0xfa18('0x17')](_0x501c10)['send'](_0x9b5d30);};}exports[_0xfa18('0x28')]=function(_0x2a83c1,_0x46a9c9){var _0x1a0961={},_0x3ebc47={},_0x4a426d={'count':0x0,'rows':[]};var _0x3cf742=_['map'](db[_0xfa18('0x29')]['rawAttributes'],function(_0x163837){return{'name':_0x163837['fieldName'],'type':_0x163837[_0xfa18('0x2a')]['key']};});_0x3ebc47[_0xfa18('0x2b')]=_[_0xfa18('0x2c')](_0x3cf742,'name');_0x3ebc47[_0xfa18('0x2d')]=_[_0xfa18('0x2e')](_0x2a83c1['query']);_0x3ebc47[_0xfa18('0x2f')]=_[_0xfa18('0x30')](_0x3ebc47['model'],_0x3ebc47['query']);_0x1a0961[_0xfa18('0x31')]=_['intersection'](_0x3ebc47[_0xfa18('0x2b')],qs['fields'](_0x2a83c1[_0xfa18('0x2d')][_0xfa18('0x32')]));_0x1a0961[_0xfa18('0x31')]=_0x1a0961[_0xfa18('0x31')]['length']?_0x1a0961[_0xfa18('0x31')]:_0x3ebc47[_0xfa18('0x2b')];if(!_0x2a83c1['query']['hasOwnProperty'](_0xfa18('0x33'))){_0x1a0961['limit']=qs[_0xfa18('0x1c')](_0x2a83c1[_0xfa18('0x2d')]['limit']);_0x1a0961[_0xfa18('0x1b')]=qs['offset'](_0x2a83c1[_0xfa18('0x2d')][_0xfa18('0x1b')]);}_0x1a0961[_0xfa18('0x34')]=qs[_0xfa18('0x35')](_0x2a83c1[_0xfa18('0x2d')]['sort']);_0x1a0961['where']=qs[_0xfa18('0x2f')](_[_0xfa18('0x36')](_0x2a83c1[_0xfa18('0x2d')],_0x3ebc47['filters']),_0x3cf742);if(_0x2a83c1['query'][_0xfa18('0x37')]){_0x1a0961[_0xfa18('0x38')]=_[_0xfa18('0x39')](_0x1a0961[_0xfa18('0x38')],{'$or':_[_0xfa18('0x2c')](_0x3cf742,function(_0x57081c){if(_0x57081c[_0xfa18('0x2a')]!==_0xfa18('0x3a')){var _0x5428b4={};_0x5428b4[_0x57081c[_0xfa18('0x27')]]={'$like':'%'+_0x2a83c1[_0xfa18('0x2d')][_0xfa18('0x37')]+'%'};return _0x5428b4;}})});}_0x1a0961=_[_0xfa18('0x39')]({},_0x1a0961,_0x2a83c1[_0xfa18('0x3b')]);var _0xbc0389={'where':_0x1a0961[_0xfa18('0x38')]};return db['MailServerOut']['count'](_0xbc0389)['then'](function(_0x1eea78){_0x4a426d[_0xfa18('0x1a')]=_0x1eea78;if(_0x2a83c1['query']['includeAll']){_0x1a0961[_0xfa18('0x3c')]=[{'all':!![]}];}return db[_0xfa18('0x29')][_0xfa18('0x3d')](_0x1a0961);})[_0xfa18('0x23')](function(_0x2ceb90){_0x4a426d[_0xfa18('0x3e')]=_0x2ceb90;return _0x4a426d;})[_0xfa18('0x23')](respondWithFilteredResult(_0x46a9c9,_0x1a0961))['catch'](handleError(_0x46a9c9,null));};exports[_0xfa18('0x3f')]=function(_0x162b98,_0x759db1){var _0x563060={'raw':!![],'where':{'id':_0x162b98[_0xfa18('0x40')]['id']}},_0xad57ef={};_0xad57ef['model']=_[_0xfa18('0x2e')](db[_0xfa18('0x29')][_0xfa18('0x41')]);_0xad57ef['query']=_[_0xfa18('0x2e')](_0x162b98['query']);_0xad57ef['filters']=_[_0xfa18('0x30')](_0xad57ef[_0xfa18('0x2b')],_0xad57ef['query']);_0x563060['attributes']=_[_0xfa18('0x30')](_0xad57ef[_0xfa18('0x2b')],qs[_0xfa18('0x32')](_0x162b98[_0xfa18('0x2d')]['fields']));_0x563060[_0xfa18('0x31')]=_0x563060[_0xfa18('0x31')][_0xfa18('0x42')]?_0x563060[_0xfa18('0x31')]:_0xad57ef[_0xfa18('0x2b')];if(_0x162b98[_0xfa18('0x2d')][_0xfa18('0x43')]){_0x563060[_0xfa18('0x3c')]=[{'all':!![]}];}_0x563060=_[_0xfa18('0x39')]({},_0x563060,_0x162b98['options']);return db[_0xfa18('0x29')][_0xfa18('0x44')](_0x563060)[_0xfa18('0x23')](handleEntityNotFound(_0x759db1,null))[_0xfa18('0x23')](respondWithResult(_0x759db1,null))[_0xfa18('0x45')](handleError(_0x759db1,null));};exports['create']=function(_0x189eb9,_0x209b77){return db[_0xfa18('0x29')]['create'](_0x189eb9[_0xfa18('0x46')],{})[_0xfa18('0x23')](respondWithResult(_0x209b77,0xc9))[_0xfa18('0x45')](handleError(_0x209b77,null));};exports['update']=function(_0x4f250f,_0x31998c){if(_0x4f250f['body']['id']){delete _0x4f250f[_0xfa18('0x46')]['id'];}return db[_0xfa18('0x29')][_0xfa18('0x44')]({'where':{'id':_0x4f250f['params']['id']}})[_0xfa18('0x23')](handleEntityNotFound(_0x31998c,null))[_0xfa18('0x23')](saveUpdates(_0x4f250f[_0xfa18('0x46')],null))[_0xfa18('0x23')](respondWithResult(_0x31998c,null))['catch'](handleError(_0x31998c,null));};exports[_0xfa18('0x24')]=function(_0x2a07fe,_0x2d1915){return db[_0xfa18('0x29')]['find']({'where':{'id':_0x2a07fe['params']['id']}})['then'](handleEntityNotFound(_0x2d1915,null))[_0xfa18('0x23')](removeEntity(_0x2d1915,null))[_0xfa18('0x45')](handleError(_0x2d1915,null));};
\ No newline at end of file
index 297bf5e..f5e644a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1dc=['exports','define','MailServerOut','lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment'];(function(_0x3a48c5,_0x2b7ffd){var _0x56cd79=function(_0x502930){while(--_0x502930){_0x3a48c5['push'](_0x3a48c5['shift']());}};_0x56cd79(++_0x2b7ffd);}(_0xa1dc,0x1d1));var _0xca1d=function(_0x224f17,_0x5097ed){_0x224f17=_0x224f17-0x0;var _0x20d80f=_0xa1dc[_0x224f17];return _0x20d80f;};'use strict';var _=require(_0xca1d('0x0'));var util=require(_0xca1d('0x1'));var logger=require(_0xca1d('0x2'))(_0xca1d('0x3'));var moment=require(_0xca1d('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xca1d('0x5'));var rimraf=require(_0xca1d('0x6'));var config=require(_0xca1d('0x7'));var attributes=require('./mailServerOut.attributes');module[_0xca1d('0x8')]=function(_0x39114a,_0x8e4031){return _0x39114a[_0xca1d('0x9')](_0xca1d('0xa'),attributes,{'tableName':'mail_servers_out','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7e6a=['../../config/environment','./mailServerOut.attributes','define','MailServerOut','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x13ce0c,_0x3f2a0d){var _0x4388fb=function(_0x27db4b){while(--_0x27db4b){_0x13ce0c['push'](_0x13ce0c['shift']());}};_0x4388fb(++_0x3f2a0d);}(_0x7e6a,0x1e4));var _0xa7e6=function(_0x2eaa40,_0x31ca9a){_0x2eaa40=_0x2eaa40-0x0;var _0x44be04=_0x7e6a[_0x2eaa40];return _0x44be04;};'use strict';var _=require(_0xa7e6('0x0'));var util=require(_0xa7e6('0x1'));var logger=require(_0xa7e6('0x2'))(_0xa7e6('0x3'));var moment=require('moment');var BPromise=require(_0xa7e6('0x4'));var rp=require(_0xa7e6('0x5'));var fs=require('fs');var path=require(_0xa7e6('0x6'));var rimraf=require(_0xa7e6('0x7'));var config=require(_0xa7e6('0x8'));var attributes=require(_0xa7e6('0x9'));module['exports']=function(_0x303465,_0x1203ea){return _0x303465[_0xa7e6('0xa')](_0xa7e6('0xb'),attributes,{'tableName':'mail_servers_out','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 978ee2d..37aaf5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['info','MailServerOut,\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(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7a54,0x106));var _0x47a5=function(_0x522425,_0x35526c){_0x522425=_0x522425-0x0;var _0x1f47f2=_0x7a54[_0x522425];return _0x1f47f2;};'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')]('MailServerOut,\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 _0x1261=['then','info','MailServerOut,\x20%s,\x20%s','request\x20sent','MailServerOut,\x20%s,\x20%s,\x20%s','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request'];(function(_0x2cf6fe,_0x885a1f){var _0x1096f2=function(_0x61f540){while(--_0x61f540){_0x2cf6fe['push'](_0x2cf6fe['shift']());}};_0x1096f2(++_0x885a1f);}(_0x1261,0x144));var _0x1126=function(_0x4b4ce5,_0x573d2d){_0x4b4ce5=_0x4b4ce5-0x0;var _0x6522f3=_0x1261[_0x4b4ce5];return _0x6522f3;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var moment=require(_0x1126('0x1'));var BPromise=require(_0x1126('0x2'));var rs=require(_0x1126('0x3'));var fs=require('fs');var Redis=require(_0x1126('0x4'));var db=require(_0x1126('0x5'))['db'];var utils=require(_0x1126('0x6'));var logger=require(_0x1126('0x7'))(_0x1126('0x8'));var config=require(_0x1126('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1126('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x907180,_0x4f239c,_0x17e5f0){return new BPromise(function(_0x28772d,_0x245be9){return client[_0x1126('0xb')](_0x907180,_0x17e5f0)[_0x1126('0xc')](function(_0x59cfa1){logger[_0x1126('0xd')](_0x1126('0xe'),_0x4f239c,_0x1126('0xf'));logger['debug'](_0x1126('0x10'),_0x4f239c,'request\x20sent',JSON['stringify'](_0x59cfa1));if(_0x59cfa1[_0x1126('0x11')]){if(_0x59cfa1['error'][_0x1126('0x12')]===0x1f4){logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);return _0x245be9(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1['error']['message']);return _0x28772d(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}else{logger[_0x1126('0xd')]('MailServerOut,\x20%s,\x20%s',_0x4f239c,_0x1126('0xf'));_0x28772d(_0x59cfa1['result'][_0x1126('0x13')]);}})[_0x1126('0x14')](function(_0x257b5f){logger['error'](_0x1126('0xe'),_0x4f239c,_0x257b5f);_0x245be9(_0x257b5f);});});}
\ No newline at end of file
index e6d2504..495ad70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d5e=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailSubstatus.controller','isAuthenticated','index','get','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express'];(function(_0x4e8909,_0x585934){var _0x4ad056=function(_0x3f1b83){while(--_0x3f1b83){_0x4e8909['push'](_0x4e8909['shift']());}};_0x4ad056(++_0x585934);}(_0x3d5e,0x9d));var _0xe3d5=function(_0x1cdaaf,_0x32ba6e){_0x1cdaaf=_0x1cdaaf-0x0;var _0x48f2d4=_0x3d5e[_0x1cdaaf];return _0x48f2d4;};'use strict';var multer=require(_0xe3d5('0x0'));var util=require('util');var path=require(_0xe3d5('0x1'));var timeout=require(_0xe3d5('0x2'));var express=require(_0xe3d5('0x3'));var router=express[_0xe3d5('0x4')]();var fs_extra=require(_0xe3d5('0x5'));var auth=require(_0xe3d5('0x6'));var interaction=require(_0xe3d5('0x7'));var config=require(_0xe3d5('0x8'));var controller=require(_0xe3d5('0x9'));router['get']('/',auth[_0xe3d5('0xa')](),controller[_0xe3d5('0xb')]);router[_0xe3d5('0xc')]('/describe',auth[_0xe3d5('0xa')](),controller[_0xe3d5('0xd')]);router[_0xe3d5('0xc')](_0xe3d5('0xe'),auth[_0xe3d5('0xa')](),controller[_0xe3d5('0xf')]);router[_0xe3d5('0x10')]('/',auth[_0xe3d5('0xa')](),controller[_0xe3d5('0x11')]);router[_0xe3d5('0x12')](_0xe3d5('0xe'),auth[_0xe3d5('0xa')](),controller[_0xe3d5('0x13')]);router[_0xe3d5('0x14')](_0xe3d5('0xe'),auth[_0xe3d5('0xa')](),controller[_0xe3d5('0x15')]);module[_0xe3d5('0x16')]=router;
\ No newline at end of file
+var _0xc939=['get','index','/describe','isAuthenticated','describe','show','post','put','/:id','update','exports','multer','util','path','express','Router','../../components/auth/service','../../config/environment','./mailSubstatus.controller'];(function(_0x104162,_0x13a5f4){var _0xf55023=function(_0xbe126f){while(--_0xbe126f){_0x104162['push'](_0x104162['shift']());}};_0xf55023(++_0x13a5f4);}(_0xc939,0x1ad));var _0x9c93=function(_0x23d183,_0x3d8770){_0x23d183=_0x23d183-0x0;var _0x2fd708=_0xc939[_0x23d183];return _0x2fd708;};'use strict';var multer=require(_0x9c93('0x0'));var util=require(_0x9c93('0x1'));var path=require(_0x9c93('0x2'));var timeout=require('connect-timeout');var express=require(_0x9c93('0x3'));var router=express[_0x9c93('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x9c93('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x9c93('0x6'));var controller=require(_0x9c93('0x7'));router[_0x9c93('0x8')]('/',auth['isAuthenticated'](),controller[_0x9c93('0x9')]);router['get'](_0x9c93('0xa'),auth[_0x9c93('0xb')](),controller[_0x9c93('0xc')]);router[_0x9c93('0x8')]('/:id',auth[_0x9c93('0xb')](),controller[_0x9c93('0xd')]);router[_0x9c93('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0x9c93('0xf')](_0x9c93('0x10'),auth[_0x9c93('0xb')](),controller[_0x9c93('0x11')]);router['delete'](_0x9c93('0x10'),auth[_0x9c93('0xb')](),controller['destroy']);module[_0x9c93('0x12')]=router;
\ No newline at end of file
index fa39ea4..7018518 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc03e=['sequelize','name'];(function(_0x311c35,_0x534915){var _0x5cc50c=function(_0x3ad680){while(--_0x3ad680){_0x311c35['push'](_0x311c35['shift']());}};_0x5cc50c(++_0x534915);}(_0xc03e,0x15a));var _0xec03=function(_0x216f7d,_0x496249){_0x216f7d=_0x216f7d-0x0;var _0xc49d7f=_0xc03e[_0x216f7d];return _0xc49d7f;};'use strict';var Sequelize=require(_0xec03('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0xec03('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x25fa=['name','sequelize','STRING'];(function(_0x8ea62e,_0x3da7e7){var _0x4e6121=function(_0x28191f){while(--_0x28191f){_0x8ea62e['push'](_0x8ea62e['shift']());}};_0x4e6121(++_0x3da7e7);}(_0x25fa,0x109));var _0xa25f=function(_0x11230e,_0x53114d){_0x11230e=_0x11230e-0x0;var _0x47794d=_0x25fa[_0x11230e];return _0x47794d;};'use strict';var Sequelize=require(_0xa25f('0x0'));module['exports']={'name':{'type':Sequelize[_0xa25f('0x1')],'unique':_0xa25f('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 820247f..32d183b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc40=['undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','map','MailSubstatus','fieldName','type','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','keys','rawAttributes','length','find','create','body','params','describe','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','end','json'];(function(_0x4e3cda,_0x44c3f1){var _0x42c4b0=function(_0x218db6){while(--_0x218db6){_0x4e3cda['push'](_0x4e3cda['shift']());}};_0x42c4b0(++_0x44c3f1);}(_0xfc40,0x108));var _0x0fc4=function(_0xcb26e4,_0x5baf0b){_0xcb26e4=_0xcb26e4-0x0;var _0x34fae4=_0xfc40[_0xcb26e4];return _0x34fae4;};'use strict';var emlformat=require(_0x0fc4('0x0'));var rimraf=require(_0x0fc4('0x1'));var zipdir=require(_0x0fc4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0fc4('0x3'));var moment=require('moment');var BPromise=require(_0x0fc4('0x4'));var Mustache=require(_0x0fc4('0x5'));var util=require('util');var path=require(_0x0fc4('0x6'));var sox=require('sox');var csv=require(_0x0fc4('0x7'));var ejs=require(_0x0fc4('0x8'));var fs=require('fs');var fs_extra=require(_0x0fc4('0x9'));var _=require(_0x0fc4('0xa'));var squel=require(_0x0fc4('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x0fc4('0xc'));var Papa=require(_0x0fc4('0xd'));var Redis=require('ioredis');var authService=require(_0x0fc4('0xe'));var qs=require(_0x0fc4('0xf'));var as=require(_0x0fc4('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0fc4('0x11'))('api');var utils=require(_0x0fc4('0x12'));var config=require(_0x0fc4('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x0fc4('0x14'))['db'];function respondWithStatusCode(_0x50f3d8,_0x4e036d){_0x4e036d=_0x4e036d||0xcc;return function(_0x22943d){if(_0x22943d){return _0x50f3d8['sendStatus'](_0x4e036d);}return _0x50f3d8[_0x0fc4('0x15')](_0x4e036d)[_0x0fc4('0x16')]();};}function respondWithResult(_0x4d561d,_0xea7409){_0xea7409=_0xea7409||0xc8;return function(_0x1e978d){if(_0x1e978d){return _0x4d561d['status'](_0xea7409)[_0x0fc4('0x17')](_0x1e978d);}};}function respondWithFilteredResult(_0x1ab146,_0x43701d){return function(_0x47425d){if(_0x47425d){var _0x59b386=typeof _0x43701d['offset']===_0x0fc4('0x18')&&typeof _0x43701d[_0x0fc4('0x19')]==='undefined';var _0x3260be=_0x47425d[_0x0fc4('0x1a')];var _0x4f084f=_0x59b386?0x0:_0x43701d[_0x0fc4('0x1b')];var _0x266199=_0x59b386?_0x47425d['count']:_0x43701d[_0x0fc4('0x1b')]+_0x43701d['limit'];var _0x493683;if(_0x266199>=_0x3260be){_0x266199=_0x3260be;_0x493683=0xc8;}else{_0x493683=0xce;}_0x1ab146[_0x0fc4('0x15')](_0x493683);return _0x1ab146[_0x0fc4('0x1c')](_0x0fc4('0x1d'),_0x4f084f+'-'+_0x266199+'/'+_0x3260be)['json'](_0x47425d);}return null;};}function patchUpdates(_0x14775e){return function(_0x3c1318){try{jsonpatch[_0x0fc4('0x1e')](_0x3c1318,_0x14775e,!![]);}catch(_0x6bf6ad){return BPromise[_0x0fc4('0x1f')](_0x6bf6ad);}return _0x3c1318[_0x0fc4('0x20')]();};}function saveUpdates(_0xe7b729,_0x242ca5){return function(_0x342764){if(_0x342764){return _0x342764[_0x0fc4('0x21')](_0xe7b729)[_0x0fc4('0x22')](function(_0x57f563){return _0x57f563;});}return null;};}function removeEntity(_0xa6c1a9,_0x391b3a){return function(_0x1dc603){if(_0x1dc603){return _0x1dc603[_0x0fc4('0x23')]()[_0x0fc4('0x22')](function(){_0xa6c1a9[_0x0fc4('0x15')](0xcc)[_0x0fc4('0x16')]();});}};}function handleEntityNotFound(_0x826964,_0x49d304){return function(_0x572089){if(!_0x572089){_0x826964['sendStatus'](0x194);}return _0x572089;};}function handleError(_0x194f23,_0x181c15){_0x181c15=_0x181c15||0x1f4;return function(_0x4970d8){logger['error'](_0x4970d8[_0x0fc4('0x24')]);if(_0x4970d8[_0x0fc4('0x25')]){delete _0x4970d8[_0x0fc4('0x25')];}_0x194f23[_0x0fc4('0x15')](_0x181c15)[_0x0fc4('0x26')](_0x4970d8);};}exports[_0x0fc4('0x27')]=function(_0x54fb81,_0x4e6edd){var _0xf9aba9={},_0x32dd79={},_0x2acdc7={'count':0x0,'rows':[]};var _0x53ebbe=_[_0x0fc4('0x28')](db[_0x0fc4('0x29')]['rawAttributes'],function(_0x2a7958){return{'name':_0x2a7958[_0x0fc4('0x2a')],'type':_0x2a7958[_0x0fc4('0x2b')]['key']};});_0x32dd79[_0x0fc4('0x2c')]=_[_0x0fc4('0x28')](_0x53ebbe,_0x0fc4('0x25'));_0x32dd79[_0x0fc4('0x2d')]=_['keys'](_0x54fb81[_0x0fc4('0x2d')]);_0x32dd79[_0x0fc4('0x2e')]=_[_0x0fc4('0x2f')](_0x32dd79[_0x0fc4('0x2c')],_0x32dd79[_0x0fc4('0x2d')]);_0xf9aba9[_0x0fc4('0x30')]=_['intersection'](_0x32dd79[_0x0fc4('0x2c')],qs['fields'](_0x54fb81[_0x0fc4('0x2d')][_0x0fc4('0x31')]));_0xf9aba9[_0x0fc4('0x30')]=_0xf9aba9[_0x0fc4('0x30')]['length']?_0xf9aba9[_0x0fc4('0x30')]:_0x32dd79[_0x0fc4('0x2c')];if(!_0x54fb81[_0x0fc4('0x2d')][_0x0fc4('0x32')](_0x0fc4('0x33'))){_0xf9aba9['limit']=qs['limit'](_0x54fb81['query']['limit']);_0xf9aba9[_0x0fc4('0x1b')]=qs['offset'](_0x54fb81['query'][_0x0fc4('0x1b')]);}_0xf9aba9[_0x0fc4('0x34')]=qs['sort'](_0x54fb81['query']['sort']);_0xf9aba9[_0x0fc4('0x35')]=qs[_0x0fc4('0x2e')](_[_0x0fc4('0x36')](_0x54fb81[_0x0fc4('0x2d')],_0x32dd79[_0x0fc4('0x2e')]),_0x53ebbe);if(_0x54fb81[_0x0fc4('0x2d')][_0x0fc4('0x37')]){_0xf9aba9[_0x0fc4('0x35')]=_[_0x0fc4('0x38')](_0xf9aba9['where'],{'$or':_[_0x0fc4('0x28')](_0x53ebbe,function(_0x12eeac){if(_0x12eeac[_0x0fc4('0x2b')]!=='VIRTUAL'){var _0x303e04={};_0x303e04[_0x12eeac[_0x0fc4('0x25')]]={'$like':'%'+_0x54fb81[_0x0fc4('0x2d')][_0x0fc4('0x37')]+'%'};return _0x303e04;}})});}_0xf9aba9=_[_0x0fc4('0x38')]({},_0xf9aba9,_0x54fb81[_0x0fc4('0x39')]);var _0x48712b={'where':_0xf9aba9[_0x0fc4('0x35')]};return db[_0x0fc4('0x29')]['count'](_0x48712b)['then'](function(_0x119103){_0x2acdc7[_0x0fc4('0x1a')]=_0x119103;if(_0x54fb81[_0x0fc4('0x2d')][_0x0fc4('0x3a')]){_0xf9aba9[_0x0fc4('0x3b')]=[{'all':!![]}];}return db[_0x0fc4('0x29')][_0x0fc4('0x3c')](_0xf9aba9);})[_0x0fc4('0x22')](function(_0x13bb55){_0x2acdc7[_0x0fc4('0x3d')]=_0x13bb55;return _0x2acdc7;})['then'](respondWithFilteredResult(_0x4e6edd,_0xf9aba9))[_0x0fc4('0x3e')](handleError(_0x4e6edd,null));};exports[_0x0fc4('0x3f')]=function(_0x3fbc17,_0x2a0347){var _0x2614e5={'raw':!![],'where':{'id':_0x3fbc17['params']['id']}},_0xdd3e9b={};_0xdd3e9b[_0x0fc4('0x2c')]=_[_0x0fc4('0x40')](db[_0x0fc4('0x29')][_0x0fc4('0x41')]);_0xdd3e9b[_0x0fc4('0x2d')]=_[_0x0fc4('0x40')](_0x3fbc17[_0x0fc4('0x2d')]);_0xdd3e9b['filters']=_[_0x0fc4('0x2f')](_0xdd3e9b[_0x0fc4('0x2c')],_0xdd3e9b[_0x0fc4('0x2d')]);_0x2614e5['attributes']=_['intersection'](_0xdd3e9b[_0x0fc4('0x2c')],qs[_0x0fc4('0x31')](_0x3fbc17['query'][_0x0fc4('0x31')]));_0x2614e5[_0x0fc4('0x30')]=_0x2614e5['attributes'][_0x0fc4('0x42')]?_0x2614e5['attributes']:_0xdd3e9b['model'];if(_0x3fbc17[_0x0fc4('0x2d')][_0x0fc4('0x3a')]){_0x2614e5[_0x0fc4('0x3b')]=[{'all':!![]}];}_0x2614e5=_[_0x0fc4('0x38')]({},_0x2614e5,_0x3fbc17[_0x0fc4('0x39')]);return db[_0x0fc4('0x29')][_0x0fc4('0x43')](_0x2614e5)[_0x0fc4('0x22')](handleEntityNotFound(_0x2a0347,null))[_0x0fc4('0x22')](respondWithResult(_0x2a0347,null))[_0x0fc4('0x3e')](handleError(_0x2a0347,null));};exports['create']=function(_0x4c3b01,_0x539cb0){return db[_0x0fc4('0x29')][_0x0fc4('0x44')](_0x4c3b01['body'],{})['then'](respondWithResult(_0x539cb0,0xc9))['catch'](handleError(_0x539cb0,null));};exports['update']=function(_0x2961b7,_0xe07153){if(_0x2961b7[_0x0fc4('0x45')]['id']){delete _0x2961b7[_0x0fc4('0x45')]['id'];}return db[_0x0fc4('0x29')]['find']({'where':{'id':_0x2961b7[_0x0fc4('0x46')]['id']}})['then'](handleEntityNotFound(_0xe07153,null))[_0x0fc4('0x22')](saveUpdates(_0x2961b7[_0x0fc4('0x45')],null))[_0x0fc4('0x22')](respondWithResult(_0xe07153,null))['catch'](handleError(_0xe07153,null));};exports[_0x0fc4('0x23')]=function(_0x573af3,_0x5a0908){return db[_0x0fc4('0x29')][_0x0fc4('0x43')]({'where':{'id':_0x573af3[_0x0fc4('0x46')]['id']}})[_0x0fc4('0x22')](handleEntityNotFound(_0x5a0908,null))[_0x0fc4('0x22')](removeEntity(_0x5a0908,null))[_0x0fc4('0x3e')](handleError(_0x5a0908,null));};exports[_0x0fc4('0x47')]=function(_0x4aa0aa,_0x3c23ee){return db[_0x0fc4('0x29')][_0x0fc4('0x47')]()[_0x0fc4('0x22')](respondWithResult(_0x3c23ee,null))[_0x0fc4('0x3e')](handleError(_0x3c23ee,null));};
\ No newline at end of file
+var _0x877f=['options','MailSubstatus','includeAll','include','findAll','catch','show','rawAttributes','find','create','body','update','params','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','end','sendStatus','error','stack','name','send','map','fieldName','type','keys','query','filters','intersection','fields','attributes','length','model','order','sort','where','pick','filter','merge'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x877f,0x1ca));var _0xf877=function(_0x3aec4d,_0x5e9217){_0x3aec4d=_0x3aec4d-0x0;var _0x1ca178=_0x877f[_0x3aec4d];return _0x1ca178;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf877('0x0'));var zipdir=require(_0xf877('0x1'));var jsonpatch=require(_0xf877('0x2'));var rp=require(_0xf877('0x3'));var moment=require(_0xf877('0x4'));var BPromise=require(_0xf877('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xf877('0x6'));var sox=require(_0xf877('0x7'));var csv=require(_0xf877('0x8'));var ejs=require(_0xf877('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf877('0xa'));var squel=require(_0xf877('0xb'));var crypto=require(_0xf877('0xc'));var jsforce=require(_0xf877('0xd'));var deskjs=require(_0xf877('0xe'));var toCsv=require('to-csv');var querystring=require(_0xf877('0xf'));var Papa=require('papaparse');var Redis=require(_0xf877('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xf877('0x11'));var as=require(_0xf877('0x12'));var hardwareService=require(_0xf877('0x13'));var logger=require('../../config/logger')(_0xf877('0x14'));var utils=require('../../config/utils');var config=require(_0xf877('0x15'));var licenseUtil=require(_0xf877('0x16'));var db=require(_0xf877('0x17'))['db'];function respondWithStatusCode(_0x43a40f,_0x1da449){_0x1da449=_0x1da449||0xcc;return function(_0x520262){if(_0x520262){return _0x43a40f['sendStatus'](_0x1da449);}return _0x43a40f[_0xf877('0x18')](_0x1da449)['end']();};}function respondWithResult(_0x33d72e,_0x18238f){_0x18238f=_0x18238f||0xc8;return function(_0xa21ff7){if(_0xa21ff7){return _0x33d72e['status'](_0x18238f)[_0xf877('0x19')](_0xa21ff7);}};}function respondWithFilteredResult(_0x50e12a,_0x46212d){return function(_0x18d12b){if(_0x18d12b){var _0x55f123=typeof _0x46212d[_0xf877('0x1a')]===_0xf877('0x1b')&&typeof _0x46212d[_0xf877('0x1c')]===_0xf877('0x1b');var _0x4d1788=_0x18d12b['count'];var _0x53ebdf=_0x55f123?0x0:_0x46212d[_0xf877('0x1a')];var _0x2dc3a2=_0x55f123?_0x18d12b[_0xf877('0x1d')]:_0x46212d[_0xf877('0x1a')]+_0x46212d['limit'];var _0x129295;if(_0x2dc3a2>=_0x4d1788){_0x2dc3a2=_0x4d1788;_0x129295=0xc8;}else{_0x129295=0xce;}_0x50e12a[_0xf877('0x18')](_0x129295);return _0x50e12a[_0xf877('0x1e')](_0xf877('0x1f'),_0x53ebdf+'-'+_0x2dc3a2+'/'+_0x4d1788)['json'](_0x18d12b);}return null;};}function patchUpdates(_0x5c2cff){return function(_0x5811f4){try{jsonpatch[_0xf877('0x20')](_0x5811f4,_0x5c2cff,!![]);}catch(_0x5b182a){return BPromise[_0xf877('0x21')](_0x5b182a);}return _0x5811f4[_0xf877('0x22')]();};}function saveUpdates(_0x56b8b6,_0xd4d179){return function(_0x413735){if(_0x413735){return _0x413735['update'](_0x56b8b6)[_0xf877('0x23')](function(_0x52c7fe){return _0x52c7fe;});}return null;};}function removeEntity(_0x37d66b,_0x4451f7){return function(_0x3c30c7){if(_0x3c30c7){return _0x3c30c7[_0xf877('0x24')]()[_0xf877('0x23')](function(){_0x37d66b['status'](0xcc)[_0xf877('0x25')]();});}};}function handleEntityNotFound(_0x3c9f61,_0x18570b){return function(_0x360c5c){if(!_0x360c5c){_0x3c9f61[_0xf877('0x26')](0x194);}return _0x360c5c;};}function handleError(_0x17e774,_0x1dda8e){_0x1dda8e=_0x1dda8e||0x1f4;return function(_0x398cb0){logger[_0xf877('0x27')](_0x398cb0[_0xf877('0x28')]);if(_0x398cb0[_0xf877('0x29')]){delete _0x398cb0[_0xf877('0x29')];}_0x17e774[_0xf877('0x18')](_0x1dda8e)[_0xf877('0x2a')](_0x398cb0);};}exports['index']=function(_0xdeec5a,_0x3b9d61){var _0x5d268c={},_0x1bd5c0={},_0x583ec5={'count':0x0,'rows':[]};var _0x49d371=_[_0xf877('0x2b')](db['MailSubstatus']['rawAttributes'],function(_0x19b33b){return{'name':_0x19b33b[_0xf877('0x2c')],'type':_0x19b33b[_0xf877('0x2d')]['key']};});_0x1bd5c0['model']=_['map'](_0x49d371,_0xf877('0x29'));_0x1bd5c0['query']=_[_0xf877('0x2e')](_0xdeec5a[_0xf877('0x2f')]);_0x1bd5c0[_0xf877('0x30')]=_['intersection'](_0x1bd5c0['model'],_0x1bd5c0[_0xf877('0x2f')]);_0x5d268c['attributes']=_[_0xf877('0x31')](_0x1bd5c0['model'],qs[_0xf877('0x32')](_0xdeec5a[_0xf877('0x2f')]['fields']));_0x5d268c[_0xf877('0x33')]=_0x5d268c['attributes'][_0xf877('0x34')]?_0x5d268c[_0xf877('0x33')]:_0x1bd5c0[_0xf877('0x35')];if(!_0xdeec5a[_0xf877('0x2f')]['hasOwnProperty']('nolimit')){_0x5d268c['limit']=qs[_0xf877('0x1c')](_0xdeec5a[_0xf877('0x2f')][_0xf877('0x1c')]);_0x5d268c[_0xf877('0x1a')]=qs['offset'](_0xdeec5a[_0xf877('0x2f')][_0xf877('0x1a')]);}_0x5d268c[_0xf877('0x36')]=qs[_0xf877('0x37')](_0xdeec5a[_0xf877('0x2f')]['sort']);_0x5d268c[_0xf877('0x38')]=qs[_0xf877('0x30')](_[_0xf877('0x39')](_0xdeec5a[_0xf877('0x2f')],_0x1bd5c0[_0xf877('0x30')]),_0x49d371);if(_0xdeec5a[_0xf877('0x2f')][_0xf877('0x3a')]){_0x5d268c[_0xf877('0x38')]=_[_0xf877('0x3b')](_0x5d268c[_0xf877('0x38')],{'$or':_['map'](_0x49d371,function(_0x4497ab){if(_0x4497ab['type']!=='VIRTUAL'){var _0x233134={};_0x233134[_0x4497ab[_0xf877('0x29')]]={'$like':'%'+_0xdeec5a[_0xf877('0x2f')][_0xf877('0x3a')]+'%'};return _0x233134;}})});}_0x5d268c=_[_0xf877('0x3b')]({},_0x5d268c,_0xdeec5a[_0xf877('0x3c')]);var _0x42f455={'where':_0x5d268c[_0xf877('0x38')]};return db[_0xf877('0x3d')][_0xf877('0x1d')](_0x42f455)['then'](function(_0x285cfa){_0x583ec5['count']=_0x285cfa;if(_0xdeec5a[_0xf877('0x2f')][_0xf877('0x3e')]){_0x5d268c[_0xf877('0x3f')]=[{'all':!![]}];}return db[_0xf877('0x3d')][_0xf877('0x40')](_0x5d268c);})[_0xf877('0x23')](function(_0x53529a){_0x583ec5['rows']=_0x53529a;return _0x583ec5;})[_0xf877('0x23')](respondWithFilteredResult(_0x3b9d61,_0x5d268c))[_0xf877('0x41')](handleError(_0x3b9d61,null));};exports[_0xf877('0x42')]=function(_0x56cbb1,_0x2416fe){var _0x5ea316={'raw':!![],'where':{'id':_0x56cbb1['params']['id']}},_0x5d8ba1={};_0x5d8ba1[_0xf877('0x35')]=_[_0xf877('0x2e')](db[_0xf877('0x3d')][_0xf877('0x43')]);_0x5d8ba1[_0xf877('0x2f')]=_[_0xf877('0x2e')](_0x56cbb1[_0xf877('0x2f')]);_0x5d8ba1['filters']=_['intersection'](_0x5d8ba1[_0xf877('0x35')],_0x5d8ba1[_0xf877('0x2f')]);_0x5ea316[_0xf877('0x33')]=_[_0xf877('0x31')](_0x5d8ba1['model'],qs[_0xf877('0x32')](_0x56cbb1['query'][_0xf877('0x32')]));_0x5ea316[_0xf877('0x33')]=_0x5ea316['attributes'][_0xf877('0x34')]?_0x5ea316[_0xf877('0x33')]:_0x5d8ba1[_0xf877('0x35')];if(_0x56cbb1['query'][_0xf877('0x3e')]){_0x5ea316['include']=[{'all':!![]}];}_0x5ea316=_[_0xf877('0x3b')]({},_0x5ea316,_0x56cbb1[_0xf877('0x3c')]);return db[_0xf877('0x3d')][_0xf877('0x44')](_0x5ea316)[_0xf877('0x23')](handleEntityNotFound(_0x2416fe,null))[_0xf877('0x23')](respondWithResult(_0x2416fe,null))[_0xf877('0x41')](handleError(_0x2416fe,null));};exports[_0xf877('0x45')]=function(_0x3d7f67,_0x1d8ce9){return db['MailSubstatus'][_0xf877('0x45')](_0x3d7f67[_0xf877('0x46')],{})['then'](respondWithResult(_0x1d8ce9,0xc9))[_0xf877('0x41')](handleError(_0x1d8ce9,null));};exports[_0xf877('0x47')]=function(_0x5d74e7,_0x1ceb2c){if(_0x5d74e7[_0xf877('0x46')]['id']){delete _0x5d74e7[_0xf877('0x46')]['id'];}return db[_0xf877('0x3d')]['find']({'where':{'id':_0x5d74e7[_0xf877('0x48')]['id']}})[_0xf877('0x23')](handleEntityNotFound(_0x1ceb2c,null))[_0xf877('0x23')](saveUpdates(_0x5d74e7['body'],null))[_0xf877('0x23')](respondWithResult(_0x1ceb2c,null))[_0xf877('0x41')](handleError(_0x1ceb2c,null));};exports['destroy']=function(_0x5794d4,_0x4b3ba0){return db[_0xf877('0x3d')][_0xf877('0x44')]({'where':{'id':_0x5794d4[_0xf877('0x48')]['id']}})[_0xf877('0x23')](handleEntityNotFound(_0x4b3ba0,null))[_0xf877('0x23')](removeEntity(_0x4b3ba0,null))[_0xf877('0x41')](handleError(_0x4b3ba0,null));};exports[_0xf877('0x49')]=function(_0x44af7c,_0x17cc1c){return db[_0xf877('0x3d')][_0xf877('0x49')]()[_0xf877('0x23')](respondWithResult(_0x17cc1c,null))[_0xf877('0x41')](handleError(_0x17cc1c,null));};
\ No newline at end of file
index 0fd8ecb..5e0df03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e2a=['request-promise','path','rimraf','../../config/environment','./mailSubstatus.attributes','define','MailSubstatus','mail_substatuses','lodash','util','../../config/logger','bluebird'];(function(_0x1f406d,_0x513361){var _0xe28eb1=function(_0x1dda0c){while(--_0x1dda0c){_0x1f406d['push'](_0x1f406d['shift']());}};_0xe28eb1(++_0x513361);}(_0x3e2a,0x1b8));var _0xa3e2=function(_0x752093,_0x2e2670){_0x752093=_0x752093-0x0;var _0x3a6ab5=_0x3e2a[_0x752093];return _0x3a6ab5;};'use strict';var _=require(_0xa3e2('0x0'));var util=require(_0xa3e2('0x1'));var logger=require(_0xa3e2('0x2'))('api');var moment=require('moment');var BPromise=require(_0xa3e2('0x3'));var rp=require(_0xa3e2('0x4'));var fs=require('fs');var path=require(_0xa3e2('0x5'));var rimraf=require(_0xa3e2('0x6'));var config=require(_0xa3e2('0x7'));var attributes=require(_0xa3e2('0x8'));module['exports']=function(_0x52bb67,_0x45168c){return _0x52bb67[_0xa3e2('0x9')](_0xa3e2('0xa'),attributes,{'tableName':_0xa3e2('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x121e=['./mailSubstatus.attributes','exports','define','mail_substatuses','lodash','util','moment','request-promise','path','../../config/environment'];(function(_0x20fd23,_0x5d3358){var _0x573b67=function(_0x19c567){while(--_0x19c567){_0x20fd23['push'](_0x20fd23['shift']());}};_0x573b67(++_0x5d3358);}(_0x121e,0x112));var _0xe121=function(_0x7dccae,_0x367f8c){_0x7dccae=_0x7dccae-0x0;var _0x2f3445=_0x121e[_0x7dccae];return _0x2f3445;};'use strict';var _=require(_0xe121('0x0'));var util=require(_0xe121('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xe121('0x2'));var BPromise=require('bluebird');var rp=require(_0xe121('0x3'));var fs=require('fs');var path=require(_0xe121('0x4'));var rimraf=require('rimraf');var config=require(_0xe121('0x5'));var attributes=require(_0xe121('0x6'));module[_0xe121('0x7')]=function(_0x59d0f2,_0x55114f){return _0x59d0f2[_0xe121('0x8')]('MailSubstatus',attributes,{'tableName':_0xe121('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 736fb3f..8ed0ec8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23f9=['request\x20sent','debug','stringify','error','code','message','MailSubstatus,\x20%s,\x20%s','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','request','info'];(function(_0x81a741,_0x53911d){var _0xadb73=function(_0x4f5677){while(--_0x4f5677){_0x81a741['push'](_0x81a741['shift']());}};_0xadb73(++_0x53911d);}(_0x23f9,0x1d7));var _0x923f=function(_0x515661,_0x36a15d){_0x515661=_0x515661-0x0;var _0x1bf063=_0x23f9[_0x515661];return _0x1bf063;};'use strict';var _=require(_0x923f('0x0'));var util=require(_0x923f('0x1'));var moment=require(_0x923f('0x2'));var BPromise=require(_0x923f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x923f('0x4'));var db=require(_0x923f('0x5'))['db'];var utils=require(_0x923f('0x6'));var logger=require(_0x923f('0x7'))(_0x923f('0x8'));var config=require('../../config/environment');var jayson=require(_0x923f('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x4c709,_0x14968f,_0x2d3a29){return new BPromise(function(_0x4cd4af,_0x18b809){return client[_0x923f('0xa')](_0x4c709,_0x2d3a29)['then'](function(_0x49c19c){logger[_0x923f('0xb')]('MailSubstatus,\x20%s,\x20%s',_0x14968f,_0x923f('0xc'));logger[_0x923f('0xd')]('MailSubstatus,\x20%s,\x20%s,\x20%s',_0x14968f,_0x923f('0xc'),JSON[_0x923f('0xe')](_0x49c19c));if(_0x49c19c[_0x923f('0xf')]){if(_0x49c19c[_0x923f('0xf')][_0x923f('0x10')]===0x1f4){logger[_0x923f('0xf')]('MailSubstatus,\x20%s,\x20%s',_0x14968f,_0x49c19c[_0x923f('0xf')][_0x923f('0x11')]);return _0x18b809(_0x49c19c[_0x923f('0xf')][_0x923f('0x11')]);}logger[_0x923f('0xf')](_0x923f('0x12'),_0x14968f,_0x49c19c[_0x923f('0xf')][_0x923f('0x11')]);return _0x4cd4af(_0x49c19c[_0x923f('0xf')][_0x923f('0x11')]);}else{logger[_0x923f('0xb')](_0x923f('0x12'),_0x14968f,_0x923f('0xc'));_0x4cd4af(_0x49c19c[_0x923f('0x13')][_0x923f('0x11')]);}})[_0x923f('0x14')](function(_0x1b3759){logger['error'](_0x923f('0x12'),_0x14968f,_0x1b3759);_0x18b809(_0x1b3759);});});}
\ No newline at end of file
+var _0x62cd=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','debug','request\x20sent','error','code','MailSubstatus,\x20%s,\x20%s','message','result','catch','util','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x62cd,0x95));var _0xd62c=function(_0x50fc5b,_0x280d63){_0x50fc5b=_0x50fc5b-0x0;var _0x4642e4=_0x62cd[_0x50fc5b];return _0x4642e4;};'use strict';var _=require('lodash');var util=require(_0xd62c('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xd62c('0x1'));var fs=require('fs');var Redis=require(_0xd62c('0x2'));var db=require(_0xd62c('0x3'))['db'];var utils=require(_0xd62c('0x4'));var logger=require(_0xd62c('0x5'))(_0xd62c('0x6'));var config=require(_0xd62c('0x7'));var jayson=require(_0xd62c('0x8'));var client=jayson[_0xd62c('0x9')][_0xd62c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x165418,_0x33983b,_0x4a98a8){return new BPromise(function(_0x3a60d0,_0x4566cf){return client[_0xd62c('0xb')](_0x165418,_0x4a98a8)[_0xd62c('0xc')](function(_0x131355){logger[_0xd62c('0xd')]('MailSubstatus,\x20%s,\x20%s',_0x33983b,'request\x20sent');logger[_0xd62c('0xe')]('MailSubstatus,\x20%s,\x20%s,\x20%s',_0x33983b,_0xd62c('0xf'),JSON['stringify'](_0x131355));if(_0x131355[_0xd62c('0x10')]){if(_0x131355[_0xd62c('0x10')][_0xd62c('0x11')]===0x1f4){logger[_0xd62c('0x10')](_0xd62c('0x12'),_0x33983b,_0x131355['error'][_0xd62c('0x13')]);return _0x4566cf(_0x131355[_0xd62c('0x10')]['message']);}logger['error'](_0xd62c('0x12'),_0x33983b,_0x131355[_0xd62c('0x10')][_0xd62c('0x13')]);return _0x3a60d0(_0x131355[_0xd62c('0x10')][_0xd62c('0x13')]);}else{logger[_0xd62c('0xd')](_0xd62c('0x12'),_0x33983b,_0xd62c('0xf'));_0x3a60d0(_0x131355[_0xd62c('0x14')][_0xd62c('0x13')]);}})[_0xd62c('0x15')](function(_0xe4469a){logger[_0xd62c('0x10')](_0xd62c('0x12'),_0x33983b,_0xe4469a);_0x4566cf(_0xe4469a);});});}
\ No newline at end of file
index ce1febb..221b450 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbeba=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','create','update','delete','destroy'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xbeba,0x9a));var _0xabeb=function(_0x479eee,_0x2f91fa){_0x479eee=_0x479eee-0x0;var _0x3f3d66=_0xbeba[_0x479eee];return _0x3f3d66;};'use strict';var multer=require(_0xabeb('0x0'));var util=require(_0xabeb('0x1'));var path=require(_0xabeb('0x2'));var timeout=require(_0xabeb('0x3'));var express=require('express');var router=express[_0xabeb('0x4')]();var fs_extra=require(_0xabeb('0x5'));var auth=require(_0xabeb('0x6'));var interaction=require(_0xabeb('0x7'));var config=require(_0xabeb('0x8'));var controller=require(_0xabeb('0x9'));router['get']('/',auth[_0xabeb('0xa')](),controller[_0xabeb('0xb')]);router[_0xabeb('0xc')](_0xabeb('0xd'),auth[_0xabeb('0xa')](),controller[_0xabeb('0xe')]);router['get'](_0xabeb('0xf'),auth['isAuthenticated'](),controller[_0xabeb('0x10')]);router[_0xabeb('0x11')]('/',auth[_0xabeb('0xa')](),controller[_0xabeb('0x12')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xabeb('0x13')]);router[_0xabeb('0x14')](_0xabeb('0xf'),auth['isAuthenticated'](),controller[_0xabeb('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0xd0fa=['post','create','put','update','exports','multer','util','path','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailTransferReport.controller','get','isAuthenticated','index','/describe','/:id','show'];(function(_0x43d5d1,_0x2c7e7d){var _0x278bf2=function(_0x3ac69b){while(--_0x3ac69b){_0x43d5d1['push'](_0x43d5d1['shift']());}};_0x278bf2(++_0x2c7e7d);}(_0xd0fa,0x1a7));var _0xad0f=function(_0x50a0c2,_0x4befab){_0x50a0c2=_0x50a0c2-0x0;var _0x5ebadd=_0xd0fa[_0x50a0c2];return _0x5ebadd;};'use strict';var multer=require(_0xad0f('0x0'));var util=require(_0xad0f('0x1'));var path=require(_0xad0f('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xad0f('0x3')]();var fs_extra=require(_0xad0f('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xad0f('0x5'));var config=require(_0xad0f('0x6'));var controller=require(_0xad0f('0x7'));router[_0xad0f('0x8')]('/',auth[_0xad0f('0x9')](),controller[_0xad0f('0xa')]);router['get'](_0xad0f('0xb'),auth[_0xad0f('0x9')](),controller['describe']);router[_0xad0f('0x8')](_0xad0f('0xc'),auth[_0xad0f('0x9')](),controller[_0xad0f('0xd')]);router[_0xad0f('0xe')]('/',auth[_0xad0f('0x9')](),controller[_0xad0f('0xf')]);router[_0xad0f('0x10')]('/:id',auth['isAuthenticated'](),controller[_0xad0f('0x11')]);router['delete'](_0xad0f('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0xad0f('0x12')]=router;
\ No newline at end of file
index 9ee3cb5..a8252cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['account','agent','queue','NOW','sequelize','exports','STRING','ENUM'];(function(_0x3d69cb,_0x4bab98){var _0x1155c0=function(_0x1ec8f0){while(--_0x1ec8f0){_0x3d69cb['push'](_0x3d69cb['shift']());}};_0x1155c0(++_0x4bab98);}(_0xedd9,0xfc));var _0x9edd=function(_0x482c5c,_0x5d8108){_0x482c5c=_0x482c5c-0x0;var _0x10826a=_0xedd9[_0x482c5c];return _0x10826a;};'use strict';var moment=require('moment');var Sequelize=require(_0x9edd('0x0'));module[_0x9edd('0x1')]={'uniqueid':{'type':Sequelize[_0x9edd('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x9edd('0x3')](_0x9edd('0x4'),_0x9edd('0x5'),_0x9edd('0x6')),'allowNull':![],'defaultValue':_0x9edd('0x6')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x9edd('0x7')]}};
\ No newline at end of file
+var _0x9bde=['NOW','sequelize','STRING','account','agent','queue','DATE'];(function(_0x4c1ec2,_0x4f42b7){var _0x3f6f1c=function(_0xc82652){while(--_0xc82652){_0x4c1ec2['push'](_0x4c1ec2['shift']());}};_0x3f6f1c(++_0x4f42b7);}(_0x9bde,0xe1));var _0xe9bd=function(_0x307deb,_0x24785a){_0x307deb=_0x307deb-0x0;var _0x369b40=_0x9bde[_0x307deb];return _0x369b40;};'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 e3ca14c..34a5f69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b15=['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/environment','sendStatus','status','json','undefined','limit','count','offset','set','reject','save','update','then','end','error','stack','name','send','index','map','MailTransferReport','rawAttributes','fieldName','key','keys','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','show','include','find','catch','create','body','destroy','describe','eml-format','rimraf','request-promise','bluebird','mustache','util','path'];(function(_0x4ef240,_0x351747){var _0x18127d=function(_0x1cfa79){while(--_0x1cfa79){_0x4ef240['push'](_0x4ef240['shift']());}};_0x18127d(++_0x351747);}(_0x7b15,0x1bb));var _0x57b1=function(_0x3a598b,_0x11e23e){_0x3a598b=_0x3a598b-0x0;var _0x5fb606=_0x7b15[_0x3a598b];return _0x5fb606;};'use strict';var emlformat=require(_0x57b1('0x0'));var rimraf=require(_0x57b1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x57b1('0x2'));var moment=require('moment');var BPromise=require(_0x57b1('0x3'));var Mustache=require(_0x57b1('0x4'));var util=require(_0x57b1('0x5'));var path=require(_0x57b1('0x6'));var sox=require(_0x57b1('0x7'));var csv=require(_0x57b1('0x8'));var ejs=require(_0x57b1('0x9'));var fs=require('fs');var fs_extra=require(_0x57b1('0xa'));var _=require(_0x57b1('0xb'));var squel=require(_0x57b1('0xc'));var crypto=require(_0x57b1('0xd'));var jsforce=require(_0x57b1('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x57b1('0xf'));var Papa=require(_0x57b1('0x10'));var Redis=require('ioredis');var authService=require(_0x57b1('0x11'));var qs=require(_0x57b1('0x12'));var as=require(_0x57b1('0x13'));var hardwareService=require(_0x57b1('0x14'));var logger=require(_0x57b1('0x15'))(_0x57b1('0x16'));var utils=require('../../config/utils');var config=require(_0x57b1('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x226a04,_0x344b1c){_0x344b1c=_0x344b1c||0xcc;return function(_0x813bf8){if(_0x813bf8){return _0x226a04[_0x57b1('0x18')](_0x344b1c);}return _0x226a04['status'](_0x344b1c)['end']();};}function respondWithResult(_0xbb4471,_0x3f0759){_0x3f0759=_0x3f0759||0xc8;return function(_0x1cdd13){if(_0x1cdd13){return _0xbb4471[_0x57b1('0x19')](_0x3f0759)[_0x57b1('0x1a')](_0x1cdd13);}};}function respondWithFilteredResult(_0x12da0e,_0x2215a0){return function(_0x5a86e9){if(_0x5a86e9){var _0x40aeb8=typeof _0x2215a0['offset']===_0x57b1('0x1b')&&typeof _0x2215a0[_0x57b1('0x1c')]===_0x57b1('0x1b');var _0x53ad1b=_0x5a86e9[_0x57b1('0x1d')];var _0x43f4f4=_0x40aeb8?0x0:_0x2215a0[_0x57b1('0x1e')];var _0x42786f=_0x40aeb8?_0x5a86e9[_0x57b1('0x1d')]:_0x2215a0[_0x57b1('0x1e')]+_0x2215a0['limit'];var _0x3d1166;if(_0x42786f>=_0x53ad1b){_0x42786f=_0x53ad1b;_0x3d1166=0xc8;}else{_0x3d1166=0xce;}_0x12da0e[_0x57b1('0x19')](_0x3d1166);return _0x12da0e[_0x57b1('0x1f')]('Content-Range',_0x43f4f4+'-'+_0x42786f+'/'+_0x53ad1b)['json'](_0x5a86e9);}return null;};}function patchUpdates(_0x33978a){return function(_0x269d74){try{jsonpatch['apply'](_0x269d74,_0x33978a,!![]);}catch(_0x5d43f9){return BPromise[_0x57b1('0x20')](_0x5d43f9);}return _0x269d74[_0x57b1('0x21')]();};}function saveUpdates(_0x83a05d,_0x6f96c7){return function(_0x1f7f82){if(_0x1f7f82){return _0x1f7f82[_0x57b1('0x22')](_0x83a05d)['then'](function(_0x349a6){return _0x349a6;});}return null;};}function removeEntity(_0x356a00,_0x1b8c0c){return function(_0x3ef269){if(_0x3ef269){return _0x3ef269['destroy']()[_0x57b1('0x23')](function(){_0x356a00['status'](0xcc)[_0x57b1('0x24')]();});}};}function handleEntityNotFound(_0x9dabfe,_0x21dc8c){return function(_0x350a9c){if(!_0x350a9c){_0x9dabfe[_0x57b1('0x18')](0x194);}return _0x350a9c;};}function handleError(_0x3066a1,_0x57b381){_0x57b381=_0x57b381||0x1f4;return function(_0xf44c4d){logger[_0x57b1('0x25')](_0xf44c4d[_0x57b1('0x26')]);if(_0xf44c4d[_0x57b1('0x27')]){delete _0xf44c4d[_0x57b1('0x27')];}_0x3066a1[_0x57b1('0x19')](_0x57b381)[_0x57b1('0x28')](_0xf44c4d);};}exports[_0x57b1('0x29')]=function(_0x5230bb,_0x2f0756){var _0x340cfc={},_0x1c0a06={},_0x32d529={'count':0x0,'rows':[]};var _0x4a7eab=_[_0x57b1('0x2a')](db[_0x57b1('0x2b')][_0x57b1('0x2c')],function(_0x3e4525){return{'name':_0x3e4525[_0x57b1('0x2d')],'type':_0x3e4525['type'][_0x57b1('0x2e')]};});_0x1c0a06['model']=_[_0x57b1('0x2a')](_0x4a7eab,_0x57b1('0x27'));_0x1c0a06['query']=_[_0x57b1('0x2f')](_0x5230bb[_0x57b1('0x30')]);_0x1c0a06[_0x57b1('0x31')]=_[_0x57b1('0x32')](_0x1c0a06[_0x57b1('0x33')],_0x1c0a06['query']);_0x340cfc['attributes']=_[_0x57b1('0x32')](_0x1c0a06[_0x57b1('0x33')],qs['fields'](_0x5230bb[_0x57b1('0x30')][_0x57b1('0x34')]));_0x340cfc[_0x57b1('0x35')]=_0x340cfc[_0x57b1('0x35')][_0x57b1('0x36')]?_0x340cfc['attributes']:_0x1c0a06[_0x57b1('0x33')];if(!_0x5230bb['query'][_0x57b1('0x37')](_0x57b1('0x38'))){_0x340cfc['limit']=qs[_0x57b1('0x1c')](_0x5230bb[_0x57b1('0x30')][_0x57b1('0x1c')]);_0x340cfc['offset']=qs[_0x57b1('0x1e')](_0x5230bb[_0x57b1('0x30')]['offset']);}_0x340cfc[_0x57b1('0x39')]=qs[_0x57b1('0x3a')](_0x5230bb['query'][_0x57b1('0x3a')]);_0x340cfc[_0x57b1('0x3b')]=qs[_0x57b1('0x31')](_[_0x57b1('0x3c')](_0x5230bb['query'],_0x1c0a06[_0x57b1('0x31')]),_0x4a7eab);if(_0x5230bb[_0x57b1('0x30')][_0x57b1('0x3d')]){_0x340cfc['where']=_[_0x57b1('0x3e')](_0x340cfc[_0x57b1('0x3b')],{'$or':_[_0x57b1('0x2a')](_0x4a7eab,function(_0x4e82ae){if(_0x4e82ae[_0x57b1('0x3f')]!==_0x57b1('0x40')){var _0x3e5db8={};_0x3e5db8[_0x4e82ae[_0x57b1('0x27')]]={'$like':'%'+_0x5230bb[_0x57b1('0x30')][_0x57b1('0x3d')]+'%'};return _0x3e5db8;}})});}_0x340cfc=_[_0x57b1('0x3e')]({},_0x340cfc,_0x5230bb[_0x57b1('0x41')]);var _0x5b5013={'where':_0x340cfc[_0x57b1('0x3b')]};return db['MailTransferReport'][_0x57b1('0x1d')](_0x5b5013)[_0x57b1('0x23')](function(_0x40228b){_0x32d529[_0x57b1('0x1d')]=_0x40228b;if(_0x5230bb[_0x57b1('0x30')][_0x57b1('0x42')]){_0x340cfc['include']=[{'all':!![]}];}return db['MailTransferReport']['findAll'](_0x340cfc);})[_0x57b1('0x23')](function(_0x15acbf){_0x32d529['rows']=_0x15acbf;return _0x32d529;})['then'](respondWithFilteredResult(_0x2f0756,_0x340cfc))['catch'](handleError(_0x2f0756,null));};exports[_0x57b1('0x43')]=function(_0xeab95b,_0x2da9ad){var _0x19db5f={'raw':!![],'where':{'id':_0xeab95b['params']['id']}},_0x2674c9={};_0x2674c9[_0x57b1('0x33')]=_['keys'](db['MailTransferReport']['rawAttributes']);_0x2674c9[_0x57b1('0x30')]=_[_0x57b1('0x2f')](_0xeab95b[_0x57b1('0x30')]);_0x2674c9['filters']=_['intersection'](_0x2674c9[_0x57b1('0x33')],_0x2674c9[_0x57b1('0x30')]);_0x19db5f[_0x57b1('0x35')]=_[_0x57b1('0x32')](_0x2674c9['model'],qs[_0x57b1('0x34')](_0xeab95b['query']['fields']));_0x19db5f[_0x57b1('0x35')]=_0x19db5f[_0x57b1('0x35')][_0x57b1('0x36')]?_0x19db5f[_0x57b1('0x35')]:_0x2674c9['model'];if(_0xeab95b[_0x57b1('0x30')]['includeAll']){_0x19db5f[_0x57b1('0x44')]=[{'all':!![]}];}_0x19db5f=_[_0x57b1('0x3e')]({},_0x19db5f,_0xeab95b[_0x57b1('0x41')]);return db[_0x57b1('0x2b')][_0x57b1('0x45')](_0x19db5f)['then'](handleEntityNotFound(_0x2da9ad,null))[_0x57b1('0x23')](respondWithResult(_0x2da9ad,null))[_0x57b1('0x46')](handleError(_0x2da9ad,null));};exports[_0x57b1('0x47')]=function(_0x417ccc,_0x103010){return db['MailTransferReport']['create'](_0x417ccc[_0x57b1('0x48')],{})[_0x57b1('0x23')](respondWithResult(_0x103010,0xc9))[_0x57b1('0x46')](handleError(_0x103010,null));};exports[_0x57b1('0x22')]=function(_0x14c0a4,_0x34652c){if(_0x14c0a4[_0x57b1('0x48')]['id']){delete _0x14c0a4[_0x57b1('0x48')]['id'];}return db[_0x57b1('0x2b')][_0x57b1('0x45')]({'where':{'id':_0x14c0a4['params']['id']}})[_0x57b1('0x23')](handleEntityNotFound(_0x34652c,null))[_0x57b1('0x23')](saveUpdates(_0x14c0a4[_0x57b1('0x48')],null))['then'](respondWithResult(_0x34652c,null))[_0x57b1('0x46')](handleError(_0x34652c,null));};exports[_0x57b1('0x49')]=function(_0x5ed171,_0x457de1){return db['MailTransferReport'][_0x57b1('0x45')]({'where':{'id':_0x5ed171['params']['id']}})[_0x57b1('0x23')](handleEntityNotFound(_0x457de1,null))[_0x57b1('0x23')](removeEntity(_0x457de1,null))[_0x57b1('0x46')](handleError(_0x457de1,null));};exports[_0x57b1('0x4a')]=function(_0x397d7f,_0x37d91c){return db[_0x57b1('0x2b')][_0x57b1('0x4a')]()[_0x57b1('0x23')](respondWithResult(_0x37d91c,null))[_0x57b1('0x46')](handleError(_0x37d91c,null));};
\ No newline at end of file
+var _0x804d=['intersection','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','catch','keys','include','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','Content-Range','reject','update','then','destroy','error','name','send','map','MailTransferReport','rawAttributes','fieldName','type','key','query','filters','model','attributes'];(function(_0xfc15d1,_0x18b83f){var _0x46bb57=function(_0x4bb71e){while(--_0x4bb71e){_0xfc15d1['push'](_0xfc15d1['shift']());}};_0x46bb57(++_0x18b83f);}(_0x804d,0xe9));var _0xd804=function(_0x48cb2b,_0x3b0835){_0x48cb2b=_0x48cb2b-0x0;var _0x3f3488=_0x804d[_0x48cb2b];return _0x3f3488;};'use strict';var emlformat=require(_0xd804('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd804('0x1'));var jsonpatch=require(_0xd804('0x2'));var rp=require(_0xd804('0x3'));var moment=require('moment');var BPromise=require(_0xd804('0x4'));var Mustache=require(_0xd804('0x5'));var util=require('util');var path=require(_0xd804('0x6'));var sox=require(_0xd804('0x7'));var csv=require(_0xd804('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd804('0x9'));var _=require(_0xd804('0xa'));var squel=require(_0xd804('0xb'));var crypto=require(_0xd804('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xd804('0xd'));var toCsv=require(_0xd804('0x8'));var querystring=require(_0xd804('0xe'));var Papa=require(_0xd804('0xf'));var Redis=require(_0xd804('0x10'));var authService=require(_0xd804('0x11'));var qs=require(_0xd804('0x12'));var as=require(_0xd804('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xd804('0x14'));var utils=require(_0xd804('0x15'));var config=require(_0xd804('0x16'));var licenseUtil=require(_0xd804('0x17'));var db=require(_0xd804('0x18'))['db'];function respondWithStatusCode(_0x14fb96,_0x435948){_0x435948=_0x435948||0xcc;return function(_0x14af7e){if(_0x14af7e){return _0x14fb96[_0xd804('0x19')](_0x435948);}return _0x14fb96[_0xd804('0x1a')](_0x435948)[_0xd804('0x1b')]();};}function respondWithResult(_0x462567,_0x455f94){_0x455f94=_0x455f94||0xc8;return function(_0x56a44a){if(_0x56a44a){return _0x462567[_0xd804('0x1a')](_0x455f94)[_0xd804('0x1c')](_0x56a44a);}};}function respondWithFilteredResult(_0x195377,_0xa1d233){return function(_0x20aad6){if(_0x20aad6){var _0xa7648e=typeof _0xa1d233['offset']===_0xd804('0x1d')&&typeof _0xa1d233['limit']===_0xd804('0x1d');var _0x268f8f=_0x20aad6[_0xd804('0x1e')];var _0x509c7f=_0xa7648e?0x0:_0xa1d233['offset'];var _0x1faf1b=_0xa7648e?_0x20aad6[_0xd804('0x1e')]:_0xa1d233[_0xd804('0x1f')]+_0xa1d233[_0xd804('0x20')];var _0x32e0ee;if(_0x1faf1b>=_0x268f8f){_0x1faf1b=_0x268f8f;_0x32e0ee=0xc8;}else{_0x32e0ee=0xce;}_0x195377['status'](_0x32e0ee);return _0x195377['set'](_0xd804('0x21'),_0x509c7f+'-'+_0x1faf1b+'/'+_0x268f8f)['json'](_0x20aad6);}return null;};}function patchUpdates(_0x48c276){return function(_0x1b5ced){try{jsonpatch['apply'](_0x1b5ced,_0x48c276,!![]);}catch(_0x498c7d){return BPromise[_0xd804('0x22')](_0x498c7d);}return _0x1b5ced['save']();};}function saveUpdates(_0x43d56a,_0x5599fa){return function(_0x5880a8){if(_0x5880a8){return _0x5880a8[_0xd804('0x23')](_0x43d56a)[_0xd804('0x24')](function(_0x4b37ac){return _0x4b37ac;});}return null;};}function removeEntity(_0x2849a9,_0x18b686){return function(_0x2cb6ae){if(_0x2cb6ae){return _0x2cb6ae[_0xd804('0x25')]()['then'](function(){_0x2849a9['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x387e3f,_0x334b04){return function(_0x4e3924){if(!_0x4e3924){_0x387e3f[_0xd804('0x19')](0x194);}return _0x4e3924;};}function handleError(_0x4181c4,_0x19faff){_0x19faff=_0x19faff||0x1f4;return function(_0x372a36){logger[_0xd804('0x26')](_0x372a36['stack']);if(_0x372a36[_0xd804('0x27')]){delete _0x372a36[_0xd804('0x27')];}_0x4181c4[_0xd804('0x1a')](_0x19faff)[_0xd804('0x28')](_0x372a36);};}exports['index']=function(_0x26997b,_0x24d8c2){var _0x1d2473={},_0x15dae={},_0x4923ca={'count':0x0,'rows':[]};var _0x169e2b=_[_0xd804('0x29')](db[_0xd804('0x2a')][_0xd804('0x2b')],function(_0x39a1e0){return{'name':_0x39a1e0[_0xd804('0x2c')],'type':_0x39a1e0[_0xd804('0x2d')][_0xd804('0x2e')]};});_0x15dae['model']=_[_0xd804('0x29')](_0x169e2b,_0xd804('0x27'));_0x15dae['query']=_['keys'](_0x26997b[_0xd804('0x2f')]);_0x15dae[_0xd804('0x30')]=_['intersection'](_0x15dae[_0xd804('0x31')],_0x15dae[_0xd804('0x2f')]);_0x1d2473[_0xd804('0x32')]=_[_0xd804('0x33')](_0x15dae[_0xd804('0x31')],qs[_0xd804('0x34')](_0x26997b[_0xd804('0x2f')][_0xd804('0x34')]));_0x1d2473['attributes']=_0x1d2473[_0xd804('0x32')][_0xd804('0x35')]?_0x1d2473[_0xd804('0x32')]:_0x15dae[_0xd804('0x31')];if(!_0x26997b[_0xd804('0x2f')][_0xd804('0x36')]('nolimit')){_0x1d2473[_0xd804('0x20')]=qs[_0xd804('0x20')](_0x26997b['query'][_0xd804('0x20')]);_0x1d2473[_0xd804('0x1f')]=qs[_0xd804('0x1f')](_0x26997b[_0xd804('0x2f')][_0xd804('0x1f')]);}_0x1d2473['order']=qs[_0xd804('0x37')](_0x26997b['query'][_0xd804('0x37')]);_0x1d2473[_0xd804('0x38')]=qs[_0xd804('0x30')](_[_0xd804('0x39')](_0x26997b[_0xd804('0x2f')],_0x15dae[_0xd804('0x30')]),_0x169e2b);if(_0x26997b[_0xd804('0x2f')][_0xd804('0x3a')]){_0x1d2473['where']=_[_0xd804('0x3b')](_0x1d2473[_0xd804('0x38')],{'$or':_[_0xd804('0x29')](_0x169e2b,function(_0x10c711){if(_0x10c711['type']!==_0xd804('0x3c')){var _0x3d13e2={};_0x3d13e2[_0x10c711[_0xd804('0x27')]]={'$like':'%'+_0x26997b[_0xd804('0x2f')]['filter']+'%'};return _0x3d13e2;}})});}_0x1d2473=_[_0xd804('0x3b')]({},_0x1d2473,_0x26997b[_0xd804('0x3d')]);var _0x364a83={'where':_0x1d2473[_0xd804('0x38')]};return db[_0xd804('0x2a')][_0xd804('0x1e')](_0x364a83)[_0xd804('0x24')](function(_0xac7307){_0x4923ca['count']=_0xac7307;if(_0x26997b[_0xd804('0x2f')][_0xd804('0x3e')]){_0x1d2473['include']=[{'all':!![]}];}return db[_0xd804('0x2a')][_0xd804('0x3f')](_0x1d2473);})[_0xd804('0x24')](function(_0x6ba606){_0x4923ca['rows']=_0x6ba606;return _0x4923ca;})[_0xd804('0x24')](respondWithFilteredResult(_0x24d8c2,_0x1d2473))[_0xd804('0x40')](handleError(_0x24d8c2,null));};exports['show']=function(_0x3c6ce4,_0x437f95){var _0x2993bf={'raw':!![],'where':{'id':_0x3c6ce4['params']['id']}},_0x9fecc6={};_0x9fecc6[_0xd804('0x31')]=_[_0xd804('0x41')](db[_0xd804('0x2a')][_0xd804('0x2b')]);_0x9fecc6[_0xd804('0x2f')]=_[_0xd804('0x41')](_0x3c6ce4[_0xd804('0x2f')]);_0x9fecc6['filters']=_[_0xd804('0x33')](_0x9fecc6[_0xd804('0x31')],_0x9fecc6[_0xd804('0x2f')]);_0x2993bf['attributes']=_[_0xd804('0x33')](_0x9fecc6[_0xd804('0x31')],qs[_0xd804('0x34')](_0x3c6ce4[_0xd804('0x2f')][_0xd804('0x34')]));_0x2993bf[_0xd804('0x32')]=_0x2993bf[_0xd804('0x32')]['length']?_0x2993bf['attributes']:_0x9fecc6[_0xd804('0x31')];if(_0x3c6ce4[_0xd804('0x2f')][_0xd804('0x3e')]){_0x2993bf[_0xd804('0x42')]=[{'all':!![]}];}_0x2993bf=_[_0xd804('0x3b')]({},_0x2993bf,_0x3c6ce4[_0xd804('0x3d')]);return db['MailTransferReport'][_0xd804('0x43')](_0x2993bf)['then'](handleEntityNotFound(_0x437f95,null))[_0xd804('0x24')](respondWithResult(_0x437f95,null))[_0xd804('0x40')](handleError(_0x437f95,null));};exports[_0xd804('0x44')]=function(_0x24c9d6,_0x24ab04){return db[_0xd804('0x2a')][_0xd804('0x44')](_0x24c9d6[_0xd804('0x45')],{})[_0xd804('0x24')](respondWithResult(_0x24ab04,0xc9))[_0xd804('0x40')](handleError(_0x24ab04,null));};exports['update']=function(_0x46664e,_0x49ddd2){if(_0x46664e['body']['id']){delete _0x46664e[_0xd804('0x45')]['id'];}return db['MailTransferReport']['find']({'where':{'id':_0x46664e['params']['id']}})['then'](handleEntityNotFound(_0x49ddd2,null))[_0xd804('0x24')](saveUpdates(_0x46664e['body'],null))[_0xd804('0x24')](respondWithResult(_0x49ddd2,null))[_0xd804('0x40')](handleError(_0x49ddd2,null));};exports[_0xd804('0x25')]=function(_0x261967,_0x428ede){return db['MailTransferReport'][_0xd804('0x43')]({'where':{'id':_0x261967['params']['id']}})['then'](handleEntityNotFound(_0x428ede,null))[_0xd804('0x24')](removeEntity(_0x428ede,null))[_0xd804('0x40')](handleError(_0x428ede,null));};exports[_0xd804('0x46')]=function(_0x4e1d7a,_0x575242){return db[_0xd804('0x2a')][_0xd804('0x46')]()[_0xd804('0x24')](respondWithResult(_0x575242,null))[_0xd804('0x40')](handleError(_0x575242,null));};
\ No newline at end of file
index 4cc03ca..af5b0f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ad5=['MailTransferReport','report_mail_transfer','uniqueid','lodash','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./mailTransferReport.attributes','exports','define'];(function(_0x6cf19c,_0x2f3f02){var _0xce14f3=function(_0x474587){while(--_0x474587){_0x6cf19c['push'](_0x6cf19c['shift']());}};_0xce14f3(++_0x2f3f02);}(_0x8ad5,0xf1));var _0x58ad=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0x8ad5[_0x3054be];return _0x3df150;};'use strict';var _=require(_0x58ad('0x0'));var util=require(_0x58ad('0x1'));var logger=require(_0x58ad('0x2'))(_0x58ad('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x58ad('0x4'));var fs=require('fs');var path=require(_0x58ad('0x5'));var rimraf=require(_0x58ad('0x6'));var config=require(_0x58ad('0x7'));var attributes=require(_0x58ad('0x8'));module[_0x58ad('0x9')]=function(_0x51d560,_0x5888f7){return _0x51d560[_0x58ad('0xa')](_0x58ad('0xb'),attributes,{'tableName':_0x58ad('0xc'),'paranoid':![],'indexes':[{'name':_0x58ad('0xd'),'fields':[_0x58ad('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1de4=['./mailTransferReport.attributes','define','MailTransferReport','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment'];(function(_0x44a604,_0x3403bd){var _0x2845ed=function(_0x59bd30){while(--_0x59bd30){_0x44a604['push'](_0x44a604['shift']());}};_0x2845ed(++_0x3403bd);}(_0x1de4,0x94));var _0x41de=function(_0x1eb70d,_0x2525b1){_0x1eb70d=_0x1eb70d-0x0;var _0x397c6b=_0x1de4[_0x1eb70d];return _0x397c6b;};'use strict';var _=require(_0x41de('0x0'));var util=require(_0x41de('0x1'));var logger=require(_0x41de('0x2'))(_0x41de('0x3'));var moment=require('moment');var BPromise=require(_0x41de('0x4'));var rp=require(_0x41de('0x5'));var fs=require('fs');var path=require(_0x41de('0x6'));var rimraf=require('rimraf');var config=require(_0x41de('0x7'));var attributes=require(_0x41de('0x8'));module['exports']=function(_0x2e7196,_0x122565){return _0x2e7196[_0x41de('0x9')](_0x41de('0xa'),attributes,{'tableName':'report_mail_transfer','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x41de('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index ba63464..0e6765a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5b2=['MailTransferReport,\x20%s,\x20%s','request\x20sent','MailTransferReport,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','client','http','request','then','info'];(function(_0x57c2f7,_0x2b71f6){var _0x1df861=function(_0x5c73f8){while(--_0x5c73f8){_0x57c2f7['push'](_0x57c2f7['shift']());}};_0x1df861(++_0x2b71f6);}(_0xb5b2,0x1ab));var _0x2b5b=function(_0x839f0d,_0x4c5583){_0x839f0d=_0x839f0d-0x0;var _0x5c31c3=_0xb5b2[_0x839f0d];return _0x5c31c3;};'use strict';var _=require(_0x2b5b('0x0'));var util=require(_0x2b5b('0x1'));var moment=require(_0x2b5b('0x2'));var BPromise=require(_0x2b5b('0x3'));var rs=require(_0x2b5b('0x4'));var fs=require('fs');var Redis=require(_0x2b5b('0x5'));var db=require(_0x2b5b('0x6'))['db'];var utils=require(_0x2b5b('0x7'));var logger=require(_0x2b5b('0x8'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x2b5b('0x9')][_0x2b5b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xe6de73,_0x23d93c,_0x2e9ad5){return new BPromise(function(_0x3426cc,_0x5ebdec){return client[_0x2b5b('0xb')](_0xe6de73,_0x2e9ad5)[_0x2b5b('0xc')](function(_0x24998f){logger[_0x2b5b('0xd')](_0x2b5b('0xe'),_0x23d93c,_0x2b5b('0xf'));logger['debug'](_0x2b5b('0x10'),_0x23d93c,_0x2b5b('0xf'),JSON['stringify'](_0x24998f));if(_0x24998f[_0x2b5b('0x11')]){if(_0x24998f[_0x2b5b('0x11')][_0x2b5b('0x12')]===0x1f4){logger[_0x2b5b('0x11')](_0x2b5b('0xe'),_0x23d93c,_0x24998f[_0x2b5b('0x11')][_0x2b5b('0x13')]);return _0x5ebdec(_0x24998f[_0x2b5b('0x11')][_0x2b5b('0x13')]);}logger[_0x2b5b('0x11')]('MailTransferReport,\x20%s,\x20%s',_0x23d93c,_0x24998f['error'][_0x2b5b('0x13')]);return _0x3426cc(_0x24998f[_0x2b5b('0x11')][_0x2b5b('0x13')]);}else{logger[_0x2b5b('0xd')]('MailTransferReport,\x20%s,\x20%s',_0x23d93c,'request\x20sent');_0x3426cc(_0x24998f['result']['message']);}})[_0x2b5b('0x14')](function(_0x42177f){logger[_0x2b5b('0x11')](_0x2b5b('0xe'),_0x23d93c,_0x42177f);_0x5ebdec(_0x42177f);});});}
\ No newline at end of file
+var _0x1413=['then','debug','request\x20sent','error','code','MailTransferReport,\x20%s,\x20%s','message','info','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','jayson/promise','client','http','request'];(function(_0x46c3d2,_0x76df9c){var _0x111d9b=function(_0x13fa32){while(--_0x13fa32){_0x46c3d2['push'](_0x46c3d2['shift']());}};_0x111d9b(++_0x76df9c);}(_0x1413,0xf9));var _0x3141=function(_0x2b3c93,_0x59a5df){_0x2b3c93=_0x2b3c93-0x0;var _0x18895e=_0x1413[_0x2b3c93];return _0x18895e;};'use strict';var _=require(_0x3141('0x0'));var util=require(_0x3141('0x1'));var moment=require(_0x3141('0x2'));var BPromise=require(_0x3141('0x3'));var rs=require(_0x3141('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3141('0x5'))['db'];var utils=require(_0x3141('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x3141('0x7'));var client=jayson[_0x3141('0x8')][_0x3141('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x32c8dc,_0x3451c6,_0x293e54){return new BPromise(function(_0x522aa4,_0x15a1d4){return client[_0x3141('0xa')](_0x32c8dc,_0x293e54)[_0x3141('0xb')](function(_0xcdb56d){logger['info']('MailTransferReport,\x20%s,\x20%s',_0x3451c6,'request\x20sent');logger[_0x3141('0xc')]('MailTransferReport,\x20%s,\x20%s,\x20%s',_0x3451c6,_0x3141('0xd'),JSON['stringify'](_0xcdb56d));if(_0xcdb56d[_0x3141('0xe')]){if(_0xcdb56d[_0x3141('0xe')][_0x3141('0xf')]===0x1f4){logger[_0x3141('0xe')](_0x3141('0x10'),_0x3451c6,_0xcdb56d[_0x3141('0xe')][_0x3141('0x11')]);return _0x15a1d4(_0xcdb56d[_0x3141('0xe')][_0x3141('0x11')]);}logger[_0x3141('0xe')](_0x3141('0x10'),_0x3451c6,_0xcdb56d['error'][_0x3141('0x11')]);return _0x522aa4(_0xcdb56d[_0x3141('0xe')][_0x3141('0x11')]);}else{logger[_0x3141('0x12')](_0x3141('0x10'),_0x3451c6,_0x3141('0xd'));_0x522aa4(_0xcdb56d['result'][_0x3141('0x11')]);}})[_0x3141('0x13')](function(_0x398c61){logger[_0x3141('0xe')](_0x3141('0x10'),_0x3451c6,_0x398c61);_0x15a1d4(_0x398c61);});});}
\ No newline at end of file
index a8b08a9..7f615d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4066=['show','create','put','/:id','update','destroy','exports','multer','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./memberReport.controller','get','index','/describe','isAuthenticated','describe'];(function(_0xa7c249,_0x599b5e){var _0x1a9b26=function(_0x2b8797){while(--_0x2b8797){_0xa7c249['push'](_0xa7c249['shift']());}};_0x1a9b26(++_0x599b5e);}(_0x4066,0xbb));var _0x6406=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x4066[_0x21a9d9];return _0x46adce;};'use strict';var multer=require(_0x6406('0x0'));var util=require('util');var path=require(_0x6406('0x1'));var timeout=require('connect-timeout');var express=require(_0x6406('0x2'));var router=express[_0x6406('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x6406('0x4'));var interaction=require(_0x6406('0x5'));var config=require(_0x6406('0x6'));var controller=require(_0x6406('0x7'));router[_0x6406('0x8')]('/',auth['isAuthenticated'](),controller[_0x6406('0x9')]);router[_0x6406('0x8')](_0x6406('0xa'),auth[_0x6406('0xb')](),controller[_0x6406('0xc')]);router['get']('/:id',auth[_0x6406('0xb')](),controller[_0x6406('0xd')]);router['post']('/',auth[_0x6406('0xb')](),controller[_0x6406('0xe')]);router[_0x6406('0xf')](_0x6406('0x10'),auth[_0x6406('0xb')](),controller[_0x6406('0x11')]);router['delete'](_0x6406('0x10'),auth[_0x6406('0xb')](),controller[_0x6406('0x12')]);module[_0x6406('0x13')]=router;
\ No newline at end of file
+var _0x621e=['./memberReport.controller','get','isAuthenticated','index','/describe','/:id','show','put','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x21e98a,_0x4db89e){var _0x236f20=function(_0x1fe629){while(--_0x1fe629){_0x21e98a['push'](_0x21e98a['shift']());}};_0x236f20(++_0x4db89e);}(_0x621e,0x1e6));var _0xe621=function(_0x22c273,_0x427628){_0x22c273=_0x22c273-0x0;var _0x2d93d5=_0x621e[_0x22c273];return _0x2d93d5;};'use strict';var multer=require(_0xe621('0x0'));var util=require('util');var path=require(_0xe621('0x1'));var timeout=require(_0xe621('0x2'));var express=require(_0xe621('0x3'));var router=express[_0xe621('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xe621('0x5'));var interaction=require(_0xe621('0x6'));var config=require('../../config/environment');var controller=require(_0xe621('0x7'));router[_0xe621('0x8')]('/',auth[_0xe621('0x9')](),controller[_0xe621('0xa')]);router[_0xe621('0x8')](_0xe621('0xb'),auth[_0xe621('0x9')](),controller['describe']);router[_0xe621('0x8')](_0xe621('0xc'),auth[_0xe621('0x9')](),controller[_0xe621('0xd')]);router['post']('/',auth[_0xe621('0x9')](),controller['create']);router[_0xe621('0xe')]('/:id',auth[_0xe621('0x9')](),controller['update']);router['delete'](_0xe621('0xc'),auth[_0xe621('0x9')](),controller[_0xe621('0xf')]);module[_0xe621('0x10')]=router;
\ No newline at end of file
index 6a2bdbd..d716b9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc678=['talk:[dial\x20string]','talk:[queue]','exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','DATE','enterAt','diff','seconds','setDataValue','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[destination]'];(function(_0x22c29c,_0xa80f96){var _0x35d8c9=function(_0x3aa85e){while(--_0x3aa85e){_0x22c29c['push'](_0x22c29c['shift']());}};_0x35d8c9(++_0xa80f96);}(_0xc678,0x1b4));var _0x8c67=function(_0x201097,_0x40ff26){_0x201097=_0x201097-0x0;var _0x46176a=_0xc678[_0x201097];return _0x46176a;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module[_0x8c67('0x0')]={'channel':{'type':Sequelize[_0x8c67('0x1')]},'membername':{'type':Sequelize[_0x8c67('0x1')]},'interface':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x8c67('0x1')],'defaultValue':_0x8c67('0x2'),'comment':_0x8c67('0x3')},'duration':{'type':Sequelize[_0x8c67('0x4')]},'enterAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x8c67('0x5')],'set':function(_0x5cdb40){var _0x351c21=moment(_0x5cdb40);var _0x1b4ceb=moment(this['getDataValue'](_0x8c67('0x6')));var _0x22d7e4=_0x351c21[_0x8c67('0x7')](_0x1b4ceb,_0x8c67('0x8'));this[_0x8c67('0x9')]('exitAt',_0x5cdb40);this[_0x8c67('0x9')]('duration',_0x22d7e4||null);}},'data1':{'type':Sequelize[_0x8c67('0x1')],'comment':_0x8c67('0xa')},'data2':{'type':Sequelize[_0x8c67('0x1')],'comment':'talk:[start]'},'data3':{'type':Sequelize[_0x8c67('0x1')],'comment':_0x8c67('0xb')},'data4':{'type':Sequelize[_0x8c67('0x1')],'comment':_0x8c67('0xc')},'data5':{'type':Sequelize['STRING'],'comment':_0x8c67('0xd')},'role':{'type':Sequelize['STRING']},'internal':{'type':Sequelize['INTEGER']},'uniqueid':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xfa2f=['LOGIN,\x20PAUSE,\x20TALKING','INTEGER','DATE','diff','seconds','setDataValue','exitAt','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[destination]','talk:[dial\x20string]','exports','STRING'];(function(_0x588f75,_0x3b7672){var _0x5a6690=function(_0x10bcd7){while(--_0x10bcd7){_0x588f75['push'](_0x588f75['shift']());}};_0x5a6690(++_0x3b7672);}(_0xfa2f,0xe8));var _0xffa2=function(_0x12c8fb,_0x30c250){_0x12c8fb=_0x12c8fb-0x0;var _0x1914e2=_0xfa2f[_0x12c8fb];return _0x1914e2;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module[_0xffa2('0x0')]={'channel':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0xffa2('0x1')]},'interface':{'type':Sequelize[_0xffa2('0x1')]},'type':{'type':Sequelize[_0xffa2('0x1')],'defaultValue':'DEFAULT\x20PAUSE','comment':_0xffa2('0x2')},'duration':{'type':Sequelize[_0xffa2('0x3')]},'enterAt':{'type':Sequelize[_0xffa2('0x4')]},'exitAt':{'type':Sequelize[_0xffa2('0x4')],'set':function(_0x25fd81){var _0x2c7708=moment(_0x25fd81);var _0x215134=moment(this['getDataValue']('enterAt'));var _0x34cf1b=_0x2c7708[_0xffa2('0x5')](_0x215134,_0xffa2('0x6'));this[_0xffa2('0x7')](_0xffa2('0x8'),_0x25fd81);this[_0xffa2('0x7')](_0xffa2('0x9'),_0x34cf1b||null);}},'data1':{'type':Sequelize['STRING'],'comment':_0xffa2('0xa')},'data2':{'type':Sequelize['STRING'],'comment':'talk:[start]'},'data3':{'type':Sequelize[_0xffa2('0x1')],'comment':_0xffa2('0xb')},'data4':{'type':Sequelize[_0xffa2('0x1')],'comment':_0xffa2('0xc')},'data5':{'type':Sequelize[_0xffa2('0x1')],'comment':'talk:[queue]'},'role':{'type':Sequelize[_0xffa2('0x1')]},'internal':{'type':Sequelize[_0xffa2('0x3')]},'uniqueid':{'type':Sequelize[_0xffa2('0x1')]}};
\ No newline at end of file
index d79a969..e81dc7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['destroy','sendStatus','send','index','MemberReport','rawAttributes','key','model','map','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','type','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','show','catch','create','body','find','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','save','update','then'];(function(_0xbccf,_0x5f3f74){var _0x24c504=function(_0x1442a0){while(--_0x1442a0){_0xbccf['push'](_0xbccf['shift']());}};_0x24c504(++_0x5f3f74);}(_0x008c,0x188));var _0xc008=function(_0x1da04e,_0x31024b){_0x1da04e=_0x1da04e-0x0;var _0xdd8c41=_0x008c[_0x1da04e];return _0xdd8c41;};'use strict';var emlformat=require(_0xc008('0x0'));var rimraf=require(_0xc008('0x1'));var zipdir=require(_0xc008('0x2'));var jsonpatch=require(_0xc008('0x3'));var rp=require(_0xc008('0x4'));var moment=require('moment');var BPromise=require(_0xc008('0x5'));var Mustache=require(_0xc008('0x6'));var util=require(_0xc008('0x7'));var path=require(_0xc008('0x8'));var sox=require(_0xc008('0x9'));var csv=require(_0xc008('0xa'));var ejs=require(_0xc008('0xb'));var fs=require('fs');var fs_extra=require(_0xc008('0xc'));var _=require(_0xc008('0xd'));var squel=require('squel');var crypto=require(_0xc008('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xc008('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc008('0x10'));var Redis=require(_0xc008('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc008('0x12'));var logger=require(_0xc008('0x13'))('api');var utils=require(_0xc008('0x14'));var config=require(_0xc008('0x15'));var licenseUtil=require(_0xc008('0x16'));var db=require(_0xc008('0x17'))['db'];function respondWithStatusCode(_0x9ffa93,_0x1819c6){_0x1819c6=_0x1819c6||0xcc;return function(_0x69726e){if(_0x69726e){return _0x9ffa93['sendStatus'](_0x1819c6);}return _0x9ffa93['status'](_0x1819c6)[_0xc008('0x18')]();};}function respondWithResult(_0x50c1ab,_0x25e13f){_0x25e13f=_0x25e13f||0xc8;return function(_0x4584e1){if(_0x4584e1){return _0x50c1ab[_0xc008('0x19')](_0x25e13f)[_0xc008('0x1a')](_0x4584e1);}};}function respondWithFilteredResult(_0x3f0ecf,_0x5ee00b){return function(_0x5e894e){if(_0x5e894e){var _0x4bd0f4=typeof _0x5ee00b[_0xc008('0x1b')]===_0xc008('0x1c')&&typeof _0x5ee00b[_0xc008('0x1d')]===_0xc008('0x1c');var _0x4fe771=_0x5e894e['count'];var _0x540e45=_0x4bd0f4?0x0:_0x5ee00b['offset'];var _0x46042b=_0x4bd0f4?_0x5e894e[_0xc008('0x1e')]:_0x5ee00b['offset']+_0x5ee00b[_0xc008('0x1d')];var _0x5906e6;if(_0x46042b>=_0x4fe771){_0x46042b=_0x4fe771;_0x5906e6=0xc8;}else{_0x5906e6=0xce;}_0x3f0ecf['status'](_0x5906e6);return _0x3f0ecf['set']('Content-Range',_0x540e45+'-'+_0x46042b+'/'+_0x4fe771)[_0xc008('0x1a')](_0x5e894e);}return null;};}function patchUpdates(_0x4b9726){return function(_0x5560b1){try{jsonpatch['apply'](_0x5560b1,_0x4b9726,!![]);}catch(_0x4a582d){return BPromise['reject'](_0x4a582d);}return _0x5560b1[_0xc008('0x1f')]();};}function saveUpdates(_0x4777a6,_0x251db2){return function(_0x415af3){if(_0x415af3){return _0x415af3[_0xc008('0x20')](_0x4777a6)[_0xc008('0x21')](function(_0x4f43e2){return _0x4f43e2;});}return null;};}function removeEntity(_0x459fd9,_0x5c85f2){return function(_0x58a6ea){if(_0x58a6ea){return _0x58a6ea[_0xc008('0x22')]()[_0xc008('0x21')](function(){_0x459fd9[_0xc008('0x19')](0xcc)[_0xc008('0x18')]();});}};}function handleEntityNotFound(_0x5410f5,_0x48582b){return function(_0x5de1e9){if(!_0x5de1e9){_0x5410f5[_0xc008('0x23')](0x194);}return _0x5de1e9;};}function handleError(_0x15dade,_0x92c582){_0x92c582=_0x92c582||0x1f4;return function(_0x2e31c2){logger['error'](_0x2e31c2['stack']);if(_0x2e31c2['name']){delete _0x2e31c2['name'];}_0x15dade['status'](_0x92c582)[_0xc008('0x24')](_0x2e31c2);};}exports[_0xc008('0x25')]=function(_0x25eae4,_0x529961){var _0x24c14c={},_0x32390d={},_0x209591={'count':0x0,'rows':[]};var _0x2a7d4f=_['map'](db[_0xc008('0x26')][_0xc008('0x27')],function(_0x53ed35){return{'name':_0x53ed35['fieldName'],'type':_0x53ed35['type'][_0xc008('0x28')]};});_0x32390d[_0xc008('0x29')]=_[_0xc008('0x2a')](_0x2a7d4f,_0xc008('0x2b'));_0x32390d[_0xc008('0x2c')]=_[_0xc008('0x2d')](_0x25eae4[_0xc008('0x2c')]);_0x32390d[_0xc008('0x2e')]=_[_0xc008('0x2f')](_0x32390d[_0xc008('0x29')],_0x32390d[_0xc008('0x2c')]);_0x24c14c[_0xc008('0x30')]=_['intersection'](_0x32390d[_0xc008('0x29')],qs[_0xc008('0x31')](_0x25eae4['query'][_0xc008('0x31')]));_0x24c14c[_0xc008('0x30')]=_0x24c14c[_0xc008('0x30')][_0xc008('0x32')]?_0x24c14c[_0xc008('0x30')]:_0x32390d[_0xc008('0x29')];if(!_0x25eae4[_0xc008('0x2c')][_0xc008('0x33')](_0xc008('0x34'))){_0x24c14c['limit']=qs[_0xc008('0x1d')](_0x25eae4[_0xc008('0x2c')][_0xc008('0x1d')]);_0x24c14c[_0xc008('0x1b')]=qs[_0xc008('0x1b')](_0x25eae4[_0xc008('0x2c')][_0xc008('0x1b')]);}_0x24c14c['order']=qs[_0xc008('0x35')](_0x25eae4[_0xc008('0x2c')]['sort']);_0x24c14c[_0xc008('0x36')]=qs[_0xc008('0x2e')](_['pick'](_0x25eae4[_0xc008('0x2c')],_0x32390d[_0xc008('0x2e')]),_0x2a7d4f);if(_0x25eae4[_0xc008('0x2c')]['filter']){_0x24c14c['where']=_['merge'](_0x24c14c[_0xc008('0x36')],{'$or':_['map'](_0x2a7d4f,function(_0x3dd0ac){if(_0x3dd0ac[_0xc008('0x37')]!==_0xc008('0x38')){var _0x440459={};_0x440459[_0x3dd0ac[_0xc008('0x2b')]]={'$like':'%'+_0x25eae4[_0xc008('0x2c')][_0xc008('0x39')]+'%'};return _0x440459;}})});}_0x24c14c=_[_0xc008('0x3a')]({},_0x24c14c,_0x25eae4[_0xc008('0x3b')]);var _0x387dfd={'where':_0x24c14c[_0xc008('0x36')]};return db[_0xc008('0x26')][_0xc008('0x1e')](_0x387dfd)[_0xc008('0x21')](function(_0x4cace5){_0x209591[_0xc008('0x1e')]=_0x4cace5;if(_0x25eae4[_0xc008('0x2c')][_0xc008('0x3c')]){_0x24c14c[_0xc008('0x3d')]=[{'all':!![]}];}return db['MemberReport'][_0xc008('0x3e')](_0x24c14c);})[_0xc008('0x21')](function(_0xc8cb91){_0x209591[_0xc008('0x3f')]=_0xc8cb91;return _0x209591;})[_0xc008('0x21')](respondWithFilteredResult(_0x529961,_0x24c14c))['catch'](handleError(_0x529961,null));};exports[_0xc008('0x40')]=function(_0x3323f4,_0x3794b0){var _0x3e9a99={'raw':!![],'where':{'id':_0x3323f4['params']['id']}},_0x7279e8={};_0x7279e8[_0xc008('0x29')]=_[_0xc008('0x2d')](db[_0xc008('0x26')][_0xc008('0x27')]);_0x7279e8['query']=_[_0xc008('0x2d')](_0x3323f4[_0xc008('0x2c')]);_0x7279e8[_0xc008('0x2e')]=_['intersection'](_0x7279e8[_0xc008('0x29')],_0x7279e8['query']);_0x3e9a99[_0xc008('0x30')]=_['intersection'](_0x7279e8[_0xc008('0x29')],qs[_0xc008('0x31')](_0x3323f4['query'][_0xc008('0x31')]));_0x3e9a99[_0xc008('0x30')]=_0x3e9a99[_0xc008('0x30')]['length']?_0x3e9a99[_0xc008('0x30')]:_0x7279e8[_0xc008('0x29')];if(_0x3323f4[_0xc008('0x2c')][_0xc008('0x3c')]){_0x3e9a99[_0xc008('0x3d')]=[{'all':!![]}];}_0x3e9a99=_[_0xc008('0x3a')]({},_0x3e9a99,_0x3323f4['options']);return db['MemberReport']['find'](_0x3e9a99)[_0xc008('0x21')](handleEntityNotFound(_0x3794b0,null))[_0xc008('0x21')](respondWithResult(_0x3794b0,null))[_0xc008('0x41')](handleError(_0x3794b0,null));};exports[_0xc008('0x42')]=function(_0x25289f,_0x24f6a4){return db[_0xc008('0x26')][_0xc008('0x42')](_0x25289f['body'],{})['then'](respondWithResult(_0x24f6a4,0xc9))['catch'](handleError(_0x24f6a4,null));};exports[_0xc008('0x20')]=function(_0x2651cf,_0x158eae){if(_0x2651cf['body']['id']){delete _0x2651cf[_0xc008('0x43')]['id'];}return db[_0xc008('0x26')][_0xc008('0x44')]({'where':{'id':_0x2651cf[_0xc008('0x45')]['id']}})[_0xc008('0x21')](handleEntityNotFound(_0x158eae,null))[_0xc008('0x21')](saveUpdates(_0x2651cf[_0xc008('0x43')],null))[_0xc008('0x21')](respondWithResult(_0x158eae,null))[_0xc008('0x41')](handleError(_0x158eae,null));};exports[_0xc008('0x22')]=function(_0x52c444,_0x4c63d4){return db[_0xc008('0x26')]['find']({'where':{'id':_0x52c444[_0xc008('0x45')]['id']}})[_0xc008('0x21')](handleEntityNotFound(_0x4c63d4,null))[_0xc008('0x21')](removeEntity(_0x4c63d4,null))['catch'](handleError(_0x4c63d4,null));};exports[_0xc008('0x46')]=function(_0x32b435,_0xee64){return db[_0xc008('0x26')][_0xc008('0x46')]()['then'](respondWithResult(_0xee64,null))[_0xc008('0x41')](handleError(_0xee64,null));};
\ No newline at end of file
+var _0x34e8=['path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','map','MemberReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','options','includeAll','catch','show','params','keys','include','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util'];(function(_0x5ecadc,_0x1cf9f1){var _0x565037=function(_0x22908b){while(--_0x22908b){_0x5ecadc['push'](_0x5ecadc['shift']());}};_0x565037(++_0x1cf9f1);}(_0x34e8,0x12c));var _0x834e=function(_0x56f52a,_0x303af2){_0x56f52a=_0x56f52a-0x0;var _0x3eac6d=_0x34e8[_0x56f52a];return _0x3eac6d;};'use strict';var emlformat=require(_0x834e('0x0'));var rimraf=require(_0x834e('0x1'));var zipdir=require(_0x834e('0x2'));var jsonpatch=require(_0x834e('0x3'));var rp=require('request-promise');var moment=require(_0x834e('0x4'));var BPromise=require(_0x834e('0x5'));var Mustache=require(_0x834e('0x6'));var util=require(_0x834e('0x7'));var path=require(_0x834e('0x8'));var sox=require(_0x834e('0x9'));var csv=require(_0x834e('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x834e('0xb'));var _=require('lodash');var squel=require(_0x834e('0xc'));var crypto=require(_0x834e('0xd'));var jsforce=require(_0x834e('0xe'));var deskjs=require(_0x834e('0xf'));var toCsv=require(_0x834e('0xa'));var querystring=require(_0x834e('0x10'));var Papa=require(_0x834e('0x11'));var Redis=require(_0x834e('0x12'));var authService=require(_0x834e('0x13'));var qs=require(_0x834e('0x14'));var as=require(_0x834e('0x15'));var hardwareService=require(_0x834e('0x16'));var logger=require(_0x834e('0x17'))(_0x834e('0x18'));var utils=require(_0x834e('0x19'));var config=require(_0x834e('0x1a'));var licenseUtil=require(_0x834e('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5e5b6d,_0x6cd9b9){_0x6cd9b9=_0x6cd9b9||0xcc;return function(_0x58a27e){if(_0x58a27e){return _0x5e5b6d[_0x834e('0x1c')](_0x6cd9b9);}return _0x5e5b6d[_0x834e('0x1d')](_0x6cd9b9)[_0x834e('0x1e')]();};}function respondWithResult(_0x21cc0a,_0x50e860){_0x50e860=_0x50e860||0xc8;return function(_0x43156c){if(_0x43156c){return _0x21cc0a[_0x834e('0x1d')](_0x50e860)['json'](_0x43156c);}};}function respondWithFilteredResult(_0x316205,_0x4a9cdc){return function(_0x38a8cd){if(_0x38a8cd){var _0x36d443=typeof _0x4a9cdc['offset']===_0x834e('0x1f')&&typeof _0x4a9cdc[_0x834e('0x20')]===_0x834e('0x1f');var _0x50b3f6=_0x38a8cd[_0x834e('0x21')];var _0x211e9a=_0x36d443?0x0:_0x4a9cdc[_0x834e('0x22')];var _0xb993a1=_0x36d443?_0x38a8cd[_0x834e('0x21')]:_0x4a9cdc[_0x834e('0x22')]+_0x4a9cdc[_0x834e('0x20')];var _0x595515;if(_0xb993a1>=_0x50b3f6){_0xb993a1=_0x50b3f6;_0x595515=0xc8;}else{_0x595515=0xce;}_0x316205[_0x834e('0x1d')](_0x595515);return _0x316205[_0x834e('0x23')](_0x834e('0x24'),_0x211e9a+'-'+_0xb993a1+'/'+_0x50b3f6)[_0x834e('0x25')](_0x38a8cd);}return null;};}function patchUpdates(_0x4ab05d){return function(_0x45a630){try{jsonpatch[_0x834e('0x26')](_0x45a630,_0x4ab05d,!![]);}catch(_0x5a05c0){return BPromise[_0x834e('0x27')](_0x5a05c0);}return _0x45a630[_0x834e('0x28')]();};}function saveUpdates(_0x8d406e,_0x5c55ca){return function(_0x4e3f48){if(_0x4e3f48){return _0x4e3f48[_0x834e('0x29')](_0x8d406e)[_0x834e('0x2a')](function(_0x589dde){return _0x589dde;});}return null;};}function removeEntity(_0x25ee1d,_0x1dc1e0){return function(_0x58f4fd){if(_0x58f4fd){return _0x58f4fd[_0x834e('0x2b')]()[_0x834e('0x2a')](function(){_0x25ee1d[_0x834e('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x24fcf7,_0x3e310f){return function(_0x5e1cc5){if(!_0x5e1cc5){_0x24fcf7['sendStatus'](0x194);}return _0x5e1cc5;};}function handleError(_0x1e713a,_0x508a1d){_0x508a1d=_0x508a1d||0x1f4;return function(_0x2826ec){logger[_0x834e('0x2c')](_0x2826ec[_0x834e('0x2d')]);if(_0x2826ec[_0x834e('0x2e')]){delete _0x2826ec[_0x834e('0x2e')];}_0x1e713a[_0x834e('0x1d')](_0x508a1d)['send'](_0x2826ec);};}exports['index']=function(_0x4dc64a,_0x58c1d7){var _0x2c7a8d={},_0x567cea={},_0x106d6a={'count':0x0,'rows':[]};var _0x5dacc1=_[_0x834e('0x2f')](db[_0x834e('0x30')][_0x834e('0x31')],function(_0x1e026a){return{'name':_0x1e026a[_0x834e('0x32')],'type':_0x1e026a[_0x834e('0x33')][_0x834e('0x34')]};});_0x567cea[_0x834e('0x35')]=_[_0x834e('0x2f')](_0x5dacc1,'name');_0x567cea[_0x834e('0x36')]=_['keys'](_0x4dc64a[_0x834e('0x36')]);_0x567cea[_0x834e('0x37')]=_[_0x834e('0x38')](_0x567cea[_0x834e('0x35')],_0x567cea[_0x834e('0x36')]);_0x2c7a8d[_0x834e('0x39')]=_[_0x834e('0x38')](_0x567cea[_0x834e('0x35')],qs[_0x834e('0x3a')](_0x4dc64a[_0x834e('0x36')]['fields']));_0x2c7a8d[_0x834e('0x39')]=_0x2c7a8d[_0x834e('0x39')][_0x834e('0x3b')]?_0x2c7a8d[_0x834e('0x39')]:_0x567cea['model'];if(!_0x4dc64a[_0x834e('0x36')][_0x834e('0x3c')]('nolimit')){_0x2c7a8d['limit']=qs['limit'](_0x4dc64a[_0x834e('0x36')][_0x834e('0x20')]);_0x2c7a8d[_0x834e('0x22')]=qs[_0x834e('0x22')](_0x4dc64a[_0x834e('0x36')][_0x834e('0x22')]);}_0x2c7a8d['order']=qs[_0x834e('0x3d')](_0x4dc64a['query'][_0x834e('0x3d')]);_0x2c7a8d[_0x834e('0x3e')]=qs['filters'](_[_0x834e('0x3f')](_0x4dc64a[_0x834e('0x36')],_0x567cea['filters']),_0x5dacc1);if(_0x4dc64a['query'][_0x834e('0x40')]){_0x2c7a8d[_0x834e('0x3e')]=_[_0x834e('0x41')](_0x2c7a8d[_0x834e('0x3e')],{'$or':_[_0x834e('0x2f')](_0x5dacc1,function(_0x4ca43c){if(_0x4ca43c[_0x834e('0x33')]!=='VIRTUAL'){var _0x50c243={};_0x50c243[_0x4ca43c[_0x834e('0x2e')]]={'$like':'%'+_0x4dc64a['query'][_0x834e('0x40')]+'%'};return _0x50c243;}})});}_0x2c7a8d=_[_0x834e('0x41')]({},_0x2c7a8d,_0x4dc64a[_0x834e('0x42')]);var _0x3c59af={'where':_0x2c7a8d[_0x834e('0x3e')]};return db['MemberReport'][_0x834e('0x21')](_0x3c59af)[_0x834e('0x2a')](function(_0x38f266){_0x106d6a['count']=_0x38f266;if(_0x4dc64a[_0x834e('0x36')][_0x834e('0x43')]){_0x2c7a8d['include']=[{'all':!![]}];}return db[_0x834e('0x30')]['findAll'](_0x2c7a8d);})[_0x834e('0x2a')](function(_0x585335){_0x106d6a['rows']=_0x585335;return _0x106d6a;})['then'](respondWithFilteredResult(_0x58c1d7,_0x2c7a8d))[_0x834e('0x44')](handleError(_0x58c1d7,null));};exports[_0x834e('0x45')]=function(_0x3bcbf4,_0xbc1571){var _0x8ad264={'raw':!![],'where':{'id':_0x3bcbf4[_0x834e('0x46')]['id']}},_0x23feea={};_0x23feea['model']=_[_0x834e('0x47')](db['MemberReport'][_0x834e('0x31')]);_0x23feea['query']=_[_0x834e('0x47')](_0x3bcbf4['query']);_0x23feea[_0x834e('0x37')]=_[_0x834e('0x38')](_0x23feea['model'],_0x23feea[_0x834e('0x36')]);_0x8ad264[_0x834e('0x39')]=_[_0x834e('0x38')](_0x23feea[_0x834e('0x35')],qs[_0x834e('0x3a')](_0x3bcbf4[_0x834e('0x36')][_0x834e('0x3a')]));_0x8ad264[_0x834e('0x39')]=_0x8ad264[_0x834e('0x39')][_0x834e('0x3b')]?_0x8ad264['attributes']:_0x23feea[_0x834e('0x35')];if(_0x3bcbf4[_0x834e('0x36')]['includeAll']){_0x8ad264[_0x834e('0x48')]=[{'all':!![]}];}_0x8ad264=_[_0x834e('0x41')]({},_0x8ad264,_0x3bcbf4[_0x834e('0x42')]);return db[_0x834e('0x30')][_0x834e('0x49')](_0x8ad264)[_0x834e('0x2a')](handleEntityNotFound(_0xbc1571,null))['then'](respondWithResult(_0xbc1571,null))['catch'](handleError(_0xbc1571,null));};exports[_0x834e('0x4a')]=function(_0x1a5444,_0x30568e){return db[_0x834e('0x30')][_0x834e('0x4a')](_0x1a5444[_0x834e('0x4b')],{})[_0x834e('0x2a')](respondWithResult(_0x30568e,0xc9))[_0x834e('0x44')](handleError(_0x30568e,null));};exports[_0x834e('0x29')]=function(_0x390c45,_0xf02f0d){if(_0x390c45[_0x834e('0x4b')]['id']){delete _0x390c45[_0x834e('0x4b')]['id'];}return db[_0x834e('0x30')][_0x834e('0x49')]({'where':{'id':_0x390c45[_0x834e('0x46')]['id']}})[_0x834e('0x2a')](handleEntityNotFound(_0xf02f0d,null))[_0x834e('0x2a')](saveUpdates(_0x390c45[_0x834e('0x4b')],null))[_0x834e('0x2a')](respondWithResult(_0xf02f0d,null))['catch'](handleError(_0xf02f0d,null));};exports[_0x834e('0x2b')]=function(_0x1f08b9,_0x4e73e0){return db[_0x834e('0x30')][_0x834e('0x49')]({'where':{'id':_0x1f08b9['params']['id']}})[_0x834e('0x2a')](handleEntityNotFound(_0x4e73e0,null))[_0x834e('0x2a')](removeEntity(_0x4e73e0,null))[_0x834e('0x44')](handleError(_0x4e73e0,null));};exports[_0x834e('0x4c')]=function(_0x4288e4,_0xb77aab){return db[_0x834e('0x30')]['describe']()[_0x834e('0x2a')](respondWithResult(_0xb77aab,null))[_0x834e('0x44')](handleError(_0xb77aab,null));};
\ No newline at end of file
index 750fd9a..8dbeb88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x120b=['path','./memberReport.attributes','exports','define','interface','util','../../config/logger','moment'];(function(_0x20489b,_0x465eab){var _0x241234=function(_0x122625){while(--_0x122625){_0x20489b['push'](_0x20489b['shift']());}};_0x241234(++_0x465eab);}(_0x120b,0x19d));var _0xb120=function(_0x5eb0ee,_0x3760b0){_0x5eb0ee=_0x5eb0ee-0x0;var _0x6fdba6=_0x120b[_0x5eb0ee];return _0x6fdba6;};'use strict';var _=require('lodash');var util=require(_0xb120('0x0'));var logger=require(_0xb120('0x1'))('api');var moment=require(_0xb120('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xb120('0x3'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xb120('0x4'));module[_0xb120('0x5')]=function(_0xb8ab22,_0x4b70cd){return _0xb8ab22[_0xb120('0x6')]('MemberReport',attributes,{'tableName':'report_member','paranoid':![],'indexes':[{'name':'membername_interface','fields':['membername',_0xb120('0x7')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1e6a=['define','MemberReport','report_member','membername_interface','membername','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./memberReport.attributes','exports'];(function(_0x4167fa,_0x5e417c){var _0x2e393b=function(_0x3d3214){while(--_0x3d3214){_0x4167fa['push'](_0x4167fa['shift']());}};_0x2e393b(++_0x5e417c);}(_0x1e6a,0x135));var _0xa1e6=function(_0x4a1eef,_0x401f06){_0x4a1eef=_0x4a1eef-0x0;var _0x2cdbb1=_0x1e6a[_0x4a1eef];return _0x2cdbb1;};'use strict';var _=require(_0xa1e6('0x0'));var util=require('util');var logger=require(_0xa1e6('0x1'))(_0xa1e6('0x2'));var moment=require(_0xa1e6('0x3'));var BPromise=require(_0xa1e6('0x4'));var rp=require(_0xa1e6('0x5'));var fs=require('fs');var path=require(_0xa1e6('0x6'));var rimraf=require(_0xa1e6('0x7'));var config=require(_0xa1e6('0x8'));var attributes=require(_0xa1e6('0x9'));module[_0xa1e6('0xa')]=function(_0x44d497,_0x53aec2){return _0x44d497[_0xa1e6('0xb')](_0xa1e6('0xc'),attributes,{'tableName':_0xa1e6('0xd'),'paranoid':![],'indexes':[{'name':_0xa1e6('0xe'),'fields':[_0xa1e6('0xf'),'interface']}],'timestamps':!![]});};
\ No newline at end of file
index 6a4d6d2..fa510ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48e3=['result','GetMemberReport','options','raw','where','limit','map','include','model','attributes','catch','CreateMemberReport','MemberReport','create','body','UpdateMemberReport','update','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','request','then','info','MemberReport,\x20%s,\x20%s','request\x20sent','debug','MemberReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x48e3,0xe9));var _0x348e=function(_0x1e23c6,_0x2506cd){_0x1e23c6=_0x1e23c6-0x0;var _0x161855=_0x48e3[_0x1e23c6];return _0x161855;};'use strict';var _=require(_0x348e('0x0'));var util=require(_0x348e('0x1'));var moment=require('moment');var BPromise=require(_0x348e('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x348e('0x3'))['db'];var utils=require(_0x348e('0x4'));var logger=require(_0x348e('0x5'))(_0x348e('0x6'));var config=require('../../config/environment');var jayson=require(_0x348e('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x13b150,_0x5afaa1,_0x5919ce){return new BPromise(function(_0x33295b,_0x5d908f){return client[_0x348e('0x8')](_0x13b150,_0x5919ce)[_0x348e('0x9')](function(_0x16ec91){logger[_0x348e('0xa')](_0x348e('0xb'),_0x5afaa1,_0x348e('0xc'));logger[_0x348e('0xd')](_0x348e('0xe'),_0x5afaa1,_0x348e('0xc'),JSON[_0x348e('0xf')](_0x16ec91));if(_0x16ec91[_0x348e('0x10')]){if(_0x16ec91[_0x348e('0x10')][_0x348e('0x11')]===0x1f4){logger[_0x348e('0x10')]('MemberReport,\x20%s,\x20%s',_0x5afaa1,_0x16ec91[_0x348e('0x10')][_0x348e('0x12')]);return _0x5d908f(_0x16ec91[_0x348e('0x10')]['message']);}logger[_0x348e('0x10')](_0x348e('0xb'),_0x5afaa1,_0x16ec91[_0x348e('0x10')][_0x348e('0x12')]);return _0x33295b(_0x16ec91[_0x348e('0x10')]['message']);}else{logger['info'](_0x348e('0xb'),_0x5afaa1,_0x348e('0xc'));_0x33295b(_0x16ec91[_0x348e('0x13')][_0x348e('0x12')]);}})['catch'](function(_0x378442){logger['error'](_0x348e('0xb'),_0x5afaa1,_0x378442);_0x5d908f(_0x378442);});});}exports[_0x348e('0x14')]=function(_0x409ea8){var _0x57a6fa=this;return new Promise(function(_0x2326bc,_0x548e17){return db['MemberReport']['findAll']({'raw':_0x409ea8[_0x348e('0x15')]?_0x409ea8[_0x348e('0x15')][_0x348e('0x16')]===undefined?!![]:![]:!![],'where':_0x409ea8[_0x348e('0x15')]?_0x409ea8[_0x348e('0x15')][_0x348e('0x17')]||null:null,'attributes':_0x409ea8[_0x348e('0x15')]?_0x409ea8[_0x348e('0x15')]['attributes']||null:null,'limit':_0x409ea8['options']?_0x409ea8[_0x348e('0x15')][_0x348e('0x18')]||null:null,'include':_0x409ea8[_0x348e('0x15')]?_0x409ea8[_0x348e('0x15')]['include']?_[_0x348e('0x19')](_0x409ea8[_0x348e('0x15')][_0x348e('0x1a')],function(_0x4a5a84){return{'model':db[_0x4a5a84[_0x348e('0x1b')]],'as':_0x4a5a84['as'],'attributes':_0x4a5a84[_0x348e('0x1c')],'include':_0x4a5a84[_0x348e('0x1a')]?_['map'](_0x4a5a84[_0x348e('0x1a')],function(_0x845e7f){return{'model':db[_0x845e7f[_0x348e('0x1b')]],'as':_0x845e7f['as'],'attributes':_0x845e7f['attributes'],'include':_0x845e7f[_0x348e('0x1a')]?_[_0x348e('0x19')](_0x845e7f[_0x348e('0x1a')],function(_0x23bed7){return{'model':db[_0x23bed7['model']],'as':_0x23bed7['as'],'attributes':_0x23bed7[_0x348e('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x348e('0x9')](function(_0x13eabb){logger[_0x348e('0xa')](_0x348e('0x14'),_0x409ea8);logger[_0x348e('0xd')](_0x348e('0x14'),_0x409ea8,JSON['stringify'](_0x13eabb));_0x2326bc(_0x13eabb);})[_0x348e('0x1d')](function(_0xcf7f99){logger['error'](_0x348e('0x14'),_0xcf7f99[_0x348e('0x12')],_0x409ea8);_0x548e17(_0x57a6fa['error'](0x1f4,_0xcf7f99[_0x348e('0x12')]));});});};exports[_0x348e('0x1e')]=function(_0x4b6dc4){var _0x408641=this;return new Promise(function(_0x369740,_0x2f909d){return db[_0x348e('0x1f')][_0x348e('0x20')](_0x4b6dc4[_0x348e('0x21')],{'raw':_0x4b6dc4[_0x348e('0x15')]?_0x4b6dc4['options']['raw']===undefined?!![]:![]:!![]})['then'](function(_0x191ccd){logger[_0x348e('0xa')](_0x348e('0x1e'),_0x4b6dc4);logger['debug'](_0x348e('0x1e'),_0x4b6dc4,JSON['stringify'](_0x191ccd));_0x369740(_0x191ccd);})['catch'](function(_0x251b0e){logger[_0x348e('0x10')](_0x348e('0x1e'),_0x251b0e[_0x348e('0x12')],_0x4b6dc4);_0x2f909d(_0x408641['error'](0x1f4,_0x251b0e[_0x348e('0x12')]));});});};exports[_0x348e('0x22')]=function(_0x1742f9){var _0x990733=this;return new Promise(function(_0x445c30,_0x3a3b2c){return db[_0x348e('0x1f')][_0x348e('0x23')](_0x1742f9['body'],{'raw':_0x1742f9['options']?_0x1742f9[_0x348e('0x15')][_0x348e('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1742f9[_0x348e('0x15')]?_0x1742f9[_0x348e('0x15')][_0x348e('0x17')]||null:null,'attributes':_0x1742f9[_0x348e('0x15')]?_0x1742f9['options'][_0x348e('0x1c')]||null:null,'limit':_0x1742f9[_0x348e('0x15')]?_0x1742f9[_0x348e('0x15')]['limit']||null:null})[_0x348e('0x9')](function(_0xca0c30){logger[_0x348e('0xa')](_0x348e('0x22'),_0x1742f9);logger[_0x348e('0xd')](_0x348e('0x22'),_0x1742f9,JSON[_0x348e('0xf')](_0xca0c30));_0x445c30(_0xca0c30);})['catch'](function(_0x37a7e7){logger[_0x348e('0x10')]('UpdateMemberReport',_0x37a7e7[_0x348e('0x12')],_0x1742f9);_0x3a3b2c(_0x990733[_0x348e('0x10')](0x1f4,_0x37a7e7[_0x348e('0x12')]));});});};
\ No newline at end of file
+var _0x806b=['request\x20sent','MemberReport,\x20%s,\x20%s,\x20%s','stringify','error','MemberReport,\x20%s,\x20%s','message','GetMemberReport','MemberReport','findAll','options','raw','where','attributes','limit','map','include','model','debug','catch','CreateMemberReport','body','UpdateMemberReport','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info'];(function(_0x301f7c,_0x462f8b){var _0xc05c41=function(_0x20e539){while(--_0x20e539){_0x301f7c['push'](_0x301f7c['shift']());}};_0xc05c41(++_0x462f8b);}(_0x806b,0x163));var _0xb806=function(_0x3f5443,_0x501b0b){_0x3f5443=_0x3f5443-0x0;var _0x45c9f0=_0x806b[_0x3f5443];return _0x45c9f0;};'use strict';var _=require(_0xb806('0x0'));var util=require(_0xb806('0x1'));var moment=require(_0xb806('0x2'));var BPromise=require(_0xb806('0x3'));var rs=require(_0xb806('0x4'));var fs=require('fs');var Redis=require(_0xb806('0x5'));var db=require(_0xb806('0x6'))['db'];var utils=require(_0xb806('0x7'));var logger=require('../../config/logger')(_0xb806('0x8'));var config=require(_0xb806('0x9'));var jayson=require(_0xb806('0xa'));var client=jayson[_0xb806('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x9b2858,_0x46050f,_0x4fdc38){return new BPromise(function(_0x3525e8,_0x116ef4){return client[_0xb806('0xc')](_0x9b2858,_0x4fdc38)[_0xb806('0xd')](function(_0x5511f4){logger[_0xb806('0xe')]('MemberReport,\x20%s,\x20%s',_0x46050f,_0xb806('0xf'));logger['debug'](_0xb806('0x10'),_0x46050f,'request\x20sent',JSON[_0xb806('0x11')](_0x5511f4));if(_0x5511f4[_0xb806('0x12')]){if(_0x5511f4[_0xb806('0x12')]['code']===0x1f4){logger[_0xb806('0x12')](_0xb806('0x13'),_0x46050f,_0x5511f4['error'][_0xb806('0x14')]);return _0x116ef4(_0x5511f4[_0xb806('0x12')]['message']);}logger[_0xb806('0x12')](_0xb806('0x13'),_0x46050f,_0x5511f4['error'][_0xb806('0x14')]);return _0x3525e8(_0x5511f4[_0xb806('0x12')][_0xb806('0x14')]);}else{logger[_0xb806('0xe')](_0xb806('0x13'),_0x46050f,'request\x20sent');_0x3525e8(_0x5511f4['result'][_0xb806('0x14')]);}})['catch'](function(_0x131447){logger[_0xb806('0x12')](_0xb806('0x13'),_0x46050f,_0x131447);_0x116ef4(_0x131447);});});}exports[_0xb806('0x15')]=function(_0x5375c1){var _0x40635c=this;return new Promise(function(_0x1e17d2,_0x269e2b){return db[_0xb806('0x16')][_0xb806('0x17')]({'raw':_0x5375c1[_0xb806('0x18')]?_0x5375c1['options'][_0xb806('0x19')]===undefined?!![]:![]:!![],'where':_0x5375c1[_0xb806('0x18')]?_0x5375c1['options'][_0xb806('0x1a')]||null:null,'attributes':_0x5375c1[_0xb806('0x18')]?_0x5375c1[_0xb806('0x18')][_0xb806('0x1b')]||null:null,'limit':_0x5375c1['options']?_0x5375c1[_0xb806('0x18')][_0xb806('0x1c')]||null:null,'include':_0x5375c1[_0xb806('0x18')]?_0x5375c1['options']['include']?_[_0xb806('0x1d')](_0x5375c1[_0xb806('0x18')]['include'],function(_0x570837){return{'model':db[_0x570837['model']],'as':_0x570837['as'],'attributes':_0x570837[_0xb806('0x1b')],'include':_0x570837['include']?_['map'](_0x570837[_0xb806('0x1e')],function(_0x3c4556){return{'model':db[_0x3c4556[_0xb806('0x1f')]],'as':_0x3c4556['as'],'attributes':_0x3c4556[_0xb806('0x1b')],'include':_0x3c4556[_0xb806('0x1e')]?_[_0xb806('0x1d')](_0x3c4556[_0xb806('0x1e')],function(_0xcd8bb7){return{'model':db[_0xcd8bb7[_0xb806('0x1f')]],'as':_0xcd8bb7['as'],'attributes':_0xcd8bb7['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x481826){logger['info'](_0xb806('0x15'),_0x5375c1);logger[_0xb806('0x20')]('GetMemberReport',_0x5375c1,JSON[_0xb806('0x11')](_0x481826));_0x1e17d2(_0x481826);})[_0xb806('0x21')](function(_0x34d9e1){logger['error'](_0xb806('0x15'),_0x34d9e1[_0xb806('0x14')],_0x5375c1);_0x269e2b(_0x40635c['error'](0x1f4,_0x34d9e1[_0xb806('0x14')]));});});};exports[_0xb806('0x22')]=function(_0x249ec5){var _0x4471c5=this;return new Promise(function(_0x4342bf,_0xb24e1c){return db[_0xb806('0x16')]['create'](_0x249ec5[_0xb806('0x23')],{'raw':_0x249ec5[_0xb806('0x18')]?_0x249ec5[_0xb806('0x18')]['raw']===undefined?!![]:![]:!![]})[_0xb806('0xd')](function(_0x28aecf){logger['info'](_0xb806('0x22'),_0x249ec5);logger['debug'](_0xb806('0x22'),_0x249ec5,JSON[_0xb806('0x11')](_0x28aecf));_0x4342bf(_0x28aecf);})[_0xb806('0x21')](function(_0x2fa01e){logger[_0xb806('0x12')]('CreateMemberReport',_0x2fa01e[_0xb806('0x14')],_0x249ec5);_0xb24e1c(_0x4471c5[_0xb806('0x12')](0x1f4,_0x2fa01e[_0xb806('0x14')]));});});};exports[_0xb806('0x24')]=function(_0x38c579){var _0x15e4e6=this;return new Promise(function(_0x287c56,_0x65645a){return db[_0xb806('0x16')]['update'](_0x38c579[_0xb806('0x23')],{'raw':_0x38c579[_0xb806('0x18')]?_0x38c579[_0xb806('0x18')][_0xb806('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x38c579[_0xb806('0x18')]?_0x38c579[_0xb806('0x18')][_0xb806('0x1a')]||null:null,'attributes':_0x38c579[_0xb806('0x18')]?_0x38c579[_0xb806('0x18')]['attributes']||null:null,'limit':_0x38c579[_0xb806('0x18')]?_0x38c579[_0xb806('0x18')][_0xb806('0x1c')]||null:null})[_0xb806('0xd')](function(_0x8b4ac2){logger[_0xb806('0xe')](_0xb806('0x24'),_0x38c579);logger[_0xb806('0x20')](_0xb806('0x24'),_0x38c579,JSON[_0xb806('0x11')](_0x8b4ac2));_0x287c56(_0x8b4ac2);})[_0xb806('0x21')](function(_0xb21b08){logger[_0xb806('0x12')](_0xb806('0x24'),_0xb21b08[_0xb806('0x14')],_0x38c579);_0x65645a(_0x15e4e6['error'](0x1f4,_0xb21b08[_0xb806('0x14')]));});});};
\ No newline at end of file
index b4d6930..479b2c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc283=['../../components/auth/service','../../config/environment','./migration.controller','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x198489,_0x3f8fc4){var _0x367cad=function(_0x1a33ec){while(--_0x1a33ec){_0x198489['push'](_0x198489['shift']());}};_0x367cad(++_0x3f8fc4);}(_0xc283,0x189));var _0x3c28=function(_0x50370d,_0x2aafef){_0x50370d=_0x50370d-0x0;var _0x22c52d=_0xc283[_0x50370d];return _0x22c52d;};'use strict';var multer=require(_0x3c28('0x0'));var util=require(_0x3c28('0x1'));var path=require(_0x3c28('0x2'));var timeout=require(_0x3c28('0x3'));var express=require(_0x3c28('0x4'));var router=express[_0x3c28('0x5')]();var fs_extra=require(_0x3c28('0x6'));var auth=require(_0x3c28('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x3c28('0x8'));var controller=require(_0x3c28('0x9'));router['get']('/',controller['index']);module['exports']=router;
\ No newline at end of file
+var _0xc61a=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','index'];(function(_0x4e35ed,_0x466703){var _0x3d8462=function(_0x2d50b1){while(--_0x2d50b1){_0x4e35ed['push'](_0x4e35ed['shift']());}};_0x3d8462(++_0x466703);}(_0xc61a,0x6e));var _0xac61=function(_0x363319,_0x4fa1a1){_0x363319=_0x363319-0x0;var _0x182a62=_0xc61a[_0x363319];return _0x182a62;};'use strict';var multer=require('multer');var util=require(_0xac61('0x0'));var path=require(_0xac61('0x1'));var timeout=require(_0xac61('0x2'));var express=require(_0xac61('0x3'));var router=express[_0xac61('0x4')]();var fs_extra=require(_0xac61('0x5'));var auth=require(_0xac61('0x6'));var interaction=require(_0xac61('0x7'));var config=require('../../config/environment');var controller=require('./migration.controller');router[_0xac61('0x8')]('/',controller[_0xac61('0x9')]);module['exports']=router;
\ No newline at end of file
index 96afb7c..70fec6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd495=['STRING','sequelize'];(function(_0x1e9963,_0x2d628f){var _0x4c73d9=function(_0x2e7532){while(--_0x2e7532){_0x1e9963['push'](_0x1e9963['shift']());}};_0x4c73d9(++_0x2d628f);}(_0xd495,0x1d1));var _0x5d49=function(_0x2891d1,_0x2ddd3e){_0x2891d1=_0x2891d1-0x0;var _0x486948=_0xd495[_0x2891d1];return _0x486948;};'use strict';var Sequelize=require(_0x5d49('0x0'));module['exports']={'version':{'type':Sequelize[_0x5d49('0x1')],'unique':'version'}};
\ No newline at end of file
+var _0x8176=['sequelize','exports','version'];(function(_0x3054be,_0x1bdc8b){var _0x3df150=function(_0x56cfbf){while(--_0x56cfbf){_0x3054be['push'](_0x3054be['shift']());}};_0x3df150(++_0x1bdc8b);}(_0x8176,0x9c));var _0x6817=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0x8176[_0x13ea00];return _0x1f7347;};'use strict';var Sequelize=require(_0x6817('0x0'));module[_0x6817('0x1')]={'version':{'type':Sequelize['STRING'],'unique':_0x6817('0x2')}};
\ No newline at end of file
index c54240f..3602944 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9d5=['index','map','Migration','type','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','reject','then','sendStatus','error','stack','name'];(function(_0x194599,_0x3fa008){var _0x81bf4c=function(_0x4f7e13){while(--_0x4f7e13){_0x194599['push'](_0x194599['shift']());}};_0x81bf4c(++_0x3fa008);}(_0xf9d5,0x122));var _0x5f9d=function(_0x477cd0,_0x46a464){_0x477cd0=_0x477cd0-0x0;var _0x43b0da=_0xf9d5[_0x477cd0];return _0x43b0da;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5f9d('0x0'));var zipdir=require(_0x5f9d('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5f9d('0x2'));var moment=require(_0x5f9d('0x3'));var BPromise=require(_0x5f9d('0x4'));var Mustache=require(_0x5f9d('0x5'));var util=require(_0x5f9d('0x6'));var path=require(_0x5f9d('0x7'));var sox=require(_0x5f9d('0x8'));var csv=require('to-csv');var ejs=require(_0x5f9d('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5f9d('0xa'));var squel=require(_0x5f9d('0xb'));var crypto=require('crypto');var jsforce=require(_0x5f9d('0xc'));var deskjs=require(_0x5f9d('0xd'));var toCsv=require(_0x5f9d('0xe'));var querystring=require(_0x5f9d('0xf'));var Papa=require(_0x5f9d('0x10'));var Redis=require(_0x5f9d('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x5f9d('0x12'));var as=require(_0x5f9d('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x5f9d('0x14'));var utils=require(_0x5f9d('0x15'));var config=require(_0x5f9d('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x5f9d('0x17'))['db'];function respondWithStatusCode(_0x10f5b1,_0x257910){_0x257910=_0x257910||0xcc;return function(_0x23a39f){if(_0x23a39f){return _0x10f5b1['sendStatus'](_0x257910);}return _0x10f5b1[_0x5f9d('0x18')](_0x257910)[_0x5f9d('0x19')]();};}function respondWithResult(_0x234902,_0x5aacdc){_0x5aacdc=_0x5aacdc||0xc8;return function(_0x8e2381){if(_0x8e2381){return _0x234902[_0x5f9d('0x18')](_0x5aacdc)['json'](_0x8e2381);}};}function respondWithFilteredResult(_0x4fd1cb,_0x2f0154){return function(_0x334cea){if(_0x334cea){var _0x3d4a1c=typeof _0x2f0154[_0x5f9d('0x1a')]===_0x5f9d('0x1b')&&typeof _0x2f0154['limit']==='undefined';var _0x54bd00=_0x334cea[_0x5f9d('0x1c')];var _0x4fb9a5=_0x3d4a1c?0x0:_0x2f0154[_0x5f9d('0x1a')];var _0x48448e=_0x3d4a1c?_0x334cea[_0x5f9d('0x1c')]:_0x2f0154[_0x5f9d('0x1a')]+_0x2f0154[_0x5f9d('0x1d')];var _0x55a31c;if(_0x48448e>=_0x54bd00){_0x48448e=_0x54bd00;_0x55a31c=0xc8;}else{_0x55a31c=0xce;}_0x4fd1cb[_0x5f9d('0x18')](_0x55a31c);return _0x4fd1cb[_0x5f9d('0x1e')](_0x5f9d('0x1f'),_0x4fb9a5+'-'+_0x48448e+'/'+_0x54bd00)[_0x5f9d('0x20')](_0x334cea);}return null;};}function patchUpdates(_0x320182){return function(_0xa62826){try{jsonpatch[_0x5f9d('0x21')](_0xa62826,_0x320182,!![]);}catch(_0x2563d5){return BPromise[_0x5f9d('0x22')](_0x2563d5);}return _0xa62826['save']();};}function saveUpdates(_0x4a2eeb,_0x5465b1){return function(_0x1bc76b){if(_0x1bc76b){return _0x1bc76b['update'](_0x4a2eeb)[_0x5f9d('0x23')](function(_0x5a3472){return _0x5a3472;});}return null;};}function removeEntity(_0x9d86ce,_0x564886){return function(_0x4875c5){if(_0x4875c5){return _0x4875c5['destroy']()[_0x5f9d('0x23')](function(){_0x9d86ce[_0x5f9d('0x18')](0xcc)[_0x5f9d('0x19')]();});}};}function handleEntityNotFound(_0x234511,_0x542bbc){return function(_0x379d2d){if(!_0x379d2d){_0x234511[_0x5f9d('0x24')](0x194);}return _0x379d2d;};}function handleError(_0x190402,_0x74f212){_0x74f212=_0x74f212||0x1f4;return function(_0x2d097f){logger[_0x5f9d('0x25')](_0x2d097f[_0x5f9d('0x26')]);if(_0x2d097f[_0x5f9d('0x27')]){delete _0x2d097f[_0x5f9d('0x27')];}_0x190402[_0x5f9d('0x18')](_0x74f212)['send'](_0x2d097f);};}exports[_0x5f9d('0x28')]=function(_0x1b9054,_0x1496c0){var _0x13cc7c={},_0x10e542={},_0x24233e={'count':0x0,'rows':[]};var _0x38b10d=_[_0x5f9d('0x29')](db[_0x5f9d('0x2a')]['rawAttributes'],function(_0x4ed27d){return{'name':_0x4ed27d['fieldName'],'type':_0x4ed27d[_0x5f9d('0x2b')]['key']};});_0x10e542[_0x5f9d('0x2c')]=_['map'](_0x38b10d,_0x5f9d('0x27'));_0x10e542['query']=_[_0x5f9d('0x2d')](_0x1b9054[_0x5f9d('0x2e')]);_0x10e542[_0x5f9d('0x2f')]=_[_0x5f9d('0x30')](_0x10e542[_0x5f9d('0x2c')],_0x10e542['query']);_0x13cc7c[_0x5f9d('0x31')]=_['intersection'](_0x10e542[_0x5f9d('0x2c')],qs['fields'](_0x1b9054[_0x5f9d('0x2e')][_0x5f9d('0x32')]));_0x13cc7c['attributes']=_0x13cc7c[_0x5f9d('0x31')][_0x5f9d('0x33')]?_0x13cc7c[_0x5f9d('0x31')]:_0x10e542['model'];if(!_0x1b9054[_0x5f9d('0x2e')][_0x5f9d('0x34')](_0x5f9d('0x35'))){_0x13cc7c[_0x5f9d('0x1d')]=qs[_0x5f9d('0x1d')](_0x1b9054['query'][_0x5f9d('0x1d')]);_0x13cc7c[_0x5f9d('0x1a')]=qs[_0x5f9d('0x1a')](_0x1b9054[_0x5f9d('0x2e')][_0x5f9d('0x1a')]);}_0x13cc7c[_0x5f9d('0x36')]=qs['sort'](_0x1b9054[_0x5f9d('0x2e')][_0x5f9d('0x37')]);_0x13cc7c[_0x5f9d('0x38')]=qs['filters'](_['pick'](_0x1b9054[_0x5f9d('0x2e')],_0x10e542[_0x5f9d('0x2f')]),_0x38b10d);if(_0x1b9054[_0x5f9d('0x2e')][_0x5f9d('0x39')]){_0x13cc7c[_0x5f9d('0x38')]=_['merge'](_0x13cc7c['where'],{'$or':_[_0x5f9d('0x29')](_0x38b10d,function(_0x3c5737){if(_0x3c5737['type']!==_0x5f9d('0x3a')){var _0x4e15be={};_0x4e15be[_0x3c5737[_0x5f9d('0x27')]]={'$like':'%'+_0x1b9054[_0x5f9d('0x2e')]['filter']+'%'};return _0x4e15be;}})});}_0x13cc7c=_[_0x5f9d('0x3b')]({},_0x13cc7c,_0x1b9054[_0x5f9d('0x3c')]);var _0x4d3288={'where':_0x13cc7c['where']};return db[_0x5f9d('0x2a')][_0x5f9d('0x1c')](_0x4d3288)[_0x5f9d('0x23')](function(_0x3c43f6){_0x24233e[_0x5f9d('0x1c')]=_0x3c43f6;if(_0x1b9054[_0x5f9d('0x2e')][_0x5f9d('0x3d')]){_0x13cc7c[_0x5f9d('0x3e')]=[{'all':!![]}];}return db[_0x5f9d('0x2a')][_0x5f9d('0x3f')](_0x13cc7c);})[_0x5f9d('0x23')](function(_0x227ef6){_0x24233e[_0x5f9d('0x40')]=_0x227ef6;return _0x24233e;})[_0x5f9d('0x23')](respondWithFilteredResult(_0x1496c0,_0x13cc7c))[_0x5f9d('0x41')](handleError(_0x1496c0,null));};
\ No newline at end of file
+var _0x1236=['destroy','error','name','index','map','rawAttributes','fieldName','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','Migration','includeAll','include','findAll','rows','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','fs-extra','lodash','squel','crypto','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','end','status','offset','undefined','count','set','json','apply','save','update','then'];(function(_0x3872af,_0x40ac0b){var _0x305e8d=function(_0xca492c){while(--_0xca492c){_0x3872af['push'](_0x3872af['shift']());}};_0x305e8d(++_0x40ac0b);}(_0x1236,0xab));var _0x6123=function(_0x49350e,_0x5c6395){_0x49350e=_0x49350e-0x0;var _0x478afa=_0x1236[_0x49350e];return _0x478afa;};'use strict';var emlformat=require(_0x6123('0x0'));var rimraf=require(_0x6123('0x1'));var zipdir=require(_0x6123('0x2'));var jsonpatch=require(_0x6123('0x3'));var rp=require(_0x6123('0x4'));var moment=require('moment');var BPromise=require(_0x6123('0x5'));var Mustache=require(_0x6123('0x6'));var util=require(_0x6123('0x7'));var path=require('path');var sox=require(_0x6123('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6123('0x9'));var _=require(_0x6123('0xa'));var squel=require(_0x6123('0xb'));var crypto=require(_0x6123('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x6123('0xd'));var querystring=require(_0x6123('0xe'));var Papa=require('papaparse');var Redis=require(_0x6123('0xf'));var authService=require(_0x6123('0x10'));var qs=require(_0x6123('0x11'));var as=require(_0x6123('0x12'));var hardwareService=require(_0x6123('0x13'));var logger=require(_0x6123('0x14'))(_0x6123('0x15'));var utils=require(_0x6123('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x6123('0x17'))['db'];function respondWithStatusCode(_0x2242c0,_0x3623f2){_0x3623f2=_0x3623f2||0xcc;return function(_0x2d363d){if(_0x2d363d){return _0x2242c0[_0x6123('0x18')](_0x3623f2);}return _0x2242c0['status'](_0x3623f2)[_0x6123('0x19')]();};}function respondWithResult(_0x28a090,_0x1157f5){_0x1157f5=_0x1157f5||0xc8;return function(_0x95b668){if(_0x95b668){return _0x28a090[_0x6123('0x1a')](_0x1157f5)['json'](_0x95b668);}};}function respondWithFilteredResult(_0x3d7d39,_0x121513){return function(_0x45dd02){if(_0x45dd02){var _0x4e7d0b=typeof _0x121513[_0x6123('0x1b')]==='undefined'&&typeof _0x121513['limit']===_0x6123('0x1c');var _0x38f9dd=_0x45dd02[_0x6123('0x1d')];var _0x132b96=_0x4e7d0b?0x0:_0x121513[_0x6123('0x1b')];var _0x2ec117=_0x4e7d0b?_0x45dd02['count']:_0x121513[_0x6123('0x1b')]+_0x121513['limit'];var _0x43211e;if(_0x2ec117>=_0x38f9dd){_0x2ec117=_0x38f9dd;_0x43211e=0xc8;}else{_0x43211e=0xce;}_0x3d7d39['status'](_0x43211e);return _0x3d7d39[_0x6123('0x1e')]('Content-Range',_0x132b96+'-'+_0x2ec117+'/'+_0x38f9dd)[_0x6123('0x1f')](_0x45dd02);}return null;};}function patchUpdates(_0x3cb4b4){return function(_0x5c0e0e){try{jsonpatch[_0x6123('0x20')](_0x5c0e0e,_0x3cb4b4,!![]);}catch(_0x4198de){return BPromise['reject'](_0x4198de);}return _0x5c0e0e[_0x6123('0x21')]();};}function saveUpdates(_0x800091,_0x5593f9){return function(_0x580b4d){if(_0x580b4d){return _0x580b4d[_0x6123('0x22')](_0x800091)[_0x6123('0x23')](function(_0x1b77e9){return _0x1b77e9;});}return null;};}function removeEntity(_0x13a82d,_0x22721c){return function(_0x5c9ac0){if(_0x5c9ac0){return _0x5c9ac0[_0x6123('0x24')]()[_0x6123('0x23')](function(){_0x13a82d[_0x6123('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x40c57c,_0x1f1be6){return function(_0x102504){if(!_0x102504){_0x40c57c[_0x6123('0x18')](0x194);}return _0x102504;};}function handleError(_0x38d578,_0x2d3b74){_0x2d3b74=_0x2d3b74||0x1f4;return function(_0x247a77){logger[_0x6123('0x25')](_0x247a77['stack']);if(_0x247a77['name']){delete _0x247a77[_0x6123('0x26')];}_0x38d578[_0x6123('0x1a')](_0x2d3b74)['send'](_0x247a77);};}exports[_0x6123('0x27')]=function(_0x15353f,_0x4d26d7){var _0x23804d={},_0xee599e={},_0x2a8e20={'count':0x0,'rows':[]};var _0x7f7b7d=_[_0x6123('0x28')](db['Migration'][_0x6123('0x29')],function(_0x3b9f63){return{'name':_0x3b9f63[_0x6123('0x2a')],'type':_0x3b9f63['type'][_0x6123('0x2b')]};});_0xee599e['model']=_['map'](_0x7f7b7d,_0x6123('0x26'));_0xee599e[_0x6123('0x2c')]=_[_0x6123('0x2d')](_0x15353f[_0x6123('0x2c')]);_0xee599e[_0x6123('0x2e')]=_[_0x6123('0x2f')](_0xee599e[_0x6123('0x30')],_0xee599e[_0x6123('0x2c')]);_0x23804d['attributes']=_['intersection'](_0xee599e['model'],qs[_0x6123('0x31')](_0x15353f['query'][_0x6123('0x31')]));_0x23804d[_0x6123('0x32')]=_0x23804d['attributes'][_0x6123('0x33')]?_0x23804d[_0x6123('0x32')]:_0xee599e[_0x6123('0x30')];if(!_0x15353f[_0x6123('0x2c')][_0x6123('0x34')](_0x6123('0x35'))){_0x23804d[_0x6123('0x36')]=qs[_0x6123('0x36')](_0x15353f[_0x6123('0x2c')][_0x6123('0x36')]);_0x23804d[_0x6123('0x1b')]=qs[_0x6123('0x1b')](_0x15353f[_0x6123('0x2c')][_0x6123('0x1b')]);}_0x23804d[_0x6123('0x37')]=qs['sort'](_0x15353f[_0x6123('0x2c')][_0x6123('0x38')]);_0x23804d[_0x6123('0x39')]=qs[_0x6123('0x2e')](_[_0x6123('0x3a')](_0x15353f[_0x6123('0x2c')],_0xee599e[_0x6123('0x2e')]),_0x7f7b7d);if(_0x15353f['query'][_0x6123('0x3b')]){_0x23804d[_0x6123('0x39')]=_[_0x6123('0x3c')](_0x23804d[_0x6123('0x39')],{'$or':_[_0x6123('0x28')](_0x7f7b7d,function(_0x4ad0da){if(_0x4ad0da['type']!==_0x6123('0x3d')){var _0x2a3f84={};_0x2a3f84[_0x4ad0da[_0x6123('0x26')]]={'$like':'%'+_0x15353f['query'][_0x6123('0x3b')]+'%'};return _0x2a3f84;}})});}_0x23804d=_[_0x6123('0x3c')]({},_0x23804d,_0x15353f[_0x6123('0x3e')]);var _0x2f6794={'where':_0x23804d[_0x6123('0x39')]};return db[_0x6123('0x3f')][_0x6123('0x1d')](_0x2f6794)[_0x6123('0x23')](function(_0x5dfb3f){_0x2a8e20[_0x6123('0x1d')]=_0x5dfb3f;if(_0x15353f['query'][_0x6123('0x40')]){_0x23804d[_0x6123('0x41')]=[{'all':!![]}];}return db['Migration'][_0x6123('0x42')](_0x23804d);})[_0x6123('0x23')](function(_0xcbaea7){_0x2a8e20[_0x6123('0x43')]=_0xcbaea7;return _0x2a8e20;})[_0x6123('0x23')](respondWithFilteredResult(_0x4d26d7,_0x23804d))[_0x6123('0x44')](handleError(_0x4d26d7,null));};
\ No newline at end of file
index 4bd73c0..91c3f8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6203=['./migration.attributes','exports','Migration','migrations','lodash','../../config/logger','api','request-promise','rimraf','../../config/environment'];(function(_0x1e2415,_0xf9d99f){var _0x26801b=function(_0x332896){while(--_0x332896){_0x1e2415['push'](_0x1e2415['shift']());}};_0x26801b(++_0xf9d99f);}(_0x6203,0xe0));var _0x3620=function(_0x1e0427,_0x217d05){_0x1e0427=_0x1e0427-0x0;var _0x4821c5=_0x6203[_0x1e0427];return _0x4821c5;};'use strict';var _=require(_0x3620('0x0'));var util=require('util');var logger=require(_0x3620('0x1'))(_0x3620('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x3620('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3620('0x4'));var config=require(_0x3620('0x5'));var attributes=require(_0x3620('0x6'));module[_0x3620('0x7')]=function(_0x5e7a31,_0x24802c){return _0x5e7a31['define'](_0x3620('0x8'),attributes,{'tableName':_0x3620('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd5d2=['./migration.attributes','exports','Migration','lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x343f71,_0x5a8ab4){var _0x387ea5=function(_0xfd575f){while(--_0xfd575f){_0x343f71['push'](_0x343f71['shift']());}};_0x387ea5(++_0x5a8ab4);}(_0xd5d2,0x1dc));var _0x2d5d=function(_0x164059,_0xa3c4ca){_0x164059=_0x164059-0x0;var _0x816457=_0xd5d2[_0x164059];return _0x816457;};'use strict';var _=require(_0x2d5d('0x0'));var util=require(_0x2d5d('0x1'));var logger=require('../../config/logger')(_0x2d5d('0x2'));var moment=require(_0x2d5d('0x3'));var BPromise=require(_0x2d5d('0x4'));var rp=require(_0x2d5d('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2d5d('0x6'));var config=require(_0x2d5d('0x7'));var attributes=require(_0x2d5d('0x8'));module[_0x2d5d('0x9')]=function(_0x49ed35,_0x95e023){return _0x49ed35['define'](_0x2d5d('0xa'),attributes,{'tableName':'migrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d6f870e..52e4f62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79d8=['moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','Migration,\x20%s,\x20%s','Migration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash','util'];(function(_0x362000,_0xa7b6a){var _0xdb74ac=function(_0x594ddf){while(--_0x594ddf){_0x362000['push'](_0x362000['shift']());}};_0xdb74ac(++_0xa7b6a);}(_0x79d8,0x67));var _0x879d=function(_0x29fa41,_0x3c1e25){_0x29fa41=_0x29fa41-0x0;var _0x1d6938=_0x79d8[_0x29fa41];return _0x1d6938;};'use strict';var _=require(_0x879d('0x0'));var util=require(_0x879d('0x1'));var moment=require(_0x879d('0x2'));var BPromise=require(_0x879d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x879d('0x4'));var db=require(_0x879d('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x879d('0x6'))(_0x879d('0x7'));var config=require(_0x879d('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x879d('0x9')][_0x879d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x142181,_0xc70b64,_0x49c05d){return new BPromise(function(_0x257050,_0x154db7){return client[_0x879d('0xb')](_0x142181,_0x49c05d)[_0x879d('0xc')](function(_0x2d5fbc){logger['info'](_0x879d('0xd'),_0xc70b64,'request\x20sent');logger['debug'](_0x879d('0xe'),_0xc70b64,_0x879d('0xf'),JSON[_0x879d('0x10')](_0x2d5fbc));if(_0x2d5fbc['error']){if(_0x2d5fbc[_0x879d('0x11')][_0x879d('0x12')]===0x1f4){logger['error'](_0x879d('0xd'),_0xc70b64,_0x2d5fbc[_0x879d('0x11')]['message']);return _0x154db7(_0x2d5fbc[_0x879d('0x11')]['message']);}logger[_0x879d('0x11')](_0x879d('0xd'),_0xc70b64,_0x2d5fbc[_0x879d('0x11')][_0x879d('0x13')]);return _0x257050(_0x2d5fbc[_0x879d('0x11')][_0x879d('0x13')]);}else{logger['info']('Migration,\x20%s,\x20%s',_0xc70b64,_0x879d('0xf'));_0x257050(_0x2d5fbc[_0x879d('0x14')]['message']);}})['catch'](function(_0x7478cd){logger[_0x879d('0x11')](_0x879d('0xd'),_0xc70b64,_0x7478cd);_0x154db7(_0x7478cd);});});}
\ No newline at end of file
+var _0x8eeb=['http','request','then','info','request\x20sent','debug','Migration,\x20%s,\x20%s,\x20%s','stringify','error','code','Migration,\x20%s,\x20%s','message','result','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise'];(function(_0x1ccdae,_0x385fb6){var _0x1e804e=function(_0x1ef978){while(--_0x1ef978){_0x1ccdae['push'](_0x1ccdae['shift']());}};_0x1e804e(++_0x385fb6);}(_0x8eeb,0x183));var _0xb8ee=function(_0x33ba1f,_0x442df1){_0x33ba1f=_0x33ba1f-0x0;var _0x2ff306=_0x8eeb[_0x33ba1f];return _0x2ff306;};'use strict';var _=require(_0xb8ee('0x0'));var util=require('util');var moment=require(_0xb8ee('0x1'));var BPromise=require(_0xb8ee('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb8ee('0x3'));var db=require(_0xb8ee('0x4'))['db'];var utils=require(_0xb8ee('0x5'));var logger=require(_0xb8ee('0x6'))(_0xb8ee('0x7'));var config=require('../../config/environment');var jayson=require(_0xb8ee('0x8'));var client=jayson['client'][_0xb8ee('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x30dff7,_0x430b38,_0x469393){return new BPromise(function(_0x4e2428,_0x27243c){return client[_0xb8ee('0xa')](_0x30dff7,_0x469393)[_0xb8ee('0xb')](function(_0x5ea3ab){logger[_0xb8ee('0xc')]('Migration,\x20%s,\x20%s',_0x430b38,_0xb8ee('0xd'));logger[_0xb8ee('0xe')](_0xb8ee('0xf'),_0x430b38,_0xb8ee('0xd'),JSON[_0xb8ee('0x10')](_0x5ea3ab));if(_0x5ea3ab[_0xb8ee('0x11')]){if(_0x5ea3ab[_0xb8ee('0x11')][_0xb8ee('0x12')]===0x1f4){logger['error'](_0xb8ee('0x13'),_0x430b38,_0x5ea3ab[_0xb8ee('0x11')][_0xb8ee('0x14')]);return _0x27243c(_0x5ea3ab[_0xb8ee('0x11')][_0xb8ee('0x14')]);}logger[_0xb8ee('0x11')]('Migration,\x20%s,\x20%s',_0x430b38,_0x5ea3ab[_0xb8ee('0x11')][_0xb8ee('0x14')]);return _0x4e2428(_0x5ea3ab[_0xb8ee('0x11')][_0xb8ee('0x14')]);}else{logger[_0xb8ee('0xc')](_0xb8ee('0x13'),_0x430b38,_0xb8ee('0xd'));_0x4e2428(_0x5ea3ab[_0xb8ee('0x15')][_0xb8ee('0x14')]);}})['catch'](function(_0x135d5d){logger['error']('Migration,\x20%s,\x20%s',_0x430b38,_0x135d5d);_0x27243c(_0x135d5d);});});}
\ No newline at end of file
index 91df41a..3c9a8e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf8d=['put','/:id','update','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','post','create'];(function(_0x17ed9e,_0x493e01){var _0x42fb55=function(_0x370846){while(--_0x370846){_0x17ed9e['push'](_0x17ed9e['shift']());}};_0x42fb55(++_0x493e01);}(_0xdf8d,0x1e0));var _0xddf8=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0xdf8d[_0x8c43de];return _0xa6591b;};'use strict';var multer=require(_0xddf8('0x0'));var util=require(_0xddf8('0x1'));var path=require('path');var timeout=require(_0xddf8('0x2'));var express=require(_0xddf8('0x3'));var router=express['Router']();var fs_extra=require(_0xddf8('0x4'));var auth=require(_0xddf8('0x5'));var interaction=require(_0xddf8('0x6'));var config=require(_0xddf8('0x7'));var controller=require('./network.controller');router[_0xddf8('0x8')]('/',auth[_0xddf8('0x9')](),controller[_0xddf8('0xa')]);router[_0xddf8('0x8')]('/:id',auth['isAuthenticated'](),controller[_0xddf8('0xb')]);router[_0xddf8('0xc')]('/',auth[_0xddf8('0x9')](),controller[_0xddf8('0xd')]);router[_0xddf8('0xe')](_0xddf8('0xf'),auth[_0xddf8('0x9')](),controller[_0xddf8('0x10')]);router['delete'](_0xddf8('0xf'),auth[_0xddf8('0x9')](),controller[_0xddf8('0x11')]);module[_0xddf8('0x12')]=router;
\ No newline at end of file
+var _0x29b1=['show','post','put','update','destroy','util','Router','fs-extra','../../components/auth/service','../../config/environment','./network.controller','get','isAuthenticated','/:id'];(function(_0x3df223,_0x1740fc){var _0x562d11=function(_0x343009){while(--_0x343009){_0x3df223['push'](_0x3df223['shift']());}};_0x562d11(++_0x1740fc);}(_0x29b1,0xbb));var _0x129b=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0x29b1[_0x580576];return _0x3f55a0;};'use strict';var multer=require('multer');var util=require(_0x129b('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x129b('0x1')]();var fs_extra=require(_0x129b('0x2'));var auth=require(_0x129b('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x129b('0x4'));var controller=require(_0x129b('0x5'));router[_0x129b('0x6')]('/',auth[_0x129b('0x7')](),controller['index']);router[_0x129b('0x6')](_0x129b('0x8'),auth[_0x129b('0x7')](),controller[_0x129b('0x9')]);router[_0x129b('0xa')]('/',auth['isAuthenticated'](),controller['create']);router[_0x129b('0xb')](_0x129b('0x8'),auth['isAuthenticated'](),controller[_0x129b('0xc')]);router['delete'](_0x129b('0x8'),auth['isAuthenticated'](),controller[_0x129b('0xd')]);module['exports']=router;
\ No newline at end of file
index 60f2d9c..bb943d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x743d=['localnet','stun','turn','STRING','sequelize','exports','ENUM'];(function(_0x1e9322,_0x416ce8){var _0x35d1ad=function(_0x4c98c7){while(--_0x4c98c7){_0x1e9322['push'](_0x1e9322['shift']());}};_0x35d1ad(++_0x416ce8);}(_0x743d,0x185));var _0xd743=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x743d[_0x432682];return _0x463d05;};'use strict';var Sequelize=require(_0xd743('0x0'));module[_0xd743('0x1')]={'type':{'type':Sequelize[_0xd743('0x2')](_0xd743('0x3'),'externip',_0xd743('0x4'),_0xd743('0x5'))},'value':{'type':Sequelize[_0xd743('0x6')]},'username':{'type':Sequelize[_0xd743('0x6')]},'password':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x9e4e=['exports','ENUM','localnet','externip','stun','turn','STRING'];(function(_0x5b1b8c,_0x3f9cfb){var _0x4d04ff=function(_0xd133c7){while(--_0xd133c7){_0x5b1b8c['push'](_0x5b1b8c['shift']());}};_0x4d04ff(++_0x3f9cfb);}(_0x9e4e,0x111));var _0xe9e4=function(_0x16b1b8,_0x432d03){_0x16b1b8=_0x16b1b8-0x0;var _0x558b1e=_0x9e4e[_0x16b1b8];return _0x558b1e;};'use strict';var Sequelize=require('sequelize');module[_0xe9e4('0x0')]={'type':{'type':Sequelize[_0xe9e4('0x1')](_0xe9e4('0x2'),_0xe9e4('0x3'),_0xe9e4('0x4'),_0xe9e4('0x5'))},'value':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xe9e4('0x6')]},'password':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 791d61a..1102d38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43b8=['bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','jayson/promise','client','http','request','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','code','error','message','catch','status','end','json','offset','limit','count','set','Content-Range','apply','reject','save','update','then','sendStatus','stack','name','send','index','Network','rawAttributes','fieldName','type','model','map','query','keys','intersection','attributes','fields','length','nolimit','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','show','params','include','find','create','sequelize','findAll','body','toUpperCase','STUN','readFileSync','join','root','server/files/templates/stun_multiple.ejs','utf8','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','server/files/templates/turn_multiple.ejs','render','/etc/asterisk/turn_xcally.conf','format','chan_sip.so','server/files/templates/network.ejs','/etc/asterisk/sip_xcally_%s.conf','destroy','TURN','toLowerCase','eml-format','rimraf','fast-json-patch','request-promise','moment'];(function(_0x1da04e,_0x31024b){var _0xdd8c41=function(_0x2036f9){while(--_0x2036f9){_0x1da04e['push'](_0x1da04e['shift']());}};_0xdd8c41(++_0x31024b);}(_0x43b8,0x13c));var _0x843b=function(_0x25ef21,_0x235385){_0x25ef21=_0x25ef21-0x0;var _0x54d896=_0x43b8[_0x25ef21];return _0x54d896;};'use strict';var emlformat=require(_0x843b('0x0'));var rimraf=require(_0x843b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x843b('0x2'));var rp=require(_0x843b('0x3'));var moment=require(_0x843b('0x4'));var BPromise=require(_0x843b('0x5'));var Mustache=require(_0x843b('0x6'));var util=require(_0x843b('0x7'));var path=require(_0x843b('0x8'));var sox=require(_0x843b('0x9'));var csv=require(_0x843b('0xa'));var ejs=require(_0x843b('0xb'));var fs=require('fs');var fs_extra=require(_0x843b('0xc'));var _=require(_0x843b('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x843b('0xe'));var deskjs=require(_0x843b('0xf'));var toCsv=require(_0x843b('0xa'));var querystring=require('querystring');var Papa=require(_0x843b('0x10'));var Redis=require(_0x843b('0x11'));var authService=require(_0x843b('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x843b('0x13'));var logger=require('../../config/logger')(_0x843b('0x14'));var utils=require(_0x843b('0x15'));var config=require(_0x843b('0x16'));var licenseUtil=require(_0x843b('0x17'));var db=require('../../mysqldb')['db'];var jayson=require(_0x843b('0x18'));var client=jayson[_0x843b('0x19')][_0x843b('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x541999,_0x55d54b,_0x25542a,_0x43f26a){return new BPromise(function(_0x3f80a0,_0x3cc2e2){var _0x377c5a=_0x43f26a||client;return _0x377c5a[_0x843b('0x1b')](_0x541999,_0x25542a)['then'](function(_0x7540e5){logger[_0x843b('0x1c')](_0x843b('0x1d'),_0x55d54b,_0x843b('0x1e'));logger[_0x843b('0x1f')](_0x843b('0x20'),_0x55d54b,'request\x20sent',JSON[_0x843b('0x21')](_0x7540e5));if(_0x7540e5['error']){if(_0x7540e5['error'][_0x843b('0x22')]===0x1f4){logger[_0x843b('0x23')]('Network,\x20%s,\x20%s',_0x55d54b,_0x7540e5[_0x843b('0x23')][_0x843b('0x24')]);return _0x3cc2e2(_0x7540e5[_0x843b('0x23')]['message']);}logger[_0x843b('0x23')](_0x843b('0x1d'),_0x55d54b,_0x7540e5[_0x843b('0x23')][_0x843b('0x24')]);return _0x3f80a0(_0x7540e5[_0x843b('0x23')][_0x843b('0x24')]);}else{logger[_0x843b('0x1c')](_0x843b('0x1d'),_0x55d54b,_0x843b('0x1e'));_0x3f80a0(_0x7540e5['result'][_0x843b('0x24')]);}})[_0x843b('0x25')](function(_0x104f07){logger[_0x843b('0x23')](_0x843b('0x1d'),_0x55d54b,_0x104f07);_0x3cc2e2(_0x104f07);});});}function respondWithStatusCode(_0x5dfe18,_0xdc0ca7){_0xdc0ca7=_0xdc0ca7||0xcc;return function(_0xb1d454){if(_0xb1d454){return _0x5dfe18['sendStatus'](_0xdc0ca7);}return _0x5dfe18[_0x843b('0x26')](_0xdc0ca7)[_0x843b('0x27')]();};}function respondWithResult(_0x473193,_0x5ac5a8){_0x5ac5a8=_0x5ac5a8||0xc8;return function(_0x4d6b2f){if(_0x4d6b2f){return _0x473193[_0x843b('0x26')](_0x5ac5a8)[_0x843b('0x28')](_0x4d6b2f);}};}function respondWithFilteredResult(_0x40109f,_0x3b9503){return function(_0x25f7e4){if(_0x25f7e4){var _0x1a3804=typeof _0x3b9503[_0x843b('0x29')]==='undefined'&&typeof _0x3b9503[_0x843b('0x2a')]==='undefined';var _0x4e5d3f=_0x25f7e4[_0x843b('0x2b')];var _0x41d021=_0x1a3804?0x0:_0x3b9503['offset'];var _0x3d6c4d=_0x1a3804?_0x25f7e4[_0x843b('0x2b')]:_0x3b9503[_0x843b('0x29')]+_0x3b9503[_0x843b('0x2a')];var _0x5ddaee;if(_0x3d6c4d>=_0x4e5d3f){_0x3d6c4d=_0x4e5d3f;_0x5ddaee=0xc8;}else{_0x5ddaee=0xce;}_0x40109f[_0x843b('0x26')](_0x5ddaee);return _0x40109f[_0x843b('0x2c')](_0x843b('0x2d'),_0x41d021+'-'+_0x3d6c4d+'/'+_0x4e5d3f)[_0x843b('0x28')](_0x25f7e4);}return null;};}function patchUpdates(_0x4d3eee){return function(_0x2ce848){try{jsonpatch[_0x843b('0x2e')](_0x2ce848,_0x4d3eee,!![]);}catch(_0x1a6c89){return BPromise[_0x843b('0x2f')](_0x1a6c89);}return _0x2ce848[_0x843b('0x30')]();};}function saveUpdates(_0x1cc7c9,_0x25a8f7){return function(_0x51375b){if(_0x51375b){return _0x51375b[_0x843b('0x31')](_0x1cc7c9)[_0x843b('0x32')](function(_0x3cbfcc){return _0x3cbfcc;});}return null;};}function removeEntity(_0x1df8b9,_0x2cff87){return function(_0x3f223e){if(_0x3f223e){return _0x3f223e['destroy']()[_0x843b('0x32')](function(){_0x1df8b9[_0x843b('0x26')](0xcc)[_0x843b('0x27')]();});}};}function handleEntityNotFound(_0x1a3ba7,_0x5c04a3){return function(_0x316945){if(!_0x316945){_0x1a3ba7[_0x843b('0x33')](0x194);}return _0x316945;};}function handleError(_0x516077,_0xb16019){_0xb16019=_0xb16019||0x1f4;return function(_0x219bbe){logger['error'](_0x219bbe[_0x843b('0x34')]);if(_0x219bbe[_0x843b('0x35')]){delete _0x219bbe[_0x843b('0x35')];}_0x516077['status'](_0xb16019)[_0x843b('0x36')](_0x219bbe);};}exports[_0x843b('0x37')]=function(_0x62f3bf,_0x113507){var _0x5733e9={},_0x43da2e={},_0x52e92c={'count':0x0,'rows':[]};var _0x3c41b4=_['map'](db[_0x843b('0x38')][_0x843b('0x39')],function(_0x1a88ef){return{'name':_0x1a88ef[_0x843b('0x3a')],'type':_0x1a88ef[_0x843b('0x3b')]['key']};});_0x43da2e[_0x843b('0x3c')]=_[_0x843b('0x3d')](_0x3c41b4,_0x843b('0x35'));_0x43da2e[_0x843b('0x3e')]=_[_0x843b('0x3f')](_0x62f3bf[_0x843b('0x3e')]);_0x43da2e['filters']=_[_0x843b('0x40')](_0x43da2e['model'],_0x43da2e['query']);_0x5733e9[_0x843b('0x41')]=_['intersection'](_0x43da2e[_0x843b('0x3c')],qs[_0x843b('0x42')](_0x62f3bf[_0x843b('0x3e')]['fields']));_0x5733e9[_0x843b('0x41')]=_0x5733e9[_0x843b('0x41')][_0x843b('0x43')]?_0x5733e9[_0x843b('0x41')]:_0x43da2e[_0x843b('0x3c')];if(!_0x62f3bf[_0x843b('0x3e')]['hasOwnProperty'](_0x843b('0x44'))){_0x5733e9[_0x843b('0x2a')]=qs['limit'](_0x62f3bf[_0x843b('0x3e')][_0x843b('0x2a')]);_0x5733e9[_0x843b('0x29')]=qs['offset'](_0x62f3bf['query'][_0x843b('0x29')]);}_0x5733e9['order']=qs[_0x843b('0x45')](_0x62f3bf[_0x843b('0x3e')][_0x843b('0x45')]);_0x5733e9[_0x843b('0x46')]=qs[_0x843b('0x47')](_[_0x843b('0x48')](_0x62f3bf[_0x843b('0x3e')],_0x43da2e[_0x843b('0x47')]),_0x3c41b4);if(_0x62f3bf[_0x843b('0x3e')][_0x843b('0x49')]){_0x5733e9[_0x843b('0x46')]=_['merge'](_0x5733e9['where'],{'$or':_[_0x843b('0x3d')](_0x3c41b4,function(_0x3a1de7){if(_0x3a1de7[_0x843b('0x3b')]!==_0x843b('0x4a')){var _0x4617d7={};_0x4617d7[_0x3a1de7[_0x843b('0x35')]]={'$like':'%'+_0x62f3bf['query'][_0x843b('0x49')]+'%'};return _0x4617d7;}})});}_0x5733e9=_[_0x843b('0x4b')]({},_0x5733e9,_0x62f3bf[_0x843b('0x4c')]);var _0x34d211={'where':_0x5733e9[_0x843b('0x46')]};return db[_0x843b('0x38')][_0x843b('0x2b')](_0x34d211)[_0x843b('0x32')](function(_0xdc1df8){_0x52e92c['count']=_0xdc1df8;if(_0x62f3bf[_0x843b('0x3e')][_0x843b('0x4d')]){_0x5733e9['include']=[{'all':!![]}];}return db['Network']['findAll'](_0x5733e9);})['then'](function(_0x342169){_0x52e92c['rows']=_0x342169;return _0x52e92c;})[_0x843b('0x32')](respondWithFilteredResult(_0x113507,_0x5733e9))[_0x843b('0x25')](handleError(_0x113507,null));};exports[_0x843b('0x4e')]=function(_0x304d05,_0x419d91){var _0x36d82b={'raw':!![],'where':{'id':_0x304d05[_0x843b('0x4f')]['id']}},_0x5cce31={};_0x5cce31[_0x843b('0x3c')]=_[_0x843b('0x3f')](db[_0x843b('0x38')][_0x843b('0x39')]);_0x5cce31[_0x843b('0x3e')]=_[_0x843b('0x3f')](_0x304d05[_0x843b('0x3e')]);_0x5cce31['filters']=_['intersection'](_0x5cce31[_0x843b('0x3c')],_0x5cce31[_0x843b('0x3e')]);_0x36d82b[_0x843b('0x41')]=_[_0x843b('0x40')](_0x5cce31[_0x843b('0x3c')],qs[_0x843b('0x42')](_0x304d05[_0x843b('0x3e')][_0x843b('0x42')]));_0x36d82b[_0x843b('0x41')]=_0x36d82b[_0x843b('0x41')][_0x843b('0x43')]?_0x36d82b[_0x843b('0x41')]:_0x5cce31['model'];if(_0x304d05[_0x843b('0x3e')][_0x843b('0x4d')]){_0x36d82b[_0x843b('0x50')]=[{'all':!![]}];}_0x36d82b=_[_0x843b('0x4b')]({},_0x36d82b,_0x304d05[_0x843b('0x4c')]);return db[_0x843b('0x38')][_0x843b('0x51')](_0x36d82b)['then'](handleEntityNotFound(_0x419d91,null))[_0x843b('0x32')](respondWithResult(_0x419d91,null))['catch'](handleError(_0x419d91,null));};exports[_0x843b('0x52')]=function(_0xdd7518,_0x1c6f36,_0x23ccfc){var _0x570b0b;return db[_0x843b('0x53')]['transaction'](function(_0x1f3e46){return db[_0x843b('0x38')][_0x843b('0x52')](_0xdd7518['body'],{'raw':!![]})[_0x843b('0x32')](function(_0x599b7b){_0x570b0b=_0x599b7b;return db['Network'][_0x843b('0x54')]({'where':{'type':_0xdd7518[_0x843b('0x55')][_0x843b('0x3b')]},'raw':!![]});})[_0x843b('0x32')](function(_0x115d04){if(_0x570b0b[_0x843b('0x3b')][_0x843b('0x56')]()==_0x843b('0x57')){var _0x13cf42=fs[_0x843b('0x58')](path[_0x843b('0x59')](config[_0x843b('0x5a')],_0x843b('0x5b')),_0x843b('0x5c'));var _0x4dc05b=ejs['render'](_0x13cf42,{'networks':_0x115d04||[]});fs[_0x843b('0x5d')](_0x843b('0x5e'),_0x4dc05b);return respondWithRpcPromise(_0x843b('0x5f'),_0x843b('0x52'),{'module':_0x843b('0x60')});}else if(_0x570b0b[_0x843b('0x3b')][_0x843b('0x56')]()=='TURN'){var _0x43edaf=fs['readFileSync'](path['join'](config['root'],_0x843b('0x61')),_0x843b('0x5c'));var _0x21c1ff=ejs[_0x843b('0x62')](_0x43edaf,{'networks':_0x115d04||[]});fs[_0x843b('0x5d')](_0x843b('0x63'),_0x21c1ff);return respondWithRpcPromise('Reload','create',{'module':_0x843b('0x60')});}else{var _0x22dfb2=fs[_0x843b('0x58')](path[_0x843b('0x59')](config['root'],'server/files/templates/network.ejs'),_0x843b('0x5c'));var _0xae2513=ejs[_0x843b('0x62')](_0x22dfb2,{'networks':_0x115d04||[]});fs[_0x843b('0x5d')](util[_0x843b('0x64')]('/etc/asterisk/sip_xcally_%s.conf',_0xdd7518['body'][_0x843b('0x3b')]['toLowerCase']()),_0xae2513);return respondWithRpcPromise(_0x843b('0x5f'),_0x843b('0x52'),{'module':_0x843b('0x65')});}return null;})[_0x843b('0x32')](function(){return _0x570b0b;});})[_0x843b('0x32')](respondWithResult(_0x1c6f36,0xc9))['catch'](handleError(_0x1c6f36,null));};exports[_0x843b('0x31')]=function(_0x487cec,_0x7df9c5,_0x5543d0){var _0x2ad323;return db[_0x843b('0x53')]['transaction'](function(_0x2d254d){return db['Network'][_0x843b('0x51')]({'where':{'id':_0x487cec[_0x843b('0x4f')]['id']}})['then'](handleEntityNotFound(_0x7df9c5,null))[_0x843b('0x32')](saveUpdates(_0x487cec[_0x843b('0x55')],null))[_0x843b('0x32')](function(_0x1343bc){if(_0x1343bc){_0x2ad323=_0x1343bc;return db[_0x843b('0x38')][_0x843b('0x54')]({'where':{'type':_0x2ad323['type']},'raw':!![]});}return null;})['then'](function(_0x168a61){if(_0x2ad323[_0x843b('0x3b')][_0x843b('0x56')]()=='STUN'){var _0x2bebeb=fs[_0x843b('0x58')](path[_0x843b('0x59')](config['root'],'server/files/templates/stun_multiple.ejs'),'utf8');var _0x49fc6d=ejs[_0x843b('0x62')](_0x2bebeb,{'networks':_0x168a61||[]});fs[_0x843b('0x5d')](_0x843b('0x5e'),_0x49fc6d);return respondWithRpcPromise(_0x843b('0x5f'),_0x843b('0x31'),{'module':_0x843b('0x60')});}else if(_0x2ad323[_0x843b('0x3b')]['toUpperCase']()=='TURN'){var _0x3555ac=fs[_0x843b('0x58')](path[_0x843b('0x59')](config[_0x843b('0x5a')],_0x843b('0x61')),_0x843b('0x5c'));var _0x3aee46=ejs['render'](_0x3555ac,{'networks':_0x168a61||[]});fs[_0x843b('0x5d')]('/etc/asterisk/turn_xcally.conf',_0x3aee46);return respondWithRpcPromise('Reload',_0x843b('0x31'),{'module':_0x843b('0x60')});}else{var _0x2ca5ba=fs[_0x843b('0x58')](path[_0x843b('0x59')](config['root'],_0x843b('0x66')),_0x843b('0x5c'));var _0x3ffde5=ejs[_0x843b('0x62')](_0x2ca5ba,{'networks':_0x168a61||[]});fs[_0x843b('0x5d')](util[_0x843b('0x64')](_0x843b('0x67'),_0x487cec['body'][_0x843b('0x3b')]['toLowerCase']()),_0x3ffde5);return respondWithRpcPromise(_0x843b('0x5f'),_0x843b('0x31'),{'module':_0x843b('0x65')});}return null;})[_0x843b('0x32')](function(_0x3b2ac8){if(_0x3b2ac8){return _0x2ad323;}return null;});})[_0x843b('0x32')](respondWithResult(_0x7df9c5,null))[_0x843b('0x25')](handleError(_0x7df9c5,null));};exports[_0x843b('0x68')]=function(_0x42666d,_0x5328ee,_0x557c72){var _0xf4729c;return db['Network']['find']({'where':{'id':_0x42666d['params']['id']}})[_0x843b('0x32')](function(_0x1645f2){_0xf4729c=_0x1645f2;return _0x1645f2;})[_0x843b('0x32')](handleEntityNotFound(_0x5328ee,null))['then'](removeEntity(_0x5328ee,null))[_0x843b('0x32')](function(){if(_0xf4729c){return db[_0x843b('0x38')]['findAll']({'where':{'type':_0xf4729c['type']},'raw':!![]});}})[_0x843b('0x32')](function(_0x4f8619){if(_0xf4729c['type'][_0x843b('0x56')]()==_0x843b('0x57')){var _0x484ef1=fs[_0x843b('0x58')](path[_0x843b('0x59')](config[_0x843b('0x5a')],'server/files/templates/stun_multiple.ejs'),'utf8');var _0x2b8e3d=ejs['render'](_0x484ef1,{'networks':_0x4f8619||[]});fs[_0x843b('0x5d')](_0x843b('0x5e'),_0x2b8e3d);return respondWithRpcPromise(_0x843b('0x5f'),_0x843b('0x68'),{'module':'res_stun_monitor.so'});}else if(_0xf4729c[_0x843b('0x3b')]['toUpperCase']()==_0x843b('0x69')){var _0x260465=fs[_0x843b('0x58')](path[_0x843b('0x59')](config['root'],_0x843b('0x61')),_0x843b('0x5c'));var _0x42d952=ejs[_0x843b('0x62')](_0x260465,{'networks':_0x4f8619||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x42d952);return respondWithRpcPromise('Reload',_0x843b('0x68'),{'module':_0x843b('0x60')});}else{var _0x2d231f=fs['readFileSync'](path['join'](config[_0x843b('0x5a')],_0x843b('0x66')),_0x843b('0x5c'));var _0x1522aa=ejs[_0x843b('0x62')](_0x2d231f,{'networks':_0x4f8619||[]});fs[_0x843b('0x5d')](util[_0x843b('0x64')](_0x843b('0x67'),_0x42666d[_0x843b('0x55')]['type'][_0x843b('0x6a')]()),_0x1522aa);return respondWithRpcPromise(_0x843b('0x5f'),'destroy',{'module':_0x843b('0x65')});}return null;})[_0x843b('0x25')](handleError(_0x5328ee,null));};
\ No newline at end of file
+var _0xbac8=['bluebird','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','jayson/promise','client','http','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','stringify','code','error','message','result','catch','sendStatus','end','offset','undefined','limit','status','Content-Range','json','apply','save','update','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','count','includeAll','include','Network','findAll','show','params','keys','find','create','sequelize','transaction','body','toUpperCase','STUN','root','server/files/templates/stun_multiple.ejs','utf8','render','writeFileSync','res_stun_monitor.so','TURN','readFileSync','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','Reload','join','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','/etc/asterisk/stun_xcally.conf','eml-format','rimraf','request-promise','moment'];(function(_0x2763f2,_0x416af8){var _0x3ef471=function(_0x288aa2){while(--_0x288aa2){_0x2763f2['push'](_0x2763f2['shift']());}};_0x3ef471(++_0x416af8);}(_0xbac8,0x140));var _0x8bac=function(_0xc55977,_0x44c740){_0xc55977=_0xc55977-0x0;var _0x574f1c=_0xbac8[_0xc55977];return _0x574f1c;};'use strict';var emlformat=require(_0x8bac('0x0'));var rimraf=require(_0x8bac('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x8bac('0x2'));var moment=require(_0x8bac('0x3'));var BPromise=require(_0x8bac('0x4'));var Mustache=require('mustache');var util=require(_0x8bac('0x5'));var path=require(_0x8bac('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x8bac('0x7'));var fs=require('fs');var fs_extra=require(_0x8bac('0x8'));var _=require(_0x8bac('0x9'));var squel=require(_0x8bac('0xa'));var crypto=require(_0x8bac('0xb'));var jsforce=require(_0x8bac('0xc'));var deskjs=require(_0x8bac('0xd'));var toCsv=require(_0x8bac('0xe'));var querystring=require(_0x8bac('0xf'));var Papa=require('papaparse');var Redis=require(_0x8bac('0x10'));var authService=require(_0x8bac('0x11'));var qs=require(_0x8bac('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8bac('0x13'));var logger=require('../../config/logger')(_0x8bac('0x14'));var utils=require(_0x8bac('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x8bac('0x16'));var db=require(_0x8bac('0x17'))['db'];var jayson=require(_0x8bac('0x18'));var client=jayson[_0x8bac('0x19')][_0x8bac('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x5bc586,_0x4e571a,_0x318c69,_0x442c66){return new BPromise(function(_0x4deb09,_0x45170a){var _0x5264ad=_0x442c66||client;return _0x5264ad['request'](_0x5bc586,_0x318c69)[_0x8bac('0x1b')](function(_0x371006){logger[_0x8bac('0x1c')](_0x8bac('0x1d'),_0x4e571a,_0x8bac('0x1e'));logger[_0x8bac('0x1f')]('Network,\x20%s,\x20%s,\x20%s',_0x4e571a,'request\x20sent',JSON[_0x8bac('0x20')](_0x371006));if(_0x371006['error']){if(_0x371006['error'][_0x8bac('0x21')]===0x1f4){logger[_0x8bac('0x22')](_0x8bac('0x1d'),_0x4e571a,_0x371006[_0x8bac('0x22')][_0x8bac('0x23')]);return _0x45170a(_0x371006[_0x8bac('0x22')]['message']);}logger[_0x8bac('0x22')](_0x8bac('0x1d'),_0x4e571a,_0x371006[_0x8bac('0x22')][_0x8bac('0x23')]);return _0x4deb09(_0x371006[_0x8bac('0x22')][_0x8bac('0x23')]);}else{logger[_0x8bac('0x1c')](_0x8bac('0x1d'),_0x4e571a,'request\x20sent');_0x4deb09(_0x371006[_0x8bac('0x24')]['message']);}})[_0x8bac('0x25')](function(_0x521fdb){logger[_0x8bac('0x22')](_0x8bac('0x1d'),_0x4e571a,_0x521fdb);_0x45170a(_0x521fdb);});});}function respondWithStatusCode(_0x576824,_0x41fc20){_0x41fc20=_0x41fc20||0xcc;return function(_0x15f893){if(_0x15f893){return _0x576824[_0x8bac('0x26')](_0x41fc20);}return _0x576824['status'](_0x41fc20)[_0x8bac('0x27')]();};}function respondWithResult(_0x5353fa,_0x30916b){_0x30916b=_0x30916b||0xc8;return function(_0x565a22){if(_0x565a22){return _0x5353fa['status'](_0x30916b)['json'](_0x565a22);}};}function respondWithFilteredResult(_0x3db974,_0x2edf9c){return function(_0xaedf36){if(_0xaedf36){var _0x383e5d=typeof _0x2edf9c[_0x8bac('0x28')]===_0x8bac('0x29')&&typeof _0x2edf9c['limit']===_0x8bac('0x29');var _0x2285d0=_0xaedf36['count'];var _0x3c9fd3=_0x383e5d?0x0:_0x2edf9c[_0x8bac('0x28')];var _0x2bb6fe=_0x383e5d?_0xaedf36['count']:_0x2edf9c[_0x8bac('0x28')]+_0x2edf9c[_0x8bac('0x2a')];var _0x86bd5f;if(_0x2bb6fe>=_0x2285d0){_0x2bb6fe=_0x2285d0;_0x86bd5f=0xc8;}else{_0x86bd5f=0xce;}_0x3db974[_0x8bac('0x2b')](_0x86bd5f);return _0x3db974['set'](_0x8bac('0x2c'),_0x3c9fd3+'-'+_0x2bb6fe+'/'+_0x2285d0)[_0x8bac('0x2d')](_0xaedf36);}return null;};}function patchUpdates(_0x5795d1){return function(_0x5c3ad1){try{jsonpatch[_0x8bac('0x2e')](_0x5c3ad1,_0x5795d1,!![]);}catch(_0x58b61d){return BPromise['reject'](_0x58b61d);}return _0x5c3ad1[_0x8bac('0x2f')]();};}function saveUpdates(_0x1d8b89,_0x3a3071){return function(_0x5ca5be){if(_0x5ca5be){return _0x5ca5be[_0x8bac('0x30')](_0x1d8b89)[_0x8bac('0x1b')](function(_0x176d4e){return _0x176d4e;});}return null;};}function removeEntity(_0x586ea1,_0x478aba){return function(_0x9f77be){if(_0x9f77be){return _0x9f77be[_0x8bac('0x31')]()[_0x8bac('0x1b')](function(){_0x586ea1['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5856bb,_0x156c45){return function(_0x515178){if(!_0x515178){_0x5856bb[_0x8bac('0x26')](0x194);}return _0x515178;};}function handleError(_0x42da1c,_0x212406){_0x212406=_0x212406||0x1f4;return function(_0x1c028e){logger[_0x8bac('0x22')](_0x1c028e[_0x8bac('0x32')]);if(_0x1c028e['name']){delete _0x1c028e[_0x8bac('0x33')];}_0x42da1c[_0x8bac('0x2b')](_0x212406)[_0x8bac('0x34')](_0x1c028e);};}exports[_0x8bac('0x35')]=function(_0x2d0aa8,_0x26691f){var _0x39c2dc={},_0x3a817e={},_0x5acaab={'count':0x0,'rows':[]};var _0x2b3652=_[_0x8bac('0x36')](db['Network'][_0x8bac('0x37')],function(_0x322aae){return{'name':_0x322aae[_0x8bac('0x38')],'type':_0x322aae[_0x8bac('0x39')][_0x8bac('0x3a')]};});_0x3a817e[_0x8bac('0x3b')]=_[_0x8bac('0x36')](_0x2b3652,'name');_0x3a817e['query']=_['keys'](_0x2d0aa8[_0x8bac('0x3c')]);_0x3a817e[_0x8bac('0x3d')]=_['intersection'](_0x3a817e[_0x8bac('0x3b')],_0x3a817e[_0x8bac('0x3c')]);_0x39c2dc[_0x8bac('0x3e')]=_[_0x8bac('0x3f')](_0x3a817e[_0x8bac('0x3b')],qs[_0x8bac('0x40')](_0x2d0aa8['query'][_0x8bac('0x40')]));_0x39c2dc[_0x8bac('0x3e')]=_0x39c2dc['attributes'][_0x8bac('0x41')]?_0x39c2dc['attributes']:_0x3a817e['model'];if(!_0x2d0aa8[_0x8bac('0x3c')][_0x8bac('0x42')](_0x8bac('0x43'))){_0x39c2dc[_0x8bac('0x2a')]=qs[_0x8bac('0x2a')](_0x2d0aa8[_0x8bac('0x3c')][_0x8bac('0x2a')]);_0x39c2dc['offset']=qs[_0x8bac('0x28')](_0x2d0aa8['query']['offset']);}_0x39c2dc[_0x8bac('0x44')]=qs[_0x8bac('0x45')](_0x2d0aa8[_0x8bac('0x3c')]['sort']);_0x39c2dc[_0x8bac('0x46')]=qs[_0x8bac('0x3d')](_[_0x8bac('0x47')](_0x2d0aa8['query'],_0x3a817e[_0x8bac('0x3d')]),_0x2b3652);if(_0x2d0aa8[_0x8bac('0x3c')][_0x8bac('0x48')]){_0x39c2dc[_0x8bac('0x46')]=_['merge'](_0x39c2dc[_0x8bac('0x46')],{'$or':_[_0x8bac('0x36')](_0x2b3652,function(_0x5c8702){if(_0x5c8702[_0x8bac('0x39')]!=='VIRTUAL'){var _0x1c50cd={};_0x1c50cd[_0x5c8702[_0x8bac('0x33')]]={'$like':'%'+_0x2d0aa8[_0x8bac('0x3c')][_0x8bac('0x48')]+'%'};return _0x1c50cd;}})});}_0x39c2dc=_[_0x8bac('0x49')]({},_0x39c2dc,_0x2d0aa8[_0x8bac('0x4a')]);var _0x4eef82={'where':_0x39c2dc[_0x8bac('0x46')]};return db['Network'][_0x8bac('0x4b')](_0x4eef82)[_0x8bac('0x1b')](function(_0x36daae){_0x5acaab[_0x8bac('0x4b')]=_0x36daae;if(_0x2d0aa8['query'][_0x8bac('0x4c')]){_0x39c2dc[_0x8bac('0x4d')]=[{'all':!![]}];}return db[_0x8bac('0x4e')][_0x8bac('0x4f')](_0x39c2dc);})[_0x8bac('0x1b')](function(_0xa67c62){_0x5acaab['rows']=_0xa67c62;return _0x5acaab;})[_0x8bac('0x1b')](respondWithFilteredResult(_0x26691f,_0x39c2dc))[_0x8bac('0x25')](handleError(_0x26691f,null));};exports[_0x8bac('0x50')]=function(_0x32fc00,_0x5e770d){var _0x3c02c0={'raw':!![],'where':{'id':_0x32fc00[_0x8bac('0x51')]['id']}},_0x5f40ce={};_0x5f40ce[_0x8bac('0x3b')]=_['keys'](db[_0x8bac('0x4e')][_0x8bac('0x37')]);_0x5f40ce['query']=_[_0x8bac('0x52')](_0x32fc00[_0x8bac('0x3c')]);_0x5f40ce[_0x8bac('0x3d')]=_['intersection'](_0x5f40ce['model'],_0x5f40ce[_0x8bac('0x3c')]);_0x3c02c0[_0x8bac('0x3e')]=_['intersection'](_0x5f40ce[_0x8bac('0x3b')],qs[_0x8bac('0x40')](_0x32fc00[_0x8bac('0x3c')][_0x8bac('0x40')]));_0x3c02c0[_0x8bac('0x3e')]=_0x3c02c0[_0x8bac('0x3e')][_0x8bac('0x41')]?_0x3c02c0[_0x8bac('0x3e')]:_0x5f40ce[_0x8bac('0x3b')];if(_0x32fc00['query'][_0x8bac('0x4c')]){_0x3c02c0[_0x8bac('0x4d')]=[{'all':!![]}];}_0x3c02c0=_[_0x8bac('0x49')]({},_0x3c02c0,_0x32fc00[_0x8bac('0x4a')]);return db[_0x8bac('0x4e')][_0x8bac('0x53')](_0x3c02c0)[_0x8bac('0x1b')](handleEntityNotFound(_0x5e770d,null))[_0x8bac('0x1b')](respondWithResult(_0x5e770d,null))[_0x8bac('0x25')](handleError(_0x5e770d,null));};exports[_0x8bac('0x54')]=function(_0x358167,_0xe9b919,_0x28a1d9){var _0x16a950;return db[_0x8bac('0x55')][_0x8bac('0x56')](function(_0x3fe7d4){return db['Network'][_0x8bac('0x54')](_0x358167[_0x8bac('0x57')],{'raw':!![]})[_0x8bac('0x1b')](function(_0x3c85ba){_0x16a950=_0x3c85ba;return db[_0x8bac('0x4e')]['findAll']({'where':{'type':_0x358167[_0x8bac('0x57')]['type']},'raw':!![]});})['then'](function(_0x18e80d){if(_0x16a950[_0x8bac('0x39')][_0x8bac('0x58')]()==_0x8bac('0x59')){var _0x4fd443=fs['readFileSync'](path['join'](config[_0x8bac('0x5a')],_0x8bac('0x5b')),_0x8bac('0x5c'));var _0x3d4b8f=ejs[_0x8bac('0x5d')](_0x4fd443,{'networks':_0x18e80d||[]});fs[_0x8bac('0x5e')]('/etc/asterisk/stun_xcally.conf',_0x3d4b8f);return respondWithRpcPromise('Reload',_0x8bac('0x54'),{'module':_0x8bac('0x5f')});}else if(_0x16a950[_0x8bac('0x39')]['toUpperCase']()==_0x8bac('0x60')){var _0x29fb21=fs[_0x8bac('0x61')](path['join'](config['root'],_0x8bac('0x62')),_0x8bac('0x5c'));var _0x265fb9=ejs[_0x8bac('0x5d')](_0x29fb21,{'networks':_0x18e80d||[]});fs[_0x8bac('0x5e')](_0x8bac('0x63'),_0x265fb9);return respondWithRpcPromise(_0x8bac('0x64'),_0x8bac('0x54'),{'module':'res_stun_monitor.so'});}else{var _0x291fbf=fs[_0x8bac('0x61')](path[_0x8bac('0x65')](config['root'],_0x8bac('0x66')),_0x8bac('0x5c'));var _0x1de5e9=ejs[_0x8bac('0x5d')](_0x291fbf,{'networks':_0x18e80d||[]});fs[_0x8bac('0x5e')](util[_0x8bac('0x67')](_0x8bac('0x68'),_0x358167[_0x8bac('0x57')][_0x8bac('0x39')][_0x8bac('0x69')]()),_0x1de5e9);return respondWithRpcPromise(_0x8bac('0x64'),_0x8bac('0x54'),{'module':_0x8bac('0x6a')});}return null;})[_0x8bac('0x1b')](function(){return _0x16a950;});})[_0x8bac('0x1b')](respondWithResult(_0xe9b919,0xc9))['catch'](handleError(_0xe9b919,null));};exports[_0x8bac('0x30')]=function(_0x540832,_0x4dddc5,_0x211854){var _0x25cf42;return db[_0x8bac('0x55')][_0x8bac('0x56')](function(_0x25c33d){return db[_0x8bac('0x4e')][_0x8bac('0x53')]({'where':{'id':_0x540832[_0x8bac('0x51')]['id']}})['then'](handleEntityNotFound(_0x4dddc5,null))[_0x8bac('0x1b')](saveUpdates(_0x540832[_0x8bac('0x57')],null))[_0x8bac('0x1b')](function(_0x12e8f5){if(_0x12e8f5){_0x25cf42=_0x12e8f5;return db[_0x8bac('0x4e')][_0x8bac('0x4f')]({'where':{'type':_0x25cf42[_0x8bac('0x39')]},'raw':!![]});}return null;})[_0x8bac('0x1b')](function(_0x5a3014){if(_0x25cf42[_0x8bac('0x39')][_0x8bac('0x58')]()==_0x8bac('0x59')){var _0x33d1df=fs['readFileSync'](path['join'](config[_0x8bac('0x5a')],_0x8bac('0x5b')),'utf8');var _0xb238ca=ejs[_0x8bac('0x5d')](_0x33d1df,{'networks':_0x5a3014||[]});fs[_0x8bac('0x5e')](_0x8bac('0x6b'),_0xb238ca);return respondWithRpcPromise(_0x8bac('0x64'),_0x8bac('0x30'),{'module':_0x8bac('0x5f')});}else if(_0x25cf42[_0x8bac('0x39')][_0x8bac('0x58')]()==_0x8bac('0x60')){var _0x28552c=fs[_0x8bac('0x61')](path['join'](config['root'],_0x8bac('0x62')),'utf8');var _0x1c4caa=ejs[_0x8bac('0x5d')](_0x28552c,{'networks':_0x5a3014||[]});fs[_0x8bac('0x5e')](_0x8bac('0x63'),_0x1c4caa);return respondWithRpcPromise(_0x8bac('0x64'),'update',{'module':_0x8bac('0x5f')});}else{var _0x5e7c44=fs['readFileSync'](path[_0x8bac('0x65')](config[_0x8bac('0x5a')],_0x8bac('0x66')),_0x8bac('0x5c'));var _0xa64d34=ejs[_0x8bac('0x5d')](_0x5e7c44,{'networks':_0x5a3014||[]});fs[_0x8bac('0x5e')](util[_0x8bac('0x67')](_0x8bac('0x68'),_0x540832[_0x8bac('0x57')][_0x8bac('0x39')][_0x8bac('0x69')]()),_0xa64d34);return respondWithRpcPromise(_0x8bac('0x64'),'update',{'module':'chan_sip.so'});}return null;})[_0x8bac('0x1b')](function(_0x3e9566){if(_0x3e9566){return _0x25cf42;}return null;});})['then'](respondWithResult(_0x4dddc5,null))[_0x8bac('0x25')](handleError(_0x4dddc5,null));};exports[_0x8bac('0x31')]=function(_0x4b7ce7,_0x37c595,_0x1b98bd){var _0x13e3e4;return db[_0x8bac('0x4e')]['find']({'where':{'id':_0x4b7ce7[_0x8bac('0x51')]['id']}})[_0x8bac('0x1b')](function(_0x3352e7){_0x13e3e4=_0x3352e7;return _0x3352e7;})[_0x8bac('0x1b')](handleEntityNotFound(_0x37c595,null))[_0x8bac('0x1b')](removeEntity(_0x37c595,null))[_0x8bac('0x1b')](function(){if(_0x13e3e4){return db[_0x8bac('0x4e')][_0x8bac('0x4f')]({'where':{'type':_0x13e3e4['type']},'raw':!![]});}})[_0x8bac('0x1b')](function(_0x43fa36){if(_0x13e3e4[_0x8bac('0x39')]['toUpperCase']()==_0x8bac('0x59')){var _0x499a24=fs[_0x8bac('0x61')](path[_0x8bac('0x65')](config[_0x8bac('0x5a')],_0x8bac('0x5b')),_0x8bac('0x5c'));var _0x4592ad=ejs[_0x8bac('0x5d')](_0x499a24,{'networks':_0x43fa36||[]});fs[_0x8bac('0x5e')](_0x8bac('0x6b'),_0x4592ad);return respondWithRpcPromise('Reload',_0x8bac('0x31'),{'module':_0x8bac('0x5f')});}else if(_0x13e3e4['type'][_0x8bac('0x58')]()==_0x8bac('0x60')){var _0x1b0d67=fs['readFileSync'](path[_0x8bac('0x65')](config[_0x8bac('0x5a')],_0x8bac('0x62')),_0x8bac('0x5c'));var _0x47a3bb=ejs[_0x8bac('0x5d')](_0x1b0d67,{'networks':_0x43fa36||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x47a3bb);return respondWithRpcPromise(_0x8bac('0x64'),_0x8bac('0x31'),{'module':_0x8bac('0x5f')});}else{var _0x46b0ae=fs['readFileSync'](path[_0x8bac('0x65')](config[_0x8bac('0x5a')],'server/files/templates/network.ejs'),'utf8');var _0x51f1c6=ejs[_0x8bac('0x5d')](_0x46b0ae,{'networks':_0x43fa36||[]});fs['writeFileSync'](util[_0x8bac('0x67')](_0x8bac('0x68'),_0x4b7ce7[_0x8bac('0x57')][_0x8bac('0x39')][_0x8bac('0x69')]()),_0x51f1c6);return respondWithRpcPromise(_0x8bac('0x64'),_0x8bac('0x31'),{'module':_0x8bac('0x6a')});}return null;})[_0x8bac('0x25')](handleError(_0x37c595,null));};
\ No newline at end of file
index 1de752b..46299b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda65=['../../config/environment','./network.attributes','exports','Network','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0xf50820,_0x56f041){var _0x2a9b10=function(_0x33f0f4){while(--_0x33f0f4){_0xf50820['push'](_0xf50820['shift']());}};_0x2a9b10(++_0x56f041);}(_0xda65,0x1d0));var _0x5da6=function(_0x17eba5,_0x3a0baf){_0x17eba5=_0x17eba5-0x0;var _0x5a6e80=_0xda65[_0x17eba5];return _0x5a6e80;};'use strict';var _=require(_0x5da6('0x0'));var util=require(_0x5da6('0x1'));var logger=require(_0x5da6('0x2'))('api');var moment=require(_0x5da6('0x3'));var BPromise=require(_0x5da6('0x4'));var rp=require(_0x5da6('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x5da6('0x6'));var attributes=require(_0x5da6('0x7'));module[_0x5da6('0x8')]=function(_0x32ff03,_0x75126f){return _0x32ff03['define'](_0x5da6('0x9'),attributes,{'tableName':'network','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xedd9=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./network.attributes','exports','Network','util'];(function(_0x5b336a,_0x2374b9){var _0x3703c0=function(_0x5d25ff){while(--_0x5d25ff){_0x5b336a['push'](_0x5b336a['shift']());}};_0x3703c0(++_0x2374b9);}(_0xedd9,0xfc));var _0x9edd=function(_0x48c6f0,_0x1d1a95){_0x48c6f0=_0x48c6f0-0x0;var _0x44a665=_0xedd9[_0x48c6f0];return _0x44a665;};'use strict';var _=require('lodash');var util=require(_0x9edd('0x0'));var logger=require(_0x9edd('0x1'))(_0x9edd('0x2'));var moment=require(_0x9edd('0x3'));var BPromise=require(_0x9edd('0x4'));var rp=require(_0x9edd('0x5'));var fs=require('fs');var path=require(_0x9edd('0x6'));var rimraf=require(_0x9edd('0x7'));var config=require('../../config/environment');var attributes=require(_0x9edd('0x8'));module[_0x9edd('0x9')]=function(_0x268f9e,_0x34c1a7){return _0x268f9e['define'](_0x9edd('0xa'),attributes,{'tableName':'network','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0824595..8ed7d8a 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(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x7a54,0x106));var _0x47a5=function(_0xb257ad,_0x461619){_0xb257ad=_0xb257ad-0x0;var _0x58948e=_0x7a54[_0xb257ad];return _0x58948e;};'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(_0x1098da,_0x14c771){var _0x57a0d2=function(_0x54a2d7){while(--_0x54a2d7){_0x1098da['push'](_0x1098da['shift']());}};_0x57a0d2(++_0x14c771);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var 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 3d5cf62..86180ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4662=['exports','multer','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelAccount.controller','get','isAuthenticated','/describe','describe','/:id','show','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','getAgents','post','create','/:id/dispositions','addDisposition','addAnswer','/:id/notify','addApplications','/:id/users','addAgents','put','update','delete','destroy','removeDispositions','removeAnswers','removeAgents'];(function(_0xc1e05a,_0x5d4cdc){var _0xb6a24c=function(_0x45200a){while(--_0x45200a){_0xc1e05a['push'](_0xc1e05a['shift']());}};_0xb6a24c(++_0x5d4cdc);}(_0x4662,0x17d));var _0x2466=function(_0x3c98d5,_0x47ee0e){_0x3c98d5=_0x3c98d5-0x0;var _0x2f6ea5=_0x4662[_0x3c98d5];return _0x2f6ea5;};'use strict';var multer=require(_0x2466('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x2466('0x1'));var router=express[_0x2466('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x2466('0x3'));var interaction=require(_0x2466('0x4'));var config=require(_0x2466('0x5'));var controller=require(_0x2466('0x6'));router[_0x2466('0x7')]('/',auth[_0x2466('0x8')](),controller['index']);router[_0x2466('0x7')](_0x2466('0x9'),auth[_0x2466('0x8')](),controller[_0x2466('0xa')]);router[_0x2466('0x7')](_0x2466('0xb'),auth[_0x2466('0x8')](),controller[_0x2466('0xc')]);router['get']('/:id/dispositions',auth['isAuthenticated'](),controller[_0x2466('0xd')]);router[_0x2466('0x7')](_0x2466('0xe'),auth[_0x2466('0x8')](),controller[_0x2466('0xf')]);router[_0x2466('0x7')](_0x2466('0x10'),auth[_0x2466('0x8')](),controller[_0x2466('0x11')]);router[_0x2466('0x7')](_0x2466('0x12'),auth['isAuthenticated'](),controller[_0x2466('0x13')]);router['get']('/:id/users',auth[_0x2466('0x8')](),controller[_0x2466('0x14')]);router[_0x2466('0x15')]('/',auth['isAuthenticated'](),controller[_0x2466('0x16')]);router[_0x2466('0x15')](_0x2466('0x17'),auth[_0x2466('0x8')](),controller[_0x2466('0x18')]);router['post'](_0x2466('0xe'),auth['isAuthenticated'](),controller[_0x2466('0x19')]);router['post'](_0x2466('0x1a'),controller['notify']);router[_0x2466('0x15')](_0x2466('0x10'),auth[_0x2466('0x8')](),controller[_0x2466('0x1b')]);router[_0x2466('0x15')](_0x2466('0x1c'),auth[_0x2466('0x8')](),controller[_0x2466('0x1d')]);router[_0x2466('0x15')]('/:id/send',auth['isAuthenticated'](),controller['send']);router[_0x2466('0x1e')](_0x2466('0xb'),auth[_0x2466('0x8')](),controller[_0x2466('0x1f')]);router[_0x2466('0x20')](_0x2466('0xb'),auth['isAuthenticated'](),controller[_0x2466('0x21')]);router[_0x2466('0x20')]('/:id/dispositions',auth[_0x2466('0x8')](),controller[_0x2466('0x22')]);router[_0x2466('0x20')]('/:id/canned_answers',auth[_0x2466('0x8')](),controller[_0x2466('0x23')]);router[_0x2466('0x20')](_0x2466('0x1c'),auth[_0x2466('0x8')](),controller[_0x2466('0x24')]);module[_0x2466('0x25')]=router;
\ No newline at end of file
+var _0x4f15=['/describe','describe','show','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','getAgents','post','create','/:id/dispositions','addDisposition','addAnswer','/:id/notify','addApplications','/:id/users','addAgents','send','put','/:id','update','delete','destroy','removeDispositions','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelAccount.controller','isAuthenticated','index','get'];(function(_0xa1279d,_0x31dcd5){var _0x277dfc=function(_0x471920){while(--_0x471920){_0xa1279d['push'](_0xa1279d['shift']());}};_0x277dfc(++_0x31dcd5);}(_0x4f15,0x13a));var _0x54f1=function(_0x44203a,_0x182167){_0x44203a=_0x44203a-0x0;var _0x3ab876=_0x4f15[_0x44203a];return _0x3ab876;};'use strict';var multer=require(_0x54f1('0x0'));var util=require(_0x54f1('0x1'));var path=require(_0x54f1('0x2'));var timeout=require(_0x54f1('0x3'));var express=require(_0x54f1('0x4'));var router=express[_0x54f1('0x5')]();var fs_extra=require(_0x54f1('0x6'));var auth=require(_0x54f1('0x7'));var interaction=require(_0x54f1('0x8'));var config=require(_0x54f1('0x9'));var controller=require(_0x54f1('0xa'));router['get']('/',auth[_0x54f1('0xb')](),controller[_0x54f1('0xc')]);router[_0x54f1('0xd')](_0x54f1('0xe'),auth[_0x54f1('0xb')](),controller[_0x54f1('0xf')]);router['get']('/:id',auth[_0x54f1('0xb')](),controller[_0x54f1('0x10')]);router[_0x54f1('0xd')]('/:id/dispositions',auth[_0x54f1('0xb')](),controller[_0x54f1('0x11')]);router[_0x54f1('0xd')](_0x54f1('0x12'),auth[_0x54f1('0xb')](),controller[_0x54f1('0x13')]);router['get'](_0x54f1('0x14'),auth['isAuthenticated'](),controller[_0x54f1('0x15')]);router[_0x54f1('0xd')]('/:id/interactions',auth['isAuthenticated'](),controller['getInteractions']);router[_0x54f1('0xd')]('/:id/users',auth['isAuthenticated'](),controller[_0x54f1('0x16')]);router[_0x54f1('0x17')]('/',auth['isAuthenticated'](),controller[_0x54f1('0x18')]);router[_0x54f1('0x17')](_0x54f1('0x19'),auth[_0x54f1('0xb')](),controller[_0x54f1('0x1a')]);router[_0x54f1('0x17')](_0x54f1('0x12'),auth[_0x54f1('0xb')](),controller[_0x54f1('0x1b')]);router[_0x54f1('0x17')](_0x54f1('0x1c'),controller['notify']);router[_0x54f1('0x17')](_0x54f1('0x14'),auth[_0x54f1('0xb')](),controller[_0x54f1('0x1d')]);router[_0x54f1('0x17')](_0x54f1('0x1e'),auth['isAuthenticated'](),controller[_0x54f1('0x1f')]);router['post']('/:id/send',auth[_0x54f1('0xb')](),controller[_0x54f1('0x20')]);router[_0x54f1('0x21')](_0x54f1('0x22'),auth[_0x54f1('0xb')](),controller[_0x54f1('0x23')]);router[_0x54f1('0x24')](_0x54f1('0x22'),auth[_0x54f1('0xb')](),controller[_0x54f1('0x25')]);router[_0x54f1('0x24')](_0x54f1('0x19'),auth[_0x54f1('0xb')](),controller[_0x54f1('0x26')]);router['delete'](_0x54f1('0x12'),auth['isAuthenticated'](),controller['removeAnswers']);router[_0x54f1('0x24')]('/:id/users',auth['isAuthenticated'](),controller[_0x54f1('0x27')]);module[_0x54f1('0x28')]=router;
\ No newline at end of file
index 7b00525..bfcb70d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad8a=['mandatoryDisposition','sequelize','randomstring','exports','STRING','name','generate','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'];(function(_0x5ce68d,_0x314ca2){var _0x249370=function(_0x2bedd5){while(--_0x2bedd5){_0x5ce68d['push'](_0x5ce68d['shift']());}};_0x249370(++_0x314ca2);}(_0xad8a,0x112));var _0xaad8=function(_0x48ddc7,_0x259b27){_0x48ddc7=_0x48ddc7-0x0;var _0x65a3b8=_0xad8a[_0x48ddc7];return _0x65a3b8;};'use strict';var Sequelize=require(_0xaad8('0x0'));var rs=require(_0xaad8('0x1'));module[_0xaad8('0x2')]={'name':{'type':Sequelize[_0xaad8('0x3')],'unique':_0xaad8('0x4'),'allowNull':![]},'description':{'type':Sequelize[_0xaad8('0x3')]},'token':{'type':Sequelize[_0xaad8('0x3')],'defaultValue':function(){return rs[_0xaad8('0x5')]();}},'replyUri':{'type':Sequelize[_0xaad8('0x3')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0xaad8('0x3')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xaad8('0x6');}},'notificationSound':{'type':Sequelize[_0xaad8('0x7')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xaad8('0x7')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xaad8('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0xaad8('0x3')]},'queueTransfer':{'type':Sequelize[_0xaad8('0x7')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xaad8('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xaad8('0x7')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xaad8('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xaad8('0x8')],'allowNull':!![],'defaultValue':null,'comment':_0xaad8('0x9')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xaad8('0xa'),'set':function(_0x1467dc){if(!_0x1467dc)this[_0xaad8('0xb')]('mandatoryDispositionPauseId',null);this[_0xaad8('0xb')](_0xaad8('0xc'),_0x1467dc);}}};
\ No newline at end of file
+var _0x15c4=['mandatoryDispositionPauseId','sequelize','randomstring','exports','name','STRING','generate','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue'];(function(_0x4f21c4,_0x960024){var _0x2f9fa6=function(_0x26f914){while(--_0x26f914){_0x4f21c4['push'](_0x4f21c4['shift']());}};_0x2f9fa6(++_0x960024);}(_0x15c4,0x16d));var _0x415c=function(_0x15da30,_0x559d60){_0x15da30=_0x15da30-0x0;var _0x410b62=_0x15c4[_0x15da30];return _0x410b62;};'use strict';var Sequelize=require(_0x415c('0x0'));var rs=require(_0x415c('0x1'));module[_0x415c('0x2')]={'name':{'type':Sequelize['STRING'],'unique':_0x415c('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x415c('0x4')]},'token':{'type':Sequelize[_0x415c('0x4')],'defaultValue':function(){return rs[_0x415c('0x5')]();}},'replyUri':{'type':Sequelize[_0x415c('0x4')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0x415c('0x4')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x415c('0x6')],'defaultValue':function(){return _0x415c('0x7');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x415c('0x8')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x415c('0x4')]},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x415c('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x415c('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x415c('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x415c('0x9')],'allowNull':!![],'defaultValue':null,'comment':_0x415c('0xa')},'mandatoryDisposition':{'type':Sequelize[_0x415c('0x8')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x2b7ebb){if(!_0x2b7ebb)this[_0x415c('0xb')](_0x415c('0xc'),null);this[_0x415c('0xb')]('mandatoryDisposition',_0x2b7ebb);}}};
\ No newline at end of file
index 7ce9382..f208838 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7279=['nolimit','order','sort','pick','filter','where','map','VIRTUAL','options','includeAll','include','findAll','rows','params','keys','merge','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','OpenchannelAccountId','Disposition','getDispositions','findOne','removeDispositions','ids','CannedAnswer','getAnswers','removeAnswers','openchannel','CmContact','Sequelize','ValidationError','difference','createdAt','updatedAt','CompanyId','from\x20is\x20mandatory','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','CmList','List','DESC','OpenchannelApplication','applications','Applications','orderBy','priority','account','ListId','contact','firstName','lastName','threadId','OpenchannelInteraction','externalUrl','ContactId','spread','messageId','interaction','created','push','*,*,*,*','OpenchannelMessage','AttachmentId','UserId','User','agent','waitForTheAssignedAgent','forcedOwnership','startRouting','Start','EventManager','addApplications','transaction','bulkCreate','findAndCountAll','getApplications','getInteractions','Contact','Owner','fullname','internal','Tag','Tags','color','tag','addAgents','emit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','body\x20is\x20mandatory\x20and\x20not\x20empty','Contacts','out','Messages','dataValues','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','register','client','http','then','info','request\x20sent','debug','stringify','error','code','OpenchannelAccount,\x20%s,\x20%s','message','result','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','get','UserProfileResource','stack','name','send','index','Pause','mandatoryDispositionPause','OpenchannelAccount','rawAttributes','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty'];(function(_0x4c78d0,_0x5646f9){var _0x332176=function(_0x39863f){while(--_0x39863f){_0x4c78d0['push'](_0x4c78d0['shift']());}};_0x332176(++_0x5646f9);}(_0x7279,0x1e7));var _0x9727=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x7279[_0x2641f9];return _0x585741;};'use strict';var emlformat=require(_0x9727('0x0'));var rimraf=require(_0x9727('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9727('0x2'));var rp=require(_0x9727('0x3'));var moment=require('moment');var BPromise=require(_0x9727('0x4'));var Mustache=require(_0x9727('0x5'));var util=require(_0x9727('0x6'));var path=require(_0x9727('0x7'));var sox=require(_0x9727('0x8'));var csv=require(_0x9727('0x9'));var ejs=require(_0x9727('0xa'));var fs=require('fs');var fs_extra=require(_0x9727('0xb'));var _=require(_0x9727('0xc'));var squel=require(_0x9727('0xd'));var crypto=require(_0x9727('0xe'));var jsforce=require(_0x9727('0xf'));var deskjs=require(_0x9727('0x10'));var toCsv=require(_0x9727('0x9'));var querystring=require(_0x9727('0x11'));var Papa=require('papaparse');var Redis=require(_0x9727('0x12'));var authService=require(_0x9727('0x13'));var qs=require(_0x9727('0x14'));var as=require(_0x9727('0x15'));var hardwareService=require(_0x9727('0x16'));var logger=require('../../config/logger')(_0x9727('0x17'));var utils=require(_0x9727('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x9727('0x19'));var db=require(_0x9727('0x1a'))['db'];config[_0x9727('0x1b')]=_[_0x9727('0x1c')](config[_0x9727('0x1b')],{'host':_0x9727('0x1d'),'port':0x18eb});var socket=require(_0x9727('0x1e'))(new Redis(config['redis']));require(_0x9727('0x1f'))[_0x9727('0x20')](socket);var jayson=require('jayson/promise');var client=jayson[_0x9727('0x21')][_0x9727('0x22')]({'port':0x232c});var client9002=jayson[_0x9727('0x21')][_0x9727('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x2bf4d9,_0x3454a4,_0x36ee28,_0x1e104b){return new BPromise(function(_0x54066a,_0x5777ad){var _0x5ec033=_0x1e104b||client;return _0x5ec033['request'](_0x2bf4d9,_0x36ee28)[_0x9727('0x23')](function(_0xdfff91){logger[_0x9727('0x24')]('OpenchannelAccount,\x20%s,\x20%s',_0x3454a4,_0x9727('0x25'));logger[_0x9727('0x26')]('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x3454a4,_0x9727('0x25'),JSON[_0x9727('0x27')](_0xdfff91));if(_0xdfff91[_0x9727('0x28')]){if(_0xdfff91['error'][_0x9727('0x29')]===0x1f4){logger[_0x9727('0x28')](_0x9727('0x2a'),_0x3454a4,_0xdfff91[_0x9727('0x28')][_0x9727('0x2b')]);return _0x5777ad(_0xdfff91[_0x9727('0x28')][_0x9727('0x2b')]);}logger[_0x9727('0x28')](_0x9727('0x2a'),_0x3454a4,_0xdfff91['error']['message']);return _0x54066a(_0xdfff91[_0x9727('0x28')]['message']);}else{logger[_0x9727('0x24')](_0x9727('0x2a'),_0x3454a4,_0x9727('0x25'));_0x54066a(_0xdfff91[_0x9727('0x2c')][_0x9727('0x2b')]);}})['catch'](function(_0x410c88){logger[_0x9727('0x28')]('OpenchannelAccount,\x20%s,\x20%s',_0x3454a4,_0x410c88);_0x5777ad(_0x410c88);});});}function respondWithStatusCode(_0x2949f4,_0x48528b){_0x48528b=_0x48528b||0xcc;return function(_0x313718){if(_0x313718){return _0x2949f4[_0x9727('0x2d')](_0x48528b);}return _0x2949f4[_0x9727('0x2e')](_0x48528b)[_0x9727('0x2f')]();};}function respondWithResult(_0x2cbeb7,_0x4ceafc){_0x4ceafc=_0x4ceafc||0xc8;return function(_0x2b5788){if(_0x2b5788){return _0x2cbeb7[_0x9727('0x2e')](_0x4ceafc)[_0x9727('0x30')](_0x2b5788);}};}function respondWithFilteredResult(_0x2517e7,_0x34eae1){return function(_0x2f27cb){if(_0x2f27cb){var _0x9201af=typeof _0x34eae1[_0x9727('0x31')]===_0x9727('0x32')&&typeof _0x34eae1['limit']==='undefined';var _0x129aba=_0x2f27cb[_0x9727('0x33')];var _0x24bec9=_0x9201af?0x0:_0x34eae1[_0x9727('0x31')];var _0x3f9aae=_0x9201af?_0x2f27cb[_0x9727('0x33')]:_0x34eae1['offset']+_0x34eae1[_0x9727('0x34')];var _0x3e9dd0;if(_0x3f9aae>=_0x129aba){_0x3f9aae=_0x129aba;_0x3e9dd0=0xc8;}else{_0x3e9dd0=0xce;}_0x2517e7['status'](_0x3e9dd0);return _0x2517e7[_0x9727('0x35')](_0x9727('0x36'),_0x24bec9+'-'+_0x3f9aae+'/'+_0x129aba)[_0x9727('0x30')](_0x2f27cb);}return null;};}function patchUpdates(_0x4e504d){return function(_0x36ffe2){try{jsonpatch[_0x9727('0x37')](_0x36ffe2,_0x4e504d,!![]);}catch(_0x1a15c5){return BPromise[_0x9727('0x38')](_0x1a15c5);}return _0x36ffe2[_0x9727('0x39')]();};}function saveUpdates(_0x1ef9b4,_0x1de61f){return function(_0x2a7b75){if(_0x2a7b75){return _0x2a7b75[_0x9727('0x3a')](_0x1ef9b4)[_0x9727('0x23')](function(_0x3bba31){return _0x3bba31;});}return null;};}function removeEntity(_0x48f655,_0x5db3bf){return function(_0x16fa96){if(_0x16fa96){return _0x16fa96[_0x9727('0x3b')]()['then'](function(){var _0x115411=_0x16fa96[_0x9727('0x3c')]({'plain':!![]});var _0x4e8302='OpenchannelAccounts';return db[_0x9727('0x3d')][_0x9727('0x3b')]({'where':{'type':_0x4e8302,'resourceId':_0x115411['id']}})[_0x9727('0x23')](function(){return _0x16fa96;});})[_0x9727('0x23')](function(){_0x48f655[_0x9727('0x2e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3cb051,_0x20e936){return function(_0x1e1c97){if(!_0x1e1c97){_0x3cb051[_0x9727('0x2d')](0x194);}return _0x1e1c97;};}function handleError(_0x409132,_0x4452c9){_0x4452c9=_0x4452c9||0x1f4;return function(_0x5d2f68){logger[_0x9727('0x28')](_0x5d2f68[_0x9727('0x3e')]);if(_0x5d2f68[_0x9727('0x3f')]){delete _0x5d2f68[_0x9727('0x3f')];}_0x409132[_0x9727('0x2e')](_0x4452c9)[_0x9727('0x40')](_0x5d2f68);};}exports[_0x9727('0x41')]=function(_0x2bc140,_0x1ed31f){var _0x4ea049={'include':[{'model':db[_0x9727('0x42')],'as':_0x9727('0x43')}]},_0x519157={},_0x397fc9={'count':0x0,'rows':[]};var _0x2555e7=_['map'](db[_0x9727('0x44')][_0x9727('0x45')],function(_0x4dcfa0){return{'name':_0x4dcfa0['fieldName'],'type':_0x4dcfa0[_0x9727('0x46')][_0x9727('0x47')]};});_0x519157['model']=_['map'](_0x2555e7,_0x9727('0x3f'));_0x519157[_0x9727('0x48')]=_['keys'](_0x2bc140[_0x9727('0x48')]);_0x519157[_0x9727('0x49')]=_[_0x9727('0x4a')](_0x519157[_0x9727('0x4b')],_0x519157['query']);_0x4ea049[_0x9727('0x4c')]=_[_0x9727('0x4a')](_0x519157['model'],qs[_0x9727('0x4d')](_0x2bc140['query'][_0x9727('0x4d')]));_0x4ea049[_0x9727('0x4c')]=_0x4ea049[_0x9727('0x4c')][_0x9727('0x4e')]?_0x4ea049[_0x9727('0x4c')]:_0x519157[_0x9727('0x4b')];if(!_0x2bc140[_0x9727('0x48')][_0x9727('0x4f')](_0x9727('0x50'))){_0x4ea049[_0x9727('0x34')]=qs['limit'](_0x2bc140[_0x9727('0x48')][_0x9727('0x34')]);_0x4ea049[_0x9727('0x31')]=qs['offset'](_0x2bc140[_0x9727('0x48')][_0x9727('0x31')]);}_0x4ea049[_0x9727('0x51')]=qs[_0x9727('0x52')](_0x2bc140['query'][_0x9727('0x52')]);_0x4ea049['where']=qs['filters'](_[_0x9727('0x53')](_0x2bc140[_0x9727('0x48')],_0x519157[_0x9727('0x49')]),_0x2555e7);if(_0x2bc140['query'][_0x9727('0x54')]){_0x4ea049[_0x9727('0x55')]=_['merge'](_0x4ea049[_0x9727('0x55')],{'$or':_[_0x9727('0x56')](_0x2555e7,function(_0x2a4b1f){if(_0x2a4b1f[_0x9727('0x46')]!==_0x9727('0x57')){var _0x443127={};_0x443127[_0x2a4b1f['name']]={'$like':'%'+_0x2bc140[_0x9727('0x48')][_0x9727('0x54')]+'%'};return _0x443127;}})});}_0x4ea049=_['merge']({},_0x4ea049,_0x2bc140[_0x9727('0x58')]);var _0x4574b0={'where':_0x4ea049[_0x9727('0x55')]};return db[_0x9727('0x44')]['count'](_0x4574b0)[_0x9727('0x23')](function(_0x1cee04){_0x397fc9[_0x9727('0x33')]=_0x1cee04;if(_0x2bc140[_0x9727('0x48')][_0x9727('0x59')]){_0x4ea049[_0x9727('0x5a')]=[{'all':!![]}];}return db[_0x9727('0x44')][_0x9727('0x5b')](_0x4ea049);})['then'](function(_0x26c81c){_0x397fc9[_0x9727('0x5c')]=_0x26c81c;return _0x397fc9;})[_0x9727('0x23')](respondWithFilteredResult(_0x1ed31f,_0x4ea049))['catch'](handleError(_0x1ed31f,null));};exports['show']=function(_0x276f89,_0x1888c2){var _0x4e912b={'raw':![],'where':{'id':_0x276f89[_0x9727('0x5d')]['id']},'include':[{'model':db[_0x9727('0x42')],'as':_0x9727('0x43')}]},_0x12a421={};_0x12a421[_0x9727('0x4b')]=_[_0x9727('0x5e')](db[_0x9727('0x44')]['rawAttributes']);_0x12a421[_0x9727('0x48')]=_[_0x9727('0x5e')](_0x276f89['query']);_0x12a421[_0x9727('0x49')]=_['intersection'](_0x12a421[_0x9727('0x4b')],_0x12a421[_0x9727('0x48')]);_0x4e912b[_0x9727('0x4c')]=_[_0x9727('0x4a')](_0x12a421['model'],qs[_0x9727('0x4d')](_0x276f89[_0x9727('0x48')][_0x9727('0x4d')]));_0x4e912b['attributes']=_0x4e912b[_0x9727('0x4c')]['length']?_0x4e912b['attributes']:_0x12a421[_0x9727('0x4b')];if(_0x276f89[_0x9727('0x48')][_0x9727('0x59')]){_0x4e912b['include']=[{'all':!![]}];}_0x4e912b=_[_0x9727('0x5f')]({},_0x4e912b,_0x276f89[_0x9727('0x58')]);return db[_0x9727('0x44')][_0x9727('0x60')](_0x4e912b)[_0x9727('0x23')](handleEntityNotFound(_0x1888c2,null))[_0x9727('0x23')](respondWithResult(_0x1888c2,null))[_0x9727('0x61')](handleError(_0x1888c2,null));};exports[_0x9727('0x62')]=function(_0x349d7e,_0x4e03e3){return db[_0x9727('0x44')]['create'](_0x349d7e[_0x9727('0x63')],{})['then'](function(_0x3daa12){var _0x4f6d50=_0x349d7e[_0x9727('0x64')][_0x9727('0x3c')]({'plain':!![]});if(!_0x4f6d50)throw new Error(_0x9727('0x65'));if(_0x4f6d50[_0x9727('0x66')]==='user'){var _0x50006b=_0x3daa12['get']({'plain':!![]});var _0x581adb='OpenchannelAccounts';return db[_0x9727('0x67')]['find']({'where':{'name':_0x581adb,'userProfileId':_0x4f6d50['userProfileId']},'raw':!![]})[_0x9727('0x23')](function(_0x37fe4f){if(_0x37fe4f&&_0x37fe4f['autoAssociation']===0x0){return db['UserProfileResource'][_0x9727('0x62')]({'name':_0x50006b[_0x9727('0x3f')],'resourceId':_0x50006b['id'],'type':_0x37fe4f[_0x9727('0x3f')],'sectionId':_0x37fe4f['id']},{})[_0x9727('0x23')](function(){return _0x3daa12;});}else{return _0x3daa12;}})[_0x9727('0x61')](function(_0x1e3f8d){logger['error'](_0x9727('0x68'),_0x1e3f8d);throw _0x1e3f8d;});}return _0x3daa12;})[_0x9727('0x23')](respondWithResult(_0x4e03e3,0xc9))['catch'](handleError(_0x4e03e3,null));};exports[_0x9727('0x3a')]=function(_0x1bf700,_0x2c424f){if(_0x1bf700[_0x9727('0x63')]['id']){delete _0x1bf700[_0x9727('0x63')]['id'];}return db[_0x9727('0x44')][_0x9727('0x60')]({'where':{'id':_0x1bf700[_0x9727('0x5d')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})['then'](handleEntityNotFound(_0x2c424f,null))['then'](saveUpdates(_0x1bf700['body'],null))[_0x9727('0x23')](respondWithResult(_0x2c424f,null))[_0x9727('0x61')](handleError(_0x2c424f,null));};exports[_0x9727('0x3b')]=function(_0xc37a90,_0x4c9574){return db[_0x9727('0x44')][_0x9727('0x60')]({'where':{'id':_0xc37a90[_0x9727('0x5d')]['id']}})[_0x9727('0x23')](handleEntityNotFound(_0x4c9574,null))['then'](removeEntity(_0x4c9574,null))[_0x9727('0x61')](handleError(_0x4c9574,null));};exports[_0x9727('0x69')]=function(_0x4d397a,_0x20c64b){return db[_0x9727('0x44')][_0x9727('0x69')]()['then'](respondWithResult(_0x20c64b,null))['catch'](handleError(_0x20c64b,null));};exports['addDisposition']=function(_0x3c75f6,_0x493967,_0x4e3c88){if(_0x3c75f6[_0x9727('0x63')]['id']){delete _0x3c75f6['body']['id'];}return db[_0x9727('0x44')]['find']({'where':{'id':_0x3c75f6['params']['id']}})['then'](handleEntityNotFound(_0x493967,null))['then'](function(_0x46b60a){if(_0x46b60a){_0x3c75f6['body'][_0x9727('0x6a')]=_0x46b60a['id'];return db[_0x9727('0x6b')][_0x9727('0x62')](_0x3c75f6[_0x9727('0x63')]);}})['then'](respondWithResult(_0x493967,null))[_0x9727('0x61')](handleError(_0x493967,null));};exports[_0x9727('0x6c')]=function(_0x4b0ab0,_0x7e9f9e,_0x40d2d3){var _0x5f4736={'raw':![],'where':{}};var _0x3d867e={};var _0x522632={'count':0x0,'rows':[]};return db[_0x9727('0x44')][_0x9727('0x6d')]({'where':{'id':_0x4b0ab0['params']['id']}})['then'](handleEntityNotFound(_0x7e9f9e,null))[_0x9727('0x23')](function(_0x2e20f1){if(_0x2e20f1){_0x3d867e[_0x9727('0x4b')]=_[_0x9727('0x5e')](db[_0x9727('0x6b')][_0x9727('0x45')]);_0x3d867e[_0x9727('0x48')]=_[_0x9727('0x5e')](_0x4b0ab0[_0x9727('0x48')]);_0x3d867e['filters']=_['intersection'](_0x3d867e['model'],_0x3d867e[_0x9727('0x48')]);_0x5f4736[_0x9727('0x4c')]=_[_0x9727('0x4a')](_0x3d867e[_0x9727('0x4b')],qs[_0x9727('0x4d')](_0x4b0ab0[_0x9727('0x48')][_0x9727('0x4d')]));_0x5f4736[_0x9727('0x4c')]=_0x5f4736[_0x9727('0x4c')][_0x9727('0x4e')]?_0x5f4736['attributes']:_0x3d867e[_0x9727('0x4b')];if(!_0x4b0ab0['query'][_0x9727('0x4f')](_0x9727('0x50'))){_0x5f4736[_0x9727('0x34')]=qs[_0x9727('0x34')](_0x4b0ab0['query']['limit']);_0x5f4736[_0x9727('0x31')]=qs['offset'](_0x4b0ab0['query'][_0x9727('0x31')]);}_0x5f4736['order']=qs[_0x9727('0x52')](_0x4b0ab0['query']['sort']);_0x5f4736['where']=qs[_0x9727('0x49')](_[_0x9727('0x53')](_0x4b0ab0['query'],_0x3d867e[_0x9727('0x49')]));_0x5f4736[_0x9727('0x55')][_0x9727('0x6a')]=_0x2e20f1['id'];if(_0x4b0ab0[_0x9727('0x48')]['filter']){_0x5f4736[_0x9727('0x55')]=_[_0x9727('0x5f')](_0x5f4736[_0x9727('0x55')],{'$or':_[_0x9727('0x56')](_0x5f4736[_0x9727('0x4c')],function(_0x3fd6cd){var _0x4369d2={};_0x4369d2[_0x3fd6cd]={'$like':'%'+_0x4b0ab0[_0x9727('0x48')]['filter']+'%'};return _0x4369d2;})});}_0x5f4736=_['merge']({},_0x5f4736,_0x4b0ab0['options']);return db[_0x9727('0x6b')][_0x9727('0x33')]({'where':_0x5f4736['where']})[_0x9727('0x23')](function(_0x594c5f){_0x522632[_0x9727('0x33')]=_0x594c5f;if(_0x4b0ab0['query']['includeAll']){_0x5f4736[_0x9727('0x5a')]=[{'all':!![]}];}return db[_0x9727('0x6b')][_0x9727('0x5b')](_0x5f4736);})['then'](function(_0x37ed01){_0x522632['rows']=_0x37ed01;return _0x522632;});}})['then'](respondWithFilteredResult(_0x7e9f9e,_0x5f4736))['catch'](handleError(_0x7e9f9e,null));};exports[_0x9727('0x6e')]=function(_0x5d512a,_0x34f1e,_0xfce95f){return db[_0x9727('0x44')][_0x9727('0x60')]({'where':{'id':_0x5d512a[_0x9727('0x5d')]['id']}})[_0x9727('0x23')](handleEntityNotFound(_0x34f1e,null))[_0x9727('0x23')](function(_0x4d7493){if(_0x4d7493){return _0x4d7493[_0x9727('0x6e')](_0x5d512a[_0x9727('0x48')][_0x9727('0x6f')]);}})[_0x9727('0x23')](respondWithStatusCode(_0x34f1e,null))[_0x9727('0x61')](handleError(_0x34f1e,null));};exports['addAnswer']=function(_0x14abb1,_0x56c847,_0x5efa34){if(_0x14abb1[_0x9727('0x63')]['id']){delete _0x14abb1[_0x9727('0x63')]['id'];}return db[_0x9727('0x44')]['find']({'where':{'id':_0x14abb1[_0x9727('0x5d')]['id']}})[_0x9727('0x23')](handleEntityNotFound(_0x56c847,null))[_0x9727('0x23')](function(_0x577019){if(_0x577019){_0x14abb1[_0x9727('0x63')][_0x9727('0x6a')]=_0x577019['id'];return db[_0x9727('0x70')][_0x9727('0x62')](_0x14abb1[_0x9727('0x63')]);}})[_0x9727('0x23')](respondWithResult(_0x56c847,null))['catch'](handleError(_0x56c847,null));};exports[_0x9727('0x71')]=function(_0xbdd99e,_0x41ac7a,_0x934747){var _0x164c93={'raw':![],'where':{}};var _0x39f449={};var _0x254145={'count':0x0,'rows':[]};return db['OpenchannelAccount'][_0x9727('0x6d')]({'where':{'id':_0xbdd99e[_0x9727('0x5d')]['id']}})[_0x9727('0x23')](handleEntityNotFound(_0x41ac7a,null))[_0x9727('0x23')](function(_0x33a1de){if(_0x33a1de){_0x39f449[_0x9727('0x4b')]=_[_0x9727('0x5e')](db['CannedAnswer']['rawAttributes']);_0x39f449[_0x9727('0x48')]=_[_0x9727('0x5e')](_0xbdd99e[_0x9727('0x48')]);_0x39f449['filters']=_[_0x9727('0x4a')](_0x39f449[_0x9727('0x4b')],_0x39f449['query']);_0x164c93[_0x9727('0x4c')]=_[_0x9727('0x4a')](_0x39f449[_0x9727('0x4b')],qs[_0x9727('0x4d')](_0xbdd99e[_0x9727('0x48')][_0x9727('0x4d')]));_0x164c93['attributes']=_0x164c93['attributes']['length']?_0x164c93[_0x9727('0x4c')]:_0x39f449[_0x9727('0x4b')];if(!_0xbdd99e['query'][_0x9727('0x4f')]('nolimit')){_0x164c93[_0x9727('0x34')]=qs[_0x9727('0x34')](_0xbdd99e[_0x9727('0x48')]['limit']);_0x164c93[_0x9727('0x31')]=qs[_0x9727('0x31')](_0xbdd99e[_0x9727('0x48')]['offset']);}_0x164c93[_0x9727('0x51')]=qs[_0x9727('0x52')](_0xbdd99e[_0x9727('0x48')][_0x9727('0x52')]);_0x164c93[_0x9727('0x55')]=qs[_0x9727('0x49')](_[_0x9727('0x53')](_0xbdd99e[_0x9727('0x48')],_0x39f449['filters']));_0x164c93[_0x9727('0x55')][_0x9727('0x6a')]=_0x33a1de['id'];if(_0xbdd99e[_0x9727('0x48')][_0x9727('0x54')]){_0x164c93[_0x9727('0x55')]=_['merge'](_0x164c93[_0x9727('0x55')],{'$or':_['map'](_0x164c93[_0x9727('0x4c')],function(_0x4c4943){var _0x187d41={};_0x187d41[_0x4c4943]={'$like':'%'+_0xbdd99e['query'][_0x9727('0x54')]+'%'};return _0x187d41;})});}_0x164c93=_[_0x9727('0x5f')]({},_0x164c93,_0xbdd99e[_0x9727('0x58')]);return db[_0x9727('0x70')][_0x9727('0x33')]({'where':_0x164c93[_0x9727('0x55')]})['then'](function(_0x3f68b4){_0x254145[_0x9727('0x33')]=_0x3f68b4;if(_0xbdd99e['query']['includeAll']){_0x164c93[_0x9727('0x5a')]=[{'all':!![]}];}return db[_0x9727('0x70')][_0x9727('0x5b')](_0x164c93);})[_0x9727('0x23')](function(_0x41f7c0){_0x254145[_0x9727('0x5c')]=_0x41f7c0;return _0x254145;});}})[_0x9727('0x23')](respondWithFilteredResult(_0x41ac7a,_0x164c93))[_0x9727('0x61')](handleError(_0x41ac7a,null));};exports[_0x9727('0x72')]=function(_0x344cb8,_0x44725c,_0x13eb08){return db[_0x9727('0x44')][_0x9727('0x60')]({'where':{'id':_0x344cb8[_0x9727('0x5d')]['id']}})[_0x9727('0x23')](handleEntityNotFound(_0x44725c,null))[_0x9727('0x23')](function(_0x3f66d4){if(_0x3f66d4){return _0x3f66d4['removeAnswers'](_0x344cb8[_0x9727('0x48')][_0x9727('0x6f')]);}})[_0x9727('0x23')](respondWithStatusCode(_0x44725c,null))[_0x9727('0x61')](handleError(_0x44725c,null));};exports['notify']=function(_0x1af9b9,_0x3cdc68,_0x2fc479){var _0x4f7b31={'body':_0x1af9b9[_0x9727('0x63')],'channel':_0x9727('0x73')};var _0x7f5f24=[];var _0x19f675=[];var _0x2d8dac={};var _0x4dc8a2=![];return db[_0x9727('0x74')][_0x9727('0x69')]()['then'](function(_0x37ad23){if(!_0x37ad23){throw new db[(_0x9727('0x75'))][(_0x9727('0x76'))]('no\x20available\x20attributes');}_0x7f5f24=_[_0x9727('0x77')](_[_0x9727('0x5e')](_0x37ad23),[_0x9727('0x78'),_0x9727('0x79')]);_0x19f675=_['difference'](_['keys'](_0x37ad23),[_0x9727('0x78'),_0x9727('0x79'),_0x9727('0x7a'),'ListId']);if(_0x1af9b9[_0x9727('0x63')]['id']){delete _0x1af9b9[_0x9727('0x63')]['id'];}if(_['isNil'](_0x1af9b9['body']['from'])){throw new db[(_0x9727('0x75'))][(_0x9727('0x76'))](_0x9727('0x7b'));}if(_[_0x9727('0x7c')](_0x1af9b9[_0x9727('0x63')][_0x9727('0x63')])||_0x1af9b9[_0x9727('0x63')][_0x9727('0x63')]===''){throw new db['Sequelize']['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x9727('0x7c')](_0x1af9b9[_0x9727('0x63')][_0x9727('0x7d')])){throw new db[(_0x9727('0x75'))]['ValidationError'](_0x9727('0x7e')+_0x19f675);}if(!_[_0x9727('0x7f')](_0x19f675,_0x1af9b9[_0x9727('0x63')][_0x9727('0x7d')])){throw new db[(_0x9727('0x75'))][(_0x9727('0x76'))](_0x9727('0x80')+_0x19f675);}_0x2d8dac[_0x1af9b9[_0x9727('0x63')]['mapKey']]=_0x1af9b9[_0x9727('0x63')][_0x9727('0x81')];})['then'](function(){return db[_0x9727('0x44')][_0x9727('0x60')]({'where':{'id':_0x1af9b9[_0x9727('0x5d')]['id']},'include':[{'model':db[_0x9727('0x82')],'as':_0x9727('0x83'),'include':[{'model':db[_0x9727('0x74')],'as':'Contacts','where':_0x2d8dac,'limit':0x1,'order':[[_0x9727('0x79'),_0x9727('0x84')]]}]},{'model':db[_0x9727('0x85')],'as':'Applications'}]});})[_0x9727('0x23')](handleEntityNotFound(_0x3cdc68,null))[_0x9727('0x23')](function(_0x473416){if(_0x473416&&_0x473416['List']){_0x4f7b31['account']=_0x473416;_0x4f7b31[_0x9727('0x86')]=_0x473416[_0x9727('0x87')];_0x4f7b31['list']=_0x473416[_0x9727('0x83')];_0x4f7b31[_0x9727('0x86')]=_[_0x9727('0x88')](_0x4f7b31[_0x9727('0x86')],[_0x9727('0x89')],['asc']);if(_0x4f7b31[_0x9727('0x8a')][_0x9727('0x87')]){delete _0x4f7b31[_0x9727('0x8a')][_0x9727('0x87')];}if(_0x4f7b31[_0x9727('0x8a')][_0x9727('0x83')]&&_0x4f7b31[_0x9727('0x8a')]['List']['Contacts'][_0x9727('0x4e')]){return _0x4f7b31['account'][_0x9727('0x83')]['Contacts'][0x0];}var _0xc0e09a=_[_0x9727('0x1c')](_0x1af9b9[_0x9727('0x63')],{'firstName':_0x1af9b9[_0x9727('0x63')]['from'],'ListId':_0x473416[_0x9727('0x8b')]});_0xc0e09a[_0x1af9b9['body']['mapKey']]=_0x1af9b9['body'][_0x9727('0x81')];return db[_0x9727('0x74')][_0x9727('0x62')](_0xc0e09a,{'fields':_0x7f5f24,'raw':!![]});}})[_0x9727('0x23')](handleEntityNotFound(_0x3cdc68,null))[_0x9727('0x23')](function(_0x406c72){_0x4f7b31[_0x9727('0x8c')]=_0x406c72;if(_0x406c72){var _0x3e04e8={'ContactId':_0x406c72['id'],'OpenchannelAccountId':_0x1af9b9[_0x9727('0x5d')]['id'],'from':(_0x406c72[_0x9727('0x8d')]||'')+'\x20'+(_0x406c72[_0x9727('0x8e')]||'')};var _0x1dc79e={'OpenchannelAccountId':_0x1af9b9[_0x9727('0x5d')]['id'],'closed':![]};if(_0x1af9b9['body'][_0x9727('0x8f')]){_0x1dc79e[_0x9727('0x8f')]=_0x1af9b9[_0x9727('0x63')]['threadId'];return db[_0x9727('0x90')][_0x9727('0x60')]({'where':_0x1dc79e})['then'](function(_0x569f7c){if(_0x569f7c){return[_0x569f7c,![]];}_0x3e04e8[_0x9727('0x8f')]=_0x1af9b9[_0x9727('0x63')][_0x9727('0x8f')];_0x3e04e8[_0x9727('0x91')]=_0x1af9b9[_0x9727('0x63')]['externalUrl'];return db['OpenchannelInteraction'][_0x9727('0x62')](_0x3e04e8)[_0x9727('0x23')](function(_0x265626){return[_0x265626,!![]];});});}else{_0x1dc79e[_0x9727('0x8f')]=null;}_0x1dc79e[_0x9727('0x92')]=_0x406c72['id'];return db['OpenchannelInteraction'][_0x9727('0x60')]({'where':_0x1dc79e})['then'](function(_0x4bfefd){if(_0x4bfefd){return[_0x4bfefd,![]];}return db[_0x9727('0x90')][_0x9727('0x62')](_0x3e04e8)[_0x9727('0x23')](function(_0x3a63bd){return[_0x3a63bd,!![]];});});}})[_0x9727('0x93')](function(_0x510e9f,_0x154845){if(_0x510e9f){_0x4dc8a2=_0x154845;if(!_0x154845){var _0x5b5aab={'from':(_0x4f7b31[_0x9727('0x8c')][_0x9727('0x8d')]||'')+'\x20'+(_0x4f7b31[_0x9727('0x8c')][_0x9727('0x8e')]||'')};if(_0x1af9b9[_0x9727('0x63')][_0x9727('0x8f')]&&_0x1af9b9[_0x9727('0x63')]['messageId']&&_0x1af9b9[_0x9727('0x63')]['threadId']!=_0x1af9b9[_0x9727('0x63')][_0x9727('0x94')]){_0x5b5aab[_0x9727('0x8f')]=_0x1af9b9['body']['messageId'];}return _0x510e9f[_0x9727('0x3a')](_0x5b5aab);}else{return _0x510e9f;}}})[_0x9727('0x23')](function(_0x1da21f){_0x4f7b31[_0x9727('0x95')]=_0x1da21f[_0x9727('0x3c')]({'plain':!![]});_0x4f7b31[_0x9727('0x95')][_0x9727('0x96')]=_0x4dc8a2;if(_0x4f7b31[_0x9727('0x95')][_0x9727('0x96')]){if(_0x4f7b31['account']['autoclose']){_0x4f7b31[_0x9727('0x86')][_0x9727('0x97')]({'id':0x0,'priority':_0x4f7b31['applications'][_0x9727('0x4e')]+0x1,'app':'close','appdata':'unmanaged','interval':_0x9727('0x98')});}}return db[_0x9727('0x99')][_0x9727('0x62')]({'body':_0x1af9b9['body'][_0x9727('0x63')],'OpenchannelAccountId':_0x1af9b9[_0x9727('0x5d')]['id'],'OpenchannelInteractionId':_0x1da21f['id'],'direction':'in','ContactId':_0x4f7b31['contact']['id'],'AttachmentId':_0x1af9b9[_0x9727('0x63')][_0x9727('0x9a')]});})[_0x9727('0x23')](function(_0x1b5f7b){_0x4f7b31['message']=_0x1b5f7b;if(_0x4f7b31[_0x9727('0x95')][_0x9727('0x9b')]){return db[_0x9727('0x9c')][_0x9727('0x60')]({'attributes':['id',_0x9727('0x3f')],'where':{'id':_0x4f7b31[_0x9727('0x95')]['UserId']}})[_0x9727('0x23')](function(_0x304d8f){if(_0x304d8f){_0x4f7b31['applications']['unshift']({'id':0x0,'priority':0x0,'app':_0x9727('0x9d'),'appdata':_0x304d8f[_0x9727('0x3f')]+','+(_0x4f7b31['account'][_0x9727('0x9e')]||0xa),'interval':_0x9727('0x98')});_0x4f7b31[_0x9727('0x9f')]=![];}return respondWithRpcPromise('Start',_0x9727('0xa0'),_0x4f7b31);});}return respondWithRpcPromise(_0x9727('0xa1'),_0x9727('0xa0'),_0x4f7b31);})[_0x9727('0x23')](function(_0x2d9bc7){respondWithRpcPromise(_0x9727('0xa2'),'EventManager',{'event':'notify','message':_0x2d9bc7},client9002);return _0x2d9bc7;})[_0x9727('0x23')](respondWithResult(_0x3cdc68,null))[_0x9727('0x61')](handleError(_0x3cdc68,null));};exports[_0x9727('0xa3')]=function(_0xd10646,_0x249dda,_0x50196d){return db[_0x9727('0x44')]['findOne']({'where':{'id':_0xd10646['params']['id']}})[_0x9727('0x23')](handleEntityNotFound(_0x249dda,null))['then'](function(_0x488fc5){if(_0x488fc5){return db['sequelize'][_0x9727('0xa4')](function(_0x5f22fc){return db[_0x9727('0x85')][_0x9727('0x3b')]({'where':{'OpenchannelAccountId':_0xd10646[_0x9727('0x5d')]['id']},'transaction':_0x5f22fc})[_0x9727('0x23')](function(_0x410a0f){var _0x1e813d=_['map'](_0xd10646[_0x9727('0x63')],function(_0x551347){_0x551347['OpenchannelAccountId']=_0xd10646[_0x9727('0x5d')]['id'];return _0x551347;});return db['OpenchannelApplication'][_0x9727('0xa5')](_0x1e813d,{'transaction':_0x5f22fc});});})[_0x9727('0x23')](function(){return db[_0x9727('0x85')][_0x9727('0xa6')]({'where':{'OpenchannelAccountId':_0xd10646['params']['id']},'order':_0x9727('0x89')});});}})['then'](respondWithResult(_0x249dda,null))[_0x9727('0x61')](handleError(_0x249dda,null));};exports[_0x9727('0xa7')]=function(_0x51b2f5,_0x1a34cb,_0x21a0f4){var _0x2efedd={};var _0x2a4cb7={};var _0x11d270;var _0x3c82d6;return db[_0x9727('0x44')][_0x9727('0x6d')]({'where':{'id':_0x51b2f5['params']['id']}})['then'](handleEntityNotFound(_0x1a34cb,null))[_0x9727('0x23')](function(_0x12ca5f){if(_0x12ca5f){_0x11d270=_0x12ca5f;_0x2a4cb7[_0x9727('0x4b')]=_[_0x9727('0x5e')](db[_0x9727('0x85')][_0x9727('0x45')]);_0x2a4cb7['query']=_[_0x9727('0x5e')](_0x51b2f5['query']);_0x2a4cb7[_0x9727('0x49')]=_[_0x9727('0x4a')](_0x2a4cb7[_0x9727('0x4b')],_0x2a4cb7[_0x9727('0x48')]);_0x2efedd['attributes']=_['intersection'](_0x2a4cb7['model'],qs['fields'](_0x51b2f5['query']['fields']));_0x2efedd[_0x9727('0x4c')]=_0x2efedd[_0x9727('0x4c')][_0x9727('0x4e')]?_0x2efedd[_0x9727('0x4c')]:_0x2a4cb7[_0x9727('0x4b')];_0x2efedd['order']=qs[_0x9727('0x52')](_0x51b2f5[_0x9727('0x48')][_0x9727('0x52')]);_0x2efedd[_0x9727('0x55')]=qs[_0x9727('0x49')](_[_0x9727('0x53')](_0x51b2f5[_0x9727('0x48')],_0x2a4cb7[_0x9727('0x49')]));if(_0x51b2f5[_0x9727('0x48')]['filter']){_0x2efedd['where']=_['merge'](_0x2efedd[_0x9727('0x55')],{'$or':_[_0x9727('0x56')](_0x2efedd[_0x9727('0x4c')],function(_0x2af453){var _0x4623aa={};_0x4623aa[_0x2af453]={'$like':'%'+_0x51b2f5[_0x9727('0x48')][_0x9727('0x54')]+'%'};return _0x4623aa;})});}_0x2efedd=_[_0x9727('0x5f')]({},_0x2efedd,_0x51b2f5[_0x9727('0x58')]);return _0x11d270['getApplications'](_0x2efedd);}})[_0x9727('0x23')](function(_0x66a439){if(_0x66a439){_0x3c82d6=_0x66a439['length'];if(!_0x51b2f5[_0x9727('0x48')]['hasOwnProperty']('nolimit')){_0x2efedd[_0x9727('0x34')]=qs[_0x9727('0x34')](_0x51b2f5[_0x9727('0x48')][_0x9727('0x34')]);_0x2efedd[_0x9727('0x31')]=qs['offset'](_0x51b2f5[_0x9727('0x48')]['offset']);}return _0x11d270['getApplications'](_0x2efedd);}})[_0x9727('0x23')](function(_0x4790d1){if(_0x4790d1){return _0x4790d1?{'count':_0x3c82d6,'rows':_0x4790d1}:null;}})['then'](respondWithResult(_0x1a34cb,null))['catch'](handleError(_0x1a34cb,null));};exports[_0x9727('0xa8')]=function(_0x592ba0,_0x535901,_0x35aa3b){var _0x2d9347={'raw':![],'where':{}};var _0x1cf559={};var _0x1208e3={'count':0x0,'rows':[]};return db[_0x9727('0x44')][_0x9727('0x6d')]({'where':{'id':_0x592ba0['params']['id']}})[_0x9727('0x23')](handleEntityNotFound(_0x535901,null))[_0x9727('0x23')](function(_0x20b322){if(_0x20b322){_0x1cf559['model']=_[_0x9727('0x5e')](db[_0x9727('0x90')]['rawAttributes']);_0x1cf559[_0x9727('0x48')]=_['keys'](_0x592ba0['query']);_0x1cf559[_0x9727('0x49')]=_[_0x9727('0x4a')](_0x1cf559[_0x9727('0x4b')],_0x1cf559['query']);_0x2d9347[_0x9727('0x4c')]=_[_0x9727('0x4a')](_0x1cf559[_0x9727('0x4b')],qs[_0x9727('0x4d')](_0x592ba0['query'][_0x9727('0x4d')]));_0x2d9347[_0x9727('0x4c')]=_0x2d9347[_0x9727('0x4c')]['length']?_0x2d9347[_0x9727('0x4c')]:_0x1cf559[_0x9727('0x4b')];if(!_0x592ba0[_0x9727('0x48')]['hasOwnProperty'](_0x9727('0x50'))){_0x2d9347[_0x9727('0x34')]=qs['limit'](_0x592ba0[_0x9727('0x48')][_0x9727('0x34')]);_0x2d9347[_0x9727('0x31')]=qs[_0x9727('0x31')](_0x592ba0['query']['offset']);}_0x2d9347[_0x9727('0x51')]=qs[_0x9727('0x52')](_0x592ba0[_0x9727('0x48')][_0x9727('0x52')]);_0x2d9347[_0x9727('0x55')]=qs[_0x9727('0x49')](_[_0x9727('0x53')](_0x592ba0[_0x9727('0x48')],_0x1cf559[_0x9727('0x49')]));_0x2d9347[_0x9727('0x55')][_0x9727('0x6a')]=_0x20b322['id'];if(_0x592ba0[_0x9727('0x48')][_0x9727('0x54')]){_0x2d9347[_0x9727('0x55')]=_['merge'](_0x2d9347[_0x9727('0x55')],{'$or':_[_0x9727('0x56')](_0x2d9347['attributes'],function(_0x2ee915){var _0x2c5351={};_0x2c5351[_0x2ee915]={'$like':'%'+_0x592ba0[_0x9727('0x48')][_0x9727('0x54')]+'%'};return _0x2c5351;})});}_0x2d9347=_['merge']({},_0x2d9347,_0x592ba0[_0x9727('0x58')]);return db[_0x9727('0x90')]['count']({'where':_0x2d9347['where']})[_0x9727('0x23')](function(_0x5f0b75){_0x1208e3[_0x9727('0x33')]=_0x5f0b75;if(_0x592ba0[_0x9727('0x48')]['includeAll']){_0x2d9347[_0x9727('0x5a')]=[{'model':db[_0x9727('0x74')],'as':_0x9727('0xa9'),'required':![]},{'model':db['User'],'as':_0x9727('0xaa'),'attributes':[_0x9727('0x3f'),_0x9727('0xab'),_0x9727('0xac')],'required':![]},{'model':db[_0x9727('0xad')],'as':_0x9727('0xae'),'attributes':['id',_0x9727('0x3f'),_0x9727('0xaf')],'where':_0x592ba0[_0x9727('0x48')][_0x9727('0xb0')]?{'id':_0x592ba0[_0x9727('0x48')][_0x9727('0xb0')]}:undefined,'required':_0x592ba0[_0x9727('0x48')][_0x9727('0xb0')]?!![]:![]}];}return db[_0x9727('0x90')][_0x9727('0x5b')](_0x2d9347);})['then'](function(_0x415e89){_0x1208e3[_0x9727('0x5c')]=_0x415e89;return _0x1208e3;});}})['then'](respondWithFilteredResult(_0x535901,_0x2d9347))[_0x9727('0x61')](handleError(_0x535901,null));};exports[_0x9727('0xb1')]=function(_0x3ccb27,_0x247e48,_0x52fe6e){return db[_0x9727('0x44')][_0x9727('0x60')]({'where':{'id':_0x3ccb27[_0x9727('0x5d')]['id']}})[_0x9727('0x23')](handleEntityNotFound(_0x247e48,null))[_0x9727('0x23')](function(_0xb49a4a){if(_0xb49a4a){return _0xb49a4a[_0x9727('0xb1')](_0x3ccb27[_0x9727('0x63')][_0x9727('0x6f')],_['omit'](_0x3ccb27[_0x9727('0x63')],[_0x9727('0x6f'),'id'])||{})[_0x9727('0x93')](function(_0x44f162){for(var _0x59e711=0x0;_0x59e711<_0x3ccb27[_0x9727('0x63')][_0x9727('0x6f')][_0x9727('0x4e')];_0x59e711+=0x1){socket[_0x9727('0xb2')](_0x9727('0xb3'),{'UserId':Number(_0x3ccb27[_0x9727('0x63')][_0x9727('0x6f')][_0x59e711]),'OpenchannelAccountId':Number(_0x3ccb27['params']['id'])});}return _0x44f162;});}})['then'](respondWithResult(_0x247e48,null))[_0x9727('0x61')](handleError(_0x247e48,null));};exports[_0x9727('0xb4')]=function(_0x5aaf68,_0x30d958,_0x1c9d54){return db[_0x9727('0x44')][_0x9727('0x60')]({'where':{'id':_0x5aaf68['params']['id']}})[_0x9727('0x23')](handleEntityNotFound(_0x30d958,null))['then'](function(_0x4e00f9){if(_0x4e00f9){return _0x4e00f9[_0x9727('0xb4')](_0x5aaf68[_0x9727('0x48')][_0x9727('0x6f')])['then'](function(){if(_[_0x9727('0xb5')](_0x5aaf68[_0x9727('0x48')][_0x9727('0x6f')])){for(var _0x3a86a2=0x0;_0x3a86a2<_0x5aaf68[_0x9727('0x48')][_0x9727('0x6f')][_0x9727('0x4e')];_0x3a86a2+=0x1){socket[_0x9727('0xb2')](_0x9727('0xb6'),{'UserId':Number(_0x5aaf68['query']['ids'][_0x3a86a2]),'OpenchannelAccountId':Number(_0x5aaf68[_0x9727('0x5d')]['id'])});}}else{socket[_0x9727('0xb2')](_0x9727('0xb6'),{'UserId':Number(_0x5aaf68[_0x9727('0x48')][_0x9727('0x6f')]),'OpenchannelAccountId':Number(_0x5aaf68[_0x9727('0x5d')]['id'])});}});}})[_0x9727('0x23')](respondWithStatusCode(_0x30d958,null))[_0x9727('0x61')](handleError(_0x30d958,null));};exports[_0x9727('0xb7')]=function(_0x366bda,_0x37ae28,_0x41e722){var _0x3b1a99={};var _0xefbe6b={};var _0x114cc0;var _0x4c6143;return db[_0x9727('0x44')][_0x9727('0x6d')]({'where':{'id':_0x366bda[_0x9727('0x5d')]['id']}})['then'](handleEntityNotFound(_0x37ae28,null))[_0x9727('0x23')](function(_0x4a16e7){if(_0x4a16e7){_0x114cc0=_0x4a16e7;_0xefbe6b[_0x9727('0x4b')]=_[_0x9727('0x5e')](db[_0x9727('0x9c')][_0x9727('0x45')]);_0xefbe6b[_0x9727('0x48')]=_[_0x9727('0x5e')](_0x366bda[_0x9727('0x48')]);_0xefbe6b['filters']=_[_0x9727('0x4a')](_0xefbe6b[_0x9727('0x4b')],_0xefbe6b[_0x9727('0x48')]);_0x3b1a99[_0x9727('0x4c')]=_[_0x9727('0x4a')](_0xefbe6b[_0x9727('0x4b')],qs[_0x9727('0x4d')](_0x366bda[_0x9727('0x48')][_0x9727('0x4d')]));_0x3b1a99['attributes']=_0x3b1a99['attributes'][_0x9727('0x4e')]?_0x3b1a99[_0x9727('0x4c')]:_0xefbe6b[_0x9727('0x4b')];_0x3b1a99[_0x9727('0x51')]=qs[_0x9727('0x52')](_0x366bda['query'][_0x9727('0x52')]);_0x3b1a99['where']=qs[_0x9727('0x49')](_[_0x9727('0x53')](_0x366bda[_0x9727('0x48')],_0xefbe6b[_0x9727('0x49')]));if(_0x366bda[_0x9727('0x48')][_0x9727('0x54')]){_0x3b1a99[_0x9727('0x55')]=_[_0x9727('0x5f')](_0x3b1a99[_0x9727('0x55')],{'$or':_['map'](_0x3b1a99[_0x9727('0x4c')],function(_0x141fce){var _0x2d7469={};_0x2d7469[_0x141fce]={'$like':'%'+_0x366bda['query'][_0x9727('0x54')]+'%'};return _0x2d7469;})});}_0x3b1a99=_[_0x9727('0x5f')]({},_0x3b1a99,_0x366bda['options']);return _0x114cc0[_0x9727('0xb7')](_0x3b1a99);}})[_0x9727('0x23')](function(_0x10d79e){if(_0x10d79e){_0x4c6143=_0x10d79e[_0x9727('0x4e')];if(!_0x366bda[_0x9727('0x48')][_0x9727('0x4f')](_0x9727('0x50'))){_0x3b1a99['limit']=qs[_0x9727('0x34')](_0x366bda['query'][_0x9727('0x34')]);_0x3b1a99[_0x9727('0x31')]=qs[_0x9727('0x31')](_0x366bda['query'][_0x9727('0x31')]);}return _0x114cc0[_0x9727('0xb7')](_0x3b1a99);}})[_0x9727('0x23')](function(_0x3f94f6){if(_0x3f94f6){return _0x3f94f6?{'count':_0x4c6143,'rows':_0x3f94f6}:null;}})[_0x9727('0x23')](respondWithResult(_0x37ae28,null))['catch'](handleError(_0x37ae28,null));};exports[_0x9727('0x40')]=function(_0x40cdf0,_0x2a2bee,_0x492ecd){var _0x16b6e5,_0x5f183c,_0x1eef04;if(_[_0x9727('0x7c')](_0x40cdf0['body'][_0x9727('0x63')])||_0x40cdf0[_0x9727('0x63')][_0x9727('0x63')]===''){throw new db[(_0x9727('0x75'))][(_0x9727('0x76'))](_0x9727('0xb8'));}if(_[_0x9727('0x7c')](_0x40cdf0['body']['to'])){}_0x16b6e5=_0x40cdf0[_0x9727('0x63')]['to'];return db[_0x9727('0x44')][_0x9727('0x6d')]({'where':{'id':_0x40cdf0[_0x9727('0x5d')]['id']}})['then'](handleEntityNotFound(_0x2a2bee,null))[_0x9727('0x23')](function(_0x3dba49){if(_0x3dba49){return db[_0x9727('0x44')]['find']({'where':{'id':_0x3dba49['id']},'include':[{'model':db[_0x9727('0x82')],'as':_0x9727('0x83'),'include':[{'model':db[_0x9727('0x74')],'as':_0x9727('0xb9'),'where':{[_0x3dba49[_0x9727('0x7d')]]:_0x16b6e5},'limit':0x1,'order':[['updatedAt',_0x9727('0x84')]]}]}]})[_0x9727('0x23')](handleEntityNotFound(_0x2a2bee,null))['then'](function(_0x4e3935){if(_0x4e3935&&_0x4e3935[_0x9727('0x83')]){_0x5f183c=_0x4e3935[_0x9727('0x3c')]({'plain':!![]});if(_0x5f183c['List']&&_0x5f183c[_0x9727('0x83')][_0x9727('0xb9')][_0x9727('0x4e')]){return _0x5f183c[_0x9727('0x83')][_0x9727('0xb9')][0x0];}return db[_0x9727('0x74')][_0x9727('0x62')](_[_0x9727('0x1c')](_0x40cdf0['body'],{'firstName':_0x16b6e5,[_0x4e3935[_0x9727('0x7d')]]:_0x16b6e5,'phone':_0x16b6e5,'ListId':_0x5f183c[_0x9727('0x8b')]}));}})[_0x9727('0x23')](handleEntityNotFound(_0x2a2bee,null))[_0x9727('0x23')](function(_0x1bdbeb){if(_0x1bdbeb){_0x1eef04=_0x1bdbeb;return db[_0x9727('0x90')]['find']({'where':{'ContactId':_0x1eef04['id'],'closed':![],'OpenchannelAccountId':_0x5f183c['id']}})[_0x9727('0x23')](function(_0x32dd12){if(_0x32dd12){return[_0x32dd12,![]];}return db[_0x9727('0x90')][_0x9727('0x62')]({'UserId':_0x40cdf0['user']['id'],'ContactId':_0x1eef04['id'],'OpenchannelAccountId':_0x5f183c['id'],'lastMsgDirection':_0x9727('0xba'),'Messages':[_[_0x9727('0x5f')](_0x40cdf0['body'],{'read':![],'body':_0x40cdf0['body'][_0x9727('0x63')],'OpenchannelAccountId':_0x5f183c['id'],'UserId':_0x40cdf0['user']['id'],'ContactId':_0x1eef04['id']})]},{'include':[{'model':db[_0x9727('0x99')],'as':_0x9727('0xbb')}]})[_0x9727('0x23')](function(_0x416786){return[_0x416786,!![]];});});}})[_0x9727('0x93')](function(_0x56ff16,_0x50a5c6){if(_0x50a5c6){return _0x56ff16;}return db[_0x9727('0x99')][_0x9727('0x62')](_[_0x9727('0x5f')](_0x40cdf0[_0x9727('0x63')],{'read':![],'body':_0x40cdf0[_0x9727('0x63')]['body'],'OpenchannelAccountId':_0x5f183c['id'],'OpenchannelInteractionId':_0x56ff16['id'],'UserId':_0x40cdf0[_0x9727('0x64')]['id'],'ContactId':_0x1eef04['id']}))[_0x9727('0x23')](function(_0x54c82c){_0x56ff16['dataValues'][_0x9727('0xbb')]=[];_0x56ff16[_0x9727('0xbc')][_0x9727('0xbb')]['push'](_0x54c82c[_0x9727('0xbc')]);return _0x56ff16;});});}})['then'](respondWithResult(_0x2a2bee,null))[_0x9727('0x61')](handleError(_0x2a2bee,null));};
\ No newline at end of file
+var _0x8fce=['show','params','keys','options','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','describe','addDisposition','OpenchannelAccountId','getDispositions','findOne','Disposition','order','sort','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','removeAnswers','notify','CmContact','Sequelize','ValidationError','difference','createdAt','updatedAt','CompanyId','ListId','isNil','from','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','OpenchannelApplication','Applications','account','applications','list','orderBy','priority','defaults','contact','threadId','externalUrl','OpenchannelInteraction','ContactId','messageId','interaction','created','push','close','unmanaged','*,*,*,*','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','addApplications','sequelize','transaction','bulkCreate','findAndCountAll','pick','getApplications','Contact','Owner','fullname','internal','Tag','color','tag','addAgents','omit','spread','emit','userOpenchannelAccount:save','removeAgents','userOpenchannelAccount:remove','getAgents','DESC','out','OpenchannelMessage','dataValues','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','lodash','crypto','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','register','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','OpenchannelAccount,\x20%s,\x20%s','message','result','catch','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','get','OpenchannelAccounts','UserProfileResource','destroy','sendStatus','stack','name','index','Pause','mandatoryDispositionPause','map','OpenchannelAccount','rawAttributes','fieldName','type','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','where','filters','filter','VIRTUAL','merge','includeAll','include','findAll','rows'];(function(_0x1a6b28,_0x51a033){var _0x5ba51b=function(_0x4e751d){while(--_0x4e751d){_0x1a6b28['push'](_0x1a6b28['shift']());}};_0x5ba51b(++_0x51a033);}(_0x8fce,0x1d5));var _0xe8fc=function(_0xbca086,_0x55b9fc){_0xbca086=_0xbca086-0x0;var _0x347bc2=_0x8fce[_0xbca086];return _0x347bc2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe8fc('0x0'));var zipdir=require(_0xe8fc('0x1'));var jsonpatch=require(_0xe8fc('0x2'));var rp=require(_0xe8fc('0x3'));var moment=require(_0xe8fc('0x4'));var BPromise=require(_0xe8fc('0x5'));var Mustache=require(_0xe8fc('0x6'));var util=require('util');var path=require(_0xe8fc('0x7'));var sox=require(_0xe8fc('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe8fc('0x9'));var squel=require('squel');var crypto=require(_0xe8fc('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xe8fc('0xb'));var querystring=require(_0xe8fc('0xc'));var Papa=require(_0xe8fc('0xd'));var Redis=require(_0xe8fc('0xe'));var authService=require(_0xe8fc('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe8fc('0x10'));var logger=require(_0xe8fc('0x11'))(_0xe8fc('0x12'));var utils=require(_0xe8fc('0x13'));var config=require(_0xe8fc('0x14'));var licenseUtil=require(_0xe8fc('0x15'));var db=require(_0xe8fc('0x16'))['db'];config[_0xe8fc('0x17')]=_['defaults'](config[_0xe8fc('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0xe8fc('0x18'))(new Redis(config[_0xe8fc('0x17')]));require('./openchannelAccount.socket')[_0xe8fc('0x19')](socket);var jayson=require(_0xe8fc('0x1a'));var client=jayson[_0xe8fc('0x1b')][_0xe8fc('0x1c')]({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x43907d,_0xf161a6,_0x318995,_0x55094f){return new BPromise(function(_0x1bdb61,_0x1c72b1){var _0x4078a4=_0x55094f||client;return _0x4078a4[_0xe8fc('0x1d')](_0x43907d,_0x318995)[_0xe8fc('0x1e')](function(_0x26e27a){logger[_0xe8fc('0x1f')]('OpenchannelAccount,\x20%s,\x20%s',_0xf161a6,_0xe8fc('0x20'));logger[_0xe8fc('0x21')]('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0xf161a6,'request\x20sent',JSON[_0xe8fc('0x22')](_0x26e27a));if(_0x26e27a[_0xe8fc('0x23')]){if(_0x26e27a[_0xe8fc('0x23')]['code']===0x1f4){logger[_0xe8fc('0x23')](_0xe8fc('0x24'),_0xf161a6,_0x26e27a['error']['message']);return _0x1c72b1(_0x26e27a[_0xe8fc('0x23')]['message']);}logger[_0xe8fc('0x23')]('OpenchannelAccount,\x20%s,\x20%s',_0xf161a6,_0x26e27a['error']['message']);return _0x1bdb61(_0x26e27a[_0xe8fc('0x23')][_0xe8fc('0x25')]);}else{logger[_0xe8fc('0x1f')](_0xe8fc('0x24'),_0xf161a6,_0xe8fc('0x20'));_0x1bdb61(_0x26e27a[_0xe8fc('0x26')][_0xe8fc('0x25')]);}})[_0xe8fc('0x27')](function(_0x580b28){logger[_0xe8fc('0x23')]('OpenchannelAccount,\x20%s,\x20%s',_0xf161a6,_0x580b28);_0x1c72b1(_0x580b28);});});}function respondWithStatusCode(_0x2565f3,_0x29adab){_0x29adab=_0x29adab||0xcc;return function(_0x5ba9ed){if(_0x5ba9ed){return _0x2565f3['sendStatus'](_0x29adab);}return _0x2565f3[_0xe8fc('0x28')](_0x29adab)[_0xe8fc('0x29')]();};}function respondWithResult(_0x11b545,_0x23d3b1){_0x23d3b1=_0x23d3b1||0xc8;return function(_0x1bf97b){if(_0x1bf97b){return _0x11b545[_0xe8fc('0x28')](_0x23d3b1)[_0xe8fc('0x2a')](_0x1bf97b);}};}function respondWithFilteredResult(_0x394511,_0x6ce95f){return function(_0x3cfc81){if(_0x3cfc81){var _0x1d4012=typeof _0x6ce95f[_0xe8fc('0x2b')]===_0xe8fc('0x2c')&&typeof _0x6ce95f[_0xe8fc('0x2d')]===_0xe8fc('0x2c');var _0x46ee15=_0x3cfc81[_0xe8fc('0x2e')];var _0x11554c=_0x1d4012?0x0:_0x6ce95f[_0xe8fc('0x2b')];var _0x11c65b=_0x1d4012?_0x3cfc81[_0xe8fc('0x2e')]:_0x6ce95f['offset']+_0x6ce95f[_0xe8fc('0x2d')];var _0x353be4;if(_0x11c65b>=_0x46ee15){_0x11c65b=_0x46ee15;_0x353be4=0xc8;}else{_0x353be4=0xce;}_0x394511[_0xe8fc('0x28')](_0x353be4);return _0x394511['set'](_0xe8fc('0x2f'),_0x11554c+'-'+_0x11c65b+'/'+_0x46ee15)[_0xe8fc('0x2a')](_0x3cfc81);}return null;};}function patchUpdates(_0x4e4830){return function(_0x3b4f3b){try{jsonpatch[_0xe8fc('0x30')](_0x3b4f3b,_0x4e4830,!![]);}catch(_0x5f5808){return BPromise[_0xe8fc('0x31')](_0x5f5808);}return _0x3b4f3b[_0xe8fc('0x32')]();};}function saveUpdates(_0x56b235,_0x49e481){return function(_0x32475c){if(_0x32475c){return _0x32475c['update'](_0x56b235)[_0xe8fc('0x1e')](function(_0x12a122){return _0x12a122;});}return null;};}function removeEntity(_0x2a6b0,_0x1b2d07){return function(_0x4ea603){if(_0x4ea603){return _0x4ea603['destroy']()[_0xe8fc('0x1e')](function(){var _0x43422d=_0x4ea603[_0xe8fc('0x33')]({'plain':!![]});var _0x13c138=_0xe8fc('0x34');return db[_0xe8fc('0x35')][_0xe8fc('0x36')]({'where':{'type':_0x13c138,'resourceId':_0x43422d['id']}})[_0xe8fc('0x1e')](function(){return _0x4ea603;});})['then'](function(){_0x2a6b0[_0xe8fc('0x28')](0xcc)['end']();});}};}function handleEntityNotFound(_0x53bf6b,_0x10ee8c){return function(_0x38fa5c){if(!_0x38fa5c){_0x53bf6b[_0xe8fc('0x37')](0x194);}return _0x38fa5c;};}function handleError(_0x33ab18,_0x43f3ad){_0x43f3ad=_0x43f3ad||0x1f4;return function(_0x1b4a5d){logger[_0xe8fc('0x23')](_0x1b4a5d[_0xe8fc('0x38')]);if(_0x1b4a5d['name']){delete _0x1b4a5d[_0xe8fc('0x39')];}_0x33ab18['status'](_0x43f3ad)['send'](_0x1b4a5d);};}exports[_0xe8fc('0x3a')]=function(_0x325d04,_0xa5315a){var _0x431e48={'include':[{'model':db[_0xe8fc('0x3b')],'as':_0xe8fc('0x3c')}]},_0x2cae79={},_0x56cd60={'count':0x0,'rows':[]};var _0x2cc5a6=_[_0xe8fc('0x3d')](db[_0xe8fc('0x3e')][_0xe8fc('0x3f')],function(_0x25844c){return{'name':_0x25844c[_0xe8fc('0x40')],'type':_0x25844c[_0xe8fc('0x41')]['key']};});_0x2cae79[_0xe8fc('0x42')]=_[_0xe8fc('0x3d')](_0x2cc5a6,_0xe8fc('0x39'));_0x2cae79[_0xe8fc('0x43')]=_['keys'](_0x325d04[_0xe8fc('0x43')]);_0x2cae79['filters']=_[_0xe8fc('0x44')](_0x2cae79['model'],_0x2cae79[_0xe8fc('0x43')]);_0x431e48[_0xe8fc('0x45')]=_[_0xe8fc('0x44')](_0x2cae79[_0xe8fc('0x42')],qs['fields'](_0x325d04[_0xe8fc('0x43')][_0xe8fc('0x46')]));_0x431e48[_0xe8fc('0x45')]=_0x431e48[_0xe8fc('0x45')][_0xe8fc('0x47')]?_0x431e48['attributes']:_0x2cae79['model'];if(!_0x325d04['query'][_0xe8fc('0x48')](_0xe8fc('0x49'))){_0x431e48['limit']=qs[_0xe8fc('0x2d')](_0x325d04['query']['limit']);_0x431e48[_0xe8fc('0x2b')]=qs['offset'](_0x325d04[_0xe8fc('0x43')][_0xe8fc('0x2b')]);}_0x431e48['order']=qs['sort'](_0x325d04[_0xe8fc('0x43')]['sort']);_0x431e48[_0xe8fc('0x4a')]=qs[_0xe8fc('0x4b')](_['pick'](_0x325d04[_0xe8fc('0x43')],_0x2cae79['filters']),_0x2cc5a6);if(_0x325d04[_0xe8fc('0x43')][_0xe8fc('0x4c')]){_0x431e48['where']=_['merge'](_0x431e48[_0xe8fc('0x4a')],{'$or':_[_0xe8fc('0x3d')](_0x2cc5a6,function(_0x1e81c0){if(_0x1e81c0[_0xe8fc('0x41')]!==_0xe8fc('0x4d')){var _0x5779a5={};_0x5779a5[_0x1e81c0[_0xe8fc('0x39')]]={'$like':'%'+_0x325d04[_0xe8fc('0x43')]['filter']+'%'};return _0x5779a5;}})});}_0x431e48=_[_0xe8fc('0x4e')]({},_0x431e48,_0x325d04['options']);var _0x5ec7b3={'where':_0x431e48[_0xe8fc('0x4a')]};return db['OpenchannelAccount'][_0xe8fc('0x2e')](_0x5ec7b3)['then'](function(_0x42064a){_0x56cd60['count']=_0x42064a;if(_0x325d04['query'][_0xe8fc('0x4f')]){_0x431e48[_0xe8fc('0x50')]=[{'all':!![]}];}return db['OpenchannelAccount'][_0xe8fc('0x51')](_0x431e48);})[_0xe8fc('0x1e')](function(_0x3c3b72){_0x56cd60[_0xe8fc('0x52')]=_0x3c3b72;return _0x56cd60;})[_0xe8fc('0x1e')](respondWithFilteredResult(_0xa5315a,_0x431e48))[_0xe8fc('0x27')](handleError(_0xa5315a,null));};exports[_0xe8fc('0x53')]=function(_0x363541,_0xa26d97){var _0xb3985b={'raw':![],'where':{'id':_0x363541[_0xe8fc('0x54')]['id']},'include':[{'model':db[_0xe8fc('0x3b')],'as':_0xe8fc('0x3c')}]},_0x15580e={};_0x15580e[_0xe8fc('0x42')]=_[_0xe8fc('0x55')](db[_0xe8fc('0x3e')][_0xe8fc('0x3f')]);_0x15580e[_0xe8fc('0x43')]=_[_0xe8fc('0x55')](_0x363541[_0xe8fc('0x43')]);_0x15580e[_0xe8fc('0x4b')]=_['intersection'](_0x15580e[_0xe8fc('0x42')],_0x15580e[_0xe8fc('0x43')]);_0xb3985b[_0xe8fc('0x45')]=_['intersection'](_0x15580e['model'],qs[_0xe8fc('0x46')](_0x363541[_0xe8fc('0x43')][_0xe8fc('0x46')]));_0xb3985b['attributes']=_0xb3985b[_0xe8fc('0x45')][_0xe8fc('0x47')]?_0xb3985b[_0xe8fc('0x45')]:_0x15580e['model'];if(_0x363541[_0xe8fc('0x43')][_0xe8fc('0x4f')]){_0xb3985b[_0xe8fc('0x50')]=[{'all':!![]}];}_0xb3985b=_[_0xe8fc('0x4e')]({},_0xb3985b,_0x363541[_0xe8fc('0x56')]);return db[_0xe8fc('0x3e')][_0xe8fc('0x57')](_0xb3985b)['then'](handleEntityNotFound(_0xa26d97,null))[_0xe8fc('0x1e')](respondWithResult(_0xa26d97,null))[_0xe8fc('0x27')](handleError(_0xa26d97,null));};exports[_0xe8fc('0x58')]=function(_0x560e84,_0x7a9843){return db[_0xe8fc('0x3e')][_0xe8fc('0x58')](_0x560e84['body'],{})[_0xe8fc('0x1e')](function(_0x583d22){var _0x180c6c=_0x560e84['user'][_0xe8fc('0x33')]({'plain':!![]});if(!_0x180c6c)throw new Error(_0xe8fc('0x59'));if(_0x180c6c['role']===_0xe8fc('0x5a')){var _0x53371d=_0x583d22[_0xe8fc('0x33')]({'plain':!![]});var _0x4760d9=_0xe8fc('0x34');return db[_0xe8fc('0x5b')][_0xe8fc('0x57')]({'where':{'name':_0x4760d9,'userProfileId':_0x180c6c['userProfileId']},'raw':!![]})[_0xe8fc('0x1e')](function(_0x4c1155){if(_0x4c1155&&_0x4c1155[_0xe8fc('0x5c')]===0x0){return db[_0xe8fc('0x35')][_0xe8fc('0x58')]({'name':_0x53371d[_0xe8fc('0x39')],'resourceId':_0x53371d['id'],'type':_0x4c1155[_0xe8fc('0x39')],'sectionId':_0x4c1155['id']},{})[_0xe8fc('0x1e')](function(){return _0x583d22;});}else{return _0x583d22;}})[_0xe8fc('0x27')](function(_0x11da25){logger[_0xe8fc('0x23')](_0xe8fc('0x5d'),_0x11da25);throw _0x11da25;});}return _0x583d22;})[_0xe8fc('0x1e')](respondWithResult(_0x7a9843,0xc9))['catch'](handleError(_0x7a9843,null));};exports[_0xe8fc('0x5e')]=function(_0x107f65,_0x2aebfb){if(_0x107f65['body']['id']){delete _0x107f65[_0xe8fc('0x5f')]['id'];}return db[_0xe8fc('0x3e')][_0xe8fc('0x57')]({'where':{'id':_0x107f65[_0xe8fc('0x54')]['id']},'include':[{'model':db['Pause'],'as':_0xe8fc('0x3c')}]})['then'](handleEntityNotFound(_0x2aebfb,null))['then'](saveUpdates(_0x107f65[_0xe8fc('0x5f')],null))[_0xe8fc('0x1e')](respondWithResult(_0x2aebfb,null))[_0xe8fc('0x27')](handleError(_0x2aebfb,null));};exports['destroy']=function(_0x238ca9,_0xcb98a5){return db['OpenchannelAccount'][_0xe8fc('0x57')]({'where':{'id':_0x238ca9[_0xe8fc('0x54')]['id']}})[_0xe8fc('0x1e')](handleEntityNotFound(_0xcb98a5,null))[_0xe8fc('0x1e')](removeEntity(_0xcb98a5,null))[_0xe8fc('0x27')](handleError(_0xcb98a5,null));};exports['describe']=function(_0x51b2d9,_0x48f3b6){return db[_0xe8fc('0x3e')][_0xe8fc('0x60')]()[_0xe8fc('0x1e')](respondWithResult(_0x48f3b6,null))[_0xe8fc('0x27')](handleError(_0x48f3b6,null));};exports[_0xe8fc('0x61')]=function(_0x2fd248,_0x5c2e45,_0x3023b4){if(_0x2fd248[_0xe8fc('0x5f')]['id']){delete _0x2fd248[_0xe8fc('0x5f')]['id'];}return db[_0xe8fc('0x3e')]['find']({'where':{'id':_0x2fd248['params']['id']}})['then'](handleEntityNotFound(_0x5c2e45,null))[_0xe8fc('0x1e')](function(_0x11d505){if(_0x11d505){_0x2fd248[_0xe8fc('0x5f')][_0xe8fc('0x62')]=_0x11d505['id'];return db['Disposition'][_0xe8fc('0x58')](_0x2fd248[_0xe8fc('0x5f')]);}})[_0xe8fc('0x1e')](respondWithResult(_0x5c2e45,null))[_0xe8fc('0x27')](handleError(_0x5c2e45,null));};exports[_0xe8fc('0x63')]=function(_0x5df2b1,_0x42b215,_0x1cbeb2){var _0x264c7d={'raw':![],'where':{}};var _0x25c7ec={};var _0x5f0426={'count':0x0,'rows':[]};return db[_0xe8fc('0x3e')][_0xe8fc('0x64')]({'where':{'id':_0x5df2b1['params']['id']}})['then'](handleEntityNotFound(_0x42b215,null))[_0xe8fc('0x1e')](function(_0x460c0a){if(_0x460c0a){_0x25c7ec[_0xe8fc('0x42')]=_[_0xe8fc('0x55')](db[_0xe8fc('0x65')][_0xe8fc('0x3f')]);_0x25c7ec[_0xe8fc('0x43')]=_['keys'](_0x5df2b1[_0xe8fc('0x43')]);_0x25c7ec[_0xe8fc('0x4b')]=_[_0xe8fc('0x44')](_0x25c7ec[_0xe8fc('0x42')],_0x25c7ec['query']);_0x264c7d[_0xe8fc('0x45')]=_['intersection'](_0x25c7ec[_0xe8fc('0x42')],qs['fields'](_0x5df2b1[_0xe8fc('0x43')][_0xe8fc('0x46')]));_0x264c7d[_0xe8fc('0x45')]=_0x264c7d[_0xe8fc('0x45')]['length']?_0x264c7d[_0xe8fc('0x45')]:_0x25c7ec['model'];if(!_0x5df2b1['query'][_0xe8fc('0x48')](_0xe8fc('0x49'))){_0x264c7d[_0xe8fc('0x2d')]=qs[_0xe8fc('0x2d')](_0x5df2b1[_0xe8fc('0x43')]['limit']);_0x264c7d[_0xe8fc('0x2b')]=qs['offset'](_0x5df2b1[_0xe8fc('0x43')][_0xe8fc('0x2b')]);}_0x264c7d[_0xe8fc('0x66')]=qs[_0xe8fc('0x67')](_0x5df2b1['query']['sort']);_0x264c7d[_0xe8fc('0x4a')]=qs[_0xe8fc('0x4b')](_['pick'](_0x5df2b1[_0xe8fc('0x43')],_0x25c7ec[_0xe8fc('0x4b')]));_0x264c7d[_0xe8fc('0x4a')][_0xe8fc('0x62')]=_0x460c0a['id'];if(_0x5df2b1[_0xe8fc('0x43')][_0xe8fc('0x4c')]){_0x264c7d[_0xe8fc('0x4a')]=_[_0xe8fc('0x4e')](_0x264c7d[_0xe8fc('0x4a')],{'$or':_[_0xe8fc('0x3d')](_0x264c7d['attributes'],function(_0x41608c){var _0xde421b={};_0xde421b[_0x41608c]={'$like':'%'+_0x5df2b1[_0xe8fc('0x43')]['filter']+'%'};return _0xde421b;})});}_0x264c7d=_['merge']({},_0x264c7d,_0x5df2b1[_0xe8fc('0x56')]);return db[_0xe8fc('0x65')][_0xe8fc('0x2e')]({'where':_0x264c7d['where']})['then'](function(_0x41caa3){_0x5f0426[_0xe8fc('0x2e')]=_0x41caa3;if(_0x5df2b1[_0xe8fc('0x43')][_0xe8fc('0x4f')]){_0x264c7d['include']=[{'all':!![]}];}return db[_0xe8fc('0x65')][_0xe8fc('0x51')](_0x264c7d);})[_0xe8fc('0x1e')](function(_0x228676){_0x5f0426[_0xe8fc('0x52')]=_0x228676;return _0x5f0426;});}})[_0xe8fc('0x1e')](respondWithFilteredResult(_0x42b215,_0x264c7d))[_0xe8fc('0x27')](handleError(_0x42b215,null));};exports[_0xe8fc('0x68')]=function(_0x17bdb7,_0x5a0dfa,_0x474dc2){return db['OpenchannelAccount'][_0xe8fc('0x57')]({'where':{'id':_0x17bdb7[_0xe8fc('0x54')]['id']}})['then'](handleEntityNotFound(_0x5a0dfa,null))['then'](function(_0x2ec6e6){if(_0x2ec6e6){return _0x2ec6e6['removeDispositions'](_0x17bdb7[_0xe8fc('0x43')][_0xe8fc('0x69')]);}})['then'](respondWithStatusCode(_0x5a0dfa,null))[_0xe8fc('0x27')](handleError(_0x5a0dfa,null));};exports[_0xe8fc('0x6a')]=function(_0x482d42,_0x5bc113,_0x4bedbd){if(_0x482d42[_0xe8fc('0x5f')]['id']){delete _0x482d42[_0xe8fc('0x5f')]['id'];}return db[_0xe8fc('0x3e')]['find']({'where':{'id':_0x482d42[_0xe8fc('0x54')]['id']}})[_0xe8fc('0x1e')](handleEntityNotFound(_0x5bc113,null))['then'](function(_0x1dc579){if(_0x1dc579){_0x482d42[_0xe8fc('0x5f')][_0xe8fc('0x62')]=_0x1dc579['id'];return db['CannedAnswer']['create'](_0x482d42[_0xe8fc('0x5f')]);}})[_0xe8fc('0x1e')](respondWithResult(_0x5bc113,null))[_0xe8fc('0x27')](handleError(_0x5bc113,null));};exports[_0xe8fc('0x6b')]=function(_0x367e26,_0x4b2fe2,_0x2e3dcd){var _0x7a5469={'raw':![],'where':{}};var _0x5009cc={};var _0x4b20e5={'count':0x0,'rows':[]};return db[_0xe8fc('0x3e')][_0xe8fc('0x64')]({'where':{'id':_0x367e26[_0xe8fc('0x54')]['id']}})['then'](handleEntityNotFound(_0x4b2fe2,null))[_0xe8fc('0x1e')](function(_0x4f6c84){if(_0x4f6c84){_0x5009cc[_0xe8fc('0x42')]=_[_0xe8fc('0x55')](db[_0xe8fc('0x6c')][_0xe8fc('0x3f')]);_0x5009cc['query']=_[_0xe8fc('0x55')](_0x367e26['query']);_0x5009cc[_0xe8fc('0x4b')]=_['intersection'](_0x5009cc[_0xe8fc('0x42')],_0x5009cc[_0xe8fc('0x43')]);_0x7a5469[_0xe8fc('0x45')]=_[_0xe8fc('0x44')](_0x5009cc[_0xe8fc('0x42')],qs[_0xe8fc('0x46')](_0x367e26[_0xe8fc('0x43')][_0xe8fc('0x46')]));_0x7a5469[_0xe8fc('0x45')]=_0x7a5469[_0xe8fc('0x45')]['length']?_0x7a5469['attributes']:_0x5009cc[_0xe8fc('0x42')];if(!_0x367e26[_0xe8fc('0x43')]['hasOwnProperty'](_0xe8fc('0x49'))){_0x7a5469['limit']=qs[_0xe8fc('0x2d')](_0x367e26[_0xe8fc('0x43')][_0xe8fc('0x2d')]);_0x7a5469['offset']=qs[_0xe8fc('0x2b')](_0x367e26['query'][_0xe8fc('0x2b')]);}_0x7a5469[_0xe8fc('0x66')]=qs[_0xe8fc('0x67')](_0x367e26[_0xe8fc('0x43')][_0xe8fc('0x67')]);_0x7a5469[_0xe8fc('0x4a')]=qs[_0xe8fc('0x4b')](_['pick'](_0x367e26[_0xe8fc('0x43')],_0x5009cc[_0xe8fc('0x4b')]));_0x7a5469[_0xe8fc('0x4a')][_0xe8fc('0x62')]=_0x4f6c84['id'];if(_0x367e26[_0xe8fc('0x43')][_0xe8fc('0x4c')]){_0x7a5469[_0xe8fc('0x4a')]=_[_0xe8fc('0x4e')](_0x7a5469[_0xe8fc('0x4a')],{'$or':_[_0xe8fc('0x3d')](_0x7a5469['attributes'],function(_0x1738bf){var _0x549207={};_0x549207[_0x1738bf]={'$like':'%'+_0x367e26['query'][_0xe8fc('0x4c')]+'%'};return _0x549207;})});}_0x7a5469=_[_0xe8fc('0x4e')]({},_0x7a5469,_0x367e26['options']);return db['CannedAnswer'][_0xe8fc('0x2e')]({'where':_0x7a5469[_0xe8fc('0x4a')]})[_0xe8fc('0x1e')](function(_0x36ffc8){_0x4b20e5[_0xe8fc('0x2e')]=_0x36ffc8;if(_0x367e26[_0xe8fc('0x43')][_0xe8fc('0x4f')]){_0x7a5469[_0xe8fc('0x50')]=[{'all':!![]}];}return db[_0xe8fc('0x6c')][_0xe8fc('0x51')](_0x7a5469);})['then'](function(_0x25dc65){_0x4b20e5['rows']=_0x25dc65;return _0x4b20e5;});}})[_0xe8fc('0x1e')](respondWithFilteredResult(_0x4b2fe2,_0x7a5469))[_0xe8fc('0x27')](handleError(_0x4b2fe2,null));};exports[_0xe8fc('0x6d')]=function(_0x310770,_0x106ae3,_0x31bed2){return db[_0xe8fc('0x3e')][_0xe8fc('0x57')]({'where':{'id':_0x310770[_0xe8fc('0x54')]['id']}})[_0xe8fc('0x1e')](handleEntityNotFound(_0x106ae3,null))[_0xe8fc('0x1e')](function(_0x19b3e9){if(_0x19b3e9){return _0x19b3e9[_0xe8fc('0x6d')](_0x310770[_0xe8fc('0x43')][_0xe8fc('0x69')]);}})[_0xe8fc('0x1e')](respondWithStatusCode(_0x106ae3,null))['catch'](handleError(_0x106ae3,null));};exports[_0xe8fc('0x6e')]=function(_0x33c546,_0x101820,_0x4819b2){var _0x45e32c={'body':_0x33c546[_0xe8fc('0x5f')],'channel':'openchannel'};var _0x1260bb=[];var _0x493028=[];var _0x1fbfd1={};var _0x3089e4=![];return db[_0xe8fc('0x6f')][_0xe8fc('0x60')]()[_0xe8fc('0x1e')](function(_0x25776f){if(!_0x25776f){throw new db[(_0xe8fc('0x70'))][(_0xe8fc('0x71'))]('no\x20available\x20attributes');}_0x1260bb=_[_0xe8fc('0x72')](_['keys'](_0x25776f),[_0xe8fc('0x73'),_0xe8fc('0x74')]);_0x493028=_[_0xe8fc('0x72')](_[_0xe8fc('0x55')](_0x25776f),[_0xe8fc('0x73'),_0xe8fc('0x74'),_0xe8fc('0x75'),_0xe8fc('0x76')]);if(_0x33c546['body']['id']){delete _0x33c546[_0xe8fc('0x5f')]['id'];}if(_[_0xe8fc('0x77')](_0x33c546[_0xe8fc('0x5f')][_0xe8fc('0x78')])){throw new db[(_0xe8fc('0x70'))]['ValidationError']('from\x20is\x20mandatory');}if(_[_0xe8fc('0x77')](_0x33c546[_0xe8fc('0x5f')]['body'])||_0x33c546[_0xe8fc('0x5f')]['body']===''){throw new db[(_0xe8fc('0x70'))][(_0xe8fc('0x71'))](_0xe8fc('0x79'));}if(_[_0xe8fc('0x77')](_0x33c546['body'][_0xe8fc('0x7a')])){throw new db[(_0xe8fc('0x70'))][(_0xe8fc('0x71'))](_0xe8fc('0x7b')+_0x493028);}if(!_['includes'](_0x493028,_0x33c546['body'][_0xe8fc('0x7a')])){throw new db[(_0xe8fc('0x70'))][(_0xe8fc('0x71'))](_0xe8fc('0x7c')+_0x493028);}_0x1fbfd1[_0x33c546[_0xe8fc('0x5f')][_0xe8fc('0x7a')]]=_0x33c546[_0xe8fc('0x5f')][_0xe8fc('0x78')];})[_0xe8fc('0x1e')](function(){return db[_0xe8fc('0x3e')][_0xe8fc('0x57')]({'where':{'id':_0x33c546[_0xe8fc('0x54')]['id']},'include':[{'model':db[_0xe8fc('0x7d')],'as':_0xe8fc('0x7e'),'include':[{'model':db[_0xe8fc('0x6f')],'as':_0xe8fc('0x7f'),'where':_0x1fbfd1,'limit':0x1,'order':[[_0xe8fc('0x74'),'DESC']]}]},{'model':db[_0xe8fc('0x80')],'as':_0xe8fc('0x81')}]});})[_0xe8fc('0x1e')](handleEntityNotFound(_0x101820,null))['then'](function(_0x526229){if(_0x526229&&_0x526229[_0xe8fc('0x7e')]){_0x45e32c[_0xe8fc('0x82')]=_0x526229;_0x45e32c[_0xe8fc('0x83')]=_0x526229[_0xe8fc('0x81')];_0x45e32c[_0xe8fc('0x84')]=_0x526229['List'];_0x45e32c['applications']=_[_0xe8fc('0x85')](_0x45e32c[_0xe8fc('0x83')],[_0xe8fc('0x86')],['asc']);if(_0x45e32c[_0xe8fc('0x82')][_0xe8fc('0x81')]){delete _0x45e32c['account'][_0xe8fc('0x81')];}if(_0x45e32c['account'][_0xe8fc('0x7e')]&&_0x45e32c[_0xe8fc('0x82')][_0xe8fc('0x7e')]['Contacts'][_0xe8fc('0x47')]){return _0x45e32c['account'][_0xe8fc('0x7e')][_0xe8fc('0x7f')][0x0];}var _0xef404f=_[_0xe8fc('0x87')](_0x33c546[_0xe8fc('0x5f')],{'firstName':_0x33c546[_0xe8fc('0x5f')][_0xe8fc('0x78')],'ListId':_0x526229[_0xe8fc('0x76')]});_0xef404f[_0x33c546[_0xe8fc('0x5f')]['mapKey']]=_0x33c546[_0xe8fc('0x5f')]['from'];return db['CmContact']['create'](_0xef404f,{'fields':_0x1260bb,'raw':!![]});}})[_0xe8fc('0x1e')](handleEntityNotFound(_0x101820,null))[_0xe8fc('0x1e')](function(_0x3019af){_0x45e32c[_0xe8fc('0x88')]=_0x3019af;if(_0x3019af){var _0x7f5913={'ContactId':_0x3019af['id'],'OpenchannelAccountId':_0x33c546[_0xe8fc('0x54')]['id'],'from':(_0x3019af['firstName']||'')+'\x20'+(_0x3019af['lastName']||'')};var _0x3cc98c={'OpenchannelAccountId':_0x33c546[_0xe8fc('0x54')]['id'],'closed':![]};if(_0x33c546[_0xe8fc('0x5f')][_0xe8fc('0x89')]){_0x3cc98c[_0xe8fc('0x89')]=_0x33c546['body'][_0xe8fc('0x89')];return db['OpenchannelInteraction'][_0xe8fc('0x57')]({'where':_0x3cc98c})[_0xe8fc('0x1e')](function(_0x4a0838){if(_0x4a0838){return[_0x4a0838,![]];}_0x7f5913[_0xe8fc('0x89')]=_0x33c546[_0xe8fc('0x5f')]['threadId'];_0x7f5913[_0xe8fc('0x8a')]=_0x33c546['body']['externalUrl'];return db[_0xe8fc('0x8b')]['create'](_0x7f5913)[_0xe8fc('0x1e')](function(_0x534eb5){return[_0x534eb5,!![]];});});}else{_0x3cc98c['threadId']=null;}_0x3cc98c[_0xe8fc('0x8c')]=_0x3019af['id'];return db[_0xe8fc('0x8b')]['find']({'where':_0x3cc98c})[_0xe8fc('0x1e')](function(_0x2bb7aa){if(_0x2bb7aa){return[_0x2bb7aa,![]];}return db[_0xe8fc('0x8b')]['create'](_0x7f5913)['then'](function(_0x4ca728){return[_0x4ca728,!![]];});});}})['spread'](function(_0x4e1def,_0x77a24b){if(_0x4e1def){_0x3089e4=_0x77a24b;if(!_0x77a24b){var _0x30de0f={'from':(_0x45e32c[_0xe8fc('0x88')]['firstName']||'')+'\x20'+(_0x45e32c['contact']['lastName']||'')};if(_0x33c546['body'][_0xe8fc('0x89')]&&_0x33c546[_0xe8fc('0x5f')][_0xe8fc('0x8d')]&&_0x33c546[_0xe8fc('0x5f')][_0xe8fc('0x89')]!=_0x33c546[_0xe8fc('0x5f')]['messageId']){_0x30de0f[_0xe8fc('0x89')]=_0x33c546[_0xe8fc('0x5f')]['messageId'];}return _0x4e1def[_0xe8fc('0x5e')](_0x30de0f);}else{return _0x4e1def;}}})[_0xe8fc('0x1e')](function(_0x398d78){_0x45e32c[_0xe8fc('0x8e')]=_0x398d78[_0xe8fc('0x33')]({'plain':!![]});_0x45e32c[_0xe8fc('0x8e')][_0xe8fc('0x8f')]=_0x3089e4;if(_0x45e32c['interaction']['created']){if(_0x45e32c[_0xe8fc('0x82')]['autoclose']){_0x45e32c['applications'][_0xe8fc('0x90')]({'id':0x0,'priority':_0x45e32c[_0xe8fc('0x83')][_0xe8fc('0x47')]+0x1,'app':_0xe8fc('0x91'),'appdata':_0xe8fc('0x92'),'interval':_0xe8fc('0x93')});}}return db['OpenchannelMessage'][_0xe8fc('0x58')]({'body':_0x33c546['body']['body'],'OpenchannelAccountId':_0x33c546[_0xe8fc('0x54')]['id'],'OpenchannelInteractionId':_0x398d78['id'],'direction':'in','ContactId':_0x45e32c[_0xe8fc('0x88')]['id'],'AttachmentId':_0x33c546[_0xe8fc('0x5f')][_0xe8fc('0x94')]});})[_0xe8fc('0x1e')](function(_0x2a32f4){_0x45e32c[_0xe8fc('0x25')]=_0x2a32f4;if(_0x45e32c[_0xe8fc('0x8e')][_0xe8fc('0x95')]){return db[_0xe8fc('0x96')][_0xe8fc('0x57')]({'attributes':['id',_0xe8fc('0x39')],'where':{'id':_0x45e32c[_0xe8fc('0x8e')]['UserId']}})[_0xe8fc('0x1e')](function(_0x3cf47e){if(_0x3cf47e){_0x45e32c[_0xe8fc('0x83')][_0xe8fc('0x97')]({'id':0x0,'priority':0x0,'app':_0xe8fc('0x98'),'appdata':_0x3cf47e['name']+','+(_0x45e32c[_0xe8fc('0x82')][_0xe8fc('0x99')]||0xa),'interval':_0xe8fc('0x93')});_0x45e32c[_0xe8fc('0x9a')]=![];}return respondWithRpcPromise(_0xe8fc('0x9b'),'startRouting',_0x45e32c);});}return respondWithRpcPromise(_0xe8fc('0x9b'),_0xe8fc('0x9c'),_0x45e32c);})[_0xe8fc('0x1e')](function(_0x20069b){respondWithRpcPromise(_0xe8fc('0x9d'),_0xe8fc('0x9d'),{'event':'notify','message':_0x20069b},client9002);return _0x20069b;})[_0xe8fc('0x1e')](respondWithResult(_0x101820,null))['catch'](handleError(_0x101820,null));};exports[_0xe8fc('0x9e')]=function(_0x4d5d11,_0x3e495d,_0x14ae27){return db['OpenchannelAccount'][_0xe8fc('0x64')]({'where':{'id':_0x4d5d11[_0xe8fc('0x54')]['id']}})[_0xe8fc('0x1e')](handleEntityNotFound(_0x3e495d,null))[_0xe8fc('0x1e')](function(_0x10c19d){if(_0x10c19d){return db[_0xe8fc('0x9f')][_0xe8fc('0xa0')](function(_0x185f67){return db[_0xe8fc('0x80')][_0xe8fc('0x36')]({'where':{'OpenchannelAccountId':_0x4d5d11[_0xe8fc('0x54')]['id']},'transaction':_0x185f67})[_0xe8fc('0x1e')](function(_0x15b4df){var _0x12ffca=_['map'](_0x4d5d11[_0xe8fc('0x5f')],function(_0x2543ef){_0x2543ef['OpenchannelAccountId']=_0x4d5d11[_0xe8fc('0x54')]['id'];return _0x2543ef;});return db[_0xe8fc('0x80')][_0xe8fc('0xa1')](_0x12ffca,{'transaction':_0x185f67});});})[_0xe8fc('0x1e')](function(){return db[_0xe8fc('0x80')][_0xe8fc('0xa2')]({'where':{'OpenchannelAccountId':_0x4d5d11[_0xe8fc('0x54')]['id']},'order':_0xe8fc('0x86')});});}})[_0xe8fc('0x1e')](respondWithResult(_0x3e495d,null))[_0xe8fc('0x27')](handleError(_0x3e495d,null));};exports['getApplications']=function(_0x3abda8,_0x2e4b97,_0x14f6f2){var _0x1f8ee6={};var _0x2bb456={};var _0x3a622c;var _0x47a7c8;return db['OpenchannelAccount'][_0xe8fc('0x64')]({'where':{'id':_0x3abda8['params']['id']}})[_0xe8fc('0x1e')](handleEntityNotFound(_0x2e4b97,null))[_0xe8fc('0x1e')](function(_0x1624b3){if(_0x1624b3){_0x3a622c=_0x1624b3;_0x2bb456['model']=_[_0xe8fc('0x55')](db[_0xe8fc('0x80')][_0xe8fc('0x3f')]);_0x2bb456[_0xe8fc('0x43')]=_[_0xe8fc('0x55')](_0x3abda8['query']);_0x2bb456[_0xe8fc('0x4b')]=_[_0xe8fc('0x44')](_0x2bb456[_0xe8fc('0x42')],_0x2bb456['query']);_0x1f8ee6['attributes']=_[_0xe8fc('0x44')](_0x2bb456[_0xe8fc('0x42')],qs[_0xe8fc('0x46')](_0x3abda8[_0xe8fc('0x43')][_0xe8fc('0x46')]));_0x1f8ee6[_0xe8fc('0x45')]=_0x1f8ee6[_0xe8fc('0x45')][_0xe8fc('0x47')]?_0x1f8ee6[_0xe8fc('0x45')]:_0x2bb456[_0xe8fc('0x42')];_0x1f8ee6[_0xe8fc('0x66')]=qs[_0xe8fc('0x67')](_0x3abda8[_0xe8fc('0x43')]['sort']);_0x1f8ee6['where']=qs[_0xe8fc('0x4b')](_[_0xe8fc('0xa3')](_0x3abda8[_0xe8fc('0x43')],_0x2bb456[_0xe8fc('0x4b')]));if(_0x3abda8[_0xe8fc('0x43')][_0xe8fc('0x4c')]){_0x1f8ee6['where']=_[_0xe8fc('0x4e')](_0x1f8ee6[_0xe8fc('0x4a')],{'$or':_[_0xe8fc('0x3d')](_0x1f8ee6[_0xe8fc('0x45')],function(_0x4ede63){var _0x2190d4={};_0x2190d4[_0x4ede63]={'$like':'%'+_0x3abda8[_0xe8fc('0x43')][_0xe8fc('0x4c')]+'%'};return _0x2190d4;})});}_0x1f8ee6=_[_0xe8fc('0x4e')]({},_0x1f8ee6,_0x3abda8['options']);return _0x3a622c[_0xe8fc('0xa4')](_0x1f8ee6);}})[_0xe8fc('0x1e')](function(_0x37f1bb){if(_0x37f1bb){_0x47a7c8=_0x37f1bb[_0xe8fc('0x47')];if(!_0x3abda8[_0xe8fc('0x43')][_0xe8fc('0x48')]('nolimit')){_0x1f8ee6[_0xe8fc('0x2d')]=qs['limit'](_0x3abda8['query']['limit']);_0x1f8ee6['offset']=qs[_0xe8fc('0x2b')](_0x3abda8[_0xe8fc('0x43')][_0xe8fc('0x2b')]);}return _0x3a622c['getApplications'](_0x1f8ee6);}})[_0xe8fc('0x1e')](function(_0x397203){if(_0x397203){return _0x397203?{'count':_0x47a7c8,'rows':_0x397203}:null;}})[_0xe8fc('0x1e')](respondWithResult(_0x2e4b97,null))['catch'](handleError(_0x2e4b97,null));};exports['getInteractions']=function(_0x2439e2,_0x5a94ac,_0x38263c){var _0x32d4e7={'raw':![],'where':{}};var _0x2a7d3b={};var _0x501602={'count':0x0,'rows':[]};return db[_0xe8fc('0x3e')]['findOne']({'where':{'id':_0x2439e2[_0xe8fc('0x54')]['id']}})[_0xe8fc('0x1e')](handleEntityNotFound(_0x5a94ac,null))[_0xe8fc('0x1e')](function(_0x573f37){if(_0x573f37){_0x2a7d3b['model']=_['keys'](db['OpenchannelInteraction']['rawAttributes']);_0x2a7d3b[_0xe8fc('0x43')]=_['keys'](_0x2439e2[_0xe8fc('0x43')]);_0x2a7d3b[_0xe8fc('0x4b')]=_[_0xe8fc('0x44')](_0x2a7d3b[_0xe8fc('0x42')],_0x2a7d3b[_0xe8fc('0x43')]);_0x32d4e7[_0xe8fc('0x45')]=_[_0xe8fc('0x44')](_0x2a7d3b[_0xe8fc('0x42')],qs[_0xe8fc('0x46')](_0x2439e2[_0xe8fc('0x43')][_0xe8fc('0x46')]));_0x32d4e7[_0xe8fc('0x45')]=_0x32d4e7[_0xe8fc('0x45')][_0xe8fc('0x47')]?_0x32d4e7['attributes']:_0x2a7d3b[_0xe8fc('0x42')];if(!_0x2439e2[_0xe8fc('0x43')][_0xe8fc('0x48')]('nolimit')){_0x32d4e7[_0xe8fc('0x2d')]=qs['limit'](_0x2439e2[_0xe8fc('0x43')][_0xe8fc('0x2d')]);_0x32d4e7[_0xe8fc('0x2b')]=qs[_0xe8fc('0x2b')](_0x2439e2[_0xe8fc('0x43')][_0xe8fc('0x2b')]);}_0x32d4e7[_0xe8fc('0x66')]=qs[_0xe8fc('0x67')](_0x2439e2[_0xe8fc('0x43')]['sort']);_0x32d4e7[_0xe8fc('0x4a')]=qs[_0xe8fc('0x4b')](_[_0xe8fc('0xa3')](_0x2439e2['query'],_0x2a7d3b['filters']));_0x32d4e7[_0xe8fc('0x4a')][_0xe8fc('0x62')]=_0x573f37['id'];if(_0x2439e2[_0xe8fc('0x43')]['filter']){_0x32d4e7['where']=_[_0xe8fc('0x4e')](_0x32d4e7[_0xe8fc('0x4a')],{'$or':_[_0xe8fc('0x3d')](_0x32d4e7[_0xe8fc('0x45')],function(_0xc4bc3f){var _0x4a9e17={};_0x4a9e17[_0xc4bc3f]={'$like':'%'+_0x2439e2[_0xe8fc('0x43')][_0xe8fc('0x4c')]+'%'};return _0x4a9e17;})});}_0x32d4e7=_['merge']({},_0x32d4e7,_0x2439e2['options']);return db[_0xe8fc('0x8b')]['count']({'where':_0x32d4e7[_0xe8fc('0x4a')]})[_0xe8fc('0x1e')](function(_0x4a078b){_0x501602['count']=_0x4a078b;if(_0x2439e2[_0xe8fc('0x43')][_0xe8fc('0x4f')]){_0x32d4e7[_0xe8fc('0x50')]=[{'model':db[_0xe8fc('0x6f')],'as':_0xe8fc('0xa5'),'required':![]},{'model':db[_0xe8fc('0x96')],'as':_0xe8fc('0xa6'),'attributes':[_0xe8fc('0x39'),_0xe8fc('0xa7'),_0xe8fc('0xa8')],'required':![]},{'model':db[_0xe8fc('0xa9')],'as':'Tags','attributes':['id',_0xe8fc('0x39'),_0xe8fc('0xaa')],'where':_0x2439e2[_0xe8fc('0x43')]['tag']?{'id':_0x2439e2[_0xe8fc('0x43')][_0xe8fc('0xab')]}:undefined,'required':_0x2439e2[_0xe8fc('0x43')][_0xe8fc('0xab')]?!![]:![]}];}return db['OpenchannelInteraction'][_0xe8fc('0x51')](_0x32d4e7);})['then'](function(_0x39f3d8){_0x501602[_0xe8fc('0x52')]=_0x39f3d8;return _0x501602;});}})[_0xe8fc('0x1e')](respondWithFilteredResult(_0x5a94ac,_0x32d4e7))[_0xe8fc('0x27')](handleError(_0x5a94ac,null));};exports[_0xe8fc('0xac')]=function(_0x2f7930,_0x421f73,_0x5a7253){return db['OpenchannelAccount'][_0xe8fc('0x57')]({'where':{'id':_0x2f7930[_0xe8fc('0x54')]['id']}})[_0xe8fc('0x1e')](handleEntityNotFound(_0x421f73,null))[_0xe8fc('0x1e')](function(_0x4a6de8){if(_0x4a6de8){return _0x4a6de8[_0xe8fc('0xac')](_0x2f7930[_0xe8fc('0x5f')][_0xe8fc('0x69')],_[_0xe8fc('0xad')](_0x2f7930['body'],[_0xe8fc('0x69'),'id'])||{})[_0xe8fc('0xae')](function(_0x478c2e){for(var _0x5fb69d=0x0;_0x5fb69d<_0x2f7930[_0xe8fc('0x5f')][_0xe8fc('0x69')][_0xe8fc('0x47')];_0x5fb69d+=0x1){socket[_0xe8fc('0xaf')](_0xe8fc('0xb0'),{'UserId':Number(_0x2f7930[_0xe8fc('0x5f')][_0xe8fc('0x69')][_0x5fb69d]),'OpenchannelAccountId':Number(_0x2f7930[_0xe8fc('0x54')]['id'])});}return _0x478c2e;});}})[_0xe8fc('0x1e')](respondWithResult(_0x421f73,null))[_0xe8fc('0x27')](handleError(_0x421f73,null));};exports['removeAgents']=function(_0x4b9cbb,_0x1b8b2c,_0x4f5767){return db['OpenchannelAccount'][_0xe8fc('0x57')]({'where':{'id':_0x4b9cbb[_0xe8fc('0x54')]['id']}})['then'](handleEntityNotFound(_0x1b8b2c,null))['then'](function(_0x22c93f){if(_0x22c93f){return _0x22c93f[_0xe8fc('0xb1')](_0x4b9cbb[_0xe8fc('0x43')][_0xe8fc('0x69')])[_0xe8fc('0x1e')](function(){if(_['isArray'](_0x4b9cbb[_0xe8fc('0x43')][_0xe8fc('0x69')])){for(var _0x19c28e=0x0;_0x19c28e<_0x4b9cbb['query']['ids'][_0xe8fc('0x47')];_0x19c28e+=0x1){socket[_0xe8fc('0xaf')](_0xe8fc('0xb2'),{'UserId':Number(_0x4b9cbb[_0xe8fc('0x43')][_0xe8fc('0x69')][_0x19c28e]),'OpenchannelAccountId':Number(_0x4b9cbb[_0xe8fc('0x54')]['id'])});}}else{socket['emit'](_0xe8fc('0xb2'),{'UserId':Number(_0x4b9cbb[_0xe8fc('0x43')][_0xe8fc('0x69')]),'OpenchannelAccountId':Number(_0x4b9cbb['params']['id'])});}});}})[_0xe8fc('0x1e')](respondWithStatusCode(_0x1b8b2c,null))['catch'](handleError(_0x1b8b2c,null));};exports[_0xe8fc('0xb3')]=function(_0x4eadcf,_0x48e48f,_0x5a4cc8){var _0x56288c={};var _0x3da952={};var _0x24435e;var _0x484421;return db[_0xe8fc('0x3e')]['findOne']({'where':{'id':_0x4eadcf[_0xe8fc('0x54')]['id']}})[_0xe8fc('0x1e')](handleEntityNotFound(_0x48e48f,null))['then'](function(_0x386714){if(_0x386714){_0x24435e=_0x386714;_0x3da952[_0xe8fc('0x42')]=_[_0xe8fc('0x55')](db['User'][_0xe8fc('0x3f')]);_0x3da952[_0xe8fc('0x43')]=_[_0xe8fc('0x55')](_0x4eadcf[_0xe8fc('0x43')]);_0x3da952['filters']=_[_0xe8fc('0x44')](_0x3da952['model'],_0x3da952[_0xe8fc('0x43')]);_0x56288c['attributes']=_[_0xe8fc('0x44')](_0x3da952[_0xe8fc('0x42')],qs[_0xe8fc('0x46')](_0x4eadcf[_0xe8fc('0x43')][_0xe8fc('0x46')]));_0x56288c[_0xe8fc('0x45')]=_0x56288c[_0xe8fc('0x45')][_0xe8fc('0x47')]?_0x56288c['attributes']:_0x3da952[_0xe8fc('0x42')];_0x56288c['order']=qs[_0xe8fc('0x67')](_0x4eadcf[_0xe8fc('0x43')][_0xe8fc('0x67')]);_0x56288c[_0xe8fc('0x4a')]=qs['filters'](_[_0xe8fc('0xa3')](_0x4eadcf[_0xe8fc('0x43')],_0x3da952['filters']));if(_0x4eadcf[_0xe8fc('0x43')][_0xe8fc('0x4c')]){_0x56288c[_0xe8fc('0x4a')]=_['merge'](_0x56288c[_0xe8fc('0x4a')],{'$or':_[_0xe8fc('0x3d')](_0x56288c[_0xe8fc('0x45')],function(_0x327aed){var _0x22cff8={};_0x22cff8[_0x327aed]={'$like':'%'+_0x4eadcf[_0xe8fc('0x43')][_0xe8fc('0x4c')]+'%'};return _0x22cff8;})});}_0x56288c=_['merge']({},_0x56288c,_0x4eadcf[_0xe8fc('0x56')]);return _0x24435e[_0xe8fc('0xb3')](_0x56288c);}})['then'](function(_0x1dc21d){if(_0x1dc21d){_0x484421=_0x1dc21d[_0xe8fc('0x47')];if(!_0x4eadcf[_0xe8fc('0x43')][_0xe8fc('0x48')]('nolimit')){_0x56288c[_0xe8fc('0x2d')]=qs[_0xe8fc('0x2d')](_0x4eadcf[_0xe8fc('0x43')]['limit']);_0x56288c[_0xe8fc('0x2b')]=qs[_0xe8fc('0x2b')](_0x4eadcf[_0xe8fc('0x43')]['offset']);}return _0x24435e[_0xe8fc('0xb3')](_0x56288c);}})[_0xe8fc('0x1e')](function(_0x2bdff0){if(_0x2bdff0){return _0x2bdff0?{'count':_0x484421,'rows':_0x2bdff0}:null;}})[_0xe8fc('0x1e')](respondWithResult(_0x48e48f,null))['catch'](handleError(_0x48e48f,null));};exports['send']=function(_0x2674e7,_0x5ae4bc,_0xcc92cf){var _0x56ea3f,_0x4d7edb,_0x2ca8f7;if(_['isNil'](_0x2674e7[_0xe8fc('0x5f')][_0xe8fc('0x5f')])||_0x2674e7[_0xe8fc('0x5f')]['body']===''){throw new db[(_0xe8fc('0x70'))][(_0xe8fc('0x71'))](_0xe8fc('0x79'));}if(_[_0xe8fc('0x77')](_0x2674e7[_0xe8fc('0x5f')]['to'])){}_0x56ea3f=_0x2674e7[_0xe8fc('0x5f')]['to'];return db['OpenchannelAccount'][_0xe8fc('0x64')]({'where':{'id':_0x2674e7[_0xe8fc('0x54')]['id']}})[_0xe8fc('0x1e')](handleEntityNotFound(_0x5ae4bc,null))[_0xe8fc('0x1e')](function(_0x5a4364){if(_0x5a4364){return db[_0xe8fc('0x3e')][_0xe8fc('0x57')]({'where':{'id':_0x5a4364['id']},'include':[{'model':db[_0xe8fc('0x7d')],'as':_0xe8fc('0x7e'),'include':[{'model':db[_0xe8fc('0x6f')],'as':_0xe8fc('0x7f'),'where':{[_0x5a4364[_0xe8fc('0x7a')]]:_0x56ea3f},'limit':0x1,'order':[[_0xe8fc('0x74'),_0xe8fc('0xb4')]]}]}]})[_0xe8fc('0x1e')](handleEntityNotFound(_0x5ae4bc,null))['then'](function(_0x48df19){if(_0x48df19&&_0x48df19[_0xe8fc('0x7e')]){_0x4d7edb=_0x48df19[_0xe8fc('0x33')]({'plain':!![]});if(_0x4d7edb[_0xe8fc('0x7e')]&&_0x4d7edb[_0xe8fc('0x7e')][_0xe8fc('0x7f')]['length']){return _0x4d7edb[_0xe8fc('0x7e')][_0xe8fc('0x7f')][0x0];}return db[_0xe8fc('0x6f')][_0xe8fc('0x58')](_[_0xe8fc('0x87')](_0x2674e7[_0xe8fc('0x5f')],{'firstName':_0x56ea3f,[_0x48df19[_0xe8fc('0x7a')]]:_0x56ea3f,'phone':_0x56ea3f,'ListId':_0x4d7edb[_0xe8fc('0x76')]}));}})[_0xe8fc('0x1e')](handleEntityNotFound(_0x5ae4bc,null))['then'](function(_0x5df8a0){if(_0x5df8a0){_0x2ca8f7=_0x5df8a0;return db['OpenchannelInteraction'][_0xe8fc('0x57')]({'where':{'ContactId':_0x2ca8f7['id'],'closed':![],'OpenchannelAccountId':_0x4d7edb['id']}})[_0xe8fc('0x1e')](function(_0x940e6){if(_0x940e6){return[_0x940e6,![]];}return db[_0xe8fc('0x8b')][_0xe8fc('0x58')]({'UserId':_0x2674e7['user']['id'],'ContactId':_0x2ca8f7['id'],'OpenchannelAccountId':_0x4d7edb['id'],'lastMsgDirection':_0xe8fc('0xb5'),'Messages':[_[_0xe8fc('0x4e')](_0x2674e7[_0xe8fc('0x5f')],{'read':![],'body':_0x2674e7[_0xe8fc('0x5f')][_0xe8fc('0x5f')],'OpenchannelAccountId':_0x4d7edb['id'],'UserId':_0x2674e7[_0xe8fc('0x5a')]['id'],'ContactId':_0x2ca8f7['id']})]},{'include':[{'model':db[_0xe8fc('0xb6')],'as':'Messages'}]})[_0xe8fc('0x1e')](function(_0x475b10){return[_0x475b10,!![]];});});}})[_0xe8fc('0xae')](function(_0x5e77dd,_0x5e5e68){if(_0x5e5e68){return _0x5e77dd;}return db[_0xe8fc('0xb6')][_0xe8fc('0x58')](_[_0xe8fc('0x4e')](_0x2674e7['body'],{'read':![],'body':_0x2674e7['body'][_0xe8fc('0x5f')],'OpenchannelAccountId':_0x4d7edb['id'],'OpenchannelInteractionId':_0x5e77dd['id'],'UserId':_0x2674e7[_0xe8fc('0x5a')]['id'],'ContactId':_0x2ca8f7['id']}))[_0xe8fc('0x1e')](function(_0x331e04){_0x5e77dd[_0xe8fc('0xb7')]['Messages']=[];_0x5e77dd[_0xe8fc('0xb7')]['Messages'][_0xe8fc('0x90')](_0x331e04[_0xe8fc('0xb7')]);return _0x5e77dd;});});}})[_0xe8fc('0x1e')](respondWithResult(_0x5ae4bc,null))[_0xe8fc('0x27')](handleError(_0x5ae4bc,null));};
\ No newline at end of file
index 0e65fc9..d9a06d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9348=['../../mysqldb','OpenchannelAccount','setMaxListeners','save','remove','emit','hasOwnProperty','hook','events'];(function(_0x44cf52,_0x287a43){var _0x2a06c6=function(_0x4ba730){while(--_0x4ba730){_0x44cf52['push'](_0x44cf52['shift']());}};_0x2a06c6(++_0x287a43);}(_0x9348,0x10d));var _0x8934=function(_0x2e7560,_0x48cd8f){_0x2e7560=_0x2e7560-0x0;var _0x57a2be=_0x9348[_0x2e7560];return _0x57a2be;};'use strict';var EventEmitter=require(_0x8934('0x0'));var OpenchannelAccount=require(_0x8934('0x1'))['db'][_0x8934('0x2')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0x8934('0x3')](0x0);var events={'afterCreate':_0x8934('0x4'),'afterUpdate':'update','afterDestroy':_0x8934('0x5')};function emitEvent(_0x35da0b){return function(_0x5f34d7,_0x34f94c,_0x923aa3){OpenchannelAccountEvents[_0x8934('0x6')](_0x35da0b+':'+_0x5f34d7['id'],_0x5f34d7);OpenchannelAccountEvents[_0x8934('0x6')](_0x35da0b,_0x5f34d7);_0x923aa3(null);};}for(var e in events){if(events[_0x8934('0x7')](e)){var event=events[e];OpenchannelAccount[_0x8934('0x8')](e,emitEvent(event));}}module['exports']=OpenchannelAccountEvents;
\ No newline at end of file
+var _0xee5b=['remove','emit','hasOwnProperty','hook','events','OpenchannelAccount','setMaxListeners','update'];(function(_0x39325c,_0x4abcf0){var _0x103d35=function(_0xa33f76){while(--_0xa33f76){_0x39325c['push'](_0x39325c['shift']());}};_0x103d35(++_0x4abcf0);}(_0xee5b,0x1f4));var _0xbee5=function(_0x3a15a2,_0x5222f2){_0x3a15a2=_0x3a15a2-0x0;var _0x41c488=_0xee5b[_0x3a15a2];return _0x41c488;};'use strict';var EventEmitter=require(_0xbee5('0x0'));var OpenchannelAccount=require('../../mysqldb')['db'][_0xbee5('0x1')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0xbee5('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xbee5('0x3'),'afterDestroy':_0xbee5('0x4')};function emitEvent(_0x2eb857){return function(_0x210159,_0x4bd202,_0x5200b1){OpenchannelAccountEvents[_0xbee5('0x5')](_0x2eb857+':'+_0x210159['id'],_0x210159);OpenchannelAccountEvents[_0xbee5('0x5')](_0x2eb857,_0x210159);_0x5200b1(null);};}for(var e in events){if(events[_0xbee5('0x6')](e)){var event=events[e];OpenchannelAccount[_0xbee5('0x7')](e,emitEvent(event));}}module['exports']=OpenchannelAccountEvents;
\ No newline at end of file
index 0996a1d..43d5063 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(_0x1ad318,_0xee9ec3){var _0x19662d=function(_0x1ca199){while(--_0x1ca199){_0x1ad318['push'](_0x1ad318['shift']());}};_0x19662d(++_0xee9ec3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0xa9e0[_0x45e98e];return _0x374dba;};'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(_0x58e9c1,_0x32c8f4){var _0x4b70c5=function(_0x279cbb){while(--_0x279cbb){_0x58e9c1['push'](_0x58e9c1['shift']());}};_0x4b70c5(++_0x32c8f4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0xa9e0[_0x2576d7];return _0x16a08c;};'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 bf53076..9cbea2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0102=['debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','util','moment','bluebird','randomstring','../../config/environment','jayson/promise','client','http','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','register','request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent'];(function(_0x1d04b3,_0x2dfd11){var _0x1cf900=function(_0x34a7d9){while(--_0x34a7d9){_0x1d04b3['push'](_0x1d04b3['shift']());}};_0x1cf900(++_0x2dfd11);}(_0x0102,0x186));var _0x2010=function(_0x465450,_0x59e56b){_0x465450=_0x465450-0x0;var _0x5159bb=_0x0102[_0x465450];return _0x5159bb;};'use strict';var _=require('lodash');var util=require(_0x2010('0x0'));var moment=require(_0x2010('0x1'));var BPromise=require(_0x2010('0x2'));var rs=require(_0x2010('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x2010('0x4'));var jayson=require(_0x2010('0x5'));var client=jayson[_0x2010('0x6')][_0x2010('0x7')]({'port':0x232a});config['redis']=_[_0x2010('0x8')](config['redis'],{'host':_0x2010('0x9'),'port':0x18eb});var socket=require(_0x2010('0xa'))(new Redis(config['redis']));require(_0x2010('0xb'))[_0x2010('0xc')](socket);function respondWithRpcPromise(_0x3d34d4,_0x3acdbb,_0x1aedbb){return new BPromise(function(_0x2a27b0,_0x289ad4){return client[_0x2010('0xd')](_0x3d34d4,_0x1aedbb)[_0x2010('0xe')](function(_0x39a821){logger[_0x2010('0xf')](_0x2010('0x10'),_0x3acdbb,_0x2010('0x11'));logger[_0x2010('0x12')](_0x2010('0x13'),_0x3acdbb,_0x2010('0x11'),JSON['stringify'](_0x39a821));if(_0x39a821['error']){if(_0x39a821[_0x2010('0x14')][_0x2010('0x15')]===0x1f4){logger[_0x2010('0x14')](_0x2010('0x10'),_0x3acdbb,_0x39a821[_0x2010('0x14')][_0x2010('0x16')]);return _0x289ad4(_0x39a821['error'][_0x2010('0x16')]);}logger[_0x2010('0x14')]('OpenchannelAccount,\x20%s,\x20%s',_0x3acdbb,_0x39a821[_0x2010('0x14')][_0x2010('0x16')]);return _0x2a27b0(_0x39a821[_0x2010('0x14')][_0x2010('0x16')]);}else{logger[_0x2010('0xf')](_0x2010('0x10'),_0x3acdbb,_0x2010('0x11'));_0x2a27b0(_0x39a821[_0x2010('0x17')][_0x2010('0x16')]);}})['catch'](function(_0x559ed6){logger[_0x2010('0x14')](_0x2010('0x10'),_0x3acdbb,_0x559ed6);_0x289ad4(_0x559ed6);});});}
\ No newline at end of file
+var _0xb921=['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','info','result','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost'];(function(_0x4d6ac0,_0x201628){var _0x5296c4=function(_0x3d0b3d){while(--_0x3d0b3d){_0x4d6ac0['push'](_0x4d6ac0['shift']());}};_0x5296c4(++_0x201628);}(_0xb921,0x16a));var _0x1b92=function(_0x410413,_0x2c77a9){_0x410413=_0x410413-0x0;var _0x34ec54=_0xb921[_0x410413];return _0x34ec54;};'use strict';var _=require(_0x1b92('0x0'));var util=require(_0x1b92('0x1'));var moment=require(_0x1b92('0x2'));var BPromise=require(_0x1b92('0x3'));var rs=require(_0x1b92('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x1b92('0x5'));var logger=require(_0x1b92('0x6'))(_0x1b92('0x7'));var config=require(_0x1b92('0x8'));var jayson=require(_0x1b92('0x9'));var client=jayson[_0x1b92('0xa')][_0x1b92('0xb')]({'port':0x232a});config[_0x1b92('0xc')]=_[_0x1b92('0xd')](config[_0x1b92('0xc')],{'host':_0x1b92('0xe'),'port':0x18eb});var socket=require(_0x1b92('0xf'))(new Redis(config[_0x1b92('0xc')]));require(_0x1b92('0x10'))[_0x1b92('0x11')](socket);function respondWithRpcPromise(_0x4c8e30,_0x31e314,_0x1e5802){return new BPromise(function(_0x154b6d,_0x146d68){return client[_0x1b92('0x12')](_0x4c8e30,_0x1e5802)[_0x1b92('0x13')](function(_0x3deaf4){logger['info'](_0x1b92('0x14'),_0x31e314,_0x1b92('0x15'));logger['debug'](_0x1b92('0x16'),_0x31e314,_0x1b92('0x15'),JSON[_0x1b92('0x17')](_0x3deaf4));if(_0x3deaf4[_0x1b92('0x18')]){if(_0x3deaf4[_0x1b92('0x18')][_0x1b92('0x19')]===0x1f4){logger[_0x1b92('0x18')]('OpenchannelAccount,\x20%s,\x20%s',_0x31e314,_0x3deaf4[_0x1b92('0x18')]['message']);return _0x146d68(_0x3deaf4[_0x1b92('0x18')]['message']);}logger[_0x1b92('0x18')]('OpenchannelAccount,\x20%s,\x20%s',_0x31e314,_0x3deaf4[_0x1b92('0x18')][_0x1b92('0x1a')]);return _0x154b6d(_0x3deaf4[_0x1b92('0x18')]['message']);}else{logger[_0x1b92('0x1b')](_0x1b92('0x14'),_0x31e314,_0x1b92('0x15'));_0x154b6d(_0x3deaf4[_0x1b92('0x1c')][_0x1b92('0x1a')]);}})['catch'](function(_0x4024bf){logger[_0x1b92('0x18')](_0x1b92('0x14'),_0x31e314,_0x4024bf);_0x146d68(_0x4024bf);});});}
\ No newline at end of file
index d315dcc..29ce550 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f49=['./openchannelAccount.events','save','update','emit','register','length','openchannelAccount:'];(function(_0x1f3dc4,_0x5b8b02){var _0x343760=function(_0x5500c0){while(--_0x5500c0){_0x1f3dc4['push'](_0x1f3dc4['shift']());}};_0x343760(++_0x5b8b02);}(_0x3f49,0x11f));var _0x93f4=function(_0x1cac0c,_0x218591){_0x1cac0c=_0x1cac0c-0x0;var _0xea52c8=_0x3f49[_0x1cac0c];return _0xea52c8;};'use strict';var OpenchannelAccountEvents=require(_0x93f4('0x0'));var events=[_0x93f4('0x1'),'remove',_0x93f4('0x2')];function createListener(_0x265b8d,_0xe3894b){return function(_0x5a1210){_0xe3894b[_0x93f4('0x3')](_0x265b8d,_0x5a1210);};}function removeListener(_0x4232db,_0x58a15b){return function(){OpenchannelAccountEvents['removeListener'](_0x4232db,_0x58a15b);};}exports[_0x93f4('0x4')]=function(_0x38eb6c){for(var _0x2dfdf7=0x0,_0x5a86ad=events[_0x93f4('0x5')];_0x2dfdf7<_0x5a86ad;_0x2dfdf7++){var _0x5d22d9=events[_0x2dfdf7];var _0x144f31=createListener(_0x93f4('0x6')+_0x5d22d9,_0x38eb6c);OpenchannelAccountEvents['on'](_0x5d22d9,_0x144f31);}};
\ No newline at end of file
+var _0xb58b=['save','remove','update','removeListener','register','length','openchannelAccount:'];(function(_0x544f46,_0x168b65){var _0x21e7f2=function(_0x4e22a8){while(--_0x4e22a8){_0x544f46['push'](_0x544f46['shift']());}};_0x21e7f2(++_0x168b65);}(_0xb58b,0x1f1));var _0xbb58=function(_0x541997,_0x24b7f2){_0x541997=_0x541997-0x0;var _0x4b7a85=_0xb58b[_0x541997];return _0x4b7a85;};'use strict';var OpenchannelAccountEvents=require('./openchannelAccount.events');var events=[_0xbb58('0x0'),_0xbb58('0x1'),_0xbb58('0x2')];function createListener(_0x4f5d42,_0x340c23){return function(_0x4e6d6c){_0x340c23['emit'](_0x4f5d42,_0x4e6d6c);};}function removeListener(_0x226363,_0x546510){return function(){OpenchannelAccountEvents[_0xbb58('0x3')](_0x226363,_0x546510);};}exports[_0xbb58('0x4')]=function(_0x33fe85){for(var _0x5cf8b1=0x0,_0x27cbda=events[_0xbb58('0x5')];_0x5cf8b1<_0x27cbda;_0x5cf8b1++){var _0xe874f2=events[_0x5cf8b1];var _0x5d7fe8=createListener(_0xbb58('0x6')+_0xe874f2,_0x33fe85);OpenchannelAccountEvents['on'](_0xe874f2,_0x5d7fe8);}};
\ No newline at end of file
index 16faf00..eef4183 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x432e=['../../components/interaction/service','../../config/environment','./openchannelApplication.controller','get','/:id','isAuthenticated','show','post','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra'];(function(_0x38df7a,_0xf2e139){var _0x2889d5=function(_0x4e5a61){while(--_0x4e5a61){_0x38df7a['push'](_0x38df7a['shift']());}};_0x2889d5(++_0xf2e139);}(_0x432e,0xf1));var _0xe432=function(_0x1c76fe,_0x443398){_0x1c76fe=_0x1c76fe-0x0;var _0x4a6809=_0x432e[_0x1c76fe];return _0x4a6809;};'use strict';var multer=require(_0xe432('0x0'));var util=require(_0xe432('0x1'));var path=require(_0xe432('0x2'));var timeout=require(_0xe432('0x3'));var express=require(_0xe432('0x4'));var router=express['Router']();var fs_extra=require(_0xe432('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xe432('0x6'));var config=require(_0xe432('0x7'));var controller=require(_0xe432('0x8'));router[_0xe432('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xe432('0x9')](_0xe432('0xa'),auth[_0xe432('0xb')](),controller[_0xe432('0xc')]);router[_0xe432('0xd')]('/',auth[_0xe432('0xb')](),controller['create']);router[_0xe432('0xe')](_0xe432('0xa'),auth['isAuthenticated'](),controller[_0xe432('0xf')]);router[_0xe432('0x10')](_0xe432('0xa'),auth[_0xe432('0xb')](),controller[_0xe432('0x11')]);module[_0xe432('0x12')]=router;
\ No newline at end of file
+var _0x4cd7=['put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelApplication.controller','get','index','/:id','isAuthenticated','show','post','create'];(function(_0x49044b,_0x3dd345){var _0xde2c4d=function(_0x139faa){while(--_0x139faa){_0x49044b['push'](_0x49044b['shift']());}};_0xde2c4d(++_0x3dd345);}(_0x4cd7,0x10d));var _0x74cd=function(_0x120ec8,_0x3e29b1){_0x120ec8=_0x120ec8-0x0;var _0x32c670=_0x4cd7[_0x120ec8];return _0x32c670;};'use strict';var multer=require(_0x74cd('0x0'));var util=require(_0x74cd('0x1'));var path=require(_0x74cd('0x2'));var timeout=require(_0x74cd('0x3'));var express=require(_0x74cd('0x4'));var router=express[_0x74cd('0x5')]();var fs_extra=require(_0x74cd('0x6'));var auth=require(_0x74cd('0x7'));var interaction=require(_0x74cd('0x8'));var config=require('../../config/environment');var controller=require(_0x74cd('0x9'));router[_0x74cd('0xa')]('/',auth['isAuthenticated'](),controller[_0x74cd('0xb')]);router[_0x74cd('0xa')](_0x74cd('0xc'),auth[_0x74cd('0xd')](),controller[_0x74cd('0xe')]);router[_0x74cd('0xf')]('/',auth[_0x74cd('0xd')](),controller[_0x74cd('0x10')]);router[_0x74cd('0x11')](_0x74cd('0xc'),auth[_0x74cd('0xd')](),controller[_0x74cd('0x12')]);router[_0x74cd('0x13')](_0x74cd('0xc'),auth['isAuthenticated'](),controller[_0x74cd('0x14')]);module[_0x74cd('0x15')]=router;
\ No newline at end of file
index a82ae87..05dc9a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ac4=['sequelize','INTEGER','STRING','noop','TEXT','*,*,*,*'];(function(_0x58b983,_0x4aa75a){var _0x10a364=function(_0x3dce75){while(--_0x3dce75){_0x58b983['push'](_0x58b983['shift']());}};_0x10a364(++_0x4aa75a);}(_0x1ac4,0xfc));var _0x41ac=function(_0x458b03,_0x14967a){_0x458b03=_0x458b03-0x0;var _0x444c0e=_0x1ac4[_0x458b03];return _0x444c0e;};'use strict';var Sequelize=require(_0x41ac('0x0'));module['exports']={'priority':{'type':Sequelize[_0x41ac('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x41ac('0x2')],'allowNull':![],'defaultValue':_0x41ac('0x3')},'appdata':{'type':Sequelize[_0x41ac('0x4')]()},'description':{'type':Sequelize[_0x41ac('0x2')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x41ac('0x5')}};
\ No newline at end of file
+var _0x9372=['INTEGER','STRING','noop','TEXT','*,*,*,*'];(function(_0x27019b,_0x53cc28){var _0x1480f3=function(_0x4199c6){while(--_0x4199c6){_0x27019b['push'](_0x27019b['shift']());}};_0x1480f3(++_0x53cc28);}(_0x9372,0x1a4));var _0x2937=function(_0x53a93f,_0x3299d3){_0x53a93f=_0x53a93f-0x0;var _0x349f78=_0x9372[_0x53a93f];return _0x349f78;};'use strict';var Sequelize=require('sequelize');module['exports']={'priority':{'type':Sequelize[_0x2937('0x0')],'allowNull':![]},'app':{'type':Sequelize[_0x2937('0x1')],'allowNull':![],'defaultValue':_0x2937('0x2')},'appdata':{'type':Sequelize[_0x2937('0x3')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x2937('0x1')],'defaultValue':_0x2937('0x4')}};
\ No newline at end of file
index d520204..6860983 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e74=['../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','update','then','destroy','error','stack','name','index','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','map','VIRTUAL','merge','options','includeAll','include','OpenchannelApplication','rows','catch','show','params','find','create','body','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x14e826,_0xf93e56){var _0x38286a=function(_0x10d050){while(--_0x10d050){_0x14e826['push'](_0x14e826['shift']());}};_0x38286a(++_0xf93e56);}(_0x6e74,0xcd));var _0x46e7=function(_0x59cfd7,_0x57844a){_0x59cfd7=_0x59cfd7-0x0;var _0x302569=_0x6e74[_0x59cfd7];return _0x302569;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x46e7('0x0'));var zipdir=require(_0x46e7('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x46e7('0x2'));var moment=require(_0x46e7('0x3'));var BPromise=require(_0x46e7('0x4'));var Mustache=require(_0x46e7('0x5'));var util=require('util');var path=require(_0x46e7('0x6'));var sox=require(_0x46e7('0x7'));var csv=require(_0x46e7('0x8'));var ejs=require(_0x46e7('0x9'));var fs=require('fs');var fs_extra=require(_0x46e7('0xa'));var _=require('lodash');var squel=require(_0x46e7('0xb'));var crypto=require('crypto');var jsforce=require(_0x46e7('0xc'));var deskjs=require(_0x46e7('0xd'));var toCsv=require(_0x46e7('0x8'));var querystring=require(_0x46e7('0xe'));var Papa=require(_0x46e7('0xf'));var Redis=require(_0x46e7('0x10'));var authService=require(_0x46e7('0x11'));var qs=require(_0x46e7('0x12'));var as=require(_0x46e7('0x13'));var hardwareService=require(_0x46e7('0x14'));var logger=require(_0x46e7('0x15'))('api');var utils=require(_0x46e7('0x16'));var config=require(_0x46e7('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x46e7('0x18'))['db'];function respondWithStatusCode(_0x1af52d,_0x5121c8){_0x5121c8=_0x5121c8||0xcc;return function(_0x26e681){if(_0x26e681){return _0x1af52d[_0x46e7('0x19')](_0x5121c8);}return _0x1af52d[_0x46e7('0x1a')](_0x5121c8)[_0x46e7('0x1b')]();};}function respondWithResult(_0xaf7733,_0x161814){_0x161814=_0x161814||0xc8;return function(_0x2422fc){if(_0x2422fc){return _0xaf7733[_0x46e7('0x1a')](_0x161814)['json'](_0x2422fc);}};}function respondWithFilteredResult(_0x317690,_0xe7610c){return function(_0x3b4446){if(_0x3b4446){var _0x3ae2ad=typeof _0xe7610c['offset']===_0x46e7('0x1c')&&typeof _0xe7610c[_0x46e7('0x1d')]==='undefined';var _0x22f037=_0x3b4446[_0x46e7('0x1e')];var _0x4635e4=_0x3ae2ad?0x0:_0xe7610c[_0x46e7('0x1f')];var _0x147ebe=_0x3ae2ad?_0x3b4446[_0x46e7('0x1e')]:_0xe7610c['offset']+_0xe7610c[_0x46e7('0x1d')];var _0x41ee03;if(_0x147ebe>=_0x22f037){_0x147ebe=_0x22f037;_0x41ee03=0xc8;}else{_0x41ee03=0xce;}_0x317690[_0x46e7('0x1a')](_0x41ee03);return _0x317690[_0x46e7('0x20')](_0x46e7('0x21'),_0x4635e4+'-'+_0x147ebe+'/'+_0x22f037)[_0x46e7('0x22')](_0x3b4446);}return null;};}function patchUpdates(_0x3c18f3){return function(_0x11e3fa){try{jsonpatch[_0x46e7('0x23')](_0x11e3fa,_0x3c18f3,!![]);}catch(_0x29452f){return BPromise[_0x46e7('0x24')](_0x29452f);}return _0x11e3fa['save']();};}function saveUpdates(_0x5279fb,_0x4fea0c){return function(_0x462160){if(_0x462160){return _0x462160[_0x46e7('0x25')](_0x5279fb)[_0x46e7('0x26')](function(_0x4c0216){return _0x4c0216;});}return null;};}function removeEntity(_0x71a76b,_0x1bce19){return function(_0x17e0f8){if(_0x17e0f8){return _0x17e0f8[_0x46e7('0x27')]()[_0x46e7('0x26')](function(){_0x71a76b[_0x46e7('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5061b8,_0x2fe33d){return function(_0x21a50c){if(!_0x21a50c){_0x5061b8[_0x46e7('0x19')](0x194);}return _0x21a50c;};}function handleError(_0x35d965,_0x5c602e){_0x5c602e=_0x5c602e||0x1f4;return function(_0x4651f2){logger[_0x46e7('0x28')](_0x4651f2[_0x46e7('0x29')]);if(_0x4651f2[_0x46e7('0x2a')]){delete _0x4651f2[_0x46e7('0x2a')];}_0x35d965[_0x46e7('0x1a')](_0x5c602e)['send'](_0x4651f2);};}exports[_0x46e7('0x2b')]=function(_0x3d0118,_0x1b1c4f){var _0x509100={},_0x25d133={},_0x5c9b94={'count':0x0,'rows':[]};var _0x2a42dc=_['map'](db['OpenchannelApplication'][_0x46e7('0x2c')],function(_0xaa204a){return{'name':_0xaa204a[_0x46e7('0x2d')],'type':_0xaa204a[_0x46e7('0x2e')][_0x46e7('0x2f')]};});_0x25d133[_0x46e7('0x30')]=_['map'](_0x2a42dc,_0x46e7('0x2a'));_0x25d133[_0x46e7('0x31')]=_[_0x46e7('0x32')](_0x3d0118[_0x46e7('0x31')]);_0x25d133[_0x46e7('0x33')]=_[_0x46e7('0x34')](_0x25d133[_0x46e7('0x30')],_0x25d133[_0x46e7('0x31')]);_0x509100[_0x46e7('0x35')]=_['intersection'](_0x25d133[_0x46e7('0x30')],qs['fields'](_0x3d0118[_0x46e7('0x31')][_0x46e7('0x36')]));_0x509100['attributes']=_0x509100[_0x46e7('0x35')][_0x46e7('0x37')]?_0x509100['attributes']:_0x25d133['model'];if(!_0x3d0118[_0x46e7('0x31')][_0x46e7('0x38')](_0x46e7('0x39'))){_0x509100['limit']=qs['limit'](_0x3d0118[_0x46e7('0x31')][_0x46e7('0x1d')]);_0x509100[_0x46e7('0x1f')]=qs['offset'](_0x3d0118[_0x46e7('0x31')][_0x46e7('0x1f')]);}_0x509100['order']=qs[_0x46e7('0x3a')](_0x3d0118[_0x46e7('0x31')]['sort']);_0x509100[_0x46e7('0x3b')]=qs[_0x46e7('0x33')](_['pick'](_0x3d0118['query'],_0x25d133[_0x46e7('0x33')]),_0x2a42dc);if(_0x3d0118[_0x46e7('0x31')][_0x46e7('0x3c')]){_0x509100[_0x46e7('0x3b')]=_['merge'](_0x509100[_0x46e7('0x3b')],{'$or':_[_0x46e7('0x3d')](_0x2a42dc,function(_0x3f7572){if(_0x3f7572['type']!==_0x46e7('0x3e')){var _0x557aa7={};_0x557aa7[_0x3f7572[_0x46e7('0x2a')]]={'$like':'%'+_0x3d0118[_0x46e7('0x31')][_0x46e7('0x3c')]+'%'};return _0x557aa7;}})});}_0x509100=_[_0x46e7('0x3f')]({},_0x509100,_0x3d0118[_0x46e7('0x40')]);var _0x416744={'where':_0x509100[_0x46e7('0x3b')]};return db['OpenchannelApplication']['count'](_0x416744)[_0x46e7('0x26')](function(_0x323c2f){_0x5c9b94[_0x46e7('0x1e')]=_0x323c2f;if(_0x3d0118['query'][_0x46e7('0x41')]){_0x509100[_0x46e7('0x42')]=[{'all':!![]}];}return db[_0x46e7('0x43')]['findAll'](_0x509100);})['then'](function(_0x5a44ac){_0x5c9b94[_0x46e7('0x44')]=_0x5a44ac;return _0x5c9b94;})['then'](respondWithFilteredResult(_0x1b1c4f,_0x509100))[_0x46e7('0x45')](handleError(_0x1b1c4f,null));};exports[_0x46e7('0x46')]=function(_0x525f5d,_0x498bcd){var _0xaa5705={'raw':!![],'where':{'id':_0x525f5d[_0x46e7('0x47')]['id']}},_0x113a7f={};_0x113a7f[_0x46e7('0x30')]=_[_0x46e7('0x32')](db[_0x46e7('0x43')]['rawAttributes']);_0x113a7f['query']=_[_0x46e7('0x32')](_0x525f5d[_0x46e7('0x31')]);_0x113a7f[_0x46e7('0x33')]=_[_0x46e7('0x34')](_0x113a7f['model'],_0x113a7f['query']);_0xaa5705[_0x46e7('0x35')]=_['intersection'](_0x113a7f[_0x46e7('0x30')],qs['fields'](_0x525f5d[_0x46e7('0x31')][_0x46e7('0x36')]));_0xaa5705[_0x46e7('0x35')]=_0xaa5705[_0x46e7('0x35')]['length']?_0xaa5705[_0x46e7('0x35')]:_0x113a7f[_0x46e7('0x30')];if(_0x525f5d[_0x46e7('0x31')][_0x46e7('0x41')]){_0xaa5705[_0x46e7('0x42')]=[{'all':!![]}];}_0xaa5705=_[_0x46e7('0x3f')]({},_0xaa5705,_0x525f5d[_0x46e7('0x40')]);return db[_0x46e7('0x43')][_0x46e7('0x48')](_0xaa5705)['then'](handleEntityNotFound(_0x498bcd,null))['then'](respondWithResult(_0x498bcd,null))['catch'](handleError(_0x498bcd,null));};exports[_0x46e7('0x49')]=function(_0x480a53,_0x1a66c5){return db[_0x46e7('0x43')][_0x46e7('0x49')](_0x480a53[_0x46e7('0x4a')],{})[_0x46e7('0x26')](respondWithResult(_0x1a66c5,0xc9))[_0x46e7('0x45')](handleError(_0x1a66c5,null));};exports['update']=function(_0x457cd4,_0x3c42a2){if(_0x457cd4[_0x46e7('0x4a')]['id']){delete _0x457cd4['body']['id'];}return db[_0x46e7('0x43')][_0x46e7('0x48')]({'where':{'id':_0x457cd4['params']['id']}})[_0x46e7('0x26')](handleEntityNotFound(_0x3c42a2,null))[_0x46e7('0x26')](saveUpdates(_0x457cd4[_0x46e7('0x4a')],null))[_0x46e7('0x26')](respondWithResult(_0x3c42a2,null))[_0x46e7('0x45')](handleError(_0x3c42a2,null));};exports[_0x46e7('0x27')]=function(_0x53594b,_0x550024){return db[_0x46e7('0x43')]['find']({'where':{'id':_0x53594b[_0x46e7('0x47')]['id']}})['then'](handleEntityNotFound(_0x550024,null))['then'](removeEntity(_0x550024,null))[_0x46e7('0x45')](handleError(_0x550024,null));};
\ No newline at end of file
+var _0x00ea=['undefined','count','limit','set','Content-Range','apply','save','then','sendStatus','stack','name','send','index','OpenchannelApplication','rawAttributes','fieldName','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','type','VIRTUAL','options','findAll','rows','catch','show','params','includeAll','include','find','create','body','destroy','eml-format','rimraf','request-promise','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','../../config/license/util','../../mysqldb','status','end','json','offset'];(function(_0x39a99d,_0x36fdec){var _0x229fd5=function(_0x13ea2b){while(--_0x13ea2b){_0x39a99d['push'](_0x39a99d['shift']());}};_0x229fd5(++_0x36fdec);}(_0x00ea,0xcb));var _0xa00e=function(_0x3eacaf,_0x9ceba9){_0x3eacaf=_0x3eacaf-0x0;var _0x41e7ed=_0x00ea[_0x3eacaf];return _0x41e7ed;};'use strict';var emlformat=require(_0xa00e('0x0'));var rimraf=require(_0xa00e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xa00e('0x2'));var moment=require('moment');var BPromise=require(_0xa00e('0x3'));var Mustache=require(_0xa00e('0x4'));var util=require('util');var path=require(_0xa00e('0x5'));var sox=require(_0xa00e('0x6'));var csv=require(_0xa00e('0x7'));var ejs=require(_0xa00e('0x8'));var fs=require('fs');var fs_extra=require(_0xa00e('0x9'));var _=require(_0xa00e('0xa'));var squel=require(_0xa00e('0xb'));var crypto=require(_0xa00e('0xc'));var jsforce=require(_0xa00e('0xd'));var deskjs=require(_0xa00e('0xe'));var toCsv=require(_0xa00e('0x7'));var querystring=require(_0xa00e('0xf'));var Papa=require(_0xa00e('0x10'));var Redis=require(_0xa00e('0x11'));var authService=require(_0xa00e('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xa00e('0x13'));var hardwareService=require(_0xa00e('0x14'));var logger=require(_0xa00e('0x15'))(_0xa00e('0x16'));var utils=require(_0xa00e('0x17'));var config=require(_0xa00e('0x18'));var licenseUtil=require(_0xa00e('0x19'));var db=require(_0xa00e('0x1a'))['db'];function respondWithStatusCode(_0x267335,_0x2d63d1){_0x2d63d1=_0x2d63d1||0xcc;return function(_0x3aacf4){if(_0x3aacf4){return _0x267335['sendStatus'](_0x2d63d1);}return _0x267335[_0xa00e('0x1b')](_0x2d63d1)[_0xa00e('0x1c')]();};}function respondWithResult(_0x35f3c6,_0x43f7c8){_0x43f7c8=_0x43f7c8||0xc8;return function(_0xe18e7a){if(_0xe18e7a){return _0x35f3c6[_0xa00e('0x1b')](_0x43f7c8)[_0xa00e('0x1d')](_0xe18e7a);}};}function respondWithFilteredResult(_0x34b1ee,_0x517601){return function(_0x5795da){if(_0x5795da){var _0x50d14e=typeof _0x517601[_0xa00e('0x1e')]===_0xa00e('0x1f')&&typeof _0x517601['limit']===_0xa00e('0x1f');var _0x203392=_0x5795da[_0xa00e('0x20')];var _0x6ddc=_0x50d14e?0x0:_0x517601['offset'];var _0x5e7c4b=_0x50d14e?_0x5795da[_0xa00e('0x20')]:_0x517601[_0xa00e('0x1e')]+_0x517601[_0xa00e('0x21')];var _0x95d3ee;if(_0x5e7c4b>=_0x203392){_0x5e7c4b=_0x203392;_0x95d3ee=0xc8;}else{_0x95d3ee=0xce;}_0x34b1ee[_0xa00e('0x1b')](_0x95d3ee);return _0x34b1ee[_0xa00e('0x22')](_0xa00e('0x23'),_0x6ddc+'-'+_0x5e7c4b+'/'+_0x203392)[_0xa00e('0x1d')](_0x5795da);}return null;};}function patchUpdates(_0x1b2eb7){return function(_0x4b45d4){try{jsonpatch[_0xa00e('0x24')](_0x4b45d4,_0x1b2eb7,!![]);}catch(_0x2316dd){return BPromise['reject'](_0x2316dd);}return _0x4b45d4[_0xa00e('0x25')]();};}function saveUpdates(_0x41ab17,_0x33b0b6){return function(_0xccfe1c){if(_0xccfe1c){return _0xccfe1c['update'](_0x41ab17)[_0xa00e('0x26')](function(_0x2d8c68){return _0x2d8c68;});}return null;};}function removeEntity(_0x32f400,_0x2d33ee){return function(_0x591e42){if(_0x591e42){return _0x591e42['destroy']()[_0xa00e('0x26')](function(){_0x32f400[_0xa00e('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2377c7,_0x55fd4c){return function(_0x355847){if(!_0x355847){_0x2377c7[_0xa00e('0x27')](0x194);}return _0x355847;};}function handleError(_0x3a5c3d,_0x385d0d){_0x385d0d=_0x385d0d||0x1f4;return function(_0x399dba){logger['error'](_0x399dba[_0xa00e('0x28')]);if(_0x399dba[_0xa00e('0x29')]){delete _0x399dba[_0xa00e('0x29')];}_0x3a5c3d['status'](_0x385d0d)[_0xa00e('0x2a')](_0x399dba);};}exports[_0xa00e('0x2b')]=function(_0x260042,_0x5b8a81){var _0x259da3={},_0x5aa61a={},_0x2371d1={'count':0x0,'rows':[]};var _0x46fb45=_['map'](db[_0xa00e('0x2c')][_0xa00e('0x2d')],function(_0x4fb38d){return{'name':_0x4fb38d[_0xa00e('0x2e')],'type':_0x4fb38d['type']['key']};});_0x5aa61a[_0xa00e('0x2f')]=_[_0xa00e('0x30')](_0x46fb45,_0xa00e('0x29'));_0x5aa61a[_0xa00e('0x31')]=_[_0xa00e('0x32')](_0x260042[_0xa00e('0x31')]);_0x5aa61a['filters']=_[_0xa00e('0x33')](_0x5aa61a['model'],_0x5aa61a[_0xa00e('0x31')]);_0x259da3[_0xa00e('0x34')]=_['intersection'](_0x5aa61a[_0xa00e('0x2f')],qs['fields'](_0x260042[_0xa00e('0x31')][_0xa00e('0x35')]));_0x259da3['attributes']=_0x259da3[_0xa00e('0x34')][_0xa00e('0x36')]?_0x259da3[_0xa00e('0x34')]:_0x5aa61a['model'];if(!_0x260042['query'][_0xa00e('0x37')](_0xa00e('0x38'))){_0x259da3['limit']=qs['limit'](_0x260042[_0xa00e('0x31')][_0xa00e('0x21')]);_0x259da3[_0xa00e('0x1e')]=qs['offset'](_0x260042[_0xa00e('0x31')][_0xa00e('0x1e')]);}_0x259da3[_0xa00e('0x39')]=qs['sort'](_0x260042[_0xa00e('0x31')][_0xa00e('0x3a')]);_0x259da3[_0xa00e('0x3b')]=qs['filters'](_[_0xa00e('0x3c')](_0x260042[_0xa00e('0x31')],_0x5aa61a[_0xa00e('0x3d')]),_0x46fb45);if(_0x260042['query'][_0xa00e('0x3e')]){_0x259da3[_0xa00e('0x3b')]=_[_0xa00e('0x3f')](_0x259da3[_0xa00e('0x3b')],{'$or':_[_0xa00e('0x30')](_0x46fb45,function(_0x1cb7ea){if(_0x1cb7ea[_0xa00e('0x40')]!==_0xa00e('0x41')){var _0x36fd47={};_0x36fd47[_0x1cb7ea['name']]={'$like':'%'+_0x260042[_0xa00e('0x31')]['filter']+'%'};return _0x36fd47;}})});}_0x259da3=_[_0xa00e('0x3f')]({},_0x259da3,_0x260042[_0xa00e('0x42')]);var _0x3470af={'where':_0x259da3[_0xa00e('0x3b')]};return db['OpenchannelApplication'][_0xa00e('0x20')](_0x3470af)[_0xa00e('0x26')](function(_0xc85894){_0x2371d1[_0xa00e('0x20')]=_0xc85894;if(_0x260042[_0xa00e('0x31')]['includeAll']){_0x259da3['include']=[{'all':!![]}];}return db[_0xa00e('0x2c')][_0xa00e('0x43')](_0x259da3);})[_0xa00e('0x26')](function(_0x8b5a62){_0x2371d1[_0xa00e('0x44')]=_0x8b5a62;return _0x2371d1;})[_0xa00e('0x26')](respondWithFilteredResult(_0x5b8a81,_0x259da3))[_0xa00e('0x45')](handleError(_0x5b8a81,null));};exports[_0xa00e('0x46')]=function(_0x211144,_0x1380c2){var _0x1fca37={'raw':!![],'where':{'id':_0x211144[_0xa00e('0x47')]['id']}},_0xb40ebc={};_0xb40ebc[_0xa00e('0x2f')]=_[_0xa00e('0x32')](db['OpenchannelApplication'][_0xa00e('0x2d')]);_0xb40ebc[_0xa00e('0x31')]=_[_0xa00e('0x32')](_0x211144[_0xa00e('0x31')]);_0xb40ebc['filters']=_[_0xa00e('0x33')](_0xb40ebc[_0xa00e('0x2f')],_0xb40ebc['query']);_0x1fca37['attributes']=_[_0xa00e('0x33')](_0xb40ebc['model'],qs[_0xa00e('0x35')](_0x211144[_0xa00e('0x31')]['fields']));_0x1fca37[_0xa00e('0x34')]=_0x1fca37['attributes'][_0xa00e('0x36')]?_0x1fca37['attributes']:_0xb40ebc[_0xa00e('0x2f')];if(_0x211144[_0xa00e('0x31')][_0xa00e('0x48')]){_0x1fca37[_0xa00e('0x49')]=[{'all':!![]}];}_0x1fca37=_['merge']({},_0x1fca37,_0x211144[_0xa00e('0x42')]);return db[_0xa00e('0x2c')][_0xa00e('0x4a')](_0x1fca37)[_0xa00e('0x26')](handleEntityNotFound(_0x1380c2,null))[_0xa00e('0x26')](respondWithResult(_0x1380c2,null))['catch'](handleError(_0x1380c2,null));};exports[_0xa00e('0x4b')]=function(_0x17dcec,_0xc3c4ac){return db[_0xa00e('0x2c')]['create'](_0x17dcec[_0xa00e('0x4c')],{})[_0xa00e('0x26')](respondWithResult(_0xc3c4ac,0xc9))[_0xa00e('0x45')](handleError(_0xc3c4ac,null));};exports['update']=function(_0x14ed0e,_0x34f5e5){if(_0x14ed0e[_0xa00e('0x4c')]['id']){delete _0x14ed0e[_0xa00e('0x4c')]['id'];}return db['OpenchannelApplication'][_0xa00e('0x4a')]({'where':{'id':_0x14ed0e[_0xa00e('0x47')]['id']}})[_0xa00e('0x26')](handleEntityNotFound(_0x34f5e5,null))[_0xa00e('0x26')](saveUpdates(_0x14ed0e[_0xa00e('0x4c')],null))[_0xa00e('0x26')](respondWithResult(_0x34f5e5,null))[_0xa00e('0x45')](handleError(_0x34f5e5,null));};exports[_0xa00e('0x4d')]=function(_0x1fe918,_0x318e3c){return db[_0xa00e('0x2c')][_0xa00e('0x4a')]({'where':{'id':_0x1fe918['params']['id']}})['then'](handleEntityNotFound(_0x318e3c,null))[_0xa00e('0x26')](removeEntity(_0x318e3c,null))[_0xa00e('0x45')](handleError(_0x318e3c,null));};
\ No newline at end of file
index 0e1e08a..c3f09c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x291f=['utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./openchannelApplication.attributes','openchannel_applications'];(function(_0x33feed,_0xbc8e19){var _0x105247=function(_0x564136){while(--_0x564136){_0x33feed['push'](_0x33feed['shift']());}};_0x105247(++_0xbc8e19);}(_0x291f,0xfe));var _0xf291=function(_0x3a5912,_0xafad2d){_0x3a5912=_0x3a5912-0x0;var _0x319314=_0x291f[_0x3a5912];return _0x319314;};'use strict';var _=require(_0xf291('0x0'));var util=require('util');var logger=require(_0xf291('0x1'))(_0xf291('0x2'));var moment=require(_0xf291('0x3'));var BPromise=require('bluebird');var rp=require(_0xf291('0x4'));var fs=require('fs');var path=require(_0xf291('0x5'));var rimraf=require(_0xf291('0x6'));var config=require(_0xf291('0x7'));var attributes=require(_0xf291('0x8'));module['exports']=function(_0x32b870,_0xf44192){return _0x32b870['define']('OpenchannelApplication',attributes,{'tableName':_0xf291('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf291('0xa'),'collate':_0xf291('0xb')});};
\ No newline at end of file
+var _0xe519=['utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','./openchannelApplication.attributes','define','openchannel_applications','utf8mb4'];(function(_0x5d8de7,_0x347af7){var _0x5f3cac=function(_0x171e21){while(--_0x171e21){_0x5d8de7['push'](_0x5d8de7['shift']());}};_0x5f3cac(++_0x347af7);}(_0xe519,0xd1));var _0x9e51=function(_0x2fbcef,_0x18412d){_0x2fbcef=_0x2fbcef-0x0;var _0x584993=_0xe519[_0x2fbcef];return _0x584993;};'use strict';var _=require(_0x9e51('0x0'));var util=require(_0x9e51('0x1'));var logger=require(_0x9e51('0x2'))(_0x9e51('0x3'));var moment=require(_0x9e51('0x4'));var BPromise=require(_0x9e51('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9e51('0x6'));var rimraf=require(_0x9e51('0x7'));var config=require('../../config/environment');var attributes=require(_0x9e51('0x8'));module['exports']=function(_0x407323,_0x4c3073){return _0x407323[_0x9e51('0x9')]('OpenchannelApplication',attributes,{'tableName':_0x9e51('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x9e51('0xb'),'collate':_0x9e51('0xc')});};
\ No newline at end of file
index 79dd2f7..8d39a0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd590=['request','then','info','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelApplication,\x20%s,\x20%s','message','result','UpdateOpenchannelApplication','OpenchannelApplication','body','options','where','attributes','limit','catch','lodash','moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x38f4f6,_0x1f3bb1){var _0x304481=function(_0x5eab4c){while(--_0x5eab4c){_0x38f4f6['push'](_0x38f4f6['shift']());}};_0x304481(++_0x1f3bb1);}(_0xd590,0x8c));var _0x0d59=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd590[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x0d59('0x0'));var util=require('util');var moment=require(_0x0d59('0x1'));var BPromise=require(_0x0d59('0x2'));var rs=require(_0x0d59('0x3'));var fs=require('fs');var Redis=require(_0x0d59('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x0d59('0x5'));var config=require(_0x0d59('0x6'));var jayson=require(_0x0d59('0x7'));var client=jayson[_0x0d59('0x8')][_0x0d59('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x59b160,_0x561fc2,_0x4183cf){return new BPromise(function(_0x3e4bd6,_0x48a2d7){return client[_0x0d59('0xa')](_0x59b160,_0x4183cf)[_0x0d59('0xb')](function(_0x44e98a){logger[_0x0d59('0xc')]('OpenchannelApplication,\x20%s,\x20%s',_0x561fc2,_0x0d59('0xd'));logger[_0x0d59('0xe')](_0x0d59('0xf'),_0x561fc2,_0x0d59('0xd'),JSON[_0x0d59('0x10')](_0x44e98a));if(_0x44e98a[_0x0d59('0x11')]){if(_0x44e98a[_0x0d59('0x11')][_0x0d59('0x12')]===0x1f4){logger[_0x0d59('0x11')](_0x0d59('0x13'),_0x561fc2,_0x44e98a[_0x0d59('0x11')][_0x0d59('0x14')]);return _0x48a2d7(_0x44e98a[_0x0d59('0x11')]['message']);}logger[_0x0d59('0x11')](_0x0d59('0x13'),_0x561fc2,_0x44e98a[_0x0d59('0x11')]['message']);return _0x3e4bd6(_0x44e98a[_0x0d59('0x11')][_0x0d59('0x14')]);}else{logger['info'](_0x0d59('0x13'),_0x561fc2,_0x0d59('0xd'));_0x3e4bd6(_0x44e98a[_0x0d59('0x15')][_0x0d59('0x14')]);}})['catch'](function(_0x4c4e33){logger[_0x0d59('0x11')]('OpenchannelApplication,\x20%s,\x20%s',_0x561fc2,_0x4c4e33);_0x48a2d7(_0x4c4e33);});});}exports[_0x0d59('0x16')]=function(_0xddd8c6){var _0x407069=this;return new Promise(function(_0x1cb006,_0x14c226){return db[_0x0d59('0x17')]['update'](_0xddd8c6[_0x0d59('0x18')],{'raw':_0xddd8c6['options']?_0xddd8c6[_0x0d59('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xddd8c6['options']?_0xddd8c6[_0x0d59('0x19')][_0x0d59('0x1a')]||null:null,'attributes':_0xddd8c6[_0x0d59('0x19')]?_0xddd8c6[_0x0d59('0x19')][_0x0d59('0x1b')]||null:null,'limit':_0xddd8c6[_0x0d59('0x19')]?_0xddd8c6[_0x0d59('0x19')][_0x0d59('0x1c')]||null:null})[_0x0d59('0xb')](function(_0x1b4ea0){logger[_0x0d59('0xc')](_0x0d59('0x16'),_0xddd8c6);logger[_0x0d59('0xe')]('UpdateOpenchannelApplication',_0xddd8c6,JSON[_0x0d59('0x10')](_0x1b4ea0));_0x1cb006(_0x1b4ea0);})[_0x0d59('0x1d')](function(_0x46c8b3){logger[_0x0d59('0x11')]('UpdateOpenchannelApplication',_0x46c8b3['message'],_0xddd8c6);_0x14c226(_0x407069[_0x0d59('0x11')](0x1f4,_0x46c8b3[_0x0d59('0x14')]));});});};
\ No newline at end of file
+var _0x310d=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','UpdateOpenchannelApplication','update','body','options','raw','where','limit','debug','catch','lodash','moment','bluebird','ioredis','../../mysqldb'];(function(_0x59c301,_0x359c50){var _0x3866b9=function(_0x2d380e){while(--_0x2d380e){_0x59c301['push'](_0x59c301['shift']());}};_0x3866b9(++_0x359c50);}(_0x310d,0x1ad));var _0xd310=function(_0x28e56b,_0x50e46b){_0x28e56b=_0x28e56b-0x0;var _0x3256a2=_0x310d[_0x28e56b];return _0x3256a2;};'use strict';var _=require(_0xd310('0x0'));var util=require('util');var moment=require(_0xd310('0x1'));var BPromise=require(_0xd310('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd310('0x3'));var db=require(_0xd310('0x4'))['db'];var utils=require(_0xd310('0x5'));var logger=require(_0xd310('0x6'))(_0xd310('0x7'));var config=require(_0xd310('0x8'));var jayson=require(_0xd310('0x9'));var client=jayson[_0xd310('0xa')][_0xd310('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x35248a,_0x436307,_0x260c79){return new BPromise(function(_0x162c1f,_0x429a38){return client[_0xd310('0xc')](_0x35248a,_0x260c79)[_0xd310('0xd')](function(_0x2aad1a){logger[_0xd310('0xe')](_0xd310('0xf'),_0x436307,_0xd310('0x10'));logger['debug'](_0xd310('0x11'),_0x436307,_0xd310('0x10'),JSON[_0xd310('0x12')](_0x2aad1a));if(_0x2aad1a[_0xd310('0x13')]){if(_0x2aad1a[_0xd310('0x13')][_0xd310('0x14')]===0x1f4){logger[_0xd310('0x13')](_0xd310('0xf'),_0x436307,_0x2aad1a[_0xd310('0x13')]['message']);return _0x429a38(_0x2aad1a[_0xd310('0x13')][_0xd310('0x15')]);}logger[_0xd310('0x13')](_0xd310('0xf'),_0x436307,_0x2aad1a[_0xd310('0x13')][_0xd310('0x15')]);return _0x162c1f(_0x2aad1a[_0xd310('0x13')][_0xd310('0x15')]);}else{logger[_0xd310('0xe')](_0xd310('0xf'),_0x436307,_0xd310('0x10'));_0x162c1f(_0x2aad1a['result']['message']);}})['catch'](function(_0x1e80e4){logger[_0xd310('0x13')](_0xd310('0xf'),_0x436307,_0x1e80e4);_0x429a38(_0x1e80e4);});});}exports[_0xd310('0x16')]=function(_0x5871eb){var _0x38fb7f=this;return new Promise(function(_0x30a3b6,_0x273a24){return db['OpenchannelApplication'][_0xd310('0x17')](_0x5871eb[_0xd310('0x18')],{'raw':_0x5871eb[_0xd310('0x19')]?_0x5871eb[_0xd310('0x19')][_0xd310('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5871eb[_0xd310('0x19')]?_0x5871eb[_0xd310('0x19')][_0xd310('0x1b')]||null:null,'attributes':_0x5871eb['options']?_0x5871eb[_0xd310('0x19')]['attributes']||null:null,'limit':_0x5871eb['options']?_0x5871eb[_0xd310('0x19')][_0xd310('0x1c')]||null:null})[_0xd310('0xd')](function(_0x2a5754){logger[_0xd310('0xe')](_0xd310('0x16'),_0x5871eb);logger[_0xd310('0x1d')](_0xd310('0x16'),_0x5871eb,JSON[_0xd310('0x12')](_0x2a5754));_0x30a3b6(_0x2a5754);})[_0xd310('0x1e')](function(_0x9282e4){logger[_0xd310('0x13')](_0xd310('0x16'),_0x9282e4[_0xd310('0x15')],_0x5871eb);_0x273a24(_0x38fb7f[_0xd310('0x13')](0x1f4,_0x9282e4[_0xd310('0x15')]));});});};
\ No newline at end of file
index 011a675..a3406e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cbe=['openchannelinteraction:addtags','addTags','openchannelinteraction:update','update','delete','tracked','openchannelinteraction:destroy','destroy','removeTags','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./openchannelInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','getMessages','create','post','/:id/tags','openchannel'];(function(_0x4177d1,_0x2f0e7b){var _0x7406d7=function(_0x13ac53){while(--_0x13ac53){_0x4177d1['push'](_0x4177d1['shift']());}};_0x7406d7(++_0x2f0e7b);}(_0x5cbe,0xc4));var _0xe5cb=function(_0x3041f4,_0xde0ce7){_0x3041f4=_0x3041f4-0x0;var _0x41d414=_0x5cbe[_0x3041f4];return _0x41d414;};'use strict';var multer=require(_0xe5cb('0x0'));var util=require(_0xe5cb('0x1'));var path=require(_0xe5cb('0x2'));var timeout=require(_0xe5cb('0x3'));var express=require(_0xe5cb('0x4'));var router=express[_0xe5cb('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xe5cb('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xe5cb('0x7'));var controller=require(_0xe5cb('0x8'));router[_0xe5cb('0x9')]('/',auth[_0xe5cb('0xa')](),controller[_0xe5cb('0xb')]);router['get'](_0xe5cb('0xc'),auth['isAuthenticated'](),controller[_0xe5cb('0xd')]);router['get'](_0xe5cb('0xe'),auth['isAuthenticated'](),controller[_0xe5cb('0xf')]);router['get']('/:id/messages',auth[_0xe5cb('0xa')](),controller[_0xe5cb('0x10')]);router['get']('/:id/download',auth['isAuthenticated'](),controller['download']);router['post']('/',auth[_0xe5cb('0xa')](),controller[_0xe5cb('0x11')]);router[_0xe5cb('0x12')]('/:id/messages',auth['isAuthenticated'](),controller['addMessage']);router['post'](_0xe5cb('0x13'),auth[_0xe5cb('0xa')](),interaction['tracked'](_0xe5cb('0x14'),_0xe5cb('0x15')),controller[_0xe5cb('0x16')]);router['put'](_0xe5cb('0xe'),auth[_0xe5cb('0xa')](),interaction['tracked'](_0xe5cb('0x14'),_0xe5cb('0x17')),controller[_0xe5cb('0x18')]);router[_0xe5cb('0x19')](_0xe5cb('0xe'),auth[_0xe5cb('0xa')](),interaction[_0xe5cb('0x1a')]('openchannel',_0xe5cb('0x1b')),controller[_0xe5cb('0x1c')]);router[_0xe5cb('0x19')](_0xe5cb('0x13'),auth[_0xe5cb('0xa')](),controller[_0xe5cb('0x1d')]);module[_0xe5cb('0x1e')]=router;
\ No newline at end of file
+var _0x1906=['/describe','describe','/:id','show','/:id/messages','/:id/download','download','create','addMessage','post','/:id/tags','openchannelinteraction:addtags','tracked','openchannelinteraction:update','update','openchannelinteraction:destroy','removeTags','exports','multer','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelInteraction.controller','get','isAuthenticated'];(function(_0x1e802c,_0x37f611){var _0xfb5ab4=function(_0x16af79){while(--_0x16af79){_0x1e802c['push'](_0x1e802c['shift']());}};_0xfb5ab4(++_0x37f611);}(_0x1906,0x1ee));var _0x6190=function(_0x295cc9,_0x56f389){_0x295cc9=_0x295cc9-0x0;var _0x2a1858=_0x1906[_0x295cc9];return _0x2a1858;};'use strict';var multer=require(_0x6190('0x0'));var util=require('util');var path=require(_0x6190('0x1'));var timeout=require(_0x6190('0x2'));var express=require('express');var router=express[_0x6190('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x6190('0x4'));var interaction=require(_0x6190('0x5'));var config=require(_0x6190('0x6'));var controller=require(_0x6190('0x7'));router[_0x6190('0x8')]('/',auth[_0x6190('0x9')](),controller['index']);router[_0x6190('0x8')](_0x6190('0xa'),auth[_0x6190('0x9')](),controller[_0x6190('0xb')]);router[_0x6190('0x8')](_0x6190('0xc'),auth[_0x6190('0x9')](),controller[_0x6190('0xd')]);router[_0x6190('0x8')](_0x6190('0xe'),auth[_0x6190('0x9')](),controller['getMessages']);router['get'](_0x6190('0xf'),auth['isAuthenticated'](),controller[_0x6190('0x10')]);router['post']('/',auth['isAuthenticated'](),controller[_0x6190('0x11')]);router['post']('/:id/messages',auth[_0x6190('0x9')](),controller[_0x6190('0x12')]);router[_0x6190('0x13')](_0x6190('0x14'),auth['isAuthenticated'](),interaction['tracked']('openchannel',_0x6190('0x15')),controller['addTags']);router['put'](_0x6190('0xc'),auth[_0x6190('0x9')](),interaction[_0x6190('0x16')]('openchannel',_0x6190('0x17')),controller[_0x6190('0x18')]);router['delete'](_0x6190('0xc'),auth[_0x6190('0x9')](),interaction[_0x6190('0x16')]('openchannel',_0x6190('0x19')),controller['destroy']);router['delete'](_0x6190('0x14'),auth['isAuthenticated'](),controller[_0x6190('0x1a')]);module[_0x6190('0x1b')]=router;
\ No newline at end of file
index 7077364..06a2fa1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda65=['ENUM','out','sequelize','exports','BOOLEAN','STRING','DATE'];(function(_0x36c6eb,_0x4fb127){var _0x30675b=function(_0x3a788b){while(--_0x3a788b){_0x36c6eb['push'](_0x36c6eb['shift']());}};_0x30675b(++_0x4fb127);}(_0xda65,0x1d0));var _0x5da6=function(_0x3a6c45,_0x2fbb05){_0x3a6c45=_0x3a6c45-0x0;var _0x120074=_0xda65[_0x3a6c45];return _0x120074;};'use strict';var Sequelize=require(_0x5da6('0x0'));module[_0x5da6('0x1')]={'closed':{'type':Sequelize[_0x5da6('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x5da6('0x3')]},'secondDisposition':{'type':Sequelize[_0x5da6('0x3')]},'thirdDisposition':{'type':Sequelize[_0x5da6('0x3')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize['DATE']},'threadId':{'type':Sequelize[_0x5da6('0x3')]},'externalUrl':{'type':Sequelize[_0x5da6('0x3')]},'lastMsgAt':{'type':Sequelize[_0x5da6('0x4')]},'lastMsgDirection':{'type':Sequelize[_0x5da6('0x5')]('in',_0x5da6('0x6')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize['STRING']},'autoreplyExecuted':{'type':Sequelize[_0x5da6('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0xe8a4=['ENUM','out','sequelize','BOOLEAN','STRING','DATE'];(function(_0x5b3c11,_0x1976df){var _0xcd0657=function(_0x4dc055){while(--_0x4dc055){_0x5b3c11['push'](_0x5b3c11['shift']());}};_0xcd0657(++_0x1976df);}(_0xe8a4,0x158));var _0x4e8a=function(_0x2fc012,_0x503e5b){_0x2fc012=_0x2fc012-0x0;var _0x2891f9=_0xe8a4[_0x2fc012];return _0x2891f9;};'use strict';var Sequelize=require(_0x4e8a('0x0'));module['exports']={'closed':{'type':Sequelize[_0x4e8a('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x4e8a('0x2')]},'secondDisposition':{'type':Sequelize[_0x4e8a('0x2')]},'thirdDisposition':{'type':Sequelize[_0x4e8a('0x2')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x4e8a('0x3')]},'threadId':{'type':Sequelize[_0x4e8a('0x2')]},'externalUrl':{'type':Sequelize['STRING']},'lastMsgAt':{'type':Sequelize[_0x4e8a('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x4e8a('0x4')]('in',_0x4e8a('0x5')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x4e8a('0x2')]},'autoreplyExecuted':{'type':Sequelize[_0x4e8a('0x1')],'defaultValue':![]}};
\ No newline at end of file
index 2d81378..49a333f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a22=['addTags','ids','omit','spread','openchannelInteractionTags:save','removeTags','download','unix','join','root','server','files','attachments','transcript-%d-%s.zip','fullname','CmContact','firstName','lastName','Attachment','Messages','direction','secret','OpenchannelAccount','Account','Owner','Openchannel','closed','closedAt','disposition','threadId','Private','basename','createReadStream','out','System','renderFile','views','downloadInteraction.ejs','.pdf','createPdfFromHTML','log','err','eml-format','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','redis','localhost','socket.io-emitter','./openchannelInteraction.socket','sendStatus','status','end','json','limit','undefined','offset','count','apply','save','update','then','error','stack','name','Users','map','TagIds','split','forEach','push','catch','index','OpenchannelInteraction','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','nolimit','sort','where','pick','select','field','color','from','u.id','ui.OpenchannelInteractionId','user_has_openchannel_interactions','left_join','users','u.id\x20=\x20ui.UserId','openchannel_interactions','cm_contacts','o.id\x20=\x20i.UserId','openchannel_accounts','a.id\x20=\x20i.OpenchannelAccountId','openchannel_messages','me.OpenchannelInteractionId\x20=\x20i.id','openchannel_interaction_has_tags','it.OpenchannelInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','length','conditions','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','find','UserId','body','some','isEmpty','OpenchannelAccountId','i.OpenchannelAccountId\x20IN\x20?','concat','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','tag','isArray','filter','replace','isNumeric','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','Sequelize','clone','i.id','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','contactName','t.id\x20IN\x20?','resolve','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getOpenchannelAccounts','i.OpenchannelAccountId\x20IS\x20NULL','sequelize','keyBy','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','i.*','c.firstName','c.lastName','Contact.lastName','Contact.email','c.phone','Contact.phone','Contact.mobile','c.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','toString','OpenchannelInteractionId','all','rows','params','include','options','create','describe','addMessage','OpenchannelMessage','findOne','hasOwnProperty','format','YYYY-MM-DD\x20HH:mm:ss','findAll'];(function(_0x57e944,_0x54b50c){var _0x23d9f0=function(_0x532c9b){while(--_0x532c9b){_0x57e944['push'](_0x57e944['shift']());}};_0x23d9f0(++_0x54b50c);}(_0x2a22,0x1ec));var _0x22a2=function(_0xdea41a,_0x552987){_0xdea41a=_0xdea41a-0x0;var _0x15d0d8=_0x2a22[_0xdea41a];return _0x15d0d8;};'use strict';var emlformat=require(_0x22a2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x22a2('0x1'));var jsonpatch=require(_0x22a2('0x2'));var rp=require(_0x22a2('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x22a2('0x4'));var util=require(_0x22a2('0x5'));var path=require(_0x22a2('0x6'));var sox=require(_0x22a2('0x7'));var csv=require(_0x22a2('0x8'));var ejs=require(_0x22a2('0x9'));var fs=require('fs');var fs_extra=require(_0x22a2('0xa'));var _=require(_0x22a2('0xb'));var squel=require('squel');var crypto=require(_0x22a2('0xc'));var jsforce=require(_0x22a2('0xd'));var deskjs=require(_0x22a2('0xe'));var toCsv=require('to-csv');var querystring=require(_0x22a2('0xf'));var Papa=require(_0x22a2('0x10'));var Redis=require(_0x22a2('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x22a2('0x12'));var pdf=require('../../components/export/pdf');var hardwareService=require(_0x22a2('0x13'));var logger=require(_0x22a2('0x14'))(_0x22a2('0x15'));var utils=require(_0x22a2('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x22a2('0x17'));var db=require('../../mysqldb')['db'];config[_0x22a2('0x18')]=_['defaults'](config['redis'],{'host':_0x22a2('0x19'),'port':0x18eb});var socket=require(_0x22a2('0x1a'))(new Redis(config[_0x22a2('0x18')]));require(_0x22a2('0x1b'))['register'](socket);function respondWithStatusCode(_0x17c547,_0x2765e5){_0x2765e5=_0x2765e5||0xcc;return function(_0x5adfc3){if(_0x5adfc3){return _0x17c547[_0x22a2('0x1c')](_0x2765e5);}return _0x17c547[_0x22a2('0x1d')](_0x2765e5)[_0x22a2('0x1e')]();};}function respondWithResult(_0x3303ea,_0x588f6a){_0x588f6a=_0x588f6a||0xc8;return function(_0x20c84a){if(_0x20c84a){return _0x3303ea[_0x22a2('0x1d')](_0x588f6a)[_0x22a2('0x1f')](_0x20c84a);}};}function respondWithFilteredResult(_0x52f8b5,_0x4f5b94){return function(_0x289511){if(_0x289511){var _0x2fc62d=typeof _0x4f5b94['offset']==='undefined'&&typeof _0x4f5b94[_0x22a2('0x20')]===_0x22a2('0x21');var _0x2e3eaa=_0x289511['count'];var _0x2585f1=_0x2fc62d?0x0:_0x4f5b94[_0x22a2('0x22')];var _0x372aac=_0x2fc62d?_0x289511[_0x22a2('0x23')]:_0x4f5b94[_0x22a2('0x22')]+_0x4f5b94['limit'];var _0x26b41;if(_0x372aac>=_0x2e3eaa){_0x372aac=_0x2e3eaa;_0x26b41=0xc8;}else{_0x26b41=0xce;}_0x52f8b5[_0x22a2('0x1d')](_0x26b41);return _0x52f8b5['set']('Content-Range',_0x2585f1+'-'+_0x372aac+'/'+_0x2e3eaa)['json'](_0x289511);}return null;};}function patchUpdates(_0xb2093a){return function(_0x1d7522){try{jsonpatch[_0x22a2('0x24')](_0x1d7522,_0xb2093a,!![]);}catch(_0x48db65){return BPromise['reject'](_0x48db65);}return _0x1d7522[_0x22a2('0x25')]();};}function saveUpdates(_0x27d876,_0x73d501){return function(_0x1c2043){if(_0x1c2043){return _0x1c2043[_0x22a2('0x26')](_0x27d876)[_0x22a2('0x27')](function(_0x211fac){return _0x211fac;});}return null;};}function removeEntity(_0x3437a6,_0x1e4f99){return function(_0x3423a7){if(_0x3423a7){return _0x3423a7['destroy']()[_0x22a2('0x27')](function(){_0x3437a6[_0x22a2('0x1d')](0xcc)[_0x22a2('0x1e')]();});}};}function handleEntityNotFound(_0x5ea972,_0x28b0e6){return function(_0x5bd16c){if(!_0x5bd16c){_0x5ea972[_0x22a2('0x1c')](0x194);}return _0x5bd16c;};}function handleError(_0x197f7a,_0x8fa86f){_0x8fa86f=_0x8fa86f||0x1f4;return function(_0x20fa7e){logger[_0x22a2('0x28')](_0x20fa7e[_0x22a2('0x29')]);if(_0x20fa7e['name']){delete _0x20fa7e[_0x22a2('0x2a')];}_0x197f7a[_0x22a2('0x1d')](_0x8fa86f)['send'](_0x20fa7e);};}function getInteractionUsers(_0x2a65c7,_0x140fd5){return new BPromise(function(_0x4a8302,_0x45163e){try{if(_0x140fd5[_0x2a65c7['id']]){_0x2a65c7[_0x22a2('0x2b')]=_[_0x22a2('0x2c')](_0x140fd5[_0x2a65c7['id']],function(_0x4bd2b1){return{'id':_0x4bd2b1['id'],'fullname':_0x4bd2b1['fullname']};});}}catch(_0xb0808e){_0x45163e(_0xb0808e);}_0x4a8302(_0x2a65c7);});}function getInteractionTags(_0x506f4a,_0x3a2957){return new BPromise(function(_0x14f351,_0x4af1b7){try{if(_0x506f4a[_0x22a2('0x2d')]){_0x506f4a['Tags']=[];_0x506f4a['TagIds'][_0x22a2('0x2e')](',')[_0x22a2('0x2f')](function(_0x3572f3){_0x506f4a['Tags'][_0x22a2('0x30')](_0x3a2957[_0x3572f3]);});}delete _0x506f4a[_0x22a2('0x2d')];}catch(_0x27403f){_0x4af1b7(_0x27403f);}_0x14f351(_0x506f4a);});}function updateOpenchannelInteraction(_0x14d8cc,_0x5398c5,_0x4dc155){return new BPromise(function(_0x891e5,_0x42ad8f){return getInteractionUsers(_0x14d8cc,_0x4dc155)[_0x22a2('0x27')](function(_0x25932f){return getInteractionTags(_0x25932f,_0x5398c5);})[_0x22a2('0x27')](function(_0x234dc4){_0x891e5(_0x234dc4);})[_0x22a2('0x31')](function(_0x5b4e01){_0x42ad8f(_0x5b4e01);});});}exports[_0x22a2('0x32')]=function(_0x58c2db,_0xe0ed5f){var _0x5022c6={},_0x3c7264={},_0x2299c3={'count':0x0,'rows':[]};var _0x5d5384=_['map'](db[_0x22a2('0x33')][_0x22a2('0x34')],function(_0x406a93){return{'name':_0x406a93[_0x22a2('0x35')],'type':_0x406a93[_0x22a2('0x36')][_0x22a2('0x37')]};});_0x3c7264[_0x22a2('0x38')]=_[_0x22a2('0x2c')](_0x5d5384,'name');_0x3c7264[_0x22a2('0x39')]=_[_0x22a2('0x3a')](_0x58c2db[_0x22a2('0x39')]);_0x3c7264[_0x22a2('0x3b')]=_[_0x22a2('0x3c')](_0x3c7264[_0x22a2('0x38')],_0x3c7264[_0x22a2('0x39')]);_0x5022c6['attributes']=_[_0x22a2('0x3c')](_0x3c7264[_0x22a2('0x38')],qs['fields'](_0x58c2db['query'][_0x22a2('0x3d')]));_0x5022c6[_0x22a2('0x3e')]=_0x5022c6['attributes']['length']?_0x5022c6[_0x22a2('0x3e')]:_0x3c7264[_0x22a2('0x38')];if(!_0x58c2db['query']['hasOwnProperty'](_0x22a2('0x3f'))){_0x5022c6[_0x22a2('0x20')]=qs[_0x22a2('0x20')](_0x58c2db[_0x22a2('0x39')][_0x22a2('0x20')]);_0x5022c6[_0x22a2('0x22')]=qs['offset'](_0x58c2db['query'][_0x22a2('0x22')]);}_0x5022c6['order']=qs[_0x22a2('0x40')](_0x58c2db[_0x22a2('0x39')][_0x22a2('0x40')]);_0x5022c6[_0x22a2('0x41')]=qs[_0x22a2('0x3b')](_[_0x22a2('0x42')](_0x58c2db[_0x22a2('0x39')],_0x3c7264[_0x22a2('0x3b')]),_0x5d5384);var _0x4ee01c=[];var _0x2cd816=squel[_0x22a2('0x43')]()[_0x22a2('0x44')]('id')[_0x22a2('0x44')](_0x22a2('0x2a'))['field'](_0x22a2('0x45'))[_0x22a2('0x46')]('tools_tags');var _0x29780b=squel[_0x22a2('0x43')]()[_0x22a2('0x44')](_0x22a2('0x47'))[_0x22a2('0x44')]('u.fullname')[_0x22a2('0x44')](_0x22a2('0x48'))[_0x22a2('0x46')](_0x22a2('0x49'),'ui')[_0x22a2('0x4a')](_0x22a2('0x4b'),'u',_0x22a2('0x4c'));var _0x4d121e=squel['select']()[_0x22a2('0x46')](_0x22a2('0x4d'),'i')[_0x22a2('0x4a')](_0x22a2('0x4e'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')['left_join'](_0x22a2('0x4b'),'o',_0x22a2('0x4f'))['left_join'](_0x22a2('0x50'),'a',_0x22a2('0x51'))[_0x22a2('0x4a')](_0x22a2('0x52'),'me',_0x22a2('0x53'))[_0x22a2('0x4a')](_0x22a2('0x54'),'it',_0x22a2('0x55'))['left_join']('tools_tags','t',_0x22a2('0x56'));var _0x41289c=squel[_0x22a2('0x57')]();var _0x80cec4=[];var _0x162c81=squel[_0x22a2('0x57')]();var _0xc2d973;if(_0x58c2db[_0x22a2('0x39')][_0x22a2('0x58')]){_0xc2d973=as[_0x22a2('0x59')](_0x58c2db[_0x22a2('0x39')]['search']);var _0x3c86cd=_0xc2d973[_0x22a2('0x5a')];for(var _0x351527=0x0;_0x351527<_0xc2d973['conditions'][_0x22a2('0x5b')];_0x351527++){var _0x40d04f=_0xc2d973[_0x22a2('0x5c')][_0x351527];var _0x1ad0ef='i';var _0x4a35c8=_['find'](_0x5d5384,[_0x22a2('0x2a'),_0x40d04f[_0x22a2('0x44')]]);if(!_0x4a35c8){switch(_0x40d04f['field']){case _0x22a2('0x5d'):if(_0x40d04f[_0x22a2('0x5e')]==0x1){_0x4d121e[_0x22a2('0x5f')]('`'+_0x40d04f['field']+_0x22a2('0x60'));}else{_0x4d121e[_0x22a2('0x5f')]('`'+_0x40d04f[_0x22a2('0x44')]+_0x22a2('0x61'));}break;case _0x22a2('0x62'):if(_0x40d04f[_0x22a2('0x63')]===_0x22a2('0x64')){if(_0x40d04f[_0x22a2('0x5e')]['split']('\x20')[_0x22a2('0x5b')]>0x1){_0x41289c[_0x3c86cd](_0x22a2('0x65'),qs['getFullTextValue'](_0x40d04f[_0x22a2('0x5e')]),null);}else{var _0x1a4aef='%'+_0x40d04f['value']+'%';_0x41289c[_0x3c86cd](_0x22a2('0x66'),_0x1a4aef,_0x1a4aef,_0x1a4aef);}}else{_0x4a35c8=_['find'](_0x5d5384,[_0x22a2('0x2a'),'ContactId']);_0x40d04f[_0x22a2('0x44')]=_0x22a2('0x67');_0x582a61=as[_0x22a2('0x68')](_0x1ad0ef,_0x4a35c8[_0x22a2('0x36')],_0x40d04f);_0x41289c[_0x3c86cd](_0x582a61[_0x22a2('0x69')],_0x582a61['value'][_0x22a2('0x6a')],_0x582a61[_0x22a2('0x5e')][_0x22a2('0x1e')]);}break;case'Tag':var _0x1ff162=_0x40d04f['value'][_0x22a2('0x2e')](',')[_0x22a2('0x2c')](function(_0x4502e6){return Number(_0x4502e6);});_0x1ff162[_0x22a2('0x2f')](function(_0x263ea0){_0x162c81['or'](_0x22a2('0x6b'),'%,'+_0x263ea0+',%');});_0x80cec4=_['union'](_0x80cec4,_0x1ff162);break;case _0x22a2('0x6c'):if(_0x40d04f[_0x22a2('0x63')]===_0x22a2('0x64')){_0x41289c[_0x3c86cd](_0x22a2('0x6d'),'%'+_0x40d04f[_0x22a2('0x5e')]+'%',null);}else{_0x4a35c8=_[_0x22a2('0x6e')](_0x5d5384,[_0x22a2('0x2a'),_0x22a2('0x6f')]);_0x40d04f[_0x22a2('0x44')]=_0x22a2('0x6f');_0x582a61=as[_0x22a2('0x68')](_0x1ad0ef,_0x4a35c8[_0x22a2('0x36')],_0x40d04f);_0x41289c[_0x3c86cd](_0x582a61['text'],_0x582a61['value'][_0x22a2('0x6a')],_0x582a61['value'][_0x22a2('0x1e')]);}break;case _0x22a2('0x70'):_0x582a61=as['buildExpression']('me',null,_0x40d04f);_0x41289c[_0x3c86cd](_0x582a61['text'],_0x582a61[_0x22a2('0x5e')][_0x22a2('0x6a')],_0x582a61['value'][_0x22a2('0x1e')]);break;}}else{var _0x582a61=as[_0x22a2('0x68')](_0x1ad0ef,_0x4a35c8[_0x22a2('0x36')],_0x40d04f);_0x41289c[_0x3c86cd](_0x582a61['text'],_0x582a61[_0x22a2('0x5e')]['start'],_0x582a61[_0x22a2('0x5e')][_0x22a2('0x1e')]);}}}else{var _0x19604a=_(_0x58c2db[_0x22a2('0x39')])[_0x22a2('0x3a')]()[_0x22a2('0x2c')](function(_0xd8bfcc){return _[_0x22a2('0x71')](_0x5d5384,[_0x22a2('0x2a'),_0xd8bfcc])?_0xd8bfcc:undefined;})['compact']()[_0x22a2('0x5e')]();if(!_[_0x22a2('0x72')](_0x19604a)){_0x19604a['forEach'](function(_0xab3b93){if(_0xab3b93===_0x22a2('0x73')){_0x4d121e['where'](_0x22a2('0x74'),[][_0x22a2('0x75')](_0x58c2db[_0x22a2('0x39')][_0xab3b93]));}else if(_0xab3b93===_0x22a2('0x76')){var _0x5ca950=JSON[_0x22a2('0x77')](_0x58c2db[_0x22a2('0x39')][_0xab3b93])[_0x22a2('0x78')];var _0x10f5a9=JSON[_0x22a2('0x77')](_0x58c2db[_0x22a2('0x39')][_0xab3b93])['$lte'];_0x4d121e[_0x22a2('0x41')](_0x22a2('0x79'),_0x5ca950,_0x10f5a9);}else{if(_0x58c2db[_0x22a2('0x39')][_0xab3b93]===_0x22a2('0x7a')){_0x4d121e[_0x22a2('0x41')]('i.'+_0xab3b93+_0x22a2('0x7b'));}else{_0x4d121e[_0x22a2('0x41')]('i.'+_0xab3b93+_0x22a2('0x7c'),_0x58c2db['query'][_0xab3b93]);}}});}if(_0x58c2db[_0x22a2('0x39')][_0x22a2('0x7d')]){if(_0x58c2db[_0x22a2('0x39')][_0x22a2('0x7d')]==0x1){_0x4d121e['having'](_0x22a2('0x7e'));}else{_0x4d121e['having']('`unreadMessages`\x20>\x200');}}if(_0x58c2db[_0x22a2('0x39')][_0x22a2('0x7f')]){_0x80cec4=_[_0x22a2('0x80')](_0x58c2db[_0x22a2('0x39')][_0x22a2('0x7f')])?_0x58c2db[_0x22a2('0x39')][_0x22a2('0x7f')]:new Array(_0x58c2db[_0x22a2('0x39')][_0x22a2('0x7f')]);_0x80cec4[_0x22a2('0x2f')](function(_0x105372){_0x162c81['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x105372+',%');});}if(_0x58c2db['query']['filter']){var _0x5f28c3=_0x58c2db[_0x22a2('0x39')][_0x22a2('0x81')]['replace']('\x5c','\x5c\x5c')[_0x22a2('0x82')](/'/g,'\x27\x27');if(qs[_0x22a2('0x83')](_0x5f28c3)){_0x41289c['or']('i.id\x20LIKE\x20?',_0x5f28c3+'%');}else{_0x41289c['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x5f28c3))['or']('i.from\x20LIKE\x20?',_0x5f28c3+'%')['or'](_0x22a2('0x84'),_0x5f28c3+'%');}}}_0x4d121e[_0x22a2('0x41')](_0x41289c);_0x4d121e['group']('i.id');var _0x18e73b={'type':db[_0x22a2('0x85')]['QueryTypes']['SELECT'],'raw':!![]};var _0x58480b=_0x4d121e[_0x22a2('0x86')]();_0x58480b[_0x22a2('0x44')](_0x22a2('0x87'));_0x58480b[_0x22a2('0x44')](_0x22a2('0x88'),_0x22a2('0x5d'));if(_0x5022c6['order']){_0x5022c6[_0x22a2('0x89')][_0x22a2('0x2f')](function(_0x4a2ca2){var _0x263182=_0x4a2ca2[0x0]===_0x22a2('0x8a')?_0x4a2ca2[0x0]:'i.'+_0x4a2ca2[0x0];_0x4d121e[_0x22a2('0x89')](_0x263182,_0x4a2ca2[0x1]==='DESC'?![]:!![]);});}if(!_[_0x22a2('0x72')](_0x80cec4)){_0x4d121e[_0x22a2('0x5f')](_0x162c81);_0x58480b[_0x22a2('0x41')](_0x22a2('0x8b'),_0x80cec4);}BPromise[_0x22a2('0x8c')]()[_0x22a2('0x27')](function(){if(!_0xc2d973){if(_0x58c2db[_0x22a2('0x39')][_0x22a2('0x73')])return;_0x58480b[_0x22a2('0x41')](_0x22a2('0x8d'));_0x4d121e[_0x22a2('0x41')](_0x22a2('0x8d'));return;}if(_0x58c2db[_0x22a2('0x8e')][_0x22a2('0x8f')]!==_0x22a2('0x90'))return;return _0x58c2db['user'][_0x22a2('0x91')]({'attributes':['id'],'raw':!![]})[_0x22a2('0x27')](function(_0x363098){if(_[_0x22a2('0x72')](_0x363098)){_0x58480b[_0x22a2('0x41')](_0x22a2('0x92'));_0x4d121e['where'](_0x22a2('0x92'));}else{_0x58480b[_0x22a2('0x41')](_0x22a2('0x74'),_['map'](_0x363098,'id'));_0x4d121e[_0x22a2('0x41')](_0x22a2('0x74'),_[_0x22a2('0x2c')](_0x363098,'id'));}});})[_0x22a2('0x27')](function(){if(_0x58c2db[_0x22a2('0x8e')][_0x22a2('0x8f')]===_0x22a2('0x90')&&!_0xc2d973&&!_0x58c2db[_0x22a2('0x39')][_0x22a2('0x73')])return[];return db[_0x22a2('0x93')]['query'](_0x58480b['toString'](),_0x18e73b);})['then'](function(_0xc2c963){_0x2299c3[_0x22a2('0x23')]=_0xc2c963['length'];if(_0x2299c3['count']===0x0)return[];return db[_0x22a2('0x93')][_0x22a2('0x39')](_0x2cd816['toString'](),_0x18e73b)[_0x22a2('0x27')](function(_0x358466){_0x4ee01c=_[_0x22a2('0x94')](_0x358466,'id');_0x18e73b=_[_0x22a2('0x95')](_0x18e73b,{'model':db[_0x22a2('0x33')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x58c2db[_0x22a2('0x39')][_0x22a2('0x3d')]){_0x5022c6[_0x22a2('0x3e')][_0x22a2('0x2f')](function(_0x3d5b0a){_0x4d121e[_0x22a2('0x44')]('i.'+_0x3d5b0a);});}else{_0x4d121e[_0x22a2('0x44')](_0x22a2('0x88'),_0x22a2('0x5d'));_0x4d121e[_0x22a2('0x44')]('a.key','Account.key');_0x4d121e['field'](_0x22a2('0x96'),_0x22a2('0x97'));_0x4d121e['field'](_0x22a2('0x98'),_0x22a2('0x8a'));_0x4d121e[_0x22a2('0x44')](_0x22a2('0x99'));_0x4d121e[_0x22a2('0x44')](_0x22a2('0x9a'),'Contact.firstName');_0x4d121e['field'](_0x22a2('0x9b'),_0x22a2('0x9c'));_0x4d121e[_0x22a2('0x44')]('c.email',_0x22a2('0x9d'));_0x4d121e[_0x22a2('0x44')](_0x22a2('0x9e'),_0x22a2('0x9f'));_0x4d121e['field']('c.mobile',_0x22a2('0xa0'));_0x4d121e[_0x22a2('0x44')](_0x22a2('0xa1'),'Contact.fax');_0x4d121e['field'](_0x22a2('0xa2'),_0x22a2('0xa3'));_0x4d121e[_0x22a2('0x44')](_0x22a2('0xa4'),_0x22a2('0xa5'));_0x4d121e[_0x22a2('0x44')](_0x22a2('0xa6'),_0x22a2('0x2d'));}if(_0x5022c6[_0x22a2('0x20')])_0x4d121e['limit'](_0x5022c6[_0x22a2('0x20')]);if(_0x5022c6[_0x22a2('0x22')])_0x4d121e[_0x22a2('0x22')](_0x5022c6['offset']);return db[_0x22a2('0x93')]['query'](_0x4d121e[_0x22a2('0xa7')](),_0x18e73b);})[_0x22a2('0x27')](function(_0x262c4f){if(_0x262c4f[_0x22a2('0x5b')]>0x0)_0x29780b[_0x22a2('0x41')]('ui.OpenchannelInteractionId\x20IN\x20?',_[_0x22a2('0x2c')](_0x262c4f,'id'));return db['sequelize'][_0x22a2('0x39')](_0x29780b[_0x22a2('0xa7')](),_0x18e73b)[_0x22a2('0x27')](function(_0x3a7243){var _0x4cbdb1=_['groupBy'](_0x3a7243,_0x22a2('0xa8'));var _0x3a5fe6=[];_0x262c4f[_0x22a2('0x2f')](function(_0x72abbf){_0x3a5fe6[_0x22a2('0x30')](updateOpenchannelInteraction(_0x72abbf,_0x4ee01c,_0x4cbdb1));});return BPromise[_0x22a2('0xa9')](_0x3a5fe6);});});})[_0x22a2('0x27')](function(_0x23d116){_0x2299c3[_0x22a2('0xaa')]=_0x23d116;return _0x2299c3;})[_0x22a2('0x27')](respondWithFilteredResult(_0xe0ed5f,_0x5022c6))['catch'](handleError(_0xe0ed5f,null));};exports['show']=function(_0x39e55c,_0x178190){var _0x3e9829={};if(_0x39e55c[_0x22a2('0x39')][_0x22a2('0x36')]&&_0x39e55c[_0x22a2('0x39')][_0x22a2('0x36')]==='from'){_0x3e9829[_0x22a2('0x46')]=_0x39e55c[_0x22a2('0xab')]['id'];}else{_0x3e9829['id']=_0x39e55c[_0x22a2('0xab')]['id'];}var _0x4d2fca={'raw':![],'where':_0x3e9829},_0x246c57={};_0x246c57['model']=_[_0x22a2('0x3a')](db[_0x22a2('0x33')][_0x22a2('0x34')]);_0x246c57['query']=_[_0x22a2('0x3a')](_0x39e55c[_0x22a2('0x39')]);_0x246c57[_0x22a2('0x3b')]=_['intersection'](_0x246c57[_0x22a2('0x38')],_0x246c57[_0x22a2('0x39')]);_0x4d2fca[_0x22a2('0x3e')]=_[_0x22a2('0x3c')](_0x246c57[_0x22a2('0x38')],qs[_0x22a2('0x3d')](_0x39e55c['query'][_0x22a2('0x3d')]));_0x4d2fca[_0x22a2('0x3e')]=_0x4d2fca[_0x22a2('0x3e')]['length']?_0x4d2fca[_0x22a2('0x3e')]:_0x246c57[_0x22a2('0x38')];if(_0x39e55c[_0x22a2('0x39')]['includeAll']){_0x4d2fca[_0x22a2('0xac')]=[{'all':!![]}];}_0x4d2fca=_['merge']({},_0x4d2fca,_0x39e55c[_0x22a2('0xad')]);return db[_0x22a2('0x33')][_0x22a2('0x6e')](_0x4d2fca)[_0x22a2('0x27')](handleEntityNotFound(_0x178190,null))[_0x22a2('0x27')](respondWithResult(_0x178190,null))['catch'](handleError(_0x178190,null));};exports['create']=function(_0x30bbf3,_0x3ca554){return db[_0x22a2('0x33')][_0x22a2('0xae')](_0x30bbf3['body'],{})[_0x22a2('0x27')](respondWithResult(_0x3ca554,0xc9))[_0x22a2('0x31')](handleError(_0x3ca554,null));};exports[_0x22a2('0x26')]=function(_0x4b63f6,_0x2ea6a2){if(_0x4b63f6['body']['id']){delete _0x4b63f6[_0x22a2('0x70')]['id'];}return db['OpenchannelInteraction'][_0x22a2('0x6e')]({'where':{'id':_0x4b63f6[_0x22a2('0xab')]['id']}})[_0x22a2('0x27')](handleEntityNotFound(_0x2ea6a2,null))[_0x22a2('0x27')](saveUpdates(_0x4b63f6[_0x22a2('0x70')],null))[_0x22a2('0x27')](respondWithResult(_0x2ea6a2,null))[_0x22a2('0x31')](handleError(_0x2ea6a2,null));};exports['destroy']=function(_0x3d5783,_0x51052f){return db[_0x22a2('0x33')][_0x22a2('0x6e')]({'where':{'id':_0x3d5783[_0x22a2('0xab')]['id']}})[_0x22a2('0x27')](handleEntityNotFound(_0x51052f,null))[_0x22a2('0x27')](removeEntity(_0x51052f,null))['catch'](handleError(_0x51052f,null));};exports[_0x22a2('0xaf')]=function(_0x3cb479,_0x136ddc){return db[_0x22a2('0x33')]['describe']()[_0x22a2('0x27')](respondWithResult(_0x136ddc,null))[_0x22a2('0x31')](handleError(_0x136ddc,null));};exports[_0x22a2('0xb0')]=function(_0x478eae,_0x2671a2,_0x29a598){return db[_0x22a2('0xb1')][_0x22a2('0x6e')]({'where':{'id':_0x478eae['params']['id']}})[_0x22a2('0x27')](handleEntityNotFound(_0x2671a2,null))[_0x22a2('0x27')](function(_0x5df59c){if(_0x5df59c){return _0x5df59c['addMessage'](_0x478eae[_0x22a2('0x70')]['ids'],_['omit'](_0x478eae[_0x22a2('0x70')],['ids','id'])||{});}})['then'](respondWithResult(_0x2671a2,null))[_0x22a2('0x31')](handleError(_0x2671a2,null));};exports['getMessages']=function(_0x4f84b2,_0xfe6f2c,_0x4ac11f){var _0xdb9fb8={'raw':![],'where':{}};var _0x3a8150={};var _0x1c6aa7={'count':0x0,'rows':[]};return db['OpenchannelInteraction'][_0x22a2('0xb2')]({'where':{'id':_0x4f84b2[_0x22a2('0xab')]['id']}})['then'](handleEntityNotFound(_0xfe6f2c,null))[_0x22a2('0x27')](function(_0xa76a8d){if(_0xa76a8d){_0x3a8150[_0x22a2('0x38')]=_[_0x22a2('0x3a')](db[_0x22a2('0xb1')][_0x22a2('0x34')]);_0x3a8150['query']=_['keys'](_0x4f84b2[_0x22a2('0x39')]);_0x3a8150[_0x22a2('0x3b')]=_[_0x22a2('0x3c')](_0x3a8150['model'],_0x3a8150[_0x22a2('0x39')]);_0xdb9fb8[_0x22a2('0x3e')]=_[_0x22a2('0x3c')](_0x3a8150[_0x22a2('0x38')],qs[_0x22a2('0x3d')](_0x4f84b2[_0x22a2('0x39')][_0x22a2('0x3d')]));_0xdb9fb8['attributes']=_0xdb9fb8[_0x22a2('0x3e')][_0x22a2('0x5b')]?_0xdb9fb8[_0x22a2('0x3e')]:_0x3a8150[_0x22a2('0x38')];if(!_0x4f84b2['query'][_0x22a2('0xb3')]('nolimit')){_0xdb9fb8[_0x22a2('0x20')]=qs[_0x22a2('0x20')](_0x4f84b2['query'][_0x22a2('0x20')]);_0xdb9fb8[_0x22a2('0x22')]=qs[_0x22a2('0x22')](_0x4f84b2[_0x22a2('0x39')]['offset']);}_0xdb9fb8[_0x22a2('0x89')]=qs[_0x22a2('0x40')](_0x4f84b2[_0x22a2('0x39')][_0x22a2('0x40')]);_0xdb9fb8[_0x22a2('0x41')]=qs[_0x22a2('0x3b')](_[_0x22a2('0x42')](_0x4f84b2[_0x22a2('0x39')],_0x3a8150['filters']));_0xdb9fb8[_0x22a2('0x41')][_0x22a2('0xa8')]=_0xa76a8d['id'];if(_0x4f84b2[_0x22a2('0x39')][_0x22a2('0x81')]){_0xdb9fb8[_0x22a2('0x41')]=_[_0x22a2('0x95')](_0xdb9fb8[_0x22a2('0x41')],{'$or':_[_0x22a2('0x2c')](_0xdb9fb8[_0x22a2('0x3e')],function(_0x33e118){var _0x5f3a32={};_0x5f3a32[_0x33e118]={'$like':'%'+_0x4f84b2[_0x22a2('0x39')][_0x22a2('0x81')]+'%'};return _0x5f3a32;})});}if(_0x4f84b2['query'][_0x22a2('0x78')]){var _0xdc52f3=_0x4f84b2['query'][_0x22a2('0x78')]['split'](',');var _0x486a17={};_0x486a17[_0xdc52f3[0x0]]={'$gte':moment(_0xdc52f3[0x1])[_0x22a2('0xb4')](_0x22a2('0xb5'))};_0xdb9fb8[_0x22a2('0x41')]=_[_0x22a2('0x95')](_0xdb9fb8[_0x22a2('0x41')],_0x486a17);}_0xdb9fb8=_['merge']({},_0xdb9fb8,_0x4f84b2[_0x22a2('0xad')]);return db[_0x22a2('0xb1')][_0x22a2('0x23')]({'where':_0xdb9fb8[_0x22a2('0x41')]})[_0x22a2('0x27')](function(_0x2f9e64){_0x1c6aa7[_0x22a2('0x23')]=_0x2f9e64;if(_0x4f84b2[_0x22a2('0x39')]['includeAll']){_0xdb9fb8[_0x22a2('0xac')]=[{'all':!![]}];}return db[_0x22a2('0xb1')][_0x22a2('0xb6')](_0xdb9fb8);})[_0x22a2('0x27')](function(_0x56dbc4){_0x1c6aa7[_0x22a2('0xaa')]=_0x56dbc4;return _0x1c6aa7;});}})[_0x22a2('0x27')](respondWithFilteredResult(_0xfe6f2c,_0xdb9fb8))[_0x22a2('0x31')](handleError(_0xfe6f2c,null));};exports[_0x22a2('0xb7')]=function(_0x55fcbf,_0x4f854c,_0x33f438){return db[_0x22a2('0x33')][_0x22a2('0x6e')]({'where':{'id':_0x55fcbf[_0x22a2('0xab')]['id']}})[_0x22a2('0x27')](handleEntityNotFound(_0x4f854c,null))[_0x22a2('0x27')](function(_0x35258d){if(_0x35258d){return _0x35258d['setTags'](_0x55fcbf[_0x22a2('0x70')][_0x22a2('0xb8')],_[_0x22a2('0xb9')](_0x55fcbf[_0x22a2('0x70')],[_0x22a2('0xb8'),'id'])||{})[_0x22a2('0xba')](function(){return db['Tag'][_0x22a2('0xb6')]({'attributes':['id',_0x22a2('0x2a'),_0x22a2('0x45')],'where':{'id':_0x55fcbf[_0x22a2('0x70')][_0x22a2('0xb8')]}});})['then'](function(_0x31de8e){socket['emit'](_0x22a2('0xbb'),{'id':Number(_0x55fcbf['params']['id']),'tags':_0x31de8e||[]});return{'id':Number(_0x55fcbf['params']['id']),'tags':_0x31de8e||[]};});}})['then'](respondWithResult(_0x4f854c,null))[_0x22a2('0x31')](handleError(_0x4f854c,null));};exports[_0x22a2('0xbc')]=function(_0x243b8c,_0x2d11e2,_0x3e817f){return db['OpenchannelInteraction'][_0x22a2('0x6e')]({'where':{'id':_0x243b8c[_0x22a2('0xab')]['id']}})[_0x22a2('0x27')](handleEntityNotFound(_0x2d11e2,null))[_0x22a2('0x27')](function(_0x193082){if(_0x193082){return _0x193082[_0x22a2('0xbc')](_0x243b8c[_0x22a2('0x39')]['ids']);}})[_0x22a2('0x27')](respondWithStatusCode(_0x2d11e2,null))['catch'](handleError(_0x2d11e2,null));};exports[_0x22a2('0xbd')]=function(_0x125dbc,_0x269f64){var _0x58c63a=moment()[_0x22a2('0xbe')]()[_0x22a2('0xa7')]();var _0xe87ae2=path[_0x22a2('0xbf')](config[_0x22a2('0xc0')],_0x22a2('0xc1'),_0x22a2('0xc2'),'tmp');var _0x5bafed=path[_0x22a2('0xbf')](config[_0x22a2('0xc0')],_0x22a2('0xc1'),'files',_0x22a2('0xc3'));var _0x2fe4fc=path[_0x22a2('0xbf')](_0xe87ae2,_0x58c63a);var _0x4901f0=util['format'](_0x22a2('0xc4'),_0x125dbc[_0x22a2('0xab')]['id'],_0x58c63a);var _0x47697d=path[_0x22a2('0xbf')](_0xe87ae2,_0x4901f0);var _0x523ebf=[];_0x523ebf[_0x22a2('0x30')]({'model':db[_0x22a2('0x6c')],'as':_0x22a2('0x6c'),'attributes':['id',_0x22a2('0xc5')],'raw':!![]});_0x523ebf[_0x22a2('0x30')]({'model':db[_0x22a2('0xc6')],'as':'Contact','attributes':['id',_0x22a2('0xc7'),_0x22a2('0xc8')],'raw':!![]});if(_0x125dbc[_0x22a2('0x39')]['attachments']){_0x523ebf['push']({'model':db[_0x22a2('0xc9')],'as':_0x22a2('0xc9'),'raw':!![]});}var _0x43e081=[{'model':db[_0x22a2('0xb1')],'as':_0x22a2('0xca'),'attributes':['id',_0x22a2('0x70'),'createdAt',_0x22a2('0xcb'),_0x22a2('0xcc'),_0x22a2('0x7d')],'include':_0x523ebf}];_0x43e081[_0x22a2('0x30')]({'model':db[_0x22a2('0xcd')],'as':_0x22a2('0xce'),'attributes':['id',_0x22a2('0x2a')]});_0x43e081[_0x22a2('0x30')]({'model':db[_0x22a2('0x6c')],'as':_0x22a2('0xcf'),'attributes':['id',_0x22a2('0xc5')]});return db[_0x22a2('0x33')][_0x22a2('0x6e')]({'where':{'id':_0x125dbc[_0x22a2('0xab')]['id']},'include':_0x43e081})[_0x22a2('0x27')](handleEntityNotFound(_0x269f64,null))[_0x22a2('0x27')](function(_0x4140f2){if(_0x4140f2){var _0x1362f0=_0x4140f2['get']({'plain':!![]});fs['mkdirSync'](_0x2fe4fc);var _0x2cf1b5={'channel':_0x22a2('0xd0'),'account':_0x1362f0['Account']['name'],'agent':_0x1362f0[_0x22a2('0xcf')]?_0x1362f0[_0x22a2('0xcf')]['fullname']:'N.A.','createdAt':moment(_0x1362f0['createdAt'])[_0x22a2('0xb4')](_0x22a2('0xb5'))[_0x22a2('0xa7')](),'closedAt':_0x1362f0[_0x22a2('0xd1')]?moment(_0x1362f0[_0x22a2('0xd2')])[_0x22a2('0xb4')](_0x22a2('0xb5'))[_0x22a2('0xa7')]():'','disposition':_0x1362f0[_0x22a2('0xd3')],'visibility':_0x1362f0[_0x22a2('0xd4')]?'Public':_0x22a2('0xd5'),'messages':_(_0x1362f0[_0x22a2('0xca')])[_0x22a2('0x81')]({'secret':![]})['map'](function(_0x4d73a3){if(_0x4d73a3['Attachment']){var _0x201285=path[_0x22a2('0xbf')](_0x5bafed,_0x4d73a3[_0x22a2('0xc9')][_0x22a2('0xd6')]);if(fs['existsSync'](_0x201285)){fs[_0x22a2('0xd7')](_0x201285)['pipe'](fs['createWriteStream'](path['join'](_0x2fe4fc,_0x4d73a3[_0x22a2('0xc9')]['basename'])));}}return{'date':moment(_0x4d73a3[_0x22a2('0x76')])[_0x22a2('0xb4')](_0x22a2('0xb5'))[_0x22a2('0xa7')](),'sender':_0x4d73a3[_0x22a2('0xcb')]===_0x22a2('0xd8')?_0x4d73a3[_0x22a2('0x6c')]?_0x4d73a3[_0x22a2('0x6c')][_0x22a2('0xc5')]:_0x22a2('0xd9'):_0x4d73a3[_0x22a2('0x62')][_0x22a2('0xc7')]+(_0x4d73a3[_0x22a2('0x62')][_0x22a2('0xc8')]?'\x20'+_0x4d73a3[_0x22a2('0x62')][_0x22a2('0xc8')]:''),'body':_0x4d73a3[_0x22a2('0xc9')]?_0x4d73a3[_0x22a2('0xc9')][_0x22a2('0xd6')]:_0x4d73a3[_0x22a2('0x70')],'direction':_0x4d73a3['direction']===_0x22a2('0xd8')?'A':'C','secret':_0x4d73a3[_0x22a2('0xcc')],'read':_0x4d73a3[_0x22a2('0x7d')],'attachment':_0x4d73a3['Attachment']};})[_0x22a2('0x5e')]()};return ejs[_0x22a2('0xda')](path[_0x22a2('0xbf')](config[_0x22a2('0xc0')],'server',_0x22a2('0xdb'),_0x22a2('0xdc')),{'interaction':_0x2cf1b5})[_0x22a2('0x27')](function(_0x13940b){var _0x4af476=path[_0x22a2('0xbf')](_0x2fe4fc,'transcript-'+_0x1362f0['id']+'-'+_0x58c63a+_0x22a2('0xdd'));var _0x4460a4={'path':_0x4af476,'channel':_0x22a2('0xd0'),'interactionId':_0x1362f0['id']};return pdf[_0x22a2('0xde')](_0x13940b,_0x4460a4);})[_0x22a2('0x27')](function(){return new BPromise(function(_0xace0aa,_0x4289a5){zipdir(_0x2fe4fc,{'saveTo':_0x47697d},function(_0x1e6e5b,_0x13b8c3){if(_0x1e6e5b)return _0x4289a5(_0x1e6e5b);return _0xace0aa(_0x13b8c3);});})[_0x22a2('0x27')](function(){return new BPromise(function(_0x774f3c,_0x503cf3){rimraf(_0x2fe4fc,function(_0x13006d){if(_0x13006d)_0x503cf3(_0x13006d);return _0x774f3c();});});})[_0x22a2('0x27')](function(){return _0x269f64['download'](_0x47697d,_0x4901f0,function(_0x15dc84){if(_0x15dc84){console[_0x22a2('0xdf')](_0x22a2('0xe0'),_0x15dc84);}else{fs['unlinkSync'](_0x47697d);}});});});}else{return _0x269f64[_0x22a2('0x1c')](0xc8);}})['catch'](handleError(_0x269f64,null));};
\ No newline at end of file
+var _0x10e8=['start','end','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','text','some','compact','isEmpty','OpenchannelAccountId','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','isArray','tag','filter','replace','isNumeric','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','order','contactName','DESC','resolve','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getOpenchannelAccounts','i.OpenchannelAccountId\x20IS\x20NULL','i.OpenchannelAccountId\x20IN\x20?','sequelize','toString','keyBy','merge','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.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','GROUP_CONCAT(DISTINCT\x20t.id)','ui.OpenchannelInteractionId\x20IN\x20?','groupBy','all','rows','params','rawAttributes','includeAll','include','options','create','body','describe','addMessage','OpenchannelMessage','ids','getMessages','findOne','nolimit','OpenchannelInteractionId','format','YYYY-MM-DD\x20HH:mm:ss','addTags','setTags','omit','spread','findAll','openchannelInteractionTags:save','join','root','server','tmp','files','attachments','push','CmContact','Contact','firstName','lastName','Attachment','Messages','secret','OpenchannelAccount','Account','Owner','get','N.A.','closed','closedAt','disposition','Public','Private','basename','existsSync','out','System','renderFile','views','.pdf','Openchannel','log','err','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','redis','localhost','socket.io-emitter','./openchannelInteraction.socket','register','sendStatus','status','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','destroy','error','name','Users','map','fullname','TagIds','split','forEach','catch','index','OpenchannelInteraction','fieldName','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','sort','where','pick','field','color','from','tools_tags','select','ui.OpenchannelInteractionId','user_has_openchannel_interactions','left_join','users','u.id\x20=\x20ui.UserId','openchannel_interactions','o.id\x20=\x20i.UserId','openchannel_accounts','a.id\x20=\x20i.OpenchannelAccountId','openchannel_messages','me.OpenchannelInteractionId\x20=\x20i.id','openchannel_interaction_has_tags','expr','search','sqlOperator','conditions','value','having','`\x20=\x200','`\x20>\x200','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','find','ContactId','type'];(function(_0x2e4e19,_0x493b50){var _0x9ba20b=function(_0x2f6456){while(--_0x2f6456){_0x2e4e19['push'](_0x2e4e19['shift']());}};_0x9ba20b(++_0x493b50);}(_0x10e8,0x85));var _0x810e=function(_0x417634,_0x5c375a){_0x417634=_0x417634-0x0;var _0x219a87=_0x10e8[_0x417634];return _0x219a87;};'use strict';var emlformat=require(_0x810e('0x0'));var rimraf=require(_0x810e('0x1'));var zipdir=require(_0x810e('0x2'));var jsonpatch=require(_0x810e('0x3'));var rp=require(_0x810e('0x4'));var moment=require(_0x810e('0x5'));var BPromise=require(_0x810e('0x6'));var Mustache=require(_0x810e('0x7'));var util=require(_0x810e('0x8'));var path=require(_0x810e('0x9'));var sox=require(_0x810e('0xa'));var csv=require(_0x810e('0xb'));var ejs=require(_0x810e('0xc'));var fs=require('fs');var fs_extra=require(_0x810e('0xd'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x810e('0xe'));var deskjs=require(_0x810e('0xf'));var toCsv=require(_0x810e('0xb'));var querystring=require(_0x810e('0x10'));var Papa=require(_0x810e('0x11'));var Redis=require(_0x810e('0x12'));var authService=require(_0x810e('0x13'));var qs=require(_0x810e('0x14'));var as=require(_0x810e('0x15'));var pdf=require(_0x810e('0x16'));var hardwareService=require(_0x810e('0x17'));var logger=require(_0x810e('0x18'))(_0x810e('0x19'));var utils=require(_0x810e('0x1a'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x810e('0x1b'))['db'];config[_0x810e('0x1c')]=_['defaults'](config[_0x810e('0x1c')],{'host':_0x810e('0x1d'),'port':0x18eb});var socket=require(_0x810e('0x1e'))(new Redis(config[_0x810e('0x1c')]));require(_0x810e('0x1f'))[_0x810e('0x20')](socket);function respondWithStatusCode(_0xefb3a4,_0x2f5f5c){_0x2f5f5c=_0x2f5f5c||0xcc;return function(_0x2c3798){if(_0x2c3798){return _0xefb3a4[_0x810e('0x21')](_0x2f5f5c);}return _0xefb3a4[_0x810e('0x22')](_0x2f5f5c)['end']();};}function respondWithResult(_0x23e0ac,_0x4f155e){_0x4f155e=_0x4f155e||0xc8;return function(_0x4696a2){if(_0x4696a2){return _0x23e0ac[_0x810e('0x22')](_0x4f155e)[_0x810e('0x23')](_0x4696a2);}};}function respondWithFilteredResult(_0x198429,_0x3560c0){return function(_0x2f1f2a){if(_0x2f1f2a){var _0x545a9d=typeof _0x3560c0[_0x810e('0x24')]===_0x810e('0x25')&&typeof _0x3560c0['limit']===_0x810e('0x25');var _0x33ddff=_0x2f1f2a[_0x810e('0x26')];var _0x80383=_0x545a9d?0x0:_0x3560c0['offset'];var _0x42aa9f=_0x545a9d?_0x2f1f2a[_0x810e('0x26')]:_0x3560c0[_0x810e('0x24')]+_0x3560c0[_0x810e('0x27')];var _0x22dd9e;if(_0x42aa9f>=_0x33ddff){_0x42aa9f=_0x33ddff;_0x22dd9e=0xc8;}else{_0x22dd9e=0xce;}_0x198429[_0x810e('0x22')](_0x22dd9e);return _0x198429['set'](_0x810e('0x28'),_0x80383+'-'+_0x42aa9f+'/'+_0x33ddff)['json'](_0x2f1f2a);}return null;};}function patchUpdates(_0x2e5490){return function(_0x2bfb10){try{jsonpatch[_0x810e('0x29')](_0x2bfb10,_0x2e5490,!![]);}catch(_0x121442){return BPromise[_0x810e('0x2a')](_0x121442);}return _0x2bfb10[_0x810e('0x2b')]();};}function saveUpdates(_0x1ef5ba,_0x15ae61){return function(_0x4f39fb){if(_0x4f39fb){return _0x4f39fb[_0x810e('0x2c')](_0x1ef5ba)[_0x810e('0x2d')](function(_0x24c482){return _0x24c482;});}return null;};}function removeEntity(_0xa951bf,_0x522687){return function(_0x44ca5f){if(_0x44ca5f){return _0x44ca5f[_0x810e('0x2e')]()[_0x810e('0x2d')](function(){_0xa951bf[_0x810e('0x22')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2ead9c,_0x39eec5){return function(_0x33206e){if(!_0x33206e){_0x2ead9c[_0x810e('0x21')](0x194);}return _0x33206e;};}function handleError(_0x2ffb5b,_0x15065a){_0x15065a=_0x15065a||0x1f4;return function(_0x44c4cc){logger[_0x810e('0x2f')](_0x44c4cc['stack']);if(_0x44c4cc[_0x810e('0x30')]){delete _0x44c4cc[_0x810e('0x30')];}_0x2ffb5b['status'](_0x15065a)['send'](_0x44c4cc);};}function getInteractionUsers(_0x4b888f,_0x5a3d4e){return new BPromise(function(_0x4d2681,_0x2501a2){try{if(_0x5a3d4e[_0x4b888f['id']]){_0x4b888f[_0x810e('0x31')]=_[_0x810e('0x32')](_0x5a3d4e[_0x4b888f['id']],function(_0x17a411){return{'id':_0x17a411['id'],'fullname':_0x17a411[_0x810e('0x33')]};});}}catch(_0x4f24bd){_0x2501a2(_0x4f24bd);}_0x4d2681(_0x4b888f);});}function getInteractionTags(_0x5642fb,_0x315158){return new BPromise(function(_0x375a90,_0x561ec1){try{if(_0x5642fb['TagIds']){_0x5642fb['Tags']=[];_0x5642fb[_0x810e('0x34')][_0x810e('0x35')](',')[_0x810e('0x36')](function(_0x4f76d0){_0x5642fb['Tags']['push'](_0x315158[_0x4f76d0]);});}delete _0x5642fb[_0x810e('0x34')];}catch(_0x8fdc58){_0x561ec1(_0x8fdc58);}_0x375a90(_0x5642fb);});}function updateOpenchannelInteraction(_0x2ebe3e,_0x5019bb,_0x558d85){return new BPromise(function(_0x2a2dd1,_0x307dc1){return getInteractionUsers(_0x2ebe3e,_0x558d85)['then'](function(_0x164e3b){return getInteractionTags(_0x164e3b,_0x5019bb);})[_0x810e('0x2d')](function(_0x787fdd){_0x2a2dd1(_0x787fdd);})[_0x810e('0x37')](function(_0x25aa84){_0x307dc1(_0x25aa84);});});}exports[_0x810e('0x38')]=function(_0x1f9280,_0x280195){var _0xb1bdbf={},_0x46d6aa={},_0x1cc7a7={'count':0x0,'rows':[]};var _0x7706cb=_[_0x810e('0x32')](db[_0x810e('0x39')]['rawAttributes'],function(_0x867a0){return{'name':_0x867a0[_0x810e('0x3a')],'type':_0x867a0['type'][_0x810e('0x3b')]};});_0x46d6aa['model']=_['map'](_0x7706cb,_0x810e('0x30'));_0x46d6aa[_0x810e('0x3c')]=_[_0x810e('0x3d')](_0x1f9280[_0x810e('0x3c')]);_0x46d6aa[_0x810e('0x3e')]=_[_0x810e('0x3f')](_0x46d6aa[_0x810e('0x40')],_0x46d6aa['query']);_0xb1bdbf[_0x810e('0x41')]=_[_0x810e('0x3f')](_0x46d6aa['model'],qs[_0x810e('0x42')](_0x1f9280['query'][_0x810e('0x42')]));_0xb1bdbf[_0x810e('0x41')]=_0xb1bdbf[_0x810e('0x41')][_0x810e('0x43')]?_0xb1bdbf[_0x810e('0x41')]:_0x46d6aa['model'];if(!_0x1f9280[_0x810e('0x3c')][_0x810e('0x44')]('nolimit')){_0xb1bdbf[_0x810e('0x27')]=qs[_0x810e('0x27')](_0x1f9280[_0x810e('0x3c')][_0x810e('0x27')]);_0xb1bdbf['offset']=qs[_0x810e('0x24')](_0x1f9280[_0x810e('0x3c')][_0x810e('0x24')]);}_0xb1bdbf['order']=qs[_0x810e('0x45')](_0x1f9280[_0x810e('0x3c')][_0x810e('0x45')]);_0xb1bdbf[_0x810e('0x46')]=qs[_0x810e('0x3e')](_[_0x810e('0x47')](_0x1f9280[_0x810e('0x3c')],_0x46d6aa[_0x810e('0x3e')]),_0x7706cb);var _0x17fb0e=[];var _0x23072c=squel['select']()[_0x810e('0x48')]('id')[_0x810e('0x48')]('name')[_0x810e('0x48')](_0x810e('0x49'))[_0x810e('0x4a')](_0x810e('0x4b'));var _0x1098fa=squel[_0x810e('0x4c')]()[_0x810e('0x48')]('u.id')[_0x810e('0x48')]('u.fullname')[_0x810e('0x48')](_0x810e('0x4d'))['from'](_0x810e('0x4e'),'ui')[_0x810e('0x4f')](_0x810e('0x50'),'u',_0x810e('0x51'));var _0x4539ae=squel[_0x810e('0x4c')]()[_0x810e('0x4a')](_0x810e('0x52'),'i')[_0x810e('0x4f')]('cm_contacts','c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x810e('0x4f')]('users','o',_0x810e('0x53'))[_0x810e('0x4f')](_0x810e('0x54'),'a',_0x810e('0x55'))[_0x810e('0x4f')](_0x810e('0x56'),'me',_0x810e('0x57'))[_0x810e('0x4f')](_0x810e('0x58'),'it','it.OpenchannelInteractionId\x20=\x20i.id')[_0x810e('0x4f')](_0x810e('0x4b'),'t','t.id\x20=\x20it.TagId');var _0x380ccb=squel[_0x810e('0x59')]();var _0x30a3dc=[];var _0x2ba6d6=squel[_0x810e('0x59')]();var _0x7d0f87;if(_0x1f9280['query']['search']){_0x7d0f87=as['parseSearch'](_0x1f9280[_0x810e('0x3c')][_0x810e('0x5a')]);var _0x2a7378=_0x7d0f87[_0x810e('0x5b')];for(var _0x201276=0x0;_0x201276<_0x7d0f87[_0x810e('0x5c')][_0x810e('0x43')];_0x201276++){var _0x42d20d=_0x7d0f87[_0x810e('0x5c')][_0x201276];var _0x6f1fa0='i';var _0x1289e5=_['find'](_0x7706cb,[_0x810e('0x30'),_0x42d20d[_0x810e('0x48')]]);if(!_0x1289e5){switch(_0x42d20d[_0x810e('0x48')]){case'unreadMessages':if(_0x42d20d[_0x810e('0x5d')]==0x1){_0x4539ae[_0x810e('0x5e')]('`'+_0x42d20d['field']+_0x810e('0x5f'));}else{_0x4539ae[_0x810e('0x5e')]('`'+_0x42d20d['field']+_0x810e('0x60'));}break;case'Contact':if(_0x42d20d[_0x810e('0x61')]===_0x810e('0x62')){if(_0x42d20d[_0x810e('0x5d')]['split']('\x20')[_0x810e('0x43')]>0x1){_0x380ccb[_0x2a7378](_0x810e('0x63'),qs[_0x810e('0x64')](_0x42d20d[_0x810e('0x5d')]),null);}else{var _0x50de24='%'+_0x42d20d[_0x810e('0x5d')]+'%';_0x380ccb[_0x2a7378](_0x810e('0x65'),_0x50de24,_0x50de24,_0x50de24);}}else{_0x1289e5=_[_0x810e('0x66')](_0x7706cb,[_0x810e('0x30'),_0x810e('0x67')]);_0x42d20d[_0x810e('0x48')]=_0x810e('0x67');_0x28ae59=as['buildExpression'](_0x6f1fa0,_0x1289e5[_0x810e('0x68')],_0x42d20d);_0x380ccb[_0x2a7378](_0x28ae59['text'],_0x28ae59[_0x810e('0x5d')][_0x810e('0x69')],_0x28ae59[_0x810e('0x5d')][_0x810e('0x6a')]);}break;case _0x810e('0x6b'):var _0xf7ca4d=_0x42d20d[_0x810e('0x5d')]['split'](',')['map'](function(_0x54f155){return Number(_0x54f155);});_0xf7ca4d[_0x810e('0x36')](function(_0xc3c7ab){_0x2ba6d6['or'](_0x810e('0x6c'),'%,'+_0xc3c7ab+',%');});_0x30a3dc=_['union'](_0x30a3dc,_0xf7ca4d);break;case _0x810e('0x6d'):if(_0x42d20d[_0x810e('0x61')]===_0x810e('0x62')){_0x380ccb[_0x2a7378](_0x810e('0x6e'),'%'+_0x42d20d[_0x810e('0x5d')]+'%',null);}else{_0x1289e5=_[_0x810e('0x66')](_0x7706cb,[_0x810e('0x30'),_0x810e('0x6f')]);_0x42d20d[_0x810e('0x48')]=_0x810e('0x6f');_0x28ae59=as[_0x810e('0x70')](_0x6f1fa0,_0x1289e5[_0x810e('0x68')],_0x42d20d);_0x380ccb[_0x2a7378](_0x28ae59[_0x810e('0x71')],_0x28ae59[_0x810e('0x5d')][_0x810e('0x69')],_0x28ae59[_0x810e('0x5d')][_0x810e('0x6a')]);}break;case'body':_0x28ae59=as[_0x810e('0x70')]('me',null,_0x42d20d);_0x380ccb[_0x2a7378](_0x28ae59[_0x810e('0x71')],_0x28ae59['value']['start'],_0x28ae59['value'][_0x810e('0x6a')]);break;}}else{var _0x28ae59=as[_0x810e('0x70')](_0x6f1fa0,_0x1289e5[_0x810e('0x68')],_0x42d20d);_0x380ccb[_0x2a7378](_0x28ae59[_0x810e('0x71')],_0x28ae59[_0x810e('0x5d')][_0x810e('0x69')],_0x28ae59[_0x810e('0x5d')][_0x810e('0x6a')]);}}}else{var _0x1afcdd=_(_0x1f9280['query'])[_0x810e('0x3d')]()[_0x810e('0x32')](function(_0x43b3b9){return _[_0x810e('0x72')](_0x7706cb,[_0x810e('0x30'),_0x43b3b9])?_0x43b3b9:undefined;})[_0x810e('0x73')]()[_0x810e('0x5d')]();if(!_[_0x810e('0x74')](_0x1afcdd)){_0x1afcdd[_0x810e('0x36')](function(_0x41d29e){if(_0x41d29e===_0x810e('0x75')){_0x4539ae[_0x810e('0x46')]('i.OpenchannelAccountId\x20IN\x20?',[][_0x810e('0x76')](_0x1f9280[_0x810e('0x3c')][_0x41d29e]));}else if(_0x41d29e===_0x810e('0x77')){var _0x43bdde=JSON[_0x810e('0x78')](_0x1f9280[_0x810e('0x3c')][_0x41d29e])[_0x810e('0x79')];var _0x388f62=JSON[_0x810e('0x78')](_0x1f9280[_0x810e('0x3c')][_0x41d29e])[_0x810e('0x7a')];_0x4539ae[_0x810e('0x46')](_0x810e('0x7b'),_0x43bdde,_0x388f62);}else{if(_0x1f9280[_0x810e('0x3c')][_0x41d29e]===_0x810e('0x7c')){_0x4539ae['where']('i.'+_0x41d29e+'\x20IS\x20NULL');}else{_0x4539ae['where']('i.'+_0x41d29e+_0x810e('0x7d'),_0x1f9280[_0x810e('0x3c')][_0x41d29e]);}}});}if(_0x1f9280[_0x810e('0x3c')][_0x810e('0x7e')]){if(_0x1f9280[_0x810e('0x3c')][_0x810e('0x7e')]==0x1){_0x4539ae[_0x810e('0x5e')](_0x810e('0x7f'));}else{_0x4539ae[_0x810e('0x5e')](_0x810e('0x80'));}}if(_0x1f9280[_0x810e('0x3c')]['tag']){_0x30a3dc=_[_0x810e('0x81')](_0x1f9280['query'][_0x810e('0x82')])?_0x1f9280[_0x810e('0x3c')][_0x810e('0x82')]:new Array(_0x1f9280[_0x810e('0x3c')]['tag']);_0x30a3dc[_0x810e('0x36')](function(_0x5b6b60){_0x2ba6d6['or'](_0x810e('0x6c'),'%,'+_0x5b6b60+',%');});}if(_0x1f9280[_0x810e('0x3c')][_0x810e('0x83')]){var _0x4e66bb=_0x1f9280['query'][_0x810e('0x83')][_0x810e('0x84')]('\x5c','\x5c\x5c')[_0x810e('0x84')](/'/g,'\x27\x27');if(qs[_0x810e('0x85')](_0x4e66bb)){_0x380ccb['or']('i.id\x20LIKE\x20?',_0x4e66bb+'%');}else{_0x380ccb['or'](_0x810e('0x86'),qs[_0x810e('0x64')](_0x4e66bb))['or']('i.from\x20LIKE\x20?',_0x4e66bb+'%')['or'](_0x810e('0x87'),_0x4e66bb+'%');}}}_0x4539ae[_0x810e('0x46')](_0x380ccb);_0x4539ae[_0x810e('0x88')](_0x810e('0x89'));var _0x33932f={'type':db[_0x810e('0x8a')][_0x810e('0x8b')]['SELECT'],'raw':!![]};var _0x49b6b2=_0x4539ae[_0x810e('0x8c')]();_0x49b6b2['field'](_0x810e('0x89'));_0x49b6b2[_0x810e('0x48')](_0x810e('0x8d'),_0x810e('0x8e'));if(_0xb1bdbf[_0x810e('0x8f')]){_0xb1bdbf['order'][_0x810e('0x36')](function(_0x2c8407){var _0x2bba75=_0x2c8407[0x0]===_0x810e('0x90')?_0x2c8407[0x0]:'i.'+_0x2c8407[0x0];_0x4539ae[_0x810e('0x8f')](_0x2bba75,_0x2c8407[0x1]===_0x810e('0x91')?![]:!![]);});}if(!_[_0x810e('0x74')](_0x30a3dc)){_0x4539ae['having'](_0x2ba6d6);_0x49b6b2['where']('t.id\x20IN\x20?',_0x30a3dc);}BPromise[_0x810e('0x92')]()['then'](function(){if(!_0x7d0f87){if(_0x1f9280[_0x810e('0x3c')][_0x810e('0x75')])return;_0x49b6b2['where'](_0x810e('0x93'));_0x4539ae[_0x810e('0x46')]('i.OpenchannelAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x1f9280[_0x810e('0x94')][_0x810e('0x95')]!==_0x810e('0x96'))return;return _0x1f9280[_0x810e('0x94')][_0x810e('0x97')]({'attributes':['id'],'raw':!![]})[_0x810e('0x2d')](function(_0x494ab7){if(_[_0x810e('0x74')](_0x494ab7)){_0x49b6b2[_0x810e('0x46')](_0x810e('0x98'));_0x4539ae[_0x810e('0x46')](_0x810e('0x98'));}else{_0x49b6b2[_0x810e('0x46')]('i.OpenchannelAccountId\x20IN\x20?',_[_0x810e('0x32')](_0x494ab7,'id'));_0x4539ae['where'](_0x810e('0x99'),_[_0x810e('0x32')](_0x494ab7,'id'));}});})['then'](function(){if(_0x1f9280['user'][_0x810e('0x95')]==='agent'&&!_0x7d0f87&&!_0x1f9280[_0x810e('0x3c')][_0x810e('0x75')])return[];return db[_0x810e('0x9a')][_0x810e('0x3c')](_0x49b6b2[_0x810e('0x9b')](),_0x33932f);})[_0x810e('0x2d')](function(_0x39f633){_0x1cc7a7[_0x810e('0x26')]=_0x39f633['length'];if(_0x1cc7a7[_0x810e('0x26')]===0x0)return[];return db['sequelize'][_0x810e('0x3c')](_0x23072c[_0x810e('0x9b')](),_0x33932f)['then'](function(_0x274ad7){_0x17fb0e=_[_0x810e('0x9c')](_0x274ad7,'id');_0x33932f=_[_0x810e('0x9d')](_0x33932f,{'model':db[_0x810e('0x39')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1f9280[_0x810e('0x3c')][_0x810e('0x42')]){_0xb1bdbf[_0x810e('0x41')][_0x810e('0x36')](function(_0x30a87b){_0x4539ae[_0x810e('0x48')]('i.'+_0x30a87b);});}else{_0x4539ae[_0x810e('0x48')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x810e('0x8e'));_0x4539ae[_0x810e('0x48')]('a.key',_0x810e('0x9e'));_0x4539ae[_0x810e('0x48')](_0x810e('0x9f'),_0x810e('0xa0'));_0x4539ae['field'](_0x810e('0xa1'),_0x810e('0x90'));_0x4539ae[_0x810e('0x48')](_0x810e('0xa2'));_0x4539ae[_0x810e('0x48')]('c.firstName','Contact.firstName');_0x4539ae[_0x810e('0x48')](_0x810e('0xa3'),_0x810e('0xa4'));_0x4539ae[_0x810e('0x48')](_0x810e('0xa5'),_0x810e('0xa6'));_0x4539ae[_0x810e('0x48')](_0x810e('0xa7'),_0x810e('0xa8'));_0x4539ae[_0x810e('0x48')](_0x810e('0xa9'),_0x810e('0xaa'));_0x4539ae[_0x810e('0x48')](_0x810e('0xab'),_0x810e('0xac'));_0x4539ae[_0x810e('0x48')](_0x810e('0xad'),_0x810e('0xae'));_0x4539ae[_0x810e('0x48')](_0x810e('0xaf'),'Owner.internal');_0x4539ae[_0x810e('0x48')](_0x810e('0xb0'),_0x810e('0x34'));}if(_0xb1bdbf[_0x810e('0x27')])_0x4539ae[_0x810e('0x27')](_0xb1bdbf[_0x810e('0x27')]);if(_0xb1bdbf[_0x810e('0x24')])_0x4539ae[_0x810e('0x24')](_0xb1bdbf[_0x810e('0x24')]);return db[_0x810e('0x9a')][_0x810e('0x3c')](_0x4539ae[_0x810e('0x9b')](),_0x33932f);})[_0x810e('0x2d')](function(_0x3aebb4){if(_0x3aebb4['length']>0x0)_0x1098fa[_0x810e('0x46')](_0x810e('0xb1'),_[_0x810e('0x32')](_0x3aebb4,'id'));return db[_0x810e('0x9a')][_0x810e('0x3c')](_0x1098fa['toString'](),_0x33932f)['then'](function(_0x267663){var _0x22fd8c=_[_0x810e('0xb2')](_0x267663,'OpenchannelInteractionId');var _0xfc4487=[];_0x3aebb4[_0x810e('0x36')](function(_0x20ac5c){_0xfc4487['push'](updateOpenchannelInteraction(_0x20ac5c,_0x17fb0e,_0x22fd8c));});return BPromise[_0x810e('0xb3')](_0xfc4487);});});})[_0x810e('0x2d')](function(_0x3b25d8){_0x1cc7a7[_0x810e('0xb4')]=_0x3b25d8;return _0x1cc7a7;})['then'](respondWithFilteredResult(_0x280195,_0xb1bdbf))[_0x810e('0x37')](handleError(_0x280195,null));};exports['show']=function(_0x5043d2,_0x27a382){var _0x3a3120={};if(_0x5043d2[_0x810e('0x3c')][_0x810e('0x68')]&&_0x5043d2['query'][_0x810e('0x68')]===_0x810e('0x4a')){_0x3a3120[_0x810e('0x4a')]=_0x5043d2[_0x810e('0xb5')]['id'];}else{_0x3a3120['id']=_0x5043d2[_0x810e('0xb5')]['id'];}var _0x19852f={'raw':![],'where':_0x3a3120},_0x48994a={};_0x48994a[_0x810e('0x40')]=_[_0x810e('0x3d')](db[_0x810e('0x39')][_0x810e('0xb6')]);_0x48994a[_0x810e('0x3c')]=_[_0x810e('0x3d')](_0x5043d2[_0x810e('0x3c')]);_0x48994a['filters']=_['intersection'](_0x48994a['model'],_0x48994a['query']);_0x19852f[_0x810e('0x41')]=_[_0x810e('0x3f')](_0x48994a[_0x810e('0x40')],qs['fields'](_0x5043d2['query'][_0x810e('0x42')]));_0x19852f[_0x810e('0x41')]=_0x19852f[_0x810e('0x41')]['length']?_0x19852f[_0x810e('0x41')]:_0x48994a[_0x810e('0x40')];if(_0x5043d2['query'][_0x810e('0xb7')]){_0x19852f[_0x810e('0xb8')]=[{'all':!![]}];}_0x19852f=_['merge']({},_0x19852f,_0x5043d2[_0x810e('0xb9')]);return db['OpenchannelInteraction'][_0x810e('0x66')](_0x19852f)[_0x810e('0x2d')](handleEntityNotFound(_0x27a382,null))[_0x810e('0x2d')](respondWithResult(_0x27a382,null))[_0x810e('0x37')](handleError(_0x27a382,null));};exports[_0x810e('0xba')]=function(_0x1c9dcf,_0x355ec5){return db[_0x810e('0x39')][_0x810e('0xba')](_0x1c9dcf['body'],{})[_0x810e('0x2d')](respondWithResult(_0x355ec5,0xc9))[_0x810e('0x37')](handleError(_0x355ec5,null));};exports[_0x810e('0x2c')]=function(_0x4b3eb5,_0x360421){if(_0x4b3eb5['body']['id']){delete _0x4b3eb5[_0x810e('0xbb')]['id'];}return db[_0x810e('0x39')]['find']({'where':{'id':_0x4b3eb5[_0x810e('0xb5')]['id']}})[_0x810e('0x2d')](handleEntityNotFound(_0x360421,null))[_0x810e('0x2d')](saveUpdates(_0x4b3eb5[_0x810e('0xbb')],null))[_0x810e('0x2d')](respondWithResult(_0x360421,null))[_0x810e('0x37')](handleError(_0x360421,null));};exports['destroy']=function(_0x531d0b,_0x1f9f18){return db[_0x810e('0x39')][_0x810e('0x66')]({'where':{'id':_0x531d0b[_0x810e('0xb5')]['id']}})['then'](handleEntityNotFound(_0x1f9f18,null))[_0x810e('0x2d')](removeEntity(_0x1f9f18,null))[_0x810e('0x37')](handleError(_0x1f9f18,null));};exports['describe']=function(_0x39d0f5,_0x45acde){return db[_0x810e('0x39')][_0x810e('0xbc')]()[_0x810e('0x2d')](respondWithResult(_0x45acde,null))['catch'](handleError(_0x45acde,null));};exports[_0x810e('0xbd')]=function(_0x5e6508,_0x4f2a72,_0x10b8ad){return db[_0x810e('0xbe')][_0x810e('0x66')]({'where':{'id':_0x5e6508[_0x810e('0xb5')]['id']}})['then'](handleEntityNotFound(_0x4f2a72,null))[_0x810e('0x2d')](function(_0x8f5f8f){if(_0x8f5f8f){return _0x8f5f8f[_0x810e('0xbd')](_0x5e6508[_0x810e('0xbb')][_0x810e('0xbf')],_['omit'](_0x5e6508[_0x810e('0xbb')],['ids','id'])||{});}})['then'](respondWithResult(_0x4f2a72,null))[_0x810e('0x37')](handleError(_0x4f2a72,null));};exports[_0x810e('0xc0')]=function(_0x1a1ab7,_0x387f92,_0x2419a3){var _0x54470d={'raw':![],'where':{}};var _0x1d10d7={};var _0x536b19={'count':0x0,'rows':[]};return db[_0x810e('0x39')][_0x810e('0xc1')]({'where':{'id':_0x1a1ab7['params']['id']}})[_0x810e('0x2d')](handleEntityNotFound(_0x387f92,null))[_0x810e('0x2d')](function(_0x4c0268){if(_0x4c0268){_0x1d10d7['model']=_['keys'](db[_0x810e('0xbe')][_0x810e('0xb6')]);_0x1d10d7['query']=_['keys'](_0x1a1ab7[_0x810e('0x3c')]);_0x1d10d7['filters']=_[_0x810e('0x3f')](_0x1d10d7[_0x810e('0x40')],_0x1d10d7['query']);_0x54470d[_0x810e('0x41')]=_[_0x810e('0x3f')](_0x1d10d7[_0x810e('0x40')],qs[_0x810e('0x42')](_0x1a1ab7[_0x810e('0x3c')][_0x810e('0x42')]));_0x54470d['attributes']=_0x54470d['attributes'][_0x810e('0x43')]?_0x54470d['attributes']:_0x1d10d7[_0x810e('0x40')];if(!_0x1a1ab7[_0x810e('0x3c')][_0x810e('0x44')](_0x810e('0xc2'))){_0x54470d[_0x810e('0x27')]=qs[_0x810e('0x27')](_0x1a1ab7[_0x810e('0x3c')][_0x810e('0x27')]);_0x54470d[_0x810e('0x24')]=qs['offset'](_0x1a1ab7[_0x810e('0x3c')][_0x810e('0x24')]);}_0x54470d[_0x810e('0x8f')]=qs[_0x810e('0x45')](_0x1a1ab7[_0x810e('0x3c')][_0x810e('0x45')]);_0x54470d['where']=qs[_0x810e('0x3e')](_[_0x810e('0x47')](_0x1a1ab7[_0x810e('0x3c')],_0x1d10d7[_0x810e('0x3e')]));_0x54470d['where'][_0x810e('0xc3')]=_0x4c0268['id'];if(_0x1a1ab7['query']['filter']){_0x54470d[_0x810e('0x46')]=_[_0x810e('0x9d')](_0x54470d['where'],{'$or':_[_0x810e('0x32')](_0x54470d[_0x810e('0x41')],function(_0x15f442){var _0x27cb6e={};_0x27cb6e[_0x15f442]={'$like':'%'+_0x1a1ab7[_0x810e('0x3c')]['filter']+'%'};return _0x27cb6e;})});}if(_0x1a1ab7[_0x810e('0x3c')][_0x810e('0x79')]){var _0x1113d0=_0x1a1ab7[_0x810e('0x3c')][_0x810e('0x79')][_0x810e('0x35')](',');var _0x241e52={};_0x241e52[_0x1113d0[0x0]]={'$gte':moment(_0x1113d0[0x1])[_0x810e('0xc4')](_0x810e('0xc5'))};_0x54470d['where']=_[_0x810e('0x9d')](_0x54470d['where'],_0x241e52);}_0x54470d=_[_0x810e('0x9d')]({},_0x54470d,_0x1a1ab7[_0x810e('0xb9')]);return db[_0x810e('0xbe')][_0x810e('0x26')]({'where':_0x54470d['where']})[_0x810e('0x2d')](function(_0x7d9cc1){_0x536b19[_0x810e('0x26')]=_0x7d9cc1;if(_0x1a1ab7[_0x810e('0x3c')][_0x810e('0xb7')]){_0x54470d[_0x810e('0xb8')]=[{'all':!![]}];}return db[_0x810e('0xbe')]['findAll'](_0x54470d);})['then'](function(_0x16e140){_0x536b19[_0x810e('0xb4')]=_0x16e140;return _0x536b19;});}})[_0x810e('0x2d')](respondWithFilteredResult(_0x387f92,_0x54470d))[_0x810e('0x37')](handleError(_0x387f92,null));};exports[_0x810e('0xc6')]=function(_0x387eee,_0x17e425,_0x180f1d){return db['OpenchannelInteraction']['find']({'where':{'id':_0x387eee['params']['id']}})[_0x810e('0x2d')](handleEntityNotFound(_0x17e425,null))[_0x810e('0x2d')](function(_0x1ca44e){if(_0x1ca44e){return _0x1ca44e[_0x810e('0xc7')](_0x387eee[_0x810e('0xbb')][_0x810e('0xbf')],_[_0x810e('0xc8')](_0x387eee[_0x810e('0xbb')],[_0x810e('0xbf'),'id'])||{})[_0x810e('0xc9')](function(){return db['Tag'][_0x810e('0xca')]({'attributes':['id','name',_0x810e('0x49')],'where':{'id':_0x387eee['body'][_0x810e('0xbf')]}});})['then'](function(_0x108606){socket['emit'](_0x810e('0xcb'),{'id':Number(_0x387eee[_0x810e('0xb5')]['id']),'tags':_0x108606||[]});return{'id':Number(_0x387eee['params']['id']),'tags':_0x108606||[]};});}})['then'](respondWithResult(_0x17e425,null))['catch'](handleError(_0x17e425,null));};exports['removeTags']=function(_0x5454a5,_0x1eeaec,_0x12c58c){return db[_0x810e('0x39')][_0x810e('0x66')]({'where':{'id':_0x5454a5[_0x810e('0xb5')]['id']}})['then'](handleEntityNotFound(_0x1eeaec,null))['then'](function(_0x5a9e25){if(_0x5a9e25){return _0x5a9e25['removeTags'](_0x5454a5['query'][_0x810e('0xbf')]);}})[_0x810e('0x2d')](respondWithStatusCode(_0x1eeaec,null))[_0x810e('0x37')](handleError(_0x1eeaec,null));};exports['download']=function(_0x531731,_0x6a49d7){var _0x44cf2e=moment()['unix']()[_0x810e('0x9b')]();var _0x36e82e=path[_0x810e('0xcc')](config[_0x810e('0xcd')],_0x810e('0xce'),'files',_0x810e('0xcf'));var _0x416ca3=path[_0x810e('0xcc')](config[_0x810e('0xcd')],_0x810e('0xce'),_0x810e('0xd0'),_0x810e('0xd1'));var _0xaed907=path['join'](_0x36e82e,_0x44cf2e);var _0x48f965=util['format']('transcript-%d-%s.zip',_0x531731[_0x810e('0xb5')]['id'],_0x44cf2e);var _0x4b8e71=path['join'](_0x36e82e,_0x48f965);var _0x4d7172=[];_0x4d7172[_0x810e('0xd2')]({'model':db['User'],'as':'User','attributes':['id','fullname'],'raw':!![]});_0x4d7172[_0x810e('0xd2')]({'model':db[_0x810e('0xd3')],'as':_0x810e('0xd4'),'attributes':['id',_0x810e('0xd5'),_0x810e('0xd6')],'raw':!![]});if(_0x531731[_0x810e('0x3c')][_0x810e('0xd1')]){_0x4d7172[_0x810e('0xd2')]({'model':db['Attachment'],'as':_0x810e('0xd7'),'raw':!![]});}var _0x2263d0=[{'model':db['OpenchannelMessage'],'as':_0x810e('0xd8'),'attributes':['id','body',_0x810e('0x77'),'direction',_0x810e('0xd9'),_0x810e('0x7e')],'include':_0x4d7172}];_0x2263d0['push']({'model':db[_0x810e('0xda')],'as':_0x810e('0xdb'),'attributes':['id',_0x810e('0x30')]});_0x2263d0[_0x810e('0xd2')]({'model':db[_0x810e('0x6d')],'as':_0x810e('0xdc'),'attributes':['id',_0x810e('0x33')]});return db[_0x810e('0x39')][_0x810e('0x66')]({'where':{'id':_0x531731[_0x810e('0xb5')]['id']},'include':_0x2263d0})[_0x810e('0x2d')](handleEntityNotFound(_0x6a49d7,null))[_0x810e('0x2d')](function(_0x1bd012){if(_0x1bd012){var _0x12dc0d=_0x1bd012[_0x810e('0xdd')]({'plain':!![]});fs['mkdirSync'](_0xaed907);var _0x21bd5f={'channel':'Openchannel','account':_0x12dc0d[_0x810e('0xdb')][_0x810e('0x30')],'agent':_0x12dc0d[_0x810e('0xdc')]?_0x12dc0d[_0x810e('0xdc')][_0x810e('0x33')]:_0x810e('0xde'),'createdAt':moment(_0x12dc0d[_0x810e('0x77')])[_0x810e('0xc4')]('YYYY-MM-DD\x20HH:mm:ss')[_0x810e('0x9b')](),'closedAt':_0x12dc0d[_0x810e('0xdf')]?moment(_0x12dc0d[_0x810e('0xe0')])[_0x810e('0xc4')]('YYYY-MM-DD\x20HH:mm:ss')[_0x810e('0x9b')]():'','disposition':_0x12dc0d[_0x810e('0xe1')],'visibility':_0x12dc0d['threadId']?_0x810e('0xe2'):_0x810e('0xe3'),'messages':_(_0x12dc0d[_0x810e('0xd8')])[_0x810e('0x83')]({'secret':![]})['map'](function(_0x2e8b00){if(_0x2e8b00[_0x810e('0xd7')]){var _0x1c9cf7=path[_0x810e('0xcc')](_0x416ca3,_0x2e8b00[_0x810e('0xd7')][_0x810e('0xe4')]);if(fs[_0x810e('0xe5')](_0x1c9cf7)){fs['createReadStream'](_0x1c9cf7)['pipe'](fs['createWriteStream'](path[_0x810e('0xcc')](_0xaed907,_0x2e8b00[_0x810e('0xd7')][_0x810e('0xe4')])));}}return{'date':moment(_0x2e8b00[_0x810e('0x77')])['format'](_0x810e('0xc5'))['toString'](),'sender':_0x2e8b00['direction']===_0x810e('0xe6')?_0x2e8b00['User']?_0x2e8b00[_0x810e('0x6d')][_0x810e('0x33')]:_0x810e('0xe7'):_0x2e8b00[_0x810e('0xd4')]['firstName']+(_0x2e8b00[_0x810e('0xd4')][_0x810e('0xd6')]?'\x20'+_0x2e8b00[_0x810e('0xd4')][_0x810e('0xd6')]:''),'body':_0x2e8b00[_0x810e('0xd7')]?_0x2e8b00['Attachment']['basename']:_0x2e8b00[_0x810e('0xbb')],'direction':_0x2e8b00['direction']===_0x810e('0xe6')?'A':'C','secret':_0x2e8b00['secret'],'read':_0x2e8b00[_0x810e('0x7e')],'attachment':_0x2e8b00[_0x810e('0xd7')]};})['value']()};return ejs[_0x810e('0xe8')](path[_0x810e('0xcc')](config[_0x810e('0xcd')],_0x810e('0xce'),_0x810e('0xe9'),'downloadInteraction.ejs'),{'interaction':_0x21bd5f})[_0x810e('0x2d')](function(_0x118a46){var _0x2d8675=path[_0x810e('0xcc')](_0xaed907,'transcript-'+_0x12dc0d['id']+'-'+_0x44cf2e+_0x810e('0xea'));var _0x45408d={'path':_0x2d8675,'channel':_0x810e('0xeb'),'interactionId':_0x12dc0d['id']};return pdf['createPdfFromHTML'](_0x118a46,_0x45408d);})[_0x810e('0x2d')](function(){return new BPromise(function(_0x53b049,_0x427662){zipdir(_0xaed907,{'saveTo':_0x4b8e71},function(_0xcef801,_0xc23f9c){if(_0xcef801)return _0x427662(_0xcef801);return _0x53b049(_0xc23f9c);});})[_0x810e('0x2d')](function(){return new BPromise(function(_0x54a3cb,_0x2f69b5){rimraf(_0xaed907,function(_0x587ba5){if(_0x587ba5)_0x2f69b5(_0x587ba5);return _0x54a3cb();});});})[_0x810e('0x2d')](function(){return _0x6a49d7['download'](_0x4b8e71,_0x48f965,function(_0x39592e){if(_0x39592e){console[_0x810e('0xec')](_0x810e('0xed'),_0x39592e);}else{fs['unlinkSync'](_0x4b8e71);}});});});}else{return _0x6a49d7[_0x810e('0x21')](0xc8);}})['catch'](handleError(_0x6a49d7,null));};
\ No newline at end of file
index c52f977..1d40ecd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaddd=['OpenchannelInteraction','OpenchannelMessage','save','update','remove','getUsers','then','setDataValue','Users','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x25455b,_0x2600b1){var _0x6ffbb3=function(_0x4442df){while(--_0x4442df){_0x25455b['push'](_0x25455b['shift']());}};_0x6ffbb3(++_0x2600b1);}(_0xaddd,0x12e));var _0xdadd=function(_0x1030ce,_0xbe3f74){_0x1030ce=_0x1030ce-0x0;var _0x3367fd=_0xaddd[_0x1030ce];return _0x3367fd;};'use strict';var EventEmitter=require(_0xdadd('0x0'));var OpenchannelInteraction=require(_0xdadd('0x1'))['db'][_0xdadd('0x2')];var OpenchannelMessage=require(_0xdadd('0x1'))['db'][_0xdadd('0x3')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xdadd('0x4'),'afterUpdate':_0xdadd('0x5'),'afterDestroy':_0xdadd('0x6')};function emitEvent(_0x18cd76){return function(_0x24192d,_0x181b98,_0x3b792e){_0x24192d[_0xdadd('0x7')]({'attributes':['id'],'raw':!![]})[_0xdadd('0x8')](function(_0x438273){_0x24192d[_0xdadd('0x9')](_0xdadd('0xa'),_0x438273['map'](function(_0x174a77){return{'id':_0x174a77['id']};}));return OpenchannelMessage[_0xdadd('0xb')]({'where':{'OpenchannelInteractionId':_0x24192d['id'],'direction':'in','read':![]},'raw':!![]});})[_0xdadd('0x8')](function(_0x38407f){_0x24192d[_0xdadd('0x9')](_0xdadd('0xc'),_0x38407f[_0xdadd('0xd')]);OpenchannelInteractionEvents['emit'](_0x18cd76+':'+_0x24192d['id'],_0x24192d);OpenchannelInteractionEvents[_0xdadd('0xe')](_0x18cd76,_0x24192d);_0x3b792e(null);})[_0xdadd('0xf')](_0x3b792e(null));};}for(var e in events){if(events[_0xdadd('0x10')](e)){var event=events[e];OpenchannelInteraction[_0xdadd('0x11')](e,emitEvent(event));}}module[_0xdadd('0x12')]=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0xc75f=['remove','getUsers','then','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','exports','../../mysqldb','setMaxListeners','save','update'];(function(_0x4c184d,_0x4278ab){var _0x23d997=function(_0x22d068){while(--_0x22d068){_0x4c184d['push'](_0x4c184d['shift']());}};_0x23d997(++_0x4278ab);}(_0xc75f,0x1cc));var _0xfc75=function(_0x530ea4,_0x4133ee){_0x530ea4=_0x530ea4-0x0;var _0x5c4664=_0xc75f[_0x530ea4];return _0x5c4664;};'use strict';var EventEmitter=require('events');var OpenchannelInteraction=require(_0xfc75('0x0'))['db']['OpenchannelInteraction'];var OpenchannelMessage=require(_0xfc75('0x0'))['db']['OpenchannelMessage'];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0xfc75('0x1')](0x0);var events={'afterCreate':_0xfc75('0x2'),'afterUpdate':_0xfc75('0x3'),'afterDestroy':_0xfc75('0x4')};function emitEvent(_0x3b92a6){return function(_0xdd3414,_0x16cfd1,_0x2554ee){_0xdd3414[_0xfc75('0x5')]({'attributes':['id'],'raw':!![]})[_0xfc75('0x6')](function(_0xa13997){_0xdd3414[_0xfc75('0x7')](_0xfc75('0x8'),_0xa13997[_0xfc75('0x9')](function(_0x186b5d){return{'id':_0x186b5d['id']};}));return OpenchannelMessage[_0xfc75('0xa')]({'where':{'OpenchannelInteractionId':_0xdd3414['id'],'direction':'in','read':![]},'raw':!![]});})[_0xfc75('0x6')](function(_0x11de6c){_0xdd3414[_0xfc75('0x7')](_0xfc75('0xb'),_0x11de6c[_0xfc75('0xc')]);OpenchannelInteractionEvents[_0xfc75('0xd')](_0x3b92a6+':'+_0xdd3414['id'],_0xdd3414);OpenchannelInteractionEvents[_0xfc75('0xd')](_0x3b92a6,_0xdd3414);_0x2554ee(null);})[_0xfc75('0xe')](_0x2554ee(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelInteraction['hook'](e,emitEvent(event));}}module[_0xfc75('0xf')]=OpenchannelInteractionEvents;
\ No newline at end of file
index 27f33ef..9787ab5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27f8=['util','../../config/logger','api','moment','path','../../config/environment','exports','define','OpenchannelInteraction','openchannel_interactions','utf8mb4','utf8mb4_unicode_ci','changed','closed','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x331d58,_0x3701d1){var _0x429bff=function(_0x30ee54){while(--_0x30ee54){_0x331d58['push'](_0x331d58['shift']());}};_0x429bff(++_0x3701d1);}(_0x27f8,0x180));var _0x827f=function(_0x5db1a4,_0x14aa78){_0x5db1a4=_0x5db1a4-0x0;var _0x21ac3f=_0x27f8[_0x5db1a4];return _0x21ac3f;};'use strict';var _=require('lodash');var util=require(_0x827f('0x0'));var logger=require(_0x827f('0x1'))(_0x827f('0x2'));var moment=require(_0x827f('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x827f('0x4'));var rimraf=require('rimraf');var config=require(_0x827f('0x5'));var attributes=require('./openchannelInteraction.attributes');module[_0x827f('0x6')]=function(_0x383e27,_0x23958c){return _0x383e27[_0x827f('0x7')](_0x827f('0x8'),attributes,{'tableName':_0x827f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x827f('0xa'),'collate':_0x827f('0xb'),'hooks':{'beforeUpdate':function(_0x55477c,_0x438f32,_0xdcdd3f){if(_0x55477c[_0x827f('0xc')](_0x827f('0xd'))){_0x55477c['closedAt']=moment()[_0x827f('0xe')](_0x827f('0xf'));}_0xdcdd3f(null,_0x55477c);}}});};
\ No newline at end of file
+var _0x8620=['./openchannelInteraction.attributes','exports','define','OpenchannelInteraction','openchannel_interactions','utf8mb4','utf8mb4_unicode_ci','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x36dfbd,_0x5bfe2d){var _0x4ecad9=function(_0x5230da){while(--_0x5230da){_0x36dfbd['push'](_0x36dfbd['shift']());}};_0x4ecad9(++_0x5bfe2d);}(_0x8620,0xc0));var _0x0862=function(_0x372a32,_0x20093b){_0x372a32=_0x372a32-0x0;var _0x3d7923=_0x8620[_0x372a32];return _0x3d7923;};'use strict';var _=require('lodash');var util=require(_0x0862('0x0'));var logger=require(_0x0862('0x1'))(_0x0862('0x2'));var moment=require('moment');var BPromise=require(_0x0862('0x3'));var rp=require(_0x0862('0x4'));var fs=require('fs');var path=require(_0x0862('0x5'));var rimraf=require(_0x0862('0x6'));var config=require(_0x0862('0x7'));var attributes=require(_0x0862('0x8'));module[_0x0862('0x9')]=function(_0x24dab8,_0x5017eb){return _0x24dab8[_0x0862('0xa')](_0x0862('0xb'),attributes,{'tableName':_0x0862('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x0862('0xd'),'collate':_0x0862('0xe'),'hooks':{'beforeUpdate':function(_0x1d7440,_0x5e3a80,_0x33ee75){if(_0x1d7440[_0x0862('0xf')](_0x0862('0x10'))){_0x1d7440[_0x0862('0x11')]=moment()[_0x0862('0x12')](_0x0862('0x13'));}_0x33ee75(null,_0x1d7440);}}});};
\ No newline at end of file
index 0231283..05315b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ffa=['spread','AddTags','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./openchannelInteraction.socket','request','then','info','request\x20sent','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelInteraction,\x20%s,\x20%s','message','catch','UpdateOpenchannelInteraction','OpenchannelInteraction','update','options','where','attributes','limit','debug','find','addTags','ids','omit'];(function(_0x4254e7,_0x4fc342){var _0x5e0844=function(_0x3a92c7){while(--_0x3a92c7){_0x4254e7['push'](_0x4254e7['shift']());}};_0x5e0844(++_0x4fc342);}(_0x5ffa,0xca));var _0xa5ff=function(_0x516832,_0x43e87d){_0x516832=_0x516832-0x0;var _0x273a80=_0x5ffa[_0x516832];return _0x273a80;};'use strict';var _=require('lodash');var util=require(_0xa5ff('0x0'));var moment=require(_0xa5ff('0x1'));var BPromise=require(_0xa5ff('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa5ff('0x3'));var db=require(_0xa5ff('0x4'))['db'];var utils=require(_0xa5ff('0x5'));var logger=require(_0xa5ff('0x6'))('rpc');var config=require(_0xa5ff('0x7'));var jayson=require(_0xa5ff('0x8'));var client=jayson['client'][_0xa5ff('0x9')]({'port':0x232a});config[_0xa5ff('0xa')]=_[_0xa5ff('0xb')](config[_0xa5ff('0xa')],{'host':_0xa5ff('0xc'),'port':0x18eb});var socket=require(_0xa5ff('0xd'))(new Redis(config[_0xa5ff('0xa')]));require(_0xa5ff('0xe'))['register'](socket);function respondWithRpcPromise(_0x3ad2ab,_0x4cada4,_0x167efb){return new BPromise(function(_0x17d740,_0x22d0a8){return client[_0xa5ff('0xf')](_0x3ad2ab,_0x167efb)[_0xa5ff('0x10')](function(_0x191920){logger[_0xa5ff('0x11')]('OpenchannelInteraction,\x20%s,\x20%s',_0x4cada4,_0xa5ff('0x12'));logger['debug'](_0xa5ff('0x13'),_0x4cada4,'request\x20sent',JSON[_0xa5ff('0x14')](_0x191920));if(_0x191920[_0xa5ff('0x15')]){if(_0x191920[_0xa5ff('0x15')][_0xa5ff('0x16')]===0x1f4){logger[_0xa5ff('0x15')](_0xa5ff('0x17'),_0x4cada4,_0x191920[_0xa5ff('0x15')][_0xa5ff('0x18')]);return _0x22d0a8(_0x191920['error'][_0xa5ff('0x18')]);}logger['error'](_0xa5ff('0x17'),_0x4cada4,_0x191920[_0xa5ff('0x15')][_0xa5ff('0x18')]);return _0x17d740(_0x191920[_0xa5ff('0x15')]['message']);}else{logger[_0xa5ff('0x11')](_0xa5ff('0x17'),_0x4cada4,'request\x20sent');_0x17d740(_0x191920['result']['message']);}})[_0xa5ff('0x19')](function(_0x24cd70){logger[_0xa5ff('0x15')](_0xa5ff('0x17'),_0x4cada4,_0x24cd70);_0x22d0a8(_0x24cd70);});});}exports[_0xa5ff('0x1a')]=function(_0x1dd19e){var _0xc95fef=this;return new Promise(function(_0x243a3c,_0x383168){return db[_0xa5ff('0x1b')][_0xa5ff('0x1c')](_0x1dd19e['body'],{'raw':_0x1dd19e[_0xa5ff('0x1d')]?_0x1dd19e['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1dd19e[_0xa5ff('0x1d')]?_0x1dd19e[_0xa5ff('0x1d')][_0xa5ff('0x1e')]||null:null,'attributes':_0x1dd19e[_0xa5ff('0x1d')]?_0x1dd19e['options'][_0xa5ff('0x1f')]||null:null,'limit':_0x1dd19e[_0xa5ff('0x1d')]?_0x1dd19e[_0xa5ff('0x1d')][_0xa5ff('0x20')]||null:null})[_0xa5ff('0x10')](function(_0x4ab72f){logger[_0xa5ff('0x11')](_0xa5ff('0x1a'),_0x1dd19e);logger[_0xa5ff('0x21')](_0xa5ff('0x1a'),_0x1dd19e,JSON['stringify'](_0x4ab72f));_0x243a3c(_0x4ab72f);})[_0xa5ff('0x19')](function(_0x586bb1){logger['error'](_0xa5ff('0x1a'),_0x586bb1[_0xa5ff('0x18')],_0x1dd19e);_0x383168(_0xc95fef[_0xa5ff('0x15')](0x1f4,_0x586bb1[_0xa5ff('0x18')]));});});};exports['AddTagsToOpenchannelInteraction']=function(_0x2b9053){return new Promise(function(_0x368378,_0x3d3475){return db['OpenchannelInteraction'][_0xa5ff('0x22')]({'where':_0x2b9053[_0xa5ff('0x1d')]?_0x2b9053[_0xa5ff('0x1d')]['where']||null:null})[_0xa5ff('0x10')](function(_0x2aca5e){if(_0x2aca5e){return _0x2aca5e[_0xa5ff('0x23')](_0x2b9053['body'][_0xa5ff('0x24')],_[_0xa5ff('0x25')](_0x2b9053['body'],[_0xa5ff('0x24'),'id'])||{});}})[_0xa5ff('0x26')](function(_0x12e8da){logger[_0xa5ff('0x11')](_0xa5ff('0x27'),_0x2b9053);logger['debug'](_0xa5ff('0x27'),_0x2b9053,JSON[_0xa5ff('0x14')](_0x12e8da));_0x368378(_0x12e8da);})[_0xa5ff('0x19')](function(_0x56b0be){logger[_0xa5ff('0x15')](_0xa5ff('0x27'),_0x56b0be[_0xa5ff('0x18')],_0x2b9053);_0x3d3475(_this[_0xa5ff('0x15')](0x1f4,_0x56b0be[_0xa5ff('0x18')]));});});};
\ No newline at end of file
+var _0x6e96=['./openchannelInteraction.socket','register','then','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','UpdateOpenchannelInteraction','update','body','options','raw','where','limit','debug','catch','AddTagsToOpenchannelInteraction','OpenchannelInteraction','find','ids','omit','spread','AddTags','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter'];(function(_0x48ec8a,_0x302b2f){var _0x4f2bd1=function(_0x257e07){while(--_0x257e07){_0x48ec8a['push'](_0x48ec8a['shift']());}};_0x4f2bd1(++_0x302b2f);}(_0x6e96,0x72));var _0x66e9=function(_0x5bdba4,_0x48b93c){_0x5bdba4=_0x5bdba4-0x0;var _0x11d0bd=_0x6e96[_0x5bdba4];return _0x11d0bd;};'use strict';var _=require(_0x66e9('0x0'));var util=require(_0x66e9('0x1'));var moment=require('moment');var BPromise=require(_0x66e9('0x2'));var rs=require(_0x66e9('0x3'));var fs=require('fs');var Redis=require(_0x66e9('0x4'));var db=require(_0x66e9('0x5'))['db'];var utils=require(_0x66e9('0x6'));var logger=require('../../config/logger')(_0x66e9('0x7'));var config=require(_0x66e9('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x66e9('0x9')][_0x66e9('0xa')]({'port':0x232a});config[_0x66e9('0xb')]=_[_0x66e9('0xc')](config['redis'],{'host':_0x66e9('0xd'),'port':0x18eb});var socket=require(_0x66e9('0xe'))(new Redis(config[_0x66e9('0xb')]));require(_0x66e9('0xf'))[_0x66e9('0x10')](socket);function respondWithRpcPromise(_0x118f46,_0xbb6e1a,_0x94bded){return new BPromise(function(_0x57d878,_0x4f5194){return client['request'](_0x118f46,_0x94bded)[_0x66e9('0x11')](function(_0x16a31f){logger[_0x66e9('0x12')](_0x66e9('0x13'),_0xbb6e1a,_0x66e9('0x14'));logger['debug'](_0x66e9('0x15'),_0xbb6e1a,_0x66e9('0x14'),JSON[_0x66e9('0x16')](_0x16a31f));if(_0x16a31f[_0x66e9('0x17')]){if(_0x16a31f[_0x66e9('0x17')][_0x66e9('0x18')]===0x1f4){logger['error']('OpenchannelInteraction,\x20%s,\x20%s',_0xbb6e1a,_0x16a31f[_0x66e9('0x17')][_0x66e9('0x19')]);return _0x4f5194(_0x16a31f['error'][_0x66e9('0x19')]);}logger['error'](_0x66e9('0x13'),_0xbb6e1a,_0x16a31f[_0x66e9('0x17')][_0x66e9('0x19')]);return _0x57d878(_0x16a31f['error'][_0x66e9('0x19')]);}else{logger[_0x66e9('0x12')](_0x66e9('0x13'),_0xbb6e1a,_0x66e9('0x14'));_0x57d878(_0x16a31f[_0x66e9('0x1a')][_0x66e9('0x19')]);}})['catch'](function(_0xb96df1){logger[_0x66e9('0x17')](_0x66e9('0x13'),_0xbb6e1a,_0xb96df1);_0x4f5194(_0xb96df1);});});}exports[_0x66e9('0x1b')]=function(_0x455dc){var _0x2cdd96=this;return new Promise(function(_0x131914,_0x31b31f){return db['OpenchannelInteraction'][_0x66e9('0x1c')](_0x455dc[_0x66e9('0x1d')],{'raw':_0x455dc[_0x66e9('0x1e')]?_0x455dc['options'][_0x66e9('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x455dc[_0x66e9('0x1e')]?_0x455dc[_0x66e9('0x1e')][_0x66e9('0x20')]||null:null,'attributes':_0x455dc[_0x66e9('0x1e')]?_0x455dc[_0x66e9('0x1e')]['attributes']||null:null,'limit':_0x455dc['options']?_0x455dc[_0x66e9('0x1e')][_0x66e9('0x21')]||null:null})['then'](function(_0x3dadfa){logger[_0x66e9('0x12')]('UpdateOpenchannelInteraction',_0x455dc);logger[_0x66e9('0x22')](_0x66e9('0x1b'),_0x455dc,JSON[_0x66e9('0x16')](_0x3dadfa));_0x131914(_0x3dadfa);})[_0x66e9('0x23')](function(_0x36e1e7){logger[_0x66e9('0x17')](_0x66e9('0x1b'),_0x36e1e7[_0x66e9('0x19')],_0x455dc);_0x31b31f(_0x2cdd96[_0x66e9('0x17')](0x1f4,_0x36e1e7[_0x66e9('0x19')]));});});};exports[_0x66e9('0x24')]=function(_0x26ed3e){return new Promise(function(_0x3a331,_0x3bcc46){return db[_0x66e9('0x25')][_0x66e9('0x26')]({'where':_0x26ed3e['options']?_0x26ed3e['options'][_0x66e9('0x20')]||null:null})[_0x66e9('0x11')](function(_0x21df02){if(_0x21df02){return _0x21df02['addTags'](_0x26ed3e[_0x66e9('0x1d')][_0x66e9('0x27')],_[_0x66e9('0x28')](_0x26ed3e[_0x66e9('0x1d')],[_0x66e9('0x27'),'id'])||{});}})[_0x66e9('0x29')](function(_0x579405){logger[_0x66e9('0x12')](_0x66e9('0x2a'),_0x26ed3e);logger['debug'](_0x66e9('0x2a'),_0x26ed3e,JSON[_0x66e9('0x16')](_0x579405));_0x3a331(_0x579405);})[_0x66e9('0x23')](function(_0x176f45){logger[_0x66e9('0x17')]('AddTags',_0x176f45[_0x66e9('0x19')],_0x26ed3e);_0x3bcc46(_this[_0x66e9('0x17')](0x1f4,_0x176f45['message']));});});};
\ No newline at end of file
index 5ee9a0c..9de8ca8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f61=['register','length','openchannelInteraction:','./openchannelInteraction.events','save','update','emit'];(function(_0x481fdc,_0x11979c){var _0x25e264=function(_0x35a803){while(--_0x35a803){_0x481fdc['push'](_0x481fdc['shift']());}};_0x25e264(++_0x11979c);}(_0x2f61,0x1a7));var _0x12f6=function(_0x59c7d3,_0x529559){_0x59c7d3=_0x59c7d3-0x0;var _0x5a286b=_0x2f61[_0x59c7d3];return _0x5a286b;};'use strict';var OpenchannelInteractionEvents=require(_0x12f6('0x0'));var events=[_0x12f6('0x1'),'remove',_0x12f6('0x2')];function createListener(_0x2527dc,_0x1ada57){return function(_0x52005a){_0x1ada57[_0x12f6('0x3')](_0x2527dc,_0x52005a);};}function removeListener(_0x29a678,_0x2f7acd){return function(){OpenchannelInteractionEvents['removeListener'](_0x29a678,_0x2f7acd);};}exports[_0x12f6('0x4')]=function(_0x4b4773){for(var _0x477dad=0x0,_0x57875b=events[_0x12f6('0x5')];_0x477dad<_0x57875b;_0x477dad++){var _0x2e2d44=events[_0x477dad];var _0x1ef61b=createListener(_0x12f6('0x6')+_0x2e2d44,_0x4b4773);OpenchannelInteractionEvents['on'](_0x2e2d44,_0x1ef61b);}};
\ No newline at end of file
+var _0xa15d=['length','openchannelInteraction:','./openchannelInteraction.events','save','remove','update','emit','removeListener','register'];(function(_0x18b8b6,_0x555e6a){var _0x2a9124=function(_0x3a42eb){while(--_0x3a42eb){_0x18b8b6['push'](_0x18b8b6['shift']());}};_0x2a9124(++_0x555e6a);}(_0xa15d,0x110));var _0xda15=function(_0x1f5a63,_0x511504){_0x1f5a63=_0x1f5a63-0x0;var _0x30bb7a=_0xa15d[_0x1f5a63];return _0x30bb7a;};'use strict';var OpenchannelInteractionEvents=require(_0xda15('0x0'));var events=[_0xda15('0x1'),_0xda15('0x2'),_0xda15('0x3')];function createListener(_0x3efdf4,_0x523ccf){return function(_0x4f8212){_0x523ccf[_0xda15('0x4')](_0x3efdf4,_0x4f8212);};}function removeListener(_0x240d90,_0x30382e){return function(){OpenchannelInteractionEvents[_0xda15('0x5')](_0x240d90,_0x30382e);};}exports[_0xda15('0x6')]=function(_0x47f90f){for(var _0x247bf9=0x0,_0x438c72=events[_0xda15('0x7')];_0x247bf9<_0x438c72;_0x247bf9++){var _0x164e13=events[_0x247bf9];var _0x5533b4=createListener(_0xda15('0x8')+_0x164e13,_0x47f90f);OpenchannelInteractionEvents['on'](_0x164e13,_0x5533b4);}};
\ No newline at end of file
index ef32f3b..f973715 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(_0x16b9ed,_0x56517a){var _0x66b1f8=function(_0x1c883){while(--_0x1c883){_0x16b9ed['push'](_0x16b9ed['shift']());}};_0x66b1f8(++_0x56517a);}(_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 _0x0713=['get','isAuthenticated','index','/describe','describe','/:id','post','tracked','openchannel','openchannelmessage:create','put','update','accept','/:id/reject','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./openchannelMessage.controller'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));var controller=require(_0x3071('0x7'));router[_0x3071('0x8')]('/',auth[_0x3071('0x9')](),controller[_0x3071('0xa')]);router[_0x3071('0x8')](_0x3071('0xb'),auth[_0x3071('0x9')](),controller[_0x3071('0xc')]);router[_0x3071('0x8')](_0x3071('0xd'),auth[_0x3071('0x9')](),controller['show']);router[_0x3071('0xe')]('/',auth[_0x3071('0x9')](),interaction[_0x3071('0xf')](_0x3071('0x10'),_0x3071('0x11')),controller['create']);router[_0x3071('0x12')](_0x3071('0xd'),auth[_0x3071('0x9')](),controller[_0x3071('0x13')]);router[_0x3071('0x12')]('/:id/accept',auth['isAuthenticated'](),controller[_0x3071('0x14')]);router['put'](_0x3071('0x15'),auth[_0x3071('0x9')](),controller['reject']);router[_0x3071('0x16')]('/:id',auth[_0x3071('0x9')](),controller[_0x3071('0x17')]);module[_0x3071('0x18')]=router;
\ No newline at end of file
index d6147fc..70e5502 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f59=['medium','BOOLEAN','out','DATE','STRING','sequelize','exports','TEXT'];(function(_0x4b3fd0,_0x5a13b3){var _0x453c61=function(_0x2a00aa){while(--_0x2a00aa){_0x4b3fd0['push'](_0x4b3fd0['shift']());}};_0x453c61(++_0x5a13b3);}(_0x8f59,0x11d));var _0x98f5=function(_0x4f9e00,_0x4d3a17){_0x4f9e00=_0x4f9e00-0x0;var _0x73b307=_0x8f59[_0x4f9e00];return _0x73b307;};'use strict';var Sequelize=require(_0x98f5('0x0'));module[_0x98f5('0x1')]={'body':{'type':Sequelize[_0x98f5('0x2')](_0x98f5('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x98f5('0x4')],'defaultValue':![]},'secret':{'type':Sequelize[_0x98f5('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x98f5('0x5')),'defaultValue':_0x98f5('0x5'),'allowNull':![]},'readAt':{'type':Sequelize[_0x98f5('0x6')]},'providerName':{'type':Sequelize[_0x98f5('0x7')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x7033=['sequelize','exports','TEXT','medium','BOOLEAN','ENUM','out','DATE','STRING'];(function(_0x33c9f8,_0x5aedbb){var _0x2d7004=function(_0x4f4f43){while(--_0x4f4f43){_0x33c9f8['push'](_0x33c9f8['shift']());}};_0x2d7004(++_0x5aedbb);}(_0x7033,0x19e));var _0x3703=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x7033[_0x4b369d];return _0x571a98;};'use strict';var Sequelize=require(_0x3703('0x0'));module[_0x3703('0x1')]={'body':{'type':Sequelize[_0x3703('0x2')](_0x3703('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0x3703('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x3703('0x5')]('in',_0x3703('0x6')),'defaultValue':_0x3703('0x6'),'allowNull':![]},'readAt':{'type':Sequelize[_0x3703('0x7')]},'providerName':{'type':Sequelize[_0x3703('0x8')]},'providerResponse':{'type':Sequelize[_0x3703('0x2')]}};
\ No newline at end of file
index 1cfdf23..404dc28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1622=['agent','get','OpenchannelInteraction','OpenchannelInteractionId','isNil','read1stAt','interaction','user','role','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','SELECT','contact','User','fullname','email','internal','channel','event','EventManager','acceptmessage','RejectMessage','QueryTypes','SIP/%s','rejectmessage','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','sox','to-csv','ejs','fs-extra','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./openchannelMessage.socket','register','jayson/promise','request','then','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','catch','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','sendStatus','name','send','index','map','OpenchannelMessage','type','key','model','query','keys','attributes','intersection','fields','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','show','params','rawAttributes','length','find','body','destroy','describe','openchannel-interactions','accept','openchannel','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId'];(function(_0x3dc29f,_0x3454f2){var _0x189d7c=function(_0x4e24f9){while(--_0x4e24f9){_0x3dc29f['push'](_0x3dc29f['shift']());}};_0x189d7c(++_0x3454f2);}(_0x1622,0x18b));var _0x2162=function(_0x42e694,_0x2bda04){_0x42e694=_0x42e694-0x0;var _0x16a539=_0x1622[_0x42e694];return _0x16a539;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2162('0x0'));var zipdir=require(_0x2162('0x1'));var jsonpatch=require(_0x2162('0x2'));var rp=require(_0x2162('0x3'));var moment=require(_0x2162('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x2162('0x5'));var util=require('util');var path=require('path');var sox=require(_0x2162('0x6'));var csv=require(_0x2162('0x7'));var ejs=require(_0x2162('0x8'));var fs=require('fs');var fs_extra=require(_0x2162('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x2162('0xa'));var toCsv=require('to-csv');var querystring=require(_0x2162('0xb'));var Papa=require(_0x2162('0xc'));var Redis=require(_0x2162('0xd'));var authService=require(_0x2162('0xe'));var qs=require(_0x2162('0xf'));var as=require(_0x2162('0x10'));var hardwareService=require(_0x2162('0x11'));var logger=require(_0x2162('0x12'))('api');var utils=require(_0x2162('0x13'));var config=require(_0x2162('0x14'));var licenseUtil=require(_0x2162('0x15'));var db=require(_0x2162('0x16'))['db'];config[_0x2162('0x17')]=_['defaults'](config[_0x2162('0x17')],{'host':_0x2162('0x18'),'port':0x18eb});var socket=require(_0x2162('0x19'))(new Redis(config[_0x2162('0x17')]));require(_0x2162('0x1a'))[_0x2162('0x1b')](socket);var jayson=require(_0x2162('0x1c'));var client=jayson['client']['http']({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x296322,_0x152f18,_0x9e7229,_0x5a63a5){return new BPromise(function(_0x54006a,_0x1952aa){var _0x4d72c8=_0x5a63a5||client;return _0x4d72c8[_0x2162('0x1d')](_0x296322,_0x9e7229)[_0x2162('0x1e')](function(_0xc3a42){logger['info'](_0x2162('0x1f'),_0x152f18,_0x2162('0x20'));logger['debug']('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x152f18,_0x2162('0x20'),JSON[_0x2162('0x21')](_0xc3a42));if(_0xc3a42[_0x2162('0x22')]){if(_0xc3a42[_0x2162('0x22')]['code']===0x1f4){logger[_0x2162('0x22')](_0x2162('0x1f'),_0x152f18,_0xc3a42['error'][_0x2162('0x23')]);return _0x1952aa(_0xc3a42[_0x2162('0x22')][_0x2162('0x23')]);}logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x152f18,_0xc3a42[_0x2162('0x22')][_0x2162('0x23')]);return _0x54006a(_0xc3a42['error'][_0x2162('0x23')]);}else{logger[_0x2162('0x24')](_0x2162('0x1f'),_0x152f18,_0x2162('0x20'));_0x54006a(_0xc3a42[_0x2162('0x25')][_0x2162('0x23')]);}})[_0x2162('0x26')](function(_0x16dddd){logger[_0x2162('0x22')](_0x2162('0x1f'),_0x152f18,_0x16dddd);_0x1952aa(_0x16dddd);});});}function respondWithStatusCode(_0x5565c5,_0x35f804){_0x35f804=_0x35f804||0xcc;return function(_0x45d4f7){if(_0x45d4f7){return _0x5565c5['sendStatus'](_0x35f804);}return _0x5565c5[_0x2162('0x27')](_0x35f804)[_0x2162('0x28')]();};}function respondWithResult(_0x30c5c6,_0x2a98d3){_0x2a98d3=_0x2a98d3||0xc8;return function(_0x11d0bc){if(_0x11d0bc){return _0x30c5c6[_0x2162('0x27')](_0x2a98d3)[_0x2162('0x29')](_0x11d0bc);}};}function respondWithFilteredResult(_0x583657,_0x289dbd){return function(_0x6cabf1){if(_0x6cabf1){var _0x4a5147=typeof _0x289dbd[_0x2162('0x2a')]===_0x2162('0x2b')&&typeof _0x289dbd[_0x2162('0x2c')]===_0x2162('0x2b');var _0x3fa077=_0x6cabf1[_0x2162('0x2d')];var _0x555f35=_0x4a5147?0x0:_0x289dbd[_0x2162('0x2a')];var _0x1ae39d=_0x4a5147?_0x6cabf1[_0x2162('0x2d')]:_0x289dbd[_0x2162('0x2a')]+_0x289dbd[_0x2162('0x2c')];var _0x3dd8f7;if(_0x1ae39d>=_0x3fa077){_0x1ae39d=_0x3fa077;_0x3dd8f7=0xc8;}else{_0x3dd8f7=0xce;}_0x583657['status'](_0x3dd8f7);return _0x583657[_0x2162('0x2e')](_0x2162('0x2f'),_0x555f35+'-'+_0x1ae39d+'/'+_0x3fa077)[_0x2162('0x29')](_0x6cabf1);}return null;};}function patchUpdates(_0x5e43d1){return function(_0x33a007){try{jsonpatch[_0x2162('0x30')](_0x33a007,_0x5e43d1,!![]);}catch(_0xf9f145){return BPromise[_0x2162('0x31')](_0xf9f145);}return _0x33a007['save']();};}function saveUpdates(_0x269d1d,_0x48f24f){return function(_0x5af20d){if(_0x5af20d){return _0x5af20d[_0x2162('0x32')](_0x269d1d)[_0x2162('0x1e')](function(_0x352dca){return _0x352dca;});}return null;};}function removeEntity(_0x2f40fa,_0x2095d2){return function(_0x172786){if(_0x172786){return _0x172786['destroy']()[_0x2162('0x1e')](function(){_0x2f40fa[_0x2162('0x27')](0xcc)[_0x2162('0x28')]();});}};}function handleEntityNotFound(_0x48ffcf,_0x5edb24){return function(_0x52cf44){if(!_0x52cf44){_0x48ffcf[_0x2162('0x33')](0x194);}return _0x52cf44;};}function handleError(_0x21277c,_0x3d865b){_0x3d865b=_0x3d865b||0x1f4;return function(_0x29f4dd){logger[_0x2162('0x22')](_0x29f4dd['stack']);if(_0x29f4dd[_0x2162('0x34')]){delete _0x29f4dd['name'];}_0x21277c['status'](_0x3d865b)[_0x2162('0x35')](_0x29f4dd);};}exports[_0x2162('0x36')]=function(_0x8e7548,_0x48cc60){var _0x2efb01={},_0x419868={},_0x529b9f={'count':0x0,'rows':[]};var _0x3c90c9=_[_0x2162('0x37')](db[_0x2162('0x38')]['rawAttributes'],function(_0x4803bc){return{'name':_0x4803bc['fieldName'],'type':_0x4803bc[_0x2162('0x39')][_0x2162('0x3a')]};});_0x419868[_0x2162('0x3b')]=_[_0x2162('0x37')](_0x3c90c9,_0x2162('0x34'));_0x419868[_0x2162('0x3c')]=_[_0x2162('0x3d')](_0x8e7548[_0x2162('0x3c')]);_0x419868['filters']=_['intersection'](_0x419868[_0x2162('0x3b')],_0x419868[_0x2162('0x3c')]);_0x2efb01[_0x2162('0x3e')]=_[_0x2162('0x3f')](_0x419868[_0x2162('0x3b')],qs[_0x2162('0x40')](_0x8e7548[_0x2162('0x3c')]['fields']));_0x2efb01[_0x2162('0x3e')]=_0x2efb01[_0x2162('0x3e')]['length']?_0x2efb01[_0x2162('0x3e')]:_0x419868[_0x2162('0x3b')];if(!_0x8e7548[_0x2162('0x3c')][_0x2162('0x41')](_0x2162('0x42'))){_0x2efb01['limit']=qs['limit'](_0x8e7548[_0x2162('0x3c')][_0x2162('0x2c')]);_0x2efb01[_0x2162('0x2a')]=qs[_0x2162('0x2a')](_0x8e7548[_0x2162('0x3c')]['offset']);}_0x2efb01['order']=qs[_0x2162('0x43')](_0x8e7548[_0x2162('0x3c')][_0x2162('0x43')]);_0x2efb01[_0x2162('0x44')]=qs[_0x2162('0x45')](_[_0x2162('0x46')](_0x8e7548[_0x2162('0x3c')],_0x419868[_0x2162('0x45')]),_0x3c90c9);if(_0x8e7548['query'][_0x2162('0x47')]){_0x2efb01['where']=_[_0x2162('0x48')](_0x2efb01['where'],{'$or':_[_0x2162('0x37')](_0x3c90c9,function(_0x4efed5){if(_0x4efed5[_0x2162('0x39')]!==_0x2162('0x49')){var _0x288f26={};_0x288f26[_0x4efed5[_0x2162('0x34')]]={'$like':'%'+_0x8e7548[_0x2162('0x3c')][_0x2162('0x47')]+'%'};return _0x288f26;}})});}_0x2efb01=_[_0x2162('0x48')]({},_0x2efb01,_0x8e7548[_0x2162('0x4a')]);var _0x4572f7={'where':_0x2efb01[_0x2162('0x44')]};return db[_0x2162('0x38')][_0x2162('0x2d')](_0x4572f7)['then'](function(_0x34cc45){_0x529b9f[_0x2162('0x2d')]=_0x34cc45;if(_0x8e7548[_0x2162('0x3c')][_0x2162('0x4b')]){_0x2efb01[_0x2162('0x4c')]=[{'all':!![]}];}return db[_0x2162('0x38')]['findAll'](_0x2efb01);})[_0x2162('0x1e')](function(_0x2f0630){_0x529b9f[_0x2162('0x4d')]=_0x2f0630;return _0x529b9f;})['then'](respondWithFilteredResult(_0x48cc60,_0x2efb01))[_0x2162('0x26')](handleError(_0x48cc60,null));};exports[_0x2162('0x4e')]=function(_0x19d456,_0x19a1fd){var _0xdbca5c={'raw':!![],'where':{'id':_0x19d456[_0x2162('0x4f')]['id']}},_0xea33b4={};_0xea33b4[_0x2162('0x3b')]=_[_0x2162('0x3d')](db[_0x2162('0x38')][_0x2162('0x50')]);_0xea33b4[_0x2162('0x3c')]=_[_0x2162('0x3d')](_0x19d456[_0x2162('0x3c')]);_0xea33b4['filters']=_[_0x2162('0x3f')](_0xea33b4[_0x2162('0x3b')],_0xea33b4['query']);_0xdbca5c[_0x2162('0x3e')]=_[_0x2162('0x3f')](_0xea33b4[_0x2162('0x3b')],qs[_0x2162('0x40')](_0x19d456['query']['fields']));_0xdbca5c[_0x2162('0x3e')]=_0xdbca5c[_0x2162('0x3e')][_0x2162('0x51')]?_0xdbca5c['attributes']:_0xea33b4[_0x2162('0x3b')];if(_0x19d456[_0x2162('0x3c')][_0x2162('0x4b')]){_0xdbca5c['include']=[{'all':!![]}];}_0xdbca5c=_['merge']({},_0xdbca5c,_0x19d456[_0x2162('0x4a')]);return db['OpenchannelMessage'][_0x2162('0x52')](_0xdbca5c)[_0x2162('0x1e')](handleEntityNotFound(_0x19a1fd,null))[_0x2162('0x1e')](respondWithResult(_0x19a1fd,null))[_0x2162('0x26')](handleError(_0x19a1fd,null));};exports['create']=function(_0x5de907,_0x1427c8){return db['OpenchannelMessage']['create'](_0x5de907[_0x2162('0x53')],{})[_0x2162('0x1e')](respondWithResult(_0x1427c8,0xc9))['catch'](handleError(_0x1427c8,null));};exports['update']=function(_0x6a6a19,_0x487050){if(_0x6a6a19[_0x2162('0x53')]['id']){delete _0x6a6a19[_0x2162('0x53')]['id'];}return db[_0x2162('0x38')][_0x2162('0x52')]({'where':{'id':_0x6a6a19[_0x2162('0x4f')]['id']}})[_0x2162('0x1e')](handleEntityNotFound(_0x487050,null))[_0x2162('0x1e')](saveUpdates(_0x6a6a19[_0x2162('0x53')],null))[_0x2162('0x1e')](respondWithResult(_0x487050,null))[_0x2162('0x26')](handleError(_0x487050,null));};exports[_0x2162('0x54')]=function(_0x39f225,_0x1bc414){return db['OpenchannelMessage'][_0x2162('0x52')]({'where':{'id':_0x39f225[_0x2162('0x4f')]['id']}})[_0x2162('0x1e')](handleEntityNotFound(_0x1bc414,null))[_0x2162('0x1e')](removeEntity(_0x1bc414,null))[_0x2162('0x26')](handleError(_0x1bc414,null));};exports[_0x2162('0x55')]=function(_0x195035,_0x12f11d){return db[_0x2162('0x38')]['describe']()[_0x2162('0x1e')](respondWithResult(_0x12f11d,null))[_0x2162('0x26')](handleError(_0x12f11d,null));};var interaction_log=require(_0x2162('0x12'))(_0x2162('0x56'));exports[_0x2162('0x57')]=function(_0xf8f979,_0x3dbcef,_0x56586b){var _0x4b5dc5={'agent':{},'channel':_0x2162('0x58')};if(_0xf8f979[_0x2162('0x53')]['id']){delete _0xf8f979[_0x2162('0x53')]['id'];}_0xf8f979[_0x2162('0x53')][_0x2162('0x59')]=!![];_0xf8f979['body']['readAt']=moment()[_0x2162('0x5a')](_0x2162('0x5b'));_0xf8f979[_0x2162('0x53')]['UserId']=_0xf8f979[_0x2162('0x53')][_0x2162('0x5c')]||_0xf8f979['user']['id'];_0x4b5dc5[_0x2162('0x5d')]['id']=_0xf8f979[_0x2162('0x53')][_0x2162('0x5c')];return db[_0x2162('0x38')][_0x2162('0x52')]({'where':{'id':_0xf8f979[_0x2162('0x4f')]['id'],'UserId':null}})[_0x2162('0x1e')](handleEntityNotFound(_0x3dbcef,null))['then'](saveUpdates(_0xf8f979['body'],null))['then'](function(_0x3da660){if(_0x3da660){_0x4b5dc5[_0x2162('0x23')]=_0x3da660[_0x2162('0x5e')]({'plain':!![]});return db[_0x2162('0x5f')]['find']({'where':{'id':_0x3da660[_0x2162('0x60')]}});}return null;})[_0x2162('0x1e')](handleEntityNotFound(_0x3dbcef,null))[_0x2162('0x1e')](function(_0x19ba60){if(_0x19ba60){return _0x19ba60[_0x2162('0x32')]({'UserId':_0xf8f979[_0x2162('0x53')][_0x2162('0x5c')],'read1stAt':_[_0x2162('0x61')](_0x19ba60[_0x2162('0x62')])?moment()['format'](_0x2162('0x5b')):undefined});}return null;})[_0x2162('0x1e')](function(_0x12b638){if(_0x12b638){_0x4b5dc5[_0x2162('0x63')]=_0x12b638[_0x2162('0x5e')]({'plain':!![]});interaction_log[_0x2162('0x24')]('[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0xf8f979[_0x2162('0x64')]['id'],_0xf8f979[_0x2162('0x64')]['name'],_0xf8f979[_0x2162('0x64')][_0x2162('0x65')],_0x4b5dc5['interaction']['id'],_0xf8f979['body']?JSON[_0x2162('0x21')](_0xf8f979[_0x2162('0x53')]):_0x2162('0x66'));return respondWithRpcPromise(_0x2162('0x67'),'acceptMessage',_0x4b5dc5);}return null;})[_0x2162('0x1e')](function(_0x3ac002){var _0x2db081=_0x2162('0x68')+_0x3ac002[_0x2162('0x23')][_0x2162('0x69')];return db[_0x2162('0x6a')][_0x2162('0x3c')](_0x2db081,{'type':db[_0x2162('0x6b')]['QueryTypes'][_0x2162('0x6c')],'raw':!![]})[_0x2162('0x1e')](function(_0x1851d8){return _0x1851d8;});})[_0x2162('0x1e')](function(_0x5f1cc1){if(_0x5f1cc1){_0x4b5dc5['message'][_0x2162('0x6d')]=_0x5f1cc1[0x0];if(!_0xf8f979[_0x2162('0x53')][_0x2162('0x5c')])return;return db[_0x2162('0x6e')]['find']({'where':{'id':_0xf8f979[_0x2162('0x53')][_0x2162('0x5c')],'role':_0x2162('0x5d')},'attributes':['id','name',_0x2162('0x6f'),_0x2162('0x70'),_0x2162('0x71')],'raw':!![]});}return null;})[_0x2162('0x1e')](function(_0x523474){if(!_0x523474)return null;_0x4b5dc5[_0x2162('0x23')]['agent']=_0x523474;return _0x4b5dc5;})[_0x2162('0x1e')](function(_0x5c7722){if(_0x5c7722){if(_0xf8f979['body']['manual']){_0x4b5dc5[_0x2162('0x23')]['interface']=util['format']('SIP/%s',_0xf8f979['user']['name']);_0x4b5dc5[_0x2162('0x23')][_0x2162('0x72')]=_0x4b5dc5[_0x2162('0x72')];_0x4b5dc5[_0x2162('0x23')]['motionChannel']=_0x4b5dc5['channel'];_0x4b5dc5[_0x2162('0x23')][_0x2162('0x73')]='accept';return respondWithRpcPromise(_0x2162('0x74'),'EventManager',{'event':_0x2162('0x75'),'message':_0x4b5dc5['message']},client9002)[_0x2162('0x1e')](function(){return _0x4b5dc5;});}return _0x4b5dc5;}return null;})[_0x2162('0x1e')](respondWithResult(_0x3dbcef,null))['catch'](handleError(_0x3dbcef,null));};var interaction_log=require(_0x2162('0x12'))(_0x2162('0x56'));exports[_0x2162('0x31')]=function(_0x550b32,_0x4e7970,_0x1f54bd){var _0x4cfe0e={'agent':{},'channel':_0x2162('0x58')};if(_0x550b32[_0x2162('0x53')]['id']){delete _0x550b32[_0x2162('0x53')]['id'];}_0x550b32[_0x2162('0x53')][_0x2162('0x5c')]=_0x550b32[_0x2162('0x53')][_0x2162('0x5c')]||_0x550b32[_0x2162('0x64')]['id'];_0x4cfe0e[_0x2162('0x5d')]['id']=_0x550b32[_0x2162('0x53')][_0x2162('0x5c')];return db['OpenchannelMessage'][_0x2162('0x52')]({'where':{'id':_0x550b32['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x4e7970,null))['then'](function(_0x1c8724){if(_0x1c8724){_0x4cfe0e[_0x2162('0x23')]=_0x1c8724[_0x2162('0x5e')]({'plain':!![]});return db['OpenchannelInteraction'][_0x2162('0x52')]({'where':{'id':_0x1c8724[_0x2162('0x60')]}});}return null;})['then'](handleEntityNotFound(_0x4e7970,null))[_0x2162('0x1e')](function(_0x1c8254){if(_0x1c8254){_0x4cfe0e[_0x2162('0x63')]=_0x1c8254[_0x2162('0x5e')]({'plain':!![]});interaction_log[_0x2162('0x24')]('[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x550b32[_0x2162('0x64')]['id'],_0x550b32[_0x2162('0x64')][_0x2162('0x34')],_0x550b32[_0x2162('0x64')][_0x2162('0x65')],_0x4cfe0e['interaction']['id'],_0x550b32[_0x2162('0x53')]?JSON[_0x2162('0x21')](_0x550b32[_0x2162('0x53')]):_0x2162('0x66'));return respondWithRpcPromise(_0x2162('0x76'),'rejectMessage',_0x4cfe0e);}return null;})[_0x2162('0x1e')](function(_0x42d57e){var _0x40f5ae=_0x2162('0x68')+_0x42d57e[_0x2162('0x23')][_0x2162('0x69')];return db[_0x2162('0x6a')]['query'](_0x40f5ae,{'type':db[_0x2162('0x6b')][_0x2162('0x77')][_0x2162('0x6c')],'raw':!![]})['then'](function(_0x1a3373){return _0x1a3373;});})[_0x2162('0x1e')](function(_0x3ba26b){if(_0x3ba26b){_0x4cfe0e[_0x2162('0x23')]['contact']=_0x3ba26b[0x0];if(!_0x550b32[_0x2162('0x53')]['UserId'])return;return db[_0x2162('0x6e')][_0x2162('0x52')]({'where':{'id':_0x550b32[_0x2162('0x53')][_0x2162('0x5c')],'role':_0x2162('0x5d')},'attributes':['id',_0x2162('0x34'),'fullname',_0x2162('0x70'),_0x2162('0x71')],'raw':!![]});}return null;})['then'](function(_0x16cc1c){if(!_0x16cc1c)return null;_0x4cfe0e[_0x2162('0x23')]['agent']=_0x16cc1c;return _0x4cfe0e;})['then'](function(_0xd964ef){if(_0xd964ef){_0xd964ef[_0x2162('0x23')]['interface']=util['format'](_0x2162('0x78'),_0x550b32[_0x2162('0x64')]['name']);_0xd964ef[_0x2162('0x23')][_0x2162('0x72')]=_0x4cfe0e[_0x2162('0x72')];_0xd964ef[_0x2162('0x23')]['motionChannel']=_0x4cfe0e[_0x2162('0x72')];_0xd964ef[_0x2162('0x23')][_0x2162('0x73')]=_0x2162('0x31');respondWithRpcPromise(_0x2162('0x74'),_0x2162('0x74'),{'event':_0x2162('0x79'),'message':_0xd964ef[_0x2162('0x23')]},client9002);return _0x4cfe0e;}return null;})[_0x2162('0x1e')](respondWithResult(_0x4e7970,null))[_0x2162('0x26')](handleError(_0x4e7970,null));};
\ No newline at end of file
+var _0xdc1a=['accept','read','readAt','format','UserId','user','OpenchannelInteractionId','isNil','read1stAt','YYYY-MM-DD\x20HH:mm:ss','interaction','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','contact','User','agent','email','internal','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','get','OpenchannelInteraction','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','RejectMessage','rejectMessage','ContactId','SELECT','fullname','rejectmessage','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./openchannelMessage.socket','register','http','client','request','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','sendStatus','status','end','limit','undefined','count','offset','set','Content-Range','json','apply','reject','save','update','then','destroy','stack','name','send','index','map','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','OpenchannelMessage','includeAll','include','findAll','show','params','find','body','describe','openchannel-interactions'];(function(_0x4bf520,_0x1d2e51){var _0x5bee55=function(_0x2149a4){while(--_0x2149a4){_0x4bf520['push'](_0x4bf520['shift']());}};_0x5bee55(++_0x1d2e51);}(_0xdc1a,0x12f));var _0xadc1=function(_0x213b00,_0x492a82){_0x213b00=_0x213b00-0x0;var _0x348dcc=_0xdc1a[_0x213b00];return _0x348dcc;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xadc1('0x0'));var jsonpatch=require(_0xadc1('0x1'));var rp=require('request-promise');var moment=require(_0xadc1('0x2'));var BPromise=require(_0xadc1('0x3'));var Mustache=require(_0xadc1('0x4'));var util=require('util');var path=require(_0xadc1('0x5'));var sox=require(_0xadc1('0x6'));var csv=require(_0xadc1('0x7'));var ejs=require(_0xadc1('0x8'));var fs=require('fs');var fs_extra=require(_0xadc1('0x9'));var _=require(_0xadc1('0xa'));var squel=require(_0xadc1('0xb'));var crypto=require(_0xadc1('0xc'));var jsforce=require(_0xadc1('0xd'));var deskjs=require(_0xadc1('0xe'));var toCsv=require(_0xadc1('0x7'));var querystring=require(_0xadc1('0xf'));var Papa=require(_0xadc1('0x10'));var Redis=require(_0xadc1('0x11'));var authService=require(_0xadc1('0x12'));var qs=require(_0xadc1('0x13'));var as=require(_0xadc1('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xadc1('0x15'))(_0xadc1('0x16'));var utils=require('../../config/utils');var config=require(_0xadc1('0x17'));var licenseUtil=require(_0xadc1('0x18'));var db=require(_0xadc1('0x19'))['db'];config['redis']=_[_0xadc1('0x1a')](config[_0xadc1('0x1b')],{'host':_0xadc1('0x1c'),'port':0x18eb});var socket=require(_0xadc1('0x1d'))(new Redis(config[_0xadc1('0x1b')]));require(_0xadc1('0x1e'))[_0xadc1('0x1f')](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0xadc1('0x20')]({'port':0x232c});var client9002=jayson[_0xadc1('0x21')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4fe6f3,_0x533f4f,_0x59582d,_0x5c17dc){return new BPromise(function(_0x10fd89,_0x469e14){var _0x2322c2=_0x5c17dc||client;return _0x2322c2[_0xadc1('0x22')](_0x4fe6f3,_0x59582d)['then'](function(_0x8e9009){logger[_0xadc1('0x23')](_0xadc1('0x24'),_0x533f4f,_0xadc1('0x25'));logger[_0xadc1('0x26')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x533f4f,_0xadc1('0x25'),JSON[_0xadc1('0x27')](_0x8e9009));if(_0x8e9009[_0xadc1('0x28')]){if(_0x8e9009[_0xadc1('0x28')]['code']===0x1f4){logger[_0xadc1('0x28')](_0xadc1('0x24'),_0x533f4f,_0x8e9009['error'][_0xadc1('0x29')]);return _0x469e14(_0x8e9009[_0xadc1('0x28')][_0xadc1('0x29')]);}logger[_0xadc1('0x28')](_0xadc1('0x24'),_0x533f4f,_0x8e9009['error'][_0xadc1('0x29')]);return _0x10fd89(_0x8e9009['error'][_0xadc1('0x29')]);}else{logger['info']('OpenchannelMessage,\x20%s,\x20%s',_0x533f4f,'request\x20sent');_0x10fd89(_0x8e9009[_0xadc1('0x2a')]['message']);}})[_0xadc1('0x2b')](function(_0x3118aa){logger['error'](_0xadc1('0x24'),_0x533f4f,_0x3118aa);_0x469e14(_0x3118aa);});});}function respondWithStatusCode(_0x4e5ea0,_0x508aee){_0x508aee=_0x508aee||0xcc;return function(_0x442756){if(_0x442756){return _0x4e5ea0[_0xadc1('0x2c')](_0x508aee);}return _0x4e5ea0[_0xadc1('0x2d')](_0x508aee)[_0xadc1('0x2e')]();};}function respondWithResult(_0x2184a4,_0x52fcd0){_0x52fcd0=_0x52fcd0||0xc8;return function(_0x46642a){if(_0x46642a){return _0x2184a4[_0xadc1('0x2d')](_0x52fcd0)['json'](_0x46642a);}};}function respondWithFilteredResult(_0x132272,_0x25780d){return function(_0x29dca5){if(_0x29dca5){var _0x12e8e9=typeof _0x25780d['offset']==='undefined'&&typeof _0x25780d[_0xadc1('0x2f')]===_0xadc1('0x30');var _0x2e0777=_0x29dca5[_0xadc1('0x31')];var _0x47d804=_0x12e8e9?0x0:_0x25780d['offset'];var _0x3588fd=_0x12e8e9?_0x29dca5[_0xadc1('0x31')]:_0x25780d[_0xadc1('0x32')]+_0x25780d[_0xadc1('0x2f')];var _0x500c7b;if(_0x3588fd>=_0x2e0777){_0x3588fd=_0x2e0777;_0x500c7b=0xc8;}else{_0x500c7b=0xce;}_0x132272[_0xadc1('0x2d')](_0x500c7b);return _0x132272[_0xadc1('0x33')](_0xadc1('0x34'),_0x47d804+'-'+_0x3588fd+'/'+_0x2e0777)[_0xadc1('0x35')](_0x29dca5);}return null;};}function patchUpdates(_0x1cd7ef){return function(_0x51f5d8){try{jsonpatch[_0xadc1('0x36')](_0x51f5d8,_0x1cd7ef,!![]);}catch(_0x31a066){return BPromise[_0xadc1('0x37')](_0x31a066);}return _0x51f5d8[_0xadc1('0x38')]();};}function saveUpdates(_0x56032d,_0x3500f6){return function(_0x40ef84){if(_0x40ef84){return _0x40ef84[_0xadc1('0x39')](_0x56032d)[_0xadc1('0x3a')](function(_0x49833e){return _0x49833e;});}return null;};}function removeEntity(_0x4563df,_0x409080){return function(_0x37518d){if(_0x37518d){return _0x37518d[_0xadc1('0x3b')]()[_0xadc1('0x3a')](function(){_0x4563df[_0xadc1('0x2d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x344a54,_0x258dc8){return function(_0x53cb31){if(!_0x53cb31){_0x344a54[_0xadc1('0x2c')](0x194);}return _0x53cb31;};}function handleError(_0x166b85,_0x2c2700){_0x2c2700=_0x2c2700||0x1f4;return function(_0x21d4bc){logger['error'](_0x21d4bc[_0xadc1('0x3c')]);if(_0x21d4bc[_0xadc1('0x3d')]){delete _0x21d4bc[_0xadc1('0x3d')];}_0x166b85[_0xadc1('0x2d')](_0x2c2700)[_0xadc1('0x3e')](_0x21d4bc);};}exports[_0xadc1('0x3f')]=function(_0x5f3723,_0x2a9661){var _0x46438a={},_0xb58a8b={},_0x5a145d={'count':0x0,'rows':[]};var _0x5c2008=_[_0xadc1('0x40')](db['OpenchannelMessage']['rawAttributes'],function(_0x3c43f9){return{'name':_0x3c43f9['fieldName'],'type':_0x3c43f9[_0xadc1('0x41')][_0xadc1('0x42')]};});_0xb58a8b[_0xadc1('0x43')]=_[_0xadc1('0x40')](_0x5c2008,_0xadc1('0x3d'));_0xb58a8b[_0xadc1('0x44')]=_[_0xadc1('0x45')](_0x5f3723[_0xadc1('0x44')]);_0xb58a8b[_0xadc1('0x46')]=_[_0xadc1('0x47')](_0xb58a8b[_0xadc1('0x43')],_0xb58a8b[_0xadc1('0x44')]);_0x46438a[_0xadc1('0x48')]=_[_0xadc1('0x47')](_0xb58a8b[_0xadc1('0x43')],qs[_0xadc1('0x49')](_0x5f3723['query']['fields']));_0x46438a['attributes']=_0x46438a[_0xadc1('0x48')][_0xadc1('0x4a')]?_0x46438a['attributes']:_0xb58a8b['model'];if(!_0x5f3723[_0xadc1('0x44')][_0xadc1('0x4b')](_0xadc1('0x4c'))){_0x46438a[_0xadc1('0x2f')]=qs[_0xadc1('0x2f')](_0x5f3723[_0xadc1('0x44')]['limit']);_0x46438a[_0xadc1('0x32')]=qs[_0xadc1('0x32')](_0x5f3723[_0xadc1('0x44')]['offset']);}_0x46438a['order']=qs[_0xadc1('0x4d')](_0x5f3723['query'][_0xadc1('0x4d')]);_0x46438a[_0xadc1('0x4e')]=qs[_0xadc1('0x46')](_['pick'](_0x5f3723[_0xadc1('0x44')],_0xb58a8b[_0xadc1('0x46')]),_0x5c2008);if(_0x5f3723[_0xadc1('0x44')][_0xadc1('0x4f')]){_0x46438a['where']=_[_0xadc1('0x50')](_0x46438a[_0xadc1('0x4e')],{'$or':_[_0xadc1('0x40')](_0x5c2008,function(_0x4ad9e3){if(_0x4ad9e3[_0xadc1('0x41')]!==_0xadc1('0x51')){var _0x2fa3ec={};_0x2fa3ec[_0x4ad9e3[_0xadc1('0x3d')]]={'$like':'%'+_0x5f3723['query']['filter']+'%'};return _0x2fa3ec;}})});}_0x46438a=_['merge']({},_0x46438a,_0x5f3723[_0xadc1('0x52')]);var _0x2b4da5={'where':_0x46438a[_0xadc1('0x4e')]};return db[_0xadc1('0x53')][_0xadc1('0x31')](_0x2b4da5)['then'](function(_0xdf0ac3){_0x5a145d[_0xadc1('0x31')]=_0xdf0ac3;if(_0x5f3723[_0xadc1('0x44')][_0xadc1('0x54')]){_0x46438a[_0xadc1('0x55')]=[{'all':!![]}];}return db[_0xadc1('0x53')][_0xadc1('0x56')](_0x46438a);})[_0xadc1('0x3a')](function(_0x8e6002){_0x5a145d['rows']=_0x8e6002;return _0x5a145d;})[_0xadc1('0x3a')](respondWithFilteredResult(_0x2a9661,_0x46438a))[_0xadc1('0x2b')](handleError(_0x2a9661,null));};exports[_0xadc1('0x57')]=function(_0x388f93,_0x1fd9ad){var _0x93141f={'raw':!![],'where':{'id':_0x388f93[_0xadc1('0x58')]['id']}},_0x4951ff={};_0x4951ff['model']=_[_0xadc1('0x45')](db['OpenchannelMessage']['rawAttributes']);_0x4951ff['query']=_[_0xadc1('0x45')](_0x388f93['query']);_0x4951ff[_0xadc1('0x46')]=_[_0xadc1('0x47')](_0x4951ff[_0xadc1('0x43')],_0x4951ff[_0xadc1('0x44')]);_0x93141f[_0xadc1('0x48')]=_['intersection'](_0x4951ff[_0xadc1('0x43')],qs[_0xadc1('0x49')](_0x388f93[_0xadc1('0x44')]['fields']));_0x93141f[_0xadc1('0x48')]=_0x93141f['attributes'][_0xadc1('0x4a')]?_0x93141f['attributes']:_0x4951ff[_0xadc1('0x43')];if(_0x388f93[_0xadc1('0x44')][_0xadc1('0x54')]){_0x93141f[_0xadc1('0x55')]=[{'all':!![]}];}_0x93141f=_['merge']({},_0x93141f,_0x388f93[_0xadc1('0x52')]);return db[_0xadc1('0x53')][_0xadc1('0x59')](_0x93141f)[_0xadc1('0x3a')](handleEntityNotFound(_0x1fd9ad,null))[_0xadc1('0x3a')](respondWithResult(_0x1fd9ad,null))[_0xadc1('0x2b')](handleError(_0x1fd9ad,null));};exports['create']=function(_0x24e710,_0x26f601){return db[_0xadc1('0x53')]['create'](_0x24e710[_0xadc1('0x5a')],{})[_0xadc1('0x3a')](respondWithResult(_0x26f601,0xc9))[_0xadc1('0x2b')](handleError(_0x26f601,null));};exports[_0xadc1('0x39')]=function(_0x5d69ba,_0xe165a){if(_0x5d69ba[_0xadc1('0x5a')]['id']){delete _0x5d69ba[_0xadc1('0x5a')]['id'];}return db[_0xadc1('0x53')]['find']({'where':{'id':_0x5d69ba['params']['id']}})[_0xadc1('0x3a')](handleEntityNotFound(_0xe165a,null))['then'](saveUpdates(_0x5d69ba['body'],null))[_0xadc1('0x3a')](respondWithResult(_0xe165a,null))[_0xadc1('0x2b')](handleError(_0xe165a,null));};exports[_0xadc1('0x3b')]=function(_0x4cbc2a,_0x5b9eae){return db['OpenchannelMessage'][_0xadc1('0x59')]({'where':{'id':_0x4cbc2a[_0xadc1('0x58')]['id']}})[_0xadc1('0x3a')](handleEntityNotFound(_0x5b9eae,null))[_0xadc1('0x3a')](removeEntity(_0x5b9eae,null))[_0xadc1('0x2b')](handleError(_0x5b9eae,null));};exports[_0xadc1('0x5b')]=function(_0x5ccd20,_0x504011){return db['OpenchannelMessage'][_0xadc1('0x5b')]()[_0xadc1('0x3a')](respondWithResult(_0x504011,null))[_0xadc1('0x2b')](handleError(_0x504011,null));};var interaction_log=require(_0xadc1('0x15'))(_0xadc1('0x5c'));exports[_0xadc1('0x5d')]=function(_0x2b3432,_0x34c081,_0x25f301){var _0x116536={'agent':{},'channel':'openchannel'};if(_0x2b3432[_0xadc1('0x5a')]['id']){delete _0x2b3432['body']['id'];}_0x2b3432['body'][_0xadc1('0x5e')]=!![];_0x2b3432['body'][_0xadc1('0x5f')]=moment()[_0xadc1('0x60')]('YYYY-MM-DD\x20HH:mm:ss');_0x2b3432[_0xadc1('0x5a')]['UserId']=_0x2b3432[_0xadc1('0x5a')][_0xadc1('0x61')]||_0x2b3432[_0xadc1('0x62')]['id'];_0x116536['agent']['id']=_0x2b3432['body'][_0xadc1('0x61')];return db['OpenchannelMessage'][_0xadc1('0x59')]({'where':{'id':_0x2b3432[_0xadc1('0x58')]['id'],'UserId':null}})[_0xadc1('0x3a')](handleEntityNotFound(_0x34c081,null))[_0xadc1('0x3a')](saveUpdates(_0x2b3432[_0xadc1('0x5a')],null))[_0xadc1('0x3a')](function(_0x4a911f){if(_0x4a911f){_0x116536['message']=_0x4a911f['get']({'plain':!![]});return db['OpenchannelInteraction'][_0xadc1('0x59')]({'where':{'id':_0x4a911f[_0xadc1('0x63')]}});}return null;})['then'](handleEntityNotFound(_0x34c081,null))[_0xadc1('0x3a')](function(_0x419d3d){if(_0x419d3d){return _0x419d3d[_0xadc1('0x39')]({'UserId':_0x2b3432['body'][_0xadc1('0x61')],'read1stAt':_[_0xadc1('0x64')](_0x419d3d[_0xadc1('0x65')])?moment()[_0xadc1('0x60')](_0xadc1('0x66')):undefined});}return null;})['then'](function(_0x53e2ae){if(_0x53e2ae){_0x116536[_0xadc1('0x67')]=_0x53e2ae['get']({'plain':!![]});interaction_log['info'](_0xadc1('0x68'),_0x2b3432['user']['id'],_0x2b3432[_0xadc1('0x62')][_0xadc1('0x3d')],_0x2b3432[_0xadc1('0x62')]['role'],_0x116536[_0xadc1('0x67')]['id'],_0x2b3432[_0xadc1('0x5a')]?JSON[_0xadc1('0x27')](_0x2b3432['body']):_0xadc1('0x69'));return respondWithRpcPromise(_0xadc1('0x6a'),'acceptMessage',_0x116536);}return null;})[_0xadc1('0x3a')](function(_0x307770){var _0x30a460=_0xadc1('0x6b')+_0x307770['message']['ContactId'];return db[_0xadc1('0x6c')][_0xadc1('0x44')](_0x30a460,{'type':db[_0xadc1('0x6d')]['QueryTypes']['SELECT'],'raw':!![]})[_0xadc1('0x3a')](function(_0x362b4d){return _0x362b4d;});})[_0xadc1('0x3a')](function(_0x2d201c){if(_0x2d201c){_0x116536[_0xadc1('0x29')][_0xadc1('0x6e')]=_0x2d201c[0x0];if(!_0x2b3432[_0xadc1('0x5a')][_0xadc1('0x61')])return;return db[_0xadc1('0x6f')][_0xadc1('0x59')]({'where':{'id':_0x2b3432[_0xadc1('0x5a')][_0xadc1('0x61')],'role':_0xadc1('0x70')},'attributes':['id',_0xadc1('0x3d'),'fullname',_0xadc1('0x71'),_0xadc1('0x72')],'raw':!![]});}return null;})[_0xadc1('0x3a')](function(_0x2e7dff){if(!_0x2e7dff)return null;_0x116536['message'][_0xadc1('0x70')]=_0x2e7dff;return _0x116536;})[_0xadc1('0x3a')](function(_0x103cdc){if(_0x103cdc){if(_0x2b3432['body'][_0xadc1('0x73')]){_0x116536[_0xadc1('0x29')][_0xadc1('0x74')]=util['format'](_0xadc1('0x75'),_0x2b3432['user'][_0xadc1('0x3d')]);_0x116536['message'][_0xadc1('0x76')]=_0x116536[_0xadc1('0x76')];_0x116536['message'][_0xadc1('0x77')]='accept';return respondWithRpcPromise(_0xadc1('0x78'),_0xadc1('0x78'),{'event':_0xadc1('0x79'),'message':_0x116536[_0xadc1('0x29')]},client9002)[_0xadc1('0x3a')](function(){return _0x116536;});}return _0x116536;}return null;})['then'](respondWithResult(_0x34c081,null))['catch'](handleError(_0x34c081,null));};var interaction_log=require(_0xadc1('0x15'))(_0xadc1('0x5c'));exports['reject']=function(_0x2c43cf,_0x11b551,_0x14085a){var _0x40b7cf={'agent':{},'channel':'openchannel'};if(_0x2c43cf[_0xadc1('0x5a')]['id']){delete _0x2c43cf['body']['id'];}_0x2c43cf[_0xadc1('0x5a')][_0xadc1('0x61')]=_0x2c43cf[_0xadc1('0x5a')][_0xadc1('0x61')]||_0x2c43cf['user']['id'];_0x40b7cf[_0xadc1('0x70')]['id']=_0x2c43cf[_0xadc1('0x5a')][_0xadc1('0x61')];return db[_0xadc1('0x53')][_0xadc1('0x59')]({'where':{'id':_0x2c43cf[_0xadc1('0x58')]['id'],'UserId':null}})[_0xadc1('0x3a')](handleEntityNotFound(_0x11b551,null))[_0xadc1('0x3a')](function(_0x7db1b4){if(_0x7db1b4){_0x40b7cf[_0xadc1('0x29')]=_0x7db1b4[_0xadc1('0x7a')]({'plain':!![]});return db[_0xadc1('0x7b')][_0xadc1('0x59')]({'where':{'id':_0x7db1b4[_0xadc1('0x63')]}});}return null;})[_0xadc1('0x3a')](handleEntityNotFound(_0x11b551,null))[_0xadc1('0x3a')](function(_0x4b9b86){if(_0x4b9b86){_0x40b7cf[_0xadc1('0x67')]=_0x4b9b86[_0xadc1('0x7a')]({'plain':!![]});interaction_log[_0xadc1('0x23')](_0xadc1('0x7c'),_0x2c43cf[_0xadc1('0x62')]['id'],_0x2c43cf[_0xadc1('0x62')]['name'],_0x2c43cf['user'][_0xadc1('0x7d')],_0x40b7cf[_0xadc1('0x67')]['id'],_0x2c43cf[_0xadc1('0x5a')]?JSON['stringify'](_0x2c43cf[_0xadc1('0x5a')]):_0xadc1('0x69'));return respondWithRpcPromise(_0xadc1('0x7e'),_0xadc1('0x7f'),_0x40b7cf);}return null;})['then'](function(_0x493eee){var _0xda6e9e=_0xadc1('0x6b')+_0x493eee['message'][_0xadc1('0x80')];return db[_0xadc1('0x6c')][_0xadc1('0x44')](_0xda6e9e,{'type':db[_0xadc1('0x6d')]['QueryTypes'][_0xadc1('0x81')],'raw':!![]})[_0xadc1('0x3a')](function(_0x3a1fcd){return _0x3a1fcd;});})['then'](function(_0x102a52){if(_0x102a52){_0x40b7cf['message'][_0xadc1('0x6e')]=_0x102a52[0x0];if(!_0x2c43cf[_0xadc1('0x5a')][_0xadc1('0x61')])return;return db[_0xadc1('0x6f')][_0xadc1('0x59')]({'where':{'id':_0x2c43cf[_0xadc1('0x5a')][_0xadc1('0x61')],'role':'agent'},'attributes':['id',_0xadc1('0x3d'),_0xadc1('0x82'),_0xadc1('0x71'),_0xadc1('0x72')],'raw':!![]});}return null;})[_0xadc1('0x3a')](function(_0x338cf7){if(!_0x338cf7)return null;_0x40b7cf[_0xadc1('0x29')][_0xadc1('0x70')]=_0x338cf7;return _0x40b7cf;})['then'](function(_0x17d947){if(_0x17d947){_0x17d947[_0xadc1('0x29')][_0xadc1('0x74')]=util[_0xadc1('0x60')](_0xadc1('0x75'),_0x2c43cf[_0xadc1('0x62')][_0xadc1('0x3d')]);_0x17d947['message'][_0xadc1('0x76')]=_0x40b7cf[_0xadc1('0x76')];_0x17d947['message'][_0xadc1('0x77')]=_0xadc1('0x37');respondWithRpcPromise(_0xadc1('0x78'),'EventManager',{'event':_0xadc1('0x83'),'message':_0x17d947[_0xadc1('0x29')]},client9002);return _0x40b7cf;}return null;})[_0xadc1('0x3a')](respondWithResult(_0x11b551,null))['catch'](handleError(_0x11b551,null));};
\ No newline at end of file
index 74cc6ff..3dacfea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75ea=['exports','setMaxListeners','update','remove','emit'];(function(_0x465019,_0x4475eb){var _0x9127eb=function(_0x1f1042){while(--_0x1f1042){_0x465019['push'](_0x465019['shift']());}};_0x9127eb(++_0x4475eb);}(_0x75ea,0x14b));var _0xa75e=function(_0x4f55c7,_0x287ffe){_0x4f55c7=_0x4f55c7-0x0;var _0x407c7c=_0x75ea[_0x4f55c7];return _0x407c7c;};'use strict';var EventEmitter=require('events');var OpenchannelMessage=require('../../mysqldb')['db']['OpenchannelMessage'];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0xa75e('0x0')](0x0);var events={'afterCreate':'save','afterUpdate':_0xa75e('0x1'),'afterDestroy':_0xa75e('0x2')};function emitEvent(_0x3bd3ee){return function(_0x4c0f18,_0x393ff4,_0x44d895){OpenchannelMessageEvents['emit'](_0x3bd3ee+':'+_0x4c0f18['id'],_0x4c0f18);OpenchannelMessageEvents[_0xa75e('0x3')](_0x3bd3ee,_0x4c0f18);_0x44d895(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelMessage['hook'](e,emitEvent(event));}}module[_0xa75e('0x4')]=OpenchannelMessageEvents;
\ No newline at end of file
+var _0x4eda=['setMaxListeners','update','remove','emit','exports'];(function(_0xd81585,_0x54aa85){var _0x23e1c8=function(_0x1bf2bf){while(--_0x1bf2bf){_0xd81585['push'](_0xd81585['shift']());}};_0x23e1c8(++_0x54aa85);}(_0x4eda,0xa0));var _0xa4ed=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x4eda[_0x20a584];return _0x4b41a8;};'use strict';var EventEmitter=require('events');var OpenchannelMessage=require('../../mysqldb')['db']['OpenchannelMessage'];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0xa4ed('0x0')](0x0);var events={'afterCreate':'save','afterUpdate':_0xa4ed('0x1'),'afterDestroy':_0xa4ed('0x2')};function emitEvent(_0x4617aa){return function(_0x268269,_0x4cc1c9,_0x45904d){OpenchannelMessageEvents[_0xa4ed('0x3')](_0x4617aa+':'+_0x268269['id'],_0x268269);OpenchannelMessageEvents['emit'](_0x4617aa,_0x268269);_0x45904d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelMessage['hook'](e,emitEvent(event));}}module[_0xa4ed('0x4')]=OpenchannelMessageEvents;
\ No newline at end of file
index 6732194..c7776c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4a2=['OpenchannelInteractionId','then','createdAt','toLowerCase','catch','error','describe','OpenchannelAccount','Interactions','CmContact','Contact','keys','replyUri','info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','length','Interaction','omit','method','POST','threadId','update','inspect','finally','utf8mb4','lodash','api','bluebird','path','../../config/environment','./openchannelMessage.attributes','exports','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','body','FULLTEXT','models','get','direction','out','secret','isNil','UserId','OpenchannelInteraction','findOne'];(function(_0x583887,_0x166ee0){var _0x4934af=function(_0x5e13a4){while(--_0x5e13a4){_0x583887['push'](_0x583887['shift']());}};_0x4934af(++_0x166ee0);}(_0xd4a2,0x173));var _0x2d4a=function(_0x5b2e49,_0x2ee38e){_0x5b2e49=_0x5b2e49-0x0;var _0x501efa=_0xd4a2[_0x5b2e49];return _0x501efa;};'use strict';var _=require(_0x2d4a('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x2d4a('0x1'));var moment=require('moment');var BPromise=require(_0x2d4a('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2d4a('0x3'));var rimraf=require('rimraf');var config=require(_0x2d4a('0x4'));var attributes=require(_0x2d4a('0x5'));module[_0x2d4a('0x6')]=function(_0x3a88e2,_0x1ca10b){return _0x3a88e2['define'](_0x2d4a('0x7'),attributes,{'tableName':_0x2d4a('0x8'),'paranoid':![],'indexes':[{'name':_0x2d4a('0x9'),'fields':[_0x2d4a('0xa')],'type':_0x2d4a('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x535b2f,_0xb9f016,_0x113839){var _0x33b786=_0x3a88e2[_0x2d4a('0xc')];var _0x3abbbd=_0x535b2f[_0x2d4a('0xd')]({'plain':!![]});if(_0x3abbbd['direction']['toLowerCase']()==='in'||_0x3abbbd[_0x2d4a('0xe')]['toLowerCase']()===_0x2d4a('0xf')&&!_0x3abbbd[_0x2d4a('0x10')]&&!_[_0x2d4a('0x11')](_0x3abbbd[_0x2d4a('0x12')])){_0x33b786[_0x2d4a('0x13')][_0x2d4a('0x14')]({'where':{'id':_0x3abbbd[_0x2d4a('0x15')]}})[_0x2d4a('0x16')](function(_0x544622){if(_0x544622){_0x544622['update']({'lastMsgAt':_0x3abbbd[_0x2d4a('0x17')],'lastMsgDirection':_0x3abbbd['direction'][_0x2d4a('0x18')]()});}})[_0x2d4a('0x19')](function(_0x11896d){console[_0x2d4a('0x1a')](_0x11896d);});}if(_0x3abbbd['direction']===_0x2d4a('0xf')&&!_0x3abbbd['secret']){var _0x2838fa;_0x33b786['CmContact'][_0x2d4a('0x1b')]()[_0x2d4a('0x16')](function(_0x2188b2){return _0x33b786[_0x2d4a('0x1c')]['find']({'where':{'id':_0x3abbbd['OpenchannelAccountId']},'include':[{'model':_0x33b786['OpenchannelInteraction'],'as':_0x2d4a('0x1d'),'where':{'id':_0x3abbbd[_0x2d4a('0x15')]},'limit':0x1,'include':[{'model':_0x33b786[_0x2d4a('0x1e')],'as':_0x2d4a('0x1f'),'attributes':_[_0x2d4a('0x20')](_0x2188b2)}]}]});})[_0x2d4a('0x16')](function(_0x56445a){_0x2838fa=_0x56445a['get']({'plain':!![]});if(_0x2838fa&&_0x2838fa[_0x2d4a('0x21')]){logger[_0x2d4a('0x22')](_0x2d4a('0x23'),_0x2d4a('0x24'),util[_0x2d4a('0x25')](_0x2d4a('0x26'),_0x3abbbd['id'],_0x2838fa[_0x2d4a('0x21')]));if(_0x2838fa[_0x2d4a('0x1d')]&&_0x2838fa['Interactions'][_0x2d4a('0x27')]){_0x3abbbd[_0x2d4a('0x28')]=_[_0x2d4a('0x29')](_0x2838fa[_0x2d4a('0x1d')][0x0],_0x2d4a('0x1f'));_0x3abbbd[_0x2d4a('0x1f')]=_0x2838fa[_0x2d4a('0x1d')][0x0][_0x2d4a('0x1f')];}var _0xb9f016={'method':'POST','uri':encodeURI(_0x2838fa['replyUri']),'json':!![],'resolveWithFullResponse':!![]};switch(_0xb9f016[_0x2d4a('0x2a')]){case'GET':_0xb9f016['qs']=_0x3abbbd;break;case _0x2d4a('0x2b'):_0xb9f016[_0x2d4a('0xa')]=_0x3abbbd;break;}return rp(_0xb9f016)[_0x2d4a('0x16')](function(_0x1d2fa6){logger[_0x2d4a('0x22')](_0x2d4a('0x23'),_0x2d4a('0x24'),util[_0x2d4a('0x25')]('Message\x20%d\x20forwarded\x20to\x20%s',_0x3abbbd['id'],_0x2838fa[_0x2d4a('0x21')]));if(_0x1d2fa6['body'][_0x2d4a('0x2c')]&&_0x1d2fa6[_0x2d4a('0xa')][_0x2d4a('0x2c')]!=_0x3abbbd[_0x2d4a('0x28')][_0x2d4a('0x2c')]){return _0x33b786[_0x2d4a('0x13')][_0x2d4a('0x2d')]({'threadId':_0x1d2fa6[_0x2d4a('0xa')]['threadId']},{'logging':!![],'where':{'id':_0x3abbbd[_0x2d4a('0x28')]['id']}});}else{return;}})[_0x2d4a('0x16')](function(){return _0x535b2f[_0x2d4a('0x2d')]({'read':!![]});})[_0x2d4a('0x19')](function(_0x2b66af){logger['error'](_0x2d4a('0x23'),_0x2d4a('0x24'),util[_0x2d4a('0x2e')](_0x2b66af,{'showHidden':![],'depth':null}));_0x113839();});}else{_0x113839();}})[_0x2d4a('0x2f')](function(){_0x113839();});}else{_0x113839();}}},'charset':_0x2d4a('0x30'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x6e6c=['util','api','moment','path','../../config/environment','exports','define','OpenchannelMessage','fti_openchannel_messages','body','models','get','direction','toLowerCase','secret','UserId','OpenchannelInteraction','findOne','OpenchannelInteractionId','update','createdAt','error','out','find','OpenchannelAccountId','Interactions','CmContact','Contact','keys','then','replyUri','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','length','Interaction','omit','POST','method','info','Message\x20%d\x20forwarded\x20to\x20%s','threadId','catch','inspect','finally','utf8mb4','utf8mb4_unicode_ci','lodash'];(function(_0x4b7175,_0x2c2dd6){var _0x3eeb4b=function(_0x1d6daa){while(--_0x1d6daa){_0x4b7175['push'](_0x4b7175['shift']());}};_0x3eeb4b(++_0x2c2dd6);}(_0x6e6c,0xc3));var _0xc6e6=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6e6c[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xc6e6('0x0'));var util=require(_0xc6e6('0x1'));var logger=require('../../config/logger')(_0xc6e6('0x2'));var moment=require(_0xc6e6('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xc6e6('0x4'));var rimraf=require('rimraf');var config=require(_0xc6e6('0x5'));var attributes=require('./openchannelMessage.attributes');module[_0xc6e6('0x6')]=function(_0x1182c7,_0x4bf906){return _0x1182c7[_0xc6e6('0x7')](_0xc6e6('0x8'),attributes,{'tableName':'openchannel_messages','paranoid':![],'indexes':[{'name':_0xc6e6('0x9'),'fields':[_0xc6e6('0xa')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x324f05,_0x481799,_0x172aa9){var _0x3b2f50=_0x1182c7[_0xc6e6('0xb')];var _0x3ddf6f=_0x324f05[_0xc6e6('0xc')]({'plain':!![]});if(_0x3ddf6f[_0xc6e6('0xd')][_0xc6e6('0xe')]()==='in'||_0x3ddf6f[_0xc6e6('0xd')][_0xc6e6('0xe')]()==='out'&&!_0x3ddf6f[_0xc6e6('0xf')]&&!_['isNil'](_0x3ddf6f[_0xc6e6('0x10')])){_0x3b2f50[_0xc6e6('0x11')][_0xc6e6('0x12')]({'where':{'id':_0x3ddf6f[_0xc6e6('0x13')]}})['then'](function(_0x149ac6){if(_0x149ac6){_0x149ac6[_0xc6e6('0x14')]({'lastMsgAt':_0x3ddf6f[_0xc6e6('0x15')],'lastMsgDirection':_0x3ddf6f[_0xc6e6('0xd')][_0xc6e6('0xe')]()});}})['catch'](function(_0x413cf8){console[_0xc6e6('0x16')](_0x413cf8);});}if(_0x3ddf6f['direction']===_0xc6e6('0x17')&&!_0x3ddf6f[_0xc6e6('0xf')]){var _0xedf127;_0x3b2f50['CmContact']['describe']()['then'](function(_0x3a1ccc){return _0x3b2f50['OpenchannelAccount'][_0xc6e6('0x18')]({'where':{'id':_0x3ddf6f[_0xc6e6('0x19')]},'include':[{'model':_0x3b2f50[_0xc6e6('0x11')],'as':_0xc6e6('0x1a'),'where':{'id':_0x3ddf6f[_0xc6e6('0x13')]},'limit':0x1,'include':[{'model':_0x3b2f50[_0xc6e6('0x1b')],'as':_0xc6e6('0x1c'),'attributes':_[_0xc6e6('0x1d')](_0x3a1ccc)}]}]});})[_0xc6e6('0x1e')](function(_0x3d734d){_0xedf127=_0x3d734d['get']({'plain':!![]});if(_0xedf127&&_0xedf127[_0xc6e6('0x1f')]){logger['info'](_0xc6e6('0x20'),_0xc6e6('0x21'),util[_0xc6e6('0x22')](_0xc6e6('0x23'),_0x3ddf6f['id'],_0xedf127['replyUri']));if(_0xedf127[_0xc6e6('0x1a')]&&_0xedf127[_0xc6e6('0x1a')][_0xc6e6('0x24')]){_0x3ddf6f[_0xc6e6('0x25')]=_[_0xc6e6('0x26')](_0xedf127['Interactions'][0x0],_0xc6e6('0x1c'));_0x3ddf6f['Contact']=_0xedf127[_0xc6e6('0x1a')][0x0][_0xc6e6('0x1c')];}var _0x481799={'method':_0xc6e6('0x27'),'uri':encodeURI(_0xedf127['replyUri']),'json':!![],'resolveWithFullResponse':!![]};switch(_0x481799[_0xc6e6('0x28')]){case'GET':_0x481799['qs']=_0x3ddf6f;break;case _0xc6e6('0x27'):_0x481799['body']=_0x3ddf6f;break;}return rp(_0x481799)[_0xc6e6('0x1e')](function(_0x16dcd9){logger[_0xc6e6('0x29')](_0xc6e6('0x20'),_0xc6e6('0x21'),util['format'](_0xc6e6('0x2a'),_0x3ddf6f['id'],_0xedf127[_0xc6e6('0x1f')]));if(_0x16dcd9[_0xc6e6('0xa')][_0xc6e6('0x2b')]&&_0x16dcd9['body'][_0xc6e6('0x2b')]!=_0x3ddf6f['Interaction'][_0xc6e6('0x2b')]){return _0x3b2f50[_0xc6e6('0x11')][_0xc6e6('0x14')]({'threadId':_0x16dcd9[_0xc6e6('0xa')][_0xc6e6('0x2b')]},{'logging':!![],'where':{'id':_0x3ddf6f[_0xc6e6('0x25')]['id']}});}else{return;}})[_0xc6e6('0x1e')](function(){return _0x324f05[_0xc6e6('0x14')]({'read':!![]});})[_0xc6e6('0x2c')](function(_0x1eb477){logger[_0xc6e6('0x16')](_0xc6e6('0x20'),_0xc6e6('0x21'),util[_0xc6e6('0x2d')](_0x1eb477,{'showHidden':![],'depth':null}));_0x172aa9();});}else{_0x172aa9();}})[_0xc6e6('0x2e')](function(){_0x172aa9();});}else{_0x172aa9();}}},'charset':_0xc6e6('0x2f'),'collate':_0xc6e6('0x30')});};
\ No newline at end of file
index 7d82519..93748d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['stringify','error','code','message','info','result','OpenchannelMessage','create','body','options','raw','CreateOpenchannelMessage','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./openchannelMessage.socket','then','OpenchannelMessage,\x20%s,\x20%s','debug','request\x20sent'];(function(_0x2597b3,_0x2c905a){var _0x42a9b5=function(_0x4adb43){while(--_0x4adb43){_0x2597b3['push'](_0x2597b3['shift']());}};_0x42a9b5(++_0x2c905a);}(_0x5f66,0x1a0));var _0x65f6=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x5f66[_0x432682];return _0x463d05;};'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});config['redis']=_[_0x65f6('0x9')](config[_0x65f6('0xa')],{'host':_0x65f6('0xb'),'port':0x18eb});var socket=require(_0x65f6('0xc'))(new Redis(config[_0x65f6('0xa')]));require(_0x65f6('0xd'))['register'](socket);function respondWithRpcPromise(_0x5123ee,_0x18fea1,_0x2f6d5b){return new BPromise(function(_0x264647,_0x25c416){return client['request'](_0x5123ee,_0x2f6d5b)[_0x65f6('0xe')](function(_0x571436){logger['info'](_0x65f6('0xf'),_0x18fea1,'request\x20sent');logger[_0x65f6('0x10')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x18fea1,_0x65f6('0x11'),JSON[_0x65f6('0x12')](_0x571436));if(_0x571436[_0x65f6('0x13')]){if(_0x571436[_0x65f6('0x13')][_0x65f6('0x14')]===0x1f4){logger[_0x65f6('0x13')](_0x65f6('0xf'),_0x18fea1,_0x571436[_0x65f6('0x13')][_0x65f6('0x15')]);return _0x25c416(_0x571436[_0x65f6('0x13')]['message']);}logger[_0x65f6('0x13')]('OpenchannelMessage,\x20%s,\x20%s',_0x18fea1,_0x571436['error'][_0x65f6('0x15')]);return _0x264647(_0x571436[_0x65f6('0x13')][_0x65f6('0x15')]);}else{logger[_0x65f6('0x16')](_0x65f6('0xf'),_0x18fea1,_0x65f6('0x11'));_0x264647(_0x571436[_0x65f6('0x17')][_0x65f6('0x15')]);}})['catch'](function(_0x4d79a1){logger[_0x65f6('0x13')]('OpenchannelMessage,\x20%s,\x20%s',_0x18fea1,_0x4d79a1);_0x25c416(_0x4d79a1);});});}exports['CreateOpenchannelMessage']=function(_0x5c5b91){var _0x365159=this;return new Promise(function(_0x21ea88,_0x5114a4){return db[_0x65f6('0x18')][_0x65f6('0x19')](_0x5c5b91[_0x65f6('0x1a')],{'raw':_0x5c5b91[_0x65f6('0x1b')]?_0x5c5b91[_0x65f6('0x1b')][_0x65f6('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x197a49){logger['info']('CreateOpenchannelMessage',_0x5c5b91);logger[_0x65f6('0x10')](_0x65f6('0x1d'),_0x5c5b91,JSON['stringify'](_0x197a49));_0x21ea88(_0x197a49);})[_0x65f6('0x1e')](function(_0x471a33){logger[_0x65f6('0x13')](_0x65f6('0x1d'),_0x471a33['message'],_0x5c5b91);_0x5114a4(_0x365159[_0x65f6('0x13')](0x1f4,_0x471a33[_0x65f6('0x15')]));});});};
\ No newline at end of file
+var _0x5f2f=['OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','OpenchannelMessage','create','options','raw','CreateOpenchannelMessage','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','then','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x22cdd6,_0x3001a7){var _0x3aa453=function(_0x41bdd4){while(--_0x41bdd4){_0x22cdd6['push'](_0x22cdd6['shift']());}};_0x3aa453(++_0x3001a7);}(_0x5f2f,0x73));var _0xf5f2=function(_0x39578c,_0x23635b){_0x39578c=_0x39578c-0x0;var _0x15ee51=_0x5f2f[_0x39578c];return _0x15ee51;};'use strict';var _=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var moment=require(_0xf5f2('0x2'));var BPromise=require(_0xf5f2('0x3'));var rs=require(_0xf5f2('0x4'));var fs=require('fs');var Redis=require(_0xf5f2('0x5'));var db=require(_0xf5f2('0x6'))['db'];var utils=require(_0xf5f2('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xf5f2('0x8'));var jayson=require(_0xf5f2('0x9'));var client=jayson[_0xf5f2('0xa')][_0xf5f2('0xb')]({'port':0x232a});config[_0xf5f2('0xc')]=_[_0xf5f2('0xd')](config['redis'],{'host':_0xf5f2('0xe'),'port':0x18eb});var socket=require(_0xf5f2('0xf'))(new Redis(config[_0xf5f2('0xc')]));require('./openchannelMessage.socket')[_0xf5f2('0x10')](socket);function respondWithRpcPromise(_0x15dd7c,_0x218ae3,_0x4e0e6b){return new BPromise(function(_0x977a59,_0x4ebbbe){return client['request'](_0x15dd7c,_0x4e0e6b)[_0xf5f2('0x11')](function(_0x151aba){logger['info'](_0xf5f2('0x12'),_0x218ae3,_0xf5f2('0x13'));logger[_0xf5f2('0x14')](_0xf5f2('0x15'),_0x218ae3,_0xf5f2('0x13'),JSON[_0xf5f2('0x16')](_0x151aba));if(_0x151aba['error']){if(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x18')]===0x1f4){logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x151aba[_0xf5f2('0x17')]['message']);return _0x4ebbbe(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);}logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);return _0x977a59(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);}else{logger[_0xf5f2('0x1a')](_0xf5f2('0x12'),_0x218ae3,_0xf5f2('0x13'));_0x977a59(_0x151aba[_0xf5f2('0x1b')][_0xf5f2('0x19')]);}})[_0xf5f2('0x1c')](function(_0x3cf5ea){logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x3cf5ea);_0x4ebbbe(_0x3cf5ea);});});}exports['CreateOpenchannelMessage']=function(_0x34706d){var _0x47101e=this;return new Promise(function(_0x49dac2,_0x47acfc){return db[_0xf5f2('0x1d')][_0xf5f2('0x1e')](_0x34706d['body'],{'raw':_0x34706d[_0xf5f2('0x1f')]?_0x34706d[_0xf5f2('0x1f')][_0xf5f2('0x20')]===undefined?!![]:![]:!![]})[_0xf5f2('0x11')](function(_0x36f1cb){logger['info'](_0xf5f2('0x21'),_0x34706d);logger[_0xf5f2('0x14')](_0xf5f2('0x21'),_0x34706d,JSON[_0xf5f2('0x16')](_0x36f1cb));_0x49dac2(_0x36f1cb);})[_0xf5f2('0x1c')](function(_0x5bdf4a){logger['error'](_0xf5f2('0x21'),_0x5bdf4a[_0xf5f2('0x19')],_0x34706d);_0x47acfc(_0x47101e[_0xf5f2('0x17')](0x1f4,_0x5bdf4a[_0xf5f2('0x19')]));});});};
\ No newline at end of file
index a184dbf..c4c8365 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8802=['./openchannelMessage.events','remove','emit','removeListener','register','length'];(function(_0x53a5e8,_0x40041f){var _0xbe7394=function(_0x41459e){while(--_0x41459e){_0x53a5e8['push'](_0x53a5e8['shift']());}};_0xbe7394(++_0x40041f);}(_0x8802,0x7e));var _0x2880=function(_0x17ac5b,_0x1a2d16){_0x17ac5b=_0x17ac5b-0x0;var _0x2dcec9=_0x8802[_0x17ac5b];return _0x2dcec9;};'use strict';var OpenchannelMessageEvents=require(_0x2880('0x0'));var events=['save',_0x2880('0x1'),'update'];function createListener(_0x2c4d85,_0x47210e){return function(_0x21beb3){_0x47210e[_0x2880('0x2')](_0x2c4d85,_0x21beb3);};}function removeListener(_0x9a7dcc,_0xf47dec){return function(){OpenchannelMessageEvents[_0x2880('0x3')](_0x9a7dcc,_0xf47dec);};}exports[_0x2880('0x4')]=function(_0x19be07){for(var _0x10d734=0x0,_0xc45306=events[_0x2880('0x5')];_0x10d734<_0xc45306;_0x10d734++){var _0x1e4eb6=events[_0x10d734];var _0x1142a3=createListener('openchannelMessage:'+_0x1e4eb6,_0x19be07);OpenchannelMessageEvents['on'](_0x1e4eb6,_0x1142a3);}};
\ No newline at end of file
+var _0xd6d2=['save','update','removeListener','length','openchannelMessage:','./openchannelMessage.events'];(function(_0x41199a,_0x24f307){var _0x143cad=function(_0x52f59a){while(--_0x52f59a){_0x41199a['push'](_0x41199a['shift']());}};_0x143cad(++_0x24f307);}(_0xd6d2,0xcb));var _0x2d6d=function(_0x312dc0,_0x592d0e){_0x312dc0=_0x312dc0-0x0;var _0x4b2a33=_0xd6d2[_0x312dc0];return _0x4b2a33;};'use strict';var OpenchannelMessageEvents=require(_0x2d6d('0x0'));var events=[_0x2d6d('0x1'),'remove',_0x2d6d('0x2')];function createListener(_0x224caa,_0x5b4a5b){return function(_0x2c2dd9){_0x5b4a5b['emit'](_0x224caa,_0x2c2dd9);};}function removeListener(_0x1c5e54,_0x3ee519){return function(){OpenchannelMessageEvents[_0x2d6d('0x3')](_0x1c5e54,_0x3ee519);};}exports['register']=function(_0xfcdb1d){for(var _0x132361=0x0,_0xf59b20=events[_0x2d6d('0x4')];_0x132361<_0xf59b20;_0x132361++){var _0x4002b7=events[_0x132361];var _0x42d802=createListener(_0x2d6d('0x5')+_0x4002b7,_0xfcdb1d);OpenchannelMessageEvents['on'](_0x4002b7,_0x42d802);}};
\ No newline at end of file
index b0c6b33..afe8605 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc731=['/:id/members','/:id/teams','getTeams','/:id/users','addTeams','put','delete','removeTeams','removeAgents','path','connect-timeout','express','Router','fs-extra','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x4c9bb9,_0x5e0b46){var _0x437c20=function(_0x3eb3fa){while(--_0x3eb3fa){_0x4c9bb9['push'](_0x4c9bb9['shift']());}};_0x437c20(++_0x5e0b46);}(_0xc731,0x87));var _0x1c73=function(_0x5f1254,_0x5de734){_0x5f1254=_0x5f1254-0x0;var _0x427806=_0xc731[_0x5f1254];return _0x427806;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1c73('0x0'));var timeout=require(_0x1c73('0x1'));var express=require(_0x1c73('0x2'));var router=express[_0x1c73('0x3')]();var fs_extra=require(_0x1c73('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x1c73('0x5'));var controller=require('./openchannelQueue.controller');router[_0x1c73('0x6')]('/',auth[_0x1c73('0x7')](),controller[_0x1c73('0x8')]);router['get'](_0x1c73('0x9'),auth['isAuthenticated'](),controller[_0x1c73('0xa')]);router['get'](_0x1c73('0xb'),auth[_0x1c73('0x7')](),controller['show']);router[_0x1c73('0x6')](_0x1c73('0xc'),auth[_0x1c73('0x7')](),controller['getMembers']);router[_0x1c73('0x6')](_0x1c73('0xd'),auth['isAuthenticated'](),controller[_0x1c73('0xe')]);router[_0x1c73('0x6')](_0x1c73('0xf'),auth[_0x1c73('0x7')](),controller['getAgents']);router['post']('/',auth[_0x1c73('0x7')](),controller['create']);router['post'](_0x1c73('0xd'),auth[_0x1c73('0x7')](),controller[_0x1c73('0x10')]);router['post'](_0x1c73('0xf'),auth[_0x1c73('0x7')](),controller['addAgents']);router[_0x1c73('0x11')](_0x1c73('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x1c73('0x12')](_0x1c73('0xb'),auth[_0x1c73('0x7')](),controller['destroy']);router[_0x1c73('0x12')](_0x1c73('0xd'),auth[_0x1c73('0x7')](),controller[_0x1c73('0x13')]);router['delete'](_0x1c73('0xf'),auth['isAuthenticated'](),controller[_0x1c73('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xb186=['get','isAuthenticated','describe','/:id','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','create','post','put','update','delete','destroy','removeTeams','removeAgents','exports','multer','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x1e82e4,_0x37d693){var _0x3e4771=function(_0x2e971c){while(--_0x2e971c){_0x1e82e4['push'](_0x1e82e4['shift']());}};_0x3e4771(++_0x37d693);}(_0xb186,0x1e7));var _0x6b18=function(_0x196ddc,_0x514491){_0x196ddc=_0x196ddc-0x0;var _0x5d15f2=_0xb186[_0x196ddc];return _0x5d15f2;};'use strict';var multer=require(_0x6b18('0x0'));var util=require('util');var path=require(_0x6b18('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x6b18('0x2')]();var fs_extra=require(_0x6b18('0x3'));var auth=require(_0x6b18('0x4'));var interaction=require(_0x6b18('0x5'));var config=require(_0x6b18('0x6'));var controller=require('./openchannelQueue.controller');router[_0x6b18('0x7')]('/',auth[_0x6b18('0x8')](),controller['index']);router[_0x6b18('0x7')]('/describe',auth['isAuthenticated'](),controller[_0x6b18('0x9')]);router[_0x6b18('0x7')](_0x6b18('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x6b18('0x7')](_0x6b18('0xb'),auth[_0x6b18('0x8')](),controller[_0x6b18('0xc')]);router[_0x6b18('0x7')](_0x6b18('0xd'),auth[_0x6b18('0x8')](),controller[_0x6b18('0xe')]);router[_0x6b18('0x7')](_0x6b18('0xf'),auth[_0x6b18('0x8')](),controller[_0x6b18('0x10')]);router['post']('/',auth[_0x6b18('0x8')](),controller[_0x6b18('0x11')]);router[_0x6b18('0x12')]('/:id/teams',auth[_0x6b18('0x8')](),controller['addTeams']);router[_0x6b18('0x12')](_0x6b18('0xf'),auth['isAuthenticated'](),controller['addAgents']);router[_0x6b18('0x13')](_0x6b18('0xa'),auth[_0x6b18('0x8')](),controller[_0x6b18('0x14')]);router[_0x6b18('0x15')]('/:id',auth[_0x6b18('0x8')](),controller[_0x6b18('0x16')]);router['delete']('/:id/teams',auth['isAuthenticated'](),controller[_0x6b18('0x17')]);router['delete']('/:id/users',auth[_0x6b18('0x8')](),controller[_0x6b18('0x18')]);module[_0x6b18('0x19')]=router;
\ No newline at end of file
index e185264..db8dca1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16bb=['sequelize','name','INTEGER','ENUM','rrmemory','beepall'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x16bb,0xb4));var _0xb16b=function(_0x20b0fb,_0x1ef6a5){_0x20b0fb=_0x20b0fb-0x0;var _0x4d44b0=_0x16bb[_0x20b0fb];return _0x4d44b0;};'use strict';var Sequelize=require(_0xb16b('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0xb16b('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0xb16b('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xb16b('0x3')](_0xb16b('0x4'),_0xb16b('0x5'),'roundrobin')}};
\ No newline at end of file
+var _0x35f4=['rrmemory','beepall','sequelize','exports','STRING','ENUM'];(function(_0x30e5f9,_0x3c3efe){var _0x3c762b=function(_0x352708){while(--_0x352708){_0x30e5f9['push'](_0x30e5f9['shift']());}};_0x3c762b(++_0x3c3efe);}(_0x35f4,0x1a0));var _0x435f=function(_0x44a64f,_0x38475c){_0x44a64f=_0x44a64f-0x0;var _0x52024b=_0x35f4[_0x44a64f];return _0x52024b;};'use strict';var Sequelize=require(_0x435f('0x0'));module[_0x435f('0x1')]={'name':{'type':Sequelize[_0x435f('0x2')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x435f('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x435f('0x3')](_0x435f('0x4'),_0x435f('0x5'),'roundrobin')}};
\ No newline at end of file
index e4365d3..032702e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c64=['path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','sendStatus','status','end','json','undefined','count','offset','limit','set','apply','save','update','then','destroy','OpenchannelQueues','UserProfileResource','error','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','OpenchannelQueue','includeAll','include','catch','show','keys','find','create','body','user','get','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','getMembers','findOne','nolimit','UserOpenchannelQueue','findAll','findAndCountAll','UserId','updatedAt','createdAt','rows','format','%s/%s','SIP','getTeams','Team','addTeams','ids','User','Agents','online','voicePause','interface','flatMap','transaction','findOrCreate','forEach','emit','select','field','tq.TeamId','from','team_has_openchannel_queues','join','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','sequelize','toString','QueryTypes','SELECT','every','TeamId','includes','all','compact','value','isEmpty','removeAgents','userOpenchannelQueue:remove','addAgents','spread','userOpenchannelQueue:save','isArray','getAgents','eml-format','rimraf','moment','mustache','util'];(function(_0x1e6db3,_0x5643ac){var _0x1de886=function(_0x351318){while(--_0x351318){_0x1e6db3['push'](_0x1e6db3['shift']());}};_0x1de886(++_0x5643ac);}(_0x3c64,0x193));var _0x43c6=function(_0x1f0bcf,_0x408bd6){_0x1f0bcf=_0x1f0bcf-0x0;var _0x1cb51c=_0x3c64[_0x1f0bcf];return _0x1cb51c;};'use strict';var emlformat=require(_0x43c6('0x0'));var rimraf=require(_0x43c6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x43c6('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x43c6('0x3'));var util=require(_0x43c6('0x4'));var path=require(_0x43c6('0x5'));var sox=require(_0x43c6('0x6'));var csv=require(_0x43c6('0x7'));var ejs=require(_0x43c6('0x8'));var fs=require('fs');var fs_extra=require(_0x43c6('0x9'));var _=require('lodash');var squel=require(_0x43c6('0xa'));var crypto=require(_0x43c6('0xb'));var jsforce=require(_0x43c6('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x43c6('0xd'));var Redis=require(_0x43c6('0xe'));var authService=require(_0x43c6('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x43c6('0x10'));var logger=require(_0x43c6('0x11'))('api');var utils=require(_0x43c6('0x12'));var config=require(_0x43c6('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x43c6('0x14')]=_[_0x43c6('0x15')](config['redis'],{'host':_0x43c6('0x16'),'port':0x18eb});var socket=require(_0x43c6('0x17'))(new Redis(config[_0x43c6('0x14')]));require(_0x43c6('0x18'))['register'](socket);function respondWithStatusCode(_0x38a3bb,_0x998440){_0x998440=_0x998440||0xcc;return function(_0x2bb51a){if(_0x2bb51a){return _0x38a3bb[_0x43c6('0x19')](_0x998440);}return _0x38a3bb[_0x43c6('0x1a')](_0x998440)[_0x43c6('0x1b')]();};}function respondWithResult(_0x56e108,_0x8b8acb){_0x8b8acb=_0x8b8acb||0xc8;return function(_0xc23e5f){if(_0xc23e5f){return _0x56e108[_0x43c6('0x1a')](_0x8b8acb)[_0x43c6('0x1c')](_0xc23e5f);}};}function respondWithFilteredResult(_0x327b3d,_0x4ba4f7){return function(_0x2ba9a2){if(_0x2ba9a2){var _0x4b2224=typeof _0x4ba4f7['offset']==='undefined'&&typeof _0x4ba4f7['limit']===_0x43c6('0x1d');var _0x1f0962=_0x2ba9a2[_0x43c6('0x1e')];var _0x184926=_0x4b2224?0x0:_0x4ba4f7['offset'];var _0x73db6d=_0x4b2224?_0x2ba9a2[_0x43c6('0x1e')]:_0x4ba4f7[_0x43c6('0x1f')]+_0x4ba4f7[_0x43c6('0x20')];var _0x330456;if(_0x73db6d>=_0x1f0962){_0x73db6d=_0x1f0962;_0x330456=0xc8;}else{_0x330456=0xce;}_0x327b3d['status'](_0x330456);return _0x327b3d[_0x43c6('0x21')]('Content-Range',_0x184926+'-'+_0x73db6d+'/'+_0x1f0962)[_0x43c6('0x1c')](_0x2ba9a2);}return null;};}function patchUpdates(_0x1beca2){return function(_0x3f0ae2){try{jsonpatch[_0x43c6('0x22')](_0x3f0ae2,_0x1beca2,!![]);}catch(_0x54d1b2){return BPromise['reject'](_0x54d1b2);}return _0x3f0ae2[_0x43c6('0x23')]();};}function saveUpdates(_0x134a1f,_0x559a37){return function(_0x38526a){if(_0x38526a){return _0x38526a[_0x43c6('0x24')](_0x134a1f)[_0x43c6('0x25')](function(_0x268b2d){return _0x268b2d;});}return null;};}function removeEntity(_0x2375e2,_0x4f6a49){return function(_0x24e67b){if(_0x24e67b){return _0x24e67b[_0x43c6('0x26')]()[_0x43c6('0x25')](function(){var _0x32c0b0=_0x24e67b['get']({'plain':!![]});var _0x26d325=_0x43c6('0x27');return db[_0x43c6('0x28')][_0x43c6('0x26')]({'where':{'type':_0x26d325,'resourceId':_0x32c0b0['id']}})[_0x43c6('0x25')](function(){return _0x24e67b;});})[_0x43c6('0x25')](function(){_0x2375e2[_0x43c6('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2e7d76,_0x3edd18){return function(_0x3577e4){if(!_0x3577e4){_0x2e7d76['sendStatus'](0x194);}return _0x3577e4;};}function handleError(_0x29b5ab,_0x29ab76){_0x29ab76=_0x29ab76||0x1f4;return function(_0x26c2f4){logger[_0x43c6('0x29')](_0x26c2f4[_0x43c6('0x2a')]);if(_0x26c2f4[_0x43c6('0x2b')]){delete _0x26c2f4[_0x43c6('0x2b')];}_0x29b5ab['status'](_0x29ab76)[_0x43c6('0x2c')](_0x26c2f4);};}exports[_0x43c6('0x2d')]=function(_0x1433da,_0x5f3754){var _0x53016b={},_0x4a6e57={},_0x3cf121={'count':0x0,'rows':[]};var _0x164cbe=_[_0x43c6('0x2e')](db['OpenchannelQueue'][_0x43c6('0x2f')],function(_0x506d15){return{'name':_0x506d15[_0x43c6('0x30')],'type':_0x506d15[_0x43c6('0x31')]['key']};});_0x4a6e57[_0x43c6('0x32')]=_[_0x43c6('0x2e')](_0x164cbe,_0x43c6('0x2b'));_0x4a6e57[_0x43c6('0x33')]=_['keys'](_0x1433da[_0x43c6('0x33')]);_0x4a6e57[_0x43c6('0x34')]=_['intersection'](_0x4a6e57[_0x43c6('0x32')],_0x4a6e57[_0x43c6('0x33')]);_0x53016b[_0x43c6('0x35')]=_[_0x43c6('0x36')](_0x4a6e57[_0x43c6('0x32')],qs[_0x43c6('0x37')](_0x1433da[_0x43c6('0x33')][_0x43c6('0x37')]));_0x53016b['attributes']=_0x53016b[_0x43c6('0x35')][_0x43c6('0x38')]?_0x53016b[_0x43c6('0x35')]:_0x4a6e57[_0x43c6('0x32')];if(!_0x1433da['query'][_0x43c6('0x39')]('nolimit')){_0x53016b[_0x43c6('0x20')]=qs['limit'](_0x1433da['query']['limit']);_0x53016b[_0x43c6('0x1f')]=qs[_0x43c6('0x1f')](_0x1433da['query'][_0x43c6('0x1f')]);}_0x53016b[_0x43c6('0x3a')]=qs[_0x43c6('0x3b')](_0x1433da[_0x43c6('0x33')][_0x43c6('0x3b')]);_0x53016b[_0x43c6('0x3c')]=qs[_0x43c6('0x34')](_[_0x43c6('0x3d')](_0x1433da['query'],_0x4a6e57[_0x43c6('0x34')]),_0x164cbe);if(_0x1433da[_0x43c6('0x33')][_0x43c6('0x3e')]){_0x53016b[_0x43c6('0x3c')]=_[_0x43c6('0x3f')](_0x53016b['where'],{'$or':_['map'](_0x164cbe,function(_0x7749e4){if(_0x7749e4[_0x43c6('0x31')]!=='VIRTUAL'){var _0x2244a6={};_0x2244a6[_0x7749e4['name']]={'$like':'%'+_0x1433da[_0x43c6('0x33')][_0x43c6('0x3e')]+'%'};return _0x2244a6;}})});}_0x53016b=_[_0x43c6('0x3f')]({},_0x53016b,_0x1433da[_0x43c6('0x40')]);var _0x3707c4={'where':_0x53016b[_0x43c6('0x3c')]};return db[_0x43c6('0x41')]['count'](_0x3707c4)[_0x43c6('0x25')](function(_0x8c8ff9){_0x3cf121[_0x43c6('0x1e')]=_0x8c8ff9;if(_0x1433da['query'][_0x43c6('0x42')]){_0x53016b[_0x43c6('0x43')]=[{'all':!![]}];}return db[_0x43c6('0x41')]['findAll'](_0x53016b);})['then'](function(_0x1bbf6f){_0x3cf121['rows']=_0x1bbf6f;return _0x3cf121;})[_0x43c6('0x25')](respondWithFilteredResult(_0x5f3754,_0x53016b))[_0x43c6('0x44')](handleError(_0x5f3754,null));};exports[_0x43c6('0x45')]=function(_0x4c003f,_0x1a8e25){var _0x3a6f32={'raw':!![],'where':{'id':_0x4c003f['params']['id']}},_0x40bfa2={};_0x40bfa2['model']=_[_0x43c6('0x46')](db[_0x43c6('0x41')][_0x43c6('0x2f')]);_0x40bfa2[_0x43c6('0x33')]=_[_0x43c6('0x46')](_0x4c003f[_0x43c6('0x33')]);_0x40bfa2[_0x43c6('0x34')]=_['intersection'](_0x40bfa2[_0x43c6('0x32')],_0x40bfa2[_0x43c6('0x33')]);_0x3a6f32[_0x43c6('0x35')]=_[_0x43c6('0x36')](_0x40bfa2[_0x43c6('0x32')],qs[_0x43c6('0x37')](_0x4c003f[_0x43c6('0x33')][_0x43c6('0x37')]));_0x3a6f32[_0x43c6('0x35')]=_0x3a6f32['attributes'][_0x43c6('0x38')]?_0x3a6f32[_0x43c6('0x35')]:_0x40bfa2[_0x43c6('0x32')];if(_0x4c003f[_0x43c6('0x33')][_0x43c6('0x42')]){_0x3a6f32['include']=[{'all':!![]}];}_0x3a6f32=_[_0x43c6('0x3f')]({},_0x3a6f32,_0x4c003f[_0x43c6('0x40')]);return db[_0x43c6('0x41')][_0x43c6('0x47')](_0x3a6f32)[_0x43c6('0x25')](handleEntityNotFound(_0x1a8e25,null))['then'](respondWithResult(_0x1a8e25,null))[_0x43c6('0x44')](handleError(_0x1a8e25,null));};exports[_0x43c6('0x48')]=function(_0x1a20e1,_0x3e73a0){return db[_0x43c6('0x41')]['create'](_0x1a20e1[_0x43c6('0x49')],{})[_0x43c6('0x25')](function(_0x381d20){var _0x1d4112=_0x1a20e1[_0x43c6('0x4a')][_0x43c6('0x4b')]({'plain':!![]});if(!_0x1d4112)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1d4112['role']===_0x43c6('0x4a')){var _0x20698b=_0x381d20['get']({'plain':!![]});var _0x49ed8d=_0x43c6('0x27');return db['UserProfileSection'][_0x43c6('0x47')]({'where':{'name':_0x49ed8d,'userProfileId':_0x1d4112[_0x43c6('0x4c')]},'raw':!![]})['then'](function(_0x176cc7){if(_0x176cc7&&_0x176cc7[_0x43c6('0x4d')]===0x0){return db[_0x43c6('0x28')]['create']({'name':_0x20698b['name'],'resourceId':_0x20698b['id'],'type':_0x176cc7[_0x43c6('0x2b')],'sectionId':_0x176cc7['id']},{})[_0x43c6('0x25')](function(){return _0x381d20;});}else{return _0x381d20;}})[_0x43c6('0x44')](function(_0xbc15ae){logger[_0x43c6('0x29')](_0x43c6('0x4e'),_0xbc15ae);throw _0xbc15ae;});}return _0x381d20;})[_0x43c6('0x25')](respondWithResult(_0x3e73a0,0xc9))[_0x43c6('0x44')](handleError(_0x3e73a0,null));};exports['update']=function(_0x2ed316,_0x41ad97){if(_0x2ed316[_0x43c6('0x49')]['id']){delete _0x2ed316[_0x43c6('0x49')]['id'];}return db[_0x43c6('0x41')][_0x43c6('0x47')]({'where':{'id':_0x2ed316[_0x43c6('0x4f')]['id']}})[_0x43c6('0x25')](handleEntityNotFound(_0x41ad97,null))[_0x43c6('0x25')](saveUpdates(_0x2ed316[_0x43c6('0x49')],null))[_0x43c6('0x25')](respondWithResult(_0x41ad97,null))[_0x43c6('0x44')](handleError(_0x41ad97,null));};exports['destroy']=function(_0x5e6acd,_0x1831aa){return db[_0x43c6('0x41')][_0x43c6('0x47')]({'where':{'id':_0x5e6acd[_0x43c6('0x4f')]['id']}})[_0x43c6('0x25')](handleEntityNotFound(_0x1831aa,null))[_0x43c6('0x25')](removeEntity(_0x1831aa,null))[_0x43c6('0x44')](handleError(_0x1831aa,null));};exports['describe']=function(_0x486dba,_0x42d1b9){return db[_0x43c6('0x41')][_0x43c6('0x50')]()['then'](respondWithResult(_0x42d1b9,null))[_0x43c6('0x44')](handleError(_0x42d1b9,null));};exports[_0x43c6('0x51')]=function(_0x14c44b,_0x4be3ef,_0x161124){var _0x4a64ce={'raw':!![],'where':{}},_0x5e444d={},_0x2367b0;return db['OpenchannelQueue'][_0x43c6('0x52')]({'where':{'id':_0x14c44b[_0x43c6('0x4f')]['id']}})['then'](handleEntityNotFound(_0x4be3ef,null))[_0x43c6('0x25')](function(_0x23782c){if(_0x23782c){_0x2367b0=_0x23782c['get']({'plain':!![]});_0x5e444d[_0x43c6('0x32')]=_[_0x43c6('0x46')](db['UserOpenchannelQueue'][_0x43c6('0x2f')]);_0x5e444d[_0x43c6('0x33')]=_[_0x43c6('0x46')](_0x14c44b['query']);_0x5e444d[_0x43c6('0x34')]=_[_0x43c6('0x36')](_0x5e444d['model'],_0x5e444d['query']);_0x4a64ce[_0x43c6('0x35')]=_[_0x43c6('0x36')](_0x5e444d[_0x43c6('0x32')],qs['fields'](_0x14c44b[_0x43c6('0x33')][_0x43c6('0x37')]));_0x4a64ce[_0x43c6('0x35')]=_0x4a64ce[_0x43c6('0x35')][_0x43c6('0x38')]?_0x4a64ce[_0x43c6('0x35')]:_0x5e444d[_0x43c6('0x32')];if(!_0x14c44b[_0x43c6('0x33')][_0x43c6('0x39')](_0x43c6('0x53'))){_0x4a64ce[_0x43c6('0x20')]=qs[_0x43c6('0x20')](_0x14c44b[_0x43c6('0x33')][_0x43c6('0x20')]);_0x4a64ce['offset']=qs[_0x43c6('0x1f')](_0x14c44b[_0x43c6('0x33')]['offset']);}_0x4a64ce[_0x43c6('0x3a')]=qs['sort'](_0x14c44b['query']['sort']);_0x4a64ce['where']=qs[_0x43c6('0x34')](_[_0x43c6('0x3d')](_0x14c44b[_0x43c6('0x33')],_0x5e444d[_0x43c6('0x34')]));_0x4a64ce['where']['OpenchannelQueueId']=_0x23782c['id'];if(_0x14c44b[_0x43c6('0x33')][_0x43c6('0x3e')]){_0x4a64ce[_0x43c6('0x3c')]=_[_0x43c6('0x3f')](_0x4a64ce[_0x43c6('0x3c')],{'$or':_[_0x43c6('0x2e')](_0x4a64ce[_0x43c6('0x35')],function(_0x3be5a2){var _0x3b021c={};_0x3b021c[_0x3be5a2]={'$like':'%'+_0x14c44b[_0x43c6('0x33')][_0x43c6('0x3e')]+'%'};return _0x3b021c;})});}_0x4a64ce=_['merge']({},_0x4a64ce,_0x14c44b[_0x43c6('0x40')]);return db[_0x43c6('0x54')][_0x43c6('0x55')](_0x4a64ce);}})[_0x43c6('0x25')](function(_0x5c4163){if(_0x5c4163){return db['User'][_0x43c6('0x56')]({'where':{'id':_['map'](_0x5c4163,_0x43c6('0x57')),'role':'agent'},'attributes':['id','name','openchannelPause',_0x43c6('0x58'),_0x43c6('0x59')]});}})[_0x43c6('0x25')](function(_0x1e456c){if(_0x1e456c){return{'count':_0x1e456c['count'],'rows':_[_0x43c6('0x2e')](_0x1e456c[_0x43c6('0x5a')],function(_0x456720){return{'membername':_0x456720[_0x43c6('0x2b')],'UserId':_0x456720['id'],'queue_name':_0x2367b0['name'],'OpenchannelQueueId':_0x2367b0['id'],'interface':util[_0x43c6('0x5b')](_0x43c6('0x5c'),_0x43c6('0x5d'),_0x456720[_0x43c6('0x2b')]),'penalty':0x0,'paused':_0x456720['openchannelPause'],'createdAt':_0x456720['createdAt'],'updatedAt':_0x456720['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x4be3ef,_0x4a64ce))[_0x43c6('0x44')](handleError(_0x4be3ef,null));};exports[_0x43c6('0x5e')]=function(_0x1eba4e,_0x915e5f,_0x5e35ad){var _0x5415a2={};var _0x473550={};var _0x26662d;var _0xa3aa39;return db[_0x43c6('0x41')][_0x43c6('0x52')]({'where':{'id':_0x1eba4e[_0x43c6('0x4f')]['id']}})[_0x43c6('0x25')](handleEntityNotFound(_0x915e5f,null))['then'](function(_0x589283){if(_0x589283){_0x26662d=_0x589283;_0x473550['model']=_[_0x43c6('0x46')](db[_0x43c6('0x5f')]['rawAttributes']);_0x473550['query']=_[_0x43c6('0x46')](_0x1eba4e[_0x43c6('0x33')]);_0x473550['filters']=_[_0x43c6('0x36')](_0x473550[_0x43c6('0x32')],_0x473550[_0x43c6('0x33')]);_0x5415a2['attributes']=_[_0x43c6('0x36')](_0x473550['model'],qs[_0x43c6('0x37')](_0x1eba4e[_0x43c6('0x33')][_0x43c6('0x37')]));_0x5415a2[_0x43c6('0x35')]=_0x5415a2[_0x43c6('0x35')][_0x43c6('0x38')]?_0x5415a2['attributes']:_0x473550['model'];_0x5415a2[_0x43c6('0x3a')]=qs[_0x43c6('0x3b')](_0x1eba4e[_0x43c6('0x33')][_0x43c6('0x3b')]);_0x5415a2[_0x43c6('0x3c')]=qs[_0x43c6('0x34')](_[_0x43c6('0x3d')](_0x1eba4e[_0x43c6('0x33')],_0x473550[_0x43c6('0x34')]));if(_0x1eba4e[_0x43c6('0x33')]['filter']){_0x5415a2[_0x43c6('0x3c')]=_[_0x43c6('0x3f')](_0x5415a2[_0x43c6('0x3c')],{'$or':_[_0x43c6('0x2e')](_0x5415a2[_0x43c6('0x35')],function(_0x181f50){var _0x500b69={};_0x500b69[_0x181f50]={'$like':'%'+_0x1eba4e[_0x43c6('0x33')][_0x43c6('0x3e')]+'%'};return _0x500b69;})});}_0x5415a2=_[_0x43c6('0x3f')]({},_0x5415a2,_0x1eba4e[_0x43c6('0x40')]);return _0x26662d[_0x43c6('0x5e')](_0x5415a2);}})['then'](function(_0x2d4eb2){if(_0x2d4eb2){_0xa3aa39=_0x2d4eb2[_0x43c6('0x38')];if(!_0x1eba4e[_0x43c6('0x33')][_0x43c6('0x39')]('nolimit')){_0x5415a2[_0x43c6('0x20')]=qs[_0x43c6('0x20')](_0x1eba4e[_0x43c6('0x33')][_0x43c6('0x20')]);_0x5415a2[_0x43c6('0x1f')]=qs[_0x43c6('0x1f')](_0x1eba4e['query'][_0x43c6('0x1f')]);}return _0x26662d[_0x43c6('0x5e')](_0x5415a2);}})[_0x43c6('0x25')](function(_0x33657c){if(_0x33657c){return _0x33657c?{'count':_0xa3aa39,'rows':_0x33657c}:null;}})[_0x43c6('0x25')](respondWithResult(_0x915e5f,null))[_0x43c6('0x44')](handleError(_0x915e5f,null));};exports[_0x43c6('0x60')]=function(_0x6a39c1,_0x5c2c04,_0x210245){var _0x28bfe1=_0x6a39c1['body'][_0x43c6('0x61')];return db['Team']['findAll']({'where':{'id':_0x28bfe1},'attributes':['id'],'include':[{'model':db[_0x43c6('0x62')],'as':_0x43c6('0x63'),'attributes':['id','name',_0x43c6('0x64'),_0x43c6('0x65'),_0x43c6('0x66')],'raw':!![]}]})[_0x43c6('0x25')](function(_0x49b9e0){if(_0x49b9e0){var _0x35aaac=_[_0x43c6('0x67')](_0x49b9e0,function(_0x4fa0de){var _0x35484a=_0x4fa0de['get']({'plain':!![]});return _0x35484a[_0x43c6('0x63')];});return db['OpenchannelQueue'][_0x43c6('0x47')]({'where':{'id':_0x6a39c1[_0x43c6('0x4f')]['id']}})[_0x43c6('0x25')](function(_0x12c141){return db['sequelize'][_0x43c6('0x68')](function(_0x2b5ebb){return _0x12c141[_0x43c6('0x60')](_0x28bfe1,{'transaction':_0x2b5ebb})['then'](function(){return BPromise['each'](_0x35aaac,function(_0x591535){return db[_0x43c6('0x54')][_0x43c6('0x69')]({'where':{'UserId':_0x591535['id'],'OpenchannelQueueId':_0x6a39c1['params']['id']},'transaction':_0x2b5ebb});});})[_0x43c6('0x25')](function(){_0x35aaac[_0x43c6('0x6a')](function(_0xa763e1){socket[_0x43c6('0x6b')]('userOpenchannelQueue:save',{'UserId':_0xa763e1['id'],'OpenchannelQueueId':_0x12c141['id']});});});});});}})[_0x43c6('0x25')](respondWithStatusCode(_0x5c2c04,null))[_0x43c6('0x44')](handleError(_0x5c2c04,null));};exports['removeTeams']=function(_0x25d425,_0x48f629,_0x4bb862){return db[_0x43c6('0x5f')][_0x43c6('0x55')]({'where':{'id':_0x25d425[_0x43c6('0x33')]['ids']},'attributes':['id'],'include':[{'model':db[_0x43c6('0x62')],'as':_0x43c6('0x63'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x48f629,null))[_0x43c6('0x25')](function(_0x297650){var _0x4e43e7=_[_0x43c6('0x2e')](_0x297650,'id');var _0x64e20d=[];var _0x26e12d=[];var _0x1641b8=squel[_0x43c6('0x6c')]();_0x1641b8[_0x43c6('0x6d')](_0x43c6('0x6e'))[_0x43c6('0x6f')](_0x43c6('0x70'),'tq')[_0x43c6('0x71')]('user_has_teams','ut',_0x43c6('0x72'))[_0x43c6('0x3c')](_0x43c6('0x73'),_0x25d425[_0x43c6('0x4f')]['id']);for(var _0x44ae8c=0x0;_0x44ae8c<_0x297650[_0x43c6('0x38')];_0x44ae8c+=0x1){let _0x29f0e3=_0x297650[_0x44ae8c];for(var _0x271d35=0x0;_0x271d35<_0x29f0e3[_0x43c6('0x63')][_0x43c6('0x38')];_0x271d35+=0x1){let _0x5dbb73=_0x29f0e3['Agents'][_0x271d35];var _0x48446e=_0x1641b8[_0x43c6('0x74')]();_0x48446e[_0x43c6('0x3c')](_0x43c6('0x75'),_0x5dbb73['id']);_0x26e12d['push'](db[_0x43c6('0x76')][_0x43c6('0x33')](_0x48446e[_0x43c6('0x77')](),{'type':db[_0x43c6('0x76')][_0x43c6('0x78')][_0x43c6('0x79')]})[_0x43c6('0x25')](function(_0x27f75d){if(_0x27f75d['length']===0x1){return _0x5dbb73['id'];}else{var _0x1a4c5c=_[_0x43c6('0x7a')](_[_0x43c6('0x2e')](_0x27f75d,_0x43c6('0x7b')),function(_0x2ee0c3){return _[_0x43c6('0x7c')](_0x4e43e7,_0x2ee0c3);});if(_0x1a4c5c){return _0x5dbb73['id'];}}}));}}return BPromise[_0x43c6('0x7d')](_0x26e12d)[_0x43c6('0x25')](function(_0x2d7b91){_0x64e20d=_(_0x64e20d)['union'](_0x2d7b91)[_0x43c6('0x7e')]()[_0x43c6('0x7f')]();return db[_0x43c6('0x41')]['find']({'where':{'id':_0x25d425[_0x43c6('0x4f')]['id']}})[_0x43c6('0x25')](function(_0x3ee2b1){return db[_0x43c6('0x76')][_0x43c6('0x68')](function(_0x4e980c){return _0x3ee2b1['removeTeams'](_0x25d425[_0x43c6('0x33')][_0x43c6('0x61')],{'transaction':_0x4e980c})[_0x43c6('0x25')](function(){if(!_[_0x43c6('0x80')](_0x64e20d)){return _0x3ee2b1[_0x43c6('0x81')](_0x64e20d,{'transaction':_0x4e980c});}})[_0x43c6('0x25')](function(){_0x64e20d['forEach'](function(_0x8a6465){socket[_0x43c6('0x6b')](_0x43c6('0x82'),{'UserId':_0x8a6465,'OpenchannelQueueId':_0x3ee2b1['id']});});});});});});})[_0x43c6('0x25')](respondWithStatusCode(_0x48f629,null))[_0x43c6('0x44')](handleError(_0x48f629,null));};exports[_0x43c6('0x83')]=function(_0xdee30d,_0x435eec,_0x238a7a){return db[_0x43c6('0x41')][_0x43c6('0x47')]({'where':{'id':_0xdee30d[_0x43c6('0x4f')]['id']}})[_0x43c6('0x25')](handleEntityNotFound(_0x435eec,null))[_0x43c6('0x25')](function(_0x4a8644){if(_0x4a8644){return _0x4a8644[_0x43c6('0x83')](_0xdee30d['body'][_0x43c6('0x61')],_['omit'](_0xdee30d['body'],['ids','id'])||{})[_0x43c6('0x84')](function(_0x43fb45){for(var _0x387c11=0x0;_0x387c11<_0xdee30d[_0x43c6('0x49')][_0x43c6('0x61')][_0x43c6('0x38')];_0x387c11+=0x1){socket['emit'](_0x43c6('0x85'),{'UserId':Number(_0xdee30d[_0x43c6('0x49')]['ids'][_0x387c11]),'OpenchannelQueueId':Number(_0xdee30d['params']['id'])});}return _0x43fb45;});}})[_0x43c6('0x25')](respondWithResult(_0x435eec,null))[_0x43c6('0x44')](handleError(_0x435eec,null));};exports['removeAgents']=function(_0x99c21a,_0x5c1e48,_0x5d0da7){return db[_0x43c6('0x41')][_0x43c6('0x47')]({'where':{'id':_0x99c21a['params']['id']}})[_0x43c6('0x25')](handleEntityNotFound(_0x5c1e48,null))[_0x43c6('0x25')](function(_0x39d2f0){if(_0x39d2f0){return _0x39d2f0['removeAgents'](_0x99c21a[_0x43c6('0x33')][_0x43c6('0x61')])['then'](function(){if(_[_0x43c6('0x86')](_0x99c21a[_0x43c6('0x33')]['ids'])){for(var _0x4a2d79=0x0;_0x4a2d79<_0x99c21a[_0x43c6('0x33')][_0x43c6('0x61')][_0x43c6('0x38')];_0x4a2d79+=0x1){socket[_0x43c6('0x6b')](_0x43c6('0x82'),{'UserId':Number(_0x99c21a[_0x43c6('0x33')][_0x43c6('0x61')][_0x4a2d79]),'OpenchannelQueueId':Number(_0x99c21a[_0x43c6('0x4f')]['id'])});}}else{socket[_0x43c6('0x6b')](_0x43c6('0x82'),{'UserId':Number(_0x99c21a['query'][_0x43c6('0x61')]),'OpenchannelQueueId':Number(_0x99c21a[_0x43c6('0x4f')]['id'])});}});}})[_0x43c6('0x25')](respondWithStatusCode(_0x5c1e48,null))['catch'](handleError(_0x5c1e48,null));};exports[_0x43c6('0x87')]=function(_0xe2598,_0x4b118c,_0x100468){var _0x376069={};var _0x2f890d={};var _0x104345;var _0x11075f;return db[_0x43c6('0x41')][_0x43c6('0x52')]({'where':{'id':_0xe2598[_0x43c6('0x4f')]['id']}})['then'](handleEntityNotFound(_0x4b118c,null))['then'](function(_0x3adba2){if(_0x3adba2){_0x104345=_0x3adba2;_0x2f890d['model']=_['keys'](db[_0x43c6('0x62')][_0x43c6('0x2f')]);_0x2f890d[_0x43c6('0x33')]=_['keys'](_0xe2598['query']);_0x2f890d[_0x43c6('0x34')]=_[_0x43c6('0x36')](_0x2f890d['model'],_0x2f890d['query']);_0x376069['attributes']=_['intersection'](_0x2f890d[_0x43c6('0x32')],qs[_0x43c6('0x37')](_0xe2598[_0x43c6('0x33')][_0x43c6('0x37')]));_0x376069[_0x43c6('0x35')]=_0x376069[_0x43c6('0x35')][_0x43c6('0x38')]?_0x376069[_0x43c6('0x35')]:_0x2f890d[_0x43c6('0x32')];_0x376069[_0x43c6('0x3a')]=qs['sort'](_0xe2598['query'][_0x43c6('0x3b')]);_0x376069[_0x43c6('0x3c')]=qs[_0x43c6('0x34')](_[_0x43c6('0x3d')](_0xe2598[_0x43c6('0x33')],_0x2f890d['filters']));if(_0xe2598[_0x43c6('0x33')][_0x43c6('0x3e')]){_0x376069[_0x43c6('0x3c')]=_[_0x43c6('0x3f')](_0x376069['where'],{'$or':_[_0x43c6('0x2e')](_0x376069['attributes'],function(_0x144b4f){var _0x45098e={};_0x45098e[_0x144b4f]={'$like':'%'+_0xe2598[_0x43c6('0x33')][_0x43c6('0x3e')]+'%'};return _0x45098e;})});}_0x376069=_['merge']({},_0x376069,_0xe2598[_0x43c6('0x40')]);return _0x104345['getAgents'](_0x376069);}})['then'](function(_0x34695e){if(_0x34695e){_0x11075f=_0x34695e[_0x43c6('0x38')];if(!_0xe2598[_0x43c6('0x33')][_0x43c6('0x39')](_0x43c6('0x53'))){_0x376069['limit']=qs[_0x43c6('0x20')](_0xe2598[_0x43c6('0x33')][_0x43c6('0x20')]);_0x376069[_0x43c6('0x1f')]=qs['offset'](_0xe2598[_0x43c6('0x33')]['offset']);}return _0x104345[_0x43c6('0x87')](_0x376069);}})['then'](function(_0x6f4770){if(_0x6f4770){return _0x6f4770?{'count':_0x11075f,'rows':_0x6f4770}:null;}})[_0x43c6('0x25')](respondWithResult(_0x4b118c,null))[_0x43c6('0x44')](handleError(_0x4b118c,null));};
\ No newline at end of file
+var _0xb85b=['includeAll','include','findAll','rows','keys','options','find','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','body','params','describe','getMembers','findOne','nolimit','OpenchannelQueueId','UserOpenchannelQueue','User','findAndCountAll','agent','openchannelPause','updatedAt','createdAt','%s/%s','SIP','getTeams','Team','hasOwnProperty','addTeams','ids','Agents','online','voicePause','interface','flatMap','transaction','each','findOrCreate','forEach','emit','userOpenchannelQueue:save','select','team_has_openchannel_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','push','sequelize','toString','SELECT','every','TeamId','all','union','compact','value','userOpenchannelQueue:remove','addAgents','omit','removeAgents','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','save','update','destroy','then','get','OpenchannelQueues','UserProfileResource','error','stack','send','index','map','OpenchannelQueue','rawAttributes','fieldName','key','name','query','filters','model','attributes','intersection','fields','length','order','sort','where','pick','filter','merge','type','VIRTUAL'];(function(_0x117250,_0x2e51a5){var _0xa0f14c=function(_0x462c56){while(--_0x462c56){_0x117250['push'](_0x117250['shift']());}};_0xa0f14c(++_0x2e51a5);}(_0xb85b,0xd0));var _0xbb85=function(_0xbd08b4,_0x4790ed){_0xbd08b4=_0xbd08b4-0x0;var _0x314f1e=_0xb85b[_0xbd08b4];return _0x314f1e;};'use strict';var emlformat=require(_0xbb85('0x0'));var rimraf=require(_0xbb85('0x1'));var zipdir=require(_0xbb85('0x2'));var jsonpatch=require(_0xbb85('0x3'));var rp=require(_0xbb85('0x4'));var moment=require(_0xbb85('0x5'));var BPromise=require(_0xbb85('0x6'));var Mustache=require('mustache');var util=require(_0xbb85('0x7'));var path=require(_0xbb85('0x8'));var sox=require(_0xbb85('0x9'));var csv=require(_0xbb85('0xa'));var ejs=require(_0xbb85('0xb'));var fs=require('fs');var fs_extra=require(_0xbb85('0xc'));var _=require(_0xbb85('0xd'));var squel=require(_0xbb85('0xe'));var crypto=require(_0xbb85('0xf'));var jsforce=require(_0xbb85('0x10'));var deskjs=require(_0xbb85('0x11'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xbb85('0x12'));var Redis=require(_0xbb85('0x13'));var authService=require(_0xbb85('0x14'));var qs=require(_0xbb85('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xbb85('0x16'));var config=require(_0xbb85('0x17'));var licenseUtil=require(_0xbb85('0x18'));var db=require(_0xbb85('0x19'))['db'];config[_0xbb85('0x1a')]=_[_0xbb85('0x1b')](config['redis'],{'host':_0xbb85('0x1c'),'port':0x18eb});var socket=require(_0xbb85('0x1d'))(new Redis(config[_0xbb85('0x1a')]));require('./openchannelQueue.socket')[_0xbb85('0x1e')](socket);function respondWithStatusCode(_0x1e6357,_0x4b0851){_0x4b0851=_0x4b0851||0xcc;return function(_0x5d48d2){if(_0x5d48d2){return _0x1e6357[_0xbb85('0x1f')](_0x4b0851);}return _0x1e6357[_0xbb85('0x20')](_0x4b0851)[_0xbb85('0x21')]();};}function respondWithResult(_0xc0fbbb,_0xd6d37d){_0xd6d37d=_0xd6d37d||0xc8;return function(_0xceb4f1){if(_0xceb4f1){return _0xc0fbbb['status'](_0xd6d37d)[_0xbb85('0x22')](_0xceb4f1);}};}function respondWithFilteredResult(_0x19c1fa,_0x2cacd0){return function(_0x26b31b){if(_0x26b31b){var _0x50cac3=typeof _0x2cacd0[_0xbb85('0x23')]==='undefined'&&typeof _0x2cacd0[_0xbb85('0x24')]===_0xbb85('0x25');var _0x2cb8f2=_0x26b31b[_0xbb85('0x26')];var _0x5b4187=_0x50cac3?0x0:_0x2cacd0['offset'];var _0x24f79f=_0x50cac3?_0x26b31b[_0xbb85('0x26')]:_0x2cacd0[_0xbb85('0x23')]+_0x2cacd0[_0xbb85('0x24')];var _0x2fa3f0;if(_0x24f79f>=_0x2cb8f2){_0x24f79f=_0x2cb8f2;_0x2fa3f0=0xc8;}else{_0x2fa3f0=0xce;}_0x19c1fa['status'](_0x2fa3f0);return _0x19c1fa[_0xbb85('0x27')](_0xbb85('0x28'),_0x5b4187+'-'+_0x24f79f+'/'+_0x2cb8f2)['json'](_0x26b31b);}return null;};}function patchUpdates(_0x7bfece){return function(_0x51cd1d){try{jsonpatch[_0xbb85('0x29')](_0x51cd1d,_0x7bfece,!![]);}catch(_0x3c6fd6){return BPromise['reject'](_0x3c6fd6);}return _0x51cd1d[_0xbb85('0x2a')]();};}function saveUpdates(_0x14d814,_0x55f66c){return function(_0x1e3e1c){if(_0x1e3e1c){return _0x1e3e1c[_0xbb85('0x2b')](_0x14d814)['then'](function(_0x279556){return _0x279556;});}return null;};}function removeEntity(_0x85463a,_0x1f1ecb){return function(_0x97cc25){if(_0x97cc25){return _0x97cc25[_0xbb85('0x2c')]()[_0xbb85('0x2d')](function(){var _0x2a5361=_0x97cc25[_0xbb85('0x2e')]({'plain':!![]});var _0x5cf2cb=_0xbb85('0x2f');return db[_0xbb85('0x30')][_0xbb85('0x2c')]({'where':{'type':_0x5cf2cb,'resourceId':_0x2a5361['id']}})[_0xbb85('0x2d')](function(){return _0x97cc25;});})[_0xbb85('0x2d')](function(){_0x85463a[_0xbb85('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x681fe2,_0x456c32){return function(_0x25ad87){if(!_0x25ad87){_0x681fe2[_0xbb85('0x1f')](0x194);}return _0x25ad87;};}function handleError(_0x573b72,_0x6f0c5a){_0x6f0c5a=_0x6f0c5a||0x1f4;return function(_0x2520d1){logger[_0xbb85('0x31')](_0x2520d1[_0xbb85('0x32')]);if(_0x2520d1['name']){delete _0x2520d1['name'];}_0x573b72[_0xbb85('0x20')](_0x6f0c5a)[_0xbb85('0x33')](_0x2520d1);};}exports[_0xbb85('0x34')]=function(_0x4ea851,_0x1f17aa){var _0x17a3a8={},_0x25e43e={},_0x3bcb05={'count':0x0,'rows':[]};var _0x281a3b=_[_0xbb85('0x35')](db[_0xbb85('0x36')][_0xbb85('0x37')],function(_0x4d60cf){return{'name':_0x4d60cf[_0xbb85('0x38')],'type':_0x4d60cf['type'][_0xbb85('0x39')]};});_0x25e43e['model']=_[_0xbb85('0x35')](_0x281a3b,_0xbb85('0x3a'));_0x25e43e['query']=_['keys'](_0x4ea851[_0xbb85('0x3b')]);_0x25e43e[_0xbb85('0x3c')]=_['intersection'](_0x25e43e[_0xbb85('0x3d')],_0x25e43e[_0xbb85('0x3b')]);_0x17a3a8[_0xbb85('0x3e')]=_[_0xbb85('0x3f')](_0x25e43e[_0xbb85('0x3d')],qs[_0xbb85('0x40')](_0x4ea851['query'][_0xbb85('0x40')]));_0x17a3a8[_0xbb85('0x3e')]=_0x17a3a8[_0xbb85('0x3e')][_0xbb85('0x41')]?_0x17a3a8[_0xbb85('0x3e')]:_0x25e43e['model'];if(!_0x4ea851[_0xbb85('0x3b')]['hasOwnProperty']('nolimit')){_0x17a3a8[_0xbb85('0x24')]=qs[_0xbb85('0x24')](_0x4ea851[_0xbb85('0x3b')][_0xbb85('0x24')]);_0x17a3a8[_0xbb85('0x23')]=qs[_0xbb85('0x23')](_0x4ea851[_0xbb85('0x3b')][_0xbb85('0x23')]);}_0x17a3a8[_0xbb85('0x42')]=qs[_0xbb85('0x43')](_0x4ea851[_0xbb85('0x3b')][_0xbb85('0x43')]);_0x17a3a8[_0xbb85('0x44')]=qs[_0xbb85('0x3c')](_[_0xbb85('0x45')](_0x4ea851[_0xbb85('0x3b')],_0x25e43e[_0xbb85('0x3c')]),_0x281a3b);if(_0x4ea851[_0xbb85('0x3b')][_0xbb85('0x46')]){_0x17a3a8[_0xbb85('0x44')]=_[_0xbb85('0x47')](_0x17a3a8['where'],{'$or':_[_0xbb85('0x35')](_0x281a3b,function(_0x59cbf7){if(_0x59cbf7[_0xbb85('0x48')]!==_0xbb85('0x49')){var _0x5577f8={};_0x5577f8[_0x59cbf7[_0xbb85('0x3a')]]={'$like':'%'+_0x4ea851['query'][_0xbb85('0x46')]+'%'};return _0x5577f8;}})});}_0x17a3a8=_[_0xbb85('0x47')]({},_0x17a3a8,_0x4ea851['options']);var _0x5e60f4={'where':_0x17a3a8[_0xbb85('0x44')]};return db['OpenchannelQueue'][_0xbb85('0x26')](_0x5e60f4)['then'](function(_0x331b52){_0x3bcb05['count']=_0x331b52;if(_0x4ea851[_0xbb85('0x3b')][_0xbb85('0x4a')]){_0x17a3a8[_0xbb85('0x4b')]=[{'all':!![]}];}return db[_0xbb85('0x36')][_0xbb85('0x4c')](_0x17a3a8);})['then'](function(_0x1421b3){_0x3bcb05[_0xbb85('0x4d')]=_0x1421b3;return _0x3bcb05;})[_0xbb85('0x2d')](respondWithFilteredResult(_0x1f17aa,_0x17a3a8))['catch'](handleError(_0x1f17aa,null));};exports['show']=function(_0xf4513c,_0x56c534){var _0x538b60={'raw':!![],'where':{'id':_0xf4513c['params']['id']}},_0x471410={};_0x471410[_0xbb85('0x3d')]=_[_0xbb85('0x4e')](db[_0xbb85('0x36')][_0xbb85('0x37')]);_0x471410[_0xbb85('0x3b')]=_[_0xbb85('0x4e')](_0xf4513c[_0xbb85('0x3b')]);_0x471410[_0xbb85('0x3c')]=_[_0xbb85('0x3f')](_0x471410[_0xbb85('0x3d')],_0x471410[_0xbb85('0x3b')]);_0x538b60[_0xbb85('0x3e')]=_[_0xbb85('0x3f')](_0x471410[_0xbb85('0x3d')],qs['fields'](_0xf4513c['query'][_0xbb85('0x40')]));_0x538b60['attributes']=_0x538b60[_0xbb85('0x3e')]['length']?_0x538b60[_0xbb85('0x3e')]:_0x471410[_0xbb85('0x3d')];if(_0xf4513c[_0xbb85('0x3b')][_0xbb85('0x4a')]){_0x538b60['include']=[{'all':!![]}];}_0x538b60=_[_0xbb85('0x47')]({},_0x538b60,_0xf4513c[_0xbb85('0x4f')]);return db['OpenchannelQueue'][_0xbb85('0x50')](_0x538b60)[_0xbb85('0x2d')](handleEntityNotFound(_0x56c534,null))['then'](respondWithResult(_0x56c534,null))[_0xbb85('0x51')](handleError(_0x56c534,null));};exports[_0xbb85('0x52')]=function(_0x1fd042,_0x212cd4){return db['OpenchannelQueue'][_0xbb85('0x52')](_0x1fd042['body'],{})[_0xbb85('0x2d')](function(_0x2c2186){var _0x2a36af=_0x1fd042[_0xbb85('0x53')][_0xbb85('0x2e')]({'plain':!![]});if(!_0x2a36af)throw new Error(_0xbb85('0x54'));if(_0x2a36af['role']===_0xbb85('0x53')){var _0x37dae5=_0x2c2186[_0xbb85('0x2e')]({'plain':!![]});var _0x4bae1c='OpenchannelQueues';return db[_0xbb85('0x55')][_0xbb85('0x50')]({'where':{'name':_0x4bae1c,'userProfileId':_0x2a36af[_0xbb85('0x56')]},'raw':!![]})[_0xbb85('0x2d')](function(_0x427e48){if(_0x427e48&&_0x427e48[_0xbb85('0x57')]===0x0){return db['UserProfileResource'][_0xbb85('0x52')]({'name':_0x37dae5['name'],'resourceId':_0x37dae5['id'],'type':_0x427e48[_0xbb85('0x3a')],'sectionId':_0x427e48['id']},{})[_0xbb85('0x2d')](function(){return _0x2c2186;});}else{return _0x2c2186;}})[_0xbb85('0x51')](function(_0x5a01d3){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5a01d3);throw _0x5a01d3;});}return _0x2c2186;})[_0xbb85('0x2d')](respondWithResult(_0x212cd4,0xc9))[_0xbb85('0x51')](handleError(_0x212cd4,null));};exports[_0xbb85('0x2b')]=function(_0x4a7cba,_0x522637){if(_0x4a7cba[_0xbb85('0x58')]['id']){delete _0x4a7cba[_0xbb85('0x58')]['id'];}return db['OpenchannelQueue'][_0xbb85('0x50')]({'where':{'id':_0x4a7cba[_0xbb85('0x59')]['id']}})[_0xbb85('0x2d')](handleEntityNotFound(_0x522637,null))[_0xbb85('0x2d')](saveUpdates(_0x4a7cba[_0xbb85('0x58')],null))[_0xbb85('0x2d')](respondWithResult(_0x522637,null))[_0xbb85('0x51')](handleError(_0x522637,null));};exports['destroy']=function(_0x1233e8,_0x4714cb){return db[_0xbb85('0x36')][_0xbb85('0x50')]({'where':{'id':_0x1233e8[_0xbb85('0x59')]['id']}})[_0xbb85('0x2d')](handleEntityNotFound(_0x4714cb,null))[_0xbb85('0x2d')](removeEntity(_0x4714cb,null))[_0xbb85('0x51')](handleError(_0x4714cb,null));};exports[_0xbb85('0x5a')]=function(_0x5ee6f0,_0x5a5dee){return db[_0xbb85('0x36')][_0xbb85('0x5a')]()[_0xbb85('0x2d')](respondWithResult(_0x5a5dee,null))[_0xbb85('0x51')](handleError(_0x5a5dee,null));};exports[_0xbb85('0x5b')]=function(_0x2ab645,_0x334bad,_0x2d4f2a){var _0x5f0b0d={'raw':!![],'where':{}},_0x1326ce={},_0x31b078;return db[_0xbb85('0x36')][_0xbb85('0x5c')]({'where':{'id':_0x2ab645['params']['id']}})[_0xbb85('0x2d')](handleEntityNotFound(_0x334bad,null))[_0xbb85('0x2d')](function(_0x24aecd){if(_0x24aecd){_0x31b078=_0x24aecd[_0xbb85('0x2e')]({'plain':!![]});_0x1326ce[_0xbb85('0x3d')]=_[_0xbb85('0x4e')](db['UserOpenchannelQueue'][_0xbb85('0x37')]);_0x1326ce[_0xbb85('0x3b')]=_[_0xbb85('0x4e')](_0x2ab645[_0xbb85('0x3b')]);_0x1326ce[_0xbb85('0x3c')]=_[_0xbb85('0x3f')](_0x1326ce[_0xbb85('0x3d')],_0x1326ce[_0xbb85('0x3b')]);_0x5f0b0d[_0xbb85('0x3e')]=_['intersection'](_0x1326ce[_0xbb85('0x3d')],qs[_0xbb85('0x40')](_0x2ab645[_0xbb85('0x3b')][_0xbb85('0x40')]));_0x5f0b0d['attributes']=_0x5f0b0d['attributes'][_0xbb85('0x41')]?_0x5f0b0d[_0xbb85('0x3e')]:_0x1326ce[_0xbb85('0x3d')];if(!_0x2ab645[_0xbb85('0x3b')]['hasOwnProperty'](_0xbb85('0x5d'))){_0x5f0b0d[_0xbb85('0x24')]=qs[_0xbb85('0x24')](_0x2ab645[_0xbb85('0x3b')]['limit']);_0x5f0b0d[_0xbb85('0x23')]=qs['offset'](_0x2ab645[_0xbb85('0x3b')][_0xbb85('0x23')]);}_0x5f0b0d[_0xbb85('0x42')]=qs[_0xbb85('0x43')](_0x2ab645[_0xbb85('0x3b')]['sort']);_0x5f0b0d['where']=qs[_0xbb85('0x3c')](_[_0xbb85('0x45')](_0x2ab645[_0xbb85('0x3b')],_0x1326ce[_0xbb85('0x3c')]));_0x5f0b0d['where'][_0xbb85('0x5e')]=_0x24aecd['id'];if(_0x2ab645[_0xbb85('0x3b')][_0xbb85('0x46')]){_0x5f0b0d['where']=_['merge'](_0x5f0b0d[_0xbb85('0x44')],{'$or':_[_0xbb85('0x35')](_0x5f0b0d[_0xbb85('0x3e')],function(_0x91ffe4){var _0x434e5b={};_0x434e5b[_0x91ffe4]={'$like':'%'+_0x2ab645[_0xbb85('0x3b')][_0xbb85('0x46')]+'%'};return _0x434e5b;})});}_0x5f0b0d=_[_0xbb85('0x47')]({},_0x5f0b0d,_0x2ab645[_0xbb85('0x4f')]);return db[_0xbb85('0x5f')]['findAll'](_0x5f0b0d);}})[_0xbb85('0x2d')](function(_0x40d3b1){if(_0x40d3b1){return db[_0xbb85('0x60')][_0xbb85('0x61')]({'where':{'id':_['map'](_0x40d3b1,'UserId'),'role':_0xbb85('0x62')},'attributes':['id',_0xbb85('0x3a'),_0xbb85('0x63'),_0xbb85('0x64'),_0xbb85('0x65')]});}})[_0xbb85('0x2d')](function(_0x48ad99){if(_0x48ad99){return{'count':_0x48ad99[_0xbb85('0x26')],'rows':_[_0xbb85('0x35')](_0x48ad99[_0xbb85('0x4d')],function(_0x4612cf){return{'membername':_0x4612cf[_0xbb85('0x3a')],'UserId':_0x4612cf['id'],'queue_name':_0x31b078[_0xbb85('0x3a')],'OpenchannelQueueId':_0x31b078['id'],'interface':util['format'](_0xbb85('0x66'),_0xbb85('0x67'),_0x4612cf[_0xbb85('0x3a')]),'penalty':0x0,'paused':_0x4612cf['openchannelPause'],'createdAt':_0x4612cf[_0xbb85('0x65')],'updatedAt':_0x4612cf['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0xbb85('0x2d')](respondWithFilteredResult(_0x334bad,_0x5f0b0d))[_0xbb85('0x51')](handleError(_0x334bad,null));};exports[_0xbb85('0x68')]=function(_0xe4b2c4,_0x3fbb68,_0x3cd152){var _0x449196={};var _0x2ff02f={};var _0x4a5b91;var _0x2effff;return db[_0xbb85('0x36')][_0xbb85('0x5c')]({'where':{'id':_0xe4b2c4[_0xbb85('0x59')]['id']}})[_0xbb85('0x2d')](handleEntityNotFound(_0x3fbb68,null))[_0xbb85('0x2d')](function(_0x19c608){if(_0x19c608){_0x4a5b91=_0x19c608;_0x2ff02f[_0xbb85('0x3d')]=_[_0xbb85('0x4e')](db[_0xbb85('0x69')][_0xbb85('0x37')]);_0x2ff02f[_0xbb85('0x3b')]=_[_0xbb85('0x4e')](_0xe4b2c4[_0xbb85('0x3b')]);_0x2ff02f['filters']=_[_0xbb85('0x3f')](_0x2ff02f[_0xbb85('0x3d')],_0x2ff02f[_0xbb85('0x3b')]);_0x449196[_0xbb85('0x3e')]=_[_0xbb85('0x3f')](_0x2ff02f['model'],qs['fields'](_0xe4b2c4[_0xbb85('0x3b')][_0xbb85('0x40')]));_0x449196['attributes']=_0x449196[_0xbb85('0x3e')][_0xbb85('0x41')]?_0x449196[_0xbb85('0x3e')]:_0x2ff02f[_0xbb85('0x3d')];_0x449196[_0xbb85('0x42')]=qs[_0xbb85('0x43')](_0xe4b2c4['query'][_0xbb85('0x43')]);_0x449196[_0xbb85('0x44')]=qs[_0xbb85('0x3c')](_[_0xbb85('0x45')](_0xe4b2c4['query'],_0x2ff02f[_0xbb85('0x3c')]));if(_0xe4b2c4[_0xbb85('0x3b')][_0xbb85('0x46')]){_0x449196[_0xbb85('0x44')]=_[_0xbb85('0x47')](_0x449196['where'],{'$or':_[_0xbb85('0x35')](_0x449196[_0xbb85('0x3e')],function(_0x1c87d6){var _0x3fc7eb={};_0x3fc7eb[_0x1c87d6]={'$like':'%'+_0xe4b2c4['query'][_0xbb85('0x46')]+'%'};return _0x3fc7eb;})});}_0x449196=_[_0xbb85('0x47')]({},_0x449196,_0xe4b2c4[_0xbb85('0x4f')]);return _0x4a5b91[_0xbb85('0x68')](_0x449196);}})['then'](function(_0x221a4e){if(_0x221a4e){_0x2effff=_0x221a4e[_0xbb85('0x41')];if(!_0xe4b2c4['query'][_0xbb85('0x6a')](_0xbb85('0x5d'))){_0x449196[_0xbb85('0x24')]=qs['limit'](_0xe4b2c4[_0xbb85('0x3b')][_0xbb85('0x24')]);_0x449196[_0xbb85('0x23')]=qs[_0xbb85('0x23')](_0xe4b2c4[_0xbb85('0x3b')][_0xbb85('0x23')]);}return _0x4a5b91[_0xbb85('0x68')](_0x449196);}})[_0xbb85('0x2d')](function(_0x1478fa){if(_0x1478fa){return _0x1478fa?{'count':_0x2effff,'rows':_0x1478fa}:null;}})['then'](respondWithResult(_0x3fbb68,null))['catch'](handleError(_0x3fbb68,null));};exports[_0xbb85('0x6b')]=function(_0x208d60,_0x6cef26,_0x15036a){var _0x561518=_0x208d60[_0xbb85('0x58')][_0xbb85('0x6c')];return db['Team'][_0xbb85('0x4c')]({'where':{'id':_0x561518},'attributes':['id'],'include':[{'model':db[_0xbb85('0x60')],'as':_0xbb85('0x6d'),'attributes':['id',_0xbb85('0x3a'),_0xbb85('0x6e'),_0xbb85('0x6f'),_0xbb85('0x70')],'raw':!![]}]})[_0xbb85('0x2d')](function(_0x52a794){if(_0x52a794){var _0x4a0767=_[_0xbb85('0x71')](_0x52a794,function(_0x24b101){var _0x3e9c02=_0x24b101[_0xbb85('0x2e')]({'plain':!![]});return _0x3e9c02[_0xbb85('0x6d')];});return db[_0xbb85('0x36')][_0xbb85('0x50')]({'where':{'id':_0x208d60[_0xbb85('0x59')]['id']}})[_0xbb85('0x2d')](function(_0x23c99e){return db['sequelize'][_0xbb85('0x72')](function(_0x58dca5){return _0x23c99e[_0xbb85('0x6b')](_0x561518,{'transaction':_0x58dca5})[_0xbb85('0x2d')](function(){return BPromise[_0xbb85('0x73')](_0x4a0767,function(_0x13860d){return db[_0xbb85('0x5f')][_0xbb85('0x74')]({'where':{'UserId':_0x13860d['id'],'OpenchannelQueueId':_0x208d60[_0xbb85('0x59')]['id']},'transaction':_0x58dca5});});})[_0xbb85('0x2d')](function(){_0x4a0767[_0xbb85('0x75')](function(_0x596faa){socket[_0xbb85('0x76')](_0xbb85('0x77'),{'UserId':_0x596faa['id'],'OpenchannelQueueId':_0x23c99e['id']});});});});});}})['then'](respondWithStatusCode(_0x6cef26,null))[_0xbb85('0x51')](handleError(_0x6cef26,null));};exports['removeTeams']=function(_0x5be3fa,_0x5028c2,_0x3be9c8){return db[_0xbb85('0x69')]['findAll']({'where':{'id':_0x5be3fa[_0xbb85('0x3b')][_0xbb85('0x6c')]},'attributes':['id'],'include':[{'model':db[_0xbb85('0x60')],'as':_0xbb85('0x6d'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x5028c2,null))[_0xbb85('0x2d')](function(_0x4582f8){var _0x71dfa4=_[_0xbb85('0x35')](_0x4582f8,'id');var _0x39fb0b=[];var _0xef47e1=[];var _0x59f52f=squel[_0xbb85('0x78')]();_0x59f52f['field']('tq.TeamId')['from'](_0xbb85('0x79'),'tq')[_0xbb85('0x7a')](_0xbb85('0x7b'),'ut',_0xbb85('0x7c'))[_0xbb85('0x44')](_0xbb85('0x7d'),_0x5be3fa['params']['id']);for(var _0x2c9a32=0x0;_0x2c9a32<_0x4582f8[_0xbb85('0x41')];_0x2c9a32+=0x1){let _0x2e6d94=_0x4582f8[_0x2c9a32];for(var _0x2b1359=0x0;_0x2b1359<_0x2e6d94[_0xbb85('0x6d')][_0xbb85('0x41')];_0x2b1359+=0x1){let _0x35639a=_0x2e6d94[_0xbb85('0x6d')][_0x2b1359];var _0xf8ea26=_0x59f52f['clone']();_0xf8ea26[_0xbb85('0x44')]('ut.UserId\x20=\x20?',_0x35639a['id']);_0xef47e1[_0xbb85('0x7e')](db[_0xbb85('0x7f')]['query'](_0xf8ea26[_0xbb85('0x80')](),{'type':db[_0xbb85('0x7f')]['QueryTypes'][_0xbb85('0x81')]})[_0xbb85('0x2d')](function(_0x3e16a6){if(_0x3e16a6[_0xbb85('0x41')]===0x1){return _0x35639a['id'];}else{var _0x4130b1=_[_0xbb85('0x82')](_[_0xbb85('0x35')](_0x3e16a6,_0xbb85('0x83')),function(_0x3534b4){return _['includes'](_0x71dfa4,_0x3534b4);});if(_0x4130b1){return _0x35639a['id'];}}}));}}return BPromise[_0xbb85('0x84')](_0xef47e1)['then'](function(_0x3c9a31){_0x39fb0b=_(_0x39fb0b)[_0xbb85('0x85')](_0x3c9a31)[_0xbb85('0x86')]()[_0xbb85('0x87')]();return db[_0xbb85('0x36')][_0xbb85('0x50')]({'where':{'id':_0x5be3fa[_0xbb85('0x59')]['id']}})[_0xbb85('0x2d')](function(_0x16e4e0){return db['sequelize']['transaction'](function(_0x36b0eb){return _0x16e4e0['removeTeams'](_0x5be3fa[_0xbb85('0x3b')][_0xbb85('0x6c')],{'transaction':_0x36b0eb})[_0xbb85('0x2d')](function(){if(!_['isEmpty'](_0x39fb0b)){return _0x16e4e0['removeAgents'](_0x39fb0b,{'transaction':_0x36b0eb});}})['then'](function(){_0x39fb0b[_0xbb85('0x75')](function(_0x21422a){socket[_0xbb85('0x76')](_0xbb85('0x88'),{'UserId':_0x21422a,'OpenchannelQueueId':_0x16e4e0['id']});});});});});});})[_0xbb85('0x2d')](respondWithStatusCode(_0x5028c2,null))[_0xbb85('0x51')](handleError(_0x5028c2,null));};exports['addAgents']=function(_0x247bda,_0x4c6d57,_0x49bcda){return db[_0xbb85('0x36')][_0xbb85('0x50')]({'where':{'id':_0x247bda['params']['id']}})[_0xbb85('0x2d')](handleEntityNotFound(_0x4c6d57,null))[_0xbb85('0x2d')](function(_0x44f659){if(_0x44f659){return _0x44f659[_0xbb85('0x89')](_0x247bda[_0xbb85('0x58')][_0xbb85('0x6c')],_[_0xbb85('0x8a')](_0x247bda[_0xbb85('0x58')],[_0xbb85('0x6c'),'id'])||{})['spread'](function(_0x526e1b){for(var _0x4613d3=0x0;_0x4613d3<_0x247bda[_0xbb85('0x58')]['ids'][_0xbb85('0x41')];_0x4613d3+=0x1){socket[_0xbb85('0x76')](_0xbb85('0x77'),{'UserId':Number(_0x247bda[_0xbb85('0x58')]['ids'][_0x4613d3]),'OpenchannelQueueId':Number(_0x247bda[_0xbb85('0x59')]['id'])});}return _0x526e1b;});}})['then'](respondWithResult(_0x4c6d57,null))[_0xbb85('0x51')](handleError(_0x4c6d57,null));};exports[_0xbb85('0x8b')]=function(_0x1c6d92,_0x3fce6d,_0x312c29){return db[_0xbb85('0x36')]['find']({'where':{'id':_0x1c6d92[_0xbb85('0x59')]['id']}})[_0xbb85('0x2d')](handleEntityNotFound(_0x3fce6d,null))[_0xbb85('0x2d')](function(_0x4476d6){if(_0x4476d6){return _0x4476d6['removeAgents'](_0x1c6d92[_0xbb85('0x3b')][_0xbb85('0x6c')])[_0xbb85('0x2d')](function(){if(_['isArray'](_0x1c6d92[_0xbb85('0x3b')][_0xbb85('0x6c')])){for(var _0x3269b6=0x0;_0x3269b6<_0x1c6d92['query'][_0xbb85('0x6c')][_0xbb85('0x41')];_0x3269b6+=0x1){socket[_0xbb85('0x76')]('userOpenchannelQueue:remove',{'UserId':Number(_0x1c6d92[_0xbb85('0x3b')]['ids'][_0x3269b6]),'OpenchannelQueueId':Number(_0x1c6d92[_0xbb85('0x59')]['id'])});}}else{socket[_0xbb85('0x76')](_0xbb85('0x88'),{'UserId':Number(_0x1c6d92[_0xbb85('0x3b')][_0xbb85('0x6c')]),'OpenchannelQueueId':Number(_0x1c6d92[_0xbb85('0x59')]['id'])});}});}})['then'](respondWithStatusCode(_0x3fce6d,null))[_0xbb85('0x51')](handleError(_0x3fce6d,null));};exports[_0xbb85('0x8c')]=function(_0x267e45,_0x4046f2,_0x454eab){var _0x29ef5a={};var _0x3e246c={};var _0x201760;var _0x357a0e;return db[_0xbb85('0x36')][_0xbb85('0x5c')]({'where':{'id':_0x267e45[_0xbb85('0x59')]['id']}})[_0xbb85('0x2d')](handleEntityNotFound(_0x4046f2,null))[_0xbb85('0x2d')](function(_0x34e683){if(_0x34e683){_0x201760=_0x34e683;_0x3e246c[_0xbb85('0x3d')]=_[_0xbb85('0x4e')](db['User']['rawAttributes']);_0x3e246c[_0xbb85('0x3b')]=_[_0xbb85('0x4e')](_0x267e45[_0xbb85('0x3b')]);_0x3e246c[_0xbb85('0x3c')]=_[_0xbb85('0x3f')](_0x3e246c[_0xbb85('0x3d')],_0x3e246c['query']);_0x29ef5a[_0xbb85('0x3e')]=_[_0xbb85('0x3f')](_0x3e246c[_0xbb85('0x3d')],qs[_0xbb85('0x40')](_0x267e45[_0xbb85('0x3b')][_0xbb85('0x40')]));_0x29ef5a[_0xbb85('0x3e')]=_0x29ef5a['attributes'][_0xbb85('0x41')]?_0x29ef5a[_0xbb85('0x3e')]:_0x3e246c[_0xbb85('0x3d')];_0x29ef5a[_0xbb85('0x42')]=qs[_0xbb85('0x43')](_0x267e45[_0xbb85('0x3b')][_0xbb85('0x43')]);_0x29ef5a[_0xbb85('0x44')]=qs['filters'](_['pick'](_0x267e45[_0xbb85('0x3b')],_0x3e246c[_0xbb85('0x3c')]));if(_0x267e45[_0xbb85('0x3b')][_0xbb85('0x46')]){_0x29ef5a['where']=_[_0xbb85('0x47')](_0x29ef5a[_0xbb85('0x44')],{'$or':_['map'](_0x29ef5a[_0xbb85('0x3e')],function(_0x3b5489){var _0x3553ce={};_0x3553ce[_0x3b5489]={'$like':'%'+_0x267e45[_0xbb85('0x3b')]['filter']+'%'};return _0x3553ce;})});}_0x29ef5a=_[_0xbb85('0x47')]({},_0x29ef5a,_0x267e45['options']);return _0x201760[_0xbb85('0x8c')](_0x29ef5a);}})['then'](function(_0x220417){if(_0x220417){_0x357a0e=_0x220417[_0xbb85('0x41')];if(!_0x267e45['query']['hasOwnProperty'](_0xbb85('0x5d'))){_0x29ef5a[_0xbb85('0x24')]=qs[_0xbb85('0x24')](_0x267e45[_0xbb85('0x3b')][_0xbb85('0x24')]);_0x29ef5a[_0xbb85('0x23')]=qs[_0xbb85('0x23')](_0x267e45['query'][_0xbb85('0x23')]);}return _0x201760[_0xbb85('0x8c')](_0x29ef5a);}})[_0xbb85('0x2d')](function(_0x3fbdfe){if(_0x3fbdfe){return _0x3fbdfe?{'count':_0x357a0e,'rows':_0x3fbdfe}:null;}})[_0xbb85('0x2d')](respondWithResult(_0x4046f2,null))[_0xbb85('0x51')](handleError(_0x4046f2,null));};
\ No newline at end of file
index 5f03a66..8255d0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba6a=['events','save','remove','emit','hasOwnProperty','hook'];(function(_0x4f749a,_0x541f4f){var _0x1152b7=function(_0xca0409){while(--_0xca0409){_0x4f749a['push'](_0x4f749a['shift']());}};_0x1152b7(++_0x541f4f);}(_0xba6a,0x19e));var _0xaba6=function(_0xf79bae,_0x263b2a){_0xf79bae=_0xf79bae-0x0;var _0x5d2cb7=_0xba6a[_0xf79bae];return _0x5d2cb7;};'use strict';var EventEmitter=require(_0xaba6('0x0'));var OpenchannelQueue=require('../../mysqldb')['db']['OpenchannelQueue'];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xaba6('0x1'),'afterUpdate':'update','afterDestroy':_0xaba6('0x2')};function emitEvent(_0x2b7a57){return function(_0xb9268b,_0x52388e,_0x518e15){OpenchannelQueueEvents['emit'](_0x2b7a57+':'+_0xb9268b['id'],_0xb9268b);OpenchannelQueueEvents[_0xaba6('0x3')](_0x2b7a57,_0xb9268b);_0x518e15(null);};}for(var e in events){if(events[_0xaba6('0x4')](e)){var event=events[e];OpenchannelQueue[_0xaba6('0x5')](e,emitEvent(event));}}module['exports']=OpenchannelQueueEvents;
\ No newline at end of file
+var _0xfbc2=['setMaxListeners','save','update','remove','emit','exports','../../mysqldb','OpenchannelQueue'];(function(_0x252884,_0x117ddf){var _0x4de0e6=function(_0x442519){while(--_0x442519){_0x252884['push'](_0x252884['shift']());}};_0x4de0e6(++_0x117ddf);}(_0xfbc2,0x1be));var _0x2fbc=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfbc2[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require('events');var OpenchannelQueue=require(_0x2fbc('0x0'))['db'][_0x2fbc('0x1')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x2fbc('0x2')](0x0);var events={'afterCreate':_0x2fbc('0x3'),'afterUpdate':_0x2fbc('0x4'),'afterDestroy':_0x2fbc('0x5')};function emitEvent(_0x50263c){return function(_0x45e986,_0x109d80,_0x530ba9){OpenchannelQueueEvents[_0x2fbc('0x6')](_0x50263c+':'+_0x45e986['id'],_0x45e986);OpenchannelQueueEvents[_0x2fbc('0x6')](_0x50263c,_0x45e986);_0x530ba9(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelQueue['hook'](e,emitEvent(event));}}module[_0x2fbc('0x7')]=OpenchannelQueueEvents;
\ No newline at end of file
index 90e1295..741312a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdec6=['moment','path','rimraf','../../config/environment','./openchannelQueue.attributes','exports','define','OpenchannelQueue','lodash','../../config/logger','api'];(function(_0x1bba84,_0x387145){var _0x574857=function(_0x42caf5){while(--_0x42caf5){_0x1bba84['push'](_0x1bba84['shift']());}};_0x574857(++_0x387145);}(_0xdec6,0xe4));var _0x6dec=function(_0x2ec461,_0x5f588a){_0x2ec461=_0x2ec461-0x0;var _0x28603d=_0xdec6[_0x2ec461];return _0x28603d;};'use strict';var _=require(_0x6dec('0x0'));var util=require('util');var logger=require(_0x6dec('0x1'))(_0x6dec('0x2'));var moment=require(_0x6dec('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x6dec('0x4'));var rimraf=require(_0x6dec('0x5'));var config=require(_0x6dec('0x6'));var attributes=require(_0x6dec('0x7'));module[_0x6dec('0x8')]=function(_0x3bdb95,_0x373a64){return _0x3bdb95[_0x6dec('0x9')](_0x6dec('0xa'),attributes,{'tableName':'openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x323e=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueue.attributes','exports','define','openchannel_queues','lodash','util'];(function(_0x5c7ca1,_0x3d7ad2){var _0x4b5779=function(_0x425a40){while(--_0x425a40){_0x5c7ca1['push'](_0x5c7ca1['shift']());}};_0x4b5779(++_0x3d7ad2);}(_0x323e,0xde));var _0xe323=function(_0x537d53,_0x26d1f0){_0x537d53=_0x537d53-0x0;var _0x1b1faa=_0x323e[_0x537d53];return _0x1b1faa;};'use strict';var _=require(_0xe323('0x0'));var util=require(_0xe323('0x1'));var logger=require(_0xe323('0x2'))(_0xe323('0x3'));var moment=require(_0xe323('0x4'));var BPromise=require(_0xe323('0x5'));var rp=require(_0xe323('0x6'));var fs=require('fs');var path=require(_0xe323('0x7'));var rimraf=require(_0xe323('0x8'));var config=require(_0xe323('0x9'));var attributes=require(_0xe323('0xa'));module[_0xe323('0xb')]=function(_0x2d13a7,_0x2b35a4){return _0x2d13a7[_0xe323('0xc')]('OpenchannelQueue',attributes,{'tableName':_0xe323('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 22e1150..f3f5ac9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b9d=['where','attributes','map','include','model','ShowOpenchannelQueue','OpenchannelQueue','find','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','socket.io-emitter','./openchannelQueue.socket','register','request','then','info','OpenchannelQueue,\x20%s,\x20%s','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetOpenchannelQueue','findAll','options','raw'];(function(_0xd92ffd,_0x5c38eb){var _0x8adb0b=function(_0x44b145){while(--_0x44b145){_0xd92ffd['push'](_0xd92ffd['shift']());}};_0x8adb0b(++_0x5c38eb);}(_0x0b9d,0xfe));var _0xd0b9=function(_0x1779b0,_0x4bc60f){_0x1779b0=_0x1779b0-0x0;var _0x5d4883=_0x0b9d[_0x1779b0];return _0x5d4883;};'use strict';var _=require('lodash');var util=require(_0xd0b9('0x0'));var moment=require(_0xd0b9('0x1'));var BPromise=require(_0xd0b9('0x2'));var rs=require(_0xd0b9('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd0b9('0x4'))['db'];var utils=require(_0xd0b9('0x5'));var logger=require(_0xd0b9('0x6'))(_0xd0b9('0x7'));var config=require(_0xd0b9('0x8'));var jayson=require(_0xd0b9('0x9'));var client=jayson[_0xd0b9('0xa')]['http']({'port':0x232a});config[_0xd0b9('0xb')]=_[_0xd0b9('0xc')](config[_0xd0b9('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xd0b9('0xd'))(new Redis(config['redis']));require(_0xd0b9('0xe'))[_0xd0b9('0xf')](socket);function respondWithRpcPromise(_0x409356,_0x2c23b6,_0x5422a6){return new BPromise(function(_0x135e4f,_0x1d182b){return client[_0xd0b9('0x10')](_0x409356,_0x5422a6)[_0xd0b9('0x11')](function(_0x227fa5){logger[_0xd0b9('0x12')](_0xd0b9('0x13'),_0x2c23b6,'request\x20sent');logger[_0xd0b9('0x14')](_0xd0b9('0x15'),_0x2c23b6,_0xd0b9('0x16'),JSON[_0xd0b9('0x17')](_0x227fa5));if(_0x227fa5['error']){if(_0x227fa5[_0xd0b9('0x18')][_0xd0b9('0x19')]===0x1f4){logger[_0xd0b9('0x18')](_0xd0b9('0x13'),_0x2c23b6,_0x227fa5[_0xd0b9('0x18')][_0xd0b9('0x1a')]);return _0x1d182b(_0x227fa5['error'][_0xd0b9('0x1a')]);}logger[_0xd0b9('0x18')](_0xd0b9('0x13'),_0x2c23b6,_0x227fa5[_0xd0b9('0x18')]['message']);return _0x135e4f(_0x227fa5[_0xd0b9('0x18')][_0xd0b9('0x1a')]);}else{logger[_0xd0b9('0x12')]('OpenchannelQueue,\x20%s,\x20%s',_0x2c23b6,_0xd0b9('0x16'));_0x135e4f(_0x227fa5[_0xd0b9('0x1b')][_0xd0b9('0x1a')]);}})[_0xd0b9('0x1c')](function(_0x360256){logger[_0xd0b9('0x18')](_0xd0b9('0x13'),_0x2c23b6,_0x360256);_0x1d182b(_0x360256);});});}exports[_0xd0b9('0x1d')]=function(_0x1fcef9){var _0x5cac5c=this;return new Promise(function(_0x4f8174,_0x433111){return db['OpenchannelQueue'][_0xd0b9('0x1e')]({'raw':_0x1fcef9[_0xd0b9('0x1f')]?_0x1fcef9[_0xd0b9('0x1f')][_0xd0b9('0x20')]===undefined?!![]:![]:!![],'where':_0x1fcef9[_0xd0b9('0x1f')]?_0x1fcef9[_0xd0b9('0x1f')][_0xd0b9('0x21')]||null:null,'attributes':_0x1fcef9[_0xd0b9('0x1f')]?_0x1fcef9[_0xd0b9('0x1f')][_0xd0b9('0x22')]||null:null,'limit':_0x1fcef9[_0xd0b9('0x1f')]?_0x1fcef9[_0xd0b9('0x1f')]['limit']||null:null,'include':_0x1fcef9['options']?_0x1fcef9[_0xd0b9('0x1f')]['include']?_[_0xd0b9('0x23')](_0x1fcef9['options'][_0xd0b9('0x24')],function(_0xe6b5d2){return{'model':db[_0xe6b5d2['model']],'as':_0xe6b5d2['as'],'attributes':_0xe6b5d2[_0xd0b9('0x22')],'include':_0xe6b5d2[_0xd0b9('0x24')]?_[_0xd0b9('0x23')](_0xe6b5d2[_0xd0b9('0x24')],function(_0x1b734a){return{'model':db[_0x1b734a[_0xd0b9('0x25')]],'as':_0x1b734a['as'],'attributes':_0x1b734a[_0xd0b9('0x22')],'include':_0x1b734a[_0xd0b9('0x24')]?_[_0xd0b9('0x23')](_0x1b734a['include'],function(_0x4da054){return{'model':db[_0x4da054[_0xd0b9('0x25')]],'as':_0x4da054['as'],'attributes':_0x4da054[_0xd0b9('0x22')]};}):[]};}):[]};}):[]:[]})[_0xd0b9('0x11')](function(_0x3b34e2){logger['info'](_0xd0b9('0x1d'),_0x1fcef9);logger['debug'](_0xd0b9('0x1d'),_0x1fcef9,JSON[_0xd0b9('0x17')](_0x3b34e2));_0x4f8174(_0x3b34e2);})[_0xd0b9('0x1c')](function(_0xdfff94){logger['error'](_0xd0b9('0x1d'),_0xdfff94[_0xd0b9('0x1a')],_0x1fcef9);_0x433111(_0x5cac5c['error'](0x1f4,_0xdfff94[_0xd0b9('0x1a')]));});});};exports[_0xd0b9('0x26')]=function(_0x3808ca){var _0x4ce8ad=this;return new Promise(function(_0x1e64d9,_0x4219fd){return db[_0xd0b9('0x27')][_0xd0b9('0x28')]({'raw':_0x3808ca['options']?_0x3808ca['options'][_0xd0b9('0x20')]===undefined?!![]:![]:!![],'where':_0x3808ca[_0xd0b9('0x1f')]?_0x3808ca[_0xd0b9('0x1f')]['where']||null:null,'attributes':_0x3808ca[_0xd0b9('0x1f')]?_0x3808ca[_0xd0b9('0x1f')][_0xd0b9('0x22')]||null:null,'include':_0x3808ca[_0xd0b9('0x1f')]?_0x3808ca[_0xd0b9('0x1f')][_0xd0b9('0x24')]?_[_0xd0b9('0x23')](_0x3808ca[_0xd0b9('0x1f')][_0xd0b9('0x24')],function(_0x128a2b){return{'model':db[_0x128a2b[_0xd0b9('0x25')]],'as':_0x128a2b['as'],'attributes':_0x128a2b[_0xd0b9('0x22')],'include':_0x128a2b[_0xd0b9('0x24')]?_['map'](_0x128a2b[_0xd0b9('0x24')],function(_0x5a31ab){return{'model':db[_0x5a31ab['model']],'as':_0x5a31ab['as'],'attributes':_0x5a31ab['attributes'],'include':_0x5a31ab[_0xd0b9('0x24')]?_[_0xd0b9('0x23')](_0x5a31ab['include'],function(_0x490205){return{'model':db[_0x490205[_0xd0b9('0x25')]],'as':_0x490205['as'],'attributes':_0x490205['attributes']};}):[]};}):[]};}):[]:[]})[_0xd0b9('0x11')](function(_0x4f0ccf){logger[_0xd0b9('0x12')](_0xd0b9('0x26'),_0x3808ca);logger['debug']('ShowOpenchannelQueue',_0x3808ca,JSON['stringify'](_0x4f0ccf));_0x1e64d9(_0x4f0ccf);})[_0xd0b9('0x1c')](function(_0x492233){logger['error']('ShowOpenchannelQueue',_0x492233[_0xd0b9('0x1a')],_0x3808ca);_0x4219fd(_0x4ce8ad[_0xd0b9('0x18')](0x1f4,_0x492233['message']));});});};
\ No newline at end of file
+var _0x1de4=['debug','catch','ShowOpenchannelQueue','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','./openchannelQueue.socket','register','request','then','info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','GetOpenchannelQueue','OpenchannelQueue','findAll','options','raw','where','attributes','limit','include','map','model'];(function(_0x39847c,_0x89dd0e){var _0x45d714=function(_0x22c294){while(--_0x22c294){_0x39847c['push'](_0x39847c['shift']());}};_0x45d714(++_0x89dd0e);}(_0x1de4,0x189));var _0x41de=function(_0x284e36,_0x5385e4){_0x284e36=_0x284e36-0x0;var _0x51e50f=_0x1de4[_0x284e36];return _0x51e50f;};'use strict';var _=require(_0x41de('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x41de('0x1'));var rs=require(_0x41de('0x2'));var fs=require('fs');var Redis=require(_0x41de('0x3'));var db=require(_0x41de('0x4'))['db'];var utils=require(_0x41de('0x5'));var logger=require(_0x41de('0x6'))(_0x41de('0x7'));var config=require(_0x41de('0x8'));var jayson=require(_0x41de('0x9'));var client=jayson[_0x41de('0xa')]['http']({'port':0x232a});config[_0x41de('0xb')]=_[_0x41de('0xc')](config[_0x41de('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x41de('0xd'))[_0x41de('0xe')](socket);function respondWithRpcPromise(_0x292767,_0x3cbb5f,_0x6a0771){return new BPromise(function(_0x4bcc07,_0x4fc706){return client[_0x41de('0xf')](_0x292767,_0x6a0771)[_0x41de('0x10')](function(_0x3b6a72){logger[_0x41de('0x11')](_0x41de('0x12'),_0x3cbb5f,_0x41de('0x13'));logger['debug'](_0x41de('0x14'),_0x3cbb5f,_0x41de('0x13'),JSON[_0x41de('0x15')](_0x3b6a72));if(_0x3b6a72[_0x41de('0x16')]){if(_0x3b6a72[_0x41de('0x16')][_0x41de('0x17')]===0x1f4){logger[_0x41de('0x16')](_0x41de('0x12'),_0x3cbb5f,_0x3b6a72[_0x41de('0x16')]['message']);return _0x4fc706(_0x3b6a72[_0x41de('0x16')][_0x41de('0x18')]);}logger['error'](_0x41de('0x12'),_0x3cbb5f,_0x3b6a72[_0x41de('0x16')][_0x41de('0x18')]);return _0x4bcc07(_0x3b6a72[_0x41de('0x16')]['message']);}else{logger[_0x41de('0x11')](_0x41de('0x12'),_0x3cbb5f,'request\x20sent');_0x4bcc07(_0x3b6a72['result'][_0x41de('0x18')]);}})['catch'](function(_0x28ef1f){logger[_0x41de('0x16')](_0x41de('0x12'),_0x3cbb5f,_0x28ef1f);_0x4fc706(_0x28ef1f);});});}exports[_0x41de('0x19')]=function(_0xbfea17){var _0x4f886b=this;return new Promise(function(_0x29d939,_0x4c7707){return db[_0x41de('0x1a')][_0x41de('0x1b')]({'raw':_0xbfea17[_0x41de('0x1c')]?_0xbfea17[_0x41de('0x1c')][_0x41de('0x1d')]===undefined?!![]:![]:!![],'where':_0xbfea17['options']?_0xbfea17[_0x41de('0x1c')][_0x41de('0x1e')]||null:null,'attributes':_0xbfea17[_0x41de('0x1c')]?_0xbfea17[_0x41de('0x1c')][_0x41de('0x1f')]||null:null,'limit':_0xbfea17[_0x41de('0x1c')]?_0xbfea17[_0x41de('0x1c')][_0x41de('0x20')]||null:null,'include':_0xbfea17[_0x41de('0x1c')]?_0xbfea17[_0x41de('0x1c')][_0x41de('0x21')]?_[_0x41de('0x22')](_0xbfea17['options']['include'],function(_0x16160f){return{'model':db[_0x16160f[_0x41de('0x23')]],'as':_0x16160f['as'],'attributes':_0x16160f[_0x41de('0x1f')],'include':_0x16160f['include']?_['map'](_0x16160f[_0x41de('0x21')],function(_0x1a31f4){return{'model':db[_0x1a31f4[_0x41de('0x23')]],'as':_0x1a31f4['as'],'attributes':_0x1a31f4[_0x41de('0x1f')],'include':_0x1a31f4[_0x41de('0x21')]?_['map'](_0x1a31f4[_0x41de('0x21')],function(_0x5c8d0a){return{'model':db[_0x5c8d0a[_0x41de('0x23')]],'as':_0x5c8d0a['as'],'attributes':_0x5c8d0a['attributes']};}):[]};}):[]};}):[]:[]})[_0x41de('0x10')](function(_0x35aa47){logger['info']('GetOpenchannelQueue',_0xbfea17);logger[_0x41de('0x24')](_0x41de('0x19'),_0xbfea17,JSON[_0x41de('0x15')](_0x35aa47));_0x29d939(_0x35aa47);})[_0x41de('0x25')](function(_0x56fcfc){logger['error'](_0x41de('0x19'),_0x56fcfc[_0x41de('0x18')],_0xbfea17);_0x4c7707(_0x4f886b['error'](0x1f4,_0x56fcfc[_0x41de('0x18')]));});});};exports['ShowOpenchannelQueue']=function(_0x5238e0){var _0x167a03=this;return new Promise(function(_0x562cc1,_0x4e4c82){return db[_0x41de('0x1a')]['find']({'raw':_0x5238e0[_0x41de('0x1c')]?_0x5238e0[_0x41de('0x1c')][_0x41de('0x1d')]===undefined?!![]:![]:!![],'where':_0x5238e0[_0x41de('0x1c')]?_0x5238e0[_0x41de('0x1c')][_0x41de('0x1e')]||null:null,'attributes':_0x5238e0[_0x41de('0x1c')]?_0x5238e0[_0x41de('0x1c')][_0x41de('0x1f')]||null:null,'include':_0x5238e0[_0x41de('0x1c')]?_0x5238e0[_0x41de('0x1c')]['include']?_[_0x41de('0x22')](_0x5238e0[_0x41de('0x1c')]['include'],function(_0x363ac1){return{'model':db[_0x363ac1[_0x41de('0x23')]],'as':_0x363ac1['as'],'attributes':_0x363ac1[_0x41de('0x1f')],'include':_0x363ac1[_0x41de('0x21')]?_[_0x41de('0x22')](_0x363ac1[_0x41de('0x21')],function(_0x202478){return{'model':db[_0x202478[_0x41de('0x23')]],'as':_0x202478['as'],'attributes':_0x202478[_0x41de('0x1f')],'include':_0x202478[_0x41de('0x21')]?_[_0x41de('0x22')](_0x202478[_0x41de('0x21')],function(_0x10b962){return{'model':db[_0x10b962['model']],'as':_0x10b962['as'],'attributes':_0x10b962['attributes']};}):[]};}):[]};}):[]:[]})[_0x41de('0x10')](function(_0x7b62b9){logger[_0x41de('0x11')](_0x41de('0x26'),_0x5238e0);logger['debug'](_0x41de('0x26'),_0x5238e0,JSON[_0x41de('0x15')](_0x7b62b9));_0x562cc1(_0x7b62b9);})['catch'](function(_0x14802a){logger[_0x41de('0x16')](_0x41de('0x26'),_0x14802a[_0x41de('0x18')],_0x5238e0);_0x4e4c82(_0x167a03['error'](0x1f4,_0x14802a[_0x41de('0x18')]));});});};
\ No newline at end of file
index 2bfb72b..619cc0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3783=['removeListener','register','length','./openchannelQueue.events','save','remove','update','emit'];(function(_0x30121e,_0x240c86){var _0x4ba328=function(_0x2601c1){while(--_0x2601c1){_0x30121e['push'](_0x30121e['shift']());}};_0x4ba328(++_0x240c86);}(_0x3783,0xc3));var _0x3378=function(_0x210431,_0x1834dd){_0x210431=_0x210431-0x0;var _0x9948fa=_0x3783[_0x210431];return _0x9948fa;};'use strict';var OpenchannelQueueEvents=require(_0x3378('0x0'));var events=[_0x3378('0x1'),_0x3378('0x2'),_0x3378('0x3')];function createListener(_0x1d4d7f,_0x48ca24){return function(_0x9f1240){_0x48ca24[_0x3378('0x4')](_0x1d4d7f,_0x9f1240);};}function removeListener(_0x408bdd,_0xbb371c){return function(){OpenchannelQueueEvents[_0x3378('0x5')](_0x408bdd,_0xbb371c);};}exports[_0x3378('0x6')]=function(_0x51bf13){for(var _0x5f2bb2=0x0,_0x269260=events[_0x3378('0x7')];_0x5f2bb2<_0x269260;_0x5f2bb2++){var _0x2b5b9e=events[_0x5f2bb2];var _0x40f2b7=createListener('openchannelQueue:'+_0x2b5b9e,_0x51bf13);OpenchannelQueueEvents['on'](_0x2b5b9e,_0x40f2b7);}};
\ No newline at end of file
+var _0x1676=['removeListener','register','openchannelQueue:','./openchannelQueue.events','save','remove','update','emit'];(function(_0x5882d9,_0x43ffd9){var _0x5624aa=function(_0x2d3633){while(--_0x2d3633){_0x5882d9['push'](_0x5882d9['shift']());}};_0x5624aa(++_0x43ffd9);}(_0x1676,0x153));var _0x6167=function(_0x2a69ec,_0x4b25d9){_0x2a69ec=_0x2a69ec-0x0;var _0x534581=_0x1676[_0x2a69ec];return _0x534581;};'use strict';var OpenchannelQueueEvents=require(_0x6167('0x0'));var events=[_0x6167('0x1'),_0x6167('0x2'),_0x6167('0x3')];function createListener(_0x520c04,_0xc0224b){return function(_0x5d738c){_0xc0224b[_0x6167('0x4')](_0x520c04,_0x5d738c);};}function removeListener(_0x2cf5c5,_0x4916a8){return function(){OpenchannelQueueEvents[_0x6167('0x5')](_0x2cf5c5,_0x4916a8);};}exports[_0x6167('0x6')]=function(_0x4eb073){for(var _0x4f3f4c=0x0,_0x1f6c5a=events['length'];_0x4f3f4c<_0x1f6c5a;_0x4f3f4c++){var _0x3f79d7=events[_0x4f3f4c];var _0x5a59be=createListener(_0x6167('0x7')+_0x3f79d7,_0x4eb073);OpenchannelQueueEvents['on'](_0x3f79d7,_0x5a59be);}};
\ No newline at end of file
index a092166..70e8085 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a46=['/:id','post','update','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueueReport.controller','isAuthenticated','index','/describe','describe'];(function(_0x4154a6,_0x2c0b8e){var _0x3b2786=function(_0x2f5936){while(--_0x2f5936){_0x4154a6['push'](_0x4154a6['shift']());}};_0x3b2786(++_0x2c0b8e);}(_0x6a46,0x180));var _0x66a4=function(_0x33efcc,_0x3d4ed8){_0x33efcc=_0x33efcc-0x0;var _0x2da3a1=_0x6a46[_0x33efcc];return _0x2da3a1;};'use strict';var multer=require(_0x66a4('0x0'));var util=require(_0x66a4('0x1'));var path=require(_0x66a4('0x2'));var timeout=require(_0x66a4('0x3'));var express=require(_0x66a4('0x4'));var router=express[_0x66a4('0x5')]();var fs_extra=require(_0x66a4('0x6'));var auth=require(_0x66a4('0x7'));var interaction=require(_0x66a4('0x8'));var config=require(_0x66a4('0x9'));var controller=require(_0x66a4('0xa'));router['get']('/',auth[_0x66a4('0xb')](),controller[_0x66a4('0xc')]);router['get'](_0x66a4('0xd'),auth[_0x66a4('0xb')](),controller[_0x66a4('0xe')]);router['get'](_0x66a4('0xf'),auth[_0x66a4('0xb')](),controller['show']);router[_0x66a4('0x10')]('/',auth[_0x66a4('0xb')](),controller['create']);router['put']('/:id',auth[_0x66a4('0xb')](),controller[_0x66a4('0x11')]);router['delete'](_0x66a4('0xf'),auth[_0x66a4('0xb')](),controller[_0x66a4('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xd4c2=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueueReport.controller','get','isAuthenticated','index','/describe','post','create','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x5b43fe,_0x3a058e){var _0x25683e=function(_0x2f6704){while(--_0x2f6704){_0x5b43fe['push'](_0x5b43fe['shift']());}};_0x25683e(++_0x3a058e);}(_0xd4c2,0xf8));var _0x2d4c=function(_0x49b207,_0x408ade){_0x49b207=_0x49b207-0x0;var _0x2dc8fa=_0xd4c2[_0x49b207];return _0x2dc8fa;};'use strict';var multer=require(_0x2d4c('0x0'));var util=require(_0x2d4c('0x1'));var path=require(_0x2d4c('0x2'));var timeout=require(_0x2d4c('0x3'));var express=require(_0x2d4c('0x4'));var router=express[_0x2d4c('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x2d4c('0x6'));var interaction=require(_0x2d4c('0x7'));var config=require(_0x2d4c('0x8'));var controller=require(_0x2d4c('0x9'));router[_0x2d4c('0xa')]('/',auth[_0x2d4c('0xb')](),controller[_0x2d4c('0xc')]);router[_0x2d4c('0xa')](_0x2d4c('0xd'),auth['isAuthenticated'](),controller['describe']);router[_0x2d4c('0xa')]('/:id',auth[_0x2d4c('0xb')](),controller['show']);router[_0x2d4c('0xe')]('/',auth[_0x2d4c('0xb')](),controller[_0x2d4c('0xf')]);router['put'](_0x2d4c('0x10'),auth[_0x2d4c('0xb')](),controller[_0x2d4c('0x11')]);router[_0x2d4c('0x12')](_0x2d4c('0x10'),auth[_0x2d4c('0xb')](),controller[_0x2d4c('0x13')]);module[_0x2d4c('0x14')]=router;
\ No newline at end of file
index f613c29..116b059 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5966=['moment','sequelize','STRING','DATE'];(function(_0x1e9124,_0x4c1ed1){var _0x42def8=function(_0xc9f57f){while(--_0xc9f57f){_0x1e9124['push'](_0x1e9124['shift']());}};_0x42def8(++_0x4c1ed1);}(_0x5966,0xdc));var _0x6596=function(_0x1073ad,_0x44bf0b){_0x1073ad=_0x1073ad-0x0;var _0x528474=_0x5966[_0x1073ad];return _0x528474;};'use strict';var moment=require(_0x6596('0x0'));var Sequelize=require(_0x6596('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0x6596('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x6596('0x2')]},'joinAt':{'type':Sequelize[_0x6596('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x6596('0x3')]},'exitAt':{'type':Sequelize[_0x6596('0x3')]},'reason':{'type':Sequelize[_0x6596('0x2')]}};
\ No newline at end of file
+var _0x5983=['STRING','DATE','moment','sequelize','exports'];(function(_0x5a9045,_0x79d4b8){var _0x591d46=function(_0x4cebe3){while(--_0x4cebe3){_0x5a9045['push'](_0x5a9045['shift']());}};_0x591d46(++_0x79d4b8);}(_0x5983,0x106));var _0x3598=function(_0x464db5,_0xa786e7){_0x464db5=_0x464db5-0x0;var _0x46b27f=_0x5983[_0x464db5];return _0x46b27f;};'use strict';var moment=require(_0x3598('0x0'));var Sequelize=require(_0x3598('0x1'));module[_0x3598('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x3598('0x3')]},'joinAt':{'type':Sequelize[_0x3598('0x4')]},'leaveAt':{'type':Sequelize[_0x3598('0x4')]},'acceptAt':{'type':Sequelize[_0x3598('0x4')]},'exitAt':{'type':Sequelize[_0x3598('0x4')]},'reason':{'type':Sequelize[_0x3598('0x3')]}};
\ No newline at end of file
index 8ea5068..eb4cbe3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fed=['type','model','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','rows','catch','params','keys','fields','find','create','body','describe','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','limit','undefined','count','Content-Range','json','save','update','then','destroy','stack','name','send','index','map','OpenchannelQueueReport','rawAttributes'];(function(_0x3cbd7d,_0x4b1bbb){var _0x26d335=function(_0x154b72){while(--_0x154b72){_0x3cbd7d['push'](_0x3cbd7d['shift']());}};_0x26d335(++_0x4b1bbb);}(_0x6fed,0x1cb));var _0xd6fe=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x6fed[_0x2dafbe];return _0x58a45a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd6fe('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd6fe('0x1'));var rp=require(_0xd6fe('0x2'));var moment=require('moment');var BPromise=require(_0xd6fe('0x3'));var Mustache=require(_0xd6fe('0x4'));var util=require('util');var path=require(_0xd6fe('0x5'));var sox=require(_0xd6fe('0x6'));var csv=require(_0xd6fe('0x7'));var ejs=require(_0xd6fe('0x8'));var fs=require('fs');var fs_extra=require(_0xd6fe('0x9'));var _=require('lodash');var squel=require(_0xd6fe('0xa'));var crypto=require('crypto');var jsforce=require(_0xd6fe('0xb'));var deskjs=require(_0xd6fe('0xc'));var toCsv=require('to-csv');var querystring=require(_0xd6fe('0xd'));var Papa=require(_0xd6fe('0xe'));var Redis=require(_0xd6fe('0xf'));var authService=require(_0xd6fe('0x10'));var qs=require(_0xd6fe('0x11'));var as=require(_0xd6fe('0x12'));var hardwareService=require(_0xd6fe('0x13'));var logger=require(_0xd6fe('0x14'))(_0xd6fe('0x15'));var utils=require(_0xd6fe('0x16'));var config=require(_0xd6fe('0x17'));var licenseUtil=require(_0xd6fe('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2b1ac3,_0x3cd066){_0x3cd066=_0x3cd066||0xcc;return function(_0x1893eb){if(_0x1893eb){return _0x2b1ac3[_0xd6fe('0x19')](_0x3cd066);}return _0x2b1ac3[_0xd6fe('0x1a')](_0x3cd066)[_0xd6fe('0x1b')]();};}function respondWithResult(_0x42679e,_0x1c017a){_0x1c017a=_0x1c017a||0xc8;return function(_0x5c8940){if(_0x5c8940){return _0x42679e[_0xd6fe('0x1a')](_0x1c017a)['json'](_0x5c8940);}};}function respondWithFilteredResult(_0x2155be,_0x25d904){return function(_0x32fe20){if(_0x32fe20){var _0x4eb5ec=typeof _0x25d904[_0xd6fe('0x1c')]==='undefined'&&typeof _0x25d904[_0xd6fe('0x1d')]===_0xd6fe('0x1e');var _0x48ba6a=_0x32fe20[_0xd6fe('0x1f')];var _0x1496a4=_0x4eb5ec?0x0:_0x25d904[_0xd6fe('0x1c')];var _0x15f3b4=_0x4eb5ec?_0x32fe20['count']:_0x25d904[_0xd6fe('0x1c')]+_0x25d904[_0xd6fe('0x1d')];var _0x528e3f;if(_0x15f3b4>=_0x48ba6a){_0x15f3b4=_0x48ba6a;_0x528e3f=0xc8;}else{_0x528e3f=0xce;}_0x2155be[_0xd6fe('0x1a')](_0x528e3f);return _0x2155be['set'](_0xd6fe('0x20'),_0x1496a4+'-'+_0x15f3b4+'/'+_0x48ba6a)[_0xd6fe('0x21')](_0x32fe20);}return null;};}function patchUpdates(_0x2e6e63){return function(_0x1ed00a){try{jsonpatch['apply'](_0x1ed00a,_0x2e6e63,!![]);}catch(_0x49c645){return BPromise['reject'](_0x49c645);}return _0x1ed00a[_0xd6fe('0x22')]();};}function saveUpdates(_0xcf78bd,_0x5c6aa2){return function(_0x478ce1){if(_0x478ce1){return _0x478ce1[_0xd6fe('0x23')](_0xcf78bd)[_0xd6fe('0x24')](function(_0x4f6bd8){return _0x4f6bd8;});}return null;};}function removeEntity(_0x5be1ad,_0x149831){return function(_0x3b7322){if(_0x3b7322){return _0x3b7322[_0xd6fe('0x25')]()[_0xd6fe('0x24')](function(){_0x5be1ad[_0xd6fe('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x38545a,_0x46d494){return function(_0x4ce18e){if(!_0x4ce18e){_0x38545a[_0xd6fe('0x19')](0x194);}return _0x4ce18e;};}function handleError(_0x1ab688,_0x502cfb){_0x502cfb=_0x502cfb||0x1f4;return function(_0x2500e5){logger['error'](_0x2500e5[_0xd6fe('0x26')]);if(_0x2500e5['name']){delete _0x2500e5[_0xd6fe('0x27')];}_0x1ab688['status'](_0x502cfb)[_0xd6fe('0x28')](_0x2500e5);};}exports[_0xd6fe('0x29')]=function(_0x128bc3,_0x11d71c){var _0x4d39dc={},_0x26fe96={},_0x49bcf2={'count':0x0,'rows':[]};var _0x57f71a=_[_0xd6fe('0x2a')](db[_0xd6fe('0x2b')][_0xd6fe('0x2c')],function(_0x30f5da){return{'name':_0x30f5da['fieldName'],'type':_0x30f5da[_0xd6fe('0x2d')]['key']};});_0x26fe96[_0xd6fe('0x2e')]=_[_0xd6fe('0x2a')](_0x57f71a,_0xd6fe('0x27'));_0x26fe96[_0xd6fe('0x2f')]=_['keys'](_0x128bc3[_0xd6fe('0x2f')]);_0x26fe96[_0xd6fe('0x30')]=_[_0xd6fe('0x31')](_0x26fe96['model'],_0x26fe96[_0xd6fe('0x2f')]);_0x4d39dc[_0xd6fe('0x32')]=_[_0xd6fe('0x31')](_0x26fe96[_0xd6fe('0x2e')],qs['fields'](_0x128bc3[_0xd6fe('0x2f')]['fields']));_0x4d39dc['attributes']=_0x4d39dc['attributes'][_0xd6fe('0x33')]?_0x4d39dc[_0xd6fe('0x32')]:_0x26fe96[_0xd6fe('0x2e')];if(!_0x128bc3[_0xd6fe('0x2f')][_0xd6fe('0x34')](_0xd6fe('0x35'))){_0x4d39dc[_0xd6fe('0x1d')]=qs[_0xd6fe('0x1d')](_0x128bc3[_0xd6fe('0x2f')][_0xd6fe('0x1d')]);_0x4d39dc['offset']=qs['offset'](_0x128bc3[_0xd6fe('0x2f')][_0xd6fe('0x1c')]);}_0x4d39dc[_0xd6fe('0x36')]=qs[_0xd6fe('0x37')](_0x128bc3[_0xd6fe('0x2f')][_0xd6fe('0x37')]);_0x4d39dc[_0xd6fe('0x38')]=qs[_0xd6fe('0x30')](_[_0xd6fe('0x39')](_0x128bc3['query'],_0x26fe96[_0xd6fe('0x30')]),_0x57f71a);if(_0x128bc3[_0xd6fe('0x2f')][_0xd6fe('0x3a')]){_0x4d39dc[_0xd6fe('0x38')]=_[_0xd6fe('0x3b')](_0x4d39dc[_0xd6fe('0x38')],{'$or':_['map'](_0x57f71a,function(_0x5d517f){if(_0x5d517f['type']!=='VIRTUAL'){var _0x13197d={};_0x13197d[_0x5d517f[_0xd6fe('0x27')]]={'$like':'%'+_0x128bc3[_0xd6fe('0x2f')][_0xd6fe('0x3a')]+'%'};return _0x13197d;}})});}_0x4d39dc=_['merge']({},_0x4d39dc,_0x128bc3[_0xd6fe('0x3c')]);var _0x4304f2={'where':_0x4d39dc['where']};return db[_0xd6fe('0x2b')]['count'](_0x4304f2)['then'](function(_0x40b5c8){_0x49bcf2['count']=_0x40b5c8;if(_0x128bc3[_0xd6fe('0x2f')][_0xd6fe('0x3d')]){_0x4d39dc[_0xd6fe('0x3e')]=[{'all':!![]}];}return db['OpenchannelQueueReport']['findAll'](_0x4d39dc);})['then'](function(_0x47fcd1){_0x49bcf2[_0xd6fe('0x3f')]=_0x47fcd1;return _0x49bcf2;})[_0xd6fe('0x24')](respondWithFilteredResult(_0x11d71c,_0x4d39dc))[_0xd6fe('0x40')](handleError(_0x11d71c,null));};exports['show']=function(_0x355246,_0x3fb1ad){var _0x18b337={'raw':!![],'where':{'id':_0x355246[_0xd6fe('0x41')]['id']}},_0x4717b7={};_0x4717b7[_0xd6fe('0x2e')]=_[_0xd6fe('0x42')](db[_0xd6fe('0x2b')][_0xd6fe('0x2c')]);_0x4717b7[_0xd6fe('0x2f')]=_['keys'](_0x355246[_0xd6fe('0x2f')]);_0x4717b7[_0xd6fe('0x30')]=_[_0xd6fe('0x31')](_0x4717b7['model'],_0x4717b7['query']);_0x18b337[_0xd6fe('0x32')]=_[_0xd6fe('0x31')](_0x4717b7['model'],qs['fields'](_0x355246['query'][_0xd6fe('0x43')]));_0x18b337[_0xd6fe('0x32')]=_0x18b337['attributes'][_0xd6fe('0x33')]?_0x18b337[_0xd6fe('0x32')]:_0x4717b7['model'];if(_0x355246['query'][_0xd6fe('0x3d')]){_0x18b337[_0xd6fe('0x3e')]=[{'all':!![]}];}_0x18b337=_[_0xd6fe('0x3b')]({},_0x18b337,_0x355246[_0xd6fe('0x3c')]);return db['OpenchannelQueueReport'][_0xd6fe('0x44')](_0x18b337)[_0xd6fe('0x24')](handleEntityNotFound(_0x3fb1ad,null))[_0xd6fe('0x24')](respondWithResult(_0x3fb1ad,null))['catch'](handleError(_0x3fb1ad,null));};exports[_0xd6fe('0x45')]=function(_0x3f994b,_0x40d5d3){return db[_0xd6fe('0x2b')][_0xd6fe('0x45')](_0x3f994b[_0xd6fe('0x46')],{})[_0xd6fe('0x24')](respondWithResult(_0x40d5d3,0xc9))[_0xd6fe('0x40')](handleError(_0x40d5d3,null));};exports['update']=function(_0x2af579,_0x308a60){if(_0x2af579[_0xd6fe('0x46')]['id']){delete _0x2af579[_0xd6fe('0x46')]['id'];}return db[_0xd6fe('0x2b')][_0xd6fe('0x44')]({'where':{'id':_0x2af579[_0xd6fe('0x41')]['id']}})['then'](handleEntityNotFound(_0x308a60,null))[_0xd6fe('0x24')](saveUpdates(_0x2af579[_0xd6fe('0x46')],null))[_0xd6fe('0x24')](respondWithResult(_0x308a60,null))[_0xd6fe('0x40')](handleError(_0x308a60,null));};exports[_0xd6fe('0x25')]=function(_0x3e264a,_0x55f33c){return db[_0xd6fe('0x2b')][_0xd6fe('0x44')]({'where':{'id':_0x3e264a[_0xd6fe('0x41')]['id']}})[_0xd6fe('0x24')](handleEntityNotFound(_0x55f33c,null))[_0xd6fe('0x24')](removeEntity(_0x55f33c,null))[_0xd6fe('0x40')](handleError(_0x55f33c,null));};exports['describe']=function(_0x28117d,_0x132c8a){return db[_0xd6fe('0x2b')][_0xd6fe('0x47')]()[_0xd6fe('0x24')](respondWithResult(_0x132c8a,null))[_0xd6fe('0x40')](handleError(_0x132c8a,null));};
\ No newline at end of file
+var _0xc875=['update','then','sendStatus','error','stack','name','send','index','map','OpenchannelQueueReport','rawAttributes','type','key','model','query','keys','attributes','intersection','fields','hasOwnProperty','nolimit','sort','where','pick','filters','filter','merge','options','catch','params','length','includeAll','include','find','create','body','destroy','describe','eml-format','rimraf','fast-json-patch','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','set','apply','reject','save'];(function(_0x25a311,_0x32648c){var _0x52ef59=function(_0x21565f){while(--_0x21565f){_0x25a311['push'](_0x25a311['shift']());}};_0x52ef59(++_0x32648c);}(_0xc875,0x1e8));var _0x5c87=function(_0x274cb,_0xee62ed){_0x274cb=_0x274cb-0x0;var _0x551e07=_0xc875[_0x274cb];return _0x551e07;};'use strict';var emlformat=require(_0x5c87('0x0'));var rimraf=require(_0x5c87('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5c87('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x5c87('0x3'));var Mustache=require('mustache');var util=require(_0x5c87('0x4'));var path=require(_0x5c87('0x5'));var sox=require(_0x5c87('0x6'));var csv=require(_0x5c87('0x7'));var ejs=require(_0x5c87('0x8'));var fs=require('fs');var fs_extra=require(_0x5c87('0x9'));var _=require('lodash');var squel=require(_0x5c87('0xa'));var crypto=require(_0x5c87('0xb'));var jsforce=require(_0x5c87('0xc'));var deskjs=require(_0x5c87('0xd'));var toCsv=require('to-csv');var querystring=require(_0x5c87('0xe'));var Papa=require(_0x5c87('0xf'));var Redis=require(_0x5c87('0x10'));var authService=require(_0x5c87('0x11'));var qs=require(_0x5c87('0x12'));var as=require(_0x5c87('0x13'));var hardwareService=require(_0x5c87('0x14'));var logger=require(_0x5c87('0x15'))(_0x5c87('0x16'));var utils=require(_0x5c87('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x5c87('0x18'));var db=require(_0x5c87('0x19'))['db'];function respondWithStatusCode(_0xcdf161,_0x3f4890){_0x3f4890=_0x3f4890||0xcc;return function(_0x2c7c54){if(_0x2c7c54){return _0xcdf161['sendStatus'](_0x3f4890);}return _0xcdf161[_0x5c87('0x1a')](_0x3f4890)[_0x5c87('0x1b')]();};}function respondWithResult(_0x737ee3,_0x30d2f3){_0x30d2f3=_0x30d2f3||0xc8;return function(_0x23eecd){if(_0x23eecd){return _0x737ee3['status'](_0x30d2f3)[_0x5c87('0x1c')](_0x23eecd);}};}function respondWithFilteredResult(_0x2a14e3,_0x506351){return function(_0x3b560b){if(_0x3b560b){var _0x184b2b=typeof _0x506351[_0x5c87('0x1d')]==='undefined'&&typeof _0x506351[_0x5c87('0x1e')]===_0x5c87('0x1f');var _0x3d9046=_0x3b560b[_0x5c87('0x20')];var _0x36485e=_0x184b2b?0x0:_0x506351[_0x5c87('0x1d')];var _0x3b85f4=_0x184b2b?_0x3b560b['count']:_0x506351[_0x5c87('0x1d')]+_0x506351[_0x5c87('0x1e')];var _0x16e500;if(_0x3b85f4>=_0x3d9046){_0x3b85f4=_0x3d9046;_0x16e500=0xc8;}else{_0x16e500=0xce;}_0x2a14e3['status'](_0x16e500);return _0x2a14e3[_0x5c87('0x21')]('Content-Range',_0x36485e+'-'+_0x3b85f4+'/'+_0x3d9046)['json'](_0x3b560b);}return null;};}function patchUpdates(_0x1f2040){return function(_0x23181f){try{jsonpatch[_0x5c87('0x22')](_0x23181f,_0x1f2040,!![]);}catch(_0x1b4cc3){return BPromise[_0x5c87('0x23')](_0x1b4cc3);}return _0x23181f[_0x5c87('0x24')]();};}function saveUpdates(_0x487a4d,_0x3bb89c){return function(_0x43eb59){if(_0x43eb59){return _0x43eb59[_0x5c87('0x25')](_0x487a4d)[_0x5c87('0x26')](function(_0x4b4543){return _0x4b4543;});}return null;};}function removeEntity(_0x39e004,_0x3164ee){return function(_0xc769ef){if(_0xc769ef){return _0xc769ef['destroy']()[_0x5c87('0x26')](function(){_0x39e004[_0x5c87('0x1a')](0xcc)[_0x5c87('0x1b')]();});}};}function handleEntityNotFound(_0x38d6e2,_0x5f0acf){return function(_0x6adc13){if(!_0x6adc13){_0x38d6e2[_0x5c87('0x27')](0x194);}return _0x6adc13;};}function handleError(_0x243a70,_0x24a25c){_0x24a25c=_0x24a25c||0x1f4;return function(_0x2de8af){logger[_0x5c87('0x28')](_0x2de8af[_0x5c87('0x29')]);if(_0x2de8af[_0x5c87('0x2a')]){delete _0x2de8af[_0x5c87('0x2a')];}_0x243a70[_0x5c87('0x1a')](_0x24a25c)[_0x5c87('0x2b')](_0x2de8af);};}exports[_0x5c87('0x2c')]=function(_0x1fd300,_0xb53d0a){var _0x422a5b={},_0x2389bb={},_0x235bae={'count':0x0,'rows':[]};var _0x5a3f41=_[_0x5c87('0x2d')](db[_0x5c87('0x2e')][_0x5c87('0x2f')],function(_0x42debd){return{'name':_0x42debd['fieldName'],'type':_0x42debd[_0x5c87('0x30')][_0x5c87('0x31')]};});_0x2389bb[_0x5c87('0x32')]=_[_0x5c87('0x2d')](_0x5a3f41,_0x5c87('0x2a'));_0x2389bb[_0x5c87('0x33')]=_[_0x5c87('0x34')](_0x1fd300[_0x5c87('0x33')]);_0x2389bb['filters']=_['intersection'](_0x2389bb[_0x5c87('0x32')],_0x2389bb[_0x5c87('0x33')]);_0x422a5b[_0x5c87('0x35')]=_[_0x5c87('0x36')](_0x2389bb[_0x5c87('0x32')],qs['fields'](_0x1fd300['query'][_0x5c87('0x37')]));_0x422a5b[_0x5c87('0x35')]=_0x422a5b[_0x5c87('0x35')]['length']?_0x422a5b['attributes']:_0x2389bb[_0x5c87('0x32')];if(!_0x1fd300[_0x5c87('0x33')][_0x5c87('0x38')](_0x5c87('0x39'))){_0x422a5b[_0x5c87('0x1e')]=qs['limit'](_0x1fd300['query'][_0x5c87('0x1e')]);_0x422a5b[_0x5c87('0x1d')]=qs[_0x5c87('0x1d')](_0x1fd300[_0x5c87('0x33')][_0x5c87('0x1d')]);}_0x422a5b['order']=qs[_0x5c87('0x3a')](_0x1fd300['query'][_0x5c87('0x3a')]);_0x422a5b[_0x5c87('0x3b')]=qs['filters'](_[_0x5c87('0x3c')](_0x1fd300[_0x5c87('0x33')],_0x2389bb[_0x5c87('0x3d')]),_0x5a3f41);if(_0x1fd300[_0x5c87('0x33')][_0x5c87('0x3e')]){_0x422a5b[_0x5c87('0x3b')]=_[_0x5c87('0x3f')](_0x422a5b[_0x5c87('0x3b')],{'$or':_[_0x5c87('0x2d')](_0x5a3f41,function(_0x55cb07){if(_0x55cb07[_0x5c87('0x30')]!=='VIRTUAL'){var _0x3ed655={};_0x3ed655[_0x55cb07[_0x5c87('0x2a')]]={'$like':'%'+_0x1fd300[_0x5c87('0x33')][_0x5c87('0x3e')]+'%'};return _0x3ed655;}})});}_0x422a5b=_[_0x5c87('0x3f')]({},_0x422a5b,_0x1fd300[_0x5c87('0x40')]);var _0x1f98dd={'where':_0x422a5b[_0x5c87('0x3b')]};return db[_0x5c87('0x2e')][_0x5c87('0x20')](_0x1f98dd)[_0x5c87('0x26')](function(_0x29ebf4){_0x235bae['count']=_0x29ebf4;if(_0x1fd300[_0x5c87('0x33')]['includeAll']){_0x422a5b['include']=[{'all':!![]}];}return db[_0x5c87('0x2e')]['findAll'](_0x422a5b);})[_0x5c87('0x26')](function(_0x339914){_0x235bae['rows']=_0x339914;return _0x235bae;})['then'](respondWithFilteredResult(_0xb53d0a,_0x422a5b))[_0x5c87('0x41')](handleError(_0xb53d0a,null));};exports['show']=function(_0x5ed51e,_0x1eb518){var _0x309c01={'raw':!![],'where':{'id':_0x5ed51e[_0x5c87('0x42')]['id']}},_0x30ed12={};_0x30ed12[_0x5c87('0x32')]=_['keys'](db[_0x5c87('0x2e')][_0x5c87('0x2f')]);_0x30ed12[_0x5c87('0x33')]=_['keys'](_0x5ed51e[_0x5c87('0x33')]);_0x30ed12[_0x5c87('0x3d')]=_[_0x5c87('0x36')](_0x30ed12[_0x5c87('0x32')],_0x30ed12[_0x5c87('0x33')]);_0x309c01[_0x5c87('0x35')]=_[_0x5c87('0x36')](_0x30ed12[_0x5c87('0x32')],qs[_0x5c87('0x37')](_0x5ed51e[_0x5c87('0x33')]['fields']));_0x309c01[_0x5c87('0x35')]=_0x309c01['attributes'][_0x5c87('0x43')]?_0x309c01[_0x5c87('0x35')]:_0x30ed12[_0x5c87('0x32')];if(_0x5ed51e[_0x5c87('0x33')][_0x5c87('0x44')]){_0x309c01[_0x5c87('0x45')]=[{'all':!![]}];}_0x309c01=_[_0x5c87('0x3f')]({},_0x309c01,_0x5ed51e['options']);return db['OpenchannelQueueReport'][_0x5c87('0x46')](_0x309c01)['then'](handleEntityNotFound(_0x1eb518,null))[_0x5c87('0x26')](respondWithResult(_0x1eb518,null))[_0x5c87('0x41')](handleError(_0x1eb518,null));};exports[_0x5c87('0x47')]=function(_0x142a5c,_0x4570f8){return db['OpenchannelQueueReport'][_0x5c87('0x47')](_0x142a5c['body'],{})[_0x5c87('0x26')](respondWithResult(_0x4570f8,0xc9))[_0x5c87('0x41')](handleError(_0x4570f8,null));};exports['update']=function(_0x13ff75,_0x348b27){if(_0x13ff75[_0x5c87('0x48')]['id']){delete _0x13ff75[_0x5c87('0x48')]['id'];}return db['OpenchannelQueueReport'][_0x5c87('0x46')]({'where':{'id':_0x13ff75['params']['id']}})['then'](handleEntityNotFound(_0x348b27,null))['then'](saveUpdates(_0x13ff75[_0x5c87('0x48')],null))['then'](respondWithResult(_0x348b27,null))[_0x5c87('0x41')](handleError(_0x348b27,null));};exports[_0x5c87('0x49')]=function(_0x4f8d04,_0x5dad4f){return db[_0x5c87('0x2e')][_0x5c87('0x46')]({'where':{'id':_0x4f8d04[_0x5c87('0x42')]['id']}})['then'](handleEntityNotFound(_0x5dad4f,null))[_0x5c87('0x26')](removeEntity(_0x5dad4f,null))[_0x5c87('0x41')](handleError(_0x5dad4f,null));};exports[_0x5c87('0x4a')]=function(_0x93a4c1,_0x351bf9){return db[_0x5c87('0x2e')][_0x5c87('0x4a')]()['then'](respondWithResult(_0x351bf9,null))[_0x5c87('0x41')](handleError(_0x351bf9,null));};
\ No newline at end of file
index 5707743..90e3044 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(_0x49f1b5,_0x4668ac){var _0xff60f1=function(_0x5e4dc9){while(--_0x5e4dc9){_0x49f1b5['push'](_0x49f1b5['shift']());}};_0xff60f1(++_0x4668ac);}(_0x326f,0xd1));var _0xf326=function(_0x51cf63,_0x42ac05){_0x51cf63=_0x51cf63-0x0;var _0x4c218b=_0x326f[_0x51cf63];return _0x4c218b;};'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 _0x326f=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','report_openchannel_queue','uniqueid','lodash'];(function(_0x2e5959,_0x5007b5){var _0x3e5edd=function(_0x42c429){while(--_0x42c429){_0x2e5959['push'](_0x2e5959['shift']());}};_0x3e5edd(++_0x5007b5);}(_0x326f,0xd1));var _0xf326=function(_0x525ffc,_0x23a420){_0x525ffc=_0x525ffc-0x0;var _0x3a1745=_0x326f[_0x525ffc];return _0x3a1745;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf326('0x1'));var moment=require(_0xf326('0x2'));var BPromise=require(_0xf326('0x3'));var rp=require(_0xf326('0x4'));var fs=require('fs');var path=require(_0xf326('0x5'));var rimraf=require(_0xf326('0x6'));var config=require(_0xf326('0x7'));var attributes=require(_0xf326('0x8'));module[_0xf326('0x9')]=function(_0x3ace29,_0x4c2249){return _0x3ace29[_0xf326('0xa')](_0xf326('0xb'),attributes,{'tableName':_0xf326('0xc'),'paranoid':![],'indexes':[{'name':_0xf326('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 47530dc..45cd889 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fce=['options','raw','CreateOpenchannelQueueReport','UpdateOpenchannelQueueReport','OpenchannelQueueReport','update','where','attributes','limit','stringify','lodash','util','moment','randomstring','../../mysqldb','../../config/logger','rpc','client','then','info','request\x20sent','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','error','OpenchannelQueueReport,\x20%s,\x20%s','message','result','catch','create','body'];(function(_0x1c047f,_0x32a5e3){var _0x4cd049=function(_0x469874){while(--_0x469874){_0x1c047f['push'](_0x1c047f['shift']());}};_0x4cd049(++_0x32a5e3);}(_0x7fce,0xdc));var _0xe7fc=function(_0x274d1a,_0x1547df){_0x274d1a=_0x274d1a-0x0;var _0x236627=_0x7fce[_0x274d1a];return _0x236627;};'use strict';var _=require(_0xe7fc('0x0'));var util=require(_0xe7fc('0x1'));var moment=require(_0xe7fc('0x2'));var BPromise=require('bluebird');var rs=require(_0xe7fc('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe7fc('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xe7fc('0x5'))(_0xe7fc('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xe7fc('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4665f6,_0x161dca,_0x296b2e){return new BPromise(function(_0x19eeef,_0x22fabf){return client['request'](_0x4665f6,_0x296b2e)[_0xe7fc('0x8')](function(_0x4a1209){logger[_0xe7fc('0x9')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x161dca,_0xe7fc('0xa'));logger[_0xe7fc('0xb')](_0xe7fc('0xc'),_0x161dca,_0xe7fc('0xa'),JSON['stringify'](_0x4a1209));if(_0x4a1209[_0xe7fc('0xd')]){if(_0x4a1209[_0xe7fc('0xd')]['code']===0x1f4){logger['error'](_0xe7fc('0xe'),_0x161dca,_0x4a1209['error'][_0xe7fc('0xf')]);return _0x22fabf(_0x4a1209['error']['message']);}logger[_0xe7fc('0xd')](_0xe7fc('0xe'),_0x161dca,_0x4a1209[_0xe7fc('0xd')][_0xe7fc('0xf')]);return _0x19eeef(_0x4a1209[_0xe7fc('0xd')]['message']);}else{logger[_0xe7fc('0x9')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x161dca,'request\x20sent');_0x19eeef(_0x4a1209[_0xe7fc('0x10')][_0xe7fc('0xf')]);}})[_0xe7fc('0x11')](function(_0x3a44a6){logger['error']('OpenchannelQueueReport,\x20%s,\x20%s',_0x161dca,_0x3a44a6);_0x22fabf(_0x3a44a6);});});}exports['CreateOpenchannelQueueReport']=function(_0x4aa4f0){var _0x52902f=this;return new Promise(function(_0x490a99,_0x14515d){return db['OpenchannelQueueReport'][_0xe7fc('0x12')](_0x4aa4f0[_0xe7fc('0x13')],{'raw':_0x4aa4f0[_0xe7fc('0x14')]?_0x4aa4f0[_0xe7fc('0x14')][_0xe7fc('0x15')]===undefined?!![]:![]:!![]})[_0xe7fc('0x8')](function(_0x329051){logger[_0xe7fc('0x9')]('CreateOpenchannelQueueReport',_0x4aa4f0);logger[_0xe7fc('0xb')](_0xe7fc('0x16'),_0x4aa4f0,JSON['stringify'](_0x329051));_0x490a99(_0x329051);})['catch'](function(_0x35bb53){logger[_0xe7fc('0xd')](_0xe7fc('0x16'),_0x35bb53[_0xe7fc('0xf')],_0x4aa4f0);_0x14515d(_0x52902f[_0xe7fc('0xd')](0x1f4,_0x35bb53[_0xe7fc('0xf')]));});});};exports[_0xe7fc('0x17')]=function(_0x1731b6){var _0xb00cb9=this;return new Promise(function(_0x3e7e7e,_0x1d1348){return db[_0xe7fc('0x18')][_0xe7fc('0x19')](_0x1731b6['body'],{'raw':_0x1731b6[_0xe7fc('0x14')]?_0x1731b6[_0xe7fc('0x14')][_0xe7fc('0x15')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1731b6[_0xe7fc('0x14')]?_0x1731b6[_0xe7fc('0x14')][_0xe7fc('0x1a')]||null:null,'attributes':_0x1731b6['options']?_0x1731b6[_0xe7fc('0x14')][_0xe7fc('0x1b')]||null:null,'limit':_0x1731b6[_0xe7fc('0x14')]?_0x1731b6[_0xe7fc('0x14')][_0xe7fc('0x1c')]||null:null})[_0xe7fc('0x8')](function(_0x383ca6){logger['info'](_0xe7fc('0x17'),_0x1731b6);logger[_0xe7fc('0xb')]('UpdateOpenchannelQueueReport',_0x1731b6,JSON[_0xe7fc('0x1d')](_0x383ca6));_0x3e7e7e(_0x383ca6);})['catch'](function(_0x39d908){logger[_0xe7fc('0xd')]('UpdateOpenchannelQueueReport',_0x39d908[_0xe7fc('0xf')],_0x1731b6);_0x1d1348(_0xb00cb9['error'](0x1f4,_0x39d908[_0xe7fc('0xf')]));});});};
\ No newline at end of file
+var _0xa1cc=['code','OpenchannelQueueReport,\x20%s,\x20%s','message','result','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','body','options','then','update','where','attributes','limit','UpdateOpenchannelQueueReport','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','info','request\x20sent','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x3a0cb9,_0xf1c42){var _0x54df0e=function(_0x1477e5){while(--_0x1477e5){_0x3a0cb9['push'](_0x3a0cb9['shift']());}};_0x54df0e(++_0xf1c42);}(_0xa1cc,0x10f));var _0xca1c=function(_0x4be31f,_0x51b17f){_0x4be31f=_0x4be31f-0x0;var _0x1e7f36=_0xa1cc[_0x4be31f];return _0x1e7f36;};'use strict';var _=require(_0xca1c('0x0'));var util=require(_0xca1c('0x1'));var moment=require(_0xca1c('0x2'));var BPromise=require('bluebird');var rs=require(_0xca1c('0x3'));var fs=require('fs');var Redis=require(_0xca1c('0x4'));var db=require(_0xca1c('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xca1c('0x6'))('rpc');var config=require(_0xca1c('0x7'));var jayson=require(_0xca1c('0x8'));var client=jayson[_0xca1c('0x9')][_0xca1c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5d5101,_0x5132e2,_0x4ff3f7){return new BPromise(function(_0x8fc787,_0x21f118){return client['request'](_0x5d5101,_0x4ff3f7)['then'](function(_0x57807b){logger[_0xca1c('0xb')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x5132e2,_0xca1c('0xc'));logger[_0xca1c('0xd')](_0xca1c('0xe'),_0x5132e2,_0xca1c('0xc'),JSON[_0xca1c('0xf')](_0x57807b));if(_0x57807b['error']){if(_0x57807b[_0xca1c('0x10')][_0xca1c('0x11')]===0x1f4){logger['error'](_0xca1c('0x12'),_0x5132e2,_0x57807b['error'][_0xca1c('0x13')]);return _0x21f118(_0x57807b[_0xca1c('0x10')][_0xca1c('0x13')]);}logger['error'](_0xca1c('0x12'),_0x5132e2,_0x57807b[_0xca1c('0x10')]['message']);return _0x8fc787(_0x57807b['error'][_0xca1c('0x13')]);}else{logger[_0xca1c('0xb')](_0xca1c('0x12'),_0x5132e2,_0xca1c('0xc'));_0x8fc787(_0x57807b[_0xca1c('0x14')][_0xca1c('0x13')]);}})[_0xca1c('0x15')](function(_0x357321){logger[_0xca1c('0x10')](_0xca1c('0x12'),_0x5132e2,_0x357321);_0x21f118(_0x357321);});});}exports[_0xca1c('0x16')]=function(_0x10b126){var _0x14480c=this;return new Promise(function(_0x447547,_0x329244){return db[_0xca1c('0x17')]['create'](_0x10b126[_0xca1c('0x18')],{'raw':_0x10b126[_0xca1c('0x19')]?_0x10b126['options']['raw']===undefined?!![]:![]:!![]})[_0xca1c('0x1a')](function(_0x10f801){logger[_0xca1c('0xb')](_0xca1c('0x16'),_0x10b126);logger[_0xca1c('0xd')](_0xca1c('0x16'),_0x10b126,JSON[_0xca1c('0xf')](_0x10f801));_0x447547(_0x10f801);})['catch'](function(_0x115b4d){logger['error'](_0xca1c('0x16'),_0x115b4d[_0xca1c('0x13')],_0x10b126);_0x329244(_0x14480c[_0xca1c('0x10')](0x1f4,_0x115b4d[_0xca1c('0x13')]));});});};exports['UpdateOpenchannelQueueReport']=function(_0x1c06dc){var _0x76af08=this;return new Promise(function(_0x47ace5,_0x21b022){return db['OpenchannelQueueReport'][_0xca1c('0x1b')](_0x1c06dc[_0xca1c('0x18')],{'raw':_0x1c06dc[_0xca1c('0x19')]?_0x1c06dc[_0xca1c('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1c06dc[_0xca1c('0x19')]?_0x1c06dc[_0xca1c('0x19')][_0xca1c('0x1c')]||null:null,'attributes':_0x1c06dc[_0xca1c('0x19')]?_0x1c06dc[_0xca1c('0x19')][_0xca1c('0x1d')]||null:null,'limit':_0x1c06dc[_0xca1c('0x19')]?_0x1c06dc['options'][_0xca1c('0x1e')]||null:null})['then'](function(_0x573fc){logger[_0xca1c('0xb')]('UpdateOpenchannelQueueReport',_0x1c06dc);logger[_0xca1c('0xd')](_0xca1c('0x1f'),_0x1c06dc,JSON[_0xca1c('0xf')](_0x573fc));_0x47ace5(_0x573fc);})[_0xca1c('0x15')](function(_0x55cc6d){logger[_0xca1c('0x10')](_0xca1c('0x1f'),_0x55cc6d[_0xca1c('0x13')],_0x1c06dc);_0x21b022(_0x76af08[_0xca1c('0x10')](0x1f4,_0x55cc6d['message']));});});};
\ No newline at end of file
index 76b50ca..e3a36e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedaf=['put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post'];(function(_0x51154d,_0x5e6d43){var _0x2dd7ef=function(_0x37f14f){while(--_0x37f14f){_0x51154d['push'](_0x51154d['shift']());}};_0x2dd7ef(++_0x5e6d43);}(_0xedaf,0x175));var _0xfeda=function(_0x31b12e,_0x4c2c49){_0x31b12e=_0x31b12e-0x0;var _0x2dce76=_0xedaf[_0x31b12e];return _0x2dce76;};'use strict';var multer=require(_0xfeda('0x0'));var util=require('util');var path=require(_0xfeda('0x1'));var timeout=require(_0xfeda('0x2'));var express=require(_0xfeda('0x3'));var router=express[_0xfeda('0x4')]();var fs_extra=require(_0xfeda('0x5'));var auth=require(_0xfeda('0x6'));var interaction=require(_0xfeda('0x7'));var config=require(_0xfeda('0x8'));var controller=require(_0xfeda('0x9'));router[_0xfeda('0xa')]('/',auth['isAuthenticated'](),controller[_0xfeda('0xb')]);router[_0xfeda('0xa')](_0xfeda('0xc'),auth[_0xfeda('0xd')](),controller[_0xfeda('0xe')]);router[_0xfeda('0xa')](_0xfeda('0xf'),auth['isAuthenticated'](),controller[_0xfeda('0x10')]);router[_0xfeda('0x11')]('/',auth[_0xfeda('0xd')](),controller['create']);router[_0xfeda('0x12')](_0xfeda('0xf'),auth[_0xfeda('0xd')](),controller[_0xfeda('0x13')]);router[_0xfeda('0x14')](_0xfeda('0xf'),auth['isAuthenticated'](),controller[_0xfeda('0x15')]);module[_0xfeda('0x16')]=router;
\ No newline at end of file
+var _0x6ca1=['get','isAuthenticated','index','/describe','/:id','post','create','put','update','delete','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller'];(function(_0x3c1cbf,_0x43d227){var _0x508d4c=function(_0x4cdbb1){while(--_0x4cdbb1){_0x3c1cbf['push'](_0x3c1cbf['shift']());}};_0x508d4c(++_0x43d227);}(_0x6ca1,0x1d5));var _0x16ca=function(_0x362469,_0x127474){_0x362469=_0x362469-0x0;var _0x3cb032=_0x6ca1[_0x362469];return _0x3cb032;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x16ca('0x0'));var router=express[_0x16ca('0x1')]();var fs_extra=require(_0x16ca('0x2'));var auth=require(_0x16ca('0x3'));var interaction=require(_0x16ca('0x4'));var config=require(_0x16ca('0x5'));var controller=require(_0x16ca('0x6'));router[_0x16ca('0x7')]('/',auth[_0x16ca('0x8')](),controller[_0x16ca('0x9')]);router['get'](_0x16ca('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x16ca('0x7')](_0x16ca('0xb'),auth[_0x16ca('0x8')](),controller['show']);router[_0x16ca('0xc')]('/',auth[_0x16ca('0x8')](),controller[_0x16ca('0xd')]);router[_0x16ca('0xe')](_0x16ca('0xb'),auth[_0x16ca('0x8')](),controller[_0x16ca('0xf')]);router[_0x16ca('0x10')](_0x16ca('0xb'),auth[_0x16ca('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 1020ed7..e6bcea0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['account','agent','queue','NOW','sequelize','exports','STRING','ENUM'];(function(_0x3fb38c,_0x49d7e5){var _0x5a480c=function(_0x5386c3){while(--_0x5386c3){_0x3fb38c['push'](_0x3fb38c['shift']());}};_0x5a480c(++_0x49d7e5);}(_0xedd9,0xfc));var _0x9edd=function(_0x39fc11,_0x2de90b){_0x39fc11=_0x39fc11-0x0;var _0x45f1d3=_0xedd9[_0x39fc11];return _0x45f1d3;};'use strict';var moment=require('moment');var Sequelize=require(_0x9edd('0x0'));module[_0x9edd('0x1')]={'uniqueid':{'type':Sequelize[_0x9edd('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x9edd('0x3')](_0x9edd('0x4'),_0x9edd('0x5'),_0x9edd('0x6')),'allowNull':![],'defaultValue':_0x9edd('0x6')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x9edd('0x7')]}};
\ No newline at end of file
+var _0x008c=['ENUM','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x12db6a,_0x327366){var _0x7dd50=function(_0x278367){while(--_0x278367){_0x12db6a['push'](_0x12db6a['shift']());}};_0x7dd50(++_0x327366);}(_0x008c,0x188));var _0xc008=function(_0x4688f3,_0x1d5a1a){_0x4688f3=_0x4688f3-0x0;var _0x470c84=_0x008c[_0x4688f3];return _0x470c84;};'use strict';var moment=require(_0xc008('0x0'));var Sequelize=require(_0xc008('0x1'));module[_0xc008('0x2')]={'uniqueid':{'type':Sequelize[_0xc008('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xc008('0x4')]('account',_0xc008('0x5'),_0xc008('0x6')),'allowNull':![],'defaultValue':_0xc008('0x6')},'transferredAt':{'type':Sequelize[_0xc008('0x7')],'allowNull':![],'defaultValue':Sequelize[_0xc008('0x8')]}};
\ No newline at end of file
index b4f2728..7784f8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1b5=['pick','filters','filter','merge','include','findAll','rows','catch','show','params','keys','find','create','body','update','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','ejs','lodash','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy','error','stack','name','send','OpenchannelTransferReport','rawAttributes','fieldName','type','key','model','map','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where'];(function(_0x482214,_0x2550ff){var _0x38d0cb=function(_0x2ba281){while(--_0x2ba281){_0x482214['push'](_0x482214['shift']());}};_0x38d0cb(++_0x2550ff);}(_0xc1b5,0x1c0));var _0x5c1b=function(_0x548200,_0x3241b8){_0x548200=_0x548200-0x0;var _0x1a6d74=_0xc1b5[_0x548200];return _0x1a6d74;};'use strict';var emlformat=require(_0x5c1b('0x0'));var rimraf=require(_0x5c1b('0x1'));var zipdir=require(_0x5c1b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5c1b('0x3'));var moment=require(_0x5c1b('0x4'));var BPromise=require(_0x5c1b('0x5'));var Mustache=require(_0x5c1b('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x5c1b('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5c1b('0x8'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x5c1b('0x9'));var deskjs=require(_0x5c1b('0xa'));var toCsv=require(_0x5c1b('0xb'));var querystring=require(_0x5c1b('0xc'));var Papa=require(_0x5c1b('0xd'));var Redis=require('ioredis');var authService=require(_0x5c1b('0xe'));var qs=require(_0x5c1b('0xf'));var as=require(_0x5c1b('0x10'));var hardwareService=require(_0x5c1b('0x11'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x5c1b('0x12'));var licenseUtil=require(_0x5c1b('0x13'));var db=require(_0x5c1b('0x14'))['db'];function respondWithStatusCode(_0x4bd202,_0x21a417){_0x21a417=_0x21a417||0xcc;return function(_0x1b056e){if(_0x1b056e){return _0x4bd202[_0x5c1b('0x15')](_0x21a417);}return _0x4bd202['status'](_0x21a417)[_0x5c1b('0x16')]();};}function respondWithResult(_0x1e15af,_0x349771){_0x349771=_0x349771||0xc8;return function(_0x2924c1){if(_0x2924c1){return _0x1e15af[_0x5c1b('0x17')](_0x349771)[_0x5c1b('0x18')](_0x2924c1);}};}function respondWithFilteredResult(_0x2f3421,_0x158320){return function(_0x590feb){if(_0x590feb){var _0x5fa72e=typeof _0x158320[_0x5c1b('0x19')]===_0x5c1b('0x1a')&&typeof _0x158320[_0x5c1b('0x1b')]===_0x5c1b('0x1a');var _0x4fad57=_0x590feb[_0x5c1b('0x1c')];var _0x569486=_0x5fa72e?0x0:_0x158320['offset'];var _0x98bc15=_0x5fa72e?_0x590feb['count']:_0x158320['offset']+_0x158320[_0x5c1b('0x1b')];var _0x100e07;if(_0x98bc15>=_0x4fad57){_0x98bc15=_0x4fad57;_0x100e07=0xc8;}else{_0x100e07=0xce;}_0x2f3421[_0x5c1b('0x17')](_0x100e07);return _0x2f3421[_0x5c1b('0x1d')](_0x5c1b('0x1e'),_0x569486+'-'+_0x98bc15+'/'+_0x4fad57)[_0x5c1b('0x18')](_0x590feb);}return null;};}function patchUpdates(_0xdc0bb3){return function(_0x124ef2){try{jsonpatch[_0x5c1b('0x1f')](_0x124ef2,_0xdc0bb3,!![]);}catch(_0x158580){return BPromise['reject'](_0x158580);}return _0x124ef2[_0x5c1b('0x20')]();};}function saveUpdates(_0x191e34,_0x3d74f3){return function(_0x2cea77){if(_0x2cea77){return _0x2cea77['update'](_0x191e34)[_0x5c1b('0x21')](function(_0x5ff94f){return _0x5ff94f;});}return null;};}function removeEntity(_0x39b914,_0x4e3d88){return function(_0x1150da){if(_0x1150da){return _0x1150da[_0x5c1b('0x22')]()['then'](function(){_0x39b914['status'](0xcc)[_0x5c1b('0x16')]();});}};}function handleEntityNotFound(_0x4308ac,_0x3f57ec){return function(_0x318ca6){if(!_0x318ca6){_0x4308ac[_0x5c1b('0x15')](0x194);}return _0x318ca6;};}function handleError(_0x22f1a0,_0x2274ef){_0x2274ef=_0x2274ef||0x1f4;return function(_0xd447b){logger[_0x5c1b('0x23')](_0xd447b[_0x5c1b('0x24')]);if(_0xd447b[_0x5c1b('0x25')]){delete _0xd447b[_0x5c1b('0x25')];}_0x22f1a0[_0x5c1b('0x17')](_0x2274ef)[_0x5c1b('0x26')](_0xd447b);};}exports['index']=function(_0x386c90,_0x29de53){var _0x49c3ea={},_0x3987a2={},_0x450482={'count':0x0,'rows':[]};var _0x4b8e31=_['map'](db[_0x5c1b('0x27')][_0x5c1b('0x28')],function(_0x2f627d){return{'name':_0x2f627d[_0x5c1b('0x29')],'type':_0x2f627d[_0x5c1b('0x2a')][_0x5c1b('0x2b')]};});_0x3987a2[_0x5c1b('0x2c')]=_[_0x5c1b('0x2d')](_0x4b8e31,'name');_0x3987a2['query']=_['keys'](_0x386c90[_0x5c1b('0x2e')]);_0x3987a2['filters']=_[_0x5c1b('0x2f')](_0x3987a2[_0x5c1b('0x2c')],_0x3987a2[_0x5c1b('0x2e')]);_0x49c3ea[_0x5c1b('0x30')]=_[_0x5c1b('0x2f')](_0x3987a2[_0x5c1b('0x2c')],qs[_0x5c1b('0x31')](_0x386c90[_0x5c1b('0x2e')]['fields']));_0x49c3ea[_0x5c1b('0x30')]=_0x49c3ea[_0x5c1b('0x30')][_0x5c1b('0x32')]?_0x49c3ea[_0x5c1b('0x30')]:_0x3987a2[_0x5c1b('0x2c')];if(!_0x386c90[_0x5c1b('0x2e')][_0x5c1b('0x33')](_0x5c1b('0x34'))){_0x49c3ea['limit']=qs[_0x5c1b('0x1b')](_0x386c90[_0x5c1b('0x2e')][_0x5c1b('0x1b')]);_0x49c3ea[_0x5c1b('0x19')]=qs['offset'](_0x386c90[_0x5c1b('0x2e')][_0x5c1b('0x19')]);}_0x49c3ea[_0x5c1b('0x35')]=qs[_0x5c1b('0x36')](_0x386c90[_0x5c1b('0x2e')]['sort']);_0x49c3ea[_0x5c1b('0x37')]=qs['filters'](_[_0x5c1b('0x38')](_0x386c90[_0x5c1b('0x2e')],_0x3987a2[_0x5c1b('0x39')]),_0x4b8e31);if(_0x386c90['query'][_0x5c1b('0x3a')]){_0x49c3ea['where']=_[_0x5c1b('0x3b')](_0x49c3ea['where'],{'$or':_[_0x5c1b('0x2d')](_0x4b8e31,function(_0x4308f9){if(_0x4308f9[_0x5c1b('0x2a')]!=='VIRTUAL'){var _0x1f2c5d={};_0x1f2c5d[_0x4308f9['name']]={'$like':'%'+_0x386c90[_0x5c1b('0x2e')][_0x5c1b('0x3a')]+'%'};return _0x1f2c5d;}})});}_0x49c3ea=_['merge']({},_0x49c3ea,_0x386c90['options']);var _0x580e55={'where':_0x49c3ea[_0x5c1b('0x37')]};return db[_0x5c1b('0x27')]['count'](_0x580e55)[_0x5c1b('0x21')](function(_0x2e2729){_0x450482['count']=_0x2e2729;if(_0x386c90[_0x5c1b('0x2e')]['includeAll']){_0x49c3ea[_0x5c1b('0x3c')]=[{'all':!![]}];}return db['OpenchannelTransferReport'][_0x5c1b('0x3d')](_0x49c3ea);})[_0x5c1b('0x21')](function(_0x583c8f){_0x450482[_0x5c1b('0x3e')]=_0x583c8f;return _0x450482;})[_0x5c1b('0x21')](respondWithFilteredResult(_0x29de53,_0x49c3ea))[_0x5c1b('0x3f')](handleError(_0x29de53,null));};exports[_0x5c1b('0x40')]=function(_0x3ce42b,_0x4bef69){var _0x290fa9={'raw':!![],'where':{'id':_0x3ce42b[_0x5c1b('0x41')]['id']}},_0x130630={};_0x130630[_0x5c1b('0x2c')]=_[_0x5c1b('0x42')](db[_0x5c1b('0x27')]['rawAttributes']);_0x130630[_0x5c1b('0x2e')]=_['keys'](_0x3ce42b[_0x5c1b('0x2e')]);_0x130630[_0x5c1b('0x39')]=_[_0x5c1b('0x2f')](_0x130630[_0x5c1b('0x2c')],_0x130630[_0x5c1b('0x2e')]);_0x290fa9[_0x5c1b('0x30')]=_[_0x5c1b('0x2f')](_0x130630[_0x5c1b('0x2c')],qs[_0x5c1b('0x31')](_0x3ce42b[_0x5c1b('0x2e')][_0x5c1b('0x31')]));_0x290fa9['attributes']=_0x290fa9[_0x5c1b('0x30')]['length']?_0x290fa9[_0x5c1b('0x30')]:_0x130630[_0x5c1b('0x2c')];if(_0x3ce42b[_0x5c1b('0x2e')]['includeAll']){_0x290fa9[_0x5c1b('0x3c')]=[{'all':!![]}];}_0x290fa9=_[_0x5c1b('0x3b')]({},_0x290fa9,_0x3ce42b['options']);return db[_0x5c1b('0x27')][_0x5c1b('0x43')](_0x290fa9)['then'](handleEntityNotFound(_0x4bef69,null))[_0x5c1b('0x21')](respondWithResult(_0x4bef69,null))[_0x5c1b('0x3f')](handleError(_0x4bef69,null));};exports[_0x5c1b('0x44')]=function(_0x19f335,_0x57697a){return db[_0x5c1b('0x27')][_0x5c1b('0x44')](_0x19f335[_0x5c1b('0x45')],{})[_0x5c1b('0x21')](respondWithResult(_0x57697a,0xc9))[_0x5c1b('0x3f')](handleError(_0x57697a,null));};exports[_0x5c1b('0x46')]=function(_0x5525be,_0x276e10){if(_0x5525be[_0x5c1b('0x45')]['id']){delete _0x5525be[_0x5c1b('0x45')]['id'];}return db[_0x5c1b('0x27')]['find']({'where':{'id':_0x5525be[_0x5c1b('0x41')]['id']}})[_0x5c1b('0x21')](handleEntityNotFound(_0x276e10,null))[_0x5c1b('0x21')](saveUpdates(_0x5525be[_0x5c1b('0x45')],null))[_0x5c1b('0x21')](respondWithResult(_0x276e10,null))[_0x5c1b('0x3f')](handleError(_0x276e10,null));};exports['destroy']=function(_0x19460b,_0x4f972a){return db[_0x5c1b('0x27')][_0x5c1b('0x43')]({'where':{'id':_0x19460b[_0x5c1b('0x41')]['id']}})['then'](handleEntityNotFound(_0x4f972a,null))[_0x5c1b('0x21')](removeEntity(_0x4f972a,null))[_0x5c1b('0x3f')](handleError(_0x4f972a,null));};exports[_0x5c1b('0x47')]=function(_0x1e8959,_0x2513ab){return db[_0x5c1b('0x27')][_0x5c1b('0x47')]()[_0x5c1b('0x21')](respondWithResult(_0x2513ab,null))['catch'](handleError(_0x2513ab,null));};
\ No newline at end of file
+var _0xfdb0=['keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','merge','VIRTUAL','filter','options','includeAll','findAll','rows','catch','params','include','create','body','destroy','find','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','sendStatus','stack','name','send','index','map','OpenchannelTransferReport','rawAttributes','type','key','model'];(function(_0x199371,_0x51bddf){var _0x9a168=function(_0x41628a){while(--_0x41628a){_0x199371['push'](_0x199371['shift']());}};_0x9a168(++_0x51bddf);}(_0xfdb0,0x102));var _0x0fdb=function(_0x4951e0,_0x11218a){_0x4951e0=_0x4951e0-0x0;var _0x452ccc=_0xfdb0[_0x4951e0];return _0x452ccc;};'use strict';var emlformat=require(_0x0fdb('0x0'));var rimraf=require(_0x0fdb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0fdb('0x2'));var rp=require(_0x0fdb('0x3'));var moment=require(_0x0fdb('0x4'));var BPromise=require(_0x0fdb('0x5'));var Mustache=require(_0x0fdb('0x6'));var util=require('util');var path=require(_0x0fdb('0x7'));var sox=require(_0x0fdb('0x8'));var csv=require(_0x0fdb('0x9'));var ejs=require(_0x0fdb('0xa'));var fs=require('fs');var fs_extra=require(_0x0fdb('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x0fdb('0xc'));var jsforce=require(_0x0fdb('0xd'));var deskjs=require(_0x0fdb('0xe'));var toCsv=require(_0x0fdb('0x9'));var querystring=require(_0x0fdb('0xf'));var Papa=require(_0x0fdb('0x10'));var Redis=require(_0x0fdb('0x11'));var authService=require(_0x0fdb('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x0fdb('0x13'));var hardwareService=require(_0x0fdb('0x14'));var logger=require(_0x0fdb('0x15'))(_0x0fdb('0x16'));var utils=require(_0x0fdb('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x0fdb('0x18'));var db=require(_0x0fdb('0x19'))['db'];function respondWithStatusCode(_0x17f3f9,_0x1b086d){_0x1b086d=_0x1b086d||0xcc;return function(_0x5e40c9){if(_0x5e40c9){return _0x17f3f9['sendStatus'](_0x1b086d);}return _0x17f3f9['status'](_0x1b086d)[_0x0fdb('0x1a')]();};}function respondWithResult(_0x143c5f,_0x54ed5b){_0x54ed5b=_0x54ed5b||0xc8;return function(_0x395435){if(_0x395435){return _0x143c5f[_0x0fdb('0x1b')](_0x54ed5b)[_0x0fdb('0x1c')](_0x395435);}};}function respondWithFilteredResult(_0x4b2abc,_0x6f3683){return function(_0x2c972c){if(_0x2c972c){var _0x506e4b=typeof _0x6f3683[_0x0fdb('0x1d')]===_0x0fdb('0x1e')&&typeof _0x6f3683[_0x0fdb('0x1f')]===_0x0fdb('0x1e');var _0x23207f=_0x2c972c[_0x0fdb('0x20')];var _0x4109a7=_0x506e4b?0x0:_0x6f3683[_0x0fdb('0x1d')];var _0x5894d2=_0x506e4b?_0x2c972c[_0x0fdb('0x20')]:_0x6f3683[_0x0fdb('0x1d')]+_0x6f3683[_0x0fdb('0x1f')];var _0x81293b;if(_0x5894d2>=_0x23207f){_0x5894d2=_0x23207f;_0x81293b=0xc8;}else{_0x81293b=0xce;}_0x4b2abc[_0x0fdb('0x1b')](_0x81293b);return _0x4b2abc['set'](_0x0fdb('0x21'),_0x4109a7+'-'+_0x5894d2+'/'+_0x23207f)[_0x0fdb('0x1c')](_0x2c972c);}return null;};}function patchUpdates(_0x33d236){return function(_0xe8b983){try{jsonpatch[_0x0fdb('0x22')](_0xe8b983,_0x33d236,!![]);}catch(_0x2273d3){return BPromise[_0x0fdb('0x23')](_0x2273d3);}return _0xe8b983[_0x0fdb('0x24')]();};}function saveUpdates(_0x10c7c3,_0x3288c8){return function(_0x4dd827){if(_0x4dd827){return _0x4dd827[_0x0fdb('0x25')](_0x10c7c3)[_0x0fdb('0x26')](function(_0x3b416e){return _0x3b416e;});}return null;};}function removeEntity(_0x50bf63,_0xdb9ffc){return function(_0x266888){if(_0x266888){return _0x266888['destroy']()[_0x0fdb('0x26')](function(){_0x50bf63['status'](0xcc)[_0x0fdb('0x1a')]();});}};}function handleEntityNotFound(_0x1fb9b0,_0x295a87){return function(_0x2bf833){if(!_0x2bf833){_0x1fb9b0[_0x0fdb('0x27')](0x194);}return _0x2bf833;};}function handleError(_0x52a377,_0x4a905f){_0x4a905f=_0x4a905f||0x1f4;return function(_0xb8fa32){logger['error'](_0xb8fa32[_0x0fdb('0x28')]);if(_0xb8fa32[_0x0fdb('0x29')]){delete _0xb8fa32[_0x0fdb('0x29')];}_0x52a377[_0x0fdb('0x1b')](_0x4a905f)[_0x0fdb('0x2a')](_0xb8fa32);};}exports[_0x0fdb('0x2b')]=function(_0x25eecd,_0x2221ce){var _0x24263d={},_0x3b1e0e={},_0x1b4ada={'count':0x0,'rows':[]};var _0x1198a9=_[_0x0fdb('0x2c')](db[_0x0fdb('0x2d')][_0x0fdb('0x2e')],function(_0x1b9ac4){return{'name':_0x1b9ac4['fieldName'],'type':_0x1b9ac4[_0x0fdb('0x2f')][_0x0fdb('0x30')]};});_0x3b1e0e[_0x0fdb('0x31')]=_[_0x0fdb('0x2c')](_0x1198a9,_0x0fdb('0x29'));_0x3b1e0e['query']=_[_0x0fdb('0x32')](_0x25eecd[_0x0fdb('0x33')]);_0x3b1e0e['filters']=_[_0x0fdb('0x34')](_0x3b1e0e[_0x0fdb('0x31')],_0x3b1e0e[_0x0fdb('0x33')]);_0x24263d[_0x0fdb('0x35')]=_['intersection'](_0x3b1e0e[_0x0fdb('0x31')],qs[_0x0fdb('0x36')](_0x25eecd[_0x0fdb('0x33')][_0x0fdb('0x36')]));_0x24263d['attributes']=_0x24263d[_0x0fdb('0x35')][_0x0fdb('0x37')]?_0x24263d[_0x0fdb('0x35')]:_0x3b1e0e[_0x0fdb('0x31')];if(!_0x25eecd['query'][_0x0fdb('0x38')](_0x0fdb('0x39'))){_0x24263d[_0x0fdb('0x1f')]=qs[_0x0fdb('0x1f')](_0x25eecd[_0x0fdb('0x33')][_0x0fdb('0x1f')]);_0x24263d[_0x0fdb('0x1d')]=qs[_0x0fdb('0x1d')](_0x25eecd[_0x0fdb('0x33')]['offset']);}_0x24263d[_0x0fdb('0x3a')]=qs[_0x0fdb('0x3b')](_0x25eecd[_0x0fdb('0x33')]['sort']);_0x24263d[_0x0fdb('0x3c')]=qs[_0x0fdb('0x3d')](_['pick'](_0x25eecd[_0x0fdb('0x33')],_0x3b1e0e[_0x0fdb('0x3d')]),_0x1198a9);if(_0x25eecd[_0x0fdb('0x33')]['filter']){_0x24263d[_0x0fdb('0x3c')]=_[_0x0fdb('0x3e')](_0x24263d[_0x0fdb('0x3c')],{'$or':_[_0x0fdb('0x2c')](_0x1198a9,function(_0x52ff69){if(_0x52ff69[_0x0fdb('0x2f')]!==_0x0fdb('0x3f')){var _0x46bebd={};_0x46bebd[_0x52ff69[_0x0fdb('0x29')]]={'$like':'%'+_0x25eecd[_0x0fdb('0x33')][_0x0fdb('0x40')]+'%'};return _0x46bebd;}})});}_0x24263d=_[_0x0fdb('0x3e')]({},_0x24263d,_0x25eecd[_0x0fdb('0x41')]);var _0x1cd5df={'where':_0x24263d[_0x0fdb('0x3c')]};return db['OpenchannelTransferReport'][_0x0fdb('0x20')](_0x1cd5df)[_0x0fdb('0x26')](function(_0x3da907){_0x1b4ada['count']=_0x3da907;if(_0x25eecd[_0x0fdb('0x33')][_0x0fdb('0x42')]){_0x24263d['include']=[{'all':!![]}];}return db['OpenchannelTransferReport'][_0x0fdb('0x43')](_0x24263d);})[_0x0fdb('0x26')](function(_0x2e8df0){_0x1b4ada[_0x0fdb('0x44')]=_0x2e8df0;return _0x1b4ada;})[_0x0fdb('0x26')](respondWithFilteredResult(_0x2221ce,_0x24263d))[_0x0fdb('0x45')](handleError(_0x2221ce,null));};exports['show']=function(_0x42940a,_0x8331c0){var _0x37395b={'raw':!![],'where':{'id':_0x42940a[_0x0fdb('0x46')]['id']}},_0x5ee8ae={};_0x5ee8ae[_0x0fdb('0x31')]=_[_0x0fdb('0x32')](db[_0x0fdb('0x2d')][_0x0fdb('0x2e')]);_0x5ee8ae['query']=_['keys'](_0x42940a[_0x0fdb('0x33')]);_0x5ee8ae[_0x0fdb('0x3d')]=_[_0x0fdb('0x34')](_0x5ee8ae[_0x0fdb('0x31')],_0x5ee8ae[_0x0fdb('0x33')]);_0x37395b[_0x0fdb('0x35')]=_[_0x0fdb('0x34')](_0x5ee8ae[_0x0fdb('0x31')],qs['fields'](_0x42940a['query'][_0x0fdb('0x36')]));_0x37395b[_0x0fdb('0x35')]=_0x37395b[_0x0fdb('0x35')]['length']?_0x37395b[_0x0fdb('0x35')]:_0x5ee8ae[_0x0fdb('0x31')];if(_0x42940a[_0x0fdb('0x33')][_0x0fdb('0x42')]){_0x37395b[_0x0fdb('0x47')]=[{'all':!![]}];}_0x37395b=_['merge']({},_0x37395b,_0x42940a[_0x0fdb('0x41')]);return db[_0x0fdb('0x2d')]['find'](_0x37395b)['then'](handleEntityNotFound(_0x8331c0,null))[_0x0fdb('0x26')](respondWithResult(_0x8331c0,null))[_0x0fdb('0x45')](handleError(_0x8331c0,null));};exports[_0x0fdb('0x48')]=function(_0x2ba8ef,_0x2a3cfd){return db['OpenchannelTransferReport'][_0x0fdb('0x48')](_0x2ba8ef[_0x0fdb('0x49')],{})[_0x0fdb('0x26')](respondWithResult(_0x2a3cfd,0xc9))[_0x0fdb('0x45')](handleError(_0x2a3cfd,null));};exports[_0x0fdb('0x25')]=function(_0x3f06af,_0x4a0c68){if(_0x3f06af[_0x0fdb('0x49')]['id']){delete _0x3f06af['body']['id'];}return db[_0x0fdb('0x2d')]['find']({'where':{'id':_0x3f06af[_0x0fdb('0x46')]['id']}})[_0x0fdb('0x26')](handleEntityNotFound(_0x4a0c68,null))['then'](saveUpdates(_0x3f06af[_0x0fdb('0x49')],null))[_0x0fdb('0x26')](respondWithResult(_0x4a0c68,null))[_0x0fdb('0x45')](handleError(_0x4a0c68,null));};exports[_0x0fdb('0x4a')]=function(_0x4b04db,_0x4c612b){return db[_0x0fdb('0x2d')][_0x0fdb('0x4b')]({'where':{'id':_0x4b04db[_0x0fdb('0x46')]['id']}})[_0x0fdb('0x26')](handleEntityNotFound(_0x4c612b,null))[_0x0fdb('0x26')](removeEntity(_0x4c612b,null))[_0x0fdb('0x45')](handleError(_0x4c612b,null));};exports[_0x0fdb('0x4c')]=function(_0x281f70,_0x5b6942){return db[_0x0fdb('0x2d')][_0x0fdb('0x4c')]()[_0x0fdb('0x26')](respondWithResult(_0x5b6942,null))[_0x0fdb('0x45')](handleError(_0x5b6942,null));};
\ No newline at end of file
index db06f55..6623245 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c45=['uniqueid','lodash','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./openchannelTransferReport.attributes','report_openchannel_transfer'];(function(_0x3b8774,_0x301a46){var _0x5bcfcc=function(_0x5d9d2f){while(--_0x5d9d2f){_0x3b8774['push'](_0x3b8774['shift']());}};_0x5bcfcc(++_0x301a46);}(_0x3c45,0xc9));var _0x53c4=function(_0x2f2036,_0x11175){_0x2f2036=_0x2f2036-0x0;var _0x3aaf7e=_0x3c45[_0x2f2036];return _0x3aaf7e;};'use strict';var _=require(_0x53c4('0x0'));var util=require('util');var logger=require(_0x53c4('0x1'))(_0x53c4('0x2'));var moment=require('moment');var BPromise=require(_0x53c4('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x53c4('0x4'));var rimraf=require(_0x53c4('0x5'));var config=require(_0x53c4('0x6'));var attributes=require(_0x53c4('0x7'));module['exports']=function(_0x3dbfd9,_0x478609){return _0x3dbfd9['define']('OpenchannelTransferReport',attributes,{'tableName':_0x53c4('0x8'),'paranoid':![],'indexes':[{'name':_0x53c4('0x9'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0e3e=['define','report_openchannel_transfer','uniqueid','lodash','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelTransferReport.attributes'];(function(_0x411579,_0x5a75b8){var _0x463fcb=function(_0x5b63c2){while(--_0x5b63c2){_0x411579['push'](_0x411579['shift']());}};_0x463fcb(++_0x5a75b8);}(_0x0e3e,0x137));var _0xe0e3=function(_0x3561a9,_0x53adfd){_0x3561a9=_0x3561a9-0x0;var _0x3a0bb9=_0x0e3e[_0x3561a9];return _0x3a0bb9;};'use strict';var _=require(_0xe0e3('0x0'));var util=require('util');var logger=require(_0xe0e3('0x1'))('api');var moment=require('moment');var BPromise=require(_0xe0e3('0x2'));var rp=require(_0xe0e3('0x3'));var fs=require('fs');var path=require(_0xe0e3('0x4'));var rimraf=require(_0xe0e3('0x5'));var config=require(_0xe0e3('0x6'));var attributes=require(_0xe0e3('0x7'));module['exports']=function(_0x28cd2c,_0x4994b9){return _0x28cd2c[_0xe0e3('0x8')]('OpenchannelTransferReport',attributes,{'tableName':_0xe0e3('0x9'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xe0e3('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 6d0f76d..eee1a8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf95f=['../../config/logger','../../config/environment','client','request','then','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','OpenchannelTransferReport,\x20%s,\x20%s','message','info','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x2c9596,_0x10d04a){var _0x41adb6=function(_0x43cbae){while(--_0x43cbae){_0x2c9596['push'](_0x2c9596['shift']());}};_0x41adb6(++_0x10d04a);}(_0xf95f,0x142));var _0xff95=function(_0x54fc23,_0x13657e){_0x54fc23=_0x54fc23-0x0;var _0x1948e5=_0xf95f[_0x54fc23];return _0x1948e5;};'use strict';var _=require(_0xff95('0x0'));var util=require(_0xff95('0x1'));var moment=require(_0xff95('0x2'));var BPromise=require(_0xff95('0x3'));var rs=require(_0xff95('0x4'));var fs=require('fs');var Redis=require(_0xff95('0x5'));var db=require(_0xff95('0x6'))['db'];var utils=require(_0xff95('0x7'));var logger=require(_0xff95('0x8'))('rpc');var config=require(_0xff95('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xff95('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x314fb4,_0x781e05,_0x2b9ce9){return new BPromise(function(_0x1a42b2,_0x198a51){return client[_0xff95('0xb')](_0x314fb4,_0x2b9ce9)[_0xff95('0xc')](function(_0xa2a50d){logger['info']('OpenchannelTransferReport,\x20%s,\x20%s',_0x781e05,_0xff95('0xd'));logger[_0xff95('0xe')](_0xff95('0xf'),_0x781e05,_0xff95('0xd'),JSON[_0xff95('0x10')](_0xa2a50d));if(_0xa2a50d[_0xff95('0x11')]){if(_0xa2a50d[_0xff95('0x11')]['code']===0x1f4){logger['error'](_0xff95('0x12'),_0x781e05,_0xa2a50d[_0xff95('0x11')]['message']);return _0x198a51(_0xa2a50d[_0xff95('0x11')]['message']);}logger['error']('OpenchannelTransferReport,\x20%s,\x20%s',_0x781e05,_0xa2a50d[_0xff95('0x11')][_0xff95('0x13')]);return _0x1a42b2(_0xa2a50d[_0xff95('0x11')][_0xff95('0x13')]);}else{logger[_0xff95('0x14')](_0xff95('0x12'),_0x781e05,'request\x20sent');_0x1a42b2(_0xa2a50d['result'][_0xff95('0x13')]);}})[_0xff95('0x15')](function(_0x83e644){logger[_0xff95('0x11')](_0xff95('0x12'),_0x781e05,_0x83e644);_0x198a51(_0x83e644);});});}
\ No newline at end of file
+var _0x37cc=['http','request','then','info','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelTransferReport,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x795248,_0x1ecef9){var _0x2d0f23=function(_0x1f88f0){while(--_0x1f88f0){_0x795248['push'](_0x795248['shift']());}};_0x2d0f23(++_0x1ecef9);}(_0x37cc,0x185));var _0xc37c=function(_0x57c741,_0x26dcc5){_0x57c741=_0x57c741-0x0;var _0x248821=_0x37cc[_0x57c741];return _0x248821;};'use strict';var _=require(_0xc37c('0x0'));var util=require(_0xc37c('0x1'));var moment=require(_0xc37c('0x2'));var BPromise=require(_0xc37c('0x3'));var rs=require(_0xc37c('0x4'));var fs=require('fs');var Redis=require(_0xc37c('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xc37c('0x6'))(_0xc37c('0x7'));var config=require(_0xc37c('0x8'));var jayson=require(_0xc37c('0x9'));var client=jayson[_0xc37c('0xa')][_0xc37c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xd8f098,_0x1eaa97,_0x3c5c63){return new BPromise(function(_0x483c8d,_0x15a756){return client[_0xc37c('0xc')](_0xd8f098,_0x3c5c63)[_0xc37c('0xd')](function(_0x3526b5){logger[_0xc37c('0xe')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x1eaa97,_0xc37c('0xf'));logger[_0xc37c('0x10')](_0xc37c('0x11'),_0x1eaa97,_0xc37c('0xf'),JSON[_0xc37c('0x12')](_0x3526b5));if(_0x3526b5[_0xc37c('0x13')]){if(_0x3526b5[_0xc37c('0x13')][_0xc37c('0x14')]===0x1f4){logger[_0xc37c('0x13')](_0xc37c('0x15'),_0x1eaa97,_0x3526b5[_0xc37c('0x13')]['message']);return _0x15a756(_0x3526b5['error'][_0xc37c('0x16')]);}logger[_0xc37c('0x13')](_0xc37c('0x15'),_0x1eaa97,_0x3526b5[_0xc37c('0x13')][_0xc37c('0x16')]);return _0x483c8d(_0x3526b5[_0xc37c('0x13')]['message']);}else{logger[_0xc37c('0xe')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x1eaa97,_0xc37c('0xf'));_0x483c8d(_0x3526b5[_0xc37c('0x17')][_0xc37c('0x16')]);}})[_0xc37c('0x18')](function(_0x674ccf){logger['error']('OpenchannelTransferReport,\x20%s,\x20%s',_0x1eaa97,_0x674ccf);_0x15a756(_0x674ccf);});});}
\ No newline at end of file
index 77d9bce..c95a70f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c72=['/:id','show','create','put','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5c72,0xf1));var _0x25c7=function(_0x13b16f,_0x543b7a){_0x13b16f=_0x13b16f-0x0;var _0x5e9489=_0x5c72[_0x13b16f];return _0x5e9489;};'use strict';var multer=require(_0x25c7('0x0'));var util=require('util');var path=require(_0x25c7('0x1'));var timeout=require(_0x25c7('0x2'));var express=require(_0x25c7('0x3'));var router=express[_0x25c7('0x4')]();var fs_extra=require(_0x25c7('0x5'));var auth=require(_0x25c7('0x6'));var interaction=require(_0x25c7('0x7'));var config=require('../../config/environment');var controller=require('./pause.controller');router[_0x25c7('0x8')]('/',auth[_0x25c7('0x9')](),controller[_0x25c7('0xa')]);router[_0x25c7('0x8')](_0x25c7('0xb'),auth['isAuthenticated'](),controller[_0x25c7('0xc')]);router['post']('/',auth[_0x25c7('0x9')](),controller[_0x25c7('0xd')]);router[_0x25c7('0xe')]('/:id',auth[_0x25c7('0x9')](),controller['update']);router[_0x25c7('0xf')]('/:id',auth[_0x25c7('0x9')](),controller[_0x25c7('0x10')]);module[_0x25c7('0x11')]=router;
\ No newline at end of file
+var _0x98a6=['./pause.controller','get','index','/:id','isAuthenticated','show','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x8e8ca7,_0x5a5e07){var _0x561381=function(_0x2f4bda){while(--_0x2f4bda){_0x8e8ca7['push'](_0x8e8ca7['shift']());}};_0x561381(++_0x5a5e07);}(_0x98a6,0x90));var _0x698a=function(_0x5e36d1,_0x471178){_0x5e36d1=_0x5e36d1-0x0;var _0x950b9e=_0x98a6[_0x5e36d1];return _0x950b9e;};'use strict';var multer=require(_0x698a('0x0'));var util=require(_0x698a('0x1'));var path=require(_0x698a('0x2'));var timeout=require(_0x698a('0x3'));var express=require('express');var router=express[_0x698a('0x4')]();var fs_extra=require(_0x698a('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x698a('0x6'));var config=require(_0x698a('0x7'));var controller=require(_0x698a('0x8'));router[_0x698a('0x9')]('/',auth['isAuthenticated'](),controller[_0x698a('0xa')]);router[_0x698a('0x9')](_0x698a('0xb'),auth[_0x698a('0xc')](),controller[_0x698a('0xd')]);router['post']('/',auth[_0x698a('0xc')](),controller['create']);router[_0x698a('0xe')](_0x698a('0xb'),auth['isAuthenticated'](),controller[_0x698a('0xf')]);router[_0x698a('0x10')](_0x698a('0xb'),auth[_0x698a('0xc')](),controller[_0x698a('0x11')]);module[_0x698a('0x12')]=router;
\ No newline at end of file
index 9a44e1f..22db7f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9734=['exports','STRING','name','sequelize'];(function(_0x130b34,_0x852ea6){var _0x57489c=function(_0x5d99ad){while(--_0x5d99ad){_0x130b34['push'](_0x130b34['shift']());}};_0x57489c(++_0x852ea6);}(_0x9734,0x15b));var _0x4973=function(_0x152e48,_0x25f775){_0x152e48=_0x152e48-0x0;var _0x30b1a4=_0x9734[_0x152e48];return _0x30b1a4;};'use strict';var Sequelize=require(_0x4973('0x0'));module[_0x4973('0x1')]={'name':{'type':Sequelize[_0x4973('0x2')],'unique':_0x4973('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x4973('0x2')]}};
\ No newline at end of file
+var _0xcbd3=['exports','STRING','name','sequelize'];(function(_0x15888d,_0x965ee1){var _0x3ef1de=function(_0x5b702f){while(--_0x5b702f){_0x15888d['push'](_0x15888d['shift']());}};_0x3ef1de(++_0x965ee1);}(_0xcbd3,0x9b));var _0x3cbd=function(_0x4fa3de,_0x1b5109){_0x4fa3de=_0x4fa3de-0x0;var _0x5a0e25=_0xcbd3[_0x4fa3de];return _0x5a0e25;};'use strict';var Sequelize=require(_0x3cbd('0x0'));module[_0x3cbd('0x1')]={'name':{'type':Sequelize[_0x3cbd('0x2')],'unique':_0x3cbd('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x3cbd('0x2')]}};
\ No newline at end of file
index f8684ca..bdd3ee8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe745=['ejs','fs-extra','lodash','squel','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Pauses','UserProfileResource','end','error','name','send','index','map','Pause','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','sort','where','merge','VIRTUAL','filter','options','include','findAll','rows','catch','show','params','intersection','includeAll','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox'];(function(_0x36ed48,_0x1ee0d4){var _0x51c63a=function(_0x2d0a40){while(--_0x2d0a40){_0x36ed48['push'](_0x36ed48['shift']());}};_0x51c63a(++_0x1ee0d4);}(_0xe745,0x14d));var _0x5e74=function(_0x31f959,_0x2a1f49){_0x31f959=_0x31f959-0x0;var _0x52527c=_0xe745[_0x31f959];return _0x52527c;};'use strict';var emlformat=require(_0x5e74('0x0'));var rimraf=require(_0x5e74('0x1'));var zipdir=require(_0x5e74('0x2'));var jsonpatch=require(_0x5e74('0x3'));var rp=require(_0x5e74('0x4'));var moment=require(_0x5e74('0x5'));var BPromise=require(_0x5e74('0x6'));var Mustache=require(_0x5e74('0x7'));var util=require(_0x5e74('0x8'));var path=require(_0x5e74('0x9'));var sox=require(_0x5e74('0xa'));var csv=require('to-csv');var ejs=require(_0x5e74('0xb'));var fs=require('fs');var fs_extra=require(_0x5e74('0xc'));var _=require(_0x5e74('0xd'));var squel=require(_0x5e74('0xe'));var crypto=require(_0x5e74('0xf'));var jsforce=require(_0x5e74('0x10'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x5e74('0x11'));var authService=require(_0x5e74('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x5e74('0x13'));var hardwareService=require(_0x5e74('0x14'));var logger=require(_0x5e74('0x15'))(_0x5e74('0x16'));var utils=require(_0x5e74('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x5e74('0x18'));var db=require(_0x5e74('0x19'))['db'];function respondWithStatusCode(_0x4faab9,_0x1719ff){_0x1719ff=_0x1719ff||0xcc;return function(_0x5d6d17){if(_0x5d6d17){return _0x4faab9[_0x5e74('0x1a')](_0x1719ff);}return _0x4faab9[_0x5e74('0x1b')](_0x1719ff)['end']();};}function respondWithResult(_0x3b1ec2,_0x10b0ef){_0x10b0ef=_0x10b0ef||0xc8;return function(_0x4c3d7d){if(_0x4c3d7d){return _0x3b1ec2[_0x5e74('0x1b')](_0x10b0ef)[_0x5e74('0x1c')](_0x4c3d7d);}};}function respondWithFilteredResult(_0x51c3e0,_0x3205d1){return function(_0x2eca53){if(_0x2eca53){var _0xd977de=typeof _0x3205d1[_0x5e74('0x1d')]==='undefined'&&typeof _0x3205d1[_0x5e74('0x1e')]===_0x5e74('0x1f');var _0x264cb0=_0x2eca53[_0x5e74('0x20')];var _0x245e02=_0xd977de?0x0:_0x3205d1['offset'];var _0x1f4a58=_0xd977de?_0x2eca53['count']:_0x3205d1[_0x5e74('0x1d')]+_0x3205d1[_0x5e74('0x1e')];var _0x3b7ee2;if(_0x1f4a58>=_0x264cb0){_0x1f4a58=_0x264cb0;_0x3b7ee2=0xc8;}else{_0x3b7ee2=0xce;}_0x51c3e0['status'](_0x3b7ee2);return _0x51c3e0[_0x5e74('0x21')](_0x5e74('0x22'),_0x245e02+'-'+_0x1f4a58+'/'+_0x264cb0)[_0x5e74('0x1c')](_0x2eca53);}return null;};}function patchUpdates(_0x2f4fdf){return function(_0x2713c0){try{jsonpatch[_0x5e74('0x23')](_0x2713c0,_0x2f4fdf,!![]);}catch(_0x2376a8){return BPromise[_0x5e74('0x24')](_0x2376a8);}return _0x2713c0[_0x5e74('0x25')]();};}function saveUpdates(_0x1bf796,_0x1cfd4a){return function(_0x1ee11e){if(_0x1ee11e){return _0x1ee11e[_0x5e74('0x26')](_0x1bf796)[_0x5e74('0x27')](function(_0x153945){return _0x153945;});}return null;};}function removeEntity(_0x4e0007,_0x484d18){return function(_0x42b366){if(_0x42b366){return _0x42b366[_0x5e74('0x28')]()['then'](function(){var _0x51c5d3=_0x42b366[_0x5e74('0x29')]({'plain':!![]});var _0xfe33c9=_0x5e74('0x2a');return db[_0x5e74('0x2b')][_0x5e74('0x28')]({'where':{'type':_0xfe33c9,'resourceId':_0x51c5d3['id']}})[_0x5e74('0x27')](function(){return _0x42b366;});})[_0x5e74('0x27')](function(){_0x4e0007[_0x5e74('0x1b')](0xcc)[_0x5e74('0x2c')]();});}};}function handleEntityNotFound(_0x24c857,_0x2abfc4){return function(_0x55ce12){if(!_0x55ce12){_0x24c857[_0x5e74('0x1a')](0x194);}return _0x55ce12;};}function handleError(_0x11c45d,_0x142a6f){_0x142a6f=_0x142a6f||0x1f4;return function(_0x26d827){logger[_0x5e74('0x2d')](_0x26d827['stack']);if(_0x26d827[_0x5e74('0x2e')]){delete _0x26d827['name'];}_0x11c45d[_0x5e74('0x1b')](_0x142a6f)[_0x5e74('0x2f')](_0x26d827);};}exports[_0x5e74('0x30')]=function(_0x3e278d,_0x2ce2b5){var _0x3322d6={},_0x2bbdaf={},_0x46fbdd={'count':0x0,'rows':[]};var _0x27d19a=_[_0x5e74('0x31')](db[_0x5e74('0x32')][_0x5e74('0x33')],function(_0x1a857b){return{'name':_0x1a857b[_0x5e74('0x34')],'type':_0x1a857b[_0x5e74('0x35')][_0x5e74('0x36')]};});_0x2bbdaf[_0x5e74('0x37')]=_[_0x5e74('0x31')](_0x27d19a,_0x5e74('0x2e'));_0x2bbdaf[_0x5e74('0x38')]=_[_0x5e74('0x39')](_0x3e278d[_0x5e74('0x38')]);_0x2bbdaf[_0x5e74('0x3a')]=_['intersection'](_0x2bbdaf[_0x5e74('0x37')],_0x2bbdaf[_0x5e74('0x38')]);_0x3322d6[_0x5e74('0x3b')]=_['intersection'](_0x2bbdaf[_0x5e74('0x37')],qs[_0x5e74('0x3c')](_0x3e278d['query'][_0x5e74('0x3c')]));_0x3322d6[_0x5e74('0x3b')]=_0x3322d6[_0x5e74('0x3b')][_0x5e74('0x3d')]?_0x3322d6[_0x5e74('0x3b')]:_0x2bbdaf[_0x5e74('0x37')];if(!_0x3e278d['query'][_0x5e74('0x3e')](_0x5e74('0x3f'))){_0x3322d6[_0x5e74('0x1e')]=qs[_0x5e74('0x1e')](_0x3e278d[_0x5e74('0x38')][_0x5e74('0x1e')]);_0x3322d6['offset']=qs[_0x5e74('0x1d')](_0x3e278d[_0x5e74('0x38')][_0x5e74('0x1d')]);}_0x3322d6['order']=qs[_0x5e74('0x40')](_0x3e278d[_0x5e74('0x38')][_0x5e74('0x40')]);_0x3322d6[_0x5e74('0x41')]=qs['filters'](_['pick'](_0x3e278d[_0x5e74('0x38')],_0x2bbdaf[_0x5e74('0x3a')]),_0x27d19a);if(_0x3e278d['query']['filter']){_0x3322d6['where']=_[_0x5e74('0x42')](_0x3322d6[_0x5e74('0x41')],{'$or':_[_0x5e74('0x31')](_0x27d19a,function(_0x5120e4){if(_0x5120e4[_0x5e74('0x35')]!==_0x5e74('0x43')){var _0x25904d={};_0x25904d[_0x5120e4[_0x5e74('0x2e')]]={'$like':'%'+_0x3e278d[_0x5e74('0x38')][_0x5e74('0x44')]+'%'};return _0x25904d;}})});}_0x3322d6=_[_0x5e74('0x42')]({},_0x3322d6,_0x3e278d[_0x5e74('0x45')]);var _0x4a7bfc={'where':_0x3322d6[_0x5e74('0x41')]};return db[_0x5e74('0x32')][_0x5e74('0x20')](_0x4a7bfc)[_0x5e74('0x27')](function(_0x58ebd6){_0x46fbdd[_0x5e74('0x20')]=_0x58ebd6;if(_0x3e278d[_0x5e74('0x38')]['includeAll']){_0x3322d6[_0x5e74('0x46')]=[{'all':!![]}];}return db[_0x5e74('0x32')][_0x5e74('0x47')](_0x3322d6);})[_0x5e74('0x27')](function(_0x1304fe){_0x46fbdd[_0x5e74('0x48')]=_0x1304fe;return _0x46fbdd;})[_0x5e74('0x27')](respondWithFilteredResult(_0x2ce2b5,_0x3322d6))[_0x5e74('0x49')](handleError(_0x2ce2b5,null));};exports[_0x5e74('0x4a')]=function(_0x3d335c,_0x3180f6){var _0x3f15e6={'raw':!![],'where':{'id':_0x3d335c[_0x5e74('0x4b')]['id']}},_0x1cb00e={};_0x1cb00e[_0x5e74('0x37')]=_[_0x5e74('0x39')](db['Pause']['rawAttributes']);_0x1cb00e['query']=_[_0x5e74('0x39')](_0x3d335c[_0x5e74('0x38')]);_0x1cb00e[_0x5e74('0x3a')]=_[_0x5e74('0x4c')](_0x1cb00e[_0x5e74('0x37')],_0x1cb00e['query']);_0x3f15e6[_0x5e74('0x3b')]=_[_0x5e74('0x4c')](_0x1cb00e[_0x5e74('0x37')],qs[_0x5e74('0x3c')](_0x3d335c[_0x5e74('0x38')][_0x5e74('0x3c')]));_0x3f15e6[_0x5e74('0x3b')]=_0x3f15e6[_0x5e74('0x3b')]['length']?_0x3f15e6[_0x5e74('0x3b')]:_0x1cb00e[_0x5e74('0x37')];if(_0x3d335c[_0x5e74('0x38')][_0x5e74('0x4d')]){_0x3f15e6[_0x5e74('0x46')]=[{'all':!![]}];}_0x3f15e6=_[_0x5e74('0x42')]({},_0x3f15e6,_0x3d335c[_0x5e74('0x45')]);return db[_0x5e74('0x32')][_0x5e74('0x4e')](_0x3f15e6)['then'](handleEntityNotFound(_0x3180f6,null))[_0x5e74('0x27')](respondWithResult(_0x3180f6,null))[_0x5e74('0x49')](handleError(_0x3180f6,null));};exports[_0x5e74('0x4f')]=function(_0x20e521,_0x5340da){return db[_0x5e74('0x32')][_0x5e74('0x4f')](_0x20e521['body'],{})[_0x5e74('0x27')](function(_0x1233de){var _0xf70b57=_0x20e521[_0x5e74('0x50')][_0x5e74('0x29')]({'plain':!![]});if(!_0xf70b57)throw new Error(_0x5e74('0x51'));if(_0xf70b57['role']===_0x5e74('0x50')){var _0x2f7b49=_0x1233de[_0x5e74('0x29')]({'plain':!![]});var _0x5a0843=_0x5e74('0x2a');return db['UserProfileSection'][_0x5e74('0x4e')]({'where':{'name':_0x5a0843,'userProfileId':_0xf70b57[_0x5e74('0x52')]},'raw':!![]})[_0x5e74('0x27')](function(_0x139e63){if(_0x139e63&&_0x139e63[_0x5e74('0x53')]===0x0){return db[_0x5e74('0x2b')][_0x5e74('0x4f')]({'name':_0x2f7b49[_0x5e74('0x2e')],'resourceId':_0x2f7b49['id'],'type':_0x139e63[_0x5e74('0x2e')],'sectionId':_0x139e63['id']},{})['then'](function(){return _0x1233de;});}else{return _0x1233de;}})[_0x5e74('0x49')](function(_0x185680){logger[_0x5e74('0x2d')](_0x5e74('0x54'),_0x185680);throw _0x185680;});}return _0x1233de;})[_0x5e74('0x27')](respondWithResult(_0x5340da,0xc9))[_0x5e74('0x49')](handleError(_0x5340da,null));};exports[_0x5e74('0x26')]=function(_0x5df41e,_0x183561){if(_0x5df41e[_0x5e74('0x55')]['id']){delete _0x5df41e['body']['id'];}return db[_0x5e74('0x32')]['find']({'where':{'id':_0x5df41e['params']['id']}})[_0x5e74('0x27')](handleEntityNotFound(_0x183561,null))[_0x5e74('0x27')](saveUpdates(_0x5df41e[_0x5e74('0x55')],null))[_0x5e74('0x27')](respondWithResult(_0x183561,null))[_0x5e74('0x49')](handleError(_0x183561,null));};exports[_0x5e74('0x28')]=function(_0x149343,_0x386e97){return db['Pause']['find']({'where':{'id':_0x149343[_0x5e74('0x4b')]['id']}})[_0x5e74('0x27')](handleEntityNotFound(_0x386e97,null))[_0x5e74('0x27')](removeEntity(_0x386e97,null))['catch'](handleError(_0x386e97,null));};
\ No newline at end of file
+var _0x3e32=['status','Content-Range','reject','save','update','then','destroy','get','UserProfileResource','end','error','stack','name','index','map','rawAttributes','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','Pause','includeAll','include','findAll','show','params','find','catch','create','role','Pauses','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','rimraf','request-promise','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','json','offset','limit','count'];(function(_0x1fba3d,_0x17fda9){var _0x49f7f3=function(_0x4ec44f){while(--_0x4ec44f){_0x1fba3d['push'](_0x1fba3d['shift']());}};_0x49f7f3(++_0x17fda9);}(_0x3e32,0x7c));var _0x23e3=function(_0xd15bdb,_0x4dc987){_0xd15bdb=_0xd15bdb-0x0;var _0x52b4e4=_0x3e32[_0xd15bdb];return _0x52b4e4;};'use strict';var emlformat=require(_0x23e3('0x0'));var rimraf=require(_0x23e3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x23e3('0x2'));var moment=require('moment');var BPromise=require(_0x23e3('0x3'));var Mustache=require(_0x23e3('0x4'));var util=require('util');var path=require(_0x23e3('0x5'));var sox=require(_0x23e3('0x6'));var csv=require(_0x23e3('0x7'));var ejs=require(_0x23e3('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x23e3('0x9'));var squel=require(_0x23e3('0xa'));var crypto=require(_0x23e3('0xb'));var jsforce=require(_0x23e3('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x23e3('0xd'));var Papa=require('papaparse');var Redis=require(_0x23e3('0xe'));var authService=require(_0x23e3('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x23e3('0x10'));var hardwareService=require(_0x23e3('0x11'));var logger=require(_0x23e3('0x12'))(_0x23e3('0x13'));var utils=require(_0x23e3('0x14'));var config=require(_0x23e3('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x23e3('0x16'))['db'];function respondWithStatusCode(_0x2860d2,_0x52587c){_0x52587c=_0x52587c||0xcc;return function(_0x166ba6){if(_0x166ba6){return _0x2860d2[_0x23e3('0x17')](_0x52587c);}return _0x2860d2['status'](_0x52587c)['end']();};}function respondWithResult(_0x1adac2,_0x4cbdab){_0x4cbdab=_0x4cbdab||0xc8;return function(_0x51a7bc){if(_0x51a7bc){return _0x1adac2['status'](_0x4cbdab)[_0x23e3('0x18')](_0x51a7bc);}};}function respondWithFilteredResult(_0x216c5e,_0x3ed9cf){return function(_0x47a595){if(_0x47a595){var _0x8a795=typeof _0x3ed9cf[_0x23e3('0x19')]==='undefined'&&typeof _0x3ed9cf[_0x23e3('0x1a')]==='undefined';var _0x3d1acd=_0x47a595[_0x23e3('0x1b')];var _0x46c3b3=_0x8a795?0x0:_0x3ed9cf['offset'];var _0x23e8bf=_0x8a795?_0x47a595[_0x23e3('0x1b')]:_0x3ed9cf['offset']+_0x3ed9cf['limit'];var _0x3847fe;if(_0x23e8bf>=_0x3d1acd){_0x23e8bf=_0x3d1acd;_0x3847fe=0xc8;}else{_0x3847fe=0xce;}_0x216c5e[_0x23e3('0x1c')](_0x3847fe);return _0x216c5e['set'](_0x23e3('0x1d'),_0x46c3b3+'-'+_0x23e8bf+'/'+_0x3d1acd)[_0x23e3('0x18')](_0x47a595);}return null;};}function patchUpdates(_0x4d5cc5){return function(_0x207dfd){try{jsonpatch['apply'](_0x207dfd,_0x4d5cc5,!![]);}catch(_0x4764c8){return BPromise[_0x23e3('0x1e')](_0x4764c8);}return _0x207dfd[_0x23e3('0x1f')]();};}function saveUpdates(_0x2323ec,_0x5110ae){return function(_0x3f93e2){if(_0x3f93e2){return _0x3f93e2[_0x23e3('0x20')](_0x2323ec)[_0x23e3('0x21')](function(_0x2b34d5){return _0x2b34d5;});}return null;};}function removeEntity(_0x3f4b1a,_0x7f924d){return function(_0x32adc5){if(_0x32adc5){return _0x32adc5[_0x23e3('0x22')]()[_0x23e3('0x21')](function(){var _0x3b953a=_0x32adc5[_0x23e3('0x23')]({'plain':!![]});var _0x30ee0e='Pauses';return db[_0x23e3('0x24')][_0x23e3('0x22')]({'where':{'type':_0x30ee0e,'resourceId':_0x3b953a['id']}})[_0x23e3('0x21')](function(){return _0x32adc5;});})['then'](function(){_0x3f4b1a[_0x23e3('0x1c')](0xcc)[_0x23e3('0x25')]();});}};}function handleEntityNotFound(_0x55ca4c,_0x371965){return function(_0x171a4b){if(!_0x171a4b){_0x55ca4c[_0x23e3('0x17')](0x194);}return _0x171a4b;};}function handleError(_0x493054,_0x386074){_0x386074=_0x386074||0x1f4;return function(_0x234445){logger[_0x23e3('0x26')](_0x234445[_0x23e3('0x27')]);if(_0x234445[_0x23e3('0x28')]){delete _0x234445[_0x23e3('0x28')];}_0x493054[_0x23e3('0x1c')](_0x386074)['send'](_0x234445);};}exports[_0x23e3('0x29')]=function(_0x1e71e8,_0x1f8fec){var _0xe26572={},_0x537717={},_0x2c19c5={'count':0x0,'rows':[]};var _0x24517c=_[_0x23e3('0x2a')](db['Pause'][_0x23e3('0x2b')],function(_0x208748){return{'name':_0x208748['fieldName'],'type':_0x208748['type'][_0x23e3('0x2c')]};});_0x537717[_0x23e3('0x2d')]=_[_0x23e3('0x2a')](_0x24517c,_0x23e3('0x28'));_0x537717[_0x23e3('0x2e')]=_[_0x23e3('0x2f')](_0x1e71e8[_0x23e3('0x2e')]);_0x537717[_0x23e3('0x30')]=_['intersection'](_0x537717[_0x23e3('0x2d')],_0x537717[_0x23e3('0x2e')]);_0xe26572[_0x23e3('0x31')]=_[_0x23e3('0x32')](_0x537717['model'],qs[_0x23e3('0x33')](_0x1e71e8['query']['fields']));_0xe26572['attributes']=_0xe26572[_0x23e3('0x31')][_0x23e3('0x34')]?_0xe26572['attributes']:_0x537717[_0x23e3('0x2d')];if(!_0x1e71e8[_0x23e3('0x2e')][_0x23e3('0x35')](_0x23e3('0x36'))){_0xe26572[_0x23e3('0x1a')]=qs[_0x23e3('0x1a')](_0x1e71e8[_0x23e3('0x2e')][_0x23e3('0x1a')]);_0xe26572[_0x23e3('0x19')]=qs['offset'](_0x1e71e8[_0x23e3('0x2e')][_0x23e3('0x19')]);}_0xe26572[_0x23e3('0x37')]=qs[_0x23e3('0x38')](_0x1e71e8[_0x23e3('0x2e')][_0x23e3('0x38')]);_0xe26572[_0x23e3('0x39')]=qs[_0x23e3('0x30')](_['pick'](_0x1e71e8['query'],_0x537717[_0x23e3('0x30')]),_0x24517c);if(_0x1e71e8[_0x23e3('0x2e')][_0x23e3('0x3a')]){_0xe26572[_0x23e3('0x39')]=_[_0x23e3('0x3b')](_0xe26572[_0x23e3('0x39')],{'$or':_[_0x23e3('0x2a')](_0x24517c,function(_0x15d242){if(_0x15d242['type']!=='VIRTUAL'){var _0x56d6ef={};_0x56d6ef[_0x15d242['name']]={'$like':'%'+_0x1e71e8[_0x23e3('0x2e')][_0x23e3('0x3a')]+'%'};return _0x56d6ef;}})});}_0xe26572=_[_0x23e3('0x3b')]({},_0xe26572,_0x1e71e8[_0x23e3('0x3c')]);var _0x22e04c={'where':_0xe26572['where']};return db[_0x23e3('0x3d')][_0x23e3('0x1b')](_0x22e04c)[_0x23e3('0x21')](function(_0x1d943e){_0x2c19c5[_0x23e3('0x1b')]=_0x1d943e;if(_0x1e71e8[_0x23e3('0x2e')][_0x23e3('0x3e')]){_0xe26572[_0x23e3('0x3f')]=[{'all':!![]}];}return db[_0x23e3('0x3d')][_0x23e3('0x40')](_0xe26572);})['then'](function(_0x52f58d){_0x2c19c5['rows']=_0x52f58d;return _0x2c19c5;})['then'](respondWithFilteredResult(_0x1f8fec,_0xe26572))['catch'](handleError(_0x1f8fec,null));};exports[_0x23e3('0x41')]=function(_0x25d33a,_0x28458f){var _0x5d72c3={'raw':!![],'where':{'id':_0x25d33a[_0x23e3('0x42')]['id']}},_0x14840d={};_0x14840d[_0x23e3('0x2d')]=_['keys'](db['Pause'][_0x23e3('0x2b')]);_0x14840d[_0x23e3('0x2e')]=_[_0x23e3('0x2f')](_0x25d33a['query']);_0x14840d[_0x23e3('0x30')]=_[_0x23e3('0x32')](_0x14840d['model'],_0x14840d[_0x23e3('0x2e')]);_0x5d72c3[_0x23e3('0x31')]=_[_0x23e3('0x32')](_0x14840d[_0x23e3('0x2d')],qs['fields'](_0x25d33a[_0x23e3('0x2e')][_0x23e3('0x33')]));_0x5d72c3[_0x23e3('0x31')]=_0x5d72c3[_0x23e3('0x31')][_0x23e3('0x34')]?_0x5d72c3[_0x23e3('0x31')]:_0x14840d['model'];if(_0x25d33a[_0x23e3('0x2e')][_0x23e3('0x3e')]){_0x5d72c3[_0x23e3('0x3f')]=[{'all':!![]}];}_0x5d72c3=_[_0x23e3('0x3b')]({},_0x5d72c3,_0x25d33a[_0x23e3('0x3c')]);return db[_0x23e3('0x3d')][_0x23e3('0x43')](_0x5d72c3)[_0x23e3('0x21')](handleEntityNotFound(_0x28458f,null))[_0x23e3('0x21')](respondWithResult(_0x28458f,null))[_0x23e3('0x44')](handleError(_0x28458f,null));};exports[_0x23e3('0x45')]=function(_0x42b4a6,_0x159d04){return db['Pause'][_0x23e3('0x45')](_0x42b4a6['body'],{})['then'](function(_0x97757d){var _0x545b55=_0x42b4a6['user'][_0x23e3('0x23')]({'plain':!![]});if(!_0x545b55)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x545b55[_0x23e3('0x46')]==='user'){var _0x14da6f=_0x97757d[_0x23e3('0x23')]({'plain':!![]});var _0xdbbffb=_0x23e3('0x47');return db['UserProfileSection'][_0x23e3('0x43')]({'where':{'name':_0xdbbffb,'userProfileId':_0x545b55[_0x23e3('0x48')]},'raw':!![]})['then'](function(_0x3af3b4){if(_0x3af3b4&&_0x3af3b4[_0x23e3('0x49')]===0x0){return db[_0x23e3('0x24')][_0x23e3('0x45')]({'name':_0x14da6f['name'],'resourceId':_0x14da6f['id'],'type':_0x3af3b4[_0x23e3('0x28')],'sectionId':_0x3af3b4['id']},{})['then'](function(){return _0x97757d;});}else{return _0x97757d;}})[_0x23e3('0x44')](function(_0x33eda6){logger[_0x23e3('0x26')](_0x23e3('0x4a'),_0x33eda6);throw _0x33eda6;});}return _0x97757d;})[_0x23e3('0x21')](respondWithResult(_0x159d04,0xc9))[_0x23e3('0x44')](handleError(_0x159d04,null));};exports[_0x23e3('0x20')]=function(_0x517cb7,_0x12e1af){if(_0x517cb7['body']['id']){delete _0x517cb7[_0x23e3('0x4b')]['id'];}return db[_0x23e3('0x3d')][_0x23e3('0x43')]({'where':{'id':_0x517cb7['params']['id']}})[_0x23e3('0x21')](handleEntityNotFound(_0x12e1af,null))['then'](saveUpdates(_0x517cb7[_0x23e3('0x4b')],null))[_0x23e3('0x21')](respondWithResult(_0x12e1af,null))['catch'](handleError(_0x12e1af,null));};exports[_0x23e3('0x22')]=function(_0x46a123,_0x5553ac){return db['Pause']['find']({'where':{'id':_0x46a123['params']['id']}})['then'](handleEntityNotFound(_0x5553ac,null))[_0x23e3('0x21')](removeEntity(_0x5553ac,null))[_0x23e3('0x44')](handleError(_0x5553ac,null));};
\ No newline at end of file
index 3a65ce5..ea41bbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ef6=['exports','define','Pause','tools_pauses','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./pause.attributes'];(function(_0x5cbcaf,_0x4ff829){var _0x48a8f6=function(_0x317798){while(--_0x317798){_0x5cbcaf['push'](_0x5cbcaf['shift']());}};_0x48a8f6(++_0x4ff829);}(_0x8ef6,0xf2));var _0x68ef=function(_0x4b96a5,_0x6c47e8){_0x4b96a5=_0x4b96a5-0x0;var _0x2fbb16=_0x8ef6[_0x4b96a5];return _0x2fbb16;};'use strict';var _=require(_0x68ef('0x0'));var util=require(_0x68ef('0x1'));var logger=require(_0x68ef('0x2'))(_0x68ef('0x3'));var moment=require(_0x68ef('0x4'));var BPromise=require(_0x68ef('0x5'));var rp=require(_0x68ef('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x68ef('0x7'));var config=require(_0x68ef('0x8'));var attributes=require(_0x68ef('0x9'));module[_0x68ef('0xa')]=function(_0x4d26e3,_0x4f77f3){return _0x4d26e3[_0x68ef('0xb')](_0x68ef('0xc'),attributes,{'tableName':_0x68ef('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xabce=['util','../../config/logger','api','moment','path','rimraf','../../config/environment','define','tools_pauses','lodash'];(function(_0x4a8aaf,_0x417ef1){var _0x33f7fb=function(_0x3132e3){while(--_0x3132e3){_0x4a8aaf['push'](_0x4a8aaf['shift']());}};_0x33f7fb(++_0x417ef1);}(_0xabce,0x103));var _0xeabc=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0xabce[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0xeabc('0x0'));var util=require(_0xeabc('0x1'));var logger=require(_0xeabc('0x2'))(_0xeabc('0x3'));var moment=require(_0xeabc('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xeabc('0x5'));var rimraf=require(_0xeabc('0x6'));var config=require(_0xeabc('0x7'));var attributes=require('./pause.attributes');module['exports']=function(_0x1b07a8,_0x52a4d7){return _0x1b07a8[_0xeabc('0x8')]('Pause',attributes,{'tableName':_0xeabc('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6057114..0968bc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Pause,\x20%s,\x20%s','Pause,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','ShowPause','Pause','find','options','raw','where','attributes','map','include','model','debug'];(function(_0x7acd3c,_0x1bab7d){var _0x225822=function(_0x242d21){while(--_0x242d21){_0x7acd3c['push'](_0x7acd3c['shift']());}};_0x225822(++_0x1bab7d);}(_0xb10b,0x12a));var _0xbb10=function(_0x346392,_0x32b724){_0x346392=_0x346392-0x0;var _0xd76262=_0xb10b[_0x346392];return _0xd76262;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')]({'raw':_0x378da8['options']?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![],'where':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x1a')]||null:null,'attributes':_0x378da8[_0xbb10('0x18')]?_0x378da8['options'][_0xbb10('0x1b')]||null:null,'include':_0x378da8[_0xbb10('0x18')]?_0x378da8['options']['include']?_[_0xbb10('0x1c')](_0x378da8[_0xbb10('0x18')][_0xbb10('0x1d')],function(_0x317da4){return{'model':db[_0x317da4[_0xbb10('0x1e')]],'as':_0x317da4['as'],'attributes':_0x317da4[_0xbb10('0x1b')],'include':_0x317da4[_0xbb10('0x1d')]?_[_0xbb10('0x1c')](_0x317da4[_0xbb10('0x1d')],function(_0x395404){return{'model':db[_0x395404[_0xbb10('0x1e')]],'as':_0x395404['as'],'attributes':_0x395404[_0xbb10('0x1b')],'include':_0x395404['include']?_['map'](_0x395404['include'],function(_0xc93a04){return{'model':db[_0xc93a04[_0xbb10('0x1e')]],'as':_0xc93a04['as'],'attributes':_0xc93a04[_0xbb10('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2fdde9){logger[_0xbb10('0xd')](_0xbb10('0x15'),_0x378da8);logger[_0xbb10('0x1f')](_0xbb10('0x15'),_0x378da8,JSON[_0xbb10('0x11')](_0x2fdde9));_0x575cca(_0x2fdde9);})[_0xbb10('0x20')](function(_0x4aabb9){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x4aabb9[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x4aabb9[_0xbb10('0x13')]));});});};
\ No newline at end of file
+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(_0x59b48b,_0x584733){var _0x4c3f79=function(_0x3f2e94){while(--_0x3f2e94){_0x59b48b['push'](_0x59b48b['shift']());}};_0x4c3f79(++_0x584733);}(_0x7a54,0x106));var _0x47a5=function(_0x2f6327,_0x2437a2){_0x2f6327=_0x2f6327-0x0;var _0x12478a=_0x7a54[_0x2f6327];return _0x12478a;};'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 c8731f6..8fa8a02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['/:id','/:id/download','join','root','server/files/plugins','originalname','format','basename','extname','now','single','file','upload','post','update','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./plugin.controller','get','isAuthenticated','index','webhookGet'];(function(_0x740940,_0x592d2d){var _0x3d97f1=function(_0x2cd590){while(--_0x2cd590){_0x740940['push'](_0x740940['shift']());}};_0x3d97f1(++_0x592d2d);}(_0x008c,0x188));var _0xc008=function(_0x540511,_0x201e3b){_0x540511=_0x540511-0x0;var _0x5c1ac6=_0x008c[_0x540511];return _0x5c1ac6;};'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')]('/webhook',controller[_0xc008('0xd')]);router['get'](_0xc008('0xe'),auth['isAuthenticated'](),controller['show']);router[_0xc008('0xa')](_0xc008('0xf'),auth['isAuthenticated'](),controller['download']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x1eacfa,_0xc881aa,_0x5b2004){_0x5b2004(null,path[_0xc008('0x10')](config[_0xc008('0x11')],_0xc008('0x12')));},'filename':function(_0x2a5b4e,_0x9ffa93,_0x1819c6){_0x9ffa93[_0xc008('0x13')]=_0x9ffa93['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x1819c6(null,util[_0xc008('0x14')]('%s-%s%s',path[_0xc008('0x15')](_0x9ffa93[_0xc008('0x13')],path[_0xc008('0x16')](_0x9ffa93[_0xc008('0x13')])),Date[_0xc008('0x17')](),path['extname'](_0x9ffa93['originalname'])));}})});router['post']('/',upload[_0xc008('0x18')](_0xc008('0x19')),controller[_0xc008('0x1a')]);router[_0xc008('0x1b')]('/webhook',controller['webhookPost']);router['put']('/:id',auth[_0xc008('0xb')](),controller[_0xc008('0x1c')]);router['delete'](_0xc008('0xe'),auth['isAuthenticated'](),controller['delete']);module['exports']=router;
\ No newline at end of file
+var _0x17ba=['single','upload','put','update','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./plugin.controller','get','isAuthenticated','index','/webhook','webhookGet','/:id','show','download','diskStorage','join','server/files/plugins','originalname','replace','format','basename','extname','post'];(function(_0x3c1bc1,_0x27777a){var _0x120f65=function(_0x4a2664){while(--_0x4a2664){_0x3c1bc1['push'](_0x3c1bc1['shift']());}};_0x120f65(++_0x27777a);}(_0x17ba,0xab));var _0xa17b=function(_0x3afb31,_0xfe01ac){_0x3afb31=_0x3afb31-0x0;var _0x2ba222=_0x17ba[_0x3afb31];return _0x2ba222;};'use strict';var multer=require(_0xa17b('0x0'));var util=require(_0xa17b('0x1'));var path=require('path');var timeout=require(_0xa17b('0x2'));var express=require(_0xa17b('0x3'));var router=express[_0xa17b('0x4')]();var fs_extra=require(_0xa17b('0x5'));var auth=require(_0xa17b('0x6'));var interaction=require(_0xa17b('0x7'));var config=require(_0xa17b('0x8'));var controller=require(_0xa17b('0x9'));router[_0xa17b('0xa')]('/',auth[_0xa17b('0xb')](),controller[_0xa17b('0xc')]);router[_0xa17b('0xa')](_0xa17b('0xd'),controller[_0xa17b('0xe')]);router[_0xa17b('0xa')](_0xa17b('0xf'),auth[_0xa17b('0xb')](),controller[_0xa17b('0x10')]);router[_0xa17b('0xa')]('/:id/download',auth[_0xa17b('0xb')](),controller[_0xa17b('0x11')]);var upload=multer({'storage':multer[_0xa17b('0x12')]({'destination':function(_0x1e799a,_0x140943,_0x4382df){_0x4382df(null,path[_0xa17b('0x13')](config['root'],_0xa17b('0x14')));},'filename':function(_0x3e92e4,_0x3c3a8a,_0x52b7aa){_0x3c3a8a[_0xa17b('0x15')]=_0x3c3a8a[_0xa17b('0x15')][_0xa17b('0x16')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x52b7aa(null,util[_0xa17b('0x17')]('%s-%s%s',path[_0xa17b('0x18')](_0x3c3a8a['originalname'],path[_0xa17b('0x19')](_0x3c3a8a[_0xa17b('0x15')])),Date['now'](),path[_0xa17b('0x19')](_0x3c3a8a[_0xa17b('0x15')])));}})});router[_0xa17b('0x1a')]('/',upload[_0xa17b('0x1b')]('file'),controller[_0xa17b('0x1c')]);router['post']('/webhook',controller['webhookPost']);router[_0xa17b('0x1d')](_0xa17b('0xf'),auth['isAuthenticated'](),controller[_0xa17b('0x1e')]);router[_0xa17b('0x1f')](_0xa17b('0xf'),auth[_0xa17b('0xb')](),controller[_0xa17b('0x1f')]);module[_0xa17b('0x20')]=router;
\ No newline at end of file
index 7bf7b92..c9114f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca60=['never','always','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','exports','STRING','html','script','TEXT','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','ENUM','adminOnly'];(function(_0x117973,_0xe17e9d){var _0x154ec1=function(_0x50e245){while(--_0x50e245){_0x117973['push'](_0x117973['shift']());}};_0x154ec1(++_0xe17e9d);}(_0xca60,0xb9));var _0x0ca6=function(_0x3074f1,_0x4901aa){_0x3074f1=_0x3074f1-0x0;var _0x149af8=_0xca60[_0x3074f1];return _0x149af8;};'use strict';var Sequelize=require('sequelize');module[_0x0ca6('0x0')]={'name':{'type':Sequelize[_0x0ca6('0x1')]},'type':{'type':Sequelize['ENUM'](_0x0ca6('0x2'),_0x0ca6('0x3'))},'description':{'type':Sequelize[_0x0ca6('0x4')]},'version':{'type':Sequelize[_0x0ca6('0x4')]},'path':{'type':Sequelize[_0x0ca6('0x1')],'comment':_0x0ca6('0x5')},'active':{'type':Sequelize[_0x0ca6('0x6')],'defaultValue':0x0,'comment':_0x0ca6('0x7')},'sidebar':{'type':Sequelize[_0x0ca6('0x8')](_0x0ca6('0x9'),'agentOnly','always',_0x0ca6('0xa')),'defaultValue':_0x0ca6('0xb'),'comment':_0x0ca6('0xc')},'icon':{'type':Sequelize[_0x0ca6('0x1')]},'adminUrl':{'type':Sequelize[_0x0ca6('0x1')]},'agentUrl':{'type':Sequelize[_0x0ca6('0x1')]},'scriptName':{'type':Sequelize[_0x0ca6('0x1')]},'scriptPath':{'type':Sequelize[_0x0ca6('0x1')]}};
\ No newline at end of file
+var _0x6968=['ENUM','script','TEXT','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','adminOnly','always','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','exports','STRING'];(function(_0x12783e,_0x29ae3f){var _0x559c9a=function(_0x23107b){while(--_0x23107b){_0x12783e['push'](_0x12783e['shift']());}};_0x559c9a(++_0x29ae3f);}(_0x6968,0xd5));var _0x8696=function(_0x5be8ab,_0x4000a6){_0x5be8ab=_0x5be8ab-0x0;var _0x35914d=_0x6968[_0x5be8ab];return _0x35914d;};'use strict';var Sequelize=require(_0x8696('0x0'));module[_0x8696('0x1')]={'name':{'type':Sequelize[_0x8696('0x2')]},'type':{'type':Sequelize[_0x8696('0x3')]('html',_0x8696('0x4'))},'description':{'type':Sequelize[_0x8696('0x5')]},'version':{'type':Sequelize[_0x8696('0x5')]},'path':{'type':Sequelize[_0x8696('0x2')],'comment':_0x8696('0x6')},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x8696('0x7')},'sidebar':{'type':Sequelize[_0x8696('0x3')](_0x8696('0x8'),'agentOnly',_0x8696('0x9'),_0x8696('0xa')),'defaultValue':_0x8696('0x9'),'comment':_0x8696('0xb')},'icon':{'type':Sequelize[_0x8696('0x2')]},'adminUrl':{'type':Sequelize[_0x8696('0x2')]},'agentUrl':{'type':Sequelize[_0x8696('0x2')]},'scriptName':{'type':Sequelize[_0x8696('0x2')]},'scriptPath':{'type':Sequelize[_0x8696('0x2')]}};
\ No newline at end of file
index af78090..00bab1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0837=['script','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','description','sidebar','always','icon','admin','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','agent','Warning:\x20agent\x20view\x20not\x20specified','create','body','role','userProfileId','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','update','delete','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','encoding','method','%s%s','headers','content-length','content-type','endsWith','statusCode','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','extract-zip','rimraf','archiver','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./plugin.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','get','Plugins','error','name','send','index','Plugin','type','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','catch','show','params','rawAttributes','length','include','find','join','root','format','basename','createWriteStream','zip','warning','code','ENOENT','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','glob','server/files/plugins','dirname','node_modules/**/*','attachments/**/*','close','existsSync','Plugin\x20not\x20found','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Download\x20completed','Temporary\x20file\x20removed','upload','file','extname','filename','Plugin\x20upload\x20filepath:\x20%s','chmodSync','0777','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','parse','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','views','Invalid\x20manifest:\x20views\x20missing','Invalid\x20manifest:\x20no\x20view\x20specified'];(function(_0x243b59,_0x3f9495){var _0x3e1676=function(_0x354052){while(--_0x354052){_0x243b59['push'](_0x243b59['shift']());}};_0x3e1676(++_0x3f9495);}(_0x0837,0x189));var _0x7083=function(_0x3d71ad,_0x5179bc){_0x3d71ad=_0x3d71ad-0x0;var _0x218dff=_0x0837[_0x3d71ad];return _0x218dff;};'use strict';var emlformat=require(_0x7083('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7083('0x1'));var jsonpatch=require(_0x7083('0x2'));var rp=require(_0x7083('0x3'));var moment=require('moment');var BPromise=require(_0x7083('0x4'));var Mustache=require(_0x7083('0x5'));var util=require('util');var path=require(_0x7083('0x6'));var sox=require(_0x7083('0x7'));var csv=require(_0x7083('0x8'));var ejs=require(_0x7083('0x9'));var fs=require('fs');var fs_extra=require(_0x7083('0xa'));var _=require(_0x7083('0xb'));var squel=require(_0x7083('0xc'));var crypto=require(_0x7083('0xd'));var jsforce=require(_0x7083('0xe'));var deskjs=require(_0x7083('0xf'));var toCsv=require(_0x7083('0x8'));var querystring=require(_0x7083('0x10'));var Papa=require(_0x7083('0x11'));var extract=require(_0x7083('0x12'));var rimraf=require(_0x7083('0x13'));var archiver=require(_0x7083('0x14'));var Redis=require(_0x7083('0x15'));var authService=require(_0x7083('0x16'));var qs=require(_0x7083('0x17'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x7083('0x18'))(_0x7083('0x19'));var utils=require('../../config/utils');var config=require(_0x7083('0x1a'));var licenseUtil=require(_0x7083('0x1b'));var db=require(_0x7083('0x1c'))['db'];config[_0x7083('0x1d')]=_[_0x7083('0x1e')](config['redis'],{'host':_0x7083('0x1f'),'port':0x18eb});var socket=require(_0x7083('0x20'))(new Redis(config[_0x7083('0x1d')]));require(_0x7083('0x21'))[_0x7083('0x22')](socket);function respondWithStatusCode(_0x297cdc,_0x116430){_0x116430=_0x116430||0xcc;return function(_0x5946dc){if(_0x5946dc){return _0x297cdc[_0x7083('0x23')](_0x116430);}return _0x297cdc[_0x7083('0x24')](_0x116430)[_0x7083('0x25')]();};}function respondWithResult(_0x2e5eb1,_0x5d6a48){_0x5d6a48=_0x5d6a48||0xc8;return function(_0x6b3cd7){if(_0x6b3cd7){return _0x2e5eb1[_0x7083('0x24')](_0x5d6a48)[_0x7083('0x26')](_0x6b3cd7);}};}function respondWithFilteredResult(_0x27c4b7,_0x484c5c){return function(_0x1319ca){if(_0x1319ca){var _0x1e5b97=typeof _0x484c5c[_0x7083('0x27')]===_0x7083('0x28')&&typeof _0x484c5c[_0x7083('0x29')]==='undefined';var _0x50df7e=_0x1319ca[_0x7083('0x2a')];var _0x40cd7e=_0x1e5b97?0x0:_0x484c5c[_0x7083('0x27')];var _0x1e7504=_0x1e5b97?_0x1319ca[_0x7083('0x2a')]:_0x484c5c[_0x7083('0x27')]+_0x484c5c['limit'];var _0x4abac7;if(_0x1e7504>=_0x50df7e){_0x1e7504=_0x50df7e;_0x4abac7=0xc8;}else{_0x4abac7=0xce;}_0x27c4b7['status'](_0x4abac7);return _0x27c4b7[_0x7083('0x2b')](_0x7083('0x2c'),_0x40cd7e+'-'+_0x1e7504+'/'+_0x50df7e)['json'](_0x1319ca);}return null;};}function patchUpdates(_0x4c0d52){return function(_0x555e99){try{jsonpatch[_0x7083('0x2d')](_0x555e99,_0x4c0d52,!![]);}catch(_0x1508e9){return BPromise[_0x7083('0x2e')](_0x1508e9);}return _0x555e99[_0x7083('0x2f')]();};}function saveUpdates(_0x5127c2,_0x30d2ec){return function(_0x5a9394){if(_0x5a9394){return _0x5a9394['update'](_0x5127c2)[_0x7083('0x30')](function(_0x2613ec){return _0x2613ec;});}return null;};}function removeEntity(_0xc53d04,_0x44d92c){return function(_0x5c1402){if(_0x5c1402){return _0x5c1402[_0x7083('0x31')]()['then'](function(){var _0x579e31=_0x5c1402[_0x7083('0x32')]({'plain':!![]});var _0x4314be=_0x7083('0x33');return db['UserProfileResource'][_0x7083('0x31')]({'where':{'type':_0x4314be,'resourceId':_0x579e31['id']}})[_0x7083('0x30')](function(){return _0x5c1402;});})['then'](function(){_0xc53d04['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x545376,_0xe3626a){return function(_0x4e5eaf){if(!_0x4e5eaf){_0x545376[_0x7083('0x23')](0x194);}return _0x4e5eaf;};}function handleError(_0x44f3ae,_0x2885b9){_0x2885b9=_0x2885b9||0x1f4;return function(_0x3a3cb0){logger[_0x7083('0x34')](_0x3a3cb0['stack']);if(_0x3a3cb0[_0x7083('0x35')]){delete _0x3a3cb0[_0x7083('0x35')];}_0x44f3ae[_0x7083('0x24')](_0x2885b9)[_0x7083('0x36')](_0x3a3cb0);};}exports[_0x7083('0x37')]=function(_0x1f75ad,_0x5a8ed6){var _0x440f4a={},_0x2a18ae={},_0x16a3ef={'count':0x0,'rows':[]};var _0x3e92d8=_['map'](db[_0x7083('0x38')]['rawAttributes'],function(_0x2b26df){return{'name':_0x2b26df['fieldName'],'type':_0x2b26df[_0x7083('0x39')]['key']};});_0x2a18ae[_0x7083('0x3a')]=_[_0x7083('0x3b')](_0x3e92d8,_0x7083('0x35'));_0x2a18ae[_0x7083('0x3c')]=_[_0x7083('0x3d')](_0x1f75ad['query']);_0x2a18ae[_0x7083('0x3e')]=_[_0x7083('0x3f')](_0x2a18ae['model'],_0x2a18ae[_0x7083('0x3c')]);_0x440f4a[_0x7083('0x40')]=_[_0x7083('0x3f')](_0x2a18ae[_0x7083('0x3a')],qs['fields'](_0x1f75ad[_0x7083('0x3c')][_0x7083('0x41')]));_0x440f4a[_0x7083('0x40')]=_0x440f4a[_0x7083('0x40')]['length']?_0x440f4a['attributes']:_0x2a18ae[_0x7083('0x3a')];if(!_0x1f75ad[_0x7083('0x3c')][_0x7083('0x42')](_0x7083('0x43'))){_0x440f4a['limit']=qs[_0x7083('0x29')](_0x1f75ad[_0x7083('0x3c')]['limit']);_0x440f4a['offset']=qs[_0x7083('0x27')](_0x1f75ad['query'][_0x7083('0x27')]);}_0x440f4a['order']=qs[_0x7083('0x44')](_0x1f75ad['query']['sort']);_0x440f4a[_0x7083('0x45')]=qs[_0x7083('0x3e')](_[_0x7083('0x46')](_0x1f75ad[_0x7083('0x3c')],_0x2a18ae[_0x7083('0x3e')]),_0x3e92d8);if(_0x1f75ad[_0x7083('0x3c')][_0x7083('0x47')]){_0x440f4a['where']=_[_0x7083('0x48')](_0x440f4a['where'],{'$or':_[_0x7083('0x3b')](_0x3e92d8,function(_0x16bc43){if(_0x16bc43[_0x7083('0x39')]!==_0x7083('0x49')){var _0x404671={};_0x404671[_0x16bc43['name']]={'$like':'%'+_0x1f75ad[_0x7083('0x3c')]['filter']+'%'};return _0x404671;}})});}_0x440f4a=_[_0x7083('0x48')]({},_0x440f4a,_0x1f75ad[_0x7083('0x4a')]);var _0x5803c4={'where':_0x440f4a[_0x7083('0x45')]};return db[_0x7083('0x38')][_0x7083('0x2a')](_0x5803c4)['then'](function(_0x1b8c6b){_0x16a3ef[_0x7083('0x2a')]=_0x1b8c6b;if(_0x1f75ad[_0x7083('0x3c')][_0x7083('0x4b')]){_0x440f4a['include']=[{'all':!![]}];}return db[_0x7083('0x38')][_0x7083('0x4c')](_0x440f4a);})[_0x7083('0x30')](function(_0x3225d9){_0x16a3ef['rows']=_0x3225d9;return _0x16a3ef;})[_0x7083('0x30')](respondWithFilteredResult(_0x5a8ed6,_0x440f4a))[_0x7083('0x4d')](handleError(_0x5a8ed6,null));};exports[_0x7083('0x4e')]=function(_0xa73934,_0x310e4f){var _0x314c84={'raw':!![],'where':{'id':_0xa73934[_0x7083('0x4f')]['id']}},_0x51a8c1={};_0x51a8c1[_0x7083('0x3a')]=_['keys'](db[_0x7083('0x38')][_0x7083('0x50')]);_0x51a8c1[_0x7083('0x3c')]=_[_0x7083('0x3d')](_0xa73934[_0x7083('0x3c')]);_0x51a8c1['filters']=_[_0x7083('0x3f')](_0x51a8c1[_0x7083('0x3a')],_0x51a8c1[_0x7083('0x3c')]);_0x314c84[_0x7083('0x40')]=_[_0x7083('0x3f')](_0x51a8c1[_0x7083('0x3a')],qs[_0x7083('0x41')](_0xa73934[_0x7083('0x3c')]['fields']));_0x314c84[_0x7083('0x40')]=_0x314c84[_0x7083('0x40')][_0x7083('0x51')]?_0x314c84[_0x7083('0x40')]:_0x51a8c1['model'];if(_0xa73934['query'][_0x7083('0x4b')]){_0x314c84[_0x7083('0x52')]=[{'all':!![]}];}_0x314c84=_[_0x7083('0x48')]({},_0x314c84,_0xa73934[_0x7083('0x4a')]);return db[_0x7083('0x38')][_0x7083('0x53')](_0x314c84)['then'](handleEntityNotFound(_0x310e4f,null))[_0x7083('0x30')](respondWithResult(_0x310e4f,null))['catch'](handleError(_0x310e4f,null));};exports['download']=function(_0x26e2aa,_0x3ea6cb,_0x56c051){return db[_0x7083('0x38')][_0x7083('0x53')]({'where':{'id':_0x26e2aa[_0x7083('0x4f')]['id']},'attributes':['name',_0x7083('0x6')],'raw':!![]})['then'](handleEntityNotFound(_0x3ea6cb,null))['then'](function(_0x2676a5){if(_0x2676a5){var _0x5e841d=path[_0x7083('0x54')](config[_0x7083('0x55')],'server/files/plugins',util[_0x7083('0x56')]('%s.zip',path[_0x7083('0x57')](_0x2676a5[_0x7083('0x6')])));var _0x11bc6b=fs[_0x7083('0x58')](_0x5e841d);var _0x215370=archiver(_0x7083('0x59'),{'zlib':{'level':0x9}});_0x215370['on'](_0x7083('0x5a'),function(_0x48b29d){if(_0x48b29d[_0x7083('0x5b')]===_0x7083('0x5c')){logger['error'](_0x48b29d);}else{throw new db[(_0x7083('0x5d'))][(_0x7083('0x5e'))](_0x7083('0x5f'));}});_0x215370['on']('error',function(_0x4511e1){throw new db['Sequelize']['Error'](_0x7083('0x5f'));});_0x215370[_0x7083('0x60')](_0x11bc6b);_0x215370[_0x7083('0x61')]('**/*',{'cwd':path[_0x7083('0x54')](config[_0x7083('0x55')],_0x7083('0x62'),path[_0x7083('0x63')](_0x2676a5[_0x7083('0x6')])),'ignore':[path[_0x7083('0x54')](path[_0x7083('0x57')](_0x2676a5['path']),_0x7083('0x64')),path['join'](path[_0x7083('0x57')](_0x2676a5[_0x7083('0x6')]),_0x7083('0x65'))],'nodir':!![]})['finalize']();_0x11bc6b['on'](_0x7083('0x66'),function(){if(!fs[_0x7083('0x67')](_0x5e841d)){throw new db[(_0x7083('0x5d'))][(_0x7083('0x5e'))](_0x7083('0x68'));}return _0x3ea6cb['download'](_0x5e841d,util[_0x7083('0x56')]('%s.zip',path['basename'](_0x2676a5['path'])),function(_0x467b2c){if(_0x467b2c){throw new db['Sequelize'][(_0x7083('0x5e'))](_0x7083('0x69'));}fs[_0x7083('0x6a')](_0x5e841d);logger[_0x7083('0x6b')](_0x7083('0x6c'));logger[_0x7083('0x6b')](_0x7083('0x6d'));});});}return null;})[_0x7083('0x4d')](handleError(_0x3ea6cb,null));};exports[_0x7083('0x6e')]=function(_0x362e3f,_0x24c584,_0x25b9df){var _0x5d1b0a=path[_0x7083('0x57')](_0x362e3f[_0x7083('0x6f')]['filename'],path[_0x7083('0x70')](_0x362e3f[_0x7083('0x6f')][_0x7083('0x71')]));var _0x1c0e35=path[_0x7083('0x54')](config[_0x7083('0x55')],_0x7083('0x62'),_0x362e3f[_0x7083('0x6f')][_0x7083('0x71')]);var _0x1c398e=path[_0x7083('0x54')](config['root'],_0x7083('0x62'),_0x5d1b0a);logger[_0x7083('0x6b')](_0x7083('0x72'),_0x1c0e35);logger[_0x7083('0x6b')]('Plugin\x20upload\x20destination:\x20%s',_0x1c398e);try{fs[_0x7083('0x73')](_0x1c0e35,parseInt(_0x7083('0x74'),0x8));extract(_0x1c0e35,{'dir':_0x1c398e},function(_0x27cc1c){if(_0x27cc1c){logger[_0x7083('0x34')](_0x27cc1c);handleError(_0x27cc1c,!![]);};var _0x23580f=fs[_0x7083('0x75')](_0x1c398e);if(_0x23580f['length']>0x1){removeReferences(_0x1c0e35,_0x1c398e);logger[_0x7083('0x34')](_0x7083('0x76'));return _0x25b9df(new Error(_0x7083('0x76')));}var _0x489f58=fs[_0x7083('0x77')](path[_0x7083('0x54')](_0x1c398e,_0x23580f[0x0]));if(_0x489f58[_0x7083('0x78')]()){removeReferences(_0x1c0e35,_0x1c398e);logger['error'](_0x7083('0x76'));return _0x25b9df(new Error(_0x7083('0x76')));}if(_0x489f58[_0x7083('0x79')]()){var _0x4998c=fs[_0x7083('0x75')](path[_0x7083('0x54')](_0x1c398e,_0x23580f[0x0]));if(_0x4998c[_0x7083('0x51')]===0x0){removeReferences(_0x1c0e35,_0x1c398e);logger[_0x7083('0x34')]('Invalid\x20plugin\x20structure');return _0x25b9df(new Error(_0x7083('0x76')));}var _0x184a8d=_0x4998c[_0x7083('0x7a')](function(_0x454bab){return _0x454bab===_0x7083('0x7b');});if(!_0x184a8d){return _0x25b9df(new Error(_0x7083('0x7c')));}var _0x49a5ac=fs[_0x7083('0x7d')](path[_0x7083('0x54')](_0x1c398e,_0x23580f[0x0],_0x7083('0x7b')));var _0x1464e1=JSON[_0x7083('0x7e')](_0x49a5ac);if(_0x7083('0x28')==typeof _0x1464e1[_0x7083('0x35')]){return _0x25b9df(new Error(_0x7083('0x7f')));}if(_0x7083('0x28')==typeof _0x1464e1[_0x7083('0x39')]){return _0x25b9df(new Error(_0x7083('0x80')));}if(_0x7083('0x28')==typeof _0x1464e1[_0x7083('0x81')]){return _0x25b9df(new Error(_0x7083('0x82')));}if(_0x7083('0x28')==typeof _0x1464e1[_0x7083('0x83')]){return _0x25b9df(new Error('Invalid\x20manifest:\x20parameters\x20missing'));}if(_0x1464e1[_0x7083('0x39')]==='html'){if(_0x7083('0x28')==typeof _0x1464e1[_0x7083('0x83')][_0x7083('0x84')]){return _0x25b9df(new Error(_0x7083('0x85')));}if(_0x7083('0x28')==typeof _0x1464e1[_0x7083('0x83')][_0x7083('0x84')]['admin']&&_0x7083('0x28')==typeof _0x1464e1['parameters'][_0x7083('0x84')]['agent']){return _0x25b9df(new Error(_0x7083('0x86')));}}else if(_0x1464e1[_0x7083('0x39')]===_0x7083('0x87')){if(_0x7083('0x28')==typeof _0x1464e1[_0x7083('0x83')][_0x7083('0x88')]){return _0x25b9df(new Error(_0x7083('0x89')));}if('undefined'==typeof _0x1464e1['parameters'][_0x7083('0x8a')]){return _0x25b9df(new Error('Invalid\x20manifest:\x20script\x20path\x20missing'));}}else{return _0x25b9df(new Error('Invalid\x20manifest:\x20invalid\x20type'));}var _0x2dc3e0=_0x1464e1['name'];var _0x2635ea=_0x1464e1[_0x7083('0x8b')];var _0x3bc732=_0x1464e1[_0x7083('0x39')];var _0x43978c=_0x1464e1[_0x7083('0x8c')]?_0x1464e1[_0x7083('0x8c')]:_0x7083('0x8d');var _0x5d2f35=_0x1464e1[_0x7083('0x8e')]?_0x1464e1[_0x7083('0x8e')]:'icon-apps';var _0x51ddb0='';var _0x112c06='';var _0x3c0fa3='';var _0x50107c='';var _0x114560=_0x1464e1[_0x7083('0x81')];if(_0x3bc732==='html'){if(_0x7083('0x28')!=typeof _0x1464e1[_0x7083('0x83')]['views'][_0x7083('0x8f')]){var _0x287fec=_0x1464e1[_0x7083('0x83')]['views'][_0x7083('0x8f')];if(!/^(f|ht)tps?:\/\//i[_0x7083('0x90')](_0x287fec)){_0x51ddb0=path['join'](_0x7083('0x91'),_0x5d1b0a,_0x23580f[0x0],_0x287fec);}else{_0x51ddb0=_0x287fec;}}else{logger['info'](_0x7083('0x92'));}if(_0x7083('0x28')!=typeof _0x1464e1[_0x7083('0x83')][_0x7083('0x84')][_0x7083('0x93')]){var _0x5ef8ad=_0x1464e1[_0x7083('0x83')][_0x7083('0x84')]['agent'];if(!/^(f|ht)tps?:\/\//i['test'](_0x5ef8ad)){_0x112c06=path['join'](_0x7083('0x91'),_0x5d1b0a,_0x23580f[0x0],_0x5ef8ad);}else{_0x112c06=_0x5ef8ad;}}else{logger[_0x7083('0x6b')](_0x7083('0x94'));}}else if(_0x3bc732===_0x7083('0x87')){_0x3c0fa3=_0x1464e1[_0x7083('0x83')][_0x7083('0x88')];_0x50107c=_0x1464e1[_0x7083('0x83')][_0x7083('0x8a')];if(_0x7083('0x28')!=typeof _0x1464e1[_0x7083('0x83')][_0x7083('0x84')]){if(_0x7083('0x28')!=typeof _0x1464e1[_0x7083('0x83')][_0x7083('0x84')][_0x7083('0x8f')]){var _0x287fec=_0x1464e1['parameters'][_0x7083('0x84')][_0x7083('0x8f')];if(!/^(f|ht)tps?:\/\//i['test'](_0x287fec)){_0x51ddb0=path[_0x7083('0x54')](_0x7083('0x91'),_0x5d1b0a,_0x23580f[0x0],_0x287fec);}else{_0x51ddb0=_0x287fec;}}if(_0x7083('0x28')!=typeof _0x1464e1[_0x7083('0x83')]['views']['agent']){var _0x5ef8ad=_0x1464e1[_0x7083('0x83')][_0x7083('0x84')]['agent'];if(!/^(f|ht)tps?:\/\//i['test'](_0x5ef8ad)){_0x112c06=path[_0x7083('0x54')](_0x7083('0x91'),_0x5d1b0a,_0x23580f[0x0],_0x5ef8ad);}else{_0x112c06=_0x5ef8ad;}}}}var _0x5a2db8={'name':_0x2dc3e0,'description':_0x2635ea,'path':path[_0x7083('0x54')](_0x5d1b0a,_0x23580f[0x0]),'type':_0x3bc732,'sidebar':_0x43978c,'icon':_0x5d2f35,'adminUrl':_0x51ddb0,'agentUrl':_0x112c06,'scriptName':_0x3c0fa3,'scriptPath':_0x50107c,'version':_0x114560};removeReferences(_0x1c0e35,null);return db[_0x7083('0x38')][_0x7083('0x95')](_0x5a2db8)[_0x7083('0x30')](function(_0x59a6f9){var _0x2e18ff={'role':_0x362e3f[_0x7083('0x96')][_0x7083('0x97')],'userProfileId':_0x362e3f[_0x7083('0x96')][_0x7083('0x98')]};if(!_0x2e18ff)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2e18ff[_0x7083('0x97')]==='user'){var _0x215427=_0x59a6f9['get']({'plain':!![]});return db[_0x7083('0x99')][_0x7083('0x53')]({'where':{'name':_0x7083('0x33'),'userProfileId':_0x2e18ff[_0x7083('0x98')]},'raw':!![]})['then'](function(_0x19605e){if(_0x19605e&&_0x19605e[_0x7083('0x9a')]===0x0){return db[_0x7083('0x9b')][_0x7083('0x95')]({'name':_0x215427[_0x7083('0x35')],'resourceId':_0x215427['id'],'type':_0x19605e['name'],'sectionId':_0x19605e['id']},{})['then'](function(){return _0x59a6f9;});}else{return _0x59a6f9;}})['catch'](function(_0x474e6c){logger[_0x7083('0x34')](_0x7083('0x9c'),_0x474e6c);throw _0x474e6c;});}return _0x59a6f9;})[_0x7083('0x30')](respondWithResult(_0x24c584,null))['catch'](handleError(_0x24c584,null));}});}catch(_0x3ae869){_0x24c584[_0x7083('0x24')](0x1f4)['send'](_0x3ae869);}};function removeReferences(_0x1989ee,_0xe3d777){try{if(_0x1989ee){fs['unlinkSync'](_0x1989ee);logger[_0x7083('0x6b')](_0x7083('0x9d'));}if(_0xe3d777){rimraf(_0xe3d777,function(){});logger['info'](_0x7083('0x9e'));}}catch(_0x4b4a54){logger['error'](_0x4b4a54);}}exports[_0x7083('0x9f')]=function(_0xca4efc,_0x11e642,_0x28b6e5){return db['Plugin'][_0x7083('0x53')]({'where':{'id':_0xca4efc[_0x7083('0x4f')]['id']}})[_0x7083('0x30')](handleEntityNotFound(_0x11e642,null))[_0x7083('0x30')](saveUpdates(_0xca4efc[_0x7083('0x96')],null))['then'](respondWithResult(_0x11e642,null))[_0x7083('0x4d')](handleError(_0x11e642,null));};exports[_0x7083('0xa0')]=function(_0x31d97a,_0x3d4c55,_0x29ac20){return db['Plugin']['find']({'where':{'id':_0x31d97a[_0x7083('0x4f')]['id']}})[_0x7083('0x30')](function(_0x17b2ad){if(_0x17b2ad){return _0x17b2ad[_0x7083('0x31')]();}})['then'](function(_0x30069a){rimraf(path[_0x7083('0x54')](config[_0x7083('0x55')],'server/files/plugins',path['dirname'](_0x30069a['path'])),function(){});return _0x30069a;})[_0x7083('0x30')](handleEntityNotFound(_0x3d4c55,null))[_0x7083('0x30')](respondWithStatusCode(_0x3d4c55,null))[_0x7083('0x4d')](handleError(_0x3d4c55,null));};exports[_0x7083('0xa1')]=function(_0x12a8dc,_0x5570b7,_0x150967){return BPromise[_0x7083('0xa2')]()[_0x7083('0x30')](function(){if(!_0x12a8dc[_0x7083('0x3c')]['path']){throw new Error(_0x7083('0xa3'));}if(!_0x12a8dc[_0x7083('0x3c')][_0x7083('0xa4')]){throw new Error(_0x7083('0xa5'));}var _0x506eca=_0x12a8dc['query'][_0x7083('0xa6')]?_0x12a8dc[_0x7083('0x3c')][_0x7083('0xa6')]+':'+_0x12a8dc['query'][_0x7083('0xa4')]:_0x7083('0xa7')+_0x12a8dc[_0x7083('0x3c')]['port'];var _0x6d0a3e=_0x12a8dc[_0x7083('0x3c')][_0x7083('0x26')]?_0x12a8dc['query']['json']:!![];var _0x5712e0=_0x12a8dc[_0x7083('0x3c')][_0x7083('0xa8')]?_0x12a8dc[_0x7083('0x3c')][_0x7083('0xa8')]:null;var _0x38dcc1={'method':_0x12a8dc[_0x7083('0xa9')],'uri':util['format'](_0x7083('0xaa'),_0x506eca,_0x12a8dc[_0x7083('0x3c')][_0x7083('0x6')]),'json':_0x6d0a3e,'resolveWithFullResponse':!![],'encoding':_0x5712e0,'qs':_0x12a8dc['query']};if(_0x12a8dc[_0x7083('0xab')]){_0x38dcc1['headers']=_0x12a8dc[_0x7083('0xab')];if(_0x38dcc1['headers'][_0x7083('0xac')]){delete _0x38dcc1[_0x7083('0xab')][_0x7083('0xac')];}}if(_0x38dcc1[_0x7083('0xab')][_0x7083('0xad')]){delete _0x38dcc1['headers'][_0x7083('0xad')];}return rp(_0x38dcc1);})['then'](function(_0x1391de){if(_0x1391de){_0x5570b7[_0x7083('0x2b')](_0x1391de[_0x7083('0xab')]);logger[_0x7083('0x6b')](_0x1391de[_0x7083('0x96')]);if(_[_0x7083('0xae')](_0x12a8dc[_0x7083('0x3c')][_0x7083('0x6')],'download')&&_0x1391de[_0x7083('0xaf')]==0x1f4){return _0x5570b7[_0x7083('0x23')](_0x1391de[_0x7083('0xaf')]);}else{return _0x5570b7[_0x7083('0x24')](_0x1391de['statusCode'])['send'](_0x1391de['body']);}}else{return _0x5570b7[_0x7083('0x23')](0xc8);}})['catch'](handleError(_0x5570b7,null));};exports['webhookPost']=function(_0xe54f38,_0xacd35c,_0x48721a){return BPromise['resolve']()['then'](function(){if(!_0xe54f38[_0x7083('0x3c')][_0x7083('0x6')]){throw new Error(_0x7083('0xa3'));}if(!_0xe54f38['query']['port']){throw new Error(_0x7083('0xa5'));}var _0x4f021a=_0xe54f38[_0x7083('0x3c')][_0x7083('0xa6')]?_0xe54f38[_0x7083('0x3c')]['hostname']+':'+_0xe54f38[_0x7083('0x3c')][_0x7083('0xa4')]:_0x7083('0xa7')+_0xe54f38[_0x7083('0x3c')][_0x7083('0xa4')];var _0x52d9ba=_0xe54f38[_0x7083('0x3c')]['json']?_0xe54f38['query'][_0x7083('0x26')]:!![];var _0x5d2584=_0xe54f38['query'][_0x7083('0xa8')]?_0xe54f38[_0x7083('0x3c')][_0x7083('0xa8')]:null;var _0x163ef9={'method':_0xe54f38['method'],'uri':util['format']('%s%s',_0x4f021a,_0xe54f38[_0x7083('0x3c')][_0x7083('0x6')]),'json':_0x52d9ba,'resolveWithFullResponse':!![],'encoding':_0x5d2584,'body':_0xe54f38[_0x7083('0x96')]};if(_0xe54f38[_0x7083('0xab')]){_0x163ef9['headers']=_0xe54f38['headers'];if(_0x163ef9['headers'][_0x7083('0xac')]){delete _0x163ef9['headers'][_0x7083('0xac')];}}if(_0x163ef9['headers'][_0x7083('0xad')]){delete _0x163ef9[_0x7083('0xab')][_0x7083('0xad')];}return rp(_0x163ef9);})['then'](function(_0x5ea81f){if(_0x5ea81f){_0xacd35c[_0x7083('0x2b')](_0x5ea81f[_0x7083('0xab')]);logger[_0x7083('0x6b')](_0x5ea81f['body']);return _0xacd35c['status'](_0x5ea81f[_0x7083('0xaf')])[_0x7083('0x36')](_0x5ea81f[_0x7083('0x96')]);}else{return _0xacd35c['sendStatus'](0xc8);}})['catch'](handleError(_0xacd35c,null));};
\ No newline at end of file
+var _0x1e38=['Invalid\x20manifest:\x20parameters\x20missing','html','admin','views','Invalid\x20manifest:\x20no\x20view\x20specified','script','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','icon-apps','test','agent','Warning:\x20agent\x20view\x20not\x20specified','plugins','create','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','unlinkSync','Extracted\x20folder\x20removed','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:','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','lodash','squel','jsforce','desk.js','extract-zip','archiver','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./plugin.socket','register','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','reject','save','then','destroy','get','Plugins','UserProfileResource','end','error','name','send','index','Plugin','rawAttributes','type','key','model','map','query','filters','attributes','intersection','fields','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','keys','length','find','download','path','join','server/files/plugins','basename','createWriteStream','zip','warning','code','ENOENT','Sequelize','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','glob','**/*','dirname','attachments/**/*','finalize','close','Plugin\x20not\x20found','%s.zip','Error','Error\x20while\x20downloading\x20the\x20plugin','info','Download\x20completed','upload','file','filename','extname','root','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','parse','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','parameters'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x1e38,0xdb));var _0x81e3=function(_0x3fb9dd,_0x174fff){_0x3fb9dd=_0x3fb9dd-0x0;var _0x20136a=_0x1e38[_0x3fb9dd];return _0x20136a;};'use strict';var emlformat=require(_0x81e3('0x0'));var rimraf=require(_0x81e3('0x1'));var zipdir=require(_0x81e3('0x2'));var jsonpatch=require(_0x81e3('0x3'));var rp=require(_0x81e3('0x4'));var moment=require(_0x81e3('0x5'));var BPromise=require(_0x81e3('0x6'));var Mustache=require(_0x81e3('0x7'));var util=require('util');var path=require('path');var sox=require(_0x81e3('0x8'));var csv=require(_0x81e3('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x81e3('0xa'));var squel=require(_0x81e3('0xb'));var crypto=require('crypto');var jsforce=require(_0x81e3('0xc'));var deskjs=require(_0x81e3('0xd'));var toCsv=require(_0x81e3('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var extract=require(_0x81e3('0xe'));var rimraf=require(_0x81e3('0x1'));var archiver=require(_0x81e3('0xf'));var Redis=require(_0x81e3('0x10'));var authService=require(_0x81e3('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x81e3('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x81e3('0x13'));var utils=require(_0x81e3('0x14'));var config=require(_0x81e3('0x15'));var licenseUtil=require(_0x81e3('0x16'));var db=require(_0x81e3('0x17'))['db'];config[_0x81e3('0x18')]=_['defaults'](config[_0x81e3('0x18')],{'host':_0x81e3('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x81e3('0x1a'))[_0x81e3('0x1b')](socket);function respondWithStatusCode(_0x30c0a6,_0x2ab08b){_0x2ab08b=_0x2ab08b||0xcc;return function(_0x1c0222){if(_0x1c0222){return _0x30c0a6[_0x81e3('0x1c')](_0x2ab08b);}return _0x30c0a6[_0x81e3('0x1d')](_0x2ab08b)['end']();};}function respondWithResult(_0x2fe974,_0x423b57){_0x423b57=_0x423b57||0xc8;return function(_0x4e38ed){if(_0x4e38ed){return _0x2fe974[_0x81e3('0x1d')](_0x423b57)['json'](_0x4e38ed);}};}function respondWithFilteredResult(_0x597431,_0x1b2275){return function(_0x1e57c6){if(_0x1e57c6){var _0xfa650d=typeof _0x1b2275[_0x81e3('0x1e')]===_0x81e3('0x1f')&&typeof _0x1b2275[_0x81e3('0x20')]===_0x81e3('0x1f');var _0x184757=_0x1e57c6[_0x81e3('0x21')];var _0x29c945=_0xfa650d?0x0:_0x1b2275['offset'];var _0x520801=_0xfa650d?_0x1e57c6[_0x81e3('0x21')]:_0x1b2275[_0x81e3('0x1e')]+_0x1b2275[_0x81e3('0x20')];var _0x1a66e6;if(_0x520801>=_0x184757){_0x520801=_0x184757;_0x1a66e6=0xc8;}else{_0x1a66e6=0xce;}_0x597431[_0x81e3('0x1d')](_0x1a66e6);return _0x597431[_0x81e3('0x22')](_0x81e3('0x23'),_0x29c945+'-'+_0x520801+'/'+_0x184757)[_0x81e3('0x24')](_0x1e57c6);}return null;};}function patchUpdates(_0x1f02fc){return function(_0x3abf38){try{jsonpatch['apply'](_0x3abf38,_0x1f02fc,!![]);}catch(_0x191adc){return BPromise[_0x81e3('0x25')](_0x191adc);}return _0x3abf38[_0x81e3('0x26')]();};}function saveUpdates(_0x9ca83a,_0x494ae7){return function(_0xf97471){if(_0xf97471){return _0xf97471['update'](_0x9ca83a)[_0x81e3('0x27')](function(_0x2078e4){return _0x2078e4;});}return null;};}function removeEntity(_0x1e16b8,_0xa0376f){return function(_0x2a13e4){if(_0x2a13e4){return _0x2a13e4[_0x81e3('0x28')]()[_0x81e3('0x27')](function(){var _0xe1949b=_0x2a13e4[_0x81e3('0x29')]({'plain':!![]});var _0x215214=_0x81e3('0x2a');return db[_0x81e3('0x2b')][_0x81e3('0x28')]({'where':{'type':_0x215214,'resourceId':_0xe1949b['id']}})['then'](function(){return _0x2a13e4;});})[_0x81e3('0x27')](function(){_0x1e16b8[_0x81e3('0x1d')](0xcc)[_0x81e3('0x2c')]();});}};}function handleEntityNotFound(_0xdac525,_0x1d367d){return function(_0x21eed3){if(!_0x21eed3){_0xdac525[_0x81e3('0x1c')](0x194);}return _0x21eed3;};}function handleError(_0x279cd9,_0x52c19c){_0x52c19c=_0x52c19c||0x1f4;return function(_0x268e82){logger[_0x81e3('0x2d')](_0x268e82['stack']);if(_0x268e82[_0x81e3('0x2e')]){delete _0x268e82[_0x81e3('0x2e')];}_0x279cd9[_0x81e3('0x1d')](_0x52c19c)[_0x81e3('0x2f')](_0x268e82);};}exports[_0x81e3('0x30')]=function(_0x472ca9,_0x3ef510){var _0x4bd9c1={},_0x288cb0={},_0x419abd={'count':0x0,'rows':[]};var _0x29386f=_['map'](db[_0x81e3('0x31')][_0x81e3('0x32')],function(_0x113aa2){return{'name':_0x113aa2['fieldName'],'type':_0x113aa2[_0x81e3('0x33')][_0x81e3('0x34')]};});_0x288cb0[_0x81e3('0x35')]=_[_0x81e3('0x36')](_0x29386f,'name');_0x288cb0['query']=_['keys'](_0x472ca9[_0x81e3('0x37')]);_0x288cb0[_0x81e3('0x38')]=_['intersection'](_0x288cb0[_0x81e3('0x35')],_0x288cb0[_0x81e3('0x37')]);_0x4bd9c1[_0x81e3('0x39')]=_[_0x81e3('0x3a')](_0x288cb0['model'],qs[_0x81e3('0x3b')](_0x472ca9[_0x81e3('0x37')]['fields']));_0x4bd9c1[_0x81e3('0x39')]=_0x4bd9c1['attributes']['length']?_0x4bd9c1[_0x81e3('0x39')]:_0x288cb0[_0x81e3('0x35')];if(!_0x472ca9[_0x81e3('0x37')]['hasOwnProperty']('nolimit')){_0x4bd9c1['limit']=qs[_0x81e3('0x20')](_0x472ca9[_0x81e3('0x37')]['limit']);_0x4bd9c1['offset']=qs[_0x81e3('0x1e')](_0x472ca9[_0x81e3('0x37')]['offset']);}_0x4bd9c1[_0x81e3('0x3c')]=qs[_0x81e3('0x3d')](_0x472ca9[_0x81e3('0x37')][_0x81e3('0x3d')]);_0x4bd9c1['where']=qs[_0x81e3('0x38')](_[_0x81e3('0x3e')](_0x472ca9[_0x81e3('0x37')],_0x288cb0[_0x81e3('0x38')]),_0x29386f);if(_0x472ca9[_0x81e3('0x37')][_0x81e3('0x3f')]){_0x4bd9c1[_0x81e3('0x40')]=_[_0x81e3('0x41')](_0x4bd9c1[_0x81e3('0x40')],{'$or':_[_0x81e3('0x36')](_0x29386f,function(_0x19819d){if(_0x19819d[_0x81e3('0x33')]!==_0x81e3('0x42')){var _0x5349f1={};_0x5349f1[_0x19819d['name']]={'$like':'%'+_0x472ca9[_0x81e3('0x37')]['filter']+'%'};return _0x5349f1;}})});}_0x4bd9c1=_[_0x81e3('0x41')]({},_0x4bd9c1,_0x472ca9[_0x81e3('0x43')]);var _0x7b414a={'where':_0x4bd9c1[_0x81e3('0x40')]};return db[_0x81e3('0x31')][_0x81e3('0x21')](_0x7b414a)[_0x81e3('0x27')](function(_0x1787ab){_0x419abd[_0x81e3('0x21')]=_0x1787ab;if(_0x472ca9['query'][_0x81e3('0x44')]){_0x4bd9c1[_0x81e3('0x45')]=[{'all':!![]}];}return db[_0x81e3('0x31')][_0x81e3('0x46')](_0x4bd9c1);})[_0x81e3('0x27')](function(_0x58841b){_0x419abd[_0x81e3('0x47')]=_0x58841b;return _0x419abd;})[_0x81e3('0x27')](respondWithFilteredResult(_0x3ef510,_0x4bd9c1))[_0x81e3('0x48')](handleError(_0x3ef510,null));};exports['show']=function(_0x3afc38,_0x5c02a3){var _0x12aea0={'raw':!![],'where':{'id':_0x3afc38[_0x81e3('0x49')]['id']}},_0x465580={};_0x465580[_0x81e3('0x35')]=_[_0x81e3('0x4a')](db[_0x81e3('0x31')][_0x81e3('0x32')]);_0x465580[_0x81e3('0x37')]=_[_0x81e3('0x4a')](_0x3afc38['query']);_0x465580[_0x81e3('0x38')]=_[_0x81e3('0x3a')](_0x465580['model'],_0x465580['query']);_0x12aea0[_0x81e3('0x39')]=_[_0x81e3('0x3a')](_0x465580[_0x81e3('0x35')],qs[_0x81e3('0x3b')](_0x3afc38[_0x81e3('0x37')][_0x81e3('0x3b')]));_0x12aea0[_0x81e3('0x39')]=_0x12aea0[_0x81e3('0x39')][_0x81e3('0x4b')]?_0x12aea0['attributes']:_0x465580[_0x81e3('0x35')];if(_0x3afc38[_0x81e3('0x37')][_0x81e3('0x44')]){_0x12aea0[_0x81e3('0x45')]=[{'all':!![]}];}_0x12aea0=_[_0x81e3('0x41')]({},_0x12aea0,_0x3afc38['options']);return db[_0x81e3('0x31')][_0x81e3('0x4c')](_0x12aea0)[_0x81e3('0x27')](handleEntityNotFound(_0x5c02a3,null))[_0x81e3('0x27')](respondWithResult(_0x5c02a3,null))[_0x81e3('0x48')](handleError(_0x5c02a3,null));};exports[_0x81e3('0x4d')]=function(_0x260834,_0x4daa08,_0x3f1f29){return db[_0x81e3('0x31')]['find']({'where':{'id':_0x260834[_0x81e3('0x49')]['id']},'attributes':[_0x81e3('0x2e'),_0x81e3('0x4e')],'raw':!![]})[_0x81e3('0x27')](handleEntityNotFound(_0x4daa08,null))[_0x81e3('0x27')](function(_0x1eef2c){if(_0x1eef2c){var _0x1ec5f7=path[_0x81e3('0x4f')](config['root'],_0x81e3('0x50'),util['format']('%s.zip',path[_0x81e3('0x51')](_0x1eef2c['path'])));var _0x3c8b63=fs[_0x81e3('0x52')](_0x1ec5f7);var _0x403ac9=archiver(_0x81e3('0x53'),{'zlib':{'level':0x9}});_0x403ac9['on'](_0x81e3('0x54'),function(_0x486abb){if(_0x486abb[_0x81e3('0x55')]===_0x81e3('0x56')){logger['error'](_0x486abb);}else{throw new db[(_0x81e3('0x57'))]['Error'](_0x81e3('0x58'));}});_0x403ac9['on'](_0x81e3('0x2d'),function(_0x497b46){throw new db[(_0x81e3('0x57'))]['Error'](_0x81e3('0x58'));});_0x403ac9[_0x81e3('0x59')](_0x3c8b63);_0x403ac9[_0x81e3('0x5a')](_0x81e3('0x5b'),{'cwd':path[_0x81e3('0x4f')](config['root'],'server/files/plugins',path[_0x81e3('0x5c')](_0x1eef2c[_0x81e3('0x4e')])),'ignore':[path[_0x81e3('0x4f')](path[_0x81e3('0x51')](_0x1eef2c[_0x81e3('0x4e')]),'node_modules/**/*'),path[_0x81e3('0x4f')](path[_0x81e3('0x51')](_0x1eef2c[_0x81e3('0x4e')]),_0x81e3('0x5d'))],'nodir':!![]})[_0x81e3('0x5e')]();_0x3c8b63['on'](_0x81e3('0x5f'),function(){if(!fs['existsSync'](_0x1ec5f7)){throw new db['Sequelize']['Error'](_0x81e3('0x60'));}return _0x4daa08['download'](_0x1ec5f7,util['format'](_0x81e3('0x61'),path[_0x81e3('0x51')](_0x1eef2c[_0x81e3('0x4e')])),function(_0x172836){if(_0x172836){throw new db['Sequelize'][(_0x81e3('0x62'))](_0x81e3('0x63'));}fs['unlinkSync'](_0x1ec5f7);logger[_0x81e3('0x64')](_0x81e3('0x65'));logger[_0x81e3('0x64')]('Temporary\x20file\x20removed');});});}return null;})[_0x81e3('0x48')](handleError(_0x4daa08,null));};exports[_0x81e3('0x66')]=function(_0x2eefbe,_0x358a67,_0x21fbd5){var _0x1e6738=path[_0x81e3('0x51')](_0x2eefbe[_0x81e3('0x67')][_0x81e3('0x68')],path[_0x81e3('0x69')](_0x2eefbe[_0x81e3('0x67')][_0x81e3('0x68')]));var _0x52a269=path[_0x81e3('0x4f')](config['root'],_0x81e3('0x50'),_0x2eefbe[_0x81e3('0x67')][_0x81e3('0x68')]);var _0x5aed2e=path[_0x81e3('0x4f')](config[_0x81e3('0x6a')],_0x81e3('0x50'),_0x1e6738);logger[_0x81e3('0x64')](_0x81e3('0x6b'),_0x52a269);logger['info'](_0x81e3('0x6c'),_0x5aed2e);try{fs[_0x81e3('0x6d')](_0x52a269,parseInt(_0x81e3('0x6e'),0x8));extract(_0x52a269,{'dir':_0x5aed2e},function(_0x5d2dd5){if(_0x5d2dd5){logger[_0x81e3('0x2d')](_0x5d2dd5);handleError(_0x5d2dd5,!![]);};var _0x23a6ac=fs[_0x81e3('0x6f')](_0x5aed2e);if(_0x23a6ac[_0x81e3('0x4b')]>0x1){removeReferences(_0x52a269,_0x5aed2e);logger['error'](_0x81e3('0x70'));return _0x21fbd5(new Error(_0x81e3('0x70')));}var _0x5976a3=fs[_0x81e3('0x71')](path[_0x81e3('0x4f')](_0x5aed2e,_0x23a6ac[0x0]));if(_0x5976a3[_0x81e3('0x72')]()){removeReferences(_0x52a269,_0x5aed2e);logger[_0x81e3('0x2d')]('Invalid\x20plugin\x20structure');return _0x21fbd5(new Error(_0x81e3('0x70')));}if(_0x5976a3[_0x81e3('0x73')]()){var _0x5c0321=fs[_0x81e3('0x6f')](path['join'](_0x5aed2e,_0x23a6ac[0x0]));if(_0x5c0321[_0x81e3('0x4b')]===0x0){removeReferences(_0x52a269,_0x5aed2e);logger[_0x81e3('0x2d')](_0x81e3('0x70'));return _0x21fbd5(new Error(_0x81e3('0x70')));}var _0x409668=_0x5c0321[_0x81e3('0x74')](function(_0x2abf7d){return _0x2abf7d===_0x81e3('0x75');});if(!_0x409668){return _0x21fbd5(new Error(_0x81e3('0x76')));}var _0x2dccb0=fs['readFileSync'](path[_0x81e3('0x4f')](_0x5aed2e,_0x23a6ac[0x0],_0x81e3('0x75')));var _0x1a8072=JSON[_0x81e3('0x77')](_0x2dccb0);if('undefined'==typeof _0x1a8072['name']){return _0x21fbd5(new Error(_0x81e3('0x78')));}if(_0x81e3('0x1f')==typeof _0x1a8072[_0x81e3('0x33')]){return _0x21fbd5(new Error(_0x81e3('0x79')));}if(_0x81e3('0x1f')==typeof _0x1a8072[_0x81e3('0x7a')]){return _0x21fbd5(new Error(_0x81e3('0x7b')));}if(_0x81e3('0x1f')==typeof _0x1a8072[_0x81e3('0x7c')]){return _0x21fbd5(new Error(_0x81e3('0x7d')));}if(_0x1a8072[_0x81e3('0x33')]===_0x81e3('0x7e')){if('undefined'==typeof _0x1a8072[_0x81e3('0x7c')]['views']){return _0x21fbd5(new Error('Invalid\x20manifest:\x20views\x20missing'));}if(_0x81e3('0x1f')==typeof _0x1a8072['parameters']['views'][_0x81e3('0x7f')]&&_0x81e3('0x1f')==typeof _0x1a8072['parameters'][_0x81e3('0x80')]['agent']){return _0x21fbd5(new Error(_0x81e3('0x81')));}}else if(_0x1a8072[_0x81e3('0x33')]===_0x81e3('0x82')){if('undefined'==typeof _0x1a8072[_0x81e3('0x7c')][_0x81e3('0x83')]){return _0x21fbd5(new Error(_0x81e3('0x84')));}if(_0x81e3('0x1f')==typeof _0x1a8072[_0x81e3('0x7c')][_0x81e3('0x85')]){return _0x21fbd5(new Error(_0x81e3('0x86')));}}else{return _0x21fbd5(new Error(_0x81e3('0x87')));}var _0x2b86c0=_0x1a8072[_0x81e3('0x2e')];var _0xcd366e=_0x1a8072[_0x81e3('0x88')];var _0x21dbf9=_0x1a8072[_0x81e3('0x33')];var _0x411ed5=_0x1a8072[_0x81e3('0x89')]?_0x1a8072[_0x81e3('0x89')]:_0x81e3('0x8a');var _0x1bad4f=_0x1a8072['icon']?_0x1a8072[_0x81e3('0x8b')]:_0x81e3('0x8c');var _0x2cf19c='';var _0x516128='';var _0x398248='';var _0x3f295e='';var _0x342272=_0x1a8072['version'];if(_0x21dbf9===_0x81e3('0x7e')){if(_0x81e3('0x1f')!=typeof _0x1a8072['parameters'][_0x81e3('0x80')][_0x81e3('0x7f')]){var _0x422ea0=_0x1a8072[_0x81e3('0x7c')][_0x81e3('0x80')]['admin'];if(!/^(f|ht)tps?:\/\//i[_0x81e3('0x8d')](_0x422ea0)){_0x2cf19c=path[_0x81e3('0x4f')]('plugins',_0x1e6738,_0x23a6ac[0x0],_0x422ea0);}else{_0x2cf19c=_0x422ea0;}}else{logger[_0x81e3('0x64')]('Warning:\x20admin\x20view\x20not\x20specified');}if(_0x81e3('0x1f')!=typeof _0x1a8072[_0x81e3('0x7c')]['views'][_0x81e3('0x8e')]){var _0x4217cf=_0x1a8072[_0x81e3('0x7c')][_0x81e3('0x80')][_0x81e3('0x8e')];if(!/^(f|ht)tps?:\/\//i[_0x81e3('0x8d')](_0x4217cf)){_0x516128=path[_0x81e3('0x4f')]('plugins',_0x1e6738,_0x23a6ac[0x0],_0x4217cf);}else{_0x516128=_0x4217cf;}}else{logger[_0x81e3('0x64')](_0x81e3('0x8f'));}}else if(_0x21dbf9==='script'){_0x398248=_0x1a8072[_0x81e3('0x7c')][_0x81e3('0x83')];_0x3f295e=_0x1a8072[_0x81e3('0x7c')][_0x81e3('0x85')];if('undefined'!=typeof _0x1a8072[_0x81e3('0x7c')]['views']){if(_0x81e3('0x1f')!=typeof _0x1a8072[_0x81e3('0x7c')]['views'][_0x81e3('0x7f')]){var _0x422ea0=_0x1a8072[_0x81e3('0x7c')]['views'][_0x81e3('0x7f')];if(!/^(f|ht)tps?:\/\//i['test'](_0x422ea0)){_0x2cf19c=path['join'](_0x81e3('0x90'),_0x1e6738,_0x23a6ac[0x0],_0x422ea0);}else{_0x2cf19c=_0x422ea0;}}if('undefined'!=typeof _0x1a8072[_0x81e3('0x7c')][_0x81e3('0x80')]['agent']){var _0x4217cf=_0x1a8072['parameters'][_0x81e3('0x80')][_0x81e3('0x8e')];if(!/^(f|ht)tps?:\/\//i[_0x81e3('0x8d')](_0x4217cf)){_0x516128=path['join'](_0x81e3('0x90'),_0x1e6738,_0x23a6ac[0x0],_0x4217cf);}else{_0x516128=_0x4217cf;}}}}var _0x13c83c={'name':_0x2b86c0,'description':_0xcd366e,'path':path[_0x81e3('0x4f')](_0x1e6738,_0x23a6ac[0x0]),'type':_0x21dbf9,'sidebar':_0x411ed5,'icon':_0x1bad4f,'adminUrl':_0x2cf19c,'agentUrl':_0x516128,'scriptName':_0x398248,'scriptPath':_0x3f295e,'version':_0x342272};removeReferences(_0x52a269,null);return db[_0x81e3('0x31')][_0x81e3('0x91')](_0x13c83c)[_0x81e3('0x27')](function(_0x361006){var _0x3eb1d8={'role':_0x2eefbe[_0x81e3('0x92')][_0x81e3('0x93')],'userProfileId':_0x2eefbe[_0x81e3('0x92')][_0x81e3('0x94')]};if(!_0x3eb1d8)throw new Error(_0x81e3('0x95'));if(_0x3eb1d8[_0x81e3('0x93')]===_0x81e3('0x96')){var _0x5d9bf1=_0x361006['get']({'plain':!![]});return db[_0x81e3('0x97')][_0x81e3('0x4c')]({'where':{'name':_0x81e3('0x2a'),'userProfileId':_0x3eb1d8[_0x81e3('0x94')]},'raw':!![]})['then'](function(_0xe5ef2){if(_0xe5ef2&&_0xe5ef2[_0x81e3('0x98')]===0x0){return db['UserProfileResource'][_0x81e3('0x91')]({'name':_0x5d9bf1['name'],'resourceId':_0x5d9bf1['id'],'type':_0xe5ef2[_0x81e3('0x2e')],'sectionId':_0xe5ef2['id']},{})[_0x81e3('0x27')](function(){return _0x361006;});}else{return _0x361006;}})[_0x81e3('0x48')](function(_0x474ee2){logger[_0x81e3('0x2d')](_0x81e3('0x99'),_0x474ee2);throw _0x474ee2;});}return _0x361006;})['then'](respondWithResult(_0x358a67,null))['catch'](handleError(_0x358a67,null));}});}catch(_0x38be2d){_0x358a67['status'](0x1f4)['send'](_0x38be2d);}};function removeReferences(_0x807930,_0x5038fd){try{if(_0x807930){fs[_0x81e3('0x9a')](_0x807930);logger[_0x81e3('0x64')]('Zip\x20archive\x20removed');}if(_0x5038fd){rimraf(_0x5038fd,function(){});logger[_0x81e3('0x64')](_0x81e3('0x9b'));}}catch(_0xc4234b){logger[_0x81e3('0x2d')](_0xc4234b);}}exports['update']=function(_0xfb5bee,_0x35ac9d,_0x44a8f0){return db[_0x81e3('0x31')]['find']({'where':{'id':_0xfb5bee[_0x81e3('0x49')]['id']}})['then'](handleEntityNotFound(_0x35ac9d,null))[_0x81e3('0x27')](saveUpdates(_0xfb5bee['body'],null))[_0x81e3('0x27')](respondWithResult(_0x35ac9d,null))['catch'](handleError(_0x35ac9d,null));};exports['delete']=function(_0x2f1600,_0x5a00f3,_0xd4964b){return db[_0x81e3('0x31')]['find']({'where':{'id':_0x2f1600[_0x81e3('0x49')]['id']}})[_0x81e3('0x27')](function(_0x260205){if(_0x260205){return _0x260205[_0x81e3('0x28')]();}})[_0x81e3('0x27')](function(_0x33685a){rimraf(path[_0x81e3('0x4f')](config[_0x81e3('0x6a')],_0x81e3('0x50'),path[_0x81e3('0x5c')](_0x33685a[_0x81e3('0x4e')])),function(){});return _0x33685a;})['then'](handleEntityNotFound(_0x5a00f3,null))[_0x81e3('0x27')](respondWithStatusCode(_0x5a00f3,null))[_0x81e3('0x48')](handleError(_0x5a00f3,null));};exports[_0x81e3('0x9c')]=function(_0x348588,_0x51d57a,_0x443a14){return BPromise[_0x81e3('0x9d')]()[_0x81e3('0x27')](function(){if(!_0x348588[_0x81e3('0x37')]['path']){throw new Error(_0x81e3('0x9e'));}if(!_0x348588[_0x81e3('0x37')][_0x81e3('0x9f')]){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x1b9a87=_0x348588[_0x81e3('0x37')][_0x81e3('0xa0')]?_0x348588[_0x81e3('0x37')]['hostname']+':'+_0x348588[_0x81e3('0x37')]['port']:'http://localhost:'+_0x348588[_0x81e3('0x37')][_0x81e3('0x9f')];var _0x4c7c96=_0x348588[_0x81e3('0x37')][_0x81e3('0x24')]?_0x348588['query']['json']:!![];var _0x8bd287=_0x348588[_0x81e3('0x37')][_0x81e3('0xa1')]?_0x348588[_0x81e3('0x37')][_0x81e3('0xa1')]:null;var _0x3bc2b7={'method':_0x348588[_0x81e3('0xa2')],'uri':util['format'](_0x81e3('0xa3'),_0x1b9a87,_0x348588[_0x81e3('0x37')][_0x81e3('0x4e')]),'json':_0x4c7c96,'resolveWithFullResponse':!![],'encoding':_0x8bd287,'qs':_0x348588[_0x81e3('0x37')]};if(_0x348588[_0x81e3('0xa4')]){_0x3bc2b7[_0x81e3('0xa4')]=_0x348588['headers'];if(_0x3bc2b7['headers']['content-length']){delete _0x3bc2b7[_0x81e3('0xa4')][_0x81e3('0xa5')];}}if(_0x3bc2b7[_0x81e3('0xa4')][_0x81e3('0xa6')]){delete _0x3bc2b7[_0x81e3('0xa4')]['content-type'];}return rp(_0x3bc2b7);})[_0x81e3('0x27')](function(_0x4d967d){if(_0x4d967d){_0x51d57a[_0x81e3('0x22')](_0x4d967d[_0x81e3('0xa4')]);logger[_0x81e3('0x64')](_0x4d967d['body']);if(_[_0x81e3('0xa7')](_0x348588[_0x81e3('0x37')][_0x81e3('0x4e')],_0x81e3('0x4d'))&&_0x4d967d[_0x81e3('0xa8')]==0x1f4){return _0x51d57a[_0x81e3('0x1c')](_0x4d967d['statusCode']);}else{return _0x51d57a['status'](_0x4d967d[_0x81e3('0xa8')])['send'](_0x4d967d['body']);}}else{return _0x51d57a[_0x81e3('0x1c')](0xc8);}})[_0x81e3('0x48')](handleError(_0x51d57a,null));};exports[_0x81e3('0xa9')]=function(_0x2f023e,_0x1916a8,_0x441e3a){return BPromise[_0x81e3('0x9d')]()[_0x81e3('0x27')](function(){if(!_0x2f023e['query'][_0x81e3('0x4e')]){throw new Error('\x27PATH\x27\x20parameter\x20not\x20specified');}if(!_0x2f023e[_0x81e3('0x37')]['port']){throw new Error(_0x81e3('0xaa'));}var _0x3076fc=_0x2f023e[_0x81e3('0x37')]['hostname']?_0x2f023e[_0x81e3('0x37')][_0x81e3('0xa0')]+':'+_0x2f023e['query'][_0x81e3('0x9f')]:_0x81e3('0xab')+_0x2f023e[_0x81e3('0x37')][_0x81e3('0x9f')];var _0x3fa86e=_0x2f023e[_0x81e3('0x37')][_0x81e3('0x24')]?_0x2f023e[_0x81e3('0x37')][_0x81e3('0x24')]:!![];var _0x2131d0=_0x2f023e['query']['encoding']?_0x2f023e[_0x81e3('0x37')]['encoding']:null;var _0x1649e3={'method':_0x2f023e[_0x81e3('0xa2')],'uri':util['format'](_0x81e3('0xa3'),_0x3076fc,_0x2f023e[_0x81e3('0x37')][_0x81e3('0x4e')]),'json':_0x3fa86e,'resolveWithFullResponse':!![],'encoding':_0x2131d0,'body':_0x2f023e[_0x81e3('0x92')]};if(_0x2f023e[_0x81e3('0xa4')]){_0x1649e3[_0x81e3('0xa4')]=_0x2f023e[_0x81e3('0xa4')];if(_0x1649e3[_0x81e3('0xa4')][_0x81e3('0xa5')]){delete _0x1649e3[_0x81e3('0xa4')][_0x81e3('0xa5')];}}if(_0x1649e3[_0x81e3('0xa4')]['content-type']){delete _0x1649e3['headers'][_0x81e3('0xa6')];}return rp(_0x1649e3);})['then'](function(_0x4de9e3){if(_0x4de9e3){_0x1916a8[_0x81e3('0x22')](_0x4de9e3[_0x81e3('0xa4')]);logger[_0x81e3('0x64')](_0x4de9e3['body']);return _0x1916a8[_0x81e3('0x1d')](_0x4de9e3[_0x81e3('0xa8')])[_0x81e3('0x2f')](_0x4de9e3['body']);}else{return _0x1916a8[_0x81e3('0x1c')](0xc8);}})[_0x81e3('0x48')](handleError(_0x1916a8,null));};
\ No newline at end of file
index daa2ba7..3015f25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f02=['save','update','remove','emit','hasOwnProperty','hook','events'];(function(_0x4b9a46,_0x4812bb){var _0x3a7334=function(_0x3a3336){while(--_0x3a3336){_0x4b9a46['push'](_0x4b9a46['shift']());}};_0x3a7334(++_0x4812bb);}(_0x9f02,0x68));var _0x29f0=function(_0x385083,_0x1ef595){_0x385083=_0x385083-0x0;var _0x396362=_0x9f02[_0x385083];return _0x396362;};'use strict';var EventEmitter=require(_0x29f0('0x0'));var Plugin=require('../../mysqldb')['db']['Plugin'];var PluginEvents=new EventEmitter();PluginEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x29f0('0x1'),'afterUpdate':_0x29f0('0x2'),'afterDestroy':_0x29f0('0x3')};function emitEvent(_0x24792b){return function(_0x1a49c1,_0x47e569,_0x204fc4){PluginEvents['emit'](_0x24792b+':'+_0x1a49c1['id'],_0x1a49c1);PluginEvents[_0x29f0('0x4')](_0x24792b,_0x1a49c1);_0x204fc4(null);};}for(var e in events){if(events[_0x29f0('0x5')](e)){var event=events[e];Plugin[_0x29f0('0x6')](e,emitEvent(event));}}module['exports']=PluginEvents;
\ No newline at end of file
+var _0x4279=['update','remove','emit','hook','exports','../../mysqldb','Plugin','save'];(function(_0x12d951,_0x249808){var _0x44de17=function(_0x182fd9){while(--_0x182fd9){_0x12d951['push'](_0x12d951['shift']());}};_0x44de17(++_0x249808);}(_0x4279,0x8d));var _0x9427=function(_0x4899bc,_0x57f891){_0x4899bc=_0x4899bc-0x0;var _0x22d838=_0x4279[_0x4899bc];return _0x22d838;};'use strict';var EventEmitter=require('events');var Plugin=require(_0x9427('0x0'))['db'][_0x9427('0x1')];var PluginEvents=new EventEmitter();PluginEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x9427('0x2'),'afterUpdate':_0x9427('0x3'),'afterDestroy':_0x9427('0x4')};function emitEvent(_0x32d94e){return function(_0x54cdfb,_0x426911,_0x57f12b){PluginEvents[_0x9427('0x5')](_0x32d94e+':'+_0x54cdfb['id'],_0x54cdfb);PluginEvents[_0x9427('0x5')](_0x32d94e,_0x54cdfb);_0x57f12b(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Plugin[_0x9427('0x6')](e,emitEvent(event));}}module[_0x9427('0x7')]=PluginEvents;
\ No newline at end of file
index f276257..62b65c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bf7=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./plugin.attributes','exports','define','Plugin','plugins','util'];(function(_0x5302fb,_0x1a2db3){var _0x43e6a4=function(_0x324ae6){while(--_0x324ae6){_0x5302fb['push'](_0x5302fb['shift']());}};_0x43e6a4(++_0x1a2db3);}(_0x9bf7,0x11d));var _0x79bf=function(_0x2249d6,_0x451902){_0x2249d6=_0x2249d6-0x0;var _0x4e7d5b=_0x9bf7[_0x2249d6];return _0x4e7d5b;};'use strict';var _=require('lodash');var util=require(_0x79bf('0x0'));var logger=require(_0x79bf('0x1'))(_0x79bf('0x2'));var moment=require(_0x79bf('0x3'));var BPromise=require('bluebird');var rp=require(_0x79bf('0x4'));var fs=require('fs');var path=require(_0x79bf('0x5'));var rimraf=require(_0x79bf('0x6'));var config=require(_0x79bf('0x7'));var attributes=require(_0x79bf('0x8'));module[_0x79bf('0x9')]=function(_0x134163,_0xcdb78){return _0x134163[_0x79bf('0xa')](_0x79bf('0xb'),attributes,{'tableName':_0x79bf('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbb6b=['rimraf','../../config/environment','./plugin.attributes','Plugin','util','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x4b1665,_0xb0c095){var _0x5850c0=function(_0x44b7a4){while(--_0x44b7a4){_0x4b1665['push'](_0x4b1665['shift']());}};_0x5850c0(++_0xb0c095);}(_0xbb6b,0xea));var _0xbbb6=function(_0x5d018e,_0x4bb5dd){_0x5d018e=_0x5d018e-0x0;var _0x238ed0=_0xbb6b[_0x5d018e];return _0x238ed0;};'use strict';var _=require('lodash');var util=require(_0xbbb6('0x0'));var logger=require(_0xbbb6('0x1'))('api');var moment=require(_0xbbb6('0x2'));var BPromise=require(_0xbbb6('0x3'));var rp=require(_0xbbb6('0x4'));var fs=require('fs');var path=require(_0xbbb6('0x5'));var rimraf=require(_0xbbb6('0x6'));var config=require(_0xbbb6('0x7'));var attributes=require(_0xbbb6('0x8'));module['exports']=function(_0x45d31e,_0x1b7052){return _0x45d31e['define'](_0xbbb6('0x9'),attributes,{'tableName':'plugins','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3e2109b..8e5b124 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2dd=['then','debug','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','client','http','redis','localhost','socket.io-emitter','./plugin.socket','Plugin,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreatePlugin','Plugin','create','body','options'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xa2dd,0xea));var _0xda2d=function(_0x3ac781,_0x325069){_0x3ac781=_0x3ac781-0x0;var _0x2f76d3=_0xa2dd[_0x3ac781];return _0x2f76d3;};'use strict';var _=require(_0xda2d('0x0'));var util=require('util');var moment=require(_0xda2d('0x1'));var BPromise=require(_0xda2d('0x2'));var rs=require(_0xda2d('0x3'));var fs=require('fs');var Redis=require(_0xda2d('0x4'));var db=require(_0xda2d('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xda2d('0x6'));var config=require(_0xda2d('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xda2d('0x8')][_0xda2d('0x9')]({'port':0x232a});config[_0xda2d('0xa')]=_['defaults'](config[_0xda2d('0xa')],{'host':_0xda2d('0xb'),'port':0x18eb});var socket=require(_0xda2d('0xc'))(new Redis(config['redis']));require(_0xda2d('0xd'))['register'](socket);function respondWithRpcPromise(_0xd6ca61,_0x1d29c4,_0x117951){return new BPromise(function(_0x28b966,_0x2c37c9){return client['request'](_0xd6ca61,_0x117951)['then'](function(_0x33bef0){logger['info'](_0xda2d('0xe'),_0x1d29c4,'request\x20sent');logger['debug']('Plugin,\x20%s,\x20%s,\x20%s',_0x1d29c4,_0xda2d('0xf'),JSON[_0xda2d('0x10')](_0x33bef0));if(_0x33bef0[_0xda2d('0x11')]){if(_0x33bef0['error'][_0xda2d('0x12')]===0x1f4){logger['error']('Plugin,\x20%s,\x20%s',_0x1d29c4,_0x33bef0[_0xda2d('0x11')]['message']);return _0x2c37c9(_0x33bef0[_0xda2d('0x11')][_0xda2d('0x13')]);}logger[_0xda2d('0x11')](_0xda2d('0xe'),_0x1d29c4,_0x33bef0[_0xda2d('0x11')]['message']);return _0x28b966(_0x33bef0[_0xda2d('0x11')][_0xda2d('0x13')]);}else{logger['info'](_0xda2d('0xe'),_0x1d29c4,_0xda2d('0xf'));_0x28b966(_0x33bef0[_0xda2d('0x14')][_0xda2d('0x13')]);}})[_0xda2d('0x15')](function(_0x457cdc){logger['error'](_0xda2d('0xe'),_0x1d29c4,_0x457cdc);_0x2c37c9(_0x457cdc);});});}exports[_0xda2d('0x16')]=function(_0x42c271){var _0x4ac57d=this;return new Promise(function(_0x4b6a11,_0x14b932){return db[_0xda2d('0x17')][_0xda2d('0x18')](_0x42c271[_0xda2d('0x19')],{'raw':_0x42c271[_0xda2d('0x1a')]?_0x42c271[_0xda2d('0x1a')]['raw']===undefined?!![]:![]:!![]})[_0xda2d('0x1b')](function(_0x58f7db){logger['info']('CreatePlugin',_0x42c271);logger[_0xda2d('0x1c')]('CreatePlugin',_0x42c271,JSON[_0xda2d('0x10')](_0x58f7db));_0x4b6a11(_0x58f7db);})['catch'](function(_0x4933b4){logger[_0xda2d('0x11')](_0xda2d('0x16'),_0x4933b4['message'],_0x42c271);_0x14b932(_0x4ac57d[_0xda2d('0x11')](0x1f4,_0x4933b4[_0xda2d('0x13')]));});});};
\ No newline at end of file
+var _0xf538=['CreatePlugin','create','body','options','raw','then','debug','stringify','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','socket.io-emitter','./plugin.socket','register','request','info','Plugin,\x20%s,\x20%s','request\x20sent','Plugin,\x20%s,\x20%s,\x20%s','error','code','message','catch'];(function(_0x262b40,_0x1d0b38){var _0x477dd8=function(_0x4065af){while(--_0x4065af){_0x262b40['push'](_0x262b40['shift']());}};_0x477dd8(++_0x1d0b38);}(_0xf538,0x65));var _0x8f53=function(_0x4375d9,_0x5cee8a){_0x4375d9=_0x4375d9-0x0;var _0x1fd3ff=_0xf538[_0x4375d9];return _0x1fd3ff;};'use strict';var _=require('lodash');var util=require(_0x8f53('0x0'));var moment=require(_0x8f53('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8f53('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x8f53('0x3'));var logger=require(_0x8f53('0x4'))(_0x8f53('0x5'));var config=require(_0x8f53('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x8f53('0x7')][_0x8f53('0x8')]({'port':0x232a});config[_0x8f53('0x9')]=_[_0x8f53('0xa')](config[_0x8f53('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x8f53('0xb'))(new Redis(config['redis']));require(_0x8f53('0xc'))[_0x8f53('0xd')](socket);function respondWithRpcPromise(_0x87eb1d,_0x259602,_0x238be7){return new BPromise(function(_0x676c2d,_0x3e81a5){return client[_0x8f53('0xe')](_0x87eb1d,_0x238be7)['then'](function(_0x199b4f){logger[_0x8f53('0xf')](_0x8f53('0x10'),_0x259602,_0x8f53('0x11'));logger['debug'](_0x8f53('0x12'),_0x259602,_0x8f53('0x11'),JSON['stringify'](_0x199b4f));if(_0x199b4f[_0x8f53('0x13')]){if(_0x199b4f[_0x8f53('0x13')][_0x8f53('0x14')]===0x1f4){logger['error'](_0x8f53('0x10'),_0x259602,_0x199b4f[_0x8f53('0x13')][_0x8f53('0x15')]);return _0x3e81a5(_0x199b4f[_0x8f53('0x13')][_0x8f53('0x15')]);}logger['error']('Plugin,\x20%s,\x20%s',_0x259602,_0x199b4f[_0x8f53('0x13')][_0x8f53('0x15')]);return _0x676c2d(_0x199b4f[_0x8f53('0x13')]['message']);}else{logger[_0x8f53('0xf')](_0x8f53('0x10'),_0x259602,_0x8f53('0x11'));_0x676c2d(_0x199b4f['result'][_0x8f53('0x15')]);}})[_0x8f53('0x16')](function(_0x1959e5){logger[_0x8f53('0x13')](_0x8f53('0x10'),_0x259602,_0x1959e5);_0x3e81a5(_0x1959e5);});});}exports[_0x8f53('0x17')]=function(_0x47b4a1){var _0x31a267=this;return new Promise(function(_0x10f8d8,_0x404e45){return db['Plugin'][_0x8f53('0x18')](_0x47b4a1[_0x8f53('0x19')],{'raw':_0x47b4a1[_0x8f53('0x1a')]?_0x47b4a1[_0x8f53('0x1a')][_0x8f53('0x1b')]===undefined?!![]:![]:!![]})[_0x8f53('0x1c')](function(_0x158dc4){logger[_0x8f53('0xf')]('CreatePlugin',_0x47b4a1);logger[_0x8f53('0x1d')](_0x8f53('0x17'),_0x47b4a1,JSON[_0x8f53('0x1e')](_0x158dc4));_0x10f8d8(_0x158dc4);})[_0x8f53('0x16')](function(_0x141360){logger[_0x8f53('0x13')](_0x8f53('0x17'),_0x141360[_0x8f53('0x15')],_0x47b4a1);_0x404e45(_0x31a267['error'](0x1f4,_0x141360[_0x8f53('0x15')]));});});};
\ No newline at end of file
index aa5acef..d10d571 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbda2=['length','save','remove','update','emit'];(function(_0x581af1,_0x4f02c5){var _0x54c22e=function(_0x5a7a5a){while(--_0x5a7a5a){_0x581af1['push'](_0x581af1['shift']());}};_0x54c22e(++_0x4f02c5);}(_0xbda2,0x169));var _0x2bda=function(_0x33e9b6,_0x176e0d){_0x33e9b6=_0x33e9b6-0x0;var _0xc561ed=_0xbda2[_0x33e9b6];return _0xc561ed;};'use strict';var PluginEvents=require('./plugin.events');var events=[_0x2bda('0x0'),_0x2bda('0x1'),_0x2bda('0x2')];function createListener(_0x390262,_0x14b004){return function(_0x4283ec){_0x14b004[_0x2bda('0x3')](_0x390262,_0x4283ec);};}function removeListener(_0x2fca97,_0x5889b4){return function(){PluginEvents['removeListener'](_0x2fca97,_0x5889b4);};}exports['register']=function(_0x4864ba){for(var _0x6ab9ab=0x0,_0x3a6a59=events[_0x2bda('0x4')];_0x6ab9ab<_0x3a6a59;_0x6ab9ab++){var _0x3db8dc=events[_0x6ab9ab];var _0x1cb5c8=createListener('plugin:'+_0x3db8dc,_0x4864ba);PluginEvents['on'](_0x3db8dc,_0x1cb5c8);}};
\ No newline at end of file
+var _0x45ee=['remove','update','emit','removeListener','register','plugin:'];(function(_0x1d30fc,_0x3ab679){var _0x3c27e3=function(_0x50c609){while(--_0x50c609){_0x1d30fc['push'](_0x1d30fc['shift']());}};_0x3c27e3(++_0x3ab679);}(_0x45ee,0x168));var _0xe45e=function(_0xd1c39b,_0x16f0c6){_0xd1c39b=_0xd1c39b-0x0;var _0x58f5bc=_0x45ee[_0xd1c39b];return _0x58f5bc;};'use strict';var PluginEvents=require('./plugin.events');var events=['save',_0xe45e('0x0'),_0xe45e('0x1')];function createListener(_0x1484ae,_0x32ebc8){return function(_0x45ea25){_0x32ebc8[_0xe45e('0x2')](_0x1484ae,_0x45ea25);};}function removeListener(_0x2e7f0f,_0x6ade18){return function(){PluginEvents[_0xe45e('0x3')](_0x2e7f0f,_0x6ade18);};}exports[_0xe45e('0x4')]=function(_0x19133b){for(var _0x15d2b4=0x0,_0x57d867=events['length'];_0x15d2b4<_0x57d867;_0x15d2b4++){var _0x48786d=events[_0x15d2b4];var _0x535ada=createListener(_0xe45e('0x5')+_0x48786d,_0x19133b);PluginEvents['on'](_0x48786d,_0x535ada);}};
\ No newline at end of file
index 87dc42b..ad081d6 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(_0x5d790e,_0x1fce17){var _0x49fbac=function(_0x27deb3){while(--_0x27deb3){_0x5d790e['push'](_0x5d790e['shift']());}};_0x49fbac(++_0x1fce17);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b828b,_0x344400){_0x1b828b=_0x1b828b-0x0;var _0x98da1a=_0xa9e0[_0x1b828b];return _0x98da1a;};'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(_0x23e136,_0x4eca99){var _0xe365af=function(_0x23efe0){while(--_0x23efe0){_0x23e136['push'](_0x23e136['shift']());}};_0xe365af(++_0x4eca99);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c2a69,_0x4c8b41){_0x3c2a69=_0x3c2a69-0x0;var _0x596bc8=_0xa9e0[_0x3c2a69];return _0x596bc8;};'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 3fbe953..bb926d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44a3=['hasOwnProperty','params','Unknown\x20status','dump','Unknown\x20id','lodash','../../config/pm2','../../config/logger','api','path','child_process','exec','bluebird','sendStatus','error','stack','name','status','send','info','index','list','then','reject','express','length','catch','show','describe','create','body','script','join','../../files/plugins','cwd','chdir','dirname','start','Missing\x20name\x20and/or\x20path','update','restart','stop'];(function(_0x5a2bdc,_0x2e7c7e){var _0x3ea58e=function(_0x46bc2a){while(--_0x46bc2a){_0x5a2bdc['push'](_0x5a2bdc['shift']());}};_0x3ea58e(++_0x2e7c7e);}(_0x44a3,0x1a9));var _0x344a=function(_0x51a85c,_0x2660a3){_0x51a85c=_0x51a85c-0x0;var _0x55001f=_0x44a3[_0x51a85c];return _0x55001f;};'use strict';var _=require(_0x344a('0x0'));var pm2=require(_0x344a('0x1'));var logger=require(_0x344a('0x2'))(_0x344a('0x3'));var path=require(_0x344a('0x4'));var exec=require(_0x344a('0x5'))[_0x344a('0x6')];var BPromise=require(_0x344a('0x7'));function handleEntityNotFound(_0x528a13,_0x23004c){return function(_0x1bc716){if(!_0x1bc716){_0x528a13[_0x344a('0x8')](0x194);;}return _0x1bc716;};}function respondWithResult(_0x28b51e,_0x39984a){_0x39984a=_0x39984a||0xc8;return function(_0x504bd1){if(_0x504bd1){return _0x28b51e['status'](_0x39984a)['json'](_0x504bd1);}return null;};}function handleError(_0x484661,_0x475dab){_0x475dab=_0x475dab||0x1f4;return function(_0x2f9486){logger[_0x344a('0x9')](_0x2f9486[_0x344a('0xa')]);if(_0x2f9486[_0x344a('0xb')]){delete _0x2f9486['name'];}_0x484661[_0x344a('0xc')](_0x475dab)[_0x344a('0xd')](_0x2f9486);};}function execChildProcess(){return new BPromise(function(_0x559406,_0x2734ec){exec('npm\x20install',function(_0x397476,_0x5e6c98,_0xd53a4f){logger[_0x344a('0xe')](_0x5e6c98);logger['info'](_0xd53a4f);if(_0x397476){logger['error'](_0x397476);return _0x2734ec(_0x397476);}return _0x559406(_0x5e6c98);});});}exports[_0x344a('0xf')]=function(_0x2ad7eb,_0x3a974e){return pm2[_0x344a('0x10')]()[_0x344a('0x11')](function(_0x133ad4){if(_0x133ad4){var _0x4ee562=_[_0x344a('0x12')](_0x133ad4,function(_0x2360e9){return _0x2360e9[_0x344a('0xb')]===_0x344a('0x13')||_0x2360e9['name']==='motion2';});return{'rows':_0x4ee562,'count':_0x4ee562[_0x344a('0x14')]};}return null;})[_0x344a('0x11')](respondWithResult(_0x3a974e,null))[_0x344a('0x15')](handleError(_0x3a974e,null));};exports[_0x344a('0x16')]=function(_0x48b3ab,_0x397de6){return pm2[_0x344a('0x17')](_0x48b3ab['params']['id'])[_0x344a('0x11')](respondWithResult(_0x397de6,null))[_0x344a('0x11')](handleEntityNotFound(_0x397de6,null))[_0x344a('0x15')](handleError(_0x397de6,null));};exports[_0x344a('0x18')]=function(_0x13b382,_0x43fa0f){if(_0x13b382[_0x344a('0x19')][_0x344a('0xb')]&&_0x13b382[_0x344a('0x19')][_0x344a('0x1a')]){var _0x4b3552=path[_0x344a('0x1b')](__dirname,_0x344a('0x1c'),_0x13b382[_0x344a('0x19')][_0x344a('0x1a')]);var _0x240be3=process[_0x344a('0x1d')]();process[_0x344a('0x1e')](path[_0x344a('0x1f')](_0x4b3552));return execChildProcess()[_0x344a('0x11')](function(_0x27f527){process[_0x344a('0x1e')](_0x240be3);return pm2[_0x344a('0x20')]({'name':_0x13b382[_0x344a('0x19')][_0x344a('0xb')],'script':_0x4b3552});})['then'](function(_0x6ccfba){pm2['dump']();return _0x6ccfba[0x0];})[_0x344a('0x11')](respondWithResult(_0x43fa0f,0xc9))['catch'](handleError(_0x43fa0f,null));}else{return _0x43fa0f[_0x344a('0xc')](0x1f4)[_0x344a('0xd')]({'message':_0x344a('0x21')});}};exports[_0x344a('0x22')]=function(_0x26f059,_0x28749b){if(_0x26f059[_0x344a('0x19')]['id']){delete _0x26f059[_0x344a('0x19')]['id'];}var _0x4f2499={'online':_0x344a('0x23'),'stopped':_0x344a('0x24')};if(_0x4f2499[_0x344a('0x25')](_0x26f059[_0x344a('0x19')][_0x344a('0xc')])){return pm2[_0x4f2499[_0x26f059[_0x344a('0x19')]['status']]](_0x26f059[_0x344a('0x26')]['id'])['then'](respondWithResult(_0x28749b,0xc8))['catch'](handleError(_0x28749b,null));}else{return _0x28749b[_0x344a('0xc')](0x1f4)[_0x344a('0xd')]({'message':_0x344a('0x27')});}};exports['destroy']=function(_0x5cd9c6,_0x5cafd2){if(_0x5cd9c6[_0x344a('0x19')]['id']){delete _0x5cd9c6[_0x344a('0x19')]['id'];}if(_0x5cd9c6[_0x344a('0x26')]['id']){return pm2['delete'](_0x5cd9c6[_0x344a('0x26')]['id'])[_0x344a('0x11')](function(_0x71f3ec){pm2[_0x344a('0x28')]();return _0x71f3ec[0x0];})[_0x344a('0x11')](respondWithResult(_0x5cafd2,null))[_0x344a('0x15')](handleError(_0x5cafd2,null));}else{return _0x5cafd2[_0x344a('0xc')](0x1f4)['send']({'message':_0x344a('0x29')});}};
\ No newline at end of file
+var _0xd404=['stop','hasOwnProperty','Unknown\x20status','destroy','delete','lodash','../../config/pm2','api','path','exec','bluebird','sendStatus','json','name','status','send','npm\x20install','info','error','index','list','then','express','motion2','length','catch','show','describe','params','body','join','script','chdir','dirname','start','Missing\x20name\x20and/or\x20path','update','restart'];(function(_0x1ac153,_0x14646b){var _0xe65406=function(_0x42cbd9){while(--_0x42cbd9){_0x1ac153['push'](_0x1ac153['shift']());}};_0xe65406(++_0x14646b);}(_0xd404,0x15b));var _0x4d40=function(_0x1d89e1,_0x4270c5){_0x1d89e1=_0x1d89e1-0x0;var _0x24646c=_0xd404[_0x1d89e1];return _0x24646c;};'use strict';var _=require(_0x4d40('0x0'));var pm2=require(_0x4d40('0x1'));var logger=require('../../config/logger')(_0x4d40('0x2'));var path=require(_0x4d40('0x3'));var exec=require('child_process')[_0x4d40('0x4')];var BPromise=require(_0x4d40('0x5'));function handleEntityNotFound(_0xba821,_0x8bde12){return function(_0xbfb4c6){if(!_0xbfb4c6){_0xba821[_0x4d40('0x6')](0x194);;}return _0xbfb4c6;};}function respondWithResult(_0xc2a9db,_0x24a237){_0x24a237=_0x24a237||0xc8;return function(_0x2e4bd8){if(_0x2e4bd8){return _0xc2a9db['status'](_0x24a237)[_0x4d40('0x7')](_0x2e4bd8);}return null;};}function handleError(_0x116941,_0x5a23a2){_0x5a23a2=_0x5a23a2||0x1f4;return function(_0x3bf81a){logger['error'](_0x3bf81a['stack']);if(_0x3bf81a[_0x4d40('0x8')]){delete _0x3bf81a[_0x4d40('0x8')];}_0x116941[_0x4d40('0x9')](_0x5a23a2)[_0x4d40('0xa')](_0x3bf81a);};}function execChildProcess(){return new BPromise(function(_0x1d00cf,_0x357abf){exec(_0x4d40('0xb'),function(_0x2eab7a,_0x1e18bc,_0x3f5c29){logger[_0x4d40('0xc')](_0x1e18bc);logger[_0x4d40('0xc')](_0x3f5c29);if(_0x2eab7a){logger[_0x4d40('0xd')](_0x2eab7a);return _0x357abf(_0x2eab7a);}return _0x1d00cf(_0x1e18bc);});});}exports[_0x4d40('0xe')]=function(_0x5162f9,_0xa644d2){return pm2[_0x4d40('0xf')]()[_0x4d40('0x10')](function(_0x2083bd){if(_0x2083bd){var _0x477a91=_['reject'](_0x2083bd,function(_0x23de7b){return _0x23de7b[_0x4d40('0x8')]===_0x4d40('0x11')||_0x23de7b[_0x4d40('0x8')]===_0x4d40('0x12');});return{'rows':_0x477a91,'count':_0x477a91[_0x4d40('0x13')]};}return null;})[_0x4d40('0x10')](respondWithResult(_0xa644d2,null))[_0x4d40('0x14')](handleError(_0xa644d2,null));};exports[_0x4d40('0x15')]=function(_0x4b5d23,_0x535989){return pm2[_0x4d40('0x16')](_0x4b5d23[_0x4d40('0x17')]['id'])['then'](respondWithResult(_0x535989,null))[_0x4d40('0x10')](handleEntityNotFound(_0x535989,null))[_0x4d40('0x14')](handleError(_0x535989,null));};exports['create']=function(_0x36d031,_0x5a77e0){if(_0x36d031[_0x4d40('0x18')][_0x4d40('0x8')]&&_0x36d031['body']['script']){var _0x375ce0=path[_0x4d40('0x19')](__dirname,'../../files/plugins',_0x36d031[_0x4d40('0x18')][_0x4d40('0x1a')]);var _0x30f058=process['cwd']();process[_0x4d40('0x1b')](path[_0x4d40('0x1c')](_0x375ce0));return execChildProcess()[_0x4d40('0x10')](function(_0x5ca0a0){process['chdir'](_0x30f058);return pm2[_0x4d40('0x1d')]({'name':_0x36d031[_0x4d40('0x18')][_0x4d40('0x8')],'script':_0x375ce0});})[_0x4d40('0x10')](function(_0x4677c9){pm2['dump']();return _0x4677c9[0x0];})[_0x4d40('0x10')](respondWithResult(_0x5a77e0,0xc9))[_0x4d40('0x14')](handleError(_0x5a77e0,null));}else{return _0x5a77e0['status'](0x1f4)['send']({'message':_0x4d40('0x1e')});}};exports[_0x4d40('0x1f')]=function(_0x3fa83e,_0x3ad1d7){if(_0x3fa83e[_0x4d40('0x18')]['id']){delete _0x3fa83e[_0x4d40('0x18')]['id'];}var _0x105635={'online':_0x4d40('0x20'),'stopped':_0x4d40('0x21')};if(_0x105635[_0x4d40('0x22')](_0x3fa83e[_0x4d40('0x18')]['status'])){return pm2[_0x105635[_0x3fa83e['body']['status']]](_0x3fa83e[_0x4d40('0x17')]['id'])[_0x4d40('0x10')](respondWithResult(_0x3ad1d7,0xc8))[_0x4d40('0x14')](handleError(_0x3ad1d7,null));}else{return _0x3ad1d7[_0x4d40('0x9')](0x1f4)['send']({'message':_0x4d40('0x23')});}};exports[_0x4d40('0x24')]=function(_0x429da9,_0x5a6aff){if(_0x429da9[_0x4d40('0x18')]['id']){delete _0x429da9[_0x4d40('0x18')]['id'];}if(_0x429da9[_0x4d40('0x17')]['id']){return pm2[_0x4d40('0x25')](_0x429da9[_0x4d40('0x17')]['id'])['then'](function(_0x2f4b22){pm2['dump']();return _0x2f4b22[0x0];})[_0x4d40('0x10')](respondWithResult(_0x5a6aff,null))[_0x4d40('0x14')](handleError(_0x5a6aff,null));}else{return _0x5a6aff[_0x4d40('0x9')](0x1f4)[_0x4d40('0xa')]({'message':'Unknown\x20id'});}};
\ No newline at end of file
index 77f5d8e..a6f22ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e9c=['isAuthenticated','getQueues','exports','express','Router','../../components/auth/service','./realtime.controller','get','/queues'];(function(_0x135aaa,_0x3f2319){var _0x5d2b59=function(_0x53e657){while(--_0x53e657){_0x135aaa['push'](_0x135aaa['shift']());}};_0x5d2b59(++_0x3f2319);}(_0x3e9c,0x6f));var _0xc3e9=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x3e9c[_0x21a9d9];return _0x46adce;};'use strict';var express=require(_0xc3e9('0x0'));var router=express[_0xc3e9('0x1')]();var auth=require(_0xc3e9('0x2'));var controller=require(_0xc3e9('0x3'));router[_0xc3e9('0x4')](_0xc3e9('0x5'),auth[_0xc3e9('0x6')](),controller[_0xc3e9('0x7')]);module[_0xc3e9('0x8')]=router;
\ No newline at end of file
+var _0xd509=['exports','../../components/auth/service','./realtime.controller','get','getQueues'];(function(_0x3a83fc,_0x2e8cda){var _0x5c8bd2=function(_0x31a9b7){while(--_0x31a9b7){_0x3a83fc['push'](_0x3a83fc['shift']());}};_0x5c8bd2(++_0x2e8cda);}(_0xd509,0xc9));var _0x9d50=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd509[_0x3dd15e];return _0x231fd0;};'use strict';var express=require('express');var router=express['Router']();var auth=require(_0x9d50('0x0'));var controller=require(_0x9d50('0x1'));router[_0x9d50('0x2')]('/queues',auth['isAuthenticated'](),controller[_0x9d50('0x3')]);module[_0x9d50('0x4')]=router;
\ No newline at end of file
index bef00ea..04937af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x741c=['error','stack','name','send','getQueues','mail','chat','sms','whatsapp','then','query','channel','toLowerCase','Invalid\x20channel','startCase','rawAttributes','fieldName','type','key','user','outbound','QueueCampaigns','Queues','filter','UserProfile','getResources','findAndCountAll','voice','request','format','waiting','talking','paused','pTalking','originated','message','dialActive','dialMethod','Trunk','startPredictive','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','rows','map','get','loggedInDb','available','agents','find','merge','getAgents','getMembers','length','UserId','online','push','User','Queue','findAll','agent','catch','util','lodash','jayson/promise','../../components/parsers/qs','../../config/logger','api','http','offset','undefined','count','limit','status','set','Content-Range'];(function(_0x1e48d3,_0x5d8c43){var _0x2852b1=function(_0x11d7b3){while(--_0x11d7b3){_0x1e48d3['push'](_0x1e48d3['shift']());}};_0x2852b1(++_0x5d8c43);}(_0x741c,0x196));var _0xc741=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x741c[_0x42cae2];return _0x5f256f;};'use strict';var util=require(_0xc741('0x0'));var _=require(_0xc741('0x1'));var jayson=require(_0xc741('0x2'));var qs=require(_0xc741('0x3'));var logger=require(_0xc741('0x4'))(_0xc741('0x5'));var db=require('../../mysqldb')['db'];var client=jayson['client'][_0xc741('0x6')]({'port':0x232a});var routingClient=jayson['client'][_0xc741('0x6')]({'port':0x232c});function respondWithFilteredResult(_0x1935b4,_0x3708ae){return function(_0x133bc4){if(_0x133bc4){var _0x3f3d82=typeof _0x3708ae[_0xc741('0x7')]===_0xc741('0x8')&&typeof _0x3708ae['limit']===_0xc741('0x8');var _0x1f53bf=_0x133bc4['count'];var _0xc6555=_0x3f3d82?0x0:_0x3708ae['offset'];var _0x4a4693=_0x3f3d82?_0x133bc4[_0xc741('0x9')]:_0x3708ae[_0xc741('0x7')]+_0x3708ae[_0xc741('0xa')];var _0x47501c;if(_0x4a4693>=_0x1f53bf){_0x4a4693=_0x1f53bf;_0x47501c=0xc8;}else{_0x47501c=0xce;}_0x1935b4[_0xc741('0xb')](_0x47501c);return _0x1935b4[_0xc741('0xc')](_0xc741('0xd'),_0xc6555+'-'+_0x4a4693+'/'+_0x1f53bf)['json'](_0x133bc4);}return null;};}function handleError(_0x4c8ef0,_0x51bc33){_0x51bc33=_0x51bc33||0x1f4;return function(_0x12a073){logger[_0xc741('0xe')](_0x12a073[_0xc741('0xf')]);if(_0x12a073[_0xc741('0x10')]){delete _0x12a073[_0xc741('0x10')];}_0x4c8ef0['status'](_0x51bc33)[_0xc741('0x11')](_0x12a073);};}exports[_0xc741('0x12')]=function(_0x4c190d,_0xc0383){var _0x3c7569=[_0xc741('0x13'),_0xc741('0x14'),_0xc741('0x15'),'openchannel','fax',_0xc741('0x16'),'voice'];var _0x1c4f3a={'count':0x0,'rows':[]},_0x3903c6={},_0x575184;Promise['resolve']()[_0xc741('0x17')](function(){if(_0x4c190d[_0xc741('0x18')][_0xc741('0x19')]){if(!_['includes'](_0x3c7569,_0x4c190d[_0xc741('0x18')][_0xc741('0x19')][_0xc741('0x1a')]()))throw new Error(_0xc741('0x1b'));_0x575184=_0x4c190d[_0xc741('0x18')][_0xc741('0x19')][_0xc741('0x1a')]();}var _0x30b7ea=_[_0xc741('0x1c')](_0x575184)+'Queue';var _0x26bf01=_['map'](db[_0x30b7ea][_0xc741('0x1d')],function(_0x4b5b31){return{'name':_0x4b5b31[_0xc741('0x1e')],'type':_0x4b5b31[_0xc741('0x1f')][_0xc741('0x20')]};});_0x3903c6=qs['getOptions'](_0x26bf01,_0x4c190d);if(_0x4c190d[_0xc741('0x21')]['role']===_0xc741('0x21')){var _0x28a041={'params':{'id':_0x4c190d[_0xc741('0x21')]['userProfileId']},'query':{'section':_0x575184==='voice'&&_0x4c190d['query'][_0xc741('0x1f')]===_0xc741('0x22')?_0xc741('0x23'):_[_0xc741('0x1c')](_0x575184)+_0xc741('0x24'),'type':_0x4c190d['query']['type'],'nolimit':!![],'sort':_0xc741('0x10'),'filter':_0x4c190d[_0xc741('0x18')][_0xc741('0x25')]}};return db[_0xc741('0x26')][_0xc741('0x27')](_0x28a041);}return db[_0x30b7ea][_0xc741('0x28')](_0x3903c6);})['then'](function(_0x353729){_0x1c4f3a[_0xc741('0x9')]=_0x353729['count'];var _0x3797c5=_0x575184===_0xc741('0x29')?client:routingClient;return _0x3797c5[_0xc741('0x2a')](_[_0xc741('0x1c')](_0x575184)+_0xc741('0x24'),_0x4c190d)[_0xc741('0x17')](function(_0x3b3703){if(_0x3b3703[_0xc741('0xe')])throw new Error(util[_0xc741('0x2b')]('Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues',_0x575184));var _0x3094de=_0x3b3703['result'];var _0xbf2274=['loggedIn','available',_0xc741('0x2c'),_0xc741('0x2d'),_0xc741('0x2e')];if(_0x575184==='voice'&&_0x4c190d[_0xc741('0x18')][_0xc741('0x1f')]===_0xc741('0x22')){_0xbf2274['push'](_0xc741('0x2f'),_0xc741('0x30'),_0xc741('0x31'),_0xc741('0x32'),_0xc741('0x33'),_0xc741('0x34'),_0xc741('0x35'),'startProgressive','erlangCalls',_0xc741('0x36'),_0xc741('0x37'),_0xc741('0x38'),_0xc741('0x39'),_0xc741('0x3a'),_0xc741('0x3b'),'predictiveIntervalAvailable',_0xc741('0x3c'),_0xc741('0x3d'),'predictiveIntervalDroppedCallsTimeout',_0xc741('0x3e'),_0xc741('0x3f'),_0xc741('0x40'));}var _0x560e85=_0x353729[_0xc741('0x41')][_0xc741('0x42')](function(_0x85e752){var _0x39e9fb=_0x85e752[_0xc741('0x43')]({'plain':!![]});_0x39e9fb[_0xc741('0x2e')]=0x0;_0x39e9fb[_0xc741('0x44')]=0x0;_0x39e9fb['loggedIn']=0x0;_0x39e9fb[_0xc741('0x45')]=0x0;_0x39e9fb[_0xc741('0x2e')]=0x0;_0x39e9fb[_0xc741('0x2c')]=0x0;if(_0x575184===_0xc741('0x29')){_0x39e9fb[_0xc741('0x2d')]=0x0;if(_0x4c190d[_0xc741('0x18')][_0xc741('0x1f')]===_0xc741('0x22')){_0x39e9fb['pTalking']=0x0;_0x39e9fb[_0xc741('0x30')]=0x0;}}_0x39e9fb[_0xc741('0x46')]=[];var _0x29bc62=_[_0xc741('0x47')](_0x3094de['rows'],['id',_0x39e9fb['id']]);if(_0x29bc62)_[_0xc741('0x48')](_0x39e9fb,_['pick'](_0x29bc62,_0xbf2274));if(_0x575184===_0xc741('0x29')){return _0x85e752[_0xc741('0x49')]({'attributes':['id',_0xc741('0x10'),'online'],'joinTableAttributes':[],'raw':!![]})['then'](function(_0x3686b2){return _0x85e752[_0xc741('0x4a')]({'raw':!![]})[_0xc741('0x17')](function(_0x3f12ea){for(var _0x1336f7=0x0;_0x1336f7<_0x3686b2[_0xc741('0x4b')];_0x1336f7++){var _0x3e7b76=_[_0xc741('0x47')](_0x3f12ea,[_0xc741('0x4c'),_0x3686b2[_0x1336f7]['id']]);var _0x2542aa={'id':_0x3686b2[_0x1336f7]['id'],'name':_0x3686b2[_0x1336f7][_0xc741('0x10')],'online':Boolean(_0x3686b2[_0x1336f7][_0xc741('0x4d')]),'paused':_0x3e7b76?Boolean(_0x3e7b76[_0xc741('0x2e')]):![]};if(_0x2542aa[_0xc741('0x4d')])_0x39e9fb[_0xc741('0x44')]++;if(_0x2542aa[_0xc741('0x2e')])_0x39e9fb[_0xc741('0x2e')]++;_0x39e9fb['agents'][_0xc741('0x4e')](_0x2542aa);}return _0x39e9fb;});});}else{var _0x497598=_0xc741('0x4f')+_['startCase'](_0x575184)+_0xc741('0x50');var _0x258281=_0x575184+'Pause';return db[_0x497598][_0xc741('0x51')]({'where':{[_[_0xc741('0x1c')](_0x575184)+'QueueId']:_0x85e752['id']},'raw':!![]})[_0xc741('0x17')](function(_0x14ce60){return db[_0xc741('0x4f')][_0xc741('0x51')]({'attributes':['id',_0xc741('0x10'),_0xc741('0x4d'),_0x258281],'where':{'id':_[_0xc741('0x42')](_0x14ce60,'UserId'),'role':_0xc741('0x52')},'raw':!![]});})['then'](function(_0x47ac55){for(var _0x61bfc7=0x0;_0x61bfc7<_0x47ac55['length'];_0x61bfc7++){var _0x113c1e={'id':_0x47ac55[_0x61bfc7]['id'],'name':_0x47ac55[_0x61bfc7][_0xc741('0x10')],'online':Boolean(_0x47ac55[_0x61bfc7][_0xc741('0x4d')]),'paused':Boolean(_0x47ac55[_0x61bfc7][_0x258281])};if(_0x113c1e[_0xc741('0x4d')])_0x39e9fb[_0xc741('0x44')]++;if(_0x113c1e[_0xc741('0x2e')])_0x39e9fb[_0xc741('0x2e')]++;_0x39e9fb[_0xc741('0x46')][_0xc741('0x4e')](_0x113c1e);}return _0x39e9fb;});}});return Promise['all'](_0x560e85);});})['then'](function(_0x12dde4){_0x1c4f3a[_0xc741('0x41')]=_0x12dde4;return _0x1c4f3a;})[_0xc741('0x17')](respondWithFilteredResult(_0xc0383,_0x3903c6))[_0xc741('0x53')](handleError(_0xc0383,null));};
\ No newline at end of file
+var _0x7096=['pick','getAgents','online','getMembers','UserId','Pause','findAll','QueueId','User','agent','length','all','catch','lodash','../../components/parsers/qs','api','../../mysqldb','client','http','offset','undefined','limit','count','status','set','Content-Range','json','error','name','send','chat','sms','openchannel','fax','then','query','channel','toLowerCase','Invalid\x20channel','startCase','Queue','map','rawAttributes','fieldName','type','key','user','role','userProfileId','voice','outbound','QueueCampaigns','Queues','UserProfile','findAndCountAll','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','result','loggedIn','available','waiting','talking','paused','push','originated','message','dialActive','dialMethod','startPredictive','startProgressive','erlangCallToSecond','erlangAbandonmentRate','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','rows','get','pTalking','agents','merge'];(function(_0x2d6dfa,_0x29ffad){var _0x249500=function(_0x12755f){while(--_0x12755f){_0x2d6dfa['push'](_0x2d6dfa['shift']());}};_0x249500(++_0x29ffad);}(_0x7096,0x10c));var _0x6709=function(_0x334841,_0x2bbc4c){_0x334841=_0x334841-0x0;var _0x5beb4b=_0x7096[_0x334841];return _0x5beb4b;};'use strict';var util=require('util');var _=require(_0x6709('0x0'));var jayson=require('jayson/promise');var qs=require(_0x6709('0x1'));var logger=require('../../config/logger')(_0x6709('0x2'));var db=require(_0x6709('0x3'))['db'];var client=jayson[_0x6709('0x4')][_0x6709('0x5')]({'port':0x232a});var routingClient=jayson[_0x6709('0x4')][_0x6709('0x5')]({'port':0x232c});function respondWithFilteredResult(_0xb8fe6d,_0x9d630f){return function(_0xa35832){if(_0xa35832){var _0x3e2223=typeof _0x9d630f[_0x6709('0x6')]===_0x6709('0x7')&&typeof _0x9d630f[_0x6709('0x8')]==='undefined';var _0x5af380=_0xa35832[_0x6709('0x9')];var _0x2d8c0b=_0x3e2223?0x0:_0x9d630f[_0x6709('0x6')];var _0x1aa476=_0x3e2223?_0xa35832[_0x6709('0x9')]:_0x9d630f[_0x6709('0x6')]+_0x9d630f['limit'];var _0x5b9f26;if(_0x1aa476>=_0x5af380){_0x1aa476=_0x5af380;_0x5b9f26=0xc8;}else{_0x5b9f26=0xce;}_0xb8fe6d[_0x6709('0xa')](_0x5b9f26);return _0xb8fe6d[_0x6709('0xb')](_0x6709('0xc'),_0x2d8c0b+'-'+_0x1aa476+'/'+_0x5af380)[_0x6709('0xd')](_0xa35832);}return null;};}function handleError(_0x31ac88,_0x288f51){_0x288f51=_0x288f51||0x1f4;return function(_0x1d56a5){logger[_0x6709('0xe')](_0x1d56a5['stack']);if(_0x1d56a5[_0x6709('0xf')]){delete _0x1d56a5[_0x6709('0xf')];}_0x31ac88[_0x6709('0xa')](_0x288f51)[_0x6709('0x10')](_0x1d56a5);};}exports['getQueues']=function(_0xc728aa,_0x5c667c){var _0x41af1f=['mail',_0x6709('0x11'),_0x6709('0x12'),_0x6709('0x13'),_0x6709('0x14'),'whatsapp','voice'];var _0x5c4f94={'count':0x0,'rows':[]},_0x3fa5b1={},_0x235a54;Promise['resolve']()[_0x6709('0x15')](function(){if(_0xc728aa[_0x6709('0x16')][_0x6709('0x17')]){if(!_['includes'](_0x41af1f,_0xc728aa[_0x6709('0x16')][_0x6709('0x17')][_0x6709('0x18')]()))throw new Error(_0x6709('0x19'));_0x235a54=_0xc728aa['query'][_0x6709('0x17')][_0x6709('0x18')]();}var _0x373047=_[_0x6709('0x1a')](_0x235a54)+_0x6709('0x1b');var _0x224e8a=_[_0x6709('0x1c')](db[_0x373047][_0x6709('0x1d')],function(_0x386224){return{'name':_0x386224[_0x6709('0x1e')],'type':_0x386224[_0x6709('0x1f')][_0x6709('0x20')]};});_0x3fa5b1=qs['getOptions'](_0x224e8a,_0xc728aa);if(_0xc728aa[_0x6709('0x21')][_0x6709('0x22')]===_0x6709('0x21')){var _0x5c7982={'params':{'id':_0xc728aa[_0x6709('0x21')][_0x6709('0x23')]},'query':{'section':_0x235a54===_0x6709('0x24')&&_0xc728aa[_0x6709('0x16')]['type']===_0x6709('0x25')?_0x6709('0x26'):_['startCase'](_0x235a54)+_0x6709('0x27'),'type':_0xc728aa[_0x6709('0x16')]['type'],'nolimit':!![],'sort':_0x6709('0xf'),'filter':_0xc728aa[_0x6709('0x16')]['filter']}};return db[_0x6709('0x28')]['getResources'](_0x5c7982);}return db[_0x373047][_0x6709('0x29')](_0x3fa5b1);})[_0x6709('0x15')](function(_0x5b6906){_0x5c4f94[_0x6709('0x9')]=_0x5b6906['count'];var _0xe066d8=_0x235a54===_0x6709('0x24')?client:routingClient;return _0xe066d8['request'](_[_0x6709('0x1a')](_0x235a54)+'Queues',_0xc728aa)[_0x6709('0x15')](function(_0x135f46){if(_0x135f46['error'])throw new Error(util['format'](_0x6709('0x2a'),_0x235a54));var _0x2a0cb0=_0x135f46[_0x6709('0x2b')];var _0x3f2b5e=[_0x6709('0x2c'),_0x6709('0x2d'),_0x6709('0x2e'),_0x6709('0x2f'),_0x6709('0x30')];if(_0x235a54==='voice'&&_0xc728aa[_0x6709('0x16')][_0x6709('0x1f')]===_0x6709('0x25')){_0x3f2b5e[_0x6709('0x31')]('pTalking',_0x6709('0x32'),_0x6709('0x33'),_0x6709('0x34'),_0x6709('0x35'),'Trunk',_0x6709('0x36'),_0x6709('0x37'),'erlangCalls',_0x6709('0x38'),_0x6709('0x39'),'erlangBusyFactor',_0x6709('0x3a'),_0x6709('0x3b'),_0x6709('0x3c'),_0x6709('0x3d'),_0x6709('0x3e'),_0x6709('0x3f'),_0x6709('0x40'),'predictiveIntervalDroppedCallsCallersExit',_0x6709('0x41'),_0x6709('0x42'));}var _0x4fad54=_0x5b6906[_0x6709('0x43')][_0x6709('0x1c')](function(_0x6b5f39){var _0x2bb89c=_0x6b5f39[_0x6709('0x44')]({'plain':!![]});_0x2bb89c[_0x6709('0x30')]=0x0;_0x2bb89c['loggedInDb']=0x0;_0x2bb89c[_0x6709('0x2c')]=0x0;_0x2bb89c['available']=0x0;_0x2bb89c[_0x6709('0x30')]=0x0;_0x2bb89c[_0x6709('0x2e')]=0x0;if(_0x235a54===_0x6709('0x24')){_0x2bb89c['talking']=0x0;if(_0xc728aa[_0x6709('0x16')][_0x6709('0x1f')]===_0x6709('0x25')){_0x2bb89c[_0x6709('0x45')]=0x0;_0x2bb89c[_0x6709('0x32')]=0x0;}}_0x2bb89c[_0x6709('0x46')]=[];var _0x450654=_['find'](_0x2a0cb0[_0x6709('0x43')],['id',_0x2bb89c['id']]);if(_0x450654)_[_0x6709('0x47')](_0x2bb89c,_[_0x6709('0x48')](_0x450654,_0x3f2b5e));if(_0x235a54===_0x6709('0x24')){return _0x6b5f39[_0x6709('0x49')]({'attributes':['id',_0x6709('0xf'),_0x6709('0x4a')],'joinTableAttributes':[],'raw':!![]})['then'](function(_0x5abb53){return _0x6b5f39[_0x6709('0x4b')]({'raw':!![]})[_0x6709('0x15')](function(_0x98a12c){for(var _0x42790d=0x0;_0x42790d<_0x5abb53['length'];_0x42790d++){var _0x5afebc=_['find'](_0x98a12c,[_0x6709('0x4c'),_0x5abb53[_0x42790d]['id']]);var _0x293577={'id':_0x5abb53[_0x42790d]['id'],'name':_0x5abb53[_0x42790d]['name'],'online':Boolean(_0x5abb53[_0x42790d][_0x6709('0x4a')]),'paused':_0x5afebc?Boolean(_0x5afebc[_0x6709('0x30')]):![]};if(_0x293577['online'])_0x2bb89c['loggedInDb']++;if(_0x293577[_0x6709('0x30')])_0x2bb89c[_0x6709('0x30')]++;_0x2bb89c[_0x6709('0x46')][_0x6709('0x31')](_0x293577);}return _0x2bb89c;});});}else{var _0x13877a='User'+_[_0x6709('0x1a')](_0x235a54)+'Queue';var _0x26e871=_0x235a54+_0x6709('0x4d');return db[_0x13877a][_0x6709('0x4e')]({'where':{[_['startCase'](_0x235a54)+_0x6709('0x4f')]:_0x6b5f39['id']},'raw':!![]})['then'](function(_0x57c5bf){return db[_0x6709('0x50')][_0x6709('0x4e')]({'attributes':['id',_0x6709('0xf'),_0x6709('0x4a'),_0x26e871],'where':{'id':_[_0x6709('0x1c')](_0x57c5bf,_0x6709('0x4c')),'role':_0x6709('0x51')},'raw':!![]});})[_0x6709('0x15')](function(_0x123793){for(var _0xe999aa=0x0;_0xe999aa<_0x123793[_0x6709('0x52')];_0xe999aa++){var _0x17f95d={'id':_0x123793[_0xe999aa]['id'],'name':_0x123793[_0xe999aa][_0x6709('0xf')],'online':Boolean(_0x123793[_0xe999aa][_0x6709('0x4a')]),'paused':Boolean(_0x123793[_0xe999aa][_0x26e871])};if(_0x17f95d[_0x6709('0x4a')])_0x2bb89c['loggedInDb']++;if(_0x17f95d[_0x6709('0x30')])_0x2bb89c['paused']++;_0x2bb89c['agents'][_0x6709('0x31')](_0x17f95d);}return _0x2bb89c;});}});return Promise[_0x6709('0x53')](_0x4fad54);});})[_0x6709('0x15')](function(_0xe8dd1){_0x5c4f94[_0x6709('0x43')]=_0xe8dd1;return _0x5c4f94;})[_0x6709('0x15')](respondWithFilteredResult(_0x5c667c,_0x3fa5b1))[_0x6709('0x54')](handleError(_0x5c667c,null));};
\ No newline at end of file
index 6813cf3..2d0c39a 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(_0x440c24,_0x2388d1){var _0x2f52f0=function(_0x2c52bd){while(--_0x2c52bd){_0x440c24['push'](_0x440c24['shift']());}};_0x2f52f0(++_0x2388d1);}(_0xedd9,0xfc));var _0x9edd=function(_0xbbd83d,_0xfbe6f0){_0xbbd83d=_0xbbd83d-0x0;var _0x19cb4a=_0xedd9[_0xbbd83d];return _0x19cb4a;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');module[_0x9edd('0x8')]=router;
\ No newline at end of file
+var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x27fdb2,_0x38e27b){var _0x59bc42=function(_0xdea49f){while(--_0xdea49f){_0x27fdb2['push'](_0x27fdb2['shift']());}};_0x59bc42(++_0x38e27b);}(_0xcb91,0x1a9));var _0x1cb9=function(_0xcfc44,_0x179bc1){_0xcfc44=_0xcfc44-0x0;var _0x307a25=_0xcb91[_0xcfc44];return _0x307a25;};'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 706649a..33265a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf435=['exports','INTEGER','STRING','DATE'];(function(_0x16d7c4,_0x364a61){var _0x57f2f5=function(_0x2e49ab){while(--_0x2e49ab){_0x16d7c4['push'](_0x16d7c4['shift']());}};_0x57f2f5(++_0x364a61);}(_0xf435,0x174));var _0x5f43=function(_0x24d304,_0x5995f3){_0x24d304=_0x24d304-0x0;var _0x5652d3=_0xf435[_0x24d304];return _0x5652d3;};'use strict';var Sequelize=require('sequelize');module[_0x5f43('0x0')]={'state':{'type':Sequelize[_0x5f43('0x1')](0x2)},'statedesc':{'type':Sequelize[_0x5f43('0x2')]},'scheduledat':{'type':Sequelize[_0x5f43('0x3')]},'uniqueid':{'type':Sequelize[_0x5f43('0x2')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0x5f43('0x3')]},'ringtime':{'type':Sequelize[_0x5f43('0x1')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0x5f43('0x2')]},'campaigntype':{'type':Sequelize[_0x5f43('0x2')]},'membername':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x2c24=['DATE','sequelize','exports','INTEGER','STRING'];(function(_0x24237f,_0x4cf32c){var _0x48298e=function(_0x3f7511){while(--_0x3f7511){_0x24237f['push'](_0x24237f['shift']());}};_0x48298e(++_0x4cf32c);}(_0x2c24,0x1e6));var _0x42c2=function(_0x215583,_0x528556){_0x215583=_0x215583-0x0;var _0x5d2c31=_0x2c24[_0x215583];return _0x5d2c31;};'use strict';var Sequelize=require(_0x42c2('0x0'));module[_0x42c2('0x1')]={'state':{'type':Sequelize[_0x42c2('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x42c2('0x3')]},'scheduledat':{'type':Sequelize[_0x42c2('0x4')]},'uniqueid':{'type':Sequelize[_0x42c2('0x3')]},'starttime':{'type':Sequelize[_0x42c2('0x4')]},'responsetime':{'type':Sequelize[_0x42c2('0x4')]},'ringtime':{'type':Sequelize[_0x42c2('0x2')],'defaultValue':0x0},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x42c2('0x3')]},'membername':{'type':Sequelize[_0x42c2('0x3')]}};
\ No newline at end of file
index 289dc3d..c544647 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9863=['util','api','moment','bluebird','request-promise','path','../../config/environment','./reportAgentPreview.attributes','define','ReportAgentPreview'];(function(_0x364cf8,_0x146b9b){var _0x6a59ee=function(_0x3d81eb){while(--_0x3d81eb){_0x364cf8['push'](_0x364cf8['shift']());}};_0x6a59ee(++_0x146b9b);}(_0x9863,0x1d6));var _0x3986=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x9863[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var util=require(_0x3986('0x0'));var logger=require('../../config/logger')(_0x3986('0x1'));var moment=require(_0x3986('0x2'));var BPromise=require(_0x3986('0x3'));var rp=require(_0x3986('0x4'));var fs=require('fs');var path=require(_0x3986('0x5'));var rimraf=require('rimraf');var config=require(_0x3986('0x6'));var attributes=require(_0x3986('0x7'));module['exports']=function(_0x52fad9,_0x271bae){return _0x52fad9[_0x3986('0x8')](_0x3986('0x9'),attributes,{'tableName':'report_agent_preview','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd900=['../../config/environment','./reportAgentPreview.attributes','exports','define','report_agent_preview','lodash','util','api','moment','path','rimraf'];(function(_0x171520,_0x1cee8c){var _0x3cc729=function(_0x201c4a){while(--_0x201c4a){_0x171520['push'](_0x171520['shift']());}};_0x3cc729(++_0x1cee8c);}(_0xd900,0x7e));var _0x0d90=function(_0xb3b452,_0x582e8e){_0xb3b452=_0xb3b452-0x0;var _0x238983=_0xd900[_0xb3b452];return _0x238983;};'use strict';var _=require(_0x0d90('0x0'));var util=require(_0x0d90('0x1'));var logger=require('../../config/logger')(_0x0d90('0x2'));var moment=require(_0x0d90('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x0d90('0x4'));var rimraf=require(_0x0d90('0x5'));var config=require(_0x0d90('0x6'));var attributes=require(_0x0d90('0x7'));module[_0x0d90('0x8')]=function(_0x49bfad,_0x1b563d){return _0x49bfad[_0x0d90('0x9')]('ReportAgentPreview',attributes,{'tableName':_0x0d90('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index eb88281..0074de8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd312=['jayson/promise','client','http','request','info','request\x20sent','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','stringify','error','code','ReportAgentPreview,\x20%s,\x20%s','message','result','catch','CreateReportAgentPreview','ReportAgentPreview','create','body','options','raw','then','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x29d915,_0x54a040){var _0x160f86=function(_0x237dfa){while(--_0x237dfa){_0x29d915['push'](_0x29d915['shift']());}};_0x160f86(++_0x54a040);}(_0xd312,0x136));var _0x2d31=function(_0x5094f6,_0x260159){_0x5094f6=_0x5094f6-0x0;var _0x2facdf=_0xd312[_0x5094f6];return _0x2facdf;};'use strict';var _=require(_0x2d31('0x0'));var util=require('util');var moment=require(_0x2d31('0x1'));var BPromise=require(_0x2d31('0x2'));var rs=require(_0x2d31('0x3'));var fs=require('fs');var Redis=require(_0x2d31('0x4'));var db=require(_0x2d31('0x5'))['db'];var utils=require(_0x2d31('0x6'));var logger=require(_0x2d31('0x7'))(_0x2d31('0x8'));var config=require(_0x2d31('0x9'));var jayson=require(_0x2d31('0xa'));var client=jayson[_0x2d31('0xb')][_0x2d31('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x128a5d,_0x898c13,_0x1637cd){return new BPromise(function(_0x1c96d9,_0x5df2de){return client[_0x2d31('0xd')](_0x128a5d,_0x1637cd)['then'](function(_0x5b7f62){logger[_0x2d31('0xe')]('ReportAgentPreview,\x20%s,\x20%s',_0x898c13,_0x2d31('0xf'));logger[_0x2d31('0x10')](_0x2d31('0x11'),_0x898c13,'request\x20sent',JSON[_0x2d31('0x12')](_0x5b7f62));if(_0x5b7f62[_0x2d31('0x13')]){if(_0x5b7f62[_0x2d31('0x13')][_0x2d31('0x14')]===0x1f4){logger[_0x2d31('0x13')](_0x2d31('0x15'),_0x898c13,_0x5b7f62[_0x2d31('0x13')]['message']);return _0x5df2de(_0x5b7f62[_0x2d31('0x13')]['message']);}logger[_0x2d31('0x13')](_0x2d31('0x15'),_0x898c13,_0x5b7f62[_0x2d31('0x13')]['message']);return _0x1c96d9(_0x5b7f62['error'][_0x2d31('0x16')]);}else{logger['info'](_0x2d31('0x15'),_0x898c13,_0x2d31('0xf'));_0x1c96d9(_0x5b7f62[_0x2d31('0x17')][_0x2d31('0x16')]);}})[_0x2d31('0x18')](function(_0x191054){logger[_0x2d31('0x13')](_0x2d31('0x15'),_0x898c13,_0x191054);_0x5df2de(_0x191054);});});}exports[_0x2d31('0x19')]=function(_0x2b04ef){var _0xe4b272=this;return new Promise(function(_0x4f5624,_0xed0d57){return db[_0x2d31('0x1a')][_0x2d31('0x1b')](_0x2b04ef[_0x2d31('0x1c')],{'raw':_0x2b04ef[_0x2d31('0x1d')]?_0x2b04ef[_0x2d31('0x1d')][_0x2d31('0x1e')]===undefined?!![]:![]:!![]})[_0x2d31('0x1f')](function(_0x121980){logger[_0x2d31('0xe')](_0x2d31('0x19'),_0x2b04ef);logger[_0x2d31('0x10')](_0x2d31('0x19'),_0x2b04ef,JSON[_0x2d31('0x12')](_0x121980));_0x4f5624(_0x121980);})[_0x2d31('0x18')](function(_0x294569){logger[_0x2d31('0x13')](_0x2d31('0x19'),_0x294569[_0x2d31('0x16')],_0x2b04ef);_0xed0d57(_0xe4b272['error'](0x1f4,_0x294569[_0x2d31('0x16')]));});});};
\ No newline at end of file
+var _0x3e78=['debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','create','body','options','raw','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','client','request','then','info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent'];(function(_0x2ce0b5,_0x49c96f){var _0x1ac788=function(_0x4bac91){while(--_0x4bac91){_0x2ce0b5['push'](_0x2ce0b5['shift']());}};_0x1ac788(++_0x49c96f);}(_0x3e78,0x138));var _0x83e7=function(_0x1780f8,_0x11ba93){_0x1780f8=_0x1780f8-0x0;var _0x33a410=_0x3e78[_0x1780f8];return _0x33a410;};'use strict';var _=require('lodash');var util=require(_0x83e7('0x0'));var moment=require(_0x83e7('0x1'));var BPromise=require(_0x83e7('0x2'));var rs=require(_0x83e7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x83e7('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x83e7('0x5'))(_0x83e7('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x83e7('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x33d40d,_0x4d1dd0,_0x46d53e){return new BPromise(function(_0x1b6f6b,_0x14f213){return client[_0x83e7('0x8')](_0x33d40d,_0x46d53e)[_0x83e7('0x9')](function(_0x20b52d){logger[_0x83e7('0xa')](_0x83e7('0xb'),_0x4d1dd0,_0x83e7('0xc'));logger[_0x83e7('0xd')](_0x83e7('0xe'),_0x4d1dd0,_0x83e7('0xc'),JSON[_0x83e7('0xf')](_0x20b52d));if(_0x20b52d[_0x83e7('0x10')]){if(_0x20b52d[_0x83e7('0x10')][_0x83e7('0x11')]===0x1f4){logger['error'](_0x83e7('0xb'),_0x4d1dd0,_0x20b52d['error']['message']);return _0x14f213(_0x20b52d[_0x83e7('0x10')]['message']);}logger[_0x83e7('0x10')](_0x83e7('0xb'),_0x4d1dd0,_0x20b52d[_0x83e7('0x10')][_0x83e7('0x12')]);return _0x1b6f6b(_0x20b52d[_0x83e7('0x10')]['message']);}else{logger[_0x83e7('0xa')](_0x83e7('0xb'),_0x4d1dd0,_0x83e7('0xc'));_0x1b6f6b(_0x20b52d[_0x83e7('0x13')]['message']);}})['catch'](function(_0x296755){logger['error']('ReportAgentPreview,\x20%s,\x20%s',_0x4d1dd0,_0x296755);_0x14f213(_0x296755);});});}exports['CreateReportAgentPreview']=function(_0x6b4d1a){var _0x462d8f=this;return new Promise(function(_0x4cb6a2,_0x19cdf2){return db['ReportAgentPreview'][_0x83e7('0x14')](_0x6b4d1a[_0x83e7('0x15')],{'raw':_0x6b4d1a[_0x83e7('0x16')]?_0x6b4d1a[_0x83e7('0x16')][_0x83e7('0x17')]===undefined?!![]:![]:!![]})[_0x83e7('0x9')](function(_0xa6d3c6){logger[_0x83e7('0xa')]('CreateReportAgentPreview',_0x6b4d1a);logger[_0x83e7('0xd')]('CreateReportAgentPreview',_0x6b4d1a,JSON['stringify'](_0xa6d3c6));_0x4cb6a2(_0xa6d3c6);})[_0x83e7('0x18')](function(_0x14ec15){logger[_0x83e7('0x10')]('CreateReportAgentPreview',_0x14ec15[_0x83e7('0x12')],_0x6b4d1a);_0x19cdf2(_0x462d8f[_0x83e7('0x10')](0x1f4,_0x14ec15[_0x83e7('0x12')]));});});};
\ No newline at end of file
index 932b729..6a4f669 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbed6=['whatsapp','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','/agents/:id/notify','agentNotify','multer','util','express','../../components/auth/service','get','/voice/channels','isAuthenticated','/voice/channels/:uniqueid/mixmonitor','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','/voice/queues','voiceQueues','chatQueues','mailQueues','/mail/accounts','mailAccounts','/openchannel/queues','/sms/queues','whatsappQueues','/fax/queues','/voice/queues/preview/:id','voiceQueuesPreview','voiceQueuesChannels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','/voice/queues/:id','showVoiceQueues','put','updateVoiceQueue','/outbound','outbound','outboundChannels','/agents/:id/capacity','agentCapacity','/telephones','telephones','trunks','/campaigns','campaigns','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','queueNotify','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','chat','/chat/queues/:id','showChatQueues','/fax/queues/:id/notify','fax','/fax/queues/:id','showFaxQueues','/openchannel/queues/:id','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify'];(function(_0x5149c7,_0xfd2f67){var _0x5010b0=function(_0x408cb0){while(--_0x408cb0){_0x5149c7['push'](_0x5149c7['shift']());}};_0x5010b0(++_0xfd2f67);}(_0xbed6,0x146));var _0x6bed=function(_0x5416db,_0x55683a){_0x5416db=_0x5416db-0x0;var _0x243e35=_0xbed6[_0x5416db];return _0x243e35;};'use strict';var multer=require(_0x6bed('0x0'));var util=require(_0x6bed('0x1'));var path=require('path');var express=require(_0x6bed('0x2'));var router=express['Router']();var auth=require(_0x6bed('0x3'));var controller=require('./rpc.controller');router[_0x6bed('0x4')](_0x6bed('0x5'),auth[_0x6bed('0x6')](),controller['voiceChannels']);router['get'](_0x6bed('0x7'),auth['isAuthenticated'](),controller[_0x6bed('0x8')]);router[_0x6bed('0x4')](_0x6bed('0x9'),auth['isAuthenticated'](),controller[_0x6bed('0xa')]);router[_0x6bed('0x4')](_0x6bed('0xb'),auth[_0x6bed('0x6')](),controller[_0x6bed('0xc')]);router['get']('/chat/queues',auth[_0x6bed('0x6')](),controller[_0x6bed('0xd')]);router[_0x6bed('0x4')]('/mail/queues',auth[_0x6bed('0x6')](),controller[_0x6bed('0xe')]);router[_0x6bed('0x4')](_0x6bed('0xf'),auth[_0x6bed('0x6')](),controller[_0x6bed('0x10')]);router[_0x6bed('0x4')](_0x6bed('0x11'),auth['isAuthenticated'](),controller['openchannelQueues']);router['get'](_0x6bed('0x12'),auth[_0x6bed('0x6')](),controller['smsQueues']);router[_0x6bed('0x4')]('/whatsapp/queues',auth[_0x6bed('0x6')](),controller[_0x6bed('0x13')]);router[_0x6bed('0x4')](_0x6bed('0x14'),auth[_0x6bed('0x6')](),controller['faxQueues']);router['get'](_0x6bed('0x15'),auth[_0x6bed('0x6')](),controller[_0x6bed('0x16')]);router['get']('/voice/queues/channels',auth[_0x6bed('0x6')](),controller[_0x6bed('0x17')]);router['get'](_0x6bed('0x18'),auth[_0x6bed('0x6')](),controller[_0x6bed('0x19')]);router[_0x6bed('0x4')](_0x6bed('0x1a'),auth['isAuthenticated'](),controller[_0x6bed('0x1b')]);router[_0x6bed('0x4')](_0x6bed('0x1c'),auth[_0x6bed('0x6')](),controller[_0x6bed('0x1d')]);router[_0x6bed('0x4')](_0x6bed('0x1e'),auth[_0x6bed('0x6')](),controller[_0x6bed('0x1f')]);router[_0x6bed('0x20')](_0x6bed('0x1e'),auth['isAuthenticated'](),controller[_0x6bed('0x21')]);router[_0x6bed('0x4')](_0x6bed('0x22'),auth[_0x6bed('0x6')](),controller[_0x6bed('0x23')]);router['get']('/outbound/channels',auth['isAuthenticated'](),controller[_0x6bed('0x24')]);router['get']('/agents',auth['isAuthenticated'](),controller['agents']);router['put'](_0x6bed('0x25'),auth[_0x6bed('0x6')](),controller[_0x6bed('0x26')]);router['get'](_0x6bed('0x27'),auth[_0x6bed('0x6')](),controller[_0x6bed('0x28')]);router[_0x6bed('0x4')]('/trunks',auth[_0x6bed('0x6')](),controller[_0x6bed('0x29')]);router[_0x6bed('0x4')](_0x6bed('0x2a'),auth['isAuthenticated'](),controller[_0x6bed('0x2b')]);router[_0x6bed('0x4')](_0x6bed('0x2c'),auth[_0x6bed('0x6')](),controller[_0x6bed('0x2d')]);router[_0x6bed('0x4')](_0x6bed('0x2e'),auth[_0x6bed('0x6')](),controller[_0x6bed('0x2f')]);router[_0x6bed('0x4')](_0x6bed('0x30'),auth[_0x6bed('0x6')](),controller[_0x6bed('0x31')]);router['get']('/openchannel/queues/waitinginteractions',auth[_0x6bed('0x6')](),controller[_0x6bed('0x32')]);router[_0x6bed('0x4')]('/openchannel/queues/:id/waitinginteractions',auth[_0x6bed('0x6')](),controller[_0x6bed('0x33')]);router['get'](_0x6bed('0x34'),auth['isAuthenticated'](),controller[_0x6bed('0x35')]);router[_0x6bed('0x4')](_0x6bed('0x36'),auth['isAuthenticated'](),controller[_0x6bed('0x37')]);router[_0x6bed('0x4')]('/fax/queues/waitinginteractions',auth[_0x6bed('0x6')](),controller[_0x6bed('0x38')]);router[_0x6bed('0x39')](_0x6bed('0x3a'),auth['isAuthenticated'](),controller[_0x6bed('0x3b')]('mail'));router['get'](_0x6bed('0x3c'),auth['isAuthenticated'](),controller[_0x6bed('0x3d')]);router[_0x6bed('0x39')](_0x6bed('0x3e'),auth[_0x6bed('0x6')](),controller[_0x6bed('0x3b')](_0x6bed('0x3f')));router['get'](_0x6bed('0x40'),auth[_0x6bed('0x6')](),controller[_0x6bed('0x41')]);router[_0x6bed('0x39')](_0x6bed('0x42'),auth[_0x6bed('0x6')](),controller[_0x6bed('0x3b')](_0x6bed('0x43')));router['get'](_0x6bed('0x44'),auth[_0x6bed('0x6')](),controller[_0x6bed('0x45')]);router['post']('/openchannel/queues/:id/notify',auth['isAuthenticated'](),controller[_0x6bed('0x3b')]('openchannel'));router[_0x6bed('0x4')](_0x6bed('0x46'),auth[_0x6bed('0x6')](),controller['showOpenchannelQueues']);router[_0x6bed('0x39')](_0x6bed('0x47'),auth[_0x6bed('0x6')](),controller[_0x6bed('0x3b')](_0x6bed('0x48')));router[_0x6bed('0x39')](_0x6bed('0x49'),auth[_0x6bed('0x6')](),controller[_0x6bed('0x3b')](_0x6bed('0x4a')));router[_0x6bed('0x4')](_0x6bed('0x4b'),auth[_0x6bed('0x6')](),controller[_0x6bed('0x4c')]);router[_0x6bed('0x4')](_0x6bed('0x4d'),auth[_0x6bed('0x6')](),controller['showWhatsappQueues']);router[_0x6bed('0x39')](_0x6bed('0x4e'),auth[_0x6bed('0x6')](),controller[_0x6bed('0x4f')]);module['exports']=router;
\ No newline at end of file
+var _0x0171=['/openchannel/queues','openchannelQueues','/sms/queues','smsQueues','/whatsapp/queues','whatsappQueues','/fax/queues','/voice/queues/preview/:id','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','/voice/queues/:id','showVoiceQueues','put','updateVoiceQueue','outbound','outboundChannels','/agents','agents','/agents/:id/capacity','/telephones','telephones','/trunks','trunks','/campaigns','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','smsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','post','/mail/queues/:id/notify','queueNotify','mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','/chat/queues/:id','showChatQueues','/fax/queues/:id/notify','showFaxQueues','/openchannel/queues/:id/notify','openchannel','showOpenchannelQueues','/sms/queues/:id/notify','/whatsapp/queues/:id/notify','whatsapp','showSmsQueues','showWhatsappQueues','/agents/:id/notify','agentNotify','exports','multer','util','path','express','../../components/auth/service','./rpc.controller','get','/voice/channels','voiceChannels','/voice/channels/:uniqueid/mixmonitor','isAuthenticated','voiceChannelStopMixMonitor','/voice/queues','/chat/queues','chatQueues','/mail/queues','mailQueues','/mail/accounts','mailAccounts'];(function(_0x160611,_0x4556e6){var _0x39bbb7=function(_0x5a67f3){while(--_0x5a67f3){_0x160611['push'](_0x160611['shift']());}};_0x39bbb7(++_0x4556e6);}(_0x0171,0x191));var _0x1017=function(_0x4a3fd4,_0x596e1e){_0x4a3fd4=_0x4a3fd4-0x0;var _0x356102=_0x0171[_0x4a3fd4];return _0x356102;};'use strict';var multer=require(_0x1017('0x0'));var util=require(_0x1017('0x1'));var path=require(_0x1017('0x2'));var express=require(_0x1017('0x3'));var router=express['Router']();var auth=require(_0x1017('0x4'));var controller=require(_0x1017('0x5'));router[_0x1017('0x6')](_0x1017('0x7'),auth['isAuthenticated'](),controller[_0x1017('0x8')]);router['get'](_0x1017('0x9'),auth[_0x1017('0xa')](),controller['voiceChannelMixMonitor']);router[_0x1017('0x6')]('/voice/channels/:uniqueid/stopmixmonitor',auth[_0x1017('0xa')](),controller[_0x1017('0xb')]);router[_0x1017('0x6')](_0x1017('0xc'),auth[_0x1017('0xa')](),controller['voiceQueues']);router[_0x1017('0x6')](_0x1017('0xd'),auth[_0x1017('0xa')](),controller[_0x1017('0xe')]);router[_0x1017('0x6')](_0x1017('0xf'),auth['isAuthenticated'](),controller[_0x1017('0x10')]);router['get'](_0x1017('0x11'),auth[_0x1017('0xa')](),controller[_0x1017('0x12')]);router['get'](_0x1017('0x13'),auth['isAuthenticated'](),controller[_0x1017('0x14')]);router[_0x1017('0x6')](_0x1017('0x15'),auth['isAuthenticated'](),controller[_0x1017('0x16')]);router['get'](_0x1017('0x17'),auth[_0x1017('0xa')](),controller[_0x1017('0x18')]);router[_0x1017('0x6')](_0x1017('0x19'),auth[_0x1017('0xa')](),controller['faxQueues']);router[_0x1017('0x6')](_0x1017('0x1a'),auth[_0x1017('0xa')](),controller[_0x1017('0x1b')]);router[_0x1017('0x6')](_0x1017('0x1c'),auth['isAuthenticated'](),controller[_0x1017('0x1d')]);router[_0x1017('0x6')](_0x1017('0x1e'),auth[_0x1017('0xa')](),controller[_0x1017('0x1f')]);router[_0x1017('0x6')](_0x1017('0x20'),auth['isAuthenticated'](),controller[_0x1017('0x21')]);router['get'](_0x1017('0x22'),auth['isAuthenticated'](),controller[_0x1017('0x23')]);router[_0x1017('0x6')](_0x1017('0x24'),auth['isAuthenticated'](),controller[_0x1017('0x25')]);router[_0x1017('0x26')]('/voice/queues/:id',auth[_0x1017('0xa')](),controller[_0x1017('0x27')]);router[_0x1017('0x6')]('/outbound',auth[_0x1017('0xa')](),controller[_0x1017('0x28')]);router[_0x1017('0x6')]('/outbound/channels',auth['isAuthenticated'](),controller[_0x1017('0x29')]);router['get'](_0x1017('0x2a'),auth[_0x1017('0xa')](),controller[_0x1017('0x2b')]);router[_0x1017('0x26')](_0x1017('0x2c'),auth[_0x1017('0xa')](),controller['agentCapacity']);router[_0x1017('0x6')](_0x1017('0x2d'),auth[_0x1017('0xa')](),controller[_0x1017('0x2e')]);router[_0x1017('0x6')](_0x1017('0x2f'),auth[_0x1017('0xa')](),controller[_0x1017('0x30')]);router['get'](_0x1017('0x31'),auth[_0x1017('0xa')](),controller['campaigns']);router[_0x1017('0x6')]('/fax/accounts',auth['isAuthenticated'](),controller[_0x1017('0x32')]);router[_0x1017('0x6')](_0x1017('0x33'),auth[_0x1017('0xa')](),controller[_0x1017('0x34')]);router[_0x1017('0x6')](_0x1017('0x35'),auth[_0x1017('0xa')](),controller[_0x1017('0x36')]);router[_0x1017('0x6')](_0x1017('0x37'),auth[_0x1017('0xa')](),controller[_0x1017('0x38')]);router[_0x1017('0x6')](_0x1017('0x39'),auth[_0x1017('0xa')](),controller[_0x1017('0x3a')]);router['get']('/sms/queues/waitinginteractions',auth[_0x1017('0xa')](),controller[_0x1017('0x3b')]);router[_0x1017('0x6')]('/whatsapp/queues/waitinginteractions',auth[_0x1017('0xa')](),controller[_0x1017('0x3c')]);router[_0x1017('0x6')](_0x1017('0x3d'),auth[_0x1017('0xa')](),controller['faxQueuesWaitingInteractions']);router[_0x1017('0x3e')](_0x1017('0x3f'),auth[_0x1017('0xa')](),controller[_0x1017('0x40')](_0x1017('0x41')));router[_0x1017('0x6')](_0x1017('0x42'),auth[_0x1017('0xa')](),controller[_0x1017('0x43')]);router[_0x1017('0x3e')](_0x1017('0x44'),auth['isAuthenticated'](),controller[_0x1017('0x40')]('chat'));router['get'](_0x1017('0x45'),auth[_0x1017('0xa')](),controller[_0x1017('0x46')]);router['post'](_0x1017('0x47'),auth[_0x1017('0xa')](),controller[_0x1017('0x40')]('fax'));router['get']('/fax/queues/:id',auth[_0x1017('0xa')](),controller[_0x1017('0x48')]);router[_0x1017('0x3e')](_0x1017('0x49'),auth[_0x1017('0xa')](),controller['queueNotify'](_0x1017('0x4a')));router['get']('/openchannel/queues/:id',auth[_0x1017('0xa')](),controller[_0x1017('0x4b')]);router['post'](_0x1017('0x4c'),auth[_0x1017('0xa')](),controller[_0x1017('0x40')]('sms'));router['post'](_0x1017('0x4d'),auth[_0x1017('0xa')](),controller[_0x1017('0x40')](_0x1017('0x4e')));router[_0x1017('0x6')]('/sms/queues/:id',auth[_0x1017('0xa')](),controller[_0x1017('0x4f')]);router[_0x1017('0x6')]('/whatsapp/queues/:id',auth['isAuthenticated'](),controller[_0x1017('0x50')]);router['post'](_0x1017('0x51'),auth[_0x1017('0xa')](),controller[_0x1017('0x52')]);module[_0x1017('0x53')]=router;
\ No newline at end of file
index e1416bc..a7ff7b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f47=['voiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','Outbound','outboundChannels','OutboundChannels','agents','Agents','agentCapacity','interaction','user','hasOwnProperty','MemberReport','INTERACTION','length','format','YYYY-MM-DD\x20HH:mm:ss','interface','agent','internal','telephones','trunks','Trunks','Campaigns','showChatQueues','ChatQueues','MailQueues','showMailQueues','mailAccounts','OpenchannelQueues','showOpenchannelQueues','smsQueues','SmsQueues','WhatsappQueues','showWhatsappQueues','faxQueues','FaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','type','filter','map','queue_id','uniq','value','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','chat','Website','Account','Queue','findOne','\x20Queue\x20not\x20found','Message','Interaction','\x20Message\x20not\x20found','update','queue','MessageId','InteractionId','From','QueueId','Start','queueTransferTimeout','*,*,*,*','channel','Channel\x20field\x20is\x20mandatory','User','create','moment','lodash','../../mysqldb','api','client','http','request','then','error','code','message','result','catch','status','sendStatus','stack','name','send','isNil','rows','find','voiceChannels','VoiceChannels','query','voiceChannelMixMonitor','merge','params','VoiceChannelStopMixMonitor','VoiceQueues','showVoiceQueues','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel'];(function(_0x3b2f1e,_0xfb5e77){var _0x3b5fbd=function(_0x5346d9){while(--_0x5346d9){_0x3b2f1e['push'](_0x3b2f1e['shift']());}};_0x3b5fbd(++_0xfb5e77);}(_0x6f47,0xc7));var _0x76f4=function(_0x432fca,_0xb0b1b5){_0x432fca=_0x432fca-0x0;var _0x3adba4=_0x6f47[_0x432fca];return _0x3adba4;};'use strict';var BPromise=require('bluebird');var moment=require(_0x76f4('0x0'));var _=require(_0x76f4('0x1'));var util=require('util');var db=require(_0x76f4('0x2'))['db'];var logger=require('../../config/logger')(_0x76f4('0x3'));var jayson=require('jayson/promise');var amiClient=jayson[_0x76f4('0x4')][_0x76f4('0x5')]({'port':0x232a});var mailClient=jayson[_0x76f4('0x4')][_0x76f4('0x5')]({'port':0x232b});var routingClient=jayson['client'][_0x76f4('0x5')]({'port':0x232c});function respondWithRpcPromise(_0xfc2405,_0x2176a7,_0x497f99){return new BPromise(function(_0x1a3172,_0x25656d){var _0x65d2c7=_0x497f99?_0x497f99:amiClient;return _0x65d2c7[_0x76f4('0x6')](_0xfc2405,_0x2176a7)[_0x76f4('0x7')](function(_0x4c6b5c){if(_0x4c6b5c['error']){if(_0x4c6b5c[_0x76f4('0x8')][_0x76f4('0x9')]===0x1f4){return _0x25656d(_0x4c6b5c['error']['message']);}return _0x1a3172(_0x4c6b5c[_0x76f4('0x8')][_0x76f4('0xa')]);}else{_0x1a3172(_0x4c6b5c[_0x76f4('0xb')]);}})[_0x76f4('0xc')](function(_0x1aee7f){_0x25656d(_0x1aee7f);});});}function respondWithResult(_0xafd21e,_0xf7e347){_0xf7e347=_0xf7e347||0xc8;return function(_0x3ec740){if(_0x3ec740){return _0xafd21e[_0x76f4('0xd')](_0xf7e347)['json'](_0x3ec740);}return _0xafd21e[_0x76f4('0xe')](0x194);};}function handleError(_0x30dabf,_0x5da1ff){_0x5da1ff=_0x5da1ff||0x1f4;return function(_0x4b6021){logger['error'](_0x4b6021[_0x76f4('0xf')]);if(_0x4b6021[_0x76f4('0x10')]){delete _0x4b6021[_0x76f4('0x10')];}_0x30dabf[_0x76f4('0xd')](_0x5da1ff)[_0x76f4('0x11')](_0x4b6021);};}function findById(_0x2b5e23){return function(_0x46ba51){if(!_[_0x76f4('0x12')](_0x2b5e23)&&!_[_0x76f4('0x12')](_0x46ba51)&&!_[_0x76f4('0x12')](_0x46ba51[_0x76f4('0x13')])){return _[_0x76f4('0x14')](_0x46ba51[_0x76f4('0x13')],function(_0x38450e){return _0x38450e['id']==_0x2b5e23;});}return null;};}exports[_0x76f4('0x15')]=function(_0x397360,_0xfedbe4){return respondWithRpcPromise(_0x76f4('0x16'),_0x397360[_0x76f4('0x17')])[_0x76f4('0x7')](respondWithResult(_0xfedbe4,null))[_0x76f4('0xc')](handleError(_0xfedbe4,null));};exports[_0x76f4('0x18')]=function(_0x5bf3d5,_0x262937){return respondWithRpcPromise('VoiceChannelMixMonitor',_[_0x76f4('0x19')](_0x5bf3d5[_0x76f4('0x17')],_0x5bf3d5[_0x76f4('0x1a')]))['then'](respondWithResult(_0x262937,null))['catch'](handleError(_0x262937,null));};exports['voiceChannelStopMixMonitor']=function(_0x465240,_0x681d67){return respondWithRpcPromise(_0x76f4('0x1b'),_[_0x76f4('0x19')](_0x465240[_0x76f4('0x17')],_0x465240[_0x76f4('0x1a')]))[_0x76f4('0x7')](respondWithResult(_0x681d67,null))['catch'](handleError(_0x681d67,null));};exports['voiceQueues']=function(_0x3794fa,_0x497913){return respondWithRpcPromise(_0x76f4('0x1c'),_0x3794fa['query'])['then'](respondWithResult(_0x497913,null))['catch'](handleError(_0x497913,null));};exports[_0x76f4('0x1d')]=function(_0x38300d,_0xd368a2){return respondWithRpcPromise(_0x76f4('0x1c'),_0x38300d[_0x76f4('0x17')])[_0x76f4('0x7')](findById(_0x38300d['params']['id']))[_0x76f4('0x7')](respondWithResult(_0xd368a2,null))['catch'](handleError(_0xd368a2,null));};exports['updateVoiceQueue']=function(_0x5b3f07,_0x10ddb4){return respondWithRpcPromise(_0x76f4('0x1e'),_[_0x76f4('0x19')](_0x5b3f07[_0x76f4('0x1f')],_0x5b3f07['params']))[_0x76f4('0x7')](respondWithResult(_0x10ddb4,null))['catch'](handleError(_0x10ddb4,null));};exports[_0x76f4('0x20')]=function(_0x3c7513,_0x43ac4a){return respondWithRpcPromise(_0x76f4('0x21'),_[_0x76f4('0x19')](_0x3c7513['query'],_0x3c7513['params']))[_0x76f4('0x7')](respondWithResult(_0x43ac4a,null))[_0x76f4('0xc')](handleError(_0x43ac4a,null));};exports[_0x76f4('0x22')]=function(_0x281db6,_0x1f2adf){return respondWithRpcPromise(_0x76f4('0x23'),_0x281db6[_0x76f4('0x17')])[_0x76f4('0x7')](respondWithResult(_0x1f2adf,null))[_0x76f4('0xc')](handleError(_0x1f2adf,null));};exports[_0x76f4('0x24')]=function(_0x308af2,_0x2527a6){return respondWithRpcPromise('VoiceQueuesChannel',_['merge'](_0x308af2['query'],_0x308af2['params']))[_0x76f4('0x7')](respondWithResult(_0x2527a6,null))[_0x76f4('0xc')](handleError(_0x2527a6,null));};exports[_0x76f4('0x25')]=function(_0x456b1f,_0x26fdd6){return respondWithRpcPromise('VoiceQueuesChannelHangup',_[_0x76f4('0x19')](_0x456b1f[_0x76f4('0x17')],_0x456b1f[_0x76f4('0x1a')]))[_0x76f4('0x7')](respondWithResult(_0x26fdd6,null))[_0x76f4('0xc')](handleError(_0x26fdd6,null));};exports[_0x76f4('0x26')]=function(_0xb806cc,_0x28d9d6){return respondWithRpcPromise(_0x76f4('0x27'),_[_0x76f4('0x19')](_0xb806cc[_0x76f4('0x17')],_0xb806cc[_0x76f4('0x1a')]))[_0x76f4('0x7')](respondWithResult(_0x28d9d6,null))[_0x76f4('0xc')](handleError(_0x28d9d6,null));};exports[_0x76f4('0x28')]=function(_0x88506b,_0x3308e3){return respondWithRpcPromise(_0x76f4('0x29'),_0x88506b['query'])[_0x76f4('0x7')](respondWithResult(_0x3308e3,null))[_0x76f4('0xc')](handleError(_0x3308e3,null));};exports[_0x76f4('0x2a')]=function(_0x589637,_0x597e83){return respondWithRpcPromise(_0x76f4('0x2b'),_0x589637['query'])[_0x76f4('0x7')](respondWithResult(_0x597e83,null))['catch'](handleError(_0x597e83,null));};exports[_0x76f4('0x2c')]=function(_0x16f36d,_0x312243){var _0x378675;return respondWithRpcPromise(_0x76f4('0x2d'),_0x16f36d[_0x76f4('0x17')])[_0x76f4('0x7')](function(_0x109ad9){_0x378675=_0x109ad9;return respondWithRpcPromise(_0x76f4('0x2d'),_0x16f36d[_0x76f4('0x17')],routingClient);})['then'](function(_0x5b8d2d){return _[_0x76f4('0x19')]({},_0x5b8d2d,_0x378675);})[_0x76f4('0x7')](respondWithResult(_0x312243,null))[_0x76f4('0xc')](handleError(_0x312243,null));};exports[_0x76f4('0x2e')]=function(_0x2b7dc8,_0x2d6068){if(_0x2b7dc8[_0x76f4('0x1f')]&&_0x2b7dc8[_0x76f4('0x1f')][_0x76f4('0x2f')]&&_0x2b7dc8['user']&&_0x2b7dc8[_0x76f4('0x30')][_0x76f4('0x10')]){for(var _0x4f0d1a in _0x2b7dc8['body'][_0x76f4('0x2f')]){if(_0x2b7dc8[_0x76f4('0x1f')][_0x76f4('0x2f')][_0x76f4('0x31')](_0x4f0d1a)){db[_0x76f4('0x32')]['findAll']({'where':{'channel':_0x4f0d1a,'membername':_0x2b7dc8[_0x76f4('0x30')][_0x76f4('0x10')],'type':_0x76f4('0x33'),'exitAt':null,'uniqueid':_0x2b7dc8[_0x76f4('0x1f')][_0x76f4('0x2f')][_0x4f0d1a]&&_0x2b7dc8[_0x76f4('0x1f')]['interaction'][_0x4f0d1a][_0x76f4('0x34')]?{'$notIn':_0x2b7dc8[_0x76f4('0x1f')][_0x76f4('0x2f')][_0x4f0d1a]}:{'$ne':null}}})['then'](function(_0x571261){var _0x11ea58=moment()[_0x76f4('0x35')](_0x76f4('0x36'));for(var _0x2bea6d=0x0,_0x36fa03=_0x571261['length'];_0x2bea6d<_0x36fa03;_0x2bea6d+=0x1){_0x571261[_0x2bea6d]['updateAttributes']({'exitAt':_0x11ea58});}});for(var _0x8e5b60=0x0;_0x8e5b60<_0x2b7dc8['body'][_0x76f4('0x2f')][_0x4f0d1a][_0x76f4('0x34')];_0x8e5b60+=0x1){db['MemberReport']['findOrCreate']({'where':{'channel':_0x4f0d1a,'membername':_0x2b7dc8[_0x76f4('0x30')][_0x76f4('0x10')],'type':_0x76f4('0x33'),'uniqueid':_0x2b7dc8[_0x76f4('0x1f')]['interaction'][_0x4f0d1a][_0x8e5b60],'exitAt':null},'defaults':{'channel':_0x4f0d1a,'membername':_0x2b7dc8[_0x76f4('0x30')][_0x76f4('0x10')],'interface':_[_0x76f4('0x12')](_0x2b7dc8['user'][_0x76f4('0x37')])?util[_0x76f4('0x35')]('SIP/%s',_0x2b7dc8['user'][_0x76f4('0x10')]):_0x2b7dc8[_0x76f4('0x30')][_0x76f4('0x37')],'type':_0x76f4('0x33'),'enterAt':moment()[_0x76f4('0x35')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x76f4('0x38'),'internal':_0x2b7dc8['user'][_0x76f4('0x39')],'uniqueid':_0x2b7dc8[_0x76f4('0x1f')][_0x76f4('0x2f')][_0x4f0d1a][_0x8e5b60]}});}}}}return respondWithRpcPromise('AgentCapacity',{'id':_0x2b7dc8[_0x76f4('0x1a')]['id'],'capacity':_0x2b7dc8[_0x76f4('0x1f')]['capacity']},routingClient)[_0x76f4('0x7')](respondWithResult(_0x2d6068,null))[_0x76f4('0xc')](handleError(_0x2d6068,null));};exports[_0x76f4('0x3a')]=function(_0x1c658c,_0x40ff20){return respondWithRpcPromise('Telephones',_0x1c658c[_0x76f4('0x17')])['then'](respondWithResult(_0x40ff20,null))[_0x76f4('0xc')](handleError(_0x40ff20,null));};exports[_0x76f4('0x3b')]=function(_0x154ba,_0x5121ec){return respondWithRpcPromise(_0x76f4('0x3c'),_0x154ba[_0x76f4('0x17')])[_0x76f4('0x7')](respondWithResult(_0x5121ec,null))[_0x76f4('0xc')](handleError(_0x5121ec,null));};exports['campaigns']=function(_0x2028e9,_0xf11e07){return respondWithRpcPromise(_0x76f4('0x3d'),_0x2028e9[_0x76f4('0x17')])['then'](respondWithResult(_0xf11e07,null))[_0x76f4('0xc')](handleError(_0xf11e07,null));};exports['chatQueues']=function(_0x129048,_0x190c8d){return respondWithRpcPromise('ChatQueues',_0x129048['query'],routingClient)[_0x76f4('0x7')](respondWithResult(_0x190c8d,null))[_0x76f4('0xc')](handleError(_0x190c8d,null));};exports[_0x76f4('0x3e')]=function(_0x596b51,_0x27ba06){return respondWithRpcPromise(_0x76f4('0x3f'),_0x596b51[_0x76f4('0x17')],routingClient)['then'](findById(_0x596b51['params']['id']))[_0x76f4('0x7')](respondWithResult(_0x27ba06,null))[_0x76f4('0xc')](handleError(_0x27ba06,null));};exports['mailQueues']=function(_0x490ced,_0x3f1840){return respondWithRpcPromise(_0x76f4('0x40'),_0x490ced[_0x76f4('0x17')],routingClient)[_0x76f4('0x7')](respondWithResult(_0x3f1840,null))[_0x76f4('0xc')](handleError(_0x3f1840,null));};exports[_0x76f4('0x41')]=function(_0x97be11,_0x36a52a){return respondWithRpcPromise(_0x76f4('0x40'),_0x97be11['query'],routingClient)['then'](findById(_0x97be11['params']['id']))[_0x76f4('0x7')](respondWithResult(_0x36a52a,null))[_0x76f4('0xc')](handleError(_0x36a52a,null));};exports[_0x76f4('0x42')]=function(_0x3b6c16,_0x4c9d64){return respondWithRpcPromise('MailAccounts',_0x3b6c16[_0x76f4('0x17')],mailClient)['then'](respondWithResult(_0x4c9d64,null))[_0x76f4('0xc')](handleError(_0x4c9d64,null));};exports['openchannelQueues']=function(_0x4285dd,_0x25e510){return respondWithRpcPromise(_0x76f4('0x43'),_0x4285dd[_0x76f4('0x17')],routingClient)['then'](respondWithResult(_0x25e510,null))[_0x76f4('0xc')](handleError(_0x25e510,null));};exports[_0x76f4('0x44')]=function(_0x22a0cc,_0x40c170){return respondWithRpcPromise(_0x76f4('0x43'),_0x22a0cc[_0x76f4('0x17')],routingClient)[_0x76f4('0x7')](findById(_0x22a0cc['params']['id']))[_0x76f4('0x7')](respondWithResult(_0x40c170,null))[_0x76f4('0xc')](handleError(_0x40c170,null));};exports[_0x76f4('0x45')]=function(_0x320a87,_0x28cf4c){return respondWithRpcPromise(_0x76f4('0x46'),_0x320a87[_0x76f4('0x17')],routingClient)[_0x76f4('0x7')](respondWithResult(_0x28cf4c,null))['catch'](handleError(_0x28cf4c,null));};exports['showSmsQueues']=function(_0xa3091a,_0x617924){return respondWithRpcPromise(_0x76f4('0x46'),_0xa3091a['query'],routingClient)[_0x76f4('0x7')](findById(_0xa3091a['params']['id']))[_0x76f4('0x7')](respondWithResult(_0x617924,null))[_0x76f4('0xc')](handleError(_0x617924,null));};exports['whatsappQueues']=function(_0xda0ac2,_0x37b7f7){return respondWithRpcPromise(_0x76f4('0x47'),_0xda0ac2[_0x76f4('0x17')],routingClient)[_0x76f4('0x7')](respondWithResult(_0x37b7f7,null))[_0x76f4('0xc')](handleError(_0x37b7f7,null));};exports[_0x76f4('0x48')]=function(_0x410d83,_0x1f7257){return respondWithRpcPromise('WhatsappQueues',_0x410d83[_0x76f4('0x17')],routingClient)['then'](findById(_0x410d83[_0x76f4('0x1a')]['id']))[_0x76f4('0x7')](respondWithResult(_0x1f7257,null))[_0x76f4('0xc')](handleError(_0x1f7257,null));};exports[_0x76f4('0x49')]=function(_0xfbb52c,_0x8de630){return respondWithRpcPromise(_0x76f4('0x4a'),_0xfbb52c[_0x76f4('0x17')],routingClient)[_0x76f4('0x7')](respondWithResult(_0x8de630,null))[_0x76f4('0xc')](handleError(_0x8de630,null));};exports['showFaxQueues']=function(_0x30f3de,_0x6f874d){return respondWithRpcPromise('FaxQueues',_0x30f3de[_0x76f4('0x17')],routingClient)[_0x76f4('0x7')](findById(_0x30f3de[_0x76f4('0x1a')]['id']))['then'](respondWithResult(_0x6f874d,null))[_0x76f4('0xc')](handleError(_0x6f874d,null));};exports[_0x76f4('0x4b')]=function(_0x3e829f,_0x52610a){return respondWithRpcPromise(_0x76f4('0x4c'),_0x3e829f[_0x76f4('0x17')])[_0x76f4('0x7')](respondWithResult(_0x52610a,null))[_0x76f4('0xc')](handleError(_0x52610a,null));};exports[_0x76f4('0x4d')]=function(_0x10ee07,_0x19b99c){return respondWithRpcPromise(_0x76f4('0x4e'),_0x10ee07[_0x76f4('0x17')],routingClient)['then'](respondWithResult(_0x19b99c,null))[_0x76f4('0xc')](handleError(_0x19b99c,null));};exports[_0x76f4('0x4f')]=function(_0x19fdc3,_0x39c9af){return respondWithRpcPromise('MailQueuesWaitingInteractions',_0x19fdc3[_0x76f4('0x17')],routingClient)[_0x76f4('0x7')](respondWithResult(_0x39c9af,null))[_0x76f4('0xc')](handleError(_0x39c9af,null));};exports['openchannelQueuesWaitingInteractions']=function(_0x43b44d,_0x1375d5){return respondWithRpcPromise(_0x76f4('0x50'),_0x43b44d[_0x76f4('0x17')],routingClient)[_0x76f4('0x7')](respondWithResult(_0x1375d5,null))['catch'](handleError(_0x1375d5,null));};exports[_0x76f4('0x51')]=function(_0x4dd41f,_0x2b8467){return respondWithRpcPromise(_0x76f4('0x50'),_0x4dd41f['query'],routingClient)['then'](function(_0x58251e){if(_0x4dd41f[_0x76f4('0x17')][_0x76f4('0x52')]!==undefined){var _0x1e7b6=_(_0x58251e[_0x76f4('0x13')])[_0x76f4('0x53')]([_0x4dd41f[_0x76f4('0x17')]['type'],_0x4dd41f[_0x76f4('0x1a')]['id']])[_0x76f4('0x54')](_0x76f4('0x55'))[_0x76f4('0x56')]()[_0x76f4('0x57')]();return _0x58251e[_0x76f4('0x13')][_0x76f4('0x53')](function(_0x202fc8){return _0x1e7b6['indexOf'](_0x202fc8[_0x76f4('0x55')])>-0x1;});}else{return _0x58251e['rows'][_0x76f4('0x53')](function(_0x30358a){return _0x30358a[_0x76f4('0x55')]===parseInt(_0x4dd41f[_0x76f4('0x1a')]['id']);});}})[_0x76f4('0x7')](respondWithResult(_0x2b8467,null))[_0x76f4('0xc')](handleError(_0x2b8467,null));};exports[_0x76f4('0x58')]=function(_0x2a0491,_0x54729b){return respondWithRpcPromise(_0x76f4('0x59'),_0x2a0491['query'],routingClient)['then'](respondWithResult(_0x54729b,null))['catch'](handleError(_0x54729b,null));};exports[_0x76f4('0x5a')]=function(_0x402209,_0x279040){return respondWithRpcPromise(_0x76f4('0x5b'),_0x402209['query'],routingClient)[_0x76f4('0x7')](respondWithResult(_0x279040,null))[_0x76f4('0xc')](handleError(_0x279040,null));};exports[_0x76f4('0x5c')]=function(_0x5f5c24,_0x12f16e){return respondWithRpcPromise(_0x76f4('0x5d'),_0x5f5c24[_0x76f4('0x17')],routingClient)[_0x76f4('0x7')](respondWithResult(_0x12f16e,null))[_0x76f4('0xc')](handleError(_0x12f16e,null));};exports[_0x76f4('0x5e')]=function(_0x3b5e15){return function(_0x4b562c,_0x2e991e){var _0xa49e2a,_0x4c7307;var _0x3bc914=_[_0x76f4('0x5f')](_0x3b5e15);var _0x5e6393=_0x3b5e15===_0x76f4('0x60')?_0x76f4('0x61'):_0x76f4('0x62');return db[_0x3bc914+_0x76f4('0x63')][_0x76f4('0x64')]({'raw':!![],'where':{'id':_0x4b562c[_0x76f4('0x1a')]['id']}})['then'](function(_0x2dac86){if(_[_0x76f4('0x12')](_0x2dac86)){throw new Error(_0x3bc914+_0x76f4('0x65'));}_0xa49e2a=_0x2dac86;return db[_0x3bc914+_0x76f4('0x66')]['findOne']({'where':{'id':_0x4b562c[_0x76f4('0x1f')]['messageId']},'include':[{'model':db[_0x3bc914+_0x76f4('0x67')],'as':'Interaction'},{'model':db[_0x3bc914+_0x5e6393],'as':_0x76f4('0x62')}]});})[_0x76f4('0x7')](function(_0x59e9ed){if(_['isNil'](_0x59e9ed)){throw new Error(_0x3bc914+_0x76f4('0x68'));}_0x4c7307=_0x59e9ed;return _0x59e9ed[_0x76f4('0x69')]({'read':0x0,'readAt':null,'UserId':null});})[_0x76f4('0x7')](function(){var _0x4a2969={'uniqueid':_0x3b5e15+'.'+_0x4c7307['id']+'.'+_0x4c7307['Interaction']['id'],'FromUserId':_0x4b562c[_0x76f4('0x30')]['id'],'type':_0x76f4('0x6a')};_0x4a2969[_0x3bc914+_0x76f4('0x6b')]=_0x4c7307['id'];_0x4a2969[_0x3bc914+_0x76f4('0x6c')]=_0x4c7307[_0x76f4('0x67')]['id'];_0x4a2969[_0x76f4('0x6d')+_0x3bc914+_0x5e6393+'Id']=_0x4c7307[_0x76f4('0x62')]['id'];_0x4a2969['To'+_0x3bc914+_0x76f4('0x6e')]=_0xa49e2a['id'];return db[_0x3bc914+'TransferReport']['create'](_0x4a2969);})[_0x76f4('0x7')](function(){return respondWithRpcPromise(_0x76f4('0x6f'),{'channel':_0x3b5e15,'interaction':_0x4c7307[_0x76f4('0x67')],'message':_0x4c7307,'account':_0x4c7307['Account'],'applications':[{'id':0x0,'priority':0x1,'app':_0x76f4('0x6a'),'appdata':_0xa49e2a[_0x76f4('0x10')]+','+(_0x4c7307[_0x76f4('0x62')][_0x76f4('0x70')]||0x12c),'interval':_0x76f4('0x71')}]},routingClient);})[_0x76f4('0x7')](respondWithResult(_0x2e991e,null))[_0x76f4('0xc')](handleError(_0x2e991e,null));};};exports['agentNotify']=function(_0x13cf2a,_0x316f86){var _0x3e537b,_0x53252e;if(_[_0x76f4('0x12')](_0x13cf2a[_0x76f4('0x1f')][_0x76f4('0x72')])){throw new Error(_0x76f4('0x73'));}var _0x5080a9=_0x13cf2a[_0x76f4('0x1f')]['channel'];var _0xc80d4c=_['capitalize'](_0x5080a9);var _0x238df3=_0x5080a9===_0x76f4('0x60')?_0x76f4('0x61'):'Account';return db[_0x76f4('0x74')][_0x76f4('0x64')]({'raw':!![],'where':{'id':_0x13cf2a[_0x76f4('0x1a')]['id'],'role':'agent'}})[_0x76f4('0x7')](function(_0x460867){if(_['isNil'](_0x460867)){throw new Error('Agent\x20not\x20found');}_0x3e537b=_0x460867;return db[_0xc80d4c+_0x76f4('0x66')][_0x76f4('0x64')]({'where':{'id':_0x13cf2a['body']['messageId']},'include':[{'model':db[_0xc80d4c+_0x76f4('0x67')],'as':_0x76f4('0x67')},{'model':db[_0xc80d4c+_0x238df3],'as':'Account'}]});})[_0x76f4('0x7')](function(_0x54ae6c){if(_['isNil'](_0x54ae6c)){throw new Error(_0xc80d4c+'\x20Message\x20not\x20found');}_0x53252e=_0x54ae6c;return _0x54ae6c[_0x76f4('0x69')]({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x59265d={'uniqueid':_0x5080a9+'.'+_0x53252e['id']+'.'+_0x53252e[_0x76f4('0x67')]['id'],'FromUserId':_0x13cf2a['user']['id'],'type':'queue','ToUserId':_0x3e537b['id']};_0x59265d[_0xc80d4c+_0x76f4('0x6b')]=_0x53252e['id'];_0x59265d[_0xc80d4c+'InteractionId']=_0x53252e[_0x76f4('0x67')]['id'];_0x59265d[_0x76f4('0x6d')+_0xc80d4c+_0x238df3+'Id']=_0x53252e['Account']['id'];return db[_0xc80d4c+'TransferReport'][_0x76f4('0x75')](_0x59265d);})[_0x76f4('0x7')](function(){return respondWithRpcPromise(_0x76f4('0x6f'),{'channel':_0x5080a9,'interaction':_0x53252e['Interaction'],'message':_0x53252e,'account':_0x53252e[_0x76f4('0x62')],'applications':[{'id':0x0,'priority':0x1,'app':_0x76f4('0x38'),'appdata':_0x3e537b[_0x76f4('0x10')]+','+(_0x53252e[_0x76f4('0x62')]['agentTransferTimeout']||0x12c),'interval':_0x76f4('0x71')}]},routingClient);})[_0x76f4('0x7')](respondWithResult(_0x316f86,null))[_0x76f4('0xc')](handleError(_0x316f86,null));};
\ No newline at end of file
+var _0x6f47=['voiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','Outbound','outboundChannels','OutboundChannels','agents','Agents','agentCapacity','interaction','user','hasOwnProperty','MemberReport','INTERACTION','length','format','YYYY-MM-DD\x20HH:mm:ss','interface','agent','internal','telephones','trunks','Trunks','Campaigns','showChatQueues','ChatQueues','MailQueues','showMailQueues','mailAccounts','OpenchannelQueues','showOpenchannelQueues','smsQueues','SmsQueues','WhatsappQueues','showWhatsappQueues','faxQueues','FaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','type','filter','map','queue_id','uniq','value','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','chat','Website','Account','Queue','findOne','\x20Queue\x20not\x20found','Message','Interaction','\x20Message\x20not\x20found','update','queue','MessageId','InteractionId','From','QueueId','Start','queueTransferTimeout','*,*,*,*','channel','Channel\x20field\x20is\x20mandatory','User','create','moment','lodash','../../mysqldb','api','client','http','request','then','error','code','message','result','catch','status','sendStatus','stack','name','send','isNil','rows','find','voiceChannels','VoiceChannels','query','voiceChannelMixMonitor','merge','params','VoiceChannelStopMixMonitor','VoiceQueues','showVoiceQueues','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel'];(function(_0x4af28b,_0x5942ca){var _0x2b8fb0=function(_0x3062a5){while(--_0x3062a5){_0x4af28b['push'](_0x4af28b['shift']());}};_0x2b8fb0(++_0x5942ca);}(_0x6f47,0xc7));var _0x76f4=function(_0x5c9307,_0x5b97e4){_0x5c9307=_0x5c9307-0x0;var _0x373e29=_0x6f47[_0x5c9307];return _0x373e29;};'use strict';var BPromise=require('bluebird');var moment=require(_0x76f4('0x0'));var _=require(_0x76f4('0x1'));var util=require('util');var db=require(_0x76f4('0x2'))['db'];var logger=require('../../config/logger')(_0x76f4('0x3'));var jayson=require('jayson/promise');var amiClient=jayson[_0x76f4('0x4')][_0x76f4('0x5')]({'port':0x232a});var mailClient=jayson[_0x76f4('0x4')][_0x76f4('0x5')]({'port':0x232b});var routingClient=jayson['client'][_0x76f4('0x5')]({'port':0x232c});function respondWithRpcPromise(_0xfc2405,_0x2176a7,_0x497f99){return new BPromise(function(_0x1a3172,_0x25656d){var _0x65d2c7=_0x497f99?_0x497f99:amiClient;return _0x65d2c7[_0x76f4('0x6')](_0xfc2405,_0x2176a7)[_0x76f4('0x7')](function(_0x4c6b5c){if(_0x4c6b5c['error']){if(_0x4c6b5c[_0x76f4('0x8')][_0x76f4('0x9')]===0x1f4){return _0x25656d(_0x4c6b5c['error']['message']);}return _0x1a3172(_0x4c6b5c[_0x76f4('0x8')][_0x76f4('0xa')]);}else{_0x1a3172(_0x4c6b5c[_0x76f4('0xb')]);}})[_0x76f4('0xc')](function(_0x1aee7f){_0x25656d(_0x1aee7f);});});}function respondWithResult(_0xafd21e,_0xf7e347){_0xf7e347=_0xf7e347||0xc8;return function(_0x3ec740){if(_0x3ec740){return _0xafd21e[_0x76f4('0xd')](_0xf7e347)['json'](_0x3ec740);}return _0xafd21e[_0x76f4('0xe')](0x194);};}function handleError(_0x30dabf,_0x5da1ff){_0x5da1ff=_0x5da1ff||0x1f4;return function(_0x4b6021){logger['error'](_0x4b6021[_0x76f4('0xf')]);if(_0x4b6021[_0x76f4('0x10')]){delete _0x4b6021[_0x76f4('0x10')];}_0x30dabf[_0x76f4('0xd')](_0x5da1ff)[_0x76f4('0x11')](_0x4b6021);};}function findById(_0x2b5e23){return function(_0x46ba51){if(!_[_0x76f4('0x12')](_0x2b5e23)&&!_[_0x76f4('0x12')](_0x46ba51)&&!_[_0x76f4('0x12')](_0x46ba51[_0x76f4('0x13')])){return _[_0x76f4('0x14')](_0x46ba51[_0x76f4('0x13')],function(_0x38450e){return _0x38450e['id']==_0x2b5e23;});}return null;};}exports[_0x76f4('0x15')]=function(_0x397360,_0xfedbe4){return respondWithRpcPromise(_0x76f4('0x16'),_0x397360[_0x76f4('0x17')])[_0x76f4('0x7')](respondWithResult(_0xfedbe4,null))[_0x76f4('0xc')](handleError(_0xfedbe4,null));};exports[_0x76f4('0x18')]=function(_0x5bf3d5,_0x262937){return respondWithRpcPromise('VoiceChannelMixMonitor',_[_0x76f4('0x19')](_0x5bf3d5[_0x76f4('0x17')],_0x5bf3d5[_0x76f4('0x1a')]))['then'](respondWithResult(_0x262937,null))['catch'](handleError(_0x262937,null));};exports['voiceChannelStopMixMonitor']=function(_0x465240,_0x681d67){return respondWithRpcPromise(_0x76f4('0x1b'),_[_0x76f4('0x19')](_0x465240[_0x76f4('0x17')],_0x465240[_0x76f4('0x1a')]))[_0x76f4('0x7')](respondWithResult(_0x681d67,null))['catch'](handleError(_0x681d67,null));};exports['voiceQueues']=function(_0x3794fa,_0x497913){return respondWithRpcPromise(_0x76f4('0x1c'),_0x3794fa['query'])['then'](respondWithResult(_0x497913,null))['catch'](handleError(_0x497913,null));};exports[_0x76f4('0x1d')]=function(_0x38300d,_0xd368a2){return respondWithRpcPromise(_0x76f4('0x1c'),_0x38300d[_0x76f4('0x17')])[_0x76f4('0x7')](findById(_0x38300d['params']['id']))[_0x76f4('0x7')](respondWithResult(_0xd368a2,null))['catch'](handleError(_0xd368a2,null));};exports['updateVoiceQueue']=function(_0x5b3f07,_0x10ddb4){return respondWithRpcPromise(_0x76f4('0x1e'),_[_0x76f4('0x19')](_0x5b3f07[_0x76f4('0x1f')],_0x5b3f07['params']))[_0x76f4('0x7')](respondWithResult(_0x10ddb4,null))['catch'](handleError(_0x10ddb4,null));};exports[_0x76f4('0x20')]=function(_0x3c7513,_0x43ac4a){return respondWithRpcPromise(_0x76f4('0x21'),_[_0x76f4('0x19')](_0x3c7513['query'],_0x3c7513['params']))[_0x76f4('0x7')](respondWithResult(_0x43ac4a,null))[_0x76f4('0xc')](handleError(_0x43ac4a,null));};exports[_0x76f4('0x22')]=function(_0x281db6,_0x1f2adf){return respondWithRpcPromise(_0x76f4('0x23'),_0x281db6[_0x76f4('0x17')])[_0x76f4('0x7')](respondWithResult(_0x1f2adf,null))[_0x76f4('0xc')](handleError(_0x1f2adf,null));};exports[_0x76f4('0x24')]=function(_0x308af2,_0x2527a6){return respondWithRpcPromise('VoiceQueuesChannel',_['merge'](_0x308af2['query'],_0x308af2['params']))[_0x76f4('0x7')](respondWithResult(_0x2527a6,null))[_0x76f4('0xc')](handleError(_0x2527a6,null));};exports[_0x76f4('0x25')]=function(_0x456b1f,_0x26fdd6){return respondWithRpcPromise('VoiceQueuesChannelHangup',_[_0x76f4('0x19')](_0x456b1f[_0x76f4('0x17')],_0x456b1f[_0x76f4('0x1a')]))[_0x76f4('0x7')](respondWithResult(_0x26fdd6,null))[_0x76f4('0xc')](handleError(_0x26fdd6,null));};exports[_0x76f4('0x26')]=function(_0xb806cc,_0x28d9d6){return respondWithRpcPromise(_0x76f4('0x27'),_[_0x76f4('0x19')](_0xb806cc[_0x76f4('0x17')],_0xb806cc[_0x76f4('0x1a')]))[_0x76f4('0x7')](respondWithResult(_0x28d9d6,null))[_0x76f4('0xc')](handleError(_0x28d9d6,null));};exports[_0x76f4('0x28')]=function(_0x88506b,_0x3308e3){return respondWithRpcPromise(_0x76f4('0x29'),_0x88506b['query'])[_0x76f4('0x7')](respondWithResult(_0x3308e3,null))[_0x76f4('0xc')](handleError(_0x3308e3,null));};exports[_0x76f4('0x2a')]=function(_0x589637,_0x597e83){return respondWithRpcPromise(_0x76f4('0x2b'),_0x589637['query'])[_0x76f4('0x7')](respondWithResult(_0x597e83,null))['catch'](handleError(_0x597e83,null));};exports[_0x76f4('0x2c')]=function(_0x16f36d,_0x312243){var _0x378675;return respondWithRpcPromise(_0x76f4('0x2d'),_0x16f36d[_0x76f4('0x17')])[_0x76f4('0x7')](function(_0x109ad9){_0x378675=_0x109ad9;return respondWithRpcPromise(_0x76f4('0x2d'),_0x16f36d[_0x76f4('0x17')],routingClient);})['then'](function(_0x5b8d2d){return _[_0x76f4('0x19')]({},_0x5b8d2d,_0x378675);})[_0x76f4('0x7')](respondWithResult(_0x312243,null))[_0x76f4('0xc')](handleError(_0x312243,null));};exports[_0x76f4('0x2e')]=function(_0x2b7dc8,_0x2d6068){if(_0x2b7dc8[_0x76f4('0x1f')]&&_0x2b7dc8[_0x76f4('0x1f')][_0x76f4('0x2f')]&&_0x2b7dc8['user']&&_0x2b7dc8[_0x76f4('0x30')][_0x76f4('0x10')]){for(var _0x4f0d1a in _0x2b7dc8['body'][_0x76f4('0x2f')]){if(_0x2b7dc8[_0x76f4('0x1f')][_0x76f4('0x2f')][_0x76f4('0x31')](_0x4f0d1a)){db[_0x76f4('0x32')]['findAll']({'where':{'channel':_0x4f0d1a,'membername':_0x2b7dc8[_0x76f4('0x30')][_0x76f4('0x10')],'type':_0x76f4('0x33'),'exitAt':null,'uniqueid':_0x2b7dc8[_0x76f4('0x1f')][_0x76f4('0x2f')][_0x4f0d1a]&&_0x2b7dc8[_0x76f4('0x1f')]['interaction'][_0x4f0d1a][_0x76f4('0x34')]?{'$notIn':_0x2b7dc8[_0x76f4('0x1f')][_0x76f4('0x2f')][_0x4f0d1a]}:{'$ne':null}}})['then'](function(_0x571261){var _0x11ea58=moment()[_0x76f4('0x35')](_0x76f4('0x36'));for(var _0x2bea6d=0x0,_0x36fa03=_0x571261['length'];_0x2bea6d<_0x36fa03;_0x2bea6d+=0x1){_0x571261[_0x2bea6d]['updateAttributes']({'exitAt':_0x11ea58});}});for(var _0x8e5b60=0x0;_0x8e5b60<_0x2b7dc8['body'][_0x76f4('0x2f')][_0x4f0d1a][_0x76f4('0x34')];_0x8e5b60+=0x1){db['MemberReport']['findOrCreate']({'where':{'channel':_0x4f0d1a,'membername':_0x2b7dc8[_0x76f4('0x30')][_0x76f4('0x10')],'type':_0x76f4('0x33'),'uniqueid':_0x2b7dc8[_0x76f4('0x1f')]['interaction'][_0x4f0d1a][_0x8e5b60],'exitAt':null},'defaults':{'channel':_0x4f0d1a,'membername':_0x2b7dc8[_0x76f4('0x30')][_0x76f4('0x10')],'interface':_[_0x76f4('0x12')](_0x2b7dc8['user'][_0x76f4('0x37')])?util[_0x76f4('0x35')]('SIP/%s',_0x2b7dc8['user'][_0x76f4('0x10')]):_0x2b7dc8[_0x76f4('0x30')][_0x76f4('0x37')],'type':_0x76f4('0x33'),'enterAt':moment()[_0x76f4('0x35')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x76f4('0x38'),'internal':_0x2b7dc8['user'][_0x76f4('0x39')],'uniqueid':_0x2b7dc8[_0x76f4('0x1f')][_0x76f4('0x2f')][_0x4f0d1a][_0x8e5b60]}});}}}}return respondWithRpcPromise('AgentCapacity',{'id':_0x2b7dc8[_0x76f4('0x1a')]['id'],'capacity':_0x2b7dc8[_0x76f4('0x1f')]['capacity']},routingClient)[_0x76f4('0x7')](respondWithResult(_0x2d6068,null))[_0x76f4('0xc')](handleError(_0x2d6068,null));};exports[_0x76f4('0x3a')]=function(_0x1c658c,_0x40ff20){return respondWithRpcPromise('Telephones',_0x1c658c[_0x76f4('0x17')])['then'](respondWithResult(_0x40ff20,null))[_0x76f4('0xc')](handleError(_0x40ff20,null));};exports[_0x76f4('0x3b')]=function(_0x154ba,_0x5121ec){return respondWithRpcPromise(_0x76f4('0x3c'),_0x154ba[_0x76f4('0x17')])[_0x76f4('0x7')](respondWithResult(_0x5121ec,null))[_0x76f4('0xc')](handleError(_0x5121ec,null));};exports['campaigns']=function(_0x2028e9,_0xf11e07){return respondWithRpcPromise(_0x76f4('0x3d'),_0x2028e9[_0x76f4('0x17')])['then'](respondWithResult(_0xf11e07,null))[_0x76f4('0xc')](handleError(_0xf11e07,null));};exports['chatQueues']=function(_0x129048,_0x190c8d){return respondWithRpcPromise('ChatQueues',_0x129048['query'],routingClient)[_0x76f4('0x7')](respondWithResult(_0x190c8d,null))[_0x76f4('0xc')](handleError(_0x190c8d,null));};exports[_0x76f4('0x3e')]=function(_0x596b51,_0x27ba06){return respondWithRpcPromise(_0x76f4('0x3f'),_0x596b51[_0x76f4('0x17')],routingClient)['then'](findById(_0x596b51['params']['id']))[_0x76f4('0x7')](respondWithResult(_0x27ba06,null))[_0x76f4('0xc')](handleError(_0x27ba06,null));};exports['mailQueues']=function(_0x490ced,_0x3f1840){return respondWithRpcPromise(_0x76f4('0x40'),_0x490ced[_0x76f4('0x17')],routingClient)[_0x76f4('0x7')](respondWithResult(_0x3f1840,null))[_0x76f4('0xc')](handleError(_0x3f1840,null));};exports[_0x76f4('0x41')]=function(_0x97be11,_0x36a52a){return respondWithRpcPromise(_0x76f4('0x40'),_0x97be11['query'],routingClient)['then'](findById(_0x97be11['params']['id']))[_0x76f4('0x7')](respondWithResult(_0x36a52a,null))[_0x76f4('0xc')](handleError(_0x36a52a,null));};exports[_0x76f4('0x42')]=function(_0x3b6c16,_0x4c9d64){return respondWithRpcPromise('MailAccounts',_0x3b6c16[_0x76f4('0x17')],mailClient)['then'](respondWithResult(_0x4c9d64,null))[_0x76f4('0xc')](handleError(_0x4c9d64,null));};exports['openchannelQueues']=function(_0x4285dd,_0x25e510){return respondWithRpcPromise(_0x76f4('0x43'),_0x4285dd[_0x76f4('0x17')],routingClient)['then'](respondWithResult(_0x25e510,null))[_0x76f4('0xc')](handleError(_0x25e510,null));};exports[_0x76f4('0x44')]=function(_0x22a0cc,_0x40c170){return respondWithRpcPromise(_0x76f4('0x43'),_0x22a0cc[_0x76f4('0x17')],routingClient)[_0x76f4('0x7')](findById(_0x22a0cc['params']['id']))[_0x76f4('0x7')](respondWithResult(_0x40c170,null))[_0x76f4('0xc')](handleError(_0x40c170,null));};exports[_0x76f4('0x45')]=function(_0x320a87,_0x28cf4c){return respondWithRpcPromise(_0x76f4('0x46'),_0x320a87[_0x76f4('0x17')],routingClient)[_0x76f4('0x7')](respondWithResult(_0x28cf4c,null))['catch'](handleError(_0x28cf4c,null));};exports['showSmsQueues']=function(_0xa3091a,_0x617924){return respondWithRpcPromise(_0x76f4('0x46'),_0xa3091a['query'],routingClient)[_0x76f4('0x7')](findById(_0xa3091a['params']['id']))[_0x76f4('0x7')](respondWithResult(_0x617924,null))[_0x76f4('0xc')](handleError(_0x617924,null));};exports['whatsappQueues']=function(_0xda0ac2,_0x37b7f7){return respondWithRpcPromise(_0x76f4('0x47'),_0xda0ac2[_0x76f4('0x17')],routingClient)[_0x76f4('0x7')](respondWithResult(_0x37b7f7,null))[_0x76f4('0xc')](handleError(_0x37b7f7,null));};exports[_0x76f4('0x48')]=function(_0x410d83,_0x1f7257){return respondWithRpcPromise('WhatsappQueues',_0x410d83[_0x76f4('0x17')],routingClient)['then'](findById(_0x410d83[_0x76f4('0x1a')]['id']))[_0x76f4('0x7')](respondWithResult(_0x1f7257,null))[_0x76f4('0xc')](handleError(_0x1f7257,null));};exports[_0x76f4('0x49')]=function(_0xfbb52c,_0x8de630){return respondWithRpcPromise(_0x76f4('0x4a'),_0xfbb52c[_0x76f4('0x17')],routingClient)[_0x76f4('0x7')](respondWithResult(_0x8de630,null))[_0x76f4('0xc')](handleError(_0x8de630,null));};exports['showFaxQueues']=function(_0x30f3de,_0x6f874d){return respondWithRpcPromise('FaxQueues',_0x30f3de[_0x76f4('0x17')],routingClient)[_0x76f4('0x7')](findById(_0x30f3de[_0x76f4('0x1a')]['id']))['then'](respondWithResult(_0x6f874d,null))[_0x76f4('0xc')](handleError(_0x6f874d,null));};exports[_0x76f4('0x4b')]=function(_0x3e829f,_0x52610a){return respondWithRpcPromise(_0x76f4('0x4c'),_0x3e829f[_0x76f4('0x17')])[_0x76f4('0x7')](respondWithResult(_0x52610a,null))[_0x76f4('0xc')](handleError(_0x52610a,null));};exports[_0x76f4('0x4d')]=function(_0x10ee07,_0x19b99c){return respondWithRpcPromise(_0x76f4('0x4e'),_0x10ee07[_0x76f4('0x17')],routingClient)['then'](respondWithResult(_0x19b99c,null))[_0x76f4('0xc')](handleError(_0x19b99c,null));};exports[_0x76f4('0x4f')]=function(_0x19fdc3,_0x39c9af){return respondWithRpcPromise('MailQueuesWaitingInteractions',_0x19fdc3[_0x76f4('0x17')],routingClient)[_0x76f4('0x7')](respondWithResult(_0x39c9af,null))[_0x76f4('0xc')](handleError(_0x39c9af,null));};exports['openchannelQueuesWaitingInteractions']=function(_0x43b44d,_0x1375d5){return respondWithRpcPromise(_0x76f4('0x50'),_0x43b44d[_0x76f4('0x17')],routingClient)[_0x76f4('0x7')](respondWithResult(_0x1375d5,null))['catch'](handleError(_0x1375d5,null));};exports[_0x76f4('0x51')]=function(_0x4dd41f,_0x2b8467){return respondWithRpcPromise(_0x76f4('0x50'),_0x4dd41f['query'],routingClient)['then'](function(_0x58251e){if(_0x4dd41f[_0x76f4('0x17')][_0x76f4('0x52')]!==undefined){var _0x1e7b6=_(_0x58251e[_0x76f4('0x13')])[_0x76f4('0x53')]([_0x4dd41f[_0x76f4('0x17')]['type'],_0x4dd41f[_0x76f4('0x1a')]['id']])[_0x76f4('0x54')](_0x76f4('0x55'))[_0x76f4('0x56')]()[_0x76f4('0x57')]();return _0x58251e[_0x76f4('0x13')][_0x76f4('0x53')](function(_0x202fc8){return _0x1e7b6['indexOf'](_0x202fc8[_0x76f4('0x55')])>-0x1;});}else{return _0x58251e['rows'][_0x76f4('0x53')](function(_0x30358a){return _0x30358a[_0x76f4('0x55')]===parseInt(_0x4dd41f[_0x76f4('0x1a')]['id']);});}})[_0x76f4('0x7')](respondWithResult(_0x2b8467,null))[_0x76f4('0xc')](handleError(_0x2b8467,null));};exports[_0x76f4('0x58')]=function(_0x2a0491,_0x54729b){return respondWithRpcPromise(_0x76f4('0x59'),_0x2a0491['query'],routingClient)['then'](respondWithResult(_0x54729b,null))['catch'](handleError(_0x54729b,null));};exports[_0x76f4('0x5a')]=function(_0x402209,_0x279040){return respondWithRpcPromise(_0x76f4('0x5b'),_0x402209['query'],routingClient)[_0x76f4('0x7')](respondWithResult(_0x279040,null))[_0x76f4('0xc')](handleError(_0x279040,null));};exports[_0x76f4('0x5c')]=function(_0x5f5c24,_0x12f16e){return respondWithRpcPromise(_0x76f4('0x5d'),_0x5f5c24[_0x76f4('0x17')],routingClient)[_0x76f4('0x7')](respondWithResult(_0x12f16e,null))[_0x76f4('0xc')](handleError(_0x12f16e,null));};exports[_0x76f4('0x5e')]=function(_0x3b5e15){return function(_0x4b562c,_0x2e991e){var _0xa49e2a,_0x4c7307;var _0x3bc914=_[_0x76f4('0x5f')](_0x3b5e15);var _0x5e6393=_0x3b5e15===_0x76f4('0x60')?_0x76f4('0x61'):_0x76f4('0x62');return db[_0x3bc914+_0x76f4('0x63')][_0x76f4('0x64')]({'raw':!![],'where':{'id':_0x4b562c[_0x76f4('0x1a')]['id']}})['then'](function(_0x2dac86){if(_[_0x76f4('0x12')](_0x2dac86)){throw new Error(_0x3bc914+_0x76f4('0x65'));}_0xa49e2a=_0x2dac86;return db[_0x3bc914+_0x76f4('0x66')]['findOne']({'where':{'id':_0x4b562c[_0x76f4('0x1f')]['messageId']},'include':[{'model':db[_0x3bc914+_0x76f4('0x67')],'as':'Interaction'},{'model':db[_0x3bc914+_0x5e6393],'as':_0x76f4('0x62')}]});})[_0x76f4('0x7')](function(_0x59e9ed){if(_['isNil'](_0x59e9ed)){throw new Error(_0x3bc914+_0x76f4('0x68'));}_0x4c7307=_0x59e9ed;return _0x59e9ed[_0x76f4('0x69')]({'read':0x0,'readAt':null,'UserId':null});})[_0x76f4('0x7')](function(){var _0x4a2969={'uniqueid':_0x3b5e15+'.'+_0x4c7307['id']+'.'+_0x4c7307['Interaction']['id'],'FromUserId':_0x4b562c[_0x76f4('0x30')]['id'],'type':_0x76f4('0x6a')};_0x4a2969[_0x3bc914+_0x76f4('0x6b')]=_0x4c7307['id'];_0x4a2969[_0x3bc914+_0x76f4('0x6c')]=_0x4c7307[_0x76f4('0x67')]['id'];_0x4a2969[_0x76f4('0x6d')+_0x3bc914+_0x5e6393+'Id']=_0x4c7307[_0x76f4('0x62')]['id'];_0x4a2969['To'+_0x3bc914+_0x76f4('0x6e')]=_0xa49e2a['id'];return db[_0x3bc914+'TransferReport']['create'](_0x4a2969);})[_0x76f4('0x7')](function(){return respondWithRpcPromise(_0x76f4('0x6f'),{'channel':_0x3b5e15,'interaction':_0x4c7307[_0x76f4('0x67')],'message':_0x4c7307,'account':_0x4c7307['Account'],'applications':[{'id':0x0,'priority':0x1,'app':_0x76f4('0x6a'),'appdata':_0xa49e2a[_0x76f4('0x10')]+','+(_0x4c7307[_0x76f4('0x62')][_0x76f4('0x70')]||0x12c),'interval':_0x76f4('0x71')}]},routingClient);})[_0x76f4('0x7')](respondWithResult(_0x2e991e,null))[_0x76f4('0xc')](handleError(_0x2e991e,null));};};exports['agentNotify']=function(_0x13cf2a,_0x316f86){var _0x3e537b,_0x53252e;if(_[_0x76f4('0x12')](_0x13cf2a[_0x76f4('0x1f')][_0x76f4('0x72')])){throw new Error(_0x76f4('0x73'));}var _0x5080a9=_0x13cf2a[_0x76f4('0x1f')]['channel'];var _0xc80d4c=_['capitalize'](_0x5080a9);var _0x238df3=_0x5080a9===_0x76f4('0x60')?_0x76f4('0x61'):'Account';return db[_0x76f4('0x74')][_0x76f4('0x64')]({'raw':!![],'where':{'id':_0x13cf2a[_0x76f4('0x1a')]['id'],'role':'agent'}})[_0x76f4('0x7')](function(_0x460867){if(_['isNil'](_0x460867)){throw new Error('Agent\x20not\x20found');}_0x3e537b=_0x460867;return db[_0xc80d4c+_0x76f4('0x66')][_0x76f4('0x64')]({'where':{'id':_0x13cf2a['body']['messageId']},'include':[{'model':db[_0xc80d4c+_0x76f4('0x67')],'as':_0x76f4('0x67')},{'model':db[_0xc80d4c+_0x238df3],'as':'Account'}]});})[_0x76f4('0x7')](function(_0x54ae6c){if(_['isNil'](_0x54ae6c)){throw new Error(_0xc80d4c+'\x20Message\x20not\x20found');}_0x53252e=_0x54ae6c;return _0x54ae6c[_0x76f4('0x69')]({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x59265d={'uniqueid':_0x5080a9+'.'+_0x53252e['id']+'.'+_0x53252e[_0x76f4('0x67')]['id'],'FromUserId':_0x13cf2a['user']['id'],'type':'queue','ToUserId':_0x3e537b['id']};_0x59265d[_0xc80d4c+_0x76f4('0x6b')]=_0x53252e['id'];_0x59265d[_0xc80d4c+'InteractionId']=_0x53252e[_0x76f4('0x67')]['id'];_0x59265d[_0x76f4('0x6d')+_0xc80d4c+_0x238df3+'Id']=_0x53252e['Account']['id'];return db[_0xc80d4c+'TransferReport'][_0x76f4('0x75')](_0x59265d);})[_0x76f4('0x7')](function(){return respondWithRpcPromise(_0x76f4('0x6f'),{'channel':_0x5080a9,'interaction':_0x53252e['Interaction'],'message':_0x53252e,'account':_0x53252e[_0x76f4('0x62')],'applications':[{'id':0x0,'priority':0x1,'app':_0x76f4('0x38'),'appdata':_0x3e537b[_0x76f4('0x10')]+','+(_0x53252e[_0x76f4('0x62')]['agentTransferTimeout']||0x12c),'interval':_0x76f4('0x71')}]},routingClient);})[_0x76f4('0x7')](respondWithResult(_0x316f86,null))[_0x76f4('0xc')](handleError(_0x316f86,null));};
\ No newline at end of file
index 2aaa858..057dec4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28b6=['exports','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./schedule.controller','get','index','isAuthenticated','show','run','post','create','put','update','delete','/:id','destroy'];(function(_0x5d5fb8,_0x2bb8fa){var _0x27e196=function(_0x4a0253){while(--_0x4a0253){_0x5d5fb8['push'](_0x5d5fb8['shift']());}};_0x27e196(++_0x2bb8fa);}(_0x28b6,0x1cd));var _0x628b=function(_0x1e2006,_0x7e0059){_0x1e2006=_0x1e2006-0x0;var _0x18dd7c=_0x28b6[_0x1e2006];return _0x18dd7c;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x628b('0x0'));var timeout=require('connect-timeout');var express=require(_0x628b('0x1'));var router=express[_0x628b('0x2')]();var fs_extra=require(_0x628b('0x3'));var auth=require(_0x628b('0x4'));var interaction=require(_0x628b('0x5'));var config=require('../../config/environment');var controller=require(_0x628b('0x6'));router[_0x628b('0x7')]('/',auth['isAuthenticated'](),controller[_0x628b('0x8')]);router['get']('/:id',auth[_0x628b('0x9')](),controller[_0x628b('0xa')]);router['get']('/:id/run',auth[_0x628b('0x9')](),controller[_0x628b('0xb')]);router[_0x628b('0xc')]('/',auth['isAuthenticated'](),controller[_0x628b('0xd')]);router[_0x628b('0xe')]('/:id',auth[_0x628b('0x9')](),controller[_0x628b('0xf')]);router[_0x628b('0x10')](_0x628b('0x11'),auth['isAuthenticated'](),controller[_0x628b('0x12')]);module[_0x628b('0x13')]=router;
\ No newline at end of file
+var _0x4727=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','run','put','update','destroy','util','path','connect-timeout','express','fs-extra'];(function(_0x21549c,_0x6d64d1){var _0x426cbd=function(_0x323f5b){while(--_0x323f5b){_0x21549c['push'](_0x21549c['shift']());}};_0x426cbd(++_0x6d64d1);}(_0x4727,0xab));var _0x7472=function(_0x23508e,_0x34a7f7){_0x23508e=_0x23508e-0x0;var _0x40d4c1=_0x4727[_0x23508e];return _0x40d4c1;};'use strict';var multer=require('multer');var util=require(_0x7472('0x0'));var path=require(_0x7472('0x1'));var timeout=require(_0x7472('0x2'));var express=require(_0x7472('0x3'));var router=express['Router']();var fs_extra=require(_0x7472('0x4'));var auth=require(_0x7472('0x5'));var interaction=require(_0x7472('0x6'));var config=require(_0x7472('0x7'));var controller=require('./schedule.controller');router[_0x7472('0x8')]('/',auth[_0x7472('0x9')](),controller['index']);router[_0x7472('0x8')](_0x7472('0xa'),auth['isAuthenticated'](),controller[_0x7472('0xb')]);router[_0x7472('0x8')]('/:id/run',auth[_0x7472('0x9')](),controller[_0x7472('0xc')]);router['post']('/',auth[_0x7472('0x9')](),controller['create']);router[_0x7472('0xd')](_0x7472('0xa'),auth[_0x7472('0x9')](),controller[_0x7472('0xe')]);router['delete']('/:id',auth[_0x7472('0x9')](),controller[_0x7472('0xf')]);module['exports']=router;
\ No newline at end of file
index d8991ad..6f371b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbbe=['xlsx','custom','TEXT','sequelize','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE','ENUM','quarters','months','days','minutes','csv'];(function(_0x269471,_0x127481){var _0x3fb1c2=function(_0x336bc3){while(--_0x336bc3){_0x269471['push'](_0x269471['shift']());}};_0x3fb1c2(++_0x127481);}(_0xdbbe,0x1ed));var _0xedbb=function(_0x2ff238,_0x1811d2){_0x2ff238=_0x2ff238-0x0;var _0x204a56=_0xdbbe[_0x2ff238];return _0x204a56;};'use strict';var Sequelize=require(_0xedbb('0x0'));module['exports']={'name':{'type':Sequelize[_0xedbb('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xedbb('0x1')]},'active':{'type':Sequelize[_0xedbb('0x2')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xedbb('0x3')},'startAt':{'type':Sequelize[_0xedbb('0x4')],'allowNull':![]},'endAt':{'type':Sequelize['DATE'],'allowNull':![]},'subtractNumber':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0xedbb('0x5')]('years',_0xedbb('0x6'),_0xedbb('0x7'),'weeks',_0xedbb('0x8'),'hours',_0xedbb('0x9')),'allowNull':![],'defaultValue':'days'},'output':{'type':Sequelize[_0xedbb('0x5')](_0xedbb('0xa'),'pdf',_0xedbb('0xb')),'allowNull':![],'defaultValue':_0xedbb('0xa')},'type':{'type':Sequelize[_0xedbb('0x5')](_0xedbb('0xc'),'default'),'allowNull':![],'defaultValue':_0xedbb('0xc')},'sendMail':{'type':Sequelize[_0xedbb('0x2')],'defaultValue':![]},'email':{'type':Sequelize[_0xedbb('0x1')]},'cc':{'type':Sequelize[_0xedbb('0xd')]},'bcc':{'type':Sequelize[_0xedbb('0xd')]},'sendIfEmpty':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0x3cac=['STRING','DATE','INTEGER','ENUM','years','quarters','weeks','days','hours','minutes','csv','pdf','xlsx','custom','default','TEXT','sequelize','exports'];(function(_0x31f913,_0x5577b5){var _0x2df027=function(_0xc8004b){while(--_0xc8004b){_0x31f913['push'](_0x31f913['shift']());}};_0x2df027(++_0x5577b5);}(_0x3cac,0x142));var _0xc3ca=function(_0x34f53c,_0x37a241){_0x34f53c=_0x34f53c-0x0;var _0x154bf1=_0x3cac[_0x34f53c];return _0x154bf1;};'use strict';var Sequelize=require(_0xc3ca('0x0'));module[_0xc3ca('0x1')]={'name':{'type':Sequelize[_0xc3ca('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xc3ca('0x2')]},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'0\x200\x20*\x20*\x20*'},'startAt':{'type':Sequelize['DATE'],'allowNull':![]},'endAt':{'type':Sequelize[_0xc3ca('0x3')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0xc3ca('0x4')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0xc3ca('0x5')](_0xc3ca('0x6'),_0xc3ca('0x7'),'months',_0xc3ca('0x8'),_0xc3ca('0x9'),_0xc3ca('0xa'),_0xc3ca('0xb')),'allowNull':![],'defaultValue':_0xc3ca('0x9')},'output':{'type':Sequelize['ENUM'](_0xc3ca('0xc'),_0xc3ca('0xd'),_0xc3ca('0xe')),'allowNull':![],'defaultValue':_0xc3ca('0xc')},'type':{'type':Sequelize[_0xc3ca('0x5')](_0xc3ca('0xf'),_0xc3ca('0x10')),'allowNull':![],'defaultValue':_0xc3ca('0xf')},'sendMail':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize[_0xc3ca('0x2')]},'cc':{'type':Sequelize[_0xc3ca('0x11')]},'bcc':{'type':Sequelize['TEXT']},'sendIfEmpty':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index f7df8b3..ebb32d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55c4=['lodash','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','status','offset','undefined','limit','count','set','apply','reject','save','update','destroy','then','get','Scheduler','end','error','stack','name','send','Schedule','rawAttributes','fieldName','type','key','model','map','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','../../config/schedule','run','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra'];(function(_0x9c530a,_0x2021ba){var _0x1f6ffe=function(_0x234b27){while(--_0x234b27){_0x9c530a['push'](_0x9c530a['shift']());}};_0x1f6ffe(++_0x2021ba);}(_0x55c4,0x14e));var _0x455c=function(_0x56472d,_0x4b2ea2){_0x56472d=_0x56472d-0x0;var _0x2dd761=_0x55c4[_0x56472d];return _0x2dd761;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x455c('0x0'));var zipdir=require(_0x455c('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x455c('0x2'));var moment=require('moment');var BPromise=require(_0x455c('0x3'));var Mustache=require(_0x455c('0x4'));var util=require(_0x455c('0x5'));var path=require(_0x455c('0x6'));var sox=require('sox');var csv=require(_0x455c('0x7'));var ejs=require(_0x455c('0x8'));var fs=require('fs');var fs_extra=require(_0x455c('0x9'));var _=require(_0x455c('0xa'));var squel=require('squel');var crypto=require(_0x455c('0xb'));var jsforce=require(_0x455c('0xc'));var deskjs=require(_0x455c('0xd'));var toCsv=require('to-csv');var querystring=require(_0x455c('0xe'));var Papa=require(_0x455c('0xf'));var Redis=require(_0x455c('0x10'));var authService=require(_0x455c('0x11'));var qs=require(_0x455c('0x12'));var as=require(_0x455c('0x13'));var hardwareService=require(_0x455c('0x14'));var logger=require('../../config/logger')(_0x455c('0x15'));var utils=require('../../config/utils');var config=require(_0x455c('0x16'));var licenseUtil=require(_0x455c('0x17'));var db=require(_0x455c('0x18'))['db'];function respondWithStatusCode(_0x1c3254,_0x26fbda){_0x26fbda=_0x26fbda||0xcc;return function(_0x1fc57b){if(_0x1fc57b){return _0x1c3254[_0x455c('0x19')](_0x26fbda);}return _0x1c3254[_0x455c('0x1a')](_0x26fbda)['end']();};}function respondWithResult(_0x1540c6,_0x42643b){_0x42643b=_0x42643b||0xc8;return function(_0x35de87){if(_0x35de87){return _0x1540c6[_0x455c('0x1a')](_0x42643b)['json'](_0x35de87);}};}function respondWithFilteredResult(_0x1762b2,_0x57281e){return function(_0x271aa8){if(_0x271aa8){var _0x8aad97=typeof _0x57281e[_0x455c('0x1b')]===_0x455c('0x1c')&&typeof _0x57281e[_0x455c('0x1d')]===_0x455c('0x1c');var _0x294b69=_0x271aa8[_0x455c('0x1e')];var _0xbd1763=_0x8aad97?0x0:_0x57281e[_0x455c('0x1b')];var _0xcfad93=_0x8aad97?_0x271aa8[_0x455c('0x1e')]:_0x57281e[_0x455c('0x1b')]+_0x57281e[_0x455c('0x1d')];var _0x347886;if(_0xcfad93>=_0x294b69){_0xcfad93=_0x294b69;_0x347886=0xc8;}else{_0x347886=0xce;}_0x1762b2[_0x455c('0x1a')](_0x347886);return _0x1762b2[_0x455c('0x1f')]('Content-Range',_0xbd1763+'-'+_0xcfad93+'/'+_0x294b69)['json'](_0x271aa8);}return null;};}function patchUpdates(_0x4d2c5e){return function(_0x357dbf){try{jsonpatch[_0x455c('0x20')](_0x357dbf,_0x4d2c5e,!![]);}catch(_0x42223b){return BPromise[_0x455c('0x21')](_0x42223b);}return _0x357dbf[_0x455c('0x22')]();};}function saveUpdates(_0x18a38a,_0x1523c0){return function(_0x57f102){if(_0x57f102){return _0x57f102[_0x455c('0x23')](_0x18a38a)['then'](function(_0x422c22){return _0x422c22;});}return null;};}function removeEntity(_0x14f352,_0x2aa04e){return function(_0x41e1e3){if(_0x41e1e3){return _0x41e1e3[_0x455c('0x24')]()[_0x455c('0x25')](function(){var _0x4d4491=_0x41e1e3[_0x455c('0x26')]({'plain':!![]});var _0x3799a2=_0x455c('0x27');return db['UserProfileResource'][_0x455c('0x24')]({'where':{'type':_0x3799a2,'resourceId':_0x4d4491['id']}})[_0x455c('0x25')](function(){return _0x41e1e3;});})[_0x455c('0x25')](function(){_0x14f352[_0x455c('0x1a')](0xcc)[_0x455c('0x28')]();});}};}function handleEntityNotFound(_0x2296ae,_0x2bb345){return function(_0x538654){if(!_0x538654){_0x2296ae['sendStatus'](0x194);}return _0x538654;};}function handleError(_0x31332b,_0x48a810){_0x48a810=_0x48a810||0x1f4;return function(_0x3eb066){logger[_0x455c('0x29')](_0x3eb066[_0x455c('0x2a')]);if(_0x3eb066['name']){delete _0x3eb066[_0x455c('0x2b')];}_0x31332b[_0x455c('0x1a')](_0x48a810)[_0x455c('0x2c')](_0x3eb066);};}exports['index']=function(_0x215e50,_0x229055){var _0x41f935={},_0x388dfb={},_0x51bae0={'count':0x0,'rows':[]};var _0x5d7a17=_['map'](db[_0x455c('0x2d')][_0x455c('0x2e')],function(_0x2f0a59){return{'name':_0x2f0a59[_0x455c('0x2f')],'type':_0x2f0a59[_0x455c('0x30')][_0x455c('0x31')]};});_0x388dfb[_0x455c('0x32')]=_[_0x455c('0x33')](_0x5d7a17,_0x455c('0x2b'));_0x388dfb['query']=_[_0x455c('0x34')](_0x215e50[_0x455c('0x35')]);_0x388dfb[_0x455c('0x36')]=_[_0x455c('0x37')](_0x388dfb[_0x455c('0x32')],_0x388dfb[_0x455c('0x35')]);_0x41f935[_0x455c('0x38')]=_[_0x455c('0x37')](_0x388dfb[_0x455c('0x32')],qs['fields'](_0x215e50[_0x455c('0x35')][_0x455c('0x39')]));_0x41f935[_0x455c('0x38')]=_0x41f935[_0x455c('0x38')][_0x455c('0x3a')]?_0x41f935[_0x455c('0x38')]:_0x388dfb[_0x455c('0x32')];if(!_0x215e50[_0x455c('0x35')][_0x455c('0x3b')]('nolimit')){_0x41f935[_0x455c('0x1d')]=qs[_0x455c('0x1d')](_0x215e50[_0x455c('0x35')][_0x455c('0x1d')]);_0x41f935[_0x455c('0x1b')]=qs[_0x455c('0x1b')](_0x215e50['query'][_0x455c('0x1b')]);}_0x41f935[_0x455c('0x3c')]=qs[_0x455c('0x3d')](_0x215e50[_0x455c('0x35')][_0x455c('0x3d')]);_0x41f935['where']=qs[_0x455c('0x36')](_[_0x455c('0x3e')](_0x215e50[_0x455c('0x35')],_0x388dfb[_0x455c('0x36')]),_0x5d7a17);if(_0x215e50['query'][_0x455c('0x3f')]){_0x41f935[_0x455c('0x40')]=_[_0x455c('0x41')](_0x41f935[_0x455c('0x40')],{'$or':_[_0x455c('0x33')](_0x5d7a17,function(_0x5a244a){if(_0x5a244a[_0x455c('0x30')]!==_0x455c('0x42')){var _0x17fab6={};_0x17fab6[_0x5a244a[_0x455c('0x2b')]]={'$like':'%'+_0x215e50[_0x455c('0x35')][_0x455c('0x3f')]+'%'};return _0x17fab6;}})});}_0x41f935=_[_0x455c('0x41')]({},_0x41f935,_0x215e50[_0x455c('0x43')]);var _0x30164f={'where':_0x41f935['where']};return db['Schedule']['count'](_0x30164f)[_0x455c('0x25')](function(_0x38c09b){_0x51bae0['count']=_0x38c09b;if(_0x215e50['query'][_0x455c('0x44')]){_0x41f935[_0x455c('0x45')]=[{'all':!![]}];}return db[_0x455c('0x2d')][_0x455c('0x46')](_0x41f935);})[_0x455c('0x25')](function(_0x5807b1){_0x51bae0['rows']=_0x5807b1;return _0x51bae0;})[_0x455c('0x25')](respondWithFilteredResult(_0x229055,_0x41f935))[_0x455c('0x47')](handleError(_0x229055,null));};exports[_0x455c('0x48')]=function(_0x420b2c,_0x4d569e){var _0x190f84={'raw':![],'where':{'id':_0x420b2c[_0x455c('0x49')]['id']}},_0x4574d0={};_0x4574d0[_0x455c('0x32')]=_[_0x455c('0x34')](db[_0x455c('0x2d')][_0x455c('0x2e')]);_0x4574d0[_0x455c('0x35')]=_[_0x455c('0x34')](_0x420b2c[_0x455c('0x35')]);_0x4574d0['filters']=_[_0x455c('0x37')](_0x4574d0[_0x455c('0x32')],_0x4574d0[_0x455c('0x35')]);_0x190f84[_0x455c('0x38')]=_[_0x455c('0x37')](_0x4574d0[_0x455c('0x32')],qs[_0x455c('0x39')](_0x420b2c[_0x455c('0x35')]['fields']));_0x190f84[_0x455c('0x38')]=_0x190f84['attributes']['length']?_0x190f84['attributes']:_0x4574d0[_0x455c('0x32')];if(_0x420b2c[_0x455c('0x35')][_0x455c('0x44')]){_0x190f84[_0x455c('0x45')]=[{'all':!![]}];}_0x190f84=_['merge']({},_0x190f84,_0x420b2c[_0x455c('0x43')]);return db[_0x455c('0x2d')][_0x455c('0x4a')](_0x190f84)['then'](handleEntityNotFound(_0x4d569e,null))[_0x455c('0x25')](respondWithResult(_0x4d569e,null))['catch'](handleError(_0x4d569e,null));};exports[_0x455c('0x4b')]=function(_0x277940,_0x166109){return db[_0x455c('0x2d')][_0x455c('0x4b')](_0x277940[_0x455c('0x4c')],{})[_0x455c('0x25')](function(_0x23f2f6){var _0xc67a0f=_0x277940[_0x455c('0x4d')][_0x455c('0x26')]({'plain':!![]});if(!_0xc67a0f)throw new Error(_0x455c('0x4e'));if(_0xc67a0f[_0x455c('0x4f')]===_0x455c('0x4d')){var _0x397e17=_0x23f2f6[_0x455c('0x26')]({'plain':!![]});var _0x25b15f=_0x455c('0x27');return db[_0x455c('0x50')][_0x455c('0x4a')]({'where':{'name':_0x25b15f,'userProfileId':_0xc67a0f[_0x455c('0x51')]},'raw':!![]})[_0x455c('0x25')](function(_0x328a2a){if(_0x328a2a&&_0x328a2a['autoAssociation']===0x0){return db[_0x455c('0x52')][_0x455c('0x4b')]({'name':_0x397e17[_0x455c('0x2b')],'resourceId':_0x397e17['id'],'type':_0x328a2a[_0x455c('0x2b')],'sectionId':_0x328a2a['id']},{})[_0x455c('0x25')](function(){return _0x23f2f6;});}else{return _0x23f2f6;}})[_0x455c('0x47')](function(_0x3d28c1){logger['error'](_0x455c('0x53'),_0x3d28c1);throw _0x3d28c1;});}return _0x23f2f6;})['then'](respondWithResult(_0x166109,0xc9))[_0x455c('0x47')](handleError(_0x166109,null));};exports[_0x455c('0x23')]=function(_0x138769,_0x5638d8){if(_0x138769[_0x455c('0x4c')]['id']){delete _0x138769['body']['id'];}return db[_0x455c('0x2d')][_0x455c('0x4a')]({'where':{'id':_0x138769[_0x455c('0x49')]['id']}})[_0x455c('0x25')](handleEntityNotFound(_0x5638d8,null))['then'](saveUpdates(_0x138769[_0x455c('0x4c')],null))[_0x455c('0x25')](respondWithResult(_0x5638d8,null))[_0x455c('0x47')](handleError(_0x5638d8,null));};exports[_0x455c('0x24')]=function(_0x5835b8,_0x4680e8){return db[_0x455c('0x2d')]['find']({'where':{'id':_0x5835b8[_0x455c('0x49')]['id']}})[_0x455c('0x25')](handleEntityNotFound(_0x4680e8,null))[_0x455c('0x25')](removeEntity(_0x4680e8,null))[_0x455c('0x47')](handleError(_0x4680e8,null));};exports['run']=function(_0x18de98,_0x15425f,_0x15a05c){var _0x580f6a=require(_0x455c('0x54'));return db[_0x455c('0x2d')]['find']({'where':{'id':_0x18de98[_0x455c('0x49')]['id']},'raw':!![]})[_0x455c('0x25')](handleEntityNotFound(_0x15425f,null))[_0x455c('0x25')](function(){_0x580f6a[_0x455c('0x55')](_0x18de98[_0x455c('0x49')]['id']);})[_0x455c('0x25')](respondWithStatusCode(_0x15425f,null))[_0x455c('0x47')](handleError(_0x15425f,null));};
\ No newline at end of file
+var _0x9971=['attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','include','findAll','rows','catch','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Scheduler','userProfileId','../../config/schedule','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','set','json','apply','reject','update','then','destroy','get','UserProfileResource','end','name','send','index','map','Schedule','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields'];(function(_0x2abafc,_0x588cd7){var _0x1d35f2=function(_0xcb930a){while(--_0xcb930a){_0x2abafc['push'](_0x2abafc['shift']());}};_0x1d35f2(++_0x588cd7);}(_0x9971,0x1bb));var _0x1997=function(_0xbdadee,_0xb4f558){_0xbdadee=_0xbdadee-0x0;var _0xfe892d=_0x9971[_0xbdadee];return _0xfe892d;};'use strict';var emlformat=require(_0x1997('0x0'));var rimraf=require(_0x1997('0x1'));var zipdir=require(_0x1997('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1997('0x3'));var moment=require(_0x1997('0x4'));var BPromise=require(_0x1997('0x5'));var Mustache=require(_0x1997('0x6'));var util=require('util');var path=require('path');var sox=require(_0x1997('0x7'));var csv=require(_0x1997('0x8'));var ejs=require(_0x1997('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1997('0xa'));var squel=require(_0x1997('0xb'));var crypto=require('crypto');var jsforce=require(_0x1997('0xc'));var deskjs=require(_0x1997('0xd'));var toCsv=require(_0x1997('0x8'));var querystring=require(_0x1997('0xe'));var Papa=require('papaparse');var Redis=require(_0x1997('0xf'));var authService=require(_0x1997('0x10'));var qs=require(_0x1997('0x11'));var as=require(_0x1997('0x12'));var hardwareService=require(_0x1997('0x13'));var logger=require(_0x1997('0x14'))(_0x1997('0x15'));var utils=require(_0x1997('0x16'));var config=require(_0x1997('0x17'));var licenseUtil=require(_0x1997('0x18'));var db=require(_0x1997('0x19'))['db'];function respondWithStatusCode(_0x42ce97,_0x4d046d){_0x4d046d=_0x4d046d||0xcc;return function(_0x52387f){if(_0x52387f){return _0x42ce97[_0x1997('0x1a')](_0x4d046d);}return _0x42ce97[_0x1997('0x1b')](_0x4d046d)['end']();};}function respondWithResult(_0xda90d0,_0x495c96){_0x495c96=_0x495c96||0xc8;return function(_0x1ba4c4){if(_0x1ba4c4){return _0xda90d0['status'](_0x495c96)['json'](_0x1ba4c4);}};}function respondWithFilteredResult(_0x47d9de,_0x3b786f){return function(_0xe3bbee){if(_0xe3bbee){var _0x408aad=typeof _0x3b786f[_0x1997('0x1c')]===_0x1997('0x1d')&&typeof _0x3b786f[_0x1997('0x1e')]===_0x1997('0x1d');var _0x1e43b9=_0xe3bbee['count'];var _0x3a1ff6=_0x408aad?0x0:_0x3b786f[_0x1997('0x1c')];var _0x2f7fff=_0x408aad?_0xe3bbee['count']:_0x3b786f[_0x1997('0x1c')]+_0x3b786f['limit'];var _0xb549de;if(_0x2f7fff>=_0x1e43b9){_0x2f7fff=_0x1e43b9;_0xb549de=0xc8;}else{_0xb549de=0xce;}_0x47d9de[_0x1997('0x1b')](_0xb549de);return _0x47d9de[_0x1997('0x1f')]('Content-Range',_0x3a1ff6+'-'+_0x2f7fff+'/'+_0x1e43b9)[_0x1997('0x20')](_0xe3bbee);}return null;};}function patchUpdates(_0x6f2aba){return function(_0x14cebd){try{jsonpatch[_0x1997('0x21')](_0x14cebd,_0x6f2aba,!![]);}catch(_0x144a69){return BPromise[_0x1997('0x22')](_0x144a69);}return _0x14cebd['save']();};}function saveUpdates(_0x313572,_0x13b1d1){return function(_0x4ed33f){if(_0x4ed33f){return _0x4ed33f[_0x1997('0x23')](_0x313572)[_0x1997('0x24')](function(_0x3643a3){return _0x3643a3;});}return null;};}function removeEntity(_0x16817a,_0x577e32){return function(_0x3d298b){if(_0x3d298b){return _0x3d298b[_0x1997('0x25')]()[_0x1997('0x24')](function(){var _0x5a39e3=_0x3d298b[_0x1997('0x26')]({'plain':!![]});var _0xe8598f='Scheduler';return db[_0x1997('0x27')]['destroy']({'where':{'type':_0xe8598f,'resourceId':_0x5a39e3['id']}})[_0x1997('0x24')](function(){return _0x3d298b;});})['then'](function(){_0x16817a[_0x1997('0x1b')](0xcc)[_0x1997('0x28')]();});}};}function handleEntityNotFound(_0x22e721,_0xf72923){return function(_0x34c5b9){if(!_0x34c5b9){_0x22e721['sendStatus'](0x194);}return _0x34c5b9;};}function handleError(_0x1090ac,_0x2e3a2a){_0x2e3a2a=_0x2e3a2a||0x1f4;return function(_0x2e808b){logger['error'](_0x2e808b['stack']);if(_0x2e808b['name']){delete _0x2e808b[_0x1997('0x29')];}_0x1090ac[_0x1997('0x1b')](_0x2e3a2a)[_0x1997('0x2a')](_0x2e808b);};}exports[_0x1997('0x2b')]=function(_0x3354e7,_0x171260){var _0x42f306={},_0x3045e2={},_0x778641={'count':0x0,'rows':[]};var _0x2fdcc5=_[_0x1997('0x2c')](db[_0x1997('0x2d')][_0x1997('0x2e')],function(_0x208f0e){return{'name':_0x208f0e[_0x1997('0x2f')],'type':_0x208f0e[_0x1997('0x30')]['key']};});_0x3045e2[_0x1997('0x31')]=_[_0x1997('0x2c')](_0x2fdcc5,_0x1997('0x29'));_0x3045e2[_0x1997('0x32')]=_[_0x1997('0x33')](_0x3354e7['query']);_0x3045e2[_0x1997('0x34')]=_[_0x1997('0x35')](_0x3045e2[_0x1997('0x31')],_0x3045e2[_0x1997('0x32')]);_0x42f306['attributes']=_[_0x1997('0x35')](_0x3045e2['model'],qs[_0x1997('0x36')](_0x3354e7[_0x1997('0x32')][_0x1997('0x36')]));_0x42f306[_0x1997('0x37')]=_0x42f306[_0x1997('0x37')][_0x1997('0x38')]?_0x42f306[_0x1997('0x37')]:_0x3045e2[_0x1997('0x31')];if(!_0x3354e7[_0x1997('0x32')][_0x1997('0x39')](_0x1997('0x3a'))){_0x42f306[_0x1997('0x1e')]=qs[_0x1997('0x1e')](_0x3354e7[_0x1997('0x32')][_0x1997('0x1e')]);_0x42f306['offset']=qs['offset'](_0x3354e7['query'][_0x1997('0x1c')]);}_0x42f306[_0x1997('0x3b')]=qs[_0x1997('0x3c')](_0x3354e7[_0x1997('0x32')]['sort']);_0x42f306[_0x1997('0x3d')]=qs[_0x1997('0x34')](_[_0x1997('0x3e')](_0x3354e7[_0x1997('0x32')],_0x3045e2[_0x1997('0x34')]),_0x2fdcc5);if(_0x3354e7[_0x1997('0x32')][_0x1997('0x3f')]){_0x42f306['where']=_[_0x1997('0x40')](_0x42f306[_0x1997('0x3d')],{'$or':_[_0x1997('0x2c')](_0x2fdcc5,function(_0x11abd1){if(_0x11abd1[_0x1997('0x30')]!==_0x1997('0x41')){var _0x4b7bf2={};_0x4b7bf2[_0x11abd1['name']]={'$like':'%'+_0x3354e7[_0x1997('0x32')][_0x1997('0x3f')]+'%'};return _0x4b7bf2;}})});}_0x42f306=_[_0x1997('0x40')]({},_0x42f306,_0x3354e7[_0x1997('0x42')]);var _0x53ab49={'where':_0x42f306[_0x1997('0x3d')]};return db[_0x1997('0x2d')][_0x1997('0x43')](_0x53ab49)[_0x1997('0x24')](function(_0x25fa86){_0x778641[_0x1997('0x43')]=_0x25fa86;if(_0x3354e7[_0x1997('0x32')]['includeAll']){_0x42f306[_0x1997('0x44')]=[{'all':!![]}];}return db[_0x1997('0x2d')][_0x1997('0x45')](_0x42f306);})[_0x1997('0x24')](function(_0x584054){_0x778641[_0x1997('0x46')]=_0x584054;return _0x778641;})[_0x1997('0x24')](respondWithFilteredResult(_0x171260,_0x42f306))[_0x1997('0x47')](handleError(_0x171260,null));};exports[_0x1997('0x48')]=function(_0x5f2f68,_0xa7b6b5){var _0x3cad94={'raw':![],'where':{'id':_0x5f2f68[_0x1997('0x49')]['id']}},_0x2d3f38={};_0x2d3f38[_0x1997('0x31')]=_[_0x1997('0x33')](db[_0x1997('0x2d')]['rawAttributes']);_0x2d3f38['query']=_[_0x1997('0x33')](_0x5f2f68[_0x1997('0x32')]);_0x2d3f38['filters']=_[_0x1997('0x35')](_0x2d3f38[_0x1997('0x31')],_0x2d3f38[_0x1997('0x32')]);_0x3cad94[_0x1997('0x37')]=_[_0x1997('0x35')](_0x2d3f38['model'],qs[_0x1997('0x36')](_0x5f2f68[_0x1997('0x32')]['fields']));_0x3cad94['attributes']=_0x3cad94[_0x1997('0x37')]['length']?_0x3cad94['attributes']:_0x2d3f38[_0x1997('0x31')];if(_0x5f2f68[_0x1997('0x32')]['includeAll']){_0x3cad94[_0x1997('0x44')]=[{'all':!![]}];}_0x3cad94=_[_0x1997('0x40')]({},_0x3cad94,_0x5f2f68[_0x1997('0x42')]);return db['Schedule'][_0x1997('0x4a')](_0x3cad94)[_0x1997('0x24')](handleEntityNotFound(_0xa7b6b5,null))['then'](respondWithResult(_0xa7b6b5,null))[_0x1997('0x47')](handleError(_0xa7b6b5,null));};exports['create']=function(_0x323528,_0x382875){return db[_0x1997('0x2d')][_0x1997('0x4b')](_0x323528[_0x1997('0x4c')],{})[_0x1997('0x24')](function(_0x36323d){var _0x512edf=_0x323528['user']['get']({'plain':!![]});if(!_0x512edf)throw new Error(_0x1997('0x4d'));if(_0x512edf[_0x1997('0x4e')]===_0x1997('0x4f')){var _0x4c0682=_0x36323d['get']({'plain':!![]});var _0x35bcca=_0x1997('0x50');return db['UserProfileSection'][_0x1997('0x4a')]({'where':{'name':_0x35bcca,'userProfileId':_0x512edf[_0x1997('0x51')]},'raw':!![]})['then'](function(_0x31645f){if(_0x31645f&&_0x31645f['autoAssociation']===0x0){return db[_0x1997('0x27')][_0x1997('0x4b')]({'name':_0x4c0682[_0x1997('0x29')],'resourceId':_0x4c0682['id'],'type':_0x31645f['name'],'sectionId':_0x31645f['id']},{})[_0x1997('0x24')](function(){return _0x36323d;});}else{return _0x36323d;}})[_0x1997('0x47')](function(_0x2e90da){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2e90da);throw _0x2e90da;});}return _0x36323d;})[_0x1997('0x24')](respondWithResult(_0x382875,0xc9))[_0x1997('0x47')](handleError(_0x382875,null));};exports[_0x1997('0x23')]=function(_0x4ff88f,_0x109f0c){if(_0x4ff88f[_0x1997('0x4c')]['id']){delete _0x4ff88f[_0x1997('0x4c')]['id'];}return db[_0x1997('0x2d')][_0x1997('0x4a')]({'where':{'id':_0x4ff88f[_0x1997('0x49')]['id']}})[_0x1997('0x24')](handleEntityNotFound(_0x109f0c,null))[_0x1997('0x24')](saveUpdates(_0x4ff88f['body'],null))[_0x1997('0x24')](respondWithResult(_0x109f0c,null))[_0x1997('0x47')](handleError(_0x109f0c,null));};exports[_0x1997('0x25')]=function(_0x6fe1be,_0x16d4de){return db[_0x1997('0x2d')]['find']({'where':{'id':_0x6fe1be[_0x1997('0x49')]['id']}})[_0x1997('0x24')](handleEntityNotFound(_0x16d4de,null))[_0x1997('0x24')](removeEntity(_0x16d4de,null))[_0x1997('0x47')](handleError(_0x16d4de,null));};exports['run']=function(_0x8768f4,_0x4e62c8,_0x1f3043){var _0x49a0e=require(_0x1997('0x52'));return db['Schedule'][_0x1997('0x4a')]({'where':{'id':_0x8768f4['params']['id']},'raw':!![]})[_0x1997('0x24')](handleEntityNotFound(_0x4e62c8,null))[_0x1997('0x24')](function(){_0x49a0e['run'](_0x8768f4[_0x1997('0x49')]['id']);})[_0x1997('0x24')](respondWithStatusCode(_0x4e62c8,null))[_0x1997('0x47')](handleError(_0x4e62c8,null));};
\ No newline at end of file
index cd65003..3781979 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc42=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./schedule.attributes','exports','define','Schedule','tools_schedules','util','../../config/logger','api'];(function(_0x23e7c1,_0x35110c){var _0x1add43=function(_0x238918){while(--_0x238918){_0x23e7c1['push'](_0x23e7c1['shift']());}};_0x1add43(++_0x35110c);}(_0xcc42,0x14d));var _0x2cc4=function(_0x54edc9,_0x345f01){_0x54edc9=_0x54edc9-0x0;var _0x2ae7a9=_0xcc42[_0x54edc9];return _0x2ae7a9;};'use strict';var _=require('lodash');var util=require(_0x2cc4('0x0'));var logger=require(_0x2cc4('0x1'))(_0x2cc4('0x2'));var moment=require(_0x2cc4('0x3'));var BPromise=require(_0x2cc4('0x4'));var rp=require(_0x2cc4('0x5'));var fs=require('fs');var path=require(_0x2cc4('0x6'));var rimraf=require(_0x2cc4('0x7'));var config=require(_0x2cc4('0x8'));var attributes=require(_0x2cc4('0x9'));module[_0x2cc4('0xa')]=function(_0x17a4ed,_0x217874){return _0x17a4ed[_0x2cc4('0xb')](_0x2cc4('0xc'),attributes,{'tableName':_0x2cc4('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb2ea=['path','rimraf','../../config/environment','exports','Schedule','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x480e40,_0x9a6aa){var _0x4c81a=function(_0x45beb8){while(--_0x45beb8){_0x480e40['push'](_0x480e40['shift']());}};_0x4c81a(++_0x9a6aa);}(_0xb2ea,0x179));var _0xab2e=function(_0x152a8d,_0x5c9019){_0x152a8d=_0x152a8d-0x0;var _0x144e3d=_0xb2ea[_0x152a8d];return _0x144e3d;};'use strict';var _=require(_0xab2e('0x0'));var util=require(_0xab2e('0x1'));var logger=require(_0xab2e('0x2'))(_0xab2e('0x3'));var moment=require(_0xab2e('0x4'));var BPromise=require(_0xab2e('0x5'));var rp=require(_0xab2e('0x6'));var fs=require('fs');var path=require(_0xab2e('0x7'));var rimraf=require(_0xab2e('0x8'));var config=require(_0xab2e('0x9'));var attributes=require('./schedule.attributes');module[_0xab2e('0xa')]=function(_0x2fa91f,_0xbf05a7){return _0x2fa91f['define'](_0xab2e('0xb'),attributes,{'tableName':'tools_schedules','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2f3984d..83bda16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffbe=['request\x20sent','Schedule,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','Schedule,\x20%s,\x20%s'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xffbe,0x99));var _0xeffb=function(_0x474fad,_0x3c0274){_0x474fad=_0x474fad-0x0;var _0x2948f2=_0xffbe[_0x474fad];return _0x2948f2;};'use strict';var _=require(_0xeffb('0x0'));var util=require('util');var moment=require(_0xeffb('0x1'));var BPromise=require(_0xeffb('0x2'));var rs=require(_0xeffb('0x3'));var fs=require('fs');var Redis=require(_0xeffb('0x4'));var db=require(_0xeffb('0x5'))['db'];var utils=require(_0xeffb('0x6'));var logger=require(_0xeffb('0x7'))(_0xeffb('0x8'));var config=require('../../config/environment');var jayson=require(_0xeffb('0x9'));var client=jayson[_0xeffb('0xa')][_0xeffb('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x24547f,_0x3c7c93,_0x277fab){return new BPromise(function(_0x138d2c,_0x261af2){return client['request'](_0x24547f,_0x277fab)[_0xeffb('0xc')](function(_0x4f10a7){logger[_0xeffb('0xd')](_0xeffb('0xe'),_0x3c7c93,_0xeffb('0xf'));logger['debug'](_0xeffb('0x10'),_0x3c7c93,'request\x20sent',JSON['stringify'](_0x4f10a7));if(_0x4f10a7[_0xeffb('0x11')]){if(_0x4f10a7[_0xeffb('0x11')]['code']===0x1f4){logger[_0xeffb('0x11')](_0xeffb('0xe'),_0x3c7c93,_0x4f10a7[_0xeffb('0x11')]['message']);return _0x261af2(_0x4f10a7[_0xeffb('0x11')][_0xeffb('0x12')]);}logger[_0xeffb('0x11')](_0xeffb('0xe'),_0x3c7c93,_0x4f10a7['error']['message']);return _0x138d2c(_0x4f10a7[_0xeffb('0x11')][_0xeffb('0x12')]);}else{logger[_0xeffb('0xd')]('Schedule,\x20%s,\x20%s',_0x3c7c93,_0xeffb('0xf'));_0x138d2c(_0x4f10a7[_0xeffb('0x13')][_0xeffb('0x12')]);}})[_0xeffb('0x14')](function(_0x5072d7){logger[_0xeffb('0x11')](_0xeffb('0xe'),_0x3c7c93,_0x5072d7);_0x261af2(_0x5072d7);});});}
\ No newline at end of file
+var _0x134b=['rpc','jayson/promise','client','http','info','Schedule,\x20%s,\x20%s','request\x20sent','debug','Schedule,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/logger'];(function(_0x54eae7,_0x2472ff){var _0x203420=function(_0x5d26d2){while(--_0x5d26d2){_0x54eae7['push'](_0x54eae7['shift']());}};_0x203420(++_0x2472ff);}(_0x134b,0xae));var _0xb134=function(_0x565ed7,_0x398228){_0x565ed7=_0x565ed7-0x0;var _0x183ad7=_0x134b[_0x565ed7];return _0x183ad7;};'use strict';var _=require(_0xb134('0x0'));var util=require(_0xb134('0x1'));var moment=require(_0xb134('0x2'));var BPromise=require(_0xb134('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb134('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xb134('0x5'))(_0xb134('0x6'));var config=require('../../config/environment');var jayson=require(_0xb134('0x7'));var client=jayson[_0xb134('0x8')][_0xb134('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5e18b9,_0x1f17ed,_0x186cd5){return new BPromise(function(_0x409ee3,_0x243463){return client['request'](_0x5e18b9,_0x186cd5)['then'](function(_0xc5dfbf){logger[_0xb134('0xa')](_0xb134('0xb'),_0x1f17ed,_0xb134('0xc'));logger[_0xb134('0xd')](_0xb134('0xe'),_0x1f17ed,_0xb134('0xc'),JSON['stringify'](_0xc5dfbf));if(_0xc5dfbf[_0xb134('0xf')]){if(_0xc5dfbf[_0xb134('0xf')][_0xb134('0x10')]===0x1f4){logger[_0xb134('0xf')](_0xb134('0xb'),_0x1f17ed,_0xc5dfbf[_0xb134('0xf')][_0xb134('0x11')]);return _0x243463(_0xc5dfbf[_0xb134('0xf')]['message']);}logger[_0xb134('0xf')](_0xb134('0xb'),_0x1f17ed,_0xc5dfbf[_0xb134('0xf')][_0xb134('0x11')]);return _0x409ee3(_0xc5dfbf[_0xb134('0xf')]['message']);}else{logger[_0xb134('0xa')](_0xb134('0xb'),_0x1f17ed,_0xb134('0xc'));_0x409ee3(_0xc5dfbf[_0xb134('0x12')][_0xb134('0x11')]);}})[_0xb134('0x13')](function(_0x1f58f2){logger[_0xb134('0xf')](_0xb134('0xb'),_0x1f17ed,_0x1f58f2);_0x243463(_0x1f58f2);});});}
\ No newline at end of file
index f3e4ef0..72131d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03ae=['/:id/download','download','post','create','put','/:id','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./screenRecording.controller','get','isAuthenticated','index','/describe','describe','show'];(function(_0x9cd4c3,_0x1c9b2c){var _0x4c9025=function(_0x25b3c6){while(--_0x25b3c6){_0x9cd4c3['push'](_0x9cd4c3['shift']());}};_0x4c9025(++_0x1c9b2c);}(_0x03ae,0x135));var _0xe03a=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0x03ae[_0x173441];return _0x2423a8;};'use strict';var multer=require(_0xe03a('0x0'));var util=require(_0xe03a('0x1'));var path=require(_0xe03a('0x2'));var timeout=require(_0xe03a('0x3'));var express=require('express');var router=express[_0xe03a('0x4')]();var fs_extra=require(_0xe03a('0x5'));var auth=require(_0xe03a('0x6'));var interaction=require(_0xe03a('0x7'));var config=require(_0xe03a('0x8'));var controller=require(_0xe03a('0x9'));router[_0xe03a('0xa')]('/',auth[_0xe03a('0xb')](),controller[_0xe03a('0xc')]);router[_0xe03a('0xa')](_0xe03a('0xd'),auth['isAuthenticated'](),controller[_0xe03a('0xe')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xe03a('0xf')]);router[_0xe03a('0xa')](_0xe03a('0x10'),auth[_0xe03a('0xb')](),controller[_0xe03a('0x11')]);router[_0xe03a('0x12')]('/',auth[_0xe03a('0xb')](),controller[_0xe03a('0x13')]);router[_0xe03a('0x14')](_0xe03a('0x15'),auth[_0xe03a('0xb')](),controller[_0xe03a('0x16')]);router[_0xe03a('0x17')](_0xe03a('0x15'),auth[_0xe03a('0xb')](),controller['destroy']);module[_0xe03a('0x18')]=router;
\ No newline at end of file
+var _0xe896=['get','/:id','put','update','delete','exports','multer','util','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','describe'];(function(_0x2382b5,_0x447dcf){var _0x4d5019=function(_0x4fd421){while(--_0x4fd421){_0x2382b5['push'](_0x2382b5['shift']());}};_0x4d5019(++_0x447dcf);}(_0xe896,0x15f));var _0x6e89=function(_0xc28010,_0x3c9617){_0xc28010=_0xc28010-0x0;var _0x3e6332=_0xe896[_0xc28010];return _0x3e6332;};'use strict';var multer=require(_0x6e89('0x0'));var util=require(_0x6e89('0x1'));var path=require(_0x6e89('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e89('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x6e89('0x4'));var interaction=require(_0x6e89('0x5'));var config=require(_0x6e89('0x6'));var controller=require('./screenRecording.controller');router['get']('/',auth[_0x6e89('0x7')](),controller['index']);router['get']('/describe',auth[_0x6e89('0x7')](),controller[_0x6e89('0x8')]);router[_0x6e89('0x9')](_0x6e89('0xa'),auth[_0x6e89('0x7')](),controller['show']);router['get']('/:id/download',auth[_0x6e89('0x7')](),controller['download']);router['post']('/',auth[_0x6e89('0x7')](),controller['create']);router[_0x6e89('0xb')](_0x6e89('0xa'),auth[_0x6e89('0x7')](),controller[_0x6e89('0xc')]);router[_0x6e89('0xd')](_0x6e89('0xa'),auth[_0x6e89('0x7')](),controller['destroy']);module[_0x6e89('0xe')]=router;
\ No newline at end of file
index a5bb569..b28c341 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1f9=['moment','path','../../config/environment','exports','getDataValue','value','extname','STRING','replace','setDataValue','INTEGER','startedAt','subtract','closedAt','duration','DATE','MM-DD-YYYY\x20HH:mm','format','toString','createdAt','updatedAt','sequelize'];(function(_0x8a7be1,_0xd364c){var _0x29d057=function(_0x5da1cf){while(--_0x5da1cf){_0x8a7be1['push'](_0x8a7be1['shift']());}};_0x29d057(++_0xd364c);}(_0xf1f9,0x1cd));var _0x9f1f=function(_0x5bd1d2,_0x58be8e){_0x5bd1d2=_0x5bd1d2-0x0;var _0x3f5480=_0xf1f9[_0x5bd1d2];return _0x3f5480;};'use strict';var Sequelize=require(_0x9f1f('0x0'));var moment=require(_0x9f1f('0x1'));var path=require(_0x9f1f('0x2'));var config=require(_0x9f1f('0x3'));module[_0x9f1f('0x4')]={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x9f1f('0x5')](_0x9f1f('0x6'))?path[_0x9f1f('0x7')](this[_0x9f1f('0x5')](_0x9f1f('0x6'))):undefined;}},'interactionid':{'type':Sequelize[_0x9f1f('0x8')]},'channel':{'type':Sequelize['STRING']},'value':{'type':Sequelize['STRING'],'set':function(_0x363d26){var _0x373b98=_0x363d26[_0x9f1f('0x9')](/\\/g,'/');this[_0x9f1f('0xa')]('value',_0x373b98);}},'rating':{'type':Sequelize[_0x9f1f('0xb')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x9f1f('0xb')],'set':function(_0x3efac2){this[_0x9f1f('0xa')](_0x9f1f('0xc'),moment()[_0x9f1f('0xd')](_0x3efac2,'ms'));this[_0x9f1f('0xa')](_0x9f1f('0xe'),moment());this['setDataValue'](_0x9f1f('0xf'),_0x3efac2);}},'startedAt':{'type':Sequelize[_0x9f1f('0x10')],'get':function(){return moment(this[_0x9f1f('0x5')]('startedAt'))['format'](_0x9f1f('0x11'))['toString']();}},'closedAt':{'type':Sequelize[_0x9f1f('0x10')],'get':function(){return moment(this[_0x9f1f('0x5')](_0x9f1f('0xe')))[_0x9f1f('0x12')](_0x9f1f('0x11'))[_0x9f1f('0x13')]();}},'createdAt':{'type':Sequelize[_0x9f1f('0x10')],'get':function(){return moment(this['getDataValue'](_0x9f1f('0x14')))['format'](_0x9f1f('0x11'))[_0x9f1f('0x13')]();}},'updatedAt':{'type':Sequelize[_0x9f1f('0x10')],'get':function(){return moment(this[_0x9f1f('0x5')](_0x9f1f('0x15')))['format'](_0x9f1f('0x11'))[_0x9f1f('0x13')]();}}};
\ No newline at end of file
+var _0xf108=['INTEGER','startedAt','subtract','closedAt','duration','DATE','format','MM-DD-YYYY\x20HH:mm','toString','createdAt','updatedAt','sequelize','path','../../config/environment','exports','extname','getDataValue','value','STRING','replace','setDataValue'];(function(_0x4243a3,_0x447337){var _0x1b2a33=function(_0x6a8200){while(--_0x6a8200){_0x4243a3['push'](_0x4243a3['shift']());}};_0x1b2a33(++_0x447337);}(_0xf108,0x1d9));var _0x8f10=function(_0x28cd35,_0x21fe5a){_0x28cd35=_0x28cd35-0x0;var _0x496f10=_0xf108[_0x28cd35];return _0x496f10;};'use strict';var Sequelize=require(_0x8f10('0x0'));var moment=require('moment');var path=require(_0x8f10('0x1'));var config=require(_0x8f10('0x2'));module[_0x8f10('0x3')]={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this['getDataValue']('value')?path[_0x8f10('0x4')](this[_0x8f10('0x5')](_0x8f10('0x6'))):undefined;}},'interactionid':{'type':Sequelize[_0x8f10('0x7')]},'channel':{'type':Sequelize[_0x8f10('0x7')]},'value':{'type':Sequelize[_0x8f10('0x7')],'set':function(_0x212efc){var _0x38b45f=_0x212efc[_0x8f10('0x8')](/\\/g,'/');this[_0x8f10('0x9')](_0x8f10('0x6'),_0x38b45f);}},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x8f10('0xa')],'set':function(_0x1787d2){this[_0x8f10('0x9')](_0x8f10('0xb'),moment()[_0x8f10('0xc')](_0x1787d2,'ms'));this[_0x8f10('0x9')](_0x8f10('0xd'),moment());this[_0x8f10('0x9')](_0x8f10('0xe'),_0x1787d2);}},'startedAt':{'type':Sequelize[_0x8f10('0xf')],'get':function(){return moment(this[_0x8f10('0x5')](_0x8f10('0xb')))[_0x8f10('0x10')](_0x8f10('0x11'))[_0x8f10('0x12')]();}},'closedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this['getDataValue'](_0x8f10('0xd')))[_0x8f10('0x10')](_0x8f10('0x11'))[_0x8f10('0x12')]();}},'createdAt':{'type':Sequelize[_0x8f10('0xf')],'get':function(){return moment(this[_0x8f10('0x5')](_0x8f10('0x13')))[_0x8f10('0x10')](_0x8f10('0x11'))['toString']();}},'updatedAt':{'type':Sequelize[_0x8f10('0xf')],'get':function(){return moment(this[_0x8f10('0x5')](_0x8f10('0x14')))['format'](_0x8f10('0x11'))[_0x8f10('0x12')]();}}};
\ No newline at end of file
index 7e39038..f6a67c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabce=['sendStatus','error','name','send','index','map','ScreenRecording','rawAttributes','type','model','differenceBy','format','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','where','merge','options','include','rows','includeAll','find','catch','create','body','createdAt','closedAt','value','params','describe','download','../../components/encryptor','uniqueid','%s.cypher','existsSync','decryptFile','recording','join','root','server/files/screen_recordings','Sequelize','ValidationError','ScreenRecording\x20not\x20found','unlink','Not\x20found','destroy','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','.cypher','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','status','end','json','limit','count','offset','Content-Range','apply','reject','save','update','then'];(function(_0x35b51c,_0x3e8fe0){var _0x2841a4=function(_0x3d4d51){while(--_0x3d4d51){_0x35b51c['push'](_0x35b51c['shift']());}};_0x2841a4(++_0x3e8fe0);}(_0xabce,0x103));var _0xeabc=function(_0x55e08b,_0x421620){_0x55e08b=_0x55e08b-0x0;var _0xd1a7ff=_0xabce[_0x55e08b];return _0xd1a7ff;};'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);};}exports[_0xeabc('0x2a')]=function(_0x48fb52,_0x2163e6){var _0x38572d={},_0x2b568f={},_0x2f8633={'count':0x0,'rows':[]};var _0x149170=_[_0xeabc('0x2b')](db[_0xeabc('0x2c')][_0xeabc('0x2d')],function(_0x2915c1){return{'name':_0x2915c1['fieldName'],'type':_0x2915c1[_0xeabc('0x2e')]['key']};});_0x2b568f[_0xeabc('0x2f')]=_[_0xeabc('0x30')](_[_0xeabc('0x2b')](_0x149170,_0xeabc('0x28')),[_0xeabc('0x31')]);_0x2b568f[_0xeabc('0x32')]=_[_0xeabc('0x33')](_0x48fb52['query']);_0x2b568f[_0xeabc('0x34')]=_[_0xeabc('0x35')](_0x2b568f[_0xeabc('0x2f')],_0x2b568f['query']);_0x38572d[_0xeabc('0x36')]=_[_0xeabc('0x35')](_0x2b568f[_0xeabc('0x2f')],qs['fields'](_0x48fb52[_0xeabc('0x32')][_0xeabc('0x37')]));_0x38572d[_0xeabc('0x36')]=_0x38572d['attributes'][_0xeabc('0x38')]?_0x38572d[_0xeabc('0x36')]:_0x2b568f['model'];if(!_0x48fb52['query'][_0xeabc('0x39')](_0xeabc('0x3a'))){_0x38572d['limit']=qs[_0xeabc('0x1d')](_0x48fb52[_0xeabc('0x32')][_0xeabc('0x1d')]);_0x38572d[_0xeabc('0x1f')]=qs[_0xeabc('0x1f')](_0x48fb52['query'][_0xeabc('0x1f')]);}_0x38572d['order']=qs[_0xeabc('0x3b')](_0x48fb52[_0xeabc('0x32')][_0xeabc('0x3b')]);_0x38572d['where']=qs['filters'](_[_0xeabc('0x3c')](_0x48fb52['query'],_0x2b568f[_0xeabc('0x34')]),_0x149170);if(_0x48fb52['query']['filter']){_0x38572d['where']=_['merge'](_0x38572d[_0xeabc('0x3d')],{'$or':_['map'](_0x149170,function(_0x257fe8){if(_0x257fe8[_0xeabc('0x2e')]!=='VIRTUAL'){var _0xe8fa6e={};_0xe8fa6e[_0x257fe8['name']]={'$like':'%'+_0x48fb52[_0xeabc('0x32')]['filter']+'%'};return _0xe8fa6e;}})});}_0x38572d=_[_0xeabc('0x3e')]({},_0x38572d,_0x48fb52[_0xeabc('0x3f')]);var _0xeeef02={'where':_0x38572d['where']};return db['ScreenRecording']['count'](_0xeeef02)[_0xeabc('0x25')](function(_0x23fb33){_0x2f8633[_0xeabc('0x1e')]=_0x23fb33;if(_0x48fb52['query']['includeAll']){_0x38572d[_0xeabc('0x40')]=[{'all':!![]}];}return db[_0xeabc('0x2c')]['findAll'](_0x38572d);})[_0xeabc('0x25')](function(_0x5e0b78){_0x2f8633[_0xeabc('0x41')]=_0x5e0b78;return _0x2f8633;})['then'](respondWithFilteredResult(_0x2163e6,_0x38572d))['catch'](handleError(_0x2163e6,null));};exports['show']=function(_0x25958b,_0x37c926){var _0xd03226={'raw':![],'where':{'id':_0x25958b['params']['id']}},_0x3eeeb5={};_0x3eeeb5[_0xeabc('0x2f')]=_['keys'](db[_0xeabc('0x2c')][_0xeabc('0x2d')]);_0x3eeeb5[_0xeabc('0x32')]=_[_0xeabc('0x33')](_0x25958b[_0xeabc('0x32')]);_0x3eeeb5['filters']=_['intersection'](_0x3eeeb5[_0xeabc('0x2f')],_0x3eeeb5['query']);_0xd03226[_0xeabc('0x36')]=_[_0xeabc('0x35')](_0x3eeeb5['model'],qs[_0xeabc('0x37')](_0x25958b[_0xeabc('0x32')][_0xeabc('0x37')]));_0xd03226[_0xeabc('0x36')]=_0xd03226[_0xeabc('0x36')][_0xeabc('0x38')]?_0xd03226[_0xeabc('0x36')]:_0x3eeeb5['model'];if(_0x25958b[_0xeabc('0x32')][_0xeabc('0x42')]){_0xd03226[_0xeabc('0x40')]=[{'all':!![]}];}_0xd03226=_[_0xeabc('0x3e')]({},_0xd03226,_0x25958b[_0xeabc('0x3f')]);return db[_0xeabc('0x2c')][_0xeabc('0x43')](_0xd03226)[_0xeabc('0x25')](handleEntityNotFound(_0x37c926,null))[_0xeabc('0x25')](respondWithResult(_0x37c926,null))[_0xeabc('0x44')](handleError(_0x37c926,null));};exports['create']=function(_0x38356c,_0x2e6efb){return db[_0xeabc('0x2c')][_0xeabc('0x45')](_0x38356c[_0xeabc('0x46')],{})[_0xeabc('0x25')](respondWithResult(_0x2e6efb,0xc9))[_0xeabc('0x44')](handleError(_0x2e6efb,null));};exports['update']=function(_0x766743,_0x32e09b){if(_0x766743[_0xeabc('0x46')]['id']){delete _0x766743[_0xeabc('0x46')]['id'];}delete _0x766743[_0xeabc('0x46')]['duration'];delete _0x766743[_0xeabc('0x46')][_0xeabc('0x47')];delete _0x766743[_0xeabc('0x46')][_0xeabc('0x48')];delete _0x766743['body'][_0xeabc('0x49')];return db[_0xeabc('0x2c')]['find']({'where':{'id':_0x766743[_0xeabc('0x4a')]['id']}})['then'](handleEntityNotFound(_0x32e09b,null))[_0xeabc('0x25')](saveUpdates(_0x766743['body'],null))[_0xeabc('0x25')](respondWithResult(_0x32e09b,null))[_0xeabc('0x44')](handleError(_0x32e09b,null));};exports[_0xeabc('0x4b')]=function(_0x1524c3,_0x1ee837){return db[_0xeabc('0x2c')][_0xeabc('0x4b')]()[_0xeabc('0x25')](respondWithResult(_0x1ee837,null))[_0xeabc('0x44')](handleError(_0x1ee837,null));};exports[_0xeabc('0x4c')]=function(_0x48a13f,_0x180a14,_0x2537ab){var _0x4072cb=require(_0xeabc('0x4d'));var _0x555d6b=![];var _0x1cef45={};if(_0x48a13f[_0xeabc('0x32')][_0xeabc('0x2e')]&&_0x48a13f[_0xeabc('0x32')]['type']===_0xeabc('0x4e')){_0x1cef45[_0xeabc('0x4e')]=_0x48a13f[_0xeabc('0x4a')]['id'];}else{_0x1cef45['id']=_0x48a13f[_0xeabc('0x4a')]['id'];}return db[_0xeabc('0x2c')][_0xeabc('0x43')]({'where':_0x1cef45,'attributes':['id',_0xeabc('0x49')],'raw':!![]})[_0xeabc('0x25')](handleEntityNotFound(_0x180a14,null))[_0xeabc('0x25')](function(_0x58ab08){if(_0x58ab08){var _0x4546c4=path['join'](config['root'],'server/files/screen_recordings',_0x58ab08[_0xeabc('0x49')]);var _0x8d4cca=util[_0xeabc('0x31')](_0xeabc('0x4f'),_0x4546c4);if(fs[_0xeabc('0x50')](_0x8d4cca)){_0x555d6b=!![];return _0x4072cb[_0xeabc('0x51')](_0x8d4cca,_0x4546c4,config['secrets'][_0xeabc('0x52')])[_0xeabc('0x25')](function(){return _0x58ab08;});}return _0x58ab08;}})[_0xeabc('0x25')](function(_0x104c1e){if(_0x104c1e){var _0x2ddc53=path[_0xeabc('0x53')](config[_0xeabc('0x54')],_0xeabc('0x55'),_0x104c1e['value']);if(!fs['existsSync'](_0x2ddc53)){throw new db[(_0xeabc('0x56'))][(_0xeabc('0x57'))](_0xeabc('0x58'));}if(_0x104c1e['filename']){return _0x180a14[_0xeabc('0x4c')](_0x2ddc53,_0x104c1e['filename']+path['extname'](_0x2ddc53),function(){if(_0x555d6b){fs[_0xeabc('0x59')](_0x2ddc53);}});}else{return _0x180a14[_0xeabc('0x4c')](_0x2ddc53,function(_0x13f04f){if(_0x555d6b){fs[_0xeabc('0x59')](_0x2ddc53);}});}}})[_0xeabc('0x44')](function(_0xc2ef0c){if(_0xc2ef0c['message']===_0xeabc('0x58')){_0x180a14[_0xeabc('0x1a')](0x194)[_0xeabc('0x29')](_0xeabc('0x5a'));}else{return handleError(_0x180a14,null);}});};exports[_0xeabc('0x5b')]=function(_0x514787,_0x5c61b4){return db[_0xeabc('0x2c')][_0xeabc('0x43')]({'where':{'id':_0x514787[_0xeabc('0x4a')]['id']}})[_0xeabc('0x25')](function(_0x1b61a8){if(_[_0xeabc('0x5c')](_0x1b61a8)){throw new ReferenceError(_0xeabc('0x5d'));}return _0x1b61a8;})[_0xeabc('0x25')](function(_0x3f829b){var _0x54d2b3=path[_0xeabc('0x53')](config['root'],_0xeabc('0x55'),_0x3f829b[_0xeabc('0x49')]);logger[_0xeabc('0x5e')](_0xeabc('0x5f'),_0x54d2b3);if(!_[_0xeabc('0x5c')](_0x3f829b[_0xeabc('0x49')])&&fs[_0xeabc('0x50')](_0x54d2b3)){logger[_0xeabc('0x5e')](_0xeabc('0x60')+_0x54d2b3+_0xeabc('0x61'));fs['unlinkSync'](_0x54d2b3);}_0x54d2b3=_0x54d2b3+_0xeabc('0x62');if(!_[_0xeabc('0x5c')](_0x3f829b[_0xeabc('0x49')])&&fs[_0xeabc('0x50')](_0x54d2b3)){logger['info'](_0xeabc('0x60')+_0x54d2b3+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs['unlinkSync'](_0x54d2b3);}return _0x3f829b;})[_0xeabc('0x25')](function(_0x11bc62){if(!_0x11bc62)throw new InternalError();return _0x11bc62[_0xeabc('0x5b')]();})[_0xeabc('0x25')](function(){_0x5c61b4['status'](0xcc)['end']();})[_0xeabc('0x44')](handleError(_0x5c61b4,null));};
\ No newline at end of file
+var _0x5fc3=['status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','then','destroy','name','send','map','ScreenRecording','fieldName','type','model','differenceBy','format','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','options','include','rows','catch','show','params','length','includeAll','find','create','body','createdAt','closedAt','value','describe','download','../../components/encryptor','uniqueid','root','server/files/screen_recordings','existsSync','decryptFile','secrets','join','Sequelize','ValidationError','filename','unlink','message','ScreenRecording\x20not\x20found','isNil','Entity\x20not\x20found','cancellazione\x20fisica\x20documento\x20%s','info','File:\x20\x22','unlinkSync','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus'];(function(_0x12be01,_0x4f9734){var _0x44ea2e=function(_0x12894a){while(--_0x12894a){_0x12be01['push'](_0x12be01['shift']());}};_0x44ea2e(++_0x4f9734);}(_0x5fc3,0xa8));var _0x35fc=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0x5fc3[_0x5f1391];return _0x50ebe3;};'use strict';var emlformat=require(_0x35fc('0x0'));var rimraf=require(_0x35fc('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x35fc('0x2'));var rp=require(_0x35fc('0x3'));var moment=require(_0x35fc('0x4'));var BPromise=require(_0x35fc('0x5'));var Mustache=require(_0x35fc('0x6'));var util=require('util');var path=require(_0x35fc('0x7'));var sox=require(_0x35fc('0x8'));var csv=require(_0x35fc('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x35fc('0xa'));var squel=require('squel');var crypto=require(_0x35fc('0xb'));var jsforce=require(_0x35fc('0xc'));var deskjs=require(_0x35fc('0xd'));var toCsv=require(_0x35fc('0x9'));var querystring=require(_0x35fc('0xe'));var Papa=require(_0x35fc('0xf'));var Redis=require(_0x35fc('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x35fc('0x11'));var as=require(_0x35fc('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x35fc('0x13'))(_0x35fc('0x14'));var utils=require('../../config/utils');var config=require(_0x35fc('0x15'));var licenseUtil=require(_0x35fc('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4cbe74,_0x409357){_0x409357=_0x409357||0xcc;return function(_0x5d462a){if(_0x5d462a){return _0x4cbe74[_0x35fc('0x17')](_0x409357);}return _0x4cbe74[_0x35fc('0x18')](_0x409357)[_0x35fc('0x19')]();};}function respondWithResult(_0x29730f,_0x38d9f2){_0x38d9f2=_0x38d9f2||0xc8;return function(_0x5cfe94){if(_0x5cfe94){return _0x29730f['status'](_0x38d9f2)['json'](_0x5cfe94);}};}function respondWithFilteredResult(_0x558364,_0x398b67){return function(_0x229d56){if(_0x229d56){var _0x53b898=typeof _0x398b67[_0x35fc('0x1a')]===_0x35fc('0x1b')&&typeof _0x398b67[_0x35fc('0x1c')]==='undefined';var _0x26ba54=_0x229d56[_0x35fc('0x1d')];var _0x553677=_0x53b898?0x0:_0x398b67[_0x35fc('0x1a')];var _0x363e47=_0x53b898?_0x229d56[_0x35fc('0x1d')]:_0x398b67['offset']+_0x398b67[_0x35fc('0x1c')];var _0x3c58ea;if(_0x363e47>=_0x26ba54){_0x363e47=_0x26ba54;_0x3c58ea=0xc8;}else{_0x3c58ea=0xce;}_0x558364[_0x35fc('0x18')](_0x3c58ea);return _0x558364['set'](_0x35fc('0x1e'),_0x553677+'-'+_0x363e47+'/'+_0x26ba54)[_0x35fc('0x1f')](_0x229d56);}return null;};}function patchUpdates(_0x3229d1){return function(_0x251a1f){try{jsonpatch[_0x35fc('0x20')](_0x251a1f,_0x3229d1,!![]);}catch(_0x21f1a9){return BPromise[_0x35fc('0x21')](_0x21f1a9);}return _0x251a1f[_0x35fc('0x22')]();};}function saveUpdates(_0x2405e8,_0x427eae){return function(_0x5bd2b8){if(_0x5bd2b8){return _0x5bd2b8[_0x35fc('0x23')](_0x2405e8)[_0x35fc('0x24')](function(_0x257719){return _0x257719;});}return null;};}function removeEntity(_0x2d8183,_0x3b4743){return function(_0x55e9e7){if(_0x55e9e7){return _0x55e9e7[_0x35fc('0x25')]()[_0x35fc('0x24')](function(){_0x2d8183['status'](0xcc)[_0x35fc('0x19')]();});}};}function handleEntityNotFound(_0x5a93df,_0x3d4a98){return function(_0x51cfec){if(!_0x51cfec){_0x5a93df[_0x35fc('0x17')](0x194);}return _0x51cfec;};}function handleError(_0x598d7a,_0x1bf180){_0x1bf180=_0x1bf180||0x1f4;return function(_0xdfab9f){logger['error'](_0xdfab9f['stack']);if(_0xdfab9f[_0x35fc('0x26')]){delete _0xdfab9f['name'];}_0x598d7a[_0x35fc('0x18')](_0x1bf180)[_0x35fc('0x27')](_0xdfab9f);};}exports['index']=function(_0x26b7cb,_0x645eac){var _0x383837={},_0x9f3c8a={},_0x3735da={'count':0x0,'rows':[]};var _0x134dfa=_[_0x35fc('0x28')](db[_0x35fc('0x29')]['rawAttributes'],function(_0x1cd1ae){return{'name':_0x1cd1ae[_0x35fc('0x2a')],'type':_0x1cd1ae[_0x35fc('0x2b')]['key']};});_0x9f3c8a[_0x35fc('0x2c')]=_[_0x35fc('0x2d')](_[_0x35fc('0x28')](_0x134dfa,_0x35fc('0x26')),[_0x35fc('0x2e')]);_0x9f3c8a[_0x35fc('0x2f')]=_[_0x35fc('0x30')](_0x26b7cb[_0x35fc('0x2f')]);_0x9f3c8a[_0x35fc('0x31')]=_[_0x35fc('0x32')](_0x9f3c8a['model'],_0x9f3c8a['query']);_0x383837[_0x35fc('0x33')]=_['intersection'](_0x9f3c8a[_0x35fc('0x2c')],qs[_0x35fc('0x34')](_0x26b7cb[_0x35fc('0x2f')][_0x35fc('0x34')]));_0x383837[_0x35fc('0x33')]=_0x383837[_0x35fc('0x33')]['length']?_0x383837[_0x35fc('0x33')]:_0x9f3c8a[_0x35fc('0x2c')];if(!_0x26b7cb[_0x35fc('0x2f')][_0x35fc('0x35')](_0x35fc('0x36'))){_0x383837[_0x35fc('0x1c')]=qs['limit'](_0x26b7cb[_0x35fc('0x2f')][_0x35fc('0x1c')]);_0x383837[_0x35fc('0x1a')]=qs['offset'](_0x26b7cb[_0x35fc('0x2f')]['offset']);}_0x383837[_0x35fc('0x37')]=qs[_0x35fc('0x38')](_0x26b7cb[_0x35fc('0x2f')][_0x35fc('0x38')]);_0x383837['where']=qs['filters'](_['pick'](_0x26b7cb[_0x35fc('0x2f')],_0x9f3c8a['filters']),_0x134dfa);if(_0x26b7cb[_0x35fc('0x2f')]['filter']){_0x383837[_0x35fc('0x39')]=_[_0x35fc('0x3a')](_0x383837[_0x35fc('0x39')],{'$or':_[_0x35fc('0x28')](_0x134dfa,function(_0x1c10e0){if(_0x1c10e0[_0x35fc('0x2b')]!==_0x35fc('0x3b')){var _0x4ec0dc={};_0x4ec0dc[_0x1c10e0[_0x35fc('0x26')]]={'$like':'%'+_0x26b7cb[_0x35fc('0x2f')]['filter']+'%'};return _0x4ec0dc;}})});}_0x383837=_[_0x35fc('0x3a')]({},_0x383837,_0x26b7cb[_0x35fc('0x3c')]);var _0x1aac67={'where':_0x383837[_0x35fc('0x39')]};return db[_0x35fc('0x29')][_0x35fc('0x1d')](_0x1aac67)['then'](function(_0x3f6480){_0x3735da[_0x35fc('0x1d')]=_0x3f6480;if(_0x26b7cb[_0x35fc('0x2f')]['includeAll']){_0x383837[_0x35fc('0x3d')]=[{'all':!![]}];}return db[_0x35fc('0x29')]['findAll'](_0x383837);})[_0x35fc('0x24')](function(_0x280af1){_0x3735da[_0x35fc('0x3e')]=_0x280af1;return _0x3735da;})[_0x35fc('0x24')](respondWithFilteredResult(_0x645eac,_0x383837))[_0x35fc('0x3f')](handleError(_0x645eac,null));};exports[_0x35fc('0x40')]=function(_0x211b70,_0x3ec51f){var _0x5a7e9e={'raw':![],'where':{'id':_0x211b70[_0x35fc('0x41')]['id']}},_0x596e83={};_0x596e83[_0x35fc('0x2c')]=_['keys'](db['ScreenRecording']['rawAttributes']);_0x596e83[_0x35fc('0x2f')]=_[_0x35fc('0x30')](_0x211b70['query']);_0x596e83[_0x35fc('0x31')]=_[_0x35fc('0x32')](_0x596e83[_0x35fc('0x2c')],_0x596e83[_0x35fc('0x2f')]);_0x5a7e9e['attributes']=_['intersection'](_0x596e83['model'],qs['fields'](_0x211b70['query'][_0x35fc('0x34')]));_0x5a7e9e[_0x35fc('0x33')]=_0x5a7e9e['attributes'][_0x35fc('0x42')]?_0x5a7e9e['attributes']:_0x596e83[_0x35fc('0x2c')];if(_0x211b70[_0x35fc('0x2f')][_0x35fc('0x43')]){_0x5a7e9e[_0x35fc('0x3d')]=[{'all':!![]}];}_0x5a7e9e=_[_0x35fc('0x3a')]({},_0x5a7e9e,_0x211b70['options']);return db[_0x35fc('0x29')][_0x35fc('0x44')](_0x5a7e9e)['then'](handleEntityNotFound(_0x3ec51f,null))[_0x35fc('0x24')](respondWithResult(_0x3ec51f,null))[_0x35fc('0x3f')](handleError(_0x3ec51f,null));};exports[_0x35fc('0x45')]=function(_0x211746,_0x5bc8c3){return db[_0x35fc('0x29')]['create'](_0x211746['body'],{})[_0x35fc('0x24')](respondWithResult(_0x5bc8c3,0xc9))[_0x35fc('0x3f')](handleError(_0x5bc8c3,null));};exports[_0x35fc('0x23')]=function(_0xca8aef,_0xf2ca20){if(_0xca8aef[_0x35fc('0x46')]['id']){delete _0xca8aef[_0x35fc('0x46')]['id'];}delete _0xca8aef[_0x35fc('0x46')]['duration'];delete _0xca8aef[_0x35fc('0x46')][_0x35fc('0x47')];delete _0xca8aef[_0x35fc('0x46')][_0x35fc('0x48')];delete _0xca8aef[_0x35fc('0x46')][_0x35fc('0x49')];return db[_0x35fc('0x29')][_0x35fc('0x44')]({'where':{'id':_0xca8aef[_0x35fc('0x41')]['id']}})[_0x35fc('0x24')](handleEntityNotFound(_0xf2ca20,null))[_0x35fc('0x24')](saveUpdates(_0xca8aef[_0x35fc('0x46')],null))[_0x35fc('0x24')](respondWithResult(_0xf2ca20,null))[_0x35fc('0x3f')](handleError(_0xf2ca20,null));};exports['describe']=function(_0x553ed6,_0x144f77){return db[_0x35fc('0x29')][_0x35fc('0x4a')]()[_0x35fc('0x24')](respondWithResult(_0x144f77,null))[_0x35fc('0x3f')](handleError(_0x144f77,null));};exports[_0x35fc('0x4b')]=function(_0x4a4798,_0x4f024c,_0x388521){var _0x19b2ce=require(_0x35fc('0x4c'));var _0x38bc78=![];var _0x5b2595={};if(_0x4a4798[_0x35fc('0x2f')][_0x35fc('0x2b')]&&_0x4a4798['query'][_0x35fc('0x2b')]===_0x35fc('0x4d')){_0x5b2595['uniqueid']=_0x4a4798[_0x35fc('0x41')]['id'];}else{_0x5b2595['id']=_0x4a4798[_0x35fc('0x41')]['id'];}return db[_0x35fc('0x29')][_0x35fc('0x44')]({'where':_0x5b2595,'attributes':['id','value'],'raw':!![]})['then'](handleEntityNotFound(_0x4f024c,null))['then'](function(_0x240338){if(_0x240338){var _0x2ea8d6=path['join'](config[_0x35fc('0x4e')],_0x35fc('0x4f'),_0x240338[_0x35fc('0x49')]);var _0x145854=util[_0x35fc('0x2e')]('%s.cypher',_0x2ea8d6);if(fs[_0x35fc('0x50')](_0x145854)){_0x38bc78=!![];return _0x19b2ce[_0x35fc('0x51')](_0x145854,_0x2ea8d6,config[_0x35fc('0x52')]['recording'])[_0x35fc('0x24')](function(){return _0x240338;});}return _0x240338;}})[_0x35fc('0x24')](function(_0x47fb1a){if(_0x47fb1a){var _0x35a676=path[_0x35fc('0x53')](config[_0x35fc('0x4e')],_0x35fc('0x4f'),_0x47fb1a[_0x35fc('0x49')]);if(!fs[_0x35fc('0x50')](_0x35a676)){throw new db[(_0x35fc('0x54'))][(_0x35fc('0x55'))]('ScreenRecording\x20not\x20found');}if(_0x47fb1a[_0x35fc('0x56')]){return _0x4f024c[_0x35fc('0x4b')](_0x35a676,_0x47fb1a[_0x35fc('0x56')]+path['extname'](_0x35a676),function(){if(_0x38bc78){fs[_0x35fc('0x57')](_0x35a676);}});}else{return _0x4f024c['download'](_0x35a676,function(_0x4ceacc){if(_0x38bc78){fs['unlink'](_0x35a676);}});}}})[_0x35fc('0x3f')](function(_0xb1c68a){if(_0xb1c68a[_0x35fc('0x58')]===_0x35fc('0x59')){_0x4f024c[_0x35fc('0x18')](0x194)['send']('Not\x20found');}else{return handleError(_0x4f024c,null);}});};exports['destroy']=function(_0x4faef4,_0x51d231){return db[_0x35fc('0x29')][_0x35fc('0x44')]({'where':{'id':_0x4faef4[_0x35fc('0x41')]['id']}})[_0x35fc('0x24')](function(_0x511e8b){if(_[_0x35fc('0x5a')](_0x511e8b)){throw new ReferenceError(_0x35fc('0x5b'));}return _0x511e8b;})[_0x35fc('0x24')](function(_0x1b0063){var _0x37bea1=path[_0x35fc('0x53')](config[_0x35fc('0x4e')],_0x35fc('0x4f'),_0x1b0063[_0x35fc('0x49')]);logger['info'](_0x35fc('0x5c'),_0x37bea1);if(!_['isNil'](_0x1b0063[_0x35fc('0x49')])&&fs[_0x35fc('0x50')](_0x37bea1)){logger[_0x35fc('0x5d')](_0x35fc('0x5e')+_0x37bea1+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x35fc('0x5f')](_0x37bea1);}_0x37bea1=_0x37bea1+'.cypher';if(!_['isNil'](_0x1b0063['value'])&&fs[_0x35fc('0x50')](_0x37bea1)){logger['info'](_0x35fc('0x5e')+_0x37bea1+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x35fc('0x5f')](_0x37bea1);}return _0x1b0063;})['then'](function(_0x42a53a){if(!_0x42a53a)throw new InternalError();return _0x42a53a[_0x35fc('0x25')]();})[_0x35fc('0x24')](function(){_0x51d231[_0x35fc('0x18')](0xcc)['end']();})[_0x35fc('0x3f')](handleError(_0x51d231,null));};
\ No newline at end of file
index d20912f..cf188b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9c7=['path','../../config/environment','./screenRecording.attributes','exports','define','ScreenRecording','interactionid','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x19e928,_0x26a0e4){var _0x4e941f=function(_0x52a5cd){while(--_0x52a5cd){_0x19e928['push'](_0x19e928['shift']());}};_0x4e941f(++_0x26a0e4);}(_0xf9c7,0x173));var _0x7f9c=function(_0x310302,_0x425fd4){_0x310302=_0x310302-0x0;var _0x8c5d17=_0xf9c7[_0x310302];return _0x8c5d17;};'use strict';var _=require(_0x7f9c('0x0'));var util=require('util');var logger=require(_0x7f9c('0x1'))(_0x7f9c('0x2'));var moment=require(_0x7f9c('0x3'));var BPromise=require(_0x7f9c('0x4'));var rp=require(_0x7f9c('0x5'));var fs=require('fs');var path=require(_0x7f9c('0x6'));var rimraf=require('rimraf');var config=require(_0x7f9c('0x7'));var attributes=require(_0x7f9c('0x8'));module[_0x7f9c('0x9')]=function(_0x43af23,_0x25865e){return _0x43af23[_0x7f9c('0xa')](_0x7f9c('0xb'),attributes,{'tableName':'screen_recordings','paranoid':![],'indexes':[{'name':'interactionid','fields':[_0x7f9c('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb17b=['../../config/logger','api','bluebird','path','rimraf','../../config/environment','./screenRecording.attributes','define','lodash','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb17b,0x198));var _0xbb17=function(_0x95bd1b,_0x13e180){_0x95bd1b=_0x95bd1b-0x0;var _0x5f4201=_0xb17b[_0x95bd1b];return _0x5f4201;};'use strict';var _=require(_0xbb17('0x0'));var util=require(_0xbb17('0x1'));var logger=require(_0xbb17('0x2'))(_0xbb17('0x3'));var moment=require('moment');var BPromise=require(_0xbb17('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbb17('0x5'));var rimraf=require(_0xbb17('0x6'));var config=require(_0xbb17('0x7'));var attributes=require(_0xbb17('0x8'));module['exports']=function(_0x3e49e1,_0xf9eb2a){return _0x3e49e1[_0xbb17('0x9')]('ScreenRecording',attributes,{'tableName':'screen_recordings','paranoid':![],'indexes':[{'name':'interactionid','fields':['interactionid']}],'timestamps':!![]});};
\ No newline at end of file
index 1c6c4a2..5842b2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1368=['stringify','error','code','ScreenRecording,\x20%s,\x20%s','message','info','catch','lodash','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','request\x20sent','debug','ScreenRecording,\x20%s,\x20%s,\x20%s'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1368,0x8b));var _0x8136=function(_0x485514,_0x17778a){_0x485514=_0x485514-0x0;var _0x16dc27=_0x1368[_0x485514];return _0x16dc27;};'use strict';var _=require(_0x8136('0x0'));var util=require('util');var moment=require(_0x8136('0x1'));var BPromise=require('bluebird');var rs=require(_0x8136('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8136('0x3'))['db'];var utils=require(_0x8136('0x4'));var logger=require(_0x8136('0x5'))(_0x8136('0x6'));var config=require('../../config/environment');var jayson=require(_0x8136('0x7'));var client=jayson[_0x8136('0x8')][_0x8136('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5f39ae,_0x4a842f,_0x485afc){return new BPromise(function(_0x1fc94e,_0x3b89bd){return client[_0x8136('0xa')](_0x5f39ae,_0x485afc)[_0x8136('0xb')](function(_0x5591b5){logger['info']('ScreenRecording,\x20%s,\x20%s',_0x4a842f,_0x8136('0xc'));logger[_0x8136('0xd')](_0x8136('0xe'),_0x4a842f,_0x8136('0xc'),JSON[_0x8136('0xf')](_0x5591b5));if(_0x5591b5[_0x8136('0x10')]){if(_0x5591b5[_0x8136('0x10')][_0x8136('0x11')]===0x1f4){logger[_0x8136('0x10')](_0x8136('0x12'),_0x4a842f,_0x5591b5[_0x8136('0x10')][_0x8136('0x13')]);return _0x3b89bd(_0x5591b5[_0x8136('0x10')]['message']);}logger[_0x8136('0x10')]('ScreenRecording,\x20%s,\x20%s',_0x4a842f,_0x5591b5[_0x8136('0x10')][_0x8136('0x13')]);return _0x1fc94e(_0x5591b5[_0x8136('0x10')][_0x8136('0x13')]);}else{logger[_0x8136('0x14')]('ScreenRecording,\x20%s,\x20%s',_0x4a842f,_0x8136('0xc'));_0x1fc94e(_0x5591b5['result']['message']);}})[_0x8136('0x15')](function(_0x1779bc){logger[_0x8136('0x10')](_0x8136('0x12'),_0x4a842f,_0x1779bc);_0x3b89bd(_0x1779bc);});});}
\ No newline at end of file
+var _0x8a2e=['debug','stringify','error','code','ScreenRecording,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','then','info','request\x20sent'];(function(_0x2773f4,_0x5d781e){var _0x16f4a0=function(_0x51133a){while(--_0x51133a){_0x2773f4['push'](_0x2773f4['shift']());}};_0x16f4a0(++_0x5d781e);}(_0x8a2e,0x152));var _0xe8a2=function(_0x25dd7e,_0x27c72c){_0x25dd7e=_0x25dd7e-0x0;var _0x1754d3=_0x8a2e[_0x25dd7e];return _0x1754d3;};'use strict';var _=require(_0xe8a2('0x0'));var util=require(_0xe8a2('0x1'));var moment=require(_0xe8a2('0x2'));var BPromise=require(_0xe8a2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe8a2('0x4'));var db=require(_0xe8a2('0x5'))['db'];var utils=require(_0xe8a2('0x6'));var logger=require(_0xe8a2('0x7'))(_0xe8a2('0x8'));var config=require('../../config/environment');var jayson=require(_0xe8a2('0x9'));var client=jayson[_0xe8a2('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x222b01,_0x2b9fac,_0x352a3b){return new BPromise(function(_0x4c1b41,_0xcc5c2c){return client['request'](_0x222b01,_0x352a3b)[_0xe8a2('0xb')](function(_0xec934f){logger[_0xe8a2('0xc')]('ScreenRecording,\x20%s,\x20%s',_0x2b9fac,_0xe8a2('0xd'));logger[_0xe8a2('0xe')]('ScreenRecording,\x20%s,\x20%s,\x20%s',_0x2b9fac,_0xe8a2('0xd'),JSON[_0xe8a2('0xf')](_0xec934f));if(_0xec934f[_0xe8a2('0x10')]){if(_0xec934f[_0xe8a2('0x10')][_0xe8a2('0x11')]===0x1f4){logger[_0xe8a2('0x10')](_0xe8a2('0x12'),_0x2b9fac,_0xec934f['error'][_0xe8a2('0x13')]);return _0xcc5c2c(_0xec934f[_0xe8a2('0x10')]['message']);}logger[_0xe8a2('0x10')](_0xe8a2('0x12'),_0x2b9fac,_0xec934f[_0xe8a2('0x10')][_0xe8a2('0x13')]);return _0x4c1b41(_0xec934f[_0xe8a2('0x10')][_0xe8a2('0x13')]);}else{logger['info'](_0xe8a2('0x12'),_0x2b9fac,_0xe8a2('0xd'));_0x4c1b41(_0xec934f[_0xe8a2('0x14')][_0xe8a2('0x13')]);}})[_0xe8a2('0x15')](function(_0x445309){logger[_0xe8a2('0x10')](_0xe8a2('0x12'),_0x2b9fac,_0x445309);_0xcc5c2c(_0x445309);});});}
\ No newline at end of file
index f7a077c..6bb95e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20d7=['extname','originalname','post','single','file','root','logologin','addLogoLogin','join','preferred','/:id/preferred','favicon','put','update','multer','util','connect-timeout','express','Router','./setting.controller','get','isAuthenticated','index','getDate','/:id','show','/:id/logo','/:id/logo_login','getLogoLogin','gdpr','/:id/favicon','getFavicon','diskStorage','server/files/images/logos/','format','%s%s','logo'];(function(_0x1343c3,_0x5e8727){var _0x4e60a0=function(_0x4a8f8c){while(--_0x4a8f8c){_0x1343c3['push'](_0x1343c3['shift']());}};_0x4e60a0(++_0x5e8727);}(_0x20d7,0x1ca));var _0x720d=function(_0x40067f,_0x10b863){_0x40067f=_0x40067f-0x0;var _0x356b48=_0x20d7[_0x40067f];return _0x356b48;};'use strict';var multer=require(_0x720d('0x0'));var util=require(_0x720d('0x1'));var path=require('path');var timeout=require(_0x720d('0x2'));var express=require(_0x720d('0x3'));var router=express[_0x720d('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x720d('0x5'));router[_0x720d('0x6')]('/',auth[_0x720d('0x7')](),controller[_0x720d('0x8')]);router['get']('/now',controller[_0x720d('0x9')]);router['get'](_0x720d('0xa'),controller[_0x720d('0xb')]);router[_0x720d('0x6')](_0x720d('0xc'),controller['getLogo']);router[_0x720d('0x6')](_0x720d('0xd'),controller[_0x720d('0xe')]);router[_0x720d('0x6')]('/:id/gdpr',controller[_0x720d('0xf')]);router['get']('/:id/preferred',controller['getPreferred']);router['get'](_0x720d('0x10'),controller[_0x720d('0x11')]);var upload=multer({'storage':multer[_0x720d('0x12')]({'destination':function(_0x7f048c,_0x49685e,_0x50b32d){_0x50b32d(null,path['join'](config['root'],_0x720d('0x13')));},'filename':function(_0x3ea2b0,_0xab677f,_0x3f9faf){_0x3f9faf(null,util[_0x720d('0x14')](_0x720d('0x15'),_0x720d('0x16'),path[_0x720d('0x17')](_0xab677f[_0x720d('0x18')])));}})});router[_0x720d('0x19')](_0x720d('0xc'),upload[_0x720d('0x1a')](_0x720d('0x1b')),controller['addLogo']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xf9ff2,_0x193d6e,_0x6609f9){_0x6609f9(null,path['join'](config[_0x720d('0x1c')],'server/files/images/logos/'));},'filename':function(_0x49a359,_0x7d588b,_0x31a81f){_0x31a81f(null,util[_0x720d('0x14')](_0x720d('0x15'),_0x720d('0x1d'),path['extname'](_0x7d588b[_0x720d('0x18')])));}})});router['post'](_0x720d('0xd'),upload[_0x720d('0x1a')]('file'),controller[_0x720d('0x1e')]);var upload=multer({'storage':multer[_0x720d('0x12')]({'destination':function(_0x4b5005,_0x6a4939,_0x297066){_0x297066(null,path[_0x720d('0x1f')](config['root'],_0x720d('0x13')));},'filename':function(_0x1704fc,_0x1524ca,_0x440a13){_0x440a13(null,util['format'](_0x720d('0x15'),_0x720d('0x20'),path['extname'](_0x1524ca[_0x720d('0x18')])));}})});router[_0x720d('0x19')](_0x720d('0x21'),upload[_0x720d('0x1a')](_0x720d('0x1b')),controller['addPreferred']);var upload=multer({'storage':multer[_0x720d('0x12')]({'destination':function(_0x5e9f8b,_0x3f40f5,_0x9e0a96){_0x9e0a96(null,path[_0x720d('0x1f')](config[_0x720d('0x1c')],'server/files/images/logos/'));},'filename':function(_0x45b0f3,_0x189cc6,_0x506802){_0x506802(null,util['format']('%s%s',_0x720d('0x22'),path[_0x720d('0x17')](_0x189cc6['originalname'])));}})});router[_0x720d('0x19')](_0x720d('0x10'),upload[_0x720d('0x1a')](_0x720d('0x1b')),controller['addFavicon']);router[_0x720d('0x23')](_0x720d('0xa'),auth[_0x720d('0x7')](),controller[_0x720d('0x24')]);module['exports']=router;
\ No newline at end of file
+var _0xf2a5=['/:id/gdpr','gdpr','getPreferred','/:id/favicon','diskStorage','server/files/images/logos/','format','logo','extname','originalname','post','/:id/logo','single','file','addLogo','join','root','%s%s','logologin','addLogoLogin','preferred','/:id/preferred','addPreferred','addFavicon','update','exports','multer','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./setting.controller','get','isAuthenticated','index','/:id','show','/:id/logo_login','getLogoLogin'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf2a5,0x6a));var _0x5f2a=function(_0x2b26dd,_0x3038bf){_0x2b26dd=_0x2b26dd-0x0;var _0x47e9d4=_0xf2a5[_0x2b26dd];return _0x47e9d4;};'use strict';var multer=require(_0x5f2a('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x5f2a('0x1'));var express=require('express');var router=express[_0x5f2a('0x2')]();var fs_extra=require(_0x5f2a('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x5f2a('0x4'));var config=require(_0x5f2a('0x5'));var controller=require(_0x5f2a('0x6'));router[_0x5f2a('0x7')]('/',auth[_0x5f2a('0x8')](),controller[_0x5f2a('0x9')]);router[_0x5f2a('0x7')]('/now',controller['getDate']);router[_0x5f2a('0x7')](_0x5f2a('0xa'),controller[_0x5f2a('0xb')]);router['get']('/:id/logo',controller['getLogo']);router[_0x5f2a('0x7')](_0x5f2a('0xc'),controller[_0x5f2a('0xd')]);router[_0x5f2a('0x7')](_0x5f2a('0xe'),controller[_0x5f2a('0xf')]);router[_0x5f2a('0x7')]('/:id/preferred',controller[_0x5f2a('0x10')]);router['get'](_0x5f2a('0x11'),controller['getFavicon']);var upload=multer({'storage':multer[_0x5f2a('0x12')]({'destination':function(_0x3ac61f,_0x4d0de2,_0x47fd70){_0x47fd70(null,path['join'](config['root'],_0x5f2a('0x13')));},'filename':function(_0x2e82b2,_0x41ce38,_0x32e622){_0x32e622(null,util[_0x5f2a('0x14')]('%s%s',_0x5f2a('0x15'),path[_0x5f2a('0x16')](_0x41ce38[_0x5f2a('0x17')])));}})});router[_0x5f2a('0x18')](_0x5f2a('0x19'),upload[_0x5f2a('0x1a')](_0x5f2a('0x1b')),controller[_0x5f2a('0x1c')]);var upload=multer({'storage':multer[_0x5f2a('0x12')]({'destination':function(_0x5a29c4,_0x27d81e,_0x178ccb){_0x178ccb(null,path[_0x5f2a('0x1d')](config[_0x5f2a('0x1e')],_0x5f2a('0x13')));},'filename':function(_0x5c5a56,_0x3aeb5f,_0x2dc9c6){_0x2dc9c6(null,util['format'](_0x5f2a('0x1f'),_0x5f2a('0x20'),path[_0x5f2a('0x16')](_0x3aeb5f[_0x5f2a('0x17')])));}})});router[_0x5f2a('0x18')](_0x5f2a('0xc'),upload['single']('file'),controller[_0x5f2a('0x21')]);var upload=multer({'storage':multer[_0x5f2a('0x12')]({'destination':function(_0x389bfb,_0x219634,_0x58793d){_0x58793d(null,path['join'](config['root'],_0x5f2a('0x13')));},'filename':function(_0x85e96d,_0x4f570d,_0x332a36){_0x332a36(null,util['format'](_0x5f2a('0x1f'),_0x5f2a('0x22'),path['extname'](_0x4f570d['originalname'])));}})});router['post'](_0x5f2a('0x23'),upload[_0x5f2a('0x1a')](_0x5f2a('0x1b')),controller[_0x5f2a('0x24')]);var upload=multer({'storage':multer[_0x5f2a('0x12')]({'destination':function(_0x4389a1,_0x44512e,_0x54ce74){_0x54ce74(null,path[_0x5f2a('0x1d')](config[_0x5f2a('0x1e')],'server/files/images/logos/'));},'filename':function(_0x203397,_0x53c478,_0x1d4e39){_0x1d4e39(null,util[_0x5f2a('0x14')](_0x5f2a('0x1f'),'favicon',path[_0x5f2a('0x16')](_0x53c478[_0x5f2a('0x17')])));}})});router[_0x5f2a('0x18')](_0x5f2a('0x11'),upload[_0x5f2a('0x1a')](_0x5f2a('0x1b')),controller[_0x5f2a('0x25')]);router['put'](_0x5f2a('0xa'),auth[_0x5f2a('0x8')](),controller[_0x5f2a('0x26')]);module[_0x5f2a('0x27')]=router;
\ No newline at end of file
index 21adc1a..7512cc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['https://www.xcally.com/bar/phonebar/autoupdater.xml','UNSIGNED','exports','min_internal','INTEGER','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted','BOOLEAN'];(function(_0x3aeb36,_0x312dc9){var _0xa2ef21=function(_0x50a46b){while(--_0x50a46b){_0x3aeb36['push'](_0x3aeb36['shift']());}};_0xa2ef21(++_0x312dc9);}(_0xadb5,0xad));var _0x5adb=function(_0x3e2ea6,_0x47eb42){_0x3e2ea6=_0x3e2ea6-0x0;var _0x43b804=_0xadb5[_0x3e2ea6];return _0x43b804;};'use strict';var Sequelize=require('sequelize');module[_0x5adb('0x0')]={'min_internal':{'type':Sequelize['INTEGER'](0xb),'unique':_0x5adb('0x1'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x5adb('0x2')](0xb),'unique':_0x5adb('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x5adb('0x4')],'defaultValue':_0x5adb('0x5')},'logo':{'type':Sequelize[_0x5adb('0x4')]},'defaultLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x5adb('0x4')]},'defaultLoginLogo':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x5adb('0x4')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0x5adb('0x4')]},'turnaddr':{'type':Sequelize[_0x5adb('0x4')]},'turnusername':{'type':Sequelize[_0x5adb('0x4')]},'turnpassword':{'type':Sequelize[_0x5adb('0x4')]},'pageTitle':{'type':Sequelize[_0x5adb('0x4')]},'defaultPageTitle':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x5adb('0x2')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize['STRING'],'defaultValue':_0x5adb('0x7')},'enableEmailPreview':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'split':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x5adb('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x5adb('0x4')],'defaultValue':'alternate'},'chatTimeout':{'type':Sequelize[_0x5adb('0x2')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize[_0x5adb('0x4')]},'defaultPreferred':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x5adb('0x4')]},'allowedLoginAttempts':{'type':Sequelize[_0x5adb('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize['INTEGER'],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x5adb('0x4')]},'defaultFavicon':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x5adb('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0x5adb('0x2')]},'transcribeRegion':{'type':Sequelize[_0x5adb('0x4')]},'sentiment':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x5adb('0x2')]},'sentimentRegion':{'type':Sequelize[_0x5adb('0x4')]},'language':{'type':Sequelize['STRING']},'bucket':{'type':Sequelize[_0x5adb('0x4')]},'googleSsoEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize['INTEGER'](0x2)[_0x5adb('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x5adb('0x2')](0x2)[_0x5adb('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x5adb('0x2')](0x2)[_0x5adb('0x8')],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize[_0x5adb('0x2')],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize[_0x5adb('0x2')],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x5adb('0x6')],'defaultValue':![]}};
\ No newline at end of file
+var _0x0b0e=['INTEGER','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted','BOOLEAN','alternate','UNSIGNED','sequelize'];(function(_0x1e7506,_0xaf5c0b){var _0x18f0fb=function(_0x13e655){while(--_0x13e655){_0x1e7506['push'](_0x1e7506['shift']());}};_0x18f0fb(++_0xaf5c0b);}(_0x0b0e,0x187));var _0xe0b0=function(_0x52740f,_0x343961){_0x52740f=_0x52740f-0x0;var _0x1cbe11=_0x0b0e[_0x52740f];return _0x1cbe11;};'use strict';var Sequelize=require(_0xe0b0('0x0'));module['exports']={'min_internal':{'type':Sequelize[_0xe0b0('0x1')](0xb),'unique':'min_internal','defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0xe0b0('0x1')](0xb),'unique':_0xe0b0('0x2'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize[_0xe0b0('0x1')](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0xe0b0('0x3')],'defaultValue':_0xe0b0('0x4')},'logo':{'type':Sequelize[_0xe0b0('0x3')]},'defaultLogo':{'type':Sequelize[_0xe0b0('0x5')],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0xe0b0('0x3')]},'defaultLoginLogo':{'type':Sequelize[_0xe0b0('0x5')],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0xe0b0('0x3')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0xe0b0('0x5')],'defaultValue':!![]},'securePassword':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'firstSetup':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0xe0b0('0x3')]},'turnaddr':{'type':Sequelize[_0xe0b0('0x3')]},'turnusername':{'type':Sequelize[_0xe0b0('0x3')]},'turnpassword':{'type':Sequelize[_0xe0b0('0x3')]},'pageTitle':{'type':Sequelize['STRING']},'defaultPageTitle':{'type':Sequelize[_0xe0b0('0x5')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0xe0b0('0x5')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0xe0b0('0x5')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0xe0b0('0x3')],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize[_0xe0b0('0x5')],'defaultValue':![]},'split':{'type':Sequelize[_0xe0b0('0x5')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize[_0xe0b0('0x1')],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0xe0b0('0x1')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0xe0b0('0x3')],'defaultValue':_0xe0b0('0x6')},'chatTimeout':{'type':Sequelize[_0xe0b0('0x1')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0xe0b0('0x5')],'defaultValue':!![]},'preferred':{'type':Sequelize['STRING']},'defaultPreferred':{'type':Sequelize[_0xe0b0('0x5')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0xe0b0('0x5')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0xe0b0('0x3')]},'allowedLoginAttempts':{'type':Sequelize[_0xe0b0('0x1')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0xe0b0('0x1')],'defaultValue':0xa},'favicon':{'type':Sequelize['STRING']},'defaultFavicon':{'type':Sequelize[_0xe0b0('0x5')],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize['INTEGER'],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize[_0xe0b0('0x5')],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0xe0b0('0x5')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize['INTEGER']},'transcribeRegion':{'type':Sequelize[_0xe0b0('0x3')]},'sentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticSentiment':{'type':Sequelize[_0xe0b0('0x5')],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0xe0b0('0x1')]},'sentimentRegion':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING']},'bucket':{'type':Sequelize[_0xe0b0('0x3')]},'googleSsoEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize['INTEGER'](0x2)[_0xe0b0('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0xe0b0('0x1')](0x2)['UNSIGNED'],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0xe0b0('0x1')](0x2)['UNSIGNED'],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0xe0b0('0x5')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize[_0xe0b0('0x1')],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize[_0xe0b0('0x1')],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0xe0b0('0x1')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize[_0xe0b0('0x1')],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 0175245..435c8d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd83c=['favicon','defaultLogo','defaultLoginLogo','defaultFavicon','existsSync','join','root','toLower','default_logo.svg','upperFirst','custom','Sequelize','ValidationError','\x20not\x20found','download','getLogoLogin','preferred','defaultPreferred','default_loginLogo.svg','gdpr','securePassword','addPreferred','addFavicon','getFavicon','default','default_favicon.ico','getDate','utcOffset','now','format','YYYY-MM-DD\x20HH:mm:ss:SSS','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','client','http','request','then','info','Setting,\x20%s,\x20%s','debug','Setting,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','Setting','includeAll','include','rows','show','params','find','body','addLogo','file','filename','logo','addLogoLogin','loginLogo','getLogo','server/files/images/logos','getLicense'];(function(_0x3bd792,_0x171a3e){var _0x405c0f=function(_0x3c2cae){while(--_0x3c2cae){_0x3bd792['push'](_0x3bd792['shift']());}};_0x405c0f(++_0x171a3e);}(_0xd83c,0x1a5));var _0xcd83=function(_0x183256,_0x1a596d){_0x183256=_0x183256-0x0;var _0x5394a2=_0xd83c[_0x183256];return _0x5394a2;};'use strict';var emlformat=require(_0xcd83('0x0'));var rimraf=require(_0xcd83('0x1'));var zipdir=require(_0xcd83('0x2'));var jsonpatch=require(_0xcd83('0x3'));var rp=require(_0xcd83('0x4'));var moment=require('moment');var BPromise=require(_0xcd83('0x5'));var Mustache=require(_0xcd83('0x6'));var util=require(_0xcd83('0x7'));var path=require(_0xcd83('0x8'));var sox=require(_0xcd83('0x9'));var csv=require(_0xcd83('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xcd83('0xb'));var squel=require(_0xcd83('0xc'));var crypto=require(_0xcd83('0xd'));var jsforce=require(_0xcd83('0xe'));var deskjs=require(_0xcd83('0xf'));var toCsv=require(_0xcd83('0xa'));var querystring=require(_0xcd83('0x10'));var Papa=require(_0xcd83('0x11'));var Redis=require(_0xcd83('0x12'));var authService=require(_0xcd83('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xcd83('0x14'));var hardwareService=require(_0xcd83('0x15'));var logger=require(_0xcd83('0x16'))(_0xcd83('0x17'));var utils=require(_0xcd83('0x18'));var config=require(_0xcd83('0x19'));var licenseUtil=require(_0xcd83('0x1a'));var db=require(_0xcd83('0x1b'))['db'];var jayson=require('jayson/promise');var client=jayson[_0xcd83('0x1c')][_0xcd83('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x4e502d,_0x11462a,_0x77ae07,_0x30ed90){return new BPromise(function(_0x1d4263,_0x3355ae){var _0x8b973c=_0x30ed90||client;return _0x8b973c[_0xcd83('0x1e')](_0x4e502d,_0x77ae07)[_0xcd83('0x1f')](function(_0x1fca39){logger[_0xcd83('0x20')](_0xcd83('0x21'),_0x11462a,'request\x20sent');logger[_0xcd83('0x22')](_0xcd83('0x23'),_0x11462a,_0xcd83('0x24'),JSON[_0xcd83('0x25')](_0x1fca39));if(_0x1fca39[_0xcd83('0x26')]){if(_0x1fca39[_0xcd83('0x26')]['code']===0x1f4){logger[_0xcd83('0x26')](_0xcd83('0x21'),_0x11462a,_0x1fca39[_0xcd83('0x26')][_0xcd83('0x27')]);return _0x3355ae(_0x1fca39['error']['message']);}logger[_0xcd83('0x26')](_0xcd83('0x21'),_0x11462a,_0x1fca39[_0xcd83('0x26')][_0xcd83('0x27')]);return _0x1d4263(_0x1fca39[_0xcd83('0x26')][_0xcd83('0x27')]);}else{logger[_0xcd83('0x20')](_0xcd83('0x21'),_0x11462a,'request\x20sent');_0x1d4263(_0x1fca39['result'][_0xcd83('0x27')]);}})[_0xcd83('0x28')](function(_0x4971d9){logger[_0xcd83('0x26')]('Setting,\x20%s,\x20%s',_0x11462a,_0x4971d9);_0x3355ae(_0x4971d9);});});}function respondWithStatusCode(_0x2b1766,_0xeda5b1){_0xeda5b1=_0xeda5b1||0xcc;return function(_0x5a3fd8){if(_0x5a3fd8){return _0x2b1766[_0xcd83('0x29')](_0xeda5b1);}return _0x2b1766[_0xcd83('0x2a')](_0xeda5b1)[_0xcd83('0x2b')]();};}function respondWithResult(_0x8e728e,_0x3fd68c){_0x3fd68c=_0x3fd68c||0xc8;return function(_0x19e5cc){if(_0x19e5cc){return _0x8e728e['status'](_0x3fd68c)['json'](_0x19e5cc);}};}function respondWithFilteredResult(_0x3f7c25,_0x14f0b5){return function(_0x3d56ee){if(_0x3d56ee){var _0x9f8590=typeof _0x14f0b5[_0xcd83('0x2c')]===_0xcd83('0x2d')&&typeof _0x14f0b5['limit']===_0xcd83('0x2d');var _0x2225c6=_0x3d56ee[_0xcd83('0x2e')];var _0x568a5d=_0x9f8590?0x0:_0x14f0b5[_0xcd83('0x2c')];var _0x2c2c40=_0x9f8590?_0x3d56ee['count']:_0x14f0b5['offset']+_0x14f0b5[_0xcd83('0x2f')];var _0xb6bb28;if(_0x2c2c40>=_0x2225c6){_0x2c2c40=_0x2225c6;_0xb6bb28=0xc8;}else{_0xb6bb28=0xce;}_0x3f7c25[_0xcd83('0x2a')](_0xb6bb28);return _0x3f7c25[_0xcd83('0x30')](_0xcd83('0x31'),_0x568a5d+'-'+_0x2c2c40+'/'+_0x2225c6)[_0xcd83('0x32')](_0x3d56ee);}return null;};}function patchUpdates(_0x2ae180){return function(_0x2ffb19){try{jsonpatch[_0xcd83('0x33')](_0x2ffb19,_0x2ae180,!![]);}catch(_0x53efde){return BPromise[_0xcd83('0x34')](_0x53efde);}return _0x2ffb19[_0xcd83('0x35')]();};}function saveUpdates(_0x2c18ba,_0x4c7317){return function(_0x204a90){if(_0x204a90){return _0x204a90[_0xcd83('0x36')](_0x2c18ba)[_0xcd83('0x1f')](function(_0xb70d91){return _0xb70d91;});}return null;};}function removeEntity(_0x196c57,_0x1d4e66){return function(_0x5a0c7a){if(_0x5a0c7a){return _0x5a0c7a[_0xcd83('0x37')]()['then'](function(){_0x196c57[_0xcd83('0x2a')](0xcc)[_0xcd83('0x2b')]();});}};}function handleEntityNotFound(_0x323acc,_0x331aea){return function(_0xd6c562){if(!_0xd6c562){_0x323acc[_0xcd83('0x29')](0x194);}return _0xd6c562;};}function handleError(_0x157b8e,_0x1b55a9){_0x1b55a9=_0x1b55a9||0x1f4;return function(_0x248909){logger[_0xcd83('0x26')](_0x248909[_0xcd83('0x38')]);if(_0x248909[_0xcd83('0x39')]){delete _0x248909[_0xcd83('0x39')];}_0x157b8e[_0xcd83('0x2a')](_0x1b55a9)[_0xcd83('0x3a')](_0x248909);};}exports[_0xcd83('0x3b')]=function(_0x56cd5e,_0x119fbb){var _0x318e3d={},_0x56dd43={},_0x3903d8={'count':0x0,'rows':[]};var _0x461780=_[_0xcd83('0x3c')](db['Setting'][_0xcd83('0x3d')],function(_0x2e6c0b){return{'name':_0x2e6c0b[_0xcd83('0x3e')],'type':_0x2e6c0b[_0xcd83('0x3f')][_0xcd83('0x40')]};});_0x56dd43[_0xcd83('0x41')]=_[_0xcd83('0x3c')](_0x461780,_0xcd83('0x39'));_0x56dd43['query']=_[_0xcd83('0x42')](_0x56cd5e['query']);_0x56dd43[_0xcd83('0x43')]=_[_0xcd83('0x44')](_0x56dd43['model'],_0x56dd43[_0xcd83('0x45')]);_0x318e3d[_0xcd83('0x46')]=_[_0xcd83('0x44')](_0x56dd43[_0xcd83('0x41')],qs['fields'](_0x56cd5e['query'][_0xcd83('0x47')]));_0x318e3d[_0xcd83('0x46')]=_0x318e3d[_0xcd83('0x46')][_0xcd83('0x48')]?_0x318e3d[_0xcd83('0x46')]:_0x56dd43[_0xcd83('0x41')];if(!_0x56cd5e[_0xcd83('0x45')][_0xcd83('0x49')](_0xcd83('0x4a'))){_0x318e3d['limit']=qs['limit'](_0x56cd5e[_0xcd83('0x45')][_0xcd83('0x2f')]);_0x318e3d['offset']=qs[_0xcd83('0x2c')](_0x56cd5e[_0xcd83('0x45')][_0xcd83('0x2c')]);}_0x318e3d[_0xcd83('0x4b')]=qs['sort'](_0x56cd5e[_0xcd83('0x45')][_0xcd83('0x4c')]);_0x318e3d[_0xcd83('0x4d')]=qs['filters'](_[_0xcd83('0x4e')](_0x56cd5e['query'],_0x56dd43['filters']),_0x461780);if(_0x56cd5e[_0xcd83('0x45')][_0xcd83('0x4f')]){_0x318e3d['where']=_[_0xcd83('0x50')](_0x318e3d[_0xcd83('0x4d')],{'$or':_[_0xcd83('0x3c')](_0x461780,function(_0x1252c7){if(_0x1252c7['type']!=='VIRTUAL'){var _0x9ccc6={};_0x9ccc6[_0x1252c7['name']]={'$like':'%'+_0x56cd5e['query'][_0xcd83('0x4f')]+'%'};return _0x9ccc6;}})});}_0x318e3d=_['merge']({},_0x318e3d,_0x56cd5e[_0xcd83('0x51')]);var _0x3b9e4d={'where':_0x318e3d[_0xcd83('0x4d')]};return db[_0xcd83('0x52')][_0xcd83('0x2e')](_0x3b9e4d)[_0xcd83('0x1f')](function(_0x3fb1d7){_0x3903d8[_0xcd83('0x2e')]=_0x3fb1d7;if(_0x56cd5e['query'][_0xcd83('0x53')]){_0x318e3d[_0xcd83('0x54')]=[{'all':!![]}];}return db[_0xcd83('0x52')]['findAll'](_0x318e3d);})[_0xcd83('0x1f')](function(_0x15856c){_0x3903d8[_0xcd83('0x55')]=_0x15856c;return _0x3903d8;})[_0xcd83('0x1f')](respondWithFilteredResult(_0x119fbb,_0x318e3d))[_0xcd83('0x28')](handleError(_0x119fbb,null));};exports[_0xcd83('0x56')]=function(_0x5adb88,_0x20e6c8){var _0x18af3a={'raw':![],'where':{'id':_0x5adb88[_0xcd83('0x57')]['id']}},_0x3311b1={};_0x3311b1[_0xcd83('0x41')]=_['keys'](db['Setting'][_0xcd83('0x3d')]);_0x3311b1['query']=_[_0xcd83('0x42')](_0x5adb88[_0xcd83('0x45')]);_0x3311b1[_0xcd83('0x43')]=_[_0xcd83('0x44')](_0x3311b1[_0xcd83('0x41')],_0x3311b1[_0xcd83('0x45')]);_0x18af3a[_0xcd83('0x46')]=_[_0xcd83('0x44')](_0x3311b1[_0xcd83('0x41')],qs[_0xcd83('0x47')](_0x5adb88[_0xcd83('0x45')]['fields']));_0x18af3a[_0xcd83('0x46')]=_0x18af3a[_0xcd83('0x46')][_0xcd83('0x48')]?_0x18af3a[_0xcd83('0x46')]:_0x3311b1[_0xcd83('0x41')];if(_0x5adb88['query'][_0xcd83('0x53')]){_0x18af3a[_0xcd83('0x54')]=[{'all':!![]}];}_0x18af3a=_[_0xcd83('0x50')]({},_0x18af3a,_0x5adb88[_0xcd83('0x51')]);return db[_0xcd83('0x52')][_0xcd83('0x58')](_0x18af3a)[_0xcd83('0x1f')](handleEntityNotFound(_0x20e6c8,null))[_0xcd83('0x1f')](respondWithResult(_0x20e6c8,null))['catch'](handleError(_0x20e6c8,null));};exports[_0xcd83('0x36')]=function(_0xd18c51,_0xa5be2){if(_0xd18c51[_0xcd83('0x59')]['id']){delete _0xd18c51['body']['id'];}return db['Setting']['find']({'where':{'id':_0xd18c51[_0xcd83('0x57')]['id']}})[_0xcd83('0x1f')](handleEntityNotFound(_0xa5be2,null))[_0xcd83('0x1f')](saveUpdates(_0xd18c51['body'],null))[_0xcd83('0x1f')](respondWithResult(_0xa5be2,null))[_0xcd83('0x28')](handleError(_0xa5be2,null));};exports[_0xcd83('0x5a')]=function(_0x5ebcfe,_0x4a7ccd,_0x1327c4){if(_0x5ebcfe[_0xcd83('0x5b')]&&_0x5ebcfe['file'][_0xcd83('0x5c')]){_0x5ebcfe['body'][_0xcd83('0x5d')]=_0x5ebcfe[_0xcd83('0x5b')][_0xcd83('0x5c')];}return db['Setting'][_0xcd83('0x58')]({'where':{'id':_0x5ebcfe[_0xcd83('0x57')]['id']}})[_0xcd83('0x1f')](handleEntityNotFound(_0x4a7ccd,null))[_0xcd83('0x1f')](saveUpdates(_0x5ebcfe[_0xcd83('0x59')],null))[_0xcd83('0x1f')](respondWithResult(_0x4a7ccd,null))[_0xcd83('0x28')](handleError(_0x4a7ccd,null));};exports[_0xcd83('0x5e')]=function(_0x1ecef9,_0x3d8142,_0x33e263){if(_0x1ecef9[_0xcd83('0x5b')]&&_0x1ecef9[_0xcd83('0x5b')][_0xcd83('0x5c')]){_0x1ecef9[_0xcd83('0x59')][_0xcd83('0x5f')]=_0x1ecef9[_0xcd83('0x5b')][_0xcd83('0x5c')];}return db[_0xcd83('0x52')][_0xcd83('0x58')]({'where':{'id':_0x1ecef9['params']['id']}})[_0xcd83('0x1f')](handleEntityNotFound(_0x3d8142,null))[_0xcd83('0x1f')](saveUpdates(_0x1ecef9[_0xcd83('0x59')],null))[_0xcd83('0x1f')](respondWithResult(_0x3d8142,null))['catch'](handleError(_0x3d8142,null));};var utilLicense=require(_0xcd83('0x1a'));exports[_0xcd83('0x60')]=function(_0x17f7fd,_0x104b49,_0x1296b8){var _0x20977f=_0xcd83('0x61');var _0xe22223={'custom':![]};return utilLicense[_0xcd83('0x62')]()[_0xcd83('0x1f')](function(_0x1733a3){if(_0x1733a3){_0xe22223=_0x1733a3;}return db[_0xcd83('0x52')][_0xcd83('0x58')]({'where':{'id':_0x17f7fd[_0xcd83('0x57')]['id']},'attributes':['logo','loginLogo','preferred',_0xcd83('0x63'),_0xcd83('0x64'),_0xcd83('0x65'),'defaultPreferred',_0xcd83('0x66')],'raw':!![]});})['then'](handleEntityNotFound(_0x104b49,null))['then'](function(_0x42cd2f){if(_0x42cd2f){var _0x14574d=_0x42cd2f[_0xcd83('0x5d')]&&fs[_0xcd83('0x67')](path[_0xcd83('0x68')](config[_0xcd83('0x69')],_0x20977f,_[_0xcd83('0x6a')](_0x42cd2f[_0xcd83('0x5d')])))?path[_0xcd83('0x68')](config[_0xcd83('0x69')],_0x20977f,_[_0xcd83('0x6a')](_0x42cd2f[_0xcd83('0x5d')])):path['join'](config[_0xcd83('0x69')],_0x20977f,_[_0xcd83('0x6a')](_0xcd83('0x6b')));var _0x5e4ea4='default'+_[_0xcd83('0x6c')]('logo');if(_0x42cd2f[_0x5e4ea4]||!_0xe22223[_0xcd83('0x6d')]){_0x14574d=path['join'](config[_0xcd83('0x69')],_0x20977f,_['toLower']('default_logo.svg'));}if(!fs[_0xcd83('0x67')](_0x14574d)){throw new db[(_0xcd83('0x6e'))][(_0xcd83('0x6f'))](_[_0xcd83('0x6c')]('logo')+_0xcd83('0x70'));}return _0x104b49[_0xcd83('0x71')](_0x14574d);}})[_0xcd83('0x28')](handleError(_0x104b49,null));};var utilLicense=require(_0xcd83('0x1a'));exports[_0xcd83('0x72')]=function(_0x5bd948,_0x2d9340,_0x3acc4d){var _0x54e3eb=_0xcd83('0x61');var _0x52d96e={'custom':![]};return utilLicense[_0xcd83('0x62')]()[_0xcd83('0x1f')](function(_0x3d9305){if(_0x3d9305){_0x52d96e=_0x3d9305;}return db['Setting'][_0xcd83('0x58')]({'where':{'id':_0x5bd948[_0xcd83('0x57')]['id']},'attributes':['logo',_0xcd83('0x5f'),_0xcd83('0x73'),_0xcd83('0x63'),_0xcd83('0x64'),_0xcd83('0x65'),_0xcd83('0x74'),'defaultFavicon'],'raw':!![]});})['then'](handleEntityNotFound(_0x2d9340,null))[_0xcd83('0x1f')](function(_0x19a433){if(_0x19a433){var _0x2de9e4=_0x19a433['loginLogo']&&fs[_0xcd83('0x67')](path[_0xcd83('0x68')](config['root'],_0x54e3eb,_[_0xcd83('0x6a')](_0x19a433[_0xcd83('0x5f')])))?path[_0xcd83('0x68')](config['root'],_0x54e3eb,_[_0xcd83('0x6a')](_0x19a433[_0xcd83('0x5f')])):path['join'](config[_0xcd83('0x69')],_0x54e3eb,_[_0xcd83('0x6a')](_0xcd83('0x75')));var _0x36b629='default'+_[_0xcd83('0x6c')](_0xcd83('0x5f'));if(_0x19a433[_0x36b629]||!_0x52d96e[_0xcd83('0x6d')]){_0x2de9e4=path[_0xcd83('0x68')](config[_0xcd83('0x69')],_0x54e3eb,_[_0xcd83('0x6a')](_0xcd83('0x75')));}if(!fs['existsSync'](_0x2de9e4)){throw new db[(_0xcd83('0x6e'))][(_0xcd83('0x6f'))](_[_0xcd83('0x6c')](_0xcd83('0x5f'))+'\x20not\x20found');}return _0x2d9340['download'](_0x2de9e4);}})['catch'](handleError(_0x2d9340,null));};exports[_0xcd83('0x76')]=function(_0x147556,_0x678088){return db[_0xcd83('0x52')][_0xcd83('0x58')]({'where':{'id':_0x147556['params']['id']},'attributes':[_0xcd83('0x77')]})['then'](respondWithResult(_0x678088,null))[_0xcd83('0x28')](handleError(_0x678088,null));};exports[_0xcd83('0x78')]=function(_0x47eac3,_0x11a462,_0x3461ca){if(_0x47eac3[_0xcd83('0x5b')]&&_0x47eac3['file']['filename']){_0x47eac3[_0xcd83('0x59')][_0xcd83('0x73')]=_0x47eac3[_0xcd83('0x5b')][_0xcd83('0x5c')];}return db[_0xcd83('0x52')][_0xcd83('0x58')]({'where':{'id':_0x47eac3[_0xcd83('0x57')]['id']}})['then'](handleEntityNotFound(_0x11a462,null))['then'](saveUpdates(_0x47eac3[_0xcd83('0x59')],null))[_0xcd83('0x1f')](respondWithResult(_0x11a462,null))[_0xcd83('0x28')](handleError(_0x11a462,null));};var utilLicense=require(_0xcd83('0x1a'));exports['getPreferred']=function(_0x11f3c9,_0x15f969,_0x1232a2){var _0x5cd31b=_0xcd83('0x61');var _0xb22f90={'custom':![]};return utilLicense['getLicense']()[_0xcd83('0x1f')](function(_0x5ed7ce){if(_0x5ed7ce){_0xb22f90=_0x5ed7ce;}return db[_0xcd83('0x52')][_0xcd83('0x58')]({'where':{'id':_0x11f3c9[_0xcd83('0x57')]['id']},'attributes':['logo',_0xcd83('0x5f'),_0xcd83('0x73'),_0xcd83('0x63'),_0xcd83('0x64'),'defaultLoginLogo','defaultPreferred','defaultFavicon'],'raw':!![]});})[_0xcd83('0x1f')](handleEntityNotFound(_0x15f969,null))[_0xcd83('0x1f')](function(_0x3acc20){if(_0x3acc20){var _0x5b2fac=_0x3acc20[_0xcd83('0x73')]&&fs[_0xcd83('0x67')](path[_0xcd83('0x68')](config[_0xcd83('0x69')],_0x5cd31b,_[_0xcd83('0x6a')](_0x3acc20[_0xcd83('0x73')])))?path[_0xcd83('0x68')](config[_0xcd83('0x69')],_0x5cd31b,_[_0xcd83('0x6a')](_0x3acc20['preferred'])):path[_0xcd83('0x68')](config[_0xcd83('0x69')],_0x5cd31b,_[_0xcd83('0x6a')]('default_preferred.png'));var _0x5643ca='default'+_['upperFirst'](_0xcd83('0x73'));if(_0x3acc20[_0x5643ca]||!_0xb22f90['custom']||!_0xb22f90[_0xcd83('0x73')]){_0x5b2fac=path['join'](config[_0xcd83('0x69')],_0x5cd31b,_[_0xcd83('0x6a')]('default_preferred.png'));}if(!fs[_0xcd83('0x67')](_0x5b2fac)){throw new db[(_0xcd83('0x6e'))][(_0xcd83('0x6f'))](_[_0xcd83('0x6c')](_0xcd83('0x73'))+_0xcd83('0x70'));}return _0x15f969[_0xcd83('0x71')](_0x5b2fac);}})[_0xcd83('0x28')](handleError(_0x15f969,null));};exports[_0xcd83('0x79')]=function(_0x3068da,_0x47c4f0,_0x31b474){if(_0x3068da[_0xcd83('0x5b')]&&_0x3068da[_0xcd83('0x5b')][_0xcd83('0x5c')]){_0x3068da['body'][_0xcd83('0x63')]=_0x3068da['file']['filename'];}return db['Setting']['find']({'where':{'id':_0x3068da['params']['id']}})[_0xcd83('0x1f')](handleEntityNotFound(_0x47c4f0,null))[_0xcd83('0x1f')](saveUpdates(_0x3068da[_0xcd83('0x59')],null))['then'](respondWithResult(_0x47c4f0,null))[_0xcd83('0x28')](handleError(_0x47c4f0,null));};var utilLicense=require('../../config/license/util');exports[_0xcd83('0x7a')]=function(_0x5a3a95,_0x221475,_0x3e1473){var _0x3c20aa=_0xcd83('0x61');var _0x2474e9={'custom':![]};return utilLicense[_0xcd83('0x62')]()[_0xcd83('0x1f')](function(_0x22dc3a){if(_0x22dc3a){_0x2474e9=_0x22dc3a;}return db[_0xcd83('0x52')][_0xcd83('0x58')]({'where':{'id':_0x5a3a95['params']['id']},'attributes':[_0xcd83('0x5d'),_0xcd83('0x5f'),_0xcd83('0x73'),'favicon',_0xcd83('0x64'),'defaultLoginLogo',_0xcd83('0x74'),_0xcd83('0x66')],'raw':!![]});})[_0xcd83('0x1f')](handleEntityNotFound(_0x221475,null))[_0xcd83('0x1f')](function(_0x18d275){if(_0x18d275){var _0x196796=_0x18d275[_0xcd83('0x63')]&&fs['existsSync'](path[_0xcd83('0x68')](config['root'],_0x3c20aa,_[_0xcd83('0x6a')](_0x18d275[_0xcd83('0x63')])))?path['join'](config['root'],_0x3c20aa,_['toLower'](_0x18d275['favicon'])):path[_0xcd83('0x68')](config[_0xcd83('0x69')],_0x3c20aa,_[_0xcd83('0x6a')]('default_favicon.ico'));var _0x54f932=_0xcd83('0x7b')+_[_0xcd83('0x6c')](_0xcd83('0x63'));if(_0x18d275[_0x54f932]||!_0x2474e9[_0xcd83('0x6d')]){_0x196796=path['join'](config['root'],_0x3c20aa,_['toLower'](_0xcd83('0x7c')));}if(!fs['existsSync'](_0x196796)){throw new db['Sequelize'][(_0xcd83('0x6f'))](_['upperFirst']('favicon')+_0xcd83('0x70'));}return _0x221475[_0xcd83('0x71')](_0x196796);}})[_0xcd83('0x28')](handleError(_0x221475,null));};exports[_0xcd83('0x7d')]=function(_0x53c08b,_0x1d8855){var _0x2dfb1a={'offset':moment()[_0xcd83('0x7e')]()};_0x2dfb1a[_0xcd83('0x7f')]=moment()[_0xcd83('0x7e')](_0x2dfb1a['offset'])[_0xcd83('0x80')](_0xcd83('0x81'));return _0x1d8855[_0xcd83('0x2a')](0xc8)['send'](_0x2dfb1a);};
\ No newline at end of file
+var _0x6d42=['options','includeAll','include','rows','show','find','params','body','addLogo','file','filename','logo','loginLogo','getLogo','server/files/images/logos','getLicense','preferred','defaultLoginLogo','defaultPreferred','defaultFavicon','existsSync','root','toLower','join','default_logo.svg','upperFirst','custom','Sequelize','ValidationError','download','getLogoLogin','favicon','defaultLogo','default_loginLogo.svg','\x20not\x20found','gdpr','securePassword','addPreferred','default_preferred.png','addFavicon','getFavicon','default','getDate','utcOffset','now','format','YYYY-MM-DD\x20HH:mm:ss:SSS','eml-format','moment','bluebird','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','info','Setting,\x20%s,\x20%s','debug','Setting,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','then','end','stack','name','send','index','map','Setting','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL'];(function(_0x1c7e86,_0x24906b){var _0x238734=function(_0x4940dd){while(--_0x4940dd){_0x1c7e86['push'](_0x1c7e86['shift']());}};_0x238734(++_0x24906b);}(_0x6d42,0x1a0));var _0x26d4=function(_0x122cff,_0xdd8b8d){_0x122cff=_0x122cff-0x0;var _0x915f5e=_0x6d42[_0x122cff];return _0x915f5e;};'use strict';var emlformat=require(_0x26d4('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x26d4('0x1'));var BPromise=require(_0x26d4('0x2'));var Mustache=require('mustache');var util=require('util');var path=require(_0x26d4('0x3'));var sox=require(_0x26d4('0x4'));var csv=require(_0x26d4('0x5'));var ejs=require(_0x26d4('0x6'));var fs=require('fs');var fs_extra=require(_0x26d4('0x7'));var _=require('lodash');var squel=require(_0x26d4('0x8'));var crypto=require(_0x26d4('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x26d4('0xa'));var toCsv=require(_0x26d4('0x5'));var querystring=require(_0x26d4('0xb'));var Papa=require(_0x26d4('0xc'));var Redis=require(_0x26d4('0xd'));var authService=require(_0x26d4('0xe'));var qs=require(_0x26d4('0xf'));var as=require(_0x26d4('0x10'));var hardwareService=require(_0x26d4('0x11'));var logger=require('../../config/logger')(_0x26d4('0x12'));var utils=require('../../config/utils');var config=require(_0x26d4('0x13'));var licenseUtil=require(_0x26d4('0x14'));var db=require(_0x26d4('0x15'))['db'];var jayson=require(_0x26d4('0x16'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5e0b4f,_0x4a6c92,_0x4fbe16,_0x11b9ff){return new BPromise(function(_0xcc9d4f,_0x4998dd){var _0x2a7114=_0x11b9ff||client;return _0x2a7114['request'](_0x5e0b4f,_0x4fbe16)['then'](function(_0x5a903a){logger[_0x26d4('0x17')](_0x26d4('0x18'),_0x4a6c92,'request\x20sent');logger[_0x26d4('0x19')](_0x26d4('0x1a'),_0x4a6c92,_0x26d4('0x1b'),JSON[_0x26d4('0x1c')](_0x5a903a));if(_0x5a903a[_0x26d4('0x1d')]){if(_0x5a903a[_0x26d4('0x1d')][_0x26d4('0x1e')]===0x1f4){logger[_0x26d4('0x1d')](_0x26d4('0x18'),_0x4a6c92,_0x5a903a[_0x26d4('0x1d')][_0x26d4('0x1f')]);return _0x4998dd(_0x5a903a[_0x26d4('0x1d')][_0x26d4('0x1f')]);}logger[_0x26d4('0x1d')](_0x26d4('0x18'),_0x4a6c92,_0x5a903a['error']['message']);return _0xcc9d4f(_0x5a903a[_0x26d4('0x1d')][_0x26d4('0x1f')]);}else{logger[_0x26d4('0x17')]('Setting,\x20%s,\x20%s',_0x4a6c92,'request\x20sent');_0xcc9d4f(_0x5a903a['result'][_0x26d4('0x1f')]);}})[_0x26d4('0x20')](function(_0x6e094e){logger[_0x26d4('0x1d')](_0x26d4('0x18'),_0x4a6c92,_0x6e094e);_0x4998dd(_0x6e094e);});});}function respondWithStatusCode(_0x6a0111,_0x16735e){_0x16735e=_0x16735e||0xcc;return function(_0x458fdc){if(_0x458fdc){return _0x6a0111[_0x26d4('0x21')](_0x16735e);}return _0x6a0111[_0x26d4('0x22')](_0x16735e)['end']();};}function respondWithResult(_0x3fda94,_0x2e73ac){_0x2e73ac=_0x2e73ac||0xc8;return function(_0x39970e){if(_0x39970e){return _0x3fda94[_0x26d4('0x22')](_0x2e73ac)[_0x26d4('0x23')](_0x39970e);}};}function respondWithFilteredResult(_0x2dcd84,_0x222442){return function(_0x3fff85){if(_0x3fff85){var _0x137599=typeof _0x222442[_0x26d4('0x24')]===_0x26d4('0x25')&&typeof _0x222442['limit']==='undefined';var _0x248010=_0x3fff85[_0x26d4('0x26')];var _0x5e1c87=_0x137599?0x0:_0x222442[_0x26d4('0x24')];var _0x369398=_0x137599?_0x3fff85[_0x26d4('0x26')]:_0x222442[_0x26d4('0x24')]+_0x222442[_0x26d4('0x27')];var _0x2bfc6a;if(_0x369398>=_0x248010){_0x369398=_0x248010;_0x2bfc6a=0xc8;}else{_0x2bfc6a=0xce;}_0x2dcd84[_0x26d4('0x22')](_0x2bfc6a);return _0x2dcd84[_0x26d4('0x28')](_0x26d4('0x29'),_0x5e1c87+'-'+_0x369398+'/'+_0x248010)[_0x26d4('0x23')](_0x3fff85);}return null;};}function patchUpdates(_0x1f5b0e){return function(_0x14ca91){try{jsonpatch[_0x26d4('0x2a')](_0x14ca91,_0x1f5b0e,!![]);}catch(_0x46aafd){return BPromise[_0x26d4('0x2b')](_0x46aafd);}return _0x14ca91[_0x26d4('0x2c')]();};}function saveUpdates(_0x5e2dff,_0xc60ad4){return function(_0x3a1229){if(_0x3a1229){return _0x3a1229[_0x26d4('0x2d')](_0x5e2dff)['then'](function(_0x3d6de0){return _0x3d6de0;});}return null;};}function removeEntity(_0x48d1a2,_0x13a063){return function(_0x5c2c12){if(_0x5c2c12){return _0x5c2c12[_0x26d4('0x2e')]()[_0x26d4('0x2f')](function(){_0x48d1a2[_0x26d4('0x22')](0xcc)[_0x26d4('0x30')]();});}};}function handleEntityNotFound(_0x9320b8,_0x30bbad){return function(_0x1bb2a0){if(!_0x1bb2a0){_0x9320b8[_0x26d4('0x21')](0x194);}return _0x1bb2a0;};}function handleError(_0x1b1f3d,_0x2825b0){_0x2825b0=_0x2825b0||0x1f4;return function(_0x327c09){logger[_0x26d4('0x1d')](_0x327c09[_0x26d4('0x31')]);if(_0x327c09[_0x26d4('0x32')]){delete _0x327c09[_0x26d4('0x32')];}_0x1b1f3d[_0x26d4('0x22')](_0x2825b0)[_0x26d4('0x33')](_0x327c09);};}exports[_0x26d4('0x34')]=function(_0x25b4e2,_0x3be3f7){var _0x16292f={},_0x133d72={},_0x3c0d33={'count':0x0,'rows':[]};var _0x1c2381=_[_0x26d4('0x35')](db[_0x26d4('0x36')][_0x26d4('0x37')],function(_0x1d8c62){return{'name':_0x1d8c62[_0x26d4('0x38')],'type':_0x1d8c62[_0x26d4('0x39')][_0x26d4('0x3a')]};});_0x133d72[_0x26d4('0x3b')]=_[_0x26d4('0x35')](_0x1c2381,_0x26d4('0x32'));_0x133d72[_0x26d4('0x3c')]=_[_0x26d4('0x3d')](_0x25b4e2[_0x26d4('0x3c')]);_0x133d72[_0x26d4('0x3e')]=_[_0x26d4('0x3f')](_0x133d72[_0x26d4('0x3b')],_0x133d72[_0x26d4('0x3c')]);_0x16292f['attributes']=_[_0x26d4('0x3f')](_0x133d72[_0x26d4('0x3b')],qs[_0x26d4('0x40')](_0x25b4e2[_0x26d4('0x3c')]['fields']));_0x16292f[_0x26d4('0x41')]=_0x16292f[_0x26d4('0x41')][_0x26d4('0x42')]?_0x16292f['attributes']:_0x133d72[_0x26d4('0x3b')];if(!_0x25b4e2[_0x26d4('0x3c')][_0x26d4('0x43')](_0x26d4('0x44'))){_0x16292f[_0x26d4('0x27')]=qs[_0x26d4('0x27')](_0x25b4e2[_0x26d4('0x3c')][_0x26d4('0x27')]);_0x16292f[_0x26d4('0x24')]=qs['offset'](_0x25b4e2[_0x26d4('0x3c')][_0x26d4('0x24')]);}_0x16292f[_0x26d4('0x45')]=qs[_0x26d4('0x46')](_0x25b4e2[_0x26d4('0x3c')][_0x26d4('0x46')]);_0x16292f['where']=qs[_0x26d4('0x3e')](_[_0x26d4('0x47')](_0x25b4e2[_0x26d4('0x3c')],_0x133d72[_0x26d4('0x3e')]),_0x1c2381);if(_0x25b4e2['query'][_0x26d4('0x48')]){_0x16292f[_0x26d4('0x49')]=_[_0x26d4('0x4a')](_0x16292f[_0x26d4('0x49')],{'$or':_['map'](_0x1c2381,function(_0x266be1){if(_0x266be1['type']!==_0x26d4('0x4b')){var _0x40771a={};_0x40771a[_0x266be1[_0x26d4('0x32')]]={'$like':'%'+_0x25b4e2[_0x26d4('0x3c')]['filter']+'%'};return _0x40771a;}})});}_0x16292f=_[_0x26d4('0x4a')]({},_0x16292f,_0x25b4e2[_0x26d4('0x4c')]);var _0x325b4e={'where':_0x16292f[_0x26d4('0x49')]};return db['Setting']['count'](_0x325b4e)[_0x26d4('0x2f')](function(_0x1a07a7){_0x3c0d33['count']=_0x1a07a7;if(_0x25b4e2[_0x26d4('0x3c')][_0x26d4('0x4d')]){_0x16292f[_0x26d4('0x4e')]=[{'all':!![]}];}return db[_0x26d4('0x36')]['findAll'](_0x16292f);})['then'](function(_0x579238){_0x3c0d33[_0x26d4('0x4f')]=_0x579238;return _0x3c0d33;})[_0x26d4('0x2f')](respondWithFilteredResult(_0x3be3f7,_0x16292f))[_0x26d4('0x20')](handleError(_0x3be3f7,null));};exports[_0x26d4('0x50')]=function(_0x9f432e,_0x964b00){var _0x3ba69e={'raw':![],'where':{'id':_0x9f432e['params']['id']}},_0x5dc7a7={};_0x5dc7a7[_0x26d4('0x3b')]=_[_0x26d4('0x3d')](db[_0x26d4('0x36')][_0x26d4('0x37')]);_0x5dc7a7['query']=_[_0x26d4('0x3d')](_0x9f432e[_0x26d4('0x3c')]);_0x5dc7a7[_0x26d4('0x3e')]=_[_0x26d4('0x3f')](_0x5dc7a7[_0x26d4('0x3b')],_0x5dc7a7[_0x26d4('0x3c')]);_0x3ba69e[_0x26d4('0x41')]=_[_0x26d4('0x3f')](_0x5dc7a7[_0x26d4('0x3b')],qs['fields'](_0x9f432e[_0x26d4('0x3c')]['fields']));_0x3ba69e[_0x26d4('0x41')]=_0x3ba69e[_0x26d4('0x41')][_0x26d4('0x42')]?_0x3ba69e[_0x26d4('0x41')]:_0x5dc7a7[_0x26d4('0x3b')];if(_0x9f432e[_0x26d4('0x3c')][_0x26d4('0x4d')]){_0x3ba69e[_0x26d4('0x4e')]=[{'all':!![]}];}_0x3ba69e=_['merge']({},_0x3ba69e,_0x9f432e[_0x26d4('0x4c')]);return db[_0x26d4('0x36')][_0x26d4('0x51')](_0x3ba69e)['then'](handleEntityNotFound(_0x964b00,null))[_0x26d4('0x2f')](respondWithResult(_0x964b00,null))[_0x26d4('0x20')](handleError(_0x964b00,null));};exports[_0x26d4('0x2d')]=function(_0x4df24f,_0x53171e){if(_0x4df24f['body']['id']){delete _0x4df24f['body']['id'];}return db[_0x26d4('0x36')]['find']({'where':{'id':_0x4df24f[_0x26d4('0x52')]['id']}})[_0x26d4('0x2f')](handleEntityNotFound(_0x53171e,null))[_0x26d4('0x2f')](saveUpdates(_0x4df24f[_0x26d4('0x53')],null))[_0x26d4('0x2f')](respondWithResult(_0x53171e,null))[_0x26d4('0x20')](handleError(_0x53171e,null));};exports[_0x26d4('0x54')]=function(_0x24dd67,_0x2f5c3a,_0x30927e){if(_0x24dd67['file']&&_0x24dd67[_0x26d4('0x55')][_0x26d4('0x56')]){_0x24dd67['body'][_0x26d4('0x57')]=_0x24dd67[_0x26d4('0x55')]['filename'];}return db[_0x26d4('0x36')][_0x26d4('0x51')]({'where':{'id':_0x24dd67[_0x26d4('0x52')]['id']}})[_0x26d4('0x2f')](handleEntityNotFound(_0x2f5c3a,null))[_0x26d4('0x2f')](saveUpdates(_0x24dd67[_0x26d4('0x53')],null))['then'](respondWithResult(_0x2f5c3a,null))[_0x26d4('0x20')](handleError(_0x2f5c3a,null));};exports['addLogoLogin']=function(_0x425777,_0x39a33f,_0x3ef16a){if(_0x425777[_0x26d4('0x55')]&&_0x425777[_0x26d4('0x55')]['filename']){_0x425777[_0x26d4('0x53')][_0x26d4('0x58')]=_0x425777['file'][_0x26d4('0x56')];}return db[_0x26d4('0x36')]['find']({'where':{'id':_0x425777[_0x26d4('0x52')]['id']}})[_0x26d4('0x2f')](handleEntityNotFound(_0x39a33f,null))['then'](saveUpdates(_0x425777[_0x26d4('0x53')],null))[_0x26d4('0x2f')](respondWithResult(_0x39a33f,null))['catch'](handleError(_0x39a33f,null));};var utilLicense=require(_0x26d4('0x14'));exports[_0x26d4('0x59')]=function(_0x2116e1,_0x27876d,_0x238d1a){var _0x23e1dc=_0x26d4('0x5a');var _0x531d2a={'custom':![]};return utilLicense[_0x26d4('0x5b')]()[_0x26d4('0x2f')](function(_0x370f84){if(_0x370f84){_0x531d2a=_0x370f84;}return db[_0x26d4('0x36')]['find']({'where':{'id':_0x2116e1['params']['id']},'attributes':[_0x26d4('0x57'),_0x26d4('0x58'),_0x26d4('0x5c'),'favicon','defaultLogo',_0x26d4('0x5d'),_0x26d4('0x5e'),_0x26d4('0x5f')],'raw':!![]});})[_0x26d4('0x2f')](handleEntityNotFound(_0x27876d,null))[_0x26d4('0x2f')](function(_0x48b7de){if(_0x48b7de){var _0x1786e1=_0x48b7de['logo']&&fs[_0x26d4('0x60')](path['join'](config[_0x26d4('0x61')],_0x23e1dc,_[_0x26d4('0x62')](_0x48b7de[_0x26d4('0x57')])))?path[_0x26d4('0x63')](config['root'],_0x23e1dc,_['toLower'](_0x48b7de[_0x26d4('0x57')])):path[_0x26d4('0x63')](config[_0x26d4('0x61')],_0x23e1dc,_[_0x26d4('0x62')](_0x26d4('0x64')));var _0x7f26f7='default'+_[_0x26d4('0x65')](_0x26d4('0x57'));if(_0x48b7de[_0x7f26f7]||!_0x531d2a[_0x26d4('0x66')]){_0x1786e1=path[_0x26d4('0x63')](config[_0x26d4('0x61')],_0x23e1dc,_['toLower']('default_logo.svg'));}if(!fs['existsSync'](_0x1786e1)){throw new db[(_0x26d4('0x67'))][(_0x26d4('0x68'))](_['upperFirst'](_0x26d4('0x57'))+'\x20not\x20found');}return _0x27876d[_0x26d4('0x69')](_0x1786e1);}})[_0x26d4('0x20')](handleError(_0x27876d,null));};var utilLicense=require(_0x26d4('0x14'));exports[_0x26d4('0x6a')]=function(_0x25cb14,_0xfc3d52,_0x4d2fc2){var _0x21d028=_0x26d4('0x5a');var _0x52bf05={'custom':![]};return utilLicense[_0x26d4('0x5b')]()[_0x26d4('0x2f')](function(_0x5935b6){if(_0x5935b6){_0x52bf05=_0x5935b6;}return db[_0x26d4('0x36')][_0x26d4('0x51')]({'where':{'id':_0x25cb14[_0x26d4('0x52')]['id']},'attributes':[_0x26d4('0x57'),_0x26d4('0x58'),_0x26d4('0x5c'),_0x26d4('0x6b'),_0x26d4('0x6c'),_0x26d4('0x5d'),_0x26d4('0x5e'),_0x26d4('0x5f')],'raw':!![]});})[_0x26d4('0x2f')](handleEntityNotFound(_0xfc3d52,null))[_0x26d4('0x2f')](function(_0x5c40c9){if(_0x5c40c9){var _0x7379ec=_0x5c40c9[_0x26d4('0x58')]&&fs[_0x26d4('0x60')](path[_0x26d4('0x63')](config[_0x26d4('0x61')],_0x21d028,_[_0x26d4('0x62')](_0x5c40c9[_0x26d4('0x58')])))?path[_0x26d4('0x63')](config[_0x26d4('0x61')],_0x21d028,_[_0x26d4('0x62')](_0x5c40c9[_0x26d4('0x58')])):path[_0x26d4('0x63')](config['root'],_0x21d028,_[_0x26d4('0x62')](_0x26d4('0x6d')));var _0x171dff='default'+_[_0x26d4('0x65')](_0x26d4('0x58'));if(_0x5c40c9[_0x171dff]||!_0x52bf05[_0x26d4('0x66')]){_0x7379ec=path[_0x26d4('0x63')](config[_0x26d4('0x61')],_0x21d028,_[_0x26d4('0x62')]('default_loginLogo.svg'));}if(!fs[_0x26d4('0x60')](_0x7379ec)){throw new db[(_0x26d4('0x67'))]['ValidationError'](_[_0x26d4('0x65')](_0x26d4('0x58'))+_0x26d4('0x6e'));}return _0xfc3d52[_0x26d4('0x69')](_0x7379ec);}})[_0x26d4('0x20')](handleError(_0xfc3d52,null));};exports[_0x26d4('0x6f')]=function(_0x51c969,_0x3a3475){return db[_0x26d4('0x36')]['find']({'where':{'id':_0x51c969[_0x26d4('0x52')]['id']},'attributes':[_0x26d4('0x70')]})[_0x26d4('0x2f')](respondWithResult(_0x3a3475,null))[_0x26d4('0x20')](handleError(_0x3a3475,null));};exports[_0x26d4('0x71')]=function(_0x2a9788,_0x49b5fc,_0x41f0d3){if(_0x2a9788[_0x26d4('0x55')]&&_0x2a9788[_0x26d4('0x55')][_0x26d4('0x56')]){_0x2a9788[_0x26d4('0x53')]['preferred']=_0x2a9788[_0x26d4('0x55')][_0x26d4('0x56')];}return db[_0x26d4('0x36')][_0x26d4('0x51')]({'where':{'id':_0x2a9788[_0x26d4('0x52')]['id']}})[_0x26d4('0x2f')](handleEntityNotFound(_0x49b5fc,null))[_0x26d4('0x2f')](saveUpdates(_0x2a9788[_0x26d4('0x53')],null))['then'](respondWithResult(_0x49b5fc,null))[_0x26d4('0x20')](handleError(_0x49b5fc,null));};var utilLicense=require(_0x26d4('0x14'));exports['getPreferred']=function(_0x3fcd04,_0x445116,_0x4973e6){var _0x4d21a=_0x26d4('0x5a');var _0x14d8a4={'custom':![]};return utilLicense['getLicense']()[_0x26d4('0x2f')](function(_0x558cb6){if(_0x558cb6){_0x14d8a4=_0x558cb6;}return db[_0x26d4('0x36')][_0x26d4('0x51')]({'where':{'id':_0x3fcd04[_0x26d4('0x52')]['id']},'attributes':['logo',_0x26d4('0x58'),'preferred',_0x26d4('0x6b'),'defaultLogo',_0x26d4('0x5d'),_0x26d4('0x5e'),_0x26d4('0x5f')],'raw':!![]});})[_0x26d4('0x2f')](handleEntityNotFound(_0x445116,null))[_0x26d4('0x2f')](function(_0x46d041){if(_0x46d041){var _0xc4358c=_0x46d041[_0x26d4('0x5c')]&&fs[_0x26d4('0x60')](path['join'](config[_0x26d4('0x61')],_0x4d21a,_[_0x26d4('0x62')](_0x46d041['preferred'])))?path['join'](config[_0x26d4('0x61')],_0x4d21a,_['toLower'](_0x46d041[_0x26d4('0x5c')])):path['join'](config[_0x26d4('0x61')],_0x4d21a,_['toLower']('default_preferred.png'));var _0x336f82='default'+_[_0x26d4('0x65')](_0x26d4('0x5c'));if(_0x46d041[_0x336f82]||!_0x14d8a4[_0x26d4('0x66')]||!_0x14d8a4['preferred']){_0xc4358c=path[_0x26d4('0x63')](config[_0x26d4('0x61')],_0x4d21a,_[_0x26d4('0x62')](_0x26d4('0x72')));}if(!fs[_0x26d4('0x60')](_0xc4358c)){throw new db[(_0x26d4('0x67'))][(_0x26d4('0x68'))](_[_0x26d4('0x65')](_0x26d4('0x5c'))+_0x26d4('0x6e'));}return _0x445116[_0x26d4('0x69')](_0xc4358c);}})[_0x26d4('0x20')](handleError(_0x445116,null));};exports[_0x26d4('0x73')]=function(_0x354780,_0x1c9f01,_0x17ceff){if(_0x354780[_0x26d4('0x55')]&&_0x354780[_0x26d4('0x55')][_0x26d4('0x56')]){_0x354780['body'][_0x26d4('0x6b')]=_0x354780[_0x26d4('0x55')]['filename'];}return db[_0x26d4('0x36')][_0x26d4('0x51')]({'where':{'id':_0x354780[_0x26d4('0x52')]['id']}})['then'](handleEntityNotFound(_0x1c9f01,null))[_0x26d4('0x2f')](saveUpdates(_0x354780['body'],null))[_0x26d4('0x2f')](respondWithResult(_0x1c9f01,null))[_0x26d4('0x20')](handleError(_0x1c9f01,null));};var utilLicense=require('../../config/license/util');exports[_0x26d4('0x74')]=function(_0x40ee7b,_0x42eaa3,_0x208394){var _0xc746ba=_0x26d4('0x5a');var _0x2b2e5c={'custom':![]};return utilLicense[_0x26d4('0x5b')]()[_0x26d4('0x2f')](function(_0x2afe1d){if(_0x2afe1d){_0x2b2e5c=_0x2afe1d;}return db[_0x26d4('0x36')]['find']({'where':{'id':_0x40ee7b[_0x26d4('0x52')]['id']},'attributes':[_0x26d4('0x57'),_0x26d4('0x58'),_0x26d4('0x5c'),'favicon',_0x26d4('0x6c'),_0x26d4('0x5d'),_0x26d4('0x5e'),_0x26d4('0x5f')],'raw':!![]});})[_0x26d4('0x2f')](handleEntityNotFound(_0x42eaa3,null))[_0x26d4('0x2f')](function(_0x3309bb){if(_0x3309bb){var _0x5612eb=_0x3309bb[_0x26d4('0x6b')]&&fs[_0x26d4('0x60')](path['join'](config[_0x26d4('0x61')],_0xc746ba,_[_0x26d4('0x62')](_0x3309bb[_0x26d4('0x6b')])))?path[_0x26d4('0x63')](config[_0x26d4('0x61')],_0xc746ba,_[_0x26d4('0x62')](_0x3309bb['favicon'])):path[_0x26d4('0x63')](config[_0x26d4('0x61')],_0xc746ba,_[_0x26d4('0x62')]('default_favicon.ico'));var _0x5bc92d=_0x26d4('0x75')+_[_0x26d4('0x65')](_0x26d4('0x6b'));if(_0x3309bb[_0x5bc92d]||!_0x2b2e5c[_0x26d4('0x66')]){_0x5612eb=path[_0x26d4('0x63')](config['root'],_0xc746ba,_['toLower']('default_favicon.ico'));}if(!fs[_0x26d4('0x60')](_0x5612eb)){throw new db['Sequelize']['ValidationError'](_[_0x26d4('0x65')](_0x26d4('0x6b'))+_0x26d4('0x6e'));}return _0x42eaa3['download'](_0x5612eb);}})[_0x26d4('0x20')](handleError(_0x42eaa3,null));};exports[_0x26d4('0x76')]=function(_0xad37b3,_0x276666){var _0x669c0f={'offset':moment()[_0x26d4('0x77')]()};_0x669c0f[_0x26d4('0x78')]=moment()[_0x26d4('0x77')](_0x669c0f[_0x26d4('0x24')])[_0x26d4('0x79')](_0x26d4('0x7a'));return _0x276666['status'](0xc8)[_0x26d4('0x33')](_0x669c0f);};
\ No newline at end of file
index f3ca31b..1796611 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(_0x109f5f,_0x5ba0e8){var _0x2d86cf=function(_0xc40b7){while(--_0xc40b7){_0x109f5f['push'](_0x109f5f['shift']());}};_0x2d86cf(++_0x5ba0e8);}(_0x34e8,0x12c));var _0x834e=function(_0x19a50c,_0x5225e8){_0x19a50c=_0x19a50c-0x0;var _0x464a79=_0x34e8[_0x19a50c];return _0x464a79;};'use strict';var _=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var logger=require(_0x834e('0x2'))(_0x834e('0x3'));var moment=require('moment');var BPromise=require(_0x834e('0x4'));var rp=require(_0x834e('0x5'));var fs=require('fs');var path=require(_0x834e('0x6'));var rimraf=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var attributes=require(_0x834e('0x9'));module[_0x834e('0xa')]=function(_0x4a2018,_0x858aa1){return _0x4a2018['define'](_0x834e('0xb'),attributes,{'tableName':_0x834e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x34e8=['settings','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./setting.attributes','exports','Setting'];(function(_0xeec628,_0x409553){var _0x15dd94=function(_0x35d5de){while(--_0x35d5de){_0xeec628['push'](_0xeec628['shift']());}};_0x15dd94(++_0x409553);}(_0x34e8,0x12c));var _0x834e=function(_0xb0b3ff,_0x137489){_0xb0b3ff=_0xb0b3ff-0x0;var _0x1a38da=_0x34e8[_0xb0b3ff];return _0x1a38da;};'use strict';var _=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var logger=require(_0x834e('0x2'))(_0x834e('0x3'));var moment=require('moment');var BPromise=require(_0x834e('0x4'));var rp=require(_0x834e('0x5'));var fs=require('fs');var path=require(_0x834e('0x6'));var rimraf=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var attributes=require(_0x834e('0x9'));module[_0x834e('0xa')]=function(_0x4a2018,_0x858aa1){return _0x4a2018['define'](_0x834e('0xb'),attributes,{'tableName':_0x834e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index afbecff..615cda7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2c7=['attributes','map','model','include','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','Setting,\x20%s,\x20%s','message','result','catch','ShowSetting','Setting','find','options','where'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xe2c7,0xf2));var _0x7e2c=function(_0x22f75e,_0x4a9e06){_0x22f75e=_0x22f75e-0x0;var _0x1f6ab3=_0xe2c7[_0x22f75e];return _0x1f6ab3;};'use strict';var _=require(_0x7e2c('0x0'));var util=require(_0x7e2c('0x1'));var moment=require('moment');var BPromise=require(_0x7e2c('0x2'));var rs=require(_0x7e2c('0x3'));var fs=require('fs');var Redis=require(_0x7e2c('0x4'));var db=require(_0x7e2c('0x5'))['db'];var utils=require(_0x7e2c('0x6'));var logger=require(_0x7e2c('0x7'))(_0x7e2c('0x8'));var config=require(_0x7e2c('0x9'));var jayson=require(_0x7e2c('0xa'));var client=jayson[_0x7e2c('0xb')][_0x7e2c('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x21d97f,_0x700b7f,_0x276a67){return new BPromise(function(_0x539177,_0x1cf0da){return client[_0x7e2c('0xd')](_0x21d97f,_0x276a67)[_0x7e2c('0xe')](function(_0x40b8c3){logger[_0x7e2c('0xf')]('Setting,\x20%s,\x20%s',_0x700b7f,_0x7e2c('0x10'));logger[_0x7e2c('0x11')]('Setting,\x20%s,\x20%s,\x20%s',_0x700b7f,_0x7e2c('0x10'),JSON[_0x7e2c('0x12')](_0x40b8c3));if(_0x40b8c3['error']){if(_0x40b8c3[_0x7e2c('0x13')][_0x7e2c('0x14')]===0x1f4){logger['error'](_0x7e2c('0x15'),_0x700b7f,_0x40b8c3[_0x7e2c('0x13')][_0x7e2c('0x16')]);return _0x1cf0da(_0x40b8c3[_0x7e2c('0x13')][_0x7e2c('0x16')]);}logger['error'](_0x7e2c('0x15'),_0x700b7f,_0x40b8c3[_0x7e2c('0x13')][_0x7e2c('0x16')]);return _0x539177(_0x40b8c3[_0x7e2c('0x13')][_0x7e2c('0x16')]);}else{logger['info']('Setting,\x20%s,\x20%s',_0x700b7f,_0x7e2c('0x10'));_0x539177(_0x40b8c3[_0x7e2c('0x17')][_0x7e2c('0x16')]);}})[_0x7e2c('0x18')](function(_0x52c174){logger[_0x7e2c('0x13')](_0x7e2c('0x15'),_0x700b7f,_0x52c174);_0x1cf0da(_0x52c174);});});}exports[_0x7e2c('0x19')]=function(_0x2ec492){var _0x219fbf=this;return new Promise(function(_0x2d9cc1,_0x1b45d0){return db[_0x7e2c('0x1a')][_0x7e2c('0x1b')]({'raw':_0x2ec492[_0x7e2c('0x1c')]?_0x2ec492['options']['raw']===undefined?!![]:![]:!![],'where':_0x2ec492[_0x7e2c('0x1c')]?_0x2ec492[_0x7e2c('0x1c')][_0x7e2c('0x1d')]||null:null,'attributes':_0x2ec492[_0x7e2c('0x1c')]?_0x2ec492[_0x7e2c('0x1c')][_0x7e2c('0x1e')]||null:null,'include':_0x2ec492[_0x7e2c('0x1c')]?_0x2ec492[_0x7e2c('0x1c')]['include']?_[_0x7e2c('0x1f')](_0x2ec492[_0x7e2c('0x1c')]['include'],function(_0x4e481e){return{'model':db[_0x4e481e[_0x7e2c('0x20')]],'as':_0x4e481e['as'],'attributes':_0x4e481e['attributes'],'include':_0x4e481e[_0x7e2c('0x21')]?_['map'](_0x4e481e[_0x7e2c('0x21')],function(_0x2723d4){return{'model':db[_0x2723d4['model']],'as':_0x2723d4['as'],'attributes':_0x2723d4[_0x7e2c('0x1e')],'include':_0x2723d4[_0x7e2c('0x21')]?_[_0x7e2c('0x1f')](_0x2723d4[_0x7e2c('0x21')],function(_0x5af8b8){return{'model':db[_0x5af8b8[_0x7e2c('0x20')]],'as':_0x5af8b8['as'],'attributes':_0x5af8b8[_0x7e2c('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x7e2c('0xe')](function(_0x1b1402){logger[_0x7e2c('0xf')]('ShowSetting',_0x2ec492);logger[_0x7e2c('0x11')](_0x7e2c('0x19'),_0x2ec492,JSON[_0x7e2c('0x12')](_0x1b1402));_0x2d9cc1(_0x1b1402);})['catch'](function(_0xbeee1b){logger[_0x7e2c('0x13')](_0x7e2c('0x19'),_0xbeee1b[_0x7e2c('0x16')],_0x2ec492);_0x1b45d0(_0x219fbf[_0x7e2c('0x13')](0x1f4,_0xbeee1b[_0x7e2c('0x16')]));});});};
\ No newline at end of file
+var _0x76c3=['jayson/promise','request','then','info','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','ShowSetting','Setting','find','options','raw','where','include','model','attributes','map','lodash','util','moment','bluebird','ioredis','../../mysqldb','rpc'];(function(_0x20fc0d,_0x21256c){var _0x3dc6b3=function(_0x251bbb){while(--_0x251bbb){_0x20fc0d['push'](_0x20fc0d['shift']());}};_0x3dc6b3(++_0x21256c);}(_0x76c3,0xb3));var _0x376c=function(_0x4b6eb7,_0x27abf2){_0x4b6eb7=_0x4b6eb7-0x0;var _0x320362=_0x76c3[_0x4b6eb7];return _0x320362;};'use strict';var _=require(_0x376c('0x0'));var util=require(_0x376c('0x1'));var moment=require(_0x376c('0x2'));var BPromise=require(_0x376c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x376c('0x4'));var db=require(_0x376c('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x376c('0x6'));var config=require('../../config/environment');var jayson=require(_0x376c('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x59aaad,_0x444392,_0x47e818){return new BPromise(function(_0x421063,_0x159ba6){return client[_0x376c('0x8')](_0x59aaad,_0x47e818)[_0x376c('0x9')](function(_0x30f2eb){logger[_0x376c('0xa')](_0x376c('0xb'),_0x444392,_0x376c('0xc'));logger[_0x376c('0xd')](_0x376c('0xe'),_0x444392,_0x376c('0xc'),JSON[_0x376c('0xf')](_0x30f2eb));if(_0x30f2eb['error']){if(_0x30f2eb['error'][_0x376c('0x10')]===0x1f4){logger['error'](_0x376c('0xb'),_0x444392,_0x30f2eb[_0x376c('0x11')][_0x376c('0x12')]);return _0x159ba6(_0x30f2eb['error']['message']);}logger[_0x376c('0x11')](_0x376c('0xb'),_0x444392,_0x30f2eb[_0x376c('0x11')]['message']);return _0x421063(_0x30f2eb[_0x376c('0x11')][_0x376c('0x12')]);}else{logger[_0x376c('0xa')](_0x376c('0xb'),_0x444392,'request\x20sent');_0x421063(_0x30f2eb[_0x376c('0x13')][_0x376c('0x12')]);}})[_0x376c('0x14')](function(_0x5ef146){logger[_0x376c('0x11')](_0x376c('0xb'),_0x444392,_0x5ef146);_0x159ba6(_0x5ef146);});});}exports[_0x376c('0x15')]=function(_0x1ba31d){var _0x45a3a1=this;return new Promise(function(_0x2fdb49,_0x18cd69){return db[_0x376c('0x16')][_0x376c('0x17')]({'raw':_0x1ba31d[_0x376c('0x18')]?_0x1ba31d['options'][_0x376c('0x19')]===undefined?!![]:![]:!![],'where':_0x1ba31d[_0x376c('0x18')]?_0x1ba31d[_0x376c('0x18')][_0x376c('0x1a')]||null:null,'attributes':_0x1ba31d['options']?_0x1ba31d[_0x376c('0x18')]['attributes']||null:null,'include':_0x1ba31d['options']?_0x1ba31d['options'][_0x376c('0x1b')]?_['map'](_0x1ba31d[_0x376c('0x18')][_0x376c('0x1b')],function(_0x231c38){return{'model':db[_0x231c38[_0x376c('0x1c')]],'as':_0x231c38['as'],'attributes':_0x231c38[_0x376c('0x1d')],'include':_0x231c38['include']?_[_0x376c('0x1e')](_0x231c38['include'],function(_0x367db6){return{'model':db[_0x367db6[_0x376c('0x1c')]],'as':_0x367db6['as'],'attributes':_0x367db6['attributes'],'include':_0x367db6[_0x376c('0x1b')]?_[_0x376c('0x1e')](_0x367db6[_0x376c('0x1b')],function(_0x49352a){return{'model':db[_0x49352a['model']],'as':_0x49352a['as'],'attributes':_0x49352a['attributes']};}):[]};}):[]};}):[]:[]})[_0x376c('0x9')](function(_0x54cacb){logger[_0x376c('0xa')](_0x376c('0x15'),_0x1ba31d);logger[_0x376c('0xd')](_0x376c('0x15'),_0x1ba31d,JSON[_0x376c('0xf')](_0x54cacb));_0x2fdb49(_0x54cacb);})[_0x376c('0x14')](function(_0x48a406){logger['error']('ShowSetting',_0x48a406[_0x376c('0x12')],_0x1ba31d);_0x18cd69(_0x45a3a1['error'](0x1f4,_0x48a406[_0x376c('0x12')]));});});};
\ No newline at end of file
index 04f2e67..c1610a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ef6=['addApplications','/:id/send','send','status','update','delete','destroy','removeAgents','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./smsAccount.controller','get','/describe','isAuthenticated','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','/:id/status','statusGet','/:id/users','getAgents','create','post','addDisposition','addAnswer','notify'];(function(_0x36ee04,_0x334267){var _0x1802ef=function(_0x566658){while(--_0x566658){_0x36ee04['push'](_0x36ee04['shift']());}};_0x1802ef(++_0x334267);}(_0x8ef6,0xf2));var _0x68ef=function(_0x27f43b,_0x58f291){_0x27f43b=_0x27f43b-0x0;var _0x31a3a3=_0x8ef6[_0x27f43b];return _0x31a3a3;};'use strict';var multer=require(_0x68ef('0x0'));var util=require(_0x68ef('0x1'));var path=require(_0x68ef('0x2'));var timeout=require(_0x68ef('0x3'));var express=require(_0x68ef('0x4'));var router=express[_0x68ef('0x5')]();var fs_extra=require(_0x68ef('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x68ef('0x7'));var config=require(_0x68ef('0x8'));var controller=require(_0x68ef('0x9'));router[_0x68ef('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0x68ef('0xa')](_0x68ef('0xb'),auth[_0x68ef('0xc')](),controller['describe']);router[_0x68ef('0xa')](_0x68ef('0xd'),auth[_0x68ef('0xc')](),controller[_0x68ef('0xe')]);router[_0x68ef('0xa')](_0x68ef('0xf'),auth[_0x68ef('0xc')](),controller[_0x68ef('0x10')]);router[_0x68ef('0xa')](_0x68ef('0x11'),auth[_0x68ef('0xc')](),controller[_0x68ef('0x12')]);router['get'](_0x68ef('0x13'),auth[_0x68ef('0xc')](),controller[_0x68ef('0x14')]);router[_0x68ef('0xa')](_0x68ef('0x15'),auth[_0x68ef('0xc')](),controller['getInteractions']);router[_0x68ef('0xa')](_0x68ef('0x16'),controller[_0x68ef('0x17')]);router['get'](_0x68ef('0x18'),auth[_0x68ef('0xc')](),controller[_0x68ef('0x19')]);router['post']('/',auth[_0x68ef('0xc')](),controller[_0x68ef('0x1a')]);router[_0x68ef('0x1b')](_0x68ef('0xf'),auth['isAuthenticated'](),controller[_0x68ef('0x1c')]);router['post']('/:id/canned_answers',auth[_0x68ef('0xc')](),controller[_0x68ef('0x1d')]);router['post']('/:id/notify',controller[_0x68ef('0x1e')]);router[_0x68ef('0x1b')](_0x68ef('0x13'),auth['isAuthenticated'](),controller[_0x68ef('0x1f')]);router[_0x68ef('0x1b')](_0x68ef('0x20'),auth['isAuthenticated'](),controller[_0x68ef('0x21')]);router[_0x68ef('0x1b')]('/:id/status',controller[_0x68ef('0x22')]);router[_0x68ef('0x1b')](_0x68ef('0x18'),auth['isAuthenticated'](),controller['addAgents']);router['put'](_0x68ef('0xd'),auth[_0x68ef('0xc')](),controller[_0x68ef('0x23')]);router[_0x68ef('0x24')](_0x68ef('0xd'),auth[_0x68ef('0xc')](),controller[_0x68ef('0x25')]);router[_0x68ef('0x24')](_0x68ef('0xf'),auth[_0x68ef('0xc')](),controller['removeDispositions']);router[_0x68ef('0x24')]('/:id/canned_answers',auth['isAuthenticated'](),controller['removeAnswers']);router[_0x68ef('0x24')](_0x68ef('0x18'),auth[_0x68ef('0xc')](),controller[_0x68ef('0x26')]);module['exports']=router;
\ No newline at end of file
+var _0x7217=['/:id/send','status','put','update','delete','removeDispositions','removeAnswers','multer','path','connect-timeout','express','Router','fs-extra','../../config/environment','./smsAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','/:id/interactions','getInteractions','/:id/status','statusGet','/:id/users','create','post','/:id/notify','notify','addApplications'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x7217,0x19e));var _0x7721=function(_0x37c22c,_0x28a70d){_0x37c22c=_0x37c22c-0x0;var _0x119d79=_0x7217[_0x37c22c];return _0x119d79;};'use strict';var multer=require(_0x7721('0x0'));var util=require('util');var path=require(_0x7721('0x1'));var timeout=require(_0x7721('0x2'));var express=require(_0x7721('0x3'));var router=express[_0x7721('0x4')]();var fs_extra=require(_0x7721('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7721('0x6'));var controller=require(_0x7721('0x7'));router[_0x7721('0x8')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xa')]);router[_0x7721('0x8')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0xc')]);router[_0x7721('0x8')](_0x7721('0xd'),auth[_0x7721('0x9')](),controller[_0x7721('0xe')]);router[_0x7721('0x8')](_0x7721('0xf'),auth['isAuthenticated'](),controller[_0x7721('0x10')]);router[_0x7721('0x8')](_0x7721('0x11'),auth[_0x7721('0x9')](),controller[_0x7721('0x12')]);router[_0x7721('0x8')](_0x7721('0x13'),auth[_0x7721('0x9')](),controller['getApplications']);router[_0x7721('0x8')](_0x7721('0x14'),auth['isAuthenticated'](),controller[_0x7721('0x15')]);router[_0x7721('0x8')](_0x7721('0x16'),controller[_0x7721('0x17')]);router['get'](_0x7721('0x18'),auth[_0x7721('0x9')](),controller['getAgents']);router['post']('/',auth['isAuthenticated'](),controller[_0x7721('0x19')]);router[_0x7721('0x1a')](_0x7721('0xf'),auth[_0x7721('0x9')](),controller['addDisposition']);router[_0x7721('0x1a')]('/:id/canned_answers',auth[_0x7721('0x9')](),controller['addAnswer']);router[_0x7721('0x1a')](_0x7721('0x1b'),controller[_0x7721('0x1c')]);router[_0x7721('0x1a')](_0x7721('0x13'),auth[_0x7721('0x9')](),controller[_0x7721('0x1d')]);router[_0x7721('0x1a')](_0x7721('0x1e'),auth[_0x7721('0x9')](),controller['send']);router[_0x7721('0x1a')](_0x7721('0x16'),controller[_0x7721('0x1f')]);router[_0x7721('0x1a')]('/:id/users',auth[_0x7721('0x9')](),controller['addAgents']);router[_0x7721('0x20')](_0x7721('0xd'),auth[_0x7721('0x9')](),controller[_0x7721('0x21')]);router[_0x7721('0x22')](_0x7721('0xd'),auth[_0x7721('0x9')](),controller['destroy']);router[_0x7721('0x22')](_0x7721('0xf'),auth[_0x7721('0x9')](),controller[_0x7721('0x23')]);router[_0x7721('0x22')](_0x7721('0x11'),auth[_0x7721('0x9')](),controller[_0x7721('0x24')]);router[_0x7721('0x22')]('/:id/users',auth[_0x7721('0x9')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index d5a7d57..4433f60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5d6=['connectel','clicksend','plivo','clickatell','csc','intelepeer','BOOLEAN','TEXT','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','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','exports','STRING','generate','ENUM','twilio','skebby'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0xb5d6,0xf5));var _0x6b5d=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xb5d6[_0x2c91e9];return _0x13f0ff;};'use strict';var Sequelize=require(_0x6b5d('0x0'));var rs=require(_0x6b5d('0x1'));module[_0x6b5d('0x2')]={'name':{'type':Sequelize[_0x6b5d('0x3')],'unique':'name','allowNull':![]},'key':{'type':Sequelize[_0x6b5d('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0x6b5d('0x3')],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x6b5d('0x4')]();}},'phone':{'type':Sequelize[_0x6b5d('0x3')]},'type':{'type':Sequelize[_0x6b5d('0x5')](_0x6b5d('0x6'),_0x6b5d('0x7'),_0x6b5d('0x8'),_0x6b5d('0x9'),_0x6b5d('0xa'),_0x6b5d('0xb'),'bandwidth',_0x6b5d('0xc'),'infobip',_0x6b5d('0xd'))},'accountSid':{'type':Sequelize[_0x6b5d('0x3')]},'authId':{'type':Sequelize[_0x6b5d('0x3')]},'authToken':{'type':Sequelize[_0x6b5d('0x3')]},'smsMethod':{'type':Sequelize[_0x6b5d('0x5')]('SI','TI','GP')},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize['STRING']},'apiKey':{'type':Sequelize[_0x6b5d('0x3')]},'applicationId':{'type':Sequelize[_0x6b5d('0x3')]},'accountId':{'type':Sequelize[_0x6b5d('0x3')]},'senderString':{'type':Sequelize['STRING']},'deliveryReport':{'type':Sequelize[_0x6b5d('0xe')],'defaultValue':![]},'description':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0x6b5d('0xf')],'defaultValue':function(){return _0x6b5d('0x10');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x6b5d('0xe')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x6b5d('0x11')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x6b5d('0xe')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x6b5d('0x11')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x6b5d('0x11')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x6b5d('0x3')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x6b5d('0x11')],'comment':_0x6b5d('0x12')},'mandatoryDisposition':{'type':Sequelize[_0x6b5d('0xe')],'defaultValue':![],'comment':_0x6b5d('0x13'),'set':function(_0x3796c9){if(!_0x3796c9)this[_0x6b5d('0x14')](_0x6b5d('0x15'),null);this['setDataValue'](_0x6b5d('0x16'),_0x3796c9);}}};
\ No newline at end of file
+var _0xd6ed=['TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','sequelize','randomstring','exports','STRING','name','generate','ENUM','twilio','connectel','clicksend','bandwidth','intelepeer'];(function(_0x2d9622,_0x1ab86b){var _0x2a0e02=function(_0x199be9){while(--_0x199be9){_0x2d9622['push'](_0x2d9622['shift']());}};_0x2a0e02(++_0x1ab86b);}(_0xd6ed,0x184));var _0xdd6e=function(_0xd8bf51,_0x3185ef){_0xd8bf51=_0xd8bf51-0x0;var _0x39c79b=_0xd6ed[_0xd8bf51];return _0x39c79b;};'use strict';var Sequelize=require(_0xdd6e('0x0'));var rs=require(_0xdd6e('0x1'));module[_0xdd6e('0x2')]={'name':{'type':Sequelize[_0xdd6e('0x3')],'unique':_0xdd6e('0x4'),'allowNull':![]},'key':{'type':Sequelize[_0xdd6e('0x3')],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0xdd6e('0x5')]();}},'phone':{'type':Sequelize[_0xdd6e('0x3')]},'type':{'type':Sequelize[_0xdd6e('0x6')](_0xdd6e('0x7'),'skebby',_0xdd6e('0x8'),_0xdd6e('0x9'),'plivo','clickatell',_0xdd6e('0xa'),'csc','infobip',_0xdd6e('0xb'))},'accountSid':{'type':Sequelize['STRING']},'authId':{'type':Sequelize[_0xdd6e('0x3')]},'authToken':{'type':Sequelize[_0xdd6e('0x3')]},'smsMethod':{'type':Sequelize[_0xdd6e('0x6')]('SI','TI','GP')},'username':{'type':Sequelize[_0xdd6e('0x3')]},'password':{'type':Sequelize[_0xdd6e('0x3')]},'apiKey':{'type':Sequelize[_0xdd6e('0x3')]},'applicationId':{'type':Sequelize[_0xdd6e('0x3')]},'accountId':{'type':Sequelize['STRING']},'senderString':{'type':Sequelize[_0xdd6e('0x3')]},'deliveryReport':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0xdd6e('0x3')]},'notificationTemplate':{'type':Sequelize[_0xdd6e('0xc')],'defaultValue':function(){return _0xdd6e('0xd');}},'notificationSound':{'type':Sequelize[_0xdd6e('0xe')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xdd6e('0xe')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xdd6e('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xdd6e('0xe')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xdd6e('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xdd6e('0xe')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xdd6e('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0xdd6e('0x3')]},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':_0xdd6e('0x10')},'mandatoryDisposition':{'type':Sequelize[_0xdd6e('0xe')],'defaultValue':![],'comment':_0xdd6e('0x11'),'set':function(_0x1cd2a8){if(!_0x1cd2a8)this[_0xdd6e('0x12')]('mandatoryDispositionPauseId',null);this['setDataValue'](_0xdd6e('0x13'),_0x1cd2a8);}}};
\ No newline at end of file
index b2c1ea3..5f7d1ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ff5=['Pause','mandatoryDispositionPause','map','SmsAccount','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','show','params','keys','length','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','SmsAccountId','Disposition','findOne','hasOwnProperty','nolimit','order','removeDispositions','addAnswer','getAnswers','CannedAnswer','removeAnswers','ids','notify','SmsApplication','Applications','account','applications','orderBy','priority','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','mobile','twilio','from','From','Body','MessageSid','skebby','sender','text','connectel','clicksend','message_id','messageId','results','originatingAddress','replyMessageId','bandwidth','intelepeer','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','ListId','DESC','list','omit','Contacts','SmsInteraction','spread','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','ContactId','UserId','User','unshift','agent','waitForTheAssignedAgent','startRouting','Start','receiveMessage','SmsAccount,\x20%s,\x20%s,\x20%s','entity\x20found','set','Content-Type','json','addApplications','sequelize','bulkCreate','findAndCountAll','getApplications','getInteractions','Owner','fullname','internal','Tag','color','tag','List','out','SmsMessage','Messages','dataValues','received\x20delivery\x20report\x20from','skebby_dispatch_id','requestid','statusInt','status_code','infobip','groupName','DELIVERED','clickatell','redif','update','inspect','error_code','RECEIVED_BY_RECIPIENT','DELIVRD','ACCEPTD','statusGet','message-id','state','csc','addAgents','removeAgents','isArray','emit','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./smsAccount.socket','register','jayson/promise','client','request','then','info','request\x20sent','debug','stringify','error','code','SmsAccount,\x20%s,\x20%s','message','catch','status','end','offset','undefined','limit','count','Content-Range','apply','reject','save','destroy','get','SmsAccounts','UserProfileResource','stack','name','send','index'];(function(_0xbf5e16,_0x146ce3){var _0x5975a5=function(_0x2387a7){while(--_0x2387a7){_0xbf5e16['push'](_0xbf5e16['shift']());}};_0x5975a5(++_0x146ce3);}(_0x8ff5,0xa2));var _0x58ff=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0x8ff5[_0x8c43de];return _0xa6591b;};'use strict';var emlformat=require(_0x58ff('0x0'));var rimraf=require(_0x58ff('0x1'));var zipdir=require(_0x58ff('0x2'));var jsonpatch=require(_0x58ff('0x3'));var rp=require(_0x58ff('0x4'));var moment=require(_0x58ff('0x5'));var BPromise=require(_0x58ff('0x6'));var Mustache=require(_0x58ff('0x7'));var util=require(_0x58ff('0x8'));var path=require(_0x58ff('0x9'));var sox=require(_0x58ff('0xa'));var csv=require(_0x58ff('0xb'));var ejs=require(_0x58ff('0xc'));var fs=require('fs');var fs_extra=require(_0x58ff('0xd'));var _=require(_0x58ff('0xe'));var squel=require(_0x58ff('0xf'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x58ff('0xb'));var querystring=require(_0x58ff('0x10'));var Papa=require(_0x58ff('0x11'));var Redis=require(_0x58ff('0x12'));var authService=require(_0x58ff('0x13'));var qs=require(_0x58ff('0x14'));var as=require(_0x58ff('0x15'));var hardwareService=require(_0x58ff('0x16'));var logger=require('../../config/logger')(_0x58ff('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x58ff('0x18'));var db=require(_0x58ff('0x19'))['db'];config['redis']=_[_0x58ff('0x1a')](config[_0x58ff('0x1b')],{'host':_0x58ff('0x1c'),'port':0x18eb});var socket=require(_0x58ff('0x1d'))(new Redis(config[_0x58ff('0x1b')]));require(_0x58ff('0x1e'))[_0x58ff('0x1f')](socket);var jayson=require(_0x58ff('0x20'));var client=jayson[_0x58ff('0x21')]['http']({'port':0x232c});function respondWithRpcPromise(_0x837689,_0x16cbe2,_0x1765b3,_0x4e1c45){return new BPromise(function(_0x3aeea4,_0x339b25){var _0x170114=_0x4e1c45||client;return _0x170114[_0x58ff('0x22')](_0x837689,_0x1765b3)[_0x58ff('0x23')](function(_0x4e9ca2){logger[_0x58ff('0x24')]('SmsAccount,\x20%s,\x20%s',_0x16cbe2,_0x58ff('0x25'));logger[_0x58ff('0x26')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x16cbe2,'request\x20sent',JSON[_0x58ff('0x27')](_0x4e9ca2));if(_0x4e9ca2[_0x58ff('0x28')]){if(_0x4e9ca2[_0x58ff('0x28')][_0x58ff('0x29')]===0x1f4){logger[_0x58ff('0x28')](_0x58ff('0x2a'),_0x16cbe2,_0x4e9ca2['error'][_0x58ff('0x2b')]);return _0x339b25(_0x4e9ca2[_0x58ff('0x28')][_0x58ff('0x2b')]);}logger['error'](_0x58ff('0x2a'),_0x16cbe2,_0x4e9ca2[_0x58ff('0x28')][_0x58ff('0x2b')]);return _0x3aeea4(_0x4e9ca2[_0x58ff('0x28')]['message']);}else{logger[_0x58ff('0x24')](_0x58ff('0x2a'),_0x16cbe2,_0x58ff('0x25'));_0x3aeea4(_0x4e9ca2['result']['message']);}})[_0x58ff('0x2c')](function(_0x407d0c){logger[_0x58ff('0x28')](_0x58ff('0x2a'),_0x16cbe2,_0x407d0c);_0x339b25(_0x407d0c);});});}function respondWithStatusCode(_0x4fa5d1,_0x5403c2){_0x5403c2=_0x5403c2||0xcc;return function(_0xfd0888){if(_0xfd0888){return _0x4fa5d1['sendStatus'](_0x5403c2);}return _0x4fa5d1[_0x58ff('0x2d')](_0x5403c2)[_0x58ff('0x2e')]();};}function respondWithResult(_0x2684f5,_0x506621){_0x506621=_0x506621||0xc8;return function(_0x335a06){if(_0x335a06){return _0x2684f5['status'](_0x506621)['json'](_0x335a06);}};}function respondWithFilteredResult(_0x3d1614,_0x34efef){return function(_0x4f04b6){if(_0x4f04b6){var _0x3f440e=typeof _0x34efef[_0x58ff('0x2f')]===_0x58ff('0x30')&&typeof _0x34efef[_0x58ff('0x31')]===_0x58ff('0x30');var _0x206e55=_0x4f04b6[_0x58ff('0x32')];var _0x2ff252=_0x3f440e?0x0:_0x34efef[_0x58ff('0x2f')];var _0x4e28a3=_0x3f440e?_0x4f04b6[_0x58ff('0x32')]:_0x34efef[_0x58ff('0x2f')]+_0x34efef[_0x58ff('0x31')];var _0x1ae636;if(_0x4e28a3>=_0x206e55){_0x4e28a3=_0x206e55;_0x1ae636=0xc8;}else{_0x1ae636=0xce;}_0x3d1614[_0x58ff('0x2d')](_0x1ae636);return _0x3d1614['set'](_0x58ff('0x33'),_0x2ff252+'-'+_0x4e28a3+'/'+_0x206e55)['json'](_0x4f04b6);}return null;};}function patchUpdates(_0x5f2ada){return function(_0x2730ce){try{jsonpatch[_0x58ff('0x34')](_0x2730ce,_0x5f2ada,!![]);}catch(_0xc5eae6){return BPromise[_0x58ff('0x35')](_0xc5eae6);}return _0x2730ce[_0x58ff('0x36')]();};}function saveUpdates(_0x2ac5d0,_0x7ce7e3){return function(_0x593489){if(_0x593489){return _0x593489['update'](_0x2ac5d0)[_0x58ff('0x23')](function(_0xf92f78){return _0xf92f78;});}return null;};}function removeEntity(_0x2c692e,_0x1a0e43){return function(_0x4644bd){if(_0x4644bd){return _0x4644bd[_0x58ff('0x37')]()['then'](function(){var _0x412ac1=_0x4644bd[_0x58ff('0x38')]({'plain':!![]});var _0x305d25=_0x58ff('0x39');return db[_0x58ff('0x3a')]['destroy']({'where':{'type':_0x305d25,'resourceId':_0x412ac1['id']}})[_0x58ff('0x23')](function(){return _0x4644bd;});})[_0x58ff('0x23')](function(){_0x2c692e[_0x58ff('0x2d')](0xcc)[_0x58ff('0x2e')]();});}};}function handleEntityNotFound(_0x43a5ab,_0xc43357){return function(_0x3986b8){if(!_0x3986b8){_0x43a5ab['sendStatus'](0x194);}return _0x3986b8;};}function handleError(_0x48a158,_0x51e652){_0x51e652=_0x51e652||0x1f4;return function(_0xab175){logger[_0x58ff('0x28')](_0xab175[_0x58ff('0x3b')]);if(_0xab175[_0x58ff('0x3c')]){delete _0xab175[_0x58ff('0x3c')];}_0x48a158[_0x58ff('0x2d')](_0x51e652)[_0x58ff('0x3d')](_0xab175);};}exports[_0x58ff('0x3e')]=function(_0x5d4dc1,_0x23cd76){var _0x41231e={'include':[{'model':db[_0x58ff('0x3f')],'as':_0x58ff('0x40')}]},_0x3d114f={},_0x45dca1={'count':0x0,'rows':[]};var _0x180b9a=_[_0x58ff('0x41')](db[_0x58ff('0x42')][_0x58ff('0x43')],function(_0x5a78b4){return{'name':_0x5a78b4[_0x58ff('0x44')],'type':_0x5a78b4['type'][_0x58ff('0x45')]};});_0x3d114f[_0x58ff('0x46')]=_[_0x58ff('0x41')](_0x180b9a,_0x58ff('0x3c'));_0x3d114f['query']=_['keys'](_0x5d4dc1[_0x58ff('0x47')]);_0x3d114f[_0x58ff('0x48')]=_[_0x58ff('0x49')](_0x3d114f['model'],_0x3d114f['query']);_0x41231e[_0x58ff('0x4a')]=_[_0x58ff('0x49')](_0x3d114f['model'],qs['fields'](_0x5d4dc1['query'][_0x58ff('0x4b')]));_0x41231e[_0x58ff('0x4a')]=_0x41231e['attributes']['length']?_0x41231e['attributes']:_0x3d114f[_0x58ff('0x46')];if(!_0x5d4dc1['query']['hasOwnProperty']('nolimit')){_0x41231e[_0x58ff('0x31')]=qs['limit'](_0x5d4dc1['query']['limit']);_0x41231e['offset']=qs['offset'](_0x5d4dc1[_0x58ff('0x47')]['offset']);}_0x41231e['order']=qs[_0x58ff('0x4c')](_0x5d4dc1[_0x58ff('0x47')][_0x58ff('0x4c')]);_0x41231e[_0x58ff('0x4d')]=qs[_0x58ff('0x48')](_[_0x58ff('0x4e')](_0x5d4dc1[_0x58ff('0x47')],_0x3d114f[_0x58ff('0x48')]),_0x180b9a);if(_0x5d4dc1[_0x58ff('0x47')][_0x58ff('0x4f')]){_0x41231e['where']=_[_0x58ff('0x50')](_0x41231e[_0x58ff('0x4d')],{'$or':_[_0x58ff('0x41')](_0x180b9a,function(_0x2aed98){if(_0x2aed98[_0x58ff('0x51')]!==_0x58ff('0x52')){var _0x45ae85={};_0x45ae85[_0x2aed98[_0x58ff('0x3c')]]={'$like':'%'+_0x5d4dc1[_0x58ff('0x47')]['filter']+'%'};return _0x45ae85;}})});}_0x41231e=_[_0x58ff('0x50')]({},_0x41231e,_0x5d4dc1[_0x58ff('0x53')]);var _0xb5d55a={'where':_0x41231e[_0x58ff('0x4d')]};return db[_0x58ff('0x42')][_0x58ff('0x32')](_0xb5d55a)[_0x58ff('0x23')](function(_0x2eb71e){_0x45dca1[_0x58ff('0x32')]=_0x2eb71e;if(_0x5d4dc1[_0x58ff('0x47')][_0x58ff('0x54')]){_0x41231e[_0x58ff('0x55')]=[{'all':!![]}];}return db[_0x58ff('0x42')][_0x58ff('0x56')](_0x41231e);})[_0x58ff('0x23')](function(_0x3f14ad){_0x45dca1[_0x58ff('0x57')]=_0x3f14ad;return _0x45dca1;})[_0x58ff('0x23')](respondWithFilteredResult(_0x23cd76,_0x41231e))[_0x58ff('0x2c')](handleError(_0x23cd76,null));};exports[_0x58ff('0x58')]=function(_0x5eeae1,_0xb7d06a){var _0x253c72={'raw':![],'where':{'id':_0x5eeae1[_0x58ff('0x59')]['id']},'include':[{'model':db[_0x58ff('0x3f')],'as':_0x58ff('0x40')}]},_0x48c0f3={};_0x48c0f3[_0x58ff('0x46')]=_[_0x58ff('0x5a')](db['SmsAccount'][_0x58ff('0x43')]);_0x48c0f3[_0x58ff('0x47')]=_[_0x58ff('0x5a')](_0x5eeae1[_0x58ff('0x47')]);_0x48c0f3[_0x58ff('0x48')]=_[_0x58ff('0x49')](_0x48c0f3[_0x58ff('0x46')],_0x48c0f3['query']);_0x253c72['attributes']=_[_0x58ff('0x49')](_0x48c0f3[_0x58ff('0x46')],qs[_0x58ff('0x4b')](_0x5eeae1[_0x58ff('0x47')]['fields']));_0x253c72[_0x58ff('0x4a')]=_0x253c72[_0x58ff('0x4a')][_0x58ff('0x5b')]?_0x253c72[_0x58ff('0x4a')]:_0x48c0f3[_0x58ff('0x46')];if(_0x5eeae1[_0x58ff('0x47')][_0x58ff('0x54')]){_0x253c72[_0x58ff('0x55')]=[{'all':!![]}];}_0x253c72=_[_0x58ff('0x50')]({},_0x253c72,_0x5eeae1['options']);return db[_0x58ff('0x42')][_0x58ff('0x5c')](_0x253c72)['then'](handleEntityNotFound(_0xb7d06a,null))[_0x58ff('0x23')](respondWithResult(_0xb7d06a,null))[_0x58ff('0x2c')](handleError(_0xb7d06a,null));};exports[_0x58ff('0x5d')]=function(_0x5a8752,_0x278c0e){return db['SmsAccount']['create'](_0x5a8752[_0x58ff('0x5e')],{})[_0x58ff('0x23')](function(_0x5b8df0){var _0x2474e1=_0x5a8752['user'][_0x58ff('0x38')]({'plain':!![]});if(!_0x2474e1)throw new Error(_0x58ff('0x5f'));if(_0x2474e1[_0x58ff('0x60')]===_0x58ff('0x61')){var _0x92b876=_0x5b8df0[_0x58ff('0x38')]({'plain':!![]});var _0x5c35ea=_0x58ff('0x39');return db[_0x58ff('0x62')][_0x58ff('0x5c')]({'where':{'name':_0x5c35ea,'userProfileId':_0x2474e1[_0x58ff('0x63')]},'raw':!![]})[_0x58ff('0x23')](function(_0x384c54){if(_0x384c54&&_0x384c54['autoAssociation']===0x0){return db[_0x58ff('0x3a')]['create']({'name':_0x92b876[_0x58ff('0x3c')],'resourceId':_0x92b876['id'],'type':_0x384c54[_0x58ff('0x3c')],'sectionId':_0x384c54['id']},{})[_0x58ff('0x23')](function(){return _0x5b8df0;});}else{return _0x5b8df0;}})[_0x58ff('0x2c')](function(_0x3ac2c8){logger['error'](_0x58ff('0x64'),_0x3ac2c8);throw _0x3ac2c8;});}return _0x5b8df0;})['then'](respondWithResult(_0x278c0e,0xc9))[_0x58ff('0x2c')](handleError(_0x278c0e,null));};exports['update']=function(_0xed88c1,_0x1608ba){if(_0xed88c1[_0x58ff('0x5e')]['id']){delete _0xed88c1[_0x58ff('0x5e')]['id'];}return db['SmsAccount']['find']({'where':{'id':_0xed88c1[_0x58ff('0x59')]['id']},'include':[{'model':db[_0x58ff('0x3f')],'as':_0x58ff('0x40')}]})['then'](handleEntityNotFound(_0x1608ba,null))[_0x58ff('0x23')](saveUpdates(_0xed88c1['body'],null))[_0x58ff('0x23')](respondWithResult(_0x1608ba,null))[_0x58ff('0x2c')](handleError(_0x1608ba,null));};exports['destroy']=function(_0x515ddd,_0x2209e7){return db[_0x58ff('0x42')][_0x58ff('0x5c')]({'where':{'id':_0x515ddd[_0x58ff('0x59')]['id']}})[_0x58ff('0x23')](handleEntityNotFound(_0x2209e7,null))[_0x58ff('0x23')](removeEntity(_0x2209e7,null))['catch'](handleError(_0x2209e7,null));};exports[_0x58ff('0x65')]=function(_0x470b87,_0x388908){return db[_0x58ff('0x42')][_0x58ff('0x65')]()['then'](respondWithResult(_0x388908,null))['catch'](handleError(_0x388908,null));};exports['addDisposition']=function(_0x16d75c,_0x38529f,_0x4c49c4){if(_0x16d75c[_0x58ff('0x5e')]['id']){delete _0x16d75c[_0x58ff('0x5e')]['id'];}return db[_0x58ff('0x42')][_0x58ff('0x5c')]({'where':{'id':_0x16d75c[_0x58ff('0x59')]['id']}})[_0x58ff('0x23')](handleEntityNotFound(_0x38529f,null))[_0x58ff('0x23')](function(_0x2b83d9){if(_0x2b83d9){_0x16d75c[_0x58ff('0x5e')][_0x58ff('0x66')]=_0x2b83d9['id'];return db[_0x58ff('0x67')]['create'](_0x16d75c[_0x58ff('0x5e')]);}})[_0x58ff('0x23')](respondWithResult(_0x38529f,null))[_0x58ff('0x2c')](handleError(_0x38529f,null));};exports['getDispositions']=function(_0x31fd82,_0x5445f9,_0x5e1db8){var _0x35543e={'raw':![],'where':{}};var _0xd4fc7b={};var _0x1e9695={'count':0x0,'rows':[]};return db[_0x58ff('0x42')][_0x58ff('0x68')]({'where':{'id':_0x31fd82[_0x58ff('0x59')]['id']}})[_0x58ff('0x23')](handleEntityNotFound(_0x5445f9,null))[_0x58ff('0x23')](function(_0x4337e5){if(_0x4337e5){_0xd4fc7b[_0x58ff('0x46')]=_[_0x58ff('0x5a')](db['Disposition'][_0x58ff('0x43')]);_0xd4fc7b['query']=_[_0x58ff('0x5a')](_0x31fd82[_0x58ff('0x47')]);_0xd4fc7b[_0x58ff('0x48')]=_[_0x58ff('0x49')](_0xd4fc7b[_0x58ff('0x46')],_0xd4fc7b[_0x58ff('0x47')]);_0x35543e[_0x58ff('0x4a')]=_[_0x58ff('0x49')](_0xd4fc7b[_0x58ff('0x46')],qs[_0x58ff('0x4b')](_0x31fd82[_0x58ff('0x47')][_0x58ff('0x4b')]));_0x35543e['attributes']=_0x35543e['attributes'][_0x58ff('0x5b')]?_0x35543e['attributes']:_0xd4fc7b[_0x58ff('0x46')];if(!_0x31fd82[_0x58ff('0x47')][_0x58ff('0x69')](_0x58ff('0x6a'))){_0x35543e[_0x58ff('0x31')]=qs[_0x58ff('0x31')](_0x31fd82['query'][_0x58ff('0x31')]);_0x35543e[_0x58ff('0x2f')]=qs[_0x58ff('0x2f')](_0x31fd82[_0x58ff('0x47')]['offset']);}_0x35543e[_0x58ff('0x6b')]=qs['sort'](_0x31fd82['query'][_0x58ff('0x4c')]);_0x35543e[_0x58ff('0x4d')]=qs[_0x58ff('0x48')](_['pick'](_0x31fd82[_0x58ff('0x47')],_0xd4fc7b[_0x58ff('0x48')]));_0x35543e['where'][_0x58ff('0x66')]=_0x4337e5['id'];if(_0x31fd82[_0x58ff('0x47')][_0x58ff('0x4f')]){_0x35543e['where']=_['merge'](_0x35543e[_0x58ff('0x4d')],{'$or':_[_0x58ff('0x41')](_0x35543e['attributes'],function(_0x619517){var _0x4cedc1={};_0x4cedc1[_0x619517]={'$like':'%'+_0x31fd82[_0x58ff('0x47')][_0x58ff('0x4f')]+'%'};return _0x4cedc1;})});}_0x35543e=_['merge']({},_0x35543e,_0x31fd82[_0x58ff('0x53')]);return db[_0x58ff('0x67')][_0x58ff('0x32')]({'where':_0x35543e['where']})['then'](function(_0x57c0d8){_0x1e9695['count']=_0x57c0d8;if(_0x31fd82[_0x58ff('0x47')]['includeAll']){_0x35543e[_0x58ff('0x55')]=[{'all':!![]}];}return db[_0x58ff('0x67')][_0x58ff('0x56')](_0x35543e);})[_0x58ff('0x23')](function(_0x3b9316){_0x1e9695[_0x58ff('0x57')]=_0x3b9316;return _0x1e9695;});}})['then'](respondWithFilteredResult(_0x5445f9,_0x35543e))[_0x58ff('0x2c')](handleError(_0x5445f9,null));};exports[_0x58ff('0x6c')]=function(_0x4555e2,_0x46f87b,_0x217e14){return db[_0x58ff('0x42')][_0x58ff('0x5c')]({'where':{'id':_0x4555e2[_0x58ff('0x59')]['id']}})[_0x58ff('0x23')](handleEntityNotFound(_0x46f87b,null))[_0x58ff('0x23')](function(_0x379918){if(_0x379918){return _0x379918[_0x58ff('0x6c')](_0x4555e2['query']['ids']);}})[_0x58ff('0x23')](respondWithStatusCode(_0x46f87b,null))[_0x58ff('0x2c')](handleError(_0x46f87b,null));};exports[_0x58ff('0x6d')]=function(_0x249f54,_0x4c6fd6,_0xe66332){if(_0x249f54['body']['id']){delete _0x249f54['body']['id'];}return db[_0x58ff('0x42')][_0x58ff('0x5c')]({'where':{'id':_0x249f54[_0x58ff('0x59')]['id']}})[_0x58ff('0x23')](handleEntityNotFound(_0x4c6fd6,null))[_0x58ff('0x23')](function(_0xdefe41){if(_0xdefe41){_0x249f54[_0x58ff('0x5e')][_0x58ff('0x66')]=_0xdefe41['id'];return db['CannedAnswer'][_0x58ff('0x5d')](_0x249f54[_0x58ff('0x5e')]);}})['then'](respondWithResult(_0x4c6fd6,null))[_0x58ff('0x2c')](handleError(_0x4c6fd6,null));};exports[_0x58ff('0x6e')]=function(_0x4265a1,_0x2a390a,_0x1b4d63){var _0x1850d3={'raw':![],'where':{}};var _0x203f06={};var _0x2085f2={'count':0x0,'rows':[]};return db['SmsAccount'][_0x58ff('0x68')]({'where':{'id':_0x4265a1['params']['id']}})[_0x58ff('0x23')](handleEntityNotFound(_0x2a390a,null))[_0x58ff('0x23')](function(_0xcabe2e){if(_0xcabe2e){_0x203f06[_0x58ff('0x46')]=_[_0x58ff('0x5a')](db[_0x58ff('0x6f')][_0x58ff('0x43')]);_0x203f06[_0x58ff('0x47')]=_[_0x58ff('0x5a')](_0x4265a1[_0x58ff('0x47')]);_0x203f06[_0x58ff('0x48')]=_[_0x58ff('0x49')](_0x203f06[_0x58ff('0x46')],_0x203f06[_0x58ff('0x47')]);_0x1850d3['attributes']=_['intersection'](_0x203f06['model'],qs[_0x58ff('0x4b')](_0x4265a1[_0x58ff('0x47')]['fields']));_0x1850d3[_0x58ff('0x4a')]=_0x1850d3[_0x58ff('0x4a')][_0x58ff('0x5b')]?_0x1850d3[_0x58ff('0x4a')]:_0x203f06[_0x58ff('0x46')];if(!_0x4265a1[_0x58ff('0x47')][_0x58ff('0x69')](_0x58ff('0x6a'))){_0x1850d3['limit']=qs[_0x58ff('0x31')](_0x4265a1['query'][_0x58ff('0x31')]);_0x1850d3['offset']=qs[_0x58ff('0x2f')](_0x4265a1[_0x58ff('0x47')][_0x58ff('0x2f')]);}_0x1850d3[_0x58ff('0x6b')]=qs['sort'](_0x4265a1[_0x58ff('0x47')]['sort']);_0x1850d3[_0x58ff('0x4d')]=qs[_0x58ff('0x48')](_[_0x58ff('0x4e')](_0x4265a1[_0x58ff('0x47')],_0x203f06['filters']));_0x1850d3[_0x58ff('0x4d')]['SmsAccountId']=_0xcabe2e['id'];if(_0x4265a1[_0x58ff('0x47')]['filter']){_0x1850d3[_0x58ff('0x4d')]=_[_0x58ff('0x50')](_0x1850d3[_0x58ff('0x4d')],{'$or':_[_0x58ff('0x41')](_0x1850d3[_0x58ff('0x4a')],function(_0x135ff6){var _0xb7efee={};_0xb7efee[_0x135ff6]={'$like':'%'+_0x4265a1[_0x58ff('0x47')][_0x58ff('0x4f')]+'%'};return _0xb7efee;})});}_0x1850d3=_[_0x58ff('0x50')]({},_0x1850d3,_0x4265a1[_0x58ff('0x53')]);return db[_0x58ff('0x6f')][_0x58ff('0x32')]({'where':_0x1850d3['where']})[_0x58ff('0x23')](function(_0x165bc4){_0x2085f2[_0x58ff('0x32')]=_0x165bc4;if(_0x4265a1[_0x58ff('0x47')][_0x58ff('0x54')]){_0x1850d3[_0x58ff('0x55')]=[{'all':!![]}];}return db[_0x58ff('0x6f')][_0x58ff('0x56')](_0x1850d3);})['then'](function(_0x4d6b19){_0x2085f2['rows']=_0x4d6b19;return _0x2085f2;});}})[_0x58ff('0x23')](respondWithFilteredResult(_0x2a390a,_0x1850d3))[_0x58ff('0x2c')](handleError(_0x2a390a,null));};exports[_0x58ff('0x70')]=function(_0x269255,_0x2a80a9,_0x176d5e){return db[_0x58ff('0x42')][_0x58ff('0x5c')]({'where':{'id':_0x269255[_0x58ff('0x59')]['id']}})[_0x58ff('0x23')](handleEntityNotFound(_0x2a80a9,null))[_0x58ff('0x23')](function(_0x2e5bf4){if(_0x2e5bf4){return _0x2e5bf4[_0x58ff('0x70')](_0x269255[_0x58ff('0x47')][_0x58ff('0x71')]);}})[_0x58ff('0x23')](respondWithStatusCode(_0x2a80a9,null))[_0x58ff('0x2c')](handleError(_0x2a80a9,null));};exports[_0x58ff('0x72')]=function(_0x5a489b,_0x46528d,_0x133b70){var _0x4ed030={'channel':'sms'};var _0x2807fb=[];var _0x54b6b3=[];var _0x30c10c={};return db[_0x58ff('0x42')][_0x58ff('0x5c')]({'where':{'id':_0x5a489b[_0x58ff('0x59')]['id']},'include':[{'model':db[_0x58ff('0x73')],'as':_0x58ff('0x74')}]})[_0x58ff('0x23')](handleEntityNotFound(_0x46528d,null))['then'](function(_0x22811f){_0x4ed030[_0x58ff('0x75')]=_0x22811f;_0x4ed030[_0x58ff('0x76')]=_[_0x58ff('0x77')](_0x22811f[_0x58ff('0x74')],[_0x58ff('0x78')],['asc']);if(_0x4ed030['account'][_0x58ff('0x74')]){delete _0x4ed030['account'][_0x58ff('0x74')];}return db[_0x58ff('0x79')][_0x58ff('0x65')]();})['then'](function(_0x1e6b27){if(!_0x1e6b27){throw new db[(_0x58ff('0x7a'))][(_0x58ff('0x7b'))](_0x58ff('0x7c'));}_0x2807fb=_[_0x58ff('0x7d')](_[_0x58ff('0x5a')](_0x1e6b27),[_0x58ff('0x7e'),_0x58ff('0x7f')]);_0x54b6b3=_['difference'](_[_0x58ff('0x5a')](_0x1e6b27),[_0x58ff('0x7e'),_0x58ff('0x7f'),'CompanyId','ListId']);_0x4ed030[_0x58ff('0x5e')]={'mapKey':_0x58ff('0x80')};if(_0x4ed030[_0x58ff('0x75')][_0x58ff('0x51')]){switch(_0x4ed030['account'][_0x58ff('0x51')]){case _0x58ff('0x81'):_0x4ed030['body'][_0x58ff('0x82')]=_0x5a489b['body'][_0x58ff('0x83')];_0x4ed030[_0x58ff('0x5e')]['body']=_0x5a489b[_0x58ff('0x5e')][_0x58ff('0x84')];_0x4ed030[_0x58ff('0x5e')]['messageId']=_0x5a489b['body'][_0x58ff('0x85')];break;case _0x58ff('0x86'):_0x4ed030[_0x58ff('0x5e')][_0x58ff('0x82')]='+'+_0x5a489b[_0x58ff('0x5e')][_0x58ff('0x87')];_0x4ed030[_0x58ff('0x5e')][_0x58ff('0x5e')]=_0x5a489b[_0x58ff('0x5e')][_0x58ff('0x88')];break;case _0x58ff('0x89'):_0x4ed030['body']['from']=_0x5a489b[_0x58ff('0x5e')]['from'];_0x4ed030[_0x58ff('0x5e')]['body']=_0x5a489b['body'][_0x58ff('0x2b')];break;case _0x58ff('0x8a'):_0x4ed030[_0x58ff('0x5e')][_0x58ff('0x82')]=_0x5a489b[_0x58ff('0x5e')][_0x58ff('0x82')];_0x4ed030[_0x58ff('0x5e')][_0x58ff('0x5e')]=_0x5a489b[_0x58ff('0x5e')][_0x58ff('0x5e')];_0x4ed030[_0x58ff('0x5e')]['messageId']=_0x5a489b[_0x58ff('0x5e')][_0x58ff('0x8b')];break;case'plivo':_0x4ed030[_0x58ff('0x5e')][_0x58ff('0x82')]=_0x5a489b[_0x58ff('0x5e')][_0x58ff('0x83')];_0x4ed030['body'][_0x58ff('0x5e')]=_0x5a489b[_0x58ff('0x5e')]['Text'];_0x4ed030[_0x58ff('0x5e')][_0x58ff('0x8c')]=_0x5a489b[_0x58ff('0x5e')]['MessageUUID'];break;case'infobip':_0x4ed030['body'][_0x58ff('0x82')]='+'+_0x5a489b[_0x58ff('0x5e')]['results'][0x0][_0x58ff('0x82')];_0x4ed030['body'][_0x58ff('0x5e')]=_0x5a489b[_0x58ff('0x5e')][_0x58ff('0x8d')][0x0]['text'];_0x4ed030[_0x58ff('0x5e')][_0x58ff('0x8c')]=_0x5a489b['body'][_0x58ff('0x8d')][0x0][_0x58ff('0x8c')];break;case'csc':_0x4ed030['body'][_0x58ff('0x82')]=_0x5a489b[_0x58ff('0x5e')][_0x58ff('0x8e')];_0x4ed030[_0x58ff('0x5e')][_0x58ff('0x5e')]=_0x5a489b['body']['segmentedMessage'][_0x58ff('0x2b')];break;case'clickatell':_0x4ed030['body']['from']=_0x5a489b[_0x58ff('0x5e')]['fromNumber'];_0x4ed030[_0x58ff('0x5e')]['body']=_0x5a489b[_0x58ff('0x5e')][_0x58ff('0x88')];_0x4ed030[_0x58ff('0x5e')][_0x58ff('0x8c')]=_0x5a489b[_0x58ff('0x5e')][_0x58ff('0x8f')];break;case _0x58ff('0x90'):_0x4ed030[_0x58ff('0x5e')][_0x58ff('0x8c')]=_0x5a489b[_0x58ff('0x5e')][0x0][_0x58ff('0x2b')]['id'];_0x4ed030[_0x58ff('0x5e')][_0x58ff('0x82')]=_0x5a489b[_0x58ff('0x5e')][0x0][_0x58ff('0x2b')][_0x58ff('0x82')];_0x4ed030[_0x58ff('0x5e')][_0x58ff('0x5e')]=_0x5a489b['body'][0x0][_0x58ff('0x2b')]['text'];break;case _0x58ff('0x91'):_0x4ed030[_0x58ff('0x5e')][_0x58ff('0x82')]=_0x5a489b[_0x58ff('0x5e')]['from'];_0x4ed030['body'][_0x58ff('0x5e')]=_0x5a489b[_0x58ff('0x5e')][_0x58ff('0x2b')];_0x4ed030[_0x58ff('0x5e')]['messageId']=_0x5a489b[_0x58ff('0x5e')]['refid'];break;}}if(_0x4ed030[_0x58ff('0x5e')]['id']){delete _0x4ed030[_0x58ff('0x5e')]['id'];}if(_[_0x58ff('0x92')](_0x4ed030[_0x58ff('0x5e')]['from'])){throw new db[(_0x58ff('0x7a'))]['ValidationError'](_0x58ff('0x93'));}if(_['isNil'](_0x4ed030[_0x58ff('0x5e')][_0x58ff('0x5e')])||_0x4ed030['body']['body']===''){throw new db['Sequelize'][(_0x58ff('0x7b'))](_0x58ff('0x94'));}if(_[_0x58ff('0x92')](_0x4ed030[_0x58ff('0x5e')][_0x58ff('0x95')])){throw new db[(_0x58ff('0x7a'))][(_0x58ff('0x7b'))](_0x58ff('0x96')+_0x54b6b3);}if(!_[_0x58ff('0x97')](_0x54b6b3,_0x4ed030[_0x58ff('0x5e')][_0x58ff('0x95')])){throw new db[(_0x58ff('0x7a'))][(_0x58ff('0x7b'))](_0x58ff('0x98')+_0x54b6b3);}_0x30c10c[_0x4ed030[_0x58ff('0x5e')][_0x58ff('0x95')]]=_0x4ed030[_0x58ff('0x5e')][_0x58ff('0x82')];return db[_0x58ff('0x99')]['find']({'where':{'id':_0x4ed030[_0x58ff('0x75')][_0x58ff('0x9a')]},'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x30c10c,'limit':0x1,'order':[['updatedAt',_0x58ff('0x9b')]]}]});})[_0x58ff('0x23')](handleEntityNotFound(_0x46528d,null))[_0x58ff('0x23')](function(_0x3e92fd){if(_0x3e92fd){_0x4ed030[_0x58ff('0x9c')]=_[_0x58ff('0x9d')](_0x3e92fd,[_0x58ff('0x9e')]);if(_0x3e92fd['Contacts']['length']){return _0x3e92fd[_0x58ff('0x9e')][0x0];}var _0x3e8683=_['defaults'](_0x4ed030[_0x58ff('0x5e')],{'firstName':_0x4ed030[_0x58ff('0x5e')][_0x58ff('0x82')],'ListId':_0x3e92fd['id']});_0x3e8683[_0x4ed030[_0x58ff('0x5e')]['mapKey']]=_0x4ed030[_0x58ff('0x5e')][_0x58ff('0x82')];return db[_0x58ff('0x79')]['create'](_0x3e8683,{'fields':_0x2807fb,'raw':!![]});}})[_0x58ff('0x23')](handleEntityNotFound(_0x46528d,null))[_0x58ff('0x23')](function(_0x501485){if(_0x501485){_0x4ed030['contact']=_0x501485;var _0xbbcb75={'ContactId':_0x501485['id'],'phone':_0x4ed030['body']['from'],'SmsAccountId':_0x5a489b[_0x58ff('0x59')]['id']};var _0x291552={'ContactId':_0x501485['id'],'SmsAccountId':_0x5a489b[_0x58ff('0x59')]['id'],'closed':![]};return db[_0x58ff('0x9f')][_0x58ff('0x5c')]({'where':_0x291552})[_0x58ff('0x23')](function(_0x18d74a){if(_0x18d74a){return[_0x18d74a,![]];}return db[_0x58ff('0x9f')][_0x58ff('0x5d')](_0xbbcb75)[_0x58ff('0x23')](function(_0x2c6a4c){return[_0x2c6a4c,!![]];});});}})[_0x58ff('0xa0')](function(_0x32bc78,_0x4aa2ab){_0x4ed030[_0x58ff('0xa1')]=_0x32bc78[_0x58ff('0x38')]({'plain':!![]});_0x4ed030[_0x58ff('0xa1')][_0x58ff('0xa2')]=![];if(_0x4aa2ab){if(_0x4ed030[_0x58ff('0x75')][_0x58ff('0xa3')]){_0x4ed030[_0x58ff('0x76')][_0x58ff('0xa4')]({'id':0x0,'priority':_0x4ed030['applications'][_0x58ff('0x5b')]+0x1,'app':_0x58ff('0xa5'),'appdata':_0x58ff('0xa6'),'interval':_0x58ff('0xa7')});}_0x4ed030[_0x58ff('0xa1')][_0x58ff('0xa2')]=!![];}return db['SmsMessage'][_0x58ff('0x5d')]({'phone':_0x4ed030[_0x58ff('0x5e')]['from'],'messageId':_0x4ed030[_0x58ff('0x5e')]['messageId'],'body':_0x4ed030[_0x58ff('0x5e')][_0x58ff('0x5e')],'SmsAccountId':_0x5a489b[_0x58ff('0x59')]['id'],'SmsInteractionId':_0x32bc78['id'],'direction':'in','ContactId':_0x32bc78[_0x58ff('0xa8')],'AttachmentId':_0x4ed030[_0x58ff('0x5e')]['AttachmentId']});})[_0x58ff('0x23')](function(_0x252afd){_0x4ed030[_0x58ff('0x2b')]=_0x252afd;if(_0x4ed030['interaction'][_0x58ff('0xa9')]){return db[_0x58ff('0xaa')][_0x58ff('0x5c')]({'attributes':['id',_0x58ff('0x3c')],'where':{'id':_0x4ed030[_0x58ff('0xa1')][_0x58ff('0xa9')]}})['then'](function(_0x50de4c){if(_0x50de4c){_0x4ed030[_0x58ff('0x76')][_0x58ff('0xab')]({'id':0x0,'priority':0x0,'app':_0x58ff('0xac'),'appdata':_0x50de4c[_0x58ff('0x3c')]+','+(_0x4ed030['account'][_0x58ff('0xad')]||0xa),'interval':_0x58ff('0xa7')});}return respondWithRpcPromise('Start',_0x58ff('0xae'),_0x4ed030);});}return respondWithRpcPromise(_0x58ff('0xaf'),'startRouting',_0x4ed030);})[_0x58ff('0x23')](function(_0x5d30c8){if(_0x5d30c8){var _0x4ab359=0xc8;var _0x26ad02=_0x58ff('0xb0');logger[_0x58ff('0x24')](_0x58ff('0xb1'),_0x26ad02,_0x4ab359,'entity\x20found');logger[_0x58ff('0x26')]('SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x26ad02,_0x4ab359,_0x58ff('0xb2'),JSON[_0x58ff('0x27')](_0x5d30c8));if(_0x4ed030['account'][_0x58ff('0x51')]===_0x58ff('0x81')){return _0x46528d['status'](_0x4ab359)[_0x58ff('0xb3')](_0x58ff('0xb4'),'text/xml')[_0x58ff('0x3d')]('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x46528d[_0x58ff('0x2d')](_0x4ab359)[_0x58ff('0xb5')](_0x5d30c8);}}})[_0x58ff('0x2c')](handleError(_0x46528d,null));};exports[_0x58ff('0xb6')]=function(_0x3a35fc,_0x241b93,_0x314334){return db[_0x58ff('0x42')][_0x58ff('0x68')]({'where':{'id':_0x3a35fc[_0x58ff('0x59')]['id']}})['then'](handleEntityNotFound(_0x241b93,null))[_0x58ff('0x23')](function(_0x2ad5f1){if(_0x2ad5f1){return db[_0x58ff('0xb7')]['transaction'](function(_0x900b2b){return db[_0x58ff('0x73')][_0x58ff('0x37')]({'where':{'SmsAccountId':_0x3a35fc[_0x58ff('0x59')]['id']},'transaction':_0x900b2b})[_0x58ff('0x23')](function(_0xa7dd85){var _0x4e5cc0=_['map'](_0x3a35fc['body'],function(_0x468369){_0x468369[_0x58ff('0x66')]=_0x3a35fc[_0x58ff('0x59')]['id'];return _0x468369;});return db[_0x58ff('0x73')][_0x58ff('0xb8')](_0x4e5cc0,{'transaction':_0x900b2b});});})['then'](function(){return db[_0x58ff('0x73')][_0x58ff('0xb9')]({'where':{'SmsAccountId':_0x3a35fc[_0x58ff('0x59')]['id']},'order':_0x58ff('0x78')});});}})['then'](respondWithResult(_0x241b93,null))[_0x58ff('0x2c')](handleError(_0x241b93,null));};exports[_0x58ff('0xba')]=function(_0x5ba25c,_0x28f402,_0x2dc89d){var _0x5d4a18={};var _0x44a8ec={};var _0x2aac19;var _0x148021;return db[_0x58ff('0x42')][_0x58ff('0x68')]({'where':{'id':_0x5ba25c['params']['id']}})[_0x58ff('0x23')](handleEntityNotFound(_0x28f402,null))['then'](function(_0x3fcf96){if(_0x3fcf96){_0x2aac19=_0x3fcf96;_0x44a8ec['model']=_[_0x58ff('0x5a')](db[_0x58ff('0x73')]['rawAttributes']);_0x44a8ec[_0x58ff('0x47')]=_['keys'](_0x5ba25c['query']);_0x44a8ec[_0x58ff('0x48')]=_[_0x58ff('0x49')](_0x44a8ec[_0x58ff('0x46')],_0x44a8ec['query']);_0x5d4a18[_0x58ff('0x4a')]=_[_0x58ff('0x49')](_0x44a8ec['model'],qs['fields'](_0x5ba25c[_0x58ff('0x47')]['fields']));_0x5d4a18[_0x58ff('0x4a')]=_0x5d4a18[_0x58ff('0x4a')][_0x58ff('0x5b')]?_0x5d4a18[_0x58ff('0x4a')]:_0x44a8ec[_0x58ff('0x46')];_0x5d4a18[_0x58ff('0x6b')]=qs[_0x58ff('0x4c')](_0x5ba25c['query'][_0x58ff('0x4c')]);_0x5d4a18[_0x58ff('0x4d')]=qs[_0x58ff('0x48')](_[_0x58ff('0x4e')](_0x5ba25c[_0x58ff('0x47')],_0x44a8ec[_0x58ff('0x48')]));if(_0x5ba25c['query'][_0x58ff('0x4f')]){_0x5d4a18['where']=_[_0x58ff('0x50')](_0x5d4a18[_0x58ff('0x4d')],{'$or':_['map'](_0x5d4a18['attributes'],function(_0x470008){var _0x396116={};_0x396116[_0x470008]={'$like':'%'+_0x5ba25c[_0x58ff('0x47')][_0x58ff('0x4f')]+'%'};return _0x396116;})});}_0x5d4a18=_[_0x58ff('0x50')]({},_0x5d4a18,_0x5ba25c[_0x58ff('0x53')]);return _0x2aac19[_0x58ff('0xba')](_0x5d4a18);}})[_0x58ff('0x23')](function(_0x3e34f0){if(_0x3e34f0){_0x148021=_0x3e34f0[_0x58ff('0x5b')];if(!_0x5ba25c['query'][_0x58ff('0x69')](_0x58ff('0x6a'))){_0x5d4a18[_0x58ff('0x31')]=qs[_0x58ff('0x31')](_0x5ba25c[_0x58ff('0x47')][_0x58ff('0x31')]);_0x5d4a18[_0x58ff('0x2f')]=qs[_0x58ff('0x2f')](_0x5ba25c[_0x58ff('0x47')][_0x58ff('0x2f')]);}return _0x2aac19[_0x58ff('0xba')](_0x5d4a18);}})[_0x58ff('0x23')](function(_0x189b6b){if(_0x189b6b){return _0x189b6b?{'count':_0x148021,'rows':_0x189b6b}:null;}})[_0x58ff('0x23')](respondWithResult(_0x28f402,null))[_0x58ff('0x2c')](handleError(_0x28f402,null));};exports[_0x58ff('0xbb')]=function(_0x4e8a64,_0x31d3c0,_0x4c4341){var _0x5c15ef={'raw':![],'where':{}};var _0x20267f={};var _0xf28a5b={'count':0x0,'rows':[]};return db[_0x58ff('0x42')][_0x58ff('0x68')]({'where':{'id':_0x4e8a64['params']['id']}})['then'](handleEntityNotFound(_0x31d3c0,null))['then'](function(_0x201ad7){if(_0x201ad7){_0x20267f['model']=_[_0x58ff('0x5a')](db[_0x58ff('0x9f')][_0x58ff('0x43')]);_0x20267f[_0x58ff('0x47')]=_[_0x58ff('0x5a')](_0x4e8a64[_0x58ff('0x47')]);_0x20267f[_0x58ff('0x48')]=_[_0x58ff('0x49')](_0x20267f[_0x58ff('0x46')],_0x20267f[_0x58ff('0x47')]);_0x5c15ef[_0x58ff('0x4a')]=_[_0x58ff('0x49')](_0x20267f[_0x58ff('0x46')],qs[_0x58ff('0x4b')](_0x4e8a64[_0x58ff('0x47')][_0x58ff('0x4b')]));_0x5c15ef['attributes']=_0x5c15ef[_0x58ff('0x4a')][_0x58ff('0x5b')]?_0x5c15ef['attributes']:_0x20267f['model'];if(!_0x4e8a64[_0x58ff('0x47')][_0x58ff('0x69')](_0x58ff('0x6a'))){_0x5c15ef[_0x58ff('0x31')]=qs[_0x58ff('0x31')](_0x4e8a64['query'][_0x58ff('0x31')]);_0x5c15ef[_0x58ff('0x2f')]=qs[_0x58ff('0x2f')](_0x4e8a64[_0x58ff('0x47')][_0x58ff('0x2f')]);}_0x5c15ef['order']=qs[_0x58ff('0x4c')](_0x4e8a64[_0x58ff('0x47')][_0x58ff('0x4c')]);_0x5c15ef[_0x58ff('0x4d')]=qs[_0x58ff('0x48')](_['pick'](_0x4e8a64['query'],_0x20267f[_0x58ff('0x48')]));_0x5c15ef[_0x58ff('0x4d')]['SmsAccountId']=_0x201ad7['id'];if(_0x4e8a64[_0x58ff('0x47')][_0x58ff('0x4f')]){_0x5c15ef[_0x58ff('0x4d')]=_[_0x58ff('0x50')](_0x5c15ef[_0x58ff('0x4d')],{'$or':_[_0x58ff('0x41')](_0x5c15ef[_0x58ff('0x4a')],function(_0x21f570){var _0x4be91b={};_0x4be91b[_0x21f570]={'$like':'%'+_0x4e8a64[_0x58ff('0x47')][_0x58ff('0x4f')]+'%'};return _0x4be91b;})});}_0x5c15ef=_[_0x58ff('0x50')]({},_0x5c15ef,_0x4e8a64[_0x58ff('0x53')]);return db['SmsInteraction'][_0x58ff('0x32')]({'where':_0x5c15ef[_0x58ff('0x4d')]})['then'](function(_0x3aa846){_0xf28a5b['count']=_0x3aa846;if(_0x4e8a64[_0x58ff('0x47')][_0x58ff('0x54')]){_0x5c15ef['include']=[{'model':db[_0x58ff('0x79')],'as':'Contact','required':![]},{'model':db[_0x58ff('0xaa')],'as':_0x58ff('0xbc'),'attributes':[_0x58ff('0x3c'),_0x58ff('0xbd'),_0x58ff('0xbe')],'required':![]},{'model':db[_0x58ff('0xbf')],'as':'Tags','attributes':['id','name',_0x58ff('0xc0')],'where':_0x4e8a64[_0x58ff('0x47')][_0x58ff('0xc1')]?{'id':_0x4e8a64['query']['tag']}:undefined,'required':_0x4e8a64[_0x58ff('0x47')][_0x58ff('0xc1')]?!![]:![]}];}return db['SmsInteraction']['findAll'](_0x5c15ef);})[_0x58ff('0x23')](function(_0x573bfe){_0xf28a5b[_0x58ff('0x57')]=_0x573bfe;return _0xf28a5b;});}})['then'](respondWithFilteredResult(_0x31d3c0,_0x5c15ef))[_0x58ff('0x2c')](handleError(_0x31d3c0,null));};exports[_0x58ff('0x3d')]=function(_0x5c9159,_0x331b2f,_0x580078){var _0x4d91f9,_0x691be0,_0x177e0f;if(_[_0x58ff('0x92')](_0x5c9159[_0x58ff('0x5e')][_0x58ff('0x5e')])||_0x5c9159[_0x58ff('0x5e')][_0x58ff('0x5e')]===''){throw new db['Sequelize'][(_0x58ff('0x7b'))](_0x58ff('0x94'));}if(_[_0x58ff('0x92')](_0x5c9159[_0x58ff('0x5e')]['to'])){throw new db[(_0x58ff('0x7a'))][(_0x58ff('0x7b'))]('to\x20is\x20mandatory');}_0x4d91f9=_0x5c9159[_0x58ff('0x5e')]['to'];return db[_0x58ff('0x42')]['find']({'where':{'id':_0x5c9159[_0x58ff('0x59')]['id']},'include':[{'model':db[_0x58ff('0x99')],'as':_0x58ff('0xc2'),'include':[{'model':db[_0x58ff('0x79')],'as':_0x58ff('0x9e'),'where':{'mobile':_0x4d91f9},'limit':0x1,'order':[['updatedAt','DESC']]}]}]})['then'](handleEntityNotFound(_0x331b2f,null))[_0x58ff('0x23')](function(_0x3df067){if(_0x3df067&&_0x3df067[_0x58ff('0xc2')]){_0x691be0=_0x3df067[_0x58ff('0x38')]({'plain':!![]});if(_0x691be0[_0x58ff('0xc2')]&&_0x691be0[_0x58ff('0xc2')][_0x58ff('0x9e')][_0x58ff('0x5b')]){return _0x691be0[_0x58ff('0xc2')][_0x58ff('0x9e')][0x0];}return db[_0x58ff('0x79')][_0x58ff('0x5d')](_[_0x58ff('0x1a')](_0x5c9159['body'],{'firstName':_0x4d91f9,'mobile':_0x4d91f9,'phone':_0x4d91f9,'ListId':_0x691be0[_0x58ff('0x9a')]}));}})[_0x58ff('0x23')](handleEntityNotFound(_0x331b2f,null))[_0x58ff('0x23')](function(_0x513849){if(_0x513849){_0x177e0f=_0x513849;return db[_0x58ff('0x9f')][_0x58ff('0x5c')]({'where':{'ContactId':_0x177e0f['id'],'closed':![],'SmsAccountId':_0x691be0['id']}})[_0x58ff('0x23')](function(_0x2f1a03){if(_0x2f1a03){return[_0x2f1a03,![]];}return db['SmsInteraction']['create']({'UserId':_0x5c9159[_0x58ff('0x61')]['id'],'ContactId':_0x177e0f['id'],'SmsAccountId':_0x691be0['id'],'phone':_0x4d91f9,'firstMsgDirection':_0x58ff('0xc3'),'Messages':[_[_0x58ff('0x50')](_0x5c9159[_0x58ff('0x5e')],{'read':![],'body':_0x5c9159[_0x58ff('0x5e')][_0x58ff('0x5e')],'phone':_0x4d91f9,'SmsAccountId':_0x691be0['id'],'UserId':_0x5c9159[_0x58ff('0x61')]['id'],'ContactId':_0x177e0f['id']})]},{'include':[{'model':db[_0x58ff('0xc4')],'as':_0x58ff('0xc5')}]})['then'](function(_0x500ef7){return[_0x500ef7,!![]];});});}})['spread'](function(_0xe27bdb,_0x3c8d44){if(_0x3c8d44){return _0xe27bdb;}return db['SmsMessage'][_0x58ff('0x5d')](_[_0x58ff('0x50')](_0x5c9159[_0x58ff('0x5e')],{'read':![],'body':_0x5c9159['body'][_0x58ff('0x5e')],'phone':_0x4d91f9,'SmsAccountId':_0x691be0['id'],'SmsInteractionId':_0xe27bdb['id'],'UserId':_0x5c9159[_0x58ff('0x61')]['id'],'ContactId':_0x177e0f['id']}))['then'](function(_0x5bbe16){_0xe27bdb[_0x58ff('0xc6')][_0x58ff('0xc5')]=[];_0xe27bdb[_0x58ff('0xc6')][_0x58ff('0xc5')]['push'](_0x5bbe16[_0x58ff('0xc6')]);return _0xe27bdb;});})[_0x58ff('0x23')](respondWithResult(_0x331b2f,null))[_0x58ff('0x2c')](handleError(_0x331b2f,null));};exports[_0x58ff('0x2d')]=function(_0x3c0edb,_0x2d5a8c,_0x4ff33e){if(_0x3c0edb['body']['id']){delete _0x3c0edb['body']['id'];}var _0x3f76b8,_0x3ff72a,_0x1ffa94;return db[_0x58ff('0x42')][_0x58ff('0x5c')]({'where':{'id':_0x3c0edb['params']['id']}})[_0x58ff('0x23')](handleEntityNotFound(_0x2d5a8c,null))['then'](function(_0x5ad9c4){if(_0x5ad9c4){_0x1ffa94=_0x5ad9c4;logger[_0x58ff('0x26')](_0x58ff('0xb1'),_0x58ff('0x2d'),_0x58ff('0xc7'),_0x5ad9c4[_0x58ff('0x51')],util['inspect'](_0x3c0edb[_0x58ff('0x5e')],{'showHidden':![],'depth':null}));switch(_0x5ad9c4['type']){case _0x58ff('0x86'):if(_0x3c0edb[_0x58ff('0x5e')][_0x58ff('0xc8')]&&_0x3c0edb[_0x58ff('0x5e')][_0x58ff('0x2d')]){_0x3ff72a=_0x3c0edb[_0x58ff('0x5e')]['status'];return db[_0x58ff('0xc4')][_0x58ff('0x5c')]({'where':{'messageId':_0x3c0edb[_0x58ff('0x5e')]['skebby_dispatch_id']}});}break;case _0x58ff('0x89'):if(_0x3c0edb['body'][_0x58ff('0xc9')]&&_0x3c0edb[_0x58ff('0x5e')]['statusInt']){_0x3ff72a=_0x3c0edb[_0x58ff('0x5e')][_0x58ff('0xca')];return db[_0x58ff('0xc4')][_0x58ff('0x5c')]({'where':{'messageId':_0x3c0edb[_0x58ff('0x5e')][_0x58ff('0xc9')]}});}break;case _0x58ff('0x8a'):if(_0x3c0edb[_0x58ff('0x5e')][_0x58ff('0x8b')]&&_0x3c0edb['body'][_0x58ff('0xcb')]){_0x3ff72a=_0x3c0edb[_0x58ff('0x5e')][_0x58ff('0xcb')];return db[_0x58ff('0xc4')][_0x58ff('0x5c')]({'where':{'messageId':_0x3c0edb[_0x58ff('0x5e')][_0x58ff('0x8b')]}});}break;case _0x58ff('0xcc'):var _0x5a94dd=_0x3c0edb['body'][_0x58ff('0x8d')][0x0];if(_0x5a94dd[_0x58ff('0x8c')]&&_0x5a94dd[_0x58ff('0x2d')][_0x58ff('0xcd')]===_0x58ff('0xce')){_0x3ff72a=_0x5a94dd[_0x58ff('0x2d')]['groupName'];return db[_0x58ff('0xc4')][_0x58ff('0x5c')]({'where':{'messageId':_0x5a94dd[_0x58ff('0x8c')]}});}break;case _0x58ff('0xcf'):if(_0x3c0edb['body'][_0x58ff('0x8c')]&&_0x3c0edb[_0x58ff('0x5e')][_0x58ff('0x2d')]){_0x3ff72a=_0x3c0edb[_0x58ff('0x5e')][_0x58ff('0x2d')];return db['SmsMessage'][_0x58ff('0x5c')]({'where':{'messageId':_0x3c0edb[_0x58ff('0x5e')][_0x58ff('0x8c')]}});}break;case _0x58ff('0x90'):if(_0x3c0edb['body'][0x0][_0x58ff('0x2b')]['id']){_0x3ff72a=_0x3c0edb['body'][0x0][_0x58ff('0x51')];return db[_0x58ff('0xc4')]['find']({'where':{'messageId':_0x3c0edb['body'][0x0][_0x58ff('0x2b')]['id']}});}break;case _0x58ff('0x91'):if(_0x3c0edb['body']['redif']&&_0x3c0edb[_0x58ff('0x5e')][_0x58ff('0x2d')]){_0x3ff72a=_0x3c0edb[_0x58ff('0x5e')][_0x58ff('0x2d')];return db[_0x58ff('0xc4')][_0x58ff('0x5c')]({'where':{'messageId':_0x3c0edb[_0x58ff('0x5e')][_0x58ff('0xd0')]}});}break;}}})[_0x58ff('0x23')](handleEntityNotFound(_0x2d5a8c,null))['then'](function(_0x191824){if(_0x191824){_0x3f76b8=_0x191824;switch(_0x1ffa94['type']){case _0x58ff('0x86'):if(_0x3ff72a==='DELIVERED'){return _0x3f76b8[_0x58ff('0xd1')]({'read':!![]});}else{logger[_0x58ff('0x28')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x58ff('0x2d'),_0x58ff('0x86'),util[_0x58ff('0xd2')](_0x3c0edb[_0x58ff('0x5e')],{'showHidden':![],'depth':null}));}break;case _0x58ff('0x89'):if(_0x3ff72a==='1'){return _0x3f76b8[_0x58ff('0xd1')]({'read':!![]});}else{logger['error'](_0x58ff('0xb1'),'status',_0x58ff('0x86'),util['inspect'](_0x3c0edb[_0x58ff('0x5e')],{'showHidden':![],'depth':null}));}break;case _0x58ff('0x8a'):if(!_0x3c0edb[_0x58ff('0x5e')][_0x58ff('0xd3')]&&_0x3ff72a>=0xc8&&_0x3ff72a<=0xce){return _0x3f76b8[_0x58ff('0xd1')]({'read':!![]});}else{logger[_0x58ff('0x28')](_0x58ff('0xb1'),'status','clicksend',util[_0x58ff('0xd2')](_0x3c0edb[_0x58ff('0x5e')],{'showHidden':![],'depth':null}));}break;case _0x58ff('0xcc'):var _0x2f17ae=_0x3c0edb['body'][_0x58ff('0x8d')][0x0];if(_0x2f17ae['status'][_0x58ff('0xcd')]===_0x58ff('0xce')){return _0x3f76b8['update']({'read':!![]});}else{logger[_0x58ff('0x28')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x58ff('0x2d'),'infobip',util[_0x58ff('0xd2')](_0x3c0edb[_0x58ff('0x5e')],{'showHidden':![],'depth':null}));}break;case _0x58ff('0xcf'):if(_0x3ff72a=='DELIVERED_TO_GATEWAY'||_0x3ff72a==_0x58ff('0xd4')){return _0x3f76b8[_0x58ff('0xd1')]({'read':!![]});}else{logger[_0x58ff('0x28')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x58ff('0x2d'),'clickatell',util['inspect'](_0x3c0edb[_0x58ff('0x5e')],{'showHidden':![],'depth':null}));}break;case _0x58ff('0x90'):if(_0x3ff72a=='message-delivered'){return _0x3f76b8[_0x58ff('0xd1')]({'read':!![]});}else{logger['error'](_0x58ff('0xb1'),_0x58ff('0x2d'),'bandwidth',util[_0x58ff('0xd2')](_0x3c0edb[_0x58ff('0x5e')],{'showHidden':![],'depth':null}));}break;case _0x58ff('0x91'):if(_0x3ff72a===_0x58ff('0xd5')||_0x3ff72a===_0x58ff('0xd6')){return _0x3f76b8[_0x58ff('0xd1')]({'read':!![]});}else{logger[_0x58ff('0x28')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x58ff('0x2d'),_0x58ff('0x91'),util[_0x58ff('0xd2')](_0x3c0edb[_0x58ff('0x5e')],{'showHidden':![],'depth':null}));}break;}return _0x3f76b8;}})[_0x58ff('0x23')](respondWithResult(_0x2d5a8c,null))[_0x58ff('0x2c')](handleError(_0x2d5a8c,null));};exports[_0x58ff('0xd7')]=function(_0x2bed71,_0x362ee5,_0x43a554){var _0x486d7d,_0x2da5e5,_0x96a7a4;return db[_0x58ff('0x42')][_0x58ff('0x5c')]({'where':{'id':_0x2bed71['params']['id']}})[_0x58ff('0x23')](handleEntityNotFound(_0x362ee5,null))[_0x58ff('0x23')](function(_0x174866){if(_0x174866){_0x96a7a4=_0x174866;logger[_0x58ff('0x26')]('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0x58ff('0xc7'),_0x174866[_0x58ff('0x51')],util['inspect'](_0x2bed71[_0x58ff('0x47')],{'showHidden':![],'depth':null}));switch(_0x174866[_0x58ff('0x51')]){case'csc':if(_0x2bed71[_0x58ff('0x47')][_0x58ff('0xd8')]&&_0x2bed71[_0x58ff('0x47')]['state']){_0x2da5e5=_0x2bed71[_0x58ff('0x47')][_0x58ff('0xd9')];return db[_0x58ff('0xc4')][_0x58ff('0x5c')]({'where':{'messageId':_0x2bed71[_0x58ff('0x47')]['message-id']}});}break;}}})['then'](handleEntityNotFound(_0x362ee5,null))[_0x58ff('0x23')](function(_0x28cd96){if(_0x28cd96){_0x486d7d=_0x28cd96;switch(_0x96a7a4[_0x58ff('0x51')]){case _0x58ff('0xda'):if(_0x2da5e5==='2'||_0x2da5e5==='6'){return _0x486d7d[_0x58ff('0xd1')]({'read':!![]});}else{logger['error'](_0x58ff('0xb1'),_0x58ff('0x2d'),'csc',util[_0x58ff('0xd2')](_0x2bed71[_0x58ff('0x47')],{'showHidden':![],'depth':null}));};break;}return _0x486d7d;}})['then'](respondWithResult(_0x362ee5,null))[_0x58ff('0x2c')](handleError(_0x362ee5,null));};exports[_0x58ff('0xdb')]=function(_0x2925c3,_0x3480ce,_0x3315a9){return db['SmsAccount'][_0x58ff('0x5c')]({'where':{'id':_0x2925c3[_0x58ff('0x59')]['id']}})[_0x58ff('0x23')](handleEntityNotFound(_0x3480ce,null))[_0x58ff('0x23')](function(_0x31c025){if(_0x31c025){return _0x31c025['addAgents'](_0x2925c3[_0x58ff('0x5e')][_0x58ff('0x71')],_[_0x58ff('0x9d')](_0x2925c3[_0x58ff('0x5e')],[_0x58ff('0x71'),'id'])||{})[_0x58ff('0xa0')](function(_0x1a2fde){for(var _0x4ab9b8=0x0;_0x4ab9b8<_0x2925c3['body']['ids'][_0x58ff('0x5b')];_0x4ab9b8+=0x1){socket['emit']('userSmsAccount:save',{'UserId':Number(_0x2925c3[_0x58ff('0x5e')][_0x58ff('0x71')][_0x4ab9b8]),'SmsAccountId':Number(_0x2925c3[_0x58ff('0x59')]['id'])});}return _0x1a2fde;});}})[_0x58ff('0x23')](respondWithResult(_0x3480ce,null))['catch'](handleError(_0x3480ce,null));};exports[_0x58ff('0xdc')]=function(_0x7636a3,_0x46555a,_0x3d0647){return db[_0x58ff('0x42')]['find']({'where':{'id':_0x7636a3[_0x58ff('0x59')]['id']}})[_0x58ff('0x23')](handleEntityNotFound(_0x46555a,null))[_0x58ff('0x23')](function(_0x5c2f50){if(_0x5c2f50){return _0x5c2f50[_0x58ff('0xdc')](_0x7636a3['query'][_0x58ff('0x71')])[_0x58ff('0x23')](function(){if(_[_0x58ff('0xdd')](_0x7636a3[_0x58ff('0x47')]['ids'])){for(var _0x226112=0x0;_0x226112<_0x7636a3[_0x58ff('0x47')][_0x58ff('0x71')]['length'];_0x226112+=0x1){socket[_0x58ff('0xde')](_0x58ff('0xdf'),{'UserId':Number(_0x7636a3[_0x58ff('0x47')][_0x58ff('0x71')][_0x226112]),'SmsAccountId':Number(_0x7636a3[_0x58ff('0x59')]['id'])});}}else{socket['emit'](_0x58ff('0xdf'),{'UserId':Number(_0x7636a3[_0x58ff('0x47')][_0x58ff('0x71')]),'SmsAccountId':Number(_0x7636a3[_0x58ff('0x59')]['id'])});}});}})[_0x58ff('0x23')](respondWithStatusCode(_0x46555a,null))[_0x58ff('0x2c')](handleError(_0x46555a,null));};exports['getAgents']=function(_0x48466a,_0x2303ce,_0x4b3d4f){var _0x5763f5={};var _0x48e237={};var _0x5bb71a;var _0x13849d;return db[_0x58ff('0x42')][_0x58ff('0x68')]({'where':{'id':_0x48466a[_0x58ff('0x59')]['id']}})[_0x58ff('0x23')](handleEntityNotFound(_0x2303ce,null))['then'](function(_0x3bddb5){if(_0x3bddb5){_0x5bb71a=_0x3bddb5;_0x48e237[_0x58ff('0x46')]=_['keys'](db[_0x58ff('0xaa')][_0x58ff('0x43')]);_0x48e237[_0x58ff('0x47')]=_[_0x58ff('0x5a')](_0x48466a[_0x58ff('0x47')]);_0x48e237[_0x58ff('0x48')]=_[_0x58ff('0x49')](_0x48e237[_0x58ff('0x46')],_0x48e237[_0x58ff('0x47')]);_0x5763f5[_0x58ff('0x4a')]=_[_0x58ff('0x49')](_0x48e237[_0x58ff('0x46')],qs[_0x58ff('0x4b')](_0x48466a[_0x58ff('0x47')][_0x58ff('0x4b')]));_0x5763f5[_0x58ff('0x4a')]=_0x5763f5['attributes'][_0x58ff('0x5b')]?_0x5763f5[_0x58ff('0x4a')]:_0x48e237[_0x58ff('0x46')];_0x5763f5['order']=qs[_0x58ff('0x4c')](_0x48466a[_0x58ff('0x47')][_0x58ff('0x4c')]);_0x5763f5[_0x58ff('0x4d')]=qs[_0x58ff('0x48')](_['pick'](_0x48466a['query'],_0x48e237[_0x58ff('0x48')]));if(_0x48466a['query'][_0x58ff('0x4f')]){_0x5763f5[_0x58ff('0x4d')]=_[_0x58ff('0x50')](_0x5763f5['where'],{'$or':_[_0x58ff('0x41')](_0x5763f5[_0x58ff('0x4a')],function(_0x1b19f0){var _0x1dbe9e={};_0x1dbe9e[_0x1b19f0]={'$like':'%'+_0x48466a[_0x58ff('0x47')][_0x58ff('0x4f')]+'%'};return _0x1dbe9e;})});}_0x5763f5=_[_0x58ff('0x50')]({},_0x5763f5,_0x48466a['options']);return _0x5bb71a[_0x58ff('0xe0')](_0x5763f5);}})[_0x58ff('0x23')](function(_0x5659b3){if(_0x5659b3){_0x13849d=_0x5659b3['length'];if(!_0x48466a['query'][_0x58ff('0x69')](_0x58ff('0x6a'))){_0x5763f5['limit']=qs[_0x58ff('0x31')](_0x48466a[_0x58ff('0x47')]['limit']);_0x5763f5[_0x58ff('0x2f')]=qs[_0x58ff('0x2f')](_0x48466a[_0x58ff('0x47')][_0x58ff('0x2f')]);}return _0x5bb71a['getAgents'](_0x5763f5);}})['then'](function(_0x3df41b){if(_0x3df41b){return _0x3df41b?{'count':_0x13849d,'rows':_0x3df41b}:null;}})[_0x58ff('0x23')](respondWithResult(_0x2303ce,null))[_0x58ff('0x2c')](handleError(_0x2303ce,null));};
\ No newline at end of file
+var _0xcf20=['query','keys','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','include','findAll','show','params','rawAttributes','length','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','SmsAccountId','Disposition','findOne','hasOwnProperty','includeAll','rows','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','notify','sms','SmsApplication','Applications','account','applications','orderBy','CmContact','describe','ValidationError','no\x20available\x20attributes','difference','updatedAt','createdAt','CompanyId','mobile','from','From','MessageSid','skebby','text','connectel','messageId','message_id','plivo','Text','MessageUUID','infobip','results','csc','originatingAddress','clickatell','fromNumber','replyMessageId','bandwidth','intelepeer','refid','isNil','Sequelize','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','CmList','ListId','Contacts','list','omit','contact','SmsInteraction','spread','interaction','autoclose','push','unmanaged','*,*,*,*','created','ContactId','AttachmentId','UserId','User','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','twilio','Content-Type','text/xml','send','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','sequelize','transaction','findAndCountAll','priority','getApplications','getInteractions','Contact','Owner','internal','Tag','Tags','color','tag','to\x20is\x20mandatory','List','DESC','SmsMessage','Messages','dataValues','received\x20delivery\x20report\x20from','inspect','skebby_dispatch_id','requestid','statusInt','status_code','groupName','DELIVERED','redif','clicksend','error_code','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','DELIVRD','ACCEPTD','statusGet','message-id','state','addAgents','emit','userSmsAccount:save','removeAgents','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./smsAccount.socket','register','jayson/promise','client','request','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','destroy','then','get','SmsAccounts','UserProfileResource','stack','name','index','Pause','mandatoryDispositionPause','map','SmsAccount','type','model'];(function(_0x4c3f22,_0x9d8899){var _0x1c54e8=function(_0x43aeef){while(--_0x43aeef){_0x4c3f22['push'](_0x4c3f22['shift']());}};_0x1c54e8(++_0x9d8899);}(_0xcf20,0xa0));var _0x0cf2=function(_0x17d1fe,_0x19eb3d){_0x17d1fe=_0x17d1fe-0x0;var _0x3bf3ae=_0xcf20[_0x17d1fe];return _0x3bf3ae;};'use strict';var emlformat=require(_0x0cf2('0x0'));var rimraf=require(_0x0cf2('0x1'));var zipdir=require(_0x0cf2('0x2'));var jsonpatch=require(_0x0cf2('0x3'));var rp=require(_0x0cf2('0x4'));var moment=require(_0x0cf2('0x5'));var BPromise=require(_0x0cf2('0x6'));var Mustache=require('mustache');var util=require(_0x0cf2('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x0cf2('0x8'));var ejs=require(_0x0cf2('0x9'));var fs=require('fs');var fs_extra=require(_0x0cf2('0xa'));var _=require(_0x0cf2('0xb'));var squel=require(_0x0cf2('0xc'));var crypto=require(_0x0cf2('0xd'));var jsforce=require(_0x0cf2('0xe'));var deskjs=require(_0x0cf2('0xf'));var toCsv=require(_0x0cf2('0x8'));var querystring=require(_0x0cf2('0x10'));var Papa=require(_0x0cf2('0x11'));var Redis=require(_0x0cf2('0x12'));var authService=require(_0x0cf2('0x13'));var qs=require(_0x0cf2('0x14'));var as=require(_0x0cf2('0x15'));var hardwareService=require(_0x0cf2('0x16'));var logger=require(_0x0cf2('0x17'))(_0x0cf2('0x18'));var utils=require(_0x0cf2('0x19'));var config=require(_0x0cf2('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x0cf2('0x1b'))['db'];config[_0x0cf2('0x1c')]=_[_0x0cf2('0x1d')](config[_0x0cf2('0x1c')],{'host':'localhost','port':0x18eb});var socket=require(_0x0cf2('0x1e'))(new Redis(config[_0x0cf2('0x1c')]));require(_0x0cf2('0x1f'))[_0x0cf2('0x20')](socket);var jayson=require(_0x0cf2('0x21'));var client=jayson[_0x0cf2('0x22')]['http']({'port':0x232c});function respondWithRpcPromise(_0xface,_0x1e6516,_0x424652,_0x3501cf){return new BPromise(function(_0x4679a3,_0x538d86){var _0x3c9e99=_0x3501cf||client;return _0x3c9e99[_0x0cf2('0x23')](_0xface,_0x424652)['then'](function(_0x2eda15){logger[_0x0cf2('0x24')](_0x0cf2('0x25'),_0x1e6516,_0x0cf2('0x26'));logger[_0x0cf2('0x27')](_0x0cf2('0x28'),_0x1e6516,_0x0cf2('0x26'),JSON[_0x0cf2('0x29')](_0x2eda15));if(_0x2eda15[_0x0cf2('0x2a')]){if(_0x2eda15[_0x0cf2('0x2a')][_0x0cf2('0x2b')]===0x1f4){logger[_0x0cf2('0x2a')](_0x0cf2('0x25'),_0x1e6516,_0x2eda15['error']['message']);return _0x538d86(_0x2eda15[_0x0cf2('0x2a')]['message']);}logger[_0x0cf2('0x2a')](_0x0cf2('0x25'),_0x1e6516,_0x2eda15[_0x0cf2('0x2a')][_0x0cf2('0x2c')]);return _0x4679a3(_0x2eda15[_0x0cf2('0x2a')][_0x0cf2('0x2c')]);}else{logger[_0x0cf2('0x24')]('SmsAccount,\x20%s,\x20%s',_0x1e6516,_0x0cf2('0x26'));_0x4679a3(_0x2eda15['result'][_0x0cf2('0x2c')]);}})[_0x0cf2('0x2d')](function(_0x36e0bb){logger[_0x0cf2('0x2a')]('SmsAccount,\x20%s,\x20%s',_0x1e6516,_0x36e0bb);_0x538d86(_0x36e0bb);});});}function respondWithStatusCode(_0x539f30,_0x5cef45){_0x5cef45=_0x5cef45||0xcc;return function(_0x5dd0bb){if(_0x5dd0bb){return _0x539f30[_0x0cf2('0x2e')](_0x5cef45);}return _0x539f30[_0x0cf2('0x2f')](_0x5cef45)[_0x0cf2('0x30')]();};}function respondWithResult(_0x4d46ca,_0x2b1743){_0x2b1743=_0x2b1743||0xc8;return function(_0x3ec8c7){if(_0x3ec8c7){return _0x4d46ca['status'](_0x2b1743)[_0x0cf2('0x31')](_0x3ec8c7);}};}function respondWithFilteredResult(_0x2977f4,_0x27273c){return function(_0x47a1a2){if(_0x47a1a2){var _0x18d1c0=typeof _0x27273c[_0x0cf2('0x32')]==='undefined'&&typeof _0x27273c[_0x0cf2('0x33')]===_0x0cf2('0x34');var _0x287200=_0x47a1a2[_0x0cf2('0x35')];var _0x14f370=_0x18d1c0?0x0:_0x27273c[_0x0cf2('0x32')];var _0x35e4a5=_0x18d1c0?_0x47a1a2[_0x0cf2('0x35')]:_0x27273c[_0x0cf2('0x32')]+_0x27273c[_0x0cf2('0x33')];var _0x59e73b;if(_0x35e4a5>=_0x287200){_0x35e4a5=_0x287200;_0x59e73b=0xc8;}else{_0x59e73b=0xce;}_0x2977f4[_0x0cf2('0x2f')](_0x59e73b);return _0x2977f4[_0x0cf2('0x36')](_0x0cf2('0x37'),_0x14f370+'-'+_0x35e4a5+'/'+_0x287200)[_0x0cf2('0x31')](_0x47a1a2);}return null;};}function patchUpdates(_0xbfdc47){return function(_0x121bb7){try{jsonpatch[_0x0cf2('0x38')](_0x121bb7,_0xbfdc47,!![]);}catch(_0x1c931c){return BPromise[_0x0cf2('0x39')](_0x1c931c);}return _0x121bb7[_0x0cf2('0x3a')]();};}function saveUpdates(_0x523b1e,_0x31f8ee){return function(_0x1bb0c3){if(_0x1bb0c3){return _0x1bb0c3[_0x0cf2('0x3b')](_0x523b1e)['then'](function(_0x57339b){return _0x57339b;});}return null;};}function removeEntity(_0x663ddf,_0x4ead56){return function(_0x5aa9f0){if(_0x5aa9f0){return _0x5aa9f0[_0x0cf2('0x3c')]()[_0x0cf2('0x3d')](function(){var _0x21db27=_0x5aa9f0[_0x0cf2('0x3e')]({'plain':!![]});var _0xd7a8d7=_0x0cf2('0x3f');return db[_0x0cf2('0x40')][_0x0cf2('0x3c')]({'where':{'type':_0xd7a8d7,'resourceId':_0x21db27['id']}})[_0x0cf2('0x3d')](function(){return _0x5aa9f0;});})[_0x0cf2('0x3d')](function(){_0x663ddf['status'](0xcc)[_0x0cf2('0x30')]();});}};}function handleEntityNotFound(_0x460df4,_0xa1938d){return function(_0x5858bd){if(!_0x5858bd){_0x460df4[_0x0cf2('0x2e')](0x194);}return _0x5858bd;};}function handleError(_0x3c2b71,_0x46732a){_0x46732a=_0x46732a||0x1f4;return function(_0x898451){logger[_0x0cf2('0x2a')](_0x898451[_0x0cf2('0x41')]);if(_0x898451[_0x0cf2('0x42')]){delete _0x898451[_0x0cf2('0x42')];}_0x3c2b71[_0x0cf2('0x2f')](_0x46732a)['send'](_0x898451);};}exports[_0x0cf2('0x43')]=function(_0xfd2cb7,_0x386133){var _0x183940={'include':[{'model':db[_0x0cf2('0x44')],'as':_0x0cf2('0x45')}]},_0x8d2a0d={},_0x441da0={'count':0x0,'rows':[]};var _0x3d4568=_[_0x0cf2('0x46')](db[_0x0cf2('0x47')]['rawAttributes'],function(_0xeb9d64){return{'name':_0xeb9d64['fieldName'],'type':_0xeb9d64[_0x0cf2('0x48')]['key']};});_0x8d2a0d[_0x0cf2('0x49')]=_['map'](_0x3d4568,_0x0cf2('0x42'));_0x8d2a0d[_0x0cf2('0x4a')]=_[_0x0cf2('0x4b')](_0xfd2cb7[_0x0cf2('0x4a')]);_0x8d2a0d[_0x0cf2('0x4c')]=_[_0x0cf2('0x4d')](_0x8d2a0d[_0x0cf2('0x49')],_0x8d2a0d[_0x0cf2('0x4a')]);_0x183940[_0x0cf2('0x4e')]=_[_0x0cf2('0x4d')](_0x8d2a0d[_0x0cf2('0x49')],qs['fields'](_0xfd2cb7[_0x0cf2('0x4a')][_0x0cf2('0x4f')]));_0x183940[_0x0cf2('0x4e')]=_0x183940[_0x0cf2('0x4e')]['length']?_0x183940['attributes']:_0x8d2a0d[_0x0cf2('0x49')];if(!_0xfd2cb7[_0x0cf2('0x4a')]['hasOwnProperty'](_0x0cf2('0x50'))){_0x183940[_0x0cf2('0x33')]=qs['limit'](_0xfd2cb7[_0x0cf2('0x4a')]['limit']);_0x183940[_0x0cf2('0x32')]=qs[_0x0cf2('0x32')](_0xfd2cb7[_0x0cf2('0x4a')]['offset']);}_0x183940[_0x0cf2('0x51')]=qs[_0x0cf2('0x52')](_0xfd2cb7[_0x0cf2('0x4a')][_0x0cf2('0x52')]);_0x183940[_0x0cf2('0x53')]=qs[_0x0cf2('0x4c')](_[_0x0cf2('0x54')](_0xfd2cb7[_0x0cf2('0x4a')],_0x8d2a0d[_0x0cf2('0x4c')]),_0x3d4568);if(_0xfd2cb7[_0x0cf2('0x4a')][_0x0cf2('0x55')]){_0x183940[_0x0cf2('0x53')]=_['merge'](_0x183940['where'],{'$or':_[_0x0cf2('0x46')](_0x3d4568,function(_0x55f763){if(_0x55f763[_0x0cf2('0x48')]!==_0x0cf2('0x56')){var _0x5cb69e={};_0x5cb69e[_0x55f763['name']]={'$like':'%'+_0xfd2cb7[_0x0cf2('0x4a')][_0x0cf2('0x55')]+'%'};return _0x5cb69e;}})});}_0x183940=_[_0x0cf2('0x57')]({},_0x183940,_0xfd2cb7[_0x0cf2('0x58')]);var _0x1e3fc5={'where':_0x183940[_0x0cf2('0x53')]};return db['SmsAccount'][_0x0cf2('0x35')](_0x1e3fc5)[_0x0cf2('0x3d')](function(_0x5d7a2e){_0x441da0['count']=_0x5d7a2e;if(_0xfd2cb7[_0x0cf2('0x4a')]['includeAll']){_0x183940[_0x0cf2('0x59')]=[{'all':!![]}];}return db[_0x0cf2('0x47')][_0x0cf2('0x5a')](_0x183940);})[_0x0cf2('0x3d')](function(_0x254345){_0x441da0['rows']=_0x254345;return _0x441da0;})['then'](respondWithFilteredResult(_0x386133,_0x183940))[_0x0cf2('0x2d')](handleError(_0x386133,null));};exports[_0x0cf2('0x5b')]=function(_0x198655,_0xa2518a){var _0x2acc41={'raw':![],'where':{'id':_0x198655[_0x0cf2('0x5c')]['id']},'include':[{'model':db[_0x0cf2('0x44')],'as':'mandatoryDispositionPause'}]},_0x380219={};_0x380219[_0x0cf2('0x49')]=_['keys'](db[_0x0cf2('0x47')][_0x0cf2('0x5d')]);_0x380219['query']=_[_0x0cf2('0x4b')](_0x198655[_0x0cf2('0x4a')]);_0x380219['filters']=_['intersection'](_0x380219['model'],_0x380219[_0x0cf2('0x4a')]);_0x2acc41[_0x0cf2('0x4e')]=_[_0x0cf2('0x4d')](_0x380219[_0x0cf2('0x49')],qs['fields'](_0x198655[_0x0cf2('0x4a')]['fields']));_0x2acc41[_0x0cf2('0x4e')]=_0x2acc41[_0x0cf2('0x4e')][_0x0cf2('0x5e')]?_0x2acc41['attributes']:_0x380219[_0x0cf2('0x49')];if(_0x198655['query']['includeAll']){_0x2acc41['include']=[{'all':!![]}];}_0x2acc41=_[_0x0cf2('0x57')]({},_0x2acc41,_0x198655[_0x0cf2('0x58')]);return db['SmsAccount']['find'](_0x2acc41)[_0x0cf2('0x3d')](handleEntityNotFound(_0xa2518a,null))[_0x0cf2('0x3d')](respondWithResult(_0xa2518a,null))[_0x0cf2('0x2d')](handleError(_0xa2518a,null));};exports[_0x0cf2('0x5f')]=function(_0x41ad3b,_0x1a8cab){return db[_0x0cf2('0x47')][_0x0cf2('0x5f')](_0x41ad3b[_0x0cf2('0x60')],{})[_0x0cf2('0x3d')](function(_0x2bb090){var _0x284584=_0x41ad3b[_0x0cf2('0x61')][_0x0cf2('0x3e')]({'plain':!![]});if(!_0x284584)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x284584[_0x0cf2('0x62')]===_0x0cf2('0x61')){var _0x51af9f=_0x2bb090[_0x0cf2('0x3e')]({'plain':!![]});var _0x975b98=_0x0cf2('0x3f');return db[_0x0cf2('0x63')]['find']({'where':{'name':_0x975b98,'userProfileId':_0x284584[_0x0cf2('0x64')]},'raw':!![]})['then'](function(_0x15455e){if(_0x15455e&&_0x15455e[_0x0cf2('0x65')]===0x0){return db[_0x0cf2('0x40')][_0x0cf2('0x5f')]({'name':_0x51af9f[_0x0cf2('0x42')],'resourceId':_0x51af9f['id'],'type':_0x15455e[_0x0cf2('0x42')],'sectionId':_0x15455e['id']},{})[_0x0cf2('0x3d')](function(){return _0x2bb090;});}else{return _0x2bb090;}})[_0x0cf2('0x2d')](function(_0x5c941a){logger[_0x0cf2('0x2a')](_0x0cf2('0x66'),_0x5c941a);throw _0x5c941a;});}return _0x2bb090;})[_0x0cf2('0x3d')](respondWithResult(_0x1a8cab,0xc9))[_0x0cf2('0x2d')](handleError(_0x1a8cab,null));};exports['update']=function(_0x173de0,_0x2f65cb){if(_0x173de0['body']['id']){delete _0x173de0[_0x0cf2('0x60')]['id'];}return db[_0x0cf2('0x47')][_0x0cf2('0x67')]({'where':{'id':_0x173de0[_0x0cf2('0x5c')]['id']},'include':[{'model':db[_0x0cf2('0x44')],'as':_0x0cf2('0x45')}]})[_0x0cf2('0x3d')](handleEntityNotFound(_0x2f65cb,null))[_0x0cf2('0x3d')](saveUpdates(_0x173de0[_0x0cf2('0x60')],null))['then'](respondWithResult(_0x2f65cb,null))[_0x0cf2('0x2d')](handleError(_0x2f65cb,null));};exports['destroy']=function(_0x3c6ad2,_0x215b38){return db[_0x0cf2('0x47')][_0x0cf2('0x67')]({'where':{'id':_0x3c6ad2[_0x0cf2('0x5c')]['id']}})['then'](handleEntityNotFound(_0x215b38,null))[_0x0cf2('0x3d')](removeEntity(_0x215b38,null))[_0x0cf2('0x2d')](handleError(_0x215b38,null));};exports['describe']=function(_0x16fb3f,_0x31cb79){return db['SmsAccount']['describe']()[_0x0cf2('0x3d')](respondWithResult(_0x31cb79,null))[_0x0cf2('0x2d')](handleError(_0x31cb79,null));};exports['addDisposition']=function(_0x49cad6,_0x346f54,_0x29feff){if(_0x49cad6[_0x0cf2('0x60')]['id']){delete _0x49cad6[_0x0cf2('0x60')]['id'];}return db[_0x0cf2('0x47')][_0x0cf2('0x67')]({'where':{'id':_0x49cad6[_0x0cf2('0x5c')]['id']}})[_0x0cf2('0x3d')](handleEntityNotFound(_0x346f54,null))[_0x0cf2('0x3d')](function(_0x4505ce){if(_0x4505ce){_0x49cad6['body'][_0x0cf2('0x68')]=_0x4505ce['id'];return db[_0x0cf2('0x69')][_0x0cf2('0x5f')](_0x49cad6[_0x0cf2('0x60')]);}})[_0x0cf2('0x3d')](respondWithResult(_0x346f54,null))['catch'](handleError(_0x346f54,null));};exports['getDispositions']=function(_0x12d519,_0x355440,_0x57689f){var _0x1893a8={'raw':![],'where':{}};var _0x4b62bd={};var _0x4e8c15={'count':0x0,'rows':[]};return db[_0x0cf2('0x47')][_0x0cf2('0x6a')]({'where':{'id':_0x12d519[_0x0cf2('0x5c')]['id']}})['then'](handleEntityNotFound(_0x355440,null))[_0x0cf2('0x3d')](function(_0x334ea3){if(_0x334ea3){_0x4b62bd[_0x0cf2('0x49')]=_[_0x0cf2('0x4b')](db[_0x0cf2('0x69')]['rawAttributes']);_0x4b62bd[_0x0cf2('0x4a')]=_[_0x0cf2('0x4b')](_0x12d519[_0x0cf2('0x4a')]);_0x4b62bd[_0x0cf2('0x4c')]=_['intersection'](_0x4b62bd['model'],_0x4b62bd[_0x0cf2('0x4a')]);_0x1893a8[_0x0cf2('0x4e')]=_[_0x0cf2('0x4d')](_0x4b62bd[_0x0cf2('0x49')],qs[_0x0cf2('0x4f')](_0x12d519[_0x0cf2('0x4a')][_0x0cf2('0x4f')]));_0x1893a8[_0x0cf2('0x4e')]=_0x1893a8[_0x0cf2('0x4e')]['length']?_0x1893a8[_0x0cf2('0x4e')]:_0x4b62bd['model'];if(!_0x12d519[_0x0cf2('0x4a')][_0x0cf2('0x6b')](_0x0cf2('0x50'))){_0x1893a8[_0x0cf2('0x33')]=qs[_0x0cf2('0x33')](_0x12d519[_0x0cf2('0x4a')][_0x0cf2('0x33')]);_0x1893a8[_0x0cf2('0x32')]=qs[_0x0cf2('0x32')](_0x12d519['query'][_0x0cf2('0x32')]);}_0x1893a8['order']=qs[_0x0cf2('0x52')](_0x12d519[_0x0cf2('0x4a')][_0x0cf2('0x52')]);_0x1893a8[_0x0cf2('0x53')]=qs['filters'](_[_0x0cf2('0x54')](_0x12d519[_0x0cf2('0x4a')],_0x4b62bd[_0x0cf2('0x4c')]));_0x1893a8['where'][_0x0cf2('0x68')]=_0x334ea3['id'];if(_0x12d519[_0x0cf2('0x4a')]['filter']){_0x1893a8[_0x0cf2('0x53')]=_['merge'](_0x1893a8[_0x0cf2('0x53')],{'$or':_[_0x0cf2('0x46')](_0x1893a8['attributes'],function(_0x2155b9){var _0x4fc909={};_0x4fc909[_0x2155b9]={'$like':'%'+_0x12d519['query']['filter']+'%'};return _0x4fc909;})});}_0x1893a8=_[_0x0cf2('0x57')]({},_0x1893a8,_0x12d519['options']);return db[_0x0cf2('0x69')][_0x0cf2('0x35')]({'where':_0x1893a8['where']})[_0x0cf2('0x3d')](function(_0x1b3296){_0x4e8c15[_0x0cf2('0x35')]=_0x1b3296;if(_0x12d519[_0x0cf2('0x4a')][_0x0cf2('0x6c')]){_0x1893a8[_0x0cf2('0x59')]=[{'all':!![]}];}return db['Disposition'][_0x0cf2('0x5a')](_0x1893a8);})[_0x0cf2('0x3d')](function(_0x1acb0c){_0x4e8c15[_0x0cf2('0x6d')]=_0x1acb0c;return _0x4e8c15;});}})[_0x0cf2('0x3d')](respondWithFilteredResult(_0x355440,_0x1893a8))[_0x0cf2('0x2d')](handleError(_0x355440,null));};exports[_0x0cf2('0x6e')]=function(_0x2e4fe3,_0x23fba7,_0x3124a0){return db[_0x0cf2('0x47')][_0x0cf2('0x67')]({'where':{'id':_0x2e4fe3[_0x0cf2('0x5c')]['id']}})['then'](handleEntityNotFound(_0x23fba7,null))[_0x0cf2('0x3d')](function(_0x14fa9c){if(_0x14fa9c){return _0x14fa9c[_0x0cf2('0x6e')](_0x2e4fe3[_0x0cf2('0x4a')][_0x0cf2('0x6f')]);}})[_0x0cf2('0x3d')](respondWithStatusCode(_0x23fba7,null))[_0x0cf2('0x2d')](handleError(_0x23fba7,null));};exports[_0x0cf2('0x70')]=function(_0x113f7d,_0x5a68d8,_0x380636){if(_0x113f7d[_0x0cf2('0x60')]['id']){delete _0x113f7d[_0x0cf2('0x60')]['id'];}return db['SmsAccount']['find']({'where':{'id':_0x113f7d['params']['id']}})[_0x0cf2('0x3d')](handleEntityNotFound(_0x5a68d8,null))[_0x0cf2('0x3d')](function(_0x11a92d){if(_0x11a92d){_0x113f7d[_0x0cf2('0x60')]['SmsAccountId']=_0x11a92d['id'];return db[_0x0cf2('0x71')][_0x0cf2('0x5f')](_0x113f7d[_0x0cf2('0x60')]);}})[_0x0cf2('0x3d')](respondWithResult(_0x5a68d8,null))[_0x0cf2('0x2d')](handleError(_0x5a68d8,null));};exports[_0x0cf2('0x72')]=function(_0x55ce23,_0x5de3cb,_0x47f39c){var _0x4430b1={'raw':![],'where':{}};var _0x4efa0a={};var _0x4702ea={'count':0x0,'rows':[]};return db['SmsAccount'][_0x0cf2('0x6a')]({'where':{'id':_0x55ce23['params']['id']}})[_0x0cf2('0x3d')](handleEntityNotFound(_0x5de3cb,null))[_0x0cf2('0x3d')](function(_0x505358){if(_0x505358){_0x4efa0a[_0x0cf2('0x49')]=_[_0x0cf2('0x4b')](db[_0x0cf2('0x71')][_0x0cf2('0x5d')]);_0x4efa0a[_0x0cf2('0x4a')]=_[_0x0cf2('0x4b')](_0x55ce23[_0x0cf2('0x4a')]);_0x4efa0a[_0x0cf2('0x4c')]=_[_0x0cf2('0x4d')](_0x4efa0a['model'],_0x4efa0a[_0x0cf2('0x4a')]);_0x4430b1[_0x0cf2('0x4e')]=_['intersection'](_0x4efa0a[_0x0cf2('0x49')],qs['fields'](_0x55ce23[_0x0cf2('0x4a')][_0x0cf2('0x4f')]));_0x4430b1[_0x0cf2('0x4e')]=_0x4430b1[_0x0cf2('0x4e')]['length']?_0x4430b1[_0x0cf2('0x4e')]:_0x4efa0a[_0x0cf2('0x49')];if(!_0x55ce23[_0x0cf2('0x4a')][_0x0cf2('0x6b')](_0x0cf2('0x50'))){_0x4430b1[_0x0cf2('0x33')]=qs[_0x0cf2('0x33')](_0x55ce23[_0x0cf2('0x4a')]['limit']);_0x4430b1['offset']=qs[_0x0cf2('0x32')](_0x55ce23[_0x0cf2('0x4a')][_0x0cf2('0x32')]);}_0x4430b1['order']=qs[_0x0cf2('0x52')](_0x55ce23[_0x0cf2('0x4a')][_0x0cf2('0x52')]);_0x4430b1['where']=qs['filters'](_[_0x0cf2('0x54')](_0x55ce23[_0x0cf2('0x4a')],_0x4efa0a[_0x0cf2('0x4c')]));_0x4430b1['where']['SmsAccountId']=_0x505358['id'];if(_0x55ce23[_0x0cf2('0x4a')]['filter']){_0x4430b1[_0x0cf2('0x53')]=_['merge'](_0x4430b1[_0x0cf2('0x53')],{'$or':_['map'](_0x4430b1[_0x0cf2('0x4e')],function(_0x2ec0f2){var _0x48d8cd={};_0x48d8cd[_0x2ec0f2]={'$like':'%'+_0x55ce23['query'][_0x0cf2('0x55')]+'%'};return _0x48d8cd;})});}_0x4430b1=_[_0x0cf2('0x57')]({},_0x4430b1,_0x55ce23['options']);return db['CannedAnswer']['count']({'where':_0x4430b1[_0x0cf2('0x53')]})[_0x0cf2('0x3d')](function(_0x3d6bb4){_0x4702ea[_0x0cf2('0x35')]=_0x3d6bb4;if(_0x55ce23['query'][_0x0cf2('0x6c')]){_0x4430b1[_0x0cf2('0x59')]=[{'all':!![]}];}return db[_0x0cf2('0x71')][_0x0cf2('0x5a')](_0x4430b1);})[_0x0cf2('0x3d')](function(_0x4ff6a9){_0x4702ea['rows']=_0x4ff6a9;return _0x4702ea;});}})[_0x0cf2('0x3d')](respondWithFilteredResult(_0x5de3cb,_0x4430b1))[_0x0cf2('0x2d')](handleError(_0x5de3cb,null));};exports[_0x0cf2('0x73')]=function(_0x381aa4,_0x284587,_0x11ab48){return db[_0x0cf2('0x47')]['find']({'where':{'id':_0x381aa4['params']['id']}})[_0x0cf2('0x3d')](handleEntityNotFound(_0x284587,null))[_0x0cf2('0x3d')](function(_0x410978){if(_0x410978){return _0x410978[_0x0cf2('0x73')](_0x381aa4['query'][_0x0cf2('0x6f')]);}})[_0x0cf2('0x3d')](respondWithStatusCode(_0x284587,null))['catch'](handleError(_0x284587,null));};exports[_0x0cf2('0x74')]=function(_0x837be6,_0x52b9c7,_0x171aa9){var _0x1224f4={'channel':_0x0cf2('0x75')};var _0x3d72bc=[];var _0x4f8de2=[];var _0x1bc17b={};return db[_0x0cf2('0x47')][_0x0cf2('0x67')]({'where':{'id':_0x837be6[_0x0cf2('0x5c')]['id']},'include':[{'model':db[_0x0cf2('0x76')],'as':_0x0cf2('0x77')}]})[_0x0cf2('0x3d')](handleEntityNotFound(_0x52b9c7,null))[_0x0cf2('0x3d')](function(_0x4ed11b){_0x1224f4[_0x0cf2('0x78')]=_0x4ed11b;_0x1224f4[_0x0cf2('0x79')]=_[_0x0cf2('0x7a')](_0x4ed11b[_0x0cf2('0x77')],['priority'],['asc']);if(_0x1224f4['account'][_0x0cf2('0x77')]){delete _0x1224f4[_0x0cf2('0x78')][_0x0cf2('0x77')];}return db[_0x0cf2('0x7b')][_0x0cf2('0x7c')]();})[_0x0cf2('0x3d')](function(_0x1f24c3){if(!_0x1f24c3){throw new db['Sequelize'][(_0x0cf2('0x7d'))](_0x0cf2('0x7e'));}_0x3d72bc=_[_0x0cf2('0x7f')](_[_0x0cf2('0x4b')](_0x1f24c3),['createdAt',_0x0cf2('0x80')]);_0x4f8de2=_[_0x0cf2('0x7f')](_[_0x0cf2('0x4b')](_0x1f24c3),[_0x0cf2('0x81'),_0x0cf2('0x80'),_0x0cf2('0x82'),'ListId']);_0x1224f4['body']={'mapKey':_0x0cf2('0x83')};if(_0x1224f4['account']['type']){switch(_0x1224f4[_0x0cf2('0x78')]['type']){case'twilio':_0x1224f4[_0x0cf2('0x60')][_0x0cf2('0x84')]=_0x837be6[_0x0cf2('0x60')][_0x0cf2('0x85')];_0x1224f4['body'][_0x0cf2('0x60')]=_0x837be6[_0x0cf2('0x60')]['Body'];_0x1224f4[_0x0cf2('0x60')]['messageId']=_0x837be6['body'][_0x0cf2('0x86')];break;case _0x0cf2('0x87'):_0x1224f4[_0x0cf2('0x60')][_0x0cf2('0x84')]='+'+_0x837be6[_0x0cf2('0x60')]['sender'];_0x1224f4[_0x0cf2('0x60')][_0x0cf2('0x60')]=_0x837be6[_0x0cf2('0x60')][_0x0cf2('0x88')];break;case _0x0cf2('0x89'):_0x1224f4[_0x0cf2('0x60')]['from']=_0x837be6[_0x0cf2('0x60')][_0x0cf2('0x84')];_0x1224f4[_0x0cf2('0x60')][_0x0cf2('0x60')]=_0x837be6[_0x0cf2('0x60')][_0x0cf2('0x2c')];break;case'clicksend':_0x1224f4[_0x0cf2('0x60')]['from']=_0x837be6[_0x0cf2('0x60')][_0x0cf2('0x84')];_0x1224f4[_0x0cf2('0x60')]['body']=_0x837be6[_0x0cf2('0x60')][_0x0cf2('0x60')];_0x1224f4['body'][_0x0cf2('0x8a')]=_0x837be6['body'][_0x0cf2('0x8b')];break;case _0x0cf2('0x8c'):_0x1224f4['body'][_0x0cf2('0x84')]=_0x837be6[_0x0cf2('0x60')][_0x0cf2('0x85')];_0x1224f4[_0x0cf2('0x60')][_0x0cf2('0x60')]=_0x837be6[_0x0cf2('0x60')][_0x0cf2('0x8d')];_0x1224f4[_0x0cf2('0x60')][_0x0cf2('0x8a')]=_0x837be6[_0x0cf2('0x60')][_0x0cf2('0x8e')];break;case _0x0cf2('0x8f'):_0x1224f4[_0x0cf2('0x60')][_0x0cf2('0x84')]='+'+_0x837be6[_0x0cf2('0x60')]['results'][0x0]['from'];_0x1224f4[_0x0cf2('0x60')][_0x0cf2('0x60')]=_0x837be6['body']['results'][0x0][_0x0cf2('0x88')];_0x1224f4['body'][_0x0cf2('0x8a')]=_0x837be6[_0x0cf2('0x60')][_0x0cf2('0x90')][0x0][_0x0cf2('0x8a')];break;case _0x0cf2('0x91'):_0x1224f4['body'][_0x0cf2('0x84')]=_0x837be6['body'][_0x0cf2('0x92')];_0x1224f4[_0x0cf2('0x60')][_0x0cf2('0x60')]=_0x837be6[_0x0cf2('0x60')]['segmentedMessage']['message'];break;case _0x0cf2('0x93'):_0x1224f4[_0x0cf2('0x60')]['from']=_0x837be6[_0x0cf2('0x60')][_0x0cf2('0x94')];_0x1224f4[_0x0cf2('0x60')][_0x0cf2('0x60')]=_0x837be6[_0x0cf2('0x60')][_0x0cf2('0x88')];_0x1224f4['body'][_0x0cf2('0x8a')]=_0x837be6[_0x0cf2('0x60')][_0x0cf2('0x95')];break;case _0x0cf2('0x96'):_0x1224f4[_0x0cf2('0x60')][_0x0cf2('0x8a')]=_0x837be6[_0x0cf2('0x60')][0x0]['message']['id'];_0x1224f4[_0x0cf2('0x60')][_0x0cf2('0x84')]=_0x837be6[_0x0cf2('0x60')][0x0][_0x0cf2('0x2c')][_0x0cf2('0x84')];_0x1224f4['body'][_0x0cf2('0x60')]=_0x837be6[_0x0cf2('0x60')][0x0][_0x0cf2('0x2c')][_0x0cf2('0x88')];break;case _0x0cf2('0x97'):_0x1224f4[_0x0cf2('0x60')]['from']=_0x837be6[_0x0cf2('0x60')]['from'];_0x1224f4[_0x0cf2('0x60')][_0x0cf2('0x60')]=_0x837be6[_0x0cf2('0x60')][_0x0cf2('0x2c')];_0x1224f4['body'][_0x0cf2('0x8a')]=_0x837be6[_0x0cf2('0x60')][_0x0cf2('0x98')];break;}}if(_0x1224f4[_0x0cf2('0x60')]['id']){delete _0x1224f4['body']['id'];}if(_[_0x0cf2('0x99')](_0x1224f4[_0x0cf2('0x60')]['from'])){throw new db[(_0x0cf2('0x9a'))][(_0x0cf2('0x7d'))](_0x0cf2('0x9b'));}if(_[_0x0cf2('0x99')](_0x1224f4['body'][_0x0cf2('0x60')])||_0x1224f4[_0x0cf2('0x60')]['body']===''){throw new db[(_0x0cf2('0x9a'))]['ValidationError'](_0x0cf2('0x9c'));}if(_[_0x0cf2('0x99')](_0x1224f4[_0x0cf2('0x60')][_0x0cf2('0x9d')])){throw new db[(_0x0cf2('0x9a'))][(_0x0cf2('0x7d'))](_0x0cf2('0x9e')+_0x4f8de2);}if(!_[_0x0cf2('0x9f')](_0x4f8de2,_0x1224f4[_0x0cf2('0x60')][_0x0cf2('0x9d')])){throw new db['Sequelize'][(_0x0cf2('0x7d'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x4f8de2);}_0x1bc17b[_0x1224f4[_0x0cf2('0x60')][_0x0cf2('0x9d')]]=_0x1224f4[_0x0cf2('0x60')][_0x0cf2('0x84')];return db[_0x0cf2('0xa0')][_0x0cf2('0x67')]({'where':{'id':_0x1224f4[_0x0cf2('0x78')][_0x0cf2('0xa1')]},'include':[{'model':db[_0x0cf2('0x7b')],'as':_0x0cf2('0xa2'),'where':_0x1bc17b,'limit':0x1,'order':[[_0x0cf2('0x80'),'DESC']]}]});})[_0x0cf2('0x3d')](handleEntityNotFound(_0x52b9c7,null))[_0x0cf2('0x3d')](function(_0x4f1e64){if(_0x4f1e64){_0x1224f4[_0x0cf2('0xa3')]=_[_0x0cf2('0xa4')](_0x4f1e64,[_0x0cf2('0xa2')]);if(_0x4f1e64['Contacts']['length']){return _0x4f1e64[_0x0cf2('0xa2')][0x0];}var _0x39349a=_['defaults'](_0x1224f4[_0x0cf2('0x60')],{'firstName':_0x1224f4['body'][_0x0cf2('0x84')],'ListId':_0x4f1e64['id']});_0x39349a[_0x1224f4[_0x0cf2('0x60')]['mapKey']]=_0x1224f4[_0x0cf2('0x60')][_0x0cf2('0x84')];return db['CmContact'][_0x0cf2('0x5f')](_0x39349a,{'fields':_0x3d72bc,'raw':!![]});}})[_0x0cf2('0x3d')](handleEntityNotFound(_0x52b9c7,null))[_0x0cf2('0x3d')](function(_0xadd42c){if(_0xadd42c){_0x1224f4[_0x0cf2('0xa5')]=_0xadd42c;var _0x35c3ca={'ContactId':_0xadd42c['id'],'phone':_0x1224f4[_0x0cf2('0x60')][_0x0cf2('0x84')],'SmsAccountId':_0x837be6[_0x0cf2('0x5c')]['id']};var _0x45b0aa={'ContactId':_0xadd42c['id'],'SmsAccountId':_0x837be6[_0x0cf2('0x5c')]['id'],'closed':![]};return db[_0x0cf2('0xa6')]['find']({'where':_0x45b0aa})['then'](function(_0x166804){if(_0x166804){return[_0x166804,![]];}return db[_0x0cf2('0xa6')][_0x0cf2('0x5f')](_0x35c3ca)[_0x0cf2('0x3d')](function(_0x10e517){return[_0x10e517,!![]];});});}})[_0x0cf2('0xa7')](function(_0x19caca,_0x5afd78){_0x1224f4[_0x0cf2('0xa8')]=_0x19caca[_0x0cf2('0x3e')]({'plain':!![]});_0x1224f4[_0x0cf2('0xa8')]['created']=![];if(_0x5afd78){if(_0x1224f4['account'][_0x0cf2('0xa9')]){_0x1224f4[_0x0cf2('0x79')][_0x0cf2('0xaa')]({'id':0x0,'priority':_0x1224f4['applications']['length']+0x1,'app':'close','appdata':_0x0cf2('0xab'),'interval':_0x0cf2('0xac')});}_0x1224f4[_0x0cf2('0xa8')][_0x0cf2('0xad')]=!![];}return db['SmsMessage']['create']({'phone':_0x1224f4[_0x0cf2('0x60')][_0x0cf2('0x84')],'messageId':_0x1224f4[_0x0cf2('0x60')][_0x0cf2('0x8a')],'body':_0x1224f4[_0x0cf2('0x60')][_0x0cf2('0x60')],'SmsAccountId':_0x837be6[_0x0cf2('0x5c')]['id'],'SmsInteractionId':_0x19caca['id'],'direction':'in','ContactId':_0x19caca[_0x0cf2('0xae')],'AttachmentId':_0x1224f4[_0x0cf2('0x60')][_0x0cf2('0xaf')]});})[_0x0cf2('0x3d')](function(_0x263778){_0x1224f4[_0x0cf2('0x2c')]=_0x263778;if(_0x1224f4[_0x0cf2('0xa8')][_0x0cf2('0xb0')]){return db[_0x0cf2('0xb1')][_0x0cf2('0x67')]({'attributes':['id',_0x0cf2('0x42')],'where':{'id':_0x1224f4[_0x0cf2('0xa8')][_0x0cf2('0xb0')]}})[_0x0cf2('0x3d')](function(_0x1f3d38){if(_0x1f3d38){_0x1224f4[_0x0cf2('0x79')]['unshift']({'id':0x0,'priority':0x0,'app':_0x0cf2('0xb2'),'appdata':_0x1f3d38[_0x0cf2('0x42')]+','+(_0x1224f4[_0x0cf2('0x78')][_0x0cf2('0xb3')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise('Start','startRouting',_0x1224f4);});}return respondWithRpcPromise(_0x0cf2('0xb4'),_0x0cf2('0xb5'),_0x1224f4);})['then'](function(_0x7d13b7){if(_0x7d13b7){var _0x3bd5c8=0xc8;var _0x4167de=_0x0cf2('0xb6');logger[_0x0cf2('0x24')](_0x0cf2('0x28'),_0x4167de,_0x3bd5c8,_0x0cf2('0xb7'));logger['debug'](_0x0cf2('0xb8'),_0x4167de,_0x3bd5c8,_0x0cf2('0xb7'),JSON[_0x0cf2('0x29')](_0x7d13b7));if(_0x1224f4[_0x0cf2('0x78')][_0x0cf2('0x48')]===_0x0cf2('0xb9')){return _0x52b9c7[_0x0cf2('0x2f')](_0x3bd5c8)[_0x0cf2('0x36')](_0x0cf2('0xba'),_0x0cf2('0xbb'))[_0x0cf2('0xbc')](_0x0cf2('0xbd'));}else{return _0x52b9c7[_0x0cf2('0x2f')](_0x3bd5c8)[_0x0cf2('0x31')](_0x7d13b7);}}})[_0x0cf2('0x2d')](handleError(_0x52b9c7,null));};exports[_0x0cf2('0xbe')]=function(_0x12d3d9,_0x363275,_0x25b1d3){return db[_0x0cf2('0x47')][_0x0cf2('0x6a')]({'where':{'id':_0x12d3d9['params']['id']}})[_0x0cf2('0x3d')](handleEntityNotFound(_0x363275,null))[_0x0cf2('0x3d')](function(_0x33faeb){if(_0x33faeb){return db[_0x0cf2('0xbf')][_0x0cf2('0xc0')](function(_0x2ed266){return db[_0x0cf2('0x76')][_0x0cf2('0x3c')]({'where':{'SmsAccountId':_0x12d3d9['params']['id']},'transaction':_0x2ed266})['then'](function(_0x1f6e96){var _0x800fcb=_['map'](_0x12d3d9[_0x0cf2('0x60')],function(_0x13a83a){_0x13a83a[_0x0cf2('0x68')]=_0x12d3d9[_0x0cf2('0x5c')]['id'];return _0x13a83a;});return db[_0x0cf2('0x76')]['bulkCreate'](_0x800fcb,{'transaction':_0x2ed266});});})[_0x0cf2('0x3d')](function(){return db[_0x0cf2('0x76')][_0x0cf2('0xc1')]({'where':{'SmsAccountId':_0x12d3d9['params']['id']},'order':_0x0cf2('0xc2')});});}})[_0x0cf2('0x3d')](respondWithResult(_0x363275,null))[_0x0cf2('0x2d')](handleError(_0x363275,null));};exports[_0x0cf2('0xc3')]=function(_0x16d42f,_0x193631,_0x2a8de1){var _0x5f431f={};var _0x4108b8={};var _0x22d44d;var _0x6a9954;return db['SmsAccount'][_0x0cf2('0x6a')]({'where':{'id':_0x16d42f['params']['id']}})['then'](handleEntityNotFound(_0x193631,null))[_0x0cf2('0x3d')](function(_0x293a7f){if(_0x293a7f){_0x22d44d=_0x293a7f;_0x4108b8[_0x0cf2('0x49')]=_[_0x0cf2('0x4b')](db['SmsApplication'][_0x0cf2('0x5d')]);_0x4108b8[_0x0cf2('0x4a')]=_['keys'](_0x16d42f[_0x0cf2('0x4a')]);_0x4108b8[_0x0cf2('0x4c')]=_[_0x0cf2('0x4d')](_0x4108b8['model'],_0x4108b8[_0x0cf2('0x4a')]);_0x5f431f['attributes']=_['intersection'](_0x4108b8[_0x0cf2('0x49')],qs['fields'](_0x16d42f[_0x0cf2('0x4a')][_0x0cf2('0x4f')]));_0x5f431f['attributes']=_0x5f431f['attributes'][_0x0cf2('0x5e')]?_0x5f431f[_0x0cf2('0x4e')]:_0x4108b8['model'];_0x5f431f['order']=qs[_0x0cf2('0x52')](_0x16d42f[_0x0cf2('0x4a')][_0x0cf2('0x52')]);_0x5f431f['where']=qs['filters'](_[_0x0cf2('0x54')](_0x16d42f[_0x0cf2('0x4a')],_0x4108b8[_0x0cf2('0x4c')]));if(_0x16d42f['query'][_0x0cf2('0x55')]){_0x5f431f['where']=_['merge'](_0x5f431f['where'],{'$or':_[_0x0cf2('0x46')](_0x5f431f[_0x0cf2('0x4e')],function(_0x5a789a){var _0x5182c0={};_0x5182c0[_0x5a789a]={'$like':'%'+_0x16d42f[_0x0cf2('0x4a')][_0x0cf2('0x55')]+'%'};return _0x5182c0;})});}_0x5f431f=_[_0x0cf2('0x57')]({},_0x5f431f,_0x16d42f[_0x0cf2('0x58')]);return _0x22d44d[_0x0cf2('0xc3')](_0x5f431f);}})[_0x0cf2('0x3d')](function(_0x2be6f1){if(_0x2be6f1){_0x6a9954=_0x2be6f1[_0x0cf2('0x5e')];if(!_0x16d42f[_0x0cf2('0x4a')][_0x0cf2('0x6b')](_0x0cf2('0x50'))){_0x5f431f[_0x0cf2('0x33')]=qs['limit'](_0x16d42f[_0x0cf2('0x4a')][_0x0cf2('0x33')]);_0x5f431f['offset']=qs[_0x0cf2('0x32')](_0x16d42f[_0x0cf2('0x4a')][_0x0cf2('0x32')]);}return _0x22d44d['getApplications'](_0x5f431f);}})[_0x0cf2('0x3d')](function(_0x2e0511){if(_0x2e0511){return _0x2e0511?{'count':_0x6a9954,'rows':_0x2e0511}:null;}})[_0x0cf2('0x3d')](respondWithResult(_0x193631,null))['catch'](handleError(_0x193631,null));};exports[_0x0cf2('0xc4')]=function(_0x222f3a,_0x38476f,_0x4f980b){var _0x41e54b={'raw':![],'where':{}};var _0x2dac4b={};var _0x54922b={'count':0x0,'rows':[]};return db[_0x0cf2('0x47')][_0x0cf2('0x6a')]({'where':{'id':_0x222f3a[_0x0cf2('0x5c')]['id']}})[_0x0cf2('0x3d')](handleEntityNotFound(_0x38476f,null))[_0x0cf2('0x3d')](function(_0x2590a8){if(_0x2590a8){_0x2dac4b['model']=_['keys'](db[_0x0cf2('0xa6')][_0x0cf2('0x5d')]);_0x2dac4b['query']=_[_0x0cf2('0x4b')](_0x222f3a[_0x0cf2('0x4a')]);_0x2dac4b[_0x0cf2('0x4c')]=_[_0x0cf2('0x4d')](_0x2dac4b[_0x0cf2('0x49')],_0x2dac4b[_0x0cf2('0x4a')]);_0x41e54b['attributes']=_[_0x0cf2('0x4d')](_0x2dac4b[_0x0cf2('0x49')],qs[_0x0cf2('0x4f')](_0x222f3a[_0x0cf2('0x4a')][_0x0cf2('0x4f')]));_0x41e54b['attributes']=_0x41e54b[_0x0cf2('0x4e')][_0x0cf2('0x5e')]?_0x41e54b['attributes']:_0x2dac4b[_0x0cf2('0x49')];if(!_0x222f3a['query'][_0x0cf2('0x6b')](_0x0cf2('0x50'))){_0x41e54b[_0x0cf2('0x33')]=qs[_0x0cf2('0x33')](_0x222f3a[_0x0cf2('0x4a')][_0x0cf2('0x33')]);_0x41e54b[_0x0cf2('0x32')]=qs[_0x0cf2('0x32')](_0x222f3a['query'][_0x0cf2('0x32')]);}_0x41e54b['order']=qs[_0x0cf2('0x52')](_0x222f3a[_0x0cf2('0x4a')][_0x0cf2('0x52')]);_0x41e54b[_0x0cf2('0x53')]=qs[_0x0cf2('0x4c')](_[_0x0cf2('0x54')](_0x222f3a[_0x0cf2('0x4a')],_0x2dac4b['filters']));_0x41e54b[_0x0cf2('0x53')][_0x0cf2('0x68')]=_0x2590a8['id'];if(_0x222f3a[_0x0cf2('0x4a')]['filter']){_0x41e54b[_0x0cf2('0x53')]=_[_0x0cf2('0x57')](_0x41e54b[_0x0cf2('0x53')],{'$or':_['map'](_0x41e54b[_0x0cf2('0x4e')],function(_0x1013a5){var _0x5ec5b9={};_0x5ec5b9[_0x1013a5]={'$like':'%'+_0x222f3a[_0x0cf2('0x4a')][_0x0cf2('0x55')]+'%'};return _0x5ec5b9;})});}_0x41e54b=_[_0x0cf2('0x57')]({},_0x41e54b,_0x222f3a[_0x0cf2('0x58')]);return db[_0x0cf2('0xa6')][_0x0cf2('0x35')]({'where':_0x41e54b[_0x0cf2('0x53')]})[_0x0cf2('0x3d')](function(_0x544eab){_0x54922b[_0x0cf2('0x35')]=_0x544eab;if(_0x222f3a[_0x0cf2('0x4a')][_0x0cf2('0x6c')]){_0x41e54b[_0x0cf2('0x59')]=[{'model':db[_0x0cf2('0x7b')],'as':_0x0cf2('0xc5'),'required':![]},{'model':db[_0x0cf2('0xb1')],'as':_0x0cf2('0xc6'),'attributes':['name','fullname',_0x0cf2('0xc7')],'required':![]},{'model':db[_0x0cf2('0xc8')],'as':_0x0cf2('0xc9'),'attributes':['id',_0x0cf2('0x42'),_0x0cf2('0xca')],'where':_0x222f3a['query'][_0x0cf2('0xcb')]?{'id':_0x222f3a[_0x0cf2('0x4a')][_0x0cf2('0xcb')]}:undefined,'required':_0x222f3a[_0x0cf2('0x4a')][_0x0cf2('0xcb')]?!![]:![]}];}return db[_0x0cf2('0xa6')][_0x0cf2('0x5a')](_0x41e54b);})[_0x0cf2('0x3d')](function(_0x223717){_0x54922b[_0x0cf2('0x6d')]=_0x223717;return _0x54922b;});}})[_0x0cf2('0x3d')](respondWithFilteredResult(_0x38476f,_0x41e54b))[_0x0cf2('0x2d')](handleError(_0x38476f,null));};exports[_0x0cf2('0xbc')]=function(_0x3f8fbd,_0x369f6b,_0x481851){var _0x3588ee,_0x355b9,_0x3a885a;if(_['isNil'](_0x3f8fbd[_0x0cf2('0x60')][_0x0cf2('0x60')])||_0x3f8fbd[_0x0cf2('0x60')]['body']===''){throw new db[(_0x0cf2('0x9a'))]['ValidationError'](_0x0cf2('0x9c'));}if(_['isNil'](_0x3f8fbd[_0x0cf2('0x60')]['to'])){throw new db[(_0x0cf2('0x9a'))][(_0x0cf2('0x7d'))](_0x0cf2('0xcc'));}_0x3588ee=_0x3f8fbd[_0x0cf2('0x60')]['to'];return db[_0x0cf2('0x47')]['find']({'where':{'id':_0x3f8fbd[_0x0cf2('0x5c')]['id']},'include':[{'model':db['CmList'],'as':_0x0cf2('0xcd'),'include':[{'model':db[_0x0cf2('0x7b')],'as':'Contacts','where':{'mobile':_0x3588ee},'limit':0x1,'order':[['updatedAt',_0x0cf2('0xce')]]}]}]})[_0x0cf2('0x3d')](handleEntityNotFound(_0x369f6b,null))[_0x0cf2('0x3d')](function(_0x38b114){if(_0x38b114&&_0x38b114['List']){_0x355b9=_0x38b114['get']({'plain':!![]});if(_0x355b9[_0x0cf2('0xcd')]&&_0x355b9[_0x0cf2('0xcd')][_0x0cf2('0xa2')][_0x0cf2('0x5e')]){return _0x355b9['List'][_0x0cf2('0xa2')][0x0];}return db[_0x0cf2('0x7b')]['create'](_[_0x0cf2('0x1d')](_0x3f8fbd[_0x0cf2('0x60')],{'firstName':_0x3588ee,'mobile':_0x3588ee,'phone':_0x3588ee,'ListId':_0x355b9[_0x0cf2('0xa1')]}));}})[_0x0cf2('0x3d')](handleEntityNotFound(_0x369f6b,null))[_0x0cf2('0x3d')](function(_0x3427ce){if(_0x3427ce){_0x3a885a=_0x3427ce;return db[_0x0cf2('0xa6')]['find']({'where':{'ContactId':_0x3a885a['id'],'closed':![],'SmsAccountId':_0x355b9['id']}})[_0x0cf2('0x3d')](function(_0x3017d9){if(_0x3017d9){return[_0x3017d9,![]];}return db[_0x0cf2('0xa6')][_0x0cf2('0x5f')]({'UserId':_0x3f8fbd['user']['id'],'ContactId':_0x3a885a['id'],'SmsAccountId':_0x355b9['id'],'phone':_0x3588ee,'firstMsgDirection':'out','Messages':[_['merge'](_0x3f8fbd[_0x0cf2('0x60')],{'read':![],'body':_0x3f8fbd[_0x0cf2('0x60')][_0x0cf2('0x60')],'phone':_0x3588ee,'SmsAccountId':_0x355b9['id'],'UserId':_0x3f8fbd[_0x0cf2('0x61')]['id'],'ContactId':_0x3a885a['id']})]},{'include':[{'model':db[_0x0cf2('0xcf')],'as':_0x0cf2('0xd0')}]})['then'](function(_0x223013){return[_0x223013,!![]];});});}})[_0x0cf2('0xa7')](function(_0x8c4d73,_0x2d3df6){if(_0x2d3df6){return _0x8c4d73;}return db['SmsMessage'][_0x0cf2('0x5f')](_[_0x0cf2('0x57')](_0x3f8fbd['body'],{'read':![],'body':_0x3f8fbd[_0x0cf2('0x60')][_0x0cf2('0x60')],'phone':_0x3588ee,'SmsAccountId':_0x355b9['id'],'SmsInteractionId':_0x8c4d73['id'],'UserId':_0x3f8fbd[_0x0cf2('0x61')]['id'],'ContactId':_0x3a885a['id']}))[_0x0cf2('0x3d')](function(_0x573a98){_0x8c4d73[_0x0cf2('0xd1')][_0x0cf2('0xd0')]=[];_0x8c4d73['dataValues']['Messages'][_0x0cf2('0xaa')](_0x573a98[_0x0cf2('0xd1')]);return _0x8c4d73;});})['then'](respondWithResult(_0x369f6b,null))['catch'](handleError(_0x369f6b,null));};exports[_0x0cf2('0x2f')]=function(_0x4fcd56,_0x4d0a08,_0x2e4761){if(_0x4fcd56[_0x0cf2('0x60')]['id']){delete _0x4fcd56['body']['id'];}var _0x112ba9,_0x118fde,_0x329503;return db['SmsAccount'][_0x0cf2('0x67')]({'where':{'id':_0x4fcd56['params']['id']}})[_0x0cf2('0x3d')](handleEntityNotFound(_0x4d0a08,null))[_0x0cf2('0x3d')](function(_0xd78ecb){if(_0xd78ecb){_0x329503=_0xd78ecb;logger[_0x0cf2('0x27')]('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0x0cf2('0xd2'),_0xd78ecb[_0x0cf2('0x48')],util[_0x0cf2('0xd3')](_0x4fcd56[_0x0cf2('0x60')],{'showHidden':![],'depth':null}));switch(_0xd78ecb['type']){case _0x0cf2('0x87'):if(_0x4fcd56[_0x0cf2('0x60')][_0x0cf2('0xd4')]&&_0x4fcd56['body'][_0x0cf2('0x2f')]){_0x118fde=_0x4fcd56[_0x0cf2('0x60')][_0x0cf2('0x2f')];return db['SmsMessage'][_0x0cf2('0x67')]({'where':{'messageId':_0x4fcd56[_0x0cf2('0x60')][_0x0cf2('0xd4')]}});}break;case _0x0cf2('0x89'):if(_0x4fcd56['body'][_0x0cf2('0xd5')]&&_0x4fcd56[_0x0cf2('0x60')][_0x0cf2('0xd6')]){_0x118fde=_0x4fcd56['body'][_0x0cf2('0xd6')];return db[_0x0cf2('0xcf')][_0x0cf2('0x67')]({'where':{'messageId':_0x4fcd56[_0x0cf2('0x60')][_0x0cf2('0xd5')]}});}break;case'clicksend':if(_0x4fcd56[_0x0cf2('0x60')][_0x0cf2('0x8b')]&&_0x4fcd56[_0x0cf2('0x60')][_0x0cf2('0xd7')]){_0x118fde=_0x4fcd56['body'][_0x0cf2('0xd7')];return db[_0x0cf2('0xcf')][_0x0cf2('0x67')]({'where':{'messageId':_0x4fcd56['body']['message_id']}});}break;case _0x0cf2('0x8f'):var _0x4fa9d7=_0x4fcd56[_0x0cf2('0x60')][_0x0cf2('0x90')][0x0];if(_0x4fa9d7[_0x0cf2('0x8a')]&&_0x4fa9d7[_0x0cf2('0x2f')][_0x0cf2('0xd8')]===_0x0cf2('0xd9')){_0x118fde=_0x4fa9d7[_0x0cf2('0x2f')][_0x0cf2('0xd8')];return db[_0x0cf2('0xcf')][_0x0cf2('0x67')]({'where':{'messageId':_0x4fa9d7[_0x0cf2('0x8a')]}});}break;case'clickatell':if(_0x4fcd56[_0x0cf2('0x60')][_0x0cf2('0x8a')]&&_0x4fcd56[_0x0cf2('0x60')][_0x0cf2('0x2f')]){_0x118fde=_0x4fcd56[_0x0cf2('0x60')][_0x0cf2('0x2f')];return db[_0x0cf2('0xcf')][_0x0cf2('0x67')]({'where':{'messageId':_0x4fcd56[_0x0cf2('0x60')][_0x0cf2('0x8a')]}});}break;case _0x0cf2('0x96'):if(_0x4fcd56['body'][0x0][_0x0cf2('0x2c')]['id']){_0x118fde=_0x4fcd56[_0x0cf2('0x60')][0x0][_0x0cf2('0x48')];return db[_0x0cf2('0xcf')][_0x0cf2('0x67')]({'where':{'messageId':_0x4fcd56[_0x0cf2('0x60')][0x0]['message']['id']}});}break;case _0x0cf2('0x97'):if(_0x4fcd56['body'][_0x0cf2('0xda')]&&_0x4fcd56['body']['status']){_0x118fde=_0x4fcd56[_0x0cf2('0x60')]['status'];return db[_0x0cf2('0xcf')][_0x0cf2('0x67')]({'where':{'messageId':_0x4fcd56[_0x0cf2('0x60')][_0x0cf2('0xda')]}});}break;}}})[_0x0cf2('0x3d')](handleEntityNotFound(_0x4d0a08,null))[_0x0cf2('0x3d')](function(_0x5d36d0){if(_0x5d36d0){_0x112ba9=_0x5d36d0;switch(_0x329503[_0x0cf2('0x48')]){case _0x0cf2('0x87'):if(_0x118fde===_0x0cf2('0xd9')){return _0x112ba9['update']({'read':!![]});}else{logger['error'](_0x0cf2('0x28'),_0x0cf2('0x2f'),'skebby',util[_0x0cf2('0xd3')](_0x4fcd56[_0x0cf2('0x60')],{'showHidden':![],'depth':null}));}break;case'connectel':if(_0x118fde==='1'){return _0x112ba9['update']({'read':!![]});}else{logger[_0x0cf2('0x2a')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x0cf2('0x2f'),_0x0cf2('0x87'),util[_0x0cf2('0xd3')](_0x4fcd56['body'],{'showHidden':![],'depth':null}));}break;case _0x0cf2('0xdb'):if(!_0x4fcd56['body'][_0x0cf2('0xdc')]&&_0x118fde>=0xc8&&_0x118fde<=0xce){return _0x112ba9[_0x0cf2('0x3b')]({'read':!![]});}else{logger[_0x0cf2('0x2a')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x0cf2('0x2f'),_0x0cf2('0xdb'),util[_0x0cf2('0xd3')](_0x4fcd56[_0x0cf2('0x60')],{'showHidden':![],'depth':null}));}break;case _0x0cf2('0x8f'):var _0x2ba6e7=_0x4fcd56[_0x0cf2('0x60')][_0x0cf2('0x90')][0x0];if(_0x2ba6e7[_0x0cf2('0x2f')]['groupName']===_0x0cf2('0xd9')){return _0x112ba9[_0x0cf2('0x3b')]({'read':!![]});}else{logger[_0x0cf2('0x2a')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x0cf2('0x2f'),_0x0cf2('0x8f'),util[_0x0cf2('0xd3')](_0x4fcd56[_0x0cf2('0x60')],{'showHidden':![],'depth':null}));}break;case _0x0cf2('0x93'):if(_0x118fde==_0x0cf2('0xdd')||_0x118fde==_0x0cf2('0xde')){return _0x112ba9[_0x0cf2('0x3b')]({'read':!![]});}else{logger[_0x0cf2('0x2a')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x0cf2('0x2f'),_0x0cf2('0x93'),util[_0x0cf2('0xd3')](_0x4fcd56[_0x0cf2('0x60')],{'showHidden':![],'depth':null}));}break;case _0x0cf2('0x96'):if(_0x118fde=='message-delivered'){return _0x112ba9[_0x0cf2('0x3b')]({'read':!![]});}else{logger[_0x0cf2('0x2a')](_0x0cf2('0x28'),_0x0cf2('0x2f'),'bandwidth',util[_0x0cf2('0xd3')](_0x4fcd56[_0x0cf2('0x60')],{'showHidden':![],'depth':null}));}break;case _0x0cf2('0x97'):if(_0x118fde===_0x0cf2('0xdf')||_0x118fde===_0x0cf2('0xe0')){return _0x112ba9[_0x0cf2('0x3b')]({'read':!![]});}else{logger[_0x0cf2('0x2a')](_0x0cf2('0x28'),_0x0cf2('0x2f'),'intelepeer',util['inspect'](_0x4fcd56[_0x0cf2('0x60')],{'showHidden':![],'depth':null}));}break;}return _0x112ba9;}})[_0x0cf2('0x3d')](respondWithResult(_0x4d0a08,null))['catch'](handleError(_0x4d0a08,null));};exports[_0x0cf2('0xe1')]=function(_0x43ddcb,_0x550fe2,_0x27d7d1){var _0x2e63e0,_0x2aa20a,_0x11cde9;return db[_0x0cf2('0x47')][_0x0cf2('0x67')]({'where':{'id':_0x43ddcb[_0x0cf2('0x5c')]['id']}})[_0x0cf2('0x3d')](handleEntityNotFound(_0x550fe2,null))[_0x0cf2('0x3d')](function(_0x337688){if(_0x337688){_0x11cde9=_0x337688;logger[_0x0cf2('0x27')](_0x0cf2('0x28'),_0x0cf2('0x2f'),_0x0cf2('0xd2'),_0x337688[_0x0cf2('0x48')],util['inspect'](_0x43ddcb[_0x0cf2('0x4a')],{'showHidden':![],'depth':null}));switch(_0x337688[_0x0cf2('0x48')]){case _0x0cf2('0x91'):if(_0x43ddcb[_0x0cf2('0x4a')][_0x0cf2('0xe2')]&&_0x43ddcb[_0x0cf2('0x4a')]['state']){_0x2aa20a=_0x43ddcb[_0x0cf2('0x4a')][_0x0cf2('0xe3')];return db[_0x0cf2('0xcf')][_0x0cf2('0x67')]({'where':{'messageId':_0x43ddcb['query']['message-id']}});}break;}}})[_0x0cf2('0x3d')](handleEntityNotFound(_0x550fe2,null))[_0x0cf2('0x3d')](function(_0x334069){if(_0x334069){_0x2e63e0=_0x334069;switch(_0x11cde9['type']){case _0x0cf2('0x91'):if(_0x2aa20a==='2'||_0x2aa20a==='6'){return _0x2e63e0[_0x0cf2('0x3b')]({'read':!![]});}else{logger['error'](_0x0cf2('0x28'),_0x0cf2('0x2f'),'csc',util[_0x0cf2('0xd3')](_0x43ddcb['query'],{'showHidden':![],'depth':null}));};break;}return _0x2e63e0;}})['then'](respondWithResult(_0x550fe2,null))['catch'](handleError(_0x550fe2,null));};exports[_0x0cf2('0xe4')]=function(_0x57a3d5,_0x9d58c,_0x109cdb){return db[_0x0cf2('0x47')][_0x0cf2('0x67')]({'where':{'id':_0x57a3d5[_0x0cf2('0x5c')]['id']}})[_0x0cf2('0x3d')](handleEntityNotFound(_0x9d58c,null))[_0x0cf2('0x3d')](function(_0x340c25){if(_0x340c25){return _0x340c25[_0x0cf2('0xe4')](_0x57a3d5['body'][_0x0cf2('0x6f')],_[_0x0cf2('0xa4')](_0x57a3d5['body'],['ids','id'])||{})[_0x0cf2('0xa7')](function(_0x3463a6){for(var _0x40dfe8=0x0;_0x40dfe8<_0x57a3d5[_0x0cf2('0x60')][_0x0cf2('0x6f')][_0x0cf2('0x5e')];_0x40dfe8+=0x1){socket[_0x0cf2('0xe5')](_0x0cf2('0xe6'),{'UserId':Number(_0x57a3d5[_0x0cf2('0x60')][_0x0cf2('0x6f')][_0x40dfe8]),'SmsAccountId':Number(_0x57a3d5[_0x0cf2('0x5c')]['id'])});}return _0x3463a6;});}})[_0x0cf2('0x3d')](respondWithResult(_0x9d58c,null))[_0x0cf2('0x2d')](handleError(_0x9d58c,null));};exports[_0x0cf2('0xe7')]=function(_0x39559f,_0x239bf7,_0x4999e8){return db[_0x0cf2('0x47')][_0x0cf2('0x67')]({'where':{'id':_0x39559f[_0x0cf2('0x5c')]['id']}})[_0x0cf2('0x3d')](handleEntityNotFound(_0x239bf7,null))[_0x0cf2('0x3d')](function(_0x1cc054){if(_0x1cc054){return _0x1cc054[_0x0cf2('0xe7')](_0x39559f[_0x0cf2('0x4a')]['ids'])[_0x0cf2('0x3d')](function(){if(_['isArray'](_0x39559f['query']['ids'])){for(var _0x520016=0x0;_0x520016<_0x39559f[_0x0cf2('0x4a')][_0x0cf2('0x6f')][_0x0cf2('0x5e')];_0x520016+=0x1){socket[_0x0cf2('0xe5')](_0x0cf2('0xe8'),{'UserId':Number(_0x39559f[_0x0cf2('0x4a')][_0x0cf2('0x6f')][_0x520016]),'SmsAccountId':Number(_0x39559f[_0x0cf2('0x5c')]['id'])});}}else{socket['emit']('userSmsAccount:remove',{'UserId':Number(_0x39559f['query'][_0x0cf2('0x6f')]),'SmsAccountId':Number(_0x39559f[_0x0cf2('0x5c')]['id'])});}});}})['then'](respondWithStatusCode(_0x239bf7,null))['catch'](handleError(_0x239bf7,null));};exports[_0x0cf2('0xe9')]=function(_0x1039ad,_0x556281,_0xaaadb7){var _0x1c8f84={};var _0x2fbbe9={};var _0x199731;var _0x51267e;return db[_0x0cf2('0x47')][_0x0cf2('0x6a')]({'where':{'id':_0x1039ad[_0x0cf2('0x5c')]['id']}})[_0x0cf2('0x3d')](handleEntityNotFound(_0x556281,null))[_0x0cf2('0x3d')](function(_0x27c751){if(_0x27c751){_0x199731=_0x27c751;_0x2fbbe9[_0x0cf2('0x49')]=_[_0x0cf2('0x4b')](db[_0x0cf2('0xb1')][_0x0cf2('0x5d')]);_0x2fbbe9[_0x0cf2('0x4a')]=_[_0x0cf2('0x4b')](_0x1039ad['query']);_0x2fbbe9[_0x0cf2('0x4c')]=_[_0x0cf2('0x4d')](_0x2fbbe9[_0x0cf2('0x49')],_0x2fbbe9[_0x0cf2('0x4a')]);_0x1c8f84['attributes']=_['intersection'](_0x2fbbe9[_0x0cf2('0x49')],qs[_0x0cf2('0x4f')](_0x1039ad['query'][_0x0cf2('0x4f')]));_0x1c8f84[_0x0cf2('0x4e')]=_0x1c8f84[_0x0cf2('0x4e')][_0x0cf2('0x5e')]?_0x1c8f84[_0x0cf2('0x4e')]:_0x2fbbe9[_0x0cf2('0x49')];_0x1c8f84[_0x0cf2('0x51')]=qs[_0x0cf2('0x52')](_0x1039ad['query'][_0x0cf2('0x52')]);_0x1c8f84[_0x0cf2('0x53')]=qs[_0x0cf2('0x4c')](_[_0x0cf2('0x54')](_0x1039ad['query'],_0x2fbbe9['filters']));if(_0x1039ad[_0x0cf2('0x4a')][_0x0cf2('0x55')]){_0x1c8f84[_0x0cf2('0x53')]=_[_0x0cf2('0x57')](_0x1c8f84['where'],{'$or':_[_0x0cf2('0x46')](_0x1c8f84[_0x0cf2('0x4e')],function(_0x16c3af){var _0x3853d5={};_0x3853d5[_0x16c3af]={'$like':'%'+_0x1039ad[_0x0cf2('0x4a')][_0x0cf2('0x55')]+'%'};return _0x3853d5;})});}_0x1c8f84=_[_0x0cf2('0x57')]({},_0x1c8f84,_0x1039ad[_0x0cf2('0x58')]);return _0x199731[_0x0cf2('0xe9')](_0x1c8f84);}})[_0x0cf2('0x3d')](function(_0x2bb683){if(_0x2bb683){_0x51267e=_0x2bb683['length'];if(!_0x1039ad['query'][_0x0cf2('0x6b')](_0x0cf2('0x50'))){_0x1c8f84[_0x0cf2('0x33')]=qs['limit'](_0x1039ad[_0x0cf2('0x4a')][_0x0cf2('0x33')]);_0x1c8f84[_0x0cf2('0x32')]=qs[_0x0cf2('0x32')](_0x1039ad[_0x0cf2('0x4a')][_0x0cf2('0x32')]);}return _0x199731[_0x0cf2('0xe9')](_0x1c8f84);}})['then'](function(_0x5f03a5){if(_0x5f03a5){return _0x5f03a5?{'count':_0x51267e,'rows':_0x5f03a5}:null;}})[_0x0cf2('0x3d')](respondWithResult(_0x556281,null))[_0x0cf2('0x2d')](handleError(_0x556281,null));};
\ No newline at end of file
index 57cf035..cac70db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6537=['hook','exports','events','../../mysqldb','SmsAccount','setMaxListeners','save','update','remove','hasOwnProperty'];(function(_0x5612a7,_0x56171e){var _0x1f3782=function(_0x853d73){while(--_0x853d73){_0x5612a7['push'](_0x5612a7['shift']());}};_0x1f3782(++_0x56171e);}(_0x6537,0x1d8));var _0x7653=function(_0x15f70c,_0x432c62){_0x15f70c=_0x15f70c-0x0;var _0x6c0ab2=_0x6537[_0x15f70c];return _0x6c0ab2;};'use strict';var EventEmitter=require(_0x7653('0x0'));var SmsAccount=require(_0x7653('0x1'))['db'][_0x7653('0x2')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x7653('0x3')](0x0);var events={'afterCreate':_0x7653('0x4'),'afterUpdate':_0x7653('0x5'),'afterDestroy':_0x7653('0x6')};function emitEvent(_0x8bc892){return function(_0x133593,_0x4dc5a5,_0x53454b){SmsAccountEvents['emit'](_0x8bc892+':'+_0x133593['id'],_0x133593);SmsAccountEvents['emit'](_0x8bc892,_0x133593);_0x53454b(null);};}for(var e in events){if(events[_0x7653('0x7')](e)){var event=events[e];SmsAccount[_0x7653('0x8')](e,emitEvent(event));}}module[_0x7653('0x9')]=SmsAccountEvents;
\ No newline at end of file
+var _0x1155=['emit','hasOwnProperty','hook','exports','../../mysqldb','SmsAccount','setMaxListeners','remove'];(function(_0x38c652,_0x1ea1b7){var _0x218a37=function(_0x5dcb2a){while(--_0x5dcb2a){_0x38c652['push'](_0x38c652['shift']());}};_0x218a37(++_0x1ea1b7);}(_0x1155,0x124));var _0x5115=function(_0x1a8bbf,_0x356523){_0x1a8bbf=_0x1a8bbf-0x0;var _0x2709bc=_0x1155[_0x1a8bbf];return _0x2709bc;};'use strict';var EventEmitter=require('events');var SmsAccount=require(_0x5115('0x0'))['db'][_0x5115('0x1')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x5115('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x5115('0x3')};function emitEvent(_0x362e99){return function(_0x4d4b71,_0x388d4e,_0x4260f7){SmsAccountEvents[_0x5115('0x4')](_0x362e99+':'+_0x4d4b71['id'],_0x4d4b71);SmsAccountEvents[_0x5115('0x4')](_0x362e99,_0x4d4b71);_0x4260f7(null);};}for(var e in events){if(events[_0x5115('0x5')](e)){var event=events[e];SmsAccount[_0x5115('0x6')](e,emitEvent(event));}}module[_0x5115('0x7')]=SmsAccountEvents;
\ No newline at end of file
index 70c4685..94e0e32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1ae=['path','rimraf','../../config/environment','./smsAccount.attributes','exports','define','SmsAccount','sms_accounts','lodash','util','moment','request-promise'];(function(_0x1e9edb,_0x212f29){var _0x4f279b=function(_0x51f639){while(--_0x51f639){_0x1e9edb['push'](_0x1e9edb['shift']());}};_0x4f279b(++_0x212f29);}(_0xf1ae,0xc8));var _0xef1a=function(_0x2dc45d,_0x586405){_0x2dc45d=_0x2dc45d-0x0;var _0x125e2f=_0xf1ae[_0x2dc45d];return _0x125e2f;};'use strict';var _=require(_0xef1a('0x0'));var util=require(_0xef1a('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xef1a('0x2'));var BPromise=require('bluebird');var rp=require(_0xef1a('0x3'));var fs=require('fs');var path=require(_0xef1a('0x4'));var rimraf=require(_0xef1a('0x5'));var config=require(_0xef1a('0x6'));var attributes=require(_0xef1a('0x7'));module[_0xef1a('0x8')]=function(_0x5adafb,_0x5e47be){return _0x5adafb[_0xef1a('0x9')](_0xef1a('0xa'),attributes,{'tableName':_0xef1a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf0a1=['../../config/environment','./smsAccount.attributes','define','sms_accounts','lodash','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x341ee8,_0x254e9b){var _0x2e0f43=function(_0x49b98b){while(--_0x49b98b){_0x341ee8['push'](_0x341ee8['shift']());}};_0x2e0f43(++_0x254e9b);}(_0xf0a1,0xb4));var _0x1f0a=function(_0x5238fe,_0x21b629){_0x5238fe=_0x5238fe-0x0;var _0x116e39=_0xf0a1[_0x5238fe];return _0x116e39;};'use strict';var _=require(_0x1f0a('0x0'));var util=require('util');var logger=require(_0x1f0a('0x1'))(_0x1f0a('0x2'));var moment=require(_0x1f0a('0x3'));var BPromise=require('bluebird');var rp=require(_0x1f0a('0x4'));var fs=require('fs');var path=require(_0x1f0a('0x5'));var rimraf=require(_0x1f0a('0x6'));var config=require(_0x1f0a('0x7'));var attributes=require(_0x1f0a('0x8'));module['exports']=function(_0x44acb1,_0x2e4e25){return _0x44acb1[_0x1f0a('0x9')]('SmsAccount',attributes,{'tableName':_0x1f0a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 70b224e..046060a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bdf=['info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','error','code','message','catch','ShowSmsAccount','SmsAccount','find','options','where','map','attributes','include','model','stringify','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./smsAccount.socket','register','request','then'];(function(_0x358bd7,_0x31c530){var _0x508dcf=function(_0x4221e6){while(--_0x4221e6){_0x358bd7['push'](_0x358bd7['shift']());}};_0x508dcf(++_0x31c530);}(_0x4bdf,0x1e7));var _0xf4bd=function(_0x3450b1,_0x2ea9a9){_0x3450b1=_0x3450b1-0x0;var _0x590954=_0x4bdf[_0x3450b1];return _0x590954;};'use strict';var _=require(_0xf4bd('0x0'));var util=require(_0xf4bd('0x1'));var moment=require(_0xf4bd('0x2'));var BPromise=require(_0xf4bd('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf4bd('0x4'));var db=require(_0xf4bd('0x5'))['db'];var utils=require(_0xf4bd('0x6'));var logger=require(_0xf4bd('0x7'))(_0xf4bd('0x8'));var config=require(_0xf4bd('0x9'));var jayson=require(_0xf4bd('0xa'));var client=jayson[_0xf4bd('0xb')][_0xf4bd('0xc')]({'port':0x232a});config['redis']=_['defaults'](config[_0xf4bd('0xd')],{'host':_0xf4bd('0xe'),'port':0x18eb});var socket=require(_0xf4bd('0xf'))(new Redis(config['redis']));require(_0xf4bd('0x10'))[_0xf4bd('0x11')](socket);function respondWithRpcPromise(_0x4ecef5,_0x501d5e,_0x260d84){return new BPromise(function(_0x2bec5b,_0x2a4302){return client[_0xf4bd('0x12')](_0x4ecef5,_0x260d84)[_0xf4bd('0x13')](function(_0x5dca01){logger[_0xf4bd('0x14')](_0xf4bd('0x15'),_0x501d5e,_0xf4bd('0x16'));logger[_0xf4bd('0x17')](_0xf4bd('0x18'),_0x501d5e,_0xf4bd('0x16'),JSON['stringify'](_0x5dca01));if(_0x5dca01['error']){if(_0x5dca01[_0xf4bd('0x19')][_0xf4bd('0x1a')]===0x1f4){logger[_0xf4bd('0x19')](_0xf4bd('0x15'),_0x501d5e,_0x5dca01[_0xf4bd('0x19')]['message']);return _0x2a4302(_0x5dca01['error'][_0xf4bd('0x1b')]);}logger[_0xf4bd('0x19')](_0xf4bd('0x15'),_0x501d5e,_0x5dca01[_0xf4bd('0x19')][_0xf4bd('0x1b')]);return _0x2bec5b(_0x5dca01[_0xf4bd('0x19')]['message']);}else{logger[_0xf4bd('0x14')](_0xf4bd('0x15'),_0x501d5e,_0xf4bd('0x16'));_0x2bec5b(_0x5dca01['result']['message']);}})[_0xf4bd('0x1c')](function(_0xc509f){logger[_0xf4bd('0x19')](_0xf4bd('0x15'),_0x501d5e,_0xc509f);_0x2a4302(_0xc509f);});});}exports[_0xf4bd('0x1d')]=function(_0x426322){var _0x729829=this;return new Promise(function(_0x1cc674,_0x1a0547){return db[_0xf4bd('0x1e')][_0xf4bd('0x1f')]({'raw':_0x426322['options']?_0x426322[_0xf4bd('0x20')]['raw']===undefined?!![]:![]:!![],'where':_0x426322[_0xf4bd('0x20')]?_0x426322[_0xf4bd('0x20')][_0xf4bd('0x21')]||null:null,'attributes':_0x426322[_0xf4bd('0x20')]?_0x426322[_0xf4bd('0x20')]['attributes']||null:null,'include':_0x426322[_0xf4bd('0x20')]?_0x426322[_0xf4bd('0x20')]['include']?_[_0xf4bd('0x22')](_0x426322[_0xf4bd('0x20')]['include'],function(_0x3fa00f){return{'model':db[_0x3fa00f['model']],'as':_0x3fa00f['as'],'attributes':_0x3fa00f[_0xf4bd('0x23')],'include':_0x3fa00f['include']?_[_0xf4bd('0x22')](_0x3fa00f[_0xf4bd('0x24')],function(_0x3e0a8d){return{'model':db[_0x3e0a8d['model']],'as':_0x3e0a8d['as'],'attributes':_0x3e0a8d[_0xf4bd('0x23')],'include':_0x3e0a8d[_0xf4bd('0x24')]?_[_0xf4bd('0x22')](_0x3e0a8d[_0xf4bd('0x24')],function(_0x436aac){return{'model':db[_0x436aac[_0xf4bd('0x25')]],'as':_0x436aac['as'],'attributes':_0x436aac[_0xf4bd('0x23')]};}):[]};}):[]};}):[]:[]})[_0xf4bd('0x13')](function(_0x2a17ac){logger[_0xf4bd('0x14')](_0xf4bd('0x1d'),_0x426322);logger[_0xf4bd('0x17')]('ShowSmsAccount',_0x426322,JSON[_0xf4bd('0x26')](_0x2a17ac));_0x1cc674(_0x2a17ac);})[_0xf4bd('0x1c')](function(_0x244120){logger['error'](_0xf4bd('0x1d'),_0x244120[_0xf4bd('0x1b')],_0x426322);_0x1a0547(_0x729829[_0xf4bd('0x19')](0x1f4,_0x244120[_0xf4bd('0x1b')]));});});};
\ No newline at end of file
+var _0xfde2=['client','http','redis','defaults','socket.io-emitter','./smsAccount.socket','register','request','then','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','ShowSmsAccount','SmsAccount','options','raw','where','include','map','model','attributes','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise'];(function(_0x3b0c9d,_0x3ddeb5){var _0xcfc8d7=function(_0x320dc6){while(--_0x320dc6){_0x3b0c9d['push'](_0x3b0c9d['shift']());}};_0xcfc8d7(++_0x3ddeb5);}(_0xfde2,0x10a));var _0x2fde=function(_0x1c0f41,_0x26d95d){_0x1c0f41=_0x1c0f41-0x0;var _0x369a9f=_0xfde2[_0x1c0f41];return _0x369a9f;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x2fde('0x0'));var fs=require('fs');var Redis=require(_0x2fde('0x1'));var db=require('../../mysqldb')['db'];var utils=require(_0x2fde('0x2'));var logger=require(_0x2fde('0x3'))(_0x2fde('0x4'));var config=require('../../config/environment');var jayson=require(_0x2fde('0x5'));var client=jayson[_0x2fde('0x6')][_0x2fde('0x7')]({'port':0x232a});config[_0x2fde('0x8')]=_[_0x2fde('0x9')](config[_0x2fde('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x2fde('0xa'))(new Redis(config[_0x2fde('0x8')]));require(_0x2fde('0xb'))[_0x2fde('0xc')](socket);function respondWithRpcPromise(_0x4ee0be,_0x55fc93,_0x3d2400){return new BPromise(function(_0x1ef706,_0x458748){return client[_0x2fde('0xd')](_0x4ee0be,_0x3d2400)[_0x2fde('0xe')](function(_0x3539fd){logger['info'](_0x2fde('0xf'),_0x55fc93,_0x2fde('0x10'));logger[_0x2fde('0x11')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x55fc93,_0x2fde('0x10'),JSON[_0x2fde('0x12')](_0x3539fd));if(_0x3539fd[_0x2fde('0x13')]){if(_0x3539fd['error'][_0x2fde('0x14')]===0x1f4){logger[_0x2fde('0x13')](_0x2fde('0xf'),_0x55fc93,_0x3539fd[_0x2fde('0x13')][_0x2fde('0x15')]);return _0x458748(_0x3539fd[_0x2fde('0x13')]['message']);}logger['error'](_0x2fde('0xf'),_0x55fc93,_0x3539fd['error']['message']);return _0x1ef706(_0x3539fd[_0x2fde('0x13')][_0x2fde('0x15')]);}else{logger[_0x2fde('0x16')]('SmsAccount,\x20%s,\x20%s',_0x55fc93,_0x2fde('0x10'));_0x1ef706(_0x3539fd[_0x2fde('0x17')][_0x2fde('0x15')]);}})[_0x2fde('0x18')](function(_0x1f4746){logger['error'](_0x2fde('0xf'),_0x55fc93,_0x1f4746);_0x458748(_0x1f4746);});});}exports[_0x2fde('0x19')]=function(_0x1d3643){var _0x20e085=this;return new Promise(function(_0x3d6b13,_0x41597d){return db[_0x2fde('0x1a')]['find']({'raw':_0x1d3643[_0x2fde('0x1b')]?_0x1d3643[_0x2fde('0x1b')][_0x2fde('0x1c')]===undefined?!![]:![]:!![],'where':_0x1d3643[_0x2fde('0x1b')]?_0x1d3643[_0x2fde('0x1b')][_0x2fde('0x1d')]||null:null,'attributes':_0x1d3643[_0x2fde('0x1b')]?_0x1d3643[_0x2fde('0x1b')]['attributes']||null:null,'include':_0x1d3643[_0x2fde('0x1b')]?_0x1d3643[_0x2fde('0x1b')][_0x2fde('0x1e')]?_[_0x2fde('0x1f')](_0x1d3643[_0x2fde('0x1b')][_0x2fde('0x1e')],function(_0x1c4617){return{'model':db[_0x1c4617[_0x2fde('0x20')]],'as':_0x1c4617['as'],'attributes':_0x1c4617['attributes'],'include':_0x1c4617[_0x2fde('0x1e')]?_[_0x2fde('0x1f')](_0x1c4617[_0x2fde('0x1e')],function(_0x5504f4){return{'model':db[_0x5504f4['model']],'as':_0x5504f4['as'],'attributes':_0x5504f4['attributes'],'include':_0x5504f4[_0x2fde('0x1e')]?_['map'](_0x5504f4[_0x2fde('0x1e')],function(_0x342dc9){return{'model':db[_0x342dc9[_0x2fde('0x20')]],'as':_0x342dc9['as'],'attributes':_0x342dc9[_0x2fde('0x21')]};}):[]};}):[]};}):[]:[]})[_0x2fde('0xe')](function(_0x2f48e0){logger[_0x2fde('0x16')](_0x2fde('0x19'),_0x1d3643);logger[_0x2fde('0x11')](_0x2fde('0x19'),_0x1d3643,JSON['stringify'](_0x2f48e0));_0x3d6b13(_0x2f48e0);})[_0x2fde('0x18')](function(_0xd65085){logger[_0x2fde('0x13')](_0x2fde('0x19'),_0xd65085[_0x2fde('0x15')],_0x1d3643);_0x41597d(_0x20e085['error'](0x1f4,_0xd65085[_0x2fde('0x15')]));});});};
\ No newline at end of file
index fcec19d..c334291 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['register','length','smsAccount:','./smsAccount.events','save','remove','emit','removeListener'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xa9e0[_0x19e35c];return _0x3e1fe8;};'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(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0xa9e0[_0x3ce3c];return _0x55a2c9;};'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 1854461..12de276 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsApplication.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0xae7c2f,_0xf31e04){var _0x5d7001=function(_0x4eeadb){while(--_0x4eeadb){_0xae7c2f['push'](_0xae7c2f['shift']());}};_0x5d7001(++_0xf31e04);}(_0x9957,0x93));var _0x7995=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x9957[_0x618414];return _0x21c19a;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0xe')]('/',auth['isAuthenticated'](),controller[_0x7995('0xf')]);router[_0x7995('0x10')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router[_0x7995('0x12')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0x13')]);module[_0x7995('0x14')]=router;
\ No newline at end of file
+var _0x55ca=['update','delete','/:id','destroy','exports','multer','util','Router','fs-extra','../../components/interaction/service','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','show','create'];(function(_0x130466,_0x1fc58d){var _0xb16fda=function(_0x5d7f84){while(--_0x5d7f84){_0x130466['push'](_0x130466['shift']());}};_0xb16fda(++_0x1fc58d);}(_0x55ca,0x126));var _0xa55c=function(_0x1e0f42,_0x2567e5){_0x1e0f42=_0x1e0f42-0x0;var _0x4e9c54=_0x55ca[_0x1e0f42];return _0x4e9c54;};'use strict';var multer=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa55c('0x2')]();var fs_extra=require(_0xa55c('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var controller=require(_0xa55c('0x6'));router[_0xa55c('0x7')]('/',auth[_0xa55c('0x8')](),controller[_0xa55c('0x9')]);router[_0xa55c('0x7')]('/:id',auth[_0xa55c('0x8')](),controller[_0xa55c('0xa')]);router['post']('/',auth[_0xa55c('0x8')](),controller[_0xa55c('0xb')]);router['put']('/:id',auth[_0xa55c('0x8')](),controller[_0xa55c('0xc')]);router[_0xa55c('0xd')](_0xa55c('0xe'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xf')]);module[_0xa55c('0x10')]=router;
\ No newline at end of file
index f54bf00..7f0e0b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9584=['noop','TEXT','*,*,*,*','sequelize','exports','STRING'];(function(_0x4503df,_0xfec122){var _0x3f1b2b=function(_0x32b1de){while(--_0x32b1de){_0x4503df['push'](_0x4503df['shift']());}};_0x3f1b2b(++_0xfec122);}(_0x9584,0x9f));var _0x4958=function(_0x3163c9,_0x476a78){_0x3163c9=_0x3163c9-0x0;var _0x2e0f94=_0x9584[_0x3163c9];return _0x2e0f94;};'use strict';var Sequelize=require(_0x4958('0x0'));module[_0x4958('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x4958('0x2')],'allowNull':![],'defaultValue':_0x4958('0x3')},'appdata':{'type':Sequelize[_0x4958('0x4')]()},'description':{'type':Sequelize[_0x4958('0x2')]},'interval':{'type':Sequelize[_0x4958('0x2')],'defaultValue':_0x4958('0x5')}};
\ No newline at end of file
+var _0x407d=['STRING','TEXT','*,*,*,*','exports','INTEGER'];(function(_0x348d7f,_0x480779){var _0x5a4708=function(_0x49bd96){while(--_0x49bd96){_0x348d7f['push'](_0x348d7f['shift']());}};_0x5a4708(++_0x480779);}(_0x407d,0x1d9));var _0xd407=function(_0x45bce4,_0x4bfaa9){_0x45bce4=_0x45bce4-0x0;var _0x225634=_0x407d[_0x45bce4];return _0x225634;};'use strict';var Sequelize=require('sequelize');module[_0xd407('0x0')]={'priority':{'type':Sequelize[_0xd407('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0xd407('0x2')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0xd407('0x3')]()},'description':{'type':Sequelize[_0xd407('0x2')]},'interval':{'type':Sequelize[_0xd407('0x2')],'defaultValue':_0xd407('0x4')}};
\ No newline at end of file
index 700e3ad..bf29f21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5f1=['sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','map','SmsApplication','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','keys','find','create','body','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa5f1,0x168));var _0x1a5f=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0xa5f1[_0x5447fd];return _0x15b28a;};'use strict';var emlformat=require(_0x1a5f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1a5f('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1a5f('0x2'));var moment=require(_0x1a5f('0x3'));var BPromise=require(_0x1a5f('0x4'));var Mustache=require(_0x1a5f('0x5'));var util=require(_0x1a5f('0x6'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x1a5f('0x7'));var fs=require('fs');var fs_extra=require(_0x1a5f('0x8'));var _=require(_0x1a5f('0x9'));var squel=require('squel');var crypto=require(_0x1a5f('0xa'));var jsforce=require(_0x1a5f('0xb'));var deskjs=require(_0x1a5f('0xc'));var toCsv=require(_0x1a5f('0xd'));var querystring=require(_0x1a5f('0xe'));var Papa=require(_0x1a5f('0xf'));var Redis=require(_0x1a5f('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x1a5f('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1a5f('0x12'));var logger=require(_0x1a5f('0x13'))(_0x1a5f('0x14'));var utils=require(_0x1a5f('0x15'));var config=require(_0x1a5f('0x16'));var licenseUtil=require(_0x1a5f('0x17'));var db=require(_0x1a5f('0x18'))['db'];function respondWithStatusCode(_0x4631eb,_0x357198){_0x357198=_0x357198||0xcc;return function(_0x45fbae){if(_0x45fbae){return _0x4631eb[_0x1a5f('0x19')](_0x357198);}return _0x4631eb[_0x1a5f('0x1a')](_0x357198)[_0x1a5f('0x1b')]();};}function respondWithResult(_0x379b49,_0x605cef){_0x605cef=_0x605cef||0xc8;return function(_0x53bddc){if(_0x53bddc){return _0x379b49[_0x1a5f('0x1a')](_0x605cef)[_0x1a5f('0x1c')](_0x53bddc);}};}function respondWithFilteredResult(_0x3d5aff,_0x5e3c03){return function(_0x457d67){if(_0x457d67){var _0x540d77=typeof _0x5e3c03[_0x1a5f('0x1d')]===_0x1a5f('0x1e')&&typeof _0x5e3c03[_0x1a5f('0x1f')]===_0x1a5f('0x1e');var _0x4864b2=_0x457d67[_0x1a5f('0x20')];var _0x329f1d=_0x540d77?0x0:_0x5e3c03['offset'];var _0x85e9b2=_0x540d77?_0x457d67[_0x1a5f('0x20')]:_0x5e3c03[_0x1a5f('0x1d')]+_0x5e3c03[_0x1a5f('0x1f')];var _0x226f0d;if(_0x85e9b2>=_0x4864b2){_0x85e9b2=_0x4864b2;_0x226f0d=0xc8;}else{_0x226f0d=0xce;}_0x3d5aff['status'](_0x226f0d);return _0x3d5aff[_0x1a5f('0x21')](_0x1a5f('0x22'),_0x329f1d+'-'+_0x85e9b2+'/'+_0x4864b2)[_0x1a5f('0x1c')](_0x457d67);}return null;};}function patchUpdates(_0x3905ec){return function(_0x29b1e8){try{jsonpatch[_0x1a5f('0x23')](_0x29b1e8,_0x3905ec,!![]);}catch(_0x41ad5b){return BPromise[_0x1a5f('0x24')](_0x41ad5b);}return _0x29b1e8[_0x1a5f('0x25')]();};}function saveUpdates(_0x5caaef,_0x295747){return function(_0x390043){if(_0x390043){return _0x390043['update'](_0x5caaef)[_0x1a5f('0x26')](function(_0x5a215c){return _0x5a215c;});}return null;};}function removeEntity(_0x889e4,_0x38ba89){return function(_0x14708d){if(_0x14708d){return _0x14708d[_0x1a5f('0x27')]()[_0x1a5f('0x26')](function(){_0x889e4[_0x1a5f('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x16fdfc,_0x32cbd6){return function(_0x20ce59){if(!_0x20ce59){_0x16fdfc[_0x1a5f('0x19')](0x194);}return _0x20ce59;};}function handleError(_0x281c0d,_0x271bd1){_0x271bd1=_0x271bd1||0x1f4;return function(_0x3877dc){logger[_0x1a5f('0x28')](_0x3877dc[_0x1a5f('0x29')]);if(_0x3877dc[_0x1a5f('0x2a')]){delete _0x3877dc['name'];}_0x281c0d['status'](_0x271bd1)[_0x1a5f('0x2b')](_0x3877dc);};}exports[_0x1a5f('0x2c')]=function(_0x12d12a,_0xfda71e){var _0x5d6769={},_0x39939d={},_0x571e29={'count':0x0,'rows':[]};var _0x3a1ff1=_[_0x1a5f('0x2d')](db[_0x1a5f('0x2e')][_0x1a5f('0x2f')],function(_0x291854){return{'name':_0x291854[_0x1a5f('0x30')],'type':_0x291854[_0x1a5f('0x31')][_0x1a5f('0x32')]};});_0x39939d[_0x1a5f('0x33')]=_[_0x1a5f('0x2d')](_0x3a1ff1,'name');_0x39939d['query']=_['keys'](_0x12d12a[_0x1a5f('0x34')]);_0x39939d[_0x1a5f('0x35')]=_[_0x1a5f('0x36')](_0x39939d['model'],_0x39939d[_0x1a5f('0x34')]);_0x5d6769[_0x1a5f('0x37')]=_['intersection'](_0x39939d[_0x1a5f('0x33')],qs[_0x1a5f('0x38')](_0x12d12a[_0x1a5f('0x34')][_0x1a5f('0x38')]));_0x5d6769[_0x1a5f('0x37')]=_0x5d6769['attributes'][_0x1a5f('0x39')]?_0x5d6769[_0x1a5f('0x37')]:_0x39939d['model'];if(!_0x12d12a[_0x1a5f('0x34')][_0x1a5f('0x3a')]('nolimit')){_0x5d6769[_0x1a5f('0x1f')]=qs[_0x1a5f('0x1f')](_0x12d12a[_0x1a5f('0x34')][_0x1a5f('0x1f')]);_0x5d6769[_0x1a5f('0x1d')]=qs[_0x1a5f('0x1d')](_0x12d12a['query'][_0x1a5f('0x1d')]);}_0x5d6769[_0x1a5f('0x3b')]=qs[_0x1a5f('0x3c')](_0x12d12a[_0x1a5f('0x34')][_0x1a5f('0x3c')]);_0x5d6769['where']=qs[_0x1a5f('0x35')](_[_0x1a5f('0x3d')](_0x12d12a['query'],_0x39939d[_0x1a5f('0x35')]),_0x3a1ff1);if(_0x12d12a[_0x1a5f('0x34')][_0x1a5f('0x3e')]){_0x5d6769[_0x1a5f('0x3f')]=_[_0x1a5f('0x40')](_0x5d6769['where'],{'$or':_[_0x1a5f('0x2d')](_0x3a1ff1,function(_0x54cf5a){if(_0x54cf5a[_0x1a5f('0x31')]!==_0x1a5f('0x41')){var _0x4ac6a4={};_0x4ac6a4[_0x54cf5a[_0x1a5f('0x2a')]]={'$like':'%'+_0x12d12a[_0x1a5f('0x34')]['filter']+'%'};return _0x4ac6a4;}})});}_0x5d6769=_[_0x1a5f('0x40')]({},_0x5d6769,_0x12d12a[_0x1a5f('0x42')]);var _0x10ee6c={'where':_0x5d6769[_0x1a5f('0x3f')]};return db[_0x1a5f('0x2e')]['count'](_0x10ee6c)[_0x1a5f('0x26')](function(_0x21899d){_0x571e29['count']=_0x21899d;if(_0x12d12a['query'][_0x1a5f('0x43')]){_0x5d6769[_0x1a5f('0x44')]=[{'all':!![]}];}return db[_0x1a5f('0x2e')]['findAll'](_0x5d6769);})[_0x1a5f('0x26')](function(_0x52cd4c){_0x571e29[_0x1a5f('0x45')]=_0x52cd4c;return _0x571e29;})['then'](respondWithFilteredResult(_0xfda71e,_0x5d6769))[_0x1a5f('0x46')](handleError(_0xfda71e,null));};exports[_0x1a5f('0x47')]=function(_0x21fef3,_0x5442a7){var _0x55afa1={'raw':!![],'where':{'id':_0x21fef3[_0x1a5f('0x48')]['id']}},_0x2d84d7={};_0x2d84d7[_0x1a5f('0x33')]=_[_0x1a5f('0x49')](db[_0x1a5f('0x2e')]['rawAttributes']);_0x2d84d7[_0x1a5f('0x34')]=_['keys'](_0x21fef3[_0x1a5f('0x34')]);_0x2d84d7[_0x1a5f('0x35')]=_[_0x1a5f('0x36')](_0x2d84d7[_0x1a5f('0x33')],_0x2d84d7['query']);_0x55afa1[_0x1a5f('0x37')]=_[_0x1a5f('0x36')](_0x2d84d7['model'],qs[_0x1a5f('0x38')](_0x21fef3['query']['fields']));_0x55afa1['attributes']=_0x55afa1[_0x1a5f('0x37')]['length']?_0x55afa1[_0x1a5f('0x37')]:_0x2d84d7[_0x1a5f('0x33')];if(_0x21fef3[_0x1a5f('0x34')]['includeAll']){_0x55afa1['include']=[{'all':!![]}];}_0x55afa1=_[_0x1a5f('0x40')]({},_0x55afa1,_0x21fef3[_0x1a5f('0x42')]);return db['SmsApplication'][_0x1a5f('0x4a')](_0x55afa1)['then'](handleEntityNotFound(_0x5442a7,null))[_0x1a5f('0x26')](respondWithResult(_0x5442a7,null))['catch'](handleError(_0x5442a7,null));};exports[_0x1a5f('0x4b')]=function(_0x246e83,_0x533d41){return db[_0x1a5f('0x2e')]['create'](_0x246e83[_0x1a5f('0x4c')],{})[_0x1a5f('0x26')](respondWithResult(_0x533d41,0xc9))['catch'](handleError(_0x533d41,null));};exports['update']=function(_0x2c5ebe,_0x17c73d){if(_0x2c5ebe[_0x1a5f('0x4c')]['id']){delete _0x2c5ebe[_0x1a5f('0x4c')]['id'];}return db[_0x1a5f('0x2e')][_0x1a5f('0x4a')]({'where':{'id':_0x2c5ebe[_0x1a5f('0x48')]['id']}})[_0x1a5f('0x26')](handleEntityNotFound(_0x17c73d,null))[_0x1a5f('0x26')](saveUpdates(_0x2c5ebe[_0x1a5f('0x4c')],null))[_0x1a5f('0x26')](respondWithResult(_0x17c73d,null))[_0x1a5f('0x46')](handleError(_0x17c73d,null));};exports['destroy']=function(_0x2aee22,_0x140a82){return db[_0x1a5f('0x2e')][_0x1a5f('0x4a')]({'where':{'id':_0x2aee22[_0x1a5f('0x48')]['id']}})[_0x1a5f('0x26')](handleEntityNotFound(_0x140a82,null))[_0x1a5f('0x26')](removeEntity(_0x140a82,null))[_0x1a5f('0x46')](handleError(_0x140a82,null));};
\ No newline at end of file
+var _0x5518=['eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','apply','save','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','include','findAll','show','SmsApplication','find','create','body','catch','update','params'];(function(_0x3e799a,_0x5cf407){var _0x3c06fe=function(_0x9b240f){while(--_0x9b240f){_0x3e799a['push'](_0x3e799a['shift']());}};_0x3c06fe(++_0x5cf407);}(_0x5518,0x9c));var _0x8551=function(_0x42be6b,_0x3511ef){_0x42be6b=_0x42be6b-0x0;var _0x2e85b0=_0x5518[_0x42be6b];return _0x2e85b0;};'use strict';var emlformat=require(_0x8551('0x0'));var rimraf=require(_0x8551('0x1'));var zipdir=require(_0x8551('0x2'));var jsonpatch=require(_0x8551('0x3'));var rp=require(_0x8551('0x4'));var moment=require(_0x8551('0x5'));var BPromise=require(_0x8551('0x6'));var Mustache=require(_0x8551('0x7'));var util=require(_0x8551('0x8'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x8551('0x9'));var fs=require('fs');var fs_extra=require(_0x8551('0xa'));var _=require(_0x8551('0xb'));var squel=require(_0x8551('0xc'));var crypto=require(_0x8551('0xd'));var jsforce=require(_0x8551('0xe'));var deskjs=require(_0x8551('0xf'));var toCsv=require(_0x8551('0x10'));var querystring=require(_0x8551('0x11'));var Papa=require(_0x8551('0x12'));var Redis=require(_0x8551('0x13'));var authService=require(_0x8551('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x8551('0x15'));var hardwareService=require(_0x8551('0x16'));var logger=require(_0x8551('0x17'))(_0x8551('0x18'));var utils=require(_0x8551('0x19'));var config=require(_0x8551('0x1a'));var licenseUtil=require(_0x8551('0x1b'));var db=require(_0x8551('0x1c'))['db'];function respondWithStatusCode(_0x2f9022,_0x512319){_0x512319=_0x512319||0xcc;return function(_0xafb122){if(_0xafb122){return _0x2f9022[_0x8551('0x1d')](_0x512319);}return _0x2f9022[_0x8551('0x1e')](_0x512319)[_0x8551('0x1f')]();};}function respondWithResult(_0x3f89ca,_0x52e860){_0x52e860=_0x52e860||0xc8;return function(_0x6fa0b8){if(_0x6fa0b8){return _0x3f89ca[_0x8551('0x1e')](_0x52e860)['json'](_0x6fa0b8);}};}function respondWithFilteredResult(_0x1685f6,_0x4ad5d6){return function(_0x3bfdc4){if(_0x3bfdc4){var _0x9a6518=typeof _0x4ad5d6['offset']===_0x8551('0x20')&&typeof _0x4ad5d6[_0x8551('0x21')]===_0x8551('0x20');var _0x58fddd=_0x3bfdc4[_0x8551('0x22')];var _0x4553b4=_0x9a6518?0x0:_0x4ad5d6[_0x8551('0x23')];var _0x5efafd=_0x9a6518?_0x3bfdc4[_0x8551('0x22')]:_0x4ad5d6[_0x8551('0x23')]+_0x4ad5d6[_0x8551('0x21')];var _0x56caea;if(_0x5efafd>=_0x58fddd){_0x5efafd=_0x58fddd;_0x56caea=0xc8;}else{_0x56caea=0xce;}_0x1685f6[_0x8551('0x1e')](_0x56caea);return _0x1685f6[_0x8551('0x24')]('Content-Range',_0x4553b4+'-'+_0x5efafd+'/'+_0x58fddd)['json'](_0x3bfdc4);}return null;};}function patchUpdates(_0x57a0b8){return function(_0x3eac3b){try{jsonpatch[_0x8551('0x25')](_0x3eac3b,_0x57a0b8,!![]);}catch(_0x45b78b){return BPromise['reject'](_0x45b78b);}return _0x3eac3b[_0x8551('0x26')]();};}function saveUpdates(_0x155e2a,_0x373cb5){return function(_0x5d0750){if(_0x5d0750){return _0x5d0750['update'](_0x155e2a)[_0x8551('0x27')](function(_0x4c737b){return _0x4c737b;});}return null;};}function removeEntity(_0x3780db,_0x5b5d0e){return function(_0xc73a75){if(_0xc73a75){return _0xc73a75[_0x8551('0x28')]()[_0x8551('0x27')](function(){_0x3780db[_0x8551('0x1e')](0xcc)[_0x8551('0x1f')]();});}};}function handleEntityNotFound(_0x1a17c2,_0x4cd5f6){return function(_0x4113b0){if(!_0x4113b0){_0x1a17c2[_0x8551('0x1d')](0x194);}return _0x4113b0;};}function handleError(_0x1b7525,_0x401d44){_0x401d44=_0x401d44||0x1f4;return function(_0x2122bb){logger[_0x8551('0x29')](_0x2122bb[_0x8551('0x2a')]);if(_0x2122bb[_0x8551('0x2b')]){delete _0x2122bb[_0x8551('0x2b')];}_0x1b7525[_0x8551('0x1e')](_0x401d44)[_0x8551('0x2c')](_0x2122bb);};}exports[_0x8551('0x2d')]=function(_0x385a4d,_0x580fc2){var _0x123e4b={},_0x9007ee={},_0x22da3b={'count':0x0,'rows':[]};var _0x48ed06=_[_0x8551('0x2e')](db['SmsApplication'][_0x8551('0x2f')],function(_0x2783b7){return{'name':_0x2783b7[_0x8551('0x30')],'type':_0x2783b7[_0x8551('0x31')][_0x8551('0x32')]};});_0x9007ee[_0x8551('0x33')]=_[_0x8551('0x2e')](_0x48ed06,'name');_0x9007ee[_0x8551('0x34')]=_[_0x8551('0x35')](_0x385a4d['query']);_0x9007ee[_0x8551('0x36')]=_[_0x8551('0x37')](_0x9007ee[_0x8551('0x33')],_0x9007ee['query']);_0x123e4b[_0x8551('0x38')]=_['intersection'](_0x9007ee[_0x8551('0x33')],qs[_0x8551('0x39')](_0x385a4d[_0x8551('0x34')][_0x8551('0x39')]));_0x123e4b['attributes']=_0x123e4b[_0x8551('0x38')][_0x8551('0x3a')]?_0x123e4b['attributes']:_0x9007ee[_0x8551('0x33')];if(!_0x385a4d['query'][_0x8551('0x3b')](_0x8551('0x3c'))){_0x123e4b['limit']=qs['limit'](_0x385a4d[_0x8551('0x34')][_0x8551('0x21')]);_0x123e4b[_0x8551('0x23')]=qs[_0x8551('0x23')](_0x385a4d[_0x8551('0x34')]['offset']);}_0x123e4b[_0x8551('0x3d')]=qs['sort'](_0x385a4d[_0x8551('0x34')][_0x8551('0x3e')]);_0x123e4b[_0x8551('0x3f')]=qs[_0x8551('0x36')](_['pick'](_0x385a4d[_0x8551('0x34')],_0x9007ee[_0x8551('0x36')]),_0x48ed06);if(_0x385a4d['query'][_0x8551('0x40')]){_0x123e4b[_0x8551('0x3f')]=_[_0x8551('0x41')](_0x123e4b[_0x8551('0x3f')],{'$or':_[_0x8551('0x2e')](_0x48ed06,function(_0x5ae9ae){if(_0x5ae9ae[_0x8551('0x31')]!=='VIRTUAL'){var _0x4da60e={};_0x4da60e[_0x5ae9ae[_0x8551('0x2b')]]={'$like':'%'+_0x385a4d[_0x8551('0x34')][_0x8551('0x40')]+'%'};return _0x4da60e;}})});}_0x123e4b=_[_0x8551('0x41')]({},_0x123e4b,_0x385a4d[_0x8551('0x42')]);var _0x9c7906={'where':_0x123e4b['where']};return db['SmsApplication'][_0x8551('0x22')](_0x9c7906)[_0x8551('0x27')](function(_0x48fcee){_0x22da3b[_0x8551('0x22')]=_0x48fcee;if(_0x385a4d['query'][_0x8551('0x43')]){_0x123e4b[_0x8551('0x44')]=[{'all':!![]}];}return db['SmsApplication'][_0x8551('0x45')](_0x123e4b);})[_0x8551('0x27')](function(_0x1b8305){_0x22da3b['rows']=_0x1b8305;return _0x22da3b;})['then'](respondWithFilteredResult(_0x580fc2,_0x123e4b))['catch'](handleError(_0x580fc2,null));};exports[_0x8551('0x46')]=function(_0x2ab006,_0x8f8578){var _0xaca822={'raw':!![],'where':{'id':_0x2ab006['params']['id']}},_0x5303fc={};_0x5303fc[_0x8551('0x33')]=_[_0x8551('0x35')](db[_0x8551('0x47')][_0x8551('0x2f')]);_0x5303fc[_0x8551('0x34')]=_['keys'](_0x2ab006[_0x8551('0x34')]);_0x5303fc[_0x8551('0x36')]=_[_0x8551('0x37')](_0x5303fc[_0x8551('0x33')],_0x5303fc[_0x8551('0x34')]);_0xaca822['attributes']=_[_0x8551('0x37')](_0x5303fc[_0x8551('0x33')],qs[_0x8551('0x39')](_0x2ab006[_0x8551('0x34')][_0x8551('0x39')]));_0xaca822['attributes']=_0xaca822[_0x8551('0x38')]['length']?_0xaca822[_0x8551('0x38')]:_0x5303fc[_0x8551('0x33')];if(_0x2ab006[_0x8551('0x34')][_0x8551('0x43')]){_0xaca822[_0x8551('0x44')]=[{'all':!![]}];}_0xaca822=_[_0x8551('0x41')]({},_0xaca822,_0x2ab006['options']);return db[_0x8551('0x47')][_0x8551('0x48')](_0xaca822)[_0x8551('0x27')](handleEntityNotFound(_0x8f8578,null))['then'](respondWithResult(_0x8f8578,null))['catch'](handleError(_0x8f8578,null));};exports[_0x8551('0x49')]=function(_0x3a7429,_0x5adf71){return db[_0x8551('0x47')]['create'](_0x3a7429[_0x8551('0x4a')],{})[_0x8551('0x27')](respondWithResult(_0x5adf71,0xc9))[_0x8551('0x4b')](handleError(_0x5adf71,null));};exports[_0x8551('0x4c')]=function(_0x3a22af,_0x35ada1){if(_0x3a22af[_0x8551('0x4a')]['id']){delete _0x3a22af['body']['id'];}return db[_0x8551('0x47')][_0x8551('0x48')]({'where':{'id':_0x3a22af[_0x8551('0x4d')]['id']}})[_0x8551('0x27')](handleEntityNotFound(_0x35ada1,null))['then'](saveUpdates(_0x3a22af[_0x8551('0x4a')],null))['then'](respondWithResult(_0x35ada1,null))[_0x8551('0x4b')](handleError(_0x35ada1,null));};exports[_0x8551('0x28')]=function(_0xcae553,_0x57887f){return db['SmsApplication'][_0x8551('0x48')]({'where':{'id':_0xcae553[_0x8551('0x4d')]['id']}})[_0x8551('0x27')](handleEntityNotFound(_0x57887f,null))[_0x8551('0x27')](removeEntity(_0x57887f,null))['catch'](handleError(_0x57887f,null));};
\ No newline at end of file
index dd41e42..3a64edb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab28=['api','bluebird','request-promise','path','./smsApplication.attributes','define','sms_applications','utf8mb4','lodash','util','../../config/logger'];(function(_0x2476c9,_0x4d99d5){var _0x29a95d=function(_0x506377){while(--_0x506377){_0x2476c9['push'](_0x2476c9['shift']());}};_0x29a95d(++_0x4d99d5);}(_0xab28,0x15d));var _0x8ab2=function(_0x31a371,_0x50828e){_0x31a371=_0x31a371-0x0;var _0x2a5bd6=_0xab28[_0x31a371];return _0x2a5bd6;};'use strict';var _=require(_0x8ab2('0x0'));var util=require(_0x8ab2('0x1'));var logger=require(_0x8ab2('0x2'))(_0x8ab2('0x3'));var moment=require('moment');var BPromise=require(_0x8ab2('0x4'));var rp=require(_0x8ab2('0x5'));var fs=require('fs');var path=require(_0x8ab2('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x8ab2('0x7'));module['exports']=function(_0x8863d0,_0x53b62f){return _0x8863d0[_0x8ab2('0x8')]('SmsApplication',attributes,{'tableName':_0x8ab2('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x8ab2('0xa'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xf362=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','SmsApplication','sms_applications','utf8mb4_unicode_ci','util'];(function(_0x577a2e,_0x3816f0){var _0x3ac138=function(_0x5ba47c){while(--_0x5ba47c){_0x577a2e['push'](_0x577a2e['shift']());}};_0x3ac138(++_0x3816f0);}(_0xf362,0xb3));var _0x2f36=function(_0x1b4b5f,_0x2107b9){_0x1b4b5f=_0x1b4b5f-0x0;var _0x33086d=_0xf362[_0x1b4b5f];return _0x33086d;};'use strict';var _=require('lodash');var util=require(_0x2f36('0x0'));var logger=require('../../config/logger')(_0x2f36('0x1'));var moment=require(_0x2f36('0x2'));var BPromise=require(_0x2f36('0x3'));var rp=require(_0x2f36('0x4'));var fs=require('fs');var path=require(_0x2f36('0x5'));var rimraf=require(_0x2f36('0x6'));var config=require(_0x2f36('0x7'));var attributes=require('./smsApplication.attributes');module[_0x2f36('0x8')]=function(_0x4a6081,_0xa03f71){return _0x4a6081['define'](_0x2f36('0x9'),attributes,{'tableName':_0x2f36('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x2f36('0xb')});};
\ No newline at end of file
index 03c1acd..b5b18b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ed9=['stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','request','info','SmsApplication,\x20%s,\x20%s','debug','request\x20sent'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5ed9,0x1e9));var _0x95ed=function(_0x278e3c,_0x1c9cfd){_0x278e3c=_0x278e3c-0x0;var _0x3e2d9b=_0x5ed9[_0x278e3c];return _0x3e2d9b;};'use strict';var _=require(_0x95ed('0x0'));var util=require(_0x95ed('0x1'));var moment=require('moment');var BPromise=require(_0x95ed('0x2'));var rs=require(_0x95ed('0x3'));var fs=require('fs');var Redis=require(_0x95ed('0x4'));var db=require(_0x95ed('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x95ed('0x6'))(_0x95ed('0x7'));var config=require(_0x95ed('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x95ed('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x32bf25,_0xaa1eb1,_0x3753b5){return new BPromise(function(_0x1df51f,_0x46ed43){return client[_0x95ed('0xa')](_0x32bf25,_0x3753b5)['then'](function(_0x2b59f5){logger[_0x95ed('0xb')](_0x95ed('0xc'),_0xaa1eb1,'request\x20sent');logger[_0x95ed('0xd')]('SmsApplication,\x20%s,\x20%s,\x20%s',_0xaa1eb1,_0x95ed('0xe'),JSON[_0x95ed('0xf')](_0x2b59f5));if(_0x2b59f5[_0x95ed('0x10')]){if(_0x2b59f5[_0x95ed('0x10')][_0x95ed('0x11')]===0x1f4){logger['error']('SmsApplication,\x20%s,\x20%s',_0xaa1eb1,_0x2b59f5[_0x95ed('0x10')][_0x95ed('0x12')]);return _0x46ed43(_0x2b59f5['error']['message']);}logger[_0x95ed('0x10')](_0x95ed('0xc'),_0xaa1eb1,_0x2b59f5[_0x95ed('0x10')][_0x95ed('0x12')]);return _0x1df51f(_0x2b59f5['error'][_0x95ed('0x12')]);}else{logger[_0x95ed('0xb')](_0x95ed('0xc'),_0xaa1eb1,_0x95ed('0xe'));_0x1df51f(_0x2b59f5[_0x95ed('0x13')]['message']);}})[_0x95ed('0x14')](function(_0x54ad78){logger['error']('SmsApplication,\x20%s,\x20%s',_0xaa1eb1,_0x54ad78);_0x46ed43(_0x54ad78);});});}
\ No newline at end of file
+var _0x09df=['rpc','../../config/environment','request','then','info','request\x20sent','debug','error','code','SmsApplication,\x20%s,\x20%s','message','lodash','util','bluebird','../../mysqldb'];(function(_0x4aa6f9,_0x1fee17){var _0x23cfb4=function(_0x53cfdc){while(--_0x53cfdc){_0x4aa6f9['push'](_0x4aa6f9['shift']());}};_0x23cfb4(++_0x1fee17);}(_0x09df,0x164));var _0xf09d=function(_0x1dbaf7,_0x3d05b3){_0x1dbaf7=_0x1dbaf7-0x0;var _0x593f05=_0x09df[_0x1dbaf7];return _0x593f05;};'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')]('SmsApplication,\x20%s,\x20%s',_0x48b82f,_0xf09d('0x9'));logger[_0xf09d('0xa')]('SmsApplication,\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 f50fce1..0bd4501 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe605=['./smsInteraction.controller','get','isAuthenticated','index','show','/:id/messages','getMessages','/:id/download','download','post','addMessage','/:id/tags','tracked','sms','smsinteraction:addtags','addTags','/:id','update','delete','smsinteraction:destroy','removeTags','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x244166,_0x3eac5f){var _0x36df5f=function(_0xa4b477){while(--_0xa4b477){_0x244166['push'](_0x244166['shift']());}};_0x36df5f(++_0x3eac5f);}(_0xe605,0x92));var _0x5e60=function(_0x2bf29a,_0x22540f){_0x2bf29a=_0x2bf29a-0x0;var _0x3cf88b=_0xe605[_0x2bf29a];return _0x3cf88b;};'use strict';var multer=require(_0x5e60('0x0'));var util=require(_0x5e60('0x1'));var path=require('path');var timeout=require(_0x5e60('0x2'));var express=require(_0x5e60('0x3'));var router=express[_0x5e60('0x4')]();var fs_extra=require(_0x5e60('0x5'));var auth=require(_0x5e60('0x6'));var interaction=require(_0x5e60('0x7'));var config=require(_0x5e60('0x8'));var controller=require(_0x5e60('0x9'));router[_0x5e60('0xa')]('/',auth[_0x5e60('0xb')](),controller[_0x5e60('0xc')]);router[_0x5e60('0xa')]('/describe',auth[_0x5e60('0xb')](),controller['describe']);router['get']('/:id',auth[_0x5e60('0xb')](),controller[_0x5e60('0xd')]);router[_0x5e60('0xa')](_0x5e60('0xe'),auth[_0x5e60('0xb')](),controller[_0x5e60('0xf')]);router['get'](_0x5e60('0x10'),auth['isAuthenticated'](),controller[_0x5e60('0x11')]);router[_0x5e60('0x12')]('/',auth[_0x5e60('0xb')](),controller['create']);router[_0x5e60('0x12')](_0x5e60('0xe'),auth[_0x5e60('0xb')](),controller[_0x5e60('0x13')]);router[_0x5e60('0x12')](_0x5e60('0x14'),auth['isAuthenticated'](),interaction[_0x5e60('0x15')](_0x5e60('0x16'),_0x5e60('0x17')),controller[_0x5e60('0x18')]);router['put'](_0x5e60('0x19'),auth['isAuthenticated'](),interaction[_0x5e60('0x15')](_0x5e60('0x16'),'smsinteraction:update'),controller[_0x5e60('0x1a')]);router[_0x5e60('0x1b')](_0x5e60('0x19'),auth[_0x5e60('0xb')](),interaction['tracked'](_0x5e60('0x16'),_0x5e60('0x1c')),controller['destroy']);router[_0x5e60('0x1b')](_0x5e60('0x14'),auth[_0x5e60('0xb')](),controller[_0x5e60('0x1d')]);module[_0x5e60('0x1e')]=router;
\ No newline at end of file
+var _0x4213=['download','post','create','/:id/messages','addMessage','/:id/tags','tracked','smsinteraction:addtags','put','smsinteraction:update','update','sms','smsinteraction:destroy','destroy','delete','removeTags','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./smsInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/download'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x4213,0x77));var _0x3421=function(_0x171f55,_0x400b15){_0x171f55=_0x171f55-0x0;var _0x5ef2bf=_0x4213[_0x171f55];return _0x5ef2bf;};'use strict';var multer=require(_0x3421('0x0'));var util=require(_0x3421('0x1'));var path=require(_0x3421('0x2'));var timeout=require(_0x3421('0x3'));var express=require(_0x3421('0x4'));var router=express[_0x3421('0x5')]();var fs_extra=require(_0x3421('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x3421('0x7'));var config=require('../../config/environment');var controller=require(_0x3421('0x8'));router[_0x3421('0x9')]('/',auth[_0x3421('0xa')](),controller[_0x3421('0xb')]);router['get'](_0x3421('0xc'),auth[_0x3421('0xa')](),controller[_0x3421('0xd')]);router[_0x3421('0x9')](_0x3421('0xe'),auth['isAuthenticated'](),controller[_0x3421('0xf')]);router['get']('/:id/messages',auth[_0x3421('0xa')](),controller['getMessages']);router[_0x3421('0x9')](_0x3421('0x10'),auth[_0x3421('0xa')](),controller[_0x3421('0x11')]);router[_0x3421('0x12')]('/',auth[_0x3421('0xa')](),controller[_0x3421('0x13')]);router['post'](_0x3421('0x14'),auth[_0x3421('0xa')](),controller[_0x3421('0x15')]);router[_0x3421('0x12')](_0x3421('0x16'),auth[_0x3421('0xa')](),interaction[_0x3421('0x17')]('sms',_0x3421('0x18')),controller['addTags']);router[_0x3421('0x19')](_0x3421('0xe'),auth['isAuthenticated'](),interaction[_0x3421('0x17')]('sms',_0x3421('0x1a')),controller[_0x3421('0x1b')]);router['delete'](_0x3421('0xe'),auth[_0x3421('0xa')](),interaction[_0x3421('0x17')](_0x3421('0x1c'),_0x3421('0x1d')),controller[_0x3421('0x1e')]);router[_0x3421('0x1f')](_0x3421('0x16'),auth[_0x3421('0xa')](),controller[_0x3421('0x20')]);module[_0x3421('0x21')]=router;
\ No newline at end of file
index 875c446..ba6875a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5398=['ENUM','out','moment','exports','BOOLEAN','DATE','STRING'];(function(_0x346737,_0x3e6081){var _0x1ade2e=function(_0x15e50e){while(--_0x15e50e){_0x346737['push'](_0x346737['shift']());}};_0x1ade2e(++_0x3e6081);}(_0x5398,0xe2));var _0x8539=function(_0x316a9c,_0x5033a0){_0x316a9c=_0x316a9c-0x0;var _0x4d5635=_0x5398[_0x316a9c];return _0x4d5635;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x8539('0x0'));module[_0x8539('0x1')]={'closed':{'type':Sequelize[_0x8539('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x8539('0x3')]},'disposition':{'type':Sequelize[_0x8539('0x4')]},'secondDisposition':{'type':Sequelize[_0x8539('0x4')]},'thirdDisposition':{'type':Sequelize[_0x8539('0x4')]},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x8539('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x8539('0x5')]('in',_0x8539('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x8539('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x8539('0x5')]('in',_0x8539('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x4813=['exports','BOOLEAN','DATE','STRING','ENUM','out','sequelize','moment'];(function(_0x51b3ae,_0x150b95){var _0x4702fe=function(_0x77756e){while(--_0x77756e){_0x51b3ae['push'](_0x51b3ae['shift']());}};_0x4702fe(++_0x150b95);}(_0x4813,0x14e));var _0x3481=function(_0x21b6a6,_0x4b6b1e){_0x21b6a6=_0x21b6a6-0x0;var _0x13564c=_0x4813[_0x21b6a6];return _0x13564c;};'use strict';var Sequelize=require(_0x3481('0x0'));var moment=require(_0x3481('0x1'));module[_0x3481('0x2')]={'closed':{'type':Sequelize[_0x3481('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x3481('0x4')]},'disposition':{'type':Sequelize[_0x3481('0x5')]},'secondDisposition':{'type':Sequelize[_0x3481('0x5')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x3481('0x5')]},'phone':{'type':Sequelize[_0x3481('0x5')]},'read1stAt':{'type':Sequelize[_0x3481('0x4')]},'firstMsgDirection':{'type':Sequelize[_0x3481('0x6')]('in',_0x3481('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x3481('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index fd68451..58c64de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64b7=['buildExpression','type','start','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','text','body','some','compact','isEmpty','concat','createdAt','parse','$gte','$lte','null','\x20IS\x20NULL','read','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','contactName','DESC','t.id\x20IN\x20?','SmsAccountId','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','i.SmsAccountId\x20IN\x20?','sequelize','toString','keyBy','merge','SmsInteraction','a.key','Account.key','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','c.lastName','Contact.lastName','c.email','c.mobile','Contact.mobile','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','SmsInteractionId','rows','catch','show','params','create','addMessage','SmsMessage','omit','ids','getMessages','findOne','pick','format','options','includeAll','include','findAll','setTags','spread','Tag','emit','smsInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','User','fullname','CmContact','firstName','lastName','Messages','SmsAccount','Account','Owner','get','mkdirSync','Sms','N.A.','YYYY-MM-DD\x20HH:mm:ss','closed','disposition','System','views','downloadInteraction.ejs','createPdfFromHTML','log','err','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','sendStatus','status','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','destroy','then','end','error','stack','name','send','Users','TagIds','Tags','split','push','map','rawAttributes','fieldName','model','keys','query','intersection','attributes','fields','nolimit','order','sort','where','filters','select','field','color','from','ui.SmsInteractionId','user_has_sms_interactions','left_join','users','u.id\x20=\x20ui.UserId','sms_interactions','cm_contacts','o.id\x20=\x20i.UserId','sms_accounts','a.id\x20=\x20i.SmsAccountId','sms_messages','me.SmsInteractionId\x20=\x20i.id','sms_interaction_has_tags','it.SmsInteractionId\x20=\x20i.id','tools_tags','expr','search','parseSearch','sqlOperator','conditions','length','value','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?','find','ContactId'];(function(_0x42cc1f,_0xe9eb20){var _0x175df5=function(_0x2f3e22){while(--_0x2f3e22){_0x42cc1f['push'](_0x42cc1f['shift']());}};_0x175df5(++_0xe9eb20);}(_0x64b7,0x78));var _0x764b=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x64b7[_0x397e5f];return _0x5302b8;};'use strict';var emlformat=require(_0x764b('0x0'));var rimraf=require(_0x764b('0x1'));var zipdir=require(_0x764b('0x2'));var jsonpatch=require(_0x764b('0x3'));var rp=require(_0x764b('0x4'));var moment=require('moment');var BPromise=require(_0x764b('0x5'));var Mustache=require(_0x764b('0x6'));var util=require(_0x764b('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x764b('0x8'));var ejs=require(_0x764b('0x9'));var fs=require('fs');var fs_extra=require(_0x764b('0xa'));var _=require(_0x764b('0xb'));var squel=require(_0x764b('0xc'));var crypto=require(_0x764b('0xd'));var jsforce=require(_0x764b('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x764b('0xf'));var Papa=require(_0x764b('0x10'));var Redis=require(_0x764b('0x11'));var authService=require(_0x764b('0x12'));var qs=require(_0x764b('0x13'));var as=require(_0x764b('0x14'));var pdf=require('../../components/export/pdf');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x764b('0x15'));var utils=require('../../config/utils');var config=require(_0x764b('0x16'));var licenseUtil=require(_0x764b('0x17'));var db=require(_0x764b('0x18'))['db'];config[_0x764b('0x19')]=_[_0x764b('0x1a')](config['redis'],{'host':_0x764b('0x1b'),'port':0x18eb});var socket=require(_0x764b('0x1c'))(new Redis(config[_0x764b('0x19')]));require('./smsInteraction.socket')['register'](socket);function respondWithStatusCode(_0x7d064e,_0x1c9217){_0x1c9217=_0x1c9217||0xcc;return function(_0x35e4e3){if(_0x35e4e3){return _0x7d064e[_0x764b('0x1d')](_0x1c9217);}return _0x7d064e[_0x764b('0x1e')](_0x1c9217)['end']();};}function respondWithResult(_0x3253cb,_0x50cfcc){_0x50cfcc=_0x50cfcc||0xc8;return function(_0x44b2fd){if(_0x44b2fd){return _0x3253cb['status'](_0x50cfcc)['json'](_0x44b2fd);}};}function respondWithFilteredResult(_0x416265,_0xd9bb40){return function(_0x28b6f2){if(_0x28b6f2){var _0x3a1e3f=typeof _0xd9bb40[_0x764b('0x1f')]===_0x764b('0x20')&&typeof _0xd9bb40[_0x764b('0x21')]==='undefined';var _0x23f5cb=_0x28b6f2[_0x764b('0x22')];var _0xe8fdb8=_0x3a1e3f?0x0:_0xd9bb40[_0x764b('0x1f')];var _0x141eda=_0x3a1e3f?_0x28b6f2[_0x764b('0x22')]:_0xd9bb40[_0x764b('0x1f')]+_0xd9bb40['limit'];var _0x20b994;if(_0x141eda>=_0x23f5cb){_0x141eda=_0x23f5cb;_0x20b994=0xc8;}else{_0x20b994=0xce;}_0x416265['status'](_0x20b994);return _0x416265['set'](_0x764b('0x23'),_0xe8fdb8+'-'+_0x141eda+'/'+_0x23f5cb)[_0x764b('0x24')](_0x28b6f2);}return null;};}function patchUpdates(_0x5bb323){return function(_0x5c22fd){try{jsonpatch[_0x764b('0x25')](_0x5c22fd,_0x5bb323,!![]);}catch(_0xd3811d){return BPromise[_0x764b('0x26')](_0xd3811d);}return _0x5c22fd[_0x764b('0x27')]();};}function saveUpdates(_0x575803,_0x1a54ef){return function(_0x871be){if(_0x871be){return _0x871be[_0x764b('0x28')](_0x575803)['then'](function(_0x387adb){return _0x387adb;});}return null;};}function removeEntity(_0x504195,_0x596914){return function(_0x3716d0){if(_0x3716d0){return _0x3716d0[_0x764b('0x29')]()[_0x764b('0x2a')](function(){_0x504195['status'](0xcc)[_0x764b('0x2b')]();});}};}function handleEntityNotFound(_0x35d1f0,_0x1b2f17){return function(_0x21a9ad){if(!_0x21a9ad){_0x35d1f0[_0x764b('0x1d')](0x194);}return _0x21a9ad;};}function handleError(_0x422c94,_0x4dc006){_0x4dc006=_0x4dc006||0x1f4;return function(_0x3c125e){logger[_0x764b('0x2c')](_0x3c125e[_0x764b('0x2d')]);if(_0x3c125e['name']){delete _0x3c125e[_0x764b('0x2e')];}_0x422c94[_0x764b('0x1e')](_0x4dc006)[_0x764b('0x2f')](_0x3c125e);};}function getInteractionUsers(_0x42de9c,_0x4251e9){return new BPromise(function(_0x5106a2,_0x30fee8){try{if(_0x4251e9[_0x42de9c['id']]){_0x42de9c[_0x764b('0x30')]=_['map'](_0x4251e9[_0x42de9c['id']],function(_0x1e7fe1){return{'id':_0x1e7fe1['id'],'fullname':_0x1e7fe1['fullname']};});}}catch(_0x55a12b){_0x30fee8(_0x55a12b);}_0x5106a2(_0x42de9c);});}function getInteractionTags(_0x16f5f4,_0x50ac3c){return new BPromise(function(_0x2cb65c,_0xffafcd){try{if(_0x16f5f4[_0x764b('0x31')]){_0x16f5f4[_0x764b('0x32')]=[];_0x16f5f4[_0x764b('0x31')][_0x764b('0x33')](',')['forEach'](function(_0x51b522){_0x16f5f4[_0x764b('0x32')][_0x764b('0x34')](_0x50ac3c[_0x51b522]);});}delete _0x16f5f4[_0x764b('0x31')];}catch(_0x4dc9fc){_0xffafcd(_0x4dc9fc);}_0x2cb65c(_0x16f5f4);});}function updateSmsInteraction(_0x1cc061,_0x1185e4,_0x79ec1e){return new BPromise(function(_0x11465c,_0x2a42be){return getInteractionUsers(_0x1cc061,_0x79ec1e)[_0x764b('0x2a')](function(_0x5d928e){return getInteractionTags(_0x5d928e,_0x1185e4);})['then'](function(_0x23ff29){_0x11465c(_0x23ff29);})['catch'](function(_0x2b4c48){_0x2a42be(_0x2b4c48);});});}exports['index']=function(_0x474c08,_0x53e0da){var _0x54fdc3={},_0x4b5d28={},_0x2147a2={'count':0x0,'rows':[]};var _0x2349d8=_[_0x764b('0x35')](db['SmsInteraction'][_0x764b('0x36')],function(_0x3faead){return{'name':_0x3faead[_0x764b('0x37')],'type':_0x3faead['type']['key']};});_0x4b5d28[_0x764b('0x38')]=_[_0x764b('0x35')](_0x2349d8,_0x764b('0x2e'));_0x4b5d28['query']=_[_0x764b('0x39')](_0x474c08[_0x764b('0x3a')]);_0x4b5d28['filters']=_[_0x764b('0x3b')](_0x4b5d28['model'],_0x4b5d28[_0x764b('0x3a')]);_0x54fdc3[_0x764b('0x3c')]=_['intersection'](_0x4b5d28[_0x764b('0x38')],qs[_0x764b('0x3d')](_0x474c08['query'][_0x764b('0x3d')]));_0x54fdc3[_0x764b('0x3c')]=_0x54fdc3['attributes']['length']?_0x54fdc3[_0x764b('0x3c')]:_0x4b5d28[_0x764b('0x38')];if(!_0x474c08[_0x764b('0x3a')]['hasOwnProperty'](_0x764b('0x3e'))){_0x54fdc3[_0x764b('0x21')]=qs[_0x764b('0x21')](_0x474c08[_0x764b('0x3a')][_0x764b('0x21')]);_0x54fdc3['offset']=qs['offset'](_0x474c08[_0x764b('0x3a')]['offset']);}_0x54fdc3[_0x764b('0x3f')]=qs[_0x764b('0x40')](_0x474c08[_0x764b('0x3a')][_0x764b('0x40')]);_0x54fdc3[_0x764b('0x41')]=qs[_0x764b('0x42')](_['pick'](_0x474c08[_0x764b('0x3a')],_0x4b5d28[_0x764b('0x42')]),_0x2349d8);var _0x596da9=[];var _0xc8099a=squel[_0x764b('0x43')]()[_0x764b('0x44')]('id')[_0x764b('0x44')](_0x764b('0x2e'))['field'](_0x764b('0x45'))[_0x764b('0x46')]('tools_tags');var _0x2bad2c=squel['select']()[_0x764b('0x44')]('u.id')[_0x764b('0x44')]('u.fullname')[_0x764b('0x44')](_0x764b('0x47'))[_0x764b('0x46')](_0x764b('0x48'),'ui')[_0x764b('0x49')](_0x764b('0x4a'),'u',_0x764b('0x4b'));var _0x1e8dd6=squel[_0x764b('0x43')]()[_0x764b('0x46')](_0x764b('0x4c'),'i')['left_join'](_0x764b('0x4d'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')['left_join']('users','o',_0x764b('0x4e'))[_0x764b('0x49')](_0x764b('0x4f'),'a',_0x764b('0x50'))[_0x764b('0x49')](_0x764b('0x51'),'me',_0x764b('0x52'))['left_join'](_0x764b('0x53'),'it',_0x764b('0x54'))[_0x764b('0x49')](_0x764b('0x55'),'t','t.id\x20=\x20it.TagId');var _0x2303e1=squel['expr']();var _0xc436e8=[];var _0x4709df=squel[_0x764b('0x56')]();var _0x2f7b21;if(_0x474c08['query'][_0x764b('0x57')]){_0x2f7b21=as[_0x764b('0x58')](_0x474c08['query']['search']);var _0x483bab=_0x2f7b21[_0x764b('0x59')];for(var _0x58b440=0x0;_0x58b440<_0x2f7b21[_0x764b('0x5a')][_0x764b('0x5b')];_0x58b440++){var _0x15fdbb=_0x2f7b21[_0x764b('0x5a')][_0x58b440];var _0x40c8af='i';var _0x44f155=_['find'](_0x2349d8,[_0x764b('0x2e'),_0x15fdbb['field']]);if(!_0x44f155){switch(_0x15fdbb[_0x764b('0x44')]){case'unreadMessages':if(_0x15fdbb[_0x764b('0x5c')]==0x1){_0x1e8dd6['having']('`'+_0x15fdbb[_0x764b('0x44')]+'`\x20=\x200');}else{_0x1e8dd6[_0x764b('0x5d')]('`'+_0x15fdbb[_0x764b('0x44')]+'`\x20>\x200');}break;case _0x764b('0x5e'):if(_0x15fdbb[_0x764b('0x5f')]===_0x764b('0x60')){if(_0x15fdbb[_0x764b('0x5c')][_0x764b('0x33')]('\x20')[_0x764b('0x5b')]>0x1){_0x2303e1[_0x483bab](_0x764b('0x61'),qs[_0x764b('0x62')](_0x15fdbb[_0x764b('0x5c')]),null);}else{var _0x5d2a5f='%'+_0x15fdbb[_0x764b('0x5c')]+'%';_0x2303e1[_0x483bab](_0x764b('0x63'),_0x5d2a5f,_0x5d2a5f,_0x5d2a5f);}}else{_0x44f155=_[_0x764b('0x64')](_0x2349d8,[_0x764b('0x2e'),_0x764b('0x65')]);_0x15fdbb[_0x764b('0x44')]=_0x764b('0x65');_0x436754=as[_0x764b('0x66')](_0x40c8af,_0x44f155[_0x764b('0x67')],_0x15fdbb);_0x2303e1[_0x483bab](_0x436754['text'],_0x436754['value'][_0x764b('0x68')],_0x436754[_0x764b('0x5c')]['end']);}break;case'Tag':var _0x517eac=_0x15fdbb[_0x764b('0x5c')]['split'](',')['map'](function(_0x404361){return Number(_0x404361);});_0x517eac[_0x764b('0x69')](function(_0x5ae07b){_0x4709df['or'](_0x764b('0x6a'),'%,'+_0x5ae07b+',%');});_0xc436e8=_['union'](_0xc436e8,_0x517eac);break;case'User':if(_0x15fdbb[_0x764b('0x5f')]===_0x764b('0x60')){_0x2303e1[_0x483bab](_0x764b('0x6b'),'%'+_0x15fdbb['value']+'%',null);}else{_0x44f155=_[_0x764b('0x64')](_0x2349d8,[_0x764b('0x2e'),_0x764b('0x6c')]);_0x15fdbb[_0x764b('0x44')]=_0x764b('0x6c');_0x436754=as[_0x764b('0x66')](_0x40c8af,_0x44f155[_0x764b('0x67')],_0x15fdbb);_0x2303e1[_0x483bab](_0x436754[_0x764b('0x6d')],_0x436754[_0x764b('0x5c')][_0x764b('0x68')],_0x436754['value'][_0x764b('0x2b')]);}break;case _0x764b('0x6e'):_0x436754=as[_0x764b('0x66')]('me',null,_0x15fdbb);_0x2303e1[_0x483bab](_0x436754[_0x764b('0x6d')],_0x436754['value'][_0x764b('0x68')],_0x436754['value'][_0x764b('0x2b')]);break;}}else{var _0x436754=as[_0x764b('0x66')](_0x40c8af,_0x44f155[_0x764b('0x67')],_0x15fdbb);_0x2303e1[_0x483bab](_0x436754['text'],_0x436754[_0x764b('0x5c')][_0x764b('0x68')],_0x436754[_0x764b('0x5c')][_0x764b('0x2b')]);}}}else{var _0xf811bb=_(_0x474c08[_0x764b('0x3a')])[_0x764b('0x39')]()[_0x764b('0x35')](function(_0xf84dcf){return _[_0x764b('0x6f')](_0x2349d8,[_0x764b('0x2e'),_0xf84dcf])?_0xf84dcf:undefined;})[_0x764b('0x70')]()['value']();if(!_[_0x764b('0x71')](_0xf811bb)){_0xf811bb[_0x764b('0x69')](function(_0x1673f1){if(_0x1673f1==='SmsAccountId'){_0x1e8dd6[_0x764b('0x41')]('i.SmsAccountId\x20IN\x20?',[][_0x764b('0x72')](_0x474c08['query'][_0x1673f1]));}else if(_0x1673f1===_0x764b('0x73')){var _0x43e314=JSON[_0x764b('0x74')](_0x474c08[_0x764b('0x3a')][_0x1673f1])[_0x764b('0x75')];var _0xd30db4=JSON[_0x764b('0x74')](_0x474c08['query'][_0x1673f1])[_0x764b('0x76')];_0x1e8dd6[_0x764b('0x41')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x43e314,_0xd30db4);}else{if(_0x474c08[_0x764b('0x3a')][_0x1673f1]===_0x764b('0x77')){_0x1e8dd6[_0x764b('0x41')]('i.'+_0x1673f1+_0x764b('0x78'));}else{_0x1e8dd6[_0x764b('0x41')]('i.'+_0x1673f1+'\x20=\x20?',_0x474c08[_0x764b('0x3a')][_0x1673f1]);}}});}if(_0x474c08[_0x764b('0x3a')][_0x764b('0x79')]){if(_0x474c08[_0x764b('0x3a')][_0x764b('0x79')]==0x1){_0x1e8dd6[_0x764b('0x5d')]('`unreadMessages`\x20=\x200');}else{_0x1e8dd6[_0x764b('0x5d')]('`unreadMessages`\x20>\x200');}}if(_0x474c08[_0x764b('0x3a')]['tag']){_0xc436e8=_['isArray'](_0x474c08['query'][_0x764b('0x7a')])?_0x474c08[_0x764b('0x3a')]['tag']:new Array(_0x474c08['query'][_0x764b('0x7a')]);_0xc436e8[_0x764b('0x69')](function(_0x1226a0){_0x4709df['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x1226a0+',%');});}if(_0x474c08['query'][_0x764b('0x7b')]){var _0x50d550=_0x474c08[_0x764b('0x3a')][_0x764b('0x7b')][_0x764b('0x7c')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x764b('0x7d')](_0x50d550)){_0x2303e1['or'](_0x764b('0x7e'),_0x50d550+'%')['or'](_0x764b('0x7f'),_0x50d550+'%');}else{_0x2303e1['or'](_0x764b('0x80'),qs[_0x764b('0x62')](_0x50d550))['or'](_0x764b('0x81'),_0x50d550+'%');}}}_0x1e8dd6['where'](_0x2303e1);_0x1e8dd6[_0x764b('0x82')](_0x764b('0x83'));var _0x17383={'type':db[_0x764b('0x84')][_0x764b('0x85')]['SELECT'],'raw':!![]};var _0x4c1c7e=_0x1e8dd6[_0x764b('0x86')]();_0x4c1c7e[_0x764b('0x44')]('i.id');_0x4c1c7e[_0x764b('0x44')](_0x764b('0x87'),_0x764b('0x88'));if(_0x54fdc3[_0x764b('0x3f')]){_0x54fdc3[_0x764b('0x3f')][_0x764b('0x69')](function(_0x2093ce){var _0x23b8b1=_0x2093ce[0x0]===_0x764b('0x89')?_0x2093ce[0x0]:'i.'+_0x2093ce[0x0];_0x1e8dd6[_0x764b('0x3f')](_0x23b8b1,_0x2093ce[0x1]===_0x764b('0x8a')?![]:!![]);});}if(!_['isEmpty'](_0xc436e8)){_0x1e8dd6[_0x764b('0x5d')](_0x4709df);_0x4c1c7e['where'](_0x764b('0x8b'),_0xc436e8);}BPromise['resolve']()[_0x764b('0x2a')](function(){if(!_0x2f7b21){if(_0x474c08[_0x764b('0x3a')][_0x764b('0x8c')])return;_0x4c1c7e[_0x764b('0x41')](_0x764b('0x8d'));_0x1e8dd6[_0x764b('0x41')](_0x764b('0x8d'));return;}if(_0x474c08[_0x764b('0x8e')][_0x764b('0x8f')]!==_0x764b('0x90'))return;return _0x474c08[_0x764b('0x8e')][_0x764b('0x91')]({'attributes':['id'],'raw':!![]})[_0x764b('0x2a')](function(_0x8b3f37){if(_[_0x764b('0x71')](_0x8b3f37)){_0x4c1c7e[_0x764b('0x41')](_0x764b('0x92'));_0x1e8dd6[_0x764b('0x41')](_0x764b('0x92'));}else{_0x4c1c7e[_0x764b('0x41')](_0x764b('0x93'),_[_0x764b('0x35')](_0x8b3f37,'id'));_0x1e8dd6[_0x764b('0x41')](_0x764b('0x93'),_['map'](_0x8b3f37,'id'));}});})[_0x764b('0x2a')](function(){if(_0x474c08['user'][_0x764b('0x8f')]===_0x764b('0x90')&&!_0x2f7b21&&!_0x474c08[_0x764b('0x3a')][_0x764b('0x8c')])return[];return db[_0x764b('0x94')][_0x764b('0x3a')](_0x4c1c7e['toString'](),_0x17383);})[_0x764b('0x2a')](function(_0x4e9983){_0x2147a2[_0x764b('0x22')]=_0x4e9983['length'];if(_0x2147a2[_0x764b('0x22')]===0x0)return[];return db[_0x764b('0x94')][_0x764b('0x3a')](_0xc8099a[_0x764b('0x95')](),_0x17383)[_0x764b('0x2a')](function(_0x19589c){_0x596da9=_[_0x764b('0x96')](_0x19589c,'id');_0x17383=_[_0x764b('0x97')](_0x17383,{'model':db[_0x764b('0x98')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x474c08[_0x764b('0x3a')][_0x764b('0x3d')]){_0x54fdc3[_0x764b('0x3c')][_0x764b('0x69')](function(_0x4a2869){_0x1e8dd6[_0x764b('0x44')]('i.'+_0x4a2869);});}else{_0x1e8dd6[_0x764b('0x44')](_0x764b('0x87'),_0x764b('0x88'));_0x1e8dd6[_0x764b('0x44')](_0x764b('0x99'),_0x764b('0x9a'));_0x1e8dd6['field']('a.mandatoryDisposition',_0x764b('0x9b'));_0x1e8dd6[_0x764b('0x44')](_0x764b('0x9c'),_0x764b('0x89'));_0x1e8dd6['field'](_0x764b('0x9d'));_0x1e8dd6[_0x764b('0x44')](_0x764b('0x9e'),'Contact.firstName');_0x1e8dd6[_0x764b('0x44')](_0x764b('0x9f'),_0x764b('0xa0'));_0x1e8dd6[_0x764b('0x44')](_0x764b('0xa1'),'Contact.email');_0x1e8dd6[_0x764b('0x44')]('c.phone','Contact.phone');_0x1e8dd6[_0x764b('0x44')](_0x764b('0xa2'),_0x764b('0xa3'));_0x1e8dd6['field']('c.fax','Contact.fax');_0x1e8dd6[_0x764b('0x44')]('o.fullname','Owner.fullname');_0x1e8dd6[_0x764b('0x44')](_0x764b('0xa4'),_0x764b('0xa5'));_0x1e8dd6['field'](_0x764b('0xa6'),_0x764b('0x31'));}if(_0x54fdc3[_0x764b('0x21')])_0x1e8dd6[_0x764b('0x21')](_0x54fdc3['limit']);if(_0x54fdc3[_0x764b('0x1f')])_0x1e8dd6[_0x764b('0x1f')](_0x54fdc3[_0x764b('0x1f')]);return db['sequelize']['query'](_0x1e8dd6[_0x764b('0x95')](),_0x17383);})[_0x764b('0x2a')](function(_0x4b043e){if(_0x4b043e[_0x764b('0x5b')]>0x0)_0x2bad2c[_0x764b('0x41')]('ui.SmsInteractionId\x20IN\x20?',_[_0x764b('0x35')](_0x4b043e,'id'));return db[_0x764b('0x94')][_0x764b('0x3a')](_0x2bad2c[_0x764b('0x95')](),_0x17383)[_0x764b('0x2a')](function(_0x46f59d){var _0x493b0f=_['groupBy'](_0x46f59d,_0x764b('0xa7'));var _0x45fea4=[];_0x4b043e[_0x764b('0x69')](function(_0x2b7471){_0x45fea4[_0x764b('0x34')](updateSmsInteraction(_0x2b7471,_0x596da9,_0x493b0f));});return BPromise['all'](_0x45fea4);});});})[_0x764b('0x2a')](function(_0x395417){_0x2147a2[_0x764b('0xa8')]=_0x395417;return _0x2147a2;})[_0x764b('0x2a')](respondWithFilteredResult(_0x53e0da,_0x54fdc3))[_0x764b('0xa9')](handleError(_0x53e0da,null));};exports[_0x764b('0xaa')]=function(_0x7a666f,_0x3ce80b){var _0x5e6f82={'raw':![],'where':{'id':_0x7a666f[_0x764b('0xab')]['id']}},_0x1fbef5={};_0x1fbef5[_0x764b('0x38')]=_[_0x764b('0x39')](db['SmsInteraction']['rawAttributes']);_0x1fbef5[_0x764b('0x3a')]=_[_0x764b('0x39')](_0x7a666f[_0x764b('0x3a')]);_0x1fbef5['filters']=_['intersection'](_0x1fbef5[_0x764b('0x38')],_0x1fbef5['query']);_0x5e6f82['attributes']=_[_0x764b('0x3b')](_0x1fbef5['model'],qs[_0x764b('0x3d')](_0x7a666f[_0x764b('0x3a')][_0x764b('0x3d')]));_0x5e6f82[_0x764b('0x3c')]=_0x5e6f82['attributes'][_0x764b('0x5b')]?_0x5e6f82['attributes']:_0x1fbef5[_0x764b('0x38')];if(_0x7a666f[_0x764b('0x3a')]['includeAll']){_0x5e6f82['include']=[{'all':!![]}];}_0x5e6f82=_[_0x764b('0x97')]({},_0x5e6f82,_0x7a666f['options']);return db['SmsInteraction'][_0x764b('0x64')](_0x5e6f82)[_0x764b('0x2a')](handleEntityNotFound(_0x3ce80b,null))[_0x764b('0x2a')](respondWithResult(_0x3ce80b,null))[_0x764b('0xa9')](handleError(_0x3ce80b,null));};exports[_0x764b('0xac')]=function(_0x17e19d,_0x413a08){return db[_0x764b('0x98')][_0x764b('0xac')](_0x17e19d['body'],{})[_0x764b('0x2a')](respondWithResult(_0x413a08,0xc9))[_0x764b('0xa9')](handleError(_0x413a08,null));};exports[_0x764b('0x28')]=function(_0x1fda4f,_0x3c5149){if(_0x1fda4f['body']['id']){delete _0x1fda4f[_0x764b('0x6e')]['id'];}return db['SmsInteraction']['find']({'where':{'id':_0x1fda4f[_0x764b('0xab')]['id']}})[_0x764b('0x2a')](handleEntityNotFound(_0x3c5149,null))[_0x764b('0x2a')](saveUpdates(_0x1fda4f[_0x764b('0x6e')],null))[_0x764b('0x2a')](respondWithResult(_0x3c5149,null))[_0x764b('0xa9')](handleError(_0x3c5149,null));};exports[_0x764b('0x29')]=function(_0x934525,_0xdd151){return db[_0x764b('0x98')][_0x764b('0x64')]({'where':{'id':_0x934525[_0x764b('0xab')]['id']}})[_0x764b('0x2a')](handleEntityNotFound(_0xdd151,null))['then'](removeEntity(_0xdd151,null))['catch'](handleError(_0xdd151,null));};exports['describe']=function(_0x48894f,_0x47b953){return db['SmsInteraction']['describe']()[_0x764b('0x2a')](respondWithResult(_0x47b953,null))[_0x764b('0xa9')](handleError(_0x47b953,null));};exports[_0x764b('0xad')]=function(_0xa3db95,_0xb8bb4e,_0x255ec0){return db[_0x764b('0xae')]['find']({'where':{'id':_0xa3db95[_0x764b('0xab')]['id']}})[_0x764b('0x2a')](handleEntityNotFound(_0xb8bb4e,null))[_0x764b('0x2a')](function(_0x15dda4){if(_0x15dda4){return _0x15dda4['addMessage'](_0xa3db95['body']['ids'],_[_0x764b('0xaf')](_0xa3db95[_0x764b('0x6e')],[_0x764b('0xb0'),'id'])||{});}})[_0x764b('0x2a')](respondWithResult(_0xb8bb4e,null))[_0x764b('0xa9')](handleError(_0xb8bb4e,null));};exports[_0x764b('0xb1')]=function(_0x271d2d,_0x5d1971,_0x2ac8a5){var _0x468899={'raw':![],'where':{}};var _0x5d499e={};var _0x1d3746={'count':0x0,'rows':[]};return db[_0x764b('0x98')][_0x764b('0xb2')]({'where':{'id':_0x271d2d[_0x764b('0xab')]['id']}})[_0x764b('0x2a')](handleEntityNotFound(_0x5d1971,null))[_0x764b('0x2a')](function(_0x2b8057){if(_0x2b8057){_0x5d499e[_0x764b('0x38')]=_[_0x764b('0x39')](db['SmsMessage'][_0x764b('0x36')]);_0x5d499e[_0x764b('0x3a')]=_[_0x764b('0x39')](_0x271d2d['query']);_0x5d499e['filters']=_[_0x764b('0x3b')](_0x5d499e[_0x764b('0x38')],_0x5d499e[_0x764b('0x3a')]);_0x468899[_0x764b('0x3c')]=_['intersection'](_0x5d499e[_0x764b('0x38')],qs[_0x764b('0x3d')](_0x271d2d['query']['fields']));_0x468899[_0x764b('0x3c')]=_0x468899['attributes'][_0x764b('0x5b')]?_0x468899[_0x764b('0x3c')]:_0x5d499e[_0x764b('0x38')];if(!_0x271d2d[_0x764b('0x3a')]['hasOwnProperty'](_0x764b('0x3e'))){_0x468899[_0x764b('0x21')]=qs[_0x764b('0x21')](_0x271d2d[_0x764b('0x3a')][_0x764b('0x21')]);_0x468899[_0x764b('0x1f')]=qs[_0x764b('0x1f')](_0x271d2d[_0x764b('0x3a')][_0x764b('0x1f')]);}_0x468899[_0x764b('0x3f')]=qs[_0x764b('0x40')](_0x271d2d[_0x764b('0x3a')][_0x764b('0x40')]);_0x468899[_0x764b('0x41')]=qs[_0x764b('0x42')](_[_0x764b('0xb3')](_0x271d2d['query'],_0x5d499e[_0x764b('0x42')]));_0x468899[_0x764b('0x41')][_0x764b('0xa7')]=_0x2b8057['id'];if(_0x271d2d[_0x764b('0x3a')][_0x764b('0x7b')]){_0x468899['where']=_[_0x764b('0x97')](_0x468899[_0x764b('0x41')],{'$or':_[_0x764b('0x35')](_0x468899[_0x764b('0x3c')],function(_0x1872c7){var _0x277ff6={};_0x277ff6[_0x1872c7]={'$like':'%'+_0x271d2d[_0x764b('0x3a')]['filter']+'%'};return _0x277ff6;})});}if(_0x271d2d['query'][_0x764b('0x75')]){var _0x1dfca9=_0x271d2d[_0x764b('0x3a')]['$gte'][_0x764b('0x33')](',');var _0x5cd83a={};_0x5cd83a[_0x1dfca9[0x0]]={'$gte':moment(_0x1dfca9[0x1])[_0x764b('0xb4')]('YYYY-MM-DD\x20HH:mm:ss')};_0x468899[_0x764b('0x41')]=_[_0x764b('0x97')](_0x468899[_0x764b('0x41')],_0x5cd83a);}_0x468899=_[_0x764b('0x97')]({},_0x468899,_0x271d2d[_0x764b('0xb5')]);return db[_0x764b('0xae')][_0x764b('0x22')]({'where':_0x468899['where']})[_0x764b('0x2a')](function(_0x2e318a){_0x1d3746[_0x764b('0x22')]=_0x2e318a;if(_0x271d2d[_0x764b('0x3a')][_0x764b('0xb6')]){_0x468899[_0x764b('0xb7')]=[{'all':!![]}];}return db['SmsMessage'][_0x764b('0xb8')](_0x468899);})[_0x764b('0x2a')](function(_0x4f74b5){_0x1d3746[_0x764b('0xa8')]=_0x4f74b5;return _0x1d3746;});}})['then'](respondWithFilteredResult(_0x5d1971,_0x468899))[_0x764b('0xa9')](handleError(_0x5d1971,null));};exports['addTags']=function(_0x3d06ff,_0x3c64cb,_0x5140b9){return db['SmsInteraction'][_0x764b('0x64')]({'where':{'id':_0x3d06ff[_0x764b('0xab')]['id']}})[_0x764b('0x2a')](handleEntityNotFound(_0x3c64cb,null))['then'](function(_0x4d81ea){if(_0x4d81ea){return _0x4d81ea[_0x764b('0xb9')](_0x3d06ff[_0x764b('0x6e')][_0x764b('0xb0')],_['omit'](_0x3d06ff['body'],[_0x764b('0xb0'),'id'])||{})[_0x764b('0xba')](function(){return db[_0x764b('0xbb')]['findAll']({'attributes':['id',_0x764b('0x2e'),_0x764b('0x45')],'where':{'id':_0x3d06ff[_0x764b('0x6e')]['ids']}});})[_0x764b('0x2a')](function(_0x55b014){socket[_0x764b('0xbc')](_0x764b('0xbd'),{'id':Number(_0x3d06ff[_0x764b('0xab')]['id']),'tags':_0x55b014||[]});return{'id':Number(_0x3d06ff[_0x764b('0xab')]['id']),'tags':_0x55b014||[]};});}})[_0x764b('0x2a')](respondWithResult(_0x3c64cb,null))['catch'](handleError(_0x3c64cb,null));};exports[_0x764b('0xbe')]=function(_0x56d916,_0x54b382,_0x4b32da){return db[_0x764b('0x98')][_0x764b('0x64')]({'where':{'id':_0x56d916[_0x764b('0xab')]['id']}})[_0x764b('0x2a')](handleEntityNotFound(_0x54b382,null))['then'](function(_0x3f915d){if(_0x3f915d){return _0x3f915d[_0x764b('0xbe')](_0x56d916['query']['ids']);}})[_0x764b('0x2a')](respondWithStatusCode(_0x54b382,null))[_0x764b('0xa9')](handleError(_0x54b382,null));};exports[_0x764b('0xbf')]=function(_0x10339b,_0x28e7e0){var _0x4049b4=moment()[_0x764b('0xc0')]()['toString']();var _0x23d1e6=path[_0x764b('0xc1')](config[_0x764b('0xc2')],_0x764b('0xc3'),_0x764b('0xc4'),_0x764b('0xc5'));var _0x133adf=path[_0x764b('0xc1')](config['root'],_0x764b('0xc3'),_0x764b('0xc4'),_0x764b('0xc6'));var _0x4b4bcb=path['join'](_0x23d1e6,_0x4049b4);var _0x2bb5ff=util[_0x764b('0xb4')](_0x764b('0xc7'),_0x10339b[_0x764b('0xab')]['id'],_0x4049b4);var _0x156dca=path['join'](_0x23d1e6,_0x2bb5ff);var _0x4da000=[];_0x4da000[_0x764b('0x34')]({'model':db[_0x764b('0xc8')],'as':_0x764b('0xc8'),'attributes':['id',_0x764b('0xc9')],'raw':!![]});_0x4da000[_0x764b('0x34')]({'model':db[_0x764b('0xca')],'as':_0x764b('0x5e'),'attributes':['id',_0x764b('0xcb'),_0x764b('0xcc')],'raw':!![]});var _0xeb5333=[{'model':db[_0x764b('0xae')],'as':_0x764b('0xcd'),'attributes':['id','body',_0x764b('0x73'),'direction','secret',_0x764b('0x79')],'include':_0x4da000}];_0xeb5333[_0x764b('0x34')]({'model':db[_0x764b('0xce')],'as':_0x764b('0xcf'),'attributes':['id',_0x764b('0x2e')]});_0xeb5333[_0x764b('0x34')]({'model':db['User'],'as':_0x764b('0xd0'),'attributes':['id',_0x764b('0xc9')]});return db[_0x764b('0x98')]['find']({'where':{'id':_0x10339b[_0x764b('0xab')]['id']},'include':_0xeb5333})[_0x764b('0x2a')](handleEntityNotFound(_0x28e7e0,null))[_0x764b('0x2a')](function(_0xbe53ab){if(_0xbe53ab){var _0x4f4253=_0xbe53ab[_0x764b('0xd1')]({'plain':!![]});fs[_0x764b('0xd2')](_0x4b4bcb);var _0x5bd005={'channel':_0x764b('0xd3'),'account':_0x4f4253[_0x764b('0xcf')]['name'],'agent':_0x4f4253[_0x764b('0xd0')]?_0x4f4253[_0x764b('0xd0')][_0x764b('0xc9')]:_0x764b('0xd4'),'createdAt':moment(_0x4f4253[_0x764b('0x73')])[_0x764b('0xb4')](_0x764b('0xd5'))[_0x764b('0x95')](),'closedAt':_0x4f4253[_0x764b('0xd6')]?moment(_0x4f4253['closedAt'])[_0x764b('0xb4')]('YYYY-MM-DD\x20HH:mm:ss')[_0x764b('0x95')]():'','disposition':_0x4f4253[_0x764b('0xd7')],'messages':_(_0x4f4253[_0x764b('0xcd')])[_0x764b('0x7b')]({'secret':![]})[_0x764b('0x35')](function(_0x308ed6){return{'date':moment(_0x308ed6[_0x764b('0x73')])['format'](_0x764b('0xd5'))[_0x764b('0x95')](),'sender':_0x308ed6['direction']==='out'?_0x308ed6[_0x764b('0xc8')]?_0x308ed6[_0x764b('0xc8')]['fullname']:_0x764b('0xd8'):_0x308ed6[_0x764b('0x5e')]['firstName']+(_0x308ed6['Contact'][_0x764b('0xcc')]?'\x20'+_0x308ed6[_0x764b('0x5e')][_0x764b('0xcc')]:''),'body':_0x308ed6['body'],'direction':_0x308ed6['direction']==='out'?'A':'C','secret':_0x308ed6['secret'],'read':_0x308ed6['read']};})[_0x764b('0x5c')]()};return ejs['renderFile'](path[_0x764b('0xc1')](config[_0x764b('0xc2')],_0x764b('0xc3'),_0x764b('0xd9'),_0x764b('0xda')),{'interaction':_0x5bd005})[_0x764b('0x2a')](function(_0x40e955){var _0x511578=path[_0x764b('0xc1')](_0x4b4bcb,'transcript-'+_0x4f4253['id']+'-'+_0x4049b4+'.pdf');var _0x244963={'path':_0x511578,'channel':'Sms','interactionId':_0x4f4253['id']};return pdf[_0x764b('0xdb')](_0x40e955,_0x244963);})['then'](function(){return new BPromise(function(_0x413728,_0x5eecb0){zipdir(_0x4b4bcb,{'saveTo':_0x156dca},function(_0x5537e9,_0x1f10b2){if(_0x5537e9)return _0x5eecb0(_0x5537e9);return _0x413728(_0x1f10b2);});})[_0x764b('0x2a')](function(){return new BPromise(function(_0x2a69ea,_0x309588){rimraf(_0x4b4bcb,function(_0xa5f52d){if(_0xa5f52d)_0x309588(_0xa5f52d);return _0x2a69ea();});});})['then'](function(){return _0x28e7e0[_0x764b('0xbf')](_0x156dca,_0x2bb5ff,function(_0x2f6939){if(_0x2f6939){console[_0x764b('0xdc')](_0x764b('0xdd'),_0x2f6939);}else{fs['unlinkSync'](_0x156dca);}});});});}else{return _0x28e7e0[_0x764b('0x1d')](0xc8);}})[_0x764b('0xa9')](handleError(_0x28e7e0,null));};
\ No newline at end of file
+var _0xbf7f=['length','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','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','some','isEmpty','SmsAccountId','concat','createdAt','parse','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)','getFullTextValue','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','i.id','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','role','agent','i.SmsAccountId\x20IS\x20NULL','i.SmsAccountId\x20IN\x20?','toString','sequelize','keyBy','merge','a.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','c.lastName','c.email','Contact.email','c.mobile','Contact.mobile','c.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','SmsInteractionId','all','rows','catch','show','params','includeAll','options','describe','ids','getMessages','findOne','SmsMessage','$gte','addTags','setTags','omit','spread','emit','smsInteractionTags:save','removeTags','download','unix','join','server','files','tmp','root','attachments','format','CmContact','firstName','lastName','Messages','SmsAccount','Account','Owner','get','mkdirSync','Sms','N.A.','YYYY-MM-DD\x20HH:mm:ss','closed','out','System','direction','secret','views','downloadInteraction.ejs','transcript-','createPdfFromHTML','log','err','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/logger','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./smsInteraction.socket','register','sendStatus','status','offset','limit','undefined','count','set','Content-Range','json','apply','save','update','then','destroy','end','name','send','Users','fullname','Tags','TagIds','forEach','push','index','map','SmsInteraction','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','select','field','color','from','u.id','ui.SmsInteractionId','user_has_sms_interactions','left_join','users','u.id\x20=\x20ui.UserId','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','sms_accounts','a.id\x20=\x20i.SmsAccountId','sms_messages','me.SmsInteractionId\x20=\x20i.id','sms_interaction_has_tags','it.SmsInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions'];(function(_0x2dadb9,_0x42cfe6){var _0x2f0097=function(_0x21163f){while(--_0x21163f){_0x2dadb9['push'](_0x2dadb9['shift']());}};_0x2f0097(++_0x42cfe6);}(_0xbf7f,0x86));var _0xfbf7=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0xbf7f[_0x5bd426];return _0x23a7eb;};'use strict';var emlformat=require(_0xfbf7('0x0'));var rimraf=require(_0xfbf7('0x1'));var zipdir=require(_0xfbf7('0x2'));var jsonpatch=require(_0xfbf7('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xfbf7('0x4'));var Mustache=require(_0xfbf7('0x5'));var util=require(_0xfbf7('0x6'));var path=require(_0xfbf7('0x7'));var sox=require(_0xfbf7('0x8'));var csv=require(_0xfbf7('0x9'));var ejs=require(_0xfbf7('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xfbf7('0xb'));var crypto=require(_0xfbf7('0xc'));var jsforce=require(_0xfbf7('0xd'));var deskjs=require(_0xfbf7('0xe'));var toCsv=require(_0xfbf7('0x9'));var querystring=require(_0xfbf7('0xf'));var Papa=require(_0xfbf7('0x10'));var Redis=require(_0xfbf7('0x11'));var authService=require(_0xfbf7('0x12'));var qs=require(_0xfbf7('0x13'));var as=require(_0xfbf7('0x14'));var pdf=require(_0xfbf7('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xfbf7('0x16'))(_0xfbf7('0x17'));var utils=require('../../config/utils');var config=require(_0xfbf7('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xfbf7('0x19'))['db'];config['redis']=_['defaults'](config[_0xfbf7('0x1a')],{'host':_0xfbf7('0x1b'),'port':0x18eb});var socket=require(_0xfbf7('0x1c'))(new Redis(config[_0xfbf7('0x1a')]));require(_0xfbf7('0x1d'))[_0xfbf7('0x1e')](socket);function respondWithStatusCode(_0x137f44,_0x1df9b6){_0x1df9b6=_0x1df9b6||0xcc;return function(_0xea4731){if(_0xea4731){return _0x137f44[_0xfbf7('0x1f')](_0x1df9b6);}return _0x137f44[_0xfbf7('0x20')](_0x1df9b6)['end']();};}function respondWithResult(_0x5ca813,_0x28a9c0){_0x28a9c0=_0x28a9c0||0xc8;return function(_0x5d0738){if(_0x5d0738){return _0x5ca813[_0xfbf7('0x20')](_0x28a9c0)['json'](_0x5d0738);}};}function respondWithFilteredResult(_0x18b2b3,_0x2adc13){return function(_0xc16ff1){if(_0xc16ff1){var _0x1a08b7=typeof _0x2adc13[_0xfbf7('0x21')]==='undefined'&&typeof _0x2adc13[_0xfbf7('0x22')]===_0xfbf7('0x23');var _0x47420f=_0xc16ff1[_0xfbf7('0x24')];var _0x91ea7e=_0x1a08b7?0x0:_0x2adc13['offset'];var _0x2d5ea9=_0x1a08b7?_0xc16ff1['count']:_0x2adc13[_0xfbf7('0x21')]+_0x2adc13[_0xfbf7('0x22')];var _0x39a40e;if(_0x2d5ea9>=_0x47420f){_0x2d5ea9=_0x47420f;_0x39a40e=0xc8;}else{_0x39a40e=0xce;}_0x18b2b3[_0xfbf7('0x20')](_0x39a40e);return _0x18b2b3[_0xfbf7('0x25')](_0xfbf7('0x26'),_0x91ea7e+'-'+_0x2d5ea9+'/'+_0x47420f)[_0xfbf7('0x27')](_0xc16ff1);}return null;};}function patchUpdates(_0x2486c8){return function(_0xcf353c){try{jsonpatch[_0xfbf7('0x28')](_0xcf353c,_0x2486c8,!![]);}catch(_0x112813){return BPromise['reject'](_0x112813);}return _0xcf353c[_0xfbf7('0x29')]();};}function saveUpdates(_0x7440f1,_0x120e3c){return function(_0x29f936){if(_0x29f936){return _0x29f936[_0xfbf7('0x2a')](_0x7440f1)[_0xfbf7('0x2b')](function(_0x3f5f6e){return _0x3f5f6e;});}return null;};}function removeEntity(_0x5871d5,_0x3c9d0b){return function(_0x4317b3){if(_0x4317b3){return _0x4317b3[_0xfbf7('0x2c')]()[_0xfbf7('0x2b')](function(){_0x5871d5[_0xfbf7('0x20')](0xcc)[_0xfbf7('0x2d')]();});}};}function handleEntityNotFound(_0x56c9f4,_0x2bbfd6){return function(_0x19f26a){if(!_0x19f26a){_0x56c9f4[_0xfbf7('0x1f')](0x194);}return _0x19f26a;};}function handleError(_0x50b885,_0x2e09d4){_0x2e09d4=_0x2e09d4||0x1f4;return function(_0x72a05c){logger['error'](_0x72a05c['stack']);if(_0x72a05c['name']){delete _0x72a05c[_0xfbf7('0x2e')];}_0x50b885[_0xfbf7('0x20')](_0x2e09d4)[_0xfbf7('0x2f')](_0x72a05c);};}function getInteractionUsers(_0x6c22ec,_0x3892e8){return new BPromise(function(_0x38a1f4,_0x1a2d37){try{if(_0x3892e8[_0x6c22ec['id']]){_0x6c22ec[_0xfbf7('0x30')]=_['map'](_0x3892e8[_0x6c22ec['id']],function(_0x2f8caa){return{'id':_0x2f8caa['id'],'fullname':_0x2f8caa[_0xfbf7('0x31')]};});}}catch(_0x1323c4){_0x1a2d37(_0x1323c4);}_0x38a1f4(_0x6c22ec);});}function getInteractionTags(_0x1cb136,_0x384db1){return new BPromise(function(_0x12f31e,_0x503b19){try{if(_0x1cb136['TagIds']){_0x1cb136[_0xfbf7('0x32')]=[];_0x1cb136[_0xfbf7('0x33')]['split'](',')[_0xfbf7('0x34')](function(_0x49d36a){_0x1cb136[_0xfbf7('0x32')][_0xfbf7('0x35')](_0x384db1[_0x49d36a]);});}delete _0x1cb136['TagIds'];}catch(_0x46769d){_0x503b19(_0x46769d);}_0x12f31e(_0x1cb136);});}function updateSmsInteraction(_0x12a16c,_0xc63493,_0x5a2f7d){return new BPromise(function(_0x3ad601,_0x247ca5){return getInteractionUsers(_0x12a16c,_0x5a2f7d)[_0xfbf7('0x2b')](function(_0x19e81f){return getInteractionTags(_0x19e81f,_0xc63493);})['then'](function(_0x5dc690){_0x3ad601(_0x5dc690);})['catch'](function(_0x1298f7){_0x247ca5(_0x1298f7);});});}exports[_0xfbf7('0x36')]=function(_0x2cae23,_0x228461){var _0x53865a={},_0x4221cd={},_0x2c502a={'count':0x0,'rows':[]};var _0x26d149=_[_0xfbf7('0x37')](db[_0xfbf7('0x38')][_0xfbf7('0x39')],function(_0x2e2f76){return{'name':_0x2e2f76[_0xfbf7('0x3a')],'type':_0x2e2f76[_0xfbf7('0x3b')][_0xfbf7('0x3c')]};});_0x4221cd[_0xfbf7('0x3d')]=_[_0xfbf7('0x37')](_0x26d149,_0xfbf7('0x2e'));_0x4221cd[_0xfbf7('0x3e')]=_[_0xfbf7('0x3f')](_0x2cae23[_0xfbf7('0x3e')]);_0x4221cd[_0xfbf7('0x40')]=_[_0xfbf7('0x41')](_0x4221cd['model'],_0x4221cd[_0xfbf7('0x3e')]);_0x53865a['attributes']=_[_0xfbf7('0x41')](_0x4221cd['model'],qs[_0xfbf7('0x42')](_0x2cae23[_0xfbf7('0x3e')][_0xfbf7('0x42')]));_0x53865a[_0xfbf7('0x43')]=_0x53865a[_0xfbf7('0x43')]['length']?_0x53865a[_0xfbf7('0x43')]:_0x4221cd[_0xfbf7('0x3d')];if(!_0x2cae23[_0xfbf7('0x3e')][_0xfbf7('0x44')](_0xfbf7('0x45'))){_0x53865a[_0xfbf7('0x22')]=qs[_0xfbf7('0x22')](_0x2cae23[_0xfbf7('0x3e')]['limit']);_0x53865a[_0xfbf7('0x21')]=qs[_0xfbf7('0x21')](_0x2cae23[_0xfbf7('0x3e')][_0xfbf7('0x21')]);}_0x53865a[_0xfbf7('0x46')]=qs[_0xfbf7('0x47')](_0x2cae23[_0xfbf7('0x3e')]['sort']);_0x53865a[_0xfbf7('0x48')]=qs[_0xfbf7('0x40')](_[_0xfbf7('0x49')](_0x2cae23[_0xfbf7('0x3e')],_0x4221cd['filters']),_0x26d149);var _0x4f8776=[];var _0x10144a=squel[_0xfbf7('0x4a')]()[_0xfbf7('0x4b')]('id')[_0xfbf7('0x4b')](_0xfbf7('0x2e'))[_0xfbf7('0x4b')](_0xfbf7('0x4c'))[_0xfbf7('0x4d')]('tools_tags');var _0x50cc02=squel['select']()['field'](_0xfbf7('0x4e'))[_0xfbf7('0x4b')]('u.fullname')['field'](_0xfbf7('0x4f'))[_0xfbf7('0x4d')](_0xfbf7('0x50'),'ui')[_0xfbf7('0x51')](_0xfbf7('0x52'),'u',_0xfbf7('0x53'));var _0x1a1b77=squel['select']()['from']('sms_interactions','i')[_0xfbf7('0x51')](_0xfbf7('0x54'),'c',_0xfbf7('0x55'))[_0xfbf7('0x51')](_0xfbf7('0x52'),'o','o.id\x20=\x20i.UserId')[_0xfbf7('0x51')](_0xfbf7('0x56'),'a',_0xfbf7('0x57'))['left_join'](_0xfbf7('0x58'),'me',_0xfbf7('0x59'))[_0xfbf7('0x51')](_0xfbf7('0x5a'),'it',_0xfbf7('0x5b'))[_0xfbf7('0x51')]('tools_tags','t',_0xfbf7('0x5c'));var _0x1a6e3c=squel[_0xfbf7('0x5d')]();var _0x16618b=[];var _0x27c711=squel[_0xfbf7('0x5d')]();var _0x12e259;if(_0x2cae23[_0xfbf7('0x3e')][_0xfbf7('0x5e')]){_0x12e259=as[_0xfbf7('0x5f')](_0x2cae23['query']['search']);var _0x2aacbd=_0x12e259[_0xfbf7('0x60')];for(var _0xd1d3b6=0x0;_0xd1d3b6<_0x12e259[_0xfbf7('0x61')][_0xfbf7('0x62')];_0xd1d3b6++){var _0x52a869=_0x12e259[_0xfbf7('0x61')][_0xd1d3b6];var _0x59fe6b='i';var _0xd81e79=_['find'](_0x26d149,[_0xfbf7('0x2e'),_0x52a869[_0xfbf7('0x4b')]]);if(!_0xd81e79){switch(_0x52a869[_0xfbf7('0x4b')]){case _0xfbf7('0x63'):if(_0x52a869[_0xfbf7('0x64')]==0x1){_0x1a1b77[_0xfbf7('0x65')]('`'+_0x52a869['field']+_0xfbf7('0x66'));}else{_0x1a1b77[_0xfbf7('0x65')]('`'+_0x52a869[_0xfbf7('0x4b')]+_0xfbf7('0x67'));}break;case _0xfbf7('0x68'):if(_0x52a869[_0xfbf7('0x69')]===_0xfbf7('0x6a')){if(_0x52a869[_0xfbf7('0x64')][_0xfbf7('0x6b')]('\x20')[_0xfbf7('0x62')]>0x1){_0x1a6e3c[_0x2aacbd](_0xfbf7('0x6c'),qs['getFullTextValue'](_0x52a869['value']),null);}else{var _0x370250='%'+_0x52a869[_0xfbf7('0x64')]+'%';_0x1a6e3c[_0x2aacbd](_0xfbf7('0x6d'),_0x370250,_0x370250,_0x370250);}}else{_0xd81e79=_[_0xfbf7('0x6e')](_0x26d149,[_0xfbf7('0x2e'),_0xfbf7('0x6f')]);_0x52a869[_0xfbf7('0x4b')]=_0xfbf7('0x6f');_0x2d70d8=as[_0xfbf7('0x70')](_0x59fe6b,_0xd81e79['type'],_0x52a869);_0x1a6e3c[_0x2aacbd](_0x2d70d8[_0xfbf7('0x71')],_0x2d70d8['value'][_0xfbf7('0x72')],_0x2d70d8[_0xfbf7('0x64')][_0xfbf7('0x2d')]);}break;case _0xfbf7('0x73'):var _0x4ae884=_0x52a869[_0xfbf7('0x64')][_0xfbf7('0x6b')](',')[_0xfbf7('0x37')](function(_0x48a0b5){return Number(_0x48a0b5);});_0x4ae884[_0xfbf7('0x34')](function(_0x782d88){_0x27c711['or'](_0xfbf7('0x74'),'%,'+_0x782d88+',%');});_0x16618b=_[_0xfbf7('0x75')](_0x16618b,_0x4ae884);break;case _0xfbf7('0x76'):if(_0x52a869['operator']==='$substring'){_0x1a6e3c[_0x2aacbd](_0xfbf7('0x77'),'%'+_0x52a869[_0xfbf7('0x64')]+'%',null);}else{_0xd81e79=_[_0xfbf7('0x6e')](_0x26d149,['name',_0xfbf7('0x78')]);_0x52a869[_0xfbf7('0x4b')]=_0xfbf7('0x78');_0x2d70d8=as[_0xfbf7('0x70')](_0x59fe6b,_0xd81e79[_0xfbf7('0x3b')],_0x52a869);_0x1a6e3c[_0x2aacbd](_0x2d70d8['text'],_0x2d70d8[_0xfbf7('0x64')][_0xfbf7('0x72')],_0x2d70d8[_0xfbf7('0x64')][_0xfbf7('0x2d')]);}break;case _0xfbf7('0x79'):_0x2d70d8=as['buildExpression']('me',null,_0x52a869);_0x1a6e3c[_0x2aacbd](_0x2d70d8[_0xfbf7('0x71')],_0x2d70d8[_0xfbf7('0x64')][_0xfbf7('0x72')],_0x2d70d8[_0xfbf7('0x64')][_0xfbf7('0x2d')]);break;}}else{var _0x2d70d8=as[_0xfbf7('0x70')](_0x59fe6b,_0xd81e79['type'],_0x52a869);_0x1a6e3c[_0x2aacbd](_0x2d70d8['text'],_0x2d70d8[_0xfbf7('0x64')][_0xfbf7('0x72')],_0x2d70d8[_0xfbf7('0x64')]['end']);}}}else{var _0x2cc8c1=_(_0x2cae23['query'])[_0xfbf7('0x3f')]()[_0xfbf7('0x37')](function(_0x2eb0a3){return _[_0xfbf7('0x7a')](_0x26d149,[_0xfbf7('0x2e'),_0x2eb0a3])?_0x2eb0a3:undefined;})['compact']()[_0xfbf7('0x64')]();if(!_[_0xfbf7('0x7b')](_0x2cc8c1)){_0x2cc8c1[_0xfbf7('0x34')](function(_0x3c7fd5){if(_0x3c7fd5===_0xfbf7('0x7c')){_0x1a1b77[_0xfbf7('0x48')]('i.SmsAccountId\x20IN\x20?',[][_0xfbf7('0x7d')](_0x2cae23[_0xfbf7('0x3e')][_0x3c7fd5]));}else if(_0x3c7fd5===_0xfbf7('0x7e')){var _0x589708=JSON[_0xfbf7('0x7f')](_0x2cae23[_0xfbf7('0x3e')][_0x3c7fd5])['$gte'];var _0x2ef0bf=JSON[_0xfbf7('0x7f')](_0x2cae23['query'][_0x3c7fd5])['$lte'];_0x1a1b77[_0xfbf7('0x48')](_0xfbf7('0x80'),_0x589708,_0x2ef0bf);}else{if(_0x2cae23[_0xfbf7('0x3e')][_0x3c7fd5]===_0xfbf7('0x81')){_0x1a1b77[_0xfbf7('0x48')]('i.'+_0x3c7fd5+_0xfbf7('0x82'));}else{_0x1a1b77[_0xfbf7('0x48')]('i.'+_0x3c7fd5+_0xfbf7('0x83'),_0x2cae23[_0xfbf7('0x3e')][_0x3c7fd5]);}}});}if(_0x2cae23[_0xfbf7('0x3e')][_0xfbf7('0x84')]){if(_0x2cae23[_0xfbf7('0x3e')][_0xfbf7('0x84')]==0x1){_0x1a1b77[_0xfbf7('0x65')](_0xfbf7('0x85'));}else{_0x1a1b77[_0xfbf7('0x65')](_0xfbf7('0x86'));}}if(_0x2cae23[_0xfbf7('0x3e')][_0xfbf7('0x87')]){_0x16618b=_[_0xfbf7('0x88')](_0x2cae23[_0xfbf7('0x3e')]['tag'])?_0x2cae23[_0xfbf7('0x3e')][_0xfbf7('0x87')]:new Array(_0x2cae23[_0xfbf7('0x3e')]['tag']);_0x16618b['forEach'](function(_0x2ad539){_0x27c711['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x2ad539+',%');});}if(_0x2cae23[_0xfbf7('0x3e')][_0xfbf7('0x89')]){var _0x4fc43e=_0x2cae23[_0xfbf7('0x3e')][_0xfbf7('0x89')][_0xfbf7('0x8a')]('\x5c','\x5c\x5c')[_0xfbf7('0x8a')](/'/g,'\x27\x27');if(qs[_0xfbf7('0x8b')](_0x4fc43e)){_0x1a6e3c['or'](_0xfbf7('0x8c'),_0x4fc43e+'%')['or'](_0xfbf7('0x8d'),_0x4fc43e+'%');}else{_0x1a6e3c['or'](_0xfbf7('0x8e'),qs[_0xfbf7('0x8f')](_0x4fc43e))['or'](_0xfbf7('0x90'),_0x4fc43e+'%');}}}_0x1a1b77[_0xfbf7('0x48')](_0x1a6e3c);_0x1a1b77['group'](_0xfbf7('0x91'));var _0x177ef9={'type':db['Sequelize']['QueryTypes'][_0xfbf7('0x92')],'raw':!![]};var _0x12d339=_0x1a1b77[_0xfbf7('0x93')]();_0x12d339[_0xfbf7('0x4b')](_0xfbf7('0x91'));_0x12d339[_0xfbf7('0x4b')](_0xfbf7('0x94'),_0xfbf7('0x63'));if(_0x53865a[_0xfbf7('0x46')]){_0x53865a['order'][_0xfbf7('0x34')](function(_0x3f32af){var _0x1d1ddd=_0x3f32af[0x0]===_0xfbf7('0x95')?_0x3f32af[0x0]:'i.'+_0x3f32af[0x0];_0x1a1b77[_0xfbf7('0x46')](_0x1d1ddd,_0x3f32af[0x1]===_0xfbf7('0x96')?![]:!![]);});}if(!_[_0xfbf7('0x7b')](_0x16618b)){_0x1a1b77[_0xfbf7('0x65')](_0x27c711);_0x12d339[_0xfbf7('0x48')](_0xfbf7('0x97'),_0x16618b);}BPromise['resolve']()['then'](function(){if(!_0x12e259){if(_0x2cae23['query'][_0xfbf7('0x7c')])return;_0x12d339[_0xfbf7('0x48')](_0xfbf7('0x98'));_0x1a1b77[_0xfbf7('0x48')](_0xfbf7('0x98'));return;}if(_0x2cae23[_0xfbf7('0x99')][_0xfbf7('0x9a')]!==_0xfbf7('0x9b'))return;return _0x2cae23[_0xfbf7('0x99')]['getSmsAccounts']({'attributes':['id'],'raw':!![]})['then'](function(_0x57b4c4){if(_[_0xfbf7('0x7b')](_0x57b4c4)){_0x12d339[_0xfbf7('0x48')](_0xfbf7('0x9c'));_0x1a1b77[_0xfbf7('0x48')](_0xfbf7('0x9c'));}else{_0x12d339[_0xfbf7('0x48')](_0xfbf7('0x9d'),_[_0xfbf7('0x37')](_0x57b4c4,'id'));_0x1a1b77[_0xfbf7('0x48')](_0xfbf7('0x9d'),_[_0xfbf7('0x37')](_0x57b4c4,'id'));}});})[_0xfbf7('0x2b')](function(){if(_0x2cae23['user'][_0xfbf7('0x9a')]==='agent'&&!_0x12e259&&!_0x2cae23[_0xfbf7('0x3e')][_0xfbf7('0x7c')])return[];return db['sequelize'][_0xfbf7('0x3e')](_0x12d339[_0xfbf7('0x9e')](),_0x177ef9);})[_0xfbf7('0x2b')](function(_0x43b245){_0x2c502a[_0xfbf7('0x24')]=_0x43b245[_0xfbf7('0x62')];if(_0x2c502a[_0xfbf7('0x24')]===0x0)return[];return db[_0xfbf7('0x9f')][_0xfbf7('0x3e')](_0x10144a[_0xfbf7('0x9e')](),_0x177ef9)[_0xfbf7('0x2b')](function(_0x5d1727){_0x4f8776=_[_0xfbf7('0xa0')](_0x5d1727,'id');_0x177ef9=_[_0xfbf7('0xa1')](_0x177ef9,{'model':db[_0xfbf7('0x38')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2cae23[_0xfbf7('0x3e')][_0xfbf7('0x42')]){_0x53865a[_0xfbf7('0x43')][_0xfbf7('0x34')](function(_0x538c36){_0x1a1b77[_0xfbf7('0x4b')]('i.'+_0x538c36);});}else{_0x1a1b77[_0xfbf7('0x4b')](_0xfbf7('0x94'),'unreadMessages');_0x1a1b77['field'](_0xfbf7('0xa2'),'Account.key');_0x1a1b77[_0xfbf7('0x4b')](_0xfbf7('0xa3'),_0xfbf7('0xa4'));_0x1a1b77[_0xfbf7('0x4b')](_0xfbf7('0xa5'),_0xfbf7('0x95'));_0x1a1b77['field'](_0xfbf7('0xa6'));_0x1a1b77['field'](_0xfbf7('0xa7'),'Contact.firstName');_0x1a1b77['field'](_0xfbf7('0xa8'),'Contact.lastName');_0x1a1b77[_0xfbf7('0x4b')](_0xfbf7('0xa9'),_0xfbf7('0xaa'));_0x1a1b77[_0xfbf7('0x4b')]('c.phone','Contact.phone');_0x1a1b77['field'](_0xfbf7('0xab'),_0xfbf7('0xac'));_0x1a1b77[_0xfbf7('0x4b')](_0xfbf7('0xad'),'Contact.fax');_0x1a1b77[_0xfbf7('0x4b')](_0xfbf7('0xae'),_0xfbf7('0xaf'));_0x1a1b77[_0xfbf7('0x4b')](_0xfbf7('0xb0'),_0xfbf7('0xb1'));_0x1a1b77[_0xfbf7('0x4b')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0xfbf7('0x33'));}if(_0x53865a[_0xfbf7('0x22')])_0x1a1b77[_0xfbf7('0x22')](_0x53865a[_0xfbf7('0x22')]);if(_0x53865a[_0xfbf7('0x21')])_0x1a1b77[_0xfbf7('0x21')](_0x53865a[_0xfbf7('0x21')]);return db[_0xfbf7('0x9f')]['query'](_0x1a1b77[_0xfbf7('0x9e')](),_0x177ef9);})[_0xfbf7('0x2b')](function(_0x2f9a49){if(_0x2f9a49[_0xfbf7('0x62')]>0x0)_0x50cc02['where']('ui.SmsInteractionId\x20IN\x20?',_['map'](_0x2f9a49,'id'));return db[_0xfbf7('0x9f')]['query'](_0x50cc02[_0xfbf7('0x9e')](),_0x177ef9)[_0xfbf7('0x2b')](function(_0x2071a6){var _0x34d336=_['groupBy'](_0x2071a6,_0xfbf7('0xb2'));var _0x5efb41=[];_0x2f9a49['forEach'](function(_0x409912){_0x5efb41[_0xfbf7('0x35')](updateSmsInteraction(_0x409912,_0x4f8776,_0x34d336));});return BPromise[_0xfbf7('0xb3')](_0x5efb41);});});})[_0xfbf7('0x2b')](function(_0x1a35df){_0x2c502a[_0xfbf7('0xb4')]=_0x1a35df;return _0x2c502a;})[_0xfbf7('0x2b')](respondWithFilteredResult(_0x228461,_0x53865a))[_0xfbf7('0xb5')](handleError(_0x228461,null));};exports[_0xfbf7('0xb6')]=function(_0x21e8e5,_0x5a87de){var _0x1dde6a={'raw':![],'where':{'id':_0x21e8e5[_0xfbf7('0xb7')]['id']}},_0x2b46d0={};_0x2b46d0[_0xfbf7('0x3d')]=_[_0xfbf7('0x3f')](db[_0xfbf7('0x38')][_0xfbf7('0x39')]);_0x2b46d0[_0xfbf7('0x3e')]=_[_0xfbf7('0x3f')](_0x21e8e5[_0xfbf7('0x3e')]);_0x2b46d0[_0xfbf7('0x40')]=_[_0xfbf7('0x41')](_0x2b46d0[_0xfbf7('0x3d')],_0x2b46d0[_0xfbf7('0x3e')]);_0x1dde6a[_0xfbf7('0x43')]=_['intersection'](_0x2b46d0[_0xfbf7('0x3d')],qs['fields'](_0x21e8e5[_0xfbf7('0x3e')]['fields']));_0x1dde6a[_0xfbf7('0x43')]=_0x1dde6a['attributes']['length']?_0x1dde6a[_0xfbf7('0x43')]:_0x2b46d0[_0xfbf7('0x3d')];if(_0x21e8e5[_0xfbf7('0x3e')][_0xfbf7('0xb8')]){_0x1dde6a['include']=[{'all':!![]}];}_0x1dde6a=_[_0xfbf7('0xa1')]({},_0x1dde6a,_0x21e8e5[_0xfbf7('0xb9')]);return db[_0xfbf7('0x38')][_0xfbf7('0x6e')](_0x1dde6a)[_0xfbf7('0x2b')](handleEntityNotFound(_0x5a87de,null))[_0xfbf7('0x2b')](respondWithResult(_0x5a87de,null))[_0xfbf7('0xb5')](handleError(_0x5a87de,null));};exports['create']=function(_0x13f1db,_0x188be1){return db[_0xfbf7('0x38')]['create'](_0x13f1db[_0xfbf7('0x79')],{})[_0xfbf7('0x2b')](respondWithResult(_0x188be1,0xc9))[_0xfbf7('0xb5')](handleError(_0x188be1,null));};exports[_0xfbf7('0x2a')]=function(_0x360902,_0x3427b3){if(_0x360902[_0xfbf7('0x79')]['id']){delete _0x360902[_0xfbf7('0x79')]['id'];}return db[_0xfbf7('0x38')][_0xfbf7('0x6e')]({'where':{'id':_0x360902['params']['id']}})[_0xfbf7('0x2b')](handleEntityNotFound(_0x3427b3,null))[_0xfbf7('0x2b')](saveUpdates(_0x360902[_0xfbf7('0x79')],null))['then'](respondWithResult(_0x3427b3,null))['catch'](handleError(_0x3427b3,null));};exports[_0xfbf7('0x2c')]=function(_0x1a5fb2,_0x296585){return db[_0xfbf7('0x38')][_0xfbf7('0x6e')]({'where':{'id':_0x1a5fb2[_0xfbf7('0xb7')]['id']}})['then'](handleEntityNotFound(_0x296585,null))['then'](removeEntity(_0x296585,null))['catch'](handleError(_0x296585,null));};exports[_0xfbf7('0xba')]=function(_0x3b6af8,_0x2f19de){return db[_0xfbf7('0x38')]['describe']()[_0xfbf7('0x2b')](respondWithResult(_0x2f19de,null))[_0xfbf7('0xb5')](handleError(_0x2f19de,null));};exports['addMessage']=function(_0x42b55e,_0x45616e,_0x38085c){return db['SmsMessage']['find']({'where':{'id':_0x42b55e[_0xfbf7('0xb7')]['id']}})['then'](handleEntityNotFound(_0x45616e,null))[_0xfbf7('0x2b')](function(_0x14138b){if(_0x14138b){return _0x14138b['addMessage'](_0x42b55e[_0xfbf7('0x79')][_0xfbf7('0xbb')],_['omit'](_0x42b55e['body'],['ids','id'])||{});}})[_0xfbf7('0x2b')](respondWithResult(_0x45616e,null))[_0xfbf7('0xb5')](handleError(_0x45616e,null));};exports[_0xfbf7('0xbc')]=function(_0x4dc2b8,_0xb09bef,_0x5ac17d){var _0x57d8f4={'raw':![],'where':{}};var _0x159299={};var _0x426517={'count':0x0,'rows':[]};return db[_0xfbf7('0x38')][_0xfbf7('0xbd')]({'where':{'id':_0x4dc2b8['params']['id']}})['then'](handleEntityNotFound(_0xb09bef,null))['then'](function(_0x53fa00){if(_0x53fa00){_0x159299['model']=_[_0xfbf7('0x3f')](db[_0xfbf7('0xbe')][_0xfbf7('0x39')]);_0x159299[_0xfbf7('0x3e')]=_['keys'](_0x4dc2b8[_0xfbf7('0x3e')]);_0x159299[_0xfbf7('0x40')]=_[_0xfbf7('0x41')](_0x159299[_0xfbf7('0x3d')],_0x159299[_0xfbf7('0x3e')]);_0x57d8f4[_0xfbf7('0x43')]=_['intersection'](_0x159299['model'],qs['fields'](_0x4dc2b8['query'][_0xfbf7('0x42')]));_0x57d8f4[_0xfbf7('0x43')]=_0x57d8f4[_0xfbf7('0x43')][_0xfbf7('0x62')]?_0x57d8f4[_0xfbf7('0x43')]:_0x159299['model'];if(!_0x4dc2b8[_0xfbf7('0x3e')][_0xfbf7('0x44')](_0xfbf7('0x45'))){_0x57d8f4['limit']=qs[_0xfbf7('0x22')](_0x4dc2b8['query'][_0xfbf7('0x22')]);_0x57d8f4[_0xfbf7('0x21')]=qs[_0xfbf7('0x21')](_0x4dc2b8['query'][_0xfbf7('0x21')]);}_0x57d8f4[_0xfbf7('0x46')]=qs['sort'](_0x4dc2b8['query'][_0xfbf7('0x47')]);_0x57d8f4[_0xfbf7('0x48')]=qs['filters'](_[_0xfbf7('0x49')](_0x4dc2b8[_0xfbf7('0x3e')],_0x159299[_0xfbf7('0x40')]));_0x57d8f4[_0xfbf7('0x48')][_0xfbf7('0xb2')]=_0x53fa00['id'];if(_0x4dc2b8[_0xfbf7('0x3e')][_0xfbf7('0x89')]){_0x57d8f4[_0xfbf7('0x48')]=_['merge'](_0x57d8f4[_0xfbf7('0x48')],{'$or':_[_0xfbf7('0x37')](_0x57d8f4[_0xfbf7('0x43')],function(_0x4c1b11){var _0xf533e8={};_0xf533e8[_0x4c1b11]={'$like':'%'+_0x4dc2b8[_0xfbf7('0x3e')][_0xfbf7('0x89')]+'%'};return _0xf533e8;})});}if(_0x4dc2b8[_0xfbf7('0x3e')][_0xfbf7('0xbf')]){var _0x3788d8=_0x4dc2b8[_0xfbf7('0x3e')]['$gte'][_0xfbf7('0x6b')](',');var _0x4572ee={};_0x4572ee[_0x3788d8[0x0]]={'$gte':moment(_0x3788d8[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x57d8f4[_0xfbf7('0x48')]=_[_0xfbf7('0xa1')](_0x57d8f4[_0xfbf7('0x48')],_0x4572ee);}_0x57d8f4=_[_0xfbf7('0xa1')]({},_0x57d8f4,_0x4dc2b8[_0xfbf7('0xb9')]);return db[_0xfbf7('0xbe')][_0xfbf7('0x24')]({'where':_0x57d8f4['where']})[_0xfbf7('0x2b')](function(_0x1a2cdc){_0x426517['count']=_0x1a2cdc;if(_0x4dc2b8['query']['includeAll']){_0x57d8f4['include']=[{'all':!![]}];}return db[_0xfbf7('0xbe')]['findAll'](_0x57d8f4);})['then'](function(_0x20cd28){_0x426517[_0xfbf7('0xb4')]=_0x20cd28;return _0x426517;});}})['then'](respondWithFilteredResult(_0xb09bef,_0x57d8f4))['catch'](handleError(_0xb09bef,null));};exports[_0xfbf7('0xc0')]=function(_0x5a7b48,_0x7e0677,_0x8e54f0){return db[_0xfbf7('0x38')][_0xfbf7('0x6e')]({'where':{'id':_0x5a7b48['params']['id']}})[_0xfbf7('0x2b')](handleEntityNotFound(_0x7e0677,null))[_0xfbf7('0x2b')](function(_0x35cd69){if(_0x35cd69){return _0x35cd69[_0xfbf7('0xc1')](_0x5a7b48['body'][_0xfbf7('0xbb')],_[_0xfbf7('0xc2')](_0x5a7b48[_0xfbf7('0x79')],['ids','id'])||{})[_0xfbf7('0xc3')](function(){return db['Tag']['findAll']({'attributes':['id',_0xfbf7('0x2e'),'color'],'where':{'id':_0x5a7b48[_0xfbf7('0x79')]['ids']}});})[_0xfbf7('0x2b')](function(_0x5a151a){socket[_0xfbf7('0xc4')](_0xfbf7('0xc5'),{'id':Number(_0x5a7b48[_0xfbf7('0xb7')]['id']),'tags':_0x5a151a||[]});return{'id':Number(_0x5a7b48[_0xfbf7('0xb7')]['id']),'tags':_0x5a151a||[]};});}})[_0xfbf7('0x2b')](respondWithResult(_0x7e0677,null))[_0xfbf7('0xb5')](handleError(_0x7e0677,null));};exports[_0xfbf7('0xc6')]=function(_0x524829,_0x2f3b55,_0x5083e1){return db[_0xfbf7('0x38')][_0xfbf7('0x6e')]({'where':{'id':_0x524829[_0xfbf7('0xb7')]['id']}})[_0xfbf7('0x2b')](handleEntityNotFound(_0x2f3b55,null))['then'](function(_0x195c40){if(_0x195c40){return _0x195c40[_0xfbf7('0xc6')](_0x524829[_0xfbf7('0x3e')][_0xfbf7('0xbb')]);}})[_0xfbf7('0x2b')](respondWithStatusCode(_0x2f3b55,null))[_0xfbf7('0xb5')](handleError(_0x2f3b55,null));};exports[_0xfbf7('0xc7')]=function(_0x521ba6,_0x2d19c0){var _0x2681e4=moment()[_0xfbf7('0xc8')]()[_0xfbf7('0x9e')]();var _0x53e885=path[_0xfbf7('0xc9')](config['root'],_0xfbf7('0xca'),_0xfbf7('0xcb'),_0xfbf7('0xcc'));var _0x3903c7=path[_0xfbf7('0xc9')](config[_0xfbf7('0xcd')],_0xfbf7('0xca'),'files',_0xfbf7('0xce'));var _0x5f1123=path[_0xfbf7('0xc9')](_0x53e885,_0x2681e4);var _0x3fdee4=util[_0xfbf7('0xcf')]('transcript-%d-%s.zip',_0x521ba6['params']['id'],_0x2681e4);var _0x54e668=path[_0xfbf7('0xc9')](_0x53e885,_0x3fdee4);var _0x55779b=[];_0x55779b[_0xfbf7('0x35')]({'model':db[_0xfbf7('0x76')],'as':_0xfbf7('0x76'),'attributes':['id',_0xfbf7('0x31')],'raw':!![]});_0x55779b[_0xfbf7('0x35')]({'model':db[_0xfbf7('0xd0')],'as':_0xfbf7('0x68'),'attributes':['id',_0xfbf7('0xd1'),_0xfbf7('0xd2')],'raw':!![]});var _0x33c5f5=[{'model':db['SmsMessage'],'as':_0xfbf7('0xd3'),'attributes':['id',_0xfbf7('0x79'),_0xfbf7('0x7e'),'direction','secret','read'],'include':_0x55779b}];_0x33c5f5[_0xfbf7('0x35')]({'model':db[_0xfbf7('0xd4')],'as':_0xfbf7('0xd5'),'attributes':['id','name']});_0x33c5f5[_0xfbf7('0x35')]({'model':db[_0xfbf7('0x76')],'as':_0xfbf7('0xd6'),'attributes':['id',_0xfbf7('0x31')]});return db[_0xfbf7('0x38')][_0xfbf7('0x6e')]({'where':{'id':_0x521ba6[_0xfbf7('0xb7')]['id']},'include':_0x33c5f5})['then'](handleEntityNotFound(_0x2d19c0,null))[_0xfbf7('0x2b')](function(_0x51ea24){if(_0x51ea24){var _0x4aee1a=_0x51ea24[_0xfbf7('0xd7')]({'plain':!![]});fs[_0xfbf7('0xd8')](_0x5f1123);var _0x46f015={'channel':_0xfbf7('0xd9'),'account':_0x4aee1a[_0xfbf7('0xd5')][_0xfbf7('0x2e')],'agent':_0x4aee1a['Owner']?_0x4aee1a[_0xfbf7('0xd6')][_0xfbf7('0x31')]:_0xfbf7('0xda'),'createdAt':moment(_0x4aee1a[_0xfbf7('0x7e')])[_0xfbf7('0xcf')](_0xfbf7('0xdb'))[_0xfbf7('0x9e')](),'closedAt':_0x4aee1a[_0xfbf7('0xdc')]?moment(_0x4aee1a['closedAt'])[_0xfbf7('0xcf')]('YYYY-MM-DD\x20HH:mm:ss')[_0xfbf7('0x9e')]():'','disposition':_0x4aee1a['disposition'],'messages':_(_0x4aee1a[_0xfbf7('0xd3')])[_0xfbf7('0x89')]({'secret':![]})[_0xfbf7('0x37')](function(_0x4e7a28){return{'date':moment(_0x4e7a28[_0xfbf7('0x7e')])['format'](_0xfbf7('0xdb'))[_0xfbf7('0x9e')](),'sender':_0x4e7a28['direction']===_0xfbf7('0xdd')?_0x4e7a28[_0xfbf7('0x76')]?_0x4e7a28['User']['fullname']:_0xfbf7('0xde'):_0x4e7a28[_0xfbf7('0x68')][_0xfbf7('0xd1')]+(_0x4e7a28[_0xfbf7('0x68')]['lastName']?'\x20'+_0x4e7a28[_0xfbf7('0x68')][_0xfbf7('0xd2')]:''),'body':_0x4e7a28[_0xfbf7('0x79')],'direction':_0x4e7a28[_0xfbf7('0xdf')]===_0xfbf7('0xdd')?'A':'C','secret':_0x4e7a28[_0xfbf7('0xe0')],'read':_0x4e7a28[_0xfbf7('0x84')]};})['value']()};return ejs['renderFile'](path[_0xfbf7('0xc9')](config[_0xfbf7('0xcd')],_0xfbf7('0xca'),_0xfbf7('0xe1'),_0xfbf7('0xe2')),{'interaction':_0x46f015})[_0xfbf7('0x2b')](function(_0x1b9017){var _0x68835e=path[_0xfbf7('0xc9')](_0x5f1123,_0xfbf7('0xe3')+_0x4aee1a['id']+'-'+_0x2681e4+'.pdf');var _0x279bf6={'path':_0x68835e,'channel':_0xfbf7('0xd9'),'interactionId':_0x4aee1a['id']};return pdf[_0xfbf7('0xe4')](_0x1b9017,_0x279bf6);})[_0xfbf7('0x2b')](function(){return new BPromise(function(_0x244a03,_0x9e0b2b){zipdir(_0x5f1123,{'saveTo':_0x54e668},function(_0x72a7da,_0x54c32a){if(_0x72a7da)return _0x9e0b2b(_0x72a7da);return _0x244a03(_0x54c32a);});})[_0xfbf7('0x2b')](function(){return new BPromise(function(_0x5496fd,_0x248a8f){rimraf(_0x5f1123,function(_0x15c00c){if(_0x15c00c)_0x248a8f(_0x15c00c);return _0x5496fd();});});})['then'](function(){return _0x2d19c0[_0xfbf7('0xc7')](_0x54e668,_0x3fdee4,function(_0x334e46){if(_0x334e46){console[_0xfbf7('0xe5')](_0xfbf7('0xe6'),_0x334e46);}else{fs[_0xfbf7('0xe7')](_0x54e668);}});});});}else{return _0x2d19c0[_0xfbf7('0x1f')](0xc8);}})[_0xfbf7('0xb5')](handleError(_0x2d19c0,null));};
\ No newline at end of file
index 7cb146a..8609f97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x955f=['save','getUsers','setDataValue','map','findAll','then','unreadMessages','emit','catch','hasOwnProperty','hook','events','../../mysqldb','SmsInteraction','SmsMessage'];(function(_0x3783b8,_0x4d916d){var _0xb2304a=function(_0x22204e){while(--_0x22204e){_0x3783b8['push'](_0x3783b8['shift']());}};_0xb2304a(++_0x4d916d);}(_0x955f,0x1eb));var _0xf955=function(_0x128904,_0x2a44ce){_0x128904=_0x128904-0x0;var _0x574dcc=_0x955f[_0x128904];return _0x574dcc;};'use strict';var EventEmitter=require(_0xf955('0x0'));var SmsInteraction=require(_0xf955('0x1'))['db'][_0xf955('0x2')];var SmsMessage=require(_0xf955('0x1'))['db'][_0xf955('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xf955('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x1db0dd){return function(_0x5a20bc,_0x13b796,_0x2caff2){_0x5a20bc[_0xf955('0x5')]({'attributes':['id'],'raw':!![]})['then'](function(_0x18432f){_0x5a20bc[_0xf955('0x6')]('Users',_0x18432f[_0xf955('0x7')](function(_0x151034){return{'id':_0x151034['id']};}));return SmsMessage[_0xf955('0x8')]({'where':{'SmsInteractionId':_0x5a20bc['id'],'direction':'in','read':![]},'raw':!![]});})[_0xf955('0x9')](function(_0x134c1b){_0x5a20bc[_0xf955('0x6')](_0xf955('0xa'),_0x134c1b['length']);SmsInteractionEvents[_0xf955('0xb')](_0x1db0dd+':'+_0x5a20bc['id'],_0x5a20bc);SmsInteractionEvents['emit'](_0x1db0dd,_0x5a20bc);_0x2caff2(null);})[_0xf955('0xc')](_0x2caff2(null));};}for(var e in events){if(events[_0xf955('0xd')](e)){var event=events[e];SmsInteraction[_0xf955('0xe')](e,emitEvent(event));}}module['exports']=SmsInteractionEvents;
\ No newline at end of file
+var _0x4b17=['SmsInteraction','SmsMessage','setMaxListeners','update','getUsers','then','setDataValue','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','events'];(function(_0x1c2119,_0x250b8c){var _0x5afcfa=function(_0x41a842){while(--_0x41a842){_0x1c2119['push'](_0x1c2119['shift']());}};_0x5afcfa(++_0x250b8c);}(_0x4b17,0x10f));var _0x74b1=function(_0x16771d,_0x224c60){_0x16771d=_0x16771d-0x0;var _0x386f11=_0x4b17[_0x16771d];return _0x386f11;};'use strict';var EventEmitter=require(_0x74b1('0x0'));var SmsInteraction=require('../../mysqldb')['db'][_0x74b1('0x1')];var SmsMessage=require('../../mysqldb')['db'][_0x74b1('0x2')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x74b1('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x74b1('0x4'),'afterDestroy':'remove'};function emitEvent(_0x4fdea2){return function(_0x7b3c36,_0x30d910,_0x379dcc){_0x7b3c36[_0x74b1('0x5')]({'attributes':['id'],'raw':!![]})[_0x74b1('0x6')](function(_0x191d2b){_0x7b3c36[_0x74b1('0x7')]('Users',_0x191d2b[_0x74b1('0x8')](function(_0x98bb33){return{'id':_0x98bb33['id']};}));return SmsMessage[_0x74b1('0x9')]({'where':{'SmsInteractionId':_0x7b3c36['id'],'direction':'in','read':![]},'raw':!![]});})[_0x74b1('0x6')](function(_0xc1952){_0x7b3c36['setDataValue'](_0x74b1('0xa'),_0xc1952[_0x74b1('0xb')]);SmsInteractionEvents['emit'](_0x4fdea2+':'+_0x7b3c36['id'],_0x7b3c36);SmsInteractionEvents[_0x74b1('0xc')](_0x4fdea2,_0x7b3c36);_0x379dcc(null);})[_0x74b1('0xd')](_0x379dcc(null));};}for(var e in events){if(events[_0x74b1('0xe')](e)){var event=events[e];SmsInteraction[_0x74b1('0xf')](e,emitEvent(event));}}module['exports']=SmsInteractionEvents;
\ No newline at end of file
index aa06382..b734124 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdbf=['exports','define','SmsInteraction','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','bluebird','rimraf','../../config/environment','./smsInteraction.attributes'];(function(_0x558fe9,_0x1ca3f7){var _0x554d2a=function(_0x16895a){while(--_0x16895a){_0x558fe9['push'](_0x558fe9['shift']());}};_0x554d2a(++_0x1ca3f7);}(_0xfdbf,0x138));var _0xffdb=function(_0x1e381c,_0x47b5b9){_0x1e381c=_0x1e381c-0x0;var _0x9b5ea9=_0xfdbf[_0x1e381c];return _0x9b5ea9;};'use strict';var _=require(_0xffdb('0x0'));var util=require(_0xffdb('0x1'));var logger=require(_0xffdb('0x2'))(_0xffdb('0x3'));var moment=require('moment');var BPromise=require(_0xffdb('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xffdb('0x5'));var config=require(_0xffdb('0x6'));var attributes=require(_0xffdb('0x7'));module[_0xffdb('0x8')]=function(_0x2daa6e,_0x585a6e){return _0x2daa6e[_0xffdb('0x9')](_0xffdb('0xa'),attributes,{'tableName':'sms_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1e9cd9,_0x2e23c1,_0x207580){if(_0x1e9cd9[_0xffdb('0xb')](_0xffdb('0xc'))){_0x1e9cd9[_0xffdb('0xd')]=moment()[_0xffdb('0xe')](_0xffdb('0xf'));}_0x207580(null,_0x1e9cd9);}}});};
\ No newline at end of file
+var _0xa1e4=['closed','closedAt','format','lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment','define','SmsInteraction','sms_interactions'];(function(_0xfe0c0e,_0x2d2f8e){var _0x35ebd7=function(_0x3da763){while(--_0x3da763){_0xfe0c0e['push'](_0xfe0c0e['shift']());}};_0x35ebd7(++_0x2d2f8e);}(_0xa1e4,0x73));var _0x4a1e=function(_0x126121,_0x35e290){_0x126121=_0x126121-0x0;var _0x57d413=_0xa1e4[_0x126121];return _0x57d413;};'use strict';var _=require(_0x4a1e('0x0'));var util=require(_0x4a1e('0x1'));var logger=require(_0x4a1e('0x2'))(_0x4a1e('0x3'));var moment=require(_0x4a1e('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x4a1e('0x5'));var rimraf=require(_0x4a1e('0x6'));var config=require(_0x4a1e('0x7'));var attributes=require('./smsInteraction.attributes');module['exports']=function(_0x1583fa,_0x1b2a0e){return _0x1583fa[_0x4a1e('0x8')](_0x4a1e('0x9'),attributes,{'tableName':_0x4a1e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1ef796,_0x457417,_0x14b3cb){if(_0x1ef796['changed'](_0x4a1e('0xb'))){_0x1ef796[_0x4a1e('0xc')]=moment()[_0x4a1e('0xd')]('YYYY-MM-DD\x20HH:mm:ss');}_0x14b3cb(null,_0x1ef796);}}});};
\ No newline at end of file
index d393d5c..a465eec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3799=['ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','redis','localhost','./smsInteraction.socket','request','then','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','SmsInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','SmsInteraction','update','body','options','raw','where','attributes','UpdateSmsInteraction','debug','find','addTags','ids','omit','spread','AddTags','lodash','util','moment','bluebird','randomstring'];(function(_0x347509,_0xb82d32){var _0x30a2c1=function(_0x522893){while(--_0x522893){_0x347509['push'](_0x347509['shift']());}};_0x30a2c1(++_0xb82d32);}(_0x3799,0x9b));var _0x9379=function(_0x4ba8cb,_0x17d27e){_0x4ba8cb=_0x4ba8cb-0x0;var _0x3cc653=_0x3799[_0x4ba8cb];return _0x3cc653;};'use strict';var _=require(_0x9379('0x0'));var util=require(_0x9379('0x1'));var moment=require(_0x9379('0x2'));var BPromise=require(_0x9379('0x3'));var rs=require(_0x9379('0x4'));var fs=require('fs');var Redis=require(_0x9379('0x5'));var db=require(_0x9379('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x9379('0x7'))(_0x9379('0x8'));var config=require(_0x9379('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x9379('0xa')]['http']({'port':0x232a});config[_0x9379('0xb')]=_['defaults'](config[_0x9379('0xb')],{'host':_0x9379('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9379('0xb')]));require(_0x9379('0xd'))['register'](socket);function respondWithRpcPromise(_0x45d250,_0x393cb6,_0x3deeef){return new BPromise(function(_0x220fc6,_0xc8a159){return client[_0x9379('0xe')](_0x45d250,_0x3deeef)[_0x9379('0xf')](function(_0x53dfa0){logger[_0x9379('0x10')](_0x9379('0x11'),_0x393cb6,_0x9379('0x12'));logger['debug'](_0x9379('0x13'),_0x393cb6,_0x9379('0x12'),JSON[_0x9379('0x14')](_0x53dfa0));if(_0x53dfa0[_0x9379('0x15')]){if(_0x53dfa0[_0x9379('0x15')][_0x9379('0x16')]===0x1f4){logger['error'](_0x9379('0x11'),_0x393cb6,_0x53dfa0[_0x9379('0x15')][_0x9379('0x17')]);return _0xc8a159(_0x53dfa0['error'][_0x9379('0x17')]);}logger['error'](_0x9379('0x11'),_0x393cb6,_0x53dfa0[_0x9379('0x15')]['message']);return _0x220fc6(_0x53dfa0[_0x9379('0x15')][_0x9379('0x17')]);}else{logger[_0x9379('0x10')]('SmsInteraction,\x20%s,\x20%s',_0x393cb6,'request\x20sent');_0x220fc6(_0x53dfa0['result'][_0x9379('0x17')]);}})[_0x9379('0x18')](function(_0xcc831e){logger[_0x9379('0x15')](_0x9379('0x11'),_0x393cb6,_0xcc831e);_0xc8a159(_0xcc831e);});});}exports['UpdateSmsInteraction']=function(_0x16d17c){var _0x1cb2c3=this;return new Promise(function(_0x99fca9,_0x387db6){return db[_0x9379('0x19')][_0x9379('0x1a')](_0x16d17c[_0x9379('0x1b')],{'raw':_0x16d17c[_0x9379('0x1c')]?_0x16d17c['options'][_0x9379('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x16d17c['options']?_0x16d17c[_0x9379('0x1c')][_0x9379('0x1e')]||null:null,'attributes':_0x16d17c[_0x9379('0x1c')]?_0x16d17c['options'][_0x9379('0x1f')]||null:null,'limit':_0x16d17c[_0x9379('0x1c')]?_0x16d17c[_0x9379('0x1c')]['limit']||null:null})['then'](function(_0xcbefe9){logger[_0x9379('0x10')](_0x9379('0x20'),_0x16d17c);logger[_0x9379('0x21')]('UpdateSmsInteraction',_0x16d17c,JSON[_0x9379('0x14')](_0xcbefe9));_0x99fca9(_0xcbefe9);})[_0x9379('0x18')](function(_0xbd95a5){logger[_0x9379('0x15')](_0x9379('0x20'),_0xbd95a5[_0x9379('0x17')],_0x16d17c);_0x387db6(_0x1cb2c3[_0x9379('0x15')](0x1f4,_0xbd95a5['message']));});});};exports['AddTagsToSmsInteraction']=function(_0x564a4a){return new Promise(function(_0x550cbf,_0x432af9){return db['SmsInteraction'][_0x9379('0x22')]({'where':_0x564a4a[_0x9379('0x1c')]?_0x564a4a[_0x9379('0x1c')]['where']||null:null})[_0x9379('0xf')](function(_0x52c0ec){if(_0x52c0ec){return _0x52c0ec[_0x9379('0x23')](_0x564a4a[_0x9379('0x1b')][_0x9379('0x24')],_[_0x9379('0x25')](_0x564a4a[_0x9379('0x1b')],[_0x9379('0x24'),'id'])||{});}})[_0x9379('0x26')](function(_0x291f87){logger[_0x9379('0x10')]('AddTags',_0x564a4a);logger[_0x9379('0x21')](_0x9379('0x27'),_0x564a4a,JSON[_0x9379('0x14')](_0x291f87));_0x550cbf(_0x291f87);})[_0x9379('0x18')](function(_0x1a9f5a){logger[_0x9379('0x15')](_0x9379('0x27'),_0x1a9f5a[_0x9379('0x17')],_0x564a4a);_0x432af9(_this[_0x9379('0x15')](0x1f4,_0x1a9f5a[_0x9379('0x17')]));});});};
\ No newline at end of file
+var _0x662a=['redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','register','request','then','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','error','code','message','SmsInteraction','update','options','raw','where','attributes','UpdateSmsInteraction','debug','stringify','catch','AddTagsToSmsInteraction','find','addTags','body','omit','spread','AddTags','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x52f294,_0x3bc787){var _0x33dc68=function(_0x511c47){while(--_0x511c47){_0x52f294['push'](_0x52f294['shift']());}};_0x33dc68(++_0x3bc787);}(_0x662a,0x137));var _0xa662=function(_0x5e65e3,_0x270f92){_0x5e65e3=_0x5e65e3-0x0;var _0x47a5a8=_0x662a[_0x5e65e3];return _0x47a5a8;};'use strict';var _=require('lodash');var util=require(_0xa662('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xa662('0x1'));var fs=require('fs');var Redis=require(_0xa662('0x2'));var db=require(_0xa662('0x3'))['db'];var utils=require(_0xa662('0x4'));var logger=require(_0xa662('0x5'))(_0xa662('0x6'));var config=require(_0xa662('0x7'));var jayson=require(_0xa662('0x8'));var client=jayson['client']['http']({'port':0x232a});config[_0xa662('0x9')]=_[_0xa662('0xa')](config[_0xa662('0x9')],{'host':_0xa662('0xb'),'port':0x18eb});var socket=require(_0xa662('0xc'))(new Redis(config[_0xa662('0x9')]));require(_0xa662('0xd'))[_0xa662('0xe')](socket);function respondWithRpcPromise(_0x4a39d8,_0x195980,_0x5adaff){return new BPromise(function(_0x54f3e4,_0x4ce64a){return client[_0xa662('0xf')](_0x4a39d8,_0x5adaff)[_0xa662('0x10')](function(_0x32a590){logger[_0xa662('0x11')](_0xa662('0x12'),_0x195980,_0xa662('0x13'));logger['debug']('SmsInteraction,\x20%s,\x20%s,\x20%s',_0x195980,_0xa662('0x13'),JSON['stringify'](_0x32a590));if(_0x32a590[_0xa662('0x14')]){if(_0x32a590[_0xa662('0x14')][_0xa662('0x15')]===0x1f4){logger[_0xa662('0x14')](_0xa662('0x12'),_0x195980,_0x32a590['error'][_0xa662('0x16')]);return _0x4ce64a(_0x32a590['error'][_0xa662('0x16')]);}logger[_0xa662('0x14')](_0xa662('0x12'),_0x195980,_0x32a590[_0xa662('0x14')][_0xa662('0x16')]);return _0x54f3e4(_0x32a590[_0xa662('0x14')]['message']);}else{logger[_0xa662('0x11')](_0xa662('0x12'),_0x195980,_0xa662('0x13'));_0x54f3e4(_0x32a590['result'][_0xa662('0x16')]);}})['catch'](function(_0xb52a48){logger['error'](_0xa662('0x12'),_0x195980,_0xb52a48);_0x4ce64a(_0xb52a48);});});}exports['UpdateSmsInteraction']=function(_0x8ee426){var _0x9e86a5=this;return new Promise(function(_0x33f9ce,_0x3c2919){return db[_0xa662('0x17')][_0xa662('0x18')](_0x8ee426['body'],{'raw':_0x8ee426['options']?_0x8ee426[_0xa662('0x19')][_0xa662('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x8ee426[_0xa662('0x19')]?_0x8ee426[_0xa662('0x19')][_0xa662('0x1b')]||null:null,'attributes':_0x8ee426[_0xa662('0x19')]?_0x8ee426[_0xa662('0x19')][_0xa662('0x1c')]||null:null,'limit':_0x8ee426[_0xa662('0x19')]?_0x8ee426[_0xa662('0x19')]['limit']||null:null})[_0xa662('0x10')](function(_0x4d5599){logger['info'](_0xa662('0x1d'),_0x8ee426);logger[_0xa662('0x1e')](_0xa662('0x1d'),_0x8ee426,JSON[_0xa662('0x1f')](_0x4d5599));_0x33f9ce(_0x4d5599);})[_0xa662('0x20')](function(_0x2a8d72){logger['error'](_0xa662('0x1d'),_0x2a8d72[_0xa662('0x16')],_0x8ee426);_0x3c2919(_0x9e86a5[_0xa662('0x14')](0x1f4,_0x2a8d72['message']));});});};exports[_0xa662('0x21')]=function(_0x57cb6b){return new Promise(function(_0x574cb1,_0x1aeea4){return db[_0xa662('0x17')][_0xa662('0x22')]({'where':_0x57cb6b[_0xa662('0x19')]?_0x57cb6b[_0xa662('0x19')]['where']||null:null})[_0xa662('0x10')](function(_0x38b231){if(_0x38b231){return _0x38b231[_0xa662('0x23')](_0x57cb6b[_0xa662('0x24')]['ids'],_[_0xa662('0x25')](_0x57cb6b[_0xa662('0x24')],['ids','id'])||{});}})[_0xa662('0x26')](function(_0x477026){logger['info']('AddTags',_0x57cb6b);logger['debug']('AddTags',_0x57cb6b,JSON[_0xa662('0x1f')](_0x477026));_0x574cb1(_0x477026);})['catch'](function(_0x3c9441){logger[_0xa662('0x14')](_0xa662('0x27'),_0x3c9441[_0xa662('0x16')],_0x57cb6b);_0x1aeea4(_this[_0xa662('0x14')](0x1f4,_0x3c9441[_0xa662('0x16')]));});});};
\ No newline at end of file
index cccc208..252eead 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06d8=['removeListener','length','smsInteraction:','save','remove','update','emit'];(function(_0x13e741,_0x5d3c24){var _0x3f8bb3=function(_0x4440a0){while(--_0x4440a0){_0x13e741['push'](_0x13e741['shift']());}};_0x3f8bb3(++_0x5d3c24);}(_0x06d8,0x1ed));var _0x806d=function(_0x89c6ce,_0x41dbf7){_0x89c6ce=_0x89c6ce-0x0;var _0x564ec1=_0x06d8[_0x89c6ce];return _0x564ec1;};'use strict';var SmsInteractionEvents=require('./smsInteraction.events');var events=[_0x806d('0x0'),_0x806d('0x1'),_0x806d('0x2')];function createListener(_0x40d90f,_0x39ef19){return function(_0x4ddbde){_0x39ef19[_0x806d('0x3')](_0x40d90f,_0x4ddbde);};}function removeListener(_0x56f97b,_0x3792c5){return function(){SmsInteractionEvents[_0x806d('0x4')](_0x56f97b,_0x3792c5);};}exports['register']=function(_0x3c5271){for(var _0x18d3c4=0x0,_0xcd96f6=events[_0x806d('0x5')];_0x18d3c4<_0xcd96f6;_0x18d3c4++){var _0x123dbd=events[_0x18d3c4];var _0x5a07f6=createListener(_0x806d('0x6')+_0x123dbd,_0x3c5271);SmsInteractionEvents['on'](_0x123dbd,_0x5a07f6);}};
\ No newline at end of file
+var _0xb088=['removeListener','register','length','./smsInteraction.events','save','remove','emit'];(function(_0x4e2f1,_0x2b5c4f){var _0x2da541=function(_0x31d545){while(--_0x31d545){_0x4e2f1['push'](_0x4e2f1['shift']());}};_0x2da541(++_0x2b5c4f);}(_0xb088,0xb9));var _0x8b08=function(_0x5a2bc5,_0x4866d2){_0x5a2bc5=_0x5a2bc5-0x0;var _0x1b9a47=_0xb088[_0x5a2bc5];return _0x1b9a47;};'use strict';var SmsInteractionEvents=require(_0x8b08('0x0'));var events=[_0x8b08('0x1'),_0x8b08('0x2'),'update'];function createListener(_0xdbe997,_0x28a60e){return function(_0x56f8f4){_0x28a60e[_0x8b08('0x3')](_0xdbe997,_0x56f8f4);};}function removeListener(_0x50c130,_0x4bb957){return function(){SmsInteractionEvents[_0x8b08('0x4')](_0x50c130,_0x4bb957);};}exports[_0x8b08('0x5')]=function(_0x30289a){for(var _0x397d59=0x0,_0x17f85a=events[_0x8b08('0x6')];_0x397d59<_0x17f85a;_0x397d59++){var _0x3d4386=events[_0x397d59];var _0x1cab2b=createListener('smsInteraction:'+_0x3d4386,_0x30289a);SmsInteractionEvents['on'](_0x3d4386,_0x1cab2b);}};
\ No newline at end of file
index d82e10b..0e48215 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d5e=['post','smsmessage:create','create','/:id/status','update','put','/:id/accept','accept','/:id/reject','reject','delete','destroy','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./smsMessage.controller','get','/describe','describe','/:id','isAuthenticated'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x8d5e,0xf6));var _0xe8d5=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0x8d5e[_0x37bd26];return _0xe83dc4;};'use strict';var multer=require(_0xe8d5('0x0'));var util=require(_0xe8d5('0x1'));var path=require(_0xe8d5('0x2'));var timeout=require(_0xe8d5('0x3'));var express=require(_0xe8d5('0x4'));var router=express[_0xe8d5('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xe8d5('0x6'));var config=require(_0xe8d5('0x7'));var controller=require(_0xe8d5('0x8'));router[_0xe8d5('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xe8d5('0x9')](_0xe8d5('0xa'),auth['isAuthenticated'](),controller[_0xe8d5('0xb')]);router[_0xe8d5('0x9')](_0xe8d5('0xc'),auth[_0xe8d5('0xd')](),controller['show']);router[_0xe8d5('0xe')]('/',auth[_0xe8d5('0xd')](),interaction['tracked']('sms',_0xe8d5('0xf')),controller[_0xe8d5('0x10')]);router['post'](_0xe8d5('0x11'),controller['status']);router['put']('/:id',auth[_0xe8d5('0xd')](),controller[_0xe8d5('0x12')]);router[_0xe8d5('0x13')](_0xe8d5('0x14'),auth[_0xe8d5('0xd')](),controller[_0xe8d5('0x15')]);router[_0xe8d5('0x13')](_0xe8d5('0x16'),auth[_0xe8d5('0xd')](),controller[_0xe8d5('0x17')]);router[_0xe8d5('0x18')]('/:id',auth[_0xe8d5('0xd')](),controller[_0xe8d5('0x19')]);module['exports']=router;
\ No newline at end of file
+var _0x1936=['exports','util','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./smsMessage.controller','isAuthenticated','describe','get','show','post','smsmessage:create','/:id/status','status','put','update','/:id/accept','accept','/:id/reject','reject','delete','/:id','destroy'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x1936,0x1e1));var _0x6193=function(_0x9842b2,_0x1b94f0){_0x9842b2=_0x9842b2-0x0;var _0x53389c=_0x1936[_0x9842b2];return _0x53389c;};'use strict';var multer=require('multer');var util=require(_0x6193('0x0'));var path=require('path');var timeout=require(_0x6193('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x6193('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0x6193('0x3'));var config=require(_0x6193('0x4'));var controller=require(_0x6193('0x5'));router['get']('/',auth[_0x6193('0x6')](),controller['index']);router['get']('/describe',auth[_0x6193('0x6')](),controller[_0x6193('0x7')]);router[_0x6193('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x6193('0x9')]);router[_0x6193('0xa')]('/',auth[_0x6193('0x6')](),interaction['tracked']('sms',_0x6193('0xb')),controller['create']);router[_0x6193('0xa')](_0x6193('0xc'),controller[_0x6193('0xd')]);router[_0x6193('0xe')]('/:id',auth[_0x6193('0x6')](),controller[_0x6193('0xf')]);router[_0x6193('0xe')](_0x6193('0x10'),auth[_0x6193('0x6')](),controller[_0x6193('0x11')]);router[_0x6193('0xe')](_0x6193('0x12'),auth[_0x6193('0x6')](),controller[_0x6193('0x13')]);router[_0x6193('0x14')](_0x6193('0x15'),auth['isAuthenticated'](),controller[_0x6193('0x16')]);module[_0x6193('0x17')]=router;
\ No newline at end of file
index 87bb0cc..74f7742 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e66=['ENUM','out','STRING','DATE','TEXT','sequelize','medium','BOOLEAN'];(function(_0x41cd93,_0x382eb8){var _0x58a7f8=function(_0x19e25f){while(--_0x19e25f){_0x41cd93['push'](_0x41cd93['shift']());}};_0x58a7f8(++_0x382eb8);}(_0x6e66,0x9d));var _0x66e6=function(_0xc0a3d3,_0x2c8d00){_0xc0a3d3=_0xc0a3d3-0x0;var _0x3386e8=_0x6e66[_0xc0a3d3];return _0x3386e8;};'use strict';var Sequelize=require(_0x66e6('0x0'));module['exports']={'body':{'type':Sequelize['TEXT'](_0x66e6('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0x66e6('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x66e6('0x3')]('in',_0x66e6('0x4')),'defaultValue':_0x66e6('0x4'),'allowNull':![]},'messageId':{'type':Sequelize[_0x66e6('0x5')](0xbe)},'phone':{'type':Sequelize[_0x66e6('0x5')]},'readAt':{'type':Sequelize[_0x66e6('0x6')]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'providerName':{'type':Sequelize[_0x66e6('0x5')]},'providerResponse':{'type':Sequelize[_0x66e6('0x7')]}};
\ No newline at end of file
+var _0x1c55=['ENUM','out','STRING','sequelize','exports','TEXT','medium','BOOLEAN'];(function(_0x1ee9a1,_0x5f1434){var _0x21270f=function(_0x303251){while(--_0x303251){_0x1ee9a1['push'](_0x1ee9a1['shift']());}};_0x21270f(++_0x5f1434);}(_0x1c55,0x1e3));var _0x51c5=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x1c55[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0x51c5('0x0'));module[_0x51c5('0x1')]={'body':{'type':Sequelize[_0x51c5('0x2')](_0x51c5('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x51c5('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x51c5('0x5')]('in',_0x51c5('0x6')),'defaultValue':_0x51c5('0x6'),'allowNull':![]},'messageId':{'type':Sequelize[_0x51c5('0x7')](0xbe)},'phone':{'type':Sequelize[_0x51c5('0x7')]},'readAt':{'type':Sequelize['DATE']},'secret':{'type':Sequelize[_0x51c5('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x51c5('0x7')]},'providerResponse':{'type':Sequelize[_0x51c5('0x2')]}};
\ No newline at end of file
index ecdbbcb..06c12b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c8c=['error','message','info','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','stack','name','send','index','map','SmsMessage','rawAttributes','fieldName','type','key','keys','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','pick','where','merge','VIRTUAL','options','findAll','rows','params','includeAll','create','body','find','describe','accept','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','SmsInteraction','SmsInteractionId','isNil','format','interaction','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','stringify','null','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','interface','channel','motionChannel','event','EventManager','acceptmessage','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','Sequelize','rejectmessage','SmsAccount','SmsAccountId','inspect','SmsAccount,\x20%s,\x20%s,\x20%s','twilio','MessageUUID','messageId','sent','delivered','Status','plivio','infobip','results','groupName','DELIVERED','eml-format','rimraf','zip-dir','fast-json-patch','moment','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./smsMessage.socket','register','client','http','request','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','code'];(function(_0x5b691f,_0x42846e){var _0x42cb0e=function(_0x2d8f42){while(--_0x2d8f42){_0x5b691f['push'](_0x5b691f['shift']());}};_0x42cb0e(++_0x42846e);}(_0x8c8c,0x185));var _0xc8c8=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x8c8c[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0xc8c8('0x0'));var rimraf=require(_0xc8c8('0x1'));var zipdir=require(_0xc8c8('0x2'));var jsonpatch=require(_0xc8c8('0x3'));var rp=require('request-promise');var moment=require(_0xc8c8('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xc8c8('0x5'));var path=require(_0xc8c8('0x6'));var sox=require(_0xc8c8('0x7'));var csv=require(_0xc8c8('0x8'));var ejs=require(_0xc8c8('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc8c8('0xa'));var squel=require(_0xc8c8('0xb'));var crypto=require(_0xc8c8('0xc'));var jsforce=require(_0xc8c8('0xd'));var deskjs=require(_0xc8c8('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc8c8('0xf'));var Redis=require(_0xc8c8('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xc8c8('0x11'));var as=require(_0xc8c8('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc8c8('0x13'))('api');var utils=require(_0xc8c8('0x14'));var config=require(_0xc8c8('0x15'));var licenseUtil=require(_0xc8c8('0x16'));var db=require(_0xc8c8('0x17'))['db'];config[_0xc8c8('0x18')]=_['defaults'](config['redis'],{'host':_0xc8c8('0x19'),'port':0x18eb});var socket=require(_0xc8c8('0x1a'))(new Redis(config[_0xc8c8('0x18')]));require(_0xc8c8('0x1b'))[_0xc8c8('0x1c')](socket);var jayson=require('jayson/promise');var client=jayson[_0xc8c8('0x1d')][_0xc8c8('0x1e')]({'port':0x232c});var client9002=jayson[_0xc8c8('0x1d')][_0xc8c8('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x172e5b,_0x4c1a64,_0x42d576,_0x203595){return new BPromise(function(_0x2ae2dd,_0xc51cfd){var _0x3eb356=_0x203595||client;return _0x3eb356[_0xc8c8('0x1f')](_0x172e5b,_0x42d576)['then'](function(_0x13178b){logger['info'](_0xc8c8('0x20'),_0x4c1a64,_0xc8c8('0x21'));logger[_0xc8c8('0x22')](_0xc8c8('0x23'),_0x4c1a64,_0xc8c8('0x21'),JSON['stringify'](_0x13178b));if(_0x13178b['error']){if(_0x13178b['error'][_0xc8c8('0x24')]===0x1f4){logger[_0xc8c8('0x25')]('SmsMessage,\x20%s,\x20%s',_0x4c1a64,_0x13178b[_0xc8c8('0x25')]['message']);return _0xc51cfd(_0x13178b[_0xc8c8('0x25')][_0xc8c8('0x26')]);}logger[_0xc8c8('0x25')](_0xc8c8('0x20'),_0x4c1a64,_0x13178b[_0xc8c8('0x25')]['message']);return _0x2ae2dd(_0x13178b['error']['message']);}else{logger[_0xc8c8('0x27')]('SmsMessage,\x20%s,\x20%s',_0x4c1a64,_0xc8c8('0x21'));_0x2ae2dd(_0x13178b[_0xc8c8('0x28')][_0xc8c8('0x26')]);}})[_0xc8c8('0x29')](function(_0x5281c9){logger[_0xc8c8('0x25')](_0xc8c8('0x20'),_0x4c1a64,_0x5281c9);_0xc51cfd(_0x5281c9);});});}function respondWithStatusCode(_0x5dd6be,_0x49c872){_0x49c872=_0x49c872||0xcc;return function(_0x2a00c1){if(_0x2a00c1){return _0x5dd6be[_0xc8c8('0x2a')](_0x49c872);}return _0x5dd6be[_0xc8c8('0x2b')](_0x49c872)[_0xc8c8('0x2c')]();};}function respondWithResult(_0xbb7c10,_0x297e34){_0x297e34=_0x297e34||0xc8;return function(_0x413bd2){if(_0x413bd2){return _0xbb7c10[_0xc8c8('0x2b')](_0x297e34)[_0xc8c8('0x2d')](_0x413bd2);}};}function respondWithFilteredResult(_0x4d9d3d,_0xbaf25f){return function(_0x47327a){if(_0x47327a){var _0x4fc92f=typeof _0xbaf25f[_0xc8c8('0x2e')]===_0xc8c8('0x2f')&&typeof _0xbaf25f[_0xc8c8('0x30')]===_0xc8c8('0x2f');var _0xbeb70d=_0x47327a[_0xc8c8('0x31')];var _0x2d2e6e=_0x4fc92f?0x0:_0xbaf25f[_0xc8c8('0x2e')];var _0x286666=_0x4fc92f?_0x47327a['count']:_0xbaf25f[_0xc8c8('0x2e')]+_0xbaf25f[_0xc8c8('0x30')];var _0x419bca;if(_0x286666>=_0xbeb70d){_0x286666=_0xbeb70d;_0x419bca=0xc8;}else{_0x419bca=0xce;}_0x4d9d3d[_0xc8c8('0x2b')](_0x419bca);return _0x4d9d3d[_0xc8c8('0x32')]('Content-Range',_0x2d2e6e+'-'+_0x286666+'/'+_0xbeb70d)['json'](_0x47327a);}return null;};}function patchUpdates(_0x197f41){return function(_0x5b9192){try{jsonpatch[_0xc8c8('0x33')](_0x5b9192,_0x197f41,!![]);}catch(_0x10a760){return BPromise[_0xc8c8('0x34')](_0x10a760);}return _0x5b9192[_0xc8c8('0x35')]();};}function saveUpdates(_0x1cffe4,_0x1bcf42){return function(_0x399cd5){if(_0x399cd5){return _0x399cd5[_0xc8c8('0x36')](_0x1cffe4)[_0xc8c8('0x37')](function(_0x11632e){return _0x11632e;});}return null;};}function removeEntity(_0x28be18,_0x2bccf5){return function(_0x33616c){if(_0x33616c){return _0x33616c['destroy']()[_0xc8c8('0x37')](function(){_0x28be18[_0xc8c8('0x2b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x385413,_0x44d193){return function(_0x561013){if(!_0x561013){_0x385413[_0xc8c8('0x2a')](0x194);}return _0x561013;};}function handleError(_0x4643c2,_0x4625fc){_0x4625fc=_0x4625fc||0x1f4;return function(_0x555284){logger['error'](_0x555284[_0xc8c8('0x38')]);if(_0x555284[_0xc8c8('0x39')]){delete _0x555284[_0xc8c8('0x39')];}_0x4643c2[_0xc8c8('0x2b')](_0x4625fc)[_0xc8c8('0x3a')](_0x555284);};}exports[_0xc8c8('0x3b')]=function(_0x396e2d,_0x505bc0){var _0x1bc03c={},_0x37bfbc={},_0x39ee4={'count':0x0,'rows':[]};var _0x5bba3c=_[_0xc8c8('0x3c')](db[_0xc8c8('0x3d')][_0xc8c8('0x3e')],function(_0x409713){return{'name':_0x409713[_0xc8c8('0x3f')],'type':_0x409713[_0xc8c8('0x40')][_0xc8c8('0x41')]};});_0x37bfbc['model']=_[_0xc8c8('0x3c')](_0x5bba3c,_0xc8c8('0x39'));_0x37bfbc['query']=_[_0xc8c8('0x42')](_0x396e2d[_0xc8c8('0x43')]);_0x37bfbc[_0xc8c8('0x44')]=_[_0xc8c8('0x45')](_0x37bfbc[_0xc8c8('0x46')],_0x37bfbc[_0xc8c8('0x43')]);_0x1bc03c[_0xc8c8('0x47')]=_[_0xc8c8('0x45')](_0x37bfbc[_0xc8c8('0x46')],qs[_0xc8c8('0x48')](_0x396e2d[_0xc8c8('0x43')][_0xc8c8('0x48')]));_0x1bc03c[_0xc8c8('0x47')]=_0x1bc03c[_0xc8c8('0x47')]['length']?_0x1bc03c[_0xc8c8('0x47')]:_0x37bfbc[_0xc8c8('0x46')];if(!_0x396e2d['query'][_0xc8c8('0x49')](_0xc8c8('0x4a'))){_0x1bc03c[_0xc8c8('0x30')]=qs[_0xc8c8('0x30')](_0x396e2d['query']['limit']);_0x1bc03c[_0xc8c8('0x2e')]=qs[_0xc8c8('0x2e')](_0x396e2d['query'][_0xc8c8('0x2e')]);}_0x1bc03c['order']=qs[_0xc8c8('0x4b')](_0x396e2d[_0xc8c8('0x43')][_0xc8c8('0x4b')]);_0x1bc03c['where']=qs[_0xc8c8('0x44')](_[_0xc8c8('0x4c')](_0x396e2d[_0xc8c8('0x43')],_0x37bfbc[_0xc8c8('0x44')]),_0x5bba3c);if(_0x396e2d[_0xc8c8('0x43')]['filter']){_0x1bc03c[_0xc8c8('0x4d')]=_[_0xc8c8('0x4e')](_0x1bc03c[_0xc8c8('0x4d')],{'$or':_['map'](_0x5bba3c,function(_0x19de06){if(_0x19de06['type']!==_0xc8c8('0x4f')){var _0x87013={};_0x87013[_0x19de06[_0xc8c8('0x39')]]={'$like':'%'+_0x396e2d[_0xc8c8('0x43')]['filter']+'%'};return _0x87013;}})});}_0x1bc03c=_[_0xc8c8('0x4e')]({},_0x1bc03c,_0x396e2d[_0xc8c8('0x50')]);var _0x287f69={'where':_0x1bc03c['where']};return db[_0xc8c8('0x3d')]['count'](_0x287f69)['then'](function(_0x31ad82){_0x39ee4[_0xc8c8('0x31')]=_0x31ad82;if(_0x396e2d[_0xc8c8('0x43')]['includeAll']){_0x1bc03c['include']=[{'all':!![]}];}return db['SmsMessage'][_0xc8c8('0x51')](_0x1bc03c);})[_0xc8c8('0x37')](function(_0x52bd63){_0x39ee4[_0xc8c8('0x52')]=_0x52bd63;return _0x39ee4;})['then'](respondWithFilteredResult(_0x505bc0,_0x1bc03c))['catch'](handleError(_0x505bc0,null));};exports['show']=function(_0x2e6b85,_0x52a334){var _0x196e0c={'raw':!![],'where':{'id':_0x2e6b85[_0xc8c8('0x53')]['id']}},_0x5e1058={};_0x5e1058[_0xc8c8('0x46')]=_[_0xc8c8('0x42')](db['SmsMessage'][_0xc8c8('0x3e')]);_0x5e1058[_0xc8c8('0x43')]=_['keys'](_0x2e6b85[_0xc8c8('0x43')]);_0x5e1058['filters']=_[_0xc8c8('0x45')](_0x5e1058[_0xc8c8('0x46')],_0x5e1058[_0xc8c8('0x43')]);_0x196e0c[_0xc8c8('0x47')]=_[_0xc8c8('0x45')](_0x5e1058[_0xc8c8('0x46')],qs[_0xc8c8('0x48')](_0x2e6b85[_0xc8c8('0x43')]['fields']));_0x196e0c[_0xc8c8('0x47')]=_0x196e0c[_0xc8c8('0x47')]['length']?_0x196e0c['attributes']:_0x5e1058['model'];if(_0x2e6b85[_0xc8c8('0x43')][_0xc8c8('0x54')]){_0x196e0c['include']=[{'all':!![]}];}_0x196e0c=_[_0xc8c8('0x4e')]({},_0x196e0c,_0x2e6b85[_0xc8c8('0x50')]);return db[_0xc8c8('0x3d')]['find'](_0x196e0c)[_0xc8c8('0x37')](handleEntityNotFound(_0x52a334,null))['then'](respondWithResult(_0x52a334,null))['catch'](handleError(_0x52a334,null));};exports[_0xc8c8('0x55')]=function(_0x2e5dd0,_0x5d4626){return db[_0xc8c8('0x3d')]['create'](_0x2e5dd0['body'],{})[_0xc8c8('0x37')](respondWithResult(_0x5d4626,0xc9))[_0xc8c8('0x29')](handleError(_0x5d4626,null));};exports[_0xc8c8('0x36')]=function(_0x5add6d,_0x1e3acc){if(_0x5add6d[_0xc8c8('0x56')]['id']){delete _0x5add6d[_0xc8c8('0x56')]['id'];}return db[_0xc8c8('0x3d')][_0xc8c8('0x57')]({'where':{'id':_0x5add6d['params']['id']}})[_0xc8c8('0x37')](handleEntityNotFound(_0x1e3acc,null))[_0xc8c8('0x37')](saveUpdates(_0x5add6d['body'],null))[_0xc8c8('0x37')](respondWithResult(_0x1e3acc,null))[_0xc8c8('0x29')](handleError(_0x1e3acc,null));};exports['destroy']=function(_0x1d7691,_0x1d7087){return db[_0xc8c8('0x3d')][_0xc8c8('0x57')]({'where':{'id':_0x1d7691[_0xc8c8('0x53')]['id']}})[_0xc8c8('0x37')](handleEntityNotFound(_0x1d7087,null))[_0xc8c8('0x37')](removeEntity(_0x1d7087,null))['catch'](handleError(_0x1d7087,null));};exports[_0xc8c8('0x58')]=function(_0x4fae54,_0x2b484b){return db[_0xc8c8('0x3d')][_0xc8c8('0x58')]()[_0xc8c8('0x37')](respondWithResult(_0x2b484b,null))[_0xc8c8('0x29')](handleError(_0x2b484b,null));};var interaction_log=require(_0xc8c8('0x13'))('sms-interactions');exports[_0xc8c8('0x59')]=function(_0x3d8442,_0x3b6e83,_0x49b730){var _0x1a6535={'agent':{},'channel':'sms'};if(_0x3d8442[_0xc8c8('0x56')]['id']){delete _0x3d8442['body']['id'];}_0x3d8442['body']['read']=!![];_0x3d8442[_0xc8c8('0x56')][_0xc8c8('0x5a')]=moment()['format'](_0xc8c8('0x5b'));_0x3d8442[_0xc8c8('0x56')][_0xc8c8('0x5c')]=_0x3d8442[_0xc8c8('0x56')][_0xc8c8('0x5c')]||_0x3d8442[_0xc8c8('0x5d')]['id'];_0x1a6535[_0xc8c8('0x5e')]['id']=_0x3d8442[_0xc8c8('0x56')][_0xc8c8('0x5c')];return db[_0xc8c8('0x3d')][_0xc8c8('0x57')]({'where':{'id':_0x3d8442[_0xc8c8('0x53')]['id'],'UserId':null}})[_0xc8c8('0x37')](handleEntityNotFound(_0x3b6e83,null))[_0xc8c8('0x37')](saveUpdates(_0x3d8442[_0xc8c8('0x56')],null))['then'](function(_0x176e9e){if(_0x176e9e){_0x1a6535[_0xc8c8('0x26')]=_0x176e9e[_0xc8c8('0x5f')]({'plain':!![]});return db[_0xc8c8('0x60')]['find']({'where':{'id':_0x176e9e[_0xc8c8('0x61')]}});}return null;})['then'](handleEntityNotFound(_0x3b6e83,null))['then'](function(_0x11ee11){if(_0x11ee11){return _0x11ee11[_0xc8c8('0x36')]({'UserId':_0x3d8442[_0xc8c8('0x56')]['UserId'],'read1stAt':_[_0xc8c8('0x62')](_0x11ee11['read1stAt'])?moment()[_0xc8c8('0x63')](_0xc8c8('0x5b')):undefined});}return null;})[_0xc8c8('0x37')](function(_0x4f2566){if(_0x4f2566){_0x1a6535[_0xc8c8('0x64')]=_0x4f2566[_0xc8c8('0x5f')]({'plain':!![]});interaction_log[_0xc8c8('0x27')](_0xc8c8('0x65'),_0x3d8442[_0xc8c8('0x5d')]['id'],_0x3d8442[_0xc8c8('0x5d')][_0xc8c8('0x39')],_0x3d8442[_0xc8c8('0x5d')][_0xc8c8('0x66')],_0x1a6535[_0xc8c8('0x64')]['id'],_0x3d8442[_0xc8c8('0x56')]?JSON[_0xc8c8('0x67')](_0x3d8442[_0xc8c8('0x56')]):_0xc8c8('0x68'));return respondWithRpcPromise('AcceptMessage',_0xc8c8('0x69'),_0x1a6535);}return null;})[_0xc8c8('0x37')](function(_0x5bc824){var _0x5e1fef=_0xc8c8('0x6a')+_0x5bc824['message'][_0xc8c8('0x6b')];return db[_0xc8c8('0x6c')][_0xc8c8('0x43')](_0x5e1fef,{'type':db['Sequelize'][_0xc8c8('0x6d')][_0xc8c8('0x6e')],'raw':!![]})[_0xc8c8('0x37')](function(_0x427dc5){return _0x427dc5;});})['then'](function(_0x2801fb){if(_0x2801fb){_0x1a6535[_0xc8c8('0x26')][_0xc8c8('0x6f')]=_0x2801fb[0x0];if(!_0x3d8442['body']['UserId'])return;return db[_0xc8c8('0x70')][_0xc8c8('0x57')]({'where':{'id':_0x3d8442[_0xc8c8('0x56')]['UserId'],'role':_0xc8c8('0x5e')},'attributes':['id',_0xc8c8('0x39'),_0xc8c8('0x71'),_0xc8c8('0x72'),_0xc8c8('0x73')],'raw':!![]});}return null;})[_0xc8c8('0x37')](function(_0x109936){if(!_0x109936)return null;_0x1a6535[_0xc8c8('0x26')][_0xc8c8('0x5e')]=_0x109936;return _0x1a6535;})['then'](function(_0x2d6440){if(_0x2d6440){if(_0x3d8442[_0xc8c8('0x56')][_0xc8c8('0x74')]){_0x1a6535[_0xc8c8('0x26')][_0xc8c8('0x75')]=util[_0xc8c8('0x63')]('SIP/%s',_0x3d8442[_0xc8c8('0x5d')][_0xc8c8('0x39')]);_0x1a6535[_0xc8c8('0x26')][_0xc8c8('0x76')]=_0x1a6535['channel'];_0x1a6535[_0xc8c8('0x26')][_0xc8c8('0x77')]=_0x1a6535['channel'];_0x1a6535[_0xc8c8('0x26')][_0xc8c8('0x78')]=_0xc8c8('0x59');return respondWithRpcPromise(_0xc8c8('0x79'),_0xc8c8('0x79'),{'event':_0xc8c8('0x7a'),'message':_0x1a6535['message']},client9002)['then'](function(){return _0x1a6535;});}return _0x1a6535;}return null;})[_0xc8c8('0x37')](respondWithResult(_0x3b6e83,null))[_0xc8c8('0x29')](handleError(_0x3b6e83,null));};var interaction_log=require('../../config/logger')('sms-interactions');exports[_0xc8c8('0x34')]=function(_0x5c1b08,_0x3e155e,_0x170320){var _0x50c972={'agent':{},'channel':'sms'};if(_0x5c1b08[_0xc8c8('0x56')]['id']){delete _0x5c1b08[_0xc8c8('0x56')]['id'];}_0x5c1b08['body'][_0xc8c8('0x5c')]=_0x5c1b08['body'][_0xc8c8('0x5c')]||_0x5c1b08[_0xc8c8('0x5d')]['id'];_0x50c972['agent']['id']=_0x5c1b08[_0xc8c8('0x56')][_0xc8c8('0x5c')];return db['SmsMessage'][_0xc8c8('0x57')]({'where':{'id':_0x5c1b08[_0xc8c8('0x53')]['id'],'UserId':null}})[_0xc8c8('0x37')](handleEntityNotFound(_0x3e155e,null))[_0xc8c8('0x37')](function(_0x1bfb50){if(_0x1bfb50){_0x50c972['message']=_0x1bfb50['get']({'plain':!![]});return db[_0xc8c8('0x60')][_0xc8c8('0x57')]({'where':{'id':_0x1bfb50['SmsInteractionId']}});}return null;})[_0xc8c8('0x37')](handleEntityNotFound(_0x3e155e,null))['then'](function(_0x5c52e4){if(_0x5c52e4){_0x50c972[_0xc8c8('0x64')]=_0x5c52e4[_0xc8c8('0x5f')]({'plain':!![]});interaction_log[_0xc8c8('0x27')](_0xc8c8('0x7b'),_0x5c1b08[_0xc8c8('0x5d')]['id'],_0x5c1b08[_0xc8c8('0x5d')][_0xc8c8('0x39')],_0x5c1b08[_0xc8c8('0x5d')]['role'],_0x50c972[_0xc8c8('0x64')]['id'],_0x5c1b08[_0xc8c8('0x56')]?JSON['stringify'](_0x5c1b08[_0xc8c8('0x56')]):_0xc8c8('0x68'));return respondWithRpcPromise(_0xc8c8('0x7c'),'rejectMessage',_0x50c972);}return null;})[_0xc8c8('0x37')](function(_0x344c2f){var _0x96e54=_0xc8c8('0x6a')+_0x344c2f[_0xc8c8('0x26')]['ContactId'];return db['sequelize'][_0xc8c8('0x43')](_0x96e54,{'type':db[_0xc8c8('0x7d')][_0xc8c8('0x6d')][_0xc8c8('0x6e')],'raw':!![]})[_0xc8c8('0x37')](function(_0x3e6815){return _0x3e6815;});})[_0xc8c8('0x37')](function(_0x1f143c){if(_0x1f143c){_0x50c972['message']['contact']=_0x1f143c[0x0];if(!_0x5c1b08['body'][_0xc8c8('0x5c')])return;return db[_0xc8c8('0x70')][_0xc8c8('0x57')]({'where':{'id':_0x5c1b08[_0xc8c8('0x56')]['UserId'],'role':_0xc8c8('0x5e')},'attributes':['id','name',_0xc8c8('0x71'),_0xc8c8('0x72'),'internal'],'raw':!![]});}return null;})[_0xc8c8('0x37')](function(_0x21a6fe){if(!_0x21a6fe)return null;_0x50c972[_0xc8c8('0x26')][_0xc8c8('0x5e')]=_0x21a6fe;return _0x50c972;})['then'](function(_0x19fc5c){if(_0x19fc5c){_0x19fc5c['message'][_0xc8c8('0x75')]=util[_0xc8c8('0x63')]('SIP/%s',_0x5c1b08['user']['name']);_0x19fc5c[_0xc8c8('0x26')][_0xc8c8('0x76')]=_0x50c972['channel'];_0x19fc5c[_0xc8c8('0x26')][_0xc8c8('0x77')]=_0x50c972[_0xc8c8('0x76')];_0x19fc5c[_0xc8c8('0x26')][_0xc8c8('0x78')]=_0xc8c8('0x34');respondWithRpcPromise(_0xc8c8('0x79'),_0xc8c8('0x79'),{'event':_0xc8c8('0x7e'),'message':_0x19fc5c['message']},client9002);return _0x50c972;}return null;})[_0xc8c8('0x37')](respondWithResult(_0x3e155e,null))[_0xc8c8('0x29')](handleError(_0x3e155e,null));};exports['status']=function(_0x27fcdf,_0x2d8256,_0x3fb1a8){if(_0x27fcdf[_0xc8c8('0x56')]['id']){delete _0x27fcdf['body']['id'];}var _0x52c218;return db[_0xc8c8('0x3d')]['find']({'where':{'id':_0x27fcdf['params']['id']}})[_0xc8c8('0x37')](handleEntityNotFound(_0x2d8256,null))['then'](function(_0x535848){if(_0x535848){_0x52c218=_0x535848;return db[_0xc8c8('0x7f')][_0xc8c8('0x57')]({'where':{'id':_0x535848[_0xc8c8('0x80')]}});}})[_0xc8c8('0x37')](handleEntityNotFound(_0x2d8256,null))['then'](function(_0xd4484c){if(_0xd4484c){logger[_0xc8c8('0x22')](_0xc8c8('0x23'),_0xc8c8('0x2b'),'received\x20delivery\x20report\x20from',_0xd4484c[_0xc8c8('0x40')],util[_0xc8c8('0x81')](_0x27fcdf[_0xc8c8('0x56')],{'showHidden':![],'depth':null}));switch(_0xd4484c[_0xc8c8('0x40')]){case'twilio':if(_0x27fcdf[_0xc8c8('0x56')]['MessageSid']&&_0x27fcdf['body']['MessageSid']===_0x52c218['messageId']){return _0x52c218[_0xc8c8('0x36')]({'read':!![]});}else{logger[_0xc8c8('0x25')](_0xc8c8('0x82'),_0xc8c8('0x2b'),_0xc8c8('0x83'),util['inspect'](_0x27fcdf[_0xc8c8('0x56')],{'showHidden':![],'depth':null}));}break;case'plivo':if(_0x27fcdf[_0xc8c8('0x56')]['MessageUUID']&&_0x27fcdf['body'][_0xc8c8('0x84')]===_0x52c218[_0xc8c8('0x85')]&&_['indexOf']([_0xc8c8('0x86'),_0xc8c8('0x87')],_0x27fcdf[_0xc8c8('0x56')][_0xc8c8('0x88')])>=0x0){return _0x52c218[_0xc8c8('0x36')]({'read':!![]});}else{logger['error'](_0xc8c8('0x82'),_0xc8c8('0x2b'),_0xc8c8('0x89'),util[_0xc8c8('0x81')](_0x27fcdf['body'],{'showHidden':![],'depth':null}));}break;case _0xc8c8('0x8a'):var _0xc226f2=_0x27fcdf[_0xc8c8('0x56')][_0xc8c8('0x8b')][0x0];if(_0xc226f2['status'][_0xc8c8('0x8c')]===_0xc8c8('0x8d')){return _0x52c218[_0xc8c8('0x36')]({'read':!![]});}else{logger[_0xc8c8('0x25')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xc8c8('0x2b'),_0xc8c8('0x8a'),util[_0xc8c8('0x81')](_0x27fcdf[_0xc8c8('0x56')],{'showHidden':![],'depth':null}));}break;}return _0x52c218;}})['then'](respondWithResult(_0x2d8256,null))[_0xc8c8('0x29')](handleError(_0x2d8256,null));};
\ No newline at end of file
+var _0xdbb1=['../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','./smsMessage.socket','jayson/promise','client','http','request','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','SmsMessage,\x20%s,\x20%s','message','catch','sendStatus','status','end','offset','undefined','count','limit','Content-Range','json','apply','reject','save','update','then','destroy','name','send','index','map','SmsMessage','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','nolimit','order','sort','where','filters','filter','merge','options','include','rows','show','params','rawAttributes','includeAll','find','create','body','describe','../../config/logger','sms-interactions','accept','sms','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','SmsInteraction','SmsInteractionId','isNil','interaction','get','info','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','SELECT','User','agent','fullname','internal','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','ContactId','contact','email','rejectmessage','SmsAccount','SmsAccountId','inspect','twilio','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','MessageUUID','indexOf','sent','delivered','Status','infobip','groupName','DELIVERED','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','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','api'];(function(_0x5d4607,_0x6b5e7b){var _0x5e4a86=function(_0x46891a){while(--_0x46891a){_0x5d4607['push'](_0x5d4607['shift']());}};_0x5e4a86(++_0x6b5e7b);}(_0xdbb1,0x7f));var _0x1dbb=function(_0x2aecb2,_0x343312){_0x2aecb2=_0x2aecb2-0x0;var _0x3ebb80=_0xdbb1[_0x2aecb2];return _0x3ebb80;};'use strict';var emlformat=require(_0x1dbb('0x0'));var rimraf=require(_0x1dbb('0x1'));var zipdir=require(_0x1dbb('0x2'));var jsonpatch=require(_0x1dbb('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x1dbb('0x4'));var Mustache=require('mustache');var util=require(_0x1dbb('0x5'));var path=require(_0x1dbb('0x6'));var sox=require(_0x1dbb('0x7'));var csv=require(_0x1dbb('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1dbb('0x9'));var _=require(_0x1dbb('0xa'));var squel=require(_0x1dbb('0xb'));var crypto=require(_0x1dbb('0xc'));var jsforce=require(_0x1dbb('0xd'));var deskjs=require(_0x1dbb('0xe'));var toCsv=require(_0x1dbb('0x8'));var querystring=require(_0x1dbb('0xf'));var Papa=require(_0x1dbb('0x10'));var Redis=require(_0x1dbb('0x11'));var authService=require(_0x1dbb('0x12'));var qs=require(_0x1dbb('0x13'));var as=require(_0x1dbb('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x1dbb('0x15'));var utils=require(_0x1dbb('0x16'));var config=require(_0x1dbb('0x17'));var licenseUtil=require(_0x1dbb('0x18'));var db=require(_0x1dbb('0x19'))['db'];config['redis']=_[_0x1dbb('0x1a')](config[_0x1dbb('0x1b')],{'host':_0x1dbb('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1dbb('0x1b')]));require(_0x1dbb('0x1d'))['register'](socket);var jayson=require(_0x1dbb('0x1e'));var client=jayson[_0x1dbb('0x1f')][_0x1dbb('0x20')]({'port':0x232c});var client9002=jayson[_0x1dbb('0x1f')][_0x1dbb('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x1db7bd,_0x3eea9b,_0x5089d9,_0xaad197){return new BPromise(function(_0x21389f,_0x529c98){var _0x57fbcb=_0xaad197||client;return _0x57fbcb[_0x1dbb('0x21')](_0x1db7bd,_0x5089d9)['then'](function(_0x173123){logger['info']('SmsMessage,\x20%s,\x20%s',_0x3eea9b,_0x1dbb('0x22'));logger[_0x1dbb('0x23')](_0x1dbb('0x24'),_0x3eea9b,_0x1dbb('0x22'),JSON[_0x1dbb('0x25')](_0x173123));if(_0x173123[_0x1dbb('0x26')]){if(_0x173123[_0x1dbb('0x26')]['code']===0x1f4){logger['error'](_0x1dbb('0x27'),_0x3eea9b,_0x173123['error'][_0x1dbb('0x28')]);return _0x529c98(_0x173123['error'][_0x1dbb('0x28')]);}logger[_0x1dbb('0x26')](_0x1dbb('0x27'),_0x3eea9b,_0x173123['error'][_0x1dbb('0x28')]);return _0x21389f(_0x173123[_0x1dbb('0x26')]['message']);}else{logger['info'](_0x1dbb('0x27'),_0x3eea9b,_0x1dbb('0x22'));_0x21389f(_0x173123['result'][_0x1dbb('0x28')]);}})[_0x1dbb('0x29')](function(_0x3499da){logger['error'](_0x1dbb('0x27'),_0x3eea9b,_0x3499da);_0x529c98(_0x3499da);});});}function respondWithStatusCode(_0x4c1762,_0x4f0bd2){_0x4f0bd2=_0x4f0bd2||0xcc;return function(_0x1d5597){if(_0x1d5597){return _0x4c1762[_0x1dbb('0x2a')](_0x4f0bd2);}return _0x4c1762[_0x1dbb('0x2b')](_0x4f0bd2)[_0x1dbb('0x2c')]();};}function respondWithResult(_0x2c097e,_0x55479d){_0x55479d=_0x55479d||0xc8;return function(_0x4105e4){if(_0x4105e4){return _0x2c097e[_0x1dbb('0x2b')](_0x55479d)['json'](_0x4105e4);}};}function respondWithFilteredResult(_0x561dc5,_0x50f549){return function(_0x417a26){if(_0x417a26){var _0x5a9453=typeof _0x50f549[_0x1dbb('0x2d')]===_0x1dbb('0x2e')&&typeof _0x50f549['limit']===_0x1dbb('0x2e');var _0x1c838c=_0x417a26[_0x1dbb('0x2f')];var _0x22e7c4=_0x5a9453?0x0:_0x50f549[_0x1dbb('0x2d')];var _0x4b94bd=_0x5a9453?_0x417a26[_0x1dbb('0x2f')]:_0x50f549[_0x1dbb('0x2d')]+_0x50f549[_0x1dbb('0x30')];var _0xc26727;if(_0x4b94bd>=_0x1c838c){_0x4b94bd=_0x1c838c;_0xc26727=0xc8;}else{_0xc26727=0xce;}_0x561dc5[_0x1dbb('0x2b')](_0xc26727);return _0x561dc5['set'](_0x1dbb('0x31'),_0x22e7c4+'-'+_0x4b94bd+'/'+_0x1c838c)[_0x1dbb('0x32')](_0x417a26);}return null;};}function patchUpdates(_0xc14cc2){return function(_0x127676){try{jsonpatch[_0x1dbb('0x33')](_0x127676,_0xc14cc2,!![]);}catch(_0x39ae61){return BPromise[_0x1dbb('0x34')](_0x39ae61);}return _0x127676[_0x1dbb('0x35')]();};}function saveUpdates(_0x584570,_0x15d220){return function(_0x36b075){if(_0x36b075){return _0x36b075[_0x1dbb('0x36')](_0x584570)[_0x1dbb('0x37')](function(_0x43629a){return _0x43629a;});}return null;};}function removeEntity(_0x479815,_0x52033e){return function(_0x26c854){if(_0x26c854){return _0x26c854[_0x1dbb('0x38')]()[_0x1dbb('0x37')](function(){_0x479815[_0x1dbb('0x2b')](0xcc)[_0x1dbb('0x2c')]();});}};}function handleEntityNotFound(_0x5228ac,_0x42f5f4){return function(_0xd1ffdc){if(!_0xd1ffdc){_0x5228ac[_0x1dbb('0x2a')](0x194);}return _0xd1ffdc;};}function handleError(_0x24670a,_0x572aec){_0x572aec=_0x572aec||0x1f4;return function(_0x48b13){logger[_0x1dbb('0x26')](_0x48b13['stack']);if(_0x48b13[_0x1dbb('0x39')]){delete _0x48b13[_0x1dbb('0x39')];}_0x24670a[_0x1dbb('0x2b')](_0x572aec)[_0x1dbb('0x3a')](_0x48b13);};}exports[_0x1dbb('0x3b')]=function(_0x47be81,_0x56358b){var _0xce7e61={},_0x153ae6={},_0x36a749={'count':0x0,'rows':[]};var _0x37d48d=_[_0x1dbb('0x3c')](db[_0x1dbb('0x3d')]['rawAttributes'],function(_0x39272a){return{'name':_0x39272a[_0x1dbb('0x3e')],'type':_0x39272a[_0x1dbb('0x3f')][_0x1dbb('0x40')]};});_0x153ae6[_0x1dbb('0x41')]=_[_0x1dbb('0x3c')](_0x37d48d,_0x1dbb('0x39'));_0x153ae6[_0x1dbb('0x42')]=_[_0x1dbb('0x43')](_0x47be81['query']);_0x153ae6['filters']=_[_0x1dbb('0x44')](_0x153ae6['model'],_0x153ae6[_0x1dbb('0x42')]);_0xce7e61['attributes']=_['intersection'](_0x153ae6[_0x1dbb('0x41')],qs[_0x1dbb('0x45')](_0x47be81['query'][_0x1dbb('0x45')]));_0xce7e61[_0x1dbb('0x46')]=_0xce7e61[_0x1dbb('0x46')][_0x1dbb('0x47')]?_0xce7e61[_0x1dbb('0x46')]:_0x153ae6['model'];if(!_0x47be81[_0x1dbb('0x42')]['hasOwnProperty'](_0x1dbb('0x48'))){_0xce7e61[_0x1dbb('0x30')]=qs[_0x1dbb('0x30')](_0x47be81[_0x1dbb('0x42')][_0x1dbb('0x30')]);_0xce7e61['offset']=qs[_0x1dbb('0x2d')](_0x47be81[_0x1dbb('0x42')][_0x1dbb('0x2d')]);}_0xce7e61[_0x1dbb('0x49')]=qs[_0x1dbb('0x4a')](_0x47be81[_0x1dbb('0x42')][_0x1dbb('0x4a')]);_0xce7e61[_0x1dbb('0x4b')]=qs['filters'](_['pick'](_0x47be81[_0x1dbb('0x42')],_0x153ae6[_0x1dbb('0x4c')]),_0x37d48d);if(_0x47be81['query'][_0x1dbb('0x4d')]){_0xce7e61[_0x1dbb('0x4b')]=_[_0x1dbb('0x4e')](_0xce7e61['where'],{'$or':_[_0x1dbb('0x3c')](_0x37d48d,function(_0xf74076){if(_0xf74076[_0x1dbb('0x3f')]!=='VIRTUAL'){var _0x16b39b={};_0x16b39b[_0xf74076['name']]={'$like':'%'+_0x47be81[_0x1dbb('0x42')][_0x1dbb('0x4d')]+'%'};return _0x16b39b;}})});}_0xce7e61=_[_0x1dbb('0x4e')]({},_0xce7e61,_0x47be81[_0x1dbb('0x4f')]);var _0x5ef48b={'where':_0xce7e61[_0x1dbb('0x4b')]};return db['SmsMessage'][_0x1dbb('0x2f')](_0x5ef48b)[_0x1dbb('0x37')](function(_0x158b73){_0x36a749[_0x1dbb('0x2f')]=_0x158b73;if(_0x47be81[_0x1dbb('0x42')]['includeAll']){_0xce7e61[_0x1dbb('0x50')]=[{'all':!![]}];}return db['SmsMessage']['findAll'](_0xce7e61);})['then'](function(_0x2878d4){_0x36a749[_0x1dbb('0x51')]=_0x2878d4;return _0x36a749;})['then'](respondWithFilteredResult(_0x56358b,_0xce7e61))[_0x1dbb('0x29')](handleError(_0x56358b,null));};exports[_0x1dbb('0x52')]=function(_0x5c6ebc,_0xb55b43){var _0x40d956={'raw':!![],'where':{'id':_0x5c6ebc[_0x1dbb('0x53')]['id']}},_0x2ba9c3={};_0x2ba9c3[_0x1dbb('0x41')]=_[_0x1dbb('0x43')](db['SmsMessage'][_0x1dbb('0x54')]);_0x2ba9c3[_0x1dbb('0x42')]=_['keys'](_0x5c6ebc[_0x1dbb('0x42')]);_0x2ba9c3[_0x1dbb('0x4c')]=_[_0x1dbb('0x44')](_0x2ba9c3[_0x1dbb('0x41')],_0x2ba9c3[_0x1dbb('0x42')]);_0x40d956[_0x1dbb('0x46')]=_[_0x1dbb('0x44')](_0x2ba9c3[_0x1dbb('0x41')],qs[_0x1dbb('0x45')](_0x5c6ebc[_0x1dbb('0x42')][_0x1dbb('0x45')]));_0x40d956['attributes']=_0x40d956[_0x1dbb('0x46')]['length']?_0x40d956['attributes']:_0x2ba9c3[_0x1dbb('0x41')];if(_0x5c6ebc[_0x1dbb('0x42')][_0x1dbb('0x55')]){_0x40d956[_0x1dbb('0x50')]=[{'all':!![]}];}_0x40d956=_[_0x1dbb('0x4e')]({},_0x40d956,_0x5c6ebc[_0x1dbb('0x4f')]);return db[_0x1dbb('0x3d')][_0x1dbb('0x56')](_0x40d956)[_0x1dbb('0x37')](handleEntityNotFound(_0xb55b43,null))[_0x1dbb('0x37')](respondWithResult(_0xb55b43,null))['catch'](handleError(_0xb55b43,null));};exports[_0x1dbb('0x57')]=function(_0xa8985c,_0x369c0c){return db[_0x1dbb('0x3d')][_0x1dbb('0x57')](_0xa8985c[_0x1dbb('0x58')],{})[_0x1dbb('0x37')](respondWithResult(_0x369c0c,0xc9))[_0x1dbb('0x29')](handleError(_0x369c0c,null));};exports[_0x1dbb('0x36')]=function(_0x5bb0c8,_0x2a5c27){if(_0x5bb0c8[_0x1dbb('0x58')]['id']){delete _0x5bb0c8['body']['id'];}return db[_0x1dbb('0x3d')][_0x1dbb('0x56')]({'where':{'id':_0x5bb0c8['params']['id']}})[_0x1dbb('0x37')](handleEntityNotFound(_0x2a5c27,null))[_0x1dbb('0x37')](saveUpdates(_0x5bb0c8['body'],null))[_0x1dbb('0x37')](respondWithResult(_0x2a5c27,null))[_0x1dbb('0x29')](handleError(_0x2a5c27,null));};exports['destroy']=function(_0x350d70,_0x53ac7e){return db['SmsMessage'][_0x1dbb('0x56')]({'where':{'id':_0x350d70[_0x1dbb('0x53')]['id']}})[_0x1dbb('0x37')](handleEntityNotFound(_0x53ac7e,null))[_0x1dbb('0x37')](removeEntity(_0x53ac7e,null))[_0x1dbb('0x29')](handleError(_0x53ac7e,null));};exports[_0x1dbb('0x59')]=function(_0x4f9072,_0x10a1ba){return db['SmsMessage'][_0x1dbb('0x59')]()[_0x1dbb('0x37')](respondWithResult(_0x10a1ba,null))['catch'](handleError(_0x10a1ba,null));};var interaction_log=require(_0x1dbb('0x5a'))(_0x1dbb('0x5b'));exports[_0x1dbb('0x5c')]=function(_0xe97607,_0x42204d,_0x44a386){var _0x1e8303={'agent':{},'channel':_0x1dbb('0x5d')};if(_0xe97607[_0x1dbb('0x58')]['id']){delete _0xe97607['body']['id'];}_0xe97607['body'][_0x1dbb('0x5e')]=!![];_0xe97607[_0x1dbb('0x58')][_0x1dbb('0x5f')]=moment()[_0x1dbb('0x60')](_0x1dbb('0x61'));_0xe97607[_0x1dbb('0x58')][_0x1dbb('0x62')]=_0xe97607[_0x1dbb('0x58')][_0x1dbb('0x62')]||_0xe97607[_0x1dbb('0x63')]['id'];_0x1e8303['agent']['id']=_0xe97607['body']['UserId'];return db[_0x1dbb('0x3d')][_0x1dbb('0x56')]({'where':{'id':_0xe97607[_0x1dbb('0x53')]['id'],'UserId':null}})[_0x1dbb('0x37')](handleEntityNotFound(_0x42204d,null))[_0x1dbb('0x37')](saveUpdates(_0xe97607[_0x1dbb('0x58')],null))[_0x1dbb('0x37')](function(_0x4cd380){if(_0x4cd380){_0x1e8303[_0x1dbb('0x28')]=_0x4cd380['get']({'plain':!![]});return db[_0x1dbb('0x64')][_0x1dbb('0x56')]({'where':{'id':_0x4cd380[_0x1dbb('0x65')]}});}return null;})['then'](handleEntityNotFound(_0x42204d,null))[_0x1dbb('0x37')](function(_0x439057){if(_0x439057){return _0x439057[_0x1dbb('0x36')]({'UserId':_0xe97607[_0x1dbb('0x58')][_0x1dbb('0x62')],'read1stAt':_[_0x1dbb('0x66')](_0x439057['read1stAt'])?moment()[_0x1dbb('0x60')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0x9a0346){if(_0x9a0346){_0x1e8303[_0x1dbb('0x67')]=_0x9a0346[_0x1dbb('0x68')]({'plain':!![]});interaction_log[_0x1dbb('0x69')](_0x1dbb('0x6a'),_0xe97607[_0x1dbb('0x63')]['id'],_0xe97607['user'][_0x1dbb('0x39')],_0xe97607[_0x1dbb('0x63')][_0x1dbb('0x6b')],_0x1e8303[_0x1dbb('0x67')]['id'],_0xe97607['body']?JSON['stringify'](_0xe97607[_0x1dbb('0x58')]):_0x1dbb('0x6c'));return respondWithRpcPromise(_0x1dbb('0x6d'),_0x1dbb('0x6e'),_0x1e8303);}return null;})[_0x1dbb('0x37')](function(_0x5d6518){var _0x360f37=_0x1dbb('0x6f')+_0x5d6518['message']['ContactId'];return db[_0x1dbb('0x70')][_0x1dbb('0x42')](_0x360f37,{'type':db[_0x1dbb('0x71')][_0x1dbb('0x72')][_0x1dbb('0x73')],'raw':!![]})[_0x1dbb('0x37')](function(_0x77d4d1){return _0x77d4d1;});})[_0x1dbb('0x37')](function(_0x13bd31){if(_0x13bd31){_0x1e8303['message']['contact']=_0x13bd31[0x0];if(!_0xe97607[_0x1dbb('0x58')][_0x1dbb('0x62')])return;return db[_0x1dbb('0x74')][_0x1dbb('0x56')]({'where':{'id':_0xe97607[_0x1dbb('0x58')][_0x1dbb('0x62')],'role':_0x1dbb('0x75')},'attributes':['id',_0x1dbb('0x39'),_0x1dbb('0x76'),'email',_0x1dbb('0x77')],'raw':!![]});}return null;})[_0x1dbb('0x37')](function(_0x1c879d){if(!_0x1c879d)return null;_0x1e8303[_0x1dbb('0x28')][_0x1dbb('0x75')]=_0x1c879d;return _0x1e8303;})[_0x1dbb('0x37')](function(_0x20f4a3){if(_0x20f4a3){if(_0xe97607[_0x1dbb('0x58')][_0x1dbb('0x78')]){_0x1e8303['message'][_0x1dbb('0x79')]=util['format'](_0x1dbb('0x7a'),_0xe97607['user']['name']);_0x1e8303['message']['channel']=_0x1e8303[_0x1dbb('0x7b')];_0x1e8303[_0x1dbb('0x28')][_0x1dbb('0x7c')]='accept';return respondWithRpcPromise('EventManager',_0x1dbb('0x7d'),{'event':_0x1dbb('0x7e'),'message':_0x1e8303[_0x1dbb('0x28')]},client9002)[_0x1dbb('0x37')](function(){return _0x1e8303;});}return _0x1e8303;}return null;})[_0x1dbb('0x37')](respondWithResult(_0x42204d,null))[_0x1dbb('0x29')](handleError(_0x42204d,null));};var interaction_log=require(_0x1dbb('0x5a'))(_0x1dbb('0x5b'));exports[_0x1dbb('0x34')]=function(_0x48dae0,_0x39c5dd,_0xbfa985){var _0x380bae={'agent':{},'channel':'sms'};if(_0x48dae0['body']['id']){delete _0x48dae0[_0x1dbb('0x58')]['id'];}_0x48dae0[_0x1dbb('0x58')][_0x1dbb('0x62')]=_0x48dae0['body'][_0x1dbb('0x62')]||_0x48dae0['user']['id'];_0x380bae[_0x1dbb('0x75')]['id']=_0x48dae0[_0x1dbb('0x58')][_0x1dbb('0x62')];return db[_0x1dbb('0x3d')]['find']({'where':{'id':_0x48dae0['params']['id'],'UserId':null}})[_0x1dbb('0x37')](handleEntityNotFound(_0x39c5dd,null))[_0x1dbb('0x37')](function(_0x5e60c5){if(_0x5e60c5){_0x380bae[_0x1dbb('0x28')]=_0x5e60c5[_0x1dbb('0x68')]({'plain':!![]});return db['SmsInteraction'][_0x1dbb('0x56')]({'where':{'id':_0x5e60c5[_0x1dbb('0x65')]}});}return null;})[_0x1dbb('0x37')](handleEntityNotFound(_0x39c5dd,null))['then'](function(_0x5ce42a){if(_0x5ce42a){_0x380bae['interaction']=_0x5ce42a['get']({'plain':!![]});interaction_log['info'](_0x1dbb('0x7f'),_0x48dae0['user']['id'],_0x48dae0['user']['name'],_0x48dae0[_0x1dbb('0x63')][_0x1dbb('0x6b')],_0x380bae[_0x1dbb('0x67')]['id'],_0x48dae0[_0x1dbb('0x58')]?JSON[_0x1dbb('0x25')](_0x48dae0[_0x1dbb('0x58')]):_0x1dbb('0x6c'));return respondWithRpcPromise('RejectMessage',_0x1dbb('0x80'),_0x380bae);}return null;})[_0x1dbb('0x37')](function(_0x155c8f){var _0x11fdf9=_0x1dbb('0x6f')+_0x155c8f[_0x1dbb('0x28')][_0x1dbb('0x81')];return db[_0x1dbb('0x70')][_0x1dbb('0x42')](_0x11fdf9,{'type':db[_0x1dbb('0x71')]['QueryTypes']['SELECT'],'raw':!![]})[_0x1dbb('0x37')](function(_0x150627){return _0x150627;});})[_0x1dbb('0x37')](function(_0x451643){if(_0x451643){_0x380bae[_0x1dbb('0x28')][_0x1dbb('0x82')]=_0x451643[0x0];if(!_0x48dae0[_0x1dbb('0x58')][_0x1dbb('0x62')])return;return db[_0x1dbb('0x74')]['find']({'where':{'id':_0x48dae0['body']['UserId'],'role':_0x1dbb('0x75')},'attributes':['id','name',_0x1dbb('0x76'),_0x1dbb('0x83'),'internal'],'raw':!![]});}return null;})['then'](function(_0x49bb81){if(!_0x49bb81)return null;_0x380bae[_0x1dbb('0x28')][_0x1dbb('0x75')]=_0x49bb81;return _0x380bae;})[_0x1dbb('0x37')](function(_0x8b56b2){if(_0x8b56b2){_0x8b56b2['message']['interface']=util['format']('SIP/%s',_0x48dae0['user'][_0x1dbb('0x39')]);_0x8b56b2['message']['channel']=_0x380bae[_0x1dbb('0x7b')];_0x8b56b2[_0x1dbb('0x28')][_0x1dbb('0x7c')]=_0x1dbb('0x34');respondWithRpcPromise(_0x1dbb('0x7d'),_0x1dbb('0x7d'),{'event':_0x1dbb('0x84'),'message':_0x8b56b2['message']},client9002);return _0x380bae;}return null;})[_0x1dbb('0x37')](respondWithResult(_0x39c5dd,null))['catch'](handleError(_0x39c5dd,null));};exports[_0x1dbb('0x2b')]=function(_0x2d1e2f,_0x214dd2,_0x1927a3){if(_0x2d1e2f['body']['id']){delete _0x2d1e2f['body']['id'];}var _0x596c39;return db['SmsMessage'][_0x1dbb('0x56')]({'where':{'id':_0x2d1e2f[_0x1dbb('0x53')]['id']}})[_0x1dbb('0x37')](handleEntityNotFound(_0x214dd2,null))[_0x1dbb('0x37')](function(_0x1f6e77){if(_0x1f6e77){_0x596c39=_0x1f6e77;return db[_0x1dbb('0x85')][_0x1dbb('0x56')]({'where':{'id':_0x1f6e77[_0x1dbb('0x86')]}});}})[_0x1dbb('0x37')](handleEntityNotFound(_0x214dd2,null))[_0x1dbb('0x37')](function(_0x17c446){if(_0x17c446){logger['debug'](_0x1dbb('0x24'),'status','received\x20delivery\x20report\x20from',_0x17c446[_0x1dbb('0x3f')],util[_0x1dbb('0x87')](_0x2d1e2f[_0x1dbb('0x58')],{'showHidden':![],'depth':null}));switch(_0x17c446[_0x1dbb('0x3f')]){case _0x1dbb('0x88'):if(_0x2d1e2f['body'][_0x1dbb('0x89')]&&_0x2d1e2f[_0x1dbb('0x58')][_0x1dbb('0x89')]===_0x596c39[_0x1dbb('0x8a')]){return _0x596c39[_0x1dbb('0x36')]({'read':!![]});}else{logger['error'](_0x1dbb('0x8b'),'status','twilio',util['inspect'](_0x2d1e2f[_0x1dbb('0x58')],{'showHidden':![],'depth':null}));}break;case _0x1dbb('0x8c'):if(_0x2d1e2f['body'][_0x1dbb('0x8d')]&&_0x2d1e2f[_0x1dbb('0x58')][_0x1dbb('0x8d')]===_0x596c39[_0x1dbb('0x8a')]&&_[_0x1dbb('0x8e')]([_0x1dbb('0x8f'),_0x1dbb('0x90')],_0x2d1e2f[_0x1dbb('0x58')][_0x1dbb('0x91')])>=0x0){return _0x596c39[_0x1dbb('0x36')]({'read':!![]});}else{logger[_0x1dbb('0x26')](_0x1dbb('0x8b'),'status','plivio',util['inspect'](_0x2d1e2f['body'],{'showHidden':![],'depth':null}));}break;case _0x1dbb('0x92'):var _0x2facaa=_0x2d1e2f['body']['results'][0x0];if(_0x2facaa['status'][_0x1dbb('0x93')]===_0x1dbb('0x94')){return _0x596c39['update']({'read':!![]});}else{logger[_0x1dbb('0x26')](_0x1dbb('0x8b'),'status','infobip',util[_0x1dbb('0x87')](_0x2d1e2f[_0x1dbb('0x58')],{'showHidden':![],'depth':null}));}break;}return _0x596c39;}})[_0x1dbb('0x37')](respondWithResult(_0x214dd2,null))[_0x1dbb('0x29')](handleError(_0x214dd2,null));};
\ No newline at end of file
index 46208de..37fc5f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8eab=['hook','exports','events','SmsMessage','setMaxListeners','save','remove','emit','hasOwnProperty'];(function(_0x169c6b,_0x571727){var _0x5e2f58=function(_0x25a8a4){while(--_0x25a8a4){_0x169c6b['push'](_0x169c6b['shift']());}};_0x5e2f58(++_0x571727);}(_0x8eab,0x1c4));var _0xb8ea=function(_0x4f6ee2,_0x5267a5){_0x4f6ee2=_0x4f6ee2-0x0;var _0x486aec=_0x8eab[_0x4f6ee2];return _0x486aec;};'use strict';var EventEmitter=require(_0xb8ea('0x0'));var SmsMessage=require('../../mysqldb')['db'][_0xb8ea('0x1')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0xb8ea('0x2')](0x0);var events={'afterCreate':_0xb8ea('0x3'),'afterUpdate':'update','afterDestroy':_0xb8ea('0x4')};function emitEvent(_0x555caf){return function(_0x310e56,_0x571068,_0x2a8341){SmsMessageEvents[_0xb8ea('0x5')](_0x555caf+':'+_0x310e56['id'],_0x310e56);SmsMessageEvents[_0xb8ea('0x5')](_0x555caf,_0x310e56);_0x2a8341(null);};}for(var e in events){if(events[_0xb8ea('0x6')](e)){var event=events[e];SmsMessage[_0xb8ea('0x7')](e,emitEvent(event));}}module[_0xb8ea('0x8')]=SmsMessageEvents;
\ No newline at end of file
+var _0x23dc=['setMaxListeners','update','emit','hasOwnProperty','hook','exports','SmsMessage'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x23dc,0x12c));var _0xc23d=function(_0x307b51,_0x7da168){_0x307b51=_0x307b51-0x0;var _0x5cd453=_0x23dc[_0x307b51];return _0x5cd453;};'use strict';var EventEmitter=require('events');var SmsMessage=require('../../mysqldb')['db'][_0xc23d('0x0')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0xc23d('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0xc23d('0x2'),'afterDestroy':'remove'};function emitEvent(_0x174d0e){return function(_0x437c12,_0x444412,_0x3b903e){SmsMessageEvents[_0xc23d('0x3')](_0x174d0e+':'+_0x437c12['id'],_0x437c12);SmsMessageEvents[_0xc23d('0x3')](_0x174d0e,_0x437c12);_0x3b903e(null);};}for(var e in events){if(events[_0xc23d('0x4')](e)){var event=events[e];SmsMessage[_0xc23d('0x5')](e,emitEvent(event));}}module[_0xc23d('0x6')]=SmsMessageEvents;
\ No newline at end of file
index 9151043..dc655b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36f1=['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','message_id','clickSend','Missing\x20parameters:\x20username,\x20password','authId','token','message_uuid','plivo','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','remote','application/json','IBSSO\x20','csc','crypto','apiKey','login','keys','sort','md5','digest','hex','signature=','GET','/external/get/send.php?','id_sms','Missing\x20parameters:\x20apiKey','clickatell','uuid','UTF-8','apiMessageId','https://messaging.bandwidth.com/api/v2/users/','/messages','applicationId','bandwidth','intelepeer','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','Bearer\x20','refid','Token\x20not\x20received','finally','utf8mb4_unicode_ci','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsMessage.attributes','exports','SmsMessage','sms_messages','messageId','fti_sms_messages','body','FULLTEXT','models','toLowerCase','direction','out','secret','SmsInteraction','findOne','SmsInteractionId','update','createdAt','catch','error','SmsAccount','find','SmsAccountId','type','twilio','accountSid','authToken','phone','messages','/api/sms/messages/','/status?token=','then','sid','SmsMessage,\x20%s,\x20%s,\x20%s','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','username','password','smsMethod','sender','login?username=','&password=','split','sms','POST','user_key','internal_order_id','read','afterCreate','connectel','senderString','https://smsapi.connectel.se/api/v2/send/','deliveryReport'];(function(_0x14c154,_0x37093b){var _0x29926c=function(_0x566d26){while(--_0x566d26){_0x14c154['push'](_0x14c154['shift']());}};_0x29926c(++_0x37093b);}(_0x36f1,0xb0));var _0x136f=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x36f1[_0xbca1b1];return _0x4e1686;};'use strict';var _=require(_0x136f('0x0'));var util=require('util');var logger=require(_0x136f('0x1'))('api');var moment=require(_0x136f('0x2'));var BPromise=require(_0x136f('0x3'));var rp=require(_0x136f('0x4'));var fs=require('fs');var path=require(_0x136f('0x5'));var rimraf=require(_0x136f('0x6'));var config=require(_0x136f('0x7'));var attributes=require(_0x136f('0x8'));module[_0x136f('0x9')]=function(_0x5b00b5,_0x430433){return _0x5b00b5['define'](_0x136f('0xa'),attributes,{'tableName':_0x136f('0xb'),'paranoid':![],'indexes':[{'name':_0x136f('0xc'),'fields':['messageId']},{'name':_0x136f('0xd'),'fields':[_0x136f('0xe')],'type':_0x136f('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x7b0a5b,_0x5252bc,_0x4cd978){var _0x1bf151=_0x5b00b5[_0x136f('0x10')];var _0x347e05=_0x7b0a5b['get']({'plain':!![]});if(_0x347e05['direction'][_0x136f('0x11')]()==='in'||_0x347e05[_0x136f('0x12')][_0x136f('0x11')]()===_0x136f('0x13')&&!_0x347e05[_0x136f('0x14')]&&!_['isNil'](_0x347e05['UserId'])){_0x1bf151[_0x136f('0x15')][_0x136f('0x16')]({'where':{'id':_0x347e05[_0x136f('0x17')]}})['then'](function(_0x43fca8){if(_0x43fca8){_0x43fca8[_0x136f('0x18')]({'lastMsgAt':_0x347e05[_0x136f('0x19')],'lastMsgDirection':_0x347e05[_0x136f('0x12')][_0x136f('0x11')]()});}})[_0x136f('0x1a')](function(_0x3a4a84){console[_0x136f('0x1b')](_0x3a4a84);});}if(_0x347e05['direction']===_0x136f('0x13')&&!_0x347e05[_0x136f('0x14')]){var _0x66cee;_0x1bf151[_0x136f('0x1c')][_0x136f('0x1d')]({'where':{'id':_0x347e05[_0x136f('0x1e')]},'raw':!![]})['then'](function(_0xcdab1){_0x66cee=_0xcdab1;if(_0x66cee&&_0x66cee[_0x136f('0x1f')]){switch(_0x66cee['type']){case _0x136f('0x20'):var _0x1e94de=require(_0x136f('0x20'));if(_0x66cee[_0x136f('0x21')]&&_0x66cee[_0x136f('0x22')]&&_0x66cee[_0x136f('0x23')]){var _0x493b41=new _0x1e94de(_0x66cee[_0x136f('0x21')],_0x66cee[_0x136f('0x22')]);_0x493b41[_0x136f('0x24')]['create']({'body':_0x347e05['body'],'to':_0x347e05[_0x136f('0x23')],'from':_0x66cee['phone'],'statusCallback':_0x66cee['remote']+_0x136f('0x25')+_0x347e05['id']+_0x136f('0x26')+_0x66cee['token']})[_0x136f('0x27')](function(_0x34f467){if(_0x34f467[_0x136f('0x28')]){return _0x7b0a5b['update']({'messageId':_0x34f467[_0x136f('0x28')]});}})[_0x136f('0x1a')](function(_0x538101){logger[_0x136f('0x1b')](_0x136f('0x29'),'afterCreate',_0x136f('0x20'),util[_0x136f('0x2a')](_0x538101,{'showHidden':![],'depth':null}));});}else{logger[_0x136f('0x1b')](_0x136f('0x29'),'afterCreate',_0x136f('0x20'),_0x136f('0x2b'));}break;case _0x136f('0x2c'):var _0x23ab25='https://api.skebby.it/API/v1.0/REST/';if(_0x66cee[_0x136f('0x2d')]&&_0x66cee[_0x136f('0x2e')]){var _0x1b8e90={'recipient':[_0x347e05[_0x136f('0x23')]],'message':_0x347e05[_0x136f('0xe')],'message_type':_0x66cee[_0x136f('0x2f')]};if(_0x66cee['smsMethod']&&_0x66cee[_0x136f('0x2f')]!=='SI'){_0x1b8e90[_0x136f('0x30')]=_0x66cee[_0x136f('0x23')];}var _0x5f51a6={'url':_0x23ab25+_0x136f('0x31')+_0x66cee['username']+_0x136f('0x32')+_0x66cee[_0x136f('0x2e')],'method':'GET'};rp(_0x5f51a6)[_0x136f('0x27')](function(_0x65ef2){var _0x21ad42=_0x65ef2[_0x136f('0x33')](';');var _0x268fbe={'user_key':_0x21ad42[0x0],'session_key':_0x21ad42[0x1]};_0x5f51a6={'url':_0x23ab25+_0x136f('0x34'),'method':_0x136f('0x35'),'headers':{'user_key':_0x268fbe[_0x136f('0x36')],'Session_key':_0x268fbe['session_key']},'json':!![],'body':_0x1b8e90};return rp(_0x5f51a6);})[_0x136f('0x27')](function(_0x4ebc7f){if(_0x4ebc7f['total_sent']>=0x1){var _0x504133={'messageId':_0x4ebc7f[_0x136f('0x37')]};if(_0x66cee['smsMethod']!=='GP'||!_0x66cee['deliveryReport']){_0x504133[_0x136f('0x38')]=!![];}return _0x7b0a5b[_0x136f('0x18')](_0x504133);}else{return logger[_0x136f('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x136f('0x39'),_0x136f('0x2c'),util[_0x136f('0x2a')](_0x4ebc7f,{'showHidden':![],'depth':null}));}})[_0x136f('0x1a')](function(_0x1e5138){return logger['error'](_0x136f('0x29'),_0x136f('0x39'),_0x136f('0x2c'),util[_0x136f('0x2a')](_0x1e5138,{'showHidden':![],'depth':null}));});}else{logger[_0x136f('0x1b')](_0x136f('0x29'),_0x136f('0x39'),_0x136f('0x2c'),'Missing\x20parameters:\x20username,\x20password');}break;case _0x136f('0x3a'):if(_0x66cee[_0x136f('0x22')]){var _0x188dd5={'recipient':_0x347e05['phone'],'message':_0x347e05[_0x136f('0xe')],'sender':_0x66cee[_0x136f('0x3b')]||_0x66cee[_0x136f('0x23')],'authorization':_0x66cee[_0x136f('0x22')]};var _0x5252bc={'method':_0x136f('0x35'),'uri':_0x136f('0x3c'),'body':_0x188dd5,'json':!![]};rp(_0x5252bc)[_0x136f('0x27')](function(_0x1f9926){var _0xbd555e={'messageId':_0x1f9926['requestid']};if(!_0x66cee[_0x136f('0x3d')]){_0xbd555e[_0x136f('0x38')]=!![];}return _0x7b0a5b[_0x136f('0x18')](_0xbd555e);})['catch'](function(_0x56b620){logger[_0x136f('0x1b')](_0x136f('0x29'),_0x136f('0x39'),_0x136f('0x3a'),util[_0x136f('0x2a')](_0x56b620,{'showHidden':![],'depth':null}));});}else{logger[_0x136f('0x1b')](_0x136f('0x29'),_0x136f('0x39'),_0x136f('0x3a'),_0x136f('0x3e'));}break;case _0x136f('0x3f'):if(_0x66cee[_0x136f('0x2d')]&&_0x66cee[_0x136f('0x2e')]){var _0x188dd5={'messages':[{'source':_0x136f('0x40'),'to':_0x347e05[_0x136f('0x23')],'body':_0x347e05[_0x136f('0xe')],'from':_0x66cee[_0x136f('0x3b')]||_0x66cee[_0x136f('0x23')]}]};var _0x516732=util[_0x136f('0x41')](_0x136f('0x42'),_0x66cee[_0x136f('0x2d')],_0x66cee[_0x136f('0x2e')]);var _0x5252bc={'method':_0x136f('0x35'),'uri':_0x136f('0x43'),'body':_0x188dd5,'headers':{'Authorization':util[_0x136f('0x41')](_0x136f('0x44'),new Buffer(_0x516732)[_0x136f('0x45')](_0x136f('0x46')))},'json':!![]};rp(_0x5252bc)[_0x136f('0x27')](function(_0x49dc9d){if(_0x49dc9d[_0x136f('0x47')]>=0xc8&&_0x49dc9d[_0x136f('0x47')]<=0xce){if(_0x49dc9d['data']&&_0x49dc9d[_0x136f('0x48')][_0x136f('0x49')]>0x0){var _0x9e572b=_[_0x136f('0x4a')](_0x49dc9d[_0x136f('0x48')][_0x136f('0x24')]);var _0x20621c={'messageId':_0x9e572b[_0x136f('0x4b')]};if(!_0x66cee[_0x136f('0x3d')]){_0x20621c[_0x136f('0x38')]=!![];}return _0x7b0a5b[_0x136f('0x18')](_0x20621c);}else{logger[_0x136f('0x1b')](_0x136f('0x29'),_0x136f('0x39'),'clickSend',util[_0x136f('0x2a')](_0x49dc9d,{'showHidden':![],'depth':null}));}}else{logger[_0x136f('0x1b')](_0x136f('0x29'),_0x136f('0x39'),_0x136f('0x4c'),util[_0x136f('0x2a')](_0x49dc9d,{'showHidden':![],'depth':null}));}})[_0x136f('0x1a')](function(_0x293a49){logger[_0x136f('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x136f('0x39'),_0x136f('0x4c'),util[_0x136f('0x2a')](_0x293a49,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x136f('0x29'),_0x136f('0x39'),_0x136f('0x4c'),_0x136f('0x4d'));}break;case'plivo':if(_0x66cee[_0x136f('0x4e')]&&_0x66cee[_0x136f('0x22')]){var _0x188dd5={'dst':_0x347e05['phone'],'text':_0x347e05['body'],'src':_0x66cee[_0x136f('0x3b')]||_0x66cee[_0x136f('0x23')],'url':_0x66cee['remote']+_0x136f('0x25')+_0x347e05['id']+_0x136f('0x26')+_0x66cee[_0x136f('0x4f')]};var _0x516732=util['format'](_0x136f('0x42'),_0x66cee[_0x136f('0x4e')],_0x66cee[_0x136f('0x22')]);var _0x5252bc={'method':'POST','uri':util[_0x136f('0x41')]('https://api.plivo.com/v1/Account/%s/Message/',_0x66cee['authId']),'body':_0x188dd5,'headers':{'Authorization':util[_0x136f('0x41')](_0x136f('0x44'),new Buffer(_0x516732)[_0x136f('0x45')](_0x136f('0x46')))},'json':!![]};rp(_0x5252bc)[_0x136f('0x27')](function(_0x547cb8){var _0x44fc7e={'messageId':_0x547cb8[_0x136f('0x50')][0x0]};return _0x7b0a5b[_0x136f('0x18')](_0x44fc7e);})[_0x136f('0x1a')](function(_0x30b5ad){logger[_0x136f('0x1b')](_0x136f('0x29'),_0x136f('0x39'),'plivo',util[_0x136f('0x2a')](_0x30b5ad,{'showHidden':![],'depth':null}));});}else{logger[_0x136f('0x1b')](_0x136f('0x29'),_0x136f('0x39'),_0x136f('0x51'),'Missing\x20parameters:\x20authId,\x20authToken');}break;case _0x136f('0x52'):if(_0x66cee[_0x136f('0x2d')]&&_0x66cee[_0x136f('0x2e')]){if(_0x66cee[_0x136f('0x53')]){var _0x5a46e9={'method':_0x136f('0x35'),'uri':_0x66cee[_0x136f('0x53')]+_0x136f('0x54'),'body':{'username':_0x66cee[_0x136f('0x2d')],'password':_0x66cee[_0x136f('0x2e')]},'json':!![]};return rp(_0x5a46e9)[_0x136f('0x27')](function(_0x14ff2d){var _0x3476dd={'method':_0x136f('0x35'),'uri':_0x66cee[_0x136f('0x53')]+_0x136f('0x55'),'body':{'messages':[{'from':_0x66cee[_0x136f('0x23')],'destinations':[{'to':_0x347e05['phone']}],'text':_0x347e05[_0x136f('0xe')],'notifyUrl':_0x66cee[_0x136f('0x56')]+_0x136f('0x25')+_0x347e05['id']+_0x136f('0x26')+_0x66cee[_0x136f('0x4f')],'notifyContentType':_0x136f('0x57'),'callbackData':_0x66cee[_0x136f('0x23')]+';'+_0x347e05[_0x136f('0xe')]}]},'headers':{'Authorization':_0x136f('0x58')+_0x14ff2d[_0x136f('0x4f')]},'json':!![]};return rp(_0x3476dd)[_0x136f('0x27')](function(_0x550ae3){if(_0x550ae3[_0x136f('0x24')]){var _0x2926b5={'messageId':_0x550ae3[_0x136f('0x24')][0x0][_0x136f('0xc')]};if(!_0x66cee[_0x136f('0x3d')]){_0x2926b5[_0x136f('0x38')]=!![];}return _0x7b0a5b[_0x136f('0x18')](_0x2926b5);}else{return logger[_0x136f('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x136f('0x39'),_0x136f('0x52'),util[_0x136f('0x2a')](_0x550ae3,{'showHidden':![],'depth':null}));}});})['catch'](function(_0x2a3395){return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x136f('0x39'),_0x136f('0x52'),util[_0x136f('0x2a')](_0x2a3395,{'showHidden':![],'depth':null}));});}else{logger[_0x136f('0x1b')](_0x136f('0x29'),_0x136f('0x39'),_0x136f('0x52'),'Missing\x20parameters:\x20base_url');}}else{logger[_0x136f('0x1b')](_0x136f('0x29'),_0x136f('0x39'),_0x136f('0x52'),_0x136f('0x4d'));}break;case _0x136f('0x59'):var _0x3d7a48=require(_0x136f('0x5a'));if(_0x66cee[_0x136f('0x5b')]){var _0x2231a3={};_0x2231a3[_0x136f('0x5c')]=_0x66cee[_0x136f('0x2d')];_0x2231a3[_0x136f('0x23')]=_0x347e05[_0x136f('0x23')];_0x2231a3[_0x136f('0x30')]=_0x66cee['phone'];_0x2231a3['text']=_0x347e05[_0x136f('0xe')];_0x2231a3['timestamp']=+new Date();var _0x3df463='';var _0x4e148f='';var _0x396787=Object[_0x136f('0x5d')](_0x2231a3);_0x396787[_0x136f('0x5e')]();for(var _0x41e503=0x0;_0x41e503<_0x396787['length'];_0x41e503++){if(_0x3df463!=''){_0x3df463+='&';}_0x3df463+=_0x396787[_0x41e503]+'='+encodeURIComponent(_0x2231a3[_0x396787[_0x41e503]]);_0x4e148f+=_0x2231a3[_0x396787[_0x41e503]];}_0x4e148f+=_0x66cee[_0x136f('0x5b')];_0x4e148f=_0x3d7a48['createHash'](_0x136f('0x5f'))[_0x136f('0x18')](_0x4e148f)[_0x136f('0x60')](_0x136f('0x61'));if(_0x3df463!==''){_0x3df463+='&';}_0x3df463+=_0x136f('0x62')+_0x4e148f;var _0x5f51a6={'method':_0x136f('0x63'),'uri':_0x66cee[_0x136f('0x53')]+_0x136f('0x64')+_0x3df463,'json':!![]};return rp(_0x5f51a6)[_0x136f('0x27')](function(_0xaeba7e){var _0x3dcfce=Object[_0x136f('0x5d')](_0xaeba7e);if(_0xaeba7e[_0x3dcfce[0x0]][_0x136f('0x1b')]&&parseInt(_0xaeba7e[_0x3dcfce[0x0]][_0x136f('0x1b')])===0x0){var _0x58cae2={'messageId':_0xaeba7e[_0x3dcfce[0x0]][_0x136f('0x65')]};if(!_0x66cee[_0x136f('0x3d')]){_0x58cae2[_0x136f('0x38')]=!![];}return _0x7b0a5b[_0x136f('0x18')](_0x58cae2);}else{return logger['error'](_0x136f('0x29'),_0x136f('0x39'),_0x136f('0x59'),util['inspect'](_0xaeba7e[_0x136f('0x1b')],{'showHidden':![],'depth':null}));}})[_0x136f('0x1a')](function(_0xc01b7d){return logger[_0x136f('0x1b')](_0x136f('0x29'),'afterCreate','csc',util[_0x136f('0x2a')](_0xc01b7d,{'showHidden':![],'depth':null}));});}else{logger[_0x136f('0x1b')](_0x136f('0x29'),_0x136f('0x39'),_0x136f('0x59'),_0x136f('0x66'));}break;case _0x136f('0x67'):if(_0x66cee[_0x136f('0x5b')]){var _0x5579f5={'method':_0x136f('0x35'),'uri':'https://platform.clickatell.com/messages','headers':{'Authorization':_0x66cee[_0x136f('0x5b')]},'body':{'content':_0x347e05[_0x136f('0xe')],'to':[_0x347e05['phone']],'from':_0x66cee['phone'],'binary':![],'clientMessageId':_0x136f('0x68'),'charset':_0x136f('0x69')},'json':!![]};rp(_0x5579f5)['then'](function(_0x56fd66){if(!_0x56fd66[_0x136f('0x1b')]){var _0x3d2b97={'messageId':_0x56fd66[_0x136f('0x24')][0x0][_0x136f('0x6a')]};if(!_0x66cee[_0x136f('0x3d')]){_0x3d2b97[_0x136f('0x38')]=!![];}return _0x7b0a5b[_0x136f('0x18')](_0x3d2b97);}else{return logger[_0x136f('0x1b')](_0x136f('0x29'),_0x136f('0x39'),'clickatell',util[_0x136f('0x2a')](_0x56fd66[_0x136f('0x1b')],{'showHidden':![],'depth':null}));}})[_0x136f('0x1a')](function(_0x52d9bf){return logger[_0x136f('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x136f('0x39'),_0x136f('0x67'),util['inspect'](_0x52d9bf,{'showHidden':![],'depth':null}));});}else{logger[_0x136f('0x1b')](_0x136f('0x29'),_0x136f('0x39'),_0x136f('0x67'),_0x136f('0x66'));}break;case'bandwidth':if(_0x66cee[_0x136f('0x2d')]&&_0x66cee[_0x136f('0x2e')]){var _0x516732=util['format'](_0x136f('0x42'),_0x66cee[_0x136f('0x2d')],_0x66cee['password']);var _0x5252bc={'method':_0x136f('0x35'),'uri':_0x136f('0x6b')+_0x66cee['accountId']+_0x136f('0x6c'),'body':{'to':[_0x347e05[_0x136f('0x23')]],'text':_0x347e05[_0x136f('0xe')],'from':_0x66cee[_0x136f('0x23')],'applicationId':_0x66cee[_0x136f('0x6d')]},'headers':{'Authorization':util[_0x136f('0x41')]('Basic\x20%s',new Buffer(_0x516732)[_0x136f('0x45')](_0x136f('0x46')))},'json':!![]};rp(_0x5252bc)[_0x136f('0x27')](function(_0x281acc){if(_0x281acc['id']){var _0x5804fe={'messageId':_0x281acc['id']};return _0x7b0a5b[_0x136f('0x18')](_0x5804fe);}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x136f('0x39'),'bandwidth',util['inspect'](_0x281acc,{'showHidden':![],'depth':null}));}})[_0x136f('0x1a')](function(_0x5b33c3){logger[_0x136f('0x1b')](_0x136f('0x29'),_0x136f('0x39'),_0x136f('0x6e'),util[_0x136f('0x2a')](_0x5b33c3,{'showHidden':![],'depth':null}));});}else{logger[_0x136f('0x1b')](_0x136f('0x29'),_0x136f('0x39'),_0x136f('0x6e'),'Missing\x20parameters:\x20username,\x20password');}break;case _0x136f('0x6f'):if(_0x66cee[_0x136f('0x5b')]){var _0x11a3f3={};var _0x5f51a6={'method':_0x136f('0x35'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/send','headers':{'Authorization':'Bearer\x20'+_0x66cee['apiKey'],'Content-Type':'application/json'},'body':{'from':_0x66cee[_0x136f('0x23')],'to':_0x347e05[_0x136f('0x23')],'text':_0x347e05[_0x136f('0xe')]},'json':!![]};return rp(_0x5f51a6)['then'](function(_0x44e4bf){if(_0x44e4bf['code']==0xca){_0x11a3f3[_0x136f('0x70')]=_0x44e4bf;var _0x4b6322={'method':'POST','uri':_0x136f('0x71'),'headers':{'Authorization':_0x136f('0x72')+_0x66cee['apiKey'],'Content-Type':_0x136f('0x57')},'body':{'refid':_0x11a3f3['message'][_0x136f('0x73')]},'json':!![]};return rp(_0x4b6322)[_0x136f('0x27')](function(_0x41c64a){_0x11a3f3['status']=_0x41c64a;var _0x3ee110={'messageId':_0x11a3f3[_0x136f('0x70')][_0x136f('0x73')],'read':!![]};return _0x7b0a5b['update'](_0x3ee110);});}else{return logger[_0x136f('0x1b')](_0x136f('0x29'),_0x136f('0x39'),_0x136f('0x6f'),util[_0x136f('0x2a')](_0x44e4bf,{'showHidden':![],'depth':null}));}})[_0x136f('0x1a')](function(_0x552246){return logger['error'](_0x136f('0x29'),_0x136f('0x39'),'intelepeer',util[_0x136f('0x2a')](_0x552246,{'showHidden':![],'depth':null}));});}else{return logger[_0x136f('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x136f('0x6f'),_0x136f('0x74'));}break;}}})[_0x136f('0x75')](function(){_0x4cd978();});}else{_0x4cd978();}}},'charset':'utf8mb4','collate':_0x136f('0x76')});};
\ No newline at end of file
+var _0xf323=['get','toLowerCase','direction','out','UserId','SmsInteraction','SmsInteractionId','then','catch','secret','find','SmsAccountId','type','twilio','accountSid','authToken','phone','messages','remote','/status?token=','token','sid','update','error','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','https://api.skebby.it/API/v1.0/REST/','username','password','smsMethod','sender','login?username=','&password=','split','sms','POST','user_key','session_key','internal_order_id','read','skebby','Missing\x20parameters:\x20username,\x20password','connectel','https://smsapi.connectel.se/api/v2/send/','requestid','Missing\x20parameters:\x20authToken','senderString','format','%s:%s','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','base64','http_code','data','queued_count','deliveryReport','clickSend','plivo','authId','https://api.plivo.com/v1/Account/%s/Message/','message_uuid','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','IBSSO\x20','csc','crypto','apiKey','text','timestamp','keys','length','createHash','digest','hex','signature=','GET','/external/get/send.php?','id_sms','Missing\x20parameters:\x20apiKey','clickatell','https://platform.clickatell.com/messages','UTF-8','apiMessageId','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','/messages','applicationId','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','application/json','code','message','status','Token\x20not\x20received','finally','utf8mb4_unicode_ci','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','messageId','fti_sms_messages','body','FULLTEXT','models'];(function(_0xc0c5a0,_0x181fa5){var _0x6f29bf=function(_0x3a5760){while(--_0x3a5760){_0xc0c5a0['push'](_0xc0c5a0['shift']());}};_0x6f29bf(++_0x181fa5);}(_0xf323,0x1c6));var _0x3f32=function(_0x3a2e4a,_0xb9a3ae){_0x3a2e4a=_0x3a2e4a-0x0;var _0x394a41=_0xf323[_0x3a2e4a];return _0x394a41;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3f32('0x0'))(_0x3f32('0x1'));var moment=require('moment');var BPromise=require(_0x3f32('0x2'));var rp=require(_0x3f32('0x3'));var fs=require('fs');var path=require(_0x3f32('0x4'));var rimraf=require(_0x3f32('0x5'));var config=require(_0x3f32('0x6'));var attributes=require('./smsMessage.attributes');module[_0x3f32('0x7')]=function(_0x2b4488,_0xf8ca8b){return _0x2b4488[_0x3f32('0x8')]('SmsMessage',attributes,{'tableName':'sms_messages','paranoid':![],'indexes':[{'name':_0x3f32('0x9'),'fields':[_0x3f32('0x9')]},{'name':_0x3f32('0xa'),'fields':[_0x3f32('0xb')],'type':_0x3f32('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1c3257,_0x228ac0,_0x952bb4){var _0x5ca455=_0x2b4488[_0x3f32('0xd')];var _0x446045=_0x1c3257[_0x3f32('0xe')]({'plain':!![]});if(_0x446045['direction'][_0x3f32('0xf')]()==='in'||_0x446045[_0x3f32('0x10')][_0x3f32('0xf')]()===_0x3f32('0x11')&&!_0x446045['secret']&&!_['isNil'](_0x446045[_0x3f32('0x12')])){_0x5ca455[_0x3f32('0x13')]['findOne']({'where':{'id':_0x446045[_0x3f32('0x14')]}})[_0x3f32('0x15')](function(_0xc68dd5){if(_0xc68dd5){_0xc68dd5['update']({'lastMsgAt':_0x446045['createdAt'],'lastMsgDirection':_0x446045[_0x3f32('0x10')][_0x3f32('0xf')]()});}})[_0x3f32('0x16')](function(_0x219d91){console['error'](_0x219d91);});}if(_0x446045['direction']===_0x3f32('0x11')&&!_0x446045[_0x3f32('0x17')]){var _0x3a8e7b;_0x5ca455['SmsAccount'][_0x3f32('0x18')]({'where':{'id':_0x446045[_0x3f32('0x19')]},'raw':!![]})[_0x3f32('0x15')](function(_0x8d70ee){_0x3a8e7b=_0x8d70ee;if(_0x3a8e7b&&_0x3a8e7b[_0x3f32('0x1a')]){switch(_0x3a8e7b[_0x3f32('0x1a')]){case'twilio':var _0x24c741=require(_0x3f32('0x1b'));if(_0x3a8e7b[_0x3f32('0x1c')]&&_0x3a8e7b[_0x3f32('0x1d')]&&_0x3a8e7b[_0x3f32('0x1e')]){var _0x2e698a=new _0x24c741(_0x3a8e7b['accountSid'],_0x3a8e7b[_0x3f32('0x1d')]);_0x2e698a[_0x3f32('0x1f')]['create']({'body':_0x446045[_0x3f32('0xb')],'to':_0x446045[_0x3f32('0x1e')],'from':_0x3a8e7b[_0x3f32('0x1e')],'statusCallback':_0x3a8e7b[_0x3f32('0x20')]+'/api/sms/messages/'+_0x446045['id']+_0x3f32('0x21')+_0x3a8e7b[_0x3f32('0x22')]})['then'](function(_0x416015){if(_0x416015[_0x3f32('0x23')]){return _0x1c3257[_0x3f32('0x24')]({'messageId':_0x416015[_0x3f32('0x23')]});}})[_0x3f32('0x16')](function(_0x11f4ab){logger[_0x3f32('0x25')](_0x3f32('0x26'),_0x3f32('0x27'),_0x3f32('0x1b'),util[_0x3f32('0x28')](_0x11f4ab,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x3f32('0x26'),_0x3f32('0x27'),'twilio',_0x3f32('0x29'));}break;case'skebby':var _0x50e9aa=_0x3f32('0x2a');if(_0x3a8e7b[_0x3f32('0x2b')]&&_0x3a8e7b[_0x3f32('0x2c')]){var _0x320972={'recipient':[_0x446045[_0x3f32('0x1e')]],'message':_0x446045[_0x3f32('0xb')],'message_type':_0x3a8e7b[_0x3f32('0x2d')]};if(_0x3a8e7b[_0x3f32('0x2d')]&&_0x3a8e7b[_0x3f32('0x2d')]!=='SI'){_0x320972[_0x3f32('0x2e')]=_0x3a8e7b[_0x3f32('0x1e')];}var _0x5b1d9b={'url':_0x50e9aa+_0x3f32('0x2f')+_0x3a8e7b[_0x3f32('0x2b')]+_0x3f32('0x30')+_0x3a8e7b[_0x3f32('0x2c')],'method':'GET'};rp(_0x5b1d9b)['then'](function(_0x4fd7e2){var _0x173b92=_0x4fd7e2[_0x3f32('0x31')](';');var _0x408ed7={'user_key':_0x173b92[0x0],'session_key':_0x173b92[0x1]};_0x5b1d9b={'url':_0x50e9aa+_0x3f32('0x32'),'method':_0x3f32('0x33'),'headers':{'user_key':_0x408ed7[_0x3f32('0x34')],'Session_key':_0x408ed7[_0x3f32('0x35')]},'json':!![],'body':_0x320972};return rp(_0x5b1d9b);})[_0x3f32('0x15')](function(_0x1272a1){if(_0x1272a1['total_sent']>=0x1){var _0x142c6e={'messageId':_0x1272a1[_0x3f32('0x36')]};if(_0x3a8e7b['smsMethod']!=='GP'||!_0x3a8e7b['deliveryReport']){_0x142c6e[_0x3f32('0x37')]=!![];}return _0x1c3257[_0x3f32('0x24')](_0x142c6e);}else{return logger[_0x3f32('0x25')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x3f32('0x38'),util[_0x3f32('0x28')](_0x1272a1,{'showHidden':![],'depth':null}));}})[_0x3f32('0x16')](function(_0x123fe0){return logger['error'](_0x3f32('0x26'),'afterCreate',_0x3f32('0x38'),util[_0x3f32('0x28')](_0x123fe0,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x3f32('0x26'),_0x3f32('0x27'),_0x3f32('0x38'),_0x3f32('0x39'));}break;case _0x3f32('0x3a'):if(_0x3a8e7b[_0x3f32('0x1d')]){var _0xdfa32c={'recipient':_0x446045[_0x3f32('0x1e')],'message':_0x446045['body'],'sender':_0x3a8e7b['senderString']||_0x3a8e7b[_0x3f32('0x1e')],'authorization':_0x3a8e7b[_0x3f32('0x1d')]};var _0x228ac0={'method':_0x3f32('0x33'),'uri':_0x3f32('0x3b'),'body':_0xdfa32c,'json':!![]};rp(_0x228ac0)[_0x3f32('0x15')](function(_0x28bd51){var _0x18637f={'messageId':_0x28bd51[_0x3f32('0x3c')]};if(!_0x3a8e7b['deliveryReport']){_0x18637f[_0x3f32('0x37')]=!![];}return _0x1c3257[_0x3f32('0x24')](_0x18637f);})[_0x3f32('0x16')](function(_0x579d4e){logger[_0x3f32('0x25')](_0x3f32('0x26'),'afterCreate',_0x3f32('0x3a'),util[_0x3f32('0x28')](_0x579d4e,{'showHidden':![],'depth':null}));});}else{logger[_0x3f32('0x25')](_0x3f32('0x26'),_0x3f32('0x27'),_0x3f32('0x3a'),_0x3f32('0x3d'));}break;case'clicksend':if(_0x3a8e7b['username']&&_0x3a8e7b[_0x3f32('0x2c')]){var _0xdfa32c={'messages':[{'source':'xCALLY\x20Motion','to':_0x446045[_0x3f32('0x1e')],'body':_0x446045[_0x3f32('0xb')],'from':_0x3a8e7b[_0x3f32('0x3e')]||_0x3a8e7b[_0x3f32('0x1e')]}]};var _0x2dc7cf=util[_0x3f32('0x3f')](_0x3f32('0x40'),_0x3a8e7b['username'],_0x3a8e7b[_0x3f32('0x2c')]);var _0x228ac0={'method':_0x3f32('0x33'),'uri':_0x3f32('0x41'),'body':_0xdfa32c,'headers':{'Authorization':util[_0x3f32('0x3f')](_0x3f32('0x42'),new Buffer(_0x2dc7cf)[_0x3f32('0x43')](_0x3f32('0x44')))},'json':!![]};rp(_0x228ac0)[_0x3f32('0x15')](function(_0x50faa4){if(_0x50faa4[_0x3f32('0x45')]>=0xc8&&_0x50faa4[_0x3f32('0x45')]<=0xce){if(_0x50faa4[_0x3f32('0x46')]&&_0x50faa4[_0x3f32('0x46')][_0x3f32('0x47')]>0x0){var _0x562ca0=_['head'](_0x50faa4[_0x3f32('0x46')][_0x3f32('0x1f')]);var _0x1287af={'messageId':_0x562ca0['message_id']};if(!_0x3a8e7b[_0x3f32('0x48')]){_0x1287af['read']=!![];}return _0x1c3257[_0x3f32('0x24')](_0x1287af);}else{logger[_0x3f32('0x25')](_0x3f32('0x26'),_0x3f32('0x27'),_0x3f32('0x49'),util['inspect'](_0x50faa4,{'showHidden':![],'depth':null}));}}else{logger[_0x3f32('0x25')](_0x3f32('0x26'),_0x3f32('0x27'),'clickSend',util['inspect'](_0x50faa4,{'showHidden':![],'depth':null}));}})[_0x3f32('0x16')](function(_0x4fa926){logger[_0x3f32('0x25')](_0x3f32('0x26'),_0x3f32('0x27'),_0x3f32('0x49'),util[_0x3f32('0x28')](_0x4fa926,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x3f32('0x26'),_0x3f32('0x27'),_0x3f32('0x49'),_0x3f32('0x39'));}break;case _0x3f32('0x4a'):if(_0x3a8e7b['authId']&&_0x3a8e7b[_0x3f32('0x1d')]){var _0xdfa32c={'dst':_0x446045['phone'],'text':_0x446045[_0x3f32('0xb')],'src':_0x3a8e7b[_0x3f32('0x3e')]||_0x3a8e7b[_0x3f32('0x1e')],'url':_0x3a8e7b[_0x3f32('0x20')]+'/api/sms/messages/'+_0x446045['id']+_0x3f32('0x21')+_0x3a8e7b[_0x3f32('0x22')]};var _0x2dc7cf=util[_0x3f32('0x3f')](_0x3f32('0x40'),_0x3a8e7b[_0x3f32('0x4b')],_0x3a8e7b[_0x3f32('0x1d')]);var _0x228ac0={'method':'POST','uri':util[_0x3f32('0x3f')](_0x3f32('0x4c'),_0x3a8e7b['authId']),'body':_0xdfa32c,'headers':{'Authorization':util[_0x3f32('0x3f')]('Basic\x20%s',new Buffer(_0x2dc7cf)[_0x3f32('0x43')](_0x3f32('0x44')))},'json':!![]};rp(_0x228ac0)[_0x3f32('0x15')](function(_0x4675b2){var _0x3d889a={'messageId':_0x4675b2[_0x3f32('0x4d')][0x0]};return _0x1c3257[_0x3f32('0x24')](_0x3d889a);})['catch'](function(_0x114ed8){logger[_0x3f32('0x25')](_0x3f32('0x26'),_0x3f32('0x27'),_0x3f32('0x4a'),util[_0x3f32('0x28')](_0x114ed8,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x3f32('0x26'),_0x3f32('0x27'),_0x3f32('0x4a'),'Missing\x20parameters:\x20authId,\x20authToken');}break;case _0x3f32('0x4e'):if(_0x3a8e7b[_0x3f32('0x2b')]&&_0x3a8e7b[_0x3f32('0x2c')]){if(_0x3a8e7b[_0x3f32('0x4f')]){var _0x2d0e9e={'method':'POST','uri':_0x3a8e7b['baseUrl']+_0x3f32('0x50'),'body':{'username':_0x3a8e7b[_0x3f32('0x2b')],'password':_0x3a8e7b[_0x3f32('0x2c')]},'json':!![]};return rp(_0x2d0e9e)['then'](function(_0x239e09){var _0xcfc079={'method':_0x3f32('0x33'),'uri':_0x3a8e7b[_0x3f32('0x4f')]+_0x3f32('0x51'),'body':{'messages':[{'from':_0x3a8e7b['phone'],'destinations':[{'to':_0x446045[_0x3f32('0x1e')]}],'text':_0x446045[_0x3f32('0xb')],'notifyUrl':_0x3a8e7b[_0x3f32('0x20')]+'/api/sms/messages/'+_0x446045['id']+'/status?token='+_0x3a8e7b[_0x3f32('0x22')],'notifyContentType':'application/json','callbackData':_0x3a8e7b['phone']+';'+_0x446045[_0x3f32('0xb')]}]},'headers':{'Authorization':_0x3f32('0x52')+_0x239e09[_0x3f32('0x22')]},'json':!![]};return rp(_0xcfc079)[_0x3f32('0x15')](function(_0x32ef89){if(_0x32ef89['messages']){var _0x54802d={'messageId':_0x32ef89['messages'][0x0][_0x3f32('0x9')]};if(!_0x3a8e7b[_0x3f32('0x48')]){_0x54802d['read']=!![];}return _0x1c3257[_0x3f32('0x24')](_0x54802d);}else{return logger[_0x3f32('0x25')](_0x3f32('0x26'),_0x3f32('0x27'),'infobip',util[_0x3f32('0x28')](_0x32ef89,{'showHidden':![],'depth':null}));}});})[_0x3f32('0x16')](function(_0x1fe1f5){return logger[_0x3f32('0x25')](_0x3f32('0x26'),'afterCreate','infobip',util[_0x3f32('0x28')](_0x1fe1f5,{'showHidden':![],'depth':null}));});}else{logger[_0x3f32('0x25')](_0x3f32('0x26'),'afterCreate',_0x3f32('0x4e'),'Missing\x20parameters:\x20base_url');}}else{logger['error'](_0x3f32('0x26'),_0x3f32('0x27'),_0x3f32('0x4e'),_0x3f32('0x39'));}break;case _0x3f32('0x53'):var _0x24b4e1=require(_0x3f32('0x54'));if(_0x3a8e7b[_0x3f32('0x55')]){var _0x2e0093={};_0x2e0093['login']=_0x3a8e7b[_0x3f32('0x2b')];_0x2e0093[_0x3f32('0x1e')]=_0x446045['phone'];_0x2e0093[_0x3f32('0x2e')]=_0x3a8e7b['phone'];_0x2e0093[_0x3f32('0x56')]=_0x446045['body'];_0x2e0093[_0x3f32('0x57')]=+new Date();var _0x338ba8='';var _0x1b2d61='';var _0x4d76aa=Object[_0x3f32('0x58')](_0x2e0093);_0x4d76aa['sort']();for(var _0x1d5088=0x0;_0x1d5088<_0x4d76aa[_0x3f32('0x59')];_0x1d5088++){if(_0x338ba8!=''){_0x338ba8+='&';}_0x338ba8+=_0x4d76aa[_0x1d5088]+'='+encodeURIComponent(_0x2e0093[_0x4d76aa[_0x1d5088]]);_0x1b2d61+=_0x2e0093[_0x4d76aa[_0x1d5088]];}_0x1b2d61+=_0x3a8e7b[_0x3f32('0x55')];_0x1b2d61=_0x24b4e1[_0x3f32('0x5a')]('md5')[_0x3f32('0x24')](_0x1b2d61)[_0x3f32('0x5b')](_0x3f32('0x5c'));if(_0x338ba8!==''){_0x338ba8+='&';}_0x338ba8+=_0x3f32('0x5d')+_0x1b2d61;var _0x5b1d9b={'method':_0x3f32('0x5e'),'uri':_0x3a8e7b['baseUrl']+_0x3f32('0x5f')+_0x338ba8,'json':!![]};return rp(_0x5b1d9b)['then'](function(_0x13787a){var _0x4a14d9=Object[_0x3f32('0x58')](_0x13787a);if(_0x13787a[_0x4a14d9[0x0]][_0x3f32('0x25')]&&parseInt(_0x13787a[_0x4a14d9[0x0]][_0x3f32('0x25')])===0x0){var _0x4f9289={'messageId':_0x13787a[_0x4a14d9[0x0]][_0x3f32('0x60')]};if(!_0x3a8e7b[_0x3f32('0x48')]){_0x4f9289[_0x3f32('0x37')]=!![];}return _0x1c3257['update'](_0x4f9289);}else{return logger[_0x3f32('0x25')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x3f32('0x27'),_0x3f32('0x53'),util[_0x3f32('0x28')](_0x13787a[_0x3f32('0x25')],{'showHidden':![],'depth':null}));}})[_0x3f32('0x16')](function(_0x11ee5f){return logger[_0x3f32('0x25')](_0x3f32('0x26'),_0x3f32('0x27'),_0x3f32('0x53'),util[_0x3f32('0x28')](_0x11ee5f,{'showHidden':![],'depth':null}));});}else{logger[_0x3f32('0x25')](_0x3f32('0x26'),_0x3f32('0x27'),'csc',_0x3f32('0x61'));}break;case _0x3f32('0x62'):if(_0x3a8e7b['apiKey']){var _0x1a8517={'method':'POST','uri':_0x3f32('0x63'),'headers':{'Authorization':_0x3a8e7b[_0x3f32('0x55')]},'body':{'content':_0x446045[_0x3f32('0xb')],'to':[_0x446045[_0x3f32('0x1e')]],'from':_0x3a8e7b[_0x3f32('0x1e')],'binary':![],'clientMessageId':'uuid','charset':_0x3f32('0x64')},'json':!![]};rp(_0x1a8517)[_0x3f32('0x15')](function(_0x58b279){if(!_0x58b279[_0x3f32('0x25')]){var _0x4e9e91={'messageId':_0x58b279[_0x3f32('0x1f')][0x0][_0x3f32('0x65')]};if(!_0x3a8e7b[_0x3f32('0x48')]){_0x4e9e91['read']=!![];}return _0x1c3257['update'](_0x4e9e91);}else{return logger[_0x3f32('0x25')](_0x3f32('0x26'),_0x3f32('0x27'),_0x3f32('0x62'),util[_0x3f32('0x28')](_0x58b279[_0x3f32('0x25')],{'showHidden':![],'depth':null}));}})[_0x3f32('0x16')](function(_0x397216){return logger[_0x3f32('0x25')](_0x3f32('0x26'),_0x3f32('0x27'),'clickatell',util[_0x3f32('0x28')](_0x397216,{'showHidden':![],'depth':null}));});}else{logger[_0x3f32('0x25')](_0x3f32('0x26'),_0x3f32('0x27'),'clickatell',_0x3f32('0x61'));}break;case _0x3f32('0x66'):if(_0x3a8e7b[_0x3f32('0x2b')]&&_0x3a8e7b[_0x3f32('0x2c')]){var _0x2dc7cf=util[_0x3f32('0x3f')](_0x3f32('0x40'),_0x3a8e7b[_0x3f32('0x2b')],_0x3a8e7b[_0x3f32('0x2c')]);var _0x228ac0={'method':_0x3f32('0x33'),'uri':_0x3f32('0x67')+_0x3a8e7b[_0x3f32('0x68')]+_0x3f32('0x69'),'body':{'to':[_0x446045['phone']],'text':_0x446045['body'],'from':_0x3a8e7b[_0x3f32('0x1e')],'applicationId':_0x3a8e7b[_0x3f32('0x6a')]},'headers':{'Authorization':util[_0x3f32('0x3f')](_0x3f32('0x42'),new Buffer(_0x2dc7cf)['toString'](_0x3f32('0x44')))},'json':!![]};rp(_0x228ac0)[_0x3f32('0x15')](function(_0x10009f){if(_0x10009f['id']){var _0x17b3a2={'messageId':_0x10009f['id']};return _0x1c3257[_0x3f32('0x24')](_0x17b3a2);}else{logger['error'](_0x3f32('0x26'),_0x3f32('0x27'),_0x3f32('0x66'),util[_0x3f32('0x28')](_0x10009f,{'showHidden':![],'depth':null}));}})['catch'](function(_0x3a4eb4){logger[_0x3f32('0x25')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x3f32('0x27'),'bandwidth',util['inspect'](_0x3a4eb4,{'showHidden':![],'depth':null}));});}else{logger[_0x3f32('0x25')](_0x3f32('0x26'),_0x3f32('0x27'),_0x3f32('0x66'),_0x3f32('0x39'));}break;case _0x3f32('0x6b'):if(_0x3a8e7b[_0x3f32('0x55')]){var _0x36d197={};var _0x5b1d9b={'method':_0x3f32('0x33'),'uri':_0x3f32('0x6c'),'headers':{'Authorization':_0x3f32('0x6d')+_0x3a8e7b[_0x3f32('0x55')],'Content-Type':_0x3f32('0x6e')},'body':{'from':_0x3a8e7b[_0x3f32('0x1e')],'to':_0x446045[_0x3f32('0x1e')],'text':_0x446045['body']},'json':!![]};return rp(_0x5b1d9b)[_0x3f32('0x15')](function(_0x436dbb){if(_0x436dbb[_0x3f32('0x6f')]==0xca){_0x36d197[_0x3f32('0x70')]=_0x436dbb;var _0x1fdcbf={'method':_0x3f32('0x33'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/mdr','headers':{'Authorization':_0x3f32('0x6d')+_0x3a8e7b['apiKey'],'Content-Type':'application/json'},'body':{'refid':_0x36d197[_0x3f32('0x70')]['refid']},'json':!![]};return rp(_0x1fdcbf)[_0x3f32('0x15')](function(_0xfaf224){_0x36d197[_0x3f32('0x71')]=_0xfaf224;var _0x3e05fb={'messageId':_0x36d197['message']['refid'],'read':!![]};return _0x1c3257[_0x3f32('0x24')](_0x3e05fb);});}else{return logger[_0x3f32('0x25')](_0x3f32('0x26'),'afterCreate',_0x3f32('0x6b'),util[_0x3f32('0x28')](_0x436dbb,{'showHidden':![],'depth':null}));}})[_0x3f32('0x16')](function(_0x33a079){return logger[_0x3f32('0x25')](_0x3f32('0x26'),_0x3f32('0x27'),'intelepeer',util[_0x3f32('0x28')](_0x33a079,{'showHidden':![],'depth':null}));});}else{return logger[_0x3f32('0x25')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x3f32('0x27'),_0x3f32('0x6b'),_0x3f32('0x72'));}break;}}})[_0x3f32('0x73')](function(){_0x952bb4();});}else{_0x952bb4();}}},'charset':'utf8mb4','collate':_0x3f32('0x74')});};
\ No newline at end of file
index 6f6b4db..377ed63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b30=['redis','defaults','localhost','socket.io-emitter','./smsMessage.socket','register','request','then','info','SmsMessage,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','CreateSmsMessage','create','body','options','raw','catch','lodash','util','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','client'];(function(_0x338349,_0x21c3cc){var _0x2a13b8=function(_0x3d6ae9){while(--_0x3d6ae9){_0x338349['push'](_0x338349['shift']());}};_0x2a13b8(++_0x21c3cc);}(_0x3b30,0x14c));var _0x03b3=function(_0x37dbac,_0x53e80b){_0x37dbac=_0x37dbac-0x0;var _0x764119=_0x3b30[_0x37dbac];return _0x764119;};'use strict';var _=require(_0x03b3('0x0'));var util=require(_0x03b3('0x1'));var moment=require('moment');var BPromise=require(_0x03b3('0x2'));var rs=require(_0x03b3('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x03b3('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x03b3('0x5'));var config=require(_0x03b3('0x6'));var jayson=require(_0x03b3('0x7'));var client=jayson[_0x03b3('0x8')]['http']({'port':0x232a});config[_0x03b3('0x9')]=_[_0x03b3('0xa')](config[_0x03b3('0x9')],{'host':_0x03b3('0xb'),'port':0x18eb});var socket=require(_0x03b3('0xc'))(new Redis(config['redis']));require(_0x03b3('0xd'))[_0x03b3('0xe')](socket);function respondWithRpcPromise(_0x370851,_0x4b2b77,_0x1f6f40){return new BPromise(function(_0x15cf9b,_0x41fcd9){return client[_0x03b3('0xf')](_0x370851,_0x1f6f40)[_0x03b3('0x10')](function(_0x1cd215){logger[_0x03b3('0x11')](_0x03b3('0x12'),_0x4b2b77,'request\x20sent');logger[_0x03b3('0x13')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x4b2b77,_0x03b3('0x14'),JSON[_0x03b3('0x15')](_0x1cd215));if(_0x1cd215[_0x03b3('0x16')]){if(_0x1cd215[_0x03b3('0x16')][_0x03b3('0x17')]===0x1f4){logger['error'](_0x03b3('0x12'),_0x4b2b77,_0x1cd215[_0x03b3('0x16')]['message']);return _0x41fcd9(_0x1cd215['error']['message']);}logger[_0x03b3('0x16')](_0x03b3('0x12'),_0x4b2b77,_0x1cd215['error'][_0x03b3('0x18')]);return _0x15cf9b(_0x1cd215['error']['message']);}else{logger['info'](_0x03b3('0x12'),_0x4b2b77,_0x03b3('0x14'));_0x15cf9b(_0x1cd215['result'][_0x03b3('0x18')]);}})['catch'](function(_0x122eb0){logger[_0x03b3('0x16')](_0x03b3('0x12'),_0x4b2b77,_0x122eb0);_0x41fcd9(_0x122eb0);});});}exports[_0x03b3('0x19')]=function(_0x2a6314){var _0x6c9022=this;return new Promise(function(_0x248feb,_0x54f03b){return db['SmsMessage'][_0x03b3('0x1a')](_0x2a6314[_0x03b3('0x1b')],{'raw':_0x2a6314[_0x03b3('0x1c')]?_0x2a6314[_0x03b3('0x1c')][_0x03b3('0x1d')]===undefined?!![]:![]:!![]})[_0x03b3('0x10')](function(_0xf29306){logger[_0x03b3('0x11')](_0x03b3('0x19'),_0x2a6314);logger[_0x03b3('0x13')](_0x03b3('0x19'),_0x2a6314,JSON[_0x03b3('0x15')](_0xf29306));_0x248feb(_0xf29306);})[_0x03b3('0x1e')](function(_0x1ff0db){logger['error'](_0x03b3('0x19'),_0x1ff0db[_0x03b3('0x18')],_0x2a6314);_0x54f03b(_0x6c9022[_0x03b3('0x16')](0x1f4,_0x1ff0db[_0x03b3('0x18')]));});});};
\ No newline at end of file
+var _0x7762=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','client','redis','socket.io-emitter','./smsMessage.socket','register','request','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateSmsMessage','SmsMessage','create','body','options','raw','util'];(function(_0x32179c,_0x32fb68){var _0xad3766=function(_0x597f3f){while(--_0x597f3f){_0x32179c['push'](_0x32179c['shift']());}};_0xad3766(++_0x32fb68);}(_0x7762,0x13f));var _0x2776=function(_0x2bd957,_0x16a7bc){_0x2bd957=_0x2bd957-0x0;var _0x29bc79=_0x7762[_0x2bd957];return _0x29bc79;};'use strict';var _=require('lodash');var util=require(_0x2776('0x0'));var moment=require(_0x2776('0x1'));var BPromise=require(_0x2776('0x2'));var rs=require(_0x2776('0x3'));var fs=require('fs');var Redis=require(_0x2776('0x4'));var db=require(_0x2776('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x2776('0x6'))('rpc');var config=require(_0x2776('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x2776('0x8')]['http']({'port':0x232a});config[_0x2776('0x9')]=_['defaults'](config[_0x2776('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x2776('0xa'))(new Redis(config[_0x2776('0x9')]));require(_0x2776('0xb'))[_0x2776('0xc')](socket);function respondWithRpcPromise(_0x33d7e2,_0x1d562a,_0x49931c){return new BPromise(function(_0x2ac1a5,_0x30c848){return client[_0x2776('0xd')](_0x33d7e2,_0x49931c)[_0x2776('0xe')](function(_0x15b860){logger[_0x2776('0xf')](_0x2776('0x10'),_0x1d562a,_0x2776('0x11'));logger[_0x2776('0x12')](_0x2776('0x13'),_0x1d562a,_0x2776('0x11'),JSON[_0x2776('0x14')](_0x15b860));if(_0x15b860['error']){if(_0x15b860[_0x2776('0x15')][_0x2776('0x16')]===0x1f4){logger['error'](_0x2776('0x10'),_0x1d562a,_0x15b860[_0x2776('0x15')][_0x2776('0x17')]);return _0x30c848(_0x15b860[_0x2776('0x15')]['message']);}logger[_0x2776('0x15')](_0x2776('0x10'),_0x1d562a,_0x15b860[_0x2776('0x15')][_0x2776('0x17')]);return _0x2ac1a5(_0x15b860[_0x2776('0x15')]['message']);}else{logger[_0x2776('0xf')](_0x2776('0x10'),_0x1d562a,'request\x20sent');_0x2ac1a5(_0x15b860[_0x2776('0x18')]['message']);}})[_0x2776('0x19')](function(_0x512fae){logger[_0x2776('0x15')](_0x2776('0x10'),_0x1d562a,_0x512fae);_0x30c848(_0x512fae);});});}exports[_0x2776('0x1a')]=function(_0x149b8d){var _0x46fabd=this;return new Promise(function(_0x25ce97,_0x599a27){return db[_0x2776('0x1b')][_0x2776('0x1c')](_0x149b8d[_0x2776('0x1d')],{'raw':_0x149b8d['options']?_0x149b8d[_0x2776('0x1e')][_0x2776('0x1f')]===undefined?!![]:![]:!![]})[_0x2776('0xe')](function(_0x5585d9){logger[_0x2776('0xf')](_0x2776('0x1a'),_0x149b8d);logger['debug'](_0x2776('0x1a'),_0x149b8d,JSON['stringify'](_0x5585d9));_0x25ce97(_0x5585d9);})[_0x2776('0x19')](function(_0x4fbae1){logger['error'](_0x2776('0x1a'),_0x4fbae1['message'],_0x149b8d);_0x599a27(_0x46fabd['error'](0x1f4,_0x4fbae1[_0x2776('0x17')]));});});};
\ No newline at end of file
index 00666b5..73b1839 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1ec=['register','length','smsMessage:','./smsMessage.events','save','remove','emit','removeListener'];(function(_0xd5e2d3,_0x5873ba){var _0x5a2995=function(_0x4207f0){while(--_0x4207f0){_0xd5e2d3['push'](_0xd5e2d3['shift']());}};_0x5a2995(++_0x5873ba);}(_0xe1ec,0x1d3));var _0xce1e=function(_0x38c949,_0x5a8249){_0x38c949=_0x38c949-0x0;var _0x45375b=_0xe1ec[_0x38c949];return _0x45375b;};'use strict';var SmsMessageEvents=require(_0xce1e('0x0'));var events=[_0xce1e('0x1'),_0xce1e('0x2'),'update'];function createListener(_0x3c35b8,_0x58c3dc){return function(_0x53790b){_0x58c3dc[_0xce1e('0x3')](_0x3c35b8,_0x53790b);};}function removeListener(_0x1feccc,_0x1487d4){return function(){SmsMessageEvents[_0xce1e('0x4')](_0x1feccc,_0x1487d4);};}exports[_0xce1e('0x5')]=function(_0x569e6f){for(var _0x1f6427=0x0,_0x14b589=events[_0xce1e('0x6')];_0x1f6427<_0x14b589;_0x1f6427++){var _0x20e785=events[_0x1f6427];var _0x5711d6=createListener(_0xce1e('0x7')+_0x20e785,_0x569e6f);SmsMessageEvents['on'](_0x20e785,_0x5711d6);}};
\ No newline at end of file
+var _0x1ab2=['save','remove','emit','removeListener','register','length','smsMessage:','./smsMessage.events'];(function(_0x5a1345,_0xcc9fc3){var _0x27d577=function(_0x51a778){while(--_0x51a778){_0x5a1345['push'](_0x5a1345['shift']());}};_0x27d577(++_0xcc9fc3);}(_0x1ab2,0x1bf));var _0x21ab=function(_0x1e4bf0,_0x123fee){_0x1e4bf0=_0x1e4bf0-0x0;var _0x2fb89d=_0x1ab2[_0x1e4bf0];return _0x2fb89d;};'use strict';var SmsMessageEvents=require(_0x21ab('0x0'));var events=[_0x21ab('0x1'),_0x21ab('0x2'),'update'];function createListener(_0x42dd63,_0x5b4b81){return function(_0x52debf){_0x5b4b81[_0x21ab('0x3')](_0x42dd63,_0x52debf);};}function removeListener(_0x195f81,_0x36493a){return function(){SmsMessageEvents[_0x21ab('0x4')](_0x195f81,_0x36493a);};}exports[_0x21ab('0x5')]=function(_0x552b1a){for(var _0x20963e=0x0,_0x47a352=events[_0x21ab('0x6')];_0x20963e<_0x47a352;_0x20963e++){var _0x43a30d=events[_0x20963e];var _0x19d2d9=createListener(_0x21ab('0x7')+_0x43a30d,_0x552b1a);SmsMessageEvents['on'](_0x43a30d,_0x19d2d9);}};
\ No newline at end of file
index 74a7bc4..504ee00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b21=['express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','/:id','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','connect-timeout'];(function(_0x220a7a,_0x500163){var _0x3089b3=function(_0x3e34f3){while(--_0x3e34f3){_0x220a7a['push'](_0x220a7a['shift']());}};_0x3089b3(++_0x500163);}(_0x2b21,0x7d));var _0x12b2=function(_0x4e93a9,_0x413f30){_0x4e93a9=_0x4e93a9-0x0;var _0x43013c=_0x2b21[_0x4e93a9];return _0x43013c;};'use strict';var multer=require(_0x12b2('0x0'));var util=require(_0x12b2('0x1'));var path=require('path');var timeout=require(_0x12b2('0x2'));var express=require(_0x12b2('0x3'));var router=express[_0x12b2('0x4')]();var fs_extra=require(_0x12b2('0x5'));var auth=require(_0x12b2('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x12b2('0x7'));var controller=require('./smsQueue.controller');router[_0x12b2('0x8')]('/',auth[_0x12b2('0x9')](),controller[_0x12b2('0xa')]);router[_0x12b2('0x8')](_0x12b2('0xb'),auth[_0x12b2('0x9')](),controller[_0x12b2('0xc')]);router['get']('/:id',auth[_0x12b2('0x9')](),controller[_0x12b2('0xd')]);router[_0x12b2('0x8')](_0x12b2('0xe'),auth[_0x12b2('0x9')](),controller[_0x12b2('0xf')]);router[_0x12b2('0x8')](_0x12b2('0x10'),auth[_0x12b2('0x9')](),controller[_0x12b2('0x11')]);router[_0x12b2('0x8')](_0x12b2('0x12'),auth[_0x12b2('0x9')](),controller[_0x12b2('0x13')]);router[_0x12b2('0x14')]('/',auth[_0x12b2('0x9')](),controller[_0x12b2('0x15')]);router['post'](_0x12b2('0x10'),auth[_0x12b2('0x9')](),controller[_0x12b2('0x16')]);router[_0x12b2('0x14')]('/:id/users',auth[_0x12b2('0x9')](),controller[_0x12b2('0x17')]);router[_0x12b2('0x18')](_0x12b2('0x19'),auth['isAuthenticated'](),controller[_0x12b2('0x1a')]);router[_0x12b2('0x1b')](_0x12b2('0x19'),auth[_0x12b2('0x9')](),controller[_0x12b2('0x1c')]);router[_0x12b2('0x1b')](_0x12b2('0x10'),auth[_0x12b2('0x9')](),controller[_0x12b2('0x1d')]);router[_0x12b2('0x1b')]('/:id/users',auth[_0x12b2('0x9')](),controller[_0x12b2('0x1e')]);module[_0x12b2('0x1f')]=router;
\ No newline at end of file
+var _0x0ab4=['post','create','addTeams','/:id/users','addAgents','put','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./smsQueue.controller','get','isAuthenticated','/describe','/:id','show','/:id/members','getMembers','/:id/teams','getAgents'];(function(_0x4dd524,_0x2247e5){var _0x482629=function(_0x1fc3a0){while(--_0x1fc3a0){_0x4dd524['push'](_0x4dd524['shift']());}};_0x482629(++_0x2247e5);}(_0x0ab4,0x1ce));var _0x40ab=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0ab4[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x40ab('0x0'));var util=require(_0x40ab('0x1'));var path=require(_0x40ab('0x2'));var timeout=require(_0x40ab('0x3'));var express=require(_0x40ab('0x4'));var router=express[_0x40ab('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x40ab('0x6'));var interaction=require(_0x40ab('0x7'));var config=require('../../config/environment');var controller=require(_0x40ab('0x8'));router[_0x40ab('0x9')]('/',auth[_0x40ab('0xa')](),controller['index']);router[_0x40ab('0x9')](_0x40ab('0xb'),auth[_0x40ab('0xa')](),controller['describe']);router[_0x40ab('0x9')](_0x40ab('0xc'),auth['isAuthenticated'](),controller[_0x40ab('0xd')]);router['get'](_0x40ab('0xe'),auth[_0x40ab('0xa')](),controller[_0x40ab('0xf')]);router[_0x40ab('0x9')](_0x40ab('0x10'),auth[_0x40ab('0xa')](),controller['getTeams']);router['get']('/:id/users',auth[_0x40ab('0xa')](),controller[_0x40ab('0x11')]);router[_0x40ab('0x12')]('/',auth['isAuthenticated'](),controller[_0x40ab('0x13')]);router[_0x40ab('0x12')](_0x40ab('0x10'),auth['isAuthenticated'](),controller[_0x40ab('0x14')]);router[_0x40ab('0x12')](_0x40ab('0x15'),auth[_0x40ab('0xa')](),controller[_0x40ab('0x16')]);router[_0x40ab('0x17')](_0x40ab('0xc'),auth[_0x40ab('0xa')](),controller[_0x40ab('0x18')]);router[_0x40ab('0x19')]('/:id',auth['isAuthenticated'](),controller[_0x40ab('0x1a')]);router[_0x40ab('0x19')](_0x40ab('0x10'),auth[_0x40ab('0xa')](),controller[_0x40ab('0x1b')]);router[_0x40ab('0x19')](_0x40ab('0x15'),auth[_0x40ab('0xa')](),controller[_0x40ab('0x1c')]);module[_0x40ab('0x1d')]=router;
\ No newline at end of file
index 2658a07..72fd874 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5ad=['STRING','name','INTEGER','rrmemory','beepall','roundrobin'];(function(_0x321d17,_0x474097){var _0x4ec235=function(_0x167ffc){while(--_0x167ffc){_0x321d17['push'](_0x321d17['shift']());}};_0x4ec235(++_0x474097);}(_0xe5ad,0x126));var _0xde5a=function(_0x172b87,_0x4e9e22){_0x172b87=_0x172b87-0x0;var _0x121f0d=_0xe5ad[_0x172b87];return _0x121f0d;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xde5a('0x0')],'unique':_0xde5a('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xde5a('0x0')]},'timeout':{'type':Sequelize[_0xde5a('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xde5a('0x3'),_0xde5a('0x4'),_0xde5a('0x5'))}};
\ No newline at end of file
+var _0x188d=['rrmemory','beepall','exports','STRING','name','INTEGER'];(function(_0x380e75,_0x486360){var _0x444d96=function(_0x32c8f8){while(--_0x32c8f8){_0x380e75['push'](_0x380e75['shift']());}};_0x444d96(++_0x486360);}(_0x188d,0xb0));var _0xd188=function(_0x117b82,_0x13554b){_0x117b82=_0x117b82-0x0;var _0x3a8975=_0x188d[_0x117b82];return _0x3a8975;};'use strict';var Sequelize=require('sequelize');module[_0xd188('0x0')]={'name':{'type':Sequelize[_0xd188('0x1')],'unique':_0xd188('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0xd188('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xd188('0x4'),_0xd188('0x5'),'roundrobin')}};
\ No newline at end of file
index 659a363..51d7efc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbada=['isEmpty','removeAgents','userSmsQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','fast-json-patch','util','sox','to-csv','ejs','fs-extra','lodash','squel','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','redis','localhost','socket.io-emitter','./smsQueue.socket','sendStatus','status','json','offset','limit','count','set','Content-Range','apply','update','then','destroy','UserProfileResource','end','stack','name','send','map','SmsQueue','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','sort','merge','where','VIRTUAL','filter','options','includeAll','findAll','rows','catch','include','create','user','get','role','SmsQueues','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','find','params','describe','getMembers','findOne','UserSmsQueue','nolimit','order','pick','SmsQueueId','User','findAndCountAll','UserId','updatedAt','createdAt','format','%s/%s','SIP','smsPause','getTeams','addTeams','Team','Agents','online','voicePause','interface','transaction','each','emit','userSmsQueue:save','removeTeams','ids','select','team_has_sms_queues','join','user_has_teams','ut.UserId\x20=\x20?','sequelize','toString','SELECT','every','TeamId','includes','all','union','compact'];(function(_0x3b048d,_0x450938){var _0x31b2d4=function(_0x13ebc0){while(--_0x13ebc0){_0x3b048d['push'](_0x3b048d['shift']());}};_0x31b2d4(++_0x450938);}(_0xbada,0x18e));var _0xabad=function(_0x5f309e,_0x66e31){_0x5f309e=_0x5f309e-0x0;var _0x487b5e=_0xbada[_0x5f309e];return _0x487b5e;};'use strict';var emlformat=require(_0xabad('0x0'));var rimraf=require(_0xabad('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xabad('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xabad('0x3'));var path=require('path');var sox=require(_0xabad('0x4'));var csv=require(_0xabad('0x5'));var ejs=require(_0xabad('0x6'));var fs=require('fs');var fs_extra=require(_0xabad('0x7'));var _=require(_0xabad('0x8'));var squel=require(_0xabad('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xabad('0x5'));var querystring=require(_0xabad('0xa'));var Papa=require(_0xabad('0xb'));var Redis=require(_0xabad('0xc'));var authService=require(_0xabad('0xd'));var qs=require(_0xabad('0xe'));var as=require(_0xabad('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xabad('0x10'))(_0xabad('0x11'));var utils=require(_0xabad('0x12'));var config=require(_0xabad('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xabad('0x14')]=_['defaults'](config[_0xabad('0x14')],{'host':_0xabad('0x15'),'port':0x18eb});var socket=require(_0xabad('0x16'))(new Redis(config[_0xabad('0x14')]));require(_0xabad('0x17'))['register'](socket);function respondWithStatusCode(_0x50b2b3,_0x2d4b2c){_0x2d4b2c=_0x2d4b2c||0xcc;return function(_0x485f43){if(_0x485f43){return _0x50b2b3[_0xabad('0x18')](_0x2d4b2c);}return _0x50b2b3[_0xabad('0x19')](_0x2d4b2c)['end']();};}function respondWithResult(_0x48e87c,_0x1a752f){_0x1a752f=_0x1a752f||0xc8;return function(_0x45f13c){if(_0x45f13c){return _0x48e87c[_0xabad('0x19')](_0x1a752f)[_0xabad('0x1a')](_0x45f13c);}};}function respondWithFilteredResult(_0x946b0f,_0x2f301f){return function(_0x54998e){if(_0x54998e){var _0x2ba0ee=typeof _0x2f301f[_0xabad('0x1b')]==='undefined'&&typeof _0x2f301f[_0xabad('0x1c')]==='undefined';var _0x45a041=_0x54998e[_0xabad('0x1d')];var _0x21f657=_0x2ba0ee?0x0:_0x2f301f[_0xabad('0x1b')];var _0x322b30=_0x2ba0ee?_0x54998e['count']:_0x2f301f[_0xabad('0x1b')]+_0x2f301f[_0xabad('0x1c')];var _0x4bdd10;if(_0x322b30>=_0x45a041){_0x322b30=_0x45a041;_0x4bdd10=0xc8;}else{_0x4bdd10=0xce;}_0x946b0f[_0xabad('0x19')](_0x4bdd10);return _0x946b0f[_0xabad('0x1e')](_0xabad('0x1f'),_0x21f657+'-'+_0x322b30+'/'+_0x45a041)[_0xabad('0x1a')](_0x54998e);}return null;};}function patchUpdates(_0x237ed4){return function(_0x9f9c98){try{jsonpatch[_0xabad('0x20')](_0x9f9c98,_0x237ed4,!![]);}catch(_0x515476){return BPromise['reject'](_0x515476);}return _0x9f9c98['save']();};}function saveUpdates(_0xf8a0a5,_0x331514){return function(_0x1326b6){if(_0x1326b6){return _0x1326b6[_0xabad('0x21')](_0xf8a0a5)[_0xabad('0x22')](function(_0x91bd16){return _0x91bd16;});}return null;};}function removeEntity(_0x48a690,_0x58d04e){return function(_0xa5285f){if(_0xa5285f){return _0xa5285f[_0xabad('0x23')]()[_0xabad('0x22')](function(){var _0x7d83cd=_0xa5285f['get']({'plain':!![]});var _0x2296aa='SmsQueues';return db[_0xabad('0x24')][_0xabad('0x23')]({'where':{'type':_0x2296aa,'resourceId':_0x7d83cd['id']}})[_0xabad('0x22')](function(){return _0xa5285f;});})[_0xabad('0x22')](function(){_0x48a690['status'](0xcc)[_0xabad('0x25')]();});}};}function handleEntityNotFound(_0x543189,_0x2f5577){return function(_0xb3385e){if(!_0xb3385e){_0x543189['sendStatus'](0x194);}return _0xb3385e;};}function handleError(_0x501ed0,_0x50d8bb){_0x50d8bb=_0x50d8bb||0x1f4;return function(_0x526def){logger['error'](_0x526def[_0xabad('0x26')]);if(_0x526def[_0xabad('0x27')]){delete _0x526def[_0xabad('0x27')];}_0x501ed0[_0xabad('0x19')](_0x50d8bb)[_0xabad('0x28')](_0x526def);};}exports['index']=function(_0x4470a2,_0x2d10ae){var _0x95cdab={},_0x10bbda={},_0x3852cc={'count':0x0,'rows':[]};var _0x49942d=_[_0xabad('0x29')](db[_0xabad('0x2a')][_0xabad('0x2b')],function(_0x2a653c){return{'name':_0x2a653c[_0xabad('0x2c')],'type':_0x2a653c[_0xabad('0x2d')][_0xabad('0x2e')]};});_0x10bbda['model']=_[_0xabad('0x29')](_0x49942d,_0xabad('0x27'));_0x10bbda[_0xabad('0x2f')]=_[_0xabad('0x30')](_0x4470a2[_0xabad('0x2f')]);_0x10bbda[_0xabad('0x31')]=_[_0xabad('0x32')](_0x10bbda[_0xabad('0x33')],_0x10bbda[_0xabad('0x2f')]);_0x95cdab[_0xabad('0x34')]=_[_0xabad('0x32')](_0x10bbda[_0xabad('0x33')],qs[_0xabad('0x35')](_0x4470a2[_0xabad('0x2f')]['fields']));_0x95cdab[_0xabad('0x34')]=_0x95cdab[_0xabad('0x34')][_0xabad('0x36')]?_0x95cdab[_0xabad('0x34')]:_0x10bbda['model'];if(!_0x4470a2['query'][_0xabad('0x37')]('nolimit')){_0x95cdab[_0xabad('0x1c')]=qs[_0xabad('0x1c')](_0x4470a2[_0xabad('0x2f')][_0xabad('0x1c')]);_0x95cdab[_0xabad('0x1b')]=qs['offset'](_0x4470a2[_0xabad('0x2f')]['offset']);}_0x95cdab['order']=qs[_0xabad('0x38')](_0x4470a2[_0xabad('0x2f')]['sort']);_0x95cdab['where']=qs['filters'](_['pick'](_0x4470a2[_0xabad('0x2f')],_0x10bbda[_0xabad('0x31')]),_0x49942d);if(_0x4470a2[_0xabad('0x2f')]['filter']){_0x95cdab['where']=_[_0xabad('0x39')](_0x95cdab[_0xabad('0x3a')],{'$or':_[_0xabad('0x29')](_0x49942d,function(_0x5d6f2a){if(_0x5d6f2a[_0xabad('0x2d')]!==_0xabad('0x3b')){var _0x24d9ef={};_0x24d9ef[_0x5d6f2a[_0xabad('0x27')]]={'$like':'%'+_0x4470a2[_0xabad('0x2f')][_0xabad('0x3c')]+'%'};return _0x24d9ef;}})});}_0x95cdab=_[_0xabad('0x39')]({},_0x95cdab,_0x4470a2[_0xabad('0x3d')]);var _0x2e65bc={'where':_0x95cdab[_0xabad('0x3a')]};return db[_0xabad('0x2a')][_0xabad('0x1d')](_0x2e65bc)[_0xabad('0x22')](function(_0xcaa11d){_0x3852cc[_0xabad('0x1d')]=_0xcaa11d;if(_0x4470a2[_0xabad('0x2f')][_0xabad('0x3e')]){_0x95cdab['include']=[{'all':!![]}];}return db[_0xabad('0x2a')][_0xabad('0x3f')](_0x95cdab);})[_0xabad('0x22')](function(_0x5979ef){_0x3852cc[_0xabad('0x40')]=_0x5979ef;return _0x3852cc;})[_0xabad('0x22')](respondWithFilteredResult(_0x2d10ae,_0x95cdab))[_0xabad('0x41')](handleError(_0x2d10ae,null));};exports['show']=function(_0xa6112b,_0x150dad){var _0x19ab06={'raw':!![],'where':{'id':_0xa6112b['params']['id']}},_0x47be7c={};_0x47be7c[_0xabad('0x33')]=_[_0xabad('0x30')](db[_0xabad('0x2a')][_0xabad('0x2b')]);_0x47be7c[_0xabad('0x2f')]=_[_0xabad('0x30')](_0xa6112b['query']);_0x47be7c[_0xabad('0x31')]=_[_0xabad('0x32')](_0x47be7c['model'],_0x47be7c[_0xabad('0x2f')]);_0x19ab06['attributes']=_[_0xabad('0x32')](_0x47be7c['model'],qs[_0xabad('0x35')](_0xa6112b[_0xabad('0x2f')][_0xabad('0x35')]));_0x19ab06[_0xabad('0x34')]=_0x19ab06[_0xabad('0x34')]['length']?_0x19ab06['attributes']:_0x47be7c[_0xabad('0x33')];if(_0xa6112b[_0xabad('0x2f')][_0xabad('0x3e')]){_0x19ab06[_0xabad('0x42')]=[{'all':!![]}];}_0x19ab06=_[_0xabad('0x39')]({},_0x19ab06,_0xa6112b[_0xabad('0x3d')]);return db['SmsQueue']['find'](_0x19ab06)[_0xabad('0x22')](handleEntityNotFound(_0x150dad,null))[_0xabad('0x22')](respondWithResult(_0x150dad,null))[_0xabad('0x41')](handleError(_0x150dad,null));};exports[_0xabad('0x43')]=function(_0x307598,_0x2f570f){return db[_0xabad('0x2a')]['create'](_0x307598['body'],{})[_0xabad('0x22')](function(_0x638acd){var _0x3d1b56=_0x307598[_0xabad('0x44')][_0xabad('0x45')]({'plain':!![]});if(!_0x3d1b56)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3d1b56[_0xabad('0x46')]===_0xabad('0x44')){var _0x44415c=_0x638acd[_0xabad('0x45')]({'plain':!![]});var _0xab34b2=_0xabad('0x47');return db['UserProfileSection']['find']({'where':{'name':_0xab34b2,'userProfileId':_0x3d1b56[_0xabad('0x48')]},'raw':!![]})[_0xabad('0x22')](function(_0x468072){if(_0x468072&&_0x468072[_0xabad('0x49')]===0x0){return db[_0xabad('0x24')][_0xabad('0x43')]({'name':_0x44415c['name'],'resourceId':_0x44415c['id'],'type':_0x468072[_0xabad('0x27')],'sectionId':_0x468072['id']},{})[_0xabad('0x22')](function(){return _0x638acd;});}else{return _0x638acd;}})[_0xabad('0x41')](function(_0x2c2902){logger['error'](_0xabad('0x4a'),_0x2c2902);throw _0x2c2902;});}return _0x638acd;})[_0xabad('0x22')](respondWithResult(_0x2f570f,0xc9))['catch'](handleError(_0x2f570f,null));};exports[_0xabad('0x21')]=function(_0x334e4a,_0x938cd6){if(_0x334e4a[_0xabad('0x4b')]['id']){delete _0x334e4a['body']['id'];}return db['SmsQueue'][_0xabad('0x4c')]({'where':{'id':_0x334e4a[_0xabad('0x4d')]['id']}})[_0xabad('0x22')](handleEntityNotFound(_0x938cd6,null))[_0xabad('0x22')](saveUpdates(_0x334e4a[_0xabad('0x4b')],null))[_0xabad('0x22')](respondWithResult(_0x938cd6,null))[_0xabad('0x41')](handleError(_0x938cd6,null));};exports[_0xabad('0x23')]=function(_0x565c0c,_0x36de09){return db[_0xabad('0x2a')][_0xabad('0x4c')]({'where':{'id':_0x565c0c['params']['id']}})[_0xabad('0x22')](handleEntityNotFound(_0x36de09,null))[_0xabad('0x22')](removeEntity(_0x36de09,null))[_0xabad('0x41')](handleError(_0x36de09,null));};exports['describe']=function(_0x1c7fa9,_0x47e0ab){return db[_0xabad('0x2a')][_0xabad('0x4e')]()[_0xabad('0x22')](respondWithResult(_0x47e0ab,null))[_0xabad('0x41')](handleError(_0x47e0ab,null));};exports[_0xabad('0x4f')]=function(_0x2fddf9,_0x42662a,_0xefac6c){var _0x269f9b={'raw':!![],'where':{}},_0x1f1e01={},_0x2ec9f8;return db[_0xabad('0x2a')][_0xabad('0x50')]({'where':{'id':_0x2fddf9[_0xabad('0x4d')]['id']}})[_0xabad('0x22')](handleEntityNotFound(_0x42662a,null))['then'](function(_0x4bd3a5){if(_0x4bd3a5){_0x2ec9f8=_0x4bd3a5[_0xabad('0x45')]({'plain':!![]});_0x1f1e01[_0xabad('0x33')]=_[_0xabad('0x30')](db[_0xabad('0x51')][_0xabad('0x2b')]);_0x1f1e01[_0xabad('0x2f')]=_['keys'](_0x2fddf9[_0xabad('0x2f')]);_0x1f1e01[_0xabad('0x31')]=_['intersection'](_0x1f1e01[_0xabad('0x33')],_0x1f1e01[_0xabad('0x2f')]);_0x269f9b[_0xabad('0x34')]=_['intersection'](_0x1f1e01[_0xabad('0x33')],qs[_0xabad('0x35')](_0x2fddf9['query']['fields']));_0x269f9b[_0xabad('0x34')]=_0x269f9b[_0xabad('0x34')][_0xabad('0x36')]?_0x269f9b[_0xabad('0x34')]:_0x1f1e01[_0xabad('0x33')];if(!_0x2fddf9[_0xabad('0x2f')][_0xabad('0x37')](_0xabad('0x52'))){_0x269f9b['limit']=qs[_0xabad('0x1c')](_0x2fddf9[_0xabad('0x2f')][_0xabad('0x1c')]);_0x269f9b[_0xabad('0x1b')]=qs[_0xabad('0x1b')](_0x2fddf9[_0xabad('0x2f')][_0xabad('0x1b')]);}_0x269f9b[_0xabad('0x53')]=qs['sort'](_0x2fddf9[_0xabad('0x2f')][_0xabad('0x38')]);_0x269f9b['where']=qs[_0xabad('0x31')](_[_0xabad('0x54')](_0x2fddf9[_0xabad('0x2f')],_0x1f1e01['filters']));_0x269f9b['where'][_0xabad('0x55')]=_0x4bd3a5['id'];if(_0x2fddf9[_0xabad('0x2f')][_0xabad('0x3c')]){_0x269f9b[_0xabad('0x3a')]=_[_0xabad('0x39')](_0x269f9b[_0xabad('0x3a')],{'$or':_[_0xabad('0x29')](_0x269f9b['attributes'],function(_0x36bd39){var _0x30372c={};_0x30372c[_0x36bd39]={'$like':'%'+_0x2fddf9[_0xabad('0x2f')][_0xabad('0x3c')]+'%'};return _0x30372c;})});}_0x269f9b=_[_0xabad('0x39')]({},_0x269f9b,_0x2fddf9['options']);return db[_0xabad('0x51')]['findAll'](_0x269f9b);}})['then'](function(_0x7afc47){if(_0x7afc47){return db[_0xabad('0x56')][_0xabad('0x57')]({'where':{'id':_[_0xabad('0x29')](_0x7afc47,_0xabad('0x58')),'role':'agent'},'attributes':['id',_0xabad('0x27'),'smsPause',_0xabad('0x59'),_0xabad('0x5a')]});}})[_0xabad('0x22')](function(_0x5c9734){if(_0x5c9734){return{'count':_0x5c9734['count'],'rows':_[_0xabad('0x29')](_0x5c9734[_0xabad('0x40')],function(_0x43f400){return{'membername':_0x43f400[_0xabad('0x27')],'UserId':_0x43f400['id'],'queue_name':_0x2ec9f8[_0xabad('0x27')],'SmsQueueId':_0x2ec9f8['id'],'interface':util[_0xabad('0x5b')](_0xabad('0x5c'),_0xabad('0x5d'),_0x43f400[_0xabad('0x27')]),'penalty':0x0,'paused':_0x43f400[_0xabad('0x5e')],'createdAt':_0x43f400[_0xabad('0x5a')],'updatedAt':_0x43f400['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0xabad('0x22')](respondWithFilteredResult(_0x42662a,_0x269f9b))[_0xabad('0x41')](handleError(_0x42662a,null));};exports['getTeams']=function(_0x3ab248,_0x219d97,_0x3f4b76){var _0x4d115f={};var _0x440b9a={};var _0x2d0dc2;var _0x29e265;return db[_0xabad('0x2a')][_0xabad('0x50')]({'where':{'id':_0x3ab248['params']['id']}})[_0xabad('0x22')](handleEntityNotFound(_0x219d97,null))[_0xabad('0x22')](function(_0x44cc7f){if(_0x44cc7f){_0x2d0dc2=_0x44cc7f;_0x440b9a[_0xabad('0x33')]=_[_0xabad('0x30')](db['Team'][_0xabad('0x2b')]);_0x440b9a['query']=_[_0xabad('0x30')](_0x3ab248['query']);_0x440b9a[_0xabad('0x31')]=_['intersection'](_0x440b9a['model'],_0x440b9a[_0xabad('0x2f')]);_0x4d115f[_0xabad('0x34')]=_[_0xabad('0x32')](_0x440b9a[_0xabad('0x33')],qs['fields'](_0x3ab248['query'][_0xabad('0x35')]));_0x4d115f['attributes']=_0x4d115f[_0xabad('0x34')][_0xabad('0x36')]?_0x4d115f[_0xabad('0x34')]:_0x440b9a[_0xabad('0x33')];_0x4d115f[_0xabad('0x53')]=qs[_0xabad('0x38')](_0x3ab248[_0xabad('0x2f')]['sort']);_0x4d115f['where']=qs[_0xabad('0x31')](_[_0xabad('0x54')](_0x3ab248[_0xabad('0x2f')],_0x440b9a[_0xabad('0x31')]));if(_0x3ab248[_0xabad('0x2f')][_0xabad('0x3c')]){_0x4d115f['where']=_['merge'](_0x4d115f[_0xabad('0x3a')],{'$or':_[_0xabad('0x29')](_0x4d115f[_0xabad('0x34')],function(_0x4bb24a){var _0x2b041f={};_0x2b041f[_0x4bb24a]={'$like':'%'+_0x3ab248[_0xabad('0x2f')][_0xabad('0x3c')]+'%'};return _0x2b041f;})});}_0x4d115f=_['merge']({},_0x4d115f,_0x3ab248[_0xabad('0x3d')]);return _0x2d0dc2[_0xabad('0x5f')](_0x4d115f);}})[_0xabad('0x22')](function(_0x2d8231){if(_0x2d8231){_0x29e265=_0x2d8231[_0xabad('0x36')];if(!_0x3ab248[_0xabad('0x2f')]['hasOwnProperty']('nolimit')){_0x4d115f[_0xabad('0x1c')]=qs[_0xabad('0x1c')](_0x3ab248[_0xabad('0x2f')][_0xabad('0x1c')]);_0x4d115f['offset']=qs['offset'](_0x3ab248['query'][_0xabad('0x1b')]);}return _0x2d0dc2['getTeams'](_0x4d115f);}})[_0xabad('0x22')](function(_0x15e3e6){if(_0x15e3e6){return _0x15e3e6?{'count':_0x29e265,'rows':_0x15e3e6}:null;}})[_0xabad('0x22')](respondWithResult(_0x219d97,null))[_0xabad('0x41')](handleError(_0x219d97,null));};exports[_0xabad('0x60')]=function(_0x50af2c,_0x4ab5d3,_0x16cd45){var _0x132c49=_0x50af2c[_0xabad('0x4b')]['ids'];return db[_0xabad('0x61')][_0xabad('0x3f')]({'where':{'id':_0x132c49},'attributes':['id'],'include':[{'model':db['User'],'as':_0xabad('0x62'),'attributes':['id',_0xabad('0x27'),_0xabad('0x63'),_0xabad('0x64'),_0xabad('0x65')],'raw':!![]}]})[_0xabad('0x22')](function(_0x51251a){if(_0x51251a){var _0x1eb115=_['flatMap'](_0x51251a,function(_0x45e6cd){var _0x1ff69c=_0x45e6cd[_0xabad('0x45')]({'plain':!![]});return _0x1ff69c['Agents'];});return db[_0xabad('0x2a')][_0xabad('0x4c')]({'where':{'id':_0x50af2c[_0xabad('0x4d')]['id']}})['then'](function(_0x549520){return db['sequelize'][_0xabad('0x66')](function(_0x36675a){return _0x549520[_0xabad('0x60')](_0x132c49,{'transaction':_0x36675a})['then'](function(){return BPromise[_0xabad('0x67')](_0x1eb115,function(_0x860d14){return db[_0xabad('0x51')]['findOrCreate']({'where':{'UserId':_0x860d14['id'],'SmsQueueId':_0x50af2c[_0xabad('0x4d')]['id']},'transaction':_0x36675a});});})[_0xabad('0x22')](function(){_0x1eb115['forEach'](function(_0x5f4248){socket[_0xabad('0x68')](_0xabad('0x69'),{'UserId':_0x5f4248['id'],'SmsQueueId':_0x549520['id']});});});});});}})[_0xabad('0x22')](respondWithStatusCode(_0x4ab5d3,null))['catch'](handleError(_0x4ab5d3,null));};exports[_0xabad('0x6a')]=function(_0x16a4a5,_0x51fd6b,_0x4d4d65){return db['Team']['findAll']({'where':{'id':_0x16a4a5[_0xabad('0x2f')][_0xabad('0x6b')]},'attributes':['id'],'include':[{'model':db[_0xabad('0x56')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xabad('0x22')](handleEntityNotFound(_0x51fd6b,null))[_0xabad('0x22')](function(_0x1c7c26){var _0x2cf525=_[_0xabad('0x29')](_0x1c7c26,'id');var _0x465cbf=[];var _0x1a393a=[];var _0xa1b35a=squel[_0xabad('0x6c')]();_0xa1b35a['field']('tq.TeamId')['from'](_0xabad('0x6d'),'tq')[_0xabad('0x6e')](_0xabad('0x6f'),'ut','ut.TeamId\x20=\x20tq.TeamId')['where']('SmsQueueId\x20=\x20?',_0x16a4a5['params']['id']);for(var _0x4feceb=0x0;_0x4feceb<_0x1c7c26[_0xabad('0x36')];_0x4feceb+=0x1){let _0x34a4b2=_0x1c7c26[_0x4feceb];for(var _0x5f3f66=0x0;_0x5f3f66<_0x34a4b2[_0xabad('0x62')][_0xabad('0x36')];_0x5f3f66+=0x1){let _0x24adf8=_0x34a4b2[_0xabad('0x62')][_0x5f3f66];var _0x26a9e2=_0xa1b35a['clone']();_0x26a9e2[_0xabad('0x3a')](_0xabad('0x70'),_0x24adf8['id']);_0x1a393a['push'](db[_0xabad('0x71')][_0xabad('0x2f')](_0x26a9e2[_0xabad('0x72')](),{'type':db[_0xabad('0x71')]['QueryTypes'][_0xabad('0x73')]})[_0xabad('0x22')](function(_0x35401c){if(_0x35401c[_0xabad('0x36')]===0x1){return _0x24adf8['id'];}else{var _0x3eae33=_[_0xabad('0x74')](_['map'](_0x35401c,_0xabad('0x75')),function(_0xc00344){return _[_0xabad('0x76')](_0x2cf525,_0xc00344);});if(_0x3eae33){return _0x24adf8['id'];}}}));}}return BPromise[_0xabad('0x77')](_0x1a393a)[_0xabad('0x22')](function(_0x573ed5){_0x465cbf=_(_0x465cbf)[_0xabad('0x78')](_0x573ed5)[_0xabad('0x79')]()['value']();return db[_0xabad('0x2a')][_0xabad('0x4c')]({'where':{'id':_0x16a4a5['params']['id']}})[_0xabad('0x22')](function(_0x4e3806){return db[_0xabad('0x71')][_0xabad('0x66')](function(_0x3a1371){return _0x4e3806[_0xabad('0x6a')](_0x16a4a5['query'][_0xabad('0x6b')],{'transaction':_0x3a1371})[_0xabad('0x22')](function(){if(!_[_0xabad('0x7a')](_0x465cbf)){return _0x4e3806[_0xabad('0x7b')](_0x465cbf,{'transaction':_0x3a1371});}})[_0xabad('0x22')](function(){_0x465cbf['forEach'](function(_0x5dad31){socket[_0xabad('0x68')](_0xabad('0x7c'),{'UserId':_0x5dad31,'SmsQueueId':_0x4e3806['id']});});});});});});})['then'](respondWithStatusCode(_0x51fd6b,null))[_0xabad('0x41')](handleError(_0x51fd6b,null));};exports['addAgents']=function(_0x1abca8,_0x3b29b9,_0x4af40f){return db[_0xabad('0x2a')][_0xabad('0x4c')]({'where':{'id':_0x1abca8['params']['id']}})[_0xabad('0x22')](handleEntityNotFound(_0x3b29b9,null))[_0xabad('0x22')](function(_0x194d2b){if(_0x194d2b){return _0x194d2b[_0xabad('0x7d')](_0x1abca8[_0xabad('0x4b')][_0xabad('0x6b')],_[_0xabad('0x7e')](_0x1abca8[_0xabad('0x4b')],['ids','id'])||{})[_0xabad('0x7f')](function(_0x2619aa){for(var _0x5a6581=0x0;_0x5a6581<_0x1abca8['body'][_0xabad('0x6b')][_0xabad('0x36')];_0x5a6581+=0x1){socket['emit'](_0xabad('0x69'),{'UserId':Number(_0x1abca8[_0xabad('0x4b')][_0xabad('0x6b')][_0x5a6581]),'SmsQueueId':Number(_0x1abca8[_0xabad('0x4d')]['id'])});}return _0x2619aa;});}})['then'](respondWithResult(_0x3b29b9,null))[_0xabad('0x41')](handleError(_0x3b29b9,null));};exports[_0xabad('0x7b')]=function(_0x1cf39a,_0x31b86e,_0x554f95){return db['SmsQueue'][_0xabad('0x4c')]({'where':{'id':_0x1cf39a['params']['id']}})[_0xabad('0x22')](handleEntityNotFound(_0x31b86e,null))[_0xabad('0x22')](function(_0x1868f3){if(_0x1868f3){return _0x1868f3[_0xabad('0x7b')](_0x1cf39a['query'][_0xabad('0x6b')])[_0xabad('0x22')](function(){if(_[_0xabad('0x80')](_0x1cf39a[_0xabad('0x2f')][_0xabad('0x6b')])){for(var _0x49949d=0x0;_0x49949d<_0x1cf39a[_0xabad('0x2f')][_0xabad('0x6b')]['length'];_0x49949d+=0x1){socket[_0xabad('0x68')](_0xabad('0x7c'),{'UserId':Number(_0x1cf39a[_0xabad('0x2f')][_0xabad('0x6b')][_0x49949d]),'SmsQueueId':Number(_0x1cf39a['params']['id'])});}}else{socket[_0xabad('0x68')]('userSmsQueue:remove',{'UserId':Number(_0x1cf39a[_0xabad('0x2f')][_0xabad('0x6b')]),'SmsQueueId':Number(_0x1cf39a[_0xabad('0x4d')]['id'])});}});}})[_0xabad('0x22')](respondWithStatusCode(_0x31b86e,null))[_0xabad('0x41')](handleError(_0x31b86e,null));};exports[_0xabad('0x81')]=function(_0x1eb38e,_0x56d060,_0x4ead9c){var _0x3fbb31={};var _0x5edf08={};var _0x4b8a79;var _0x3a4095;return db['SmsQueue'][_0xabad('0x50')]({'where':{'id':_0x1eb38e[_0xabad('0x4d')]['id']}})[_0xabad('0x22')](handleEntityNotFound(_0x56d060,null))[_0xabad('0x22')](function(_0x1f1900){if(_0x1f1900){_0x4b8a79=_0x1f1900;_0x5edf08[_0xabad('0x33')]=_['keys'](db[_0xabad('0x56')][_0xabad('0x2b')]);_0x5edf08[_0xabad('0x2f')]=_[_0xabad('0x30')](_0x1eb38e[_0xabad('0x2f')]);_0x5edf08[_0xabad('0x31')]=_[_0xabad('0x32')](_0x5edf08[_0xabad('0x33')],_0x5edf08['query']);_0x3fbb31[_0xabad('0x34')]=_[_0xabad('0x32')](_0x5edf08[_0xabad('0x33')],qs[_0xabad('0x35')](_0x1eb38e[_0xabad('0x2f')][_0xabad('0x35')]));_0x3fbb31['attributes']=_0x3fbb31[_0xabad('0x34')]['length']?_0x3fbb31[_0xabad('0x34')]:_0x5edf08[_0xabad('0x33')];_0x3fbb31[_0xabad('0x53')]=qs['sort'](_0x1eb38e[_0xabad('0x2f')][_0xabad('0x38')]);_0x3fbb31[_0xabad('0x3a')]=qs[_0xabad('0x31')](_[_0xabad('0x54')](_0x1eb38e[_0xabad('0x2f')],_0x5edf08[_0xabad('0x31')]));if(_0x1eb38e[_0xabad('0x2f')][_0xabad('0x3c')]){_0x3fbb31['where']=_[_0xabad('0x39')](_0x3fbb31[_0xabad('0x3a')],{'$or':_[_0xabad('0x29')](_0x3fbb31[_0xabad('0x34')],function(_0x51fb3a){var _0x21438e={};_0x21438e[_0x51fb3a]={'$like':'%'+_0x1eb38e[_0xabad('0x2f')][_0xabad('0x3c')]+'%'};return _0x21438e;})});}_0x3fbb31=_[_0xabad('0x39')]({},_0x3fbb31,_0x1eb38e['options']);return _0x4b8a79[_0xabad('0x81')](_0x3fbb31);}})[_0xabad('0x22')](function(_0x5515df){if(_0x5515df){_0x3a4095=_0x5515df['length'];if(!_0x1eb38e[_0xabad('0x2f')][_0xabad('0x37')](_0xabad('0x52'))){_0x3fbb31[_0xabad('0x1c')]=qs[_0xabad('0x1c')](_0x1eb38e['query'][_0xabad('0x1c')]);_0x3fbb31[_0xabad('0x1b')]=qs['offset'](_0x1eb38e[_0xabad('0x2f')][_0xabad('0x1b')]);}return _0x4b8a79['getAgents'](_0x3fbb31);}})[_0xabad('0x22')](function(_0x200102){if(_0x200102){return _0x200102?{'count':_0x3a4095,'rows':_0x200102}:null;}})[_0xabad('0x22')](respondWithResult(_0x56d060,null))[_0xabad('0x41')](handleError(_0x56d060,null));};
\ No newline at end of file
+var _0x548e=['index','map','SmsQueue','rawAttributes','fieldName','type','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','include','findAll','rows','catch','params','keys','includeAll','options','find','body','user','get','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','describe','findOne','UserSmsQueue','User','findAndCountAll','UserId','smsPause','updatedAt','format','%s/%s','SIP','createdAt','getTeams','Team','addTeams','ids','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','forEach','emit','userSmsQueue:save','removeTeams','select','field','tq.TeamId','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','toString','QueryTypes','every','TeamId','union','compact','value','isEmpty','removeAgents','userSmsQueue:remove','omit','getAgents','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsQueue.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','then','SmsQueues','UserProfileResource','stack','name','send'];(function(_0x4f053d,_0x50c38c){var _0x377963=function(_0x23bf0d){while(--_0x23bf0d){_0x4f053d['push'](_0x4f053d['shift']());}};_0x377963(++_0x50c38c);}(_0x548e,0x1f4));var _0xe548=function(_0x1cf4f8,_0x32420c){_0x1cf4f8=_0x1cf4f8-0x0;var _0x46de13=_0x548e[_0x1cf4f8];return _0x46de13;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xe548('0x0'));var jsonpatch=require(_0xe548('0x1'));var rp=require('request-promise');var moment=require(_0xe548('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xe548('0x3'));var util=require(_0xe548('0x4'));var path=require(_0xe548('0x5'));var sox=require(_0xe548('0x6'));var csv=require(_0xe548('0x7'));var ejs=require(_0xe548('0x8'));var fs=require('fs');var fs_extra=require(_0xe548('0x9'));var _=require(_0xe548('0xa'));var squel=require(_0xe548('0xb'));var crypto=require(_0xe548('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xe548('0xd'));var toCsv=require(_0xe548('0x7'));var querystring=require(_0xe548('0xe'));var Papa=require(_0xe548('0xf'));var Redis=require(_0xe548('0x10'));var authService=require(_0xe548('0x11'));var qs=require(_0xe548('0x12'));var as=require(_0xe548('0x13'));var hardwareService=require(_0xe548('0x14'));var logger=require(_0xe548('0x15'))(_0xe548('0x16'));var utils=require(_0xe548('0x17'));var config=require(_0xe548('0x18'));var licenseUtil=require(_0xe548('0x19'));var db=require(_0xe548('0x1a'))['db'];config[_0xe548('0x1b')]=_[_0xe548('0x1c')](config[_0xe548('0x1b')],{'host':_0xe548('0x1d'),'port':0x18eb});var socket=require(_0xe548('0x1e'))(new Redis(config[_0xe548('0x1b')]));require(_0xe548('0x1f'))[_0xe548('0x20')](socket);function respondWithStatusCode(_0x1bfa8e,_0x490587){_0x490587=_0x490587||0xcc;return function(_0x2059be){if(_0x2059be){return _0x1bfa8e[_0xe548('0x21')](_0x490587);}return _0x1bfa8e[_0xe548('0x22')](_0x490587)[_0xe548('0x23')]();};}function respondWithResult(_0x254e88,_0x49c8b1){_0x49c8b1=_0x49c8b1||0xc8;return function(_0x57c141){if(_0x57c141){return _0x254e88['status'](_0x49c8b1)['json'](_0x57c141);}};}function respondWithFilteredResult(_0x33b9e9,_0x4e4582){return function(_0x3de251){if(_0x3de251){var _0x1bb267=typeof _0x4e4582[_0xe548('0x24')]===_0xe548('0x25')&&typeof _0x4e4582[_0xe548('0x26')]===_0xe548('0x25');var _0x5d41fc=_0x3de251[_0xe548('0x27')];var _0x549542=_0x1bb267?0x0:_0x4e4582[_0xe548('0x24')];var _0x164da4=_0x1bb267?_0x3de251[_0xe548('0x27')]:_0x4e4582[_0xe548('0x24')]+_0x4e4582[_0xe548('0x26')];var _0x19b916;if(_0x164da4>=_0x5d41fc){_0x164da4=_0x5d41fc;_0x19b916=0xc8;}else{_0x19b916=0xce;}_0x33b9e9[_0xe548('0x22')](_0x19b916);return _0x33b9e9[_0xe548('0x28')](_0xe548('0x29'),_0x549542+'-'+_0x164da4+'/'+_0x5d41fc)[_0xe548('0x2a')](_0x3de251);}return null;};}function patchUpdates(_0x5c2747){return function(_0x5f4f2f){try{jsonpatch['apply'](_0x5f4f2f,_0x5c2747,!![]);}catch(_0x44631d){return BPromise[_0xe548('0x2b')](_0x44631d);}return _0x5f4f2f[_0xe548('0x2c')]();};}function saveUpdates(_0x281605,_0x1d264c){return function(_0x192a1b){if(_0x192a1b){return _0x192a1b[_0xe548('0x2d')](_0x281605)[_0xe548('0x2e')](function(_0x297794){return _0x297794;});}return null;};}function removeEntity(_0x18b226,_0x74ec82){return function(_0xd6cdd6){if(_0xd6cdd6){return _0xd6cdd6['destroy']()[_0xe548('0x2e')](function(){var _0x5431a4=_0xd6cdd6['get']({'plain':!![]});var _0x29121c=_0xe548('0x2f');return db[_0xe548('0x30')]['destroy']({'where':{'type':_0x29121c,'resourceId':_0x5431a4['id']}})['then'](function(){return _0xd6cdd6;});})[_0xe548('0x2e')](function(){_0x18b226['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2bfddd,_0x44e358){return function(_0x3ec1e0){if(!_0x3ec1e0){_0x2bfddd[_0xe548('0x21')](0x194);}return _0x3ec1e0;};}function handleError(_0x5c024c,_0x298abf){_0x298abf=_0x298abf||0x1f4;return function(_0x147a12){logger['error'](_0x147a12[_0xe548('0x31')]);if(_0x147a12[_0xe548('0x32')]){delete _0x147a12[_0xe548('0x32')];}_0x5c024c[_0xe548('0x22')](_0x298abf)[_0xe548('0x33')](_0x147a12);};}exports[_0xe548('0x34')]=function(_0x39d6da,_0x23acbd){var _0x141cad={},_0xc509fb={},_0x55b559={'count':0x0,'rows':[]};var _0x2bb1a9=_[_0xe548('0x35')](db[_0xe548('0x36')][_0xe548('0x37')],function(_0x1a894f){return{'name':_0x1a894f[_0xe548('0x38')],'type':_0x1a894f[_0xe548('0x39')]['key']};});_0xc509fb['model']=_[_0xe548('0x35')](_0x2bb1a9,_0xe548('0x32'));_0xc509fb[_0xe548('0x3a')]=_['keys'](_0x39d6da[_0xe548('0x3a')]);_0xc509fb[_0xe548('0x3b')]=_[_0xe548('0x3c')](_0xc509fb[_0xe548('0x3d')],_0xc509fb[_0xe548('0x3a')]);_0x141cad[_0xe548('0x3e')]=_[_0xe548('0x3c')](_0xc509fb[_0xe548('0x3d')],qs['fields'](_0x39d6da[_0xe548('0x3a')][_0xe548('0x3f')]));_0x141cad[_0xe548('0x3e')]=_0x141cad[_0xe548('0x3e')][_0xe548('0x40')]?_0x141cad['attributes']:_0xc509fb['model'];if(!_0x39d6da['query'][_0xe548('0x41')](_0xe548('0x42'))){_0x141cad[_0xe548('0x26')]=qs[_0xe548('0x26')](_0x39d6da[_0xe548('0x3a')][_0xe548('0x26')]);_0x141cad[_0xe548('0x24')]=qs[_0xe548('0x24')](_0x39d6da['query'][_0xe548('0x24')]);}_0x141cad[_0xe548('0x43')]=qs[_0xe548('0x44')](_0x39d6da['query'][_0xe548('0x44')]);_0x141cad[_0xe548('0x45')]=qs[_0xe548('0x3b')](_[_0xe548('0x46')](_0x39d6da[_0xe548('0x3a')],_0xc509fb[_0xe548('0x3b')]),_0x2bb1a9);if(_0x39d6da[_0xe548('0x3a')][_0xe548('0x47')]){_0x141cad[_0xe548('0x45')]=_[_0xe548('0x48')](_0x141cad[_0xe548('0x45')],{'$or':_[_0xe548('0x35')](_0x2bb1a9,function(_0x254246){if(_0x254246[_0xe548('0x39')]!==_0xe548('0x49')){var _0x10146e={};_0x10146e[_0x254246['name']]={'$like':'%'+_0x39d6da[_0xe548('0x3a')][_0xe548('0x47')]+'%'};return _0x10146e;}})});}_0x141cad=_['merge']({},_0x141cad,_0x39d6da['options']);var _0xccb5a3={'where':_0x141cad['where']};return db[_0xe548('0x36')][_0xe548('0x27')](_0xccb5a3)[_0xe548('0x2e')](function(_0x20a0d1){_0x55b559[_0xe548('0x27')]=_0x20a0d1;if(_0x39d6da[_0xe548('0x3a')]['includeAll']){_0x141cad[_0xe548('0x4a')]=[{'all':!![]}];}return db[_0xe548('0x36')][_0xe548('0x4b')](_0x141cad);})[_0xe548('0x2e')](function(_0x2d5637){_0x55b559[_0xe548('0x4c')]=_0x2d5637;return _0x55b559;})[_0xe548('0x2e')](respondWithFilteredResult(_0x23acbd,_0x141cad))[_0xe548('0x4d')](handleError(_0x23acbd,null));};exports['show']=function(_0x2da0d5,_0x263bb0){var _0x122885={'raw':!![],'where':{'id':_0x2da0d5[_0xe548('0x4e')]['id']}},_0x455db3={};_0x455db3['model']=_[_0xe548('0x4f')](db['SmsQueue'][_0xe548('0x37')]);_0x455db3[_0xe548('0x3a')]=_[_0xe548('0x4f')](_0x2da0d5[_0xe548('0x3a')]);_0x455db3['filters']=_['intersection'](_0x455db3[_0xe548('0x3d')],_0x455db3[_0xe548('0x3a')]);_0x122885[_0xe548('0x3e')]=_[_0xe548('0x3c')](_0x455db3[_0xe548('0x3d')],qs[_0xe548('0x3f')](_0x2da0d5[_0xe548('0x3a')][_0xe548('0x3f')]));_0x122885[_0xe548('0x3e')]=_0x122885['attributes']['length']?_0x122885[_0xe548('0x3e')]:_0x455db3[_0xe548('0x3d')];if(_0x2da0d5[_0xe548('0x3a')][_0xe548('0x50')]){_0x122885[_0xe548('0x4a')]=[{'all':!![]}];}_0x122885=_[_0xe548('0x48')]({},_0x122885,_0x2da0d5[_0xe548('0x51')]);return db[_0xe548('0x36')][_0xe548('0x52')](_0x122885)[_0xe548('0x2e')](handleEntityNotFound(_0x263bb0,null))['then'](respondWithResult(_0x263bb0,null))[_0xe548('0x4d')](handleError(_0x263bb0,null));};exports['create']=function(_0x33c0e7,_0x1a44a1){return db[_0xe548('0x36')]['create'](_0x33c0e7[_0xe548('0x53')],{})[_0xe548('0x2e')](function(_0x1cdb6d){var _0x931095=_0x33c0e7[_0xe548('0x54')]['get']({'plain':!![]});if(!_0x931095)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x931095['role']===_0xe548('0x54')){var _0xd56caa=_0x1cdb6d[_0xe548('0x55')]({'plain':!![]});var _0x51fa21=_0xe548('0x2f');return db['UserProfileSection'][_0xe548('0x52')]({'where':{'name':_0x51fa21,'userProfileId':_0x931095[_0xe548('0x56')]},'raw':!![]})[_0xe548('0x2e')](function(_0x46616a){if(_0x46616a&&_0x46616a[_0xe548('0x57')]===0x0){return db[_0xe548('0x30')]['create']({'name':_0xd56caa[_0xe548('0x32')],'resourceId':_0xd56caa['id'],'type':_0x46616a['name'],'sectionId':_0x46616a['id']},{})[_0xe548('0x2e')](function(){return _0x1cdb6d;});}else{return _0x1cdb6d;}})[_0xe548('0x4d')](function(_0x255671){logger['error'](_0xe548('0x58'),_0x255671);throw _0x255671;});}return _0x1cdb6d;})[_0xe548('0x2e')](respondWithResult(_0x1a44a1,0xc9))[_0xe548('0x4d')](handleError(_0x1a44a1,null));};exports[_0xe548('0x2d')]=function(_0x9d8154,_0x26b4fa){if(_0x9d8154[_0xe548('0x53')]['id']){delete _0x9d8154[_0xe548('0x53')]['id'];}return db[_0xe548('0x36')][_0xe548('0x52')]({'where':{'id':_0x9d8154[_0xe548('0x4e')]['id']}})[_0xe548('0x2e')](handleEntityNotFound(_0x26b4fa,null))[_0xe548('0x2e')](saveUpdates(_0x9d8154[_0xe548('0x53')],null))[_0xe548('0x2e')](respondWithResult(_0x26b4fa,null))[_0xe548('0x4d')](handleError(_0x26b4fa,null));};exports[_0xe548('0x59')]=function(_0x30e6be,_0x2e252e){return db[_0xe548('0x36')]['find']({'where':{'id':_0x30e6be['params']['id']}})[_0xe548('0x2e')](handleEntityNotFound(_0x2e252e,null))[_0xe548('0x2e')](removeEntity(_0x2e252e,null))[_0xe548('0x4d')](handleError(_0x2e252e,null));};exports[_0xe548('0x5a')]=function(_0x4620ee,_0x48be3e){return db[_0xe548('0x36')][_0xe548('0x5a')]()['then'](respondWithResult(_0x48be3e,null))[_0xe548('0x4d')](handleError(_0x48be3e,null));};exports['getMembers']=function(_0x294b50,_0x375f05,_0x51b030){var _0x5469e5={'raw':!![],'where':{}},_0x15741a={},_0x56e089;return db['SmsQueue'][_0xe548('0x5b')]({'where':{'id':_0x294b50[_0xe548('0x4e')]['id']}})[_0xe548('0x2e')](handleEntityNotFound(_0x375f05,null))['then'](function(_0x570854){if(_0x570854){_0x56e089=_0x570854[_0xe548('0x55')]({'plain':!![]});_0x15741a[_0xe548('0x3d')]=_[_0xe548('0x4f')](db[_0xe548('0x5c')][_0xe548('0x37')]);_0x15741a['query']=_[_0xe548('0x4f')](_0x294b50[_0xe548('0x3a')]);_0x15741a[_0xe548('0x3b')]=_['intersection'](_0x15741a[_0xe548('0x3d')],_0x15741a[_0xe548('0x3a')]);_0x5469e5[_0xe548('0x3e')]=_[_0xe548('0x3c')](_0x15741a[_0xe548('0x3d')],qs[_0xe548('0x3f')](_0x294b50[_0xe548('0x3a')][_0xe548('0x3f')]));_0x5469e5[_0xe548('0x3e')]=_0x5469e5['attributes'][_0xe548('0x40')]?_0x5469e5[_0xe548('0x3e')]:_0x15741a[_0xe548('0x3d')];if(!_0x294b50[_0xe548('0x3a')][_0xe548('0x41')](_0xe548('0x42'))){_0x5469e5['limit']=qs[_0xe548('0x26')](_0x294b50['query'][_0xe548('0x26')]);_0x5469e5[_0xe548('0x24')]=qs[_0xe548('0x24')](_0x294b50['query'][_0xe548('0x24')]);}_0x5469e5[_0xe548('0x43')]=qs[_0xe548('0x44')](_0x294b50[_0xe548('0x3a')]['sort']);_0x5469e5[_0xe548('0x45')]=qs[_0xe548('0x3b')](_['pick'](_0x294b50[_0xe548('0x3a')],_0x15741a[_0xe548('0x3b')]));_0x5469e5[_0xe548('0x45')]['SmsQueueId']=_0x570854['id'];if(_0x294b50['query'][_0xe548('0x47')]){_0x5469e5['where']=_[_0xe548('0x48')](_0x5469e5[_0xe548('0x45')],{'$or':_[_0xe548('0x35')](_0x5469e5[_0xe548('0x3e')],function(_0x2faf6f){var _0x4dfdc0={};_0x4dfdc0[_0x2faf6f]={'$like':'%'+_0x294b50[_0xe548('0x3a')][_0xe548('0x47')]+'%'};return _0x4dfdc0;})});}_0x5469e5=_['merge']({},_0x5469e5,_0x294b50[_0xe548('0x51')]);return db[_0xe548('0x5c')][_0xe548('0x4b')](_0x5469e5);}})['then'](function(_0xdf17fa){if(_0xdf17fa){return db[_0xe548('0x5d')][_0xe548('0x5e')]({'where':{'id':_[_0xe548('0x35')](_0xdf17fa,_0xe548('0x5f')),'role':'agent'},'attributes':['id',_0xe548('0x32'),_0xe548('0x60'),_0xe548('0x61'),'createdAt']});}})[_0xe548('0x2e')](function(_0x45d3c0){if(_0x45d3c0){return{'count':_0x45d3c0['count'],'rows':_[_0xe548('0x35')](_0x45d3c0['rows'],function(_0x47bb20){return{'membername':_0x47bb20[_0xe548('0x32')],'UserId':_0x47bb20['id'],'queue_name':_0x56e089[_0xe548('0x32')],'SmsQueueId':_0x56e089['id'],'interface':util[_0xe548('0x62')](_0xe548('0x63'),_0xe548('0x64'),_0x47bb20[_0xe548('0x32')]),'penalty':0x0,'paused':_0x47bb20[_0xe548('0x60')],'createdAt':_0x47bb20[_0xe548('0x65')],'updatedAt':_0x47bb20[_0xe548('0x61')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xe548('0x2e')](respondWithFilteredResult(_0x375f05,_0x5469e5))[_0xe548('0x4d')](handleError(_0x375f05,null));};exports[_0xe548('0x66')]=function(_0xd62793,_0x402747,_0x4c161a){var _0x1d8106={};var _0x590d5d={};var _0x12787e;var _0x49de7b;return db[_0xe548('0x36')][_0xe548('0x5b')]({'where':{'id':_0xd62793[_0xe548('0x4e')]['id']}})[_0xe548('0x2e')](handleEntityNotFound(_0x402747,null))[_0xe548('0x2e')](function(_0x22b32b){if(_0x22b32b){_0x12787e=_0x22b32b;_0x590d5d[_0xe548('0x3d')]=_['keys'](db[_0xe548('0x67')]['rawAttributes']);_0x590d5d[_0xe548('0x3a')]=_[_0xe548('0x4f')](_0xd62793[_0xe548('0x3a')]);_0x590d5d['filters']=_['intersection'](_0x590d5d['model'],_0x590d5d[_0xe548('0x3a')]);_0x1d8106[_0xe548('0x3e')]=_[_0xe548('0x3c')](_0x590d5d['model'],qs[_0xe548('0x3f')](_0xd62793[_0xe548('0x3a')][_0xe548('0x3f')]));_0x1d8106[_0xe548('0x3e')]=_0x1d8106[_0xe548('0x3e')]['length']?_0x1d8106['attributes']:_0x590d5d[_0xe548('0x3d')];_0x1d8106[_0xe548('0x43')]=qs[_0xe548('0x44')](_0xd62793[_0xe548('0x3a')][_0xe548('0x44')]);_0x1d8106[_0xe548('0x45')]=qs[_0xe548('0x3b')](_[_0xe548('0x46')](_0xd62793[_0xe548('0x3a')],_0x590d5d[_0xe548('0x3b')]));if(_0xd62793['query'][_0xe548('0x47')]){_0x1d8106['where']=_[_0xe548('0x48')](_0x1d8106[_0xe548('0x45')],{'$or':_['map'](_0x1d8106[_0xe548('0x3e')],function(_0x10205c){var _0xf2ab0={};_0xf2ab0[_0x10205c]={'$like':'%'+_0xd62793['query']['filter']+'%'};return _0xf2ab0;})});}_0x1d8106=_[_0xe548('0x48')]({},_0x1d8106,_0xd62793[_0xe548('0x51')]);return _0x12787e['getTeams'](_0x1d8106);}})[_0xe548('0x2e')](function(_0xb4b134){if(_0xb4b134){_0x49de7b=_0xb4b134[_0xe548('0x40')];if(!_0xd62793[_0xe548('0x3a')]['hasOwnProperty']('nolimit')){_0x1d8106[_0xe548('0x26')]=qs[_0xe548('0x26')](_0xd62793[_0xe548('0x3a')][_0xe548('0x26')]);_0x1d8106[_0xe548('0x24')]=qs[_0xe548('0x24')](_0xd62793[_0xe548('0x3a')]['offset']);}return _0x12787e[_0xe548('0x66')](_0x1d8106);}})[_0xe548('0x2e')](function(_0x5802f0){if(_0x5802f0){return _0x5802f0?{'count':_0x49de7b,'rows':_0x5802f0}:null;}})[_0xe548('0x2e')](respondWithResult(_0x402747,null))[_0xe548('0x4d')](handleError(_0x402747,null));};exports[_0xe548('0x68')]=function(_0x264377,_0x363e3c,_0x111aea){var _0x4690a3=_0x264377[_0xe548('0x53')][_0xe548('0x69')];return db['Team']['findAll']({'where':{'id':_0x4690a3},'attributes':['id'],'include':[{'model':db['User'],'as':_0xe548('0x6a'),'attributes':['id',_0xe548('0x32'),_0xe548('0x6b'),_0xe548('0x6c'),_0xe548('0x6d')],'raw':!![]}]})[_0xe548('0x2e')](function(_0x176a27){if(_0x176a27){var _0x5b8251=_[_0xe548('0x6e')](_0x176a27,function(_0x2e4d6c){var _0x16274e=_0x2e4d6c['get']({'plain':!![]});return _0x16274e[_0xe548('0x6a')];});return db[_0xe548('0x36')]['find']({'where':{'id':_0x264377[_0xe548('0x4e')]['id']}})[_0xe548('0x2e')](function(_0x3e69bd){return db[_0xe548('0x6f')][_0xe548('0x70')](function(_0x473ae0){return _0x3e69bd[_0xe548('0x68')](_0x4690a3,{'transaction':_0x473ae0})['then'](function(){return BPromise[_0xe548('0x71')](_0x5b8251,function(_0x15a4fa){return db[_0xe548('0x5c')]['findOrCreate']({'where':{'UserId':_0x15a4fa['id'],'SmsQueueId':_0x264377[_0xe548('0x4e')]['id']},'transaction':_0x473ae0});});})[_0xe548('0x2e')](function(){_0x5b8251[_0xe548('0x72')](function(_0x598213){socket[_0xe548('0x73')](_0xe548('0x74'),{'UserId':_0x598213['id'],'SmsQueueId':_0x3e69bd['id']});});});});});}})[_0xe548('0x2e')](respondWithStatusCode(_0x363e3c,null))['catch'](handleError(_0x363e3c,null));};exports[_0xe548('0x75')]=function(_0x349186,_0x37c08e,_0x528a57){return db[_0xe548('0x67')][_0xe548('0x4b')]({'where':{'id':_0x349186[_0xe548('0x3a')][_0xe548('0x69')]},'attributes':['id'],'include':[{'model':db[_0xe548('0x5d')],'as':_0xe548('0x6a'),'attributes':['id'],'raw':!![]}]})[_0xe548('0x2e')](handleEntityNotFound(_0x37c08e,null))['then'](function(_0x1f1602){var _0x2297ce=_[_0xe548('0x35')](_0x1f1602,'id');var _0xb6abfb=[];var _0x114409=[];var _0x48994e=squel[_0xe548('0x76')]();_0x48994e[_0xe548('0x77')](_0xe548('0x78'))['from']('team_has_sms_queues','tq')[_0xe548('0x79')](_0xe548('0x7a'),'ut',_0xe548('0x7b'))['where']('SmsQueueId\x20=\x20?',_0x349186[_0xe548('0x4e')]['id']);for(var _0x2ccdae=0x0;_0x2ccdae<_0x1f1602[_0xe548('0x40')];_0x2ccdae+=0x1){let _0x344f79=_0x1f1602[_0x2ccdae];for(var _0x22ae8a=0x0;_0x22ae8a<_0x344f79[_0xe548('0x6a')][_0xe548('0x40')];_0x22ae8a+=0x1){let _0x538736=_0x344f79[_0xe548('0x6a')][_0x22ae8a];var _0x1ee005=_0x48994e[_0xe548('0x7c')]();_0x1ee005['where'](_0xe548('0x7d'),_0x538736['id']);_0x114409['push'](db[_0xe548('0x6f')][_0xe548('0x3a')](_0x1ee005[_0xe548('0x7e')](),{'type':db[_0xe548('0x6f')][_0xe548('0x7f')]['SELECT']})[_0xe548('0x2e')](function(_0x92486b){if(_0x92486b['length']===0x1){return _0x538736['id'];}else{var _0x312ee5=_[_0xe548('0x80')](_[_0xe548('0x35')](_0x92486b,_0xe548('0x81')),function(_0x162068){return _['includes'](_0x2297ce,_0x162068);});if(_0x312ee5){return _0x538736['id'];}}}));}}return BPromise['all'](_0x114409)['then'](function(_0xebcda2){_0xb6abfb=_(_0xb6abfb)[_0xe548('0x82')](_0xebcda2)[_0xe548('0x83')]()[_0xe548('0x84')]();return db['SmsQueue'][_0xe548('0x52')]({'where':{'id':_0x349186[_0xe548('0x4e')]['id']}})[_0xe548('0x2e')](function(_0xa8f804){return db[_0xe548('0x6f')][_0xe548('0x70')](function(_0x364006){return _0xa8f804['removeTeams'](_0x349186[_0xe548('0x3a')][_0xe548('0x69')],{'transaction':_0x364006})[_0xe548('0x2e')](function(){if(!_[_0xe548('0x85')](_0xb6abfb)){return _0xa8f804[_0xe548('0x86')](_0xb6abfb,{'transaction':_0x364006});}})[_0xe548('0x2e')](function(){_0xb6abfb['forEach'](function(_0x38cb1e){socket['emit'](_0xe548('0x87'),{'UserId':_0x38cb1e,'SmsQueueId':_0xa8f804['id']});});});});});});})['then'](respondWithStatusCode(_0x37c08e,null))[_0xe548('0x4d')](handleError(_0x37c08e,null));};exports['addAgents']=function(_0x2963d4,_0x5a3283,_0x515cb0){return db[_0xe548('0x36')][_0xe548('0x52')]({'where':{'id':_0x2963d4[_0xe548('0x4e')]['id']}})[_0xe548('0x2e')](handleEntityNotFound(_0x5a3283,null))['then'](function(_0x375bd3){if(_0x375bd3){return _0x375bd3['addAgents'](_0x2963d4[_0xe548('0x53')][_0xe548('0x69')],_[_0xe548('0x88')](_0x2963d4['body'],[_0xe548('0x69'),'id'])||{})['spread'](function(_0x490053){for(var _0x8653c=0x0;_0x8653c<_0x2963d4['body'][_0xe548('0x69')][_0xe548('0x40')];_0x8653c+=0x1){socket[_0xe548('0x73')](_0xe548('0x74'),{'UserId':Number(_0x2963d4[_0xe548('0x53')][_0xe548('0x69')][_0x8653c]),'SmsQueueId':Number(_0x2963d4['params']['id'])});}return _0x490053;});}})[_0xe548('0x2e')](respondWithResult(_0x5a3283,null))['catch'](handleError(_0x5a3283,null));};exports[_0xe548('0x86')]=function(_0xf038f6,_0x42b7cd,_0xca7960){return db[_0xe548('0x36')][_0xe548('0x52')]({'where':{'id':_0xf038f6[_0xe548('0x4e')]['id']}})[_0xe548('0x2e')](handleEntityNotFound(_0x42b7cd,null))[_0xe548('0x2e')](function(_0x22feda){if(_0x22feda){return _0x22feda[_0xe548('0x86')](_0xf038f6['query'][_0xe548('0x69')])[_0xe548('0x2e')](function(){if(_['isArray'](_0xf038f6['query'][_0xe548('0x69')])){for(var _0x107236=0x0;_0x107236<_0xf038f6[_0xe548('0x3a')][_0xe548('0x69')]['length'];_0x107236+=0x1){socket[_0xe548('0x73')](_0xe548('0x87'),{'UserId':Number(_0xf038f6[_0xe548('0x3a')][_0xe548('0x69')][_0x107236]),'SmsQueueId':Number(_0xf038f6[_0xe548('0x4e')]['id'])});}}else{socket[_0xe548('0x73')]('userSmsQueue:remove',{'UserId':Number(_0xf038f6['query'][_0xe548('0x69')]),'SmsQueueId':Number(_0xf038f6[_0xe548('0x4e')]['id'])});}});}})[_0xe548('0x2e')](respondWithStatusCode(_0x42b7cd,null))[_0xe548('0x4d')](handleError(_0x42b7cd,null));};exports['getAgents']=function(_0x47b688,_0x30c417,_0x1ff057){var _0xce65b9={};var _0x4ecbac={};var _0x1aff16;var _0x43d2c4;return db[_0xe548('0x36')]['findOne']({'where':{'id':_0x47b688[_0xe548('0x4e')]['id']}})['then'](handleEntityNotFound(_0x30c417,null))[_0xe548('0x2e')](function(_0x181708){if(_0x181708){_0x1aff16=_0x181708;_0x4ecbac[_0xe548('0x3d')]=_[_0xe548('0x4f')](db[_0xe548('0x5d')][_0xe548('0x37')]);_0x4ecbac['query']=_['keys'](_0x47b688[_0xe548('0x3a')]);_0x4ecbac[_0xe548('0x3b')]=_['intersection'](_0x4ecbac[_0xe548('0x3d')],_0x4ecbac[_0xe548('0x3a')]);_0xce65b9[_0xe548('0x3e')]=_[_0xe548('0x3c')](_0x4ecbac[_0xe548('0x3d')],qs[_0xe548('0x3f')](_0x47b688[_0xe548('0x3a')]['fields']));_0xce65b9[_0xe548('0x3e')]=_0xce65b9[_0xe548('0x3e')][_0xe548('0x40')]?_0xce65b9[_0xe548('0x3e')]:_0x4ecbac[_0xe548('0x3d')];_0xce65b9[_0xe548('0x43')]=qs[_0xe548('0x44')](_0x47b688[_0xe548('0x3a')][_0xe548('0x44')]);_0xce65b9[_0xe548('0x45')]=qs[_0xe548('0x3b')](_['pick'](_0x47b688[_0xe548('0x3a')],_0x4ecbac[_0xe548('0x3b')]));if(_0x47b688['query'][_0xe548('0x47')]){_0xce65b9[_0xe548('0x45')]=_[_0xe548('0x48')](_0xce65b9[_0xe548('0x45')],{'$or':_[_0xe548('0x35')](_0xce65b9[_0xe548('0x3e')],function(_0x3c9bd5){var _0xd7469c={};_0xd7469c[_0x3c9bd5]={'$like':'%'+_0x47b688[_0xe548('0x3a')][_0xe548('0x47')]+'%'};return _0xd7469c;})});}_0xce65b9=_['merge']({},_0xce65b9,_0x47b688['options']);return _0x1aff16[_0xe548('0x89')](_0xce65b9);}})['then'](function(_0x1b6252){if(_0x1b6252){_0x43d2c4=_0x1b6252['length'];if(!_0x47b688[_0xe548('0x3a')][_0xe548('0x41')](_0xe548('0x42'))){_0xce65b9['limit']=qs[_0xe548('0x26')](_0x47b688[_0xe548('0x3a')]['limit']);_0xce65b9['offset']=qs[_0xe548('0x24')](_0x47b688['query']['offset']);}return _0x1aff16[_0xe548('0x89')](_0xce65b9);}})[_0xe548('0x2e')](function(_0x122b6a){if(_0x122b6a){return _0x122b6a?{'count':_0x43d2c4,'rows':_0x122b6a}:null;}})['then'](respondWithResult(_0x30c417,null))[_0xe548('0x4d')](handleError(_0x30c417,null));};
\ No newline at end of file
index ce5b666..344acae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e76=['remove','emit','events','SmsQueue','setMaxListeners','update'];(function(_0x4d1ee9,_0x394a78){var _0x9a5456=function(_0x224f3b){while(--_0x224f3b){_0x4d1ee9['push'](_0x4d1ee9['shift']());}};_0x9a5456(++_0x394a78);}(_0x2e76,0x1ca));var _0x62e7=function(_0x52229f,_0x406149){_0x52229f=_0x52229f-0x0;var _0x48d274=_0x2e76[_0x52229f];return _0x48d274;};'use strict';var EventEmitter=require(_0x62e7('0x0'));var SmsQueue=require('../../mysqldb')['db'][_0x62e7('0x1')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x62e7('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x62e7('0x3'),'afterDestroy':_0x62e7('0x4')};function emitEvent(_0x320474){return function(_0x3d4fbf,_0x25fa13,_0xbd85e6){SmsQueueEvents['emit'](_0x320474+':'+_0x3d4fbf['id'],_0x3d4fbf);SmsQueueEvents[_0x62e7('0x5')](_0x320474,_0x3d4fbf);_0xbd85e6(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsQueue['hook'](e,emitEvent(event));}}module['exports']=SmsQueueEvents;
\ No newline at end of file
+var _0x6fb4=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','save','update','remove'];(function(_0x465ea2,_0x3e5a13){var _0x4ba338=function(_0x571f25){while(--_0x571f25){_0x465ea2['push'](_0x465ea2['shift']());}};_0x4ba338(++_0x3e5a13);}(_0x6fb4,0x1ab));var _0x46fb=function(_0x1b1267,_0x5b37ee){_0x1b1267=_0x1b1267-0x0;var _0x42c68f=_0x6fb4[_0x1b1267];return _0x42c68f;};'use strict';var EventEmitter=require(_0x46fb('0x0'));var SmsQueue=require(_0x46fb('0x1'))['db']['SmsQueue'];var SmsQueueEvents=new EventEmitter();SmsQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x46fb('0x2'),'afterUpdate':_0x46fb('0x3'),'afterDestroy':_0x46fb('0x4')};function emitEvent(_0x15f9fd){return function(_0x716a8,_0x131173,_0x18b432){SmsQueueEvents[_0x46fb('0x5')](_0x15f9fd+':'+_0x716a8['id'],_0x716a8);SmsQueueEvents[_0x46fb('0x5')](_0x15f9fd,_0x716a8);_0x18b432(null);};}for(var e in events){if(events[_0x46fb('0x6')](e)){var event=events[e];SmsQueue[_0x46fb('0x7')](e,emitEvent(event));}}module[_0x46fb('0x8')]=SmsQueueEvents;
\ No newline at end of file
index 3dd9698..d20b800 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97fd=['sms_queues','util','bluebird','request-promise','path','rimraf','./smsQueue.attributes','exports','SmsQueue'];(function(_0x5938e7,_0x11315a){var _0x832d2a=function(_0x576137){while(--_0x576137){_0x5938e7['push'](_0x5938e7['shift']());}};_0x832d2a(++_0x11315a);}(_0x97fd,0x145));var _0xd97f=function(_0x136d9b,_0x24b8fc){_0x136d9b=_0x136d9b-0x0;var _0x45d902=_0x97fd[_0x136d9b];return _0x45d902;};'use strict';var _=require('lodash');var util=require(_0xd97f('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xd97f('0x1'));var rp=require(_0xd97f('0x2'));var fs=require('fs');var path=require(_0xd97f('0x3'));var rimraf=require(_0xd97f('0x4'));var config=require('../../config/environment');var attributes=require(_0xd97f('0x5'));module[_0xd97f('0x6')]=function(_0x5317dc,_0x1b88fc){return _0x5317dc['define'](_0xd97f('0x7'),attributes,{'tableName':_0xd97f('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x21ed=['../../config/environment','exports','define','SmsQueue','util','api','moment','bluebird','request-promise'];(function(_0x517eaf,_0x125750){var _0x381e69=function(_0x2a5241){while(--_0x2a5241){_0x517eaf['push'](_0x517eaf['shift']());}};_0x381e69(++_0x125750);}(_0x21ed,0x175));var _0xd21e=function(_0x177385,_0x323024){_0x177385=_0x177385-0x0;var _0x1d4376=_0x21ed[_0x177385];return _0x1d4376;};'use strict';var _=require('lodash');var util=require(_0xd21e('0x0'));var logger=require('../../config/logger')(_0xd21e('0x1'));var moment=require(_0xd21e('0x2'));var BPromise=require(_0xd21e('0x3'));var rp=require(_0xd21e('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xd21e('0x5'));var attributes=require('./smsQueue.attributes');module[_0xd21e('0x6')]=function(_0x227c60,_0x2402e6){return _0x227c60[_0xd21e('0x7')](_0xd21e('0x8'),attributes,{'tableName':'sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 32572cd..2451e99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5563=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','defaults','redis','socket.io-emitter','register','then','info','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','error','code','SmsQueue,\x20%s,\x20%s','message','catch','GetSmsQueue','findAll','options','limit','include','map','model','attributes','stringify','SmsQueue','raw','ShowSmsQueue','lodash','util','moment'];(function(_0x1693fc,_0x48b09d){var _0x5bf0e5=function(_0x350c15){while(--_0x350c15){_0x1693fc['push'](_0x1693fc['shift']());}};_0x5bf0e5(++_0x48b09d);}(_0x5563,0x107));var _0x3556=function(_0xea2c9f,_0x39cd86){_0xea2c9f=_0xea2c9f-0x0;var _0x5989c2=_0x5563[_0xea2c9f];return _0x5989c2;};'use strict';var _=require(_0x3556('0x0'));var util=require(_0x3556('0x1'));var moment=require(_0x3556('0x2'));var BPromise=require(_0x3556('0x3'));var rs=require(_0x3556('0x4'));var fs=require('fs');var Redis=require(_0x3556('0x5'));var db=require(_0x3556('0x6'))['db'];var utils=require(_0x3556('0x7'));var logger=require('../../config/logger')(_0x3556('0x8'));var config=require('../../config/environment');var jayson=require(_0x3556('0x9'));var client=jayson[_0x3556('0xa')][_0x3556('0xb')]({'port':0x232a});config['redis']=_[_0x3556('0xc')](config[_0x3556('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0x3556('0xe'))(new Redis(config[_0x3556('0xd')]));require('./smsQueue.socket')[_0x3556('0xf')](socket);function respondWithRpcPromise(_0x2a076f,_0x5a2f81,_0x3b08d5){return new BPromise(function(_0x778adf,_0x57dc25){return client['request'](_0x2a076f,_0x3b08d5)[_0x3556('0x10')](function(_0x5c92d0){logger[_0x3556('0x11')]('SmsQueue,\x20%s,\x20%s',_0x5a2f81,_0x3556('0x12'));logger[_0x3556('0x13')](_0x3556('0x14'),_0x5a2f81,_0x3556('0x12'),JSON['stringify'](_0x5c92d0));if(_0x5c92d0[_0x3556('0x15')]){if(_0x5c92d0[_0x3556('0x15')][_0x3556('0x16')]===0x1f4){logger[_0x3556('0x15')](_0x3556('0x17'),_0x5a2f81,_0x5c92d0[_0x3556('0x15')][_0x3556('0x18')]);return _0x57dc25(_0x5c92d0[_0x3556('0x15')][_0x3556('0x18')]);}logger[_0x3556('0x15')](_0x3556('0x17'),_0x5a2f81,_0x5c92d0[_0x3556('0x15')][_0x3556('0x18')]);return _0x778adf(_0x5c92d0['error']['message']);}else{logger[_0x3556('0x11')](_0x3556('0x17'),_0x5a2f81,_0x3556('0x12'));_0x778adf(_0x5c92d0['result']['message']);}})[_0x3556('0x19')](function(_0x2d8700){logger['error']('SmsQueue,\x20%s,\x20%s',_0x5a2f81,_0x2d8700);_0x57dc25(_0x2d8700);});});}exports[_0x3556('0x1a')]=function(_0x5e755e){var _0xbed08f=this;return new Promise(function(_0x20a133,_0x553414){return db['SmsQueue'][_0x3556('0x1b')]({'raw':_0x5e755e[_0x3556('0x1c')]?_0x5e755e[_0x3556('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x5e755e[_0x3556('0x1c')]?_0x5e755e[_0x3556('0x1c')]['where']||null:null,'attributes':_0x5e755e['options']?_0x5e755e[_0x3556('0x1c')]['attributes']||null:null,'limit':_0x5e755e[_0x3556('0x1c')]?_0x5e755e[_0x3556('0x1c')][_0x3556('0x1d')]||null:null,'include':_0x5e755e[_0x3556('0x1c')]?_0x5e755e['options'][_0x3556('0x1e')]?_[_0x3556('0x1f')](_0x5e755e[_0x3556('0x1c')]['include'],function(_0x36c7a1){return{'model':db[_0x36c7a1[_0x3556('0x20')]],'as':_0x36c7a1['as'],'attributes':_0x36c7a1[_0x3556('0x21')],'include':_0x36c7a1[_0x3556('0x1e')]?_[_0x3556('0x1f')](_0x36c7a1[_0x3556('0x1e')],function(_0x3ebdc3){return{'model':db[_0x3ebdc3[_0x3556('0x20')]],'as':_0x3ebdc3['as'],'attributes':_0x3ebdc3[_0x3556('0x21')],'include':_0x3ebdc3['include']?_[_0x3556('0x1f')](_0x3ebdc3[_0x3556('0x1e')],function(_0x3a8de2){return{'model':db[_0x3a8de2[_0x3556('0x20')]],'as':_0x3a8de2['as'],'attributes':_0x3a8de2[_0x3556('0x21')]};}):[]};}):[]};}):[]:[]})[_0x3556('0x10')](function(_0x5b6123){logger[_0x3556('0x11')]('GetSmsQueue',_0x5e755e);logger[_0x3556('0x13')](_0x3556('0x1a'),_0x5e755e,JSON[_0x3556('0x22')](_0x5b6123));_0x20a133(_0x5b6123);})[_0x3556('0x19')](function(_0x61143f){logger['error'](_0x3556('0x1a'),_0x61143f[_0x3556('0x18')],_0x5e755e);_0x553414(_0xbed08f[_0x3556('0x15')](0x1f4,_0x61143f[_0x3556('0x18')]));});});};exports['ShowSmsQueue']=function(_0x25afb9){var _0x153e3b=this;return new Promise(function(_0x24321c,_0x4a7388){return db[_0x3556('0x23')]['find']({'raw':_0x25afb9[_0x3556('0x1c')]?_0x25afb9[_0x3556('0x1c')][_0x3556('0x24')]===undefined?!![]:![]:!![],'where':_0x25afb9[_0x3556('0x1c')]?_0x25afb9[_0x3556('0x1c')]['where']||null:null,'attributes':_0x25afb9['options']?_0x25afb9[_0x3556('0x1c')]['attributes']||null:null,'include':_0x25afb9[_0x3556('0x1c')]?_0x25afb9['options'][_0x3556('0x1e')]?_[_0x3556('0x1f')](_0x25afb9['options'][_0x3556('0x1e')],function(_0x423955){return{'model':db[_0x423955[_0x3556('0x20')]],'as':_0x423955['as'],'attributes':_0x423955['attributes'],'include':_0x423955[_0x3556('0x1e')]?_[_0x3556('0x1f')](_0x423955[_0x3556('0x1e')],function(_0xa50ffb){return{'model':db[_0xa50ffb[_0x3556('0x20')]],'as':_0xa50ffb['as'],'attributes':_0xa50ffb['attributes'],'include':_0xa50ffb[_0x3556('0x1e')]?_[_0x3556('0x1f')](_0xa50ffb['include'],function(_0x480289){return{'model':db[_0x480289[_0x3556('0x20')]],'as':_0x480289['as'],'attributes':_0x480289[_0x3556('0x21')]};}):[]};}):[]};}):[]:[]})[_0x3556('0x10')](function(_0x2b513d){logger[_0x3556('0x11')](_0x3556('0x25'),_0x25afb9);logger[_0x3556('0x13')](_0x3556('0x25'),_0x25afb9,JSON['stringify'](_0x2b513d));_0x24321c(_0x2b513d);})[_0x3556('0x19')](function(_0x47d437){logger['error'](_0x3556('0x25'),_0x47d437[_0x3556('0x18')],_0x25afb9);_0x4a7388(_0x153e3b['error'](0x1f4,_0x47d437[_0x3556('0x18')]));});});};
\ No newline at end of file
+var _0xd197=['code','message','GetSmsQueue','SmsQueue','findAll','options','where','limit','include','map','attributes','model','catch','ShowSmsQueue','find','raw','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','./smsQueue.socket','register','request','then','info','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x1ee1e2,_0x59ea6a){var _0x23c18d=function(_0x3d8ebf){while(--_0x3d8ebf){_0x1ee1e2['push'](_0x1ee1e2['shift']());}};_0x23c18d(++_0x59ea6a);}(_0xd197,0x18a));var _0x7d19=function(_0x187258,_0x53c81f){_0x187258=_0x187258-0x0;var _0x29b4a8=_0xd197[_0x187258];return _0x29b4a8;};'use strict';var _=require(_0x7d19('0x0'));var util=require(_0x7d19('0x1'));var moment=require(_0x7d19('0x2'));var BPromise=require(_0x7d19('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7d19('0x4'));var db=require(_0x7d19('0x5'))['db'];var utils=require(_0x7d19('0x6'));var logger=require('../../config/logger')(_0x7d19('0x7'));var config=require(_0x7d19('0x8'));var jayson=require(_0x7d19('0x9'));var client=jayson[_0x7d19('0xa')][_0x7d19('0xb')]({'port':0x232a});config['redis']=_[_0x7d19('0xc')](config[_0x7d19('0xd')],{'host':_0x7d19('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x7d19('0xf'))[_0x7d19('0x10')](socket);function respondWithRpcPromise(_0x5484ea,_0x209e01,_0x3919e2){return new BPromise(function(_0x2a18a3,_0x5b09c0){return client[_0x7d19('0x11')](_0x5484ea,_0x3919e2)[_0x7d19('0x12')](function(_0x4131db){logger[_0x7d19('0x13')](_0x7d19('0x14'),_0x209e01,_0x7d19('0x15'));logger[_0x7d19('0x16')](_0x7d19('0x17'),_0x209e01,_0x7d19('0x15'),JSON[_0x7d19('0x18')](_0x4131db));if(_0x4131db[_0x7d19('0x19')]){if(_0x4131db[_0x7d19('0x19')][_0x7d19('0x1a')]===0x1f4){logger['error'](_0x7d19('0x14'),_0x209e01,_0x4131db[_0x7d19('0x19')][_0x7d19('0x1b')]);return _0x5b09c0(_0x4131db[_0x7d19('0x19')][_0x7d19('0x1b')]);}logger['error']('SmsQueue,\x20%s,\x20%s',_0x209e01,_0x4131db[_0x7d19('0x19')][_0x7d19('0x1b')]);return _0x2a18a3(_0x4131db[_0x7d19('0x19')][_0x7d19('0x1b')]);}else{logger['info'](_0x7d19('0x14'),_0x209e01,_0x7d19('0x15'));_0x2a18a3(_0x4131db['result'][_0x7d19('0x1b')]);}})['catch'](function(_0x4b027e){logger[_0x7d19('0x19')](_0x7d19('0x14'),_0x209e01,_0x4b027e);_0x5b09c0(_0x4b027e);});});}exports[_0x7d19('0x1c')]=function(_0x311a67){var _0x50528d=this;return new Promise(function(_0x4625b3,_0x342f1f){return db[_0x7d19('0x1d')][_0x7d19('0x1e')]({'raw':_0x311a67[_0x7d19('0x1f')]?_0x311a67[_0x7d19('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x311a67[_0x7d19('0x1f')]?_0x311a67[_0x7d19('0x1f')][_0x7d19('0x20')]||null:null,'attributes':_0x311a67['options']?_0x311a67[_0x7d19('0x1f')]['attributes']||null:null,'limit':_0x311a67[_0x7d19('0x1f')]?_0x311a67[_0x7d19('0x1f')][_0x7d19('0x21')]||null:null,'include':_0x311a67['options']?_0x311a67['options'][_0x7d19('0x22')]?_[_0x7d19('0x23')](_0x311a67['options'][_0x7d19('0x22')],function(_0x51cebb){return{'model':db[_0x51cebb['model']],'as':_0x51cebb['as'],'attributes':_0x51cebb[_0x7d19('0x24')],'include':_0x51cebb['include']?_['map'](_0x51cebb[_0x7d19('0x22')],function(_0x108f7d){return{'model':db[_0x108f7d[_0x7d19('0x25')]],'as':_0x108f7d['as'],'attributes':_0x108f7d['attributes'],'include':_0x108f7d[_0x7d19('0x22')]?_[_0x7d19('0x23')](_0x108f7d[_0x7d19('0x22')],function(_0x4e322e){return{'model':db[_0x4e322e[_0x7d19('0x25')]],'as':_0x4e322e['as'],'attributes':_0x4e322e[_0x7d19('0x24')]};}):[]};}):[]};}):[]:[]})[_0x7d19('0x12')](function(_0x4e0689){logger[_0x7d19('0x13')](_0x7d19('0x1c'),_0x311a67);logger[_0x7d19('0x16')]('GetSmsQueue',_0x311a67,JSON['stringify'](_0x4e0689));_0x4625b3(_0x4e0689);})[_0x7d19('0x26')](function(_0xac989){logger[_0x7d19('0x19')](_0x7d19('0x1c'),_0xac989['message'],_0x311a67);_0x342f1f(_0x50528d[_0x7d19('0x19')](0x1f4,_0xac989[_0x7d19('0x1b')]));});});};exports[_0x7d19('0x27')]=function(_0x4b44d9){var _0x2f0323=this;return new Promise(function(_0x30d7e5,_0x1d5987){return db[_0x7d19('0x1d')][_0x7d19('0x28')]({'raw':_0x4b44d9[_0x7d19('0x1f')]?_0x4b44d9['options'][_0x7d19('0x29')]===undefined?!![]:![]:!![],'where':_0x4b44d9[_0x7d19('0x1f')]?_0x4b44d9[_0x7d19('0x1f')][_0x7d19('0x20')]||null:null,'attributes':_0x4b44d9[_0x7d19('0x1f')]?_0x4b44d9[_0x7d19('0x1f')][_0x7d19('0x24')]||null:null,'include':_0x4b44d9[_0x7d19('0x1f')]?_0x4b44d9[_0x7d19('0x1f')]['include']?_[_0x7d19('0x23')](_0x4b44d9[_0x7d19('0x1f')][_0x7d19('0x22')],function(_0x14b9b2){return{'model':db[_0x14b9b2[_0x7d19('0x25')]],'as':_0x14b9b2['as'],'attributes':_0x14b9b2[_0x7d19('0x24')],'include':_0x14b9b2[_0x7d19('0x22')]?_[_0x7d19('0x23')](_0x14b9b2[_0x7d19('0x22')],function(_0xfd06dd){return{'model':db[_0xfd06dd[_0x7d19('0x25')]],'as':_0xfd06dd['as'],'attributes':_0xfd06dd[_0x7d19('0x24')],'include':_0xfd06dd['include']?_['map'](_0xfd06dd[_0x7d19('0x22')],function(_0x5631f4){return{'model':db[_0x5631f4[_0x7d19('0x25')]],'as':_0x5631f4['as'],'attributes':_0x5631f4['attributes']};}):[]};}):[]};}):[]:[]})[_0x7d19('0x12')](function(_0xd97d7d){logger[_0x7d19('0x13')](_0x7d19('0x27'),_0x4b44d9);logger[_0x7d19('0x16')](_0x7d19('0x27'),_0x4b44d9,JSON[_0x7d19('0x18')](_0xd97d7d));_0x30d7e5(_0xd97d7d);})[_0x7d19('0x26')](function(_0x46f0a2){logger['error'](_0x7d19('0x27'),_0x46f0a2['message'],_0x4b44d9);_0x1d5987(_0x2f0323[_0x7d19('0x19')](0x1f4,_0x46f0a2[_0x7d19('0x1b')]));});});};
\ No newline at end of file
index d5f5f55..d13f97e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b15=['emit','register','length','smsQueue:','./smsQueue.events','update'];(function(_0x5a7d5f,_0x5695cb){var _0x5dcded=function(_0x13f053){while(--_0x13f053){_0x5a7d5f['push'](_0x5a7d5f['shift']());}};_0x5dcded(++_0x5695cb);}(_0x9b15,0x172));var _0x59b1=function(_0x39b0c6,_0x1f3824){_0x39b0c6=_0x39b0c6-0x0;var _0x366b6b=_0x9b15[_0x39b0c6];return _0x366b6b;};'use strict';var SmsQueueEvents=require(_0x59b1('0x0'));var events=['save','remove',_0x59b1('0x1')];function createListener(_0x262e87,_0x29b7da){return function(_0x5964ff){_0x29b7da[_0x59b1('0x2')](_0x262e87,_0x5964ff);};}function removeListener(_0x548358,_0x140d07){return function(){SmsQueueEvents['removeListener'](_0x548358,_0x140d07);};}exports[_0x59b1('0x3')]=function(_0x322b6a){for(var _0xae7d72=0x0,_0x38b5af=events[_0x59b1('0x4')];_0xae7d72<_0x38b5af;_0xae7d72++){var _0x59e3cc=events[_0xae7d72];var _0x42553f=createListener(_0x59b1('0x5')+_0x59e3cc,_0x322b6a);SmsQueueEvents['on'](_0x59e3cc,_0x42553f);}};
\ No newline at end of file
+var _0x8b28=['removeListener','register','length','smsQueue:','save','remove','update','emit'];(function(_0x3cc547,_0x4020ec){var _0x52b5b8=function(_0x2dc039){while(--_0x2dc039){_0x3cc547['push'](_0x3cc547['shift']());}};_0x52b5b8(++_0x4020ec);}(_0x8b28,0x164));var _0x88b2=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x8b28[_0x20a584];return _0x4b41a8;};'use strict';var SmsQueueEvents=require('./smsQueue.events');var events=[_0x88b2('0x0'),_0x88b2('0x1'),_0x88b2('0x2')];function createListener(_0x31a8a0,_0x31f0a1){return function(_0x5d359a){_0x31f0a1[_0x88b2('0x3')](_0x31a8a0,_0x5d359a);};}function removeListener(_0x4ea313,_0x4cb533){return function(){SmsQueueEvents[_0x88b2('0x4')](_0x4ea313,_0x4cb533);};}exports[_0x88b2('0x5')]=function(_0x3ce335){for(var _0x3df304=0x0,_0x5d474e=events[_0x88b2('0x6')];_0x3df304<_0x5d474e;_0x3df304++){var _0x1f1313=events[_0x3df304];var _0x494fcb=createListener(_0x88b2('0x7')+_0x1f1313,_0x3ce335);SmsQueueEvents['on'](_0x1f1313,_0x494fcb);}};
\ No newline at end of file
index bc16147..f98e953 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24e3=['create','put','update','delete','destroy','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueueReport.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post'];(function(_0x5de33e,_0x4edaa4){var _0x3b0f72=function(_0x27a29c){while(--_0x27a29c){_0x5de33e['push'](_0x5de33e['shift']());}};_0x3b0f72(++_0x4edaa4);}(_0x24e3,0x1a4));var _0x324e=function(_0x1fc6a0,_0x1700c2){_0x1fc6a0=_0x1fc6a0-0x0;var _0x529f9a=_0x24e3[_0x1fc6a0];return _0x529f9a;};'use strict';var multer=require('multer');var util=require(_0x324e('0x0'));var path=require('path');var timeout=require(_0x324e('0x1'));var express=require(_0x324e('0x2'));var router=express[_0x324e('0x3')]();var fs_extra=require(_0x324e('0x4'));var auth=require(_0x324e('0x5'));var interaction=require(_0x324e('0x6'));var config=require(_0x324e('0x7'));var controller=require(_0x324e('0x8'));router[_0x324e('0x9')]('/',auth['isAuthenticated'](),controller[_0x324e('0xa')]);router[_0x324e('0x9')](_0x324e('0xb'),auth[_0x324e('0xc')](),controller[_0x324e('0xd')]);router[_0x324e('0x9')](_0x324e('0xe'),auth['isAuthenticated'](),controller[_0x324e('0xf')]);router[_0x324e('0x10')]('/',auth[_0x324e('0xc')](),controller[_0x324e('0x11')]);router[_0x324e('0x12')](_0x324e('0xe'),auth[_0x324e('0xc')](),controller[_0x324e('0x13')]);router[_0x324e('0x14')](_0x324e('0xe'),auth[_0x324e('0xc')](),controller[_0x324e('0x15')]);module[_0x324e('0x16')]=router;
\ No newline at end of file
+var _0xfcda=['/:id','show','post','create','put','update','delete','destroy','multer','util','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueueReport.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x1abb09,_0x18ee91){var _0xea1c07=function(_0x38f42c){while(--_0x38f42c){_0x1abb09['push'](_0x1abb09['shift']());}};_0xea1c07(++_0x18ee91);}(_0xfcda,0x198));var _0xafcd=function(_0x3caded,_0x19a211){_0x3caded=_0x3caded-0x0;var _0x1675f7=_0xfcda[_0x3caded];return _0x1675f7;};'use strict';var multer=require(_0xafcd('0x0'));var util=require(_0xafcd('0x1'));var path=require('path');var timeout=require(_0xafcd('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xafcd('0x3'));var interaction=require(_0xafcd('0x4'));var config=require(_0xafcd('0x5'));var controller=require(_0xafcd('0x6'));router[_0xafcd('0x7')]('/',auth[_0xafcd('0x8')](),controller[_0xafcd('0x9')]);router['get'](_0xafcd('0xa'),auth['isAuthenticated'](),controller[_0xafcd('0xb')]);router[_0xafcd('0x7')](_0xafcd('0xc'),auth[_0xafcd('0x8')](),controller[_0xafcd('0xd')]);router[_0xafcd('0xe')]('/',auth['isAuthenticated'](),controller[_0xafcd('0xf')]);router[_0xafcd('0x10')](_0xafcd('0xc'),auth[_0xafcd('0x8')](),controller[_0xafcd('0x11')]);router[_0xafcd('0x12')](_0xafcd('0xc'),auth[_0xafcd('0x8')](),controller[_0xafcd('0x13')]);module['exports']=router;
\ No newline at end of file
index a9038d7..027eab0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34aa=['DATE','moment','exports','STRING'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0x34aa,0x171));var _0xa34a=function(_0x52e68e,_0x309912){_0x52e68e=_0x52e68e-0x0;var _0x3211a4=_0x34aa[_0x52e68e];return _0x3211a4;};'use strict';var moment=require(_0xa34a('0x0'));var Sequelize=require('sequelize');module[_0xa34a('0x1')]={'uniqueid':{'type':Sequelize[_0xa34a('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0xa34a('0x2')]},'joinAt':{'type':Sequelize[_0xa34a('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0xa34a('0x3')]},'exitAt':{'type':Sequelize[_0xa34a('0x3')]},'reason':{'type':Sequelize[_0xa34a('0x2')]}};
\ No newline at end of file
+var _0x5437=['sequelize','exports','STRING','DATE','moment'];(function(_0x1fa4bc,_0x157b4a){var _0x66e51d=function(_0x4cad63){while(--_0x4cad63){_0x1fa4bc['push'](_0x1fa4bc['shift']());}};_0x66e51d(++_0x157b4a);}(_0x5437,0x1b2));var _0x7543=function(_0x1928c9,_0x13a6d1){_0x1928c9=_0x1928c9-0x0;var _0x51b5fb=_0x5437[_0x1928c9];return _0x51b5fb;};'use strict';var moment=require(_0x7543('0x0'));var Sequelize=require(_0x7543('0x1'));module[_0x7543('0x2')]={'uniqueid':{'type':Sequelize[_0x7543('0x3')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x7543('0x4')]},'leaveAt':{'type':Sequelize[_0x7543('0x4')]},'acceptAt':{'type':Sequelize[_0x7543('0x4')]},'exitAt':{'type':Sequelize[_0x7543('0x4')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index f026217..ac1d60d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe950=['VIRTUAL','options','includeAll','findAll','rows','show','params','rawAttributes','find','catch','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','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','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','count','limit','set','Content-Range','apply','reject','update','destroy','then','error','stack','name','send','index','SmsQueueReport','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map'];(function(_0x5240be,_0x4349af){var _0xbb7734=function(_0xda9ee9){while(--_0xda9ee9){_0x5240be['push'](_0x5240be['shift']());}};_0xbb7734(++_0x4349af);}(_0xe950,0x18e));var _0x0e95=function(_0x3bd1c2,_0x4052db){_0x3bd1c2=_0x3bd1c2-0x0;var _0x106abb=_0xe950[_0x3bd1c2];return _0x106abb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0e95('0x0'));var zipdir=require(_0x0e95('0x1'));var jsonpatch=require(_0x0e95('0x2'));var rp=require(_0x0e95('0x3'));var moment=require(_0x0e95('0x4'));var BPromise=require(_0x0e95('0x5'));var Mustache=require(_0x0e95('0x6'));var util=require(_0x0e95('0x7'));var path=require(_0x0e95('0x8'));var sox=require(_0x0e95('0x9'));var csv=require(_0x0e95('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0e95('0xb'));var _=require(_0x0e95('0xc'));var squel=require(_0x0e95('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0e95('0xe'));var toCsv=require(_0x0e95('0xa'));var querystring=require('querystring');var Papa=require(_0x0e95('0xf'));var Redis=require(_0x0e95('0x10'));var authService=require(_0x0e95('0x11'));var qs=require(_0x0e95('0x12'));var as=require(_0x0e95('0x13'));var hardwareService=require(_0x0e95('0x14'));var logger=require('../../config/logger')(_0x0e95('0x15'));var utils=require(_0x0e95('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x0e95('0x17'));var db=require(_0x0e95('0x18'))['db'];function respondWithStatusCode(_0x18b853,_0xfc7c21){_0xfc7c21=_0xfc7c21||0xcc;return function(_0xc18a0b){if(_0xc18a0b){return _0x18b853[_0x0e95('0x19')](_0xfc7c21);}return _0x18b853[_0x0e95('0x1a')](_0xfc7c21)[_0x0e95('0x1b')]();};}function respondWithResult(_0x199d18,_0x202fdd){_0x202fdd=_0x202fdd||0xc8;return function(_0x28f70f){if(_0x28f70f){return _0x199d18[_0x0e95('0x1a')](_0x202fdd)[_0x0e95('0x1c')](_0x28f70f);}};}function respondWithFilteredResult(_0x27ad69,_0x946c92){return function(_0x5d4e50){if(_0x5d4e50){var _0x1baf72=typeof _0x946c92[_0x0e95('0x1d')]==='undefined'&&typeof _0x946c92['limit']==='undefined';var _0x214606=_0x5d4e50[_0x0e95('0x1e')];var _0x3e12d4=_0x1baf72?0x0:_0x946c92[_0x0e95('0x1d')];var _0x48ae02=_0x1baf72?_0x5d4e50[_0x0e95('0x1e')]:_0x946c92[_0x0e95('0x1d')]+_0x946c92[_0x0e95('0x1f')];var _0x5e786c;if(_0x48ae02>=_0x214606){_0x48ae02=_0x214606;_0x5e786c=0xc8;}else{_0x5e786c=0xce;}_0x27ad69[_0x0e95('0x1a')](_0x5e786c);return _0x27ad69[_0x0e95('0x20')](_0x0e95('0x21'),_0x3e12d4+'-'+_0x48ae02+'/'+_0x214606)[_0x0e95('0x1c')](_0x5d4e50);}return null;};}function patchUpdates(_0x19d80f){return function(_0x35b598){try{jsonpatch[_0x0e95('0x22')](_0x35b598,_0x19d80f,!![]);}catch(_0x2137bb){return BPromise[_0x0e95('0x23')](_0x2137bb);}return _0x35b598['save']();};}function saveUpdates(_0xedadb2,_0x17d454){return function(_0x1f3c75){if(_0x1f3c75){return _0x1f3c75[_0x0e95('0x24')](_0xedadb2)['then'](function(_0xcaf550){return _0xcaf550;});}return null;};}function removeEntity(_0x4d2c9d,_0x58c820){return function(_0x50524d){if(_0x50524d){return _0x50524d[_0x0e95('0x25')]()[_0x0e95('0x26')](function(){_0x4d2c9d[_0x0e95('0x1a')](0xcc)[_0x0e95('0x1b')]();});}};}function handleEntityNotFound(_0xb4847a,_0x4f5166){return function(_0x25cc63){if(!_0x25cc63){_0xb4847a[_0x0e95('0x19')](0x194);}return _0x25cc63;};}function handleError(_0x1deec8,_0x22c0ea){_0x22c0ea=_0x22c0ea||0x1f4;return function(_0x474aff){logger[_0x0e95('0x27')](_0x474aff[_0x0e95('0x28')]);if(_0x474aff['name']){delete _0x474aff[_0x0e95('0x29')];}_0x1deec8[_0x0e95('0x1a')](_0x22c0ea)[_0x0e95('0x2a')](_0x474aff);};}exports[_0x0e95('0x2b')]=function(_0x27cf8b,_0x4a4bd9){var _0x5259b4={},_0x58a54b={},_0x199d8b={'count':0x0,'rows':[]};var _0x31cf2e=_['map'](db[_0x0e95('0x2c')]['rawAttributes'],function(_0x155579){return{'name':_0x155579[_0x0e95('0x2d')],'type':_0x155579[_0x0e95('0x2e')]['key']};});_0x58a54b[_0x0e95('0x2f')]=_['map'](_0x31cf2e,'name');_0x58a54b[_0x0e95('0x30')]=_[_0x0e95('0x31')](_0x27cf8b[_0x0e95('0x30')]);_0x58a54b[_0x0e95('0x32')]=_[_0x0e95('0x33')](_0x58a54b['model'],_0x58a54b['query']);_0x5259b4[_0x0e95('0x34')]=_[_0x0e95('0x33')](_0x58a54b[_0x0e95('0x2f')],qs[_0x0e95('0x35')](_0x27cf8b[_0x0e95('0x30')][_0x0e95('0x35')]));_0x5259b4[_0x0e95('0x34')]=_0x5259b4[_0x0e95('0x34')][_0x0e95('0x36')]?_0x5259b4[_0x0e95('0x34')]:_0x58a54b[_0x0e95('0x2f')];if(!_0x27cf8b['query'][_0x0e95('0x37')](_0x0e95('0x38'))){_0x5259b4[_0x0e95('0x1f')]=qs[_0x0e95('0x1f')](_0x27cf8b['query'][_0x0e95('0x1f')]);_0x5259b4['offset']=qs[_0x0e95('0x1d')](_0x27cf8b[_0x0e95('0x30')][_0x0e95('0x1d')]);}_0x5259b4[_0x0e95('0x39')]=qs[_0x0e95('0x3a')](_0x27cf8b[_0x0e95('0x30')][_0x0e95('0x3a')]);_0x5259b4[_0x0e95('0x3b')]=qs[_0x0e95('0x32')](_[_0x0e95('0x3c')](_0x27cf8b['query'],_0x58a54b[_0x0e95('0x32')]),_0x31cf2e);if(_0x27cf8b[_0x0e95('0x30')][_0x0e95('0x3d')]){_0x5259b4[_0x0e95('0x3b')]=_[_0x0e95('0x3e')](_0x5259b4[_0x0e95('0x3b')],{'$or':_[_0x0e95('0x3f')](_0x31cf2e,function(_0x735d7){if(_0x735d7[_0x0e95('0x2e')]!==_0x0e95('0x40')){var _0x1954bf={};_0x1954bf[_0x735d7[_0x0e95('0x29')]]={'$like':'%'+_0x27cf8b[_0x0e95('0x30')]['filter']+'%'};return _0x1954bf;}})});}_0x5259b4=_[_0x0e95('0x3e')]({},_0x5259b4,_0x27cf8b[_0x0e95('0x41')]);var _0xb2bd96={'where':_0x5259b4[_0x0e95('0x3b')]};return db[_0x0e95('0x2c')][_0x0e95('0x1e')](_0xb2bd96)[_0x0e95('0x26')](function(_0x352bc0){_0x199d8b[_0x0e95('0x1e')]=_0x352bc0;if(_0x27cf8b[_0x0e95('0x30')][_0x0e95('0x42')]){_0x5259b4['include']=[{'all':!![]}];}return db[_0x0e95('0x2c')][_0x0e95('0x43')](_0x5259b4);})['then'](function(_0x6d5c19){_0x199d8b[_0x0e95('0x44')]=_0x6d5c19;return _0x199d8b;})['then'](respondWithFilteredResult(_0x4a4bd9,_0x5259b4))['catch'](handleError(_0x4a4bd9,null));};exports[_0x0e95('0x45')]=function(_0x3894a0,_0x3d7b88){var _0x51e8a7={'raw':!![],'where':{'id':_0x3894a0[_0x0e95('0x46')]['id']}},_0x123957={};_0x123957[_0x0e95('0x2f')]=_[_0x0e95('0x31')](db['SmsQueueReport'][_0x0e95('0x47')]);_0x123957[_0x0e95('0x30')]=_[_0x0e95('0x31')](_0x3894a0[_0x0e95('0x30')]);_0x123957[_0x0e95('0x32')]=_[_0x0e95('0x33')](_0x123957[_0x0e95('0x2f')],_0x123957[_0x0e95('0x30')]);_0x51e8a7[_0x0e95('0x34')]=_[_0x0e95('0x33')](_0x123957[_0x0e95('0x2f')],qs[_0x0e95('0x35')](_0x3894a0[_0x0e95('0x30')][_0x0e95('0x35')]));_0x51e8a7[_0x0e95('0x34')]=_0x51e8a7[_0x0e95('0x34')]['length']?_0x51e8a7[_0x0e95('0x34')]:_0x123957[_0x0e95('0x2f')];if(_0x3894a0[_0x0e95('0x30')][_0x0e95('0x42')]){_0x51e8a7['include']=[{'all':!![]}];}_0x51e8a7=_[_0x0e95('0x3e')]({},_0x51e8a7,_0x3894a0['options']);return db['SmsQueueReport'][_0x0e95('0x48')](_0x51e8a7)[_0x0e95('0x26')](handleEntityNotFound(_0x3d7b88,null))['then'](respondWithResult(_0x3d7b88,null))[_0x0e95('0x49')](handleError(_0x3d7b88,null));};exports[_0x0e95('0x4a')]=function(_0x303583,_0x194655){return db[_0x0e95('0x2c')]['create'](_0x303583[_0x0e95('0x4b')],{})[_0x0e95('0x26')](respondWithResult(_0x194655,0xc9))[_0x0e95('0x49')](handleError(_0x194655,null));};exports[_0x0e95('0x24')]=function(_0x410e84,_0x56f846){if(_0x410e84[_0x0e95('0x4b')]['id']){delete _0x410e84[_0x0e95('0x4b')]['id'];}return db[_0x0e95('0x2c')][_0x0e95('0x48')]({'where':{'id':_0x410e84[_0x0e95('0x46')]['id']}})[_0x0e95('0x26')](handleEntityNotFound(_0x56f846,null))[_0x0e95('0x26')](saveUpdates(_0x410e84[_0x0e95('0x4b')],null))[_0x0e95('0x26')](respondWithResult(_0x56f846,null))[_0x0e95('0x49')](handleError(_0x56f846,null));};exports[_0x0e95('0x25')]=function(_0x59a517,_0x6e60e5){return db[_0x0e95('0x2c')]['find']({'where':{'id':_0x59a517[_0x0e95('0x46')]['id']}})['then'](handleEntityNotFound(_0x6e60e5,null))[_0x0e95('0x26')](removeEntity(_0x6e60e5,null))[_0x0e95('0x49')](handleError(_0x6e60e5,null));};exports['describe']=function(_0x2b3461,_0x571292){return db[_0x0e95('0x2c')][_0x0e95('0x4c')]()[_0x0e95('0x26')](respondWithResult(_0x571292,null))[_0x0e95('0x49')](handleError(_0x571292,null));};
\ No newline at end of file
+var _0xbbeb=['ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','then','error','stack','name','send','index','SmsQueueReport','fieldName','type','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','filters','pick','filter','map','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','rawAttributes','length','find','create','body','params','catch','eml-format','rimraf','fast-json-patch','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse'];(function(_0x8a0541,_0xaa5625){var _0x124c9f=function(_0x340c3d){while(--_0x340c3d){_0x8a0541['push'](_0x8a0541['shift']());}};_0x124c9f(++_0xaa5625);}(_0xbbeb,0x86));var _0xbbbe=function(_0x392dc2,_0x47c3f3){_0x392dc2=_0x392dc2-0x0;var _0x14150f=_0xbbeb[_0x392dc2];return _0x14150f;};'use strict';var emlformat=require(_0xbbbe('0x0'));var rimraf=require(_0xbbbe('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbbbe('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xbbbe('0x3'));var util=require(_0xbbbe('0x4'));var path=require(_0xbbbe('0x5'));var sox=require('sox');var csv=require(_0xbbbe('0x6'));var ejs=require(_0xbbbe('0x7'));var fs=require('fs');var fs_extra=require(_0xbbbe('0x8'));var _=require(_0xbbbe('0x9'));var squel=require(_0xbbbe('0xa'));var crypto=require(_0xbbbe('0xb'));var jsforce=require(_0xbbbe('0xc'));var deskjs=require(_0xbbbe('0xd'));var toCsv=require(_0xbbbe('0x6'));var querystring=require(_0xbbbe('0xe'));var Papa=require(_0xbbbe('0xf'));var Redis=require(_0xbbbe('0x10'));var authService=require(_0xbbbe('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xbbbe('0x12'));var hardwareService=require(_0xbbbe('0x13'));var logger=require(_0xbbbe('0x14'))('api');var utils=require(_0xbbbe('0x15'));var config=require(_0xbbbe('0x16'));var licenseUtil=require(_0xbbbe('0x17'));var db=require(_0xbbbe('0x18'))['db'];function respondWithStatusCode(_0x9c77f6,_0x4d8619){_0x4d8619=_0x4d8619||0xcc;return function(_0x51c4f0){if(_0x51c4f0){return _0x9c77f6[_0xbbbe('0x19')](_0x4d8619);}return _0x9c77f6[_0xbbbe('0x1a')](_0x4d8619)[_0xbbbe('0x1b')]();};}function respondWithResult(_0x11a20f,_0x2e566e){_0x2e566e=_0x2e566e||0xc8;return function(_0x5836cf){if(_0x5836cf){return _0x11a20f['status'](_0x2e566e)['json'](_0x5836cf);}};}function respondWithFilteredResult(_0xd6d74a,_0x700321){return function(_0x37f3a2){if(_0x37f3a2){var _0x53a4e0=typeof _0x700321[_0xbbbe('0x1c')]===_0xbbbe('0x1d')&&typeof _0x700321[_0xbbbe('0x1e')]==='undefined';var _0x2f7ca3=_0x37f3a2[_0xbbbe('0x1f')];var _0x5a2900=_0x53a4e0?0x0:_0x700321['offset'];var _0x3d5443=_0x53a4e0?_0x37f3a2['count']:_0x700321[_0xbbbe('0x1c')]+_0x700321['limit'];var _0x5d805a;if(_0x3d5443>=_0x2f7ca3){_0x3d5443=_0x2f7ca3;_0x5d805a=0xc8;}else{_0x5d805a=0xce;}_0xd6d74a[_0xbbbe('0x1a')](_0x5d805a);return _0xd6d74a[_0xbbbe('0x20')](_0xbbbe('0x21'),_0x5a2900+'-'+_0x3d5443+'/'+_0x2f7ca3)['json'](_0x37f3a2);}return null;};}function patchUpdates(_0x1f33fb){return function(_0x358a60){try{jsonpatch[_0xbbbe('0x22')](_0x358a60,_0x1f33fb,!![]);}catch(_0x41a389){return BPromise[_0xbbbe('0x23')](_0x41a389);}return _0x358a60[_0xbbbe('0x24')]();};}function saveUpdates(_0x51084c,_0x4ea717){return function(_0x4d1cb1){if(_0x4d1cb1){return _0x4d1cb1['update'](_0x51084c)['then'](function(_0x1e3356){return _0x1e3356;});}return null;};}function removeEntity(_0x272e8a,_0x22e255){return function(_0x3dc34b){if(_0x3dc34b){return _0x3dc34b[_0xbbbe('0x25')]()[_0xbbbe('0x26')](function(){_0x272e8a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5888f8,_0x9e744f){return function(_0x16a7af){if(!_0x16a7af){_0x5888f8[_0xbbbe('0x19')](0x194);}return _0x16a7af;};}function handleError(_0x2b0d9e,_0x3db3b7){_0x3db3b7=_0x3db3b7||0x1f4;return function(_0x836a66){logger[_0xbbbe('0x27')](_0x836a66[_0xbbbe('0x28')]);if(_0x836a66[_0xbbbe('0x29')]){delete _0x836a66[_0xbbbe('0x29')];}_0x2b0d9e[_0xbbbe('0x1a')](_0x3db3b7)[_0xbbbe('0x2a')](_0x836a66);};}exports[_0xbbbe('0x2b')]=function(_0xa710cb,_0x3955ea){var _0x4bea40={},_0x496eec={},_0x31045a={'count':0x0,'rows':[]};var _0x14034e=_['map'](db[_0xbbbe('0x2c')]['rawAttributes'],function(_0x544599){return{'name':_0x544599[_0xbbbe('0x2d')],'type':_0x544599[_0xbbbe('0x2e')]['key']};});_0x496eec[_0xbbbe('0x2f')]=_['map'](_0x14034e,'name');_0x496eec[_0xbbbe('0x30')]=_['keys'](_0xa710cb['query']);_0x496eec['filters']=_[_0xbbbe('0x31')](_0x496eec['model'],_0x496eec['query']);_0x4bea40[_0xbbbe('0x32')]=_[_0xbbbe('0x31')](_0x496eec[_0xbbbe('0x2f')],qs[_0xbbbe('0x33')](_0xa710cb[_0xbbbe('0x30')]['fields']));_0x4bea40['attributes']=_0x4bea40[_0xbbbe('0x32')]['length']?_0x4bea40[_0xbbbe('0x32')]:_0x496eec[_0xbbbe('0x2f')];if(!_0xa710cb[_0xbbbe('0x30')][_0xbbbe('0x34')](_0xbbbe('0x35'))){_0x4bea40[_0xbbbe('0x1e')]=qs[_0xbbbe('0x1e')](_0xa710cb[_0xbbbe('0x30')][_0xbbbe('0x1e')]);_0x4bea40[_0xbbbe('0x1c')]=qs[_0xbbbe('0x1c')](_0xa710cb[_0xbbbe('0x30')][_0xbbbe('0x1c')]);}_0x4bea40['order']=qs[_0xbbbe('0x36')](_0xa710cb[_0xbbbe('0x30')]['sort']);_0x4bea40[_0xbbbe('0x37')]=qs[_0xbbbe('0x38')](_[_0xbbbe('0x39')](_0xa710cb[_0xbbbe('0x30')],_0x496eec[_0xbbbe('0x38')]),_0x14034e);if(_0xa710cb[_0xbbbe('0x30')][_0xbbbe('0x3a')]){_0x4bea40[_0xbbbe('0x37')]=_['merge'](_0x4bea40[_0xbbbe('0x37')],{'$or':_[_0xbbbe('0x3b')](_0x14034e,function(_0x40fa39){if(_0x40fa39['type']!==_0xbbbe('0x3c')){var _0x488601={};_0x488601[_0x40fa39[_0xbbbe('0x29')]]={'$like':'%'+_0xa710cb[_0xbbbe('0x30')][_0xbbbe('0x3a')]+'%'};return _0x488601;}})});}_0x4bea40=_[_0xbbbe('0x3d')]({},_0x4bea40,_0xa710cb[_0xbbbe('0x3e')]);var _0x4dea87={'where':_0x4bea40[_0xbbbe('0x37')]};return db[_0xbbbe('0x2c')][_0xbbbe('0x1f')](_0x4dea87)['then'](function(_0x304553){_0x31045a['count']=_0x304553;if(_0xa710cb[_0xbbbe('0x30')][_0xbbbe('0x3f')]){_0x4bea40[_0xbbbe('0x40')]=[{'all':!![]}];}return db[_0xbbbe('0x2c')][_0xbbbe('0x41')](_0x4bea40);})[_0xbbbe('0x26')](function(_0x345f04){_0x31045a[_0xbbbe('0x42')]=_0x345f04;return _0x31045a;})[_0xbbbe('0x26')](respondWithFilteredResult(_0x3955ea,_0x4bea40))['catch'](handleError(_0x3955ea,null));};exports[_0xbbbe('0x43')]=function(_0xb500a5,_0x22189e){var _0x20629a={'raw':!![],'where':{'id':_0xb500a5['params']['id']}},_0x24c961={};_0x24c961[_0xbbbe('0x2f')]=_['keys'](db['SmsQueueReport'][_0xbbbe('0x44')]);_0x24c961[_0xbbbe('0x30')]=_['keys'](_0xb500a5[_0xbbbe('0x30')]);_0x24c961[_0xbbbe('0x38')]=_[_0xbbbe('0x31')](_0x24c961[_0xbbbe('0x2f')],_0x24c961[_0xbbbe('0x30')]);_0x20629a[_0xbbbe('0x32')]=_[_0xbbbe('0x31')](_0x24c961[_0xbbbe('0x2f')],qs[_0xbbbe('0x33')](_0xb500a5[_0xbbbe('0x30')][_0xbbbe('0x33')]));_0x20629a['attributes']=_0x20629a[_0xbbbe('0x32')][_0xbbbe('0x45')]?_0x20629a[_0xbbbe('0x32')]:_0x24c961['model'];if(_0xb500a5[_0xbbbe('0x30')][_0xbbbe('0x3f')]){_0x20629a[_0xbbbe('0x40')]=[{'all':!![]}];}_0x20629a=_[_0xbbbe('0x3d')]({},_0x20629a,_0xb500a5[_0xbbbe('0x3e')]);return db[_0xbbbe('0x2c')][_0xbbbe('0x46')](_0x20629a)['then'](handleEntityNotFound(_0x22189e,null))[_0xbbbe('0x26')](respondWithResult(_0x22189e,null))['catch'](handleError(_0x22189e,null));};exports[_0xbbbe('0x47')]=function(_0x1fdab7,_0x368f06){return db[_0xbbbe('0x2c')][_0xbbbe('0x47')](_0x1fdab7[_0xbbbe('0x48')],{})[_0xbbbe('0x26')](respondWithResult(_0x368f06,0xc9))['catch'](handleError(_0x368f06,null));};exports['update']=function(_0x155536,_0x2501de){if(_0x155536['body']['id']){delete _0x155536[_0xbbbe('0x48')]['id'];}return db['SmsQueueReport'][_0xbbbe('0x46')]({'where':{'id':_0x155536[_0xbbbe('0x49')]['id']}})[_0xbbbe('0x26')](handleEntityNotFound(_0x2501de,null))['then'](saveUpdates(_0x155536['body'],null))[_0xbbbe('0x26')](respondWithResult(_0x2501de,null))[_0xbbbe('0x4a')](handleError(_0x2501de,null));};exports[_0xbbbe('0x25')]=function(_0x2e975f,_0x348dee){return db[_0xbbbe('0x2c')][_0xbbbe('0x46')]({'where':{'id':_0x2e975f[_0xbbbe('0x49')]['id']}})[_0xbbbe('0x26')](handleEntityNotFound(_0x348dee,null))[_0xbbbe('0x26')](removeEntity(_0x348dee,null))[_0xbbbe('0x4a')](handleError(_0x348dee,null));};exports['describe']=function(_0x315665,_0x29eacb){return db[_0xbbbe('0x2c')]['describe']()[_0xbbbe('0x26')](respondWithResult(_0x29eacb,null))[_0xbbbe('0x4a')](handleError(_0x29eacb,null));};
\ No newline at end of file
index 43d6fcc..0c3b1a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['define','SmsQueueReport','uniqueid','lodash','util','../../config/logger','bluebird','path','rimraf','../../config/environment','./smsQueueReport.attributes','exports'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x92c450,_0x41f1e3){_0x92c450=_0x92c450-0x0;var _0x2a9599=_0xa9e0[_0x92c450];return _0x2a9599;};'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':'report_sms_queue','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0a9e('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa9e0=['define','SmsQueueReport','uniqueid','lodash','util','../../config/logger','bluebird','path','rimraf','../../config/environment','./smsQueueReport.attributes','exports'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xa9e0[_0x1ac595];return _0x455fff;};'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':'report_sms_queue','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0a9e('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 7ba5fb7..56a63ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd5a=['ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','SmsQueueReport,\x20%s,\x20%s','request\x20sent','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','CreateSmsQueueReport','create','raw','UpdateSmsQueueReport','SmsQueueReport','update','options','attributes','limit','lodash','util','moment','bluebird','randomstring'];(function(_0x474f74,_0x2d7973){var _0x5b6143=function(_0x48911e){while(--_0x48911e){_0x474f74['push'](_0x474f74['shift']());}};_0x5b6143(++_0x2d7973);}(_0xfd5a,0xc1));var _0xafd5=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0xfd5a[_0x413feb];return _0x40ee88;};'use strict';var _=require(_0xafd5('0x0'));var util=require(_0xafd5('0x1'));var moment=require(_0xafd5('0x2'));var BPromise=require(_0xafd5('0x3'));var rs=require(_0xafd5('0x4'));var fs=require('fs');var Redis=require(_0xafd5('0x5'));var db=require(_0xafd5('0x6'))['db'];var utils=require(_0xafd5('0x7'));var logger=require(_0xafd5('0x8'))('rpc');var config=require(_0xafd5('0x9'));var jayson=require(_0xafd5('0xa'));var client=jayson[_0xafd5('0xb')][_0xafd5('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1e154e,_0x3ac79e,_0x326452){return new BPromise(function(_0x5940b5,_0x1973a1){return client[_0xafd5('0xd')](_0x1e154e,_0x326452)[_0xafd5('0xe')](function(_0x17341a){logger[_0xafd5('0xf')](_0xafd5('0x10'),_0x3ac79e,_0xafd5('0x11'));logger[_0xafd5('0x12')](_0xafd5('0x13'),_0x3ac79e,_0xafd5('0x11'),JSON[_0xafd5('0x14')](_0x17341a));if(_0x17341a[_0xafd5('0x15')]){if(_0x17341a[_0xafd5('0x15')]['code']===0x1f4){logger['error'](_0xafd5('0x10'),_0x3ac79e,_0x17341a[_0xafd5('0x15')][_0xafd5('0x16')]);return _0x1973a1(_0x17341a[_0xafd5('0x15')][_0xafd5('0x16')]);}logger[_0xafd5('0x15')](_0xafd5('0x10'),_0x3ac79e,_0x17341a[_0xafd5('0x15')][_0xafd5('0x16')]);return _0x5940b5(_0x17341a[_0xafd5('0x15')][_0xafd5('0x16')]);}else{logger[_0xafd5('0xf')](_0xafd5('0x10'),_0x3ac79e,_0xafd5('0x11'));_0x5940b5(_0x17341a['result']['message']);}})[_0xafd5('0x17')](function(_0x2f5a2a){logger[_0xafd5('0x15')](_0xafd5('0x10'),_0x3ac79e,_0x2f5a2a);_0x1973a1(_0x2f5a2a);});});}exports[_0xafd5('0x18')]=function(_0xbe6ca6){var _0x23f032=this;return new Promise(function(_0x247f8b,_0x1a7585){return db['SmsQueueReport'][_0xafd5('0x19')](_0xbe6ca6['body'],{'raw':_0xbe6ca6['options']?_0xbe6ca6['options'][_0xafd5('0x1a')]===undefined?!![]:![]:!![]})[_0xafd5('0xe')](function(_0x27902f){logger[_0xafd5('0xf')](_0xafd5('0x18'),_0xbe6ca6);logger[_0xafd5('0x12')](_0xafd5('0x18'),_0xbe6ca6,JSON[_0xafd5('0x14')](_0x27902f));_0x247f8b(_0x27902f);})[_0xafd5('0x17')](function(_0x4efebd){logger[_0xafd5('0x15')](_0xafd5('0x18'),_0x4efebd[_0xafd5('0x16')],_0xbe6ca6);_0x1a7585(_0x23f032['error'](0x1f4,_0x4efebd[_0xafd5('0x16')]));});});};exports[_0xafd5('0x1b')]=function(_0x296e3a){var _0x3f2100=this;return new Promise(function(_0x18cb68,_0x21942f){return db[_0xafd5('0x1c')][_0xafd5('0x1d')](_0x296e3a['body'],{'raw':_0x296e3a[_0xafd5('0x1e')]?_0x296e3a[_0xafd5('0x1e')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x296e3a[_0xafd5('0x1e')]?_0x296e3a[_0xafd5('0x1e')]['where']||null:null,'attributes':_0x296e3a[_0xafd5('0x1e')]?_0x296e3a[_0xafd5('0x1e')][_0xafd5('0x1f')]||null:null,'limit':_0x296e3a[_0xafd5('0x1e')]?_0x296e3a[_0xafd5('0x1e')][_0xafd5('0x20')]||null:null})['then'](function(_0x46d38a){logger[_0xafd5('0xf')]('UpdateSmsQueueReport',_0x296e3a);logger[_0xafd5('0x12')](_0xafd5('0x1b'),_0x296e3a,JSON[_0xafd5('0x14')](_0x46d38a));_0x18cb68(_0x46d38a);})['catch'](function(_0x3ad549){logger[_0xafd5('0x15')](_0xafd5('0x1b'),_0x3ad549[_0xafd5('0x16')],_0x296e3a);_0x21942f(_0x3f2100[_0xafd5('0x15')](0x1f4,_0x3ad549[_0xafd5('0x16')]));});});};
\ No newline at end of file
+var _0x1fd2=['body','options','raw','then','CreateSmsQueueReport','UpdateSmsQueueReport','SmsQueueReport','update','attributes','limit','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','http','request','info','SmsQueueReport,\x20%s,\x20%s','request\x20sent','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','create'];(function(_0x2dea24,_0x2fc021){var _0x309d58=function(_0x2eb89f){while(--_0x2eb89f){_0x2dea24['push'](_0x2dea24['shift']());}};_0x309d58(++_0x2fc021);}(_0x1fd2,0x112));var _0x21fd=function(_0x2f2589,_0x2ec2b2){_0x2f2589=_0x2f2589-0x0;var _0x57a93a=_0x1fd2[_0x2f2589];return _0x57a93a;};'use strict';var _=require(_0x21fd('0x0'));var util=require(_0x21fd('0x1'));var moment=require('moment');var BPromise=require(_0x21fd('0x2'));var rs=require(_0x21fd('0x3'));var fs=require('fs');var Redis=require(_0x21fd('0x4'));var db=require(_0x21fd('0x5'))['db'];var utils=require(_0x21fd('0x6'));var logger=require('../../config/logger')(_0x21fd('0x7'));var config=require('../../config/environment');var jayson=require(_0x21fd('0x8'));var client=jayson['client'][_0x21fd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3f46e5,_0x327048,_0x487488){return new BPromise(function(_0x4e1168,_0x1dbb26){return client[_0x21fd('0xa')](_0x3f46e5,_0x487488)['then'](function(_0x3d2dce){logger[_0x21fd('0xb')](_0x21fd('0xc'),_0x327048,_0x21fd('0xd'));logger[_0x21fd('0xe')](_0x21fd('0xf'),_0x327048,_0x21fd('0xd'),JSON[_0x21fd('0x10')](_0x3d2dce));if(_0x3d2dce[_0x21fd('0x11')]){if(_0x3d2dce['error'][_0x21fd('0x12')]===0x1f4){logger[_0x21fd('0x11')](_0x21fd('0xc'),_0x327048,_0x3d2dce[_0x21fd('0x11')][_0x21fd('0x13')]);return _0x1dbb26(_0x3d2dce[_0x21fd('0x11')]['message']);}logger[_0x21fd('0x11')](_0x21fd('0xc'),_0x327048,_0x3d2dce[_0x21fd('0x11')]['message']);return _0x4e1168(_0x3d2dce[_0x21fd('0x11')][_0x21fd('0x13')]);}else{logger['info']('SmsQueueReport,\x20%s,\x20%s',_0x327048,_0x21fd('0xd'));_0x4e1168(_0x3d2dce[_0x21fd('0x14')][_0x21fd('0x13')]);}})[_0x21fd('0x15')](function(_0x6f7d94){logger['error']('SmsQueueReport,\x20%s,\x20%s',_0x327048,_0x6f7d94);_0x1dbb26(_0x6f7d94);});});}exports['CreateSmsQueueReport']=function(_0x4e0a98){var _0x35841c=this;return new Promise(function(_0x53ec2b,_0x586a65){return db['SmsQueueReport'][_0x21fd('0x16')](_0x4e0a98[_0x21fd('0x17')],{'raw':_0x4e0a98['options']?_0x4e0a98[_0x21fd('0x18')][_0x21fd('0x19')]===undefined?!![]:![]:!![]})[_0x21fd('0x1a')](function(_0x492045){logger[_0x21fd('0xb')](_0x21fd('0x1b'),_0x4e0a98);logger[_0x21fd('0xe')](_0x21fd('0x1b'),_0x4e0a98,JSON[_0x21fd('0x10')](_0x492045));_0x53ec2b(_0x492045);})['catch'](function(_0x3e0176){logger['error']('CreateSmsQueueReport',_0x3e0176[_0x21fd('0x13')],_0x4e0a98);_0x586a65(_0x35841c['error'](0x1f4,_0x3e0176['message']));});});};exports[_0x21fd('0x1c')]=function(_0x4f6599){var _0x1332c6=this;return new Promise(function(_0x41b92e,_0x21eaec){return db[_0x21fd('0x1d')][_0x21fd('0x1e')](_0x4f6599[_0x21fd('0x17')],{'raw':_0x4f6599[_0x21fd('0x18')]?_0x4f6599[_0x21fd('0x18')][_0x21fd('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4f6599[_0x21fd('0x18')]?_0x4f6599['options']['where']||null:null,'attributes':_0x4f6599[_0x21fd('0x18')]?_0x4f6599['options'][_0x21fd('0x1f')]||null:null,'limit':_0x4f6599[_0x21fd('0x18')]?_0x4f6599[_0x21fd('0x18')][_0x21fd('0x20')]||null:null})['then'](function(_0x321d03){logger[_0x21fd('0xb')](_0x21fd('0x1c'),_0x4f6599);logger[_0x21fd('0xe')]('UpdateSmsQueueReport',_0x4f6599,JSON[_0x21fd('0x10')](_0x321d03));_0x41b92e(_0x321d03);})[_0x21fd('0x15')](function(_0xd9f1ad){logger[_0x21fd('0x11')]('UpdateSmsQueueReport',_0xd9f1ad[_0x21fd('0x13')],_0x4f6599);_0x21eaec(_0x1332c6[_0x21fd('0x11')](0x1f4,_0xd9f1ad[_0x21fd('0x13')]));});});};
\ No newline at end of file
index 2708234..188520f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b1=['exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','index','/describe','isAuthenticated','describe','get','show','create','/:id','update','delete','destroy'];(function(_0xf1603b,_0x257c11){var _0x298fab=function(_0x5a96fd){while(--_0x5a96fd){_0xf1603b['push'](_0xf1603b['shift']());}};_0x298fab(++_0x257c11);}(_0xd8b1,0x105));var _0x1d8b=function(_0x41d4ae,_0x44afc9){_0x41d4ae=_0x41d4ae-0x0;var _0x4cfb3f=_0xd8b1[_0x41d4ae];return _0x4cfb3f;};'use strict';var multer=require(_0x1d8b('0x0'));var util=require(_0x1d8b('0x1'));var path=require(_0x1d8b('0x2'));var timeout=require(_0x1d8b('0x3'));var express=require(_0x1d8b('0x4'));var router=express['Router']();var fs_extra=require(_0x1d8b('0x5'));var auth=require(_0x1d8b('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x1d8b('0x7'));var controller=require('./smsTransferReport.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x1d8b('0x8')]);router['get'](_0x1d8b('0x9'),auth[_0x1d8b('0xa')](),controller[_0x1d8b('0xb')]);router[_0x1d8b('0xc')]('/:id',auth['isAuthenticated'](),controller[_0x1d8b('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x1d8b('0xe')]);router['put'](_0x1d8b('0xf'),auth['isAuthenticated'](),controller[_0x1d8b('0x10')]);router[_0x1d8b('0x11')](_0x1d8b('0xf'),auth[_0x1d8b('0xa')](),controller[_0x1d8b('0x12')]);module[_0x1d8b('0x13')]=router;
\ No newline at end of file
+var _0x46ed=['util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./smsTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id','post','put','update','delete','destroy','multer'];(function(_0x5b2d38,_0x3c461a){var _0x2f7806=function(_0x3433c9){while(--_0x3433c9){_0x5b2d38['push'](_0x5b2d38['shift']());}};_0x2f7806(++_0x3c461a);}(_0x46ed,0x168));var _0xd46e=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x46ed[_0x40a045];return _0x1a687c;};'use strict';var multer=require(_0xd46e('0x0'));var util=require(_0xd46e('0x1'));var path=require('path');var timeout=require(_0xd46e('0x2'));var express=require(_0xd46e('0x3'));var router=express[_0xd46e('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xd46e('0x5'));var interaction=require(_0xd46e('0x6'));var config=require('../../config/environment');var controller=require(_0xd46e('0x7'));router[_0xd46e('0x8')]('/',auth[_0xd46e('0x9')](),controller[_0xd46e('0xa')]);router[_0xd46e('0x8')](_0xd46e('0xb'),auth[_0xd46e('0x9')](),controller[_0xd46e('0xc')]);router[_0xd46e('0x8')](_0xd46e('0xd'),auth[_0xd46e('0x9')](),controller['show']);router[_0xd46e('0xe')]('/',auth[_0xd46e('0x9')](),controller['create']);router[_0xd46e('0xf')](_0xd46e('0xd'),auth[_0xd46e('0x9')](),controller[_0xd46e('0x10')]);router[_0xd46e('0x11')](_0xd46e('0xd'),auth['isAuthenticated'](),controller[_0xd46e('0x12')]);module['exports']=router;
\ No newline at end of file
index 31407d4..9a39a99 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(_0x4d521e,_0x58ba39){var _0x3beb42=function(_0x1a7bd2){while(--_0x1a7bd2){_0x4d521e['push'](_0x4d521e['shift']());}};_0x3beb42(++_0x58ba39);}(_0xb43b,0x1b2));var _0xbb43=function(_0x181c8b,_0x3e9a63){_0x181c8b=_0x181c8b-0x0;var _0x3e141c=_0xb43b[_0x181c8b];return _0x3e141c;};'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(_0x718474,_0x298039){var _0x3d660e=function(_0x470c11){while(--_0x470c11){_0x718474['push'](_0x718474['shift']());}};_0x3d660e(++_0x298039);}(_0x70e0,0x17b));var _0x070e=function(_0x2d3eb1,_0x2f0fd1){_0x2d3eb1=_0x2d3eb1-0x0;var _0xa214=_0x70e0[_0x2d3eb1];return _0xa214;};'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 fd40dd5..60f6be2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7c8=['moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','map','SmsTransferReport','fieldName','key','model','query','filters','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','include','findAll','rows','catch','show','params','keys','rawAttributes','intersection','length','find','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise'];(function(_0x1657a5,_0x3c859e){var _0x191408=function(_0x4487c9){while(--_0x4487c9){_0x1657a5['push'](_0x1657a5['shift']());}};_0x191408(++_0x3c859e);}(_0xa7c8,0x128));var _0x8a7c=function(_0x81bd9d,_0x55a430){_0x81bd9d=_0x81bd9d-0x0;var _0x3b079f=_0xa7c8[_0x81bd9d];return _0x3b079f;};'use strict';var emlformat=require(_0x8a7c('0x0'));var rimraf=require(_0x8a7c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8a7c('0x2'));var rp=require(_0x8a7c('0x3'));var moment=require(_0x8a7c('0x4'));var BPromise=require(_0x8a7c('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x8a7c('0x6'));var sox=require(_0x8a7c('0x7'));var csv=require(_0x8a7c('0x8'));var ejs=require(_0x8a7c('0x9'));var fs=require('fs');var fs_extra=require(_0x8a7c('0xa'));var _=require(_0x8a7c('0xb'));var squel=require(_0x8a7c('0xc'));var crypto=require('crypto');var jsforce=require(_0x8a7c('0xd'));var deskjs=require(_0x8a7c('0xe'));var toCsv=require(_0x8a7c('0x8'));var querystring=require(_0x8a7c('0xf'));var Papa=require(_0x8a7c('0x10'));var Redis=require(_0x8a7c('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x8a7c('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x8a7c('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x8a7c('0x14'));var licenseUtil=require(_0x8a7c('0x15'));var db=require(_0x8a7c('0x16'))['db'];function respondWithStatusCode(_0x583a8f,_0x267e9c){_0x267e9c=_0x267e9c||0xcc;return function(_0x243127){if(_0x243127){return _0x583a8f[_0x8a7c('0x17')](_0x267e9c);}return _0x583a8f['status'](_0x267e9c)[_0x8a7c('0x18')]();};}function respondWithResult(_0x117e6f,_0x2f9139){_0x2f9139=_0x2f9139||0xc8;return function(_0x4610c7){if(_0x4610c7){return _0x117e6f[_0x8a7c('0x19')](_0x2f9139)[_0x8a7c('0x1a')](_0x4610c7);}};}function respondWithFilteredResult(_0x4af2f2,_0x33dded){return function(_0x55cfeb){if(_0x55cfeb){var _0x156a02=typeof _0x33dded[_0x8a7c('0x1b')]===_0x8a7c('0x1c')&&typeof _0x33dded['limit']===_0x8a7c('0x1c');var _0x33a58d=_0x55cfeb[_0x8a7c('0x1d')];var _0x3f38c0=_0x156a02?0x0:_0x33dded['offset'];var _0x2ab92e=_0x156a02?_0x55cfeb[_0x8a7c('0x1d')]:_0x33dded[_0x8a7c('0x1b')]+_0x33dded[_0x8a7c('0x1e')];var _0xc89dc1;if(_0x2ab92e>=_0x33a58d){_0x2ab92e=_0x33a58d;_0xc89dc1=0xc8;}else{_0xc89dc1=0xce;}_0x4af2f2['status'](_0xc89dc1);return _0x4af2f2['set'](_0x8a7c('0x1f'),_0x3f38c0+'-'+_0x2ab92e+'/'+_0x33a58d)['json'](_0x55cfeb);}return null;};}function patchUpdates(_0x2dac64){return function(_0x1f49cc){try{jsonpatch[_0x8a7c('0x20')](_0x1f49cc,_0x2dac64,!![]);}catch(_0x564af1){return BPromise[_0x8a7c('0x21')](_0x564af1);}return _0x1f49cc[_0x8a7c('0x22')]();};}function saveUpdates(_0x1f1738,_0x55cdd7){return function(_0x39d301){if(_0x39d301){return _0x39d301[_0x8a7c('0x23')](_0x1f1738)[_0x8a7c('0x24')](function(_0x13bfc5){return _0x13bfc5;});}return null;};}function removeEntity(_0x591967,_0x536c0f){return function(_0x116a1b){if(_0x116a1b){return _0x116a1b[_0x8a7c('0x25')]()[_0x8a7c('0x24')](function(){_0x591967[_0x8a7c('0x19')](0xcc)[_0x8a7c('0x18')]();});}};}function handleEntityNotFound(_0x1c738d,_0x4972c3){return function(_0x13b4c7){if(!_0x13b4c7){_0x1c738d[_0x8a7c('0x17')](0x194);}return _0x13b4c7;};}function handleError(_0x41c010,_0x4e3c92){_0x4e3c92=_0x4e3c92||0x1f4;return function(_0x3efbf8){logger['error'](_0x3efbf8[_0x8a7c('0x26')]);if(_0x3efbf8[_0x8a7c('0x27')]){delete _0x3efbf8['name'];}_0x41c010[_0x8a7c('0x19')](_0x4e3c92)[_0x8a7c('0x28')](_0x3efbf8);};}exports['index']=function(_0x3ac236,_0x299db7){var _0x1996f7={},_0x446eff={},_0x13d41f={'count':0x0,'rows':[]};var _0x545c01=_[_0x8a7c('0x29')](db[_0x8a7c('0x2a')]['rawAttributes'],function(_0x24bdb2){return{'name':_0x24bdb2[_0x8a7c('0x2b')],'type':_0x24bdb2['type'][_0x8a7c('0x2c')]};});_0x446eff[_0x8a7c('0x2d')]=_[_0x8a7c('0x29')](_0x545c01,_0x8a7c('0x27'));_0x446eff[_0x8a7c('0x2e')]=_['keys'](_0x3ac236[_0x8a7c('0x2e')]);_0x446eff[_0x8a7c('0x2f')]=_['intersection'](_0x446eff['model'],_0x446eff[_0x8a7c('0x2e')]);_0x1996f7[_0x8a7c('0x30')]=_['intersection'](_0x446eff[_0x8a7c('0x2d')],qs[_0x8a7c('0x31')](_0x3ac236[_0x8a7c('0x2e')][_0x8a7c('0x31')]));_0x1996f7[_0x8a7c('0x30')]=_0x1996f7[_0x8a7c('0x30')]['length']?_0x1996f7[_0x8a7c('0x30')]:_0x446eff[_0x8a7c('0x2d')];if(!_0x3ac236['query'][_0x8a7c('0x32')](_0x8a7c('0x33'))){_0x1996f7[_0x8a7c('0x1e')]=qs['limit'](_0x3ac236[_0x8a7c('0x2e')][_0x8a7c('0x1e')]);_0x1996f7[_0x8a7c('0x1b')]=qs[_0x8a7c('0x1b')](_0x3ac236[_0x8a7c('0x2e')][_0x8a7c('0x1b')]);}_0x1996f7[_0x8a7c('0x34')]=qs[_0x8a7c('0x35')](_0x3ac236['query'][_0x8a7c('0x35')]);_0x1996f7[_0x8a7c('0x36')]=qs[_0x8a7c('0x2f')](_[_0x8a7c('0x37')](_0x3ac236[_0x8a7c('0x2e')],_0x446eff[_0x8a7c('0x2f')]),_0x545c01);if(_0x3ac236[_0x8a7c('0x2e')][_0x8a7c('0x38')]){_0x1996f7[_0x8a7c('0x36')]=_[_0x8a7c('0x39')](_0x1996f7[_0x8a7c('0x36')],{'$or':_['map'](_0x545c01,function(_0x3ce013){if(_0x3ce013[_0x8a7c('0x3a')]!==_0x8a7c('0x3b')){var _0x4b9bd2={};_0x4b9bd2[_0x3ce013[_0x8a7c('0x27')]]={'$like':'%'+_0x3ac236[_0x8a7c('0x2e')][_0x8a7c('0x38')]+'%'};return _0x4b9bd2;}})});}_0x1996f7=_['merge']({},_0x1996f7,_0x3ac236[_0x8a7c('0x3c')]);var _0x10342d={'where':_0x1996f7[_0x8a7c('0x36')]};return db[_0x8a7c('0x2a')][_0x8a7c('0x1d')](_0x10342d)[_0x8a7c('0x24')](function(_0x335150){_0x13d41f['count']=_0x335150;if(_0x3ac236[_0x8a7c('0x2e')]['includeAll']){_0x1996f7[_0x8a7c('0x3d')]=[{'all':!![]}];}return db[_0x8a7c('0x2a')][_0x8a7c('0x3e')](_0x1996f7);})[_0x8a7c('0x24')](function(_0x26e12e){_0x13d41f[_0x8a7c('0x3f')]=_0x26e12e;return _0x13d41f;})['then'](respondWithFilteredResult(_0x299db7,_0x1996f7))[_0x8a7c('0x40')](handleError(_0x299db7,null));};exports[_0x8a7c('0x41')]=function(_0x291186,_0xaa8359){var _0xb311a4={'raw':!![],'where':{'id':_0x291186[_0x8a7c('0x42')]['id']}},_0x2f00f4={};_0x2f00f4[_0x8a7c('0x2d')]=_[_0x8a7c('0x43')](db[_0x8a7c('0x2a')][_0x8a7c('0x44')]);_0x2f00f4[_0x8a7c('0x2e')]=_[_0x8a7c('0x43')](_0x291186[_0x8a7c('0x2e')]);_0x2f00f4[_0x8a7c('0x2f')]=_['intersection'](_0x2f00f4['model'],_0x2f00f4['query']);_0xb311a4[_0x8a7c('0x30')]=_[_0x8a7c('0x45')](_0x2f00f4['model'],qs[_0x8a7c('0x31')](_0x291186['query'][_0x8a7c('0x31')]));_0xb311a4[_0x8a7c('0x30')]=_0xb311a4[_0x8a7c('0x30')][_0x8a7c('0x46')]?_0xb311a4[_0x8a7c('0x30')]:_0x2f00f4[_0x8a7c('0x2d')];if(_0x291186[_0x8a7c('0x2e')]['includeAll']){_0xb311a4[_0x8a7c('0x3d')]=[{'all':!![]}];}_0xb311a4=_[_0x8a7c('0x39')]({},_0xb311a4,_0x291186[_0x8a7c('0x3c')]);return db['SmsTransferReport'][_0x8a7c('0x47')](_0xb311a4)[_0x8a7c('0x24')](handleEntityNotFound(_0xaa8359,null))[_0x8a7c('0x24')](respondWithResult(_0xaa8359,null))[_0x8a7c('0x40')](handleError(_0xaa8359,null));};exports[_0x8a7c('0x48')]=function(_0x4f4ab2,_0x39d70f){return db[_0x8a7c('0x2a')][_0x8a7c('0x48')](_0x4f4ab2[_0x8a7c('0x49')],{})[_0x8a7c('0x24')](respondWithResult(_0x39d70f,0xc9))[_0x8a7c('0x40')](handleError(_0x39d70f,null));};exports[_0x8a7c('0x23')]=function(_0xed38d7,_0x129a2d){if(_0xed38d7['body']['id']){delete _0xed38d7[_0x8a7c('0x49')]['id'];}return db['SmsTransferReport']['find']({'where':{'id':_0xed38d7[_0x8a7c('0x42')]['id']}})[_0x8a7c('0x24')](handleEntityNotFound(_0x129a2d,null))[_0x8a7c('0x24')](saveUpdates(_0xed38d7['body'],null))[_0x8a7c('0x24')](respondWithResult(_0x129a2d,null))['catch'](handleError(_0x129a2d,null));};exports[_0x8a7c('0x25')]=function(_0x405506,_0x2b5998){return db[_0x8a7c('0x2a')][_0x8a7c('0x47')]({'where':{'id':_0x405506[_0x8a7c('0x42')]['id']}})[_0x8a7c('0x24')](handleEntityNotFound(_0x2b5998,null))[_0x8a7c('0x24')](removeEntity(_0x2b5998,null))[_0x8a7c('0x40')](handleError(_0x2b5998,null));};exports['describe']=function(_0x2cd397,_0x5aeec9){return db[_0x8a7c('0x2a')][_0x8a7c('0x4a')]()['then'](respondWithResult(_0x5aeec9,null))[_0x8a7c('0x40')](handleError(_0x5aeec9,null));};
\ No newline at end of file
+var _0xfeda=['status','end','json','offset','limit','undefined','count','set','apply','reject','save','update','destroy','then','sendStatus','error','stack','name','map','SmsTransferReport','fieldName','type','key','model','keys','filters','intersection','query','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','create','body','find','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb'];(function(_0x2e1f4f,_0x491d3e){var _0x8fa1c2=function(_0x26eb2e){while(--_0x26eb2e){_0x2e1f4f['push'](_0x2e1f4f['shift']());}};_0x8fa1c2(++_0x491d3e);}(_0xfeda,0x11c));var _0xafed=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0xfeda[_0x28947d];return _0x12d2ee;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xafed('0x0'));var zipdir=require(_0xafed('0x1'));var jsonpatch=require(_0xafed('0x2'));var rp=require(_0xafed('0x3'));var moment=require(_0xafed('0x4'));var BPromise=require(_0xafed('0x5'));var Mustache=require(_0xafed('0x6'));var util=require(_0xafed('0x7'));var path=require(_0xafed('0x8'));var sox=require(_0xafed('0x9'));var csv=require('to-csv');var ejs=require(_0xafed('0xa'));var fs=require('fs');var fs_extra=require(_0xafed('0xb'));var _=require(_0xafed('0xc'));var squel=require(_0xafed('0xd'));var crypto=require(_0xafed('0xe'));var jsforce=require(_0xafed('0xf'));var deskjs=require(_0xafed('0x10'));var toCsv=require(_0xafed('0x11'));var querystring=require(_0xafed('0x12'));var Papa=require(_0xafed('0x13'));var Redis=require(_0xafed('0x14'));var authService=require('../../components/auth/service');var qs=require(_0xafed('0x15'));var as=require(_0xafed('0x16'));var hardwareService=require(_0xafed('0x17'));var logger=require(_0xafed('0x18'))('api');var utils=require(_0xafed('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0xafed('0x1a'));var db=require(_0xafed('0x1b'))['db'];function respondWithStatusCode(_0x3691c7,_0x2fd3b1){_0x2fd3b1=_0x2fd3b1||0xcc;return function(_0x1f9784){if(_0x1f9784){return _0x3691c7['sendStatus'](_0x2fd3b1);}return _0x3691c7[_0xafed('0x1c')](_0x2fd3b1)[_0xafed('0x1d')]();};}function respondWithResult(_0x4cc3cc,_0xafbbbf){_0xafbbbf=_0xafbbbf||0xc8;return function(_0x415ef9){if(_0x415ef9){return _0x4cc3cc[_0xafed('0x1c')](_0xafbbbf)[_0xafed('0x1e')](_0x415ef9);}};}function respondWithFilteredResult(_0x1e141e,_0x4d0839){return function(_0x297d28){if(_0x297d28){var _0x2e1df5=typeof _0x4d0839[_0xafed('0x1f')]==='undefined'&&typeof _0x4d0839[_0xafed('0x20')]===_0xafed('0x21');var _0x43a629=_0x297d28[_0xafed('0x22')];var _0x5e09c0=_0x2e1df5?0x0:_0x4d0839[_0xafed('0x1f')];var _0x21b5e5=_0x2e1df5?_0x297d28[_0xafed('0x22')]:_0x4d0839[_0xafed('0x1f')]+_0x4d0839[_0xafed('0x20')];var _0x9e6b43;if(_0x21b5e5>=_0x43a629){_0x21b5e5=_0x43a629;_0x9e6b43=0xc8;}else{_0x9e6b43=0xce;}_0x1e141e['status'](_0x9e6b43);return _0x1e141e[_0xafed('0x23')]('Content-Range',_0x5e09c0+'-'+_0x21b5e5+'/'+_0x43a629)[_0xafed('0x1e')](_0x297d28);}return null;};}function patchUpdates(_0x49f985){return function(_0x1d4ed7){try{jsonpatch[_0xafed('0x24')](_0x1d4ed7,_0x49f985,!![]);}catch(_0x181e79){return BPromise[_0xafed('0x25')](_0x181e79);}return _0x1d4ed7[_0xafed('0x26')]();};}function saveUpdates(_0x590dec,_0xa852d0){return function(_0xa6216b){if(_0xa6216b){return _0xa6216b[_0xafed('0x27')](_0x590dec)['then'](function(_0x18b861){return _0x18b861;});}return null;};}function removeEntity(_0x3e2cd2,_0x181715){return function(_0x25b736){if(_0x25b736){return _0x25b736[_0xafed('0x28')]()[_0xafed('0x29')](function(){_0x3e2cd2[_0xafed('0x1c')](0xcc)[_0xafed('0x1d')]();});}};}function handleEntityNotFound(_0x2cc463,_0x1f29ff){return function(_0xa9cace){if(!_0xa9cace){_0x2cc463[_0xafed('0x2a')](0x194);}return _0xa9cace;};}function handleError(_0x385523,_0x3a3615){_0x3a3615=_0x3a3615||0x1f4;return function(_0x3961b9){logger[_0xafed('0x2b')](_0x3961b9[_0xafed('0x2c')]);if(_0x3961b9[_0xafed('0x2d')]){delete _0x3961b9[_0xafed('0x2d')];}_0x385523[_0xafed('0x1c')](_0x3a3615)['send'](_0x3961b9);};}exports['index']=function(_0x38aadc,_0x2e849c){var _0x59c02e={},_0x341ff6={},_0x399ccc={'count':0x0,'rows':[]};var _0x58edb4=_[_0xafed('0x2e')](db[_0xafed('0x2f')]['rawAttributes'],function(_0x4a2610){return{'name':_0x4a2610[_0xafed('0x30')],'type':_0x4a2610[_0xafed('0x31')][_0xafed('0x32')]};});_0x341ff6[_0xafed('0x33')]=_[_0xafed('0x2e')](_0x58edb4,'name');_0x341ff6['query']=_[_0xafed('0x34')](_0x38aadc['query']);_0x341ff6[_0xafed('0x35')]=_[_0xafed('0x36')](_0x341ff6[_0xafed('0x33')],_0x341ff6[_0xafed('0x37')]);_0x59c02e['attributes']=_[_0xafed('0x36')](_0x341ff6[_0xafed('0x33')],qs[_0xafed('0x38')](_0x38aadc[_0xafed('0x37')][_0xafed('0x38')]));_0x59c02e['attributes']=_0x59c02e[_0xafed('0x39')][_0xafed('0x3a')]?_0x59c02e[_0xafed('0x39')]:_0x341ff6[_0xafed('0x33')];if(!_0x38aadc[_0xafed('0x37')][_0xafed('0x3b')]('nolimit')){_0x59c02e[_0xafed('0x20')]=qs['limit'](_0x38aadc[_0xafed('0x37')][_0xafed('0x20')]);_0x59c02e[_0xafed('0x1f')]=qs[_0xafed('0x1f')](_0x38aadc[_0xafed('0x37')][_0xafed('0x1f')]);}_0x59c02e[_0xafed('0x3c')]=qs[_0xafed('0x3d')](_0x38aadc[_0xafed('0x37')][_0xafed('0x3d')]);_0x59c02e[_0xafed('0x3e')]=qs[_0xafed('0x35')](_[_0xafed('0x3f')](_0x38aadc[_0xafed('0x37')],_0x341ff6[_0xafed('0x35')]),_0x58edb4);if(_0x38aadc[_0xafed('0x37')][_0xafed('0x40')]){_0x59c02e[_0xafed('0x3e')]=_[_0xafed('0x41')](_0x59c02e['where'],{'$or':_['map'](_0x58edb4,function(_0x173422){if(_0x173422[_0xafed('0x31')]!=='VIRTUAL'){var _0x54cb3d={};_0x54cb3d[_0x173422['name']]={'$like':'%'+_0x38aadc[_0xafed('0x37')][_0xafed('0x40')]+'%'};return _0x54cb3d;}})});}_0x59c02e=_[_0xafed('0x41')]({},_0x59c02e,_0x38aadc[_0xafed('0x42')]);var _0x453994={'where':_0x59c02e[_0xafed('0x3e')]};return db[_0xafed('0x2f')]['count'](_0x453994)[_0xafed('0x29')](function(_0x2a1dc6){_0x399ccc[_0xafed('0x22')]=_0x2a1dc6;if(_0x38aadc[_0xafed('0x37')][_0xafed('0x43')]){_0x59c02e[_0xafed('0x44')]=[{'all':!![]}];}return db[_0xafed('0x2f')][_0xafed('0x45')](_0x59c02e);})['then'](function(_0x617066){_0x399ccc[_0xafed('0x46')]=_0x617066;return _0x399ccc;})[_0xafed('0x29')](respondWithFilteredResult(_0x2e849c,_0x59c02e))[_0xafed('0x47')](handleError(_0x2e849c,null));};exports[_0xafed('0x48')]=function(_0x697559,_0xd38100){var _0x2f2f08={'raw':!![],'where':{'id':_0x697559[_0xafed('0x49')]['id']}},_0x2fbc1d={};_0x2fbc1d[_0xafed('0x33')]=_[_0xafed('0x34')](db[_0xafed('0x2f')]['rawAttributes']);_0x2fbc1d[_0xafed('0x37')]=_[_0xafed('0x34')](_0x697559[_0xafed('0x37')]);_0x2fbc1d[_0xafed('0x35')]=_[_0xafed('0x36')](_0x2fbc1d[_0xafed('0x33')],_0x2fbc1d[_0xafed('0x37')]);_0x2f2f08['attributes']=_[_0xafed('0x36')](_0x2fbc1d['model'],qs['fields'](_0x697559[_0xafed('0x37')]['fields']));_0x2f2f08[_0xafed('0x39')]=_0x2f2f08[_0xafed('0x39')]['length']?_0x2f2f08[_0xafed('0x39')]:_0x2fbc1d[_0xafed('0x33')];if(_0x697559['query']['includeAll']){_0x2f2f08[_0xafed('0x44')]=[{'all':!![]}];}_0x2f2f08=_['merge']({},_0x2f2f08,_0x697559['options']);return db['SmsTransferReport']['find'](_0x2f2f08)[_0xafed('0x29')](handleEntityNotFound(_0xd38100,null))[_0xafed('0x29')](respondWithResult(_0xd38100,null))[_0xafed('0x47')](handleError(_0xd38100,null));};exports[_0xafed('0x4a')]=function(_0x36c7ce,_0x59edb8){return db[_0xafed('0x2f')][_0xafed('0x4a')](_0x36c7ce[_0xafed('0x4b')],{})['then'](respondWithResult(_0x59edb8,0xc9))[_0xafed('0x47')](handleError(_0x59edb8,null));};exports[_0xafed('0x27')]=function(_0xa373cc,_0x8e7bcc){if(_0xa373cc[_0xafed('0x4b')]['id']){delete _0xa373cc[_0xafed('0x4b')]['id'];}return db[_0xafed('0x2f')][_0xafed('0x4c')]({'where':{'id':_0xa373cc['params']['id']}})[_0xafed('0x29')](handleEntityNotFound(_0x8e7bcc,null))['then'](saveUpdates(_0xa373cc[_0xafed('0x4b')],null))[_0xafed('0x29')](respondWithResult(_0x8e7bcc,null))['catch'](handleError(_0x8e7bcc,null));};exports[_0xafed('0x28')]=function(_0x3626c3,_0x41ecd6){return db['SmsTransferReport'][_0xafed('0x4c')]({'where':{'id':_0x3626c3[_0xafed('0x49')]['id']}})[_0xafed('0x29')](handleEntityNotFound(_0x41ecd6,null))['then'](removeEntity(_0x41ecd6,null))[_0xafed('0x47')](handleError(_0x41ecd6,null));};exports['describe']=function(_0x1fb856,_0x4a0395){return db[_0xafed('0x2f')][_0xafed('0x4d')]()[_0xafed('0x29')](respondWithResult(_0x4a0395,null))[_0xafed('0x47')](handleError(_0x4a0395,null));};
\ No newline at end of file
index c8ae5bc..e4ffda7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5997=['../../config/logger','moment','request-promise','path','rimraf','exports','define','SmsTransferReport','report_sms_transfer','uniqueid','lodash'];(function(_0x4d9443,_0xe0d01f){var _0x350586=function(_0x1e8783){while(--_0x1e8783){_0x4d9443['push'](_0x4d9443['shift']());}};_0x350586(++_0xe0d01f);}(_0x5997,0x6d));var _0x7599=function(_0x9c2208,_0x5230ef){_0x9c2208=_0x9c2208-0x0;var _0x415faf=_0x5997[_0x9c2208];return _0x415faf;};'use strict';var _=require(_0x7599('0x0'));var util=require('util');var logger=require(_0x7599('0x1'))('api');var moment=require(_0x7599('0x2'));var BPromise=require('bluebird');var rp=require(_0x7599('0x3'));var fs=require('fs');var path=require(_0x7599('0x4'));var rimraf=require(_0x7599('0x5'));var config=require('../../config/environment');var attributes=require('./smsTransferReport.attributes');module[_0x7599('0x6')]=function(_0x33ddec,_0x5c99f4){return _0x33ddec[_0x7599('0x7')](_0x7599('0x8'),attributes,{'tableName':_0x7599('0x9'),'paranoid':![],'indexes':[{'name':_0x7599('0xa'),'fields':[_0x7599('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1974=['./smsTransferReport.attributes','exports','define','SmsTransferReport','report_sms_transfer','../../config/logger','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x25d8bb,_0x464fd5){var _0x37debb=function(_0x787220){while(--_0x787220){_0x25d8bb['push'](_0x25d8bb['shift']());}};_0x37debb(++_0x464fd5);}(_0x1974,0x1d3));var _0x4197=function(_0x2938ed,_0x26b501){_0x2938ed=_0x2938ed-0x0;var _0x361028=_0x1974[_0x2938ed];return _0x361028;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4197('0x0'))('api');var moment=require(_0x4197('0x1'));var BPromise=require(_0x4197('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4197('0x3'));var rimraf=require(_0x4197('0x4'));var config=require(_0x4197('0x5'));var attributes=require(_0x4197('0x6'));module[_0x4197('0x7')]=function(_0x43687d,_0x1b0404){return _0x43687d[_0x4197('0x8')](_0x4197('0x9'),attributes,{'tableName':_0x4197('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 5d45495..17c2af1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47c7=['request\x20sent','SmsTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','SmsTransferReport,\x20%s,\x20%s'];(function(_0x1ddd14,_0x2f303c){var _0x4077d6=function(_0x509b6f){while(--_0x509b6f){_0x1ddd14['push'](_0x1ddd14['shift']());}};_0x4077d6(++_0x2f303c);}(_0x47c7,0x1ab));var _0x747c=function(_0x223461,_0x2bca70){_0x223461=_0x223461-0x0;var _0x4dbe0a=_0x47c7[_0x223461];return _0x4dbe0a;};'use strict';var _=require(_0x747c('0x0'));var util=require('util');var moment=require(_0x747c('0x1'));var BPromise=require(_0x747c('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x747c('0x3'));var db=require(_0x747c('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x747c('0x5'))(_0x747c('0x6'));var config=require(_0x747c('0x7'));var jayson=require(_0x747c('0x8'));var client=jayson['client'][_0x747c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4eb6bc,_0xfc4504,_0x24206f){return new BPromise(function(_0x10b9f0,_0x21e0f1){return client[_0x747c('0xa')](_0x4eb6bc,_0x24206f)['then'](function(_0x47eac8){logger[_0x747c('0xb')](_0x747c('0xc'),_0xfc4504,_0x747c('0xd'));logger['debug'](_0x747c('0xe'),_0xfc4504,_0x747c('0xd'),JSON[_0x747c('0xf')](_0x47eac8));if(_0x47eac8['error']){if(_0x47eac8[_0x747c('0x10')]['code']===0x1f4){logger['error'](_0x747c('0xc'),_0xfc4504,_0x47eac8[_0x747c('0x10')][_0x747c('0x11')]);return _0x21e0f1(_0x47eac8[_0x747c('0x10')][_0x747c('0x11')]);}logger[_0x747c('0x10')](_0x747c('0xc'),_0xfc4504,_0x47eac8[_0x747c('0x10')][_0x747c('0x11')]);return _0x10b9f0(_0x47eac8[_0x747c('0x10')]['message']);}else{logger['info'](_0x747c('0xc'),_0xfc4504,_0x747c('0xd'));_0x10b9f0(_0x47eac8[_0x747c('0x12')]['message']);}})[_0x747c('0x13')](function(_0x1887d6){logger[_0x747c('0x10')](_0x747c('0xc'),_0xfc4504,_0x1887d6);_0x21e0f1(_0x1887d6);});});}
\ No newline at end of file
+var _0xa7dc=['randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SmsTransferReport,\x20%s,\x20%s','request\x20sent','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment'];(function(_0x288b8,_0x45b725){var _0x268894=function(_0x14e012){while(--_0x14e012){_0x288b8['push'](_0x288b8['shift']());}};_0x268894(++_0x45b725);}(_0xa7dc,0x11d));var _0xca7d=function(_0x39b3c6,_0x4f9948){_0x39b3c6=_0x39b3c6-0x0;var _0x33ec02=_0xa7dc[_0x39b3c6];return _0x33ec02;};'use strict';var _=require(_0xca7d('0x0'));var util=require(_0xca7d('0x1'));var moment=require(_0xca7d('0x2'));var BPromise=require('bluebird');var rs=require(_0xca7d('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xca7d('0x4'))['db'];var utils=require(_0xca7d('0x5'));var logger=require(_0xca7d('0x6'))(_0xca7d('0x7'));var config=require(_0xca7d('0x8'));var jayson=require(_0xca7d('0x9'));var client=jayson[_0xca7d('0xa')][_0xca7d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5073dd,_0x22223d,_0x820afa){return new BPromise(function(_0x4d5bc7,_0x2920bd){return client[_0xca7d('0xc')](_0x5073dd,_0x820afa)[_0xca7d('0xd')](function(_0x5236ce){logger[_0xca7d('0xe')](_0xca7d('0xf'),_0x22223d,_0xca7d('0x10'));logger[_0xca7d('0x11')](_0xca7d('0x12'),_0x22223d,'request\x20sent',JSON[_0xca7d('0x13')](_0x5236ce));if(_0x5236ce['error']){if(_0x5236ce[_0xca7d('0x14')]['code']===0x1f4){logger[_0xca7d('0x14')](_0xca7d('0xf'),_0x22223d,_0x5236ce[_0xca7d('0x14')][_0xca7d('0x15')]);return _0x2920bd(_0x5236ce['error']['message']);}logger['error'](_0xca7d('0xf'),_0x22223d,_0x5236ce[_0xca7d('0x14')][_0xca7d('0x15')]);return _0x4d5bc7(_0x5236ce[_0xca7d('0x14')][_0xca7d('0x15')]);}else{logger[_0xca7d('0xe')](_0xca7d('0xf'),_0x22223d,_0xca7d('0x10'));_0x4d5bc7(_0x5236ce[_0xca7d('0x16')][_0xca7d('0x15')]);}})[_0xca7d('0x17')](function(_0x245c7c){logger['error']('SmsTransferReport,\x20%s,\x20%s',_0x22223d,_0x245c7c);_0x2920bd(_0x245c7c);});});}
\ No newline at end of file
index c104da5..5dd2edb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x723e=['util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./sound.controller','index','/:id','isAuthenticated','get','join','root','server/files/sounds/original/','originalname','replace','format','%s-%s%s','extname','now','post','file','put','delete','exports','multer'];(function(_0x4a2fed,_0x50e41e){var _0x15c598=function(_0x202a98){while(--_0x202a98){_0x4a2fed['push'](_0x4a2fed['shift']());}};_0x15c598(++_0x50e41e);}(_0x723e,0x6b));var _0xe723=function(_0x5ac5e8,_0xc333d2){_0x5ac5e8=_0x5ac5e8-0x0;var _0x5eb1ff=_0x723e[_0x5ac5e8];return _0x5eb1ff;};'use strict';var multer=require(_0xe723('0x0'));var util=require(_0xe723('0x1'));var path=require(_0xe723('0x2'));var timeout=require(_0xe723('0x3'));var express=require(_0xe723('0x4'));var router=express['Router']();var fs_extra=require(_0xe723('0x5'));var auth=require(_0xe723('0x6'));var interaction=require(_0xe723('0x7'));var config=require('../../config/environment');var controller=require(_0xe723('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xe723('0x9')]);router['get'](_0xe723('0xa'),auth[_0xe723('0xb')](),controller['show']);router[_0xe723('0xc')]('/:id/download',auth['isAuthenticated'](),controller['download']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x399ed7,_0x257c06,_0x1367e4){_0x1367e4(null,path[_0xe723('0xd')](config[_0xe723('0xe')],_0xe723('0xf')));},'filename':function(_0x20764f,_0x4a3cde,_0x3d6993){_0x4a3cde['originalname']=_0x4a3cde[_0xe723('0x10')][_0xe723('0x11')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x3d6993(null,util[_0xe723('0x12')](_0xe723('0x13'),path['basename'](_0x4a3cde['originalname'],path[_0xe723('0x14')](_0x4a3cde[_0xe723('0x10')])),Date[_0xe723('0x15')](),path['extname'](_0x4a3cde[_0xe723('0x10')])));}})});router[_0xe723('0x16')]('/',upload['single'](_0xe723('0x17')),controller['create']);router[_0xe723('0x18')]('/:id',auth[_0xe723('0xb')](),controller['update']);router['delete'](_0xe723('0xa'),auth['isAuthenticated'](),controller[_0xe723('0x19')]);module[_0xe723('0x1a')]=router;
\ No newline at end of file
+var _0x0f02=['post','single','file','put','update','delete','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/download','download','diskStorage','root','server/files/sounds/original/','originalname','replace','format','%s-%s%s','extname','now'];(function(_0x1e0118,_0x572d14){var _0x15dccc=function(_0x5350c7){while(--_0x5350c7){_0x1e0118['push'](_0x1e0118['shift']());}};_0x15dccc(++_0x572d14);}(_0x0f02,0x9c));var _0x20f0=function(_0x10cbe4,_0x51eb26){_0x10cbe4=_0x10cbe4-0x0;var _0x5485de=_0x0f02[_0x10cbe4];return _0x5485de;};'use strict';var multer=require(_0x20f0('0x0'));var util=require(_0x20f0('0x1'));var path=require('path');var timeout=require(_0x20f0('0x2'));var express=require(_0x20f0('0x3'));var router=express['Router']();var fs_extra=require(_0x20f0('0x4'));var auth=require(_0x20f0('0x5'));var interaction=require(_0x20f0('0x6'));var config=require(_0x20f0('0x7'));var controller=require('./sound.controller');router[_0x20f0('0x8')]('/',auth[_0x20f0('0x9')](),controller[_0x20f0('0xa')]);router['get'](_0x20f0('0xb'),auth[_0x20f0('0x9')](),controller[_0x20f0('0xc')]);router[_0x20f0('0x8')](_0x20f0('0xd'),auth[_0x20f0('0x9')](),controller[_0x20f0('0xe')]);var upload=multer({'storage':multer[_0x20f0('0xf')]({'destination':function(_0x22f552,_0xfc1664,_0x1ee7f1){_0x1ee7f1(null,path['join'](config[_0x20f0('0x10')],_0x20f0('0x11')));},'filename':function(_0x2c42b0,_0x4ee4cf,_0x2b49b2){_0x4ee4cf[_0x20f0('0x12')]=_0x4ee4cf[_0x20f0('0x12')][_0x20f0('0x13')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x2b49b2(null,util[_0x20f0('0x14')](_0x20f0('0x15'),path['basename'](_0x4ee4cf['originalname'],path[_0x20f0('0x16')](_0x4ee4cf[_0x20f0('0x12')])),Date[_0x20f0('0x17')](),path[_0x20f0('0x16')](_0x4ee4cf['originalname'])));}})});router[_0x20f0('0x18')]('/',upload[_0x20f0('0x19')](_0x20f0('0x1a')),controller['create']);router[_0x20f0('0x1b')](_0x20f0('0xb'),auth[_0x20f0('0x9')](),controller[_0x20f0('0x1c')]);router[_0x20f0('0x1d')]('/:id',auth[_0x20f0('0x9')](),controller[_0x20f0('0x1d')]);module['exports']=router;
\ No newline at end of file
index 98da4fa..b25f84d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd158=['FLOAT','BIGINT','INTEGER','exports','name','STRING'];(function(_0x4b3306,_0x1244d9){var _0x454de2=function(_0x36d4a3){while(--_0x36d4a3){_0x4b3306['push'](_0x4b3306['shift']());}};_0x454de2(++_0x1244d9);}(_0xd158,0xa5));var _0x8d15=function(_0x364492,_0x58bbb6){_0x364492=_0x364492-0x0;var _0x4fddc9=_0xd158[_0x364492];return _0x4fddc9;};'use strict';var Sequelize=require('sequelize');module[_0x8d15('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0x8d15('0x1'),'allowNull':![]},'save_name':{'type':Sequelize[_0x8d15('0x2')]},'display_name':{'type':Sequelize[_0x8d15('0x2')],'defaultValue':''},'description':{'type':Sequelize['STRING']},'original_format':{'type':Sequelize[_0x8d15('0x2')]},'original_duration':{'type':Sequelize[_0x8d15('0x3')]},'original_sampleCount':{'type':Sequelize[_0x8d15('0x4')]},'original_channelCount':{'type':Sequelize[_0x8d15('0x5')]},'original_bitRate':{'type':Sequelize['BIGINT']},'original_sampleRate':{'type':Sequelize[_0x8d15('0x5')]},'converted_format':{'type':Sequelize['STRING']},'converted_duration':{'type':Sequelize[_0x8d15('0x3')]},'converted_sampleCount':{'type':Sequelize['BIGINT']},'converted_channelCount':{'type':Sequelize['INTEGER']},'converted_bitRate':{'type':Sequelize['BIGINT']},'converted_sampleRate':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0xc7ea=['name','STRING','BIGINT','INTEGER','FLOAT','sequelize'];(function(_0xff01d2,_0x55806d){var _0xde0945=function(_0x1423fe){while(--_0x1423fe){_0xff01d2['push'](_0xff01d2['shift']());}};_0xde0945(++_0x55806d);}(_0xc7ea,0xe3));var _0xac7e=function(_0x4fb28b,_0x22fc65){_0x4fb28b=_0x4fb28b-0x0;var _0x46753a=_0xc7ea[_0x4fb28b];return _0x46753a;};'use strict';var Sequelize=require(_0xac7e('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0xac7e('0x1'),'allowNull':![]},'save_name':{'type':Sequelize['STRING']},'display_name':{'type':Sequelize[_0xac7e('0x2')],'defaultValue':''},'description':{'type':Sequelize[_0xac7e('0x2')]},'original_format':{'type':Sequelize[_0xac7e('0x2')]},'original_duration':{'type':Sequelize['FLOAT']},'original_sampleCount':{'type':Sequelize[_0xac7e('0x3')]},'original_channelCount':{'type':Sequelize[_0xac7e('0x4')]},'original_bitRate':{'type':Sequelize['BIGINT']},'original_sampleRate':{'type':Sequelize['INTEGER']},'converted_format':{'type':Sequelize['STRING']},'converted_duration':{'type':Sequelize[_0xac7e('0x5')]},'converted_sampleCount':{'type':Sequelize[_0xac7e('0x3')]},'converted_channelCount':{'type':Sequelize[_0xac7e('0x4')]},'converted_bitRate':{'type':Sequelize['BIGINT']},'converted_sampleRate':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 34109b8..dc0fe97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07ee=['format','%s.%s','file','originalname','extname','basename','filename','substring','wav','root','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','0777','transcode','unlinkSync','send','src','original_duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','dest','converted_duration','duration','converted_channelCount','converted_bitRate','converted_sampleRate','chmodSync','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','Sounds','autoAssociation','start','description','server/files/sounds/original','original_format','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','Content-Range','reject','update','then','destroy','get','UserProfileResource','sendStatus','error','stack','name','index','Sound','rawAttributes','type','key','query','keys','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','map','VIRTUAL','options','include','findAll','rows','catch','show','params','fields','download','find','save_name','existsSync','server/files/sounds/converted','converted_format','Sequelize','ValidationError','Sound\x20not\x20found','join'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x07ee,0x1b1));var _0xe07e=function(_0x5d80de,_0x2cf15d){_0x5d80de=_0x5d80de-0x0;var _0x1c7556=_0x07ee[_0x5d80de];return _0x1c7556;};'use strict';var emlformat=require(_0xe07e('0x0'));var rimraf=require(_0xe07e('0x1'));var zipdir=require(_0xe07e('0x2'));var jsonpatch=require(_0xe07e('0x3'));var rp=require(_0xe07e('0x4'));var moment=require('moment');var BPromise=require(_0xe07e('0x5'));var Mustache=require(_0xe07e('0x6'));var util=require('util');var path=require(_0xe07e('0x7'));var sox=require(_0xe07e('0x8'));var csv=require(_0xe07e('0x9'));var ejs=require(_0xe07e('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe07e('0xb'));var squel=require(_0xe07e('0xc'));var crypto=require(_0xe07e('0xd'));var jsforce=require(_0xe07e('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xe07e('0x9'));var querystring=require(_0xe07e('0xf'));var Papa=require(_0xe07e('0x10'));var Redis=require(_0xe07e('0x11'));var authService=require(_0xe07e('0x12'));var qs=require(_0xe07e('0x13'));var as=require(_0xe07e('0x14'));var hardwareService=require(_0xe07e('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0xe07e('0x16'));var config=require(_0xe07e('0x17'));var licenseUtil=require(_0xe07e('0x18'));var db=require(_0xe07e('0x19'))['db'];function respondWithStatusCode(_0x4bf10b,_0x199402){_0x199402=_0x199402||0xcc;return function(_0x242414){if(_0x242414){return _0x4bf10b['sendStatus'](_0x199402);}return _0x4bf10b[_0xe07e('0x1a')](_0x199402)[_0xe07e('0x1b')]();};}function respondWithResult(_0x2ba8be,_0x4fef36){_0x4fef36=_0x4fef36||0xc8;return function(_0x5d4a95){if(_0x5d4a95){return _0x2ba8be[_0xe07e('0x1a')](_0x4fef36)[_0xe07e('0x1c')](_0x5d4a95);}};}function respondWithFilteredResult(_0x35aef5,_0x353393){return function(_0x495c65){if(_0x495c65){var _0x186678=typeof _0x353393[_0xe07e('0x1d')]===_0xe07e('0x1e')&&typeof _0x353393['limit']===_0xe07e('0x1e');var _0x29b3a0=_0x495c65[_0xe07e('0x1f')];var _0x585851=_0x186678?0x0:_0x353393['offset'];var _0x3cd515=_0x186678?_0x495c65[_0xe07e('0x1f')]:_0x353393[_0xe07e('0x1d')]+_0x353393[_0xe07e('0x20')];var _0x251585;if(_0x3cd515>=_0x29b3a0){_0x3cd515=_0x29b3a0;_0x251585=0xc8;}else{_0x251585=0xce;}_0x35aef5['status'](_0x251585);return _0x35aef5['set'](_0xe07e('0x21'),_0x585851+'-'+_0x3cd515+'/'+_0x29b3a0)[_0xe07e('0x1c')](_0x495c65);}return null;};}function patchUpdates(_0x2cfc59){return function(_0x40ace5){try{jsonpatch['apply'](_0x40ace5,_0x2cfc59,!![]);}catch(_0x3c3dcf){return BPromise[_0xe07e('0x22')](_0x3c3dcf);}return _0x40ace5['save']();};}function saveUpdates(_0x218f15,_0x30ff48){return function(_0x23e042){if(_0x23e042){return _0x23e042[_0xe07e('0x23')](_0x218f15)[_0xe07e('0x24')](function(_0x380d7d){return _0x380d7d;});}return null;};}function removeEntity(_0x38f6a8,_0x15a4aa){return function(_0xd90d6){if(_0xd90d6){return _0xd90d6[_0xe07e('0x25')]()[_0xe07e('0x24')](function(){var _0x286570=_0xd90d6[_0xe07e('0x26')]({'plain':!![]});var _0x2ad858='Sounds';return db[_0xe07e('0x27')][_0xe07e('0x25')]({'where':{'type':_0x2ad858,'resourceId':_0x286570['id']}})[_0xe07e('0x24')](function(){return _0xd90d6;});})[_0xe07e('0x24')](function(){_0x38f6a8['status'](0xcc)[_0xe07e('0x1b')]();});}};}function handleEntityNotFound(_0x4c3770,_0x361344){return function(_0x4f65b6){if(!_0x4f65b6){_0x4c3770[_0xe07e('0x28')](0x194);}return _0x4f65b6;};}function handleError(_0x3ed70a,_0x47499c){_0x47499c=_0x47499c||0x1f4;return function(_0x594c53){logger[_0xe07e('0x29')](_0x594c53[_0xe07e('0x2a')]);if(_0x594c53[_0xe07e('0x2b')]){delete _0x594c53['name'];}_0x3ed70a['status'](_0x47499c)['send'](_0x594c53);};}exports[_0xe07e('0x2c')]=function(_0x432f3c,_0x3417b2){var _0x8f1ccc={},_0x405fcd={},_0x3798e5={'count':0x0,'rows':[]};var _0xddfc43=_['map'](db[_0xe07e('0x2d')][_0xe07e('0x2e')],function(_0x56fe02){return{'name':_0x56fe02['fieldName'],'type':_0x56fe02[_0xe07e('0x2f')][_0xe07e('0x30')]};});_0x405fcd['model']=_['map'](_0xddfc43,_0xe07e('0x2b'));_0x405fcd[_0xe07e('0x31')]=_[_0xe07e('0x32')](_0x432f3c[_0xe07e('0x31')]);_0x405fcd[_0xe07e('0x33')]=_[_0xe07e('0x34')](_0x405fcd[_0xe07e('0x35')],_0x405fcd[_0xe07e('0x31')]);_0x8f1ccc[_0xe07e('0x36')]=_[_0xe07e('0x34')](_0x405fcd[_0xe07e('0x35')],qs['fields'](_0x432f3c[_0xe07e('0x31')]['fields']));_0x8f1ccc[_0xe07e('0x36')]=_0x8f1ccc['attributes'][_0xe07e('0x37')]?_0x8f1ccc[_0xe07e('0x36')]:_0x405fcd[_0xe07e('0x35')];if(!_0x432f3c['query'][_0xe07e('0x38')](_0xe07e('0x39'))){_0x8f1ccc['limit']=qs[_0xe07e('0x20')](_0x432f3c['query'][_0xe07e('0x20')]);_0x8f1ccc['offset']=qs['offset'](_0x432f3c['query']['offset']);}_0x8f1ccc['order']=qs[_0xe07e('0x3a')](_0x432f3c[_0xe07e('0x31')]['sort']);_0x8f1ccc[_0xe07e('0x3b')]=qs[_0xe07e('0x33')](_[_0xe07e('0x3c')](_0x432f3c[_0xe07e('0x31')],_0x405fcd[_0xe07e('0x33')]),_0xddfc43);if(_0x432f3c[_0xe07e('0x31')][_0xe07e('0x3d')]){_0x8f1ccc[_0xe07e('0x3b')]=_[_0xe07e('0x3e')](_0x8f1ccc[_0xe07e('0x3b')],{'$or':_[_0xe07e('0x3f')](_0xddfc43,function(_0x2087f9){if(_0x2087f9[_0xe07e('0x2f')]!==_0xe07e('0x40')){var _0x3aee96={};_0x3aee96[_0x2087f9[_0xe07e('0x2b')]]={'$like':'%'+_0x432f3c[_0xe07e('0x31')][_0xe07e('0x3d')]+'%'};return _0x3aee96;}})});}_0x8f1ccc=_[_0xe07e('0x3e')]({},_0x8f1ccc,_0x432f3c[_0xe07e('0x41')]);var _0x1022b6={'where':_0x8f1ccc[_0xe07e('0x3b')]};return db[_0xe07e('0x2d')]['count'](_0x1022b6)[_0xe07e('0x24')](function(_0x22f7db){_0x3798e5[_0xe07e('0x1f')]=_0x22f7db;if(_0x432f3c[_0xe07e('0x31')]['includeAll']){_0x8f1ccc[_0xe07e('0x42')]=[{'all':!![]}];}return db[_0xe07e('0x2d')][_0xe07e('0x43')](_0x8f1ccc);})[_0xe07e('0x24')](function(_0x29bec8){_0x3798e5[_0xe07e('0x44')]=_0x29bec8;return _0x3798e5;})[_0xe07e('0x24')](respondWithFilteredResult(_0x3417b2,_0x8f1ccc))[_0xe07e('0x45')](handleError(_0x3417b2,null));};exports[_0xe07e('0x46')]=function(_0x403679,_0x575e37){var _0x4514ce={'raw':!![],'where':{'id':_0x403679[_0xe07e('0x47')]['id']}},_0x1d20b1={};_0x1d20b1[_0xe07e('0x35')]=_[_0xe07e('0x32')](db['Sound'][_0xe07e('0x2e')]);_0x1d20b1['query']=_[_0xe07e('0x32')](_0x403679[_0xe07e('0x31')]);_0x1d20b1[_0xe07e('0x33')]=_[_0xe07e('0x34')](_0x1d20b1[_0xe07e('0x35')],_0x1d20b1['query']);_0x4514ce['attributes']=_[_0xe07e('0x34')](_0x1d20b1[_0xe07e('0x35')],qs[_0xe07e('0x48')](_0x403679[_0xe07e('0x31')][_0xe07e('0x48')]));_0x4514ce[_0xe07e('0x36')]=_0x4514ce[_0xe07e('0x36')]['length']?_0x4514ce[_0xe07e('0x36')]:_0x1d20b1[_0xe07e('0x35')];if(_0x403679[_0xe07e('0x31')]['includeAll']){_0x4514ce[_0xe07e('0x42')]=[{'all':!![]}];}_0x4514ce=_['merge']({},_0x4514ce,_0x403679[_0xe07e('0x41')]);return db[_0xe07e('0x2d')]['find'](_0x4514ce)[_0xe07e('0x24')](handleEntityNotFound(_0x575e37,null))['then'](respondWithResult(_0x575e37,null))[_0xe07e('0x45')](handleError(_0x575e37,null));};exports[_0xe07e('0x49')]=function(_0x4158e8,_0x1b06cf,_0x7ede03){return db[_0xe07e('0x2d')][_0xe07e('0x4a')]({'where':{'id':_0x4158e8[_0xe07e('0x47')]['id']},'attributes':[_0xe07e('0x2b'),_0xe07e('0x4b'),'converted_format'],'raw':!![]})[_0xe07e('0x24')](handleEntityNotFound(_0x1b06cf,null))[_0xe07e('0x24')](function(_0x4467da){if(_0x4467da){if(!fs[_0xe07e('0x4c')](path['join'](config['root'],_0xe07e('0x4d'),_0x4467da['save_name']+'.'+_0x4467da[_0xe07e('0x4e')]))){throw new db[(_0xe07e('0x4f'))][(_0xe07e('0x50'))](_0xe07e('0x51'));}return _0x1b06cf[_0xe07e('0x49')](path[_0xe07e('0x52')](config['root'],_0xe07e('0x4d'),util[_0xe07e('0x53')]('%s.%s',_0x4467da[_0xe07e('0x4b')],_0x4467da[_0xe07e('0x4e')])),util[_0xe07e('0x53')](_0xe07e('0x54'),_0x4467da['name'],_0x4467da[_0xe07e('0x4e')]));}return null;})[_0xe07e('0x45')](handleError(_0x1b06cf,null));};exports['create']=function(_0x4a1f23,_0x4c5de6,_0x2473a4){var _0x467f17={'name':path['basename'](_0x4a1f23[_0xe07e('0x55')][_0xe07e('0x56')],path[_0xe07e('0x57')](_0x4a1f23[_0xe07e('0x55')][_0xe07e('0x56')])),'save_name':path[_0xe07e('0x58')](_0x4a1f23[_0xe07e('0x55')]['filename'],path[_0xe07e('0x57')](_0x4a1f23[_0xe07e('0x55')][_0xe07e('0x59')])),'original_format':path[_0xe07e('0x57')](_0x4a1f23['file'][_0xe07e('0x56')])[_0xe07e('0x5a')](0x1),'converted_format':_0xe07e('0x5b')};var _0x2d558a=path[_0xe07e('0x52')](config[_0xe07e('0x5c')],'server/files/sounds/original',_0x4a1f23[_0xe07e('0x55')]['filename']);var _0x2708e6=path[_0xe07e('0x52')](config[_0xe07e('0x5c')],_0xe07e('0x4d'),util[_0xe07e('0x53')](_0xe07e('0x54'),path[_0xe07e('0x58')](_0x4a1f23[_0xe07e('0x55')][_0xe07e('0x59')],path[_0xe07e('0x57')](_0x4a1f23[_0xe07e('0x55')][_0xe07e('0x59')])),_0x467f17['converted_format']));logger[_0xe07e('0x5d')](_0xe07e('0x5e'),_0x2d558a);logger[_0xe07e('0x5d')](_0xe07e('0x5f'),_0x2708e6);try{fs['chmodSync'](_0x2d558a,parseInt(_0xe07e('0x60'),0x8));var _0x37dcc8=sox[_0xe07e('0x61')](_0x2d558a,_0x2708e6,{'sampleRate':0x1f40,'format':_0xe07e('0x5b'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x37dcc8['on'](_0xe07e('0x29'),function(_0x15c4e2){fs[_0xe07e('0x62')](_0x2d558a);_0x4c5de6[_0xe07e('0x1a')](0x1f4)[_0xe07e('0x63')](_0x15c4e2);});_0x37dcc8['on'](_0xe07e('0x64'),function(_0xa14d56){_0x467f17[_0xe07e('0x65')]=isNaN(_0xa14d56['duration'])?null:_0xa14d56['duration']*0x3e8;_0x467f17[_0xe07e('0x66')]=isNaN(_0xa14d56[_0xe07e('0x67')])?null:_0xa14d56[_0xe07e('0x67')];_0x467f17[_0xe07e('0x68')]=isNaN(_0xa14d56[_0xe07e('0x69')])?null:_0xa14d56['channelCount'];_0x467f17[_0xe07e('0x6a')]=isNaN(_0xa14d56[_0xe07e('0x6b')])?null:_0xa14d56[_0xe07e('0x6b')];_0x467f17[_0xe07e('0x6c')]=isNaN(_0xa14d56['sampleRate'])?null:_0xa14d56[_0xe07e('0x6d')];});_0x37dcc8['on'](_0xe07e('0x6e'),function(_0x5ef35b){_0x467f17[_0xe07e('0x6f')]=isNaN(_0x5ef35b[_0xe07e('0x70')])?null:_0x5ef35b[_0xe07e('0x70')]*0x3e8;_0x467f17['converted_sampleCount']=isNaN(_0x5ef35b[_0xe07e('0x67')])?null:_0x5ef35b['sampleCount'];_0x467f17[_0xe07e('0x71')]=isNaN(_0x5ef35b['channelCount'])?null:_0x5ef35b[_0xe07e('0x69')];_0x467f17[_0xe07e('0x72')]=isNaN(_0x5ef35b['bitRate'])?null:_0x5ef35b[_0xe07e('0x6b')];_0x467f17[_0xe07e('0x73')]=isNaN(_0x5ef35b[_0xe07e('0x6d')])?null:_0x5ef35b[_0xe07e('0x6d')];});_0x37dcc8['on']('end',function(){fs[_0xe07e('0x74')](_0x2708e6,parseInt(_0xe07e('0x60'),0x8));return db[_0xe07e('0x2d')][_0xe07e('0x75')](_0x467f17)['then'](function(_0x2957df){var _0x3d5b6b={'role':_0x4a1f23[_0xe07e('0x76')]['role'],'userProfileId':_0x4a1f23[_0xe07e('0x76')]['userProfileId']};if(!_0x3d5b6b)throw new Error(_0xe07e('0x77'));if(_0x3d5b6b[_0xe07e('0x78')]===_0xe07e('0x79')){var _0x2d8b29=_0x2957df[_0xe07e('0x26')]({'plain':!![]});return db[_0xe07e('0x7a')][_0xe07e('0x4a')]({'where':{'name':_0xe07e('0x7b'),'userProfileId':_0x3d5b6b['userProfileId']},'raw':!![]})[_0xe07e('0x24')](function(_0x315137){if(_0x315137&&_0x315137[_0xe07e('0x7c')]===0x0){return db[_0xe07e('0x27')][_0xe07e('0x75')]({'name':_0x2d8b29[_0xe07e('0x2b')],'resourceId':_0x2d8b29['id'],'type':_0x315137[_0xe07e('0x2b')],'sectionId':_0x315137['id']},{})[_0xe07e('0x24')](function(){return _0x2957df;});}else{return _0x2957df;}})[_0xe07e('0x45')](function(_0x1bcf20){logger[_0xe07e('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1bcf20);throw _0x1bcf20;});}return _0x2957df;})[_0xe07e('0x24')](respondWithResult(_0x4c5de6,null))[_0xe07e('0x45')](handleError(_0x4c5de6,null));});_0x37dcc8[_0xe07e('0x7d')]();}catch(_0x1a87e8){_0x4c5de6['status'](0x1f4)[_0xe07e('0x63')](_0x1a87e8);}};exports[_0xe07e('0x23')]=function(_0x974da8,_0x27499b,_0x2a6a56){return db['Sound']['find']({'where':{'id':_0x974da8['params']['id']}})[_0xe07e('0x24')](handleEntityNotFound(_0x27499b,null))[_0xe07e('0x24')](saveUpdates(_['pick'](_0x974da8['body'],[_0xe07e('0x2b'),_0xe07e('0x7e')]),null))[_0xe07e('0x24')](respondWithResult(_0x27499b,null))[_0xe07e('0x45')](handleError(_0x27499b,null));};exports['delete']=function(_0x28816c,_0x3284a8,_0x567137){return db[_0xe07e('0x2d')]['find']({'where':{'id':_0x28816c[_0xe07e('0x47')]['id']}})['then'](function(_0x26caf1){if(_0x26caf1){return _0x26caf1[_0xe07e('0x25')]();}})['then'](function(_0x56644a){var _0x3057f6=path[_0xe07e('0x52')](config[_0xe07e('0x5c')],_0xe07e('0x7f'),util[_0xe07e('0x53')](_0xe07e('0x54'),_0x56644a['save_name'],_0x56644a[_0xe07e('0x80')]));var _0x5b279f=path[_0xe07e('0x52')](config[_0xe07e('0x5c')],'server/files/sounds/converted',util[_0xe07e('0x53')](_0xe07e('0x54'),_0x56644a[_0xe07e('0x4b')],_0x56644a['converted_format']));fs[_0xe07e('0x62')](_0x3057f6);fs[_0xe07e('0x62')](_0x5b279f);return _0x56644a;})['then'](function(_0x2fbdcc){if(_0x2fbdcc){return _0x3284a8[_0xe07e('0x1a')](0xcc)[_0xe07e('0x1b')]();}})['then'](handleEntityNotFound(_0x3284a8,null))[_0xe07e('0x45')](handleError(_0x3284a8,null));};
\ No newline at end of file
+var _0x0666=['converted_duration','converted_sampleCount','converted_bitRate','sampleRate','role','body','userProfileId','user','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','pick','description','delete','rimraf','zip-dir','request-promise','moment','bluebird','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','get','Sounds','UserProfileResource','error','stack','name','index','map','Sound','fieldName','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','merge','where','VIRTUAL','options','includeAll','rows','catch','show','params','rawAttributes','keys','find','save_name','converted_format','join','server/files/sounds/converted','Sequelize','ValidationError','Sound\x20not\x20found','root','format','%s.%s','create','basename','file','originalname','extname','filename','substring','wav','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','chmodSync','0777','unlinkSync','send','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','dest'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0x0666,0x1ee));var _0x6066=function(_0x1ef246,_0x42e40){_0x1ef246=_0x1ef246-0x0;var _0x229a28=_0x0666[_0x1ef246];return _0x229a28;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6066('0x0'));var zipdir=require(_0x6066('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6066('0x2'));var moment=require(_0x6066('0x3'));var BPromise=require(_0x6066('0x4'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x6066('0x5'));var csv=require(_0x6066('0x6'));var ejs=require(_0x6066('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6066('0x8'));var squel=require(_0x6066('0x9'));var crypto=require(_0x6066('0xa'));var jsforce=require(_0x6066('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x6066('0xc'));var Papa=require('papaparse');var Redis=require(_0x6066('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x6066('0xe'));var as=require(_0x6066('0xf'));var hardwareService=require(_0x6066('0x10'));var logger=require(_0x6066('0x11'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x6066('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4bc57c,_0x373f99){_0x373f99=_0x373f99||0xcc;return function(_0x3fb284){if(_0x3fb284){return _0x4bc57c[_0x6066('0x13')](_0x373f99);}return _0x4bc57c[_0x6066('0x14')](_0x373f99)[_0x6066('0x15')]();};}function respondWithResult(_0x85321a,_0x5eb6ec){_0x5eb6ec=_0x5eb6ec||0xc8;return function(_0x54d8b4){if(_0x54d8b4){return _0x85321a[_0x6066('0x14')](_0x5eb6ec)[_0x6066('0x16')](_0x54d8b4);}};}function respondWithFilteredResult(_0x572a61,_0x270cc9){return function(_0x3861f1){if(_0x3861f1){var _0x418c15=typeof _0x270cc9[_0x6066('0x17')]===_0x6066('0x18')&&typeof _0x270cc9[_0x6066('0x19')]==='undefined';var _0x2feb2f=_0x3861f1[_0x6066('0x1a')];var _0x4c8f44=_0x418c15?0x0:_0x270cc9[_0x6066('0x17')];var _0xb35ed6=_0x418c15?_0x3861f1[_0x6066('0x1a')]:_0x270cc9[_0x6066('0x17')]+_0x270cc9['limit'];var _0x3c2873;if(_0xb35ed6>=_0x2feb2f){_0xb35ed6=_0x2feb2f;_0x3c2873=0xc8;}else{_0x3c2873=0xce;}_0x572a61['status'](_0x3c2873);return _0x572a61[_0x6066('0x1b')](_0x6066('0x1c'),_0x4c8f44+'-'+_0xb35ed6+'/'+_0x2feb2f)['json'](_0x3861f1);}return null;};}function patchUpdates(_0x3c18cb){return function(_0xc9cdfb){try{jsonpatch[_0x6066('0x1d')](_0xc9cdfb,_0x3c18cb,!![]);}catch(_0x185891){return BPromise[_0x6066('0x1e')](_0x185891);}return _0xc9cdfb[_0x6066('0x1f')]();};}function saveUpdates(_0x4debbc,_0x3e35a8){return function(_0x3fc95d){if(_0x3fc95d){return _0x3fc95d[_0x6066('0x20')](_0x4debbc)['then'](function(_0x59458b){return _0x59458b;});}return null;};}function removeEntity(_0x5cbee5,_0x3a6fe5){return function(_0x5f53cf){if(_0x5f53cf){return _0x5f53cf[_0x6066('0x21')]()[_0x6066('0x22')](function(){var _0x53753f=_0x5f53cf[_0x6066('0x23')]({'plain':!![]});var _0x1c2173=_0x6066('0x24');return db[_0x6066('0x25')][_0x6066('0x21')]({'where':{'type':_0x1c2173,'resourceId':_0x53753f['id']}})[_0x6066('0x22')](function(){return _0x5f53cf;});})[_0x6066('0x22')](function(){_0x5cbee5[_0x6066('0x14')](0xcc)[_0x6066('0x15')]();});}};}function handleEntityNotFound(_0x55a93f,_0x3dffe2){return function(_0x10cb83){if(!_0x10cb83){_0x55a93f[_0x6066('0x13')](0x194);}return _0x10cb83;};}function handleError(_0x22fc91,_0x522f48){_0x522f48=_0x522f48||0x1f4;return function(_0x12a4c9){logger[_0x6066('0x26')](_0x12a4c9[_0x6066('0x27')]);if(_0x12a4c9[_0x6066('0x28')]){delete _0x12a4c9[_0x6066('0x28')];}_0x22fc91[_0x6066('0x14')](_0x522f48)['send'](_0x12a4c9);};}exports[_0x6066('0x29')]=function(_0x2ec958,_0x3b622e){var _0x4b3772={},_0x12deba={},_0x430b78={'count':0x0,'rows':[]};var _0x590aa8=_[_0x6066('0x2a')](db[_0x6066('0x2b')]['rawAttributes'],function(_0x2376c9){return{'name':_0x2376c9[_0x6066('0x2c')],'type':_0x2376c9['type'][_0x6066('0x2d')]};});_0x12deba[_0x6066('0x2e')]=_['map'](_0x590aa8,_0x6066('0x28'));_0x12deba['query']=_['keys'](_0x2ec958[_0x6066('0x2f')]);_0x12deba[_0x6066('0x30')]=_[_0x6066('0x31')](_0x12deba[_0x6066('0x2e')],_0x12deba[_0x6066('0x2f')]);_0x4b3772[_0x6066('0x32')]=_['intersection'](_0x12deba[_0x6066('0x2e')],qs[_0x6066('0x33')](_0x2ec958[_0x6066('0x2f')][_0x6066('0x33')]));_0x4b3772['attributes']=_0x4b3772[_0x6066('0x32')][_0x6066('0x34')]?_0x4b3772[_0x6066('0x32')]:_0x12deba['model'];if(!_0x2ec958[_0x6066('0x2f')][_0x6066('0x35')](_0x6066('0x36'))){_0x4b3772[_0x6066('0x19')]=qs[_0x6066('0x19')](_0x2ec958[_0x6066('0x2f')][_0x6066('0x19')]);_0x4b3772[_0x6066('0x17')]=qs[_0x6066('0x17')](_0x2ec958[_0x6066('0x2f')][_0x6066('0x17')]);}_0x4b3772[_0x6066('0x37')]=qs[_0x6066('0x38')](_0x2ec958[_0x6066('0x2f')][_0x6066('0x38')]);_0x4b3772['where']=qs[_0x6066('0x30')](_['pick'](_0x2ec958[_0x6066('0x2f')],_0x12deba[_0x6066('0x30')]),_0x590aa8);if(_0x2ec958[_0x6066('0x2f')][_0x6066('0x39')]){_0x4b3772['where']=_[_0x6066('0x3a')](_0x4b3772[_0x6066('0x3b')],{'$or':_['map'](_0x590aa8,function(_0x563985){if(_0x563985['type']!==_0x6066('0x3c')){var _0x21846c={};_0x21846c[_0x563985['name']]={'$like':'%'+_0x2ec958[_0x6066('0x2f')][_0x6066('0x39')]+'%'};return _0x21846c;}})});}_0x4b3772=_[_0x6066('0x3a')]({},_0x4b3772,_0x2ec958[_0x6066('0x3d')]);var _0x83e62a={'where':_0x4b3772[_0x6066('0x3b')]};return db[_0x6066('0x2b')][_0x6066('0x1a')](_0x83e62a)['then'](function(_0x56b185){_0x430b78['count']=_0x56b185;if(_0x2ec958[_0x6066('0x2f')][_0x6066('0x3e')]){_0x4b3772['include']=[{'all':!![]}];}return db[_0x6066('0x2b')]['findAll'](_0x4b3772);})['then'](function(_0x3d8f42){_0x430b78[_0x6066('0x3f')]=_0x3d8f42;return _0x430b78;})[_0x6066('0x22')](respondWithFilteredResult(_0x3b622e,_0x4b3772))[_0x6066('0x40')](handleError(_0x3b622e,null));};exports[_0x6066('0x41')]=function(_0x4b80b0,_0x475ac7){var _0x3bc4ac={'raw':!![],'where':{'id':_0x4b80b0[_0x6066('0x42')]['id']}},_0x7211b5={};_0x7211b5[_0x6066('0x2e')]=_['keys'](db[_0x6066('0x2b')][_0x6066('0x43')]);_0x7211b5['query']=_[_0x6066('0x44')](_0x4b80b0['query']);_0x7211b5[_0x6066('0x30')]=_['intersection'](_0x7211b5['model'],_0x7211b5[_0x6066('0x2f')]);_0x3bc4ac[_0x6066('0x32')]=_[_0x6066('0x31')](_0x7211b5[_0x6066('0x2e')],qs['fields'](_0x4b80b0[_0x6066('0x2f')][_0x6066('0x33')]));_0x3bc4ac[_0x6066('0x32')]=_0x3bc4ac[_0x6066('0x32')][_0x6066('0x34')]?_0x3bc4ac[_0x6066('0x32')]:_0x7211b5['model'];if(_0x4b80b0[_0x6066('0x2f')]['includeAll']){_0x3bc4ac['include']=[{'all':!![]}];}_0x3bc4ac=_[_0x6066('0x3a')]({},_0x3bc4ac,_0x4b80b0[_0x6066('0x3d')]);return db[_0x6066('0x2b')]['find'](_0x3bc4ac)['then'](handleEntityNotFound(_0x475ac7,null))[_0x6066('0x22')](respondWithResult(_0x475ac7,null))[_0x6066('0x40')](handleError(_0x475ac7,null));};exports['download']=function(_0x1515cd,_0x32a8a8,_0x10dd0f){return db['Sound'][_0x6066('0x45')]({'where':{'id':_0x1515cd[_0x6066('0x42')]['id']},'attributes':[_0x6066('0x28'),_0x6066('0x46'),_0x6066('0x47')],'raw':!![]})[_0x6066('0x22')](handleEntityNotFound(_0x32a8a8,null))['then'](function(_0x400d06){if(_0x400d06){if(!fs['existsSync'](path[_0x6066('0x48')](config['root'],_0x6066('0x49'),_0x400d06[_0x6066('0x46')]+'.'+_0x400d06[_0x6066('0x47')]))){throw new db[(_0x6066('0x4a'))][(_0x6066('0x4b'))](_0x6066('0x4c'));}return _0x32a8a8['download'](path['join'](config[_0x6066('0x4d')],_0x6066('0x49'),util[_0x6066('0x4e')](_0x6066('0x4f'),_0x400d06['save_name'],_0x400d06[_0x6066('0x47')])),util[_0x6066('0x4e')]('%s.%s',_0x400d06[_0x6066('0x28')],_0x400d06[_0x6066('0x47')]));}return null;})[_0x6066('0x40')](handleError(_0x32a8a8,null));};exports[_0x6066('0x50')]=function(_0x52b0b9,_0x4f0387,_0x557f2c){var _0x3320cc={'name':path[_0x6066('0x51')](_0x52b0b9[_0x6066('0x52')][_0x6066('0x53')],path[_0x6066('0x54')](_0x52b0b9[_0x6066('0x52')]['originalname'])),'save_name':path[_0x6066('0x51')](_0x52b0b9[_0x6066('0x52')]['filename'],path['extname'](_0x52b0b9[_0x6066('0x52')][_0x6066('0x55')])),'original_format':path[_0x6066('0x54')](_0x52b0b9[_0x6066('0x52')][_0x6066('0x53')])[_0x6066('0x56')](0x1),'converted_format':_0x6066('0x57')};var _0x149830=path[_0x6066('0x48')](config[_0x6066('0x4d')],_0x6066('0x58'),_0x52b0b9[_0x6066('0x52')][_0x6066('0x55')]);var _0x4a7fb6=path[_0x6066('0x48')](config[_0x6066('0x4d')],_0x6066('0x49'),util['format'](_0x6066('0x4f'),path[_0x6066('0x51')](_0x52b0b9[_0x6066('0x52')][_0x6066('0x55')],path['extname'](_0x52b0b9[_0x6066('0x52')][_0x6066('0x55')])),_0x3320cc[_0x6066('0x47')]));logger[_0x6066('0x59')](_0x6066('0x5a'),_0x149830);logger[_0x6066('0x59')](_0x6066('0x5b'),_0x4a7fb6);try{fs[_0x6066('0x5c')](_0x149830,parseInt(_0x6066('0x5d'),0x8));var _0x526f1f=sox['transcode'](_0x149830,_0x4a7fb6,{'sampleRate':0x1f40,'format':_0x6066('0x57'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x526f1f['on']('error',function(_0xfbe0ac){fs[_0x6066('0x5e')](_0x149830);_0x4f0387[_0x6066('0x14')](0x1f4)[_0x6066('0x5f')](_0xfbe0ac);});_0x526f1f['on']('src',function(_0x43f3f0){_0x3320cc[_0x6066('0x60')]=isNaN(_0x43f3f0[_0x6066('0x61')])?null:_0x43f3f0['duration']*0x3e8;_0x3320cc[_0x6066('0x62')]=isNaN(_0x43f3f0[_0x6066('0x63')])?null:_0x43f3f0[_0x6066('0x63')];_0x3320cc[_0x6066('0x64')]=isNaN(_0x43f3f0[_0x6066('0x65')])?null:_0x43f3f0[_0x6066('0x65')];_0x3320cc[_0x6066('0x66')]=isNaN(_0x43f3f0['bitRate'])?null:_0x43f3f0[_0x6066('0x67')];_0x3320cc[_0x6066('0x68')]=isNaN(_0x43f3f0['sampleRate'])?null:_0x43f3f0['sampleRate'];});_0x526f1f['on'](_0x6066('0x69'),function(_0x1e116b){_0x3320cc[_0x6066('0x6a')]=isNaN(_0x1e116b[_0x6066('0x61')])?null:_0x1e116b[_0x6066('0x61')]*0x3e8;_0x3320cc[_0x6066('0x6b')]=isNaN(_0x1e116b['sampleCount'])?null:_0x1e116b[_0x6066('0x63')];_0x3320cc['converted_channelCount']=isNaN(_0x1e116b[_0x6066('0x65')])?null:_0x1e116b[_0x6066('0x65')];_0x3320cc[_0x6066('0x6c')]=isNaN(_0x1e116b[_0x6066('0x67')])?null:_0x1e116b[_0x6066('0x67')];_0x3320cc['converted_sampleRate']=isNaN(_0x1e116b['sampleRate'])?null:_0x1e116b[_0x6066('0x6d')];});_0x526f1f['on'](_0x6066('0x15'),function(){fs[_0x6066('0x5c')](_0x4a7fb6,parseInt('0777',0x8));return db[_0x6066('0x2b')][_0x6066('0x50')](_0x3320cc)['then'](function(_0x18c12c){var _0x568e8c={'role':_0x52b0b9['body'][_0x6066('0x6e')],'userProfileId':_0x52b0b9[_0x6066('0x6f')][_0x6066('0x70')]};if(!_0x568e8c)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x568e8c[_0x6066('0x6e')]===_0x6066('0x71')){var _0x165991=_0x18c12c[_0x6066('0x23')]({'plain':!![]});return db[_0x6066('0x72')][_0x6066('0x45')]({'where':{'name':'Sounds','userProfileId':_0x568e8c[_0x6066('0x70')]},'raw':!![]})[_0x6066('0x22')](function(_0x36a09b){if(_0x36a09b&&_0x36a09b['autoAssociation']===0x0){return db['UserProfileResource'][_0x6066('0x50')]({'name':_0x165991[_0x6066('0x28')],'resourceId':_0x165991['id'],'type':_0x36a09b[_0x6066('0x28')],'sectionId':_0x36a09b['id']},{})['then'](function(){return _0x18c12c;});}else{return _0x18c12c;}})['catch'](function(_0x58a8b1){logger[_0x6066('0x26')](_0x6066('0x73'),_0x58a8b1);throw _0x58a8b1;});}return _0x18c12c;})[_0x6066('0x22')](respondWithResult(_0x4f0387,null))[_0x6066('0x40')](handleError(_0x4f0387,null));});_0x526f1f[_0x6066('0x74')]();}catch(_0x4413fb){_0x4f0387['status'](0x1f4)[_0x6066('0x5f')](_0x4413fb);}};exports[_0x6066('0x20')]=function(_0x2c842e,_0x9229ad,_0x2c20a2){return db[_0x6066('0x2b')][_0x6066('0x45')]({'where':{'id':_0x2c842e[_0x6066('0x42')]['id']}})[_0x6066('0x22')](handleEntityNotFound(_0x9229ad,null))['then'](saveUpdates(_[_0x6066('0x75')](_0x2c842e[_0x6066('0x6f')],[_0x6066('0x28'),_0x6066('0x76')]),null))['then'](respondWithResult(_0x9229ad,null))[_0x6066('0x40')](handleError(_0x9229ad,null));};exports[_0x6066('0x77')]=function(_0x267622,_0x4efceb,_0x5101e1){return db['Sound'][_0x6066('0x45')]({'where':{'id':_0x267622['params']['id']}})[_0x6066('0x22')](function(_0x22a977){if(_0x22a977){return _0x22a977[_0x6066('0x21')]();}})['then'](function(_0x2d85f1){var _0x36a038=path[_0x6066('0x48')](config[_0x6066('0x4d')],'server/files/sounds/original',util['format'](_0x6066('0x4f'),_0x2d85f1[_0x6066('0x46')],_0x2d85f1['original_format']));var _0x5e8e8=path[_0x6066('0x48')](config[_0x6066('0x4d')],_0x6066('0x49'),util[_0x6066('0x4e')](_0x6066('0x4f'),_0x2d85f1[_0x6066('0x46')],_0x2d85f1[_0x6066('0x47')]));fs[_0x6066('0x5e')](_0x36a038);fs[_0x6066('0x5e')](_0x5e8e8);return _0x2d85f1;})[_0x6066('0x22')](function(_0x16d6c6){if(_0x16d6c6){return _0x4efceb[_0x6066('0x14')](0xcc)['end']();}})[_0x6066('0x22')](handleEntityNotFound(_0x4efceb,null))['catch'](handleError(_0x4efceb,null));};
\ No newline at end of file
index 427f538..cb00a3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6319=['util','../../config/logger','api','moment','request-promise','path','rimraf','./sound.attributes','exports','define','Sound','tools_sounds','lodash'];(function(_0x1aae57,_0x8735c8){var _0x1b6293=function(_0xb90c69){while(--_0xb90c69){_0x1aae57['push'](_0x1aae57['shift']());}};_0x1b6293(++_0x8735c8);}(_0x6319,0x12a));var _0x9631=function(_0x62584a,_0x1655f7){_0x62584a=_0x62584a-0x0;var _0xc932c8=_0x6319[_0x62584a];return _0xc932c8;};'use strict';var _=require(_0x9631('0x0'));var util=require(_0x9631('0x1'));var logger=require(_0x9631('0x2'))(_0x9631('0x3'));var moment=require(_0x9631('0x4'));var BPromise=require('bluebird');var rp=require(_0x9631('0x5'));var fs=require('fs');var path=require(_0x9631('0x6'));var rimraf=require(_0x9631('0x7'));var config=require('../../config/environment');var attributes=require(_0x9631('0x8'));module[_0x9631('0x9')]=function(_0x36e9c7,_0x38691f){return _0x36e9c7[_0x9631('0xa')](_0x9631('0xb'),attributes,{'tableName':_0x9631('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xde6b=['bluebird','request-promise','path','rimraf','../../config/environment','./sound.attributes','exports','define','Sound','util','../../config/logger','api','moment'];(function(_0x5f22b9,_0x18e876){var _0x5e805f=function(_0x3b224d){while(--_0x3b224d){_0x5f22b9['push'](_0x5f22b9['shift']());}};_0x5e805f(++_0x18e876);}(_0xde6b,0xbf));var _0xbde6=function(_0x33032e,_0x31411a){_0x33032e=_0x33032e-0x0;var _0x13316b=_0xde6b[_0x33032e];return _0x13316b;};'use strict';var _=require('lodash');var util=require(_0xbde6('0x0'));var logger=require(_0xbde6('0x1'))(_0xbde6('0x2'));var moment=require(_0xbde6('0x3'));var BPromise=require(_0xbde6('0x4'));var rp=require(_0xbde6('0x5'));var fs=require('fs');var path=require(_0xbde6('0x6'));var rimraf=require(_0xbde6('0x7'));var config=require(_0xbde6('0x8'));var attributes=require(_0xbde6('0x9'));module[_0xbde6('0xa')]=function(_0x30423d,_0x514d45){return _0x30423d[_0xbde6('0xb')](_0xbde6('0xc'),attributes,{'tableName':'tools_sounds','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0f12f55..03802ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfc2=['map','include','model','then','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','Sound,\x20%s,\x20%s','request\x20sent','debug','message','error','catch','ShowSound','find','options','attributes'];(function(_0x44ad1a,_0x2d0d8f){var _0x112cb5=function(_0xaeaba5){while(--_0xaeaba5){_0x44ad1a['push'](_0x44ad1a['shift']());}};_0x112cb5(++_0x2d0d8f);}(_0xdfc2,0xec));var _0x2dfc=function(_0x2f940d,_0x397991){_0x2f940d=_0x2f940d-0x0;var _0x2c32df=_0xdfc2[_0x2f940d];return _0x2c32df;};'use strict';var _=require(_0x2dfc('0x0'));var util=require(_0x2dfc('0x1'));var moment=require(_0x2dfc('0x2'));var BPromise=require(_0x2dfc('0x3'));var rs=require(_0x2dfc('0x4'));var fs=require('fs');var Redis=require(_0x2dfc('0x5'));var db=require(_0x2dfc('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x2dfc('0x7'))(_0x2dfc('0x8'));var config=require(_0x2dfc('0x9'));var jayson=require(_0x2dfc('0xa'));var client=jayson[_0x2dfc('0xb')][_0x2dfc('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1e209f,_0x31945d,_0x624a11){return new BPromise(function(_0x2ea0ff,_0x13d19f){return client[_0x2dfc('0xd')](_0x1e209f,_0x624a11)['then'](function(_0x3af64c){logger[_0x2dfc('0xe')](_0x2dfc('0xf'),_0x31945d,_0x2dfc('0x10'));logger[_0x2dfc('0x11')]('Sound,\x20%s,\x20%s,\x20%s',_0x31945d,_0x2dfc('0x10'),JSON['stringify'](_0x3af64c));if(_0x3af64c['error']){if(_0x3af64c['error']['code']===0x1f4){logger['error'](_0x2dfc('0xf'),_0x31945d,_0x3af64c['error'][_0x2dfc('0x12')]);return _0x13d19f(_0x3af64c['error'][_0x2dfc('0x12')]);}logger[_0x2dfc('0x13')](_0x2dfc('0xf'),_0x31945d,_0x3af64c[_0x2dfc('0x13')][_0x2dfc('0x12')]);return _0x2ea0ff(_0x3af64c['error'][_0x2dfc('0x12')]);}else{logger[_0x2dfc('0xe')]('Sound,\x20%s,\x20%s',_0x31945d,_0x2dfc('0x10'));_0x2ea0ff(_0x3af64c['result']['message']);}})[_0x2dfc('0x14')](function(_0x17a3c2){logger[_0x2dfc('0x13')]('Sound,\x20%s,\x20%s',_0x31945d,_0x17a3c2);_0x13d19f(_0x17a3c2);});});}exports[_0x2dfc('0x15')]=function(_0x13a023){var _0x46857d=this;return new Promise(function(_0x52a314,_0x2ffc48){return db['Sound'][_0x2dfc('0x16')]({'raw':_0x13a023[_0x2dfc('0x17')]?_0x13a023[_0x2dfc('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x13a023[_0x2dfc('0x17')]?_0x13a023[_0x2dfc('0x17')]['where']||null:null,'attributes':_0x13a023[_0x2dfc('0x17')]?_0x13a023[_0x2dfc('0x17')][_0x2dfc('0x18')]||null:null,'include':_0x13a023['options']?_0x13a023['options']['include']?_[_0x2dfc('0x19')](_0x13a023[_0x2dfc('0x17')][_0x2dfc('0x1a')],function(_0x4103a7){return{'model':db[_0x4103a7[_0x2dfc('0x1b')]],'as':_0x4103a7['as'],'attributes':_0x4103a7[_0x2dfc('0x18')],'include':_0x4103a7[_0x2dfc('0x1a')]?_[_0x2dfc('0x19')](_0x4103a7[_0x2dfc('0x1a')],function(_0x1c376d){return{'model':db[_0x1c376d[_0x2dfc('0x1b')]],'as':_0x1c376d['as'],'attributes':_0x1c376d[_0x2dfc('0x18')],'include':_0x1c376d[_0x2dfc('0x1a')]?_[_0x2dfc('0x19')](_0x1c376d['include'],function(_0x5909e4){return{'model':db[_0x5909e4[_0x2dfc('0x1b')]],'as':_0x5909e4['as'],'attributes':_0x5909e4[_0x2dfc('0x18')]};}):[]};}):[]};}):[]:[]})[_0x2dfc('0x1c')](function(_0x22023d){logger[_0x2dfc('0xe')]('ShowSound',_0x13a023);logger[_0x2dfc('0x11')]('ShowSound',_0x13a023,JSON['stringify'](_0x22023d));_0x52a314(_0x22023d);})[_0x2dfc('0x14')](function(_0x447de5){logger['error'](_0x2dfc('0x15'),_0x447de5['message'],_0x13a023);_0x2ffc48(_0x46857d['error'](0x1f4,_0x447de5[_0x2dfc('0x12')]));});});};
\ No newline at end of file
+var _0x6d44=['../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','Sound,\x20%s,\x20%s','request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','Sound','options','where','attributes','include','map','model','ShowSound','util','moment','bluebird','ioredis','../../mysqldb'];(function(_0x8326f6,_0x2e6213){var _0x59fae6=function(_0x447b53){while(--_0x447b53){_0x8326f6['push'](_0x8326f6['shift']());}};_0x59fae6(++_0x2e6213);}(_0x6d44,0xb5));var _0x46d4=function(_0x4ec7f2,_0x3d92d2){_0x4ec7f2=_0x4ec7f2-0x0;var _0x118004=_0x6d44[_0x4ec7f2];return _0x118004;};'use strict';var _=require('lodash');var util=require(_0x46d4('0x0'));var moment=require(_0x46d4('0x1'));var BPromise=require(_0x46d4('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x46d4('0x3'));var db=require(_0x46d4('0x4'))['db'];var utils=require(_0x46d4('0x5'));var logger=require(_0x46d4('0x6'))(_0x46d4('0x7'));var config=require('../../config/environment');var jayson=require(_0x46d4('0x8'));var client=jayson[_0x46d4('0x9')][_0x46d4('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x14a734,_0x3db7e7,_0x387bfe){return new BPromise(function(_0x4546aa,_0x1a51c1){return client[_0x46d4('0xb')](_0x14a734,_0x387bfe)[_0x46d4('0xc')](function(_0x40be03){logger[_0x46d4('0xd')](_0x46d4('0xe'),_0x3db7e7,_0x46d4('0xf'));logger[_0x46d4('0x10')](_0x46d4('0x11'),_0x3db7e7,_0x46d4('0xf'),JSON[_0x46d4('0x12')](_0x40be03));if(_0x40be03[_0x46d4('0x13')]){if(_0x40be03[_0x46d4('0x13')][_0x46d4('0x14')]===0x1f4){logger[_0x46d4('0x13')](_0x46d4('0xe'),_0x3db7e7,_0x40be03[_0x46d4('0x13')][_0x46d4('0x15')]);return _0x1a51c1(_0x40be03[_0x46d4('0x13')][_0x46d4('0x15')]);}logger[_0x46d4('0x13')](_0x46d4('0xe'),_0x3db7e7,_0x40be03[_0x46d4('0x13')]['message']);return _0x4546aa(_0x40be03[_0x46d4('0x13')][_0x46d4('0x15')]);}else{logger[_0x46d4('0xd')]('Sound,\x20%s,\x20%s',_0x3db7e7,_0x46d4('0xf'));_0x4546aa(_0x40be03['result'][_0x46d4('0x15')]);}})[_0x46d4('0x16')](function(_0x44b32e){logger[_0x46d4('0x13')]('Sound,\x20%s,\x20%s',_0x3db7e7,_0x44b32e);_0x1a51c1(_0x44b32e);});});}exports['ShowSound']=function(_0x5ddf7c){var _0x3ddb6b=this;return new Promise(function(_0x302d5b,_0x15a255){return db[_0x46d4('0x17')]['find']({'raw':_0x5ddf7c['options']?_0x5ddf7c['options']['raw']===undefined?!![]:![]:!![],'where':_0x5ddf7c[_0x46d4('0x18')]?_0x5ddf7c[_0x46d4('0x18')][_0x46d4('0x19')]||null:null,'attributes':_0x5ddf7c[_0x46d4('0x18')]?_0x5ddf7c[_0x46d4('0x18')][_0x46d4('0x1a')]||null:null,'include':_0x5ddf7c['options']?_0x5ddf7c['options'][_0x46d4('0x1b')]?_[_0x46d4('0x1c')](_0x5ddf7c[_0x46d4('0x18')][_0x46d4('0x1b')],function(_0x1a8d4b){return{'model':db[_0x1a8d4b[_0x46d4('0x1d')]],'as':_0x1a8d4b['as'],'attributes':_0x1a8d4b['attributes'],'include':_0x1a8d4b[_0x46d4('0x1b')]?_['map'](_0x1a8d4b[_0x46d4('0x1b')],function(_0x103039){return{'model':db[_0x103039['model']],'as':_0x103039['as'],'attributes':_0x103039[_0x46d4('0x1a')],'include':_0x103039[_0x46d4('0x1b')]?_[_0x46d4('0x1c')](_0x103039[_0x46d4('0x1b')],function(_0x412475){return{'model':db[_0x412475['model']],'as':_0x412475['as'],'attributes':_0x412475[_0x46d4('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x46d4('0xc')](function(_0x3d5e76){logger['info']('ShowSound',_0x5ddf7c);logger[_0x46d4('0x10')](_0x46d4('0x1e'),_0x5ddf7c,JSON[_0x46d4('0x12')](_0x3d5e76));_0x302d5b(_0x3d5e76);})[_0x46d4('0x16')](function(_0x309576){logger[_0x46d4('0x13')](_0x46d4('0x1e'),_0x309576[_0x46d4('0x15')],_0x5ddf7c);_0x15a255(_0x3ddb6b['error'](0x1f4,_0x309576[_0x46d4('0x15')]));});});};
\ No newline at end of file
index 98027cc..aee6c80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['exports','multer','path','express','fs-extra','../../components/interaction/service','../../config/environment','./squareMessage.controller','index','get','/:id','show','post','isAuthenticated','create','put','delete','destroy'];(function(_0x360be7,_0x2f49fc){var _0x1d2410=function(_0x3cb704){while(--_0x3cb704){_0x360be7['push'](_0x360be7['shift']());}};_0x1d2410(++_0x2f49fc);}(_0xb7e7,0x121));var _0x7b7e=function(_0x1ae5ab,_0xc5d441){_0x1ae5ab=_0x1ae5ab-0x0;var _0x1ce001=_0xb7e7[_0x1ae5ab];return _0x1ce001;};'use strict';var multer=require(_0x7b7e('0x0'));var util=require('util');var path=require(_0x7b7e('0x1'));var timeout=require('connect-timeout');var express=require(_0x7b7e('0x2'));var router=express['Router']();var fs_extra=require(_0x7b7e('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var controller=require(_0x7b7e('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x7b7e('0x7')]);router[_0x7b7e('0x8')](_0x7b7e('0x9'),auth['isAuthenticated'](),controller[_0x7b7e('0xa')]);router[_0x7b7e('0xb')]('/',auth[_0x7b7e('0xc')](),controller[_0x7b7e('0xd')]);router[_0x7b7e('0xe')](_0x7b7e('0x9'),auth[_0x7b7e('0xc')](),controller['update']);router[_0x7b7e('0xf')](_0x7b7e('0x9'),auth[_0x7b7e('0xc')](),controller[_0x7b7e('0x10')]);module[_0x7b7e('0x11')]=router;
\ No newline at end of file
+var _0xb7e7=['exports','multer','path','express','fs-extra','../../components/interaction/service','../../config/environment','./squareMessage.controller','index','get','/:id','show','post','isAuthenticated','create','put','delete','destroy'];(function(_0x5061ec,_0x27e1fd){var _0x116ada=function(_0x5cd93b){while(--_0x5cd93b){_0x5061ec['push'](_0x5061ec['shift']());}};_0x116ada(++_0x27e1fd);}(_0xb7e7,0x121));var _0x7b7e=function(_0xe66cf2,_0x32ba5f){_0xe66cf2=_0xe66cf2-0x0;var _0x2d84e7=_0xb7e7[_0xe66cf2];return _0x2d84e7;};'use strict';var multer=require(_0x7b7e('0x0'));var util=require('util');var path=require(_0x7b7e('0x1'));var timeout=require('connect-timeout');var express=require(_0x7b7e('0x2'));var router=express['Router']();var fs_extra=require(_0x7b7e('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var controller=require(_0x7b7e('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x7b7e('0x7')]);router[_0x7b7e('0x8')](_0x7b7e('0x9'),auth['isAuthenticated'](),controller[_0x7b7e('0xa')]);router[_0x7b7e('0xb')]('/',auth[_0x7b7e('0xc')](),controller[_0x7b7e('0xd')]);router[_0x7b7e('0xe')](_0x7b7e('0x9'),auth[_0x7b7e('0xc')](),controller['update']);router[_0x7b7e('0xf')](_0x7b7e('0x9'),auth[_0x7b7e('0xc')](),controller[_0x7b7e('0x10')]);module[_0x7b7e('0x11')]=router;
\ No newline at end of file
index 89e5045..a81394b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0945=['exports','STRING','TEXT','medium','ENUM'];(function(_0x585107,_0x247e52){var _0x8dcb04=function(_0x2b0f64){while(--_0x2b0f64){_0x585107['push'](_0x585107['shift']());}};_0x8dcb04(++_0x247e52);}(_0x0945,0x1db));var _0x5094=function(_0x2678d6,_0x4e2001){_0x2678d6=_0x2678d6-0x0;var _0x475503=_0x0945[_0x2678d6];return _0x475503;};'use strict';var Sequelize=require('sequelize');module[_0x5094('0x0')]={'uniqueid':{'type':Sequelize[_0x5094('0x1')]},'body':{'type':Sequelize[_0x5094('0x2')](_0x5094('0x3')),'allowNull':![]},'direction':{'type':Sequelize[_0x5094('0x4')]('in','out'),'defaultValue':'out','allowNull':![]},'providerName':{'type':Sequelize[_0x5094('0x1')]},'providerResponse':{'type':Sequelize[_0x5094('0x2')]}};
\ No newline at end of file
+var _0x7dee=['STRING','ENUM','out','sequelize','exports'];(function(_0x5a89bc,_0x4a09b0){var _0x5abd73=function(_0x4af95f){while(--_0x4af95f){_0x5a89bc['push'](_0x5a89bc['shift']());}};_0x5abd73(++_0x4a09b0);}(_0x7dee,0x8a));var _0xe7de=function(_0x33e22c,_0x316e59){_0x33e22c=_0x33e22c-0x0;var _0x6fbec9=_0x7dee[_0x33e22c];return _0x6fbec9;};'use strict';var Sequelize=require(_0xe7de('0x0'));module[_0xe7de('0x1')]={'uniqueid':{'type':Sequelize[_0xe7de('0x2')]},'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'direction':{'type':Sequelize[_0xe7de('0x3')]('in',_0xe7de('0x4')),'defaultValue':'out','allowNull':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 18e9cf8..3f3504b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a18=['json','apply','reject','save','then','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','keys','query','intersection','attributes','fields','length','nolimit','order','where','filters','pick','filter','type','merge','options','SquareMessage','include','findAll','rows','catch','params','includeAll','create','body','update','find','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range'];(function(_0xe69b4c,_0x2e1999){var _0x289d9f=function(_0x271626){while(--_0x271626){_0xe69b4c['push'](_0xe69b4c['shift']());}};_0x289d9f(++_0x2e1999);}(_0x6a18,0x114));var _0x86a1=function(_0x15b45a,_0x601d09){_0x15b45a=_0x15b45a-0x0;var _0x2c1a77=_0x6a18[_0x15b45a];return _0x2c1a77;};'use strict';var emlformat=require(_0x86a1('0x0'));var rimraf=require(_0x86a1('0x1'));var zipdir=require(_0x86a1('0x2'));var jsonpatch=require(_0x86a1('0x3'));var rp=require(_0x86a1('0x4'));var moment=require(_0x86a1('0x5'));var BPromise=require(_0x86a1('0x6'));var Mustache=require(_0x86a1('0x7'));var util=require('util');var path=require('path');var sox=require(_0x86a1('0x8'));var csv=require(_0x86a1('0x9'));var ejs=require(_0x86a1('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x86a1('0xb'));var squel=require(_0x86a1('0xc'));var crypto=require(_0x86a1('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x86a1('0xe'));var toCsv=require(_0x86a1('0x9'));var querystring=require(_0x86a1('0xf'));var Papa=require(_0x86a1('0x10'));var Redis=require(_0x86a1('0x11'));var authService=require(_0x86a1('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x86a1('0x13'));var hardwareService=require(_0x86a1('0x14'));var logger=require(_0x86a1('0x15'))(_0x86a1('0x16'));var utils=require(_0x86a1('0x17'));var config=require(_0x86a1('0x18'));var licenseUtil=require(_0x86a1('0x19'));var db=require(_0x86a1('0x1a'))['db'];function respondWithStatusCode(_0x5de3e9,_0x3dcc21){_0x3dcc21=_0x3dcc21||0xcc;return function(_0x1a23c){if(_0x1a23c){return _0x5de3e9[_0x86a1('0x1b')](_0x3dcc21);}return _0x5de3e9['status'](_0x3dcc21)[_0x86a1('0x1c')]();};}function respondWithResult(_0x32e1ad,_0x1b9467){_0x1b9467=_0x1b9467||0xc8;return function(_0x2b0a2d){if(_0x2b0a2d){return _0x32e1ad[_0x86a1('0x1d')](_0x1b9467)['json'](_0x2b0a2d);}};}function respondWithFilteredResult(_0x4655e2,_0xd3df77){return function(_0x510ab8){if(_0x510ab8){var _0x3d2ef3=typeof _0xd3df77[_0x86a1('0x1e')]===_0x86a1('0x1f')&&typeof _0xd3df77[_0x86a1('0x20')]===_0x86a1('0x1f');var _0x44b912=_0x510ab8[_0x86a1('0x21')];var _0x55633a=_0x3d2ef3?0x0:_0xd3df77['offset'];var _0x4c3470=_0x3d2ef3?_0x510ab8[_0x86a1('0x21')]:_0xd3df77[_0x86a1('0x1e')]+_0xd3df77['limit'];var _0x126a4d;if(_0x4c3470>=_0x44b912){_0x4c3470=_0x44b912;_0x126a4d=0xc8;}else{_0x126a4d=0xce;}_0x4655e2[_0x86a1('0x1d')](_0x126a4d);return _0x4655e2[_0x86a1('0x22')](_0x86a1('0x23'),_0x55633a+'-'+_0x4c3470+'/'+_0x44b912)[_0x86a1('0x24')](_0x510ab8);}return null;};}function patchUpdates(_0x54478a){return function(_0x4c5863){try{jsonpatch[_0x86a1('0x25')](_0x4c5863,_0x54478a,!![]);}catch(_0x23d735){return BPromise[_0x86a1('0x26')](_0x23d735);}return _0x4c5863[_0x86a1('0x27')]();};}function saveUpdates(_0x586098,_0x28704e){return function(_0x23791a){if(_0x23791a){return _0x23791a['update'](_0x586098)[_0x86a1('0x28')](function(_0x20f19e){return _0x20f19e;});}return null;};}function removeEntity(_0x401e87,_0x2dab93){return function(_0x405961){if(_0x405961){return _0x405961['destroy']()[_0x86a1('0x28')](function(){_0x401e87[_0x86a1('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x527d6f,_0x269889){return function(_0x38c4cb){if(!_0x38c4cb){_0x527d6f['sendStatus'](0x194);}return _0x38c4cb;};}function handleError(_0x11ab67,_0x3b218f){_0x3b218f=_0x3b218f||0x1f4;return function(_0x183654){logger[_0x86a1('0x29')](_0x183654[_0x86a1('0x2a')]);if(_0x183654[_0x86a1('0x2b')]){delete _0x183654['name'];}_0x11ab67[_0x86a1('0x1d')](_0x3b218f)[_0x86a1('0x2c')](_0x183654);};}exports[_0x86a1('0x2d')]=function(_0x2676f5,_0x2d1916){var _0x2fc88e={},_0x2976e4={},_0x2f9cdc={'count':0x0,'rows':[]};var _0x294a42=_[_0x86a1('0x2e')](db['SquareMessage'][_0x86a1('0x2f')],function(_0x3d7f9b){return{'name':_0x3d7f9b[_0x86a1('0x30')],'type':_0x3d7f9b['type'][_0x86a1('0x31')]};});_0x2976e4[_0x86a1('0x32')]=_[_0x86a1('0x2e')](_0x294a42,_0x86a1('0x2b'));_0x2976e4['query']=_[_0x86a1('0x33')](_0x2676f5[_0x86a1('0x34')]);_0x2976e4['filters']=_[_0x86a1('0x35')](_0x2976e4[_0x86a1('0x32')],_0x2976e4[_0x86a1('0x34')]);_0x2fc88e[_0x86a1('0x36')]=_[_0x86a1('0x35')](_0x2976e4['model'],qs[_0x86a1('0x37')](_0x2676f5['query'][_0x86a1('0x37')]));_0x2fc88e['attributes']=_0x2fc88e[_0x86a1('0x36')][_0x86a1('0x38')]?_0x2fc88e[_0x86a1('0x36')]:_0x2976e4[_0x86a1('0x32')];if(!_0x2676f5['query']['hasOwnProperty'](_0x86a1('0x39'))){_0x2fc88e[_0x86a1('0x20')]=qs[_0x86a1('0x20')](_0x2676f5['query'][_0x86a1('0x20')]);_0x2fc88e['offset']=qs[_0x86a1('0x1e')](_0x2676f5[_0x86a1('0x34')][_0x86a1('0x1e')]);}_0x2fc88e[_0x86a1('0x3a')]=qs['sort'](_0x2676f5[_0x86a1('0x34')]['sort']);_0x2fc88e[_0x86a1('0x3b')]=qs[_0x86a1('0x3c')](_[_0x86a1('0x3d')](_0x2676f5[_0x86a1('0x34')],_0x2976e4[_0x86a1('0x3c')]),_0x294a42);if(_0x2676f5[_0x86a1('0x34')][_0x86a1('0x3e')]){_0x2fc88e['where']=_['merge'](_0x2fc88e[_0x86a1('0x3b')],{'$or':_[_0x86a1('0x2e')](_0x294a42,function(_0x211e1c){if(_0x211e1c[_0x86a1('0x3f')]!=='VIRTUAL'){var _0x57b2a0={};_0x57b2a0[_0x211e1c['name']]={'$like':'%'+_0x2676f5[_0x86a1('0x34')][_0x86a1('0x3e')]+'%'};return _0x57b2a0;}})});}_0x2fc88e=_[_0x86a1('0x40')]({},_0x2fc88e,_0x2676f5[_0x86a1('0x41')]);var _0xfdd98={'where':_0x2fc88e[_0x86a1('0x3b')]};return db[_0x86a1('0x42')][_0x86a1('0x21')](_0xfdd98)['then'](function(_0x28d0b0){_0x2f9cdc[_0x86a1('0x21')]=_0x28d0b0;if(_0x2676f5['query']['includeAll']){_0x2fc88e[_0x86a1('0x43')]=[{'all':!![]}];}return db[_0x86a1('0x42')][_0x86a1('0x44')](_0x2fc88e);})[_0x86a1('0x28')](function(_0x43c56c){_0x2f9cdc[_0x86a1('0x45')]=_0x43c56c;return _0x2f9cdc;})['then'](respondWithFilteredResult(_0x2d1916,_0x2fc88e))[_0x86a1('0x46')](handleError(_0x2d1916,null));};exports['show']=function(_0x14366a,_0x1be5f0){var _0x6a3bd5={'raw':!![],'where':{'id':_0x14366a[_0x86a1('0x47')]['id']}},_0x3e589e={};_0x3e589e[_0x86a1('0x32')]=_[_0x86a1('0x33')](db[_0x86a1('0x42')][_0x86a1('0x2f')]);_0x3e589e[_0x86a1('0x34')]=_[_0x86a1('0x33')](_0x14366a[_0x86a1('0x34')]);_0x3e589e[_0x86a1('0x3c')]=_[_0x86a1('0x35')](_0x3e589e['model'],_0x3e589e[_0x86a1('0x34')]);_0x6a3bd5[_0x86a1('0x36')]=_['intersection'](_0x3e589e[_0x86a1('0x32')],qs['fields'](_0x14366a['query'][_0x86a1('0x37')]));_0x6a3bd5['attributes']=_0x6a3bd5[_0x86a1('0x36')][_0x86a1('0x38')]?_0x6a3bd5[_0x86a1('0x36')]:_0x3e589e['model'];if(_0x14366a[_0x86a1('0x34')][_0x86a1('0x48')]){_0x6a3bd5[_0x86a1('0x43')]=[{'all':!![]}];}_0x6a3bd5=_['merge']({},_0x6a3bd5,_0x14366a[_0x86a1('0x41')]);return db['SquareMessage']['find'](_0x6a3bd5)[_0x86a1('0x28')](handleEntityNotFound(_0x1be5f0,null))[_0x86a1('0x28')](respondWithResult(_0x1be5f0,null))[_0x86a1('0x46')](handleError(_0x1be5f0,null));};exports[_0x86a1('0x49')]=function(_0x45001e,_0x2bc185){return db[_0x86a1('0x42')][_0x86a1('0x49')](_0x45001e[_0x86a1('0x4a')],{})['then'](respondWithResult(_0x2bc185,0xc9))[_0x86a1('0x46')](handleError(_0x2bc185,null));};exports[_0x86a1('0x4b')]=function(_0x211df9,_0x45ab34){if(_0x211df9[_0x86a1('0x4a')]['id']){delete _0x211df9[_0x86a1('0x4a')]['id'];}return db[_0x86a1('0x42')][_0x86a1('0x4c')]({'where':{'id':_0x211df9['params']['id']}})['then'](handleEntityNotFound(_0x45ab34,null))['then'](saveUpdates(_0x211df9[_0x86a1('0x4a')],null))[_0x86a1('0x28')](respondWithResult(_0x45ab34,null))['catch'](handleError(_0x45ab34,null));};exports[_0x86a1('0x4d')]=function(_0x4470d2,_0x3fc84a){return db[_0x86a1('0x42')][_0x86a1('0x4c')]({'where':{'id':_0x4470d2[_0x86a1('0x47')]['id']}})[_0x86a1('0x28')](handleEntityNotFound(_0x3fc84a,null))[_0x86a1('0x28')](removeEntity(_0x3fc84a,null))[_0x86a1('0x46')](handleError(_0x3fc84a,null));};
\ No newline at end of file
+var _0xa064=['model','map','query','keys','filters','attributes','intersection','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','fields','length','find','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','path','sox','ejs','fs-extra','squel','crypto','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','SquareMessage','rawAttributes','key'];(function(_0xc4001c,_0x1bf8f0){var _0x49f7bc=function(_0x1059b8){while(--_0x1059b8){_0xc4001c['push'](_0xc4001c['shift']());}};_0x49f7bc(++_0x1bf8f0);}(_0xa064,0x192));var _0x4a06=function(_0x5e238b,_0x17ae49){_0x5e238b=_0x5e238b-0x0;var _0x389bea=_0xa064[_0x5e238b];return _0x389bea;};'use strict';var emlformat=require(_0x4a06('0x0'));var rimraf=require(_0x4a06('0x1'));var zipdir=require(_0x4a06('0x2'));var jsonpatch=require(_0x4a06('0x3'));var rp=require(_0x4a06('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x4a06('0x5'));var util=require('util');var path=require(_0x4a06('0x6'));var sox=require(_0x4a06('0x7'));var csv=require('to-csv');var ejs=require(_0x4a06('0x8'));var fs=require('fs');var fs_extra=require(_0x4a06('0x9'));var _=require('lodash');var squel=require(_0x4a06('0xa'));var crypto=require(_0x4a06('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x4a06('0xc'));var querystring=require(_0x4a06('0xd'));var Papa=require(_0x4a06('0xe'));var Redis=require(_0x4a06('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x4a06('0x10'));var as=require(_0x4a06('0x11'));var hardwareService=require(_0x4a06('0x12'));var logger=require(_0x4a06('0x13'))(_0x4a06('0x14'));var utils=require(_0x4a06('0x15'));var config=require(_0x4a06('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x4a06('0x17'))['db'];function respondWithStatusCode(_0x52818e,_0x16d686){_0x16d686=_0x16d686||0xcc;return function(_0x3ac986){if(_0x3ac986){return _0x52818e[_0x4a06('0x18')](_0x16d686);}return _0x52818e['status'](_0x16d686)[_0x4a06('0x19')]();};}function respondWithResult(_0xdbc234,_0xf9b166){_0xf9b166=_0xf9b166||0xc8;return function(_0x569aed){if(_0x569aed){return _0xdbc234[_0x4a06('0x1a')](_0xf9b166)[_0x4a06('0x1b')](_0x569aed);}};}function respondWithFilteredResult(_0x292770,_0x51643c){return function(_0x221a80){if(_0x221a80){var _0x29e99b=typeof _0x51643c[_0x4a06('0x1c')]===_0x4a06('0x1d')&&typeof _0x51643c[_0x4a06('0x1e')]==='undefined';var _0x19c96d=_0x221a80['count'];var _0x4fd47f=_0x29e99b?0x0:_0x51643c[_0x4a06('0x1c')];var _0x463aca=_0x29e99b?_0x221a80[_0x4a06('0x1f')]:_0x51643c[_0x4a06('0x1c')]+_0x51643c[_0x4a06('0x1e')];var _0x226538;if(_0x463aca>=_0x19c96d){_0x463aca=_0x19c96d;_0x226538=0xc8;}else{_0x226538=0xce;}_0x292770[_0x4a06('0x1a')](_0x226538);return _0x292770[_0x4a06('0x20')](_0x4a06('0x21'),_0x4fd47f+'-'+_0x463aca+'/'+_0x19c96d)['json'](_0x221a80);}return null;};}function patchUpdates(_0x98df26){return function(_0x3933e6){try{jsonpatch[_0x4a06('0x22')](_0x3933e6,_0x98df26,!![]);}catch(_0x357f82){return BPromise[_0x4a06('0x23')](_0x357f82);}return _0x3933e6[_0x4a06('0x24')]();};}function saveUpdates(_0x20f9f4,_0x156af7){return function(_0xae7471){if(_0xae7471){return _0xae7471[_0x4a06('0x25')](_0x20f9f4)[_0x4a06('0x26')](function(_0x44eb74){return _0x44eb74;});}return null;};}function removeEntity(_0x38c823,_0x5ebd7c){return function(_0x501ee9){if(_0x501ee9){return _0x501ee9[_0x4a06('0x27')]()[_0x4a06('0x26')](function(){_0x38c823[_0x4a06('0x1a')](0xcc)[_0x4a06('0x19')]();});}};}function handleEntityNotFound(_0x5b5a43,_0x5e8af0){return function(_0xf7e565){if(!_0xf7e565){_0x5b5a43[_0x4a06('0x18')](0x194);}return _0xf7e565;};}function handleError(_0x55861c,_0xdf5163){_0xdf5163=_0xdf5163||0x1f4;return function(_0x54613e){logger[_0x4a06('0x28')](_0x54613e[_0x4a06('0x29')]);if(_0x54613e['name']){delete _0x54613e[_0x4a06('0x2a')];}_0x55861c[_0x4a06('0x1a')](_0xdf5163)[_0x4a06('0x2b')](_0x54613e);};}exports[_0x4a06('0x2c')]=function(_0x1c14d3,_0x37cb33){var _0x5ee187={},_0x255924={},_0x452188={'count':0x0,'rows':[]};var _0x1ab220=_['map'](db[_0x4a06('0x2d')][_0x4a06('0x2e')],function(_0x20cf23){return{'name':_0x20cf23['fieldName'],'type':_0x20cf23['type'][_0x4a06('0x2f')]};});_0x255924[_0x4a06('0x30')]=_[_0x4a06('0x31')](_0x1ab220,_0x4a06('0x2a'));_0x255924[_0x4a06('0x32')]=_[_0x4a06('0x33')](_0x1c14d3[_0x4a06('0x32')]);_0x255924[_0x4a06('0x34')]=_['intersection'](_0x255924[_0x4a06('0x30')],_0x255924[_0x4a06('0x32')]);_0x5ee187[_0x4a06('0x35')]=_[_0x4a06('0x36')](_0x255924[_0x4a06('0x30')],qs['fields'](_0x1c14d3[_0x4a06('0x32')]['fields']));_0x5ee187[_0x4a06('0x35')]=_0x5ee187[_0x4a06('0x35')]['length']?_0x5ee187[_0x4a06('0x35')]:_0x255924[_0x4a06('0x30')];if(!_0x1c14d3[_0x4a06('0x32')][_0x4a06('0x37')](_0x4a06('0x38'))){_0x5ee187['limit']=qs[_0x4a06('0x1e')](_0x1c14d3['query'][_0x4a06('0x1e')]);_0x5ee187[_0x4a06('0x1c')]=qs[_0x4a06('0x1c')](_0x1c14d3['query'][_0x4a06('0x1c')]);}_0x5ee187[_0x4a06('0x39')]=qs[_0x4a06('0x3a')](_0x1c14d3[_0x4a06('0x32')][_0x4a06('0x3a')]);_0x5ee187[_0x4a06('0x3b')]=qs['filters'](_[_0x4a06('0x3c')](_0x1c14d3['query'],_0x255924[_0x4a06('0x34')]),_0x1ab220);if(_0x1c14d3[_0x4a06('0x32')][_0x4a06('0x3d')]){_0x5ee187['where']=_[_0x4a06('0x3e')](_0x5ee187['where'],{'$or':_[_0x4a06('0x31')](_0x1ab220,function(_0x59517c){if(_0x59517c['type']!==_0x4a06('0x3f')){var _0x84b40e={};_0x84b40e[_0x59517c[_0x4a06('0x2a')]]={'$like':'%'+_0x1c14d3[_0x4a06('0x32')][_0x4a06('0x3d')]+'%'};return _0x84b40e;}})});}_0x5ee187=_[_0x4a06('0x3e')]({},_0x5ee187,_0x1c14d3[_0x4a06('0x40')]);var _0x1084b8={'where':_0x5ee187[_0x4a06('0x3b')]};return db['SquareMessage']['count'](_0x1084b8)[_0x4a06('0x26')](function(_0x284a2b){_0x452188[_0x4a06('0x1f')]=_0x284a2b;if(_0x1c14d3[_0x4a06('0x32')][_0x4a06('0x41')]){_0x5ee187[_0x4a06('0x42')]=[{'all':!![]}];}return db[_0x4a06('0x2d')]['findAll'](_0x5ee187);})['then'](function(_0x465938){_0x452188[_0x4a06('0x43')]=_0x465938;return _0x452188;})[_0x4a06('0x26')](respondWithFilteredResult(_0x37cb33,_0x5ee187))[_0x4a06('0x44')](handleError(_0x37cb33,null));};exports[_0x4a06('0x45')]=function(_0x534227,_0x18dbe9){var _0x538c73={'raw':!![],'where':{'id':_0x534227[_0x4a06('0x46')]['id']}},_0x35fb1b={};_0x35fb1b[_0x4a06('0x30')]=_[_0x4a06('0x33')](db['SquareMessage'][_0x4a06('0x2e')]);_0x35fb1b[_0x4a06('0x32')]=_[_0x4a06('0x33')](_0x534227['query']);_0x35fb1b[_0x4a06('0x34')]=_[_0x4a06('0x36')](_0x35fb1b[_0x4a06('0x30')],_0x35fb1b['query']);_0x538c73[_0x4a06('0x35')]=_[_0x4a06('0x36')](_0x35fb1b[_0x4a06('0x30')],qs[_0x4a06('0x47')](_0x534227[_0x4a06('0x32')][_0x4a06('0x47')]));_0x538c73[_0x4a06('0x35')]=_0x538c73[_0x4a06('0x35')][_0x4a06('0x48')]?_0x538c73[_0x4a06('0x35')]:_0x35fb1b[_0x4a06('0x30')];if(_0x534227[_0x4a06('0x32')][_0x4a06('0x41')]){_0x538c73['include']=[{'all':!![]}];}_0x538c73=_[_0x4a06('0x3e')]({},_0x538c73,_0x534227['options']);return db[_0x4a06('0x2d')][_0x4a06('0x49')](_0x538c73)[_0x4a06('0x26')](handleEntityNotFound(_0x18dbe9,null))[_0x4a06('0x26')](respondWithResult(_0x18dbe9,null))[_0x4a06('0x44')](handleError(_0x18dbe9,null));};exports['create']=function(_0x1fb2fe,_0x1f4fad){return db[_0x4a06('0x2d')]['create'](_0x1fb2fe[_0x4a06('0x4a')],{})[_0x4a06('0x26')](respondWithResult(_0x1f4fad,0xc9))[_0x4a06('0x44')](handleError(_0x1f4fad,null));};exports['update']=function(_0x25ba9c,_0x2824ed){if(_0x25ba9c[_0x4a06('0x4a')]['id']){delete _0x25ba9c[_0x4a06('0x4a')]['id'];}return db[_0x4a06('0x2d')][_0x4a06('0x49')]({'where':{'id':_0x25ba9c['params']['id']}})[_0x4a06('0x26')](handleEntityNotFound(_0x2824ed,null))[_0x4a06('0x26')](saveUpdates(_0x25ba9c[_0x4a06('0x4a')],null))[_0x4a06('0x26')](respondWithResult(_0x2824ed,null))[_0x4a06('0x44')](handleError(_0x2824ed,null));};exports[_0x4a06('0x27')]=function(_0x524ebd,_0xcfa915){return db['SquareMessage']['find']({'where':{'id':_0x524ebd[_0x4a06('0x46')]['id']}})[_0x4a06('0x26')](handleEntityNotFound(_0xcfa915,null))[_0x4a06('0x26')](removeEntity(_0xcfa915,null))[_0x4a06('0x44')](handleError(_0xcfa915,null));};
\ No newline at end of file
index 019f6ad..3d06637 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2185=['util','api','request-promise','path','../../config/environment','./squareMessage.attributes','exports','SquareMessage','square_messages','lodash'];(function(_0x1e7e86,_0x3098b5){var _0x205437=function(_0x4bf7da){while(--_0x4bf7da){_0x1e7e86['push'](_0x1e7e86['shift']());}};_0x205437(++_0x3098b5);}(_0x2185,0x171));var _0x5218=function(_0x3dcb26,_0x5e582c){_0x3dcb26=_0x3dcb26-0x0;var _0x54497c=_0x2185[_0x3dcb26];return _0x54497c;};'use strict';var _=require(_0x5218('0x0'));var util=require(_0x5218('0x1'));var logger=require('../../config/logger')(_0x5218('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x5218('0x3'));var fs=require('fs');var path=require(_0x5218('0x4'));var rimraf=require('rimraf');var config=require(_0x5218('0x5'));var attributes=require(_0x5218('0x6'));module[_0x5218('0x7')]=function(_0x13a259,_0x1231d2){return _0x13a259['define'](_0x5218('0x8'),attributes,{'tableName':_0x5218('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4efc=['path','rimraf','../../config/environment','./squareMessage.attributes','exports','define','SquareMessage','square_messages','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x50b87,_0x2c4ec8){var _0x51f6ce=function(_0x28e63b){while(--_0x28e63b){_0x50b87['push'](_0x50b87['shift']());}};_0x51f6ce(++_0x2c4ec8);}(_0x4efc,0xb0));var _0xc4ef=function(_0x33b507,_0xe48ac3){_0x33b507=_0x33b507-0x0;var _0x4d4309=_0x4efc[_0x33b507];return _0x4d4309;};'use strict';var _=require(_0xc4ef('0x0'));var util=require('util');var logger=require(_0xc4ef('0x1'))(_0xc4ef('0x2'));var moment=require(_0xc4ef('0x3'));var BPromise=require(_0xc4ef('0x4'));var rp=require(_0xc4ef('0x5'));var fs=require('fs');var path=require(_0xc4ef('0x6'));var rimraf=require(_0xc4ef('0x7'));var config=require(_0xc4ef('0x8'));var attributes=require(_0xc4ef('0x9'));module[_0xc4ef('0xa')]=function(_0x43ed45,_0x405134){return _0x43ed45[_0xc4ef('0xb')](_0xc4ef('0xc'),attributes,{'tableName':_0xc4ef('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 574a727..c9c5470 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7057=['moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','SquareMessage,\x20%s,\x20%s','request\x20sent','debug','SquareMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateSquareMessage','SquareMessage','create','body','options','raw','then','lodash','util'];(function(_0x3b0fe9,_0x2872ec){var _0x3185af=function(_0x3a6058){while(--_0x3a6058){_0x3b0fe9['push'](_0x3b0fe9['shift']());}};_0x3185af(++_0x2872ec);}(_0x7057,0xd7));var _0x7705=function(_0x3f6b1b,_0x58d3d6){_0x3f6b1b=_0x3f6b1b-0x0;var _0x4a3d2b=_0x7057[_0x3f6b1b];return _0x4a3d2b;};'use strict';var _=require(_0x7705('0x0'));var util=require(_0x7705('0x1'));var moment=require(_0x7705('0x2'));var BPromise=require(_0x7705('0x3'));var rs=require(_0x7705('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7705('0x5'))['db'];var utils=require(_0x7705('0x6'));var logger=require(_0x7705('0x7'))(_0x7705('0x8'));var config=require(_0x7705('0x9'));var jayson=require(_0x7705('0xa'));var client=jayson[_0x7705('0xb')][_0x7705('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2389e8,_0x5380e1,_0x1fbd35){return new BPromise(function(_0x2e7068,_0x5cde27){return client[_0x7705('0xd')](_0x2389e8,_0x1fbd35)['then'](function(_0x5e2021){logger[_0x7705('0xe')](_0x7705('0xf'),_0x5380e1,_0x7705('0x10'));logger[_0x7705('0x11')](_0x7705('0x12'),_0x5380e1,_0x7705('0x10'),JSON[_0x7705('0x13')](_0x5e2021));if(_0x5e2021['error']){if(_0x5e2021[_0x7705('0x14')]['code']===0x1f4){logger[_0x7705('0x14')](_0x7705('0xf'),_0x5380e1,_0x5e2021['error'][_0x7705('0x15')]);return _0x5cde27(_0x5e2021['error'][_0x7705('0x15')]);}logger[_0x7705('0x14')]('SquareMessage,\x20%s,\x20%s',_0x5380e1,_0x5e2021[_0x7705('0x14')]['message']);return _0x2e7068(_0x5e2021[_0x7705('0x14')][_0x7705('0x15')]);}else{logger['info'](_0x7705('0xf'),_0x5380e1,'request\x20sent');_0x2e7068(_0x5e2021[_0x7705('0x16')][_0x7705('0x15')]);}})[_0x7705('0x17')](function(_0x52a6ea){logger['error'](_0x7705('0xf'),_0x5380e1,_0x52a6ea);_0x5cde27(_0x52a6ea);});});}exports[_0x7705('0x18')]=function(_0x285260){var _0x36307f=this;return new Promise(function(_0x3eade1,_0xb10873){return db[_0x7705('0x19')][_0x7705('0x1a')](_0x285260[_0x7705('0x1b')],{'raw':_0x285260[_0x7705('0x1c')]?_0x285260['options'][_0x7705('0x1d')]===undefined?!![]:![]:!![]})[_0x7705('0x1e')](function(_0x4420da){logger['info'](_0x7705('0x18'),_0x285260);logger[_0x7705('0x11')](_0x7705('0x18'),_0x285260,JSON['stringify'](_0x4420da));_0x3eade1(_0x4420da);})['catch'](function(_0x30e7e2){logger['error'](_0x7705('0x18'),_0x30e7e2[_0x7705('0x15')],_0x285260);_0xb10873(_0x36307f[_0x7705('0x14')](0x1f4,_0x30e7e2[_0x7705('0x15')]));});});};
\ No newline at end of file
+var _0x19b5=['result','catch','CreateSquareMessage','SquareMessage','create','body','options','then','debug','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','SquareMessage,\x20%s,\x20%s','SquareMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x1044d5,_0x1e876f){var _0x209fd6=function(_0x15efed){while(--_0x15efed){_0x1044d5['push'](_0x1044d5['shift']());}};_0x209fd6(++_0x1e876f);}(_0x19b5,0x15e));var _0x519b=function(_0x4af336,_0x2530ed){_0x4af336=_0x4af336-0x0;var _0x3db865=_0x19b5[_0x4af336];return _0x3db865;};'use strict';var _=require(_0x519b('0x0'));var util=require('util');var moment=require(_0x519b('0x1'));var BPromise=require(_0x519b('0x2'));var rs=require(_0x519b('0x3'));var fs=require('fs');var Redis=require(_0x519b('0x4'));var db=require(_0x519b('0x5'))['db'];var utils=require(_0x519b('0x6'));var logger=require(_0x519b('0x7'))(_0x519b('0x8'));var config=require(_0x519b('0x9'));var jayson=require(_0x519b('0xa'));var client=jayson[_0x519b('0xb')][_0x519b('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x11643c,_0x1586c1,_0x117b05){return new BPromise(function(_0x1df1f2,_0x4c0134){return client[_0x519b('0xd')](_0x11643c,_0x117b05)['then'](function(_0x24cfd0){logger[_0x519b('0xe')](_0x519b('0xf'),_0x1586c1,'request\x20sent');logger['debug'](_0x519b('0x10'),_0x1586c1,_0x519b('0x11'),JSON[_0x519b('0x12')](_0x24cfd0));if(_0x24cfd0[_0x519b('0x13')]){if(_0x24cfd0[_0x519b('0x13')][_0x519b('0x14')]===0x1f4){logger[_0x519b('0x13')](_0x519b('0xf'),_0x1586c1,_0x24cfd0[_0x519b('0x13')][_0x519b('0x15')]);return _0x4c0134(_0x24cfd0[_0x519b('0x13')][_0x519b('0x15')]);}logger[_0x519b('0x13')]('SquareMessage,\x20%s,\x20%s',_0x1586c1,_0x24cfd0[_0x519b('0x13')]['message']);return _0x1df1f2(_0x24cfd0['error'][_0x519b('0x15')]);}else{logger[_0x519b('0xe')](_0x519b('0xf'),_0x1586c1,_0x519b('0x11'));_0x1df1f2(_0x24cfd0[_0x519b('0x16')][_0x519b('0x15')]);}})[_0x519b('0x17')](function(_0x312540){logger[_0x519b('0x13')](_0x519b('0xf'),_0x1586c1,_0x312540);_0x4c0134(_0x312540);});});}exports[_0x519b('0x18')]=function(_0x3d7a8d){var _0x276481=this;return new Promise(function(_0x5c807b,_0x3332b2){return db[_0x519b('0x19')][_0x519b('0x1a')](_0x3d7a8d[_0x519b('0x1b')],{'raw':_0x3d7a8d['options']?_0x3d7a8d[_0x519b('0x1c')]['raw']===undefined?!![]:![]:!![]})[_0x519b('0x1d')](function(_0xc27f84){logger[_0x519b('0xe')](_0x519b('0x18'),_0x3d7a8d);logger[_0x519b('0x1e')](_0x519b('0x18'),_0x3d7a8d,JSON[_0x519b('0x12')](_0xc27f84));_0x5c807b(_0xc27f84);})[_0x519b('0x17')](function(_0x2cf085){logger[_0x519b('0x13')](_0x519b('0x18'),_0x2cf085[_0x519b('0x15')],_0x3d7a8d);_0x3332b2(_0x276481[_0x519b('0x13')](0x1f4,_0x2cf085['message']));});});};
\ No newline at end of file
index 6e297a7..6de855f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1000=['post','put','delete','multer','util','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','show','/:id/test','15s'];(function(_0x3ed25d,_0x6c37b2){var _0x5e0998=function(_0x3e53a4){while(--_0x3e53a4){_0x3ed25d['push'](_0x3ed25d['shift']());}};_0x5e0998(++_0x6c37b2);}(_0x1000,0x113));var _0x0100=function(_0x40e139,_0x4a5f95){_0x40e139=_0x40e139-0x0;var _0x3005bf=_0x1000[_0x40e139];return _0x3005bf;};'use strict';var multer=require(_0x0100('0x0'));var util=require(_0x0100('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x0100('0x2'));var router=express['Router']();var fs_extra=require(_0x0100('0x3'));var auth=require(_0x0100('0x4'));var interaction=require(_0x0100('0x5'));var config=require(_0x0100('0x6'));var controller=require('./squareOdbc.controller');router[_0x0100('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x0100('0x7')](_0x0100('0x8'),auth[_0x0100('0x9')](),controller[_0x0100('0xa')]);router[_0x0100('0x7')](_0x0100('0xb'),auth['isAuthenticated'](),timeout(_0x0100('0xc')),controller['test']);router[_0x0100('0xd')]('/',auth[_0x0100('0x9')](),controller['create']);router[_0x0100('0xe')](_0x0100('0x8'),auth[_0x0100('0x9')](),controller['update']);router[_0x0100('0xf')]('/:id',auth[_0x0100('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x91b5=['exports','util','connect-timeout','express','../../components/auth/service','../../config/environment','get','isAuthenticated','index','show','/:id/test','15s','test','create','update','delete','/:id','destroy'];(function(_0x28646f,_0x140512){var _0x98cdd7=function(_0x188fdd){while(--_0x188fdd){_0x28646f['push'](_0x28646f['shift']());}};_0x98cdd7(++_0x140512);}(_0x91b5,0xeb));var _0x591b=function(_0x84ca78,_0x2008ea){_0x84ca78=_0x84ca78-0x0;var _0x12899b=_0x91b5[_0x84ca78];return _0x12899b;};'use strict';var multer=require('multer');var util=require(_0x591b('0x0'));var path=require('path');var timeout=require(_0x591b('0x1'));var express=require(_0x591b('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x591b('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x591b('0x4'));var controller=require('./squareOdbc.controller');router[_0x591b('0x5')]('/',auth[_0x591b('0x6')](),controller[_0x591b('0x7')]);router[_0x591b('0x5')]('/:id',auth[_0x591b('0x6')](),controller[_0x591b('0x8')]);router['get'](_0x591b('0x9'),auth['isAuthenticated'](),timeout(_0x591b('0xa')),controller[_0x591b('0xb')]);router['post']('/',auth['isAuthenticated'](),controller[_0x591b('0xc')]);router['put']('/:id',auth[_0x591b('0x6')](),controller[_0x591b('0xd')]);router[_0x591b('0xe')](_0x591b('0xf'),auth[_0x591b('0x6')](),controller[_0x591b('0x10')]);module[_0x591b('0x11')]=router;
\ No newline at end of file
index 453c01e..811c55b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1291=['name','sequelize','STRING'];(function(_0x563887,_0x3cdb5e){var _0x317d47=function(_0x2636d4){while(--_0x2636d4){_0x563887['push'](_0x563887['shift']());}};_0x317d47(++_0x3cdb5e);}(_0x1291,0x103));var _0x1129=function(_0x86edec,_0x31353c){_0x86edec=_0x86edec-0x0;var _0x1b1ac1=_0x1291[_0x86edec];return _0x1b1ac1;};'use strict';var Sequelize=require(_0x1129('0x0'));module['exports']={'name':{'type':Sequelize[_0x1129('0x1')],'unique':_0x1129('0x2'),'allowNull':![]},'dsn':{'type':Sequelize[_0x1129('0x1')]},'description':{'type':Sequelize[_0x1129('0x1')]}};
\ No newline at end of file
+var _0x9a83=['STRING','sequelize'];(function(_0x42d4a3,_0x4244fc){var _0x498fc1=function(_0x16ceb0){while(--_0x16ceb0){_0x42d4a3['push'](_0x42d4a3['shift']());}};_0x498fc1(++_0x4244fc);}(_0x9a83,0x113));var _0x39a8=function(_0x561f25,_0x2d95c1){_0x561f25=_0x561f25-0x0;var _0x150e4c=_0x9a83[_0x561f25];return _0x150e4c;};'use strict';var Sequelize=require(_0x39a8('0x0'));module['exports']={'name':{'type':Sequelize[_0x39a8('0x1')],'unique':'name','allowNull':![]},'dsn':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x39a8('0x1')]}};
\ No newline at end of file
index 0031ee0..2b9ec2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4487=['../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','then','get','ODBC','UserProfileResource','name','send','map','SquareOdbc','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','test','dsn','odbc','openSync','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis'];(function(_0x4a9120,_0x48aca7){var _0x207e4b=function(_0x15ad64){while(--_0x15ad64){_0x4a9120['push'](_0x4a9120['shift']());}};_0x207e4b(++_0x48aca7);}(_0x4487,0x1f3));var _0x7448=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x4487[_0x42cae2];return _0x5f256f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7448('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7448('0x1'));var rp=require(_0x7448('0x2'));var moment=require(_0x7448('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x7448('0x4'));var util=require(_0x7448('0x5'));var path=require(_0x7448('0x6'));var sox=require(_0x7448('0x7'));var csv=require(_0x7448('0x8'));var ejs=require(_0x7448('0x9'));var fs=require('fs');var fs_extra=require(_0x7448('0xa'));var _=require(_0x7448('0xb'));var squel=require(_0x7448('0xc'));var crypto=require(_0x7448('0xd'));var jsforce=require(_0x7448('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x7448('0x8'));var querystring=require('querystring');var Papa=require(_0x7448('0xf'));var Redis=require(_0x7448('0x10'));var authService=require(_0x7448('0x11'));var qs=require(_0x7448('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7448('0x13'));var logger=require(_0x7448('0x14'))(_0x7448('0x15'));var utils=require(_0x7448('0x16'));var config=require(_0x7448('0x17'));var licenseUtil=require(_0x7448('0x18'));var db=require(_0x7448('0x19'))['db'];function respondWithStatusCode(_0x168615,_0x5aad96){_0x5aad96=_0x5aad96||0xcc;return function(_0x50a2ca){if(_0x50a2ca){return _0x168615[_0x7448('0x1a')](_0x5aad96);}return _0x168615['status'](_0x5aad96)[_0x7448('0x1b')]();};}function respondWithResult(_0x22dbb7,_0x302895){_0x302895=_0x302895||0xc8;return function(_0x3d4062){if(_0x3d4062){return _0x22dbb7[_0x7448('0x1c')](_0x302895)['json'](_0x3d4062);}};}function respondWithFilteredResult(_0x2359e3,_0x2c64a7){return function(_0x89f1cd){if(_0x89f1cd){var _0x369770=typeof _0x2c64a7[_0x7448('0x1d')]===_0x7448('0x1e')&&typeof _0x2c64a7[_0x7448('0x1f')]===_0x7448('0x1e');var _0x275785=_0x89f1cd[_0x7448('0x20')];var _0x395d2e=_0x369770?0x0:_0x2c64a7[_0x7448('0x1d')];var _0x508b7f=_0x369770?_0x89f1cd[_0x7448('0x20')]:_0x2c64a7[_0x7448('0x1d')]+_0x2c64a7[_0x7448('0x1f')];var _0x557052;if(_0x508b7f>=_0x275785){_0x508b7f=_0x275785;_0x557052=0xc8;}else{_0x557052=0xce;}_0x2359e3[_0x7448('0x1c')](_0x557052);return _0x2359e3[_0x7448('0x21')](_0x7448('0x22'),_0x395d2e+'-'+_0x508b7f+'/'+_0x275785)[_0x7448('0x23')](_0x89f1cd);}return null;};}function patchUpdates(_0x5e3b6c){return function(_0x462d15){try{jsonpatch[_0x7448('0x24')](_0x462d15,_0x5e3b6c,!![]);}catch(_0xa8f5d6){return BPromise['reject'](_0xa8f5d6);}return _0x462d15[_0x7448('0x25')]();};}function saveUpdates(_0x47bfb3,_0x2edc12){return function(_0x255a32){if(_0x255a32){return _0x255a32[_0x7448('0x26')](_0x47bfb3)[_0x7448('0x27')](function(_0x45c42a){return _0x45c42a;});}return null;};}function removeEntity(_0x1783cb,_0x277094){return function(_0x181c5e){if(_0x181c5e){return _0x181c5e['destroy']()['then'](function(){var _0x42822c=_0x181c5e[_0x7448('0x28')]({'plain':!![]});var _0x4a43da=_0x7448('0x29');return db[_0x7448('0x2a')]['destroy']({'where':{'type':_0x4a43da,'resourceId':_0x42822c['id']}})[_0x7448('0x27')](function(){return _0x181c5e;});})[_0x7448('0x27')](function(){_0x1783cb[_0x7448('0x1c')](0xcc)[_0x7448('0x1b')]();});}};}function handleEntityNotFound(_0x28b39b,_0x358e8a){return function(_0x38c05b){if(!_0x38c05b){_0x28b39b[_0x7448('0x1a')](0x194);}return _0x38c05b;};}function handleError(_0x4ea62b,_0x59b8f2){_0x59b8f2=_0x59b8f2||0x1f4;return function(_0x48318c){logger['error'](_0x48318c['stack']);if(_0x48318c['name']){delete _0x48318c[_0x7448('0x2b')];}_0x4ea62b[_0x7448('0x1c')](_0x59b8f2)[_0x7448('0x2c')](_0x48318c);};}exports['index']=function(_0x4266f9,_0x32ba96){var _0x1b4457={},_0x1c188a={},_0x1b54ed={'count':0x0,'rows':[]};var _0x40347a=_[_0x7448('0x2d')](db[_0x7448('0x2e')][_0x7448('0x2f')],function(_0x3b02c1){return{'name':_0x3b02c1[_0x7448('0x30')],'type':_0x3b02c1[_0x7448('0x31')][_0x7448('0x32')]};});_0x1c188a[_0x7448('0x33')]=_[_0x7448('0x2d')](_0x40347a,_0x7448('0x2b'));_0x1c188a[_0x7448('0x34')]=_[_0x7448('0x35')](_0x4266f9[_0x7448('0x34')]);_0x1c188a[_0x7448('0x36')]=_[_0x7448('0x37')](_0x1c188a['model'],_0x1c188a[_0x7448('0x34')]);_0x1b4457[_0x7448('0x38')]=_[_0x7448('0x37')](_0x1c188a[_0x7448('0x33')],qs[_0x7448('0x39')](_0x4266f9[_0x7448('0x34')][_0x7448('0x39')]));_0x1b4457[_0x7448('0x38')]=_0x1b4457[_0x7448('0x38')]['length']?_0x1b4457[_0x7448('0x38')]:_0x1c188a[_0x7448('0x33')];if(!_0x4266f9[_0x7448('0x34')][_0x7448('0x3a')]('nolimit')){_0x1b4457[_0x7448('0x1f')]=qs[_0x7448('0x1f')](_0x4266f9[_0x7448('0x34')][_0x7448('0x1f')]);_0x1b4457[_0x7448('0x1d')]=qs[_0x7448('0x1d')](_0x4266f9[_0x7448('0x34')]['offset']);}_0x1b4457['order']=qs['sort'](_0x4266f9['query'][_0x7448('0x3b')]);_0x1b4457[_0x7448('0x3c')]=qs[_0x7448('0x36')](_[_0x7448('0x3d')](_0x4266f9[_0x7448('0x34')],_0x1c188a[_0x7448('0x36')]),_0x40347a);if(_0x4266f9[_0x7448('0x34')][_0x7448('0x3e')]){_0x1b4457[_0x7448('0x3c')]=_[_0x7448('0x3f')](_0x1b4457[_0x7448('0x3c')],{'$or':_[_0x7448('0x2d')](_0x40347a,function(_0x1ebae4){if(_0x1ebae4[_0x7448('0x31')]!==_0x7448('0x40')){var _0x4df15b={};_0x4df15b[_0x1ebae4['name']]={'$like':'%'+_0x4266f9['query'][_0x7448('0x3e')]+'%'};return _0x4df15b;}})});}_0x1b4457=_['merge']({},_0x1b4457,_0x4266f9[_0x7448('0x41')]);var _0x124ce6={'where':_0x1b4457[_0x7448('0x3c')]};return db[_0x7448('0x2e')]['count'](_0x124ce6)[_0x7448('0x27')](function(_0x3458c2){_0x1b54ed[_0x7448('0x20')]=_0x3458c2;if(_0x4266f9['query'][_0x7448('0x42')]){_0x1b4457[_0x7448('0x43')]=[{'all':!![]}];}return db[_0x7448('0x2e')][_0x7448('0x44')](_0x1b4457);})['then'](function(_0x5a6ae2){_0x1b54ed[_0x7448('0x45')]=_0x5a6ae2;return _0x1b54ed;})[_0x7448('0x27')](respondWithFilteredResult(_0x32ba96,_0x1b4457))[_0x7448('0x46')](handleError(_0x32ba96,null));};exports[_0x7448('0x47')]=function(_0x13d828,_0x11cf94){var _0x3a245c={'raw':!![],'where':{'id':_0x13d828[_0x7448('0x48')]['id']}},_0x23e052={};_0x23e052['model']=_[_0x7448('0x35')](db['SquareOdbc'][_0x7448('0x2f')]);_0x23e052['query']=_[_0x7448('0x35')](_0x13d828[_0x7448('0x34')]);_0x23e052[_0x7448('0x36')]=_['intersection'](_0x23e052[_0x7448('0x33')],_0x23e052[_0x7448('0x34')]);_0x3a245c['attributes']=_[_0x7448('0x37')](_0x23e052[_0x7448('0x33')],qs[_0x7448('0x39')](_0x13d828[_0x7448('0x34')][_0x7448('0x39')]));_0x3a245c[_0x7448('0x38')]=_0x3a245c[_0x7448('0x38')][_0x7448('0x49')]?_0x3a245c[_0x7448('0x38')]:_0x23e052[_0x7448('0x33')];if(_0x13d828[_0x7448('0x34')][_0x7448('0x42')]){_0x3a245c[_0x7448('0x43')]=[{'all':!![]}];}_0x3a245c=_[_0x7448('0x3f')]({},_0x3a245c,_0x13d828['options']);return db[_0x7448('0x2e')][_0x7448('0x4a')](_0x3a245c)[_0x7448('0x27')](handleEntityNotFound(_0x11cf94,null))[_0x7448('0x27')](respondWithResult(_0x11cf94,null))[_0x7448('0x46')](handleError(_0x11cf94,null));};exports['create']=function(_0x592973,_0x54ec29){return db[_0x7448('0x2e')][_0x7448('0x4b')](_0x592973[_0x7448('0x4c')],{})[_0x7448('0x27')](function(_0x489a4e){var _0x468f6c=_0x592973[_0x7448('0x4d')][_0x7448('0x28')]({'plain':!![]});if(!_0x468f6c)throw new Error(_0x7448('0x4e'));if(_0x468f6c['role']===_0x7448('0x4d')){var _0x293df1=_0x489a4e[_0x7448('0x28')]({'plain':!![]});var _0x5536f2='ODBC';return db['UserProfileSection'][_0x7448('0x4a')]({'where':{'name':_0x5536f2,'userProfileId':_0x468f6c['userProfileId']},'raw':!![]})[_0x7448('0x27')](function(_0xb43eca){if(_0xb43eca&&_0xb43eca[_0x7448('0x4f')]===0x0){return db[_0x7448('0x2a')][_0x7448('0x4b')]({'name':_0x293df1[_0x7448('0x2b')],'resourceId':_0x293df1['id'],'type':_0xb43eca['name'],'sectionId':_0xb43eca['id']},{})[_0x7448('0x27')](function(){return _0x489a4e;});}else{return _0x489a4e;}})[_0x7448('0x46')](function(_0x20e16f){logger[_0x7448('0x50')](_0x7448('0x51'),_0x20e16f);throw _0x20e16f;});}return _0x489a4e;})['then'](respondWithResult(_0x54ec29,0xc9))[_0x7448('0x46')](handleError(_0x54ec29,null));};exports[_0x7448('0x26')]=function(_0x1116d1,_0x14acab){if(_0x1116d1['body']['id']){delete _0x1116d1[_0x7448('0x4c')]['id'];}return db[_0x7448('0x2e')][_0x7448('0x4a')]({'where':{'id':_0x1116d1[_0x7448('0x48')]['id']}})['then'](handleEntityNotFound(_0x14acab,null))[_0x7448('0x27')](saveUpdates(_0x1116d1['body'],null))['then'](respondWithResult(_0x14acab,null))[_0x7448('0x46')](handleError(_0x14acab,null));};exports['destroy']=function(_0x49ce4c,_0x471bac){return db[_0x7448('0x2e')][_0x7448('0x4a')]({'where':{'id':_0x49ce4c[_0x7448('0x48')]['id']}})[_0x7448('0x27')](handleEntityNotFound(_0x471bac,null))[_0x7448('0x27')](removeEntity(_0x471bac,null))['catch'](handleError(_0x471bac,null));};exports[_0x7448('0x52')]=function(_0x56b5b5,_0x11cf8d,_0x13deaa){var _0x1eba8b;return db['SquareOdbc']['find']({'where':{'id':_0x56b5b5[_0x7448('0x48')]['id']},'attributes':['id',_0x7448('0x53')]})[_0x7448('0x27')](handleEntityNotFound(_0x11cf8d,null))[_0x7448('0x27')](function(_0x5a8a62){if(_0x5a8a62){var _0x4b5245=require(_0x7448('0x54'))();_0x4b5245[_0x7448('0x55')](_0x5a8a62[_0x7448('0x53')]);_0x4b5245['closeSync']();return _0x5a8a62;}})['then'](respondWithResult(_0x11cf8d,null))[_0x7448('0x46')](handleError(_0x11cf8d,null));};
\ No newline at end of file
+var _0xe408=['destroy','error','stack','name','send','index','map','SquareOdbc','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','show','params','length','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','test','openSync','dsn','closeSync','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','get','ODBC'];(function(_0x280690,_0xebd39b){var _0x5e692d=function(_0xab16a6){while(--_0xab16a6){_0x280690['push'](_0x280690['shift']());}};_0x5e692d(++_0xebd39b);}(_0xe408,0x13a));var _0x8e40=function(_0x3e44fa,_0x75ed2a){_0x3e44fa=_0x3e44fa-0x0;var _0x2a0aba=_0xe408[_0x3e44fa];return _0x2a0aba;};'use strict';var emlformat=require(_0x8e40('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8e40('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8e40('0x2'));var moment=require(_0x8e40('0x3'));var BPromise=require(_0x8e40('0x4'));var Mustache=require(_0x8e40('0x5'));var util=require(_0x8e40('0x6'));var path=require(_0x8e40('0x7'));var sox=require(_0x8e40('0x8'));var csv=require(_0x8e40('0x9'));var ejs=require(_0x8e40('0xa'));var fs=require('fs');var fs_extra=require(_0x8e40('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x8e40('0xc'));var jsforce=require(_0x8e40('0xd'));var deskjs=require(_0x8e40('0xe'));var toCsv=require(_0x8e40('0x9'));var querystring=require(_0x8e40('0xf'));var Papa=require('papaparse');var Redis=require(_0x8e40('0x10'));var authService=require(_0x8e40('0x11'));var qs=require(_0x8e40('0x12'));var as=require(_0x8e40('0x13'));var hardwareService=require(_0x8e40('0x14'));var logger=require(_0x8e40('0x15'))(_0x8e40('0x16'));var utils=require('../../config/utils');var config=require(_0x8e40('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x8e40('0x18'))['db'];function respondWithStatusCode(_0x4f1db4,_0x623f6){_0x623f6=_0x623f6||0xcc;return function(_0x5c99ee){if(_0x5c99ee){return _0x4f1db4[_0x8e40('0x19')](_0x623f6);}return _0x4f1db4[_0x8e40('0x1a')](_0x623f6)[_0x8e40('0x1b')]();};}function respondWithResult(_0x54199f,_0x474501){_0x474501=_0x474501||0xc8;return function(_0x3d2792){if(_0x3d2792){return _0x54199f[_0x8e40('0x1a')](_0x474501)[_0x8e40('0x1c')](_0x3d2792);}};}function respondWithFilteredResult(_0x2120c1,_0x318ea5){return function(_0x558572){if(_0x558572){var _0x5cc6a2=typeof _0x318ea5[_0x8e40('0x1d')]===_0x8e40('0x1e')&&typeof _0x318ea5['limit']==='undefined';var _0x23feaa=_0x558572[_0x8e40('0x1f')];var _0x3f5bba=_0x5cc6a2?0x0:_0x318ea5['offset'];var _0x3ff3c8=_0x5cc6a2?_0x558572[_0x8e40('0x1f')]:_0x318ea5[_0x8e40('0x1d')]+_0x318ea5[_0x8e40('0x20')];var _0x26969a;if(_0x3ff3c8>=_0x23feaa){_0x3ff3c8=_0x23feaa;_0x26969a=0xc8;}else{_0x26969a=0xce;}_0x2120c1['status'](_0x26969a);return _0x2120c1[_0x8e40('0x21')](_0x8e40('0x22'),_0x3f5bba+'-'+_0x3ff3c8+'/'+_0x23feaa)[_0x8e40('0x1c')](_0x558572);}return null;};}function patchUpdates(_0x2e4505){return function(_0x5dd06a){try{jsonpatch[_0x8e40('0x23')](_0x5dd06a,_0x2e4505,!![]);}catch(_0x11f1f6){return BPromise[_0x8e40('0x24')](_0x11f1f6);}return _0x5dd06a[_0x8e40('0x25')]();};}function saveUpdates(_0x56ab05,_0x4c072b){return function(_0x4ab482){if(_0x4ab482){return _0x4ab482[_0x8e40('0x26')](_0x56ab05)[_0x8e40('0x27')](function(_0x4b4d9a){return _0x4b4d9a;});}return null;};}function removeEntity(_0x370ae3,_0x2684bf){return function(_0x4a2a08){if(_0x4a2a08){return _0x4a2a08['destroy']()['then'](function(){var _0x25ce39=_0x4a2a08[_0x8e40('0x28')]({'plain':!![]});var _0x257b53=_0x8e40('0x29');return db['UserProfileResource'][_0x8e40('0x2a')]({'where':{'type':_0x257b53,'resourceId':_0x25ce39['id']}})['then'](function(){return _0x4a2a08;});})[_0x8e40('0x27')](function(){_0x370ae3[_0x8e40('0x1a')](0xcc)[_0x8e40('0x1b')]();});}};}function handleEntityNotFound(_0x582b98,_0x4089e7){return function(_0xc13d9c){if(!_0xc13d9c){_0x582b98[_0x8e40('0x19')](0x194);}return _0xc13d9c;};}function handleError(_0x1de5ff,_0x1ca916){_0x1ca916=_0x1ca916||0x1f4;return function(_0x1a9de9){logger[_0x8e40('0x2b')](_0x1a9de9[_0x8e40('0x2c')]);if(_0x1a9de9[_0x8e40('0x2d')]){delete _0x1a9de9[_0x8e40('0x2d')];}_0x1de5ff[_0x8e40('0x1a')](_0x1ca916)[_0x8e40('0x2e')](_0x1a9de9);};}exports[_0x8e40('0x2f')]=function(_0x38b94b,_0x295c6a){var _0x1c4043={},_0x1c3072={},_0x30a3a3={'count':0x0,'rows':[]};var _0x40a22b=_[_0x8e40('0x30')](db[_0x8e40('0x31')][_0x8e40('0x32')],function(_0x31dbbb){return{'name':_0x31dbbb[_0x8e40('0x33')],'type':_0x31dbbb[_0x8e40('0x34')][_0x8e40('0x35')]};});_0x1c3072[_0x8e40('0x36')]=_[_0x8e40('0x30')](_0x40a22b,'name');_0x1c3072[_0x8e40('0x37')]=_[_0x8e40('0x38')](_0x38b94b['query']);_0x1c3072[_0x8e40('0x39')]=_[_0x8e40('0x3a')](_0x1c3072[_0x8e40('0x36')],_0x1c3072[_0x8e40('0x37')]);_0x1c4043[_0x8e40('0x3b')]=_[_0x8e40('0x3a')](_0x1c3072['model'],qs['fields'](_0x38b94b[_0x8e40('0x37')][_0x8e40('0x3c')]));_0x1c4043[_0x8e40('0x3b')]=_0x1c4043['attributes']['length']?_0x1c4043[_0x8e40('0x3b')]:_0x1c3072[_0x8e40('0x36')];if(!_0x38b94b[_0x8e40('0x37')]['hasOwnProperty'](_0x8e40('0x3d'))){_0x1c4043[_0x8e40('0x20')]=qs[_0x8e40('0x20')](_0x38b94b[_0x8e40('0x37')]['limit']);_0x1c4043[_0x8e40('0x1d')]=qs['offset'](_0x38b94b[_0x8e40('0x37')][_0x8e40('0x1d')]);}_0x1c4043[_0x8e40('0x3e')]=qs[_0x8e40('0x3f')](_0x38b94b[_0x8e40('0x37')][_0x8e40('0x3f')]);_0x1c4043[_0x8e40('0x40')]=qs['filters'](_[_0x8e40('0x41')](_0x38b94b[_0x8e40('0x37')],_0x1c3072[_0x8e40('0x39')]),_0x40a22b);if(_0x38b94b[_0x8e40('0x37')][_0x8e40('0x42')]){_0x1c4043[_0x8e40('0x40')]=_[_0x8e40('0x43')](_0x1c4043[_0x8e40('0x40')],{'$or':_[_0x8e40('0x30')](_0x40a22b,function(_0x59eee9){if(_0x59eee9[_0x8e40('0x34')]!==_0x8e40('0x44')){var _0xe9ab0d={};_0xe9ab0d[_0x59eee9['name']]={'$like':'%'+_0x38b94b['query'][_0x8e40('0x42')]+'%'};return _0xe9ab0d;}})});}_0x1c4043=_[_0x8e40('0x43')]({},_0x1c4043,_0x38b94b[_0x8e40('0x45')]);var _0x2b1047={'where':_0x1c4043[_0x8e40('0x40')]};return db[_0x8e40('0x31')]['count'](_0x2b1047)[_0x8e40('0x27')](function(_0x4a2693){_0x30a3a3[_0x8e40('0x1f')]=_0x4a2693;if(_0x38b94b[_0x8e40('0x37')][_0x8e40('0x46')]){_0x1c4043[_0x8e40('0x47')]=[{'all':!![]}];}return db[_0x8e40('0x31')]['findAll'](_0x1c4043);})[_0x8e40('0x27')](function(_0x15b782){_0x30a3a3['rows']=_0x15b782;return _0x30a3a3;})[_0x8e40('0x27')](respondWithFilteredResult(_0x295c6a,_0x1c4043))['catch'](handleError(_0x295c6a,null));};exports[_0x8e40('0x48')]=function(_0x3dd63d,_0x175e02){var _0x15458b={'raw':!![],'where':{'id':_0x3dd63d[_0x8e40('0x49')]['id']}},_0x2c3945={};_0x2c3945[_0x8e40('0x36')]=_[_0x8e40('0x38')](db[_0x8e40('0x31')][_0x8e40('0x32')]);_0x2c3945[_0x8e40('0x37')]=_[_0x8e40('0x38')](_0x3dd63d[_0x8e40('0x37')]);_0x2c3945['filters']=_['intersection'](_0x2c3945[_0x8e40('0x36')],_0x2c3945[_0x8e40('0x37')]);_0x15458b[_0x8e40('0x3b')]=_['intersection'](_0x2c3945[_0x8e40('0x36')],qs[_0x8e40('0x3c')](_0x3dd63d[_0x8e40('0x37')][_0x8e40('0x3c')]));_0x15458b['attributes']=_0x15458b[_0x8e40('0x3b')][_0x8e40('0x4a')]?_0x15458b[_0x8e40('0x3b')]:_0x2c3945['model'];if(_0x3dd63d[_0x8e40('0x37')][_0x8e40('0x46')]){_0x15458b[_0x8e40('0x47')]=[{'all':!![]}];}_0x15458b=_['merge']({},_0x15458b,_0x3dd63d['options']);return db[_0x8e40('0x31')]['find'](_0x15458b)[_0x8e40('0x27')](handleEntityNotFound(_0x175e02,null))['then'](respondWithResult(_0x175e02,null))[_0x8e40('0x4b')](handleError(_0x175e02,null));};exports[_0x8e40('0x4c')]=function(_0x244104,_0x3aeb29){return db[_0x8e40('0x31')][_0x8e40('0x4c')](_0x244104[_0x8e40('0x4d')],{})[_0x8e40('0x27')](function(_0x342fa4){var _0x24237a=_0x244104[_0x8e40('0x4e')][_0x8e40('0x28')]({'plain':!![]});if(!_0x24237a)throw new Error(_0x8e40('0x4f'));if(_0x24237a[_0x8e40('0x50')]===_0x8e40('0x4e')){var _0x260a46=_0x342fa4[_0x8e40('0x28')]({'plain':!![]});var _0x2fe063=_0x8e40('0x29');return db[_0x8e40('0x51')][_0x8e40('0x52')]({'where':{'name':_0x2fe063,'userProfileId':_0x24237a[_0x8e40('0x53')]},'raw':!![]})['then'](function(_0x38ae9a){if(_0x38ae9a&&_0x38ae9a['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x260a46[_0x8e40('0x2d')],'resourceId':_0x260a46['id'],'type':_0x38ae9a[_0x8e40('0x2d')],'sectionId':_0x38ae9a['id']},{})[_0x8e40('0x27')](function(){return _0x342fa4;});}else{return _0x342fa4;}})[_0x8e40('0x4b')](function(_0x33c0e6){logger['error'](_0x8e40('0x54'),_0x33c0e6);throw _0x33c0e6;});}return _0x342fa4;})[_0x8e40('0x27')](respondWithResult(_0x3aeb29,0xc9))[_0x8e40('0x4b')](handleError(_0x3aeb29,null));};exports[_0x8e40('0x26')]=function(_0x46ea23,_0x46d473){if(_0x46ea23[_0x8e40('0x4d')]['id']){delete _0x46ea23[_0x8e40('0x4d')]['id'];}return db['SquareOdbc'][_0x8e40('0x52')]({'where':{'id':_0x46ea23['params']['id']}})['then'](handleEntityNotFound(_0x46d473,null))[_0x8e40('0x27')](saveUpdates(_0x46ea23[_0x8e40('0x4d')],null))['then'](respondWithResult(_0x46d473,null))[_0x8e40('0x4b')](handleError(_0x46d473,null));};exports[_0x8e40('0x2a')]=function(_0x4718d0,_0x3743c5){return db[_0x8e40('0x31')][_0x8e40('0x52')]({'where':{'id':_0x4718d0[_0x8e40('0x49')]['id']}})[_0x8e40('0x27')](handleEntityNotFound(_0x3743c5,null))[_0x8e40('0x27')](removeEntity(_0x3743c5,null))['catch'](handleError(_0x3743c5,null));};exports[_0x8e40('0x55')]=function(_0x5a8ce0,_0x4ad733,_0x24c07d){var _0x49b321;return db[_0x8e40('0x31')][_0x8e40('0x52')]({'where':{'id':_0x5a8ce0[_0x8e40('0x49')]['id']},'attributes':['id','dsn']})[_0x8e40('0x27')](handleEntityNotFound(_0x4ad733,null))[_0x8e40('0x27')](function(_0x53a462){if(_0x53a462){var _0x427dae=require('odbc')();_0x427dae[_0x8e40('0x56')](_0x53a462[_0x8e40('0x57')]);_0x427dae[_0x8e40('0x58')]();return _0x53a462;}})['then'](respondWithResult(_0x4ad733,null))['catch'](handleError(_0x4ad733,null));};
\ No newline at end of file
index 31a8e6d..44db302 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa92=['./squareOdbc.attributes','exports','SquareOdbc','square_odbc','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x50007c,_0x1cbf11){var _0x5c1ec7=function(_0x52d038){while(--_0x52d038){_0x50007c['push'](_0x50007c['shift']());}};_0x5c1ec7(++_0x1cbf11);}(_0xaa92,0x100));var _0x2aa9=function(_0x34bc94,_0x74f0fd){_0x34bc94=_0x34bc94-0x0;var _0xee41e7=_0xaa92[_0x34bc94];return _0xee41e7;};'use strict';var _=require('lodash');var util=require(_0x2aa9('0x0'));var logger=require(_0x2aa9('0x1'))(_0x2aa9('0x2'));var moment=require(_0x2aa9('0x3'));var BPromise=require('bluebird');var rp=require(_0x2aa9('0x4'));var fs=require('fs');var path=require(_0x2aa9('0x5'));var rimraf=require(_0x2aa9('0x6'));var config=require(_0x2aa9('0x7'));var attributes=require(_0x2aa9('0x8'));module[_0x2aa9('0x9')]=function(_0x5d5076,_0x5f17b7){return _0x5d5076['define'](_0x2aa9('0xa'),attributes,{'tableName':_0x2aa9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x446f=['api','moment','bluebird','path','rimraf','../../config/environment','./squareOdbc.attributes','exports','define','SquareOdbc','square_odbc','lodash'];(function(_0x1d66d7,_0x2d595e){var _0x47a0b2=function(_0x3a4a9b){while(--_0x3a4a9b){_0x1d66d7['push'](_0x1d66d7['shift']());}};_0x47a0b2(++_0x2d595e);}(_0x446f,0x1a3));var _0xf446=function(_0x5b4b13,_0x104c49){_0x5b4b13=_0x5b4b13-0x0;var _0x391be5=_0x446f[_0x5b4b13];return _0x391be5;};'use strict';var _=require(_0xf446('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf446('0x1'));var moment=require(_0xf446('0x2'));var BPromise=require(_0xf446('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf446('0x4'));var rimraf=require(_0xf446('0x5'));var config=require(_0xf446('0x6'));var attributes=require(_0xf446('0x7'));module[_0xf446('0x8')]=function(_0x23047f,_0x30cff6){return _0x23047f[_0xf446('0x9')](_0xf446('0xa'),attributes,{'tableName':_0xf446('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e07cd3a..8895fef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2256=['info','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','ShowSquareOdbc','SquareOdbc','find','raw','options','where','attributes','map','include','model','catch','lodash','util','ioredis','../../config/logger','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x4c176f,_0x596b41){var _0x30ff66=function(_0x22c62d){while(--_0x22c62d){_0x4c176f['push'](_0x4c176f['shift']());}};_0x30ff66(++_0x596b41);}(_0x2256,0x1e6));var _0x6225=function(_0xcc5058,_0x1944c9){_0xcc5058=_0xcc5058-0x0;var _0x2c2cd2=_0x2256[_0xcc5058];return _0x2c2cd2;};'use strict';var _=require(_0x6225('0x0'));var util=require(_0x6225('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6225('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x6225('0x3'))('rpc');var config=require(_0x6225('0x4'));var jayson=require(_0x6225('0x5'));var client=jayson[_0x6225('0x6')][_0x6225('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x371c5c,_0x44e7c9,_0x294438){return new BPromise(function(_0xba9478,_0x43bde9){return client[_0x6225('0x8')](_0x371c5c,_0x294438)[_0x6225('0x9')](function(_0x293ea1){logger[_0x6225('0xa')](_0x6225('0xb'),_0x44e7c9,_0x6225('0xc'));logger[_0x6225('0xd')](_0x6225('0xe'),_0x44e7c9,_0x6225('0xc'),JSON[_0x6225('0xf')](_0x293ea1));if(_0x293ea1['error']){if(_0x293ea1[_0x6225('0x10')][_0x6225('0x11')]===0x1f4){logger[_0x6225('0x10')](_0x6225('0xb'),_0x44e7c9,_0x293ea1['error'][_0x6225('0x12')]);return _0x43bde9(_0x293ea1['error'][_0x6225('0x12')]);}logger[_0x6225('0x10')](_0x6225('0xb'),_0x44e7c9,_0x293ea1[_0x6225('0x10')][_0x6225('0x12')]);return _0xba9478(_0x293ea1[_0x6225('0x10')][_0x6225('0x12')]);}else{logger[_0x6225('0xa')](_0x6225('0xb'),_0x44e7c9,'request\x20sent');_0xba9478(_0x293ea1[_0x6225('0x13')][_0x6225('0x12')]);}})['catch'](function(_0x337bc2){logger[_0x6225('0x10')](_0x6225('0xb'),_0x44e7c9,_0x337bc2);_0x43bde9(_0x337bc2);});});}exports[_0x6225('0x14')]=function(_0x3c1436){var _0x243535=this;return new Promise(function(_0x527d9b,_0x593447){return db[_0x6225('0x15')][_0x6225('0x16')]({'raw':_0x3c1436['options']?_0x3c1436['options'][_0x6225('0x17')]===undefined?!![]:![]:!![],'where':_0x3c1436[_0x6225('0x18')]?_0x3c1436['options'][_0x6225('0x19')]||null:null,'attributes':_0x3c1436['options']?_0x3c1436['options'][_0x6225('0x1a')]||null:null,'include':_0x3c1436[_0x6225('0x18')]?_0x3c1436[_0x6225('0x18')]['include']?_[_0x6225('0x1b')](_0x3c1436[_0x6225('0x18')][_0x6225('0x1c')],function(_0x13b0c5){return{'model':db[_0x13b0c5['model']],'as':_0x13b0c5['as'],'attributes':_0x13b0c5[_0x6225('0x1a')],'include':_0x13b0c5[_0x6225('0x1c')]?_['map'](_0x13b0c5[_0x6225('0x1c')],function(_0x45e477){return{'model':db[_0x45e477[_0x6225('0x1d')]],'as':_0x45e477['as'],'attributes':_0x45e477['attributes'],'include':_0x45e477[_0x6225('0x1c')]?_[_0x6225('0x1b')](_0x45e477[_0x6225('0x1c')],function(_0x5e7b7b){return{'model':db[_0x5e7b7b[_0x6225('0x1d')]],'as':_0x5e7b7b['as'],'attributes':_0x5e7b7b['attributes']};}):[]};}):[]};}):[]:[]})[_0x6225('0x9')](function(_0x35292b){logger[_0x6225('0xa')](_0x6225('0x14'),_0x3c1436);logger[_0x6225('0xd')](_0x6225('0x14'),_0x3c1436,JSON['stringify'](_0x35292b));_0x527d9b(_0x35292b);})[_0x6225('0x1e')](function(_0x561173){logger['error'](_0x6225('0x14'),_0x561173[_0x6225('0x12')],_0x3c1436);_0x593447(_0x243535[_0x6225('0x10')](0x1f4,_0x561173[_0x6225('0x12')]));});});};
\ No newline at end of file
+var _0x0d00=['stringify','error','code','message','SquareOdbc,\x20%s,\x20%s','result','catch','ShowSquareOdbc','SquareOdbc','find','options','attributes','map','include','model','debug','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent'];(function(_0x193d1a,_0x249662){var _0x35399a=function(_0x582a52){while(--_0x582a52){_0x193d1a['push'](_0x193d1a['shift']());}};_0x35399a(++_0x249662);}(_0x0d00,0x15a));var _0x00d0=function(_0x3f3f06,_0x581e5b){_0x3f3f06=_0x3f3f06-0x0;var _0x140feb=_0x0d00[_0x3f3f06];return _0x140feb;};'use strict';var _=require('lodash');var util=require(_0x00d0('0x0'));var moment=require('moment');var BPromise=require(_0x00d0('0x1'));var rs=require(_0x00d0('0x2'));var fs=require('fs');var Redis=require(_0x00d0('0x3'));var db=require(_0x00d0('0x4'))['db'];var utils=require(_0x00d0('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x00d0('0x6'));var jayson=require(_0x00d0('0x7'));var client=jayson[_0x00d0('0x8')][_0x00d0('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4c5419,_0x572be4,_0x350372){return new BPromise(function(_0xfd259d,_0x3de5e0){return client[_0x00d0('0xa')](_0x4c5419,_0x350372)[_0x00d0('0xb')](function(_0x6e426b){logger[_0x00d0('0xc')]('SquareOdbc,\x20%s,\x20%s',_0x572be4,_0x00d0('0xd'));logger['debug']('SquareOdbc,\x20%s,\x20%s,\x20%s',_0x572be4,_0x00d0('0xd'),JSON[_0x00d0('0xe')](_0x6e426b));if(_0x6e426b[_0x00d0('0xf')]){if(_0x6e426b[_0x00d0('0xf')][_0x00d0('0x10')]===0x1f4){logger[_0x00d0('0xf')]('SquareOdbc,\x20%s,\x20%s',_0x572be4,_0x6e426b[_0x00d0('0xf')][_0x00d0('0x11')]);return _0x3de5e0(_0x6e426b['error'][_0x00d0('0x11')]);}logger[_0x00d0('0xf')]('SquareOdbc,\x20%s,\x20%s',_0x572be4,_0x6e426b[_0x00d0('0xf')][_0x00d0('0x11')]);return _0xfd259d(_0x6e426b[_0x00d0('0xf')][_0x00d0('0x11')]);}else{logger[_0x00d0('0xc')](_0x00d0('0x12'),_0x572be4,'request\x20sent');_0xfd259d(_0x6e426b[_0x00d0('0x13')][_0x00d0('0x11')]);}})[_0x00d0('0x14')](function(_0x1e6bca){logger[_0x00d0('0xf')](_0x00d0('0x12'),_0x572be4,_0x1e6bca);_0x3de5e0(_0x1e6bca);});});}exports[_0x00d0('0x15')]=function(_0x541910){var _0x2ee12d=this;return new Promise(function(_0x41bebb,_0xcb058d){return db[_0x00d0('0x16')][_0x00d0('0x17')]({'raw':_0x541910[_0x00d0('0x18')]?_0x541910['options']['raw']===undefined?!![]:![]:!![],'where':_0x541910[_0x00d0('0x18')]?_0x541910[_0x00d0('0x18')]['where']||null:null,'attributes':_0x541910[_0x00d0('0x18')]?_0x541910['options'][_0x00d0('0x19')]||null:null,'include':_0x541910[_0x00d0('0x18')]?_0x541910[_0x00d0('0x18')]['include']?_[_0x00d0('0x1a')](_0x541910[_0x00d0('0x18')][_0x00d0('0x1b')],function(_0x3bd3bf){return{'model':db[_0x3bd3bf['model']],'as':_0x3bd3bf['as'],'attributes':_0x3bd3bf[_0x00d0('0x19')],'include':_0x3bd3bf[_0x00d0('0x1b')]?_[_0x00d0('0x1a')](_0x3bd3bf['include'],function(_0x34cc9f){return{'model':db[_0x34cc9f[_0x00d0('0x1c')]],'as':_0x34cc9f['as'],'attributes':_0x34cc9f[_0x00d0('0x19')],'include':_0x34cc9f[_0x00d0('0x1b')]?_[_0x00d0('0x1a')](_0x34cc9f[_0x00d0('0x1b')],function(_0x3f0ab3){return{'model':db[_0x3f0ab3[_0x00d0('0x1c')]],'as':_0x3f0ab3['as'],'attributes':_0x3f0ab3[_0x00d0('0x19')]};}):[]};}):[]};}):[]:[]})[_0x00d0('0xb')](function(_0x4d8b2a){logger[_0x00d0('0xc')](_0x00d0('0x15'),_0x541910);logger[_0x00d0('0x1d')]('ShowSquareOdbc',_0x541910,JSON[_0x00d0('0xe')](_0x4d8b2a));_0x41bebb(_0x4d8b2a);})[_0x00d0('0x14')](function(_0x33241c){logger['error'](_0x00d0('0x15'),_0x33241c['message'],_0x541910);_0xcb058d(_0x2ee12d[_0x00d0('0xf')](0x1f4,_0x33241c[_0x00d0('0x11')]));});});};
\ No newline at end of file
index ea18910..ad85235 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15da=['/:id','update','delete','removeUsers','exports','util','path','Router','../../components/interaction/service','../../config/environment','./squareProject.controller','get','isAuthenticated','index','show','/:id/users','getUsers','post','create','addUsers','put'];(function(_0x44366b,_0x5330d7){var _0x1ab354=function(_0x50ef6a){while(--_0x50ef6a){_0x44366b['push'](_0x44366b['shift']());}};_0x1ab354(++_0x5330d7);}(_0x15da,0x98));var _0xa15d=function(_0x43139e,_0x762629){_0x43139e=_0x43139e-0x0;var _0x2bc838=_0x15da[_0x43139e];return _0x2bc838;};'use strict';var multer=require('multer');var util=require(_0xa15d('0x0'));var path=require(_0xa15d('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa15d('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xa15d('0x3'));var config=require(_0xa15d('0x4'));var controller=require(_0xa15d('0x5'));router[_0xa15d('0x6')]('/',auth[_0xa15d('0x7')](),controller[_0xa15d('0x8')]);router[_0xa15d('0x6')]('/:id',auth[_0xa15d('0x7')](),controller[_0xa15d('0x9')]);router[_0xa15d('0x6')](_0xa15d('0xa'),auth[_0xa15d('0x7')](),controller[_0xa15d('0xb')]);router[_0xa15d('0xc')]('/',auth[_0xa15d('0x7')](),controller[_0xa15d('0xd')]);router[_0xa15d('0xc')]('/:id/users',auth[_0xa15d('0x7')](),controller[_0xa15d('0xe')]);router[_0xa15d('0xf')](_0xa15d('0x10'),auth[_0xa15d('0x7')](),controller[_0xa15d('0x11')]);router['delete']('/:id',auth[_0xa15d('0x7')](),controller['destroy']);router[_0xa15d('0x12')]('/:id/users',auth['isAuthenticated'](),controller[_0xa15d('0x13')]);module[_0xa15d('0x14')]=router;
\ No newline at end of file
+var _0x8286=['/:id','show','/:id/users','getUsers','post','create','update','destroy','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareProject.controller','isAuthenticated','index'];(function(_0x279dc6,_0x347d85){var _0xf4c84=function(_0x5f1dd1){while(--_0x5f1dd1){_0x279dc6['push'](_0x279dc6['shift']());}};_0xf4c84(++_0x347d85);}(_0x8286,0x66));var _0x6828=function(_0x55b920,_0x247078){_0x55b920=_0x55b920-0x0;var _0x5d9fd0=_0x8286[_0x55b920];return _0x5d9fd0;};'use strict';var multer=require(_0x6828('0x0'));var util=require(_0x6828('0x1'));var path=require(_0x6828('0x2'));var timeout=require(_0x6828('0x3'));var express=require(_0x6828('0x4'));var router=express[_0x6828('0x5')]();var fs_extra=require(_0x6828('0x6'));var auth=require(_0x6828('0x7'));var interaction=require(_0x6828('0x8'));var config=require(_0x6828('0x9'));var controller=require(_0x6828('0xa'));router['get']('/',auth[_0x6828('0xb')](),controller[_0x6828('0xc')]);router['get'](_0x6828('0xd'),auth[_0x6828('0xb')](),controller[_0x6828('0xe')]);router['get'](_0x6828('0xf'),auth[_0x6828('0xb')](),controller[_0x6828('0x10')]);router[_0x6828('0x11')]('/',auth[_0x6828('0xb')](),controller[_0x6828('0x12')]);router[_0x6828('0x11')](_0x6828('0xf'),auth[_0x6828('0xb')](),controller['addUsers']);router['put'](_0x6828('0xd'),auth['isAuthenticated'](),controller[_0x6828('0x13')]);router['delete'](_0x6828('0xd'),auth[_0x6828('0xb')](),controller[_0x6828('0x14')]);router[_0x6828('0x15')](_0x6828('0xf'),auth[_0x6828('0xb')](),controller['removeUsers']);module[_0x6828('0x16')]=router;
\ No newline at end of file
index 2473980..426761a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2317=['toString','DATE','exports','STRING','TEXT','BLOB','getDataValue','preproduction','utf8','long','production'];(function(_0x31873d,_0x1f0849){var _0x516992=function(_0x434dfd){while(--_0x434dfd){_0x31873d['push'](_0x31873d['shift']());}};_0x516992(++_0x1f0849);}(_0x2317,0x16d));var _0x7231=function(_0x354970,_0x1187f4){_0x354970=_0x354970-0x0;var _0x54e9d2=_0x2317[_0x354970];return _0x54e9d2;};'use strict';var Sequelize=require('sequelize');module[_0x7231('0x0')]={'name':{'type':Sequelize[_0x7231('0x1')],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0x7231('0x1')]},'notes':{'type':Sequelize[_0x7231('0x2')]},'preproduction':{'type':Sequelize[_0x7231('0x3')]('long'),'get':function(){if(this[_0x7231('0x4')]('preproduction')){return this[_0x7231('0x4')](_0x7231('0x5'))['toString'](_0x7231('0x6'));}}},'production':{'type':Sequelize[_0x7231('0x3')](_0x7231('0x7')),'get':function(){if(this[_0x7231('0x4')]('production')){return this[_0x7231('0x4')](_0x7231('0x8'))[_0x7231('0x9')](_0x7231('0x6'));}}},'savedAt':{'type':Sequelize['DATE']},'publishedAt':{'type':Sequelize[_0x7231('0xa')]}};
\ No newline at end of file
+var _0xd993=['preproduction','toString','utf8','production','getDataValue','DATE','exports','STRING','name','TEXT','BLOB','long'];(function(_0x5471ec,_0x1ce81a){var _0x121d4c=function(_0xefb655){while(--_0xefb655){_0x5471ec['push'](_0x5471ec['shift']());}};_0x121d4c(++_0x1ce81a);}(_0xd993,0x19e));var _0x3d99=function(_0x2ae469,_0xbb37f){_0x2ae469=_0x2ae469-0x0;var _0x30b677=_0xd993[_0x2ae469];return _0x30b677;};'use strict';var Sequelize=require('sequelize');module[_0x3d99('0x0')]={'name':{'type':Sequelize[_0x3d99('0x1')],'unique':_0x3d99('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x3d99('0x1')]},'notes':{'type':Sequelize[_0x3d99('0x3')]},'preproduction':{'type':Sequelize[_0x3d99('0x4')](_0x3d99('0x5')),'get':function(){if(this['getDataValue'](_0x3d99('0x6'))){return this['getDataValue'](_0x3d99('0x6'))[_0x3d99('0x7')](_0x3d99('0x8'));}}},'production':{'type':Sequelize['BLOB'](_0x3d99('0x5')),'get':function(){if(this['getDataValue'](_0x3d99('0x9'))){return this[_0x3d99('0xa')]('production')[_0x3d99('0x7')](_0x3d99('0x8'));}}},'savedAt':{'type':Sequelize['DATE']},'publishedAt':{'type':Sequelize[_0x3d99('0xb')]}};
\ No newline at end of file
index 40de793..86135bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30c6=['create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','find','addUsers','ids','omit','removeUsers','isArray','emit','userSquareProject:remove','getUsers','findOne','sort','filter','eml-format','zip-dir','fast-json-patch','request-promise','moment','util','sox','ejs','fs-extra','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./squareProject.socket','sendStatus','status','end','json','undefined','count','set','apply','reject','save','update','then','get','SquareProjects','UserProfileResource','destroy','error','stack','name','send','index','SquareProject','rawAttributes','fieldName','key','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','offset','order','where','pick','merge','type','VIRTUAL','options','includeAll','include','findAll','catch','show','params','keys','length'];(function(_0x560238,_0x9cc05){var _0x40ef6f=function(_0x7e2b72){while(--_0x7e2b72){_0x560238['push'](_0x560238['shift']());}};_0x40ef6f(++_0x9cc05);}(_0x30c6,0x13b));var _0x630c=function(_0x29e097,_0x204fb5){_0x29e097=_0x29e097-0x0;var _0x24c620=_0x30c6[_0x29e097];return _0x24c620;};'use strict';var emlformat=require(_0x630c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x630c('0x1'));var jsonpatch=require(_0x630c('0x2'));var rp=require(_0x630c('0x3'));var moment=require(_0x630c('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x630c('0x5'));var path=require('path');var sox=require(_0x630c('0x6'));var csv=require('to-csv');var ejs=require(_0x630c('0x7'));var fs=require('fs');var fs_extra=require(_0x630c('0x8'));var _=require('lodash');var squel=require(_0x630c('0x9'));var crypto=require(_0x630c('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x630c('0xb'));var toCsv=require(_0x630c('0xc'));var querystring=require(_0x630c('0xd'));var Papa=require(_0x630c('0xe'));var Redis=require(_0x630c('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x630c('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x630c('0x11'));var utils=require('../../config/utils');var config=require(_0x630c('0x12'));var licenseUtil=require(_0x630c('0x13'));var db=require(_0x630c('0x14'))['db'];config['redis']=_[_0x630c('0x15')](config[_0x630c('0x16')],{'host':_0x630c('0x17'),'port':0x18eb});var socket=require(_0x630c('0x18'))(new Redis(config['redis']));require(_0x630c('0x19'))['register'](socket);function respondWithStatusCode(_0x116141,_0x5587a2){_0x5587a2=_0x5587a2||0xcc;return function(_0x244495){if(_0x244495){return _0x116141[_0x630c('0x1a')](_0x5587a2);}return _0x116141[_0x630c('0x1b')](_0x5587a2)[_0x630c('0x1c')]();};}function respondWithResult(_0x1cbfc9,_0x42f523){_0x42f523=_0x42f523||0xc8;return function(_0x4ee9cf){if(_0x4ee9cf){return _0x1cbfc9[_0x630c('0x1b')](_0x42f523)[_0x630c('0x1d')](_0x4ee9cf);}};}function respondWithFilteredResult(_0x47255c,_0x176185){return function(_0x5f13a7){if(_0x5f13a7){var _0x59bddb=typeof _0x176185['offset']===_0x630c('0x1e')&&typeof _0x176185['limit']==='undefined';var _0x691c43=_0x5f13a7[_0x630c('0x1f')];var _0x14830f=_0x59bddb?0x0:_0x176185['offset'];var _0x1d8681=_0x59bddb?_0x5f13a7[_0x630c('0x1f')]:_0x176185['offset']+_0x176185['limit'];var _0x6a311e;if(_0x1d8681>=_0x691c43){_0x1d8681=_0x691c43;_0x6a311e=0xc8;}else{_0x6a311e=0xce;}_0x47255c['status'](_0x6a311e);return _0x47255c[_0x630c('0x20')]('Content-Range',_0x14830f+'-'+_0x1d8681+'/'+_0x691c43)['json'](_0x5f13a7);}return null;};}function patchUpdates(_0x185dd7){return function(_0x40190a){try{jsonpatch[_0x630c('0x21')](_0x40190a,_0x185dd7,!![]);}catch(_0x280498){return BPromise[_0x630c('0x22')](_0x280498);}return _0x40190a[_0x630c('0x23')]();};}function saveUpdates(_0x5abd63,_0x4521e7){return function(_0x6760c6){if(_0x6760c6){return _0x6760c6[_0x630c('0x24')](_0x5abd63)['then'](function(_0x2dab07){return _0x2dab07;});}return null;};}function removeEntity(_0x37b2f0,_0x71f12f){return function(_0x47b6cb){if(_0x47b6cb){return _0x47b6cb['destroy']()[_0x630c('0x25')](function(){var _0x142846=_0x47b6cb[_0x630c('0x26')]({'plain':!![]});var _0x5c56d9=_0x630c('0x27');return db[_0x630c('0x28')][_0x630c('0x29')]({'where':{'type':_0x5c56d9,'resourceId':_0x142846['id']}})[_0x630c('0x25')](function(){return _0x47b6cb;});})[_0x630c('0x25')](function(){_0x37b2f0['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x567500,_0xddd567){return function(_0x2f5256){if(!_0x2f5256){_0x567500[_0x630c('0x1a')](0x194);}return _0x2f5256;};}function handleError(_0x1011c4,_0x246916){_0x246916=_0x246916||0x1f4;return function(_0x3d366b){logger[_0x630c('0x2a')](_0x3d366b[_0x630c('0x2b')]);if(_0x3d366b[_0x630c('0x2c')]){delete _0x3d366b[_0x630c('0x2c')];}_0x1011c4[_0x630c('0x1b')](_0x246916)[_0x630c('0x2d')](_0x3d366b);};}exports[_0x630c('0x2e')]=function(_0x3ed6cd,_0x6b93b8){var _0x3bab49={},_0x66e89e={},_0x5a52da={'count':0x0,'rows':[]};var _0x63ac=_['map'](db[_0x630c('0x2f')][_0x630c('0x30')],function(_0x2d6a6f){return{'name':_0x2d6a6f[_0x630c('0x31')],'type':_0x2d6a6f['type'][_0x630c('0x32')]};});_0x66e89e[_0x630c('0x33')]=_[_0x630c('0x34')](_0x63ac,_0x630c('0x2c'));_0x66e89e[_0x630c('0x35')]=_['keys'](_0x3ed6cd['query']);_0x66e89e[_0x630c('0x36')]=_[_0x630c('0x37')](_0x66e89e[_0x630c('0x33')],_0x66e89e[_0x630c('0x35')]);_0x3bab49[_0x630c('0x38')]=_[_0x630c('0x37')](_0x66e89e[_0x630c('0x33')],qs[_0x630c('0x39')](_0x3ed6cd[_0x630c('0x35')]['fields']));_0x3bab49[_0x630c('0x38')]=_0x3bab49[_0x630c('0x38')]['length']?_0x3bab49['attributes']:_0x66e89e['model'];if(!_0x3ed6cd[_0x630c('0x35')][_0x630c('0x3a')](_0x630c('0x3b'))){_0x3bab49['limit']=qs[_0x630c('0x3c')](_0x3ed6cd[_0x630c('0x35')]['limit']);_0x3bab49['offset']=qs['offset'](_0x3ed6cd['query'][_0x630c('0x3d')]);}_0x3bab49[_0x630c('0x3e')]=qs['sort'](_0x3ed6cd[_0x630c('0x35')]['sort']);_0x3bab49[_0x630c('0x3f')]=qs[_0x630c('0x36')](_[_0x630c('0x40')](_0x3ed6cd[_0x630c('0x35')],_0x66e89e[_0x630c('0x36')]),_0x63ac);if(_0x3ed6cd[_0x630c('0x35')]['filter']){_0x3bab49['where']=_[_0x630c('0x41')](_0x3bab49[_0x630c('0x3f')],{'$or':_[_0x630c('0x34')](_0x63ac,function(_0xc6b03f){if(_0xc6b03f[_0x630c('0x42')]!==_0x630c('0x43')){var _0x5b15a5={};_0x5b15a5[_0xc6b03f[_0x630c('0x2c')]]={'$like':'%'+_0x3ed6cd[_0x630c('0x35')]['filter']+'%'};return _0x5b15a5;}})});}_0x3bab49=_[_0x630c('0x41')]({},_0x3bab49,_0x3ed6cd[_0x630c('0x44')]);var _0x32d95c={'where':_0x3bab49[_0x630c('0x3f')]};return db[_0x630c('0x2f')][_0x630c('0x1f')](_0x32d95c)[_0x630c('0x25')](function(_0xbbf4aa){_0x5a52da['count']=_0xbbf4aa;if(_0x3ed6cd[_0x630c('0x35')][_0x630c('0x45')]){_0x3bab49[_0x630c('0x46')]=[{'all':!![]}];}return db[_0x630c('0x2f')][_0x630c('0x47')](_0x3bab49);})[_0x630c('0x25')](function(_0x1b54f3){_0x5a52da['rows']=_0x1b54f3;return _0x5a52da;})['then'](respondWithFilteredResult(_0x6b93b8,_0x3bab49))[_0x630c('0x48')](handleError(_0x6b93b8,null));};exports[_0x630c('0x49')]=function(_0xfbf58d,_0x31beba){var _0x3b2254={'raw':![],'where':{'id':_0xfbf58d[_0x630c('0x4a')]['id']}},_0x1e0725={};_0x1e0725[_0x630c('0x33')]=_[_0x630c('0x4b')](db[_0x630c('0x2f')][_0x630c('0x30')]);_0x1e0725[_0x630c('0x35')]=_[_0x630c('0x4b')](_0xfbf58d[_0x630c('0x35')]);_0x1e0725[_0x630c('0x36')]=_[_0x630c('0x37')](_0x1e0725[_0x630c('0x33')],_0x1e0725[_0x630c('0x35')]);_0x3b2254[_0x630c('0x38')]=_[_0x630c('0x37')](_0x1e0725['model'],qs[_0x630c('0x39')](_0xfbf58d[_0x630c('0x35')][_0x630c('0x39')]));_0x3b2254[_0x630c('0x38')]=_0x3b2254[_0x630c('0x38')][_0x630c('0x4c')]?_0x3b2254[_0x630c('0x38')]:_0x1e0725[_0x630c('0x33')];if(_0xfbf58d[_0x630c('0x35')][_0x630c('0x45')]){_0x3b2254[_0x630c('0x46')]=[{'all':!![]}];}_0x3b2254=_['merge']({},_0x3b2254,_0xfbf58d[_0x630c('0x44')]);return db[_0x630c('0x2f')]['find'](_0x3b2254)[_0x630c('0x25')](handleEntityNotFound(_0x31beba,null))[_0x630c('0x25')](respondWithResult(_0x31beba,null))[_0x630c('0x48')](handleError(_0x31beba,null));};exports[_0x630c('0x4d')]=function(_0x23597f,_0x426bcb){return db['SquareProject'][_0x630c('0x4d')](_0x23597f['body'],{})['then'](function(_0x2427c1){var _0x4c75aa=_0x23597f[_0x630c('0x4e')][_0x630c('0x26')]({'plain':!![]});if(!_0x4c75aa)throw new Error(_0x630c('0x4f'));if(_0x4c75aa[_0x630c('0x50')]==='user'){var _0xb5907a=_0x2427c1[_0x630c('0x26')]({'plain':!![]});var _0x313135=_0x630c('0x27');return db[_0x630c('0x51')]['find']({'where':{'name':_0x313135,'userProfileId':_0x4c75aa[_0x630c('0x52')]},'raw':!![]})[_0x630c('0x25')](function(_0x38516a){if(_0x38516a&&_0x38516a[_0x630c('0x53')]===0x0){return db[_0x630c('0x28')][_0x630c('0x4d')]({'name':_0xb5907a[_0x630c('0x2c')],'resourceId':_0xb5907a['id'],'type':_0x38516a[_0x630c('0x2c')],'sectionId':_0x38516a['id']},{})['then'](function(){return _0x2427c1;});}else{return _0x2427c1;}})['catch'](function(_0x3e5352){logger['error'](_0x630c('0x54'),_0x3e5352);throw _0x3e5352;});}return _0x2427c1;})[_0x630c('0x25')](respondWithResult(_0x426bcb,0xc9))[_0x630c('0x48')](handleError(_0x426bcb,null));};exports[_0x630c('0x24')]=function(_0x256cec,_0x2fd02a){if(_0x256cec['body']['id']){delete _0x256cec[_0x630c('0x55')]['id'];}return db['SquareProject'][_0x630c('0x56')]({'where':{'id':_0x256cec[_0x630c('0x4a')]['id']}})['then'](handleEntityNotFound(_0x2fd02a,null))[_0x630c('0x25')](saveUpdates(_0x256cec[_0x630c('0x55')],null))['then'](respondWithResult(_0x2fd02a,null))[_0x630c('0x48')](handleError(_0x2fd02a,null));};exports[_0x630c('0x29')]=function(_0x4c5346,_0xfc87ff){return db[_0x630c('0x2f')][_0x630c('0x56')]({'where':{'id':_0x4c5346[_0x630c('0x4a')]['id']}})[_0x630c('0x25')](handleEntityNotFound(_0xfc87ff,null))[_0x630c('0x25')](removeEntity(_0xfc87ff,null))[_0x630c('0x48')](handleError(_0xfc87ff,null));};exports[_0x630c('0x57')]=function(_0x1cbe4f,_0x3c1a98,_0x56c78c){return db[_0x630c('0x2f')][_0x630c('0x56')]({'where':{'id':_0x1cbe4f[_0x630c('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3c1a98,null))['then'](function(_0x1c2564){if(_0x1c2564){return _0x1c2564[_0x630c('0x57')](_0x1cbe4f[_0x630c('0x55')][_0x630c('0x58')],_[_0x630c('0x59')](_0x1cbe4f[_0x630c('0x55')],['ids','id'])||{});}})[_0x630c('0x25')](respondWithResult(_0x3c1a98,null))['catch'](handleError(_0x3c1a98,null));};exports[_0x630c('0x5a')]=function(_0x42b922,_0x54f7eb,_0x4173c8){return db[_0x630c('0x2f')][_0x630c('0x56')]({'where':{'id':_0x42b922[_0x630c('0x4a')]['id']}})[_0x630c('0x25')](handleEntityNotFound(_0x54f7eb,null))['then'](function(_0x5803a8){if(_0x5803a8){return _0x5803a8[_0x630c('0x5a')](_0x42b922[_0x630c('0x35')][_0x630c('0x58')])[_0x630c('0x25')](function(){if(_[_0x630c('0x5b')](_0x42b922[_0x630c('0x35')][_0x630c('0x58')])){for(var _0x3d641a=0x0;_0x3d641a<_0x42b922[_0x630c('0x35')][_0x630c('0x58')]['length'];_0x3d641a+=0x1){socket[_0x630c('0x5c')](_0x630c('0x5d'),{'UserId':Number(_0x42b922['query']['ids'][_0x3d641a]),'SquareProjectId':Number(_0x42b922[_0x630c('0x4a')]['id'])});}}else{socket[_0x630c('0x5c')]('userSquareProject:remove',{'UserId':Number(_0x42b922[_0x630c('0x35')][_0x630c('0x58')]),'SquareProjectId':Number(_0x42b922['params']['id'])});}});}})[_0x630c('0x25')](respondWithStatusCode(_0x54f7eb,null))['catch'](handleError(_0x54f7eb,null));};exports[_0x630c('0x5e')]=function(_0x289967,_0xd5ead5,_0x3cc208){var _0x308940={};var _0x735858={};var _0x251c81;var _0x5ba9d4;return db[_0x630c('0x2f')][_0x630c('0x5f')]({'where':{'id':_0x289967[_0x630c('0x4a')]['id']}})[_0x630c('0x25')](handleEntityNotFound(_0xd5ead5,null))[_0x630c('0x25')](function(_0x1dea9a){if(_0x1dea9a){_0x251c81=_0x1dea9a;_0x735858[_0x630c('0x33')]=_['keys'](db['User']['rawAttributes']);_0x735858[_0x630c('0x35')]=_[_0x630c('0x4b')](_0x289967['query']);_0x735858[_0x630c('0x36')]=_[_0x630c('0x37')](_0x735858[_0x630c('0x33')],_0x735858[_0x630c('0x35')]);_0x308940[_0x630c('0x38')]=_[_0x630c('0x37')](_0x735858[_0x630c('0x33')],qs[_0x630c('0x39')](_0x289967['query'][_0x630c('0x39')]));_0x308940[_0x630c('0x38')]=_0x308940[_0x630c('0x38')]['length']?_0x308940[_0x630c('0x38')]:_0x735858[_0x630c('0x33')];_0x308940[_0x630c('0x3e')]=qs['sort'](_0x289967[_0x630c('0x35')][_0x630c('0x60')]);_0x308940['where']=qs[_0x630c('0x36')](_['pick'](_0x289967[_0x630c('0x35')],_0x735858[_0x630c('0x36')]));if(_0x289967['query'][_0x630c('0x61')]){_0x308940['where']=_['merge'](_0x308940['where'],{'$or':_[_0x630c('0x34')](_0x308940[_0x630c('0x38')],function(_0x32c7a5){var _0x860b68={};_0x860b68[_0x32c7a5]={'$like':'%'+_0x289967[_0x630c('0x35')][_0x630c('0x61')]+'%'};return _0x860b68;})});}_0x308940=_['merge']({},_0x308940,_0x289967[_0x630c('0x44')]);return _0x251c81[_0x630c('0x5e')](_0x308940);}})['then'](function(_0x21f33f){if(_0x21f33f){_0x5ba9d4=_0x21f33f[_0x630c('0x4c')];if(!_0x289967[_0x630c('0x35')][_0x630c('0x3a')]('nolimit')){_0x308940['limit']=qs[_0x630c('0x3c')](_0x289967['query'][_0x630c('0x3c')]);_0x308940[_0x630c('0x3d')]=qs[_0x630c('0x3d')](_0x289967[_0x630c('0x35')]['offset']);}return _0x251c81[_0x630c('0x5e')](_0x308940);}})[_0x630c('0x25')](function(_0x366615){if(_0x366615){return _0x366615?{'count':_0x5ba9d4,'rows':_0x366615}:null;}})[_0x630c('0x25')](respondWithResult(_0xd5ead5,null))[_0x630c('0x48')](handleError(_0xd5ead5,null));};
\ No newline at end of file
+var _0xb8f8=['include','findAll','rows','catch','show','params','length','create','user','role','SquareProjects','UserProfileSection','find','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','addUsers','ids','removeUsers','isArray','userSquareProject:remove','emit','getUsers','findOne','User','filter','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','defaults','redis','localhost','./squareProject.socket','sendStatus','status','json','undefined','limit','offset','set','Content-Range','reject','save','update','then','destroy','get','UserProfileResource','end','stack','name','send','index','map','SquareProject','rawAttributes','fieldName','type','key','model','keys','intersection','query','attributes','fields','nolimit','order','sort','where','filters','pick','merge','options','count','includeAll'];(function(_0x4e1f15,_0x360024){var _0x5aac3f=function(_0x27306c){while(--_0x27306c){_0x4e1f15['push'](_0x4e1f15['shift']());}};_0x5aac3f(++_0x360024);}(_0xb8f8,0x19c));var _0x8b8f=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xb8f8[_0x57b54c];return _0x59cc19;};'use strict';var emlformat=require(_0x8b8f('0x0'));var rimraf=require(_0x8b8f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8b8f('0x2'));var rp=require(_0x8b8f('0x3'));var moment=require(_0x8b8f('0x4'));var BPromise=require(_0x8b8f('0x5'));var Mustache=require(_0x8b8f('0x6'));var util=require(_0x8b8f('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x8b8f('0x8'));var ejs=require(_0x8b8f('0x9'));var fs=require('fs');var fs_extra=require(_0x8b8f('0xa'));var _=require(_0x8b8f('0xb'));var squel=require(_0x8b8f('0xc'));var crypto=require('crypto');var jsforce=require(_0x8b8f('0xd'));var deskjs=require(_0x8b8f('0xe'));var toCsv=require(_0x8b8f('0x8'));var querystring=require('querystring');var Papa=require(_0x8b8f('0xf'));var Redis=require(_0x8b8f('0x10'));var authService=require(_0x8b8f('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x8b8f('0x12'));var hardwareService=require(_0x8b8f('0x13'));var logger=require('../../config/logger')(_0x8b8f('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x8b8f('0x15'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x8b8f('0x16')](config[_0x8b8f('0x17')],{'host':_0x8b8f('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8b8f('0x17')]));require(_0x8b8f('0x19'))['register'](socket);function respondWithStatusCode(_0x304d6d,_0x4aa71b){_0x4aa71b=_0x4aa71b||0xcc;return function(_0x32dbf5){if(_0x32dbf5){return _0x304d6d[_0x8b8f('0x1a')](_0x4aa71b);}return _0x304d6d[_0x8b8f('0x1b')](_0x4aa71b)['end']();};}function respondWithResult(_0x4f8994,_0x5d06fd){_0x5d06fd=_0x5d06fd||0xc8;return function(_0x4e4f94){if(_0x4e4f94){return _0x4f8994[_0x8b8f('0x1b')](_0x5d06fd)[_0x8b8f('0x1c')](_0x4e4f94);}};}function respondWithFilteredResult(_0x3f14a3,_0x22ceaf){return function(_0x45405b){if(_0x45405b){var _0x30e082=typeof _0x22ceaf['offset']===_0x8b8f('0x1d')&&typeof _0x22ceaf[_0x8b8f('0x1e')]===_0x8b8f('0x1d');var _0x3d00b3=_0x45405b['count'];var _0x265f5c=_0x30e082?0x0:_0x22ceaf[_0x8b8f('0x1f')];var _0x409c43=_0x30e082?_0x45405b['count']:_0x22ceaf[_0x8b8f('0x1f')]+_0x22ceaf[_0x8b8f('0x1e')];var _0x46587c;if(_0x409c43>=_0x3d00b3){_0x409c43=_0x3d00b3;_0x46587c=0xc8;}else{_0x46587c=0xce;}_0x3f14a3[_0x8b8f('0x1b')](_0x46587c);return _0x3f14a3[_0x8b8f('0x20')](_0x8b8f('0x21'),_0x265f5c+'-'+_0x409c43+'/'+_0x3d00b3)[_0x8b8f('0x1c')](_0x45405b);}return null;};}function patchUpdates(_0xb6dea8){return function(_0x690e50){try{jsonpatch['apply'](_0x690e50,_0xb6dea8,!![]);}catch(_0x244ddb){return BPromise[_0x8b8f('0x22')](_0x244ddb);}return _0x690e50[_0x8b8f('0x23')]();};}function saveUpdates(_0x150404,_0x92ce78){return function(_0x205703){if(_0x205703){return _0x205703[_0x8b8f('0x24')](_0x150404)[_0x8b8f('0x25')](function(_0x47626b){return _0x47626b;});}return null;};}function removeEntity(_0x444a21,_0x47ced7){return function(_0x512a33){if(_0x512a33){return _0x512a33[_0x8b8f('0x26')]()['then'](function(){var _0x209321=_0x512a33[_0x8b8f('0x27')]({'plain':!![]});var _0x275b34='SquareProjects';return db[_0x8b8f('0x28')][_0x8b8f('0x26')]({'where':{'type':_0x275b34,'resourceId':_0x209321['id']}})[_0x8b8f('0x25')](function(){return _0x512a33;});})[_0x8b8f('0x25')](function(){_0x444a21['status'](0xcc)[_0x8b8f('0x29')]();});}};}function handleEntityNotFound(_0x4f44b3,_0x1b14e5){return function(_0x1e4bd0){if(!_0x1e4bd0){_0x4f44b3[_0x8b8f('0x1a')](0x194);}return _0x1e4bd0;};}function handleError(_0x22ecee,_0x6c5a3c){_0x6c5a3c=_0x6c5a3c||0x1f4;return function(_0x574ec4){logger['error'](_0x574ec4[_0x8b8f('0x2a')]);if(_0x574ec4[_0x8b8f('0x2b')]){delete _0x574ec4[_0x8b8f('0x2b')];}_0x22ecee[_0x8b8f('0x1b')](_0x6c5a3c)[_0x8b8f('0x2c')](_0x574ec4);};}exports[_0x8b8f('0x2d')]=function(_0x5b972e,_0x34d37c){var _0x4955f4={},_0x25d446={},_0x273e59={'count':0x0,'rows':[]};var _0x151eb6=_[_0x8b8f('0x2e')](db[_0x8b8f('0x2f')][_0x8b8f('0x30')],function(_0x3c03ea){return{'name':_0x3c03ea[_0x8b8f('0x31')],'type':_0x3c03ea[_0x8b8f('0x32')][_0x8b8f('0x33')]};});_0x25d446[_0x8b8f('0x34')]=_['map'](_0x151eb6,'name');_0x25d446['query']=_[_0x8b8f('0x35')](_0x5b972e['query']);_0x25d446['filters']=_[_0x8b8f('0x36')](_0x25d446['model'],_0x25d446[_0x8b8f('0x37')]);_0x4955f4[_0x8b8f('0x38')]=_[_0x8b8f('0x36')](_0x25d446[_0x8b8f('0x34')],qs['fields'](_0x5b972e[_0x8b8f('0x37')][_0x8b8f('0x39')]));_0x4955f4[_0x8b8f('0x38')]=_0x4955f4['attributes']['length']?_0x4955f4[_0x8b8f('0x38')]:_0x25d446[_0x8b8f('0x34')];if(!_0x5b972e[_0x8b8f('0x37')]['hasOwnProperty'](_0x8b8f('0x3a'))){_0x4955f4[_0x8b8f('0x1e')]=qs[_0x8b8f('0x1e')](_0x5b972e[_0x8b8f('0x37')][_0x8b8f('0x1e')]);_0x4955f4[_0x8b8f('0x1f')]=qs['offset'](_0x5b972e[_0x8b8f('0x37')][_0x8b8f('0x1f')]);}_0x4955f4[_0x8b8f('0x3b')]=qs['sort'](_0x5b972e[_0x8b8f('0x37')][_0x8b8f('0x3c')]);_0x4955f4[_0x8b8f('0x3d')]=qs[_0x8b8f('0x3e')](_[_0x8b8f('0x3f')](_0x5b972e[_0x8b8f('0x37')],_0x25d446[_0x8b8f('0x3e')]),_0x151eb6);if(_0x5b972e[_0x8b8f('0x37')]['filter']){_0x4955f4[_0x8b8f('0x3d')]=_['merge'](_0x4955f4[_0x8b8f('0x3d')],{'$or':_[_0x8b8f('0x2e')](_0x151eb6,function(_0x4cb091){if(_0x4cb091[_0x8b8f('0x32')]!=='VIRTUAL'){var _0x36a0d8={};_0x36a0d8[_0x4cb091[_0x8b8f('0x2b')]]={'$like':'%'+_0x5b972e[_0x8b8f('0x37')]['filter']+'%'};return _0x36a0d8;}})});}_0x4955f4=_[_0x8b8f('0x40')]({},_0x4955f4,_0x5b972e[_0x8b8f('0x41')]);var _0x400d7={'where':_0x4955f4[_0x8b8f('0x3d')]};return db[_0x8b8f('0x2f')][_0x8b8f('0x42')](_0x400d7)[_0x8b8f('0x25')](function(_0x3c515d){_0x273e59[_0x8b8f('0x42')]=_0x3c515d;if(_0x5b972e[_0x8b8f('0x37')][_0x8b8f('0x43')]){_0x4955f4[_0x8b8f('0x44')]=[{'all':!![]}];}return db[_0x8b8f('0x2f')][_0x8b8f('0x45')](_0x4955f4);})[_0x8b8f('0x25')](function(_0x23a652){_0x273e59[_0x8b8f('0x46')]=_0x23a652;return _0x273e59;})[_0x8b8f('0x25')](respondWithFilteredResult(_0x34d37c,_0x4955f4))[_0x8b8f('0x47')](handleError(_0x34d37c,null));};exports[_0x8b8f('0x48')]=function(_0x35b393,_0x2f497f){var _0x5f4a8c={'raw':![],'where':{'id':_0x35b393[_0x8b8f('0x49')]['id']}},_0x2208b5={};_0x2208b5[_0x8b8f('0x34')]=_[_0x8b8f('0x35')](db[_0x8b8f('0x2f')][_0x8b8f('0x30')]);_0x2208b5['query']=_['keys'](_0x35b393['query']);_0x2208b5['filters']=_[_0x8b8f('0x36')](_0x2208b5['model'],_0x2208b5[_0x8b8f('0x37')]);_0x5f4a8c[_0x8b8f('0x38')]=_[_0x8b8f('0x36')](_0x2208b5[_0x8b8f('0x34')],qs[_0x8b8f('0x39')](_0x35b393[_0x8b8f('0x37')][_0x8b8f('0x39')]));_0x5f4a8c['attributes']=_0x5f4a8c[_0x8b8f('0x38')][_0x8b8f('0x4a')]?_0x5f4a8c['attributes']:_0x2208b5[_0x8b8f('0x34')];if(_0x35b393[_0x8b8f('0x37')]['includeAll']){_0x5f4a8c[_0x8b8f('0x44')]=[{'all':!![]}];}_0x5f4a8c=_[_0x8b8f('0x40')]({},_0x5f4a8c,_0x35b393['options']);return db[_0x8b8f('0x2f')]['find'](_0x5f4a8c)[_0x8b8f('0x25')](handleEntityNotFound(_0x2f497f,null))['then'](respondWithResult(_0x2f497f,null))[_0x8b8f('0x47')](handleError(_0x2f497f,null));};exports[_0x8b8f('0x4b')]=function(_0x1a5f34,_0x4fe5b0){return db[_0x8b8f('0x2f')]['create'](_0x1a5f34['body'],{})[_0x8b8f('0x25')](function(_0x3ffe8b){var _0xd51eb0=_0x1a5f34[_0x8b8f('0x4c')]['get']({'plain':!![]});if(!_0xd51eb0)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xd51eb0[_0x8b8f('0x4d')]===_0x8b8f('0x4c')){var _0x49b719=_0x3ffe8b[_0x8b8f('0x27')]({'plain':!![]});var _0x282bf7=_0x8b8f('0x4e');return db[_0x8b8f('0x4f')][_0x8b8f('0x50')]({'where':{'name':_0x282bf7,'userProfileId':_0xd51eb0[_0x8b8f('0x51')]},'raw':!![]})[_0x8b8f('0x25')](function(_0x3f5ada){if(_0x3f5ada&&_0x3f5ada[_0x8b8f('0x52')]===0x0){return db[_0x8b8f('0x28')][_0x8b8f('0x4b')]({'name':_0x49b719['name'],'resourceId':_0x49b719['id'],'type':_0x3f5ada[_0x8b8f('0x2b')],'sectionId':_0x3f5ada['id']},{})['then'](function(){return _0x3ffe8b;});}else{return _0x3ffe8b;}})[_0x8b8f('0x47')](function(_0x20886e){logger[_0x8b8f('0x53')](_0x8b8f('0x54'),_0x20886e);throw _0x20886e;});}return _0x3ffe8b;})[_0x8b8f('0x25')](respondWithResult(_0x4fe5b0,0xc9))[_0x8b8f('0x47')](handleError(_0x4fe5b0,null));};exports[_0x8b8f('0x24')]=function(_0x4f919b,_0x179b97){if(_0x4f919b[_0x8b8f('0x55')]['id']){delete _0x4f919b[_0x8b8f('0x55')]['id'];}return db['SquareProject']['find']({'where':{'id':_0x4f919b[_0x8b8f('0x49')]['id']}})['then'](handleEntityNotFound(_0x179b97,null))[_0x8b8f('0x25')](saveUpdates(_0x4f919b[_0x8b8f('0x55')],null))[_0x8b8f('0x25')](respondWithResult(_0x179b97,null))['catch'](handleError(_0x179b97,null));};exports[_0x8b8f('0x26')]=function(_0x166a34,_0x27d319){return db['SquareProject']['find']({'where':{'id':_0x166a34[_0x8b8f('0x49')]['id']}})['then'](handleEntityNotFound(_0x27d319,null))['then'](removeEntity(_0x27d319,null))[_0x8b8f('0x47')](handleError(_0x27d319,null));};exports[_0x8b8f('0x56')]=function(_0x5d934e,_0x609ee9,_0xb6ffb6){return db[_0x8b8f('0x2f')][_0x8b8f('0x50')]({'where':{'id':_0x5d934e['params']['id']}})[_0x8b8f('0x25')](handleEntityNotFound(_0x609ee9,null))[_0x8b8f('0x25')](function(_0x5102fb){if(_0x5102fb){return _0x5102fb[_0x8b8f('0x56')](_0x5d934e[_0x8b8f('0x55')][_0x8b8f('0x57')],_['omit'](_0x5d934e['body'],[_0x8b8f('0x57'),'id'])||{});}})[_0x8b8f('0x25')](respondWithResult(_0x609ee9,null))[_0x8b8f('0x47')](handleError(_0x609ee9,null));};exports[_0x8b8f('0x58')]=function(_0x38392b,_0x2862a0,_0x284d74){return db['SquareProject'][_0x8b8f('0x50')]({'where':{'id':_0x38392b[_0x8b8f('0x49')]['id']}})[_0x8b8f('0x25')](handleEntityNotFound(_0x2862a0,null))[_0x8b8f('0x25')](function(_0x5b356c){if(_0x5b356c){return _0x5b356c[_0x8b8f('0x58')](_0x38392b['query']['ids'])[_0x8b8f('0x25')](function(){if(_[_0x8b8f('0x59')](_0x38392b[_0x8b8f('0x37')]['ids'])){for(var _0x1302ad=0x0;_0x1302ad<_0x38392b[_0x8b8f('0x37')][_0x8b8f('0x57')][_0x8b8f('0x4a')];_0x1302ad+=0x1){socket['emit'](_0x8b8f('0x5a'),{'UserId':Number(_0x38392b[_0x8b8f('0x37')]['ids'][_0x1302ad]),'SquareProjectId':Number(_0x38392b[_0x8b8f('0x49')]['id'])});}}else{socket[_0x8b8f('0x5b')]('userSquareProject:remove',{'UserId':Number(_0x38392b[_0x8b8f('0x37')]['ids']),'SquareProjectId':Number(_0x38392b['params']['id'])});}});}})['then'](respondWithStatusCode(_0x2862a0,null))[_0x8b8f('0x47')](handleError(_0x2862a0,null));};exports[_0x8b8f('0x5c')]=function(_0x26364c,_0x17b5be,_0x1dc261){var _0x113326={};var _0x6fa567={};var _0x1680d7;var _0x3aacb6;return db['SquareProject'][_0x8b8f('0x5d')]({'where':{'id':_0x26364c['params']['id']}})[_0x8b8f('0x25')](handleEntityNotFound(_0x17b5be,null))[_0x8b8f('0x25')](function(_0x5aee18){if(_0x5aee18){_0x1680d7=_0x5aee18;_0x6fa567[_0x8b8f('0x34')]=_[_0x8b8f('0x35')](db[_0x8b8f('0x5e')][_0x8b8f('0x30')]);_0x6fa567[_0x8b8f('0x37')]=_[_0x8b8f('0x35')](_0x26364c[_0x8b8f('0x37')]);_0x6fa567[_0x8b8f('0x3e')]=_[_0x8b8f('0x36')](_0x6fa567[_0x8b8f('0x34')],_0x6fa567[_0x8b8f('0x37')]);_0x113326['attributes']=_[_0x8b8f('0x36')](_0x6fa567['model'],qs[_0x8b8f('0x39')](_0x26364c['query'][_0x8b8f('0x39')]));_0x113326[_0x8b8f('0x38')]=_0x113326[_0x8b8f('0x38')][_0x8b8f('0x4a')]?_0x113326[_0x8b8f('0x38')]:_0x6fa567[_0x8b8f('0x34')];_0x113326[_0x8b8f('0x3b')]=qs['sort'](_0x26364c['query']['sort']);_0x113326[_0x8b8f('0x3d')]=qs[_0x8b8f('0x3e')](_['pick'](_0x26364c[_0x8b8f('0x37')],_0x6fa567[_0x8b8f('0x3e')]));if(_0x26364c[_0x8b8f('0x37')][_0x8b8f('0x5f')]){_0x113326[_0x8b8f('0x3d')]=_[_0x8b8f('0x40')](_0x113326['where'],{'$or':_['map'](_0x113326[_0x8b8f('0x38')],function(_0x492d89){var _0x181b85={};_0x181b85[_0x492d89]={'$like':'%'+_0x26364c[_0x8b8f('0x37')][_0x8b8f('0x5f')]+'%'};return _0x181b85;})});}_0x113326=_[_0x8b8f('0x40')]({},_0x113326,_0x26364c[_0x8b8f('0x41')]);return _0x1680d7[_0x8b8f('0x5c')](_0x113326);}})[_0x8b8f('0x25')](function(_0x3d3574){if(_0x3d3574){_0x3aacb6=_0x3d3574['length'];if(!_0x26364c[_0x8b8f('0x37')]['hasOwnProperty']('nolimit')){_0x113326[_0x8b8f('0x1e')]=qs['limit'](_0x26364c[_0x8b8f('0x37')][_0x8b8f('0x1e')]);_0x113326[_0x8b8f('0x1f')]=qs[_0x8b8f('0x1f')](_0x26364c[_0x8b8f('0x37')][_0x8b8f('0x1f')]);}return _0x1680d7[_0x8b8f('0x5c')](_0x113326);}})[_0x8b8f('0x25')](function(_0x77ed93){if(_0x77ed93){return _0x77ed93?{'count':_0x3aacb6,'rows':_0x77ed93}:null;}})[_0x8b8f('0x25')](respondWithResult(_0x17b5be,null))[_0x8b8f('0x47')](handleError(_0x17b5be,null));};
\ No newline at end of file
index 41ce031..d3a5bf2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1b4=['save','update','remove','emit','hasOwnProperty','hook','exports','events','SquareProject'];(function(_0x4389b3,_0x19aaeb){var _0x463840=function(_0x5e5f15){while(--_0x5e5f15){_0x4389b3['push'](_0x4389b3['shift']());}};_0x463840(++_0x19aaeb);}(_0xe1b4,0x178));var _0x4e1b=function(_0x428dbd,_0x30eeb5){_0x428dbd=_0x428dbd-0x0;var _0xc411d8=_0xe1b4[_0x428dbd];return _0xc411d8;};'use strict';var EventEmitter=require(_0x4e1b('0x0'));var SquareProject=require('../../mysqldb')['db'][_0x4e1b('0x1')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x4e1b('0x2'),'afterUpdate':_0x4e1b('0x3'),'afterDestroy':_0x4e1b('0x4')};function emitEvent(_0x32aeac){return function(_0x36e205,_0x38704d,_0x303e06){SquareProjectEvents['emit'](_0x32aeac+':'+_0x36e205['id'],_0x36e205);SquareProjectEvents[_0x4e1b('0x5')](_0x32aeac,_0x36e205);_0x303e06(null);};}for(var e in events){if(events[_0x4e1b('0x6')](e)){var event=events[e];SquareProject[_0x4e1b('0x7')](e,emitEvent(event));}}module[_0x4e1b('0x8')]=SquareProjectEvents;
\ No newline at end of file
+var _0xd54f=['hasOwnProperty','exports','events','../../mysqldb','SquareProject','save','remove','emit'];(function(_0x5ed644,_0x237566){var _0x559ab8=function(_0x1a8f75){while(--_0x1a8f75){_0x5ed644['push'](_0x5ed644['shift']());}};_0x559ab8(++_0x237566);}(_0xd54f,0x132));var _0xfd54=function(_0x3d71d3,_0x11caf1){_0x3d71d3=_0x3d71d3-0x0;var _0x30ec87=_0xd54f[_0x3d71d3];return _0x30ec87;};'use strict';var EventEmitter=require(_0xfd54('0x0'));var SquareProject=require(_0xfd54('0x1'))['db'][_0xfd54('0x2')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xfd54('0x3'),'afterUpdate':'update','afterDestroy':_0xfd54('0x4')};function emitEvent(_0x57ec35){return function(_0x24efda,_0x45e462,_0x555850){SquareProjectEvents[_0xfd54('0x5')](_0x57ec35+':'+_0x24efda['id'],_0x24efda);SquareProjectEvents[_0xfd54('0x5')](_0x57ec35,_0x24efda);_0x555850(null);};}for(var e in events){if(events[_0xfd54('0x6')](e)){var event=events[e];SquareProject['hook'](e,emitEvent(event));}}module[_0xfd54('0x7')]=SquareProjectEvents;
\ No newline at end of file
index 776627c..eb90669 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x961e=['square_projects','changed','preproduction','format','YYYY-MM-DD\x20HH:mm:ss','production','publishedAt','lodash','util','../../config/logger','api','moment','path','../../config/environment','./squareProject.attributes','exports','define','SquareProject'];(function(_0x38a7b8,_0xc596d9){var _0x1769d1=function(_0x30a8e4){while(--_0x30a8e4){_0x38a7b8['push'](_0x38a7b8['shift']());}};_0x1769d1(++_0xc596d9);}(_0x961e,0x1ed));var _0xe961=function(_0x5bd506,_0x47606a){_0x5bd506=_0x5bd506-0x0;var _0x188e73=_0x961e[_0x5bd506];return _0x188e73;};'use strict';var _=require(_0xe961('0x0'));var util=require(_0xe961('0x1'));var logger=require(_0xe961('0x2'))(_0xe961('0x3'));var moment=require(_0xe961('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xe961('0x5'));var rimraf=require('rimraf');var config=require(_0xe961('0x6'));var attributes=require(_0xe961('0x7'));module[_0xe961('0x8')]=function(_0x33fef4,_0x279095){return _0x33fef4[_0xe961('0x9')](_0xe961('0xa'),attributes,{'tableName':_0xe961('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x2ec5b9,_0x507bf6,_0x256e6a){if(_0x2ec5b9[_0xe961('0xc')](_0xe961('0xd'))){_0x2ec5b9['savedAt']=moment()[_0xe961('0xe')](_0xe961('0xf'));}if(_0x2ec5b9['changed'](_0xe961('0x10'))){_0x2ec5b9[_0xe961('0x11')]=moment()[_0xe961('0xe')]('YYYY-MM-DD\x20HH:mm:ss');}_0x256e6a(null,_0x2ec5b9);}}});};
\ No newline at end of file
+var _0xc56d=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareProject.attributes','exports','define','changed','preproduction','savedAt','YYYY-MM-DD\x20HH:mm:ss','production','publishedAt','format','lodash'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0xc56d,0x153));var _0xdc56=function(_0x5c2e76,_0x1f3ead){_0x5c2e76=_0x5c2e76-0x0;var _0xdde8d8=_0xc56d[_0x5c2e76];return _0xdde8d8;};'use strict';var _=require(_0xdc56('0x0'));var util=require(_0xdc56('0x1'));var logger=require(_0xdc56('0x2'))(_0xdc56('0x3'));var moment=require(_0xdc56('0x4'));var BPromise=require(_0xdc56('0x5'));var rp=require(_0xdc56('0x6'));var fs=require('fs');var path=require(_0xdc56('0x7'));var rimraf=require(_0xdc56('0x8'));var config=require(_0xdc56('0x9'));var attributes=require(_0xdc56('0xa'));module[_0xdc56('0xb')]=function(_0x2bf5fb,_0x48866f){return _0x2bf5fb[_0xdc56('0xc')]('SquareProject',attributes,{'tableName':'square_projects','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x16617b,_0x5a183b,_0x17d15b){if(_0x16617b[_0xdc56('0xd')](_0xdc56('0xe'))){_0x16617b[_0xdc56('0xf')]=moment()['format'](_0xdc56('0x10'));}if(_0x16617b[_0xdc56('0xd')](_0xdc56('0x11'))){_0x16617b[_0xdc56('0x12')]=moment()[_0xdc56('0x13')](_0xdc56('0x10'));}_0x17d15b(null,_0x16617b);}}});};
\ No newline at end of file
index 7d710c7..4dbc937 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfc8=['options','include','model','attributes','map','ShowSquareProject','debug','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','socket.io-emitter','redis','./squareProject.socket','register','request','then','info','SquareProject,\x20%s,\x20%s','request\x20sent','error','message','catch','SquareProject','find'];(function(_0x284c03,_0x3fb8aa){var _0x48d021=function(_0x519066){while(--_0x519066){_0x284c03['push'](_0x284c03['shift']());}};_0x48d021(++_0x3fb8aa);}(_0xcfc8,0x147));var _0x8cfc=function(_0x15ef22,_0x5b0145){_0x15ef22=_0x15ef22-0x0;var _0x1f7b3d=_0xcfc8[_0x15ef22];return _0x1f7b3d;};'use strict';var _=require(_0x8cfc('0x0'));var util=require(_0x8cfc('0x1'));var moment=require(_0x8cfc('0x2'));var BPromise=require(_0x8cfc('0x3'));var rs=require(_0x8cfc('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8cfc('0x5'))['db'];var utils=require(_0x8cfc('0x6'));var logger=require(_0x8cfc('0x7'))('rpc');var config=require(_0x8cfc('0x8'));var jayson=require(_0x8cfc('0x9'));var client=jayson[_0x8cfc('0xa')]['http']({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x8cfc('0xb'))(new Redis(config[_0x8cfc('0xc')]));require(_0x8cfc('0xd'))[_0x8cfc('0xe')](socket);function respondWithRpcPromise(_0x36901b,_0x15c608,_0x2efeb0){return new BPromise(function(_0x573fd7,_0x1dd357){return client[_0x8cfc('0xf')](_0x36901b,_0x2efeb0)[_0x8cfc('0x10')](function(_0x247c42){logger[_0x8cfc('0x11')](_0x8cfc('0x12'),_0x15c608,'request\x20sent');logger['debug']('SquareProject,\x20%s,\x20%s,\x20%s',_0x15c608,_0x8cfc('0x13'),JSON['stringify'](_0x247c42));if(_0x247c42['error']){if(_0x247c42['error']['code']===0x1f4){logger[_0x8cfc('0x14')]('SquareProject,\x20%s,\x20%s',_0x15c608,_0x247c42[_0x8cfc('0x14')][_0x8cfc('0x15')]);return _0x1dd357(_0x247c42[_0x8cfc('0x14')][_0x8cfc('0x15')]);}logger['error'](_0x8cfc('0x12'),_0x15c608,_0x247c42[_0x8cfc('0x14')][_0x8cfc('0x15')]);return _0x573fd7(_0x247c42[_0x8cfc('0x14')]['message']);}else{logger['info'](_0x8cfc('0x12'),_0x15c608,_0x8cfc('0x13'));_0x573fd7(_0x247c42['result'][_0x8cfc('0x15')]);}})[_0x8cfc('0x16')](function(_0xe031c8){logger[_0x8cfc('0x14')](_0x8cfc('0x12'),_0x15c608,_0xe031c8);_0x1dd357(_0xe031c8);});});}exports['ShowSquareProject']=function(_0x482677){var _0x30b3f8=this;return new Promise(function(_0x1e6b58,_0x301449){return db[_0x8cfc('0x17')][_0x8cfc('0x18')]({'raw':_0x482677[_0x8cfc('0x19')]?_0x482677[_0x8cfc('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x482677[_0x8cfc('0x19')]?_0x482677[_0x8cfc('0x19')]['where']||null:null,'attributes':_0x482677[_0x8cfc('0x19')]?_0x482677[_0x8cfc('0x19')]['attributes']||null:null,'include':_0x482677['options']?_0x482677['options'][_0x8cfc('0x1a')]?_['map'](_0x482677[_0x8cfc('0x19')][_0x8cfc('0x1a')],function(_0x3d689c){return{'model':db[_0x3d689c[_0x8cfc('0x1b')]],'as':_0x3d689c['as'],'attributes':_0x3d689c[_0x8cfc('0x1c')],'include':_0x3d689c[_0x8cfc('0x1a')]?_[_0x8cfc('0x1d')](_0x3d689c['include'],function(_0x124acd){return{'model':db[_0x124acd[_0x8cfc('0x1b')]],'as':_0x124acd['as'],'attributes':_0x124acd[_0x8cfc('0x1c')],'include':_0x124acd[_0x8cfc('0x1a')]?_[_0x8cfc('0x1d')](_0x124acd[_0x8cfc('0x1a')],function(_0x15cb67){return{'model':db[_0x15cb67[_0x8cfc('0x1b')]],'as':_0x15cb67['as'],'attributes':_0x15cb67[_0x8cfc('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xda4408){logger[_0x8cfc('0x11')](_0x8cfc('0x1e'),_0x482677);logger[_0x8cfc('0x1f')](_0x8cfc('0x1e'),_0x482677,JSON['stringify'](_0xda4408));_0x1e6b58(_0xda4408);})['catch'](function(_0x261fc8){logger[_0x8cfc('0x14')](_0x8cfc('0x1e'),_0x261fc8[_0x8cfc('0x15')],_0x482677);_0x301449(_0x30b3f8[_0x8cfc('0x14')](0x1f4,_0x261fc8[_0x8cfc('0x15')]));});});};
\ No newline at end of file
+var _0xac62=['SquareProject','find','options','raw','where','attributes','include','model','map','debug','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','redis','localhost','./squareProject.socket','register','request','then','info','SquareProject,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','ShowSquareProject'];(function(_0x307d86,_0x9264f2){var _0x361745=function(_0x1b64e1){while(--_0x1b64e1){_0x307d86['push'](_0x307d86['shift']());}};_0x361745(++_0x9264f2);}(_0xac62,0x1a2));var _0x2ac6=function(_0x44594d,_0x44470c){_0x44594d=_0x44594d-0x0;var _0x1bff66=_0xac62[_0x44594d];return _0x1bff66;};'use strict';var _=require('lodash');var util=require(_0x2ac6('0x0'));var moment=require(_0x2ac6('0x1'));var BPromise=require('bluebird');var rs=require(_0x2ac6('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2ac6('0x3'))['db'];var utils=require(_0x2ac6('0x4'));var logger=require('../../config/logger')(_0x2ac6('0x5'));var config=require('../../config/environment');var jayson=require(_0x2ac6('0x6'));var client=jayson[_0x2ac6('0x7')][_0x2ac6('0x8')]({'port':0x232a});config[_0x2ac6('0x9')]=_['defaults'](config[_0x2ac6('0x9')],{'host':_0x2ac6('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2ac6('0x9')]));require(_0x2ac6('0xb'))[_0x2ac6('0xc')](socket);function respondWithRpcPromise(_0x5eb236,_0x3f7701,_0x5c300a){return new BPromise(function(_0x2c6c3b,_0x34c3d0){return client[_0x2ac6('0xd')](_0x5eb236,_0x5c300a)[_0x2ac6('0xe')](function(_0x204341){logger[_0x2ac6('0xf')](_0x2ac6('0x10'),_0x3f7701,_0x2ac6('0x11'));logger['debug']('SquareProject,\x20%s,\x20%s,\x20%s',_0x3f7701,_0x2ac6('0x11'),JSON[_0x2ac6('0x12')](_0x204341));if(_0x204341[_0x2ac6('0x13')]){if(_0x204341[_0x2ac6('0x13')]['code']===0x1f4){logger[_0x2ac6('0x13')]('SquareProject,\x20%s,\x20%s',_0x3f7701,_0x204341[_0x2ac6('0x13')][_0x2ac6('0x14')]);return _0x34c3d0(_0x204341['error'][_0x2ac6('0x14')]);}logger[_0x2ac6('0x13')](_0x2ac6('0x10'),_0x3f7701,_0x204341[_0x2ac6('0x13')][_0x2ac6('0x14')]);return _0x2c6c3b(_0x204341['error'][_0x2ac6('0x14')]);}else{logger[_0x2ac6('0xf')](_0x2ac6('0x10'),_0x3f7701,'request\x20sent');_0x2c6c3b(_0x204341[_0x2ac6('0x15')][_0x2ac6('0x14')]);}})[_0x2ac6('0x16')](function(_0x4d373f){logger['error'](_0x2ac6('0x10'),_0x3f7701,_0x4d373f);_0x34c3d0(_0x4d373f);});});}exports[_0x2ac6('0x17')]=function(_0x42e04f){var _0x141f49=this;return new Promise(function(_0x554e76,_0x1c9122){return db[_0x2ac6('0x18')][_0x2ac6('0x19')]({'raw':_0x42e04f[_0x2ac6('0x1a')]?_0x42e04f['options'][_0x2ac6('0x1b')]===undefined?!![]:![]:!![],'where':_0x42e04f[_0x2ac6('0x1a')]?_0x42e04f[_0x2ac6('0x1a')][_0x2ac6('0x1c')]||null:null,'attributes':_0x42e04f[_0x2ac6('0x1a')]?_0x42e04f[_0x2ac6('0x1a')][_0x2ac6('0x1d')]||null:null,'include':_0x42e04f[_0x2ac6('0x1a')]?_0x42e04f['options'][_0x2ac6('0x1e')]?_['map'](_0x42e04f[_0x2ac6('0x1a')][_0x2ac6('0x1e')],function(_0x5e3de1){return{'model':db[_0x5e3de1[_0x2ac6('0x1f')]],'as':_0x5e3de1['as'],'attributes':_0x5e3de1[_0x2ac6('0x1d')],'include':_0x5e3de1['include']?_['map'](_0x5e3de1[_0x2ac6('0x1e')],function(_0x5be932){return{'model':db[_0x5be932[_0x2ac6('0x1f')]],'as':_0x5be932['as'],'attributes':_0x5be932[_0x2ac6('0x1d')],'include':_0x5be932['include']?_[_0x2ac6('0x20')](_0x5be932[_0x2ac6('0x1e')],function(_0x1ae613){return{'model':db[_0x1ae613[_0x2ac6('0x1f')]],'as':_0x1ae613['as'],'attributes':_0x1ae613[_0x2ac6('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x2ac6('0xe')](function(_0x46f307){logger[_0x2ac6('0xf')](_0x2ac6('0x17'),_0x42e04f);logger[_0x2ac6('0x21')](_0x2ac6('0x17'),_0x42e04f,JSON[_0x2ac6('0x12')](_0x46f307));_0x554e76(_0x46f307);})['catch'](function(_0x4592d2){logger[_0x2ac6('0x13')](_0x2ac6('0x17'),_0x4592d2[_0x2ac6('0x14')],_0x42e04f);_0x1c9122(_0x141f49[_0x2ac6('0x13')](0x1f4,_0x4592d2[_0x2ac6('0x14')]));});});};
\ No newline at end of file
index ea39fcf..49630d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e34=['removeListener','register','./squareProject.events','save','remove','emit'];(function(_0x47d55d,_0x2a9376){var _0x10c3a8=function(_0x3f3cb0){while(--_0x3f3cb0){_0x47d55d['push'](_0x47d55d['shift']());}};_0x10c3a8(++_0x2a9376);}(_0x4e34,0x1f4));var _0x44e3=function(_0x28483c,_0x9db657){_0x28483c=_0x28483c-0x0;var _0x3a5f18=_0x4e34[_0x28483c];return _0x3a5f18;};'use strict';var SquareProjectEvents=require(_0x44e3('0x0'));var events=[_0x44e3('0x1'),_0x44e3('0x2'),'update'];function createListener(_0x3debba,_0x249506){return function(_0x2d68fe){_0x249506[_0x44e3('0x3')](_0x3debba,_0x2d68fe);};}function removeListener(_0x42ab47,_0xc396ee){return function(){SquareProjectEvents[_0x44e3('0x4')](_0x42ab47,_0xc396ee);};}exports[_0x44e3('0x5')]=function(_0x40539d){for(var _0x446fa8=0x0,_0x2cf763=events['length'];_0x446fa8<_0x2cf763;_0x446fa8++){var _0x5e8ef9=events[_0x446fa8];var _0x29c24b=createListener('squareProject:'+_0x5e8ef9,_0x40539d);SquareProjectEvents['on'](_0x5e8ef9,_0x29c24b);}};
\ No newline at end of file
+var _0x6955=['update','emit','removeListener','register','squareProject:'];(function(_0x5a550c,_0x4b1bc0){var _0x5f2417=function(_0x4c8528){while(--_0x4c8528){_0x5a550c['push'](_0x5a550c['shift']());}};_0x5f2417(++_0x4b1bc0);}(_0x6955,0xf5));var _0x5695=function(_0x23d60b,_0x4ec8c5){_0x23d60b=_0x23d60b-0x0;var _0x726632=_0x6955[_0x23d60b];return _0x726632;};'use strict';var SquareProjectEvents=require('./squareProject.events');var events=['save','remove',_0x5695('0x0')];function createListener(_0x3f81c1,_0x4b5e04){return function(_0x36ce10){_0x4b5e04[_0x5695('0x1')](_0x3f81c1,_0x36ce10);};}function removeListener(_0x155cbf,_0x51222f){return function(){SquareProjectEvents[_0x5695('0x2')](_0x155cbf,_0x51222f);};}exports[_0x5695('0x3')]=function(_0x52b07c){for(var _0xbe38a=0x0,_0x1179b8=events['length'];_0xbe38a<_0x1179b8;_0xbe38a++){var _0x1c7bcd=events[_0xbe38a];var _0x323cbd=createListener(_0x5695('0x4')+_0x1c7bcd,_0x52b07c);SquareProjectEvents['on'](_0x1c7bcd,_0x323cbd);}};
\ No newline at end of file
index bb6b76c..c72f8d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fbe=['/:id','show','/:id/download','create','put','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','get','isAuthenticated','index'];(function(_0x2cc7f2,_0x546901){var _0x395840=function(_0x22912b){while(--_0x22912b){_0x2cc7f2['push'](_0x2cc7f2['shift']());}};_0x395840(++_0x546901);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x1e7b16,_0x4607a1){_0x1e7b16=_0x1e7b16-0x0;var _0x37fadc=_0x7fbe[_0x1e7b16];return _0x37fadc;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe7fb('0x0'));var timeout=require(_0xe7fb('0x1'));var express=require(_0xe7fb('0x2'));var router=express[_0xe7fb('0x3')]();var fs_extra=require(_0xe7fb('0x4'));var auth=require(_0xe7fb('0x5'));var interaction=require(_0xe7fb('0x6'));var config=require(_0xe7fb('0x7'));var controller=require(_0xe7fb('0x8'));router[_0xe7fb('0x9')]('/',auth[_0xe7fb('0xa')](),controller[_0xe7fb('0xb')]);router[_0xe7fb('0x9')](_0xe7fb('0xc'),auth['isAuthenticated'](),controller[_0xe7fb('0xd')]);router[_0xe7fb('0x9')](_0xe7fb('0xe'),auth[_0xe7fb('0xa')](),controller['download']);router['post']('/',auth[_0xe7fb('0xa')](),controller[_0xe7fb('0xf')]);router[_0xe7fb('0x10')](_0xe7fb('0xc'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x11')]);router[_0xe7fb('0x12')](_0xe7fb('0xc'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x13')]);module[_0xe7fb('0x14')]=router;
\ No newline at end of file
+var _0x7217=['../../config/environment','./squareRecording.controller','get','isAuthenticated','index','/:id','show','/:id/download','download','post','put','update','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x50a0c2,_0x4befab){var _0x5ebadd=function(_0x3a3342){while(--_0x3a3342){_0x50a0c2['push'](_0x50a0c2['shift']());}};_0x5ebadd(++_0x4befab);}(_0x7217,0x19e));var _0x7721=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x7217[_0x1ac595];return _0x455fff;};'use strict';var multer=require(_0x7721('0x0'));var util=require('util');var path=require(_0x7721('0x1'));var timeout=require(_0x7721('0x2'));var express=require(_0x7721('0x3'));var router=express[_0x7721('0x4')]();var fs_extra=require(_0x7721('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7721('0x6'));var controller=require(_0x7721('0x7'));router[_0x7721('0x8')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xa')]);router[_0x7721('0x8')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0xc')]);router[_0x7721('0x8')](_0x7721('0xd'),auth[_0x7721('0x9')](),controller[_0x7721('0xe')]);router[_0x7721('0xf')]('/',auth[_0x7721('0x9')](),controller['create']);router[_0x7721('0x10')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0x11')]);router[_0x7721('0x12')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0x13')]);module['exports']=router;
\ No newline at end of file
index 469903a..4ac3f80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d17=['getDataValue','savePath','substring','sequelize','exports','STRING','VIRTUAL'];(function(_0x4a9ac9,_0x508ea8){var _0x58a125=function(_0x1df184){while(--_0x1df184){_0x4a9ac9['push'](_0x4a9ac9['shift']());}};_0x58a125(++_0x508ea8);}(_0x5d17,0x114));var _0x75d1=function(_0x1293fa,_0x446d6b){_0x1293fa=_0x1293fa-0x0;var _0x1dd054=_0x5d17[_0x1293fa];return _0x1dd054;};'use strict';var Sequelize=require(_0x75d1('0x0'));module[_0x75d1('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x75d1('0x2')]},'context':{'type':Sequelize[_0x75d1('0x2')]},'extension':{'type':Sequelize[_0x75d1('0x2')]},'priority':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x75d1('0x2')]},'dnid':{'type':Sequelize[_0x75d1('0x2')]},'projectName':{'type':Sequelize[_0x75d1('0x2')]},'saveName':{'type':Sequelize[_0x75d1('0x2')]},'filename':{'type':Sequelize['STRING']},'savePath':{'type':Sequelize[_0x75d1('0x2')]},'format':{'type':Sequelize[_0x75d1('0x3')],'get':function(){var _0x5c957a='';var _0x1ee61b=this[_0x75d1('0x4')](_0x75d1('0x5'));if(_0x1ee61b){_0x5c957a=_0x1ee61b[_0x75d1('0x6')](_0x1ee61b['lastIndexOf']('.'));}return _0x5c957a;}}};
\ No newline at end of file
+var _0x5075=['savePath','sequelize','exports','STRING','VIRTUAL','getDataValue'];(function(_0x81fe53,_0x5b8f05){var _0x56f7a7=function(_0x1e7846){while(--_0x1e7846){_0x81fe53['push'](_0x81fe53['shift']());}};_0x56f7a7(++_0x5b8f05);}(_0x5075,0x73));var _0x5507=function(_0x22e47a,_0x4ea10c){_0x22e47a=_0x22e47a-0x0;var _0x15a12a=_0x5075[_0x22e47a];return _0x15a12a;};'use strict';var Sequelize=require(_0x5507('0x0'));module[_0x5507('0x1')]={'uniqueid':{'type':Sequelize[_0x5507('0x2')]},'callerid':{'type':Sequelize[_0x5507('0x2')]},'calleridname':{'type':Sequelize[_0x5507('0x2')]},'context':{'type':Sequelize[_0x5507('0x2')]},'extension':{'type':Sequelize[_0x5507('0x2')]},'priority':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x5507('0x2')]},'dnid':{'type':Sequelize[_0x5507('0x2')]},'projectName':{'type':Sequelize[_0x5507('0x2')]},'saveName':{'type':Sequelize['STRING']},'filename':{'type':Sequelize['STRING']},'savePath':{'type':Sequelize[_0x5507('0x2')]},'format':{'type':Sequelize[_0x5507('0x3')],'get':function(){var _0x4c2d6d='';var _0x42c232=this[_0x5507('0x4')](_0x5507('0x5'));if(_0x42c232){_0x4c2d6d=_0x42c232['substring'](_0x42c232['lastIndexOf']('.'));}return _0x4c2d6d;}}};
\ No newline at end of file
index d8902c0..2717532 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0e1=['File:\x20\x22','.cypher','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','rimraf','fast-json-patch','request-promise','moment','mustache','path','ejs','fs-extra','squel','jsforce','to-csv','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','error','stack','name','send','map','rawAttributes','fieldName','type','key','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','pick','filter','where','merge','VIRTUAL','options','SquareRecording','includeAll','include','rows','catch','show','params','find','create','body','update','download','../../components/encryptor','uniqueid','filename','savePath','format','existsSync','decryptFile','Sequelize','ValidationError','SquareRecording\x20not\x20found','extname','unlink','message','Not\x20found','destroy','info','cancellazione\x20fisica\x20documento\x20%s','isNil'];(function(_0x10ea62,_0x51c8c6){var _0x1ce155=function(_0x370ca2){while(--_0x370ca2){_0x10ea62['push'](_0x10ea62['shift']());}};_0x1ce155(++_0x51c8c6);}(_0xb0e1,0x174));var _0x1b0e=function(_0x3a4f73,_0x59af83){_0x3a4f73=_0x3a4f73-0x0;var _0x550eb8=_0xb0e1[_0x3a4f73];return _0x550eb8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1b0e('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1b0e('0x1'));var rp=require(_0x1b0e('0x2'));var moment=require(_0x1b0e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x1b0e('0x4'));var util=require('util');var path=require(_0x1b0e('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x1b0e('0x6'));var fs=require('fs');var fs_extra=require(_0x1b0e('0x7'));var _=require('lodash');var squel=require(_0x1b0e('0x8'));var crypto=require('crypto');var jsforce=require(_0x1b0e('0x9'));var deskjs=require('desk.js');var toCsv=require(_0x1b0e('0xa'));var querystring=require('querystring');var Papa=require(_0x1b0e('0xb'));var Redis=require('ioredis');var authService=require(_0x1b0e('0xc'));var qs=require(_0x1b0e('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1b0e('0xe'));var logger=require('../../config/logger')(_0x1b0e('0xf'));var utils=require('../../config/utils');var config=require(_0x1b0e('0x10'));var licenseUtil=require(_0x1b0e('0x11'));var db=require(_0x1b0e('0x12'))['db'];function respondWithStatusCode(_0x5b4b94,_0x4fe9ad){_0x4fe9ad=_0x4fe9ad||0xcc;return function(_0x5e30be){if(_0x5e30be){return _0x5b4b94[_0x1b0e('0x13')](_0x4fe9ad);}return _0x5b4b94[_0x1b0e('0x14')](_0x4fe9ad)[_0x1b0e('0x15')]();};}function respondWithResult(_0x56c4c4,_0x4021d3){_0x4021d3=_0x4021d3||0xc8;return function(_0x5ea1fc){if(_0x5ea1fc){return _0x56c4c4[_0x1b0e('0x14')](_0x4021d3)[_0x1b0e('0x16')](_0x5ea1fc);}};}function respondWithFilteredResult(_0x48db5a,_0x5da8ca){return function(_0x57fc30){if(_0x57fc30){var _0x5149bb=typeof _0x5da8ca['offset']===_0x1b0e('0x17')&&typeof _0x5da8ca['limit']===_0x1b0e('0x17');var _0x5b4057=_0x57fc30[_0x1b0e('0x18')];var _0xb00021=_0x5149bb?0x0:_0x5da8ca[_0x1b0e('0x19')];var _0xbb1e2=_0x5149bb?_0x57fc30[_0x1b0e('0x18')]:_0x5da8ca[_0x1b0e('0x19')]+_0x5da8ca[_0x1b0e('0x1a')];var _0x341af7;if(_0xbb1e2>=_0x5b4057){_0xbb1e2=_0x5b4057;_0x341af7=0xc8;}else{_0x341af7=0xce;}_0x48db5a[_0x1b0e('0x14')](_0x341af7);return _0x48db5a[_0x1b0e('0x1b')](_0x1b0e('0x1c'),_0xb00021+'-'+_0xbb1e2+'/'+_0x5b4057)[_0x1b0e('0x16')](_0x57fc30);}return null;};}function patchUpdates(_0xb01f19){return function(_0x3fe003){try{jsonpatch['apply'](_0x3fe003,_0xb01f19,!![]);}catch(_0x5a020f){return BPromise[_0x1b0e('0x1d')](_0x5a020f);}return _0x3fe003[_0x1b0e('0x1e')]();};}function saveUpdates(_0x56aafe,_0x8f419d){return function(_0x2a047b){if(_0x2a047b){return _0x2a047b['update'](_0x56aafe)[_0x1b0e('0x1f')](function(_0x503c84){return _0x503c84;});}return null;};}function removeEntity(_0x3967b2,_0x201902){return function(_0x4948d1){if(_0x4948d1){return _0x4948d1['destroy']()[_0x1b0e('0x1f')](function(){_0x3967b2[_0x1b0e('0x14')](0xcc)[_0x1b0e('0x15')]();});}};}function handleEntityNotFound(_0x166eb9,_0x35b9eb){return function(_0x4d6681){if(!_0x4d6681){_0x166eb9[_0x1b0e('0x13')](0x194);}return _0x4d6681;};}function handleError(_0x254d61,_0x2f018b){_0x2f018b=_0x2f018b||0x1f4;return function(_0x538266){logger[_0x1b0e('0x20')](_0x538266[_0x1b0e('0x21')]);if(_0x538266[_0x1b0e('0x22')]){delete _0x538266[_0x1b0e('0x22')];}_0x254d61[_0x1b0e('0x14')](_0x2f018b)[_0x1b0e('0x23')](_0x538266);};}exports['index']=function(_0x4074a4,_0x59629b){var _0x3c2254={},_0x3bb98a={},_0x3e2b5e={'count':0x0,'rows':[]};var _0x1cf638=_[_0x1b0e('0x24')](db['SquareRecording'][_0x1b0e('0x25')],function(_0x5c7576){return{'name':_0x5c7576[_0x1b0e('0x26')],'type':_0x5c7576[_0x1b0e('0x27')][_0x1b0e('0x28')]};});_0x3bb98a['model']=_[_0x1b0e('0x24')](_0x1cf638,_0x1b0e('0x22'));_0x3bb98a[_0x1b0e('0x29')]=_[_0x1b0e('0x2a')](_0x4074a4[_0x1b0e('0x29')]);_0x3bb98a[_0x1b0e('0x2b')]=_['intersection'](_0x3bb98a[_0x1b0e('0x2c')],_0x3bb98a[_0x1b0e('0x29')]);_0x3c2254[_0x1b0e('0x2d')]=_[_0x1b0e('0x2e')](_0x3bb98a['model'],qs[_0x1b0e('0x2f')](_0x4074a4[_0x1b0e('0x29')][_0x1b0e('0x2f')]));_0x3c2254['attributes']=_0x3c2254['attributes'][_0x1b0e('0x30')]?_0x3c2254[_0x1b0e('0x2d')]:_0x3bb98a[_0x1b0e('0x2c')];if(!_0x4074a4[_0x1b0e('0x29')][_0x1b0e('0x31')](_0x1b0e('0x32'))){_0x3c2254[_0x1b0e('0x1a')]=qs['limit'](_0x4074a4[_0x1b0e('0x29')][_0x1b0e('0x1a')]);_0x3c2254['offset']=qs[_0x1b0e('0x19')](_0x4074a4['query']['offset']);}_0x3c2254[_0x1b0e('0x33')]=qs['sort'](_0x4074a4['query']['sort']);_0x3c2254['where']=qs[_0x1b0e('0x2b')](_[_0x1b0e('0x34')](_0x4074a4['query'],_0x3bb98a[_0x1b0e('0x2b')]),_0x1cf638);if(_0x4074a4[_0x1b0e('0x29')][_0x1b0e('0x35')]){_0x3c2254[_0x1b0e('0x36')]=_[_0x1b0e('0x37')](_0x3c2254[_0x1b0e('0x36')],{'$or':_[_0x1b0e('0x24')](_0x1cf638,function(_0xeb072){if(_0xeb072['type']!==_0x1b0e('0x38')){var _0xf2eef7={};_0xf2eef7[_0xeb072[_0x1b0e('0x22')]]={'$like':'%'+_0x4074a4['query'][_0x1b0e('0x35')]+'%'};return _0xf2eef7;}})});}_0x3c2254=_[_0x1b0e('0x37')]({},_0x3c2254,_0x4074a4[_0x1b0e('0x39')]);var _0xe1740c={'where':_0x3c2254[_0x1b0e('0x36')]};return db[_0x1b0e('0x3a')][_0x1b0e('0x18')](_0xe1740c)['then'](function(_0x1530bc){_0x3e2b5e[_0x1b0e('0x18')]=_0x1530bc;if(_0x4074a4[_0x1b0e('0x29')][_0x1b0e('0x3b')]){_0x3c2254[_0x1b0e('0x3c')]=[{'all':!![]}];}return db['SquareRecording']['findAll'](_0x3c2254);})['then'](function(_0x453903){_0x3e2b5e[_0x1b0e('0x3d')]=_0x453903;return _0x3e2b5e;})['then'](respondWithFilteredResult(_0x59629b,_0x3c2254))[_0x1b0e('0x3e')](handleError(_0x59629b,null));};exports[_0x1b0e('0x3f')]=function(_0x5885e1,_0x47a570){var _0x31d082={'raw':!![],'where':{'id':_0x5885e1[_0x1b0e('0x40')]['id']}},_0x243afd={};_0x243afd[_0x1b0e('0x2c')]=_[_0x1b0e('0x2a')](db[_0x1b0e('0x3a')][_0x1b0e('0x25')]);_0x243afd[_0x1b0e('0x29')]=_[_0x1b0e('0x2a')](_0x5885e1[_0x1b0e('0x29')]);_0x243afd['filters']=_[_0x1b0e('0x2e')](_0x243afd[_0x1b0e('0x2c')],_0x243afd[_0x1b0e('0x29')]);_0x31d082[_0x1b0e('0x2d')]=_[_0x1b0e('0x2e')](_0x243afd[_0x1b0e('0x2c')],qs[_0x1b0e('0x2f')](_0x5885e1['query']['fields']));_0x31d082[_0x1b0e('0x2d')]=_0x31d082[_0x1b0e('0x2d')]['length']?_0x31d082[_0x1b0e('0x2d')]:_0x243afd[_0x1b0e('0x2c')];if(_0x5885e1[_0x1b0e('0x29')][_0x1b0e('0x3b')]){_0x31d082[_0x1b0e('0x3c')]=[{'all':!![]}];}_0x31d082=_[_0x1b0e('0x37')]({},_0x31d082,_0x5885e1[_0x1b0e('0x39')]);return db[_0x1b0e('0x3a')][_0x1b0e('0x41')](_0x31d082)[_0x1b0e('0x1f')](handleEntityNotFound(_0x47a570,null))[_0x1b0e('0x1f')](respondWithResult(_0x47a570,null))[_0x1b0e('0x3e')](handleError(_0x47a570,null));};exports[_0x1b0e('0x42')]=function(_0x66ee0f,_0x506e82){return db[_0x1b0e('0x3a')][_0x1b0e('0x42')](_0x66ee0f[_0x1b0e('0x43')],{})[_0x1b0e('0x1f')](respondWithResult(_0x506e82,0xc9))[_0x1b0e('0x3e')](handleError(_0x506e82,null));};exports[_0x1b0e('0x44')]=function(_0x40de16,_0x5a151e){if(_0x40de16[_0x1b0e('0x43')]['id']){delete _0x40de16[_0x1b0e('0x43')]['id'];}return db[_0x1b0e('0x3a')][_0x1b0e('0x41')]({'where':{'id':_0x40de16[_0x1b0e('0x40')]['id']}})[_0x1b0e('0x1f')](handleEntityNotFound(_0x5a151e,null))[_0x1b0e('0x1f')](saveUpdates(_0x40de16[_0x1b0e('0x43')],null))[_0x1b0e('0x1f')](respondWithResult(_0x5a151e,null))['catch'](handleError(_0x5a151e,null));};exports[_0x1b0e('0x45')]=function(_0x2b8aa6,_0x5b595a,_0x1b531d){var _0x4dfebb=require(_0x1b0e('0x46'));var _0x1977cc=![];var _0x5a2c92={};if(_0x2b8aa6[_0x1b0e('0x29')][_0x1b0e('0x27')]&&_0x2b8aa6[_0x1b0e('0x29')][_0x1b0e('0x27')]===_0x1b0e('0x47')){_0x5a2c92[_0x1b0e('0x47')]=_0x2b8aa6[_0x1b0e('0x40')]['id'];}else{_0x5a2c92['id']=_0x2b8aa6[_0x1b0e('0x40')]['id'];}return db[_0x1b0e('0x3a')][_0x1b0e('0x41')]({'where':_0x5a2c92,'attributes':['id','savePath',_0x1b0e('0x48')],'raw':!![]})['then'](handleEntityNotFound(_0x5b595a,null))[_0x1b0e('0x1f')](function(_0x509bdc){if(_0x509bdc){var _0xbdc96b=_0x509bdc[_0x1b0e('0x49')];var _0x579038=util[_0x1b0e('0x4a')]('%s.cypher',_0xbdc96b);if(fs[_0x1b0e('0x4b')](_0x579038)){_0x1977cc=!![];return _0x4dfebb[_0x1b0e('0x4c')](_0x579038,_0xbdc96b,config['secrets']['recording'])[_0x1b0e('0x1f')](function(){return _0x509bdc;});}return _0x509bdc;}})[_0x1b0e('0x1f')](function(_0x4abd9b){if(_0x4abd9b){var _0x2f9a73=_0x4abd9b[_0x1b0e('0x49')];if(!fs[_0x1b0e('0x4b')](_0x2f9a73)){throw new db[(_0x1b0e('0x4d'))][(_0x1b0e('0x4e'))](_0x1b0e('0x4f'));}if(_0x4abd9b[_0x1b0e('0x48')]){return _0x5b595a[_0x1b0e('0x45')](_0x2f9a73,_0x4abd9b[_0x1b0e('0x48')]+path[_0x1b0e('0x50')](_0x2f9a73),function(){if(_0x1977cc){fs['unlink'](_0x2f9a73);}});}else{return _0x5b595a[_0x1b0e('0x45')](_0x2f9a73,function(_0x5b8208){if(_0x1977cc){fs[_0x1b0e('0x51')](_0x2f9a73);}});}}})['catch'](function(_0x1ed04b){if(_0x1ed04b[_0x1b0e('0x52')]===_0x1b0e('0x4f')){_0x5b595a[_0x1b0e('0x14')](0x194)[_0x1b0e('0x23')](_0x1b0e('0x53'));}else{return handleError(_0x5b595a,null);}});};exports[_0x1b0e('0x54')]=function(_0x1e387d,_0x5ecb73){return db[_0x1b0e('0x3a')][_0x1b0e('0x41')]({'where':{'id':_0x1e387d[_0x1b0e('0x40')]['id']}})[_0x1b0e('0x1f')](function(_0x310976){if(_['isNil'](_0x310976)){throw new ReferenceError('Entity\x20not\x20found');}return _0x310976;})[_0x1b0e('0x1f')](function(_0x56daf4){var _0xaea307=_0x56daf4[_0x1b0e('0x49')];logger[_0x1b0e('0x55')](_0x1b0e('0x56'),_0xaea307);if(!_[_0x1b0e('0x57')](_0x56daf4[_0x1b0e('0x49')])&&fs['existsSync'](_0xaea307)){logger['info'](_0x1b0e('0x58')+_0xaea307+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs['unlinkSync'](_0xaea307);}_0xaea307=_0xaea307+_0x1b0e('0x59');if(!_[_0x1b0e('0x57')](_0x56daf4[_0x1b0e('0x49')])&&fs['existsSync'](_0xaea307)){logger[_0x1b0e('0x55')]('File:\x20\x22'+_0xaea307+_0x1b0e('0x5a'));fs[_0x1b0e('0x5b')](_0xaea307);}return _0x56daf4;})[_0x1b0e('0x1f')](function(_0x2b043e){if(!_0x2b043e)throw new InternalError();return _0x2b043e[_0x1b0e('0x54')]();})[_0x1b0e('0x1f')](function(){_0x5ecb73[_0x1b0e('0x14')](0xcc)[_0x1b0e('0x15')]();})['catch'](handleError(_0x5ecb73,null));};
\ No newline at end of file
+var _0x4101=['existsSync','decryptFile','secrets','Sequelize','ValidationError','SquareRecording\x20not\x20found','unlink','message','send','Not\x20found','isNil','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','unlinkSync','.cypher','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','jsforce','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','Content-Range','reject','save','update','then','destroy','end','error','index','map','rawAttributes','fieldName','type','key','model','name','query','keys','attributes','fields','length','hasOwnProperty','sort','pick','filter','merge','where','VIRTUAL','options','SquareRecording','count','include','rows','catch','filters','intersection','includeAll','find','create','body','download','../../components/encryptor','uniqueid','params','savePath','filename','%s.cypher'];(function(_0x494e72,_0x5f1178){var _0x2d3947=function(_0x165f2b){while(--_0x165f2b){_0x494e72['push'](_0x494e72['shift']());}};_0x2d3947(++_0x5f1178);}(_0x4101,0xcb));var _0x1410=function(_0x4f1e52,_0x3f2100){_0x4f1e52=_0x4f1e52-0x0;var _0x213a54=_0x4101[_0x4f1e52];return _0x213a54;};'use strict';var emlformat=require(_0x1410('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x1410('0x1'));var rp=require(_0x1410('0x2'));var moment=require(_0x1410('0x3'));var BPromise=require(_0x1410('0x4'));var Mustache=require(_0x1410('0x5'));var util=require(_0x1410('0x6'));var path=require(_0x1410('0x7'));var sox=require(_0x1410('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('squel');var crypto=require('crypto');var jsforce=require(_0x1410('0x9'));var deskjs=require(_0x1410('0xa'));var toCsv=require(_0x1410('0xb'));var querystring=require(_0x1410('0xc'));var Papa=require('papaparse');var Redis=require(_0x1410('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x1410('0xe'));var as=require(_0x1410('0xf'));var hardwareService=require(_0x1410('0x10'));var logger=require(_0x1410('0x11'))(_0x1410('0x12'));var utils=require(_0x1410('0x13'));var config=require(_0x1410('0x14'));var licenseUtil=require(_0x1410('0x15'));var db=require(_0x1410('0x16'))['db'];function respondWithStatusCode(_0x31bc0b,_0x2f5ca2){_0x2f5ca2=_0x2f5ca2||0xcc;return function(_0xdb770c){if(_0xdb770c){return _0x31bc0b[_0x1410('0x17')](_0x2f5ca2);}return _0x31bc0b[_0x1410('0x18')](_0x2f5ca2)['end']();};}function respondWithResult(_0x34d185,_0x272a2b){_0x272a2b=_0x272a2b||0xc8;return function(_0x40eeed){if(_0x40eeed){return _0x34d185[_0x1410('0x18')](_0x272a2b)[_0x1410('0x19')](_0x40eeed);}};}function respondWithFilteredResult(_0x5a8eea,_0x15bddd){return function(_0x21ef64){if(_0x21ef64){var _0x723220=typeof _0x15bddd[_0x1410('0x1a')]===_0x1410('0x1b')&&typeof _0x15bddd[_0x1410('0x1c')]==='undefined';var _0x5e58bb=_0x21ef64['count'];var _0x51dd24=_0x723220?0x0:_0x15bddd['offset'];var _0x4bb7f6=_0x723220?_0x21ef64['count']:_0x15bddd[_0x1410('0x1a')]+_0x15bddd[_0x1410('0x1c')];var _0x1549ba;if(_0x4bb7f6>=_0x5e58bb){_0x4bb7f6=_0x5e58bb;_0x1549ba=0xc8;}else{_0x1549ba=0xce;}_0x5a8eea['status'](_0x1549ba);return _0x5a8eea['set'](_0x1410('0x1d'),_0x51dd24+'-'+_0x4bb7f6+'/'+_0x5e58bb)[_0x1410('0x19')](_0x21ef64);}return null;};}function patchUpdates(_0x56a9b3){return function(_0x477f94){try{jsonpatch['apply'](_0x477f94,_0x56a9b3,!![]);}catch(_0x523e82){return BPromise[_0x1410('0x1e')](_0x523e82);}return _0x477f94[_0x1410('0x1f')]();};}function saveUpdates(_0x31376d,_0x197592){return function(_0x1ba28e){if(_0x1ba28e){return _0x1ba28e[_0x1410('0x20')](_0x31376d)[_0x1410('0x21')](function(_0xb17a21){return _0xb17a21;});}return null;};}function removeEntity(_0x33f4b2,_0x36038b){return function(_0x59d421){if(_0x59d421){return _0x59d421[_0x1410('0x22')]()[_0x1410('0x21')](function(){_0x33f4b2[_0x1410('0x18')](0xcc)[_0x1410('0x23')]();});}};}function handleEntityNotFound(_0x1c4a9b,_0x4ce99a){return function(_0x2f0a8d){if(!_0x2f0a8d){_0x1c4a9b[_0x1410('0x17')](0x194);}return _0x2f0a8d;};}function handleError(_0x804499,_0x1230f4){_0x1230f4=_0x1230f4||0x1f4;return function(_0x416177){logger[_0x1410('0x24')](_0x416177['stack']);if(_0x416177['name']){delete _0x416177['name'];}_0x804499[_0x1410('0x18')](_0x1230f4)['send'](_0x416177);};}exports[_0x1410('0x25')]=function(_0x512549,_0x40dabf){var _0x4269d0={},_0x5f8b2={},_0x3e5f3c={'count':0x0,'rows':[]};var _0x2aa482=_[_0x1410('0x26')](db['SquareRecording'][_0x1410('0x27')],function(_0x3e3b09){return{'name':_0x3e3b09[_0x1410('0x28')],'type':_0x3e3b09[_0x1410('0x29')][_0x1410('0x2a')]};});_0x5f8b2[_0x1410('0x2b')]=_[_0x1410('0x26')](_0x2aa482,_0x1410('0x2c'));_0x5f8b2[_0x1410('0x2d')]=_[_0x1410('0x2e')](_0x512549[_0x1410('0x2d')]);_0x5f8b2['filters']=_['intersection'](_0x5f8b2[_0x1410('0x2b')],_0x5f8b2[_0x1410('0x2d')]);_0x4269d0[_0x1410('0x2f')]=_['intersection'](_0x5f8b2['model'],qs[_0x1410('0x30')](_0x512549['query'][_0x1410('0x30')]));_0x4269d0[_0x1410('0x2f')]=_0x4269d0[_0x1410('0x2f')][_0x1410('0x31')]?_0x4269d0['attributes']:_0x5f8b2[_0x1410('0x2b')];if(!_0x512549[_0x1410('0x2d')][_0x1410('0x32')]('nolimit')){_0x4269d0[_0x1410('0x1c')]=qs[_0x1410('0x1c')](_0x512549['query'][_0x1410('0x1c')]);_0x4269d0[_0x1410('0x1a')]=qs[_0x1410('0x1a')](_0x512549['query'][_0x1410('0x1a')]);}_0x4269d0['order']=qs[_0x1410('0x33')](_0x512549[_0x1410('0x2d')]['sort']);_0x4269d0['where']=qs['filters'](_[_0x1410('0x34')](_0x512549['query'],_0x5f8b2['filters']),_0x2aa482);if(_0x512549['query'][_0x1410('0x35')]){_0x4269d0['where']=_[_0x1410('0x36')](_0x4269d0[_0x1410('0x37')],{'$or':_[_0x1410('0x26')](_0x2aa482,function(_0x2a27d1){if(_0x2a27d1['type']!==_0x1410('0x38')){var _0x324296={};_0x324296[_0x2a27d1[_0x1410('0x2c')]]={'$like':'%'+_0x512549[_0x1410('0x2d')][_0x1410('0x35')]+'%'};return _0x324296;}})});}_0x4269d0=_[_0x1410('0x36')]({},_0x4269d0,_0x512549[_0x1410('0x39')]);var _0x1f7bdb={'where':_0x4269d0[_0x1410('0x37')]};return db[_0x1410('0x3a')][_0x1410('0x3b')](_0x1f7bdb)[_0x1410('0x21')](function(_0x2174aa){_0x3e5f3c[_0x1410('0x3b')]=_0x2174aa;if(_0x512549['query']['includeAll']){_0x4269d0[_0x1410('0x3c')]=[{'all':!![]}];}return db[_0x1410('0x3a')]['findAll'](_0x4269d0);})[_0x1410('0x21')](function(_0xa6ac39){_0x3e5f3c[_0x1410('0x3d')]=_0xa6ac39;return _0x3e5f3c;})[_0x1410('0x21')](respondWithFilteredResult(_0x40dabf,_0x4269d0))[_0x1410('0x3e')](handleError(_0x40dabf,null));};exports['show']=function(_0x25dbca,_0x30f97b){var _0x275802={'raw':!![],'where':{'id':_0x25dbca['params']['id']}},_0x20f211={};_0x20f211[_0x1410('0x2b')]=_[_0x1410('0x2e')](db[_0x1410('0x3a')][_0x1410('0x27')]);_0x20f211['query']=_[_0x1410('0x2e')](_0x25dbca[_0x1410('0x2d')]);_0x20f211[_0x1410('0x3f')]=_[_0x1410('0x40')](_0x20f211[_0x1410('0x2b')],_0x20f211[_0x1410('0x2d')]);_0x275802[_0x1410('0x2f')]=_[_0x1410('0x40')](_0x20f211[_0x1410('0x2b')],qs[_0x1410('0x30')](_0x25dbca['query'][_0x1410('0x30')]));_0x275802[_0x1410('0x2f')]=_0x275802[_0x1410('0x2f')][_0x1410('0x31')]?_0x275802[_0x1410('0x2f')]:_0x20f211[_0x1410('0x2b')];if(_0x25dbca[_0x1410('0x2d')][_0x1410('0x41')]){_0x275802['include']=[{'all':!![]}];}_0x275802=_[_0x1410('0x36')]({},_0x275802,_0x25dbca[_0x1410('0x39')]);return db['SquareRecording'][_0x1410('0x42')](_0x275802)['then'](handleEntityNotFound(_0x30f97b,null))[_0x1410('0x21')](respondWithResult(_0x30f97b,null))[_0x1410('0x3e')](handleError(_0x30f97b,null));};exports['create']=function(_0x24c255,_0x3b91f2){return db[_0x1410('0x3a')][_0x1410('0x43')](_0x24c255[_0x1410('0x44')],{})[_0x1410('0x21')](respondWithResult(_0x3b91f2,0xc9))['catch'](handleError(_0x3b91f2,null));};exports[_0x1410('0x20')]=function(_0x5bff35,_0x2c6180){if(_0x5bff35[_0x1410('0x44')]['id']){delete _0x5bff35['body']['id'];}return db['SquareRecording']['find']({'where':{'id':_0x5bff35['params']['id']}})[_0x1410('0x21')](handleEntityNotFound(_0x2c6180,null))['then'](saveUpdates(_0x5bff35[_0x1410('0x44')],null))[_0x1410('0x21')](respondWithResult(_0x2c6180,null))[_0x1410('0x3e')](handleError(_0x2c6180,null));};exports[_0x1410('0x45')]=function(_0x39c688,_0x3572a5,_0x30986c){var _0x156380=require(_0x1410('0x46'));var _0x36881c=![];var _0x39394d={};if(_0x39c688[_0x1410('0x2d')][_0x1410('0x29')]&&_0x39c688[_0x1410('0x2d')][_0x1410('0x29')]==='uniqueid'){_0x39394d[_0x1410('0x47')]=_0x39c688[_0x1410('0x48')]['id'];}else{_0x39394d['id']=_0x39c688['params']['id'];}return db['SquareRecording'][_0x1410('0x42')]({'where':_0x39394d,'attributes':['id',_0x1410('0x49'),_0x1410('0x4a')],'raw':!![]})[_0x1410('0x21')](handleEntityNotFound(_0x3572a5,null))[_0x1410('0x21')](function(_0x288759){if(_0x288759){var _0x41ebe3=_0x288759[_0x1410('0x49')];var _0xebf81c=util['format'](_0x1410('0x4b'),_0x41ebe3);if(fs[_0x1410('0x4c')](_0xebf81c)){_0x36881c=!![];return _0x156380[_0x1410('0x4d')](_0xebf81c,_0x41ebe3,config[_0x1410('0x4e')]['recording'])[_0x1410('0x21')](function(){return _0x288759;});}return _0x288759;}})[_0x1410('0x21')](function(_0x3c644e){if(_0x3c644e){var _0x57180a=_0x3c644e[_0x1410('0x49')];if(!fs[_0x1410('0x4c')](_0x57180a)){throw new db[(_0x1410('0x4f'))][(_0x1410('0x50'))](_0x1410('0x51'));}if(_0x3c644e[_0x1410('0x4a')]){return _0x3572a5[_0x1410('0x45')](_0x57180a,_0x3c644e[_0x1410('0x4a')]+path['extname'](_0x57180a),function(){if(_0x36881c){fs['unlink'](_0x57180a);}});}else{return _0x3572a5[_0x1410('0x45')](_0x57180a,function(_0x5a838d){if(_0x36881c){fs[_0x1410('0x52')](_0x57180a);}});}}})[_0x1410('0x3e')](function(_0x559c7c){if(_0x559c7c[_0x1410('0x53')]==='SquareRecording\x20not\x20found'){_0x3572a5['status'](0x194)[_0x1410('0x54')](_0x1410('0x55'));}else{return handleError(_0x3572a5,null);}});};exports[_0x1410('0x22')]=function(_0x8df6e7,_0x8b7ac0){return db[_0x1410('0x3a')][_0x1410('0x42')]({'where':{'id':_0x8df6e7['params']['id']}})[_0x1410('0x21')](function(_0x5b3172){if(_[_0x1410('0x56')](_0x5b3172)){throw new ReferenceError('Entity\x20not\x20found');}return _0x5b3172;})[_0x1410('0x21')](function(_0x168e77){var _0xa72e35=_0x168e77[_0x1410('0x49')];logger[_0x1410('0x57')](_0x1410('0x58'),_0xa72e35);if(!_['isNil'](_0x168e77[_0x1410('0x49')])&&fs[_0x1410('0x4c')](_0xa72e35)){logger[_0x1410('0x57')](_0x1410('0x59')+_0xa72e35+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x1410('0x5a')](_0xa72e35);}_0xa72e35=_0xa72e35+_0x1410('0x5b');if(!_[_0x1410('0x56')](_0x168e77['savePath'])&&fs[_0x1410('0x4c')](_0xa72e35)){logger[_0x1410('0x57')](_0x1410('0x59')+_0xa72e35+_0x1410('0x5c'));fs[_0x1410('0x5a')](_0xa72e35);}return _0x168e77;})[_0x1410('0x21')](function(_0x239d93){if(!_0x239d93)throw new InternalError();return _0x239d93['destroy']();})[_0x1410('0x21')](function(){_0x8b7ac0[_0x1410('0x18')](0xcc)['end']();})[_0x1410('0x3e')](handleError(_0x8b7ac0,null));};
\ No newline at end of file
index b57f948..8fcf28b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe451=['../../config/environment','exports','SquareRecording','square_recordings','../../config/logger','request-promise','path','rimraf'];(function(_0x42ea7e,_0x5075d2){var _0x567e8c=function(_0x503bea){while(--_0x503bea){_0x42ea7e['push'](_0x42ea7e['shift']());}};_0x567e8c(++_0x5075d2);}(_0xe451,0xec));var _0x1e45=function(_0x2069a6,_0x1bb4e1){_0x2069a6=_0x2069a6-0x0;var _0x22a791=_0xe451[_0x2069a6];return _0x22a791;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1e45('0x0'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x1e45('0x1'));var fs=require('fs');var path=require(_0x1e45('0x2'));var rimraf=require(_0x1e45('0x3'));var config=require(_0x1e45('0x4'));var attributes=require('./squareRecording.attributes');module[_0x1e45('0x5')]=function(_0x1a163c,_0x115f88){return _0x1a163c['define'](_0x1e45('0x6'),attributes,{'tableName':_0x1e45('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x65cb=['request-promise','path','rimraf','../../config/environment','./squareRecording.attributes','define','SquareRecording','square_recordings','lodash','../../config/logger','api','moment'];(function(_0x7c8b94,_0x1024bb){var _0x197a8c=function(_0x372220){while(--_0x372220){_0x7c8b94['push'](_0x7c8b94['shift']());}};_0x197a8c(++_0x1024bb);}(_0x65cb,0xa4));var _0xb65c=function(_0x4b7bc5,_0x18b3b0){_0x4b7bc5=_0x4b7bc5-0x0;var _0x5ec3ba=_0x65cb[_0x4b7bc5];return _0x5ec3ba;};'use strict';var _=require(_0xb65c('0x0'));var util=require('util');var logger=require(_0xb65c('0x1'))(_0xb65c('0x2'));var moment=require(_0xb65c('0x3'));var BPromise=require('bluebird');var rp=require(_0xb65c('0x4'));var fs=require('fs');var path=require(_0xb65c('0x5'));var rimraf=require(_0xb65c('0x6'));var config=require(_0xb65c('0x7'));var attributes=require(_0xb65c('0x8'));module['exports']=function(_0x38d414,_0x1c6718){return _0x38d414[_0xb65c('0x9')](_0xb65c('0xa'),attributes,{'tableName':_0xb65c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c4536f1..ecb5022 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba4d=['body','options','raw','lodash','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SquareRecording,\x20%s,\x20%s','request\x20sent','debug','SquareRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateSquareRecording','SquareRecording','create'];(function(_0x35e534,_0x1652a9){var _0x4ea57f=function(_0xd8fae){while(--_0xd8fae){_0x35e534['push'](_0x35e534['shift']());}};_0x4ea57f(++_0x1652a9);}(_0xba4d,0xeb));var _0xdba4=function(_0x39bc44,_0x1d4373){_0x39bc44=_0x39bc44-0x0;var _0x2916d8=_0xba4d[_0x39bc44];return _0x2916d8;};'use strict';var _=require(_0xdba4('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xdba4('0x1'));var db=require(_0xdba4('0x2'))['db'];var utils=require(_0xdba4('0x3'));var logger=require(_0xdba4('0x4'))(_0xdba4('0x5'));var config=require(_0xdba4('0x6'));var jayson=require(_0xdba4('0x7'));var client=jayson[_0xdba4('0x8')][_0xdba4('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1acfb5,_0x9c5bcb,_0x1236f4){return new BPromise(function(_0x47edf0,_0x462b0a){return client[_0xdba4('0xa')](_0x1acfb5,_0x1236f4)[_0xdba4('0xb')](function(_0x388b35){logger[_0xdba4('0xc')](_0xdba4('0xd'),_0x9c5bcb,_0xdba4('0xe'));logger[_0xdba4('0xf')](_0xdba4('0x10'),_0x9c5bcb,'request\x20sent',JSON[_0xdba4('0x11')](_0x388b35));if(_0x388b35[_0xdba4('0x12')]){if(_0x388b35[_0xdba4('0x12')][_0xdba4('0x13')]===0x1f4){logger[_0xdba4('0x12')](_0xdba4('0xd'),_0x9c5bcb,_0x388b35['error'][_0xdba4('0x14')]);return _0x462b0a(_0x388b35['error']['message']);}logger[_0xdba4('0x12')](_0xdba4('0xd'),_0x9c5bcb,_0x388b35['error'][_0xdba4('0x14')]);return _0x47edf0(_0x388b35['error'][_0xdba4('0x14')]);}else{logger['info'](_0xdba4('0xd'),_0x9c5bcb,_0xdba4('0xe'));_0x47edf0(_0x388b35[_0xdba4('0x15')][_0xdba4('0x14')]);}})[_0xdba4('0x16')](function(_0x3dfd8e){logger[_0xdba4('0x12')]('SquareRecording,\x20%s,\x20%s',_0x9c5bcb,_0x3dfd8e);_0x462b0a(_0x3dfd8e);});});}exports[_0xdba4('0x17')]=function(_0x4089a5){var _0x4c3f3d=this;return new Promise(function(_0x44e0cc,_0x2a6727){return db[_0xdba4('0x18')][_0xdba4('0x19')](_0x4089a5[_0xdba4('0x1a')],{'raw':_0x4089a5[_0xdba4('0x1b')]?_0x4089a5[_0xdba4('0x1b')][_0xdba4('0x1c')]===undefined?!![]:![]:!![]})[_0xdba4('0xb')](function(_0x449f6f){logger[_0xdba4('0xc')]('CreateSquareRecording',_0x4089a5);logger[_0xdba4('0xf')](_0xdba4('0x17'),_0x4089a5,JSON['stringify'](_0x449f6f));_0x44e0cc(_0x449f6f);})[_0xdba4('0x16')](function(_0x290f0b){logger[_0xdba4('0x12')]('CreateSquareRecording',_0x290f0b[_0xdba4('0x14')],_0x4089a5);_0x2a6727(_0x4c3f3d[_0xdba4('0x12')](0x1f4,_0x290f0b[_0xdba4('0x14')]));});});};
\ No newline at end of file
+var _0xc5e8=['then','SquareRecording,\x20%s,\x20%s','request\x20sent','debug','SquareRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','CreateSquareRecording','SquareRecording','body','options','raw','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','http','request'];(function(_0x43b833,_0x345a9e){var _0x5085d0=function(_0x3211b8){while(--_0x3211b8){_0x43b833['push'](_0x43b833['shift']());}};_0x5085d0(++_0x345a9e);}(_0xc5e8,0x1e4));var _0x8c5e=function(_0x74594c,_0x15bdc4){_0x74594c=_0x74594c-0x0;var _0x5164a9=_0xc5e8[_0x74594c];return _0x5164a9;};'use strict';var _=require('lodash');var util=require(_0x8c5e('0x0'));var moment=require('moment');var BPromise=require(_0x8c5e('0x1'));var rs=require(_0x8c5e('0x2'));var fs=require('fs');var Redis=require(_0x8c5e('0x3'));var db=require(_0x8c5e('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x8c5e('0x5'))(_0x8c5e('0x6'));var config=require('../../config/environment');var jayson=require(_0x8c5e('0x7'));var client=jayson['client'][_0x8c5e('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5dfa9b,_0x54e8ac,_0x25078b){return new BPromise(function(_0x295f6,_0x30bd7e){return client[_0x8c5e('0x9')](_0x5dfa9b,_0x25078b)[_0x8c5e('0xa')](function(_0x38e358){logger['info'](_0x8c5e('0xb'),_0x54e8ac,_0x8c5e('0xc'));logger[_0x8c5e('0xd')](_0x8c5e('0xe'),_0x54e8ac,_0x8c5e('0xc'),JSON[_0x8c5e('0xf')](_0x38e358));if(_0x38e358['error']){if(_0x38e358[_0x8c5e('0x10')][_0x8c5e('0x11')]===0x1f4){logger[_0x8c5e('0x10')](_0x8c5e('0xb'),_0x54e8ac,_0x38e358['error'][_0x8c5e('0x12')]);return _0x30bd7e(_0x38e358['error'][_0x8c5e('0x12')]);}logger['error'](_0x8c5e('0xb'),_0x54e8ac,_0x38e358[_0x8c5e('0x10')][_0x8c5e('0x12')]);return _0x295f6(_0x38e358[_0x8c5e('0x10')][_0x8c5e('0x12')]);}else{logger[_0x8c5e('0x13')](_0x8c5e('0xb'),_0x54e8ac,'request\x20sent');_0x295f6(_0x38e358['result']['message']);}})[_0x8c5e('0x14')](function(_0x441ec6){logger[_0x8c5e('0x10')](_0x8c5e('0xb'),_0x54e8ac,_0x441ec6);_0x30bd7e(_0x441ec6);});});}exports[_0x8c5e('0x15')]=function(_0x2d520f){var _0x514578=this;return new Promise(function(_0x2363ad,_0x4d2f9b){return db[_0x8c5e('0x16')]['create'](_0x2d520f[_0x8c5e('0x17')],{'raw':_0x2d520f[_0x8c5e('0x18')]?_0x2d520f[_0x8c5e('0x18')][_0x8c5e('0x19')]===undefined?!![]:![]:!![]})[_0x8c5e('0xa')](function(_0x227f05){logger[_0x8c5e('0x13')]('CreateSquareRecording',_0x2d520f);logger[_0x8c5e('0xd')](_0x8c5e('0x15'),_0x2d520f,JSON[_0x8c5e('0xf')](_0x227f05));_0x2363ad(_0x227f05);})[_0x8c5e('0x14')](function(_0x123dd1){logger['error']('CreateSquareRecording',_0x123dd1[_0x8c5e('0x12')],_0x2d520f);_0x4d2f9b(_0x514578[_0x8c5e('0x10')](0x1f4,_0x123dd1[_0x8c5e('0x12')]));});});};
\ No newline at end of file
index abe6348..8e3ce75 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(_0x58fd70,_0x3eb9b4){var _0x1ef5dd=function(_0x37c535){while(--_0x37c535){_0x58fd70['push'](_0x58fd70['shift']());}};_0x1ef5dd(++_0x3eb9b4);}(_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 _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(_0x145d17,_0x38a899){var _0x5b7ec6=function(_0x51806f){while(--_0x51806f){_0x145d17['push'](_0x145d17['shift']());}};_0x5b7ec6(++_0x38a899);}(_0xbaf0,0x12a));var _0x0baf=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0xbaf0[_0x465028];return _0xb783d4;};'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
index a489eb1..af49701 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e1d=['sequelize','exports','STRING','DATE','BOOLEAN'];(function(_0x2f4f45,_0x47aa32){var _0xe820c4=function(_0x3e89ce){while(--_0x3e89ce){_0x2f4f45['push'](_0x2f4f45['shift']());}};_0xe820c4(++_0x47aa32);}(_0x6e1d,0xfa));var _0xd6e1=function(_0x58dc25,_0x49b9d5){_0x58dc25=_0x58dc25-0x0;var _0x21b0a7=_0x6e1d[_0x58dc25];return _0x21b0a7;};'use strict';var Sequelize=require(_0xd6e1('0x0'));module[_0xd6e1('0x1')]={'network':{'type':Sequelize[_0xd6e1('0x2')]},'network_script':{'type':Sequelize[_0xd6e1('0x2')]},'request':{'type':Sequelize[_0xd6e1('0x2')]},'channel':{'type':Sequelize[_0xd6e1('0x2')]},'language':{'type':Sequelize[_0xd6e1('0x2')]},'type':{'type':Sequelize[_0xd6e1('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'version':{'type':Sequelize[_0xd6e1('0x2')]},'callerid':{'type':Sequelize[_0xd6e1('0x2')]},'calleridname':{'type':Sequelize[_0xd6e1('0x2')]},'callingpres':{'type':Sequelize['STRING']},'callingani2':{'type':Sequelize[_0xd6e1('0x2')]},'callington':{'type':Sequelize['STRING']},'callingtns':{'type':Sequelize[_0xd6e1('0x2')]},'dnid':{'type':Sequelize['STRING']},'rdnis':{'type':Sequelize[_0xd6e1('0x2')]},'context':{'type':Sequelize[_0xd6e1('0x2')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xd6e1('0x2')]},'enhanced':{'type':Sequelize[_0xd6e1('0x2')]},'accountcode':{'type':Sequelize['STRING']},'threadid':{'type':Sequelize[_0xd6e1('0x2')]},'project_name':{'type':Sequelize[_0xd6e1('0x2')]},'joinAt':{'type':Sequelize[_0xd6e1('0x3')]},'leaveAt':{'type':Sequelize[_0xd6e1('0x3')]},'bot':{'type':Sequelize[_0xd6e1('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0x5323=['STRING','sequelize','exports'];(function(_0x3d6268,_0x9be257){var _0x18574e=function(_0x1740eb){while(--_0x1740eb){_0x3d6268['push'](_0x3d6268['shift']());}};_0x18574e(++_0x9be257);}(_0x5323,0x88));var _0x3532=function(_0xa1679a,_0x440677){_0xa1679a=_0xa1679a-0x0;var _0x3db958=_0x5323[_0xa1679a];return _0x3db958;};'use strict';var Sequelize=require(_0x3532('0x0'));module[_0x3532('0x1')]={'network':{'type':Sequelize[_0x3532('0x2')]},'network_script':{'type':Sequelize[_0x3532('0x2')]},'request':{'type':Sequelize[_0x3532('0x2')]},'channel':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x3532('0x2')]},'type':{'type':Sequelize[_0x3532('0x2')]},'uniqueid':{'type':Sequelize[_0x3532('0x2')]},'version':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x3532('0x2')]},'calleridname':{'type':Sequelize[_0x3532('0x2')]},'callingpres':{'type':Sequelize[_0x3532('0x2')]},'callingani2':{'type':Sequelize['STRING']},'callington':{'type':Sequelize[_0x3532('0x2')]},'callingtns':{'type':Sequelize['STRING']},'dnid':{'type':Sequelize[_0x3532('0x2')]},'rdnis':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x3532('0x2')]},'extension':{'type':Sequelize[_0x3532('0x2')]},'priority':{'type':Sequelize['STRING']},'enhanced':{'type':Sequelize[_0x3532('0x2')]},'accountcode':{'type':Sequelize[_0x3532('0x2')]},'threadid':{'type':Sequelize[_0x3532('0x2')]},'project_name':{'type':Sequelize[_0x3532('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'bot':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 52757a8..a1b99bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80fe=['offset','limit','count','set','Content-Range','reject','save','update','then','destroy','error','name','send','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','SquareReport','includeAll','include','rows','show','params','rawAttributes','options','find','catch','create','body','describe','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','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status'];(function(_0x187d8a,_0x2ae39f){var _0xcac785=function(_0x52b4ad){while(--_0x52b4ad){_0x187d8a['push'](_0x187d8a['shift']());}};_0xcac785(++_0x2ae39f);}(_0x80fe,0x10a));var _0xe80f=function(_0x114094,_0x413d3f){_0x114094=_0x114094-0x0;var _0x10a923=_0x80fe[_0x114094];return _0x10a923;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xe80f('0x0'));var jsonpatch=require(_0xe80f('0x1'));var rp=require(_0xe80f('0x2'));var moment=require(_0xe80f('0x3'));var BPromise=require(_0xe80f('0x4'));var Mustache=require(_0xe80f('0x5'));var util=require(_0xe80f('0x6'));var path=require('path');var sox=require(_0xe80f('0x7'));var csv=require(_0xe80f('0x8'));var ejs=require(_0xe80f('0x9'));var fs=require('fs');var fs_extra=require(_0xe80f('0xa'));var _=require('lodash');var squel=require(_0xe80f('0xb'));var crypto=require(_0xe80f('0xc'));var jsforce=require(_0xe80f('0xd'));var deskjs=require(_0xe80f('0xe'));var toCsv=require(_0xe80f('0x8'));var querystring=require(_0xe80f('0xf'));var Papa=require(_0xe80f('0x10'));var Redis=require(_0xe80f('0x11'));var authService=require(_0xe80f('0x12'));var qs=require(_0xe80f('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe80f('0x14'));var logger=require(_0xe80f('0x15'))(_0xe80f('0x16'));var utils=require(_0xe80f('0x17'));var config=require(_0xe80f('0x18'));var licenseUtil=require(_0xe80f('0x19'));var db=require(_0xe80f('0x1a'))['db'];function respondWithStatusCode(_0x1aea88,_0x53c177){_0x53c177=_0x53c177||0xcc;return function(_0x2c01c2){if(_0x2c01c2){return _0x1aea88[_0xe80f('0x1b')](_0x53c177);}return _0x1aea88['status'](_0x53c177)[_0xe80f('0x1c')]();};}function respondWithResult(_0x590408,_0x390178){_0x390178=_0x390178||0xc8;return function(_0x18431e){if(_0x18431e){return _0x590408[_0xe80f('0x1d')](_0x390178)['json'](_0x18431e);}};}function respondWithFilteredResult(_0x34865b,_0x4974d1){return function(_0x21f788){if(_0x21f788){var _0x1fd910=typeof _0x4974d1[_0xe80f('0x1e')]==='undefined'&&typeof _0x4974d1[_0xe80f('0x1f')]==='undefined';var _0x598783=_0x21f788[_0xe80f('0x20')];var _0x3620bb=_0x1fd910?0x0:_0x4974d1[_0xe80f('0x1e')];var _0x21652f=_0x1fd910?_0x21f788[_0xe80f('0x20')]:_0x4974d1[_0xe80f('0x1e')]+_0x4974d1[_0xe80f('0x1f')];var _0x25ad0f;if(_0x21652f>=_0x598783){_0x21652f=_0x598783;_0x25ad0f=0xc8;}else{_0x25ad0f=0xce;}_0x34865b['status'](_0x25ad0f);return _0x34865b[_0xe80f('0x21')](_0xe80f('0x22'),_0x3620bb+'-'+_0x21652f+'/'+_0x598783)['json'](_0x21f788);}return null;};}function patchUpdates(_0x278fa5){return function(_0x3efe22){try{jsonpatch['apply'](_0x3efe22,_0x278fa5,!![]);}catch(_0x3eaef9){return BPromise[_0xe80f('0x23')](_0x3eaef9);}return _0x3efe22[_0xe80f('0x24')]();};}function saveUpdates(_0x478bf6,_0x5d5373){return function(_0x1ea8a1){if(_0x1ea8a1){return _0x1ea8a1[_0xe80f('0x25')](_0x478bf6)[_0xe80f('0x26')](function(_0x40c20e){return _0x40c20e;});}return null;};}function removeEntity(_0x5e7486,_0x504414){return function(_0x2af10b){if(_0x2af10b){return _0x2af10b[_0xe80f('0x27')]()[_0xe80f('0x26')](function(){_0x5e7486[_0xe80f('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x41dff3,_0x2d6581){return function(_0xe3e25c){if(!_0xe3e25c){_0x41dff3[_0xe80f('0x1b')](0x194);}return _0xe3e25c;};}function handleError(_0x2eb531,_0x52d4ea){_0x52d4ea=_0x52d4ea||0x1f4;return function(_0x5ab8cd){logger[_0xe80f('0x28')](_0x5ab8cd['stack']);if(_0x5ab8cd[_0xe80f('0x29')]){delete _0x5ab8cd[_0xe80f('0x29')];}_0x2eb531['status'](_0x52d4ea)[_0xe80f('0x2a')](_0x5ab8cd);};}exports['index']=function(_0x599739,_0x4a8e51){var _0x9e357c={},_0x57580a={},_0x33e127={'count':0x0,'rows':[]};var _0x3937e8=_['map'](db['SquareReport']['rawAttributes'],function(_0x1062e5){return{'name':_0x1062e5['fieldName'],'type':_0x1062e5[_0xe80f('0x2b')][_0xe80f('0x2c')]};});_0x57580a[_0xe80f('0x2d')]=_[_0xe80f('0x2e')](_0x3937e8,_0xe80f('0x29'));_0x57580a[_0xe80f('0x2f')]=_[_0xe80f('0x30')](_0x599739[_0xe80f('0x2f')]);_0x57580a[_0xe80f('0x31')]=_[_0xe80f('0x32')](_0x57580a[_0xe80f('0x2d')],_0x57580a[_0xe80f('0x2f')]);_0x9e357c[_0xe80f('0x33')]=_[_0xe80f('0x32')](_0x57580a[_0xe80f('0x2d')],qs[_0xe80f('0x34')](_0x599739['query'][_0xe80f('0x34')]));_0x9e357c[_0xe80f('0x33')]=_0x9e357c[_0xe80f('0x33')][_0xe80f('0x35')]?_0x9e357c[_0xe80f('0x33')]:_0x57580a[_0xe80f('0x2d')];if(!_0x599739[_0xe80f('0x2f')][_0xe80f('0x36')](_0xe80f('0x37'))){_0x9e357c[_0xe80f('0x1f')]=qs[_0xe80f('0x1f')](_0x599739['query'][_0xe80f('0x1f')]);_0x9e357c['offset']=qs[_0xe80f('0x1e')](_0x599739[_0xe80f('0x2f')][_0xe80f('0x1e')]);}_0x9e357c['order']=qs[_0xe80f('0x38')](_0x599739[_0xe80f('0x2f')]['sort']);_0x9e357c[_0xe80f('0x39')]=qs[_0xe80f('0x31')](_[_0xe80f('0x3a')](_0x599739['query'],_0x57580a[_0xe80f('0x31')]),_0x3937e8);if(_0x599739[_0xe80f('0x2f')][_0xe80f('0x3b')]){_0x9e357c['where']=_[_0xe80f('0x3c')](_0x9e357c[_0xe80f('0x39')],{'$or':_[_0xe80f('0x2e')](_0x3937e8,function(_0x5431dc){if(_0x5431dc['type']!=='VIRTUAL'){var _0x1dae0b={};_0x1dae0b[_0x5431dc[_0xe80f('0x29')]]={'$like':'%'+_0x599739[_0xe80f('0x2f')][_0xe80f('0x3b')]+'%'};return _0x1dae0b;}})});}_0x9e357c=_[_0xe80f('0x3c')]({},_0x9e357c,_0x599739['options']);var _0x522539={'where':_0x9e357c[_0xe80f('0x39')]};return db[_0xe80f('0x3d')][_0xe80f('0x20')](_0x522539)['then'](function(_0x206e88){_0x33e127[_0xe80f('0x20')]=_0x206e88;if(_0x599739[_0xe80f('0x2f')][_0xe80f('0x3e')]){_0x9e357c[_0xe80f('0x3f')]=[{'all':!![]}];}return db['SquareReport']['findAll'](_0x9e357c);})[_0xe80f('0x26')](function(_0x20d589){_0x33e127[_0xe80f('0x40')]=_0x20d589;return _0x33e127;})[_0xe80f('0x26')](respondWithFilteredResult(_0x4a8e51,_0x9e357c))['catch'](handleError(_0x4a8e51,null));};exports[_0xe80f('0x41')]=function(_0xf5df4,_0x5b0158){var _0xbe1393={'raw':!![],'where':{'id':_0xf5df4[_0xe80f('0x42')]['id']}},_0x2e242d={};_0x2e242d['model']=_[_0xe80f('0x30')](db[_0xe80f('0x3d')][_0xe80f('0x43')]);_0x2e242d[_0xe80f('0x2f')]=_[_0xe80f('0x30')](_0xf5df4[_0xe80f('0x2f')]);_0x2e242d['filters']=_[_0xe80f('0x32')](_0x2e242d['model'],_0x2e242d['query']);_0xbe1393['attributes']=_['intersection'](_0x2e242d[_0xe80f('0x2d')],qs['fields'](_0xf5df4[_0xe80f('0x2f')]['fields']));_0xbe1393['attributes']=_0xbe1393[_0xe80f('0x33')][_0xe80f('0x35')]?_0xbe1393['attributes']:_0x2e242d[_0xe80f('0x2d')];if(_0xf5df4[_0xe80f('0x2f')][_0xe80f('0x3e')]){_0xbe1393[_0xe80f('0x3f')]=[{'all':!![]}];}_0xbe1393=_['merge']({},_0xbe1393,_0xf5df4[_0xe80f('0x44')]);return db[_0xe80f('0x3d')][_0xe80f('0x45')](_0xbe1393)['then'](handleEntityNotFound(_0x5b0158,null))[_0xe80f('0x26')](respondWithResult(_0x5b0158,null))[_0xe80f('0x46')](handleError(_0x5b0158,null));};exports[_0xe80f('0x47')]=function(_0xd83417,_0x4bc314){return db[_0xe80f('0x3d')][_0xe80f('0x47')](_0xd83417[_0xe80f('0x48')],{})[_0xe80f('0x26')](respondWithResult(_0x4bc314,0xc9))['catch'](handleError(_0x4bc314,null));};exports['update']=function(_0x45e01d,_0x5e53f0){if(_0x45e01d[_0xe80f('0x48')]['id']){delete _0x45e01d[_0xe80f('0x48')]['id'];}return db[_0xe80f('0x3d')]['find']({'where':{'id':_0x45e01d[_0xe80f('0x42')]['id']}})['then'](handleEntityNotFound(_0x5e53f0,null))[_0xe80f('0x26')](saveUpdates(_0x45e01d[_0xe80f('0x48')],null))[_0xe80f('0x26')](respondWithResult(_0x5e53f0,null))[_0xe80f('0x46')](handleError(_0x5e53f0,null));};exports['destroy']=function(_0x14efcc,_0x5e69d8){return db[_0xe80f('0x3d')][_0xe80f('0x45')]({'where':{'id':_0x14efcc[_0xe80f('0x42')]['id']}})[_0xe80f('0x26')](handleEntityNotFound(_0x5e69d8,null))[_0xe80f('0x26')](removeEntity(_0x5e69d8,null))[_0xe80f('0x46')](handleError(_0x5e69d8,null));};exports[_0xe80f('0x49')]=function(_0x2b41c3,_0xbc3fe8){return db[_0xe80f('0x3d')][_0xe80f('0x49')]()[_0xe80f('0x26')](respondWithResult(_0xbc3fe8,null))[_0xe80f('0x46')](handleError(_0xbc3fe8,null));};
\ No newline at end of file
+var _0x965e=['keys','filters','query','attributes','intersection','fields','length','model','nolimit','order','sort','where','filter','merge','VIRTUAL','SquareReport','findAll','rows','catch','show','params','includeAll','options','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','ejs','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','index','map','rawAttributes','fieldName','type'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x965e,0x68));var _0xe965=function(_0x3a6c91,_0x58a5f9){_0x3a6c91=_0x3a6c91-0x0;var _0x2174e6=_0x965e[_0x3a6c91];return _0x2174e6;};'use strict';var emlformat=require(_0xe965('0x0'));var rimraf=require(_0xe965('0x1'));var zipdir=require(_0xe965('0x2'));var jsonpatch=require(_0xe965('0x3'));var rp=require(_0xe965('0x4'));var moment=require('moment');var BPromise=require(_0xe965('0x5'));var Mustache=require(_0xe965('0x6'));var util=require(_0xe965('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xe965('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe965('0x9'));var squel=require(_0xe965('0xa'));var crypto=require(_0xe965('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xe965('0xc'));var toCsv=require(_0xe965('0xd'));var querystring=require(_0xe965('0xe'));var Papa=require(_0xe965('0xf'));var Redis=require(_0xe965('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xe965('0x11'));var as=require(_0xe965('0x12'));var hardwareService=require(_0xe965('0x13'));var logger=require(_0xe965('0x14'))(_0xe965('0x15'));var utils=require(_0xe965('0x16'));var config=require(_0xe965('0x17'));var licenseUtil=require(_0xe965('0x18'));var db=require(_0xe965('0x19'))['db'];function respondWithStatusCode(_0x47c05f,_0x117d3c){_0x117d3c=_0x117d3c||0xcc;return function(_0x3b0237){if(_0x3b0237){return _0x47c05f[_0xe965('0x1a')](_0x117d3c);}return _0x47c05f[_0xe965('0x1b')](_0x117d3c)[_0xe965('0x1c')]();};}function respondWithResult(_0x3d41e5,_0x2d85ba){_0x2d85ba=_0x2d85ba||0xc8;return function(_0x3c5561){if(_0x3c5561){return _0x3d41e5[_0xe965('0x1b')](_0x2d85ba)[_0xe965('0x1d')](_0x3c5561);}};}function respondWithFilteredResult(_0x536629,_0x3dde2c){return function(_0x174494){if(_0x174494){var _0x398063=typeof _0x3dde2c['offset']==='undefined'&&typeof _0x3dde2c[_0xe965('0x1e')]===_0xe965('0x1f');var _0x3ad31d=_0x174494[_0xe965('0x20')];var _0x2cd250=_0x398063?0x0:_0x3dde2c['offset'];var _0x401a16=_0x398063?_0x174494[_0xe965('0x20')]:_0x3dde2c[_0xe965('0x21')]+_0x3dde2c['limit'];var _0x150ca2;if(_0x401a16>=_0x3ad31d){_0x401a16=_0x3ad31d;_0x150ca2=0xc8;}else{_0x150ca2=0xce;}_0x536629[_0xe965('0x1b')](_0x150ca2);return _0x536629[_0xe965('0x22')](_0xe965('0x23'),_0x2cd250+'-'+_0x401a16+'/'+_0x3ad31d)[_0xe965('0x1d')](_0x174494);}return null;};}function patchUpdates(_0x5d2ac5){return function(_0x45a3f0){try{jsonpatch[_0xe965('0x24')](_0x45a3f0,_0x5d2ac5,!![]);}catch(_0x556ed8){return BPromise[_0xe965('0x25')](_0x556ed8);}return _0x45a3f0[_0xe965('0x26')]();};}function saveUpdates(_0x4a0928,_0x5b64b4){return function(_0x14a381){if(_0x14a381){return _0x14a381[_0xe965('0x27')](_0x4a0928)[_0xe965('0x28')](function(_0x31d7b3){return _0x31d7b3;});}return null;};}function removeEntity(_0x55dfa4,_0x582df2){return function(_0x246559){if(_0x246559){return _0x246559[_0xe965('0x29')]()['then'](function(){_0x55dfa4[_0xe965('0x1b')](0xcc)[_0xe965('0x1c')]();});}};}function handleEntityNotFound(_0x55c075,_0x390bf8){return function(_0x426d59){if(!_0x426d59){_0x55c075['sendStatus'](0x194);}return _0x426d59;};}function handleError(_0x2a21f5,_0x837ffc){_0x837ffc=_0x837ffc||0x1f4;return function(_0x459e8d){logger[_0xe965('0x2a')](_0x459e8d[_0xe965('0x2b')]);if(_0x459e8d[_0xe965('0x2c')]){delete _0x459e8d[_0xe965('0x2c')];}_0x2a21f5[_0xe965('0x1b')](_0x837ffc)['send'](_0x459e8d);};}exports[_0xe965('0x2d')]=function(_0x29f21c,_0x14b0cb){var _0x3a7360={},_0x2d05d={},_0xb8a545={'count':0x0,'rows':[]};var _0x119d91=_[_0xe965('0x2e')](db['SquareReport'][_0xe965('0x2f')],function(_0x21682a){return{'name':_0x21682a[_0xe965('0x30')],'type':_0x21682a[_0xe965('0x31')]['key']};});_0x2d05d['model']=_[_0xe965('0x2e')](_0x119d91,_0xe965('0x2c'));_0x2d05d['query']=_[_0xe965('0x32')](_0x29f21c['query']);_0x2d05d[_0xe965('0x33')]=_['intersection'](_0x2d05d['model'],_0x2d05d[_0xe965('0x34')]);_0x3a7360[_0xe965('0x35')]=_[_0xe965('0x36')](_0x2d05d['model'],qs[_0xe965('0x37')](_0x29f21c[_0xe965('0x34')][_0xe965('0x37')]));_0x3a7360[_0xe965('0x35')]=_0x3a7360[_0xe965('0x35')][_0xe965('0x38')]?_0x3a7360[_0xe965('0x35')]:_0x2d05d[_0xe965('0x39')];if(!_0x29f21c[_0xe965('0x34')]['hasOwnProperty'](_0xe965('0x3a'))){_0x3a7360[_0xe965('0x1e')]=qs[_0xe965('0x1e')](_0x29f21c[_0xe965('0x34')]['limit']);_0x3a7360['offset']=qs[_0xe965('0x21')](_0x29f21c[_0xe965('0x34')][_0xe965('0x21')]);}_0x3a7360[_0xe965('0x3b')]=qs[_0xe965('0x3c')](_0x29f21c['query'][_0xe965('0x3c')]);_0x3a7360[_0xe965('0x3d')]=qs[_0xe965('0x33')](_['pick'](_0x29f21c['query'],_0x2d05d['filters']),_0x119d91);if(_0x29f21c['query'][_0xe965('0x3e')]){_0x3a7360['where']=_[_0xe965('0x3f')](_0x3a7360[_0xe965('0x3d')],{'$or':_[_0xe965('0x2e')](_0x119d91,function(_0x35e96d){if(_0x35e96d[_0xe965('0x31')]!==_0xe965('0x40')){var _0x4d4ef1={};_0x4d4ef1[_0x35e96d[_0xe965('0x2c')]]={'$like':'%'+_0x29f21c[_0xe965('0x34')]['filter']+'%'};return _0x4d4ef1;}})});}_0x3a7360=_[_0xe965('0x3f')]({},_0x3a7360,_0x29f21c['options']);var _0x464568={'where':_0x3a7360[_0xe965('0x3d')]};return db['SquareReport']['count'](_0x464568)[_0xe965('0x28')](function(_0x642734){_0xb8a545['count']=_0x642734;if(_0x29f21c[_0xe965('0x34')]['includeAll']){_0x3a7360['include']=[{'all':!![]}];}return db[_0xe965('0x41')][_0xe965('0x42')](_0x3a7360);})[_0xe965('0x28')](function(_0x26fe83){_0xb8a545[_0xe965('0x43')]=_0x26fe83;return _0xb8a545;})[_0xe965('0x28')](respondWithFilteredResult(_0x14b0cb,_0x3a7360))[_0xe965('0x44')](handleError(_0x14b0cb,null));};exports[_0xe965('0x45')]=function(_0x3e44db,_0x4d6bf4){var _0x1d1266={'raw':!![],'where':{'id':_0x3e44db[_0xe965('0x46')]['id']}},_0x2c878c={};_0x2c878c[_0xe965('0x39')]=_[_0xe965('0x32')](db[_0xe965('0x41')][_0xe965('0x2f')]);_0x2c878c[_0xe965('0x34')]=_[_0xe965('0x32')](_0x3e44db[_0xe965('0x34')]);_0x2c878c[_0xe965('0x33')]=_[_0xe965('0x36')](_0x2c878c[_0xe965('0x39')],_0x2c878c[_0xe965('0x34')]);_0x1d1266[_0xe965('0x35')]=_['intersection'](_0x2c878c[_0xe965('0x39')],qs[_0xe965('0x37')](_0x3e44db[_0xe965('0x34')][_0xe965('0x37')]));_0x1d1266['attributes']=_0x1d1266[_0xe965('0x35')][_0xe965('0x38')]?_0x1d1266[_0xe965('0x35')]:_0x2c878c[_0xe965('0x39')];if(_0x3e44db['query'][_0xe965('0x47')]){_0x1d1266['include']=[{'all':!![]}];}_0x1d1266=_[_0xe965('0x3f')]({},_0x1d1266,_0x3e44db[_0xe965('0x48')]);return db[_0xe965('0x41')][_0xe965('0x49')](_0x1d1266)['then'](handleEntityNotFound(_0x4d6bf4,null))[_0xe965('0x28')](respondWithResult(_0x4d6bf4,null))[_0xe965('0x44')](handleError(_0x4d6bf4,null));};exports[_0xe965('0x4a')]=function(_0x802015,_0x4dee51){return db[_0xe965('0x41')][_0xe965('0x4a')](_0x802015['body'],{})['then'](respondWithResult(_0x4dee51,0xc9))['catch'](handleError(_0x4dee51,null));};exports[_0xe965('0x27')]=function(_0x521479,_0x5dba1e){if(_0x521479[_0xe965('0x4b')]['id']){delete _0x521479['body']['id'];}return db[_0xe965('0x41')][_0xe965('0x49')]({'where':{'id':_0x521479['params']['id']}})[_0xe965('0x28')](handleEntityNotFound(_0x5dba1e,null))[_0xe965('0x28')](saveUpdates(_0x521479[_0xe965('0x4b')],null))[_0xe965('0x28')](respondWithResult(_0x5dba1e,null))[_0xe965('0x44')](handleError(_0x5dba1e,null));};exports[_0xe965('0x29')]=function(_0x524c85,_0x4cc37d){return db[_0xe965('0x41')][_0xe965('0x49')]({'where':{'id':_0x524c85[_0xe965('0x46')]['id']}})[_0xe965('0x28')](handleEntityNotFound(_0x4cc37d,null))[_0xe965('0x28')](removeEntity(_0x4cc37d,null))[_0xe965('0x44')](handleError(_0x4cc37d,null));};exports[_0xe965('0x4c')]=function(_0x17d664,_0x231e1e){return db[_0xe965('0x41')][_0xe965('0x4c')]()[_0xe965('0x28')](respondWithResult(_0x231e1e,null))[_0xe965('0x44')](handleError(_0x231e1e,null));};
\ No newline at end of file
index fc68e9f..962099b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c04=['SquareReport','uid_pname','project_name','leaveAt','lodash','util','../../config/logger','moment','request-promise','rimraf','./squareReport.attributes'];(function(_0x240261,_0x4fe66c){var _0x45c332=function(_0x4f367a){while(--_0x4f367a){_0x240261['push'](_0x240261['shift']());}};_0x45c332(++_0x4fe66c);}(_0x1c04,0x1dd));var _0x41c0=function(_0x5a3f3a,_0x3ae10e){_0x5a3f3a=_0x5a3f3a-0x0;var _0x5a6216=_0x1c04[_0x5a3f3a];return _0x5a6216;};'use strict';var _=require(_0x41c0('0x0'));var util=require(_0x41c0('0x1'));var logger=require(_0x41c0('0x2'))('api');var moment=require(_0x41c0('0x3'));var BPromise=require('bluebird');var rp=require(_0x41c0('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x41c0('0x5'));var config=require('../../config/environment');var attributes=require(_0x41c0('0x6'));module['exports']=function(_0x658646,_0x140794){return _0x658646['define'](_0x41c0('0x7'),attributes,{'tableName':'report_square','paranoid':![],'indexes':[{'name':_0x41c0('0x8'),'fields':['uniqueid',_0x41c0('0x9')]},{'name':_0x41c0('0xa'),'fields':['leaveAt']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7c7c=['path','rimraf','../../config/environment','./squareReport.attributes','define','SquareReport','report_square','uid_pname','uniqueid','project_name','leaveAt','util','../../config/logger','api','bluebird','request-promise'];(function(_0x5e3054,_0xc04840){var _0x4834c9=function(_0x5bd72e){while(--_0x5bd72e){_0x5e3054['push'](_0x5e3054['shift']());}};_0x4834c9(++_0xc04840);}(_0x7c7c,0x12b));var _0xc7c7=function(_0x403833,_0x2b4869){_0x403833=_0x403833-0x0;var _0x1e659a=_0x7c7c[_0x403833];return _0x1e659a;};'use strict';var _=require('lodash');var util=require(_0xc7c7('0x0'));var logger=require(_0xc7c7('0x1'))(_0xc7c7('0x2'));var moment=require('moment');var BPromise=require(_0xc7c7('0x3'));var rp=require(_0xc7c7('0x4'));var fs=require('fs');var path=require(_0xc7c7('0x5'));var rimraf=require(_0xc7c7('0x6'));var config=require(_0xc7c7('0x7'));var attributes=require(_0xc7c7('0x8'));module['exports']=function(_0x3dc3bc,_0xb92791){return _0x3dc3bc[_0xc7c7('0x9')](_0xc7c7('0xa'),attributes,{'tableName':_0xc7c7('0xb'),'paranoid':![],'indexes':[{'name':_0xc7c7('0xc'),'fields':[_0xc7c7('0xd'),_0xc7c7('0xe')]},{'name':_0xc7c7('0xf'),'fields':[_0xc7c7('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index 7e6d0b9..8ab590a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6354=['debug','SquareReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','SquareReport,\x20%s,\x20%s','result','SquareReport','create','body','options','raw','CreateSquareReport','catch','UpdateSquareReport','update','where','attributes','limit','lodash','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','request','info'];(function(_0x506d89,_0x41f9c0){var _0x3d408d=function(_0x3d5119){while(--_0x3d5119){_0x506d89['push'](_0x506d89['shift']());}};_0x3d408d(++_0x41f9c0);}(_0x6354,0xed));var _0x4635=function(_0x54fb55,_0x140bb3){_0x54fb55=_0x54fb55-0x0;var _0x54f136=_0x6354[_0x54fb55];return _0x54f136;};'use strict';var _=require(_0x4635('0x0'));var util=require('util');var moment=require(_0x4635('0x1'));var BPromise=require(_0x4635('0x2'));var rs=require(_0x4635('0x3'));var fs=require('fs');var Redis=require(_0x4635('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x4635('0x5'))(_0x4635('0x6'));var config=require(_0x4635('0x7'));var jayson=require(_0x4635('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2bb2bd,_0x2ee4b2,_0x32059d){return new BPromise(function(_0x2a812b,_0x44f157){return client[_0x4635('0x9')](_0x2bb2bd,_0x32059d)['then'](function(_0x47f38d){logger[_0x4635('0xa')]('SquareReport,\x20%s,\x20%s',_0x2ee4b2,'request\x20sent');logger[_0x4635('0xb')](_0x4635('0xc'),_0x2ee4b2,'request\x20sent',JSON[_0x4635('0xd')](_0x47f38d));if(_0x47f38d[_0x4635('0xe')]){if(_0x47f38d[_0x4635('0xe')][_0x4635('0xf')]===0x1f4){logger[_0x4635('0xe')]('SquareReport,\x20%s,\x20%s',_0x2ee4b2,_0x47f38d[_0x4635('0xe')][_0x4635('0x10')]);return _0x44f157(_0x47f38d[_0x4635('0xe')][_0x4635('0x10')]);}logger['error'](_0x4635('0x11'),_0x2ee4b2,_0x47f38d['error'][_0x4635('0x10')]);return _0x2a812b(_0x47f38d[_0x4635('0xe')]['message']);}else{logger[_0x4635('0xa')]('SquareReport,\x20%s,\x20%s',_0x2ee4b2,'request\x20sent');_0x2a812b(_0x47f38d[_0x4635('0x12')][_0x4635('0x10')]);}})['catch'](function(_0x22f468){logger[_0x4635('0xe')]('SquareReport,\x20%s,\x20%s',_0x2ee4b2,_0x22f468);_0x44f157(_0x22f468);});});}exports['CreateSquareReport']=function(_0x2053a5){var _0x5a170e=this;return new Promise(function(_0x362aaa,_0x4e18c5){return db[_0x4635('0x13')][_0x4635('0x14')](_0x2053a5[_0x4635('0x15')],{'raw':_0x2053a5[_0x4635('0x16')]?_0x2053a5[_0x4635('0x16')][_0x4635('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x4f9753){logger['info'](_0x4635('0x18'),_0x2053a5);logger[_0x4635('0xb')]('CreateSquareReport',_0x2053a5,JSON[_0x4635('0xd')](_0x4f9753));_0x362aaa(_0x4f9753);})[_0x4635('0x19')](function(_0x3b8cd0){logger[_0x4635('0xe')](_0x4635('0x18'),_0x3b8cd0[_0x4635('0x10')],_0x2053a5);_0x4e18c5(_0x5a170e[_0x4635('0xe')](0x1f4,_0x3b8cd0[_0x4635('0x10')]));});});};exports[_0x4635('0x1a')]=function(_0x5b1fbd){var _0x12e625=this;return new Promise(function(_0x46a375,_0x3d2fc4){return db['SquareReport'][_0x4635('0x1b')](_0x5b1fbd[_0x4635('0x15')],{'raw':_0x5b1fbd[_0x4635('0x16')]?_0x5b1fbd['options'][_0x4635('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5b1fbd[_0x4635('0x16')]?_0x5b1fbd[_0x4635('0x16')][_0x4635('0x1c')]||null:null,'attributes':_0x5b1fbd[_0x4635('0x16')]?_0x5b1fbd[_0x4635('0x16')][_0x4635('0x1d')]||null:null,'limit':_0x5b1fbd['options']?_0x5b1fbd[_0x4635('0x16')][_0x4635('0x1e')]||null:null})['then'](function(_0x325cb0){logger[_0x4635('0xa')]('UpdateSquareReport',_0x5b1fbd);logger[_0x4635('0xb')](_0x4635('0x1a'),_0x5b1fbd,JSON['stringify'](_0x325cb0));_0x46a375(_0x325cb0);})['catch'](function(_0x407a88){logger[_0x4635('0xe')](_0x4635('0x1a'),_0x407a88['message'],_0x5b1fbd);_0x3d2fc4(_0x12e625[_0x4635('0xe')](0x1f4,_0x407a88[_0x4635('0x10')]));});});};
\ No newline at end of file
+var _0xfea4=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','SquareReport,\x20%s,\x20%s','request\x20sent','debug','SquareReport,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','CreateSquareReport','create','options','raw','stringify','SquareReport','update','body','where','attributes','UpdateSquareReport','util','moment','bluebird','randomstring'];(function(_0x5e0944,_0x10a56f){var _0x159edb=function(_0x17e682){while(--_0x17e682){_0x5e0944['push'](_0x5e0944['shift']());}};_0x159edb(++_0x10a56f);}(_0xfea4,0x1ac));var _0x4fea=function(_0x2b5513,_0x3fe5cd){_0x2b5513=_0x2b5513-0x0;var _0x578fd2=_0xfea4[_0x2b5513];return _0x578fd2;};'use strict';var _=require('lodash');var util=require(_0x4fea('0x0'));var moment=require(_0x4fea('0x1'));var BPromise=require(_0x4fea('0x2'));var rs=require(_0x4fea('0x3'));var fs=require('fs');var Redis=require(_0x4fea('0x4'));var db=require(_0x4fea('0x5'))['db'];var utils=require(_0x4fea('0x6'));var logger=require(_0x4fea('0x7'))(_0x4fea('0x8'));var config=require(_0x4fea('0x9'));var jayson=require(_0x4fea('0xa'));var client=jayson[_0x4fea('0xb')][_0x4fea('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x514c93,_0x19e876,_0x2da55f){return new BPromise(function(_0x4cc9a5,_0x4283f4){return client[_0x4fea('0xd')](_0x514c93,_0x2da55f)[_0x4fea('0xe')](function(_0x48f788){logger['info'](_0x4fea('0xf'),_0x19e876,_0x4fea('0x10'));logger[_0x4fea('0x11')](_0x4fea('0x12'),_0x19e876,_0x4fea('0x10'),JSON['stringify'](_0x48f788));if(_0x48f788[_0x4fea('0x13')]){if(_0x48f788[_0x4fea('0x13')][_0x4fea('0x14')]===0x1f4){logger[_0x4fea('0x13')](_0x4fea('0xf'),_0x19e876,_0x48f788[_0x4fea('0x13')][_0x4fea('0x15')]);return _0x4283f4(_0x48f788[_0x4fea('0x13')][_0x4fea('0x15')]);}logger[_0x4fea('0x13')](_0x4fea('0xf'),_0x19e876,_0x48f788[_0x4fea('0x13')][_0x4fea('0x15')]);return _0x4cc9a5(_0x48f788[_0x4fea('0x13')]['message']);}else{logger[_0x4fea('0x16')](_0x4fea('0xf'),_0x19e876,'request\x20sent');_0x4cc9a5(_0x48f788[_0x4fea('0x17')][_0x4fea('0x15')]);}})[_0x4fea('0x18')](function(_0x53648f){logger[_0x4fea('0x13')](_0x4fea('0xf'),_0x19e876,_0x53648f);_0x4283f4(_0x53648f);});});}exports[_0x4fea('0x19')]=function(_0x50216d){var _0x86c4ee=this;return new Promise(function(_0x57fae3,_0x56d613){return db['SquareReport'][_0x4fea('0x1a')](_0x50216d['body'],{'raw':_0x50216d[_0x4fea('0x1b')]?_0x50216d['options'][_0x4fea('0x1c')]===undefined?!![]:![]:!![]})[_0x4fea('0xe')](function(_0x11076e){logger['info'](_0x4fea('0x19'),_0x50216d);logger[_0x4fea('0x11')](_0x4fea('0x19'),_0x50216d,JSON[_0x4fea('0x1d')](_0x11076e));_0x57fae3(_0x11076e);})[_0x4fea('0x18')](function(_0x38e77a){logger['error']('CreateSquareReport',_0x38e77a[_0x4fea('0x15')],_0x50216d);_0x56d613(_0x86c4ee[_0x4fea('0x13')](0x1f4,_0x38e77a['message']));});});};exports['UpdateSquareReport']=function(_0x27981e){var _0x44e066=this;return new Promise(function(_0x2d8d70,_0x1bab84){return db[_0x4fea('0x1e')][_0x4fea('0x1f')](_0x27981e[_0x4fea('0x20')],{'raw':_0x27981e[_0x4fea('0x1b')]?_0x27981e[_0x4fea('0x1b')][_0x4fea('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x27981e[_0x4fea('0x1b')]?_0x27981e[_0x4fea('0x1b')][_0x4fea('0x21')]||null:null,'attributes':_0x27981e[_0x4fea('0x1b')]?_0x27981e['options'][_0x4fea('0x22')]||null:null,'limit':_0x27981e['options']?_0x27981e[_0x4fea('0x1b')]['limit']||null:null})[_0x4fea('0xe')](function(_0x5f2569){logger[_0x4fea('0x16')](_0x4fea('0x23'),_0x27981e);logger['debug'](_0x4fea('0x23'),_0x27981e,JSON[_0x4fea('0x1d')](_0x5f2569));_0x2d8d70(_0x5f2569);})[_0x4fea('0x18')](function(_0x4db474){logger[_0x4fea('0x13')](_0x4fea('0x23'),_0x4db474[_0x4fea('0x15')],_0x27981e);_0x1bab84(_0x44e066[_0x4fea('0x13')](0x1f4,_0x4db474[_0x4fea('0x15')]));});});};
\ No newline at end of file
index 09c1356..6d7c38a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88bf=['Router','../../components/auth/service','../../config/environment','get','index','isAuthenticated','describe','/:id','post','exports'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x88bf,0x64));var _0xf88b=function(_0x46ab02,_0x46f430){_0x46ab02=_0x46ab02-0x0;var _0x39d9a4=_0x88bf[_0x46ab02];return _0x39d9a4;};'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[_0xf88b('0x0')]();var fs_extra=require('fs-extra');var auth=require(_0xf88b('0x1'));var interaction=require('../../components/interaction/service');var config=require(_0xf88b('0x2'));var controller=require('./squareReportDetail.controller');router[_0xf88b('0x3')]('/',auth['isAuthenticated'](),controller[_0xf88b('0x4')]);router[_0xf88b('0x3')]('/describe',auth[_0xf88b('0x5')](),controller[_0xf88b('0x6')]);router['get'](_0xf88b('0x7'),auth['isAuthenticated'](),controller['show']);router[_0xf88b('0x8')]('/',auth[_0xf88b('0x5')](),controller['create']);router['put'](_0xf88b('0x7'),auth[_0xf88b('0x5')](),controller['update']);router['delete'](_0xf88b('0x7'),auth[_0xf88b('0x5')](),controller['destroy']);module[_0xf88b('0x9')]=router;
\ No newline at end of file
+var _0x8ea4=['put','update','destroy','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post'];(function(_0x2417ef,_0x2b4f11){var _0x2a19cf=function(_0x440ad0){while(--_0x440ad0){_0x2417ef['push'](_0x2417ef['shift']());}};_0x2a19cf(++_0x2b4f11);}(_0x8ea4,0x16c));var _0x48ea=function(_0x11aee5,_0x27fa94){_0x11aee5=_0x11aee5-0x0;var _0x2e8c9d=_0x8ea4[_0x11aee5];return _0x2e8c9d;};'use strict';var multer=require(_0x48ea('0x0'));var util=require('util');var path=require(_0x48ea('0x1'));var timeout=require(_0x48ea('0x2'));var express=require('express');var router=express[_0x48ea('0x3')]();var fs_extra=require(_0x48ea('0x4'));var auth=require(_0x48ea('0x5'));var interaction=require(_0x48ea('0x6'));var config=require(_0x48ea('0x7'));var controller=require('./squareReportDetail.controller');router[_0x48ea('0x8')]('/',auth[_0x48ea('0x9')](),controller[_0x48ea('0xa')]);router[_0x48ea('0x8')](_0x48ea('0xb'),auth[_0x48ea('0x9')](),controller[_0x48ea('0xc')]);router[_0x48ea('0x8')](_0x48ea('0xd'),auth['isAuthenticated'](),controller[_0x48ea('0xe')]);router[_0x48ea('0xf')]('/',auth[_0x48ea('0x9')](),controller['create']);router[_0x48ea('0x10')]('/:id',auth[_0x48ea('0x9')](),controller[_0x48ea('0x11')]);router['delete']('/:id',auth[_0x48ea('0x9')](),controller[_0x48ea('0x12')]);module['exports']=router;
\ No newline at end of file
index 6b6029a..1483768 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cd5=['STRING','TEXT','exports'];(function(_0xaa1b3e,_0x47d976){var _0x454d7d=function(_0x575b32){while(--_0x575b32){_0xaa1b3e['push'](_0xaa1b3e['shift']());}};_0x454d7d(++_0x47d976);}(_0x2cd5,0x9b));var _0x52cd=function(_0x214ca5,_0x4ff70c){_0x214ca5=_0x214ca5-0x0;var _0x2d5156=_0x2cd5[_0x214ca5];return _0x2d5156;};'use strict';var Sequelize=require('sequelize');module[_0x52cd('0x0')]={'uniqueid':{'type':Sequelize['STRING']},'node':{'type':Sequelize[_0x52cd('0x1')]},'application':{'type':Sequelize[_0x52cd('0x1')]},'data':{'type':Sequelize[_0x52cd('0x2')]},'project_name':{'type':Sequelize[_0x52cd('0x1')]},'callerid':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xd866=['STRING','TEXT'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xd866,0xdc));var _0x6d86=function(_0x3890d7,_0x5d6229){_0x3890d7=_0x3890d7-0x0;var _0x224e89=_0xd866[_0x3890d7];return _0x224e89;};'use strict';var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0x6d86('0x0')]},'node':{'type':Sequelize[_0x6d86('0x0')]},'application':{'type':Sequelize[_0x6d86('0x0')]},'data':{'type':Sequelize[_0x6d86('0x1')]},'project_name':{'type':Sequelize[_0x6d86('0x0')]},'callerid':{'type':Sequelize['STRING']}};
\ No newline at end of file
index eef350e..9e82f9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x567d=['index','SquareDetailsReport','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','VIRTUAL','includeAll','findAll','rows','catch','show','length','options','find','create','body','update','params','describe','rimraf','request-promise','moment','bluebird','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../mysqldb','status','json','offset','limit','undefined','count','set','Content-Range','apply','save','then','destroy','sendStatus','error','name','send'];(function(_0x43d11d,_0xccff91){var _0x38cd08=function(_0x131ae2){while(--_0x131ae2){_0x43d11d['push'](_0x43d11d['shift']());}};_0x38cd08(++_0xccff91);}(_0x567d,0x17c));var _0xd567=function(_0x3ad746,_0x5275b6){_0x3ad746=_0x3ad746-0x0;var _0x5d73e4=_0x567d[_0x3ad746];return _0x5d73e4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd567('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xd567('0x1'));var moment=require(_0xd567('0x2'));var BPromise=require(_0xd567('0x3'));var Mustache=require('mustache');var util=require(_0xd567('0x4'));var path=require(_0xd567('0x5'));var sox=require('sox');var csv=require(_0xd567('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd567('0x7'));var _=require(_0xd567('0x8'));var squel=require(_0xd567('0x9'));var crypto=require(_0xd567('0xa'));var jsforce=require(_0xd567('0xb'));var deskjs=require(_0xd567('0xc'));var toCsv=require(_0xd567('0x6'));var querystring=require(_0xd567('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xd567('0xe'));var as=require(_0xd567('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xd567('0x10'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xd567('0x11'))['db'];function respondWithStatusCode(_0x5e69f7,_0x41c2c6){_0x41c2c6=_0x41c2c6||0xcc;return function(_0xc1c059){if(_0xc1c059){return _0x5e69f7['sendStatus'](_0x41c2c6);}return _0x5e69f7[_0xd567('0x12')](_0x41c2c6)['end']();};}function respondWithResult(_0xc3b65b,_0x686f87){_0x686f87=_0x686f87||0xc8;return function(_0x27a0da){if(_0x27a0da){return _0xc3b65b[_0xd567('0x12')](_0x686f87)[_0xd567('0x13')](_0x27a0da);}};}function respondWithFilteredResult(_0xbb72f7,_0x851e58){return function(_0xf3fdf4){if(_0xf3fdf4){var _0x5a89f4=typeof _0x851e58[_0xd567('0x14')]==='undefined'&&typeof _0x851e58[_0xd567('0x15')]===_0xd567('0x16');var _0x26fddb=_0xf3fdf4['count'];var _0x1d530f=_0x5a89f4?0x0:_0x851e58[_0xd567('0x14')];var _0x21cb86=_0x5a89f4?_0xf3fdf4[_0xd567('0x17')]:_0x851e58['offset']+_0x851e58[_0xd567('0x15')];var _0x3de837;if(_0x21cb86>=_0x26fddb){_0x21cb86=_0x26fddb;_0x3de837=0xc8;}else{_0x3de837=0xce;}_0xbb72f7[_0xd567('0x12')](_0x3de837);return _0xbb72f7[_0xd567('0x18')](_0xd567('0x19'),_0x1d530f+'-'+_0x21cb86+'/'+_0x26fddb)[_0xd567('0x13')](_0xf3fdf4);}return null;};}function patchUpdates(_0x47afb1){return function(_0x5f368f){try{jsonpatch[_0xd567('0x1a')](_0x5f368f,_0x47afb1,!![]);}catch(_0x5a3245){return BPromise['reject'](_0x5a3245);}return _0x5f368f[_0xd567('0x1b')]();};}function saveUpdates(_0x522dc8,_0xd3c152){return function(_0x46c34a){if(_0x46c34a){return _0x46c34a['update'](_0x522dc8)[_0xd567('0x1c')](function(_0x69ef16){return _0x69ef16;});}return null;};}function removeEntity(_0x1b9d09,_0x1e4299){return function(_0x26365e){if(_0x26365e){return _0x26365e[_0xd567('0x1d')]()[_0xd567('0x1c')](function(){_0x1b9d09['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3190d8,_0x4bb2a3){return function(_0x4ddc1b){if(!_0x4ddc1b){_0x3190d8[_0xd567('0x1e')](0x194);}return _0x4ddc1b;};}function handleError(_0x3153f5,_0x15ea4e){_0x15ea4e=_0x15ea4e||0x1f4;return function(_0x526707){logger[_0xd567('0x1f')](_0x526707['stack']);if(_0x526707[_0xd567('0x20')]){delete _0x526707[_0xd567('0x20')];}_0x3153f5['status'](_0x15ea4e)[_0xd567('0x21')](_0x526707);};}exports[_0xd567('0x22')]=function(_0x2fc374,_0x2be844){var _0x103f3a={},_0x4d8fe6={},_0x391d2c={'count':0x0,'rows':[]};var _0xf7ac70=_['map'](db[_0xd567('0x23')][_0xd567('0x24')],function(_0x4a9a8c){return{'name':_0x4a9a8c[_0xd567('0x25')],'type':_0x4a9a8c[_0xd567('0x26')]['key']};});_0x4d8fe6[_0xd567('0x27')]=_['map'](_0xf7ac70,'name');_0x4d8fe6[_0xd567('0x28')]=_[_0xd567('0x29')](_0x2fc374['query']);_0x4d8fe6[_0xd567('0x2a')]=_[_0xd567('0x2b')](_0x4d8fe6[_0xd567('0x27')],_0x4d8fe6[_0xd567('0x28')]);_0x103f3a[_0xd567('0x2c')]=_[_0xd567('0x2b')](_0x4d8fe6[_0xd567('0x27')],qs[_0xd567('0x2d')](_0x2fc374['query'][_0xd567('0x2d')]));_0x103f3a['attributes']=_0x103f3a[_0xd567('0x2c')]['length']?_0x103f3a[_0xd567('0x2c')]:_0x4d8fe6[_0xd567('0x27')];if(!_0x2fc374['query'][_0xd567('0x2e')](_0xd567('0x2f'))){_0x103f3a[_0xd567('0x15')]=qs[_0xd567('0x15')](_0x2fc374[_0xd567('0x28')]['limit']);_0x103f3a['offset']=qs[_0xd567('0x14')](_0x2fc374[_0xd567('0x28')][_0xd567('0x14')]);}_0x103f3a[_0xd567('0x30')]=qs[_0xd567('0x31')](_0x2fc374[_0xd567('0x28')][_0xd567('0x31')]);_0x103f3a[_0xd567('0x32')]=qs['filters'](_[_0xd567('0x33')](_0x2fc374[_0xd567('0x28')],_0x4d8fe6[_0xd567('0x2a')]),_0xf7ac70);if(_0x2fc374[_0xd567('0x28')][_0xd567('0x34')]){_0x103f3a[_0xd567('0x32')]=_[_0xd567('0x35')](_0x103f3a[_0xd567('0x32')],{'$or':_[_0xd567('0x36')](_0xf7ac70,function(_0x43143a){if(_0x43143a[_0xd567('0x26')]!==_0xd567('0x37')){var _0x40e4d5={};_0x40e4d5[_0x43143a[_0xd567('0x20')]]={'$like':'%'+_0x2fc374[_0xd567('0x28')]['filter']+'%'};return _0x40e4d5;}})});}_0x103f3a=_[_0xd567('0x35')]({},_0x103f3a,_0x2fc374['options']);var _0x25ccd7={'where':_0x103f3a[_0xd567('0x32')]};return db[_0xd567('0x23')]['count'](_0x25ccd7)[_0xd567('0x1c')](function(_0x3c8503){_0x391d2c[_0xd567('0x17')]=_0x3c8503;if(_0x2fc374[_0xd567('0x28')][_0xd567('0x38')]){_0x103f3a['include']=[{'all':!![]}];}return db['SquareDetailsReport'][_0xd567('0x39')](_0x103f3a);})[_0xd567('0x1c')](function(_0x5962d8){_0x391d2c[_0xd567('0x3a')]=_0x5962d8;return _0x391d2c;})['then'](respondWithFilteredResult(_0x2be844,_0x103f3a))[_0xd567('0x3b')](handleError(_0x2be844,null));};exports[_0xd567('0x3c')]=function(_0x116644,_0x71778){var _0x2f3eb6={'raw':!![],'where':{'id':_0x116644['params']['id']}},_0x2bd7bd={};_0x2bd7bd['model']=_[_0xd567('0x29')](db['SquareDetailsReport'][_0xd567('0x24')]);_0x2bd7bd['query']=_[_0xd567('0x29')](_0x116644['query']);_0x2bd7bd['filters']=_['intersection'](_0x2bd7bd[_0xd567('0x27')],_0x2bd7bd[_0xd567('0x28')]);_0x2f3eb6[_0xd567('0x2c')]=_[_0xd567('0x2b')](_0x2bd7bd[_0xd567('0x27')],qs[_0xd567('0x2d')](_0x116644['query'][_0xd567('0x2d')]));_0x2f3eb6[_0xd567('0x2c')]=_0x2f3eb6['attributes'][_0xd567('0x3d')]?_0x2f3eb6[_0xd567('0x2c')]:_0x2bd7bd[_0xd567('0x27')];if(_0x116644[_0xd567('0x28')]['includeAll']){_0x2f3eb6['include']=[{'all':!![]}];}_0x2f3eb6=_[_0xd567('0x35')]({},_0x2f3eb6,_0x116644[_0xd567('0x3e')]);return db[_0xd567('0x23')][_0xd567('0x3f')](_0x2f3eb6)[_0xd567('0x1c')](handleEntityNotFound(_0x71778,null))[_0xd567('0x1c')](respondWithResult(_0x71778,null))['catch'](handleError(_0x71778,null));};exports[_0xd567('0x40')]=function(_0x516604,_0x14a5e2){return db['SquareDetailsReport'][_0xd567('0x40')](_0x516604[_0xd567('0x41')],{})[_0xd567('0x1c')](respondWithResult(_0x14a5e2,0xc9))[_0xd567('0x3b')](handleError(_0x14a5e2,null));};exports[_0xd567('0x42')]=function(_0x9e487,_0x1e9e1e){if(_0x9e487[_0xd567('0x41')]['id']){delete _0x9e487['body']['id'];}return db[_0xd567('0x23')][_0xd567('0x3f')]({'where':{'id':_0x9e487[_0xd567('0x43')]['id']}})[_0xd567('0x1c')](handleEntityNotFound(_0x1e9e1e,null))[_0xd567('0x1c')](saveUpdates(_0x9e487[_0xd567('0x41')],null))[_0xd567('0x1c')](respondWithResult(_0x1e9e1e,null))[_0xd567('0x3b')](handleError(_0x1e9e1e,null));};exports[_0xd567('0x1d')]=function(_0x4ab806,_0x38cf0a){return db[_0xd567('0x23')][_0xd567('0x3f')]({'where':{'id':_0x4ab806[_0xd567('0x43')]['id']}})[_0xd567('0x1c')](handleEntityNotFound(_0x38cf0a,null))[_0xd567('0x1c')](removeEntity(_0x38cf0a,null))['catch'](handleError(_0x38cf0a,null));};exports[_0xd567('0x44')]=function(_0x9350b2,_0x2c611c){return db[_0xd567('0x23')]['describe']()[_0xd567('0x1c')](respondWithResult(_0x2c611c,null))[_0xd567('0x3b')](handleError(_0x2c611c,null));};
\ No newline at end of file
+var _0x50e8=['zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','save','update','destroy','then','error','stack','name','send','index','map','SquareDetailsReport','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','VIRTUAL','merge','options','findAll','rows','catch','show','params','rawAttributes','includeAll','include','find','create','body','describe','eml-format','rimraf'];(function(_0x761419,_0x17a19c){var _0x4b25fb=function(_0x3e5f55){while(--_0x3e5f55){_0x761419['push'](_0x761419['shift']());}};_0x4b25fb(++_0x17a19c);}(_0x50e8,0xf1));var _0x850e=function(_0x1d6a82,_0x37c315){_0x1d6a82=_0x1d6a82-0x0;var _0x5834ac=_0x50e8[_0x1d6a82];return _0x5834ac;};'use strict';var emlformat=require(_0x850e('0x0'));var rimraf=require(_0x850e('0x1'));var zipdir=require(_0x850e('0x2'));var jsonpatch=require(_0x850e('0x3'));var rp=require(_0x850e('0x4'));var moment=require(_0x850e('0x5'));var BPromise=require(_0x850e('0x6'));var Mustache=require(_0x850e('0x7'));var util=require(_0x850e('0x8'));var path=require(_0x850e('0x9'));var sox=require(_0x850e('0xa'));var csv=require(_0x850e('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x850e('0xc'));var _=require(_0x850e('0xd'));var squel=require(_0x850e('0xe'));var crypto=require(_0x850e('0xf'));var jsforce=require(_0x850e('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x850e('0xb'));var querystring=require(_0x850e('0x11'));var Papa=require(_0x850e('0x12'));var Redis=require(_0x850e('0x13'));var authService=require(_0x850e('0x14'));var qs=require(_0x850e('0x15'));var as=require(_0x850e('0x16'));var hardwareService=require(_0x850e('0x17'));var logger=require(_0x850e('0x18'))('api');var utils=require(_0x850e('0x19'));var config=require(_0x850e('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x850e('0x1b'))['db'];function respondWithStatusCode(_0x1790cf,_0x3b856e){_0x3b856e=_0x3b856e||0xcc;return function(_0xee460b){if(_0xee460b){return _0x1790cf[_0x850e('0x1c')](_0x3b856e);}return _0x1790cf[_0x850e('0x1d')](_0x3b856e)[_0x850e('0x1e')]();};}function respondWithResult(_0x1acc12,_0x54efc3){_0x54efc3=_0x54efc3||0xc8;return function(_0x380f81){if(_0x380f81){return _0x1acc12[_0x850e('0x1d')](_0x54efc3)[_0x850e('0x1f')](_0x380f81);}};}function respondWithFilteredResult(_0xff6238,_0x5b3215){return function(_0x2d9dd4){if(_0x2d9dd4){var _0xedbe83=typeof _0x5b3215[_0x850e('0x20')]==='undefined'&&typeof _0x5b3215[_0x850e('0x21')]===_0x850e('0x22');var _0x58de03=_0x2d9dd4[_0x850e('0x23')];var _0x174f9b=_0xedbe83?0x0:_0x5b3215[_0x850e('0x20')];var _0x23dcbb=_0xedbe83?_0x2d9dd4['count']:_0x5b3215['offset']+_0x5b3215[_0x850e('0x21')];var _0xb02a0c;if(_0x23dcbb>=_0x58de03){_0x23dcbb=_0x58de03;_0xb02a0c=0xc8;}else{_0xb02a0c=0xce;}_0xff6238[_0x850e('0x1d')](_0xb02a0c);return _0xff6238[_0x850e('0x24')](_0x850e('0x25'),_0x174f9b+'-'+_0x23dcbb+'/'+_0x58de03)[_0x850e('0x1f')](_0x2d9dd4);}return null;};}function patchUpdates(_0x212a13){return function(_0x570865){try{jsonpatch[_0x850e('0x26')](_0x570865,_0x212a13,!![]);}catch(_0x5d2f0a){return BPromise['reject'](_0x5d2f0a);}return _0x570865[_0x850e('0x27')]();};}function saveUpdates(_0x2ef3f4,_0x59c7d9){return function(_0x58bc50){if(_0x58bc50){return _0x58bc50[_0x850e('0x28')](_0x2ef3f4)['then'](function(_0x1a48d6){return _0x1a48d6;});}return null;};}function removeEntity(_0x4128ae,_0x4a2c7e){return function(_0xdd158b){if(_0xdd158b){return _0xdd158b[_0x850e('0x29')]()[_0x850e('0x2a')](function(){_0x4128ae['status'](0xcc)[_0x850e('0x1e')]();});}};}function handleEntityNotFound(_0x5bb7d4,_0xaae6b4){return function(_0x2243e9){if(!_0x2243e9){_0x5bb7d4[_0x850e('0x1c')](0x194);}return _0x2243e9;};}function handleError(_0x4c4208,_0x3efbcc){_0x3efbcc=_0x3efbcc||0x1f4;return function(_0x9524a0){logger[_0x850e('0x2b')](_0x9524a0[_0x850e('0x2c')]);if(_0x9524a0['name']){delete _0x9524a0[_0x850e('0x2d')];}_0x4c4208[_0x850e('0x1d')](_0x3efbcc)[_0x850e('0x2e')](_0x9524a0);};}exports[_0x850e('0x2f')]=function(_0x1d3184,_0x83d164){var _0x449acd={},_0xe73c8={},_0x36efba={'count':0x0,'rows':[]};var _0x10e201=_[_0x850e('0x30')](db[_0x850e('0x31')]['rawAttributes'],function(_0x58b557){return{'name':_0x58b557[_0x850e('0x32')],'type':_0x58b557[_0x850e('0x33')][_0x850e('0x34')]};});_0xe73c8[_0x850e('0x35')]=_[_0x850e('0x30')](_0x10e201,'name');_0xe73c8[_0x850e('0x36')]=_[_0x850e('0x37')](_0x1d3184[_0x850e('0x36')]);_0xe73c8[_0x850e('0x38')]=_[_0x850e('0x39')](_0xe73c8[_0x850e('0x35')],_0xe73c8[_0x850e('0x36')]);_0x449acd[_0x850e('0x3a')]=_[_0x850e('0x39')](_0xe73c8[_0x850e('0x35')],qs[_0x850e('0x3b')](_0x1d3184[_0x850e('0x36')][_0x850e('0x3b')]));_0x449acd[_0x850e('0x3a')]=_0x449acd[_0x850e('0x3a')][_0x850e('0x3c')]?_0x449acd[_0x850e('0x3a')]:_0xe73c8[_0x850e('0x35')];if(!_0x1d3184['query'][_0x850e('0x3d')]('nolimit')){_0x449acd[_0x850e('0x21')]=qs['limit'](_0x1d3184[_0x850e('0x36')][_0x850e('0x21')]);_0x449acd[_0x850e('0x20')]=qs[_0x850e('0x20')](_0x1d3184[_0x850e('0x36')][_0x850e('0x20')]);}_0x449acd['order']=qs[_0x850e('0x3e')](_0x1d3184[_0x850e('0x36')][_0x850e('0x3e')]);_0x449acd[_0x850e('0x3f')]=qs[_0x850e('0x38')](_[_0x850e('0x40')](_0x1d3184[_0x850e('0x36')],_0xe73c8[_0x850e('0x38')]),_0x10e201);if(_0x1d3184[_0x850e('0x36')][_0x850e('0x41')]){_0x449acd[_0x850e('0x3f')]=_['merge'](_0x449acd['where'],{'$or':_['map'](_0x10e201,function(_0xc74053){if(_0xc74053[_0x850e('0x33')]!==_0x850e('0x42')){var _0x51bf24={};_0x51bf24[_0xc74053[_0x850e('0x2d')]]={'$like':'%'+_0x1d3184[_0x850e('0x36')][_0x850e('0x41')]+'%'};return _0x51bf24;}})});}_0x449acd=_[_0x850e('0x43')]({},_0x449acd,_0x1d3184[_0x850e('0x44')]);var _0x2f1477={'where':_0x449acd[_0x850e('0x3f')]};return db[_0x850e('0x31')][_0x850e('0x23')](_0x2f1477)[_0x850e('0x2a')](function(_0x3e4b6e){_0x36efba[_0x850e('0x23')]=_0x3e4b6e;if(_0x1d3184['query']['includeAll']){_0x449acd['include']=[{'all':!![]}];}return db[_0x850e('0x31')][_0x850e('0x45')](_0x449acd);})[_0x850e('0x2a')](function(_0x36e1f4){_0x36efba[_0x850e('0x46')]=_0x36e1f4;return _0x36efba;})['then'](respondWithFilteredResult(_0x83d164,_0x449acd))[_0x850e('0x47')](handleError(_0x83d164,null));};exports[_0x850e('0x48')]=function(_0x16bbdb,_0x55cb2b){var _0x1897b2={'raw':!![],'where':{'id':_0x16bbdb[_0x850e('0x49')]['id']}},_0x49e29e={};_0x49e29e[_0x850e('0x35')]=_[_0x850e('0x37')](db[_0x850e('0x31')][_0x850e('0x4a')]);_0x49e29e[_0x850e('0x36')]=_[_0x850e('0x37')](_0x16bbdb[_0x850e('0x36')]);_0x49e29e[_0x850e('0x38')]=_[_0x850e('0x39')](_0x49e29e[_0x850e('0x35')],_0x49e29e[_0x850e('0x36')]);_0x1897b2[_0x850e('0x3a')]=_[_0x850e('0x39')](_0x49e29e[_0x850e('0x35')],qs[_0x850e('0x3b')](_0x16bbdb[_0x850e('0x36')][_0x850e('0x3b')]));_0x1897b2[_0x850e('0x3a')]=_0x1897b2[_0x850e('0x3a')][_0x850e('0x3c')]?_0x1897b2[_0x850e('0x3a')]:_0x49e29e[_0x850e('0x35')];if(_0x16bbdb[_0x850e('0x36')][_0x850e('0x4b')]){_0x1897b2[_0x850e('0x4c')]=[{'all':!![]}];}_0x1897b2=_['merge']({},_0x1897b2,_0x16bbdb[_0x850e('0x44')]);return db[_0x850e('0x31')][_0x850e('0x4d')](_0x1897b2)['then'](handleEntityNotFound(_0x55cb2b,null))[_0x850e('0x2a')](respondWithResult(_0x55cb2b,null))[_0x850e('0x47')](handleError(_0x55cb2b,null));};exports[_0x850e('0x4e')]=function(_0x51e80b,_0x3fe985){return db[_0x850e('0x31')][_0x850e('0x4e')](_0x51e80b[_0x850e('0x4f')],{})[_0x850e('0x2a')](respondWithResult(_0x3fe985,0xc9))[_0x850e('0x47')](handleError(_0x3fe985,null));};exports['update']=function(_0x95da55,_0x458986){if(_0x95da55[_0x850e('0x4f')]['id']){delete _0x95da55['body']['id'];}return db[_0x850e('0x31')][_0x850e('0x4d')]({'where':{'id':_0x95da55['params']['id']}})[_0x850e('0x2a')](handleEntityNotFound(_0x458986,null))[_0x850e('0x2a')](saveUpdates(_0x95da55['body'],null))[_0x850e('0x2a')](respondWithResult(_0x458986,null))[_0x850e('0x47')](handleError(_0x458986,null));};exports[_0x850e('0x29')]=function(_0x217f91,_0x1d790a){return db[_0x850e('0x31')]['find']({'where':{'id':_0x217f91[_0x850e('0x49')]['id']}})[_0x850e('0x2a')](handleEntityNotFound(_0x1d790a,null))[_0x850e('0x2a')](removeEntity(_0x1d790a,null))[_0x850e('0x47')](handleError(_0x1d790a,null));};exports[_0x850e('0x50')]=function(_0x53f7c0,_0x37eef9){return db[_0x850e('0x31')]['describe']()[_0x850e('0x2a')](respondWithResult(_0x37eef9,null))['catch'](handleError(_0x37eef9,null));};
\ No newline at end of file
index 6d4b063..8f21ec9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2891=['lodash','util','../../config/logger','moment','request-promise','path','SquareDetailsReport','report_square_details'];(function(_0x3bd608,_0x4983d3){var _0x538339=function(_0x3f23fd){while(--_0x3f23fd){_0x3bd608['push'](_0x3bd608['shift']());}};_0x538339(++_0x4983d3);}(_0x2891,0xf8));var _0x1289=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0x2891[_0x4243a3];return _0x1b2a33;};'use strict';var _=require(_0x1289('0x0'));var util=require(_0x1289('0x1'));var logger=require(_0x1289('0x2'))('api');var moment=require(_0x1289('0x3'));var BPromise=require('bluebird');var rp=require(_0x1289('0x4'));var fs=require('fs');var path=require(_0x1289('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./squareReportDetail.attributes');module['exports']=function(_0x2c4de9,_0x35f688){return _0x2c4de9['define'](_0x1289('0x6'),attributes,{'tableName':_0x1289('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb0f7=['exports','define','SquareDetailsReport','report_square_details','../../config/logger','api','bluebird','request-promise','path','./squareReportDetail.attributes'];(function(_0x31caf1,_0x52cbcf){var _0x40b424=function(_0xa7cd4d){while(--_0xa7cd4d){_0x31caf1['push'](_0x31caf1['shift']());}};_0x40b424(++_0x52cbcf);}(_0xb0f7,0xae));var _0x7b0f=function(_0xd0c54f,_0x5910ba){_0xd0c54f=_0xd0c54f-0x0;var _0x533c19=_0xb0f7[_0xd0c54f];return _0x533c19;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x7b0f('0x0'))(_0x7b0f('0x1'));var moment=require('moment');var BPromise=require(_0x7b0f('0x2'));var rp=require(_0x7b0f('0x3'));var fs=require('fs');var path=require(_0x7b0f('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x7b0f('0x5'));module[_0x7b0f('0x6')]=function(_0x1be42a,_0x4f5c9e){return _0x1be42a[_0x7b0f('0x7')](_0x7b0f('0x8'),attributes,{'tableName':_0x7b0f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 335e5a8..8682bc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6fa=['result','catch','CreateSquareDetailsReport','SquareDetailsReport','create','options','raw','debug','lodash','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x41e991,_0x4667a8){var _0x1bdc85=function(_0x154eab){while(--_0x154eab){_0x41e991['push'](_0x41e991['shift']());}};_0x1bdc85(++_0x4667a8);}(_0xb6fa,0x1c2));var _0xab6f=function(_0x20a558,_0x160e0e){_0x20a558=_0x20a558-0x0;var _0x53d3f7=_0xb6fa[_0x20a558];return _0x53d3f7;};'use strict';var _=require(_0xab6f('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xab6f('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xab6f('0x2'))['db'];var utils=require(_0xab6f('0x3'));var logger=require('../../config/logger')(_0xab6f('0x4'));var config=require(_0xab6f('0x5'));var jayson=require(_0xab6f('0x6'));var client=jayson[_0xab6f('0x7')][_0xab6f('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x895acc,_0x16b84e,_0x1b4da9){return new BPromise(function(_0x46b0f6,_0x85cb19){return client[_0xab6f('0x9')](_0x895acc,_0x1b4da9)[_0xab6f('0xa')](function(_0x199f2d){logger[_0xab6f('0xb')](_0xab6f('0xc'),_0x16b84e,_0xab6f('0xd'));logger['debug']('SquareDetailsReport,\x20%s,\x20%s,\x20%s',_0x16b84e,_0xab6f('0xd'),JSON[_0xab6f('0xe')](_0x199f2d));if(_0x199f2d['error']){if(_0x199f2d[_0xab6f('0xf')][_0xab6f('0x10')]===0x1f4){logger[_0xab6f('0xf')](_0xab6f('0xc'),_0x16b84e,_0x199f2d[_0xab6f('0xf')][_0xab6f('0x11')]);return _0x85cb19(_0x199f2d[_0xab6f('0xf')]['message']);}logger[_0xab6f('0xf')](_0xab6f('0xc'),_0x16b84e,_0x199f2d[_0xab6f('0xf')]['message']);return _0x46b0f6(_0x199f2d[_0xab6f('0xf')]['message']);}else{logger['info'](_0xab6f('0xc'),_0x16b84e,'request\x20sent');_0x46b0f6(_0x199f2d[_0xab6f('0x12')][_0xab6f('0x11')]);}})[_0xab6f('0x13')](function(_0x59b934){logger[_0xab6f('0xf')]('SquareDetailsReport,\x20%s,\x20%s',_0x16b84e,_0x59b934);_0x85cb19(_0x59b934);});});}exports[_0xab6f('0x14')]=function(_0x439b73){var _0x3e616c=this;return new Promise(function(_0x2f75c1,_0xbb7af){return db[_0xab6f('0x15')][_0xab6f('0x16')](_0x439b73['body'],{'raw':_0x439b73[_0xab6f('0x17')]?_0x439b73[_0xab6f('0x17')][_0xab6f('0x18')]===undefined?!![]:![]:!![]})['then'](function(_0x43eda0){logger[_0xab6f('0xb')](_0xab6f('0x14'),_0x439b73);logger[_0xab6f('0x19')](_0xab6f('0x14'),_0x439b73,JSON[_0xab6f('0xe')](_0x43eda0));_0x2f75c1(_0x43eda0);})['catch'](function(_0x4dc7c1){logger[_0xab6f('0xf')](_0xab6f('0x14'),_0x4dc7c1[_0xab6f('0x11')],_0x439b73);_0xbb7af(_0x3e616c[_0xab6f('0xf')](0x1f4,_0x4dc7c1[_0xab6f('0x11')]));});});};
\ No newline at end of file
+var _0x351d=['lodash','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','info','request\x20sent','debug','stringify','error','SquareDetailsReport,\x20%s,\x20%s','message','result','CreateSquareDetailsReport','SquareDetailsReport','create','options','then'];(function(_0xea8947,_0x1b573d){var _0x2455e9=function(_0x18771e){while(--_0x18771e){_0xea8947['push'](_0xea8947['shift']());}};_0x2455e9(++_0x1b573d);}(_0x351d,0x90));var _0xd351=function(_0x3da3e3,_0x3f2a86){_0x3da3e3=_0x3da3e3-0x0;var _0x3d4e9d=_0x351d[_0x3da3e3];return _0x3d4e9d;};'use strict';var _=require(_0xd351('0x0'));var util=require('util');var moment=require(_0xd351('0x1'));var BPromise=require(_0xd351('0x2'));var rs=require(_0xd351('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd351('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xd351('0x5'))(_0xd351('0x6'));var config=require('../../config/environment');var jayson=require(_0xd351('0x7'));var client=jayson[_0xd351('0x8')][_0xd351('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5318b2,_0x16b3f7,_0x235aa0){return new BPromise(function(_0x4e1b06,_0x2e9a2a){return client[_0xd351('0xa')](_0x5318b2,_0x235aa0)['then'](function(_0x586c60){logger[_0xd351('0xb')]('SquareDetailsReport,\x20%s,\x20%s',_0x16b3f7,_0xd351('0xc'));logger[_0xd351('0xd')]('SquareDetailsReport,\x20%s,\x20%s,\x20%s',_0x16b3f7,_0xd351('0xc'),JSON[_0xd351('0xe')](_0x586c60));if(_0x586c60['error']){if(_0x586c60[_0xd351('0xf')]['code']===0x1f4){logger['error'](_0xd351('0x10'),_0x16b3f7,_0x586c60[_0xd351('0xf')][_0xd351('0x11')]);return _0x2e9a2a(_0x586c60[_0xd351('0xf')]['message']);}logger[_0xd351('0xf')](_0xd351('0x10'),_0x16b3f7,_0x586c60['error'][_0xd351('0x11')]);return _0x4e1b06(_0x586c60[_0xd351('0xf')][_0xd351('0x11')]);}else{logger[_0xd351('0xb')](_0xd351('0x10'),_0x16b3f7,'request\x20sent');_0x4e1b06(_0x586c60[_0xd351('0x12')]['message']);}})['catch'](function(_0x2c6708){logger['error'](_0xd351('0x10'),_0x16b3f7,_0x2c6708);_0x2e9a2a(_0x2c6708);});});}exports[_0xd351('0x13')]=function(_0x4e0164){var _0x4c6693=this;return new Promise(function(_0x1e1a3c,_0x2bfc53){return db[_0xd351('0x14')][_0xd351('0x15')](_0x4e0164['body'],{'raw':_0x4e0164[_0xd351('0x16')]?_0x4e0164['options']['raw']===undefined?!![]:![]:!![]})[_0xd351('0x17')](function(_0x4a427b){logger[_0xd351('0xb')](_0xd351('0x13'),_0x4e0164);logger[_0xd351('0xd')](_0xd351('0x13'),_0x4e0164,JSON[_0xd351('0xe')](_0x4a427b));_0x1e1a3c(_0x4a427b);})['catch'](function(_0x18625b){logger[_0xd351('0xf')](_0xd351('0x13'),_0x18625b['message'],_0x4e0164);_0x2bfc53(_0x4c6693[_0xd351('0xf')](0x1f4,_0x18625b[_0xd351('0x11')]));});});};
\ No newline at end of file
index e0930f0..7eaa1a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0386=['express','Router','../../components/auth/service','index','/process/:pid/kill','killProcess'];(function(_0x4715d2,_0x3371b2){var _0x141811=function(_0x520bc6){while(--_0x520bc6){_0x4715d2['push'](_0x4715d2['shift']());}};_0x141811(++_0x3371b2);}(_0x0386,0x1ce));var _0x6038=function(_0x3da887,_0x536787){_0x3da887=_0x3da887-0x0;var _0x59769a=_0x0386[_0x3da887];return _0x59769a;};'use strict';var express=require(_0x6038('0x0'));var router=express[_0x6038('0x1')]();var auth=require(_0x6038('0x2'));var controller=require('./system.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x6038('0x3')]);router['get'](_0x6038('0x4'),auth['isAuthenticated'](),controller[_0x6038('0x5')]);module['exports']=router;
\ No newline at end of file
+var _0x42b7=['express','Router','../../components/auth/service','get','isAuthenticated','index','/process/:pid/kill'];(function(_0x5036f1,_0x555d55){var _0x283263=function(_0x3a7508){while(--_0x3a7508){_0x5036f1['push'](_0x5036f1['shift']());}};_0x283263(++_0x555d55);}(_0x42b7,0x103));var _0x742b=function(_0x1f6739,_0x2ff18d){_0x1f6739=_0x1f6739-0x0;var _0x57894a=_0x42b7[_0x1f6739];return _0x57894a;};'use strict';var express=require(_0x742b('0x0'));var router=express[_0x742b('0x1')]();var auth=require(_0x742b('0x2'));var controller=require('./system.controller');router[_0x742b('0x3')]('/',auth[_0x742b('0x4')](),controller[_0x742b('0x5')]);router['get'](_0x742b('0x6'),auth[_0x742b('0x4')](),controller['killProcess']);module['exports']=router;
\ No newline at end of file
index 41cad78..dc16bd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8637=['send','getAllData','json','catch','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','pid','then','split','length','indexOf','kill','SIGINT','killProcess','systeminformation','child_process','exec','../../config/logger','api','util','bluebird','lodash','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','name','status'];(function(_0x30a791,_0x48660e){var _0x18a8c8=function(_0x5ad83f){while(--_0x5ad83f){_0x30a791['push'](_0x30a791['shift']());}};_0x18a8c8(++_0x48660e);}(_0x8637,0x80));var _0x7863=function(_0x23f61f,_0x45cd83){_0x23f61f=_0x23f61f-0x0;var _0x5c4ae6=_0x8637[_0x23f61f];return _0x5c4ae6;};'use strict';var info=require(_0x7863('0x0'));var exec=require(_0x7863('0x1'))[_0x7863('0x2')];var logger=require(_0x7863('0x3'))(_0x7863('0x4'));var util=require(_0x7863('0x5'));var BPromise=require(_0x7863('0x6'));var _=require(_0x7863('0x7'));function handleError(_0xe0f2e8,_0x32cb12,_0x58bb71){_0x32cb12=_0x32cb12||0x1f4;return function(_0x3003d0){logger['error'](_0x7863('0x8'),_0x58bb71,_0x32cb12,util[_0x7863('0x9')](_0x3003d0,{'showHidden':![],'depth':null}));delete _0x3003d0[_0x7863('0xa')];_0xe0f2e8[_0x7863('0xb')](_0x32cb12)[_0x7863('0xc')](_0x3003d0);};}exports['index']=function(_0x463f2f,_0x532635){return info[_0x7863('0xd')]()['then'](function(_0x2615d8){return _0x532635[_0x7863('0xb')](0xc8)[_0x7863('0xe')](_0x2615d8);})[_0x7863('0xf')](function(_0x264dc1){return _0x532635['status'](0x1f4)[_0x7863('0xe')](_0x264dc1);});};exports['killProcess']=function(_0x561fc6,_0x24276e){var _0x2e30f0=[_0x7863('0x10')];return new BPromise(function(_0x67a71,_0x1249ad){return exec(util[_0x7863('0x11')](_0x7863('0x12'),_0x561fc6[_0x7863('0x13')][_0x7863('0x14')]),function(_0x51520f,_0x11237d,_0x4e8938){if(_0x51520f){return _0x1249ad(_0x51520f);}return _0x67a71(_0x11237d);});})[_0x7863('0x15')](function(_0x49ace4){var _0x3fdfb7=![];var _0x109bda=_0x49ace4[_0x7863('0x16')](/\n/);for(var _0x3323e3=0x0,_0x29967a=_0x2e30f0[_0x7863('0x17')];_0x3323e3<_0x29967a,_0x3fdfb7===![];_0x3323e3+=0x1){if(_0x49ace4[_0x7863('0x18')](_0x2e30f0[_0x3323e3])>=0x0){_0x3fdfb7=!![];}}if(!_0x3fdfb7){throw new Error(util[_0x7863('0x11')]('Process\x20with\x20pid\x20%s\x20not\x20found!',_0x561fc6['params']['pid']));}process[_0x7863('0x19')](_0x561fc6[_0x7863('0x13')][_0x7863('0x14')],_0x7863('0x1a'));return _0x24276e[_0x7863('0xb')](0xc8)[_0x7863('0xe')]({'message':util[_0x7863('0x11')]('Process\x20with\x20pid\x20%s\x20killed\x20correctly',_0x561fc6[_0x7863('0x13')][_0x7863('0x14')])});})[_0x7863('0xf')](handleError(_0x24276e,null,_0x7863('0x1b')));};
\ No newline at end of file
+var _0x2d91=['Process\x20with\x20pid\x20%s\x20not\x20found!','kill','Process\x20with\x20pid\x20%s\x20killed\x20correctly','systeminformation','child_process','exec','../../config/logger','util','bluebird','lodash','error','inspect','name','send','index','getAllData','status','json','catch','killProcess','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','pid','split','indexOf'];(function(_0x31259d,_0x251eb4){var _0x286f79=function(_0x53255b){while(--_0x53255b){_0x31259d['push'](_0x31259d['shift']());}};_0x286f79(++_0x251eb4);}(_0x2d91,0x1d7));var _0x12d9=function(_0x149083,_0x4047b6){_0x149083=_0x149083-0x0;var _0x4dc74e=_0x2d91[_0x149083];return _0x4dc74e;};'use strict';var info=require(_0x12d9('0x0'));var exec=require(_0x12d9('0x1'))[_0x12d9('0x2')];var logger=require(_0x12d9('0x3'))('api');var util=require(_0x12d9('0x4'));var BPromise=require(_0x12d9('0x5'));var _=require(_0x12d9('0x6'));function handleError(_0x11d207,_0x38b938,_0x4011c3){_0x38b938=_0x38b938||0x1f4;return function(_0xed5aad){logger[_0x12d9('0x7')]('<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s',_0x4011c3,_0x38b938,util[_0x12d9('0x8')](_0xed5aad,{'showHidden':![],'depth':null}));delete _0xed5aad[_0x12d9('0x9')];_0x11d207['status'](_0x38b938)[_0x12d9('0xa')](_0xed5aad);};}exports[_0x12d9('0xb')]=function(_0x6772fa,_0xbde044){return info[_0x12d9('0xc')]()['then'](function(_0x2e0f33){return _0xbde044[_0x12d9('0xd')](0xc8)[_0x12d9('0xe')](_0x2e0f33);})[_0x12d9('0xf')](function(_0x229730){return _0xbde044['status'](0x1f4)[_0x12d9('0xe')](_0x229730);});};exports[_0x12d9('0x10')]=function(_0x3e0a49,_0x23ba7b){var _0x4a7c98=['components/import/cm'];return new BPromise(function(_0x271959,_0x23eef4){return exec(util[_0x12d9('0x11')](_0x12d9('0x12'),_0x3e0a49[_0x12d9('0x13')][_0x12d9('0x14')]),function(_0x376408,_0x52a988,_0x35b418){if(_0x376408){return _0x23eef4(_0x376408);}return _0x271959(_0x52a988);});})['then'](function(_0x468170){var _0x1f1ffc=![];var _0x476211=_0x468170[_0x12d9('0x15')](/\n/);for(var _0xcf8e00=0x0,_0x1fa470=_0x4a7c98['length'];_0xcf8e00<_0x1fa470,_0x1f1ffc===![];_0xcf8e00+=0x1){if(_0x468170[_0x12d9('0x16')](_0x4a7c98[_0xcf8e00])>=0x0){_0x1f1ffc=!![];}}if(!_0x1f1ffc){throw new Error(util[_0x12d9('0x11')](_0x12d9('0x17'),_0x3e0a49[_0x12d9('0x13')]['pid']));}process[_0x12d9('0x18')](_0x3e0a49[_0x12d9('0x13')][_0x12d9('0x14')],'SIGINT');return _0x23ba7b[_0x12d9('0xd')](0xc8)[_0x12d9('0xe')]({'message':util[_0x12d9('0x11')](_0x12d9('0x19'),_0x3e0a49['params'][_0x12d9('0x14')])});})['catch'](handleError(_0x23ba7b,null,_0x12d9('0x10')));};
\ No newline at end of file
index 9cf7cc8..686fb07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7aa0=['exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./tag.controller','get','index','/:id','show','post','isAuthenticated','create','put','update','destroy'];(function(_0x46d208,_0x3654d0){var _0x3bc42f=function(_0x4722bf){while(--_0x4722bf){_0x46d208['push'](_0x46d208['shift']());}};_0x3bc42f(++_0x3654d0);}(_0x7aa0,0xa1));var _0x07aa=function(_0x39a8e5,_0xc7c9ef){_0x39a8e5=_0x39a8e5-0x0;var _0x22a593=_0x7aa0[_0x39a8e5];return _0x22a593;};'use strict';var multer=require(_0x07aa('0x0'));var util=require(_0x07aa('0x1'));var path=require(_0x07aa('0x2'));var timeout=require(_0x07aa('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x07aa('0x4'));var auth=require(_0x07aa('0x5'));var interaction=require(_0x07aa('0x6'));var config=require(_0x07aa('0x7'));var controller=require(_0x07aa('0x8'));router[_0x07aa('0x9')]('/',auth['isAuthenticated'](),controller[_0x07aa('0xa')]);router['get'](_0x07aa('0xb'),auth['isAuthenticated'](),controller[_0x07aa('0xc')]);router[_0x07aa('0xd')]('/',auth[_0x07aa('0xe')](),controller[_0x07aa('0xf')]);router[_0x07aa('0x10')](_0x07aa('0xb'),auth[_0x07aa('0xe')](),controller[_0x07aa('0x11')]);router['delete'](_0x07aa('0xb'),auth['isAuthenticated'](),controller[_0x07aa('0x12')]);module[_0x07aa('0x13')]=router;
\ No newline at end of file
+var _0x1a4d=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','post','put','update','delete','destroy','exports','multer','util'];(function(_0x71a487,_0x5eaddb){var _0x32a9d0=function(_0x5c05e7){while(--_0x5c05e7){_0x71a487['push'](_0x71a487['shift']());}};_0x32a9d0(++_0x5eaddb);}(_0x1a4d,0x12e));var _0xd1a4=function(_0x4ff668,_0x1c0c37){_0x4ff668=_0x4ff668-0x0;var _0x20c647=_0x1a4d[_0x4ff668];return _0x20c647;};'use strict';var multer=require(_0xd1a4('0x0'));var util=require(_0xd1a4('0x1'));var path=require(_0xd1a4('0x2'));var timeout=require(_0xd1a4('0x3'));var express=require('express');var router=express[_0xd1a4('0x4')]();var fs_extra=require(_0xd1a4('0x5'));var auth=require(_0xd1a4('0x6'));var interaction=require(_0xd1a4('0x7'));var config=require(_0xd1a4('0x8'));var controller=require('./tag.controller');router[_0xd1a4('0x9')]('/',auth[_0xd1a4('0xa')](),controller[_0xd1a4('0xb')]);router[_0xd1a4('0x9')](_0xd1a4('0xc'),auth['isAuthenticated'](),controller['show']);router[_0xd1a4('0xd')]('/',auth[_0xd1a4('0xa')](),controller['create']);router[_0xd1a4('0xe')](_0xd1a4('0xc'),auth[_0xd1a4('0xa')](),controller[_0xd1a4('0xf')]);router[_0xd1a4('0x10')](_0xd1a4('0xc'),auth[_0xd1a4('0xa')](),controller[_0xd1a4('0x11')]);module[_0xd1a4('0x12')]=router;
\ No newline at end of file
index 7fa623f..1ec430e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf089=['exports','STRING','#0091EA'];(function(_0x4ae625,_0xf396d0){var _0x31accf=function(_0x3ded6b){while(--_0x3ded6b){_0x4ae625['push'](_0x4ae625['shift']());}};_0x31accf(++_0xf396d0);}(_0xf089,0xba));var _0x9f08=function(_0x5d6353,_0x509fac){_0x5d6353=_0x5d6353-0x0;var _0x4124bb=_0xf089[_0x5d6353];return _0x4124bb;};'use strict';var Sequelize=require('sequelize');module[_0x9f08('0x0')]={'name':{'type':Sequelize[_0x9f08('0x1')],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x9f08('0x1')],'defaultValue':_0x9f08('0x2')},'description':{'type':Sequelize[_0x9f08('0x1')]}};
\ No newline at end of file
+var _0x8d37=['name','sequelize','exports','STRING'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x8d37,0x1d5));var _0x78d3=function(_0x19e642,_0x16c131){_0x19e642=_0x19e642-0x0;var _0x2818b3=_0x8d37[_0x19e642];return _0x2818b3;};'use strict';var Sequelize=require(_0x78d3('0x0'));module[_0x78d3('0x1')]={'name':{'type':Sequelize[_0x78d3('0x2')],'unique':_0x78d3('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x78d3('0x2')],'defaultValue':'#0091EA'},'description':{'type':Sequelize[_0x78d3('0x2')]}};
\ No newline at end of file
index 8cabe2d..df6d207 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x579c=['sendStatus','name','send','index','map','Tag','rawAttributes','key','query','keys','intersection','attributes','model','fields','hasOwnProperty','order','sort','filters','pick','filter','where','merge','type','VIRTUAL','options','includeAll','findAll','rows','show','params','length','include','catch','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','then','destroy','Tags','UserProfileResource'];(function(_0x282b3b,_0x33d4f8){var _0x3aaba1=function(_0x1bd4eb){while(--_0x1bd4eb){_0x282b3b['push'](_0x282b3b['shift']());}};_0x3aaba1(++_0x33d4f8);}(_0x579c,0xda));var _0xc579=function(_0x455ee1,_0x43b4f4){_0x455ee1=_0x455ee1-0x0;var _0x2097aa=_0x579c[_0x455ee1];return _0x2097aa;};'use strict';var emlformat=require(_0xc579('0x0'));var rimraf=require(_0xc579('0x1'));var zipdir=require(_0xc579('0x2'));var jsonpatch=require(_0xc579('0x3'));var rp=require(_0xc579('0x4'));var moment=require('moment');var BPromise=require(_0xc579('0x5'));var Mustache=require('mustache');var util=require(_0xc579('0x6'));var path=require(_0xc579('0x7'));var sox=require(_0xc579('0x8'));var csv=require(_0xc579('0x9'));var ejs=require(_0xc579('0xa'));var fs=require('fs');var fs_extra=require(_0xc579('0xb'));var _=require(_0xc579('0xc'));var squel=require('squel');var crypto=require(_0xc579('0xd'));var jsforce=require(_0xc579('0xe'));var deskjs=require(_0xc579('0xf'));var toCsv=require(_0xc579('0x9'));var querystring=require(_0xc579('0x10'));var Papa=require(_0xc579('0x11'));var Redis=require(_0xc579('0x12'));var authService=require(_0xc579('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xc579('0x14'));var hardwareService=require(_0xc579('0x15'));var logger=require(_0xc579('0x16'))(_0xc579('0x17'));var utils=require(_0xc579('0x18'));var config=require(_0xc579('0x19'));var licenseUtil=require(_0xc579('0x1a'));var db=require(_0xc579('0x1b'))['db'];function respondWithStatusCode(_0x421812,_0x441028){_0x441028=_0x441028||0xcc;return function(_0x448d51){if(_0x448d51){return _0x421812['sendStatus'](_0x441028);}return _0x421812[_0xc579('0x1c')](_0x441028)['end']();};}function respondWithResult(_0xf5400e,_0x59243e){_0x59243e=_0x59243e||0xc8;return function(_0x424e15){if(_0x424e15){return _0xf5400e['status'](_0x59243e)[_0xc579('0x1d')](_0x424e15);}};}function respondWithFilteredResult(_0x4b3635,_0x349e82){return function(_0x115276){if(_0x115276){var _0x567de5=typeof _0x349e82['offset']===_0xc579('0x1e')&&typeof _0x349e82[_0xc579('0x1f')]===_0xc579('0x1e');var _0x414ee7=_0x115276[_0xc579('0x20')];var _0x33d341=_0x567de5?0x0:_0x349e82[_0xc579('0x21')];var _0x3da8a1=_0x567de5?_0x115276[_0xc579('0x20')]:_0x349e82[_0xc579('0x21')]+_0x349e82['limit'];var _0x463f5e;if(_0x3da8a1>=_0x414ee7){_0x3da8a1=_0x414ee7;_0x463f5e=0xc8;}else{_0x463f5e=0xce;}_0x4b3635[_0xc579('0x1c')](_0x463f5e);return _0x4b3635['set'](_0xc579('0x22'),_0x33d341+'-'+_0x3da8a1+'/'+_0x414ee7)[_0xc579('0x1d')](_0x115276);}return null;};}function patchUpdates(_0x14fcdd){return function(_0x6501bc){try{jsonpatch[_0xc579('0x23')](_0x6501bc,_0x14fcdd,!![]);}catch(_0x4417e1){return BPromise[_0xc579('0x24')](_0x4417e1);}return _0x6501bc[_0xc579('0x25')]();};}function saveUpdates(_0x55781e,_0x92657f){return function(_0xad4889){if(_0xad4889){return _0xad4889[_0xc579('0x26')](_0x55781e)[_0xc579('0x27')](function(_0x1da86e){return _0x1da86e;});}return null;};}function removeEntity(_0x565a1b,_0x3634f2){return function(_0x3cf83f){if(_0x3cf83f){return _0x3cf83f[_0xc579('0x28')]()['then'](function(){var _0x45e1ac=_0x3cf83f['get']({'plain':!![]});var _0x4610c2=_0xc579('0x29');return db[_0xc579('0x2a')]['destroy']({'where':{'type':_0x4610c2,'resourceId':_0x45e1ac['id']}})[_0xc579('0x27')](function(){return _0x3cf83f;});})['then'](function(){_0x565a1b['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x540d90,_0x3f7363){return function(_0xfdbb73){if(!_0xfdbb73){_0x540d90[_0xc579('0x2b')](0x194);}return _0xfdbb73;};}function handleError(_0x206e39,_0x194477){_0x194477=_0x194477||0x1f4;return function(_0x45fef4){logger['error'](_0x45fef4['stack']);if(_0x45fef4[_0xc579('0x2c')]){delete _0x45fef4['name'];}_0x206e39[_0xc579('0x1c')](_0x194477)[_0xc579('0x2d')](_0x45fef4);};}exports[_0xc579('0x2e')]=function(_0x3fe96b,_0x1ad8f7){var _0x156bf5={},_0x45e6a3={},_0x133d08={'count':0x0,'rows':[]};var _0x49b48f=_[_0xc579('0x2f')](db[_0xc579('0x30')][_0xc579('0x31')],function(_0x333fa4){return{'name':_0x333fa4['fieldName'],'type':_0x333fa4['type'][_0xc579('0x32')]};});_0x45e6a3['model']=_[_0xc579('0x2f')](_0x49b48f,_0xc579('0x2c'));_0x45e6a3[_0xc579('0x33')]=_[_0xc579('0x34')](_0x3fe96b[_0xc579('0x33')]);_0x45e6a3['filters']=_[_0xc579('0x35')](_0x45e6a3['model'],_0x45e6a3[_0xc579('0x33')]);_0x156bf5[_0xc579('0x36')]=_['intersection'](_0x45e6a3[_0xc579('0x37')],qs[_0xc579('0x38')](_0x3fe96b['query']['fields']));_0x156bf5[_0xc579('0x36')]=_0x156bf5[_0xc579('0x36')]['length']?_0x156bf5[_0xc579('0x36')]:_0x45e6a3[_0xc579('0x37')];if(!_0x3fe96b['query'][_0xc579('0x39')]('nolimit')){_0x156bf5[_0xc579('0x1f')]=qs[_0xc579('0x1f')](_0x3fe96b['query'][_0xc579('0x1f')]);_0x156bf5[_0xc579('0x21')]=qs[_0xc579('0x21')](_0x3fe96b[_0xc579('0x33')][_0xc579('0x21')]);}_0x156bf5[_0xc579('0x3a')]=qs['sort'](_0x3fe96b[_0xc579('0x33')][_0xc579('0x3b')]);_0x156bf5['where']=qs[_0xc579('0x3c')](_[_0xc579('0x3d')](_0x3fe96b[_0xc579('0x33')],_0x45e6a3[_0xc579('0x3c')]),_0x49b48f);if(_0x3fe96b['query'][_0xc579('0x3e')]){_0x156bf5[_0xc579('0x3f')]=_[_0xc579('0x40')](_0x156bf5['where'],{'$or':_['map'](_0x49b48f,function(_0x5c9d54){if(_0x5c9d54[_0xc579('0x41')]!==_0xc579('0x42')){var _0x3349e0={};_0x3349e0[_0x5c9d54[_0xc579('0x2c')]]={'$like':'%'+_0x3fe96b[_0xc579('0x33')][_0xc579('0x3e')]+'%'};return _0x3349e0;}})});}_0x156bf5=_['merge']({},_0x156bf5,_0x3fe96b[_0xc579('0x43')]);var _0x53ab02={'where':_0x156bf5[_0xc579('0x3f')]};return db[_0xc579('0x30')][_0xc579('0x20')](_0x53ab02)[_0xc579('0x27')](function(_0x3d8f24){_0x133d08[_0xc579('0x20')]=_0x3d8f24;if(_0x3fe96b[_0xc579('0x33')][_0xc579('0x44')]){_0x156bf5['include']=[{'all':!![]}];}return db[_0xc579('0x30')][_0xc579('0x45')](_0x156bf5);})[_0xc579('0x27')](function(_0x2449e6){_0x133d08[_0xc579('0x46')]=_0x2449e6;return _0x133d08;})[_0xc579('0x27')](respondWithFilteredResult(_0x1ad8f7,_0x156bf5))['catch'](handleError(_0x1ad8f7,null));};exports[_0xc579('0x47')]=function(_0x290493,_0x194f95){var _0x4cf801={'raw':!![],'where':{'id':_0x290493[_0xc579('0x48')]['id']}},_0x3e66c0={};_0x3e66c0[_0xc579('0x37')]=_['keys'](db[_0xc579('0x30')]['rawAttributes']);_0x3e66c0[_0xc579('0x33')]=_[_0xc579('0x34')](_0x290493[_0xc579('0x33')]);_0x3e66c0['filters']=_[_0xc579('0x35')](_0x3e66c0[_0xc579('0x37')],_0x3e66c0['query']);_0x4cf801['attributes']=_[_0xc579('0x35')](_0x3e66c0[_0xc579('0x37')],qs[_0xc579('0x38')](_0x290493[_0xc579('0x33')]['fields']));_0x4cf801['attributes']=_0x4cf801[_0xc579('0x36')][_0xc579('0x49')]?_0x4cf801[_0xc579('0x36')]:_0x3e66c0[_0xc579('0x37')];if(_0x290493['query'][_0xc579('0x44')]){_0x4cf801[_0xc579('0x4a')]=[{'all':!![]}];}_0x4cf801=_['merge']({},_0x4cf801,_0x290493[_0xc579('0x43')]);return db['Tag']['find'](_0x4cf801)['then'](handleEntityNotFound(_0x194f95,null))[_0xc579('0x27')](respondWithResult(_0x194f95,null))[_0xc579('0x4b')](handleError(_0x194f95,null));};exports[_0xc579('0x4c')]=function(_0x90a0d3,_0x1f9d15){return db['Tag'][_0xc579('0x4c')](_0x90a0d3[_0xc579('0x4d')],{})[_0xc579('0x27')](function(_0x5c726d){var _0x5cdead=_0x90a0d3[_0xc579('0x4e')][_0xc579('0x4f')]({'plain':!![]});if(!_0x5cdead)throw new Error(_0xc579('0x50'));if(_0x5cdead[_0xc579('0x51')]===_0xc579('0x4e')){var _0xe1a1d7=_0x5c726d[_0xc579('0x4f')]({'plain':!![]});var _0x5431ba='Tags';return db[_0xc579('0x52')][_0xc579('0x53')]({'where':{'name':_0x5431ba,'userProfileId':_0x5cdead['userProfileId']},'raw':!![]})[_0xc579('0x27')](function(_0x4de789){if(_0x4de789&&_0x4de789[_0xc579('0x54')]===0x0){return db[_0xc579('0x2a')][_0xc579('0x4c')]({'name':_0xe1a1d7[_0xc579('0x2c')],'resourceId':_0xe1a1d7['id'],'type':_0x4de789[_0xc579('0x2c')],'sectionId':_0x4de789['id']},{})[_0xc579('0x27')](function(){return _0x5c726d;});}else{return _0x5c726d;}})['catch'](function(_0x563970){logger[_0xc579('0x55')](_0xc579('0x56'),_0x563970);throw _0x563970;});}return _0x5c726d;})['then'](respondWithResult(_0x1f9d15,0xc9))[_0xc579('0x4b')](handleError(_0x1f9d15,null));};exports['update']=function(_0x241fb2,_0x1b0931){if(_0x241fb2[_0xc579('0x4d')]['id']){delete _0x241fb2[_0xc579('0x4d')]['id'];}return db['Tag']['find']({'where':{'id':_0x241fb2[_0xc579('0x48')]['id']}})['then'](handleEntityNotFound(_0x1b0931,null))[_0xc579('0x27')](saveUpdates(_0x241fb2[_0xc579('0x4d')],null))[_0xc579('0x27')](respondWithResult(_0x1b0931,null))['catch'](handleError(_0x1b0931,null));};exports[_0xc579('0x28')]=function(_0x43b067,_0x4a2701){return db[_0xc579('0x30')][_0xc579('0x53')]({'where':{'id':_0x43b067[_0xc579('0x48')]['id']}})[_0xc579('0x27')](handleEntityNotFound(_0x4a2701,null))[_0xc579('0x27')](removeEntity(_0x4a2701,null))['catch'](handleError(_0x4a2701,null));};
\ No newline at end of file
+var _0x6308=['nolimit','order','sort','pick','filter','where','merge','options','includeAll','include','findAll','rows','catch','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Tags','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','eml-format','zip-dir','moment','bluebird','mustache','util','path','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','undefined','count','offset','limit','set','Content-Range','apply','update','then','destroy','get','error','stack','name','index','map','Tag','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty'];(function(_0x34e528,_0x209f7d){var _0x2e634f=function(_0x5d92c1){while(--_0x5d92c1){_0x34e528['push'](_0x34e528['shift']());}};_0x2e634f(++_0x209f7d);}(_0x6308,0x1f2));var _0x8630=function(_0x101e7b,_0x4ef05b){_0x101e7b=_0x101e7b-0x0;var _0x4995c0=_0x6308[_0x101e7b];return _0x4995c0;};'use strict';var emlformat=require(_0x8630('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8630('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x8630('0x2'));var BPromise=require(_0x8630('0x3'));var Mustache=require(_0x8630('0x4'));var util=require(_0x8630('0x5'));var path=require(_0x8630('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x8630('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8630('0x8'));var squel=require(_0x8630('0x9'));var crypto=require(_0x8630('0xa'));var jsforce=require(_0x8630('0xb'));var deskjs=require(_0x8630('0xc'));var toCsv=require(_0x8630('0xd'));var querystring=require('querystring');var Papa=require(_0x8630('0xe'));var Redis=require('ioredis');var authService=require(_0x8630('0xf'));var qs=require(_0x8630('0x10'));var as=require(_0x8630('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8630('0x12'))(_0x8630('0x13'));var utils=require(_0x8630('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x8630('0x15'));var db=require(_0x8630('0x16'))['db'];function respondWithStatusCode(_0x5b6d75,_0x54073b){_0x54073b=_0x54073b||0xcc;return function(_0x303e3a){if(_0x303e3a){return _0x5b6d75[_0x8630('0x17')](_0x54073b);}return _0x5b6d75['status'](_0x54073b)[_0x8630('0x18')]();};}function respondWithResult(_0x4db686,_0xf31c17){_0xf31c17=_0xf31c17||0xc8;return function(_0x4cc542){if(_0x4cc542){return _0x4db686[_0x8630('0x19')](_0xf31c17)['json'](_0x4cc542);}};}function respondWithFilteredResult(_0x53f236,_0x29a42d){return function(_0x86c262){if(_0x86c262){var _0x49fce1=typeof _0x29a42d['offset']===_0x8630('0x1a')&&typeof _0x29a42d['limit']===_0x8630('0x1a');var _0x18a874=_0x86c262[_0x8630('0x1b')];var _0x20f462=_0x49fce1?0x0:_0x29a42d[_0x8630('0x1c')];var _0x1e9780=_0x49fce1?_0x86c262[_0x8630('0x1b')]:_0x29a42d[_0x8630('0x1c')]+_0x29a42d[_0x8630('0x1d')];var _0x5dd2e0;if(_0x1e9780>=_0x18a874){_0x1e9780=_0x18a874;_0x5dd2e0=0xc8;}else{_0x5dd2e0=0xce;}_0x53f236['status'](_0x5dd2e0);return _0x53f236[_0x8630('0x1e')](_0x8630('0x1f'),_0x20f462+'-'+_0x1e9780+'/'+_0x18a874)['json'](_0x86c262);}return null;};}function patchUpdates(_0x5cff5c){return function(_0x1325dc){try{jsonpatch[_0x8630('0x20')](_0x1325dc,_0x5cff5c,!![]);}catch(_0x1ac046){return BPromise['reject'](_0x1ac046);}return _0x1325dc['save']();};}function saveUpdates(_0xcc7454,_0x58c0b5){return function(_0x30fb4d){if(_0x30fb4d){return _0x30fb4d[_0x8630('0x21')](_0xcc7454)[_0x8630('0x22')](function(_0x469de3){return _0x469de3;});}return null;};}function removeEntity(_0x4c2851,_0x37c224){return function(_0xf24c11){if(_0xf24c11){return _0xf24c11[_0x8630('0x23')]()[_0x8630('0x22')](function(){var _0x41871a=_0xf24c11[_0x8630('0x24')]({'plain':!![]});var _0x37b7aa='Tags';return db['UserProfileResource'][_0x8630('0x23')]({'where':{'type':_0x37b7aa,'resourceId':_0x41871a['id']}})[_0x8630('0x22')](function(){return _0xf24c11;});})[_0x8630('0x22')](function(){_0x4c2851[_0x8630('0x19')](0xcc)[_0x8630('0x18')]();});}};}function handleEntityNotFound(_0x1c012d,_0x149a8e){return function(_0x349c4d){if(!_0x349c4d){_0x1c012d[_0x8630('0x17')](0x194);}return _0x349c4d;};}function handleError(_0x357c15,_0x221841){_0x221841=_0x221841||0x1f4;return function(_0x41f74c){logger[_0x8630('0x25')](_0x41f74c[_0x8630('0x26')]);if(_0x41f74c[_0x8630('0x27')]){delete _0x41f74c[_0x8630('0x27')];}_0x357c15[_0x8630('0x19')](_0x221841)['send'](_0x41f74c);};}exports[_0x8630('0x28')]=function(_0x4545c2,_0x24d85d){var _0xe3ed67={},_0x55653d={},_0x43e470={'count':0x0,'rows':[]};var _0x1eb036=_[_0x8630('0x29')](db[_0x8630('0x2a')][_0x8630('0x2b')],function(_0x32f4fd){return{'name':_0x32f4fd['fieldName'],'type':_0x32f4fd[_0x8630('0x2c')][_0x8630('0x2d')]};});_0x55653d[_0x8630('0x2e')]=_['map'](_0x1eb036,_0x8630('0x27'));_0x55653d[_0x8630('0x2f')]=_[_0x8630('0x30')](_0x4545c2[_0x8630('0x2f')]);_0x55653d[_0x8630('0x31')]=_[_0x8630('0x32')](_0x55653d['model'],_0x55653d[_0x8630('0x2f')]);_0xe3ed67[_0x8630('0x33')]=_[_0x8630('0x32')](_0x55653d[_0x8630('0x2e')],qs[_0x8630('0x34')](_0x4545c2[_0x8630('0x2f')][_0x8630('0x34')]));_0xe3ed67[_0x8630('0x33')]=_0xe3ed67[_0x8630('0x33')][_0x8630('0x35')]?_0xe3ed67[_0x8630('0x33')]:_0x55653d[_0x8630('0x2e')];if(!_0x4545c2[_0x8630('0x2f')][_0x8630('0x36')](_0x8630('0x37'))){_0xe3ed67[_0x8630('0x1d')]=qs[_0x8630('0x1d')](_0x4545c2['query'][_0x8630('0x1d')]);_0xe3ed67[_0x8630('0x1c')]=qs['offset'](_0x4545c2['query'][_0x8630('0x1c')]);}_0xe3ed67[_0x8630('0x38')]=qs[_0x8630('0x39')](_0x4545c2[_0x8630('0x2f')][_0x8630('0x39')]);_0xe3ed67['where']=qs[_0x8630('0x31')](_[_0x8630('0x3a')](_0x4545c2[_0x8630('0x2f')],_0x55653d[_0x8630('0x31')]),_0x1eb036);if(_0x4545c2['query'][_0x8630('0x3b')]){_0xe3ed67[_0x8630('0x3c')]=_[_0x8630('0x3d')](_0xe3ed67[_0x8630('0x3c')],{'$or':_[_0x8630('0x29')](_0x1eb036,function(_0x16c041){if(_0x16c041[_0x8630('0x2c')]!=='VIRTUAL'){var _0x1076f4={};_0x1076f4[_0x16c041[_0x8630('0x27')]]={'$like':'%'+_0x4545c2[_0x8630('0x2f')][_0x8630('0x3b')]+'%'};return _0x1076f4;}})});}_0xe3ed67=_[_0x8630('0x3d')]({},_0xe3ed67,_0x4545c2[_0x8630('0x3e')]);var _0x25cb36={'where':_0xe3ed67[_0x8630('0x3c')]};return db[_0x8630('0x2a')][_0x8630('0x1b')](_0x25cb36)['then'](function(_0x358431){_0x43e470['count']=_0x358431;if(_0x4545c2[_0x8630('0x2f')][_0x8630('0x3f')]){_0xe3ed67[_0x8630('0x40')]=[{'all':!![]}];}return db[_0x8630('0x2a')][_0x8630('0x41')](_0xe3ed67);})[_0x8630('0x22')](function(_0x5bcf39){_0x43e470[_0x8630('0x42')]=_0x5bcf39;return _0x43e470;})[_0x8630('0x22')](respondWithFilteredResult(_0x24d85d,_0xe3ed67))[_0x8630('0x43')](handleError(_0x24d85d,null));};exports['show']=function(_0x79385,_0x1ea295){var _0x40914f={'raw':!![],'where':{'id':_0x79385[_0x8630('0x44')]['id']}},_0x327466={};_0x327466[_0x8630('0x2e')]=_['keys'](db[_0x8630('0x2a')][_0x8630('0x2b')]);_0x327466[_0x8630('0x2f')]=_['keys'](_0x79385[_0x8630('0x2f')]);_0x327466[_0x8630('0x31')]=_['intersection'](_0x327466[_0x8630('0x2e')],_0x327466[_0x8630('0x2f')]);_0x40914f[_0x8630('0x33')]=_['intersection'](_0x327466['model'],qs[_0x8630('0x34')](_0x79385['query']['fields']));_0x40914f[_0x8630('0x33')]=_0x40914f['attributes'][_0x8630('0x35')]?_0x40914f[_0x8630('0x33')]:_0x327466['model'];if(_0x79385[_0x8630('0x2f')][_0x8630('0x3f')]){_0x40914f[_0x8630('0x40')]=[{'all':!![]}];}_0x40914f=_[_0x8630('0x3d')]({},_0x40914f,_0x79385[_0x8630('0x3e')]);return db['Tag'][_0x8630('0x45')](_0x40914f)[_0x8630('0x22')](handleEntityNotFound(_0x1ea295,null))['then'](respondWithResult(_0x1ea295,null))[_0x8630('0x43')](handleError(_0x1ea295,null));};exports[_0x8630('0x46')]=function(_0x3ff20b,_0x47aa03){return db[_0x8630('0x2a')][_0x8630('0x46')](_0x3ff20b[_0x8630('0x47')],{})[_0x8630('0x22')](function(_0x8b467a){var _0xefe57b=_0x3ff20b[_0x8630('0x48')][_0x8630('0x24')]({'plain':!![]});if(!_0xefe57b)throw new Error(_0x8630('0x49'));if(_0xefe57b['role']==='user'){var _0x1b8328=_0x8b467a[_0x8630('0x24')]({'plain':!![]});var _0x34619c=_0x8630('0x4a');return db[_0x8630('0x4b')][_0x8630('0x45')]({'where':{'name':_0x34619c,'userProfileId':_0xefe57b[_0x8630('0x4c')]},'raw':!![]})['then'](function(_0x2af827){if(_0x2af827&&_0x2af827[_0x8630('0x4d')]===0x0){return db[_0x8630('0x4e')][_0x8630('0x46')]({'name':_0x1b8328[_0x8630('0x27')],'resourceId':_0x1b8328['id'],'type':_0x2af827['name'],'sectionId':_0x2af827['id']},{})[_0x8630('0x22')](function(){return _0x8b467a;});}else{return _0x8b467a;}})[_0x8630('0x43')](function(_0xeacec4){logger[_0x8630('0x25')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xeacec4);throw _0xeacec4;});}return _0x8b467a;})[_0x8630('0x22')](respondWithResult(_0x47aa03,0xc9))[_0x8630('0x43')](handleError(_0x47aa03,null));};exports['update']=function(_0x2edc3d,_0x1ecb2a){if(_0x2edc3d[_0x8630('0x47')]['id']){delete _0x2edc3d[_0x8630('0x47')]['id'];}return db['Tag'][_0x8630('0x45')]({'where':{'id':_0x2edc3d[_0x8630('0x44')]['id']}})['then'](handleEntityNotFound(_0x1ecb2a,null))['then'](saveUpdates(_0x2edc3d[_0x8630('0x47')],null))[_0x8630('0x22')](respondWithResult(_0x1ecb2a,null))['catch'](handleError(_0x1ecb2a,null));};exports[_0x8630('0x23')]=function(_0x510113,_0x2e49c8){return db[_0x8630('0x2a')][_0x8630('0x45')]({'where':{'id':_0x510113['params']['id']}})[_0x8630('0x22')](handleEntityNotFound(_0x2e49c8,null))[_0x8630('0x22')](removeEntity(_0x2e49c8,null))[_0x8630('0x43')](handleError(_0x2e49c8,null));};
\ No newline at end of file
index bfc99b1..b189060 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd51=['define','Tag','lodash','util','bluebird','request-promise','path','../../config/environment','./tag.attributes','exports'];(function(_0x2b0981,_0x14da19){var _0x7f997f=function(_0x45cd83){while(--_0x45cd83){_0x2b0981['push'](_0x2b0981['shift']());}};_0x7f997f(++_0x14da19);}(_0xdd51,0xca));var _0x1dd5=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0xdd51[_0xae7c2f];return _0x5d7001;};'use strict';var _=require(_0x1dd5('0x0'));var util=require(_0x1dd5('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x1dd5('0x2'));var rp=require(_0x1dd5('0x3'));var fs=require('fs');var path=require(_0x1dd5('0x4'));var rimraf=require('rimraf');var config=require(_0x1dd5('0x5'));var attributes=require(_0x1dd5('0x6'));module[_0x1dd5('0x7')]=function(_0x4aa37d,_0x35ecd9){return _0x4aa37d[_0x1dd5('0x8')](_0x1dd5('0x9'),attributes,{'tableName':'tools_tags','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7b72=['../../config/logger','moment','bluebird','request-promise','rimraf','./tag.attributes','exports','define','tools_tags','lodash','util'];(function(_0x167914,_0x87b5a){var _0x5e5d79=function(_0x221d4e){while(--_0x221d4e){_0x167914['push'](_0x167914['shift']());}};_0x5e5d79(++_0x87b5a);}(_0x7b72,0xb9));var _0x27b7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7b72[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x27b7('0x0'));var util=require(_0x27b7('0x1'));var logger=require(_0x27b7('0x2'))('api');var moment=require(_0x27b7('0x3'));var BPromise=require(_0x27b7('0x4'));var rp=require(_0x27b7('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x27b7('0x6'));var config=require('../../config/environment');var attributes=require(_0x27b7('0x7'));module[_0x27b7('0x8')]=function(_0x45b85f,_0x423b22){return _0x45b85f[_0x27b7('0x9')]('Tag',attributes,{'tableName':_0x27b7('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1c14a44..30bdcbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0ba=['rpc','jayson/promise','then','info','request\x20sent','Tag,\x20%s,\x20%s,\x20%s','stringify','error','code','Tag,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xf0ba,0x1ed));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 moment=require(_0xaf0b('0x2'));var BPromise=require(_0xaf0b('0x3'));var rs=require(_0xaf0b('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xaf0b('0x5'))['db'];var utils=require(_0xaf0b('0x6'));var logger=require('../../config/logger')(_0xaf0b('0x7'));var config=require('../../config/environment');var jayson=require(_0xaf0b('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x53b32d,_0x1d260e,_0x17b6d5){return new BPromise(function(_0x3439d5,_0xd67a9){return client['request'](_0x53b32d,_0x17b6d5)[_0xaf0b('0x9')](function(_0x4242b1){logger[_0xaf0b('0xa')]('Tag,\x20%s,\x20%s',_0x1d260e,_0xaf0b('0xb'));logger['debug'](_0xaf0b('0xc'),_0x1d260e,_0xaf0b('0xb'),JSON[_0xaf0b('0xd')](_0x4242b1));if(_0x4242b1['error']){if(_0x4242b1[_0xaf0b('0xe')][_0xaf0b('0xf')]===0x1f4){logger[_0xaf0b('0xe')](_0xaf0b('0x10'),_0x1d260e,_0x4242b1[_0xaf0b('0xe')][_0xaf0b('0x11')]);return _0xd67a9(_0x4242b1['error'][_0xaf0b('0x11')]);}logger[_0xaf0b('0xe')](_0xaf0b('0x10'),_0x1d260e,_0x4242b1[_0xaf0b('0xe')]['message']);return _0x3439d5(_0x4242b1[_0xaf0b('0xe')][_0xaf0b('0x11')]);}else{logger[_0xaf0b('0xa')](_0xaf0b('0x10'),_0x1d260e,_0xaf0b('0xb'));_0x3439d5(_0x4242b1[_0xaf0b('0x12')][_0xaf0b('0x11')]);}})[_0xaf0b('0x13')](function(_0x4885da){logger[_0xaf0b('0xe')]('Tag,\x20%s,\x20%s',_0x1d260e,_0x4885da);_0xd67a9(_0x4885da);});});}
\ No newline at end of file
+var _0x0faf=['../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','Tag,\x20%s,\x20%s','request\x20sent','debug','Tag,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x48a925,_0x23b174){var _0x35fa00=function(_0xb2a29){while(--_0xb2a29){_0x48a925['push'](_0x48a925['shift']());}};_0x35fa00(++_0x23b174);}(_0x0faf,0x132));var _0xf0fa=function(_0x4976eb,_0x4b09d1){_0x4976eb=_0x4976eb-0x0;var _0x5dd7b2=_0x0faf[_0x4976eb];return _0x5dd7b2;};'use strict';var _=require(_0xf0fa('0x0'));var util=require('util');var moment=require(_0xf0fa('0x1'));var BPromise=require(_0xf0fa('0x2'));var rs=require(_0xf0fa('0x3'));var fs=require('fs');var Redis=require(_0xf0fa('0x4'));var db=require(_0xf0fa('0x5'))['db'];var utils=require(_0xf0fa('0x6'));var logger=require(_0xf0fa('0x7'))(_0xf0fa('0x8'));var config=require(_0xf0fa('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xf0fa('0xa')][_0xf0fa('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x25b5c4,_0x3a703b,_0x2db1d9){return new BPromise(function(_0x587865,_0x42f7fd){return client[_0xf0fa('0xc')](_0x25b5c4,_0x2db1d9)['then'](function(_0x4df4d1){logger[_0xf0fa('0xd')](_0xf0fa('0xe'),_0x3a703b,_0xf0fa('0xf'));logger[_0xf0fa('0x10')](_0xf0fa('0x11'),_0x3a703b,_0xf0fa('0xf'),JSON[_0xf0fa('0x12')](_0x4df4d1));if(_0x4df4d1[_0xf0fa('0x13')]){if(_0x4df4d1['error'][_0xf0fa('0x14')]===0x1f4){logger['error'](_0xf0fa('0xe'),_0x3a703b,_0x4df4d1['error'][_0xf0fa('0x15')]);return _0x42f7fd(_0x4df4d1[_0xf0fa('0x13')][_0xf0fa('0x15')]);}logger['error']('Tag,\x20%s,\x20%s',_0x3a703b,_0x4df4d1[_0xf0fa('0x13')]['message']);return _0x587865(_0x4df4d1[_0xf0fa('0x13')][_0xf0fa('0x15')]);}else{logger[_0xf0fa('0xd')](_0xf0fa('0xe'),_0x3a703b,_0xf0fa('0xf'));_0x587865(_0x4df4d1[_0xf0fa('0x16')][_0xf0fa('0x15')]);}})[_0xf0fa('0x17')](function(_0x497542){logger[_0xf0fa('0x13')](_0xf0fa('0xe'),_0x3a703b,_0x497542);_0x42f7fd(_0x497542);});});}
\ No newline at end of file
index 3e0e95f..ab00f4b 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(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_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
+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(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0xa9e0[_0x9df060];return _0x338dfe;};'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 e7baae8..450f127 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['STRING','sequelize','exports'];(function(_0x50a0c2,_0x4befab){var _0x5ebadd=function(_0x3a3342){while(--_0x3a3342){_0x50a0c2['push'](_0x50a0c2['shift']());}};_0x5ebadd(++_0x4befab);}(_0xe706,0xa3));var _0x6e70=function(_0x1843b3,_0x10995a){_0x1843b3=_0x1843b3-0x0;var _0x3c7de0=_0xe706[_0x1843b3];return _0x3c7de0;};'use strict';var Sequelize=require(_0x6e70('0x0'));module[_0x6e70('0x1')]={'name':{'type':Sequelize[_0x6e70('0x2')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize[_0x6e70('0x2')]}};
\ No newline at end of file
+var _0xb10b=['name','sequelize','STRING'];(function(_0x4944ab,_0x52cd51){var _0x4b4a0c=function(_0x575c08){while(--_0x575c08){_0x4944ab['push'](_0x4944ab['shift']());}};_0x4b4a0c(++_0x52cd51);}(_0xb10b,0x12a));var _0xbb10=function(_0x277c19,_0x22f714){_0x277c19=_0x277c19-0x0;var _0x3281e5=_0xb10b[_0x277c19];return _0x3281e5;};'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 99fae79..eeed583 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3606=['Sms','sequelize','transaction','penalty','TeamVoiceQueue','User','findOrCreate','emit','online','voicePause','UserVoiceQueueRt','upsert','isNil','interface','SIP/%s','all','parse','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','removeAgents','Chat','Fax','Whatsapp','Queue:remove','QueueId','getAgents','eml-format','rimraf','moment','mustache','util','sox','ejs','fs-extra','lodash','crypto','jsforce','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','defaults','redis','socket.io-emitter','./team.socket','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','Teams','UserProfileResource','stack','name','send','map','Team','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','catch','show','params','length','includeAll','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getQueues','channel','isValidChannel','ValidationError','capitalize','Queue','toLowerCase','findOne','Unknown\x20channel','add','Queues','removeQueues','Sequelize','remove','ids','addAgents','Voice','Mail'];(function(_0x3b6708,_0x5c398b){var _0x2fb1bf=function(_0x28d737){while(--_0x28d737){_0x3b6708['push'](_0x3b6708['shift']());}};_0x2fb1bf(++_0x5c398b);}(_0x3606,0x127));var _0x6360=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3606[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x6360('0x0'));var rimraf=require(_0x6360('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x6360('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x6360('0x3'));var util=require(_0x6360('0x4'));var path=require('path');var sox=require(_0x6360('0x5'));var csv=require('to-csv');var ejs=require(_0x6360('0x6'));var fs=require('fs');var fs_extra=require(_0x6360('0x7'));var _=require(_0x6360('0x8'));var squel=require('squel');var crypto=require(_0x6360('0x9'));var jsforce=require(_0x6360('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x6360('0xb'));var querystring=require(_0x6360('0xc'));var Papa=require(_0x6360('0xd'));var Redis=require(_0x6360('0xe'));var authService=require(_0x6360('0xf'));var qs=require(_0x6360('0x10'));var as=require(_0x6360('0x11'));var hardwareService=require(_0x6360('0x12'));var logger=require(_0x6360('0x13'))(_0x6360('0x14'));var utils=require('../../config/utils');var config=require(_0x6360('0x15'));var licenseUtil=require(_0x6360('0x16'));var db=require(_0x6360('0x17'))['db'];config['redis']=_[_0x6360('0x18')](config[_0x6360('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0x6360('0x1a'))(new Redis(config[_0x6360('0x19')]));require(_0x6360('0x1b'))['register'](socket);function respondWithStatusCode(_0x2d960b,_0x3fed33){_0x3fed33=_0x3fed33||0xcc;return function(_0x154378){if(_0x154378){return _0x2d960b[_0x6360('0x1c')](_0x3fed33);}return _0x2d960b['status'](_0x3fed33)[_0x6360('0x1d')]();};}function respondWithResult(_0xcd7f91,_0x9a774e){_0x9a774e=_0x9a774e||0xc8;return function(_0x57b795){if(_0x57b795){return _0xcd7f91[_0x6360('0x1e')](_0x9a774e)[_0x6360('0x1f')](_0x57b795);}};}function respondWithFilteredResult(_0x337c72,_0x567d57){return function(_0x261f47){if(_0x261f47){var _0x4700c4=typeof _0x567d57[_0x6360('0x20')]===_0x6360('0x21')&&typeof _0x567d57[_0x6360('0x22')]===_0x6360('0x21');var _0x219f7e=_0x261f47[_0x6360('0x23')];var _0x238f71=_0x4700c4?0x0:_0x567d57[_0x6360('0x20')];var _0x11efd2=_0x4700c4?_0x261f47['count']:_0x567d57[_0x6360('0x20')]+_0x567d57[_0x6360('0x22')];var _0x445637;if(_0x11efd2>=_0x219f7e){_0x11efd2=_0x219f7e;_0x445637=0xc8;}else{_0x445637=0xce;}_0x337c72[_0x6360('0x1e')](_0x445637);return _0x337c72[_0x6360('0x24')](_0x6360('0x25'),_0x238f71+'-'+_0x11efd2+'/'+_0x219f7e)[_0x6360('0x1f')](_0x261f47);}return null;};}function patchUpdates(_0x394b06){return function(_0x5d2b02){try{jsonpatch[_0x6360('0x26')](_0x5d2b02,_0x394b06,!![]);}catch(_0x1af4cc){return BPromise[_0x6360('0x27')](_0x1af4cc);}return _0x5d2b02['save']();};}function saveUpdates(_0x23debe,_0x1c6248){return function(_0x576a6c){if(_0x576a6c){return _0x576a6c[_0x6360('0x28')](_0x23debe)[_0x6360('0x29')](function(_0x3365ff){return _0x3365ff;});}return null;};}function removeEntity(_0x43bccb,_0xe3dae6){return function(_0x42042c){if(_0x42042c){return _0x42042c[_0x6360('0x2a')]()[_0x6360('0x29')](function(){var _0x141df9=_0x42042c['get']({'plain':!![]});var _0x16f9b1=_0x6360('0x2b');return db[_0x6360('0x2c')]['destroy']({'where':{'type':_0x16f9b1,'resourceId':_0x141df9['id']}})[_0x6360('0x29')](function(){return _0x42042c;});})[_0x6360('0x29')](function(){_0x43bccb['status'](0xcc)[_0x6360('0x1d')]();});}};}function handleEntityNotFound(_0x4317be,_0x10fed9){return function(_0x5f30f3){if(!_0x5f30f3){_0x4317be[_0x6360('0x1c')](0x194);}return _0x5f30f3;};}function handleError(_0x238f5c,_0x44ad9d){_0x44ad9d=_0x44ad9d||0x1f4;return function(_0x2cbc27){logger['error'](_0x2cbc27[_0x6360('0x2d')]);if(_0x2cbc27[_0x6360('0x2e')]){delete _0x2cbc27[_0x6360('0x2e')];}_0x238f5c[_0x6360('0x1e')](_0x44ad9d)[_0x6360('0x2f')](_0x2cbc27);};}exports['index']=function(_0x54ea10,_0x38252d){var _0x5efc43={},_0x135f64={},_0x20095c={'count':0x0,'rows':[]};var _0x2218dc=_[_0x6360('0x30')](db[_0x6360('0x31')][_0x6360('0x32')],function(_0x5b2d7e){return{'name':_0x5b2d7e[_0x6360('0x33')],'type':_0x5b2d7e[_0x6360('0x34')]['key']};});_0x135f64[_0x6360('0x35')]=_['map'](_0x2218dc,_0x6360('0x2e'));_0x135f64[_0x6360('0x36')]=_[_0x6360('0x37')](_0x54ea10[_0x6360('0x36')]);_0x135f64[_0x6360('0x38')]=_[_0x6360('0x39')](_0x135f64[_0x6360('0x35')],_0x135f64[_0x6360('0x36')]);_0x5efc43[_0x6360('0x3a')]=_[_0x6360('0x39')](_0x135f64[_0x6360('0x35')],qs['fields'](_0x54ea10[_0x6360('0x36')][_0x6360('0x3b')]));_0x5efc43['attributes']=_0x5efc43[_0x6360('0x3a')]['length']?_0x5efc43[_0x6360('0x3a')]:_0x135f64[_0x6360('0x35')];if(!_0x54ea10['query'][_0x6360('0x3c')](_0x6360('0x3d'))){_0x5efc43[_0x6360('0x22')]=qs[_0x6360('0x22')](_0x54ea10[_0x6360('0x36')][_0x6360('0x22')]);_0x5efc43['offset']=qs[_0x6360('0x20')](_0x54ea10['query'][_0x6360('0x20')]);}_0x5efc43[_0x6360('0x3e')]=qs[_0x6360('0x3f')](_0x54ea10['query'][_0x6360('0x3f')]);_0x5efc43[_0x6360('0x40')]=qs[_0x6360('0x38')](_[_0x6360('0x41')](_0x54ea10[_0x6360('0x36')],_0x135f64[_0x6360('0x38')]),_0x2218dc);if(_0x54ea10[_0x6360('0x36')][_0x6360('0x42')]){_0x5efc43['where']=_[_0x6360('0x43')](_0x5efc43[_0x6360('0x40')],{'$or':_[_0x6360('0x30')](_0x2218dc,function(_0x1916a1){if(_0x1916a1[_0x6360('0x34')]!==_0x6360('0x44')){var _0x23ff9b={};_0x23ff9b[_0x1916a1['name']]={'$like':'%'+_0x54ea10[_0x6360('0x36')][_0x6360('0x42')]+'%'};return _0x23ff9b;}})});}_0x5efc43=_[_0x6360('0x43')]({},_0x5efc43,_0x54ea10[_0x6360('0x45')]);var _0x2f61eb={'where':_0x5efc43[_0x6360('0x40')]};return db[_0x6360('0x31')][_0x6360('0x23')](_0x2f61eb)[_0x6360('0x29')](function(_0x3649c5){_0x20095c[_0x6360('0x23')]=_0x3649c5;if(_0x54ea10[_0x6360('0x36')]['includeAll']){_0x5efc43[_0x6360('0x46')]=[{'all':!![]}];}return db[_0x6360('0x31')][_0x6360('0x47')](_0x5efc43);})['then'](function(_0x5d04db){_0x20095c['rows']=_0x5d04db;return _0x20095c;})[_0x6360('0x29')](respondWithFilteredResult(_0x38252d,_0x5efc43))[_0x6360('0x48')](handleError(_0x38252d,null));};exports[_0x6360('0x49')]=function(_0x5a667e,_0x12a271){var _0x2d32eb={'raw':![],'where':{'id':_0x5a667e[_0x6360('0x4a')]['id']}},_0x1dbf2c={};_0x1dbf2c['model']=_[_0x6360('0x37')](db['Team'][_0x6360('0x32')]);_0x1dbf2c[_0x6360('0x36')]=_[_0x6360('0x37')](_0x5a667e['query']);_0x1dbf2c[_0x6360('0x38')]=_[_0x6360('0x39')](_0x1dbf2c[_0x6360('0x35')],_0x1dbf2c['query']);_0x2d32eb[_0x6360('0x3a')]=_['intersection'](_0x1dbf2c[_0x6360('0x35')],qs['fields'](_0x5a667e[_0x6360('0x36')][_0x6360('0x3b')]));_0x2d32eb[_0x6360('0x3a')]=_0x2d32eb[_0x6360('0x3a')][_0x6360('0x4b')]?_0x2d32eb['attributes']:_0x1dbf2c[_0x6360('0x35')];if(_0x5a667e['query'][_0x6360('0x4c')]){_0x2d32eb[_0x6360('0x46')]=[{'all':!![]}];}_0x2d32eb=_['merge']({},_0x2d32eb,_0x5a667e[_0x6360('0x45')]);return db[_0x6360('0x31')][_0x6360('0x4d')](_0x2d32eb)[_0x6360('0x29')](handleEntityNotFound(_0x12a271,null))[_0x6360('0x29')](respondWithResult(_0x12a271,null))['catch'](handleError(_0x12a271,null));};exports['create']=function(_0x562b02,_0x5a58d8){return db[_0x6360('0x31')][_0x6360('0x4e')](_0x562b02[_0x6360('0x4f')],{})[_0x6360('0x29')](function(_0x36ce1e){var _0x51845e=_0x562b02[_0x6360('0x50')][_0x6360('0x51')]({'plain':!![]});if(!_0x51845e)throw new Error(_0x6360('0x52'));if(_0x51845e[_0x6360('0x53')]===_0x6360('0x50')){var _0x356ac9=_0x36ce1e[_0x6360('0x51')]({'plain':!![]});var _0x325271=_0x6360('0x2b');return db[_0x6360('0x54')][_0x6360('0x4d')]({'where':{'name':_0x325271,'userProfileId':_0x51845e[_0x6360('0x55')]},'raw':!![]})[_0x6360('0x29')](function(_0x104ca3){if(_0x104ca3&&_0x104ca3[_0x6360('0x56')]===0x0){return db[_0x6360('0x2c')][_0x6360('0x4e')]({'name':_0x356ac9['name'],'resourceId':_0x356ac9['id'],'type':_0x104ca3[_0x6360('0x2e')],'sectionId':_0x104ca3['id']},{})['then'](function(){return _0x36ce1e;});}else{return _0x36ce1e;}})[_0x6360('0x48')](function(_0x2bd2a4){logger[_0x6360('0x57')](_0x6360('0x58'),_0x2bd2a4);throw _0x2bd2a4;});}return _0x36ce1e;})['then'](respondWithResult(_0x5a58d8,0xc9))[_0x6360('0x48')](handleError(_0x5a58d8,null));};exports['update']=function(_0x501d8c,_0x137c98){if(_0x501d8c['body']['id']){delete _0x501d8c['body']['id'];}return db['Team']['find']({'where':{'id':_0x501d8c[_0x6360('0x4a')]['id']}})[_0x6360('0x29')](handleEntityNotFound(_0x137c98,null))[_0x6360('0x29')](saveUpdates(_0x501d8c[_0x6360('0x4f')],null))[_0x6360('0x29')](respondWithResult(_0x137c98,null))[_0x6360('0x48')](handleError(_0x137c98,null));};exports['destroy']=function(_0x56cf1d,_0x1799f7){return db[_0x6360('0x31')][_0x6360('0x4d')]({'where':{'id':_0x56cf1d[_0x6360('0x4a')]['id']}})['then'](handleEntityNotFound(_0x1799f7,null))['then'](removeEntity(_0x1799f7,null))[_0x6360('0x48')](handleError(_0x1799f7,null));};exports[_0x6360('0x59')]=function(_0x3132c0,_0x422b0e,_0x131140){return db[_0x6360('0x31')]['findOne']({'where':{'id':_0x3132c0[_0x6360('0x4a')]['id']}})[_0x6360('0x29')](handleEntityNotFound(_0x422b0e,null))[_0x6360('0x29')](function(_0x4bfaa4){if(!_0x3132c0[_0x6360('0x36')][_0x6360('0x5a')]||!utils[_0x6360('0x5b')](_0x3132c0['query']['channel'])){throw new db['Sequelize'][(_0x6360('0x5c'))]('Unknown\x20channel');}var _0x5120fa={};var _0x5b623c={};_0x5b623c[_0x6360('0x35')]=_[_0x6360('0x37')](db[_[_0x6360('0x5d')](_0x3132c0[_0x6360('0x36')][_0x6360('0x5a')]['toLowerCase']())+_0x6360('0x5e')]['rawAttributes']);_0x5b623c['query']=_[_0x6360('0x37')](_0x3132c0['query']);_0x5b623c['filters']=_[_0x6360('0x39')](_0x5b623c[_0x6360('0x35')],_0x5b623c[_0x6360('0x36')]);_0x5120fa[_0x6360('0x3a')]=_[_0x6360('0x39')](_0x5b623c[_0x6360('0x35')],qs[_0x6360('0x3b')](_0x3132c0[_0x6360('0x36')]['fields']));_0x5120fa[_0x6360('0x3a')]=_0x5120fa[_0x6360('0x3a')][_0x6360('0x4b')]?_0x5120fa['attributes']:_0x5b623c[_0x6360('0x35')];_0x5120fa[_0x6360('0x22')]=qs['limit'](_0x3132c0[_0x6360('0x36')][_0x6360('0x22')]);_0x5120fa[_0x6360('0x20')]=qs[_0x6360('0x20')](_0x3132c0[_0x6360('0x36')]['offset']);_0x5120fa['order']=qs[_0x6360('0x3f')](_0x3132c0[_0x6360('0x36')][_0x6360('0x3f')]);_0x5120fa[_0x6360('0x40')]=qs['filters'](_[_0x6360('0x41')](_0x3132c0[_0x6360('0x36')],_0x5b623c['filters']));_0x5120fa=_[_0x6360('0x43')]({},_0x5120fa,_0x3132c0[_0x6360('0x45')]);return _0x4bfaa4['get'+_[_0x6360('0x5d')](_0x3132c0['query'][_0x6360('0x5a')][_0x6360('0x5f')]())+'Queues'](_0x5120fa);})[_0x6360('0x29')](respondWithResult(_0x422b0e,null))[_0x6360('0x48')](handleError(_0x422b0e,null));};exports['addQueues']=function(_0xac39b,_0x1ed0bf,_0x574fd0){return db[_0x6360('0x31')][_0x6360('0x60')]({'where':{'id':_0xac39b[_0x6360('0x4a')]['id']}})['then'](function(_0x4302e8){if(_0x4302e8){if(!_0xac39b[_0x6360('0x4f')]['channel']||!utils[_0x6360('0x5b')](_0xac39b[_0x6360('0x4f')][_0x6360('0x5a')])){throw new db['Sequelize'][(_0x6360('0x5c'))](_0x6360('0x61'));}return _0x4302e8[_0x6360('0x62')+_[_0x6360('0x5d')](_0xac39b[_0x6360('0x4f')][_0x6360('0x5a')]['toLowerCase']())+_0x6360('0x63')](_0xac39b[_0x6360('0x4f')]['ids']);}return null;})[_0x6360('0x29')](handleEntityNotFound(_0x1ed0bf,null))[_0x6360('0x29')](respondWithStatusCode(_0x1ed0bf,null))['catch'](handleError(_0x1ed0bf,null));};exports[_0x6360('0x64')]=function(_0x2a9af5,_0x292242,_0x429496){return db[_0x6360('0x31')][_0x6360('0x60')]({'where':{'id':_0x2a9af5[_0x6360('0x4a')]['id']}})[_0x6360('0x29')](function(_0x2b8155){if(_0x2b8155){if(!_0x2a9af5[_0x6360('0x36')]['channel']||!utils[_0x6360('0x5b')](_0x2a9af5[_0x6360('0x36')]['channel'])){throw new db[(_0x6360('0x65'))][(_0x6360('0x5c'))](_0x6360('0x61'));}return _0x2b8155[_0x6360('0x66')+_[_0x6360('0x5d')](_0x2a9af5[_0x6360('0x36')][_0x6360('0x5a')][_0x6360('0x5f')]())+_0x6360('0x63')](_0x2a9af5[_0x6360('0x36')][_0x6360('0x67')]);}return null;})[_0x6360('0x29')](handleEntityNotFound(_0x292242,null))[_0x6360('0x29')](respondWithStatusCode(_0x292242,null))[_0x6360('0x48')](handleError(_0x292242,null));};exports[_0x6360('0x68')]=function(_0x214b91,_0x5cd8d6){return db[_0x6360('0x31')][_0x6360('0x4d')]({'where':{'id':_0x214b91[_0x6360('0x4a')]['id']}})[_0x6360('0x29')](handleEntityNotFound(_0x5cd8d6,null))['then'](function(_0x344c8e){if(_0x344c8e){var _0x4e8b8e=[_0x6360('0x69'),'Chat',_0x6360('0x6a'),_0x6360('0x6b'),'Fax','Openchannel','Whatsapp'];return db[_0x6360('0x6c')][_0x6360('0x6d')](function(_0x2d96f7){var _0x3e3182=_[_0x6360('0x30')](_0x4e8b8e,function(_0xa41cb){var _0x2d4c78={'attributes':['id',_0x6360('0x2e')]};if(_0xa41cb===_0x6360('0x69')){_0x2d4c78['through']={'attributes':[_0x6360('0x6e')]};}return _0x344c8e[_0x6360('0x51')+_0xa41cb+_0x6360('0x63')](_0x2d4c78)['then'](function(_0x39e588){var _0x540354=_[_0x6360('0x30')](_0x39e588,function(_0x3ff342){var _0x315560=_[_0x6360('0x30')](_0x214b91[_0x6360('0x4f')][_0x6360('0x67')],function(_0x3325ca){var _0x3912f7={'where':{'UserId':_0x3325ca,[_0xa41cb+'QueueId']:_0x3ff342['id']},'transaction':_0x2d96f7};if(_0xa41cb===_0x6360('0x69')){_0x3912f7[_0x6360('0x18')]={'penalty':_0x3ff342[_0x6360('0x6f')][_0x6360('0x6e')]};}return db[_0x6360('0x70')+_0xa41cb+_0x6360('0x5e')][_0x6360('0x71')](_0x3912f7)[_0x6360('0x29')](function(){socket[_0x6360('0x72')](_0x6360('0x50')+_0xa41cb+'Queue:save',{'UserId':_0x3325ca,[_0xa41cb+'QueueId']:_0x3ff342['id']});if(_0xa41cb!==_0x6360('0x69'))return;return db[_0x6360('0x70')][_0x6360('0x47')]({'where':{'id':_0x214b91[_0x6360('0x4f')][_0x6360('0x67')],'online':0x1},'attributes':['id',_0x6360('0x2e'),_0x6360('0x73'),_0x6360('0x74'),'interface'],'raw':!![]})['then'](function(_0xf6a98b){var _0x2238b6=_[_0x6360('0x30')](_0xf6a98b,function(_0x5cbedd){return db[_0x6360('0x75')][_0x6360('0x76')]({'membername':_0x5cbedd[_0x6360('0x2e')],'UserId':_0x5cbedd['id'],'queue_name':_0x3ff342[_0x6360('0x2e')],'VoiceQueueId':_0x3ff342['id'],'interface':_[_0x6360('0x77')](_0x5cbedd[_0x6360('0x78')])?util['format'](_0x6360('0x79'),_0x5cbedd[_0x6360('0x2e')]):_0x5cbedd[_0x6360('0x78')],'paused':_0x5cbedd['voicePause']||![],'penalty':_0x3ff342[_0x6360('0x6f')][_0x6360('0x6e')]},{'transaction':_0x2d96f7});});return Promise['all'](_0x2238b6);});});});return Promise[_0x6360('0x7a')](_0x315560);});return Promise[_0x6360('0x7a')](_0x540354);})['then'](function(){var _0x3610f7=JSON[_0x6360('0x7b')]('['+_0x214b91[_0x6360('0x4f')][_0x6360('0x67')]+']');db[_0x6360('0x7c')][_0x6360('0x60')]({'where':{'teamId':_0x214b91['params']['id']}})[_0x6360('0x29')](function(_0x1e066c){if(_0x1e066c){for(var _0x528a96=0x0;_0x528a96<_0x3610f7[_0x6360('0x4b')];_0x528a96++){var _0x2c2665=_0x3610f7[_0x528a96];db[_0x6360('0x7d')][_0x6360('0x76')]({'UserId':_0x2c2665,'VoicePrefixId':_0x1e066c[_0x6360('0x7e')]});}}});});});return Promise[_0x6360('0x7a')](_0x3e3182)[_0x6360('0x29')](function(){return _0x344c8e[_0x6360('0x68')](_0x214b91[_0x6360('0x4f')][_0x6360('0x67')],{'transaction':_0x2d96f7})['spread'](function(_0x39c88a){return _0x39c88a;});});});}})[_0x6360('0x29')](respondWithResult(_0x5cd8d6,null))[_0x6360('0x48')](handleError(_0x5cd8d6,null));};exports[_0x6360('0x7f')]=function(_0x4fbcc4,_0x3f61f0){return db[_0x6360('0x31')][_0x6360('0x4d')]({'where':{'id':_0x4fbcc4['params']['id']}})[_0x6360('0x29')](handleEntityNotFound(_0x3f61f0,null))[_0x6360('0x29')](function(_0x5449f8){if(_0x5449f8){var _0x20f05c=[_0x6360('0x69'),_0x6360('0x80'),_0x6360('0x6a'),_0x6360('0x6b'),_0x6360('0x81'),'Openchannel',_0x6360('0x82')];return db[_0x6360('0x6c')][_0x6360('0x6d')](function(_0x125be9){var _0x5b969e=_['map'](_0x20f05c,function(_0x78f490){var _0x4ecd39={'attributes':['id',_0x6360('0x2e')]};return _0x5449f8[_0x6360('0x51')+_0x78f490+'Queues'](_0x4ecd39)[_0x6360('0x29')](function(_0x1d19fd){var _0x50b2fa=_['map'](_0x1d19fd,function(_0x54e1ec){return _0x54e1ec[_0x6360('0x7f')](_0x4fbcc4[_0x6360('0x36')][_0x6360('0x67')],{'transaction':_0x125be9})['then'](function(){var _0x372296=JSON[_0x6360('0x7b')]('['+_0x4fbcc4['query']['ids']+']');var _0xb40e3b=_[_0x6360('0x30')](_0x372296,function(_0x5062d6){socket['emit']('user'+_0x78f490+_0x6360('0x83'),{'UserId':Number(_0x5062d6),[_0x78f490+_0x6360('0x84')]:_0x54e1ec['id']});if(_0x78f490!==_0x6360('0x69'))return;return db[_0x6360('0x75')]['destroy']({'where':{'VoiceQueueId':_0x54e1ec['id'],'UserId':_0x5062d6},'transaction':_0x125be9});});return Promise[_0x6360('0x7a')](_0xb40e3b);});});return Promise['all'](_0x50b2fa);});});return Promise[_0x6360('0x7a')](_0x5b969e)[_0x6360('0x29')](function(){return _0x5449f8[_0x6360('0x7f')](_0x4fbcc4[_0x6360('0x36')]['ids'],{'transaction':_0x125be9});})[_0x6360('0x29')](function(){var _0x1a82fb=JSON[_0x6360('0x7b')]('['+_0x4fbcc4[_0x6360('0x36')][_0x6360('0x67')]+']');db[_0x6360('0x7c')]['findOne']({'where':{'teamId':_0x4fbcc4[_0x6360('0x4a')]['id']}})[_0x6360('0x29')](function(_0x265857){if(_0x265857){for(var _0x1b022a=0x0;_0x1b022a<_0x1a82fb[_0x6360('0x4b')];_0x1b022a++){var _0x2c6570=_0x1a82fb[_0x1b022a];db[_0x6360('0x7d')][_0x6360('0x2a')]({'where':{'UserId':_0x2c6570,'VoicePrefixId':_0x265857[_0x6360('0x7e')]}});}}});});});}})[_0x6360('0x29')](respondWithStatusCode(_0x3f61f0,null))['catch'](handleError(_0x3f61f0,null));};exports[_0x6360('0x85')]=function(_0x211ed5,_0x251e5f,_0x5c856f){var _0x39e1ad={};var _0x1a4491={};var _0xdd3fad;var _0x888da1;return db[_0x6360('0x31')]['findOne']({'where':{'id':_0x211ed5[_0x6360('0x4a')]['id']}})['then'](handleEntityNotFound(_0x251e5f,null))[_0x6360('0x29')](function(_0x5e0f14){if(_0x5e0f14){_0xdd3fad=_0x5e0f14;_0x1a4491[_0x6360('0x35')]=_['keys'](db[_0x6360('0x70')]['rawAttributes']);_0x1a4491[_0x6360('0x36')]=_[_0x6360('0x37')](_0x211ed5[_0x6360('0x36')]);_0x1a4491['filters']=_[_0x6360('0x39')](_0x1a4491[_0x6360('0x35')],_0x1a4491[_0x6360('0x36')]);_0x39e1ad['attributes']=_[_0x6360('0x39')](_0x1a4491['model'],qs[_0x6360('0x3b')](_0x211ed5['query']['fields']));_0x39e1ad['attributes']=_0x39e1ad[_0x6360('0x3a')][_0x6360('0x4b')]?_0x39e1ad[_0x6360('0x3a')]:_0x1a4491[_0x6360('0x35')];_0x39e1ad[_0x6360('0x3e')]=qs[_0x6360('0x3f')](_0x211ed5['query'][_0x6360('0x3f')]);_0x39e1ad[_0x6360('0x40')]=qs[_0x6360('0x38')](_[_0x6360('0x41')](_0x211ed5[_0x6360('0x36')],_0x1a4491['filters']));if(_0x211ed5[_0x6360('0x36')]['filter']){_0x39e1ad[_0x6360('0x40')]=_[_0x6360('0x43')](_0x39e1ad[_0x6360('0x40')],{'$or':_[_0x6360('0x30')](_0x39e1ad[_0x6360('0x3a')],function(_0x3d2cef){var _0x245e54={};_0x245e54[_0x3d2cef]={'$like':'%'+_0x211ed5[_0x6360('0x36')][_0x6360('0x42')]+'%'};return _0x245e54;})});}_0x39e1ad=_[_0x6360('0x43')]({},_0x39e1ad,_0x211ed5[_0x6360('0x45')]);return _0xdd3fad[_0x6360('0x85')](_0x39e1ad);}})['then'](function(_0x44b069){if(_0x44b069){_0x888da1=_0x44b069[_0x6360('0x4b')];if(!_0x211ed5[_0x6360('0x36')][_0x6360('0x3c')](_0x6360('0x3d'))){_0x39e1ad[_0x6360('0x22')]=qs[_0x6360('0x22')](_0x211ed5[_0x6360('0x36')][_0x6360('0x22')]);_0x39e1ad['offset']=qs[_0x6360('0x20')](_0x211ed5['query']['offset']);}return _0xdd3fad[_0x6360('0x85')](_0x39e1ad);}})[_0x6360('0x29')](function(_0x4597ec){if(_0x4597ec){return _0x4597ec?{'count':_0x888da1,'rows':_0x4597ec}:null;}})[_0x6360('0x29')](respondWithResult(_0x251e5f,null))[_0x6360('0x48')](handleError(_0x251e5f,null));};
\ No newline at end of file
+var _0xd5a9=['defaults','localhost','./team.socket','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','update','then','destroy','get','Teams','UserProfileResource','error','stack','name','send','index','Team','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','sort','where','pick','filter','merge','map','VIRTUAL','options','include','findAll','rows','catch','show','rawAttributes','find','create','body','user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','getQueues','findOne','channel','isValidChannel','Sequelize','ValidationError','Unknown\x20channel','toLowerCase','Queue','order','capitalize','Queues','addQueues','add','ids','remove','Chat','Mail','Sms','Fax','Openchannel','Whatsapp','transaction','Voice','through','penalty','QueueId','TeamVoiceQueue','findOrCreate','emit','Queue:save','online','voicePause','UserVoiceQueueRt','format','SIP/%s','interface','all','addAgents','spread','removeAgents','sequelize','parse','Queue:remove','getAgents','User','hasOwnProperty','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','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis'];(function(_0x559bf0,_0x19fc48){var _0x33d87c=function(_0x462b6d){while(--_0x462b6d){_0x559bf0['push'](_0x559bf0['shift']());}};_0x33d87c(++_0x19fc48);}(_0xd5a9,0x6a));var _0x9d5a=function(_0x4700ce,_0x1d9240){_0x4700ce=_0x4700ce-0x0;var _0x4b910c=_0xd5a9[_0x4700ce];return _0x4b910c;};'use strict';var emlformat=require(_0x9d5a('0x0'));var rimraf=require(_0x9d5a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9d5a('0x2'));var rp=require(_0x9d5a('0x3'));var moment=require(_0x9d5a('0x4'));var BPromise=require(_0x9d5a('0x5'));var Mustache=require(_0x9d5a('0x6'));var util=require(_0x9d5a('0x7'));var path=require(_0x9d5a('0x8'));var sox=require(_0x9d5a('0x9'));var csv=require(_0x9d5a('0xa'));var ejs=require(_0x9d5a('0xb'));var fs=require('fs');var fs_extra=require(_0x9d5a('0xc'));var _=require(_0x9d5a('0xd'));var squel=require(_0x9d5a('0xe'));var crypto=require(_0x9d5a('0xf'));var jsforce=require(_0x9d5a('0x10'));var deskjs=require(_0x9d5a('0x11'));var toCsv=require(_0x9d5a('0xa'));var querystring=require(_0x9d5a('0x12'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x9d5a('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9d5a('0x14'))(_0x9d5a('0x15'));var utils=require(_0x9d5a('0x16'));var config=require(_0x9d5a('0x17'));var licenseUtil=require(_0x9d5a('0x18'));var db=require(_0x9d5a('0x19'))['db'];config[_0x9d5a('0x1a')]=_[_0x9d5a('0x1b')](config[_0x9d5a('0x1a')],{'host':_0x9d5a('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9d5a('0x1a')]));require(_0x9d5a('0x1d'))['register'](socket);function respondWithStatusCode(_0x1a409,_0x292bd8){_0x292bd8=_0x292bd8||0xcc;return function(_0x578057){if(_0x578057){return _0x1a409[_0x9d5a('0x1e')](_0x292bd8);}return _0x1a409[_0x9d5a('0x1f')](_0x292bd8)['end']();};}function respondWithResult(_0x3ba0db,_0x4a44b5){_0x4a44b5=_0x4a44b5||0xc8;return function(_0x4e59b0){if(_0x4e59b0){return _0x3ba0db[_0x9d5a('0x1f')](_0x4a44b5)[_0x9d5a('0x20')](_0x4e59b0);}};}function respondWithFilteredResult(_0x5dba1f,_0xc39a4a){return function(_0x468d6c){if(_0x468d6c){var _0x18620c=typeof _0xc39a4a[_0x9d5a('0x21')]===_0x9d5a('0x22')&&typeof _0xc39a4a[_0x9d5a('0x23')]==='undefined';var _0x5a3757=_0x468d6c[_0x9d5a('0x24')];var _0x5eab63=_0x18620c?0x0:_0xc39a4a[_0x9d5a('0x21')];var _0x2c2abe=_0x18620c?_0x468d6c['count']:_0xc39a4a[_0x9d5a('0x21')]+_0xc39a4a[_0x9d5a('0x23')];var _0x1cf980;if(_0x2c2abe>=_0x5a3757){_0x2c2abe=_0x5a3757;_0x1cf980=0xc8;}else{_0x1cf980=0xce;}_0x5dba1f[_0x9d5a('0x1f')](_0x1cf980);return _0x5dba1f[_0x9d5a('0x25')]('Content-Range',_0x5eab63+'-'+_0x2c2abe+'/'+_0x5a3757)[_0x9d5a('0x20')](_0x468d6c);}return null;};}function patchUpdates(_0x3e5f70){return function(_0x1487fe){try{jsonpatch[_0x9d5a('0x26')](_0x1487fe,_0x3e5f70,!![]);}catch(_0x49f0a7){return BPromise[_0x9d5a('0x27')](_0x49f0a7);}return _0x1487fe['save']();};}function saveUpdates(_0x3df849,_0x55a7f5){return function(_0x29876f){if(_0x29876f){return _0x29876f[_0x9d5a('0x28')](_0x3df849)[_0x9d5a('0x29')](function(_0xb29c6e){return _0xb29c6e;});}return null;};}function removeEntity(_0x57af3,_0x4aaba4){return function(_0xa57728){if(_0xa57728){return _0xa57728[_0x9d5a('0x2a')]()['then'](function(){var _0x38f105=_0xa57728[_0x9d5a('0x2b')]({'plain':!![]});var _0x6e4807=_0x9d5a('0x2c');return db[_0x9d5a('0x2d')]['destroy']({'where':{'type':_0x6e4807,'resourceId':_0x38f105['id']}})[_0x9d5a('0x29')](function(){return _0xa57728;});})[_0x9d5a('0x29')](function(){_0x57af3[_0x9d5a('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x871d73,_0x1eae1d){return function(_0x4d138){if(!_0x4d138){_0x871d73['sendStatus'](0x194);}return _0x4d138;};}function handleError(_0x319c0e,_0x1e1952){_0x1e1952=_0x1e1952||0x1f4;return function(_0x33fff1){logger[_0x9d5a('0x2e')](_0x33fff1[_0x9d5a('0x2f')]);if(_0x33fff1[_0x9d5a('0x30')]){delete _0x33fff1['name'];}_0x319c0e['status'](_0x1e1952)[_0x9d5a('0x31')](_0x33fff1);};}exports[_0x9d5a('0x32')]=function(_0x2767d5,_0x3677e3){var _0x28c9fd={},_0x544189={},_0x4628c2={'count':0x0,'rows':[]};var _0x264446=_['map'](db[_0x9d5a('0x33')]['rawAttributes'],function(_0x453904){return{'name':_0x453904['fieldName'],'type':_0x453904[_0x9d5a('0x34')][_0x9d5a('0x35')]};});_0x544189[_0x9d5a('0x36')]=_['map'](_0x264446,_0x9d5a('0x30'));_0x544189[_0x9d5a('0x37')]=_[_0x9d5a('0x38')](_0x2767d5[_0x9d5a('0x37')]);_0x544189[_0x9d5a('0x39')]=_[_0x9d5a('0x3a')](_0x544189[_0x9d5a('0x36')],_0x544189[_0x9d5a('0x37')]);_0x28c9fd['attributes']=_[_0x9d5a('0x3a')](_0x544189['model'],qs[_0x9d5a('0x3b')](_0x2767d5[_0x9d5a('0x37')][_0x9d5a('0x3b')]));_0x28c9fd[_0x9d5a('0x3c')]=_0x28c9fd[_0x9d5a('0x3c')][_0x9d5a('0x3d')]?_0x28c9fd['attributes']:_0x544189['model'];if(!_0x2767d5['query']['hasOwnProperty'](_0x9d5a('0x3e'))){_0x28c9fd['limit']=qs[_0x9d5a('0x23')](_0x2767d5[_0x9d5a('0x37')][_0x9d5a('0x23')]);_0x28c9fd['offset']=qs['offset'](_0x2767d5[_0x9d5a('0x37')][_0x9d5a('0x21')]);}_0x28c9fd['order']=qs[_0x9d5a('0x3f')](_0x2767d5[_0x9d5a('0x37')][_0x9d5a('0x3f')]);_0x28c9fd[_0x9d5a('0x40')]=qs['filters'](_[_0x9d5a('0x41')](_0x2767d5[_0x9d5a('0x37')],_0x544189['filters']),_0x264446);if(_0x2767d5[_0x9d5a('0x37')][_0x9d5a('0x42')]){_0x28c9fd[_0x9d5a('0x40')]=_[_0x9d5a('0x43')](_0x28c9fd[_0x9d5a('0x40')],{'$or':_[_0x9d5a('0x44')](_0x264446,function(_0x5109f7){if(_0x5109f7['type']!==_0x9d5a('0x45')){var _0x22073d={};_0x22073d[_0x5109f7['name']]={'$like':'%'+_0x2767d5[_0x9d5a('0x37')][_0x9d5a('0x42')]+'%'};return _0x22073d;}})});}_0x28c9fd=_[_0x9d5a('0x43')]({},_0x28c9fd,_0x2767d5[_0x9d5a('0x46')]);var _0x5a81aa={'where':_0x28c9fd['where']};return db['Team']['count'](_0x5a81aa)['then'](function(_0x35502c){_0x4628c2[_0x9d5a('0x24')]=_0x35502c;if(_0x2767d5[_0x9d5a('0x37')]['includeAll']){_0x28c9fd[_0x9d5a('0x47')]=[{'all':!![]}];}return db[_0x9d5a('0x33')][_0x9d5a('0x48')](_0x28c9fd);})['then'](function(_0x411fbe){_0x4628c2[_0x9d5a('0x49')]=_0x411fbe;return _0x4628c2;})[_0x9d5a('0x29')](respondWithFilteredResult(_0x3677e3,_0x28c9fd))[_0x9d5a('0x4a')](handleError(_0x3677e3,null));};exports[_0x9d5a('0x4b')]=function(_0x5888f7,_0x410834){var _0x376907={'raw':![],'where':{'id':_0x5888f7['params']['id']}},_0x3058b6={};_0x3058b6['model']=_[_0x9d5a('0x38')](db[_0x9d5a('0x33')][_0x9d5a('0x4c')]);_0x3058b6[_0x9d5a('0x37')]=_[_0x9d5a('0x38')](_0x5888f7[_0x9d5a('0x37')]);_0x3058b6['filters']=_[_0x9d5a('0x3a')](_0x3058b6[_0x9d5a('0x36')],_0x3058b6[_0x9d5a('0x37')]);_0x376907['attributes']=_[_0x9d5a('0x3a')](_0x3058b6['model'],qs[_0x9d5a('0x3b')](_0x5888f7[_0x9d5a('0x37')][_0x9d5a('0x3b')]));_0x376907['attributes']=_0x376907[_0x9d5a('0x3c')][_0x9d5a('0x3d')]?_0x376907[_0x9d5a('0x3c')]:_0x3058b6[_0x9d5a('0x36')];if(_0x5888f7[_0x9d5a('0x37')]['includeAll']){_0x376907[_0x9d5a('0x47')]=[{'all':!![]}];}_0x376907=_['merge']({},_0x376907,_0x5888f7[_0x9d5a('0x46')]);return db[_0x9d5a('0x33')][_0x9d5a('0x4d')](_0x376907)[_0x9d5a('0x29')](handleEntityNotFound(_0x410834,null))[_0x9d5a('0x29')](respondWithResult(_0x410834,null))[_0x9d5a('0x4a')](handleError(_0x410834,null));};exports[_0x9d5a('0x4e')]=function(_0x3058cf,_0x30977c){return db[_0x9d5a('0x33')][_0x9d5a('0x4e')](_0x3058cf[_0x9d5a('0x4f')],{})[_0x9d5a('0x29')](function(_0x2450ec){var _0x161914=_0x3058cf[_0x9d5a('0x50')][_0x9d5a('0x2b')]({'plain':!![]});if(!_0x161914)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x161914[_0x9d5a('0x51')]===_0x9d5a('0x50')){var _0x374715=_0x2450ec['get']({'plain':!![]});var _0x13768a=_0x9d5a('0x2c');return db[_0x9d5a('0x52')][_0x9d5a('0x4d')]({'where':{'name':_0x13768a,'userProfileId':_0x161914[_0x9d5a('0x53')]},'raw':!![]})[_0x9d5a('0x29')](function(_0x7c56c){if(_0x7c56c&&_0x7c56c['autoAssociation']===0x0){return db['UserProfileResource'][_0x9d5a('0x4e')]({'name':_0x374715[_0x9d5a('0x30')],'resourceId':_0x374715['id'],'type':_0x7c56c[_0x9d5a('0x30')],'sectionId':_0x7c56c['id']},{})[_0x9d5a('0x29')](function(){return _0x2450ec;});}else{return _0x2450ec;}})[_0x9d5a('0x4a')](function(_0x20e42b){logger['error'](_0x9d5a('0x54'),_0x20e42b);throw _0x20e42b;});}return _0x2450ec;})[_0x9d5a('0x29')](respondWithResult(_0x30977c,0xc9))[_0x9d5a('0x4a')](handleError(_0x30977c,null));};exports[_0x9d5a('0x28')]=function(_0x1f66f2,_0x75a3a8){if(_0x1f66f2[_0x9d5a('0x4f')]['id']){delete _0x1f66f2[_0x9d5a('0x4f')]['id'];}return db[_0x9d5a('0x33')]['find']({'where':{'id':_0x1f66f2[_0x9d5a('0x55')]['id']}})[_0x9d5a('0x29')](handleEntityNotFound(_0x75a3a8,null))[_0x9d5a('0x29')](saveUpdates(_0x1f66f2['body'],null))[_0x9d5a('0x29')](respondWithResult(_0x75a3a8,null))[_0x9d5a('0x4a')](handleError(_0x75a3a8,null));};exports[_0x9d5a('0x2a')]=function(_0x2ef1aa,_0x4d5ffb){return db[_0x9d5a('0x33')][_0x9d5a('0x4d')]({'where':{'id':_0x2ef1aa[_0x9d5a('0x55')]['id']}})[_0x9d5a('0x29')](handleEntityNotFound(_0x4d5ffb,null))[_0x9d5a('0x29')](removeEntity(_0x4d5ffb,null))['catch'](handleError(_0x4d5ffb,null));};exports[_0x9d5a('0x56')]=function(_0x4a5521,_0x330f72,_0x3e8f88){return db[_0x9d5a('0x33')][_0x9d5a('0x57')]({'where':{'id':_0x4a5521[_0x9d5a('0x55')]['id']}})['then'](handleEntityNotFound(_0x330f72,null))[_0x9d5a('0x29')](function(_0x3d3894){if(!_0x4a5521['query'][_0x9d5a('0x58')]||!utils[_0x9d5a('0x59')](_0x4a5521['query']['channel'])){throw new db[(_0x9d5a('0x5a'))][(_0x9d5a('0x5b'))](_0x9d5a('0x5c'));}var _0x30feff={};var _0x3cc5f8={};_0x3cc5f8[_0x9d5a('0x36')]=_['keys'](db[_['capitalize'](_0x4a5521[_0x9d5a('0x37')][_0x9d5a('0x58')][_0x9d5a('0x5d')]())+_0x9d5a('0x5e')][_0x9d5a('0x4c')]);_0x3cc5f8[_0x9d5a('0x37')]=_[_0x9d5a('0x38')](_0x4a5521[_0x9d5a('0x37')]);_0x3cc5f8[_0x9d5a('0x39')]=_[_0x9d5a('0x3a')](_0x3cc5f8[_0x9d5a('0x36')],_0x3cc5f8['query']);_0x30feff[_0x9d5a('0x3c')]=_[_0x9d5a('0x3a')](_0x3cc5f8[_0x9d5a('0x36')],qs[_0x9d5a('0x3b')](_0x4a5521[_0x9d5a('0x37')]['fields']));_0x30feff[_0x9d5a('0x3c')]=_0x30feff[_0x9d5a('0x3c')][_0x9d5a('0x3d')]?_0x30feff['attributes']:_0x3cc5f8[_0x9d5a('0x36')];_0x30feff['limit']=qs['limit'](_0x4a5521[_0x9d5a('0x37')][_0x9d5a('0x23')]);_0x30feff[_0x9d5a('0x21')]=qs[_0x9d5a('0x21')](_0x4a5521[_0x9d5a('0x37')][_0x9d5a('0x21')]);_0x30feff[_0x9d5a('0x5f')]=qs['sort'](_0x4a5521[_0x9d5a('0x37')][_0x9d5a('0x3f')]);_0x30feff['where']=qs[_0x9d5a('0x39')](_['pick'](_0x4a5521[_0x9d5a('0x37')],_0x3cc5f8[_0x9d5a('0x39')]));_0x30feff=_[_0x9d5a('0x43')]({},_0x30feff,_0x4a5521['options']);return _0x3d3894[_0x9d5a('0x2b')+_[_0x9d5a('0x60')](_0x4a5521['query']['channel'][_0x9d5a('0x5d')]())+_0x9d5a('0x61')](_0x30feff);})['then'](respondWithResult(_0x330f72,null))[_0x9d5a('0x4a')](handleError(_0x330f72,null));};exports[_0x9d5a('0x62')]=function(_0x337fd2,_0x98184a,_0x243ca6){return db['Team']['findOne']({'where':{'id':_0x337fd2[_0x9d5a('0x55')]['id']}})[_0x9d5a('0x29')](function(_0x4cc5d3){if(_0x4cc5d3){if(!_0x337fd2[_0x9d5a('0x4f')][_0x9d5a('0x58')]||!utils[_0x9d5a('0x59')](_0x337fd2[_0x9d5a('0x4f')]['channel'])){throw new db['Sequelize'][(_0x9d5a('0x5b'))](_0x9d5a('0x5c'));}return _0x4cc5d3[_0x9d5a('0x63')+_[_0x9d5a('0x60')](_0x337fd2[_0x9d5a('0x4f')]['channel'][_0x9d5a('0x5d')]())+_0x9d5a('0x61')](_0x337fd2[_0x9d5a('0x4f')][_0x9d5a('0x64')]);}return null;})[_0x9d5a('0x29')](handleEntityNotFound(_0x98184a,null))[_0x9d5a('0x29')](respondWithStatusCode(_0x98184a,null))['catch'](handleError(_0x98184a,null));};exports['removeQueues']=function(_0x3f021c,_0x5c4921,_0x1d5f84){return db[_0x9d5a('0x33')][_0x9d5a('0x57')]({'where':{'id':_0x3f021c[_0x9d5a('0x55')]['id']}})[_0x9d5a('0x29')](function(_0x930e52){if(_0x930e52){if(!_0x3f021c[_0x9d5a('0x37')]['channel']||!utils['isValidChannel'](_0x3f021c['query'][_0x9d5a('0x58')])){throw new db['Sequelize'][(_0x9d5a('0x5b'))](_0x9d5a('0x5c'));}return _0x930e52[_0x9d5a('0x65')+_[_0x9d5a('0x60')](_0x3f021c[_0x9d5a('0x37')][_0x9d5a('0x58')][_0x9d5a('0x5d')]())+_0x9d5a('0x61')](_0x3f021c[_0x9d5a('0x37')][_0x9d5a('0x64')]);}return null;})[_0x9d5a('0x29')](handleEntityNotFound(_0x5c4921,null))['then'](respondWithStatusCode(_0x5c4921,null))['catch'](handleError(_0x5c4921,null));};exports['addAgents']=function(_0x393938,_0x4d9011){return db['Team']['find']({'where':{'id':_0x393938['params']['id']}})['then'](handleEntityNotFound(_0x4d9011,null))[_0x9d5a('0x29')](function(_0x1f919c){if(_0x1f919c){var _0x3624be=['Voice',_0x9d5a('0x66'),_0x9d5a('0x67'),_0x9d5a('0x68'),_0x9d5a('0x69'),_0x9d5a('0x6a'),_0x9d5a('0x6b')];return db['sequelize'][_0x9d5a('0x6c')](function(_0x587b27){var _0x4f33af=_[_0x9d5a('0x44')](_0x3624be,function(_0x2d8ee8){var _0x504ab9={'attributes':['id','name']};if(_0x2d8ee8===_0x9d5a('0x6d')){_0x504ab9[_0x9d5a('0x6e')]={'attributes':[_0x9d5a('0x6f')]};}return _0x1f919c[_0x9d5a('0x2b')+_0x2d8ee8+_0x9d5a('0x61')](_0x504ab9)[_0x9d5a('0x29')](function(_0x344fbf){var _0xef7f77=_[_0x9d5a('0x44')](_0x344fbf,function(_0x3bb32a){var _0x30d438=_[_0x9d5a('0x44')](_0x393938[_0x9d5a('0x4f')][_0x9d5a('0x64')],function(_0x404110){var _0x3ec042={'where':{'UserId':_0x404110,[_0x2d8ee8+_0x9d5a('0x70')]:_0x3bb32a['id']},'transaction':_0x587b27};if(_0x2d8ee8===_0x9d5a('0x6d')){_0x3ec042[_0x9d5a('0x1b')]={'penalty':_0x3bb32a[_0x9d5a('0x71')][_0x9d5a('0x6f')]};}return db['User'+_0x2d8ee8+_0x9d5a('0x5e')][_0x9d5a('0x72')](_0x3ec042)[_0x9d5a('0x29')](function(){socket[_0x9d5a('0x73')]('user'+_0x2d8ee8+_0x9d5a('0x74'),{'UserId':_0x404110,[_0x2d8ee8+_0x9d5a('0x70')]:_0x3bb32a['id']});if(_0x2d8ee8!=='Voice')return;return db['User']['findAll']({'where':{'id':_0x393938[_0x9d5a('0x4f')][_0x9d5a('0x64')],'online':0x1},'attributes':['id',_0x9d5a('0x30'),_0x9d5a('0x75'),_0x9d5a('0x76'),'interface'],'raw':!![]})[_0x9d5a('0x29')](function(_0x3fb575){var _0x5a8057=_[_0x9d5a('0x44')](_0x3fb575,function(_0x157d21){return db[_0x9d5a('0x77')]['upsert']({'membername':_0x157d21[_0x9d5a('0x30')],'UserId':_0x157d21['id'],'queue_name':_0x3bb32a[_0x9d5a('0x30')],'VoiceQueueId':_0x3bb32a['id'],'interface':_['isNil'](_0x157d21['interface'])?util[_0x9d5a('0x78')](_0x9d5a('0x79'),_0x157d21['name']):_0x157d21[_0x9d5a('0x7a')],'paused':_0x157d21[_0x9d5a('0x76')]||![],'penalty':_0x3bb32a[_0x9d5a('0x71')][_0x9d5a('0x6f')]},{'transaction':_0x587b27});});return Promise[_0x9d5a('0x7b')](_0x5a8057);});});});return Promise[_0x9d5a('0x7b')](_0x30d438);});return Promise[_0x9d5a('0x7b')](_0xef7f77);});});return Promise[_0x9d5a('0x7b')](_0x4f33af)[_0x9d5a('0x29')](function(){return _0x1f919c[_0x9d5a('0x7c')](_0x393938['body'][_0x9d5a('0x64')],{'transaction':_0x587b27})[_0x9d5a('0x7d')](function(_0x1b1ac9){return _0x1b1ac9;});});});}})['then'](respondWithResult(_0x4d9011,null))[_0x9d5a('0x4a')](handleError(_0x4d9011,null));};exports[_0x9d5a('0x7e')]=function(_0x2d1a5a,_0x29b88d){return db[_0x9d5a('0x33')][_0x9d5a('0x4d')]({'where':{'id':_0x2d1a5a[_0x9d5a('0x55')]['id']}})[_0x9d5a('0x29')](handleEntityNotFound(_0x29b88d,null))['then'](function(_0x495842){if(_0x495842){var _0x5e8b49=[_0x9d5a('0x6d'),_0x9d5a('0x66'),'Mail',_0x9d5a('0x68'),_0x9d5a('0x69'),_0x9d5a('0x6a'),_0x9d5a('0x6b')];return db[_0x9d5a('0x7f')][_0x9d5a('0x6c')](function(_0x1ca070){var _0x325c1f=_['map'](_0x5e8b49,function(_0x32ace9){var _0x585793={'attributes':['id',_0x9d5a('0x30')]};return _0x495842[_0x9d5a('0x2b')+_0x32ace9+_0x9d5a('0x61')](_0x585793)[_0x9d5a('0x29')](function(_0x9561e1){var _0x50bf75=_[_0x9d5a('0x44')](_0x9561e1,function(_0x82ac62){return _0x82ac62[_0x9d5a('0x7e')](_0x2d1a5a['query'][_0x9d5a('0x64')],{'transaction':_0x1ca070})[_0x9d5a('0x29')](function(){var _0xbc8c17=JSON[_0x9d5a('0x80')]('['+_0x2d1a5a['query'][_0x9d5a('0x64')]+']');var _0x36233b=_[_0x9d5a('0x44')](_0xbc8c17,function(_0x90d622){socket[_0x9d5a('0x73')](_0x9d5a('0x50')+_0x32ace9+_0x9d5a('0x81'),{'UserId':Number(_0x90d622),[_0x32ace9+'QueueId']:_0x82ac62['id']});if(_0x32ace9!==_0x9d5a('0x6d'))return;return db[_0x9d5a('0x77')][_0x9d5a('0x2a')]({'where':{'VoiceQueueId':_0x82ac62['id'],'UserId':_0x90d622},'transaction':_0x1ca070});});return Promise[_0x9d5a('0x7b')](_0x36233b);});});return Promise[_0x9d5a('0x7b')](_0x50bf75);});});return Promise[_0x9d5a('0x7b')](_0x325c1f)[_0x9d5a('0x29')](function(){return _0x495842[_0x9d5a('0x7e')](_0x2d1a5a[_0x9d5a('0x37')]['ids'],{'transaction':_0x1ca070});});});}})['then'](respondWithStatusCode(_0x29b88d,null))['catch'](handleError(_0x29b88d,null));};exports[_0x9d5a('0x82')]=function(_0x519ac3,_0x263054,_0x2640b7){var _0x56c675={};var _0x1d2d2c={};var _0x30215b;var _0xb536c;return db[_0x9d5a('0x33')][_0x9d5a('0x57')]({'where':{'id':_0x519ac3[_0x9d5a('0x55')]['id']}})['then'](handleEntityNotFound(_0x263054,null))[_0x9d5a('0x29')](function(_0x37f0a6){if(_0x37f0a6){_0x30215b=_0x37f0a6;_0x1d2d2c['model']=_[_0x9d5a('0x38')](db[_0x9d5a('0x83')][_0x9d5a('0x4c')]);_0x1d2d2c[_0x9d5a('0x37')]=_[_0x9d5a('0x38')](_0x519ac3[_0x9d5a('0x37')]);_0x1d2d2c[_0x9d5a('0x39')]=_['intersection'](_0x1d2d2c[_0x9d5a('0x36')],_0x1d2d2c[_0x9d5a('0x37')]);_0x56c675['attributes']=_['intersection'](_0x1d2d2c[_0x9d5a('0x36')],qs['fields'](_0x519ac3[_0x9d5a('0x37')][_0x9d5a('0x3b')]));_0x56c675[_0x9d5a('0x3c')]=_0x56c675[_0x9d5a('0x3c')][_0x9d5a('0x3d')]?_0x56c675[_0x9d5a('0x3c')]:_0x1d2d2c[_0x9d5a('0x36')];_0x56c675['order']=qs[_0x9d5a('0x3f')](_0x519ac3[_0x9d5a('0x37')][_0x9d5a('0x3f')]);_0x56c675[_0x9d5a('0x40')]=qs[_0x9d5a('0x39')](_[_0x9d5a('0x41')](_0x519ac3[_0x9d5a('0x37')],_0x1d2d2c[_0x9d5a('0x39')]));if(_0x519ac3['query'][_0x9d5a('0x42')]){_0x56c675[_0x9d5a('0x40')]=_[_0x9d5a('0x43')](_0x56c675['where'],{'$or':_[_0x9d5a('0x44')](_0x56c675['attributes'],function(_0x21ab62){var _0x42cd1b={};_0x42cd1b[_0x21ab62]={'$like':'%'+_0x519ac3[_0x9d5a('0x37')][_0x9d5a('0x42')]+'%'};return _0x42cd1b;})});}_0x56c675=_[_0x9d5a('0x43')]({},_0x56c675,_0x519ac3['options']);return _0x30215b[_0x9d5a('0x82')](_0x56c675);}})[_0x9d5a('0x29')](function(_0xe06afc){if(_0xe06afc){_0xb536c=_0xe06afc[_0x9d5a('0x3d')];if(!_0x519ac3['query'][_0x9d5a('0x84')]('nolimit')){_0x56c675['limit']=qs[_0x9d5a('0x23')](_0x519ac3['query'][_0x9d5a('0x23')]);_0x56c675['offset']=qs[_0x9d5a('0x21')](_0x519ac3[_0x9d5a('0x37')][_0x9d5a('0x21')]);}return _0x30215b[_0x9d5a('0x82')](_0x56c675);}})['then'](function(_0x1d6753){if(_0x1d6753){return _0x1d6753?{'count':_0xb536c,'rows':_0x1d6753}:null;}})[_0x9d5a('0x29')](respondWithResult(_0x263054,null))[_0x9d5a('0x4a')](handleError(_0x263054,null));};
\ No newline at end of file
index 489226e..86ff8a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c63=['../../mysqldb','Team','setMaxListeners','update','remove','emit','hook','exports'];(function(_0x10027e,_0x3aa522){var _0x1a3f71=function(_0x49e84d){while(--_0x49e84d){_0x10027e['push'](_0x10027e['shift']());}};_0x1a3f71(++_0x3aa522);}(_0x2c63,0x1c8));var _0x32c6=function(_0x311909,_0x414bf7){_0x311909=_0x311909-0x0;var _0x8d3163=_0x2c63[_0x311909];return _0x8d3163;};'use strict';var EventEmitter=require('events');var Team=require(_0x32c6('0x0'))['db'][_0x32c6('0x1')];var TeamEvents=new EventEmitter();TeamEvents[_0x32c6('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x32c6('0x3'),'afterDestroy':_0x32c6('0x4')};function emitEvent(_0x4a278e){return function(_0x242209,_0x491832,_0x47fab8){TeamEvents['emit'](_0x4a278e+':'+_0x242209['id'],_0x242209);TeamEvents[_0x32c6('0x5')](_0x4a278e,_0x242209);_0x47fab8(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Team[_0x32c6('0x6')](e,emitEvent(event));}}module[_0x32c6('0x7')]=TeamEvents;
\ No newline at end of file
+var _0x863e=['exports','../../mysqldb','Team','setMaxListeners','save','update','emit','hasOwnProperty','hook'];(function(_0x3a7589,_0x572b50){var _0xa04b11=function(_0x551100){while(--_0x551100){_0x3a7589['push'](_0x3a7589['shift']());}};_0xa04b11(++_0x572b50);}(_0x863e,0x1ba));var _0xe863=function(_0x12db5b,_0x1c1995){_0x12db5b=_0x12db5b-0x0;var _0x162d2e=_0x863e[_0x12db5b];return _0x162d2e;};'use strict';var EventEmitter=require('events');var Team=require(_0xe863('0x0'))['db'][_0xe863('0x1')];var TeamEvents=new EventEmitter();TeamEvents[_0xe863('0x2')](0x0);var events={'afterCreate':_0xe863('0x3'),'afterUpdate':_0xe863('0x4'),'afterDestroy':'remove'};function emitEvent(_0x1d3386){return function(_0x2becab,_0x5d8017,_0x265dbf){TeamEvents[_0xe863('0x5')](_0x1d3386+':'+_0x2becab['id'],_0x2becab);TeamEvents[_0xe863('0x5')](_0x1d3386,_0x2becab);_0x265dbf(null);};}for(var e in events){if(events[_0xe863('0x6')](e)){var event=events[e];Team[_0xe863('0x7')](e,emitEvent(event));}}module[_0xe863('0x8')]=TeamEvents;
\ No newline at end of file
index a6228b3..0c18e54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50db=['exports','define','Team','teams','util','../../config/logger','api','bluebird','request-promise','../../config/environment','./team.attributes'];(function(_0x1af18b,_0x298a98){var _0x412c86=function(_0x5e4eca){while(--_0x5e4eca){_0x1af18b['push'](_0x1af18b['shift']());}};_0x412c86(++_0x298a98);}(_0x50db,0x67));var _0xb50d=function(_0x1ed1b4,_0x313805){_0x1ed1b4=_0x1ed1b4-0x0;var _0x23713a=_0x50db[_0x1ed1b4];return _0x23713a;};'use strict';var _=require('lodash');var util=require(_0xb50d('0x0'));var logger=require(_0xb50d('0x1'))(_0xb50d('0x2'));var moment=require('moment');var BPromise=require(_0xb50d('0x3'));var rp=require(_0xb50d('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xb50d('0x5'));var attributes=require(_0xb50d('0x6'));module[_0xb50d('0x7')]=function(_0x1ffedc,_0x4b80d8){return _0x1ffedc[_0xb50d('0x8')](_0xb50d('0x9'),attributes,{'tableName':_0xb50d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfa21=['request-promise','rimraf','../../config/environment','./team.attributes','exports','define','teams','lodash','util','../../config/logger','moment','bluebird'];(function(_0x2a8480,_0x35034e){var _0x5680b0=function(_0x39be65){while(--_0x39be65){_0x2a8480['push'](_0x2a8480['shift']());}};_0x5680b0(++_0x35034e);}(_0xfa21,0x1c3));var _0x1fa2=function(_0xd0fb04,_0x2ca702){_0xd0fb04=_0xd0fb04-0x0;var _0x587d30=_0xfa21[_0xd0fb04];return _0x587d30;};'use strict';var _=require(_0x1fa2('0x0'));var util=require(_0x1fa2('0x1'));var logger=require(_0x1fa2('0x2'))('api');var moment=require(_0x1fa2('0x3'));var BPromise=require(_0x1fa2('0x4'));var rp=require(_0x1fa2('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1fa2('0x6'));var config=require(_0x1fa2('0x7'));var attributes=require(_0x1fa2('0x8'));module[_0x1fa2('0x9')]=function(_0x2e5e29,_0x3a219b){return _0x2e5e29[_0x1fa2('0xa')]('Team',attributes,{'tableName':_0x1fa2('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3bd1867..68fe8e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb26=['result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','./team.socket','request','info','request\x20sent','debug','Team,\x20%s,\x20%s,\x20%s','stringify','error','code','Team,\x20%s,\x20%s','message'];(function(_0x3f8282,_0x11b607){var _0x50f918=function(_0x3a37de){while(--_0x3a37de){_0x3f8282['push'](_0x3f8282['shift']());}};_0x50f918(++_0x11b607);}(_0xfb26,0xda));var _0x6fb2=function(_0x206f02,_0x36f322){_0x206f02=_0x206f02-0x0;var _0x8a2663=_0xfb26[_0x206f02];return _0x8a2663;};'use strict';var _=require(_0x6fb2('0x0'));var util=require('util');var moment=require(_0x6fb2('0x1'));var BPromise=require(_0x6fb2('0x2'));var rs=require(_0x6fb2('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6fb2('0x4'))['db'];var utils=require(_0x6fb2('0x5'));var logger=require(_0x6fb2('0x6'))(_0x6fb2('0x7'));var config=require('../../config/environment');var jayson=require(_0x6fb2('0x8'));var client=jayson[_0x6fb2('0x9')][_0x6fb2('0xa')]({'port':0x232a});config[_0x6fb2('0xb')]=_[_0x6fb2('0xc')](config[_0x6fb2('0xb')],{'host':_0x6fb2('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6fb2('0xb')]));require(_0x6fb2('0xe'))['register'](socket);function respondWithRpcPromise(_0x29be62,_0x55622d,_0x49fc79){return new BPromise(function(_0x4393bf,_0x29dd6b){return client[_0x6fb2('0xf')](_0x29be62,_0x49fc79)['then'](function(_0x3b5718){logger[_0x6fb2('0x10')]('Team,\x20%s,\x20%s',_0x55622d,_0x6fb2('0x11'));logger[_0x6fb2('0x12')](_0x6fb2('0x13'),_0x55622d,'request\x20sent',JSON[_0x6fb2('0x14')](_0x3b5718));if(_0x3b5718[_0x6fb2('0x15')]){if(_0x3b5718[_0x6fb2('0x15')][_0x6fb2('0x16')]===0x1f4){logger['error'](_0x6fb2('0x17'),_0x55622d,_0x3b5718[_0x6fb2('0x15')][_0x6fb2('0x18')]);return _0x29dd6b(_0x3b5718['error']['message']);}logger[_0x6fb2('0x15')]('Team,\x20%s,\x20%s',_0x55622d,_0x3b5718[_0x6fb2('0x15')][_0x6fb2('0x18')]);return _0x4393bf(_0x3b5718['error'][_0x6fb2('0x18')]);}else{logger[_0x6fb2('0x10')]('Team,\x20%s,\x20%s',_0x55622d,'request\x20sent');_0x4393bf(_0x3b5718[_0x6fb2('0x19')]['message']);}})[_0x6fb2('0x1a')](function(_0x17a3ae){logger['error']('Team,\x20%s,\x20%s',_0x55622d,_0x17a3ae);_0x29dd6b(_0x17a3ae);});});}
\ No newline at end of file
+var _0x1b3b=['moment','../../mysqldb','../../config/logger','rpc','client','http','redis','defaults','socket.io-emitter','./team.socket','register','request','Team,\x20%s,\x20%s','request\x20sent','debug','Team,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util'];(function(_0x15f603,_0x40325b){var _0x3d7303=function(_0x4ef210){while(--_0x4ef210){_0x15f603['push'](_0x15f603['shift']());}};_0x3d7303(++_0x40325b);}(_0x1b3b,0x16e));var _0xb1b3=function(_0x909398,_0x2e6d0b){_0x909398=_0x909398-0x0;var _0x16e1f3=_0x1b3b[_0x909398];return _0x16e1f3;};'use strict';var _=require(_0xb1b3('0x0'));var util=require(_0xb1b3('0x1'));var moment=require(_0xb1b3('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb1b3('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xb1b3('0x4'))(_0xb1b3('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xb1b3('0x6')][_0xb1b3('0x7')]({'port':0x232a});config[_0xb1b3('0x8')]=_[_0xb1b3('0x9')](config[_0xb1b3('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0xb1b3('0xa'))(new Redis(config['redis']));require(_0xb1b3('0xb'))[_0xb1b3('0xc')](socket);function respondWithRpcPromise(_0x32d84e,_0x1eab86,_0x20902f){return new BPromise(function(_0x35ab61,_0x2c9f72){return client[_0xb1b3('0xd')](_0x32d84e,_0x20902f)['then'](function(_0x34f01b){logger['info'](_0xb1b3('0xe'),_0x1eab86,_0xb1b3('0xf'));logger[_0xb1b3('0x10')](_0xb1b3('0x11'),_0x1eab86,'request\x20sent',JSON[_0xb1b3('0x12')](_0x34f01b));if(_0x34f01b[_0xb1b3('0x13')]){if(_0x34f01b['error'][_0xb1b3('0x14')]===0x1f4){logger[_0xb1b3('0x13')]('Team,\x20%s,\x20%s',_0x1eab86,_0x34f01b['error'][_0xb1b3('0x15')]);return _0x2c9f72(_0x34f01b['error'][_0xb1b3('0x15')]);}logger['error'](_0xb1b3('0xe'),_0x1eab86,_0x34f01b[_0xb1b3('0x13')]['message']);return _0x35ab61(_0x34f01b[_0xb1b3('0x13')]['message']);}else{logger['info'](_0xb1b3('0xe'),_0x1eab86,_0xb1b3('0xf'));_0x35ab61(_0x34f01b[_0xb1b3('0x16')][_0xb1b3('0x15')]);}})['catch'](function(_0x40f938){logger[_0xb1b3('0x13')]('Team,\x20%s,\x20%s',_0x1eab86,_0x40f938);_0x2c9f72(_0x40f938);});});}
\ No newline at end of file
index d10ad9a..d80b8ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc81=['register','length','team:','save','remove','update','removeListener'];(function(_0x3daa8c,_0x388a87){var _0x2b1bd7=function(_0xdb2963){while(--_0xdb2963){_0x3daa8c['push'](_0x3daa8c['shift']());}};_0x2b1bd7(++_0x388a87);}(_0xfc81,0x88));var _0x1fc8=function(_0x2e0443,_0x7e5974){_0x2e0443=_0x2e0443-0x0;var _0x52d450=_0xfc81[_0x2e0443];return _0x52d450;};'use strict';var TeamEvents=require('./team.events');var events=[_0x1fc8('0x0'),_0x1fc8('0x1'),_0x1fc8('0x2')];function createListener(_0x3e3f5d,_0x1a43ea){return function(_0x393e67){_0x1a43ea['emit'](_0x3e3f5d,_0x393e67);};}function removeListener(_0xfa84e6,_0x52e561){return function(){TeamEvents[_0x1fc8('0x3')](_0xfa84e6,_0x52e561);};}exports[_0x1fc8('0x4')]=function(_0xf6e38a){for(var _0x392f22=0x0,_0x1aebc1=events[_0x1fc8('0x5')];_0x392f22<_0x1aebc1;_0x392f22++){var _0x2c5cdf=events[_0x392f22];var _0xfbbb27=createListener(_0x1fc8('0x6')+_0x2c5cdf,_0xf6e38a);TeamEvents['on'](_0x2c5cdf,_0xfbbb27);}};
\ No newline at end of file
+var _0x173d=['save','emit','removeListener','team:'];(function(_0x59b35b,_0x9a0ca0){var _0x3facd5=function(_0x33dd5e){while(--_0x33dd5e){_0x59b35b['push'](_0x59b35b['shift']());}};_0x3facd5(++_0x9a0ca0);}(_0x173d,0x108));var _0xd173=function(_0x4b087a,_0x5f337c){_0x4b087a=_0x4b087a-0x0;var _0x4fb7d9=_0x173d[_0x4b087a];return _0x4fb7d9;};'use strict';var TeamEvents=require('./team.events');var events=[_0xd173('0x0'),'remove','update'];function createListener(_0x1b52f3,_0x558a1d){return function(_0x4e7c26){_0x558a1d[_0xd173('0x1')](_0x1b52f3,_0x4e7c26);};}function removeListener(_0x16d405,_0x487266){return function(){TeamEvents[_0xd173('0x2')](_0x16d405,_0x487266);};}exports['register']=function(_0x24f796){for(var _0x2d464b=0x0,_0x454bfa=events['length'];_0x2d464b<_0x454bfa;_0x2d464b++){var _0x239a90=events[_0x2d464b];var _0x5229ad=createListener(_0xd173('0x3')+_0x239a90,_0x24f796);TeamEvents['on'](_0x239a90,_0x5229ad);}};
\ No newline at end of file
diff --git a/server/api/teamVoicePrefix/index.js b/server/api/teamVoicePrefix/index.js
deleted file mode 100644 (file)
index 3ba2de9..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// *************************************************************************
-// *                                                                       *
-// * xCALLY Motion -  The Omnichannel Contact Center                       *
-// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * Email: info@xcally.com                                                *
-// * Website: https://www.xcally.com                                       *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * The SOFTWARE PRODUCT is protected by copyright laws and international *
-// * copyright treaties, as well as other intellectual property laws and   *
-// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
-// *                                                                       *
-// *************************************************************************
-var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x1c34e7,_0x33f9a8){var _0x378cb1=function(_0x10b5e3){while(--_0x10b5e3){_0x1c34e7['push'](_0x1c34e7['shift']());}};_0x378cb1(++_0x33f9a8);}(_0x9c44,0x178));var _0x49c4=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0x9c44[_0x1caf6a];return _0x1bf493;};'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
diff --git a/server/api/teamVoicePrefix/teamVoicePrefix.attributes.js b/server/api/teamVoicePrefix/teamVoicePrefix.attributes.js
deleted file mode 100644 (file)
index 65900c8..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// *************************************************************************
-// *                                                                       *
-// * xCALLY Motion -  The Omnichannel Contact Center                       *
-// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * Email: info@xcally.com                                                *
-// * Website: https://www.xcally.com                                       *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * The SOFTWARE PRODUCT is protected by copyright laws and international *
-// * copyright treaties, as well as other intellectual property laws and   *
-// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
-// *                                                                       *
-// *************************************************************************
-var _0xdadd=['sequelize','INTEGER'];(function(_0x10dc5d,_0x4b62cc){var _0x2c1e6f=function(_0x5f7307){while(--_0x5f7307){_0x10dc5d['push'](_0x10dc5d['shift']());}};_0x2c1e6f(++_0x4b62cc);}(_0xdadd,0x1c8));var _0xddad=function(_0x3e7bb8,_0x11f26c){_0x3e7bb8=_0x3e7bb8-0x0;var _0x160bf4=_0xdadd[_0x3e7bb8];return _0x160bf4;};'use strict';var Sequelize=require(_0xddad('0x0'));module['exports']={'TeamId':{'type':Sequelize[_0xddad('0x1')]},'VoicePrefixId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
diff --git a/server/api/teamVoicePrefix/teamVoicePrefix.model.js b/server/api/teamVoicePrefix/teamVoicePrefix.model.js
deleted file mode 100644 (file)
index 14e6343..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// *************************************************************************
-// *                                                                       *
-// * xCALLY Motion -  The Omnichannel Contact Center                       *
-// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * Email: info@xcally.com                                                *
-// * Website: https://www.xcally.com                                       *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * The SOFTWARE PRODUCT is protected by copyright laws and international *
-// * copyright treaties, as well as other intellectual property laws and   *
-// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
-// *                                                                       *
-// *************************************************************************
-var _0xbaf0=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./teamVoicePrefix.attributes','exports','define','TeamVoicePrefix','team_has_voice_prefixes','util'];(function(_0x30987c,_0x5dd7ae){var _0x3acb1f=function(_0x1ed7b8){while(--_0x1ed7b8){_0x30987c['push'](_0x30987c['shift']());}};_0x3acb1f(++_0x5dd7ae);}(_0xbaf0,0x12a));var _0x0baf=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xbaf0[_0x3947c9];return _0x2e7871;};'use strict';var _=require('lodash');var util=require(_0x0baf('0x0'));var logger=require(_0x0baf('0x1'))(_0x0baf('0x2'));var moment=require(_0x0baf('0x3'));var BPromise=require(_0x0baf('0x4'));var rp=require(_0x0baf('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var attributes=require(_0x0baf('0x8'));module[_0x0baf('0x9')]=function(_0xe4c3c4,_0x335e24){return _0xe4c3c4[_0x0baf('0xa')](_0x0baf('0xb'),attributes,{'tableName':_0x0baf('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
diff --git a/server/api/teamVoicePrefix/teamVoicePrefix.rpc.js b/server/api/teamVoicePrefix/teamVoicePrefix.rpc.js
deleted file mode 100644 (file)
index cff09ab..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// *************************************************************************
-// *                                                                       *
-// * xCALLY Motion -  The Omnichannel Contact Center                       *
-// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * Email: info@xcally.com                                                *
-// * Website: https://www.xcally.com                                       *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * The SOFTWARE PRODUCT is protected by copyright laws and international *
-// * copyright treaties, as well as other intellectual property laws and   *
-// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
-// *                                                                       *
-// *************************************************************************
-var _0x5ca7=['lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','TeamVoicePrefix,\x20%s,\x20%s','debug','TeamVoicePrefix,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch'];(function(_0x5389f1,_0x1341f2){var _0x5b9f42=function(_0x4d072a){while(--_0x4d072a){_0x5389f1['push'](_0x5389f1['shift']());}};_0x5b9f42(++_0x1341f2);}(_0x5ca7,0x78));var _0x75ca=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0x5ca7[_0xc6be3a];return _0x56a310;};'use strict';var _=require(_0x75ca('0x0'));var util=require(_0x75ca('0x1'));var moment=require(_0x75ca('0x2'));var BPromise=require('bluebird');var rs=require(_0x75ca('0x3'));var fs=require('fs');var Redis=require(_0x75ca('0x4'));var db=require(_0x75ca('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x75ca('0x6'))(_0x75ca('0x7'));var config=require(_0x75ca('0x8'));var jayson=require(_0x75ca('0x9'));var client=jayson['client'][_0x75ca('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5c9c72,_0x5f5c8f,_0x22dd55){return new BPromise(function(_0x310f70,_0x3399b9){return client[_0x75ca('0xb')](_0x5c9c72,_0x22dd55)[_0x75ca('0xc')](function(_0x2721e5){logger[_0x75ca('0xd')](_0x75ca('0xe'),_0x5f5c8f,'request\x20sent');logger[_0x75ca('0xf')](_0x75ca('0x10'),_0x5f5c8f,_0x75ca('0x11'),JSON[_0x75ca('0x12')](_0x2721e5));if(_0x2721e5[_0x75ca('0x13')]){if(_0x2721e5[_0x75ca('0x13')][_0x75ca('0x14')]===0x1f4){logger[_0x75ca('0x13')](_0x75ca('0xe'),_0x5f5c8f,_0x2721e5[_0x75ca('0x13')]['message']);return _0x3399b9(_0x2721e5[_0x75ca('0x13')][_0x75ca('0x15')]);}logger[_0x75ca('0x13')]('TeamVoicePrefix,\x20%s,\x20%s',_0x5f5c8f,_0x2721e5[_0x75ca('0x13')][_0x75ca('0x15')]);return _0x310f70(_0x2721e5[_0x75ca('0x13')][_0x75ca('0x15')]);}else{logger[_0x75ca('0xd')](_0x75ca('0xe'),_0x5f5c8f,_0x75ca('0x11'));_0x310f70(_0x2721e5[_0x75ca('0x16')][_0x75ca('0x15')]);}})[_0x75ca('0x17')](function(_0x4dccde){logger[_0x75ca('0x13')](_0x75ca('0xe'),_0x5f5c8f,_0x4dccde);_0x3399b9(_0x4dccde);});});}
\ No newline at end of file
index 7011974..ad2be31 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(_0x3baa35,_0x2dbcff){var _0x3f2572=function(_0x5d5013){while(--_0x5d5013){_0x3baa35['push'](_0x3baa35['shift']());}};_0x3f2572(++_0x2dbcff);}(_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'));module['exports']=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x229fb8,_0xffd4d7){var _0x179205=function(_0x38f433){while(--_0x38f433){_0x229fb8['push'](_0x229fb8['shift']());}};_0x179205(++_0xffd4d7);}(_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 370f8c5..4289d0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea1b=['sequelize','exports','INTEGER'];(function(_0x47b15f,_0x103e93){var _0x55bf25=function(_0x51fe7f){while(--_0x51fe7f){_0x47b15f['push'](_0x47b15f['shift']());}};_0x55bf25(++_0x103e93);}(_0xea1b,0xd8));var _0xbea1=function(_0x2281e0,_0x45320b){_0x2281e0=_0x2281e0-0x0;var _0x353c51=_0xea1b[_0x2281e0];return _0x353c51;};'use strict';var Sequelize=require(_0xbea1('0x0'));module[_0xbea1('0x1')]={'penalty':{'type':Sequelize[_0xbea1('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x8e70=['sequelize','exports'];(function(_0x57aabc,_0x4664e5){var _0x39848c=function(_0x3fc1b8){while(--_0x3fc1b8){_0x57aabc['push'](_0x57aabc['shift']());}};_0x39848c(++_0x4664e5);}(_0x8e70,0x88));var _0x08e7=function(_0x46d0c9,_0x526bfa){_0x46d0c9=_0x46d0c9-0x0;var _0x174506=_0x8e70[_0x46d0c9];return _0x174506;};'use strict';var Sequelize=require(_0x08e7('0x0'));module[_0x08e7('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index e6ddc06..dd7d8c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3098=['./teamVoiceQueue.attributes','exports','define','team_has_voice_queues','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x2b8b01,_0x347164){var _0x32064a=function(_0x137c3e){while(--_0x137c3e){_0x2b8b01['push'](_0x2b8b01['shift']());}};_0x32064a(++_0x347164);}(_0x3098,0x86));var _0x8309=function(_0x96f74c,_0xfc30a4){_0x96f74c=_0x96f74c-0x0;var _0x379222=_0x3098[_0x96f74c];return _0x379222;};'use strict';var _=require(_0x8309('0x0'));var util=require(_0x8309('0x1'));var logger=require(_0x8309('0x2'))(_0x8309('0x3'));var moment=require('moment');var BPromise=require(_0x8309('0x4'));var rp=require(_0x8309('0x5'));var fs=require('fs');var path=require(_0x8309('0x6'));var rimraf=require(_0x8309('0x7'));var config=require(_0x8309('0x8'));var attributes=require(_0x8309('0x9'));module[_0x8309('0xa')]=function(_0x2ddf0b,_0x2aa50b){return _0x2ddf0b[_0x8309('0xb')]('TeamVoiceQueue',attributes,{'tableName':_0x8309('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x25b5=['team_has_voice_queues','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./teamVoiceQueue.attributes'];(function(_0x57e18a,_0x199383){var _0x1181c7=function(_0x2503e8){while(--_0x2503e8){_0x57e18a['push'](_0x57e18a['shift']());}};_0x1181c7(++_0x199383);}(_0x25b5,0x198));var _0x525b=function(_0x1c7440,_0x17c8f7){_0x1c7440=_0x1c7440-0x0;var _0x448382=_0x25b5[_0x1c7440];return _0x448382;};'use strict';var _=require(_0x525b('0x0'));var util=require(_0x525b('0x1'));var logger=require(_0x525b('0x2'))(_0x525b('0x3'));var moment=require(_0x525b('0x4'));var BPromise=require('bluebird');var rp=require(_0x525b('0x5'));var fs=require('fs');var path=require(_0x525b('0x6'));var rimraf=require(_0x525b('0x7'));var config=require(_0x525b('0x8'));var attributes=require(_0x525b('0x9'));module['exports']=function(_0x5cca3f,_0x982127){return _0x5cca3f['define']('TeamVoiceQueue',attributes,{'tableName':_0x525b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 756cd6c..4f0e0e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa20e=['ioredis','../../config/utils','../../config/logger','client','request','then','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','moment','bluebird','randomstring'];(function(_0x24f161,_0x215df5){var _0x311704=function(_0x51c001){while(--_0x51c001){_0x24f161['push'](_0x24f161['shift']());}};_0x311704(++_0x215df5);}(_0xa20e,0x1ca));var _0xea20=function(_0x1b1f04,_0xc66e12){_0x1b1f04=_0x1b1f04-0x0;var _0x1c0109=_0xa20e[_0x1b1f04];return _0x1c0109;};'use strict';var _=require(_0xea20('0x0'));var util=require('util');var moment=require(_0xea20('0x1'));var BPromise=require(_0xea20('0x2'));var rs=require(_0xea20('0x3'));var fs=require('fs');var Redis=require(_0xea20('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xea20('0x5'));var logger=require(_0xea20('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xea20('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1cd3dc,_0x32d1b0,_0x5d8942){return new BPromise(function(_0x450bd9,_0x2965a6){return client[_0xea20('0x8')](_0x1cd3dc,_0x5d8942)[_0xea20('0x9')](function(_0x4806d1){logger['info'](_0xea20('0xa'),_0x32d1b0,_0xea20('0xb'));logger[_0xea20('0xc')](_0xea20('0xd'),_0x32d1b0,'request\x20sent',JSON[_0xea20('0xe')](_0x4806d1));if(_0x4806d1[_0xea20('0xf')]){if(_0x4806d1['error'][_0xea20('0x10')]===0x1f4){logger['error'](_0xea20('0xa'),_0x32d1b0,_0x4806d1['error'][_0xea20('0x11')]);return _0x2965a6(_0x4806d1[_0xea20('0xf')][_0xea20('0x11')]);}logger[_0xea20('0xf')](_0xea20('0xa'),_0x32d1b0,_0x4806d1[_0xea20('0xf')]['message']);return _0x450bd9(_0x4806d1['error'][_0xea20('0x11')]);}else{logger[_0xea20('0x12')](_0xea20('0xa'),_0x32d1b0,_0xea20('0xb'));_0x450bd9(_0x4806d1[_0xea20('0x13')][_0xea20('0x11')]);}})[_0xea20('0x14')](function(_0x15c21f){logger[_0xea20('0xf')]('TeamVoiceQueue,\x20%s,\x20%s',_0x32d1b0,_0x15c21f);_0x2965a6(_0x15c21f);});});}
\ No newline at end of file
+var _0x5c37=['moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util'];(function(_0x5a4487,_0x3d0fe8){var _0xb77577=function(_0x8970e6){while(--_0x8970e6){_0x5a4487['push'](_0x5a4487['shift']());}};_0xb77577(++_0x3d0fe8);}(_0x5c37,0x11e));var _0x75c3=function(_0x53b8e0,_0x55d46e){_0x53b8e0=_0x53b8e0-0x0;var _0x10630c=_0x5c37[_0x53b8e0];return _0x10630c;};'use strict';var _=require(_0x75c3('0x0'));var util=require(_0x75c3('0x1'));var moment=require(_0x75c3('0x2'));var BPromise=require(_0x75c3('0x3'));var rs=require(_0x75c3('0x4'));var fs=require('fs');var Redis=require(_0x75c3('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x75c3('0x6'));var logger=require(_0x75c3('0x7'))(_0x75c3('0x8'));var config=require('../../config/environment');var jayson=require(_0x75c3('0x9'));var client=jayson[_0x75c3('0xa')][_0x75c3('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3c19fa,_0x47d78b,_0x1c9a68){return new BPromise(function(_0x5b9389,_0x4bf06b){return client[_0x75c3('0xc')](_0x3c19fa,_0x1c9a68)[_0x75c3('0xd')](function(_0x5609c9){logger[_0x75c3('0xe')](_0x75c3('0xf'),_0x47d78b,_0x75c3('0x10'));logger[_0x75c3('0x11')](_0x75c3('0x12'),_0x47d78b,_0x75c3('0x10'),JSON['stringify'](_0x5609c9));if(_0x5609c9['error']){if(_0x5609c9[_0x75c3('0x13')][_0x75c3('0x14')]===0x1f4){logger[_0x75c3('0x13')](_0x75c3('0xf'),_0x47d78b,_0x5609c9[_0x75c3('0x13')]['message']);return _0x4bf06b(_0x5609c9[_0x75c3('0x13')][_0x75c3('0x15')]);}logger[_0x75c3('0x13')](_0x75c3('0xf'),_0x47d78b,_0x5609c9['error'][_0x75c3('0x15')]);return _0x5b9389(_0x5609c9[_0x75c3('0x13')][_0x75c3('0x15')]);}else{logger[_0x75c3('0xe')](_0x75c3('0xf'),_0x47d78b,_0x75c3('0x10'));_0x5b9389(_0x5609c9[_0x75c3('0x16')][_0x75c3('0x15')]);}})[_0x75c3('0x17')](function(_0x4a450c){logger[_0x75c3('0x13')](_0x75c3('0xf'),_0x47d78b,_0x4a450c);_0x4bf06b(_0x4a450c);});});}
\ No newline at end of file
index c696d5d..4a60084 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab00=['./template.controller','get','isAuthenticated','index','/:id','show','post','create','destroy','multer','util','path','express','Router','fs-extra','../../components/interaction/service'];(function(_0x18b485,_0xf838c0){var _0x580f6d=function(_0x17317e){while(--_0x17317e){_0x18b485['push'](_0x18b485['shift']());}};_0x580f6d(++_0xf838c0);}(_0xab00,0x1b9));var _0x0ab0=function(_0x4aa3f5,_0x4f515a){_0x4aa3f5=_0x4aa3f5-0x0;var _0x1bdc82=_0xab00[_0x4aa3f5];return _0x1bdc82;};'use strict';var multer=require(_0x0ab0('0x0'));var util=require(_0x0ab0('0x1'));var path=require(_0x0ab0('0x2'));var timeout=require('connect-timeout');var express=require(_0x0ab0('0x3'));var router=express[_0x0ab0('0x4')]();var fs_extra=require(_0x0ab0('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0ab0('0x6'));var config=require('../../config/environment');var controller=require(_0x0ab0('0x7'));router[_0x0ab0('0x8')]('/',auth[_0x0ab0('0x9')](),controller[_0x0ab0('0xa')]);router[_0x0ab0('0x8')](_0x0ab0('0xb'),auth['isAuthenticated'](),controller[_0x0ab0('0xc')]);router[_0x0ab0('0xd')]('/',auth['isAuthenticated'](),controller[_0x0ab0('0xe')]);router['put'](_0x0ab0('0xb'),auth[_0x0ab0('0x9')](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x0ab0('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0xb0ee=['delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./template.controller','isAuthenticated','index','get','/:id','show','post','create','put','update'];(function(_0x324dac,_0x524176){var _0x4bcf1a=function(_0x16c999){while(--_0x16c999){_0x324dac['push'](_0x324dac['shift']());}};_0x4bcf1a(++_0x524176);}(_0xb0ee,0x18f));var _0xeb0e=function(_0x486f4a,_0x478dc7){_0x486f4a=_0x486f4a-0x0;var _0x135d99=_0xb0ee[_0x486f4a];return _0x135d99;};'use strict';var multer=require('multer');var util=require(_0xeb0e('0x0'));var path=require(_0xeb0e('0x1'));var timeout=require(_0xeb0e('0x2'));var express=require(_0xeb0e('0x3'));var router=express[_0xeb0e('0x4')]();var fs_extra=require(_0xeb0e('0x5'));var auth=require(_0xeb0e('0x6'));var interaction=require(_0xeb0e('0x7'));var config=require(_0xeb0e('0x8'));var controller=require(_0xeb0e('0x9'));router['get']('/',auth[_0xeb0e('0xa')](),controller[_0xeb0e('0xb')]);router[_0xeb0e('0xc')](_0xeb0e('0xd'),auth['isAuthenticated'](),controller[_0xeb0e('0xe')]);router[_0xeb0e('0xf')]('/',auth[_0xeb0e('0xa')](),controller[_0xeb0e('0x10')]);router[_0xeb0e('0x11')](_0xeb0e('0xd'),auth[_0xeb0e('0xa')](),controller[_0xeb0e('0x12')]);router[_0xeb0e('0x13')](_0xeb0e('0xd'),auth[_0xeb0e('0xa')](),controller[_0xeb0e('0x14')]);module[_0xeb0e('0x15')]=router;
\ No newline at end of file
index fbd3984..760588f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02a2=['TEXT','sequelize','exports','STRING'];(function(_0x1f0213,_0x3c3c9e){var _0x2048c4=function(_0x26d0c6){while(--_0x26d0c6){_0x1f0213['push'](_0x1f0213['shift']());}};_0x2048c4(++_0x3c3c9e);}(_0x02a2,0xc1));var _0x202a=function(_0x2abde0,_0x34c56e){_0x2abde0=_0x2abde0-0x0;var _0x33d1e6=_0x02a2[_0x2abde0];return _0x33d1e6;};'use strict';var Sequelize=require(_0x202a('0x0'));module[_0x202a('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x202a('0x2')]},'html':{'type':Sequelize[_0x202a('0x3')]}};
\ No newline at end of file
+var _0x209e=['exports','STRING','TEXT'];(function(_0x16f318,_0xdb0ef3){var _0x56a381=function(_0x192604){while(--_0x192604){_0x16f318['push'](_0x16f318['shift']());}};_0x56a381(++_0xdb0ef3);}(_0x209e,0x189));var _0xe209=function(_0x536ee,_0x1b8acc){_0x536ee=_0x536ee-0x0;var _0x228d4d=_0x209e[_0x536ee];return _0x228d4d;};'use strict';var Sequelize=require('sequelize');module[_0xe209('0x0')]={'name':{'type':Sequelize[_0xe209('0x1')]},'description':{'type':Sequelize[_0xe209('0x1')]},'html':{'type':Sequelize[_0xe209('0x2')]}};
\ No newline at end of file
index 92a0647..55f9f75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27ed=['body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','get','Templates','end','stack','name','send','index','map','Template','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','includeAll','include','rows','show','params','find','catch','create'];(function(_0x1d24eb,_0x12295b){var _0x1dc576=function(_0x4d5770){while(--_0x4d5770){_0x1d24eb['push'](_0x1d24eb['shift']());}};_0x1dc576(++_0x12295b);}(_0x27ed,0xae));var _0xd27e=function(_0x388edf,_0x12d6d2){_0x388edf=_0x388edf-0x0;var _0xffe643=_0x27ed[_0x388edf];return _0xffe643;};'use strict';var emlformat=require(_0xd27e('0x0'));var rimraf=require(_0xd27e('0x1'));var zipdir=require(_0xd27e('0x2'));var jsonpatch=require(_0xd27e('0x3'));var rp=require(_0xd27e('0x4'));var moment=require('moment');var BPromise=require(_0xd27e('0x5'));var Mustache=require(_0xd27e('0x6'));var util=require(_0xd27e('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xd27e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd27e('0x9'));var squel=require(_0xd27e('0xa'));var crypto=require(_0xd27e('0xb'));var jsforce=require(_0xd27e('0xc'));var deskjs=require(_0xd27e('0xd'));var toCsv=require(_0xd27e('0x8'));var querystring=require(_0xd27e('0xe'));var Papa=require(_0xd27e('0xf'));var Redis=require(_0xd27e('0x10'));var authService=require(_0xd27e('0x11'));var qs=require(_0xd27e('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xd27e('0x13'));var utils=require('../../config/utils');var config=require(_0xd27e('0x14'));var licenseUtil=require(_0xd27e('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1a02cc,_0x25493c){_0x25493c=_0x25493c||0xcc;return function(_0x5ea393){if(_0x5ea393){return _0x1a02cc[_0xd27e('0x16')](_0x25493c);}return _0x1a02cc[_0xd27e('0x17')](_0x25493c)['end']();};}function respondWithResult(_0x14d855,_0x2c589c){_0x2c589c=_0x2c589c||0xc8;return function(_0x53d6d9){if(_0x53d6d9){return _0x14d855[_0xd27e('0x17')](_0x2c589c)[_0xd27e('0x18')](_0x53d6d9);}};}function respondWithFilteredResult(_0x3c2cdd,_0x36c099){return function(_0x53f123){if(_0x53f123){var _0x39f4ba=typeof _0x36c099[_0xd27e('0x19')]===_0xd27e('0x1a')&&typeof _0x36c099[_0xd27e('0x1b')]===_0xd27e('0x1a');var _0x1205f8=_0x53f123['count'];var _0x5b62b7=_0x39f4ba?0x0:_0x36c099['offset'];var _0x433117=_0x39f4ba?_0x53f123[_0xd27e('0x1c')]:_0x36c099[_0xd27e('0x19')]+_0x36c099['limit'];var _0x311b96;if(_0x433117>=_0x1205f8){_0x433117=_0x1205f8;_0x311b96=0xc8;}else{_0x311b96=0xce;}_0x3c2cdd[_0xd27e('0x17')](_0x311b96);return _0x3c2cdd[_0xd27e('0x1d')](_0xd27e('0x1e'),_0x5b62b7+'-'+_0x433117+'/'+_0x1205f8)['json'](_0x53f123);}return null;};}function patchUpdates(_0x21cdef){return function(_0x21dd09){try{jsonpatch[_0xd27e('0x1f')](_0x21dd09,_0x21cdef,!![]);}catch(_0x421cd5){return BPromise[_0xd27e('0x20')](_0x421cd5);}return _0x21dd09[_0xd27e('0x21')]();};}function saveUpdates(_0x44a157,_0x69ada6){return function(_0x3ce496){if(_0x3ce496){return _0x3ce496['update'](_0x44a157)[_0xd27e('0x22')](function(_0x1f9c6f){return _0x1f9c6f;});}return null;};}function removeEntity(_0x355089,_0x2e159d){return function(_0x40db2e){if(_0x40db2e){return _0x40db2e[_0xd27e('0x23')]()[_0xd27e('0x22')](function(){var _0x9f290e=_0x40db2e[_0xd27e('0x24')]({'plain':!![]});var _0x22149c=_0xd27e('0x25');return db['UserProfileResource'][_0xd27e('0x23')]({'where':{'type':_0x22149c,'resourceId':_0x9f290e['id']}})[_0xd27e('0x22')](function(){return _0x40db2e;});})[_0xd27e('0x22')](function(){_0x355089[_0xd27e('0x17')](0xcc)[_0xd27e('0x26')]();});}};}function handleEntityNotFound(_0x4b9abe,_0x2828da){return function(_0x104801){if(!_0x104801){_0x4b9abe[_0xd27e('0x16')](0x194);}return _0x104801;};}function handleError(_0x2237f9,_0x10a305){_0x10a305=_0x10a305||0x1f4;return function(_0x4e7707){logger['error'](_0x4e7707[_0xd27e('0x27')]);if(_0x4e7707[_0xd27e('0x28')]){delete _0x4e7707['name'];}_0x2237f9[_0xd27e('0x17')](_0x10a305)[_0xd27e('0x29')](_0x4e7707);};}exports[_0xd27e('0x2a')]=function(_0x356e3b,_0x2db35e){var _0x288c4c={},_0x5ba130={},_0x33589f={'count':0x0,'rows':[]};var _0xca9ca1=_[_0xd27e('0x2b')](db[_0xd27e('0x2c')]['rawAttributes'],function(_0x73b99b){return{'name':_0x73b99b[_0xd27e('0x2d')],'type':_0x73b99b[_0xd27e('0x2e')][_0xd27e('0x2f')]};});_0x5ba130[_0xd27e('0x30')]=_[_0xd27e('0x2b')](_0xca9ca1,_0xd27e('0x28'));_0x5ba130[_0xd27e('0x31')]=_[_0xd27e('0x32')](_0x356e3b[_0xd27e('0x31')]);_0x5ba130[_0xd27e('0x33')]=_['intersection'](_0x5ba130['model'],_0x5ba130[_0xd27e('0x31')]);_0x288c4c[_0xd27e('0x34')]=_[_0xd27e('0x35')](_0x5ba130['model'],qs[_0xd27e('0x36')](_0x356e3b[_0xd27e('0x31')][_0xd27e('0x36')]));_0x288c4c[_0xd27e('0x34')]=_0x288c4c[_0xd27e('0x34')][_0xd27e('0x37')]?_0x288c4c[_0xd27e('0x34')]:_0x5ba130[_0xd27e('0x30')];if(!_0x356e3b[_0xd27e('0x31')][_0xd27e('0x38')](_0xd27e('0x39'))){_0x288c4c[_0xd27e('0x1b')]=qs[_0xd27e('0x1b')](_0x356e3b[_0xd27e('0x31')][_0xd27e('0x1b')]);_0x288c4c[_0xd27e('0x19')]=qs['offset'](_0x356e3b[_0xd27e('0x31')][_0xd27e('0x19')]);}_0x288c4c['order']=qs['sort'](_0x356e3b['query'][_0xd27e('0x3a')]);_0x288c4c[_0xd27e('0x3b')]=qs[_0xd27e('0x33')](_[_0xd27e('0x3c')](_0x356e3b[_0xd27e('0x31')],_0x5ba130[_0xd27e('0x33')]),_0xca9ca1);if(_0x356e3b['query'][_0xd27e('0x3d')]){_0x288c4c[_0xd27e('0x3b')]=_[_0xd27e('0x3e')](_0x288c4c['where'],{'$or':_['map'](_0xca9ca1,function(_0x4b1604){if(_0x4b1604['type']!=='VIRTUAL'){var _0xd9e530={};_0xd9e530[_0x4b1604[_0xd27e('0x28')]]={'$like':'%'+_0x356e3b['query'][_0xd27e('0x3d')]+'%'};return _0xd9e530;}})});}_0x288c4c=_[_0xd27e('0x3e')]({},_0x288c4c,_0x356e3b[_0xd27e('0x3f')]);var _0x3fc2e7={'where':_0x288c4c[_0xd27e('0x3b')]};return db[_0xd27e('0x2c')]['count'](_0x3fc2e7)[_0xd27e('0x22')](function(_0x52eadb){_0x33589f['count']=_0x52eadb;if(_0x356e3b['query'][_0xd27e('0x40')]){_0x288c4c[_0xd27e('0x41')]=[{'all':!![]}];}return db[_0xd27e('0x2c')]['findAll'](_0x288c4c);})['then'](function(_0xd9d0c3){_0x33589f[_0xd27e('0x42')]=_0xd9d0c3;return _0x33589f;})[_0xd27e('0x22')](respondWithFilteredResult(_0x2db35e,_0x288c4c))['catch'](handleError(_0x2db35e,null));};exports[_0xd27e('0x43')]=function(_0x494fab,_0x5ad1d9){var _0x516797={'raw':!![],'where':{'id':_0x494fab[_0xd27e('0x44')]['id']}},_0x12640f={};_0x12640f['model']=_[_0xd27e('0x32')](db[_0xd27e('0x2c')]['rawAttributes']);_0x12640f[_0xd27e('0x31')]=_[_0xd27e('0x32')](_0x494fab[_0xd27e('0x31')]);_0x12640f['filters']=_[_0xd27e('0x35')](_0x12640f[_0xd27e('0x30')],_0x12640f['query']);_0x516797[_0xd27e('0x34')]=_[_0xd27e('0x35')](_0x12640f[_0xd27e('0x30')],qs['fields'](_0x494fab['query']['fields']));_0x516797[_0xd27e('0x34')]=_0x516797[_0xd27e('0x34')][_0xd27e('0x37')]?_0x516797[_0xd27e('0x34')]:_0x12640f[_0xd27e('0x30')];if(_0x494fab['query']['includeAll']){_0x516797[_0xd27e('0x41')]=[{'all':!![]}];}_0x516797=_[_0xd27e('0x3e')]({},_0x516797,_0x494fab[_0xd27e('0x3f')]);return db[_0xd27e('0x2c')][_0xd27e('0x45')](_0x516797)['then'](handleEntityNotFound(_0x5ad1d9,null))['then'](respondWithResult(_0x5ad1d9,null))[_0xd27e('0x46')](handleError(_0x5ad1d9,null));};exports[_0xd27e('0x47')]=function(_0x203f19,_0xe0545e){return db[_0xd27e('0x2c')][_0xd27e('0x47')](_0x203f19[_0xd27e('0x48')],{})[_0xd27e('0x22')](function(_0x145de0){var _0x34bd02=_0x203f19[_0xd27e('0x49')][_0xd27e('0x24')]({'plain':!![]});if(!_0x34bd02)throw new Error(_0xd27e('0x4a'));if(_0x34bd02[_0xd27e('0x4b')]===_0xd27e('0x49')){var _0x15f318=_0x145de0[_0xd27e('0x24')]({'plain':!![]});var _0x22e888='Templates';return db[_0xd27e('0x4c')]['find']({'where':{'name':_0x22e888,'userProfileId':_0x34bd02['userProfileId']},'raw':!![]})[_0xd27e('0x22')](function(_0x327b09){if(_0x327b09&&_0x327b09[_0xd27e('0x4d')]===0x0){return db[_0xd27e('0x4e')][_0xd27e('0x47')]({'name':_0x15f318[_0xd27e('0x28')],'resourceId':_0x15f318['id'],'type':_0x327b09[_0xd27e('0x28')],'sectionId':_0x327b09['id']},{})[_0xd27e('0x22')](function(){return _0x145de0;});}else{return _0x145de0;}})[_0xd27e('0x46')](function(_0x592d86){logger[_0xd27e('0x4f')](_0xd27e('0x50'),_0x592d86);throw _0x592d86;});}return _0x145de0;})[_0xd27e('0x22')](respondWithResult(_0xe0545e,0xc9))[_0xd27e('0x46')](handleError(_0xe0545e,null));};exports[_0xd27e('0x51')]=function(_0x50ce54,_0x13b431){if(_0x50ce54[_0xd27e('0x48')]['id']){delete _0x50ce54[_0xd27e('0x48')]['id'];}return db[_0xd27e('0x2c')][_0xd27e('0x45')]({'where':{'id':_0x50ce54[_0xd27e('0x44')]['id']}})[_0xd27e('0x22')](handleEntityNotFound(_0x13b431,null))[_0xd27e('0x22')](saveUpdates(_0x50ce54['body'],null))[_0xd27e('0x22')](respondWithResult(_0x13b431,null))[_0xd27e('0x46')](handleError(_0x13b431,null));};exports[_0xd27e('0x23')]=function(_0x3ba9a5,_0xe1dd5e){return db['Template'][_0xd27e('0x45')]({'where':{'id':_0x3ba9a5[_0xd27e('0x44')]['id']}})[_0xd27e('0x22')](handleEntityNotFound(_0xe1dd5e,null))[_0xd27e('0x22')](removeEntity(_0xe1dd5e,null))[_0xd27e('0x46')](handleError(_0xe1dd5e,null));};
\ No newline at end of file
+var _0x08bb=['keys','query','attributes','fields','hasOwnProperty','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','Template','includeAll','include','rows','show','params','rawAttributes','intersection','length','find','create','body','user','UserProfileSection','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','catch','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Templates','UserProfileResource','end','name','send','index','map','fieldName','key','model'];(function(_0x5f5431,_0x908c84){var _0x46f69c=function(_0x3f21aa){while(--_0x3f21aa){_0x5f5431['push'](_0x5f5431['shift']());}};_0x46f69c(++_0x908c84);}(_0x08bb,0x165));var _0xb08b=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0x08bb[_0x1caf6a];return _0x1bf493;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb08b('0x0'));var zipdir=require(_0xb08b('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb08b('0x2'));var moment=require(_0xb08b('0x3'));var BPromise=require(_0xb08b('0x4'));var Mustache=require(_0xb08b('0x5'));var util=require(_0xb08b('0x6'));var path=require(_0xb08b('0x7'));var sox=require(_0xb08b('0x8'));var csv=require(_0xb08b('0x9'));var ejs=require(_0xb08b('0xa'));var fs=require('fs');var fs_extra=require(_0xb08b('0xb'));var _=require('lodash');var squel=require(_0xb08b('0xc'));var crypto=require(_0xb08b('0xd'));var jsforce=require(_0xb08b('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xb08b('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xb08b('0x10'));var qs=require(_0xb08b('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb08b('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0xb08b('0x13'));var config=require(_0xb08b('0x14'));var licenseUtil=require(_0xb08b('0x15'));var db=require(_0xb08b('0x16'))['db'];function respondWithStatusCode(_0x3f12da,_0x247736){_0x247736=_0x247736||0xcc;return function(_0x124db7){if(_0x124db7){return _0x3f12da['sendStatus'](_0x247736);}return _0x3f12da[_0xb08b('0x17')](_0x247736)['end']();};}function respondWithResult(_0x336133,_0x364e5a){_0x364e5a=_0x364e5a||0xc8;return function(_0x4df0f9){if(_0x4df0f9){return _0x336133[_0xb08b('0x17')](_0x364e5a)[_0xb08b('0x18')](_0x4df0f9);}};}function respondWithFilteredResult(_0x315dda,_0x211964){return function(_0x23dc88){if(_0x23dc88){var _0x514571=typeof _0x211964[_0xb08b('0x19')]===_0xb08b('0x1a')&&typeof _0x211964[_0xb08b('0x1b')]===_0xb08b('0x1a');var _0x1a1f56=_0x23dc88[_0xb08b('0x1c')];var _0xc64964=_0x514571?0x0:_0x211964[_0xb08b('0x19')];var _0x412da7=_0x514571?_0x23dc88[_0xb08b('0x1c')]:_0x211964[_0xb08b('0x19')]+_0x211964['limit'];var _0x139ecb;if(_0x412da7>=_0x1a1f56){_0x412da7=_0x1a1f56;_0x139ecb=0xc8;}else{_0x139ecb=0xce;}_0x315dda[_0xb08b('0x17')](_0x139ecb);return _0x315dda[_0xb08b('0x1d')](_0xb08b('0x1e'),_0xc64964+'-'+_0x412da7+'/'+_0x1a1f56)[_0xb08b('0x18')](_0x23dc88);}return null;};}function patchUpdates(_0x347d3c){return function(_0x1ad709){try{jsonpatch[_0xb08b('0x1f')](_0x1ad709,_0x347d3c,!![]);}catch(_0x63e62c){return BPromise[_0xb08b('0x20')](_0x63e62c);}return _0x1ad709[_0xb08b('0x21')]();};}function saveUpdates(_0x1de44a,_0x315fe3){return function(_0x2283f4){if(_0x2283f4){return _0x2283f4[_0xb08b('0x22')](_0x1de44a)[_0xb08b('0x23')](function(_0x51f8ec){return _0x51f8ec;});}return null;};}function removeEntity(_0xb8ff7e,_0x18c440){return function(_0x5006fb){if(_0x5006fb){return _0x5006fb[_0xb08b('0x24')]()[_0xb08b('0x23')](function(){var _0x4005c8=_0x5006fb[_0xb08b('0x25')]({'plain':!![]});var _0x129996=_0xb08b('0x26');return db[_0xb08b('0x27')]['destroy']({'where':{'type':_0x129996,'resourceId':_0x4005c8['id']}})[_0xb08b('0x23')](function(){return _0x5006fb;});})[_0xb08b('0x23')](function(){_0xb8ff7e[_0xb08b('0x17')](0xcc)[_0xb08b('0x28')]();});}};}function handleEntityNotFound(_0x96b039,_0xba9af7){return function(_0x2207fd){if(!_0x2207fd){_0x96b039['sendStatus'](0x194);}return _0x2207fd;};}function handleError(_0x944354,_0x20f186){_0x20f186=_0x20f186||0x1f4;return function(_0x3470a1){logger['error'](_0x3470a1['stack']);if(_0x3470a1[_0xb08b('0x29')]){delete _0x3470a1[_0xb08b('0x29')];}_0x944354[_0xb08b('0x17')](_0x20f186)[_0xb08b('0x2a')](_0x3470a1);};}exports[_0xb08b('0x2b')]=function(_0x56661b,_0x535979){var _0x5c7eb4={},_0x32ee4f={},_0xb66c1d={'count':0x0,'rows':[]};var _0x55f0b0=_[_0xb08b('0x2c')](db['Template']['rawAttributes'],function(_0x245c31){return{'name':_0x245c31[_0xb08b('0x2d')],'type':_0x245c31['type'][_0xb08b('0x2e')]};});_0x32ee4f[_0xb08b('0x2f')]=_['map'](_0x55f0b0,_0xb08b('0x29'));_0x32ee4f['query']=_[_0xb08b('0x30')](_0x56661b[_0xb08b('0x31')]);_0x32ee4f['filters']=_['intersection'](_0x32ee4f[_0xb08b('0x2f')],_0x32ee4f[_0xb08b('0x31')]);_0x5c7eb4[_0xb08b('0x32')]=_['intersection'](_0x32ee4f[_0xb08b('0x2f')],qs[_0xb08b('0x33')](_0x56661b[_0xb08b('0x31')][_0xb08b('0x33')]));_0x5c7eb4[_0xb08b('0x32')]=_0x5c7eb4[_0xb08b('0x32')]['length']?_0x5c7eb4[_0xb08b('0x32')]:_0x32ee4f[_0xb08b('0x2f')];if(!_0x56661b[_0xb08b('0x31')][_0xb08b('0x34')]('nolimit')){_0x5c7eb4[_0xb08b('0x1b')]=qs['limit'](_0x56661b[_0xb08b('0x31')][_0xb08b('0x1b')]);_0x5c7eb4[_0xb08b('0x19')]=qs['offset'](_0x56661b[_0xb08b('0x31')][_0xb08b('0x19')]);}_0x5c7eb4[_0xb08b('0x35')]=qs[_0xb08b('0x36')](_0x56661b[_0xb08b('0x31')]['sort']);_0x5c7eb4[_0xb08b('0x37')]=qs[_0xb08b('0x38')](_[_0xb08b('0x39')](_0x56661b['query'],_0x32ee4f['filters']),_0x55f0b0);if(_0x56661b[_0xb08b('0x31')][_0xb08b('0x3a')]){_0x5c7eb4[_0xb08b('0x37')]=_[_0xb08b('0x3b')](_0x5c7eb4[_0xb08b('0x37')],{'$or':_[_0xb08b('0x2c')](_0x55f0b0,function(_0x13840f){if(_0x13840f[_0xb08b('0x3c')]!==_0xb08b('0x3d')){var _0x5b3ac5={};_0x5b3ac5[_0x13840f[_0xb08b('0x29')]]={'$like':'%'+_0x56661b[_0xb08b('0x31')][_0xb08b('0x3a')]+'%'};return _0x5b3ac5;}})});}_0x5c7eb4=_[_0xb08b('0x3b')]({},_0x5c7eb4,_0x56661b[_0xb08b('0x3e')]);var _0x422a19={'where':_0x5c7eb4[_0xb08b('0x37')]};return db[_0xb08b('0x3f')][_0xb08b('0x1c')](_0x422a19)[_0xb08b('0x23')](function(_0x6ec4b2){_0xb66c1d[_0xb08b('0x1c')]=_0x6ec4b2;if(_0x56661b[_0xb08b('0x31')][_0xb08b('0x40')]){_0x5c7eb4[_0xb08b('0x41')]=[{'all':!![]}];}return db[_0xb08b('0x3f')]['findAll'](_0x5c7eb4);})[_0xb08b('0x23')](function(_0x5d4f2c){_0xb66c1d[_0xb08b('0x42')]=_0x5d4f2c;return _0xb66c1d;})[_0xb08b('0x23')](respondWithFilteredResult(_0x535979,_0x5c7eb4))['catch'](handleError(_0x535979,null));};exports[_0xb08b('0x43')]=function(_0x10e9dd,_0x54ee7e){var _0x5940d5={'raw':!![],'where':{'id':_0x10e9dd[_0xb08b('0x44')]['id']}},_0x3260ec={};_0x3260ec[_0xb08b('0x2f')]=_['keys'](db['Template'][_0xb08b('0x45')]);_0x3260ec[_0xb08b('0x31')]=_[_0xb08b('0x30')](_0x10e9dd[_0xb08b('0x31')]);_0x3260ec[_0xb08b('0x38')]=_[_0xb08b('0x46')](_0x3260ec[_0xb08b('0x2f')],_0x3260ec[_0xb08b('0x31')]);_0x5940d5[_0xb08b('0x32')]=_[_0xb08b('0x46')](_0x3260ec['model'],qs['fields'](_0x10e9dd[_0xb08b('0x31')][_0xb08b('0x33')]));_0x5940d5[_0xb08b('0x32')]=_0x5940d5[_0xb08b('0x32')][_0xb08b('0x47')]?_0x5940d5['attributes']:_0x3260ec[_0xb08b('0x2f')];if(_0x10e9dd[_0xb08b('0x31')][_0xb08b('0x40')]){_0x5940d5[_0xb08b('0x41')]=[{'all':!![]}];}_0x5940d5=_['merge']({},_0x5940d5,_0x10e9dd[_0xb08b('0x3e')]);return db[_0xb08b('0x3f')][_0xb08b('0x48')](_0x5940d5)[_0xb08b('0x23')](handleEntityNotFound(_0x54ee7e,null))[_0xb08b('0x23')](respondWithResult(_0x54ee7e,null))['catch'](handleError(_0x54ee7e,null));};exports['create']=function(_0x3dd1e4,_0xd0d9fa){return db[_0xb08b('0x3f')][_0xb08b('0x49')](_0x3dd1e4[_0xb08b('0x4a')],{})[_0xb08b('0x23')](function(_0x25a0f1){var _0x577c33=_0x3dd1e4[_0xb08b('0x4b')][_0xb08b('0x25')]({'plain':!![]});if(!_0x577c33)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x577c33['role']==='user'){var _0x309410=_0x25a0f1[_0xb08b('0x25')]({'plain':!![]});var _0x4463dc=_0xb08b('0x26');return db[_0xb08b('0x4c')][_0xb08b('0x48')]({'where':{'name':_0x4463dc,'userProfileId':_0x577c33['userProfileId']},'raw':!![]})[_0xb08b('0x23')](function(_0x1f0338){if(_0x1f0338&&_0x1f0338[_0xb08b('0x4d')]===0x0){return db[_0xb08b('0x27')][_0xb08b('0x49')]({'name':_0x309410[_0xb08b('0x29')],'resourceId':_0x309410['id'],'type':_0x1f0338[_0xb08b('0x29')],'sectionId':_0x1f0338['id']},{})[_0xb08b('0x23')](function(){return _0x25a0f1;});}else{return _0x25a0f1;}})['catch'](function(_0x23188c){logger[_0xb08b('0x4e')](_0xb08b('0x4f'),_0x23188c);throw _0x23188c;});}return _0x25a0f1;})[_0xb08b('0x23')](respondWithResult(_0xd0d9fa,0xc9))['catch'](handleError(_0xd0d9fa,null));};exports[_0xb08b('0x22')]=function(_0x499e62,_0x461378){if(_0x499e62['body']['id']){delete _0x499e62[_0xb08b('0x4a')]['id'];}return db[_0xb08b('0x3f')][_0xb08b('0x48')]({'where':{'id':_0x499e62[_0xb08b('0x44')]['id']}})[_0xb08b('0x23')](handleEntityNotFound(_0x461378,null))['then'](saveUpdates(_0x499e62['body'],null))[_0xb08b('0x23')](respondWithResult(_0x461378,null))['catch'](handleError(_0x461378,null));};exports['destroy']=function(_0x403be5,_0x22fa1b){return db[_0xb08b('0x3f')][_0xb08b('0x48')]({'where':{'id':_0x403be5[_0xb08b('0x44')]['id']}})[_0xb08b('0x23')](handleEntityNotFound(_0x22fa1b,null))['then'](removeEntity(_0x22fa1b,null))[_0xb08b('0x50')](handleError(_0x22fa1b,null));};
\ No newline at end of file
index 964f128..4940fa3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd21=['tools_templates','lodash','../../config/logger','api','bluebird','request-promise','path','rimraf','./template.attributes','exports','define','Template'];(function(_0x2f6ba7,_0x56b8d0){var _0x309075=function(_0x411aea){while(--_0x411aea){_0x2f6ba7['push'](_0x2f6ba7['shift']());}};_0x309075(++_0x56b8d0);}(_0xdd21,0x145));var _0x1dd2=function(_0x458bd0,_0x5f54ad){_0x458bd0=_0x458bd0-0x0;var _0x1f5916=_0xdd21[_0x458bd0];return _0x1f5916;};'use strict';var _=require(_0x1dd2('0x0'));var util=require('util');var logger=require(_0x1dd2('0x1'))(_0x1dd2('0x2'));var moment=require('moment');var BPromise=require(_0x1dd2('0x3'));var rp=require(_0x1dd2('0x4'));var fs=require('fs');var path=require(_0x1dd2('0x5'));var rimraf=require(_0x1dd2('0x6'));var config=require('../../config/environment');var attributes=require(_0x1dd2('0x7'));module[_0x1dd2('0x8')]=function(_0x4645e8,_0x4e9dae){return _0x4645e8[_0x1dd2('0x9')](_0x1dd2('0xa'),attributes,{'tableName':_0x1dd2('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2971=['define','Template','tools_templates','lodash','../../config/logger','moment','bluebird','request-promise','path','./template.attributes','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2971,0x1bb));var _0x1297=function(_0x39f769,_0x120adb){_0x39f769=_0x39f769-0x0;var _0x45338b=_0x2971[_0x39f769];return _0x45338b;};'use strict';var _=require(_0x1297('0x0'));var util=require('util');var logger=require(_0x1297('0x1'))('api');var moment=require(_0x1297('0x2'));var BPromise=require(_0x1297('0x3'));var rp=require(_0x1297('0x4'));var fs=require('fs');var path=require(_0x1297('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x1297('0x6'));module[_0x1297('0x7')]=function(_0x2fe0b5,_0x49d699){return _0x2fe0b5[_0x1297('0x8')](_0x1297('0x9'),attributes,{'tableName':_0x1297('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index be3f2a4..006e7f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf08d=['stringify','error','code','message','result','catch','GetTemplate','Template','findAll','options','raw','attributes','limit','map','include','model','debug','lodash','util','moment','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Template,\x20%s,\x20%s','request\x20sent','Template,\x20%s,\x20%s,\x20%s'];(function(_0x2b27ba,_0xcae1cd){var _0x28a88e=function(_0x3caacb){while(--_0x3caacb){_0x2b27ba['push'](_0x2b27ba['shift']());}};_0x28a88e(++_0xcae1cd);}(_0xf08d,0x6e));var _0xdf08=function(_0x5e6980,_0x4e3ba1){_0x5e6980=_0x5e6980-0x0;var _0x47209a=_0xf08d[_0x5e6980];return _0x47209a;};'use strict';var _=require(_0xdf08('0x0'));var util=require(_0xdf08('0x1'));var moment=require(_0xdf08('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xdf08('0x3'));var config=require(_0xdf08('0x4'));var jayson=require(_0xdf08('0x5'));var client=jayson[_0xdf08('0x6')][_0xdf08('0x7')]({'port':0x232a});function respondWithRpcPromise(_0xc214c4,_0x279e79,_0x234626){return new BPromise(function(_0x5af973,_0x5957a6){return client[_0xdf08('0x8')](_0xc214c4,_0x234626)[_0xdf08('0x9')](function(_0x2db776){logger[_0xdf08('0xa')](_0xdf08('0xb'),_0x279e79,_0xdf08('0xc'));logger['debug'](_0xdf08('0xd'),_0x279e79,_0xdf08('0xc'),JSON[_0xdf08('0xe')](_0x2db776));if(_0x2db776[_0xdf08('0xf')]){if(_0x2db776['error'][_0xdf08('0x10')]===0x1f4){logger[_0xdf08('0xf')]('Template,\x20%s,\x20%s',_0x279e79,_0x2db776[_0xdf08('0xf')]['message']);return _0x5957a6(_0x2db776[_0xdf08('0xf')][_0xdf08('0x11')]);}logger[_0xdf08('0xf')](_0xdf08('0xb'),_0x279e79,_0x2db776[_0xdf08('0xf')][_0xdf08('0x11')]);return _0x5af973(_0x2db776[_0xdf08('0xf')]['message']);}else{logger[_0xdf08('0xa')](_0xdf08('0xb'),_0x279e79,_0xdf08('0xc'));_0x5af973(_0x2db776[_0xdf08('0x12')][_0xdf08('0x11')]);}})[_0xdf08('0x13')](function(_0x3c06d8){logger['error'](_0xdf08('0xb'),_0x279e79,_0x3c06d8);_0x5957a6(_0x3c06d8);});});}exports[_0xdf08('0x14')]=function(_0x5a2357){var _0x35f6f9=this;return new Promise(function(_0x446c0e,_0x48b747){return db[_0xdf08('0x15')][_0xdf08('0x16')]({'raw':_0x5a2357['options']?_0x5a2357[_0xdf08('0x17')][_0xdf08('0x18')]===undefined?!![]:![]:!![],'where':_0x5a2357[_0xdf08('0x17')]?_0x5a2357['options']['where']||null:null,'attributes':_0x5a2357[_0xdf08('0x17')]?_0x5a2357[_0xdf08('0x17')][_0xdf08('0x19')]||null:null,'limit':_0x5a2357[_0xdf08('0x17')]?_0x5a2357[_0xdf08('0x17')][_0xdf08('0x1a')]||null:null,'include':_0x5a2357[_0xdf08('0x17')]?_0x5a2357[_0xdf08('0x17')]['include']?_[_0xdf08('0x1b')](_0x5a2357[_0xdf08('0x17')][_0xdf08('0x1c')],function(_0x1ead16){return{'model':db[_0x1ead16['model']],'as':_0x1ead16['as'],'attributes':_0x1ead16['attributes'],'include':_0x1ead16[_0xdf08('0x1c')]?_[_0xdf08('0x1b')](_0x1ead16[_0xdf08('0x1c')],function(_0x574f24){return{'model':db[_0x574f24[_0xdf08('0x1d')]],'as':_0x574f24['as'],'attributes':_0x574f24[_0xdf08('0x19')],'include':_0x574f24[_0xdf08('0x1c')]?_[_0xdf08('0x1b')](_0x574f24['include'],function(_0x1c918c){return{'model':db[_0x1c918c[_0xdf08('0x1d')]],'as':_0x1c918c['as'],'attributes':_0x1c918c[_0xdf08('0x19')]};}):[]};}):[]};}):[]:[]})[_0xdf08('0x9')](function(_0x48d797){logger[_0xdf08('0xa')]('GetTemplate',_0x5a2357);logger[_0xdf08('0x1e')](_0xdf08('0x14'),_0x5a2357,JSON[_0xdf08('0xe')](_0x48d797));_0x446c0e(_0x48d797);})[_0xdf08('0x13')](function(_0x18a0bf){logger['error'](_0xdf08('0x14'),_0x18a0bf[_0xdf08('0x11')],_0x5a2357);_0x48b747(_0x35f6f9[_0xdf08('0xf')](0x1f4,_0x18a0bf['message']));});});};
\ No newline at end of file
+var _0xd40b=['request\x20sent','debug','error','message','result','Template','findAll','options','raw','where','attributes','limit','include','map','model','GetTemplate','stringify','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Template,\x20%s,\x20%s'];(function(_0x337e1e,_0x168c4d){var _0x408d30=function(_0x171ac8){while(--_0x171ac8){_0x337e1e['push'](_0x337e1e['shift']());}};_0x408d30(++_0x168c4d);}(_0xd40b,0x78));var _0xbd40=function(_0x40db05,_0x2ac741){_0x40db05=_0x40db05-0x0;var _0x1aa325=_0xd40b[_0x40db05];return _0x1aa325;};'use strict';var _=require(_0xbd40('0x0'));var util=require(_0xbd40('0x1'));var moment=require(_0xbd40('0x2'));var BPromise=require(_0xbd40('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbd40('0x4'))['db'];var utils=require(_0xbd40('0x5'));var logger=require(_0xbd40('0x6'))(_0xbd40('0x7'));var config=require(_0xbd40('0x8'));var jayson=require(_0xbd40('0x9'));var client=jayson[_0xbd40('0xa')][_0xbd40('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2a3444,_0x3e51ff,_0x4eddd9){return new BPromise(function(_0x595852,_0x5b1bc7){return client[_0xbd40('0xc')](_0x2a3444,_0x4eddd9)[_0xbd40('0xd')](function(_0x5d8a21){logger[_0xbd40('0xe')](_0xbd40('0xf'),_0x3e51ff,_0xbd40('0x10'));logger[_0xbd40('0x11')]('Template,\x20%s,\x20%s,\x20%s',_0x3e51ff,_0xbd40('0x10'),JSON['stringify'](_0x5d8a21));if(_0x5d8a21[_0xbd40('0x12')]){if(_0x5d8a21[_0xbd40('0x12')]['code']===0x1f4){logger[_0xbd40('0x12')](_0xbd40('0xf'),_0x3e51ff,_0x5d8a21[_0xbd40('0x12')][_0xbd40('0x13')]);return _0x5b1bc7(_0x5d8a21['error'][_0xbd40('0x13')]);}logger[_0xbd40('0x12')](_0xbd40('0xf'),_0x3e51ff,_0x5d8a21[_0xbd40('0x12')][_0xbd40('0x13')]);return _0x595852(_0x5d8a21['error'][_0xbd40('0x13')]);}else{logger['info'](_0xbd40('0xf'),_0x3e51ff,_0xbd40('0x10'));_0x595852(_0x5d8a21[_0xbd40('0x14')][_0xbd40('0x13')]);}})['catch'](function(_0x342627){logger['error'](_0xbd40('0xf'),_0x3e51ff,_0x342627);_0x5b1bc7(_0x342627);});});}exports['GetTemplate']=function(_0x2a1c24){var _0x26769d=this;return new Promise(function(_0x45cbe7,_0x196360){return db[_0xbd40('0x15')][_0xbd40('0x16')]({'raw':_0x2a1c24['options']?_0x2a1c24[_0xbd40('0x17')][_0xbd40('0x18')]===undefined?!![]:![]:!![],'where':_0x2a1c24[_0xbd40('0x17')]?_0x2a1c24[_0xbd40('0x17')][_0xbd40('0x19')]||null:null,'attributes':_0x2a1c24[_0xbd40('0x17')]?_0x2a1c24[_0xbd40('0x17')][_0xbd40('0x1a')]||null:null,'limit':_0x2a1c24['options']?_0x2a1c24['options'][_0xbd40('0x1b')]||null:null,'include':_0x2a1c24['options']?_0x2a1c24[_0xbd40('0x17')][_0xbd40('0x1c')]?_[_0xbd40('0x1d')](_0x2a1c24[_0xbd40('0x17')]['include'],function(_0x54da25){return{'model':db[_0x54da25[_0xbd40('0x1e')]],'as':_0x54da25['as'],'attributes':_0x54da25[_0xbd40('0x1a')],'include':_0x54da25[_0xbd40('0x1c')]?_[_0xbd40('0x1d')](_0x54da25[_0xbd40('0x1c')],function(_0x3ef74c){return{'model':db[_0x3ef74c[_0xbd40('0x1e')]],'as':_0x3ef74c['as'],'attributes':_0x3ef74c[_0xbd40('0x1a')],'include':_0x3ef74c[_0xbd40('0x1c')]?_['map'](_0x3ef74c[_0xbd40('0x1c')],function(_0x165703){return{'model':db[_0x165703[_0xbd40('0x1e')]],'as':_0x165703['as'],'attributes':_0x165703[_0xbd40('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x307c14){logger[_0xbd40('0xe')]('GetTemplate',_0x2a1c24);logger[_0xbd40('0x11')](_0xbd40('0x1f'),_0x2a1c24,JSON[_0xbd40('0x20')](_0x307c14));_0x45cbe7(_0x307c14);})[_0xbd40('0x21')](function(_0x53738a){logger[_0xbd40('0x12')](_0xbd40('0x1f'),_0x53738a[_0xbd40('0x13')],_0x2a1c24);_0x196360(_0x26769d[_0xbd40('0x12')](0x1f4,_0x53738a[_0xbd40('0x13')]));});});};
\ No newline at end of file
index 5797004..685ccf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabc1=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./trigger.controller','get','index','isAuthenticated','show','/:id/all_conditions','getAllConditions','/:id/any_conditions','getAnyConditions','/:id/actions','getActions','post','create','addAnyCondition','addAction','put','/:id','update','delete','exports','multer'];(function(_0x467d11,_0xe893d8){var _0x569198=function(_0x7ff953){while(--_0x7ff953){_0x467d11['push'](_0x467d11['shift']());}};_0x569198(++_0xe893d8);}(_0xabc1,0x13e));var _0x1abc=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xabc1[_0x321bb2];return _0x9c12ed;};'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(_0x1abc('0x4'));var router=express[_0x1abc('0x5')]();var fs_extra=require(_0x1abc('0x6'));var auth=require(_0x1abc('0x7'));var interaction=require(_0x1abc('0x8'));var config=require('../../config/environment');var controller=require(_0x1abc('0x9'));router[_0x1abc('0xa')]('/',auth['isAuthenticated'](),controller[_0x1abc('0xb')]);router[_0x1abc('0xa')]('/:id',auth[_0x1abc('0xc')](),controller[_0x1abc('0xd')]);router[_0x1abc('0xa')](_0x1abc('0xe'),auth[_0x1abc('0xc')](),controller[_0x1abc('0xf')]);router['get'](_0x1abc('0x10'),auth['isAuthenticated'](),controller[_0x1abc('0x11')]);router[_0x1abc('0xa')](_0x1abc('0x12'),auth[_0x1abc('0xc')](),controller[_0x1abc('0x13')]);router[_0x1abc('0x14')]('/',auth[_0x1abc('0xc')](),controller[_0x1abc('0x15')]);router[_0x1abc('0x14')]('/:id/all_conditions',auth[_0x1abc('0xc')](),controller['addAllCondition']);router[_0x1abc('0x14')]('/:id/any_conditions',auth[_0x1abc('0xc')](),controller[_0x1abc('0x16')]);router[_0x1abc('0x14')](_0x1abc('0x12'),auth['isAuthenticated'](),controller[_0x1abc('0x17')]);router[_0x1abc('0x18')](_0x1abc('0x19'),auth[_0x1abc('0xc')](),controller[_0x1abc('0x1a')]);router[_0x1abc('0x1b')](_0x1abc('0x19'),auth['isAuthenticated'](),controller['destroy']);module[_0x1abc('0x1c')]=router;
\ No newline at end of file
+var _0x0b41=['connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./trigger.controller','get','isAuthenticated','index','/:id','show','/:id/all_conditions','getAllConditions','/:id/any_conditions','getAnyConditions','getActions','addAllCondition','post','addAnyCondition','/:id/actions','addAction','put','update','destroy','exports','multer','path'];(function(_0x4dbb87,_0x2e238f){var _0x2f6e90=function(_0x3270df){while(--_0x3270df){_0x4dbb87['push'](_0x4dbb87['shift']());}};_0x2f6e90(++_0x2e238f);}(_0x0b41,0x6a));var _0x10b4=function(_0x59c84f,_0x28ec9d){_0x59c84f=_0x59c84f-0x0;var _0x5d5131=_0x0b41[_0x59c84f];return _0x5d5131;};'use strict';var multer=require(_0x10b4('0x0'));var util=require('util');var path=require(_0x10b4('0x1'));var timeout=require(_0x10b4('0x2'));var express=require('express');var router=express[_0x10b4('0x3')]();var fs_extra=require(_0x10b4('0x4'));var auth=require(_0x10b4('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x10b4('0x6'));var controller=require(_0x10b4('0x7'));router[_0x10b4('0x8')]('/',auth[_0x10b4('0x9')](),controller[_0x10b4('0xa')]);router[_0x10b4('0x8')](_0x10b4('0xb'),auth[_0x10b4('0x9')](),controller[_0x10b4('0xc')]);router[_0x10b4('0x8')](_0x10b4('0xd'),auth[_0x10b4('0x9')](),controller[_0x10b4('0xe')]);router[_0x10b4('0x8')](_0x10b4('0xf'),auth[_0x10b4('0x9')](),controller[_0x10b4('0x10')]);router[_0x10b4('0x8')]('/:id/actions',auth['isAuthenticated'](),controller[_0x10b4('0x11')]);router['post']('/',auth[_0x10b4('0x9')](),controller['create']);router['post'](_0x10b4('0xd'),auth['isAuthenticated'](),controller[_0x10b4('0x12')]);router[_0x10b4('0x13')](_0x10b4('0xf'),auth[_0x10b4('0x9')](),controller[_0x10b4('0x14')]);router[_0x10b4('0x13')](_0x10b4('0x15'),auth[_0x10b4('0x9')](),controller[_0x10b4('0x16')]);router[_0x10b4('0x17')](_0x10b4('0xb'),auth['isAuthenticated'](),controller[_0x10b4('0x18')]);router['delete'](_0x10b4('0xb'),auth[_0x10b4('0x9')](),controller[_0x10b4('0x19')]);module[_0x10b4('0x1a')]=router;
\ No newline at end of file
index b0f3ebd..a058425 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb243=['STRING','BOOLEAN','sequelize','exports'];(function(_0x33f7b6,_0x8ce322){var _0x2cec9f=function(_0x3a8e0d){while(--_0x3a8e0d){_0x33f7b6['push'](_0x33f7b6['shift']());}};_0x2cec9f(++_0x8ce322);}(_0xb243,0x1b6));var _0x3b24=function(_0x4e726e,_0x2a5e74){_0x4e726e=_0x4e726e-0x0;var _0x4f0388=_0xb243[_0x4e726e];return _0x4f0388;};'use strict';var Sequelize=require(_0x3b24('0x0'));module[_0x3b24('0x1')]={'name':{'type':Sequelize[_0x3b24('0x2')]},'channel':{'type':Sequelize[_0x3b24('0x2')]},'description':{'type':Sequelize[_0x3b24('0x2')]},'status':{'type':Sequelize[_0x3b24('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x8f1e=['STRING','BOOLEAN','sequelize','exports'];(function(_0x3cd563,_0x229e53){var _0x3ee04a=function(_0x39cee0){while(--_0x39cee0){_0x3cd563['push'](_0x3cd563['shift']());}};_0x3ee04a(++_0x229e53);}(_0x8f1e,0xc2));var _0xe8f1=function(_0x172459,_0x4a34eb){_0x172459=_0x172459-0x0;var _0x28a544=_0x8f1e[_0x172459];return _0x28a544;};'use strict';var Sequelize=require(_0xe8f1('0x0'));module[_0xe8f1('0x1')]={'name':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xe8f1('0x2')]},'description':{'type':Sequelize[_0xe8f1('0x2')]},'status':{'type':Sequelize[_0xe8f1('0x3')],'defaultValue':![]}};
\ No newline at end of file
index c75a5ee..18e968b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa925=['nolimit','order','where','pick','filter','merge','options','rows','show','params','keys','rawAttributes','includeAll','include','find','catch','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','addAllCondition','TriggerAllId','Condition','addAnyCondition','TriggerAnyId','getAllConditions','findOne','sort','hasOwnProperty','getAnyConditions','addAction','Action','getActions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','ejs','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','count','limit','set','Content-Range','apply','reject','save','then','destroy','get','Triggers','UserProfileResource','end','error','name','send','index','Trigger','fieldName','type','key','map','query','filters','intersection','model','attributes','fields','length'];(function(_0x2785c1,_0x112dd7){var _0xce8107=function(_0x4af51a){while(--_0x4af51a){_0x2785c1['push'](_0x2785c1['shift']());}};_0xce8107(++_0x112dd7);}(_0xa925,0x1aa));var _0x5a92=function(_0x174ef5,_0x256e8e){_0x174ef5=_0x174ef5-0x0;var _0x1cc379=_0xa925[_0x174ef5];return _0x1cc379;};'use strict';var emlformat=require(_0x5a92('0x0'));var rimraf=require(_0x5a92('0x1'));var zipdir=require(_0x5a92('0x2'));var jsonpatch=require(_0x5a92('0x3'));var rp=require('request-promise');var moment=require(_0x5a92('0x4'));var BPromise=require(_0x5a92('0x5'));var Mustache=require(_0x5a92('0x6'));var util=require('util');var path=require(_0x5a92('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x5a92('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x5a92('0x9'));var crypto=require(_0x5a92('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x5a92('0xb'));var toCsv=require(_0x5a92('0xc'));var querystring=require(_0x5a92('0xd'));var Papa=require(_0x5a92('0xe'));var Redis=require(_0x5a92('0xf'));var authService=require(_0x5a92('0x10'));var qs=require(_0x5a92('0x11'));var as=require(_0x5a92('0x12'));var hardwareService=require(_0x5a92('0x13'));var logger=require(_0x5a92('0x14'))(_0x5a92('0x15'));var utils=require(_0x5a92('0x16'));var config=require(_0x5a92('0x17'));var licenseUtil=require(_0x5a92('0x18'));var db=require(_0x5a92('0x19'))['db'];function respondWithStatusCode(_0x156509,_0x2fb61f){_0x2fb61f=_0x2fb61f||0xcc;return function(_0x19dd2d){if(_0x19dd2d){return _0x156509[_0x5a92('0x1a')](_0x2fb61f);}return _0x156509[_0x5a92('0x1b')](_0x2fb61f)['end']();};}function respondWithResult(_0xaab199,_0x5d0908){_0x5d0908=_0x5d0908||0xc8;return function(_0x4aa554){if(_0x4aa554){return _0xaab199[_0x5a92('0x1b')](_0x5d0908)[_0x5a92('0x1c')](_0x4aa554);}};}function respondWithFilteredResult(_0x16f34c,_0x1bf911){return function(_0x3b7c38){if(_0x3b7c38){var _0x3753dc=typeof _0x1bf911[_0x5a92('0x1d')]==='undefined'&&typeof _0x1bf911['limit']==='undefined';var _0x357f35=_0x3b7c38['count'];var _0x47bd31=_0x3753dc?0x0:_0x1bf911[_0x5a92('0x1d')];var _0x4421bf=_0x3753dc?_0x3b7c38[_0x5a92('0x1e')]:_0x1bf911[_0x5a92('0x1d')]+_0x1bf911[_0x5a92('0x1f')];var _0x2aa944;if(_0x4421bf>=_0x357f35){_0x4421bf=_0x357f35;_0x2aa944=0xc8;}else{_0x2aa944=0xce;}_0x16f34c['status'](_0x2aa944);return _0x16f34c[_0x5a92('0x20')](_0x5a92('0x21'),_0x47bd31+'-'+_0x4421bf+'/'+_0x357f35)[_0x5a92('0x1c')](_0x3b7c38);}return null;};}function patchUpdates(_0x14e66e){return function(_0x28a909){try{jsonpatch[_0x5a92('0x22')](_0x28a909,_0x14e66e,!![]);}catch(_0x458cfc){return BPromise[_0x5a92('0x23')](_0x458cfc);}return _0x28a909[_0x5a92('0x24')]();};}function saveUpdates(_0x2a7863,_0x3d6644){return function(_0x5dc615){if(_0x5dc615){return _0x5dc615['update'](_0x2a7863)[_0x5a92('0x25')](function(_0x2476d5){return _0x2476d5;});}return null;};}function removeEntity(_0x56482d,_0x2c6840){return function(_0x3080b2){if(_0x3080b2){return _0x3080b2[_0x5a92('0x26')]()[_0x5a92('0x25')](function(){var _0x5ba382=_0x3080b2[_0x5a92('0x27')]({'plain':!![]});var _0x3bd846=_0x5a92('0x28');return db[_0x5a92('0x29')]['destroy']({'where':{'type':_0x3bd846,'resourceId':_0x5ba382['id']}})[_0x5a92('0x25')](function(){return _0x3080b2;});})['then'](function(){_0x56482d[_0x5a92('0x1b')](0xcc)[_0x5a92('0x2a')]();});}};}function handleEntityNotFound(_0x4c0153,_0x26ff9c){return function(_0x378ce2){if(!_0x378ce2){_0x4c0153[_0x5a92('0x1a')](0x194);}return _0x378ce2;};}function handleError(_0x8c46a0,_0x32c958){_0x32c958=_0x32c958||0x1f4;return function(_0x87425f){logger[_0x5a92('0x2b')](_0x87425f['stack']);if(_0x87425f[_0x5a92('0x2c')]){delete _0x87425f['name'];}_0x8c46a0[_0x5a92('0x1b')](_0x32c958)[_0x5a92('0x2d')](_0x87425f);};}exports[_0x5a92('0x2e')]=function(_0x4b1bbd,_0x4bb510){var _0x5a343b={},_0x3c3530={},_0x549545={'count':0x0,'rows':[]};var _0x5b3560=_['map'](db[_0x5a92('0x2f')]['rawAttributes'],function(_0x8bdc09){return{'name':_0x8bdc09[_0x5a92('0x30')],'type':_0x8bdc09[_0x5a92('0x31')][_0x5a92('0x32')]};});_0x3c3530['model']=_[_0x5a92('0x33')](_0x5b3560,_0x5a92('0x2c'));_0x3c3530[_0x5a92('0x34')]=_['keys'](_0x4b1bbd[_0x5a92('0x34')]);_0x3c3530[_0x5a92('0x35')]=_[_0x5a92('0x36')](_0x3c3530[_0x5a92('0x37')],_0x3c3530[_0x5a92('0x34')]);_0x5a343b[_0x5a92('0x38')]=_[_0x5a92('0x36')](_0x3c3530[_0x5a92('0x37')],qs[_0x5a92('0x39')](_0x4b1bbd[_0x5a92('0x34')][_0x5a92('0x39')]));_0x5a343b[_0x5a92('0x38')]=_0x5a343b[_0x5a92('0x38')][_0x5a92('0x3a')]?_0x5a343b[_0x5a92('0x38')]:_0x3c3530[_0x5a92('0x37')];if(!_0x4b1bbd[_0x5a92('0x34')]['hasOwnProperty'](_0x5a92('0x3b'))){_0x5a343b[_0x5a92('0x1f')]=qs[_0x5a92('0x1f')](_0x4b1bbd[_0x5a92('0x34')][_0x5a92('0x1f')]);_0x5a343b['offset']=qs[_0x5a92('0x1d')](_0x4b1bbd[_0x5a92('0x34')][_0x5a92('0x1d')]);}_0x5a343b[_0x5a92('0x3c')]=qs['sort'](_0x4b1bbd['query']['sort']);_0x5a343b[_0x5a92('0x3d')]=qs[_0x5a92('0x35')](_[_0x5a92('0x3e')](_0x4b1bbd[_0x5a92('0x34')],_0x3c3530[_0x5a92('0x35')]),_0x5b3560);if(_0x4b1bbd[_0x5a92('0x34')][_0x5a92('0x3f')]){_0x5a343b['where']=_['merge'](_0x5a343b[_0x5a92('0x3d')],{'$or':_[_0x5a92('0x33')](_0x5b3560,function(_0x35a24a){if(_0x35a24a['type']!=='VIRTUAL'){var _0x10599e={};_0x10599e[_0x35a24a[_0x5a92('0x2c')]]={'$like':'%'+_0x4b1bbd[_0x5a92('0x34')][_0x5a92('0x3f')]+'%'};return _0x10599e;}})});}_0x5a343b=_[_0x5a92('0x40')]({},_0x5a343b,_0x4b1bbd[_0x5a92('0x41')]);var _0x5de4a6={'where':_0x5a343b['where']};return db['Trigger'][_0x5a92('0x1e')](_0x5de4a6)['then'](function(_0xbf6ab1){_0x549545[_0x5a92('0x1e')]=_0xbf6ab1;if(_0x4b1bbd[_0x5a92('0x34')]['includeAll']){_0x5a343b['include']=[{'all':!![]}];}return db[_0x5a92('0x2f')]['findAll'](_0x5a343b);})['then'](function(_0x49a928){_0x549545[_0x5a92('0x42')]=_0x49a928;return _0x549545;})[_0x5a92('0x25')](respondWithFilteredResult(_0x4bb510,_0x5a343b))['catch'](handleError(_0x4bb510,null));};exports[_0x5a92('0x43')]=function(_0x4e704b,_0x17be01){var _0x429141={'raw':![],'where':{'id':_0x4e704b[_0x5a92('0x44')]['id']}},_0x306863={};_0x306863['model']=_[_0x5a92('0x45')](db[_0x5a92('0x2f')][_0x5a92('0x46')]);_0x306863[_0x5a92('0x34')]=_['keys'](_0x4e704b[_0x5a92('0x34')]);_0x306863[_0x5a92('0x35')]=_[_0x5a92('0x36')](_0x306863[_0x5a92('0x37')],_0x306863[_0x5a92('0x34')]);_0x429141[_0x5a92('0x38')]=_[_0x5a92('0x36')](_0x306863[_0x5a92('0x37')],qs[_0x5a92('0x39')](_0x4e704b[_0x5a92('0x34')][_0x5a92('0x39')]));_0x429141[_0x5a92('0x38')]=_0x429141[_0x5a92('0x38')][_0x5a92('0x3a')]?_0x429141[_0x5a92('0x38')]:_0x306863[_0x5a92('0x37')];if(_0x4e704b[_0x5a92('0x34')][_0x5a92('0x47')]){_0x429141[_0x5a92('0x48')]=[{'all':!![]}];}_0x429141=_[_0x5a92('0x40')]({},_0x429141,_0x4e704b[_0x5a92('0x41')]);return db[_0x5a92('0x2f')][_0x5a92('0x49')](_0x429141)[_0x5a92('0x25')](handleEntityNotFound(_0x17be01,null))['then'](respondWithResult(_0x17be01,null))[_0x5a92('0x4a')](handleError(_0x17be01,null));};exports[_0x5a92('0x4b')]=function(_0x3cd64f,_0x289df3){return db[_0x5a92('0x2f')][_0x5a92('0x4b')](_0x3cd64f[_0x5a92('0x4c')],{})[_0x5a92('0x25')](function(_0x3d7636){var _0x5c5c51=_0x3cd64f[_0x5a92('0x4d')]['get']({'plain':!![]});if(!_0x5c5c51)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5c5c51[_0x5a92('0x4e')]===_0x5a92('0x4d')){var _0x1988ab=_0x3d7636[_0x5a92('0x27')]({'plain':!![]});var _0xe9679e=_0x5a92('0x28');return db[_0x5a92('0x4f')][_0x5a92('0x49')]({'where':{'name':_0xe9679e,'userProfileId':_0x5c5c51[_0x5a92('0x50')]},'raw':!![]})['then'](function(_0xc8cb15){if(_0xc8cb15&&_0xc8cb15[_0x5a92('0x51')]===0x0){return db['UserProfileResource']['create']({'name':_0x1988ab[_0x5a92('0x2c')],'resourceId':_0x1988ab['id'],'type':_0xc8cb15[_0x5a92('0x2c')],'sectionId':_0xc8cb15['id']},{})[_0x5a92('0x25')](function(){return _0x3d7636;});}else{return _0x3d7636;}})['catch'](function(_0x40788f){logger[_0x5a92('0x2b')](_0x5a92('0x52'),_0x40788f);throw _0x40788f;});}return _0x3d7636;})['then'](respondWithResult(_0x289df3,0xc9))[_0x5a92('0x4a')](handleError(_0x289df3,null));};exports[_0x5a92('0x53')]=function(_0x488e39,_0x2b6c89){if(_0x488e39[_0x5a92('0x4c')]['id']){delete _0x488e39['body']['id'];}return db[_0x5a92('0x2f')][_0x5a92('0x49')]({'where':{'id':_0x488e39[_0x5a92('0x44')]['id']}})[_0x5a92('0x25')](handleEntityNotFound(_0x2b6c89,null))['then'](saveUpdates(_0x488e39['body'],null))[_0x5a92('0x25')](respondWithResult(_0x2b6c89,null))['catch'](handleError(_0x2b6c89,null));};exports['destroy']=function(_0x434c1f,_0x4c0ee9){return db[_0x5a92('0x2f')]['find']({'where':{'id':_0x434c1f['params']['id']}})['then'](handleEntityNotFound(_0x4c0ee9,null))['then'](removeEntity(_0x4c0ee9,null))[_0x5a92('0x4a')](handleError(_0x4c0ee9,null));};exports[_0x5a92('0x54')]=function(_0x4fa5af,_0x4b2cfb,_0x3c8373){if(_0x4fa5af[_0x5a92('0x4c')]['id']){delete _0x4fa5af[_0x5a92('0x4c')]['id'];}return db['Trigger'][_0x5a92('0x49')]({'where':{'id':_0x4fa5af[_0x5a92('0x44')]['id']}})[_0x5a92('0x25')](handleEntityNotFound(_0x4b2cfb,null))[_0x5a92('0x25')](function(_0xeb6902){if(_0xeb6902){_0x4fa5af[_0x5a92('0x4c')][_0x5a92('0x55')]=_0xeb6902['id'];return db[_0x5a92('0x56')][_0x5a92('0x4b')](_0x4fa5af[_0x5a92('0x4c')]);}})[_0x5a92('0x25')](respondWithResult(_0x4b2cfb,null))[_0x5a92('0x4a')](handleError(_0x4b2cfb,null));};exports[_0x5a92('0x57')]=function(_0x237536,_0x17a18b,_0x55eff7){if(_0x237536['body']['id']){delete _0x237536['body']['id'];}return db[_0x5a92('0x2f')]['find']({'where':{'id':_0x237536[_0x5a92('0x44')]['id']}})['then'](handleEntityNotFound(_0x17a18b,null))[_0x5a92('0x25')](function(_0x1b1ea1){if(_0x1b1ea1){_0x237536['body'][_0x5a92('0x58')]=_0x1b1ea1['id'];return db['Condition'][_0x5a92('0x4b')](_0x237536[_0x5a92('0x4c')]);}})[_0x5a92('0x25')](respondWithResult(_0x17a18b,null))[_0x5a92('0x4a')](handleError(_0x17a18b,null));};exports[_0x5a92('0x59')]=function(_0x3f1806,_0x44cde9,_0x27eae1){var _0x418b97={};var _0x5274da={};var _0xf5c296;var _0x1fc2a5;return db[_0x5a92('0x2f')][_0x5a92('0x5a')]({'where':{'id':_0x3f1806[_0x5a92('0x44')]['id']}})[_0x5a92('0x25')](handleEntityNotFound(_0x44cde9,null))[_0x5a92('0x25')](function(_0x4976f9){if(_0x4976f9){_0xf5c296=_0x4976f9;_0x5274da[_0x5a92('0x37')]=_[_0x5a92('0x45')](db[_0x5a92('0x56')][_0x5a92('0x46')]);_0x5274da['query']=_[_0x5a92('0x45')](_0x3f1806[_0x5a92('0x34')]);_0x5274da[_0x5a92('0x35')]=_[_0x5a92('0x36')](_0x5274da[_0x5a92('0x37')],_0x5274da[_0x5a92('0x34')]);_0x418b97['attributes']=_[_0x5a92('0x36')](_0x5274da[_0x5a92('0x37')],qs[_0x5a92('0x39')](_0x3f1806[_0x5a92('0x34')][_0x5a92('0x39')]));_0x418b97[_0x5a92('0x38')]=_0x418b97[_0x5a92('0x38')][_0x5a92('0x3a')]?_0x418b97[_0x5a92('0x38')]:_0x5274da[_0x5a92('0x37')];_0x418b97[_0x5a92('0x3c')]=qs['sort'](_0x3f1806[_0x5a92('0x34')][_0x5a92('0x5b')]);_0x418b97['where']=qs[_0x5a92('0x35')](_[_0x5a92('0x3e')](_0x3f1806['query'],_0x5274da[_0x5a92('0x35')]));if(_0x3f1806[_0x5a92('0x34')]['filter']){_0x418b97[_0x5a92('0x3d')]=_[_0x5a92('0x40')](_0x418b97[_0x5a92('0x3d')],{'$or':_['map'](_0x418b97[_0x5a92('0x38')],function(_0x5b146c){var _0x15dad3={};_0x15dad3[_0x5b146c]={'$like':'%'+_0x3f1806['query']['filter']+'%'};return _0x15dad3;})});}_0x418b97=_[_0x5a92('0x40')]({},_0x418b97,_0x3f1806[_0x5a92('0x41')]);return _0xf5c296[_0x5a92('0x59')](_0x418b97);}})[_0x5a92('0x25')](function(_0x466b73){if(_0x466b73){_0x1fc2a5=_0x466b73[_0x5a92('0x3a')];if(!_0x3f1806[_0x5a92('0x34')][_0x5a92('0x5c')](_0x5a92('0x3b'))){_0x418b97[_0x5a92('0x1f')]=qs[_0x5a92('0x1f')](_0x3f1806[_0x5a92('0x34')][_0x5a92('0x1f')]);_0x418b97['offset']=qs[_0x5a92('0x1d')](_0x3f1806[_0x5a92('0x34')][_0x5a92('0x1d')]);}return _0xf5c296['getAllConditions'](_0x418b97);}})[_0x5a92('0x25')](function(_0x58b83e){if(_0x58b83e){return _0x58b83e?{'count':_0x1fc2a5,'rows':_0x58b83e}:null;}})[_0x5a92('0x25')](respondWithResult(_0x44cde9,null))['catch'](handleError(_0x44cde9,null));};exports[_0x5a92('0x5d')]=function(_0x34447d,_0x506740,_0x62496c){var _0x3bb925={};var _0x46cc35={};var _0x2cf488;var _0xaf72b0;return db[_0x5a92('0x2f')][_0x5a92('0x5a')]({'where':{'id':_0x34447d[_0x5a92('0x44')]['id']}})[_0x5a92('0x25')](handleEntityNotFound(_0x506740,null))[_0x5a92('0x25')](function(_0x16195f){if(_0x16195f){_0x2cf488=_0x16195f;_0x46cc35[_0x5a92('0x37')]=_[_0x5a92('0x45')](db[_0x5a92('0x56')][_0x5a92('0x46')]);_0x46cc35[_0x5a92('0x34')]=_[_0x5a92('0x45')](_0x34447d[_0x5a92('0x34')]);_0x46cc35['filters']=_[_0x5a92('0x36')](_0x46cc35[_0x5a92('0x37')],_0x46cc35[_0x5a92('0x34')]);_0x3bb925['attributes']=_['intersection'](_0x46cc35[_0x5a92('0x37')],qs[_0x5a92('0x39')](_0x34447d['query'][_0x5a92('0x39')]));_0x3bb925[_0x5a92('0x38')]=_0x3bb925['attributes'][_0x5a92('0x3a')]?_0x3bb925['attributes']:_0x46cc35[_0x5a92('0x37')];_0x3bb925['order']=qs[_0x5a92('0x5b')](_0x34447d[_0x5a92('0x34')][_0x5a92('0x5b')]);_0x3bb925[_0x5a92('0x3d')]=qs['filters'](_[_0x5a92('0x3e')](_0x34447d[_0x5a92('0x34')],_0x46cc35[_0x5a92('0x35')]));if(_0x34447d[_0x5a92('0x34')][_0x5a92('0x3f')]){_0x3bb925[_0x5a92('0x3d')]=_['merge'](_0x3bb925['where'],{'$or':_['map'](_0x3bb925[_0x5a92('0x38')],function(_0x1922ea){var _0x797bfd={};_0x797bfd[_0x1922ea]={'$like':'%'+_0x34447d[_0x5a92('0x34')][_0x5a92('0x3f')]+'%'};return _0x797bfd;})});}_0x3bb925=_['merge']({},_0x3bb925,_0x34447d[_0x5a92('0x41')]);return _0x2cf488[_0x5a92('0x5d')](_0x3bb925);}})['then'](function(_0x1b7be0){if(_0x1b7be0){_0xaf72b0=_0x1b7be0[_0x5a92('0x3a')];if(!_0x34447d[_0x5a92('0x34')]['hasOwnProperty'](_0x5a92('0x3b'))){_0x3bb925[_0x5a92('0x1f')]=qs[_0x5a92('0x1f')](_0x34447d[_0x5a92('0x34')][_0x5a92('0x1f')]);_0x3bb925[_0x5a92('0x1d')]=qs[_0x5a92('0x1d')](_0x34447d[_0x5a92('0x34')][_0x5a92('0x1d')]);}return _0x2cf488[_0x5a92('0x5d')](_0x3bb925);}})[_0x5a92('0x25')](function(_0x2e6116){if(_0x2e6116){return _0x2e6116?{'count':_0xaf72b0,'rows':_0x2e6116}:null;}})[_0x5a92('0x25')](respondWithResult(_0x506740,null))[_0x5a92('0x4a')](handleError(_0x506740,null));};exports[_0x5a92('0x5e')]=function(_0x1a140b,_0x5533d6,_0x1bd3bf){if(_0x1a140b[_0x5a92('0x4c')]['id']){delete _0x1a140b[_0x5a92('0x4c')]['id'];}return db['Trigger']['find']({'where':{'id':_0x1a140b['params']['id']}})[_0x5a92('0x25')](handleEntityNotFound(_0x5533d6,null))[_0x5a92('0x25')](function(_0x56569a){if(_0x56569a){_0x1a140b[_0x5a92('0x4c')]['TriggerId']=_0x56569a['id'];return db[_0x5a92('0x5f')][_0x5a92('0x4b')](_0x1a140b[_0x5a92('0x4c')]);}})[_0x5a92('0x25')](respondWithResult(_0x5533d6,null))['catch'](handleError(_0x5533d6,null));};exports[_0x5a92('0x60')]=function(_0x28f899,_0x14ad76,_0xea0287){var _0x5c1cb4={};var _0x3186eb={};var _0x52c10d;var _0x4e1986;return db['Trigger'][_0x5a92('0x5a')]({'where':{'id':_0x28f899['params']['id']}})[_0x5a92('0x25')](handleEntityNotFound(_0x14ad76,null))[_0x5a92('0x25')](function(_0x1badf4){if(_0x1badf4){_0x52c10d=_0x1badf4;_0x3186eb[_0x5a92('0x37')]=_['keys'](db[_0x5a92('0x5f')]['rawAttributes']);_0x3186eb[_0x5a92('0x34')]=_[_0x5a92('0x45')](_0x28f899[_0x5a92('0x34')]);_0x3186eb[_0x5a92('0x35')]=_[_0x5a92('0x36')](_0x3186eb[_0x5a92('0x37')],_0x3186eb['query']);_0x5c1cb4[_0x5a92('0x38')]=_['intersection'](_0x3186eb[_0x5a92('0x37')],qs['fields'](_0x28f899[_0x5a92('0x34')]['fields']));_0x5c1cb4[_0x5a92('0x38')]=_0x5c1cb4[_0x5a92('0x38')][_0x5a92('0x3a')]?_0x5c1cb4[_0x5a92('0x38')]:_0x3186eb[_0x5a92('0x37')];_0x5c1cb4[_0x5a92('0x3c')]=qs[_0x5a92('0x5b')](_0x28f899[_0x5a92('0x34')]['sort']);_0x5c1cb4[_0x5a92('0x3d')]=qs[_0x5a92('0x35')](_[_0x5a92('0x3e')](_0x28f899[_0x5a92('0x34')],_0x3186eb[_0x5a92('0x35')]));if(_0x28f899['query'][_0x5a92('0x3f')]){_0x5c1cb4[_0x5a92('0x3d')]=_[_0x5a92('0x40')](_0x5c1cb4[_0x5a92('0x3d')],{'$or':_[_0x5a92('0x33')](_0x5c1cb4['attributes'],function(_0x25539c){var _0x20689e={};_0x20689e[_0x25539c]={'$like':'%'+_0x28f899['query'][_0x5a92('0x3f')]+'%'};return _0x20689e;})});}_0x5c1cb4=_['merge']({},_0x5c1cb4,_0x28f899[_0x5a92('0x41')]);return _0x52c10d[_0x5a92('0x60')](_0x5c1cb4);}})[_0x5a92('0x25')](function(_0x2d3132){if(_0x2d3132){_0x4e1986=_0x2d3132[_0x5a92('0x3a')];if(!_0x28f899[_0x5a92('0x34')][_0x5a92('0x5c')](_0x5a92('0x3b'))){_0x5c1cb4[_0x5a92('0x1f')]=qs[_0x5a92('0x1f')](_0x28f899['query'][_0x5a92('0x1f')]);_0x5c1cb4[_0x5a92('0x1d')]=qs[_0x5a92('0x1d')](_0x28f899[_0x5a92('0x34')][_0x5a92('0x1d')]);}return _0x52c10d[_0x5a92('0x60')](_0x5c1cb4);}})['then'](function(_0x30cdaf){if(_0x30cdaf){return _0x30cdaf?{'count':_0x4e1986,'rows':_0x30cdaf}:null;}})[_0x5a92('0x25')](respondWithResult(_0x14ad76,null))[_0x5a92('0x4a')](handleError(_0x14ad76,null));};
\ No newline at end of file
+var _0xa1ea=['save','update','then','destroy','get','UserProfileResource','error','stack','name','send','index','Trigger','rawAttributes','type','key','map','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','filter','merge','options','count','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Triggers','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addAllCondition','TriggerAllId','Condition','pick','nolimit','getAllConditions','getAnyConditions','TriggerId','Action','getActions','findOne','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','apply'];(function(_0x5eea7c,_0x36a5cf){var _0x314d36=function(_0x26f69d){while(--_0x26f69d){_0x5eea7c['push'](_0x5eea7c['shift']());}};_0x314d36(++_0x36a5cf);}(_0xa1ea,0x1ac));var _0xaa1e=function(_0x230c11,_0x4031d8){_0x230c11=_0x230c11-0x0;var _0x18b059=_0xa1ea[_0x230c11];return _0x18b059;};'use strict';var emlformat=require(_0xaa1e('0x0'));var rimraf=require(_0xaa1e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xaa1e('0x2'));var rp=require(_0xaa1e('0x3'));var moment=require(_0xaa1e('0x4'));var BPromise=require(_0xaa1e('0x5'));var Mustache=require(_0xaa1e('0x6'));var util=require('util');var path=require('path');var sox=require(_0xaa1e('0x7'));var csv=require('to-csv');var ejs=require(_0xaa1e('0x8'));var fs=require('fs');var fs_extra=require(_0xaa1e('0x9'));var _=require(_0xaa1e('0xa'));var squel=require(_0xaa1e('0xb'));var crypto=require(_0xaa1e('0xc'));var jsforce=require(_0xaa1e('0xd'));var deskjs=require(_0xaa1e('0xe'));var toCsv=require('to-csv');var querystring=require(_0xaa1e('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xaa1e('0x10'));var qs=require(_0xaa1e('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xaa1e('0x12'));var logger=require(_0xaa1e('0x13'))(_0xaa1e('0x14'));var utils=require(_0xaa1e('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xaa1e('0x16'));var db=require(_0xaa1e('0x17'))['db'];function respondWithStatusCode(_0x132f29,_0x1e448d){_0x1e448d=_0x1e448d||0xcc;return function(_0x3d3cd8){if(_0x3d3cd8){return _0x132f29[_0xaa1e('0x18')](_0x1e448d);}return _0x132f29[_0xaa1e('0x19')](_0x1e448d)[_0xaa1e('0x1a')]();};}function respondWithResult(_0x4f516a,_0x754665){_0x754665=_0x754665||0xc8;return function(_0x9f9bc4){if(_0x9f9bc4){return _0x4f516a['status'](_0x754665)[_0xaa1e('0x1b')](_0x9f9bc4);}};}function respondWithFilteredResult(_0x285074,_0x810161){return function(_0x3bf560){if(_0x3bf560){var _0xd752c1=typeof _0x810161[_0xaa1e('0x1c')]===_0xaa1e('0x1d')&&typeof _0x810161[_0xaa1e('0x1e')]===_0xaa1e('0x1d');var _0x4f92b8=_0x3bf560['count'];var _0x14e16d=_0xd752c1?0x0:_0x810161[_0xaa1e('0x1c')];var _0x541efa=_0xd752c1?_0x3bf560['count']:_0x810161[_0xaa1e('0x1c')]+_0x810161[_0xaa1e('0x1e')];var _0x24db79;if(_0x541efa>=_0x4f92b8){_0x541efa=_0x4f92b8;_0x24db79=0xc8;}else{_0x24db79=0xce;}_0x285074[_0xaa1e('0x19')](_0x24db79);return _0x285074['set']('Content-Range',_0x14e16d+'-'+_0x541efa+'/'+_0x4f92b8)[_0xaa1e('0x1b')](_0x3bf560);}return null;};}function patchUpdates(_0x2fca05){return function(_0x136879){try{jsonpatch[_0xaa1e('0x1f')](_0x136879,_0x2fca05,!![]);}catch(_0x11999c){return BPromise['reject'](_0x11999c);}return _0x136879[_0xaa1e('0x20')]();};}function saveUpdates(_0x4b5ca7,_0xad89f1){return function(_0x3a6c4a){if(_0x3a6c4a){return _0x3a6c4a[_0xaa1e('0x21')](_0x4b5ca7)[_0xaa1e('0x22')](function(_0x3bddca){return _0x3bddca;});}return null;};}function removeEntity(_0x123479,_0x490760){return function(_0x7ed3f7){if(_0x7ed3f7){return _0x7ed3f7[_0xaa1e('0x23')]()[_0xaa1e('0x22')](function(){var _0x40a7a3=_0x7ed3f7[_0xaa1e('0x24')]({'plain':!![]});var _0x2f66b6='Triggers';return db[_0xaa1e('0x25')][_0xaa1e('0x23')]({'where':{'type':_0x2f66b6,'resourceId':_0x40a7a3['id']}})[_0xaa1e('0x22')](function(){return _0x7ed3f7;});})[_0xaa1e('0x22')](function(){_0x123479[_0xaa1e('0x19')](0xcc)[_0xaa1e('0x1a')]();});}};}function handleEntityNotFound(_0xc8f648,_0x30fbd5){return function(_0x18ce2c){if(!_0x18ce2c){_0xc8f648[_0xaa1e('0x18')](0x194);}return _0x18ce2c;};}function handleError(_0x6395bc,_0x1b8513){_0x1b8513=_0x1b8513||0x1f4;return function(_0x2c8234){logger[_0xaa1e('0x26')](_0x2c8234[_0xaa1e('0x27')]);if(_0x2c8234[_0xaa1e('0x28')]){delete _0x2c8234[_0xaa1e('0x28')];}_0x6395bc[_0xaa1e('0x19')](_0x1b8513)[_0xaa1e('0x29')](_0x2c8234);};}exports[_0xaa1e('0x2a')]=function(_0x359822,_0x18668b){var _0x5ee8f8={},_0x49078f={},_0x1a336f={'count':0x0,'rows':[]};var _0x1b1ff5=_['map'](db[_0xaa1e('0x2b')][_0xaa1e('0x2c')],function(_0x2ed6f1){return{'name':_0x2ed6f1['fieldName'],'type':_0x2ed6f1[_0xaa1e('0x2d')][_0xaa1e('0x2e')]};});_0x49078f['model']=_[_0xaa1e('0x2f')](_0x1b1ff5,'name');_0x49078f[_0xaa1e('0x30')]=_[_0xaa1e('0x31')](_0x359822[_0xaa1e('0x30')]);_0x49078f[_0xaa1e('0x32')]=_['intersection'](_0x49078f[_0xaa1e('0x33')],_0x49078f['query']);_0x5ee8f8[_0xaa1e('0x34')]=_[_0xaa1e('0x35')](_0x49078f['model'],qs['fields'](_0x359822[_0xaa1e('0x30')][_0xaa1e('0x36')]));_0x5ee8f8['attributes']=_0x5ee8f8[_0xaa1e('0x34')][_0xaa1e('0x37')]?_0x5ee8f8['attributes']:_0x49078f[_0xaa1e('0x33')];if(!_0x359822[_0xaa1e('0x30')][_0xaa1e('0x38')]('nolimit')){_0x5ee8f8[_0xaa1e('0x1e')]=qs[_0xaa1e('0x1e')](_0x359822['query'][_0xaa1e('0x1e')]);_0x5ee8f8[_0xaa1e('0x1c')]=qs[_0xaa1e('0x1c')](_0x359822[_0xaa1e('0x30')][_0xaa1e('0x1c')]);}_0x5ee8f8[_0xaa1e('0x39')]=qs[_0xaa1e('0x3a')](_0x359822[_0xaa1e('0x30')][_0xaa1e('0x3a')]);_0x5ee8f8[_0xaa1e('0x3b')]=qs[_0xaa1e('0x32')](_['pick'](_0x359822['query'],_0x49078f['filters']),_0x1b1ff5);if(_0x359822[_0xaa1e('0x30')][_0xaa1e('0x3c')]){_0x5ee8f8['where']=_[_0xaa1e('0x3d')](_0x5ee8f8[_0xaa1e('0x3b')],{'$or':_[_0xaa1e('0x2f')](_0x1b1ff5,function(_0x1251be){if(_0x1251be[_0xaa1e('0x2d')]!=='VIRTUAL'){var _0x40b7fe={};_0x40b7fe[_0x1251be[_0xaa1e('0x28')]]={'$like':'%'+_0x359822[_0xaa1e('0x30')][_0xaa1e('0x3c')]+'%'};return _0x40b7fe;}})});}_0x5ee8f8=_[_0xaa1e('0x3d')]({},_0x5ee8f8,_0x359822[_0xaa1e('0x3e')]);var _0x1417f6={'where':_0x5ee8f8['where']};return db[_0xaa1e('0x2b')][_0xaa1e('0x3f')](_0x1417f6)['then'](function(_0x4ce014){_0x1a336f['count']=_0x4ce014;if(_0x359822[_0xaa1e('0x30')][_0xaa1e('0x40')]){_0x5ee8f8[_0xaa1e('0x41')]=[{'all':!![]}];}return db[_0xaa1e('0x2b')][_0xaa1e('0x42')](_0x5ee8f8);})[_0xaa1e('0x22')](function(_0x454925){_0x1a336f[_0xaa1e('0x43')]=_0x454925;return _0x1a336f;})['then'](respondWithFilteredResult(_0x18668b,_0x5ee8f8))[_0xaa1e('0x44')](handleError(_0x18668b,null));};exports[_0xaa1e('0x45')]=function(_0x581887,_0x1c03f5){var _0x389778={'raw':![],'where':{'id':_0x581887[_0xaa1e('0x46')]['id']}},_0x20dae8={};_0x20dae8[_0xaa1e('0x33')]=_[_0xaa1e('0x31')](db[_0xaa1e('0x2b')][_0xaa1e('0x2c')]);_0x20dae8[_0xaa1e('0x30')]=_['keys'](_0x581887[_0xaa1e('0x30')]);_0x20dae8['filters']=_['intersection'](_0x20dae8[_0xaa1e('0x33')],_0x20dae8[_0xaa1e('0x30')]);_0x389778[_0xaa1e('0x34')]=_[_0xaa1e('0x35')](_0x20dae8[_0xaa1e('0x33')],qs[_0xaa1e('0x36')](_0x581887[_0xaa1e('0x30')][_0xaa1e('0x36')]));_0x389778['attributes']=_0x389778[_0xaa1e('0x34')]['length']?_0x389778[_0xaa1e('0x34')]:_0x20dae8[_0xaa1e('0x33')];if(_0x581887['query']['includeAll']){_0x389778[_0xaa1e('0x41')]=[{'all':!![]}];}_0x389778=_[_0xaa1e('0x3d')]({},_0x389778,_0x581887[_0xaa1e('0x3e')]);return db[_0xaa1e('0x2b')][_0xaa1e('0x47')](_0x389778)[_0xaa1e('0x22')](handleEntityNotFound(_0x1c03f5,null))[_0xaa1e('0x22')](respondWithResult(_0x1c03f5,null))[_0xaa1e('0x44')](handleError(_0x1c03f5,null));};exports[_0xaa1e('0x48')]=function(_0x5d598c,_0x48cc38){return db[_0xaa1e('0x2b')][_0xaa1e('0x48')](_0x5d598c[_0xaa1e('0x49')],{})['then'](function(_0x4af8dd){var _0x3b0aa0=_0x5d598c[_0xaa1e('0x4a')]['get']({'plain':!![]});if(!_0x3b0aa0)throw new Error(_0xaa1e('0x4b'));if(_0x3b0aa0['role']==='user'){var _0x4c9f02=_0x4af8dd[_0xaa1e('0x24')]({'plain':!![]});var _0x14e957=_0xaa1e('0x4c');return db[_0xaa1e('0x4d')][_0xaa1e('0x47')]({'where':{'name':_0x14e957,'userProfileId':_0x3b0aa0[_0xaa1e('0x4e')]},'raw':!![]})[_0xaa1e('0x22')](function(_0x57e11d){if(_0x57e11d&&_0x57e11d[_0xaa1e('0x4f')]===0x0){return db[_0xaa1e('0x25')][_0xaa1e('0x48')]({'name':_0x4c9f02[_0xaa1e('0x28')],'resourceId':_0x4c9f02['id'],'type':_0x57e11d[_0xaa1e('0x28')],'sectionId':_0x57e11d['id']},{})[_0xaa1e('0x22')](function(){return _0x4af8dd;});}else{return _0x4af8dd;}})[_0xaa1e('0x44')](function(_0x16a900){logger[_0xaa1e('0x26')](_0xaa1e('0x50'),_0x16a900);throw _0x16a900;});}return _0x4af8dd;})['then'](respondWithResult(_0x48cc38,0xc9))[_0xaa1e('0x44')](handleError(_0x48cc38,null));};exports['update']=function(_0x4a7d8f,_0x13bc7c){if(_0x4a7d8f['body']['id']){delete _0x4a7d8f[_0xaa1e('0x49')]['id'];}return db[_0xaa1e('0x2b')][_0xaa1e('0x47')]({'where':{'id':_0x4a7d8f[_0xaa1e('0x46')]['id']}})[_0xaa1e('0x22')](handleEntityNotFound(_0x13bc7c,null))[_0xaa1e('0x22')](saveUpdates(_0x4a7d8f[_0xaa1e('0x49')],null))[_0xaa1e('0x22')](respondWithResult(_0x13bc7c,null))[_0xaa1e('0x44')](handleError(_0x13bc7c,null));};exports[_0xaa1e('0x23')]=function(_0x28448d,_0x15b883){return db['Trigger']['find']({'where':{'id':_0x28448d[_0xaa1e('0x46')]['id']}})[_0xaa1e('0x22')](handleEntityNotFound(_0x15b883,null))[_0xaa1e('0x22')](removeEntity(_0x15b883,null))[_0xaa1e('0x44')](handleError(_0x15b883,null));};exports[_0xaa1e('0x51')]=function(_0x65202d,_0x2faa9b,_0x3cbcce){if(_0x65202d[_0xaa1e('0x49')]['id']){delete _0x65202d['body']['id'];}return db['Trigger']['find']({'where':{'id':_0x65202d['params']['id']}})[_0xaa1e('0x22')](handleEntityNotFound(_0x2faa9b,null))['then'](function(_0x22add5){if(_0x22add5){_0x65202d[_0xaa1e('0x49')][_0xaa1e('0x52')]=_0x22add5['id'];return db[_0xaa1e('0x53')][_0xaa1e('0x48')](_0x65202d['body']);}})[_0xaa1e('0x22')](respondWithResult(_0x2faa9b,null))[_0xaa1e('0x44')](handleError(_0x2faa9b,null));};exports['addAnyCondition']=function(_0x545e25,_0x514f31,_0x4ddf44){if(_0x545e25[_0xaa1e('0x49')]['id']){delete _0x545e25[_0xaa1e('0x49')]['id'];}return db[_0xaa1e('0x2b')]['find']({'where':{'id':_0x545e25[_0xaa1e('0x46')]['id']}})['then'](handleEntityNotFound(_0x514f31,null))[_0xaa1e('0x22')](function(_0x522bfb){if(_0x522bfb){_0x545e25['body']['TriggerAnyId']=_0x522bfb['id'];return db[_0xaa1e('0x53')]['create'](_0x545e25['body']);}})['then'](respondWithResult(_0x514f31,null))['catch'](handleError(_0x514f31,null));};exports['getAllConditions']=function(_0x3b1ed9,_0x279179,_0x7a8c78){var _0x408f5c={};var _0x1dfab9={};var _0x188050;var _0x53f0dd;return db['Trigger']['findOne']({'where':{'id':_0x3b1ed9['params']['id']}})[_0xaa1e('0x22')](handleEntityNotFound(_0x279179,null))['then'](function(_0x2be0b5){if(_0x2be0b5){_0x188050=_0x2be0b5;_0x1dfab9[_0xaa1e('0x33')]=_['keys'](db[_0xaa1e('0x53')][_0xaa1e('0x2c')]);_0x1dfab9['query']=_[_0xaa1e('0x31')](_0x3b1ed9[_0xaa1e('0x30')]);_0x1dfab9[_0xaa1e('0x32')]=_[_0xaa1e('0x35')](_0x1dfab9[_0xaa1e('0x33')],_0x1dfab9['query']);_0x408f5c['attributes']=_['intersection'](_0x1dfab9['model'],qs[_0xaa1e('0x36')](_0x3b1ed9[_0xaa1e('0x30')]['fields']));_0x408f5c[_0xaa1e('0x34')]=_0x408f5c[_0xaa1e('0x34')][_0xaa1e('0x37')]?_0x408f5c['attributes']:_0x1dfab9['model'];_0x408f5c['order']=qs['sort'](_0x3b1ed9[_0xaa1e('0x30')][_0xaa1e('0x3a')]);_0x408f5c[_0xaa1e('0x3b')]=qs[_0xaa1e('0x32')](_[_0xaa1e('0x54')](_0x3b1ed9[_0xaa1e('0x30')],_0x1dfab9[_0xaa1e('0x32')]));if(_0x3b1ed9[_0xaa1e('0x30')][_0xaa1e('0x3c')]){_0x408f5c[_0xaa1e('0x3b')]=_[_0xaa1e('0x3d')](_0x408f5c['where'],{'$or':_[_0xaa1e('0x2f')](_0x408f5c[_0xaa1e('0x34')],function(_0x4b16b6){var _0x54c2ca={};_0x54c2ca[_0x4b16b6]={'$like':'%'+_0x3b1ed9[_0xaa1e('0x30')][_0xaa1e('0x3c')]+'%'};return _0x54c2ca;})});}_0x408f5c=_[_0xaa1e('0x3d')]({},_0x408f5c,_0x3b1ed9[_0xaa1e('0x3e')]);return _0x188050['getAllConditions'](_0x408f5c);}})[_0xaa1e('0x22')](function(_0x48eea3){if(_0x48eea3){_0x53f0dd=_0x48eea3['length'];if(!_0x3b1ed9[_0xaa1e('0x30')]['hasOwnProperty'](_0xaa1e('0x55'))){_0x408f5c['limit']=qs['limit'](_0x3b1ed9[_0xaa1e('0x30')][_0xaa1e('0x1e')]);_0x408f5c[_0xaa1e('0x1c')]=qs[_0xaa1e('0x1c')](_0x3b1ed9[_0xaa1e('0x30')][_0xaa1e('0x1c')]);}return _0x188050[_0xaa1e('0x56')](_0x408f5c);}})[_0xaa1e('0x22')](function(_0x460ca4){if(_0x460ca4){return _0x460ca4?{'count':_0x53f0dd,'rows':_0x460ca4}:null;}})[_0xaa1e('0x22')](respondWithResult(_0x279179,null))[_0xaa1e('0x44')](handleError(_0x279179,null));};exports['getAnyConditions']=function(_0x18a4e4,_0x45fce6,_0x2fa2ce){var _0x5f1998={};var _0x34a74={};var _0x4b179b;var _0x55b26d;return db[_0xaa1e('0x2b')]['findOne']({'where':{'id':_0x18a4e4[_0xaa1e('0x46')]['id']}})['then'](handleEntityNotFound(_0x45fce6,null))['then'](function(_0x41a53a){if(_0x41a53a){_0x4b179b=_0x41a53a;_0x34a74[_0xaa1e('0x33')]=_[_0xaa1e('0x31')](db['Condition'][_0xaa1e('0x2c')]);_0x34a74[_0xaa1e('0x30')]=_['keys'](_0x18a4e4[_0xaa1e('0x30')]);_0x34a74[_0xaa1e('0x32')]=_[_0xaa1e('0x35')](_0x34a74[_0xaa1e('0x33')],_0x34a74[_0xaa1e('0x30')]);_0x5f1998['attributes']=_[_0xaa1e('0x35')](_0x34a74[_0xaa1e('0x33')],qs['fields'](_0x18a4e4[_0xaa1e('0x30')][_0xaa1e('0x36')]));_0x5f1998[_0xaa1e('0x34')]=_0x5f1998[_0xaa1e('0x34')][_0xaa1e('0x37')]?_0x5f1998[_0xaa1e('0x34')]:_0x34a74[_0xaa1e('0x33')];_0x5f1998[_0xaa1e('0x39')]=qs['sort'](_0x18a4e4[_0xaa1e('0x30')][_0xaa1e('0x3a')]);_0x5f1998['where']=qs[_0xaa1e('0x32')](_[_0xaa1e('0x54')](_0x18a4e4['query'],_0x34a74[_0xaa1e('0x32')]));if(_0x18a4e4[_0xaa1e('0x30')]['filter']){_0x5f1998['where']=_[_0xaa1e('0x3d')](_0x5f1998['where'],{'$or':_[_0xaa1e('0x2f')](_0x5f1998['attributes'],function(_0x117f28){var _0x2758df={};_0x2758df[_0x117f28]={'$like':'%'+_0x18a4e4['query'][_0xaa1e('0x3c')]+'%'};return _0x2758df;})});}_0x5f1998=_['merge']({},_0x5f1998,_0x18a4e4[_0xaa1e('0x3e')]);return _0x4b179b[_0xaa1e('0x57')](_0x5f1998);}})[_0xaa1e('0x22')](function(_0x1be2b4){if(_0x1be2b4){_0x55b26d=_0x1be2b4[_0xaa1e('0x37')];if(!_0x18a4e4[_0xaa1e('0x30')]['hasOwnProperty'](_0xaa1e('0x55'))){_0x5f1998[_0xaa1e('0x1e')]=qs[_0xaa1e('0x1e')](_0x18a4e4[_0xaa1e('0x30')][_0xaa1e('0x1e')]);_0x5f1998[_0xaa1e('0x1c')]=qs[_0xaa1e('0x1c')](_0x18a4e4['query'][_0xaa1e('0x1c')]);}return _0x4b179b[_0xaa1e('0x57')](_0x5f1998);}})[_0xaa1e('0x22')](function(_0x4f0376){if(_0x4f0376){return _0x4f0376?{'count':_0x55b26d,'rows':_0x4f0376}:null;}})[_0xaa1e('0x22')](respondWithResult(_0x45fce6,null))[_0xaa1e('0x44')](handleError(_0x45fce6,null));};exports['addAction']=function(_0x5ea138,_0x532cbe,_0x292e68){if(_0x5ea138[_0xaa1e('0x49')]['id']){delete _0x5ea138[_0xaa1e('0x49')]['id'];}return db[_0xaa1e('0x2b')][_0xaa1e('0x47')]({'where':{'id':_0x5ea138[_0xaa1e('0x46')]['id']}})['then'](handleEntityNotFound(_0x532cbe,null))['then'](function(_0x57837f){if(_0x57837f){_0x5ea138[_0xaa1e('0x49')][_0xaa1e('0x58')]=_0x57837f['id'];return db[_0xaa1e('0x59')][_0xaa1e('0x48')](_0x5ea138[_0xaa1e('0x49')]);}})[_0xaa1e('0x22')](respondWithResult(_0x532cbe,null))['catch'](handleError(_0x532cbe,null));};exports[_0xaa1e('0x5a')]=function(_0x2fe128,_0x1dda37,_0x26fb9b){var _0x5c854c={};var _0x52733a={};var _0x1d02ac;var _0x4fa9ed;return db[_0xaa1e('0x2b')][_0xaa1e('0x5b')]({'where':{'id':_0x2fe128[_0xaa1e('0x46')]['id']}})[_0xaa1e('0x22')](handleEntityNotFound(_0x1dda37,null))[_0xaa1e('0x22')](function(_0x3b7216){if(_0x3b7216){_0x1d02ac=_0x3b7216;_0x52733a['model']=_[_0xaa1e('0x31')](db['Action'][_0xaa1e('0x2c')]);_0x52733a[_0xaa1e('0x30')]=_[_0xaa1e('0x31')](_0x2fe128[_0xaa1e('0x30')]);_0x52733a[_0xaa1e('0x32')]=_[_0xaa1e('0x35')](_0x52733a['model'],_0x52733a[_0xaa1e('0x30')]);_0x5c854c['attributes']=_[_0xaa1e('0x35')](_0x52733a['model'],qs['fields'](_0x2fe128[_0xaa1e('0x30')][_0xaa1e('0x36')]));_0x5c854c[_0xaa1e('0x34')]=_0x5c854c[_0xaa1e('0x34')][_0xaa1e('0x37')]?_0x5c854c[_0xaa1e('0x34')]:_0x52733a[_0xaa1e('0x33')];_0x5c854c[_0xaa1e('0x39')]=qs['sort'](_0x2fe128[_0xaa1e('0x30')]['sort']);_0x5c854c[_0xaa1e('0x3b')]=qs['filters'](_['pick'](_0x2fe128['query'],_0x52733a[_0xaa1e('0x32')]));if(_0x2fe128[_0xaa1e('0x30')][_0xaa1e('0x3c')]){_0x5c854c['where']=_[_0xaa1e('0x3d')](_0x5c854c[_0xaa1e('0x3b')],{'$or':_[_0xaa1e('0x2f')](_0x5c854c[_0xaa1e('0x34')],function(_0x106075){var _0x16d027={};_0x16d027[_0x106075]={'$like':'%'+_0x2fe128[_0xaa1e('0x30')][_0xaa1e('0x3c')]+'%'};return _0x16d027;})});}_0x5c854c=_[_0xaa1e('0x3d')]({},_0x5c854c,_0x2fe128[_0xaa1e('0x3e')]);return _0x1d02ac[_0xaa1e('0x5a')](_0x5c854c);}})[_0xaa1e('0x22')](function(_0x1f1382){if(_0x1f1382){_0x4fa9ed=_0x1f1382[_0xaa1e('0x37')];if(!_0x2fe128[_0xaa1e('0x30')][_0xaa1e('0x38')](_0xaa1e('0x55'))){_0x5c854c[_0xaa1e('0x1e')]=qs[_0xaa1e('0x1e')](_0x2fe128[_0xaa1e('0x30')][_0xaa1e('0x1e')]);_0x5c854c['offset']=qs[_0xaa1e('0x1c')](_0x2fe128[_0xaa1e('0x30')][_0xaa1e('0x1c')]);}return _0x1d02ac[_0xaa1e('0x5a')](_0x5c854c);}})[_0xaa1e('0x22')](function(_0x1853ec){if(_0x1853ec){return _0x1853ec?{'count':_0x4fa9ed,'rows':_0x1853ec}:null;}})[_0xaa1e('0x22')](respondWithResult(_0x1dda37,null))['catch'](handleError(_0x1dda37,null));};
\ No newline at end of file
index b9d070e..f633a83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e63=['exports','define','Trigger','tools_triggers','util','moment','bluebird','request-promise','../../config/environment','./trigger.attributes'];(function(_0x34bcf6,_0x2cc521){var _0x54adc9=function(_0x2a8f15){while(--_0x2a8f15){_0x34bcf6['push'](_0x34bcf6['shift']());}};_0x54adc9(++_0x2cc521);}(_0x8e63,0x7c));var _0x38e6=function(_0x1183c0,_0x19d724){_0x1183c0=_0x1183c0-0x0;var _0x199e8e=_0x8e63[_0x1183c0];return _0x199e8e;};'use strict';var _=require('lodash');var util=require(_0x38e6('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x38e6('0x1'));var BPromise=require(_0x38e6('0x2'));var rp=require(_0x38e6('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x38e6('0x4'));var attributes=require(_0x38e6('0x5'));module[_0x38e6('0x6')]=function(_0x5af45e,_0x3048c0){return _0x5af45e[_0x38e6('0x7')](_0x38e6('0x8'),attributes,{'tableName':_0x38e6('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4c6d=['moment','request-promise','path','rimraf','./trigger.attributes','exports','define','Trigger','lodash','util','../../config/logger','api'];(function(_0x5dc927,_0x49f4a1){var _0x416440=function(_0x752837){while(--_0x752837){_0x5dc927['push'](_0x5dc927['shift']());}};_0x416440(++_0x49f4a1);}(_0x4c6d,0x1d0));var _0xd4c6=function(_0x928174,_0x27b2e2){_0x928174=_0x928174-0x0;var _0x50c908=_0x4c6d[_0x928174];return _0x50c908;};'use strict';var _=require(_0xd4c6('0x0'));var util=require(_0xd4c6('0x1'));var logger=require(_0xd4c6('0x2'))(_0xd4c6('0x3'));var moment=require(_0xd4c6('0x4'));var BPromise=require('bluebird');var rp=require(_0xd4c6('0x5'));var fs=require('fs');var path=require(_0xd4c6('0x6'));var rimraf=require(_0xd4c6('0x7'));var config=require('../../config/environment');var attributes=require(_0xd4c6('0x8'));module[_0xd4c6('0x9')]=function(_0x56279c,_0x182671){return _0x56279c[_0xd4c6('0xa')](_0xd4c6('0xb'),attributes,{'tableName':'tools_triggers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2317971..9f400bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f43=['error','message','info','result','GetTrigger','findAll','options','raw','where','limit','include','map','attributes','model','catch','ShowTrigger','Trigger','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment','client','http','then','Trigger,\x20%s,\x20%s','request\x20sent','debug','Trigger,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x6dcfe7,_0x44b8e8){var _0x6d0996=function(_0x79d45d){while(--_0x79d45d){_0x6dcfe7['push'](_0x6dcfe7['shift']());}};_0x6d0996(++_0x44b8e8);}(_0x1f43,0x111));var _0x31f4=function(_0x2896c8,_0xc4fe3b){_0x2896c8=_0x2896c8-0x0;var _0x3f18e5=_0x1f43[_0x2896c8];return _0x3f18e5;};'use strict';var _=require('lodash');var util=require(_0x31f4('0x0'));var moment=require(_0x31f4('0x1'));var BPromise=require(_0x31f4('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x31f4('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x31f4('0x4'));var logger=require(_0x31f4('0x5'))('rpc');var config=require(_0x31f4('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x31f4('0x7')][_0x31f4('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4d8de0,_0x5bead0,_0x53258e){return new BPromise(function(_0x312cc4,_0x372cd5){return client['request'](_0x4d8de0,_0x53258e)[_0x31f4('0x9')](function(_0x15e5f3){logger['info'](_0x31f4('0xa'),_0x5bead0,_0x31f4('0xb'));logger[_0x31f4('0xc')](_0x31f4('0xd'),_0x5bead0,'request\x20sent',JSON[_0x31f4('0xe')](_0x15e5f3));if(_0x15e5f3[_0x31f4('0xf')]){if(_0x15e5f3[_0x31f4('0xf')]['code']===0x1f4){logger[_0x31f4('0xf')](_0x31f4('0xa'),_0x5bead0,_0x15e5f3[_0x31f4('0xf')][_0x31f4('0x10')]);return _0x372cd5(_0x15e5f3[_0x31f4('0xf')][_0x31f4('0x10')]);}logger[_0x31f4('0xf')](_0x31f4('0xa'),_0x5bead0,_0x15e5f3[_0x31f4('0xf')][_0x31f4('0x10')]);return _0x312cc4(_0x15e5f3[_0x31f4('0xf')][_0x31f4('0x10')]);}else{logger[_0x31f4('0x11')](_0x31f4('0xa'),_0x5bead0,_0x31f4('0xb'));_0x312cc4(_0x15e5f3[_0x31f4('0x12')][_0x31f4('0x10')]);}})['catch'](function(_0x4b0261){logger[_0x31f4('0xf')](_0x31f4('0xa'),_0x5bead0,_0x4b0261);_0x372cd5(_0x4b0261);});});}exports[_0x31f4('0x13')]=function(_0x29684e){var _0x478d41=this;return new Promise(function(_0x2da9f1,_0x1d1f27){return db['Trigger'][_0x31f4('0x14')]({'raw':_0x29684e[_0x31f4('0x15')]?_0x29684e[_0x31f4('0x15')][_0x31f4('0x16')]===undefined?!![]:![]:!![],'where':_0x29684e['options']?_0x29684e[_0x31f4('0x15')][_0x31f4('0x17')]||null:null,'attributes':_0x29684e[_0x31f4('0x15')]?_0x29684e[_0x31f4('0x15')]['attributes']||null:null,'limit':_0x29684e['options']?_0x29684e[_0x31f4('0x15')][_0x31f4('0x18')]||null:null,'include':_0x29684e[_0x31f4('0x15')]?_0x29684e[_0x31f4('0x15')][_0x31f4('0x19')]?_[_0x31f4('0x1a')](_0x29684e['options'][_0x31f4('0x19')],function(_0x5c343e){return{'model':db[_0x5c343e['model']],'as':_0x5c343e['as'],'attributes':_0x5c343e[_0x31f4('0x1b')],'include':_0x5c343e[_0x31f4('0x19')]?_[_0x31f4('0x1a')](_0x5c343e[_0x31f4('0x19')],function(_0x2e0b78){return{'model':db[_0x2e0b78[_0x31f4('0x1c')]],'as':_0x2e0b78['as'],'attributes':_0x2e0b78[_0x31f4('0x1b')],'include':_0x2e0b78[_0x31f4('0x19')]?_[_0x31f4('0x1a')](_0x2e0b78['include'],function(_0x3491f6){return{'model':db[_0x3491f6[_0x31f4('0x1c')]],'as':_0x3491f6['as'],'attributes':_0x3491f6[_0x31f4('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x31f4('0x9')](function(_0x11e15f){logger[_0x31f4('0x11')](_0x31f4('0x13'),_0x29684e);logger['debug']('GetTrigger',_0x29684e,JSON[_0x31f4('0xe')](_0x11e15f));_0x2da9f1(_0x11e15f);})[_0x31f4('0x1d')](function(_0x39b275){logger[_0x31f4('0xf')](_0x31f4('0x13'),_0x39b275[_0x31f4('0x10')],_0x29684e);_0x1d1f27(_0x478d41[_0x31f4('0xf')](0x1f4,_0x39b275[_0x31f4('0x10')]));});});};exports[_0x31f4('0x1e')]=function(_0x30998f){var _0x16d4b5=this;return new Promise(function(_0x172b88,_0x22bbe6){return db[_0x31f4('0x1f')]['find']({'raw':_0x30998f[_0x31f4('0x15')]?_0x30998f[_0x31f4('0x15')][_0x31f4('0x16')]===undefined?!![]:![]:!![],'where':_0x30998f[_0x31f4('0x15')]?_0x30998f['options'][_0x31f4('0x17')]||null:null,'attributes':_0x30998f[_0x31f4('0x15')]?_0x30998f[_0x31f4('0x15')][_0x31f4('0x1b')]||null:null,'include':_0x30998f[_0x31f4('0x15')]?_0x30998f[_0x31f4('0x15')]['include']?_[_0x31f4('0x1a')](_0x30998f[_0x31f4('0x15')][_0x31f4('0x19')],function(_0xc291fb){return{'model':db[_0xc291fb[_0x31f4('0x1c')]],'as':_0xc291fb['as'],'attributes':_0xc291fb['attributes'],'include':_0xc291fb[_0x31f4('0x19')]?_[_0x31f4('0x1a')](_0xc291fb[_0x31f4('0x19')],function(_0x557ead){return{'model':db[_0x557ead[_0x31f4('0x1c')]],'as':_0x557ead['as'],'attributes':_0x557ead[_0x31f4('0x1b')],'include':_0x557ead[_0x31f4('0x19')]?_[_0x31f4('0x1a')](_0x557ead[_0x31f4('0x19')],function(_0x40908b){return{'model':db[_0x40908b[_0x31f4('0x1c')]],'as':_0x40908b['as'],'attributes':_0x40908b[_0x31f4('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x31f4('0x9')](function(_0x53852b){logger[_0x31f4('0x11')](_0x31f4('0x1e'),_0x30998f);logger[_0x31f4('0xc')]('ShowTrigger',_0x30998f,JSON[_0x31f4('0xe')](_0x53852b));_0x172b88(_0x53852b);})[_0x31f4('0x1d')](function(_0xc91c32){logger[_0x31f4('0xf')](_0x31f4('0x1e'),_0xc91c32[_0x31f4('0x10')],_0x30998f);_0x22bbe6(_0x16d4b5[_0x31f4('0xf')](0x1f4,_0xc91c32['message']));});});};
\ No newline at end of file
+var _0x75a8=['debug','request\x20sent','stringify','error','code','message','result','catch','GetTrigger','Trigger','findAll','options','raw','map','include','model','attributes','then','ShowTrigger','find','where','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','info','Trigger,\x20%s,\x20%s'];(function(_0x401ccd,_0x140815){var _0x5a57ad=function(_0x8ad698){while(--_0x8ad698){_0x401ccd['push'](_0x401ccd['shift']());}};_0x5a57ad(++_0x140815);}(_0x75a8,0x1c5));var _0x875a=function(_0x815a8a,_0x391fb6){_0x815a8a=_0x815a8a-0x0;var _0x49b126=_0x75a8[_0x815a8a];return _0x49b126;};'use strict';var _=require(_0x875a('0x0'));var util=require(_0x875a('0x1'));var moment=require(_0x875a('0x2'));var BPromise=require(_0x875a('0x3'));var rs=require(_0x875a('0x4'));var fs=require('fs');var Redis=require(_0x875a('0x5'));var db=require(_0x875a('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x875a('0x7'))(_0x875a('0x8'));var config=require(_0x875a('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x875a('0xa')][_0x875a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x55ceb8,_0x4570dd,_0x2c0900){return new BPromise(function(_0x4a9ab3,_0x322365){return client[_0x875a('0xc')](_0x55ceb8,_0x2c0900)['then'](function(_0x4b399c){logger[_0x875a('0xd')](_0x875a('0xe'),_0x4570dd,'request\x20sent');logger[_0x875a('0xf')]('Trigger,\x20%s,\x20%s,\x20%s',_0x4570dd,_0x875a('0x10'),JSON[_0x875a('0x11')](_0x4b399c));if(_0x4b399c[_0x875a('0x12')]){if(_0x4b399c['error'][_0x875a('0x13')]===0x1f4){logger[_0x875a('0x12')]('Trigger,\x20%s,\x20%s',_0x4570dd,_0x4b399c[_0x875a('0x12')][_0x875a('0x14')]);return _0x322365(_0x4b399c[_0x875a('0x12')][_0x875a('0x14')]);}logger[_0x875a('0x12')](_0x875a('0xe'),_0x4570dd,_0x4b399c[_0x875a('0x12')][_0x875a('0x14')]);return _0x4a9ab3(_0x4b399c[_0x875a('0x12')][_0x875a('0x14')]);}else{logger[_0x875a('0xd')]('Trigger,\x20%s,\x20%s',_0x4570dd,_0x875a('0x10'));_0x4a9ab3(_0x4b399c[_0x875a('0x15')]['message']);}})[_0x875a('0x16')](function(_0x424f32){logger[_0x875a('0x12')]('Trigger,\x20%s,\x20%s',_0x4570dd,_0x424f32);_0x322365(_0x424f32);});});}exports[_0x875a('0x17')]=function(_0x19edc7){var _0x394880=this;return new Promise(function(_0x2c3cac,_0x4a14ac){return db[_0x875a('0x18')][_0x875a('0x19')]({'raw':_0x19edc7[_0x875a('0x1a')]?_0x19edc7[_0x875a('0x1a')][_0x875a('0x1b')]===undefined?!![]:![]:!![],'where':_0x19edc7['options']?_0x19edc7[_0x875a('0x1a')]['where']||null:null,'attributes':_0x19edc7[_0x875a('0x1a')]?_0x19edc7[_0x875a('0x1a')]['attributes']||null:null,'limit':_0x19edc7[_0x875a('0x1a')]?_0x19edc7[_0x875a('0x1a')]['limit']||null:null,'include':_0x19edc7['options']?_0x19edc7['options']['include']?_[_0x875a('0x1c')](_0x19edc7['options'][_0x875a('0x1d')],function(_0x33cc46){return{'model':db[_0x33cc46[_0x875a('0x1e')]],'as':_0x33cc46['as'],'attributes':_0x33cc46['attributes'],'include':_0x33cc46['include']?_[_0x875a('0x1c')](_0x33cc46[_0x875a('0x1d')],function(_0x250ab6){return{'model':db[_0x250ab6[_0x875a('0x1e')]],'as':_0x250ab6['as'],'attributes':_0x250ab6[_0x875a('0x1f')],'include':_0x250ab6[_0x875a('0x1d')]?_[_0x875a('0x1c')](_0x250ab6['include'],function(_0x308754){return{'model':db[_0x308754[_0x875a('0x1e')]],'as':_0x308754['as'],'attributes':_0x308754[_0x875a('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x875a('0x20')](function(_0x582713){logger[_0x875a('0xd')](_0x875a('0x17'),_0x19edc7);logger[_0x875a('0xf')](_0x875a('0x17'),_0x19edc7,JSON[_0x875a('0x11')](_0x582713));_0x2c3cac(_0x582713);})[_0x875a('0x16')](function(_0x1447f7){logger[_0x875a('0x12')]('GetTrigger',_0x1447f7[_0x875a('0x14')],_0x19edc7);_0x4a14ac(_0x394880['error'](0x1f4,_0x1447f7[_0x875a('0x14')]));});});};exports[_0x875a('0x21')]=function(_0x147de2){var _0x3697b7=this;return new Promise(function(_0xdddb3c,_0x38794a){return db['Trigger'][_0x875a('0x22')]({'raw':_0x147de2[_0x875a('0x1a')]?_0x147de2['options'][_0x875a('0x1b')]===undefined?!![]:![]:!![],'where':_0x147de2['options']?_0x147de2[_0x875a('0x1a')][_0x875a('0x23')]||null:null,'attributes':_0x147de2[_0x875a('0x1a')]?_0x147de2[_0x875a('0x1a')][_0x875a('0x1f')]||null:null,'include':_0x147de2['options']?_0x147de2[_0x875a('0x1a')]['include']?_['map'](_0x147de2['options'][_0x875a('0x1d')],function(_0x1a75be){return{'model':db[_0x1a75be['model']],'as':_0x1a75be['as'],'attributes':_0x1a75be[_0x875a('0x1f')],'include':_0x1a75be[_0x875a('0x1d')]?_['map'](_0x1a75be[_0x875a('0x1d')],function(_0x3ee9eb){return{'model':db[_0x3ee9eb['model']],'as':_0x3ee9eb['as'],'attributes':_0x3ee9eb[_0x875a('0x1f')],'include':_0x3ee9eb[_0x875a('0x1d')]?_[_0x875a('0x1c')](_0x3ee9eb[_0x875a('0x1d')],function(_0x1b170e){return{'model':db[_0x1b170e['model']],'as':_0x1b170e['as'],'attributes':_0x1b170e[_0x875a('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x875a('0x20')](function(_0x5b5ef5){logger[_0x875a('0xd')]('ShowTrigger',_0x147de2);logger['debug'](_0x875a('0x21'),_0x147de2,JSON[_0x875a('0x11')](_0x5b5ef5));_0xdddb3c(_0x5b5ef5);})[_0x875a('0x16')](function(_0x3306aa){logger['error'](_0x875a('0x21'),_0x3306aa[_0x875a('0x14')],_0x147de2);_0x38794a(_0x3697b7[_0x875a('0x12')](0x1f4,_0x3306aa[_0x875a('0x14')]));});});};
\ No newline at end of file
index 5a96c32..41cf275 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66b0=['path','connect-timeout','Router','../../components/auth/service','./trunk.controller','get','isAuthenticated','/:id','post','/:id/clone','clone','update','delete','exports','util'];(function(_0x4337ca,_0xbb98f1){var _0x21dbde=function(_0x599290){while(--_0x599290){_0x4337ca['push'](_0x4337ca['shift']());}};_0x21dbde(++_0xbb98f1);}(_0x66b0,0xe0));var _0x066b=function(_0x2133b0,_0x3dab77){_0x2133b0=_0x2133b0-0x0;var _0x1c6751=_0x66b0[_0x2133b0];return _0x1c6751;};'use strict';var multer=require('multer');var util=require(_0x066b('0x0'));var path=require(_0x066b('0x1'));var timeout=require(_0x066b('0x2'));var express=require('express');var router=express[_0x066b('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x066b('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x066b('0x5'));router[_0x066b('0x6')]('/',auth[_0x066b('0x7')](),controller['index']);router['get'](_0x066b('0x8'),auth[_0x066b('0x7')](),controller['show']);router[_0x066b('0x9')](_0x066b('0xa'),auth[_0x066b('0x7')](),controller[_0x066b('0xb')]);router['post']('/',auth[_0x066b('0x7')](),controller['create']);router['put'](_0x066b('0x8'),auth[_0x066b('0x7')](),controller[_0x066b('0xc')]);router[_0x066b('0xd')](_0x066b('0x8'),auth[_0x066b('0x7')](),controller['destroy']);module[_0x066b('0xe')]=router;
\ No newline at end of file
+var _0x35b1=['post','put','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./trunk.controller','get','isAuthenticated','index','/:id','show','/:id/clone','clone'];(function(_0x275624,_0x12e717){var _0xd91bae=function(_0x12c160){while(--_0x12c160){_0x275624['push'](_0x275624['shift']());}};_0xd91bae(++_0x12e717);}(_0x35b1,0x194));var _0x135b=function(_0x4c1ad8,_0x55e28d){_0x4c1ad8=_0x4c1ad8-0x0;var _0x2c617b=_0x35b1[_0x4c1ad8];return _0x2c617b;};'use strict';var multer=require('multer');var util=require(_0x135b('0x0'));var path=require(_0x135b('0x1'));var timeout=require(_0x135b('0x2'));var express=require(_0x135b('0x3'));var router=express[_0x135b('0x4')]();var fs_extra=require(_0x135b('0x5'));var auth=require(_0x135b('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x135b('0x7'));var controller=require(_0x135b('0x8'));router[_0x135b('0x9')]('/',auth[_0x135b('0xa')](),controller[_0x135b('0xb')]);router[_0x135b('0x9')](_0x135b('0xc'),auth[_0x135b('0xa')](),controller[_0x135b('0xd')]);router['post'](_0x135b('0xe'),auth[_0x135b('0xa')](),controller[_0x135b('0xf')]);router[_0x135b('0x10')]('/',auth[_0x135b('0xa')](),controller['create']);router[_0x135b('0x11')](_0x135b('0xc'),auth['isAuthenticated'](),controller[_0x135b('0x12')]);router[_0x135b('0x13')](_0x135b('0xc'),auth[_0x135b('0xa')](),controller['destroy']);module[_0x135b('0x14')]=router;
\ No newline at end of file
index 7dd4c0a..fc6f0aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x109c=['nonat','outgoing','nat','join','split','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','always','accept','refuse','uac','uas','fingerprint','passive','actpass','dynamic','update','BOOLEAN','STRING','ENUM','friend','user','peer','from-voip-provider','ALLOWED_NOT_SCREENED','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_FAILED_SCREEN','PROHIB','udp','setDataValue','transport','getDataValue','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','auto','yes'];(function(_0x429e7e,_0x5ae693){var _0x22c7d7=function(_0x1d4c77){while(--_0x1d4c77){_0x429e7e['push'](_0x429e7e['shift']());}};_0x22c7d7(++_0x5ae693);}(_0x109c,0x139));var _0xc109=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x109c[_0x3ab51d];return _0x29a04e;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xc109('0x0')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xc109('0x1')](_0xc109('0x2'),_0xc109('0x3'),_0xc109('0x4')),'allowNull':![],'defaultValue':'friend'},'context':{'type':Sequelize[_0xc109('0x0')],'allowNull':![],'defaultValue':_0xc109('0x5')},'callingpres':{'type':Sequelize[_0xc109('0x1')](_0xc109('0x6'),'ALLOWED_PASSED_SCREEN',_0xc109('0x7'),_0xc109('0x8'),_0xc109('0x9'),'PROHIB_PASSED_SCREEN',_0xc109('0xa'),_0xc109('0xb'))},'deny':{'type':Sequelize[_0xc109('0x0')]},'permit':{'type':Sequelize[_0xc109('0x0')]},'secret':{'type':Sequelize['STRING']},'md5secret':{'type':Sequelize[_0xc109('0x0')]},'remotesecret':{'type':Sequelize['STRING']},'transport':{'type':Sequelize[_0xc109('0x0')],'defaultValue':_0xc109('0xc'),'set':function(_0x4d9574){this[_0xc109('0xd')](_0xc109('0xe'),_0x4d9574?_0x4d9574['join'](','):null);},'get':function(){return this[_0xc109('0xf')](_0xc109('0xe'))?this['getDataValue'](_0xc109('0xe'))['split'](','):null;},'comment':_0xc109('0x10')},'dtmfmode':{'type':Sequelize[_0xc109('0x1')](_0xc109('0x11'),_0xc109('0x12'),_0xc109('0x13'),_0xc109('0x14'),_0xc109('0x15')),'defaultValue':_0xc109('0x11')},'directmedia':{'type':Sequelize[_0xc109('0x1')](_0xc109('0x16'),'no',_0xc109('0x17'),'update',_0xc109('0x18')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize['ENUM'](_0xc109('0x16'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xc109('0x0')]},'directmediadeny':{'type':Sequelize[_0xc109('0x0')]},'nat':{'type':Sequelize[_0xc109('0x0')],'defaultValue':'force_rport,comedia','set':function(_0x33dcad){this['setDataValue'](_0xc109('0x19'),_0x33dcad?_0x33dcad[_0xc109('0x1a')](','):null);},'get':function(){return this[_0xc109('0xf')](_0xc109('0x19'))?this[_0xc109('0xf')](_0xc109('0x19'))[_0xc109('0x1b')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize[_0xc109('0x0')]},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize[_0xc109('0x0')]},'language':{'type':Sequelize[_0xc109('0x0')],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING'],'allowNull':!![]},'disallow':{'type':Sequelize['STRING'],'defaultValue':_0xc109('0x1c')},'allow':{'type':Sequelize[_0xc109('0x0')],'allowNull':![],'defaultValue':_0xc109('0x1d'),'set':function(_0x536af3){this[_0xc109('0xd')](_0xc109('0x1e'),_0x536af3?_0x536af3[_0xc109('0x1a')](';'):'ulaw;alaw;gsm');},'get':function(){return this[_0xc109('0xf')](_0xc109('0x1e'))?this[_0xc109('0xf')](_0xc109('0x1e'))[_0xc109('0x1b')](';'):null;},'comment':_0xc109('0x1f')},'autoframing':{'type':Sequelize[_0xc109('0x1')](_0xc109('0x16'),'no')},'insecure':{'type':Sequelize[_0xc109('0x0')],'defaultValue':_0xc109('0x20'),'set':function(_0x1afc30){this[_0xc109('0xd')](_0xc109('0x21'),_0x1afc30?_0x1afc30['join'](','):null);},'get':function(){return this[_0xc109('0xf')](_0xc109('0x21'))?this[_0xc109('0xf')](_0xc109('0x21'))[_0xc109('0x1b')](','):null;},'comment':_0xc109('0x22')},'trustrpid':{'type':Sequelize['ENUM'](_0xc109('0x16'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM'](_0xc109('0x16'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xc109('0x1')](_0xc109('0x16'),'no',_0xc109('0x23'))},'promiscredir':{'type':Sequelize[_0xc109('0x1')](_0xc109('0x16'),'no')},'useclientcode':{'type':Sequelize[_0xc109('0x1')](_0xc109('0x16'),'no')},'accountcode':{'type':Sequelize[_0xc109('0x24')](0xb)},'setvar':{'type':Sequelize[_0xc109('0x0')]},'callerid':{'type':Sequelize['STRING'],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize[_0xc109('0x0')]},'callcounter':{'type':Sequelize[_0xc109('0x1')](_0xc109('0x16'),'no'),'defaultValue':'yes'},'busylevel':{'type':Sequelize[_0xc109('0x24')](0xb)},'allowoverlap':{'type':Sequelize['ENUM']('yes','no')},'allowsubscribe':{'type':Sequelize['ENUM']('yes','no')},'allowtransfer':{'type':Sequelize[_0xc109('0x1')](_0xc109('0x16'),'no')},'ignoresdpversion':{'type':Sequelize[_0xc109('0x1')](_0xc109('0x16'),'no')},'subscribecontext':{'type':Sequelize[_0xc109('0x0')]},'template':{'type':Sequelize['STRING']},'videosupport':{'type':Sequelize[_0xc109('0x1')](_0xc109('0x16'),'no',_0xc109('0x25')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xc109('0x24')](0xb)},'rfc2833compensate':{'type':Sequelize['ENUM']('yes','no')},'mailbox':{'type':Sequelize['STRING']},'session_timers':{'type':Sequelize['ENUM'](_0xc109('0x26'),_0xc109('0x27'),'originate')},'session_expires':{'type':Sequelize[_0xc109('0x24')](0xb)},'session_minse':{'type':Sequelize[_0xc109('0x24')](0xb)},'session_refresher':{'type':Sequelize[_0xc109('0x1')](_0xc109('0x28'),_0xc109('0x29')),'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize['STRING']},'regexten':{'type':Sequelize['STRING']},'fromdomain':{'type':Sequelize['STRING']},'fromuser':{'type':Sequelize[_0xc109('0x0')]},'port':{'type':Sequelize[_0xc109('0x24')](0x5)},'qualify':{'type':Sequelize[_0xc109('0x1')](_0xc109('0x16'),'no'),'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0xc109('0x24')](0xb)},'defaultip':{'type':Sequelize[_0xc109('0x0')]},'defaultuser':{'type':Sequelize[_0xc109('0x0')]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpkeepalive':{'type':Sequelize[_0xc109('0x24')](0xb)},'sendrpid':{'type':Sequelize[_0xc109('0x1')](_0xc109('0x16'),'no','pai'),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xc109('0x0')]},'callbackextension':{'type':Sequelize[_0xc109('0x0')]},'timert1':{'type':Sequelize[_0xc109('0x24')](0xb)},'timerb':{'type':Sequelize['INTEGER'](0xb)},'qualifyfreq':{'type':Sequelize[_0xc109('0x24')](0xb)},'contactpermit':{'type':Sequelize[_0xc109('0x0')]},'contactdeny':{'type':Sequelize[_0xc109('0x0')]},'contactacl':{'type':Sequelize[_0xc109('0x0')]},'unsolicited_mailbox':{'type':Sequelize[_0xc109('0x0')]},'use_q850_reason':{'type':Sequelize[_0xc109('0x0')]},'maxforwards':{'type':Sequelize[_0xc109('0x24')](0xb)},'encryption':{'type':Sequelize[_0xc109('0x1')](_0xc109('0x16'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0xc109('0x1')](_0xc109('0x16'),'no')},'force_avp':{'type':Sequelize[_0xc109('0x1')](_0xc109('0x16'),'no')},'icesupport':{'type':Sequelize[_0xc109('0x1')]('yes','no')},'dtlsenable':{'type':Sequelize[_0xc109('0x1')](_0xc109('0x16'),'no')},'dtlsverify':{'type':Sequelize['ENUM'](_0xc109('0x16'),'no',_0xc109('0x2a'),'certificate')},'dtlsrekey':{'type':Sequelize[_0xc109('0x24')](0xb)},'dtlscertfile':{'type':Sequelize[_0xc109('0x0')]},'dtlsprivatekey':{'type':Sequelize['STRING']},'dtlscipher':{'type':Sequelize['STRING']},'dtlscafile':{'type':Sequelize[_0xc109('0x0')]},'dtlscapath':{'type':Sequelize['STRING']},'dtlssetup':{'type':Sequelize[_0xc109('0x1')]('active',_0xc109('0x2b'),_0xc109('0x2c')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING']},'usereqphone':{'type':Sequelize['ENUM'](_0xc109('0x16'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xc109('0x0')]},'recordofffeature':{'type':Sequelize[_0xc109('0x0')]},'call_limit':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0xc109('0x1')](_0xc109('0x16'),'no')},'subscribemwi':{'type':Sequelize[_0xc109('0x1')](_0xc109('0x16'),'no')},'vmexten':{'type':Sequelize['STRING']},'mohinterpret':{'type':Sequelize[_0xc109('0x0')]},'mohsuggest':{'type':Sequelize[_0xc109('0x0')]},'parkinglot':{'type':Sequelize[_0xc109('0x0')]},'description':{'type':Sequelize[_0xc109('0x0')]},'host':{'type':Sequelize[_0xc109('0x0')],'defaultValue':_0xc109('0x2d')},'canreinvite':{'type':Sequelize[_0xc109('0x1')]('yes','no','nonat',_0xc109('0x2e'),'update,nonat'),'defaultValue':'no'},'registry':{'type':Sequelize[_0xc109('0x0')]},'otherFields':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0xc109('0x2f')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize['STRING'],'defaultValue':'no'}};
\ No newline at end of file
+var _0xfc8b=['uas','fingerprint','certificate','active','passive','actpass','dynamic','sequelize','exports','STRING','name','ENUM','friend','user','peer','from-voip-provider','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','join','getDataValue','transport','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','shortinfo','inband','yes','nonat','update','outgoing','force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite','setDataValue','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','INTEGER','\x22\x22\x20<>','accept','refuse','originate','uac'];(function(_0x22c49f,_0x4ad08d){var _0xbe0aad=function(_0x57114c){while(--_0x57114c){_0x22c49f['push'](_0x22c49f['shift']());}};_0xbe0aad(++_0x4ad08d);}(_0xfc8b,0x1ed));var _0xbfc8=function(_0x487a5b,_0x20c6d7){_0x487a5b=_0x487a5b-0x0;var _0x26fca1=_0xfc8b[_0x487a5b];return _0x26fca1;};'use strict';var Sequelize=require(_0xbfc8('0x0'));module[_0xbfc8('0x1')]={'name':{'type':Sequelize[_0xbfc8('0x2')],'allowNull':![],'unique':_0xbfc8('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xbfc8('0x4')](_0xbfc8('0x5'),_0xbfc8('0x6'),_0xbfc8('0x7')),'allowNull':![],'defaultValue':_0xbfc8('0x5')},'context':{'type':Sequelize[_0xbfc8('0x2')],'allowNull':![],'defaultValue':_0xbfc8('0x8')},'callingpres':{'type':Sequelize[_0xbfc8('0x4')](_0xbfc8('0x9'),_0xbfc8('0xa'),_0xbfc8('0xb'),'ALLOWED',_0xbfc8('0xc'),_0xbfc8('0xd'),_0xbfc8('0xe'),_0xbfc8('0xf'))},'deny':{'type':Sequelize[_0xbfc8('0x2')]},'permit':{'type':Sequelize[_0xbfc8('0x2')]},'secret':{'type':Sequelize[_0xbfc8('0x2')]},'md5secret':{'type':Sequelize[_0xbfc8('0x2')]},'remotesecret':{'type':Sequelize[_0xbfc8('0x2')]},'transport':{'type':Sequelize[_0xbfc8('0x2')],'defaultValue':_0xbfc8('0x10'),'set':function(_0x18cd99){this['setDataValue']('transport',_0x18cd99?_0x18cd99[_0xbfc8('0x11')](','):null);},'get':function(){return this[_0xbfc8('0x12')]('transport')?this[_0xbfc8('0x12')](_0xbfc8('0x13'))[_0xbfc8('0x14')](','):null;},'comment':_0xbfc8('0x15')},'dtmfmode':{'type':Sequelize[_0xbfc8('0x4')](_0xbfc8('0x16'),'info',_0xbfc8('0x17'),_0xbfc8('0x18'),'auto'),'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize[_0xbfc8('0x4')](_0xbfc8('0x19'),'no',_0xbfc8('0x1a'),_0xbfc8('0x1b'),_0xbfc8('0x1c')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize['ENUM'](_0xbfc8('0x19'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xbfc8('0x2')]},'directmediadeny':{'type':Sequelize[_0xbfc8('0x2')]},'nat':{'type':Sequelize[_0xbfc8('0x2')],'defaultValue':_0xbfc8('0x1d'),'set':function(_0x55b0d8){this['setDataValue']('nat',_0x55b0d8?_0x55b0d8['join'](','):null);},'get':function(){return this['getDataValue'](_0xbfc8('0x1e'))?this['getDataValue'](_0xbfc8('0x1e'))[_0xbfc8('0x14')](','):null;},'comment':_0xbfc8('0x1f')},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize[_0xbfc8('0x2')]},'pickupgroup':{'type':Sequelize[_0xbfc8('0x2')]},'namedpickupgroup':{'type':Sequelize[_0xbfc8('0x2')]},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xbfc8('0x2')],'allowNull':!![]},'disallow':{'type':Sequelize['STRING'],'defaultValue':_0xbfc8('0x20')},'allow':{'type':Sequelize[_0xbfc8('0x2')],'allowNull':![],'defaultValue':_0xbfc8('0x21'),'set':function(_0x230603){this['setDataValue'](_0xbfc8('0x22'),_0x230603?_0x230603[_0xbfc8('0x11')](';'):_0xbfc8('0x21'));},'get':function(){return this[_0xbfc8('0x12')](_0xbfc8('0x22'))?this[_0xbfc8('0x12')](_0xbfc8('0x22'))[_0xbfc8('0x14')](';'):null;},'comment':_0xbfc8('0x23')},'autoframing':{'type':Sequelize[_0xbfc8('0x4')](_0xbfc8('0x19'),'no')},'insecure':{'type':Sequelize[_0xbfc8('0x2')],'defaultValue':_0xbfc8('0x24'),'set':function(_0x46aeb1){this[_0xbfc8('0x25')](_0xbfc8('0x26'),_0x46aeb1?_0x46aeb1[_0xbfc8('0x11')](','):null);},'get':function(){return this['getDataValue'](_0xbfc8('0x26'))?this[_0xbfc8('0x12')](_0xbfc8('0x26'))[_0xbfc8('0x14')](','):null;},'comment':_0xbfc8('0x27')},'trustrpid':{'type':Sequelize[_0xbfc8('0x4')](_0xbfc8('0x19'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xbfc8('0x4')](_0xbfc8('0x19'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize['ENUM']('yes','no',_0xbfc8('0x28'))},'promiscredir':{'type':Sequelize['ENUM'](_0xbfc8('0x19'),'no')},'useclientcode':{'type':Sequelize[_0xbfc8('0x4')](_0xbfc8('0x19'),'no')},'accountcode':{'type':Sequelize[_0xbfc8('0x29')](0xb)},'setvar':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0xbfc8('0x2')],'defaultValue':_0xbfc8('0x2a')},'amaflags':{'type':Sequelize[_0xbfc8('0x2')]},'callcounter':{'type':Sequelize[_0xbfc8('0x4')](_0xbfc8('0x19'),'no'),'defaultValue':_0xbfc8('0x19')},'busylevel':{'type':Sequelize[_0xbfc8('0x29')](0xb)},'allowoverlap':{'type':Sequelize['ENUM'](_0xbfc8('0x19'),'no')},'allowsubscribe':{'type':Sequelize[_0xbfc8('0x4')](_0xbfc8('0x19'),'no')},'allowtransfer':{'type':Sequelize[_0xbfc8('0x4')](_0xbfc8('0x19'),'no')},'ignoresdpversion':{'type':Sequelize[_0xbfc8('0x4')](_0xbfc8('0x19'),'no')},'subscribecontext':{'type':Sequelize[_0xbfc8('0x2')]},'template':{'type':Sequelize[_0xbfc8('0x2')]},'videosupport':{'type':Sequelize[_0xbfc8('0x4')](_0xbfc8('0x19'),'no','always'),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb)},'rfc2833compensate':{'type':Sequelize[_0xbfc8('0x4')](_0xbfc8('0x19'),'no')},'mailbox':{'type':Sequelize[_0xbfc8('0x2')]},'session_timers':{'type':Sequelize['ENUM'](_0xbfc8('0x2b'),_0xbfc8('0x2c'),_0xbfc8('0x2d'))},'session_expires':{'type':Sequelize[_0xbfc8('0x29')](0xb)},'session_minse':{'type':Sequelize[_0xbfc8('0x29')](0xb)},'session_refresher':{'type':Sequelize[_0xbfc8('0x4')](_0xbfc8('0x2e'),_0xbfc8('0x2f')),'defaultValue':_0xbfc8('0x2f')},'t38pt_usertpsource':{'type':Sequelize['STRING']},'regexten':{'type':Sequelize['STRING']},'fromdomain':{'type':Sequelize[_0xbfc8('0x2')]},'fromuser':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0xbfc8('0x29')](0x5)},'qualify':{'type':Sequelize[_0xbfc8('0x4')]('yes','no'),'defaultValue':_0xbfc8('0x19')},'keepalive':{'type':Sequelize[_0xbfc8('0x29')](0xb)},'defaultip':{'type':Sequelize[_0xbfc8('0x2')]},'defaultuser':{'type':Sequelize[_0xbfc8('0x2')]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpholdtimeout':{'type':Sequelize[_0xbfc8('0x29')](0xb)},'rtpkeepalive':{'type':Sequelize[_0xbfc8('0x29')](0xb)},'sendrpid':{'type':Sequelize[_0xbfc8('0x4')](_0xbfc8('0x19'),'no','pai'),'defaultValue':'no'},'outboundproxy':{'type':Sequelize['STRING']},'callbackextension':{'type':Sequelize[_0xbfc8('0x2')]},'timert1':{'type':Sequelize['INTEGER'](0xb)},'timerb':{'type':Sequelize[_0xbfc8('0x29')](0xb)},'qualifyfreq':{'type':Sequelize[_0xbfc8('0x29')](0xb)},'contactpermit':{'type':Sequelize['STRING']},'contactdeny':{'type':Sequelize['STRING']},'contactacl':{'type':Sequelize[_0xbfc8('0x2')]},'unsolicited_mailbox':{'type':Sequelize[_0xbfc8('0x2')]},'use_q850_reason':{'type':Sequelize[_0xbfc8('0x2')]},'maxforwards':{'type':Sequelize[_0xbfc8('0x29')](0xb)},'encryption':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0xbfc8('0x4')](_0xbfc8('0x19'),'no')},'force_avp':{'type':Sequelize[_0xbfc8('0x4')]('yes','no')},'icesupport':{'type':Sequelize[_0xbfc8('0x4')](_0xbfc8('0x19'),'no')},'dtlsenable':{'type':Sequelize[_0xbfc8('0x4')]('yes','no')},'dtlsverify':{'type':Sequelize[_0xbfc8('0x4')](_0xbfc8('0x19'),'no',_0xbfc8('0x30'),_0xbfc8('0x31'))},'dtlsrekey':{'type':Sequelize[_0xbfc8('0x29')](0xb)},'dtlscertfile':{'type':Sequelize[_0xbfc8('0x2')]},'dtlsprivatekey':{'type':Sequelize[_0xbfc8('0x2')]},'dtlscipher':{'type':Sequelize[_0xbfc8('0x2')]},'dtlscafile':{'type':Sequelize['STRING']},'dtlscapath':{'type':Sequelize['STRING']},'dtlssetup':{'type':Sequelize[_0xbfc8('0x4')](_0xbfc8('0x32'),_0xbfc8('0x33'),_0xbfc8('0x34')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING']},'usereqphone':{'type':Sequelize['ENUM'](_0xbfc8('0x19'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xbfc8('0x2')]},'recordofffeature':{'type':Sequelize['STRING']},'call_limit':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0xbfc8('0x4')](_0xbfc8('0x19'),'no')},'subscribemwi':{'type':Sequelize[_0xbfc8('0x4')](_0xbfc8('0x19'),'no')},'vmexten':{'type':Sequelize[_0xbfc8('0x2')]},'mohinterpret':{'type':Sequelize[_0xbfc8('0x2')]},'mohsuggest':{'type':Sequelize[_0xbfc8('0x2')]},'parkinglot':{'type':Sequelize[_0xbfc8('0x2')]},'description':{'type':Sequelize[_0xbfc8('0x2')]},'host':{'type':Sequelize[_0xbfc8('0x2')],'defaultValue':_0xbfc8('0x35')},'canreinvite':{'type':Sequelize[_0xbfc8('0x4')](_0xbfc8('0x19'),'no',_0xbfc8('0x1a'),_0xbfc8('0x1b'),'update,nonat'),'defaultValue':'no'},'registry':{'type':Sequelize['STRING']},'otherFields':{'type':Sequelize[_0xbfc8('0x2')]},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0xbfc8('0x2')],'defaultValue':'no'}};
\ No newline at end of file
index 9ed4730..843ee93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb821=['model','map','query','keys','filters','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','Trunk','includeAll','findAll','intersection','length','include','find','params','get','omit','createdAt','updatedAt','body','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readFileSync','server/files/templates/trunk.ejs','utf8','join','server/files/templates/registry.ejs','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','UserProfileSection','root','rimraf','zip-dir','moment','util','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/environment','../../mysqldb','jayson/promise','client','http','request','request\x20sent','Trunk,\x20%s,\x20%s,\x20%s','stringify','code','Trunk,\x20%s,\x20%s','error','message','info','result','catch','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','Trunks','name','send','index','rawAttributes','fieldName','key'];(function(_0x34f0be,_0x14b4db){var _0x537a5d=function(_0x502916){while(--_0x502916){_0x34f0be['push'](_0x34f0be['shift']());}};_0x537a5d(++_0x14b4db);}(_0xb821,0xa7));var _0x1b82=function(_0x368c25,_0x39e865){_0x368c25=_0x368c25-0x0;var _0xebec25=_0xb821[_0x368c25];return _0xebec25;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1b82('0x0'));var zipdir=require(_0x1b82('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x1b82('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x1b82('0x3'));var path=require(_0x1b82('0x4'));var sox=require(_0x1b82('0x5'));var csv=require(_0x1b82('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1b82('0x7'));var _=require(_0x1b82('0x8'));var squel=require(_0x1b82('0x9'));var crypto=require(_0x1b82('0xa'));var jsforce=require(_0x1b82('0xb'));var deskjs=require(_0x1b82('0xc'));var toCsv=require(_0x1b82('0x6'));var querystring=require(_0x1b82('0xd'));var Papa=require(_0x1b82('0xe'));var Redis=require('ioredis');var authService=require(_0x1b82('0xf'));var qs=require(_0x1b82('0x10'));var as=require(_0x1b82('0x11'));var hardwareService=require(_0x1b82('0x12'));var logger=require(_0x1b82('0x13'))(_0x1b82('0x14'));var utils=require(_0x1b82('0x15'));var config=require(_0x1b82('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x1b82('0x17'))['db'];var jayson=require(_0x1b82('0x18'));var client=jayson[_0x1b82('0x19')][_0x1b82('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x50aed7,_0x1a6285,_0x5767aa,_0x54915f){return new BPromise(function(_0x1e553a,_0x4bf75b){var _0x1cffd1=_0x54915f||client;return _0x1cffd1[_0x1b82('0x1b')](_0x50aed7,_0x5767aa)['then'](function(_0x46c2cf){logger['info']('Trunk,\x20%s,\x20%s',_0x1a6285,_0x1b82('0x1c'));logger['debug'](_0x1b82('0x1d'),_0x1a6285,_0x1b82('0x1c'),JSON[_0x1b82('0x1e')](_0x46c2cf));if(_0x46c2cf['error']){if(_0x46c2cf['error'][_0x1b82('0x1f')]===0x1f4){logger['error'](_0x1b82('0x20'),_0x1a6285,_0x46c2cf[_0x1b82('0x21')][_0x1b82('0x22')]);return _0x4bf75b(_0x46c2cf['error'][_0x1b82('0x22')]);}logger[_0x1b82('0x21')](_0x1b82('0x20'),_0x1a6285,_0x46c2cf[_0x1b82('0x21')][_0x1b82('0x22')]);return _0x1e553a(_0x46c2cf['error'][_0x1b82('0x22')]);}else{logger[_0x1b82('0x23')](_0x1b82('0x20'),_0x1a6285,_0x1b82('0x1c'));_0x1e553a(_0x46c2cf[_0x1b82('0x24')][_0x1b82('0x22')]);}})[_0x1b82('0x25')](function(_0x486e92){logger[_0x1b82('0x21')](_0x1b82('0x20'),_0x1a6285,_0x486e92);_0x4bf75b(_0x486e92);});});}function respondWithStatusCode(_0x5b8d09,_0x561d78){_0x561d78=_0x561d78||0xcc;return function(_0x225b81){if(_0x225b81){return _0x5b8d09[_0x1b82('0x26')](_0x561d78);}return _0x5b8d09['status'](_0x561d78)[_0x1b82('0x27')]();};}function respondWithResult(_0x4db690,_0x5cd458){_0x5cd458=_0x5cd458||0xc8;return function(_0x5f556b){if(_0x5f556b){return _0x4db690[_0x1b82('0x28')](_0x5cd458)[_0x1b82('0x29')](_0x5f556b);}};}function respondWithFilteredResult(_0xfd00d1,_0x257b79){return function(_0x548a3b){if(_0x548a3b){var _0x222483=typeof _0x257b79[_0x1b82('0x2a')]===_0x1b82('0x2b')&&typeof _0x257b79[_0x1b82('0x2c')]===_0x1b82('0x2b');var _0x1b8b6f=_0x548a3b[_0x1b82('0x2d')];var _0x21ea34=_0x222483?0x0:_0x257b79[_0x1b82('0x2a')];var _0x1f9c6b=_0x222483?_0x548a3b[_0x1b82('0x2d')]:_0x257b79[_0x1b82('0x2a')]+_0x257b79[_0x1b82('0x2c')];var _0x5ea890;if(_0x1f9c6b>=_0x1b8b6f){_0x1f9c6b=_0x1b8b6f;_0x5ea890=0xc8;}else{_0x5ea890=0xce;}_0xfd00d1[_0x1b82('0x28')](_0x5ea890);return _0xfd00d1[_0x1b82('0x2e')](_0x1b82('0x2f'),_0x21ea34+'-'+_0x1f9c6b+'/'+_0x1b8b6f)[_0x1b82('0x29')](_0x548a3b);}return null;};}function patchUpdates(_0x18e4ff){return function(_0x115ce7){try{jsonpatch[_0x1b82('0x30')](_0x115ce7,_0x18e4ff,!![]);}catch(_0x46575f){return BPromise[_0x1b82('0x31')](_0x46575f);}return _0x115ce7[_0x1b82('0x32')]();};}function saveUpdates(_0x501ab0,_0x225c06){return function(_0x29a31e){if(_0x29a31e){return _0x29a31e[_0x1b82('0x33')](_0x501ab0)[_0x1b82('0x34')](function(_0x5b7b18){return _0x5b7b18;});}return null;};}function removeEntity(_0x474218,_0xbf65a){return function(_0x544bd5){if(_0x544bd5){return _0x544bd5[_0x1b82('0x35')]()[_0x1b82('0x34')](function(){var _0x365c3c=_0x544bd5['get']({'plain':!![]});var _0x5efb8e=_0x1b82('0x36');return db['UserProfileResource']['destroy']({'where':{'type':_0x5efb8e,'resourceId':_0x365c3c['id']}})[_0x1b82('0x34')](function(){return _0x544bd5;});})[_0x1b82('0x34')](function(){_0x474218[_0x1b82('0x28')](0xcc)['end']();});}};}function handleEntityNotFound(_0x42a64e,_0x366db3){return function(_0xea774a){if(!_0xea774a){_0x42a64e[_0x1b82('0x26')](0x194);}return _0xea774a;};}function handleError(_0x4dd64a,_0x42c1c4){_0x42c1c4=_0x42c1c4||0x1f4;return function(_0x1cd7de){logger[_0x1b82('0x21')](_0x1cd7de['stack']);if(_0x1cd7de['name']){delete _0x1cd7de[_0x1b82('0x37')];}_0x4dd64a['status'](_0x42c1c4)[_0x1b82('0x38')](_0x1cd7de);};}exports[_0x1b82('0x39')]=function(_0x286b4b,_0x348880){var _0x1255db={},_0x3ab35c={},_0x39fe4a={'count':0x0,'rows':[]};var _0x1368df=_['map'](db['Trunk'][_0x1b82('0x3a')],function(_0x5f4baf){return{'name':_0x5f4baf[_0x1b82('0x3b')],'type':_0x5f4baf['type'][_0x1b82('0x3c')]};});_0x3ab35c[_0x1b82('0x3d')]=_[_0x1b82('0x3e')](_0x1368df,_0x1b82('0x37'));_0x3ab35c[_0x1b82('0x3f')]=_[_0x1b82('0x40')](_0x286b4b['query']);_0x3ab35c[_0x1b82('0x41')]=_['intersection'](_0x3ab35c[_0x1b82('0x3d')],_0x3ab35c['query']);_0x1255db[_0x1b82('0x42')]=_['intersection'](_0x3ab35c['model'],qs[_0x1b82('0x43')](_0x286b4b[_0x1b82('0x3f')][_0x1b82('0x43')]));_0x1255db[_0x1b82('0x42')]=_0x1255db[_0x1b82('0x42')]['length']?_0x1255db[_0x1b82('0x42')]:_0x3ab35c['model'];if(!_0x286b4b[_0x1b82('0x3f')][_0x1b82('0x44')](_0x1b82('0x45'))){_0x1255db[_0x1b82('0x2c')]=qs[_0x1b82('0x2c')](_0x286b4b['query'][_0x1b82('0x2c')]);_0x1255db['offset']=qs[_0x1b82('0x2a')](_0x286b4b[_0x1b82('0x3f')]['offset']);}_0x1255db[_0x1b82('0x46')]=qs[_0x1b82('0x47')](_0x286b4b[_0x1b82('0x3f')][_0x1b82('0x47')]);_0x1255db[_0x1b82('0x48')]=qs[_0x1b82('0x41')](_[_0x1b82('0x49')](_0x286b4b['query'],_0x3ab35c[_0x1b82('0x41')]),_0x1368df);if(_0x286b4b['query'][_0x1b82('0x4a')]){_0x1255db[_0x1b82('0x48')]=_[_0x1b82('0x4b')](_0x1255db[_0x1b82('0x48')],{'$or':_[_0x1b82('0x3e')](_0x1368df,function(_0x1d24d6){if(_0x1d24d6[_0x1b82('0x4c')]!==_0x1b82('0x4d')){var _0x192ce3={};_0x192ce3[_0x1d24d6[_0x1b82('0x37')]]={'$like':'%'+_0x286b4b[_0x1b82('0x3f')][_0x1b82('0x4a')]+'%'};return _0x192ce3;}})});}_0x1255db=_[_0x1b82('0x4b')]({},_0x1255db,_0x286b4b[_0x1b82('0x4e')]);var _0x4fb92f={'where':_0x1255db['where']};return db[_0x1b82('0x4f')]['count'](_0x4fb92f)[_0x1b82('0x34')](function(_0x3df0af){_0x39fe4a[_0x1b82('0x2d')]=_0x3df0af;if(_0x286b4b['query'][_0x1b82('0x50')]){_0x1255db['include']=[{'all':!![]}];}return db['Trunk'][_0x1b82('0x51')](_0x1255db);})[_0x1b82('0x34')](function(_0x242324){_0x39fe4a['rows']=_0x242324;return _0x39fe4a;})[_0x1b82('0x34')](respondWithFilteredResult(_0x348880,_0x1255db))[_0x1b82('0x25')](handleError(_0x348880,null));};exports['show']=function(_0x5ca898,_0x106282){var _0x2e676a={'raw':![],'where':{'id':_0x5ca898['params']['id']}},_0x2dc53e={};_0x2dc53e[_0x1b82('0x3d')]=_[_0x1b82('0x40')](db[_0x1b82('0x4f')][_0x1b82('0x3a')]);_0x2dc53e[_0x1b82('0x3f')]=_[_0x1b82('0x40')](_0x5ca898['query']);_0x2dc53e[_0x1b82('0x41')]=_['intersection'](_0x2dc53e[_0x1b82('0x3d')],_0x2dc53e[_0x1b82('0x3f')]);_0x2e676a['attributes']=_[_0x1b82('0x52')](_0x2dc53e['model'],qs[_0x1b82('0x43')](_0x5ca898[_0x1b82('0x3f')][_0x1b82('0x43')]));_0x2e676a[_0x1b82('0x42')]=_0x2e676a[_0x1b82('0x42')][_0x1b82('0x53')]?_0x2e676a['attributes']:_0x2dc53e['model'];if(_0x5ca898[_0x1b82('0x3f')][_0x1b82('0x50')]){_0x2e676a[_0x1b82('0x54')]=[{'all':!![]}];}_0x2e676a=_[_0x1b82('0x4b')]({},_0x2e676a,_0x5ca898[_0x1b82('0x4e')]);return db[_0x1b82('0x4f')][_0x1b82('0x55')](_0x2e676a)[_0x1b82('0x34')](handleEntityNotFound(_0x106282,null))['then'](respondWithResult(_0x106282,null))['catch'](handleError(_0x106282,null));};exports['clone']=function(_0x2658b5,_0x2a95d2){var _0x207f1c={'where':{'id':_0x2658b5[_0x1b82('0x56')]['id']}},_0x27ad80={};_0x27ad80[_0x1b82('0x3d')]=_[_0x1b82('0x40')](db['Trunk'][_0x1b82('0x3a')]);_0x207f1c[_0x1b82('0x42')]=_[_0x1b82('0x52')](_0x27ad80[_0x1b82('0x3d')],qs[_0x1b82('0x43')](_0x2658b5[_0x1b82('0x3f')][_0x1b82('0x43')]));_0x207f1c[_0x1b82('0x42')]=_0x207f1c['attributes'][_0x1b82('0x53')]?_0x207f1c[_0x1b82('0x42')]:_0x27ad80[_0x1b82('0x3d')];if(_0x2658b5[_0x1b82('0x3f')][_0x1b82('0x50')]){_0x207f1c['include']=[{'all':!![]}];}_0x207f1c=_['merge']({},_0x207f1c,_0x2658b5[_0x1b82('0x4e')]);return db[_0x1b82('0x4f')][_0x1b82('0x55')](_0x207f1c)[_0x1b82('0x34')](handleEntityNotFound(_0x2a95d2,null))['then'](function(_0x170905){if(_0x170905){var _0x352603=_0x170905[_0x1b82('0x57')]({'plain':!![]});_0x352603=qs[_0x1b82('0x58')](_0x352603,['id',_0x1b82('0x59'),_0x1b82('0x5a')]);_0x2658b5[_0x1b82('0x5b')]=_[_0x1b82('0x58')](_0x2658b5[_0x1b82('0x5b')],['id',_0x1b82('0x59'),'updatedAt']);return db[_0x1b82('0x4f')][_0x1b82('0x5c')](_['merge'](_0x352603,_0x2658b5[_0x1b82('0x5b')]),{'include':_0x2658b5[_0x1b82('0x3f')][_0x1b82('0x50')]?[{'all':!![]}]:undefined})[_0x1b82('0x34')](function(_0x4b26c4){var _0x30f13a=_0x2658b5[_0x1b82('0x5d')][_0x1b82('0x57')]({'plain':!![]});if(!_0x30f13a)throw new Error(_0x1b82('0x5e'));if(_0x30f13a[_0x1b82('0x5f')]===_0x1b82('0x5d')){var _0x4e8fa2=_0x4b26c4[_0x1b82('0x57')]({'plain':!![]});var _0x5267c3=_0x1b82('0x36');return db['UserProfileSection'][_0x1b82('0x55')]({'where':{'name':_0x5267c3,'userProfileId':_0x30f13a[_0x1b82('0x60')]},'raw':!![]})[_0x1b82('0x34')](function(_0x2db0fe){if(_0x2db0fe&&_0x2db0fe[_0x1b82('0x61')]===0x0){return db[_0x1b82('0x62')][_0x1b82('0x5c')]({'name':_0x4e8fa2['name'],'resourceId':_0x4e8fa2['id'],'type':_0x2db0fe[_0x1b82('0x37')],'sectionId':_0x2db0fe['id']},{})[_0x1b82('0x34')](function(){return _0x4b26c4;});}else{return _0x4b26c4;}})[_0x1b82('0x25')](function(_0x2de10c){logger[_0x1b82('0x21')](_0x1b82('0x63'),_0x2de10c);throw _0x2de10c;});}return _0x4b26c4;});}})[_0x1b82('0x34')](respondWithResult(_0x2a95d2,0xc9))[_0x1b82('0x25')](handleError(_0x2a95d2,null));};exports[_0x1b82('0x5c')]=function(_0x3f7690,_0x1873de,_0xe31cbc){var _0x1ef92c;return db['Trunk'][_0x1b82('0x5c')](_0x3f7690[_0x1b82('0x5b')],{'raw':!![]})[_0x1b82('0x34')](function(_0x4a229e){_0x1ef92c=_0x4a229e;return db[_0x1b82('0x4f')][_0x1b82('0x51')]({'raw':!![]});})['then'](function(_0x3bf106){var _0x5cc386=fs[_0x1b82('0x64')](path['join'](config['root'],_0x1b82('0x65')),_0x1b82('0x66'));var _0x3b4088=fs[_0x1b82('0x64')](path[_0x1b82('0x67')](config['root'],_0x1b82('0x68')),'utf8');var _0x143689=ejs[_0x1b82('0x69')](_0x5cc386,{'trunks':_0x3bf106||[]});fs[_0x1b82('0x6a')](_0x1b82('0x6b'),_0x143689);if(_0x1ef92c[_0x1b82('0x6c')]){var _0x29c42e=ejs[_0x1b82('0x69')](_0x3b4088,{'trunks':_0x3bf106||[]});fs[_0x1b82('0x6a')](_0x1b82('0x6d'),_0x29c42e);}})[_0x1b82('0x34')](function(){return respondWithRpcPromise(_0x1b82('0x6e'),'create',{'module':_0x1b82('0x6f')});})['then'](function(){var _0x4c2e52=_0x3f7690[_0x1b82('0x5d')][_0x1b82('0x57')]({'plain':!![]});if(!_0x4c2e52)throw new Error(_0x1b82('0x5e'));if(_0x4c2e52[_0x1b82('0x5f')]===_0x1b82('0x5d')){var _0x1dd3a1=_0x1ef92c[_0x1b82('0x57')]({'plain':!![]});return db[_0x1b82('0x70')][_0x1b82('0x55')]({'where':{'name':_0x1b82('0x36'),'userProfileId':_0x4c2e52['userProfileId']},'raw':!![]})[_0x1b82('0x34')](function(_0x4d496b){if(_0x4d496b&&_0x4d496b[_0x1b82('0x61')]===0x0){return db['UserProfileResource'][_0x1b82('0x5c')]({'name':_0x1dd3a1[_0x1b82('0x37')],'resourceId':_0x1dd3a1['id'],'type':_0x4d496b[_0x1b82('0x37')],'sectionId':_0x4d496b['id']},{})[_0x1b82('0x34')](function(){return _0x1ef92c;});}else{return _0x1ef92c;}})[_0x1b82('0x25')](function(_0x49a202){logger[_0x1b82('0x21')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x49a202);throw _0x49a202;});}return _0x1ef92c;})['then'](respondWithResult(_0x1873de,0xc9))[_0x1b82('0x25')](handleError(_0x1873de,null));};exports[_0x1b82('0x33')]=function(_0x1a4826,_0x4d986c,_0x2e9191){var _0x52f16e;return db[_0x1b82('0x4f')]['find']({'where':{'id':_0x1a4826[_0x1b82('0x56')]['id']}})[_0x1b82('0x34')](handleEntityNotFound(_0x4d986c,null))[_0x1b82('0x34')](saveUpdates(_0x1a4826[_0x1b82('0x5b')],null))['then'](function(_0x46cae4){if(_0x46cae4){_0x52f16e=_0x46cae4;return db['Trunk'][_0x1b82('0x51')]({'raw':!![]});}})[_0x1b82('0x34')](function(_0x1095fb){if(_0x1095fb){var _0x185fce=fs[_0x1b82('0x64')](path['join'](config[_0x1b82('0x71')],'server/files/templates/trunk.ejs'),_0x1b82('0x66'));var _0x5ce247=fs[_0x1b82('0x64')](path[_0x1b82('0x67')](config[_0x1b82('0x71')],'server/files/templates/registry.ejs'),_0x1b82('0x66'));var _0x31a56e=ejs[_0x1b82('0x69')](_0x185fce,{'trunks':_0x1095fb||[]});fs['writeFileSync'](_0x1b82('0x6b'),_0x31a56e);var _0x396272=ejs[_0x1b82('0x69')](_0x5ce247,{'trunks':_0x1095fb||[]});fs[_0x1b82('0x6a')](_0x1b82('0x6d'),_0x396272);return respondWithRpcPromise('Reload',_0x1b82('0x33'),{'module':'chan_sip.so'});}return null;})['then'](function(_0x2759ac){if(_0x2759ac){return _0x52f16e;}})['then'](respondWithResult(_0x4d986c,null))[_0x1b82('0x25')](handleError(_0x4d986c,null));};exports[_0x1b82('0x35')]=function(_0x5f349f,_0x3e17b0,_0x391207){var _0x553ac5;return db['Trunk']['find']({'where':{'id':_0x5f349f['params']['id']}})[_0x1b82('0x34')](handleEntityNotFound(_0x3e17b0,null))[_0x1b82('0x34')](removeEntity(_0x3e17b0,null))[_0x1b82('0x34')](function(){return db['Trunk'][_0x1b82('0x51')]({'raw':!![]});})['then'](function(_0x7d95b6){var _0x372c3b=fs[_0x1b82('0x64')](path[_0x1b82('0x67')](config['root'],_0x1b82('0x65')),_0x1b82('0x66'));var _0x14510c=fs[_0x1b82('0x64')](path[_0x1b82('0x67')](config[_0x1b82('0x71')],_0x1b82('0x68')),'utf8');var _0x58e180=ejs[_0x1b82('0x69')](_0x372c3b,{'trunks':_0x7d95b6});var _0x531d3f=ejs['render'](_0x14510c,{'trunks':_0x7d95b6});fs[_0x1b82('0x6a')](_0x1b82('0x6b'),_0x58e180);fs[_0x1b82('0x6a')]('/etc/asterisk/sip_xcally_registers.conf',_0x531d3f);return respondWithRpcPromise(_0x1b82('0x6e'),'destroy',{'module':_0x1b82('0x6f')});})[_0x1b82('0x25')](handleError(_0x3e17b0,null));};
\ No newline at end of file
+var _0xb821=['model','map','query','keys','filters','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','Trunk','includeAll','findAll','intersection','length','include','find','params','get','omit','createdAt','updatedAt','body','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readFileSync','server/files/templates/trunk.ejs','utf8','join','server/files/templates/registry.ejs','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','UserProfileSection','root','rimraf','zip-dir','moment','util','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/environment','../../mysqldb','jayson/promise','client','http','request','request\x20sent','Trunk,\x20%s,\x20%s,\x20%s','stringify','code','Trunk,\x20%s,\x20%s','error','message','info','result','catch','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','Trunks','name','send','index','rawAttributes','fieldName','key'];(function(_0x10e737,_0x2f2f14){var _0x5038d7=function(_0x1be835){while(--_0x1be835){_0x10e737['push'](_0x10e737['shift']());}};_0x5038d7(++_0x2f2f14);}(_0xb821,0xa7));var _0x1b82=function(_0x15d56b,_0x415b6a){_0x15d56b=_0x15d56b-0x0;var _0x30999=_0xb821[_0x15d56b];return _0x30999;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1b82('0x0'));var zipdir=require(_0x1b82('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x1b82('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x1b82('0x3'));var path=require(_0x1b82('0x4'));var sox=require(_0x1b82('0x5'));var csv=require(_0x1b82('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1b82('0x7'));var _=require(_0x1b82('0x8'));var squel=require(_0x1b82('0x9'));var crypto=require(_0x1b82('0xa'));var jsforce=require(_0x1b82('0xb'));var deskjs=require(_0x1b82('0xc'));var toCsv=require(_0x1b82('0x6'));var querystring=require(_0x1b82('0xd'));var Papa=require(_0x1b82('0xe'));var Redis=require('ioredis');var authService=require(_0x1b82('0xf'));var qs=require(_0x1b82('0x10'));var as=require(_0x1b82('0x11'));var hardwareService=require(_0x1b82('0x12'));var logger=require(_0x1b82('0x13'))(_0x1b82('0x14'));var utils=require(_0x1b82('0x15'));var config=require(_0x1b82('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x1b82('0x17'))['db'];var jayson=require(_0x1b82('0x18'));var client=jayson[_0x1b82('0x19')][_0x1b82('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x50aed7,_0x1a6285,_0x5767aa,_0x54915f){return new BPromise(function(_0x1e553a,_0x4bf75b){var _0x1cffd1=_0x54915f||client;return _0x1cffd1[_0x1b82('0x1b')](_0x50aed7,_0x5767aa)['then'](function(_0x46c2cf){logger['info']('Trunk,\x20%s,\x20%s',_0x1a6285,_0x1b82('0x1c'));logger['debug'](_0x1b82('0x1d'),_0x1a6285,_0x1b82('0x1c'),JSON[_0x1b82('0x1e')](_0x46c2cf));if(_0x46c2cf['error']){if(_0x46c2cf['error'][_0x1b82('0x1f')]===0x1f4){logger['error'](_0x1b82('0x20'),_0x1a6285,_0x46c2cf[_0x1b82('0x21')][_0x1b82('0x22')]);return _0x4bf75b(_0x46c2cf['error'][_0x1b82('0x22')]);}logger[_0x1b82('0x21')](_0x1b82('0x20'),_0x1a6285,_0x46c2cf[_0x1b82('0x21')][_0x1b82('0x22')]);return _0x1e553a(_0x46c2cf['error'][_0x1b82('0x22')]);}else{logger[_0x1b82('0x23')](_0x1b82('0x20'),_0x1a6285,_0x1b82('0x1c'));_0x1e553a(_0x46c2cf[_0x1b82('0x24')][_0x1b82('0x22')]);}})[_0x1b82('0x25')](function(_0x486e92){logger[_0x1b82('0x21')](_0x1b82('0x20'),_0x1a6285,_0x486e92);_0x4bf75b(_0x486e92);});});}function respondWithStatusCode(_0x5b8d09,_0x561d78){_0x561d78=_0x561d78||0xcc;return function(_0x225b81){if(_0x225b81){return _0x5b8d09[_0x1b82('0x26')](_0x561d78);}return _0x5b8d09['status'](_0x561d78)[_0x1b82('0x27')]();};}function respondWithResult(_0x4db690,_0x5cd458){_0x5cd458=_0x5cd458||0xc8;return function(_0x5f556b){if(_0x5f556b){return _0x4db690[_0x1b82('0x28')](_0x5cd458)[_0x1b82('0x29')](_0x5f556b);}};}function respondWithFilteredResult(_0xfd00d1,_0x257b79){return function(_0x548a3b){if(_0x548a3b){var _0x222483=typeof _0x257b79[_0x1b82('0x2a')]===_0x1b82('0x2b')&&typeof _0x257b79[_0x1b82('0x2c')]===_0x1b82('0x2b');var _0x1b8b6f=_0x548a3b[_0x1b82('0x2d')];var _0x21ea34=_0x222483?0x0:_0x257b79[_0x1b82('0x2a')];var _0x1f9c6b=_0x222483?_0x548a3b[_0x1b82('0x2d')]:_0x257b79[_0x1b82('0x2a')]+_0x257b79[_0x1b82('0x2c')];var _0x5ea890;if(_0x1f9c6b>=_0x1b8b6f){_0x1f9c6b=_0x1b8b6f;_0x5ea890=0xc8;}else{_0x5ea890=0xce;}_0xfd00d1[_0x1b82('0x28')](_0x5ea890);return _0xfd00d1[_0x1b82('0x2e')](_0x1b82('0x2f'),_0x21ea34+'-'+_0x1f9c6b+'/'+_0x1b8b6f)[_0x1b82('0x29')](_0x548a3b);}return null;};}function patchUpdates(_0x18e4ff){return function(_0x115ce7){try{jsonpatch[_0x1b82('0x30')](_0x115ce7,_0x18e4ff,!![]);}catch(_0x46575f){return BPromise[_0x1b82('0x31')](_0x46575f);}return _0x115ce7[_0x1b82('0x32')]();};}function saveUpdates(_0x501ab0,_0x225c06){return function(_0x29a31e){if(_0x29a31e){return _0x29a31e[_0x1b82('0x33')](_0x501ab0)[_0x1b82('0x34')](function(_0x5b7b18){return _0x5b7b18;});}return null;};}function removeEntity(_0x474218,_0xbf65a){return function(_0x544bd5){if(_0x544bd5){return _0x544bd5[_0x1b82('0x35')]()[_0x1b82('0x34')](function(){var _0x365c3c=_0x544bd5['get']({'plain':!![]});var _0x5efb8e=_0x1b82('0x36');return db['UserProfileResource']['destroy']({'where':{'type':_0x5efb8e,'resourceId':_0x365c3c['id']}})[_0x1b82('0x34')](function(){return _0x544bd5;});})[_0x1b82('0x34')](function(){_0x474218[_0x1b82('0x28')](0xcc)['end']();});}};}function handleEntityNotFound(_0x42a64e,_0x366db3){return function(_0xea774a){if(!_0xea774a){_0x42a64e[_0x1b82('0x26')](0x194);}return _0xea774a;};}function handleError(_0x4dd64a,_0x42c1c4){_0x42c1c4=_0x42c1c4||0x1f4;return function(_0x1cd7de){logger[_0x1b82('0x21')](_0x1cd7de['stack']);if(_0x1cd7de['name']){delete _0x1cd7de[_0x1b82('0x37')];}_0x4dd64a['status'](_0x42c1c4)[_0x1b82('0x38')](_0x1cd7de);};}exports[_0x1b82('0x39')]=function(_0x286b4b,_0x348880){var _0x1255db={},_0x3ab35c={},_0x39fe4a={'count':0x0,'rows':[]};var _0x1368df=_['map'](db['Trunk'][_0x1b82('0x3a')],function(_0x5f4baf){return{'name':_0x5f4baf[_0x1b82('0x3b')],'type':_0x5f4baf['type'][_0x1b82('0x3c')]};});_0x3ab35c[_0x1b82('0x3d')]=_[_0x1b82('0x3e')](_0x1368df,_0x1b82('0x37'));_0x3ab35c[_0x1b82('0x3f')]=_[_0x1b82('0x40')](_0x286b4b['query']);_0x3ab35c[_0x1b82('0x41')]=_['intersection'](_0x3ab35c[_0x1b82('0x3d')],_0x3ab35c['query']);_0x1255db[_0x1b82('0x42')]=_['intersection'](_0x3ab35c['model'],qs[_0x1b82('0x43')](_0x286b4b[_0x1b82('0x3f')][_0x1b82('0x43')]));_0x1255db[_0x1b82('0x42')]=_0x1255db[_0x1b82('0x42')]['length']?_0x1255db[_0x1b82('0x42')]:_0x3ab35c['model'];if(!_0x286b4b[_0x1b82('0x3f')][_0x1b82('0x44')](_0x1b82('0x45'))){_0x1255db[_0x1b82('0x2c')]=qs[_0x1b82('0x2c')](_0x286b4b['query'][_0x1b82('0x2c')]);_0x1255db['offset']=qs[_0x1b82('0x2a')](_0x286b4b[_0x1b82('0x3f')]['offset']);}_0x1255db[_0x1b82('0x46')]=qs[_0x1b82('0x47')](_0x286b4b[_0x1b82('0x3f')][_0x1b82('0x47')]);_0x1255db[_0x1b82('0x48')]=qs[_0x1b82('0x41')](_[_0x1b82('0x49')](_0x286b4b['query'],_0x3ab35c[_0x1b82('0x41')]),_0x1368df);if(_0x286b4b['query'][_0x1b82('0x4a')]){_0x1255db[_0x1b82('0x48')]=_[_0x1b82('0x4b')](_0x1255db[_0x1b82('0x48')],{'$or':_[_0x1b82('0x3e')](_0x1368df,function(_0x1d24d6){if(_0x1d24d6[_0x1b82('0x4c')]!==_0x1b82('0x4d')){var _0x192ce3={};_0x192ce3[_0x1d24d6[_0x1b82('0x37')]]={'$like':'%'+_0x286b4b[_0x1b82('0x3f')][_0x1b82('0x4a')]+'%'};return _0x192ce3;}})});}_0x1255db=_[_0x1b82('0x4b')]({},_0x1255db,_0x286b4b[_0x1b82('0x4e')]);var _0x4fb92f={'where':_0x1255db['where']};return db[_0x1b82('0x4f')]['count'](_0x4fb92f)[_0x1b82('0x34')](function(_0x3df0af){_0x39fe4a[_0x1b82('0x2d')]=_0x3df0af;if(_0x286b4b['query'][_0x1b82('0x50')]){_0x1255db['include']=[{'all':!![]}];}return db['Trunk'][_0x1b82('0x51')](_0x1255db);})[_0x1b82('0x34')](function(_0x242324){_0x39fe4a['rows']=_0x242324;return _0x39fe4a;})[_0x1b82('0x34')](respondWithFilteredResult(_0x348880,_0x1255db))[_0x1b82('0x25')](handleError(_0x348880,null));};exports['show']=function(_0x5ca898,_0x106282){var _0x2e676a={'raw':![],'where':{'id':_0x5ca898['params']['id']}},_0x2dc53e={};_0x2dc53e[_0x1b82('0x3d')]=_[_0x1b82('0x40')](db[_0x1b82('0x4f')][_0x1b82('0x3a')]);_0x2dc53e[_0x1b82('0x3f')]=_[_0x1b82('0x40')](_0x5ca898['query']);_0x2dc53e[_0x1b82('0x41')]=_['intersection'](_0x2dc53e[_0x1b82('0x3d')],_0x2dc53e[_0x1b82('0x3f')]);_0x2e676a['attributes']=_[_0x1b82('0x52')](_0x2dc53e['model'],qs[_0x1b82('0x43')](_0x5ca898[_0x1b82('0x3f')][_0x1b82('0x43')]));_0x2e676a[_0x1b82('0x42')]=_0x2e676a[_0x1b82('0x42')][_0x1b82('0x53')]?_0x2e676a['attributes']:_0x2dc53e['model'];if(_0x5ca898[_0x1b82('0x3f')][_0x1b82('0x50')]){_0x2e676a[_0x1b82('0x54')]=[{'all':!![]}];}_0x2e676a=_[_0x1b82('0x4b')]({},_0x2e676a,_0x5ca898[_0x1b82('0x4e')]);return db[_0x1b82('0x4f')][_0x1b82('0x55')](_0x2e676a)[_0x1b82('0x34')](handleEntityNotFound(_0x106282,null))['then'](respondWithResult(_0x106282,null))['catch'](handleError(_0x106282,null));};exports['clone']=function(_0x2658b5,_0x2a95d2){var _0x207f1c={'where':{'id':_0x2658b5[_0x1b82('0x56')]['id']}},_0x27ad80={};_0x27ad80[_0x1b82('0x3d')]=_[_0x1b82('0x40')](db['Trunk'][_0x1b82('0x3a')]);_0x207f1c[_0x1b82('0x42')]=_[_0x1b82('0x52')](_0x27ad80[_0x1b82('0x3d')],qs[_0x1b82('0x43')](_0x2658b5[_0x1b82('0x3f')][_0x1b82('0x43')]));_0x207f1c[_0x1b82('0x42')]=_0x207f1c['attributes'][_0x1b82('0x53')]?_0x207f1c[_0x1b82('0x42')]:_0x27ad80[_0x1b82('0x3d')];if(_0x2658b5[_0x1b82('0x3f')][_0x1b82('0x50')]){_0x207f1c['include']=[{'all':!![]}];}_0x207f1c=_['merge']({},_0x207f1c,_0x2658b5[_0x1b82('0x4e')]);return db[_0x1b82('0x4f')][_0x1b82('0x55')](_0x207f1c)[_0x1b82('0x34')](handleEntityNotFound(_0x2a95d2,null))['then'](function(_0x170905){if(_0x170905){var _0x352603=_0x170905[_0x1b82('0x57')]({'plain':!![]});_0x352603=qs[_0x1b82('0x58')](_0x352603,['id',_0x1b82('0x59'),_0x1b82('0x5a')]);_0x2658b5[_0x1b82('0x5b')]=_[_0x1b82('0x58')](_0x2658b5[_0x1b82('0x5b')],['id',_0x1b82('0x59'),'updatedAt']);return db[_0x1b82('0x4f')][_0x1b82('0x5c')](_['merge'](_0x352603,_0x2658b5[_0x1b82('0x5b')]),{'include':_0x2658b5[_0x1b82('0x3f')][_0x1b82('0x50')]?[{'all':!![]}]:undefined})[_0x1b82('0x34')](function(_0x4b26c4){var _0x30f13a=_0x2658b5[_0x1b82('0x5d')][_0x1b82('0x57')]({'plain':!![]});if(!_0x30f13a)throw new Error(_0x1b82('0x5e'));if(_0x30f13a[_0x1b82('0x5f')]===_0x1b82('0x5d')){var _0x4e8fa2=_0x4b26c4[_0x1b82('0x57')]({'plain':!![]});var _0x5267c3=_0x1b82('0x36');return db['UserProfileSection'][_0x1b82('0x55')]({'where':{'name':_0x5267c3,'userProfileId':_0x30f13a[_0x1b82('0x60')]},'raw':!![]})[_0x1b82('0x34')](function(_0x2db0fe){if(_0x2db0fe&&_0x2db0fe[_0x1b82('0x61')]===0x0){return db[_0x1b82('0x62')][_0x1b82('0x5c')]({'name':_0x4e8fa2['name'],'resourceId':_0x4e8fa2['id'],'type':_0x2db0fe[_0x1b82('0x37')],'sectionId':_0x2db0fe['id']},{})[_0x1b82('0x34')](function(){return _0x4b26c4;});}else{return _0x4b26c4;}})[_0x1b82('0x25')](function(_0x2de10c){logger[_0x1b82('0x21')](_0x1b82('0x63'),_0x2de10c);throw _0x2de10c;});}return _0x4b26c4;});}})[_0x1b82('0x34')](respondWithResult(_0x2a95d2,0xc9))[_0x1b82('0x25')](handleError(_0x2a95d2,null));};exports[_0x1b82('0x5c')]=function(_0x3f7690,_0x1873de,_0xe31cbc){var _0x1ef92c;return db['Trunk'][_0x1b82('0x5c')](_0x3f7690[_0x1b82('0x5b')],{'raw':!![]})[_0x1b82('0x34')](function(_0x4a229e){_0x1ef92c=_0x4a229e;return db[_0x1b82('0x4f')][_0x1b82('0x51')]({'raw':!![]});})['then'](function(_0x3bf106){var _0x5cc386=fs[_0x1b82('0x64')](path['join'](config['root'],_0x1b82('0x65')),_0x1b82('0x66'));var _0x3b4088=fs[_0x1b82('0x64')](path[_0x1b82('0x67')](config['root'],_0x1b82('0x68')),'utf8');var _0x143689=ejs[_0x1b82('0x69')](_0x5cc386,{'trunks':_0x3bf106||[]});fs[_0x1b82('0x6a')](_0x1b82('0x6b'),_0x143689);if(_0x1ef92c[_0x1b82('0x6c')]){var _0x29c42e=ejs[_0x1b82('0x69')](_0x3b4088,{'trunks':_0x3bf106||[]});fs[_0x1b82('0x6a')](_0x1b82('0x6d'),_0x29c42e);}})[_0x1b82('0x34')](function(){return respondWithRpcPromise(_0x1b82('0x6e'),'create',{'module':_0x1b82('0x6f')});})['then'](function(){var _0x4c2e52=_0x3f7690[_0x1b82('0x5d')][_0x1b82('0x57')]({'plain':!![]});if(!_0x4c2e52)throw new Error(_0x1b82('0x5e'));if(_0x4c2e52[_0x1b82('0x5f')]===_0x1b82('0x5d')){var _0x1dd3a1=_0x1ef92c[_0x1b82('0x57')]({'plain':!![]});return db[_0x1b82('0x70')][_0x1b82('0x55')]({'where':{'name':_0x1b82('0x36'),'userProfileId':_0x4c2e52['userProfileId']},'raw':!![]})[_0x1b82('0x34')](function(_0x4d496b){if(_0x4d496b&&_0x4d496b[_0x1b82('0x61')]===0x0){return db['UserProfileResource'][_0x1b82('0x5c')]({'name':_0x1dd3a1[_0x1b82('0x37')],'resourceId':_0x1dd3a1['id'],'type':_0x4d496b[_0x1b82('0x37')],'sectionId':_0x4d496b['id']},{})[_0x1b82('0x34')](function(){return _0x1ef92c;});}else{return _0x1ef92c;}})[_0x1b82('0x25')](function(_0x49a202){logger[_0x1b82('0x21')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x49a202);throw _0x49a202;});}return _0x1ef92c;})['then'](respondWithResult(_0x1873de,0xc9))[_0x1b82('0x25')](handleError(_0x1873de,null));};exports[_0x1b82('0x33')]=function(_0x1a4826,_0x4d986c,_0x2e9191){var _0x52f16e;return db[_0x1b82('0x4f')]['find']({'where':{'id':_0x1a4826[_0x1b82('0x56')]['id']}})[_0x1b82('0x34')](handleEntityNotFound(_0x4d986c,null))[_0x1b82('0x34')](saveUpdates(_0x1a4826[_0x1b82('0x5b')],null))['then'](function(_0x46cae4){if(_0x46cae4){_0x52f16e=_0x46cae4;return db['Trunk'][_0x1b82('0x51')]({'raw':!![]});}})[_0x1b82('0x34')](function(_0x1095fb){if(_0x1095fb){var _0x185fce=fs[_0x1b82('0x64')](path['join'](config[_0x1b82('0x71')],'server/files/templates/trunk.ejs'),_0x1b82('0x66'));var _0x5ce247=fs[_0x1b82('0x64')](path[_0x1b82('0x67')](config[_0x1b82('0x71')],'server/files/templates/registry.ejs'),_0x1b82('0x66'));var _0x31a56e=ejs[_0x1b82('0x69')](_0x185fce,{'trunks':_0x1095fb||[]});fs['writeFileSync'](_0x1b82('0x6b'),_0x31a56e);var _0x396272=ejs[_0x1b82('0x69')](_0x5ce247,{'trunks':_0x1095fb||[]});fs[_0x1b82('0x6a')](_0x1b82('0x6d'),_0x396272);return respondWithRpcPromise('Reload',_0x1b82('0x33'),{'module':'chan_sip.so'});}return null;})['then'](function(_0x2759ac){if(_0x2759ac){return _0x52f16e;}})['then'](respondWithResult(_0x4d986c,null))[_0x1b82('0x25')](handleError(_0x4d986c,null));};exports[_0x1b82('0x35')]=function(_0x5f349f,_0x3e17b0,_0x391207){var _0x553ac5;return db['Trunk']['find']({'where':{'id':_0x5f349f['params']['id']}})[_0x1b82('0x34')](handleEntityNotFound(_0x3e17b0,null))[_0x1b82('0x34')](removeEntity(_0x3e17b0,null))[_0x1b82('0x34')](function(){return db['Trunk'][_0x1b82('0x51')]({'raw':!![]});})['then'](function(_0x7d95b6){var _0x372c3b=fs[_0x1b82('0x64')](path[_0x1b82('0x67')](config['root'],_0x1b82('0x65')),_0x1b82('0x66'));var _0x14510c=fs[_0x1b82('0x64')](path[_0x1b82('0x67')](config[_0x1b82('0x71')],_0x1b82('0x68')),'utf8');var _0x58e180=ejs[_0x1b82('0x69')](_0x372c3b,{'trunks':_0x7d95b6});var _0x531d3f=ejs['render'](_0x14510c,{'trunks':_0x7d95b6});fs[_0x1b82('0x6a')](_0x1b82('0x6b'),_0x58e180);fs[_0x1b82('0x6a')]('/etc/asterisk/sip_xcally_registers.conf',_0x531d3f);return respondWithRpcPromise(_0x1b82('0x6e'),'destroy',{'module':_0x1b82('0x6f')});})[_0x1b82('0x25')](handleError(_0x3e17b0,null));};
\ No newline at end of file
index 4f0eaed..542f90e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf05f=['api','moment','path','rimraf','./trunk.attributes','exports','define','Trunk','util','../../config/logger'];(function(_0x587909,_0x34b68f){var _0x112453=function(_0x3ddb97){while(--_0x3ddb97){_0x587909['push'](_0x587909['shift']());}};_0x112453(++_0x34b68f);}(_0xf05f,0x13e));var _0xff05=function(_0x92fd5e,_0x4ca56d){_0x92fd5e=_0x92fd5e-0x0;var _0x5d44db=_0xf05f[_0x92fd5e];return _0x5d44db;};'use strict';var _=require('lodash');var util=require(_0xff05('0x0'));var logger=require(_0xff05('0x1'))(_0xff05('0x2'));var moment=require(_0xff05('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xff05('0x4'));var rimraf=require(_0xff05('0x5'));var config=require('../../config/environment');var attributes=require(_0xff05('0x6'));module[_0xff05('0x7')]=function(_0x4f439e,_0x3ff196){return _0x4f439e[_0xff05('0x8')](_0xff05('0x9'),attributes,{'tableName':'tools_trunks','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x92d9=['moment','bluebird','path','rimraf','../../config/environment','./trunk.attributes','exports','define','tools_trunks','lodash','util','../../config/logger','api'];(function(_0x58db4e,_0x439d8d){var _0x40139a=function(_0x34cae4){while(--_0x34cae4){_0x58db4e['push'](_0x58db4e['shift']());}};_0x40139a(++_0x439d8d);}(_0x92d9,0xcc));var _0x992d=function(_0x2fa633,_0x33d3d8){_0x2fa633=_0x2fa633-0x0;var _0x11fd06=_0x92d9[_0x2fa633];return _0x11fd06;};'use strict';var _=require(_0x992d('0x0'));var util=require(_0x992d('0x1'));var logger=require(_0x992d('0x2'))(_0x992d('0x3'));var moment=require(_0x992d('0x4'));var BPromise=require(_0x992d('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x992d('0x6'));var rimraf=require(_0x992d('0x7'));var config=require(_0x992d('0x8'));var attributes=require(_0x992d('0x9'));module[_0x992d('0xa')]=function(_0x3fd5a8,_0x1fe16c){return _0x3fd5a8[_0x992d('0xb')]('Trunk',attributes,{'tableName':_0x992d('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b467eb7..c12c0f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9223=['bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','Trunk,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetTrunk','Trunk','findAll','options','raw','where','attributes','limit','map','include','model','debug','ShowTrunk','find','lodash'];(function(_0x2aea9e,_0x1f587f){var _0x430b92=function(_0x416c37){while(--_0x416c37){_0x2aea9e['push'](_0x2aea9e['shift']());}};_0x430b92(++_0x1f587f);}(_0x9223,0x13a));var _0x3922=function(_0x39e164,_0x2cb93b){_0x39e164=_0x39e164-0x0;var _0x13fa6b=_0x9223[_0x39e164];return _0x13fa6b;};'use strict';var _=require(_0x3922('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x3922('0x1'));var rs=require(_0x3922('0x2'));var fs=require('fs');var Redis=require(_0x3922('0x3'));var db=require(_0x3922('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x3922('0x5'))(_0x3922('0x6'));var config=require(_0x3922('0x7'));var jayson=require(_0x3922('0x8'));var client=jayson[_0x3922('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4813eb,_0x5d736e,_0x9f0aa2){return new BPromise(function(_0x12fa2a,_0xa1d1c2){return client[_0x3922('0xa')](_0x4813eb,_0x9f0aa2)[_0x3922('0xb')](function(_0x306832){logger[_0x3922('0xc')](_0x3922('0xd'),_0x5d736e,_0x3922('0xe'));logger['debug']('Trunk,\x20%s,\x20%s,\x20%s',_0x5d736e,_0x3922('0xe'),JSON[_0x3922('0xf')](_0x306832));if(_0x306832[_0x3922('0x10')]){if(_0x306832[_0x3922('0x10')][_0x3922('0x11')]===0x1f4){logger[_0x3922('0x10')](_0x3922('0xd'),_0x5d736e,_0x306832[_0x3922('0x10')][_0x3922('0x12')]);return _0xa1d1c2(_0x306832[_0x3922('0x10')][_0x3922('0x12')]);}logger[_0x3922('0x10')](_0x3922('0xd'),_0x5d736e,_0x306832[_0x3922('0x10')][_0x3922('0x12')]);return _0x12fa2a(_0x306832[_0x3922('0x10')][_0x3922('0x12')]);}else{logger[_0x3922('0xc')](_0x3922('0xd'),_0x5d736e,'request\x20sent');_0x12fa2a(_0x306832[_0x3922('0x13')][_0x3922('0x12')]);}})[_0x3922('0x14')](function(_0x5da034){logger[_0x3922('0x10')](_0x3922('0xd'),_0x5d736e,_0x5da034);_0xa1d1c2(_0x5da034);});});}exports[_0x3922('0x15')]=function(_0x50c8f8){var _0x46575d=this;return new Promise(function(_0xd19508,_0x2827f3){return db[_0x3922('0x16')][_0x3922('0x17')]({'raw':_0x50c8f8[_0x3922('0x18')]?_0x50c8f8[_0x3922('0x18')][_0x3922('0x19')]===undefined?!![]:![]:!![],'where':_0x50c8f8[_0x3922('0x18')]?_0x50c8f8['options'][_0x3922('0x1a')]||null:null,'attributes':_0x50c8f8[_0x3922('0x18')]?_0x50c8f8['options'][_0x3922('0x1b')]||null:null,'limit':_0x50c8f8[_0x3922('0x18')]?_0x50c8f8['options'][_0x3922('0x1c')]||null:null,'include':_0x50c8f8['options']?_0x50c8f8['options']['include']?_[_0x3922('0x1d')](_0x50c8f8[_0x3922('0x18')][_0x3922('0x1e')],function(_0x1f0c4b){return{'model':db[_0x1f0c4b[_0x3922('0x1f')]],'as':_0x1f0c4b['as'],'attributes':_0x1f0c4b['attributes'],'include':_0x1f0c4b[_0x3922('0x1e')]?_[_0x3922('0x1d')](_0x1f0c4b[_0x3922('0x1e')],function(_0x23c2e8){return{'model':db[_0x23c2e8[_0x3922('0x1f')]],'as':_0x23c2e8['as'],'attributes':_0x23c2e8['attributes'],'include':_0x23c2e8[_0x3922('0x1e')]?_[_0x3922('0x1d')](_0x23c2e8[_0x3922('0x1e')],function(_0x1bbc6c){return{'model':db[_0x1bbc6c[_0x3922('0x1f')]],'as':_0x1bbc6c['as'],'attributes':_0x1bbc6c[_0x3922('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x3922('0xb')](function(_0x5a416a){logger[_0x3922('0xc')](_0x3922('0x15'),_0x50c8f8);logger[_0x3922('0x20')]('GetTrunk',_0x50c8f8,JSON[_0x3922('0xf')](_0x5a416a));_0xd19508(_0x5a416a);})[_0x3922('0x14')](function(_0x4e42e6){logger[_0x3922('0x10')](_0x3922('0x15'),_0x4e42e6[_0x3922('0x12')],_0x50c8f8);_0x2827f3(_0x46575d['error'](0x1f4,_0x4e42e6[_0x3922('0x12')]));});});};exports[_0x3922('0x21')]=function(_0x499b7c){var _0x3c5c48=this;return new Promise(function(_0x526075,_0x46f7d6){return db[_0x3922('0x16')][_0x3922('0x22')]({'raw':_0x499b7c[_0x3922('0x18')]?_0x499b7c[_0x3922('0x18')][_0x3922('0x19')]===undefined?!![]:![]:!![],'where':_0x499b7c[_0x3922('0x18')]?_0x499b7c[_0x3922('0x18')][_0x3922('0x1a')]||null:null,'attributes':_0x499b7c['options']?_0x499b7c[_0x3922('0x18')][_0x3922('0x1b')]||null:null,'include':_0x499b7c[_0x3922('0x18')]?_0x499b7c[_0x3922('0x18')][_0x3922('0x1e')]?_[_0x3922('0x1d')](_0x499b7c[_0x3922('0x18')][_0x3922('0x1e')],function(_0x4b5fe8){return{'model':db[_0x4b5fe8[_0x3922('0x1f')]],'as':_0x4b5fe8['as'],'attributes':_0x4b5fe8['attributes'],'include':_0x4b5fe8[_0x3922('0x1e')]?_[_0x3922('0x1d')](_0x4b5fe8[_0x3922('0x1e')],function(_0x5e90c4){return{'model':db[_0x5e90c4[_0x3922('0x1f')]],'as':_0x5e90c4['as'],'attributes':_0x5e90c4[_0x3922('0x1b')],'include':_0x5e90c4[_0x3922('0x1e')]?_[_0x3922('0x1d')](_0x5e90c4[_0x3922('0x1e')],function(_0x31d603){return{'model':db[_0x31d603[_0x3922('0x1f')]],'as':_0x31d603['as'],'attributes':_0x31d603[_0x3922('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x3922('0xb')](function(_0x4dcba6){logger['info'](_0x3922('0x21'),_0x499b7c);logger[_0x3922('0x20')]('ShowTrunk',_0x499b7c,JSON[_0x3922('0xf')](_0x4dcba6));_0x526075(_0x4dcba6);})[_0x3922('0x14')](function(_0x117fcd){logger[_0x3922('0x10')](_0x3922('0x21'),_0x117fcd['message'],_0x499b7c);_0x46f7d6(_0x3c5c48[_0x3922('0x10')](0x1f4,_0x117fcd['message']));});});};
\ No newline at end of file
+var _0x8ca1=['map','model','info','GetTrunk','stringify','catch','ShowTrunk','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','Trunk,\x20%s,\x20%s','debug','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','code','error','message','result','Trunk','options','raw','where','attributes','limit','include'];(function(_0x44f44b,_0x227d5d){var _0x3d1663=function(_0x4ee2ed){while(--_0x4ee2ed){_0x44f44b['push'](_0x44f44b['shift']());}};_0x3d1663(++_0x227d5d);}(_0x8ca1,0x138));var _0x18ca=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x8ca1[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x18ca('0x0'));var util=require(_0x18ca('0x1'));var moment=require(_0x18ca('0x2'));var BPromise=require(_0x18ca('0x3'));var rs=require(_0x18ca('0x4'));var fs=require('fs');var Redis=require(_0x18ca('0x5'));var db=require(_0x18ca('0x6'))['db'];var utils=require(_0x18ca('0x7'));var logger=require(_0x18ca('0x8'))('rpc');var config=require(_0x18ca('0x9'));var jayson=require(_0x18ca('0xa'));var client=jayson[_0x18ca('0xb')][_0x18ca('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x490c32,_0x4797a3,_0x291e58){return new BPromise(function(_0x3892c0,_0x292eec){return client[_0x18ca('0xd')](_0x490c32,_0x291e58)[_0x18ca('0xe')](function(_0x2bf4ec){logger['info'](_0x18ca('0xf'),_0x4797a3,'request\x20sent');logger[_0x18ca('0x10')](_0x18ca('0x11'),_0x4797a3,_0x18ca('0x12'),JSON['stringify'](_0x2bf4ec));if(_0x2bf4ec['error']){if(_0x2bf4ec['error'][_0x18ca('0x13')]===0x1f4){logger[_0x18ca('0x14')](_0x18ca('0xf'),_0x4797a3,_0x2bf4ec[_0x18ca('0x14')][_0x18ca('0x15')]);return _0x292eec(_0x2bf4ec[_0x18ca('0x14')][_0x18ca('0x15')]);}logger[_0x18ca('0x14')]('Trunk,\x20%s,\x20%s',_0x4797a3,_0x2bf4ec[_0x18ca('0x14')][_0x18ca('0x15')]);return _0x3892c0(_0x2bf4ec[_0x18ca('0x14')][_0x18ca('0x15')]);}else{logger['info'](_0x18ca('0xf'),_0x4797a3,_0x18ca('0x12'));_0x3892c0(_0x2bf4ec[_0x18ca('0x16')][_0x18ca('0x15')]);}})['catch'](function(_0x880399){logger[_0x18ca('0x14')](_0x18ca('0xf'),_0x4797a3,_0x880399);_0x292eec(_0x880399);});});}exports['GetTrunk']=function(_0xd3e498){var _0x3c6367=this;return new Promise(function(_0x46dc5a,_0x1acb83){return db[_0x18ca('0x17')]['findAll']({'raw':_0xd3e498[_0x18ca('0x18')]?_0xd3e498[_0x18ca('0x18')][_0x18ca('0x19')]===undefined?!![]:![]:!![],'where':_0xd3e498[_0x18ca('0x18')]?_0xd3e498[_0x18ca('0x18')][_0x18ca('0x1a')]||null:null,'attributes':_0xd3e498[_0x18ca('0x18')]?_0xd3e498[_0x18ca('0x18')][_0x18ca('0x1b')]||null:null,'limit':_0xd3e498[_0x18ca('0x18')]?_0xd3e498['options'][_0x18ca('0x1c')]||null:null,'include':_0xd3e498[_0x18ca('0x18')]?_0xd3e498[_0x18ca('0x18')][_0x18ca('0x1d')]?_[_0x18ca('0x1e')](_0xd3e498['options'][_0x18ca('0x1d')],function(_0x35fcd2){return{'model':db[_0x35fcd2[_0x18ca('0x1f')]],'as':_0x35fcd2['as'],'attributes':_0x35fcd2[_0x18ca('0x1b')],'include':_0x35fcd2['include']?_['map'](_0x35fcd2[_0x18ca('0x1d')],function(_0x491c42){return{'model':db[_0x491c42[_0x18ca('0x1f')]],'as':_0x491c42['as'],'attributes':_0x491c42[_0x18ca('0x1b')],'include':_0x491c42[_0x18ca('0x1d')]?_[_0x18ca('0x1e')](_0x491c42['include'],function(_0x5d3f52){return{'model':db[_0x5d3f52['model']],'as':_0x5d3f52['as'],'attributes':_0x5d3f52[_0x18ca('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x18ca('0xe')](function(_0x55450f){logger[_0x18ca('0x20')](_0x18ca('0x21'),_0xd3e498);logger[_0x18ca('0x10')](_0x18ca('0x21'),_0xd3e498,JSON[_0x18ca('0x22')](_0x55450f));_0x46dc5a(_0x55450f);})[_0x18ca('0x23')](function(_0xd4478d){logger[_0x18ca('0x14')](_0x18ca('0x21'),_0xd4478d[_0x18ca('0x15')],_0xd3e498);_0x1acb83(_0x3c6367[_0x18ca('0x14')](0x1f4,_0xd4478d[_0x18ca('0x15')]));});});};exports[_0x18ca('0x24')]=function(_0x5e3671){var _0x5a1ff6=this;return new Promise(function(_0x17e4d4,_0x5d11d4){return db[_0x18ca('0x17')][_0x18ca('0x25')]({'raw':_0x5e3671[_0x18ca('0x18')]?_0x5e3671['options']['raw']===undefined?!![]:![]:!![],'where':_0x5e3671['options']?_0x5e3671[_0x18ca('0x18')]['where']||null:null,'attributes':_0x5e3671[_0x18ca('0x18')]?_0x5e3671[_0x18ca('0x18')][_0x18ca('0x1b')]||null:null,'include':_0x5e3671[_0x18ca('0x18')]?_0x5e3671['options'][_0x18ca('0x1d')]?_[_0x18ca('0x1e')](_0x5e3671[_0x18ca('0x18')][_0x18ca('0x1d')],function(_0x1718df){return{'model':db[_0x1718df['model']],'as':_0x1718df['as'],'attributes':_0x1718df['attributes'],'include':_0x1718df[_0x18ca('0x1d')]?_[_0x18ca('0x1e')](_0x1718df[_0x18ca('0x1d')],function(_0x3084ad){return{'model':db[_0x3084ad[_0x18ca('0x1f')]],'as':_0x3084ad['as'],'attributes':_0x3084ad['attributes'],'include':_0x3084ad[_0x18ca('0x1d')]?_[_0x18ca('0x1e')](_0x3084ad[_0x18ca('0x1d')],function(_0x186cb3){return{'model':db[_0x186cb3['model']],'as':_0x186cb3['as'],'attributes':_0x186cb3[_0x18ca('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x18ca('0xe')](function(_0x5542ec){logger['info'](_0x18ca('0x24'),_0x5e3671);logger[_0x18ca('0x10')]('ShowTrunk',_0x5e3671,JSON[_0x18ca('0x22')](_0x5542ec));_0x17e4d4(_0x5542ec);})[_0x18ca('0x23')](function(_0x5c2fa6){logger['error'](_0x18ca('0x24'),_0x5c2fa6[_0x18ca('0x15')],_0x5e3671);_0x5d11d4(_0x5a1ff6['error'](0x1f4,_0x5c2fa6[_0x18ca('0x15')]));});});};
\ No newline at end of file
index c186d41..cfc2993 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf847=['removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','removeSquareProjects','removeApiKey','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','get','isAuthenticated','index','describe','/whoami','whoami','getPresence','/:id','show','getAvatar','/:id/open_tabs','getOpenTabs','getVoiceQueuesRt','/:id/groups','getGroups','/:id/recordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','getOpenchannelInteractions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','/:id/teams','getTeams','/:id/lists','getLists','/:id/agents','getAgents','getVoicePrefixes','/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','getMailAccounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/square_projects','/:id/scheduled_calls','/:id/api_key','getApiKey','post','create','/create_many','/:id/queues','diskStorage','join','root','server/files/images/','%s-%s','now','originalname','/:id/avatar','login','/:id/logout','logout','pause','/:id/unpause','unpause','/:id/chat_interactions','addChatInteractions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addFaxAccounts','addMailAccounts','addChatWebsites','addWhatsappAccounts','addSquareProjects','createApiKey','put','/:id/password','changePassword','removeQueues','delete','removeTeams','destroy','removeChatInteractions','removeMailInteractions','removeFaxInteractions','removeSmsInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','removeFaxAccounts','removeMailAccounts'];(function(_0x1047b8,_0x51a603){var _0x304a8c=function(_0x46a549){while(--_0x46a549){_0x1047b8['push'](_0x1047b8['shift']());}};_0x304a8c(++_0x51a603);}(_0xf847,0xdd));var _0x7f84=function(_0x516b8,_0x531549){_0x516b8=_0x516b8-0x0;var _0x600afa=_0xf847[_0x516b8];return _0x600afa;};'use strict';var multer=require(_0x7f84('0x0'));var util=require(_0x7f84('0x1'));var path=require(_0x7f84('0x2'));var timeout=require(_0x7f84('0x3'));var express=require(_0x7f84('0x4'));var router=express['Router']();var fs_extra=require(_0x7f84('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x7f84('0x6'));var config=require('../../config/environment');var controller=require('./user.controller');router[_0x7f84('0x7')]('/',auth[_0x7f84('0x8')](),controller[_0x7f84('0x9')]);router[_0x7f84('0x7')]('/describe',auth[_0x7f84('0x8')](),controller[_0x7f84('0xa')]);router[_0x7f84('0x7')](_0x7f84('0xb'),auth[_0x7f84('0x8')](),controller[_0x7f84('0xc')]);router[_0x7f84('0x7')]('/presence',auth[_0x7f84('0x8')](),controller[_0x7f84('0xd')]);router[_0x7f84('0x7')](_0x7f84('0xe'),auth[_0x7f84('0x8')](),controller[_0x7f84('0xf')]);router['get']('/:id/avatar',controller[_0x7f84('0x10')]);router['get'](_0x7f84('0x11'),auth[_0x7f84('0x8')](),controller[_0x7f84('0x12')]);router[_0x7f84('0x7')]('/:id/contacts',auth[_0x7f84('0x8')](),controller['getContacts']);router[_0x7f84('0x7')]('/:id/queues',auth[_0x7f84('0x8')](),controller['getQueues']);router[_0x7f84('0x7')]('/:id/queues_rt',auth[_0x7f84('0x8')](),controller[_0x7f84('0x13')]);router[_0x7f84('0x7')](_0x7f84('0x14'),auth[_0x7f84('0x8')](),controller[_0x7f84('0x15')]);router[_0x7f84('0x7')](_0x7f84('0x16'),auth[_0x7f84('0x8')](),controller['getRecordings']);router[_0x7f84('0x7')]('/:id/screen_recordings',auth[_0x7f84('0x8')](),controller[_0x7f84('0x17')]);router['get'](_0x7f84('0x18'),auth[_0x7f84('0x8')](),controller[_0x7f84('0x19')]);router[_0x7f84('0x7')](_0x7f84('0x1a'),auth[_0x7f84('0x8')](),controller[_0x7f84('0x1b')]);router[_0x7f84('0x7')]('/:id/mail/interactions',auth[_0x7f84('0x8')](),controller['getMailInteractions']);router['get'](_0x7f84('0x1c'),auth[_0x7f84('0x8')](),controller[_0x7f84('0x1d')]);router['get'](_0x7f84('0x1e'),auth[_0x7f84('0x8')](),controller[_0x7f84('0x1f')]);router[_0x7f84('0x7')](_0x7f84('0x20'),auth[_0x7f84('0x8')](),controller['getWhatsappInteractions']);router[_0x7f84('0x7')](_0x7f84('0x21'),auth[_0x7f84('0x8')](),controller[_0x7f84('0x22')]);router[_0x7f84('0x7')](_0x7f84('0x23'),auth['isAuthenticated'](),controller[_0x7f84('0x24')]);router[_0x7f84('0x7')](_0x7f84('0x25'),auth['isAuthenticated'](),controller[_0x7f84('0x26')]);router[_0x7f84('0x7')]('/:id/prefixes',auth['isAuthenticated'](),controller[_0x7f84('0x27')]);router[_0x7f84('0x7')](_0x7f84('0x28'),auth[_0x7f84('0x8')](),controller[_0x7f84('0x29')]);router[_0x7f84('0x7')](_0x7f84('0x2a'),auth[_0x7f84('0x8')](),controller[_0x7f84('0x2b')]);router[_0x7f84('0x7')](_0x7f84('0x2c'),auth[_0x7f84('0x8')](),controller[_0x7f84('0x2d')]);router[_0x7f84('0x7')](_0x7f84('0x2e'),auth[_0x7f84('0x8')](),controller['getSmsAccounts']);router[_0x7f84('0x7')](_0x7f84('0x2f'),auth[_0x7f84('0x8')](),controller[_0x7f84('0x30')]);router[_0x7f84('0x7')](_0x7f84('0x31'),auth[_0x7f84('0x8')](),controller[_0x7f84('0x32')]);router['get'](_0x7f84('0x33'),auth[_0x7f84('0x8')](),controller['getSquareProjects']);router[_0x7f84('0x7')](_0x7f84('0x34'),auth[_0x7f84('0x8')](),controller['getScheduledCalls']);router[_0x7f84('0x7')](_0x7f84('0x35'),auth['isAuthenticated'](),controller[_0x7f84('0x36')]);router[_0x7f84('0x37')]('/:id/contacts',auth[_0x7f84('0x8')](),controller['addContacts']);router['post']('/',auth[_0x7f84('0x8')](),controller[_0x7f84('0x38')]);router[_0x7f84('0x37')](_0x7f84('0x39'),auth[_0x7f84('0x8')](),controller['bulkCreate']);router['post'](_0x7f84('0x3a'),auth[_0x7f84('0x8')](),controller['addQueues']);var upload=multer({'storage':multer[_0x7f84('0x3b')]({'destination':function(_0x670c2a,_0x1034a5,_0x43c908){_0x43c908(null,path[_0x7f84('0x3c')](config[_0x7f84('0x3d')],_0x7f84('0x3e')));},'filename':function(_0x27a499,_0x3df9fa,_0x148045){_0x148045(null,util['format'](_0x7f84('0x3f'),Date[_0x7f84('0x40')](),_0x3df9fa[_0x7f84('0x41')]));}})});router[_0x7f84('0x37')](_0x7f84('0x42'),upload['single']('file'),controller['addAvatar']);router['post']('/:id/login',auth['isAuthenticated'](),controller[_0x7f84('0x43')]);router['post'](_0x7f84('0x44'),auth[_0x7f84('0x8')](),controller[_0x7f84('0x45')]);router['post']('/:id/pause',auth['isAuthenticated'](),controller[_0x7f84('0x46')]);router[_0x7f84('0x37')](_0x7f84('0x47'),auth[_0x7f84('0x8')](),controller[_0x7f84('0x48')]);router[_0x7f84('0x37')](_0x7f84('0x21'),auth[_0x7f84('0x8')](),controller['addTeams']);router[_0x7f84('0x37')](_0x7f84('0x49'),auth[_0x7f84('0x8')](),controller[_0x7f84('0x4a')]);router[_0x7f84('0x37')]('/:id/mail_interactions',auth['isAuthenticated'](),controller['addMailInteractions']);router[_0x7f84('0x37')](_0x7f84('0x4b'),auth['isAuthenticated'](),controller[_0x7f84('0x4c')]);router[_0x7f84('0x37')](_0x7f84('0x4d'),auth[_0x7f84('0x8')](),controller[_0x7f84('0x4e')]);router['post'](_0x7f84('0x4f'),auth[_0x7f84('0x8')](),controller[_0x7f84('0x50')]);router['post'](_0x7f84('0x51'),auth[_0x7f84('0x8')](),controller['addWhatsappInteractions']);router['post']('/:id/fax_accounts',auth[_0x7f84('0x8')](),controller[_0x7f84('0x52')]);router[_0x7f84('0x37')](_0x7f84('0x2a'),auth[_0x7f84('0x8')](),controller[_0x7f84('0x53')]);router[_0x7f84('0x37')](_0x7f84('0x2c'),auth[_0x7f84('0x8')](),controller['addOpenchannelAccounts']);router[_0x7f84('0x37')](_0x7f84('0x2e'),auth[_0x7f84('0x8')](),controller['addSmsAccounts']);router[_0x7f84('0x37')](_0x7f84('0x2f'),auth['isAuthenticated'](),controller[_0x7f84('0x54')]);router['post'](_0x7f84('0x31'),auth['isAuthenticated'](),controller[_0x7f84('0x55')]);router[_0x7f84('0x37')](_0x7f84('0x33'),auth['isAuthenticated'](),controller[_0x7f84('0x56')]);router[_0x7f84('0x37')](_0x7f84('0x35'),auth['isAuthenticated'](),controller[_0x7f84('0x57')]);router[_0x7f84('0x58')](_0x7f84('0xe'),auth[_0x7f84('0x8')](),controller['update']);router[_0x7f84('0x58')](_0x7f84('0x59'),auth[_0x7f84('0x8')](),controller[_0x7f84('0x5a')]);router['delete'](_0x7f84('0x3a'),auth[_0x7f84('0x8')](),controller[_0x7f84('0x5b')]);router[_0x7f84('0x5c')](_0x7f84('0x21'),auth[_0x7f84('0x8')](),controller[_0x7f84('0x5d')]);router['delete'](_0x7f84('0xe'),auth[_0x7f84('0x8')](),controller[_0x7f84('0x5e')]);router[_0x7f84('0x5c')](_0x7f84('0x49'),auth['isAuthenticated'](),controller[_0x7f84('0x5f')]);router[_0x7f84('0x5c')]('/:id/mail_interactions',auth[_0x7f84('0x8')](),controller[_0x7f84('0x60')]);router[_0x7f84('0x5c')](_0x7f84('0x4b'),auth[_0x7f84('0x8')](),controller[_0x7f84('0x61')]);router['delete'](_0x7f84('0x4d'),auth[_0x7f84('0x8')](),controller[_0x7f84('0x62')]);router[_0x7f84('0x5c')](_0x7f84('0x4f'),auth[_0x7f84('0x8')](),controller[_0x7f84('0x63')]);router['delete']('/:id/whatsapp_interactions',auth[_0x7f84('0x8')](),controller[_0x7f84('0x64')]);router['delete'](_0x7f84('0x28'),auth[_0x7f84('0x8')](),controller[_0x7f84('0x65')]);router[_0x7f84('0x5c')](_0x7f84('0x2a'),auth[_0x7f84('0x8')](),controller[_0x7f84('0x66')]);router[_0x7f84('0x5c')](_0x7f84('0x2c'),auth[_0x7f84('0x8')](),controller['removeOpenchannelAccounts']);router[_0x7f84('0x5c')](_0x7f84('0x2e'),auth['isAuthenticated'](),controller[_0x7f84('0x67')]);router[_0x7f84('0x5c')](_0x7f84('0x2f'),auth['isAuthenticated'](),controller[_0x7f84('0x68')]);router[_0x7f84('0x5c')](_0x7f84('0x31'),auth[_0x7f84('0x8')](),controller[_0x7f84('0x69')]);router['delete'](_0x7f84('0x33'),auth[_0x7f84('0x8')](),controller[_0x7f84('0x6a')]);router[_0x7f84('0x5c')](_0x7f84('0x35'),auth[_0x7f84('0x8')](),controller[_0x7f84('0x6b')]);module['exports']=router;
\ No newline at end of file
+var _0x7bbd=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./user.controller','get','index','/whoami','isAuthenticated','whoami','/presence','getPresence','/:id','show','/:id/avatar','getAvatar','/:id/open_tabs','getOpenTabs','/:id/contacts','getContacts','/:id/queues','getQueues','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','getGroups','/:id/recordings','/:id/screen_recordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','getMailInteractions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','getTeams','/:id/lists','getLists','getVoicePrefixes','/:id/fax_accounts','/:id/mail_accounts','getMailAccounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/square_projects','getSquareProjects','/:id/scheduled_calls','getScheduledCalls','getApiKey','addContacts','post','create','/create_many','addQueues','join','root','server/files/images/','%s-%s','now','originalname','single','file','addAvatar','/:id/login','login','/:id/logout','logout','/:id/unpause','addTeams','/:id/chat_interactions','addChatInteractions','/:id/mail_interactions','addMailInteractions','addFaxInteractions','/:id/sms_interactions','/:id/openchannel_interactions','addOpenchannelInteractions','addWhatsappInteractions','addFaxAccounts','addMailAccounts','addOpenchannelAccounts','/:id/chat_websites','addChatWebsites','addWhatsappAccounts','/:id/api_key','createApiKey','put','changePassword','delete','removeQueues','removeChatInteractions','removeMailInteractions','/:id/fax_interactions','removeSmsInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','removeFaxAccounts','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','removeSquareProjects','exports','multer','util','path'];(function(_0x2b871b,_0x2ced5d){var _0x36918b=function(_0x101552){while(--_0x101552){_0x2b871b['push'](_0x2b871b['shift']());}};_0x36918b(++_0x2ced5d);}(_0x7bbd,0x73));var _0xd7bb=function(_0x3a3fd2,_0x2fb9ac){_0x3a3fd2=_0x3a3fd2-0x0;var _0x32e355=_0x7bbd[_0x3a3fd2];return _0x32e355;};'use strict';var multer=require(_0xd7bb('0x0'));var util=require(_0xd7bb('0x1'));var path=require(_0xd7bb('0x2'));var timeout=require(_0xd7bb('0x3'));var express=require(_0xd7bb('0x4'));var router=express[_0xd7bb('0x5')]();var fs_extra=require(_0xd7bb('0x6'));var auth=require(_0xd7bb('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xd7bb('0x8'));var controller=require(_0xd7bb('0x9'));router[_0xd7bb('0xa')]('/',auth['isAuthenticated'](),controller[_0xd7bb('0xb')]);router['get']('/describe',auth['isAuthenticated'](),controller['describe']);router[_0xd7bb('0xa')](_0xd7bb('0xc'),auth[_0xd7bb('0xd')](),controller[_0xd7bb('0xe')]);router[_0xd7bb('0xa')](_0xd7bb('0xf'),auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x10')]);router[_0xd7bb('0xa')](_0xd7bb('0x11'),auth['isAuthenticated'](),controller[_0xd7bb('0x12')]);router[_0xd7bb('0xa')](_0xd7bb('0x13'),controller[_0xd7bb('0x14')]);router[_0xd7bb('0xa')](_0xd7bb('0x15'),auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x16')]);router[_0xd7bb('0xa')](_0xd7bb('0x17'),auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x18')]);router['get'](_0xd7bb('0x19'),auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x1a')]);router['get'](_0xd7bb('0x1b'),auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x1c')]);router[_0xd7bb('0xa')](_0xd7bb('0x1d'),auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x1e')]);router[_0xd7bb('0xa')](_0xd7bb('0x1f'),auth[_0xd7bb('0xd')](),controller['getRecordings']);router[_0xd7bb('0xa')](_0xd7bb('0x20'),auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x21')]);router[_0xd7bb('0xa')](_0xd7bb('0x22'),auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x23')]);router[_0xd7bb('0xa')](_0xd7bb('0x24'),auth['isAuthenticated'](),controller['getOpenchannelInteractions']);router[_0xd7bb('0xa')]('/:id/mail/interactions',auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x25')]);router['get']('/:id/sms/interactions',auth['isAuthenticated'](),controller[_0xd7bb('0x26')]);router[_0xd7bb('0xa')](_0xd7bb('0x27'),auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x28')]);router['get'](_0xd7bb('0x29'),auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x2a')]);router[_0xd7bb('0xa')](_0xd7bb('0x2b'),auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x2c')]);router[_0xd7bb('0xa')](_0xd7bb('0x2d'),auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x2e')]);router[_0xd7bb('0xa')]('/:id/agents',auth['isAuthenticated'](),controller['getAgents']);router[_0xd7bb('0xa')]('/:id/prefixes',auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x2f')]);router[_0xd7bb('0xa')](_0xd7bb('0x30'),auth[_0xd7bb('0xd')](),controller['getFaxAccounts']);router[_0xd7bb('0xa')](_0xd7bb('0x31'),auth['isAuthenticated'](),controller[_0xd7bb('0x32')]);router[_0xd7bb('0xa')](_0xd7bb('0x33'),auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x34')]);router[_0xd7bb('0xa')](_0xd7bb('0x35'),auth['isAuthenticated'](),controller[_0xd7bb('0x36')]);router[_0xd7bb('0xa')]('/:id/chat_websites',auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x37')]);router[_0xd7bb('0xa')](_0xd7bb('0x38'),auth['isAuthenticated'](),controller[_0xd7bb('0x39')]);router[_0xd7bb('0xa')](_0xd7bb('0x3a'),auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x3b')]);router[_0xd7bb('0xa')](_0xd7bb('0x3c'),auth['isAuthenticated'](),controller[_0xd7bb('0x3d')]);router['get']('/:id/api_key',auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x3e')]);router['post']('/:id/contacts',auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x3f')]);router[_0xd7bb('0x40')]('/',auth['isAuthenticated'](),controller[_0xd7bb('0x41')]);router[_0xd7bb('0x40')](_0xd7bb('0x42'),auth[_0xd7bb('0xd')](),controller['bulkCreate']);router['post']('/:id/queues',auth['isAuthenticated'](),controller[_0xd7bb('0x43')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xa1b17c,_0x47a131,_0x2c9522){_0x2c9522(null,path[_0xd7bb('0x44')](config[_0xd7bb('0x45')],_0xd7bb('0x46')));},'filename':function(_0x5b4309,_0x24cf38,_0x3a0967){_0x3a0967(null,util['format'](_0xd7bb('0x47'),Date[_0xd7bb('0x48')](),_0x24cf38[_0xd7bb('0x49')]));}})});router[_0xd7bb('0x40')](_0xd7bb('0x13'),upload[_0xd7bb('0x4a')](_0xd7bb('0x4b')),controller[_0xd7bb('0x4c')]);router['post'](_0xd7bb('0x4d'),auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x4e')]);router[_0xd7bb('0x40')](_0xd7bb('0x4f'),auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x50')]);router[_0xd7bb('0x40')]('/:id/pause',auth[_0xd7bb('0xd')](),controller['pause']);router[_0xd7bb('0x40')](_0xd7bb('0x51'),auth['isAuthenticated'](),controller['unpause']);router[_0xd7bb('0x40')]('/:id/teams',auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x52')]);router['post'](_0xd7bb('0x53'),auth['isAuthenticated'](),controller[_0xd7bb('0x54')]);router[_0xd7bb('0x40')](_0xd7bb('0x55'),auth['isAuthenticated'](),controller[_0xd7bb('0x56')]);router[_0xd7bb('0x40')]('/:id/fax_interactions',auth['isAuthenticated'](),controller[_0xd7bb('0x57')]);router[_0xd7bb('0x40')](_0xd7bb('0x58'),auth[_0xd7bb('0xd')](),controller['addSmsInteractions']);router[_0xd7bb('0x40')](_0xd7bb('0x59'),auth['isAuthenticated'](),controller[_0xd7bb('0x5a')]);router['post']('/:id/whatsapp_interactions',auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x5b')]);router[_0xd7bb('0x40')](_0xd7bb('0x30'),auth['isAuthenticated'](),controller[_0xd7bb('0x5c')]);router[_0xd7bb('0x40')]('/:id/mail_accounts',auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x5d')]);router['post'](_0xd7bb('0x33'),auth['isAuthenticated'](),controller[_0xd7bb('0x5e')]);router[_0xd7bb('0x40')](_0xd7bb('0x35'),auth[_0xd7bb('0xd')](),controller['addSmsAccounts']);router['post'](_0xd7bb('0x5f'),auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x60')]);router[_0xd7bb('0x40')](_0xd7bb('0x38'),auth['isAuthenticated'](),controller[_0xd7bb('0x61')]);router[_0xd7bb('0x40')](_0xd7bb('0x3a'),auth[_0xd7bb('0xd')](),controller['addSquareProjects']);router[_0xd7bb('0x40')](_0xd7bb('0x62'),auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x63')]);router[_0xd7bb('0x64')](_0xd7bb('0x11'),auth[_0xd7bb('0xd')](),controller['update']);router[_0xd7bb('0x64')]('/:id/password',auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x65')]);router[_0xd7bb('0x66')]('/:id/queues',auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x67')]);router[_0xd7bb('0x66')](_0xd7bb('0x2b'),auth[_0xd7bb('0xd')](),controller['removeTeams']);router[_0xd7bb('0x66')](_0xd7bb('0x11'),auth[_0xd7bb('0xd')](),controller['destroy']);router['delete'](_0xd7bb('0x53'),auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x68')]);router[_0xd7bb('0x66')]('/:id/mail_interactions',auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x69')]);router[_0xd7bb('0x66')](_0xd7bb('0x6a'),auth[_0xd7bb('0xd')](),controller['removeFaxInteractions']);router[_0xd7bb('0x66')](_0xd7bb('0x58'),auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x6b')]);router[_0xd7bb('0x66')]('/:id/openchannel_interactions',auth['isAuthenticated'](),controller[_0xd7bb('0x6c')]);router[_0xd7bb('0x66')]('/:id/whatsapp_interactions',auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x6d')]);router[_0xd7bb('0x66')](_0xd7bb('0x30'),auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x6e')]);router[_0xd7bb('0x66')](_0xd7bb('0x31'),auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x6f')]);router[_0xd7bb('0x66')]('/:id/openchannel_accounts',auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x70')]);router[_0xd7bb('0x66')]('/:id/sms_accounts',auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x71')]);router[_0xd7bb('0x66')]('/:id/chat_websites',auth['isAuthenticated'](),controller[_0xd7bb('0x72')]);router[_0xd7bb('0x66')]('/:id/whatsapp_accounts',auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x73')]);router[_0xd7bb('0x66')]('/:id/square_projects',auth[_0xd7bb('0xd')](),controller[_0xd7bb('0x74')]);router[_0xd7bb('0x66')](_0xd7bb('0x62'),auth['isAuthenticated'](),controller['removeApiKey']);module[_0xd7bb('0x75')]=router;
\ No newline at end of file
index 55fa2b9..cc6e21b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaaee=['rtcp_mux','wss','dtlsverify','/etc/pki/tls/certs/motion.crt','TEXT','permissions','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','loginAttempts','blockedAt','UNSIGNED','sequelize','moment','util','lodash','exports','name','setDataValue','defaultuser','The\x20name\x20of\x20the\x20user','STRING','fullname','format','\x22%s\x22\x20<%s>','internal','email','toLowerCase','admin','user','agent','telephone','INTEGER','accountcode','callerid','getDataValue','BOOLEAN','DATE','DEFAULT\x20PAUSE','dynamic','ENUM','peer','friend','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB','udp','transport','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','info','shortinfo','inband','auto','rfc2833','nonat','outgoing','nat','join','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','yes','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','\x22\x22\x20<>','always','accept','refuse','originate','uas','fingerprint','certificate','active','passive','actpass','update','update,nonat','showWebBar','isArray','encryption','avpf','force_avp','icesupport','dtlsenable','dtlssetup','dtlscertfile','dtlsprivatekey'];(function(_0x3e3051,_0x21bbdc){var _0x19f2cd=function(_0x4412c3){while(--_0x4412c3){_0x3e3051['push'](_0x3e3051['shift']());}};_0x19f2cd(++_0x21bbdc);}(_0xaaee,0x132));var _0xeaae=function(_0x2f7b15,_0x387cd3){_0x2f7b15=_0x2f7b15-0x0;var _0x8b2e71=_0xaaee[_0x2f7b15];return _0x8b2e71;};'use strict';var Sequelize=require(_0xeaae('0x0'));var moment=require(_0xeaae('0x1'));var util=require(_0xeaae('0x2'));var _=require(_0xeaae('0x3'));module[_0xeaae('0x4')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xeaae('0x5'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x2778d9){this[_0xeaae('0x6')](_0xeaae('0x5'),_0x2778d9);this[_0xeaae('0x6')](_0xeaae('0x7'),_0x2778d9);},'comment':_0xeaae('0x8')},'fullname':{'type':Sequelize[_0xeaae('0x9')],'allowNull':![],'set':function(_0x113fa9){this[_0xeaae('0x6')](_0xeaae('0xa'),_0x113fa9);this[_0xeaae('0x6')]('callerid',util[_0xeaae('0xb')](_0xeaae('0xc'),_0x113fa9,this['getDataValue'](_0xeaae('0xd'))));}},'alias':{'type':Sequelize[_0xeaae('0x9')]},'email':{'type':Sequelize[_0xeaae('0x9')],'allowNull':![],'unique':_0xeaae('0xe'),'validate':{'isEmail':!![]},'set':function(_0x484be3){if(_0x484be3){this['setDataValue'](_0xeaae('0xe'),_0x484be3[_0xeaae('0xf')]());}}},'role':{'type':Sequelize['ENUM'](_0xeaae('0x10'),_0xeaae('0x11'),_0xeaae('0x12'),_0xeaae('0x13')),'allowNull':![]},'password':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0xeaae('0x9')],'defaultValue':'local'},'internal':{'type':Sequelize[_0xeaae('0x14')](0xb),'allowNull':![],'unique':_0xeaae('0xd'),'set':function(_0x415a90){this[_0xeaae('0x6')](_0xeaae('0xd'),_0x415a90);this[_0xeaae('0x6')](_0xeaae('0x15'),_0x415a90);this[_0xeaae('0x6')](_0xeaae('0x16'),util[_0xeaae('0xb')](_0xeaae('0xc'),this[_0xeaae('0x17')](_0xeaae('0xa')),_0x415a90));}},'salt':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0xeaae('0x9')]},'mobile':{'type':Sequelize['STRING']},'address':{'type':Sequelize[_0xeaae('0x9')]},'zipcode':{'type':Sequelize[_0xeaae('0x9')]},'userpic':{'type':Sequelize[_0xeaae('0x9')]},'city':{'type':Sequelize[_0xeaae('0x9')]},'country':{'type':Sequelize[_0xeaae('0x9')]},'online':{'type':Sequelize[_0xeaae('0x18')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0xeaae('0x19')]},'voicePause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatPause':{'type':Sequelize[_0xeaae('0x18')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0xeaae('0x18')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0xeaae('0x18')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0xeaae('0x18')],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0xeaae('0x18')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0xeaae('0x18')],'defaultValue':![]},'pauseType':{'type':Sequelize['STRING'],'defaultValue':_0xeaae('0x1a')},'lastPauseAt':{'type':Sequelize[_0xeaae('0x19')]},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0xeaae('0x14')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0xeaae('0x14')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0xeaae('0x14')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0xeaae('0x14')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0xeaae('0x18')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0xeaae('0x14')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0xeaae('0x14')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0xeaae('0x18')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize['INTEGER'],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0xeaae('0x18')],'defaultValue':![]},'chanspy':{'type':Sequelize[_0xeaae('0x18')],'defaultValue':![]},'description':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![]},'host':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![],'defaultValue':_0xeaae('0x1b')},'ipaddr':{'type':Sequelize['STRING'],'allowNull':!![]},'port':{'type':Sequelize[_0xeaae('0x14')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0xeaae('0x14')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize['STRING'],'allowNull':!![]},'regserver':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![]},'useragent':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![]},'lastms':{'type':Sequelize[_0xeaae('0x14')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0xeaae('0x1c')]('friend',_0xeaae('0x11'),_0xeaae('0x1d')),'allowNull':!![],'defaultValue':_0xeaae('0x1e')},'context':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0xeaae('0x1f')},'callingpres':{'type':Sequelize[_0xeaae('0x1c')](_0xeaae('0x20'),_0xeaae('0x21'),_0xeaae('0x22'),'ALLOWED',_0xeaae('0x23'),_0xeaae('0x24'),'PROHIB_FAILED_SCREEN',_0xeaae('0x25')),'allowNull':!![]},'deny':{'type':Sequelize['STRING'],'allowNull':!![]},'permit':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![]},'secret':{'type':Sequelize['STRING'],'allowNull':!![]},'md5secret':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![]},'transport':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0xeaae('0x26'),'set':function(_0x2bd911){this[_0xeaae('0x6')](_0xeaae('0x27'),_0x2bd911?_0x2bd911['join'](','):null);},'get':function(){return this[_0xeaae('0x17')](_0xeaae('0x27'))?this['getDataValue']('transport')[_0xeaae('0x28')](','):null;},'comment':_0xeaae('0x29')},'dtmfmode':{'type':Sequelize[_0xeaae('0x1c')]('rfc2833',_0xeaae('0x2a'),_0xeaae('0x2b'),_0xeaae('0x2c'),_0xeaae('0x2d')),'allowNull':!![],'defaultValue':_0xeaae('0x2e')},'directmedia':{'type':Sequelize[_0xeaae('0x1c')]('yes','no',_0xeaae('0x2f'),'update',_0xeaae('0x30')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xeaae('0x1c')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![]},'nat':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![],'defaultValue':'force_rport,comedia','set':function(_0x3d4302){this[_0xeaae('0x6')](_0xeaae('0x31'),_0x3d4302?_0x3d4302[_0xeaae('0x32')](','):null);},'get':function(){return this[_0xeaae('0x17')](_0xeaae('0x31'))?this[_0xeaae('0x17')]('nat')[_0xeaae('0x28')](','):null;},'comment':_0xeaae('0x33')},'callgroup':{'type':Sequelize[_0xeaae('0x9')]},'namedcallgroup':{'type':Sequelize[_0xeaae('0x9')]},'pickupgroup':{'type':Sequelize[_0xeaae('0x9')]},'namedpickupgroup':{'type':Sequelize[_0xeaae('0x9')]},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING']},'disallow':{'type':Sequelize[_0xeaae('0x9')],'allowNull':![],'defaultValue':_0xeaae('0x34')},'allow':{'type':Sequelize[_0xeaae('0x9')],'allowNull':![],'defaultValue':_0xeaae('0x35'),'set':function(_0x13ef63){this[_0xeaae('0x6')](_0xeaae('0x36'),_0x13ef63?_0x13ef63[_0xeaae('0x32')](';'):_0xeaae('0x35'));},'get':function(){return this['getDataValue'](_0xeaae('0x36'))?this['getDataValue'](_0xeaae('0x36'))[_0xeaae('0x28')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]'},'autoframing':{'type':Sequelize['ENUM'](_0xeaae('0x37'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![],'set':function(_0x4d88b2){this['setDataValue'](_0xeaae('0x38'),_0x4d88b2?_0x4d88b2[_0xeaae('0x32')](','):null);},'get':function(){return this[_0xeaae('0x17')](_0xeaae('0x38'))?this[_0xeaae('0x17')](_0xeaae('0x38'))['split'](','):null;},'comment':_0xeaae('0x39')},'trustrpid':{'type':Sequelize['ENUM'](_0xeaae('0x37'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xeaae('0x1c')](_0xeaae('0x37'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xeaae('0x1c')]('yes','no',_0xeaae('0x3a')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0xeaae('0x1c')]('yes','no'),'allowNull':!![]},'useclientcode':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'accountcode':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'setvar':{'type':Sequelize['STRING'],'allowNull':!![]},'callerid':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![],'defaultValue':_0xeaae('0x3b')},'amaflags':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![]},'callcounter':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':_0xeaae('0x37')},'busylevel':{'type':Sequelize[_0xeaae('0x14')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0xeaae('0x1c')](_0xeaae('0x37'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0xeaae('0x1c')](_0xeaae('0x37'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0xeaae('0x1c')](_0xeaae('0x37'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0xeaae('0x1c')](_0xeaae('0x37'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![]},'template':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![]},'videosupport':{'type':Sequelize['ENUM'](_0xeaae('0x37'),'no',_0xeaae('0x3c')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xeaae('0x14')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0xeaae('0x1c')](_0xeaae('0x37'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize['STRING'],'allowNull':!![]},'session_timers':{'type':Sequelize[_0xeaae('0x1c')](_0xeaae('0x3d'),_0xeaae('0x3e'),_0xeaae('0x3f')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0xeaae('0x14')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0xeaae('0x14')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0xeaae('0x1c')]('uac',_0xeaae('0x40')),'allowNull':!![],'defaultValue':_0xeaae('0x40')},'t38pt_usertpsource':{'type':Sequelize['STRING'],'allowNull':!![]},'regexten':{'type':Sequelize['STRING'],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![]},'fromuser':{'type':Sequelize['STRING'],'allowNull':!![]},'qualify':{'type':Sequelize[_0xeaae('0x1c')]('yes','no'),'allowNull':!![],'defaultValue':_0xeaae('0x37')},'keepalive':{'type':Sequelize[_0xeaae('0x14')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0xeaae('0x14')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0xeaae('0x14')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0xeaae('0x14')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0xeaae('0x1c')](_0xeaae('0x37'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![]},'timert1':{'type':Sequelize[_0xeaae('0x14')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0xeaae('0x14')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0xeaae('0x14')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0xeaae('0x1c')](_0xeaae('0x37'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0xeaae('0x1c')](_0xeaae('0x37'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize['ENUM'](_0xeaae('0x37'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0xeaae('0x1c')]('yes','no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0xeaae('0x1c')](_0xeaae('0x37'),'no',_0xeaae('0x41'),_0xeaae('0x42')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0xeaae('0x14')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0xeaae('0x1c')](_0xeaae('0x43'),_0xeaae('0x44'),_0xeaae('0x45')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING'],'allowNull':!![]},'usereqphone':{'type':Sequelize['ENUM'](_0xeaae('0x37'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![]},'call_limit':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0xeaae('0x1c')](_0xeaae('0x37'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0xeaae('0x1c')](_0xeaae('0x37'),'no',_0xeaae('0x2f'),_0xeaae('0x46'),_0xeaae('0x47')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0xeaae('0x18')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0xeaae('0x9')]},'resetPasswordExpires':{'type':Sequelize[_0xeaae('0x19')]},'passwordResetAt':{'type':Sequelize['DATE'],'defaultValue':null},'previousPasswords':{'type':Sequelize['TEXT']},'showWebBar':{'type':Sequelize[_0xeaae('0x14')],'defaultValue':0x0,'set':function(_0x18ab9a){this[_0xeaae('0x6')](_0xeaae('0x48'),_0x18ab9a);var _0x264f50=this['get']({'plain':!![]});switch(_0x18ab9a){case 0x0:case 0x1:var _0x28270b=_0x264f50[_0xeaae('0x27')]?_[_0xeaae('0x49')](_0x264f50[_0xeaae('0x27')])?_0x264f50[_0xeaae('0x27')][_0xeaae('0x32')]():_0x264f50[_0xeaae('0x27')]:_0xeaae('0x26');if(_0x28270b==='wss'){_0x28270b=_0xeaae('0x26');}this[_0xeaae('0x6')](_0xeaae('0x27'),_0x28270b);this[_0xeaae('0x6')](_0xeaae('0x4a'),'no');this[_0xeaae('0x6')](_0xeaae('0x4b'),null);this[_0xeaae('0x6')](_0xeaae('0x4c'),null);this[_0xeaae('0x6')](_0xeaae('0x4d'),null);this[_0xeaae('0x6')](_0xeaae('0x4e'),null);this[_0xeaae('0x6')]('dtlsverify',null);this[_0xeaae('0x6')](_0xeaae('0x4f'),null);this[_0xeaae('0x6')](_0xeaae('0x50'),null);this[_0xeaae('0x6')](_0xeaae('0x51'),null);this[_0xeaae('0x6')](_0xeaae('0x52'),'no');break;case 0x2:this[_0xeaae('0x6')](_0xeaae('0x27'),_0xeaae('0x53'));this[_0xeaae('0x6')](_0xeaae('0x4a'),'yes');this[_0xeaae('0x6')](_0xeaae('0x4b'),_0xeaae('0x37'));this[_0xeaae('0x6')](_0xeaae('0x4c'),_0xeaae('0x37'));this['setDataValue'](_0xeaae('0x4d'),_0xeaae('0x37'));this[_0xeaae('0x6')](_0xeaae('0x4e'),_0xeaae('0x37'));this['setDataValue'](_0xeaae('0x54'),'no');this[_0xeaae('0x6')](_0xeaae('0x4f'),_0xeaae('0x45'));this[_0xeaae('0x6')]('dtlscertfile',_0x264f50[_0xeaae('0x50')]||_0xeaae('0x55'));this[_0xeaae('0x6')](_0xeaae('0x51'),_0x264f50[_0xeaae('0x51')]||'/etc/pki/tls/private/motion.key');this[_0xeaae('0x6')](_0xeaae('0x52'),_0xeaae('0x37'));break;default:}}},'permissions':{'type':Sequelize[_0xeaae('0x56')],'set':function(_0x2babf4){this['setDataValue'](_0xeaae('0x57'),_0x2babf4?_0x2babf4[_0xeaae('0x32')](','):[]);},'get':function(){return this['getDataValue'](_0xeaae('0x57'))?_['map'](this[_0xeaae('0x17')](_0xeaae('0x57'))[_0xeaae('0x28')](','),function(_0x2dc6d6){return parseInt(_0x2dc6d6,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0xeaae('0x9')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0xeaae('0x9')]},'phoneBarBusyNumber':{'type':Sequelize['STRING']},'phoneBarUnconditional':{'type':Sequelize[_0xeaae('0x18')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0xeaae('0x18')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0xeaae('0x18')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0xeaae('0x18')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0xeaae('0x18')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0xeaae('0x14')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize['STRING'],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0xeaae('0x14')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0xeaae('0x1c')](_0xeaae('0x37'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0xeaae('0x18')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0xeaae('0x9')]},'phoneBarEnableJaws':{'type':Sequelize[_0xeaae('0x18')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0xeaae('0x18')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0xeaae('0x58')],'get':function(){return this[_0xeaae('0x17')](_0xeaae('0x59'))?this['getDataValue'](_0xeaae('0x59')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0xeaae('0x18')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0xeaae('0x18')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0xeaae('0x18')],'defaultValue':![]},'interface':{'type':Sequelize[_0xeaae('0x9')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0xeaae('0x18')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize['STRING'],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0xeaae('0x9')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0xeaae('0x18')],'defaultValue':![],'set':function(_0x5a16c9){if(typeof _0x5a16c9===_0xeaae('0x5a')){var _0x4b94ae=_0x5a16c9==='1'?!![]:_0x5a16c9==='0'?![]:_0x5a16c9===_0xeaae('0x5b')?!![]:_0x5a16c9===_0xeaae('0x5c')?![]:![];this[_0xeaae('0x6')](_0xeaae('0x5d'),_0x4b94ae);}else{this[_0xeaae('0x6')](_0xeaae('0x5d'),_0x5a16c9);}}},'blocked':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0x3bad81){this[_0xeaae('0x6')]('blocked',_0x3bad81);if(_0x3bad81===!![]){this[_0xeaae('0x6')]('blockedAt',moment());this[_0xeaae('0x6')](_0xeaae('0x5e'),0x0);}else{this['setDataValue'](_0xeaae('0x5f'),null);}}},'blockedAt':{'type':Sequelize[_0xeaae('0x19')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0xeaae('0x14')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0xeaae('0x18')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0xeaae('0x18')],'defaultValue':!![]},'wssPort':{'type':Sequelize['INTEGER'](0x5)[_0xeaae('0x60')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0x6bb4=['from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','transport','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','inband','auto','yes','nonat','update','outgoing','force_rport,comedia','nat','join','ulaw;alaw;gsm','allow','insecure','never','\x22\x22\x20<>','always','refuse','uac','fingerprint','certificate','passive','showWebBar','get','isArray','wss','encryption','avpf','force_avp','icesupport','dtlsenable','dtlsverify','dtlssetup','dtlscertfile','dtlsprivatekey','rtcp_mux','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','TEXT','permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','blocked','blockedAt','loginAttempts','UNSIGNED','sequelize','moment','util','exports','STRING','setDataValue','name','defaultuser','The\x20name\x20of\x20the\x20user','fullname','\x22%s\x22\x20<%s>','getDataValue','email','ENUM','admin','user','telephone','local','internal','accountcode','callerid','BOOLEAN','DATE','INTEGER','dynamic','friend','peer'];(function(_0x5d244b,_0x5c5c26){var _0x2f7068=function(_0x4e8393){while(--_0x4e8393){_0x5d244b['push'](_0x5d244b['shift']());}};_0x2f7068(++_0x5c5c26);}(_0x6bb4,0x1a7));var _0x46bb=function(_0x47b69f,_0x3f1696){_0x47b69f=_0x47b69f-0x0;var _0x56f392=_0x6bb4[_0x47b69f];return _0x56f392;};'use strict';var Sequelize=require(_0x46bb('0x0'));var moment=require(_0x46bb('0x1'));var util=require(_0x46bb('0x2'));var _=require('lodash');module[_0x46bb('0x3')]={'name':{'type':Sequelize[_0x46bb('0x4')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x74054){this[_0x46bb('0x5')](_0x46bb('0x6'),_0x74054);this[_0x46bb('0x5')](_0x46bb('0x7'),_0x74054);},'comment':_0x46bb('0x8')},'fullname':{'type':Sequelize['STRING'],'allowNull':![],'set':function(_0x4fa5c4){this[_0x46bb('0x5')](_0x46bb('0x9'),_0x4fa5c4);this['setDataValue']('callerid',util['format'](_0x46bb('0xa'),_0x4fa5c4,this[_0x46bb('0xb')]('internal')));}},'alias':{'type':Sequelize[_0x46bb('0x4')]},'email':{'type':Sequelize[_0x46bb('0x4')],'allowNull':![],'unique':_0x46bb('0xc'),'validate':{'isEmail':!![]},'set':function(_0x4b7854){if(_0x4b7854){this[_0x46bb('0x5')](_0x46bb('0xc'),_0x4b7854['toLowerCase']());}}},'role':{'type':Sequelize[_0x46bb('0xd')](_0x46bb('0xe'),_0x46bb('0xf'),'agent',_0x46bb('0x10')),'allowNull':![]},'password':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize['STRING'],'defaultValue':_0x46bb('0x11')},'internal':{'type':Sequelize['INTEGER'](0xb),'allowNull':![],'unique':_0x46bb('0x12'),'set':function(_0x1c8850){this['setDataValue'](_0x46bb('0x12'),_0x1c8850);this['setDataValue'](_0x46bb('0x13'),_0x1c8850);this['setDataValue'](_0x46bb('0x14'),util['format']('\x22%s\x22\x20<%s>',this[_0x46bb('0xb')](_0x46bb('0x9')),_0x1c8850));}},'salt':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x46bb('0x4')]},'mobile':{'type':Sequelize[_0x46bb('0x4')]},'address':{'type':Sequelize['STRING']},'zipcode':{'type':Sequelize['STRING']},'userpic':{'type':Sequelize[_0x46bb('0x4')]},'city':{'type':Sequelize[_0x46bb('0x4')]},'country':{'type':Sequelize[_0x46bb('0x4')]},'online':{'type':Sequelize[_0x46bb('0x15')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x46bb('0x16')]},'voicePause':{'type':Sequelize[_0x46bb('0x15')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x46bb('0x15')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x46bb('0x15')],'defaultValue':![]},'faxPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'smsPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x46bb('0x15')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x46bb('0x15')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x46bb('0x4')],'defaultValue':'DEFAULT\x20PAUSE'},'lastPauseAt':{'type':Sequelize['DATE']},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0x46bb('0x17')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0x46bb('0x17')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x46bb('0x17')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x46bb('0x17')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x46bb('0x15')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize['INTEGER'],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x46bb('0x15')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x46bb('0x15')],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x46bb('0x15')],'defaultValue':![]},'description':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'host':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![],'defaultValue':_0x46bb('0x18')},'ipaddr':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'port':{'type':Sequelize[_0x46bb('0x17')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x46bb('0x17')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'regserver':{'type':Sequelize['STRING'],'allowNull':!![]},'useragent':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x46bb('0x17')](0xb),'allowNull':!![]},'type':{'type':Sequelize['ENUM'](_0x46bb('0x19'),_0x46bb('0xf'),_0x46bb('0x1a')),'allowNull':!![],'defaultValue':_0x46bb('0x19')},'context':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![],'defaultValue':_0x46bb('0x1b')},'callingpres':{'type':Sequelize[_0x46bb('0xd')](_0x46bb('0x1c'),_0x46bb('0x1d'),_0x46bb('0x1e'),_0x46bb('0x1f'),_0x46bb('0x20'),_0x46bb('0x21'),_0x46bb('0x22'),_0x46bb('0x23')),'allowNull':!![]},'deny':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'permit':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'secret':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'transport':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![],'defaultValue':'udp','set':function(_0xd69dd8){this['setDataValue'](_0x46bb('0x24'),_0xd69dd8?_0xd69dd8['join'](','):null);},'get':function(){return this[_0x46bb('0xb')](_0x46bb('0x24'))?this[_0x46bb('0xb')]('transport')[_0x46bb('0x25')](','):null;},'comment':_0x46bb('0x26')},'dtmfmode':{'type':Sequelize[_0x46bb('0xd')](_0x46bb('0x27'),_0x46bb('0x28'),'shortinfo',_0x46bb('0x29'),_0x46bb('0x2a')),'allowNull':!![],'defaultValue':_0x46bb('0x27')},'directmedia':{'type':Sequelize[_0x46bb('0xd')](_0x46bb('0x2b'),'no',_0x46bb('0x2c'),_0x46bb('0x2d'),_0x46bb('0x2e')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x46bb('0xd')](_0x46bb('0x2b'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'nat':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![],'defaultValue':_0x46bb('0x2f'),'set':function(_0xc1f9b9){this[_0x46bb('0x5')](_0x46bb('0x30'),_0xc1f9b9?_0xc1f9b9[_0x46bb('0x31')](','):null);},'get':function(){return this[_0x46bb('0xb')](_0x46bb('0x30'))?this[_0x46bb('0xb')](_0x46bb('0x30'))[_0x46bb('0x25')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize[_0x46bb('0x4')]},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x46bb('0x4')],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING']},'disallow':{'type':Sequelize[_0x46bb('0x4')],'allowNull':![],'defaultValue':'all'},'allow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x46bb('0x32'),'set':function(_0x102ffb){this['setDataValue'](_0x46bb('0x33'),_0x102ffb?_0x102ffb['join'](';'):'ulaw;alaw;gsm');},'get':function(){return this[_0x46bb('0xb')]('allow')?this[_0x46bb('0xb')](_0x46bb('0x33'))[_0x46bb('0x25')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]'},'autoframing':{'type':Sequelize[_0x46bb('0xd')](_0x46bb('0x2b'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![],'set':function(_0x4bf211){this[_0x46bb('0x5')](_0x46bb('0x34'),_0x4bf211?_0x4bf211[_0x46bb('0x31')](','):null);},'get':function(){return this[_0x46bb('0xb')](_0x46bb('0x34'))?this[_0x46bb('0xb')]('insecure')[_0x46bb('0x25')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize[_0x46bb('0xd')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x46bb('0xd')](_0x46bb('0x2b'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x46bb('0xd')]('yes','no',_0x46bb('0x35')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x46bb('0xd')](_0x46bb('0x2b'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x46bb('0x17')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'callerid':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![],'defaultValue':_0x46bb('0x36')},'amaflags':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x46bb('0xd')](_0x46bb('0x2b'),'no'),'allowNull':!![],'defaultValue':_0x46bb('0x2b')},'busylevel':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x46bb('0xd')](_0x46bb('0x2b'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x46bb('0xd')](_0x46bb('0x2b'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize['ENUM'](_0x46bb('0x2b'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x46bb('0xd')](_0x46bb('0x2b'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'template':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x46bb('0xd')](_0x46bb('0x2b'),'no',_0x46bb('0x37')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x46bb('0x17')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize['ENUM'](_0x46bb('0x2b'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x46bb('0xd')]('accept',_0x46bb('0x38'),'originate'),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x46bb('0x17')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x46bb('0xd')](_0x46bb('0x39'),'uas'),'allowNull':!![],'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'fromdomain':{'type':Sequelize['STRING'],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'qualify':{'type':Sequelize['ENUM'](_0x46bb('0x2b'),'no'),'allowNull':!![],'defaultValue':_0x46bb('0x2b')},'keepalive':{'type':Sequelize[_0x46bb('0x17')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0x46bb('0x17')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x46bb('0x17')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x46bb('0x17')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'callbackextension':{'type':Sequelize['STRING'],'allowNull':!![]},'timert1':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x46bb('0x17')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x46bb('0x17')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize['STRING'],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize['STRING'],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x46bb('0x17')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0x46bb('0xd')](_0x46bb('0x2b'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x46bb('0xd')](_0x46bb('0x2b'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x46bb('0xd')](_0x46bb('0x2b'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x46bb('0xd')](_0x46bb('0x2b'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x46bb('0xd')](_0x46bb('0x2b'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x46bb('0xd')](_0x46bb('0x2b'),'no',_0x46bb('0x3a'),_0x46bb('0x3b')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x46bb('0xd')]('active',_0x46bb('0x3c'),'actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x46bb('0xd')](_0x46bb('0x2b'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING'],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'call_limit':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x46bb('0xd')](_0x46bb('0x2b'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x46bb('0xd')](_0x46bb('0x2b'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x46bb('0xd')]('yes','no',_0x46bb('0x2c'),_0x46bb('0x2d'),'update,nonat'),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x46bb('0x15')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize['STRING']},'resetPasswordExpires':{'type':Sequelize[_0x46bb('0x16')]},'passwordResetAt':{'type':Sequelize[_0x46bb('0x16')],'defaultValue':null},'previousPasswords':{'type':Sequelize['TEXT']},'showWebBar':{'type':Sequelize['INTEGER'],'defaultValue':0x0,'set':function(_0x563ffe){this[_0x46bb('0x5')](_0x46bb('0x3d'),_0x563ffe);var _0x4e8166=this[_0x46bb('0x3e')]({'plain':!![]});switch(_0x563ffe){case 0x0:case 0x1:var _0x1736ce=_0x4e8166['transport']?_[_0x46bb('0x3f')](_0x4e8166[_0x46bb('0x24')])?_0x4e8166[_0x46bb('0x24')][_0x46bb('0x31')]():_0x4e8166[_0x46bb('0x24')]:'udp';if(_0x1736ce===_0x46bb('0x40')){_0x1736ce='udp';}this[_0x46bb('0x5')](_0x46bb('0x24'),_0x1736ce);this[_0x46bb('0x5')](_0x46bb('0x41'),'no');this[_0x46bb('0x5')](_0x46bb('0x42'),null);this[_0x46bb('0x5')](_0x46bb('0x43'),null);this[_0x46bb('0x5')](_0x46bb('0x44'),null);this[_0x46bb('0x5')](_0x46bb('0x45'),null);this[_0x46bb('0x5')](_0x46bb('0x46'),null);this[_0x46bb('0x5')](_0x46bb('0x47'),null);this[_0x46bb('0x5')](_0x46bb('0x48'),null);this[_0x46bb('0x5')](_0x46bb('0x49'),null);this[_0x46bb('0x5')](_0x46bb('0x4a'),'no');break;case 0x2:this['setDataValue'](_0x46bb('0x24'),'wss');this['setDataValue']('encryption',_0x46bb('0x2b'));this[_0x46bb('0x5')](_0x46bb('0x42'),_0x46bb('0x2b'));this[_0x46bb('0x5')](_0x46bb('0x43'),_0x46bb('0x2b'));this['setDataValue'](_0x46bb('0x44'),'yes');this[_0x46bb('0x5')]('dtlsenable','yes');this[_0x46bb('0x5')]('dtlsverify','no');this[_0x46bb('0x5')](_0x46bb('0x47'),'actpass');this[_0x46bb('0x5')]('dtlscertfile',_0x4e8166[_0x46bb('0x48')]||_0x46bb('0x4b'));this[_0x46bb('0x5')](_0x46bb('0x49'),_0x4e8166[_0x46bb('0x49')]||_0x46bb('0x4c'));this[_0x46bb('0x5')]('rtcp_mux',_0x46bb('0x2b'));break;default:}}},'permissions':{'type':Sequelize[_0x46bb('0x4d')],'set':function(_0x23acce){this[_0x46bb('0x5')](_0x46bb('0x4e'),_0x23acce?_0x23acce[_0x46bb('0x31')](','):[]);},'get':function(){return this[_0x46bb('0xb')](_0x46bb('0x4e'))?_[_0x46bb('0x4f')](this['getDataValue'](_0x46bb('0x4e'))['split'](','),function(_0x3200af){return parseInt(_0x3200af,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize['STRING']},'phoneBarNoReplyNumber':{'type':Sequelize['STRING']},'phoneBarBusyNumber':{'type':Sequelize[_0x46bb('0x4')]},'phoneBarUnconditional':{'type':Sequelize[_0x46bb('0x15')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x46bb('0x15')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x46bb('0x15')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x46bb('0x15')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x46bb('0x15')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x46bb('0x15')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x46bb('0x17')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x46bb('0x4')],'defaultValue':''},'crudPermissions':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize['ENUM'](_0x46bb('0x2b'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x46bb('0x15')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize['STRING']},'phoneBarEnableJaws':{'type':Sequelize[_0x46bb('0x15')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x46bb('0x50')],'get':function(){return this[_0x46bb('0xb')](_0x46bb('0x51'))?this['getDataValue'](_0x46bb('0x51')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x46bb('0x15')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x46bb('0x15')],'defaultValue':![]},'interface':{'type':Sequelize[_0x46bb('0x4')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0x46bb('0x15')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x46bb('0x4')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x46bb('0x15')],'defaultValue':![],'set':function(_0x307227){if(typeof _0x307227===_0x46bb('0x52')){var _0x46b23f=_0x307227==='1'?!![]:_0x307227==='0'?![]:_0x307227===_0x46bb('0x53')?!![]:_0x307227===_0x46bb('0x54')?![]:![];this['setDataValue']('screenrecording',_0x46b23f);}else{this['setDataValue'](_0x46bb('0x55'),_0x307227);}}},'blocked':{'type':Sequelize[_0x46bb('0x15')],'defaultValue':![],'set':function(_0x3f093e){this['setDataValue'](_0x46bb('0x56'),_0x3f093e);if(_0x3f093e===!![]){this[_0x46bb('0x5')](_0x46bb('0x57'),moment());this[_0x46bb('0x5')](_0x46bb('0x58'),0x0);}else{this['setDataValue'](_0x46bb('0x57'),null);}}},'blockedAt':{'type':Sequelize[_0x46bb('0x16')],'defaultValue':null},'loginAttempts':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x46bb('0x15')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0x46bb('0x15')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x46bb('0x17')](0x5)[_0x46bb('0x59')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0x46bb('0x15')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x46bb('0x15')],'defaultValue':!![]}};
\ No newline at end of file
index e1d966d..fee8487 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ad9=['MailInteraction','getSmsInteractions','SmsInteraction','getFaxInteractions','FaxInteraction','WhatsappInteraction','getWhatsappInteractions','login','phone','LOCAL/%s@from-sip/n','SIP/%s','intrf','user:%s','user:forcelogout','x-forwarded-for','remoteAddress','socket','connection','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','UserVoiceQueue.penalty','MemberReport','YYYY-MM-DD\x20HH:mm:ss','getChannels','LOGIN','device','PAUSE','LOGININPAUSE','bulkCreate','concat','isMiddleware','logout','forEach','pause','updateAttributes','DEFAULT\x20PAUSE','mailPause','chatPause','smsPause','whatsapppause','lastPauseAt','manual','Pause','unpause','getTeams','Team','addTeams','getVoiceQueues','setDataValue','Voice','getChatQueues','Chat','getMailQueues','Mail','getSmsQueues','getFaxQueues','Fax','getOpenchannelQueues','Openchannel','flatten','addAgent','getDataValue','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','removeTeams','Sms','getWhatsappQueues','Whatsapp','transaction','removeAgent','getLists','CmList','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','getVoicePrefixes','VoicePrefix','FaxAccount','getFaxAccounts','addFaxAccounts','removeFaxAccounts','MailAccount','getMailAccounts','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','SquareProject','getSquareProjects','addSquareProjects','removeSquareProjects','getScheduledCalls','CmHopper','$and','$or','$gt','$lte','$ne','$eq','$not','$notBetween','$in','$notIn','$like','$notILike','$overlap','$contains','$contained','firstName','lastName','Contact','getApiKey','retrieveApiKey','token','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','iat','nonce','removeApiKey','apiKeyNonce','API\x20key\x20not\x20available','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getPresence','teams','queues','resolve','inbound','getAgents','lower','col','asc','desc','uniqBy','orderBy','client','http','request','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','unknown','unavailable','ringing','busy','slice','charAt','QueryTypes','select','field','ui.','ui.createdAt','user_has_','ui.UserId\x20=\x20?','toString','OpenTabs','moment','util','path','lodash','squel','jayson/promise','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','socket.io-emitter','redis','./user.socket','register','defaults','localhost','info','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','status','end','json','offset','undefined','limit','count','set','Content-Range','update','then','get','admin','Users','user','Agents','agent','Telephones','filter','ignore','map','value','includes','role','find','UserProfileResource','destroy','stack','name','send','index','User','rawAttributes','fieldName','type','key','password','where','query','includeAll','attributes','push','rows','openTabs','true','chat','dataValues','sms','fax','mail','openchannel','all','params','model','differenceBy','salt','keys','intersection','fields','include','merge','options','whatsapp','body','describe','addContacts','omit','ids','internal','findById','securePassword','validatePasswordPattern','max','min_internal','isNil','sequelize','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','SELECT','length','from','voicemail','VoiceMail','permissions','102','110','104','105','106','108','100','111','114','115','create','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','settingsEnabled','userProfileId','UserProfileSection','autoAssociation','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','each','telephone','findAll','isEmpty','compact','changePassword','oldPassword','Sequelize','ValidationError','authenticate','Wrong\x20credentials','newPassword','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','Setting','findOne','enforcePasswordHistory','passwordHistoryLimit','previousPasswords','online','loginInPause','interface','isValidChannel','Unknown\x20channel','add','capitalize','Queues','spread','toLowerCase','emit','Queue:save','voice','VoiceQueue','format','voicePause','penalty','upsert','removeQueues','channel','isArray','QueueId','Queue:remove','UserVoiceQueueRt','addAvatar','userpic','file','filename','getAvatar','join','root','server/files/images/','download','getOpenTabs','ChatOpenTabs','CHAT','createdAt','FaxOpenTabs','FAX','OpenchannelOpenTabs','MailOpenTabs','MAIL','SMS','WhatsappOpenTabs','getContacts','CmContact','filters','sort','pick','Tag','color','tag','hasOwnProperty','nolimit','order','Queue','getVoiceQueuesRt','getGroups','ChatGroup','VoiceRecording','UserId','getScreenRecordings','ScreenRecording','getChatInteractions','ChatInteraction','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions'];(function(_0x13eb78,_0x55a7db){var _0x5705c1=function(_0x4d9389){while(--_0x4d9389){_0x13eb78['push'](_0x13eb78['shift']());}};_0x5705c1(++_0x55a7db);}(_0x9ad9,0xbc));var _0x99ad=function(_0x3c9a89,_0x378778){_0x3c9a89=_0x3c9a89-0x0;var _0x1eb47b=_0x9ad9[_0x3c9a89];return _0x1eb47b;};'use strict';var moment=require(_0x99ad('0x0'));var BPromise=require('bluebird');var util=require(_0x99ad('0x1'));var path=require(_0x99ad('0x2'));var fs=require('fs');var _=require(_0x99ad('0x3'));var squel=require(_0x99ad('0x4'));var jayson=require(_0x99ad('0x5'));var Redis=require('ioredis');var authService=require(_0x99ad('0x6'));var qs=require(_0x99ad('0x7'));var logger=require(_0x99ad('0x8'))(_0x99ad('0x9'));var utils=require('../../config/utils');var config=require(_0x99ad('0xa'));var licenseUtil=require(_0x99ad('0xb'));var db=require(_0x99ad('0xc'))['db'];var socket=require(_0x99ad('0xd'))(new Redis(config[_0x99ad('0xe')]));require(_0x99ad('0xf'))[_0x99ad('0x10')](socket);config[_0x99ad('0xe')]=_[_0x99ad('0x11')](config[_0x99ad('0xe')],{'host':_0x99ad('0x12'),'port':0x18eb});var client=jayson['client']['http']({'port':0x232a});var values;function respondWithRpcPromise(_0x175c54,_0x5f4828,_0x3221c8,_0x4110f6){return new BPromise(function(_0x2c122f,_0x59e479){var _0x480a01=_0x4110f6||client;return _0x480a01['request'](_0x175c54,_0x3221c8)['then'](function(_0x3e505d){logger[_0x99ad('0x13')](_0x99ad('0x14'),_0x5f4828,_0x99ad('0x15'));logger[_0x99ad('0x16')](_0x99ad('0x17'),_0x5f4828,_0x99ad('0x15'),JSON[_0x99ad('0x18')](_0x3e505d));if(_0x3e505d['error']){if(_0x3e505d[_0x99ad('0x19')]['code']===0x1f4){logger[_0x99ad('0x19')]('User,\x20%s,\x20%s',_0x5f4828,_0x3e505d['error'][_0x99ad('0x1a')]);return _0x59e479(_0x3e505d[_0x99ad('0x19')]['message']);}logger[_0x99ad('0x19')](_0x99ad('0x14'),_0x5f4828,_0x3e505d[_0x99ad('0x19')][_0x99ad('0x1a')]);return _0x2c122f(_0x3e505d['error'][_0x99ad('0x1a')]);}else{logger[_0x99ad('0x13')]('User,\x20%s,\x20%s',_0x5f4828,_0x99ad('0x15'));_0x2c122f(_0x3e505d[_0x99ad('0x1b')]['message']);}})[_0x99ad('0x1c')](function(_0x5a7a09){logger[_0x99ad('0x19')]('User,\x20%s,\x20%s',_0x5f4828,_0x5a7a09);_0x59e479(_0x5a7a09);});});}function respondWithStatusCode(_0x5504be,_0x23deb9){_0x23deb9=_0x23deb9||0xcc;return function(_0x31038a){if(_0x31038a){return _0x5504be['sendStatus'](_0x23deb9);}return _0x5504be[_0x99ad('0x1d')](_0x23deb9)[_0x99ad('0x1e')]();};}function respondWithResult(_0x41bb79,_0x116de5){_0x116de5=_0x116de5||0xc8;return function(_0x4f0c3c){if(_0x4f0c3c){return _0x41bb79[_0x99ad('0x1d')](_0x116de5)[_0x99ad('0x1f')](_0x4f0c3c);}};}function respondWithFilteredResult(_0x49cd41,_0x20d626){return function(_0xa8578a){if(_0xa8578a){var _0x20e658=typeof _0x20d626[_0x99ad('0x20')]===_0x99ad('0x21')&&typeof _0x20d626[_0x99ad('0x22')]==='undefined';var _0x275b79=_0xa8578a[_0x99ad('0x23')];var _0x5954c0=_0x20e658?0x0:_0x20d626[_0x99ad('0x20')];var _0x29bb41=_0x20e658?_0xa8578a[_0x99ad('0x23')]:_0x20d626[_0x99ad('0x20')]+_0x20d626['limit'];var _0x395eab;if(_0x29bb41>=_0x275b79){_0x29bb41=_0x275b79;_0x395eab=0xc8;}else{_0x395eab=0xce;}_0x49cd41[_0x99ad('0x1d')](_0x395eab);return _0x49cd41[_0x99ad('0x24')](_0x99ad('0x25'),_0x5954c0+'-'+_0x29bb41+'/'+_0x275b79)[_0x99ad('0x1f')](_0xa8578a);}return null;};}function saveUpdates(_0x33ba41){return function(_0x44997c){if(_0x44997c){return _0x44997c[_0x99ad('0x26')](_0x33ba41)[_0x99ad('0x27')](function(_0x30049a){return _0x30049a;});}return null;};}function removeEntity(_0x2d0482){return function(_0x280ed3){if(_0x280ed3){return _0x280ed3['destroy']()['then'](function(){var _0x231fff=_0x280ed3[_0x99ad('0x28')]({'plain':!![]});if(_0x231fff['role']===_0x99ad('0x29'))return;var _0x4fa8c2=[{'name':_0x99ad('0x2a'),'value':_0x99ad('0x2b'),'ignore':!![]},{'name':_0x99ad('0x2c'),'value':_0x99ad('0x2d'),'ignore':![]},{'name':_0x99ad('0x2e'),'value':'telephone','ignore':![]}];var _0xdad3d7=_(_0x4fa8c2)[_0x99ad('0x2f')](_0x99ad('0x30'))[_0x99ad('0x31')](_0x99ad('0x32'))['value']();if(_[_0x99ad('0x33')](_0xdad3d7,_0x231fff[_0x99ad('0x34')])){return;}var _0x5a07dc=_[_0x99ad('0x35')](_0x4fa8c2,[_0x99ad('0x32'),_0x231fff[_0x99ad('0x34')]])['name'];return db[_0x99ad('0x36')][_0x99ad('0x37')]({'where':{'type':_0x5a07dc,'resourceId':_0x231fff['id']}})[_0x99ad('0x27')](function(){return _0x280ed3;});})[_0x99ad('0x27')](function(){_0x2d0482[_0x99ad('0x1d')](0xcc)[_0x99ad('0x1e')]();});}};}function handleEntityNotFound(_0xe1b166){return function(_0x35b0c9){if(!_0x35b0c9){_0xe1b166['sendStatus'](0x194);}return _0x35b0c9;};}function handleError(_0xea1278,_0x58eb35){_0x58eb35=_0x58eb35||0x1f4;return function(_0x5757c5){logger[_0x99ad('0x19')](_0x5757c5[_0x99ad('0x38')]);if(_0x5757c5[_0x99ad('0x39')]){delete _0x5757c5[_0x99ad('0x39')];}_0xea1278[_0x99ad('0x1d')](_0x58eb35)[_0x99ad('0x3a')](_0x5757c5);};}exports[_0x99ad('0x3b')]=function(_0x5e7209,_0x5ab495){var _0x10aaa8={},_0x10eaeb={'count':0x0,'rows':[]};var _0x1e8422=_(db[_0x99ad('0x3c')][_0x99ad('0x3d')])[_0x99ad('0x31')](function(_0x63b0a6){return{'name':_0x63b0a6[_0x99ad('0x3e')],'type':_0x63b0a6[_0x99ad('0x3f')][_0x99ad('0x40')]};})[_0x99ad('0x2f')](function(_0x15719d){return!_['includes']([_0x99ad('0x41'),'salt'],_0x15719d[_0x99ad('0x39')]);})['value']();_0x10aaa8=qs['getOptions'](_0x1e8422,_0x5e7209);var _0x2b355b={'where':_0x10aaa8[_0x99ad('0x42')]};return db[_0x99ad('0x3c')][_0x99ad('0x23')](_0x2b355b)[_0x99ad('0x27')](function(_0x9766fd){_0x10eaeb[_0x99ad('0x23')]=_0x9766fd;if(_0x5e7209[_0x99ad('0x43')][_0x99ad('0x44')]){_0x10aaa8['include']=[{'all':!![]}];}if(!_[_0x99ad('0x33')](_0x10aaa8[_0x99ad('0x45')],'id')){_0x10aaa8[_0x99ad('0x45')][_0x99ad('0x46')]('id');}return db[_0x99ad('0x3c')]['findAll'](_0x10aaa8);})[_0x99ad('0x27')](function(_0x3ddaeb){_0x10eaeb[_0x99ad('0x47')]=_0x3ddaeb;if(_0x5e7209[_0x99ad('0x43')][_0x99ad('0x48')]===_0x99ad('0x49')){var _0x185480=[];for(var _0x19632c=0x0;_0x19632c<_0x10eaeb[_0x99ad('0x47')]['length'];_0x19632c++){_0x185480[_0x99ad('0x46')](get_open_tabs(_0x99ad('0x4a'),_0x10eaeb[_0x99ad('0x47')][_0x19632c][_0x99ad('0x4b')]));_0x185480[_0x99ad('0x46')](get_open_tabs(_0x99ad('0x4c'),_0x10eaeb[_0x99ad('0x47')][_0x19632c][_0x99ad('0x4b')]));_0x185480[_0x99ad('0x46')](get_open_tabs(_0x99ad('0x4d'),_0x10eaeb[_0x99ad('0x47')][_0x19632c]['dataValues']));_0x185480[_0x99ad('0x46')](get_open_tabs(_0x99ad('0x4e'),_0x10eaeb[_0x99ad('0x47')][_0x19632c][_0x99ad('0x4b')]));_0x185480[_0x99ad('0x46')](get_open_tabs(_0x99ad('0x4f'),_0x10eaeb[_0x99ad('0x47')][_0x19632c]['dataValues']));_0x185480[_0x99ad('0x46')](get_open_tabs('whatsapp',_0x10eaeb['rows'][_0x19632c][_0x99ad('0x4b')]));}return BPromise[_0x99ad('0x50')](_0x185480)[_0x99ad('0x27')](function(_0x5967ef){return _0x10eaeb;});}else{return _0x10eaeb;}})[_0x99ad('0x27')](respondWithFilteredResult(_0x5ab495,_0x10aaa8))[_0x99ad('0x1c')](handleError(_0x5ab495,null));};exports['show']=function(_0x301758,_0x43d694){var _0x3fdfd3={'raw':![],'where':{'id':_0x301758[_0x99ad('0x51')]['id']}},_0x13cb76={};_0x13cb76[_0x99ad('0x52')]=_[_0x99ad('0x53')](_['keys'](db[_0x99ad('0x3c')][_0x99ad('0x3d')]),[_0x99ad('0x41'),_0x99ad('0x54')]);_0x13cb76[_0x99ad('0x43')]=_[_0x99ad('0x55')](_0x301758[_0x99ad('0x43')]);_0x13cb76['filters']=_[_0x99ad('0x56')](_0x13cb76[_0x99ad('0x52')],_0x13cb76['query']);_0x3fdfd3['attributes']=_[_0x99ad('0x56')](_0x13cb76[_0x99ad('0x52')],qs[_0x99ad('0x57')](_0x301758[_0x99ad('0x43')][_0x99ad('0x57')]));_0x3fdfd3[_0x99ad('0x45')]=_0x3fdfd3['attributes']['length']?_0x3fdfd3[_0x99ad('0x45')]:_0x13cb76[_0x99ad('0x52')];if(_0x301758[_0x99ad('0x43')]['includeAll']){_0x3fdfd3[_0x99ad('0x58')]=[{'all':!![]}];}_0x3fdfd3=_[_0x99ad('0x59')]({},_0x3fdfd3,_0x301758[_0x99ad('0x5a')]);if(!_[_0x99ad('0x33')](_0x3fdfd3[_0x99ad('0x45')],'id')){_0x3fdfd3[_0x99ad('0x45')][_0x99ad('0x46')]('id');}return db[_0x99ad('0x3c')][_0x99ad('0x35')](_0x3fdfd3)['then'](handleEntityNotFound(_0x43d694,null))['then'](function(_0xd626c){var _0x3c6702=[];values=_0xd626c;if(_0x301758['query'][_0x99ad('0x48')]==='true'){_0x3c6702['push'](get_open_tabs('chat',_0xd626c[_0x99ad('0x4b')]));_0x3c6702[_0x99ad('0x46')](get_open_tabs(_0x99ad('0x4c'),_0xd626c[_0x99ad('0x4b')]));_0x3c6702[_0x99ad('0x46')](get_open_tabs('openchannel',_0xd626c[_0x99ad('0x4b')]));_0x3c6702['push'](get_open_tabs(_0x99ad('0x5b'),_0xd626c[_0x99ad('0x4b')]));_0x3c6702[_0x99ad('0x46')](get_open_tabs('fax',_0xd626c[_0x99ad('0x4b')]));_0x3c6702[_0x99ad('0x46')](get_open_tabs(_0x99ad('0x4e'),_0xd626c['dataValues']));return BPromise[_0x99ad('0x50')](_0x3c6702);}else{return values;}})[_0x99ad('0x27')](function(_0x57256b){return values;})[_0x99ad('0x27')](respondWithResult(_0x43d694,null))[_0x99ad('0x1c')](handleError(_0x43d694,null));};exports[_0x99ad('0x26')]=function(_0x53598b,_0x26e7f9){if(_0x53598b['body']['id']){delete _0x53598b[_0x99ad('0x5c')]['id'];}delete _0x53598b[_0x99ad('0x5c')][_0x99ad('0x34')];return db[_0x99ad('0x3c')][_0x99ad('0x35')]({'where':{'id':_0x53598b[_0x99ad('0x51')]['id']}})['then'](handleEntityNotFound(_0x26e7f9,null))['then'](saveUpdates(_0x53598b[_0x99ad('0x5c')],null))[_0x99ad('0x27')](respondWithResult(_0x26e7f9,null))['catch'](handleError(_0x26e7f9,null));};exports[_0x99ad('0x5d')]=function(_0x53ffc3,_0x5ea1ac){return db[_0x99ad('0x3c')][_0x99ad('0x5d')]()[_0x99ad('0x27')](respondWithResult(_0x5ea1ac,null))[_0x99ad('0x1c')](handleError(_0x5ea1ac,null));};exports['addContacts']=function(_0x42b5eb,_0x33ddac){return db['User'][_0x99ad('0x35')]({'where':{'id':_0x42b5eb[_0x99ad('0x51')]['id']}})['then'](handleEntityNotFound(_0x33ddac,null))[_0x99ad('0x27')](function(_0x395e56){if(_0x395e56){return _0x395e56[_0x99ad('0x5e')](_0x42b5eb['body']['ids'],_[_0x99ad('0x5f')](_0x42b5eb[_0x99ad('0x5c')],[_0x99ad('0x60'),'id'])||{});}})[_0x99ad('0x27')](respondWithResult(_0x33ddac,null))[_0x99ad('0x1c')](handleError(_0x33ddac,null));};function validateUser(_0x51cc9a){return new BPromise(function(_0x3cf245,_0xc95b46){if(_0x51cc9a[_0x99ad('0x61')])return _0x3cf245(_0x51cc9a);return db['Setting'][_0x99ad('0x62')](0x1)[_0x99ad('0x27')](function(_0x3983b4){if(_0x3983b4[_0x99ad('0x63')])authService[_0x99ad('0x64')](_0x51cc9a[_0x99ad('0x41')]);db['User'][_0x99ad('0x65')](_0x99ad('0x61'))['then'](function(_0x3b699f){if(_['isNil'](_0x3b699f)){_0x51cc9a['internal']=_0x3983b4[_0x99ad('0x66')]||0x1;return;}if(_[_0x99ad('0x67')](_0x3983b4[_0x99ad('0x66')])||_0x3983b4['min_internal']===_0x3b699f){_0x51cc9a['internal']=_0x3b699f+0x1;return;}if(_0x3983b4[_0x99ad('0x66')]>_0x3b699f){_0x51cc9a[_0x99ad('0x61')]=_0x3983b4[_0x99ad('0x66')];return;}return db[_0x99ad('0x68')][_0x99ad('0x43')](_0x99ad('0x69'),{'type':db[_0x99ad('0x68')]['QueryTypes'][_0x99ad('0x6a')]})[_0x99ad('0x27')](function(_0x47a595){if(_0x47a595&&_0x47a595[_0x99ad('0x6b')]){for(var _0x5127ce=0x0,_0x315b28=_0x47a595[_0x99ad('0x6b')];_0x5127ce<_0x315b28&&_[_0x99ad('0x67')](_0x51cc9a[_0x99ad('0x61')]);_0x5127ce++){if(_0x3983b4[_0x99ad('0x66')]<=_0x47a595[_0x5127ce][_0x99ad('0x6c')]){_0x51cc9a[_0x99ad('0x61')]=_0x47a595[_0x5127ce][_0x99ad('0x6c')];}else if(_0x3983b4[_0x99ad('0x66')]>_0x47a595[_0x5127ce]['from']&&_0x3983b4[_0x99ad('0x66')]<=_0x47a595[_0x5127ce]['to']){_0x51cc9a[_0x99ad('0x61')]=_0x3983b4[_0x99ad('0x66')];}}}if(_[_0x99ad('0x67')](_0x51cc9a[_0x99ad('0x61')])){_0x51cc9a['internal']=_0x3b699f+0x1;}return _0x3cf245(_0x51cc9a);});});})[_0x99ad('0x1c')](function(_0x30846f){_0xc95b46(_0x30846f);});});}function updateUser(_0x1087c7){return new BPromise(function(_0x3a8c29,_0x4b011e){try{if(_0x1087c7[_0x99ad('0x6d')]){_0x1087c7['mailbox']=_0x1087c7[_0x99ad('0x61')];_0x1087c7[_0x99ad('0x6e')]={'mailbox':_0x1087c7[_0x99ad('0x61')],'password':_0x1087c7[_0x99ad('0x41')],'fullname':_0x1087c7['fullname'],'email':_0x1087c7['email']};}if(_0x1087c7[_0x99ad('0x34')]==='agent'){if(!_0x1087c7[_0x99ad('0x6f')])_0x1087c7[_0x99ad('0x6f')]=['101',_0x99ad('0x70'),'103','113',_0x99ad('0x71'),_0x99ad('0x72'),_0x99ad('0x73'),_0x99ad('0x74'),'107',_0x99ad('0x75'),'109',_0x99ad('0x76'),_0x99ad('0x77'),_0x99ad('0x78'),_0x99ad('0x79')];}_0x3a8c29(_0x1087c7);}catch(_0x288cb6){_0x4b011e(_0x288cb6);}});}exports[_0x99ad('0x7a')]=function(_0x2da645,_0x42e665){if(_0x2da645[_0x99ad('0x2b')][_0x99ad('0x34')]===_0x99ad('0x2d'))throw new Error(_0x99ad('0x7b'));if(_0x2da645[_0x99ad('0x5c')][_0x99ad('0x34')]===_0x99ad('0x2b')&&_0x2da645[_0x99ad('0x2b')][_0x99ad('0x34')]!==_0x99ad('0x29')){throw new Error(_0x99ad('0x7c'));}if(_0x2da645[_0x99ad('0x5c')][_0x99ad('0x34')]===_0x99ad('0x29')&&_0x2da645[_0x99ad('0x2b')]['role']!=='admin'){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator');}return licenseUtil['checkUserLimits']([_0x2da645[_0x99ad('0x5c')]])[_0x99ad('0x27')](function(){return validateUser(_0x2da645[_0x99ad('0x5c')]);})[_0x99ad('0x27')](function(_0x46751a){return updateUser(_0x46751a)[_0x99ad('0x27')](function(_0x4dd6a4){if(_0x4dd6a4[_0x99ad('0x34')]===_0x99ad('0x29')){_0x4dd6a4[_0x99ad('0x7d')]=_0x2da645[_0x99ad('0x2b')][_0x99ad('0x7d')];delete _0x4dd6a4[_0x99ad('0x7e')];}return _0x4dd6a4;});})[_0x99ad('0x27')](function(_0x2b2faf){return db[_0x99ad('0x3c')]['create'](_0x2b2faf,{'include':[{'model':db[_0x99ad('0x6e')],'as':'VoiceMail'}]});})['then'](function(_0xe9c975){if(_0x2da645[_0x99ad('0x5c')][_0x99ad('0x34')]===_0x99ad('0x2b'))return _0xe9c975;if(_0x2da645[_0x99ad('0x2b')][_0x99ad('0x34')]!==_0x99ad('0x2b'))return _0xe9c975;return db[_0x99ad('0x7f')]['find']({'where':{'name':_0xe9c975['role']==='agent'?_0x99ad('0x2c'):_0x99ad('0x2e'),'userProfileId':_0x2da645['user']['userProfileId']},'raw':!![]})[_0x99ad('0x27')](function(_0x2bd0bc){if(!_0x2bd0bc||_0x2bd0bc[_0x99ad('0x80')]!=0x0)return _0xe9c975;return db[_0x99ad('0x36')][_0x99ad('0x7a')]({'name':_0xe9c975[_0x99ad('0x39')],'resourceId':_0xe9c975['id'],'type':_0x2bd0bc[_0x99ad('0x39')],'sectionId':_0x2bd0bc['id']},{})[_0x99ad('0x27')](function(){return _0xe9c975;});})[_0x99ad('0x1c')](function(_0x3d70dc){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3d70dc);throw _0x3d70dc;});})[_0x99ad('0x27')](respondWithResult(_0x42e665,0xc9))[_0x99ad('0x1c')](handleError(_0x42e665,null));};exports['bulkCreate']=function(_0x18dc53,_0x439881){var _0x2e0577=_0x18dc53[_0x99ad('0x5c')];var _0x265aad=[];if(_0x18dc53['user'][_0x99ad('0x34')]===_0x99ad('0x2d'))throw new Error(_0x99ad('0x7b'));if(_[_0x99ad('0x81')](_0x2e0577,['role',_0x99ad('0x2b')])&&_0x18dc53[_0x99ad('0x2b')][_0x99ad('0x34')]!==_0x99ad('0x29')){throw new Error(_0x99ad('0x7c'));}if(_[_0x99ad('0x81')](_0x2e0577,[_0x99ad('0x34'),_0x99ad('0x29')])&&_0x18dc53[_0x99ad('0x2b')][_0x99ad('0x34')]!=='admin'){throw new Error(_0x99ad('0x82'));}return licenseUtil['checkUserLimits'](_0x2e0577)[_0x99ad('0x27')](function(){return validateUser(_0x2e0577[0x0]);})[_0x99ad('0x27')](function(){for(var _0x4f3419=0x1;_0x4f3419<_0x2e0577['length'];_0x4f3419++){var _0x9f49f0=_0x2e0577[_0x4f3419-0x1][_0x99ad('0x61')];if(!_0x2e0577[_0x4f3419][_0x99ad('0x61')])_0x2e0577[_0x4f3419][_0x99ad('0x61')]=_0x9f49f0+0x1;_0x265aad[_0x99ad('0x46')](validateUser(_0x2e0577[_0x4f3419]));}return BPromise[_0x99ad('0x50')](_0x265aad);})['then'](function(){_0x265aad=[];for(var _0x5323d0=0x0;_0x5323d0<_0x2e0577[_0x99ad('0x6b')];_0x5323d0++){_0x265aad[_0x99ad('0x46')](updateUser(_0x2e0577[_0x5323d0]));}return BPromise[_0x99ad('0x50')](_0x265aad);})['then'](function(){return BPromise[_0x99ad('0x83')](_0x2e0577,function(_0x2bdc53){return db[_0x99ad('0x3c')][_0x99ad('0x7a')](_0x2bdc53,{'include':[{'model':db['VoiceMail'],'as':_0x99ad('0x6e')}]})[_0x99ad('0x27')](function(_0x5322f0){_0x2bdc53['id']=_0x5322f0['id'];return _0x2bdc53;});});})[_0x99ad('0x27')](function(_0x1a78df){if(_0x18dc53['body']['role']===_0x99ad('0x2b'))return _0x1a78df;if(_0x18dc53['user'][_0x99ad('0x34')]!==_0x99ad('0x2b'))return _0x1a78df;var _0x245206=_['some'](_0x1a78df,function(_0x26a08e){return _0x26a08e[_0x99ad('0x34')]===_0x99ad('0x2d')||_0x26a08e[_0x99ad('0x34')]===_0x99ad('0x84');});if(!_0x245206)return _0x1a78df;return db[_0x99ad('0x7f')][_0x99ad('0x85')]({'where':{'name':{'$or':['Agents',_0x99ad('0x2e')]},'userProfileId':_0x18dc53[_0x99ad('0x2b')][_0x99ad('0x7e')]},'raw':!![]})[_0x99ad('0x27')](function(_0x5afffb){if(_[_0x99ad('0x86')](_0x5afffb)||!_[_0x99ad('0x81')](_0x5afffb,[_0x99ad('0x80'),0x0]))return _0x1a78df;_0x265aad=[];var _0x82cc8=_(_0x5afffb)[_0x99ad('0x31')](function(_0x279e08){if(_0x279e08['autoAssociation']===0x1)return;return _0x279e08['name']===_0x99ad('0x2c')?_0x99ad('0x2d'):_0x99ad('0x84');})[_0x99ad('0x87')]()[_0x99ad('0x32')]();for(var _0x16f3dc=0x0;_0x16f3dc<_0x1a78df[_0x99ad('0x6b')];_0x16f3dc++){if(!_[_0x99ad('0x33')](_0x82cc8,_0x1a78df[_0x16f3dc][_0x99ad('0x34')]))return;var _0x1e975a=_0x1a78df[_0x16f3dc]['role']===_0x99ad('0x2d')?'Agents':'Telephones';_0x265aad['push'](db['UserProfileResource']['create']({'name':_0x1a78df[_0x16f3dc][_0x99ad('0x39')],'resourceId':_0x1a78df[_0x16f3dc]['id'],'type':_0x1e975a,'sectionId':_[_0x99ad('0x35')](_0x5afffb,[_0x99ad('0x39'),_0x1e975a])['id']},{}));}return BPromise['all'](_0x265aad);});})['then'](respondWithResult(_0x439881,0xc9))[_0x99ad('0x1c')](handleError(_0x439881,null));};exports[_0x99ad('0x88')]=function(_0x4c93b2,_0x4b58fb){if(_0x4c93b2['body']['id']){delete _0x4c93b2[_0x99ad('0x5c')]['id'];}return db[_0x99ad('0x3c')]['find']({'where':{'id':_0x4c93b2[_0x99ad('0x51')]['id']}})[_0x99ad('0x27')](function(_0x5e71d6){if(!_0x5e71d6)return null;if(_0x5e71d6['id']===_0x4c93b2[_0x99ad('0x2b')]['id']){if(!_0x4c93b2[_0x99ad('0x5c')][_0x99ad('0x89')]||!_0x4c93b2[_0x99ad('0x5c')]['newPassword']){throw new db[(_0x99ad('0x8a'))][(_0x99ad('0x8b'))]('Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword');}if(!_0x5e71d6[_0x99ad('0x8c')](_0x4c93b2[_0x99ad('0x5c')][_0x99ad('0x89')])){throw new db['Sequelize'][(_0x99ad('0x8b'))](_0x99ad('0x8d'));}if(_0x4c93b2[_0x99ad('0x5c')]['oldPassword']===_0x4c93b2[_0x99ad('0x5c')][_0x99ad('0x8e')]){throw new db[(_0x99ad('0x8a'))][(_0x99ad('0x8b'))](_0x99ad('0x8f'));}}else if(_0x4c93b2[_0x99ad('0x2b')][_0x99ad('0x34')]===_0x99ad('0x29')){if(!_0x4c93b2[_0x99ad('0x5c')]['newPassword']){throw new db['Sequelize']['ValidationError'](_0x99ad('0x90'));}}else if(_0x4c93b2['user'][_0x99ad('0x34')]===_0x99ad('0x2b')){if(!_0x4c93b2[_0x99ad('0x5c')][_0x99ad('0x8e')]){throw new db[(_0x99ad('0x8a'))][(_0x99ad('0x8b'))]('Invalid\x20body\x20format.\x20Use\x20newPassword');}if(_0x5e71d6[_0x99ad('0x34')]!==_0x99ad('0x2d')){throw new db[(_0x99ad('0x8a'))][(_0x99ad('0x8b'))]('Unauthorized');}}else{throw new db['Sequelize'][(_0x99ad('0x8b'))]('Unauthorized');}return _0x5e71d6;})[_0x99ad('0x27')](handleEntityNotFound(_0x4b58fb,null))[_0x99ad('0x27')](function(_0x35a01a){return db[_0x99ad('0x91')][_0x99ad('0x92')]({'attributes':['id',_0x99ad('0x63'),_0x99ad('0x93'),_0x99ad('0x94')]})[_0x99ad('0x27')](function(_0xfb1264){if(_0xfb1264[_0x99ad('0x63')])authService['validatePasswordPattern'](_0x4c93b2[_0x99ad('0x5c')][_0x99ad('0x8e')]);if(!_0xfb1264[_0x99ad('0x93')]||!_0x35a01a['previousPasswords'])return _0x35a01a;authService['validatePasswordHistory'](_0x4c93b2[_0x99ad('0x5c')][_0x99ad('0x8e')],_0x35a01a[_0x99ad('0x95')],_0xfb1264['passwordHistoryLimit']);return _0x35a01a;})[_0x99ad('0x27')](saveUpdates({'password':_0x4c93b2[_0x99ad('0x5c')][_0x99ad('0x8e')],'passwordResetAt':_0x4c93b2['user']['id']==_0x4c93b2[_0x99ad('0x51')]['id']?moment():null,'previousPasswords':authService['updatePasswordsHistory'](_0x4c93b2[_0x99ad('0x5c')]['newPassword'],_0x35a01a[_0x99ad('0x95')])},null));})[_0x99ad('0x27')](respondWithResult(_0x4b58fb,null))[_0x99ad('0x1c')](handleError(_0x4b58fb,null));};exports['addQueues']=function(_0x5977e7,_0x22f5a6){var _0x1c4249=_0x5977e7[_0x99ad('0x5c')]['channel'];return db[_0x99ad('0x3c')]['find']({'where':{'id':_0x5977e7[_0x99ad('0x51')]['id']},'attributes':['id',_0x99ad('0x39'),'role',_0x99ad('0x96'),_0x99ad('0x97'),'voicePause',_0x99ad('0x98')]})[_0x99ad('0x27')](handleEntityNotFound(_0x22f5a6,null))['then'](function(_0x316875){if(_0x316875){if(!utils[_0x99ad('0x99')](_0x1c4249)){throw new db['Sequelize'][(_0x99ad('0x8b'))](_0x99ad('0x9a'));}return _0x316875[_0x99ad('0x9b')+_[_0x99ad('0x9c')](_0x1c4249['toLowerCase']())+_0x99ad('0x9d')](_0x5977e7[_0x99ad('0x5c')][_0x99ad('0x60')],{'penalty':_0x5977e7[_0x99ad('0x5c')]['penalty']||0x0})[_0x99ad('0x9e')](function(_0x287a7c){for(var _0x41d494=0x0;_0x41d494<_0x5977e7[_0x99ad('0x5c')][_0x99ad('0x60')]['length'];_0x41d494+=0x1){var _0x115672={'UserId':Number(_0x5977e7['params']['id'])};_0x115672[_[_0x99ad('0x9c')](_0x1c4249[_0x99ad('0x9f')]())+'QueueId']=Number(_0x5977e7[_0x99ad('0x5c')][_0x99ad('0x60')][_0x41d494]);socket[_0x99ad('0xa0')](_0x99ad('0x2b')+_[_0x99ad('0x9c')](_0x1c4249['toLowerCase']())+_0x99ad('0xa1'),_0x115672);}return _0x287a7c;})['then'](function(){if(_0x1c4249===_0x99ad('0xa2')){return db[_0x99ad('0xa3')]['findAll']({'where':{'id':_0x5977e7[_0x99ad('0x5c')][_0x99ad('0x60')]||[]},'raw':!![],'attributes':['id','name']});}})[_0x99ad('0x27')](function(_0x42bc9c){var _0x2f4fdc=_0x316875[_0x99ad('0x28')]({'plain':!![]});var _0x13471d=[];if(_0x1c4249===_0x99ad('0xa2')&&_0x2f4fdc['role']===_0x99ad('0x2d')&&_0x2f4fdc['online']){for(var _0x5e0b0a=0x0;_0x5e0b0a<_0x42bc9c[_0x99ad('0x6b')];_0x5e0b0a+=0x1){_0x13471d[_0x99ad('0x46')]({'membername':_0x2f4fdc[_0x99ad('0x39')],'UserId':_0x2f4fdc['id'],'queue_name':_0x42bc9c[_0x5e0b0a][_0x99ad('0x39')],'VoiceQueueId':_0x42bc9c[_0x5e0b0a]['id'],'interface':_['isNil'](_0x2f4fdc['interface'])?util[_0x99ad('0xa4')]('SIP/%s',_0x2f4fdc['name']):_0x2f4fdc[_0x99ad('0x98')],'paused':_0x2f4fdc[_0x99ad('0xa5')]||![],'penalty':_0x5977e7[_0x99ad('0x5c')][_0x99ad('0xa6')]||0x0});}return BPromise[_0x99ad('0x83')](_0x13471d,function(_0x4fc200){return db['UserVoiceQueueRt'][_0x99ad('0xa7')](_0x4fc200);});}return _0x316875;});}})['then'](respondWithStatusCode(_0x22f5a6,null))[_0x99ad('0x1c')](handleError(_0x22f5a6,null));};exports[_0x99ad('0xa8')]=function(_0x180ee7,_0x58e5ed){var _0x336f09;return db[_0x99ad('0x3c')][_0x99ad('0x35')]({'where':{'id':_0x180ee7[_0x99ad('0x51')]['id']},'attributes':['id',_0x99ad('0x39'),_0x99ad('0x34')]})[_0x99ad('0x27')](handleEntityNotFound(_0x58e5ed,null))[_0x99ad('0x27')](function(_0x56fb5b){if(_0x56fb5b){_0x336f09=_0x56fb5b;if(!_0x180ee7[_0x99ad('0x43')][_0x99ad('0xa9')]||!utils[_0x99ad('0x99')](_0x180ee7['query'][_0x99ad('0xa9')])){throw new db[(_0x99ad('0x8a'))]['ValidationError']('Unknown\x20channel');}return _0x56fb5b['remove'+_['capitalize'](_0x180ee7[_0x99ad('0x43')][_0x99ad('0xa9')][_0x99ad('0x9f')]())+_0x99ad('0x9d')](_0x180ee7[_0x99ad('0x43')][_0x99ad('0x60')]);}})[_0x99ad('0x27')](function(_0x2be59b){if(_[_0x99ad('0xaa')](_0x180ee7['query'][_0x99ad('0x60')])){for(var _0x1f58a7=0x0;_0x1f58a7<_0x180ee7['query'][_0x99ad('0x60')][_0x99ad('0x6b')];_0x1f58a7+=0x1){var _0x1b5428={'UserId':Number(_0x180ee7[_0x99ad('0x51')]['id'])};_0x1b5428[_['capitalize'](_0x180ee7[_0x99ad('0x43')][_0x99ad('0xa9')][_0x99ad('0x9f')]())+_0x99ad('0xab')]=Number(_0x180ee7[_0x99ad('0x43')]['ids'][_0x1f58a7]);socket['emit']('user'+_[_0x99ad('0x9c')](_0x180ee7[_0x99ad('0x43')][_0x99ad('0xa9')][_0x99ad('0x9f')]())+'Queue:remove',_0x1b5428);}}else{var _0x1b5428={'UserId':Number(_0x180ee7[_0x99ad('0x51')]['id'])};_0x1b5428[_[_0x99ad('0x9c')](_0x180ee7[_0x99ad('0x43')][_0x99ad('0xa9')][_0x99ad('0x9f')]())+_0x99ad('0xab')]=Number(_0x180ee7[_0x99ad('0x43')]['ids']);socket['emit'](_0x99ad('0x2b')+_[_0x99ad('0x9c')](_0x180ee7[_0x99ad('0x43')]['channel'][_0x99ad('0x9f')]())+_0x99ad('0xac'),_0x1b5428);}return _0x2be59b;})[_0x99ad('0x27')](function(){if(_0x180ee7[_0x99ad('0x43')]['channel']===_0x99ad('0xa2')){return db[_0x99ad('0xad')][_0x99ad('0x37')]({'where':{'UserId':_0x180ee7['params']['id'],'VoiceQueueId':_0x180ee7[_0x99ad('0x43')][_0x99ad('0x60')]},'individualHooks':!![]})[_0x99ad('0x27')](function(){return _0x336f09;});}return _0x336f09;})[_0x99ad('0x27')](respondWithStatusCode(_0x58e5ed,null))[_0x99ad('0x1c')](handleError(_0x58e5ed,null));};exports[_0x99ad('0xae')]=function(_0x2fb9a8,_0x456876){_0x2fb9a8[_0x99ad('0x5c')][_0x99ad('0xaf')]=_0x2fb9a8[_0x99ad('0xb0')][_0x99ad('0xb1')];return db[_0x99ad('0x3c')][_0x99ad('0x35')]({'where':{'id':_0x2fb9a8[_0x99ad('0x51')]['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x456876,null))[_0x99ad('0x27')](saveUpdates(_0x2fb9a8[_0x99ad('0x5c')],null))['then'](respondWithResult(_0x456876,null))[_0x99ad('0x1c')](handleError(_0x456876,null));};exports[_0x99ad('0xb2')]=function(_0x2b4018,_0x139bcd){var _0xb943d7=path[_0x99ad('0xb3')](config['root'],'server/files/images/logos/default_profile.png');return db[_0x99ad('0x3c')][_0x99ad('0x35')]({'where':{'id':_0x2b4018[_0x99ad('0x51')]['id']},'attributes':['id',_0x99ad('0xaf')],'raw':!![]})[_0x99ad('0x27')](handleEntityNotFound(_0x139bcd,null))['then'](function(_0x529af2){if(_0x529af2){if(_[_0x99ad('0x67')](_0x529af2[_0x99ad('0xaf')])){return _0x139bcd['download'](_0xb943d7);}else{if(!fs['existsSync'](path[_0x99ad('0xb3')](config[_0x99ad('0xb4')],_0x99ad('0xb5'),_0x529af2[_0x99ad('0xaf')]))){return _0x139bcd[_0x99ad('0xb6')](_0xb943d7);}return _0x139bcd['download'](path['join'](config[_0x99ad('0xb4')],_0x99ad('0xb5'),_0x529af2[_0x99ad('0xaf')]));}}})[_0x99ad('0x1c')](handleError(_0x139bcd,null));};exports[_0x99ad('0xb7')]=function(_0x2f031f,_0x7d7400){return db[_0x99ad('0x3c')][_0x99ad('0x35')]({'where':{'id':_0x2f031f[_0x99ad('0x51')]['id']},'attributes':['id']})[_0x99ad('0x27')](handleEntityNotFound(_0x7d7400,null))[_0x99ad('0x27')](function(_0x4beab9){var _0x30e196=[];values=_0x4beab9[_0x99ad('0x4b')];_0x30e196['push'](get_open_tabs(_0x99ad('0x4a'),_0x4beab9[_0x99ad('0x4b')]));_0x30e196[_0x99ad('0x46')](get_open_tabs(_0x99ad('0x4c'),_0x4beab9['dataValues']));_0x30e196[_0x99ad('0x46')](get_open_tabs(_0x99ad('0x4f'),_0x4beab9[_0x99ad('0x4b')]));_0x30e196['push'](get_open_tabs(_0x99ad('0x5b'),_0x4beab9[_0x99ad('0x4b')]));_0x30e196[_0x99ad('0x46')](get_open_tabs(_0x99ad('0x4d'),_0x4beab9[_0x99ad('0x4b')]));_0x30e196[_0x99ad('0x46')](get_open_tabs(_0x99ad('0x4e'),_0x4beab9[_0x99ad('0x4b')]));return BPromise['all'](_0x30e196);})[_0x99ad('0x27')](function(_0x5df27c){var _0xc05a26=[];if(_0x5df27c){for(var _0x422198=0x0;_0x422198<values['ChatOpenTabs'][_0x99ad('0x6b')];_0x422198++){var _0x44412f=values[_0x99ad('0xb8')][_0x422198];_0xc05a26[_0x99ad('0x46')]({'channel':_0x99ad('0xb9'),'id':_0x44412f['id'],'createdAt':_0x44412f[_0x99ad('0xba')]});}for(var _0x422198=0x0;_0x422198<values[_0x99ad('0xbb')]['length'];_0x422198++){var _0x44412f=values['FaxOpenTabs'][_0x422198];_0xc05a26[_0x99ad('0x46')]({'channel':_0x99ad('0xbc'),'id':_0x44412f['id'],'createdAt':_0x44412f[_0x99ad('0xba')]});}for(var _0x422198=0x0;_0x422198<values['OpenchannelOpenTabs'][_0x99ad('0x6b')];_0x422198++){var _0x44412f=values[_0x99ad('0xbd')][_0x422198];_0xc05a26[_0x99ad('0x46')]({'channel':'OPENCHANNEL','id':_0x44412f['id'],'createdAt':_0x44412f[_0x99ad('0xba')]});}for(var _0x422198=0x0;_0x422198<values['MailOpenTabs'][_0x99ad('0x6b')];_0x422198++){var _0x44412f=values[_0x99ad('0xbe')][_0x422198];_0xc05a26[_0x99ad('0x46')]({'channel':_0x99ad('0xbf'),'id':_0x44412f['id'],'createdAt':_0x44412f[_0x99ad('0xba')]});}for(var _0x422198=0x0;_0x422198<values['SmsOpenTabs'][_0x99ad('0x6b')];_0x422198++){var _0x44412f=values['SmsOpenTabs'][_0x422198];_0xc05a26[_0x99ad('0x46')]({'channel':_0x99ad('0xc0'),'id':_0x44412f['id'],'createdAt':_0x44412f[_0x99ad('0xba')]});}for(var _0x422198=0x0;_0x422198<values[_0x99ad('0xc1')][_0x99ad('0x6b')];_0x422198++){var _0x44412f=values[_0x99ad('0xc1')][_0x422198];_0xc05a26['push']({'channel':'WHATSAPP','id':_0x44412f['id'],'createdAt':_0x44412f['createdAt']});}var _0x67b938={'count':_0xc05a26[_0x99ad('0x6b')],'rows':_0xc05a26};return _0x67b938;}else return null;})[_0x99ad('0x27')](respondWithResult(_0x7d7400,null))['catch'](handleError(_0x7d7400,null));};exports[_0x99ad('0xc2')]=function(_0x2f1383,_0x3b51f7){var _0x499f58={};var _0x44b245={};var _0x8d404f;var _0x2965f3;return db[_0x99ad('0x3c')][_0x99ad('0x92')]({'where':{'id':_0x2f1383[_0x99ad('0x51')]['id']}})['then'](handleEntityNotFound(_0x3b51f7,null))['then'](function(_0x5c6832){if(_0x5c6832){_0x8d404f=_0x5c6832;_0x44b245[_0x99ad('0x52')]=_['keys'](db[_0x99ad('0xc3')][_0x99ad('0x3d')]);_0x44b245[_0x99ad('0x43')]=_[_0x99ad('0x55')](_0x2f1383[_0x99ad('0x43')]);_0x44b245[_0x99ad('0xc4')]=_[_0x99ad('0x56')](_0x44b245[_0x99ad('0x52')],_0x44b245[_0x99ad('0x43')]);_0x499f58[_0x99ad('0x45')]=_[_0x99ad('0x56')](_0x44b245[_0x99ad('0x52')],qs['fields'](_0x2f1383[_0x99ad('0x43')]['fields']));_0x499f58['attributes']=_0x499f58[_0x99ad('0x45')][_0x99ad('0x6b')]?_0x499f58['attributes']:_0x44b245[_0x99ad('0x52')];_0x499f58['order']=qs[_0x99ad('0xc5')](_0x2f1383[_0x99ad('0x43')][_0x99ad('0xc5')]);_0x499f58[_0x99ad('0x42')]=qs[_0x99ad('0xc4')](_[_0x99ad('0xc6')](_0x2f1383[_0x99ad('0x43')],_0x44b245[_0x99ad('0xc4')]));if(_0x2f1383[_0x99ad('0x43')]['filter']){_0x499f58[_0x99ad('0x42')]=_[_0x99ad('0x59')](_0x499f58['where'],{'$or':_['map'](_0x499f58[_0x99ad('0x45')],function(_0x218506){var _0xa90046={};_0xa90046[_0x218506]={'$like':'%'+_0x2f1383[_0x99ad('0x43')][_0x99ad('0x2f')]+'%'};return _0xa90046;})});}_0x499f58=_['merge']({},_0x499f58,_0x2f1383['options']);return _0x8d404f[_0x99ad('0xc2')](_0x499f58);}})[_0x99ad('0x27')](function(_0x2e6269){if(_0x2e6269){_0x2965f3=_0x2e6269[_0x99ad('0x6b')];if(_0x2f1383[_0x99ad('0x43')]['hasOwnProperty'](_0x99ad('0x44'))){_0x499f58[_0x99ad('0x58')]=[{'model':db['CmList'],'as':'List','required':![]},{'model':db[_0x99ad('0xc7')],'as':'Tags','attributes':['id',_0x99ad('0x39'),_0x99ad('0xc8')],'where':_0x2f1383[_0x99ad('0x43')]['tag']?{'id':_0x2f1383[_0x99ad('0x43')][_0x99ad('0xc9')]}:undefined,'required':_0x2f1383[_0x99ad('0x43')][_0x99ad('0xc9')]?!![]:![]}];}if(!_0x2f1383[_0x99ad('0x43')][_0x99ad('0xca')](_0x99ad('0xcb'))){_0x499f58[_0x99ad('0x22')]=qs[_0x99ad('0x22')](_0x2f1383[_0x99ad('0x43')][_0x99ad('0x22')]);_0x499f58['offset']=qs['offset'](_0x2f1383[_0x99ad('0x43')][_0x99ad('0x20')]);}return _0x8d404f[_0x99ad('0xc2')](_0x499f58);}})['then'](function(_0x52623e){if(_0x52623e){return _0x52623e?{'count':_0x2965f3,'rows':_0x52623e}:null;}})[_0x99ad('0x27')](respondWithResult(_0x3b51f7,null))[_0x99ad('0x1c')](handleError(_0x3b51f7,null));};exports['getQueues']=function(_0x5a3cc1,_0xfffd1a){var _0xbe20cf;var _0x187e91;var _0x206695={};var _0x38846f;return db[_0x99ad('0x3c')][_0x99ad('0x92')]({'where':{'id':_0x5a3cc1['params']['id']},'attributes':['id',_0x99ad('0x39'),'role']})[_0x99ad('0x27')](handleEntityNotFound(_0xfffd1a,null))[_0x99ad('0x27')](function(_0x37c3d6){if(!utils[_0x99ad('0x99')](_0x5a3cc1['query']['channel'])){throw new db[(_0x99ad('0x8a'))][(_0x99ad('0x8b'))]('Unknown\x20channel');}_0xbe20cf=_0x37c3d6;var _0x4a9fe0={};_0x4a9fe0[_0x99ad('0x52')]=_[_0x99ad('0x55')](db[_['capitalize'](_0x5a3cc1[_0x99ad('0x43')][_0x99ad('0xa9')])+'Queue'][_0x99ad('0x3d')]);_0x4a9fe0[_0x99ad('0x43')]=_[_0x99ad('0x55')](_0x5a3cc1['query']);_0x4a9fe0[_0x99ad('0xc4')]=_[_0x99ad('0x56')](_0x4a9fe0[_0x99ad('0x52')],_0x4a9fe0[_0x99ad('0x43')]);_0x206695[_0x99ad('0x45')]=_['intersection'](_0x4a9fe0['model'],qs[_0x99ad('0x57')](_0x5a3cc1['query'][_0x99ad('0x57')]));_0x206695[_0x99ad('0x45')]=_0x206695[_0x99ad('0x45')]['length']?_0x206695[_0x99ad('0x45')]:_0x4a9fe0[_0x99ad('0x52')];_0x206695[_0x99ad('0xcc')]=qs[_0x99ad('0xc5')](_0x5a3cc1[_0x99ad('0x43')]['sort']);_0x206695[_0x99ad('0x42')]=qs[_0x99ad('0xc4')](_[_0x99ad('0xc6')](_0x5a3cc1['query'],_0x4a9fe0[_0x99ad('0xc4')]));if(_0x5a3cc1[_0x99ad('0x43')][_0x99ad('0x2f')]){_0x206695[_0x99ad('0x42')]=_[_0x99ad('0x59')](_0x206695[_0x99ad('0x42')],{'$or':_[_0x99ad('0x31')](_0x206695[_0x99ad('0x45')],function(_0x1c4f3a){var _0x4adb18={};_0x4adb18[_0x1c4f3a]={'$like':'%'+_0x5a3cc1[_0x99ad('0x43')][_0x99ad('0x2f')]+'%'};return _0x4adb18;})});}_0x206695=_[_0x99ad('0x59')]({},_0x206695,_0x5a3cc1['options']);switch(_0xbe20cf[_0x99ad('0x34')]){case _0x99ad('0x29'):return db[_[_0x99ad('0x9c')](_0x5a3cc1[_0x99ad('0x43')]['channel'])+_0x99ad('0xcd')][_0x99ad('0x85')](_0x206695);case _0x99ad('0x2b'):case'agent':return _0xbe20cf[_0x99ad('0x28')+_['capitalize'](_0x5a3cc1['query']['channel'])+_0x99ad('0x9d')](_0x206695);default:throw new db['Sequelize']['ValidationError']('Unknown\x20role');}})[_0x99ad('0x27')](function(_0x582be2){_0x38846f=_0x582be2[_0x99ad('0x6b')];if(!_0x5a3cc1[_0x99ad('0x43')]['hasOwnProperty']('nolimit')){_0x206695[_0x99ad('0x22')]=qs[_0x99ad('0x22')](_0x5a3cc1[_0x99ad('0x43')][_0x99ad('0x22')]);_0x206695[_0x99ad('0x20')]=qs[_0x99ad('0x20')](_0x5a3cc1[_0x99ad('0x43')][_0x99ad('0x20')]);}switch(_0xbe20cf[_0x99ad('0x34')]){case _0x99ad('0x29'):return db[_[_0x99ad('0x9c')](_0x5a3cc1['query'][_0x99ad('0xa9')])+'Queue']['findAll'](_0x206695);case'user':case _0x99ad('0x2d'):return _0xbe20cf[_0x99ad('0x28')+_[_0x99ad('0x9c')](_0x5a3cc1['query']['channel'])+_0x99ad('0x9d')](_0x206695);}})[_0x99ad('0x27')](function(_0x29373a){return{'count':_0x38846f,'rows':_0x29373a};})[_0x99ad('0x27')](respondWithResult(_0xfffd1a,null))['catch'](handleError(_0xfffd1a,null));};exports[_0x99ad('0xce')]=function(_0x29a8c7,_0x5c6c29){var _0x407e19={};var _0xa76062={};var _0x3f765d;var _0x7e4d1e;return db['User'][_0x99ad('0x92')]({'where':{'id':_0x29a8c7[_0x99ad('0x51')]['id']}})['then'](handleEntityNotFound(_0x5c6c29,null))[_0x99ad('0x27')](function(_0x38a504){if(_0x38a504){_0x3f765d=_0x38a504;_0xa76062[_0x99ad('0x52')]=_[_0x99ad('0x55')](db[_0x99ad('0xad')][_0x99ad('0x3d')]);_0xa76062['query']=_[_0x99ad('0x55')](_0x29a8c7[_0x99ad('0x43')]);_0xa76062[_0x99ad('0xc4')]=_[_0x99ad('0x56')](_0xa76062[_0x99ad('0x52')],_0xa76062['query']);_0x407e19['attributes']=_['intersection'](_0xa76062[_0x99ad('0x52')],qs[_0x99ad('0x57')](_0x29a8c7['query']['fields']));_0x407e19[_0x99ad('0x45')]=_0x407e19[_0x99ad('0x45')][_0x99ad('0x6b')]?_0x407e19[_0x99ad('0x45')]:_0xa76062[_0x99ad('0x52')];_0x407e19[_0x99ad('0xcc')]=qs[_0x99ad('0xc5')](_0x29a8c7[_0x99ad('0x43')]['sort']);_0x407e19[_0x99ad('0x42')]=qs[_0x99ad('0xc4')](_[_0x99ad('0xc6')](_0x29a8c7[_0x99ad('0x43')],_0xa76062['filters']));if(_0x29a8c7['query'][_0x99ad('0x2f')]){_0x407e19['where']=_[_0x99ad('0x59')](_0x407e19[_0x99ad('0x42')],{'$or':_['map'](_0x407e19['attributes'],function(_0x50efc0){var _0xe5b8ac={};_0xe5b8ac[_0x50efc0]={'$like':'%'+_0x29a8c7['query']['filter']+'%'};return _0xe5b8ac;})});}_0x407e19=_[_0x99ad('0x59')]({},_0x407e19,_0x29a8c7[_0x99ad('0x5a')]);return _0x3f765d[_0x99ad('0xce')](_0x407e19);}})[_0x99ad('0x27')](function(_0xe7d223){if(_0xe7d223){_0x7e4d1e=_0xe7d223[_0x99ad('0x6b')];if(!_0x29a8c7[_0x99ad('0x43')][_0x99ad('0xca')](_0x99ad('0xcb'))){_0x407e19[_0x99ad('0x22')]=qs[_0x99ad('0x22')](_0x29a8c7[_0x99ad('0x43')][_0x99ad('0x22')]);_0x407e19[_0x99ad('0x20')]=qs[_0x99ad('0x20')](_0x29a8c7[_0x99ad('0x43')][_0x99ad('0x20')]);}return _0x3f765d[_0x99ad('0xce')](_0x407e19);}})[_0x99ad('0x27')](function(_0x658825){if(_0x658825){return _0x658825?{'count':_0x7e4d1e,'rows':_0x658825}:null;}})[_0x99ad('0x27')](respondWithResult(_0x5c6c29,null))['catch'](handleError(_0x5c6c29,null));};exports[_0x99ad('0xcf')]=function(_0x75bad8,_0x17cc01){var _0x9a90a8={};var _0x2aa8ca={};var _0x362d86;var _0x5000ea;return db['User'][_0x99ad('0x92')]({'where':{'id':_0x75bad8[_0x99ad('0x51')]['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x17cc01,null))[_0x99ad('0x27')](function(_0x4c7a0c){if(_0x4c7a0c){_0x362d86=_0x4c7a0c;_0x2aa8ca[_0x99ad('0x52')]=_[_0x99ad('0x55')](db[_0x99ad('0xd0')]['rawAttributes']);_0x2aa8ca[_0x99ad('0x43')]=_[_0x99ad('0x55')](_0x75bad8[_0x99ad('0x43')]);_0x2aa8ca[_0x99ad('0xc4')]=_[_0x99ad('0x56')](_0x2aa8ca['model'],_0x2aa8ca[_0x99ad('0x43')]);_0x9a90a8[_0x99ad('0x45')]=_['intersection'](_0x2aa8ca['model'],qs[_0x99ad('0x57')](_0x75bad8[_0x99ad('0x43')]['fields']));_0x9a90a8[_0x99ad('0x45')]=_0x9a90a8[_0x99ad('0x45')][_0x99ad('0x6b')]?_0x9a90a8[_0x99ad('0x45')]:_0x2aa8ca['model'];_0x9a90a8[_0x99ad('0xcc')]=qs['sort'](_0x75bad8['query'][_0x99ad('0xc5')]);_0x9a90a8[_0x99ad('0x42')]=qs['filters'](_[_0x99ad('0xc6')](_0x75bad8['query'],_0x2aa8ca[_0x99ad('0xc4')]));if(_0x75bad8['query'][_0x99ad('0x2f')]){_0x9a90a8['where']=_[_0x99ad('0x59')](_0x9a90a8[_0x99ad('0x42')],{'$or':_[_0x99ad('0x31')](_0x9a90a8['attributes'],function(_0x36690f){var _0x5346cd={};_0x5346cd[_0x36690f]={'$like':'%'+_0x75bad8['query']['filter']+'%'};return _0x5346cd;})});}_0x9a90a8=_[_0x99ad('0x59')]({},_0x9a90a8,_0x75bad8['options']);return _0x362d86['getGroups'](_0x9a90a8);}})[_0x99ad('0x27')](function(_0x11367c){if(_0x11367c){_0x5000ea=_0x11367c[_0x99ad('0x6b')];if(!_0x75bad8[_0x99ad('0x43')][_0x99ad('0xca')](_0x99ad('0xcb'))){_0x9a90a8[_0x99ad('0x22')]=qs[_0x99ad('0x22')](_0x75bad8[_0x99ad('0x43')][_0x99ad('0x22')]);_0x9a90a8[_0x99ad('0x20')]=qs[_0x99ad('0x20')](_0x75bad8[_0x99ad('0x43')][_0x99ad('0x20')]);}return _0x362d86['getGroups'](_0x9a90a8);}})[_0x99ad('0x27')](function(_0x323650){if(_0x323650){return _0x323650?{'count':_0x5000ea,'rows':_0x323650}:null;}})['then'](respondWithResult(_0x17cc01,null))[_0x99ad('0x1c')](handleError(_0x17cc01,null));};exports['getRecordings']=function(_0x126849,_0x18a5a1){var _0x460961={'raw':!![],'where':{}};var _0x5ac134={};var _0x1d4cb9={'count':0x0,'rows':[]};return db['User'][_0x99ad('0x92')]({'where':{'id':_0x126849[_0x99ad('0x51')]['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x18a5a1,null))['then'](function(_0x5ece58){if(_0x5ece58){_0x5ac134[_0x99ad('0x52')]=_[_0x99ad('0x55')](db[_0x99ad('0xd1')][_0x99ad('0x3d')]);_0x5ac134['query']=_[_0x99ad('0x55')](_0x126849[_0x99ad('0x43')]);_0x5ac134[_0x99ad('0xc4')]=_[_0x99ad('0x56')](_0x5ac134['model'],_0x5ac134[_0x99ad('0x43')]);_0x460961[_0x99ad('0x45')]=_[_0x99ad('0x56')](_0x5ac134['model'],qs[_0x99ad('0x57')](_0x126849['query'][_0x99ad('0x57')]));_0x460961['attributes']=_0x460961[_0x99ad('0x45')][_0x99ad('0x6b')]?_0x460961[_0x99ad('0x45')]:_0x5ac134[_0x99ad('0x52')];if(!_0x126849[_0x99ad('0x43')]['hasOwnProperty'](_0x99ad('0xcb'))){_0x460961[_0x99ad('0x22')]=qs['limit'](_0x126849[_0x99ad('0x43')]['limit']);_0x460961[_0x99ad('0x20')]=qs[_0x99ad('0x20')](_0x126849[_0x99ad('0x43')]['offset']);}_0x460961['order']=qs[_0x99ad('0xc5')](_0x126849['query'][_0x99ad('0xc5')]);_0x460961['where']=qs[_0x99ad('0xc4')](_[_0x99ad('0xc6')](_0x126849[_0x99ad('0x43')],_0x5ac134['filters']));_0x460961[_0x99ad('0x42')][_0x99ad('0xd2')]=_0x5ece58['id'];if(_0x126849[_0x99ad('0x43')][_0x99ad('0x2f')]){_0x460961[_0x99ad('0x42')]=_['merge'](_0x460961[_0x99ad('0x42')],{'$or':_[_0x99ad('0x31')](_0x460961[_0x99ad('0x45')],function(_0x4e506c){var _0x5c835c={};_0x5c835c[_0x4e506c]={'$like':'%'+_0x126849['query']['filter']+'%'};return _0x5c835c;})});}_0x460961=_['merge']({},_0x460961,_0x126849['options']);return db['VoiceRecording']['count']({'where':_0x460961[_0x99ad('0x42')]})['then'](function(_0x9e5700){_0x1d4cb9[_0x99ad('0x23')]=_0x9e5700;if(_0x126849[_0x99ad('0x43')]['includeAll']){_0x460961[_0x99ad('0x58')]=[{'all':!![]}];}return db['VoiceRecording'][_0x99ad('0x85')](_0x460961);})[_0x99ad('0x27')](function(_0x243590){_0x1d4cb9[_0x99ad('0x47')]=_0x243590;return _0x1d4cb9;});}})[_0x99ad('0x27')](respondWithFilteredResult(_0x18a5a1,_0x460961))[_0x99ad('0x1c')](handleError(_0x18a5a1,null));};exports[_0x99ad('0xd3')]=function(_0x252f4f,_0x4ddb99){var _0x5e8fcf={'raw':!![],'where':{}};var _0x5cfea4={};var _0x1d2f4d={'count':0x0,'rows':[]};return db['User'][_0x99ad('0x92')]({'where':{'id':_0x252f4f['params']['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x4ddb99,null))['then'](function(_0x1db367){if(_0x1db367){_0x5cfea4[_0x99ad('0x52')]=_['keys'](db[_0x99ad('0xd4')][_0x99ad('0x3d')]);_0x5cfea4[_0x99ad('0x43')]=_['keys'](_0x252f4f[_0x99ad('0x43')]);_0x5cfea4[_0x99ad('0xc4')]=_['intersection'](_0x5cfea4[_0x99ad('0x52')],_0x5cfea4[_0x99ad('0x43')]);_0x5e8fcf[_0x99ad('0x45')]=_[_0x99ad('0x56')](_0x5cfea4[_0x99ad('0x52')],qs[_0x99ad('0x57')](_0x252f4f[_0x99ad('0x43')]['fields']));_0x5e8fcf[_0x99ad('0x45')]=_0x5e8fcf[_0x99ad('0x45')][_0x99ad('0x6b')]?_0x5e8fcf[_0x99ad('0x45')]:_0x5cfea4[_0x99ad('0x52')];if(!_0x252f4f['query'][_0x99ad('0xca')](_0x99ad('0xcb'))){_0x5e8fcf[_0x99ad('0x22')]=qs['limit'](_0x252f4f[_0x99ad('0x43')][_0x99ad('0x22')]);_0x5e8fcf['offset']=qs[_0x99ad('0x20')](_0x252f4f[_0x99ad('0x43')][_0x99ad('0x20')]);}_0x5e8fcf[_0x99ad('0xcc')]=qs[_0x99ad('0xc5')](_0x252f4f['query'][_0x99ad('0xc5')]);_0x5e8fcf[_0x99ad('0x42')]=qs[_0x99ad('0xc4')](_[_0x99ad('0xc6')](_0x252f4f[_0x99ad('0x43')],_0x5cfea4[_0x99ad('0xc4')]));_0x5e8fcf[_0x99ad('0x42')][_0x99ad('0xd2')]=_0x1db367['id'];if(_0x252f4f['query'][_0x99ad('0x2f')]){_0x5e8fcf[_0x99ad('0x42')]=_[_0x99ad('0x59')](_0x5e8fcf[_0x99ad('0x42')],{'$or':_[_0x99ad('0x31')](_0x5e8fcf[_0x99ad('0x45')],function(_0x29b4a6){var _0x510c14={};_0x510c14[_0x29b4a6]={'$like':'%'+_0x252f4f[_0x99ad('0x43')]['filter']+'%'};return _0x510c14;})});}_0x5e8fcf=_[_0x99ad('0x59')]({},_0x5e8fcf,_0x252f4f[_0x99ad('0x5a')]);return db['ScreenRecording'][_0x99ad('0x23')]({'where':_0x5e8fcf[_0x99ad('0x42')]})['then'](function(_0x326725){_0x1d2f4d[_0x99ad('0x23')]=_0x326725;if(_0x252f4f[_0x99ad('0x43')]['includeAll']){_0x5e8fcf[_0x99ad('0x58')]=[{'all':!![]}];}return db[_0x99ad('0xd4')][_0x99ad('0x85')](_0x5e8fcf);})[_0x99ad('0x27')](function(_0x281d29){_0x1d2f4d[_0x99ad('0x47')]=_0x281d29;return _0x1d2f4d;});}})[_0x99ad('0x27')](respondWithFilteredResult(_0x4ddb99,_0x5e8fcf))[_0x99ad('0x1c')](handleError(_0x4ddb99,null));};exports[_0x99ad('0xd5')]=function(_0x5b9a35,_0x2a01de){var _0x516898={};var _0x4cf0d4={};var _0x55274b;var _0xd8beb9;return db[_0x99ad('0x3c')][_0x99ad('0x92')]({'where':{'id':_0x5b9a35[_0x99ad('0x51')]['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x2a01de,null))[_0x99ad('0x27')](function(_0x3b4396){if(_0x3b4396){_0x55274b=_0x3b4396;_0x4cf0d4[_0x99ad('0x52')]=_[_0x99ad('0x55')](db[_0x99ad('0xd6')][_0x99ad('0x3d')]);_0x4cf0d4[_0x99ad('0x43')]=_[_0x99ad('0x55')](_0x5b9a35['query']);_0x4cf0d4['filters']=_[_0x99ad('0x56')](_0x4cf0d4[_0x99ad('0x52')],_0x4cf0d4[_0x99ad('0x43')]);_0x516898[_0x99ad('0x45')]=_[_0x99ad('0x56')](_0x4cf0d4[_0x99ad('0x52')],qs[_0x99ad('0x57')](_0x5b9a35[_0x99ad('0x43')][_0x99ad('0x57')]));_0x516898[_0x99ad('0x45')]=_0x516898[_0x99ad('0x45')][_0x99ad('0x6b')]?_0x516898['attributes']:_0x4cf0d4[_0x99ad('0x52')];_0x516898[_0x99ad('0xcc')]=qs[_0x99ad('0xc5')](_0x5b9a35[_0x99ad('0x43')][_0x99ad('0xc5')]);_0x516898['where']=qs[_0x99ad('0xc4')](_['pick'](_0x5b9a35[_0x99ad('0x43')],_0x4cf0d4['filters']));if(_0x5b9a35[_0x99ad('0x43')][_0x99ad('0x2f')]){_0x516898[_0x99ad('0x42')]=_['merge'](_0x516898['where'],{'$or':_[_0x99ad('0x31')](_0x516898[_0x99ad('0x45')],function(_0x1a5d7e){var _0x13f45b={};_0x13f45b[_0x1a5d7e]={'$like':'%'+_0x5b9a35[_0x99ad('0x43')]['filter']+'%'};return _0x13f45b;})});}_0x516898=_[_0x99ad('0x59')]({},_0x516898,_0x5b9a35[_0x99ad('0x5a')]);return _0x55274b['getChatInteractions'](_0x516898);}})[_0x99ad('0x27')](function(_0x35a02b){if(_0x35a02b){_0xd8beb9=_0x35a02b[_0x99ad('0x6b')];if(!_0x5b9a35['query'][_0x99ad('0xca')](_0x99ad('0xcb'))){_0x516898[_0x99ad('0x22')]=qs[_0x99ad('0x22')](_0x5b9a35['query'][_0x99ad('0x22')]);_0x516898[_0x99ad('0x20')]=qs['offset'](_0x5b9a35[_0x99ad('0x43')][_0x99ad('0x20')]);}return _0x55274b[_0x99ad('0xd5')](_0x516898);}})['then'](function(_0x13e4d2){if(_0x13e4d2){return _0x13e4d2?{'count':_0xd8beb9,'rows':_0x13e4d2}:null;}})[_0x99ad('0x27')](respondWithResult(_0x2a01de,null))[_0x99ad('0x1c')](handleError(_0x2a01de,null));};exports[_0x99ad('0xd7')]=function(_0x4537d8,_0xace6e9){var _0x1238a0={};var _0x29a169={};var _0x4d3add;var _0x1c6194;return db['User'][_0x99ad('0x92')]({'where':{'id':_0x4537d8[_0x99ad('0x51')]['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0xace6e9,null))['then'](function(_0x941a99){if(_0x941a99){_0x4d3add=_0x941a99;_0x29a169[_0x99ad('0x52')]=_[_0x99ad('0x55')](db[_0x99ad('0xd8')][_0x99ad('0x3d')]);_0x29a169[_0x99ad('0x43')]=_['keys'](_0x4537d8['query']);_0x29a169['filters']=_[_0x99ad('0x56')](_0x29a169['model'],_0x29a169[_0x99ad('0x43')]);_0x1238a0[_0x99ad('0x45')]=_['intersection'](_0x29a169['model'],qs[_0x99ad('0x57')](_0x4537d8[_0x99ad('0x43')][_0x99ad('0x57')]));_0x1238a0[_0x99ad('0x45')]=_0x1238a0[_0x99ad('0x45')][_0x99ad('0x6b')]?_0x1238a0['attributes']:_0x29a169[_0x99ad('0x52')];_0x1238a0['order']=qs['sort'](_0x4537d8['query'][_0x99ad('0xc5')]);_0x1238a0['where']=qs[_0x99ad('0xc4')](_[_0x99ad('0xc6')](_0x4537d8[_0x99ad('0x43')],_0x29a169[_0x99ad('0xc4')]));if(_0x4537d8[_0x99ad('0x43')]['filter']){_0x1238a0[_0x99ad('0x42')]=_['merge'](_0x1238a0['where'],{'$or':_[_0x99ad('0x31')](_0x1238a0['attributes'],function(_0x528181){var _0x5cfcdd={};_0x5cfcdd[_0x528181]={'$like':'%'+_0x4537d8[_0x99ad('0x43')][_0x99ad('0x2f')]+'%'};return _0x5cfcdd;})});}_0x1238a0=_['merge']({},_0x1238a0,_0x4537d8[_0x99ad('0x5a')]);return _0x4d3add[_0x99ad('0xd7')](_0x1238a0);}})[_0x99ad('0x27')](function(_0x3a7b3d){if(_0x3a7b3d){_0x1c6194=_0x3a7b3d[_0x99ad('0x6b')];if(!_0x4537d8['query'][_0x99ad('0xca')]('nolimit')){_0x1238a0[_0x99ad('0x22')]=qs[_0x99ad('0x22')](_0x4537d8[_0x99ad('0x43')][_0x99ad('0x22')]);_0x1238a0['offset']=qs[_0x99ad('0x20')](_0x4537d8[_0x99ad('0x43')][_0x99ad('0x20')]);}return _0x4d3add[_0x99ad('0xd7')](_0x1238a0);}})[_0x99ad('0x27')](function(_0x1ce870){if(_0x1ce870){return _0x1ce870?{'count':_0x1c6194,'rows':_0x1ce870}:null;}})[_0x99ad('0x27')](respondWithResult(_0xace6e9,null))[_0x99ad('0x1c')](handleError(_0xace6e9,null));};exports[_0x99ad('0xd9')]=function(_0x1a488e,_0x120414){var _0x314aeb={'raw':!![],'where':{}};var _0x3c41c0={};var _0x1d3d36={'count':0x0,'rows':[]};return db['User'][_0x99ad('0x92')]({'where':{'id':_0x1a488e[_0x99ad('0x51')]['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x120414,null))['then'](function(_0x28c5d4){if(_0x28c5d4){_0x3c41c0[_0x99ad('0x52')]=_['keys'](db[_0x99ad('0xda')][_0x99ad('0x3d')]);_0x3c41c0[_0x99ad('0x43')]=_[_0x99ad('0x55')](_0x1a488e[_0x99ad('0x43')]);_0x3c41c0[_0x99ad('0xc4')]=_[_0x99ad('0x56')](_0x3c41c0[_0x99ad('0x52')],_0x3c41c0['query']);_0x314aeb['attributes']=_[_0x99ad('0x56')](_0x3c41c0['model'],qs[_0x99ad('0x57')](_0x1a488e[_0x99ad('0x43')][_0x99ad('0x57')]));_0x314aeb[_0x99ad('0x45')]=_0x314aeb[_0x99ad('0x45')][_0x99ad('0x6b')]?_0x314aeb['attributes']:_0x3c41c0[_0x99ad('0x52')];if(!_0x1a488e[_0x99ad('0x43')]['hasOwnProperty']('nolimit')){_0x314aeb['limit']=qs[_0x99ad('0x22')](_0x1a488e['query']['limit']);_0x314aeb[_0x99ad('0x20')]=qs[_0x99ad('0x20')](_0x1a488e[_0x99ad('0x43')][_0x99ad('0x20')]);}_0x314aeb['order']=qs[_0x99ad('0xc5')](_0x1a488e[_0x99ad('0x43')][_0x99ad('0xc5')]);_0x314aeb['where']=qs[_0x99ad('0xc4')](_[_0x99ad('0xc6')](_0x1a488e[_0x99ad('0x43')],_0x3c41c0[_0x99ad('0xc4')]));_0x314aeb[_0x99ad('0x42')]['UserId']=_0x28c5d4['id'];if(_0x1a488e['query'][_0x99ad('0x2f')]){_0x314aeb[_0x99ad('0x42')]=_[_0x99ad('0x59')](_0x314aeb['where'],{'$or':_[_0x99ad('0x31')](_0x314aeb[_0x99ad('0x45')],function(_0x47a809){var _0x3b690a={};_0x3b690a[_0x47a809]={'$like':'%'+_0x1a488e[_0x99ad('0x43')][_0x99ad('0x2f')]+'%'};return _0x3b690a;})});}_0x314aeb=_['merge']({},_0x314aeb,_0x1a488e[_0x99ad('0x5a')]);return db[_0x99ad('0xda')]['count']({'where':_0x314aeb[_0x99ad('0x42')]})[_0x99ad('0x27')](function(_0x5c0a49){_0x1d3d36[_0x99ad('0x23')]=_0x5c0a49;if(_0x1a488e[_0x99ad('0x43')][_0x99ad('0x44')]){_0x314aeb['include']=[{'all':!![]}];}return db[_0x99ad('0xda')][_0x99ad('0x85')](_0x314aeb);})[_0x99ad('0x27')](function(_0x3e7d6d){_0x1d3d36[_0x99ad('0x47')]=_0x3e7d6d;return _0x1d3d36;});}})[_0x99ad('0x27')](respondWithFilteredResult(_0x120414,_0x314aeb))['catch'](handleError(_0x120414,null));};exports[_0x99ad('0xdb')]=function(_0x56489e,_0x8f0abf){var _0x4d8866={};var _0x2334ed={};var _0x578512;var _0x46e350;return db[_0x99ad('0x3c')][_0x99ad('0x92')]({'where':{'id':_0x56489e[_0x99ad('0x51')]['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x8f0abf,null))[_0x99ad('0x27')](function(_0x19efe4){if(_0x19efe4){_0x578512=_0x19efe4;_0x2334ed[_0x99ad('0x52')]=_['keys'](db[_0x99ad('0xdc')][_0x99ad('0x3d')]);_0x2334ed[_0x99ad('0x43')]=_[_0x99ad('0x55')](_0x56489e[_0x99ad('0x43')]);_0x2334ed[_0x99ad('0xc4')]=_[_0x99ad('0x56')](_0x2334ed[_0x99ad('0x52')],_0x2334ed['query']);_0x4d8866[_0x99ad('0x45')]=_['intersection'](_0x2334ed[_0x99ad('0x52')],qs[_0x99ad('0x57')](_0x56489e['query']['fields']));_0x4d8866[_0x99ad('0x45')]=_0x4d8866[_0x99ad('0x45')][_0x99ad('0x6b')]?_0x4d8866[_0x99ad('0x45')]:_0x2334ed[_0x99ad('0x52')];_0x4d8866[_0x99ad('0xcc')]=qs[_0x99ad('0xc5')](_0x56489e[_0x99ad('0x43')][_0x99ad('0xc5')]);_0x4d8866[_0x99ad('0x42')]=qs[_0x99ad('0xc4')](_[_0x99ad('0xc6')](_0x56489e[_0x99ad('0x43')],_0x2334ed[_0x99ad('0xc4')]));if(_0x56489e['query'][_0x99ad('0x2f')]){_0x4d8866[_0x99ad('0x42')]=_[_0x99ad('0x59')](_0x4d8866['where'],{'$or':_[_0x99ad('0x31')](_0x4d8866[_0x99ad('0x45')],function(_0x27da54){var _0x33c9c1={};_0x33c9c1[_0x27da54]={'$like':'%'+_0x56489e[_0x99ad('0x43')][_0x99ad('0x2f')]+'%'};return _0x33c9c1;})});}_0x4d8866=_[_0x99ad('0x59')]({},_0x4d8866,_0x56489e[_0x99ad('0x5a')]);return _0x578512[_0x99ad('0xdb')](_0x4d8866);}})[_0x99ad('0x27')](function(_0x1c2511){if(_0x1c2511){_0x46e350=_0x1c2511['length'];if(!_0x56489e[_0x99ad('0x43')][_0x99ad('0xca')](_0x99ad('0xcb'))){_0x4d8866['limit']=qs[_0x99ad('0x22')](_0x56489e[_0x99ad('0x43')]['limit']);_0x4d8866[_0x99ad('0x20')]=qs['offset'](_0x56489e['query'][_0x99ad('0x20')]);}return _0x578512[_0x99ad('0xdb')](_0x4d8866);}})[_0x99ad('0x27')](function(_0xcb1192){if(_0xcb1192){return _0xcb1192?{'count':_0x46e350,'rows':_0xcb1192}:null;}})[_0x99ad('0x27')](respondWithResult(_0x8f0abf,null))[_0x99ad('0x1c')](handleError(_0x8f0abf,null));};exports[_0x99ad('0xdd')]=function(_0x4e7a8a,_0x288f8f){var _0x391498={};var _0x1546d6={};var _0x14be9c;var _0x4b3ab1;return db['User'][_0x99ad('0x92')]({'where':{'id':_0x4e7a8a['params']['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x288f8f,null))[_0x99ad('0x27')](function(_0x3632c2){if(_0x3632c2){_0x14be9c=_0x3632c2;_0x1546d6['model']=_['keys'](db[_0x99ad('0xde')]['rawAttributes']);_0x1546d6[_0x99ad('0x43')]=_[_0x99ad('0x55')](_0x4e7a8a[_0x99ad('0x43')]);_0x1546d6[_0x99ad('0xc4')]=_[_0x99ad('0x56')](_0x1546d6['model'],_0x1546d6[_0x99ad('0x43')]);_0x391498[_0x99ad('0x45')]=_[_0x99ad('0x56')](_0x1546d6['model'],qs[_0x99ad('0x57')](_0x4e7a8a[_0x99ad('0x43')][_0x99ad('0x57')]));_0x391498['attributes']=_0x391498['attributes'][_0x99ad('0x6b')]?_0x391498['attributes']:_0x1546d6[_0x99ad('0x52')];_0x391498[_0x99ad('0xcc')]=qs['sort'](_0x4e7a8a[_0x99ad('0x43')]['sort']);_0x391498[_0x99ad('0x42')]=qs[_0x99ad('0xc4')](_['pick'](_0x4e7a8a['query'],_0x1546d6[_0x99ad('0xc4')]));if(_0x4e7a8a[_0x99ad('0x43')][_0x99ad('0x2f')]){_0x391498[_0x99ad('0x42')]=_[_0x99ad('0x59')](_0x391498[_0x99ad('0x42')],{'$or':_[_0x99ad('0x31')](_0x391498[_0x99ad('0x45')],function(_0x542c78){var _0x4fe512={};_0x4fe512[_0x542c78]={'$like':'%'+_0x4e7a8a[_0x99ad('0x43')][_0x99ad('0x2f')]+'%'};return _0x4fe512;})});}_0x391498=_['merge']({},_0x391498,_0x4e7a8a[_0x99ad('0x5a')]);return _0x14be9c[_0x99ad('0xdd')](_0x391498);}})['then'](function(_0x55be53){if(_0x55be53){_0x4b3ab1=_0x55be53[_0x99ad('0x6b')];if(!_0x4e7a8a['query'][_0x99ad('0xca')](_0x99ad('0xcb'))){_0x391498['limit']=qs[_0x99ad('0x22')](_0x4e7a8a[_0x99ad('0x43')][_0x99ad('0x22')]);_0x391498[_0x99ad('0x20')]=qs[_0x99ad('0x20')](_0x4e7a8a[_0x99ad('0x43')]['offset']);}return _0x14be9c[_0x99ad('0xdd')](_0x391498);}})['then'](function(_0x5d003e){if(_0x5d003e){return _0x5d003e?{'count':_0x4b3ab1,'rows':_0x5d003e}:null;}})[_0x99ad('0x27')](respondWithResult(_0x288f8f,null))['catch'](handleError(_0x288f8f,null));};exports['getWhatsappInteractions']=function(_0x2697e6,_0x2fba85){var _0x2f83dc={};var _0x4196e0={};var _0x5027d4;var _0x32d335;return db['User'][_0x99ad('0x92')]({'where':{'id':_0x2697e6['params']['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x2fba85,null))[_0x99ad('0x27')](function(_0x4f6a6e){if(_0x4f6a6e){_0x5027d4=_0x4f6a6e;_0x4196e0['model']=_[_0x99ad('0x55')](db[_0x99ad('0xdf')][_0x99ad('0x3d')]);_0x4196e0[_0x99ad('0x43')]=_[_0x99ad('0x55')](_0x2697e6[_0x99ad('0x43')]);_0x4196e0[_0x99ad('0xc4')]=_[_0x99ad('0x56')](_0x4196e0['model'],_0x4196e0['query']);_0x2f83dc[_0x99ad('0x45')]=_['intersection'](_0x4196e0[_0x99ad('0x52')],qs[_0x99ad('0x57')](_0x2697e6[_0x99ad('0x43')]['fields']));_0x2f83dc[_0x99ad('0x45')]=_0x2f83dc[_0x99ad('0x45')]['length']?_0x2f83dc['attributes']:_0x4196e0[_0x99ad('0x52')];_0x2f83dc[_0x99ad('0xcc')]=qs['sort'](_0x2697e6[_0x99ad('0x43')][_0x99ad('0xc5')]);_0x2f83dc[_0x99ad('0x42')]=qs[_0x99ad('0xc4')](_[_0x99ad('0xc6')](_0x2697e6[_0x99ad('0x43')],_0x4196e0[_0x99ad('0xc4')]));if(_0x2697e6['query'][_0x99ad('0x2f')]){_0x2f83dc[_0x99ad('0x42')]=_[_0x99ad('0x59')](_0x2f83dc['where'],{'$or':_[_0x99ad('0x31')](_0x2f83dc[_0x99ad('0x45')],function(_0x2ca5ca){var _0x5d6333={};_0x5d6333[_0x2ca5ca]={'$like':'%'+_0x2697e6[_0x99ad('0x43')][_0x99ad('0x2f')]+'%'};return _0x5d6333;})});}_0x2f83dc=_[_0x99ad('0x59')]({},_0x2f83dc,_0x2697e6[_0x99ad('0x5a')]);return _0x5027d4[_0x99ad('0xe0')](_0x2f83dc);}})[_0x99ad('0x27')](function(_0x24da12){if(_0x24da12){_0x32d335=_0x24da12[_0x99ad('0x6b')];if(!_0x2697e6['query'][_0x99ad('0xca')](_0x99ad('0xcb'))){_0x2f83dc[_0x99ad('0x22')]=qs['limit'](_0x2697e6['query'][_0x99ad('0x22')]);_0x2f83dc[_0x99ad('0x20')]=qs[_0x99ad('0x20')](_0x2697e6[_0x99ad('0x43')][_0x99ad('0x20')]);}return _0x5027d4[_0x99ad('0xe0')](_0x2f83dc);}})[_0x99ad('0x27')](function(_0x2aa258){if(_0x2aa258){return _0x2aa258?{'count':_0x32d335,'rows':_0x2aa258}:null;}})[_0x99ad('0x27')](respondWithResult(_0x2fba85,null))[_0x99ad('0x1c')](handleError(_0x2fba85,null));};exports[_0x99ad('0xe1')]=function(_0x4798d9,_0xae4d86,_0x28907d){var _0x41ca2a;var _0x235be2;var _0x178180;var _0x4d3f38=!_['isNil'](_0x4798d9[_0x99ad('0x51')]['id'])?_0x4798d9[_0x99ad('0x51')]['id']:!_[_0x99ad('0x67')](_0x4798d9[_0x99ad('0x2b')]['id'])?_0x4798d9[_0x99ad('0x2b')]['id']:null;return db['User'][_0x99ad('0x35')]({'where':{'id':_0x4d3f38,'role':{'$or':[_0x99ad('0x29'),_0x99ad('0x2b'),_0x99ad('0x2d')]}},'attributes':['id',_0x99ad('0x39'),_0x99ad('0xe2'),'mobile','role',_0x99ad('0x61'),_0x99ad('0x97')]})[_0x99ad('0x27')](function(_0x3c17c1){if(_0x3c17c1){if(_0x3c17c1['role']===_0x99ad('0x2d')){_0x41ca2a=_0x3c17c1;if(_0x4798d9[_0x99ad('0x5c')][_0x99ad('0x98')]){_0x178180=util[_0x99ad('0xa4')](_0x99ad('0xe3'),_0x41ca2a[_0x4798d9[_0x99ad('0x5c')][_0x99ad('0x98')]]);}else if(_0x4798d9[_0x99ad('0x5c')]['intrf']){_0x178180=util[_0x99ad('0xa4')](_0x99ad('0xe4'),_0x4798d9[_0x99ad('0x5c')][_0x99ad('0xe5')]);}else{_0x178180=util[_0x99ad('0xa4')]('SIP/%s',_0x41ca2a[_0x99ad('0x39')]);}socket['to'](util[_0x99ad('0xa4')](_0x99ad('0xe6'),_0x41ca2a['name']))[_0x99ad('0xa0')](_0x99ad('0xe7'),{'user':{'id':_0x41ca2a['id'],'name':_0x41ca2a['name']},'ip':_0x4798d9['headers'][_0x99ad('0xe8')]||_0x4798d9['connection'][_0x99ad('0xe9')]||_0x4798d9[_0x99ad('0xea')][_0x99ad('0xe9')]||_0x4798d9[_0x99ad('0xeb')]['socket']['remoteAddress']});return db[_0x99ad('0xad')][_0x99ad('0x37')]({'where':{'membername':_0x41ca2a[_0x99ad('0x39')]},'individualHooks':!![]});}}else{throw new db[(_0x99ad('0x8a'))][(_0x99ad('0x8b'))](_0x99ad('0xec'));}})['then'](function(){if(_0x41ca2a){return _0x41ca2a['getVoiceQueues']({'raw':!![]});}})[_0x99ad('0x27')](function(_0x18de8b){if(_0x41ca2a){var _0x5cc9db=[];if(_0x18de8b){_0x235be2=_0x18de8b;if(_0x235be2[_0x99ad('0x6b')]){for(var _0x2a3310=0x0;_0x2a3310<_0x235be2[_0x99ad('0x6b')];_0x2a3310++){_0x5cc9db['push']({'membername':_0x41ca2a[_0x99ad('0x39')],'UserId':_0x41ca2a['id'],'queue_name':_0x235be2[_0x2a3310][_0x99ad('0x39')],'VoiceQueueId':_0x235be2[_0x2a3310]['id'],'interface':_0x178180,'paused':_0x41ca2a[_0x99ad('0x97')]||![],'penalty':_0x235be2[_0x2a3310][_0x99ad('0xed')]||0x0});}return BPromise[_0x99ad('0x83')](_0x5cc9db,function(_0x49c759){return db['UserVoiceQueueRt']['upsert'](_0x49c759);});}}}})[_0x99ad('0x27')](function(){if(_0x41ca2a){return db[_0x99ad('0xee')][_0x99ad('0x85')]({'where':{'membername':_0x41ca2a[_0x99ad('0x39')],'exitAt':null}});}})['then'](function(_0x21ee90){if(_0x41ca2a){var _0x25e5c4=[];_0x21ee90['forEach'](function(_0x1cf1a3){_0x25e5c4[_0x99ad('0x46')](_0x1cf1a3['update']({'exitAt':moment()[_0x99ad('0xa4')](_0x99ad('0xef'))}));});return BPromise['all'](_0x25e5c4);}})[_0x99ad('0x27')](function(){if(_0x41ca2a){var _0xdab209=[];var _0x4b347f=[];var _0x51a85b=utils[_0x99ad('0xf0')]();var _0x1d146c={'membername':_0x41ca2a[_0x99ad('0x39')],'interface':_0x178180,'enterAt':moment()[_0x99ad('0xa4')](_0x99ad('0xef')),'role':_0x41ca2a['role'],'internal':_0x41ca2a[_0x99ad('0x61')]};_0x51a85b['forEach'](function(_0x3accd4){_0xdab209[_0x99ad('0x46')](_['merge']({'channel':_0x3accd4,'type':_0x99ad('0xf1'),'data1':_0x4798d9[_0x99ad('0x5c')][_0x99ad('0xf2')],'data2':_0x178180},_0x1d146c));if(_0x41ca2a[_0x99ad('0x97')]){_0x4b347f[_0x99ad('0x46')](_['merge']({'channel':_0x3accd4,'type':_0x99ad('0xf3'),'data1':_0x99ad('0xf4')},_0x1d146c));}});return db[_0x99ad('0xee')][_0x99ad('0xf5')](_0xdab209[_0x99ad('0xf6')](_0x4b347f),{'individualHooks':!![]});}})[_0x99ad('0x27')](function(){if(_0x41ca2a){return _0x41ca2a['update']({'online':!![],'lastLoginAt':moment()[_0x99ad('0xa4')]('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x41ca2a[_0x99ad('0x97')]||![],'mailPause':_0x41ca2a[_0x99ad('0x97')]||![],'chatPause':_0x41ca2a[_0x99ad('0x97')]||![],'faxPause':_0x41ca2a[_0x99ad('0x97')]||![],'smsPause':_0x41ca2a[_0x99ad('0x97')]||![],'openchannelPause':_0x41ca2a[_0x99ad('0x97')]||![],'whatsappPause':_0x41ca2a['loginInPause']||![],'pauseType':_0x41ca2a[_0x99ad('0x97')]?_0x99ad('0xf4'):null,'interface':_0x178180,'lastPauseAt':moment()[_0x99ad('0xa4')]('YYYY-MM-DD\x20HH:mm:ss')});}})[_0x99ad('0x27')](function(_0x1a2dfd){if(_0x4798d9[_0x99ad('0xf7')]){return _0x28907d();}else{return BPromise['resolve'](_0x1a2dfd)[_0x99ad('0x27')](respondWithResult(_0xae4d86,null));}})[_0x99ad('0x1c')](handleError(_0xae4d86,null));};exports[_0x99ad('0xf8')]=function(_0x5778e2,_0x48f20e){var _0x461f63;return db[_0x99ad('0x3c')]['find']({'where':{'id':_0x5778e2['params']['id'],'role':_0x99ad('0x2d')},'attributes':['id',_0x99ad('0x39'),_0x99ad('0x34')]})[_0x99ad('0x27')](handleEntityNotFound(_0x48f20e,null))[_0x99ad('0x27')](function(_0x1265b6){if(_0x1265b6){_0x461f63=_0x1265b6;return db[_0x99ad('0xad')]['destroy']({'where':{'membername':_0x461f63[_0x99ad('0x39')]},'individualHooks':!![]});}})[_0x99ad('0x27')](function(){return db[_0x99ad('0xee')][_0x99ad('0x85')]({'where':{'membername':_0x461f63[_0x99ad('0x39')],'exitAt':null}});})[_0x99ad('0x27')](function(_0x285896){var _0x2b8881=[];_0x285896[_0x99ad('0xf9')](function(_0x2c45fe){_0x2b8881[_0x99ad('0x46')](_0x2c45fe[_0x99ad('0x26')]({'exitAt':moment()[_0x99ad('0xa4')](_0x99ad('0xef'))}));});return BPromise[_0x99ad('0x50')](_0x2b8881);})[_0x99ad('0x27')](function(){return _0x461f63[_0x99ad('0x26')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0x99ad('0x27')](respondWithResult(_0x48f20e,null))[_0x99ad('0x1c')](handleError(_0x48f20e,null));};exports['pause']=function(_0x24c16,_0x3f5fb7){var _0x532f2a;return db[_0x99ad('0xad')][_0x99ad('0x26')]({'paused':0x1},{'where':{'UserId':_0x24c16[_0x99ad('0x51')]['id']},'individualHooks':!![]})[_0x99ad('0x27')](function(){return db[_0x99ad('0x3c')][_0x99ad('0x35')]({'where':{'id':_0x24c16[_0x99ad('0x51')]['id'],'role':'agent'},'attributes':['id',_0x99ad('0x39'),_0x99ad('0x34'),_0x99ad('0x61'),_0x99ad('0x98')]});})[_0x99ad('0x27')](handleEntityNotFound(_0x3f5fb7,null))['then'](function(_0x5e2a39){if(_0x5e2a39){_0x532f2a=_0x5e2a39;return respondWithRpcPromise('QueuePause',_0x99ad('0xfa'),{'id':_0x532f2a['id'],'name':_0x532f2a[_0x99ad('0x39')],'pause':!![]});}})['then'](function(){if(_0x532f2a){return db[_0x99ad('0xee')][_0x99ad('0x85')]({'where':{'membername':_0x532f2a[_0x99ad('0x39')],'type':'PAUSE','exitAt':null}});}})[_0x99ad('0x27')](function(_0x5e17a0){if(_0x5e17a0[_0x99ad('0x6b')]){var _0x5110fb=moment()[_0x99ad('0xa4')](_0x99ad('0xef'));for(var _0x109e19=0x0,_0x3a51da=_0x5e17a0[_0x99ad('0x6b')];_0x109e19<_0x3a51da;_0x109e19++){_0x5e17a0[_0x109e19][_0x99ad('0xfb')]({'exitAt':_0x5110fb});}}})['then'](function(){var _0x3433e3=[];var _0x2f4135=utils[_0x99ad('0xf0')]();_0x2f4135['forEach'](function(_0x581c56){_0x3433e3[_0x99ad('0x46')]({'channel':_0x581c56,'membername':_0x532f2a[_0x99ad('0x39')],'interface':_[_0x99ad('0x67')](_0x532f2a[_0x99ad('0x98')])?util[_0x99ad('0xa4')](_0x99ad('0xe4'),_0x532f2a[_0x99ad('0x39')]):_0x532f2a[_0x99ad('0x98')],'type':_0x99ad('0xf3'),'enterAt':moment()[_0x99ad('0xa4')]('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x24c16[_0x99ad('0x5c')][_0x99ad('0x3f')]||_0x99ad('0xfc'),'role':_0x532f2a[_0x99ad('0x34')],'internal':_0x532f2a[_0x99ad('0x61')]});});return db[_0x99ad('0xee')][_0x99ad('0xf5')](_0x3433e3,{'individualHooks':!![]});})[_0x99ad('0x27')](function(){return _0x532f2a['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x24c16[_0x99ad('0x5c')][_0x99ad('0x3f')]||_0x99ad('0xfc'),'lastPauseAt':moment()[_0x99ad('0xa4')]('YYYY-MM-DD\x20HH:mm:ss')});})['then'](respondWithResult(_0x3f5fb7,null))['catch'](handleError(_0x3f5fb7,null));};exports['unpause']=function(_0x8f2828,_0x1ead52){var _0x43aa5e;return db[_0x99ad('0x3c')]['find']({'where':{'id':_0x8f2828['params']['id']},'attributes':['id',_0x99ad('0x39'),_0x99ad('0x34'),'voicePause',_0x99ad('0xfd'),_0x99ad('0xfe'),'faxPause','openchannelPause',_0x99ad('0xff'),_0x99ad('0x100'),'pauseType',_0x99ad('0x101')]})[_0x99ad('0x27')](handleEntityNotFound(_0x1ead52,null))[_0x99ad('0x27')](function(_0x29ba43){if(_0x29ba43){_0x43aa5e=_0x29ba43;if(_0x8f2828[_0x99ad('0x5c')]['channel']&&!utils[_0x99ad('0x99')](_0x8f2828[_0x99ad('0x5c')][_0x99ad('0xa9')])){throw new db[(_0x99ad('0x8a'))][(_0x99ad('0x8b'))]('Unknown\x20channel');}switch(_0x8f2828[_0x99ad('0x5c')][_0x99ad('0xa9')]){case _0x99ad('0xa2'):return respondWithRpcPromise('QueuePause','unpause',{'id':_0x43aa5e['id'],'name':_0x43aa5e['name'],'pause':![]})[_0x99ad('0x27')](function(){return db[_0x99ad('0xad')][_0x99ad('0x26')]({'paused':0x0},{'where':{'UserId':_0x43aa5e['id']},'individualHooks':!![]});})['then'](function(){return db[_0x99ad('0xee')][_0x99ad('0x35')]({'where':{'channel':_0x8f2828[_0x99ad('0x5c')]['channel'],'membername':_0x43aa5e['name'],'type':'PAUSE','exitAt':null}});})[_0x99ad('0x27')](function(_0xc947d0){if(_0xc947d0){return _0xc947d0[_0x99ad('0x26')]({'exitAt':moment()[_0x99ad('0xa4')](_0x99ad('0xef')),'data2':_0x99ad('0x102')},{'individualHooks':!![]});}return null;})[_0x99ad('0x27')](function(){return _0x43aa5e[_0x99ad('0x26')]({'voicePause':![]});});case _0x99ad('0x4e'):case _0x99ad('0x4a'):case'fax':case _0x99ad('0x4c'):case _0x99ad('0x5b'):case _0x99ad('0x4f'):return db[_0x99ad('0xee')][_0x99ad('0x35')]({'where':{'channel':_0x8f2828[_0x99ad('0x5c')]['channel'],'membername':_0x43aa5e['name'],'type':_0x99ad('0xf3'),'exitAt':null}})[_0x99ad('0x27')](function(_0x2d0b80){if(_0x2d0b80){return _0x2d0b80['update']({'exitAt':moment()['format'](_0x99ad('0xef')),'data2':_0x99ad('0x102')},{'individualHooks':!![]});}return null;})[_0x99ad('0x27')](function(){var _0x25df61={};_[_0x99ad('0x24')](_0x25df61,util[_0x99ad('0xa4')]('%s%s',_0x8f2828[_0x99ad('0x5c')]['channel'],_0x99ad('0x103')),![]);return _0x43aa5e[_0x99ad('0x26')](_0x25df61);});default:return respondWithRpcPromise('QueuePause',_0x99ad('0x104'),{'id':_0x43aa5e['id'],'name':_0x43aa5e[_0x99ad('0x39')],'pause':![]})['then'](function(){return db[_0x99ad('0xad')][_0x99ad('0x26')]({'paused':0x0},{'where':{'UserId':_0x43aa5e['id']}});})[_0x99ad('0x27')](function(){return db[_0x99ad('0xee')][_0x99ad('0x85')]({'where':{'membername':_0x43aa5e[_0x99ad('0x39')],'type':_0x99ad('0xf3'),'exitAt':null}});})[_0x99ad('0x27')](function(_0x39e3dd){var _0x3a738e=[];_0x39e3dd[_0x99ad('0xf9')](function(_0x2e9667){_0x3a738e[_0x99ad('0x46')](_0x2e9667['update']({'exitAt':moment()[_0x99ad('0xa4')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x99ad('0x102')}));});return BPromise[_0x99ad('0x50')](_0x3a738e);})[_0x99ad('0x27')](function(){return _0x43aa5e[_0x99ad('0x26')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0x99ad('0x27')](respondWithResult(_0x1ead52,null))[_0x99ad('0x1c')](handleError(_0x1ead52,null));};exports[_0x99ad('0x105')]=function(_0x1623d4,_0x4227f0){var _0x5690bc={};var _0x33af33={};var _0x6d33e6;var _0x5946ed;return db['User']['findOne']({'where':{'id':_0x1623d4['params']['id']}})['then'](handleEntityNotFound(_0x4227f0,null))[_0x99ad('0x27')](function(_0xcf5840){if(_0xcf5840){_0x6d33e6=_0xcf5840;_0x33af33[_0x99ad('0x52')]=_[_0x99ad('0x55')](db[_0x99ad('0x106')][_0x99ad('0x3d')]);_0x33af33[_0x99ad('0x43')]=_['keys'](_0x1623d4[_0x99ad('0x43')]);_0x33af33[_0x99ad('0xc4')]=_['intersection'](_0x33af33[_0x99ad('0x52')],_0x33af33[_0x99ad('0x43')]);_0x5690bc[_0x99ad('0x45')]=_['intersection'](_0x33af33['model'],qs['fields'](_0x1623d4[_0x99ad('0x43')][_0x99ad('0x57')]));_0x5690bc[_0x99ad('0x45')]=_0x5690bc[_0x99ad('0x45')][_0x99ad('0x6b')]?_0x5690bc[_0x99ad('0x45')]:_0x33af33[_0x99ad('0x52')];_0x5690bc[_0x99ad('0xcc')]=qs[_0x99ad('0xc5')](_0x1623d4[_0x99ad('0x43')][_0x99ad('0xc5')]);_0x5690bc['where']=qs[_0x99ad('0xc4')](_[_0x99ad('0xc6')](_0x1623d4[_0x99ad('0x43')],_0x33af33['filters']));if(_0x1623d4[_0x99ad('0x43')]['filter']){_0x5690bc[_0x99ad('0x42')]=_[_0x99ad('0x59')](_0x5690bc['where'],{'$or':_[_0x99ad('0x31')](_0x5690bc[_0x99ad('0x45')],function(_0x2cd52b){var _0x56b6ad={};_0x56b6ad[_0x2cd52b]={'$like':'%'+_0x1623d4[_0x99ad('0x43')][_0x99ad('0x2f')]+'%'};return _0x56b6ad;})});}_0x5690bc=_[_0x99ad('0x59')]({},_0x5690bc,_0x1623d4[_0x99ad('0x5a')]);return _0x6d33e6[_0x99ad('0x105')](_0x5690bc);}})['then'](function(_0x170d4d){if(_0x170d4d){_0x5946ed=_0x170d4d[_0x99ad('0x6b')];if(!_0x1623d4[_0x99ad('0x43')][_0x99ad('0xca')](_0x99ad('0xcb'))){_0x5690bc[_0x99ad('0x22')]=qs[_0x99ad('0x22')](_0x1623d4[_0x99ad('0x43')][_0x99ad('0x22')]);_0x5690bc['offset']=qs[_0x99ad('0x20')](_0x1623d4[_0x99ad('0x43')][_0x99ad('0x20')]);}return _0x6d33e6['getTeams'](_0x5690bc);}})[_0x99ad('0x27')](function(_0x4bb4ad){if(_0x4bb4ad){return _0x4bb4ad?{'count':_0x5946ed,'rows':_0x4bb4ad}:null;}})['then'](respondWithResult(_0x4227f0,null))[_0x99ad('0x1c')](handleError(_0x4227f0,null));};exports[_0x99ad('0x107')]=function(_0x55bc0c,_0x2c1598){return db[_0x99ad('0x3c')]['find']({'where':{'id':_0x55bc0c['params']['id']}})['then'](handleEntityNotFound(_0x2c1598,null))[_0x99ad('0x27')](function(_0x24668d){if(_0x24668d){var _0x29c1cc=_0x24668d[_0x99ad('0x28')]({'plain':!![]});return _0x24668d[_0x99ad('0x107')](_0x55bc0c[_0x99ad('0x5c')][_0x99ad('0x60')],_[_0x99ad('0x5f')](_0x55bc0c[_0x99ad('0x5c')],[_0x99ad('0x60'),'id'])||{})['then'](function(){for(var _0x17d98a=0x0;_0x17d98a<_0x55bc0c[_0x99ad('0x5c')][_0x99ad('0x60')][_0x99ad('0x6b')];_0x17d98a++){var _0x18a973=[];var _0x21c30f={};db[_0x99ad('0x106')][_0x99ad('0x92')]({'where':{'id':_0x55bc0c[_0x99ad('0x5c')][_0x99ad('0x60')][_0x17d98a]}})[_0x99ad('0x27')](function(_0x2e5dad){_0x21c30f=_0x2e5dad[_0x99ad('0x4b')];_0x18a973[_0x99ad('0x46')](_0x2e5dad[_0x99ad('0x108')]()[_0x99ad('0x27')](function(_0x6c82ee){for(var _0x4c9123=0x0;_0x4c9123<_0x6c82ee[_0x99ad('0x6b')];_0x4c9123++){_0x6c82ee[_0x4c9123][_0x99ad('0x109')](_0x99ad('0xa9'),_0x99ad('0x10a'));}return _0x6c82ee;}));_0x18a973['push'](_0x2e5dad[_0x99ad('0x10b')]()[_0x99ad('0x27')](function(_0x2d7f78){for(var _0x1a0732=0x0;_0x1a0732<_0x2d7f78[_0x99ad('0x6b')];_0x1a0732++){_0x2d7f78[_0x1a0732][_0x99ad('0x109')](_0x99ad('0xa9'),_0x99ad('0x10c'));}return _0x2d7f78;}));_0x18a973[_0x99ad('0x46')](_0x2e5dad[_0x99ad('0x10d')]()[_0x99ad('0x27')](function(_0x737fe4){for(var _0x23f91f=0x0;_0x23f91f<_0x737fe4[_0x99ad('0x6b')];_0x23f91f++){_0x737fe4[_0x23f91f]['setDataValue'](_0x99ad('0xa9'),_0x99ad('0x10e'));}return _0x737fe4;}));_0x18a973['push'](_0x2e5dad[_0x99ad('0x10f')]()[_0x99ad('0x27')](function(_0x18ccc6){for(var _0x229b3e=0x0;_0x229b3e<_0x18ccc6[_0x99ad('0x6b')];_0x229b3e++){_0x18ccc6[_0x229b3e][_0x99ad('0x109')](_0x99ad('0xa9'),'Sms');}return _0x18ccc6;}));_0x18a973[_0x99ad('0x46')](_0x2e5dad['getWhatsappQueues']()[_0x99ad('0x27')](function(_0x438f80){for(var _0x3b120b=0x0;_0x3b120b<_0x438f80[_0x99ad('0x6b')];_0x3b120b++){_0x438f80[_0x3b120b][_0x99ad('0x109')]('channel','Whatsapp');}return _0x438f80;}));_0x18a973[_0x99ad('0x46')](_0x2e5dad[_0x99ad('0x110')]()[_0x99ad('0x27')](function(_0x1fe1e0){for(var _0x5be921=0x0;_0x5be921<_0x1fe1e0[_0x99ad('0x6b')];_0x5be921++){_0x1fe1e0[_0x5be921][_0x99ad('0x109')]('channel',_0x99ad('0x111'));}return _0x1fe1e0;}));_0x18a973[_0x99ad('0x46')](_0x2e5dad[_0x99ad('0x112')]()[_0x99ad('0x27')](function(_0xd4211f){for(var _0x142ce5=0x0;_0x142ce5<_0xd4211f[_0x99ad('0x6b')];_0x142ce5++){_0xd4211f[_0x142ce5][_0x99ad('0x109')](_0x99ad('0xa9'),_0x99ad('0x113'));}return _0xd4211f;}));return BPromise['all'](_0x18a973);})[_0x99ad('0x27')](function(_0x2876fd){var _0x38b63f=_[_0x99ad('0x114')](_0x2876fd);_0x18a973=[];return db[_0x99ad('0x68')]['transaction'](function(_0x32db1d){for(var _0x381f34=0x0;_0x381f34<_0x38b63f[_0x99ad('0x6b')];_0x381f34++){_0x18a973['push'](_0x38b63f[_0x381f34][_0x99ad('0x115')](_0x29c1cc['id']),{'transaction':_0x32db1d});}return BPromise[_0x99ad('0x50')](_0x18a973)[_0x99ad('0x27')](function(){if(_0x29c1cc[_0x99ad('0x96')]){return BPromise['each'](_[_0x99ad('0x2f')](_0x38b63f,function(_0x55550c){return _0x55550c[_0x99ad('0x116')](_0x99ad('0xa9'))===_0x99ad('0x10a');}),function(_0x2a3ae0){return db[_0x99ad('0xad')][_0x99ad('0xa7')]({'membername':_0x29c1cc[_0x99ad('0x39')],'UserId':_0x29c1cc['id'],'queue_name':_0x2a3ae0['name'],'VoiceQueueId':_0x2a3ae0['id'],'interface':_['isNil'](_0x29c1cc[_0x99ad('0x98')])?util[_0x99ad('0xa4')](_0x99ad('0xe4'),_0x29c1cc[_0x99ad('0x39')]):_0x29c1cc[_0x99ad('0x98')],'paused':_0x29c1cc[_0x99ad('0xa5')]||![],'penalty':_0x29c1cc[_0x99ad('0xa6')]},{'transaction':_0x32db1d});});}else{return;}})[_0x99ad('0x27')](function(){for(var _0x53c392=0x0;_0x53c392<_0x38b63f[_0x99ad('0x6b')];_0x53c392++){var _0x28ce85=_0x38b63f[_0x53c392][_0x99ad('0x116')](_0x99ad('0xa9'));var _0x46db53=_0x28ce85+_0x99ad('0xab');socket[_0x99ad('0xa0')]('user'+_0x28ce85+_0x99ad('0xa1'),{'UserId':_0x29c1cc['id'],['queueField']:_0x38b63f[_0x53c392]['id']});}});});})['then'](function(){db[_0x99ad('0x117')][_0x99ad('0x92')]({'where':{'teamId':_0x21c30f['id']}})[_0x99ad('0x27')](function(_0x59325b){if(_0x59325b){db[_0x99ad('0x118')]['create']({'UserId':_0x55bc0c[_0x99ad('0x51')]['id'],'VoicePrefixId':_0x59325b[_0x99ad('0x119')]});}});});}});}})[_0x99ad('0x27')](respondWithStatusCode(_0x2c1598,null))['catch'](handleError(_0x2c1598,null));};exports['removeTeams']=function(_0x1e68a8,_0x49b60d){return db['User'][_0x99ad('0x92')]({'where':{'id':_0x1e68a8[_0x99ad('0x51')]['id']}})['then'](handleEntityNotFound(_0x49b60d,null))[_0x99ad('0x27')](function(_0x52a214){if(_0x52a214){var _0x52deac=_0x52a214[_0x99ad('0x28')]({'plain':!![]});var _0x16b4a0=_0x1e68a8[_0x99ad('0x43')][_0x99ad('0x60')];return _0x52a214[_0x99ad('0x11a')](_0x16b4a0)['then'](function(){for(var _0x46fae7=0x0;_0x46fae7<_0x16b4a0[_0x99ad('0x6b')];_0x46fae7++){var _0x445bcb=[];var _0x254689={};db[_0x99ad('0x106')][_0x99ad('0x92')]({'where':{'id':_0x16b4a0[_0x46fae7]}})[_0x99ad('0x27')](function(_0x19961c){_0x254689=_0x19961c['dataValues'];_0x445bcb[_0x99ad('0x46')](_0x19961c[_0x99ad('0x108')]()[_0x99ad('0x27')](function(_0x162e30){for(var _0x334204=0x0;_0x334204<_0x162e30[_0x99ad('0x6b')];_0x334204++){_0x162e30[_0x334204]['setDataValue']('channel',_0x99ad('0x10a'));}return _0x162e30;}));_0x445bcb[_0x99ad('0x46')](_0x19961c['getChatQueues']()['then'](function(_0x4d58ae){for(var _0x587eb8=0x0;_0x587eb8<_0x4d58ae['length'];_0x587eb8++){_0x4d58ae[_0x587eb8]['setDataValue'](_0x99ad('0xa9'),'Chat');}return _0x4d58ae;}));_0x445bcb[_0x99ad('0x46')](_0x19961c[_0x99ad('0x10d')]()[_0x99ad('0x27')](function(_0x19577f){for(var _0x48c82b=0x0;_0x48c82b<_0x19577f[_0x99ad('0x6b')];_0x48c82b++){_0x19577f[_0x48c82b][_0x99ad('0x109')]('channel',_0x99ad('0x10e'));}return _0x19577f;}));_0x445bcb[_0x99ad('0x46')](_0x19961c[_0x99ad('0x10f')]()[_0x99ad('0x27')](function(_0xcc936e){for(var _0x2853f5=0x0;_0x2853f5<_0xcc936e[_0x99ad('0x6b')];_0x2853f5++){_0xcc936e[_0x2853f5]['setDataValue'](_0x99ad('0xa9'),_0x99ad('0x11b'));}return _0xcc936e;}));_0x445bcb[_0x99ad('0x46')](_0x19961c[_0x99ad('0x11c')]()[_0x99ad('0x27')](function(_0x502fc2){for(var _0x28bdb3=0x0;_0x28bdb3<_0x502fc2[_0x99ad('0x6b')];_0x28bdb3++){_0x502fc2[_0x28bdb3][_0x99ad('0x109')](_0x99ad('0xa9'),_0x99ad('0x11d'));}return _0x502fc2;}));_0x445bcb[_0x99ad('0x46')](_0x19961c['getFaxQueues']()['then'](function(_0xb86628){for(var _0x3349eb=0x0;_0x3349eb<_0xb86628['length'];_0x3349eb++){_0xb86628[_0x3349eb][_0x99ad('0x109')](_0x99ad('0xa9'),_0x99ad('0x111'));}return _0xb86628;}));_0x445bcb[_0x99ad('0x46')](_0x19961c[_0x99ad('0x112')]()[_0x99ad('0x27')](function(_0x576512){for(var _0xaf10aa=0x0;_0xaf10aa<_0x576512[_0x99ad('0x6b')];_0xaf10aa++){_0x576512[_0xaf10aa][_0x99ad('0x109')]('channel','Openchannel');}return _0x576512;}));return BPromise['all'](_0x445bcb);})[_0x99ad('0x27')](function(_0x466d0a){var _0x4277dc=_[_0x99ad('0x114')](_0x466d0a);_0x445bcb=[];return db[_0x99ad('0x68')][_0x99ad('0x11e')](function(_0x2c8c02){for(var _0x4f51e0=0x0;_0x4f51e0<_0x4277dc[_0x99ad('0x6b')];_0x4f51e0++){_0x445bcb['push'](_0x4277dc[_0x4f51e0][_0x99ad('0x11f')](_0x52deac['id']),{'transaction':_0x2c8c02});}return BPromise['all'](_0x445bcb)['then'](function(){if(_0x52deac[_0x99ad('0x96')]){return BPromise[_0x99ad('0x83')](_[_0x99ad('0x2f')](_0x4277dc,function(_0x24ada8){return _0x24ada8[_0x99ad('0x116')](_0x99ad('0xa9'))===_0x99ad('0x10a');}),function(_0x47a4cc){return db['UserVoiceQueueRt']['destroy']({'where':{'VoiceQueueId':_0x47a4cc['id'],'UserId':_0x52deac['id']},'transaction':_0x2c8c02});});}else{return;}})['then'](function(){db['TeamVoicePrefix'][_0x99ad('0x92')]({'where':{'teamId':_0x254689['id']}})[_0x99ad('0x27')](function(_0x32e767){if(_0x32e767){return db[_0x99ad('0x118')][_0x99ad('0x37')]({'where':{'UserId':_0x52deac['id'],'VoicePrefixId':_0x32e767[_0x99ad('0x4b')][_0x99ad('0x119')]}});}});})[_0x99ad('0x27')](function(){for(var _0x21377d=0x0;_0x21377d<_0x4277dc[_0x99ad('0x6b')];_0x21377d++){var _0x207c16=_0x4277dc[_0x21377d][_0x99ad('0x116')](_0x99ad('0xa9'));var _0x57bb03=_0x207c16+_0x99ad('0xab');socket[_0x99ad('0xa0')](_0x99ad('0x2b')+_0x207c16+_0x99ad('0xac'),{'UserId':_0x52deac['id'],['queueField']:_0x4277dc[_0x21377d]['id']});}});});});}});}})[_0x99ad('0x27')](respondWithStatusCode(_0x49b60d,null))[_0x99ad('0x1c')](handleError(_0x49b60d,null));};exports[_0x99ad('0x120')]=function(_0x19d888,_0x5503e5){var _0x552d3b={};var _0x3b6f36={};var _0x32f536;var _0x49530f;return db[_0x99ad('0x3c')]['findOne']({'where':{'id':_0x19d888['params']['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x5503e5,null))['then'](function(_0x335210){if(_0x335210){_0x32f536=_0x335210;_0x3b6f36['model']=_['keys'](db[_0x99ad('0x121')][_0x99ad('0x3d')]);_0x3b6f36[_0x99ad('0x43')]=_['keys'](_0x19d888[_0x99ad('0x43')]);_0x3b6f36[_0x99ad('0xc4')]=_[_0x99ad('0x56')](_0x3b6f36[_0x99ad('0x52')],_0x3b6f36[_0x99ad('0x43')]);_0x552d3b[_0x99ad('0x45')]=_[_0x99ad('0x56')](_0x3b6f36[_0x99ad('0x52')],qs[_0x99ad('0x57')](_0x19d888[_0x99ad('0x43')][_0x99ad('0x57')]));_0x552d3b['attributes']=_0x552d3b['attributes'][_0x99ad('0x6b')]?_0x552d3b[_0x99ad('0x45')]:_0x3b6f36[_0x99ad('0x52')];_0x552d3b[_0x99ad('0xcc')]=qs[_0x99ad('0xc5')](_0x19d888[_0x99ad('0x43')][_0x99ad('0xc5')]);_0x552d3b[_0x99ad('0x42')]=qs[_0x99ad('0xc4')](_['pick'](_0x19d888[_0x99ad('0x43')],_0x3b6f36[_0x99ad('0xc4')]));if(_0x19d888[_0x99ad('0x43')][_0x99ad('0x2f')]){_0x552d3b[_0x99ad('0x42')]=_[_0x99ad('0x59')](_0x552d3b[_0x99ad('0x42')],{'$or':_[_0x99ad('0x31')](_0x552d3b['attributes'],function(_0x4a8ed8){var _0x47fc3d={};_0x47fc3d[_0x4a8ed8]={'$like':'%'+_0x19d888['query'][_0x99ad('0x2f')]+'%'};return _0x47fc3d;})});}_0x552d3b=_[_0x99ad('0x59')]({},_0x552d3b,_0x19d888[_0x99ad('0x5a')]);return _0x32f536['getLists'](_0x552d3b);}})['then'](function(_0x176244){if(_0x176244){_0x49530f=_0x176244[_0x99ad('0x6b')];if(!_0x19d888[_0x99ad('0x43')]['hasOwnProperty']('nolimit')){_0x552d3b[_0x99ad('0x22')]=qs['limit'](_0x19d888[_0x99ad('0x43')][_0x99ad('0x22')]);_0x552d3b[_0x99ad('0x20')]=qs[_0x99ad('0x20')](_0x19d888[_0x99ad('0x43')][_0x99ad('0x20')]);}return _0x32f536[_0x99ad('0x120')](_0x552d3b);}})[_0x99ad('0x27')](function(_0x3eee38){if(_0x3eee38){return _0x3eee38?{'count':_0x49530f,'rows':_0x3eee38}:null;}})[_0x99ad('0x27')](respondWithResult(_0x5503e5,null))[_0x99ad('0x1c')](handleError(_0x5503e5,null));};exports['getAgents']=function(_0x336f24,_0x27844b){var _0x485ab7={};var _0x3ac0b7={};var _0x5a439d;var _0x1393a1;return db[_0x99ad('0x3c')][_0x99ad('0x92')]({'where':{'id':_0x336f24['params']['id']}})['then'](handleEntityNotFound(_0x27844b,null))['then'](function(_0x2629b6){if(_0x2629b6){_0x5a439d=_0x2629b6;_0x3ac0b7['model']=_[_0x99ad('0x55')](db[_0x99ad('0x3c')][_0x99ad('0x3d')]);_0x3ac0b7[_0x99ad('0x43')]=_[_0x99ad('0x55')](_0x336f24[_0x99ad('0x43')]);_0x3ac0b7[_0x99ad('0xc4')]=_[_0x99ad('0x56')](_0x3ac0b7[_0x99ad('0x52')],_0x3ac0b7['query']);_0x485ab7[_0x99ad('0x45')]=_[_0x99ad('0x56')](_0x3ac0b7['model'],qs[_0x99ad('0x57')](_0x336f24[_0x99ad('0x43')][_0x99ad('0x57')]));_0x485ab7[_0x99ad('0x45')]=_0x485ab7[_0x99ad('0x45')][_0x99ad('0x6b')]?_0x485ab7['attributes']:_0x3ac0b7[_0x99ad('0x52')];_0x485ab7[_0x99ad('0xcc')]=qs[_0x99ad('0xc5')](_0x336f24['query'][_0x99ad('0xc5')]);_0x485ab7[_0x99ad('0x42')]=qs[_0x99ad('0xc4')](_['pick'](_0x336f24['query'],_0x3ac0b7[_0x99ad('0xc4')]));if(_0x336f24[_0x99ad('0x43')]['filter']){_0x485ab7[_0x99ad('0x42')]=_['merge'](_0x485ab7[_0x99ad('0x42')],{'$or':_[_0x99ad('0x31')](_0x485ab7['attributes'],function(_0x1e75b9){var _0x22be56={};_0x22be56[_0x1e75b9]={'$like':'%'+_0x336f24['query'][_0x99ad('0x2f')]+'%'};return _0x22be56;})});}_0x485ab7['model']=db[_0x99ad('0x3c')];_0x485ab7['as']=_0x99ad('0x2c');_0x485ab7=_[_0x99ad('0x59')]({},_0x485ab7,_0x336f24[_0x99ad('0x5a')]);return _0x5a439d[_0x99ad('0x108')]({'include':[_0x485ab7]});}})[_0x99ad('0x27')](function(_0x5d3252){if(_0x5d3252){var _0x47f850={},_0x10222c=[],_0x42c2c3=0x0;for(var _0x244bb2=0x0;_0x244bb2<_0x5d3252['length'];_0x244bb2+=0x1){for(var _0x57b288=0x0,_0xe8a1ba;_0x57b288<_0x5d3252[_0x244bb2]['Agents'][_0x99ad('0x6b')];_0x57b288+=0x1){_0xe8a1ba=_0x5d3252[_0x244bb2]['Agents'][_0x57b288][_0x99ad('0x28')]({'plain':!![]});_0x47f850[_0xe8a1ba['id']]=_0xe8a1ba;}}_0x47f850=_[_0x99ad('0x122')](_0x47f850);for(var _0x5dd9ff=qs[_0x99ad('0x20')](_0x336f24[_0x99ad('0x43')][_0x99ad('0x20')]);_0x5dd9ff<_0x47f850['length']&&_0x10222c[_0x99ad('0x6b')]<qs[_0x99ad('0x22')](_0x336f24[_0x99ad('0x43')][_0x99ad('0x22')]);_0x5dd9ff+=0x1){if(_0x47f850[_0x5dd9ff]){_0x10222c['push'](_0x47f850[_0x5dd9ff]);}}return{'count':_0x47f850[_0x99ad('0x6b')],'rows':_0x10222c};}})[_0x99ad('0x27')](respondWithResult(_0x27844b,null))[_0x99ad('0x1c')](handleError(_0x27844b,null));};exports[_0x99ad('0x37')]=function(_0x48a25a,_0x3feedb){if(_0x48a25a[_0x99ad('0x2b')]['id']==_0x48a25a[_0x99ad('0x51')]['id']){return _0x3feedb[_0x99ad('0x1d')](0x1f4)[_0x99ad('0x3a')]({'message':_0x99ad('0x123')});}return db[_0x99ad('0x3c')][_0x99ad('0x35')]({'where':{'id':_0x48a25a[_0x99ad('0x51')]['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x3feedb,null))[_0x99ad('0x27')](removeEntity(_0x3feedb,null))[_0x99ad('0x1c')](handleError(_0x3feedb,null));};exports[_0x99ad('0x124')]=function(_0x3fafc1,_0x41221b){return db[_0x99ad('0x3c')][_0x99ad('0x35')]({'where':{'id':_0x3fafc1['params']['id']}})['then'](handleEntityNotFound(_0x41221b,null))['then'](function(_0x199e05){if(_0x199e05){return _0x199e05[_0x99ad('0x124')](_0x3fafc1[_0x99ad('0x5c')][_0x99ad('0x60')],_['omit'](_0x3fafc1[_0x99ad('0x5c')],[_0x99ad('0x60'),'id'])||{})[_0x99ad('0x9e')](function(){for(var _0x3dc1ab=0x0;_0x3dc1ab<_0x3fafc1[_0x99ad('0x5c')][_0x99ad('0x60')]['length'];_0x3dc1ab+=0x1){socket[_0x99ad('0xa0')](_0x99ad('0x125'),{'ChatInteractionId':Number(_0x3fafc1[_0x99ad('0x5c')][_0x99ad('0x60')][_0x3dc1ab]),'UserId':Number(_0x3fafc1[_0x99ad('0x51')]['id'])});}return _0x3fafc1['body'][_0x99ad('0x60')];});}})[_0x99ad('0x27')](respondWithResult(_0x41221b,null))[_0x99ad('0x1c')](handleError(_0x41221b,null));};exports['removeChatInteractions']=function(_0xe42fa2,_0x38e0a0){return db[_0x99ad('0x3c')][_0x99ad('0x35')]({'where':{'id':_0xe42fa2[_0x99ad('0x51')]['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x38e0a0,null))[_0x99ad('0x27')](function(_0x30e65e){if(_0x30e65e){return _0x30e65e[_0x99ad('0x126')](_0xe42fa2[_0x99ad('0x43')][_0x99ad('0x60')])['then'](function(){if(_['isArray'](_0xe42fa2['query'][_0x99ad('0x60')])){for(var _0x421f62=0x0;_0x421f62<_0xe42fa2['query'][_0x99ad('0x60')][_0x99ad('0x6b')];_0x421f62+=0x1){socket['emit'](_0x99ad('0x127'),{'ChatInteractionId':Number(_0xe42fa2[_0x99ad('0x43')][_0x99ad('0x60')][_0x421f62]),'UserId':Number(_0xe42fa2['params']['id'])});}}else{socket[_0x99ad('0xa0')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0xe42fa2[_0x99ad('0x43')][_0x99ad('0x60')]),'UserId':Number(_0xe42fa2['params']['id'])});}});}})[_0x99ad('0x27')](respondWithStatusCode(_0x38e0a0,null))[_0x99ad('0x1c')](handleError(_0x38e0a0,null));};exports['addMailInteractions']=function(_0x58e180,_0x492590){return db[_0x99ad('0x3c')][_0x99ad('0x35')]({'where':{'id':_0x58e180['params']['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x492590,null))[_0x99ad('0x27')](function(_0xae4199){if(_0xae4199){return _0xae4199[_0x99ad('0x128')](_0x58e180['body'][_0x99ad('0x60')],_['omit'](_0x58e180[_0x99ad('0x5c')],[_0x99ad('0x60'),'id'])||{})['spread'](function(){for(var _0x972fdf=0x0;_0x972fdf<_0x58e180[_0x99ad('0x5c')]['ids'][_0x99ad('0x6b')];_0x972fdf+=0x1){socket['emit'](_0x99ad('0x129'),{'MailInteractionId':Number(_0x58e180['body'][_0x99ad('0x60')][_0x972fdf]),'UserId':Number(_0x58e180[_0x99ad('0x51')]['id'])});}return _0x58e180[_0x99ad('0x5c')][_0x99ad('0x60')];});}})['then'](respondWithResult(_0x492590,null))[_0x99ad('0x1c')](handleError(_0x492590,null));};exports[_0x99ad('0x12a')]=function(_0x2252fb,_0x429f0b){return db[_0x99ad('0x3c')][_0x99ad('0x35')]({'where':{'id':_0x2252fb['params']['id']}})['then'](handleEntityNotFound(_0x429f0b,null))['then'](function(_0xba8c85){if(_0xba8c85){return _0xba8c85[_0x99ad('0x12a')](_0x2252fb[_0x99ad('0x43')][_0x99ad('0x60')])[_0x99ad('0x27')](function(){if(_[_0x99ad('0xaa')](_0x2252fb[_0x99ad('0x43')][_0x99ad('0x60')])){for(var _0x6d1545=0x0;_0x6d1545<_0x2252fb['query']['ids'][_0x99ad('0x6b')];_0x6d1545+=0x1){socket['emit']('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x2252fb['query'][_0x99ad('0x60')][_0x6d1545]),'UserId':Number(_0x2252fb['params']['id'])});}}else{socket['emit'](_0x99ad('0x12b'),{'MailInteractionId':Number(_0x2252fb[_0x99ad('0x43')][_0x99ad('0x60')]),'UserId':Number(_0x2252fb[_0x99ad('0x51')]['id'])});}});}})[_0x99ad('0x27')](respondWithStatusCode(_0x429f0b,null))[_0x99ad('0x1c')](handleError(_0x429f0b,null));};exports[_0x99ad('0x12c')]=function(_0x32323e,_0x42d35e){return db['User'][_0x99ad('0x35')]({'where':{'id':_0x32323e['params']['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x42d35e,null))[_0x99ad('0x27')](function(_0x5403a0){if(_0x5403a0){return _0x5403a0[_0x99ad('0x12c')](_0x32323e[_0x99ad('0x5c')][_0x99ad('0x60')],_[_0x99ad('0x5f')](_0x32323e['body'],['ids','id'])||{})[_0x99ad('0x9e')](function(){for(var _0x2fa679=0x0;_0x2fa679<_0x32323e['body'][_0x99ad('0x60')][_0x99ad('0x6b')];_0x2fa679+=0x1){socket['emit'](_0x99ad('0x12d'),{'FaxInteractionId':Number(_0x32323e[_0x99ad('0x5c')]['ids'][_0x2fa679]),'UserId':Number(_0x32323e[_0x99ad('0x51')]['id'])});}return _0x32323e[_0x99ad('0x5c')][_0x99ad('0x60')];});}})[_0x99ad('0x27')](respondWithResult(_0x42d35e,null))[_0x99ad('0x1c')](handleError(_0x42d35e,null));};exports[_0x99ad('0x12e')]=function(_0xd40674,_0x3fa842){return db['User'][_0x99ad('0x35')]({'where':{'id':_0xd40674[_0x99ad('0x51')]['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x3fa842,null))[_0x99ad('0x27')](function(_0xc6e337){if(_0xc6e337){return _0xc6e337[_0x99ad('0x12e')](_0xd40674['query'][_0x99ad('0x60')])[_0x99ad('0x27')](function(){if(_[_0x99ad('0xaa')](_0xd40674[_0x99ad('0x43')]['ids'])){for(var _0x5a92cc=0x0;_0x5a92cc<_0xd40674['query'][_0x99ad('0x60')][_0x99ad('0x6b')];_0x5a92cc+=0x1){socket[_0x99ad('0xa0')](_0x99ad('0x12f'),{'FaxInteractionId':Number(_0xd40674[_0x99ad('0x43')][_0x99ad('0x60')][_0x5a92cc]),'UserId':Number(_0xd40674['params']['id'])});}}else{socket[_0x99ad('0xa0')](_0x99ad('0x12f'),{'FaxInteractionId':Number(_0xd40674['query']['ids']),'UserId':Number(_0xd40674[_0x99ad('0x51')]['id'])});}});}})[_0x99ad('0x27')](respondWithStatusCode(_0x3fa842,null))[_0x99ad('0x1c')](handleError(_0x3fa842,null));};exports[_0x99ad('0x130')]=function(_0x1cb8a6,_0x47bf64){return db['User'][_0x99ad('0x35')]({'where':{'id':_0x1cb8a6[_0x99ad('0x51')]['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x47bf64,null))[_0x99ad('0x27')](function(_0x256b83){if(_0x256b83){return _0x256b83[_0x99ad('0x130')](_0x1cb8a6[_0x99ad('0x5c')][_0x99ad('0x60')],_[_0x99ad('0x5f')](_0x1cb8a6[_0x99ad('0x5c')],['ids','id'])||{})[_0x99ad('0x9e')](function(){for(var _0x38695c=0x0;_0x38695c<_0x1cb8a6[_0x99ad('0x5c')]['ids'][_0x99ad('0x6b')];_0x38695c+=0x1){socket[_0x99ad('0xa0')](_0x99ad('0x131'),{'SmsInteractionId':Number(_0x1cb8a6['body'][_0x99ad('0x60')][_0x38695c]),'UserId':Number(_0x1cb8a6[_0x99ad('0x51')]['id'])});}return _0x1cb8a6[_0x99ad('0x5c')]['ids'];});}})['then'](respondWithResult(_0x47bf64,null))[_0x99ad('0x1c')](handleError(_0x47bf64,null));};exports[_0x99ad('0x132')]=function(_0x3446d0,_0x583d2a){return db[_0x99ad('0x3c')]['find']({'where':{'id':_0x3446d0[_0x99ad('0x51')]['id']}})['then'](handleEntityNotFound(_0x583d2a,null))[_0x99ad('0x27')](function(_0x2030e1){if(_0x2030e1){return _0x2030e1[_0x99ad('0x132')](_0x3446d0[_0x99ad('0x43')][_0x99ad('0x60')])[_0x99ad('0x27')](function(){if(_[_0x99ad('0xaa')](_0x3446d0['query'][_0x99ad('0x60')])){for(var _0x1a162f=0x0;_0x1a162f<_0x3446d0['query'][_0x99ad('0x60')][_0x99ad('0x6b')];_0x1a162f+=0x1){socket[_0x99ad('0xa0')](_0x99ad('0x133'),{'SmsInteractionId':Number(_0x3446d0[_0x99ad('0x43')][_0x99ad('0x60')][_0x1a162f]),'UserId':Number(_0x3446d0[_0x99ad('0x51')]['id'])});}}else{socket[_0x99ad('0xa0')](_0x99ad('0x133'),{'SmsInteractionId':Number(_0x3446d0['query'][_0x99ad('0x60')]),'UserId':Number(_0x3446d0[_0x99ad('0x51')]['id'])});}});}})[_0x99ad('0x27')](respondWithStatusCode(_0x583d2a,null))[_0x99ad('0x1c')](handleError(_0x583d2a,null));};exports[_0x99ad('0x134')]=function(_0x4beffe,_0x3f74fb){return db[_0x99ad('0x3c')][_0x99ad('0x35')]({'where':{'id':_0x4beffe[_0x99ad('0x51')]['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x3f74fb,null))[_0x99ad('0x27')](function(_0x374815){if(_0x374815){return _0x374815['addOpenchannelInteractions'](_0x4beffe[_0x99ad('0x5c')][_0x99ad('0x60')],_[_0x99ad('0x5f')](_0x4beffe[_0x99ad('0x5c')],['ids','id'])||{})[_0x99ad('0x9e')](function(){for(var _0x10df63=0x0;_0x10df63<_0x4beffe['body'][_0x99ad('0x60')][_0x99ad('0x6b')];_0x10df63+=0x1){socket[_0x99ad('0xa0')]('user_has_openchannel_interactions:save',{'OpenchannelInteractionId':Number(_0x4beffe['body'][_0x99ad('0x60')][_0x10df63]),'UserId':Number(_0x4beffe['params']['id'])});}return _0x4beffe[_0x99ad('0x5c')]['ids'];});}})[_0x99ad('0x27')](respondWithResult(_0x3f74fb,null))['catch'](handleError(_0x3f74fb,null));};exports[_0x99ad('0x135')]=function(_0x5e83c7,_0x133f56){return db['User']['find']({'where':{'id':_0x5e83c7[_0x99ad('0x51')]['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x133f56,null))['then'](function(_0x372a61){if(_0x372a61){return _0x372a61[_0x99ad('0x135')](_0x5e83c7[_0x99ad('0x43')][_0x99ad('0x60')])[_0x99ad('0x27')](function(){if(_[_0x99ad('0xaa')](_0x5e83c7[_0x99ad('0x43')][_0x99ad('0x60')])){for(var _0xfbb561=0x0;_0xfbb561<_0x5e83c7[_0x99ad('0x43')][_0x99ad('0x60')][_0x99ad('0x6b')];_0xfbb561+=0x1){socket[_0x99ad('0xa0')](_0x99ad('0x136'),{'OpenchannelInteractionId':Number(_0x5e83c7[_0x99ad('0x43')][_0x99ad('0x60')][_0xfbb561]),'UserId':Number(_0x5e83c7[_0x99ad('0x51')]['id'])});}}else{socket['emit'](_0x99ad('0x136'),{'OpenchannelInteractionId':Number(_0x5e83c7[_0x99ad('0x43')][_0x99ad('0x60')]),'UserId':Number(_0x5e83c7[_0x99ad('0x51')]['id'])});}});}})[_0x99ad('0x27')](respondWithStatusCode(_0x133f56,null))[_0x99ad('0x1c')](handleError(_0x133f56,null));};exports[_0x99ad('0x137')]=function(_0x2a4472,_0x5c6cc3){return db[_0x99ad('0x3c')][_0x99ad('0x35')]({'where':{'id':_0x2a4472[_0x99ad('0x51')]['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x5c6cc3,null))[_0x99ad('0x27')](function(_0x47eb34){if(_0x47eb34){return _0x47eb34['addWhatsappInteractions'](_0x2a4472[_0x99ad('0x5c')][_0x99ad('0x60')],_[_0x99ad('0x5f')](_0x2a4472['body'],[_0x99ad('0x60'),'id'])||{})['spread'](function(){for(var _0x3746ab=0x0;_0x3746ab<_0x2a4472['body'][_0x99ad('0x60')][_0x99ad('0x6b')];_0x3746ab+=0x1){socket['emit'](_0x99ad('0x138'),{'WhatsappInteractionId':Number(_0x2a4472['body']['ids'][_0x3746ab]),'UserId':Number(_0x2a4472[_0x99ad('0x51')]['id'])});}return _0x2a4472[_0x99ad('0x5c')][_0x99ad('0x60')];});}})[_0x99ad('0x27')](respondWithResult(_0x5c6cc3,null))[_0x99ad('0x1c')](handleError(_0x5c6cc3,null));};exports['removeWhatsappInteractions']=function(_0x1cf86d,_0x14484c){return db['User'][_0x99ad('0x35')]({'where':{'id':_0x1cf86d[_0x99ad('0x51')]['id']}})['then'](handleEntityNotFound(_0x14484c,null))[_0x99ad('0x27')](function(_0x44ce91){if(_0x44ce91){return _0x44ce91['removeWhatsappInteractions'](_0x1cf86d[_0x99ad('0x43')]['ids']);}})[_0x99ad('0x27')](respondWithStatusCode(_0x14484c,null))['catch'](handleError(_0x14484c,null));};exports[_0x99ad('0x139')]=function(_0x5911cb,_0x21d2c4){var _0x3f6149={};var _0x1bfb0e={};var _0xc45aac;var _0x1f6d55;return db[_0x99ad('0x3c')]['findOne']({'where':{'id':_0x5911cb[_0x99ad('0x51')]['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x21d2c4,null))['then'](function(_0x357781){if(_0x357781){_0xc45aac=_0x357781;_0x1bfb0e['model']=_[_0x99ad('0x55')](db[_0x99ad('0x13a')][_0x99ad('0x3d')]);_0x1bfb0e[_0x99ad('0x43')]=_[_0x99ad('0x55')](_0x5911cb[_0x99ad('0x43')]);_0x1bfb0e[_0x99ad('0xc4')]=_[_0x99ad('0x56')](_0x1bfb0e[_0x99ad('0x52')],_0x1bfb0e['query']);_0x3f6149[_0x99ad('0x45')]=_[_0x99ad('0x56')](_0x1bfb0e[_0x99ad('0x52')],qs[_0x99ad('0x57')](_0x5911cb[_0x99ad('0x43')][_0x99ad('0x57')]));_0x3f6149[_0x99ad('0x45')]=_0x3f6149[_0x99ad('0x45')][_0x99ad('0x6b')]?_0x3f6149['attributes']:_0x1bfb0e[_0x99ad('0x52')];_0x3f6149[_0x99ad('0xcc')]=qs[_0x99ad('0xc5')](_0x5911cb[_0x99ad('0x43')][_0x99ad('0xc5')]);_0x3f6149[_0x99ad('0x42')]=qs[_0x99ad('0xc4')](_[_0x99ad('0xc6')](_0x5911cb[_0x99ad('0x43')],_0x1bfb0e[_0x99ad('0xc4')]));if(_0x5911cb[_0x99ad('0x43')][_0x99ad('0x2f')]){_0x3f6149[_0x99ad('0x42')]=_[_0x99ad('0x59')](_0x3f6149[_0x99ad('0x42')],{'$or':_[_0x99ad('0x31')](_0x3f6149['attributes'],function(_0x23f0ca){var _0x39797e={};_0x39797e[_0x23f0ca]={'$like':'%'+_0x5911cb['query'][_0x99ad('0x2f')]+'%'};return _0x39797e;})});}_0x3f6149=_['merge']({},_0x3f6149,_0x5911cb['options']);return _0xc45aac[_0x99ad('0x139')](_0x3f6149);}})[_0x99ad('0x27')](function(_0x581ecb){if(_0x581ecb){_0x1f6d55=_0x581ecb['length'];if(!_0x5911cb[_0x99ad('0x43')][_0x99ad('0xca')](_0x99ad('0xcb'))){_0x3f6149[_0x99ad('0x22')]=qs[_0x99ad('0x22')](_0x5911cb[_0x99ad('0x43')]['limit']);_0x3f6149[_0x99ad('0x20')]=qs['offset'](_0x5911cb[_0x99ad('0x43')][_0x99ad('0x20')]);}return _0xc45aac[_0x99ad('0x139')](_0x3f6149);}})[_0x99ad('0x27')](function(_0x3a17e2){if(_0x3a17e2){return _0x3a17e2?{'count':_0x1f6d55,'rows':_0x3a17e2}:null;}})[_0x99ad('0x27')](respondWithResult(_0x21d2c4,null))[_0x99ad('0x1c')](handleError(_0x21d2c4,null));};exports['getFaxAccounts']=function(_0x24423c,_0x40f51c){var _0x3dd4f3={};var _0x16d926={};var _0x4efa87;var _0x239a91;return db[_0x99ad('0x3c')]['findOne']({'where':{'id':_0x24423c[_0x99ad('0x51')]['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x40f51c,null))[_0x99ad('0x27')](function(_0x4b3992){if(_0x4b3992){_0x4efa87=_0x4b3992;_0x16d926[_0x99ad('0x52')]=_['keys'](db[_0x99ad('0x13b')][_0x99ad('0x3d')]);_0x16d926[_0x99ad('0x43')]=_[_0x99ad('0x55')](_0x24423c[_0x99ad('0x43')]);_0x16d926['filters']=_['intersection'](_0x16d926[_0x99ad('0x52')],_0x16d926[_0x99ad('0x43')]);_0x3dd4f3[_0x99ad('0x45')]=_['intersection'](_0x16d926[_0x99ad('0x52')],qs[_0x99ad('0x57')](_0x24423c['query'][_0x99ad('0x57')]));_0x3dd4f3['attributes']=_0x3dd4f3[_0x99ad('0x45')][_0x99ad('0x6b')]?_0x3dd4f3[_0x99ad('0x45')]:_0x16d926[_0x99ad('0x52')];_0x3dd4f3[_0x99ad('0xcc')]=qs['sort'](_0x24423c[_0x99ad('0x43')]['sort']);_0x3dd4f3[_0x99ad('0x42')]=qs[_0x99ad('0xc4')](_[_0x99ad('0xc6')](_0x24423c[_0x99ad('0x43')],_0x16d926[_0x99ad('0xc4')]));if(_0x24423c[_0x99ad('0x43')]['filter']){_0x3dd4f3['where']=_['merge'](_0x3dd4f3[_0x99ad('0x42')],{'$or':_['map'](_0x3dd4f3[_0x99ad('0x45')],function(_0xe5008){var _0x37c4ba={};_0x37c4ba[_0xe5008]={'$like':'%'+_0x24423c[_0x99ad('0x43')][_0x99ad('0x2f')]+'%'};return _0x37c4ba;})});}_0x3dd4f3=_[_0x99ad('0x59')]({},_0x3dd4f3,_0x24423c[_0x99ad('0x5a')]);return _0x4efa87[_0x99ad('0x13c')](_0x3dd4f3);}})['then'](function(_0x138eba){if(_0x138eba){_0x239a91=_0x138eba['length'];if(!_0x24423c[_0x99ad('0x43')][_0x99ad('0xca')](_0x99ad('0xcb'))){_0x3dd4f3[_0x99ad('0x22')]=qs['limit'](_0x24423c[_0x99ad('0x43')][_0x99ad('0x22')]);_0x3dd4f3['offset']=qs[_0x99ad('0x20')](_0x24423c[_0x99ad('0x43')]['offset']);}return _0x4efa87[_0x99ad('0x13c')](_0x3dd4f3);}})[_0x99ad('0x27')](function(_0xeffb89){if(_0xeffb89){return _0xeffb89?{'count':_0x239a91,'rows':_0xeffb89}:null;}})[_0x99ad('0x27')](respondWithResult(_0x40f51c,null))[_0x99ad('0x1c')](handleError(_0x40f51c,null));};exports['addFaxAccounts']=function(_0x4f4d7f,_0x563d41){return db[_0x99ad('0x3c')][_0x99ad('0x35')]({'where':{'id':_0x4f4d7f[_0x99ad('0x51')]['id']}})['then'](handleEntityNotFound(_0x563d41,null))[_0x99ad('0x27')](function(_0xa75d1b){if(_0xa75d1b){return _0xa75d1b[_0x99ad('0x13d')](_0x4f4d7f[_0x99ad('0x5c')]['ids'],_[_0x99ad('0x5f')](_0x4f4d7f[_0x99ad('0x5c')],['ids','id'])||{});}})[_0x99ad('0x27')](respondWithResult(_0x563d41,null))[_0x99ad('0x1c')](handleError(_0x563d41,null));};exports[_0x99ad('0x13e')]=function(_0x248f8c,_0x2d1655){return db[_0x99ad('0x3c')][_0x99ad('0x35')]({'where':{'id':_0x248f8c[_0x99ad('0x51')]['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x2d1655,null))['then'](function(_0x3116a3){if(_0x3116a3){return _0x3116a3[_0x99ad('0x13e')](_0x248f8c[_0x99ad('0x43')][_0x99ad('0x60')]);}})[_0x99ad('0x27')](respondWithStatusCode(_0x2d1655,null))[_0x99ad('0x1c')](handleError(_0x2d1655,null));};exports['getMailAccounts']=function(_0x1e8db2,_0x1497b8){var _0x5d3a53={};var _0x5b527e={};var _0x5bdf75;var _0x8a56ba;return db[_0x99ad('0x3c')]['findOne']({'where':{'id':_0x1e8db2[_0x99ad('0x51')]['id']}})['then'](handleEntityNotFound(_0x1497b8,null))[_0x99ad('0x27')](function(_0x596f51){if(_0x596f51){_0x5bdf75=_0x596f51;_0x5b527e[_0x99ad('0x52')]=_[_0x99ad('0x55')](db[_0x99ad('0x13f')][_0x99ad('0x3d')]);_0x5b527e['query']=_[_0x99ad('0x55')](_0x1e8db2[_0x99ad('0x43')]);_0x5b527e[_0x99ad('0xc4')]=_[_0x99ad('0x56')](_0x5b527e['model'],_0x5b527e[_0x99ad('0x43')]);_0x5d3a53['attributes']=_[_0x99ad('0x56')](_0x5b527e[_0x99ad('0x52')],qs[_0x99ad('0x57')](_0x1e8db2[_0x99ad('0x43')]['fields']));_0x5d3a53[_0x99ad('0x45')]=_0x5d3a53[_0x99ad('0x45')][_0x99ad('0x6b')]?_0x5d3a53[_0x99ad('0x45')]:_0x5b527e[_0x99ad('0x52')];_0x5d3a53[_0x99ad('0xcc')]=qs[_0x99ad('0xc5')](_0x1e8db2['query']['sort']);_0x5d3a53[_0x99ad('0x42')]=qs[_0x99ad('0xc4')](_[_0x99ad('0xc6')](_0x1e8db2['query'],_0x5b527e[_0x99ad('0xc4')]));if(_0x1e8db2[_0x99ad('0x43')]['filter']){_0x5d3a53[_0x99ad('0x42')]=_[_0x99ad('0x59')](_0x5d3a53[_0x99ad('0x42')],{'$or':_[_0x99ad('0x31')](_0x5d3a53[_0x99ad('0x45')],function(_0x2c7a46){var _0x38d363={};_0x38d363[_0x2c7a46]={'$like':'%'+_0x1e8db2[_0x99ad('0x43')]['filter']+'%'};return _0x38d363;})});}_0x5d3a53=_[_0x99ad('0x59')]({},_0x5d3a53,_0x1e8db2[_0x99ad('0x5a')]);return _0x5bdf75[_0x99ad('0x140')](_0x5d3a53);}})['then'](function(_0x3db15a){if(_0x3db15a){_0x8a56ba=_0x3db15a['length'];if(!_0x1e8db2['query'][_0x99ad('0xca')](_0x99ad('0xcb'))){_0x5d3a53[_0x99ad('0x22')]=qs['limit'](_0x1e8db2[_0x99ad('0x43')][_0x99ad('0x22')]);_0x5d3a53[_0x99ad('0x20')]=qs[_0x99ad('0x20')](_0x1e8db2[_0x99ad('0x43')][_0x99ad('0x20')]);}return _0x5bdf75[_0x99ad('0x140')](_0x5d3a53);}})[_0x99ad('0x27')](function(_0x317978){if(_0x317978){return _0x317978?{'count':_0x8a56ba,'rows':_0x317978}:null;}})[_0x99ad('0x27')](respondWithResult(_0x1497b8,null))[_0x99ad('0x1c')](handleError(_0x1497b8,null));};exports[_0x99ad('0x141')]=function(_0xcdf978,_0x1c5035){return db['User'][_0x99ad('0x35')]({'where':{'id':_0xcdf978['params']['id']}})['then'](handleEntityNotFound(_0x1c5035,null))[_0x99ad('0x27')](function(_0x18fbaa){if(_0x18fbaa){return _0x18fbaa[_0x99ad('0x141')](_0xcdf978[_0x99ad('0x5c')][_0x99ad('0x60')],_[_0x99ad('0x5f')](_0xcdf978[_0x99ad('0x5c')],['ids','id'])||{});}})[_0x99ad('0x27')](respondWithResult(_0x1c5035,null))['catch'](handleError(_0x1c5035,null));};exports[_0x99ad('0x142')]=function(_0x633658,_0x1ce06f){return db[_0x99ad('0x3c')][_0x99ad('0x35')]({'where':{'id':_0x633658['params']['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x1ce06f,null))['then'](function(_0x5bcd2d){if(_0x5bcd2d){return _0x5bcd2d[_0x99ad('0x142')](_0x633658[_0x99ad('0x43')][_0x99ad('0x60')]);}})[_0x99ad('0x27')](respondWithStatusCode(_0x1ce06f,null))[_0x99ad('0x1c')](handleError(_0x1ce06f,null));};exports[_0x99ad('0x143')]=function(_0xae0d64,_0x114f8a){var _0x4e5e6f={};var _0x59fd9f={};var _0x2356ac;var _0x4d22d4;return db[_0x99ad('0x3c')][_0x99ad('0x92')]({'where':{'id':_0xae0d64[_0x99ad('0x51')]['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x114f8a,null))[_0x99ad('0x27')](function(_0x3ae8f0){if(_0x3ae8f0){_0x2356ac=_0x3ae8f0;_0x59fd9f[_0x99ad('0x52')]=_['keys'](db[_0x99ad('0x144')][_0x99ad('0x3d')]);_0x59fd9f[_0x99ad('0x43')]=_[_0x99ad('0x55')](_0xae0d64[_0x99ad('0x43')]);_0x59fd9f[_0x99ad('0xc4')]=_[_0x99ad('0x56')](_0x59fd9f[_0x99ad('0x52')],_0x59fd9f[_0x99ad('0x43')]);_0x4e5e6f[_0x99ad('0x45')]=_['intersection'](_0x59fd9f['model'],qs[_0x99ad('0x57')](_0xae0d64['query'][_0x99ad('0x57')]));_0x4e5e6f[_0x99ad('0x45')]=_0x4e5e6f[_0x99ad('0x45')][_0x99ad('0x6b')]?_0x4e5e6f[_0x99ad('0x45')]:_0x59fd9f[_0x99ad('0x52')];_0x4e5e6f['order']=qs[_0x99ad('0xc5')](_0xae0d64[_0x99ad('0x43')][_0x99ad('0xc5')]);_0x4e5e6f[_0x99ad('0x42')]=qs['filters'](_['pick'](_0xae0d64['query'],_0x59fd9f[_0x99ad('0xc4')]));if(_0xae0d64['query']['filter']){_0x4e5e6f[_0x99ad('0x42')]=_['merge'](_0x4e5e6f['where'],{'$or':_[_0x99ad('0x31')](_0x4e5e6f[_0x99ad('0x45')],function(_0xe27757){var _0x26d068={};_0x26d068[_0xe27757]={'$like':'%'+_0xae0d64['query'][_0x99ad('0x2f')]+'%'};return _0x26d068;})});}_0x4e5e6f=_[_0x99ad('0x59')]({},_0x4e5e6f,_0xae0d64[_0x99ad('0x5a')]);return _0x2356ac['getOpenchannelAccounts'](_0x4e5e6f);}})[_0x99ad('0x27')](function(_0x4b9264){if(_0x4b9264){_0x4d22d4=_0x4b9264[_0x99ad('0x6b')];if(!_0xae0d64[_0x99ad('0x43')]['hasOwnProperty'](_0x99ad('0xcb'))){_0x4e5e6f['limit']=qs[_0x99ad('0x22')](_0xae0d64[_0x99ad('0x43')][_0x99ad('0x22')]);_0x4e5e6f['offset']=qs['offset'](_0xae0d64[_0x99ad('0x43')]['offset']);}return _0x2356ac[_0x99ad('0x143')](_0x4e5e6f);}})[_0x99ad('0x27')](function(_0x1d6d2e){if(_0x1d6d2e){return _0x1d6d2e?{'count':_0x4d22d4,'rows':_0x1d6d2e}:null;}})['then'](respondWithResult(_0x114f8a,null))['catch'](handleError(_0x114f8a,null));};exports[_0x99ad('0x145')]=function(_0x469eae,_0x419378){return db[_0x99ad('0x3c')][_0x99ad('0x35')]({'where':{'id':_0x469eae['params']['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x419378,null))[_0x99ad('0x27')](function(_0x5df297){if(_0x5df297){return _0x5df297[_0x99ad('0x145')](_0x469eae['body'][_0x99ad('0x60')],_[_0x99ad('0x5f')](_0x469eae[_0x99ad('0x5c')],[_0x99ad('0x60'),'id'])||{});}})[_0x99ad('0x27')](respondWithResult(_0x419378,null))[_0x99ad('0x1c')](handleError(_0x419378,null));};exports[_0x99ad('0x146')]=function(_0x2cb8ae,_0x164779){return db['User'][_0x99ad('0x35')]({'where':{'id':_0x2cb8ae[_0x99ad('0x51')]['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x164779,null))[_0x99ad('0x27')](function(_0x22bf9f){if(_0x22bf9f){return _0x22bf9f[_0x99ad('0x146')](_0x2cb8ae[_0x99ad('0x43')]['ids']);}})[_0x99ad('0x27')](respondWithStatusCode(_0x164779,null))[_0x99ad('0x1c')](handleError(_0x164779,null));};exports[_0x99ad('0x147')]=function(_0x1ee679,_0x2f5da9){var _0x1310de={};var _0x16ff03={};var _0x1e42f6;var _0x3a3ffc;return db[_0x99ad('0x3c')][_0x99ad('0x92')]({'where':{'id':_0x1ee679['params']['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x2f5da9,null))['then'](function(_0x5b5bdf){if(_0x5b5bdf){_0x1e42f6=_0x5b5bdf;_0x16ff03['model']=_[_0x99ad('0x55')](db['SmsAccount'][_0x99ad('0x3d')]);_0x16ff03['query']=_[_0x99ad('0x55')](_0x1ee679[_0x99ad('0x43')]);_0x16ff03[_0x99ad('0xc4')]=_['intersection'](_0x16ff03[_0x99ad('0x52')],_0x16ff03[_0x99ad('0x43')]);_0x1310de[_0x99ad('0x45')]=_['intersection'](_0x16ff03['model'],qs['fields'](_0x1ee679['query']['fields']));_0x1310de[_0x99ad('0x45')]=_0x1310de[_0x99ad('0x45')][_0x99ad('0x6b')]?_0x1310de[_0x99ad('0x45')]:_0x16ff03[_0x99ad('0x52')];_0x1310de[_0x99ad('0xcc')]=qs['sort'](_0x1ee679[_0x99ad('0x43')][_0x99ad('0xc5')]);_0x1310de[_0x99ad('0x42')]=qs[_0x99ad('0xc4')](_[_0x99ad('0xc6')](_0x1ee679[_0x99ad('0x43')],_0x16ff03[_0x99ad('0xc4')]));if(_0x1ee679[_0x99ad('0x43')][_0x99ad('0x2f')]){_0x1310de[_0x99ad('0x42')]=_[_0x99ad('0x59')](_0x1310de[_0x99ad('0x42')],{'$or':_[_0x99ad('0x31')](_0x1310de[_0x99ad('0x45')],function(_0x515896){var _0x39d80d={};_0x39d80d[_0x515896]={'$like':'%'+_0x1ee679['query'][_0x99ad('0x2f')]+'%'};return _0x39d80d;})});}_0x1310de=_[_0x99ad('0x59')]({},_0x1310de,_0x1ee679[_0x99ad('0x5a')]);return _0x1e42f6[_0x99ad('0x147')](_0x1310de);}})[_0x99ad('0x27')](function(_0x558af2){if(_0x558af2){_0x3a3ffc=_0x558af2[_0x99ad('0x6b')];if(!_0x1ee679[_0x99ad('0x43')]['hasOwnProperty']('nolimit')){_0x1310de[_0x99ad('0x22')]=qs[_0x99ad('0x22')](_0x1ee679['query']['limit']);_0x1310de['offset']=qs['offset'](_0x1ee679[_0x99ad('0x43')][_0x99ad('0x20')]);}return _0x1e42f6['getSmsAccounts'](_0x1310de);}})[_0x99ad('0x27')](function(_0x4e3431){if(_0x4e3431){return _0x4e3431?{'count':_0x3a3ffc,'rows':_0x4e3431}:null;}})[_0x99ad('0x27')](respondWithResult(_0x2f5da9,null))[_0x99ad('0x1c')](handleError(_0x2f5da9,null));};exports[_0x99ad('0x148')]=function(_0x592d0e,_0x1e4dfe){return db[_0x99ad('0x3c')]['find']({'where':{'id':_0x592d0e[_0x99ad('0x51')]['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x1e4dfe,null))['then'](function(_0x8eb299){if(_0x8eb299){return _0x8eb299[_0x99ad('0x148')](_0x592d0e[_0x99ad('0x5c')][_0x99ad('0x60')],_[_0x99ad('0x5f')](_0x592d0e[_0x99ad('0x5c')],[_0x99ad('0x60'),'id'])||{});}})[_0x99ad('0x27')](respondWithResult(_0x1e4dfe,null))[_0x99ad('0x1c')](handleError(_0x1e4dfe,null));};exports[_0x99ad('0x149')]=function(_0x439d94,_0x15aa59){return db[_0x99ad('0x3c')][_0x99ad('0x35')]({'where':{'id':_0x439d94[_0x99ad('0x51')]['id']}})['then'](handleEntityNotFound(_0x15aa59,null))[_0x99ad('0x27')](function(_0x122f65){if(_0x122f65){return _0x122f65[_0x99ad('0x149')](_0x439d94[_0x99ad('0x43')]['ids']);}})[_0x99ad('0x27')](respondWithStatusCode(_0x15aa59,null))[_0x99ad('0x1c')](handleError(_0x15aa59,null));};exports[_0x99ad('0x14a')]=function(_0x520c67,_0x3f7503){var _0x3c8ce7={};var _0x5be26b={};var _0x59f3de;var _0x402f2c;return db[_0x99ad('0x3c')]['findOne']({'where':{'id':_0x520c67['params']['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x3f7503,null))[_0x99ad('0x27')](function(_0x22ad75){if(_0x22ad75){_0x59f3de=_0x22ad75;_0x5be26b['model']=_[_0x99ad('0x55')](db[_0x99ad('0x14b')]['rawAttributes']);_0x5be26b[_0x99ad('0x43')]=_[_0x99ad('0x55')](_0x520c67[_0x99ad('0x43')]);_0x5be26b[_0x99ad('0xc4')]=_[_0x99ad('0x56')](_0x5be26b[_0x99ad('0x52')],_0x5be26b[_0x99ad('0x43')]);_0x3c8ce7[_0x99ad('0x45')]=_[_0x99ad('0x56')](_0x5be26b['model'],qs[_0x99ad('0x57')](_0x520c67['query'][_0x99ad('0x57')]));_0x3c8ce7[_0x99ad('0x45')]=_0x3c8ce7[_0x99ad('0x45')][_0x99ad('0x6b')]?_0x3c8ce7[_0x99ad('0x45')]:_0x5be26b[_0x99ad('0x52')];_0x3c8ce7[_0x99ad('0xcc')]=qs[_0x99ad('0xc5')](_0x520c67[_0x99ad('0x43')][_0x99ad('0xc5')]);_0x3c8ce7[_0x99ad('0x42')]=qs[_0x99ad('0xc4')](_[_0x99ad('0xc6')](_0x520c67[_0x99ad('0x43')],_0x5be26b[_0x99ad('0xc4')]));if(_0x520c67[_0x99ad('0x43')][_0x99ad('0x2f')]){_0x3c8ce7['where']=_[_0x99ad('0x59')](_0x3c8ce7[_0x99ad('0x42')],{'$or':_[_0x99ad('0x31')](_0x3c8ce7[_0x99ad('0x45')],function(_0x3cbb15){var _0x3bfd69={};_0x3bfd69[_0x3cbb15]={'$like':'%'+_0x520c67[_0x99ad('0x43')]['filter']+'%'};return _0x3bfd69;})});}_0x3c8ce7=_['merge']({},_0x3c8ce7,_0x520c67[_0x99ad('0x5a')]);return _0x59f3de[_0x99ad('0x14a')](_0x3c8ce7);}})[_0x99ad('0x27')](function(_0x57f6b9){if(_0x57f6b9){_0x402f2c=_0x57f6b9[_0x99ad('0x6b')];if(!_0x520c67['query'][_0x99ad('0xca')](_0x99ad('0xcb'))){_0x3c8ce7['limit']=qs[_0x99ad('0x22')](_0x520c67['query'][_0x99ad('0x22')]);_0x3c8ce7[_0x99ad('0x20')]=qs[_0x99ad('0x20')](_0x520c67[_0x99ad('0x43')][_0x99ad('0x20')]);}return _0x59f3de[_0x99ad('0x14a')](_0x3c8ce7);}})[_0x99ad('0x27')](function(_0x578b38){if(_0x578b38){return _0x578b38?{'count':_0x402f2c,'rows':_0x578b38}:null;}})[_0x99ad('0x27')](respondWithResult(_0x3f7503,null))[_0x99ad('0x1c')](handleError(_0x3f7503,null));};exports['addChatWebsites']=function(_0x399114,_0x57b510){return db[_0x99ad('0x3c')]['find']({'where':{'id':_0x399114[_0x99ad('0x51')]['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x57b510,null))[_0x99ad('0x27')](function(_0x3db32c){if(_0x3db32c){return _0x3db32c['addChatWebsites'](_0x399114[_0x99ad('0x5c')][_0x99ad('0x60')],_[_0x99ad('0x5f')](_0x399114[_0x99ad('0x5c')],[_0x99ad('0x60'),'id'])||{});}})[_0x99ad('0x27')](respondWithResult(_0x57b510,null))[_0x99ad('0x1c')](handleError(_0x57b510,null));};exports[_0x99ad('0x14c')]=function(_0x4e1977,_0x24de2f){return db[_0x99ad('0x3c')][_0x99ad('0x35')]({'where':{'id':_0x4e1977[_0x99ad('0x51')]['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x24de2f,null))['then'](function(_0x46f94f){if(_0x46f94f){return _0x46f94f[_0x99ad('0x14c')](_0x4e1977[_0x99ad('0x43')]['ids']);}})[_0x99ad('0x27')](respondWithStatusCode(_0x24de2f,null))[_0x99ad('0x1c')](handleError(_0x24de2f,null));};exports[_0x99ad('0x14d')]=function(_0x31ed7d,_0x4a0e25){var _0x27433b={};var _0x1fd43f={};var _0x41a9f3;var _0x538a5d;return db['User']['findOne']({'where':{'id':_0x31ed7d['params']['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x4a0e25,null))['then'](function(_0x5c18d5){if(_0x5c18d5){_0x41a9f3=_0x5c18d5;_0x1fd43f[_0x99ad('0x52')]=_[_0x99ad('0x55')](db[_0x99ad('0x14e')][_0x99ad('0x3d')]);_0x1fd43f['query']=_['keys'](_0x31ed7d[_0x99ad('0x43')]);_0x1fd43f[_0x99ad('0xc4')]=_[_0x99ad('0x56')](_0x1fd43f[_0x99ad('0x52')],_0x1fd43f['query']);_0x27433b[_0x99ad('0x45')]=_['intersection'](_0x1fd43f['model'],qs[_0x99ad('0x57')](_0x31ed7d[_0x99ad('0x43')][_0x99ad('0x57')]));_0x27433b[_0x99ad('0x45')]=_0x27433b[_0x99ad('0x45')][_0x99ad('0x6b')]?_0x27433b[_0x99ad('0x45')]:_0x1fd43f[_0x99ad('0x52')];_0x27433b['order']=qs[_0x99ad('0xc5')](_0x31ed7d['query'][_0x99ad('0xc5')]);_0x27433b[_0x99ad('0x42')]=qs[_0x99ad('0xc4')](_['pick'](_0x31ed7d[_0x99ad('0x43')],_0x1fd43f[_0x99ad('0xc4')]));if(_0x31ed7d['query'][_0x99ad('0x2f')]){_0x27433b[_0x99ad('0x42')]=_[_0x99ad('0x59')](_0x27433b[_0x99ad('0x42')],{'$or':_[_0x99ad('0x31')](_0x27433b[_0x99ad('0x45')],function(_0x45d9ba){var _0x23a52f={};_0x23a52f[_0x45d9ba]={'$like':'%'+_0x31ed7d[_0x99ad('0x43')][_0x99ad('0x2f')]+'%'};return _0x23a52f;})});}_0x27433b=_[_0x99ad('0x59')]({},_0x27433b,_0x31ed7d[_0x99ad('0x5a')]);return _0x41a9f3[_0x99ad('0x14d')](_0x27433b);}})['then'](function(_0xe6e887){if(_0xe6e887){_0x538a5d=_0xe6e887[_0x99ad('0x6b')];if(!_0x31ed7d[_0x99ad('0x43')][_0x99ad('0xca')](_0x99ad('0xcb'))){_0x27433b[_0x99ad('0x22')]=qs['limit'](_0x31ed7d[_0x99ad('0x43')][_0x99ad('0x22')]);_0x27433b[_0x99ad('0x20')]=qs['offset'](_0x31ed7d[_0x99ad('0x43')]['offset']);}return _0x41a9f3[_0x99ad('0x14d')](_0x27433b);}})[_0x99ad('0x27')](function(_0x30b418){if(_0x30b418){return _0x30b418?{'count':_0x538a5d,'rows':_0x30b418}:null;}})['then'](respondWithResult(_0x4a0e25,null))[_0x99ad('0x1c')](handleError(_0x4a0e25,null));};exports[_0x99ad('0x14f')]=function(_0x471fac,_0x1197ca){return db[_0x99ad('0x3c')][_0x99ad('0x35')]({'where':{'id':_0x471fac['params']['id']}})['then'](handleEntityNotFound(_0x1197ca,null))['then'](function(_0x39f26){if(_0x39f26){return _0x39f26[_0x99ad('0x14f')](_0x471fac['body']['ids'],_[_0x99ad('0x5f')](_0x471fac['body'],[_0x99ad('0x60'),'id'])||{});}})[_0x99ad('0x27')](respondWithResult(_0x1197ca,null))[_0x99ad('0x1c')](handleError(_0x1197ca,null));};exports['removeWhatsappAccounts']=function(_0x9f6f38,_0x1d5859){return db[_0x99ad('0x3c')][_0x99ad('0x35')]({'where':{'id':_0x9f6f38[_0x99ad('0x51')]['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x1d5859,null))[_0x99ad('0x27')](function(_0x1a7495){if(_0x1a7495){return _0x1a7495[_0x99ad('0x150')](_0x9f6f38[_0x99ad('0x43')][_0x99ad('0x60')]);}})['then'](respondWithStatusCode(_0x1d5859,null))[_0x99ad('0x1c')](handleError(_0x1d5859,null));};exports['getSquareProjects']=function(_0x44a25e,_0x5b4f94){var _0x4a2e46={};var _0x4baf0d={};var _0x128642;var _0x4152bd;return db[_0x99ad('0x3c')][_0x99ad('0x92')]({'where':{'id':_0x44a25e[_0x99ad('0x51')]['id']}})['then'](handleEntityNotFound(_0x5b4f94,null))[_0x99ad('0x27')](function(_0x32732f){if(_0x32732f){_0x128642=_0x32732f;_0x4baf0d['model']=_[_0x99ad('0x55')](db[_0x99ad('0x151')][_0x99ad('0x3d')]);_0x4baf0d[_0x99ad('0x43')]=_[_0x99ad('0x55')](_0x44a25e[_0x99ad('0x43')]);_0x4baf0d[_0x99ad('0xc4')]=_[_0x99ad('0x56')](_0x4baf0d[_0x99ad('0x52')],_0x4baf0d[_0x99ad('0x43')]);_0x4a2e46[_0x99ad('0x45')]=_[_0x99ad('0x56')](_0x4baf0d[_0x99ad('0x52')],qs[_0x99ad('0x57')](_0x44a25e[_0x99ad('0x43')][_0x99ad('0x57')]));_0x4a2e46['attributes']=_0x4a2e46[_0x99ad('0x45')][_0x99ad('0x6b')]?_0x4a2e46[_0x99ad('0x45')]:_0x4baf0d[_0x99ad('0x52')];_0x4a2e46[_0x99ad('0xcc')]=qs[_0x99ad('0xc5')](_0x44a25e[_0x99ad('0x43')][_0x99ad('0xc5')]);_0x4a2e46['where']=qs[_0x99ad('0xc4')](_['pick'](_0x44a25e[_0x99ad('0x43')],_0x4baf0d[_0x99ad('0xc4')]));if(_0x44a25e[_0x99ad('0x43')]['filter']){_0x4a2e46[_0x99ad('0x42')]=_['merge'](_0x4a2e46[_0x99ad('0x42')],{'$or':_[_0x99ad('0x31')](_0x4a2e46[_0x99ad('0x45')],function(_0xccdda0){var _0x361c3c={};_0x361c3c[_0xccdda0]={'$like':'%'+_0x44a25e[_0x99ad('0x43')][_0x99ad('0x2f')]+'%'};return _0x361c3c;})});}_0x4a2e46=_[_0x99ad('0x59')]({},_0x4a2e46,_0x44a25e[_0x99ad('0x5a')]);return _0x128642[_0x99ad('0x152')](_0x4a2e46);}})[_0x99ad('0x27')](function(_0xcef62){if(_0xcef62){_0x4152bd=_0xcef62[_0x99ad('0x6b')];if(!_0x44a25e[_0x99ad('0x43')][_0x99ad('0xca')]('nolimit')){_0x4a2e46['limit']=qs[_0x99ad('0x22')](_0x44a25e[_0x99ad('0x43')]['limit']);_0x4a2e46[_0x99ad('0x20')]=qs[_0x99ad('0x20')](_0x44a25e[_0x99ad('0x43')][_0x99ad('0x20')]);}return _0x128642[_0x99ad('0x152')](_0x4a2e46);}})['then'](function(_0x4bba39){if(_0x4bba39){return _0x4bba39?{'count':_0x4152bd,'rows':_0x4bba39}:null;}})[_0x99ad('0x27')](respondWithResult(_0x5b4f94,null))[_0x99ad('0x1c')](handleError(_0x5b4f94,null));};exports[_0x99ad('0x153')]=function(_0x57caef,_0x47a2f8){return db['User'][_0x99ad('0x35')]({'where':{'id':_0x57caef['params']['id']}})['then'](handleEntityNotFound(_0x47a2f8,null))[_0x99ad('0x27')](function(_0x51d8fb){if(_0x51d8fb){return _0x51d8fb[_0x99ad('0x153')](_0x57caef[_0x99ad('0x5c')]['ids'],_[_0x99ad('0x5f')](_0x57caef['body'],[_0x99ad('0x60'),'id'])||{});}})[_0x99ad('0x27')](respondWithResult(_0x47a2f8,null))[_0x99ad('0x1c')](handleError(_0x47a2f8,null));};exports[_0x99ad('0x154')]=function(_0x4edcfc,_0x1e91d5){return db[_0x99ad('0x3c')][_0x99ad('0x35')]({'where':{'id':_0x4edcfc[_0x99ad('0x51')]['id']}})[_0x99ad('0x27')](handleEntityNotFound(_0x1e91d5,null))[_0x99ad('0x27')](function(_0x3929ec){if(_0x3929ec){return _0x3929ec[_0x99ad('0x154')](_0x4edcfc[_0x99ad('0x43')][_0x99ad('0x60')]);}})[_0x99ad('0x27')](respondWithStatusCode(_0x1e91d5,null))['catch'](handleError(_0x1e91d5,null));};exports[_0x99ad('0x155')]=function(_0x23cb2a,_0x452be4){var _0x26dedc={},_0x1ec44b={},_0x6416b7={'count':0x0,'rows':[]};var _0x2717cf=db[_0x99ad('0x156')][_0x99ad('0x3d')];_0x1ec44b[_0x99ad('0x52')]=_[_0x99ad('0x55')](_0x2717cf);_0x1ec44b[_0x99ad('0x43')]=_[_0x99ad('0x55')](_0x23cb2a['query']);_0x1ec44b[_0x99ad('0xc4')]=_[_0x99ad('0x56')](_0x1ec44b[_0x99ad('0x52')],_0x1ec44b[_0x99ad('0x43')]);_0x1ec44b[_0x99ad('0xc4')]=_['concat'](_0x1ec44b['filters'],[_0x99ad('0x157'),_0x99ad('0x158'),_0x99ad('0x159'),'$gte','$lt',_0x99ad('0x15a'),_0x99ad('0x15b'),_0x99ad('0x15c'),_0x99ad('0x15d'),'$between',_0x99ad('0x15e'),_0x99ad('0x15f'),_0x99ad('0x160'),_0x99ad('0x161'),'$notLike','$iLike',_0x99ad('0x162'),'$like',_0x99ad('0x163'),_0x99ad('0x164'),_0x99ad('0x165'),'$any']);_0x26dedc[_0x99ad('0x45')]=_['intersection'](_0x1ec44b[_0x99ad('0x52')],qs[_0x99ad('0x57')](_0x23cb2a[_0x99ad('0x43')][_0x99ad('0x57')]));_0x26dedc['attributes']=_0x26dedc['attributes'][_0x99ad('0x6b')]?_0x26dedc['attributes']:_0x1ec44b[_0x99ad('0x52')];if(!_0x23cb2a[_0x99ad('0x43')]['hasOwnProperty'](_0x99ad('0xcb'))){_0x26dedc[_0x99ad('0x22')]=qs[_0x99ad('0x22')](_0x23cb2a['query'][_0x99ad('0x22')]);_0x26dedc['offset']=qs[_0x99ad('0x20')](_0x23cb2a[_0x99ad('0x43')][_0x99ad('0x20')]);}_0x26dedc[_0x99ad('0xcc')]=qs[_0x99ad('0xc5')](_0x23cb2a[_0x99ad('0x43')]['sort']);_0x26dedc[_0x99ad('0x42')]=qs[_0x99ad('0xc4')](_['pick'](_0x23cb2a['query'],_0x1ec44b['filters']));if(_0x23cb2a[_0x99ad('0x43')][_0x99ad('0x2f')]){_0x26dedc[_0x99ad('0x42')]=_['merge'](_0x26dedc['where'],{'$or':_['map'](_0x26dedc[_0x99ad('0x45')],function(_0xe2a4ea){var _0x27433c={};_0x27433c[_0xe2a4ea]={'$like':'%'+_0x23cb2a['query'][_0x99ad('0x2f')]+'%'};return _0x27433c;})});}_0x26dedc[_0x99ad('0x42')]={'$and':[_0x26dedc[_0x99ad('0x42')],{'$or':[{'UserId':_0x23cb2a['params']['id']},{'OwnerId':_0x23cb2a[_0x99ad('0x51')]['id']}]}]};_0x26dedc=_[_0x99ad('0x59')]({},_0x26dedc,_0x23cb2a[_0x99ad('0x5a')]);var _0x5a2d2c={'where':_0x26dedc['where']};return db[_0x99ad('0x156')][_0x99ad('0x23')](_0x5a2d2c)[_0x99ad('0x27')](function(_0x37273c){_0x6416b7[_0x99ad('0x23')]=_0x37273c;if(_0x23cb2a[_0x99ad('0x43')]['includeAll']){_0x26dedc[_0x99ad('0x58')]=[{'attributes':['id',_0x99ad('0x166'),_0x99ad('0x167'),_0x99ad('0xe2')],'model':db['CmContact'],'as':_0x99ad('0x168')},{'attributes':['id','name','dialActive'],'model':db['VoiceQueue'],'as':'Queue'}];}return db['CmHopper'][_0x99ad('0x85')](_0x26dedc);})[_0x99ad('0x27')](function(_0x387ed5){_0x6416b7[_0x99ad('0x47')]=_0x387ed5;return _0x6416b7;})[_0x99ad('0x27')](respondWithFilteredResult(_0x452be4,_0x26dedc))[_0x99ad('0x1c')](handleError(_0x452be4,null));};exports[_0x99ad('0x169')]=function(_0xb8b67f,_0x26fbcc){if(!_['isNil'](_0xb8b67f['user']['id'])&&(_0xb8b67f['user']['role']=='admin'||_0xb8b67f[_0x99ad('0x2b')][_0x99ad('0x34')]==_0x99ad('0x2b'))){return db['User'][_0x99ad('0x92')]({'where':{'id':_0xb8b67f[_0x99ad('0x51')]['id']},'raw':!![]})[_0x99ad('0x27')](function(_0x5d1999){return authService[_0x99ad('0x16a')](_0x5d1999);})[_0x99ad('0x27')](function(_0x11e8bd){if(_0x11e8bd){return _0x26fbcc[_0x99ad('0x1d')](0xc8)[_0x99ad('0x1f')]({'api_key':_0x11e8bd[_0x99ad('0x16b')]});}else{return _0x26fbcc[_0x99ad('0x1d')](0xcc)[_0x99ad('0x1f')]({'message':_0x99ad('0x16c')});}})['catch'](handleError(_0x26fbcc,0x193));}else{return _0x26fbcc[_0x99ad('0x1d')](0x191)[_0x99ad('0x1f')]({'message':_0x99ad('0x16d')});}};exports[_0x99ad('0x16e')]=function(_0x4f6d13,_0x1baae1){if(!_[_0x99ad('0x67')](_0x4f6d13[_0x99ad('0x2b')]['id'])&&(_0x4f6d13[_0x99ad('0x2b')]['role']==_0x99ad('0x29')||_0x4f6d13[_0x99ad('0x2b')][_0x99ad('0x34')]==_0x99ad('0x2b'))){return db[_0x99ad('0x3c')][_0x99ad('0x35')]({'where':{'id':_0x4f6d13[_0x99ad('0x51')]['id']}})[_0x99ad('0x27')](function(_0x24b45e){return authService['generateApiKey'](_0x24b45e);})[_0x99ad('0x27')](function(_0x991098){return db[_0x99ad('0x3c')][_0x99ad('0x26')]({'apiKeyIat':_0x991098[_0x99ad('0x16f')],'apiKeyNonce':_0x991098[_0x99ad('0x170')]},{'where':{'id':_0x4f6d13[_0x99ad('0x51')]['id']}})[_0x99ad('0x27')](function(){return _0x1baae1['status'](0xc8)[_0x99ad('0x1f')]({'api_key':_0x991098[_0x99ad('0x16b')]});});})[_0x99ad('0x1c')](handleError(_0x1baae1,0x193));}else{return _0x1baae1['status'](0x191)[_0x99ad('0x1f')]({'message':_0x99ad('0x16d')});}};exports[_0x99ad('0x171')]=function(_0xfde9bd,_0x1ea0c9){if(!_[_0x99ad('0x67')](_0xfde9bd[_0x99ad('0x2b')]['id'])&&(_0xfde9bd['user'][_0x99ad('0x34')]=='admin'||_0xfde9bd[_0x99ad('0x2b')]['role']==_0x99ad('0x2b'))){return db[_0x99ad('0x3c')][_0x99ad('0x35')]({'where':{'id':_0xfde9bd['params']['id']}})['then'](handleEntityNotFound(_0x1ea0c9,null))[_0x99ad('0x27')](function(_0x51c58c){if(_0x51c58c&&_0x51c58c[_0x99ad('0x172')]&&_0x51c58c['apiKeyIat'])return _0x51c58c;else throw{'message':_0x99ad('0x173')};})[_0x99ad('0x27')](function(_0x3c2c85){return db['User'][_0x99ad('0x26')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0xfde9bd[_0x99ad('0x51')]['id']}});})[_0x99ad('0x27')](respondWithStatusCode(_0x1ea0c9,0xc8))['catch'](handleError(_0x1ea0c9,0x193));}else{return _0x1ea0c9['status'](0x191)[_0x99ad('0x1f')]({'message':_0x99ad('0x16d')});}};exports[_0x99ad('0x174')]=function(_0x28fa82,_0x5ba3ed){var _0x51f838=_0x28fa82[_0x99ad('0x2b')][_0x99ad('0x28')]({'plain':!![]});if(!_0x51f838){return _0x5ba3ed['status'](0x191)[_0x99ad('0x3a')](_0x99ad('0x175'));}else{return _0x5ba3ed[_0x99ad('0x1d')](0xc8)[_0x99ad('0x1f')](_0x51f838);}};exports[_0x99ad('0x176')]=function(_0x27f57d,_0x4b17b1){var _0x5ac56e={'offset':0x0},_0x501187={'count':0x0,'rows':[]};Promise['resolve']()[_0x99ad('0x27')](function(){if(!_0x27f57d[_0x99ad('0x43')][_0x99ad('0x2f')]&&!_0x27f57d[_0x99ad('0x43')][_0x99ad('0x177')]&&!_0x27f57d[_0x99ad('0x43')][_0x99ad('0x178')])return[];return Promise[_0x99ad('0x179')]()[_0x99ad('0x27')](function(){var _0x4150ed=[];if(!_['isEmpty'](_0x27f57d['query']['teams'])){_0x4150ed[_0x99ad('0x46')](db[_0x99ad('0x106')][_0x99ad('0x85')]({'attributes':['id',_0x99ad('0x39')],'where':{'id':_0x27f57d['query'][_0x99ad('0x177')]}}));}if(!_['isEmpty'](_0x27f57d[_0x99ad('0x43')][_0x99ad('0x178')])){_0x4150ed[_0x99ad('0x46')](db[_0x99ad('0xa3')][_0x99ad('0x85')]({'attributes':['id',_0x99ad('0x39')],'type':_0x99ad('0x17a'),'where':{'id':_0x27f57d[_0x99ad('0x43')][_0x99ad('0x178')]}}));}return Promise[_0x99ad('0x50')](_0x4150ed);})[_0x99ad('0x27')](function(_0x46b3c6){var _0x51a620=_[_0x99ad('0x114')](_0x46b3c6)[_0x99ad('0x31')](function(_0x57c3da){return _0x57c3da[_0x99ad('0x17b')]({'attributes':['id',_0x99ad('0x39'),'internal',_0x99ad('0x96')],'raw':!![]});});return Promise[_0x99ad('0x50')](_0x51a620);})['then'](function(_0x32d347){var _0x5c080d=_['flatten'](_0x32d347);if(!_0x27f57d[_0x99ad('0x43')]['filter'])return _0x5c080d;if(_['isEmpty'](_0x5c080d)){return db[_0x99ad('0x3c')]['findAll']({'attributes':['id','name',_0x99ad('0x61'),_0x99ad('0x96')],'where':{'role':_0x99ad('0x2d'),'$or':[db['sequelize'][_0x99ad('0x42')](db['sequelize']['fn'](_0x99ad('0x17c'),db[_0x99ad('0x68')][_0x99ad('0x17d')](_0x99ad('0x39'))),{'$like':'%'+_0x27f57d['query']['filter'][_0x99ad('0x9f')]()+'%'}),{'internal':{'$like':'%'+_0x27f57d[_0x99ad('0x43')]['filter']+'%'}}]},'raw':!![]});}else{return _(_0x5c080d)[_0x99ad('0x114')]()['filter'](function(_0x5d0886){return _0x5d0886[_0x99ad('0x39')][_0x99ad('0x9f')]()[_0x99ad('0x33')](_0x27f57d[_0x99ad('0x43')][_0x99ad('0x2f')][_0x99ad('0x9f')]())||_0x5d0886['internal']['toString']()['includes'](_0x27f57d['query']['filter']);})[_0x99ad('0x32')]();}})[_0x99ad('0x27')](function(_0x2ef4b2){var _0xe97ebc=_0x99ad('0x39');var _0x45934b=_0x99ad('0x17e');if(_0x27f57d[_0x99ad('0x43')][_0x99ad('0xc5')]){var _0x45934b=_0x27f57d[_0x99ad('0x43')][_0x99ad('0xc5')][0x0]==='-'?_0x99ad('0x17f'):_0x99ad('0x17e');var _0xe97ebc=_0x45934b===_0x99ad('0x17e')?_0x27f57d[_0x99ad('0x43')]['sort']:_0x27f57d[_0x99ad('0x43')][_0x99ad('0xc5')]['substring'](0x1);}return _(_0x2ef4b2)[_0x99ad('0x180')]('id')[_0x99ad('0x181')]([function(_0x400cc8){return _0xe97ebc===_0x99ad('0x39')?_0x400cc8[_0xe97ebc][_0x99ad('0x9f')]():_0x400cc8[_0xe97ebc];}],[_0x45934b])[_0x99ad('0x31')](function(_0x4016ea){return _['pick'](_0x4016ea,['id',_0x99ad('0x39'),_0x99ad('0x61'),_0x99ad('0x96')]);})[_0x99ad('0x32')]();})[_0x99ad('0x27')](function(_0x143a19){return client['request'](_0x99ad('0x2c'),_0x27f57d)[_0x99ad('0x27')](function(_0x3dee0a){if(_0x3dee0a[_0x99ad('0x19')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');var _0x3cce9d=_0x3dee0a[_0x99ad('0x1b')];var _0x297857=jayson[_0x99ad('0x182')][_0x99ad('0x183')]({'port':0x232c});return _0x297857[_0x99ad('0x184')](_0x99ad('0x2c'),_0x27f57d)[_0x99ad('0x27')](function(_0x15335e){if(_0x15335e[_0x99ad('0x19')])throw new Error(_0x99ad('0x185'));var _0x26cb17=_0x15335e['result'];return _[_0x99ad('0x59')]({},_0x26cb17,_0x3cce9d);});})[_0x99ad('0x27')](function(_0x59886a){return _[_0x99ad('0x31')](_0x143a19,function(_0x32d0a4){var _0x410927=_[_0x99ad('0x35')](_0x59886a[_0x99ad('0x47')],['id',_0x32d0a4['id']]);if(!_0x410927||!_0x32d0a4['online']){_0x32d0a4[_0x99ad('0x1d')]=_0x99ad('0x186');}else if(_0x410927[_0x99ad('0xa5')]){_0x32d0a4[_0x99ad('0x1d')]=_0x99ad('0xfa');}else{_0x32d0a4[_0x99ad('0x1d')]=_[_0x99ad('0x33')](['idle',_0x99ad('0x187'),_0x99ad('0x188'),_0x99ad('0x189'),null,undefined],_0x410927['voiceStatus'])?_0x99ad('0x96'):_0x99ad('0x18a');}return _0x32d0a4;});});});})[_0x99ad('0x27')](function(_0x434c8e){if(!_0x27f57d[_0x99ad('0x43')][_0x99ad('0xca')](_0x99ad('0xcb'))){_0x5ac56e[_0x99ad('0x22')]=qs['limit'](_0x27f57d[_0x99ad('0x43')]['limit']||0xa);_0x5ac56e['offset']=qs[_0x99ad('0x20')](_0x27f57d[_0x99ad('0x43')]['offset']);}_0x501187['count']=_0x434c8e[_0x99ad('0x6b')];_0x501187[_0x99ad('0x47')]=_0x5ac56e[_0x99ad('0x22')]?_0x434c8e[_0x99ad('0x18b')](_0x5ac56e[_0x99ad('0x20')],_0x5ac56e[_0x99ad('0x20')]+_0x5ac56e[_0x99ad('0x22')]):_0x434c8e;return _0x501187;})['then'](respondWithFilteredResult(_0x4b17b1,_0x5ac56e))['catch'](handleError(_0x4b17b1,null));};function get_open_tabs(_0x3b2415,_0x12c32e){var _0x59db0b=_0x3b2415[_0x99ad('0x18c')](0x0)['toUpperCase']()+_0x3b2415[_0x99ad('0x18b')](0x1);var _0x2cf23b={'type':db[_0x99ad('0x8a')][_0x99ad('0x18d')][_0x99ad('0x6a')],'raw':!![]};return new BPromise(function(_0x599064,_0x5c3524){var _0x30498e=squel[_0x99ad('0x18e')]()[_0x99ad('0x18f')](_0x99ad('0x190')+_0x59db0b+'InteractionId','id')['field'](_0x99ad('0x191'))[_0x99ad('0x6c')](_0x99ad('0x192')+_0x3b2415+'_interactions','ui')[_0x99ad('0x42')](_0x99ad('0x193'),_0x12c32e['id']);return db[_0x99ad('0x68')][_0x99ad('0x43')](_0x30498e[_0x99ad('0x194')](),_0x2cf23b)[_0x99ad('0x27')](function(_0x39542b){_0x12c32e[_0x59db0b+_0x99ad('0x195')]=_0x39542b;_0x599064(_0x39542b);})[_0x99ad('0x1c')](function(_0x4b4a78){_0x5c3524(_0x4b4a78);});});};
\ No newline at end of file
+var _0x23a3=['options','openTabs','sms','openchannel','fax','mail','body','params','describe','addContacts','ids','omit','internal','Setting','securePassword','max','isNil','min_internal','sequelize','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','QueryTypes','from','voicemail','VoiceMail','password','fullname','email','permissions','102','113','110','105','106','107','108','100','111','user','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','admin','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','checkUserLimits','settingsEnabled','userProfileId','create','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','bulkCreate','some','each','isEmpty','compact','changePassword','newPassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','oldPassword','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','findOne','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','validatePasswordHistory','updatePasswordsHistory','addQueues','channel','online','voicePause','interface','isValidChannel','capitalize','toLowerCase','Queues','penalty','QueueId','voice','format','SIP/%s','UserVoiceQueueRt','Unknown\x20channel','isArray','emit','Queue:remove','addAvatar','file','getAvatar','join','root','server/files/images/logos/default_profile.png','userpic','server/files/images/','download','getOpenTabs','ChatOpenTabs','CHAT','createdAt','FaxOpenTabs','MAIL','SmsOpenTabs','SMS','WhatsappOpenTabs','WHATSAPP','getContacts','CmContact','order','sort','pick','hasOwnProperty','CmList','Tags','color','tag','map','Queue','Unknown\x20role','nolimit','getVoiceQueuesRt','getGroups','ChatGroup','getRecordings','UserId','ScreenRecording','ChatInteraction','getChatInteractions','getOpenchannelInteractions','OpenchannelInteraction','MailInteraction','SmsInteraction','getSmsInteractions','getFaxInteractions','getWhatsappInteractions','WhatsappInteraction','login','phone','mobile','loginInPause','LOCAL/%s@from-sip/n','intrf','user:%s','user:forcelogout','connection','remoteAddress','socket','getVoiceQueues','UserVoiceQueue.penalty','MemberReport','forEach','getChannels','YYYY-MM-DD\x20HH:mm:ss','device','PAUSE','LOGININPAUSE','concat','isMiddleware','resolve','logout','pause','QueuePause','updateAttributes','DEFAULT\x20PAUSE','unpause','mailPause','openchannelPause','smsPause','whatsapppause','pauseType','lastPauseAt','set','%s%s','manual','getTeams','Team','addTeams','setDataValue','Voice','Mail','getSmsQueues','Sms','getWhatsappQueues','Fax','getOpenchannelQueues','Openchannel','flatten','transaction','addAgent','upsert','getDataValue','Queue:save','removeTeams','getChatQueues','getMailQueues','removeAgent','getLists','values','send','addChatInteractions','spread','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','user_has_openchannel_interactions:remove','addWhatsappInteractions','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','addSmsAccounts','getChatWebsites','ChatWebsite','removeChatWebsites','WhatsappAccount','getWhatsappAccounts','addWhatsappAccounts','removeWhatsappAccounts','getSquareProjects','SquareProject','addSquareProjects','removeSquareProjects','$and','$gt','$lt','$ne','$eq','$notBetween','$in','$like','$notLike','$iLike','$notILike','$overlap','$contains','$contained','$any','firstName','lastName','dialActive','VoiceQueue','CmHopper','getApiKey','retrieveApiKey','token','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','iat','nonce','apiKeyNonce','apiKeyIat','API\x20key\x20not\x20available','Unable\x20to\x20retrieve\x20the\x20current\x20user','getPresence','teams','queues','inbound','getAgents','col','toString','asc','desc','uniqBy','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','unknown','unavailable','ringing','busy','slice','toUpperCase','SELECT','field','ui.','InteractionId','ui.createdAt','_interactions','ui.UserId\x20=\x20?','OpenTabs','path','squel','jayson/promise','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','socket.io-emitter','./user.socket','register','redis','localhost','client','http','request','then','User,\x20%s,\x20%s','debug','stringify','error','message','info','catch','sendStatus','end','status','json','undefined','count','offset','limit','Content-Range','update','destroy','get','Users','Agents','agent','Telephones','telephone','ignore','value','includes','role','find','name','UserProfileResource','index','User','type','key','filter','salt','getOptions','where','query','include','attributes','push','findAll','rows','true','chat','dataValues','whatsapp','all','show','differenceBy','keys','rawAttributes','filters','intersection','model','fields','length','includeAll','merge'];(function(_0x291329,_0x978408){var _0x38d45a=function(_0x26c47a){while(--_0x26c47a){_0x291329['push'](_0x291329['shift']());}};_0x38d45a(++_0x978408);}(_0x23a3,0x131));var _0x323a=function(_0x28ab1a,_0x41638e){_0x28ab1a=_0x28ab1a-0x0;var _0x2db742=_0x23a3[_0x28ab1a];return _0x2db742;};'use strict';var moment=require('moment');var BPromise=require('bluebird');var util=require('util');var path=require(_0x323a('0x0'));var fs=require('fs');var _=require('lodash');var squel=require(_0x323a('0x1'));var jayson=require(_0x323a('0x2'));var Redis=require(_0x323a('0x3'));var authService=require(_0x323a('0x4'));var qs=require(_0x323a('0x5'));var logger=require(_0x323a('0x6'))(_0x323a('0x7'));var utils=require(_0x323a('0x8'));var config=require(_0x323a('0x9'));var licenseUtil=require('../../config/license/util');var db=require(_0x323a('0xa'))['db'];var socket=require(_0x323a('0xb'))(new Redis(config['redis']));require(_0x323a('0xc'))[_0x323a('0xd')](socket);config[_0x323a('0xe')]=_['defaults'](config[_0x323a('0xe')],{'host':_0x323a('0xf'),'port':0x18eb});var client=jayson[_0x323a('0x10')][_0x323a('0x11')]({'port':0x232a});var values;function respondWithRpcPromise(_0x1b3d13,_0x50a99b,_0x15d09f,_0x2cea45){return new BPromise(function(_0x1bc768,_0x21ddac){var _0x42b854=_0x2cea45||client;return _0x42b854[_0x323a('0x12')](_0x1b3d13,_0x15d09f)[_0x323a('0x13')](function(_0x1ae315){logger['info'](_0x323a('0x14'),_0x50a99b,'request\x20sent');logger[_0x323a('0x15')]('User,\x20%s,\x20%s,\x20%s',_0x50a99b,'request\x20sent',JSON[_0x323a('0x16')](_0x1ae315));if(_0x1ae315['error']){if(_0x1ae315[_0x323a('0x17')]['code']===0x1f4){logger[_0x323a('0x17')](_0x323a('0x14'),_0x50a99b,_0x1ae315['error'][_0x323a('0x18')]);return _0x21ddac(_0x1ae315[_0x323a('0x17')]['message']);}logger['error'](_0x323a('0x14'),_0x50a99b,_0x1ae315[_0x323a('0x17')][_0x323a('0x18')]);return _0x1bc768(_0x1ae315[_0x323a('0x17')][_0x323a('0x18')]);}else{logger[_0x323a('0x19')]('User,\x20%s,\x20%s',_0x50a99b,'request\x20sent');_0x1bc768(_0x1ae315['result']['message']);}})[_0x323a('0x1a')](function(_0x549801){logger[_0x323a('0x17')](_0x323a('0x14'),_0x50a99b,_0x549801);_0x21ddac(_0x549801);});});}function respondWithStatusCode(_0x154ab1,_0xd35d83){_0xd35d83=_0xd35d83||0xcc;return function(_0x4ee861){if(_0x4ee861){return _0x154ab1[_0x323a('0x1b')](_0xd35d83);}return _0x154ab1['status'](_0xd35d83)[_0x323a('0x1c')]();};}function respondWithResult(_0x323517,_0x174f53){_0x174f53=_0x174f53||0xc8;return function(_0x4ccd81){if(_0x4ccd81){return _0x323517[_0x323a('0x1d')](_0x174f53)[_0x323a('0x1e')](_0x4ccd81);}};}function respondWithFilteredResult(_0x36d4d9,_0x2960e0){return function(_0x35f8ec){if(_0x35f8ec){var _0x204f76=typeof _0x2960e0['offset']===_0x323a('0x1f')&&typeof _0x2960e0['limit']===_0x323a('0x1f');var _0x2e05fd=_0x35f8ec[_0x323a('0x20')];var _0x44273f=_0x204f76?0x0:_0x2960e0[_0x323a('0x21')];var _0x47ed72=_0x204f76?_0x35f8ec[_0x323a('0x20')]:_0x2960e0[_0x323a('0x21')]+_0x2960e0[_0x323a('0x22')];var _0x17907c;if(_0x47ed72>=_0x2e05fd){_0x47ed72=_0x2e05fd;_0x17907c=0xc8;}else{_0x17907c=0xce;}_0x36d4d9[_0x323a('0x1d')](_0x17907c);return _0x36d4d9['set'](_0x323a('0x23'),_0x44273f+'-'+_0x47ed72+'/'+_0x2e05fd)['json'](_0x35f8ec);}return null;};}function saveUpdates(_0x24747b){return function(_0x1eb71f){if(_0x1eb71f){return _0x1eb71f[_0x323a('0x24')](_0x24747b)[_0x323a('0x13')](function(_0x43a938){return _0x43a938;});}return null;};}function removeEntity(_0x3b4216){return function(_0x5bdea1){if(_0x5bdea1){return _0x5bdea1[_0x323a('0x25')]()[_0x323a('0x13')](function(){var _0x580c2b=_0x5bdea1[_0x323a('0x26')]({'plain':!![]});if(_0x580c2b['role']==='admin')return;var _0x4bb7ca=[{'name':_0x323a('0x27'),'value':'user','ignore':!![]},{'name':_0x323a('0x28'),'value':_0x323a('0x29'),'ignore':![]},{'name':_0x323a('0x2a'),'value':_0x323a('0x2b'),'ignore':![]}];var _0x1d5f61=_(_0x4bb7ca)['filter'](_0x323a('0x2c'))['map'](_0x323a('0x2d'))['value']();if(_[_0x323a('0x2e')](_0x1d5f61,_0x580c2b[_0x323a('0x2f')])){return;}var _0x5140d9=_[_0x323a('0x30')](_0x4bb7ca,[_0x323a('0x2d'),_0x580c2b[_0x323a('0x2f')]])[_0x323a('0x31')];return db[_0x323a('0x32')][_0x323a('0x25')]({'where':{'type':_0x5140d9,'resourceId':_0x580c2b['id']}})[_0x323a('0x13')](function(){return _0x5bdea1;});})[_0x323a('0x13')](function(){_0x3b4216['status'](0xcc)[_0x323a('0x1c')]();});}};}function handleEntityNotFound(_0x149944){return function(_0x10b7ab){if(!_0x10b7ab){_0x149944[_0x323a('0x1b')](0x194);}return _0x10b7ab;};}function handleError(_0x29d4c2,_0x676e72){_0x676e72=_0x676e72||0x1f4;return function(_0xd8addb){logger['error'](_0xd8addb['stack']);if(_0xd8addb[_0x323a('0x31')]){delete _0xd8addb[_0x323a('0x31')];}_0x29d4c2[_0x323a('0x1d')](_0x676e72)['send'](_0xd8addb);};}exports[_0x323a('0x33')]=function(_0x3f044e,_0x3c5add){var _0x2dd385={},_0x509d5f={'count':0x0,'rows':[]};var _0x28d410=_(db[_0x323a('0x34')]['rawAttributes'])['map'](function(_0x2a468a){return{'name':_0x2a468a['fieldName'],'type':_0x2a468a[_0x323a('0x35')][_0x323a('0x36')]};})[_0x323a('0x37')](function(_0x5b3a00){return!_[_0x323a('0x2e')](['password',_0x323a('0x38')],_0x5b3a00[_0x323a('0x31')]);})[_0x323a('0x2d')]();_0x2dd385=qs[_0x323a('0x39')](_0x28d410,_0x3f044e);var _0x2a5d38={'where':_0x2dd385[_0x323a('0x3a')]};return db['User'][_0x323a('0x20')](_0x2a5d38)[_0x323a('0x13')](function(_0x248d0f){_0x509d5f[_0x323a('0x20')]=_0x248d0f;if(_0x3f044e[_0x323a('0x3b')]['includeAll']){_0x2dd385[_0x323a('0x3c')]=[{'all':!![]}];}if(!_[_0x323a('0x2e')](_0x2dd385['attributes'],'id')){_0x2dd385[_0x323a('0x3d')][_0x323a('0x3e')]('id');}return db[_0x323a('0x34')][_0x323a('0x3f')](_0x2dd385);})[_0x323a('0x13')](function(_0x599b28){_0x509d5f[_0x323a('0x40')]=_0x599b28;if(_0x3f044e['query']['openTabs']===_0x323a('0x41')){var _0x3543a7=[];for(var _0x3d98ce=0x0;_0x3d98ce<_0x509d5f[_0x323a('0x40')]['length'];_0x3d98ce++){_0x3543a7[_0x323a('0x3e')](get_open_tabs(_0x323a('0x42'),_0x509d5f[_0x323a('0x40')][_0x3d98ce][_0x323a('0x43')]));_0x3543a7[_0x323a('0x3e')](get_open_tabs('sms',_0x509d5f[_0x323a('0x40')][_0x3d98ce][_0x323a('0x43')]));_0x3543a7['push'](get_open_tabs('fax',_0x509d5f[_0x323a('0x40')][_0x3d98ce][_0x323a('0x43')]));_0x3543a7[_0x323a('0x3e')](get_open_tabs('mail',_0x509d5f[_0x323a('0x40')][_0x3d98ce][_0x323a('0x43')]));_0x3543a7[_0x323a('0x3e')](get_open_tabs('openchannel',_0x509d5f[_0x323a('0x40')][_0x3d98ce][_0x323a('0x43')]));_0x3543a7[_0x323a('0x3e')](get_open_tabs(_0x323a('0x44'),_0x509d5f[_0x323a('0x40')][_0x3d98ce][_0x323a('0x43')]));}return BPromise[_0x323a('0x45')](_0x3543a7)[_0x323a('0x13')](function(_0x34afa4){return _0x509d5f;});}else{return _0x509d5f;}})[_0x323a('0x13')](respondWithFilteredResult(_0x3c5add,_0x2dd385))[_0x323a('0x1a')](handleError(_0x3c5add,null));};exports[_0x323a('0x46')]=function(_0x516a49,_0x32bd10){var _0x3bae04={'raw':![],'where':{'id':_0x516a49['params']['id']}},_0x1c2681={};_0x1c2681['model']=_[_0x323a('0x47')](_[_0x323a('0x48')](db[_0x323a('0x34')][_0x323a('0x49')]),['password',_0x323a('0x38')]);_0x1c2681['query']=_[_0x323a('0x48')](_0x516a49[_0x323a('0x3b')]);_0x1c2681[_0x323a('0x4a')]=_[_0x323a('0x4b')](_0x1c2681[_0x323a('0x4c')],_0x1c2681['query']);_0x3bae04[_0x323a('0x3d')]=_[_0x323a('0x4b')](_0x1c2681[_0x323a('0x4c')],qs[_0x323a('0x4d')](_0x516a49['query'][_0x323a('0x4d')]));_0x3bae04['attributes']=_0x3bae04[_0x323a('0x3d')][_0x323a('0x4e')]?_0x3bae04[_0x323a('0x3d')]:_0x1c2681[_0x323a('0x4c')];if(_0x516a49[_0x323a('0x3b')][_0x323a('0x4f')]){_0x3bae04[_0x323a('0x3c')]=[{'all':!![]}];}_0x3bae04=_[_0x323a('0x50')]({},_0x3bae04,_0x516a49[_0x323a('0x51')]);if(!_[_0x323a('0x2e')](_0x3bae04['attributes'],'id')){_0x3bae04['attributes'][_0x323a('0x3e')]('id');}return db[_0x323a('0x34')][_0x323a('0x30')](_0x3bae04)[_0x323a('0x13')](handleEntityNotFound(_0x32bd10,null))[_0x323a('0x13')](function(_0x39db9a){var _0x4e5a52=[];values=_0x39db9a;if(_0x516a49[_0x323a('0x3b')][_0x323a('0x52')]===_0x323a('0x41')){_0x4e5a52['push'](get_open_tabs(_0x323a('0x42'),_0x39db9a[_0x323a('0x43')]));_0x4e5a52['push'](get_open_tabs(_0x323a('0x53'),_0x39db9a['dataValues']));_0x4e5a52[_0x323a('0x3e')](get_open_tabs(_0x323a('0x54'),_0x39db9a[_0x323a('0x43')]));_0x4e5a52[_0x323a('0x3e')](get_open_tabs('whatsapp',_0x39db9a[_0x323a('0x43')]));_0x4e5a52['push'](get_open_tabs(_0x323a('0x55'),_0x39db9a['dataValues']));_0x4e5a52[_0x323a('0x3e')](get_open_tabs(_0x323a('0x56'),_0x39db9a['dataValues']));return BPromise[_0x323a('0x45')](_0x4e5a52);}else{return values;}})['then'](function(_0x1aa6dd){return values;})[_0x323a('0x13')](respondWithResult(_0x32bd10,null))['catch'](handleError(_0x32bd10,null));};exports[_0x323a('0x24')]=function(_0x445c23,_0x185ac7){if(_0x445c23['body']['id']){delete _0x445c23[_0x323a('0x57')]['id'];}delete _0x445c23[_0x323a('0x57')][_0x323a('0x2f')];return db[_0x323a('0x34')][_0x323a('0x30')]({'where':{'id':_0x445c23[_0x323a('0x58')]['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x185ac7,null))[_0x323a('0x13')](saveUpdates(_0x445c23[_0x323a('0x57')],null))[_0x323a('0x13')](respondWithResult(_0x185ac7,null))[_0x323a('0x1a')](handleError(_0x185ac7,null));};exports[_0x323a('0x59')]=function(_0x181072,_0x28036a){return db[_0x323a('0x34')][_0x323a('0x59')]()['then'](respondWithResult(_0x28036a,null))[_0x323a('0x1a')](handleError(_0x28036a,null));};exports[_0x323a('0x5a')]=function(_0x42d260,_0x40df26){return db['User']['find']({'where':{'id':_0x42d260['params']['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x40df26,null))[_0x323a('0x13')](function(_0x17a608){if(_0x17a608){return _0x17a608[_0x323a('0x5a')](_0x42d260[_0x323a('0x57')][_0x323a('0x5b')],_[_0x323a('0x5c')](_0x42d260[_0x323a('0x57')],[_0x323a('0x5b'),'id'])||{});}})[_0x323a('0x13')](respondWithResult(_0x40df26,null))[_0x323a('0x1a')](handleError(_0x40df26,null));};function validateUser(_0x1d5933){return new BPromise(function(_0x58beee,_0x37c7df){if(_0x1d5933[_0x323a('0x5d')])return _0x58beee(_0x1d5933);return db[_0x323a('0x5e')]['findById'](0x1)[_0x323a('0x13')](function(_0x440f7c){if(_0x440f7c[_0x323a('0x5f')])authService['validatePasswordPattern'](_0x1d5933['password']);db['User'][_0x323a('0x60')](_0x323a('0x5d'))[_0x323a('0x13')](function(_0x4470ea){if(_[_0x323a('0x61')](_0x4470ea)){_0x1d5933[_0x323a('0x5d')]=_0x440f7c[_0x323a('0x62')]||0x1;return;}if(_['isNil'](_0x440f7c['min_internal'])||_0x440f7c['min_internal']===_0x4470ea){_0x1d5933['internal']=_0x4470ea+0x1;return;}if(_0x440f7c['min_internal']>_0x4470ea){_0x1d5933[_0x323a('0x5d')]=_0x440f7c[_0x323a('0x62')];return;}return db[_0x323a('0x63')][_0x323a('0x3b')](_0x323a('0x64'),{'type':db[_0x323a('0x63')][_0x323a('0x65')]['SELECT']})[_0x323a('0x13')](function(_0x5b8bed){if(_0x5b8bed&&_0x5b8bed[_0x323a('0x4e')]){for(var _0x4ee6b0=0x0,_0x5e7e00=_0x5b8bed['length'];_0x4ee6b0<_0x5e7e00&&_[_0x323a('0x61')](_0x1d5933[_0x323a('0x5d')]);_0x4ee6b0++){if(_0x440f7c['min_internal']<=_0x5b8bed[_0x4ee6b0][_0x323a('0x66')]){_0x1d5933['internal']=_0x5b8bed[_0x4ee6b0][_0x323a('0x66')];}else if(_0x440f7c[_0x323a('0x62')]>_0x5b8bed[_0x4ee6b0][_0x323a('0x66')]&&_0x440f7c['min_internal']<=_0x5b8bed[_0x4ee6b0]['to']){_0x1d5933['internal']=_0x440f7c[_0x323a('0x62')];}}}if(_[_0x323a('0x61')](_0x1d5933[_0x323a('0x5d')])){_0x1d5933[_0x323a('0x5d')]=_0x4470ea+0x1;}return _0x58beee(_0x1d5933);});});})['catch'](function(_0x29808a){_0x37c7df(_0x29808a);});});}function updateUser(_0x40b2bc){return new BPromise(function(_0x9a97d9,_0xf0ddc6){try{if(_0x40b2bc[_0x323a('0x67')]){_0x40b2bc['mailbox']=_0x40b2bc[_0x323a('0x5d')];_0x40b2bc[_0x323a('0x68')]={'mailbox':_0x40b2bc[_0x323a('0x5d')],'password':_0x40b2bc[_0x323a('0x69')],'fullname':_0x40b2bc[_0x323a('0x6a')],'email':_0x40b2bc[_0x323a('0x6b')]};}if(_0x40b2bc[_0x323a('0x2f')]==='agent'){if(!_0x40b2bc['permissions'])_0x40b2bc[_0x323a('0x6c')]=['101',_0x323a('0x6d'),'103',_0x323a('0x6e'),_0x323a('0x6f'),'104',_0x323a('0x70'),_0x323a('0x71'),_0x323a('0x72'),_0x323a('0x73'),'109',_0x323a('0x74'),_0x323a('0x75'),'114','115'];}_0x9a97d9(_0x40b2bc);}catch(_0x1e9ff1){_0xf0ddc6(_0x1e9ff1);}});}exports['create']=function(_0x48829d,_0x30016f){if(_0x48829d[_0x323a('0x76')][_0x323a('0x2f')]===_0x323a('0x29'))throw new Error(_0x323a('0x77'));if(_0x48829d[_0x323a('0x57')][_0x323a('0x2f')]===_0x323a('0x76')&&_0x48829d['user'][_0x323a('0x2f')]!=='admin'){throw new Error(_0x323a('0x78'));}if(_0x48829d['body']['role']===_0x323a('0x79')&&_0x48829d[_0x323a('0x76')][_0x323a('0x2f')]!==_0x323a('0x79')){throw new Error(_0x323a('0x7a'));}return licenseUtil[_0x323a('0x7b')]([_0x48829d[_0x323a('0x57')]])[_0x323a('0x13')](function(){return validateUser(_0x48829d['body']);})[_0x323a('0x13')](function(_0x32e328){return updateUser(_0x32e328)[_0x323a('0x13')](function(_0x36db83){if(_0x36db83[_0x323a('0x2f')]===_0x323a('0x79')){_0x36db83[_0x323a('0x7c')]=_0x48829d[_0x323a('0x76')]['settingsEnabled'];delete _0x36db83[_0x323a('0x7d')];}return _0x36db83;});})[_0x323a('0x13')](function(_0x100666){return db[_0x323a('0x34')][_0x323a('0x7e')](_0x100666,{'include':[{'model':db[_0x323a('0x68')],'as':_0x323a('0x68')}]});})['then'](function(_0x152145){if(_0x48829d['body'][_0x323a('0x2f')]===_0x323a('0x76'))return _0x152145;if(_0x48829d[_0x323a('0x76')][_0x323a('0x2f')]!==_0x323a('0x76'))return _0x152145;return db[_0x323a('0x7f')][_0x323a('0x30')]({'where':{'name':_0x152145['role']===_0x323a('0x29')?_0x323a('0x28'):_0x323a('0x2a'),'userProfileId':_0x48829d['user'][_0x323a('0x7d')]},'raw':!![]})[_0x323a('0x13')](function(_0x2de6a4){if(!_0x2de6a4||_0x2de6a4[_0x323a('0x80')]!=0x0)return _0x152145;return db['UserProfileResource']['create']({'name':_0x152145[_0x323a('0x31')],'resourceId':_0x152145['id'],'type':_0x2de6a4[_0x323a('0x31')],'sectionId':_0x2de6a4['id']},{})[_0x323a('0x13')](function(){return _0x152145;});})[_0x323a('0x1a')](function(_0x419d99){logger[_0x323a('0x17')](_0x323a('0x81'),_0x419d99);throw _0x419d99;});})['then'](respondWithResult(_0x30016f,0xc9))[_0x323a('0x1a')](handleError(_0x30016f,null));};exports[_0x323a('0x82')]=function(_0x140b83,_0x5bf590){var _0x16f8e4=_0x140b83[_0x323a('0x57')];var _0x42a0ea=[];if(_0x140b83[_0x323a('0x76')][_0x323a('0x2f')]===_0x323a('0x29'))throw new Error(_0x323a('0x77'));if(_[_0x323a('0x83')](_0x16f8e4,[_0x323a('0x2f'),_0x323a('0x76')])&&_0x140b83[_0x323a('0x76')][_0x323a('0x2f')]!==_0x323a('0x79')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_['some'](_0x16f8e4,[_0x323a('0x2f'),'admin'])&&_0x140b83[_0x323a('0x76')]['role']!==_0x323a('0x79')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator');}return licenseUtil[_0x323a('0x7b')](_0x16f8e4)['then'](function(){return validateUser(_0x16f8e4[0x0]);})[_0x323a('0x13')](function(){for(var _0x15e73b=0x1;_0x15e73b<_0x16f8e4[_0x323a('0x4e')];_0x15e73b++){var _0x21a209=_0x16f8e4[_0x15e73b-0x1][_0x323a('0x5d')];if(!_0x16f8e4[_0x15e73b]['internal'])_0x16f8e4[_0x15e73b][_0x323a('0x5d')]=_0x21a209+0x1;_0x42a0ea[_0x323a('0x3e')](validateUser(_0x16f8e4[_0x15e73b]));}return BPromise['all'](_0x42a0ea);})[_0x323a('0x13')](function(){_0x42a0ea=[];for(var _0x370b88=0x0;_0x370b88<_0x16f8e4[_0x323a('0x4e')];_0x370b88++){_0x42a0ea[_0x323a('0x3e')](updateUser(_0x16f8e4[_0x370b88]));}return BPromise[_0x323a('0x45')](_0x42a0ea);})[_0x323a('0x13')](function(){return BPromise[_0x323a('0x84')](_0x16f8e4,function(_0x5e3986){return db[_0x323a('0x34')][_0x323a('0x7e')](_0x5e3986,{'include':[{'model':db[_0x323a('0x68')],'as':_0x323a('0x68')}]})[_0x323a('0x13')](function(_0x23ea9b){_0x5e3986['id']=_0x23ea9b['id'];return _0x5e3986;});});})[_0x323a('0x13')](function(_0x5cf140){if(_0x140b83[_0x323a('0x57')]['role']===_0x323a('0x76'))return _0x5cf140;if(_0x140b83[_0x323a('0x76')]['role']!==_0x323a('0x76'))return _0x5cf140;var _0x4f359b=_['some'](_0x5cf140,function(_0x220409){return _0x220409['role']===_0x323a('0x29')||_0x220409[_0x323a('0x2f')]===_0x323a('0x2b');});if(!_0x4f359b)return _0x5cf140;return db[_0x323a('0x7f')][_0x323a('0x3f')]({'where':{'name':{'$or':[_0x323a('0x28'),_0x323a('0x2a')]},'userProfileId':_0x140b83[_0x323a('0x76')]['userProfileId']},'raw':!![]})['then'](function(_0x18860c){if(_[_0x323a('0x85')](_0x18860c)||!_[_0x323a('0x83')](_0x18860c,[_0x323a('0x80'),0x0]))return _0x5cf140;_0x42a0ea=[];var _0xf5ee47=_(_0x18860c)['map'](function(_0x440f4a){if(_0x440f4a[_0x323a('0x80')]===0x1)return;return _0x440f4a[_0x323a('0x31')]===_0x323a('0x28')?'agent':_0x323a('0x2b');})[_0x323a('0x86')]()['value']();for(var _0x1c4afd=0x0;_0x1c4afd<_0x5cf140['length'];_0x1c4afd++){if(!_[_0x323a('0x2e')](_0xf5ee47,_0x5cf140[_0x1c4afd][_0x323a('0x2f')]))return;var _0x923da6=_0x5cf140[_0x1c4afd][_0x323a('0x2f')]==='agent'?_0x323a('0x28'):_0x323a('0x2a');_0x42a0ea[_0x323a('0x3e')](db['UserProfileResource']['create']({'name':_0x5cf140[_0x1c4afd][_0x323a('0x31')],'resourceId':_0x5cf140[_0x1c4afd]['id'],'type':_0x923da6,'sectionId':_[_0x323a('0x30')](_0x18860c,[_0x323a('0x31'),_0x923da6])['id']},{}));}return BPromise['all'](_0x42a0ea);});})[_0x323a('0x13')](respondWithResult(_0x5bf590,0xc9))[_0x323a('0x1a')](handleError(_0x5bf590,null));};exports[_0x323a('0x87')]=function(_0x320d93,_0x1dbf16){if(_0x320d93[_0x323a('0x57')]['id']){delete _0x320d93[_0x323a('0x57')]['id'];}return db[_0x323a('0x34')][_0x323a('0x30')]({'where':{'id':_0x320d93['params']['id']}})[_0x323a('0x13')](function(_0x5db071){if(!_0x5db071)return null;if(_0x5db071['id']===_0x320d93['user']['id']){if(!_0x320d93['body']['oldPassword']||!_0x320d93[_0x323a('0x57')][_0x323a('0x88')]){throw new db[(_0x323a('0x89'))][(_0x323a('0x8a'))](_0x323a('0x8b'));}if(!_0x5db071['authenticate'](_0x320d93[_0x323a('0x57')][_0x323a('0x8c')])){throw new db[(_0x323a('0x89'))][(_0x323a('0x8a'))](_0x323a('0x8d'));}if(_0x320d93[_0x323a('0x57')][_0x323a('0x8c')]===_0x320d93[_0x323a('0x57')]['newPassword']){throw new db[(_0x323a('0x89'))]['ValidationError'](_0x323a('0x8e'));}}else if(_0x320d93[_0x323a('0x76')][_0x323a('0x2f')]===_0x323a('0x79')){if(!_0x320d93[_0x323a('0x57')][_0x323a('0x88')]){throw new db[(_0x323a('0x89'))][(_0x323a('0x8a'))]('Invalid\x20body\x20format.\x20Use\x20newPassword');}}else if(_0x320d93[_0x323a('0x76')]['role']===_0x323a('0x76')){if(!_0x320d93[_0x323a('0x57')][_0x323a('0x88')]){throw new db['Sequelize'][(_0x323a('0x8a'))]('Invalid\x20body\x20format.\x20Use\x20newPassword');}if(_0x5db071[_0x323a('0x2f')]!==_0x323a('0x29')){throw new db[(_0x323a('0x89'))][(_0x323a('0x8a'))](_0x323a('0x77'));}}else{throw new db[(_0x323a('0x89'))]['ValidationError'](_0x323a('0x77'));}return _0x5db071;})[_0x323a('0x13')](handleEntityNotFound(_0x1dbf16,null))[_0x323a('0x13')](function(_0x813f24){return db[_0x323a('0x5e')][_0x323a('0x8f')]({'attributes':['id','securePassword',_0x323a('0x90'),_0x323a('0x91')]})['then'](function(_0x101882){if(_0x101882['securePassword'])authService[_0x323a('0x92')](_0x320d93[_0x323a('0x57')]['newPassword']);if(!_0x101882[_0x323a('0x90')]||!_0x813f24[_0x323a('0x93')])return _0x813f24;authService[_0x323a('0x94')](_0x320d93[_0x323a('0x57')][_0x323a('0x88')],_0x813f24[_0x323a('0x93')],_0x101882['passwordHistoryLimit']);return _0x813f24;})['then'](saveUpdates({'password':_0x320d93[_0x323a('0x57')][_0x323a('0x88')],'passwordResetAt':_0x320d93[_0x323a('0x76')]['id']==_0x320d93['params']['id']?moment():null,'previousPasswords':authService[_0x323a('0x95')](_0x320d93[_0x323a('0x57')]['newPassword'],_0x813f24['previousPasswords'])},null));})['then'](respondWithResult(_0x1dbf16,null))['catch'](handleError(_0x1dbf16,null));};exports[_0x323a('0x96')]=function(_0x1ab262,_0x1c36c7){var _0x1478ec=_0x1ab262[_0x323a('0x57')][_0x323a('0x97')];return db[_0x323a('0x34')][_0x323a('0x30')]({'where':{'id':_0x1ab262[_0x323a('0x58')]['id']},'attributes':['id','name','role',_0x323a('0x98'),'loginInPause',_0x323a('0x99'),_0x323a('0x9a')]})['then'](handleEntityNotFound(_0x1c36c7,null))[_0x323a('0x13')](function(_0x5027c6){if(_0x5027c6){if(!utils[_0x323a('0x9b')](_0x1478ec)){throw new db[(_0x323a('0x89'))]['ValidationError']('Unknown\x20channel');}return _0x5027c6['add'+_[_0x323a('0x9c')](_0x1478ec[_0x323a('0x9d')]())+_0x323a('0x9e')](_0x1ab262['body']['ids'],{'penalty':_0x1ab262[_0x323a('0x57')][_0x323a('0x9f')]||0x0})['spread'](function(_0x12ca9e){for(var _0x255119=0x0;_0x255119<_0x1ab262[_0x323a('0x57')][_0x323a('0x5b')][_0x323a('0x4e')];_0x255119+=0x1){var _0x28593e={'UserId':Number(_0x1ab262[_0x323a('0x58')]['id'])};_0x28593e[_['capitalize'](_0x1478ec[_0x323a('0x9d')]())+_0x323a('0xa0')]=Number(_0x1ab262[_0x323a('0x57')][_0x323a('0x5b')][_0x255119]);socket['emit'](_0x323a('0x76')+_['capitalize'](_0x1478ec['toLowerCase']())+'Queue:save',_0x28593e);}return _0x12ca9e;})[_0x323a('0x13')](function(){if(_0x1478ec===_0x323a('0xa1')){return db['VoiceQueue'][_0x323a('0x3f')]({'where':{'id':_0x1ab262[_0x323a('0x57')][_0x323a('0x5b')]||[]},'raw':!![],'attributes':['id',_0x323a('0x31')]});}})['then'](function(_0x593e5a){var _0x46d6fb=_0x5027c6[_0x323a('0x26')]({'plain':!![]});var _0x212d74=[];if(_0x1478ec===_0x323a('0xa1')&&_0x46d6fb['role']===_0x323a('0x29')&&_0x46d6fb['online']){for(var _0x4d986e=0x0;_0x4d986e<_0x593e5a[_0x323a('0x4e')];_0x4d986e+=0x1){_0x212d74[_0x323a('0x3e')]({'membername':_0x46d6fb[_0x323a('0x31')],'UserId':_0x46d6fb['id'],'queue_name':_0x593e5a[_0x4d986e][_0x323a('0x31')],'VoiceQueueId':_0x593e5a[_0x4d986e]['id'],'interface':_[_0x323a('0x61')](_0x46d6fb[_0x323a('0x9a')])?util[_0x323a('0xa2')](_0x323a('0xa3'),_0x46d6fb[_0x323a('0x31')]):_0x46d6fb[_0x323a('0x9a')],'paused':_0x46d6fb[_0x323a('0x99')]||![],'penalty':_0x1ab262[_0x323a('0x57')][_0x323a('0x9f')]||0x0});}return BPromise[_0x323a('0x84')](_0x212d74,function(_0x213bd0){return db[_0x323a('0xa4')]['upsert'](_0x213bd0);});}return _0x5027c6;});}})[_0x323a('0x13')](respondWithStatusCode(_0x1c36c7,null))['catch'](handleError(_0x1c36c7,null));};exports['removeQueues']=function(_0x28ef67,_0x1c7265){var _0xff5b86;return db[_0x323a('0x34')]['find']({'where':{'id':_0x28ef67[_0x323a('0x58')]['id']},'attributes':['id',_0x323a('0x31'),_0x323a('0x2f')]})[_0x323a('0x13')](handleEntityNotFound(_0x1c7265,null))[_0x323a('0x13')](function(_0xa3ed57){if(_0xa3ed57){_0xff5b86=_0xa3ed57;if(!_0x28ef67['query'][_0x323a('0x97')]||!utils[_0x323a('0x9b')](_0x28ef67[_0x323a('0x3b')][_0x323a('0x97')])){throw new db['Sequelize']['ValidationError'](_0x323a('0xa5'));}return _0xa3ed57['remove'+_['capitalize'](_0x28ef67[_0x323a('0x3b')][_0x323a('0x97')][_0x323a('0x9d')]())+_0x323a('0x9e')](_0x28ef67[_0x323a('0x3b')][_0x323a('0x5b')]);}})[_0x323a('0x13')](function(_0x59089c){if(_[_0x323a('0xa6')](_0x28ef67[_0x323a('0x3b')][_0x323a('0x5b')])){for(var _0x2be4bc=0x0;_0x2be4bc<_0x28ef67[_0x323a('0x3b')][_0x323a('0x5b')][_0x323a('0x4e')];_0x2be4bc+=0x1){var _0xba9634={'UserId':Number(_0x28ef67[_0x323a('0x58')]['id'])};_0xba9634[_[_0x323a('0x9c')](_0x28ef67[_0x323a('0x3b')][_0x323a('0x97')][_0x323a('0x9d')]())+_0x323a('0xa0')]=Number(_0x28ef67['query']['ids'][_0x2be4bc]);socket[_0x323a('0xa7')](_0x323a('0x76')+_[_0x323a('0x9c')](_0x28ef67[_0x323a('0x3b')][_0x323a('0x97')][_0x323a('0x9d')]())+_0x323a('0xa8'),_0xba9634);}}else{var _0xba9634={'UserId':Number(_0x28ef67['params']['id'])};_0xba9634[_[_0x323a('0x9c')](_0x28ef67[_0x323a('0x3b')][_0x323a('0x97')]['toLowerCase']())+_0x323a('0xa0')]=Number(_0x28ef67[_0x323a('0x3b')]['ids']);socket[_0x323a('0xa7')](_0x323a('0x76')+_[_0x323a('0x9c')](_0x28ef67['query'][_0x323a('0x97')]['toLowerCase']())+_0x323a('0xa8'),_0xba9634);}return _0x59089c;})[_0x323a('0x13')](function(){if(_0x28ef67[_0x323a('0x3b')][_0x323a('0x97')]===_0x323a('0xa1')){return db[_0x323a('0xa4')][_0x323a('0x25')]({'where':{'UserId':_0x28ef67[_0x323a('0x58')]['id'],'VoiceQueueId':_0x28ef67['query'][_0x323a('0x5b')]},'individualHooks':!![]})[_0x323a('0x13')](function(){return _0xff5b86;});}return _0xff5b86;})[_0x323a('0x13')](respondWithStatusCode(_0x1c7265,null))[_0x323a('0x1a')](handleError(_0x1c7265,null));};exports[_0x323a('0xa9')]=function(_0x50ec3c,_0x25769b){_0x50ec3c['body']['userpic']=_0x50ec3c[_0x323a('0xaa')]['filename'];return db[_0x323a('0x34')][_0x323a('0x30')]({'where':{'id':_0x50ec3c[_0x323a('0x58')]['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x25769b,null))['then'](saveUpdates(_0x50ec3c[_0x323a('0x57')],null))[_0x323a('0x13')](respondWithResult(_0x25769b,null))[_0x323a('0x1a')](handleError(_0x25769b,null));};exports[_0x323a('0xab')]=function(_0x2eb15a,_0x253ef0){var _0x1fd982=path[_0x323a('0xac')](config[_0x323a('0xad')],_0x323a('0xae'));return db['User']['find']({'where':{'id':_0x2eb15a[_0x323a('0x58')]['id']},'attributes':['id',_0x323a('0xaf')],'raw':!![]})[_0x323a('0x13')](handleEntityNotFound(_0x253ef0,null))[_0x323a('0x13')](function(_0x100bd7){if(_0x100bd7){if(_[_0x323a('0x61')](_0x100bd7['userpic'])){return _0x253ef0['download'](_0x1fd982);}else{if(!fs['existsSync'](path[_0x323a('0xac')](config[_0x323a('0xad')],_0x323a('0xb0'),_0x100bd7['userpic']))){return _0x253ef0[_0x323a('0xb1')](_0x1fd982);}return _0x253ef0[_0x323a('0xb1')](path['join'](config[_0x323a('0xad')],'server/files/images/',_0x100bd7[_0x323a('0xaf')]));}}})[_0x323a('0x1a')](handleError(_0x253ef0,null));};exports[_0x323a('0xb2')]=function(_0x4edec2,_0x1732f4){return db[_0x323a('0x34')]['find']({'where':{'id':_0x4edec2['params']['id']},'attributes':['id']})['then'](handleEntityNotFound(_0x1732f4,null))[_0x323a('0x13')](function(_0x2c5e8d){var _0x95a0ed=[];values=_0x2c5e8d[_0x323a('0x43')];_0x95a0ed[_0x323a('0x3e')](get_open_tabs(_0x323a('0x42'),_0x2c5e8d['dataValues']));_0x95a0ed['push'](get_open_tabs(_0x323a('0x53'),_0x2c5e8d['dataValues']));_0x95a0ed[_0x323a('0x3e')](get_open_tabs(_0x323a('0x54'),_0x2c5e8d[_0x323a('0x43')]));_0x95a0ed[_0x323a('0x3e')](get_open_tabs(_0x323a('0x44'),_0x2c5e8d[_0x323a('0x43')]));_0x95a0ed[_0x323a('0x3e')](get_open_tabs(_0x323a('0x55'),_0x2c5e8d[_0x323a('0x43')]));_0x95a0ed[_0x323a('0x3e')](get_open_tabs('mail',_0x2c5e8d[_0x323a('0x43')]));return BPromise[_0x323a('0x45')](_0x95a0ed);})['then'](function(_0x42288a){var _0x26dc27=[];if(_0x42288a){for(var _0x71afa8=0x0;_0x71afa8<values[_0x323a('0xb3')][_0x323a('0x4e')];_0x71afa8++){var _0x47b9d0=values[_0x323a('0xb3')][_0x71afa8];_0x26dc27[_0x323a('0x3e')]({'channel':_0x323a('0xb4'),'id':_0x47b9d0['id'],'createdAt':_0x47b9d0[_0x323a('0xb5')]});}for(var _0x71afa8=0x0;_0x71afa8<values[_0x323a('0xb6')][_0x323a('0x4e')];_0x71afa8++){var _0x47b9d0=values[_0x323a('0xb6')][_0x71afa8];_0x26dc27[_0x323a('0x3e')]({'channel':'FAX','id':_0x47b9d0['id'],'createdAt':_0x47b9d0[_0x323a('0xb5')]});}for(var _0x71afa8=0x0;_0x71afa8<values['OpenchannelOpenTabs'][_0x323a('0x4e')];_0x71afa8++){var _0x47b9d0=values['OpenchannelOpenTabs'][_0x71afa8];_0x26dc27[_0x323a('0x3e')]({'channel':'OPENCHANNEL','id':_0x47b9d0['id'],'createdAt':_0x47b9d0['createdAt']});}for(var _0x71afa8=0x0;_0x71afa8<values['MailOpenTabs']['length'];_0x71afa8++){var _0x47b9d0=values['MailOpenTabs'][_0x71afa8];_0x26dc27[_0x323a('0x3e')]({'channel':_0x323a('0xb7'),'id':_0x47b9d0['id'],'createdAt':_0x47b9d0[_0x323a('0xb5')]});}for(var _0x71afa8=0x0;_0x71afa8<values['SmsOpenTabs'][_0x323a('0x4e')];_0x71afa8++){var _0x47b9d0=values[_0x323a('0xb8')][_0x71afa8];_0x26dc27[_0x323a('0x3e')]({'channel':_0x323a('0xb9'),'id':_0x47b9d0['id'],'createdAt':_0x47b9d0['createdAt']});}for(var _0x71afa8=0x0;_0x71afa8<values[_0x323a('0xba')]['length'];_0x71afa8++){var _0x47b9d0=values[_0x323a('0xba')][_0x71afa8];_0x26dc27[_0x323a('0x3e')]({'channel':_0x323a('0xbb'),'id':_0x47b9d0['id'],'createdAt':_0x47b9d0[_0x323a('0xb5')]});}var _0x37f7f1={'count':_0x26dc27['length'],'rows':_0x26dc27};return _0x37f7f1;}else return null;})['then'](respondWithResult(_0x1732f4,null))[_0x323a('0x1a')](handleError(_0x1732f4,null));};exports[_0x323a('0xbc')]=function(_0xbee564,_0x1bfdc1){var _0x4420ee={};var _0x384b79={};var _0x4e1e9b;var _0x1463e9;return db[_0x323a('0x34')]['findOne']({'where':{'id':_0xbee564[_0x323a('0x58')]['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x1bfdc1,null))[_0x323a('0x13')](function(_0xe67d0c){if(_0xe67d0c){_0x4e1e9b=_0xe67d0c;_0x384b79['model']=_['keys'](db[_0x323a('0xbd')][_0x323a('0x49')]);_0x384b79[_0x323a('0x3b')]=_['keys'](_0xbee564['query']);_0x384b79['filters']=_[_0x323a('0x4b')](_0x384b79[_0x323a('0x4c')],_0x384b79['query']);_0x4420ee[_0x323a('0x3d')]=_['intersection'](_0x384b79[_0x323a('0x4c')],qs['fields'](_0xbee564['query']['fields']));_0x4420ee[_0x323a('0x3d')]=_0x4420ee[_0x323a('0x3d')][_0x323a('0x4e')]?_0x4420ee[_0x323a('0x3d')]:_0x384b79[_0x323a('0x4c')];_0x4420ee[_0x323a('0xbe')]=qs[_0x323a('0xbf')](_0xbee564['query'][_0x323a('0xbf')]);_0x4420ee['where']=qs['filters'](_[_0x323a('0xc0')](_0xbee564[_0x323a('0x3b')],_0x384b79[_0x323a('0x4a')]));if(_0xbee564[_0x323a('0x3b')][_0x323a('0x37')]){_0x4420ee[_0x323a('0x3a')]=_[_0x323a('0x50')](_0x4420ee[_0x323a('0x3a')],{'$or':_['map'](_0x4420ee[_0x323a('0x3d')],function(_0x3351fb){var _0x6bdbf0={};_0x6bdbf0[_0x3351fb]={'$like':'%'+_0xbee564[_0x323a('0x3b')][_0x323a('0x37')]+'%'};return _0x6bdbf0;})});}_0x4420ee=_[_0x323a('0x50')]({},_0x4420ee,_0xbee564['options']);return _0x4e1e9b['getContacts'](_0x4420ee);}})[_0x323a('0x13')](function(_0x1bf4f2){if(_0x1bf4f2){_0x1463e9=_0x1bf4f2[_0x323a('0x4e')];if(_0xbee564[_0x323a('0x3b')][_0x323a('0xc1')](_0x323a('0x4f'))){_0x4420ee[_0x323a('0x3c')]=[{'model':db[_0x323a('0xc2')],'as':'List','required':![]},{'model':db['Tag'],'as':_0x323a('0xc3'),'attributes':['id',_0x323a('0x31'),_0x323a('0xc4')],'where':_0xbee564['query'][_0x323a('0xc5')]?{'id':_0xbee564['query'][_0x323a('0xc5')]}:undefined,'required':_0xbee564[_0x323a('0x3b')]['tag']?!![]:![]}];}if(!_0xbee564[_0x323a('0x3b')][_0x323a('0xc1')]('nolimit')){_0x4420ee[_0x323a('0x22')]=qs[_0x323a('0x22')](_0xbee564['query']['limit']);_0x4420ee[_0x323a('0x21')]=qs[_0x323a('0x21')](_0xbee564[_0x323a('0x3b')]['offset']);}return _0x4e1e9b['getContacts'](_0x4420ee);}})[_0x323a('0x13')](function(_0x536a33){if(_0x536a33){return _0x536a33?{'count':_0x1463e9,'rows':_0x536a33}:null;}})[_0x323a('0x13')](respondWithResult(_0x1bfdc1,null))[_0x323a('0x1a')](handleError(_0x1bfdc1,null));};exports['getQueues']=function(_0xdef9ba,_0xac1023){var _0xe53d1a;var _0x337fc3;var _0x478f2a={};var _0x393a97;return db[_0x323a('0x34')][_0x323a('0x8f')]({'where':{'id':_0xdef9ba[_0x323a('0x58')]['id']},'attributes':['id',_0x323a('0x31'),_0x323a('0x2f')]})[_0x323a('0x13')](handleEntityNotFound(_0xac1023,null))[_0x323a('0x13')](function(_0x3ea36f){if(!utils['isValidChannel'](_0xdef9ba[_0x323a('0x3b')][_0x323a('0x97')])){throw new db[(_0x323a('0x89'))][(_0x323a('0x8a'))](_0x323a('0xa5'));}_0xe53d1a=_0x3ea36f;var _0x150e0e={};_0x150e0e['model']=_['keys'](db[_[_0x323a('0x9c')](_0xdef9ba[_0x323a('0x3b')][_0x323a('0x97')])+'Queue'][_0x323a('0x49')]);_0x150e0e[_0x323a('0x3b')]=_[_0x323a('0x48')](_0xdef9ba[_0x323a('0x3b')]);_0x150e0e[_0x323a('0x4a')]=_[_0x323a('0x4b')](_0x150e0e['model'],_0x150e0e['query']);_0x478f2a[_0x323a('0x3d')]=_[_0x323a('0x4b')](_0x150e0e['model'],qs[_0x323a('0x4d')](_0xdef9ba[_0x323a('0x3b')]['fields']));_0x478f2a['attributes']=_0x478f2a[_0x323a('0x3d')][_0x323a('0x4e')]?_0x478f2a[_0x323a('0x3d')]:_0x150e0e['model'];_0x478f2a[_0x323a('0xbe')]=qs['sort'](_0xdef9ba[_0x323a('0x3b')][_0x323a('0xbf')]);_0x478f2a['where']=qs[_0x323a('0x4a')](_[_0x323a('0xc0')](_0xdef9ba[_0x323a('0x3b')],_0x150e0e['filters']));if(_0xdef9ba[_0x323a('0x3b')][_0x323a('0x37')]){_0x478f2a['where']=_[_0x323a('0x50')](_0x478f2a['where'],{'$or':_[_0x323a('0xc6')](_0x478f2a[_0x323a('0x3d')],function(_0x3a9e4){var _0x541b35={};_0x541b35[_0x3a9e4]={'$like':'%'+_0xdef9ba['query']['filter']+'%'};return _0x541b35;})});}_0x478f2a=_[_0x323a('0x50')]({},_0x478f2a,_0xdef9ba[_0x323a('0x51')]);switch(_0xe53d1a[_0x323a('0x2f')]){case _0x323a('0x79'):return db[_['capitalize'](_0xdef9ba[_0x323a('0x3b')]['channel'])+_0x323a('0xc7')][_0x323a('0x3f')](_0x478f2a);case _0x323a('0x76'):case'agent':return _0xe53d1a[_0x323a('0x26')+_['capitalize'](_0xdef9ba[_0x323a('0x3b')]['channel'])+_0x323a('0x9e')](_0x478f2a);default:throw new db[(_0x323a('0x89'))][(_0x323a('0x8a'))](_0x323a('0xc8'));}})['then'](function(_0x5c5d24){_0x393a97=_0x5c5d24[_0x323a('0x4e')];if(!_0xdef9ba['query']['hasOwnProperty'](_0x323a('0xc9'))){_0x478f2a[_0x323a('0x22')]=qs[_0x323a('0x22')](_0xdef9ba['query'][_0x323a('0x22')]);_0x478f2a[_0x323a('0x21')]=qs[_0x323a('0x21')](_0xdef9ba['query']['offset']);}switch(_0xe53d1a[_0x323a('0x2f')]){case _0x323a('0x79'):return db[_[_0x323a('0x9c')](_0xdef9ba[_0x323a('0x3b')][_0x323a('0x97')])+_0x323a('0xc7')][_0x323a('0x3f')](_0x478f2a);case _0x323a('0x76'):case _0x323a('0x29'):return _0xe53d1a[_0x323a('0x26')+_[_0x323a('0x9c')](_0xdef9ba['query']['channel'])+_0x323a('0x9e')](_0x478f2a);}})[_0x323a('0x13')](function(_0x47f5ea){return{'count':_0x393a97,'rows':_0x47f5ea};})['then'](respondWithResult(_0xac1023,null))[_0x323a('0x1a')](handleError(_0xac1023,null));};exports[_0x323a('0xca')]=function(_0x5952ef,_0x5dee50){var _0x1cd42a={};var _0x193ef0={};var _0x1c4b8b;var _0x4858b7;return db[_0x323a('0x34')][_0x323a('0x8f')]({'where':{'id':_0x5952ef[_0x323a('0x58')]['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x5dee50,null))[_0x323a('0x13')](function(_0x4680df){if(_0x4680df){_0x1c4b8b=_0x4680df;_0x193ef0['model']=_[_0x323a('0x48')](db[_0x323a('0xa4')][_0x323a('0x49')]);_0x193ef0[_0x323a('0x3b')]=_[_0x323a('0x48')](_0x5952ef['query']);_0x193ef0[_0x323a('0x4a')]=_[_0x323a('0x4b')](_0x193ef0[_0x323a('0x4c')],_0x193ef0[_0x323a('0x3b')]);_0x1cd42a[_0x323a('0x3d')]=_[_0x323a('0x4b')](_0x193ef0[_0x323a('0x4c')],qs[_0x323a('0x4d')](_0x5952ef['query'][_0x323a('0x4d')]));_0x1cd42a[_0x323a('0x3d')]=_0x1cd42a[_0x323a('0x3d')][_0x323a('0x4e')]?_0x1cd42a[_0x323a('0x3d')]:_0x193ef0[_0x323a('0x4c')];_0x1cd42a[_0x323a('0xbe')]=qs[_0x323a('0xbf')](_0x5952ef[_0x323a('0x3b')]['sort']);_0x1cd42a[_0x323a('0x3a')]=qs['filters'](_[_0x323a('0xc0')](_0x5952ef[_0x323a('0x3b')],_0x193ef0[_0x323a('0x4a')]));if(_0x5952ef['query'][_0x323a('0x37')]){_0x1cd42a['where']=_[_0x323a('0x50')](_0x1cd42a[_0x323a('0x3a')],{'$or':_[_0x323a('0xc6')](_0x1cd42a[_0x323a('0x3d')],function(_0xb4d64a){var _0x3dc911={};_0x3dc911[_0xb4d64a]={'$like':'%'+_0x5952ef['query']['filter']+'%'};return _0x3dc911;})});}_0x1cd42a=_[_0x323a('0x50')]({},_0x1cd42a,_0x5952ef[_0x323a('0x51')]);return _0x1c4b8b[_0x323a('0xca')](_0x1cd42a);}})[_0x323a('0x13')](function(_0x1ff831){if(_0x1ff831){_0x4858b7=_0x1ff831[_0x323a('0x4e')];if(!_0x5952ef[_0x323a('0x3b')]['hasOwnProperty'](_0x323a('0xc9'))){_0x1cd42a[_0x323a('0x22')]=qs['limit'](_0x5952ef[_0x323a('0x3b')][_0x323a('0x22')]);_0x1cd42a[_0x323a('0x21')]=qs[_0x323a('0x21')](_0x5952ef[_0x323a('0x3b')][_0x323a('0x21')]);}return _0x1c4b8b[_0x323a('0xca')](_0x1cd42a);}})['then'](function(_0x105edd){if(_0x105edd){return _0x105edd?{'count':_0x4858b7,'rows':_0x105edd}:null;}})[_0x323a('0x13')](respondWithResult(_0x5dee50,null))[_0x323a('0x1a')](handleError(_0x5dee50,null));};exports[_0x323a('0xcb')]=function(_0x3889af,_0x388489){var _0x5f1484={};var _0x5a13d8={};var _0x8126dd;var _0x4f16f0;return db[_0x323a('0x34')][_0x323a('0x8f')]({'where':{'id':_0x3889af[_0x323a('0x58')]['id']}})['then'](handleEntityNotFound(_0x388489,null))['then'](function(_0x325b10){if(_0x325b10){_0x8126dd=_0x325b10;_0x5a13d8[_0x323a('0x4c')]=_[_0x323a('0x48')](db[_0x323a('0xcc')]['rawAttributes']);_0x5a13d8[_0x323a('0x3b')]=_[_0x323a('0x48')](_0x3889af['query']);_0x5a13d8[_0x323a('0x4a')]=_[_0x323a('0x4b')](_0x5a13d8[_0x323a('0x4c')],_0x5a13d8['query']);_0x5f1484[_0x323a('0x3d')]=_[_0x323a('0x4b')](_0x5a13d8[_0x323a('0x4c')],qs[_0x323a('0x4d')](_0x3889af['query'][_0x323a('0x4d')]));_0x5f1484[_0x323a('0x3d')]=_0x5f1484[_0x323a('0x3d')]['length']?_0x5f1484[_0x323a('0x3d')]:_0x5a13d8[_0x323a('0x4c')];_0x5f1484['order']=qs[_0x323a('0xbf')](_0x3889af['query'][_0x323a('0xbf')]);_0x5f1484[_0x323a('0x3a')]=qs[_0x323a('0x4a')](_[_0x323a('0xc0')](_0x3889af[_0x323a('0x3b')],_0x5a13d8[_0x323a('0x4a')]));if(_0x3889af[_0x323a('0x3b')][_0x323a('0x37')]){_0x5f1484[_0x323a('0x3a')]=_['merge'](_0x5f1484[_0x323a('0x3a')],{'$or':_['map'](_0x5f1484['attributes'],function(_0x5685ee){var _0x467bb3={};_0x467bb3[_0x5685ee]={'$like':'%'+_0x3889af[_0x323a('0x3b')]['filter']+'%'};return _0x467bb3;})});}_0x5f1484=_[_0x323a('0x50')]({},_0x5f1484,_0x3889af[_0x323a('0x51')]);return _0x8126dd[_0x323a('0xcb')](_0x5f1484);}})[_0x323a('0x13')](function(_0x207a47){if(_0x207a47){_0x4f16f0=_0x207a47[_0x323a('0x4e')];if(!_0x3889af[_0x323a('0x3b')][_0x323a('0xc1')](_0x323a('0xc9'))){_0x5f1484[_0x323a('0x22')]=qs['limit'](_0x3889af[_0x323a('0x3b')]['limit']);_0x5f1484[_0x323a('0x21')]=qs[_0x323a('0x21')](_0x3889af['query'][_0x323a('0x21')]);}return _0x8126dd[_0x323a('0xcb')](_0x5f1484);}})[_0x323a('0x13')](function(_0x2f576e){if(_0x2f576e){return _0x2f576e?{'count':_0x4f16f0,'rows':_0x2f576e}:null;}})[_0x323a('0x13')](respondWithResult(_0x388489,null))[_0x323a('0x1a')](handleError(_0x388489,null));};exports[_0x323a('0xcd')]=function(_0x5cb49e,_0x477cf7){var _0x282094={'raw':!![],'where':{}};var _0x77a08e={};var _0x345fda={'count':0x0,'rows':[]};return db[_0x323a('0x34')][_0x323a('0x8f')]({'where':{'id':_0x5cb49e[_0x323a('0x58')]['id']}})['then'](handleEntityNotFound(_0x477cf7,null))['then'](function(_0xb477cd){if(_0xb477cd){_0x77a08e['model']=_[_0x323a('0x48')](db['VoiceRecording']['rawAttributes']);_0x77a08e[_0x323a('0x3b')]=_[_0x323a('0x48')](_0x5cb49e['query']);_0x77a08e[_0x323a('0x4a')]=_[_0x323a('0x4b')](_0x77a08e['model'],_0x77a08e['query']);_0x282094[_0x323a('0x3d')]=_['intersection'](_0x77a08e[_0x323a('0x4c')],qs[_0x323a('0x4d')](_0x5cb49e[_0x323a('0x3b')]['fields']));_0x282094[_0x323a('0x3d')]=_0x282094[_0x323a('0x3d')][_0x323a('0x4e')]?_0x282094[_0x323a('0x3d')]:_0x77a08e[_0x323a('0x4c')];if(!_0x5cb49e[_0x323a('0x3b')][_0x323a('0xc1')]('nolimit')){_0x282094['limit']=qs[_0x323a('0x22')](_0x5cb49e[_0x323a('0x3b')][_0x323a('0x22')]);_0x282094['offset']=qs[_0x323a('0x21')](_0x5cb49e[_0x323a('0x3b')]['offset']);}_0x282094[_0x323a('0xbe')]=qs[_0x323a('0xbf')](_0x5cb49e['query'][_0x323a('0xbf')]);_0x282094[_0x323a('0x3a')]=qs[_0x323a('0x4a')](_[_0x323a('0xc0')](_0x5cb49e[_0x323a('0x3b')],_0x77a08e['filters']));_0x282094['where'][_0x323a('0xce')]=_0xb477cd['id'];if(_0x5cb49e[_0x323a('0x3b')]['filter']){_0x282094[_0x323a('0x3a')]=_[_0x323a('0x50')](_0x282094[_0x323a('0x3a')],{'$or':_[_0x323a('0xc6')](_0x282094['attributes'],function(_0x4b2343){var _0x24047f={};_0x24047f[_0x4b2343]={'$like':'%'+_0x5cb49e[_0x323a('0x3b')][_0x323a('0x37')]+'%'};return _0x24047f;})});}_0x282094=_['merge']({},_0x282094,_0x5cb49e[_0x323a('0x51')]);return db['VoiceRecording']['count']({'where':_0x282094['where']})['then'](function(_0x5490b0){_0x345fda[_0x323a('0x20')]=_0x5490b0;if(_0x5cb49e[_0x323a('0x3b')][_0x323a('0x4f')]){_0x282094[_0x323a('0x3c')]=[{'all':!![]}];}return db['VoiceRecording']['findAll'](_0x282094);})[_0x323a('0x13')](function(_0x62c1cf){_0x345fda[_0x323a('0x40')]=_0x62c1cf;return _0x345fda;});}})[_0x323a('0x13')](respondWithFilteredResult(_0x477cf7,_0x282094))[_0x323a('0x1a')](handleError(_0x477cf7,null));};exports['getScreenRecordings']=function(_0x1910dd,_0x18727a){var _0x5319de={'raw':!![],'where':{}};var _0x75e6ad={};var _0x42aee1={'count':0x0,'rows':[]};return db[_0x323a('0x34')][_0x323a('0x8f')]({'where':{'id':_0x1910dd[_0x323a('0x58')]['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x18727a,null))[_0x323a('0x13')](function(_0x1aad56){if(_0x1aad56){_0x75e6ad['model']=_[_0x323a('0x48')](db[_0x323a('0xcf')][_0x323a('0x49')]);_0x75e6ad['query']=_[_0x323a('0x48')](_0x1910dd['query']);_0x75e6ad[_0x323a('0x4a')]=_[_0x323a('0x4b')](_0x75e6ad[_0x323a('0x4c')],_0x75e6ad[_0x323a('0x3b')]);_0x5319de['attributes']=_[_0x323a('0x4b')](_0x75e6ad[_0x323a('0x4c')],qs['fields'](_0x1910dd[_0x323a('0x3b')]['fields']));_0x5319de[_0x323a('0x3d')]=_0x5319de[_0x323a('0x3d')][_0x323a('0x4e')]?_0x5319de[_0x323a('0x3d')]:_0x75e6ad[_0x323a('0x4c')];if(!_0x1910dd[_0x323a('0x3b')][_0x323a('0xc1')](_0x323a('0xc9'))){_0x5319de['limit']=qs[_0x323a('0x22')](_0x1910dd[_0x323a('0x3b')][_0x323a('0x22')]);_0x5319de[_0x323a('0x21')]=qs['offset'](_0x1910dd[_0x323a('0x3b')][_0x323a('0x21')]);}_0x5319de[_0x323a('0xbe')]=qs[_0x323a('0xbf')](_0x1910dd[_0x323a('0x3b')]['sort']);_0x5319de[_0x323a('0x3a')]=qs['filters'](_[_0x323a('0xc0')](_0x1910dd[_0x323a('0x3b')],_0x75e6ad[_0x323a('0x4a')]));_0x5319de[_0x323a('0x3a')][_0x323a('0xce')]=_0x1aad56['id'];if(_0x1910dd[_0x323a('0x3b')][_0x323a('0x37')]){_0x5319de[_0x323a('0x3a')]=_['merge'](_0x5319de[_0x323a('0x3a')],{'$or':_['map'](_0x5319de[_0x323a('0x3d')],function(_0x20243f){var _0x174a1e={};_0x174a1e[_0x20243f]={'$like':'%'+_0x1910dd[_0x323a('0x3b')][_0x323a('0x37')]+'%'};return _0x174a1e;})});}_0x5319de=_['merge']({},_0x5319de,_0x1910dd['options']);return db[_0x323a('0xcf')][_0x323a('0x20')]({'where':_0x5319de[_0x323a('0x3a')]})[_0x323a('0x13')](function(_0x5b16c8){_0x42aee1[_0x323a('0x20')]=_0x5b16c8;if(_0x1910dd['query']['includeAll']){_0x5319de[_0x323a('0x3c')]=[{'all':!![]}];}return db[_0x323a('0xcf')][_0x323a('0x3f')](_0x5319de);})[_0x323a('0x13')](function(_0x565fdb){_0x42aee1[_0x323a('0x40')]=_0x565fdb;return _0x42aee1;});}})['then'](respondWithFilteredResult(_0x18727a,_0x5319de))[_0x323a('0x1a')](handleError(_0x18727a,null));};exports['getChatInteractions']=function(_0x2300ea,_0x6e709d){var _0x2da991={};var _0x4c7f80={};var _0x10d872;var _0x595e8c;return db[_0x323a('0x34')][_0x323a('0x8f')]({'where':{'id':_0x2300ea['params']['id']}})['then'](handleEntityNotFound(_0x6e709d,null))[_0x323a('0x13')](function(_0x1f8885){if(_0x1f8885){_0x10d872=_0x1f8885;_0x4c7f80['model']=_[_0x323a('0x48')](db[_0x323a('0xd0')]['rawAttributes']);_0x4c7f80['query']=_[_0x323a('0x48')](_0x2300ea[_0x323a('0x3b')]);_0x4c7f80[_0x323a('0x4a')]=_[_0x323a('0x4b')](_0x4c7f80['model'],_0x4c7f80[_0x323a('0x3b')]);_0x2da991[_0x323a('0x3d')]=_[_0x323a('0x4b')](_0x4c7f80[_0x323a('0x4c')],qs[_0x323a('0x4d')](_0x2300ea[_0x323a('0x3b')][_0x323a('0x4d')]));_0x2da991[_0x323a('0x3d')]=_0x2da991[_0x323a('0x3d')][_0x323a('0x4e')]?_0x2da991[_0x323a('0x3d')]:_0x4c7f80[_0x323a('0x4c')];_0x2da991['order']=qs[_0x323a('0xbf')](_0x2300ea[_0x323a('0x3b')][_0x323a('0xbf')]);_0x2da991[_0x323a('0x3a')]=qs[_0x323a('0x4a')](_[_0x323a('0xc0')](_0x2300ea[_0x323a('0x3b')],_0x4c7f80[_0x323a('0x4a')]));if(_0x2300ea[_0x323a('0x3b')][_0x323a('0x37')]){_0x2da991[_0x323a('0x3a')]=_[_0x323a('0x50')](_0x2da991[_0x323a('0x3a')],{'$or':_['map'](_0x2da991[_0x323a('0x3d')],function(_0x59bd35){var _0x124ff8={};_0x124ff8[_0x59bd35]={'$like':'%'+_0x2300ea[_0x323a('0x3b')][_0x323a('0x37')]+'%'};return _0x124ff8;})});}_0x2da991=_[_0x323a('0x50')]({},_0x2da991,_0x2300ea['options']);return _0x10d872['getChatInteractions'](_0x2da991);}})[_0x323a('0x13')](function(_0x207855){if(_0x207855){_0x595e8c=_0x207855[_0x323a('0x4e')];if(!_0x2300ea[_0x323a('0x3b')]['hasOwnProperty'](_0x323a('0xc9'))){_0x2da991[_0x323a('0x22')]=qs['limit'](_0x2300ea[_0x323a('0x3b')]['limit']);_0x2da991['offset']=qs[_0x323a('0x21')](_0x2300ea['query'][_0x323a('0x21')]);}return _0x10d872[_0x323a('0xd1')](_0x2da991);}})[_0x323a('0x13')](function(_0x34da3a){if(_0x34da3a){return _0x34da3a?{'count':_0x595e8c,'rows':_0x34da3a}:null;}})[_0x323a('0x13')](respondWithResult(_0x6e709d,null))['catch'](handleError(_0x6e709d,null));};exports[_0x323a('0xd2')]=function(_0x1685fb,_0x1633aa){var _0x458c8e={};var _0x3d7d6b={};var _0x2a4fac;var _0x8d1fc2;return db[_0x323a('0x34')][_0x323a('0x8f')]({'where':{'id':_0x1685fb[_0x323a('0x58')]['id']}})['then'](handleEntityNotFound(_0x1633aa,null))[_0x323a('0x13')](function(_0x2e4cab){if(_0x2e4cab){_0x2a4fac=_0x2e4cab;_0x3d7d6b[_0x323a('0x4c')]=_[_0x323a('0x48')](db[_0x323a('0xd3')][_0x323a('0x49')]);_0x3d7d6b[_0x323a('0x3b')]=_[_0x323a('0x48')](_0x1685fb[_0x323a('0x3b')]);_0x3d7d6b[_0x323a('0x4a')]=_[_0x323a('0x4b')](_0x3d7d6b[_0x323a('0x4c')],_0x3d7d6b[_0x323a('0x3b')]);_0x458c8e[_0x323a('0x3d')]=_['intersection'](_0x3d7d6b[_0x323a('0x4c')],qs[_0x323a('0x4d')](_0x1685fb[_0x323a('0x3b')][_0x323a('0x4d')]));_0x458c8e[_0x323a('0x3d')]=_0x458c8e[_0x323a('0x3d')][_0x323a('0x4e')]?_0x458c8e[_0x323a('0x3d')]:_0x3d7d6b[_0x323a('0x4c')];_0x458c8e['order']=qs[_0x323a('0xbf')](_0x1685fb['query'][_0x323a('0xbf')]);_0x458c8e[_0x323a('0x3a')]=qs[_0x323a('0x4a')](_[_0x323a('0xc0')](_0x1685fb[_0x323a('0x3b')],_0x3d7d6b[_0x323a('0x4a')]));if(_0x1685fb[_0x323a('0x3b')][_0x323a('0x37')]){_0x458c8e[_0x323a('0x3a')]=_[_0x323a('0x50')](_0x458c8e['where'],{'$or':_['map'](_0x458c8e['attributes'],function(_0x16795b){var _0x1abc5b={};_0x1abc5b[_0x16795b]={'$like':'%'+_0x1685fb['query'][_0x323a('0x37')]+'%'};return _0x1abc5b;})});}_0x458c8e=_[_0x323a('0x50')]({},_0x458c8e,_0x1685fb[_0x323a('0x51')]);return _0x2a4fac[_0x323a('0xd2')](_0x458c8e);}})[_0x323a('0x13')](function(_0x39a5a6){if(_0x39a5a6){_0x8d1fc2=_0x39a5a6[_0x323a('0x4e')];if(!_0x1685fb[_0x323a('0x3b')][_0x323a('0xc1')]('nolimit')){_0x458c8e[_0x323a('0x22')]=qs['limit'](_0x1685fb[_0x323a('0x3b')][_0x323a('0x22')]);_0x458c8e['offset']=qs[_0x323a('0x21')](_0x1685fb['query'][_0x323a('0x21')]);}return _0x2a4fac[_0x323a('0xd2')](_0x458c8e);}})[_0x323a('0x13')](function(_0x369f34){if(_0x369f34){return _0x369f34?{'count':_0x8d1fc2,'rows':_0x369f34}:null;}})[_0x323a('0x13')](respondWithResult(_0x1633aa,null))[_0x323a('0x1a')](handleError(_0x1633aa,null));};exports['getMailInteractions']=function(_0x402645,_0x2d9cf2){var _0xa202aa={'raw':!![],'where':{}};var _0x938dc6={};var _0x414ca1={'count':0x0,'rows':[]};return db[_0x323a('0x34')]['findOne']({'where':{'id':_0x402645[_0x323a('0x58')]['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x2d9cf2,null))[_0x323a('0x13')](function(_0x36e632){if(_0x36e632){_0x938dc6['model']=_['keys'](db['MailInteraction']['rawAttributes']);_0x938dc6[_0x323a('0x3b')]=_[_0x323a('0x48')](_0x402645['query']);_0x938dc6[_0x323a('0x4a')]=_[_0x323a('0x4b')](_0x938dc6[_0x323a('0x4c')],_0x938dc6['query']);_0xa202aa['attributes']=_[_0x323a('0x4b')](_0x938dc6[_0x323a('0x4c')],qs['fields'](_0x402645[_0x323a('0x3b')]['fields']));_0xa202aa[_0x323a('0x3d')]=_0xa202aa['attributes'][_0x323a('0x4e')]?_0xa202aa[_0x323a('0x3d')]:_0x938dc6[_0x323a('0x4c')];if(!_0x402645[_0x323a('0x3b')]['hasOwnProperty'](_0x323a('0xc9'))){_0xa202aa[_0x323a('0x22')]=qs[_0x323a('0x22')](_0x402645[_0x323a('0x3b')][_0x323a('0x22')]);_0xa202aa[_0x323a('0x21')]=qs[_0x323a('0x21')](_0x402645[_0x323a('0x3b')][_0x323a('0x21')]);}_0xa202aa[_0x323a('0xbe')]=qs['sort'](_0x402645[_0x323a('0x3b')][_0x323a('0xbf')]);_0xa202aa[_0x323a('0x3a')]=qs[_0x323a('0x4a')](_[_0x323a('0xc0')](_0x402645[_0x323a('0x3b')],_0x938dc6[_0x323a('0x4a')]));_0xa202aa[_0x323a('0x3a')][_0x323a('0xce')]=_0x36e632['id'];if(_0x402645[_0x323a('0x3b')]['filter']){_0xa202aa['where']=_[_0x323a('0x50')](_0xa202aa['where'],{'$or':_['map'](_0xa202aa[_0x323a('0x3d')],function(_0xd8dd87){var _0x15bc17={};_0x15bc17[_0xd8dd87]={'$like':'%'+_0x402645[_0x323a('0x3b')][_0x323a('0x37')]+'%'};return _0x15bc17;})});}_0xa202aa=_[_0x323a('0x50')]({},_0xa202aa,_0x402645[_0x323a('0x51')]);return db[_0x323a('0xd4')][_0x323a('0x20')]({'where':_0xa202aa[_0x323a('0x3a')]})['then'](function(_0x12d320){_0x414ca1[_0x323a('0x20')]=_0x12d320;if(_0x402645[_0x323a('0x3b')][_0x323a('0x4f')]){_0xa202aa['include']=[{'all':!![]}];}return db['MailInteraction'][_0x323a('0x3f')](_0xa202aa);})[_0x323a('0x13')](function(_0x407617){_0x414ca1[_0x323a('0x40')]=_0x407617;return _0x414ca1;});}})[_0x323a('0x13')](respondWithFilteredResult(_0x2d9cf2,_0xa202aa))[_0x323a('0x1a')](handleError(_0x2d9cf2,null));};exports['getSmsInteractions']=function(_0x1b7ca1,_0x310504){var _0x55413f={};var _0x339976={};var _0x22b6b3;var _0x26a303;return db[_0x323a('0x34')][_0x323a('0x8f')]({'where':{'id':_0x1b7ca1['params']['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x310504,null))[_0x323a('0x13')](function(_0x336664){if(_0x336664){_0x22b6b3=_0x336664;_0x339976[_0x323a('0x4c')]=_[_0x323a('0x48')](db[_0x323a('0xd5')]['rawAttributes']);_0x339976[_0x323a('0x3b')]=_['keys'](_0x1b7ca1['query']);_0x339976[_0x323a('0x4a')]=_[_0x323a('0x4b')](_0x339976[_0x323a('0x4c')],_0x339976[_0x323a('0x3b')]);_0x55413f[_0x323a('0x3d')]=_[_0x323a('0x4b')](_0x339976[_0x323a('0x4c')],qs[_0x323a('0x4d')](_0x1b7ca1[_0x323a('0x3b')][_0x323a('0x4d')]));_0x55413f['attributes']=_0x55413f[_0x323a('0x3d')]['length']?_0x55413f['attributes']:_0x339976[_0x323a('0x4c')];_0x55413f[_0x323a('0xbe')]=qs[_0x323a('0xbf')](_0x1b7ca1[_0x323a('0x3b')][_0x323a('0xbf')]);_0x55413f[_0x323a('0x3a')]=qs[_0x323a('0x4a')](_['pick'](_0x1b7ca1[_0x323a('0x3b')],_0x339976[_0x323a('0x4a')]));if(_0x1b7ca1['query']['filter']){_0x55413f[_0x323a('0x3a')]=_['merge'](_0x55413f['where'],{'$or':_['map'](_0x55413f['attributes'],function(_0x49d8af){var _0x49a23f={};_0x49a23f[_0x49d8af]={'$like':'%'+_0x1b7ca1[_0x323a('0x3b')][_0x323a('0x37')]+'%'};return _0x49a23f;})});}_0x55413f=_[_0x323a('0x50')]({},_0x55413f,_0x1b7ca1[_0x323a('0x51')]);return _0x22b6b3[_0x323a('0xd6')](_0x55413f);}})[_0x323a('0x13')](function(_0x5910e0){if(_0x5910e0){_0x26a303=_0x5910e0['length'];if(!_0x1b7ca1['query'][_0x323a('0xc1')]('nolimit')){_0x55413f[_0x323a('0x22')]=qs[_0x323a('0x22')](_0x1b7ca1[_0x323a('0x3b')]['limit']);_0x55413f['offset']=qs[_0x323a('0x21')](_0x1b7ca1[_0x323a('0x3b')][_0x323a('0x21')]);}return _0x22b6b3[_0x323a('0xd6')](_0x55413f);}})[_0x323a('0x13')](function(_0x48abe3){if(_0x48abe3){return _0x48abe3?{'count':_0x26a303,'rows':_0x48abe3}:null;}})[_0x323a('0x13')](respondWithResult(_0x310504,null))[_0x323a('0x1a')](handleError(_0x310504,null));};exports[_0x323a('0xd7')]=function(_0x13418a,_0x50ebc7){var _0x105b48={};var _0x271634={};var _0x254e00;var _0x313685;return db[_0x323a('0x34')][_0x323a('0x8f')]({'where':{'id':_0x13418a[_0x323a('0x58')]['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x50ebc7,null))[_0x323a('0x13')](function(_0x4bfc37){if(_0x4bfc37){_0x254e00=_0x4bfc37;_0x271634[_0x323a('0x4c')]=_['keys'](db['FaxInteraction']['rawAttributes']);_0x271634['query']=_[_0x323a('0x48')](_0x13418a['query']);_0x271634['filters']=_[_0x323a('0x4b')](_0x271634[_0x323a('0x4c')],_0x271634['query']);_0x105b48[_0x323a('0x3d')]=_['intersection'](_0x271634['model'],qs[_0x323a('0x4d')](_0x13418a['query'][_0x323a('0x4d')]));_0x105b48['attributes']=_0x105b48[_0x323a('0x3d')][_0x323a('0x4e')]?_0x105b48[_0x323a('0x3d')]:_0x271634[_0x323a('0x4c')];_0x105b48[_0x323a('0xbe')]=qs[_0x323a('0xbf')](_0x13418a[_0x323a('0x3b')][_0x323a('0xbf')]);_0x105b48[_0x323a('0x3a')]=qs[_0x323a('0x4a')](_['pick'](_0x13418a[_0x323a('0x3b')],_0x271634['filters']));if(_0x13418a[_0x323a('0x3b')][_0x323a('0x37')]){_0x105b48[_0x323a('0x3a')]=_[_0x323a('0x50')](_0x105b48[_0x323a('0x3a')],{'$or':_[_0x323a('0xc6')](_0x105b48['attributes'],function(_0x2fc5f9){var _0x1b8a6a={};_0x1b8a6a[_0x2fc5f9]={'$like':'%'+_0x13418a[_0x323a('0x3b')]['filter']+'%'};return _0x1b8a6a;})});}_0x105b48=_[_0x323a('0x50')]({},_0x105b48,_0x13418a[_0x323a('0x51')]);return _0x254e00[_0x323a('0xd7')](_0x105b48);}})[_0x323a('0x13')](function(_0x1e3a29){if(_0x1e3a29){_0x313685=_0x1e3a29['length'];if(!_0x13418a[_0x323a('0x3b')][_0x323a('0xc1')]('nolimit')){_0x105b48[_0x323a('0x22')]=qs['limit'](_0x13418a['query'][_0x323a('0x22')]);_0x105b48[_0x323a('0x21')]=qs[_0x323a('0x21')](_0x13418a[_0x323a('0x3b')][_0x323a('0x21')]);}return _0x254e00['getFaxInteractions'](_0x105b48);}})[_0x323a('0x13')](function(_0x2dfd0e){if(_0x2dfd0e){return _0x2dfd0e?{'count':_0x313685,'rows':_0x2dfd0e}:null;}})[_0x323a('0x13')](respondWithResult(_0x50ebc7,null))[_0x323a('0x1a')](handleError(_0x50ebc7,null));};exports[_0x323a('0xd8')]=function(_0x34dbd7,_0x3a2398){var _0x3e70e1={};var _0x4ce780={};var _0x3c4943;var _0x5c7321;return db[_0x323a('0x34')][_0x323a('0x8f')]({'where':{'id':_0x34dbd7[_0x323a('0x58')]['id']}})['then'](handleEntityNotFound(_0x3a2398,null))[_0x323a('0x13')](function(_0x8775da){if(_0x8775da){_0x3c4943=_0x8775da;_0x4ce780[_0x323a('0x4c')]=_[_0x323a('0x48')](db[_0x323a('0xd9')][_0x323a('0x49')]);_0x4ce780['query']=_['keys'](_0x34dbd7[_0x323a('0x3b')]);_0x4ce780[_0x323a('0x4a')]=_[_0x323a('0x4b')](_0x4ce780[_0x323a('0x4c')],_0x4ce780[_0x323a('0x3b')]);_0x3e70e1[_0x323a('0x3d')]=_[_0x323a('0x4b')](_0x4ce780[_0x323a('0x4c')],qs[_0x323a('0x4d')](_0x34dbd7[_0x323a('0x3b')][_0x323a('0x4d')]));_0x3e70e1[_0x323a('0x3d')]=_0x3e70e1['attributes']['length']?_0x3e70e1[_0x323a('0x3d')]:_0x4ce780['model'];_0x3e70e1[_0x323a('0xbe')]=qs['sort'](_0x34dbd7[_0x323a('0x3b')][_0x323a('0xbf')]);_0x3e70e1[_0x323a('0x3a')]=qs[_0x323a('0x4a')](_['pick'](_0x34dbd7['query'],_0x4ce780[_0x323a('0x4a')]));if(_0x34dbd7[_0x323a('0x3b')][_0x323a('0x37')]){_0x3e70e1['where']=_[_0x323a('0x50')](_0x3e70e1[_0x323a('0x3a')],{'$or':_[_0x323a('0xc6')](_0x3e70e1['attributes'],function(_0x181bde){var _0x3cccf8={};_0x3cccf8[_0x181bde]={'$like':'%'+_0x34dbd7[_0x323a('0x3b')][_0x323a('0x37')]+'%'};return _0x3cccf8;})});}_0x3e70e1=_[_0x323a('0x50')]({},_0x3e70e1,_0x34dbd7['options']);return _0x3c4943[_0x323a('0xd8')](_0x3e70e1);}})[_0x323a('0x13')](function(_0x50f8cb){if(_0x50f8cb){_0x5c7321=_0x50f8cb[_0x323a('0x4e')];if(!_0x34dbd7[_0x323a('0x3b')][_0x323a('0xc1')](_0x323a('0xc9'))){_0x3e70e1[_0x323a('0x22')]=qs[_0x323a('0x22')](_0x34dbd7[_0x323a('0x3b')]['limit']);_0x3e70e1[_0x323a('0x21')]=qs[_0x323a('0x21')](_0x34dbd7[_0x323a('0x3b')]['offset']);}return _0x3c4943['getWhatsappInteractions'](_0x3e70e1);}})['then'](function(_0x1ef274){if(_0x1ef274){return _0x1ef274?{'count':_0x5c7321,'rows':_0x1ef274}:null;}})[_0x323a('0x13')](respondWithResult(_0x3a2398,null))[_0x323a('0x1a')](handleError(_0x3a2398,null));};exports[_0x323a('0xda')]=function(_0x394192,_0x15ed23,_0x3b94a1){var _0x40e9f3;var _0x3a2dbb;var _0x5b9491;var _0x2a1882=!_[_0x323a('0x61')](_0x394192[_0x323a('0x58')]['id'])?_0x394192['params']['id']:!_[_0x323a('0x61')](_0x394192[_0x323a('0x76')]['id'])?_0x394192[_0x323a('0x76')]['id']:null;return db['User'][_0x323a('0x30')]({'where':{'id':_0x2a1882,'role':{'$or':[_0x323a('0x79'),_0x323a('0x76'),_0x323a('0x29')]}},'attributes':['id',_0x323a('0x31'),_0x323a('0xdb'),_0x323a('0xdc'),_0x323a('0x2f'),_0x323a('0x5d'),_0x323a('0xdd')]})[_0x323a('0x13')](function(_0x75de4a){if(_0x75de4a){if(_0x75de4a[_0x323a('0x2f')]===_0x323a('0x29')){_0x40e9f3=_0x75de4a;if(_0x394192[_0x323a('0x57')][_0x323a('0x9a')]){_0x5b9491=util['format'](_0x323a('0xde'),_0x40e9f3[_0x394192['body']['interface']]);}else if(_0x394192[_0x323a('0x57')]['intrf']){_0x5b9491=util[_0x323a('0xa2')](_0x323a('0xa3'),_0x394192[_0x323a('0x57')][_0x323a('0xdf')]);}else{_0x5b9491=util[_0x323a('0xa2')](_0x323a('0xa3'),_0x40e9f3[_0x323a('0x31')]);}socket['to'](util['format'](_0x323a('0xe0'),_0x40e9f3[_0x323a('0x31')]))[_0x323a('0xa7')](_0x323a('0xe1'),{'user':{'id':_0x40e9f3['id'],'name':_0x40e9f3[_0x323a('0x31')]},'ip':_0x394192['headers']['x-forwarded-for']||_0x394192[_0x323a('0xe2')]['remoteAddress']||_0x394192['socket'][_0x323a('0xe3')]||_0x394192['connection'][_0x323a('0xe4')]['remoteAddress']});return db[_0x323a('0xa4')][_0x323a('0x25')]({'where':{'membername':_0x40e9f3['name']},'individualHooks':!![]});}}else{throw new db[(_0x323a('0x89'))]['ValidationError']('User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method');}})[_0x323a('0x13')](function(){if(_0x40e9f3){return _0x40e9f3[_0x323a('0xe5')]({'raw':!![]});}})[_0x323a('0x13')](function(_0xb76eac){if(_0x40e9f3){var _0x36b4d7=[];if(_0xb76eac){_0x3a2dbb=_0xb76eac;if(_0x3a2dbb[_0x323a('0x4e')]){for(var _0x366332=0x0;_0x366332<_0x3a2dbb['length'];_0x366332++){_0x36b4d7[_0x323a('0x3e')]({'membername':_0x40e9f3[_0x323a('0x31')],'UserId':_0x40e9f3['id'],'queue_name':_0x3a2dbb[_0x366332]['name'],'VoiceQueueId':_0x3a2dbb[_0x366332]['id'],'interface':_0x5b9491,'paused':_0x40e9f3['loginInPause']||![],'penalty':_0x3a2dbb[_0x366332][_0x323a('0xe6')]||0x0});}return BPromise[_0x323a('0x84')](_0x36b4d7,function(_0x478596){return db['UserVoiceQueueRt']['upsert'](_0x478596);});}}}})[_0x323a('0x13')](function(){if(_0x40e9f3){return db[_0x323a('0xe7')][_0x323a('0x3f')]({'where':{'membername':_0x40e9f3['name'],'exitAt':null}});}})[_0x323a('0x13')](function(_0x2518c2){if(_0x40e9f3){var _0x86a936=[];_0x2518c2[_0x323a('0xe8')](function(_0x3ec487){_0x86a936['push'](_0x3ec487['update']({'exitAt':moment()[_0x323a('0xa2')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x323a('0x45')](_0x86a936);}})[_0x323a('0x13')](function(){if(_0x40e9f3){var _0x40d7c0=[];var _0x2c28aa=[];var _0x1d7965=utils[_0x323a('0xe9')]();var _0x19ebaa={'membername':_0x40e9f3[_0x323a('0x31')],'interface':_0x5b9491,'enterAt':moment()[_0x323a('0xa2')](_0x323a('0xea')),'role':_0x40e9f3[_0x323a('0x2f')],'internal':_0x40e9f3[_0x323a('0x5d')]};_0x1d7965[_0x323a('0xe8')](function(_0x456f92){_0x40d7c0[_0x323a('0x3e')](_[_0x323a('0x50')]({'channel':_0x456f92,'type':'LOGIN','data1':_0x394192[_0x323a('0x57')][_0x323a('0xeb')],'data2':_0x5b9491},_0x19ebaa));if(_0x40e9f3[_0x323a('0xdd')]){_0x2c28aa[_0x323a('0x3e')](_[_0x323a('0x50')]({'channel':_0x456f92,'type':_0x323a('0xec'),'data1':_0x323a('0xed')},_0x19ebaa));}});return db[_0x323a('0xe7')]['bulkCreate'](_0x40d7c0[_0x323a('0xee')](_0x2c28aa),{'individualHooks':!![]});}})[_0x323a('0x13')](function(){if(_0x40e9f3){return _0x40e9f3[_0x323a('0x24')]({'online':!![],'lastLoginAt':moment()[_0x323a('0xa2')](_0x323a('0xea')),'voicePause':_0x40e9f3[_0x323a('0xdd')]||![],'mailPause':_0x40e9f3['loginInPause']||![],'chatPause':_0x40e9f3[_0x323a('0xdd')]||![],'faxPause':_0x40e9f3[_0x323a('0xdd')]||![],'smsPause':_0x40e9f3[_0x323a('0xdd')]||![],'openchannelPause':_0x40e9f3[_0x323a('0xdd')]||![],'whatsappPause':_0x40e9f3[_0x323a('0xdd')]||![],'pauseType':_0x40e9f3['loginInPause']?'LOGININPAUSE':null,'interface':_0x5b9491,'lastPauseAt':moment()['format'](_0x323a('0xea'))});}})[_0x323a('0x13')](function(_0x1dea89){if(_0x394192[_0x323a('0xef')]){return _0x3b94a1();}else{return BPromise[_0x323a('0xf0')](_0x1dea89)[_0x323a('0x13')](respondWithResult(_0x15ed23,null));}})[_0x323a('0x1a')](handleError(_0x15ed23,null));};exports[_0x323a('0xf1')]=function(_0xf84990,_0xc6a55b){var _0x9a1714;return db[_0x323a('0x34')][_0x323a('0x30')]({'where':{'id':_0xf84990[_0x323a('0x58')]['id'],'role':_0x323a('0x29')},'attributes':['id',_0x323a('0x31'),_0x323a('0x2f')]})[_0x323a('0x13')](handleEntityNotFound(_0xc6a55b,null))[_0x323a('0x13')](function(_0x11f3ec){if(_0x11f3ec){_0x9a1714=_0x11f3ec;return db[_0x323a('0xa4')][_0x323a('0x25')]({'where':{'membername':_0x9a1714[_0x323a('0x31')]},'individualHooks':!![]});}})[_0x323a('0x13')](function(){return db[_0x323a('0xe7')][_0x323a('0x3f')]({'where':{'membername':_0x9a1714[_0x323a('0x31')],'exitAt':null}});})['then'](function(_0x2db3db){var _0x1f88a2=[];_0x2db3db['forEach'](function(_0x23fad2){_0x1f88a2['push'](_0x23fad2[_0x323a('0x24')]({'exitAt':moment()[_0x323a('0xa2')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x323a('0x45')](_0x1f88a2);})[_0x323a('0x13')](function(){return _0x9a1714['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})['then'](respondWithResult(_0xc6a55b,null))[_0x323a('0x1a')](handleError(_0xc6a55b,null));};exports[_0x323a('0xf2')]=function(_0x2c5788,_0x10ca53){var _0x39ed08;return db[_0x323a('0xa4')][_0x323a('0x24')]({'paused':0x1},{'where':{'UserId':_0x2c5788['params']['id']},'individualHooks':!![]})[_0x323a('0x13')](function(){return db['User'][_0x323a('0x30')]({'where':{'id':_0x2c5788[_0x323a('0x58')]['id'],'role':_0x323a('0x29')},'attributes':['id',_0x323a('0x31'),_0x323a('0x2f'),_0x323a('0x5d'),_0x323a('0x9a')]});})['then'](handleEntityNotFound(_0x10ca53,null))[_0x323a('0x13')](function(_0x465a3e){if(_0x465a3e){_0x39ed08=_0x465a3e;return respondWithRpcPromise(_0x323a('0xf3'),_0x323a('0xf2'),{'id':_0x39ed08['id'],'name':_0x39ed08[_0x323a('0x31')],'pause':!![]});}})[_0x323a('0x13')](function(){if(_0x39ed08){return db[_0x323a('0xe7')][_0x323a('0x3f')]({'where':{'membername':_0x39ed08[_0x323a('0x31')],'type':_0x323a('0xec'),'exitAt':null}});}})[_0x323a('0x13')](function(_0x467c19){if(_0x467c19['length']){var _0x36ddfb=moment()[_0x323a('0xa2')](_0x323a('0xea'));for(var _0x5c5a02=0x0,_0x183435=_0x467c19['length'];_0x5c5a02<_0x183435;_0x5c5a02++){_0x467c19[_0x5c5a02][_0x323a('0xf4')]({'exitAt':_0x36ddfb});}}})[_0x323a('0x13')](function(){var _0x155798=[];var _0x3c2ae4=utils[_0x323a('0xe9')]();_0x3c2ae4['forEach'](function(_0x527b31){_0x155798[_0x323a('0x3e')]({'channel':_0x527b31,'membername':_0x39ed08['name'],'interface':_[_0x323a('0x61')](_0x39ed08['interface'])?util[_0x323a('0xa2')](_0x323a('0xa3'),_0x39ed08[_0x323a('0x31')]):_0x39ed08[_0x323a('0x9a')],'type':'PAUSE','enterAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x2c5788[_0x323a('0x57')][_0x323a('0x35')]||'DEFAULT\x20PAUSE','role':_0x39ed08['role'],'internal':_0x39ed08[_0x323a('0x5d')]});});return db[_0x323a('0xe7')][_0x323a('0x82')](_0x155798,{'individualHooks':!![]});})['then'](function(){return _0x39ed08[_0x323a('0x24')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x2c5788[_0x323a('0x57')]['type']||_0x323a('0xf5'),'lastPauseAt':moment()[_0x323a('0xa2')](_0x323a('0xea'))});})[_0x323a('0x13')](respondWithResult(_0x10ca53,null))['catch'](handleError(_0x10ca53,null));};exports[_0x323a('0xf6')]=function(_0xe70135,_0x13c216){var _0xf1e1bb;return db[_0x323a('0x34')]['find']({'where':{'id':_0xe70135['params']['id']},'attributes':['id','name','role',_0x323a('0x99'),_0x323a('0xf7'),'chatPause','faxPause',_0x323a('0xf8'),_0x323a('0xf9'),_0x323a('0xfa'),_0x323a('0xfb'),_0x323a('0xfc')]})[_0x323a('0x13')](handleEntityNotFound(_0x13c216,null))[_0x323a('0x13')](function(_0x1b5555){if(_0x1b5555){_0xf1e1bb=_0x1b5555;if(_0xe70135[_0x323a('0x57')][_0x323a('0x97')]&&!utils[_0x323a('0x9b')](_0xe70135[_0x323a('0x57')][_0x323a('0x97')])){throw new db[(_0x323a('0x89'))][(_0x323a('0x8a'))]('Unknown\x20channel');}switch(_0xe70135[_0x323a('0x57')]['channel']){case _0x323a('0xa1'):return respondWithRpcPromise('QueuePause',_0x323a('0xf6'),{'id':_0xf1e1bb['id'],'name':_0xf1e1bb[_0x323a('0x31')],'pause':![]})[_0x323a('0x13')](function(){return db[_0x323a('0xa4')]['update']({'paused':0x0},{'where':{'UserId':_0xf1e1bb['id']},'individualHooks':!![]});})[_0x323a('0x13')](function(){return db[_0x323a('0xe7')][_0x323a('0x30')]({'where':{'channel':_0xe70135[_0x323a('0x57')][_0x323a('0x97')],'membername':_0xf1e1bb[_0x323a('0x31')],'type':_0x323a('0xec'),'exitAt':null}});})[_0x323a('0x13')](function(_0x35e358){if(_0x35e358){return _0x35e358[_0x323a('0x24')]({'exitAt':moment()[_0x323a('0xa2')](_0x323a('0xea')),'data2':'manual'},{'individualHooks':!![]});}return null;})[_0x323a('0x13')](function(){return _0xf1e1bb[_0x323a('0x24')]({'voicePause':![]});});case'mail':case _0x323a('0x42'):case _0x323a('0x55'):case _0x323a('0x53'):case'whatsapp':case _0x323a('0x54'):return db[_0x323a('0xe7')]['find']({'where':{'channel':_0xe70135[_0x323a('0x57')][_0x323a('0x97')],'membername':_0xf1e1bb['name'],'type':_0x323a('0xec'),'exitAt':null}})[_0x323a('0x13')](function(_0x26ebbc){if(_0x26ebbc){return _0x26ebbc[_0x323a('0x24')]({'exitAt':moment()[_0x323a('0xa2')](_0x323a('0xea')),'data2':'manual'},{'individualHooks':!![]});}return null;})[_0x323a('0x13')](function(){var _0x19f961={};_[_0x323a('0xfd')](_0x19f961,util[_0x323a('0xa2')](_0x323a('0xfe'),_0xe70135['body'][_0x323a('0x97')],'Pause'),![]);return _0xf1e1bb[_0x323a('0x24')](_0x19f961);});default:return respondWithRpcPromise(_0x323a('0xf3'),_0x323a('0xf6'),{'id':_0xf1e1bb['id'],'name':_0xf1e1bb[_0x323a('0x31')],'pause':![]})[_0x323a('0x13')](function(){return db['UserVoiceQueueRt'][_0x323a('0x24')]({'paused':0x0},{'where':{'UserId':_0xf1e1bb['id']}});})[_0x323a('0x13')](function(){return db[_0x323a('0xe7')][_0x323a('0x3f')]({'where':{'membername':_0xf1e1bb['name'],'type':_0x323a('0xec'),'exitAt':null}});})[_0x323a('0x13')](function(_0x49efa4){var _0x980053=[];_0x49efa4[_0x323a('0xe8')](function(_0x13c5c6){_0x980053[_0x323a('0x3e')](_0x13c5c6[_0x323a('0x24')]({'exitAt':moment()[_0x323a('0xa2')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x323a('0xff')}));});return BPromise[_0x323a('0x45')](_0x980053);})[_0x323a('0x13')](function(){return _0xf1e1bb['update']({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0x323a('0x13')](respondWithResult(_0x13c216,null))[_0x323a('0x1a')](handleError(_0x13c216,null));};exports[_0x323a('0x100')]=function(_0x1c697e,_0x1fb9ef){var _0x54864c={};var _0x5df58d={};var _0x4ff67f;var _0x3fe3c7;return db[_0x323a('0x34')][_0x323a('0x8f')]({'where':{'id':_0x1c697e[_0x323a('0x58')]['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x1fb9ef,null))['then'](function(_0x4b7ef2){if(_0x4b7ef2){_0x4ff67f=_0x4b7ef2;_0x5df58d['model']=_[_0x323a('0x48')](db[_0x323a('0x101')][_0x323a('0x49')]);_0x5df58d['query']=_[_0x323a('0x48')](_0x1c697e['query']);_0x5df58d[_0x323a('0x4a')]=_[_0x323a('0x4b')](_0x5df58d[_0x323a('0x4c')],_0x5df58d[_0x323a('0x3b')]);_0x54864c[_0x323a('0x3d')]=_[_0x323a('0x4b')](_0x5df58d[_0x323a('0x4c')],qs[_0x323a('0x4d')](_0x1c697e[_0x323a('0x3b')][_0x323a('0x4d')]));_0x54864c[_0x323a('0x3d')]=_0x54864c[_0x323a('0x3d')]['length']?_0x54864c[_0x323a('0x3d')]:_0x5df58d['model'];_0x54864c[_0x323a('0xbe')]=qs[_0x323a('0xbf')](_0x1c697e['query'][_0x323a('0xbf')]);_0x54864c[_0x323a('0x3a')]=qs[_0x323a('0x4a')](_['pick'](_0x1c697e[_0x323a('0x3b')],_0x5df58d[_0x323a('0x4a')]));if(_0x1c697e['query'][_0x323a('0x37')]){_0x54864c['where']=_[_0x323a('0x50')](_0x54864c['where'],{'$or':_['map'](_0x54864c[_0x323a('0x3d')],function(_0xe931bc){var _0x53276e={};_0x53276e[_0xe931bc]={'$like':'%'+_0x1c697e[_0x323a('0x3b')][_0x323a('0x37')]+'%'};return _0x53276e;})});}_0x54864c=_[_0x323a('0x50')]({},_0x54864c,_0x1c697e[_0x323a('0x51')]);return _0x4ff67f['getTeams'](_0x54864c);}})[_0x323a('0x13')](function(_0x3bfcce){if(_0x3bfcce){_0x3fe3c7=_0x3bfcce['length'];if(!_0x1c697e['query'][_0x323a('0xc1')](_0x323a('0xc9'))){_0x54864c['limit']=qs[_0x323a('0x22')](_0x1c697e[_0x323a('0x3b')]['limit']);_0x54864c[_0x323a('0x21')]=qs['offset'](_0x1c697e[_0x323a('0x3b')][_0x323a('0x21')]);}return _0x4ff67f[_0x323a('0x100')](_0x54864c);}})['then'](function(_0x1e9b3e){if(_0x1e9b3e){return _0x1e9b3e?{'count':_0x3fe3c7,'rows':_0x1e9b3e}:null;}})[_0x323a('0x13')](respondWithResult(_0x1fb9ef,null))[_0x323a('0x1a')](handleError(_0x1fb9ef,null));};exports[_0x323a('0x102')]=function(_0x54791b,_0x2da8d7){return db[_0x323a('0x34')][_0x323a('0x30')]({'where':{'id':_0x54791b[_0x323a('0x58')]['id']}})['then'](handleEntityNotFound(_0x2da8d7,null))[_0x323a('0x13')](function(_0x5ed20d){if(_0x5ed20d){var _0x51cc7b=_0x5ed20d[_0x323a('0x26')]({'plain':!![]});return _0x5ed20d[_0x323a('0x102')](_0x54791b['body'][_0x323a('0x5b')],_[_0x323a('0x5c')](_0x54791b[_0x323a('0x57')],['ids','id'])||{})[_0x323a('0x13')](function(){for(var _0x462ba3=0x0;_0x462ba3<_0x54791b['body'][_0x323a('0x5b')]['length'];_0x462ba3++){var _0x111e13=[];db[_0x323a('0x101')][_0x323a('0x8f')]({'where':{'id':_0x54791b[_0x323a('0x57')][_0x323a('0x5b')][_0x462ba3]}})[_0x323a('0x13')](function(_0x571e57){_0x111e13[_0x323a('0x3e')](_0x571e57[_0x323a('0xe5')]()[_0x323a('0x13')](function(_0x5c60bf){for(var _0x22f66f=0x0;_0x22f66f<_0x5c60bf['length'];_0x22f66f++){_0x5c60bf[_0x22f66f][_0x323a('0x103')](_0x323a('0x97'),_0x323a('0x104'));}return _0x5c60bf;}));_0x111e13[_0x323a('0x3e')](_0x571e57['getChatQueues']()[_0x323a('0x13')](function(_0x31e3f1){for(var _0xcb7dbc=0x0;_0xcb7dbc<_0x31e3f1['length'];_0xcb7dbc++){_0x31e3f1[_0xcb7dbc][_0x323a('0x103')]('channel','Chat');}return _0x31e3f1;}));_0x111e13[_0x323a('0x3e')](_0x571e57['getMailQueues']()[_0x323a('0x13')](function(_0x4f5090){for(var _0x50463e=0x0;_0x50463e<_0x4f5090[_0x323a('0x4e')];_0x50463e++){_0x4f5090[_0x50463e][_0x323a('0x103')](_0x323a('0x97'),_0x323a('0x105'));}return _0x4f5090;}));_0x111e13[_0x323a('0x3e')](_0x571e57[_0x323a('0x106')]()[_0x323a('0x13')](function(_0x3aa90a){for(var _0x1b29b8=0x0;_0x1b29b8<_0x3aa90a['length'];_0x1b29b8++){_0x3aa90a[_0x1b29b8][_0x323a('0x103')](_0x323a('0x97'),_0x323a('0x107'));}return _0x3aa90a;}));_0x111e13[_0x323a('0x3e')](_0x571e57[_0x323a('0x108')]()[_0x323a('0x13')](function(_0xd62e99){for(var _0x2cd509=0x0;_0x2cd509<_0xd62e99['length'];_0x2cd509++){_0xd62e99[_0x2cd509]['setDataValue'](_0x323a('0x97'),'Whatsapp');}return _0xd62e99;}));_0x111e13[_0x323a('0x3e')](_0x571e57['getFaxQueues']()[_0x323a('0x13')](function(_0x29b472){for(var _0x480162=0x0;_0x480162<_0x29b472[_0x323a('0x4e')];_0x480162++){_0x29b472[_0x480162][_0x323a('0x103')]('channel',_0x323a('0x109'));}return _0x29b472;}));_0x111e13['push'](_0x571e57[_0x323a('0x10a')]()[_0x323a('0x13')](function(_0x524095){for(var _0x7d3b4d=0x0;_0x7d3b4d<_0x524095[_0x323a('0x4e')];_0x7d3b4d++){_0x524095[_0x7d3b4d]['setDataValue'](_0x323a('0x97'),_0x323a('0x10b'));}return _0x524095;}));return BPromise['all'](_0x111e13);})['then'](function(_0x5387db){var _0x1c5fe5=_[_0x323a('0x10c')](_0x5387db);_0x111e13=[];return db[_0x323a('0x63')][_0x323a('0x10d')](function(_0x1712b0){for(var _0x525119=0x0;_0x525119<_0x1c5fe5[_0x323a('0x4e')];_0x525119++){_0x111e13['push'](_0x1c5fe5[_0x525119][_0x323a('0x10e')](_0x51cc7b['id']),{'transaction':_0x1712b0});}return BPromise[_0x323a('0x45')](_0x111e13)['then'](function(){if(_0x51cc7b[_0x323a('0x98')]){return BPromise[_0x323a('0x84')](_[_0x323a('0x37')](_0x1c5fe5,function(_0x215a9a){return _0x215a9a['getDataValue'](_0x323a('0x97'))===_0x323a('0x104');}),function(_0x1400bc){return db[_0x323a('0xa4')][_0x323a('0x10f')]({'membername':_0x51cc7b[_0x323a('0x31')],'UserId':_0x51cc7b['id'],'queue_name':_0x1400bc[_0x323a('0x31')],'VoiceQueueId':_0x1400bc['id'],'interface':_['isNil'](_0x51cc7b[_0x323a('0x9a')])?util[_0x323a('0xa2')](_0x323a('0xa3'),_0x51cc7b[_0x323a('0x31')]):_0x51cc7b[_0x323a('0x9a')],'paused':_0x51cc7b[_0x323a('0x99')]||![],'penalty':_0x51cc7b[_0x323a('0x9f')]},{'transaction':_0x1712b0});});}else{return;}})[_0x323a('0x13')](function(){for(var _0x366130=0x0;_0x366130<_0x1c5fe5[_0x323a('0x4e')];_0x366130++){var _0x3e6ec1=_0x1c5fe5[_0x366130][_0x323a('0x110')](_0x323a('0x97'));var _0x22662e=_0x3e6ec1+_0x323a('0xa0');socket['emit'](_0x323a('0x76')+_0x3e6ec1+_0x323a('0x111'),{'UserId':_0x51cc7b['id'],['queueField']:_0x1c5fe5[_0x366130]['id']});}});});});}});}})[_0x323a('0x13')](respondWithStatusCode(_0x2da8d7,null))['catch'](handleError(_0x2da8d7,null));};exports[_0x323a('0x112')]=function(_0x483378,_0x377545){return db[_0x323a('0x34')][_0x323a('0x8f')]({'where':{'id':_0x483378[_0x323a('0x58')]['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x377545,null))[_0x323a('0x13')](function(_0xfdfa40){if(_0xfdfa40){var _0x1788c1=_0xfdfa40['get']({'plain':!![]});var _0x1cac56=_0x483378[_0x323a('0x3b')][_0x323a('0x5b')];return _0xfdfa40[_0x323a('0x112')](_0x1cac56)['then'](function(){for(var _0x5c84cd=0x0;_0x5c84cd<_0x1cac56[_0x323a('0x4e')];_0x5c84cd++){var _0x5a854e=[];db[_0x323a('0x101')][_0x323a('0x8f')]({'where':{'id':_0x1cac56[_0x5c84cd]}})[_0x323a('0x13')](function(_0xf023d4){_0x5a854e['push'](_0xf023d4[_0x323a('0xe5')]()[_0x323a('0x13')](function(_0x190422){for(var _0xb1419e=0x0;_0xb1419e<_0x190422[_0x323a('0x4e')];_0xb1419e++){_0x190422[_0xb1419e][_0x323a('0x103')]('channel',_0x323a('0x104'));}return _0x190422;}));_0x5a854e[_0x323a('0x3e')](_0xf023d4[_0x323a('0x113')]()['then'](function(_0x36bf25){for(var _0x1cfd14=0x0;_0x1cfd14<_0x36bf25[_0x323a('0x4e')];_0x1cfd14++){_0x36bf25[_0x1cfd14][_0x323a('0x103')](_0x323a('0x97'),'Chat');}return _0x36bf25;}));_0x5a854e['push'](_0xf023d4[_0x323a('0x114')]()[_0x323a('0x13')](function(_0x519cea){for(var _0x22134f=0x0;_0x22134f<_0x519cea[_0x323a('0x4e')];_0x22134f++){_0x519cea[_0x22134f][_0x323a('0x103')]('channel',_0x323a('0x105'));}return _0x519cea;}));_0x5a854e[_0x323a('0x3e')](_0xf023d4[_0x323a('0x106')]()[_0x323a('0x13')](function(_0x3e07be){for(var _0x3b4e79=0x0;_0x3b4e79<_0x3e07be[_0x323a('0x4e')];_0x3b4e79++){_0x3e07be[_0x3b4e79][_0x323a('0x103')]('channel','Sms');}return _0x3e07be;}));_0x5a854e['push'](_0xf023d4[_0x323a('0x108')]()['then'](function(_0x4bcb2b){for(var _0x11e8c8=0x0;_0x11e8c8<_0x4bcb2b['length'];_0x11e8c8++){_0x4bcb2b[_0x11e8c8][_0x323a('0x103')]('channel','Whatsapp');}return _0x4bcb2b;}));_0x5a854e[_0x323a('0x3e')](_0xf023d4['getFaxQueues']()[_0x323a('0x13')](function(_0x4cc68e){for(var _0x1d7284=0x0;_0x1d7284<_0x4cc68e[_0x323a('0x4e')];_0x1d7284++){_0x4cc68e[_0x1d7284]['setDataValue']('channel','Fax');}return _0x4cc68e;}));_0x5a854e[_0x323a('0x3e')](_0xf023d4['getOpenchannelQueues']()['then'](function(_0x4c27cc){for(var _0x249896=0x0;_0x249896<_0x4c27cc['length'];_0x249896++){_0x4c27cc[_0x249896][_0x323a('0x103')](_0x323a('0x97'),_0x323a('0x10b'));}return _0x4c27cc;}));return BPromise['all'](_0x5a854e);})[_0x323a('0x13')](function(_0x11783c){var _0x2c6c8b=_['flatten'](_0x11783c);_0x5a854e=[];return db[_0x323a('0x63')][_0x323a('0x10d')](function(_0x26e6b0){for(var _0x1ceb87=0x0;_0x1ceb87<_0x2c6c8b[_0x323a('0x4e')];_0x1ceb87++){_0x5a854e['push'](_0x2c6c8b[_0x1ceb87][_0x323a('0x115')](_0x1788c1['id']),{'transaction':_0x26e6b0});}return BPromise[_0x323a('0x45')](_0x5a854e)[_0x323a('0x13')](function(){if(_0x1788c1['online']){return BPromise[_0x323a('0x84')](_[_0x323a('0x37')](_0x2c6c8b,function(_0x292be2){return _0x292be2[_0x323a('0x110')](_0x323a('0x97'))===_0x323a('0x104');}),function(_0x2c0065){return db[_0x323a('0xa4')]['destroy']({'where':{'VoiceQueueId':_0x2c0065['id'],'UserId':_0x1788c1['id']},'transaction':_0x26e6b0});});}else{return;}})[_0x323a('0x13')](function(){for(var _0x44decd=0x0;_0x44decd<_0x2c6c8b[_0x323a('0x4e')];_0x44decd++){var _0x306cff=_0x2c6c8b[_0x44decd][_0x323a('0x110')]('channel');var _0x3f6739=_0x306cff+'QueueId';socket[_0x323a('0xa7')](_0x323a('0x76')+_0x306cff+_0x323a('0xa8'),{'UserId':_0x1788c1['id'],['queueField']:_0x2c6c8b[_0x44decd]['id']});}});});});}});}})[_0x323a('0x13')](respondWithStatusCode(_0x377545,null))[_0x323a('0x1a')](handleError(_0x377545,null));};exports[_0x323a('0x116')]=function(_0x5a76f6,_0x2bae6d){var _0xee9d43={};var _0x2158b6={};var _0x1cdf37;var _0x53bdb2;return db[_0x323a('0x34')][_0x323a('0x8f')]({'where':{'id':_0x5a76f6['params']['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x2bae6d,null))[_0x323a('0x13')](function(_0x4365aa){if(_0x4365aa){_0x1cdf37=_0x4365aa;_0x2158b6['model']=_[_0x323a('0x48')](db[_0x323a('0xc2')][_0x323a('0x49')]);_0x2158b6['query']=_[_0x323a('0x48')](_0x5a76f6[_0x323a('0x3b')]);_0x2158b6[_0x323a('0x4a')]=_['intersection'](_0x2158b6[_0x323a('0x4c')],_0x2158b6[_0x323a('0x3b')]);_0xee9d43[_0x323a('0x3d')]=_[_0x323a('0x4b')](_0x2158b6[_0x323a('0x4c')],qs[_0x323a('0x4d')](_0x5a76f6['query'][_0x323a('0x4d')]));_0xee9d43['attributes']=_0xee9d43[_0x323a('0x3d')]['length']?_0xee9d43[_0x323a('0x3d')]:_0x2158b6[_0x323a('0x4c')];_0xee9d43[_0x323a('0xbe')]=qs[_0x323a('0xbf')](_0x5a76f6[_0x323a('0x3b')]['sort']);_0xee9d43[_0x323a('0x3a')]=qs[_0x323a('0x4a')](_[_0x323a('0xc0')](_0x5a76f6[_0x323a('0x3b')],_0x2158b6[_0x323a('0x4a')]));if(_0x5a76f6['query'][_0x323a('0x37')]){_0xee9d43[_0x323a('0x3a')]=_[_0x323a('0x50')](_0xee9d43['where'],{'$or':_[_0x323a('0xc6')](_0xee9d43['attributes'],function(_0x4e58b1){var _0x2609a1={};_0x2609a1[_0x4e58b1]={'$like':'%'+_0x5a76f6[_0x323a('0x3b')][_0x323a('0x37')]+'%'};return _0x2609a1;})});}_0xee9d43=_[_0x323a('0x50')]({},_0xee9d43,_0x5a76f6[_0x323a('0x51')]);return _0x1cdf37[_0x323a('0x116')](_0xee9d43);}})[_0x323a('0x13')](function(_0x1cc016){if(_0x1cc016){_0x53bdb2=_0x1cc016[_0x323a('0x4e')];if(!_0x5a76f6[_0x323a('0x3b')]['hasOwnProperty'](_0x323a('0xc9'))){_0xee9d43[_0x323a('0x22')]=qs[_0x323a('0x22')](_0x5a76f6[_0x323a('0x3b')][_0x323a('0x22')]);_0xee9d43[_0x323a('0x21')]=qs[_0x323a('0x21')](_0x5a76f6[_0x323a('0x3b')][_0x323a('0x21')]);}return _0x1cdf37['getLists'](_0xee9d43);}})[_0x323a('0x13')](function(_0x56858d){if(_0x56858d){return _0x56858d?{'count':_0x53bdb2,'rows':_0x56858d}:null;}})[_0x323a('0x13')](respondWithResult(_0x2bae6d,null))['catch'](handleError(_0x2bae6d,null));};exports['getAgents']=function(_0x276266,_0x3a3705){var _0x310557={};var _0x295b10={};var _0xe18043;var _0x14c6d8;return db[_0x323a('0x34')][_0x323a('0x8f')]({'where':{'id':_0x276266['params']['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x3a3705,null))[_0x323a('0x13')](function(_0x4da893){if(_0x4da893){_0xe18043=_0x4da893;_0x295b10[_0x323a('0x4c')]=_[_0x323a('0x48')](db[_0x323a('0x34')][_0x323a('0x49')]);_0x295b10['query']=_['keys'](_0x276266[_0x323a('0x3b')]);_0x295b10[_0x323a('0x4a')]=_[_0x323a('0x4b')](_0x295b10[_0x323a('0x4c')],_0x295b10[_0x323a('0x3b')]);_0x310557['attributes']=_[_0x323a('0x4b')](_0x295b10[_0x323a('0x4c')],qs[_0x323a('0x4d')](_0x276266['query'][_0x323a('0x4d')]));_0x310557[_0x323a('0x3d')]=_0x310557['attributes']['length']?_0x310557['attributes']:_0x295b10[_0x323a('0x4c')];_0x310557[_0x323a('0xbe')]=qs[_0x323a('0xbf')](_0x276266[_0x323a('0x3b')][_0x323a('0xbf')]);_0x310557['where']=qs[_0x323a('0x4a')](_[_0x323a('0xc0')](_0x276266['query'],_0x295b10[_0x323a('0x4a')]));if(_0x276266[_0x323a('0x3b')]['filter']){_0x310557['where']=_[_0x323a('0x50')](_0x310557[_0x323a('0x3a')],{'$or':_[_0x323a('0xc6')](_0x310557[_0x323a('0x3d')],function(_0x224b2a){var _0x21e8e4={};_0x21e8e4[_0x224b2a]={'$like':'%'+_0x276266[_0x323a('0x3b')][_0x323a('0x37')]+'%'};return _0x21e8e4;})});}_0x310557['model']=db[_0x323a('0x34')];_0x310557['as']=_0x323a('0x28');_0x310557=_[_0x323a('0x50')]({},_0x310557,_0x276266[_0x323a('0x51')]);return _0xe18043[_0x323a('0xe5')]({'include':[_0x310557]});}})[_0x323a('0x13')](function(_0x1353d4){if(_0x1353d4){var _0x2b0a4d={},_0x1f6d30=[],_0x5d8148=0x0;for(var _0x2d3327=0x0;_0x2d3327<_0x1353d4[_0x323a('0x4e')];_0x2d3327+=0x1){for(var _0x23aa64=0x0,_0x36d28d;_0x23aa64<_0x1353d4[_0x2d3327][_0x323a('0x28')][_0x323a('0x4e')];_0x23aa64+=0x1){_0x36d28d=_0x1353d4[_0x2d3327][_0x323a('0x28')][_0x23aa64][_0x323a('0x26')]({'plain':!![]});_0x2b0a4d[_0x36d28d['id']]=_0x36d28d;}}_0x2b0a4d=_[_0x323a('0x117')](_0x2b0a4d);for(var _0x311074=qs['offset'](_0x276266[_0x323a('0x3b')][_0x323a('0x21')]);_0x311074<_0x2b0a4d['length']&&_0x1f6d30[_0x323a('0x4e')]<qs[_0x323a('0x22')](_0x276266[_0x323a('0x3b')]['limit']);_0x311074+=0x1){if(_0x2b0a4d[_0x311074]){_0x1f6d30[_0x323a('0x3e')](_0x2b0a4d[_0x311074]);}}return{'count':_0x2b0a4d[_0x323a('0x4e')],'rows':_0x1f6d30};}})[_0x323a('0x13')](respondWithResult(_0x3a3705,null))['catch'](handleError(_0x3a3705,null));};exports[_0x323a('0x25')]=function(_0x1821a1,_0x48309d){if(_0x1821a1[_0x323a('0x76')]['id']==_0x1821a1[_0x323a('0x58')]['id']){return _0x48309d[_0x323a('0x1d')](0x1f4)[_0x323a('0x118')]({'message':'You\x20can\x27t\x20delete\x20yourself'});}return db[_0x323a('0x34')]['find']({'where':{'id':_0x1821a1[_0x323a('0x58')]['id']}})['then'](handleEntityNotFound(_0x48309d,null))['then'](removeEntity(_0x48309d,null))[_0x323a('0x1a')](handleError(_0x48309d,null));};exports['addChatInteractions']=function(_0x453cab,_0x2d472a){return db[_0x323a('0x34')]['find']({'where':{'id':_0x453cab[_0x323a('0x58')]['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x2d472a,null))[_0x323a('0x13')](function(_0x57670a){if(_0x57670a){return _0x57670a[_0x323a('0x119')](_0x453cab[_0x323a('0x57')][_0x323a('0x5b')],_[_0x323a('0x5c')](_0x453cab[_0x323a('0x57')],[_0x323a('0x5b'),'id'])||{})[_0x323a('0x11a')](function(){for(var _0x3fd655=0x0;_0x3fd655<_0x453cab['body'][_0x323a('0x5b')]['length'];_0x3fd655+=0x1){socket[_0x323a('0xa7')](_0x323a('0x11b'),{'ChatInteractionId':Number(_0x453cab[_0x323a('0x57')][_0x323a('0x5b')][_0x3fd655]),'UserId':Number(_0x453cab[_0x323a('0x58')]['id'])});}return _0x453cab[_0x323a('0x57')][_0x323a('0x5b')];});}})[_0x323a('0x13')](respondWithResult(_0x2d472a,null))[_0x323a('0x1a')](handleError(_0x2d472a,null));};exports[_0x323a('0x11c')]=function(_0x516b07,_0x122cca){return db['User'][_0x323a('0x30')]({'where':{'id':_0x516b07['params']['id']}})['then'](handleEntityNotFound(_0x122cca,null))[_0x323a('0x13')](function(_0x56dcdb){if(_0x56dcdb){return _0x56dcdb[_0x323a('0x11c')](_0x516b07[_0x323a('0x3b')][_0x323a('0x5b')])[_0x323a('0x13')](function(){if(_[_0x323a('0xa6')](_0x516b07['query']['ids'])){for(var _0x5b2635=0x0;_0x5b2635<_0x516b07[_0x323a('0x3b')][_0x323a('0x5b')][_0x323a('0x4e')];_0x5b2635+=0x1){socket[_0x323a('0xa7')](_0x323a('0x11d'),{'ChatInteractionId':Number(_0x516b07[_0x323a('0x3b')]['ids'][_0x5b2635]),'UserId':Number(_0x516b07[_0x323a('0x58')]['id'])});}}else{socket[_0x323a('0xa7')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x516b07[_0x323a('0x3b')][_0x323a('0x5b')]),'UserId':Number(_0x516b07['params']['id'])});}});}})[_0x323a('0x13')](respondWithStatusCode(_0x122cca,null))[_0x323a('0x1a')](handleError(_0x122cca,null));};exports[_0x323a('0x11e')]=function(_0x1e2443,_0x91ddc9){return db[_0x323a('0x34')][_0x323a('0x30')]({'where':{'id':_0x1e2443[_0x323a('0x58')]['id']}})['then'](handleEntityNotFound(_0x91ddc9,null))[_0x323a('0x13')](function(_0xda9c2c){if(_0xda9c2c){return _0xda9c2c[_0x323a('0x11e')](_0x1e2443[_0x323a('0x57')]['ids'],_[_0x323a('0x5c')](_0x1e2443[_0x323a('0x57')],[_0x323a('0x5b'),'id'])||{})[_0x323a('0x11a')](function(){for(var _0x16f94c=0x0;_0x16f94c<_0x1e2443[_0x323a('0x57')][_0x323a('0x5b')]['length'];_0x16f94c+=0x1){socket['emit']('user_has_mail_interactions:save',{'MailInteractionId':Number(_0x1e2443['body']['ids'][_0x16f94c]),'UserId':Number(_0x1e2443[_0x323a('0x58')]['id'])});}return _0x1e2443[_0x323a('0x57')][_0x323a('0x5b')];});}})['then'](respondWithResult(_0x91ddc9,null))[_0x323a('0x1a')](handleError(_0x91ddc9,null));};exports[_0x323a('0x11f')]=function(_0x1d8c0a,_0x5a7a10){return db[_0x323a('0x34')]['find']({'where':{'id':_0x1d8c0a['params']['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x5a7a10,null))['then'](function(_0x4c140d){if(_0x4c140d){return _0x4c140d[_0x323a('0x11f')](_0x1d8c0a[_0x323a('0x3b')][_0x323a('0x5b')])[_0x323a('0x13')](function(){if(_[_0x323a('0xa6')](_0x1d8c0a[_0x323a('0x3b')][_0x323a('0x5b')])){for(var _0x2704ed=0x0;_0x2704ed<_0x1d8c0a[_0x323a('0x3b')][_0x323a('0x5b')][_0x323a('0x4e')];_0x2704ed+=0x1){socket[_0x323a('0xa7')](_0x323a('0x120'),{'MailInteractionId':Number(_0x1d8c0a['query'][_0x323a('0x5b')][_0x2704ed]),'UserId':Number(_0x1d8c0a[_0x323a('0x58')]['id'])});}}else{socket[_0x323a('0xa7')](_0x323a('0x120'),{'MailInteractionId':Number(_0x1d8c0a[_0x323a('0x3b')]['ids']),'UserId':Number(_0x1d8c0a[_0x323a('0x58')]['id'])});}});}})[_0x323a('0x13')](respondWithStatusCode(_0x5a7a10,null))[_0x323a('0x1a')](handleError(_0x5a7a10,null));};exports[_0x323a('0x121')]=function(_0x298c82,_0x4577e9){return db[_0x323a('0x34')]['find']({'where':{'id':_0x298c82[_0x323a('0x58')]['id']}})['then'](handleEntityNotFound(_0x4577e9,null))[_0x323a('0x13')](function(_0x2fe165){if(_0x2fe165){return _0x2fe165[_0x323a('0x121')](_0x298c82[_0x323a('0x57')][_0x323a('0x5b')],_[_0x323a('0x5c')](_0x298c82[_0x323a('0x57')],[_0x323a('0x5b'),'id'])||{})[_0x323a('0x11a')](function(){for(var _0x2782f0=0x0;_0x2782f0<_0x298c82[_0x323a('0x57')][_0x323a('0x5b')][_0x323a('0x4e')];_0x2782f0+=0x1){socket[_0x323a('0xa7')](_0x323a('0x122'),{'FaxInteractionId':Number(_0x298c82[_0x323a('0x57')][_0x323a('0x5b')][_0x2782f0]),'UserId':Number(_0x298c82[_0x323a('0x58')]['id'])});}return _0x298c82[_0x323a('0x57')][_0x323a('0x5b')];});}})['then'](respondWithResult(_0x4577e9,null))[_0x323a('0x1a')](handleError(_0x4577e9,null));};exports[_0x323a('0x123')]=function(_0x24266e,_0x3bce94){return db[_0x323a('0x34')]['find']({'where':{'id':_0x24266e[_0x323a('0x58')]['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x3bce94,null))['then'](function(_0x505d8d){if(_0x505d8d){return _0x505d8d[_0x323a('0x123')](_0x24266e[_0x323a('0x3b')][_0x323a('0x5b')])['then'](function(){if(_[_0x323a('0xa6')](_0x24266e[_0x323a('0x3b')][_0x323a('0x5b')])){for(var _0x3ff7ab=0x0;_0x3ff7ab<_0x24266e[_0x323a('0x3b')][_0x323a('0x5b')][_0x323a('0x4e')];_0x3ff7ab+=0x1){socket[_0x323a('0xa7')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x24266e[_0x323a('0x3b')][_0x323a('0x5b')][_0x3ff7ab]),'UserId':Number(_0x24266e[_0x323a('0x58')]['id'])});}}else{socket['emit']('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x24266e[_0x323a('0x3b')]['ids']),'UserId':Number(_0x24266e['params']['id'])});}});}})[_0x323a('0x13')](respondWithStatusCode(_0x3bce94,null))[_0x323a('0x1a')](handleError(_0x3bce94,null));};exports[_0x323a('0x124')]=function(_0x309ceb,_0x1f4a22){return db['User'][_0x323a('0x30')]({'where':{'id':_0x309ceb[_0x323a('0x58')]['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x1f4a22,null))[_0x323a('0x13')](function(_0x199287){if(_0x199287){return _0x199287['addSmsInteractions'](_0x309ceb[_0x323a('0x57')][_0x323a('0x5b')],_['omit'](_0x309ceb['body'],[_0x323a('0x5b'),'id'])||{})['spread'](function(){for(var _0xe1ff4d=0x0;_0xe1ff4d<_0x309ceb[_0x323a('0x57')][_0x323a('0x5b')][_0x323a('0x4e')];_0xe1ff4d+=0x1){socket[_0x323a('0xa7')](_0x323a('0x125'),{'SmsInteractionId':Number(_0x309ceb[_0x323a('0x57')][_0x323a('0x5b')][_0xe1ff4d]),'UserId':Number(_0x309ceb['params']['id'])});}return _0x309ceb[_0x323a('0x57')]['ids'];});}})[_0x323a('0x13')](respondWithResult(_0x1f4a22,null))[_0x323a('0x1a')](handleError(_0x1f4a22,null));};exports[_0x323a('0x126')]=function(_0x3a1156,_0x1a38ed){return db['User'][_0x323a('0x30')]({'where':{'id':_0x3a1156[_0x323a('0x58')]['id']}})['then'](handleEntityNotFound(_0x1a38ed,null))[_0x323a('0x13')](function(_0x9fa4f3){if(_0x9fa4f3){return _0x9fa4f3[_0x323a('0x126')](_0x3a1156['query'][_0x323a('0x5b')])['then'](function(){if(_['isArray'](_0x3a1156['query'][_0x323a('0x5b')])){for(var _0x22f060=0x0;_0x22f060<_0x3a1156[_0x323a('0x3b')][_0x323a('0x5b')]['length'];_0x22f060+=0x1){socket[_0x323a('0xa7')](_0x323a('0x127'),{'SmsInteractionId':Number(_0x3a1156[_0x323a('0x3b')][_0x323a('0x5b')][_0x22f060]),'UserId':Number(_0x3a1156[_0x323a('0x58')]['id'])});}}else{socket['emit'](_0x323a('0x127'),{'SmsInteractionId':Number(_0x3a1156[_0x323a('0x3b')]['ids']),'UserId':Number(_0x3a1156[_0x323a('0x58')]['id'])});}});}})[_0x323a('0x13')](respondWithStatusCode(_0x1a38ed,null))[_0x323a('0x1a')](handleError(_0x1a38ed,null));};exports[_0x323a('0x128')]=function(_0x24c0df,_0x210776){return db[_0x323a('0x34')][_0x323a('0x30')]({'where':{'id':_0x24c0df[_0x323a('0x58')]['id']}})['then'](handleEntityNotFound(_0x210776,null))['then'](function(_0x5d6990){if(_0x5d6990){return _0x5d6990[_0x323a('0x128')](_0x24c0df[_0x323a('0x57')][_0x323a('0x5b')],_[_0x323a('0x5c')](_0x24c0df[_0x323a('0x57')],[_0x323a('0x5b'),'id'])||{})[_0x323a('0x11a')](function(){for(var _0x23c1a2=0x0;_0x23c1a2<_0x24c0df[_0x323a('0x57')][_0x323a('0x5b')][_0x323a('0x4e')];_0x23c1a2+=0x1){socket[_0x323a('0xa7')](_0x323a('0x129'),{'OpenchannelInteractionId':Number(_0x24c0df[_0x323a('0x57')]['ids'][_0x23c1a2]),'UserId':Number(_0x24c0df['params']['id'])});}return _0x24c0df[_0x323a('0x57')][_0x323a('0x5b')];});}})[_0x323a('0x13')](respondWithResult(_0x210776,null))['catch'](handleError(_0x210776,null));};exports['removeOpenchannelInteractions']=function(_0x4f9bd5,_0x4459f0){return db[_0x323a('0x34')][_0x323a('0x30')]({'where':{'id':_0x4f9bd5[_0x323a('0x58')]['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x4459f0,null))[_0x323a('0x13')](function(_0x512ecb){if(_0x512ecb){return _0x512ecb['removeOpenchannelInteractions'](_0x4f9bd5[_0x323a('0x3b')]['ids'])[_0x323a('0x13')](function(){if(_[_0x323a('0xa6')](_0x4f9bd5['query'][_0x323a('0x5b')])){for(var _0x5e1b5d=0x0;_0x5e1b5d<_0x4f9bd5[_0x323a('0x3b')][_0x323a('0x5b')][_0x323a('0x4e')];_0x5e1b5d+=0x1){socket[_0x323a('0xa7')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x4f9bd5[_0x323a('0x3b')]['ids'][_0x5e1b5d]),'UserId':Number(_0x4f9bd5[_0x323a('0x58')]['id'])});}}else{socket[_0x323a('0xa7')](_0x323a('0x12a'),{'OpenchannelInteractionId':Number(_0x4f9bd5[_0x323a('0x3b')]['ids']),'UserId':Number(_0x4f9bd5[_0x323a('0x58')]['id'])});}});}})[_0x323a('0x13')](respondWithStatusCode(_0x4459f0,null))[_0x323a('0x1a')](handleError(_0x4459f0,null));};exports['addWhatsappInteractions']=function(_0x6300a6,_0x44f360){return db[_0x323a('0x34')]['find']({'where':{'id':_0x6300a6[_0x323a('0x58')]['id']}})['then'](handleEntityNotFound(_0x44f360,null))[_0x323a('0x13')](function(_0x440a8f){if(_0x440a8f){return _0x440a8f[_0x323a('0x12b')](_0x6300a6[_0x323a('0x57')]['ids'],_['omit'](_0x6300a6['body'],[_0x323a('0x5b'),'id'])||{})[_0x323a('0x11a')](function(){for(var _0x488667=0x0;_0x488667<_0x6300a6[_0x323a('0x57')][_0x323a('0x5b')]['length'];_0x488667+=0x1){socket[_0x323a('0xa7')]('user_has_whatsapp_interactions:save',{'WhatsappInteractionId':Number(_0x6300a6['body'][_0x323a('0x5b')][_0x488667]),'UserId':Number(_0x6300a6[_0x323a('0x58')]['id'])});}return _0x6300a6[_0x323a('0x57')][_0x323a('0x5b')];});}})[_0x323a('0x13')](respondWithResult(_0x44f360,null))['catch'](handleError(_0x44f360,null));};exports[_0x323a('0x12c')]=function(_0x47e746,_0x32a435){return db[_0x323a('0x34')][_0x323a('0x30')]({'where':{'id':_0x47e746['params']['id']}})['then'](handleEntityNotFound(_0x32a435,null))['then'](function(_0x249a81){if(_0x249a81){return _0x249a81[_0x323a('0x12c')](_0x47e746[_0x323a('0x3b')][_0x323a('0x5b')]);}})['then'](respondWithStatusCode(_0x32a435,null))['catch'](handleError(_0x32a435,null));};exports[_0x323a('0x12d')]=function(_0xdc8f74,_0xf212){var _0x3536b6={};var _0x748593={};var _0x473749;var _0xe4bd23;return db['User'][_0x323a('0x8f')]({'where':{'id':_0xdc8f74[_0x323a('0x58')]['id']}})['then'](handleEntityNotFound(_0xf212,null))[_0x323a('0x13')](function(_0x4bfc59){if(_0x4bfc59){_0x473749=_0x4bfc59;_0x748593[_0x323a('0x4c')]=_['keys'](db[_0x323a('0x12e')]['rawAttributes']);_0x748593[_0x323a('0x3b')]=_[_0x323a('0x48')](_0xdc8f74[_0x323a('0x3b')]);_0x748593[_0x323a('0x4a')]=_['intersection'](_0x748593[_0x323a('0x4c')],_0x748593['query']);_0x3536b6[_0x323a('0x3d')]=_[_0x323a('0x4b')](_0x748593[_0x323a('0x4c')],qs[_0x323a('0x4d')](_0xdc8f74[_0x323a('0x3b')][_0x323a('0x4d')]));_0x3536b6['attributes']=_0x3536b6[_0x323a('0x3d')][_0x323a('0x4e')]?_0x3536b6[_0x323a('0x3d')]:_0x748593['model'];_0x3536b6['order']=qs[_0x323a('0xbf')](_0xdc8f74[_0x323a('0x3b')]['sort']);_0x3536b6[_0x323a('0x3a')]=qs['filters'](_[_0x323a('0xc0')](_0xdc8f74[_0x323a('0x3b')],_0x748593['filters']));if(_0xdc8f74[_0x323a('0x3b')][_0x323a('0x37')]){_0x3536b6[_0x323a('0x3a')]=_[_0x323a('0x50')](_0x3536b6['where'],{'$or':_[_0x323a('0xc6')](_0x3536b6[_0x323a('0x3d')],function(_0x1be75f){var _0x17cdb9={};_0x17cdb9[_0x1be75f]={'$like':'%'+_0xdc8f74[_0x323a('0x3b')][_0x323a('0x37')]+'%'};return _0x17cdb9;})});}_0x3536b6=_[_0x323a('0x50')]({},_0x3536b6,_0xdc8f74[_0x323a('0x51')]);return _0x473749[_0x323a('0x12d')](_0x3536b6);}})[_0x323a('0x13')](function(_0x247bbc){if(_0x247bbc){_0xe4bd23=_0x247bbc[_0x323a('0x4e')];if(!_0xdc8f74['query'][_0x323a('0xc1')]('nolimit')){_0x3536b6['limit']=qs['limit'](_0xdc8f74[_0x323a('0x3b')][_0x323a('0x22')]);_0x3536b6['offset']=qs[_0x323a('0x21')](_0xdc8f74[_0x323a('0x3b')]['offset']);}return _0x473749[_0x323a('0x12d')](_0x3536b6);}})['then'](function(_0x321975){if(_0x321975){return _0x321975?{'count':_0xe4bd23,'rows':_0x321975}:null;}})[_0x323a('0x13')](respondWithResult(_0xf212,null))[_0x323a('0x1a')](handleError(_0xf212,null));};exports[_0x323a('0x12f')]=function(_0xc5a673,_0x58ccc7){var _0x4c5146={};var _0x552b28={};var _0x2cf275;var _0x92c774;return db[_0x323a('0x34')]['findOne']({'where':{'id':_0xc5a673[_0x323a('0x58')]['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x58ccc7,null))['then'](function(_0x1de3d0){if(_0x1de3d0){_0x2cf275=_0x1de3d0;_0x552b28['model']=_[_0x323a('0x48')](db['FaxAccount'][_0x323a('0x49')]);_0x552b28[_0x323a('0x3b')]=_[_0x323a('0x48')](_0xc5a673[_0x323a('0x3b')]);_0x552b28[_0x323a('0x4a')]=_[_0x323a('0x4b')](_0x552b28[_0x323a('0x4c')],_0x552b28[_0x323a('0x3b')]);_0x4c5146[_0x323a('0x3d')]=_['intersection'](_0x552b28[_0x323a('0x4c')],qs[_0x323a('0x4d')](_0xc5a673['query'][_0x323a('0x4d')]));_0x4c5146[_0x323a('0x3d')]=_0x4c5146[_0x323a('0x3d')][_0x323a('0x4e')]?_0x4c5146[_0x323a('0x3d')]:_0x552b28[_0x323a('0x4c')];_0x4c5146[_0x323a('0xbe')]=qs[_0x323a('0xbf')](_0xc5a673['query'][_0x323a('0xbf')]);_0x4c5146[_0x323a('0x3a')]=qs[_0x323a('0x4a')](_[_0x323a('0xc0')](_0xc5a673[_0x323a('0x3b')],_0x552b28['filters']));if(_0xc5a673[_0x323a('0x3b')][_0x323a('0x37')]){_0x4c5146[_0x323a('0x3a')]=_[_0x323a('0x50')](_0x4c5146[_0x323a('0x3a')],{'$or':_[_0x323a('0xc6')](_0x4c5146[_0x323a('0x3d')],function(_0x20b5ef){var _0x7bae03={};_0x7bae03[_0x20b5ef]={'$like':'%'+_0xc5a673['query'][_0x323a('0x37')]+'%'};return _0x7bae03;})});}_0x4c5146=_[_0x323a('0x50')]({},_0x4c5146,_0xc5a673[_0x323a('0x51')]);return _0x2cf275['getFaxAccounts'](_0x4c5146);}})[_0x323a('0x13')](function(_0x22017e){if(_0x22017e){_0x92c774=_0x22017e[_0x323a('0x4e')];if(!_0xc5a673['query']['hasOwnProperty']('nolimit')){_0x4c5146[_0x323a('0x22')]=qs['limit'](_0xc5a673[_0x323a('0x3b')][_0x323a('0x22')]);_0x4c5146[_0x323a('0x21')]=qs[_0x323a('0x21')](_0xc5a673[_0x323a('0x3b')][_0x323a('0x21')]);}return _0x2cf275[_0x323a('0x12f')](_0x4c5146);}})[_0x323a('0x13')](function(_0x3295ba){if(_0x3295ba){return _0x3295ba?{'count':_0x92c774,'rows':_0x3295ba}:null;}})[_0x323a('0x13')](respondWithResult(_0x58ccc7,null))[_0x323a('0x1a')](handleError(_0x58ccc7,null));};exports[_0x323a('0x130')]=function(_0x5a8838,_0x4e8530){return db[_0x323a('0x34')][_0x323a('0x30')]({'where':{'id':_0x5a8838[_0x323a('0x58')]['id']}})['then'](handleEntityNotFound(_0x4e8530,null))[_0x323a('0x13')](function(_0x2ad762){if(_0x2ad762){return _0x2ad762['addFaxAccounts'](_0x5a8838[_0x323a('0x57')]['ids'],_[_0x323a('0x5c')](_0x5a8838[_0x323a('0x57')],['ids','id'])||{});}})[_0x323a('0x13')](respondWithResult(_0x4e8530,null))[_0x323a('0x1a')](handleError(_0x4e8530,null));};exports['removeFaxAccounts']=function(_0x3e3bb5,_0x7c2512){return db[_0x323a('0x34')][_0x323a('0x30')]({'where':{'id':_0x3e3bb5[_0x323a('0x58')]['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x7c2512,null))[_0x323a('0x13')](function(_0x4c1527){if(_0x4c1527){return _0x4c1527[_0x323a('0x131')](_0x3e3bb5[_0x323a('0x3b')][_0x323a('0x5b')]);}})['then'](respondWithStatusCode(_0x7c2512,null))[_0x323a('0x1a')](handleError(_0x7c2512,null));};exports[_0x323a('0x132')]=function(_0x55a675,_0x27a49d){var _0x593613={};var _0x49ae0a={};var _0x18b12e;var _0x3d2e5e;return db[_0x323a('0x34')]['findOne']({'where':{'id':_0x55a675[_0x323a('0x58')]['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x27a49d,null))[_0x323a('0x13')](function(_0x5edbb1){if(_0x5edbb1){_0x18b12e=_0x5edbb1;_0x49ae0a[_0x323a('0x4c')]=_[_0x323a('0x48')](db[_0x323a('0x133')]['rawAttributes']);_0x49ae0a[_0x323a('0x3b')]=_[_0x323a('0x48')](_0x55a675[_0x323a('0x3b')]);_0x49ae0a[_0x323a('0x4a')]=_[_0x323a('0x4b')](_0x49ae0a[_0x323a('0x4c')],_0x49ae0a[_0x323a('0x3b')]);_0x593613[_0x323a('0x3d')]=_[_0x323a('0x4b')](_0x49ae0a[_0x323a('0x4c')],qs['fields'](_0x55a675[_0x323a('0x3b')][_0x323a('0x4d')]));_0x593613[_0x323a('0x3d')]=_0x593613[_0x323a('0x3d')][_0x323a('0x4e')]?_0x593613[_0x323a('0x3d')]:_0x49ae0a[_0x323a('0x4c')];_0x593613['order']=qs[_0x323a('0xbf')](_0x55a675[_0x323a('0x3b')]['sort']);_0x593613['where']=qs[_0x323a('0x4a')](_[_0x323a('0xc0')](_0x55a675[_0x323a('0x3b')],_0x49ae0a['filters']));if(_0x55a675[_0x323a('0x3b')][_0x323a('0x37')]){_0x593613[_0x323a('0x3a')]=_[_0x323a('0x50')](_0x593613[_0x323a('0x3a')],{'$or':_[_0x323a('0xc6')](_0x593613[_0x323a('0x3d')],function(_0x32ef05){var _0x14f218={};_0x14f218[_0x32ef05]={'$like':'%'+_0x55a675[_0x323a('0x3b')]['filter']+'%'};return _0x14f218;})});}_0x593613=_['merge']({},_0x593613,_0x55a675[_0x323a('0x51')]);return _0x18b12e[_0x323a('0x132')](_0x593613);}})[_0x323a('0x13')](function(_0x3ac023){if(_0x3ac023){_0x3d2e5e=_0x3ac023[_0x323a('0x4e')];if(!_0x55a675['query'][_0x323a('0xc1')](_0x323a('0xc9'))){_0x593613[_0x323a('0x22')]=qs[_0x323a('0x22')](_0x55a675[_0x323a('0x3b')]['limit']);_0x593613[_0x323a('0x21')]=qs[_0x323a('0x21')](_0x55a675['query'][_0x323a('0x21')]);}return _0x18b12e[_0x323a('0x132')](_0x593613);}})[_0x323a('0x13')](function(_0xbf8c93){if(_0xbf8c93){return _0xbf8c93?{'count':_0x3d2e5e,'rows':_0xbf8c93}:null;}})['then'](respondWithResult(_0x27a49d,null))['catch'](handleError(_0x27a49d,null));};exports['addMailAccounts']=function(_0x2c4c6c,_0x11ef0e){return db[_0x323a('0x34')][_0x323a('0x30')]({'where':{'id':_0x2c4c6c[_0x323a('0x58')]['id']}})['then'](handleEntityNotFound(_0x11ef0e,null))[_0x323a('0x13')](function(_0x3495e6){if(_0x3495e6){return _0x3495e6['addMailAccounts'](_0x2c4c6c['body'][_0x323a('0x5b')],_[_0x323a('0x5c')](_0x2c4c6c['body'],[_0x323a('0x5b'),'id'])||{});}})[_0x323a('0x13')](respondWithResult(_0x11ef0e,null))[_0x323a('0x1a')](handleError(_0x11ef0e,null));};exports['removeMailAccounts']=function(_0x357326,_0x2feae4){return db[_0x323a('0x34')]['find']({'where':{'id':_0x357326[_0x323a('0x58')]['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x2feae4,null))[_0x323a('0x13')](function(_0x3d91e0){if(_0x3d91e0){return _0x3d91e0['removeMailAccounts'](_0x357326[_0x323a('0x3b')]['ids']);}})[_0x323a('0x13')](respondWithStatusCode(_0x2feae4,null))[_0x323a('0x1a')](handleError(_0x2feae4,null));};exports[_0x323a('0x134')]=function(_0x75b477,_0x4ad27f){var _0x5b3f75={};var _0x49c250={};var _0xb23679;var _0x1b1eb6;return db[_0x323a('0x34')][_0x323a('0x8f')]({'where':{'id':_0x75b477[_0x323a('0x58')]['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x4ad27f,null))['then'](function(_0xe5c6a5){if(_0xe5c6a5){_0xb23679=_0xe5c6a5;_0x49c250[_0x323a('0x4c')]=_['keys'](db[_0x323a('0x135')][_0x323a('0x49')]);_0x49c250[_0x323a('0x3b')]=_[_0x323a('0x48')](_0x75b477[_0x323a('0x3b')]);_0x49c250[_0x323a('0x4a')]=_[_0x323a('0x4b')](_0x49c250[_0x323a('0x4c')],_0x49c250[_0x323a('0x3b')]);_0x5b3f75[_0x323a('0x3d')]=_[_0x323a('0x4b')](_0x49c250[_0x323a('0x4c')],qs[_0x323a('0x4d')](_0x75b477[_0x323a('0x3b')][_0x323a('0x4d')]));_0x5b3f75['attributes']=_0x5b3f75[_0x323a('0x3d')]['length']?_0x5b3f75[_0x323a('0x3d')]:_0x49c250[_0x323a('0x4c')];_0x5b3f75['order']=qs[_0x323a('0xbf')](_0x75b477[_0x323a('0x3b')][_0x323a('0xbf')]);_0x5b3f75[_0x323a('0x3a')]=qs['filters'](_[_0x323a('0xc0')](_0x75b477['query'],_0x49c250['filters']));if(_0x75b477[_0x323a('0x3b')]['filter']){_0x5b3f75[_0x323a('0x3a')]=_[_0x323a('0x50')](_0x5b3f75[_0x323a('0x3a')],{'$or':_[_0x323a('0xc6')](_0x5b3f75[_0x323a('0x3d')],function(_0x141cc4){var _0x2c40da={};_0x2c40da[_0x141cc4]={'$like':'%'+_0x75b477[_0x323a('0x3b')][_0x323a('0x37')]+'%'};return _0x2c40da;})});}_0x5b3f75=_[_0x323a('0x50')]({},_0x5b3f75,_0x75b477['options']);return _0xb23679[_0x323a('0x134')](_0x5b3f75);}})['then'](function(_0x52532c){if(_0x52532c){_0x1b1eb6=_0x52532c[_0x323a('0x4e')];if(!_0x75b477[_0x323a('0x3b')]['hasOwnProperty'](_0x323a('0xc9'))){_0x5b3f75['limit']=qs[_0x323a('0x22')](_0x75b477[_0x323a('0x3b')][_0x323a('0x22')]);_0x5b3f75[_0x323a('0x21')]=qs['offset'](_0x75b477[_0x323a('0x3b')][_0x323a('0x21')]);}return _0xb23679[_0x323a('0x134')](_0x5b3f75);}})[_0x323a('0x13')](function(_0x25eedd){if(_0x25eedd){return _0x25eedd?{'count':_0x1b1eb6,'rows':_0x25eedd}:null;}})[_0x323a('0x13')](respondWithResult(_0x4ad27f,null))[_0x323a('0x1a')](handleError(_0x4ad27f,null));};exports['addOpenchannelAccounts']=function(_0x143bc9,_0x513977){return db['User'][_0x323a('0x30')]({'where':{'id':_0x143bc9[_0x323a('0x58')]['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x513977,null))[_0x323a('0x13')](function(_0x1cd1be){if(_0x1cd1be){return _0x1cd1be[_0x323a('0x136')](_0x143bc9[_0x323a('0x57')][_0x323a('0x5b')],_[_0x323a('0x5c')](_0x143bc9[_0x323a('0x57')],[_0x323a('0x5b'),'id'])||{});}})[_0x323a('0x13')](respondWithResult(_0x513977,null))[_0x323a('0x1a')](handleError(_0x513977,null));};exports[_0x323a('0x137')]=function(_0x5ee73b,_0x5c31a3){return db['User']['find']({'where':{'id':_0x5ee73b[_0x323a('0x58')]['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x5c31a3,null))[_0x323a('0x13')](function(_0x346811){if(_0x346811){return _0x346811[_0x323a('0x137')](_0x5ee73b[_0x323a('0x3b')][_0x323a('0x5b')]);}})[_0x323a('0x13')](respondWithStatusCode(_0x5c31a3,null))[_0x323a('0x1a')](handleError(_0x5c31a3,null));};exports[_0x323a('0x138')]=function(_0x50b455,_0x26994a){var _0x9c67aa={};var _0x198146={};var _0x2c92e0;var _0x588675;return db[_0x323a('0x34')]['findOne']({'where':{'id':_0x50b455[_0x323a('0x58')]['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x26994a,null))['then'](function(_0x5a093d){if(_0x5a093d){_0x2c92e0=_0x5a093d;_0x198146[_0x323a('0x4c')]=_['keys'](db['SmsAccount']['rawAttributes']);_0x198146[_0x323a('0x3b')]=_[_0x323a('0x48')](_0x50b455[_0x323a('0x3b')]);_0x198146[_0x323a('0x4a')]=_[_0x323a('0x4b')](_0x198146[_0x323a('0x4c')],_0x198146[_0x323a('0x3b')]);_0x9c67aa['attributes']=_[_0x323a('0x4b')](_0x198146['model'],qs[_0x323a('0x4d')](_0x50b455[_0x323a('0x3b')][_0x323a('0x4d')]));_0x9c67aa[_0x323a('0x3d')]=_0x9c67aa['attributes'][_0x323a('0x4e')]?_0x9c67aa['attributes']:_0x198146[_0x323a('0x4c')];_0x9c67aa[_0x323a('0xbe')]=qs[_0x323a('0xbf')](_0x50b455['query'][_0x323a('0xbf')]);_0x9c67aa[_0x323a('0x3a')]=qs['filters'](_[_0x323a('0xc0')](_0x50b455['query'],_0x198146[_0x323a('0x4a')]));if(_0x50b455['query'][_0x323a('0x37')]){_0x9c67aa[_0x323a('0x3a')]=_[_0x323a('0x50')](_0x9c67aa['where'],{'$or':_[_0x323a('0xc6')](_0x9c67aa[_0x323a('0x3d')],function(_0x44cfd1){var _0xd86d80={};_0xd86d80[_0x44cfd1]={'$like':'%'+_0x50b455[_0x323a('0x3b')]['filter']+'%'};return _0xd86d80;})});}_0x9c67aa=_[_0x323a('0x50')]({},_0x9c67aa,_0x50b455[_0x323a('0x51')]);return _0x2c92e0[_0x323a('0x138')](_0x9c67aa);}})[_0x323a('0x13')](function(_0x15429d){if(_0x15429d){_0x588675=_0x15429d[_0x323a('0x4e')];if(!_0x50b455[_0x323a('0x3b')][_0x323a('0xc1')]('nolimit')){_0x9c67aa['limit']=qs[_0x323a('0x22')](_0x50b455[_0x323a('0x3b')]['limit']);_0x9c67aa[_0x323a('0x21')]=qs[_0x323a('0x21')](_0x50b455[_0x323a('0x3b')][_0x323a('0x21')]);}return _0x2c92e0[_0x323a('0x138')](_0x9c67aa);}})[_0x323a('0x13')](function(_0x71a222){if(_0x71a222){return _0x71a222?{'count':_0x588675,'rows':_0x71a222}:null;}})[_0x323a('0x13')](respondWithResult(_0x26994a,null))[_0x323a('0x1a')](handleError(_0x26994a,null));};exports[_0x323a('0x139')]=function(_0x1baf1f,_0x2182a6){return db['User'][_0x323a('0x30')]({'where':{'id':_0x1baf1f['params']['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x2182a6,null))['then'](function(_0x3cbdb5){if(_0x3cbdb5){return _0x3cbdb5[_0x323a('0x139')](_0x1baf1f[_0x323a('0x57')][_0x323a('0x5b')],_[_0x323a('0x5c')](_0x1baf1f['body'],[_0x323a('0x5b'),'id'])||{});}})[_0x323a('0x13')](respondWithResult(_0x2182a6,null))[_0x323a('0x1a')](handleError(_0x2182a6,null));};exports['removeSmsAccounts']=function(_0x5641f3,_0xfa676d){return db[_0x323a('0x34')]['find']({'where':{'id':_0x5641f3[_0x323a('0x58')]['id']}})[_0x323a('0x13')](handleEntityNotFound(_0xfa676d,null))['then'](function(_0x5ca9b2){if(_0x5ca9b2){return _0x5ca9b2['removeSmsAccounts'](_0x5641f3['query']['ids']);}})[_0x323a('0x13')](respondWithStatusCode(_0xfa676d,null))[_0x323a('0x1a')](handleError(_0xfa676d,null));};exports[_0x323a('0x13a')]=function(_0x20d153,_0x19abfd){var _0x4f22f3={};var _0x5e18b5={};var _0x2ead57;var _0x3e547e;return db['User'][_0x323a('0x8f')]({'where':{'id':_0x20d153[_0x323a('0x58')]['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x19abfd,null))[_0x323a('0x13')](function(_0xa1b2fb){if(_0xa1b2fb){_0x2ead57=_0xa1b2fb;_0x5e18b5[_0x323a('0x4c')]=_[_0x323a('0x48')](db[_0x323a('0x13b')]['rawAttributes']);_0x5e18b5[_0x323a('0x3b')]=_[_0x323a('0x48')](_0x20d153[_0x323a('0x3b')]);_0x5e18b5[_0x323a('0x4a')]=_[_0x323a('0x4b')](_0x5e18b5[_0x323a('0x4c')],_0x5e18b5[_0x323a('0x3b')]);_0x4f22f3['attributes']=_[_0x323a('0x4b')](_0x5e18b5[_0x323a('0x4c')],qs[_0x323a('0x4d')](_0x20d153[_0x323a('0x3b')][_0x323a('0x4d')]));_0x4f22f3[_0x323a('0x3d')]=_0x4f22f3['attributes'][_0x323a('0x4e')]?_0x4f22f3[_0x323a('0x3d')]:_0x5e18b5[_0x323a('0x4c')];_0x4f22f3['order']=qs[_0x323a('0xbf')](_0x20d153[_0x323a('0x3b')][_0x323a('0xbf')]);_0x4f22f3[_0x323a('0x3a')]=qs[_0x323a('0x4a')](_[_0x323a('0xc0')](_0x20d153[_0x323a('0x3b')],_0x5e18b5[_0x323a('0x4a')]));if(_0x20d153[_0x323a('0x3b')][_0x323a('0x37')]){_0x4f22f3[_0x323a('0x3a')]=_[_0x323a('0x50')](_0x4f22f3[_0x323a('0x3a')],{'$or':_[_0x323a('0xc6')](_0x4f22f3[_0x323a('0x3d')],function(_0x3686bc){var _0x58e22f={};_0x58e22f[_0x3686bc]={'$like':'%'+_0x20d153['query']['filter']+'%'};return _0x58e22f;})});}_0x4f22f3=_[_0x323a('0x50')]({},_0x4f22f3,_0x20d153[_0x323a('0x51')]);return _0x2ead57[_0x323a('0x13a')](_0x4f22f3);}})[_0x323a('0x13')](function(_0x2eee89){if(_0x2eee89){_0x3e547e=_0x2eee89[_0x323a('0x4e')];if(!_0x20d153[_0x323a('0x3b')][_0x323a('0xc1')](_0x323a('0xc9'))){_0x4f22f3[_0x323a('0x22')]=qs[_0x323a('0x22')](_0x20d153[_0x323a('0x3b')]['limit']);_0x4f22f3[_0x323a('0x21')]=qs[_0x323a('0x21')](_0x20d153[_0x323a('0x3b')][_0x323a('0x21')]);}return _0x2ead57[_0x323a('0x13a')](_0x4f22f3);}})[_0x323a('0x13')](function(_0x41b7d6){if(_0x41b7d6){return _0x41b7d6?{'count':_0x3e547e,'rows':_0x41b7d6}:null;}})[_0x323a('0x13')](respondWithResult(_0x19abfd,null))['catch'](handleError(_0x19abfd,null));};exports['addChatWebsites']=function(_0x86f603,_0x41a8d2){return db['User'][_0x323a('0x30')]({'where':{'id':_0x86f603['params']['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x41a8d2,null))[_0x323a('0x13')](function(_0x1bcede){if(_0x1bcede){return _0x1bcede['addChatWebsites'](_0x86f603[_0x323a('0x57')][_0x323a('0x5b')],_['omit'](_0x86f603[_0x323a('0x57')],['ids','id'])||{});}})[_0x323a('0x13')](respondWithResult(_0x41a8d2,null))[_0x323a('0x1a')](handleError(_0x41a8d2,null));};exports[_0x323a('0x13c')]=function(_0x287a2f,_0x51d651){return db['User'][_0x323a('0x30')]({'where':{'id':_0x287a2f[_0x323a('0x58')]['id']}})['then'](handleEntityNotFound(_0x51d651,null))[_0x323a('0x13')](function(_0x380f91){if(_0x380f91){return _0x380f91[_0x323a('0x13c')](_0x287a2f[_0x323a('0x3b')][_0x323a('0x5b')]);}})[_0x323a('0x13')](respondWithStatusCode(_0x51d651,null))['catch'](handleError(_0x51d651,null));};exports['getWhatsappAccounts']=function(_0x11b711,_0x491dce){var _0x1198fd={};var _0x21dbed={};var _0x95f23f;var _0x58955a;return db[_0x323a('0x34')][_0x323a('0x8f')]({'where':{'id':_0x11b711[_0x323a('0x58')]['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x491dce,null))[_0x323a('0x13')](function(_0x36d6f5){if(_0x36d6f5){_0x95f23f=_0x36d6f5;_0x21dbed['model']=_[_0x323a('0x48')](db[_0x323a('0x13d')]['rawAttributes']);_0x21dbed[_0x323a('0x3b')]=_[_0x323a('0x48')](_0x11b711[_0x323a('0x3b')]);_0x21dbed[_0x323a('0x4a')]=_[_0x323a('0x4b')](_0x21dbed[_0x323a('0x4c')],_0x21dbed[_0x323a('0x3b')]);_0x1198fd['attributes']=_[_0x323a('0x4b')](_0x21dbed[_0x323a('0x4c')],qs['fields'](_0x11b711[_0x323a('0x3b')][_0x323a('0x4d')]));_0x1198fd['attributes']=_0x1198fd['attributes']['length']?_0x1198fd[_0x323a('0x3d')]:_0x21dbed[_0x323a('0x4c')];_0x1198fd[_0x323a('0xbe')]=qs[_0x323a('0xbf')](_0x11b711[_0x323a('0x3b')][_0x323a('0xbf')]);_0x1198fd['where']=qs[_0x323a('0x4a')](_[_0x323a('0xc0')](_0x11b711[_0x323a('0x3b')],_0x21dbed['filters']));if(_0x11b711[_0x323a('0x3b')][_0x323a('0x37')]){_0x1198fd['where']=_[_0x323a('0x50')](_0x1198fd['where'],{'$or':_[_0x323a('0xc6')](_0x1198fd[_0x323a('0x3d')],function(_0x517cab){var _0x11709f={};_0x11709f[_0x517cab]={'$like':'%'+_0x11b711[_0x323a('0x3b')][_0x323a('0x37')]+'%'};return _0x11709f;})});}_0x1198fd=_[_0x323a('0x50')]({},_0x1198fd,_0x11b711[_0x323a('0x51')]);return _0x95f23f[_0x323a('0x13e')](_0x1198fd);}})['then'](function(_0xbadf50){if(_0xbadf50){_0x58955a=_0xbadf50['length'];if(!_0x11b711['query']['hasOwnProperty'](_0x323a('0xc9'))){_0x1198fd[_0x323a('0x22')]=qs[_0x323a('0x22')](_0x11b711[_0x323a('0x3b')]['limit']);_0x1198fd['offset']=qs['offset'](_0x11b711[_0x323a('0x3b')][_0x323a('0x21')]);}return _0x95f23f[_0x323a('0x13e')](_0x1198fd);}})[_0x323a('0x13')](function(_0x475f67){if(_0x475f67){return _0x475f67?{'count':_0x58955a,'rows':_0x475f67}:null;}})[_0x323a('0x13')](respondWithResult(_0x491dce,null))[_0x323a('0x1a')](handleError(_0x491dce,null));};exports[_0x323a('0x13f')]=function(_0x1f292a,_0x18d91c){return db['User'][_0x323a('0x30')]({'where':{'id':_0x1f292a[_0x323a('0x58')]['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x18d91c,null))[_0x323a('0x13')](function(_0xa3b70e){if(_0xa3b70e){return _0xa3b70e[_0x323a('0x13f')](_0x1f292a[_0x323a('0x57')]['ids'],_[_0x323a('0x5c')](_0x1f292a[_0x323a('0x57')],[_0x323a('0x5b'),'id'])||{});}})['then'](respondWithResult(_0x18d91c,null))[_0x323a('0x1a')](handleError(_0x18d91c,null));};exports[_0x323a('0x140')]=function(_0x3fb73e,_0x3e37aa){return db[_0x323a('0x34')]['find']({'where':{'id':_0x3fb73e[_0x323a('0x58')]['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x3e37aa,null))['then'](function(_0xfaed29){if(_0xfaed29){return _0xfaed29[_0x323a('0x140')](_0x3fb73e[_0x323a('0x3b')][_0x323a('0x5b')]);}})[_0x323a('0x13')](respondWithStatusCode(_0x3e37aa,null))['catch'](handleError(_0x3e37aa,null));};exports[_0x323a('0x141')]=function(_0xf905e1,_0x2e3d8b){var _0x48ae55={};var _0x2ba88c={};var _0x3a27d9;var _0x511e6c;return db[_0x323a('0x34')][_0x323a('0x8f')]({'where':{'id':_0xf905e1[_0x323a('0x58')]['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x2e3d8b,null))[_0x323a('0x13')](function(_0x182034){if(_0x182034){_0x3a27d9=_0x182034;_0x2ba88c[_0x323a('0x4c')]=_[_0x323a('0x48')](db[_0x323a('0x142')]['rawAttributes']);_0x2ba88c[_0x323a('0x3b')]=_[_0x323a('0x48')](_0xf905e1[_0x323a('0x3b')]);_0x2ba88c[_0x323a('0x4a')]=_['intersection'](_0x2ba88c[_0x323a('0x4c')],_0x2ba88c[_0x323a('0x3b')]);_0x48ae55['attributes']=_['intersection'](_0x2ba88c[_0x323a('0x4c')],qs[_0x323a('0x4d')](_0xf905e1['query']['fields']));_0x48ae55[_0x323a('0x3d')]=_0x48ae55['attributes'][_0x323a('0x4e')]?_0x48ae55[_0x323a('0x3d')]:_0x2ba88c['model'];_0x48ae55['order']=qs['sort'](_0xf905e1[_0x323a('0x3b')][_0x323a('0xbf')]);_0x48ae55[_0x323a('0x3a')]=qs[_0x323a('0x4a')](_[_0x323a('0xc0')](_0xf905e1[_0x323a('0x3b')],_0x2ba88c[_0x323a('0x4a')]));if(_0xf905e1[_0x323a('0x3b')][_0x323a('0x37')]){_0x48ae55['where']=_[_0x323a('0x50')](_0x48ae55[_0x323a('0x3a')],{'$or':_[_0x323a('0xc6')](_0x48ae55['attributes'],function(_0x21a87c){var _0x219534={};_0x219534[_0x21a87c]={'$like':'%'+_0xf905e1[_0x323a('0x3b')][_0x323a('0x37')]+'%'};return _0x219534;})});}_0x48ae55=_[_0x323a('0x50')]({},_0x48ae55,_0xf905e1[_0x323a('0x51')]);return _0x3a27d9[_0x323a('0x141')](_0x48ae55);}})['then'](function(_0x1225c0){if(_0x1225c0){_0x511e6c=_0x1225c0[_0x323a('0x4e')];if(!_0xf905e1['query'][_0x323a('0xc1')](_0x323a('0xc9'))){_0x48ae55['limit']=qs[_0x323a('0x22')](_0xf905e1[_0x323a('0x3b')][_0x323a('0x22')]);_0x48ae55['offset']=qs[_0x323a('0x21')](_0xf905e1[_0x323a('0x3b')]['offset']);}return _0x3a27d9['getSquareProjects'](_0x48ae55);}})['then'](function(_0x48ef28){if(_0x48ef28){return _0x48ef28?{'count':_0x511e6c,'rows':_0x48ef28}:null;}})['then'](respondWithResult(_0x2e3d8b,null))[_0x323a('0x1a')](handleError(_0x2e3d8b,null));};exports[_0x323a('0x143')]=function(_0x184e3d,_0x2785fc){return db['User'][_0x323a('0x30')]({'where':{'id':_0x184e3d['params']['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x2785fc,null))['then'](function(_0x33e041){if(_0x33e041){return _0x33e041['addSquareProjects'](_0x184e3d['body'][_0x323a('0x5b')],_[_0x323a('0x5c')](_0x184e3d[_0x323a('0x57')],['ids','id'])||{});}})['then'](respondWithResult(_0x2785fc,null))[_0x323a('0x1a')](handleError(_0x2785fc,null));};exports[_0x323a('0x144')]=function(_0x28637d,_0x1bd0c3){return db[_0x323a('0x34')][_0x323a('0x30')]({'where':{'id':_0x28637d[_0x323a('0x58')]['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x1bd0c3,null))['then'](function(_0x442c7b){if(_0x442c7b){return _0x442c7b[_0x323a('0x144')](_0x28637d['query'][_0x323a('0x5b')]);}})[_0x323a('0x13')](respondWithStatusCode(_0x1bd0c3,null))[_0x323a('0x1a')](handleError(_0x1bd0c3,null));};exports['getScheduledCalls']=function(_0x1d9934,_0x88f98c){var _0x3c9dd0={},_0x2ae5be={},_0x22f1f4={'count':0x0,'rows':[]};var _0x39f6cd=db['CmHopper'][_0x323a('0x49')];_0x2ae5be[_0x323a('0x4c')]=_['keys'](_0x39f6cd);_0x2ae5be[_0x323a('0x3b')]=_['keys'](_0x1d9934[_0x323a('0x3b')]);_0x2ae5be[_0x323a('0x4a')]=_[_0x323a('0x4b')](_0x2ae5be[_0x323a('0x4c')],_0x2ae5be['query']);_0x2ae5be[_0x323a('0x4a')]=_[_0x323a('0xee')](_0x2ae5be['filters'],[_0x323a('0x145'),'$or',_0x323a('0x146'),'$gte',_0x323a('0x147'),'$lte',_0x323a('0x148'),_0x323a('0x149'),'$not','$between',_0x323a('0x14a'),_0x323a('0x14b'),'$notIn',_0x323a('0x14c'),_0x323a('0x14d'),_0x323a('0x14e'),_0x323a('0x14f'),'$like',_0x323a('0x150'),_0x323a('0x151'),_0x323a('0x152'),_0x323a('0x153')]);_0x3c9dd0[_0x323a('0x3d')]=_['intersection'](_0x2ae5be[_0x323a('0x4c')],qs[_0x323a('0x4d')](_0x1d9934['query'][_0x323a('0x4d')]));_0x3c9dd0[_0x323a('0x3d')]=_0x3c9dd0[_0x323a('0x3d')]['length']?_0x3c9dd0[_0x323a('0x3d')]:_0x2ae5be[_0x323a('0x4c')];if(!_0x1d9934[_0x323a('0x3b')]['hasOwnProperty'](_0x323a('0xc9'))){_0x3c9dd0[_0x323a('0x22')]=qs[_0x323a('0x22')](_0x1d9934['query'][_0x323a('0x22')]);_0x3c9dd0[_0x323a('0x21')]=qs[_0x323a('0x21')](_0x1d9934[_0x323a('0x3b')][_0x323a('0x21')]);}_0x3c9dd0['order']=qs[_0x323a('0xbf')](_0x1d9934[_0x323a('0x3b')][_0x323a('0xbf')]);_0x3c9dd0[_0x323a('0x3a')]=qs[_0x323a('0x4a')](_[_0x323a('0xc0')](_0x1d9934[_0x323a('0x3b')],_0x2ae5be['filters']));if(_0x1d9934[_0x323a('0x3b')]['filter']){_0x3c9dd0['where']=_[_0x323a('0x50')](_0x3c9dd0['where'],{'$or':_[_0x323a('0xc6')](_0x3c9dd0[_0x323a('0x3d')],function(_0x35fe9e){var _0x52896e={};_0x52896e[_0x35fe9e]={'$like':'%'+_0x1d9934[_0x323a('0x3b')][_0x323a('0x37')]+'%'};return _0x52896e;})});}_0x3c9dd0['where']={'$and':[_0x3c9dd0[_0x323a('0x3a')],{'$or':[{'UserId':_0x1d9934[_0x323a('0x58')]['id']},{'OwnerId':_0x1d9934[_0x323a('0x58')]['id']}]}]};_0x3c9dd0=_[_0x323a('0x50')]({},_0x3c9dd0,_0x1d9934[_0x323a('0x51')]);var _0x581b1e={'where':_0x3c9dd0[_0x323a('0x3a')]};return db['CmHopper'][_0x323a('0x20')](_0x581b1e)['then'](function(_0x2a0ab2){_0x22f1f4[_0x323a('0x20')]=_0x2a0ab2;if(_0x1d9934['query'][_0x323a('0x4f')]){_0x3c9dd0[_0x323a('0x3c')]=[{'attributes':['id',_0x323a('0x154'),_0x323a('0x155'),_0x323a('0xdb')],'model':db[_0x323a('0xbd')],'as':'Contact'},{'attributes':['id',_0x323a('0x31'),_0x323a('0x156')],'model':db[_0x323a('0x157')],'as':_0x323a('0xc7')}];}return db[_0x323a('0x158')][_0x323a('0x3f')](_0x3c9dd0);})[_0x323a('0x13')](function(_0x384bf8){_0x22f1f4[_0x323a('0x40')]=_0x384bf8;return _0x22f1f4;})['then'](respondWithFilteredResult(_0x88f98c,_0x3c9dd0))[_0x323a('0x1a')](handleError(_0x88f98c,null));};exports[_0x323a('0x159')]=function(_0x2b936b,_0x1dda50){if(!_[_0x323a('0x61')](_0x2b936b[_0x323a('0x76')]['id'])&&(_0x2b936b['user']['role']==_0x323a('0x79')||_0x2b936b['user'][_0x323a('0x2f')]==_0x323a('0x76'))){return db[_0x323a('0x34')]['findOne']({'where':{'id':_0x2b936b[_0x323a('0x58')]['id']},'raw':!![]})[_0x323a('0x13')](function(_0x226e15){return authService[_0x323a('0x15a')](_0x226e15);})[_0x323a('0x13')](function(_0x56c4eb){if(_0x56c4eb){return _0x1dda50[_0x323a('0x1d')](0xc8)[_0x323a('0x1e')]({'api_key':_0x56c4eb[_0x323a('0x15b')]});}else{return _0x1dda50[_0x323a('0x1d')](0xcc)['json']({'message':'No\x20API\x20access\x20key\x20found!'});}})[_0x323a('0x1a')](handleError(_0x1dda50,0x193));}else{return _0x1dda50[_0x323a('0x1d')](0x191)[_0x323a('0x1e')]({'message':_0x323a('0x15c')});}};exports[_0x323a('0x15d')]=function(_0x2e1ece,_0x2d4c29){if(!_['isNil'](_0x2e1ece[_0x323a('0x76')]['id'])&&(_0x2e1ece[_0x323a('0x76')]['role']=='admin'||_0x2e1ece[_0x323a('0x76')][_0x323a('0x2f')]=='user')){return db[_0x323a('0x34')]['find']({'where':{'id':_0x2e1ece[_0x323a('0x58')]['id']}})[_0x323a('0x13')](function(_0x5c47c9){return authService[_0x323a('0x15e')](_0x5c47c9);})[_0x323a('0x13')](function(_0x388605){return db[_0x323a('0x34')][_0x323a('0x24')]({'apiKeyIat':_0x388605[_0x323a('0x15f')],'apiKeyNonce':_0x388605[_0x323a('0x160')]},{'where':{'id':_0x2e1ece[_0x323a('0x58')]['id']}})[_0x323a('0x13')](function(){return _0x2d4c29[_0x323a('0x1d')](0xc8)['json']({'api_key':_0x388605[_0x323a('0x15b')]});});})['catch'](handleError(_0x2d4c29,0x193));}else{return _0x2d4c29[_0x323a('0x1d')](0x191)[_0x323a('0x1e')]({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports['removeApiKey']=function(_0x377e23,_0x2d41d6){if(!_[_0x323a('0x61')](_0x377e23[_0x323a('0x76')]['id'])&&(_0x377e23[_0x323a('0x76')]['role']==_0x323a('0x79')||_0x377e23[_0x323a('0x76')][_0x323a('0x2f')]==_0x323a('0x76'))){return db['User'][_0x323a('0x30')]({'where':{'id':_0x377e23[_0x323a('0x58')]['id']}})[_0x323a('0x13')](handleEntityNotFound(_0x2d41d6,null))[_0x323a('0x13')](function(_0x5d42e4){if(_0x5d42e4&&_0x5d42e4[_0x323a('0x161')]&&_0x5d42e4[_0x323a('0x162')])return _0x5d42e4;else throw{'message':_0x323a('0x163')};})[_0x323a('0x13')](function(_0x35ae76){return db[_0x323a('0x34')]['update']({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x377e23[_0x323a('0x58')]['id']}});})[_0x323a('0x13')](respondWithStatusCode(_0x2d41d6,0xc8))[_0x323a('0x1a')](handleError(_0x2d41d6,0x193));}else{return _0x2d41d6[_0x323a('0x1d')](0x191)[_0x323a('0x1e')]({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports['whoami']=function(_0x3fb815,_0x7cb456){var _0x5deb53=_0x3fb815['user']['get']({'plain':!![]});if(!_0x5deb53){return _0x7cb456[_0x323a('0x1d')](0x191)[_0x323a('0x118')](_0x323a('0x164'));}else{return _0x7cb456[_0x323a('0x1d')](0xc8)[_0x323a('0x1e')](_0x5deb53);}};exports[_0x323a('0x165')]=function(_0x47ad32,_0x475362){var _0x29dcb2={'offset':0x0},_0x36cc82={'count':0x0,'rows':[]};Promise[_0x323a('0xf0')]()[_0x323a('0x13')](function(){if(!_0x47ad32['query'][_0x323a('0x37')]&&!_0x47ad32['query'][_0x323a('0x166')]&&!_0x47ad32['query'][_0x323a('0x167')])return[];return Promise[_0x323a('0xf0')]()['then'](function(){var _0x387051=[];if(!_['isEmpty'](_0x47ad32[_0x323a('0x3b')][_0x323a('0x166')])){_0x387051[_0x323a('0x3e')](db['Team'][_0x323a('0x3f')]({'attributes':['id',_0x323a('0x31')],'where':{'id':_0x47ad32['query']['teams']}}));}if(!_['isEmpty'](_0x47ad32[_0x323a('0x3b')][_0x323a('0x167')])){_0x387051[_0x323a('0x3e')](db[_0x323a('0x157')][_0x323a('0x3f')]({'attributes':['id',_0x323a('0x31')],'type':_0x323a('0x168'),'where':{'id':_0x47ad32[_0x323a('0x3b')][_0x323a('0x167')]}}));}return Promise['all'](_0x387051);})[_0x323a('0x13')](function(_0x154245){var _0x2f093a=_[_0x323a('0x10c')](_0x154245)[_0x323a('0xc6')](function(_0x1643e6){return _0x1643e6[_0x323a('0x169')]({'attributes':['id',_0x323a('0x31'),_0x323a('0x5d'),_0x323a('0x98')],'raw':!![]});});return Promise[_0x323a('0x45')](_0x2f093a);})[_0x323a('0x13')](function(_0x353b7c){var _0x356aaf=_[_0x323a('0x10c')](_0x353b7c);if(!_0x47ad32[_0x323a('0x3b')][_0x323a('0x37')])return _0x356aaf;if(_[_0x323a('0x85')](_0x356aaf)){return db[_0x323a('0x34')][_0x323a('0x3f')]({'attributes':['id',_0x323a('0x31'),_0x323a('0x5d'),_0x323a('0x98')],'where':{'role':'agent','$or':[db['sequelize'][_0x323a('0x3a')](db[_0x323a('0x63')]['fn']('lower',db['sequelize'][_0x323a('0x16a')](_0x323a('0x31'))),{'$like':'%'+_0x47ad32['query'][_0x323a('0x37')]['toLowerCase']()+'%'}),{'internal':{'$like':'%'+_0x47ad32[_0x323a('0x3b')][_0x323a('0x37')]+'%'}}]},'raw':!![]});}else{return _(_0x356aaf)[_0x323a('0x10c')]()['filter'](function(_0x325cf5){return _0x325cf5[_0x323a('0x31')][_0x323a('0x9d')]()[_0x323a('0x2e')](_0x47ad32[_0x323a('0x3b')]['filter']['toLowerCase']())||_0x325cf5[_0x323a('0x5d')][_0x323a('0x16b')]()[_0x323a('0x2e')](_0x47ad32['query'][_0x323a('0x37')]);})[_0x323a('0x2d')]();}})['then'](function(_0x4a57cb){var _0x48893e=_0x323a('0x31');var _0x53d27d=_0x323a('0x16c');if(_0x47ad32[_0x323a('0x3b')]['sort']){var _0x53d27d=_0x47ad32[_0x323a('0x3b')][_0x323a('0xbf')][0x0]==='-'?_0x323a('0x16d'):_0x323a('0x16c');var _0x48893e=_0x53d27d===_0x323a('0x16c')?_0x47ad32['query'][_0x323a('0xbf')]:_0x47ad32[_0x323a('0x3b')][_0x323a('0xbf')]['substring'](0x1);}return _(_0x4a57cb)[_0x323a('0x16e')]('id')[_0x323a('0x16f')]([function(_0x13ad92){return _0x48893e===_0x323a('0x31')?_0x13ad92[_0x48893e][_0x323a('0x9d')]():_0x13ad92[_0x48893e];}],[_0x53d27d])[_0x323a('0xc6')](function(_0x168a19){return _[_0x323a('0xc0')](_0x168a19,['id',_0x323a('0x31'),_0x323a('0x5d'),_0x323a('0x98')]);})['value']();})[_0x323a('0x13')](function(_0x39e5fc){return client[_0x323a('0x12')]('Agents',_0x47ad32)[_0x323a('0x13')](function(_0x345ff2){if(_0x345ff2[_0x323a('0x17')])throw new Error(_0x323a('0x170'));var _0x29e8ca=_0x345ff2[_0x323a('0x171')];var _0x2b67f2=jayson[_0x323a('0x10')][_0x323a('0x11')]({'port':0x232c});return _0x2b67f2[_0x323a('0x12')](_0x323a('0x28'),_0x47ad32)['then'](function(_0x5e45fa){if(_0x5e45fa['error'])throw new Error(_0x323a('0x172'));var _0x23afb4=_0x5e45fa['result'];return _[_0x323a('0x50')]({},_0x23afb4,_0x29e8ca);});})[_0x323a('0x13')](function(_0x11e1a6){return _['map'](_0x39e5fc,function(_0x387657){var _0x5b5d49=_[_0x323a('0x30')](_0x11e1a6['rows'],['id',_0x387657['id']]);if(!_0x5b5d49||!_0x387657[_0x323a('0x98')]){_0x387657[_0x323a('0x1d')]=_0x323a('0x173');}else if(_0x5b5d49[_0x323a('0x99')]){_0x387657[_0x323a('0x1d')]=_0x323a('0xf2');}else{_0x387657[_0x323a('0x1d')]=_[_0x323a('0x2e')](['idle',_0x323a('0x174'),_0x323a('0x175'),_0x323a('0x176'),null,undefined],_0x5b5d49['voiceStatus'])?_0x323a('0x98'):_0x323a('0x177');}return _0x387657;});});});})[_0x323a('0x13')](function(_0x57145d){if(!_0x47ad32[_0x323a('0x3b')][_0x323a('0xc1')]('nolimit')){_0x29dcb2[_0x323a('0x22')]=qs[_0x323a('0x22')](_0x47ad32[_0x323a('0x3b')]['limit']||0xa);_0x29dcb2[_0x323a('0x21')]=qs['offset'](_0x47ad32['query'][_0x323a('0x21')]);}_0x36cc82[_0x323a('0x20')]=_0x57145d['length'];_0x36cc82[_0x323a('0x40')]=_0x29dcb2[_0x323a('0x22')]?_0x57145d[_0x323a('0x178')](_0x29dcb2[_0x323a('0x21')],_0x29dcb2[_0x323a('0x21')]+_0x29dcb2[_0x323a('0x22')]):_0x57145d;return _0x36cc82;})[_0x323a('0x13')](respondWithFilteredResult(_0x475362,_0x29dcb2))[_0x323a('0x1a')](handleError(_0x475362,null));};function get_open_tabs(_0x437551,_0x229f2f){var _0x3d8476=_0x437551['charAt'](0x0)[_0x323a('0x179')]()+_0x437551[_0x323a('0x178')](0x1);var _0x4fddb4={'type':db[_0x323a('0x89')][_0x323a('0x65')][_0x323a('0x17a')],'raw':!![]};return new BPromise(function(_0x274b37,_0xce8148){var _0x20f4fc=squel['select']()[_0x323a('0x17b')](_0x323a('0x17c')+_0x3d8476+_0x323a('0x17d'),'id')[_0x323a('0x17b')](_0x323a('0x17e'))[_0x323a('0x66')]('user_has_'+_0x437551+_0x323a('0x17f'),'ui')[_0x323a('0x3a')](_0x323a('0x180'),_0x229f2f['id']);return db[_0x323a('0x63')][_0x323a('0x3b')](_0x20f4fc[_0x323a('0x16b')](),_0x4fddb4)['then'](function(_0x294669){_0x229f2f[_0x3d8476+_0x323a('0x181')]=_0x294669;_0x274b37(_0x294669);})['catch'](function(_0x182790){_0xce8148(_0x182790);});});};
\ No newline at end of file
index e8b0f3d..ecf8dc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4092=['save','update','remove','emit','hasOwnProperty','hook','events','setMaxListeners'];(function(_0x71e3bb,_0x4a69be){var _0x17b08b=function(_0x47597e){while(--_0x47597e){_0x71e3bb['push'](_0x71e3bb['shift']());}};_0x17b08b(++_0x4a69be);}(_0x4092,0x17e));var _0x2409=function(_0x51af96,_0x42104c){_0x51af96=_0x51af96-0x0;var _0x2bb16b=_0x4092[_0x51af96];return _0x2bb16b;};'use strict';var EventEmitter=require(_0x2409('0x0'));var User=require('../../mysqldb')['db']['User'];var UserEvents=new EventEmitter();UserEvents[_0x2409('0x1')](0x0);var events={'afterCreate':_0x2409('0x2'),'afterUpdate':_0x2409('0x3'),'afterDestroy':_0x2409('0x4')};function emitEvent(_0x6b7752){return function(_0x18091a,_0x22ac2a,_0x3bc2f3){UserEvents[_0x2409('0x5')](_0x6b7752+':'+_0x18091a['id'],_0x18091a);UserEvents[_0x2409('0x5')](_0x6b7752,_0x18091a);_0x3bc2f3(null);};}for(var e in events){if(events[_0x2409('0x6')](e)){var event=events[e];User[_0x2409('0x7')](e,emitEvent(event));}}module['exports']=UserEvents;
\ No newline at end of file
+var _0x71d3=['update','remove','emit','hasOwnProperty','hook','exports','events','User','setMaxListeners','save'];(function(_0xb725be,_0x45bd01){var _0x2f2424=function(_0x2566ca){while(--_0x2566ca){_0xb725be['push'](_0xb725be['shift']());}};_0x2f2424(++_0x45bd01);}(_0x71d3,0x16e));var _0x371d=function(_0x31bc57,_0x275fc0){_0x31bc57=_0x31bc57-0x0;var _0x5f33c3=_0x71d3[_0x31bc57];return _0x5f33c3;};'use strict';var EventEmitter=require(_0x371d('0x0'));var User=require('../../mysqldb')['db'][_0x371d('0x1')];var UserEvents=new EventEmitter();UserEvents[_0x371d('0x2')](0x0);var events={'afterCreate':_0x371d('0x3'),'afterUpdate':_0x371d('0x4'),'afterDestroy':_0x371d('0x5')};function emitEvent(_0x1f29ad){return function(_0x19096c,_0x1d1b15,_0x5d71d4){UserEvents[_0x371d('0x6')](_0x1f29ad+':'+_0x19096c['id'],_0x19096c);UserEvents[_0x371d('0x6')](_0x1f29ad,_0x19096c);_0x5d71d4(null);};}for(var e in events){if(events[_0x371d('0x7')](e)){var event=events[e];User[_0x371d('0x8')](e,emitEvent(event));}}module[_0x371d('0x9')]=UserEvents;
\ No newline at end of file
index 75960db..382e403 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa682=['extensionMonitor','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','findAll','then','internal','concat','models','define','User','utf8','utf8_bin','userProfileId','undefined','resolve','find','privacyEnabled','updateMd5Password','updatePassword','catch','changed','UserProfile','bulkCreate','VoiceExtension','destroy','system','encryptPassword','function','Missing\x20Callback','toString','base64','salt','sha1','pbkdf2','indexOf','provider','Invalid\x20password','md5secret',':asterisk:','bluebird','crypto','util','md5','./user.attributes','google','length','from-sip','%s%s','prefix','merge','Set','format','CDR(type)=%s','chanspy','record','push','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','SIP/%s,%s','name','options','wav','context','CDR(type)=internal','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xa682,0x78));var _0x2a68=function(_0x1be76f,_0x23af74){_0x1be76f=_0x1be76f-0x0;var _0x55158e=_0xa682[_0x1be76f];return _0x55158e;};'use strict';var BPromise=require(_0x2a68('0x0'));var crypto=require(_0x2a68('0x1'));var util=require(_0x2a68('0x2'));var md5=require(_0x2a68('0x3'));var _=require('lodash');var attributes=require(_0x2a68('0x4'));var authTypes=[_0x2a68('0x5')];var validatePresenceOf=function(_0x2f92c4){return _0x2f92c4&&_0x2f92c4[_0x2a68('0x6')];};var getChanSpyApplications=function(_0x42ab0d,_0x2ac2ae,_0x127736){var _0x1bd586={'context':_0x42ab0d['context']||_0x2a68('0x7'),'type':'system','isApp':![],'UserId':_0x42ab0d['id']};var _0x378c40=[];for(var _0x47b390=0x0,_0x386b31=0x1;_0x47b390<_0x127736[_0x2a68('0x6')];_0x47b390++,_0x386b31=0x1){var _0x17da7d={'exten':util['format'](_0x2a68('0x8'),_0x127736[_0x47b390][_0x2a68('0x9')],_0x2ac2ae),'ChanSpyId':_0x127736[_0x47b390]['id']};_0x378c40['push'](_[_0x2a68('0xa')]({'app':_0x2a68('0xb'),'appdata':util[_0x2a68('0xc')](_0x2a68('0xd'),_0x2a68('0xe')),'priority':_0x386b31++},_0x1bd586,_0x17da7d));if(_0x127736[_0x47b390][_0x2a68('0xf')]){_0x378c40[_0x2a68('0x10')](_[_0x2a68('0xa')]({'app':_0x2a68('0x11'),'appdata':util[_0x2a68('0xc')](_0x2a68('0x12'),_0x127736[_0x47b390][_0x2a68('0x13')]),'priority':_0x386b31++},_0x1bd586,_0x17da7d));}if(_0x127736[_0x47b390][_0x2a68('0x14')]){_0x378c40[_0x2a68('0x10')](_[_0x2a68('0xa')]({'app':_0x2a68('0x15'),'appdata':_0x127736[_0x47b390][_0x2a68('0x16')],'priority':_0x386b31++},_0x1bd586,_0x17da7d));}_0x378c40[_0x2a68('0x10')](_[_0x2a68('0xa')]({'app':'ChanSpy','appdata':util[_0x2a68('0xc')](_0x2a68('0x17'),_0x42ab0d[_0x2a68('0x18')],_0x127736[_0x47b390][_0x2a68('0x19')]?_0x127736[_0x47b390][_0x2a68('0x19')]['join'](''):''),'priority':_0x386b31++},_0x1bd586,_0x17da7d));if(_0x127736[_0x47b390][_0x2a68('0xf')]){_0x378c40[_0x2a68('0x10')](_[_0x2a68('0xa')]({'app':'StopMixMonitor','priority':_0x386b31++},_0x1bd586,_0x17da7d));}}return _0x378c40;};var getUserApplications=function(_0x247b86,_0x4dc6f6){var _0x27ba7b=[_0x2a68('0x1a'),'WAV','gsm'];var _0x2eca8a={'context':_0x247b86[_0x2a68('0x1b')]||_0x2a68('0x7'),'exten':_0x4dc6f6,'type':'system','isApp':![],'UserId':_0x247b86['id']};var _0x4ca9e6=[{'app':_0x2a68('0xb'),'appdata':_0x2a68('0x1c')}];if(_0x247b86['extensionMonitor']&&_[_0x2a68('0x1d')](_0x27ba7b,_0x247b86['extensionMonitor'])){_0x4ca9e6[_0x2a68('0x10')]({'app':_0x2a68('0xb'),'appdata':_0x2a68('0x1e')});_0x4ca9e6[_0x2a68('0x10')]({'app':_0x2a68('0xb'),'appdata':util[_0x2a68('0xc')](_0x2a68('0x1f'),_0x247b86[_0x2a68('0x20')])});_0x4ca9e6[_0x2a68('0x10')]({'app':_0x2a68('0x21'),'appdata':util[_0x2a68('0xc')](_0x2a68('0x22'),_0x247b86[_0x2a68('0x18')])});}else{_0x4ca9e6['push']({'app':_0x2a68('0x21'),'appdata':util[_0x2a68('0xc')](_0x2a68('0x23'),_0x247b86[_0x2a68('0x18')])});}_0x4ca9e6['push']({'app':_0x2a68('0x24')});for(var _0x116cb7=0x0;_0x116cb7<_0x4ca9e6[_0x2a68('0x6')];_0x116cb7++){_0x4ca9e6[_0x116cb7][_0x2a68('0x25')]=_0x116cb7+0x1;_0x4ca9e6[_0x116cb7]=_[_0x2a68('0x26')](_0x4ca9e6[_0x116cb7],_0x2eca8a);}return _0x4ca9e6;};var getChanSpyPromise=function(_0x1ce5ab,_0x42844f){return new BPromise(function(_0x3466ce,_0x1279aa){return _0x1ce5ab[_0x2a68('0x27')][_0x2a68('0x28')]()[_0x2a68('0x29')](function(_0x26387b){if(_0x26387b){var _0x4050ee=getChanSpyApplications(_0x42844f,_0x42844f[_0x2a68('0x2a')],_0x26387b);if(_0x42844f[_0x2a68('0x2a')]!=_0x42844f[_0x2a68('0x18')]){_0x4050ee=_0x4050ee[_0x2a68('0x2b')](getChanSpyApplications(_0x42844f,_0x42844f['name'],_0x26387b));}return _0x3466ce(_0x4050ee);}return _0x3466ce([]);})['catch'](function(_0x489753){_0x1279aa(_0x489753);});});};module['exports']=function(_0x498f82,_0x41ff46){var _0x5674e7=_0x498f82[_0x2a68('0x2c')];return _0x498f82[_0x2a68('0x2d')](_0x2a68('0x2e'),attributes,{'tableName':'users','charset':_0x2a68('0x2f'),'collate':_0x2a68('0x30'),'hooks':{'beforeCreate':function(_0xa9999c,_0x3fa001,_0x4df746){var _0x2c1de9=typeof _0xa9999c[_0x2a68('0x31')]===_0x2a68('0x32')?BPromise[_0x2a68('0x33')](null):_0x5674e7['UserProfile'][_0x2a68('0x34')]({'where':{'id':_0xa9999c[_0x2a68('0x31')]}});_0x2c1de9['then'](function(_0x5c57c5){if(_0x5c57c5){_0xa9999c['privacyEnabled']=_0x5c57c5[_0x2a68('0x35')];}})[_0x2a68('0x29')](function(){_0xa9999c[_0x2a68('0x36')]();_0xa9999c[_0x2a68('0x37')](_0x4df746);})[_0x2a68('0x38')](function(_0x339e2f){_0x4df746(_0x339e2f);});},'beforeUpdate':function(_0x165834,_0x202df4,_0x4c4021){Promise[_0x2a68('0x33')]()[_0x2a68('0x29')](function(){if(_0x165834[_0x2a68('0x39')](_0x2a68('0x31'))===![])return;return _0x5674e7[_0x2a68('0x3a')][_0x2a68('0x34')]({'where':{'id':_0x165834[_0x2a68('0x31')]}})[_0x2a68('0x29')](function(_0x54fc43){if(_0x54fc43)_0x165834[_0x2a68('0x35')]=_0x54fc43['privacyEnabled'];return;});})['then'](function(){if(_0x165834[_0x2a68('0x39')]('password')){_0x165834['updateMd5Password']();return _0x165834[_0x2a68('0x37')](_0x4c4021);}_0x4c4021();})[_0x2a68('0x38')](function(_0x2233a2){_0x4c4021(_0x2233a2);});},'afterCreate':function(_0x6b404e,_0x4196ee,_0x11132f){var _0x210b76=getUserApplications(_0x6b404e,_0x6b404e[_0x2a68('0x2a')]);if(_0x6b404e[_0x2a68('0x2a')]!=_0x6b404e['name']){_0x210b76=_0x210b76['concat'](getUserApplications(_0x6b404e,_0x6b404e[_0x2a68('0x18')]));}return _0x5674e7['VoiceExtension'][_0x2a68('0x3b')](_0x210b76)[_0x2a68('0x29')](function(){if(_0x6b404e['chanspy']){return getChanSpyPromise(_0x5674e7,_0x6b404e);}})[_0x2a68('0x29')](function(_0x13e540){if(_0x13e540&&_0x13e540[_0x2a68('0x6')]){return _0x5674e7[_0x2a68('0x3c')][_0x2a68('0x3b')](_0x13e540);}})['then'](function(){_0x11132f();})['catch'](function(_0x556acd){_0x11132f(_0x556acd);});},'afterUpdate':function(_0x530318,_0x3d00a8,_0x26b727){return BPromise[_0x2a68('0x33')]()['then'](function(){if(_0x530318['changed'](_0x2a68('0xe'))||_0x530318['changed'](_0x2a68('0x1b'))){return _0x5674e7[_0x2a68('0x3c')][_0x2a68('0x3d')]({'where':{'UserId':_0x530318['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0x2a68('0x29')](function(){if(_0x530318['chanspy']){return getChanSpyPromise(_0x5674e7,_0x530318)[_0x2a68('0x29')](function(_0x292ff1){if(_0x292ff1&&_0x292ff1[_0x2a68('0x6')]){return _0x5674e7[_0x2a68('0x3c')][_0x2a68('0x3b')](_0x292ff1);}});}});}})['then'](function(){if(_0x530318[_0x2a68('0x39')](_0x2a68('0x20'))||_0x530318[_0x2a68('0x39')]('context')){return _0x5674e7[_0x2a68('0x3c')][_0x2a68('0x3d')]({'where':{'UserId':_0x530318['id'],'type':_0x2a68('0x3e'),'ChanSpyId':null}})[_0x2a68('0x29')](function(){var _0x2b8eae=getUserApplications(_0x530318,_0x530318[_0x2a68('0x2a')]);if(_0x530318[_0x2a68('0x2a')]!=_0x530318[_0x2a68('0x18')]){_0x2b8eae=_0x2b8eae[_0x2a68('0x2b')](getUserApplications(_0x530318,_0x530318[_0x2a68('0x18')]));}return _0x5674e7[_0x2a68('0x3c')][_0x2a68('0x3b')](_0x2b8eae);});}})['then'](function(){_0x26b727();})['catch'](function(_0x1e7b41){_0x26b727(_0x1e7b41);});},'afterDestroy':function(_0x504c07,_0xcda034){return _0x5674e7[_0x2a68('0x3c')][_0x2a68('0x3d')]({'where':{'UserId':_0x504c07['id'],'type':_0x2a68('0x3e')}});}},'instanceMethods':{'authenticate':function(_0x140567,_0x912220){if(!_0x912220){return this['password']===this[_0x2a68('0x3f')](_0x140567);}var _0x48e1e8=this;this['encryptPassword'](_0x140567,function(_0x442ab5,_0x454811){if(_0x442ab5){_0x912220(_0x442ab5);}if(_0x48e1e8[_0x2a68('0x16')]===_0x454811){_0x912220(null,!![]);}else{_0x912220(null,![]);}});},'makeSalt':function(_0x21e48c,_0xcbc62){var _0x10b049=0x10;if(typeof arguments[0x0]===_0x2a68('0x40')){_0xcbc62=arguments[0x0];_0x21e48c=_0x10b049;}else if(typeof arguments[0x1]===_0x2a68('0x40')){_0xcbc62=arguments[0x1];}else{throw new Error(_0x2a68('0x41'));}if(!_0x21e48c){_0x21e48c=_0x10b049;}return crypto['randomBytes'](_0x21e48c,function(_0x4ba9d5,_0x33aa8d){if(_0x4ba9d5){_0xcbc62(_0x4ba9d5);}return _0xcbc62(null,_0x33aa8d[_0x2a68('0x42')](_0x2a68('0x43')));});},'encryptPassword':function(_0x207d0a,_0x1255f4){if(!_0x207d0a||!this[_0x2a68('0x44')]){return _0x1255f4?_0x1255f4(null):null;}var _0x1a4fac=0x2710;var _0x50cc2b=0x40;var _0x4585ae=new Buffer(this[_0x2a68('0x44')],_0x2a68('0x43'));if(!_0x1255f4){return crypto['pbkdf2Sync'](_0x207d0a,_0x4585ae,_0x1a4fac,_0x50cc2b,_0x2a68('0x45'))[_0x2a68('0x42')](_0x2a68('0x43'));}return crypto[_0x2a68('0x46')](_0x207d0a,_0x4585ae,_0x1a4fac,_0x50cc2b,'sha1',function(_0x360e98,_0x351460){if(_0x360e98){_0x1255f4(_0x360e98);}return _0x1255f4(null,_0x351460[_0x2a68('0x42')]('base64'));});},'updatePassword':function(_0x4e9acf){if(!this[_0x2a68('0x16')]){return _0x4e9acf(null);}if(!validatePresenceOf(this[_0x2a68('0x16')])&&authTypes[_0x2a68('0x47')](this[_0x2a68('0x48')])===-0x1){_0x4e9acf(new Error(_0x2a68('0x49')));}var _0xe67aa7=this;this['makeSalt'](function(_0x408ea6,_0x3bbb32){if(_0x408ea6){return _0x4e9acf(_0x408ea6);}_0xe67aa7['salt']=_0x3bbb32;_0xe67aa7[_0x2a68('0x3f')](_0xe67aa7['password'],function(_0x590c0c,_0x18ac11){if(_0x590c0c){_0x4e9acf(_0x590c0c);}_0xe67aa7[_0x2a68('0x16')]=_0x18ac11;_0x4e9acf(null);});});},'updateMd5Password':function(){this[_0x2a68('0x4a')]=md5(this['name']+_0x2a68('0x4b')+this[_0x2a68('0x16')]);return this[_0x2a68('0x4a')];}}});};
\ No newline at end of file
+var _0xddcf=['_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxX','priority','defaults','then','internal','catch','models','define','User','utf8','utf8_bin','userProfileId','undefined','resolve','UserProfile','find','privacyEnabled','updateMd5Password','updatePassword','changed','password','concat','VoiceExtension','bulkCreate','chanspy','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','pbkdf2Sync','indexOf','provider','Invalid\x20password','makeSalt','salt','md5secret','bluebird','crypto','util','md5','lodash','./user.attributes','google','length','context','from-sip','format','prefix','push','merge','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','Authenticate','ChanSpy','SIP/%s,%s','name','options','join','StopMixMonitor','wav','WAV','system','Set','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'];(function(_0x40bd72,_0x5199ab){var _0x1f2839=function(_0xd048b1){while(--_0xd048b1){_0x40bd72['push'](_0x40bd72['shift']());}};_0x1f2839(++_0x5199ab);}(_0xddcf,0x19b));var _0xfddc=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0xddcf[_0x59ee6f];return _0x4c0979;};'use strict';var BPromise=require(_0xfddc('0x0'));var crypto=require(_0xfddc('0x1'));var util=require(_0xfddc('0x2'));var md5=require(_0xfddc('0x3'));var _=require(_0xfddc('0x4'));var attributes=require(_0xfddc('0x5'));var authTypes=[_0xfddc('0x6')];var validatePresenceOf=function(_0xada137){return _0xada137&&_0xada137[_0xfddc('0x7')];};var getChanSpyApplications=function(_0x1798e2,_0x59f85a,_0xa7e2cc){var _0x468214={'context':_0x1798e2[_0xfddc('0x8')]||_0xfddc('0x9'),'type':'system','isApp':![],'UserId':_0x1798e2['id']};var _0x1dc30a=[];for(var _0x307aff=0x0,_0x1dcc3a=0x1;_0x307aff<_0xa7e2cc[_0xfddc('0x7')];_0x307aff++,_0x1dcc3a=0x1){var _0xc43687={'exten':util[_0xfddc('0xa')]('%s%s',_0xa7e2cc[_0x307aff][_0xfddc('0xb')],_0x59f85a),'ChanSpyId':_0xa7e2cc[_0x307aff]['id']};_0x1dc30a[_0xfddc('0xc')](_[_0xfddc('0xd')]({'app':'Set','appdata':util['format']('CDR(type)=%s','chanspy'),'priority':_0x1dcc3a++},_0x468214,_0xc43687));if(_0xa7e2cc[_0x307aff][_0xfddc('0xe')]){_0x1dc30a[_0xfddc('0xc')](_[_0xfddc('0xd')]({'app':_0xfddc('0xf'),'appdata':util[_0xfddc('0xa')](_0xfddc('0x10'),_0xa7e2cc[_0x307aff][_0xfddc('0x11')]),'priority':_0x1dcc3a++},_0x468214,_0xc43687));}if(_0xa7e2cc[_0x307aff]['auth']){_0x1dc30a[_0xfddc('0xc')](_[_0xfddc('0xd')]({'app':_0xfddc('0x12'),'appdata':_0xa7e2cc[_0x307aff]['password'],'priority':_0x1dcc3a++},_0x468214,_0xc43687));}_0x1dc30a[_0xfddc('0xc')](_[_0xfddc('0xd')]({'app':_0xfddc('0x13'),'appdata':util[_0xfddc('0xa')](_0xfddc('0x14'),_0x1798e2[_0xfddc('0x15')],_0xa7e2cc[_0x307aff][_0xfddc('0x16')]?_0xa7e2cc[_0x307aff][_0xfddc('0x16')][_0xfddc('0x17')](''):''),'priority':_0x1dcc3a++},_0x468214,_0xc43687));if(_0xa7e2cc[_0x307aff][_0xfddc('0xe')]){_0x1dc30a[_0xfddc('0xc')](_[_0xfddc('0xd')]({'app':_0xfddc('0x18'),'priority':_0x1dcc3a++},_0x468214,_0xc43687));}}return _0x1dc30a;};var getUserApplications=function(_0x39c63b,_0x76633f){var _0x52a2ee=[_0xfddc('0x19'),_0xfddc('0x1a'),'gsm'];var _0x44d33e={'context':_0x39c63b[_0xfddc('0x8')]||_0xfddc('0x9'),'exten':_0x76633f,'type':_0xfddc('0x1b'),'isApp':![],'UserId':_0x39c63b['id']};var _0xf139eb=[{'app':_0xfddc('0x1c'),'appdata':_0xfddc('0x1d')}];if(_0x39c63b[_0xfddc('0x1e')]&&_[_0xfddc('0x1f')](_0x52a2ee,_0x39c63b[_0xfddc('0x1e')])){_0xf139eb[_0xfddc('0xc')]({'app':_0xfddc('0x1c'),'appdata':_0xfddc('0x20')});_0xf139eb[_0xfddc('0xc')]({'app':_0xfddc('0x1c'),'appdata':util['format'](_0xfddc('0x21'),_0x39c63b[_0xfddc('0x1e')])});_0xf139eb[_0xfddc('0xc')]({'app':_0xfddc('0x22'),'appdata':util[_0xfddc('0xa')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x39c63b[_0xfddc('0x15')])});}else{_0xf139eb[_0xfddc('0xc')]({'app':_0xfddc('0x22'),'appdata':util[_0xfddc('0xa')](_0xfddc('0x23'),_0x39c63b[_0xfddc('0x15')])});}_0xf139eb[_0xfddc('0xc')]({'app':'Hangup'});for(var _0x428a5a=0x0;_0x428a5a<_0xf139eb['length'];_0x428a5a++){_0xf139eb[_0x428a5a][_0xfddc('0x24')]=_0x428a5a+0x1;_0xf139eb[_0x428a5a]=_[_0xfddc('0x25')](_0xf139eb[_0x428a5a],_0x44d33e);}return _0xf139eb;};var getChanSpyPromise=function(_0x1fa28b,_0xae295c){return new BPromise(function(_0x374d50,_0x145776){return _0x1fa28b['VoiceChanSpy']['findAll']()[_0xfddc('0x26')](function(_0x54235b){if(_0x54235b){var _0x186717=getChanSpyApplications(_0xae295c,_0xae295c['internal'],_0x54235b);if(_0xae295c[_0xfddc('0x27')]!=_0xae295c[_0xfddc('0x15')]){_0x186717=_0x186717['concat'](getChanSpyApplications(_0xae295c,_0xae295c['name'],_0x54235b));}return _0x374d50(_0x186717);}return _0x374d50([]);})[_0xfddc('0x28')](function(_0x40808c){_0x145776(_0x40808c);});});};module['exports']=function(_0x3b4dc7,_0x4ef881){var _0x63ffa9=_0x3b4dc7[_0xfddc('0x29')];return _0x3b4dc7[_0xfddc('0x2a')](_0xfddc('0x2b'),attributes,{'tableName':'users','charset':_0xfddc('0x2c'),'collate':_0xfddc('0x2d'),'hooks':{'beforeCreate':function(_0x6b4a4b,_0x199332,_0x538398){var _0x42002e=typeof _0x6b4a4b[_0xfddc('0x2e')]===_0xfddc('0x2f')?BPromise[_0xfddc('0x30')](null):_0x63ffa9[_0xfddc('0x31')][_0xfddc('0x32')]({'where':{'id':_0x6b4a4b['userProfileId']}});_0x42002e[_0xfddc('0x26')](function(_0x366317){if(_0x366317){_0x6b4a4b[_0xfddc('0x33')]=_0x366317[_0xfddc('0x33')];}})[_0xfddc('0x26')](function(){_0x6b4a4b[_0xfddc('0x34')]();_0x6b4a4b[_0xfddc('0x35')](_0x538398);})[_0xfddc('0x28')](function(_0x391dc8){_0x538398(_0x391dc8);});},'beforeUpdate':function(_0x135a51,_0xe182eb,_0x4927ef){Promise['resolve']()[_0xfddc('0x26')](function(){if(_0x135a51[_0xfddc('0x36')]('userProfileId')===![])return;return _0x63ffa9[_0xfddc('0x31')][_0xfddc('0x32')]({'where':{'id':_0x135a51[_0xfddc('0x2e')]}})[_0xfddc('0x26')](function(_0x2313b1){if(_0x2313b1)_0x135a51[_0xfddc('0x33')]=_0x2313b1[_0xfddc('0x33')];return;});})[_0xfddc('0x26')](function(){if(_0x135a51['changed'](_0xfddc('0x37'))){_0x135a51[_0xfddc('0x34')]();return _0x135a51[_0xfddc('0x35')](_0x4927ef);}_0x4927ef();})[_0xfddc('0x28')](function(_0x3a214d){_0x4927ef(_0x3a214d);});},'afterCreate':function(_0x78f3bb,_0x1770e2,_0x2e5656){var _0x13c165=getUserApplications(_0x78f3bb,_0x78f3bb[_0xfddc('0x27')]);if(_0x78f3bb[_0xfddc('0x27')]!=_0x78f3bb[_0xfddc('0x15')]){_0x13c165=_0x13c165[_0xfddc('0x38')](getUserApplications(_0x78f3bb,_0x78f3bb[_0xfddc('0x15')]));}return _0x63ffa9[_0xfddc('0x39')][_0xfddc('0x3a')](_0x13c165)[_0xfddc('0x26')](function(){if(_0x78f3bb[_0xfddc('0x3b')]){return getChanSpyPromise(_0x63ffa9,_0x78f3bb);}})[_0xfddc('0x26')](function(_0xb4365e){if(_0xb4365e&&_0xb4365e[_0xfddc('0x7')]){return _0x63ffa9[_0xfddc('0x39')][_0xfddc('0x3a')](_0xb4365e);}})[_0xfddc('0x26')](function(){_0x2e5656();})[_0xfddc('0x28')](function(_0x5ecc6e){_0x2e5656(_0x5ecc6e);});},'afterUpdate':function(_0x8d8d4f,_0x17e29d,_0x15113e){return BPromise[_0xfddc('0x30')]()[_0xfddc('0x26')](function(){if(_0x8d8d4f['changed']('chanspy')||_0x8d8d4f[_0xfddc('0x36')]('context')){return _0x63ffa9[_0xfddc('0x39')][_0xfddc('0x3c')]({'where':{'UserId':_0x8d8d4f['id'],'type':_0xfddc('0x1b'),'ChanSpyId':{'$ne':null}}})[_0xfddc('0x26')](function(){if(_0x8d8d4f[_0xfddc('0x3b')]){return getChanSpyPromise(_0x63ffa9,_0x8d8d4f)[_0xfddc('0x26')](function(_0x5255f1){if(_0x5255f1&&_0x5255f1['length']){return _0x63ffa9[_0xfddc('0x39')][_0xfddc('0x3a')](_0x5255f1);}});}});}})[_0xfddc('0x26')](function(){if(_0x8d8d4f[_0xfddc('0x36')]('extensionMonitor')||_0x8d8d4f['changed'](_0xfddc('0x8'))){return _0x63ffa9['VoiceExtension']['destroy']({'where':{'UserId':_0x8d8d4f['id'],'type':_0xfddc('0x1b'),'ChanSpyId':null}})[_0xfddc('0x26')](function(){var _0x473aad=getUserApplications(_0x8d8d4f,_0x8d8d4f['internal']);if(_0x8d8d4f[_0xfddc('0x27')]!=_0x8d8d4f[_0xfddc('0x15')]){_0x473aad=_0x473aad[_0xfddc('0x38')](getUserApplications(_0x8d8d4f,_0x8d8d4f[_0xfddc('0x15')]));}return _0x63ffa9[_0xfddc('0x39')][_0xfddc('0x3a')](_0x473aad);});}})[_0xfddc('0x26')](function(){_0x15113e();})[_0xfddc('0x28')](function(_0x3d14ce){_0x15113e(_0x3d14ce);});},'afterDestroy':function(_0x1b97cb,_0x16fcfa){return _0x63ffa9[_0xfddc('0x39')][_0xfddc('0x3c')]({'where':{'UserId':_0x1b97cb['id'],'type':_0xfddc('0x1b')}});}},'instanceMethods':{'authenticate':function(_0x506157,_0x18bc91){if(!_0x18bc91){return this[_0xfddc('0x37')]===this[_0xfddc('0x3d')](_0x506157);}var _0x1dc67f=this;this[_0xfddc('0x3d')](_0x506157,function(_0x329502,_0x38cb7f){if(_0x329502){_0x18bc91(_0x329502);}if(_0x1dc67f[_0xfddc('0x37')]===_0x38cb7f){_0x18bc91(null,!![]);}else{_0x18bc91(null,![]);}});},'makeSalt':function(_0x231f8e,_0x314de1){var _0x3f503b=0x10;if(typeof arguments[0x0]===_0xfddc('0x3e')){_0x314de1=arguments[0x0];_0x231f8e=_0x3f503b;}else if(typeof arguments[0x1]==='function'){_0x314de1=arguments[0x1];}else{throw new Error(_0xfddc('0x3f'));}if(!_0x231f8e){_0x231f8e=_0x3f503b;}return crypto[_0xfddc('0x40')](_0x231f8e,function(_0x2832be,_0x457995){if(_0x2832be){_0x314de1(_0x2832be);}return _0x314de1(null,_0x457995[_0xfddc('0x41')]('base64'));});},'encryptPassword':function(_0x26a21a,_0x1c72b4){if(!_0x26a21a||!this['salt']){return _0x1c72b4?_0x1c72b4(null):null;}var _0x5bd70b=0x2710;var _0x267308=0x40;var _0x72dbb1=new Buffer(this['salt'],_0xfddc('0x42'));if(!_0x1c72b4){return crypto[_0xfddc('0x43')](_0x26a21a,_0x72dbb1,_0x5bd70b,_0x267308,'sha1')[_0xfddc('0x41')](_0xfddc('0x42'));}return crypto['pbkdf2'](_0x26a21a,_0x72dbb1,_0x5bd70b,_0x267308,'sha1',function(_0x21e8c1,_0x43d712){if(_0x21e8c1){_0x1c72b4(_0x21e8c1);}return _0x1c72b4(null,_0x43d712[_0xfddc('0x41')]('base64'));});},'updatePassword':function(_0x531e8b){if(!this[_0xfddc('0x37')]){return _0x531e8b(null);}if(!validatePresenceOf(this[_0xfddc('0x37')])&&authTypes[_0xfddc('0x44')](this[_0xfddc('0x45')])===-0x1){_0x531e8b(new Error(_0xfddc('0x46')));}var _0x5565a1=this;this[_0xfddc('0x47')](function(_0x3733f8,_0x43199b){if(_0x3733f8){return _0x531e8b(_0x3733f8);}_0x5565a1[_0xfddc('0x48')]=_0x43199b;_0x5565a1[_0xfddc('0x3d')](_0x5565a1[_0xfddc('0x37')],function(_0x3aa716,_0x1988af){if(_0x3aa716){_0x531e8b(_0x3aa716);}_0x5565a1['password']=_0x1988af;_0x531e8b(null);});});},'updateMd5Password':function(){this[_0xfddc('0x49')]=md5(this['name']+':asterisk:'+this[_0xfddc('0x37')]);return this[_0xfddc('0x49')];}}});};
\ No newline at end of file
index 8d387f6..6695a2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1eff=['defaults','socket.io-emitter','./user.socket','register','then','info','User,\x20%s,\x20%s','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','GetUser','findAll','options','attributes','limit','include','map','model','ShowUser','find','raw','where','PauseUser','User','name','role','interface','UserVoiceQueueRt','update','MemberReport','PAUSE','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','forEach','SIP/%s','body','type','DEFAULT\x20PAUSE','internal','bulkCreate','catch','UnpauseUser','findOne','channel','Unknown\x20channel','voice','sms','whatsapp','system','set','%s%s','Pause','push','all','LogoutUser','destroy','phone','loginInPause','count','agent','getLicense','agents','getVoiceQueues','upsert','merge','LOGININPAUSE','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','redis'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0x1eff,0x19e));var _0xf1ef=function(_0x4fc753,_0x521905){_0x4fc753=_0x4fc753-0x0;var _0x2a1dca=_0x1eff[_0x4fc753];return _0x2a1dca;};'use strict';var _=require('lodash');var util=require(_0xf1ef('0x0'));var moment=require(_0xf1ef('0x1'));var BPromise=require(_0xf1ef('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf1ef('0x3'));var db=require(_0xf1ef('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xf1ef('0x5'))(_0xf1ef('0x6'));var config=require('../../config/environment');var jayson=require(_0xf1ef('0x7'));var client=jayson[_0xf1ef('0x8')][_0xf1ef('0x9')]({'port':0x232a});config[_0xf1ef('0xa')]=_[_0xf1ef('0xb')](config[_0xf1ef('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0xf1ef('0xc'))(new Redis(config[_0xf1ef('0xa')]));require(_0xf1ef('0xd'))[_0xf1ef('0xe')](socket);function respondWithRpcPromise(_0x436494,_0xb082f,_0xeccc2b){return new BPromise(function(_0x3db288,_0x5f282b){return client['request'](_0x436494,_0xeccc2b)[_0xf1ef('0xf')](function(_0x497fd0){logger[_0xf1ef('0x10')](_0xf1ef('0x11'),_0xb082f,'request\x20sent');logger[_0xf1ef('0x12')](_0xf1ef('0x13'),_0xb082f,'request\x20sent',JSON[_0xf1ef('0x14')](_0x497fd0));if(_0x497fd0['error']){if(_0x497fd0[_0xf1ef('0x15')][_0xf1ef('0x16')]===0x1f4){logger[_0xf1ef('0x15')]('User,\x20%s,\x20%s',_0xb082f,_0x497fd0['error']['message']);return _0x5f282b(_0x497fd0['error'][_0xf1ef('0x17')]);}logger[_0xf1ef('0x15')](_0xf1ef('0x11'),_0xb082f,_0x497fd0[_0xf1ef('0x15')][_0xf1ef('0x17')]);return _0x3db288(_0x497fd0['error']['message']);}else{logger[_0xf1ef('0x10')]('User,\x20%s,\x20%s',_0xb082f,_0xf1ef('0x18'));_0x3db288(_0x497fd0[_0xf1ef('0x19')]['message']);}})['catch'](function(_0x5749cd){logger[_0xf1ef('0x15')](_0xf1ef('0x11'),_0xb082f,_0x5749cd);_0x5f282b(_0x5749cd);});});}exports[_0xf1ef('0x1a')]=function(_0x22fb7e){var _0x3d40c4=this;return new Promise(function(_0x2648f4,_0x4df947){return db['User'][_0xf1ef('0x1b')]({'raw':_0x22fb7e[_0xf1ef('0x1c')]?_0x22fb7e[_0xf1ef('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x22fb7e[_0xf1ef('0x1c')]?_0x22fb7e[_0xf1ef('0x1c')]['where']||null:null,'attributes':_0x22fb7e[_0xf1ef('0x1c')]?_0x22fb7e['options'][_0xf1ef('0x1d')]||null:null,'limit':_0x22fb7e[_0xf1ef('0x1c')]?_0x22fb7e[_0xf1ef('0x1c')][_0xf1ef('0x1e')]||null:null,'include':_0x22fb7e[_0xf1ef('0x1c')]?_0x22fb7e[_0xf1ef('0x1c')][_0xf1ef('0x1f')]?_[_0xf1ef('0x20')](_0x22fb7e[_0xf1ef('0x1c')][_0xf1ef('0x1f')],function(_0x50f798){return{'model':db[_0x50f798[_0xf1ef('0x21')]],'as':_0x50f798['as'],'attributes':_0x50f798['attributes'],'include':_0x50f798['include']?_[_0xf1ef('0x20')](_0x50f798['include'],function(_0xb0e93f){return{'model':db[_0xb0e93f['model']],'as':_0xb0e93f['as'],'attributes':_0xb0e93f[_0xf1ef('0x1d')],'include':_0xb0e93f['include']?_[_0xf1ef('0x20')](_0xb0e93f[_0xf1ef('0x1f')],function(_0xd51a8f){return{'model':db[_0xd51a8f['model']],'as':_0xd51a8f['as'],'attributes':_0xd51a8f[_0xf1ef('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xf1ef('0xf')](function(_0xe9f07b){logger[_0xf1ef('0x10')](_0xf1ef('0x1a'),_0x22fb7e);logger['debug'](_0xf1ef('0x1a'),_0x22fb7e,JSON[_0xf1ef('0x14')](_0xe9f07b));_0x2648f4(_0xe9f07b);})['catch'](function(_0x255de1){logger[_0xf1ef('0x15')](_0xf1ef('0x1a'),_0x255de1[_0xf1ef('0x17')],_0x22fb7e);_0x4df947(_0x3d40c4['error'](0x1f4,_0x255de1['message']));});});};exports[_0xf1ef('0x22')]=function(_0x3259f){var _0x3d11f0=this;return new Promise(function(_0x34cab3,_0x2014fc){return db['User'][_0xf1ef('0x23')]({'raw':_0x3259f[_0xf1ef('0x1c')]?_0x3259f['options'][_0xf1ef('0x24')]===undefined?!![]:![]:!![],'where':_0x3259f[_0xf1ef('0x1c')]?_0x3259f[_0xf1ef('0x1c')][_0xf1ef('0x25')]||null:null,'attributes':_0x3259f[_0xf1ef('0x1c')]?_0x3259f[_0xf1ef('0x1c')][_0xf1ef('0x1d')]||null:null,'include':_0x3259f[_0xf1ef('0x1c')]?_0x3259f[_0xf1ef('0x1c')][_0xf1ef('0x1f')]?_[_0xf1ef('0x20')](_0x3259f[_0xf1ef('0x1c')][_0xf1ef('0x1f')],function(_0x4e5d67){return{'model':db[_0x4e5d67[_0xf1ef('0x21')]],'as':_0x4e5d67['as'],'attributes':_0x4e5d67[_0xf1ef('0x1d')],'include':_0x4e5d67[_0xf1ef('0x1f')]?_[_0xf1ef('0x20')](_0x4e5d67[_0xf1ef('0x1f')],function(_0x37397f){return{'model':db[_0x37397f[_0xf1ef('0x21')]],'as':_0x37397f['as'],'attributes':_0x37397f[_0xf1ef('0x1d')],'include':_0x37397f[_0xf1ef('0x1f')]?_[_0xf1ef('0x20')](_0x37397f['include'],function(_0x13f66b){return{'model':db[_0x13f66b[_0xf1ef('0x21')]],'as':_0x13f66b['as'],'attributes':_0x13f66b[_0xf1ef('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xf1ef('0xf')](function(_0x221676){logger[_0xf1ef('0x10')](_0xf1ef('0x22'),_0x3259f);logger[_0xf1ef('0x12')](_0xf1ef('0x22'),_0x3259f,JSON[_0xf1ef('0x14')](_0x221676));_0x34cab3(_0x221676);})['catch'](function(_0x11dd38){logger[_0xf1ef('0x15')]('ShowUser',_0x11dd38[_0xf1ef('0x17')],_0x3259f);_0x2014fc(_0x3d11f0[_0xf1ef('0x15')](0x1f4,_0x11dd38['message']));});});};exports[_0xf1ef('0x26')]=function(_0x4168ef){var _0x130aa1=this;return new Promise(function(_0x2f296a,_0x166ca8){var _0x40e38f;return db[_0xf1ef('0x27')][_0xf1ef('0x23')]({'where':_0x4168ef['options'][_0xf1ef('0x25')]||{},'attributes':['id',_0xf1ef('0x28'),_0xf1ef('0x29'),'internal',_0xf1ef('0x2a')]})[_0xf1ef('0xf')](function(_0xe7c2c6){if(_0xe7c2c6){_0x40e38f=_0xe7c2c6;return db[_0xf1ef('0x2b')][_0xf1ef('0x2c')]({'paused':0x1},{'where':{'UserId':_0x40e38f['id']},'individualHooks':!![]});}})[_0xf1ef('0xf')](function(){if(_0x40e38f){return db[_0xf1ef('0x2d')][_0xf1ef('0x1b')]({'where':{'membername':_0x40e38f[_0xf1ef('0x28')],'type':_0xf1ef('0x2e'),'exitAt':null}});}})[_0xf1ef('0xf')](function(_0x3ab85f){if(_0x40e38f){if(_0x3ab85f&&_0x3ab85f[_0xf1ef('0x2f')]){var _0x54c6c7=moment()[_0xf1ef('0x30')](_0xf1ef('0x31'));for(var _0xe6d210=0x0,_0x42e05c=_0x3ab85f[_0xf1ef('0x2f')];_0xe6d210<_0x42e05c;_0xe6d210++){_0x3ab85f[_0xe6d210][_0xf1ef('0x32')]({'exitAt':_0x54c6c7});}}}})['then'](function(){if(_0x40e38f){var _0x21c01c=[];var _0x45130c=utils[_0xf1ef('0x33')]();_0x45130c[_0xf1ef('0x34')](function(_0x2c7069){_0x21c01c['push']({'channel':_0x2c7069,'membername':_0x40e38f[_0xf1ef('0x28')],'interface':_['isNil'](_0x40e38f[_0xf1ef('0x2a')])?util[_0xf1ef('0x30')](_0xf1ef('0x35'),_0x40e38f['name']):_0x40e38f[_0xf1ef('0x2a')],'type':_0xf1ef('0x2e'),'enterAt':moment()[_0xf1ef('0x30')](_0xf1ef('0x31')),'data1':_0x4168ef[_0xf1ef('0x36')][_0xf1ef('0x37')]||_0xf1ef('0x38'),'role':_0x40e38f[_0xf1ef('0x29')],'internal':_0x40e38f[_0xf1ef('0x39')],'uniqueid':_0x4168ef['body']['uniqueid']||null});});return db[_0xf1ef('0x2d')][_0xf1ef('0x3a')](_0x21c01c,{'individualHooks':!![]});}})[_0xf1ef('0xf')](function(){if(_0x40e38f){return _0x40e38f[_0xf1ef('0x2c')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x4168ef[_0xf1ef('0x36')][_0xf1ef('0x37')]||_0xf1ef('0x38'),'lastPauseAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')});}})[_0xf1ef('0xf')](function(_0x2dd8ba){_0x2f296a(_0x2dd8ba);})[_0xf1ef('0x3b')](function(_0xd7f04f){_0x166ca8(_0x130aa1[_0xf1ef('0x15')](0x1f4,_0xd7f04f[_0xf1ef('0x17')]));});});};exports[_0xf1ef('0x3c')]=function(_0x114673){var _0x20da5c=this;return new Promise(function(_0x12611c,_0x302965){var _0x531a6f;return db[_0xf1ef('0x27')][_0xf1ef('0x3d')]({'where':_0x114673[_0xf1ef('0x1c')][_0xf1ef('0x25')]||{},'attributes':['id',_0xf1ef('0x28')]})[_0xf1ef('0xf')](function(_0x3fdd95){if(_0x3fdd95){_0x531a6f=_0x3fdd95;if(_0x114673[_0xf1ef('0x36')][_0xf1ef('0x3e')]&&!utils['isValidChannel'](_0x114673[_0xf1ef('0x36')][_0xf1ef('0x3e')])){throw new Error(_0xf1ef('0x3f'));}switch(_0x114673[_0xf1ef('0x36')][_0xf1ef('0x3e')]){case _0xf1ef('0x40'):return db[_0xf1ef('0x2b')][_0xf1ef('0x2c')]({'paused':0x0},{'where':{'UserId':_0x531a6f['id']}})['then'](function(){return db['MemberReport'][_0xf1ef('0x23')]({'where':{'channel':_0x114673[_0xf1ef('0x36')][_0xf1ef('0x3e')],'membername':_0x531a6f['name'],'type':_0xf1ef('0x2e'),'exitAt':null}});})['then'](function(_0x19a8c6){if(_0x19a8c6){return _0x19a8c6[_0xf1ef('0x2c')]({'exitAt':moment()[_0xf1ef('0x30')](_0xf1ef('0x31')),'data2':'system'},{'individualHooks':!![]});}return null;})['then'](function(){return _0x531a6f[_0xf1ef('0x2c')]({'voicePause':![]});});case'mail':case'chat':case'fax':case _0xf1ef('0x41'):case'openchannel':case _0xf1ef('0x42'):return db[_0xf1ef('0x2d')][_0xf1ef('0x23')]({'where':{'channel':_0x114673[_0xf1ef('0x36')][_0xf1ef('0x3e')],'membername':_0x531a6f['name'],'type':_0xf1ef('0x2e'),'exitAt':null}})[_0xf1ef('0xf')](function(_0x2664f1){return _0x2664f1['update']({'exitAt':moment()['format'](_0xf1ef('0x31')),'data2':_0xf1ef('0x43')},{'individualHooks':!![]});})[_0xf1ef('0xf')](function(){var _0x5c8305={};_[_0xf1ef('0x44')](_0x5c8305,util[_0xf1ef('0x30')](_0xf1ef('0x45'),_0x114673[_0xf1ef('0x36')]['channel'],_0xf1ef('0x46')),![]);return _0x531a6f[_0xf1ef('0x2c')](_0x5c8305);});default:return db[_0xf1ef('0x2b')][_0xf1ef('0x2c')]({'paused':0x0},{'where':{'UserId':_0x531a6f['id']}})[_0xf1ef('0xf')](function(){return db[_0xf1ef('0x2d')][_0xf1ef('0x1b')]({'where':{'membername':_0x531a6f[_0xf1ef('0x28')],'type':_0xf1ef('0x2e'),'exitAt':null}});})['then'](function(_0x4de56f){var _0x2aa3d1=[];_0x4de56f['forEach'](function(_0x27ca15){_0x2aa3d1[_0xf1ef('0x47')](_0x27ca15[_0xf1ef('0x2c')]({'exitAt':moment()['format'](_0xf1ef('0x31')),'data2':_0xf1ef('0x43')}));});return BPromise[_0xf1ef('0x48')](_0x2aa3d1);})['then'](function(){return _0x531a6f[_0xf1ef('0x2c')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0xf1ef('0xf')](function(_0x4a5877){_0x12611c(_0x4a5877);})[_0xf1ef('0x3b')](function(_0x25e526){_0x302965(_0x20da5c[_0xf1ef('0x15')](0x1f4,_0x25e526[_0xf1ef('0x17')]));});});};exports[_0xf1ef('0x49')]=function(_0xdc7be){var _0x7e13b6=this;return new Promise(function(_0x5cb690,_0x12ba91){var _0x4eca01;return db['User']['findOne']({'where':_0xdc7be['options']['where']||{},'attributes':['id','name']})[_0xf1ef('0xf')](function(_0x12d744){if(_0x12d744){_0x4eca01=_0x12d744;return db[_0xf1ef('0x2b')][_0xf1ef('0x4a')]({'where':{'membername':_0x4eca01[_0xf1ef('0x28')]},'individualHooks':!![]});}})['then'](function(){if(_0x4eca01){return db['MemberReport'][_0xf1ef('0x1b')]({'where':{'membername':_0x4eca01[_0xf1ef('0x28')],'exitAt':null}});}})[_0xf1ef('0xf')](function(_0x4bc47f){if(_0x4eca01){if(_0x4bc47f&&_0x4bc47f[_0xf1ef('0x2f')]){var _0x294661=[];_0x4bc47f[_0xf1ef('0x34')](function(_0x5a0f67){_0x294661[_0xf1ef('0x47')](_0x5a0f67[_0xf1ef('0x2c')]({'exitAt':moment()[_0xf1ef('0x30')](_0xf1ef('0x31'))}));});return BPromise[_0xf1ef('0x48')](_0x294661);}}})['then'](function(){if(_0x4eca01){return _0x4eca01[_0xf1ef('0x2c')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0xf1ef('0xf')](function(_0x17ee41){_0x5cb690(_0x17ee41);})[_0xf1ef('0x3b')](function(_0x55147b){_0x12ba91(_0x7e13b6['error'](0x1f4,_0x55147b[_0xf1ef('0x17')]));});});};exports['LoginUser']=function(_0xd77ed6){var _0x253a60=this;return new Promise(function(_0x48573e,_0x24fc57){var _0x4d3f5f;var _0x55a9f3;var _0x26a56a;var _0x3059d4;return db[_0xf1ef('0x27')][_0xf1ef('0x3d')]({'where':_0xd77ed6[_0xf1ef('0x1c')]['where']||{},'attributes':['id',_0xf1ef('0x28'),'role','mobile',_0xf1ef('0x4b'),_0xf1ef('0x39'),_0xf1ef('0x4c'),'interface']})[_0xf1ef('0xf')](function(_0x546b5f){if(_0x546b5f){_0x4d3f5f=_0x546b5f;_0x3059d4=_0xd77ed6['body'][_0xf1ef('0x2a')]?_0xd77ed6[_0xf1ef('0x36')][_0xf1ef('0x2a')]:util[_0xf1ef('0x30')](_0xf1ef('0x35'),_0x4d3f5f[_0xf1ef('0x28')]);return db[_0xf1ef('0x27')][_0xf1ef('0x4d')]({'where':{'role':_0xf1ef('0x4e'),'online':!![],'id':{'$ne':_0x4d3f5f['id']}}});}})['then'](function(_0x48aced){if(_0x48aced){_0x26a56a=_0x48aced;return require('../../config/license/util')[_0xf1ef('0x4f')]();}})[_0xf1ef('0xf')](function(_0xa7ebb9){if(_0xa7ebb9&&_0xa7ebb9[_0xf1ef('0x50')]&&_0x26a56a>=_0xa7ebb9['agents']){throw new Error('Maximum\x20login\x20has\x20been\x20reached');}})['then'](function(){if(_0x4d3f5f){return db['UserVoiceQueueRt']['destroy']({'where':{'membername':_0x4d3f5f[_0xf1ef('0x28')]},'individualHooks':!![]});}})['then'](function(){if(_0x4d3f5f){return _0x4d3f5f[_0xf1ef('0x51')]({'raw':!![]});}})['then'](function(_0x52e759){if(_0x4d3f5f){if(_0x52e759){var _0x1ff922=[];_0x55a9f3=_0x52e759;if(_0x55a9f3['length']){for(var _0x404d21=0x0;_0x404d21<_0x55a9f3[_0xf1ef('0x2f')];_0x404d21++){_0x1ff922[_0xf1ef('0x47')](db[_0xf1ef('0x2b')][_0xf1ef('0x52')]({'membername':_0x4d3f5f['name'],'UserId':_0x4d3f5f['id'],'queue_name':_0x55a9f3[_0x404d21]['name'],'VoiceQueueId':_0x55a9f3[_0x404d21]['id'],'interface':_0x3059d4,'paused':_0x4d3f5f[_0xf1ef('0x4c')]||![],'penalty':_0x55a9f3[_0x404d21]['UserVoiceQueue.penalty']||0x0}));}return BPromise['all'](_0x1ff922);}}}})['then'](function(){if(_0x4d3f5f){return db['MemberReport']['findAll']({'where':{'membername':_0x4d3f5f[_0xf1ef('0x28')],'exitAt':null}});}})[_0xf1ef('0xf')](function(_0x2d7fe7){if(_0x4d3f5f){if(_0x2d7fe7&&_0x2d7fe7[_0xf1ef('0x2f')]){var _0x4d720f=[];_0x2d7fe7[_0xf1ef('0x34')](function(_0x38fa3e){_0x4d720f['push'](_0x38fa3e[_0xf1ef('0x2c')]({'exitAt':moment()[_0xf1ef('0x30')](_0xf1ef('0x31'))}));});return BPromise[_0xf1ef('0x48')](_0x4d720f);}}})[_0xf1ef('0xf')](function(_0x3345b1){if(_0x4d3f5f){var _0x1cdedc=[];var _0x368b92=[];var _0x2deca3=utils[_0xf1ef('0x33')]();var _0x49ade5={'membername':_0x4d3f5f[_0xf1ef('0x28')],'interface':_0x3059d4,'enterAt':moment()[_0xf1ef('0x30')](_0xf1ef('0x31')),'role':_0x4d3f5f[_0xf1ef('0x29')],'internal':_0x4d3f5f[_0xf1ef('0x39')]};_0x2deca3[_0xf1ef('0x34')](function(_0x12b11c){_0x1cdedc[_0xf1ef('0x47')](_[_0xf1ef('0x53')]({'channel':_0x12b11c,'type':'LOGIN','data1':'callysquare','data2':_0x3059d4},_0x49ade5));if(_0x4d3f5f['loginInPause']){_0x368b92[_0xf1ef('0x47')](_[_0xf1ef('0x53')]({'channel':_0x12b11c,'type':'PAUSE','data1':_0xf1ef('0x54')},_0x49ade5));}});return db[_0xf1ef('0x2d')][_0xf1ef('0x3a')](_0x1cdedc['concat'](_0x368b92),{'individualHooks':!![]});}})[_0xf1ef('0xf')](function(){if(_0x4d3f5f){return _0x4d3f5f[_0xf1ef('0x2c')]({'online':!![],'lastLoginAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x4d3f5f[_0xf1ef('0x4c')]||![],'mailPause':_0x4d3f5f['loginInPause']||![],'chatPause':_0x4d3f5f[_0xf1ef('0x4c')]||![],'faxPause':_0x4d3f5f[_0xf1ef('0x4c')]||![],'smsPause':_0x4d3f5f['loginInPause']||![],'openchannelPause':_0x4d3f5f[_0xf1ef('0x4c')]||![],'pauseType':_0x4d3f5f['loginInPause']?_0xf1ef('0x54'):null,'lastPauseAt':moment()[_0xf1ef('0x30')](_0xf1ef('0x31')),'interface':_0x3059d4});}})['then'](function(_0x57c4d7){_0x48573e(_0x57c4d7);})[_0xf1ef('0x3b')](function(_0x351d80){_0x24fc57(_0x253a60['error'](0x1f4,_0x351d80['message']));});});};
\ No newline at end of file
+var _0xb9ad=['set','Pause','forEach','all','LogoutUser','findOne','LoginUser','mobile','phone','loginInPause','count','agent','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','destroy','upsert','merge','callysquare','concat','LOGININPAUSE','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./user.socket','register','request','then','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','User','findAll','options','raw','where','attributes','map','include','model','GetUser','ShowUser','find','name','internal','interface','UserVoiceQueueRt','MemberReport','PAUSE','format','YYYY-MM-DD\x20HH:mm:ss','length','updateAttributes','getChannels','push','SIP/%s','body','type','DEFAULT\x20PAUSE','role','uniqueid','bulkCreate','UnpauseUser','channel','update','system','mail','fax','sms','openchannel'];(function(_0x6777a4,_0x3921ef){var _0x1ea681=function(_0xc1b53f){while(--_0xc1b53f){_0x6777a4['push'](_0x6777a4['shift']());}};_0x1ea681(++_0x3921ef);}(_0xb9ad,0x1dd));var _0xdb9a=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xb9ad[_0x3947c9];return _0x2e7871;};'use strict';var _=require(_0xdb9a('0x0'));var util=require('util');var moment=require(_0xdb9a('0x1'));var BPromise=require(_0xdb9a('0x2'));var rs=require(_0xdb9a('0x3'));var fs=require('fs');var Redis=require(_0xdb9a('0x4'));var db=require(_0xdb9a('0x5'))['db'];var utils=require(_0xdb9a('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xdb9a('0x7'));var jayson=require(_0xdb9a('0x8'));var client=jayson[_0xdb9a('0x9')][_0xdb9a('0xa')]({'port':0x232a});config[_0xdb9a('0xb')]=_[_0xdb9a('0xc')](config[_0xdb9a('0xb')],{'host':_0xdb9a('0xd'),'port':0x18eb});var socket=require(_0xdb9a('0xe'))(new Redis(config['redis']));require(_0xdb9a('0xf'))[_0xdb9a('0x10')](socket);function respondWithRpcPromise(_0xbef626,_0x271f29,_0x44a91a){return new BPromise(function(_0x449259,_0x112007){return client[_0xdb9a('0x11')](_0xbef626,_0x44a91a)[_0xdb9a('0x12')](function(_0x1d3433){logger['info'](_0xdb9a('0x13'),_0x271f29,_0xdb9a('0x14'));logger[_0xdb9a('0x15')](_0xdb9a('0x16'),_0x271f29,_0xdb9a('0x14'),JSON[_0xdb9a('0x17')](_0x1d3433));if(_0x1d3433['error']){if(_0x1d3433[_0xdb9a('0x18')][_0xdb9a('0x19')]===0x1f4){logger[_0xdb9a('0x18')](_0xdb9a('0x13'),_0x271f29,_0x1d3433['error']['message']);return _0x112007(_0x1d3433[_0xdb9a('0x18')][_0xdb9a('0x1a')]);}logger[_0xdb9a('0x18')](_0xdb9a('0x13'),_0x271f29,_0x1d3433[_0xdb9a('0x18')][_0xdb9a('0x1a')]);return _0x449259(_0x1d3433[_0xdb9a('0x18')]['message']);}else{logger[_0xdb9a('0x1b')](_0xdb9a('0x13'),_0x271f29,_0xdb9a('0x14'));_0x449259(_0x1d3433[_0xdb9a('0x1c')]['message']);}})[_0xdb9a('0x1d')](function(_0x57cc17){logger[_0xdb9a('0x18')](_0xdb9a('0x13'),_0x271f29,_0x57cc17);_0x112007(_0x57cc17);});});}exports['GetUser']=function(_0x1fe905){var _0x3126bb=this;return new Promise(function(_0x61bc8a,_0x910ed6){return db[_0xdb9a('0x1e')][_0xdb9a('0x1f')]({'raw':_0x1fe905[_0xdb9a('0x20')]?_0x1fe905[_0xdb9a('0x20')][_0xdb9a('0x21')]===undefined?!![]:![]:!![],'where':_0x1fe905[_0xdb9a('0x20')]?_0x1fe905[_0xdb9a('0x20')][_0xdb9a('0x22')]||null:null,'attributes':_0x1fe905[_0xdb9a('0x20')]?_0x1fe905[_0xdb9a('0x20')][_0xdb9a('0x23')]||null:null,'limit':_0x1fe905[_0xdb9a('0x20')]?_0x1fe905['options']['limit']||null:null,'include':_0x1fe905['options']?_0x1fe905[_0xdb9a('0x20')]['include']?_[_0xdb9a('0x24')](_0x1fe905[_0xdb9a('0x20')][_0xdb9a('0x25')],function(_0x49afa6){return{'model':db[_0x49afa6[_0xdb9a('0x26')]],'as':_0x49afa6['as'],'attributes':_0x49afa6[_0xdb9a('0x23')],'include':_0x49afa6[_0xdb9a('0x25')]?_[_0xdb9a('0x24')](_0x49afa6[_0xdb9a('0x25')],function(_0x40f5c7){return{'model':db[_0x40f5c7[_0xdb9a('0x26')]],'as':_0x40f5c7['as'],'attributes':_0x40f5c7[_0xdb9a('0x23')],'include':_0x40f5c7[_0xdb9a('0x25')]?_[_0xdb9a('0x24')](_0x40f5c7['include'],function(_0x5a33f8){return{'model':db[_0x5a33f8[_0xdb9a('0x26')]],'as':_0x5a33f8['as'],'attributes':_0x5a33f8[_0xdb9a('0x23')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x33b79c){logger['info']('GetUser',_0x1fe905);logger['debug']('GetUser',_0x1fe905,JSON[_0xdb9a('0x17')](_0x33b79c));_0x61bc8a(_0x33b79c);})[_0xdb9a('0x1d')](function(_0x51f691){logger[_0xdb9a('0x18')](_0xdb9a('0x27'),_0x51f691[_0xdb9a('0x1a')],_0x1fe905);_0x910ed6(_0x3126bb['error'](0x1f4,_0x51f691[_0xdb9a('0x1a')]));});});};exports[_0xdb9a('0x28')]=function(_0xf4d9bb){var _0x2340f1=this;return new Promise(function(_0x4395d6,_0x5b5388){return db['User'][_0xdb9a('0x29')]({'raw':_0xf4d9bb[_0xdb9a('0x20')]?_0xf4d9bb[_0xdb9a('0x20')]['raw']===undefined?!![]:![]:!![],'where':_0xf4d9bb[_0xdb9a('0x20')]?_0xf4d9bb[_0xdb9a('0x20')][_0xdb9a('0x22')]||null:null,'attributes':_0xf4d9bb[_0xdb9a('0x20')]?_0xf4d9bb['options'][_0xdb9a('0x23')]||null:null,'include':_0xf4d9bb['options']?_0xf4d9bb[_0xdb9a('0x20')][_0xdb9a('0x25')]?_[_0xdb9a('0x24')](_0xf4d9bb[_0xdb9a('0x20')]['include'],function(_0x112afc){return{'model':db[_0x112afc[_0xdb9a('0x26')]],'as':_0x112afc['as'],'attributes':_0x112afc['attributes'],'include':_0x112afc[_0xdb9a('0x25')]?_['map'](_0x112afc['include'],function(_0x5dec57){return{'model':db[_0x5dec57['model']],'as':_0x5dec57['as'],'attributes':_0x5dec57[_0xdb9a('0x23')],'include':_0x5dec57[_0xdb9a('0x25')]?_[_0xdb9a('0x24')](_0x5dec57[_0xdb9a('0x25')],function(_0x570b38){return{'model':db[_0x570b38[_0xdb9a('0x26')]],'as':_0x570b38['as'],'attributes':_0x570b38[_0xdb9a('0x23')]};}):[]};}):[]};}):[]:[]})[_0xdb9a('0x12')](function(_0x184967){logger[_0xdb9a('0x1b')](_0xdb9a('0x28'),_0xf4d9bb);logger[_0xdb9a('0x15')]('ShowUser',_0xf4d9bb,JSON['stringify'](_0x184967));_0x4395d6(_0x184967);})['catch'](function(_0x2a48fe){logger[_0xdb9a('0x18')](_0xdb9a('0x28'),_0x2a48fe[_0xdb9a('0x1a')],_0xf4d9bb);_0x5b5388(_0x2340f1[_0xdb9a('0x18')](0x1f4,_0x2a48fe[_0xdb9a('0x1a')]));});});};exports['PauseUser']=function(_0x2ee626){var _0x48f218=this;return new Promise(function(_0x297075,_0xedc428){var _0x96bc3d;return db[_0xdb9a('0x1e')]['find']({'where':_0x2ee626[_0xdb9a('0x20')][_0xdb9a('0x22')]||{},'attributes':['id',_0xdb9a('0x2a'),'role',_0xdb9a('0x2b'),_0xdb9a('0x2c')]})[_0xdb9a('0x12')](function(_0x538e7a){if(_0x538e7a){_0x96bc3d=_0x538e7a;return db[_0xdb9a('0x2d')]['update']({'paused':0x1},{'where':{'UserId':_0x96bc3d['id']},'individualHooks':!![]});}})[_0xdb9a('0x12')](function(){if(_0x96bc3d){return db[_0xdb9a('0x2e')]['findAll']({'where':{'membername':_0x96bc3d[_0xdb9a('0x2a')],'type':_0xdb9a('0x2f'),'exitAt':null}});}})['then'](function(_0x56712a){if(_0x96bc3d){if(_0x56712a&&_0x56712a['length']){var _0x54c1ca=moment()[_0xdb9a('0x30')](_0xdb9a('0x31'));for(var _0x1d6606=0x0,_0x233be4=_0x56712a[_0xdb9a('0x32')];_0x1d6606<_0x233be4;_0x1d6606++){_0x56712a[_0x1d6606][_0xdb9a('0x33')]({'exitAt':_0x54c1ca});}}}})[_0xdb9a('0x12')](function(){if(_0x96bc3d){var _0x361484=[];var _0xbd6e2f=utils[_0xdb9a('0x34')]();_0xbd6e2f['forEach'](function(_0x4d1f49){_0x361484[_0xdb9a('0x35')]({'channel':_0x4d1f49,'membername':_0x96bc3d['name'],'interface':_['isNil'](_0x96bc3d['interface'])?util[_0xdb9a('0x30')](_0xdb9a('0x36'),_0x96bc3d[_0xdb9a('0x2a')]):_0x96bc3d[_0xdb9a('0x2c')],'type':_0xdb9a('0x2f'),'enterAt':moment()[_0xdb9a('0x30')](_0xdb9a('0x31')),'data1':_0x2ee626[_0xdb9a('0x37')][_0xdb9a('0x38')]||_0xdb9a('0x39'),'role':_0x96bc3d[_0xdb9a('0x3a')],'internal':_0x96bc3d[_0xdb9a('0x2b')],'uniqueid':_0x2ee626[_0xdb9a('0x37')][_0xdb9a('0x3b')]||null});});return db[_0xdb9a('0x2e')][_0xdb9a('0x3c')](_0x361484,{'individualHooks':!![]});}})[_0xdb9a('0x12')](function(){if(_0x96bc3d){return _0x96bc3d['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x2ee626[_0xdb9a('0x37')][_0xdb9a('0x38')]||_0xdb9a('0x39'),'lastPauseAt':moment()[_0xdb9a('0x30')]('YYYY-MM-DD\x20HH:mm:ss')});}})[_0xdb9a('0x12')](function(_0x3ca5df){_0x297075(_0x3ca5df);})[_0xdb9a('0x1d')](function(_0x131e8f){_0xedc428(_0x48f218[_0xdb9a('0x18')](0x1f4,_0x131e8f[_0xdb9a('0x1a')]));});});};exports[_0xdb9a('0x3d')]=function(_0x1eddc8){var _0x15262d=this;return new Promise(function(_0x3af0f4,_0xdb70e4){var _0x536a5b;return db[_0xdb9a('0x1e')]['findOne']({'where':_0x1eddc8[_0xdb9a('0x20')][_0xdb9a('0x22')]||{},'attributes':['id','name']})['then'](function(_0x405fb1){if(_0x405fb1){_0x536a5b=_0x405fb1;if(_0x1eddc8[_0xdb9a('0x37')]['channel']&&!utils['isValidChannel'](_0x1eddc8[_0xdb9a('0x37')][_0xdb9a('0x3e')])){throw new Error('Unknown\x20channel');}switch(_0x1eddc8['body'][_0xdb9a('0x3e')]){case'voice':return db[_0xdb9a('0x2d')][_0xdb9a('0x3f')]({'paused':0x0},{'where':{'UserId':_0x536a5b['id']}})['then'](function(){return db[_0xdb9a('0x2e')][_0xdb9a('0x29')]({'where':{'channel':_0x1eddc8[_0xdb9a('0x37')][_0xdb9a('0x3e')],'membername':_0x536a5b['name'],'type':_0xdb9a('0x2f'),'exitAt':null}});})[_0xdb9a('0x12')](function(_0x22e31f){if(_0x22e31f){return _0x22e31f[_0xdb9a('0x3f')]({'exitAt':moment()[_0xdb9a('0x30')](_0xdb9a('0x31')),'data2':_0xdb9a('0x40')},{'individualHooks':!![]});}return null;})[_0xdb9a('0x12')](function(){return _0x536a5b[_0xdb9a('0x3f')]({'voicePause':![]});});case _0xdb9a('0x41'):case'chat':case _0xdb9a('0x42'):case _0xdb9a('0x43'):case _0xdb9a('0x44'):case'whatsapp':return db[_0xdb9a('0x2e')][_0xdb9a('0x29')]({'where':{'channel':_0x1eddc8[_0xdb9a('0x37')][_0xdb9a('0x3e')],'membername':_0x536a5b[_0xdb9a('0x2a')],'type':'PAUSE','exitAt':null}})[_0xdb9a('0x12')](function(_0x5629c5){return _0x5629c5[_0xdb9a('0x3f')]({'exitAt':moment()[_0xdb9a('0x30')](_0xdb9a('0x31')),'data2':_0xdb9a('0x40')},{'individualHooks':!![]});})[_0xdb9a('0x12')](function(){var _0x3d9717={};_[_0xdb9a('0x45')](_0x3d9717,util[_0xdb9a('0x30')]('%s%s',_0x1eddc8[_0xdb9a('0x37')][_0xdb9a('0x3e')],_0xdb9a('0x46')),![]);return _0x536a5b[_0xdb9a('0x3f')](_0x3d9717);});default:return db[_0xdb9a('0x2d')]['update']({'paused':0x0},{'where':{'UserId':_0x536a5b['id']}})[_0xdb9a('0x12')](function(){return db[_0xdb9a('0x2e')]['findAll']({'where':{'membername':_0x536a5b[_0xdb9a('0x2a')],'type':_0xdb9a('0x2f'),'exitAt':null}});})['then'](function(_0x4caf23){var _0x282218=[];_0x4caf23[_0xdb9a('0x47')](function(_0x5401e5){_0x282218[_0xdb9a('0x35')](_0x5401e5['update']({'exitAt':moment()[_0xdb9a('0x30')](_0xdb9a('0x31')),'data2':'system'}));});return BPromise[_0xdb9a('0x48')](_0x282218);})[_0xdb9a('0x12')](function(){return _0x536a5b[_0xdb9a('0x3f')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0xdb9a('0x12')](function(_0x372510){_0x3af0f4(_0x372510);})[_0xdb9a('0x1d')](function(_0x19d845){_0xdb70e4(_0x15262d[_0xdb9a('0x18')](0x1f4,_0x19d845['message']));});});};exports[_0xdb9a('0x49')]=function(_0x319dea){var _0x16e510=this;return new Promise(function(_0x3974a5,_0x290582){var _0x4522b1;return db[_0xdb9a('0x1e')][_0xdb9a('0x4a')]({'where':_0x319dea['options']['where']||{},'attributes':['id','name']})[_0xdb9a('0x12')](function(_0x33ee87){if(_0x33ee87){_0x4522b1=_0x33ee87;return db[_0xdb9a('0x2d')]['destroy']({'where':{'membername':_0x4522b1[_0xdb9a('0x2a')]},'individualHooks':!![]});}})[_0xdb9a('0x12')](function(){if(_0x4522b1){return db['MemberReport'][_0xdb9a('0x1f')]({'where':{'membername':_0x4522b1[_0xdb9a('0x2a')],'exitAt':null}});}})[_0xdb9a('0x12')](function(_0x2fda74){if(_0x4522b1){if(_0x2fda74&&_0x2fda74[_0xdb9a('0x32')]){var _0x2188ec=[];_0x2fda74[_0xdb9a('0x47')](function(_0x27364c){_0x2188ec[_0xdb9a('0x35')](_0x27364c[_0xdb9a('0x3f')]({'exitAt':moment()[_0xdb9a('0x30')](_0xdb9a('0x31'))}));});return BPromise[_0xdb9a('0x48')](_0x2188ec);}}})[_0xdb9a('0x12')](function(){if(_0x4522b1){return _0x4522b1[_0xdb9a('0x3f')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})['then'](function(_0x32cbed){_0x3974a5(_0x32cbed);})['catch'](function(_0x479299){_0x290582(_0x16e510[_0xdb9a('0x18')](0x1f4,_0x479299[_0xdb9a('0x1a')]));});});};exports[_0xdb9a('0x4b')]=function(_0x4e1162){var _0x556936=this;return new Promise(function(_0x79267e,_0x4c60cb){var _0x3245c7;var _0x1874cf;var _0x1db299;var _0x2bfd78;return db['User']['findOne']({'where':_0x4e1162[_0xdb9a('0x20')][_0xdb9a('0x22')]||{},'attributes':['id',_0xdb9a('0x2a'),_0xdb9a('0x3a'),_0xdb9a('0x4c'),_0xdb9a('0x4d'),'internal',_0xdb9a('0x4e'),'interface']})[_0xdb9a('0x12')](function(_0x398bca){if(_0x398bca){_0x3245c7=_0x398bca;_0x2bfd78=_0x4e1162[_0xdb9a('0x37')][_0xdb9a('0x2c')]?_0x4e1162[_0xdb9a('0x37')]['interface']:util[_0xdb9a('0x30')](_0xdb9a('0x36'),_0x3245c7['name']);return db[_0xdb9a('0x1e')][_0xdb9a('0x4f')]({'where':{'role':_0xdb9a('0x50'),'online':!![],'id':{'$ne':_0x3245c7['id']}}});}})[_0xdb9a('0x12')](function(_0x582727){if(_0x582727){_0x1db299=_0x582727;return require(_0xdb9a('0x51'))[_0xdb9a('0x52')]();}})[_0xdb9a('0x12')](function(_0x233e2f){if(_0x233e2f&&_0x233e2f[_0xdb9a('0x53')]&&_0x1db299>=_0x233e2f['agents']){throw new Error(_0xdb9a('0x54'));}})['then'](function(){if(_0x3245c7){return db[_0xdb9a('0x2d')][_0xdb9a('0x55')]({'where':{'membername':_0x3245c7[_0xdb9a('0x2a')]},'individualHooks':!![]});}})['then'](function(){if(_0x3245c7){return _0x3245c7['getVoiceQueues']({'raw':!![]});}})[_0xdb9a('0x12')](function(_0x2dd1d9){if(_0x3245c7){if(_0x2dd1d9){var _0x54d1c4=[];_0x1874cf=_0x2dd1d9;if(_0x1874cf[_0xdb9a('0x32')]){for(var _0x43d985=0x0;_0x43d985<_0x1874cf[_0xdb9a('0x32')];_0x43d985++){_0x54d1c4['push'](db[_0xdb9a('0x2d')][_0xdb9a('0x56')]({'membername':_0x3245c7[_0xdb9a('0x2a')],'UserId':_0x3245c7['id'],'queue_name':_0x1874cf[_0x43d985][_0xdb9a('0x2a')],'VoiceQueueId':_0x1874cf[_0x43d985]['id'],'interface':_0x2bfd78,'paused':_0x3245c7['loginInPause']||![],'penalty':_0x1874cf[_0x43d985]['UserVoiceQueue.penalty']||0x0}));}return BPromise['all'](_0x54d1c4);}}}})[_0xdb9a('0x12')](function(){if(_0x3245c7){return db[_0xdb9a('0x2e')][_0xdb9a('0x1f')]({'where':{'membername':_0x3245c7[_0xdb9a('0x2a')],'exitAt':null}});}})[_0xdb9a('0x12')](function(_0x21028d){if(_0x3245c7){if(_0x21028d&&_0x21028d[_0xdb9a('0x32')]){var _0x23c681=[];_0x21028d['forEach'](function(_0x237e2d){_0x23c681['push'](_0x237e2d[_0xdb9a('0x3f')]({'exitAt':moment()[_0xdb9a('0x30')](_0xdb9a('0x31'))}));});return BPromise[_0xdb9a('0x48')](_0x23c681);}}})[_0xdb9a('0x12')](function(_0x3cd4df){if(_0x3245c7){var _0x1c7616=[];var _0x704635=[];var _0x1797dc=utils['getChannels']();var _0x27b235={'membername':_0x3245c7[_0xdb9a('0x2a')],'interface':_0x2bfd78,'enterAt':moment()[_0xdb9a('0x30')](_0xdb9a('0x31')),'role':_0x3245c7[_0xdb9a('0x3a')],'internal':_0x3245c7[_0xdb9a('0x2b')]};_0x1797dc['forEach'](function(_0x541cb8){_0x1c7616[_0xdb9a('0x35')](_[_0xdb9a('0x57')]({'channel':_0x541cb8,'type':'LOGIN','data1':_0xdb9a('0x58'),'data2':_0x2bfd78},_0x27b235));if(_0x3245c7[_0xdb9a('0x4e')]){_0x704635[_0xdb9a('0x35')](_[_0xdb9a('0x57')]({'channel':_0x541cb8,'type':'PAUSE','data1':'LOGININPAUSE'},_0x27b235));}});return db[_0xdb9a('0x2e')]['bulkCreate'](_0x1c7616[_0xdb9a('0x59')](_0x704635),{'individualHooks':!![]});}})[_0xdb9a('0x12')](function(){if(_0x3245c7){return _0x3245c7['update']({'online':!![],'lastLoginAt':moment()[_0xdb9a('0x30')](_0xdb9a('0x31')),'voicePause':_0x3245c7['loginInPause']||![],'mailPause':_0x3245c7[_0xdb9a('0x4e')]||![],'chatPause':_0x3245c7[_0xdb9a('0x4e')]||![],'faxPause':_0x3245c7[_0xdb9a('0x4e')]||![],'smsPause':_0x3245c7['loginInPause']||![],'openchannelPause':_0x3245c7[_0xdb9a('0x4e')]||![],'pauseType':_0x3245c7[_0xdb9a('0x4e')]?_0xdb9a('0x5a'):null,'lastPauseAt':moment()[_0xdb9a('0x30')]('YYYY-MM-DD\x20HH:mm:ss'),'interface':_0x2bfd78});}})[_0xdb9a('0x12')](function(_0x323c7c){_0x79267e(_0x323c7c);})[_0xdb9a('0x1d')](function(_0x209e6c){_0x4c60cb(_0x556936[_0xdb9a('0x18')](0x1f4,_0x209e6c[_0xdb9a('0x1a')]));});});};
\ No newline at end of file
index a9d76f5..1d25d97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe58a=['register','length','user:','./user.events','save','remove','update','emit','removeListener'];(function(_0x34126a,_0x389914){var _0x4c1ff9=function(_0x1daa9e){while(--_0x1daa9e){_0x34126a['push'](_0x34126a['shift']());}};_0x4c1ff9(++_0x389914);}(_0xe58a,0x17d));var _0xae58=function(_0xdc3ad9,_0x2e1613){_0xdc3ad9=_0xdc3ad9-0x0;var _0x3be308=_0xe58a[_0xdc3ad9];return _0x3be308;};'use strict';var UserEvents=require(_0xae58('0x0'));var events=[_0xae58('0x1'),_0xae58('0x2'),_0xae58('0x3')];function createListener(_0x52c4ad,_0x765939){return function(_0x49ee3f){_0x765939[_0xae58('0x4')](_0x52c4ad,_0x49ee3f);};}function removeListener(_0x551656,_0x1c077a){return function(){UserEvents[_0xae58('0x5')](_0x551656,_0x1c077a);};}exports[_0xae58('0x6')]=function(_0x5765de){for(var _0x3399ec=0x0,_0x232a34=events[_0xae58('0x7')];_0x3399ec<_0x232a34;_0x3399ec++){var _0x1c8605=events[_0x3399ec];var _0x5eaeab=createListener(_0xae58('0x8')+_0x1c8605,_0x5765de);UserEvents['on'](_0x1c8605,_0x5eaeab);}};
\ No newline at end of file
+var _0x5814=['removeListener','register','length','user:','./user.events','remove','update'];(function(_0x49d21f,_0x6e7f5){var _0x1b93f2=function(_0x1cd8e7){while(--_0x1cd8e7){_0x49d21f['push'](_0x49d21f['shift']());}};_0x1b93f2(++_0x6e7f5);}(_0x5814,0xc8));var _0x4581=function(_0x3f9fed,_0x1af106){_0x3f9fed=_0x3f9fed-0x0;var _0x1dd0a1=_0x5814[_0x3f9fed];return _0x1dd0a1;};'use strict';var UserEvents=require(_0x4581('0x0'));var events=['save',_0x4581('0x1'),_0x4581('0x2')];function createListener(_0x18355d,_0x5c7733){return function(_0x203a5b){_0x5c7733['emit'](_0x18355d,_0x203a5b);};}function removeListener(_0x3d6a29,_0x2777a9){return function(){UserEvents[_0x4581('0x3')](_0x3d6a29,_0x2777a9);};}exports[_0x4581('0x4')]=function(_0x280118){for(var _0x547dac=0x0,_0x5ef580=events[_0x4581('0x5')];_0x547dac<_0x5ef580;_0x547dac++){var _0xff79aa=events[_0x547dac];var _0x375bcf=createListener(_0x4581('0x6')+_0xff79aa,_0x280118);UserEvents['on'](_0xff79aa,_0x375bcf);}};
\ No newline at end of file
index c950884..6c90b59 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(_0x3aaa88,_0x4196b0){var _0x41d7ec=function(_0xc5ff9a){while(--_0xc5ff9a){_0x3aaa88['push'](_0x3aaa88['shift']());}};_0x41d7ec(++_0x4196b0);}(_0x70e0,0x17b));var _0x070e=function(_0x1adc6e,_0x4b96ac){_0x1adc6e=_0x1adc6e-0x0;var _0x4e8541=_0x70e0[_0x1adc6e];return _0x4e8541;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
+var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x1595ff,_0x238718){var _0x571b9d=function(_0x403228){while(--_0x403228){_0x1595ff['push'](_0x1595ff['shift']());}};_0x571b9d(++_0x238718);}(_0xa9e0,0x123));var _0x0a9e=function(_0x12d033,_0x25fa2f){_0x12d033=_0x12d033-0x0;var _0x3b4e80=_0xa9e0[_0x12d033];return _0x3b4e80;};'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 229b52c..febd50f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c34=['sequelize','exports','INTEGER'];(function(_0x589eab,_0xc40cd1){var _0xe66536=function(_0x389604){while(--_0x389604){_0x589eab['push'](_0x589eab['shift']());}};_0xe66536(++_0xc40cd1);}(_0x5c34,0x129));var _0x45c3=function(_0x151b12,_0x32ff51){_0x151b12=_0x151b12-0x0;var _0x51557e=_0x5c34[_0x151b12];return _0x51557e;};'use strict';var Sequelize=require(_0x45c3('0x0'));module[_0x45c3('0x1')]={'penalty':{'type':Sequelize[_0x45c3('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xacde=['INTEGER','sequelize','exports'];(function(_0x195c5c,_0x2cf583){var _0x9a388=function(_0x4900db){while(--_0x4900db){_0x195c5c['push'](_0x195c5c['shift']());}};_0x9a388(++_0x2cf583);}(_0xacde,0x1cf));var _0xeacd=function(_0x1418a5,_0x19c106){_0x1418a5=_0x1418a5-0x0;var _0x22c849=_0xacde[_0x1418a5];return _0x22c849;};'use strict';var Sequelize=require(_0xeacd('0x0'));module[_0xeacd('0x1')]={'penalty':{'type':Sequelize[_0xeacd('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 90bf74e..6d11957 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ddf=['../../config/environment','./userChatQueue.attributes','exports','UserChatQueue','user_has_chat_queues','lodash','moment','bluebird','request-promise','rimraf'];(function(_0x3acd53,_0x386518){var _0x185888=function(_0x2f71c5){while(--_0x2f71c5){_0x3acd53['push'](_0x3acd53['shift']());}};_0x185888(++_0x386518);}(_0x4ddf,0xa5));var _0xf4dd=function(_0x50e4f1,_0x46fe9a){_0x50e4f1=_0x50e4f1-0x0;var _0x4564b2=_0x4ddf[_0x50e4f1];return _0x4564b2;};'use strict';var _=require(_0xf4dd('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xf4dd('0x1'));var BPromise=require(_0xf4dd('0x2'));var rp=require(_0xf4dd('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf4dd('0x4'));var config=require(_0xf4dd('0x5'));var attributes=require(_0xf4dd('0x6'));module[_0xf4dd('0x7')]=function(_0x4300f7,_0x4455c8){return _0x4300f7['define'](_0xf4dd('0x8'),attributes,{'tableName':_0xf4dd('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x615e=['exports','define','UserChatQueue','user_has_chat_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','./userChatQueue.attributes'];(function(_0x11314c,_0x2ca8d7){var _0x12cb4a=function(_0x5e7ddc){while(--_0x5e7ddc){_0x11314c['push'](_0x11314c['shift']());}};_0x12cb4a(++_0x2ca8d7);}(_0x615e,0x1b1));var _0xe615=function(_0x3ad6d6,_0x55d488){_0x3ad6d6=_0x3ad6d6-0x0;var _0x26b0e6=_0x615e[_0x3ad6d6];return _0x26b0e6;};'use strict';var _=require(_0xe615('0x0'));var util=require(_0xe615('0x1'));var logger=require(_0xe615('0x2'))(_0xe615('0x3'));var moment=require(_0xe615('0x4'));var BPromise=require(_0xe615('0x5'));var rp=require(_0xe615('0x6'));var fs=require('fs');var path=require(_0xe615('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xe615('0x8'));module[_0xe615('0x9')]=function(_0xe104ed,_0x592cfa){return _0xe104ed[_0xe615('0xa')](_0xe615('0xb'),attributes,{'tableName':_0xe615('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e2bd9dc..fe8f0bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf387=['request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','UserChatQueue,\x20%s,\x20%s','message','util','moment','randomstring','../../mysqldb','../../config/utils','client','http','request','info'];(function(_0x1825df,_0x32b6f0){var _0x524ca7=function(_0x5e4a61){while(--_0x5e4a61){_0x1825df['push'](_0x1825df['shift']());}};_0x524ca7(++_0x32b6f0);}(_0xf387,0x6e));var _0x7f38=function(_0x1fad27,_0x22308d){_0x1fad27=_0x1fad27-0x0;var _0x20c263=_0xf387[_0x1fad27];return _0x20c263;};'use strict';var _=require('lodash');var util=require(_0x7f38('0x0'));var moment=require(_0x7f38('0x1'));var BPromise=require('bluebird');var rs=require(_0x7f38('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7f38('0x3'))['db'];var utils=require(_0x7f38('0x4'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x7f38('0x5')][_0x7f38('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x484ae0,_0xe12168,_0x18b918){return new BPromise(function(_0x478c8c,_0x3f221d){return client[_0x7f38('0x7')](_0x484ae0,_0x18b918)['then'](function(_0x391f17){logger[_0x7f38('0x8')]('UserChatQueue,\x20%s,\x20%s',_0xe12168,_0x7f38('0x9'));logger[_0x7f38('0xa')](_0x7f38('0xb'),_0xe12168,_0x7f38('0x9'),JSON[_0x7f38('0xc')](_0x391f17));if(_0x391f17['error']){if(_0x391f17[_0x7f38('0xd')][_0x7f38('0xe')]===0x1f4){logger[_0x7f38('0xd')](_0x7f38('0xf'),_0xe12168,_0x391f17['error'][_0x7f38('0x10')]);return _0x3f221d(_0x391f17['error'][_0x7f38('0x10')]);}logger['error'](_0x7f38('0xf'),_0xe12168,_0x391f17['error'][_0x7f38('0x10')]);return _0x478c8c(_0x391f17[_0x7f38('0xd')]['message']);}else{logger[_0x7f38('0x8')](_0x7f38('0xf'),_0xe12168,'request\x20sent');_0x478c8c(_0x391f17['result'][_0x7f38('0x10')]);}})['catch'](function(_0x1da562){logger[_0x7f38('0xd')](_0x7f38('0xf'),_0xe12168,_0x1da562);_0x3f221d(_0x1da562);});});}
\ No newline at end of file
+var _0xed75=['stringify','error','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','then','info','UserChatQueue,\x20%s,\x20%s','request\x20sent'];(function(_0x31be3e,_0x15d41e){var _0x49847a=function(_0x106a0c){while(--_0x106a0c){_0x31be3e['push'](_0x31be3e['shift']());}};_0x49847a(++_0x15d41e);}(_0xed75,0xf5));var _0x5ed7=function(_0x262882,_0x54c08c){_0x262882=_0x262882-0x0;var _0x5b0d1a=_0xed75[_0x262882];return _0x5b0d1a;};'use strict';var _=require(_0x5ed7('0x0'));var util=require(_0x5ed7('0x1'));var moment=require(_0x5ed7('0x2'));var BPromise=require(_0x5ed7('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5ed7('0x4'));var db=require(_0x5ed7('0x5'))['db'];var utils=require(_0x5ed7('0x6'));var logger=require(_0x5ed7('0x7'))(_0x5ed7('0x8'));var config=require('../../config/environment');var jayson=require(_0x5ed7('0x9'));var client=jayson['client'][_0x5ed7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4e8fd9,_0x3823ca,_0x4dde9a){return new BPromise(function(_0x1ad737,_0x27dcf1){return client['request'](_0x4e8fd9,_0x4dde9a)[_0x5ed7('0xb')](function(_0x21b13c){logger[_0x5ed7('0xc')](_0x5ed7('0xd'),_0x3823ca,_0x5ed7('0xe'));logger['debug']('UserChatQueue,\x20%s,\x20%s,\x20%s',_0x3823ca,_0x5ed7('0xe'),JSON[_0x5ed7('0xf')](_0x21b13c));if(_0x21b13c[_0x5ed7('0x10')]){if(_0x21b13c['error']['code']===0x1f4){logger[_0x5ed7('0x10')](_0x5ed7('0xd'),_0x3823ca,_0x21b13c[_0x5ed7('0x10')]['message']);return _0x27dcf1(_0x21b13c['error'][_0x5ed7('0x11')]);}logger[_0x5ed7('0x10')]('UserChatQueue,\x20%s,\x20%s',_0x3823ca,_0x21b13c[_0x5ed7('0x10')]['message']);return _0x1ad737(_0x21b13c[_0x5ed7('0x10')][_0x5ed7('0x11')]);}else{logger[_0x5ed7('0xc')](_0x5ed7('0xd'),_0x3823ca,_0x5ed7('0xe'));_0x1ad737(_0x21b13c[_0x5ed7('0x12')]['message']);}})[_0x5ed7('0x13')](function(_0x328255){logger['error'](_0x5ed7('0xd'),_0x3823ca,_0x328255);_0x27dcf1(_0x328255);});});}
\ No newline at end of file
index 46edaca..2a6502f 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(_0x8f4cfa,_0x113aa0){var _0x324f00=function(_0x4e1f4c){while(--_0x4e1f4c){_0x8f4cfa['push'](_0x8f4cfa['shift']());}};_0x324f00(++_0x113aa0);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x2f48cd,_0x46a75a){_0x2f48cd=_0x2f48cd-0x0;var _0x193ae2=_0xcb91[_0x2f48cd];return _0x193ae2;};'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 _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x42d59f,_0x3b2853){var _0x4c8a04=function(_0x192fe5){while(--_0x192fe5){_0x42d59f['push'](_0x42d59f['shift']());}};_0x4c8a04(++_0x3b2853);}(_0x70e0,0x17b));var _0x070e=function(_0x3f33b9,_0x4eb0d6){_0x3f33b9=_0x3f33b9-0x0;var _0x40447c=_0x70e0[_0x3f33b9];return _0x40447c;};'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 791d358..5b9c150 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9fb=['STRING','exports','INTEGER'];(function(_0x1bd5b1,_0x59fb72){var _0x631508=function(_0x52d852){while(--_0x52d852){_0x1bd5b1['push'](_0x1bd5b1['shift']());}};_0x631508(++_0x59fb72);}(_0xf9fb,0x133));var _0xbf9f=function(_0x3a39cd,_0x4e95e5){_0x3a39cd=_0x3a39cd-0x0;var _0x3e10a6=_0xf9fb[_0x3a39cd];return _0x3e10a6;};'use strict';var Sequelize=require('sequelize');module[_0xbf9f('0x0')]={'penalty':{'type':Sequelize[_0xbf9f('0x1')],'defaultValue':0x0},'assigned':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'queue':{'type':Sequelize[_0xbf9f('0x2')]}};
\ No newline at end of file
+var _0xc19c=['sequelize','exports','INTEGER','STRING'];(function(_0x333520,_0x819658){var _0x58f409=function(_0x372b16){while(--_0x372b16){_0x333520['push'](_0x333520['shift']());}};_0x58f409(++_0x819658);}(_0xc19c,0xcc));var _0xcc19=function(_0x5cfeeb,_0x2af3c4){_0x5cfeeb=_0x5cfeeb-0x0;var _0x43fd28=_0xc19c[_0x5cfeeb];return _0x43fd28;};'use strict';var Sequelize=require(_0xcc19('0x0'));module[_0xcc19('0x1')]={'penalty':{'type':Sequelize[_0xcc19('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xcc19('0x2')],'defaultValue':0x0},'queue':{'type':Sequelize[_0xcc19('0x3')]}};
\ No newline at end of file
index 486c00e..9618790 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf409=['rimraf','../../config/environment','./userFaxQueue.attributes','exports','define','UserFaxQueue','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x1b934,_0x5adf7b){var _0x3ee0df=function(_0x3495a4){while(--_0x3495a4){_0x1b934['push'](_0x1b934['shift']());}};_0x3ee0df(++_0x5adf7b);}(_0xf409,0x1e2));var _0x9f40=function(_0x13ce0c,_0x3f2a0d){_0x13ce0c=_0x13ce0c-0x0;var _0x4388fb=_0xf409[_0x13ce0c];return _0x4388fb;};'use strict';var _=require(_0x9f40('0x0'));var util=require(_0x9f40('0x1'));var logger=require(_0x9f40('0x2'))(_0x9f40('0x3'));var moment=require(_0x9f40('0x4'));var BPromise=require(_0x9f40('0x5'));var rp=require(_0x9f40('0x6'));var fs=require('fs');var path=require(_0x9f40('0x7'));var rimraf=require(_0x9f40('0x8'));var config=require(_0x9f40('0x9'));var attributes=require(_0x9f40('0xa'));module[_0x9f40('0xb')]=function(_0x538ceb,_0x4f5d47){return _0x538ceb[_0x9f40('0xc')](_0x9f40('0xd'),attributes,{'tableName':'user_has_fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd548=['exports','define','UserFaxQueue','user_has_fax_queues','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./userFaxQueue.attributes'];(function(_0x10791d,_0x2562b6){var _0x1b4f9c=function(_0x3b2815){while(--_0x3b2815){_0x10791d['push'](_0x10791d['shift']());}};_0x1b4f9c(++_0x2562b6);}(_0xd548,0x86));var _0x8d54=function(_0x2678d7,_0x183a22){_0x2678d7=_0x2678d7-0x0;var _0x28b82e=_0xd548[_0x2678d7];return _0x28b82e;};'use strict';var _=require(_0x8d54('0x0'));var util=require(_0x8d54('0x1'));var logger=require(_0x8d54('0x2'))('api');var moment=require(_0x8d54('0x3'));var BPromise=require(_0x8d54('0x4'));var rp=require(_0x8d54('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8d54('0x6'));var config=require(_0x8d54('0x7'));var attributes=require(_0x8d54('0x8'));module[_0x8d54('0x9')]=function(_0x42fdf3,_0x425906){return _0x42fdf3[_0x8d54('0xa')](_0x8d54('0xb'),attributes,{'tableName':_0x8d54('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fe4dec0..7dda2aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1b9=['http','then','info','request\x20sent','stringify','error','code','message','UserFaxQueue,\x20%s,\x20%s','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client'];(function(_0x592750,_0x10d485){var _0x5bdeae=function(_0x2a3dd9){while(--_0x2a3dd9){_0x592750['push'](_0x592750['shift']());}};_0x5bdeae(++_0x10d485);}(_0xc1b9,0x107));var _0x9c1b=function(_0x225f50,_0x48a77d){_0x225f50=_0x225f50-0x0;var _0x19d003=_0xc1b9[_0x225f50];return _0x19d003;};'use strict';var _=require(_0x9c1b('0x0'));var util=require(_0x9c1b('0x1'));var moment=require(_0x9c1b('0x2'));var BPromise=require(_0x9c1b('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9c1b('0x4'));var db=require(_0x9c1b('0x5'))['db'];var utils=require(_0x9c1b('0x6'));var logger=require(_0x9c1b('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x9c1b('0x8'));var client=jayson[_0x9c1b('0x9')][_0x9c1b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xed901,_0x181d9e,_0x54ffad){return new BPromise(function(_0x1f1778,_0xacd9c){return client['request'](_0xed901,_0x54ffad)[_0x9c1b('0xb')](function(_0x35221d){logger[_0x9c1b('0xc')]('UserFaxQueue,\x20%s,\x20%s',_0x181d9e,'request\x20sent');logger['debug']('UserFaxQueue,\x20%s,\x20%s,\x20%s',_0x181d9e,_0x9c1b('0xd'),JSON[_0x9c1b('0xe')](_0x35221d));if(_0x35221d[_0x9c1b('0xf')]){if(_0x35221d[_0x9c1b('0xf')][_0x9c1b('0x10')]===0x1f4){logger['error']('UserFaxQueue,\x20%s,\x20%s',_0x181d9e,_0x35221d[_0x9c1b('0xf')][_0x9c1b('0x11')]);return _0xacd9c(_0x35221d[_0x9c1b('0xf')][_0x9c1b('0x11')]);}logger[_0x9c1b('0xf')](_0x9c1b('0x12'),_0x181d9e,_0x35221d[_0x9c1b('0xf')][_0x9c1b('0x11')]);return _0x1f1778(_0x35221d[_0x9c1b('0xf')][_0x9c1b('0x11')]);}else{logger[_0x9c1b('0xc')](_0x9c1b('0x12'),_0x181d9e,_0x9c1b('0xd'));_0x1f1778(_0x35221d[_0x9c1b('0x13')][_0x9c1b('0x11')]);}})[_0x9c1b('0x14')](function(_0x2d97da){logger[_0x9c1b('0xf')](_0x9c1b('0x12'),_0x181d9e,_0x2d97da);_0xacd9c(_0x2d97da);});});}
\ No newline at end of file
+var _0x633b=['util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','UserFaxQueue,\x20%s,\x20%s','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','catch','lodash'];(function(_0x411c72,_0xc9251e){var _0x23e16a=function(_0x5a13db){while(--_0x5a13db){_0x411c72['push'](_0x411c72['shift']());}};_0x23e16a(++_0xc9251e);}(_0x633b,0x1a1));var _0xb633=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x633b[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xb633('0x0'));var util=require(_0xb633('0x1'));var moment=require(_0xb633('0x2'));var BPromise=require(_0xb633('0x3'));var rs=require(_0xb633('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb633('0x5'))['db'];var utils=require(_0xb633('0x6'));var logger=require(_0xb633('0x7'))(_0xb633('0x8'));var config=require('../../config/environment');var jayson=require(_0xb633('0x9'));var client=jayson[_0xb633('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2c27bf,_0x3d9f8e,_0x3533ce){return new BPromise(function(_0x4be079,_0x48ef2d){return client[_0xb633('0xb')](_0x2c27bf,_0x3533ce)['then'](function(_0x83d646){logger['info'](_0xb633('0xc'),_0x3d9f8e,'request\x20sent');logger[_0xb633('0xd')](_0xb633('0xe'),_0x3d9f8e,_0xb633('0xf'),JSON['stringify'](_0x83d646));if(_0x83d646['error']){if(_0x83d646[_0xb633('0x10')][_0xb633('0x11')]===0x1f4){logger[_0xb633('0x10')](_0xb633('0xc'),_0x3d9f8e,_0x83d646[_0xb633('0x10')][_0xb633('0x12')]);return _0x48ef2d(_0x83d646['error'][_0xb633('0x12')]);}logger[_0xb633('0x10')]('UserFaxQueue,\x20%s,\x20%s',_0x3d9f8e,_0x83d646['error'][_0xb633('0x12')]);return _0x4be079(_0x83d646[_0xb633('0x10')][_0xb633('0x12')]);}else{logger[_0xb633('0x13')](_0xb633('0xc'),_0x3d9f8e,_0xb633('0xf'));_0x4be079(_0x83d646[_0xb633('0x14')]['message']);}})[_0xb633('0x15')](function(_0x5954de){logger[_0xb633('0x10')]('UserFaxQueue,\x20%s,\x20%s',_0x3d9f8e,_0x5954de);_0x48ef2d(_0x5954de);});});}
\ No newline at end of file
index 54e3c19..0d7f858 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(_0x5ae177,_0x1c168c){var _0x156788=function(_0x29e16e){while(--_0x29e16e){_0x5ae177['push'](_0x5ae177['shift']());}};_0x156788(++_0x1c168c);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x1b64dd,_0x2cf769){_0x1b64dd=_0x1b64dd-0x0;var _0xeb464c=_0xcb91[_0x1b64dd];return _0xeb464c;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x343834,_0x55a568){var _0x31f41a=function(_0x40afa5){while(--_0x40afa5){_0x343834['push'](_0x343834['shift']());}};_0x31f41a(++_0x55a568);}(_0xe706,0xa3));var _0x6e70=function(_0x569d11,_0x217bc7){_0x569d11=_0x569d11-0x0;var _0x4160c5=_0xe706[_0x569d11];return _0x4160c5;};'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 673da43..300f4d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c4b=['INTEGER','sequelize','exports'];(function(_0x5a77e9,_0x5d387a){var _0x4b3923=function(_0x4e372d){while(--_0x4e372d){_0x5a77e9['push'](_0x5a77e9['shift']());}};_0x4b3923(++_0x5d387a);}(_0x3c4b,0x151));var _0xb3c4=function(_0x2128d0,_0x389071){_0x2128d0=_0x2128d0-0x0;var _0x5eb53e=_0x3c4b[_0x2128d0];return _0x5eb53e;};'use strict';var Sequelize=require(_0xb3c4('0x0'));module[_0xb3c4('0x1')]={'penalty':{'type':Sequelize[_0xb3c4('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xc305=['sequelize'];(function(_0x181670,_0x2f8162){var _0x427b22=function(_0xa3d907){while(--_0xa3d907){_0x181670['push'](_0x181670['shift']());}};_0x427b22(++_0x2f8162);}(_0xc305,0xcf));var _0x5c30=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0xc305[_0x5d6456];return _0x4d66c1;};'use strict';var Sequelize=require(_0x5c30('0x0'));module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 95b6c3d..5d05967 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa27=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./userMailQueue.attributes','exports','define','UserMailQueue','lodash','util','../../config/logger','api'];(function(_0x58cacf,_0x1e8dc8){var _0x2f57f0=function(_0x40afc0){while(--_0x40afc0){_0x58cacf['push'](_0x58cacf['shift']());}};_0x2f57f0(++_0x1e8dc8);}(_0xfa27,0x1bc));var _0x7fa2=function(_0x317f96,_0x1e0613){_0x317f96=_0x317f96-0x0;var _0x302940=_0xfa27[_0x317f96];return _0x302940;};'use strict';var _=require(_0x7fa2('0x0'));var util=require(_0x7fa2('0x1'));var logger=require(_0x7fa2('0x2'))(_0x7fa2('0x3'));var moment=require(_0x7fa2('0x4'));var BPromise=require(_0x7fa2('0x5'));var rp=require(_0x7fa2('0x6'));var fs=require('fs');var path=require(_0x7fa2('0x7'));var rimraf=require(_0x7fa2('0x8'));var config=require(_0x7fa2('0x9'));var attributes=require(_0x7fa2('0xa'));module[_0x7fa2('0xb')]=function(_0x229a77,_0x2723aa){return _0x229a77[_0x7fa2('0xc')](_0x7fa2('0xd'),attributes,{'tableName':'user_has_mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6ae4=['moment','bluebird','path','rimraf','../../config/environment','./userMailQueue.attributes','exports','define','UserMailQueue','util','../../config/logger','api'];(function(_0x4d8ed9,_0x2ae284){var _0x1e2140=function(_0x9cca89){while(--_0x9cca89){_0x4d8ed9['push'](_0x4d8ed9['shift']());}};_0x1e2140(++_0x2ae284);}(_0x6ae4,0x105));var _0x46ae=function(_0x3d1132,_0x50b802){_0x3d1132=_0x3d1132-0x0;var _0x167ff4=_0x6ae4[_0x3d1132];return _0x167ff4;};'use strict';var _=require('lodash');var util=require(_0x46ae('0x0'));var logger=require(_0x46ae('0x1'))(_0x46ae('0x2'));var moment=require(_0x46ae('0x3'));var BPromise=require(_0x46ae('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x46ae('0x5'));var rimraf=require(_0x46ae('0x6'));var config=require(_0x46ae('0x7'));var attributes=require(_0x46ae('0x8'));module[_0x46ae('0x9')]=function(_0x22f9ce,_0x4bed36){return _0x22f9ce[_0x46ae('0xa')](_0x46ae('0xb'),attributes,{'tableName':'user_has_mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index efc3cb6..4b77968 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','UserMailQueue,\x20%s,\x20%s','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x15bc81,_0x4d4f77){var _0x59440e=function(_0x1b60f2){while(--_0x1b60f2){_0x15bc81['push'](_0x15bc81['shift']());}};_0x59440e(++_0x4d4f77);}(_0x7217,0x19e));var _0x7721=function(_0x521929,_0x479be5){_0x521929=_0x521929-0x0;var _0x632436=_0x7217[_0x521929];return _0x632436;};'use strict';var _=require(_0x7721('0x0'));var util=require('util');var moment=require(_0x7721('0x1'));var BPromise=require(_0x7721('0x2'));var rs=require(_0x7721('0x3'));var fs=require('fs');var Redis=require(_0x7721('0x4'));var db=require(_0x7721('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x7721('0x6'));var config=require(_0x7721('0x7'));var jayson=require(_0x7721('0x8'));var client=jayson[_0x7721('0x9')][_0x7721('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xf7ff37,_0x18ab6b,_0x21f680){return new BPromise(function(_0x225610,_0x2f99ed){return client[_0x7721('0xb')](_0xf7ff37,_0x21f680)[_0x7721('0xc')](function(_0xfa8835){logger[_0x7721('0xd')](_0x7721('0xe'),_0x18ab6b,'request\x20sent');logger[_0x7721('0xf')](_0x7721('0x10'),_0x18ab6b,_0x7721('0x11'),JSON[_0x7721('0x12')](_0xfa8835));if(_0xfa8835[_0x7721('0x13')]){if(_0xfa8835[_0x7721('0x13')][_0x7721('0x14')]===0x1f4){logger[_0x7721('0x13')]('UserMailQueue,\x20%s,\x20%s',_0x18ab6b,_0xfa8835[_0x7721('0x13')][_0x7721('0x15')]);return _0x2f99ed(_0xfa8835['error'][_0x7721('0x15')]);}logger[_0x7721('0x13')](_0x7721('0xe'),_0x18ab6b,_0xfa8835[_0x7721('0x13')]['message']);return _0x225610(_0xfa8835[_0x7721('0x13')][_0x7721('0x15')]);}else{logger['info']('UserMailQueue,\x20%s,\x20%s',_0x18ab6b,'request\x20sent');_0x225610(_0xfa8835[_0x7721('0x16')][_0x7721('0x15')]);}})[_0x7721('0x17')](function(_0x32550d){logger['error'](_0x7721('0xe'),_0x18ab6b,_0x32550d);_0x2f99ed(_0x32550d);});});}
\ No newline at end of file
+var _0x7fbe=['request','then','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\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(_0x47883a,_0x2e5b6c){var _0x360146=function(_0x351391){while(--_0x351391){_0x47883a['push'](_0x47883a['shift']());}};_0x360146(++_0x2e5b6c);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x5bed28,_0x3069b3){_0x5bed28=_0x5bed28-0x0;var _0x44fe9f=_0x7fbe[_0x5bed28];return _0x44fe9f;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe7fb('0x0'));var BPromise=require(_0xe7fb('0x1'));var rs=require(_0xe7fb('0x2'));var fs=require('fs');var Redis=require(_0xe7fb('0x3'));var db=require(_0xe7fb('0x4'))['db'];var utils=require(_0xe7fb('0x5'));var logger=require(_0xe7fb('0x6'))(_0xe7fb('0x7'));var config=require(_0xe7fb('0x8'));var jayson=require(_0xe7fb('0x9'));var client=jayson[_0xe7fb('0xa')][_0xe7fb('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x24cd67,_0x1f943f,_0x5ad75b){return new BPromise(function(_0x213ebc,_0x228f6b){return client[_0xe7fb('0xc')](_0x24cd67,_0x5ad75b)[_0xe7fb('0xd')](function(_0x4ba197){logger['info'](_0xe7fb('0xe'),_0x1f943f,_0xe7fb('0xf'));logger[_0xe7fb('0x10')](_0xe7fb('0x11'),_0x1f943f,_0xe7fb('0xf'),JSON[_0xe7fb('0x12')](_0x4ba197));if(_0x4ba197[_0xe7fb('0x13')]){if(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x14')]===0x1f4){logger[_0xe7fb('0x13')](_0xe7fb('0xe'),_0x1f943f,_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);return _0x228f6b(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);}logger['error'](_0xe7fb('0xe'),_0x1f943f,_0x4ba197[_0xe7fb('0x13')]['message']);return _0x213ebc(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);}else{logger['info'](_0xe7fb('0xe'),_0x1f943f,'request\x20sent');_0x213ebc(_0x4ba197[_0xe7fb('0x16')][_0xe7fb('0x15')]);}})[_0xe7fb('0x17')](function(_0x17e8a8){logger['error'](_0xe7fb('0xe'),_0x1f943f,_0x17e8a8);_0x228f6b(_0x17e8a8);});});}
\ No newline at end of file
index 66335f9..4ae4516 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0da=['exports','multer','connect-timeout','express','Router','../../config/environment','./userNotification.controller','post','isAuthenticated','sendUserNotification'];(function(_0x2261ce,_0x9ed8b6){var _0x524640=function(_0x3cbb90){while(--_0x3cbb90){_0x2261ce['push'](_0x2261ce['shift']());}};_0x524640(++_0x9ed8b6);}(_0xe0da,0x14b));var _0xae0d=function(_0x3b29cf,_0x3f56f1){_0x3b29cf=_0x3b29cf-0x0;var _0xdfa8e7=_0xe0da[_0x3b29cf];return _0xdfa8e7;};'use strict';var multer=require(_0xae0d('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xae0d('0x1'));var express=require(_0xae0d('0x2'));var router=express[_0xae0d('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xae0d('0x4'));var controller=require(_0xae0d('0x5'));router[_0xae0d('0x6')]('/',auth[_0xae0d('0x7')](),controller[_0xae0d('0x8')]);module[_0xae0d('0x9')]=router;
\ No newline at end of file
+var _0xf2f0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userNotification.controller','post','sendUserNotification','exports','multer','util','path','express'];(function(_0x27a9de,_0x3987eb){var _0xb6a1d9=function(_0x483a04){while(--_0x483a04){_0x27a9de['push'](_0x27a9de['shift']());}};_0xb6a1d9(++_0x3987eb);}(_0xf2f0,0x168));var _0x0f2f=function(_0x5dbdbc,_0x35fee0){_0x5dbdbc=_0x5dbdbc-0x0;var _0x258f29=_0xf2f0[_0x5dbdbc];return _0x258f29;};'use strict';var multer=require(_0x0f2f('0x0'));var util=require(_0x0f2f('0x1'));var path=require(_0x0f2f('0x2'));var timeout=require('connect-timeout');var express=require(_0x0f2f('0x3'));var router=express[_0x0f2f('0x4')]();var fs_extra=require(_0x0f2f('0x5'));var auth=require(_0x0f2f('0x6'));var interaction=require(_0x0f2f('0x7'));var config=require(_0x0f2f('0x8'));var controller=require(_0x0f2f('0x9'));router[_0x0f2f('0xa')]('/',auth['isAuthenticated'](),controller[_0x0f2f('0xb')]);module[_0x0f2f('0xc')]=router;
\ No newline at end of file
index bcb0015..d4dc493 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf596=['exports','TEXT'];(function(_0x138af1,_0x3221bf){var _0x1bc73c=function(_0x13a0cc){while(--_0x13a0cc){_0x138af1['push'](_0x138af1['shift']());}};_0x1bc73c(++_0x3221bf);}(_0xf596,0x140));var _0x6f59=function(_0x120763,_0x398e01){_0x120763=_0x120763-0x0;var _0x2c9e32=_0xf596[_0x120763];return _0x2c9e32;};'use strict';var Sequelize=require('sequelize');module[_0x6f59('0x0')]={'body':{'type':Sequelize[_0x6f59('0x1')]},'senderName':{'type':Sequelize['STRING']},'recipientsId':{'type':Sequelize[_0x6f59('0x1')]},'recipientsDescription':{'type':Sequelize['STRING']},'beep':{'type':Sequelize['BOOLEAN']}};
\ No newline at end of file
+var _0xdaa4=['STRING','BOOLEAN','sequelize','TEXT'];(function(_0x39dead,_0x6c6c31){var _0x2ab731=function(_0x39eda0){while(--_0x39eda0){_0x39dead['push'](_0x39dead['shift']());}};_0x2ab731(++_0x6c6c31);}(_0xdaa4,0xea));var _0x4daa=function(_0x34db30,_0x52a31e){_0x34db30=_0x34db30-0x0;var _0x1e0f76=_0xdaa4[_0x34db30];return _0x1e0f76;};'use strict';var Sequelize=require(_0x4daa('0x0'));module['exports']={'body':{'type':Sequelize[_0x4daa('0x1')]},'senderName':{'type':Sequelize[_0x4daa('0x2')]},'recipientsId':{'type':Sequelize[_0x4daa('0x1')]},'recipientsDescription':{'type':Sequelize[_0x4daa('0x2')]},'beep':{'type':Sequelize[_0x4daa('0x3')]}};
\ No newline at end of file
index 9815e91..8b15153 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c29=['union','ids','queue','replace','Queue','push','all','flatten','findOne','map','eml-format','zip-dir','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','socket.io-emitter','./userNotification.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','stack','name','sendUserNotification','hasOwnProperty','text','body','TemplateId','Sequelize','ValidationError','view','Missing\x20\x27view\x27\x20parameter','recipients','error','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','openchannelqueue','smsqueue','voicequeue','whatsappqueue','team','user','some','includes','model','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','isEmpty','beep','SenderId','then','recipientsId','sortBy','join','sequelize','transaction','UserNotification','recipientsDescription','forEach','emit','userNotification:send','Template','html','catch','startCase','User'];(function(_0x159917,_0x2d94b7){var _0x107724=function(_0x2ffbf1){while(--_0x2ffbf1){_0x159917['push'](_0x159917['shift']());}};_0x107724(++_0x2d94b7);}(_0x3c29,0x6e));var _0x93c2=function(_0x310101,_0x564f86){_0x310101=_0x310101-0x0;var _0xdb5f93=_0x3c29[_0x310101];return _0xdb5f93;};'use strict';var emlformat=require(_0x93c2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x93c2('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x93c2('0x2'));var moment=require('moment');var BPromise=require(_0x93c2('0x3'));var Mustache=require(_0x93c2('0x4'));var util=require(_0x93c2('0x5'));var path=require(_0x93c2('0x6'));var sox=require('sox');var csv=require(_0x93c2('0x7'));var ejs=require(_0x93c2('0x8'));var fs=require('fs');var fs_extra=require(_0x93c2('0x9'));var _=require(_0x93c2('0xa'));var squel=require(_0x93c2('0xb'));var crypto=require(_0x93c2('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x93c2('0x7'));var querystring=require('querystring');var Papa=require(_0x93c2('0xd'));var Redis=require('ioredis');var authService=require(_0x93c2('0xe'));var qs=require(_0x93c2('0xf'));var as=require(_0x93c2('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x93c2('0x11'));var utils=require(_0x93c2('0x12'));var config=require(_0x93c2('0x13'));var licenseUtil=require(_0x93c2('0x14'));var db=require(_0x93c2('0x15'))['db'];config['redis']=_[_0x93c2('0x16')](config[_0x93c2('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x93c2('0x18'))(new Redis(config[_0x93c2('0x17')]));require(_0x93c2('0x19'))[_0x93c2('0x1a')](socket);function respondWithStatusCode(_0xfea317,_0x5c2916){_0x5c2916=_0x5c2916||0xcc;return function(_0x56703d){if(_0x56703d){return _0xfea317[_0x93c2('0x1b')](_0x5c2916);}return _0xfea317[_0x93c2('0x1c')](_0x5c2916)[_0x93c2('0x1d')]();};}function respondWithResult(_0x2dc961,_0x196c64){_0x196c64=_0x196c64||0xc8;return function(_0x53d6be){if(_0x53d6be){return _0x2dc961[_0x93c2('0x1c')](_0x196c64)[_0x93c2('0x1e')](_0x53d6be);}};}function respondWithFilteredResult(_0x17264f,_0x312d2c){return function(_0x4f8068){if(_0x4f8068){var _0x2cdcd3=typeof _0x312d2c[_0x93c2('0x1f')]===_0x93c2('0x20')&&typeof _0x312d2c[_0x93c2('0x21')]===_0x93c2('0x20');var _0x2eaded=_0x4f8068[_0x93c2('0x22')];var _0x564df1=_0x2cdcd3?0x0:_0x312d2c['offset'];var _0xc6285c=_0x2cdcd3?_0x4f8068[_0x93c2('0x22')]:_0x312d2c[_0x93c2('0x1f')]+_0x312d2c[_0x93c2('0x21')];var _0x1b0d03;if(_0xc6285c>=_0x2eaded){_0xc6285c=_0x2eaded;_0x1b0d03=0xc8;}else{_0x1b0d03=0xce;}_0x17264f[_0x93c2('0x1c')](_0x1b0d03);return _0x17264f[_0x93c2('0x23')](_0x93c2('0x24'),_0x564df1+'-'+_0xc6285c+'/'+_0x2eaded)[_0x93c2('0x1e')](_0x4f8068);}return null;};}function patchUpdates(_0x5890d4){return function(_0x4f9eb6){try{jsonpatch[_0x93c2('0x25')](_0x4f9eb6,_0x5890d4,!![]);}catch(_0x4346fb){return BPromise[_0x93c2('0x26')](_0x4346fb);}return _0x4f9eb6[_0x93c2('0x27')]();};}function saveUpdates(_0x2274da,_0x304762){return function(_0x3d2507){if(_0x3d2507){return _0x3d2507[_0x93c2('0x28')](_0x2274da)['then'](function(_0x1246b4){return _0x1246b4;});}return null;};}function removeEntity(_0x9fbe19,_0x2239d1){return function(_0x423f31){if(_0x423f31){return _0x423f31[_0x93c2('0x29')]()['then'](function(){_0x9fbe19[_0x93c2('0x1c')](0xcc)[_0x93c2('0x1d')]();});}};}function handleEntityNotFound(_0x572f31,_0x45114a){return function(_0x5bd197){if(!_0x5bd197){_0x572f31[_0x93c2('0x1b')](0x194);}return _0x5bd197;};}function handleError(_0x1560a7,_0x36b52f){_0x36b52f=_0x36b52f||0x1f4;return function(_0x4eff95){logger['error'](_0x4eff95[_0x93c2('0x2a')]);if(_0x4eff95[_0x93c2('0x2b')]){delete _0x4eff95[_0x93c2('0x2b')];}_0x1560a7[_0x93c2('0x1c')](_0x36b52f)['send'](_0x4eff95);};}exports[_0x93c2('0x2c')]=function(_0x53c07f,_0x5d1961,_0x313bdc){if(!_0x53c07f['body'][_0x93c2('0x2d')](_0x93c2('0x2e'))&&!_0x53c07f[_0x93c2('0x2f')][_0x93c2('0x2d')](_0x93c2('0x30'))){throw new db[(_0x93c2('0x31'))][(_0x93c2('0x32'))]('Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27');}else{if(_0x53c07f[_0x93c2('0x2f')][_0x93c2('0x2d')](_0x93c2('0x30'))&&!_0x53c07f[_0x93c2('0x2f')][_0x93c2('0x2d')](_0x93c2('0x33'))){throw new db['Sequelize'][(_0x93c2('0x32'))](_0x93c2('0x34'));}if(!_0x53c07f[_0x93c2('0x2f')][_0x93c2('0x2d')](_0x93c2('0x35'))){throw new db[(_0x93c2('0x31'))][(_0x93c2('0x32'))]('Missing\x20\x27recipients\x27\x20parameter');}else{try{var _0x252519=JSON['parse'](_0x53c07f['body']['recipients']);}catch(_0xc50167){logger[_0x93c2('0x36')](_0xc50167);throw new db[(_0x93c2('0x31'))]['ValidationError'](_0x93c2('0x37'));}var _0x57f6c6=[_0x93c2('0x38'),_0x93c2('0x39'),'mailqueue',_0x93c2('0x3a'),_0x93c2('0x3b'),_0x93c2('0x3c'),_0x93c2('0x3d'),_0x93c2('0x3e'),_0x93c2('0x3f')];if(_[_0x93c2('0x40')](_0x252519,function(_0x57a23d){return!_[_0x93c2('0x41')](_0x57f6c6,_0x57a23d[_0x93c2('0x42')][_0x93c2('0x43')]());})){throw new db[(_0x93c2('0x31'))]['ValidationError'](_0x93c2('0x44'));}}}var _0x6dc7a4={};_0x6dc7a4['senderName']=_0x53c07f[_0x93c2('0x2f')][_0x93c2('0x2d')](_0x93c2('0x45'))?_0x53c07f[_0x93c2('0x2f')][_0x93c2('0x45')]:_0x53c07f['user'][_0x93c2('0x46')];_0x6dc7a4['recipientsDescription']=_[_0x93c2('0x47')](_0x53c07f['body']['recipientsDescription'])?null:_0x53c07f['body']['recipientsDescription'];_0x6dc7a4[_0x93c2('0x48')]=_0x53c07f[_0x93c2('0x2f')][_0x93c2('0x48')]||![];_0x6dc7a4[_0x93c2('0x49')]=_0x53c07f[_0x93c2('0x3f')]['id'];return getContent(_0x53c07f[_0x93c2('0x2f')])[_0x93c2('0x4a')](function(_0x164cd7){_0x6dc7a4[_0x93c2('0x2f')]=_0x164cd7;return getRecipients(_0x252519);})[_0x93c2('0x4a')](function(_0x19524f){_0x6dc7a4[_0x93c2('0x4b')]=_[_0x93c2('0x4c')](_0x19524f)[_0x93c2('0x4d')](',');return db[_0x93c2('0x4e')][_0x93c2('0x4f')](function(_0x21d649){return db[_0x93c2('0x50')]['create'](_0x6dc7a4,{'raw':!![],'transaction':_0x21d649})[_0x93c2('0x4a')](function(_0xec8cd3){var _0x270c95={'sender':_0x6dc7a4['senderName'],'description':_0x6dc7a4[_0x93c2('0x51')],'content':_0x6dc7a4[_0x93c2('0x2f')],'beep':_0x6dc7a4[_0x93c2('0x48')]};_0x19524f[_0x93c2('0x52')](function(_0x290773){_0x270c95['recipient']=_0x290773;socket[_0x93c2('0x53')](_0x93c2('0x54'),_0x270c95);});return _0xec8cd3;});});})['then'](respondWithResult(_0x5d1961,0xc9))['catch'](handleError(_0x5d1961,null));};function getContent(_0x59735d){return new BPromise(function(_0x54a035,_0x3bcdb7){if(_0x59735d[_0x93c2('0x2e')]){_0x54a035(_0x59735d['text']);return;}return db[_0x93c2('0x55')]['findOne']({'attributes':[_0x93c2('0x56')],'where':{'id':_0x59735d[_0x93c2('0x30')]},'raw':!![]})['then'](function(_0x4baa8b){if(!_0x4baa8b)throw new db[(_0x93c2('0x31'))][(_0x93c2('0x32'))]('Invalid\x20\x27TemplateId\x27\x20parameter');var _0x40b346=Mustache['render'](_0x4baa8b[_0x93c2('0x56')],_0x59735d[_0x93c2('0x33')]);_0x54a035(_0x40b346);})[_0x93c2('0x57')](function(_0x422634){_0x3bcdb7(_0x422634);});});}function getRecipients(_0x28537d){return new BPromise(function(_0x1ba088,_0x2b8652){var _0x468a81=[];var _0x12564a=[];_0x28537d[_0x93c2('0x52')](function(_0x529ba6){var _0x16e5a0=_[_0x93c2('0x58')](_0x529ba6['model'][_0x93c2('0x43')]());if(_0x16e5a0===_0x93c2('0x59')){_0x468a81=_[_0x93c2('0x5a')](_0x468a81,_0x529ba6[_0x93c2('0x5b')]);}else{if(_['includes'](_0x16e5a0,_0x93c2('0x5c')))_0x16e5a0=_0x16e5a0[_0x93c2('0x5d')](_0x93c2('0x5c'),_0x93c2('0x5e'));_0x529ba6[_0x93c2('0x5b')]['forEach'](function(_0x6c5fdd){_0x12564a[_0x93c2('0x5f')](getAgents(_0x16e5a0,_0x6c5fdd));});}});return BPromise[_0x93c2('0x60')](_0x12564a)[_0x93c2('0x4a')](function(_0x15b02c){_0x468a81=_['union'](_0x468a81,_[_0x93c2('0x61')](_0x15b02c));_0x1ba088(_0x468a81);})[_0x93c2('0x57')](function(_0x2c9fb0){_0x2b8652(_0x2c9fb0);});});}function getAgents(_0x2ea9b2,_0x2e5e09){return new BPromise(function(_0xc43a66,_0x1a1302){return db[_0x2ea9b2][_0x93c2('0x62')]({'where':{'id':_0x2e5e09}})[_0x93c2('0x4a')](function(_0x31ae2a){return _0x31ae2a['getAgents']({'attributes':['id'],'raw':!![]})[_0x93c2('0x4a')](function(_0x3f35ba){var _0x40a3c0=_[_0x93c2('0x63')](_0x3f35ba,'id');_0xc43a66(_0x40a3c0);});})[_0x93c2('0x57')](function(_0x57fd20){_0x1a1302(_0x57fd20);});});}
\ No newline at end of file
+var _0xcd18=['openchannelqueue','smsqueue','voicequeue','whatsappqueue','team','some','includes','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','user','fullname','recipientsDescription','isEmpty','beep','SenderId','recipientsId','join','transaction','UserNotification','create','forEach','recipient','emit','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','catch','startCase','model','User','union','queue','replace','Queue','ids','all','flatten','findOne','getAgents','map','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','socket.io-emitter','./userNotification.socket','register','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','name','send','sendUserNotification','body','hasOwnProperty','text','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','TemplateId','view','Missing\x20\x27view\x27\x20parameter','Missing\x20\x27recipients\x27\x20parameter','parse','error','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','mailqueue'];(function(_0x3de98f,_0x2892ef){var _0x3fa30c=function(_0x9f10e5){while(--_0x9f10e5){_0x3de98f['push'](_0x3de98f['shift']());}};_0x3fa30c(++_0x2892ef);}(_0xcd18,0x93));var _0x8cd1=function(_0x5aab0d,_0x5f328c){_0x5aab0d=_0x5aab0d-0x0;var _0x272b83=_0xcd18[_0x5aab0d];return _0x272b83;};'use strict';var emlformat=require(_0x8cd1('0x0'));var rimraf=require(_0x8cd1('0x1'));var zipdir=require(_0x8cd1('0x2'));var jsonpatch=require(_0x8cd1('0x3'));var rp=require(_0x8cd1('0x4'));var moment=require(_0x8cd1('0x5'));var BPromise=require(_0x8cd1('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0x8cd1('0x7'));var sox=require(_0x8cd1('0x8'));var csv=require(_0x8cd1('0x9'));var ejs=require(_0x8cd1('0xa'));var fs=require('fs');var fs_extra=require(_0x8cd1('0xb'));var _=require(_0x8cd1('0xc'));var squel=require(_0x8cd1('0xd'));var crypto=require(_0x8cd1('0xe'));var jsforce=require(_0x8cd1('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x8cd1('0x9'));var querystring=require('querystring');var Papa=require(_0x8cd1('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x8cd1('0x11'));var as=require(_0x8cd1('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8cd1('0x13'))(_0x8cd1('0x14'));var utils=require(_0x8cd1('0x15'));var config=require(_0x8cd1('0x16'));var licenseUtil=require(_0x8cd1('0x17'));var db=require(_0x8cd1('0x18'))['db'];config['redis']=_[_0x8cd1('0x19')](config[_0x8cd1('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0x8cd1('0x1b'))(new Redis(config[_0x8cd1('0x1a')]));require(_0x8cd1('0x1c'))[_0x8cd1('0x1d')](socket);function respondWithStatusCode(_0x42ee53,_0x1d42f2){_0x1d42f2=_0x1d42f2||0xcc;return function(_0x4ebe22){if(_0x4ebe22){return _0x42ee53[_0x8cd1('0x1e')](_0x1d42f2);}return _0x42ee53['status'](_0x1d42f2)[_0x8cd1('0x1f')]();};}function respondWithResult(_0x17be08,_0x25a9df){_0x25a9df=_0x25a9df||0xc8;return function(_0x331e05){if(_0x331e05){return _0x17be08[_0x8cd1('0x20')](_0x25a9df)['json'](_0x331e05);}};}function respondWithFilteredResult(_0x1cd364,_0x478da0){return function(_0x3ba380){if(_0x3ba380){var _0x14d51a=typeof _0x478da0[_0x8cd1('0x21')]===_0x8cd1('0x22')&&typeof _0x478da0[_0x8cd1('0x23')]===_0x8cd1('0x22');var _0x699ed6=_0x3ba380['count'];var _0xd4c37e=_0x14d51a?0x0:_0x478da0[_0x8cd1('0x21')];var _0x13184b=_0x14d51a?_0x3ba380[_0x8cd1('0x24')]:_0x478da0['offset']+_0x478da0[_0x8cd1('0x23')];var _0x5ab27d;if(_0x13184b>=_0x699ed6){_0x13184b=_0x699ed6;_0x5ab27d=0xc8;}else{_0x5ab27d=0xce;}_0x1cd364[_0x8cd1('0x20')](_0x5ab27d);return _0x1cd364[_0x8cd1('0x25')](_0x8cd1('0x26'),_0xd4c37e+'-'+_0x13184b+'/'+_0x699ed6)[_0x8cd1('0x27')](_0x3ba380);}return null;};}function patchUpdates(_0x33ac98){return function(_0x2aa00f){try{jsonpatch[_0x8cd1('0x28')](_0x2aa00f,_0x33ac98,!![]);}catch(_0x3d330f){return BPromise[_0x8cd1('0x29')](_0x3d330f);}return _0x2aa00f[_0x8cd1('0x2a')]();};}function saveUpdates(_0x53ddeb,_0x32c7f4){return function(_0x2c1ab2){if(_0x2c1ab2){return _0x2c1ab2[_0x8cd1('0x2b')](_0x53ddeb)[_0x8cd1('0x2c')](function(_0x13313f){return _0x13313f;});}return null;};}function removeEntity(_0x175f83,_0x2110eb){return function(_0x2389ee){if(_0x2389ee){return _0x2389ee[_0x8cd1('0x2d')]()['then'](function(){_0x175f83[_0x8cd1('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2e2919,_0x4de600){return function(_0x3fd1c6){if(!_0x3fd1c6){_0x2e2919[_0x8cd1('0x1e')](0x194);}return _0x3fd1c6;};}function handleError(_0x1130ff,_0x50528f){_0x50528f=_0x50528f||0x1f4;return function(_0x4c1463){logger['error'](_0x4c1463['stack']);if(_0x4c1463['name']){delete _0x4c1463[_0x8cd1('0x2e')];}_0x1130ff[_0x8cd1('0x20')](_0x50528f)[_0x8cd1('0x2f')](_0x4c1463);};}exports[_0x8cd1('0x30')]=function(_0x4f8cb3,_0xb03c03,_0x3c4599){if(!_0x4f8cb3[_0x8cd1('0x31')][_0x8cd1('0x32')](_0x8cd1('0x33'))&&!_0x4f8cb3[_0x8cd1('0x31')][_0x8cd1('0x32')]('TemplateId')){throw new db[(_0x8cd1('0x34'))][(_0x8cd1('0x35'))](_0x8cd1('0x36'));}else{if(_0x4f8cb3[_0x8cd1('0x31')][_0x8cd1('0x32')](_0x8cd1('0x37'))&&!_0x4f8cb3[_0x8cd1('0x31')]['hasOwnProperty'](_0x8cd1('0x38'))){throw new db[(_0x8cd1('0x34'))][(_0x8cd1('0x35'))](_0x8cd1('0x39'));}if(!_0x4f8cb3[_0x8cd1('0x31')]['hasOwnProperty']('recipients')){throw new db[(_0x8cd1('0x34'))][(_0x8cd1('0x35'))](_0x8cd1('0x3a'));}else{try{var _0x378bd7=JSON[_0x8cd1('0x3b')](_0x4f8cb3[_0x8cd1('0x31')]['recipients']);}catch(_0x506d2f){logger[_0x8cd1('0x3c')](_0x506d2f);throw new db['Sequelize'][(_0x8cd1('0x35'))](_0x8cd1('0x3d'));}var _0x2ad8c1=[_0x8cd1('0x3e'),_0x8cd1('0x3f'),_0x8cd1('0x40'),_0x8cd1('0x41'),_0x8cd1('0x42'),_0x8cd1('0x43'),_0x8cd1('0x44'),_0x8cd1('0x45'),'user'];if(_[_0x8cd1('0x46')](_0x378bd7,function(_0x2afae5){return!_[_0x8cd1('0x47')](_0x2ad8c1,_0x2afae5['model'][_0x8cd1('0x48')]());})){throw new db[(_0x8cd1('0x34'))][(_0x8cd1('0x35'))](_0x8cd1('0x49'));}}}var _0x345056={};_0x345056[_0x8cd1('0x4a')]=_0x4f8cb3['body'][_0x8cd1('0x32')](_0x8cd1('0x4a'))?_0x4f8cb3[_0x8cd1('0x31')][_0x8cd1('0x4a')]:_0x4f8cb3[_0x8cd1('0x4b')][_0x8cd1('0x4c')];_0x345056[_0x8cd1('0x4d')]=_[_0x8cd1('0x4e')](_0x4f8cb3['body'][_0x8cd1('0x4d')])?null:_0x4f8cb3['body'][_0x8cd1('0x4d')];_0x345056[_0x8cd1('0x4f')]=_0x4f8cb3['body'][_0x8cd1('0x4f')]||![];_0x345056[_0x8cd1('0x50')]=_0x4f8cb3[_0x8cd1('0x4b')]['id'];return getContent(_0x4f8cb3[_0x8cd1('0x31')])[_0x8cd1('0x2c')](function(_0x3ce48c){_0x345056['body']=_0x3ce48c;return getRecipients(_0x378bd7);})[_0x8cd1('0x2c')](function(_0x73a55){_0x345056[_0x8cd1('0x51')]=_['sortBy'](_0x73a55)[_0x8cd1('0x52')](',');return db['sequelize'][_0x8cd1('0x53')](function(_0x5a931d){return db[_0x8cd1('0x54')][_0x8cd1('0x55')](_0x345056,{'raw':!![],'transaction':_0x5a931d})[_0x8cd1('0x2c')](function(_0x1a496c){var _0x463380={'sender':_0x345056[_0x8cd1('0x4a')],'description':_0x345056[_0x8cd1('0x4d')],'content':_0x345056[_0x8cd1('0x31')],'beep':_0x345056[_0x8cd1('0x4f')]};_0x73a55[_0x8cd1('0x56')](function(_0x397f3e){_0x463380[_0x8cd1('0x57')]=_0x397f3e;socket[_0x8cd1('0x58')]('userNotification:send',_0x463380);});return _0x1a496c;});});})[_0x8cd1('0x2c')](respondWithResult(_0xb03c03,0xc9))['catch'](handleError(_0xb03c03,null));};function getContent(_0x594901){return new BPromise(function(_0x56b350,_0xa55e7e){if(_0x594901['text']){_0x56b350(_0x594901[_0x8cd1('0x33')]);return;}return db['Template']['findOne']({'attributes':[_0x8cd1('0x59')],'where':{'id':_0x594901[_0x8cd1('0x37')]},'raw':!![]})[_0x8cd1('0x2c')](function(_0x4bbdfa){if(!_0x4bbdfa)throw new db[(_0x8cd1('0x34'))][(_0x8cd1('0x35'))](_0x8cd1('0x5a'));var _0x523337=Mustache[_0x8cd1('0x5b')](_0x4bbdfa[_0x8cd1('0x59')],_0x594901['view']);_0x56b350(_0x523337);})[_0x8cd1('0x5c')](function(_0x38f378){_0xa55e7e(_0x38f378);});});}function getRecipients(_0x3836ab){return new BPromise(function(_0x4d41fb,_0x5117cc){var _0x301110=[];var _0x143d07=[];_0x3836ab[_0x8cd1('0x56')](function(_0x5d6137){var _0x11f3e5=_[_0x8cd1('0x5d')](_0x5d6137[_0x8cd1('0x5e')]['toLowerCase']());if(_0x11f3e5===_0x8cd1('0x5f')){_0x301110=_[_0x8cd1('0x60')](_0x301110,_0x5d6137['ids']);}else{if(_[_0x8cd1('0x47')](_0x11f3e5,_0x8cd1('0x61')))_0x11f3e5=_0x11f3e5[_0x8cd1('0x62')]('queue',_0x8cd1('0x63'));_0x5d6137[_0x8cd1('0x64')][_0x8cd1('0x56')](function(_0x128681){_0x143d07['push'](getAgents(_0x11f3e5,_0x128681));});}});return BPromise[_0x8cd1('0x65')](_0x143d07)[_0x8cd1('0x2c')](function(_0x138684){_0x301110=_[_0x8cd1('0x60')](_0x301110,_[_0x8cd1('0x66')](_0x138684));_0x4d41fb(_0x301110);})[_0x8cd1('0x5c')](function(_0x4fda33){_0x5117cc(_0x4fda33);});});}function getAgents(_0x9fedcd,_0x5780da){return new BPromise(function(_0x67e0f2,_0x42ce0f){return db[_0x9fedcd][_0x8cd1('0x67')]({'where':{'id':_0x5780da}})[_0x8cd1('0x2c')](function(_0x85bcf4){return _0x85bcf4[_0x8cd1('0x68')]({'attributes':['id'],'raw':!![]})[_0x8cd1('0x2c')](function(_0x4079ae){var _0x4c80a2=_[_0x8cd1('0x69')](_0x4079ae,'id');_0x67e0f2(_0x4c80a2);});})[_0x8cd1('0x5c')](function(_0xb83d79){_0x42ce0f(_0xb83d79);});});}
\ No newline at end of file
index 4d04181..f67ffa3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bff=['save','remove','emit','hasOwnProperty','exports','events','../../mysqldb'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0x1bff,0x186));var _0xf1bf=function(_0x3c81b5,_0x3f5ed7){_0x3c81b5=_0x3c81b5-0x0;var _0x5888c4=_0x1bff[_0x3c81b5];return _0x5888c4;};'use strict';var EventEmitter=require(_0xf1bf('0x0'));var UserNotification=require(_0xf1bf('0x1'))['db']['UserNotification'];var UserNotificationEvents=new EventEmitter();UserNotificationEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xf1bf('0x2'),'afterUpdate':'update','afterDestroy':_0xf1bf('0x3')};function emitEvent(_0x4e3582){return function(_0x2a47e4,_0x21af77,_0x2c888d){UserNotificationEvents[_0xf1bf('0x4')](_0x4e3582+':'+_0x2a47e4['id'],_0x2a47e4);UserNotificationEvents[_0xf1bf('0x4')](_0x4e3582,_0x2a47e4);_0x2c888d(null);};}for(var e in events){if(events[_0xf1bf('0x5')](e)){var event=events[e];UserNotification['hook'](e,emitEvent(event));}}module[_0xf1bf('0x6')]=UserNotificationEvents;
\ No newline at end of file
+var _0x72f9=['../../mysqldb','setMaxListeners','emit','hook','exports','events'];(function(_0x29b07c,_0x47004f){var _0x4b31ab=function(_0xb242a1){while(--_0xb242a1){_0x29b07c['push'](_0x29b07c['shift']());}};_0x4b31ab(++_0x47004f);}(_0x72f9,0x1eb));var _0x972f=function(_0x459b74,_0x5773bd){_0x459b74=_0x459b74-0x0;var _0x46cb16=_0x72f9[_0x459b74];return _0x46cb16;};'use strict';var EventEmitter=require(_0x972f('0x0'));var UserNotification=require(_0x972f('0x1'))['db']['UserNotification'];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x972f('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x53f319){return function(_0x5e24da,_0xc20532,_0x562401){UserNotificationEvents[_0x972f('0x3')](_0x53f319+':'+_0x5e24da['id'],_0x5e24da);UserNotificationEvents[_0x972f('0x3')](_0x53f319,_0x5e24da);_0x562401(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserNotification[_0x972f('0x4')](e,emitEvent(event));}}module[_0x972f('0x5')]=UserNotificationEvents;
\ No newline at end of file
index f9620fd..b610d7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fcf=['UserNotification','userNotifications','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userNotification.attributes','exports','define'];(function(_0x1095ee,_0x33d632){var _0x3bb2fe=function(_0x267e8f){while(--_0x267e8f){_0x1095ee['push'](_0x1095ee['shift']());}};_0x3bb2fe(++_0x33d632);}(_0x3fcf,0x84));var _0xf3fc=function(_0x29b46b,_0x3396d6){_0x29b46b=_0x29b46b-0x0;var _0x1e88d4=_0x3fcf[_0x29b46b];return _0x1e88d4;};'use strict';var _=require('lodash');var util=require(_0xf3fc('0x0'));var logger=require(_0xf3fc('0x1'))(_0xf3fc('0x2'));var moment=require(_0xf3fc('0x3'));var BPromise=require(_0xf3fc('0x4'));var rp=require(_0xf3fc('0x5'));var fs=require('fs');var path=require(_0xf3fc('0x6'));var rimraf=require(_0xf3fc('0x7'));var config=require(_0xf3fc('0x8'));var attributes=require(_0xf3fc('0x9'));module[_0xf3fc('0xa')]=function(_0x4819dc,_0x3a6648){return _0x4819dc[_0xf3fc('0xb')](_0xf3fc('0xc'),attributes,{'tableName':_0xf3fc('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf3fc('0xe'),'collate':_0xf3fc('0xf')});};
\ No newline at end of file
+var _0xdda1=['exports','UserNotification','userNotifications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0xdda1,0x12b));var _0x1dda=function(_0x1f539e,_0x1fa476){_0x1f539e=_0x1f539e-0x0;var _0x15697e=_0xdda1[_0x1f539e];return _0x15697e;};'use strict';var _=require(_0x1dda('0x0'));var util=require(_0x1dda('0x1'));var logger=require(_0x1dda('0x2'))(_0x1dda('0x3'));var moment=require(_0x1dda('0x4'));var BPromise=require('bluebird');var rp=require(_0x1dda('0x5'));var fs=require('fs');var path=require(_0x1dda('0x6'));var rimraf=require(_0x1dda('0x7'));var config=require(_0x1dda('0x8'));var attributes=require('./userNotification.attributes');module[_0x1dda('0x9')]=function(_0x21802c,_0x26d8ab){return _0x21802c['define'](_0x1dda('0xa'),attributes,{'tableName':_0x1dda('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x1dda('0xc'),'collate':_0x1dda('0xd')});};
\ No newline at end of file
index df33222..e97007d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2522=['register','request','then','info','UserNotification,\x20%s,\x20%s','request\x20sent','debug','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./userNotification.socket'];(function(_0x388c32,_0x471012){var _0xbd7321=function(_0x54c89e){while(--_0x54c89e){_0x388c32['push'](_0x388c32['shift']());}};_0xbd7321(++_0x471012);}(_0x2522,0x8a));var _0x2252=function(_0x1123b7,_0x30915f){_0x1123b7=_0x1123b7-0x0;var _0x3b4a64=_0x2522[_0x1123b7];return _0x3b4a64;};'use strict';var _=require(_0x2252('0x0'));var util=require(_0x2252('0x1'));var moment=require('moment');var BPromise=require(_0x2252('0x2'));var rs=require(_0x2252('0x3'));var fs=require('fs');var Redis=require(_0x2252('0x4'));var db=require(_0x2252('0x5'))['db'];var utils=require(_0x2252('0x6'));var logger=require(_0x2252('0x7'))(_0x2252('0x8'));var config=require(_0x2252('0x9'));var jayson=require(_0x2252('0xa'));var client=jayson[_0x2252('0xb')]['http']({'port':0x232a});config['redis']=_[_0x2252('0xc')](config[_0x2252('0xd')],{'host':_0x2252('0xe'),'port':0x18eb});var socket=require(_0x2252('0xf'))(new Redis(config[_0x2252('0xd')]));require(_0x2252('0x10'))[_0x2252('0x11')](socket);function respondWithRpcPromise(_0x158f42,_0xee27bb,_0x525018){return new BPromise(function(_0x2a7e82,_0x39b20a){return client[_0x2252('0x12')](_0x158f42,_0x525018)[_0x2252('0x13')](function(_0x2e5288){logger[_0x2252('0x14')](_0x2252('0x15'),_0xee27bb,_0x2252('0x16'));logger[_0x2252('0x17')](_0x2252('0x18'),_0xee27bb,_0x2252('0x16'),JSON[_0x2252('0x19')](_0x2e5288));if(_0x2e5288[_0x2252('0x1a')]){if(_0x2e5288[_0x2252('0x1a')][_0x2252('0x1b')]===0x1f4){logger[_0x2252('0x1a')](_0x2252('0x15'),_0xee27bb,_0x2e5288[_0x2252('0x1a')]['message']);return _0x39b20a(_0x2e5288[_0x2252('0x1a')]['message']);}logger['error']('UserNotification,\x20%s,\x20%s',_0xee27bb,_0x2e5288[_0x2252('0x1a')]['message']);return _0x2a7e82(_0x2e5288[_0x2252('0x1a')][_0x2252('0x1c')]);}else{logger[_0x2252('0x14')]('UserNotification,\x20%s,\x20%s',_0xee27bb,'request\x20sent');_0x2a7e82(_0x2e5288[_0x2252('0x1d')][_0x2252('0x1c')]);}})[_0x2252('0x1e')](function(_0x58e360){logger['error'](_0x2252('0x15'),_0xee27bb,_0x58e360);_0x39b20a(_0x58e360);});});}
\ No newline at end of file
+var _0x7c50=['then','info','debug','stringify','error','UserNotification,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','jayson/promise','client','redis','socket.io-emitter','register','request'];(function(_0x138c23,_0x299a8c){var _0xe1d5eb=function(_0x1364cc){while(--_0x1364cc){_0x138c23['push'](_0x138c23['shift']());}};_0xe1d5eb(++_0x299a8c);}(_0x7c50,0x1d7));var _0x07c5=function(_0x11946c,_0x12152c){_0x11946c=_0x11946c-0x0;var _0x383935=_0x7c50[_0x11946c];return _0x383935;};'use strict';var _=require('lodash');var util=require(_0x07c5('0x0'));var moment=require(_0x07c5('0x1'));var BPromise=require(_0x07c5('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x07c5('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x07c5('0x4'));var logger=require(_0x07c5('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x07c5('0x6'));var client=jayson[_0x07c5('0x7')]['http']({'port':0x232a});config[_0x07c5('0x8')]=_['defaults'](config[_0x07c5('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x07c5('0x9'))(new Redis(config[_0x07c5('0x8')]));require('./userNotification.socket')[_0x07c5('0xa')](socket);function respondWithRpcPromise(_0x23b2bd,_0x1e35c3,_0x4347b4){return new BPromise(function(_0x3426cf,_0x313f47){return client[_0x07c5('0xb')](_0x23b2bd,_0x4347b4)[_0x07c5('0xc')](function(_0x1a1893){logger[_0x07c5('0xd')]('UserNotification,\x20%s,\x20%s',_0x1e35c3,'request\x20sent');logger[_0x07c5('0xe')]('UserNotification,\x20%s,\x20%s,\x20%s',_0x1e35c3,'request\x20sent',JSON[_0x07c5('0xf')](_0x1a1893));if(_0x1a1893[_0x07c5('0x10')]){if(_0x1a1893['error']['code']===0x1f4){logger['error'](_0x07c5('0x11'),_0x1e35c3,_0x1a1893[_0x07c5('0x10')][_0x07c5('0x12')]);return _0x313f47(_0x1a1893['error']['message']);}logger['error']('UserNotification,\x20%s,\x20%s',_0x1e35c3,_0x1a1893[_0x07c5('0x10')][_0x07c5('0x12')]);return _0x3426cf(_0x1a1893['error']['message']);}else{logger['info'](_0x07c5('0x11'),_0x1e35c3,'request\x20sent');_0x3426cf(_0x1a1893[_0x07c5('0x13')][_0x07c5('0x12')]);}})[_0x07c5('0x14')](function(_0x3b8af2){logger[_0x07c5('0x10')]('UserNotification,\x20%s,\x20%s',_0x1e35c3,_0x3b8af2);_0x313f47(_0x3b8af2);});});}
\ No newline at end of file
index 8eca2e1..01ae414 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a10=['remove','emit','removeListener','length','userNotification:','./userNotification.events'];(function(_0x59bd2f,_0x2758f3){var _0x353d59=function(_0x591259){while(--_0x591259){_0x59bd2f['push'](_0x59bd2f['shift']());}};_0x353d59(++_0x2758f3);}(_0x1a10,0x11f));var _0x01a1=function(_0x2d1e52,_0x3f4ee2){_0x2d1e52=_0x2d1e52-0x0;var _0x55be10=_0x1a10[_0x2d1e52];return _0x55be10;};'use strict';var UserNotificationEvents=require(_0x01a1('0x0'));var events=['save',_0x01a1('0x1'),'update'];function createListener(_0x2d6ec1,_0x2af9d0){return function(_0x4c9e8a){_0x2af9d0[_0x01a1('0x2')](_0x2d6ec1,_0x4c9e8a);};}function removeListener(_0xe87c51,_0x168d15){return function(){UserNotificationEvents[_0x01a1('0x3')](_0xe87c51,_0x168d15);};}exports['register']=function(_0xd460cb){for(var _0x42dd19=0x0,_0x10cd99=events[_0x01a1('0x4')];_0x42dd19<_0x10cd99;_0x42dd19++){var _0x34fe3f=events[_0x42dd19];var _0x3470b3=createListener(_0x01a1('0x5')+_0x34fe3f,_0xd460cb);UserNotificationEvents['on'](_0x34fe3f,_0x3470b3);}};
\ No newline at end of file
+var _0x537e=['save','emit','removeListener','register','length','userNotification:'];(function(_0x4f096e,_0x30d3c3){var _0x4a33ce=function(_0x107ba6){while(--_0x107ba6){_0x4f096e['push'](_0x4f096e['shift']());}};_0x4a33ce(++_0x30d3c3);}(_0x537e,0x1e6));var _0xe537=function(_0x2a574c,_0x10ec94){_0x2a574c=_0x2a574c-0x0;var _0x1cda58=_0x537e[_0x2a574c];return _0x1cda58;};'use strict';var UserNotificationEvents=require('./userNotification.events');var events=[_0xe537('0x0'),'remove','update'];function createListener(_0x3ac478,_0x569c5d){return function(_0x4ecb2d){_0x569c5d[_0xe537('0x1')](_0x3ac478,_0x4ecb2d);};}function removeListener(_0x307eab,_0x3be951){return function(){UserNotificationEvents[_0xe537('0x2')](_0x307eab,_0x3be951);};}exports[_0xe537('0x3')]=function(_0x5f0e6d){for(var _0x5f3551=0x0,_0x4d3ec8=events[_0xe537('0x4')];_0x5f3551<_0x4d3ec8;_0x5f3551++){var _0x307142=events[_0x5f3551];var _0x1cdfd4=createListener(_0xe537('0x5')+_0x307142,_0x5f0e6d);UserNotificationEvents['on'](_0x307142,_0x1cdfd4);}};
\ No newline at end of file
index 522a6d9..0f6abfb 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(_0x1846a5,_0x83090c){var _0x42d6f4=function(_0x13af02){while(--_0x13af02){_0x1846a5['push'](_0x1846a5['shift']());}};_0x42d6f4(++_0x83090c);}(_0x70e0,0x17b));var _0x070e=function(_0x3f7a93,_0x5eb792){_0x3f7a93=_0x3f7a93-0x0;var _0x23d74e=_0x70e0[_0x3f7a93];return _0x23d74e;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x7d1a86,_0x5c6b6b){var _0x49baa2=function(_0x4f8150){while(--_0x4f8150){_0x7d1a86['push'](_0x7d1a86['shift']());}};_0x49baa2(++_0x5c6b6b);}(_0xe706,0xa3));var _0x6e70=function(_0x849e8d,_0x21b681){_0x849e8d=_0x849e8d-0x0;var _0x53d15d=_0xe706[_0x849e8d];return _0x53d15d;};'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 f9c2c2d..7dcfb2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe2a=['exports','INTEGER','sequelize'];(function(_0x4427a5,_0xb6e274){var _0x13e75a=function(_0x5150c0){while(--_0x5150c0){_0x4427a5['push'](_0x4427a5['shift']());}};_0x13e75a(++_0xb6e274);}(_0xbe2a,0x1d9));var _0xabe2=function(_0x1ec64b,_0x29880c){_0x1ec64b=_0x1ec64b-0x0;var _0x33cc55=_0xbe2a[_0x1ec64b];return _0x33cc55;};'use strict';var Sequelize=require(_0xabe2('0x0'));module[_0xabe2('0x1')]={'penalty':{'type':Sequelize[_0xabe2('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xdb06=['exports','INTEGER'];(function(_0x2773e8,_0x5d2cf5){var _0x16223d=function(_0x5b9416){while(--_0x5b9416){_0x2773e8['push'](_0x2773e8['shift']());}};_0x16223d(++_0x5d2cf5);}(_0xdb06,0x1e4));var _0x6db0=function(_0x3970d0,_0x276e10){_0x3970d0=_0x3970d0-0x0;var _0x506222=_0xdb06[_0x3970d0];return _0x506222;};'use strict';var Sequelize=require('sequelize');module[_0x6db0('0x0')]={'penalty':{'type':Sequelize[_0x6db0('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 549f90b..d0cadec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4a0=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','UserOpenchannelQueue','user_has_openchannel_queues','lodash','util'];(function(_0x22cad8,_0x348d20){var _0x5de04e=function(_0x4135fd){while(--_0x4135fd){_0x22cad8['push'](_0x22cad8['shift']());}};_0x5de04e(++_0x348d20);}(_0xd4a0,0x19e));var _0x0d4a=function(_0xeefd50,_0x32776f){_0xeefd50=_0xeefd50-0x0;var _0xbfd07=_0xd4a0[_0xeefd50];return _0xbfd07;};'use strict';var _=require(_0x0d4a('0x0'));var util=require(_0x0d4a('0x1'));var logger=require(_0x0d4a('0x2'))('api');var moment=require(_0x0d4a('0x3'));var BPromise=require(_0x0d4a('0x4'));var rp=require(_0x0d4a('0x5'));var fs=require('fs');var path=require(_0x0d4a('0x6'));var rimraf=require(_0x0d4a('0x7'));var config=require(_0x0d4a('0x8'));var attributes=require('./userOpenchannelQueue.attributes');module[_0x0d4a('0x9')]=function(_0x5e6a16,_0x5262f5){return _0x5e6a16[_0x0d4a('0xa')](_0x0d4a('0xb'),attributes,{'tableName':_0x0d4a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x59b8=['user_has_openchannel_queues','lodash','util','../../config/logger','moment','request-promise','path','./userOpenchannelQueue.attributes','exports','define','UserOpenchannelQueue'];(function(_0x18f132,_0xd5ef75){var _0x11a647=function(_0x1228ad){while(--_0x1228ad){_0x18f132['push'](_0x18f132['shift']());}};_0x11a647(++_0xd5ef75);}(_0x59b8,0xdd));var _0x859b=function(_0x58ca9d,_0x1a4b20){_0x58ca9d=_0x58ca9d-0x0;var _0x3b3993=_0x59b8[_0x58ca9d];return _0x3b3993;};'use strict';var _=require(_0x859b('0x0'));var util=require(_0x859b('0x1'));var logger=require(_0x859b('0x2'))('api');var moment=require(_0x859b('0x3'));var BPromise=require('bluebird');var rp=require(_0x859b('0x4'));var fs=require('fs');var path=require(_0x859b('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x859b('0x6'));module[_0x859b('0x7')]=function(_0x4efc7c,_0x44cf11){return _0x4efc7c[_0x859b('0x8')](_0x859b('0x9'),attributes,{'tableName':_0x859b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5d4885d..21502e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c50=['client','http','request','then','info','UserOpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','util','moment','bluebird','ioredis','../../config/utils','../../config/environment','jayson/promise'];(function(_0x577e78,_0x5b4e98){var _0x276c16=function(_0xe15791){while(--_0xe15791){_0x577e78['push'](_0x577e78['shift']());}};_0x276c16(++_0x5b4e98);}(_0x2c50,0x77));var _0x02c5=function(_0xd7b0a4,_0x53c7d3){_0xd7b0a4=_0xd7b0a4-0x0;var _0x184e9e=_0x2c50[_0xd7b0a4];return _0x184e9e;};'use strict';var _=require('lodash');var util=require(_0x02c5('0x0'));var moment=require(_0x02c5('0x1'));var BPromise=require(_0x02c5('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x02c5('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x02c5('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x02c5('0x5'));var jayson=require(_0x02c5('0x6'));var client=jayson[_0x02c5('0x7')][_0x02c5('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x8f1295,_0x105a83,_0x31ca46){return new BPromise(function(_0x306a9c,_0x3b52c5){return client[_0x02c5('0x9')](_0x8f1295,_0x31ca46)[_0x02c5('0xa')](function(_0x4ed6ad){logger[_0x02c5('0xb')](_0x02c5('0xc'),_0x105a83,_0x02c5('0xd'));logger[_0x02c5('0xe')]('UserOpenchannelQueue,\x20%s,\x20%s,\x20%s',_0x105a83,'request\x20sent',JSON[_0x02c5('0xf')](_0x4ed6ad));if(_0x4ed6ad[_0x02c5('0x10')]){if(_0x4ed6ad['error'][_0x02c5('0x11')]===0x1f4){logger[_0x02c5('0x10')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x105a83,_0x4ed6ad[_0x02c5('0x10')]['message']);return _0x3b52c5(_0x4ed6ad['error'][_0x02c5('0x12')]);}logger[_0x02c5('0x10')](_0x02c5('0xc'),_0x105a83,_0x4ed6ad[_0x02c5('0x10')][_0x02c5('0x12')]);return _0x306a9c(_0x4ed6ad['error'][_0x02c5('0x12')]);}else{logger['info'](_0x02c5('0xc'),_0x105a83,_0x02c5('0xd'));_0x306a9c(_0x4ed6ad[_0x02c5('0x13')]['message']);}})[_0x02c5('0x14')](function(_0x5c499e){logger[_0x02c5('0x10')](_0x02c5('0xc'),_0x105a83,_0x5c499e);_0x3b52c5(_0x5c499e);});});}
\ No newline at end of file
+var _0xfd15=['message','result','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','UserOpenchannelQueue,\x20%s,\x20%s','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0xfd15,0xd1));var _0x5fd1=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xfd15[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require(_0x5fd1('0x0'));var util=require(_0x5fd1('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x5fd1('0x2'));var fs=require('fs');var Redis=require(_0x5fd1('0x3'));var db=require(_0x5fd1('0x4'))['db'];var utils=require(_0x5fd1('0x5'));var logger=require(_0x5fd1('0x6'))(_0x5fd1('0x7'));var config=require('../../config/environment');var jayson=require(_0x5fd1('0x8'));var client=jayson[_0x5fd1('0x9')][_0x5fd1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x35b01e,_0x70b2a9,_0x2ef397){return new BPromise(function(_0x25ddb1,_0x1913e2){return client[_0x5fd1('0xb')](_0x35b01e,_0x2ef397)[_0x5fd1('0xc')](function(_0x31231c){logger[_0x5fd1('0xd')](_0x5fd1('0xe'),_0x70b2a9,'request\x20sent');logger[_0x5fd1('0xf')](_0x5fd1('0x10'),_0x70b2a9,_0x5fd1('0x11'),JSON[_0x5fd1('0x12')](_0x31231c));if(_0x31231c[_0x5fd1('0x13')]){if(_0x31231c[_0x5fd1('0x13')][_0x5fd1('0x14')]===0x1f4){logger[_0x5fd1('0x13')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x70b2a9,_0x31231c[_0x5fd1('0x13')][_0x5fd1('0x15')]);return _0x1913e2(_0x31231c[_0x5fd1('0x13')][_0x5fd1('0x15')]);}logger[_0x5fd1('0x13')](_0x5fd1('0xe'),_0x70b2a9,_0x31231c[_0x5fd1('0x13')]['message']);return _0x25ddb1(_0x31231c[_0x5fd1('0x13')][_0x5fd1('0x15')]);}else{logger[_0x5fd1('0xd')](_0x5fd1('0xe'),_0x70b2a9,_0x5fd1('0x11'));_0x25ddb1(_0x31231c[_0x5fd1('0x16')]['message']);}})['catch'](function(_0x2d497f){logger[_0x5fd1('0x13')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x70b2a9,_0x2d497f);_0x1913e2(_0x2d497f);});});}
\ No newline at end of file
index c8257c4..913152a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6910=['getSections','/:id/resources','/:id/clone','clone','post','addSections','addResources','put','/:id','update','delete','removeSections','removeResources','multer','path','connect-timeout','express','fs-extra','../../components/interaction/service','get','isAuthenticated','index','show','/:id/sections'];(function(_0x15a8f4,_0x176404){var _0x2eab90=function(_0x4f53db){while(--_0x4f53db){_0x15a8f4['push'](_0x15a8f4['shift']());}};_0x2eab90(++_0x176404);}(_0x6910,0xfd));var _0x0691=function(_0x48b00c,_0x16690b){_0x48b00c=_0x48b00c-0x0;var _0x55d181=_0x6910[_0x48b00c];return _0x55d181;};'use strict';var multer=require(_0x0691('0x0'));var util=require('util');var path=require(_0x0691('0x1'));var timeout=require(_0x0691('0x2'));var express=require(_0x0691('0x3'));var router=express['Router']();var fs_extra=require(_0x0691('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x0691('0x5'));var config=require('../../config/environment');var controller=require('./userProfile.controller');router[_0x0691('0x6')]('/',auth[_0x0691('0x7')](),controller[_0x0691('0x8')]);router[_0x0691('0x6')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x0691('0x6')]('/:id',auth[_0x0691('0x7')](),controller[_0x0691('0x9')]);router[_0x0691('0x6')](_0x0691('0xa'),auth[_0x0691('0x7')](),controller[_0x0691('0xb')]);router[_0x0691('0x6')](_0x0691('0xc'),auth['isAuthenticated'](),controller['getResources']);router['post']('/',auth[_0x0691('0x7')](),controller['create']);router['post'](_0x0691('0xd'),auth[_0x0691('0x7')](),controller[_0x0691('0xe')]);router[_0x0691('0xf')](_0x0691('0xa'),auth['isAuthenticated'](),controller[_0x0691('0x10')]);router[_0x0691('0xf')](_0x0691('0xc'),auth[_0x0691('0x7')](),controller[_0x0691('0x11')]);router[_0x0691('0x12')](_0x0691('0x13'),auth[_0x0691('0x7')](),controller[_0x0691('0x14')]);router[_0x0691('0x15')]('/:id',auth[_0x0691('0x7')](),controller['destroy']);router['delete'](_0x0691('0xa'),auth[_0x0691('0x7')](),controller[_0x0691('0x16')]);router[_0x0691('0x15')](_0x0691('0xc'),auth[_0x0691('0x7')](),controller[_0x0691('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0x2849=['index','/describe','describe','getSections','post','create','clone','/:id/sections','addSections','put','/:id','update','delete','destroy','removeSections','/:id/resources','removeResources','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./userProfile.controller','get','isAuthenticated'];(function(_0x1deb03,_0xd05ad8){var _0x189fe7=function(_0x321225){while(--_0x321225){_0x1deb03['push'](_0x1deb03['shift']());}};_0x189fe7(++_0xd05ad8);}(_0x2849,0x66));var _0x9284=function(_0x12c3c7,_0x2ea454){_0x12c3c7=_0x12c3c7-0x0;var _0x25c094=_0x2849[_0x12c3c7];return _0x25c094;};'use strict';var multer=require(_0x9284('0x0'));var util=require(_0x9284('0x1'));var path=require(_0x9284('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x9284('0x3')]();var fs_extra=require(_0x9284('0x4'));var auth=require(_0x9284('0x5'));var interaction=require(_0x9284('0x6'));var config=require('../../config/environment');var controller=require(_0x9284('0x7'));router[_0x9284('0x8')]('/',auth[_0x9284('0x9')](),controller[_0x9284('0xa')]);router[_0x9284('0x8')](_0x9284('0xb'),auth[_0x9284('0x9')](),controller[_0x9284('0xc')]);router[_0x9284('0x8')]('/:id',auth[_0x9284('0x9')](),controller['show']);router[_0x9284('0x8')]('/:id/sections',auth[_0x9284('0x9')](),controller[_0x9284('0xd')]);router['get']('/:id/resources',auth['isAuthenticated'](),controller['getResources']);router[_0x9284('0xe')]('/',auth[_0x9284('0x9')](),controller[_0x9284('0xf')]);router[_0x9284('0xe')]('/:id/clone',auth[_0x9284('0x9')](),controller[_0x9284('0x10')]);router[_0x9284('0xe')](_0x9284('0x11'),auth[_0x9284('0x9')](),controller[_0x9284('0x12')]);router[_0x9284('0xe')]('/:id/resources',auth[_0x9284('0x9')](),controller['addResources']);router[_0x9284('0x13')](_0x9284('0x14'),auth[_0x9284('0x9')](),controller[_0x9284('0x15')]);router[_0x9284('0x16')](_0x9284('0x14'),auth[_0x9284('0x9')](),controller[_0x9284('0x17')]);router['delete'](_0x9284('0x11'),auth[_0x9284('0x9')](),controller[_0x9284('0x18')]);router[_0x9284('0x16')](_0x9284('0x19'),auth[_0x9284('0x9')](),controller[_0x9284('0x1a')]);module[_0x9284('0x1b')]=router;
\ No newline at end of file
index 217c688..79dbff1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb513=['sequelize','exports','STRING','crudPermissions','join','getDataValue','split','BOOLEAN'];(function(_0x52a6e3,_0x4a73b4){var _0x8910d0=function(_0x57e5ef){while(--_0x57e5ef){_0x52a6e3['push'](_0x52a6e3['shift']());}};_0x8910d0(++_0x4a73b4);}(_0xb513,0x118));var _0x3b51=function(_0x3d4ef1,_0x5a957c){_0x3d4ef1=_0x3d4ef1-0x0;var _0x409423=_0xb513[_0x3d4ef1];return _0x409423;};'use strict';var Sequelize=require(_0x3b51('0x0'));module[_0x3b51('0x1')]={'name':{'type':Sequelize[_0x3b51('0x2')],'allowNull':![],'unique':'name'},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x4d1a6f){this['setDataValue'](_0x3b51('0x3'),_0x4d1a6f?_0x4d1a6f[_0x3b51('0x4')](''):[]);},'get':function(){return this[_0x3b51('0x5')](_0x3b51('0x3'))?this[_0x3b51('0x5')](_0x3b51('0x3'))[_0x3b51('0x6')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x3b51('0x7')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0x3b51('0x7')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0x3b51('0x7')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0x3b51('0x7')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0x3b51('0x7')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x3b51('0x7')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xfd87=['name','crudPermissions','join','getDataValue','BOOLEAN','sequelize','exports','STRING'];(function(_0x4bcefe,_0x45fbe2){var _0x5c1d49=function(_0x2140cc){while(--_0x2140cc){_0x4bcefe['push'](_0x4bcefe['shift']());}};_0x5c1d49(++_0x45fbe2);}(_0xfd87,0x16d));var _0x7fd8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfd87[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x7fd8('0x0'));module[_0x7fd8('0x1')]={'name':{'type':Sequelize[_0x7fd8('0x2')],'allowNull':![],'unique':_0x7fd8('0x3')},'crudPermissions':{'type':Sequelize[_0x7fd8('0x2')],'set':function(_0x453dee){this['setDataValue'](_0x7fd8('0x4'),_0x453dee?_0x453dee[_0x7fd8('0x5')](''):[]);},'get':function(){return this[_0x7fd8('0x6')](_0x7fd8('0x4'))?this[_0x7fd8('0x6')](_0x7fd8('0x4'))['split'](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x7fd8('0x7')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0x7fd8('0x7')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0x7fd8('0x7')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0x7fd8('0x7')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x7fd8('0x7')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0x7fd8('0x7')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x7fd8('0x7')],'defaultValue':!![]}};
\ No newline at end of file
index 636b00d..8e69474 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd05a=['path','sox','to-csv','lodash','squel','crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','register','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','name','index','map','UserProfile','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','include','rows','catch','show','params','includeAll','find','create','body','clone','get','omit','createdAt','updatedAt','crudPermissions','transaction','each','autoAssociation','UserProfileResource','findAll','userProfileId','UserProfileSection','Resources','describe','sequelize','sectionId','push','removeSections','ids','getSections','enabled','includes','isEmpty','subsections','findOne','Dashboard','forEach','Plugin','resourceId','addResources','bulkCreate','getResources','section','Missing\x20section\x20parameter','No\x20User\x20Profile\x20found\x20for\x20id\x20','rimraf','zip-dir','mustache','util'];(function(_0x31ebd9,_0x3b1ea0){var _0x3766d7=function(_0x3fb501){while(--_0x3fb501){_0x31ebd9['push'](_0x31ebd9['shift']());}};_0x3766d7(++_0x3b1ea0);}(_0xd05a,0x143));var _0xad05=function(_0x25b3d5,_0x4f0a26){_0x25b3d5=_0x25b3d5-0x0;var _0x130bd9=_0xd05a[_0x25b3d5];return _0x130bd9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xad05('0x0'));var zipdir=require(_0xad05('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xad05('0x2'));var util=require(_0xad05('0x3'));var path=require(_0xad05('0x4'));var sox=require(_0xad05('0x5'));var csv=require(_0xad05('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xad05('0x7'));var squel=require(_0xad05('0x8'));var crypto=require(_0xad05('0x9'));var jsforce=require('jsforce');var deskjs=require(_0xad05('0xa'));var toCsv=require(_0xad05('0x6'));var querystring=require(_0xad05('0xb'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xad05('0xc'));var qs=require('../../components/parsers/qs');var as=require(_0xad05('0xd'));var hardwareService=require(_0xad05('0xe'));var logger=require(_0xad05('0xf'))(_0xad05('0x10'));var utils=require(_0xad05('0x11'));var config=require(_0xad05('0x12'));var licenseUtil=require(_0xad05('0x13'));var db=require(_0xad05('0x14'))['db'];config[_0xad05('0x15')]=_[_0xad05('0x16')](config['redis'],{'host':_0xad05('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xad05('0x15')]));require('./userProfile.socket')[_0xad05('0x18')](socket);function respondWithStatusCode(_0x24da60,_0x44a508){_0x44a508=_0x44a508||0xcc;return function(_0x50609d){if(_0x50609d){return _0x24da60[_0xad05('0x19')](_0x44a508);}return _0x24da60['status'](_0x44a508)[_0xad05('0x1a')]();};}function respondWithResult(_0x2bf8e9,_0x29c296){_0x29c296=_0x29c296||0xc8;return function(_0x3d7eda){if(_0x3d7eda){return _0x2bf8e9[_0xad05('0x1b')](_0x29c296)[_0xad05('0x1c')](_0x3d7eda);}};}function respondWithFilteredResult(_0x534b28,_0x30d013){return function(_0x6c363b){if(_0x6c363b){var _0x9dc4d3=typeof _0x30d013[_0xad05('0x1d')]===_0xad05('0x1e')&&typeof _0x30d013[_0xad05('0x1f')]===_0xad05('0x1e');var _0x4578af=_0x6c363b[_0xad05('0x20')];var _0x2a7e2f=_0x9dc4d3?0x0:_0x30d013[_0xad05('0x1d')];var _0x530ce3=_0x9dc4d3?_0x6c363b[_0xad05('0x20')]:_0x30d013[_0xad05('0x1d')]+_0x30d013[_0xad05('0x1f')];var _0x5e6354;if(_0x530ce3>=_0x4578af){_0x530ce3=_0x4578af;_0x5e6354=0xc8;}else{_0x5e6354=0xce;}_0x534b28[_0xad05('0x1b')](_0x5e6354);return _0x534b28['set'](_0xad05('0x21'),_0x2a7e2f+'-'+_0x530ce3+'/'+_0x4578af)[_0xad05('0x1c')](_0x6c363b);}return null;};}function patchUpdates(_0x46a3be){return function(_0x37ddb5){try{jsonpatch[_0xad05('0x22')](_0x37ddb5,_0x46a3be,!![]);}catch(_0x1fdc81){return BPromise[_0xad05('0x23')](_0x1fdc81);}return _0x37ddb5[_0xad05('0x24')]();};}function saveUpdates(_0x33c97e,_0x422698){return function(_0x545637){if(_0x545637){return _0x545637[_0xad05('0x25')](_0x33c97e)[_0xad05('0x26')](function(_0x2a4620){return _0x2a4620;});}return null;};}function removeEntity(_0x2b515d,_0x48d25f){return function(_0x391bf0){if(_0x391bf0){return _0x391bf0[_0xad05('0x27')]()[_0xad05('0x26')](function(){_0x2b515d[_0xad05('0x1b')](0xcc)[_0xad05('0x1a')]();});}};}function handleEntityNotFound(_0x206abc,_0x44d8d4){return function(_0x5c04f3){if(!_0x5c04f3){_0x206abc['sendStatus'](0x194);}return _0x5c04f3;};}function handleError(_0x264287,_0x32953a){_0x32953a=_0x32953a||0x1f4;return function(_0x91ed1d){logger['error'](_0x91ed1d['stack']);if(_0x91ed1d[_0xad05('0x28')]){delete _0x91ed1d[_0xad05('0x28')];}_0x264287[_0xad05('0x1b')](_0x32953a)['send'](_0x91ed1d);};}exports[_0xad05('0x29')]=function(_0xcfea8c,_0x594ea3){var _0x206a17={},_0x19b9f1={},_0x203158={'count':0x0,'rows':[]};var _0x36face=_[_0xad05('0x2a')](db[_0xad05('0x2b')][_0xad05('0x2c')],function(_0x5ea097){return{'name':_0x5ea097[_0xad05('0x2d')],'type':_0x5ea097[_0xad05('0x2e')]['key']};});_0x19b9f1[_0xad05('0x2f')]=_[_0xad05('0x2a')](_0x36face,'name');_0x19b9f1[_0xad05('0x30')]=_[_0xad05('0x31')](_0xcfea8c[_0xad05('0x30')]);_0x19b9f1[_0xad05('0x32')]=_[_0xad05('0x33')](_0x19b9f1[_0xad05('0x2f')],_0x19b9f1[_0xad05('0x30')]);_0x206a17[_0xad05('0x34')]=_[_0xad05('0x33')](_0x19b9f1[_0xad05('0x2f')],qs[_0xad05('0x35')](_0xcfea8c['query']['fields']));_0x206a17['attributes']=_0x206a17['attributes'][_0xad05('0x36')]?_0x206a17[_0xad05('0x34')]:_0x19b9f1[_0xad05('0x2f')];if(!_0xcfea8c[_0xad05('0x30')]['hasOwnProperty'](_0xad05('0x37'))){_0x206a17[_0xad05('0x1f')]=qs[_0xad05('0x1f')](_0xcfea8c[_0xad05('0x30')]['limit']);_0x206a17[_0xad05('0x1d')]=qs['offset'](_0xcfea8c[_0xad05('0x30')][_0xad05('0x1d')]);}_0x206a17[_0xad05('0x38')]=qs['sort'](_0xcfea8c[_0xad05('0x30')][_0xad05('0x39')]);_0x206a17[_0xad05('0x3a')]=qs[_0xad05('0x32')](_[_0xad05('0x3b')](_0xcfea8c[_0xad05('0x30')],_0x19b9f1[_0xad05('0x32')]),_0x36face);if(_0xcfea8c[_0xad05('0x30')]['filter']){_0x206a17[_0xad05('0x3a')]=_[_0xad05('0x3c')](_0x206a17[_0xad05('0x3a')],{'$or':_[_0xad05('0x2a')](_0x36face,function(_0x4655cb){if(_0x4655cb[_0xad05('0x2e')]!==_0xad05('0x3d')){var _0x1ccfde={};_0x1ccfde[_0x4655cb[_0xad05('0x28')]]={'$like':'%'+_0xcfea8c['query'][_0xad05('0x3e')]+'%'};return _0x1ccfde;}})});}_0x206a17=_[_0xad05('0x3c')]({},_0x206a17,_0xcfea8c[_0xad05('0x3f')]);var _0x26bd70={'where':_0x206a17[_0xad05('0x3a')]};return db[_0xad05('0x2b')][_0xad05('0x20')](_0x26bd70)[_0xad05('0x26')](function(_0x4cfcf0){_0x203158[_0xad05('0x20')]=_0x4cfcf0;if(_0xcfea8c[_0xad05('0x30')]['includeAll']){_0x206a17[_0xad05('0x40')]=[{'all':!![]}];}return db[_0xad05('0x2b')]['findAll'](_0x206a17);})[_0xad05('0x26')](function(_0x21007b){_0x203158[_0xad05('0x41')]=_0x21007b;return _0x203158;})['then'](respondWithFilteredResult(_0x594ea3,_0x206a17))[_0xad05('0x42')](handleError(_0x594ea3,null));};exports[_0xad05('0x43')]=function(_0x14fc94,_0x41fbd0){var _0x513ecb={'raw':![],'where':{'id':_0x14fc94[_0xad05('0x44')]['id']}},_0x26c338={};_0x26c338[_0xad05('0x2f')]=_[_0xad05('0x31')](db[_0xad05('0x2b')]['rawAttributes']);_0x26c338[_0xad05('0x30')]=_[_0xad05('0x31')](_0x14fc94[_0xad05('0x30')]);_0x26c338['filters']=_[_0xad05('0x33')](_0x26c338[_0xad05('0x2f')],_0x26c338[_0xad05('0x30')]);_0x513ecb[_0xad05('0x34')]=_[_0xad05('0x33')](_0x26c338[_0xad05('0x2f')],qs[_0xad05('0x35')](_0x14fc94['query'][_0xad05('0x35')]));_0x513ecb['attributes']=_0x513ecb[_0xad05('0x34')][_0xad05('0x36')]?_0x513ecb[_0xad05('0x34')]:_0x26c338[_0xad05('0x2f')];if(_0x14fc94[_0xad05('0x30')][_0xad05('0x45')]){_0x513ecb[_0xad05('0x40')]=[{'all':!![]}];}_0x513ecb=_[_0xad05('0x3c')]({},_0x513ecb,_0x14fc94[_0xad05('0x3f')]);return db[_0xad05('0x2b')][_0xad05('0x46')](_0x513ecb)[_0xad05('0x26')](handleEntityNotFound(_0x41fbd0,null))[_0xad05('0x26')](respondWithResult(_0x41fbd0,null))[_0xad05('0x42')](handleError(_0x41fbd0,null));};exports[_0xad05('0x47')]=function(_0x56d036,_0x3e61a4){return db[_0xad05('0x2b')][_0xad05('0x47')](_0x56d036[_0xad05('0x48')],{})[_0xad05('0x26')](respondWithResult(_0x3e61a4,0xc9))['catch'](handleError(_0x3e61a4,null));};exports[_0xad05('0x49')]=function(_0x540a4f,_0x5b7d80){var _0x2164e7={'where':{'id':_0x540a4f[_0xad05('0x44')]['id']}},_0x4ceb17={};_0x4ceb17['model']=_['keys'](db['UserProfile'][_0xad05('0x2c')]);_0x2164e7['attributes']=_[_0xad05('0x33')](_0x4ceb17[_0xad05('0x2f')],qs[_0xad05('0x35')](_0x540a4f['query'][_0xad05('0x35')]));_0x2164e7[_0xad05('0x34')]=_0x2164e7['attributes'][_0xad05('0x36')]?_0x2164e7[_0xad05('0x34')]:_0x4ceb17['model'];if(_0x540a4f[_0xad05('0x30')]['includeAll']){_0x2164e7['include']=[{'all':!![]}];}_0x2164e7=_[_0xad05('0x3c')]({},_0x2164e7,_0x540a4f[_0xad05('0x3f')]);return db[_0xad05('0x2b')][_0xad05('0x46')](_0x2164e7)[_0xad05('0x26')](handleEntityNotFound(_0x5b7d80,null))[_0xad05('0x26')](function(_0x1cc306){if(_0x1cc306){var _0x21883b=_0x1cc306[_0xad05('0x4a')]({'plain':!![]});_0x21883b=qs[_0xad05('0x4b')](_0x21883b,['id',_0xad05('0x4c'),_0xad05('0x4d'),_0xad05('0x4e')]);_0x540a4f['body']=_[_0xad05('0x4b')](_0x540a4f[_0xad05('0x48')],['id','createdAt',_0xad05('0x4d')]);return db['sequelize'][_0xad05('0x4f')](function(_0xd4d00f){return db[_0xad05('0x2b')][_0xad05('0x47')](_[_0xad05('0x3c')](_0x21883b,_0x540a4f['body']),{'include':_0x540a4f['query'][_0xad05('0x45')]?[{'all':!![]}]:undefined,'transaction':_0xd4d00f})[_0xad05('0x26')](function(_0x4fcdd5){var _0x2604f1=_0x4fcdd5[_0xad05('0x4a')]({'plain':!![]});return db['UserProfileSection']['findAll']({'where':{'userProfileId':_0x540a4f[_0xad05('0x44')]['id']},'raw':!![]})[_0xad05('0x26')](function(_0x59c8c5){if(_0x59c8c5){return BPromise[_0xad05('0x50')](_0x59c8c5,function(_0x670d2d){return new BPromise(function(_0x1e10e8,_0x49c73a){if(_0x670d2d[_0xad05('0x51')]===null||_0x670d2d[_0xad05('0x51')]===0x1)_0x1e10e8(null);return db[_0xad05('0x52')][_0xad05('0x53')]({'where':{'sectionId':_0x670d2d['id']},'raw':!![]})[_0xad05('0x26')](function(_0x39ea3f){var _0x350e6f=_[_0xad05('0x2a')](_0x39ea3f,function(_0x44f659){return qs[_0xad05('0x4b')](_0x44f659,['id',_0xad05('0x4c'),_0xad05('0x4d'),'sectionId']);});_0x1e10e8(_0x350e6f);})[_0xad05('0x42')](function(_0x4b4907){_0x49c73a(_0x4b4907);});})[_0xad05('0x26')](function(_0x2f80da){var _0x251256=qs[_0xad05('0x4b')](_0x670d2d,['id',_0xad05('0x4c'),_0xad05('0x4d')]);_0x251256[_0xad05('0x54')]=_0x2604f1['id'];if(_0x2f80da)_0x251256['Resources']=_0x2f80da;return _0x251256;})[_0xad05('0x26')](function(_0x5071ed){return db[_0xad05('0x55')][_0xad05('0x47')](_0x5071ed,{'include':[{'model':db['UserProfileResource'],'as':_0xad05('0x56')}],'raw':!![],'transaction':_0xd4d00f});});})[_0xad05('0x26')](function(){return _0x2604f1;});}});});});}})[_0xad05('0x26')](respondWithResult(_0x5b7d80,0xc9))['catch'](handleError(_0x5b7d80,null));};exports[_0xad05('0x25')]=function(_0x292c9b,_0x3d4ce9){if(_0x292c9b['body']['id']){delete _0x292c9b[_0xad05('0x48')]['id'];}return db['UserProfile'][_0xad05('0x46')]({'where':{'id':_0x292c9b[_0xad05('0x44')]['id']}})[_0xad05('0x26')](handleEntityNotFound(_0x3d4ce9,null))['then'](saveUpdates(_0x292c9b[_0xad05('0x48')],null))['then'](respondWithResult(_0x3d4ce9,null))[_0xad05('0x42')](handleError(_0x3d4ce9,null));};exports[_0xad05('0x27')]=function(_0x3fe887,_0x2ac74a){return db['UserProfile'][_0xad05('0x46')]({'where':{'id':_0x3fe887[_0xad05('0x44')]['id']}})[_0xad05('0x26')](handleEntityNotFound(_0x2ac74a,null))[_0xad05('0x26')](removeEntity(_0x2ac74a,null))['catch'](handleError(_0x2ac74a,null));};exports[_0xad05('0x57')]=function(_0x3df464,_0x4f6e91){return db['UserProfile']['describe']()[_0xad05('0x26')](respondWithResult(_0x4f6e91,null))['catch'](handleError(_0x4f6e91,null));};exports['addSections']=function(_0x51f805,_0x5abf6b){var _0x278d1e=_0x51f805['body'];return db[_0xad05('0x2b')]['find']({'where':{'id':_0x51f805[_0xad05('0x44')]['id']}})[_0xad05('0x26')](handleEntityNotFound(_0x5abf6b,null))['then'](function(_0x2d1d83){if(_0x2d1d83){return db[_0xad05('0x58')][_0xad05('0x4f')](function(_0x1b1508){return db[_0xad05('0x55')][_0xad05('0x27')]({'where':{'userProfileId':_0x51f805['params']['id'],'sectionId':_[_0xad05('0x2a')](_0x278d1e,function(_0x3fd5b0){return _0x3fd5b0[_0xad05('0x59')];})},'transaction':_0x1b1508})['then'](function(){var _0x29a0f4=_['map'](_0x278d1e,function(_0x5b5a13){_0x5b5a13[_0xad05('0x54')]=_0x51f805[_0xad05('0x44')]['id'];return _0x5b5a13;});var _0x1786b4=[];return BPromise[_0xad05('0x50')](_0x29a0f4,function(_0x3200a9){return db[_0xad05('0x55')][_0xad05('0x47')](_0x3200a9,{'include':[{'model':db[_0xad05('0x52')],'as':'Resources'}],'raw':!![],'transaction':_0x1b1508})[_0xad05('0x26')](function(_0x4f1117){_0x1786b4[_0xad05('0x5a')](_0x4f1117[_0xad05('0x4a')]({'plain':!![]}));});})[_0xad05('0x26')](function(){return _0x1786b4;});});});}})[_0xad05('0x26')](function(_0xfdec36){return _0xfdec36;})[_0xad05('0x26')](respondWithResult(_0x5abf6b,null))[_0xad05('0x42')](handleError(_0x5abf6b,null));};exports[_0xad05('0x5b')]=function(_0xb79167,_0x5814e9){var _0x47680d;return db[_0xad05('0x2b')]['find']({'where':{'id':_0xb79167[_0xad05('0x44')]['id']},'attributes':['id',_0xad05('0x28')]})[_0xad05('0x26')](handleEntityNotFound(_0x5814e9,null))[_0xad05('0x26')](function(_0x35e985){if(_0x35e985){_0x47680d=_0x35e985;return db[_0xad05('0x55')][_0xad05('0x27')]({'where':{'userProfileId':_0xb79167['params']['id'],'sectionId':_0xb79167[_0xad05('0x30')][_0xad05('0x5c')]}});}})[_0xad05('0x26')](function(){return _0x47680d;})[_0xad05('0x26')](respondWithStatusCode(_0x5814e9,null))[_0xad05('0x42')](handleError(_0x5814e9,null));};exports[_0xad05('0x5d')]=function(_0x17b4e1,_0x4410c6){var _0x233870=[];var _0x39d656=[];return db[_0xad05('0x55')][_0xad05('0x53')]({'where':{'userProfileId':_0x17b4e1[_0xad05('0x44')]['id']},'raw':!![]})[_0xad05('0x26')](function(_0x318c5d){_0x233870=_[_0xad05('0x3e')](_0x318c5d,function(_0x5e117e){return _0x5e117e[_0xad05('0x5e')]===0x1||_[_0xad05('0x5f')]([0x3eb,0x709],_0x5e117e[_0xad05('0x59')]);});if(!_[_0xad05('0x60')](_0x233870)){return _[_0xad05('0x2a')](_0x233870,function(_0x19086f){return _0x19086f['sectionId'];});}else{return;}})[_0xad05('0x26')](function(_0x4152c2){if(_0x4152c2)_0x39d656=_0x4152c2;if(_[_0xad05('0x5f')](_0x39d656,0x64)){var _0x2682dc=_[_0xad05('0x46')](_0x233870,{'sectionId':0x64});return hasDefaultDashboard(_0x2682dc)[_0xad05('0x26')](function(_0xdd7134){return _[_0xad05('0x2a')](_0x233870,function(_0xd95d11){if(_0xd95d11[_0xad05('0x59')]===0x64){_0xd95d11[_0xad05('0x61')]=_0xdd7134;}return _0xd95d11;});});}else{return;}})['then'](function(_0x26bd2c){if(_0x26bd2c)_0x233870=_0x26bd2c;if(_[_0xad05('0x5f')](_0x39d656,0x3eb)){var _0x82dd58=_['find'](_0x233870,{'sectionId':0x3eb});return getCustomDashboards(_0x82dd58)[_0xad05('0x26')](function(_0x290a89){return _[_0xad05('0x2a')](_0x233870,function(_0x191b77){if(_0x82dd58['enabled']){if(_0x191b77[_0xad05('0x59')]===0x3eb){_0x191b77[_0xad05('0x61')]=_0x290a89;}}else{if(_0x191b77[_0xad05('0x59')]===0x64){_0x191b77[_0xad05('0x61')]=_0x290a89;}}return _0x191b77;});});}else{return;}})[_0xad05('0x26')](function(_0x2ac7fa){if(_0x2ac7fa)_0x233870=_0x2ac7fa;if(_[_0xad05('0x5f')](_0x39d656,0x709)){var _0x18fff1=_[_0xad05('0x46')](_0x233870,{'sectionId':0x709});return getPlugins(_0x18fff1)[_0xad05('0x26')](function(_0x374226){if(_0x18fff1[_0xad05('0x5e')]){return _['map'](_0x233870,function(_0x2fd57f){if(_0x2fd57f['sectionId']===0x709){_0x2fd57f[_0xad05('0x61')]=_0x374226;}return _0x2fd57f;});}else{var _0x68f303={'sectionId':0x76c,'enabled':0x1,'subsections':_0x374226};var _0x5d9ad3=_[_0xad05('0x2a')](_0x233870);_0x5d9ad3[_0xad05('0x5a')](_0x68f303);return _0x5d9ad3;}});}else{return;}})[_0xad05('0x26')](function(_0x33813e){if(_0x33813e)_0x233870=_0x33813e;return _['filter'](_0x233870,[_0xad05('0x5e'),0x1]);})[_0xad05('0x26')](respondWithResult(_0x4410c6,null))[_0xad05('0x42')](handleError(_0x4410c6,null));};function hasDefaultDashboard(_0x415ce5){var _0x8dbb9a=[0x65];return new BPromise(function(_0x494eae,_0x120ee1){try{if(_0x415ce5[_0xad05('0x51')]){_0x494eae(_0x8dbb9a);}else{return db[_0xad05('0x52')][_0xad05('0x62')]({'where':{'sectionId':_0x415ce5['id']},'raw':!![]})[_0xad05('0x26')](function(_0xecffd2){_0xecffd2?_0x494eae(_0x8dbb9a):_0x494eae();});}}catch(_0x5a9f98){_0x120ee1(_0x5a9f98);}});}function getCustomDashboards(_0x521ee0){var _0x58ed8b=[];return new BPromise(function(_0x597a77,_0x15434a){try{if(_0x521ee0[_0xad05('0x51')]){return db[_0xad05('0x63')][_0xad05('0x53')]({'raw':!![]})[_0xad05('0x26')](function(_0x389c7a){_0x389c7a[_0xad05('0x64')](function(_0xb536f4){_0x58ed8b[_0xad05('0x5a')](_0xb536f4['id']+0x1869f);});_0x597a77(_0x58ed8b);});}else{return db['UserProfileResource'][_0xad05('0x53')]({'where':{'sectionId':_0x521ee0['id']},'raw':!![]})[_0xad05('0x26')](function(_0x42ec49){_0x42ec49[_0xad05('0x64')](function(_0x8a615f){_0x58ed8b[_0xad05('0x5a')](_0x8a615f['resourceId']+0x1869f);});_0x597a77(_0x58ed8b);});}}catch(_0x346ba1){_0x15434a(_0x346ba1);}});}function getPlugins(_0x172302){var _0x2d4e76=[];return new BPromise(function(_0x32dfa7,_0x105930){try{if(_0x172302['autoAssociation']){return db[_0xad05('0x65')][_0xad05('0x53')]({'raw':!![]})['then'](function(_0xd7b3b1){_0xd7b3b1[_0xad05('0x64')](function(_0x37b99c){_0x2d4e76[_0xad05('0x5a')](_0x37b99c['id']+0x15b38);});_0x32dfa7(_0x2d4e76);});}else{return db[_0xad05('0x52')]['findAll']({'where':{'sectionId':_0x172302['id']},'raw':!![]})['then'](function(_0x4b0105){_0x4b0105['forEach'](function(_0x510b99){_0x2d4e76[_0xad05('0x5a')](_0x510b99[_0xad05('0x66')]+0x15b38);});_0x32dfa7(_0x2d4e76);});}}catch(_0x5a63ad){_0x105930(_0x5a63ad);}});}exports[_0xad05('0x67')]=function(_0x29059a,_0x4088bc){return db[_0xad05('0x2b')][_0xad05('0x46')]({'where':{'id':_0x29059a['params']['id']}})[_0xad05('0x26')](handleEntityNotFound(_0x4088bc,null))[_0xad05('0x26')](function(_0x495df8){if(_0x495df8){return db['sequelize'][_0xad05('0x4f')](function(_0x5c4531){return db[_0xad05('0x55')][_0xad05('0x53')]({'where':{'userProfileId':_0x29059a[_0xad05('0x44')]['id']},'attributes':['id'],'raw':!![]})[_0xad05('0x26')](function(_0x13cc9b){if(_0x13cc9b){return db['UserProfileSection'][_0xad05('0x27')]({'where':{'userProfileId':_0x29059a[_0xad05('0x44')]['id'],'id':_['map'](_0x13cc9b,function(_0x41057f){return _0x41057f['id'];})},'transaction':_0x5c4531});}})[_0xad05('0x26')](function(_0x163d5f){var _0x204239=_[_0xad05('0x2a')](_0x29059a[_0xad05('0x48')],function(_0x39f7ec){_0x39f7ec[_0xad05('0x54')]=_0x29059a[_0xad05('0x44')]['id'];return _0x39f7ec;});return db[_0xad05('0x55')]['bulkCreate'](_0x204239,{'raw':!![],'transaction':_0x5c4531});})[_0xad05('0x26')](function(_0x310dfc){var _0x305676=_[_0xad05('0x3e')](_['map'](_0x310dfc,function(_0x13244d){return _0x13244d[_0xad05('0x4a')]({'plain':!![]});}),{'includeAll':![]});if(_0x305676){return db['UserProfileSection']['findAll']({'where':{'userProfileId':_0x29059a[_0xad05('0x44')]['id'],'sectionId':_[_0xad05('0x2a')](_0x305676,function(_0x110376){return _0x110376['sectionId'];})},'attributes':['id','sectionId'],'raw':!![]})[_0xad05('0x26')](function(_0x103d73){var _0x606772=_[_0xad05('0x2a')](_0x29059a[_0xad05('0x48')],function(_0x2cefda){_0x2cefda[_0xad05('0x54')]=_0x29059a['params']['id'];return _0x2cefda;});return db['UserProfileResource'][_0xad05('0x68')](_0x606772,{'raw':!![],'transaction':_0x5c4531});});}})[_0xad05('0x42')](handleError(_0x4088bc,null));});}})[_0xad05('0x26')](function(_0x206ac8){var _0x5f5062=_[_0xad05('0x2a')](_0x206ac8,function(_0xa11296){return _0xa11296['get']({'plain':!![]});});})[_0xad05('0x26')](respondWithResult(_0x4088bc,null))['catch'](handleError(_0x4088bc,null));};exports['removeResources']=function(_0x86a5a7,_0x405905,_0x17d2a1){return db[_0xad05('0x2b')][_0xad05('0x46')]({'where':{'id':_0x86a5a7[_0xad05('0x44')]['id']}})[_0xad05('0x26')](handleEntityNotFound(_0x405905,null))[_0xad05('0x26')](function(_0x5e7a7e){if(_0x5e7a7e){return _0x5e7a7e['removeResources'](_0x86a5a7[_0xad05('0x30')][_0xad05('0x5c')]);}})[_0xad05('0x26')](respondWithStatusCode(_0x405905,null))[_0xad05('0x42')](handleError(_0x405905,null));};exports[_0xad05('0x69')]=function(_0x6df81e,_0xd561e4){var _0x3f0536={};if(!_0x6df81e[_0xad05('0x30')][_0xad05('0x6a')])throw new Error(_0xad05('0x6b'));if(!_0x6df81e['query']['hasOwnProperty']('nolimit')){_0x3f0536[_0xad05('0x1f')]=qs[_0xad05('0x1f')](_0x6df81e[_0xad05('0x30')][_0xad05('0x1f')]);_0x3f0536['offset']=qs[_0xad05('0x1d')](_0x6df81e[_0xad05('0x30')][_0xad05('0x1d')]);}return db[_0xad05('0x2b')][_0xad05('0x46')]({'where':{'id':_0x6df81e[_0xad05('0x44')]['id']}})[_0xad05('0x26')](function(_0x8a656){if(!_0x8a656)throw new Error(_0xad05('0x6c')+_0x6df81e['params']['id']);return db[_0xad05('0x2b')][_0xad05('0x69')](_0x6df81e);})[_0xad05('0x26')](respondWithFilteredResult(_0xd561e4,_0x3f0536))['catch'](handleError(_0xd561e4,null));};
\ No newline at end of file
+var _0x6f3e=['sort','filter','where','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','clone','omit','updatedAt','crudPermissions','createdAt','sequelize','transaction','get','UserProfileSection','each','autoAssociation','UserProfileResource','sectionId','userProfileId','Resources','describe','addSections','ids','enabled','includes','subsections','push','forEach','Plugin','resourceId','addResources','bulkCreate','removeResources','section','No\x20User\x20Profile\x20found\x20for\x20id\x20','getResources','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./userProfile.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','error','stack','name','index','map','UserProfile','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order'];(function(_0x25ea25,_0x1e6541){var _0x150ba9=function(_0x3ba1ee){while(--_0x3ba1ee){_0x25ea25['push'](_0x25ea25['shift']());}};_0x150ba9(++_0x1e6541);}(_0x6f3e,0x9f));var _0xe6f3=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6f3e[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0xe6f3('0x0'));var rimraf=require(_0xe6f3('0x1'));var zipdir=require(_0xe6f3('0x2'));var jsonpatch=require(_0xe6f3('0x3'));var rp=require(_0xe6f3('0x4'));var moment=require(_0xe6f3('0x5'));var BPromise=require(_0xe6f3('0x6'));var Mustache=require('mustache');var util=require(_0xe6f3('0x7'));var path=require(_0xe6f3('0x8'));var sox=require('sox');var csv=require(_0xe6f3('0x9'));var ejs=require(_0xe6f3('0xa'));var fs=require('fs');var fs_extra=require(_0xe6f3('0xb'));var _=require('lodash');var squel=require(_0xe6f3('0xc'));var crypto=require(_0xe6f3('0xd'));var jsforce=require(_0xe6f3('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xe6f3('0x9'));var querystring=require('querystring');var Papa=require(_0xe6f3('0xf'));var Redis=require(_0xe6f3('0x10'));var authService=require(_0xe6f3('0x11'));var qs=require(_0xe6f3('0x12'));var as=require(_0xe6f3('0x13'));var hardwareService=require(_0xe6f3('0x14'));var logger=require('../../config/logger')(_0xe6f3('0x15'));var utils=require('../../config/utils');var config=require(_0xe6f3('0x16'));var licenseUtil=require(_0xe6f3('0x17'));var db=require(_0xe6f3('0x18'))['db'];config[_0xe6f3('0x19')]=_['defaults'](config[_0xe6f3('0x19')],{'host':_0xe6f3('0x1a'),'port':0x18eb});var socket=require(_0xe6f3('0x1b'))(new Redis(config[_0xe6f3('0x19')]));require(_0xe6f3('0x1c'))[_0xe6f3('0x1d')](socket);function respondWithStatusCode(_0x26f4a7,_0x4ab9db){_0x4ab9db=_0x4ab9db||0xcc;return function(_0x44fd99){if(_0x44fd99){return _0x26f4a7[_0xe6f3('0x1e')](_0x4ab9db);}return _0x26f4a7[_0xe6f3('0x1f')](_0x4ab9db)[_0xe6f3('0x20')]();};}function respondWithResult(_0x1706a9,_0x54c573){_0x54c573=_0x54c573||0xc8;return function(_0x547df9){if(_0x547df9){return _0x1706a9[_0xe6f3('0x1f')](_0x54c573)[_0xe6f3('0x21')](_0x547df9);}};}function respondWithFilteredResult(_0x22dcf7,_0x48eb12){return function(_0x39d6be){if(_0x39d6be){var _0x31902a=typeof _0x48eb12[_0xe6f3('0x22')]===_0xe6f3('0x23')&&typeof _0x48eb12[_0xe6f3('0x24')]==='undefined';var _0x537568=_0x39d6be['count'];var _0x42c414=_0x31902a?0x0:_0x48eb12[_0xe6f3('0x22')];var _0xdb1a1f=_0x31902a?_0x39d6be[_0xe6f3('0x25')]:_0x48eb12[_0xe6f3('0x22')]+_0x48eb12[_0xe6f3('0x24')];var _0x47f69b;if(_0xdb1a1f>=_0x537568){_0xdb1a1f=_0x537568;_0x47f69b=0xc8;}else{_0x47f69b=0xce;}_0x22dcf7[_0xe6f3('0x1f')](_0x47f69b);return _0x22dcf7[_0xe6f3('0x26')](_0xe6f3('0x27'),_0x42c414+'-'+_0xdb1a1f+'/'+_0x537568)[_0xe6f3('0x21')](_0x39d6be);}return null;};}function patchUpdates(_0x43c0d5){return function(_0x245d3e){try{jsonpatch[_0xe6f3('0x28')](_0x245d3e,_0x43c0d5,!![]);}catch(_0x4d75d3){return BPromise['reject'](_0x4d75d3);}return _0x245d3e[_0xe6f3('0x29')]();};}function saveUpdates(_0x3989c5,_0x2685e9){return function(_0x2d7d6b){if(_0x2d7d6b){return _0x2d7d6b[_0xe6f3('0x2a')](_0x3989c5)[_0xe6f3('0x2b')](function(_0x5b1a12){return _0x5b1a12;});}return null;};}function removeEntity(_0x4646fa,_0x18dde2){return function(_0x426266){if(_0x426266){return _0x426266[_0xe6f3('0x2c')]()['then'](function(){_0x4646fa['status'](0xcc)[_0xe6f3('0x20')]();});}};}function handleEntityNotFound(_0x3eef65,_0x482cef){return function(_0x5e5f44){if(!_0x5e5f44){_0x3eef65[_0xe6f3('0x1e')](0x194);}return _0x5e5f44;};}function handleError(_0x19691c,_0x37a5a5){_0x37a5a5=_0x37a5a5||0x1f4;return function(_0x4627de){logger[_0xe6f3('0x2d')](_0x4627de[_0xe6f3('0x2e')]);if(_0x4627de[_0xe6f3('0x2f')]){delete _0x4627de['name'];}_0x19691c[_0xe6f3('0x1f')](_0x37a5a5)['send'](_0x4627de);};}exports[_0xe6f3('0x30')]=function(_0x104677,_0x473064){var _0x5c8494={},_0x34ad3c={},_0x5163e0={'count':0x0,'rows':[]};var _0x359c2d=_[_0xe6f3('0x31')](db[_0xe6f3('0x32')][_0xe6f3('0x33')],function(_0x498a16){return{'name':_0x498a16[_0xe6f3('0x34')],'type':_0x498a16[_0xe6f3('0x35')]['key']};});_0x34ad3c[_0xe6f3('0x36')]=_[_0xe6f3('0x31')](_0x359c2d,_0xe6f3('0x2f'));_0x34ad3c[_0xe6f3('0x37')]=_[_0xe6f3('0x38')](_0x104677[_0xe6f3('0x37')]);_0x34ad3c[_0xe6f3('0x39')]=_['intersection'](_0x34ad3c[_0xe6f3('0x36')],_0x34ad3c[_0xe6f3('0x37')]);_0x5c8494[_0xe6f3('0x3a')]=_[_0xe6f3('0x3b')](_0x34ad3c['model'],qs[_0xe6f3('0x3c')](_0x104677[_0xe6f3('0x37')]['fields']));_0x5c8494['attributes']=_0x5c8494[_0xe6f3('0x3a')][_0xe6f3('0x3d')]?_0x5c8494[_0xe6f3('0x3a')]:_0x34ad3c[_0xe6f3('0x36')];if(!_0x104677['query'][_0xe6f3('0x3e')](_0xe6f3('0x3f'))){_0x5c8494['limit']=qs['limit'](_0x104677[_0xe6f3('0x37')][_0xe6f3('0x24')]);_0x5c8494[_0xe6f3('0x22')]=qs[_0xe6f3('0x22')](_0x104677[_0xe6f3('0x37')]['offset']);}_0x5c8494[_0xe6f3('0x40')]=qs[_0xe6f3('0x41')](_0x104677[_0xe6f3('0x37')][_0xe6f3('0x41')]);_0x5c8494['where']=qs[_0xe6f3('0x39')](_['pick'](_0x104677[_0xe6f3('0x37')],_0x34ad3c[_0xe6f3('0x39')]),_0x359c2d);if(_0x104677[_0xe6f3('0x37')][_0xe6f3('0x42')]){_0x5c8494['where']=_['merge'](_0x5c8494[_0xe6f3('0x43')],{'$or':_[_0xe6f3('0x31')](_0x359c2d,function(_0x30a160){if(_0x30a160[_0xe6f3('0x35')]!==_0xe6f3('0x44')){var _0x51bd3f={};_0x51bd3f[_0x30a160[_0xe6f3('0x2f')]]={'$like':'%'+_0x104677[_0xe6f3('0x37')][_0xe6f3('0x42')]+'%'};return _0x51bd3f;}})});}_0x5c8494=_[_0xe6f3('0x45')]({},_0x5c8494,_0x104677[_0xe6f3('0x46')]);var _0x1badac={'where':_0x5c8494['where']};return db[_0xe6f3('0x32')][_0xe6f3('0x25')](_0x1badac)['then'](function(_0x2e5108){_0x5163e0[_0xe6f3('0x25')]=_0x2e5108;if(_0x104677[_0xe6f3('0x37')][_0xe6f3('0x47')]){_0x5c8494[_0xe6f3('0x48')]=[{'all':!![]}];}return db[_0xe6f3('0x32')][_0xe6f3('0x49')](_0x5c8494);})[_0xe6f3('0x2b')](function(_0x25f946){_0x5163e0[_0xe6f3('0x4a')]=_0x25f946;return _0x5163e0;})[_0xe6f3('0x2b')](respondWithFilteredResult(_0x473064,_0x5c8494))[_0xe6f3('0x4b')](handleError(_0x473064,null));};exports[_0xe6f3('0x4c')]=function(_0x21f142,_0x24ce66){var _0x127583={'raw':![],'where':{'id':_0x21f142[_0xe6f3('0x4d')]['id']}},_0x2fde49={};_0x2fde49[_0xe6f3('0x36')]=_[_0xe6f3('0x38')](db[_0xe6f3('0x32')][_0xe6f3('0x33')]);_0x2fde49['query']=_[_0xe6f3('0x38')](_0x21f142[_0xe6f3('0x37')]);_0x2fde49[_0xe6f3('0x39')]=_['intersection'](_0x2fde49[_0xe6f3('0x36')],_0x2fde49[_0xe6f3('0x37')]);_0x127583[_0xe6f3('0x3a')]=_[_0xe6f3('0x3b')](_0x2fde49[_0xe6f3('0x36')],qs[_0xe6f3('0x3c')](_0x21f142['query'][_0xe6f3('0x3c')]));_0x127583[_0xe6f3('0x3a')]=_0x127583[_0xe6f3('0x3a')][_0xe6f3('0x3d')]?_0x127583[_0xe6f3('0x3a')]:_0x2fde49['model'];if(_0x21f142['query']['includeAll']){_0x127583['include']=[{'all':!![]}];}_0x127583=_[_0xe6f3('0x45')]({},_0x127583,_0x21f142[_0xe6f3('0x46')]);return db[_0xe6f3('0x32')][_0xe6f3('0x4e')](_0x127583)[_0xe6f3('0x2b')](handleEntityNotFound(_0x24ce66,null))['then'](respondWithResult(_0x24ce66,null))[_0xe6f3('0x4b')](handleError(_0x24ce66,null));};exports[_0xe6f3('0x4f')]=function(_0x33e3a9,_0x19e0c7){return db['UserProfile'][_0xe6f3('0x4f')](_0x33e3a9[_0xe6f3('0x50')],{})[_0xe6f3('0x2b')](respondWithResult(_0x19e0c7,0xc9))[_0xe6f3('0x4b')](handleError(_0x19e0c7,null));};exports[_0xe6f3('0x51')]=function(_0x548e77,_0x508008){var _0x5338a7={'where':{'id':_0x548e77['params']['id']}},_0x6089fd={};_0x6089fd[_0xe6f3('0x36')]=_[_0xe6f3('0x38')](db[_0xe6f3('0x32')][_0xe6f3('0x33')]);_0x5338a7[_0xe6f3('0x3a')]=_[_0xe6f3('0x3b')](_0x6089fd[_0xe6f3('0x36')],qs[_0xe6f3('0x3c')](_0x548e77[_0xe6f3('0x37')][_0xe6f3('0x3c')]));_0x5338a7['attributes']=_0x5338a7['attributes'][_0xe6f3('0x3d')]?_0x5338a7[_0xe6f3('0x3a')]:_0x6089fd[_0xe6f3('0x36')];if(_0x548e77[_0xe6f3('0x37')]['includeAll']){_0x5338a7[_0xe6f3('0x48')]=[{'all':!![]}];}_0x5338a7=_[_0xe6f3('0x45')]({},_0x5338a7,_0x548e77['options']);return db[_0xe6f3('0x32')][_0xe6f3('0x4e')](_0x5338a7)[_0xe6f3('0x2b')](handleEntityNotFound(_0x508008,null))[_0xe6f3('0x2b')](function(_0x47fe00){if(_0x47fe00){var _0xe23956=_0x47fe00['get']({'plain':!![]});_0xe23956=qs[_0xe6f3('0x52')](_0xe23956,['id','createdAt',_0xe6f3('0x53'),_0xe6f3('0x54')]);_0x548e77[_0xe6f3('0x50')]=_[_0xe6f3('0x52')](_0x548e77[_0xe6f3('0x50')],['id',_0xe6f3('0x55'),_0xe6f3('0x53')]);return db[_0xe6f3('0x56')][_0xe6f3('0x57')](function(_0x2d31fb){return db[_0xe6f3('0x32')][_0xe6f3('0x4f')](_[_0xe6f3('0x45')](_0xe23956,_0x548e77[_0xe6f3('0x50')]),{'include':_0x548e77['query']['includeAll']?[{'all':!![]}]:undefined,'transaction':_0x2d31fb})[_0xe6f3('0x2b')](function(_0x29161e){var _0x4a7a98=_0x29161e[_0xe6f3('0x58')]({'plain':!![]});return db[_0xe6f3('0x59')]['findAll']({'where':{'userProfileId':_0x548e77['params']['id']},'raw':!![]})['then'](function(_0x45310b){if(_0x45310b){return BPromise[_0xe6f3('0x5a')](_0x45310b,function(_0x34a94b){return new BPromise(function(_0x2d2a44,_0xb2044d){if(_0x34a94b['autoAssociation']===null||_0x34a94b[_0xe6f3('0x5b')]===0x1)_0x2d2a44(null);return db[_0xe6f3('0x5c')][_0xe6f3('0x49')]({'where':{'sectionId':_0x34a94b['id']},'raw':!![]})[_0xe6f3('0x2b')](function(_0x3471dd){var _0x283417=_[_0xe6f3('0x31')](_0x3471dd,function(_0x358672){return qs[_0xe6f3('0x52')](_0x358672,['id',_0xe6f3('0x55'),_0xe6f3('0x53'),_0xe6f3('0x5d')]);});_0x2d2a44(_0x283417);})[_0xe6f3('0x4b')](function(_0x32105e){_0xb2044d(_0x32105e);});})['then'](function(_0xdf5f9d){var _0x1b3d62=qs[_0xe6f3('0x52')](_0x34a94b,['id',_0xe6f3('0x55'),_0xe6f3('0x53')]);_0x1b3d62[_0xe6f3('0x5e')]=_0x4a7a98['id'];if(_0xdf5f9d)_0x1b3d62[_0xe6f3('0x5f')]=_0xdf5f9d;return _0x1b3d62;})['then'](function(_0x3e91c2){return db[_0xe6f3('0x59')][_0xe6f3('0x4f')](_0x3e91c2,{'include':[{'model':db[_0xe6f3('0x5c')],'as':_0xe6f3('0x5f')}],'raw':!![],'transaction':_0x2d31fb});});})[_0xe6f3('0x2b')](function(){return _0x4a7a98;});}});});});}})['then'](respondWithResult(_0x508008,0xc9))[_0xe6f3('0x4b')](handleError(_0x508008,null));};exports[_0xe6f3('0x2a')]=function(_0x455113,_0x1cf8ae){if(_0x455113[_0xe6f3('0x50')]['id']){delete _0x455113[_0xe6f3('0x50')]['id'];}return db['UserProfile'][_0xe6f3('0x4e')]({'where':{'id':_0x455113[_0xe6f3('0x4d')]['id']}})[_0xe6f3('0x2b')](handleEntityNotFound(_0x1cf8ae,null))[_0xe6f3('0x2b')](saveUpdates(_0x455113[_0xe6f3('0x50')],null))['then'](respondWithResult(_0x1cf8ae,null))['catch'](handleError(_0x1cf8ae,null));};exports['destroy']=function(_0x68bccc,_0x5291cb){return db[_0xe6f3('0x32')][_0xe6f3('0x4e')]({'where':{'id':_0x68bccc[_0xe6f3('0x4d')]['id']}})[_0xe6f3('0x2b')](handleEntityNotFound(_0x5291cb,null))[_0xe6f3('0x2b')](removeEntity(_0x5291cb,null))[_0xe6f3('0x4b')](handleError(_0x5291cb,null));};exports['describe']=function(_0x2ab40c,_0x55315d){return db['UserProfile'][_0xe6f3('0x60')]()[_0xe6f3('0x2b')](respondWithResult(_0x55315d,null))[_0xe6f3('0x4b')](handleError(_0x55315d,null));};exports[_0xe6f3('0x61')]=function(_0x24bd75,_0x2807bf){var _0x24dbd2=_0x24bd75[_0xe6f3('0x50')];return db[_0xe6f3('0x32')][_0xe6f3('0x4e')]({'where':{'id':_0x24bd75[_0xe6f3('0x4d')]['id']}})[_0xe6f3('0x2b')](handleEntityNotFound(_0x2807bf,null))[_0xe6f3('0x2b')](function(_0x59e1ea){if(_0x59e1ea){return db[_0xe6f3('0x56')]['transaction'](function(_0x26b982){return db['UserProfileSection']['destroy']({'where':{'userProfileId':_0x24bd75[_0xe6f3('0x4d')]['id'],'sectionId':_[_0xe6f3('0x31')](_0x24dbd2,function(_0x5ef819){return _0x5ef819['sectionId'];})},'transaction':_0x26b982})[_0xe6f3('0x2b')](function(){var _0x30711c=_[_0xe6f3('0x31')](_0x24dbd2,function(_0x572cff){_0x572cff[_0xe6f3('0x5e')]=_0x24bd75[_0xe6f3('0x4d')]['id'];return _0x572cff;});var _0x5ae774=[];return BPromise['each'](_0x30711c,function(_0x24ed74){return db[_0xe6f3('0x59')][_0xe6f3('0x4f')](_0x24ed74,{'include':[{'model':db[_0xe6f3('0x5c')],'as':_0xe6f3('0x5f')}],'raw':!![],'transaction':_0x26b982})['then'](function(_0x41ef0a){_0x5ae774['push'](_0x41ef0a[_0xe6f3('0x58')]({'plain':!![]}));});})[_0xe6f3('0x2b')](function(){return _0x5ae774;});});});}})[_0xe6f3('0x2b')](function(_0x3f4102){return _0x3f4102;})[_0xe6f3('0x2b')](respondWithResult(_0x2807bf,null))[_0xe6f3('0x4b')](handleError(_0x2807bf,null));};exports['removeSections']=function(_0x2acb9f,_0x290eee){var _0x568f86;return db[_0xe6f3('0x32')][_0xe6f3('0x4e')]({'where':{'id':_0x2acb9f[_0xe6f3('0x4d')]['id']},'attributes':['id',_0xe6f3('0x2f')]})[_0xe6f3('0x2b')](handleEntityNotFound(_0x290eee,null))[_0xe6f3('0x2b')](function(_0x452bb9){if(_0x452bb9){_0x568f86=_0x452bb9;return db[_0xe6f3('0x59')][_0xe6f3('0x2c')]({'where':{'userProfileId':_0x2acb9f[_0xe6f3('0x4d')]['id'],'sectionId':_0x2acb9f[_0xe6f3('0x37')][_0xe6f3('0x62')]}});}})['then'](function(){return _0x568f86;})[_0xe6f3('0x2b')](respondWithStatusCode(_0x290eee,null))[_0xe6f3('0x4b')](handleError(_0x290eee,null));};exports['getSections']=function(_0x5226bb,_0x30a629){var _0x30d5f7=[];var _0x799399=[];return db[_0xe6f3('0x59')][_0xe6f3('0x49')]({'where':{'userProfileId':_0x5226bb[_0xe6f3('0x4d')]['id']},'raw':!![]})['then'](function(_0x28976d){_0x30d5f7=_[_0xe6f3('0x42')](_0x28976d,function(_0xa55b9e){return _0xa55b9e[_0xe6f3('0x63')]===0x1||_[_0xe6f3('0x64')]([0x3eb,0x709],_0xa55b9e[_0xe6f3('0x5d')]);});if(!_['isEmpty'](_0x30d5f7)){return _[_0xe6f3('0x31')](_0x30d5f7,function(_0x3fd8d9){return _0x3fd8d9['sectionId'];});}else{return;}})[_0xe6f3('0x2b')](function(_0x51c503){if(_0x51c503)_0x799399=_0x51c503;if(_[_0xe6f3('0x64')](_0x799399,0x64)){var _0x540a8e=_[_0xe6f3('0x4e')](_0x30d5f7,{'sectionId':0x64});return hasDefaultDashboard(_0x540a8e)[_0xe6f3('0x2b')](function(_0x2eb267){return _[_0xe6f3('0x31')](_0x30d5f7,function(_0x11d640){if(_0x11d640[_0xe6f3('0x5d')]===0x64){_0x11d640['subsections']=_0x2eb267;}return _0x11d640;});});}else{return;}})[_0xe6f3('0x2b')](function(_0x4e533a){if(_0x4e533a)_0x30d5f7=_0x4e533a;if(_[_0xe6f3('0x64')](_0x799399,0x3eb)){var _0x3af37c=_[_0xe6f3('0x4e')](_0x30d5f7,{'sectionId':0x3eb});return getCustomDashboards(_0x3af37c)[_0xe6f3('0x2b')](function(_0x49b5ec){return _[_0xe6f3('0x31')](_0x30d5f7,function(_0x216d39){if(_0x3af37c['enabled']){if(_0x216d39[_0xe6f3('0x5d')]===0x3eb){_0x216d39[_0xe6f3('0x65')]=_0x49b5ec;}}else{if(_0x216d39[_0xe6f3('0x5d')]===0x64){_0x216d39['subsections']=_0x49b5ec;}}return _0x216d39;});});}else{return;}})['then'](function(_0x16cac9){if(_0x16cac9)_0x30d5f7=_0x16cac9;if(_[_0xe6f3('0x64')](_0x799399,0x709)){var _0x1c73ed=_['find'](_0x30d5f7,{'sectionId':0x709});return getPlugins(_0x1c73ed)[_0xe6f3('0x2b')](function(_0xbafd24){if(_0x1c73ed[_0xe6f3('0x63')]){return _[_0xe6f3('0x31')](_0x30d5f7,function(_0x11e9e3){if(_0x11e9e3['sectionId']===0x709){_0x11e9e3[_0xe6f3('0x65')]=_0xbafd24;}return _0x11e9e3;});}else{var _0x2d99a5={'sectionId':0x76c,'enabled':0x1,'subsections':_0xbafd24};var _0x13de73=_['map'](_0x30d5f7);_0x13de73[_0xe6f3('0x66')](_0x2d99a5);return _0x13de73;}});}else{return;}})[_0xe6f3('0x2b')](function(_0x5ede20){if(_0x5ede20)_0x30d5f7=_0x5ede20;return _['filter'](_0x30d5f7,[_0xe6f3('0x63'),0x1]);})['then'](respondWithResult(_0x30a629,null))[_0xe6f3('0x4b')](handleError(_0x30a629,null));};function hasDefaultDashboard(_0x5105ee){var _0x54d51d=[0x65];return new BPromise(function(_0x502316,_0x542642){try{if(_0x5105ee[_0xe6f3('0x5b')]){_0x502316(_0x54d51d);}else{return db[_0xe6f3('0x5c')]['findOne']({'where':{'sectionId':_0x5105ee['id']},'raw':!![]})[_0xe6f3('0x2b')](function(_0x592414){_0x592414?_0x502316(_0x54d51d):_0x502316();});}}catch(_0x32f97c){_0x542642(_0x32f97c);}});}function getCustomDashboards(_0x3471dc){var _0x12b63e=[];return new BPromise(function(_0xcbfd89,_0x2107dd){try{if(_0x3471dc[_0xe6f3('0x5b')]){return db['Dashboard'][_0xe6f3('0x49')]({'raw':!![]})[_0xe6f3('0x2b')](function(_0x299339){_0x299339[_0xe6f3('0x67')](function(_0x61b5cf){_0x12b63e[_0xe6f3('0x66')](_0x61b5cf['id']+0x1869f);});_0xcbfd89(_0x12b63e);});}else{return db['UserProfileResource']['findAll']({'where':{'sectionId':_0x3471dc['id']},'raw':!![]})[_0xe6f3('0x2b')](function(_0x38e66a){_0x38e66a[_0xe6f3('0x67')](function(_0x5377ed){_0x12b63e['push'](_0x5377ed['resourceId']+0x1869f);});_0xcbfd89(_0x12b63e);});}}catch(_0x27ebcd){_0x2107dd(_0x27ebcd);}});}function getPlugins(_0x2aa868){var _0x2faf81=[];return new BPromise(function(_0x845b5c,_0x1178d4){try{if(_0x2aa868[_0xe6f3('0x5b')]){return db[_0xe6f3('0x68')]['findAll']({'raw':!![]})[_0xe6f3('0x2b')](function(_0x256a83){_0x256a83['forEach'](function(_0x5ab162){_0x2faf81[_0xe6f3('0x66')](_0x5ab162['id']+0x15b38);});_0x845b5c(_0x2faf81);});}else{return db[_0xe6f3('0x5c')][_0xe6f3('0x49')]({'where':{'sectionId':_0x2aa868['id']},'raw':!![]})[_0xe6f3('0x2b')](function(_0x103b1e){_0x103b1e['forEach'](function(_0x34bdad){_0x2faf81[_0xe6f3('0x66')](_0x34bdad[_0xe6f3('0x69')]+0x15b38);});_0x845b5c(_0x2faf81);});}}catch(_0x58202c){_0x1178d4(_0x58202c);}});}exports[_0xe6f3('0x6a')]=function(_0x3f9827,_0x314109){return db[_0xe6f3('0x32')][_0xe6f3('0x4e')]({'where':{'id':_0x3f9827['params']['id']}})[_0xe6f3('0x2b')](handleEntityNotFound(_0x314109,null))[_0xe6f3('0x2b')](function(_0x35bc23){if(_0x35bc23){return db[_0xe6f3('0x56')]['transaction'](function(_0xfa9d9b){return db[_0xe6f3('0x59')]['findAll']({'where':{'userProfileId':_0x3f9827[_0xe6f3('0x4d')]['id']},'attributes':['id'],'raw':!![]})[_0xe6f3('0x2b')](function(_0x38adc3){if(_0x38adc3){return db[_0xe6f3('0x59')][_0xe6f3('0x2c')]({'where':{'userProfileId':_0x3f9827[_0xe6f3('0x4d')]['id'],'id':_[_0xe6f3('0x31')](_0x38adc3,function(_0x3b0138){return _0x3b0138['id'];})},'transaction':_0xfa9d9b});}})[_0xe6f3('0x2b')](function(_0x553d51){var _0x2add58=_[_0xe6f3('0x31')](_0x3f9827[_0xe6f3('0x50')],function(_0x4bc17d){_0x4bc17d[_0xe6f3('0x5e')]=_0x3f9827[_0xe6f3('0x4d')]['id'];return _0x4bc17d;});return db[_0xe6f3('0x59')]['bulkCreate'](_0x2add58,{'raw':!![],'transaction':_0xfa9d9b});})['then'](function(_0xb1ec68){var _0x17697a=_[_0xe6f3('0x42')](_[_0xe6f3('0x31')](_0xb1ec68,function(_0x49716a){return _0x49716a[_0xe6f3('0x58')]({'plain':!![]});}),{'includeAll':![]});if(_0x17697a){return db[_0xe6f3('0x59')]['findAll']({'where':{'userProfileId':_0x3f9827[_0xe6f3('0x4d')]['id'],'sectionId':_[_0xe6f3('0x31')](_0x17697a,function(_0x115b49){return _0x115b49[_0xe6f3('0x5d')];})},'attributes':['id',_0xe6f3('0x5d')],'raw':!![]})[_0xe6f3('0x2b')](function(_0x3dc56c){var _0x52b623=_[_0xe6f3('0x31')](_0x3f9827[_0xe6f3('0x50')],function(_0x2237c5){_0x2237c5[_0xe6f3('0x5e')]=_0x3f9827[_0xe6f3('0x4d')]['id'];return _0x2237c5;});return db['UserProfileResource'][_0xe6f3('0x6b')](_0x52b623,{'raw':!![],'transaction':_0xfa9d9b});});}})['catch'](handleError(_0x314109,null));});}})[_0xe6f3('0x2b')](function(_0x36be9d){var _0x227bb0=_[_0xe6f3('0x31')](_0x36be9d,function(_0x2d7335){return _0x2d7335[_0xe6f3('0x58')]({'plain':!![]});});})[_0xe6f3('0x2b')](respondWithResult(_0x314109,null))['catch'](handleError(_0x314109,null));};exports['removeResources']=function(_0x36c794,_0x3264af,_0x3dc192){return db[_0xe6f3('0x32')][_0xe6f3('0x4e')]({'where':{'id':_0x36c794['params']['id']}})[_0xe6f3('0x2b')](handleEntityNotFound(_0x3264af,null))[_0xe6f3('0x2b')](function(_0xceee00){if(_0xceee00){return _0xceee00[_0xe6f3('0x6c')](_0x36c794['query']['ids']);}})['then'](respondWithStatusCode(_0x3264af,null))['catch'](handleError(_0x3264af,null));};exports['getResources']=function(_0x423088,_0x46ae4a){var _0xf8052c={};if(!_0x423088['query'][_0xe6f3('0x6d')])throw new Error('Missing\x20section\x20parameter');if(!_0x423088[_0xe6f3('0x37')]['hasOwnProperty'](_0xe6f3('0x3f'))){_0xf8052c[_0xe6f3('0x24')]=qs[_0xe6f3('0x24')](_0x423088[_0xe6f3('0x37')]['limit']);_0xf8052c[_0xe6f3('0x22')]=qs[_0xe6f3('0x22')](_0x423088[_0xe6f3('0x37')][_0xe6f3('0x22')]);}return db[_0xe6f3('0x32')][_0xe6f3('0x4e')]({'where':{'id':_0x423088[_0xe6f3('0x4d')]['id']}})[_0xe6f3('0x2b')](function(_0x3d8e57){if(!_0x3d8e57)throw new Error(_0xe6f3('0x6e')+_0x423088[_0xe6f3('0x4d')]['id']);return db[_0xe6f3('0x32')][_0xe6f3('0x6f')](_0x423088);})[_0xe6f3('0x2b')](respondWithFilteredResult(_0x46ae4a,_0xf8052c))['catch'](handleError(_0x46ae4a,null));};
\ No newline at end of file
index a6ad85c..3cad948 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1c6=['../../mysqldb','UserProfile','save','remove','emit','hasOwnProperty','exports','events'];(function(_0x3c560a,_0x1c46d4){var _0x22e9be=function(_0xd72419){while(--_0xd72419){_0x3c560a['push'](_0x3c560a['shift']());}};_0x22e9be(++_0x1c46d4);}(_0xc1c6,0xf7));var _0x6c1c=function(_0x2c31d7,_0x226c98){_0x2c31d7=_0x2c31d7-0x0;var _0x4d67e7=_0xc1c6[_0x2c31d7];return _0x4d67e7;};'use strict';var EventEmitter=require(_0x6c1c('0x0'));var UserProfile=require(_0x6c1c('0x1'))['db'][_0x6c1c('0x2')];var UserProfileEvents=new EventEmitter();UserProfileEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x6c1c('0x3'),'afterUpdate':'update','afterDestroy':_0x6c1c('0x4')};function emitEvent(_0x40ff59){return function(_0x265d2c,_0x59f799,_0x56ed6f){UserProfileEvents[_0x6c1c('0x5')](_0x40ff59+':'+_0x265d2c['id'],_0x265d2c);UserProfileEvents['emit'](_0x40ff59,_0x265d2c);_0x56ed6f(null);};}for(var e in events){if(events[_0x6c1c('0x6')](e)){var event=events[e];UserProfile['hook'](e,emitEvent(event));}}module[_0x6c1c('0x7')]=UserProfileEvents;
\ No newline at end of file
+var _0x3d3d=['emit','hasOwnProperty','exports','../../mysqldb','UserProfile','save','update','remove'];(function(_0x2cb0e6,_0x386bfc){var _0x4665df=function(_0x358531){while(--_0x358531){_0x2cb0e6['push'](_0x2cb0e6['shift']());}};_0x4665df(++_0x386bfc);}(_0x3d3d,0xab));var _0xd3d3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3d3d[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require('events');var UserProfile=require(_0xd3d3('0x0'))['db'][_0xd3d3('0x1')];var UserProfileEvents=new EventEmitter();UserProfileEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xd3d3('0x2'),'afterUpdate':_0xd3d3('0x3'),'afterDestroy':_0xd3d3('0x4')};function emitEvent(_0x427bd5){return function(_0x1f03e9,_0x46aa0c,_0x3b43f2){UserProfileEvents[_0xd3d3('0x5')](_0x427bd5+':'+_0x1f03e9['id'],_0x1f03e9);UserProfileEvents[_0xd3d3('0x5')](_0x427bd5,_0x1f03e9);_0x3b43f2(null);};}for(var e in events){if(events[_0xd3d3('0x6')](e)){var event=events[e];UserProfile['hook'](e,emitEvent(event));}}module[_0xd3d3('0x7')]=UserProfileEvents;
\ No newline at end of file
index caa9421..9764303 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['FaxQueue','faxaccounts','inboundroutes','internalroutes','outboundroutes','contexts','VoiceContext','voicemails','voicerecordings','VoiceRecording','membername','User','agent','Telephones','role','telephone','VoiceQueues','VoiceQueue','inbound','QueueCampaigns','queue','outbound','musiconholds','VoiceMusicOnHold','chanspies','VoiceChanSpy','VoicePrefix','ivrcampaigns','Campaign','MailQueue','mailaccounts','MailAccount','mailsubstatuses','OpenchannelQueue','OpenchannelAccount','smsqueues','SmsAccount','whatsappqueues','WhatsappQueue','teams','Team','queuecampaigns','users','telephones','Users','admin','Agents','ZendeskAccount','SalesforceAccount','FreshdeskAccount','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','vtigeraccounts','CannedAnswer','Disposition','customdashboards','intervals','Interval','pauses','Pause','scheduler','Sound','tags','Tag','templates','Template','triggers','Trigger','trunks','Trunk','variables','Variable','plugins','Plugin','reportId','metrics','AnalyticMetric','charAt','toUpperCase','slice','Sequelize','QueryTypes','SELECT','select','ui.','ui.createdAt','user_has_','where','ui.UserId\x20=\x20?','query','toString','OpenTabs','define','UserProfile','user_profiles','section','mergeResources','isEmpty','length','push','UserProfileSection','params','all','ignore','find','autoAssociation','rawAttributes','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','offset','order','sort','pick','merge','key','VIRTUAL','foreignKey','options','includeAll','include','forEach','reportType','default','custom','count','Tags','tag','ThroughTags','color','rows','true','chat','dataValues','sms','fax','whatsapp','./userProfile.attributes','../../components/parsers/qs','squel','exports','models','filter','field','value','findAll','then','associatedResources','map','catch','model','name','AnalyticExtractedReport','type','squareprojects','childModel','SquareProject','odbc','SquareOdbc','squarerecordings','parentSections','SquareProjects','JscriptyProject','CmContact','Lists','lists','CmList','CmCustomField','chatqueues','chatwebsites','faxqueues'];(function(_0xfec9d0,_0x12ce18){var _0x5769d1=function(_0x142242){while(--_0x142242){_0xfec9d0['push'](_0xfec9d0['shift']());}};_0x5769d1(++_0x12ce18);}(_0x1261,0x144));var _0x1126=function(_0x38dbb5,_0x427be1){_0x38dbb5=_0x38dbb5-0x0;var _0x34bd46=_0x1261[_0x38dbb5];return _0x34bd46;};'use strict';var _=require('lodash');var attributes=require(_0x1126('0x0'));var qs=require(_0x1126('0x1'));var squel=require(_0x1126('0x2'));module[_0x1126('0x3')]=function(_0x39b786){var _0x350f3a=_0x39b786[_0x1126('0x4')];function _0x4245ca(_0x21a480,_0x75a851){return new Promise(function(_0x5a2189,_0x5c68c8){if(!_0x75a851)return _0x5a2189(null);var _0x40ba58=_0x75a851[_0x1126('0x5')]?{[_0x75a851['filter'][_0x1126('0x6')]]:_0x75a851[_0x1126('0x5')][_0x1126('0x7')]}:undefined;return _0x350f3a[_0x21a480][_0x1126('0x8')]({'where':_0x40ba58,'raw':!![]})[_0x1126('0x9')](function(_0x59cfa1){_0x75a851[_0x1126('0xa')]=_[_0x1126('0xb')](_0x59cfa1,'id');_0x5a2189(_0x75a851);})[_0x1126('0xc')](function(_0x5e72e2){_0x5c68c8(_0x5e72e2);});});}function _0x34571c(_0x5d581b,_0x52ef15){return new Promise(function(_0x15c071,_0x561b93){var _0x15e89b=_0x5d581b[_0x1126('0x5')]?{[_0x5d581b[_0x1126('0x5')][_0x1126('0x6')]]:_0x5d581b[_0x1126('0x5')][_0x1126('0x7')]}:undefined;return _0x350f3a[_0x5d581b[_0x1126('0xd')]][_0x1126('0x8')]({'where':_0x15e89b,'raw':!![]})[_0x1126('0x9')](function(_0x53a8f0){_0x52ef15['associatedResources']=_[_0x1126('0xb')](_0x53a8f0,function(_0x154e20){return _0x154e20[_0x1126('0xe')];});_0x15c071(_0x52ef15);})['catch'](function(_0x45149c){_0x561b93(_0x45149c);});});}function _0x4794a7(_0x35fe9f,_0x42f379,_0x257b5f){if(!_0x42f379)return Promise['resolve'](null);return new Promise(function(_0x245cd7,_0x1695f6){return _0x350f3a['UserProfileResource']['findAll']({'where':{'sectionId':_0x42f379['id']},'raw':!![]})[_0x1126('0x9')](function(_0x2b2487){if(_0x35fe9f['field']&&_0x35fe9f['field']!=='id'){_0x42f379[_0x1126('0xa')]=_['map'](_0x2b2487,function(_0x22ed37){return _0x22ed37[_0x35fe9f[_0x1126('0x6')]];});}else{if(_0x257b5f===_0x1126('0xf')){_0x42f379['associatedResources']=_[_0x1126('0xb')](_0x2b2487,function(_0x49d209){return{'id':_0x49d209['resourceId'],'type':_0x49d209[_0x1126('0x10')]};});}else{_0x42f379[_0x1126('0xa')]=_[_0x1126('0xb')](_0x2b2487,function(_0x36d254){return _0x36d254['resourceId'];});}}_0x245cd7(_0x42f379);})[_0x1126('0xc')](function(_0x477e6a){_0x1695f6(_0x477e6a);});});}function _0x48a08d(_0x2175fa,_0x59cd8e){var _0x529dd9={'parentSections':[]};switch(_0x2175fa['toLowerCase']()){case _0x1126('0x11'):_0x529dd9[_0x1126('0x12')]=_0x1126('0x13');break;case _0x1126('0x14'):_0x529dd9[_0x1126('0x12')]=_0x1126('0x15');break;case _0x1126('0x16'):_0x529dd9[_0x1126('0x12')]='SquareRecording';_0x529dd9[_0x1126('0x17')]=[{'name':_0x1126('0x18'),'field':_0x1126('0xe'),'foreignKey':'projectName'}];break;case'projects':_0x529dd9[_0x1126('0x12')]=_0x1126('0x19');break;case'contacts':_0x529dd9[_0x1126('0x12')]=_0x1126('0x1a');_0x529dd9['parentSections']=[{'name':_0x1126('0x1b'),'field':'id','foreignKey':'ListId'}];break;case _0x1126('0x1c'):_0x529dd9['childModel']=_0x1126('0x1d');break;case'companies':_0x529dd9[_0x1126('0x12')]='CmCompany';break;case'globalcustomfields':_0x529dd9['childModel']=_0x1126('0x1e');break;case _0x1126('0x1f'):_0x529dd9[_0x1126('0x12')]='ChatQueue';break;case _0x1126('0x20'):_0x529dd9[_0x1126('0x12')]='ChatWebsite';break;case _0x1126('0x21'):_0x529dd9[_0x1126('0x12')]=_0x1126('0x22');break;case _0x1126('0x23'):_0x529dd9['childModel']='FaxAccount';break;case _0x1126('0x24'):case _0x1126('0x25'):case _0x1126('0x26'):_0x529dd9[_0x1126('0x12')]='VoiceExtension';break;case _0x1126('0x27'):_0x529dd9[_0x1126('0x12')]=_0x1126('0x28');break;case _0x1126('0x29'):_0x529dd9[_0x1126('0x12')]='VoiceMail';break;case _0x1126('0x2a'):_0x529dd9[_0x1126('0x12')]=_0x1126('0x2b');_0x529dd9[_0x1126('0x17')]=[{'name':'Agents','field':'name','foreignKey':_0x1126('0x2c'),'model':_0x1126('0x2d'),'filter':{'field':'role','value':[_0x1126('0x2e')]}},{'name':_0x1126('0x2f'),'field':_0x1126('0xe'),'foreignKey':'membername','model':'User','filter':{'field':_0x1126('0x30'),'value':[_0x1126('0x31')]}},{'name':_0x1126('0x32'),'field':_0x1126('0xe'),'foreignKey':'queue','model':_0x1126('0x33'),'filter':{'field':'type','value':[_0x1126('0x34')]}},{'name':_0x1126('0x35'),'field':_0x1126('0xe'),'foreignKey':_0x1126('0x36'),'model':_0x1126('0x33'),'filter':{'field':'type','value':[_0x1126('0x37')]}}];break;case _0x1126('0x38'):_0x529dd9[_0x1126('0x12')]=_0x1126('0x39');break;case _0x1126('0x3a'):_0x529dd9[_0x1126('0x12')]=_0x1126('0x3b');break;case'voiceprefixes':_0x529dd9[_0x1126('0x12')]=_0x1126('0x3c');break;case _0x1126('0x3d'):_0x529dd9[_0x1126('0x12')]=_0x1126('0x3e');break;case'mailqueues':_0x529dd9['childModel']=_0x1126('0x3f');break;case _0x1126('0x40'):_0x529dd9[_0x1126('0x12')]=_0x1126('0x41');break;case _0x1126('0x42'):_0x529dd9[_0x1126('0x12')]='MailSubstatus';break;case'openchannelqueues':_0x529dd9['childModel']=_0x1126('0x43');break;case'openchannelaccounts':_0x529dd9[_0x1126('0x12')]=_0x1126('0x44');break;case _0x1126('0x45'):_0x529dd9[_0x1126('0x12')]='SmsQueue';break;case'smsaccounts':_0x529dd9[_0x1126('0x12')]=_0x1126('0x46');break;case _0x1126('0x47'):_0x529dd9['childModel']=_0x1126('0x48');break;case'whatsappaccounts':_0x529dd9[_0x1126('0x12')]='WhatsappAccount';break;case _0x1126('0x49'):_0x529dd9[_0x1126('0x12')]=_0x1126('0x4a');break;case'voicequeues':case _0x1126('0x4b'):_0x529dd9[_0x1126('0x12')]=_0x1126('0x33');if(_0x59cd8e){_0x529dd9['parentSections']=[{'name':'VoiceQueues'},{'name':'QueueCampaigns'}];}break;case _0x1126('0x4c'):case'agents':case _0x1126('0x4d'):_0x529dd9['childModel']=_0x1126('0x2d');if(_0x59cd8e){_0x529dd9[_0x1126('0x17')]=[{'name':_0x1126('0x4e'),'filter':{'field':_0x1126('0x30'),'value':[_0x1126('0x4f'),'user']},'ignore':!![]},{'name':_0x1126('0x50')},{'name':_0x1126('0x2f')}];}break;case'zendeskaccounts':_0x529dd9[_0x1126('0x12')]=_0x1126('0x51');break;case'salesforceaccounts':_0x529dd9[_0x1126('0x12')]=_0x1126('0x52');break;case'freshdeskaccounts':_0x529dd9[_0x1126('0x12')]=_0x1126('0x53');break;case _0x1126('0x54'):_0x529dd9['childModel']=_0x1126('0x55');break;case _0x1126('0x56'):_0x529dd9[_0x1126('0x12')]=_0x1126('0x57');break;case _0x1126('0x58'):_0x529dd9[_0x1126('0x12')]=_0x1126('0x59');break;case _0x1126('0x5a'):_0x529dd9['childModel']=_0x1126('0x2d');break;case'cannedanswers':_0x529dd9[_0x1126('0x12')]=_0x1126('0x5b');break;case'dispositions':_0x529dd9['childModel']=_0x1126('0x5c');break;case _0x1126('0x5d'):_0x529dd9[_0x1126('0x12')]='Dashboard';break;case _0x1126('0x5e'):_0x529dd9[_0x1126('0x12')]=_0x1126('0x5f');break;case _0x1126('0x60'):_0x529dd9['childModel']=_0x1126('0x61');break;case _0x1126('0x62'):_0x529dd9['childModel']='Schedule';break;case'sounds':_0x529dd9['childModel']=_0x1126('0x63');break;case _0x1126('0x64'):_0x529dd9['childModel']=_0x1126('0x65');break;case _0x1126('0x66'):_0x529dd9[_0x1126('0x12')]=_0x1126('0x67');break;case _0x1126('0x68'):_0x529dd9['childModel']=_0x1126('0x69');break;case _0x1126('0x6a'):_0x529dd9['childModel']=_0x1126('0x6b');break;case _0x1126('0x6c'):_0x529dd9[_0x1126('0x12')]=_0x1126('0x6d');break;case _0x1126('0x6e'):_0x529dd9['childModel']=_0x1126('0x6f');break;case'extractedreports':_0x529dd9[_0x1126('0x12')]=_0x1126('0xf');_0x529dd9[_0x1126('0x17')]=[{'name':'Reports','field':'id','foreignKey':_0x1126('0x70')}];break;case _0x1126('0x71'):_0x529dd9['childModel']=_0x1126('0x72');break;}return _0x529dd9;}function _0x25038f(_0x9bad53,_0x5a5340){var _0x2fe6dc=_0x9bad53[_0x1126('0x73')](0x0)[_0x1126('0x74')]()+_0x9bad53[_0x1126('0x75')](0x1);var _0x128c94={'type':_0x350f3a[_0x1126('0x76')][_0x1126('0x77')][_0x1126('0x78')],'raw':!![]};return new Promise(function(_0x47e53d,_0x2b23e3){var _0x2db45e=squel[_0x1126('0x79')]()[_0x1126('0x6')](_0x1126('0x7a')+_0x2fe6dc+'InteractionId','id')[_0x1126('0x6')](_0x1126('0x7b'))['from'](_0x1126('0x7c')+_0x9bad53+'_interactions','ui')[_0x1126('0x7d')](_0x1126('0x7e'),_0x5a5340['id']);return _0x350f3a['sequelize'][_0x1126('0x7f')](_0x2db45e[_0x1126('0x80')](),_0x128c94)[_0x1126('0x9')](function(_0x592960){_0x5a5340[_0x2fe6dc+_0x1126('0x81')]=_0x592960;_0x47e53d(_0x592960);})['catch'](function(_0x558b6e){_0x2b23e3(_0x558b6e);});});}return _0x39b786[_0x1126('0x82')](_0x1126('0x83'),attributes,{'tableName':_0x1126('0x84'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x1230e9){var _0x3a76ec={'raw':![],'where':{}};var _0x1b4ebf={};var _0x1a0e26={'count':0x0,'rows':[]};var _0x5036d4=_0x1230e9[_0x1126('0x7f')][_0x1126('0x85')];var _0x116867=_0x1230e9[_0x1126('0x7f')][_0x1126('0x86')]||![];var _0x3cd788=_0x48a08d(_0x5036d4,_0x116867);if(!_0x3cd788['childModel'])throw new Error('Invalid\x20section\x20\x27'+_0x5036d4+'\x27');var _0x16a343=[{'name':_0x5036d4}];if(!_[_0x1126('0x87')](_0x3cd788['parentSections']))_0x16a343=_0x3cd788['parentSections'];var _0x5e9260=[];for(var _0x51a28d=0x0;_0x51a28d<_0x16a343[_0x1126('0x88')];_0x51a28d++){_0x5e9260[_0x1126('0x89')](_0x350f3a[_0x1126('0x8a')]['find']({'where':{'userProfileId':_0x1230e9[_0x1126('0x8b')]['id'],'name':_0x16a343[_0x51a28d][_0x1126('0xe')]},'raw':!![]}));}return Promise[_0x1126('0x8c')](_0x5e9260)[_0x1126('0x9')](function(_0x22d403){var _0x3f007b=_[_0x1126('0x5')](_0x22d403,function(_0x49a0a3){return _0x49a0a3?_0x49a0a3:undefined;});var _0x339aa6=_[_0x1126('0x5')](_0x16a343,[_0x1126('0x8d'),!![]]);var _0xd8171c=_[_0x1126('0x87')](_0x3f007b)&&_['isEmpty'](_0x339aa6)?null:_['union'](_0x339aa6,_0x3f007b);if(!_0xd8171c)return null;var _0x15cf3d=[];for(var _0x2643d7=0x0;_0x2643d7<_0xd8171c['length'];_0x2643d7++){var _0x3bf25d=_[_0x1126('0x8e')](_0x16a343,function(_0x366675){return _0xd8171c[_0x2643d7]?_0x366675[_0x1126('0xe')]===_0xd8171c[_0x2643d7][_0x1126('0xe')]:null;});if(_0x3bf25d){if(_0xd8171c[_0x2643d7][_0x1126('0x8d')]){_0x15cf3d[_0x1126('0x89')](_0x4245ca(_0x3cd788[_0x1126('0x12')],_0xd8171c[_0x2643d7]));}else{if(!_0xd8171c[_0x2643d7][_0x1126('0x8f')]){_0x15cf3d[_0x1126('0x89')](_0x4794a7(_0x3bf25d,_0xd8171c[_0x2643d7],_0x3cd788[_0x1126('0x12')]));}else{if(_0x3bf25d[_0x1126('0xd')]){_0x15cf3d[_0x1126('0x89')](_0x34571c(_0x3bf25d,_0xd8171c[_0x2643d7]));}}}}}return Promise['all'](_0x15cf3d);})[_0x1126('0x9')](function(_0x274343){var _0x2b61ae=_0x274343;var _0x53ea9a=null;if(_0x2b61ae){_0x53ea9a=_0x2b61ae['length']===0x1?_0x2b61ae[0x0]:null;}if(!_0x53ea9a&&!_0x2b61ae)return _0x1a0e26;var _0xe22fd2=_0x350f3a[_0x3cd788[_0x1126('0x12')]][_0x1126('0x90')];_0x1b4ebf[_0x1126('0xd')]=_['keys'](_0xe22fd2);_0x1b4ebf['query']=_['keys'](_0x1230e9[_0x1126('0x7f')]);_0x1b4ebf[_0x1126('0x91')]=_[_0x1126('0x92')](_0x1b4ebf[_0x1126('0xd')],_0x1b4ebf['query']);_0x3a76ec[_0x1126('0x93')]=_['intersection'](_0x1b4ebf[_0x1126('0xd')],qs[_0x1126('0x94')](_0x1230e9[_0x1126('0x7f')][_0x1126('0x94')]));_0x3a76ec[_0x1126('0x93')]=_0x3a76ec[_0x1126('0x93')][_0x1126('0x88')]?_0x3a76ec['attributes']:_0x1b4ebf[_0x1126('0xd')];if(!_0x1230e9['query'][_0x1126('0x95')](_0x1126('0x96'))){_0x3a76ec['limit']=qs[_0x1126('0x97')](_0x1230e9[_0x1126('0x7f')]['limit']);_0x3a76ec[_0x1126('0x98')]=qs[_0x1126('0x98')](_0x1230e9['query']['offset']);}_0x3a76ec[_0x1126('0x99')]=qs[_0x1126('0x9a')](_0x1230e9[_0x1126('0x7f')]['sort']);_0x3a76ec['where']=qs['filters'](_[_0x1126('0x9b')](_0x1230e9['query'],_0x1b4ebf['filters']));if(_0x1230e9[_0x1126('0x7f')]['filter']){_0x3a76ec[_0x1126('0x7d')]=_[_0x1126('0x9c')](_0x3a76ec['where'],{'$or':_[_0x1126('0xb')](_0xe22fd2,function(_0x375728){if(_0x375728[_0x1126('0x10')][_0x1126('0x9d')]!==_0x1126('0x9e')){var _0x5e9872={};_0x5e9872[_0x375728[_0x1126('0x6')]]={'$like':'%'+_0x1230e9[_0x1126('0x7f')]['filter']+'%'};return _0x5e9872;}})});}var _0xd182b1=[];var _0x2d6fcf=null;var _0x2c0908={};if(_0x53ea9a){_0x2d6fcf=_[_0x1126('0x8e')](_0x16a343,[_0x1126('0xe'),_0x53ea9a[_0x1126('0xe')]]);if(_0x2d6fcf[_0x1126('0x6')]){_0x2c0908={};if(_0x3cd788[_0x1126('0x12')]===_0x1126('0xf')){_0x2c0908[_0x2d6fcf[_0x1126('0x9f')]]=_[_0x1126('0xb')](_0x53ea9a[_0x1126('0xa')],'id');}else{_0x2c0908[_0x2d6fcf[_0x1126('0x9f')]]=_0x53ea9a[_0x1126('0xa')];}_0xd182b1[_0x1126('0x89')](_0x2c0908);}else{_0x3a76ec[_0x1126('0x7d')]['id']=_0x53ea9a['associatedResources'];}}else{for(var _0x31cfb5=0x0;_0x31cfb5<_0x2b61ae[_0x1126('0x88')];_0x31cfb5++){_0x2d6fcf=_[_0x1126('0x8e')](_0x16a343,[_0x1126('0xe'),_0x2b61ae[_0x31cfb5][_0x1126('0xe')]]);if(_0x2d6fcf['field']){_0x2c0908={};_0x2c0908[_0x2d6fcf[_0x1126('0x9f')]]=_0x2b61ae[_0x31cfb5]['associatedResources'];_0xd182b1['push'](_0x2c0908);}else{if(!_0x3a76ec[_0x1126('0x7d')]['id'])_0x3a76ec[_0x1126('0x7d')]['id']=[];_0x2b61ae[_0x31cfb5]['associatedResources']['forEach'](function(_0xaada05){_0x3a76ec[_0x1126('0x7d')]['id'][_0x1126('0x89')](_0xaada05);});}}}if(!_[_0x1126('0x87')](_0xd182b1)){_0x3a76ec[_0x1126('0x7d')]=_[_0x1126('0x9c')](_0x3a76ec[_0x1126('0x7d')],{'$and':{'$or':_0xd182b1}});}_0x3a76ec=_[_0x1126('0x9c')]({},_0x3a76ec,_0x1230e9[_0x1126('0xa0')]);if(_0x53ea9a&&!_0x53ea9a['autoAssociation']&&_0x3cd788[_0x1126('0x12')]===_0x1126('0xf')){if(_0x1230e9[_0x1126('0x7f')][_0x1126('0xa1')]){_0x3a76ec[_0x1126('0xa2')]=[{'all':!![]}];}return _0x350f3a[_0x3cd788[_0x1126('0x12')]]['findAll'](_0x3a76ec)[_0x1126('0x9')](function(_0x2cc4c8){var _0x194b3c=[];_0x2cc4c8[_0x1126('0xa3')](function(_0x12cdc6){var _0x1796eb;switch(_0x12cdc6[_0x1126('0xa4')]){case _0x1126('0xa5'):_0x1796eb=_[_0x1126('0x8e')](_0x53ea9a[_0x1126('0xa')],function(_0x5d6edb){return _0x5d6edb['id']===_0x12cdc6['reportId']&&_0x5d6edb[_0x1126('0x10')]==='DefaultReports';});break;case _0x1126('0xa6'):_0x1796eb=_['find'](_0x53ea9a[_0x1126('0xa')],function(_0x5059d3){return _0x5059d3['id']===_0x12cdc6[_0x1126('0x70')]&&_0x5059d3['type']==='CustomReports';});break;}if(_0x1796eb)_0x194b3c['push'](_0x12cdc6);});_0x1a0e26[_0x1126('0xa7')]=_0x194b3c[_0x1126('0x88')];_0x1a0e26['rows']=_0x194b3c;return _0x1a0e26;});}else{return _0x350f3a[_0x3cd788['childModel']][_0x1126('0xa7')]({'where':_0x3a76ec[_0x1126('0x7d')]})[_0x1126('0x9')](function(_0x5dfb8f){_0x1a0e26['count']=_0x5dfb8f;if(_0x1230e9[_0x1126('0x7f')]['includeAll']){if(_0x3cd788[_0x1126('0x12')]===_0x1126('0x1a')){_0x3a76ec[_0x1126('0xa2')]=[{'model':_0x350f3a[_0x1126('0x65')],'as':_0x1126('0xa8'),'attributes':['id','name','color'],'required':_0x1230e9[_0x1126('0x7f')][_0x1126('0xa9')]?!![]:![]},{'model':_0x350f3a[_0x1126('0x65')],'as':_0x1126('0xaa'),'attributes':['id',_0x1126('0xe'),_0x1126('0xab')],'through':_0x1230e9[_0x1126('0x7f')][_0x1126('0xa9')]?{'attributes':[],'where':{'TagId':_0x1230e9[_0x1126('0x7f')][_0x1126('0xa9')]||undefined}}:{},'required':_0x1230e9[_0x1126('0x7f')]['tag']?!![]:![]}];}else{_0x3a76ec[_0x1126('0xa2')]=[{'all':!![]}];}}return _0x350f3a[_0x3cd788['childModel']][_0x1126('0x8')](_0x3a76ec);})['then'](function(_0x4256e6){_0x1a0e26[_0x1126('0xac')]=_0x4256e6;if(_0x5036d4===_0x1126('0x50')&&_0x1230e9[_0x1126('0x7f')]['openTabs']===_0x1126('0xad')){var _0x834360=[];for(var _0x4b5d46=0x0;_0x4b5d46<_0x1a0e26['rows'][_0x1126('0x88')];_0x4b5d46++){_0x834360[_0x1126('0x89')](_0x25038f(_0x1126('0xae'),_0x1a0e26['rows'][_0x4b5d46][_0x1126('0xaf')]));_0x834360['push'](_0x25038f(_0x1126('0xb0'),_0x1a0e26[_0x1126('0xac')][_0x4b5d46]['dataValues']));_0x834360[_0x1126('0x89')](_0x25038f(_0x1126('0xb1'),_0x1a0e26[_0x1126('0xac')][_0x4b5d46][_0x1126('0xaf')]));_0x834360[_0x1126('0x89')](_0x25038f('mail',_0x1a0e26[_0x1126('0xac')][_0x4b5d46][_0x1126('0xaf')]));_0x834360[_0x1126('0x89')](_0x25038f('openchannel',_0x1a0e26['rows'][_0x4b5d46]['dataValues']));_0x834360[_0x1126('0x89')](_0x25038f(_0x1126('0xb2'),_0x1a0e26[_0x1126('0xac')][_0x4b5d46][_0x1126('0xaf')]));}return Promise['all'](_0x834360)[_0x1126('0x9')](function(){return _0x1a0e26;});}return _0x1a0e26;});}});}}});};
\ No newline at end of file
+var _0x4bd3=['key','foreignKey','where','forEach','options','includeAll','include','custom','CustomReports','count','rows','color','ThroughTags','tag','openTabs','true','chat','dataValues','sms','fax','mail','all','lodash','../../components/parsers/qs','squel','models','filter','value','findAll','then','associatedResources','catch','field','model','resolve','UserProfileResource','map','AnalyticExtractedReport','resourceId','type','toLowerCase','squareprojects','SquareProject','odbc','childModel','SquareOdbc','SquareRecording','parentSections','SquareProjects','projectName','projects','JscriptyProject','contacts','CmContact','Lists','ListId','CmList','CmCompany','globalcustomfields','ChatQueue','chatwebsites','faxqueues','FaxQueue','faxaccounts','FaxAccount','internalroutes','VoiceExtension','contexts','VoiceContext','voicemails','VoiceMail','voicerecordings','Agents','membername','User','role','agent','Telephones','name','telephone','VoiceQueues','VoiceQueue','QueueCampaigns','queue','chanspies','VoiceChanSpy','voiceprefixes','ivrcampaigns','Campaign','mailqueues','MailQueue','MailAccount','openchannelqueues','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','smsqueues','SmsAccount','whatsappqueues','whatsappaccounts','WhatsappAccount','teams','voicequeues','users','agents','telephones','admin','user','ZendeskAccount','freshdeskaccounts','FreshdeskAccount','sugarcrmaccounts','deskaccounts','DeskAccount','zohoaccounts','vtigeraccounts','cannedanswers','Dashboard','Pause','sounds','tags','Tag','templates','Template','Trigger','trunks','variables','Variable','Plugin','extractedreports','Reports','reportId','metrics','AnalyticMetric','toUpperCase','Sequelize','QueryTypes','SELECT','select','ui.','InteractionId','ui.createdAt','from','user_has_','ui.UserId\x20=\x20?','sequelize','query','toString','define','UserProfile','section','mergeResources','isEmpty','UserProfileSection','find','params','ignore','union','length','push','autoAssociation','rawAttributes','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','offset','order','sort','pick','merge'];(function(_0x32552b,_0x376a0e){var _0x540754=function(_0x399831){while(--_0x399831){_0x32552b['push'](_0x32552b['shift']());}};_0x540754(++_0x376a0e);}(_0x4bd3,0x174));var _0x34bd=function(_0x1f0649,_0x1999f1){_0x1f0649=_0x1f0649-0x0;var _0x564d9d=_0x4bd3[_0x1f0649];return _0x564d9d;};'use strict';var _=require(_0x34bd('0x0'));var attributes=require('./userProfile.attributes');var qs=require(_0x34bd('0x1'));var squel=require(_0x34bd('0x2'));module['exports']=function(_0x4997bc){var _0x4cad21=_0x4997bc[_0x34bd('0x3')];function _0x44854a(_0x1fc8eb,_0x5846f3){return new Promise(function(_0x2133c5,_0x2a15a2){if(!_0x5846f3)return _0x2133c5(null);var _0x5c2a7a=_0x5846f3[_0x34bd('0x4')]?{[_0x5846f3[_0x34bd('0x4')]['field']]:_0x5846f3[_0x34bd('0x4')][_0x34bd('0x5')]}:undefined;return _0x4cad21[_0x1fc8eb][_0x34bd('0x6')]({'where':_0x5c2a7a,'raw':!![]})[_0x34bd('0x7')](function(_0x1ac77f){_0x5846f3[_0x34bd('0x8')]=_['map'](_0x1ac77f,'id');_0x2133c5(_0x5846f3);})[_0x34bd('0x9')](function(_0x45322f){_0x2a15a2(_0x45322f);});});}function _0x282ea6(_0x7c7992,_0x501b7f){return new Promise(function(_0x4a8622,_0x3da7a0){var _0x5e4ce7=_0x7c7992['filter']?{[_0x7c7992[_0x34bd('0x4')][_0x34bd('0xa')]]:_0x7c7992[_0x34bd('0x4')][_0x34bd('0x5')]}:undefined;return _0x4cad21[_0x7c7992[_0x34bd('0xb')]][_0x34bd('0x6')]({'where':_0x5e4ce7,'raw':!![]})[_0x34bd('0x7')](function(_0x236f6b){_0x501b7f[_0x34bd('0x8')]=_['map'](_0x236f6b,function(_0x3fa6a8){return _0x3fa6a8['name'];});_0x4a8622(_0x501b7f);})['catch'](function(_0x6638ed){_0x3da7a0(_0x6638ed);});});}function _0x30b3f2(_0x280c1a,_0x2dc917,_0x34b91b){if(!_0x2dc917)return Promise[_0x34bd('0xc')](null);return new Promise(function(_0xd39d72,_0x1c12e8){return _0x4cad21[_0x34bd('0xd')][_0x34bd('0x6')]({'where':{'sectionId':_0x2dc917['id']},'raw':!![]})[_0x34bd('0x7')](function(_0x48d2ba){if(_0x280c1a[_0x34bd('0xa')]&&_0x280c1a[_0x34bd('0xa')]!=='id'){_0x2dc917[_0x34bd('0x8')]=_[_0x34bd('0xe')](_0x48d2ba,function(_0x3976e4){return _0x3976e4[_0x280c1a[_0x34bd('0xa')]];});}else{if(_0x34b91b===_0x34bd('0xf')){_0x2dc917[_0x34bd('0x8')]=_[_0x34bd('0xe')](_0x48d2ba,function(_0x55538e){return{'id':_0x55538e[_0x34bd('0x10')],'type':_0x55538e[_0x34bd('0x11')]};});}else{_0x2dc917[_0x34bd('0x8')]=_[_0x34bd('0xe')](_0x48d2ba,function(_0x463224){return _0x463224['resourceId'];});}}_0xd39d72(_0x2dc917);})['catch'](function(_0x5da62a){_0x1c12e8(_0x5da62a);});});}function _0x4edf84(_0x3dafe8,_0x503a60){var _0x10fc4b={'parentSections':[]};switch(_0x3dafe8[_0x34bd('0x12')]()){case _0x34bd('0x13'):_0x10fc4b['childModel']=_0x34bd('0x14');break;case _0x34bd('0x15'):_0x10fc4b[_0x34bd('0x16')]=_0x34bd('0x17');break;case'squarerecordings':_0x10fc4b[_0x34bd('0x16')]=_0x34bd('0x18');_0x10fc4b[_0x34bd('0x19')]=[{'name':_0x34bd('0x1a'),'field':'name','foreignKey':_0x34bd('0x1b')}];break;case _0x34bd('0x1c'):_0x10fc4b['childModel']=_0x34bd('0x1d');break;case _0x34bd('0x1e'):_0x10fc4b[_0x34bd('0x16')]=_0x34bd('0x1f');_0x10fc4b[_0x34bd('0x19')]=[{'name':_0x34bd('0x20'),'field':'id','foreignKey':_0x34bd('0x21')}];break;case'lists':_0x10fc4b[_0x34bd('0x16')]=_0x34bd('0x22');break;case'companies':_0x10fc4b['childModel']=_0x34bd('0x23');break;case _0x34bd('0x24'):_0x10fc4b[_0x34bd('0x16')]='CmCustomField';break;case'chatqueues':_0x10fc4b[_0x34bd('0x16')]=_0x34bd('0x25');break;case _0x34bd('0x26'):_0x10fc4b[_0x34bd('0x16')]='ChatWebsite';break;case _0x34bd('0x27'):_0x10fc4b[_0x34bd('0x16')]=_0x34bd('0x28');break;case _0x34bd('0x29'):_0x10fc4b[_0x34bd('0x16')]=_0x34bd('0x2a');break;case'inboundroutes':case _0x34bd('0x2b'):case'outboundroutes':_0x10fc4b[_0x34bd('0x16')]=_0x34bd('0x2c');break;case _0x34bd('0x2d'):_0x10fc4b['childModel']=_0x34bd('0x2e');break;case _0x34bd('0x2f'):_0x10fc4b['childModel']=_0x34bd('0x30');break;case _0x34bd('0x31'):_0x10fc4b[_0x34bd('0x16')]='VoiceRecording';_0x10fc4b[_0x34bd('0x19')]=[{'name':_0x34bd('0x32'),'field':'name','foreignKey':_0x34bd('0x33'),'model':_0x34bd('0x34'),'filter':{'field':_0x34bd('0x35'),'value':[_0x34bd('0x36')]}},{'name':_0x34bd('0x37'),'field':_0x34bd('0x38'),'foreignKey':'membername','model':'User','filter':{'field':'role','value':[_0x34bd('0x39')]}},{'name':_0x34bd('0x3a'),'field':'name','foreignKey':'queue','model':_0x34bd('0x3b'),'filter':{'field':'type','value':['inbound']}},{'name':_0x34bd('0x3c'),'field':_0x34bd('0x38'),'foreignKey':_0x34bd('0x3d'),'model':_0x34bd('0x3b'),'filter':{'field':_0x34bd('0x11'),'value':['outbound']}}];break;case'musiconholds':_0x10fc4b[_0x34bd('0x16')]='VoiceMusicOnHold';break;case _0x34bd('0x3e'):_0x10fc4b[_0x34bd('0x16')]=_0x34bd('0x3f');break;case _0x34bd('0x40'):_0x10fc4b[_0x34bd('0x16')]='VoicePrefix';break;case _0x34bd('0x41'):_0x10fc4b[_0x34bd('0x16')]=_0x34bd('0x42');break;case _0x34bd('0x43'):_0x10fc4b['childModel']=_0x34bd('0x44');break;case'mailaccounts':_0x10fc4b[_0x34bd('0x16')]=_0x34bd('0x45');break;case'mailsubstatuses':_0x10fc4b[_0x34bd('0x16')]='MailSubstatus';break;case _0x34bd('0x46'):_0x10fc4b[_0x34bd('0x16')]=_0x34bd('0x47');break;case _0x34bd('0x48'):_0x10fc4b[_0x34bd('0x16')]=_0x34bd('0x49');break;case _0x34bd('0x4a'):_0x10fc4b['childModel']='SmsQueue';break;case'smsaccounts':_0x10fc4b[_0x34bd('0x16')]=_0x34bd('0x4b');break;case _0x34bd('0x4c'):_0x10fc4b[_0x34bd('0x16')]='WhatsappQueue';break;case _0x34bd('0x4d'):_0x10fc4b[_0x34bd('0x16')]=_0x34bd('0x4e');break;case _0x34bd('0x4f'):_0x10fc4b[_0x34bd('0x16')]='Team';break;case _0x34bd('0x50'):case'queuecampaigns':_0x10fc4b['childModel']=_0x34bd('0x3b');if(_0x503a60){_0x10fc4b['parentSections']=[{'name':_0x34bd('0x3a')},{'name':_0x34bd('0x3c')}];}break;case _0x34bd('0x51'):case _0x34bd('0x52'):case _0x34bd('0x53'):_0x10fc4b['childModel']='User';if(_0x503a60){_0x10fc4b[_0x34bd('0x19')]=[{'name':'Users','filter':{'field':_0x34bd('0x35'),'value':[_0x34bd('0x54'),_0x34bd('0x55')]},'ignore':!![]},{'name':'Agents'},{'name':'Telephones'}];}break;case'zendeskaccounts':_0x10fc4b['childModel']=_0x34bd('0x56');break;case'salesforceaccounts':_0x10fc4b[_0x34bd('0x16')]='SalesforceAccount';break;case _0x34bd('0x57'):_0x10fc4b[_0x34bd('0x16')]=_0x34bd('0x58');break;case _0x34bd('0x59'):_0x10fc4b[_0x34bd('0x16')]='SugarcrmAccount';break;case _0x34bd('0x5a'):_0x10fc4b[_0x34bd('0x16')]=_0x34bd('0x5b');break;case _0x34bd('0x5c'):_0x10fc4b[_0x34bd('0x16')]='ZohoAccount';break;case _0x34bd('0x5d'):_0x10fc4b[_0x34bd('0x16')]='User';break;case _0x34bd('0x5e'):_0x10fc4b[_0x34bd('0x16')]='CannedAnswer';break;case'dispositions':_0x10fc4b[_0x34bd('0x16')]='Disposition';break;case'customdashboards':_0x10fc4b[_0x34bd('0x16')]=_0x34bd('0x5f');break;case'intervals':_0x10fc4b['childModel']='Interval';break;case'pauses':_0x10fc4b[_0x34bd('0x16')]=_0x34bd('0x60');break;case'scheduler':_0x10fc4b['childModel']='Schedule';break;case _0x34bd('0x61'):_0x10fc4b[_0x34bd('0x16')]='Sound';break;case _0x34bd('0x62'):_0x10fc4b[_0x34bd('0x16')]=_0x34bd('0x63');break;case _0x34bd('0x64'):_0x10fc4b[_0x34bd('0x16')]=_0x34bd('0x65');break;case'triggers':_0x10fc4b[_0x34bd('0x16')]=_0x34bd('0x66');break;case _0x34bd('0x67'):_0x10fc4b[_0x34bd('0x16')]='Trunk';break;case _0x34bd('0x68'):_0x10fc4b['childModel']=_0x34bd('0x69');break;case'plugins':_0x10fc4b[_0x34bd('0x16')]=_0x34bd('0x6a');break;case _0x34bd('0x6b'):_0x10fc4b[_0x34bd('0x16')]=_0x34bd('0xf');_0x10fc4b[_0x34bd('0x19')]=[{'name':_0x34bd('0x6c'),'field':'id','foreignKey':_0x34bd('0x6d')}];break;case _0x34bd('0x6e'):_0x10fc4b[_0x34bd('0x16')]=_0x34bd('0x6f');break;}return _0x10fc4b;}function _0x5ddb03(_0x2e232f,_0x55f72e){var _0x15fea7=_0x2e232f['charAt'](0x0)[_0x34bd('0x70')]()+_0x2e232f['slice'](0x1);var _0x1d85d0={'type':_0x4cad21[_0x34bd('0x71')][_0x34bd('0x72')][_0x34bd('0x73')],'raw':!![]};return new Promise(function(_0x3ebbf2,_0x34dbcc){var _0x109fce=squel[_0x34bd('0x74')]()[_0x34bd('0xa')](_0x34bd('0x75')+_0x15fea7+_0x34bd('0x76'),'id')[_0x34bd('0xa')](_0x34bd('0x77'))[_0x34bd('0x78')](_0x34bd('0x79')+_0x2e232f+'_interactions','ui')['where'](_0x34bd('0x7a'),_0x55f72e['id']);return _0x4cad21[_0x34bd('0x7b')][_0x34bd('0x7c')](_0x109fce[_0x34bd('0x7d')](),_0x1d85d0)[_0x34bd('0x7')](function(_0x5d4833){_0x55f72e[_0x15fea7+'OpenTabs']=_0x5d4833;_0x3ebbf2(_0x5d4833);})['catch'](function(_0x49f095){_0x34dbcc(_0x49f095);});});}return _0x4997bc[_0x34bd('0x7e')](_0x34bd('0x7f'),attributes,{'tableName':'user_profiles','paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x163935){var _0xfa0814={'raw':![],'where':{}};var _0x13db71={};var _0x583590={'count':0x0,'rows':[]};var _0x40b148=_0x163935[_0x34bd('0x7c')][_0x34bd('0x80')];var _0x344be3=_0x163935[_0x34bd('0x7c')][_0x34bd('0x81')]||![];var _0x310bac=_0x4edf84(_0x40b148,_0x344be3);if(!_0x310bac[_0x34bd('0x16')])throw new Error('Invalid\x20section\x20\x27'+_0x40b148+'\x27');var _0x5e239f=[{'name':_0x40b148}];if(!_[_0x34bd('0x82')](_0x310bac['parentSections']))_0x5e239f=_0x310bac[_0x34bd('0x19')];var _0x4762d9=[];for(var _0x2ae5e4=0x0;_0x2ae5e4<_0x5e239f['length'];_0x2ae5e4++){_0x4762d9['push'](_0x4cad21[_0x34bd('0x83')][_0x34bd('0x84')]({'where':{'userProfileId':_0x163935[_0x34bd('0x85')]['id'],'name':_0x5e239f[_0x2ae5e4]['name']},'raw':!![]}));}return Promise['all'](_0x4762d9)[_0x34bd('0x7')](function(_0x8d929e){var _0x32c61f=_[_0x34bd('0x4')](_0x8d929e,function(_0x29b588){return _0x29b588?_0x29b588:undefined;});var _0x34c9bc=_[_0x34bd('0x4')](_0x5e239f,[_0x34bd('0x86'),!![]]);var _0x31bedd=_['isEmpty'](_0x32c61f)&&_['isEmpty'](_0x34c9bc)?null:_[_0x34bd('0x87')](_0x34c9bc,_0x32c61f);if(!_0x31bedd)return null;var _0x4fab21=[];for(var _0x2b9bc3=0x0;_0x2b9bc3<_0x31bedd[_0x34bd('0x88')];_0x2b9bc3++){var _0x1639de=_[_0x34bd('0x84')](_0x5e239f,function(_0x4a5e55){return _0x31bedd[_0x2b9bc3]?_0x4a5e55['name']===_0x31bedd[_0x2b9bc3][_0x34bd('0x38')]:null;});if(_0x1639de){if(_0x31bedd[_0x2b9bc3][_0x34bd('0x86')]){_0x4fab21[_0x34bd('0x89')](_0x44854a(_0x310bac['childModel'],_0x31bedd[_0x2b9bc3]));}else{if(!_0x31bedd[_0x2b9bc3][_0x34bd('0x8a')]){_0x4fab21['push'](_0x30b3f2(_0x1639de,_0x31bedd[_0x2b9bc3],_0x310bac[_0x34bd('0x16')]));}else{if(_0x1639de[_0x34bd('0xb')]){_0x4fab21[_0x34bd('0x89')](_0x282ea6(_0x1639de,_0x31bedd[_0x2b9bc3]));}}}}}return Promise['all'](_0x4fab21);})[_0x34bd('0x7')](function(_0x5c6898){var _0x5d96b9=_0x5c6898;var _0x3cf4c3=null;if(_0x5d96b9){_0x3cf4c3=_0x5d96b9[_0x34bd('0x88')]===0x1?_0x5d96b9[0x0]:null;}if(!_0x3cf4c3&&!_0x5d96b9)return _0x583590;var _0x29a259=_0x4cad21[_0x310bac['childModel']][_0x34bd('0x8b')];_0x13db71[_0x34bd('0xb')]=_[_0x34bd('0x8c')](_0x29a259);_0x13db71['query']=_[_0x34bd('0x8c')](_0x163935[_0x34bd('0x7c')]);_0x13db71[_0x34bd('0x8d')]=_[_0x34bd('0x8e')](_0x13db71[_0x34bd('0xb')],_0x13db71[_0x34bd('0x7c')]);_0xfa0814[_0x34bd('0x8f')]=_[_0x34bd('0x8e')](_0x13db71[_0x34bd('0xb')],qs[_0x34bd('0x90')](_0x163935[_0x34bd('0x7c')]['fields']));_0xfa0814[_0x34bd('0x8f')]=_0xfa0814['attributes'][_0x34bd('0x88')]?_0xfa0814['attributes']:_0x13db71[_0x34bd('0xb')];if(!_0x163935[_0x34bd('0x7c')][_0x34bd('0x91')](_0x34bd('0x92'))){_0xfa0814[_0x34bd('0x93')]=qs[_0x34bd('0x93')](_0x163935[_0x34bd('0x7c')][_0x34bd('0x93')]);_0xfa0814[_0x34bd('0x94')]=qs[_0x34bd('0x94')](_0x163935['query']['offset']);}_0xfa0814[_0x34bd('0x95')]=qs[_0x34bd('0x96')](_0x163935[_0x34bd('0x7c')]['sort']);_0xfa0814['where']=qs['filters'](_[_0x34bd('0x97')](_0x163935[_0x34bd('0x7c')],_0x13db71[_0x34bd('0x8d')]));if(_0x163935[_0x34bd('0x7c')][_0x34bd('0x4')]){_0xfa0814['where']=_[_0x34bd('0x98')](_0xfa0814['where'],{'$or':_[_0x34bd('0xe')](_0x29a259,function(_0x34b7ea){if(_0x34b7ea['type'][_0x34bd('0x99')]!=='VIRTUAL'){var _0x242093={};_0x242093[_0x34b7ea['field']]={'$like':'%'+_0x163935[_0x34bd('0x7c')]['filter']+'%'};return _0x242093;}})});}var _0x397396=[];var _0x38f6f2=null;var _0x3506da={};if(_0x3cf4c3){_0x38f6f2=_[_0x34bd('0x84')](_0x5e239f,[_0x34bd('0x38'),_0x3cf4c3[_0x34bd('0x38')]]);if(_0x38f6f2[_0x34bd('0xa')]){_0x3506da={};if(_0x310bac[_0x34bd('0x16')]==='AnalyticExtractedReport'){_0x3506da[_0x38f6f2[_0x34bd('0x9a')]]=_[_0x34bd('0xe')](_0x3cf4c3[_0x34bd('0x8')],'id');}else{_0x3506da[_0x38f6f2['foreignKey']]=_0x3cf4c3['associatedResources'];}_0x397396['push'](_0x3506da);}else{_0xfa0814[_0x34bd('0x9b')]['id']=_0x3cf4c3[_0x34bd('0x8')];}}else{for(var _0x56935e=0x0;_0x56935e<_0x5d96b9[_0x34bd('0x88')];_0x56935e++){_0x38f6f2=_['find'](_0x5e239f,[_0x34bd('0x38'),_0x5d96b9[_0x56935e][_0x34bd('0x38')]]);if(_0x38f6f2[_0x34bd('0xa')]){_0x3506da={};_0x3506da[_0x38f6f2['foreignKey']]=_0x5d96b9[_0x56935e][_0x34bd('0x8')];_0x397396['push'](_0x3506da);}else{if(!_0xfa0814[_0x34bd('0x9b')]['id'])_0xfa0814[_0x34bd('0x9b')]['id']=[];_0x5d96b9[_0x56935e][_0x34bd('0x8')][_0x34bd('0x9c')](function(_0x1fe8cc){_0xfa0814[_0x34bd('0x9b')]['id'][_0x34bd('0x89')](_0x1fe8cc);});}}}if(!_[_0x34bd('0x82')](_0x397396)){_0xfa0814[_0x34bd('0x9b')]=_[_0x34bd('0x98')](_0xfa0814[_0x34bd('0x9b')],{'$and':{'$or':_0x397396}});}_0xfa0814=_[_0x34bd('0x98')]({},_0xfa0814,_0x163935[_0x34bd('0x9d')]);if(_0x3cf4c3&&!_0x3cf4c3[_0x34bd('0x8a')]&&_0x310bac['childModel']===_0x34bd('0xf')){if(_0x163935[_0x34bd('0x7c')][_0x34bd('0x9e')]){_0xfa0814[_0x34bd('0x9f')]=[{'all':!![]}];}return _0x4cad21[_0x310bac[_0x34bd('0x16')]]['findAll'](_0xfa0814)[_0x34bd('0x7')](function(_0x1d4259){var _0x14b45a=[];_0x1d4259[_0x34bd('0x9c')](function(_0x59708f){var _0x2b838a;switch(_0x59708f['reportType']){case'default':_0x2b838a=_['find'](_0x3cf4c3['associatedResources'],function(_0x325f8a){return _0x325f8a['id']===_0x59708f[_0x34bd('0x6d')]&&_0x325f8a[_0x34bd('0x11')]==='DefaultReports';});break;case _0x34bd('0xa0'):_0x2b838a=_[_0x34bd('0x84')](_0x3cf4c3[_0x34bd('0x8')],function(_0x2b27c7){return _0x2b27c7['id']===_0x59708f[_0x34bd('0x6d')]&&_0x2b27c7[_0x34bd('0x11')]===_0x34bd('0xa1');});break;}if(_0x2b838a)_0x14b45a[_0x34bd('0x89')](_0x59708f);});_0x583590[_0x34bd('0xa2')]=_0x14b45a[_0x34bd('0x88')];_0x583590[_0x34bd('0xa3')]=_0x14b45a;return _0x583590;});}else{return _0x4cad21[_0x310bac['childModel']]['count']({'where':_0xfa0814[_0x34bd('0x9b')]})['then'](function(_0xbe3d9c){_0x583590[_0x34bd('0xa2')]=_0xbe3d9c;if(_0x163935[_0x34bd('0x7c')][_0x34bd('0x9e')]){if(_0x310bac[_0x34bd('0x16')]===_0x34bd('0x1f')){_0xfa0814[_0x34bd('0x9f')]=[{'model':_0x4cad21[_0x34bd('0x63')],'as':'Tags','attributes':['id',_0x34bd('0x38'),_0x34bd('0xa4')],'required':_0x163935[_0x34bd('0x7c')]['tag']?!![]:![]},{'model':_0x4cad21[_0x34bd('0x63')],'as':_0x34bd('0xa5'),'attributes':['id',_0x34bd('0x38'),_0x34bd('0xa4')],'through':_0x163935['query'][_0x34bd('0xa6')]?{'attributes':[],'where':{'TagId':_0x163935[_0x34bd('0x7c')][_0x34bd('0xa6')]||undefined}}:{},'required':_0x163935[_0x34bd('0x7c')][_0x34bd('0xa6')]?!![]:![]}];}else{_0xfa0814[_0x34bd('0x9f')]=[{'all':!![]}];}}return _0x4cad21[_0x310bac[_0x34bd('0x16')]][_0x34bd('0x6')](_0xfa0814);})[_0x34bd('0x7')](function(_0x3b95f6){_0x583590['rows']=_0x3b95f6;if(_0x40b148===_0x34bd('0x32')&&_0x163935[_0x34bd('0x7c')][_0x34bd('0xa7')]===_0x34bd('0xa8')){var _0x2f7caf=[];for(var _0x38752d=0x0;_0x38752d<_0x583590[_0x34bd('0xa3')][_0x34bd('0x88')];_0x38752d++){_0x2f7caf[_0x34bd('0x89')](_0x5ddb03(_0x34bd('0xa9'),_0x583590[_0x34bd('0xa3')][_0x38752d][_0x34bd('0xaa')]));_0x2f7caf[_0x34bd('0x89')](_0x5ddb03(_0x34bd('0xab'),_0x583590['rows'][_0x38752d][_0x34bd('0xaa')]));_0x2f7caf['push'](_0x5ddb03(_0x34bd('0xac'),_0x583590[_0x34bd('0xa3')][_0x38752d][_0x34bd('0xaa')]));_0x2f7caf[_0x34bd('0x89')](_0x5ddb03(_0x34bd('0xad'),_0x583590[_0x34bd('0xa3')][_0x38752d][_0x34bd('0xaa')]));_0x2f7caf[_0x34bd('0x89')](_0x5ddb03('openchannel',_0x583590[_0x34bd('0xa3')][_0x38752d][_0x34bd('0xaa')]));_0x2f7caf[_0x34bd('0x89')](_0x5ddb03('whatsapp',_0x583590[_0x34bd('0xa3')][_0x38752d][_0x34bd('0xaa')]));}return Promise[_0x34bd('0xae')](_0x2f7caf)[_0x34bd('0x7')](function(){return _0x583590;});}return _0x583590;});}});}}});};
\ No newline at end of file
index 60ae860..ca132a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2272=['jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./userProfile.socket','request','then','info','UserProfile,\x20%s,\x20%s','request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x50fca0,_0x1d1d58){var _0x2c7892=function(_0x58c5ee){while(--_0x58c5ee){_0x50fca0['push'](_0x50fca0['shift']());}};_0x2c7892(++_0x1d1d58);}(_0x2272,0xd8));var _0x2227=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x2272[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x2227('0x0'));var util=require(_0x2227('0x1'));var moment=require(_0x2227('0x2'));var BPromise=require(_0x2227('0x3'));var rs=require(_0x2227('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2227('0x5'))['db'];var utils=require(_0x2227('0x6'));var logger=require(_0x2227('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x2227('0x8'));var client=jayson[_0x2227('0x9')][_0x2227('0xa')]({'port':0x232a});config[_0x2227('0xb')]=_[_0x2227('0xc')](config[_0x2227('0xb')],{'host':_0x2227('0xd'),'port':0x18eb});var socket=require(_0x2227('0xe'))(new Redis(config[_0x2227('0xb')]));require(_0x2227('0xf'))['register'](socket);function respondWithRpcPromise(_0x799370,_0x5c1cba,_0x2f66ca){return new BPromise(function(_0x2d1c39,_0x164735){return client[_0x2227('0x10')](_0x799370,_0x2f66ca)[_0x2227('0x11')](function(_0x51ed54){logger[_0x2227('0x12')](_0x2227('0x13'),_0x5c1cba,_0x2227('0x14'));logger[_0x2227('0x15')](_0x2227('0x16'),_0x5c1cba,_0x2227('0x14'),JSON['stringify'](_0x51ed54));if(_0x51ed54['error']){if(_0x51ed54['error'][_0x2227('0x17')]===0x1f4){logger['error'](_0x2227('0x13'),_0x5c1cba,_0x51ed54[_0x2227('0x18')]['message']);return _0x164735(_0x51ed54[_0x2227('0x18')][_0x2227('0x19')]);}logger[_0x2227('0x18')](_0x2227('0x13'),_0x5c1cba,_0x51ed54[_0x2227('0x18')][_0x2227('0x19')]);return _0x2d1c39(_0x51ed54['error'][_0x2227('0x19')]);}else{logger[_0x2227('0x12')](_0x2227('0x13'),_0x5c1cba,'request\x20sent');_0x2d1c39(_0x51ed54[_0x2227('0x1a')][_0x2227('0x19')]);}})[_0x2227('0x1b')](function(_0x2482ba){logger[_0x2227('0x18')](_0x2227('0x13'),_0x5c1cba,_0x2482ba);_0x164735(_0x2482ba);});});}
\ No newline at end of file
+var _0x9e69=['register','request','then','info','UserProfile,\x20%s,\x20%s','request\x20sent','UserProfile,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./userProfile.socket'];(function(_0x81ad64,_0xce0dd2){var _0x5824b8=function(_0x13d261){while(--_0x13d261){_0x81ad64['push'](_0x81ad64['shift']());}};_0x5824b8(++_0xce0dd2);}(_0x9e69,0x150));var _0x99e6=function(_0x2c74de,_0x50ede8){_0x2c74de=_0x2c74de-0x0;var _0x10bbfa=_0x9e69[_0x2c74de];return _0x10bbfa;};'use strict';var _=require('lodash');var util=require(_0x99e6('0x0'));var moment=require(_0x99e6('0x1'));var BPromise=require(_0x99e6('0x2'));var rs=require(_0x99e6('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x99e6('0x4'))['db'];var utils=require(_0x99e6('0x5'));var logger=require('../../config/logger')(_0x99e6('0x6'));var config=require(_0x99e6('0x7'));var jayson=require(_0x99e6('0x8'));var client=jayson['client'][_0x99e6('0x9')]({'port':0x232a});config[_0x99e6('0xa')]=_[_0x99e6('0xb')](config['redis'],{'host':_0x99e6('0xc'),'port':0x18eb});var socket=require(_0x99e6('0xd'))(new Redis(config['redis']));require(_0x99e6('0xe'))[_0x99e6('0xf')](socket);function respondWithRpcPromise(_0x5d2a2b,_0x26bcdd,_0x74906a){return new BPromise(function(_0x490a04,_0x4d2d8c){return client[_0x99e6('0x10')](_0x5d2a2b,_0x74906a)[_0x99e6('0x11')](function(_0x45d416){logger[_0x99e6('0x12')](_0x99e6('0x13'),_0x26bcdd,_0x99e6('0x14'));logger['debug'](_0x99e6('0x15'),_0x26bcdd,_0x99e6('0x14'),JSON[_0x99e6('0x16')](_0x45d416));if(_0x45d416['error']){if(_0x45d416[_0x99e6('0x17')][_0x99e6('0x18')]===0x1f4){logger[_0x99e6('0x17')]('UserProfile,\x20%s,\x20%s',_0x26bcdd,_0x45d416['error']['message']);return _0x4d2d8c(_0x45d416[_0x99e6('0x17')][_0x99e6('0x19')]);}logger[_0x99e6('0x17')]('UserProfile,\x20%s,\x20%s',_0x26bcdd,_0x45d416[_0x99e6('0x17')][_0x99e6('0x19')]);return _0x490a04(_0x45d416[_0x99e6('0x17')][_0x99e6('0x19')]);}else{logger[_0x99e6('0x12')]('UserProfile,\x20%s,\x20%s',_0x26bcdd,_0x99e6('0x14'));_0x490a04(_0x45d416['result'][_0x99e6('0x19')]);}})[_0x99e6('0x1a')](function(_0x538651){logger[_0x99e6('0x17')](_0x99e6('0x13'),_0x26bcdd,_0x538651);_0x4d2d8c(_0x538651);});});}
\ No newline at end of file
index 4f577c0..544068b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4f3=['removeListener','register','userProfile:','./userProfile.events','save','emit'];(function(_0x1c45f9,_0x1fb92f){var _0xa0ccd2=function(_0x2cbc2b){while(--_0x2cbc2b){_0x1c45f9['push'](_0x1c45f9['shift']());}};_0xa0ccd2(++_0x1fb92f);}(_0xb4f3,0xe1));var _0x3b4f=function(_0x1d1d91,_0x1050d6){_0x1d1d91=_0x1d1d91-0x0;var _0x1fde23=_0xb4f3[_0x1d1d91];return _0x1fde23;};'use strict';var UserProfileEvents=require(_0x3b4f('0x0'));var events=[_0x3b4f('0x1'),'remove','update'];function createListener(_0x355744,_0x46ca93){return function(_0x4ef3ee){_0x46ca93[_0x3b4f('0x2')](_0x355744,_0x4ef3ee);};}function removeListener(_0x3d6f1a,_0x2563c4){return function(){UserProfileEvents[_0x3b4f('0x3')](_0x3d6f1a,_0x2563c4);};}exports[_0x3b4f('0x4')]=function(_0x463cb7){for(var _0x26bd6f=0x0,_0x22d491=events['length'];_0x26bd6f<_0x22d491;_0x26bd6f++){var _0x55f2f4=events[_0x26bd6f];var _0x128e72=createListener(_0x3b4f('0x5')+_0x55f2f4,_0x463cb7);UserProfileEvents['on'](_0x55f2f4,_0x128e72);}};
\ No newline at end of file
+var _0x8f42=['update','emit','removeListener','userProfile:','./userProfile.events','save'];(function(_0x1306b7,_0x5d4891){var _0x45ad97=function(_0x1b69f2){while(--_0x1b69f2){_0x1306b7['push'](_0x1306b7['shift']());}};_0x45ad97(++_0x5d4891);}(_0x8f42,0x136));var _0x28f4=function(_0x10df35,_0x315828){_0x10df35=_0x10df35-0x0;var _0x4da716=_0x8f42[_0x10df35];return _0x4da716;};'use strict';var UserProfileEvents=require(_0x28f4('0x0'));var events=[_0x28f4('0x1'),'remove',_0x28f4('0x2')];function createListener(_0x2963f6,_0x57cba6){return function(_0x206ae0){_0x57cba6[_0x28f4('0x3')](_0x2963f6,_0x206ae0);};}function removeListener(_0x3250cb,_0x34d08d){return function(){UserProfileEvents[_0x28f4('0x4')](_0x3250cb,_0x34d08d);};}exports['register']=function(_0x7e5d43){for(var _0x1b960d=0x0,_0x554a0e=events['length'];_0x1b960d<_0x554a0e;_0x1b960d++){var _0x1e90ff=events[_0x1b960d];var _0x1c73e6=createListener(_0x28f4('0x5')+_0x1e90ff,_0x7e5d43);UserProfileEvents['on'](_0x1e90ff,_0x1c73e6);}};
\ No newline at end of file
index 3dedad8..c7834d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf812=['isAuthenticated','index','/describe','describe','/:id','post','create','put','delete','destroy','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./userProfileResource.controller','get'];(function(_0x4b31dc,_0x4e21f4){var _0x1bdbb8=function(_0x469d8c){while(--_0x469d8c){_0x4b31dc['push'](_0x4b31dc['shift']());}};_0x1bdbb8(++_0x4e21f4);}(_0xf812,0xc8));var _0x2f81=function(_0x2c8938,_0x183d38){_0x2c8938=_0x2c8938-0x0;var _0x3f42fe=_0xf812[_0x2c8938];return _0x3f42fe;};'use strict';var multer=require('multer');var util=require(_0x2f81('0x0'));var path=require(_0x2f81('0x1'));var timeout=require('connect-timeout');var express=require(_0x2f81('0x2'));var router=express[_0x2f81('0x3')]();var fs_extra=require(_0x2f81('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x2f81('0x5'));var config=require(_0x2f81('0x6'));var controller=require(_0x2f81('0x7'));router[_0x2f81('0x8')]('/',auth[_0x2f81('0x9')](),controller[_0x2f81('0xa')]);router['get'](_0x2f81('0xb'),auth['isAuthenticated'](),controller[_0x2f81('0xc')]);router['get'](_0x2f81('0xd'),auth[_0x2f81('0x9')](),controller['show']);router[_0x2f81('0xe')]('/',auth[_0x2f81('0x9')](),controller[_0x2f81('0xf')]);router[_0x2f81('0x10')]('/:id',auth[_0x2f81('0x9')](),controller['update']);router[_0x2f81('0x11')](_0x2f81('0xd'),auth['isAuthenticated'](),controller[_0x2f81('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x6595=['/describe','describe','/:id','show','post','create','put','update','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./userProfileResource.controller','get','isAuthenticated'];(function(_0x4fbfd9,_0x3ab91a){var _0x31dc94=function(_0x11e53b){while(--_0x11e53b){_0x4fbfd9['push'](_0x4fbfd9['shift']());}};_0x31dc94(++_0x3ab91a);}(_0x6595,0xb2));var _0x5659=function(_0x531ea3,_0x373939){_0x531ea3=_0x531ea3-0x0;var _0x2d7bda=_0x6595[_0x531ea3];return _0x2d7bda;};'use strict';var multer=require(_0x5659('0x0'));var util=require(_0x5659('0x1'));var path=require('path');var timeout=require(_0x5659('0x2'));var express=require(_0x5659('0x3'));var router=express[_0x5659('0x4')]();var fs_extra=require(_0x5659('0x5'));var auth=require(_0x5659('0x6'));var interaction=require(_0x5659('0x7'));var config=require('../../config/environment');var controller=require(_0x5659('0x8'));router[_0x5659('0x9')]('/',auth[_0x5659('0xa')](),controller['index']);router[_0x5659('0x9')](_0x5659('0xb'),auth[_0x5659('0xa')](),controller[_0x5659('0xc')]);router[_0x5659('0x9')](_0x5659('0xd'),auth[_0x5659('0xa')](),controller[_0x5659('0xe')]);router[_0x5659('0xf')]('/',auth[_0x5659('0xa')](),controller[_0x5659('0x10')]);router[_0x5659('0x11')](_0x5659('0xd'),auth[_0x5659('0xa')](),controller[_0x5659('0x12')]);router[_0x5659('0x13')](_0x5659('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0x5659('0x14')]=router;
\ No newline at end of file
index de128be..c6e2f2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcaac=['sequelize','STRING','INTEGER'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xcaac,0xfc));var _0xccaa=function(_0x580178,_0x49692e){_0x580178=_0x580178-0x0;var _0x4310d1=_0xcaac[_0x580178];return _0x4310d1;};'use strict';var Sequelize=require(_0xccaa('0x0'));module['exports']={'name':{'type':Sequelize[_0xccaa('0x1')],'allowNull':![]},'resourceId':{'type':Sequelize[_0xccaa('0x2')],'allowNull':![]},'type':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x98eb=['INTEGER','sequelize','exports','STRING'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x98eb,0xb5));var _0xb98e=function(_0x2080a3,_0x48acfa){_0x2080a3=_0x2080a3-0x0;var _0x8d7d17=_0x98eb[_0x2080a3];return _0x8d7d17;};'use strict';var Sequelize=require(_0xb98e('0x0'));module[_0xb98e('0x1')]={'name':{'type':Sequelize[_0xb98e('0x2')],'allowNull':![]},'resourceId':{'type':Sequelize[_0xb98e('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xb98e('0x2')],'allowNull':![]}};
\ No newline at end of file
index 0b770e4..ef631b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef0f=['json','apply','reject','save','update','destroy','then','error','stack','name','send','index','map','UserProfileResource','key','model','filters','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','params','keys','rawAttributes','find','create','body','catch','describe','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range'];(function(_0x44106f,_0x1adbec){var _0x2e33e7=function(_0x34f33e){while(--_0x34f33e){_0x44106f['push'](_0x44106f['shift']());}};_0x2e33e7(++_0x1adbec);}(_0xef0f,0x168));var _0xfef0=function(_0x187810,_0x5e1a88){_0x187810=_0x187810-0x0;var _0x58078d=_0xef0f[_0x187810];return _0x58078d;};'use strict';var emlformat=require(_0xfef0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfef0('0x1'));var jsonpatch=require(_0xfef0('0x2'));var rp=require(_0xfef0('0x3'));var moment=require('moment');var BPromise=require(_0xfef0('0x4'));var Mustache=require(_0xfef0('0x5'));var util=require(_0xfef0('0x6'));var path=require('path');var sox=require(_0xfef0('0x7'));var csv=require(_0xfef0('0x8'));var ejs=require(_0xfef0('0x9'));var fs=require('fs');var fs_extra=require(_0xfef0('0xa'));var _=require(_0xfef0('0xb'));var squel=require(_0xfef0('0xc'));var crypto=require('crypto');var jsforce=require(_0xfef0('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xfef0('0x8'));var querystring=require(_0xfef0('0xe'));var Papa=require(_0xfef0('0xf'));var Redis=require(_0xfef0('0x10'));var authService=require(_0xfef0('0x11'));var qs=require(_0xfef0('0x12'));var as=require(_0xfef0('0x13'));var hardwareService=require(_0xfef0('0x14'));var logger=require(_0xfef0('0x15'))(_0xfef0('0x16'));var utils=require(_0xfef0('0x17'));var config=require(_0xfef0('0x18'));var licenseUtil=require(_0xfef0('0x19'));var db=require(_0xfef0('0x1a'))['db'];function respondWithStatusCode(_0x546c7a,_0x3135ab){_0x3135ab=_0x3135ab||0xcc;return function(_0x2f4e23){if(_0x2f4e23){return _0x546c7a[_0xfef0('0x1b')](_0x3135ab);}return _0x546c7a[_0xfef0('0x1c')](_0x3135ab)[_0xfef0('0x1d')]();};}function respondWithResult(_0x45599a,_0xa9f040){_0xa9f040=_0xa9f040||0xc8;return function(_0x573ae7){if(_0x573ae7){return _0x45599a[_0xfef0('0x1c')](_0xa9f040)['json'](_0x573ae7);}};}function respondWithFilteredResult(_0x4b5bcf,_0x5acdd0){return function(_0x118b8d){if(_0x118b8d){var _0x284b6d=typeof _0x5acdd0[_0xfef0('0x1e')]===_0xfef0('0x1f')&&typeof _0x5acdd0[_0xfef0('0x20')]===_0xfef0('0x1f');var _0x155833=_0x118b8d[_0xfef0('0x21')];var _0x581459=_0x284b6d?0x0:_0x5acdd0[_0xfef0('0x1e')];var _0x1642cd=_0x284b6d?_0x118b8d[_0xfef0('0x21')]:_0x5acdd0[_0xfef0('0x1e')]+_0x5acdd0[_0xfef0('0x20')];var _0x55912f;if(_0x1642cd>=_0x155833){_0x1642cd=_0x155833;_0x55912f=0xc8;}else{_0x55912f=0xce;}_0x4b5bcf[_0xfef0('0x1c')](_0x55912f);return _0x4b5bcf['set'](_0xfef0('0x22'),_0x581459+'-'+_0x1642cd+'/'+_0x155833)[_0xfef0('0x23')](_0x118b8d);}return null;};}function patchUpdates(_0x28dee1){return function(_0x48408a){try{jsonpatch[_0xfef0('0x24')](_0x48408a,_0x28dee1,!![]);}catch(_0x4c304d){return BPromise[_0xfef0('0x25')](_0x4c304d);}return _0x48408a[_0xfef0('0x26')]();};}function saveUpdates(_0x52b93b,_0x4897af){return function(_0x4b8b22){if(_0x4b8b22){return _0x4b8b22[_0xfef0('0x27')](_0x52b93b)['then'](function(_0x1f9970){return _0x1f9970;});}return null;};}function removeEntity(_0x46b34a,_0x1a8d66){return function(_0x4483f2){if(_0x4483f2){return _0x4483f2[_0xfef0('0x28')]()[_0xfef0('0x29')](function(){_0x46b34a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x316e20,_0x1ffaa4){return function(_0x924f6e){if(!_0x924f6e){_0x316e20[_0xfef0('0x1b')](0x194);}return _0x924f6e;};}function handleError(_0xab231c,_0xf60f2){_0xf60f2=_0xf60f2||0x1f4;return function(_0x5df04f){logger[_0xfef0('0x2a')](_0x5df04f[_0xfef0('0x2b')]);if(_0x5df04f['name']){delete _0x5df04f[_0xfef0('0x2c')];}_0xab231c[_0xfef0('0x1c')](_0xf60f2)[_0xfef0('0x2d')](_0x5df04f);};}exports[_0xfef0('0x2e')]=function(_0x37921f,_0x1ac4a3){var _0x3e3c4c={},_0x3e026a={},_0x26cb9a={'count':0x0,'rows':[]};var _0x213a91=_[_0xfef0('0x2f')](db[_0xfef0('0x30')]['rawAttributes'],function(_0x445625){return{'name':_0x445625['fieldName'],'type':_0x445625['type'][_0xfef0('0x31')]};});_0x3e026a[_0xfef0('0x32')]=_['map'](_0x213a91,'name');_0x3e026a['query']=_['keys'](_0x37921f['query']);_0x3e026a[_0xfef0('0x33')]=_[_0xfef0('0x34')](_0x3e026a[_0xfef0('0x32')],_0x3e026a['query']);_0x3e3c4c['attributes']=_['intersection'](_0x3e026a[_0xfef0('0x32')],qs['fields'](_0x37921f[_0xfef0('0x35')][_0xfef0('0x36')]));_0x3e3c4c[_0xfef0('0x37')]=_0x3e3c4c['attributes'][_0xfef0('0x38')]?_0x3e3c4c['attributes']:_0x3e026a[_0xfef0('0x32')];if(!_0x37921f[_0xfef0('0x35')][_0xfef0('0x39')](_0xfef0('0x3a'))){_0x3e3c4c[_0xfef0('0x20')]=qs[_0xfef0('0x20')](_0x37921f[_0xfef0('0x35')][_0xfef0('0x20')]);_0x3e3c4c['offset']=qs[_0xfef0('0x1e')](_0x37921f[_0xfef0('0x35')][_0xfef0('0x1e')]);}_0x3e3c4c[_0xfef0('0x3b')]=qs[_0xfef0('0x3c')](_0x37921f[_0xfef0('0x35')][_0xfef0('0x3c')]);_0x3e3c4c[_0xfef0('0x3d')]=qs[_0xfef0('0x33')](_[_0xfef0('0x3e')](_0x37921f[_0xfef0('0x35')],_0x3e026a[_0xfef0('0x33')]),_0x213a91);if(_0x37921f[_0xfef0('0x35')]['filter']){_0x3e3c4c[_0xfef0('0x3d')]=_['merge'](_0x3e3c4c[_0xfef0('0x3d')],{'$or':_[_0xfef0('0x2f')](_0x213a91,function(_0x1ddce6){if(_0x1ddce6['type']!==_0xfef0('0x3f')){var _0x29469e={};_0x29469e[_0x1ddce6[_0xfef0('0x2c')]]={'$like':'%'+_0x37921f['query'][_0xfef0('0x40')]+'%'};return _0x29469e;}})});}_0x3e3c4c=_[_0xfef0('0x41')]({},_0x3e3c4c,_0x37921f[_0xfef0('0x42')]);var _0x5577f4={'where':_0x3e3c4c[_0xfef0('0x3d')]};return db['UserProfileResource']['count'](_0x5577f4)[_0xfef0('0x29')](function(_0x547a5d){_0x26cb9a['count']=_0x547a5d;if(_0x37921f[_0xfef0('0x35')][_0xfef0('0x43')]){_0x3e3c4c[_0xfef0('0x44')]=[{'all':!![]}];}return db[_0xfef0('0x30')][_0xfef0('0x45')](_0x3e3c4c);})[_0xfef0('0x29')](function(_0x4dd8f8){_0x26cb9a[_0xfef0('0x46')]=_0x4dd8f8;return _0x26cb9a;})[_0xfef0('0x29')](respondWithFilteredResult(_0x1ac4a3,_0x3e3c4c))['catch'](handleError(_0x1ac4a3,null));};exports['show']=function(_0x1d554e,_0x5dc824){var _0x1fc518={'raw':![],'where':{'id':_0x1d554e[_0xfef0('0x47')]['id']}},_0x22c940={};_0x22c940[_0xfef0('0x32')]=_[_0xfef0('0x48')](db[_0xfef0('0x30')][_0xfef0('0x49')]);_0x22c940[_0xfef0('0x35')]=_['keys'](_0x1d554e[_0xfef0('0x35')]);_0x22c940['filters']=_['intersection'](_0x22c940[_0xfef0('0x32')],_0x22c940[_0xfef0('0x35')]);_0x1fc518['attributes']=_[_0xfef0('0x34')](_0x22c940['model'],qs[_0xfef0('0x36')](_0x1d554e[_0xfef0('0x35')][_0xfef0('0x36')]));_0x1fc518[_0xfef0('0x37')]=_0x1fc518['attributes'][_0xfef0('0x38')]?_0x1fc518[_0xfef0('0x37')]:_0x22c940['model'];if(_0x1d554e['query'][_0xfef0('0x43')]){_0x1fc518['include']=[{'all':!![]}];}_0x1fc518=_[_0xfef0('0x41')]({},_0x1fc518,_0x1d554e[_0xfef0('0x42')]);return db[_0xfef0('0x30')][_0xfef0('0x4a')](_0x1fc518)[_0xfef0('0x29')](handleEntityNotFound(_0x5dc824,null))[_0xfef0('0x29')](respondWithResult(_0x5dc824,null))['catch'](handleError(_0x5dc824,null));};exports[_0xfef0('0x4b')]=function(_0x559a28,_0x5a417e){return db[_0xfef0('0x30')][_0xfef0('0x4b')](_0x559a28[_0xfef0('0x4c')],{})['then'](respondWithResult(_0x5a417e,0xc9))[_0xfef0('0x4d')](handleError(_0x5a417e,null));};exports['update']=function(_0x5dd26b,_0x51f207){if(_0x5dd26b[_0xfef0('0x4c')]['id']){delete _0x5dd26b[_0xfef0('0x4c')]['id'];}return db[_0xfef0('0x30')][_0xfef0('0x4a')]({'where':{'id':_0x5dd26b[_0xfef0('0x47')]['id']}})[_0xfef0('0x29')](handleEntityNotFound(_0x51f207,null))[_0xfef0('0x29')](saveUpdates(_0x5dd26b[_0xfef0('0x4c')],null))[_0xfef0('0x29')](respondWithResult(_0x51f207,null))['catch'](handleError(_0x51f207,null));};exports['destroy']=function(_0x2bebec,_0x18e5ba){return db[_0xfef0('0x30')][_0xfef0('0x4a')]({'where':{'id':_0x2bebec[_0xfef0('0x47')]['id']}})[_0xfef0('0x29')](handleEntityNotFound(_0x18e5ba,null))[_0xfef0('0x29')](removeEntity(_0x18e5ba,null))[_0xfef0('0x4d')](handleError(_0x18e5ba,null));};exports['describe']=function(_0x2466e7,_0x19e449){return db[_0xfef0('0x30')][_0xfef0('0x4e')]()[_0xfef0('0x29')](respondWithResult(_0x19e449,null))['catch'](handleError(_0x19e449,null));};
\ No newline at end of file
+var _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(_0x5e5d41,_0x208901){var _0xbb31ba=function(_0x699284){while(--_0x699284){_0x5e5d41['push'](_0x5e5d41['shift']());}};_0xbb31ba(++_0x208901);}(_0xafc4,0x69));var _0x4afc=function(_0x3bfd25,_0x1c6228){_0x3bfd25=_0x3bfd25-0x0;var _0x44f0db=_0xafc4[_0x3bfd25];return _0x44f0db;};'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 b6f6fa5..273a300 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc68c=['request-promise','path','../../config/environment','./userProfileResource.attributes','exports','define','UserProfileResource','user_profile_has_resources','compositeIndex','resourceId','sectionId','lodash','../../config/logger','api','moment','bluebird'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xc68c,0xdb));var _0xcc68=function(_0xd49350,_0x4d2c6b){_0xd49350=_0xd49350-0x0;var _0xc28712=_0xc68c[_0xd49350];return _0xc28712;};'use strict';var _=require(_0xcc68('0x0'));var util=require('util');var logger=require(_0xcc68('0x1'))(_0xcc68('0x2'));var moment=require(_0xcc68('0x3'));var BPromise=require(_0xcc68('0x4'));var rp=require(_0xcc68('0x5'));var fs=require('fs');var path=require(_0xcc68('0x6'));var rimraf=require('rimraf');var config=require(_0xcc68('0x7'));var attributes=require(_0xcc68('0x8'));module[_0xcc68('0x9')]=function(_0x285995,_0x595c83){return _0x285995[_0xcc68('0xa')](_0xcc68('0xb'),attributes,{'tableName':_0xcc68('0xc'),'paranoid':![],'indexes':[{'name':_0xcc68('0xd'),'fields':[_0xcc68('0xe'),_0xcc68('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe51a=['./userProfileResource.attributes','define','UserProfileResource','compositeIndex','resourceId','sectionId','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xe51a,0x1b9));var _0xae51=function(_0xab50d3,_0x3cc4c1){_0xab50d3=_0xab50d3-0x0;var _0x33dbbd=_0xe51a[_0xab50d3];return _0x33dbbd;};'use strict';var _=require(_0xae51('0x0'));var util=require(_0xae51('0x1'));var logger=require(_0xae51('0x2'))('api');var moment=require(_0xae51('0x3'));var BPromise=require(_0xae51('0x4'));var rp=require(_0xae51('0x5'));var fs=require('fs');var path=require(_0xae51('0x6'));var rimraf=require(_0xae51('0x7'));var config=require(_0xae51('0x8'));var attributes=require(_0xae51('0x9'));module['exports']=function(_0x48c2f2,_0x22d8f4){return _0x48c2f2[_0xae51('0xa')](_0xae51('0xb'),attributes,{'tableName':'user_profile_has_resources','paranoid':![],'indexes':[{'name':_0xae51('0xc'),'fields':[_0xae51('0xd'),_0xae51('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 2387abc..9f67e18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x202d=['error','code','message','catch','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x4caab0,_0x2a6b37){var _0x39df7d=function(_0x521e79){while(--_0x521e79){_0x4caab0['push'](_0x4caab0['shift']());}};_0x39df7d(++_0x2a6b37);}(_0x202d,0x16d));var _0xd202=function(_0x4a467d,_0x4712c2){_0x4a467d=_0x4a467d-0x0;var _0x1ef269=_0x202d[_0x4a467d];return _0x1ef269;};'use strict';var _=require('lodash');var util=require(_0xd202('0x0'));var moment=require('moment');var BPromise=require(_0xd202('0x1'));var rs=require(_0xd202('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd202('0x3'))['db'];var utils=require(_0xd202('0x4'));var logger=require(_0xd202('0x5'))(_0xd202('0x6'));var config=require('../../config/environment');var jayson=require(_0xd202('0x7'));var client=jayson[_0xd202('0x8')][_0xd202('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x15aa3f,_0x1d71c2,_0x22303a){return new BPromise(function(_0x29a5fe,_0x240083){return client['request'](_0x15aa3f,_0x22303a)['then'](function(_0x4745be){logger['info'](_0xd202('0xa'),_0x1d71c2,_0xd202('0xb'));logger[_0xd202('0xc')](_0xd202('0xd'),_0x1d71c2,_0xd202('0xb'),JSON[_0xd202('0xe')](_0x4745be));if(_0x4745be['error']){if(_0x4745be[_0xd202('0xf')][_0xd202('0x10')]===0x1f4){logger[_0xd202('0xf')](_0xd202('0xa'),_0x1d71c2,_0x4745be['error']['message']);return _0x240083(_0x4745be[_0xd202('0xf')][_0xd202('0x11')]);}logger[_0xd202('0xf')](_0xd202('0xa'),_0x1d71c2,_0x4745be['error'][_0xd202('0x11')]);return _0x29a5fe(_0x4745be[_0xd202('0xf')]['message']);}else{logger['info'](_0xd202('0xa'),_0x1d71c2,_0xd202('0xb'));_0x29a5fe(_0x4745be['result']['message']);}})[_0xd202('0x12')](function(_0x9086b2){logger[_0xd202('0xf')]('UserProfileResource,\x20%s,\x20%s',_0x1d71c2,_0x9086b2);_0x240083(_0x9086b2);});});}
\ No newline at end of file
+var _0x671f=['info','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify','error','code','message','UserProfileResource,\x20%s,\x20%s','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','http','request','then'];(function(_0x4ce924,_0x3d8483){var _0x4263a6=function(_0x4b8c67){while(--_0x4b8c67){_0x4ce924['push'](_0x4ce924['shift']());}};_0x4263a6(++_0x3d8483);}(_0x671f,0x164));var _0xf671=function(_0x1aa176,_0x29d165){_0x1aa176=_0x1aa176-0x0;var _0x13adda=_0x671f[_0x1aa176];return _0x13adda;};'use strict';var _=require(_0xf671('0x0'));var util=require(_0xf671('0x1'));var moment=require('moment');var BPromise=require(_0xf671('0x2'));var rs=require(_0xf671('0x3'));var fs=require('fs');var Redis=require(_0xf671('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xf671('0x5'));var logger=require('../../config/logger')(_0xf671('0x6'));var config=require(_0xf671('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xf671('0x8')][_0xf671('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x23fd32,_0x23d3b8,_0x3ecc3c){return new BPromise(function(_0xf7f443,_0x81fb79){return client[_0xf671('0xa')](_0x23fd32,_0x3ecc3c)[_0xf671('0xb')](function(_0x3fcd93){logger[_0xf671('0xc')]('UserProfileResource,\x20%s,\x20%s',_0x23d3b8,_0xf671('0xd'));logger[_0xf671('0xe')](_0xf671('0xf'),_0x23d3b8,_0xf671('0xd'),JSON[_0xf671('0x10')](_0x3fcd93));if(_0x3fcd93[_0xf671('0x11')]){if(_0x3fcd93[_0xf671('0x11')][_0xf671('0x12')]===0x1f4){logger[_0xf671('0x11')]('UserProfileResource,\x20%s,\x20%s',_0x23d3b8,_0x3fcd93[_0xf671('0x11')][_0xf671('0x13')]);return _0x81fb79(_0x3fcd93[_0xf671('0x11')][_0xf671('0x13')]);}logger[_0xf671('0x11')]('UserProfileResource,\x20%s,\x20%s',_0x23d3b8,_0x3fcd93[_0xf671('0x11')][_0xf671('0x13')]);return _0xf7f443(_0x3fcd93['error']['message']);}else{logger['info'](_0xf671('0x14'),_0x23d3b8,_0xf671('0xd'));_0xf7f443(_0x3fcd93[_0xf671('0x15')]['message']);}})[_0xf671('0x16')](function(_0x3ae7dd){logger[_0xf671('0x11')]('UserProfileResource,\x20%s,\x20%s',_0x23d3b8,_0x3ae7dd);_0x81fb79(_0x3ae7dd);});});}
\ No newline at end of file
index 063b9b9..947e62c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x178a=['./userProfileSection.controller','isAuthenticated','get','/describe','describe','/:id','show','post','create','delete','destroy','exports','util','path','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x3069e1,_0x47191f){var _0x74d188=function(_0x5e72a4){while(--_0x5e72a4){_0x3069e1['push'](_0x3069e1['shift']());}};_0x74d188(++_0x47191f);}(_0x178a,0xe4));var _0xa178=function(_0x177652,_0x2936fb){_0x177652=_0x177652-0x0;var _0x208ca9=_0x178a[_0x177652];return _0x208ca9;};'use strict';var multer=require('multer');var util=require(_0xa178('0x0'));var path=require(_0xa178('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa178('0x2')]();var fs_extra=require(_0xa178('0x3'));var auth=require(_0xa178('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xa178('0x5'));var controller=require(_0xa178('0x6'));router['get']('/',auth[_0xa178('0x7')](),controller['index']);router[_0xa178('0x8')](_0xa178('0x9'),auth['isAuthenticated'](),controller[_0xa178('0xa')]);router[_0xa178('0x8')](_0xa178('0xb'),auth[_0xa178('0x7')](),controller[_0xa178('0xc')]);router[_0xa178('0xd')]('/',auth['isAuthenticated'](),controller[_0xa178('0xe')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0xa178('0xf')](_0xa178('0xb'),auth['isAuthenticated'](),controller[_0xa178('0x10')]);module[_0xa178('0x11')]=router;
\ No newline at end of file
+var _0x5d1f=['../../config/environment','./userProfileSection.controller','isAuthenticated','get','describe','/:id','show','create','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x24061a,_0x1c9f4d){var _0x82054e=function(_0x2ec346){while(--_0x2ec346){_0x24061a['push'](_0x24061a['shift']());}};_0x82054e(++_0x1c9f4d);}(_0x5d1f,0x19b));var _0xf5d1=function(_0x2e91a2,_0x509636){_0x2e91a2=_0x2e91a2-0x0;var _0x251b61=_0x5d1f[_0x2e91a2];return _0x251b61;};'use strict';var multer=require(_0xf5d1('0x0'));var util=require(_0xf5d1('0x1'));var path=require(_0xf5d1('0x2'));var timeout=require(_0xf5d1('0x3'));var express=require(_0xf5d1('0x4'));var router=express[_0xf5d1('0x5')]();var fs_extra=require(_0xf5d1('0x6'));var auth=require(_0xf5d1('0x7'));var interaction=require(_0xf5d1('0x8'));var config=require(_0xf5d1('0x9'));var controller=require(_0xf5d1('0xa'));router['get']('/',auth[_0xf5d1('0xb')](),controller['index']);router[_0xf5d1('0xc')]('/describe',auth[_0xf5d1('0xb')](),controller[_0xf5d1('0xd')]);router[_0xf5d1('0xc')](_0xf5d1('0xe'),auth[_0xf5d1('0xb')](),controller[_0xf5d1('0xf')]);router['post']('/',auth[_0xf5d1('0xb')](),controller[_0xf5d1('0x10')]);router[_0xf5d1('0x11')](_0xf5d1('0xe'),auth[_0xf5d1('0xb')](),controller[_0xf5d1('0x12')]);router[_0xf5d1('0x13')](_0xf5d1('0xe'),auth[_0xf5d1('0xb')](),controller['destroy']);module[_0xf5d1('0x14')]=router;
\ No newline at end of file
index d6c8c83..666f228 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93e9=['crudPermissions','join','getDataValue','split','sequelize','exports','STRING','INTEGER','BOOLEAN','setDataValue'];(function(_0x102aca,_0x399fa0){var _0x5d5890=function(_0x571c83){while(--_0x571c83){_0x102aca['push'](_0x102aca['shift']());}};_0x5d5890(++_0x399fa0);}(_0x93e9,0xcc));var _0x993e=function(_0x25344e,_0x41b2f1){_0x25344e=_0x25344e-0x0;var _0x3bf737=_0x93e9[_0x25344e];return _0x3bf737;};'use strict';var Sequelize=require(_0x993e('0x0'));module[_0x993e('0x1')]={'name':{'type':Sequelize[_0x993e('0x2')],'allowNull':![]},'category':{'type':Sequelize[_0x993e('0x2')],'allowNull':![]},'sectionId':{'type':Sequelize[_0x993e('0x3')],'allowNull':![]},'enabled':{'type':Sequelize[_0x993e('0x4')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x993e('0x4')],'defaultValue':null},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x55f739){this[_0x993e('0x5')](_0x993e('0x6'),_0x55f739?_0x55f739[_0x993e('0x7')](''):[]);},'get':function(){return this[_0x993e('0x8')](_0x993e('0x6'))?this[_0x993e('0x8')](_0x993e('0x6'))[_0x993e('0x9')](''):[];}}};
\ No newline at end of file
+var _0x6cb4=['exports','STRING','INTEGER','BOOLEAN','crudPermissions','getDataValue','split','sequelize'];(function(_0x599ad6,_0x526b2b){var _0x3b1df4=function(_0x4deb14){while(--_0x4deb14){_0x599ad6['push'](_0x599ad6['shift']());}};_0x3b1df4(++_0x526b2b);}(_0x6cb4,0xff));var _0x46cb=function(_0x2526e0,_0x30e976){_0x2526e0=_0x2526e0-0x0;var _0x376304=_0x6cb4[_0x2526e0];return _0x376304;};'use strict';var Sequelize=require(_0x46cb('0x0'));module[_0x46cb('0x1')]={'name':{'type':Sequelize[_0x46cb('0x2')],'allowNull':![]},'category':{'type':Sequelize[_0x46cb('0x2')],'allowNull':![]},'sectionId':{'type':Sequelize[_0x46cb('0x3')],'allowNull':![]},'enabled':{'type':Sequelize[_0x46cb('0x4')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x46cb('0x4')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x46cb('0x2')],'set':function(_0x2efd19){this['setDataValue'](_0x46cb('0x5'),_0x2efd19?_0x2efd19['join'](''):[]);},'get':function(){return this[_0x46cb('0x6')]('crudPermissions')?this[_0x46cb('0x6')](_0x46cb('0x5'))[_0x46cb('0x7')](''):[];}}};
\ No newline at end of file
index b8f81a5..3eea5d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2493=['util','path','sox','to-csv','ejs','fs-extra','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','set','Content-Range','apply','error','stack','name','send','UserProfileSection','type','model','map','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','offset','order','sort','where','filter','merge','VIRTUAL','then','includeAll','findAll','show','params','rawAttributes','options','create','body','catch','update','find','destroy','describe','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x2493,0x88));var _0x3249=function(_0x1bb01c,_0x5497e4){_0x1bb01c=_0x1bb01c-0x0;var _0x2957db=_0x2493[_0x1bb01c];return _0x2957db;};'use strict';var emlformat=require(_0x3249('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x3249('0x1'));var rp=require(_0x3249('0x2'));var moment=require(_0x3249('0x3'));var BPromise=require(_0x3249('0x4'));var Mustache=require(_0x3249('0x5'));var util=require(_0x3249('0x6'));var path=require(_0x3249('0x7'));var sox=require(_0x3249('0x8'));var csv=require(_0x3249('0x9'));var ejs=require(_0x3249('0xa'));var fs=require('fs');var fs_extra=require(_0x3249('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x3249('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x3249('0xd'));var toCsv=require(_0x3249('0x9'));var querystring=require(_0x3249('0xe'));var Papa=require(_0x3249('0xf'));var Redis=require(_0x3249('0x10'));var authService=require(_0x3249('0x11'));var qs=require(_0x3249('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x3249('0x13'))(_0x3249('0x14'));var utils=require('../../config/utils');var config=require(_0x3249('0x15'));var licenseUtil=require(_0x3249('0x16'));var db=require(_0x3249('0x17'))['db'];function respondWithStatusCode(_0x36d237,_0x1f0610){_0x1f0610=_0x1f0610||0xcc;return function(_0x5bd359){if(_0x5bd359){return _0x36d237[_0x3249('0x18')](_0x1f0610);}return _0x36d237[_0x3249('0x19')](_0x1f0610)[_0x3249('0x1a')]();};}function respondWithResult(_0xf61dfe,_0x310ac8){_0x310ac8=_0x310ac8||0xc8;return function(_0x5b45de){if(_0x5b45de){return _0xf61dfe[_0x3249('0x19')](_0x310ac8)[_0x3249('0x1b')](_0x5b45de);}};}function respondWithFilteredResult(_0x3d37d7,_0x567f32){return function(_0x55f2ee){if(_0x55f2ee){var _0x246dd2=typeof _0x567f32['offset']===_0x3249('0x1c')&&typeof _0x567f32[_0x3249('0x1d')]===_0x3249('0x1c');var _0x25089e=_0x55f2ee['count'];var _0x570573=_0x246dd2?0x0:_0x567f32['offset'];var _0xb0f281=_0x246dd2?_0x55f2ee[_0x3249('0x1e')]:_0x567f32['offset']+_0x567f32[_0x3249('0x1d')];var _0x5a5c06;if(_0xb0f281>=_0x25089e){_0xb0f281=_0x25089e;_0x5a5c06=0xc8;}else{_0x5a5c06=0xce;}_0x3d37d7[_0x3249('0x19')](_0x5a5c06);return _0x3d37d7[_0x3249('0x1f')](_0x3249('0x20'),_0x570573+'-'+_0xb0f281+'/'+_0x25089e)[_0x3249('0x1b')](_0x55f2ee);}return null;};}function patchUpdates(_0x3371b4){return function(_0x38a8b8){try{jsonpatch[_0x3249('0x21')](_0x38a8b8,_0x3371b4,!![]);}catch(_0x43c021){return BPromise['reject'](_0x43c021);}return _0x38a8b8['save']();};}function saveUpdates(_0xcdd7e7,_0x202e01){return function(_0xe84e9f){if(_0xe84e9f){return _0xe84e9f['update'](_0xcdd7e7)['then'](function(_0xe227fb){return _0xe227fb;});}return null;};}function removeEntity(_0x58ae8c,_0x509034){return function(_0x212937){if(_0x212937){return _0x212937['destroy']()['then'](function(){_0x58ae8c[_0x3249('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3dc1e2,_0x1833a2){return function(_0x523a49){if(!_0x523a49){_0x3dc1e2[_0x3249('0x18')](0x194);}return _0x523a49;};}function handleError(_0x331e28,_0x12ec42){_0x12ec42=_0x12ec42||0x1f4;return function(_0xa94509){logger[_0x3249('0x22')](_0xa94509[_0x3249('0x23')]);if(_0xa94509['name']){delete _0xa94509[_0x3249('0x24')];}_0x331e28[_0x3249('0x19')](_0x12ec42)[_0x3249('0x25')](_0xa94509);};}exports['index']=function(_0x3d0d16,_0x2f1e14){var _0x4aea3b={},_0x3785ae={},_0x4c3346={'count':0x0,'rows':[]};var _0x2b06ca=_['map'](db[_0x3249('0x26')]['rawAttributes'],function(_0x2f13e8){return{'name':_0x2f13e8['fieldName'],'type':_0x2f13e8[_0x3249('0x27')]['key']};});_0x3785ae[_0x3249('0x28')]=_[_0x3249('0x29')](_0x2b06ca,'name');_0x3785ae['query']=_[_0x3249('0x2a')](_0x3d0d16[_0x3249('0x2b')]);_0x3785ae[_0x3249('0x2c')]=_[_0x3249('0x2d')](_0x3785ae[_0x3249('0x28')],_0x3785ae[_0x3249('0x2b')]);_0x4aea3b[_0x3249('0x2e')]=_[_0x3249('0x2d')](_0x3785ae[_0x3249('0x28')],qs[_0x3249('0x2f')](_0x3d0d16[_0x3249('0x2b')][_0x3249('0x2f')]));_0x4aea3b['attributes']=_0x4aea3b[_0x3249('0x2e')][_0x3249('0x30')]?_0x4aea3b['attributes']:_0x3785ae[_0x3249('0x28')];if(!_0x3d0d16['query'][_0x3249('0x31')]('nolimit')){_0x4aea3b['limit']=qs[_0x3249('0x1d')](_0x3d0d16[_0x3249('0x2b')][_0x3249('0x1d')]);_0x4aea3b[_0x3249('0x32')]=qs[_0x3249('0x32')](_0x3d0d16[_0x3249('0x2b')][_0x3249('0x32')]);}_0x4aea3b[_0x3249('0x33')]=qs[_0x3249('0x34')](_0x3d0d16[_0x3249('0x2b')][_0x3249('0x34')]);_0x4aea3b[_0x3249('0x35')]=qs[_0x3249('0x2c')](_['pick'](_0x3d0d16['query'],_0x3785ae['filters']),_0x2b06ca);if(_0x3d0d16[_0x3249('0x2b')][_0x3249('0x36')]){_0x4aea3b[_0x3249('0x35')]=_[_0x3249('0x37')](_0x4aea3b['where'],{'$or':_['map'](_0x2b06ca,function(_0x1ccfb9){if(_0x1ccfb9['type']!==_0x3249('0x38')){var _0x2f0aeb={};_0x2f0aeb[_0x1ccfb9[_0x3249('0x24')]]={'$like':'%'+_0x3d0d16[_0x3249('0x2b')][_0x3249('0x36')]+'%'};return _0x2f0aeb;}})});}_0x4aea3b=_[_0x3249('0x37')]({},_0x4aea3b,_0x3d0d16['options']);var _0x11102a={'where':_0x4aea3b['where']};return db[_0x3249('0x26')]['count'](_0x11102a)[_0x3249('0x39')](function(_0x919124){_0x4c3346[_0x3249('0x1e')]=_0x919124;if(_0x3d0d16[_0x3249('0x2b')][_0x3249('0x3a')]){_0x4aea3b['include']=[{'all':!![]}];}return db['UserProfileSection'][_0x3249('0x3b')](_0x4aea3b);})[_0x3249('0x39')](function(_0x3f6cee){_0x4c3346['rows']=_0x3f6cee;return _0x4c3346;})[_0x3249('0x39')](respondWithFilteredResult(_0x2f1e14,_0x4aea3b))['catch'](handleError(_0x2f1e14,null));};exports[_0x3249('0x3c')]=function(_0x1462af,_0x2e8d3f){var _0x3b50fb={'raw':![],'where':{'id':_0x1462af[_0x3249('0x3d')]['id']}},_0x3a48a0={};_0x3a48a0[_0x3249('0x28')]=_[_0x3249('0x2a')](db[_0x3249('0x26')][_0x3249('0x3e')]);_0x3a48a0['query']=_[_0x3249('0x2a')](_0x1462af[_0x3249('0x2b')]);_0x3a48a0[_0x3249('0x2c')]=_[_0x3249('0x2d')](_0x3a48a0[_0x3249('0x28')],_0x3a48a0[_0x3249('0x2b')]);_0x3b50fb[_0x3249('0x2e')]=_['intersection'](_0x3a48a0[_0x3249('0x28')],qs['fields'](_0x1462af[_0x3249('0x2b')][_0x3249('0x2f')]));_0x3b50fb[_0x3249('0x2e')]=_0x3b50fb['attributes'][_0x3249('0x30')]?_0x3b50fb[_0x3249('0x2e')]:_0x3a48a0[_0x3249('0x28')];if(_0x1462af[_0x3249('0x2b')][_0x3249('0x3a')]){_0x3b50fb['include']=[{'all':!![]}];}_0x3b50fb=_[_0x3249('0x37')]({},_0x3b50fb,_0x1462af[_0x3249('0x3f')]);return db[_0x3249('0x26')]['find'](_0x3b50fb)[_0x3249('0x39')](handleEntityNotFound(_0x2e8d3f,null))[_0x3249('0x39')](respondWithResult(_0x2e8d3f,null))['catch'](handleError(_0x2e8d3f,null));};exports[_0x3249('0x40')]=function(_0x3ac248,_0x2a544c){return db[_0x3249('0x26')][_0x3249('0x40')](_0x3ac248[_0x3249('0x41')],{})['then'](respondWithResult(_0x2a544c,0xc9))[_0x3249('0x42')](handleError(_0x2a544c,null));};exports[_0x3249('0x43')]=function(_0x511f98,_0x5c0b86){if(_0x511f98['body']['id']){delete _0x511f98[_0x3249('0x41')]['id'];}return db['UserProfileSection'][_0x3249('0x44')]({'where':{'id':_0x511f98['params']['id']}})[_0x3249('0x39')](handleEntityNotFound(_0x5c0b86,null))['then'](saveUpdates(_0x511f98[_0x3249('0x41')],null))[_0x3249('0x39')](respondWithResult(_0x5c0b86,null))[_0x3249('0x42')](handleError(_0x5c0b86,null));};exports[_0x3249('0x45')]=function(_0x22e6c3,_0x42a91c){return db[_0x3249('0x26')][_0x3249('0x44')]({'where':{'id':_0x22e6c3[_0x3249('0x3d')]['id']}})[_0x3249('0x39')](handleEntityNotFound(_0x42a91c,null))[_0x3249('0x39')](removeEntity(_0x42a91c,null))[_0x3249('0x42')](handleError(_0x42a91c,null));};exports[_0x3249('0x46')]=function(_0x56fada,_0x18a5fc){return db[_0x3249('0x26')][_0x3249('0x46')]()[_0x3249('0x39')](respondWithResult(_0x18a5fc,null))[_0x3249('0x42')](handleError(_0x18a5fc,null));};
\ No newline at end of file
+var _0xf5b7=['order','sort','where','pick','filter','merge','options','include','findAll','rows','catch','show','includeAll','find','create','body','params','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','ejs','fs-extra','lodash','squel','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','end','status','json','offset','limit','undefined','count','set','Content-Range','save','update','then','destroy','error','stack','name','send','index','map','UserProfileSection','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit'];(function(_0x27d8bc,_0x19e010){var _0x4b04cb=function(_0x524568){while(--_0x524568){_0x27d8bc['push'](_0x27d8bc['shift']());}};_0x4b04cb(++_0x19e010);}(_0xf5b7,0xa8));var _0x7f5b=function(_0x1ef264,_0x5205e2){_0x1ef264=_0x1ef264-0x0;var _0x38574a=_0xf5b7[_0x1ef264];return _0x38574a;};'use strict';var emlformat=require(_0x7f5b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7f5b('0x1'));var jsonpatch=require(_0x7f5b('0x2'));var rp=require(_0x7f5b('0x3'));var moment=require(_0x7f5b('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x7f5b('0x5'));var util=require(_0x7f5b('0x6'));var path=require('path');var sox=require(_0x7f5b('0x7'));var csv=require('to-csv');var ejs=require(_0x7f5b('0x8'));var fs=require('fs');var fs_extra=require(_0x7f5b('0x9'));var _=require(_0x7f5b('0xa'));var squel=require(_0x7f5b('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x7f5b('0xc'));var toCsv=require(_0x7f5b('0xd'));var querystring=require(_0x7f5b('0xe'));var Papa=require('papaparse');var Redis=require(_0x7f5b('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x7f5b('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7f5b('0x11'));var logger=require(_0x7f5b('0x12'))(_0x7f5b('0x13'));var utils=require(_0x7f5b('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x7f5b('0x15'));var db=require(_0x7f5b('0x16'))['db'];function respondWithStatusCode(_0x4a6e92,_0x1cd39b){_0x1cd39b=_0x1cd39b||0xcc;return function(_0x59b0ad){if(_0x59b0ad){return _0x4a6e92['sendStatus'](_0x1cd39b);}return _0x4a6e92['status'](_0x1cd39b)[_0x7f5b('0x17')]();};}function respondWithResult(_0x276659,_0x57cf3a){_0x57cf3a=_0x57cf3a||0xc8;return function(_0x12c31b){if(_0x12c31b){return _0x276659[_0x7f5b('0x18')](_0x57cf3a)[_0x7f5b('0x19')](_0x12c31b);}};}function respondWithFilteredResult(_0x3b1d4b,_0x1821e6){return function(_0x191a0c){if(_0x191a0c){var _0x40505f=typeof _0x1821e6[_0x7f5b('0x1a')]==='undefined'&&typeof _0x1821e6[_0x7f5b('0x1b')]===_0x7f5b('0x1c');var _0x5ed924=_0x191a0c[_0x7f5b('0x1d')];var _0x31dd96=_0x40505f?0x0:_0x1821e6[_0x7f5b('0x1a')];var _0x10436d=_0x40505f?_0x191a0c[_0x7f5b('0x1d')]:_0x1821e6[_0x7f5b('0x1a')]+_0x1821e6[_0x7f5b('0x1b')];var _0x226fb5;if(_0x10436d>=_0x5ed924){_0x10436d=_0x5ed924;_0x226fb5=0xc8;}else{_0x226fb5=0xce;}_0x3b1d4b[_0x7f5b('0x18')](_0x226fb5);return _0x3b1d4b[_0x7f5b('0x1e')](_0x7f5b('0x1f'),_0x31dd96+'-'+_0x10436d+'/'+_0x5ed924)[_0x7f5b('0x19')](_0x191a0c);}return null;};}function patchUpdates(_0x287a4f){return function(_0x3168e4){try{jsonpatch['apply'](_0x3168e4,_0x287a4f,!![]);}catch(_0x7997d6){return BPromise['reject'](_0x7997d6);}return _0x3168e4[_0x7f5b('0x20')]();};}function saveUpdates(_0x1f5089,_0x111870){return function(_0x506064){if(_0x506064){return _0x506064[_0x7f5b('0x21')](_0x1f5089)[_0x7f5b('0x22')](function(_0x355d43){return _0x355d43;});}return null;};}function removeEntity(_0x3444dd,_0x562da9){return function(_0x17071b){if(_0x17071b){return _0x17071b[_0x7f5b('0x23')]()['then'](function(){_0x3444dd[_0x7f5b('0x18')](0xcc)[_0x7f5b('0x17')]();});}};}function handleEntityNotFound(_0x4d87f6,_0x58d431){return function(_0x120146){if(!_0x120146){_0x4d87f6['sendStatus'](0x194);}return _0x120146;};}function handleError(_0x37b6b2,_0x3f7e9f){_0x3f7e9f=_0x3f7e9f||0x1f4;return function(_0x4d023a){logger[_0x7f5b('0x24')](_0x4d023a[_0x7f5b('0x25')]);if(_0x4d023a[_0x7f5b('0x26')]){delete _0x4d023a[_0x7f5b('0x26')];}_0x37b6b2[_0x7f5b('0x18')](_0x3f7e9f)[_0x7f5b('0x27')](_0x4d023a);};}exports[_0x7f5b('0x28')]=function(_0x1e1e1a,_0x30c38f){var _0xb68335={},_0xb4cec4={},_0x1b7e93={'count':0x0,'rows':[]};var _0x1d4fbf=_[_0x7f5b('0x29')](db[_0x7f5b('0x2a')][_0x7f5b('0x2b')],function(_0x1d9dbe){return{'name':_0x1d9dbe[_0x7f5b('0x2c')],'type':_0x1d9dbe[_0x7f5b('0x2d')][_0x7f5b('0x2e')]};});_0xb4cec4['model']=_[_0x7f5b('0x29')](_0x1d4fbf,_0x7f5b('0x26'));_0xb4cec4[_0x7f5b('0x2f')]=_[_0x7f5b('0x30')](_0x1e1e1a['query']);_0xb4cec4[_0x7f5b('0x31')]=_[_0x7f5b('0x32')](_0xb4cec4[_0x7f5b('0x33')],_0xb4cec4[_0x7f5b('0x2f')]);_0xb68335['attributes']=_['intersection'](_0xb4cec4[_0x7f5b('0x33')],qs[_0x7f5b('0x34')](_0x1e1e1a[_0x7f5b('0x2f')][_0x7f5b('0x34')]));_0xb68335[_0x7f5b('0x35')]=_0xb68335[_0x7f5b('0x35')][_0x7f5b('0x36')]?_0xb68335[_0x7f5b('0x35')]:_0xb4cec4[_0x7f5b('0x33')];if(!_0x1e1e1a[_0x7f5b('0x2f')][_0x7f5b('0x37')](_0x7f5b('0x38'))){_0xb68335['limit']=qs[_0x7f5b('0x1b')](_0x1e1e1a[_0x7f5b('0x2f')][_0x7f5b('0x1b')]);_0xb68335[_0x7f5b('0x1a')]=qs[_0x7f5b('0x1a')](_0x1e1e1a[_0x7f5b('0x2f')]['offset']);}_0xb68335[_0x7f5b('0x39')]=qs[_0x7f5b('0x3a')](_0x1e1e1a[_0x7f5b('0x2f')][_0x7f5b('0x3a')]);_0xb68335[_0x7f5b('0x3b')]=qs['filters'](_[_0x7f5b('0x3c')](_0x1e1e1a[_0x7f5b('0x2f')],_0xb4cec4[_0x7f5b('0x31')]),_0x1d4fbf);if(_0x1e1e1a[_0x7f5b('0x2f')][_0x7f5b('0x3d')]){_0xb68335[_0x7f5b('0x3b')]=_['merge'](_0xb68335[_0x7f5b('0x3b')],{'$or':_['map'](_0x1d4fbf,function(_0x3b6253){if(_0x3b6253[_0x7f5b('0x2d')]!=='VIRTUAL'){var _0x73c5ac={};_0x73c5ac[_0x3b6253[_0x7f5b('0x26')]]={'$like':'%'+_0x1e1e1a['query'][_0x7f5b('0x3d')]+'%'};return _0x73c5ac;}})});}_0xb68335=_[_0x7f5b('0x3e')]({},_0xb68335,_0x1e1e1a[_0x7f5b('0x3f')]);var _0x5263e1={'where':_0xb68335[_0x7f5b('0x3b')]};return db[_0x7f5b('0x2a')][_0x7f5b('0x1d')](_0x5263e1)[_0x7f5b('0x22')](function(_0x5574bd){_0x1b7e93['count']=_0x5574bd;if(_0x1e1e1a[_0x7f5b('0x2f')]['includeAll']){_0xb68335[_0x7f5b('0x40')]=[{'all':!![]}];}return db[_0x7f5b('0x2a')][_0x7f5b('0x41')](_0xb68335);})[_0x7f5b('0x22')](function(_0x37c9c){_0x1b7e93[_0x7f5b('0x42')]=_0x37c9c;return _0x1b7e93;})[_0x7f5b('0x22')](respondWithFilteredResult(_0x30c38f,_0xb68335))[_0x7f5b('0x43')](handleError(_0x30c38f,null));};exports[_0x7f5b('0x44')]=function(_0x3eb7fd,_0x379ff5){var _0x44c321={'raw':![],'where':{'id':_0x3eb7fd['params']['id']}},_0x22046c={};_0x22046c[_0x7f5b('0x33')]=_[_0x7f5b('0x30')](db[_0x7f5b('0x2a')]['rawAttributes']);_0x22046c['query']=_[_0x7f5b('0x30')](_0x3eb7fd['query']);_0x22046c['filters']=_['intersection'](_0x22046c['model'],_0x22046c[_0x7f5b('0x2f')]);_0x44c321[_0x7f5b('0x35')]=_[_0x7f5b('0x32')](_0x22046c[_0x7f5b('0x33')],qs[_0x7f5b('0x34')](_0x3eb7fd[_0x7f5b('0x2f')][_0x7f5b('0x34')]));_0x44c321['attributes']=_0x44c321[_0x7f5b('0x35')]['length']?_0x44c321[_0x7f5b('0x35')]:_0x22046c[_0x7f5b('0x33')];if(_0x3eb7fd[_0x7f5b('0x2f')][_0x7f5b('0x45')]){_0x44c321[_0x7f5b('0x40')]=[{'all':!![]}];}_0x44c321=_['merge']({},_0x44c321,_0x3eb7fd['options']);return db[_0x7f5b('0x2a')][_0x7f5b('0x46')](_0x44c321)[_0x7f5b('0x22')](handleEntityNotFound(_0x379ff5,null))[_0x7f5b('0x22')](respondWithResult(_0x379ff5,null))[_0x7f5b('0x43')](handleError(_0x379ff5,null));};exports[_0x7f5b('0x47')]=function(_0x2f9eeb,_0x21a857){return db[_0x7f5b('0x2a')]['create'](_0x2f9eeb[_0x7f5b('0x48')],{})[_0x7f5b('0x22')](respondWithResult(_0x21a857,0xc9))[_0x7f5b('0x43')](handleError(_0x21a857,null));};exports['update']=function(_0x1d55a9,_0x49c688){if(_0x1d55a9['body']['id']){delete _0x1d55a9[_0x7f5b('0x48')]['id'];}return db[_0x7f5b('0x2a')][_0x7f5b('0x46')]({'where':{'id':_0x1d55a9[_0x7f5b('0x49')]['id']}})['then'](handleEntityNotFound(_0x49c688,null))['then'](saveUpdates(_0x1d55a9['body'],null))[_0x7f5b('0x22')](respondWithResult(_0x49c688,null))[_0x7f5b('0x43')](handleError(_0x49c688,null));};exports['destroy']=function(_0x2c0cd4,_0x36a216){return db[_0x7f5b('0x2a')]['find']({'where':{'id':_0x2c0cd4[_0x7f5b('0x49')]['id']}})[_0x7f5b('0x22')](handleEntityNotFound(_0x36a216,null))[_0x7f5b('0x22')](removeEntity(_0x36a216,null))[_0x7f5b('0x43')](handleError(_0x36a216,null));};exports['describe']=function(_0x1c72a3,_0x26b02a){return db[_0x7f5b('0x2a')][_0x7f5b('0x4a')]()[_0x7f5b('0x22')](respondWithResult(_0x26b02a,null))[_0x7f5b('0x43')](handleError(_0x26b02a,null));};
\ No newline at end of file
index 08e291f..7b3a595 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7795=['../../config/logger','api','moment','bluebird','path','../../config/environment','./userProfileSection.attributes','exports','define','UserProfileSection','user_profile_has_sections','compositeIndex','sectionId','userProfileId','lodash'];(function(_0x2947c1,_0x1fd617){var _0x2e8fc9=function(_0x24a228){while(--_0x24a228){_0x2947c1['push'](_0x2947c1['shift']());}};_0x2e8fc9(++_0x1fd617);}(_0x7795,0x149));var _0x5779=function(_0x595b9d,_0x14f96f){_0x595b9d=_0x595b9d-0x0;var _0xaa046d=_0x7795[_0x595b9d];return _0xaa046d;};'use strict';var _=require(_0x5779('0x0'));var util=require('util');var logger=require(_0x5779('0x1'))(_0x5779('0x2'));var moment=require(_0x5779('0x3'));var BPromise=require(_0x5779('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5779('0x5'));var rimraf=require('rimraf');var config=require(_0x5779('0x6'));var attributes=require(_0x5779('0x7'));module[_0x5779('0x8')]=function(_0x8066bd,_0x189283){return _0x8066bd[_0x5779('0x9')](_0x5779('0xa'),attributes,{'tableName':_0x5779('0xb'),'paranoid':![],'indexes':[{'name':_0x5779('0xc'),'fields':[_0x5779('0xd'),_0x5779('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe30f=['./userProfileSection.attributes','define','UserProfileSection','sectionId','userProfileId','lodash','util','../../config/logger','api','moment','request-promise','path','../../config/environment'];(function(_0x13e741,_0x5d3c24){var _0x3f8bb3=function(_0x4440a0){while(--_0x4440a0){_0x13e741['push'](_0x13e741['shift']());}};_0x3f8bb3(++_0x5d3c24);}(_0xe30f,0xe2));var _0xfe30=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xe30f[_0x4cf98e];return _0x1623ac;};'use strict';var _=require(_0xfe30('0x0'));var util=require(_0xfe30('0x1'));var logger=require(_0xfe30('0x2'))(_0xfe30('0x3'));var moment=require(_0xfe30('0x4'));var BPromise=require('bluebird');var rp=require(_0xfe30('0x5'));var fs=require('fs');var path=require(_0xfe30('0x6'));var rimraf=require('rimraf');var config=require(_0xfe30('0x7'));var attributes=require(_0xfe30('0x8'));module['exports']=function(_0x586de1,_0x2fafbf){return _0x586de1[_0xfe30('0x9')](_0xfe30('0xa'),attributes,{'tableName':'user_profile_has_sections','paranoid':![],'indexes':[{'name':'compositeIndex','fields':[_0xfe30('0xb'),_0xfe30('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index dee8ade..73cbf05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf831=['util','moment','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','UserProfileSection,\x20%s,\x20%s','request\x20sent','debug','UserProfileSection,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch'];(function(_0x40afa6,_0x122003){var _0x329ad4=function(_0x2e0aa4){while(--_0x2e0aa4){_0x40afa6['push'](_0x40afa6['shift']());}};_0x329ad4(++_0x122003);}(_0xf831,0x72));var _0x1f83=function(_0x4d0b1b,_0xfd4766){_0x4d0b1b=_0x4d0b1b-0x0;var _0x448b60=_0xf831[_0x4d0b1b];return _0x448b60;};'use strict';var _=require('lodash');var util=require(_0x1f83('0x0'));var moment=require(_0x1f83('0x1'));var BPromise=require('bluebird');var rs=require(_0x1f83('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x1f83('0x3'));var logger=require(_0x1f83('0x4'))(_0x1f83('0x5'));var config=require(_0x1f83('0x6'));var jayson=require(_0x1f83('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x4d8d48,_0x3af70f,_0x42a04d){return new BPromise(function(_0x43dc5a,_0x1dc8ea){return client[_0x1f83('0x8')](_0x4d8d48,_0x42a04d)['then'](function(_0x53d164){logger['info'](_0x1f83('0x9'),_0x3af70f,_0x1f83('0xa'));logger[_0x1f83('0xb')](_0x1f83('0xc'),_0x3af70f,'request\x20sent',JSON['stringify'](_0x53d164));if(_0x53d164[_0x1f83('0xd')]){if(_0x53d164['error'][_0x1f83('0xe')]===0x1f4){logger[_0x1f83('0xd')](_0x1f83('0x9'),_0x3af70f,_0x53d164[_0x1f83('0xd')][_0x1f83('0xf')]);return _0x1dc8ea(_0x53d164['error'][_0x1f83('0xf')]);}logger[_0x1f83('0xd')](_0x1f83('0x9'),_0x3af70f,_0x53d164[_0x1f83('0xd')][_0x1f83('0xf')]);return _0x43dc5a(_0x53d164['error'][_0x1f83('0xf')]);}else{logger[_0x1f83('0x10')](_0x1f83('0x9'),_0x3af70f,_0x1f83('0xa'));_0x43dc5a(_0x53d164[_0x1f83('0x11')][_0x1f83('0xf')]);}})[_0x1f83('0x12')](function(_0x1d2866){logger[_0x1f83('0xd')](_0x1f83('0x9'),_0x3af70f,_0x1d2866);_0x1dc8ea(_0x1d2866);});});}
\ No newline at end of file
+var _0x0c52=['UserProfileSection,\x20%s,\x20%s,\x20%s','stringify','code','error','UserProfileSection,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','info','request\x20sent','debug'];(function(_0x126f9b,_0x499df7){var _0x5983b7=function(_0x394e5a){while(--_0x394e5a){_0x126f9b['push'](_0x126f9b['shift']());}};_0x5983b7(++_0x499df7);}(_0x0c52,0x170));var _0x20c5=function(_0x168887,_0xcbcdf4){_0x168887=_0x168887-0x0;var _0x14cdce=_0x0c52[_0x168887];return _0x14cdce;};'use strict';var _=require(_0x20c5('0x0'));var util=require(_0x20c5('0x1'));var moment=require(_0x20c5('0x2'));var BPromise=require(_0x20c5('0x3'));var rs=require(_0x20c5('0x4'));var fs=require('fs');var Redis=require(_0x20c5('0x5'));var db=require(_0x20c5('0x6'))['db'];var utils=require(_0x20c5('0x7'));var logger=require(_0x20c5('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0x20c5('0x9'));var client=jayson[_0x20c5('0xa')][_0x20c5('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5c0c16,_0x1f79f1,_0x3236da){return new BPromise(function(_0xe7b226,_0x44f280){return client[_0x20c5('0xc')](_0x5c0c16,_0x3236da)['then'](function(_0x595d2e){logger[_0x20c5('0xd')]('UserProfileSection,\x20%s,\x20%s',_0x1f79f1,_0x20c5('0xe'));logger[_0x20c5('0xf')](_0x20c5('0x10'),_0x1f79f1,_0x20c5('0xe'),JSON[_0x20c5('0x11')](_0x595d2e));if(_0x595d2e['error']){if(_0x595d2e['error'][_0x20c5('0x12')]===0x1f4){logger[_0x20c5('0x13')](_0x20c5('0x14'),_0x1f79f1,_0x595d2e['error'][_0x20c5('0x15')]);return _0x44f280(_0x595d2e[_0x20c5('0x13')][_0x20c5('0x15')]);}logger[_0x20c5('0x13')](_0x20c5('0x14'),_0x1f79f1,_0x595d2e[_0x20c5('0x13')][_0x20c5('0x15')]);return _0xe7b226(_0x595d2e[_0x20c5('0x13')][_0x20c5('0x15')]);}else{logger[_0x20c5('0xd')]('UserProfileSection,\x20%s,\x20%s',_0x1f79f1,_0x20c5('0xe'));_0xe7b226(_0x595d2e[_0x20c5('0x16')][_0x20c5('0x15')]);}})[_0x20c5('0x17')](function(_0x41ad22){logger[_0x20c5('0x13')](_0x20c5('0x14'),_0x1f79f1,_0x41ad22);_0x44f280(_0x41ad22);});});}
\ No newline at end of file
index 0c99460..5454c88 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(_0x36d221,_0x268765){var _0x15cb44=function(_0x317c54){while(--_0x317c54){_0x36d221['push'](_0x36d221['shift']());}};_0x15cb44(++_0x268765);}(_0x9c44,0x178));var _0x49c4=function(_0x16b9ed,_0x56517a){_0x16b9ed=_0x16b9ed-0x0;var _0x66b1f8=_0x9c44[_0x16b9ed];return _0x66b1f8;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x4bc50e,_0x337339){var _0x5a8722=function(_0x52351d){while(--_0x52351d){_0x4bc50e['push'](_0x4bc50e['shift']());}};_0x5a8722(++_0x337339);}(_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 4f90e66..ce8bd88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ffd=['exports','INTEGER','sequelize'];(function(_0x485a04,_0x2849a4){var _0x2ace20=function(_0x1be575){while(--_0x1be575){_0x485a04['push'](_0x485a04['shift']());}};_0x2ace20(++_0x2849a4);}(_0x0ffd,0xa4));var _0xd0ff=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0x0ffd[_0x3054be];return _0x3df150;};'use strict';var Sequelize=require(_0xd0ff('0x0'));module[_0xd0ff('0x1')]={'penalty':{'type':Sequelize[_0xd0ff('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xe187=['INTEGER','sequelize','exports'];(function(_0x1d8c9b,_0x3ff0e4){var _0x275871=function(_0x28f890){while(--_0x28f890){_0x1d8c9b['push'](_0x1d8c9b['shift']());}};_0x275871(++_0x3ff0e4);}(_0xe187,0x19c));var _0x7e18=function(_0x216dbf,_0x1e7940){_0x216dbf=_0x216dbf-0x0;var _0x33552e=_0xe187[_0x216dbf];return _0x33552e;};'use strict';var Sequelize=require(_0x7e18('0x0'));module[_0x7e18('0x1')]={'penalty':{'type':Sequelize[_0x7e18('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 98dabe3..b109c3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9582=['bluebird','path','rimraf','../../config/environment','./userSmsQueue.attributes','exports','define','UserSmsQueue','user_has_sms_queues','lodash','util','../../config/logger','api','moment'];(function(_0x430a40,_0x133017){var _0x2fcbdd=function(_0x1c7a25){while(--_0x1c7a25){_0x430a40['push'](_0x430a40['shift']());}};_0x2fcbdd(++_0x133017);}(_0x9582,0x95));var _0x2958=function(_0x4f5243,_0x192883){_0x4f5243=_0x4f5243-0x0;var _0x266cc0=_0x9582[_0x4f5243];return _0x266cc0;};'use strict';var _=require(_0x2958('0x0'));var util=require(_0x2958('0x1'));var logger=require(_0x2958('0x2'))(_0x2958('0x3'));var moment=require(_0x2958('0x4'));var BPromise=require(_0x2958('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2958('0x6'));var rimraf=require(_0x2958('0x7'));var config=require(_0x2958('0x8'));var attributes=require(_0x2958('0x9'));module[_0x2958('0xa')]=function(_0xbde128,_0x88ffaa){return _0xbde128[_0x2958('0xb')](_0x2958('0xc'),attributes,{'tableName':_0x2958('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2581=['request-promise','path','rimraf','../../config/environment','./userSmsQueue.attributes','exports','UserSmsQueue','user_has_sms_queues','lodash','util','../../config/logger','api','moment'];(function(_0x5b557f,_0x1d5080){var _0x1ae321=function(_0x3bf249){while(--_0x3bf249){_0x5b557f['push'](_0x5b557f['shift']());}};_0x1ae321(++_0x1d5080);}(_0x2581,0xcb));var _0x1258=function(_0x2e2180,_0x18ddd6){_0x2e2180=_0x2e2180-0x0;var _0x34c484=_0x2581[_0x2e2180];return _0x34c484;};'use strict';var _=require(_0x1258('0x0'));var util=require(_0x1258('0x1'));var logger=require(_0x1258('0x2'))(_0x1258('0x3'));var moment=require(_0x1258('0x4'));var BPromise=require('bluebird');var rp=require(_0x1258('0x5'));var fs=require('fs');var path=require(_0x1258('0x6'));var rimraf=require(_0x1258('0x7'));var config=require(_0x1258('0x8'));var attributes=require(_0x1258('0x9'));module[_0x1258('0xa')]=function(_0x16c926,_0x2aeafc){return _0x16c926['define'](_0x1258('0xb'),attributes,{'tableName':_0x1258('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2e5ead1..4322dc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0218=['lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','debug','stringify','error','code','message','UserSmsQueue,\x20%s,\x20%s','request\x20sent','catch'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0x0218,0xc6));var _0x8021=function(_0xe16645,_0x91e47c){_0xe16645=_0xe16645-0x0;var _0x27f758=_0x0218[_0xe16645];return _0x27f758;};'use strict';var _=require(_0x8021('0x0'));var util=require(_0x8021('0x1'));var moment=require('moment');var BPromise=require(_0x8021('0x2'));var rs=require(_0x8021('0x3'));var fs=require('fs');var Redis=require(_0x8021('0x4'));var db=require(_0x8021('0x5'))['db'];var utils=require(_0x8021('0x6'));var logger=require('../../config/logger')(_0x8021('0x7'));var config=require(_0x8021('0x8'));var jayson=require(_0x8021('0x9'));var client=jayson[_0x8021('0xa')][_0x8021('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x56b7e4,_0x4596e3,_0x147e78){return new BPromise(function(_0x3add3e,_0x19f2df){return client[_0x8021('0xc')](_0x56b7e4,_0x147e78)['then'](function(_0x141220){logger[_0x8021('0xd')]('UserSmsQueue,\x20%s,\x20%s',_0x4596e3,'request\x20sent');logger[_0x8021('0xe')]('UserSmsQueue,\x20%s,\x20%s,\x20%s',_0x4596e3,'request\x20sent',JSON[_0x8021('0xf')](_0x141220));if(_0x141220[_0x8021('0x10')]){if(_0x141220[_0x8021('0x10')][_0x8021('0x11')]===0x1f4){logger[_0x8021('0x10')]('UserSmsQueue,\x20%s,\x20%s',_0x4596e3,_0x141220[_0x8021('0x10')][_0x8021('0x12')]);return _0x19f2df(_0x141220[_0x8021('0x10')][_0x8021('0x12')]);}logger['error']('UserSmsQueue,\x20%s,\x20%s',_0x4596e3,_0x141220[_0x8021('0x10')]['message']);return _0x3add3e(_0x141220[_0x8021('0x10')][_0x8021('0x12')]);}else{logger['info'](_0x8021('0x13'),_0x4596e3,_0x8021('0x14'));_0x3add3e(_0x141220['result'][_0x8021('0x12')]);}})[_0x8021('0x15')](function(_0xd4f32a){logger['error']('UserSmsQueue,\x20%s,\x20%s',_0x4596e3,_0xd4f32a);_0x19f2df(_0xd4f32a);});});}
\ No newline at end of file
+var _0xb749=['client','request','info','UserSmsQueue,\x20%s,\x20%s','request\x20sent','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x1a417e,_0x298a2a){var _0x2d8919=function(_0x4e6808){while(--_0x4e6808){_0x1a417e['push'](_0x1a417e['shift']());}};_0x2d8919(++_0x298a2a);}(_0xb749,0x124));var _0x9b74=function(_0x2bedee,_0x159687){_0x2bedee=_0x2bedee-0x0;var _0x3dff30=_0xb749[_0x2bedee];return _0x3dff30;};'use strict';var _=require(_0x9b74('0x0'));var util=require('util');var moment=require(_0x9b74('0x1'));var BPromise=require('bluebird');var rs=require(_0x9b74('0x2'));var fs=require('fs');var Redis=require(_0x9b74('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x9b74('0x4'));var logger=require(_0x9b74('0x5'))(_0x9b74('0x6'));var config=require(_0x9b74('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x9b74('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x42cbb0,_0x2392fc,_0x428478){return new BPromise(function(_0x17af9b,_0x11d6a4){return client[_0x9b74('0x9')](_0x42cbb0,_0x428478)['then'](function(_0x4f83cc){logger[_0x9b74('0xa')](_0x9b74('0xb'),_0x2392fc,_0x9b74('0xc'));logger[_0x9b74('0xd')](_0x9b74('0xe'),_0x2392fc,_0x9b74('0xc'),JSON[_0x9b74('0xf')](_0x4f83cc));if(_0x4f83cc['error']){if(_0x4f83cc[_0x9b74('0x10')]['code']===0x1f4){logger[_0x9b74('0x10')]('UserSmsQueue,\x20%s,\x20%s',_0x2392fc,_0x4f83cc[_0x9b74('0x10')][_0x9b74('0x11')]);return _0x11d6a4(_0x4f83cc[_0x9b74('0x10')][_0x9b74('0x11')]);}logger[_0x9b74('0x10')](_0x9b74('0xb'),_0x2392fc,_0x4f83cc[_0x9b74('0x10')][_0x9b74('0x11')]);return _0x17af9b(_0x4f83cc[_0x9b74('0x10')]['message']);}else{logger[_0x9b74('0xa')](_0x9b74('0xb'),_0x2392fc,_0x9b74('0xc'));_0x17af9b(_0x4f83cc[_0x9b74('0x12')]['message']);}})[_0x9b74('0x13')](function(_0x430b92){logger['error'](_0x9b74('0xb'),_0x2392fc,_0x430b92);_0x11d6a4(_0x430b92);});});}
\ No newline at end of file
diff --git a/server/api/userVoicePrefix/index.js b/server/api/userVoicePrefix/index.js
deleted file mode 100644 (file)
index d121c30..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// *************************************************************************
-// *                                                                       *
-// * xCALLY Motion -  The Omnichannel Contact Center                       *
-// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * Email: info@xcally.com                                                *
-// * Website: https://www.xcally.com                                       *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * The SOFTWARE PRODUCT is protected by copyright laws and international *
-// * copyright treaties, as well as other intellectual property laws and   *
-// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
-// *                                                                       *
-// *************************************************************************
-var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x231522,_0x2ec5df){var _0x349f51=function(_0x234c9f){while(--_0x234c9f){_0x231522['push'](_0x231522['shift']());}};_0x349f51(++_0x2ec5df);}(_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
diff --git a/server/api/userVoicePrefix/userVoicePrefix.attributes.js b/server/api/userVoicePrefix/userVoicePrefix.attributes.js
deleted file mode 100644 (file)
index c2407a6..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// *************************************************************************
-// *                                                                       *
-// * xCALLY Motion -  The Omnichannel Contact Center                       *
-// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * Email: info@xcally.com                                                *
-// * Website: https://www.xcally.com                                       *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * The SOFTWARE PRODUCT is protected by copyright laws and international *
-// * copyright treaties, as well as other intellectual property laws and   *
-// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
-// *                                                                       *
-// *************************************************************************
-var _0x91cf=['exports'];(function(_0x2a2032,_0x4838cd){var _0x1b9a39=function(_0xfb6911){while(--_0xfb6911){_0x2a2032['push'](_0x2a2032['shift']());}};_0x1b9a39(++_0x4838cd);}(_0x91cf,0x7c));var _0xf91c=function(_0x466aeb,_0x3a35bf){_0x466aeb=_0x466aeb-0x0;var _0x57818e=_0x91cf[_0x466aeb];return _0x57818e;};'use strict';var Sequelize=require('sequelize');module[_0xf91c('0x0')]={'UserId':{'type':Sequelize['INTEGER']},'VoicePrefixId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
diff --git a/server/api/userVoicePrefix/userVoicePrefix.model.js b/server/api/userVoicePrefix/userVoicePrefix.model.js
deleted file mode 100644 (file)
index eddfbca..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// *************************************************************************
-// *                                                                       *
-// * xCALLY Motion -  The Omnichannel Contact Center                       *
-// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * Email: info@xcally.com                                                *
-// * Website: https://www.xcally.com                                       *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * The SOFTWARE PRODUCT is protected by copyright laws and international *
-// * copyright treaties, as well as other intellectual property laws and   *
-// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
-// *                                                                       *
-// *************************************************************************
-var _0xa9e0=['../../config/environment','./userVoicePrefix.attributes','exports','define','UserVoicePrefix','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x435471,_0x275205){var _0x39a70d=function(_0x2c225b){while(--_0x2c225b){_0x435471['push'](_0x435471['shift']());}};_0x39a70d(++_0x275205);}(_0xa9e0,0x123));var _0x0a9e=function(_0x21aec3,_0x5c97e9){_0x21aec3=_0x21aec3-0x0;var _0x288bbc=_0xa9e0[_0x21aec3];return _0x288bbc;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'user_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
diff --git a/server/api/userVoicePrefix/userVoicePrefix.rpc.js b/server/api/userVoicePrefix/userVoicePrefix.rpc.js
deleted file mode 100644 (file)
index ac53ece..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// *************************************************************************
-// *                                                                       *
-// * xCALLY Motion -  The Omnichannel Contact Center                       *
-// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * Email: info@xcally.com                                                *
-// * Website: https://www.xcally.com                                       *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * The SOFTWARE PRODUCT is protected by copyright laws and international *
-// * copyright treaties, as well as other intellectual property laws and   *
-// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
-// *                                                                       *
-// *************************************************************************
-var _0x62f5=['request\x20sent','debug','UserVoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','UserVoicePrefix,\x20%s,\x20%s'];(function(_0x1f6187,_0x4ec52c){var _0x386fae=function(_0x35b746){while(--_0x35b746){_0x1f6187['push'](_0x1f6187['shift']());}};_0x386fae(++_0x4ec52c);}(_0x62f5,0x7b));var _0x562f=function(_0x5ad6d0,_0x2c3efd){_0x5ad6d0=_0x5ad6d0-0x0;var _0x361670=_0x62f5[_0x5ad6d0];return _0x361670;};'use strict';var _=require(_0x562f('0x0'));var util=require(_0x562f('0x1'));var moment=require('moment');var BPromise=require(_0x562f('0x2'));var rs=require(_0x562f('0x3'));var fs=require('fs');var Redis=require(_0x562f('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x562f('0x5'));var logger=require(_0x562f('0x6'))(_0x562f('0x7'));var config=require(_0x562f('0x8'));var jayson=require(_0x562f('0x9'));var client=jayson['client'][_0x562f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x24dbda,_0x5ede60,_0x91c573){return new BPromise(function(_0x3635aa,_0x4fcd9b){return client[_0x562f('0xb')](_0x24dbda,_0x91c573)[_0x562f('0xc')](function(_0x2f5d51){logger[_0x562f('0xd')](_0x562f('0xe'),_0x5ede60,_0x562f('0xf'));logger[_0x562f('0x10')](_0x562f('0x11'),_0x5ede60,_0x562f('0xf'),JSON[_0x562f('0x12')](_0x2f5d51));if(_0x2f5d51[_0x562f('0x13')]){if(_0x2f5d51[_0x562f('0x13')]['code']===0x1f4){logger['error']('UserVoicePrefix,\x20%s,\x20%s',_0x5ede60,_0x2f5d51[_0x562f('0x13')][_0x562f('0x14')]);return _0x4fcd9b(_0x2f5d51[_0x562f('0x13')]['message']);}logger['error'](_0x562f('0xe'),_0x5ede60,_0x2f5d51[_0x562f('0x13')]['message']);return _0x3635aa(_0x2f5d51[_0x562f('0x13')]['message']);}else{logger[_0x562f('0xd')](_0x562f('0xe'),_0x5ede60,_0x562f('0xf'));_0x3635aa(_0x2f5d51[_0x562f('0x15')][_0x562f('0x14')]);}})[_0x562f('0x16')](function(_0x366aeb){logger['error']('UserVoicePrefix,\x20%s,\x20%s',_0x5ede60,_0x366aeb);_0x4fcd9b(_0x366aeb);});});}
\ No newline at end of file
index bb6294a..a8aea6e 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(_0x80582e,_0x37130a){var _0x262b9a=function(_0x263111){while(--_0x263111){_0x80582e['push'](_0x80582e['shift']());}};_0x262b9a(++_0x37130a);}(_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(_0x4346ba,_0x1d5a07){var _0x55742b=function(_0x5bb78a){while(--_0x5bb78a){_0x4346ba['push'](_0x4346ba['shift']());}};_0x55742b(++_0x1d5a07);}(_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 4941274..a4ce067 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0caf=['sequelize','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0caf,0x8a));var _0xf0ca=function(_0x5723f4,_0xef5de4){_0x5723f4=_0x5723f4-0x0;var _0x4909ad=_0x0caf[_0x5723f4];return _0x4909ad;};'use strict';var Sequelize=require(_0xf0ca('0x0'));module[_0xf0ca('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xcc7a=['sequelize'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0xcc7a,0x1e0));var _0xacc7=function(_0x403fc7,_0x32931a){_0x403fc7=_0x403fc7-0x0;var _0x5d0827=_0xcc7a[_0x403fc7];return _0x5d0827;};'use strict';var Sequelize=require(_0xacc7('0x0'));module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index d3d8a96..d348ecb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x540a=['api','moment','bluebird','request-promise','path','./userVoiceQueue.attributes','exports','UserVoiceQueue','user_has_voice_queues','lodash','util','../../config/logger'];(function(_0x4df6f9,_0x44bd65){var _0x4b1a73=function(_0xf5adb7){while(--_0xf5adb7){_0x4df6f9['push'](_0x4df6f9['shift']());}};_0x4b1a73(++_0x44bd65);}(_0x540a,0x17d));var _0xa540=function(_0x4bffe7,_0x96d09f){_0x4bffe7=_0x4bffe7-0x0;var _0x470090=_0x540a[_0x4bffe7];return _0x470090;};'use strict';var _=require(_0xa540('0x0'));var util=require(_0xa540('0x1'));var logger=require(_0xa540('0x2'))(_0xa540('0x3'));var moment=require(_0xa540('0x4'));var BPromise=require(_0xa540('0x5'));var rp=require(_0xa540('0x6'));var fs=require('fs');var path=require(_0xa540('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xa540('0x8'));module[_0xa540('0x9')]=function(_0x1d25a0,_0x412e42){return _0x1d25a0['define'](_0xa540('0xa'),attributes,{'tableName':_0xa540('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x33ed=['./userVoiceQueue.attributes','exports','define','UserVoiceQueue','user_has_voice_queues','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x24daee,_0x14a997){var _0x1ceaad=function(_0x121e74){while(--_0x121e74){_0x24daee['push'](_0x24daee['shift']());}};_0x1ceaad(++_0x14a997);}(_0x33ed,0xc9));var _0xd33e=function(_0x2fdf82,_0x322e7c){_0x2fdf82=_0x2fdf82-0x0;var _0x2382f5=_0x33ed[_0x2fdf82];return _0x2382f5;};'use strict';var _=require(_0xd33e('0x0'));var util=require(_0xd33e('0x1'));var logger=require('../../config/logger')(_0xd33e('0x2'));var moment=require(_0xd33e('0x3'));var BPromise=require(_0xd33e('0x4'));var rp=require(_0xd33e('0x5'));var fs=require('fs');var path=require(_0xd33e('0x6'));var rimraf=require(_0xd33e('0x7'));var config=require(_0xd33e('0x8'));var attributes=require(_0xd33e('0x9'));module[_0xd33e('0xa')]=function(_0x22e947,_0x5740a8){return _0x22e947[_0xd33e('0xb')](_0xd33e('0xc'),attributes,{'tableName':_0xd33e('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a55a23a..35066c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaadd=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','util','moment'];(function(_0x3ee4d1,_0x35cbfd){var _0x24b28a=function(_0x5a60d4){while(--_0x5a60d4){_0x3ee4d1['push'](_0x3ee4d1['shift']());}};_0x24b28a(++_0x35cbfd);}(_0xaadd,0xba));var _0xdaad=function(_0xe775be,_0x4822af){_0xe775be=_0xe775be-0x0;var _0x49e73c=_0xaadd[_0xe775be];return _0x49e73c;};'use strict';var _=require(_0xdaad('0x0'));var util=require(_0xdaad('0x1'));var moment=require(_0xdaad('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xdaad('0x3'));var db=require(_0xdaad('0x4'))['db'];var utils=require(_0xdaad('0x5'));var logger=require(_0xdaad('0x6'))(_0xdaad('0x7'));var config=require(_0xdaad('0x8'));var jayson=require(_0xdaad('0x9'));var client=jayson[_0xdaad('0xa')][_0xdaad('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x510f41,_0x34e441,_0x39e9b5){return new BPromise(function(_0x2b1dbf,_0x15ba10){return client['request'](_0x510f41,_0x39e9b5)['then'](function(_0x3baed3){logger[_0xdaad('0xc')](_0xdaad('0xd'),_0x34e441,_0xdaad('0xe'));logger[_0xdaad('0xf')]('UserVoiceQueue,\x20%s,\x20%s,\x20%s',_0x34e441,_0xdaad('0xe'),JSON[_0xdaad('0x10')](_0x3baed3));if(_0x3baed3['error']){if(_0x3baed3[_0xdaad('0x11')][_0xdaad('0x12')]===0x1f4){logger[_0xdaad('0x11')](_0xdaad('0xd'),_0x34e441,_0x3baed3[_0xdaad('0x11')][_0xdaad('0x13')]);return _0x15ba10(_0x3baed3[_0xdaad('0x11')][_0xdaad('0x13')]);}logger[_0xdaad('0x11')](_0xdaad('0xd'),_0x34e441,_0x3baed3[_0xdaad('0x11')][_0xdaad('0x13')]);return _0x2b1dbf(_0x3baed3[_0xdaad('0x11')][_0xdaad('0x13')]);}else{logger[_0xdaad('0xc')](_0xdaad('0xd'),_0x34e441,_0xdaad('0xe'));_0x2b1dbf(_0x3baed3['result']['message']);}})[_0xdaad('0x14')](function(_0x48f67f){logger['error']('UserVoiceQueue,\x20%s,\x20%s',_0x34e441,_0x48f67f);_0x15ba10(_0x48f67f);});});}
\ No newline at end of file
+var _0x19d6=['code','message','info','catch','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','UserVoiceQueue,\x20%s,\x20%s,\x20%s','error'];(function(_0x28aea5,_0x3bb12e){var _0x6a55f9=function(_0xf6ece8){while(--_0xf6ece8){_0x28aea5['push'](_0x28aea5['shift']());}};_0x6a55f9(++_0x3bb12e);}(_0x19d6,0x1f2));var _0x619d=function(_0x5df2a2,_0x43e8af){_0x5df2a2=_0x5df2a2-0x0;var _0x1ea859=_0x19d6[_0x5df2a2];return _0x1ea859;};'use strict';var _=require('lodash');var util=require(_0x619d('0x0'));var moment=require(_0x619d('0x1'));var BPromise=require(_0x619d('0x2'));var rs=require(_0x619d('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x619d('0x4'));var logger=require(_0x619d('0x5'))(_0x619d('0x6'));var config=require(_0x619d('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x619d('0x8')][_0x619d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x307d9e,_0x2eaa3b,_0xe2dd9d){return new BPromise(function(_0x2a3770,_0x39e60a){return client['request'](_0x307d9e,_0xe2dd9d)[_0x619d('0xa')](function(_0x259233){logger['info'](_0x619d('0xb'),_0x2eaa3b,_0x619d('0xc'));logger['debug'](_0x619d('0xd'),_0x2eaa3b,_0x619d('0xc'),JSON['stringify'](_0x259233));if(_0x259233[_0x619d('0xe')]){if(_0x259233[_0x619d('0xe')][_0x619d('0xf')]===0x1f4){logger[_0x619d('0xe')](_0x619d('0xb'),_0x2eaa3b,_0x259233[_0x619d('0xe')][_0x619d('0x10')]);return _0x39e60a(_0x259233['error'][_0x619d('0x10')]);}logger['error'](_0x619d('0xb'),_0x2eaa3b,_0x259233[_0x619d('0xe')][_0x619d('0x10')]);return _0x2a3770(_0x259233[_0x619d('0xe')][_0x619d('0x10')]);}else{logger[_0x619d('0x11')](_0x619d('0xb'),_0x2eaa3b,_0x619d('0xc'));_0x2a3770(_0x259233['result'][_0x619d('0x10')]);}})[_0x619d('0x12')](function(_0x338b90){logger[_0x619d('0xe')](_0x619d('0xb'),_0x2eaa3b,_0x338b90);_0x39e60a(_0x338b90);});});}
\ No newline at end of file
index 82edd2f..1e6c4ad 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(_0x58dcbd,_0x3cdfb2){var _0x3e0a9f=function(_0x2d8996){while(--_0x2d8996){_0x58dcbd['push'](_0x58dcbd['shift']());}};_0x3e0a9f(++_0x3cdfb2);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x41d02a,_0x355e19){_0x41d02a=_0x41d02a-0x0;var _0x4c3983=_0xcb91[_0x41d02a];return _0x4c3983;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x5464d1,_0x5c197d){var _0x4ff61f=function(_0x2362ac){while(--_0x2362ac){_0x5464d1['push'](_0x5464d1['shift']());}};_0x4ff61f(++_0x5c197d);}(_0xe706,0xa3));var _0x6e70=function(_0x2c04d9,_0x59ec65){_0x2c04d9=_0x2c04d9-0x0;var _0x5ad09a=_0xe706[_0x2c04d9];return _0x5ad09a;};'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 0b741fe..b7453f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4ad=['sequelize','INTEGER','Required\x20by\x20Asterisk','STRING','queue_interface'];(function(_0x27a24c,_0x3ece9c){var _0x1f3d2a=function(_0x4e393d){while(--_0x4e393d){_0x27a24c['push'](_0x27a24c['shift']());}};_0x1f3d2a(++_0x3ece9c);}(_0xc4ad,0xd2));var _0xdc4a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc4ad[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xdc4a('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xdc4a('0x1')],'primaryKey':!![],'autoIncrement':!![],'comment':_0xdc4a('0x2')},'membername':{'type':Sequelize[_0xdc4a('0x3')],'allowNull':![],'comment':'Required\x20by\x20Asterisk'},'UserId':{'type':Sequelize[_0xdc4a('0x1')],'allowNull':![]},'queue_name':{'type':Sequelize[_0xdc4a('0x3')],'allowNull':![],'unique':'queue_interface','comment':_0xdc4a('0x2')},'VoiceQueueId':{'type':Sequelize[_0xdc4a('0x1')],'allowNull':![]},'interface':{'type':Sequelize[_0xdc4a('0x3')],'allowNull':![],'unique':_0xdc4a('0x4'),'comment':_0xdc4a('0x2')},'penalty':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':_0xdc4a('0x2')},'paused':{'type':Sequelize[_0xdc4a('0x1')](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'}};
\ No newline at end of file
+var _0x2a5b=['INTEGER','STRING','Required\x20by\x20Asterisk','queue_interface','sequelize'];(function(_0x2ab1ce,_0x1238a5){var _0xdd7d0e=function(_0x1db03a){while(--_0x1db03a){_0x2ab1ce['push'](_0x2ab1ce['shift']());}};_0xdd7d0e(++_0x1238a5);}(_0x2a5b,0x6d));var _0xb2a5=function(_0x382e89,_0x4768c0){_0x382e89=_0x382e89-0x0;var _0x3a1318=_0x2a5b[_0x382e89];return _0x3a1318;};'use strict';var Sequelize=require(_0xb2a5('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xb2a5('0x1')],'primaryKey':!![],'autoIncrement':!![],'comment':'Required\x20by\x20Asterisk'},'membername':{'type':Sequelize[_0xb2a5('0x2')],'allowNull':![],'comment':_0xb2a5('0x3')},'UserId':{'type':Sequelize['INTEGER'],'allowNull':![]},'queue_name':{'type':Sequelize[_0xb2a5('0x2')],'allowNull':![],'unique':_0xb2a5('0x4'),'comment':_0xb2a5('0x3')},'VoiceQueueId':{'type':Sequelize['INTEGER'],'allowNull':![]},'interface':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xb2a5('0x4'),'comment':_0xb2a5('0x3')},'penalty':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'},'paused':{'type':Sequelize[_0xb2a5('0x1')](0xb),'defaultValue':0x0,'comment':_0xb2a5('0x3')}};
\ No newline at end of file
index 5e8cd77..8ea365f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6257=['UserVoiceQueueRt','update','emit','hasOwnProperty','exports'];(function(_0x29c336,_0x730487){var _0x34dd1f=function(_0x488b4d){while(--_0x488b4d){_0x29c336['push'](_0x29c336['shift']());}};_0x34dd1f(++_0x730487);}(_0x6257,0xbe));var _0x7625=function(_0x1ba68a,_0x184e43){_0x1ba68a=_0x1ba68a-0x0;var _0x486169=_0x6257[_0x1ba68a];return _0x486169;};'use strict';var EventEmitter=require('events');var UserVoiceQueueRt=require('../../mysqldb')['db'][_0x7625('0x0')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x7625('0x1'),'afterDestroy':'remove'};function emitEvent(_0x2fc2f4){return function(_0x31459e,_0x561aa6,_0x3a9a3f){UserVoiceQueueRtEvents['emit'](_0x2fc2f4+':'+_0x31459e['id'],_0x31459e);UserVoiceQueueRtEvents[_0x7625('0x2')](_0x2fc2f4,_0x31459e);_0x3a9a3f(null);};}for(var e in events){if(events[_0x7625('0x3')](e)){var event=events[e];UserVoiceQueueRt['hook'](e,emitEvent(event));}}module[_0x7625('0x4')]=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0x60a3=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','update','remove'];(function(_0x17ec07,_0xe3ca90){var _0x5a6c45=function(_0x59b715){while(--_0x59b715){_0x17ec07['push'](_0x17ec07['shift']());}};_0x5a6c45(++_0xe3ca90);}(_0x60a3,0x1d4));var _0x360a=function(_0x3502b7,_0x4c62cb){_0x3502b7=_0x3502b7-0x0;var _0x56f575=_0x60a3[_0x3502b7];return _0x56f575;};'use strict';var EventEmitter=require(_0x360a('0x0'));var UserVoiceQueueRt=require(_0x360a('0x1'))['db']['UserVoiceQueueRt'];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x360a('0x2'),'afterDestroy':_0x360a('0x3')};function emitEvent(_0x2ac444){return function(_0x12fdf2,_0x1f0ef4,_0x26d74a){UserVoiceQueueRtEvents['emit'](_0x2ac444+':'+_0x12fdf2['id'],_0x12fdf2);UserVoiceQueueRtEvents[_0x360a('0x4')](_0x2ac444,_0x12fdf2);_0x26d74a(null);};}for(var e in events){if(events[_0x360a('0x5')](e)){var event=events[e];UserVoiceQueueRt[_0x360a('0x6')](e,emitEvent(event));}}module[_0x360a('0x7')]=UserVoiceQueueRtEvents;
\ No newline at end of file
index 3e0a074..ce90d2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a6e=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','user_has_voice_queues_rt','lodash'];(function(_0x162048,_0x411f1b){var _0x2339bf=function(_0x4101a2){while(--_0x4101a2){_0x162048['push'](_0x162048['shift']());}};_0x2339bf(++_0x411f1b);}(_0x5a6e,0x1d8));var _0xe5a6=function(_0x285c85,_0x132c21){_0x285c85=_0x285c85-0x0;var _0x2f81cd=_0x5a6e[_0x285c85];return _0x2f81cd;};'use strict';var _=require(_0xe5a6('0x0'));var util=require('util');var logger=require(_0xe5a6('0x1'))('api');var moment=require(_0xe5a6('0x2'));var BPromise=require(_0xe5a6('0x3'));var rp=require(_0xe5a6('0x4'));var fs=require('fs');var path=require(_0xe5a6('0x5'));var rimraf=require(_0xe5a6('0x6'));var config=require(_0xe5a6('0x7'));var attributes=require('./userVoiceQueueRt.attributes');module[_0xe5a6('0x8')]=function(_0x16406e,_0x201fe3){return _0x16406e[_0xe5a6('0x9')]('UserVoiceQueueRt',attributes,{'tableName':_0xe5a6('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa45b=['./userVoiceQueueRt.attributes','exports','define','UserVoiceQueueRt','user_has_voice_queues_rt','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x27530d,_0x46480a){var _0x59e561=function(_0x395fe9){while(--_0x395fe9){_0x27530d['push'](_0x27530d['shift']());}};_0x59e561(++_0x46480a);}(_0xa45b,0xf5));var _0xba45=function(_0x521c9,_0x4e3a2f){_0x521c9=_0x521c9-0x0;var _0x440d5c=_0xa45b[_0x521c9];return _0x440d5c;};'use strict';var _=require(_0xba45('0x0'));var util=require(_0xba45('0x1'));var logger=require(_0xba45('0x2'))(_0xba45('0x3'));var moment=require(_0xba45('0x4'));var BPromise=require(_0xba45('0x5'));var rp=require(_0xba45('0x6'));var fs=require('fs');var path=require(_0xba45('0x7'));var rimraf=require(_0xba45('0x8'));var config=require(_0xba45('0x9'));var attributes=require(_0xba45('0xa'));module[_0xba45('0xb')]=function(_0x1eee9d,_0x24891e){return _0x1eee9d[_0xba45('0xc')](_0xba45('0xd'),attributes,{'tableName':_0xba45('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5bc5fca..1d80f3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c1a=['UserVoiceQueueRt','findAll','options','raw','sequelize','COUNT','literal','outboundQueuePauses','lodash','util','ioredis','../../mysqldb','../../config/logger','jayson/promise','client','http','redis','localhost','register','request','info','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','stringify','error','message','result','GetVoiceQueueRtPauses'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x5c1a,0x1ca));var _0xa5c1=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x5c1a[_0x2641f9];return _0x585741;};'use strict';var _=require(_0xa5c1('0x0'));var util=require(_0xa5c1('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa5c1('0x2'));var db=require(_0xa5c1('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xa5c1('0x4'))('rpc');var config=require('../../config/environment');var jayson=require(_0xa5c1('0x5'));var client=jayson[_0xa5c1('0x6')][_0xa5c1('0x7')]({'port':0x232a});config[_0xa5c1('0x8')]=_['defaults'](config[_0xa5c1('0x8')],{'host':_0xa5c1('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./userVoiceQueueRt.socket')[_0xa5c1('0xa')](socket);function respondWithRpcPromise(_0x1f0ad3,_0x3c723e,_0x3917c0){return new BPromise(function(_0x596506,_0x44e17b){return client[_0xa5c1('0xb')](_0x1f0ad3,_0x3917c0)['then'](function(_0x5567c9){logger[_0xa5c1('0xc')](_0xa5c1('0xd'),_0x3c723e,_0xa5c1('0xe'));logger[_0xa5c1('0xf')](_0xa5c1('0x10'),_0x3c723e,_0xa5c1('0xe'),JSON[_0xa5c1('0x11')](_0x5567c9));if(_0x5567c9[_0xa5c1('0x12')]){if(_0x5567c9['error']['code']===0x1f4){logger[_0xa5c1('0x12')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x3c723e,_0x5567c9[_0xa5c1('0x12')][_0xa5c1('0x13')]);return _0x44e17b(_0x5567c9[_0xa5c1('0x12')][_0xa5c1('0x13')]);}logger[_0xa5c1('0x12')](_0xa5c1('0xd'),_0x3c723e,_0x5567c9[_0xa5c1('0x12')][_0xa5c1('0x13')]);return _0x596506(_0x5567c9[_0xa5c1('0x12')][_0xa5c1('0x13')]);}else{logger[_0xa5c1('0xc')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x3c723e,_0xa5c1('0xe'));_0x596506(_0x5567c9[_0xa5c1('0x14')]['message']);}})['catch'](function(_0x45e7b5){logger[_0xa5c1('0x12')](_0xa5c1('0xd'),_0x3c723e,_0x45e7b5);_0x44e17b(_0x45e7b5);});});}exports[_0xa5c1('0x15')]=function(_0x4e2708){var _0x3cd316=this;return new Promise(function(_0x378a3f,_0x40765d){return db[_0xa5c1('0x16')][_0xa5c1('0x17')]({'raw':_0x4e2708[_0xa5c1('0x18')]?_0x4e2708['options'][_0xa5c1('0x19')]===undefined?!![]:![]:!![],'where':_0x4e2708[_0xa5c1('0x18')]?_0x4e2708['options']['where']||null:null,'attributes':[[db[_0xa5c1('0x1a')]['fn'](_0xa5c1('0x1b'),db[_0xa5c1('0x1a')]['fn']('IF',db[_0xa5c1('0x1a')][_0xa5c1('0x1c')]('`paused`\x20=\x201,\x201,\x20null'))),_0xa5c1('0x1d')]]})['then'](function(_0x5a5804){logger[_0xa5c1('0xc')]('GetVoiceQueueRtPauses',_0x4e2708);logger['debug'](_0xa5c1('0x15'),_0x4e2708,JSON[_0xa5c1('0x11')](_0x5a5804));_0x378a3f(_0x5a5804);})['catch'](function(_0x1e381f){logger['error'](_0xa5c1('0x15'),_0x1e381f[_0xa5c1('0x13')],_0x4e2708);_0x40765d(_0x3cd316[_0xa5c1('0x12')](0x1f4,_0x1e381f['message']));});});};
\ No newline at end of file
+var _0xd116=['error','code','UserVoiceQueueRt,\x20%s,\x20%s','message','result','GetVoiceQueueRtPauses','UserVoiceQueueRt','findAll','options','raw','where','sequelize','COUNT','literal','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','socket.io-emitter','register','then','info','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x55822a,_0x65d1c7){var _0x246596=function(_0x5fe383){while(--_0x5fe383){_0x55822a['push'](_0x55822a['shift']());}};_0x246596(++_0x65d1c7);}(_0xd116,0x7c));var _0x6d11=function(_0x147cca,_0x4c900c){_0x147cca=_0x147cca-0x0;var _0x4fe2c4=_0xd116[_0x147cca];return _0x4fe2c4;};'use strict';var _=require(_0x6d11('0x0'));var util=require('util');var moment=require(_0x6d11('0x1'));var BPromise=require(_0x6d11('0x2'));var rs=require(_0x6d11('0x3'));var fs=require('fs');var Redis=require(_0x6d11('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6d11('0x5'));var logger=require(_0x6d11('0x6'))(_0x6d11('0x7'));var config=require(_0x6d11('0x8'));var jayson=require(_0x6d11('0x9'));var client=jayson[_0x6d11('0xa')]['http']({'port':0x232a});config[_0x6d11('0xb')]=_['defaults'](config[_0x6d11('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x6d11('0xc'))(new Redis(config[_0x6d11('0xb')]));require('./userVoiceQueueRt.socket')[_0x6d11('0xd')](socket);function respondWithRpcPromise(_0x39920d,_0x3b41c2,_0x52c414){return new BPromise(function(_0x383d8c,_0x2d503b){return client['request'](_0x39920d,_0x52c414)[_0x6d11('0xe')](function(_0x2bd918){logger[_0x6d11('0xf')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x3b41c2,'request\x20sent');logger[_0x6d11('0x10')](_0x6d11('0x11'),_0x3b41c2,_0x6d11('0x12'),JSON[_0x6d11('0x13')](_0x2bd918));if(_0x2bd918[_0x6d11('0x14')]){if(_0x2bd918['error'][_0x6d11('0x15')]===0x1f4){logger[_0x6d11('0x14')](_0x6d11('0x16'),_0x3b41c2,_0x2bd918[_0x6d11('0x14')][_0x6d11('0x17')]);return _0x2d503b(_0x2bd918[_0x6d11('0x14')][_0x6d11('0x17')]);}logger['error'](_0x6d11('0x16'),_0x3b41c2,_0x2bd918[_0x6d11('0x14')]['message']);return _0x383d8c(_0x2bd918[_0x6d11('0x14')][_0x6d11('0x17')]);}else{logger[_0x6d11('0xf')](_0x6d11('0x16'),_0x3b41c2,'request\x20sent');_0x383d8c(_0x2bd918[_0x6d11('0x18')][_0x6d11('0x17')]);}})['catch'](function(_0x48afc4){logger['error'](_0x6d11('0x16'),_0x3b41c2,_0x48afc4);_0x2d503b(_0x48afc4);});});}exports[_0x6d11('0x19')]=function(_0x5aa1cd){var _0x21eebf=this;return new Promise(function(_0x2401a6,_0x50fc5f){return db[_0x6d11('0x1a')][_0x6d11('0x1b')]({'raw':_0x5aa1cd[_0x6d11('0x1c')]?_0x5aa1cd[_0x6d11('0x1c')][_0x6d11('0x1d')]===undefined?!![]:![]:!![],'where':_0x5aa1cd[_0x6d11('0x1c')]?_0x5aa1cd[_0x6d11('0x1c')][_0x6d11('0x1e')]||null:null,'attributes':[[db[_0x6d11('0x1f')]['fn'](_0x6d11('0x20'),db['sequelize']['fn']('IF',db[_0x6d11('0x1f')][_0x6d11('0x21')](_0x6d11('0x22')))),_0x6d11('0x23')]]})[_0x6d11('0xe')](function(_0x2010d7){logger[_0x6d11('0xf')](_0x6d11('0x19'),_0x5aa1cd);logger[_0x6d11('0x10')](_0x6d11('0x19'),_0x5aa1cd,JSON['stringify'](_0x2010d7));_0x2401a6(_0x2010d7);})['catch'](function(_0x31b4a0){logger['error'](_0x6d11('0x19'),_0x31b4a0[_0x6d11('0x17')],_0x5aa1cd);_0x50fc5f(_0x21eebf[_0x6d11('0x14')](0x1f4,_0x31b4a0[_0x6d11('0x17')]));});});};
\ No newline at end of file
index c923342..9735424 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce22=['removeListener','register','userVoiceQueueRt:','./userVoiceQueueRt.events','save','remove','update'];(function(_0xe9867,_0x57ff74){var _0x50af16=function(_0x4151db){while(--_0x4151db){_0xe9867['push'](_0xe9867['shift']());}};_0x50af16(++_0x57ff74);}(_0xce22,0xea));var _0x2ce2=function(_0x372b26,_0x2031d1){_0x372b26=_0x372b26-0x0;var _0x49f08f=_0xce22[_0x372b26];return _0x49f08f;};'use strict';var UserVoiceQueueRtEvents=require(_0x2ce2('0x0'));var events=[_0x2ce2('0x1'),_0x2ce2('0x2'),_0x2ce2('0x3')];function createListener(_0x3a106f,_0x47de4a){return function(_0xd7b953){_0x47de4a['emit'](_0x3a106f,_0xd7b953);};}function removeListener(_0x26b273,_0x1801be){return function(){UserVoiceQueueRtEvents[_0x2ce2('0x4')](_0x26b273,_0x1801be);};}exports[_0x2ce2('0x5')]=function(_0x25110e){for(var _0x29f060=0x0,_0x6515b5=events['length'];_0x29f060<_0x6515b5;_0x29f060++){var _0x225737=events[_0x29f060];var _0x111f56=createListener(_0x2ce2('0x6')+_0x225737,_0x25110e);UserVoiceQueueRtEvents['on'](_0x225737,_0x111f56);}};
\ No newline at end of file
+var _0x3d49=['userVoiceQueueRt:','save','remove','update','emit','removeListener','register'];(function(_0x45bf86,_0x75586e){var _0x1f02b7=function(_0x1ea8a3){while(--_0x1ea8a3){_0x45bf86['push'](_0x45bf86['shift']());}};_0x1f02b7(++_0x75586e);}(_0x3d49,0x151));var _0x93d4=function(_0x408e38,_0x23cda8){_0x408e38=_0x408e38-0x0;var _0x426b0e=_0x3d49[_0x408e38];return _0x426b0e;};'use strict';var UserVoiceQueueRtEvents=require('./userVoiceQueueRt.events');var events=[_0x93d4('0x0'),_0x93d4('0x1'),_0x93d4('0x2')];function createListener(_0xcf6e4f,_0x547ab9){return function(_0x571d2c){_0x547ab9[_0x93d4('0x3')](_0xcf6e4f,_0x571d2c);};}function removeListener(_0xa1de2e,_0x41313a){return function(){UserVoiceQueueRtEvents[_0x93d4('0x4')](_0xa1de2e,_0x41313a);};}exports[_0x93d4('0x5')]=function(_0x4b91a8){for(var _0x577079=0x0,_0x4bee9d=events['length'];_0x577079<_0x4bee9d;_0x577079++){var _0x50c533=events[_0x577079];var _0x4c96b7=createListener(_0x93d4('0x6')+_0x50c533,_0x4b91a8);UserVoiceQueueRtEvents['on'](_0x50c533,_0x4c96b7);}};
\ No newline at end of file
index e3a3d52..38a03c8 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(_0x1b9edd,_0x66b166){var _0x4907c4=function(_0x538091){while(--_0x538091){_0x1b9edd['push'](_0x1b9edd['shift']());}};_0x4907c4(++_0x66b166);}(_0xa9e0,0x123));var _0x0a9e=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0xa9e0[_0x46aff0];return _0x9d78cf;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x18a246,_0x5e7f4b){var _0x268977=function(_0x5cf902){while(--_0x5cf902){_0x18a246['push'](_0x18a246['shift']());}};_0x268977(++_0x5e7f4b);}(_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'));module['exports']=router;
\ No newline at end of file
index 2dae742..e536d5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1141=['INTEGER','sequelize'];(function(_0x1c6664,_0x45566e){var _0x33124b=function(_0x2c04bb){while(--_0x2c04bb){_0x1c6664['push'](_0x1c6664['shift']());}};_0x33124b(++_0x45566e);}(_0x1141,0xb1));var _0x1114=function(_0x1c30bf,_0x247c31){_0x1c30bf=_0x1c30bf-0x0;var _0x255b5e=_0x1141[_0x1c30bf];return _0x255b5e;};'use strict';var Sequelize=require(_0x1114('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x1114('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x70ff=['sequelize','exports','INTEGER'];(function(_0x4d5dbe,_0x43b77){var _0x3941ef=function(_0x1fe45b){while(--_0x1fe45b){_0x4d5dbe['push'](_0x4d5dbe['shift']());}};_0x3941ef(++_0x43b77);}(_0x70ff,0x1ce));var _0xf70f=function(_0x35268e,_0x4acfd1){_0x35268e=_0x35268e-0x0;var _0x28ba11=_0x70ff[_0x35268e];return _0x28ba11;};'use strict';var Sequelize=require(_0xf70f('0x0'));module[_0xf70f('0x1')]={'penalty':{'type':Sequelize[_0xf70f('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 64b8c6e..614354c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99fc=['rimraf','../../config/environment','./userWhatsappQueue.attributes','exports','UserWhatsappQueue','user_has_whatsapp_queues','lodash','util','../../config/logger','api','moment','path'];(function(_0x3371c8,_0x2d8a6f){var _0x41b3c7=function(_0x2f9440){while(--_0x2f9440){_0x3371c8['push'](_0x3371c8['shift']());}};_0x41b3c7(++_0x2d8a6f);}(_0x99fc,0x16e));var _0xc99f=function(_0xe4dfb5,_0x58a25e){_0xe4dfb5=_0xe4dfb5-0x0;var _0x51d4aa=_0x99fc[_0xe4dfb5];return _0x51d4aa;};'use strict';var _=require(_0xc99f('0x0'));var util=require(_0xc99f('0x1'));var logger=require(_0xc99f('0x2'))(_0xc99f('0x3'));var moment=require(_0xc99f('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xc99f('0x5'));var rimraf=require(_0xc99f('0x6'));var config=require(_0xc99f('0x7'));var attributes=require(_0xc99f('0x8'));module[_0xc99f('0x9')]=function(_0x5438aa,_0x1d4849){return _0x5438aa['define'](_0xc99f('0xa'),attributes,{'tableName':_0xc99f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3399=['define','user_has_whatsapp_queues','lodash','util','../../config/logger','api','moment','rimraf','../../config/environment','./userWhatsappQueue.attributes','exports'];(function(_0x596954,_0x47303c){var _0x29ba8f=function(_0x62c939){while(--_0x62c939){_0x596954['push'](_0x596954['shift']());}};_0x29ba8f(++_0x47303c);}(_0x3399,0x1e6));var _0x9339=function(_0x294dbd,_0x3d603e){_0x294dbd=_0x294dbd-0x0;var _0x51b7a2=_0x3399[_0x294dbd];return _0x51b7a2;};'use strict';var _=require(_0x9339('0x0'));var util=require(_0x9339('0x1'));var logger=require(_0x9339('0x2'))(_0x9339('0x3'));var moment=require(_0x9339('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x9339('0x5'));var config=require(_0x9339('0x6'));var attributes=require(_0x9339('0x7'));module[_0x9339('0x8')]=function(_0x1af4de,_0x4034cb){return _0x1af4de[_0x9339('0x9')]('UserWhatsappQueue',attributes,{'tableName':_0x9339('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2158b36..3795bf9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0f5=['util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','request\x20sent','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','code','error','UserWhatsappQueue,\x20%s,\x20%s','message','catch','lodash'];(function(_0x4207f4,_0x1f778b){var _0x29a621=function(_0xa6f5b7){while(--_0xa6f5b7){_0x4207f4['push'](_0x4207f4['shift']());}};_0x29a621(++_0x1f778b);}(_0xc0f5,0xe5));var _0x5c0f=function(_0x50d16c,_0x2ccf7a){_0x50d16c=_0x50d16c-0x0;var _0x17971f=_0xc0f5[_0x50d16c];return _0x17971f;};'use strict';var _=require(_0x5c0f('0x0'));var util=require(_0x5c0f('0x1'));var moment=require(_0x5c0f('0x2'));var BPromise=require('bluebird');var rs=require(_0x5c0f('0x3'));var fs=require('fs');var Redis=require(_0x5c0f('0x4'));var db=require(_0x5c0f('0x5'))['db'];var utils=require(_0x5c0f('0x6'));var logger=require(_0x5c0f('0x7'))(_0x5c0f('0x8'));var config=require(_0x5c0f('0x9'));var jayson=require(_0x5c0f('0xa'));var client=jayson[_0x5c0f('0xb')][_0x5c0f('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x14c0a9,_0x398217,_0x46a480){return new BPromise(function(_0x20f420,_0x2c53b6){return client['request'](_0x14c0a9,_0x46a480)['then'](function(_0x333e63){logger[_0x5c0f('0xd')]('UserWhatsappQueue,\x20%s,\x20%s',_0x398217,_0x5c0f('0xe'));logger[_0x5c0f('0xf')](_0x5c0f('0x10'),_0x398217,_0x5c0f('0xe'),JSON[_0x5c0f('0x11')](_0x333e63));if(_0x333e63['error']){if(_0x333e63['error'][_0x5c0f('0x12')]===0x1f4){logger[_0x5c0f('0x13')](_0x5c0f('0x14'),_0x398217,_0x333e63['error']['message']);return _0x2c53b6(_0x333e63[_0x5c0f('0x13')][_0x5c0f('0x15')]);}logger[_0x5c0f('0x13')](_0x5c0f('0x14'),_0x398217,_0x333e63['error'][_0x5c0f('0x15')]);return _0x20f420(_0x333e63[_0x5c0f('0x13')][_0x5c0f('0x15')]);}else{logger[_0x5c0f('0xd')]('UserWhatsappQueue,\x20%s,\x20%s',_0x398217,_0x5c0f('0xe'));_0x20f420(_0x333e63['result'][_0x5c0f('0x15')]);}})[_0x5c0f('0x16')](function(_0x2c5863){logger[_0x5c0f('0x13')]('UserWhatsappQueue,\x20%s,\x20%s',_0x398217,_0x2c5863);_0x2c53b6(_0x2c5863);});});}
\ No newline at end of file
+var _0xe4c7=['../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','info','result','lodash','bluebird','ioredis','../../mysqldb'];(function(_0x4ce318,_0x28d105){var _0x51f744=function(_0x58d7e9){while(--_0x58d7e9){_0x4ce318['push'](_0x4ce318['shift']());}};_0x51f744(++_0x28d105);}(_0xe4c7,0x152));var _0x7e4c=function(_0xc85513,_0x49e852){_0xc85513=_0xc85513-0x0;var _0x3e70be=_0xe4c7[_0xc85513];return _0x3e70be;};'use strict';var _=require(_0x7e4c('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x7e4c('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7e4c('0x2'));var db=require(_0x7e4c('0x3'))['db'];var utils=require(_0x7e4c('0x4'));var logger=require(_0x7e4c('0x5'))('rpc');var config=require(_0x7e4c('0x6'));var jayson=require(_0x7e4c('0x7'));var client=jayson[_0x7e4c('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0xbeb914,_0x3fa5d,_0x3418ea){return new BPromise(function(_0x237a7d,_0x70e442){return client[_0x7e4c('0x9')](_0xbeb914,_0x3418ea)['then'](function(_0x357bad){logger['info'](_0x7e4c('0xa'),_0x3fa5d,_0x7e4c('0xb'));logger[_0x7e4c('0xc')]('UserWhatsappQueue,\x20%s,\x20%s,\x20%s',_0x3fa5d,_0x7e4c('0xb'),JSON[_0x7e4c('0xd')](_0x357bad));if(_0x357bad['error']){if(_0x357bad['error']['code']===0x1f4){logger[_0x7e4c('0xe')](_0x7e4c('0xa'),_0x3fa5d,_0x357bad[_0x7e4c('0xe')][_0x7e4c('0xf')]);return _0x70e442(_0x357bad[_0x7e4c('0xe')][_0x7e4c('0xf')]);}logger[_0x7e4c('0xe')]('UserWhatsappQueue,\x20%s,\x20%s',_0x3fa5d,_0x357bad[_0x7e4c('0xe')][_0x7e4c('0xf')]);return _0x237a7d(_0x357bad[_0x7e4c('0xe')][_0x7e4c('0xf')]);}else{logger[_0x7e4c('0x10')]('UserWhatsappQueue,\x20%s,\x20%s',_0x3fa5d,_0x7e4c('0xb'));_0x237a7d(_0x357bad[_0x7e4c('0x11')]['message']);}})['catch'](function(_0x4205c0){logger['error'](_0x7e4c('0xa'),_0x3fa5d,_0x4205c0);_0x70e442(_0x4205c0);});});}
\ No newline at end of file
index b5f436c..79dec45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4853=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','/:id','show','post','create','put','update','delete','destroy','util','connect-timeout','express'];(function(_0x5466ab,_0x227b13){var _0x40751a=function(_0x477f9e){while(--_0x477f9e){_0x5466ab['push'](_0x5466ab['shift']());}};_0x40751a(++_0x227b13);}(_0x4853,0x11d));var _0x3485=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x4853[_0xa464c9];return _0x3d73c4;};'use strict';var multer=require('multer');var util=require(_0x3485('0x0'));var path=require('path');var timeout=require(_0x3485('0x1'));var express=require(_0x3485('0x2'));var router=express[_0x3485('0x3')]();var fs_extra=require(_0x3485('0x4'));var auth=require(_0x3485('0x5'));var interaction=require(_0x3485('0x6'));var config=require('../../config/environment');var controller=require('./variable.controller');router['get']('/',auth[_0x3485('0x7')](),controller[_0x3485('0x8')]);router[_0x3485('0x9')](_0x3485('0xa'),auth[_0x3485('0x7')](),controller[_0x3485('0xb')]);router[_0x3485('0xc')]('/',auth['isAuthenticated'](),controller[_0x3485('0xd')]);router[_0x3485('0xe')](_0x3485('0xa'),auth[_0x3485('0x7')](),controller[_0x3485('0xf')]);router[_0x3485('0x10')](_0x3485('0xa'),auth[_0x3485('0x7')](),controller[_0x3485('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x1a8f=['multer','path','connect-timeout','express','Router','fs-extra','get','isAuthenticated','index','/:id','show','post','put','delete','destroy'];(function(_0x185070,_0x3c7668){var _0x55d1e9=function(_0x54677f){while(--_0x54677f){_0x185070['push'](_0x185070['shift']());}};_0x55d1e9(++_0x3c7668);}(_0x1a8f,0x87));var _0xf1a8=function(_0x251421,_0x34bf49){_0x251421=_0x251421-0x0;var _0xe9bbff=_0x1a8f[_0x251421];return _0xe9bbff;};'use strict';var multer=require(_0xf1a8('0x0'));var util=require('util');var path=require(_0xf1a8('0x1'));var timeout=require(_0xf1a8('0x2'));var express=require(_0xf1a8('0x3'));var router=express[_0xf1a8('0x4')]();var fs_extra=require(_0xf1a8('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./variable.controller');router[_0xf1a8('0x6')]('/',auth[_0xf1a8('0x7')](),controller[_0xf1a8('0x8')]);router['get'](_0xf1a8('0x9'),auth['isAuthenticated'](),controller[_0xf1a8('0xa')]);router[_0xf1a8('0xb')]('/',auth[_0xf1a8('0x7')](),controller['create']);router[_0xf1a8('0xc')]('/:id',auth[_0xf1a8('0x7')](),controller['update']);router[_0xf1a8('0xd')](_0xf1a8('0x9'),auth[_0xf1a8('0x7')](),controller[_0xf1a8('0xe')]);module['exports']=router;
\ No newline at end of file
index f76e225..2352ff7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fd3=['exports','STRING','name'];(function(_0x59c63d,_0x1b923f){var _0x148287=function(_0x3e456c){while(--_0x3e456c){_0x59c63d['push'](_0x59c63d['shift']());}};_0x148287(++_0x1b923f);}(_0x8fd3,0x1d7));var _0x38fd=function(_0x1c62ef,_0x34ce50){_0x1c62ef=_0x1c62ef-0x0;var _0x1e4d54=_0x8fd3[_0x1c62ef];return _0x1e4d54;};'use strict';var Sequelize=require('sequelize');module[_0x38fd('0x0')]={'name':{'type':Sequelize[_0x38fd('0x1')],'unique':_0x38fd('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xfd2f=['sequelize','exports','STRING'];(function(_0x5792fc,_0x28a499){var _0x3db018=function(_0x303218){while(--_0x303218){_0x5792fc['push'](_0x5792fc['shift']());}};_0x3db018(++_0x28a499);}(_0xfd2f,0x14a));var _0xffd2=function(_0x2d2881,_0x1684d1){_0x2d2881=_0x2d2881-0x0;var _0x34fe67=_0xfd2f[_0x2d2881];return _0x34fe67;};'use strict';var Sequelize=require(_0xffd2('0x0'));module[_0xffd2('0x1')]={'name':{'type':Sequelize[_0xffd2('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xffd2('0x2')]}};
\ No newline at end of file
index 9b987f5..43c5fd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89ed=['count','set','Content-Range','apply','reject','save','update','destroy','then','get','Variables','UserProfileResource','end','error','stack','name','map','Variable','rawAttributes','fieldName','type','model','keys','query','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','filters','merge','VIRTUAL','filter','include','findAll','rows','params','options','catch','create','user','autoAssociation','body','find','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','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/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit'];(function(_0x6bb11a,_0x7b4fb){var _0x46914b=function(_0x1d9d04){while(--_0x1d9d04){_0x6bb11a['push'](_0x6bb11a['shift']());}};_0x46914b(++_0x7b4fb);}(_0x89ed,0xc8));var _0xd89e=function(_0xd0cf3c,_0x4cd35a){_0xd0cf3c=_0xd0cf3c-0x0;var _0x1400b6=_0x89ed[_0xd0cf3c];return _0x1400b6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd89e('0x0'));var zipdir=require(_0xd89e('0x1'));var jsonpatch=require(_0xd89e('0x2'));var rp=require(_0xd89e('0x3'));var moment=require(_0xd89e('0x4'));var BPromise=require(_0xd89e('0x5'));var Mustache=require(_0xd89e('0x6'));var util=require('util');var path=require('path');var sox=require(_0xd89e('0x7'));var csv=require(_0xd89e('0x8'));var ejs=require(_0xd89e('0x9'));var fs=require('fs');var fs_extra=require(_0xd89e('0xa'));var _=require(_0xd89e('0xb'));var squel=require(_0xd89e('0xc'));var crypto=require(_0xd89e('0xd'));var jsforce=require(_0xd89e('0xe'));var deskjs=require(_0xd89e('0xf'));var toCsv=require(_0xd89e('0x8'));var querystring=require('querystring');var Papa=require(_0xd89e('0x10'));var Redis=require(_0xd89e('0x11'));var authService=require(_0xd89e('0x12'));var qs=require(_0xd89e('0x13'));var as=require(_0xd89e('0x14'));var hardwareService=require(_0xd89e('0x15'));var logger=require(_0xd89e('0x16'))('api');var utils=require('../../config/utils');var config=require(_0xd89e('0x17'));var licenseUtil=require(_0xd89e('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4cd47b,_0x383ca2){_0x383ca2=_0x383ca2||0xcc;return function(_0x985225){if(_0x985225){return _0x4cd47b[_0xd89e('0x19')](_0x383ca2);}return _0x4cd47b[_0xd89e('0x1a')](_0x383ca2)['end']();};}function respondWithResult(_0xda8771,_0x2f79c3){_0x2f79c3=_0x2f79c3||0xc8;return function(_0x1ac6c9){if(_0x1ac6c9){return _0xda8771['status'](_0x2f79c3)[_0xd89e('0x1b')](_0x1ac6c9);}};}function respondWithFilteredResult(_0x1d83c8,_0x281af2){return function(_0x106bc2){if(_0x106bc2){var _0x1ae689=typeof _0x281af2[_0xd89e('0x1c')]===_0xd89e('0x1d')&&typeof _0x281af2[_0xd89e('0x1e')]===_0xd89e('0x1d');var _0x25452f=_0x106bc2[_0xd89e('0x1f')];var _0x262284=_0x1ae689?0x0:_0x281af2[_0xd89e('0x1c')];var _0x8ff2bf=_0x1ae689?_0x106bc2[_0xd89e('0x1f')]:_0x281af2['offset']+_0x281af2[_0xd89e('0x1e')];var _0x3f4038;if(_0x8ff2bf>=_0x25452f){_0x8ff2bf=_0x25452f;_0x3f4038=0xc8;}else{_0x3f4038=0xce;}_0x1d83c8[_0xd89e('0x1a')](_0x3f4038);return _0x1d83c8[_0xd89e('0x20')](_0xd89e('0x21'),_0x262284+'-'+_0x8ff2bf+'/'+_0x25452f)['json'](_0x106bc2);}return null;};}function patchUpdates(_0x28180d){return function(_0x346c2a){try{jsonpatch[_0xd89e('0x22')](_0x346c2a,_0x28180d,!![]);}catch(_0x1c4fad){return BPromise[_0xd89e('0x23')](_0x1c4fad);}return _0x346c2a[_0xd89e('0x24')]();};}function saveUpdates(_0x4712a5,_0x532538){return function(_0x21b726){if(_0x21b726){return _0x21b726[_0xd89e('0x25')](_0x4712a5)['then'](function(_0xa70dc5){return _0xa70dc5;});}return null;};}function removeEntity(_0x6e1b59,_0xf9bc0b){return function(_0x3321d6){if(_0x3321d6){return _0x3321d6[_0xd89e('0x26')]()[_0xd89e('0x27')](function(){var _0x3003b8=_0x3321d6[_0xd89e('0x28')]({'plain':!![]});var _0x3edd47=_0xd89e('0x29');return db[_0xd89e('0x2a')][_0xd89e('0x26')]({'where':{'type':_0x3edd47,'resourceId':_0x3003b8['id']}})[_0xd89e('0x27')](function(){return _0x3321d6;});})['then'](function(){_0x6e1b59[_0xd89e('0x1a')](0xcc)[_0xd89e('0x2b')]();});}};}function handleEntityNotFound(_0x1ee667,_0x211e3b){return function(_0x54095c){if(!_0x54095c){_0x1ee667[_0xd89e('0x19')](0x194);}return _0x54095c;};}function handleError(_0x287685,_0x1db62d){_0x1db62d=_0x1db62d||0x1f4;return function(_0x4e73f3){logger[_0xd89e('0x2c')](_0x4e73f3[_0xd89e('0x2d')]);if(_0x4e73f3[_0xd89e('0x2e')]){delete _0x4e73f3[_0xd89e('0x2e')];}_0x287685['status'](_0x1db62d)['send'](_0x4e73f3);};}exports['index']=function(_0x38d20d,_0x15d01b){var _0x318f7a={},_0x335e38={},_0x2b6ee0={'count':0x0,'rows':[]};var _0x29330c=_[_0xd89e('0x2f')](db[_0xd89e('0x30')][_0xd89e('0x31')],function(_0x16a04b){return{'name':_0x16a04b[_0xd89e('0x32')],'type':_0x16a04b[_0xd89e('0x33')]['key']};});_0x335e38[_0xd89e('0x34')]=_[_0xd89e('0x2f')](_0x29330c,_0xd89e('0x2e'));_0x335e38['query']=_[_0xd89e('0x35')](_0x38d20d[_0xd89e('0x36')]);_0x335e38['filters']=_[_0xd89e('0x37')](_0x335e38[_0xd89e('0x34')],_0x335e38[_0xd89e('0x36')]);_0x318f7a[_0xd89e('0x38')]=_[_0xd89e('0x37')](_0x335e38[_0xd89e('0x34')],qs[_0xd89e('0x39')](_0x38d20d[_0xd89e('0x36')][_0xd89e('0x39')]));_0x318f7a[_0xd89e('0x38')]=_0x318f7a[_0xd89e('0x38')]['length']?_0x318f7a[_0xd89e('0x38')]:_0x335e38[_0xd89e('0x34')];if(!_0x38d20d['query'][_0xd89e('0x3a')](_0xd89e('0x3b'))){_0x318f7a[_0xd89e('0x1e')]=qs[_0xd89e('0x1e')](_0x38d20d[_0xd89e('0x36')][_0xd89e('0x1e')]);_0x318f7a['offset']=qs[_0xd89e('0x1c')](_0x38d20d['query'][_0xd89e('0x1c')]);}_0x318f7a['order']=qs[_0xd89e('0x3c')](_0x38d20d['query'][_0xd89e('0x3c')]);_0x318f7a[_0xd89e('0x3d')]=qs['filters'](_['pick'](_0x38d20d[_0xd89e('0x36')],_0x335e38[_0xd89e('0x3e')]),_0x29330c);if(_0x38d20d['query']['filter']){_0x318f7a[_0xd89e('0x3d')]=_[_0xd89e('0x3f')](_0x318f7a[_0xd89e('0x3d')],{'$or':_['map'](_0x29330c,function(_0x3765a1){if(_0x3765a1[_0xd89e('0x33')]!==_0xd89e('0x40')){var _0x4c0c47={};_0x4c0c47[_0x3765a1[_0xd89e('0x2e')]]={'$like':'%'+_0x38d20d[_0xd89e('0x36')][_0xd89e('0x41')]+'%'};return _0x4c0c47;}})});}_0x318f7a=_[_0xd89e('0x3f')]({},_0x318f7a,_0x38d20d['options']);var _0x3a3690={'where':_0x318f7a[_0xd89e('0x3d')]};return db[_0xd89e('0x30')]['count'](_0x3a3690)[_0xd89e('0x27')](function(_0x432549){_0x2b6ee0[_0xd89e('0x1f')]=_0x432549;if(_0x38d20d['query']['includeAll']){_0x318f7a[_0xd89e('0x42')]=[{'all':!![]}];}return db[_0xd89e('0x30')][_0xd89e('0x43')](_0x318f7a);})[_0xd89e('0x27')](function(_0x4e40f3){_0x2b6ee0[_0xd89e('0x44')]=_0x4e40f3;return _0x2b6ee0;})[_0xd89e('0x27')](respondWithFilteredResult(_0x15d01b,_0x318f7a))['catch'](handleError(_0x15d01b,null));};exports['show']=function(_0x2d6020,_0x5dde3c){var _0x5b6bcf={'raw':!![],'where':{'id':_0x2d6020[_0xd89e('0x45')]['id']}},_0x5f24ae={};_0x5f24ae[_0xd89e('0x34')]=_[_0xd89e('0x35')](db[_0xd89e('0x30')][_0xd89e('0x31')]);_0x5f24ae[_0xd89e('0x36')]=_[_0xd89e('0x35')](_0x2d6020[_0xd89e('0x36')]);_0x5f24ae[_0xd89e('0x3e')]=_[_0xd89e('0x37')](_0x5f24ae[_0xd89e('0x34')],_0x5f24ae['query']);_0x5b6bcf[_0xd89e('0x38')]=_[_0xd89e('0x37')](_0x5f24ae[_0xd89e('0x34')],qs['fields'](_0x2d6020[_0xd89e('0x36')][_0xd89e('0x39')]));_0x5b6bcf[_0xd89e('0x38')]=_0x5b6bcf[_0xd89e('0x38')]['length']?_0x5b6bcf[_0xd89e('0x38')]:_0x5f24ae[_0xd89e('0x34')];if(_0x2d6020[_0xd89e('0x36')]['includeAll']){_0x5b6bcf[_0xd89e('0x42')]=[{'all':!![]}];}_0x5b6bcf=_['merge']({},_0x5b6bcf,_0x2d6020[_0xd89e('0x46')]);return db['Variable']['find'](_0x5b6bcf)['then'](handleEntityNotFound(_0x5dde3c,null))['then'](respondWithResult(_0x5dde3c,null))[_0xd89e('0x47')](handleError(_0x5dde3c,null));};exports['create']=function(_0x46e5d2,_0x379741){return db[_0xd89e('0x30')][_0xd89e('0x48')](_0x46e5d2['body'],{})[_0xd89e('0x27')](function(_0xcd5016){var _0x1d24d8=_0x46e5d2['user'][_0xd89e('0x28')]({'plain':!![]});if(!_0x1d24d8)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1d24d8['role']===_0xd89e('0x49')){var _0x43d192=_0xcd5016[_0xd89e('0x28')]({'plain':!![]});var _0x4d6881=_0xd89e('0x29');return db['UserProfileSection']['find']({'where':{'name':_0x4d6881,'userProfileId':_0x1d24d8['userProfileId']},'raw':!![]})['then'](function(_0x3acdee){if(_0x3acdee&&_0x3acdee[_0xd89e('0x4a')]===0x0){return db[_0xd89e('0x2a')][_0xd89e('0x48')]({'name':_0x43d192[_0xd89e('0x2e')],'resourceId':_0x43d192['id'],'type':_0x3acdee['name'],'sectionId':_0x3acdee['id']},{})['then'](function(){return _0xcd5016;});}else{return _0xcd5016;}})[_0xd89e('0x47')](function(_0x1e83c2){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1e83c2);throw _0x1e83c2;});}return _0xcd5016;})[_0xd89e('0x27')](respondWithResult(_0x379741,0xc9))[_0xd89e('0x47')](handleError(_0x379741,null));};exports['update']=function(_0x13f07c,_0x48bb92){if(_0x13f07c[_0xd89e('0x4b')]['id']){delete _0x13f07c['body']['id'];}return db[_0xd89e('0x30')][_0xd89e('0x4c')]({'where':{'id':_0x13f07c[_0xd89e('0x45')]['id']}})[_0xd89e('0x27')](handleEntityNotFound(_0x48bb92,null))['then'](saveUpdates(_0x13f07c['body'],null))['then'](respondWithResult(_0x48bb92,null))['catch'](handleError(_0x48bb92,null));};exports['destroy']=function(_0x164f30,_0x4b6f24){return db[_0xd89e('0x30')][_0xd89e('0x4c')]({'where':{'id':_0x164f30['params']['id']}})[_0xd89e('0x27')](handleEntityNotFound(_0x4b6f24,null))[_0xd89e('0x27')](removeEntity(_0x4b6f24,null))[_0xd89e('0x47')](handleError(_0x4b6f24,null));};
\ No newline at end of file
+var _0xa6a7=['query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','Variable','findAll','show','params','include','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','reject','update','then','get','Variables','UserProfileResource','error','stack','name','index','map','rawAttributes','type','key','model'];(function(_0x220ec8,_0x3e57de){var _0x4723a3=function(_0x2cb8b7){while(--_0x2cb8b7){_0x220ec8['push'](_0x220ec8['shift']());}};_0x4723a3(++_0x3e57de);}(_0xa6a7,0x1b0));var _0x7a6a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa6a7[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x7a6a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7a6a('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7a6a('0x2'));var moment=require(_0x7a6a('0x3'));var BPromise=require(_0x7a6a('0x4'));var Mustache=require(_0x7a6a('0x5'));var util=require(_0x7a6a('0x6'));var path=require('path');var sox=require(_0x7a6a('0x7'));var csv=require(_0x7a6a('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7a6a('0x9'));var _=require(_0x7a6a('0xa'));var squel=require(_0x7a6a('0xb'));var crypto=require(_0x7a6a('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x7a6a('0xd'));var toCsv=require(_0x7a6a('0x8'));var querystring=require(_0x7a6a('0xe'));var Papa=require(_0x7a6a('0xf'));var Redis=require(_0x7a6a('0x10'));var authService=require(_0x7a6a('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7a6a('0x12'));var logger=require('../../config/logger')(_0x7a6a('0x13'));var utils=require(_0x7a6a('0x14'));var config=require(_0x7a6a('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x7a6a('0x16'))['db'];function respondWithStatusCode(_0x45b9ff,_0x778814){_0x778814=_0x778814||0xcc;return function(_0x440dda){if(_0x440dda){return _0x45b9ff[_0x7a6a('0x17')](_0x778814);}return _0x45b9ff[_0x7a6a('0x18')](_0x778814)[_0x7a6a('0x19')]();};}function respondWithResult(_0x463246,_0x6cbd74){_0x6cbd74=_0x6cbd74||0xc8;return function(_0x26a261){if(_0x26a261){return _0x463246['status'](_0x6cbd74)[_0x7a6a('0x1a')](_0x26a261);}};}function respondWithFilteredResult(_0x4bb64b,_0x58e532){return function(_0x4f7ac4){if(_0x4f7ac4){var _0x288238=typeof _0x58e532['offset']==='undefined'&&typeof _0x58e532['limit']===_0x7a6a('0x1b');var _0x4d939e=_0x4f7ac4['count'];var _0x44f354=_0x288238?0x0:_0x58e532['offset'];var _0x5457d2=_0x288238?_0x4f7ac4[_0x7a6a('0x1c')]:_0x58e532[_0x7a6a('0x1d')]+_0x58e532[_0x7a6a('0x1e')];var _0x26e394;if(_0x5457d2>=_0x4d939e){_0x5457d2=_0x4d939e;_0x26e394=0xc8;}else{_0x26e394=0xce;}_0x4bb64b[_0x7a6a('0x18')](_0x26e394);return _0x4bb64b[_0x7a6a('0x1f')](_0x7a6a('0x20'),_0x44f354+'-'+_0x5457d2+'/'+_0x4d939e)[_0x7a6a('0x1a')](_0x4f7ac4);}return null;};}function patchUpdates(_0x31f066){return function(_0x31197d){try{jsonpatch['apply'](_0x31197d,_0x31f066,!![]);}catch(_0x3c86a3){return BPromise[_0x7a6a('0x21')](_0x3c86a3);}return _0x31197d['save']();};}function saveUpdates(_0x357218,_0x4a76a3){return function(_0x2332ff){if(_0x2332ff){return _0x2332ff[_0x7a6a('0x22')](_0x357218)[_0x7a6a('0x23')](function(_0x586efa){return _0x586efa;});}return null;};}function removeEntity(_0x5251e2,_0x1229d7){return function(_0x2b708b){if(_0x2b708b){return _0x2b708b['destroy']()[_0x7a6a('0x23')](function(){var _0x1e3f32=_0x2b708b[_0x7a6a('0x24')]({'plain':!![]});var _0x1cbe94=_0x7a6a('0x25');return db[_0x7a6a('0x26')]['destroy']({'where':{'type':_0x1cbe94,'resourceId':_0x1e3f32['id']}})[_0x7a6a('0x23')](function(){return _0x2b708b;});})[_0x7a6a('0x23')](function(){_0x5251e2[_0x7a6a('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2d1d48,_0x5b0e0c){return function(_0xe9acc7){if(!_0xe9acc7){_0x2d1d48[_0x7a6a('0x17')](0x194);}return _0xe9acc7;};}function handleError(_0x2628e2,_0x30e45f){_0x30e45f=_0x30e45f||0x1f4;return function(_0x4d64b3){logger[_0x7a6a('0x27')](_0x4d64b3[_0x7a6a('0x28')]);if(_0x4d64b3[_0x7a6a('0x29')]){delete _0x4d64b3[_0x7a6a('0x29')];}_0x2628e2[_0x7a6a('0x18')](_0x30e45f)['send'](_0x4d64b3);};}exports[_0x7a6a('0x2a')]=function(_0x17fe97,_0x426ab4){var _0x1c6ff0={},_0xb67176={},_0x4f09cf={'count':0x0,'rows':[]};var _0x4c5808=_[_0x7a6a('0x2b')](db['Variable'][_0x7a6a('0x2c')],function(_0x20134b){return{'name':_0x20134b['fieldName'],'type':_0x20134b[_0x7a6a('0x2d')][_0x7a6a('0x2e')]};});_0xb67176[_0x7a6a('0x2f')]=_[_0x7a6a('0x2b')](_0x4c5808,_0x7a6a('0x29'));_0xb67176[_0x7a6a('0x30')]=_[_0x7a6a('0x31')](_0x17fe97[_0x7a6a('0x30')]);_0xb67176[_0x7a6a('0x32')]=_['intersection'](_0xb67176[_0x7a6a('0x2f')],_0xb67176['query']);_0x1c6ff0[_0x7a6a('0x33')]=_[_0x7a6a('0x34')](_0xb67176[_0x7a6a('0x2f')],qs[_0x7a6a('0x35')](_0x17fe97[_0x7a6a('0x30')][_0x7a6a('0x35')]));_0x1c6ff0[_0x7a6a('0x33')]=_0x1c6ff0[_0x7a6a('0x33')]['length']?_0x1c6ff0[_0x7a6a('0x33')]:_0xb67176[_0x7a6a('0x2f')];if(!_0x17fe97[_0x7a6a('0x30')][_0x7a6a('0x36')](_0x7a6a('0x37'))){_0x1c6ff0[_0x7a6a('0x1e')]=qs[_0x7a6a('0x1e')](_0x17fe97[_0x7a6a('0x30')]['limit']);_0x1c6ff0[_0x7a6a('0x1d')]=qs[_0x7a6a('0x1d')](_0x17fe97[_0x7a6a('0x30')][_0x7a6a('0x1d')]);}_0x1c6ff0['order']=qs['sort'](_0x17fe97['query'][_0x7a6a('0x38')]);_0x1c6ff0['where']=qs[_0x7a6a('0x32')](_[_0x7a6a('0x39')](_0x17fe97[_0x7a6a('0x30')],_0xb67176[_0x7a6a('0x32')]),_0x4c5808);if(_0x17fe97[_0x7a6a('0x30')][_0x7a6a('0x3a')]){_0x1c6ff0[_0x7a6a('0x3b')]=_['merge'](_0x1c6ff0[_0x7a6a('0x3b')],{'$or':_[_0x7a6a('0x2b')](_0x4c5808,function(_0x551a64){if(_0x551a64[_0x7a6a('0x2d')]!==_0x7a6a('0x3c')){var _0x174cd1={};_0x174cd1[_0x551a64['name']]={'$like':'%'+_0x17fe97[_0x7a6a('0x30')][_0x7a6a('0x3a')]+'%'};return _0x174cd1;}})});}_0x1c6ff0=_[_0x7a6a('0x3d')]({},_0x1c6ff0,_0x17fe97[_0x7a6a('0x3e')]);var _0x69ff92={'where':_0x1c6ff0[_0x7a6a('0x3b')]};return db['Variable'][_0x7a6a('0x1c')](_0x69ff92)['then'](function(_0x5fd6a0){_0x4f09cf[_0x7a6a('0x1c')]=_0x5fd6a0;if(_0x17fe97[_0x7a6a('0x30')][_0x7a6a('0x3f')]){_0x1c6ff0['include']=[{'all':!![]}];}return db[_0x7a6a('0x40')][_0x7a6a('0x41')](_0x1c6ff0);})[_0x7a6a('0x23')](function(_0x151792){_0x4f09cf['rows']=_0x151792;return _0x4f09cf;})[_0x7a6a('0x23')](respondWithFilteredResult(_0x426ab4,_0x1c6ff0))['catch'](handleError(_0x426ab4,null));};exports[_0x7a6a('0x42')]=function(_0x596d91,_0x1599ef){var _0x41eff5={'raw':!![],'where':{'id':_0x596d91[_0x7a6a('0x43')]['id']}},_0x495679={};_0x495679[_0x7a6a('0x2f')]=_['keys'](db[_0x7a6a('0x40')][_0x7a6a('0x2c')]);_0x495679[_0x7a6a('0x30')]=_[_0x7a6a('0x31')](_0x596d91['query']);_0x495679[_0x7a6a('0x32')]=_[_0x7a6a('0x34')](_0x495679[_0x7a6a('0x2f')],_0x495679[_0x7a6a('0x30')]);_0x41eff5[_0x7a6a('0x33')]=_[_0x7a6a('0x34')](_0x495679[_0x7a6a('0x2f')],qs[_0x7a6a('0x35')](_0x596d91[_0x7a6a('0x30')][_0x7a6a('0x35')]));_0x41eff5[_0x7a6a('0x33')]=_0x41eff5[_0x7a6a('0x33')]['length']?_0x41eff5[_0x7a6a('0x33')]:_0x495679[_0x7a6a('0x2f')];if(_0x596d91['query']['includeAll']){_0x41eff5[_0x7a6a('0x44')]=[{'all':!![]}];}_0x41eff5=_[_0x7a6a('0x3d')]({},_0x41eff5,_0x596d91['options']);return db['Variable'][_0x7a6a('0x45')](_0x41eff5)[_0x7a6a('0x23')](handleEntityNotFound(_0x1599ef,null))[_0x7a6a('0x23')](respondWithResult(_0x1599ef,null))[_0x7a6a('0x46')](handleError(_0x1599ef,null));};exports[_0x7a6a('0x47')]=function(_0x2af36b,_0x512523){return db[_0x7a6a('0x40')][_0x7a6a('0x47')](_0x2af36b[_0x7a6a('0x48')],{})[_0x7a6a('0x23')](function(_0x47d64c){var _0x322f82=_0x2af36b[_0x7a6a('0x49')]['get']({'plain':!![]});if(!_0x322f82)throw new Error(_0x7a6a('0x4a'));if(_0x322f82[_0x7a6a('0x4b')]===_0x7a6a('0x49')){var _0x2c777a=_0x47d64c[_0x7a6a('0x24')]({'plain':!![]});var _0x205919='Variables';return db['UserProfileSection'][_0x7a6a('0x45')]({'where':{'name':_0x205919,'userProfileId':_0x322f82[_0x7a6a('0x4c')]},'raw':!![]})['then'](function(_0x5a8fbd){if(_0x5a8fbd&&_0x5a8fbd[_0x7a6a('0x4d')]===0x0){return db[_0x7a6a('0x26')]['create']({'name':_0x2c777a[_0x7a6a('0x29')],'resourceId':_0x2c777a['id'],'type':_0x5a8fbd['name'],'sectionId':_0x5a8fbd['id']},{})[_0x7a6a('0x23')](function(){return _0x47d64c;});}else{return _0x47d64c;}})[_0x7a6a('0x46')](function(_0x453391){logger['error'](_0x7a6a('0x4e'),_0x453391);throw _0x453391;});}return _0x47d64c;})[_0x7a6a('0x23')](respondWithResult(_0x512523,0xc9))[_0x7a6a('0x46')](handleError(_0x512523,null));};exports['update']=function(_0x4ae468,_0x347d49){if(_0x4ae468[_0x7a6a('0x48')]['id']){delete _0x4ae468['body']['id'];}return db['Variable'][_0x7a6a('0x45')]({'where':{'id':_0x4ae468[_0x7a6a('0x43')]['id']}})[_0x7a6a('0x23')](handleEntityNotFound(_0x347d49,null))[_0x7a6a('0x23')](saveUpdates(_0x4ae468['body'],null))[_0x7a6a('0x23')](respondWithResult(_0x347d49,null))[_0x7a6a('0x46')](handleError(_0x347d49,null));};exports[_0x7a6a('0x4f')]=function(_0xb6a744,_0x17ef61){return db[_0x7a6a('0x40')][_0x7a6a('0x45')]({'where':{'id':_0xb6a744[_0x7a6a('0x43')]['id']}})[_0x7a6a('0x23')](handleEntityNotFound(_0x17ef61,null))[_0x7a6a('0x23')](removeEntity(_0x17ef61,null))[_0x7a6a('0x46')](handleError(_0x17ef61,null));};
\ No newline at end of file
index c739a6b..c0c659f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe30a=['api','bluebird','request-promise','path','rimraf','../../config/environment','define','Variable','tools_variables','lodash','util'];(function(_0x38608d,_0x4c341b){var _0x30170a=function(_0x98feef){while(--_0x98feef){_0x38608d['push'](_0x38608d['shift']());}};_0x30170a(++_0x4c341b);}(_0xe30a,0x1ab));var _0xae30=function(_0xde3fa0,_0x3b5095){_0xde3fa0=_0xde3fa0-0x0;var _0x159c96=_0xe30a[_0xde3fa0];return _0x159c96;};'use strict';var _=require(_0xae30('0x0'));var util=require(_0xae30('0x1'));var logger=require('../../config/logger')(_0xae30('0x2'));var moment=require('moment');var BPromise=require(_0xae30('0x3'));var rp=require(_0xae30('0x4'));var fs=require('fs');var path=require(_0xae30('0x5'));var rimraf=require(_0xae30('0x6'));var config=require(_0xae30('0x7'));var attributes=require('./variable.attributes');module['exports']=function(_0x4a88ad,_0xbd1092){return _0x4a88ad[_0xae30('0x8')](_0xae30('0x9'),attributes,{'tableName':_0xae30('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa738=['tools_variables','lodash','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','exports','define','Variable'];(function(_0x3cba93,_0x5c2fd8){var _0x4a2991=function(_0x3cf95b){while(--_0x3cf95b){_0x3cba93['push'](_0x3cba93['shift']());}};_0x4a2991(++_0x5c2fd8);}(_0xa738,0x145));var _0x8a73=function(_0x46a884,_0x170f37){_0x46a884=_0x46a884-0x0;var _0x40e146=_0xa738[_0x46a884];return _0x40e146;};'use strict';var _=require(_0x8a73('0x0'));var util=require(_0x8a73('0x1'));var logger=require(_0x8a73('0x2'))(_0x8a73('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x8a73('0x4'));var fs=require('fs');var path=require(_0x8a73('0x5'));var rimraf=require(_0x8a73('0x6'));var config=require(_0x8a73('0x7'));var attributes=require('./variable.attributes');module[_0x8a73('0x8')]=function(_0x2bc8e4,_0x565c93){return _0x2bc8e4[_0x8a73('0x9')](_0x8a73('0xa'),attributes,{'tableName':_0x8a73('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f0400bc..a099d08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fbe=['stringify','error','code','message','result','catch','Variable','find','options','where','attributes','include','map','model','info','ShowVariable','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s'];(function(_0x2bc828,_0x4e686f){var _0x5d5656=function(_0x297b33){while(--_0x297b33){_0x2bc828['push'](_0x2bc828['shift']());}};_0x5d5656(++_0x4e686f);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x17325e,_0x5863f2){_0x17325e=_0x17325e-0x0;var _0x51062a=_0x7fbe[_0x17325e];return _0x51062a;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe7fb('0x0'));var BPromise=require(_0xe7fb('0x1'));var rs=require(_0xe7fb('0x2'));var fs=require('fs');var Redis=require(_0xe7fb('0x3'));var db=require(_0xe7fb('0x4'))['db'];var utils=require(_0xe7fb('0x5'));var logger=require(_0xe7fb('0x6'))(_0xe7fb('0x7'));var config=require(_0xe7fb('0x8'));var jayson=require(_0xe7fb('0x9'));var client=jayson[_0xe7fb('0xa')][_0xe7fb('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x24cd67,_0x1f943f,_0x5ad75b){return new BPromise(function(_0x213ebc,_0x228f6b){return client[_0xe7fb('0xc')](_0x24cd67,_0x5ad75b)[_0xe7fb('0xd')](function(_0x4ba197){logger['info'](_0xe7fb('0xe'),_0x1f943f,_0xe7fb('0xf'));logger[_0xe7fb('0x10')](_0xe7fb('0x11'),_0x1f943f,_0xe7fb('0xf'),JSON[_0xe7fb('0x12')](_0x4ba197));if(_0x4ba197[_0xe7fb('0x13')]){if(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x14')]===0x1f4){logger[_0xe7fb('0x13')](_0xe7fb('0xe'),_0x1f943f,_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);return _0x228f6b(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);}logger['error'](_0xe7fb('0xe'),_0x1f943f,_0x4ba197[_0xe7fb('0x13')]['message']);return _0x213ebc(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);}else{logger['info'](_0xe7fb('0xe'),_0x1f943f,'request\x20sent');_0x213ebc(_0x4ba197[_0xe7fb('0x16')][_0xe7fb('0x15')]);}})[_0xe7fb('0x17')](function(_0x17e8a8){logger['error'](_0xe7fb('0xe'),_0x1f943f,_0x17e8a8);_0x228f6b(_0x17e8a8);});});}exports['ShowVariable']=function(_0x293a47){var _0x546463=this;return new Promise(function(_0x1e77fd,_0x4708f7){return db[_0xe7fb('0x18')][_0xe7fb('0x19')]({'raw':_0x293a47['options']?_0x293a47[_0xe7fb('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x293a47[_0xe7fb('0x1a')]?_0x293a47['options'][_0xe7fb('0x1b')]||null:null,'attributes':_0x293a47['options']?_0x293a47[_0xe7fb('0x1a')][_0xe7fb('0x1c')]||null:null,'include':_0x293a47['options']?_0x293a47[_0xe7fb('0x1a')][_0xe7fb('0x1d')]?_[_0xe7fb('0x1e')](_0x293a47['options'][_0xe7fb('0x1d')],function(_0x469ead){return{'model':db[_0x469ead['model']],'as':_0x469ead['as'],'attributes':_0x469ead['attributes'],'include':_0x469ead['include']?_[_0xe7fb('0x1e')](_0x469ead['include'],function(_0x49b219){return{'model':db[_0x49b219[_0xe7fb('0x1f')]],'as':_0x49b219['as'],'attributes':_0x49b219[_0xe7fb('0x1c')],'include':_0x49b219[_0xe7fb('0x1d')]?_['map'](_0x49b219[_0xe7fb('0x1d')],function(_0x2b69c4){return{'model':db[_0x2b69c4[_0xe7fb('0x1f')]],'as':_0x2b69c4['as'],'attributes':_0x2b69c4[_0xe7fb('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xe7fb('0xd')](function(_0x16237a){logger[_0xe7fb('0x20')]('ShowVariable',_0x293a47);logger['debug'](_0xe7fb('0x21'),_0x293a47,JSON[_0xe7fb('0x12')](_0x16237a));_0x1e77fd(_0x16237a);})[_0xe7fb('0x17')](function(_0x4fd290){logger[_0xe7fb('0x13')](_0xe7fb('0x21'),_0x4fd290[_0xe7fb('0x15')],_0x293a47);_0x4708f7(_0x546463[_0xe7fb('0x13')](0x1f4,_0x4fd290[_0xe7fb('0x15')]));});});};
\ No newline at end of file
+var _0x7217=['where','attributes','map','include','model','ShowVariable','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Variable,\x20%s,\x20%s','debug','Variable,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','Variable','find','options','raw'];(function(_0x368eba,_0x13e967){var _0x24d46f=function(_0x12d01f){while(--_0x12d01f){_0x368eba['push'](_0x368eba['shift']());}};_0x24d46f(++_0x13e967);}(_0x7217,0x19e));var _0x7721=function(_0x4e1d03,_0x786f3a){_0x4e1d03=_0x4e1d03-0x0;var _0x362d4b=_0x7217[_0x4e1d03];return _0x362d4b;};'use strict';var _=require(_0x7721('0x0'));var util=require('util');var moment=require(_0x7721('0x1'));var BPromise=require(_0x7721('0x2'));var rs=require(_0x7721('0x3'));var fs=require('fs');var Redis=require(_0x7721('0x4'));var db=require(_0x7721('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x7721('0x6'));var config=require(_0x7721('0x7'));var jayson=require(_0x7721('0x8'));var client=jayson[_0x7721('0x9')][_0x7721('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xf7ff37,_0x18ab6b,_0x21f680){return new BPromise(function(_0x225610,_0x2f99ed){return client[_0x7721('0xb')](_0xf7ff37,_0x21f680)[_0x7721('0xc')](function(_0xfa8835){logger[_0x7721('0xd')](_0x7721('0xe'),_0x18ab6b,'request\x20sent');logger[_0x7721('0xf')](_0x7721('0x10'),_0x18ab6b,_0x7721('0x11'),JSON[_0x7721('0x12')](_0xfa8835));if(_0xfa8835[_0x7721('0x13')]){if(_0xfa8835[_0x7721('0x13')][_0x7721('0x14')]===0x1f4){logger[_0x7721('0x13')]('Variable,\x20%s,\x20%s',_0x18ab6b,_0xfa8835[_0x7721('0x13')][_0x7721('0x15')]);return _0x2f99ed(_0xfa8835['error'][_0x7721('0x15')]);}logger[_0x7721('0x13')](_0x7721('0xe'),_0x18ab6b,_0xfa8835[_0x7721('0x13')]['message']);return _0x225610(_0xfa8835[_0x7721('0x13')][_0x7721('0x15')]);}else{logger['info']('Variable,\x20%s,\x20%s',_0x18ab6b,'request\x20sent');_0x225610(_0xfa8835[_0x7721('0x16')][_0x7721('0x15')]);}})[_0x7721('0x17')](function(_0x32550d){logger['error'](_0x7721('0xe'),_0x18ab6b,_0x32550d);_0x2f99ed(_0x32550d);});});}exports['ShowVariable']=function(_0x3fc09e){var _0x5cb0e6=this;return new Promise(function(_0xfec626,_0x4e96fb){return db[_0x7721('0x18')][_0x7721('0x19')]({'raw':_0x3fc09e[_0x7721('0x1a')]?_0x3fc09e[_0x7721('0x1a')][_0x7721('0x1b')]===undefined?!![]:![]:!![],'where':_0x3fc09e[_0x7721('0x1a')]?_0x3fc09e[_0x7721('0x1a')][_0x7721('0x1c')]||null:null,'attributes':_0x3fc09e['options']?_0x3fc09e[_0x7721('0x1a')][_0x7721('0x1d')]||null:null,'include':_0x3fc09e[_0x7721('0x1a')]?_0x3fc09e[_0x7721('0x1a')]['include']?_[_0x7721('0x1e')](_0x3fc09e['options'][_0x7721('0x1f')],function(_0x288e3a){return{'model':db[_0x288e3a[_0x7721('0x20')]],'as':_0x288e3a['as'],'attributes':_0x288e3a[_0x7721('0x1d')],'include':_0x288e3a[_0x7721('0x1f')]?_[_0x7721('0x1e')](_0x288e3a[_0x7721('0x1f')],function(_0x5b4d74){return{'model':db[_0x5b4d74[_0x7721('0x20')]],'as':_0x5b4d74['as'],'attributes':_0x5b4d74[_0x7721('0x1d')],'include':_0x5b4d74[_0x7721('0x1f')]?_[_0x7721('0x1e')](_0x5b4d74[_0x7721('0x1f')],function(_0x16355a){return{'model':db[_0x16355a[_0x7721('0x20')]],'as':_0x16355a['as'],'attributes':_0x16355a[_0x7721('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x7721('0xc')](function(_0x52316e){logger[_0x7721('0xd')]('ShowVariable',_0x3fc09e);logger['debug'](_0x7721('0x21'),_0x3fc09e,JSON[_0x7721('0x12')](_0x52316e));_0xfec626(_0x52316e);})[_0x7721('0x17')](function(_0x158d98){logger[_0x7721('0x13')](_0x7721('0x21'),_0x158d98[_0x7721('0x15')],_0x3fc09e);_0x4e96fb(_0x5cb0e6[_0x7721('0x13')](0x1f4,_0x158d98['message']));});});};
\ No newline at end of file
index c8f15ba..23b4299 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2143=['isAuthenticated','canUpdate','fetch','/reset','reset','/pull','pull','/migrations','migrations','Router','./version.controller','get','index'];(function(_0x29d915,_0x54a040){var _0x160f86=function(_0x237dfa){while(--_0x237dfa){_0x29d915['push'](_0x29d915['shift']());}};_0x160f86(++_0x54a040);}(_0x2143,0x71));var _0x3214=function(_0x4841da,_0x1a5d31){_0x4841da=_0x4841da-0x0;var _0x8befd1=_0x2143[_0x4841da];return _0x8befd1;};'use strict';var express=require('express');var router=express[_0x3214('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0x3214('0x1'));router[_0x3214('0x2')]('/',controller[_0x3214('0x3')]);router['get']('/fetch',auth[_0x3214('0x4')](),auth[_0x3214('0x5')](),controller[_0x3214('0x6')]);router[_0x3214('0x2')](_0x3214('0x7'),auth['isAuthenticated'](),auth[_0x3214('0x5')](),controller[_0x3214('0x8')]);router[_0x3214('0x2')](_0x3214('0x9'),auth[_0x3214('0x4')](),auth[_0x3214('0x5')](),controller[_0x3214('0xa')]);router[_0x3214('0x2')]('/restart',auth[_0x3214('0x4')](),controller['restart']);router[_0x3214('0x2')](_0x3214('0xb'),controller[_0x3214('0xc')]);module['exports']=router;
\ No newline at end of file
+var _0x10df=['/restart','restart','/migrations','migrations','express','Router','./version.controller','get','index','isAuthenticated','canUpdate','/reset','/pull','pull'];(function(_0x3835e4,_0x1957d9){var _0x3bdd97=function(_0x436f0f){while(--_0x436f0f){_0x3835e4['push'](_0x3835e4['shift']());}};_0x3bdd97(++_0x1957d9);}(_0x10df,0x18c));var _0xf10d=function(_0x457bf8,_0x209a0a){_0x457bf8=_0x457bf8-0x0;var _0x919f94=_0x10df[_0x457bf8];return _0x919f94;};'use strict';var express=require(_0xf10d('0x0'));var router=express[_0xf10d('0x1')]();var auth=require('../../components/auth/service');var controller=require(_0xf10d('0x2'));router[_0xf10d('0x3')]('/',controller[_0xf10d('0x4')]);router['get']('/fetch',auth[_0xf10d('0x5')](),auth[_0xf10d('0x6')](),controller['fetch']);router[_0xf10d('0x3')](_0xf10d('0x7'),auth['isAuthenticated'](),auth['canUpdate'](),controller['reset']);router[_0xf10d('0x3')](_0xf10d('0x8'),auth['isAuthenticated'](),auth['canUpdate'](),controller[_0xf10d('0x9')]);router[_0xf10d('0x3')](_0xf10d('0xa'),auth['isAuthenticated'](),controller[_0xf10d('0xb')]);router['get'](_0xf10d('0xc'),controller[_0xf10d('0xd')]);module['exports']=router;
\ No newline at end of file
index f2244ad..2ebec64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84d8=['Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','last','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','path','lodash','pkginfo','version','compare-versions','child_process','exec','../../mysqldb','../../config/environment','../../config/pm2','../../config/logger','simple-git','index','exports','query','latest','fetch','tags','2.0.0','status','json','master','error','git\x20fetch','git\x20fetch\x20origin\x20master','reset','--hard','FETCH_HEAD','info','git\x20reset\x20--hard\x20FETCH_HEAD','git\x20reset\x20--hard','pull','restart','motion2','then','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','migrations','readdirSync','join','server','length','replace','.js','push','sort','sequelize','Migration'];(function(_0x52bb4e,_0x23c932){var _0x3df19c=function(_0x3f54bd){while(--_0x3f54bd){_0x52bb4e['push'](_0x52bb4e['shift']());}};_0x3df19c(++_0x23c932);}(_0x84d8,0xa7));var _0x884d=function(_0x57ac7c,_0x13eb14){_0x57ac7c=_0x57ac7c-0x0;var _0x52d72c=_0x84d8[_0x57ac7c];return _0x52d72c;};'use strict';var Umzug=require(_0x884d('0x0'));var path=require(_0x884d('0x1'));var fs=require('fs');var _=require(_0x884d('0x2'));var pkginfo=require(_0x884d('0x3'))(module,_0x884d('0x4'));var compareVersions=require(_0x884d('0x5'));var exec=require(_0x884d('0x6'))[_0x884d('0x7')];var db=require(_0x884d('0x8'))['db'];var config=require(_0x884d('0x9'));var pm2=require(_0x884d('0xa'));var logger=require(_0x884d('0xb'))('update');var git=require(_0x884d('0xc'))(config['root']);exports[_0x884d('0xd')]=function(_0x76c4e1,_0x2f8d5c){var _0x3649b5={'current':module[_0x884d('0xe')][_0x884d('0x4')],'phonebar':0x2};if(_0x76c4e1[_0x884d('0xf')]&&_0x76c4e1[_0x884d('0xf')][_0x884d('0x10')]){return git[_0x884d('0x11')]()[_0x884d('0x12')](function(_0x28227b,_0x44283b){_0x3649b5[_0x884d('0x10')]=(_0x28227b?module[_0x884d('0xe')][_0x884d('0x4')]:_0x44283b[_0x884d('0x10')])||_0x884d('0x13');return _0x2f8d5c['status'](0xc8)['json'](_0x3649b5);});}else{return _0x2f8d5c[_0x884d('0x14')](0xc8)[_0x884d('0x15')](_0x3649b5);}};exports['fetch']=function(_0x4bebb5,_0x5820bb){return git['fetch'](['origin',_0x884d('0x16')],function(_0x2ff807){if(_0x2ff807){logger[_0x884d('0x17')](_0x2ff807);return _0x5820bb[_0x884d('0x14')](0x1f4)[_0x884d('0x15')](_0x2ff807);}logger['info'](_0x884d('0x18'));return _0x5820bb['status'](0xc8)[_0x884d('0x15')]({'output':_0x884d('0x19')});});};exports[_0x884d('0x1a')]=function(_0x563480,_0x1f3219){return git[_0x884d('0x1a')]([_0x884d('0x1b'),_0x884d('0x1c')],function(_0x381a63){if(_0x381a63){logger[_0x884d('0x17')](_0x381a63);return _0x1f3219[_0x884d('0x14')](0x1f4)['json'](_0x381a63);}logger[_0x884d('0x1d')](_0x884d('0x1e'));return _0x1f3219[_0x884d('0x14')](0xc8)[_0x884d('0x15')]({'output':_0x884d('0x1f')});});};exports[_0x884d('0x20')]=function(_0x583722,_0x172bfc){exec('npm\x20install\x20--production',function(_0x5f1490,_0x1e6842,_0x3aec57){logger[_0x884d('0x1d')](_0x1e6842);logger[_0x884d('0x1d')](_0x3aec57);if(_0x5f1490){logger[_0x884d('0x17')](_0x5f1490);return _0x172bfc['status'](0x1f4)[_0x884d('0x15')](_0x5f1490);}return _0x172bfc[_0x884d('0x14')](0xc8)[_0x884d('0x15')]({'output':_0x1e6842});});};exports[_0x884d('0x21')]=function(_0xd95f40,_0x352fe5){return pm2[_0x884d('0x21')](_0x884d('0x22'))[_0x884d('0x23')](function(_0x5a26d0){logger[_0x884d('0x1d')](_0x884d('0x24'),_0x5a26d0);return _0x352fe5[_0x884d('0x14')](0xc8)[_0x884d('0x15')]({'output':_0x884d('0x25')});})['catch'](function(_0x23a464){logger['error'](_0x23a464);return _0x352fe5[_0x884d('0x14')](0x1f4)['json'](_0x23a464);});};exports[_0x884d('0x26')]=function(_0x2f49ab,_0x44cdaf){var _0x704491=fs[_0x884d('0x27')](path[_0x884d('0x28')](config['root'],_0x884d('0x29'),_0x884d('0x26')));var _0x149b3f=[];for(var _0x437a6e=0x0;_0x437a6e<_0x704491[_0x884d('0x2a')];_0x437a6e++){var _0x510b4b=_0x704491[_0x437a6e][_0x884d('0x2b')](_0x884d('0x2c'),'');if(compareVersions(module['exports'][_0x884d('0x4')],_0x510b4b)===-0x1){_0x149b3f[_0x884d('0x2d')](_0x510b4b);}}if(_0x149b3f[_0x884d('0x2a')]){var _0x4d892f=_0x149b3f[_0x884d('0x2e')](compareVersions);var _0x4f1e73=new Umzug({'storage':_0x884d('0x2f'),'storageOptions':{'model':db[_0x884d('0x30')],'modelName':'Migration','columnName':_0x884d('0x4')},'migrations':{'params':[db[_0x884d('0x2f')]['getQueryInterface'](),db[_0x884d('0x2f')]['constructor'],function(){throw new Error('Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.');}],'path':path[_0x884d('0x28')](config['root'],_0x884d('0x29'),'migrations'),'pattern':/\.js$/}});_0x4f1e73['up']({'migrations':_['map'](_0x4d892f,function(_0x2f0c29){return _0x2f0c29+_0x884d('0x2c');})})[_0x884d('0x23')](function(){return _0x44cdaf[_0x884d('0x14')](0xc8)[_0x884d('0x15')]({'output':_0x884d('0x31')+module[_0x884d('0xe')][_0x884d('0x4')]+_0x884d('0x32')+_[_0x884d('0x33')](_0x4d892f),'migrations':_['join'](_0x4d892f)});})['catch'](function(_0x3c4244){if(_0x3c4244 instanceof db[_0x884d('0x2f')][_0x884d('0x34')]){return _0x44cdaf[_0x884d('0x14')](0xc8)[_0x884d('0x15')]({'output':_0x884d('0x35')});}else{return _0x44cdaf[_0x884d('0x14')](0x1f4)[_0x884d('0x15')](_0x3c4244);}});}else{return _0x44cdaf['status'](0xc8)['json']({'output':'Database\x20already\x20up-to-date'});}};
\ No newline at end of file
+var _0x8e30=['query','latest','fetch','tags','2.0.0','status','json','origin','error','info','git\x20fetch','reset','FETCH_HEAD','git\x20reset\x20--hard\x20FETCH_HEAD','pull','npm\x20install\x20--production','motion2','then','catch','readdirSync','server','length','.js','exports','push','sort','sequelize','getQueryInterface','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','join','migrations','map','Database\x20migrated\x20successfully\x20from\x20version\x20','last','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','path','pkginfo','version','compare-versions','child_process','exec','../../config/environment','../../config/pm2','../../config/logger','update','simple-git','root','index'];(function(_0x340543,_0x12b328){var _0x29ce92=function(_0x1c3369){while(--_0x1c3369){_0x340543['push'](_0x340543['shift']());}};_0x29ce92(++_0x12b328);}(_0x8e30,0x124));var _0x08e3=function(_0x476531,_0x2e34cf){_0x476531=_0x476531-0x0;var _0x482cba=_0x8e30[_0x476531];return _0x482cba;};'use strict';var Umzug=require(_0x08e3('0x0'));var path=require(_0x08e3('0x1'));var fs=require('fs');var _=require('lodash');var pkginfo=require(_0x08e3('0x2'))(module,_0x08e3('0x3'));var compareVersions=require(_0x08e3('0x4'));var exec=require(_0x08e3('0x5'))[_0x08e3('0x6')];var db=require('../../mysqldb')['db'];var config=require(_0x08e3('0x7'));var pm2=require(_0x08e3('0x8'));var logger=require(_0x08e3('0x9'))(_0x08e3('0xa'));var git=require(_0x08e3('0xb'))(config[_0x08e3('0xc')]);exports[_0x08e3('0xd')]=function(_0x5e6ee0,_0x1cde44){var _0x2d70b4={'current':module['exports'][_0x08e3('0x3')],'phonebar':0x2};if(_0x5e6ee0[_0x08e3('0xe')]&&_0x5e6ee0[_0x08e3('0xe')][_0x08e3('0xf')]){return git[_0x08e3('0x10')]()[_0x08e3('0x11')](function(_0x24e619,_0x27338a){_0x2d70b4['latest']=(_0x24e619?module['exports'][_0x08e3('0x3')]:_0x27338a[_0x08e3('0xf')])||_0x08e3('0x12');return _0x1cde44[_0x08e3('0x13')](0xc8)[_0x08e3('0x14')](_0x2d70b4);});}else{return _0x1cde44[_0x08e3('0x13')](0xc8)[_0x08e3('0x14')](_0x2d70b4);}};exports[_0x08e3('0x10')]=function(_0xf4cac1,_0x4ac928){return git['fetch']([_0x08e3('0x15'),'master'],function(_0x30d3eb){if(_0x30d3eb){logger[_0x08e3('0x16')](_0x30d3eb);return _0x4ac928[_0x08e3('0x13')](0x1f4)[_0x08e3('0x14')](_0x30d3eb);}logger[_0x08e3('0x17')](_0x08e3('0x18'));return _0x4ac928['status'](0xc8)['json']({'output':'git\x20fetch\x20origin\x20master'});});};exports['reset']=function(_0x244a99,_0x25e78e){return git[_0x08e3('0x19')](['--hard',_0x08e3('0x1a')],function(_0xf8d3e7){if(_0xf8d3e7){logger[_0x08e3('0x16')](_0xf8d3e7);return _0x25e78e[_0x08e3('0x13')](0x1f4)['json'](_0xf8d3e7);}logger[_0x08e3('0x17')](_0x08e3('0x1b'));return _0x25e78e[_0x08e3('0x13')](0xc8)['json']({'output':'git\x20reset\x20--hard'});});};exports[_0x08e3('0x1c')]=function(_0x27cc50,_0x380081){exec(_0x08e3('0x1d'),function(_0x1dc0b9,_0x3d8b71,_0x25a262){logger[_0x08e3('0x17')](_0x3d8b71);logger[_0x08e3('0x17')](_0x25a262);if(_0x1dc0b9){logger[_0x08e3('0x16')](_0x1dc0b9);return _0x380081[_0x08e3('0x13')](0x1f4)['json'](_0x1dc0b9);}return _0x380081[_0x08e3('0x13')](0xc8)[_0x08e3('0x14')]({'output':_0x3d8b71});});};exports['restart']=function(_0x279f5f,_0x308174){return pm2['restart'](_0x08e3('0x1e'))[_0x08e3('0x1f')](function(_0x4c0cab){logger[_0x08e3('0x17')]('pm2\x20restart\x20motion\x20%s',_0x4c0cab);return _0x308174[_0x08e3('0x13')](0xc8)[_0x08e3('0x14')]({'output':'Your\x20system\x20has\x20been\x20restart\x20successfully'});})[_0x08e3('0x20')](function(_0x39b618){logger[_0x08e3('0x16')](_0x39b618);return _0x308174[_0x08e3('0x13')](0x1f4)[_0x08e3('0x14')](_0x39b618);});};exports['migrations']=function(_0xcd9d24,_0x553975){var _0x35b175=fs[_0x08e3('0x21')](path['join'](config[_0x08e3('0xc')],_0x08e3('0x22'),'migrations'));var _0x1b137b=[];for(var _0x7a34eb=0x0;_0x7a34eb<_0x35b175[_0x08e3('0x23')];_0x7a34eb++){var _0x5ba201=_0x35b175[_0x7a34eb]['replace'](_0x08e3('0x24'),'');if(compareVersions(module[_0x08e3('0x25')][_0x08e3('0x3')],_0x5ba201)===-0x1){_0x1b137b[_0x08e3('0x26')](_0x5ba201);}}if(_0x1b137b[_0x08e3('0x23')]){var _0x4ff25a=_0x1b137b[_0x08e3('0x27')](compareVersions);var _0x38c694=new Umzug({'storage':_0x08e3('0x28'),'storageOptions':{'model':db['Migration'],'modelName':'Migration','columnName':_0x08e3('0x3')},'migrations':{'params':[db[_0x08e3('0x28')][_0x08e3('0x29')](),db[_0x08e3('0x28')][_0x08e3('0x2a')],function(){throw new Error(_0x08e3('0x2b'));}],'path':path[_0x08e3('0x2c')](config['root'],'server',_0x08e3('0x2d')),'pattern':/\.js$/}});_0x38c694['up']({'migrations':_[_0x08e3('0x2e')](_0x4ff25a,function(_0x38e432){return _0x38e432+_0x08e3('0x24');})})[_0x08e3('0x1f')](function(){return _0x553975[_0x08e3('0x13')](0xc8)[_0x08e3('0x14')]({'output':_0x08e3('0x2f')+module[_0x08e3('0x25')][_0x08e3('0x3')]+'\x20to\x20'+_[_0x08e3('0x30')](_0x4ff25a),'migrations':_[_0x08e3('0x2c')](_0x4ff25a)});})[_0x08e3('0x20')](function(_0x12ffc6){if(_0x12ffc6 instanceof db['sequelize'][_0x08e3('0x31')]){return _0x553975['status'](0xc8)[_0x08e3('0x14')]({'output':_0x08e3('0x32')});}else{return _0x553975[_0x08e3('0x13')](0x1f4)['json'](_0x12ffc6);}});}else{return _0x553975[_0x08e3('0x13')](0xc8)['json']({'output':_0x08e3('0x32')});}};
\ No newline at end of file
index f1ba26d..7fd062c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbca9=['put','update','delete','destroy','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','index','/describe','isAuthenticated','describe','/:id','post','create'];(function(_0x1688f6,_0x9ab079){var _0x144c86=function(_0x3e979e){while(--_0x3e979e){_0x1688f6['push'](_0x1688f6['shift']());}};_0x144c86(++_0x9ab079);}(_0xbca9,0x7d));var _0x9bca=function(_0x2c8a05,_0x294a27){_0x2c8a05=_0x2c8a05-0x0;var _0xbe0636=_0xbca9[_0x2c8a05];return _0xbe0636;};'use strict';var multer=require('multer');var util=require(_0x9bca('0x0'));var path=require(_0x9bca('0x1'));var timeout=require('connect-timeout');var express=require(_0x9bca('0x2'));var router=express[_0x9bca('0x3')]();var fs_extra=require(_0x9bca('0x4'));var auth=require(_0x9bca('0x5'));var interaction=require(_0x9bca('0x6'));var config=require('../../config/environment');var controller=require('./voiceAgentReport.controller');router[_0x9bca('0x7')]('/',auth['isAuthenticated'](),controller[_0x9bca('0x8')]);router[_0x9bca('0x7')](_0x9bca('0x9'),auth[_0x9bca('0xa')](),controller[_0x9bca('0xb')]);router[_0x9bca('0x7')](_0x9bca('0xc'),auth[_0x9bca('0xa')](),controller['show']);router[_0x9bca('0xd')]('/',auth[_0x9bca('0xa')](),controller[_0x9bca('0xe')]);router[_0x9bca('0xf')](_0x9bca('0xc'),auth[_0x9bca('0xa')](),controller[_0x9bca('0x10')]);router[_0x9bca('0x11')](_0x9bca('0xc'),auth[_0x9bca('0xa')](),controller[_0x9bca('0x12')]);module[_0x9bca('0x13')]=router;
\ No newline at end of file
+var _0xa739=['exports','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceAgentReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','put','update','delete','destroy'];(function(_0x529abc,_0x17b97e){var _0x453afa=function(_0x536263){while(--_0x536263){_0x529abc['push'](_0x529abc['shift']());}};_0x453afa(++_0x17b97e);}(_0xa739,0x1e1));var _0x9a73=function(_0x471fc4,_0x1c7033){_0x471fc4=_0x471fc4-0x0;var _0x3432e6=_0xa739[_0x471fc4];return _0x3432e6;};'use strict';var multer=require('multer');var util=require(_0x9a73('0x0'));var path=require('path');var timeout=require(_0x9a73('0x1'));var express=require(_0x9a73('0x2'));var router=express['Router']();var fs_extra=require(_0x9a73('0x3'));var auth=require(_0x9a73('0x4'));var interaction=require(_0x9a73('0x5'));var config=require('../../config/environment');var controller=require(_0x9a73('0x6'));router[_0x9a73('0x7')]('/',auth[_0x9a73('0x8')](),controller[_0x9a73('0x9')]);router[_0x9a73('0x7')](_0x9a73('0xa'),auth[_0x9a73('0x8')](),controller[_0x9a73('0xb')]);router['get'](_0x9a73('0xc'),auth['isAuthenticated'](),controller[_0x9a73('0xd')]);router[_0x9a73('0xe')]('/',auth[_0x9a73('0x8')](),controller['create']);router[_0x9a73('0xf')](_0x9a73('0xc'),auth['isAuthenticated'](),controller[_0x9a73('0x10')]);router[_0x9a73('0x11')](_0x9a73('0xc'),auth['isAuthenticated'](),controller[_0x9a73('0x12')]);module[_0x9a73('0x13')]=router;
\ No newline at end of file
index 8f55d0d..20d0480 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6146=['sequelize','STRING','DATE','INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED'];(function(_0x249662,_0x531a21){var _0x532ab5=function(_0xe92d4d){while(--_0xe92d4d){_0x249662['push'](_0x249662['shift']());}};_0x532ab5(++_0x531a21);}(_0x6146,0xba));var _0x6614=function(_0x74d38f,_0x3e0076){_0x74d38f=_0x74d38f-0x0;var _0x4ae1ba=_0x6146[_0x74d38f];return _0x4ae1ba;};'use strict';var Sequelize=require(_0x6614('0x0'));module['exports']={'type':{'type':Sequelize[_0x6614('0x1')]},'uniqueid':{'type':Sequelize[_0x6614('0x1')]},'calleridnum':{'type':Sequelize[_0x6614('0x1')]},'calleridname':{'type':Sequelize[_0x6614('0x1')]},'queue':{'type':Sequelize[_0x6614('0x1')]},'interface':{'type':Sequelize[_0x6614('0x1')]},'membername':{'type':Sequelize[_0x6614('0x1')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0x6614('0x2')]},'agentcompleteAt':{'type':Sequelize[_0x6614('0x2')]},'agentringnoanswerAt':{'type':Sequelize[_0x6614('0x2')]},'agentdumpAt':{'type':Sequelize[_0x6614('0x2')]},'holdtime':{'type':Sequelize[_0x6614('0x3')]},'agentcomplete':{'type':Sequelize[_0x6614('0x4')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x6614('0x4')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x6614('0x4')],'defaultValue':![]},'talktime':{'type':Sequelize[_0x6614('0x3')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x6614('0x3')]},'reason':{'type':Sequelize[_0x6614('0x1')]},'lastevent':{'type':Sequelize[_0x6614('0x1')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0x6614('0x3')]},'channelstatedesc':{'type':Sequelize[_0x6614('0x1')]},'connectedlinenum':{'type':Sequelize[_0x6614('0x1')]},'connectedlinename':{'type':Sequelize[_0x6614('0x1')]},'language':{'type':Sequelize[_0x6614('0x1')]},'accountcode':{'type':Sequelize[_0x6614('0x1')]},'context':{'type':Sequelize[_0x6614('0x1')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x6614('0x1')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x6614('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0x6614('0x1')]},'destcalleridnum':{'type':Sequelize[_0x6614('0x1')]},'destcalleridname':{'type':Sequelize[_0x6614('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0x6614('0x1')]},'destconnectedlinename':{'type':Sequelize[_0x6614('0x1')]},'destlanguage':{'type':Sequelize[_0x6614('0x1')]},'destaccountcode':{'type':Sequelize[_0x6614('0x1')]},'destcontext':{'type':Sequelize[_0x6614('0x1')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize[_0x6614('0x1')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x6614('0x1')]},'answeredelsewheremembername':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0x6614('0x4')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x6614('0x1')],'comment':_0x6614('0x5')},'transferexten':{'type':Sequelize['STRING']},'transferuniqueid':{'type':Sequelize[_0x6614('0x1')]},'agententerreason':{'type':Sequelize[_0x6614('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x7275=['FORWARD,\x20BLIND,\x20ATTENDED','sequelize','exports','STRING','DATE','INTEGER','BOOLEAN'];(function(_0x396188,_0x4e0289){var _0x285f62=function(_0x3ede0f){while(--_0x3ede0f){_0x396188['push'](_0x396188['shift']());}};_0x285f62(++_0x4e0289);}(_0x7275,0x143));var _0x5727=function(_0x516247,_0x5466ca){_0x516247=_0x516247-0x0;var _0x4b8122=_0x7275[_0x516247];return _0x4b8122;};'use strict';var Sequelize=require(_0x5727('0x0'));module[_0x5727('0x1')]={'type':{'type':Sequelize[_0x5727('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x5727('0x2')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x5727('0x2')]},'interface':{'type':Sequelize[_0x5727('0x2')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0x5727('0x3')]},'agentconnectAt':{'type':Sequelize[_0x5727('0x3')]},'agentcompleteAt':{'type':Sequelize['DATE']},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdumpAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0x5727('0x4')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x5727('0x5')],'defaultValue':![]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'talktime':{'type':Sequelize[_0x5727('0x4')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x5727('0x4')]},'reason':{'type':Sequelize[_0x5727('0x2')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x5727('0x2')]},'channelstate':{'type':Sequelize[_0x5727('0x4')]},'channelstatedesc':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x5727('0x2')]},'connectedlinename':{'type':Sequelize[_0x5727('0x2')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x5727('0x2')]},'context':{'type':Sequelize[_0x5727('0x2')]},'exten':{'type':Sequelize[_0x5727('0x2')]},'priority':{'type':Sequelize[_0x5727('0x2')]},'destchannel':{'type':Sequelize[_0x5727('0x2')]},'destchannelstate':{'type':Sequelize[_0x5727('0x4')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0x5727('0x2')]},'destcalleridname':{'type':Sequelize[_0x5727('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x5727('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x5727('0x2')]},'destlanguage':{'type':Sequelize[_0x5727('0x2')]},'destaccountcode':{'type':Sequelize[_0x5727('0x2')]},'destcontext':{'type':Sequelize[_0x5727('0x2')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0x5727('0x2')]},'destuniqueid':{'type':Sequelize[_0x5727('0x2')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x5727('0x2')]},'answeredelsewheremembername':{'type':Sequelize[_0x5727('0x2')]},'transfer':{'type':Sequelize[_0x5727('0x5')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x5727('0x2')],'comment':_0x5727('0x6')},'transferexten':{'type':Sequelize['STRING']},'transferuniqueid':{'type':Sequelize[_0x5727('0x2')]},'agententerreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index b5f1e5e..50bf8b8 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(_0x2080a3,_0x48acfa){var _0x8d7d17=function(_0x2dbc06){while(--_0x2dbc06){_0x2080a3['push'](_0x2080a3['shift']());}};_0x8d7d17(++_0x48acfa);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0xa9e0[_0x3c4737];return _0x2bb926;};'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(_0x5a3cf0,_0x160a68){var _0x5a64ee=function(_0x34cd1d){while(--_0x34cd1d){_0x5a3cf0['push'](_0x5a3cf0['shift']());}};_0x5a64ee(++_0x160a68);}(_0xa9e0,0x123));var _0x0a9e=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0xa9e0[_0x411add];return _0x238242;};'use strict';var emlformat=require(_0x0a9e('0x0'));var rimraf=require(_0x0a9e('0x1'));var zipdir=require(_0x0a9e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0a9e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0a9e('0x4'));var util=require(_0x0a9e('0x5'));var path=require(_0x0a9e('0x6'));var sox=require(_0x0a9e('0x7'));var csv=require(_0x0a9e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0a9e('0x9'));var _=require(_0x0a9e('0xa'));var squel=require(_0x0a9e('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0a9e('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0a9e('0xd'));var Redis=require(_0x0a9e('0xe'));var authService=require(_0x0a9e('0xf'));var qs=require(_0x0a9e('0x10'));var as=require(_0x0a9e('0x11'));var hardwareService=require(_0x0a9e('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0a9e('0x13'));var db=require(_0x0a9e('0x14'))['db'];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 55f3e0b..cc081d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e85=['report_agent','uniqueid','destuniqueid','lodash','util','api','moment','rimraf','./voiceAgentReport.attributes','exports','VoiceAgentReport'];(function(_0xefd4ca,_0xa06a7){var _0x3c93d8=function(_0x28f9c4){while(--_0x28f9c4){_0xefd4ca['push'](_0xefd4ca['shift']());}};_0x3c93d8(++_0xa06a7);}(_0x0e85,0x7c));var _0x50e8=function(_0x26f702,_0x3919bf){_0x26f702=_0x26f702-0x0;var _0x11417d=_0x0e85[_0x26f702];return _0x11417d;};'use strict';var _=require(_0x50e8('0x0'));var util=require(_0x50e8('0x1'));var logger=require('../../config/logger')(_0x50e8('0x2'));var moment=require(_0x50e8('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x50e8('0x4'));var config=require('../../config/environment');var attributes=require(_0x50e8('0x5'));module[_0x50e8('0x6')]=function(_0xe3151e,_0xfde42){return _0xe3151e['define'](_0x50e8('0x7'),attributes,{'tableName':_0x50e8('0x8'),'paranoid':![],'indexes':[{'fields':[_0x50e8('0x9'),_0x50e8('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xcea5=['api','moment','request-promise','path','rimraf','../../config/environment','exports','uniqueid','destuniqueid','lodash','util','../../config/logger'];(function(_0x2e2a1d,_0x44158d){var _0x585e4a=function(_0x58dedc){while(--_0x58dedc){_0x2e2a1d['push'](_0x2e2a1d['shift']());}};_0x585e4a(++_0x44158d);}(_0xcea5,0xed));var _0x5cea=function(_0x3cd3c1,_0x4ca4b7){_0x3cd3c1=_0x3cd3c1-0x0;var _0x1b0d3b=_0xcea5[_0x3cd3c1];return _0x1b0d3b;};'use strict';var _=require(_0x5cea('0x0'));var util=require(_0x5cea('0x1'));var logger=require(_0x5cea('0x2'))(_0x5cea('0x3'));var moment=require(_0x5cea('0x4'));var BPromise=require('bluebird');var rp=require(_0x5cea('0x5'));var fs=require('fs');var path=require(_0x5cea('0x6'));var rimraf=require(_0x5cea('0x7'));var config=require(_0x5cea('0x8'));var attributes=require('./voiceAgentReport.attributes');module[_0x5cea('0x9')]=function(_0x31e6f3,_0x599bc5){return _0x31e6f3['define']('VoiceAgentReport',attributes,{'tableName':'report_agent','paranoid':![],'indexes':[{'fields':[_0x5cea('0xa'),_0x5cea('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index ca389ec..8b712f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacb8=['body','options','debug','UpdateVoiceAgentReport','update','raw','where','attributes','limit','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','request\x20sent','VoiceAgentReport,\x20%s,\x20%s,\x20%s','error','VoiceAgentReport,\x20%s,\x20%s','message','info','result','catch','CreateVoiceAgentReport','VoiceAgentReport','create'];(function(_0x592eeb,_0x10ef82){var _0x3ea777=function(_0x4ca4f7){while(--_0x4ca4f7){_0x592eeb['push'](_0x592eeb['shift']());}};_0x3ea777(++_0x10ef82);}(_0xacb8,0xb3));var _0x8acb=function(_0x443f1c,_0x196e24){_0x443f1c=_0x443f1c-0x0;var _0x15e894=_0xacb8[_0x443f1c];return _0x15e894;};'use strict';var _=require(_0x8acb('0x0'));var util=require(_0x8acb('0x1'));var moment=require(_0x8acb('0x2'));var BPromise=require(_0x8acb('0x3'));var rs=require(_0x8acb('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8acb('0x5'))['db'];var utils=require(_0x8acb('0x6'));var logger=require(_0x8acb('0x7'))(_0x8acb('0x8'));var config=require(_0x8acb('0x9'));var jayson=require(_0x8acb('0xa'));var client=jayson['client'][_0x8acb('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x30bea9,_0x4c5da0,_0x564314){return new BPromise(function(_0x53ee96,_0x32aa8f){return client[_0x8acb('0xc')](_0x30bea9,_0x564314)[_0x8acb('0xd')](function(_0x2742c6){logger['info']('VoiceAgentReport,\x20%s,\x20%s',_0x4c5da0,_0x8acb('0xe'));logger['debug'](_0x8acb('0xf'),_0x4c5da0,_0x8acb('0xe'),JSON['stringify'](_0x2742c6));if(_0x2742c6[_0x8acb('0x10')]){if(_0x2742c6[_0x8acb('0x10')]['code']===0x1f4){logger[_0x8acb('0x10')]('VoiceAgentReport,\x20%s,\x20%s',_0x4c5da0,_0x2742c6[_0x8acb('0x10')]['message']);return _0x32aa8f(_0x2742c6[_0x8acb('0x10')]['message']);}logger['error'](_0x8acb('0x11'),_0x4c5da0,_0x2742c6['error']['message']);return _0x53ee96(_0x2742c6[_0x8acb('0x10')][_0x8acb('0x12')]);}else{logger[_0x8acb('0x13')](_0x8acb('0x11'),_0x4c5da0,_0x8acb('0xe'));_0x53ee96(_0x2742c6[_0x8acb('0x14')][_0x8acb('0x12')]);}})[_0x8acb('0x15')](function(_0x11eb38){logger[_0x8acb('0x10')](_0x8acb('0x11'),_0x4c5da0,_0x11eb38);_0x32aa8f(_0x11eb38);});});}exports[_0x8acb('0x16')]=function(_0x41fab6){var _0xc142ea=this;return new Promise(function(_0xcaf87,_0x5799a9){return db[_0x8acb('0x17')][_0x8acb('0x18')](_0x41fab6[_0x8acb('0x19')],{'raw':_0x41fab6[_0x8acb('0x1a')]?_0x41fab6[_0x8acb('0x1a')]['raw']===undefined?!![]:![]:!![]})[_0x8acb('0xd')](function(_0x2024d4){logger[_0x8acb('0x13')]('CreateVoiceAgentReport',_0x41fab6);logger[_0x8acb('0x1b')]('CreateVoiceAgentReport',_0x41fab6,JSON['stringify'](_0x2024d4));_0xcaf87(_0x2024d4);})[_0x8acb('0x15')](function(_0x31d033){logger[_0x8acb('0x10')](_0x8acb('0x16'),_0x31d033['message'],_0x41fab6);_0x5799a9(_0xc142ea[_0x8acb('0x10')](0x1f4,_0x31d033['message']));});});};exports[_0x8acb('0x1c')]=function(_0x10abe6){var _0x1ea423=this;return new Promise(function(_0x2ff3ef,_0x53ab61){return db[_0x8acb('0x17')][_0x8acb('0x1d')](_0x10abe6[_0x8acb('0x19')],{'raw':_0x10abe6[_0x8acb('0x1a')]?_0x10abe6[_0x8acb('0x1a')][_0x8acb('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x10abe6[_0x8acb('0x1a')]?_0x10abe6[_0x8acb('0x1a')][_0x8acb('0x1f')]||null:null,'attributes':_0x10abe6[_0x8acb('0x1a')]?_0x10abe6['options'][_0x8acb('0x20')]||null:null,'limit':_0x10abe6[_0x8acb('0x1a')]?_0x10abe6[_0x8acb('0x1a')][_0x8acb('0x21')]||null:null})[_0x8acb('0xd')](function(_0xeb1898){logger[_0x8acb('0x13')](_0x8acb('0x1c'),_0x10abe6);logger['debug'](_0x8acb('0x1c'),_0x10abe6,JSON['stringify'](_0xeb1898));_0x2ff3ef(_0xeb1898);})[_0x8acb('0x15')](function(_0x548dc5){logger[_0x8acb('0x10')]('UpdateVoiceAgentReport',_0x548dc5['message'],_0x10abe6);_0x53ab61(_0x1ea423[_0x8acb('0x10')](0x1f4,_0x548dc5[_0x8acb('0x12')]));});});};
\ No newline at end of file
+var _0x84d7=['limit','UpdateVoiceAgentReport','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','info','request\x20sent','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','error','VoiceAgentReport,\x20%s,\x20%s','message','catch','CreateVoiceAgentReport','VoiceAgentReport','create','body','options','stringify','update','where','attributes'];(function(_0x319a5a,_0x2e8567){var _0x400fdf=function(_0x159a38){while(--_0x159a38){_0x319a5a['push'](_0x319a5a['shift']());}};_0x400fdf(++_0x2e8567);}(_0x84d7,0xe9));var _0x784d=function(_0x710815,_0x520da8){_0x710815=_0x710815-0x0;var _0x5b3b89=_0x84d7[_0x710815];return _0x5b3b89;};'use strict';var _=require(_0x784d('0x0'));var util=require(_0x784d('0x1'));var moment=require(_0x784d('0x2'));var BPromise=require(_0x784d('0x3'));var rs=require(_0x784d('0x4'));var fs=require('fs');var Redis=require(_0x784d('0x5'));var db=require(_0x784d('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x784d('0x7'))(_0x784d('0x8'));var config=require(_0x784d('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x784d('0xa')][_0x784d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x6eb3e,_0x431f89,_0x5e5145){return new BPromise(function(_0x2ffe1c,_0x20b0e4){return client[_0x784d('0xc')](_0x6eb3e,_0x5e5145)[_0x784d('0xd')](function(_0x39526e){logger[_0x784d('0xe')]('VoiceAgentReport,\x20%s,\x20%s',_0x431f89,_0x784d('0xf'));logger[_0x784d('0x10')](_0x784d('0x11'),_0x431f89,_0x784d('0xf'),JSON['stringify'](_0x39526e));if(_0x39526e[_0x784d('0x12')]){if(_0x39526e['error']['code']===0x1f4){logger[_0x784d('0x12')](_0x784d('0x13'),_0x431f89,_0x39526e[_0x784d('0x12')][_0x784d('0x14')]);return _0x20b0e4(_0x39526e[_0x784d('0x12')][_0x784d('0x14')]);}logger['error']('VoiceAgentReport,\x20%s,\x20%s',_0x431f89,_0x39526e[_0x784d('0x12')]['message']);return _0x2ffe1c(_0x39526e[_0x784d('0x12')][_0x784d('0x14')]);}else{logger[_0x784d('0xe')]('VoiceAgentReport,\x20%s,\x20%s',_0x431f89,_0x784d('0xf'));_0x2ffe1c(_0x39526e['result']['message']);}})[_0x784d('0x15')](function(_0x2bf038){logger[_0x784d('0x12')](_0x784d('0x13'),_0x431f89,_0x2bf038);_0x20b0e4(_0x2bf038);});});}exports[_0x784d('0x16')]=function(_0x560137){var _0x126622=this;return new Promise(function(_0x51f563,_0xe878d6){return db[_0x784d('0x17')][_0x784d('0x18')](_0x560137[_0x784d('0x19')],{'raw':_0x560137[_0x784d('0x1a')]?_0x560137['options']['raw']===undefined?!![]:![]:!![]})[_0x784d('0xd')](function(_0x36c3f1){logger[_0x784d('0xe')](_0x784d('0x16'),_0x560137);logger['debug']('CreateVoiceAgentReport',_0x560137,JSON[_0x784d('0x1b')](_0x36c3f1));_0x51f563(_0x36c3f1);})[_0x784d('0x15')](function(_0x2e2012){logger['error'](_0x784d('0x16'),_0x2e2012[_0x784d('0x14')],_0x560137);_0xe878d6(_0x126622[_0x784d('0x12')](0x1f4,_0x2e2012[_0x784d('0x14')]));});});};exports['UpdateVoiceAgentReport']=function(_0x43d69d){var _0x4bd48c=this;return new Promise(function(_0x413fe0,_0x2348f8){return db[_0x784d('0x17')][_0x784d('0x1c')](_0x43d69d[_0x784d('0x19')],{'raw':_0x43d69d['options']?_0x43d69d[_0x784d('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x43d69d[_0x784d('0x1a')]?_0x43d69d['options'][_0x784d('0x1d')]||null:null,'attributes':_0x43d69d[_0x784d('0x1a')]?_0x43d69d[_0x784d('0x1a')][_0x784d('0x1e')]||null:null,'limit':_0x43d69d[_0x784d('0x1a')]?_0x43d69d['options'][_0x784d('0x1f')]||null:null})['then'](function(_0x3934d8){logger[_0x784d('0xe')](_0x784d('0x20'),_0x43d69d);logger[_0x784d('0x10')](_0x784d('0x20'),_0x43d69d,JSON['stringify'](_0x3934d8));_0x413fe0(_0x3934d8);})['catch'](function(_0x7c2fea){logger[_0x784d('0x12')]('UpdateVoiceAgentReport',_0x7c2fea[_0x784d('0x14')],_0x43d69d);_0x2348f8(_0x4bd48c[_0x784d('0x12')](0x1f4,_0x7c2fea['message']));});});};
\ No newline at end of file
index c5f0b2a..6fa12c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24ca=['delete','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceCallReport.controller','get','isAuthenticated','index','/describe','/:id','post','create','put','update'];(function(_0x26da89,_0x264785){var _0xc95b7b=function(_0x230e5b){while(--_0x230e5b){_0x26da89['push'](_0x26da89['shift']());}};_0xc95b7b(++_0x264785);}(_0x24ca,0x1bc));var _0xa24c=function(_0x544099,_0x372b30){_0x544099=_0x544099-0x0;var _0x20ab09=_0x24ca[_0x544099];return _0x20ab09;};'use strict';var multer=require(_0xa24c('0x0'));var util=require('util');var path=require(_0xa24c('0x1'));var timeout=require(_0xa24c('0x2'));var express=require(_0xa24c('0x3'));var router=express['Router']();var fs_extra=require(_0xa24c('0x4'));var auth=require(_0xa24c('0x5'));var interaction=require(_0xa24c('0x6'));var config=require(_0xa24c('0x7'));var controller=require(_0xa24c('0x8'));router[_0xa24c('0x9')]('/',auth[_0xa24c('0xa')](),controller[_0xa24c('0xb')]);router[_0xa24c('0x9')](_0xa24c('0xc'),auth[_0xa24c('0xa')](),controller['describe']);router[_0xa24c('0x9')](_0xa24c('0xd'),auth[_0xa24c('0xa')](),controller['show']);router[_0xa24c('0xe')]('/',auth[_0xa24c('0xa')](),controller[_0xa24c('0xf')]);router[_0xa24c('0x10')](_0xa24c('0xd'),auth[_0xa24c('0xa')](),controller[_0xa24c('0x11')]);router[_0xa24c('0x12')](_0xa24c('0xd'),auth['isAuthenticated'](),controller[_0xa24c('0x13')]);module[_0xa24c('0x14')]=router;
\ No newline at end of file
+var _0xb458=['./voiceCallReport.controller','index','get','/describe','isAuthenticated','describe','/:id','show','post','put','destroy','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x55c937,_0x4136f7){var _0xc45fad=function(_0xf2e4c){while(--_0xf2e4c){_0x55c937['push'](_0x55c937['shift']());}};_0xc45fad(++_0x4136f7);}(_0xb458,0x103));var _0x8b45=function(_0x46f3f8,_0x12c74b){_0x46f3f8=_0x46f3f8-0x0;var _0xbc57cd=_0xb458[_0x46f3f8];return _0xbc57cd;};'use strict';var multer=require(_0x8b45('0x0'));var util=require(_0x8b45('0x1'));var path=require(_0x8b45('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x8b45('0x3')]();var fs_extra=require(_0x8b45('0x4'));var auth=require(_0x8b45('0x5'));var interaction=require(_0x8b45('0x6'));var config=require('../../config/environment');var controller=require(_0x8b45('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x8b45('0x8')]);router[_0x8b45('0x9')](_0x8b45('0xa'),auth[_0x8b45('0xb')](),controller[_0x8b45('0xc')]);router['get'](_0x8b45('0xd'),auth[_0x8b45('0xb')](),controller[_0x8b45('0xe')]);router[_0x8b45('0xf')]('/',auth[_0x8b45('0xb')](),controller['create']);router[_0x8b45('0x10')](_0x8b45('0xd'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x8b45('0xb')](),controller[_0x8b45('0x11')]);module[_0x8b45('0x12')]=router;
\ No newline at end of file
index e9fb3e0..5cdc756 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4796=['DATE','INTEGER','sequelize','exports','inbound','outbound','inbound-fax','dialer','STRING','TEXT'];(function(_0x18b165,_0x40a7ea){var _0x1d8e19=function(_0x49d432){while(--_0x49d432){_0x18b165['push'](_0x18b165['shift']());}};_0x1d8e19(++_0x40a7ea);}(_0x4796,0x70));var _0x6479=function(_0x13b329,_0x5f2ca7){_0x13b329=_0x13b329-0x0;var _0x2c01bb=_0x4796[_0x13b329];return _0x2c01bb;};'use strict';var Sequelize=require(_0x6479('0x0'));module[_0x6479('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'type':{'type':Sequelize['ENUM'](_0x6479('0x2'),'internal',_0x6479('0x3'),_0x6479('0x4'),'outbound-fax',_0x6479('0x5'))},'tag':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x6479('0x6')]},'source':{'type':Sequelize[_0x6479('0x6')]},'destination':{'type':Sequelize[_0x6479('0x6')]},'destinationcontext':{'type':Sequelize[_0x6479('0x6')]},'callerid':{'type':Sequelize[_0x6479('0x6')]},'channel':{'type':Sequelize['STRING']},'destinationchannel':{'type':Sequelize['STRING']},'lastapplication':{'type':Sequelize[_0x6479('0x6')]},'lastdata':{'type':Sequelize[_0x6479('0x7')]},'starttime':{'type':Sequelize[_0x6479('0x8')]},'systemanswertime':{'type':Sequelize[_0x6479('0x8')]},'answertime':{'type':Sequelize[_0x6479('0x8')]},'endtime':{'type':Sequelize[_0x6479('0x8')]},'duration':{'type':Sequelize[_0x6479('0x9')]},'billableseconds':{'type':Sequelize[_0x6479('0x9')]},'mohtime':{'type':Sequelize[_0x6479('0x9')],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize[_0x6479('0x6')]},'userfield':{'type':Sequelize[_0x6479('0x6')]},'userDisposition':{'type':Sequelize[_0x6479('0x6')]},'userSecondDisposition':{'type':Sequelize[_0x6479('0x6')]},'userThirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0x6479('0x6')]},'routeid':{'type':Sequelize[_0x6479('0x9')]},'sipcallid':{'type':Sequelize[_0x6479('0x6')]}};
\ No newline at end of file
+var _0x8b35=['inbound-fax','outbound-fax','dialer','TEXT','DATE','INTEGER','sequelize','exports','STRING','ENUM','inbound','outbound'];(function(_0x4595e6,_0x1e72df){var _0x18c7da=function(_0x396c5b){while(--_0x396c5b){_0x4595e6['push'](_0x4595e6['shift']());}};_0x18c7da(++_0x1e72df);}(_0x8b35,0x17a));var _0x58b3=function(_0xe1146,_0x47e05e){_0xe1146=_0xe1146-0x0;var _0x5e0210=_0x8b35[_0xe1146];return _0x5e0210;};'use strict';var Sequelize=require(_0x58b3('0x0'));module[_0x58b3('0x1')]={'uniqueid':{'type':Sequelize[_0x58b3('0x2')]},'type':{'type':Sequelize[_0x58b3('0x3')](_0x58b3('0x4'),'internal',_0x58b3('0x5'),_0x58b3('0x6'),_0x58b3('0x7'),_0x58b3('0x8'))},'tag':{'type':Sequelize[_0x58b3('0x2')]},'accountcode':{'type':Sequelize['STRING']},'source':{'type':Sequelize[_0x58b3('0x2')]},'destination':{'type':Sequelize['STRING']},'destinationcontext':{'type':Sequelize[_0x58b3('0x2')]},'callerid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'destinationchannel':{'type':Sequelize[_0x58b3('0x2')]},'lastapplication':{'type':Sequelize[_0x58b3('0x2')]},'lastdata':{'type':Sequelize[_0x58b3('0x9')]},'starttime':{'type':Sequelize[_0x58b3('0xa')]},'systemanswertime':{'type':Sequelize[_0x58b3('0xa')]},'answertime':{'type':Sequelize[_0x58b3('0xa')]},'endtime':{'type':Sequelize['DATE']},'duration':{'type':Sequelize[_0x58b3('0xb')]},'billableseconds':{'type':Sequelize[_0x58b3('0xb')]},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x58b3('0x2')]},'amaflags':{'type':Sequelize[_0x58b3('0x2')]},'userfield':{'type':Sequelize[_0x58b3('0x2')]},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0x58b3('0x2')]},'userThirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x58b3('0x2')]},'prefix':{'type':Sequelize[_0x58b3('0x2')]},'routeid':{'type':Sequelize[_0x58b3('0xb')]},'sipcallid':{'type':Sequelize[_0x58b3('0x2')]}};
\ No newline at end of file
index 74ec0df..61cc0ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','undefined','offset','limit','set','json','apply','reject','save','then','destroy','error','stack','name','index','map','VoiceCallReport','rawAttributes','fieldName','type','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','filter','merge','where','VIRTUAL','options','count','includeAll','fullname','alias','User','findAll','rows','params','find','create','body','catch','describe','update','uniqueid','user','eml-format','zip-dir','request-promise','moment'];(function(_0x36928c,_0x3e6743){var _0x3e956f=function(_0x5546d0){while(--_0x5546d0){_0x36928c['push'](_0x36928c['shift']());}};_0x3e956f(++_0x3e6743);}(_0x0b0e,0x187));var _0xe0b0=function(_0x5d0207,_0x4000c4){_0x5d0207=_0x5d0207-0x0;var _0xf3e249=_0x0b0e[_0x5d0207];return _0xf3e249;};'use strict';var emlformat=require(_0xe0b0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe0b0('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe0b0('0x2'));var moment=require(_0xe0b0('0x3'));var BPromise=require(_0xe0b0('0x4'));var Mustache=require(_0xe0b0('0x5'));var util=require(_0xe0b0('0x6'));var path=require(_0xe0b0('0x7'));var sox=require(_0xe0b0('0x8'));var csv=require(_0xe0b0('0x9'));var ejs=require(_0xe0b0('0xa'));var fs=require('fs');var fs_extra=require(_0xe0b0('0xb'));var _=require(_0xe0b0('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe0b0('0xd'));var deskjs=require(_0xe0b0('0xe'));var toCsv=require(_0xe0b0('0x9'));var querystring=require(_0xe0b0('0xf'));var Papa=require('papaparse');var Redis=require(_0xe0b0('0x10'));var authService=require(_0xe0b0('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xe0b0('0x12'));var hardwareService=require(_0xe0b0('0x13'));var logger=require('../../config/logger')(_0xe0b0('0x14'));var utils=require(_0xe0b0('0x15'));var config=require(_0xe0b0('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xe0b0('0x17'))['db'];function respondWithStatusCode(_0x1c358a,_0x3cc19a){_0x3cc19a=_0x3cc19a||0xcc;return function(_0x45f914){if(_0x45f914){return _0x1c358a[_0xe0b0('0x18')](_0x3cc19a);}return _0x1c358a['status'](_0x3cc19a)[_0xe0b0('0x19')]();};}function respondWithResult(_0x154de6,_0x743318){_0x743318=_0x743318||0xc8;return function(_0x24babd){if(_0x24babd){return _0x154de6[_0xe0b0('0x1a')](_0x743318)['json'](_0x24babd);}};}function respondWithFilteredResult(_0x41a7e2,_0x5adb01){return function(_0x35cb40){if(_0x35cb40){var _0xadee6e=typeof _0x5adb01['offset']===_0xe0b0('0x1b')&&typeof _0x5adb01['limit']===_0xe0b0('0x1b');var _0x100204=_0x35cb40['count'];var _0x54a3eb=_0xadee6e?0x0:_0x5adb01[_0xe0b0('0x1c')];var _0x50a441=_0xadee6e?_0x35cb40['count']:_0x5adb01['offset']+_0x5adb01[_0xe0b0('0x1d')];var _0x50fa4a;if(_0x50a441>=_0x100204){_0x50a441=_0x100204;_0x50fa4a=0xc8;}else{_0x50fa4a=0xce;}_0x41a7e2['status'](_0x50fa4a);return _0x41a7e2[_0xe0b0('0x1e')]('Content-Range',_0x54a3eb+'-'+_0x50a441+'/'+_0x100204)[_0xe0b0('0x1f')](_0x35cb40);}return null;};}function patchUpdates(_0x5dba2f){return function(_0x2c84cc){try{jsonpatch[_0xe0b0('0x20')](_0x2c84cc,_0x5dba2f,!![]);}catch(_0x3e10b3){return BPromise[_0xe0b0('0x21')](_0x3e10b3);}return _0x2c84cc[_0xe0b0('0x22')]();};}function saveUpdates(_0x58b804,_0x4cae54){return function(_0x2fa820){if(_0x2fa820){return _0x2fa820['update'](_0x58b804)[_0xe0b0('0x23')](function(_0x31b5f8){return _0x31b5f8;});}return null;};}function removeEntity(_0x513e63,_0x170ad8){return function(_0x503883){if(_0x503883){return _0x503883[_0xe0b0('0x24')]()['then'](function(){_0x513e63[_0xe0b0('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3e5c88,_0x4de537){return function(_0x4700cc){if(!_0x4700cc){_0x3e5c88['sendStatus'](0x194);}return _0x4700cc;};}function handleError(_0x3c221d,_0x5c5317){_0x5c5317=_0x5c5317||0x1f4;return function(_0x362aba){logger[_0xe0b0('0x25')](_0x362aba[_0xe0b0('0x26')]);if(_0x362aba[_0xe0b0('0x27')]){delete _0x362aba[_0xe0b0('0x27')];}_0x3c221d[_0xe0b0('0x1a')](_0x5c5317)['send'](_0x362aba);};}exports[_0xe0b0('0x28')]=function(_0x1b8aa8,_0x5b7a64){var _0x15e13b={},_0x419b1f={},_0x36d137={'count':0x0,'rows':[]};var _0x1d5759=_[_0xe0b0('0x29')](db[_0xe0b0('0x2a')][_0xe0b0('0x2b')],function(_0x4fb3b7){return{'name':_0x4fb3b7[_0xe0b0('0x2c')],'type':_0x4fb3b7[_0xe0b0('0x2d')]['key']};});_0x419b1f['model']=_[_0xe0b0('0x29')](_0x1d5759,_0xe0b0('0x27'));_0x419b1f[_0xe0b0('0x2e')]=_[_0xe0b0('0x2f')](_0x1b8aa8[_0xe0b0('0x2e')]);_0x419b1f['filters']=_[_0xe0b0('0x30')](_0x419b1f[_0xe0b0('0x31')],_0x419b1f[_0xe0b0('0x2e')]);_0x15e13b[_0xe0b0('0x32')]=_[_0xe0b0('0x30')](_0x419b1f['model'],qs[_0xe0b0('0x33')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x33')]));_0x15e13b[_0xe0b0('0x32')]=_0x15e13b[_0xe0b0('0x32')][_0xe0b0('0x34')]?_0x15e13b[_0xe0b0('0x32')]:_0x419b1f[_0xe0b0('0x31')];if(!_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x35')](_0xe0b0('0x36'))){_0x15e13b[_0xe0b0('0x1d')]=qs[_0xe0b0('0x1d')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x1d')]);_0x15e13b['offset']=qs[_0xe0b0('0x1c')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x1c')]);}_0x15e13b[_0xe0b0('0x37')]=qs[_0xe0b0('0x38')](_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x38')]);_0x15e13b['where']=qs['filters'](_['pick'](_0x1b8aa8['query'],_0x419b1f[_0xe0b0('0x39')]),_0x1d5759);if(_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x3a')]){_0x15e13b['where']=_[_0xe0b0('0x3b')](_0x15e13b[_0xe0b0('0x3c')],{'$or':_[_0xe0b0('0x29')](_0x1d5759,function(_0x297c64){if(_0x297c64['type']!==_0xe0b0('0x3d')){var _0xfbb61d={};_0xfbb61d[_0x297c64[_0xe0b0('0x27')]]={'$like':'%'+_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x3a')]+'%'};return _0xfbb61d;}})});}_0x15e13b=_[_0xe0b0('0x3b')]({},_0x15e13b,_0x1b8aa8[_0xe0b0('0x3e')]);var _0x115a69={'where':_0x15e13b[_0xe0b0('0x3c')]};return db['VoiceCallReport'][_0xe0b0('0x3f')](_0x115a69)['then'](function(_0x34178d){_0x36d137[_0xe0b0('0x3f')]=_0x34178d;if(_0x1b8aa8[_0xe0b0('0x2e')][_0xe0b0('0x40')]){_0x15e13b['include']=[{'attributes':['id',_0xe0b0('0x27'),_0xe0b0('0x41'),_0xe0b0('0x42')],'model':db[_0xe0b0('0x43')],'as':_0xe0b0('0x43')}];}return db[_0xe0b0('0x2a')][_0xe0b0('0x44')](_0x15e13b);})[_0xe0b0('0x23')](function(_0x52ffe4){_0x36d137[_0xe0b0('0x45')]=_0x52ffe4;return _0x36d137;})[_0xe0b0('0x23')](respondWithFilteredResult(_0x5b7a64,_0x15e13b))['catch'](handleError(_0x5b7a64,null));};exports['show']=function(_0x327fb4,_0x247f8d){var _0x56e7df={'raw':!![],'where':{'id':_0x327fb4[_0xe0b0('0x46')]['id']}},_0x18a59d={};_0x18a59d[_0xe0b0('0x31')]=_[_0xe0b0('0x2f')](db[_0xe0b0('0x2a')]['rawAttributes']);_0x18a59d['query']=_['keys'](_0x327fb4[_0xe0b0('0x2e')]);_0x18a59d[_0xe0b0('0x39')]=_['intersection'](_0x18a59d[_0xe0b0('0x31')],_0x18a59d[_0xe0b0('0x2e')]);_0x56e7df[_0xe0b0('0x32')]=_[_0xe0b0('0x30')](_0x18a59d[_0xe0b0('0x31')],qs['fields'](_0x327fb4['query'][_0xe0b0('0x33')]));_0x56e7df[_0xe0b0('0x32')]=_0x56e7df[_0xe0b0('0x32')][_0xe0b0('0x34')]?_0x56e7df[_0xe0b0('0x32')]:_0x18a59d['model'];if(_0x327fb4[_0xe0b0('0x2e')][_0xe0b0('0x40')]){_0x56e7df['include']=[{'all':!![]}];}_0x56e7df=_['merge']({},_0x56e7df,_0x327fb4['options']);return db[_0xe0b0('0x2a')][_0xe0b0('0x47')](_0x56e7df)[_0xe0b0('0x23')](handleEntityNotFound(_0x247f8d,null))[_0xe0b0('0x23')](respondWithResult(_0x247f8d,null))['catch'](handleError(_0x247f8d,null));};exports[_0xe0b0('0x48')]=function(_0x87d8f3,_0x483f12){return db['VoiceCallReport'][_0xe0b0('0x48')](_0x87d8f3[_0xe0b0('0x49')],{})['then'](respondWithResult(_0x483f12,0xc9))[_0xe0b0('0x4a')](handleError(_0x483f12,null));};exports[_0xe0b0('0x24')]=function(_0x504284,_0x5cb2b6){return db[_0xe0b0('0x2a')]['find']({'where':{'id':_0x504284[_0xe0b0('0x46')]['id']}})[_0xe0b0('0x23')](handleEntityNotFound(_0x5cb2b6,null))[_0xe0b0('0x23')](removeEntity(_0x5cb2b6,null))[_0xe0b0('0x4a')](handleError(_0x5cb2b6,null));};exports[_0xe0b0('0x4b')]=function(_0xf9e694,_0x5f5486){return db['VoiceCallReport'][_0xe0b0('0x4b')]()['then'](respondWithResult(_0x5f5486,null))['catch'](handleError(_0x5f5486,null));};exports[_0xe0b0('0x4c')]=function(_0x222174,_0x54cf7b){if(_0x222174['body'][_0xe0b0('0x4d')]){delete _0x222174[_0xe0b0('0x49')][_0xe0b0('0x4d')];}return db[_0xe0b0('0x2a')][_0xe0b0('0x47')]({'where':{'uniqueid':_0x222174[_0xe0b0('0x46')]['id'],'UserId':{'$or':[null,_0x222174[_0xe0b0('0x4e')]['id']]}}})['then'](handleEntityNotFound(_0x54cf7b,null))[_0xe0b0('0x23')](saveUpdates(_0x222174['body'],null))[_0xe0b0('0x23')](respondWithResult(_0x54cf7b,null))['catch'](handleError(_0x54cf7b,null));};
\ No newline at end of file
+var _0x5f2f=['stack','name','send','index','VoiceCallReport','rawAttributes','fieldName','type','map','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','filter','merge','where','options','includeAll','include','fullname','alias','User','findAll','catch','params','keys','find','create','body','destroy','describe','update','uniqueid','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then'];(function(_0x53f402,_0x326920){var _0x45a76d=function(_0x51f590){while(--_0x51f590){_0x53f402['push'](_0x53f402['shift']());}};_0x45a76d(++_0x326920);}(_0x5f2f,0x73));var _0xf5f2=function(_0x39bd80,_0x48cc4b){_0x39bd80=_0x39bd80-0x0;var _0x368d24=_0x5f2f[_0x39bd80];return _0x368d24;};'use strict';var emlformat=require(_0xf5f2('0x0'));var rimraf=require(_0xf5f2('0x1'));var zipdir=require(_0xf5f2('0x2'));var jsonpatch=require(_0xf5f2('0x3'));var rp=require(_0xf5f2('0x4'));var moment=require(_0xf5f2('0x5'));var BPromise=require(_0xf5f2('0x6'));var Mustache=require(_0xf5f2('0x7'));var util=require('util');var path=require('path');var sox=require(_0xf5f2('0x8'));var csv=require(_0xf5f2('0x9'));var ejs=require(_0xf5f2('0xa'));var fs=require('fs');var fs_extra=require(_0xf5f2('0xb'));var _=require(_0xf5f2('0xc'));var squel=require(_0xf5f2('0xd'));var crypto=require('crypto');var jsforce=require(_0xf5f2('0xe'));var deskjs=require(_0xf5f2('0xf'));var toCsv=require(_0xf5f2('0x9'));var querystring=require('querystring');var Papa=require(_0xf5f2('0x10'));var Redis=require(_0xf5f2('0x11'));var authService=require(_0xf5f2('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xf5f2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf5f2('0x14'));var utils=require(_0xf5f2('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xf5f2('0x16'));var db=require(_0xf5f2('0x17'))['db'];function respondWithStatusCode(_0x331482,_0x3f2997){_0x3f2997=_0x3f2997||0xcc;return function(_0x59bb6c){if(_0x59bb6c){return _0x331482[_0xf5f2('0x18')](_0x3f2997);}return _0x331482['status'](_0x3f2997)[_0xf5f2('0x19')]();};}function respondWithResult(_0xea612c,_0x269909){_0x269909=_0x269909||0xc8;return function(_0x1c1a5c){if(_0x1c1a5c){return _0xea612c[_0xf5f2('0x1a')](_0x269909)['json'](_0x1c1a5c);}};}function respondWithFilteredResult(_0xafe430,_0x286197){return function(_0x17d656){if(_0x17d656){var _0x1b6dd2=typeof _0x286197[_0xf5f2('0x1b')]===_0xf5f2('0x1c')&&typeof _0x286197[_0xf5f2('0x1d')]===_0xf5f2('0x1c');var _0x11f702=_0x17d656[_0xf5f2('0x1e')];var _0x20fccd=_0x1b6dd2?0x0:_0x286197[_0xf5f2('0x1b')];var _0x4ff59b=_0x1b6dd2?_0x17d656[_0xf5f2('0x1e')]:_0x286197[_0xf5f2('0x1b')]+_0x286197[_0xf5f2('0x1d')];var _0x1bf655;if(_0x4ff59b>=_0x11f702){_0x4ff59b=_0x11f702;_0x1bf655=0xc8;}else{_0x1bf655=0xce;}_0xafe430['status'](_0x1bf655);return _0xafe430[_0xf5f2('0x1f')](_0xf5f2('0x20'),_0x20fccd+'-'+_0x4ff59b+'/'+_0x11f702)['json'](_0x17d656);}return null;};}function patchUpdates(_0x47acfc){return function(_0x2d2805){try{jsonpatch[_0xf5f2('0x21')](_0x2d2805,_0x47acfc,!![]);}catch(_0x4ae323){return BPromise[_0xf5f2('0x22')](_0x4ae323);}return _0x2d2805[_0xf5f2('0x23')]();};}function saveUpdates(_0x39e44a,_0x39c024){return function(_0x36f1cb){if(_0x36f1cb){return _0x36f1cb['update'](_0x39e44a)[_0xf5f2('0x24')](function(_0x4669a6){return _0x4669a6;});}return null;};}function removeEntity(_0x4e8bda,_0x2833fe){return function(_0x287ad5){if(_0x287ad5){return _0x287ad5['destroy']()['then'](function(){_0x4e8bda[_0xf5f2('0x1a')](0xcc)[_0xf5f2('0x19')]();});}};}function handleEntityNotFound(_0x13da6f,_0x1a5bb3){return function(_0xf6c58d){if(!_0xf6c58d){_0x13da6f[_0xf5f2('0x18')](0x194);}return _0xf6c58d;};}function handleError(_0x13a3be,_0x281ec8){_0x281ec8=_0x281ec8||0x1f4;return function(_0x294414){logger['error'](_0x294414[_0xf5f2('0x25')]);if(_0x294414[_0xf5f2('0x26')]){delete _0x294414[_0xf5f2('0x26')];}_0x13a3be[_0xf5f2('0x1a')](_0x281ec8)[_0xf5f2('0x27')](_0x294414);};}exports[_0xf5f2('0x28')]=function(_0x5b6672,_0x53cb96){var _0x22c826={},_0x14c829={},_0x11c771={'count':0x0,'rows':[]};var _0x5027ab=_['map'](db[_0xf5f2('0x29')][_0xf5f2('0x2a')],function(_0x17394a){return{'name':_0x17394a[_0xf5f2('0x2b')],'type':_0x17394a[_0xf5f2('0x2c')]['key']};});_0x14c829['model']=_[_0xf5f2('0x2d')](_0x5027ab,'name');_0x14c829[_0xf5f2('0x2e')]=_['keys'](_0x5b6672[_0xf5f2('0x2e')]);_0x14c829[_0xf5f2('0x2f')]=_[_0xf5f2('0x30')](_0x14c829[_0xf5f2('0x31')],_0x14c829[_0xf5f2('0x2e')]);_0x22c826[_0xf5f2('0x32')]=_[_0xf5f2('0x30')](_0x14c829[_0xf5f2('0x31')],qs['fields'](_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x33')]));_0x22c826[_0xf5f2('0x32')]=_0x22c826[_0xf5f2('0x32')][_0xf5f2('0x34')]?_0x22c826[_0xf5f2('0x32')]:_0x14c829[_0xf5f2('0x31')];if(!_0x5b6672['query'][_0xf5f2('0x35')](_0xf5f2('0x36'))){_0x22c826['limit']=qs[_0xf5f2('0x1d')](_0x5b6672['query'][_0xf5f2('0x1d')]);_0x22c826[_0xf5f2('0x1b')]=qs[_0xf5f2('0x1b')](_0x5b6672[_0xf5f2('0x2e')]['offset']);}_0x22c826['order']=qs[_0xf5f2('0x37')](_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x37')]);_0x22c826['where']=qs[_0xf5f2('0x2f')](_['pick'](_0x5b6672[_0xf5f2('0x2e')],_0x14c829['filters']),_0x5027ab);if(_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x38')]){_0x22c826['where']=_[_0xf5f2('0x39')](_0x22c826[_0xf5f2('0x3a')],{'$or':_[_0xf5f2('0x2d')](_0x5027ab,function(_0x35f738){if(_0x35f738['type']!=='VIRTUAL'){var _0x3d328f={};_0x3d328f[_0x35f738[_0xf5f2('0x26')]]={'$like':'%'+_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x38')]+'%'};return _0x3d328f;}})});}_0x22c826=_[_0xf5f2('0x39')]({},_0x22c826,_0x5b6672[_0xf5f2('0x3b')]);var _0x2bc20e={'where':_0x22c826['where']};return db[_0xf5f2('0x29')][_0xf5f2('0x1e')](_0x2bc20e)['then'](function(_0xc6a1ae){_0x11c771[_0xf5f2('0x1e')]=_0xc6a1ae;if(_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x3c')]){_0x22c826[_0xf5f2('0x3d')]=[{'attributes':['id',_0xf5f2('0x26'),_0xf5f2('0x3e'),_0xf5f2('0x3f')],'model':db['User'],'as':_0xf5f2('0x40')}];}return db[_0xf5f2('0x29')][_0xf5f2('0x41')](_0x22c826);})['then'](function(_0x509dbc){_0x11c771['rows']=_0x509dbc;return _0x11c771;})[_0xf5f2('0x24')](respondWithFilteredResult(_0x53cb96,_0x22c826))[_0xf5f2('0x42')](handleError(_0x53cb96,null));};exports['show']=function(_0x106272,_0xeed03d){var _0x28e33f={'raw':!![],'where':{'id':_0x106272[_0xf5f2('0x43')]['id']}},_0x31f86c={};_0x31f86c[_0xf5f2('0x31')]=_[_0xf5f2('0x44')](db[_0xf5f2('0x29')][_0xf5f2('0x2a')]);_0x31f86c[_0xf5f2('0x2e')]=_[_0xf5f2('0x44')](_0x106272[_0xf5f2('0x2e')]);_0x31f86c[_0xf5f2('0x2f')]=_[_0xf5f2('0x30')](_0x31f86c['model'],_0x31f86c[_0xf5f2('0x2e')]);_0x28e33f['attributes']=_[_0xf5f2('0x30')](_0x31f86c[_0xf5f2('0x31')],qs[_0xf5f2('0x33')](_0x106272[_0xf5f2('0x2e')][_0xf5f2('0x33')]));_0x28e33f[_0xf5f2('0x32')]=_0x28e33f['attributes'][_0xf5f2('0x34')]?_0x28e33f[_0xf5f2('0x32')]:_0x31f86c[_0xf5f2('0x31')];if(_0x106272[_0xf5f2('0x2e')][_0xf5f2('0x3c')]){_0x28e33f[_0xf5f2('0x3d')]=[{'all':!![]}];}_0x28e33f=_[_0xf5f2('0x39')]({},_0x28e33f,_0x106272[_0xf5f2('0x3b')]);return db['VoiceCallReport'][_0xf5f2('0x45')](_0x28e33f)[_0xf5f2('0x24')](handleEntityNotFound(_0xeed03d,null))[_0xf5f2('0x24')](respondWithResult(_0xeed03d,null))['catch'](handleError(_0xeed03d,null));};exports[_0xf5f2('0x46')]=function(_0xc91b64,_0x3179a9){return db['VoiceCallReport']['create'](_0xc91b64[_0xf5f2('0x47')],{})[_0xf5f2('0x24')](respondWithResult(_0x3179a9,0xc9))['catch'](handleError(_0x3179a9,null));};exports[_0xf5f2('0x48')]=function(_0x533cca,_0x740321){return db['VoiceCallReport'][_0xf5f2('0x45')]({'where':{'id':_0x533cca['params']['id']}})[_0xf5f2('0x24')](handleEntityNotFound(_0x740321,null))[_0xf5f2('0x24')](removeEntity(_0x740321,null))[_0xf5f2('0x42')](handleError(_0x740321,null));};exports[_0xf5f2('0x49')]=function(_0x4fa738,_0x3154c1){return db[_0xf5f2('0x29')]['describe']()['then'](respondWithResult(_0x3154c1,null))[_0xf5f2('0x42')](handleError(_0x3154c1,null));};exports[_0xf5f2('0x4a')]=function(_0x57782c,_0x22b645){if(_0x57782c[_0xf5f2('0x47')][_0xf5f2('0x4b')]){delete _0x57782c[_0xf5f2('0x47')]['uniqueid'];}return db['VoiceCallReport'][_0xf5f2('0x45')]({'where':{'uniqueid':_0x57782c[_0xf5f2('0x43')]['id'],'UserId':{'$or':[null,_0x57782c['user']['id']]}}})[_0xf5f2('0x24')](handleEntityNotFound(_0x22b645,null))[_0xf5f2('0x24')](saveUpdates(_0x57782c[_0xf5f2('0x47')],null))[_0xf5f2('0x24')](respondWithResult(_0x22b645,null))[_0xf5f2('0x42')](handleError(_0x22b645,null));};
\ No newline at end of file
index 15351db..6e23526 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf351=['exports','define','VoiceCallReport','report_call','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceCallReport.attributes'];(function(_0x4bc4db,_0x43e85e){var _0x34277f=function(_0x5d82d5){while(--_0x5d82d5){_0x4bc4db['push'](_0x4bc4db['shift']());}};_0x34277f(++_0x43e85e);}(_0xf351,0x1a5));var _0x1f35=function(_0x12254f,_0x100cfe){_0x12254f=_0x12254f-0x0;var _0x3a4fa2=_0xf351[_0x12254f];return _0x3a4fa2;};'use strict';var _=require(_0x1f35('0x0'));var util=require(_0x1f35('0x1'));var logger=require(_0x1f35('0x2'))(_0x1f35('0x3'));var moment=require(_0x1f35('0x4'));var BPromise=require(_0x1f35('0x5'));var rp=require(_0x1f35('0x6'));var fs=require('fs');var path=require(_0x1f35('0x7'));var rimraf=require(_0x1f35('0x8'));var config=require(_0x1f35('0x9'));var attributes=require(_0x1f35('0xa'));module[_0x1f35('0xb')]=function(_0x5a6185,_0xbe2a37){return _0x5a6185[_0x1f35('0xc')](_0x1f35('0xd'),attributes,{'tableName':_0x1f35('0xe'),'paranoid':![],'indexes':[{'fields':[_0x1f35('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x11a9=['../../config/environment','./voiceCallReport.attributes','define','VoiceCallReport','report_call','uniqueid','util','../../config/logger','bluebird','request-promise','path'];(function(_0x2f38d7,_0x24deab){var _0x157fcb=function(_0xd73def){while(--_0xd73def){_0x2f38d7['push'](_0x2f38d7['shift']());}};_0x157fcb(++_0x24deab);}(_0x11a9,0x145));var _0x911a=function(_0x17e275,_0x32310e){_0x17e275=_0x17e275-0x0;var _0x57c7c1=_0x11a9[_0x17e275];return _0x57c7c1;};'use strict';var _=require('lodash');var util=require(_0x911a('0x0'));var logger=require(_0x911a('0x1'))('api');var moment=require('moment');var BPromise=require(_0x911a('0x2'));var rp=require(_0x911a('0x3'));var fs=require('fs');var path=require(_0x911a('0x4'));var rimraf=require('rimraf');var config=require(_0x911a('0x5'));var attributes=require(_0x911a('0x6'));module['exports']=function(_0x51c8d9,_0x57763b){return _0x51c8d9[_0x911a('0x7')](_0x911a('0x8'),attributes,{'tableName':_0x911a('0x9'),'paranoid':![],'indexes':[{'fields':[_0x911a('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 254f568..7d4d478 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1eca=['catch','update','body','where','UpdateVoiceCallReport','lodash','util','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','VoiceCallReport,\x20%s,\x20%s,\x20%s','error','message','result','GetVoiceCallReport','VoiceCallReport','options','raw','attributes','limit','include','map','model','debug','stringify','CreateVoiceCallReport','create'];(function(_0x36eea8,_0x16025c){var _0x56d6b0=function(_0xd0f60f){while(--_0xd0f60f){_0x36eea8['push'](_0x36eea8['shift']());}};_0x56d6b0(++_0x16025c);}(_0x1eca,0x10f));var _0xa1ec=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1eca[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xa1ec('0x0'));var util=require(_0xa1ec('0x1'));var moment=require('moment');var BPromise=require(_0xa1ec('0x2'));var rs=require(_0xa1ec('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xa1ec('0x4'));var logger=require(_0xa1ec('0x5'))(_0xa1ec('0x6'));var config=require(_0xa1ec('0x7'));var jayson=require(_0xa1ec('0x8'));var client=jayson[_0xa1ec('0x9')][_0xa1ec('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x289a3c,_0x2bdfee,_0x4c13d9){return new BPromise(function(_0x4f276a,_0x170394){return client[_0xa1ec('0xb')](_0x289a3c,_0x4c13d9)[_0xa1ec('0xc')](function(_0x5e1a1d){logger[_0xa1ec('0xd')](_0xa1ec('0xe'),_0x2bdfee,_0xa1ec('0xf'));logger['debug'](_0xa1ec('0x10'),_0x2bdfee,_0xa1ec('0xf'),JSON['stringify'](_0x5e1a1d));if(_0x5e1a1d[_0xa1ec('0x11')]){if(_0x5e1a1d[_0xa1ec('0x11')]['code']===0x1f4){logger[_0xa1ec('0x11')](_0xa1ec('0xe'),_0x2bdfee,_0x5e1a1d[_0xa1ec('0x11')][_0xa1ec('0x12')]);return _0x170394(_0x5e1a1d['error']['message']);}logger[_0xa1ec('0x11')]('VoiceCallReport,\x20%s,\x20%s',_0x2bdfee,_0x5e1a1d[_0xa1ec('0x11')][_0xa1ec('0x12')]);return _0x4f276a(_0x5e1a1d[_0xa1ec('0x11')][_0xa1ec('0x12')]);}else{logger[_0xa1ec('0xd')](_0xa1ec('0xe'),_0x2bdfee,_0xa1ec('0xf'));_0x4f276a(_0x5e1a1d[_0xa1ec('0x13')][_0xa1ec('0x12')]);}})['catch'](function(_0x3715cb){logger[_0xa1ec('0x11')](_0xa1ec('0xe'),_0x2bdfee,_0x3715cb);_0x170394(_0x3715cb);});});}exports[_0xa1ec('0x14')]=function(_0x471fb0){var _0x127f66=this;return new Promise(function(_0x25d903,_0x1e9fa1){return db[_0xa1ec('0x15')]['findAll']({'raw':_0x471fb0[_0xa1ec('0x16')]?_0x471fb0[_0xa1ec('0x16')][_0xa1ec('0x17')]===undefined?!![]:![]:!![],'where':_0x471fb0[_0xa1ec('0x16')]?_0x471fb0['options']['where']||null:null,'attributes':_0x471fb0['options']?_0x471fb0['options'][_0xa1ec('0x18')]||null:null,'limit':_0x471fb0['options']?_0x471fb0[_0xa1ec('0x16')][_0xa1ec('0x19')]||null:null,'include':_0x471fb0[_0xa1ec('0x16')]?_0x471fb0['options'][_0xa1ec('0x1a')]?_[_0xa1ec('0x1b')](_0x471fb0['options']['include'],function(_0x3cb48c){return{'model':db[_0x3cb48c[_0xa1ec('0x1c')]],'as':_0x3cb48c['as'],'attributes':_0x3cb48c[_0xa1ec('0x18')],'include':_0x3cb48c[_0xa1ec('0x1a')]?_['map'](_0x3cb48c[_0xa1ec('0x1a')],function(_0x5d901e){return{'model':db[_0x5d901e['model']],'as':_0x5d901e['as'],'attributes':_0x5d901e[_0xa1ec('0x18')],'include':_0x5d901e['include']?_[_0xa1ec('0x1b')](_0x5d901e[_0xa1ec('0x1a')],function(_0x17834d){return{'model':db[_0x17834d[_0xa1ec('0x1c')]],'as':_0x17834d['as'],'attributes':_0x17834d[_0xa1ec('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2ea0da){logger[_0xa1ec('0xd')](_0xa1ec('0x14'),_0x471fb0);logger[_0xa1ec('0x1d')](_0xa1ec('0x14'),_0x471fb0,JSON[_0xa1ec('0x1e')](_0x2ea0da));_0x25d903(_0x2ea0da);})['catch'](function(_0x456ce8){logger['error'](_0xa1ec('0x14'),_0x456ce8[_0xa1ec('0x12')],_0x471fb0);_0x1e9fa1(_0x127f66['error'](0x1f4,_0x456ce8[_0xa1ec('0x12')]));});});};exports[_0xa1ec('0x1f')]=function(_0x364798){var _0x4cecc4=this;return new Promise(function(_0x213a8c,_0x2ece20){return db['VoiceCallReport'][_0xa1ec('0x20')](_0x364798['body'],{'raw':_0x364798[_0xa1ec('0x16')]?_0x364798[_0xa1ec('0x16')][_0xa1ec('0x17')]===undefined?!![]:![]:!![]})[_0xa1ec('0xc')](function(_0x3b704c){logger[_0xa1ec('0xd')](_0xa1ec('0x1f'),_0x364798);logger['debug'](_0xa1ec('0x1f'),_0x364798,JSON[_0xa1ec('0x1e')](_0x3b704c));_0x213a8c(_0x3b704c);})[_0xa1ec('0x21')](function(_0x5bd60f){logger['error'](_0xa1ec('0x1f'),_0x5bd60f['message'],_0x364798);_0x2ece20(_0x4cecc4[_0xa1ec('0x11')](0x1f4,_0x5bd60f[_0xa1ec('0x12')]));});});};exports['UpdateVoiceCallReport']=function(_0x20752c){var _0x4a1b10=this;return new Promise(function(_0xc3bd2b,_0x30d2b2){return db[_0xa1ec('0x15')][_0xa1ec('0x22')](_0x20752c[_0xa1ec('0x23')],{'raw':_0x20752c[_0xa1ec('0x16')]?_0x20752c[_0xa1ec('0x16')][_0xa1ec('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x20752c[_0xa1ec('0x16')]?_0x20752c[_0xa1ec('0x16')][_0xa1ec('0x24')]||null:null,'attributes':_0x20752c['options']?_0x20752c[_0xa1ec('0x16')][_0xa1ec('0x18')]||null:null,'limit':_0x20752c[_0xa1ec('0x16')]?_0x20752c[_0xa1ec('0x16')][_0xa1ec('0x19')]||null:null})[_0xa1ec('0xc')](function(_0x42814c){logger[_0xa1ec('0xd')](_0xa1ec('0x25'),_0x20752c);logger['debug'](_0xa1ec('0x25'),_0x20752c,JSON['stringify'](_0x42814c));_0xc3bd2b(_0x42814c);})[_0xa1ec('0x21')](function(_0x283b28){logger['error']('UpdateVoiceCallReport',_0x283b28[_0xa1ec('0x12')],_0x20752c);_0x30d2b2(_0x4a1b10[_0xa1ec('0x11')](0x1f4,_0x283b28[_0xa1ec('0x12')]));});});};
\ No newline at end of file
+var _0xb896=['result','catch','options','raw','where','attributes','limit','map','include','model','GetVoiceCallReport','stringify','create','body','CreateVoiceCallReport','UpdateVoiceCallReport','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','request\x20sent','debug','error','code','VoiceCallReport,\x20%s,\x20%s','message'];(function(_0x52b0d6,_0x4ea14b){var _0x5ded6c=function(_0x1f5d70){while(--_0x1f5d70){_0x52b0d6['push'](_0x52b0d6['shift']());}};_0x5ded6c(++_0x4ea14b);}(_0xb896,0xbf));var _0x6b89=function(_0x5a5395,_0x5361f6){_0x5a5395=_0x5a5395-0x0;var _0x4da43d=_0xb896[_0x5a5395];return _0x4da43d;};'use strict';var _=require(_0x6b89('0x0'));var util=require(_0x6b89('0x1'));var moment=require(_0x6b89('0x2'));var BPromise=require(_0x6b89('0x3'));var rs=require(_0x6b89('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6b89('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x6b89('0x6'))(_0x6b89('0x7'));var config=require(_0x6b89('0x8'));var jayson=require(_0x6b89('0x9'));var client=jayson[_0x6b89('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2fdf9e,_0x391dc2,_0x11e249){return new BPromise(function(_0xe0d2f,_0x7d353d){return client['request'](_0x2fdf9e,_0x11e249)[_0x6b89('0xb')](function(_0x12d974){logger[_0x6b89('0xc')]('VoiceCallReport,\x20%s,\x20%s',_0x391dc2,_0x6b89('0xd'));logger[_0x6b89('0xe')]('VoiceCallReport,\x20%s,\x20%s,\x20%s',_0x391dc2,_0x6b89('0xd'),JSON['stringify'](_0x12d974));if(_0x12d974['error']){if(_0x12d974[_0x6b89('0xf')][_0x6b89('0x10')]===0x1f4){logger['error'](_0x6b89('0x11'),_0x391dc2,_0x12d974[_0x6b89('0xf')][_0x6b89('0x12')]);return _0x7d353d(_0x12d974[_0x6b89('0xf')][_0x6b89('0x12')]);}logger[_0x6b89('0xf')]('VoiceCallReport,\x20%s,\x20%s',_0x391dc2,_0x12d974[_0x6b89('0xf')][_0x6b89('0x12')]);return _0xe0d2f(_0x12d974[_0x6b89('0xf')][_0x6b89('0x12')]);}else{logger['info'](_0x6b89('0x11'),_0x391dc2,_0x6b89('0xd'));_0xe0d2f(_0x12d974[_0x6b89('0x13')][_0x6b89('0x12')]);}})[_0x6b89('0x14')](function(_0x36d96d){logger['error'](_0x6b89('0x11'),_0x391dc2,_0x36d96d);_0x7d353d(_0x36d96d);});});}exports['GetVoiceCallReport']=function(_0x222c91){var _0x2c96f5=this;return new Promise(function(_0x66ac6f,_0x32fcba){return db['VoiceCallReport']['findAll']({'raw':_0x222c91[_0x6b89('0x15')]?_0x222c91['options'][_0x6b89('0x16')]===undefined?!![]:![]:!![],'where':_0x222c91['options']?_0x222c91[_0x6b89('0x15')][_0x6b89('0x17')]||null:null,'attributes':_0x222c91[_0x6b89('0x15')]?_0x222c91[_0x6b89('0x15')][_0x6b89('0x18')]||null:null,'limit':_0x222c91[_0x6b89('0x15')]?_0x222c91[_0x6b89('0x15')][_0x6b89('0x19')]||null:null,'include':_0x222c91[_0x6b89('0x15')]?_0x222c91['options']['include']?_[_0x6b89('0x1a')](_0x222c91[_0x6b89('0x15')][_0x6b89('0x1b')],function(_0xe7d755){return{'model':db[_0xe7d755[_0x6b89('0x1c')]],'as':_0xe7d755['as'],'attributes':_0xe7d755[_0x6b89('0x18')],'include':_0xe7d755[_0x6b89('0x1b')]?_[_0x6b89('0x1a')](_0xe7d755['include'],function(_0x485390){return{'model':db[_0x485390[_0x6b89('0x1c')]],'as':_0x485390['as'],'attributes':_0x485390[_0x6b89('0x18')],'include':_0x485390[_0x6b89('0x1b')]?_[_0x6b89('0x1a')](_0x485390['include'],function(_0x161d75){return{'model':db[_0x161d75[_0x6b89('0x1c')]],'as':_0x161d75['as'],'attributes':_0x161d75[_0x6b89('0x18')]};}):[]};}):[]};}):[]:[]})[_0x6b89('0xb')](function(_0xd21f51){logger['info']('GetVoiceCallReport',_0x222c91);logger['debug'](_0x6b89('0x1d'),_0x222c91,JSON[_0x6b89('0x1e')](_0xd21f51));_0x66ac6f(_0xd21f51);})[_0x6b89('0x14')](function(_0x23e7a0){logger[_0x6b89('0xf')](_0x6b89('0x1d'),_0x23e7a0['message'],_0x222c91);_0x32fcba(_0x2c96f5['error'](0x1f4,_0x23e7a0[_0x6b89('0x12')]));});});};exports['CreateVoiceCallReport']=function(_0x3f6448){var _0xc47502=this;return new Promise(function(_0x556299,_0x617359){return db['VoiceCallReport'][_0x6b89('0x1f')](_0x3f6448[_0x6b89('0x20')],{'raw':_0x3f6448['options']?_0x3f6448[_0x6b89('0x15')][_0x6b89('0x16')]===undefined?!![]:![]:!![]})[_0x6b89('0xb')](function(_0x11afb5){logger[_0x6b89('0xc')](_0x6b89('0x21'),_0x3f6448);logger['debug'](_0x6b89('0x21'),_0x3f6448,JSON[_0x6b89('0x1e')](_0x11afb5));_0x556299(_0x11afb5);})[_0x6b89('0x14')](function(_0x4fce45){logger['error']('CreateVoiceCallReport',_0x4fce45[_0x6b89('0x12')],_0x3f6448);_0x617359(_0xc47502[_0x6b89('0xf')](0x1f4,_0x4fce45[_0x6b89('0x12')]));});});};exports['UpdateVoiceCallReport']=function(_0x3c91e0){var _0xaa4c65=this;return new Promise(function(_0x3a92fd,_0xceacff){return db['VoiceCallReport']['update'](_0x3c91e0['body'],{'raw':_0x3c91e0[_0x6b89('0x15')]?_0x3c91e0[_0x6b89('0x15')][_0x6b89('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3c91e0[_0x6b89('0x15')]?_0x3c91e0['options']['where']||null:null,'attributes':_0x3c91e0[_0x6b89('0x15')]?_0x3c91e0[_0x6b89('0x15')][_0x6b89('0x18')]||null:null,'limit':_0x3c91e0[_0x6b89('0x15')]?_0x3c91e0['options'][_0x6b89('0x19')]||null:null})[_0x6b89('0xb')](function(_0x2391b6){logger['info']('UpdateVoiceCallReport',_0x3c91e0);logger[_0x6b89('0xe')](_0x6b89('0x22'),_0x3c91e0,JSON[_0x6b89('0x1e')](_0x2391b6));_0x3a92fd(_0x2391b6);})[_0x6b89('0x14')](function(_0x47a620){logger[_0x6b89('0xf')](_0x6b89('0x22'),_0x47a620[_0x6b89('0x12')],_0x3c91e0);_0xceacff(_0xaa4c65['error'](0x1f4,_0x47a620[_0x6b89('0x12')]));});});};
\ No newline at end of file
index 44dc740..080ff77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56d8=['util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./voiceChanSpy.controller','get','isAuthenticated','/:id','show','post','create','put','update','delete','destroy','exports','multer'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0x56d8,0x77));var _0x856d=function(_0xaa0309,_0x1c8008){_0xaa0309=_0xaa0309-0x0;var _0x5de7ce=_0x56d8[_0xaa0309];return _0x5de7ce;};'use strict';var multer=require(_0x856d('0x0'));var util=require(_0x856d('0x1'));var path=require(_0x856d('0x2'));var timeout=require(_0x856d('0x3'));var express=require(_0x856d('0x4'));var router=express[_0x856d('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x856d('0x6'));var interaction=require(_0x856d('0x7'));var config=require('../../config/environment');var controller=require(_0x856d('0x8'));router[_0x856d('0x9')]('/',auth[_0x856d('0xa')](),controller['index']);router[_0x856d('0x9')](_0x856d('0xb'),auth['isAuthenticated'](),controller[_0x856d('0xc')]);router[_0x856d('0xd')]('/',auth[_0x856d('0xa')](),controller[_0x856d('0xe')]);router[_0x856d('0xf')](_0x856d('0xb'),auth[_0x856d('0xa')](),controller[_0x856d('0x10')]);router[_0x856d('0x11')](_0x856d('0xb'),auth[_0x856d('0xa')](),controller[_0x856d('0x12')]);module[_0x856d('0x13')]=router;
\ No newline at end of file
+var _0x6bc5=['../../config/environment','./voiceChanSpy.controller','get','index','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','Router','../../components/interaction/service'];(function(_0xfb0370,_0x3d5585){var _0x323c86=function(_0x39c86e){while(--_0x39c86e){_0xfb0370['push'](_0xfb0370['shift']());}};_0x323c86(++_0x3d5585);}(_0x6bc5,0xde));var _0x56bc=function(_0x3e06aa,_0x23c555){_0x3e06aa=_0x3e06aa-0x0;var _0x4ad618=_0x6bc5[_0x3e06aa];return _0x4ad618;};'use strict';var multer=require(_0x56bc('0x0'));var util=require(_0x56bc('0x1'));var path=require(_0x56bc('0x2'));var timeout=require(_0x56bc('0x3'));var express=require('express');var router=express[_0x56bc('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x56bc('0x5'));var config=require(_0x56bc('0x6'));var controller=require(_0x56bc('0x7'));router[_0x56bc('0x8')]('/',auth['isAuthenticated'](),controller[_0x56bc('0x9')]);router[_0x56bc('0x8')](_0x56bc('0xa'),auth[_0x56bc('0xb')](),controller[_0x56bc('0xc')]);router[_0x56bc('0xd')]('/',auth[_0x56bc('0xb')](),controller[_0x56bc('0xe')]);router[_0x56bc('0xf')](_0x56bc('0xa'),auth[_0x56bc('0xb')](),controller[_0x56bc('0x10')]);router[_0x56bc('0x11')](_0x56bc('0xa'),auth['isAuthenticated'](),controller[_0x56bc('0x12')]);module['exports']=router;
\ No newline at end of file
index eab33de..8e07683 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x625c=['options','split','BOOLEAN','sequelize','exports','STRING','join','getDataValue'];(function(_0x12e3d2,_0x77a0e0){var _0x2e632c=function(_0x52d273){while(--_0x52d273){_0x12e3d2['push'](_0x12e3d2['shift']());}};_0x2e632c(++_0x77a0e0);}(_0x625c,0x73));var _0xc625=function(_0x4cd12b,_0xe805d){_0x4cd12b=_0x4cd12b-0x0;var _0x43cfc4=_0x625c[_0x4cd12b];return _0x43cfc4;};'use strict';var Sequelize=require(_0xc625('0x0'));module[_0xc625('0x1')]={'name':{'type':Sequelize[_0xc625('0x2')]},'prefix':{'type':Sequelize[_0xc625('0x2')],'unique':'name','allowNull':![]},'options':{'type':Sequelize[_0xc625('0x2')],'set':function(_0x5b99f8){this['setDataValue']('options',_0x5b99f8?_0x5b99f8[_0xc625('0x3')](''):[]);},'get':function(){return this[_0xc625('0x4')]('options')?this['getDataValue'](_0xc625('0x5'))[_0xc625('0x6')](''):[];}},'auth':{'type':Sequelize[_0xc625('0x7')],'defaultValue':![]},'password':{'type':Sequelize[_0xc625('0x2')]},'record':{'type':Sequelize[_0xc625('0x7')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0xc625('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x7085=['sequelize','STRING','join','getDataValue','options','split','BOOLEAN'];(function(_0x200256,_0x590421){var _0x555785=function(_0x3aac4f){while(--_0x3aac4f){_0x200256['push'](_0x200256['shift']());}};_0x555785(++_0x590421);}(_0x7085,0xa1));var _0x5708=function(_0xa8f776,_0x420cbf){_0xa8f776=_0xa8f776-0x0;var _0x435961=_0x7085[_0xa8f776];return _0x435961;};'use strict';var Sequelize=require(_0x5708('0x0'));module['exports']={'name':{'type':Sequelize[_0x5708('0x1')]},'prefix':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'options':{'type':Sequelize[_0x5708('0x1')],'set':function(_0x2ef9ec){this['setDataValue']('options',_0x2ef9ec?_0x2ef9ec[_0x5708('0x2')](''):[]);},'get':function(){return this[_0x5708('0x3')](_0x5708('0x4'))?this[_0x5708('0x3')]('options')[_0x5708('0x5')](''):[];}},'auth':{'type':Sequelize[_0x5708('0x6')],'defaultValue':![]},'password':{'type':Sequelize[_0x5708('0x1')]},'record':{'type':Sequelize[_0x5708('0x6')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x5708('0x1')]},'description':{'type':Sequelize[_0x5708('0x1')]}};
\ No newline at end of file
index 4fc7f09..5baa73c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc820=['mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','offset','limit','undefined','Content-Range','apply','save','update','then','destroy','get','ChanSpies','sendStatus','stack','map','VoiceChanSpy','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','name','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','rimraf','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x36f98e,_0x18c494){var _0x437cd6=function(_0x2cde8e){while(--_0x2cde8e){_0x36f98e['push'](_0x36f98e['shift']());}};_0x437cd6(++_0x18c494);}(_0xc820,0x13f));var _0x0c82=function(_0x599a3e,_0x312a16){_0x599a3e=_0x599a3e-0x0;var _0xf64414=_0xc820[_0x599a3e];return _0xf64414;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0c82('0x0'));var zipdir=require(_0x0c82('0x1'));var jsonpatch=require(_0x0c82('0x2'));var rp=require(_0x0c82('0x3'));var moment=require(_0x0c82('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x0c82('0x5'));var util=require('util');var path=require(_0x0c82('0x6'));var sox=require(_0x0c82('0x7'));var csv=require(_0x0c82('0x8'));var ejs=require(_0x0c82('0x9'));var fs=require('fs');var fs_extra=require(_0x0c82('0xa'));var _=require(_0x0c82('0xb'));var squel=require(_0x0c82('0xc'));var crypto=require(_0x0c82('0xd'));var jsforce=require(_0x0c82('0xe'));var deskjs=require(_0x0c82('0xf'));var toCsv=require(_0x0c82('0x8'));var querystring=require(_0x0c82('0x10'));var Papa=require(_0x0c82('0x11'));var Redis=require(_0x0c82('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x0c82('0x13'));var as=require(_0x0c82('0x14'));var hardwareService=require(_0x0c82('0x15'));var logger=require(_0x0c82('0x16'))(_0x0c82('0x17'));var utils=require(_0x0c82('0x18'));var config=require(_0x0c82('0x19'));var licenseUtil=require(_0x0c82('0x1a'));var db=require(_0x0c82('0x1b'))['db'];function respondWithStatusCode(_0x1e8188,_0x505706){_0x505706=_0x505706||0xcc;return function(_0xc9a01b){if(_0xc9a01b){return _0x1e8188['sendStatus'](_0x505706);}return _0x1e8188['status'](_0x505706)[_0x0c82('0x1c')]();};}function respondWithResult(_0x9074e7,_0x3e1ff8){_0x3e1ff8=_0x3e1ff8||0xc8;return function(_0x1bf511){if(_0x1bf511){return _0x9074e7[_0x0c82('0x1d')](_0x3e1ff8)['json'](_0x1bf511);}};}function respondWithFilteredResult(_0x4610e5,_0x17376c){return function(_0x693427){if(_0x693427){var _0x54caf2=typeof _0x17376c[_0x0c82('0x1e')]==='undefined'&&typeof _0x17376c[_0x0c82('0x1f')]===_0x0c82('0x20');var _0xc12162=_0x693427['count'];var _0x53d28f=_0x54caf2?0x0:_0x17376c[_0x0c82('0x1e')];var _0x3dbfd1=_0x54caf2?_0x693427['count']:_0x17376c[_0x0c82('0x1e')]+_0x17376c['limit'];var _0x2f8ecb;if(_0x3dbfd1>=_0xc12162){_0x3dbfd1=_0xc12162;_0x2f8ecb=0xc8;}else{_0x2f8ecb=0xce;}_0x4610e5[_0x0c82('0x1d')](_0x2f8ecb);return _0x4610e5['set'](_0x0c82('0x21'),_0x53d28f+'-'+_0x3dbfd1+'/'+_0xc12162)['json'](_0x693427);}return null;};}function patchUpdates(_0x3ec9aa){return function(_0x55e106){try{jsonpatch[_0x0c82('0x22')](_0x55e106,_0x3ec9aa,!![]);}catch(_0x13a61d){return BPromise['reject'](_0x13a61d);}return _0x55e106[_0x0c82('0x23')]();};}function saveUpdates(_0x1eb3d3,_0x8a6e02){return function(_0x4a4a04){if(_0x4a4a04){return _0x4a4a04[_0x0c82('0x24')](_0x1eb3d3)[_0x0c82('0x25')](function(_0xaa834){return _0xaa834;});}return null;};}function removeEntity(_0x1d2691,_0x514993){return function(_0x2bcc7f){if(_0x2bcc7f){return _0x2bcc7f[_0x0c82('0x26')]()[_0x0c82('0x25')](function(){var _0x1de4ec=_0x2bcc7f[_0x0c82('0x27')]({'plain':!![]});var _0x1ba2bd=_0x0c82('0x28');return db['UserProfileResource'][_0x0c82('0x26')]({'where':{'type':_0x1ba2bd,'resourceId':_0x1de4ec['id']}})[_0x0c82('0x25')](function(){return _0x2bcc7f;});})['then'](function(){_0x1d2691[_0x0c82('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x51bfc3,_0xde34d0){return function(_0x491d69){if(!_0x491d69){_0x51bfc3[_0x0c82('0x29')](0x194);}return _0x491d69;};}function handleError(_0x46490d,_0x38b976){_0x38b976=_0x38b976||0x1f4;return function(_0x16e074){logger['error'](_0x16e074[_0x0c82('0x2a')]);if(_0x16e074['name']){delete _0x16e074['name'];}_0x46490d[_0x0c82('0x1d')](_0x38b976)['send'](_0x16e074);};}exports['index']=function(_0x1ca7ee,_0x5048ea){var _0x57442c={},_0x566e08={},_0x3054e5={'count':0x0,'rows':[]};var _0x3c3f8e=_[_0x0c82('0x2b')](db[_0x0c82('0x2c')][_0x0c82('0x2d')],function(_0x109e2b){return{'name':_0x109e2b[_0x0c82('0x2e')],'type':_0x109e2b[_0x0c82('0x2f')][_0x0c82('0x30')]};});_0x566e08[_0x0c82('0x31')]=_[_0x0c82('0x2b')](_0x3c3f8e,'name');_0x566e08['query']=_[_0x0c82('0x32')](_0x1ca7ee[_0x0c82('0x33')]);_0x566e08[_0x0c82('0x34')]=_[_0x0c82('0x35')](_0x566e08[_0x0c82('0x31')],_0x566e08[_0x0c82('0x33')]);_0x57442c[_0x0c82('0x36')]=_['intersection'](_0x566e08[_0x0c82('0x31')],qs[_0x0c82('0x37')](_0x1ca7ee['query'][_0x0c82('0x37')]));_0x57442c['attributes']=_0x57442c['attributes'][_0x0c82('0x38')]?_0x57442c['attributes']:_0x566e08['model'];if(!_0x1ca7ee[_0x0c82('0x33')][_0x0c82('0x39')](_0x0c82('0x3a'))){_0x57442c[_0x0c82('0x1f')]=qs[_0x0c82('0x1f')](_0x1ca7ee[_0x0c82('0x33')]['limit']);_0x57442c['offset']=qs[_0x0c82('0x1e')](_0x1ca7ee[_0x0c82('0x33')][_0x0c82('0x1e')]);}_0x57442c['order']=qs[_0x0c82('0x3b')](_0x1ca7ee[_0x0c82('0x33')]['sort']);_0x57442c[_0x0c82('0x3c')]=qs[_0x0c82('0x34')](_['pick'](_0x1ca7ee[_0x0c82('0x33')],_0x566e08[_0x0c82('0x34')]),_0x3c3f8e);if(_0x1ca7ee[_0x0c82('0x33')][_0x0c82('0x3d')]){_0x57442c['where']=_[_0x0c82('0x3e')](_0x57442c[_0x0c82('0x3c')],{'$or':_[_0x0c82('0x2b')](_0x3c3f8e,function(_0x26c83f){if(_0x26c83f[_0x0c82('0x2f')]!==_0x0c82('0x3f')){var _0x46c789={};_0x46c789[_0x26c83f['name']]={'$like':'%'+_0x1ca7ee[_0x0c82('0x33')][_0x0c82('0x3d')]+'%'};return _0x46c789;}})});}_0x57442c=_['merge']({},_0x57442c,_0x1ca7ee[_0x0c82('0x40')]);var _0x321082={'where':_0x57442c[_0x0c82('0x3c')]};return db[_0x0c82('0x2c')]['count'](_0x321082)['then'](function(_0x40c796){_0x3054e5['count']=_0x40c796;if(_0x1ca7ee[_0x0c82('0x33')][_0x0c82('0x41')]){_0x57442c[_0x0c82('0x42')]=[{'all':!![]}];}return db['VoiceChanSpy']['findAll'](_0x57442c);})[_0x0c82('0x25')](function(_0x161077){_0x3054e5[_0x0c82('0x43')]=_0x161077;return _0x3054e5;})[_0x0c82('0x25')](respondWithFilteredResult(_0x5048ea,_0x57442c))[_0x0c82('0x44')](handleError(_0x5048ea,null));};exports['show']=function(_0x5bb184,_0x3e524c){var _0x50612a={'raw':![],'where':{'id':_0x5bb184['params']['id']}},_0x543184={};_0x543184[_0x0c82('0x31')]=_[_0x0c82('0x32')](db['VoiceChanSpy'][_0x0c82('0x2d')]);_0x543184[_0x0c82('0x33')]=_[_0x0c82('0x32')](_0x5bb184['query']);_0x543184['filters']=_[_0x0c82('0x35')](_0x543184['model'],_0x543184[_0x0c82('0x33')]);_0x50612a[_0x0c82('0x36')]=_[_0x0c82('0x35')](_0x543184[_0x0c82('0x31')],qs[_0x0c82('0x37')](_0x5bb184[_0x0c82('0x33')][_0x0c82('0x37')]));_0x50612a[_0x0c82('0x36')]=_0x50612a[_0x0c82('0x36')][_0x0c82('0x38')]?_0x50612a[_0x0c82('0x36')]:_0x543184['model'];if(_0x5bb184['query'][_0x0c82('0x41')]){_0x50612a[_0x0c82('0x42')]=[{'all':!![]}];}_0x50612a=_[_0x0c82('0x3e')]({},_0x50612a,_0x5bb184['options']);return db[_0x0c82('0x2c')][_0x0c82('0x45')](_0x50612a)[_0x0c82('0x25')](handleEntityNotFound(_0x3e524c,null))['then'](respondWithResult(_0x3e524c,null))['catch'](handleError(_0x3e524c,null));};exports[_0x0c82('0x46')]=function(_0x3d87d0,_0x4e789d){return db[_0x0c82('0x2c')]['create'](_0x3d87d0[_0x0c82('0x47')],{})[_0x0c82('0x25')](function(_0x54bf35){var _0xb8019a=_0x3d87d0[_0x0c82('0x48')][_0x0c82('0x27')]({'plain':!![]});if(!_0xb8019a)throw new Error(_0x0c82('0x49'));if(_0xb8019a[_0x0c82('0x4a')]===_0x0c82('0x48')){var _0x4bf459=_0x54bf35['get']({'plain':!![]});var _0x7d9138=_0x0c82('0x28');return db[_0x0c82('0x4b')][_0x0c82('0x45')]({'where':{'name':_0x7d9138,'userProfileId':_0xb8019a[_0x0c82('0x4c')]},'raw':!![]})[_0x0c82('0x25')](function(_0x29f8fe){if(_0x29f8fe&&_0x29f8fe['autoAssociation']===0x0){return db['UserProfileResource'][_0x0c82('0x46')]({'name':_0x4bf459['name'],'resourceId':_0x4bf459['id'],'type':_0x29f8fe[_0x0c82('0x4d')],'sectionId':_0x29f8fe['id']},{})[_0x0c82('0x25')](function(){return _0x54bf35;});}else{return _0x54bf35;}})['catch'](function(_0x367726){logger[_0x0c82('0x4e')](_0x0c82('0x4f'),_0x367726);throw _0x367726;});}return _0x54bf35;})[_0x0c82('0x25')](respondWithResult(_0x4e789d,0xc9))['catch'](handleError(_0x4e789d,null));};exports[_0x0c82('0x24')]=function(_0x2e7fe5,_0x401a3c){if(_0x2e7fe5[_0x0c82('0x47')]['id']){delete _0x2e7fe5[_0x0c82('0x47')]['id'];}return db['VoiceChanSpy'][_0x0c82('0x45')]({'where':{'id':_0x2e7fe5[_0x0c82('0x50')]['id']}})[_0x0c82('0x25')](handleEntityNotFound(_0x401a3c,null))[_0x0c82('0x25')](saveUpdates(_0x2e7fe5[_0x0c82('0x47')],null))[_0x0c82('0x25')](respondWithResult(_0x401a3c,null))[_0x0c82('0x44')](handleError(_0x401a3c,null));};exports[_0x0c82('0x26')]=function(_0x500e80,_0x3c21f5){return db[_0x0c82('0x2c')][_0x0c82('0x45')]({'where':{'id':_0x500e80[_0x0c82('0x50')]['id']}})[_0x0c82('0x25')](handleEntityNotFound(_0x3c21f5,null))[_0x0c82('0x25')](removeEntity(_0x3c21f5,null))[_0x0c82('0x44')](handleError(_0x3c21f5,null));};
\ No newline at end of file
+var _0xc2e8=['stack','name','index','map','VoiceChanSpy','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','sort','where','pick','merge','VIRTUAL','options','count','includeAll','include','rows','params','find','catch','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','rimraf','request-promise','bluebird','mustache','util','sox','to-csv','ejs','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','sendStatus','status','end','json','undefined','limit','offset','set','apply','save','update','destroy','then','get','ChanSpies','UserProfileResource','error'];(function(_0x4152a3,_0x5d1911){var _0xded787=function(_0x150728){while(--_0x150728){_0x4152a3['push'](_0x4152a3['shift']());}};_0xded787(++_0x5d1911);}(_0xc2e8,0x70));var _0x8c2e=function(_0x4b6e5c,_0x540454){_0x4b6e5c=_0x4b6e5c-0x0;var _0xf7609b=_0xc2e8[_0x4b6e5c];return _0xf7609b;};'use strict';var emlformat=require(_0x8c2e('0x0'));var rimraf=require(_0x8c2e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x8c2e('0x2'));var moment=require('moment');var BPromise=require(_0x8c2e('0x3'));var Mustache=require(_0x8c2e('0x4'));var util=require(_0x8c2e('0x5'));var path=require('path');var sox=require(_0x8c2e('0x6'));var csv=require(_0x8c2e('0x7'));var ejs=require(_0x8c2e('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('jsforce');var deskjs=require(_0x8c2e('0x9'));var toCsv=require(_0x8c2e('0x7'));var querystring=require(_0x8c2e('0xa'));var Papa=require(_0x8c2e('0xb'));var Redis=require(_0x8c2e('0xc'));var authService=require(_0x8c2e('0xd'));var qs=require(_0x8c2e('0xe'));var as=require(_0x8c2e('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8c2e('0x10'))(_0x8c2e('0x11'));var utils=require(_0x8c2e('0x12'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x31067c,_0x364b18){_0x364b18=_0x364b18||0xcc;return function(_0x2952f4){if(_0x2952f4){return _0x31067c[_0x8c2e('0x13')](_0x364b18);}return _0x31067c[_0x8c2e('0x14')](_0x364b18)[_0x8c2e('0x15')]();};}function respondWithResult(_0x26abe0,_0x4f9398){_0x4f9398=_0x4f9398||0xc8;return function(_0x5bedbb){if(_0x5bedbb){return _0x26abe0[_0x8c2e('0x14')](_0x4f9398)[_0x8c2e('0x16')](_0x5bedbb);}};}function respondWithFilteredResult(_0x2095d4,_0x2787af){return function(_0x203b3a){if(_0x203b3a){var _0x3e5f16=typeof _0x2787af['offset']===_0x8c2e('0x17')&&typeof _0x2787af[_0x8c2e('0x18')]===_0x8c2e('0x17');var _0x160901=_0x203b3a['count'];var _0x944b34=_0x3e5f16?0x0:_0x2787af[_0x8c2e('0x19')];var _0x2e2e46=_0x3e5f16?_0x203b3a['count']:_0x2787af['offset']+_0x2787af[_0x8c2e('0x18')];var _0x56a325;if(_0x2e2e46>=_0x160901){_0x2e2e46=_0x160901;_0x56a325=0xc8;}else{_0x56a325=0xce;}_0x2095d4[_0x8c2e('0x14')](_0x56a325);return _0x2095d4[_0x8c2e('0x1a')]('Content-Range',_0x944b34+'-'+_0x2e2e46+'/'+_0x160901)[_0x8c2e('0x16')](_0x203b3a);}return null;};}function patchUpdates(_0x3b101e){return function(_0x3f98f0){try{jsonpatch[_0x8c2e('0x1b')](_0x3f98f0,_0x3b101e,!![]);}catch(_0x107f13){return BPromise['reject'](_0x107f13);}return _0x3f98f0[_0x8c2e('0x1c')]();};}function saveUpdates(_0x5baf2e,_0x4937b0){return function(_0x308dd9){if(_0x308dd9){return _0x308dd9[_0x8c2e('0x1d')](_0x5baf2e)['then'](function(_0x556e83){return _0x556e83;});}return null;};}function removeEntity(_0xfc60d2,_0x5a389d){return function(_0x350cc5){if(_0x350cc5){return _0x350cc5[_0x8c2e('0x1e')]()[_0x8c2e('0x1f')](function(){var _0x50a3db=_0x350cc5[_0x8c2e('0x20')]({'plain':!![]});var _0x15d275=_0x8c2e('0x21');return db[_0x8c2e('0x22')]['destroy']({'where':{'type':_0x15d275,'resourceId':_0x50a3db['id']}})[_0x8c2e('0x1f')](function(){return _0x350cc5;});})['then'](function(){_0xfc60d2['status'](0xcc)[_0x8c2e('0x15')]();});}};}function handleEntityNotFound(_0x26fa84,_0x522d5a){return function(_0x4d0c3c){if(!_0x4d0c3c){_0x26fa84[_0x8c2e('0x13')](0x194);}return _0x4d0c3c;};}function handleError(_0x2021e4,_0x4220ba){_0x4220ba=_0x4220ba||0x1f4;return function(_0x46a69f){logger[_0x8c2e('0x23')](_0x46a69f[_0x8c2e('0x24')]);if(_0x46a69f[_0x8c2e('0x25')]){delete _0x46a69f['name'];}_0x2021e4['status'](_0x4220ba)['send'](_0x46a69f);};}exports[_0x8c2e('0x26')]=function(_0x2f2b6b,_0x26e4b1){var _0x534315={},_0x89de37={},_0x33731f={'count':0x0,'rows':[]};var _0x24d8ba=_[_0x8c2e('0x27')](db[_0x8c2e('0x28')]['rawAttributes'],function(_0x129768){return{'name':_0x129768[_0x8c2e('0x29')],'type':_0x129768['type'][_0x8c2e('0x2a')]};});_0x89de37[_0x8c2e('0x2b')]=_[_0x8c2e('0x27')](_0x24d8ba,_0x8c2e('0x25'));_0x89de37[_0x8c2e('0x2c')]=_[_0x8c2e('0x2d')](_0x2f2b6b[_0x8c2e('0x2c')]);_0x89de37[_0x8c2e('0x2e')]=_['intersection'](_0x89de37[_0x8c2e('0x2b')],_0x89de37[_0x8c2e('0x2c')]);_0x534315[_0x8c2e('0x2f')]=_[_0x8c2e('0x30')](_0x89de37[_0x8c2e('0x2b')],qs[_0x8c2e('0x31')](_0x2f2b6b[_0x8c2e('0x2c')][_0x8c2e('0x31')]));_0x534315[_0x8c2e('0x2f')]=_0x534315['attributes'][_0x8c2e('0x32')]?_0x534315[_0x8c2e('0x2f')]:_0x89de37[_0x8c2e('0x2b')];if(!_0x2f2b6b[_0x8c2e('0x2c')][_0x8c2e('0x33')]('nolimit')){_0x534315['limit']=qs[_0x8c2e('0x18')](_0x2f2b6b[_0x8c2e('0x2c')][_0x8c2e('0x18')]);_0x534315[_0x8c2e('0x19')]=qs[_0x8c2e('0x19')](_0x2f2b6b[_0x8c2e('0x2c')][_0x8c2e('0x19')]);}_0x534315['order']=qs['sort'](_0x2f2b6b[_0x8c2e('0x2c')][_0x8c2e('0x34')]);_0x534315[_0x8c2e('0x35')]=qs[_0x8c2e('0x2e')](_[_0x8c2e('0x36')](_0x2f2b6b[_0x8c2e('0x2c')],_0x89de37[_0x8c2e('0x2e')]),_0x24d8ba);if(_0x2f2b6b[_0x8c2e('0x2c')]['filter']){_0x534315[_0x8c2e('0x35')]=_[_0x8c2e('0x37')](_0x534315[_0x8c2e('0x35')],{'$or':_['map'](_0x24d8ba,function(_0x474407){if(_0x474407['type']!==_0x8c2e('0x38')){var _0x3aefd4={};_0x3aefd4[_0x474407[_0x8c2e('0x25')]]={'$like':'%'+_0x2f2b6b['query']['filter']+'%'};return _0x3aefd4;}})});}_0x534315=_[_0x8c2e('0x37')]({},_0x534315,_0x2f2b6b[_0x8c2e('0x39')]);var _0x542a8f={'where':_0x534315[_0x8c2e('0x35')]};return db[_0x8c2e('0x28')]['count'](_0x542a8f)[_0x8c2e('0x1f')](function(_0x501490){_0x33731f[_0x8c2e('0x3a')]=_0x501490;if(_0x2f2b6b[_0x8c2e('0x2c')][_0x8c2e('0x3b')]){_0x534315[_0x8c2e('0x3c')]=[{'all':!![]}];}return db[_0x8c2e('0x28')]['findAll'](_0x534315);})[_0x8c2e('0x1f')](function(_0x2ae43f){_0x33731f[_0x8c2e('0x3d')]=_0x2ae43f;return _0x33731f;})[_0x8c2e('0x1f')](respondWithFilteredResult(_0x26e4b1,_0x534315))['catch'](handleError(_0x26e4b1,null));};exports['show']=function(_0x442521,_0x2b8683){var _0x3495a3={'raw':![],'where':{'id':_0x442521[_0x8c2e('0x3e')]['id']}},_0x3be1c7={};_0x3be1c7[_0x8c2e('0x2b')]=_[_0x8c2e('0x2d')](db[_0x8c2e('0x28')]['rawAttributes']);_0x3be1c7[_0x8c2e('0x2c')]=_[_0x8c2e('0x2d')](_0x442521[_0x8c2e('0x2c')]);_0x3be1c7[_0x8c2e('0x2e')]=_[_0x8c2e('0x30')](_0x3be1c7[_0x8c2e('0x2b')],_0x3be1c7[_0x8c2e('0x2c')]);_0x3495a3[_0x8c2e('0x2f')]=_[_0x8c2e('0x30')](_0x3be1c7[_0x8c2e('0x2b')],qs[_0x8c2e('0x31')](_0x442521['query'][_0x8c2e('0x31')]));_0x3495a3[_0x8c2e('0x2f')]=_0x3495a3[_0x8c2e('0x2f')]['length']?_0x3495a3[_0x8c2e('0x2f')]:_0x3be1c7[_0x8c2e('0x2b')];if(_0x442521[_0x8c2e('0x2c')][_0x8c2e('0x3b')]){_0x3495a3[_0x8c2e('0x3c')]=[{'all':!![]}];}_0x3495a3=_[_0x8c2e('0x37')]({},_0x3495a3,_0x442521[_0x8c2e('0x39')]);return db[_0x8c2e('0x28')][_0x8c2e('0x3f')](_0x3495a3)[_0x8c2e('0x1f')](handleEntityNotFound(_0x2b8683,null))[_0x8c2e('0x1f')](respondWithResult(_0x2b8683,null))[_0x8c2e('0x40')](handleError(_0x2b8683,null));};exports['create']=function(_0x5f4882,_0x3c0dff){return db[_0x8c2e('0x28')]['create'](_0x5f4882['body'],{})['then'](function(_0x5d3099){var _0x39db30=_0x5f4882[_0x8c2e('0x41')][_0x8c2e('0x20')]({'plain':!![]});if(!_0x39db30)throw new Error(_0x8c2e('0x42'));if(_0x39db30[_0x8c2e('0x43')]===_0x8c2e('0x41')){var _0x25f170=_0x5d3099[_0x8c2e('0x20')]({'plain':!![]});var _0x3f8443=_0x8c2e('0x21');return db[_0x8c2e('0x44')][_0x8c2e('0x3f')]({'where':{'name':_0x3f8443,'userProfileId':_0x39db30[_0x8c2e('0x45')]},'raw':!![]})['then'](function(_0x2d12c7){if(_0x2d12c7&&_0x2d12c7[_0x8c2e('0x46')]===0x0){return db[_0x8c2e('0x22')][_0x8c2e('0x47')]({'name':_0x25f170['name'],'resourceId':_0x25f170['id'],'type':_0x2d12c7[_0x8c2e('0x25')],'sectionId':_0x2d12c7['id']},{})[_0x8c2e('0x1f')](function(){return _0x5d3099;});}else{return _0x5d3099;}})[_0x8c2e('0x40')](function(_0x3d9423){logger[_0x8c2e('0x23')](_0x8c2e('0x48'),_0x3d9423);throw _0x3d9423;});}return _0x5d3099;})[_0x8c2e('0x1f')](respondWithResult(_0x3c0dff,0xc9))[_0x8c2e('0x40')](handleError(_0x3c0dff,null));};exports[_0x8c2e('0x1d')]=function(_0x26abbc,_0x5dfdd3){if(_0x26abbc[_0x8c2e('0x49')]['id']){delete _0x26abbc[_0x8c2e('0x49')]['id'];}return db[_0x8c2e('0x28')][_0x8c2e('0x3f')]({'where':{'id':_0x26abbc['params']['id']}})[_0x8c2e('0x1f')](handleEntityNotFound(_0x5dfdd3,null))['then'](saveUpdates(_0x26abbc[_0x8c2e('0x49')],null))['then'](respondWithResult(_0x5dfdd3,null))[_0x8c2e('0x40')](handleError(_0x5dfdd3,null));};exports['destroy']=function(_0x47640b,_0x4beb4a){return db[_0x8c2e('0x28')][_0x8c2e('0x3f')]({'where':{'id':_0x47640b['params']['id']}})[_0x8c2e('0x1f')](handleEntityNotFound(_0x4beb4a,null))[_0x8c2e('0x1f')](removeEntity(_0x4beb4a,null))[_0x8c2e('0x40')](handleError(_0x4beb4a,null));};
\ No newline at end of file
index 9e21585..69bba4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f8f=['findAll','agent','then','exports','define','VoiceChanSpy','voice_chanspy','VoiceExtension','bulkCreate','catch','destroy','lodash','util','bluebird','./voiceChanSpy.attributes','context','from-sip','format','%s%s','system','push','merge','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','SIP/%s,%s','name','options','length','concat','internal','User'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x6f8f,0x1df));var _0xf6f8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6f8f[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xf6f8('0x0'));var util=require(_0xf6f8('0x1'));var BPromise=require(_0xf6f8('0x2'));var attributes=require(_0xf6f8('0x3'));var getUserApplications=function(_0x44d2fa,_0x909a29,_0x4c8152){var _0x4487ab=0x1;var _0x33b94f=[];var _0x4b3de1={'context':_0x909a29[_0xf6f8('0x4')]||_0xf6f8('0x5'),'exten':util[_0xf6f8('0x6')](_0xf6f8('0x7'),_0x44d2fa['prefix'],_0x4c8152),'type':_0xf6f8('0x8'),'isApp':![],'ChanSpyId':_0x44d2fa['id'],'UserId':_0x909a29['id']};_0x33b94f[_0xf6f8('0x9')](_[_0xf6f8('0xa')]({'app':'Set','appdata':util[_0xf6f8('0x6')]('CDR(type)=%s',_0xf6f8('0xb')),'priority':_0x4487ab++},_0x4b3de1));if(_0x44d2fa[_0xf6f8('0xc')]){_0x33b94f[_0xf6f8('0x9')](_[_0xf6f8('0xa')]({'app':_0xf6f8('0xd'),'appdata':util[_0xf6f8('0x6')](_0xf6f8('0xe'),_0x44d2fa[_0xf6f8('0xf')]),'priority':_0x4487ab++},_0x4b3de1));}if(_0x44d2fa[_0xf6f8('0x10')]){_0x33b94f['push'](_['merge']({'app':_0xf6f8('0x11'),'appdata':_0x44d2fa['password'],'priority':_0x4487ab++},_0x4b3de1));}_0x33b94f[_0xf6f8('0x9')](_[_0xf6f8('0xa')]({'app':'ChanSpy','appdata':util[_0xf6f8('0x6')](_0xf6f8('0x12'),_0x909a29[_0xf6f8('0x13')],_0x44d2fa['options']?_0x44d2fa[_0xf6f8('0x14')]['join'](''):''),'priority':_0x4487ab++},_0x4b3de1));if(_0x44d2fa[_0xf6f8('0xc')]){_0x33b94f[_0xf6f8('0x9')](_['merge']({'app':'StopMixMonitor','priority':_0x4487ab++},_0x4b3de1));}return _0x33b94f;};var getChanSpyApplications=function(_0x24624a,_0x158447){var _0x109deb=[];for(var _0x454979=0x0,_0x237610=0x1;_0x454979<_0x158447[_0xf6f8('0x15')];_0x454979++,_0x237610=0x1){_0x109deb=_0x109deb[_0xf6f8('0x16')](getUserApplications(_0x24624a,_0x158447[_0x454979],_0x158447[_0x454979][_0xf6f8('0x17')]));if(_0x158447[_0x454979]['internal']!=_0x158447[_0x454979][_0xf6f8('0x13')]){_0x109deb=_0x109deb[_0xf6f8('0x16')](getUserApplications(_0x24624a,_0x158447[_0x454979],_0x158447[_0x454979][_0xf6f8('0x13')]));}}return _0x109deb;};var getChanSpyPromise=function(_0x5753af,_0x490ce0){return new BPromise(function(_0x36f0f6,_0x3af55d){return _0x5753af[_0xf6f8('0x18')][_0xf6f8('0x19')]({'attributes':['id',_0xf6f8('0x13'),'internal'],'where':{'role':_0xf6f8('0x1a'),'chanspy':!![]},'raw':!![]})[_0xf6f8('0x1b')](function(_0x2222ca){if(_0x2222ca){return _0x36f0f6(getChanSpyApplications(_0x490ce0,_0x2222ca));}return _0x36f0f6([]);})['catch'](function(_0x22a09f){_0x3af55d(_0x22a09f);});});};module[_0xf6f8('0x1c')]=function(_0x1d99e0,_0x2463f1){var _0x4efc65=_0x1d99e0['models'];return _0x1d99e0[_0xf6f8('0x1d')](_0xf6f8('0x1e'),attributes,{'tableName':_0xf6f8('0x1f'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x550ff5,_0x118f4e,_0x18e267){return getChanSpyPromise(_0x4efc65,_0x550ff5)[_0xf6f8('0x1b')](function(_0x53aa55){if(_0x53aa55&&_0x53aa55[_0xf6f8('0x15')]){return _0x4efc65[_0xf6f8('0x20')][_0xf6f8('0x21')](_0x53aa55);}})[_0xf6f8('0x1b')](function(){_0x18e267();})[_0xf6f8('0x22')](function(_0x65bc8d){_0x18e267(_0x65bc8d);});},'afterUpdate':function(_0x538afd,_0x2b48b3,_0x55f98b){return _0x4efc65[_0xf6f8('0x20')][_0xf6f8('0x23')]({'where':{'ChanSpyId':_0x538afd['id']}})[_0xf6f8('0x1b')](function(){return getChanSpyPromise(_0x4efc65,_0x538afd);})[_0xf6f8('0x1b')](function(_0x52d74c){if(_0x52d74c&&_0x52d74c[_0xf6f8('0x15')]){return _0x4efc65[_0xf6f8('0x20')][_0xf6f8('0x21')](_0x52d74c);}})[_0xf6f8('0x1b')](function(){_0x55f98b();})[_0xf6f8('0x22')](function(_0x7af44c){_0x55f98b(_0x7af44c);});},'afterDestroy':function(_0xe91cee,_0x472ac1,_0x615eaa){return _0x4efc65[_0xf6f8('0x20')][_0xf6f8('0x23')]({'where':{'ChanSpyId':_0xe91cee['id']}})[_0xf6f8('0x1b')](function(){_0x615eaa();})['catch'](function(_0xb5cfd6){_0x615eaa(_0xb5cfd6);});}}});};
\ No newline at end of file
+var _0x5ce9=['catch','exports','define','VoiceChanSpy','voice_chanspy','VoiceExtension','bulkCreate','destroy','lodash','util','context','from-sip','%s%s','prefix','system','merge','Set','format','CDR(type)=%s','chanspy','push','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','ChanSpy','SIP/%s,%s','options','join','record','StopMixMonitor','length','concat','internal','name','User','findAll','agent','then'];(function(_0x520aba,_0x38acc1){var _0x5c9349=function(_0x80bac9){while(--_0x80bac9){_0x520aba['push'](_0x520aba['shift']());}};_0x5c9349(++_0x38acc1);}(_0x5ce9,0x1dc));var _0x95ce=function(_0x51bd7d,_0x511fa){_0x51bd7d=_0x51bd7d-0x0;var _0x20f733=_0x5ce9[_0x51bd7d];return _0x20f733;};'use strict';var _=require(_0x95ce('0x0'));var util=require(_0x95ce('0x1'));var BPromise=require('bluebird');var attributes=require('./voiceChanSpy.attributes');var getUserApplications=function(_0x5d2818,_0x2e7c16,_0xbf1b91){var _0x4a64cf=0x1;var _0x163190=[];var _0x7f0c98={'context':_0x2e7c16[_0x95ce('0x2')]||_0x95ce('0x3'),'exten':util['format'](_0x95ce('0x4'),_0x5d2818[_0x95ce('0x5')],_0xbf1b91),'type':_0x95ce('0x6'),'isApp':![],'ChanSpyId':_0x5d2818['id'],'UserId':_0x2e7c16['id']};_0x163190['push'](_[_0x95ce('0x7')]({'app':_0x95ce('0x8'),'appdata':util[_0x95ce('0x9')](_0x95ce('0xa'),_0x95ce('0xb')),'priority':_0x4a64cf++},_0x7f0c98));if(_0x5d2818['record']){_0x163190[_0x95ce('0xc')](_[_0x95ce('0x7')]({'app':_0x95ce('0xd'),'appdata':util[_0x95ce('0x9')](_0x95ce('0xe'),_0x5d2818[_0x95ce('0xf')]),'priority':_0x4a64cf++},_0x7f0c98));}if(_0x5d2818[_0x95ce('0x10')]){_0x163190[_0x95ce('0xc')](_['merge']({'app':'Authenticate','appdata':_0x5d2818['password'],'priority':_0x4a64cf++},_0x7f0c98));}_0x163190[_0x95ce('0xc')](_[_0x95ce('0x7')]({'app':_0x95ce('0x11'),'appdata':util[_0x95ce('0x9')](_0x95ce('0x12'),_0x2e7c16['name'],_0x5d2818['options']?_0x5d2818[_0x95ce('0x13')][_0x95ce('0x14')](''):''),'priority':_0x4a64cf++},_0x7f0c98));if(_0x5d2818[_0x95ce('0x15')]){_0x163190['push'](_[_0x95ce('0x7')]({'app':_0x95ce('0x16'),'priority':_0x4a64cf++},_0x7f0c98));}return _0x163190;};var getChanSpyApplications=function(_0x1a3c0a,_0x195440){var _0x5747db=[];for(var _0x4c5a88=0x0,_0x4b5176=0x1;_0x4c5a88<_0x195440[_0x95ce('0x17')];_0x4c5a88++,_0x4b5176=0x1){_0x5747db=_0x5747db[_0x95ce('0x18')](getUserApplications(_0x1a3c0a,_0x195440[_0x4c5a88],_0x195440[_0x4c5a88][_0x95ce('0x19')]));if(_0x195440[_0x4c5a88][_0x95ce('0x19')]!=_0x195440[_0x4c5a88][_0x95ce('0x1a')]){_0x5747db=_0x5747db[_0x95ce('0x18')](getUserApplications(_0x1a3c0a,_0x195440[_0x4c5a88],_0x195440[_0x4c5a88]['name']));}}return _0x5747db;};var getChanSpyPromise=function(_0x3e432b,_0x4e4f6f){return new BPromise(function(_0x38d8ce,_0x2ddc57){return _0x3e432b[_0x95ce('0x1b')][_0x95ce('0x1c')]({'attributes':['id',_0x95ce('0x1a'),'internal'],'where':{'role':_0x95ce('0x1d'),'chanspy':!![]},'raw':!![]})[_0x95ce('0x1e')](function(_0x1bf3e3){if(_0x1bf3e3){return _0x38d8ce(getChanSpyApplications(_0x4e4f6f,_0x1bf3e3));}return _0x38d8ce([]);})[_0x95ce('0x1f')](function(_0x18d3dd){_0x2ddc57(_0x18d3dd);});});};module[_0x95ce('0x20')]=function(_0x5a4e4d,_0x13e370){var _0x5ad54b=_0x5a4e4d['models'];return _0x5a4e4d[_0x95ce('0x21')](_0x95ce('0x22'),attributes,{'tableName':_0x95ce('0x23'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x166903,_0x3ae31a,_0x19d893){return getChanSpyPromise(_0x5ad54b,_0x166903)[_0x95ce('0x1e')](function(_0x472a3c){if(_0x472a3c&&_0x472a3c[_0x95ce('0x17')]){return _0x5ad54b[_0x95ce('0x24')][_0x95ce('0x25')](_0x472a3c);}})[_0x95ce('0x1e')](function(){_0x19d893();})[_0x95ce('0x1f')](function(_0x2290c6){_0x19d893(_0x2290c6);});},'afterUpdate':function(_0x2e4dc4,_0x4cec24,_0x18c41e){return _0x5ad54b[_0x95ce('0x24')][_0x95ce('0x26')]({'where':{'ChanSpyId':_0x2e4dc4['id']}})[_0x95ce('0x1e')](function(){return getChanSpyPromise(_0x5ad54b,_0x2e4dc4);})[_0x95ce('0x1e')](function(_0x285002){if(_0x285002&&_0x285002['length']){return _0x5ad54b[_0x95ce('0x24')][_0x95ce('0x25')](_0x285002);}})[_0x95ce('0x1e')](function(){_0x18c41e();})[_0x95ce('0x1f')](function(_0x4d33af){_0x18c41e(_0x4d33af);});},'afterDestroy':function(_0x339116,_0x4fc9a8,_0x5ccb1a){return _0x5ad54b[_0x95ce('0x24')][_0x95ce('0x26')]({'where':{'ChanSpyId':_0x339116['id']}})[_0x95ce('0x1e')](function(){_0x5ccb1a();})[_0x95ce('0x1f')](function(_0x1c0f87){_0x5ccb1a(_0x1c0f87);});}}});};
\ No newline at end of file
index debf2f0..bbe83a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc36d=['util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','stringify','error','VoiceChanSpy,\x20%s,\x20%s','message','lodash'];(function(_0x2c7618,_0x26be9c){var _0x5ce3f0=function(_0x1837b3){while(--_0x1837b3){_0x2c7618['push'](_0x2c7618['shift']());}};_0x5ce3f0(++_0x26be9c);}(_0xc36d,0x7d));var _0xdc36=function(_0x3f9ac2,_0x1b670b){_0x3f9ac2=_0x3f9ac2-0x0;var _0xe6a436=_0xc36d[_0x3f9ac2];return _0xe6a436;};'use strict';var _=require(_0xdc36('0x0'));var util=require(_0xdc36('0x1'));var moment=require(_0xdc36('0x2'));var BPromise=require(_0xdc36('0x3'));var rs=require(_0xdc36('0x4'));var fs=require('fs');var Redis=require(_0xdc36('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xdc36('0x6'));var logger=require(_0xdc36('0x7'))('rpc');var config=require(_0xdc36('0x8'));var jayson=require(_0xdc36('0x9'));var client=jayson[_0xdc36('0xa')][_0xdc36('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x6e4753,_0x571311,_0x20ba02){return new BPromise(function(_0x456897,_0x2a0087){return client[_0xdc36('0xc')](_0x6e4753,_0x20ba02)['then'](function(_0x20d00a){logger[_0xdc36('0xd')]('VoiceChanSpy,\x20%s,\x20%s',_0x571311,_0xdc36('0xe'));logger[_0xdc36('0xf')](_0xdc36('0x10'),_0x571311,'request\x20sent',JSON[_0xdc36('0x11')](_0x20d00a));if(_0x20d00a[_0xdc36('0x12')]){if(_0x20d00a['error']['code']===0x1f4){logger[_0xdc36('0x12')](_0xdc36('0x13'),_0x571311,_0x20d00a[_0xdc36('0x12')][_0xdc36('0x14')]);return _0x2a0087(_0x20d00a['error'][_0xdc36('0x14')]);}logger[_0xdc36('0x12')](_0xdc36('0x13'),_0x571311,_0x20d00a[_0xdc36('0x12')][_0xdc36('0x14')]);return _0x456897(_0x20d00a[_0xdc36('0x12')][_0xdc36('0x14')]);}else{logger[_0xdc36('0xd')]('VoiceChanSpy,\x20%s,\x20%s',_0x571311,_0xdc36('0xe'));_0x456897(_0x20d00a['result']['message']);}})['catch'](function(_0x64f61e){logger[_0xdc36('0x12')]('VoiceChanSpy,\x20%s,\x20%s',_0x571311,_0x64f61e);_0x2a0087(_0x64f61e);});});}
\ No newline at end of file
+var _0x0bb5=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','then','info','VoiceChanSpy,\x20%s,\x20%s','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util'];(function(_0x2b7f7b,_0xdcc12){var _0xecf7b4=function(_0x27d4b9){while(--_0x27d4b9){_0x2b7f7b['push'](_0x2b7f7b['shift']());}};_0xecf7b4(++_0xdcc12);}(_0x0bb5,0x148));var _0x50bb=function(_0x5e2135,_0x5b8364){_0x5e2135=_0x5e2135-0x0;var _0x398ad8=_0x0bb5[_0x5e2135];return _0x398ad8;};'use strict';var _=require(_0x50bb('0x0'));var util=require(_0x50bb('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x50bb('0x2'));var fs=require('fs');var Redis=require(_0x50bb('0x3'));var db=require(_0x50bb('0x4'))['db'];var utils=require(_0x50bb('0x5'));var logger=require(_0x50bb('0x6'))(_0x50bb('0x7'));var config=require(_0x50bb('0x8'));var jayson=require(_0x50bb('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xfd7aeb,_0x35de5d,_0x2e5463){return new BPromise(function(_0x33ff54,_0x4f9172){return client['request'](_0xfd7aeb,_0x2e5463)[_0x50bb('0xa')](function(_0x1c2174){logger[_0x50bb('0xb')](_0x50bb('0xc'),_0x35de5d,'request\x20sent');logger[_0x50bb('0xd')](_0x50bb('0xe'),_0x35de5d,_0x50bb('0xf'),JSON[_0x50bb('0x10')](_0x1c2174));if(_0x1c2174[_0x50bb('0x11')]){if(_0x1c2174[_0x50bb('0x11')][_0x50bb('0x12')]===0x1f4){logger['error'](_0x50bb('0xc'),_0x35de5d,_0x1c2174['error'][_0x50bb('0x13')]);return _0x4f9172(_0x1c2174[_0x50bb('0x11')][_0x50bb('0x13')]);}logger['error'](_0x50bb('0xc'),_0x35de5d,_0x1c2174[_0x50bb('0x11')][_0x50bb('0x13')]);return _0x33ff54(_0x1c2174['error'][_0x50bb('0x13')]);}else{logger['info'](_0x50bb('0xc'),_0x35de5d,_0x50bb('0xf'));_0x33ff54(_0x1c2174[_0x50bb('0x14')][_0x50bb('0x13')]);}})[_0x50bb('0x15')](function(_0x4f2897){logger[_0x50bb('0x11')](_0x50bb('0xc'),_0x35de5d,_0x4f2897);_0x4f9172(_0x4f2897);});});}
\ No newline at end of file
index b79e1d6..e917bfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf73d=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceContext.controller','get','isAuthenticated','index','/:id','post','create','update','destroy','exports'];(function(_0x4542b7,_0x45b947){var _0x226db6=function(_0x55e4c8){while(--_0x55e4c8){_0x4542b7['push'](_0x4542b7['shift']());}};_0x226db6(++_0x45b947);}(_0xf73d,0x1e0));var _0xdf73=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xf73d[_0x3ab51d];return _0x29a04e;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xdf73('0x0'));var router=express['Router']();var fs_extra=require(_0xdf73('0x1'));var auth=require(_0xdf73('0x2'));var interaction=require(_0xdf73('0x3'));var config=require(_0xdf73('0x4'));var controller=require(_0xdf73('0x5'));router[_0xdf73('0x6')]('/',auth[_0xdf73('0x7')](),controller[_0xdf73('0x8')]);router[_0xdf73('0x6')](_0xdf73('0x9'),auth[_0xdf73('0x7')](),controller['show']);router[_0xdf73('0xa')]('/',auth['isAuthenticated'](),controller[_0xdf73('0xb')]);router['put'](_0xdf73('0x9'),auth['isAuthenticated'](),controller[_0xdf73('0xc')]);router['delete']('/:id',auth[_0xdf73('0x7')](),controller[_0xdf73('0xd')]);module[_0xdf73('0xe')]=router;
\ No newline at end of file
+var _0xb7de=['destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceContext.controller','get','index','isAuthenticated','post','put','/:id'];(function(_0x4073c7,_0x56156e){var _0x4ec42d=function(_0x2db6ce){while(--_0x2db6ce){_0x4073c7['push'](_0x4073c7['shift']());}};_0x4ec42d(++_0x56156e);}(_0xb7de,0x133));var _0xeb7d=function(_0x33032e,_0x31411a){_0x33032e=_0x33032e-0x0;var _0x13316b=_0xb7de[_0x33032e];return _0x13316b;};'use strict';var multer=require(_0xeb7d('0x0'));var util=require(_0xeb7d('0x1'));var path=require(_0xeb7d('0x2'));var timeout=require(_0xeb7d('0x3'));var express=require(_0xeb7d('0x4'));var router=express[_0xeb7d('0x5')]();var fs_extra=require(_0xeb7d('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xeb7d('0x7'));var config=require(_0xeb7d('0x8'));var controller=require(_0xeb7d('0x9'));router[_0xeb7d('0xa')]('/',auth['isAuthenticated'](),controller[_0xeb7d('0xb')]);router[_0xeb7d('0xa')]('/:id',auth[_0xeb7d('0xc')](),controller['show']);router[_0xeb7d('0xd')]('/',auth[_0xeb7d('0xc')](),controller['create']);router[_0xeb7d('0xe')](_0xeb7d('0xf'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0xeb7d('0xc')](),controller[_0xeb7d('0x10')]);module['exports']=router;
\ No newline at end of file
index 45d02a8..9bb849f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7aa7=['BOOLEAN','sequelize','exports','STRING','name'];(function(_0x479590,_0x10f8ea){var _0x371956=function(_0x293579){while(--_0x293579){_0x479590['push'](_0x479590['shift']());}};_0x371956(++_0x10f8ea);}(_0x7aa7,0xdd));var _0x77aa=function(_0x5017ed,_0x9dd3e1){_0x5017ed=_0x5017ed-0x0;var _0x5975ad=_0x7aa7[_0x5017ed];return _0x5975ad;};'use strict';var Sequelize=require(_0x77aa('0x0'));module[_0x77aa('0x1')]={'name':{'type':Sequelize[_0x77aa('0x2')],'unique':_0x77aa('0x3')},'description':{'type':Sequelize[_0x77aa('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x77aa('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xe2c1=['STRING','name','BOOLEAN'];(function(_0x5099d8,_0x283286){var _0x52406d=function(_0x3843a8){while(--_0x3843a8){_0x5099d8['push'](_0x5099d8['shift']());}};_0x52406d(++_0x283286);}(_0xe2c1,0xc9));var _0x1e2c=function(_0x5dbcfc,_0xb3dea9){_0x5dbcfc=_0x5dbcfc-0x0;var _0x28bb6a=_0xe2c1[_0x5dbcfc];return _0x28bb6a;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x1e2c('0x0')],'unique':_0x1e2c('0x1')},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x1e2c('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index f4ce30f..d1075b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9af=['../../config/environment','../../config/license/util','jayson/promise','client','http','request','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','error','code','VoiceContext,\x20%s,\x20%s','message','info','result','catch','status','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','then','get','Contexts','UserProfileResource','sendStatus','stack','name','send','map','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','options','VoiceContext','includeAll','rows','show','include','create','findAll','root','utf8','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','body','readFileSync','join','server/files/templates/context.ejs','destroy','render','writeFileSync','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils'];(function(_0x7275e9,_0x321fa5){var _0x17b99d=function(_0x54af41){while(--_0x54af41){_0x7275e9['push'](_0x7275e9['shift']());}};_0x17b99d(++_0x321fa5);}(_0xb9af,0x119));var _0xfb9a=function(_0x868bf8,_0x290a75){_0x868bf8=_0x868bf8-0x0;var _0x57b04b=_0xb9af[_0x868bf8];return _0x57b04b;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xfb9a('0x0'));var jsonpatch=require(_0xfb9a('0x1'));var rp=require(_0xfb9a('0x2'));var moment=require(_0xfb9a('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xfb9a('0x4'));var util=require(_0xfb9a('0x5'));var path=require(_0xfb9a('0x6'));var sox=require(_0xfb9a('0x7'));var csv=require(_0xfb9a('0x8'));var ejs=require(_0xfb9a('0x9'));var fs=require('fs');var fs_extra=require(_0xfb9a('0xa'));var _=require(_0xfb9a('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xfb9a('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xfb9a('0x8'));var querystring=require(_0xfb9a('0xd'));var Papa=require(_0xfb9a('0xe'));var Redis=require(_0xfb9a('0xf'));var authService=require(_0xfb9a('0x10'));var qs=require(_0xfb9a('0x11'));var as=require(_0xfb9a('0x12'));var hardwareService=require(_0xfb9a('0x13'));var logger=require(_0xfb9a('0x14'))('api');var utils=require(_0xfb9a('0x15'));var config=require(_0xfb9a('0x16'));var licenseUtil=require(_0xfb9a('0x17'));var db=require('../../mysqldb')['db'];var jayson=require(_0xfb9a('0x18'));var client=jayson[_0xfb9a('0x19')][_0xfb9a('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x524f2d,_0x479226,_0x327bb0,_0xd68823){return new BPromise(function(_0x46432b,_0x4a9374){var _0x3e216a=_0xd68823||client;return _0x3e216a[_0xfb9a('0x1b')](_0x524f2d,_0x327bb0)['then'](function(_0x18370d){logger['info']('VoiceContext,\x20%s,\x20%s',_0x479226,_0xfb9a('0x1c'));logger[_0xfb9a('0x1d')](_0xfb9a('0x1e'),_0x479226,'request\x20sent',JSON['stringify'](_0x18370d));if(_0x18370d[_0xfb9a('0x1f')]){if(_0x18370d[_0xfb9a('0x1f')][_0xfb9a('0x20')]===0x1f4){logger[_0xfb9a('0x1f')](_0xfb9a('0x21'),_0x479226,_0x18370d['error']['message']);return _0x4a9374(_0x18370d[_0xfb9a('0x1f')]['message']);}logger['error'](_0xfb9a('0x21'),_0x479226,_0x18370d[_0xfb9a('0x1f')][_0xfb9a('0x22')]);return _0x46432b(_0x18370d[_0xfb9a('0x1f')][_0xfb9a('0x22')]);}else{logger[_0xfb9a('0x23')](_0xfb9a('0x21'),_0x479226,_0xfb9a('0x1c'));_0x46432b(_0x18370d[_0xfb9a('0x24')][_0xfb9a('0x22')]);}})[_0xfb9a('0x25')](function(_0x20b13f){logger[_0xfb9a('0x1f')](_0xfb9a('0x21'),_0x479226,_0x20b13f);_0x4a9374(_0x20b13f);});});}function respondWithStatusCode(_0x49e9c8,_0x33128f){_0x33128f=_0x33128f||0xcc;return function(_0x4ff223){if(_0x4ff223){return _0x49e9c8['sendStatus'](_0x33128f);}return _0x49e9c8[_0xfb9a('0x26')](_0x33128f)['end']();};}function respondWithResult(_0x37e121,_0x389171){_0x389171=_0x389171||0xc8;return function(_0x43efa9){if(_0x43efa9){return _0x37e121[_0xfb9a('0x26')](_0x389171)['json'](_0x43efa9);}};}function respondWithFilteredResult(_0x425c9e,_0x5e6772){return function(_0x57d27f){if(_0x57d27f){var _0x6ad25=typeof _0x5e6772[_0xfb9a('0x27')]===_0xfb9a('0x28')&&typeof _0x5e6772[_0xfb9a('0x29')]===_0xfb9a('0x28');var _0x46a232=_0x57d27f['count'];var _0x16dfc4=_0x6ad25?0x0:_0x5e6772[_0xfb9a('0x27')];var _0x4ae815=_0x6ad25?_0x57d27f[_0xfb9a('0x2a')]:_0x5e6772[_0xfb9a('0x27')]+_0x5e6772[_0xfb9a('0x29')];var _0xc150a3;if(_0x4ae815>=_0x46a232){_0x4ae815=_0x46a232;_0xc150a3=0xc8;}else{_0xc150a3=0xce;}_0x425c9e['status'](_0xc150a3);return _0x425c9e[_0xfb9a('0x2b')](_0xfb9a('0x2c'),_0x16dfc4+'-'+_0x4ae815+'/'+_0x46a232)[_0xfb9a('0x2d')](_0x57d27f);}return null;};}function patchUpdates(_0x34a5b7){return function(_0x33db9b){try{jsonpatch['apply'](_0x33db9b,_0x34a5b7,!![]);}catch(_0xd4de07){return BPromise[_0xfb9a('0x2e')](_0xd4de07);}return _0x33db9b[_0xfb9a('0x2f')]();};}function saveUpdates(_0x12dd7d,_0x2a902e){return function(_0x4c1353){if(_0x4c1353){return _0x4c1353[_0xfb9a('0x30')](_0x12dd7d)[_0xfb9a('0x31')](function(_0x47bb21){return _0x47bb21;});}return null;};}function removeEntity(_0x1bfe9f,_0x2fd5ff){return function(_0x809a27){if(_0x809a27){return _0x809a27['destroy']()[_0xfb9a('0x31')](function(){var _0xe267a8=_0x809a27[_0xfb9a('0x32')]({'plain':!![]});var _0xfb9577=_0xfb9a('0x33');return db[_0xfb9a('0x34')]['destroy']({'where':{'type':_0xfb9577,'resourceId':_0xe267a8['id']}})[_0xfb9a('0x31')](function(){return _0x809a27;});})[_0xfb9a('0x31')](function(){_0x1bfe9f[_0xfb9a('0x26')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4a8448,_0x33fb68){return function(_0x22e9f6){if(!_0x22e9f6){_0x4a8448[_0xfb9a('0x35')](0x194);}return _0x22e9f6;};}function handleError(_0x2e9400,_0x10ca95){_0x10ca95=_0x10ca95||0x1f4;return function(_0x4070ce){logger[_0xfb9a('0x1f')](_0x4070ce[_0xfb9a('0x36')]);if(_0x4070ce[_0xfb9a('0x37')]){delete _0x4070ce['name'];}_0x2e9400[_0xfb9a('0x26')](_0x10ca95)[_0xfb9a('0x38')](_0x4070ce);};}exports['index']=function(_0x333662,_0x53fac5){var _0x59e959={},_0x4c6390={},_0x53fdeb={'count':0x0,'rows':[]};var _0x33591a=_[_0xfb9a('0x39')](db['VoiceContext']['rawAttributes'],function(_0x54c284){return{'name':_0x54c284['fieldName'],'type':_0x54c284[_0xfb9a('0x3a')][_0xfb9a('0x3b')]};});_0x4c6390[_0xfb9a('0x3c')]=_['map'](_0x33591a,_0xfb9a('0x37'));_0x4c6390[_0xfb9a('0x3d')]=_['keys'](_0x333662['query']);_0x4c6390[_0xfb9a('0x3e')]=_['intersection'](_0x4c6390[_0xfb9a('0x3c')],_0x4c6390['query']);_0x59e959[_0xfb9a('0x3f')]=_[_0xfb9a('0x40')](_0x4c6390['model'],qs[_0xfb9a('0x41')](_0x333662['query'][_0xfb9a('0x41')]));_0x59e959[_0xfb9a('0x3f')]=_0x59e959['attributes'][_0xfb9a('0x42')]?_0x59e959[_0xfb9a('0x3f')]:_0x4c6390[_0xfb9a('0x3c')];if(!_0x333662[_0xfb9a('0x3d')][_0xfb9a('0x43')]('nolimit')){_0x59e959[_0xfb9a('0x29')]=qs[_0xfb9a('0x29')](_0x333662['query'][_0xfb9a('0x29')]);_0x59e959[_0xfb9a('0x27')]=qs[_0xfb9a('0x27')](_0x333662[_0xfb9a('0x3d')][_0xfb9a('0x27')]);}_0x59e959[_0xfb9a('0x44')]=qs['sort'](_0x333662[_0xfb9a('0x3d')][_0xfb9a('0x45')]);_0x59e959[_0xfb9a('0x46')]=qs[_0xfb9a('0x3e')](_['pick'](_0x333662[_0xfb9a('0x3d')],_0x4c6390[_0xfb9a('0x3e')]),_0x33591a);if(_0x333662[_0xfb9a('0x3d')][_0xfb9a('0x47')]){_0x59e959[_0xfb9a('0x46')]=_[_0xfb9a('0x48')](_0x59e959[_0xfb9a('0x46')],{'$or':_[_0xfb9a('0x39')](_0x33591a,function(_0x3198c1){if(_0x3198c1[_0xfb9a('0x3a')]!==_0xfb9a('0x49')){var _0x5114c8={};_0x5114c8[_0x3198c1[_0xfb9a('0x37')]]={'$like':'%'+_0x333662[_0xfb9a('0x3d')][_0xfb9a('0x47')]+'%'};return _0x5114c8;}})});}_0x59e959=_[_0xfb9a('0x48')]({},_0x59e959,_0x333662[_0xfb9a('0x4a')]);var _0xcaaae5={'where':_0x59e959[_0xfb9a('0x46')]};return db[_0xfb9a('0x4b')]['count'](_0xcaaae5)[_0xfb9a('0x31')](function(_0x1cbae4){_0x53fdeb['count']=_0x1cbae4;if(_0x333662['query'][_0xfb9a('0x4c')]){_0x59e959['include']=[{'all':!![]}];}return db[_0xfb9a('0x4b')]['findAll'](_0x59e959);})['then'](function(_0x3193a2){_0x53fdeb[_0xfb9a('0x4d')]=_0x3193a2;return _0x53fdeb;})[_0xfb9a('0x31')](respondWithFilteredResult(_0x53fac5,_0x59e959))[_0xfb9a('0x25')](handleError(_0x53fac5,null));};exports[_0xfb9a('0x4e')]=function(_0x86dac,_0x5b9faa){var _0x21370d={'raw':![],'where':{'id':_0x86dac['params']['id']}},_0x524734={};_0x524734[_0xfb9a('0x3c')]=_['keys'](db[_0xfb9a('0x4b')]['rawAttributes']);_0x524734[_0xfb9a('0x3d')]=_['keys'](_0x86dac[_0xfb9a('0x3d')]);_0x524734['filters']=_[_0xfb9a('0x40')](_0x524734['model'],_0x524734[_0xfb9a('0x3d')]);_0x21370d[_0xfb9a('0x3f')]=_[_0xfb9a('0x40')](_0x524734['model'],qs[_0xfb9a('0x41')](_0x86dac[_0xfb9a('0x3d')][_0xfb9a('0x41')]));_0x21370d[_0xfb9a('0x3f')]=_0x21370d[_0xfb9a('0x3f')][_0xfb9a('0x42')]?_0x21370d[_0xfb9a('0x3f')]:_0x524734[_0xfb9a('0x3c')];if(_0x86dac['query']['includeAll']){_0x21370d[_0xfb9a('0x4f')]=[{'all':!![]}];}_0x21370d=_[_0xfb9a('0x48')]({},_0x21370d,_0x86dac[_0xfb9a('0x4a')]);return db[_0xfb9a('0x4b')]['find'](_0x21370d)['then'](handleEntityNotFound(_0x5b9faa,null))[_0xfb9a('0x31')](respondWithResult(_0x5b9faa,null))['catch'](handleError(_0x5b9faa,null));};exports[_0xfb9a('0x50')]=function(_0x16493b,_0x111990,_0x372d4a){var _0x51a7e3;return db['VoiceContext'][_0xfb9a('0x50')](_0x16493b['body'],{'raw':!![]})['then'](function(_0x57c2fa){_0x51a7e3=_0x57c2fa;return db['VoiceContext'][_0xfb9a('0x51')]({'raw':!![]});})[_0xfb9a('0x31')](function(_0x59b4ff){var _0xa560b2=fs['readFileSync'](path['join'](config[_0xfb9a('0x52')],'server/files/templates/context.ejs'),_0xfb9a('0x53'));var _0xe8c17e=ejs['render'](_0xa560b2,{'contexts':_0x59b4ff||[]});fs['writeFileSync'](_0xfb9a('0x54'),_0xe8c17e);})['then'](function(){return respondWithRpcPromise(_0xfb9a('0x55'),_0xfb9a('0x50'),{'module':_0xfb9a('0x56')});})['then'](function(){var _0x50a4f9=_0x16493b[_0xfb9a('0x57')][_0xfb9a('0x32')]({'plain':!![]});if(!_0x50a4f9)throw new Error(_0xfb9a('0x58'));if(_0x50a4f9[_0xfb9a('0x59')]===_0xfb9a('0x57')){var _0x43e0ac=_0x51a7e3[_0xfb9a('0x32')]({'plain':!![]});return db[_0xfb9a('0x5a')][_0xfb9a('0x5b')]({'where':{'name':_0xfb9a('0x33'),'userProfileId':_0x50a4f9['userProfileId']},'raw':!![]})[_0xfb9a('0x31')](function(_0x541da1){if(_0x541da1&&_0x541da1['autoAssociation']===0x0){return db[_0xfb9a('0x34')][_0xfb9a('0x50')]({'name':_0x43e0ac[_0xfb9a('0x37')],'resourceId':_0x43e0ac['id'],'type':_0x541da1[_0xfb9a('0x37')],'sectionId':_0x541da1['id']},{})['then'](function(){return _0x51a7e3;});}else{return _0x51a7e3;}})[_0xfb9a('0x25')](function(_0x1a8382){logger[_0xfb9a('0x1f')](_0xfb9a('0x5c'),_0x1a8382);throw _0x1a8382;});}return _0x51a7e3;})[_0xfb9a('0x31')](respondWithResult(_0x111990,0xc9))[_0xfb9a('0x25')](handleError(_0x111990,null));};exports[_0xfb9a('0x30')]=function(_0x276c44,_0x56bfe9,_0x5f4997){var _0x43b568;return db[_0xfb9a('0x4b')][_0xfb9a('0x5b')]({'where':{'id':_0x276c44[_0xfb9a('0x5d')]['id']}})[_0xfb9a('0x31')](handleEntityNotFound(_0x56bfe9,null))[_0xfb9a('0x31')](saveUpdates(_0x276c44[_0xfb9a('0x5e')],null))[_0xfb9a('0x31')](function(_0x3cf647){if(_0x3cf647){_0x43b568=_0x3cf647;return db[_0xfb9a('0x4b')][_0xfb9a('0x51')]({'raw':!![]});}})[_0xfb9a('0x31')](function(_0x5bbbb6){var _0x21ccc4=fs[_0xfb9a('0x5f')](path[_0xfb9a('0x60')](config[_0xfb9a('0x52')],_0xfb9a('0x61')),_0xfb9a('0x53'));var _0x476957=ejs['render'](_0x21ccc4,{'contexts':_0x5bbbb6||[]});fs['writeFileSync']('/etc/asterisk/extensions_xcally_contexts.conf',_0x476957);})[_0xfb9a('0x31')](function(){return respondWithRpcPromise('Reload','update',{'module':_0xfb9a('0x56')});})[_0xfb9a('0x31')](function(){return _0x43b568;})['then'](respondWithResult(_0x56bfe9,null))[_0xfb9a('0x25')](handleError(_0x56bfe9,null));};exports[_0xfb9a('0x62')]=function(_0x282d99,_0x5cc65a,_0x220625){var _0x19a9aa;return db[_0xfb9a('0x4b')][_0xfb9a('0x5b')]({'where':{'id':_0x282d99[_0xfb9a('0x5d')]['id']}})[_0xfb9a('0x31')](handleEntityNotFound(_0x5cc65a,null))[_0xfb9a('0x31')](removeEntity(_0x5cc65a,null))['then'](function(){return db[_0xfb9a('0x4b')][_0xfb9a('0x51')]({'raw':!![]});})[_0xfb9a('0x31')](function(_0x22c256){var _0xe90a88=fs[_0xfb9a('0x5f')](path[_0xfb9a('0x60')](config[_0xfb9a('0x52')],_0xfb9a('0x61')),'utf8');var _0x1eaba2=ejs[_0xfb9a('0x63')](_0xe90a88,{'contexts':_0x22c256});fs[_0xfb9a('0x64')](_0xfb9a('0x54'),_0x1eaba2);return respondWithRpcPromise(_0xfb9a('0x55'),'destroy',{'module':_0xfb9a('0x56')});})['catch'](handleError(_0x5cc65a,null));};
\ No newline at end of file
+var _0x63cc=['../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','http','request','then','info','VoiceContext,\x20%s,\x20%s','debug','VoiceContext,\x20%s,\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','get','Contexts','UserProfileResource','name','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','filter','where','merge','VIRTUAL','options','VoiceContext','includeAll','findAll','rows','show','params','create','body','readFileSync','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','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','root','chan_sip.so','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','sox','ejs','fs-extra','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils'];(function(_0x1f011a,_0x757ad7){var _0x4ce451=function(_0xed1f06){while(--_0xed1f06){_0x1f011a['push'](_0x1f011a['shift']());}};_0x4ce451(++_0x757ad7);}(_0x63cc,0x18f));var _0xc63c=function(_0x22bdd3,_0x552e50){_0x22bdd3=_0x22bdd3-0x0;var _0x44d9d9=_0x63cc[_0x22bdd3];return _0x44d9d9;};'use strict';var emlformat=require(_0xc63c('0x0'));var rimraf=require(_0xc63c('0x1'));var zipdir=require(_0xc63c('0x2'));var jsonpatch=require(_0xc63c('0x3'));var rp=require(_0xc63c('0x4'));var moment=require(_0xc63c('0x5'));var BPromise=require(_0xc63c('0x6'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xc63c('0x7'));var csv=require('to-csv');var ejs=require(_0xc63c('0x8'));var fs=require('fs');var fs_extra=require(_0xc63c('0x9'));var _=require('lodash');var squel=require(_0xc63c('0xa'));var crypto=require(_0xc63c('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xc63c('0xc'));var toCsv=require(_0xc63c('0xd'));var querystring=require(_0xc63c('0xe'));var Papa=require('papaparse');var Redis=require(_0xc63c('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xc63c('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc63c('0x11'));var logger=require(_0xc63c('0x12'))(_0xc63c('0x13'));var utils=require(_0xc63c('0x14'));var config=require(_0xc63c('0x15'));var licenseUtil=require(_0xc63c('0x16'));var db=require(_0xc63c('0x17'))['db'];var jayson=require(_0xc63c('0x18'));var client=jayson['client'][_0xc63c('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x47ed51,_0x2faa78,_0x457fae,_0x3e6eea){return new BPromise(function(_0x97478f,_0x3799b8){var _0x1dd540=_0x3e6eea||client;return _0x1dd540[_0xc63c('0x1a')](_0x47ed51,_0x457fae)[_0xc63c('0x1b')](function(_0x2f5c21){logger[_0xc63c('0x1c')](_0xc63c('0x1d'),_0x2faa78,'request\x20sent');logger[_0xc63c('0x1e')](_0xc63c('0x1f'),_0x2faa78,_0xc63c('0x20'),JSON[_0xc63c('0x21')](_0x2f5c21));if(_0x2f5c21['error']){if(_0x2f5c21[_0xc63c('0x22')][_0xc63c('0x23')]===0x1f4){logger[_0xc63c('0x22')](_0xc63c('0x1d'),_0x2faa78,_0x2f5c21[_0xc63c('0x22')]['message']);return _0x3799b8(_0x2f5c21['error'][_0xc63c('0x24')]);}logger[_0xc63c('0x22')]('VoiceContext,\x20%s,\x20%s',_0x2faa78,_0x2f5c21[_0xc63c('0x22')][_0xc63c('0x24')]);return _0x97478f(_0x2f5c21[_0xc63c('0x22')][_0xc63c('0x24')]);}else{logger[_0xc63c('0x1c')]('VoiceContext,\x20%s,\x20%s',_0x2faa78,_0xc63c('0x20'));_0x97478f(_0x2f5c21[_0xc63c('0x25')][_0xc63c('0x24')]);}})[_0xc63c('0x26')](function(_0x342fd2){logger['error'](_0xc63c('0x1d'),_0x2faa78,_0x342fd2);_0x3799b8(_0x342fd2);});});}function respondWithStatusCode(_0x3f4a01,_0x2bb572){_0x2bb572=_0x2bb572||0xcc;return function(_0x3875ba){if(_0x3875ba){return _0x3f4a01[_0xc63c('0x27')](_0x2bb572);}return _0x3f4a01[_0xc63c('0x28')](_0x2bb572)[_0xc63c('0x29')]();};}function respondWithResult(_0x567c05,_0xc7c8ae){_0xc7c8ae=_0xc7c8ae||0xc8;return function(_0x31c563){if(_0x31c563){return _0x567c05['status'](_0xc7c8ae)[_0xc63c('0x2a')](_0x31c563);}};}function respondWithFilteredResult(_0x5d0e03,_0xa8ed0c){return function(_0x55b324){if(_0x55b324){var _0x3078d7=typeof _0xa8ed0c[_0xc63c('0x2b')]===_0xc63c('0x2c')&&typeof _0xa8ed0c[_0xc63c('0x2d')]===_0xc63c('0x2c');var _0x1c30fe=_0x55b324[_0xc63c('0x2e')];var _0x4b067f=_0x3078d7?0x0:_0xa8ed0c[_0xc63c('0x2b')];var _0x215f3e=_0x3078d7?_0x55b324[_0xc63c('0x2e')]:_0xa8ed0c[_0xc63c('0x2b')]+_0xa8ed0c[_0xc63c('0x2d')];var _0x18d4b4;if(_0x215f3e>=_0x1c30fe){_0x215f3e=_0x1c30fe;_0x18d4b4=0xc8;}else{_0x18d4b4=0xce;}_0x5d0e03[_0xc63c('0x28')](_0x18d4b4);return _0x5d0e03[_0xc63c('0x2f')](_0xc63c('0x30'),_0x4b067f+'-'+_0x215f3e+'/'+_0x1c30fe)[_0xc63c('0x2a')](_0x55b324);}return null;};}function patchUpdates(_0x395360){return function(_0x11dcb6){try{jsonpatch[_0xc63c('0x31')](_0x11dcb6,_0x395360,!![]);}catch(_0x16ef5a){return BPromise[_0xc63c('0x32')](_0x16ef5a);}return _0x11dcb6[_0xc63c('0x33')]();};}function saveUpdates(_0x39acb4,_0x216d8b){return function(_0x2ac11e){if(_0x2ac11e){return _0x2ac11e[_0xc63c('0x34')](_0x39acb4)[_0xc63c('0x1b')](function(_0x37c585){return _0x37c585;});}return null;};}function removeEntity(_0x228cbb,_0x1a076a){return function(_0x1b6195){if(_0x1b6195){return _0x1b6195[_0xc63c('0x35')]()[_0xc63c('0x1b')](function(){var _0x59349a=_0x1b6195[_0xc63c('0x36')]({'plain':!![]});var _0x121224=_0xc63c('0x37');return db[_0xc63c('0x38')][_0xc63c('0x35')]({'where':{'type':_0x121224,'resourceId':_0x59349a['id']}})[_0xc63c('0x1b')](function(){return _0x1b6195;});})['then'](function(){_0x228cbb[_0xc63c('0x28')](0xcc)[_0xc63c('0x29')]();});}};}function handleEntityNotFound(_0x34328a,_0x1edf87){return function(_0x3f4036){if(!_0x3f4036){_0x34328a[_0xc63c('0x27')](0x194);}return _0x3f4036;};}function handleError(_0x3c7083,_0x23b270){_0x23b270=_0x23b270||0x1f4;return function(_0x3646e3){logger[_0xc63c('0x22')](_0x3646e3['stack']);if(_0x3646e3[_0xc63c('0x39')]){delete _0x3646e3[_0xc63c('0x39')];}_0x3c7083[_0xc63c('0x28')](_0x23b270)['send'](_0x3646e3);};}exports['index']=function(_0x55d166,_0x4c5a9f){var _0x5103fa={},_0x2c5788={},_0x5ad36d={'count':0x0,'rows':[]};var _0x4171d8=_[_0xc63c('0x3a')](db['VoiceContext'][_0xc63c('0x3b')],function(_0x4a6e0d){return{'name':_0x4a6e0d[_0xc63c('0x3c')],'type':_0x4a6e0d[_0xc63c('0x3d')][_0xc63c('0x3e')]};});_0x2c5788[_0xc63c('0x3f')]=_['map'](_0x4171d8,_0xc63c('0x39'));_0x2c5788[_0xc63c('0x40')]=_[_0xc63c('0x41')](_0x55d166[_0xc63c('0x40')]);_0x2c5788[_0xc63c('0x42')]=_[_0xc63c('0x43')](_0x2c5788[_0xc63c('0x3f')],_0x2c5788['query']);_0x5103fa[_0xc63c('0x44')]=_['intersection'](_0x2c5788[_0xc63c('0x3f')],qs[_0xc63c('0x45')](_0x55d166[_0xc63c('0x40')]['fields']));_0x5103fa[_0xc63c('0x44')]=_0x5103fa[_0xc63c('0x44')][_0xc63c('0x46')]?_0x5103fa[_0xc63c('0x44')]:_0x2c5788['model'];if(!_0x55d166['query'][_0xc63c('0x47')]('nolimit')){_0x5103fa[_0xc63c('0x2d')]=qs[_0xc63c('0x2d')](_0x55d166[_0xc63c('0x40')][_0xc63c('0x2d')]);_0x5103fa[_0xc63c('0x2b')]=qs[_0xc63c('0x2b')](_0x55d166['query'][_0xc63c('0x2b')]);}_0x5103fa[_0xc63c('0x48')]=qs['sort'](_0x55d166[_0xc63c('0x40')][_0xc63c('0x49')]);_0x5103fa['where']=qs[_0xc63c('0x42')](_['pick'](_0x55d166['query'],_0x2c5788[_0xc63c('0x42')]),_0x4171d8);if(_0x55d166[_0xc63c('0x40')][_0xc63c('0x4a')]){_0x5103fa[_0xc63c('0x4b')]=_[_0xc63c('0x4c')](_0x5103fa[_0xc63c('0x4b')],{'$or':_['map'](_0x4171d8,function(_0x208e71){if(_0x208e71[_0xc63c('0x3d')]!==_0xc63c('0x4d')){var _0x564caa={};_0x564caa[_0x208e71[_0xc63c('0x39')]]={'$like':'%'+_0x55d166[_0xc63c('0x40')][_0xc63c('0x4a')]+'%'};return _0x564caa;}})});}_0x5103fa=_[_0xc63c('0x4c')]({},_0x5103fa,_0x55d166[_0xc63c('0x4e')]);var _0x1ae180={'where':_0x5103fa['where']};return db[_0xc63c('0x4f')][_0xc63c('0x2e')](_0x1ae180)['then'](function(_0x366912){_0x5ad36d[_0xc63c('0x2e')]=_0x366912;if(_0x55d166[_0xc63c('0x40')][_0xc63c('0x50')]){_0x5103fa['include']=[{'all':!![]}];}return db[_0xc63c('0x4f')][_0xc63c('0x51')](_0x5103fa);})[_0xc63c('0x1b')](function(_0x397640){_0x5ad36d[_0xc63c('0x52')]=_0x397640;return _0x5ad36d;})['then'](respondWithFilteredResult(_0x4c5a9f,_0x5103fa))[_0xc63c('0x26')](handleError(_0x4c5a9f,null));};exports[_0xc63c('0x53')]=function(_0x46ee0b,_0x24b8b0){var _0x294365={'raw':![],'where':{'id':_0x46ee0b[_0xc63c('0x54')]['id']}},_0x4d1f86={};_0x4d1f86[_0xc63c('0x3f')]=_[_0xc63c('0x41')](db[_0xc63c('0x4f')][_0xc63c('0x3b')]);_0x4d1f86['query']=_[_0xc63c('0x41')](_0x46ee0b[_0xc63c('0x40')]);_0x4d1f86['filters']=_['intersection'](_0x4d1f86[_0xc63c('0x3f')],_0x4d1f86[_0xc63c('0x40')]);_0x294365['attributes']=_[_0xc63c('0x43')](_0x4d1f86[_0xc63c('0x3f')],qs['fields'](_0x46ee0b[_0xc63c('0x40')][_0xc63c('0x45')]));_0x294365[_0xc63c('0x44')]=_0x294365[_0xc63c('0x44')][_0xc63c('0x46')]?_0x294365[_0xc63c('0x44')]:_0x4d1f86[_0xc63c('0x3f')];if(_0x46ee0b[_0xc63c('0x40')][_0xc63c('0x50')]){_0x294365['include']=[{'all':!![]}];}_0x294365=_[_0xc63c('0x4c')]({},_0x294365,_0x46ee0b[_0xc63c('0x4e')]);return db[_0xc63c('0x4f')]['find'](_0x294365)[_0xc63c('0x1b')](handleEntityNotFound(_0x24b8b0,null))['then'](respondWithResult(_0x24b8b0,null))[_0xc63c('0x26')](handleError(_0x24b8b0,null));};exports['create']=function(_0x14dea4,_0x193dc6,_0x3ae0aa){var _0x22845a;return db[_0xc63c('0x4f')][_0xc63c('0x55')](_0x14dea4[_0xc63c('0x56')],{'raw':!![]})[_0xc63c('0x1b')](function(_0x41f226){_0x22845a=_0x41f226;return db[_0xc63c('0x4f')][_0xc63c('0x51')]({'raw':!![]});})[_0xc63c('0x1b')](function(_0x5d88f1){var _0x384665=fs[_0xc63c('0x57')](path['join'](config['root'],_0xc63c('0x58')),_0xc63c('0x59'));var _0x5e3bb3=ejs[_0xc63c('0x5a')](_0x384665,{'contexts':_0x5d88f1||[]});fs[_0xc63c('0x5b')](_0xc63c('0x5c'),_0x5e3bb3);})[_0xc63c('0x1b')](function(){return respondWithRpcPromise(_0xc63c('0x5d'),_0xc63c('0x55'),{'module':'chan_sip.so'});})[_0xc63c('0x1b')](function(){var _0x7f7015=_0x14dea4[_0xc63c('0x5e')]['get']({'plain':!![]});if(!_0x7f7015)throw new Error(_0xc63c('0x5f'));if(_0x7f7015[_0xc63c('0x60')]===_0xc63c('0x5e')){var _0x1d130d=_0x22845a[_0xc63c('0x36')]({'plain':!![]});return db[_0xc63c('0x61')][_0xc63c('0x62')]({'where':{'name':_0xc63c('0x37'),'userProfileId':_0x7f7015[_0xc63c('0x63')]},'raw':!![]})[_0xc63c('0x1b')](function(_0x34647d){if(_0x34647d&&_0x34647d[_0xc63c('0x64')]===0x0){return db[_0xc63c('0x38')]['create']({'name':_0x1d130d[_0xc63c('0x39')],'resourceId':_0x1d130d['id'],'type':_0x34647d[_0xc63c('0x39')],'sectionId':_0x34647d['id']},{})[_0xc63c('0x1b')](function(){return _0x22845a;});}else{return _0x22845a;}})[_0xc63c('0x26')](function(_0x47c441){logger['error'](_0xc63c('0x65'),_0x47c441);throw _0x47c441;});}return _0x22845a;})[_0xc63c('0x1b')](respondWithResult(_0x193dc6,0xc9))[_0xc63c('0x26')](handleError(_0x193dc6,null));};exports[_0xc63c('0x34')]=function(_0x1b252e,_0x5ac0d1,_0x1d0fa3){var _0x84b4a2;return db[_0xc63c('0x4f')]['find']({'where':{'id':_0x1b252e[_0xc63c('0x54')]['id']}})[_0xc63c('0x1b')](handleEntityNotFound(_0x5ac0d1,null))[_0xc63c('0x1b')](saveUpdates(_0x1b252e[_0xc63c('0x56')],null))['then'](function(_0x3a8101){if(_0x3a8101){_0x84b4a2=_0x3a8101;return db[_0xc63c('0x4f')][_0xc63c('0x51')]({'raw':!![]});}})[_0xc63c('0x1b')](function(_0x58a3e7){var _0x3b67ca=fs[_0xc63c('0x57')](path[_0xc63c('0x66')](config[_0xc63c('0x67')],_0xc63c('0x58')),_0xc63c('0x59'));var _0x1e040f=ejs[_0xc63c('0x5a')](_0x3b67ca,{'contexts':_0x58a3e7||[]});fs[_0xc63c('0x5b')](_0xc63c('0x5c'),_0x1e040f);})[_0xc63c('0x1b')](function(){return respondWithRpcPromise('Reload','update',{'module':_0xc63c('0x68')});})[_0xc63c('0x1b')](function(){return _0x84b4a2;})[_0xc63c('0x1b')](respondWithResult(_0x5ac0d1,null))[_0xc63c('0x26')](handleError(_0x5ac0d1,null));};exports['destroy']=function(_0xb0215c,_0x296fcb,_0x28c5ff){var _0x386f9c;return db[_0xc63c('0x4f')][_0xc63c('0x62')]({'where':{'id':_0xb0215c[_0xc63c('0x54')]['id']}})['then'](handleEntityNotFound(_0x296fcb,null))['then'](removeEntity(_0x296fcb,null))[_0xc63c('0x1b')](function(){return db['VoiceContext']['findAll']({'raw':!![]});})[_0xc63c('0x1b')](function(_0x5df142){var _0x40cc55=fs[_0xc63c('0x57')](path[_0xc63c('0x66')](config[_0xc63c('0x67')],'server/files/templates/context.ejs'),_0xc63c('0x59'));var _0x14442c=ejs[_0xc63c('0x5a')](_0x40cc55,{'contexts':_0x5df142});fs['writeFileSync']('/etc/asterisk/extensions_xcally_contexts.conf',_0x14442c);return respondWithRpcPromise(_0xc63c('0x5d'),_0xc63c('0x35'),{'module':_0xc63c('0x68')});})[_0xc63c('0x26')](handleError(_0x296fcb,null));};
\ No newline at end of file
index 1dae405..5a5b0f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x434b=['exports','define','VoiceContext','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./voiceContext.attributes'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x434b,0x17f));var _0xb434=function(_0xdefbc3,_0x1ea49a){_0xdefbc3=_0xdefbc3-0x0;var _0x367798=_0x434b[_0xdefbc3];return _0x367798;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xb434('0x0'))(_0xb434('0x1'));var moment=require('moment');var BPromise=require(_0xb434('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb434('0x3'));var rimraf=require(_0xb434('0x4'));var config=require(_0xb434('0x5'));var attributes=require(_0xb434('0x6'));module[_0xb434('0x7')]=function(_0x2c9f74,_0x1073e4){return _0x2c9f74[_0xb434('0x8')](_0xb434('0x9'),attributes,{'tableName':'voice_contexts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xebda=['voice_contexts','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./voiceContext.attributes','exports','define'];(function(_0x88faed,_0x5b4a9f){var _0x242df2=function(_0x19e40c){while(--_0x19e40c){_0x88faed['push'](_0x88faed['shift']());}};_0x242df2(++_0x5b4a9f);}(_0xebda,0xa9));var _0xaebd=function(_0x53cf8e,_0x3d290f){_0x53cf8e=_0x53cf8e-0x0;var _0x459197=_0xebda[_0x53cf8e];return _0x459197;};'use strict';var _=require('lodash');var util=require(_0xaebd('0x0'));var logger=require(_0xaebd('0x1'))(_0xaebd('0x2'));var moment=require(_0xaebd('0x3'));var BPromise=require(_0xaebd('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xaebd('0x5'));var rimraf=require(_0xaebd('0x6'));var config=require(_0xaebd('0x7'));var attributes=require(_0xaebd('0x8'));module[_0xaebd('0x9')]=function(_0x1c3c78,_0x21373f){return _0x1c3c78[_0xaebd('0xa')]('VoiceContext',attributes,{'tableName':_0xaebd('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8a65a97..2effa23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3495=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x1f8ebc,_0x16c7fe){var _0x171007=function(_0x8c09bf){while(--_0x8c09bf){_0x1f8ebc['push'](_0x1f8ebc['shift']());}};_0x171007(++_0x16c7fe);}(_0x3495,0x1de));var _0x5349=function(_0x1646d6,_0x2aa063){_0x1646d6=_0x1646d6-0x0;var _0x2efdf5=_0x3495[_0x1646d6];return _0x2efdf5;};'use strict';var _=require(_0x5349('0x0'));var util=require(_0x5349('0x1'));var moment=require(_0x5349('0x2'));var BPromise=require(_0x5349('0x3'));var rs=require(_0x5349('0x4'));var fs=require('fs');var Redis=require(_0x5349('0x5'));var db=require(_0x5349('0x6'))['db'];var utils=require(_0x5349('0x7'));var logger=require(_0x5349('0x8'))('rpc');var config=require(_0x5349('0x9'));var jayson=require(_0x5349('0xa'));var client=jayson['client'][_0x5349('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x538385,_0x6fb5dc,_0x529323){return new BPromise(function(_0x393873,_0x583cee){return client[_0x5349('0xc')](_0x538385,_0x529323)[_0x5349('0xd')](function(_0x22a3d3){logger[_0x5349('0xe')](_0x5349('0xf'),_0x6fb5dc,_0x5349('0x10'));logger[_0x5349('0x11')]('VoiceContext,\x20%s,\x20%s,\x20%s',_0x6fb5dc,_0x5349('0x10'),JSON['stringify'](_0x22a3d3));if(_0x22a3d3[_0x5349('0x12')]){if(_0x22a3d3[_0x5349('0x12')][_0x5349('0x13')]===0x1f4){logger[_0x5349('0x12')](_0x5349('0xf'),_0x6fb5dc,_0x22a3d3[_0x5349('0x12')][_0x5349('0x14')]);return _0x583cee(_0x22a3d3[_0x5349('0x12')][_0x5349('0x14')]);}logger[_0x5349('0x12')]('VoiceContext,\x20%s,\x20%s',_0x6fb5dc,_0x22a3d3[_0x5349('0x12')][_0x5349('0x14')]);return _0x393873(_0x22a3d3['error'][_0x5349('0x14')]);}else{logger[_0x5349('0xe')](_0x5349('0xf'),_0x6fb5dc,'request\x20sent');_0x393873(_0x22a3d3['result']['message']);}})[_0x5349('0x15')](function(_0x5c873d){logger[_0x5349('0x12')]('VoiceContext,\x20%s,\x20%s',_0x6fb5dc,_0x5c873d);_0x583cee(_0x5c873d);});});}
\ No newline at end of file
+var _0xc343=['randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','VoiceContext,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','info','result','catch','lodash','moment','bluebird'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0xc343,0x173));var _0x3c34=function(_0x12b6b2,_0x5bcfec){_0x12b6b2=_0x12b6b2-0x0;var _0x42cbb2=_0xc343[_0x12b6b2];return _0x42cbb2;};'use strict';var _=require(_0x3c34('0x0'));var util=require('util');var moment=require(_0x3c34('0x1'));var BPromise=require(_0x3c34('0x2'));var rs=require(_0x3c34('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x3c34('0x4'));var logger=require(_0x3c34('0x5'))(_0x3c34('0x6'));var config=require(_0x3c34('0x7'));var jayson=require(_0x3c34('0x8'));var client=jayson[_0x3c34('0x9')][_0x3c34('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2b12df,_0x9b457,_0x3d7335){return new BPromise(function(_0x351315,_0x1e98c3){return client[_0x3c34('0xb')](_0x2b12df,_0x3d7335)[_0x3c34('0xc')](function(_0x182f43){logger['info'](_0x3c34('0xd'),_0x9b457,'request\x20sent');logger[_0x3c34('0xe')]('VoiceContext,\x20%s,\x20%s,\x20%s',_0x9b457,_0x3c34('0xf'),JSON[_0x3c34('0x10')](_0x182f43));if(_0x182f43[_0x3c34('0x11')]){if(_0x182f43[_0x3c34('0x11')]['code']===0x1f4){logger['error'](_0x3c34('0xd'),_0x9b457,_0x182f43[_0x3c34('0x11')]['message']);return _0x1e98c3(_0x182f43[_0x3c34('0x11')][_0x3c34('0x12')]);}logger['error'](_0x3c34('0xd'),_0x9b457,_0x182f43[_0x3c34('0x11')][_0x3c34('0x12')]);return _0x351315(_0x182f43[_0x3c34('0x11')][_0x3c34('0x12')]);}else{logger[_0x3c34('0x13')](_0x3c34('0xd'),_0x9b457,'request\x20sent');_0x351315(_0x182f43[_0x3c34('0x14')][_0x3c34('0x12')]);}})[_0x3c34('0x15')](function(_0x2b01ad){logger['error'](_0x3c34('0xd'),_0x9b457,_0x2b01ad);_0x1e98c3(_0x2b01ad);});});}
\ No newline at end of file
index 53ec7cd..d7319bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6652=['isAuthenticated','index','get','/describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceDialReport.controller'];(function(_0x1f1e31,_0x27b5c3){var _0x229b56=function(_0x16db77){while(--_0x16db77){_0x1f1e31['push'](_0x1f1e31['shift']());}};_0x229b56(++_0x27b5c3);}(_0x6652,0xf3));var _0x2665=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0x6652[_0x46aff0];return _0x9d78cf;};'use strict';var multer=require(_0x2665('0x0'));var util=require(_0x2665('0x1'));var path=require(_0x2665('0x2'));var timeout=require(_0x2665('0x3'));var express=require(_0x2665('0x4'));var router=express[_0x2665('0x5')]();var fs_extra=require(_0x2665('0x6'));var auth=require(_0x2665('0x7'));var interaction=require(_0x2665('0x8'));var config=require('../../config/environment');var controller=require(_0x2665('0x9'));router['get']('/',auth[_0x2665('0xa')](),controller[_0x2665('0xb')]);router[_0x2665('0xc')](_0x2665('0xd'),auth[_0x2665('0xa')](),controller['describe']);router['get'](_0x2665('0xe'),auth[_0x2665('0xa')](),controller[_0x2665('0xf')]);router[_0x2665('0x10')]('/',auth[_0x2665('0xa')](),controller[_0x2665('0x11')]);router[_0x2665('0x12')](_0x2665('0xe'),auth[_0x2665('0xa')](),controller[_0x2665('0x13')]);router[_0x2665('0x14')](_0x2665('0xe'),auth[_0x2665('0xa')](),controller[_0x2665('0x15')]);module[_0x2665('0x16')]=router;
\ No newline at end of file
+var _0x60fc=['/:id','show','post','create','put','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','get','isAuthenticated','describe'];(function(_0x16123d,_0x39e701){var _0x43d7ba=function(_0x45d352){while(--_0x45d352){_0x16123d['push'](_0x16123d['shift']());}};_0x43d7ba(++_0x39e701);}(_0x60fc,0x128));var _0xc60f=function(_0x55fee4,_0x647ca8){_0x55fee4=_0x55fee4-0x0;var _0x56ab7c=_0x60fc[_0x55fee4];return _0x56ab7c;};'use strict';var multer=require(_0xc60f('0x0'));var util=require(_0xc60f('0x1'));var path=require(_0xc60f('0x2'));var timeout=require(_0xc60f('0x3'));var express=require('express');var router=express[_0xc60f('0x4')]();var fs_extra=require(_0xc60f('0x5'));var auth=require(_0xc60f('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./voiceDialReport.controller');router[_0xc60f('0x7')]('/',auth[_0xc60f('0x8')](),controller['index']);router['get']('/describe',auth['isAuthenticated'](),controller[_0xc60f('0x9')]);router[_0xc60f('0x7')](_0xc60f('0xa'),auth[_0xc60f('0x8')](),controller[_0xc60f('0xb')]);router[_0xc60f('0xc')]('/',auth[_0xc60f('0x8')](),controller[_0xc60f('0xd')]);router[_0xc60f('0xe')]('/:id',auth[_0xc60f('0x8')](),controller[_0xc60f('0xf')]);router[_0xc60f('0x10')](_0xc60f('0xa'),auth[_0xc60f('0x8')](),controller['destroy']);module[_0xc60f('0x11')]=router;
\ No newline at end of file
index 21e2d67..7535b02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa41a=['exports','STRING','INTEGER','DATE','called,connect,complete','sequelize'];(function(_0x46b213,_0x2d5208){var _0x4942eb=function(_0x47a946){while(--_0x47a946){_0x46b213['push'](_0x46b213['shift']());}};_0x4942eb(++_0x2d5208);}(_0xa41a,0x6b));var _0xaa41=function(_0x31bf92,_0x2b1fdc){_0x31bf92=_0x31bf92-0x0;var _0x2d4a30=_0xa41a[_0x31bf92];return _0x2d4a30;};'use strict';var Sequelize=require(_0xaa41('0x0'));module[_0xaa41('0x1')]={'privilege':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xaa41('0x2')]},'channelstate':{'type':Sequelize[_0xaa41('0x3')]},'channelstatedesc':{'type':Sequelize[_0xaa41('0x2')]},'calleridnum':{'type':Sequelize[_0xaa41('0x2')]},'calleridname':{'type':Sequelize[_0xaa41('0x2')]},'connectedlinenum':{'type':Sequelize[_0xaa41('0x2')]},'connectedlinename':{'type':Sequelize[_0xaa41('0x2')]},'language':{'type':Sequelize[_0xaa41('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0xaa41('0x2')]},'exten':{'type':Sequelize[_0xaa41('0x2')]},'priority':{'type':Sequelize['INTEGER']},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize[_0xaa41('0x2')]},'destchannel':{'type':Sequelize[_0xaa41('0x2')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0xaa41('0x2')]},'destcalleridnum':{'type':Sequelize[_0xaa41('0x2')]},'destcalleridname':{'type':Sequelize[_0xaa41('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xaa41('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xaa41('0x2')]},'destlanguage':{'type':Sequelize[_0xaa41('0x2')]},'destaccountcode':{'type':Sequelize[_0xaa41('0x2')]},'destcontext':{'type':Sequelize[_0xaa41('0x2')]},'destexten':{'type':Sequelize[_0xaa41('0x2')]},'destpriority':{'type':Sequelize['INTEGER']},'destuniqueid':{'type':Sequelize[_0xaa41('0x2')]},'destlinkedid':{'type':Sequelize[_0xaa41('0x2')]},'dialstring':{'type':Sequelize['STRING']},'dialstatus':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0xaa41('0x4')]},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0xaa41('0x4')]},'lastevent':{'type':Sequelize[_0xaa41('0x2')],'comment':_0xaa41('0x5')},'routeId':{'type':Sequelize[_0xaa41('0x3')]},'duration':{'type':Sequelize[_0xaa41('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize[_0xaa41('0x3')]}};
\ No newline at end of file
+var _0x3e74=['DATE','sequelize','STRING','INTEGER'];(function(_0xdea41a,_0x552987){var _0x15d0d8=function(_0x1e0d0b){while(--_0x1e0d0b){_0xdea41a['push'](_0xdea41a['shift']());}};_0x15d0d8(++_0x552987);}(_0x3e74,0x175));var _0x43e7=function(_0x82cc9e,_0x37b917){_0x82cc9e=_0x82cc9e-0x0;var _0x41f8be=_0x3e74[_0x82cc9e];return _0x41f8be;};'use strict';var Sequelize=require(_0x43e7('0x0'));module['exports']={'privilege':{'type':Sequelize[_0x43e7('0x1')]},'channel':{'type':Sequelize[_0x43e7('0x1')]},'channelstate':{'type':Sequelize[_0x43e7('0x2')]},'channelstatedesc':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x43e7('0x1')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0x43e7('0x1')]},'language':{'type':Sequelize[_0x43e7('0x1')]},'accountcode':{'type':Sequelize[_0x43e7('0x1')]},'context':{'type':Sequelize[_0x43e7('0x1')]},'exten':{'type':Sequelize[_0x43e7('0x1')]},'priority':{'type':Sequelize['INTEGER']},'uniqueid':{'type':Sequelize[_0x43e7('0x1')]},'linkedid':{'type':Sequelize[_0x43e7('0x1')]},'destchannel':{'type':Sequelize[_0x43e7('0x1')]},'destchannelstate':{'type':Sequelize[_0x43e7('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0x43e7('0x1')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0x43e7('0x1')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0x43e7('0x1')]},'destaccountcode':{'type':Sequelize[_0x43e7('0x1')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x43e7('0x1')]},'destpriority':{'type':Sequelize['INTEGER']},'destuniqueid':{'type':Sequelize[_0x43e7('0x1')]},'destlinkedid':{'type':Sequelize[_0x43e7('0x1')]},'dialstring':{'type':Sequelize['STRING']},'dialstatus':{'type':Sequelize[_0x43e7('0x1')]},'starttime':{'type':Sequelize[_0x43e7('0x3')]},'answertime':{'type':Sequelize[_0x43e7('0x3')]},'endtime':{'type':Sequelize[_0x43e7('0x3')]},'lastevent':{'type':Sequelize['STRING'],'comment':'called,connect,complete'},'routeId':{'type':Sequelize[_0x43e7('0x2')]},'duration':{'type':Sequelize[_0x43e7('0x2')]},'holdtime':{'type':Sequelize[_0x43e7('0x2')]},'billableseconds':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 6e9c701..df969e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x772b=['where','pick','filters','filter','options','VoiceDialReport','includeAll','include','findAll','catch','keys','length','merge','find','create','body','params','destroy','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','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','undefined','limit','count','offset','set','Content-Range','reject','update','then','error','stack','name','index','map','rawAttributes','fieldName','type','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','sort'];(function(_0x3e2ec5,_0x3cb631){var _0x5a9873=function(_0x1c8424){while(--_0x1c8424){_0x3e2ec5['push'](_0x3e2ec5['shift']());}};_0x5a9873(++_0x3cb631);}(_0x772b,0x13f));var _0xb772=function(_0x263326,_0x40df72){_0x263326=_0x263326-0x0;var _0x32424d=_0x772b[_0x263326];return _0x32424d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb772('0x0'));var zipdir=require(_0xb772('0x1'));var jsonpatch=require(_0xb772('0x2'));var rp=require(_0xb772('0x3'));var moment=require(_0xb772('0x4'));var BPromise=require(_0xb772('0x5'));var Mustache=require(_0xb772('0x6'));var util=require(_0xb772('0x7'));var path=require('path');var sox=require(_0xb772('0x8'));var csv=require('to-csv');var ejs=require(_0xb772('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb772('0xa'));var squel=require(_0xb772('0xb'));var crypto=require(_0xb772('0xc'));var jsforce=require(_0xb772('0xd'));var deskjs=require(_0xb772('0xe'));var toCsv=require(_0xb772('0xf'));var querystring=require(_0xb772('0x10'));var Papa=require(_0xb772('0x11'));var Redis=require('ioredis');var authService=require(_0xb772('0x12'));var qs=require(_0xb772('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb772('0x14'));var logger=require(_0xb772('0x15'))(_0xb772('0x16'));var utils=require(_0xb772('0x17'));var config=require(_0xb772('0x18'));var licenseUtil=require(_0xb772('0x19'));var db=require(_0xb772('0x1a'))['db'];function respondWithStatusCode(_0x716c3c,_0x17962b){_0x17962b=_0x17962b||0xcc;return function(_0x47b60a){if(_0x47b60a){return _0x716c3c[_0xb772('0x1b')](_0x17962b);}return _0x716c3c[_0xb772('0x1c')](_0x17962b)[_0xb772('0x1d')]();};}function respondWithResult(_0x2b14cd,_0x298ad3){_0x298ad3=_0x298ad3||0xc8;return function(_0x4b1167){if(_0x4b1167){return _0x2b14cd['status'](_0x298ad3)[_0xb772('0x1e')](_0x4b1167);}};}function respondWithFilteredResult(_0x546ca0,_0x349da1){return function(_0x28b30e){if(_0x28b30e){var _0x50f86b=typeof _0x349da1['offset']===_0xb772('0x1f')&&typeof _0x349da1[_0xb772('0x20')]==='undefined';var _0x36e905=_0x28b30e[_0xb772('0x21')];var _0x1d2269=_0x50f86b?0x0:_0x349da1[_0xb772('0x22')];var _0x312e04=_0x50f86b?_0x28b30e[_0xb772('0x21')]:_0x349da1[_0xb772('0x22')]+_0x349da1[_0xb772('0x20')];var _0x47c349;if(_0x312e04>=_0x36e905){_0x312e04=_0x36e905;_0x47c349=0xc8;}else{_0x47c349=0xce;}_0x546ca0[_0xb772('0x1c')](_0x47c349);return _0x546ca0[_0xb772('0x23')](_0xb772('0x24'),_0x1d2269+'-'+_0x312e04+'/'+_0x36e905)['json'](_0x28b30e);}return null;};}function patchUpdates(_0x3948e8){return function(_0x5a8e94){try{jsonpatch['apply'](_0x5a8e94,_0x3948e8,!![]);}catch(_0x5b6a03){return BPromise[_0xb772('0x25')](_0x5b6a03);}return _0x5a8e94['save']();};}function saveUpdates(_0x4c9b2f,_0x1df11b){return function(_0x5a036f){if(_0x5a036f){return _0x5a036f[_0xb772('0x26')](_0x4c9b2f)[_0xb772('0x27')](function(_0xd2b806){return _0xd2b806;});}return null;};}function removeEntity(_0x2d2061,_0x280823){return function(_0xfb5fa8){if(_0xfb5fa8){return _0xfb5fa8['destroy']()['then'](function(){_0x2d2061[_0xb772('0x1c')](0xcc)[_0xb772('0x1d')]();});}};}function handleEntityNotFound(_0x42b6a2,_0x3a0745){return function(_0x3ae0a1){if(!_0x3ae0a1){_0x42b6a2[_0xb772('0x1b')](0x194);}return _0x3ae0a1;};}function handleError(_0x2d0523,_0x3999d0){_0x3999d0=_0x3999d0||0x1f4;return function(_0x3d4d89){logger[_0xb772('0x28')](_0x3d4d89[_0xb772('0x29')]);if(_0x3d4d89[_0xb772('0x2a')]){delete _0x3d4d89['name'];}_0x2d0523['status'](_0x3999d0)['send'](_0x3d4d89);};}exports[_0xb772('0x2b')]=function(_0x2601fe,_0x5e2b2e){var _0x6b73e8={},_0x1881e5={},_0x12e4d4={'count':0x0,'rows':[]};var _0x45518b=_[_0xb772('0x2c')](db['VoiceDialReport'][_0xb772('0x2d')],function(_0x431e3f){return{'name':_0x431e3f[_0xb772('0x2e')],'type':_0x431e3f[_0xb772('0x2f')]['key']};});_0x1881e5[_0xb772('0x30')]=_[_0xb772('0x2c')](_0x45518b,'name');_0x1881e5[_0xb772('0x31')]=_['keys'](_0x2601fe['query']);_0x1881e5['filters']=_[_0xb772('0x32')](_0x1881e5['model'],_0x1881e5[_0xb772('0x31')]);_0x6b73e8[_0xb772('0x33')]=_[_0xb772('0x32')](_0x1881e5[_0xb772('0x30')],qs[_0xb772('0x34')](_0x2601fe[_0xb772('0x31')][_0xb772('0x34')]));_0x6b73e8[_0xb772('0x33')]=_0x6b73e8['attributes']['length']?_0x6b73e8[_0xb772('0x33')]:_0x1881e5[_0xb772('0x30')];if(!_0x2601fe[_0xb772('0x31')][_0xb772('0x35')](_0xb772('0x36'))){_0x6b73e8['limit']=qs[_0xb772('0x20')](_0x2601fe[_0xb772('0x31')][_0xb772('0x20')]);_0x6b73e8['offset']=qs[_0xb772('0x22')](_0x2601fe[_0xb772('0x31')][_0xb772('0x22')]);}_0x6b73e8['order']=qs[_0xb772('0x37')](_0x2601fe[_0xb772('0x31')]['sort']);_0x6b73e8[_0xb772('0x38')]=qs['filters'](_[_0xb772('0x39')](_0x2601fe[_0xb772('0x31')],_0x1881e5[_0xb772('0x3a')]),_0x45518b);if(_0x2601fe[_0xb772('0x31')][_0xb772('0x3b')]){_0x6b73e8[_0xb772('0x38')]=_['merge'](_0x6b73e8[_0xb772('0x38')],{'$or':_[_0xb772('0x2c')](_0x45518b,function(_0x49c544){if(_0x49c544[_0xb772('0x2f')]!=='VIRTUAL'){var _0x29714f={};_0x29714f[_0x49c544[_0xb772('0x2a')]]={'$like':'%'+_0x2601fe['query'][_0xb772('0x3b')]+'%'};return _0x29714f;}})});}_0x6b73e8=_['merge']({},_0x6b73e8,_0x2601fe[_0xb772('0x3c')]);var _0x449b2f={'where':_0x6b73e8['where']};return db[_0xb772('0x3d')]['count'](_0x449b2f)['then'](function(_0x570fa1){_0x12e4d4['count']=_0x570fa1;if(_0x2601fe['query'][_0xb772('0x3e')]){_0x6b73e8[_0xb772('0x3f')]=[{'all':!![]}];}return db[_0xb772('0x3d')][_0xb772('0x40')](_0x6b73e8);})[_0xb772('0x27')](function(_0x5c2ddc){_0x12e4d4['rows']=_0x5c2ddc;return _0x12e4d4;})[_0xb772('0x27')](respondWithFilteredResult(_0x5e2b2e,_0x6b73e8))[_0xb772('0x41')](handleError(_0x5e2b2e,null));};exports['show']=function(_0x226bb6,_0x386b81){var _0x51aa5e={'raw':!![],'where':{'id':_0x226bb6['params']['id']}},_0x5a01a9={};_0x5a01a9[_0xb772('0x30')]=_['keys'](db[_0xb772('0x3d')][_0xb772('0x2d')]);_0x5a01a9[_0xb772('0x31')]=_[_0xb772('0x42')](_0x226bb6[_0xb772('0x31')]);_0x5a01a9[_0xb772('0x3a')]=_['intersection'](_0x5a01a9['model'],_0x5a01a9[_0xb772('0x31')]);_0x51aa5e[_0xb772('0x33')]=_[_0xb772('0x32')](_0x5a01a9[_0xb772('0x30')],qs[_0xb772('0x34')](_0x226bb6[_0xb772('0x31')][_0xb772('0x34')]));_0x51aa5e['attributes']=_0x51aa5e[_0xb772('0x33')][_0xb772('0x43')]?_0x51aa5e['attributes']:_0x5a01a9['model'];if(_0x226bb6[_0xb772('0x31')][_0xb772('0x3e')]){_0x51aa5e['include']=[{'all':!![]}];}_0x51aa5e=_[_0xb772('0x44')]({},_0x51aa5e,_0x226bb6['options']);return db[_0xb772('0x3d')][_0xb772('0x45')](_0x51aa5e)['then'](handleEntityNotFound(_0x386b81,null))[_0xb772('0x27')](respondWithResult(_0x386b81,null))['catch'](handleError(_0x386b81,null));};exports['create']=function(_0x270931,_0x2ab8f7){return db[_0xb772('0x3d')][_0xb772('0x46')](_0x270931[_0xb772('0x47')],{})['then'](respondWithResult(_0x2ab8f7,0xc9))[_0xb772('0x41')](handleError(_0x2ab8f7,null));};exports[_0xb772('0x26')]=function(_0x185c61,_0x25a5d8){if(_0x185c61[_0xb772('0x47')]['id']){delete _0x185c61['body']['id'];}return db[_0xb772('0x3d')][_0xb772('0x45')]({'where':{'id':_0x185c61[_0xb772('0x48')]['id']}})[_0xb772('0x27')](handleEntityNotFound(_0x25a5d8,null))[_0xb772('0x27')](saveUpdates(_0x185c61[_0xb772('0x47')],null))[_0xb772('0x27')](respondWithResult(_0x25a5d8,null))[_0xb772('0x41')](handleError(_0x25a5d8,null));};exports[_0xb772('0x49')]=function(_0x25fd2a,_0x13af84){return db[_0xb772('0x3d')][_0xb772('0x45')]({'where':{'id':_0x25fd2a[_0xb772('0x48')]['id']}})['then'](handleEntityNotFound(_0x13af84,null))[_0xb772('0x27')](removeEntity(_0x13af84,null))[_0xb772('0x41')](handleError(_0x13af84,null));};exports[_0xb772('0x4a')]=function(_0x325ea3,_0x16b37a){return db[_0xb772('0x3d')][_0xb772('0x4a')]()[_0xb772('0x27')](respondWithResult(_0x16b37a,null))[_0xb772('0x41')](handleError(_0x16b37a,null));};
\ No newline at end of file
+var _0x1c97=['length','hasOwnProperty','nolimit','sort','where','filters','pick','merge','VIRTUAL','filter','options','VoiceDialReport','include','findAll','rows','show','params','keys','includeAll','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields'];(function(_0x4f66d2,_0x405cdd){var _0x400338=function(_0x405105){while(--_0x405105){_0x4f66d2['push'](_0x4f66d2['shift']());}};_0x400338(++_0x405cdd);}(_0x1c97,0x1ec));var _0x71c9=function(_0x1b915,_0x7fbd8a){_0x1b915=_0x1b915-0x0;var _0x27ec6b=_0x1c97[_0x1b915];return _0x27ec6b;};'use strict';var emlformat=require(_0x71c9('0x0'));var rimraf=require(_0x71c9('0x1'));var zipdir=require(_0x71c9('0x2'));var jsonpatch=require(_0x71c9('0x3'));var rp=require(_0x71c9('0x4'));var moment=require(_0x71c9('0x5'));var BPromise=require(_0x71c9('0x6'));var Mustache=require(_0x71c9('0x7'));var util=require(_0x71c9('0x8'));var path=require(_0x71c9('0x9'));var sox=require('sox');var csv=require(_0x71c9('0xa'));var ejs=require(_0x71c9('0xb'));var fs=require('fs');var fs_extra=require(_0x71c9('0xc'));var _=require('lodash');var squel=require(_0x71c9('0xd'));var crypto=require(_0x71c9('0xe'));var jsforce=require(_0x71c9('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x71c9('0x10'));var Redis=require(_0x71c9('0x11'));var authService=require(_0x71c9('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x71c9('0x13'));var hardwareService=require(_0x71c9('0x14'));var logger=require(_0x71c9('0x15'))(_0x71c9('0x16'));var utils=require('../../config/utils');var config=require(_0x71c9('0x17'));var licenseUtil=require(_0x71c9('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x11a6ca,_0x35238a){_0x35238a=_0x35238a||0xcc;return function(_0x239ff9){if(_0x239ff9){return _0x11a6ca[_0x71c9('0x19')](_0x35238a);}return _0x11a6ca['status'](_0x35238a)[_0x71c9('0x1a')]();};}function respondWithResult(_0x35b838,_0x2bbb9b){_0x2bbb9b=_0x2bbb9b||0xc8;return function(_0x1b9980){if(_0x1b9980){return _0x35b838[_0x71c9('0x1b')](_0x2bbb9b)[_0x71c9('0x1c')](_0x1b9980);}};}function respondWithFilteredResult(_0x2db696,_0x39dcdc){return function(_0x582d15){if(_0x582d15){var _0x589cb6=typeof _0x39dcdc[_0x71c9('0x1d')]===_0x71c9('0x1e')&&typeof _0x39dcdc[_0x71c9('0x1f')]===_0x71c9('0x1e');var _0x77a5de=_0x582d15[_0x71c9('0x20')];var _0x113046=_0x589cb6?0x0:_0x39dcdc['offset'];var _0x747fe9=_0x589cb6?_0x582d15[_0x71c9('0x20')]:_0x39dcdc[_0x71c9('0x1d')]+_0x39dcdc[_0x71c9('0x1f')];var _0x229e6c;if(_0x747fe9>=_0x77a5de){_0x747fe9=_0x77a5de;_0x229e6c=0xc8;}else{_0x229e6c=0xce;}_0x2db696['status'](_0x229e6c);return _0x2db696[_0x71c9('0x21')](_0x71c9('0x22'),_0x113046+'-'+_0x747fe9+'/'+_0x77a5de)[_0x71c9('0x1c')](_0x582d15);}return null;};}function patchUpdates(_0x328c3b){return function(_0x1dc764){try{jsonpatch[_0x71c9('0x23')](_0x1dc764,_0x328c3b,!![]);}catch(_0x1c3def){return BPromise[_0x71c9('0x24')](_0x1c3def);}return _0x1dc764['save']();};}function saveUpdates(_0x3a6a53,_0x406be4){return function(_0x4c74b2){if(_0x4c74b2){return _0x4c74b2['update'](_0x3a6a53)[_0x71c9('0x25')](function(_0x52144f){return _0x52144f;});}return null;};}function removeEntity(_0x1199a8,_0x1664c3){return function(_0x3c92cf){if(_0x3c92cf){return _0x3c92cf[_0x71c9('0x26')]()['then'](function(){_0x1199a8['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x45b818,_0x571618){return function(_0x505689){if(!_0x505689){_0x45b818[_0x71c9('0x19')](0x194);}return _0x505689;};}function handleError(_0x528b18,_0x2eaa66){_0x2eaa66=_0x2eaa66||0x1f4;return function(_0x418dd1){logger[_0x71c9('0x27')](_0x418dd1[_0x71c9('0x28')]);if(_0x418dd1[_0x71c9('0x29')]){delete _0x418dd1[_0x71c9('0x29')];}_0x528b18[_0x71c9('0x1b')](_0x2eaa66)[_0x71c9('0x2a')](_0x418dd1);};}exports[_0x71c9('0x2b')]=function(_0x3ae8ea,_0x3e0b24){var _0x5aafe0={},_0x25f4e0={},_0x435de0={'count':0x0,'rows':[]};var _0x34cf6f=_[_0x71c9('0x2c')](db['VoiceDialReport'][_0x71c9('0x2d')],function(_0x21ff20){return{'name':_0x21ff20[_0x71c9('0x2e')],'type':_0x21ff20[_0x71c9('0x2f')][_0x71c9('0x30')]};});_0x25f4e0[_0x71c9('0x31')]=_[_0x71c9('0x2c')](_0x34cf6f,_0x71c9('0x29'));_0x25f4e0[_0x71c9('0x32')]=_['keys'](_0x3ae8ea[_0x71c9('0x32')]);_0x25f4e0['filters']=_[_0x71c9('0x33')](_0x25f4e0[_0x71c9('0x31')],_0x25f4e0['query']);_0x5aafe0[_0x71c9('0x34')]=_['intersection'](_0x25f4e0[_0x71c9('0x31')],qs[_0x71c9('0x35')](_0x3ae8ea[_0x71c9('0x32')]['fields']));_0x5aafe0[_0x71c9('0x34')]=_0x5aafe0[_0x71c9('0x34')][_0x71c9('0x36')]?_0x5aafe0[_0x71c9('0x34')]:_0x25f4e0[_0x71c9('0x31')];if(!_0x3ae8ea[_0x71c9('0x32')][_0x71c9('0x37')](_0x71c9('0x38'))){_0x5aafe0[_0x71c9('0x1f')]=qs[_0x71c9('0x1f')](_0x3ae8ea[_0x71c9('0x32')][_0x71c9('0x1f')]);_0x5aafe0[_0x71c9('0x1d')]=qs['offset'](_0x3ae8ea[_0x71c9('0x32')]['offset']);}_0x5aafe0['order']=qs[_0x71c9('0x39')](_0x3ae8ea['query']['sort']);_0x5aafe0[_0x71c9('0x3a')]=qs[_0x71c9('0x3b')](_[_0x71c9('0x3c')](_0x3ae8ea[_0x71c9('0x32')],_0x25f4e0[_0x71c9('0x3b')]),_0x34cf6f);if(_0x3ae8ea[_0x71c9('0x32')]['filter']){_0x5aafe0[_0x71c9('0x3a')]=_[_0x71c9('0x3d')](_0x5aafe0['where'],{'$or':_['map'](_0x34cf6f,function(_0xe807f1){if(_0xe807f1[_0x71c9('0x2f')]!==_0x71c9('0x3e')){var _0x38e2e9={};_0x38e2e9[_0xe807f1[_0x71c9('0x29')]]={'$like':'%'+_0x3ae8ea['query'][_0x71c9('0x3f')]+'%'};return _0x38e2e9;}})});}_0x5aafe0=_['merge']({},_0x5aafe0,_0x3ae8ea[_0x71c9('0x40')]);var _0x271d6c={'where':_0x5aafe0[_0x71c9('0x3a')]};return db[_0x71c9('0x41')]['count'](_0x271d6c)[_0x71c9('0x25')](function(_0x3dfe96){_0x435de0['count']=_0x3dfe96;if(_0x3ae8ea[_0x71c9('0x32')]['includeAll']){_0x5aafe0[_0x71c9('0x42')]=[{'all':!![]}];}return db[_0x71c9('0x41')][_0x71c9('0x43')](_0x5aafe0);})[_0x71c9('0x25')](function(_0x35a275){_0x435de0[_0x71c9('0x44')]=_0x35a275;return _0x435de0;})['then'](respondWithFilteredResult(_0x3e0b24,_0x5aafe0))['catch'](handleError(_0x3e0b24,null));};exports[_0x71c9('0x45')]=function(_0x42b278,_0x412655){var _0x3d2753={'raw':!![],'where':{'id':_0x42b278[_0x71c9('0x46')]['id']}},_0x180dae={};_0x180dae[_0x71c9('0x31')]=_['keys'](db[_0x71c9('0x41')]['rawAttributes']);_0x180dae[_0x71c9('0x32')]=_[_0x71c9('0x47')](_0x42b278[_0x71c9('0x32')]);_0x180dae[_0x71c9('0x3b')]=_['intersection'](_0x180dae[_0x71c9('0x31')],_0x180dae[_0x71c9('0x32')]);_0x3d2753[_0x71c9('0x34')]=_[_0x71c9('0x33')](_0x180dae['model'],qs[_0x71c9('0x35')](_0x42b278[_0x71c9('0x32')][_0x71c9('0x35')]));_0x3d2753[_0x71c9('0x34')]=_0x3d2753['attributes']['length']?_0x3d2753[_0x71c9('0x34')]:_0x180dae[_0x71c9('0x31')];if(_0x42b278['query'][_0x71c9('0x48')]){_0x3d2753['include']=[{'all':!![]}];}_0x3d2753=_['merge']({},_0x3d2753,_0x42b278[_0x71c9('0x40')]);return db['VoiceDialReport'][_0x71c9('0x49')](_0x3d2753)[_0x71c9('0x25')](handleEntityNotFound(_0x412655,null))[_0x71c9('0x25')](respondWithResult(_0x412655,null))[_0x71c9('0x4a')](handleError(_0x412655,null));};exports['create']=function(_0x251917,_0x1b825c){return db[_0x71c9('0x41')][_0x71c9('0x4b')](_0x251917['body'],{})[_0x71c9('0x25')](respondWithResult(_0x1b825c,0xc9))[_0x71c9('0x4a')](handleError(_0x1b825c,null));};exports['update']=function(_0x231fc1,_0x12ca6b){if(_0x231fc1[_0x71c9('0x4c')]['id']){delete _0x231fc1['body']['id'];}return db[_0x71c9('0x41')][_0x71c9('0x49')]({'where':{'id':_0x231fc1[_0x71c9('0x46')]['id']}})[_0x71c9('0x25')](handleEntityNotFound(_0x12ca6b,null))[_0x71c9('0x25')](saveUpdates(_0x231fc1[_0x71c9('0x4c')],null))[_0x71c9('0x25')](respondWithResult(_0x12ca6b,null))[_0x71c9('0x4a')](handleError(_0x12ca6b,null));};exports[_0x71c9('0x26')]=function(_0x20bd74,_0x27de74){return db[_0x71c9('0x41')]['find']({'where':{'id':_0x20bd74[_0x71c9('0x46')]['id']}})['then'](handleEntityNotFound(_0x27de74,null))[_0x71c9('0x25')](removeEntity(_0x27de74,null))[_0x71c9('0x4a')](handleError(_0x27de74,null));};exports[_0x71c9('0x4d')]=function(_0x4eecbd,_0x29bcff){return db[_0x71c9('0x41')][_0x71c9('0x4d')]()[_0x71c9('0x25')](respondWithResult(_0x29bcff,null))[_0x71c9('0x4a')](handleError(_0x29bcff,null));};
\ No newline at end of file
index 3807442..6534e77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5736=['exports','define','VoiceDialReport','report_dial','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceDialReport.attributes'];(function(_0x5d3035,_0x35b16a){var _0x1fba1a=function(_0x474556){while(--_0x474556){_0x5d3035['push'](_0x5d3035['shift']());}};_0x1fba1a(++_0x35b16a);}(_0x5736,0x95));var _0x6573=function(_0x1bb554,_0x5496b5){_0x1bb554=_0x1bb554-0x0;var _0x2c17c6=_0x5736[_0x1bb554];return _0x2c17c6;};'use strict';var _=require(_0x6573('0x0'));var util=require(_0x6573('0x1'));var logger=require(_0x6573('0x2'))(_0x6573('0x3'));var moment=require(_0x6573('0x4'));var BPromise=require(_0x6573('0x5'));var rp=require(_0x6573('0x6'));var fs=require('fs');var path=require(_0x6573('0x7'));var rimraf=require(_0x6573('0x8'));var config=require(_0x6573('0x9'));var attributes=require(_0x6573('0xa'));module[_0x6573('0xb')]=function(_0x5ce730,_0x566227){return _0x5ce730[_0x6573('0xc')](_0x6573('0xd'),attributes,{'tableName':_0x6573('0xe'),'paranoid':![],'indexes':[{'fields':[_0x6573('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7f3f=['uniqueid','lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','./voiceDialReport.attributes','define','VoiceDialReport','report_dial'];(function(_0xd0a847,_0x72562b){var _0x2536ec=function(_0x20e4db){while(--_0x20e4db){_0xd0a847['push'](_0xd0a847['shift']());}};_0x2536ec(++_0x72562b);}(_0x7f3f,0x1c8));var _0xf7f3=function(_0x149a9b,_0x5bb275){_0x149a9b=_0x149a9b-0x0;var _0x2c2bf6=_0x7f3f[_0x149a9b];return _0x2c2bf6;};'use strict';var _=require(_0xf7f3('0x0'));var util=require(_0xf7f3('0x1'));var logger=require('../../config/logger')(_0xf7f3('0x2'));var moment=require(_0xf7f3('0x3'));var BPromise=require(_0xf7f3('0x4'));var rp=require(_0xf7f3('0x5'));var fs=require('fs');var path=require(_0xf7f3('0x6'));var rimraf=require('rimraf');var config=require(_0xf7f3('0x7'));var attributes=require(_0xf7f3('0x8'));module['exports']=function(_0x163eab,_0x2c1059){return _0x163eab[_0xf7f3('0x9')](_0xf7f3('0xa'),attributes,{'tableName':_0xf7f3('0xb'),'paranoid':![],'indexes':[{'fields':[_0xf7f3('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index a59be0d..989c84f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafbb=['VoiceDialReport,\x20%s,\x20%s','request\x20sent','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','CreateVoiceDialReport','VoiceDialReport','create','options','debug','UpdateVoiceDialReport','update','where','attributes','limit','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xafbb,0x1cd));var _0xbafb=function(_0x17e4ba,_0x1d6162){_0x17e4ba=_0x17e4ba-0x0;var _0x429c31=_0xafbb[_0x17e4ba];return _0x429c31;};'use strict';var _=require(_0xbafb('0x0'));var util=require(_0xbafb('0x1'));var moment=require(_0xbafb('0x2'));var BPromise=require('bluebird');var rs=require(_0xbafb('0x3'));var fs=require('fs');var Redis=require(_0xbafb('0x4'));var db=require(_0xbafb('0x5'))['db'];var utils=require(_0xbafb('0x6'));var logger=require(_0xbafb('0x7'))(_0xbafb('0x8'));var config=require(_0xbafb('0x9'));var jayson=require(_0xbafb('0xa'));var client=jayson[_0xbafb('0xb')][_0xbafb('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x35b0f7,_0x33be16,_0x25d35b){return new BPromise(function(_0x2b93a6,_0x2b095e){return client[_0xbafb('0xd')](_0x35b0f7,_0x25d35b)[_0xbafb('0xe')](function(_0x3bdb05){logger['info'](_0xbafb('0xf'),_0x33be16,_0xbafb('0x10'));logger['debug'](_0xbafb('0x11'),_0x33be16,'request\x20sent',JSON[_0xbafb('0x12')](_0x3bdb05));if(_0x3bdb05[_0xbafb('0x13')]){if(_0x3bdb05[_0xbafb('0x13')][_0xbafb('0x14')]===0x1f4){logger[_0xbafb('0x13')]('VoiceDialReport,\x20%s,\x20%s',_0x33be16,_0x3bdb05[_0xbafb('0x13')]['message']);return _0x2b095e(_0x3bdb05[_0xbafb('0x13')][_0xbafb('0x15')]);}logger[_0xbafb('0x13')]('VoiceDialReport,\x20%s,\x20%s',_0x33be16,_0x3bdb05[_0xbafb('0x13')][_0xbafb('0x15')]);return _0x2b93a6(_0x3bdb05['error'][_0xbafb('0x15')]);}else{logger[_0xbafb('0x16')]('VoiceDialReport,\x20%s,\x20%s',_0x33be16,_0xbafb('0x10'));_0x2b93a6(_0x3bdb05['result'][_0xbafb('0x15')]);}})[_0xbafb('0x17')](function(_0x2acc7b){logger[_0xbafb('0x13')]('VoiceDialReport,\x20%s,\x20%s',_0x33be16,_0x2acc7b);_0x2b095e(_0x2acc7b);});});}exports[_0xbafb('0x18')]=function(_0x54f434){var _0x53954c=this;return new Promise(function(_0x1a6f00,_0x4a2454){return db[_0xbafb('0x19')][_0xbafb('0x1a')](_0x54f434['body'],{'raw':_0x54f434['options']?_0x54f434[_0xbafb('0x1b')]['raw']===undefined?!![]:![]:!![]})[_0xbafb('0xe')](function(_0x2b67c4){logger[_0xbafb('0x16')]('CreateVoiceDialReport',_0x54f434);logger[_0xbafb('0x1c')](_0xbafb('0x18'),_0x54f434,JSON[_0xbafb('0x12')](_0x2b67c4));_0x1a6f00(_0x2b67c4);})['catch'](function(_0x53ef82){logger[_0xbafb('0x13')](_0xbafb('0x18'),_0x53ef82[_0xbafb('0x15')],_0x54f434);_0x4a2454(_0x53954c['error'](0x1f4,_0x53ef82[_0xbafb('0x15')]));});});};exports[_0xbafb('0x1d')]=function(_0x207254){var _0x3b5311=this;return new Promise(function(_0x5d1a02,_0x39fcd5){return db[_0xbafb('0x19')][_0xbafb('0x1e')](_0x207254['body'],{'raw':_0x207254['options']?_0x207254[_0xbafb('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x207254[_0xbafb('0x1b')]?_0x207254[_0xbafb('0x1b')][_0xbafb('0x1f')]||null:null,'attributes':_0x207254[_0xbafb('0x1b')]?_0x207254[_0xbafb('0x1b')][_0xbafb('0x20')]||null:null,'limit':_0x207254['options']?_0x207254[_0xbafb('0x1b')][_0xbafb('0x21')]||null:null})['then'](function(_0x5809b7){logger[_0xbafb('0x16')](_0xbafb('0x1d'),_0x207254);logger[_0xbafb('0x1c')](_0xbafb('0x1d'),_0x207254,JSON[_0xbafb('0x12')](_0x5809b7));_0x5d1a02(_0x5809b7);})[_0xbafb('0x17')](function(_0x1aa631){logger[_0xbafb('0x13')](_0xbafb('0x1d'),_0x1aa631[_0xbafb('0x15')],_0x207254);_0x39fcd5(_0x3b5311[_0xbafb('0x13')](0x1f4,_0x1aa631[_0xbafb('0x15')]));});});};
\ No newline at end of file
+var _0xada2=['attributes','limit','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','error','code','VoiceDialReport,\x20%s,\x20%s','message','result','catch','CreateVoiceDialReport','VoiceDialReport','create','body','options','raw','stringify','UpdateVoiceDialReport'];(function(_0x43dae0,_0x31f275){var _0x55dc1c=function(_0xd0dd74){while(--_0xd0dd74){_0x43dae0['push'](_0x43dae0['shift']());}};_0x55dc1c(++_0x31f275);}(_0xada2,0xc2));var _0x2ada=function(_0x21119f,_0x42e7a7){_0x21119f=_0x21119f-0x0;var _0x31135e=_0xada2[_0x21119f];return _0x31135e;};'use strict';var _=require(_0x2ada('0x0'));var util=require('util');var moment=require(_0x2ada('0x1'));var BPromise=require('bluebird');var rs=require(_0x2ada('0x2'));var fs=require('fs');var Redis=require(_0x2ada('0x3'));var db=require(_0x2ada('0x4'))['db'];var utils=require(_0x2ada('0x5'));var logger=require(_0x2ada('0x6'))(_0x2ada('0x7'));var config=require(_0x2ada('0x8'));var jayson=require(_0x2ada('0x9'));var client=jayson[_0x2ada('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x269249,_0x92ba58,_0x11cf14){return new BPromise(function(_0x2788fd,_0x435437){return client['request'](_0x269249,_0x11cf14)[_0x2ada('0xb')](function(_0x539d07){logger[_0x2ada('0xc')]('VoiceDialReport,\x20%s,\x20%s',_0x92ba58,_0x2ada('0xd'));logger[_0x2ada('0xe')](_0x2ada('0xf'),_0x92ba58,_0x2ada('0xd'),JSON['stringify'](_0x539d07));if(_0x539d07[_0x2ada('0x10')]){if(_0x539d07[_0x2ada('0x10')][_0x2ada('0x11')]===0x1f4){logger['error'](_0x2ada('0x12'),_0x92ba58,_0x539d07['error'][_0x2ada('0x13')]);return _0x435437(_0x539d07[_0x2ada('0x10')]['message']);}logger['error'](_0x2ada('0x12'),_0x92ba58,_0x539d07[_0x2ada('0x10')][_0x2ada('0x13')]);return _0x2788fd(_0x539d07['error'][_0x2ada('0x13')]);}else{logger[_0x2ada('0xc')](_0x2ada('0x12'),_0x92ba58,_0x2ada('0xd'));_0x2788fd(_0x539d07[_0x2ada('0x14')][_0x2ada('0x13')]);}})[_0x2ada('0x15')](function(_0x3111cc){logger['error'](_0x2ada('0x12'),_0x92ba58,_0x3111cc);_0x435437(_0x3111cc);});});}exports[_0x2ada('0x16')]=function(_0x6cae58){var _0x21a548=this;return new Promise(function(_0x815867,_0x38c8cc){return db[_0x2ada('0x17')][_0x2ada('0x18')](_0x6cae58[_0x2ada('0x19')],{'raw':_0x6cae58[_0x2ada('0x1a')]?_0x6cae58[_0x2ada('0x1a')][_0x2ada('0x1b')]===undefined?!![]:![]:!![]})[_0x2ada('0xb')](function(_0x8847ab){logger[_0x2ada('0xc')](_0x2ada('0x16'),_0x6cae58);logger[_0x2ada('0xe')]('CreateVoiceDialReport',_0x6cae58,JSON[_0x2ada('0x1c')](_0x8847ab));_0x815867(_0x8847ab);})[_0x2ada('0x15')](function(_0x14ed86){logger['error'](_0x2ada('0x16'),_0x14ed86[_0x2ada('0x13')],_0x6cae58);_0x38c8cc(_0x21a548[_0x2ada('0x10')](0x1f4,_0x14ed86[_0x2ada('0x13')]));});});};exports[_0x2ada('0x1d')]=function(_0x29be5f){var _0x40f1c1=this;return new Promise(function(_0xd0a83a,_0x12ad51){return db['VoiceDialReport']['update'](_0x29be5f[_0x2ada('0x19')],{'raw':_0x29be5f[_0x2ada('0x1a')]?_0x29be5f['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x29be5f[_0x2ada('0x1a')]?_0x29be5f[_0x2ada('0x1a')]['where']||null:null,'attributes':_0x29be5f[_0x2ada('0x1a')]?_0x29be5f[_0x2ada('0x1a')][_0x2ada('0x1e')]||null:null,'limit':_0x29be5f[_0x2ada('0x1a')]?_0x29be5f[_0x2ada('0x1a')][_0x2ada('0x1f')]||null:null})[_0x2ada('0xb')](function(_0x249499){logger[_0x2ada('0xc')](_0x2ada('0x1d'),_0x29be5f);logger[_0x2ada('0xe')]('UpdateVoiceDialReport',_0x29be5f,JSON['stringify'](_0x249499));_0xd0a83a(_0x249499);})['catch'](function(_0x1e6074){logger[_0x2ada('0x10')](_0x2ada('0x1d'),_0x1e6074[_0x2ada('0x13')],_0x29be5f);_0x12ad51(_0x40f1c1['error'](0x1f4,_0x1e6074['message']));});});};
\ No newline at end of file
index 46ec047..70b991d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75db=['delete','destroy','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','show','post','create','addApplications','put','/:id','update'];(function(_0x5341ff,_0x1de6df){var _0x53be58=function(_0x4da0da){while(--_0x4da0da){_0x5341ff['push'](_0x5341ff['shift']());}};_0x53be58(++_0x1de6df);}(_0x75db,0x11a));var _0xb75d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x75db[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xb75d('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xb75d('0x1'));var express=require(_0xb75d('0x2'));var router=express[_0xb75d('0x3')]();var fs_extra=require(_0xb75d('0x4'));var auth=require(_0xb75d('0x5'));var interaction=require(_0xb75d('0x6'));var config=require(_0xb75d('0x7'));var controller=require('./voiceExtension.controller');router['get']('/',auth[_0xb75d('0x8')](),controller[_0xb75d('0x9')]);router[_0xb75d('0xa')]('/:id',auth[_0xb75d('0x8')](),controller[_0xb75d('0xb')]);router[_0xb75d('0xc')]('/',auth[_0xb75d('0x8')](),controller[_0xb75d('0xd')]);router[_0xb75d('0xc')]('/:id/applications',auth[_0xb75d('0x8')](),controller[_0xb75d('0xe')]);router[_0xb75d('0xf')](_0xb75d('0x10'),auth[_0xb75d('0x8')](),controller[_0xb75d('0x11')]);router[_0xb75d('0x12')]('/:id',auth[_0xb75d('0x8')](),controller[_0xb75d('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x9535=['./voiceExtension.controller','index','get','/:id','show','post','isAuthenticated','create','/:id/applications','addApplications','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x39e384,_0x1bd5ae){var _0x11aed2=function(_0x200d26){while(--_0x200d26){_0x39e384['push'](_0x39e384['shift']());}};_0x11aed2(++_0x1bd5ae);}(_0x9535,0x1f2));var _0x5953=function(_0x2efab7,_0x4748e6){_0x2efab7=_0x2efab7-0x0;var _0x41478c=_0x9535[_0x2efab7];return _0x41478c;};'use strict';var multer=require(_0x5953('0x0'));var util=require('util');var path=require(_0x5953('0x1'));var timeout=require(_0x5953('0x2'));var express=require(_0x5953('0x3'));var router=express[_0x5953('0x4')]();var fs_extra=require(_0x5953('0x5'));var auth=require(_0x5953('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x5953('0x7'));var controller=require(_0x5953('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x5953('0x9')]);router[_0x5953('0xa')](_0x5953('0xb'),auth['isAuthenticated'](),controller[_0x5953('0xc')]);router[_0x5953('0xd')]('/',auth[_0x5953('0xe')](),controller[_0x5953('0xf')]);router[_0x5953('0xd')](_0x5953('0x10'),auth[_0x5953('0xe')](),controller[_0x5953('0x11')]);router[_0x5953('0x12')]('/:id',auth[_0x5953('0xe')](),controller[_0x5953('0x13')]);router[_0x5953('0x14')](_0x5953('0xb'),auth[_0x5953('0xe')](),controller[_0x5953('0x15')]);module[_0x5953('0x16')]=router;
\ No newline at end of file
index fc3b38e..034a4c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56ff=['outbound-fax','system','*,*,*,*','INTEGER','BOOLEAN','wav','VIRTUAL','exten','sequelize','exports','STRING','compositeIndex','ENUM','inbound','internal'];(function(_0xbaaecc,_0x480485){var _0x47d763=function(_0x29b5bc){while(--_0x29b5bc){_0xbaaecc['push'](_0xbaaecc['shift']());}};_0x47d763(++_0x480485);}(_0x56ff,0xf8));var _0xf56f=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x56ff[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0xf56f('0x0'));module[_0xf56f('0x1')]={'context':{'type':Sequelize[_0xf56f('0x2')],'allowNull':![],'unique':_0xf56f('0x3'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0xf56f('0x2')],'allowNull':![],'unique':_0xf56f('0x3')},'priority':{'type':Sequelize[_0xf56f('0x2')],'allowNull':![],'defaultValue':'1','unique':_0xf56f('0x3')},'tag':{'type':Sequelize[_0xf56f('0x2')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0xf56f('0x2')],'allowNull':![],'defaultValue':'NoOp'},'appdata':{'type':Sequelize['STRING'](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0xf56f('0x4')](_0xf56f('0x5'),'outbound',_0xf56f('0x6'),'inbound-fax',_0xf56f('0x7'),_0xf56f('0x8'),'any'),'allowNull':![]},'description':{'type':Sequelize[_0xf56f('0x2')]},'interval':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xf56f('0x9')},'IntervalId':{'type':Sequelize[_0xf56f('0xa')]},'isApp':{'type':Sequelize[_0xf56f('0xb')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0xf56f('0x2')],'defaultValue':null},'callerID':{'type':Sequelize[_0xf56f('0x2')],'allowNull':!![]},'record':{'type':Sequelize[_0xf56f('0xb')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0xf56f('0xa')]},'recordingFormat':{'type':Sequelize[_0xf56f('0x2')],'defaultValue':_0xf56f('0xc')},'answer':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'name':{'type':Sequelize[_0xf56f('0xd')],'get':function(_0x5452c9){return this['getDataValue'](_0xf56f('0xe'));}},'alias':{'type':Sequelize[_0xf56f('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0x0068=['sequelize','STRING','compositeIndex','NoOp','ENUM','inbound','outbound','internal','inbound-fax','outbound-fax','system','any','*,*,*,*','INTEGER','BOOLEAN','wav','VIRTUAL','getDataValue','exten'];(function(_0x3dca03,_0x40ef4e){var _0x20b315=function(_0x311dd3){while(--_0x311dd3){_0x3dca03['push'](_0x3dca03['shift']());}};_0x20b315(++_0x40ef4e);}(_0x0068,0x10a));var _0x8006=function(_0x5241ff,_0x4fa868){_0x5241ff=_0x5241ff-0x0;var _0x10974a=_0x0068[_0x5241ff];return _0x10974a;};'use strict';var Sequelize=require(_0x8006('0x0'));module['exports']={'context':{'type':Sequelize[_0x8006('0x1')],'allowNull':![],'unique':_0x8006('0x2'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x8006('0x2')},'priority':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'1','unique':_0x8006('0x2')},'tag':{'type':Sequelize[_0x8006('0x1')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x8006('0x3')},'appdata':{'type':Sequelize[_0x8006('0x1')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x8006('0x4')](_0x8006('0x5'),_0x8006('0x6'),_0x8006('0x7'),_0x8006('0x8'),_0x8006('0x9'),_0x8006('0xa'),_0x8006('0xb')),'allowNull':![]},'description':{'type':Sequelize[_0x8006('0x1')]},'interval':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x8006('0xc')},'IntervalId':{'type':Sequelize[_0x8006('0xd')]},'isApp':{'type':Sequelize[_0x8006('0xe')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize['STRING'],'defaultValue':null},'callerID':{'type':Sequelize[_0x8006('0x1')],'allowNull':!![]},'record':{'type':Sequelize[_0x8006('0xe')],'defaultValue':![]},'cutdigits':{'type':Sequelize['INTEGER']},'recordingFormat':{'type':Sequelize[_0x8006('0x1')],'defaultValue':_0x8006('0xf')},'answer':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'name':{'type':Sequelize[_0x8006('0x10')],'get':function(_0x435208){return this[_0x8006('0x11')](_0x8006('0x12'));}},'alias':{'type':Sequelize[_0x8006('0x1')],'allowNull':!![]}};
\ No newline at end of file
index 09d5a9f..b26243b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bf4=['includeAll','findAll','rows','show','params','length','merge','catch','create','body','outbound','startsWith','exten','concat','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','inbound','InternalRoutes','internal','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','pick','context','description','recordingFormat','cutdigits','alias','addApplications','sequelize','transaction','isApp','rewriteDial','toLowerCase','true','createRouting','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','eml-format','zip-dir','fast-json-patch','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','sendStatus','status','end','offset','limit','undefined','count','set','json','reject','save','update','then','destroy','get','InboundRoutes','OutboundRoutes','map','value','includes','type','find','name','error','stack','send','index','VoiceExtension','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','filter','VIRTUAL','options'];(function(_0x57eee0,_0x5a7bd2){var _0x161f31=function(_0x25f3fc){while(--_0x25f3fc){_0x57eee0['push'](_0x57eee0['shift']());}};_0x161f31(++_0x5a7bd2);}(_0x4bf4,0x9b));var _0x44bf=function(_0x4762a2,_0x5c7cf6){_0x4762a2=_0x4762a2-0x0;var _0x4a6965=_0x4bf4[_0x4762a2];return _0x4a6965;};'use strict';var emlformat=require(_0x44bf('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x44bf('0x1'));var jsonpatch=require(_0x44bf('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x44bf('0x3'));var Mustache=require(_0x44bf('0x4'));var util=require('util');var path=require(_0x44bf('0x5'));var sox=require(_0x44bf('0x6'));var csv=require(_0x44bf('0x7'));var ejs=require(_0x44bf('0x8'));var fs=require('fs');var fs_extra=require(_0x44bf('0x9'));var _=require(_0x44bf('0xa'));var squel=require(_0x44bf('0xb'));var crypto=require(_0x44bf('0xc'));var jsforce=require(_0x44bf('0xd'));var deskjs=require(_0x44bf('0xe'));var toCsv=require(_0x44bf('0x7'));var querystring=require(_0x44bf('0xf'));var Papa=require(_0x44bf('0x10'));var Redis=require('ioredis');var authService=require(_0x44bf('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x44bf('0x12'));var hardwareService=require(_0x44bf('0x13'));var logger=require('../../config/logger')(_0x44bf('0x14'));var utils=require(_0x44bf('0x15'));var config=require(_0x44bf('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x44bf('0x17')]=_[_0x44bf('0x18')](config[_0x44bf('0x17')],{'host':_0x44bf('0x19'),'port':0x18eb});var socket=require(_0x44bf('0x1a'))(new Redis(config[_0x44bf('0x17')]));require(_0x44bf('0x1b'))['register'](socket);function respondWithStatusCode(_0x1136ca,_0x411db8){_0x411db8=_0x411db8||0xcc;return function(_0x4d1046){if(_0x4d1046){return _0x1136ca[_0x44bf('0x1c')](_0x411db8);}return _0x1136ca[_0x44bf('0x1d')](_0x411db8)[_0x44bf('0x1e')]();};}function respondWithResult(_0x285718,_0x50375e){_0x50375e=_0x50375e||0xc8;return function(_0x491d3d){if(_0x491d3d){return _0x285718[_0x44bf('0x1d')](_0x50375e)['json'](_0x491d3d);}};}function respondWithFilteredResult(_0x2e4fe9,_0xef61bf){return function(_0x547f7f){if(_0x547f7f){var _0xee3f0a=typeof _0xef61bf[_0x44bf('0x1f')]==='undefined'&&typeof _0xef61bf[_0x44bf('0x20')]===_0x44bf('0x21');var _0x4ab8fb=_0x547f7f[_0x44bf('0x22')];var _0x8612e0=_0xee3f0a?0x0:_0xef61bf[_0x44bf('0x1f')];var _0xaf4d58=_0xee3f0a?_0x547f7f[_0x44bf('0x22')]:_0xef61bf[_0x44bf('0x1f')]+_0xef61bf['limit'];var _0x3594bd;if(_0xaf4d58>=_0x4ab8fb){_0xaf4d58=_0x4ab8fb;_0x3594bd=0xc8;}else{_0x3594bd=0xce;}_0x2e4fe9[_0x44bf('0x1d')](_0x3594bd);return _0x2e4fe9[_0x44bf('0x23')]('Content-Range',_0x8612e0+'-'+_0xaf4d58+'/'+_0x4ab8fb)[_0x44bf('0x24')](_0x547f7f);}return null;};}function patchUpdates(_0x335b2d){return function(_0x215aea){try{jsonpatch['apply'](_0x215aea,_0x335b2d,!![]);}catch(_0x529000){return BPromise[_0x44bf('0x25')](_0x529000);}return _0x215aea[_0x44bf('0x26')]();};}function saveUpdates(_0x4e3387,_0x32e1cd){return function(_0xf7fa64){if(_0xf7fa64){return _0xf7fa64[_0x44bf('0x27')](_0x4e3387)[_0x44bf('0x28')](function(_0x490707){return _0x490707;});}return null;};}function removeEntity(_0x5b194e,_0x4d8889){return function(_0xcee031){if(_0xcee031){return _0xcee031[_0x44bf('0x29')]()[_0x44bf('0x28')](function(){var _0x2f1714=_0xcee031[_0x44bf('0x2a')]({'plain':!![]});var _0x5b2892=[{'name':_0x44bf('0x2b'),'value':'inbound','ignore':![]},{'name':_0x44bf('0x2c'),'value':'outbound','ignore':![]},{'name':'InternalRoutes','value':'internal','ignore':![]}];var _0x3a743c=_(_0x5b2892)['filter']('ignore')[_0x44bf('0x2d')](_0x44bf('0x2e'))[_0x44bf('0x2e')]();if(_[_0x44bf('0x2f')](_0x3a743c,_0x2f1714[_0x44bf('0x30')])){return;}var _0x219a35=_[_0x44bf('0x31')](_0x5b2892,[_0x44bf('0x2e'),_0x2f1714['type']])[_0x44bf('0x32')];return db['UserProfileResource'][_0x44bf('0x29')]({'where':{'type':_0x219a35,'resourceId':_0x2f1714['id']}})[_0x44bf('0x28')](function(){return _0xcee031;});})[_0x44bf('0x28')](function(){_0x5b194e[_0x44bf('0x1d')](0xcc)[_0x44bf('0x1e')]();});}};}function handleEntityNotFound(_0x452701,_0x4a270c){return function(_0x3ade9c){if(!_0x3ade9c){_0x452701['sendStatus'](0x194);}return _0x3ade9c;};}function handleError(_0x2506e5,_0x417d58){_0x417d58=_0x417d58||0x1f4;return function(_0x33e42d){logger[_0x44bf('0x33')](_0x33e42d[_0x44bf('0x34')]);if(_0x33e42d[_0x44bf('0x32')]){delete _0x33e42d['name'];}_0x2506e5['status'](_0x417d58)[_0x44bf('0x35')](_0x33e42d);};}exports[_0x44bf('0x36')]=function(_0x18dedd,_0x2af6bb){var _0x5af8e3={},_0x1d6ba4={},_0x3cbaff={'count':0x0,'rows':[]};var _0x290865=_[_0x44bf('0x2d')](db[_0x44bf('0x37')][_0x44bf('0x38')],function(_0x1054ba){return{'name':_0x1054ba[_0x44bf('0x39')],'type':_0x1054ba[_0x44bf('0x30')][_0x44bf('0x3a')]};});_0x1d6ba4[_0x44bf('0x3b')]=_[_0x44bf('0x2d')](_0x290865,'name');_0x1d6ba4[_0x44bf('0x3c')]=_[_0x44bf('0x3d')](_0x18dedd['query']);_0x1d6ba4[_0x44bf('0x3e')]=_['intersection'](_0x1d6ba4[_0x44bf('0x3b')],_0x1d6ba4[_0x44bf('0x3c')]);_0x5af8e3['attributes']=_[_0x44bf('0x3f')](_0x1d6ba4[_0x44bf('0x3b')],qs[_0x44bf('0x40')](_0x18dedd[_0x44bf('0x3c')][_0x44bf('0x40')]));_0x5af8e3[_0x44bf('0x41')]=_0x5af8e3[_0x44bf('0x41')]['length']?_0x5af8e3['attributes']:_0x1d6ba4[_0x44bf('0x3b')];if(!_0x18dedd[_0x44bf('0x3c')][_0x44bf('0x42')]('nolimit')){_0x5af8e3[_0x44bf('0x20')]=qs[_0x44bf('0x20')](_0x18dedd[_0x44bf('0x3c')][_0x44bf('0x20')]);_0x5af8e3[_0x44bf('0x1f')]=qs['offset'](_0x18dedd[_0x44bf('0x3c')][_0x44bf('0x1f')]);}_0x5af8e3[_0x44bf('0x43')]=qs[_0x44bf('0x44')](_0x18dedd[_0x44bf('0x3c')][_0x44bf('0x44')]);_0x5af8e3[_0x44bf('0x45')]=qs[_0x44bf('0x3e')](_['pick'](_0x18dedd[_0x44bf('0x3c')],_0x1d6ba4[_0x44bf('0x3e')]),_0x290865);if(_0x18dedd[_0x44bf('0x3c')][_0x44bf('0x46')]){_0x5af8e3[_0x44bf('0x45')]=_['merge'](_0x5af8e3['where'],{'$or':_[_0x44bf('0x2d')](_0x290865,function(_0x42cf12){if(_0x42cf12['type']!==_0x44bf('0x47')){var _0x45fbc9={};_0x45fbc9[_0x42cf12[_0x44bf('0x32')]]={'$like':'%'+_0x18dedd[_0x44bf('0x3c')]['filter']+'%'};return _0x45fbc9;}})});}_0x5af8e3=_['merge']({},_0x5af8e3,_0x18dedd[_0x44bf('0x48')]);var _0x59039f={'where':_0x5af8e3[_0x44bf('0x45')]};return db[_0x44bf('0x37')][_0x44bf('0x22')](_0x59039f)[_0x44bf('0x28')](function(_0x89a70b){_0x3cbaff[_0x44bf('0x22')]=_0x89a70b;if(_0x18dedd[_0x44bf('0x3c')][_0x44bf('0x49')]){_0x5af8e3['include']=[{'all':!![]}];}return db[_0x44bf('0x37')][_0x44bf('0x4a')](_0x5af8e3);})[_0x44bf('0x28')](function(_0x4c615b){_0x3cbaff[_0x44bf('0x4b')]=_0x4c615b;return _0x3cbaff;})[_0x44bf('0x28')](respondWithFilteredResult(_0x2af6bb,_0x5af8e3))['catch'](handleError(_0x2af6bb,null));};exports[_0x44bf('0x4c')]=function(_0x3f59aa,_0x5e4779){var _0x467bc6={'raw':![],'where':{'id':_0x3f59aa[_0x44bf('0x4d')]['id']}},_0x43b98f={};_0x43b98f['model']=_[_0x44bf('0x3d')](db['VoiceExtension'][_0x44bf('0x38')]);_0x43b98f[_0x44bf('0x3c')]=_['keys'](_0x3f59aa[_0x44bf('0x3c')]);_0x43b98f[_0x44bf('0x3e')]=_[_0x44bf('0x3f')](_0x43b98f[_0x44bf('0x3b')],_0x43b98f['query']);_0x467bc6[_0x44bf('0x41')]=_['intersection'](_0x43b98f[_0x44bf('0x3b')],qs[_0x44bf('0x40')](_0x3f59aa['query']['fields']));_0x467bc6[_0x44bf('0x41')]=_0x467bc6[_0x44bf('0x41')][_0x44bf('0x4e')]?_0x467bc6['attributes']:_0x43b98f[_0x44bf('0x3b')];if(_0x3f59aa['query'][_0x44bf('0x49')]){_0x467bc6['include']=[{'all':!![]}];}_0x467bc6=_[_0x44bf('0x4f')]({},_0x467bc6,_0x3f59aa[_0x44bf('0x48')]);return db[_0x44bf('0x37')][_0x44bf('0x31')](_0x467bc6)[_0x44bf('0x28')](handleEntityNotFound(_0x5e4779,null))[_0x44bf('0x28')](respondWithResult(_0x5e4779,null))[_0x44bf('0x50')](handleError(_0x5e4779,null));};exports[_0x44bf('0x29')]=function(_0x4ea5f0,_0x5ba121){return db[_0x44bf('0x37')][_0x44bf('0x31')]({'where':{'id':_0x4ea5f0[_0x44bf('0x4d')]['id']}})[_0x44bf('0x28')](handleEntityNotFound(_0x5ba121,null))['then'](removeEntity(_0x5ba121,null))['catch'](handleError(_0x5ba121,null));};exports[_0x44bf('0x51')]=function(_0x122aa5,_0x1b1ffd){if(_0x122aa5[_0x44bf('0x52')][_0x44bf('0x30')]===_0x44bf('0x53')&&!_[_0x44bf('0x54')](_0x122aa5['body'][_0x44bf('0x55')],'_')){_0x122aa5[_0x44bf('0x52')]['exten']='_'[_0x44bf('0x56')](_0x122aa5[_0x44bf('0x52')]['exten']);}return db[_0x44bf('0x37')][_0x44bf('0x51')](_0x122aa5['body'],{'raw':![]})['then'](function(_0x13031b){var _0x346c02=_0x122aa5[_0x44bf('0x57')][_0x44bf('0x2a')]({'plain':!![]});if(!_0x346c02)throw new Error(_0x44bf('0x58'));if(_0x346c02[_0x44bf('0x59')]===_0x44bf('0x57')){var _0x30e7c6=_0x13031b[_0x44bf('0x2a')]({'plain':!![]});var _0x5b8d95=[{'name':_0x44bf('0x2b'),'value':_0x44bf('0x5a')},{'name':_0x44bf('0x2c'),'value':'outbound'},{'name':_0x44bf('0x5b'),'value':_0x44bf('0x5c')}];var _0x2aa309=_['find'](_0x5b8d95,[_0x44bf('0x2e'),_0x30e7c6[_0x44bf('0x30')]])[_0x44bf('0x32')];return db[_0x44bf('0x5d')][_0x44bf('0x31')]({'where':{'name':_0x2aa309,'userProfileId':_0x346c02[_0x44bf('0x5e')]},'raw':!![]})[_0x44bf('0x28')](function(_0x3600b2){if(_0x3600b2&&_0x3600b2['autoAssociation']===0x0){return db[_0x44bf('0x5f')]['create']({'name':_0x30e7c6[_0x44bf('0x32')],'resourceId':_0x30e7c6['id'],'type':_0x3600b2[_0x44bf('0x32')],'sectionId':_0x3600b2['id']},{})[_0x44bf('0x28')](function(){return _0x13031b;});}else{return _0x13031b;}})[_0x44bf('0x50')](function(_0x200918){logger[_0x44bf('0x33')](_0x44bf('0x60'),_0x200918);throw _0x200918;});}return _0x13031b;})['then'](respondWithResult(_0x1b1ffd,0xc9))[_0x44bf('0x50')](handleError(_0x1b1ffd,null));};exports[_0x44bf('0x27')]=function(_0x57739a,_0x319b28){if(_0x57739a[_0x44bf('0x52')]['id']){delete _0x57739a[_0x44bf('0x52')]['id'];}return db[_0x44bf('0x37')][_0x44bf('0x31')]({'where':{'id':_0x57739a['params']['id']}})['then'](handleEntityNotFound(_0x319b28,null))[_0x44bf('0x28')](function(_0x3539a3){if(_0x3539a3){return db[_0x44bf('0x37')][_0x44bf('0x27')](_[_0x44bf('0x61')](_0x57739a[_0x44bf('0x52')],[_0x44bf('0x55'),_0x44bf('0x62'),_0x44bf('0x63'),_0x44bf('0x64'),_0x44bf('0x65'),'mandatoryDisposition',_0x44bf('0x66')]),{'where':{'context':_0x3539a3[_0x44bf('0x62')],'exten':_0x3539a3[_0x44bf('0x55')]},'individualHooks':!![]})[_0x44bf('0x28')](function(_0x3270aa){return _0x3270aa;});}return null;})[_0x44bf('0x28')](respondWithStatusCode(_0x319b28,null))['catch'](handleError(_0x319b28,null));};exports[_0x44bf('0x67')]=function(_0x121a47,_0x24ce4e){return db[_0x44bf('0x37')]['findOne']({'where':{'id':_0x121a47[_0x44bf('0x4d')]['id']}})[_0x44bf('0x28')](function(_0x3259af){if(_0x3259af){return db[_0x44bf('0x68')][_0x44bf('0x69')](function(_0x29ad2d){return db[_0x44bf('0x37')][_0x44bf('0x29')]({'where':{'VoiceExtensionId':_0x121a47['params']['id']},'transaction':_0x29ad2d})[_0x44bf('0x28')](function(){var _0x58e0a0=_['map'](_0x121a47[_0x44bf('0x52')],function(_0x2e0261){_0x2e0261['VoiceExtensionId']=_0x121a47['params']['id'];_0x2e0261[_0x44bf('0x6a')]=!![];return _0x2e0261;});var _0x45f772=_0x121a47[_0x44bf('0x3c')][_0x44bf('0x6b')]&&_0x121a47['query'][_0x44bf('0x6b')][_0x44bf('0x6c')]()===_0x44bf('0x6d')?!![]:![];return _0x3259af[_0x44bf('0x6e')](_0x58e0a0,_0x45f772);})['then'](function(_0xe633d3){return db[_0x44bf('0x37')][_0x44bf('0x6f')](_0xe633d3,{'transaction':_0x29ad2d});});})[_0x44bf('0x28')](function(){return db[_0x44bf('0x37')][_0x44bf('0x70')]({'where':{'isApp':!![],'VoiceExtensionId':_0x121a47[_0x44bf('0x4d')]['id']},'order':_0x44bf('0x71')});});}})['then'](respondWithResult(_0x24ce4e,null))[_0x44bf('0x50')](handleError(_0x24ce4e,null));};
\ No newline at end of file
+var _0x3b81=['squel','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','get','InboundRoutes','inbound','OutboundRoutes','outbound','InternalRoutes','internal','filter','ignore','value','includes','find','type','name','UserProfileResource','send','map','VoiceExtension','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','create','body','exten','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','recordingFormat','cutdigits','mandatoryDisposition','alias','addApplications','findOne','sequelize','isApp','rewriteDial','createRouting','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash'];(function(_0x5f1e1c,_0x329fc6){var _0x5981f5=function(_0x2f1db5){while(--_0x2f1db5){_0x5f1e1c['push'](_0x5f1e1c['shift']());}};_0x5981f5(++_0x329fc6);}(_0x3b81,0x132));var _0x13b8=function(_0x2bfe2c,_0x244cc5){_0x2bfe2c=_0x2bfe2c-0x0;var _0x311713=_0x3b81[_0x2bfe2c];return _0x311713;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x13b8('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x13b8('0x1'));var rp=require(_0x13b8('0x2'));var moment=require(_0x13b8('0x3'));var BPromise=require(_0x13b8('0x4'));var Mustache=require('mustache');var util=require(_0x13b8('0x5'));var path=require(_0x13b8('0x6'));var sox=require(_0x13b8('0x7'));var csv=require(_0x13b8('0x8'));var ejs=require(_0x13b8('0x9'));var fs=require('fs');var fs_extra=require(_0x13b8('0xa'));var _=require(_0x13b8('0xb'));var squel=require(_0x13b8('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x13b8('0xd'));var toCsv=require(_0x13b8('0x8'));var querystring=require('querystring');var Papa=require(_0x13b8('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x13b8('0xf'));var as=require(_0x13b8('0x10'));var hardwareService=require(_0x13b8('0x11'));var logger=require('../../config/logger')('api');var utils=require(_0x13b8('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x13b8('0x13'));var db=require(_0x13b8('0x14'))['db'];config['redis']=_[_0x13b8('0x15')](config['redis'],{'host':_0x13b8('0x16'),'port':0x18eb});var socket=require(_0x13b8('0x17'))(new Redis(config['redis']));require('./voiceExtension.socket')[_0x13b8('0x18')](socket);function respondWithStatusCode(_0x33a54a,_0x5b0102){_0x5b0102=_0x5b0102||0xcc;return function(_0x28cf2c){if(_0x28cf2c){return _0x33a54a[_0x13b8('0x19')](_0x5b0102);}return _0x33a54a[_0x13b8('0x1a')](_0x5b0102)[_0x13b8('0x1b')]();};}function respondWithResult(_0x4035ab,_0x5bc884){_0x5bc884=_0x5bc884||0xc8;return function(_0x30081f){if(_0x30081f){return _0x4035ab[_0x13b8('0x1a')](_0x5bc884)['json'](_0x30081f);}};}function respondWithFilteredResult(_0x38da8d,_0x3c2f17){return function(_0x412be0){if(_0x412be0){var _0x406c2d=typeof _0x3c2f17[_0x13b8('0x1c')]===_0x13b8('0x1d')&&typeof _0x3c2f17[_0x13b8('0x1e')]===_0x13b8('0x1d');var _0x163f2a=_0x412be0['count'];var _0xe9c4fa=_0x406c2d?0x0:_0x3c2f17['offset'];var _0x3eb800=_0x406c2d?_0x412be0[_0x13b8('0x1f')]:_0x3c2f17[_0x13b8('0x1c')]+_0x3c2f17[_0x13b8('0x1e')];var _0x5d766c;if(_0x3eb800>=_0x163f2a){_0x3eb800=_0x163f2a;_0x5d766c=0xc8;}else{_0x5d766c=0xce;}_0x38da8d[_0x13b8('0x1a')](_0x5d766c);return _0x38da8d[_0x13b8('0x20')](_0x13b8('0x21'),_0xe9c4fa+'-'+_0x3eb800+'/'+_0x163f2a)['json'](_0x412be0);}return null;};}function patchUpdates(_0x24f964){return function(_0x4cb5a2){try{jsonpatch[_0x13b8('0x22')](_0x4cb5a2,_0x24f964,!![]);}catch(_0x2d3724){return BPromise[_0x13b8('0x23')](_0x2d3724);}return _0x4cb5a2[_0x13b8('0x24')]();};}function saveUpdates(_0x120df5,_0x525c91){return function(_0x49184c){if(_0x49184c){return _0x49184c[_0x13b8('0x25')](_0x120df5)['then'](function(_0x2222a9){return _0x2222a9;});}return null;};}function removeEntity(_0x2b55c,_0x371dc0){return function(_0x2d1905){if(_0x2d1905){return _0x2d1905[_0x13b8('0x26')]()[_0x13b8('0x27')](function(){var _0xd1a811=_0x2d1905[_0x13b8('0x28')]({'plain':!![]});var _0x4a548b=[{'name':_0x13b8('0x29'),'value':_0x13b8('0x2a'),'ignore':![]},{'name':_0x13b8('0x2b'),'value':_0x13b8('0x2c'),'ignore':![]},{'name':_0x13b8('0x2d'),'value':_0x13b8('0x2e'),'ignore':![]}];var _0x16a8ce=_(_0x4a548b)[_0x13b8('0x2f')](_0x13b8('0x30'))['map'](_0x13b8('0x31'))[_0x13b8('0x31')]();if(_[_0x13b8('0x32')](_0x16a8ce,_0xd1a811['type'])){return;}var _0x52a9c9=_[_0x13b8('0x33')](_0x4a548b,[_0x13b8('0x31'),_0xd1a811[_0x13b8('0x34')]])[_0x13b8('0x35')];return db[_0x13b8('0x36')]['destroy']({'where':{'type':_0x52a9c9,'resourceId':_0xd1a811['id']}})[_0x13b8('0x27')](function(){return _0x2d1905;});})[_0x13b8('0x27')](function(){_0x2b55c[_0x13b8('0x1a')](0xcc)[_0x13b8('0x1b')]();});}};}function handleEntityNotFound(_0x515925,_0x97eca1){return function(_0x3bb2c9){if(!_0x3bb2c9){_0x515925['sendStatus'](0x194);}return _0x3bb2c9;};}function handleError(_0x26eef9,_0x341070){_0x341070=_0x341070||0x1f4;return function(_0x350a88){logger['error'](_0x350a88['stack']);if(_0x350a88['name']){delete _0x350a88[_0x13b8('0x35')];}_0x26eef9[_0x13b8('0x1a')](_0x341070)[_0x13b8('0x37')](_0x350a88);};}exports['index']=function(_0x5813bb,_0x520c5f){var _0x4e45fe={},_0x26a6b5={},_0x4d139={'count':0x0,'rows':[]};var _0x374457=_[_0x13b8('0x38')](db[_0x13b8('0x39')][_0x13b8('0x3a')],function(_0xb56f3b){return{'name':_0xb56f3b[_0x13b8('0x3b')],'type':_0xb56f3b['type']['key']};});_0x26a6b5[_0x13b8('0x3c')]=_[_0x13b8('0x38')](_0x374457,_0x13b8('0x35'));_0x26a6b5[_0x13b8('0x3d')]=_[_0x13b8('0x3e')](_0x5813bb['query']);_0x26a6b5[_0x13b8('0x3f')]=_[_0x13b8('0x40')](_0x26a6b5[_0x13b8('0x3c')],_0x26a6b5[_0x13b8('0x3d')]);_0x4e45fe[_0x13b8('0x41')]=_[_0x13b8('0x40')](_0x26a6b5[_0x13b8('0x3c')],qs[_0x13b8('0x42')](_0x5813bb['query'][_0x13b8('0x42')]));_0x4e45fe[_0x13b8('0x41')]=_0x4e45fe[_0x13b8('0x41')][_0x13b8('0x43')]?_0x4e45fe[_0x13b8('0x41')]:_0x26a6b5[_0x13b8('0x3c')];if(!_0x5813bb[_0x13b8('0x3d')][_0x13b8('0x44')]('nolimit')){_0x4e45fe['limit']=qs[_0x13b8('0x1e')](_0x5813bb[_0x13b8('0x3d')][_0x13b8('0x1e')]);_0x4e45fe[_0x13b8('0x1c')]=qs[_0x13b8('0x1c')](_0x5813bb[_0x13b8('0x3d')][_0x13b8('0x1c')]);}_0x4e45fe[_0x13b8('0x45')]=qs[_0x13b8('0x46')](_0x5813bb['query'][_0x13b8('0x46')]);_0x4e45fe[_0x13b8('0x47')]=qs[_0x13b8('0x3f')](_[_0x13b8('0x48')](_0x5813bb[_0x13b8('0x3d')],_0x26a6b5[_0x13b8('0x3f')]),_0x374457);if(_0x5813bb['query'][_0x13b8('0x2f')]){_0x4e45fe[_0x13b8('0x47')]=_[_0x13b8('0x49')](_0x4e45fe['where'],{'$or':_[_0x13b8('0x38')](_0x374457,function(_0x3847c5){if(_0x3847c5['type']!==_0x13b8('0x4a')){var _0x2798b5={};_0x2798b5[_0x3847c5[_0x13b8('0x35')]]={'$like':'%'+_0x5813bb[_0x13b8('0x3d')]['filter']+'%'};return _0x2798b5;}})});}_0x4e45fe=_[_0x13b8('0x49')]({},_0x4e45fe,_0x5813bb[_0x13b8('0x4b')]);var _0x4027c1={'where':_0x4e45fe[_0x13b8('0x47')]};return db['VoiceExtension'][_0x13b8('0x1f')](_0x4027c1)[_0x13b8('0x27')](function(_0x4d1ec3){_0x4d139[_0x13b8('0x1f')]=_0x4d1ec3;if(_0x5813bb[_0x13b8('0x3d')][_0x13b8('0x4c')]){_0x4e45fe[_0x13b8('0x4d')]=[{'all':!![]}];}return db['VoiceExtension'][_0x13b8('0x4e')](_0x4e45fe);})['then'](function(_0x5384c5){_0x4d139['rows']=_0x5384c5;return _0x4d139;})['then'](respondWithFilteredResult(_0x520c5f,_0x4e45fe))[_0x13b8('0x4f')](handleError(_0x520c5f,null));};exports[_0x13b8('0x50')]=function(_0x33bdd1,_0x399ed1){var _0x11b5aa={'raw':![],'where':{'id':_0x33bdd1[_0x13b8('0x51')]['id']}},_0x311053={};_0x311053['model']=_['keys'](db[_0x13b8('0x39')][_0x13b8('0x3a')]);_0x311053[_0x13b8('0x3d')]=_[_0x13b8('0x3e')](_0x33bdd1[_0x13b8('0x3d')]);_0x311053[_0x13b8('0x3f')]=_[_0x13b8('0x40')](_0x311053[_0x13b8('0x3c')],_0x311053['query']);_0x11b5aa[_0x13b8('0x41')]=_['intersection'](_0x311053[_0x13b8('0x3c')],qs[_0x13b8('0x42')](_0x33bdd1['query'][_0x13b8('0x42')]));_0x11b5aa[_0x13b8('0x41')]=_0x11b5aa[_0x13b8('0x41')]['length']?_0x11b5aa[_0x13b8('0x41')]:_0x311053[_0x13b8('0x3c')];if(_0x33bdd1[_0x13b8('0x3d')]['includeAll']){_0x11b5aa[_0x13b8('0x4d')]=[{'all':!![]}];}_0x11b5aa=_[_0x13b8('0x49')]({},_0x11b5aa,_0x33bdd1['options']);return db[_0x13b8('0x39')][_0x13b8('0x33')](_0x11b5aa)[_0x13b8('0x27')](handleEntityNotFound(_0x399ed1,null))[_0x13b8('0x27')](respondWithResult(_0x399ed1,null))[_0x13b8('0x4f')](handleError(_0x399ed1,null));};exports[_0x13b8('0x26')]=function(_0x311dd0,_0x472e15){return db[_0x13b8('0x39')]['find']({'where':{'id':_0x311dd0[_0x13b8('0x51')]['id']}})[_0x13b8('0x27')](handleEntityNotFound(_0x472e15,null))[_0x13b8('0x27')](removeEntity(_0x472e15,null))[_0x13b8('0x4f')](handleError(_0x472e15,null));};exports[_0x13b8('0x52')]=function(_0x368b46,_0x443e18){if(_0x368b46[_0x13b8('0x53')][_0x13b8('0x34')]===_0x13b8('0x2c')&&!_['startsWith'](_0x368b46[_0x13b8('0x53')][_0x13b8('0x54')],'_')){_0x368b46['body'][_0x13b8('0x54')]='_'['concat'](_0x368b46[_0x13b8('0x53')][_0x13b8('0x54')]);}return db[_0x13b8('0x39')][_0x13b8('0x52')](_0x368b46['body'],{'raw':![]})[_0x13b8('0x27')](function(_0x392e58){var _0x210446=_0x368b46[_0x13b8('0x55')]['get']({'plain':!![]});if(!_0x210446)throw new Error(_0x13b8('0x56'));if(_0x210446[_0x13b8('0x57')]===_0x13b8('0x55')){var _0x1921c4=_0x392e58[_0x13b8('0x28')]({'plain':!![]});var _0x124081=[{'name':'InboundRoutes','value':'inbound'},{'name':_0x13b8('0x2b'),'value':_0x13b8('0x2c')},{'name':_0x13b8('0x2d'),'value':_0x13b8('0x2e')}];var _0x213a56=_['find'](_0x124081,[_0x13b8('0x31'),_0x1921c4[_0x13b8('0x34')]])[_0x13b8('0x35')];return db['UserProfileSection'][_0x13b8('0x33')]({'where':{'name':_0x213a56,'userProfileId':_0x210446[_0x13b8('0x58')]},'raw':!![]})[_0x13b8('0x27')](function(_0x3fc7f9){if(_0x3fc7f9&&_0x3fc7f9[_0x13b8('0x59')]===0x0){return db[_0x13b8('0x36')][_0x13b8('0x52')]({'name':_0x1921c4['name'],'resourceId':_0x1921c4['id'],'type':_0x3fc7f9[_0x13b8('0x35')],'sectionId':_0x3fc7f9['id']},{})[_0x13b8('0x27')](function(){return _0x392e58;});}else{return _0x392e58;}})[_0x13b8('0x4f')](function(_0x425632){logger[_0x13b8('0x5a')](_0x13b8('0x5b'),_0x425632);throw _0x425632;});}return _0x392e58;})[_0x13b8('0x27')](respondWithResult(_0x443e18,0xc9))['catch'](handleError(_0x443e18,null));};exports[_0x13b8('0x25')]=function(_0xcee440,_0x3d4697){if(_0xcee440[_0x13b8('0x53')]['id']){delete _0xcee440[_0x13b8('0x53')]['id'];}return db[_0x13b8('0x39')][_0x13b8('0x33')]({'where':{'id':_0xcee440[_0x13b8('0x51')]['id']}})[_0x13b8('0x27')](handleEntityNotFound(_0x3d4697,null))[_0x13b8('0x27')](function(_0xcae9a8){if(_0xcae9a8){return db['VoiceExtension']['update'](_[_0x13b8('0x48')](_0xcee440[_0x13b8('0x53')],['exten',_0x13b8('0x5c'),'description',_0x13b8('0x5d'),_0x13b8('0x5e'),_0x13b8('0x5f'),_0x13b8('0x60')]),{'where':{'context':_0xcae9a8[_0x13b8('0x5c')],'exten':_0xcae9a8['exten']},'individualHooks':!![]})[_0x13b8('0x27')](function(_0x284831){return _0x284831;});}return null;})['then'](respondWithStatusCode(_0x3d4697,null))[_0x13b8('0x4f')](handleError(_0x3d4697,null));};exports[_0x13b8('0x61')]=function(_0x456f5d,_0x4b1c76){return db[_0x13b8('0x39')][_0x13b8('0x62')]({'where':{'id':_0x456f5d['params']['id']}})[_0x13b8('0x27')](function(_0x7cb6ab){if(_0x7cb6ab){return db[_0x13b8('0x63')]['transaction'](function(_0x170a3d){return db[_0x13b8('0x39')][_0x13b8('0x26')]({'where':{'VoiceExtensionId':_0x456f5d[_0x13b8('0x51')]['id']},'transaction':_0x170a3d})['then'](function(){var _0x215b26=_['map'](_0x456f5d[_0x13b8('0x53')],function(_0xc1fb70){_0xc1fb70['VoiceExtensionId']=_0x456f5d[_0x13b8('0x51')]['id'];_0xc1fb70[_0x13b8('0x64')]=!![];return _0xc1fb70;});var _0x2ce79e=_0x456f5d[_0x13b8('0x3d')][_0x13b8('0x65')]&&_0x456f5d[_0x13b8('0x3d')][_0x13b8('0x65')]['toLowerCase']()==='true'?!![]:![];return _0x7cb6ab[_0x13b8('0x66')](_0x215b26,_0x2ce79e);})[_0x13b8('0x27')](function(_0x5b390b){return db[_0x13b8('0x39')][_0x13b8('0x67')](_0x5b390b,{'transaction':_0x170a3d});});})[_0x13b8('0x27')](function(){return db[_0x13b8('0x39')][_0x13b8('0x68')]({'where':{'isApp':!![],'VoiceExtensionId':_0x456f5d['params']['id']},'order':_0x13b8('0x69')});});}})[_0x13b8('0x27')](respondWithResult(_0x4b1c76,null))[_0x13b8('0x4f')](handleError(_0x4b1c76,null));};
\ No newline at end of file
index 2b104e8..c53437a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd006=['hook','exports','events','../../mysqldb','save','update','remove','emit'];(function(_0x56fd3d,_0x2ca892){var _0x2bd554=function(_0x55d692){while(--_0x55d692){_0x56fd3d['push'](_0x56fd3d['shift']());}};_0x2bd554(++_0x2ca892);}(_0xd006,0xd2));var _0x6d00=function(_0x3a8dc1,_0x2f03b8){_0x3a8dc1=_0x3a8dc1-0x0;var _0x4b3595=_0xd006[_0x3a8dc1];return _0x4b3595;};'use strict';var EventEmitter=require(_0x6d00('0x0'));var VoiceExtension=require(_0x6d00('0x1'))['db']['VoiceExtension'];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x6d00('0x2'),'afterUpdate':_0x6d00('0x3'),'afterDestroy':_0x6d00('0x4')};function emitEvent(_0x8024c2){return function(_0x4f20f1,_0x5b6177,_0x30b872){VoiceExtensionEvents[_0x6d00('0x5')](_0x8024c2+':'+_0x4f20f1['id'],_0x4f20f1);VoiceExtensionEvents['emit'](_0x8024c2,_0x4f20f1);_0x30b872(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceExtension[_0x6d00('0x6')](e,emitEvent(event));}}module[_0x6d00('0x7')]=VoiceExtensionEvents;
\ No newline at end of file
+var _0xc25b=['setMaxListeners','save','remove','emit','hook','exports','events','../../mysqldb'];(function(_0x4d3948,_0x5e8f91){var _0x3c20e5=function(_0x4f03e6){while(--_0x4f03e6){_0x4d3948['push'](_0x4d3948['shift']());}};_0x3c20e5(++_0x5e8f91);}(_0xc25b,0x66));var _0xbc25=function(_0x2fe2e0,_0x11ec8f){_0x2fe2e0=_0x2fe2e0-0x0;var _0x123911=_0xc25b[_0x2fe2e0];return _0x123911;};'use strict';var EventEmitter=require(_0xbc25('0x0'));var VoiceExtension=require(_0xbc25('0x1'))['db']['VoiceExtension'];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0xbc25('0x2')](0x0);var events={'afterCreate':_0xbc25('0x3'),'afterUpdate':'update','afterDestroy':_0xbc25('0x4')};function emitEvent(_0x1b04bc){return function(_0x5e1a39,_0x32a16b,_0x2f99e1){VoiceExtensionEvents[_0xbc25('0x5')](_0x1b04bc+':'+_0x5e1a39['id'],_0x5e1a39);VoiceExtensionEvents[_0xbc25('0x5')](_0x1b04bc,_0x5e1a39);_0x2f99e1(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceExtension[_0xbc25('0x6')](e,emitEvent(event));}}module[_0xbc25('0x7')]=VoiceExtensionEvents;
\ No newline at end of file
index 4c6c5ca..bae76ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf447=['GotoIfTime',',${EXTEN},','appdata','priority','concat','last','catch','VoiceExtension','voice_extensions','util','lodash','./voiceExtension.attributes','type','Set','CDR(type)=','exten','alias','CDR(routeAlias)=','No\x20alias\x20set','inbound','CDR(routeid)=','context','push','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','CDR(destination)=','${EXTEN:','cutdigits','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','outboundrouteid=','recordingFormat','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','trunk','options','url','length','name','param','split','prefix','phone','${EXTEN}','SIP','join','none','U(xcally-mixmonitor-context)','isEmpty','Interval','interval','IntervalId','then','intervals','map','tag','toLowerCase','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','NoOp(No\x20number\x20available)','hasOwnProperty','answer','playback','includes','app','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice'];(function(_0x425704,_0x50aa0c){var _0x542b3b=function(_0x27642a){while(--_0x27642a){_0x425704['push'](_0x425704['shift']());}};_0x542b3b(++_0x50aa0c);}(_0xf447,0xa1));var _0x7f44=function(_0x12fc8d,_0x19ee33){_0x12fc8d=_0x12fc8d-0x0;var _0x3f9d04=_0xf447[_0x12fc8d];return _0x3f9d04;};'use strict';var util=require(_0x7f44('0x0'));var _=require(_0x7f44('0x1'));var attributes=require(_0x7f44('0x2'));module['exports']=function(_0x3fb5d7){var _0x221657=_0x3fb5d7['models'];function _0xb7b199(_0x529553){var _0x48d651=0x2;var _0x212aaf=[{'type':_0x529553[_0x7f44('0x3')],'app':_0x7f44('0x4'),'appdata':_0x7f44('0x5')+_0x529553[_0x7f44('0x3')],'context':_0x529553['context'],'exten':_0x529553[_0x7f44('0x6')],'priority':_0x48d651++,'VoiceExtensionId':_0x529553['id']},{'type':_0x529553[_0x7f44('0x3')],'app':_0x529553['alias']?'Set':'NoOp','appdata':_0x529553[_0x7f44('0x7')]?_0x7f44('0x8')+_0x529553[_0x7f44('0x7')]:_0x7f44('0x9'),'context':_0x529553['context'],'exten':_0x529553[_0x7f44('0x6')],'priority':_0x48d651++,'VoiceExtensionId':_0x529553['id']}];if(_0x529553[_0x7f44('0x3')]===_0x7f44('0xa')){_0x212aaf['push']({'type':_0x7f44('0xa'),'app':_0x7f44('0x4'),'appdata':_0x7f44('0xb')+_0x529553['id'],'context':_0x529553[_0x7f44('0xc')],'exten':_0x529553[_0x7f44('0x6')],'priority':_0x48d651++,'VoiceExtensionId':_0x529553['id']});}_0x212aaf[_0x7f44('0xd')]({'type':_0x529553['type'],'app':_0x7f44('0x4'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x529553[_0x7f44('0xc')],'exten':_0x529553['exten'],'priority':_0x48d651++,'VoiceExtensionId':_0x529553['id']},{'type':_0x529553[_0x7f44('0x3')],'app':_0x7f44('0x4'),'appdata':_0x7f44('0xe'),'context':_0x529553[_0x7f44('0xc')],'exten':_0x529553[_0x7f44('0x6')],'priority':_0x48d651++,'VoiceExtensionId':_0x529553['id']},{'type':_0x529553['type'],'app':_0x7f44('0x4'),'appdata':_0x7f44('0xf'),'context':_0x529553[_0x7f44('0xc')],'exten':_0x529553['exten'],'priority':_0x48d651++,'VoiceExtensionId':_0x529553['id']});return _0x212aaf;}function _0x1c152c(_0x484398){var _0x519f00=0x2;var _0x4c7fe5=[{'type':_0x7f44('0x10'),'app':_0x7f44('0x4'),'appdata':_0x7f44('0x11'),'context':_0x484398[_0x7f44('0xc')],'exten':_0x484398[_0x7f44('0x6')],'priority':_0x519f00++,'VoiceExtensionId':_0x484398['id']},{'type':_0x7f44('0x10'),'app':_0x484398[_0x7f44('0x7')]?'Set':'NoOp','appdata':_0x484398[_0x7f44('0x7')]?_0x7f44('0x8')+_0x484398[_0x7f44('0x7')]:'No\x20alias\x20set','context':_0x484398[_0x7f44('0xc')],'exten':_0x484398[_0x7f44('0x6')],'priority':_0x519f00++,'VoiceExtensionId':_0x484398['id']},{'type':_0x7f44('0x10'),'app':_0x7f44('0x4'),'appdata':_0x7f44('0x12')+(_0x484398['cutdigits']?_0x7f44('0x13')+_0x484398[_0x7f44('0x14')]+'}':'${EXTEN}'),'context':_0x484398[_0x7f44('0xc')],'exten':_0x484398[_0x7f44('0x6')],'priority':_0x519f00++,'VoiceExtensionId':_0x484398['id']},{'type':'outbound','app':_0x7f44('0x4'),'appdata':_0x7f44('0xb')+_0x484398['id'],'context':_0x484398[_0x7f44('0xc')],'exten':_0x484398['exten'],'priority':_0x519f00++,'VoiceExtensionId':_0x484398['id']},{'type':_0x7f44('0x10'),'app':_0x7f44('0x15'),'appdata':_0x7f44('0x16')+(_0x519f00+0x2)+_0x7f44('0x17')+(_0x519f00+0x1)+')','context':_0x484398[_0x7f44('0xc')],'exten':_0x484398[_0x7f44('0x6')],'priority':_0x519f00++,'VoiceExtensionId':_0x484398['id']},{'type':_0x7f44('0x10'),'app':_0x7f44('0x4'),'appdata':_0x484398[_0x7f44('0x14')]?'CDR(prefix)=${EXTEN:0:'+_0x484398['cutdigits']+'}':'CDR(prefix)=noprefix','context':_0x484398[_0x7f44('0xc')],'exten':_0x484398[_0x7f44('0x6')],'priority':_0x519f00++,'VoiceExtensionId':_0x484398['id']},{'type':_0x7f44('0x10'),'app':_0x7f44('0x4'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x484398[_0x7f44('0xc')],'exten':_0x484398['exten'],'priority':_0x519f00++,'VoiceExtensionId':_0x484398['id']},{'type':_0x7f44('0x10'),'app':'Set','appdata':_0x7f44('0xe'),'context':_0x484398['context'],'exten':_0x484398[_0x7f44('0x6')],'priority':_0x519f00++,'VoiceExtensionId':_0x484398['id']},{'type':_0x7f44('0x10'),'app':_0x7f44('0x4'),'appdata':'MONITOR_OPTIONS=ab','context':_0x484398['context'],'exten':_0x484398['exten'],'priority':_0x519f00++,'VoiceExtensionId':_0x484398['id']},{'type':_0x7f44('0x10'),'app':'Set','appdata':_0x7f44('0x18')+_0x484398['id'],'context':_0x484398[_0x7f44('0xc')],'exten':_0x484398['exten'],'priority':_0x519f00++,'VoiceExtensionId':_0x484398['id']}];if(_0x484398['hasOwnProperty'](_0x7f44('0x19'))&&_0x484398[_0x7f44('0x19')]!=='none'){_0x4c7fe5[_0x7f44('0xd')]({'type':_0x7f44('0x10'),'app':'Set','appdata':_0x7f44('0x1a'),'context':_0x484398[_0x7f44('0xc')],'exten':_0x484398[_0x7f44('0x6')],'priority':_0x519f00++,'VoiceExtensionId':_0x484398['id']},{'type':_0x7f44('0x10'),'app':_0x7f44('0x4'),'appdata':_0x7f44('0x1b')+_0x484398[_0x7f44('0x19')]||_0x7f44('0x1c'),'context':_0x484398['context'],'exten':_0x484398[_0x7f44('0x6')],'priority':_0x519f00++,'VoiceExtensionId':_0x484398['id']});}return _0x4c7fe5;}function _0x716b12(_0x493819){var _0x57fa5e=[{'name':_0x7f44('0x1d'),'param':0x0},{'name':'timeout','param':0x1},{'name':_0x7f44('0x1e'),'param':0x2},{'name':_0x7f44('0x1f'),'param':0x3}];var _0x59eb77={};var _0x7b808d=_0x493819['split'](',');var _0x14b15a=[];for(var _0x19d2bd=0x0;_0x19d2bd<_0x57fa5e[_0x7f44('0x20')];_0x19d2bd++){switch(_0x57fa5e[_0x19d2bd][_0x7f44('0x21')]){case'trunk':_0x59eb77[_0x7f44('0x1d')]=_0x7b808d[_0x57fa5e[_0x19d2bd][_0x7f44('0x22')]][_0x7f44('0x23')]('/')[0x1];_0x59eb77['phone']=_0x7b808d[_0x57fa5e[_0x19d2bd][_0x7f44('0x22')]]['split']('/')[0x2];_0x59eb77[_0x7f44('0x24')]=_0x59eb77[_0x7f44('0x25')]?_0x59eb77[_0x7f44('0x25')][_0x7f44('0x23')]('$')[0x0]:undefined;_0x59eb77[_0x7f44('0x25')]=route[_0x7f44('0x14')]?(_0x59eb77[_0x7f44('0x24')]||'')+'${EXTEN:'+route['cutdigits']+'}':(_0x59eb77[_0x7f44('0x24')]||'')+_0x7f44('0x26');_0x14b15a[_0x57fa5e[_0x19d2bd]['param']]=[_0x7f44('0x27'),_0x59eb77[_0x7f44('0x1d')],_0x59eb77[_0x7f44('0x25')]][_0x7f44('0x28')]('/');break;case _0x7f44('0x1e'):_0x59eb77[_0x7f44('0x1e')]=_0x7b808d[_0x57fa5e[_0x19d2bd][_0x7f44('0x22')]];if(route['recordingFormat']!==_0x7f44('0x29')){if(_0x59eb77['options']['indexOf'](_0x7f44('0x2a'))<0x0){_0x59eb77['options']+=_0x7f44('0x2a');}}else{_0x59eb77[_0x7f44('0x1e')]=_0x59eb77[_0x7f44('0x1e')]['replace'](_0x7f44('0x2a'),'');}_0x14b15a[_0x57fa5e[_0x19d2bd][_0x7f44('0x22')]]=_0x59eb77[_0x7f44('0x1e')];break;default:_0x14b15a[_0x57fa5e[_0x19d2bd]['param']]=_0x7b808d[_0x57fa5e[_0x19d2bd][_0x7f44('0x22')]];}}return _0x14b15a['join'](',');}function _0x40c9c5(_0x32988d,_0x5ae4e2,_0x4cf368,_0x1b8957){return new Promise(function(_0x41fc11,_0x92502e){var _0xf583a1=[];if(_[_0x7f44('0x2b')](_0x5ae4e2))return _0x41fc11(_0xf583a1);_0x221657[_0x7f44('0x2c')]['findAll']({'attributes':['id',_0x7f44('0x2d'),_0x7f44('0x2e')],'raw':!![]})[_0x7f44('0x2f')](function(_0x2933cf){for(var _0x1eaed0=0x0,_0x543df6=0x0;_0x1eaed0<_0x5ae4e2[_0x7f44('0x20')];_0x1eaed0++,_0x543df6=0x0){var _0x2db916=_0x5ae4e2[_0x1eaed0];var _0x42cca7=[];var _0x57756e=[];if(_0x2db916[_0x7f44('0x2d')]!=='*,*,*,*'){_0x2db916[_0x7f44('0x30')]=[_0x2db916[_0x7f44('0x2d')]];}else{_0x2db916['intervals']=_0x2db916[_0x7f44('0x2e')]?_[_0x7f44('0x31')](_['filter'](_0x2933cf,{'IntervalId':_0x2db916[_0x7f44('0x2e')]}),_0x7f44('0x2d')):[];}_0x2db916[_0x7f44('0xc')]=_0x32988d['context'];_0x2db916[_0x7f44('0x6')]=_0x32988d[_0x7f44('0x6')];if(_0x2db916[_0x7f44('0x3')])_0x2db916['type']=_0x2db916['type']['toLowerCase']();if(_0x32988d[_0x7f44('0x3')]===_0x7f44('0x10')){if(_0x2db916['hasOwnProperty']('tag')&&_0x2db916[_0x7f44('0x32')]&&_0x2db916['tag']!=='--'){_0x42cca7[_0x7f44('0xd')]({'type':_0x2db916[_0x7f44('0x3')][_0x7f44('0x33')](),'app':_0x7f44('0x4'),'appdata':_0x7f44('0x34')+_0x2db916[_0x7f44('0x32')],'context':_0x32988d[_0x7f44('0xc')],'exten':_0x32988d['exten'],'priority':_0x2db916[_0x7f44('0x30')][_0x7f44('0x20')]+_0x4cf368+_0x543df6++,'VoiceExtensionId':_0x32988d['id']});}_0x42cca7['push']({'type':_0x2db916['type']['toLowerCase'](),'app':_0x7f44('0x15'),'appdata':_0x7f44('0x35')+(_0x2db916[_0x7f44('0x36')]?'Set(CALLERID(all)='+_0x2db916[_0x7f44('0x36')]+')':_0x7f44('0x37')),'context':_0x32988d[_0x7f44('0xc')],'exten':_0x32988d[_0x7f44('0x6')],'priority':_0x2db916[_0x7f44('0x30')][_0x7f44('0x20')]+_0x4cf368+_0x543df6++,'VoiceExtensionId':_0x32988d['id']});}else{if(_0x2db916[_0x7f44('0x38')](_0x7f44('0x39'))){if(['queue',_0x7f44('0x3a')][_0x7f44('0x3b')](_0x2db916[_0x7f44('0x3c')][_0x7f44('0x33')]())&&_0x2db916['appType']!==_0x7f44('0x3d')){if(_0x2db916[_0x7f44('0x39')]){_0x42cca7['push']({'type':_0x2db916[_0x7f44('0x3')]['toLowerCase'](),'app':_0x7f44('0x15'),'appdata':_0x7f44('0x3e'),'context':_0x32988d[_0x7f44('0xc')],'exten':_0x32988d['exten'],'priority':_0x2db916['intervals'][_0x7f44('0x20')]+_0x4cf368+_0x543df6++,'VoiceExtensionId':_0x32988d['id']});_0x42cca7[_0x7f44('0xd')]({'type':_0x2db916[_0x7f44('0x3')][_0x7f44('0x33')](),'app':_0x7f44('0x4'),'appdata':_0x7f44('0x3f'),'context':_0x32988d[_0x7f44('0xc')],'exten':_0x32988d[_0x7f44('0x6')],'priority':_0x2db916[_0x7f44('0x30')][_0x7f44('0x20')]+_0x4cf368+_0x543df6++,'VoiceExtensionId':_0x32988d['id']});}else{_0x42cca7['push']({'type':_0x2db916[_0x7f44('0x3')]['toLowerCase'](),'app':_0x7f44('0x15'),'appdata':_0x7f44('0x40'),'context':_0x32988d['context'],'exten':_0x32988d[_0x7f44('0x6')],'priority':_0x2db916[_0x7f44('0x30')]['length']+_0x4cf368+_0x543df6++,'VoiceExtensionId':_0x32988d['id']});_0x42cca7[_0x7f44('0xd')]({'type':_0x2db916[_0x7f44('0x3')][_0x7f44('0x33')](),'app':'Set','appdata':_0x7f44('0x41'),'context':_0x32988d[_0x7f44('0xc')],'exten':_0x32988d['exten'],'priority':_0x2db916['intervals'][_0x7f44('0x20')]+_0x4cf368+_0x543df6++,'VoiceExtensionId':_0x32988d['id']});}}}}for(var _0x389698=0x0;_0x389698<_0x2db916[_0x7f44('0x30')][_0x7f44('0x20')];_0x389698++){var _0x2671b2=_0x4cf368+_0x2db916[_0x7f44('0x30')][_0x7f44('0x20')];var _0x194369=_0x389698===_0x2db916[_0x7f44('0x30')][_0x7f44('0x20')]-0x1?_0x4cf368+_0x42cca7[_0x7f44('0x20')]+_0x57756e[_0x7f44('0x20')]+0x2:_0x4cf368+_0x389698+0x1;_0x42cca7[_0x7f44('0x42')](_0x389698,0x0,{'type':_0x32988d[_0x7f44('0x3')],'app':_0x7f44('0x43'),'appdata':_0x2db916[_0x7f44('0x30')][_0x389698]+'?'+_0x32988d[_0x7f44('0xc')]+',${EXTEN},'+_0x2671b2+':'+_0x32988d['context']+_0x7f44('0x44')+_0x194369,'exten':_0x32988d['exten'],'context':_0x32988d[_0x7f44('0xc')],'priority':_0x4cf368+_0x389698,'VoiceExtensionId':_0x32988d['id']});}if(_0x1b8957&&_0x2db916['appType']==='outboundDial')_0x2db916[_0x7f44('0x45')]=_0x716b12(_0x2db916[_0x7f44('0x45')]);_0x2db916[_0x7f44('0x46')]=_0x42cca7[_0x7f44('0x20')]?_['last'](_0x42cca7)[_0x7f44('0x46')]+0x1:_0x4cf368;_0xf583a1=_[_0x7f44('0x47')](_0xf583a1,_0x42cca7,[_0x2db916],_0x57756e);_0x4cf368=_[_0x7f44('0x48')](_0xf583a1)['priority']+0x1;}return _0x41fc11(_0xf583a1);})[_0x7f44('0x49')](function(_0x31c452){_0x92502e(_0x31c452);});});}return _0x3fb5d7['define'](_0x7f44('0x4a'),attributes,{'tableName':_0x7f44('0x4b'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x2d8880,_0x50e9c9){var _0x5f3081=this;var _0x54adce=_0x5f3081['type']===_0x7f44('0x10')?_0x1c152c(_0x5f3081):_0xb7b199(_0x5f3081);return _0x40c9c5(_0x5f3081,_0x2d8880,_['last'](_0x54adce)['priority']+0x1,_0x50e9c9)[_0x7f44('0x2f')](function(_0x1ef245){var _0x16e4b7=_[_0x7f44('0x47')](_0x54adce,_0x1ef245);_0x16e4b7[_0x7f44('0xd')]({'type':_0x5f3081[_0x7f44('0x3')],'app':'Hangup','exten':_0x5f3081[_0x7f44('0x6')],'context':_0x5f3081[_0x7f44('0xc')],'priority':_[_0x7f44('0x48')](_0x16e4b7)[_0x7f44('0x46')]+0x1,'VoiceExtensionId':_0x5f3081['id']});return _0x16e4b7;});}}});};
\ No newline at end of file
+var _0x9b1b=['outboundDial','appdata','priority','concat','last','define','VoiceExtension','voice_extensions','then','Hangup','util','./voiceExtension.attributes','exports','type','CDR(type)=','context','exten','NoOp','alias','CDR(routeAlias)=','No\x20alias\x20set','inbound','push','Set','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','outbound','CDR(destination)=','${EXTEN:','cutdigits','${EXTEN}','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','MONITOR_OPTIONS=ab','outboundrouteid=','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','timeout','options','split','length','name','trunk','param','phone','prefix','SIP','U(xcally-mixmonitor-context)','replace','join','isEmpty','Interval','interval','IntervalId','*,*,*,*','intervals','filter','toLowerCase','tag','ExecIf','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','answer','queue','includes','app','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},'];(function(_0x446880,_0x5b9dbc){var _0x2a8581=function(_0x45fa33){while(--_0x45fa33){_0x446880['push'](_0x446880['shift']());}};_0x2a8581(++_0x5b9dbc);}(_0x9b1b,0x1a9));var _0xb9b1=function(_0x226e60,_0x46d51e){_0x226e60=_0x226e60-0x0;var _0x581e70=_0x9b1b[_0x226e60];return _0x581e70;};'use strict';var util=require(_0xb9b1('0x0'));var _=require('lodash');var attributes=require(_0xb9b1('0x1'));module[_0xb9b1('0x2')]=function(_0x2aa68b){var _0x5848e3=_0x2aa68b['models'];function _0x56fb62(_0x51361c){var _0x433461=0x2;var _0x2f3c54=[{'type':_0x51361c[_0xb9b1('0x3')],'app':'Set','appdata':_0xb9b1('0x4')+_0x51361c[_0xb9b1('0x3')],'context':_0x51361c[_0xb9b1('0x5')],'exten':_0x51361c[_0xb9b1('0x6')],'priority':_0x433461++,'VoiceExtensionId':_0x51361c['id']},{'type':_0x51361c[_0xb9b1('0x3')],'app':_0x51361c['alias']?'Set':_0xb9b1('0x7'),'appdata':_0x51361c[_0xb9b1('0x8')]?_0xb9b1('0x9')+_0x51361c[_0xb9b1('0x8')]:_0xb9b1('0xa'),'context':_0x51361c['context'],'exten':_0x51361c['exten'],'priority':_0x433461++,'VoiceExtensionId':_0x51361c['id']}];if(_0x51361c[_0xb9b1('0x3')]===_0xb9b1('0xb')){_0x2f3c54['push']({'type':_0xb9b1('0xb'),'app':'Set','appdata':'CDR(routeid)='+_0x51361c['id'],'context':_0x51361c['context'],'exten':_0x51361c['exten'],'priority':_0x433461++,'VoiceExtensionId':_0x51361c['id']});}_0x2f3c54[_0xb9b1('0xc')]({'type':_0x51361c[_0xb9b1('0x3')],'app':_0xb9b1('0xd'),'appdata':_0xb9b1('0xe'),'context':_0x51361c[_0xb9b1('0x5')],'exten':_0x51361c[_0xb9b1('0x6')],'priority':_0x433461++,'VoiceExtensionId':_0x51361c['id']},{'type':_0x51361c[_0xb9b1('0x3')],'app':_0xb9b1('0xd'),'appdata':_0xb9b1('0xf'),'context':_0x51361c[_0xb9b1('0x5')],'exten':_0x51361c[_0xb9b1('0x6')],'priority':_0x433461++,'VoiceExtensionId':_0x51361c['id']},{'type':_0x51361c[_0xb9b1('0x3')],'app':'Set','appdata':'MONITOR_OPTIONS=ab','context':_0x51361c['context'],'exten':_0x51361c['exten'],'priority':_0x433461++,'VoiceExtensionId':_0x51361c['id']});return _0x2f3c54;}function _0x541c31(_0x14c4f5){var _0x4620c0=0x2;var _0x47f7e5=[{'type':_0xb9b1('0x10'),'app':_0xb9b1('0xd'),'appdata':'CDR(type)=outbound','context':_0x14c4f5[_0xb9b1('0x5')],'exten':_0x14c4f5['exten'],'priority':_0x4620c0++,'VoiceExtensionId':_0x14c4f5['id']},{'type':_0xb9b1('0x10'),'app':_0x14c4f5[_0xb9b1('0x8')]?'Set':_0xb9b1('0x7'),'appdata':_0x14c4f5[_0xb9b1('0x8')]?_0xb9b1('0x9')+_0x14c4f5[_0xb9b1('0x8')]:_0xb9b1('0xa'),'context':_0x14c4f5[_0xb9b1('0x5')],'exten':_0x14c4f5['exten'],'priority':_0x4620c0++,'VoiceExtensionId':_0x14c4f5['id']},{'type':_0xb9b1('0x10'),'app':_0xb9b1('0xd'),'appdata':_0xb9b1('0x11')+(_0x14c4f5['cutdigits']?_0xb9b1('0x12')+_0x14c4f5[_0xb9b1('0x13')]+'}':_0xb9b1('0x14')),'context':_0x14c4f5['context'],'exten':_0x14c4f5[_0xb9b1('0x6')],'priority':_0x4620c0++,'VoiceExtensionId':_0x14c4f5['id']},{'type':'outbound','app':_0xb9b1('0xd'),'appdata':'CDR(routeid)='+_0x14c4f5['id'],'context':_0x14c4f5[_0xb9b1('0x5')],'exten':_0x14c4f5[_0xb9b1('0x6')],'priority':_0x4620c0++,'VoiceExtensionId':_0x14c4f5['id']},{'type':_0xb9b1('0x10'),'app':'ExecIf','appdata':_0xb9b1('0x15')+(_0x4620c0+0x2)+_0xb9b1('0x16')+(_0x4620c0+0x1)+')','context':_0x14c4f5['context'],'exten':_0x14c4f5[_0xb9b1('0x6')],'priority':_0x4620c0++,'VoiceExtensionId':_0x14c4f5['id']},{'type':'outbound','app':_0xb9b1('0xd'),'appdata':_0x14c4f5[_0xb9b1('0x13')]?_0xb9b1('0x17')+_0x14c4f5[_0xb9b1('0x13')]+'}':_0xb9b1('0x18'),'context':_0x14c4f5[_0xb9b1('0x5')],'exten':_0x14c4f5['exten'],'priority':_0x4620c0++,'VoiceExtensionId':_0x14c4f5['id']},{'type':'outbound','app':_0xb9b1('0xd'),'appdata':_0xb9b1('0xe'),'context':_0x14c4f5[_0xb9b1('0x5')],'exten':_0x14c4f5[_0xb9b1('0x6')],'priority':_0x4620c0++,'VoiceExtensionId':_0x14c4f5['id']},{'type':'outbound','app':_0xb9b1('0xd'),'appdata':_0xb9b1('0xf'),'context':_0x14c4f5[_0xb9b1('0x5')],'exten':_0x14c4f5[_0xb9b1('0x6')],'priority':_0x4620c0++,'VoiceExtensionId':_0x14c4f5['id']},{'type':_0xb9b1('0x10'),'app':_0xb9b1('0xd'),'appdata':_0xb9b1('0x19'),'context':_0x14c4f5['context'],'exten':_0x14c4f5[_0xb9b1('0x6')],'priority':_0x4620c0++,'VoiceExtensionId':_0x14c4f5['id']},{'type':_0xb9b1('0x10'),'app':'Set','appdata':_0xb9b1('0x1a')+_0x14c4f5['id'],'context':_0x14c4f5[_0xb9b1('0x5')],'exten':_0x14c4f5[_0xb9b1('0x6')],'priority':_0x4620c0++,'VoiceExtensionId':_0x14c4f5['id']}];if(_0x14c4f5[_0xb9b1('0x1b')](_0xb9b1('0x1c'))&&_0x14c4f5[_0xb9b1('0x1c')]!==_0xb9b1('0x1d')){_0x47f7e5[_0xb9b1('0xc')]({'type':'outbound','app':_0xb9b1('0xd'),'appdata':_0xb9b1('0x1e'),'context':_0x14c4f5['context'],'exten':_0x14c4f5[_0xb9b1('0x6')],'priority':_0x4620c0++,'VoiceExtensionId':_0x14c4f5['id']},{'type':_0xb9b1('0x10'),'app':_0xb9b1('0xd'),'appdata':_0xb9b1('0x1f')+_0x14c4f5['recordingFormat']||_0xb9b1('0x20'),'context':_0x14c4f5[_0xb9b1('0x5')],'exten':_0x14c4f5[_0xb9b1('0x6')],'priority':_0x4620c0++,'VoiceExtensionId':_0x14c4f5['id']});}return _0x47f7e5;}function _0x20e888(_0x5dac67){var _0x57b61b=[{'name':'trunk','param':0x0},{'name':_0xb9b1('0x21'),'param':0x1},{'name':_0xb9b1('0x22'),'param':0x2},{'name':'url','param':0x3}];var _0x4e2aa4={};var _0x4c3d8b=_0x5dac67[_0xb9b1('0x23')](',');var _0x1d7481=[];for(var _0x16a28f=0x0;_0x16a28f<_0x57b61b[_0xb9b1('0x24')];_0x16a28f++){switch(_0x57b61b[_0x16a28f][_0xb9b1('0x25')]){case _0xb9b1('0x26'):_0x4e2aa4[_0xb9b1('0x26')]=_0x4c3d8b[_0x57b61b[_0x16a28f][_0xb9b1('0x27')]][_0xb9b1('0x23')]('/')[0x1];_0x4e2aa4[_0xb9b1('0x28')]=_0x4c3d8b[_0x57b61b[_0x16a28f][_0xb9b1('0x27')]]['split']('/')[0x2];_0x4e2aa4[_0xb9b1('0x29')]=_0x4e2aa4[_0xb9b1('0x28')]?_0x4e2aa4[_0xb9b1('0x28')]['split']('$')[0x0]:undefined;_0x4e2aa4[_0xb9b1('0x28')]=route[_0xb9b1('0x13')]?(_0x4e2aa4[_0xb9b1('0x29')]||'')+'${EXTEN:'+route[_0xb9b1('0x13')]+'}':(_0x4e2aa4[_0xb9b1('0x29')]||'')+_0xb9b1('0x14');_0x1d7481[_0x57b61b[_0x16a28f][_0xb9b1('0x27')]]=[_0xb9b1('0x2a'),_0x4e2aa4[_0xb9b1('0x26')],_0x4e2aa4['phone']]['join']('/');break;case _0xb9b1('0x22'):_0x4e2aa4[_0xb9b1('0x22')]=_0x4c3d8b[_0x57b61b[_0x16a28f]['param']];if(route[_0xb9b1('0x1c')]!==_0xb9b1('0x1d')){if(_0x4e2aa4[_0xb9b1('0x22')]['indexOf'](_0xb9b1('0x2b'))<0x0){_0x4e2aa4['options']+=_0xb9b1('0x2b');}}else{_0x4e2aa4[_0xb9b1('0x22')]=_0x4e2aa4[_0xb9b1('0x22')][_0xb9b1('0x2c')](_0xb9b1('0x2b'),'');}_0x1d7481[_0x57b61b[_0x16a28f]['param']]=_0x4e2aa4['options'];break;default:_0x1d7481[_0x57b61b[_0x16a28f][_0xb9b1('0x27')]]=_0x4c3d8b[_0x57b61b[_0x16a28f]['param']];}}return _0x1d7481[_0xb9b1('0x2d')](',');}function _0x459915(_0x5c3ade,_0x3d1979,_0x2cb02d,_0x248b13){return new Promise(function(_0x5d3a7c,_0x2a3c0f){var _0x46d264=[];if(_[_0xb9b1('0x2e')](_0x3d1979))return _0x5d3a7c(_0x46d264);_0x5848e3[_0xb9b1('0x2f')]['findAll']({'attributes':['id',_0xb9b1('0x30'),_0xb9b1('0x31')],'raw':!![]})['then'](function(_0x34dbe1){for(var _0x4e5e7a=0x0,_0xdb728=0x0;_0x4e5e7a<_0x3d1979[_0xb9b1('0x24')];_0x4e5e7a++,_0xdb728=0x0){var _0xe2cfd6=_0x3d1979[_0x4e5e7a];var _0x5e8c6a=[];var _0xb56485=[];if(_0xe2cfd6['interval']!==_0xb9b1('0x32')){_0xe2cfd6[_0xb9b1('0x33')]=[_0xe2cfd6[_0xb9b1('0x30')]];}else{_0xe2cfd6[_0xb9b1('0x33')]=_0xe2cfd6[_0xb9b1('0x31')]?_['map'](_[_0xb9b1('0x34')](_0x34dbe1,{'IntervalId':_0xe2cfd6['IntervalId']}),_0xb9b1('0x30')):[];}_0xe2cfd6[_0xb9b1('0x5')]=_0x5c3ade[_0xb9b1('0x5')];_0xe2cfd6[_0xb9b1('0x6')]=_0x5c3ade[_0xb9b1('0x6')];if(_0xe2cfd6[_0xb9b1('0x3')])_0xe2cfd6['type']=_0xe2cfd6[_0xb9b1('0x3')][_0xb9b1('0x35')]();if(_0x5c3ade[_0xb9b1('0x3')]===_0xb9b1('0x10')){if(_0xe2cfd6[_0xb9b1('0x1b')](_0xb9b1('0x36'))&&_0xe2cfd6[_0xb9b1('0x36')]&&_0xe2cfd6[_0xb9b1('0x36')]!=='--'){_0x5e8c6a[_0xb9b1('0xc')]({'type':_0xe2cfd6[_0xb9b1('0x3')][_0xb9b1('0x35')](),'app':_0xb9b1('0xd'),'appdata':'CDR(tag)='+_0xe2cfd6['tag'],'context':_0x5c3ade[_0xb9b1('0x5')],'exten':_0x5c3ade['exten'],'priority':_0xe2cfd6[_0xb9b1('0x33')][_0xb9b1('0x24')]+_0x2cb02d+_0xdb728++,'VoiceExtensionId':_0x5c3ade['id']});}_0x5e8c6a[_0xb9b1('0xc')]({'type':_0xe2cfd6['type'][_0xb9b1('0x35')](),'app':_0xb9b1('0x37'),'appdata':_0xb9b1('0x38')+(_0xe2cfd6[_0xb9b1('0x39')]?_0xb9b1('0x3a')+_0xe2cfd6['callerID']+')':_0xb9b1('0x3b')),'context':_0x5c3ade[_0xb9b1('0x5')],'exten':_0x5c3ade[_0xb9b1('0x6')],'priority':_0xe2cfd6['intervals']['length']+_0x2cb02d+_0xdb728++,'VoiceExtensionId':_0x5c3ade['id']});}else{if(_0xe2cfd6[_0xb9b1('0x1b')](_0xb9b1('0x3c'))){if([_0xb9b1('0x3d'),'playback'][_0xb9b1('0x3e')](_0xe2cfd6[_0xb9b1('0x3f')][_0xb9b1('0x35')]())&&_0xe2cfd6[_0xb9b1('0x40')]!==_0xb9b1('0x41')){if(_0xe2cfd6[_0xb9b1('0x3c')]){_0x5e8c6a[_0xb9b1('0xc')]({'type':_0xe2cfd6['type'][_0xb9b1('0x35')](),'app':'ExecIf','appdata':_0xb9b1('0x42'),'context':_0x5c3ade['context'],'exten':_0x5c3ade[_0xb9b1('0x6')],'priority':_0xe2cfd6[_0xb9b1('0x33')][_0xb9b1('0x24')]+_0x2cb02d+_0xdb728++,'VoiceExtensionId':_0x5c3ade['id']});_0x5e8c6a[_0xb9b1('0xc')]({'type':_0xe2cfd6[_0xb9b1('0x3')]['toLowerCase'](),'app':'Set','appdata':_0xb9b1('0x43'),'context':_0x5c3ade[_0xb9b1('0x5')],'exten':_0x5c3ade[_0xb9b1('0x6')],'priority':_0xe2cfd6['intervals'][_0xb9b1('0x24')]+_0x2cb02d+_0xdb728++,'VoiceExtensionId':_0x5c3ade['id']});}else{_0x5e8c6a[_0xb9b1('0xc')]({'type':_0xe2cfd6['type']['toLowerCase'](),'app':'ExecIf','appdata':_0xb9b1('0x44'),'context':_0x5c3ade[_0xb9b1('0x5')],'exten':_0x5c3ade[_0xb9b1('0x6')],'priority':_0xe2cfd6['intervals'][_0xb9b1('0x24')]+_0x2cb02d+_0xdb728++,'VoiceExtensionId':_0x5c3ade['id']});_0x5e8c6a[_0xb9b1('0xc')]({'type':_0xe2cfd6[_0xb9b1('0x3')][_0xb9b1('0x35')](),'app':_0xb9b1('0xd'),'appdata':_0xb9b1('0x45'),'context':_0x5c3ade[_0xb9b1('0x5')],'exten':_0x5c3ade[_0xb9b1('0x6')],'priority':_0xe2cfd6[_0xb9b1('0x33')][_0xb9b1('0x24')]+_0x2cb02d+_0xdb728++,'VoiceExtensionId':_0x5c3ade['id']});}}}}for(var _0x1dedc1=0x0;_0x1dedc1<_0xe2cfd6[_0xb9b1('0x33')][_0xb9b1('0x24')];_0x1dedc1++){var _0x128894=_0x2cb02d+_0xe2cfd6[_0xb9b1('0x33')][_0xb9b1('0x24')];var _0x354b72=_0x1dedc1===_0xe2cfd6[_0xb9b1('0x33')]['length']-0x1?_0x2cb02d+_0x5e8c6a[_0xb9b1('0x24')]+_0xb56485[_0xb9b1('0x24')]+0x2:_0x2cb02d+_0x1dedc1+0x1;_0x5e8c6a[_0xb9b1('0x46')](_0x1dedc1,0x0,{'type':_0x5c3ade[_0xb9b1('0x3')],'app':_0xb9b1('0x47'),'appdata':_0xe2cfd6[_0xb9b1('0x33')][_0x1dedc1]+'?'+_0x5c3ade['context']+_0xb9b1('0x48')+_0x128894+':'+_0x5c3ade['context']+',${EXTEN},'+_0x354b72,'exten':_0x5c3ade[_0xb9b1('0x6')],'context':_0x5c3ade[_0xb9b1('0x5')],'priority':_0x2cb02d+_0x1dedc1,'VoiceExtensionId':_0x5c3ade['id']});}if(_0x248b13&&_0xe2cfd6[_0xb9b1('0x40')]===_0xb9b1('0x49'))_0xe2cfd6[_0xb9b1('0x4a')]=_0x20e888(_0xe2cfd6[_0xb9b1('0x4a')]);_0xe2cfd6[_0xb9b1('0x4b')]=_0x5e8c6a[_0xb9b1('0x24')]?_['last'](_0x5e8c6a)[_0xb9b1('0x4b')]+0x1:_0x2cb02d;_0x46d264=_[_0xb9b1('0x4c')](_0x46d264,_0x5e8c6a,[_0xe2cfd6],_0xb56485);_0x2cb02d=_[_0xb9b1('0x4d')](_0x46d264)[_0xb9b1('0x4b')]+0x1;}return _0x5d3a7c(_0x46d264);})['catch'](function(_0x1bed07){_0x2a3c0f(_0x1bed07);});});}return _0x2aa68b[_0xb9b1('0x4e')](_0xb9b1('0x4f'),attributes,{'tableName':_0xb9b1('0x50'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x24c453,_0x11e1cd){var _0x130dcd=this;var _0x178a38=_0x130dcd['type']===_0xb9b1('0x10')?_0x541c31(_0x130dcd):_0x56fb62(_0x130dcd);return _0x459915(_0x130dcd,_0x24c453,_[_0xb9b1('0x4d')](_0x178a38)[_0xb9b1('0x4b')]+0x1,_0x11e1cd)[_0xb9b1('0x51')](function(_0x58b762){var _0x38e325=_['concat'](_0x178a38,_0x58b762);_0x38e325[_0xb9b1('0xc')]({'type':_0x130dcd[_0xb9b1('0x3')],'app':_0xb9b1('0x52'),'exten':_0x130dcd[_0xb9b1('0x6')],'context':_0x130dcd[_0xb9b1('0x5')],'priority':_[_0xb9b1('0x4d')](_0x38e325)[_0xb9b1('0x4b')]+0x1,'VoiceExtensionId':_0x130dcd['id']});return _0x38e325;});}}});};
\ No newline at end of file
index f867601..83cb25f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd87=['options','raw','where','limit','include','model','attributes','map','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','defaults','redis','localhost','socket.io-emitter','register','request','info','VoiceExtension,\x20%s,\x20%s','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','GetVoiceExtension','VoiceExtension','findAll'];(function(_0x273c39,_0x1052e6){var _0x46d6b5=function(_0x44f1fb){while(--_0x44f1fb){_0x273c39['push'](_0x273c39['shift']());}};_0x46d6b5(++_0x1052e6);}(_0xfd87,0x80));var _0x7fd8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfd87[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7fd8('0x0'));var util=require(_0x7fd8('0x1'));var moment=require(_0x7fd8('0x2'));var BPromise=require(_0x7fd8('0x3'));var rs=require(_0x7fd8('0x4'));var fs=require('fs');var Redis=require(_0x7fd8('0x5'));var db=require(_0x7fd8('0x6'))['db'];var utils=require(_0x7fd8('0x7'));var logger=require(_0x7fd8('0x8'))(_0x7fd8('0x9'));var config=require(_0x7fd8('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x7fd8('0xb')][_0x7fd8('0xc')]({'port':0x232a});config['redis']=_[_0x7fd8('0xd')](config[_0x7fd8('0xe')],{'host':_0x7fd8('0xf'),'port':0x18eb});var socket=require(_0x7fd8('0x10'))(new Redis(config[_0x7fd8('0xe')]));require('./voiceExtension.socket')[_0x7fd8('0x11')](socket);function respondWithRpcPromise(_0x18e3ea,_0x1b8863,_0x596d03){return new BPromise(function(_0x5486fc,_0x4948d0){return client[_0x7fd8('0x12')](_0x18e3ea,_0x596d03)['then'](function(_0x4749df){logger[_0x7fd8('0x13')](_0x7fd8('0x14'),_0x1b8863,'request\x20sent');logger[_0x7fd8('0x15')](_0x7fd8('0x16'),_0x1b8863,_0x7fd8('0x17'),JSON[_0x7fd8('0x18')](_0x4749df));if(_0x4749df[_0x7fd8('0x19')]){if(_0x4749df['error'][_0x7fd8('0x1a')]===0x1f4){logger[_0x7fd8('0x19')](_0x7fd8('0x14'),_0x1b8863,_0x4749df[_0x7fd8('0x19')][_0x7fd8('0x1b')]);return _0x4948d0(_0x4749df[_0x7fd8('0x19')][_0x7fd8('0x1b')]);}logger[_0x7fd8('0x19')](_0x7fd8('0x14'),_0x1b8863,_0x4749df[_0x7fd8('0x19')][_0x7fd8('0x1b')]);return _0x5486fc(_0x4749df['error']['message']);}else{logger['info'](_0x7fd8('0x14'),_0x1b8863,_0x7fd8('0x17'));_0x5486fc(_0x4749df['result'][_0x7fd8('0x1b')]);}})[_0x7fd8('0x1c')](function(_0x40b134){logger[_0x7fd8('0x19')](_0x7fd8('0x14'),_0x1b8863,_0x40b134);_0x4948d0(_0x40b134);});});}exports[_0x7fd8('0x1d')]=function(_0x2edf31){var _0x4539b6=this;return new Promise(function(_0x4b5d0a,_0x34bc09){return db[_0x7fd8('0x1e')][_0x7fd8('0x1f')]({'raw':_0x2edf31[_0x7fd8('0x20')]?_0x2edf31[_0x7fd8('0x20')][_0x7fd8('0x21')]===undefined?!![]:![]:!![],'where':_0x2edf31['options']?_0x2edf31[_0x7fd8('0x20')][_0x7fd8('0x22')]||null:null,'attributes':_0x2edf31[_0x7fd8('0x20')]?_0x2edf31[_0x7fd8('0x20')]['attributes']||null:null,'limit':_0x2edf31[_0x7fd8('0x20')]?_0x2edf31[_0x7fd8('0x20')][_0x7fd8('0x23')]||null:null,'include':_0x2edf31[_0x7fd8('0x20')]?_0x2edf31[_0x7fd8('0x20')]['include']?_['map'](_0x2edf31[_0x7fd8('0x20')][_0x7fd8('0x24')],function(_0xa273a7){return{'model':db[_0xa273a7[_0x7fd8('0x25')]],'as':_0xa273a7['as'],'attributes':_0xa273a7[_0x7fd8('0x26')],'include':_0xa273a7['include']?_[_0x7fd8('0x27')](_0xa273a7[_0x7fd8('0x24')],function(_0xda5f2a){return{'model':db[_0xda5f2a[_0x7fd8('0x25')]],'as':_0xda5f2a['as'],'attributes':_0xda5f2a[_0x7fd8('0x26')],'include':_0xda5f2a['include']?_['map'](_0xda5f2a[_0x7fd8('0x24')],function(_0x2bd721){return{'model':db[_0x2bd721[_0x7fd8('0x25')]],'as':_0x2bd721['as'],'attributes':_0x2bd721[_0x7fd8('0x26')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4fc63a){logger[_0x7fd8('0x13')]('GetVoiceExtension',_0x2edf31);logger[_0x7fd8('0x15')](_0x7fd8('0x1d'),_0x2edf31,JSON[_0x7fd8('0x18')](_0x4fc63a));_0x4b5d0a(_0x4fc63a);})['catch'](function(_0x28e28e){logger['error'](_0x7fd8('0x1d'),_0x28e28e[_0x7fd8('0x1b')],_0x2edf31);_0x34bc09(_0x4539b6[_0x7fd8('0x19')](0x1f4,_0x28e28e[_0x7fd8('0x1b')]));});});};
\ No newline at end of file
+var _0xba34=['../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./voiceExtension.socket','register','then','VoiceExtension,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','info','result','catch','GetVoiceExtension','findAll','options','raw','limit','include','map','model','attributes','lodash','util','moment','bluebird','randomstring','../../config/logger','rpc'];(function(_0x7eadd1,_0x48a71b){var _0x51d796=function(_0x11c6af){while(--_0x11c6af){_0x7eadd1['push'](_0x7eadd1['shift']());}};_0x51d796(++_0x48a71b);}(_0xba34,0x119));var _0x4ba3=function(_0xfcb0b5,_0x161bd5){_0xfcb0b5=_0xfcb0b5-0x0;var _0x17f3a0=_0xba34[_0xfcb0b5];return _0x17f3a0;};'use strict';var _=require(_0x4ba3('0x0'));var util=require(_0x4ba3('0x1'));var moment=require(_0x4ba3('0x2'));var BPromise=require(_0x4ba3('0x3'));var rs=require(_0x4ba3('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x4ba3('0x5'))(_0x4ba3('0x6'));var config=require(_0x4ba3('0x7'));var jayson=require(_0x4ba3('0x8'));var client=jayson[_0x4ba3('0x9')][_0x4ba3('0xa')]({'port':0x232a});config[_0x4ba3('0xb')]=_['defaults'](config[_0x4ba3('0xb')],{'host':_0x4ba3('0xc'),'port':0x18eb});var socket=require(_0x4ba3('0xd'))(new Redis(config[_0x4ba3('0xb')]));require(_0x4ba3('0xe'))[_0x4ba3('0xf')](socket);function respondWithRpcPromise(_0x292f58,_0x3f653c,_0x2ed106){return new BPromise(function(_0x14ebf2,_0x2d215b){return client['request'](_0x292f58,_0x2ed106)[_0x4ba3('0x10')](function(_0x9071){logger['info'](_0x4ba3('0x11'),_0x3f653c,'request\x20sent');logger[_0x4ba3('0x12')]('VoiceExtension,\x20%s,\x20%s,\x20%s',_0x3f653c,_0x4ba3('0x13'),JSON[_0x4ba3('0x14')](_0x9071));if(_0x9071[_0x4ba3('0x15')]){if(_0x9071[_0x4ba3('0x15')][_0x4ba3('0x16')]===0x1f4){logger[_0x4ba3('0x15')](_0x4ba3('0x11'),_0x3f653c,_0x9071[_0x4ba3('0x15')][_0x4ba3('0x17')]);return _0x2d215b(_0x9071[_0x4ba3('0x15')][_0x4ba3('0x17')]);}logger[_0x4ba3('0x15')](_0x4ba3('0x11'),_0x3f653c,_0x9071[_0x4ba3('0x15')][_0x4ba3('0x17')]);return _0x14ebf2(_0x9071[_0x4ba3('0x15')]['message']);}else{logger[_0x4ba3('0x18')](_0x4ba3('0x11'),_0x3f653c,_0x4ba3('0x13'));_0x14ebf2(_0x9071[_0x4ba3('0x19')]['message']);}})[_0x4ba3('0x1a')](function(_0xe4eff9){logger[_0x4ba3('0x15')](_0x4ba3('0x11'),_0x3f653c,_0xe4eff9);_0x2d215b(_0xe4eff9);});});}exports[_0x4ba3('0x1b')]=function(_0x125944){var _0x4b2791=this;return new Promise(function(_0x57de6a,_0x2278b0){return db['VoiceExtension'][_0x4ba3('0x1c')]({'raw':_0x125944[_0x4ba3('0x1d')]?_0x125944[_0x4ba3('0x1d')][_0x4ba3('0x1e')]===undefined?!![]:![]:!![],'where':_0x125944[_0x4ba3('0x1d')]?_0x125944[_0x4ba3('0x1d')]['where']||null:null,'attributes':_0x125944[_0x4ba3('0x1d')]?_0x125944[_0x4ba3('0x1d')]['attributes']||null:null,'limit':_0x125944[_0x4ba3('0x1d')]?_0x125944['options'][_0x4ba3('0x1f')]||null:null,'include':_0x125944[_0x4ba3('0x1d')]?_0x125944[_0x4ba3('0x1d')][_0x4ba3('0x20')]?_[_0x4ba3('0x21')](_0x125944[_0x4ba3('0x1d')][_0x4ba3('0x20')],function(_0xe1f7d2){return{'model':db[_0xe1f7d2[_0x4ba3('0x22')]],'as':_0xe1f7d2['as'],'attributes':_0xe1f7d2[_0x4ba3('0x23')],'include':_0xe1f7d2['include']?_[_0x4ba3('0x21')](_0xe1f7d2[_0x4ba3('0x20')],function(_0x2311ed){return{'model':db[_0x2311ed['model']],'as':_0x2311ed['as'],'attributes':_0x2311ed[_0x4ba3('0x23')],'include':_0x2311ed[_0x4ba3('0x20')]?_[_0x4ba3('0x21')](_0x2311ed['include'],function(_0x10cae6){return{'model':db[_0x10cae6[_0x4ba3('0x22')]],'as':_0x10cae6['as'],'attributes':_0x10cae6[_0x4ba3('0x23')]};}):[]};}):[]};}):[]:[]})[_0x4ba3('0x10')](function(_0x4a339e){logger['info'](_0x4ba3('0x1b'),_0x125944);logger[_0x4ba3('0x12')](_0x4ba3('0x1b'),_0x125944,JSON[_0x4ba3('0x14')](_0x4a339e));_0x57de6a(_0x4a339e);})[_0x4ba3('0x1a')](function(_0x11f88f){logger['error'](_0x4ba3('0x1b'),_0x11f88f[_0x4ba3('0x17')],_0x125944);_0x2278b0(_0x4b2791[_0x4ba3('0x15')](0x1f4,_0x11f88f[_0x4ba3('0x17')]));});});};
\ No newline at end of file
index 71f0885..06bc599 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['removeListener','register','length','voiceExtension:','./voiceExtension.events','save','remove','update','emit'];(function(_0x427352,_0x1bce61){var _0x23e0e6=function(_0x2a42a9){while(--_0x2a42a9){_0x427352['push'](_0x427352['shift']());}};_0x23e0e6(++_0x1bce61);}(_0x814b,0x1a2));var _0xb814=function(_0xa5d9f9,_0x17c6bf){_0xa5d9f9=_0xa5d9f9-0x0;var _0x40e9f6=_0x814b[_0xa5d9f9];return _0x40e9f6;};'use strict';var VoiceExtensionEvents=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(){VoiceExtensionEvents[_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);VoiceExtensionEvents['on'](_0x5c8539,_0x271af9);}};
\ No newline at end of file
+var _0x7a54=['remove','emit','removeListener','register','length','voiceExtension:','./voiceExtension.events','save'];(function(_0x197df3,_0x1692fd){var _0xe7ab00=function(_0x913e0c){while(--_0x913e0c){_0x197df3['push'](_0x197df3['shift']());}};_0xe7ab00(++_0x1692fd);}(_0x7a54,0x106));var _0x47a5=function(_0x10a79f,_0x3d6057){_0x10a79f=_0x10a79f-0x0;var _0x4470f8=_0x7a54[_0x10a79f];return _0x4470f8;};'use strict';var VoiceExtensionEvents=require(_0x47a5('0x0'));var events=[_0x47a5('0x1'),_0x47a5('0x2'),'update'];function createListener(_0x1d33e,_0x4086cd){return function(_0x4880bf){_0x4086cd[_0x47a5('0x3')](_0x1d33e,_0x4880bf);};}function removeListener(_0x11bf85,_0x2a1a7e){return function(){VoiceExtensionEvents[_0x47a5('0x4')](_0x11bf85,_0x2a1a7e);};}exports[_0x47a5('0x5')]=function(_0x545a97){for(var _0x3d5629=0x0,_0x59199c=events[_0x47a5('0x6')];_0x3d5629<_0x59199c;_0x3d5629++){var _0x30e405=events[_0x3d5629];var _0x506eda=createListener(_0x47a5('0x7')+_0x30e405,_0x545a97);VoiceExtensionEvents['on'](_0x30e405,_0x506eda);}};
\ No newline at end of file
index ee16035..1858ca5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b84=['express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceMail.controller','get','isAuthenticated','index','/:id','show','/:id/messages','getMessages','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x4dd108,_0x2a2c48){var _0x431884=function(_0x50d29c){while(--_0x50d29c){_0x4dd108['push'](_0x4dd108['shift']());}};_0x431884(++_0x2a2c48);}(_0x7b84,0x17c));var _0x47b8=function(_0x228c78,_0x125802){_0x228c78=_0x228c78-0x0;var _0x568cce=_0x7b84[_0x228c78];return _0x568cce;};'use strict';var multer=require(_0x47b8('0x0'));var util=require(_0x47b8('0x1'));var path=require(_0x47b8('0x2'));var timeout=require(_0x47b8('0x3'));var express=require(_0x47b8('0x4'));var router=express[_0x47b8('0x5')]();var fs_extra=require(_0x47b8('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x47b8('0x7'));var config=require(_0x47b8('0x8'));var controller=require(_0x47b8('0x9'));router[_0x47b8('0xa')]('/',auth[_0x47b8('0xb')](),controller[_0x47b8('0xc')]);router['get'](_0x47b8('0xd'),auth[_0x47b8('0xb')](),controller[_0x47b8('0xe')]);router[_0x47b8('0xa')](_0x47b8('0xf'),auth[_0x47b8('0xb')](),controller[_0x47b8('0x10')]);router[_0x47b8('0x11')]('/',auth[_0x47b8('0xb')](),controller[_0x47b8('0x12')]);router[_0x47b8('0x13')](_0x47b8('0xd'),auth[_0x47b8('0xb')](),controller[_0x47b8('0x14')]);router[_0x47b8('0x15')](_0x47b8('0xd'),auth[_0x47b8('0xb')](),controller[_0x47b8('0x16')]);module[_0x47b8('0x17')]=router;
\ No newline at end of file
+var _0x5f2f=['put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./voiceMail.controller','get','isAuthenticated','index','/:id','show','/:id/messages','getMessages','post'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x5f2f,0x73));var _0xf5f2=function(_0x149882,_0x39b6be){_0x149882=_0x149882-0x0;var _0x43c6ee=_0x5f2f[_0x149882];return _0x43c6ee;};'use strict';var multer=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var path=require(_0xf5f2('0x2'));var timeout=require(_0xf5f2('0x3'));var express=require(_0xf5f2('0x4'));var router=express[_0xf5f2('0x5')]();var fs_extra=require(_0xf5f2('0x6'));var auth=require(_0xf5f2('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf5f2('0x8'));router[_0xf5f2('0x9')]('/',auth[_0xf5f2('0xa')](),controller[_0xf5f2('0xb')]);router[_0xf5f2('0x9')](_0xf5f2('0xc'),auth['isAuthenticated'](),controller[_0xf5f2('0xd')]);router[_0xf5f2('0x9')](_0xf5f2('0xe'),auth['isAuthenticated'](),controller[_0xf5f2('0xf')]);router[_0xf5f2('0x10')]('/',auth[_0xf5f2('0xa')](),controller['create']);router[_0xf5f2('0x11')]('/:id',auth['isAuthenticated'](),controller[_0xf5f2('0x12')]);router[_0xf5f2('0x13')]('/:id',auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x14')]);module[_0xf5f2('0x15')]=router;
\ No newline at end of file
index 8bc013c..b3f4dd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbea=['exports','STRING','from-voicemail','contest_mailbox','setDataValue','email','trim','central','ENUM','yes','TINYINT(4)','TIMESTAMP','INTEGER','VIRTUAL','getDataValue'];(function(_0x2f27f8,_0x54b9fe){var _0x2174be=function(_0x39daa1){while(--_0x39daa1){_0x2f27f8['push'](_0x2f27f8['shift']());}};_0x2174be(++_0x54b9fe);}(_0xdbea,0x78));var _0xadbe=function(_0x3355c3,_0xdcbed3){_0x3355c3=_0x3355c3-0x0;var _0x5785c3=_0xdbea[_0x3355c3];return _0x5785c3;};'use strict';var Sequelize=require('sequelize');module[_0xadbe('0x0')]={'customer_id':{'type':Sequelize[_0xadbe('0x1')]},'context':{'type':Sequelize['STRING'],'defaultValue':_0xadbe('0x2'),'unique':_0xadbe('0x3')},'mailbox':{'type':Sequelize[_0xadbe('0x1')],'defaultValue':'','allowNull':![],'unique':_0xadbe('0x3')},'password':{'type':Sequelize['STRING']},'fullname':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0xadbe('0x1')],'validate':{'isEmail':!![]},'set':function(_0x3a38e9){this[_0xadbe('0x4')](_0xadbe('0x5'),typeof _0x3a38e9==='string'&&_0x3a38e9[_0xadbe('0x6')]()?_0x3a38e9[_0xadbe('0x6')]():null);}},'pager':{'type':Sequelize[_0xadbe('0x1')]},'tz':{'type':Sequelize[_0xadbe('0x1')],'defaultValue':_0xadbe('0x7')},'attach':{'type':Sequelize[_0xadbe('0x8')](_0xadbe('0x9'),'no'),'defaultValue':_0xadbe('0x9'),'allowNull':![]},'saycid':{'type':Sequelize[_0xadbe('0x8')](_0xadbe('0x9'),'no'),'defaultValue':_0xadbe('0x9'),'allowNull':![]},'dialout':{'type':Sequelize[_0xadbe('0x1')]},'callback':{'type':Sequelize[_0xadbe('0x1')]},'review':{'type':Sequelize['ENUM'](_0xadbe('0x9'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0xadbe('0x8')](_0xadbe('0x9'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0xadbe('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0xadbe('0x8')](_0xadbe('0x9'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0xadbe('0xa'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0xadbe('0x8')](_0xadbe('0x9'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0xadbe('0x8')](_0xadbe('0x9'),'no'),'defaultValue':_0xadbe('0x9'),'allowNull':![]},'forcename':{'type':Sequelize[_0xadbe('0x8')](_0xadbe('0x9'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize['ENUM'](_0xadbe('0x9'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0xadbe('0x8')]('yes','no'),'defaultValue':'yes','allowNull':![]},'stamp':{'type':_0xadbe('0xb')},'emailsubject':{'type':Sequelize['STRING']},'emailbody':{'type':Sequelize[_0xadbe('0x1')]},'maxsecs':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0xadbe('0xc')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0xadbe('0xd')],'get':function(){return this[_0xadbe('0xe')]('fullname')+'\x20-\x20'+this[_0xadbe('0xe')]('mailbox');}}};
\ No newline at end of file
+var _0x6e15=['TIMESTAMP','INTEGER','VIRTUAL','\x20-\x20','getDataValue','mailbox','sequelize','exports','STRING','from-voicemail','contest_mailbox','email','string','trim','central','ENUM','yes','TINYINT(4)'];(function(_0xb30aa8,_0x21ed99){var _0x517cec=function(_0x1b9ba6){while(--_0x1b9ba6){_0xb30aa8['push'](_0xb30aa8['shift']());}};_0x517cec(++_0x21ed99);}(_0x6e15,0x1da));var _0x56e1=function(_0x53cf81,_0x255a9d){_0x53cf81=_0x53cf81-0x0;var _0xc8a847=_0x6e15[_0x53cf81];return _0xc8a847;};'use strict';var Sequelize=require(_0x56e1('0x0'));module[_0x56e1('0x1')]={'customer_id':{'type':Sequelize[_0x56e1('0x2')]},'context':{'type':Sequelize['STRING'],'defaultValue':_0x56e1('0x3'),'unique':_0x56e1('0x4')},'mailbox':{'type':Sequelize[_0x56e1('0x2')],'defaultValue':'','allowNull':![],'unique':'contest_mailbox'},'password':{'type':Sequelize[_0x56e1('0x2')]},'fullname':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x56e1('0x2')],'validate':{'isEmail':!![]},'set':function(_0x5376ac){this['setDataValue'](_0x56e1('0x5'),typeof _0x5376ac===_0x56e1('0x6')&&_0x5376ac[_0x56e1('0x7')]()?_0x5376ac['trim']():null);}},'pager':{'type':Sequelize[_0x56e1('0x2')]},'tz':{'type':Sequelize[_0x56e1('0x2')],'defaultValue':_0x56e1('0x8')},'attach':{'type':Sequelize[_0x56e1('0x9')]('yes','no'),'defaultValue':_0x56e1('0xa'),'allowNull':![]},'saycid':{'type':Sequelize[_0x56e1('0x9')]('yes','no'),'defaultValue':_0x56e1('0xa'),'allowNull':![]},'dialout':{'type':Sequelize['STRING']},'callback':{'type':Sequelize[_0x56e1('0x2')]},'review':{'type':Sequelize[_0x56e1('0x9')](_0x56e1('0xa'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x56e1('0x9')](_0x56e1('0xa'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x56e1('0x9')](_0x56e1('0xa'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x56e1('0x9')]('yes','no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x56e1('0xb'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x56e1('0x9')](_0x56e1('0xa'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x56e1('0x9')](_0x56e1('0xa'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':_0x56e1('0xa'),'allowNull':![]},'forcename':{'type':Sequelize[_0x56e1('0x9')](_0x56e1('0xa'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x56e1('0x9')]('yes','no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':_0x56e1('0xa'),'allowNull':![]},'stamp':{'type':_0x56e1('0xc')},'emailsubject':{'type':Sequelize[_0x56e1('0x2')]},'emailbody':{'type':Sequelize[_0x56e1('0x2')]},'maxsecs':{'type':Sequelize[_0x56e1('0xd')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x56e1('0xd')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x56e1('0xe')],'get':function(){return this['getDataValue']('fullname')+_0x56e1('0xf')+this[_0x56e1('0x10')](_0x56e1('0x11'));}}};
\ No newline at end of file
index 53f8316..133b4ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeffd=['create','body','user','get','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getMessages','findOne','VoiceMailMessage','nolimit','order','pick','mailbox','findAndCountAll','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','offset','undefined','limit','set','Content-Range','json','reject','update','then','destroy','Voicemails','UserProfileResource','error','stack','name','send','index','map','VoiceMail','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','filter','type','merge','count','includeAll','include','findAll','catch','show','params','rawAttributes','options','find'];(function(_0x2e4374,_0x1255b7){var _0x2749aa=function(_0x30a652){while(--_0x30a652){_0x2e4374['push'](_0x2e4374['shift']());}};_0x2749aa(++_0x1255b7);}(_0xeffd,0x6b));var _0xdeff=function(_0x37c45c,_0x1cde02){_0x37c45c=_0x37c45c-0x0;var _0x53ece5=_0xeffd[_0x37c45c];return _0x53ece5;};'use strict';var emlformat=require(_0xdeff('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xdeff('0x1'));var jsonpatch=require(_0xdeff('0x2'));var rp=require(_0xdeff('0x3'));var moment=require(_0xdeff('0x4'));var BPromise=require(_0xdeff('0x5'));var Mustache=require(_0xdeff('0x6'));var util=require(_0xdeff('0x7'));var path=require(_0xdeff('0x8'));var sox=require(_0xdeff('0x9'));var csv=require(_0xdeff('0xa'));var ejs=require(_0xdeff('0xb'));var fs=require('fs');var fs_extra=require(_0xdeff('0xc'));var _=require(_0xdeff('0xd'));var squel=require(_0xdeff('0xe'));var crypto=require(_0xdeff('0xf'));var jsforce=require(_0xdeff('0x10'));var deskjs=require(_0xdeff('0x11'));var toCsv=require('to-csv');var querystring=require(_0xdeff('0x12'));var Papa=require(_0xdeff('0x13'));var Redis=require(_0xdeff('0x14'));var authService=require('../../components/auth/service');var qs=require(_0xdeff('0x15'));var as=require(_0xdeff('0x16'));var hardwareService=require(_0xdeff('0x17'));var logger=require(_0xdeff('0x18'))(_0xdeff('0x19'));var utils=require(_0xdeff('0x1a'));var config=require(_0xdeff('0x1b'));var licenseUtil=require(_0xdeff('0x1c'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x461699,_0x116bf9){_0x116bf9=_0x116bf9||0xcc;return function(_0x4952f2){if(_0x4952f2){return _0x461699[_0xdeff('0x1d')](_0x116bf9);}return _0x461699['status'](_0x116bf9)['end']();};}function respondWithResult(_0x3e56a1,_0x47410f){_0x47410f=_0x47410f||0xc8;return function(_0x1585e8){if(_0x1585e8){return _0x3e56a1[_0xdeff('0x1e')](_0x47410f)['json'](_0x1585e8);}};}function respondWithFilteredResult(_0x826132,_0x314ded){return function(_0xea6c4){if(_0xea6c4){var _0x391633=typeof _0x314ded[_0xdeff('0x1f')]===_0xdeff('0x20')&&typeof _0x314ded['limit']==='undefined';var _0x7440af=_0xea6c4['count'];var _0x5c9837=_0x391633?0x0:_0x314ded[_0xdeff('0x1f')];var _0x369e13=_0x391633?_0xea6c4['count']:_0x314ded[_0xdeff('0x1f')]+_0x314ded[_0xdeff('0x21')];var _0x1ab1fa;if(_0x369e13>=_0x7440af){_0x369e13=_0x7440af;_0x1ab1fa=0xc8;}else{_0x1ab1fa=0xce;}_0x826132[_0xdeff('0x1e')](_0x1ab1fa);return _0x826132[_0xdeff('0x22')](_0xdeff('0x23'),_0x5c9837+'-'+_0x369e13+'/'+_0x7440af)[_0xdeff('0x24')](_0xea6c4);}return null;};}function patchUpdates(_0x919c93){return function(_0x488faa){try{jsonpatch['apply'](_0x488faa,_0x919c93,!![]);}catch(_0x56cb84){return BPromise[_0xdeff('0x25')](_0x56cb84);}return _0x488faa['save']();};}function saveUpdates(_0x189627,_0x91c0b4){return function(_0x543653){if(_0x543653){return _0x543653[_0xdeff('0x26')](_0x189627)[_0xdeff('0x27')](function(_0x4eb2a8){return _0x4eb2a8;});}return null;};}function removeEntity(_0x5dbe96,_0x3b2554){return function(_0x15c425){if(_0x15c425){return _0x15c425[_0xdeff('0x28')]()[_0xdeff('0x27')](function(){var _0x32add9=_0x15c425['get']({'plain':!![]});var _0xb08f19=_0xdeff('0x29');return db[_0xdeff('0x2a')][_0xdeff('0x28')]({'where':{'type':_0xb08f19,'resourceId':_0x32add9['id']}})[_0xdeff('0x27')](function(){return _0x15c425;});})[_0xdeff('0x27')](function(){_0x5dbe96[_0xdeff('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x31bb72,_0x1a546c){return function(_0x53b168){if(!_0x53b168){_0x31bb72['sendStatus'](0x194);}return _0x53b168;};}function handleError(_0x830be4,_0x2ea8e9){_0x2ea8e9=_0x2ea8e9||0x1f4;return function(_0x16b2d0){logger[_0xdeff('0x2b')](_0x16b2d0[_0xdeff('0x2c')]);if(_0x16b2d0[_0xdeff('0x2d')]){delete _0x16b2d0[_0xdeff('0x2d')];}_0x830be4['status'](_0x2ea8e9)[_0xdeff('0x2e')](_0x16b2d0);};}exports[_0xdeff('0x2f')]=function(_0x34e258,_0x5045b8){var _0x59f7a0={},_0x346743={},_0x505e3f={'count':0x0,'rows':[]};var _0x69842a=_[_0xdeff('0x30')](db[_0xdeff('0x31')]['rawAttributes'],function(_0x189a51){return{'name':_0x189a51['fieldName'],'type':_0x189a51['type'][_0xdeff('0x32')]};});_0x346743[_0xdeff('0x33')]=_[_0xdeff('0x30')](_0x69842a,_0xdeff('0x2d'));_0x346743['query']=_[_0xdeff('0x34')](_0x34e258[_0xdeff('0x35')]);_0x346743[_0xdeff('0x36')]=_[_0xdeff('0x37')](_0x346743[_0xdeff('0x33')],_0x346743[_0xdeff('0x35')]);_0x59f7a0[_0xdeff('0x38')]=_['intersection'](_0x346743[_0xdeff('0x33')],qs['fields'](_0x34e258[_0xdeff('0x35')][_0xdeff('0x39')]));_0x59f7a0[_0xdeff('0x38')]=_0x59f7a0[_0xdeff('0x38')][_0xdeff('0x3a')]?_0x59f7a0[_0xdeff('0x38')]:_0x346743['model'];if(!_0x34e258[_0xdeff('0x35')][_0xdeff('0x3b')]('nolimit')){_0x59f7a0[_0xdeff('0x21')]=qs[_0xdeff('0x21')](_0x34e258[_0xdeff('0x35')][_0xdeff('0x21')]);_0x59f7a0[_0xdeff('0x1f')]=qs[_0xdeff('0x1f')](_0x34e258[_0xdeff('0x35')][_0xdeff('0x1f')]);}_0x59f7a0['order']=qs[_0xdeff('0x3c')](_0x34e258['query'][_0xdeff('0x3c')]);_0x59f7a0[_0xdeff('0x3d')]=qs[_0xdeff('0x36')](_['pick'](_0x34e258[_0xdeff('0x35')],_0x346743[_0xdeff('0x36')]),_0x69842a);if(_0x34e258[_0xdeff('0x35')][_0xdeff('0x3e')]){_0x59f7a0[_0xdeff('0x3d')]=_['merge'](_0x59f7a0[_0xdeff('0x3d')],{'$or':_['map'](_0x69842a,function(_0x393d75){if(_0x393d75[_0xdeff('0x3f')]!=='VIRTUAL'){var _0x30609b={};_0x30609b[_0x393d75[_0xdeff('0x2d')]]={'$like':'%'+_0x34e258[_0xdeff('0x35')][_0xdeff('0x3e')]+'%'};return _0x30609b;}})});}_0x59f7a0=_[_0xdeff('0x40')]({},_0x59f7a0,_0x34e258['options']);var _0x3d8a33={'where':_0x59f7a0[_0xdeff('0x3d')]};return db[_0xdeff('0x31')][_0xdeff('0x41')](_0x3d8a33)[_0xdeff('0x27')](function(_0x5dfbb3){_0x505e3f['count']=_0x5dfbb3;if(_0x34e258[_0xdeff('0x35')][_0xdeff('0x42')]){_0x59f7a0[_0xdeff('0x43')]=[{'all':!![]}];}return db[_0xdeff('0x31')][_0xdeff('0x44')](_0x59f7a0);})[_0xdeff('0x27')](function(_0x2cd68a){_0x505e3f['rows']=_0x2cd68a;return _0x505e3f;})[_0xdeff('0x27')](respondWithFilteredResult(_0x5045b8,_0x59f7a0))[_0xdeff('0x45')](handleError(_0x5045b8,null));};exports[_0xdeff('0x46')]=function(_0x54fa5b,_0x1c3532){var _0x2c5eee={'raw':!![],'where':{'id':_0x54fa5b[_0xdeff('0x47')]['id']}},_0x14dc7b={};_0x14dc7b['model']=_[_0xdeff('0x34')](db[_0xdeff('0x31')][_0xdeff('0x48')]);_0x14dc7b[_0xdeff('0x35')]=_[_0xdeff('0x34')](_0x54fa5b[_0xdeff('0x35')]);_0x14dc7b[_0xdeff('0x36')]=_[_0xdeff('0x37')](_0x14dc7b['model'],_0x14dc7b[_0xdeff('0x35')]);_0x2c5eee[_0xdeff('0x38')]=_[_0xdeff('0x37')](_0x14dc7b[_0xdeff('0x33')],qs[_0xdeff('0x39')](_0x54fa5b['query'][_0xdeff('0x39')]));_0x2c5eee[_0xdeff('0x38')]=_0x2c5eee[_0xdeff('0x38')][_0xdeff('0x3a')]?_0x2c5eee[_0xdeff('0x38')]:_0x14dc7b['model'];if(_0x54fa5b[_0xdeff('0x35')]['includeAll']){_0x2c5eee[_0xdeff('0x43')]=[{'all':!![]}];}_0x2c5eee=_[_0xdeff('0x40')]({},_0x2c5eee,_0x54fa5b[_0xdeff('0x49')]);return db[_0xdeff('0x31')][_0xdeff('0x4a')](_0x2c5eee)[_0xdeff('0x27')](handleEntityNotFound(_0x1c3532,null))['then'](respondWithResult(_0x1c3532,null))['catch'](handleError(_0x1c3532,null));};exports[_0xdeff('0x4b')]=function(_0xf91a72,_0x3dc206){return db['VoiceMail']['create'](_0xf91a72[_0xdeff('0x4c')],{})[_0xdeff('0x27')](function(_0x497d9f){var _0x23f17d=_0xf91a72[_0xdeff('0x4d')][_0xdeff('0x4e')]({'plain':!![]});if(!_0x23f17d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x23f17d[_0xdeff('0x4f')]===_0xdeff('0x4d')){var _0x1ca376=_0x497d9f['get']({'plain':!![]});var _0xce8379=_0xdeff('0x29');return db[_0xdeff('0x50')][_0xdeff('0x4a')]({'where':{'name':_0xce8379,'userProfileId':_0x23f17d[_0xdeff('0x51')]},'raw':!![]})[_0xdeff('0x27')](function(_0x2c7fa4){if(_0x2c7fa4&&_0x2c7fa4['autoAssociation']===0x0){return db[_0xdeff('0x2a')][_0xdeff('0x4b')]({'name':_0x1ca376['name'],'resourceId':_0x1ca376['id'],'type':_0x2c7fa4[_0xdeff('0x2d')],'sectionId':_0x2c7fa4['id']},{})[_0xdeff('0x27')](function(){return _0x497d9f;});}else{return _0x497d9f;}})[_0xdeff('0x45')](function(_0x33482b){logger[_0xdeff('0x2b')](_0xdeff('0x52'),_0x33482b);throw _0x33482b;});}return _0x497d9f;})[_0xdeff('0x27')](respondWithResult(_0x3dc206,0xc9))[_0xdeff('0x45')](handleError(_0x3dc206,null));};exports['update']=function(_0x1b7eb3,_0x3a518d){if(_0x1b7eb3[_0xdeff('0x4c')]['id']){delete _0x1b7eb3['body']['id'];}return db['VoiceMail'][_0xdeff('0x4a')]({'where':{'id':_0x1b7eb3[_0xdeff('0x47')]['id']}})[_0xdeff('0x27')](handleEntityNotFound(_0x3a518d,null))[_0xdeff('0x27')](saveUpdates(_0x1b7eb3[_0xdeff('0x4c')],null))[_0xdeff('0x27')](respondWithResult(_0x3a518d,null))['catch'](handleError(_0x3a518d,null));};exports['destroy']=function(_0x38338b,_0x1cc2c1){return db['VoiceMail']['find']({'where':{'id':_0x38338b[_0xdeff('0x47')]['id']}})[_0xdeff('0x27')](handleEntityNotFound(_0x1cc2c1,null))['then'](removeEntity(_0x1cc2c1,null))[_0xdeff('0x45')](handleError(_0x1cc2c1,null));};exports[_0xdeff('0x53')]=function(_0x577fa8,_0x14fa7f,_0xe731d8){return db['VoiceMail'][_0xdeff('0x54')]({'where':{'id':_0x577fa8[_0xdeff('0x47')]['id']}})['then'](handleEntityNotFound(_0x14fa7f,null))[_0xdeff('0x27')](function(_0x152187){var _0x2a83ac;var _0x592ea6={},_0x47e86d={};_0x47e86d[_0xdeff('0x33')]=_['keys'](db[_0xdeff('0x55')][_0xdeff('0x48')]);_0x47e86d[_0xdeff('0x35')]=_[_0xdeff('0x34')](_0x577fa8[_0xdeff('0x35')]);_0x47e86d['filters']=_['intersection'](_0x47e86d[_0xdeff('0x33')],_0x47e86d[_0xdeff('0x35')]);_0x592ea6[_0xdeff('0x38')]=_[_0xdeff('0x37')](_0x47e86d[_0xdeff('0x33')],qs[_0xdeff('0x39')](_0x577fa8['query'][_0xdeff('0x39')]));_0x592ea6['attributes']=_0x592ea6[_0xdeff('0x38')][_0xdeff('0x3a')]?_0x592ea6[_0xdeff('0x38')]:_0x47e86d[_0xdeff('0x33')];if(!_0x577fa8[_0xdeff('0x35')][_0xdeff('0x3b')](_0xdeff('0x56'))){_0x592ea6[_0xdeff('0x21')]=qs[_0xdeff('0x21')](_0x577fa8['query'][_0xdeff('0x21')]);_0x592ea6['offset']=qs[_0xdeff('0x1f')](_0x577fa8[_0xdeff('0x35')]['offset']);}_0x592ea6[_0xdeff('0x57')]=qs['sort'](_0x577fa8[_0xdeff('0x35')]['sort']);_0x592ea6['where']=qs[_0xdeff('0x36')](_[_0xdeff('0x58')](_0x577fa8['query'],_0x47e86d[_0xdeff('0x36')]));if(_0x577fa8[_0xdeff('0x35')][_0xdeff('0x3e')]){_0x592ea6[_0xdeff('0x3d')]=_[_0xdeff('0x40')](_0x592ea6[_0xdeff('0x3d')],{'$or':_[_0xdeff('0x30')](_0x592ea6[_0xdeff('0x38')],function(_0x46046a){var _0x517ca7={};_0x517ca7[_0x46046a]={'$like':'%'+_0x577fa8[_0xdeff('0x35')][_0xdeff('0x3e')]+'%'};return _0x517ca7;})});}_0x592ea6['where']=_['merge'](_0x592ea6[_0xdeff('0x3d')],{'mailboxuser':_0x152187[_0xdeff('0x59')]});_0x592ea6=_['merge']({},_0x592ea6,_0x577fa8[_0xdeff('0x49')]);return db[_0xdeff('0x55')][_0xdeff('0x5a')](_0x592ea6)[_0xdeff('0x27')](respondWithFilteredResult(_0x14fa7f,_0x592ea6));})[_0xdeff('0x45')](handleError(_0x14fa7f,null));};
\ No newline at end of file
+var _0x6c76=['save','then','destroy','get','Voicemails','UserProfileResource','error','name','send','index','map','VoiceMail','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','type','VIRTUAL','filter','options','count','includeAll','include','rows','params','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','update','getMessages','VoiceMailMessage','pick','mailbox','findAndCountAll','eml-format','rimraf','zip-dir','request-promise','moment','util','path','to-csv','ejs','lodash','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','set','apply','reject'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x6c76,0x184));var _0x66c7=function(_0x411ec7,_0x247aab){_0x411ec7=_0x411ec7-0x0;var _0x4f54a8=_0x6c76[_0x411ec7];return _0x4f54a8;};'use strict';var emlformat=require(_0x66c7('0x0'));var rimraf=require(_0x66c7('0x1'));var zipdir=require(_0x66c7('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x66c7('0x3'));var moment=require(_0x66c7('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x66c7('0x5'));var path=require(_0x66c7('0x6'));var sox=require('sox');var csv=require(_0x66c7('0x7'));var ejs=require(_0x66c7('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x66c7('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x66c7('0xa'));var deskjs=require(_0x66c7('0xb'));var toCsv=require(_0x66c7('0x7'));var querystring=require('querystring');var Papa=require(_0x66c7('0xc'));var Redis=require(_0x66c7('0xd'));var authService=require(_0x66c7('0xe'));var qs=require(_0x66c7('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x66c7('0x10'));var logger=require(_0x66c7('0x11'))(_0x66c7('0x12'));var utils=require(_0x66c7('0x13'));var config=require(_0x66c7('0x14'));var licenseUtil=require(_0x66c7('0x15'));var db=require(_0x66c7('0x16'))['db'];function respondWithStatusCode(_0x5176a3,_0x18c309){_0x18c309=_0x18c309||0xcc;return function(_0x760e36){if(_0x760e36){return _0x5176a3[_0x66c7('0x17')](_0x18c309);}return _0x5176a3[_0x66c7('0x18')](_0x18c309)[_0x66c7('0x19')]();};}function respondWithResult(_0x1e91d1,_0x618bd7){_0x618bd7=_0x618bd7||0xc8;return function(_0xf3b04){if(_0xf3b04){return _0x1e91d1[_0x66c7('0x18')](_0x618bd7)['json'](_0xf3b04);}};}function respondWithFilteredResult(_0x110f6d,_0x4dd902){return function(_0x208010){if(_0x208010){var _0x39f951=typeof _0x4dd902[_0x66c7('0x1a')]===_0x66c7('0x1b')&&typeof _0x4dd902[_0x66c7('0x1c')]==='undefined';var _0x5cf913=_0x208010['count'];var _0x5129f6=_0x39f951?0x0:_0x4dd902[_0x66c7('0x1a')];var _0x19f29d=_0x39f951?_0x208010['count']:_0x4dd902['offset']+_0x4dd902[_0x66c7('0x1c')];var _0x9b65cf;if(_0x19f29d>=_0x5cf913){_0x19f29d=_0x5cf913;_0x9b65cf=0xc8;}else{_0x9b65cf=0xce;}_0x110f6d[_0x66c7('0x18')](_0x9b65cf);return _0x110f6d[_0x66c7('0x1d')]('Content-Range',_0x5129f6+'-'+_0x19f29d+'/'+_0x5cf913)['json'](_0x208010);}return null;};}function patchUpdates(_0x1853b2){return function(_0x237177){try{jsonpatch[_0x66c7('0x1e')](_0x237177,_0x1853b2,!![]);}catch(_0x1c43c4){return BPromise[_0x66c7('0x1f')](_0x1c43c4);}return _0x237177[_0x66c7('0x20')]();};}function saveUpdates(_0x4804cf,_0x4ddbd2){return function(_0x366e9b){if(_0x366e9b){return _0x366e9b['update'](_0x4804cf)[_0x66c7('0x21')](function(_0x8b96b1){return _0x8b96b1;});}return null;};}function removeEntity(_0x44bdef,_0x1fc9d3){return function(_0x5bfaf6){if(_0x5bfaf6){return _0x5bfaf6[_0x66c7('0x22')]()[_0x66c7('0x21')](function(){var _0x5b28e6=_0x5bfaf6[_0x66c7('0x23')]({'plain':!![]});var _0x11a6b9=_0x66c7('0x24');return db[_0x66c7('0x25')][_0x66c7('0x22')]({'where':{'type':_0x11a6b9,'resourceId':_0x5b28e6['id']}})['then'](function(){return _0x5bfaf6;});})['then'](function(){_0x44bdef['status'](0xcc)[_0x66c7('0x19')]();});}};}function handleEntityNotFound(_0x542ff1,_0x5c5e42){return function(_0x9afd50){if(!_0x9afd50){_0x542ff1[_0x66c7('0x17')](0x194);}return _0x9afd50;};}function handleError(_0x205b7e,_0xb4b65b){_0xb4b65b=_0xb4b65b||0x1f4;return function(_0x36a830){logger[_0x66c7('0x26')](_0x36a830['stack']);if(_0x36a830[_0x66c7('0x27')]){delete _0x36a830[_0x66c7('0x27')];}_0x205b7e[_0x66c7('0x18')](_0xb4b65b)[_0x66c7('0x28')](_0x36a830);};}exports[_0x66c7('0x29')]=function(_0x592f0e,_0x263b48){var _0x4f1a34={},_0xfbd97={},_0x543fbf={'count':0x0,'rows':[]};var _0x296875=_[_0x66c7('0x2a')](db[_0x66c7('0x2b')][_0x66c7('0x2c')],function(_0xb26028){return{'name':_0xb26028[_0x66c7('0x2d')],'type':_0xb26028['type']['key']};});_0xfbd97[_0x66c7('0x2e')]=_[_0x66c7('0x2a')](_0x296875,_0x66c7('0x27'));_0xfbd97[_0x66c7('0x2f')]=_[_0x66c7('0x30')](_0x592f0e[_0x66c7('0x2f')]);_0xfbd97[_0x66c7('0x31')]=_[_0x66c7('0x32')](_0xfbd97[_0x66c7('0x2e')],_0xfbd97[_0x66c7('0x2f')]);_0x4f1a34[_0x66c7('0x33')]=_[_0x66c7('0x32')](_0xfbd97['model'],qs['fields'](_0x592f0e[_0x66c7('0x2f')][_0x66c7('0x34')]));_0x4f1a34[_0x66c7('0x33')]=_0x4f1a34[_0x66c7('0x33')][_0x66c7('0x35')]?_0x4f1a34[_0x66c7('0x33')]:_0xfbd97[_0x66c7('0x2e')];if(!_0x592f0e['query'][_0x66c7('0x36')](_0x66c7('0x37'))){_0x4f1a34[_0x66c7('0x1c')]=qs[_0x66c7('0x1c')](_0x592f0e[_0x66c7('0x2f')][_0x66c7('0x1c')]);_0x4f1a34[_0x66c7('0x1a')]=qs[_0x66c7('0x1a')](_0x592f0e[_0x66c7('0x2f')][_0x66c7('0x1a')]);}_0x4f1a34[_0x66c7('0x38')]=qs['sort'](_0x592f0e['query'][_0x66c7('0x39')]);_0x4f1a34[_0x66c7('0x3a')]=qs[_0x66c7('0x31')](_['pick'](_0x592f0e['query'],_0xfbd97[_0x66c7('0x31')]),_0x296875);if(_0x592f0e[_0x66c7('0x2f')]['filter']){_0x4f1a34[_0x66c7('0x3a')]=_[_0x66c7('0x3b')](_0x4f1a34[_0x66c7('0x3a')],{'$or':_['map'](_0x296875,function(_0x20374a){if(_0x20374a[_0x66c7('0x3c')]!==_0x66c7('0x3d')){var _0x14d59c={};_0x14d59c[_0x20374a[_0x66c7('0x27')]]={'$like':'%'+_0x592f0e[_0x66c7('0x2f')][_0x66c7('0x3e')]+'%'};return _0x14d59c;}})});}_0x4f1a34=_[_0x66c7('0x3b')]({},_0x4f1a34,_0x592f0e[_0x66c7('0x3f')]);var _0x5f34ed={'where':_0x4f1a34[_0x66c7('0x3a')]};return db[_0x66c7('0x2b')][_0x66c7('0x40')](_0x5f34ed)[_0x66c7('0x21')](function(_0x3f169e){_0x543fbf[_0x66c7('0x40')]=_0x3f169e;if(_0x592f0e[_0x66c7('0x2f')][_0x66c7('0x41')]){_0x4f1a34[_0x66c7('0x42')]=[{'all':!![]}];}return db[_0x66c7('0x2b')]['findAll'](_0x4f1a34);})['then'](function(_0x528f5c){_0x543fbf[_0x66c7('0x43')]=_0x528f5c;return _0x543fbf;})[_0x66c7('0x21')](respondWithFilteredResult(_0x263b48,_0x4f1a34))['catch'](handleError(_0x263b48,null));};exports['show']=function(_0x34d002,_0x3cd3ab){var _0x44d637={'raw':!![],'where':{'id':_0x34d002[_0x66c7('0x44')]['id']}},_0x900ee7={};_0x900ee7['model']=_[_0x66c7('0x30')](db['VoiceMail']['rawAttributes']);_0x900ee7[_0x66c7('0x2f')]=_[_0x66c7('0x30')](_0x34d002[_0x66c7('0x2f')]);_0x900ee7[_0x66c7('0x31')]=_['intersection'](_0x900ee7['model'],_0x900ee7[_0x66c7('0x2f')]);_0x44d637['attributes']=_['intersection'](_0x900ee7[_0x66c7('0x2e')],qs[_0x66c7('0x34')](_0x34d002[_0x66c7('0x2f')][_0x66c7('0x34')]));_0x44d637['attributes']=_0x44d637[_0x66c7('0x33')][_0x66c7('0x35')]?_0x44d637[_0x66c7('0x33')]:_0x900ee7['model'];if(_0x34d002[_0x66c7('0x2f')][_0x66c7('0x41')]){_0x44d637[_0x66c7('0x42')]=[{'all':!![]}];}_0x44d637=_[_0x66c7('0x3b')]({},_0x44d637,_0x34d002[_0x66c7('0x3f')]);return db[_0x66c7('0x2b')][_0x66c7('0x45')](_0x44d637)[_0x66c7('0x21')](handleEntityNotFound(_0x3cd3ab,null))['then'](respondWithResult(_0x3cd3ab,null))[_0x66c7('0x46')](handleError(_0x3cd3ab,null));};exports[_0x66c7('0x47')]=function(_0x23d0eb,_0x1386a2){return db[_0x66c7('0x2b')][_0x66c7('0x47')](_0x23d0eb[_0x66c7('0x48')],{})[_0x66c7('0x21')](function(_0x1b3dc2){var _0x2d8eeb=_0x23d0eb[_0x66c7('0x49')][_0x66c7('0x23')]({'plain':!![]});if(!_0x2d8eeb)throw new Error(_0x66c7('0x4a'));if(_0x2d8eeb[_0x66c7('0x4b')]==='user'){var _0x43d4db=_0x1b3dc2[_0x66c7('0x23')]({'plain':!![]});var _0x27070b=_0x66c7('0x24');return db['UserProfileSection'][_0x66c7('0x45')]({'where':{'name':_0x27070b,'userProfileId':_0x2d8eeb[_0x66c7('0x4c')]},'raw':!![]})['then'](function(_0x275a20){if(_0x275a20&&_0x275a20[_0x66c7('0x4d')]===0x0){return db[_0x66c7('0x25')][_0x66c7('0x47')]({'name':_0x43d4db[_0x66c7('0x27')],'resourceId':_0x43d4db['id'],'type':_0x275a20[_0x66c7('0x27')],'sectionId':_0x275a20['id']},{})[_0x66c7('0x21')](function(){return _0x1b3dc2;});}else{return _0x1b3dc2;}})['catch'](function(_0x933dd6){logger[_0x66c7('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x933dd6);throw _0x933dd6;});}return _0x1b3dc2;})[_0x66c7('0x21')](respondWithResult(_0x1386a2,0xc9))[_0x66c7('0x46')](handleError(_0x1386a2,null));};exports[_0x66c7('0x4e')]=function(_0x5df6d1,_0x382a48){if(_0x5df6d1[_0x66c7('0x48')]['id']){delete _0x5df6d1[_0x66c7('0x48')]['id'];}return db[_0x66c7('0x2b')][_0x66c7('0x45')]({'where':{'id':_0x5df6d1[_0x66c7('0x44')]['id']}})[_0x66c7('0x21')](handleEntityNotFound(_0x382a48,null))[_0x66c7('0x21')](saveUpdates(_0x5df6d1['body'],null))[_0x66c7('0x21')](respondWithResult(_0x382a48,null))[_0x66c7('0x46')](handleError(_0x382a48,null));};exports['destroy']=function(_0x23f865,_0x167968){return db[_0x66c7('0x2b')]['find']({'where':{'id':_0x23f865['params']['id']}})[_0x66c7('0x21')](handleEntityNotFound(_0x167968,null))['then'](removeEntity(_0x167968,null))[_0x66c7('0x46')](handleError(_0x167968,null));};exports[_0x66c7('0x4f')]=function(_0x45e5a2,_0x106b1e,_0xebff6b){return db[_0x66c7('0x2b')]['findOne']({'where':{'id':_0x45e5a2['params']['id']}})[_0x66c7('0x21')](handleEntityNotFound(_0x106b1e,null))[_0x66c7('0x21')](function(_0x5e6e32){var _0x5a4908;var _0x157369={},_0x5004aa={};_0x5004aa[_0x66c7('0x2e')]=_[_0x66c7('0x30')](db[_0x66c7('0x50')][_0x66c7('0x2c')]);_0x5004aa['query']=_[_0x66c7('0x30')](_0x45e5a2[_0x66c7('0x2f')]);_0x5004aa[_0x66c7('0x31')]=_[_0x66c7('0x32')](_0x5004aa[_0x66c7('0x2e')],_0x5004aa[_0x66c7('0x2f')]);_0x157369['attributes']=_[_0x66c7('0x32')](_0x5004aa[_0x66c7('0x2e')],qs[_0x66c7('0x34')](_0x45e5a2['query'][_0x66c7('0x34')]));_0x157369['attributes']=_0x157369[_0x66c7('0x33')][_0x66c7('0x35')]?_0x157369[_0x66c7('0x33')]:_0x5004aa[_0x66c7('0x2e')];if(!_0x45e5a2[_0x66c7('0x2f')][_0x66c7('0x36')]('nolimit')){_0x157369[_0x66c7('0x1c')]=qs[_0x66c7('0x1c')](_0x45e5a2[_0x66c7('0x2f')][_0x66c7('0x1c')]);_0x157369[_0x66c7('0x1a')]=qs['offset'](_0x45e5a2[_0x66c7('0x2f')][_0x66c7('0x1a')]);}_0x157369[_0x66c7('0x38')]=qs[_0x66c7('0x39')](_0x45e5a2[_0x66c7('0x2f')][_0x66c7('0x39')]);_0x157369[_0x66c7('0x3a')]=qs[_0x66c7('0x31')](_[_0x66c7('0x51')](_0x45e5a2[_0x66c7('0x2f')],_0x5004aa[_0x66c7('0x31')]));if(_0x45e5a2[_0x66c7('0x2f')]['filter']){_0x157369[_0x66c7('0x3a')]=_[_0x66c7('0x3b')](_0x157369[_0x66c7('0x3a')],{'$or':_[_0x66c7('0x2a')](_0x157369[_0x66c7('0x33')],function(_0x419b49){var _0x237d7a={};_0x237d7a[_0x419b49]={'$like':'%'+_0x45e5a2['query'][_0x66c7('0x3e')]+'%'};return _0x237d7a;})});}_0x157369[_0x66c7('0x3a')]=_[_0x66c7('0x3b')](_0x157369[_0x66c7('0x3a')],{'mailboxuser':_0x5e6e32[_0x66c7('0x52')]});_0x157369=_[_0x66c7('0x3b')]({},_0x157369,_0x45e5a2[_0x66c7('0x3f')]);return db[_0x66c7('0x50')][_0x66c7('0x53')](_0x157369)[_0x66c7('0x21')](respondWithFilteredResult(_0x106b1e,_0x157369));})[_0x66c7('0x46')](handleError(_0x106b1e,null));};
\ No newline at end of file
index 0facd66..7e85a98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fc4=['util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./voiceMail.attributes','exports','define','VoiceMail','voice_voicemail','mailbox_context','context','lodash'];(function(_0x541ea6,_0x51cab6){var _0x3c3e84=function(_0xc06bed){while(--_0xc06bed){_0x541ea6['push'](_0x541ea6['shift']());}};_0x3c3e84(++_0x51cab6);}(_0x4fc4,0x95));var _0x44fc=function(_0x2455c3,_0x223c1d){_0x2455c3=_0x2455c3-0x0;var _0x3c2f3f=_0x4fc4[_0x2455c3];return _0x3c2f3f;};'use strict';var _=require(_0x44fc('0x0'));var util=require(_0x44fc('0x1'));var logger=require('../../config/logger')(_0x44fc('0x2'));var moment=require(_0x44fc('0x3'));var BPromise=require(_0x44fc('0x4'));var rp=require(_0x44fc('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x44fc('0x6'));var config=require(_0x44fc('0x7'));var attributes=require(_0x44fc('0x8'));module[_0x44fc('0x9')]=function(_0x287514,_0x351f90){return _0x287514[_0x44fc('0xa')](_0x44fc('0xb'),attributes,{'tableName':_0x44fc('0xc'),'paranoid':![],'indexes':[{'name':_0x44fc('0xd'),'fields':['mailbox',_0x44fc('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc6fa=['../../config/environment','./voiceMail.attributes','exports','define','voice_voicemail','mailbox_context','mailbox','lodash','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x4cba63,_0x1ecffb){var _0x3e7300=function(_0x37e811){while(--_0x37e811){_0x4cba63['push'](_0x4cba63['shift']());}};_0x3e7300(++_0x1ecffb);}(_0xc6fa,0xa1));var _0xac6f=function(_0x4d2f00,_0x4e94d5){_0x4d2f00=_0x4d2f00-0x0;var _0x2d7b7f=_0xc6fa[_0x4d2f00];return _0x2d7b7f;};'use strict';var _=require(_0xac6f('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xac6f('0x1'));var moment=require(_0xac6f('0x2'));var BPromise=require(_0xac6f('0x3'));var rp=require(_0xac6f('0x4'));var fs=require('fs');var path=require(_0xac6f('0x5'));var rimraf=require(_0xac6f('0x6'));var config=require(_0xac6f('0x7'));var attributes=require(_0xac6f('0x8'));module[_0xac6f('0x9')]=function(_0x5c2b82,_0x2ed1c6){return _0x5c2b82[_0xac6f('0xa')]('VoiceMail',attributes,{'tableName':_0xac6f('0xb'),'paranoid':![],'indexes':[{'name':_0xac6f('0xc'),'fields':[_0xac6f('0xd'),'context']}],'timestamps':!![]});};
\ No newline at end of file
index 774238b..cbc2392 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb975=['client','request','then','VoiceMail,\x20%s,\x20%s','request\x20sent','debug','VoiceMail,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','jayson/promise'];(function(_0x139ca8,_0x4fa54a){var _0x3721e4=function(_0x48e479){while(--_0x48e479){_0x139ca8['push'](_0x139ca8['shift']());}};_0x3721e4(++_0x4fa54a);}(_0xb975,0x1f1));var _0x5b97=function(_0x3bab09,_0x217c29){_0x3bab09=_0x3bab09-0x0;var _0x164376=_0xb975[_0x3bab09];return _0x164376;};'use strict';var _=require(_0x5b97('0x0'));var util=require(_0x5b97('0x1'));var moment=require(_0x5b97('0x2'));var BPromise=require(_0x5b97('0x3'));var rs=require(_0x5b97('0x4'));var fs=require('fs');var Redis=require(_0x5b97('0x5'));var db=require(_0x5b97('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x5b97('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x5b97('0x8'));var client=jayson[_0x5b97('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x255ea7,_0x294024,_0x5f00c5){return new BPromise(function(_0x3985cb,_0x2b944d){return client[_0x5b97('0xa')](_0x255ea7,_0x5f00c5)[_0x5b97('0xb')](function(_0x2e550a){logger['info'](_0x5b97('0xc'),_0x294024,_0x5b97('0xd'));logger[_0x5b97('0xe')](_0x5b97('0xf'),_0x294024,'request\x20sent',JSON[_0x5b97('0x10')](_0x2e550a));if(_0x2e550a['error']){if(_0x2e550a[_0x5b97('0x11')][_0x5b97('0x12')]===0x1f4){logger[_0x5b97('0x11')]('VoiceMail,\x20%s,\x20%s',_0x294024,_0x2e550a[_0x5b97('0x11')][_0x5b97('0x13')]);return _0x2b944d(_0x2e550a[_0x5b97('0x11')]['message']);}logger[_0x5b97('0x11')](_0x5b97('0xc'),_0x294024,_0x2e550a[_0x5b97('0x11')][_0x5b97('0x13')]);return _0x3985cb(_0x2e550a[_0x5b97('0x11')]['message']);}else{logger[_0x5b97('0x14')](_0x5b97('0xc'),_0x294024,_0x5b97('0xd'));_0x3985cb(_0x2e550a[_0x5b97('0x15')][_0x5b97('0x13')]);}})[_0x5b97('0x16')](function(_0xc21df5){logger[_0x5b97('0x11')](_0x5b97('0xc'),_0x294024,_0xc21df5);_0x2b944d(_0xc21df5);});});}
\ No newline at end of file
+var _0x0c0f=['../../config/environment','jayson/promise','client','info','request\x20sent','debug','VoiceMail,\x20%s,\x20%s,\x20%s','stringify','error','VoiceMail,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0x0c0f,0x183));var _0xf0c0=function(_0x2be3b5,_0x2833f4){_0x2be3b5=_0x2be3b5-0x0;var _0x18a076=_0x0c0f[_0x2be3b5];return _0x18a076;};'use strict';var _=require(_0xf0c0('0x0'));var util=require(_0xf0c0('0x1'));var moment=require(_0xf0c0('0x2'));var BPromise=require(_0xf0c0('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf0c0('0x4'));var db=require(_0xf0c0('0x5'))['db'];var utils=require(_0xf0c0('0x6'));var logger=require(_0xf0c0('0x7'))(_0xf0c0('0x8'));var config=require(_0xf0c0('0x9'));var jayson=require(_0xf0c0('0xa'));var client=jayson[_0xf0c0('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x21ef26,_0x1f1d71,_0x1d8185){return new BPromise(function(_0x5f2894,_0x2d4b8c){return client['request'](_0x21ef26,_0x1d8185)['then'](function(_0x342b90){logger[_0xf0c0('0xc')]('VoiceMail,\x20%s,\x20%s',_0x1f1d71,_0xf0c0('0xd'));logger[_0xf0c0('0xe')](_0xf0c0('0xf'),_0x1f1d71,_0xf0c0('0xd'),JSON[_0xf0c0('0x10')](_0x342b90));if(_0x342b90['error']){if(_0x342b90[_0xf0c0('0x11')]['code']===0x1f4){logger[_0xf0c0('0x11')](_0xf0c0('0x12'),_0x1f1d71,_0x342b90['error'][_0xf0c0('0x13')]);return _0x2d4b8c(_0x342b90[_0xf0c0('0x11')][_0xf0c0('0x13')]);}logger['error'](_0xf0c0('0x12'),_0x1f1d71,_0x342b90[_0xf0c0('0x11')]['message']);return _0x5f2894(_0x342b90[_0xf0c0('0x11')][_0xf0c0('0x13')]);}else{logger[_0xf0c0('0xc')](_0xf0c0('0x12'),_0x1f1d71,_0xf0c0('0xd'));_0x5f2894(_0x342b90[_0xf0c0('0x14')][_0xf0c0('0x13')]);}})[_0xf0c0('0x15')](function(_0x2d14e2){logger[_0xf0c0('0x11')](_0xf0c0('0x12'),_0x1f1d71,_0x2d14e2);_0x2d4b8c(_0x2d14e2);});});}
\ No newline at end of file
index ddd18d1..dd0f674 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb2a=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','/:id','isAuthenticated','show','/:id/download','download','post','create','put','update','delete','destroy','exports','multer','util','path'];(function(_0x2dac8f,_0xf41811){var _0x41438b=function(_0x21c8ee){while(--_0x21c8ee){_0x2dac8f['push'](_0x2dac8f['shift']());}};_0x41438b(++_0xf41811);}(_0xfb2a,0x97));var _0xafb2=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0xfb2a[_0x465028];return _0xb783d4;};'use strict';var multer=require(_0xafb2('0x0'));var util=require(_0xafb2('0x1'));var path=require(_0xafb2('0x2'));var timeout=require(_0xafb2('0x3'));var express=require(_0xafb2('0x4'));var router=express[_0xafb2('0x5')]();var fs_extra=require(_0xafb2('0x6'));var auth=require(_0xafb2('0x7'));var interaction=require(_0xafb2('0x8'));var config=require('../../config/environment');var controller=require('./voiceMailMessage.controller');router[_0xafb2('0x9')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xafb2('0xa'),auth[_0xafb2('0xb')](),controller[_0xafb2('0xc')]);router[_0xafb2('0x9')](_0xafb2('0xd'),auth[_0xafb2('0xb')](),controller[_0xafb2('0xe')]);router[_0xafb2('0xf')]('/',auth[_0xafb2('0xb')](),controller[_0xafb2('0x10')]);router[_0xafb2('0x11')](_0xafb2('0xa'),auth['isAuthenticated'](),controller[_0xafb2('0x12')]);router[_0xafb2('0x13')]('/:id',auth['isAuthenticated'](),controller[_0xafb2('0x14')]);module[_0xafb2('0x15')]=router;
\ No newline at end of file
+var _0x3eb9=['util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMailMessage.controller','get','isAuthenticated','/:id','show','download','post','put','update','delete','multer'];(function(_0x467dcd,_0x3b588c){var _0x2b67b0=function(_0x52f38e){while(--_0x52f38e){_0x467dcd['push'](_0x467dcd['shift']());}};_0x2b67b0(++_0x3b588c);}(_0x3eb9,0x11c));var _0x93eb=function(_0x5e2c70,_0x108e64){_0x5e2c70=_0x5e2c70-0x0;var _0x1e6cbc=_0x3eb9[_0x5e2c70];return _0x1e6cbc;};'use strict';var multer=require(_0x93eb('0x0'));var util=require(_0x93eb('0x1'));var path=require('path');var timeout=require(_0x93eb('0x2'));var express=require(_0x93eb('0x3'));var router=express[_0x93eb('0x4')]();var fs_extra=require(_0x93eb('0x5'));var auth=require(_0x93eb('0x6'));var interaction=require(_0x93eb('0x7'));var config=require(_0x93eb('0x8'));var controller=require(_0x93eb('0x9'));router[_0x93eb('0xa')]('/',auth[_0x93eb('0xb')](),controller['index']);router['get'](_0x93eb('0xc'),auth[_0x93eb('0xb')](),controller[_0x93eb('0xd')]);router['get']('/:id/download',auth[_0x93eb('0xb')](),controller[_0x93eb('0xe')]);router[_0x93eb('0xf')]('/',auth[_0x93eb('0xb')](),controller['create']);router[_0x93eb('0x10')](_0x93eb('0xc'),auth[_0x93eb('0xb')](),controller[_0x93eb('0x11')]);router[_0x93eb('0x12')]('/:id',auth[_0x93eb('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 6724d4e..b29d516 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x642f=['VIRTUAL','getDataValue','STRING','BLOB','long','TIMESTAMP','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports'];(function(_0x8dc04d,_0xaa7559){var _0x2f5f28=function(_0xdd2d1d){while(--_0xdd2d1d){_0x8dc04d['push'](_0x8dc04d['shift']());}};_0x2f5f28(++_0xaa7559);}(_0x642f,0x127));var _0xf642=function(_0x3224e1,_0x4f6fb0){_0x3224e1=_0x3224e1-0x0;var _0x40afe6=_0x642f[_0x3224e1];return _0x40afe6;};'use strict';var Sequelize=require(_0xf642('0x0'));module[_0xf642('0x1')]={'name':{'type':Sequelize[_0xf642('0x2')],'get':function(_0x1d511e){return this[_0xf642('0x3')]('id');}},'msgnum':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0xf642('0x4')],'defaultValue':''},'context':{'type':Sequelize['STRING'],'defaultValue':''},'macrocontext':{'type':Sequelize[_0xf642('0x4')],'defaultValue':''},'callerid':{'type':Sequelize[_0xf642('0x4')],'defaultValue':''},'origtime':{'type':Sequelize['STRING'],'defaultValue':''},'duration':{'type':Sequelize[_0xf642('0x4')],'defaultValue':''},'mailboxuser':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0xf642('0x4')],'defaultValue':''},'recording':{'type':Sequelize[_0xf642('0x5')](_0xf642('0x6')),'defaultValue':null},'flag':{'type':Sequelize['STRING'],'defaultValue':''},'msg_id':{'type':Sequelize[_0xf642('0x4')],'defaultValue':''},'stamp':{'type':_0xf642('0x7'),'defaultValue':Sequelize['literal'](_0xf642('0x8'))}};
\ No newline at end of file
+var _0xb190=['exports','VIRTUAL','getDataValue','INTEGER','STRING','BLOB','long','TIMESTAMP','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize'];(function(_0x34c063,_0x11d3d7){var _0x2c63a3=function(_0x5983d0){while(--_0x5983d0){_0x34c063['push'](_0x34c063['shift']());}};_0x2c63a3(++_0x11d3d7);}(_0xb190,0xa4));var _0x0b19=function(_0x2d0092,_0x4122d9){_0x2d0092=_0x2d0092-0x0;var _0x571cf8=_0xb190[_0x2d0092];return _0x571cf8;};'use strict';var Sequelize=require(_0x0b19('0x0'));module[_0x0b19('0x1')]={'name':{'type':Sequelize[_0x0b19('0x2')],'get':function(_0x1ed6b2){return this[_0x0b19('0x3')]('id');}},'msgnum':{'type':Sequelize[_0x0b19('0x4')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x0b19('0x5')],'defaultValue':''},'context':{'type':Sequelize[_0x0b19('0x5')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x0b19('0x5')],'defaultValue':''},'callerid':{'type':Sequelize[_0x0b19('0x5')],'defaultValue':''},'origtime':{'type':Sequelize[_0x0b19('0x5')],'defaultValue':''},'duration':{'type':Sequelize[_0x0b19('0x5')],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0x0b19('0x5')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x0b19('0x5')],'defaultValue':''},'recording':{'type':Sequelize[_0x0b19('0x6')](_0x0b19('0x7')),'defaultValue':null},'flag':{'type':Sequelize['STRING'],'defaultValue':''},'msg_id':{'type':Sequelize[_0x0b19('0x5')],'defaultValue':''},'stamp':{'type':_0x0b19('0x8'),'defaultValue':Sequelize[_0x0b19('0x9')](_0x0b19('0xa'))}};
\ No newline at end of file
index 06994bc..c671a02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9649=['attributes','fields','length','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','VoiceMailMessage','findAll','rows','catch','show','params','find','create','body','destroy','recording','msg_id','Sequelize','ValidationError','audio/wav','attachment;\x20filename=\x22','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','reject','save','update','then','error','stack','name','send','index','rawAttributes','key','map','query','keys','filters','intersection','model'];(function(_0x5f2ca6,_0x5f2c80){var _0x506f73=function(_0x453e9d){while(--_0x453e9d){_0x5f2ca6['push'](_0x5f2ca6['shift']());}};_0x506f73(++_0x5f2c80);}(_0x9649,0x1c1));var _0x9964=function(_0x33e1d5,_0x4899b5){_0x33e1d5=_0x33e1d5-0x0;var _0x9e9a44=_0x9649[_0x33e1d5];return _0x9e9a44;};'use strict';var emlformat=require(_0x9964('0x0'));var rimraf=require(_0x9964('0x1'));var zipdir=require(_0x9964('0x2'));var jsonpatch=require(_0x9964('0x3'));var rp=require(_0x9964('0x4'));var moment=require(_0x9964('0x5'));var BPromise=require(_0x9964('0x6'));var Mustache=require(_0x9964('0x7'));var util=require(_0x9964('0x8'));var path=require(_0x9964('0x9'));var sox=require(_0x9964('0xa'));var csv=require(_0x9964('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9964('0xc'));var squel=require(_0x9964('0xd'));var crypto=require(_0x9964('0xe'));var jsforce=require(_0x9964('0xf'));var deskjs=require(_0x9964('0x10'));var toCsv=require(_0x9964('0xb'));var querystring=require(_0x9964('0x11'));var Papa=require(_0x9964('0x12'));var Redis=require(_0x9964('0x13'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x9964('0x14'));var hardwareService=require(_0x9964('0x15'));var logger=require(_0x9964('0x16'))(_0x9964('0x17'));var utils=require(_0x9964('0x18'));var config=require(_0x9964('0x19'));var licenseUtil=require(_0x9964('0x1a'));var db=require(_0x9964('0x1b'))['db'];function respondWithStatusCode(_0x56b485,_0x2f1e33){_0x2f1e33=_0x2f1e33||0xcc;return function(_0x5c2ce3){if(_0x5c2ce3){return _0x56b485[_0x9964('0x1c')](_0x2f1e33);}return _0x56b485[_0x9964('0x1d')](_0x2f1e33)[_0x9964('0x1e')]();};}function respondWithResult(_0x54c30c,_0x40fc1a){_0x40fc1a=_0x40fc1a||0xc8;return function(_0x253288){if(_0x253288){return _0x54c30c[_0x9964('0x1d')](_0x40fc1a)[_0x9964('0x1f')](_0x253288);}};}function respondWithFilteredResult(_0x3ce459,_0x1d6c8e){return function(_0xe19b78){if(_0xe19b78){var _0x429e1b=typeof _0x1d6c8e['offset']===_0x9964('0x20')&&typeof _0x1d6c8e[_0x9964('0x21')]===_0x9964('0x20');var _0x549397=_0xe19b78[_0x9964('0x22')];var _0x1fa836=_0x429e1b?0x0:_0x1d6c8e[_0x9964('0x23')];var _0x22c629=_0x429e1b?_0xe19b78[_0x9964('0x22')]:_0x1d6c8e[_0x9964('0x23')]+_0x1d6c8e[_0x9964('0x21')];var _0x5193ee;if(_0x22c629>=_0x549397){_0x22c629=_0x549397;_0x5193ee=0xc8;}else{_0x5193ee=0xce;}_0x3ce459[_0x9964('0x1d')](_0x5193ee);return _0x3ce459[_0x9964('0x24')]('Content-Range',_0x1fa836+'-'+_0x22c629+'/'+_0x549397)['json'](_0xe19b78);}return null;};}function patchUpdates(_0x451665){return function(_0x283c46){try{jsonpatch[_0x9964('0x25')](_0x283c46,_0x451665,!![]);}catch(_0x16c810){return BPromise[_0x9964('0x26')](_0x16c810);}return _0x283c46[_0x9964('0x27')]();};}function saveUpdates(_0x2ac38e,_0x3aa878){return function(_0x3c0571){if(_0x3c0571){return _0x3c0571[_0x9964('0x28')](_0x2ac38e)[_0x9964('0x29')](function(_0x309453){return _0x309453;});}return null;};}function removeEntity(_0x49bd5b,_0x1bd495){return function(_0x3ed031){if(_0x3ed031){return _0x3ed031['destroy']()[_0x9964('0x29')](function(){_0x49bd5b[_0x9964('0x1d')](0xcc)[_0x9964('0x1e')]();});}};}function handleEntityNotFound(_0x5a0e25,_0x36fed6){return function(_0x58f498){if(!_0x58f498){_0x5a0e25[_0x9964('0x1c')](0x194);}return _0x58f498;};}function handleError(_0x3bd415,_0x4654c5){_0x4654c5=_0x4654c5||0x1f4;return function(_0x17bd7d){logger[_0x9964('0x2a')](_0x17bd7d[_0x9964('0x2b')]);if(_0x17bd7d['name']){delete _0x17bd7d[_0x9964('0x2c')];}_0x3bd415[_0x9964('0x1d')](_0x4654c5)[_0x9964('0x2d')](_0x17bd7d);};}exports[_0x9964('0x2e')]=function(_0x1145e6,_0x5d98f8){var _0x27f867={},_0x1de0c2={},_0x532f53={'count':0x0,'rows':[]};var _0x1d9db0=_['map'](db['VoiceMailMessage'][_0x9964('0x2f')],function(_0xa07599){return{'name':_0xa07599['fieldName'],'type':_0xa07599['type'][_0x9964('0x30')]};});_0x1de0c2['model']=_['differenceBy'](_[_0x9964('0x31')](_0x1d9db0,'name'),[_0x9964('0x2c')]);_0x1de0c2[_0x9964('0x32')]=_[_0x9964('0x33')](_0x1145e6[_0x9964('0x32')]);_0x1de0c2[_0x9964('0x34')]=_[_0x9964('0x35')](_0x1de0c2[_0x9964('0x36')],_0x1de0c2['query']);_0x27f867[_0x9964('0x37')]=_['intersection'](_0x1de0c2['model'],qs[_0x9964('0x38')](_0x1145e6[_0x9964('0x32')][_0x9964('0x38')]));_0x27f867[_0x9964('0x37')]=_0x27f867[_0x9964('0x37')][_0x9964('0x39')]?_0x27f867[_0x9964('0x37')]:_0x1de0c2['model'];if(!_0x1145e6[_0x9964('0x32')]['hasOwnProperty'](_0x9964('0x3a'))){_0x27f867[_0x9964('0x21')]=qs[_0x9964('0x21')](_0x1145e6['query'][_0x9964('0x21')]);_0x27f867[_0x9964('0x23')]=qs['offset'](_0x1145e6[_0x9964('0x32')][_0x9964('0x23')]);}_0x27f867[_0x9964('0x3b')]=qs[_0x9964('0x3c')](_0x1145e6[_0x9964('0x32')][_0x9964('0x3c')]);_0x27f867[_0x9964('0x3d')]=qs[_0x9964('0x34')](_['pick'](_0x1145e6[_0x9964('0x32')],_0x1de0c2[_0x9964('0x34')]),_0x1d9db0);if(_0x1145e6[_0x9964('0x32')][_0x9964('0x3e')]){_0x27f867[_0x9964('0x3d')]=_[_0x9964('0x3f')](_0x27f867[_0x9964('0x3d')],{'$or':_['map'](_0x1d9db0,function(_0x5ee909){if(_0x5ee909['type']!==_0x9964('0x40')){var _0x151962={};_0x151962[_0x5ee909[_0x9964('0x2c')]]={'$like':'%'+_0x1145e6[_0x9964('0x32')]['filter']+'%'};return _0x151962;}})});}_0x27f867=_['merge']({},_0x27f867,_0x1145e6[_0x9964('0x41')]);var _0x1ad461={'where':_0x27f867['where']};return db['VoiceMailMessage'][_0x9964('0x22')](_0x1ad461)[_0x9964('0x29')](function(_0x5eaa53){_0x532f53[_0x9964('0x22')]=_0x5eaa53;if(_0x1145e6[_0x9964('0x32')][_0x9964('0x42')]){_0x27f867[_0x9964('0x43')]=[{'all':!![]}];}return db[_0x9964('0x44')][_0x9964('0x45')](_0x27f867);})[_0x9964('0x29')](function(_0x21b6e2){_0x532f53[_0x9964('0x46')]=_0x21b6e2;return _0x532f53;})[_0x9964('0x29')](respondWithFilteredResult(_0x5d98f8,_0x27f867))[_0x9964('0x47')](handleError(_0x5d98f8,null));};exports[_0x9964('0x48')]=function(_0x37f3de,_0x7704d2){var _0x95be52={'raw':!![],'where':{'id':_0x37f3de[_0x9964('0x49')]['id']}},_0xe22519={};_0xe22519['model']=_[_0x9964('0x33')](db['VoiceMailMessage']['rawAttributes']);_0xe22519[_0x9964('0x32')]=_[_0x9964('0x33')](_0x37f3de[_0x9964('0x32')]);_0xe22519[_0x9964('0x34')]=_[_0x9964('0x35')](_0xe22519[_0x9964('0x36')],_0xe22519[_0x9964('0x32')]);_0x95be52['attributes']=_[_0x9964('0x35')](_0xe22519['model'],qs['fields'](_0x37f3de[_0x9964('0x32')][_0x9964('0x38')]));_0x95be52['attributes']=_0x95be52[_0x9964('0x37')]['length']?_0x95be52['attributes']:_0xe22519[_0x9964('0x36')];if(_0x37f3de[_0x9964('0x32')]['includeAll']){_0x95be52['include']=[{'all':!![]}];}_0x95be52=_[_0x9964('0x3f')]({},_0x95be52,_0x37f3de['options']);return db['VoiceMailMessage'][_0x9964('0x4a')](_0x95be52)[_0x9964('0x29')](handleEntityNotFound(_0x7704d2,null))[_0x9964('0x29')](respondWithResult(_0x7704d2,null))[_0x9964('0x47')](handleError(_0x7704d2,null));};exports[_0x9964('0x4b')]=function(_0x3790b7,_0x54470b){return db[_0x9964('0x44')][_0x9964('0x4b')](_0x3790b7[_0x9964('0x4c')],{})[_0x9964('0x29')](respondWithResult(_0x54470b,0xc9))[_0x9964('0x47')](handleError(_0x54470b,null));};exports['update']=function(_0x22467f,_0xc2c17a){if(_0x22467f['body']['id']){delete _0x22467f[_0x9964('0x4c')]['id'];}return db['VoiceMailMessage'][_0x9964('0x4a')]({'where':{'id':_0x22467f[_0x9964('0x49')]['id']}})['then'](handleEntityNotFound(_0xc2c17a,null))[_0x9964('0x29')](saveUpdates(_0x22467f[_0x9964('0x4c')],null))[_0x9964('0x29')](respondWithResult(_0xc2c17a,null))[_0x9964('0x47')](handleError(_0xc2c17a,null));};exports[_0x9964('0x4d')]=function(_0x38ffce,_0x25258e){return db['VoiceMailMessage']['find']({'where':{'id':_0x38ffce[_0x9964('0x49')]['id']}})[_0x9964('0x29')](handleEntityNotFound(_0x25258e,null))[_0x9964('0x29')](removeEntity(_0x25258e,null))[_0x9964('0x47')](handleError(_0x25258e,null));};exports['download']=function(_0x55db0f,_0x3695cc,_0x5d8fba){return db[_0x9964('0x44')][_0x9964('0x4a')]({'where':{'id':_0x55db0f[_0x9964('0x49')]['id']},'attributes':['id',_0x9964('0x4e'),_0x9964('0x4f')]})[_0x9964('0x29')](handleEntityNotFound(_0x3695cc,null))[_0x9964('0x29')](function(_0xb8bd58){if(_0xb8bd58){if(!_0xb8bd58['recording']){throw new db[(_0x9964('0x50'))][(_0x9964('0x51'))]('VoiceMailMessage\x20not\x20found');}var _0x3cbf26={'Content-Type':_0x9964('0x52'),'Content-Disposition':'attachment'};if(_0xb8bd58[_0x9964('0x4f')]){_0x3cbf26['Content-Disposition']=_0x9964('0x53')+_0xb8bd58[_0x9964('0x4f')]+'.wav\x22';}_0x3695cc[_0x9964('0x24')](_0x3cbf26);return _0x3695cc[_0x9964('0x2d')](new Buffer(_0xb8bd58[_0x9964('0x4e')]));}})[_0x9964('0x47')](handleError(_0x3695cc,null));};
\ No newline at end of file
+var _0x928b=['filters','filter','type','VIRTUAL','merge','options','catch','params','length','includeAll','include','create','body','find','download','recording','msg_id','Sequelize','ValidationError','VoiceMailMessage\x20not\x20found','audio/wav','Content-Disposition','attachment;\x20filename=\x22','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','offset','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','index','VoiceMailMessage','rawAttributes','key','model','map','keys','intersection','query','attributes','fields','hasOwnProperty','nolimit','order','sort','where'];(function(_0x33554b,_0x48162b){var _0x256954=function(_0x185f66){while(--_0x185f66){_0x33554b['push'](_0x33554b['shift']());}};_0x256954(++_0x48162b);}(_0x928b,0x1c5));var _0xb928=function(_0x44598b,_0x1bfec7){_0x44598b=_0x44598b-0x0;var _0x557b2a=_0x928b[_0x44598b];return _0x557b2a;};'use strict';var emlformat=require(_0xb928('0x0'));var rimraf=require(_0xb928('0x1'));var zipdir=require(_0xb928('0x2'));var jsonpatch=require(_0xb928('0x3'));var rp=require(_0xb928('0x4'));var moment=require(_0xb928('0x5'));var BPromise=require(_0xb928('0x6'));var Mustache=require(_0xb928('0x7'));var util=require(_0xb928('0x8'));var path=require('path');var sox=require(_0xb928('0x9'));var csv=require(_0xb928('0xa'));var ejs=require(_0xb928('0xb'));var fs=require('fs');var fs_extra=require(_0xb928('0xc'));var _=require(_0xb928('0xd'));var squel=require(_0xb928('0xe'));var crypto=require(_0xb928('0xf'));var jsforce=require(_0xb928('0x10'));var deskjs=require(_0xb928('0x11'));var toCsv=require(_0xb928('0xa'));var querystring=require(_0xb928('0x12'));var Papa=require(_0xb928('0x13'));var Redis=require(_0xb928('0x14'));var authService=require(_0xb928('0x15'));var qs=require('../../components/parsers/qs');var as=require(_0xb928('0x16'));var hardwareService=require(_0xb928('0x17'));var logger=require(_0xb928('0x18'))('api');var utils=require('../../config/utils');var config=require(_0xb928('0x19'));var licenseUtil=require(_0xb928('0x1a'));var db=require(_0xb928('0x1b'))['db'];function respondWithStatusCode(_0x4a63a7,_0xecb15f){_0xecb15f=_0xecb15f||0xcc;return function(_0x3577b2){if(_0x3577b2){return _0x4a63a7[_0xb928('0x1c')](_0xecb15f);}return _0x4a63a7[_0xb928('0x1d')](_0xecb15f)[_0xb928('0x1e')]();};}function respondWithResult(_0x1356c6,_0x5ec6b4){_0x5ec6b4=_0x5ec6b4||0xc8;return function(_0x6ff6f6){if(_0x6ff6f6){return _0x1356c6[_0xb928('0x1d')](_0x5ec6b4)[_0xb928('0x1f')](_0x6ff6f6);}};}function respondWithFilteredResult(_0x1aa15e,_0x5d427e){return function(_0x2f008d){if(_0x2f008d){var _0x2bb5f6=typeof _0x5d427e['offset']===_0xb928('0x20')&&typeof _0x5d427e['limit']===_0xb928('0x20');var _0x108998=_0x2f008d['count'];var _0x3f858e=_0x2bb5f6?0x0:_0x5d427e[_0xb928('0x21')];var _0x14cabf=_0x2bb5f6?_0x2f008d[_0xb928('0x22')]:_0x5d427e[_0xb928('0x21')]+_0x5d427e[_0xb928('0x23')];var _0x37ae8c;if(_0x14cabf>=_0x108998){_0x14cabf=_0x108998;_0x37ae8c=0xc8;}else{_0x37ae8c=0xce;}_0x1aa15e['status'](_0x37ae8c);return _0x1aa15e[_0xb928('0x24')](_0xb928('0x25'),_0x3f858e+'-'+_0x14cabf+'/'+_0x108998)[_0xb928('0x1f')](_0x2f008d);}return null;};}function patchUpdates(_0x411873){return function(_0x2c394d){try{jsonpatch[_0xb928('0x26')](_0x2c394d,_0x411873,!![]);}catch(_0x31de75){return BPromise[_0xb928('0x27')](_0x31de75);}return _0x2c394d[_0xb928('0x28')]();};}function saveUpdates(_0x1fb99c,_0x4873d0){return function(_0x55d773){if(_0x55d773){return _0x55d773[_0xb928('0x29')](_0x1fb99c)[_0xb928('0x2a')](function(_0x2dc5e9){return _0x2dc5e9;});}return null;};}function removeEntity(_0x5e1fa5,_0x7af8c2){return function(_0x2b0b4f){if(_0x2b0b4f){return _0x2b0b4f[_0xb928('0x2b')]()[_0xb928('0x2a')](function(){_0x5e1fa5[_0xb928('0x1d')](0xcc)[_0xb928('0x1e')]();});}};}function handleEntityNotFound(_0x304514,_0x25a326){return function(_0x3b12b1){if(!_0x3b12b1){_0x304514['sendStatus'](0x194);}return _0x3b12b1;};}function handleError(_0x5aba81,_0x1a3495){_0x1a3495=_0x1a3495||0x1f4;return function(_0x38f5cc){logger[_0xb928('0x2c')](_0x38f5cc['stack']);if(_0x38f5cc[_0xb928('0x2d')]){delete _0x38f5cc[_0xb928('0x2d')];}_0x5aba81[_0xb928('0x1d')](_0x1a3495)[_0xb928('0x2e')](_0x38f5cc);};}exports[_0xb928('0x2f')]=function(_0x33126f,_0x68967a){var _0x5aba0d={},_0x5d6295={},_0xd91f65={'count':0x0,'rows':[]};var _0x24e2fd=_['map'](db[_0xb928('0x30')][_0xb928('0x31')],function(_0x27b991){return{'name':_0x27b991['fieldName'],'type':_0x27b991['type'][_0xb928('0x32')]};});_0x5d6295[_0xb928('0x33')]=_['differenceBy'](_[_0xb928('0x34')](_0x24e2fd,_0xb928('0x2d')),[_0xb928('0x2d')]);_0x5d6295['query']=_[_0xb928('0x35')](_0x33126f['query']);_0x5d6295['filters']=_[_0xb928('0x36')](_0x5d6295['model'],_0x5d6295[_0xb928('0x37')]);_0x5aba0d[_0xb928('0x38')]=_[_0xb928('0x36')](_0x5d6295[_0xb928('0x33')],qs[_0xb928('0x39')](_0x33126f[_0xb928('0x37')][_0xb928('0x39')]));_0x5aba0d['attributes']=_0x5aba0d[_0xb928('0x38')]['length']?_0x5aba0d[_0xb928('0x38')]:_0x5d6295[_0xb928('0x33')];if(!_0x33126f['query'][_0xb928('0x3a')](_0xb928('0x3b'))){_0x5aba0d[_0xb928('0x23')]=qs[_0xb928('0x23')](_0x33126f[_0xb928('0x37')][_0xb928('0x23')]);_0x5aba0d[_0xb928('0x21')]=qs['offset'](_0x33126f['query']['offset']);}_0x5aba0d[_0xb928('0x3c')]=qs[_0xb928('0x3d')](_0x33126f['query'][_0xb928('0x3d')]);_0x5aba0d[_0xb928('0x3e')]=qs['filters'](_['pick'](_0x33126f[_0xb928('0x37')],_0x5d6295[_0xb928('0x3f')]),_0x24e2fd);if(_0x33126f[_0xb928('0x37')][_0xb928('0x40')]){_0x5aba0d[_0xb928('0x3e')]=_['merge'](_0x5aba0d[_0xb928('0x3e')],{'$or':_[_0xb928('0x34')](_0x24e2fd,function(_0x4443f9){if(_0x4443f9[_0xb928('0x41')]!==_0xb928('0x42')){var _0x8f0717={};_0x8f0717[_0x4443f9['name']]={'$like':'%'+_0x33126f[_0xb928('0x37')][_0xb928('0x40')]+'%'};return _0x8f0717;}})});}_0x5aba0d=_[_0xb928('0x43')]({},_0x5aba0d,_0x33126f[_0xb928('0x44')]);var _0x26d9f6={'where':_0x5aba0d[_0xb928('0x3e')]};return db[_0xb928('0x30')][_0xb928('0x22')](_0x26d9f6)[_0xb928('0x2a')](function(_0x2c8abc){_0xd91f65[_0xb928('0x22')]=_0x2c8abc;if(_0x33126f['query']['includeAll']){_0x5aba0d['include']=[{'all':!![]}];}return db['VoiceMailMessage']['findAll'](_0x5aba0d);})[_0xb928('0x2a')](function(_0x4de6de){_0xd91f65['rows']=_0x4de6de;return _0xd91f65;})['then'](respondWithFilteredResult(_0x68967a,_0x5aba0d))[_0xb928('0x45')](handleError(_0x68967a,null));};exports['show']=function(_0x2f2ed5,_0x24813f){var _0x453693={'raw':!![],'where':{'id':_0x2f2ed5[_0xb928('0x46')]['id']}},_0x2361e3={};_0x2361e3[_0xb928('0x33')]=_['keys'](db[_0xb928('0x30')][_0xb928('0x31')]);_0x2361e3[_0xb928('0x37')]=_[_0xb928('0x35')](_0x2f2ed5[_0xb928('0x37')]);_0x2361e3[_0xb928('0x3f')]=_[_0xb928('0x36')](_0x2361e3[_0xb928('0x33')],_0x2361e3[_0xb928('0x37')]);_0x453693['attributes']=_[_0xb928('0x36')](_0x2361e3[_0xb928('0x33')],qs[_0xb928('0x39')](_0x2f2ed5[_0xb928('0x37')][_0xb928('0x39')]));_0x453693[_0xb928('0x38')]=_0x453693[_0xb928('0x38')][_0xb928('0x47')]?_0x453693['attributes']:_0x2361e3[_0xb928('0x33')];if(_0x2f2ed5['query'][_0xb928('0x48')]){_0x453693[_0xb928('0x49')]=[{'all':!![]}];}_0x453693=_[_0xb928('0x43')]({},_0x453693,_0x2f2ed5[_0xb928('0x44')]);return db[_0xb928('0x30')]['find'](_0x453693)[_0xb928('0x2a')](handleEntityNotFound(_0x24813f,null))[_0xb928('0x2a')](respondWithResult(_0x24813f,null))[_0xb928('0x45')](handleError(_0x24813f,null));};exports['create']=function(_0x35cb7c,_0x24f5e2){return db['VoiceMailMessage'][_0xb928('0x4a')](_0x35cb7c['body'],{})[_0xb928('0x2a')](respondWithResult(_0x24f5e2,0xc9))['catch'](handleError(_0x24f5e2,null));};exports[_0xb928('0x29')]=function(_0x441f1b,_0x45a2c5){if(_0x441f1b[_0xb928('0x4b')]['id']){delete _0x441f1b[_0xb928('0x4b')]['id'];}return db[_0xb928('0x30')]['find']({'where':{'id':_0x441f1b[_0xb928('0x46')]['id']}})[_0xb928('0x2a')](handleEntityNotFound(_0x45a2c5,null))['then'](saveUpdates(_0x441f1b[_0xb928('0x4b')],null))[_0xb928('0x2a')](respondWithResult(_0x45a2c5,null))[_0xb928('0x45')](handleError(_0x45a2c5,null));};exports[_0xb928('0x2b')]=function(_0x282fd1,_0x4c77d1){return db[_0xb928('0x30')][_0xb928('0x4c')]({'where':{'id':_0x282fd1[_0xb928('0x46')]['id']}})[_0xb928('0x2a')](handleEntityNotFound(_0x4c77d1,null))[_0xb928('0x2a')](removeEntity(_0x4c77d1,null))[_0xb928('0x45')](handleError(_0x4c77d1,null));};exports[_0xb928('0x4d')]=function(_0x49ca9a,_0x8a86a3,_0x3fbf2f){return db[_0xb928('0x30')][_0xb928('0x4c')]({'where':{'id':_0x49ca9a[_0xb928('0x46')]['id']},'attributes':['id',_0xb928('0x4e'),_0xb928('0x4f')]})['then'](handleEntityNotFound(_0x8a86a3,null))[_0xb928('0x2a')](function(_0x492e51){if(_0x492e51){if(!_0x492e51['recording']){throw new db[(_0xb928('0x50'))][(_0xb928('0x51'))](_0xb928('0x52'));}var _0x4dbd78={'Content-Type':_0xb928('0x53'),'Content-Disposition':'attachment'};if(_0x492e51['msg_id']){_0x4dbd78[_0xb928('0x54')]=_0xb928('0x55')+_0x492e51[_0xb928('0x4f')]+'.wav\x22';}_0x8a86a3[_0xb928('0x24')](_0x4dbd78);return _0x8a86a3[_0xb928('0x2e')](new Buffer(_0x492e51[_0xb928('0x4e')]));}})[_0xb928('0x45')](handleError(_0x8a86a3,null));};
\ No newline at end of file
index 2c683e2..b9738fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd251=['dir','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','VoiceMailMessage'];(function(_0x535963,_0x326515){var _0x3975f6=function(_0x2e624f){while(--_0x2e624f){_0x535963['push'](_0x535963['shift']());}};_0x3975f6(++_0x326515);}(_0xd251,0x1c9));var _0x1d25=function(_0x13fbb1,_0x32ccad){_0x13fbb1=_0x13fbb1-0x0;var _0x4d8d28=_0xd251[_0x13fbb1];return _0x4d8d28;};'use strict';var _=require(_0x1d25('0x0'));var util=require(_0x1d25('0x1'));var logger=require(_0x1d25('0x2'))('api');var moment=require('moment');var BPromise=require(_0x1d25('0x3'));var rp=require(_0x1d25('0x4'));var fs=require('fs');var path=require(_0x1d25('0x5'));var rimraf=require(_0x1d25('0x6'));var config=require(_0x1d25('0x7'));var attributes=require('./voiceMailMessage.attributes');module[_0x1d25('0x8')]=function(_0x461757,_0x219ced){return _0x461757[_0x1d25('0x9')](_0x1d25('0xa'),attributes,{'tableName':'voice_voicemail_messages','paranoid':![],'indexes':[{'name':_0x1d25('0xb'),'fields':[_0x1d25('0xb')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x22cd=['bluebird','request-promise','rimraf','../../config/environment','define','VoiceMailMessage','voice_voicemail_messages','dir','lodash','../../config/logger','api','moment'];(function(_0x57d584,_0x5911a2){var _0x58e36f=function(_0x36d654){while(--_0x36d654){_0x57d584['push'](_0x57d584['shift']());}};_0x58e36f(++_0x5911a2);}(_0x22cd,0x1e8));var _0xd22c=function(_0x2b8722,_0x50d540){_0x2b8722=_0x2b8722-0x0;var _0x20c180=_0x22cd[_0x2b8722];return _0x20c180;};'use strict';var _=require(_0xd22c('0x0'));var util=require('util');var logger=require(_0xd22c('0x1'))(_0xd22c('0x2'));var moment=require(_0xd22c('0x3'));var BPromise=require(_0xd22c('0x4'));var rp=require(_0xd22c('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd22c('0x6'));var config=require(_0xd22c('0x7'));var attributes=require('./voiceMailMessage.attributes');module['exports']=function(_0x3e87b8,_0x28c527){return _0x3e87b8[_0xd22c('0x8')](_0xd22c('0x9'),attributes,{'tableName':_0xd22c('0xa'),'paranoid':![],'indexes':[{'name':'dir','fields':[_0xd22c('0xb')]}],'timestamps':![]});};
\ No newline at end of file
index 33c1db7..ffd338f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88da=['bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','stringify','error','message','VoiceMailMessage,\x20%s,\x20%s','catch','lodash','util','moment'];(function(_0x2e30d3,_0x4d45b1){var _0x77fe0a=function(_0xd158cf){while(--_0xd158cf){_0x2e30d3['push'](_0x2e30d3['shift']());}};_0x77fe0a(++_0x4d45b1);}(_0x88da,0x1b2));var _0xa88d=function(_0x54a42c,_0x37bfaf){_0x54a42c=_0x54a42c-0x0;var _0x27303b=_0x88da[_0x54a42c];return _0x27303b;};'use strict';var _=require(_0xa88d('0x0'));var util=require(_0xa88d('0x1'));var moment=require(_0xa88d('0x2'));var BPromise=require(_0xa88d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa88d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa88d('0x5'));var logger=require(_0xa88d('0x6'))('rpc');var config=require(_0xa88d('0x7'));var jayson=require(_0xa88d('0x8'));var client=jayson[_0xa88d('0x9')][_0xa88d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1a85f4,_0x1d03b7,_0x5495cf){return new BPromise(function(_0x1cfa89,_0x2faa1e){return client['request'](_0x1a85f4,_0x5495cf)[_0xa88d('0xb')](function(_0x1e4b01){logger[_0xa88d('0xc')]('VoiceMailMessage,\x20%s,\x20%s',_0x1d03b7,_0xa88d('0xd'));logger['debug']('VoiceMailMessage,\x20%s,\x20%s,\x20%s',_0x1d03b7,_0xa88d('0xd'),JSON[_0xa88d('0xe')](_0x1e4b01));if(_0x1e4b01[_0xa88d('0xf')]){if(_0x1e4b01['error']['code']===0x1f4){logger['error']('VoiceMailMessage,\x20%s,\x20%s',_0x1d03b7,_0x1e4b01['error'][_0xa88d('0x10')]);return _0x2faa1e(_0x1e4b01[_0xa88d('0xf')][_0xa88d('0x10')]);}logger['error'](_0xa88d('0x11'),_0x1d03b7,_0x1e4b01[_0xa88d('0xf')][_0xa88d('0x10')]);return _0x1cfa89(_0x1e4b01[_0xa88d('0xf')][_0xa88d('0x10')]);}else{logger[_0xa88d('0xc')](_0xa88d('0x11'),_0x1d03b7,'request\x20sent');_0x1cfa89(_0x1e4b01['result'][_0xa88d('0x10')]);}})[_0xa88d('0x12')](function(_0x2436f2){logger[_0xa88d('0xf')](_0xa88d('0x11'),_0x1d03b7,_0x2436f2);_0x2faa1e(_0x2436f2);});});}
\ No newline at end of file
+var _0xab89=['http','request','then','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client'];(function(_0x36a403,_0x210a0b){var _0x50fb97=function(_0x4609e7){while(--_0x4609e7){_0x36a403['push'](_0x36a403['shift']());}};_0x50fb97(++_0x210a0b);}(_0xab89,0xac));var _0x9ab8=function(_0x29d915,_0x54a040){_0x29d915=_0x29d915-0x0;var _0x160f86=_0xab89[_0x29d915];return _0x160f86;};'use strict';var _=require(_0x9ab8('0x0'));var util=require(_0x9ab8('0x1'));var moment=require(_0x9ab8('0x2'));var BPromise=require(_0x9ab8('0x3'));var rs=require(_0x9ab8('0x4'));var fs=require('fs');var Redis=require(_0x9ab8('0x5'));var db=require(_0x9ab8('0x6'))['db'];var utils=require(_0x9ab8('0x7'));var logger=require('../../config/logger')(_0x9ab8('0x8'));var config=require(_0x9ab8('0x9'));var jayson=require(_0x9ab8('0xa'));var client=jayson[_0x9ab8('0xb')][_0x9ab8('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4f0f63,_0x47b363,_0x54e9d1){return new BPromise(function(_0x50fcd0,_0x23ac79){return client[_0x9ab8('0xd')](_0x4f0f63,_0x54e9d1)[_0x9ab8('0xe')](function(_0x2fb129){logger['info'](_0x9ab8('0xf'),_0x47b363,_0x9ab8('0x10'));logger['debug'](_0x9ab8('0x11'),_0x47b363,_0x9ab8('0x10'),JSON[_0x9ab8('0x12')](_0x2fb129));if(_0x2fb129[_0x9ab8('0x13')]){if(_0x2fb129['error']['code']===0x1f4){logger[_0x9ab8('0x13')]('VoiceMailMessage,\x20%s,\x20%s',_0x47b363,_0x2fb129['error'][_0x9ab8('0x14')]);return _0x23ac79(_0x2fb129[_0x9ab8('0x13')][_0x9ab8('0x14')]);}logger[_0x9ab8('0x13')](_0x9ab8('0xf'),_0x47b363,_0x2fb129['error'][_0x9ab8('0x14')]);return _0x50fcd0(_0x2fb129[_0x9ab8('0x13')][_0x9ab8('0x14')]);}else{logger[_0x9ab8('0x15')]('VoiceMailMessage,\x20%s,\x20%s',_0x47b363,_0x9ab8('0x10'));_0x50fcd0(_0x2fb129[_0x9ab8('0x16')][_0x9ab8('0x14')]);}})['catch'](function(_0x2e5b25){logger['error'](_0x9ab8('0xf'),_0x47b363,_0x2e5b25);_0x23ac79(_0x2e5b25);});});}
\ No newline at end of file
index a9f9ea8..3ff0b24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87bf=['path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMusicOnHold.controller','get','/:id','show','/:id/sounds','isAuthenticated','getSounds','post','put','update','delete','destroy','removeSound','exports','multer','util'];(function(_0x215c84,_0x54ff9d){var _0x524d4c=function(_0x368415){while(--_0x368415){_0x215c84['push'](_0x215c84['shift']());}};_0x524d4c(++_0x54ff9d);}(_0x87bf,0x9f));var _0xf87b=function(_0x434543,_0x2fd498){_0x434543=_0x434543-0x0;var _0x3e6749=_0x87bf[_0x434543];return _0x3e6749;};'use strict';var multer=require(_0xf87b('0x0'));var util=require(_0xf87b('0x1'));var path=require(_0xf87b('0x2'));var timeout=require('connect-timeout');var express=require(_0xf87b('0x3'));var router=express[_0xf87b('0x4')]();var fs_extra=require(_0xf87b('0x5'));var auth=require(_0xf87b('0x6'));var interaction=require(_0xf87b('0x7'));var config=require(_0xf87b('0x8'));var controller=require(_0xf87b('0x9'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xf87b('0xa')](_0xf87b('0xb'),auth['isAuthenticated'](),controller[_0xf87b('0xc')]);router[_0xf87b('0xa')](_0xf87b('0xd'),auth[_0xf87b('0xe')](),controller[_0xf87b('0xf')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xf87b('0x10')](_0xf87b('0xd'),auth[_0xf87b('0xe')](),controller['addSound']);router[_0xf87b('0x11')](_0xf87b('0xb'),auth['isAuthenticated'](),controller[_0xf87b('0x12')]);router[_0xf87b('0x13')](_0xf87b('0xb'),auth['isAuthenticated'](),controller[_0xf87b('0x14')]);router[_0xf87b('0x13')]('/:id/sounds/:id2',auth['isAuthenticated'](),controller[_0xf87b('0x15')]);module[_0xf87b('0x16')]=router;
\ No newline at end of file
+var _0x8157=['multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','getSounds','post','/:id/sounds','addSound','put','update','delete','/:id/sounds/:id2','exports'];(function(_0xd299c3,_0x4ba0f1){var _0x376574=function(_0xc585f){while(--_0xc585f){_0xd299c3['push'](_0xd299c3['shift']());}};_0x376574(++_0x4ba0f1);}(_0x8157,0x17a));var _0x7815=function(_0xa388a2,_0x40bde6){_0xa388a2=_0xa388a2-0x0;var _0x7ce7f6=_0x8157[_0xa388a2];return _0x7ce7f6;};'use strict';var multer=require(_0x7815('0x0'));var util=require(_0x7815('0x1'));var path=require(_0x7815('0x2'));var timeout=require('connect-timeout');var express=require(_0x7815('0x3'));var router=express[_0x7815('0x4')]();var fs_extra=require(_0x7815('0x5'));var auth=require(_0x7815('0x6'));var interaction=require(_0x7815('0x7'));var config=require(_0x7815('0x8'));var controller=require('./voiceMusicOnHold.controller');router[_0x7815('0x9')]('/',auth[_0x7815('0xa')](),controller['index']);router[_0x7815('0x9')](_0x7815('0xb'),auth[_0x7815('0xa')](),controller['show']);router[_0x7815('0x9')]('/:id/sounds',auth[_0x7815('0xa')](),controller[_0x7815('0xc')]);router[_0x7815('0xd')]('/',auth[_0x7815('0xa')](),controller['create']);router['post'](_0x7815('0xe'),auth[_0x7815('0xa')](),controller[_0x7815('0xf')]);router[_0x7815('0x10')]('/:id',auth[_0x7815('0xa')](),controller[_0x7815('0x11')]);router[_0x7815('0x12')](_0x7815('0xb'),auth['isAuthenticated'](),controller['destroy']);router[_0x7815('0x12')](_0x7815('0x13'),auth[_0x7815('0xa')](),controller['removeSound']);module[_0x7815('0x14')]=router;
\ No newline at end of file
index 8e3d82a..7b47b11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e95=['TIMESTAMP','BOOLEAN','exports','STRING','name','custom','files','mp3nb','quietmp3nb','mp3','alpha'];(function(_0x47b58b,_0x41a189){var _0x46bebe=function(_0x22bbfa){while(--_0x22bbfa){_0x47b58b['push'](_0x47b58b['shift']());}};_0x46bebe(++_0x41a189);}(_0x7e95,0x86));var _0x57e9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7e95[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module[_0x57e9('0x0')]={'name':{'type':Sequelize[_0x57e9('0x1')],'allowNull':![],'unique':_0x57e9('0x2')},'mode':{'type':Sequelize['ENUM'](_0x57e9('0x3'),_0x57e9('0x4'),_0x57e9('0x5'),_0x57e9('0x6'),'quietmp3',_0x57e9('0x7')),'allowNull':!![],'defaultValue':_0x57e9('0x4')},'directory':{'type':Sequelize[_0x57e9('0x1')],'allowNull':!![]},'application':{'type':Sequelize[_0x57e9('0x1')],'allowNull':!![]},'digit':{'type':Sequelize[_0x57e9('0x1')],'allowNull':!![]},'sort':{'type':Sequelize[_0x57e9('0x1')],'allowNull':!![],'defaultValue':_0x57e9('0x8')},'format':{'type':Sequelize[_0x57e9('0x1')],'allowNull':!![]},'stamp':{'type':_0x57e9('0x9')},'defaultEntry':{'type':Sequelize[_0x57e9('0xa')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x02f6=['mp3nb','quietmp3','mp3','alpha','TIMESTAMP','BOOLEAN','sequelize','exports','STRING','ENUM','custom','files'];(function(_0x325de2,_0x2546b7){var _0x173fad=function(_0x1043b4){while(--_0x1043b4){_0x325de2['push'](_0x325de2['shift']());}};_0x173fad(++_0x2546b7);}(_0x02f6,0x186));var _0x602f=function(_0x479509,_0x1daf8a){_0x479509=_0x479509-0x0;var _0x382da8=_0x02f6[_0x479509];return _0x382da8;};'use strict';var Sequelize=require(_0x602f('0x0'));module[_0x602f('0x1')]={'name':{'type':Sequelize[_0x602f('0x2')],'allowNull':![],'unique':'name'},'mode':{'type':Sequelize[_0x602f('0x3')](_0x602f('0x4'),_0x602f('0x5'),_0x602f('0x6'),'quietmp3nb',_0x602f('0x7'),_0x602f('0x8')),'allowNull':!![],'defaultValue':'files'},'directory':{'type':Sequelize['STRING'],'allowNull':!![]},'application':{'type':Sequelize[_0x602f('0x2')],'allowNull':!![]},'digit':{'type':Sequelize[_0x602f('0x2')],'allowNull':!![]},'sort':{'type':Sequelize[_0x602f('0x2')],'allowNull':!![],'defaultValue':_0x602f('0x9')},'format':{'type':Sequelize[_0x602f('0x2')],'allowNull':!![]},'stamp':{'type':_0x602f('0xa')},'defaultEntry':{'type':Sequelize[_0x602f('0xb')],'defaultValue':0x0}};
\ No newline at end of file
index 4430bc6..77095f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bf6=['eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','destroy','get','MusicOnHolds','UserProfileResource','stack','name','index','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','VoiceMusicOnHold','includeAll','include','findAll','catch','show','params','find','body','create','sequelize','transaction','files','directory','join','server/files/moh','mode','mkdirSync','0777','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','forEach','unlinkSync','rmdirSync','ValidationError','addSound','Sound','converted_format','createdAt','root','server/files/sounds/converted','%s.%s','basename','save_name','extname','format','message','removeSound','findOne','id2','Sequelize','getSounds','order'];(function(_0x4c7a5b,_0x453a23){var _0x3121f2=function(_0x4518e5){while(--_0x4518e5){_0x4c7a5b['push'](_0x4c7a5b['shift']());}};_0x3121f2(++_0x453a23);}(_0x8bf6,0x70));var _0x68bf=function(_0x594802,_0x572fbc){_0x594802=_0x594802-0x0;var _0x4901d9=_0x8bf6[_0x594802];return _0x4901d9;};'use strict';var emlformat=require(_0x68bf('0x0'));var rimraf=require(_0x68bf('0x1'));var zipdir=require(_0x68bf('0x2'));var jsonpatch=require(_0x68bf('0x3'));var rp=require('request-promise');var moment=require(_0x68bf('0x4'));var BPromise=require(_0x68bf('0x5'));var Mustache=require(_0x68bf('0x6'));var util=require('util');var path=require('path');var sox=require(_0x68bf('0x7'));var csv=require(_0x68bf('0x8'));var ejs=require(_0x68bf('0x9'));var fs=require('fs');var fs_extra=require(_0x68bf('0xa'));var _=require('lodash');var squel=require(_0x68bf('0xb'));var crypto=require(_0x68bf('0xc'));var jsforce=require(_0x68bf('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x68bf('0x8'));var querystring=require('querystring');var Papa=require(_0x68bf('0xe'));var Redis=require('ioredis');var authService=require(_0x68bf('0xf'));var qs=require(_0x68bf('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x68bf('0x11'));var logger=require(_0x68bf('0x12'))('api');var utils=require(_0x68bf('0x13'));var config=require(_0x68bf('0x14'));var licenseUtil=require(_0x68bf('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x58fd04,_0x28b00b){_0x28b00b=_0x28b00b||0xcc;return function(_0x1c5f2){if(_0x1c5f2){return _0x58fd04[_0x68bf('0x16')](_0x28b00b);}return _0x58fd04[_0x68bf('0x17')](_0x28b00b)[_0x68bf('0x18')]();};}function respondWithResult(_0x1cf9cc,_0x2a736f){_0x2a736f=_0x2a736f||0xc8;return function(_0x1cee04){if(_0x1cee04){return _0x1cf9cc[_0x68bf('0x17')](_0x2a736f)[_0x68bf('0x19')](_0x1cee04);}};}function respondWithFilteredResult(_0x5ce530,_0x1298f5){return function(_0xd6ece8){if(_0xd6ece8){var _0x59a807=typeof _0x1298f5[_0x68bf('0x1a')]==='undefined'&&typeof _0x1298f5[_0x68bf('0x1b')]===_0x68bf('0x1c');var _0x2e4eb8=_0xd6ece8[_0x68bf('0x1d')];var _0x5955ad=_0x59a807?0x0:_0x1298f5[_0x68bf('0x1a')];var _0x1ae362=_0x59a807?_0xd6ece8[_0x68bf('0x1d')]:_0x1298f5[_0x68bf('0x1a')]+_0x1298f5[_0x68bf('0x1b')];var _0x3be94a;if(_0x1ae362>=_0x2e4eb8){_0x1ae362=_0x2e4eb8;_0x3be94a=0xc8;}else{_0x3be94a=0xce;}_0x5ce530['status'](_0x3be94a);return _0x5ce530['set'](_0x68bf('0x1e'),_0x5955ad+'-'+_0x1ae362+'/'+_0x2e4eb8)[_0x68bf('0x19')](_0xd6ece8);}return null;};}function patchUpdates(_0x21563f){return function(_0x4fdd48){try{jsonpatch[_0x68bf('0x1f')](_0x4fdd48,_0x21563f,!![]);}catch(_0x252f84){return BPromise[_0x68bf('0x20')](_0x252f84);}return _0x4fdd48[_0x68bf('0x21')]();};}function saveUpdates(_0x40a015,_0x4cf5f3){return function(_0x23b4ae){if(_0x23b4ae){return _0x23b4ae[_0x68bf('0x22')](_0x40a015)[_0x68bf('0x23')](function(_0x5d0fcc){return _0x5d0fcc;});}return null;};}function removeEntity(_0x1f6709,_0x557f1b){return function(_0x3425ea){if(_0x3425ea){return _0x3425ea[_0x68bf('0x24')]()[_0x68bf('0x23')](function(){var _0x4999aa=_0x3425ea[_0x68bf('0x25')]({'plain':!![]});var _0x51b375=_0x68bf('0x26');return db[_0x68bf('0x27')][_0x68bf('0x24')]({'where':{'type':_0x51b375,'resourceId':_0x4999aa['id']}})[_0x68bf('0x23')](function(){return _0x3425ea;});})[_0x68bf('0x23')](function(){_0x1f6709[_0x68bf('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x128f30,_0x238819){return function(_0x30a9b3){if(!_0x30a9b3){_0x128f30['sendStatus'](0x194);}return _0x30a9b3;};}function handleError(_0x515978,_0xcacdd5){_0xcacdd5=_0xcacdd5||0x1f4;return function(_0x1c7d7b){logger['error'](_0x1c7d7b[_0x68bf('0x28')]);if(_0x1c7d7b[_0x68bf('0x29')]){delete _0x1c7d7b[_0x68bf('0x29')];}_0x515978['status'](_0xcacdd5)['send'](_0x1c7d7b);};}exports[_0x68bf('0x2a')]=function(_0x1cffd6,_0x7711da){var _0x1f363a={},_0x122125={},_0x35dd39={'count':0x0,'rows':[]};var _0x14b54a=_[_0x68bf('0x2b')](db['VoiceMusicOnHold'][_0x68bf('0x2c')],function(_0x13c4b2){return{'name':_0x13c4b2[_0x68bf('0x2d')],'type':_0x13c4b2[_0x68bf('0x2e')]['key']};});_0x122125[_0x68bf('0x2f')]=_[_0x68bf('0x2b')](_0x14b54a,_0x68bf('0x29'));_0x122125[_0x68bf('0x30')]=_[_0x68bf('0x31')](_0x1cffd6[_0x68bf('0x30')]);_0x122125[_0x68bf('0x32')]=_[_0x68bf('0x33')](_0x122125[_0x68bf('0x2f')],_0x122125['query']);_0x1f363a[_0x68bf('0x34')]=_[_0x68bf('0x33')](_0x122125[_0x68bf('0x2f')],qs[_0x68bf('0x35')](_0x1cffd6['query'][_0x68bf('0x35')]));_0x1f363a[_0x68bf('0x34')]=_0x1f363a[_0x68bf('0x34')][_0x68bf('0x36')]?_0x1f363a[_0x68bf('0x34')]:_0x122125[_0x68bf('0x2f')];if(!_0x1cffd6[_0x68bf('0x30')][_0x68bf('0x37')](_0x68bf('0x38'))){_0x1f363a[_0x68bf('0x1b')]=qs[_0x68bf('0x1b')](_0x1cffd6[_0x68bf('0x30')][_0x68bf('0x1b')]);_0x1f363a[_0x68bf('0x1a')]=qs['offset'](_0x1cffd6[_0x68bf('0x30')][_0x68bf('0x1a')]);}_0x1f363a['order']=qs['sort'](_0x1cffd6[_0x68bf('0x30')]['sort']);delete _0x1cffd6['query'][_0x68bf('0x39')];_0x1f363a[_0x68bf('0x3a')]=qs[_0x68bf('0x32')](_[_0x68bf('0x3b')](_0x1cffd6[_0x68bf('0x30')],_0x122125[_0x68bf('0x32')]),_0x14b54a);if(_0x1cffd6[_0x68bf('0x30')][_0x68bf('0x3c')]){_0x1f363a[_0x68bf('0x3a')]=_[_0x68bf('0x3d')](_0x1f363a[_0x68bf('0x3a')],{'$or':_['map'](_0x14b54a,function(_0x51092b){if(_0x51092b[_0x68bf('0x2e')]!=='VIRTUAL'){var _0x534541={};_0x534541[_0x51092b[_0x68bf('0x29')]]={'$like':'%'+_0x1cffd6['query']['filter']+'%'};return _0x534541;}})});}_0x1f363a=_['merge']({},_0x1f363a,_0x1cffd6[_0x68bf('0x3e')]);var _0x6e7644={'where':_0x1f363a[_0x68bf('0x3a')]};return db[_0x68bf('0x3f')][_0x68bf('0x1d')](_0x6e7644)['then'](function(_0x3b48f5){_0x35dd39[_0x68bf('0x1d')]=_0x3b48f5;if(_0x1cffd6['query'][_0x68bf('0x40')]){_0x1f363a[_0x68bf('0x41')]=[{'all':!![]}];}return db[_0x68bf('0x3f')][_0x68bf('0x42')](_0x1f363a);})[_0x68bf('0x23')](function(_0x53395a){_0x35dd39['rows']=_0x53395a;return _0x35dd39;})[_0x68bf('0x23')](respondWithFilteredResult(_0x7711da,_0x1f363a))[_0x68bf('0x43')](handleError(_0x7711da,null));};exports[_0x68bf('0x44')]=function(_0x1ad2d5,_0x404ef2){var _0x5adb5e={'raw':![],'where':{'id':_0x1ad2d5[_0x68bf('0x45')]['id']}},_0x81cb41={};_0x81cb41[_0x68bf('0x2f')]=_[_0x68bf('0x31')](db[_0x68bf('0x3f')][_0x68bf('0x2c')]);_0x81cb41['query']=_[_0x68bf('0x31')](_0x1ad2d5['query']);_0x81cb41[_0x68bf('0x32')]=_[_0x68bf('0x33')](_0x81cb41[_0x68bf('0x2f')],_0x81cb41[_0x68bf('0x30')]);_0x5adb5e[_0x68bf('0x34')]=_[_0x68bf('0x33')](_0x81cb41[_0x68bf('0x2f')],qs[_0x68bf('0x35')](_0x1ad2d5['query'][_0x68bf('0x35')]));_0x5adb5e[_0x68bf('0x34')]=_0x5adb5e[_0x68bf('0x34')]['length']?_0x5adb5e[_0x68bf('0x34')]:_0x81cb41['model'];if(_0x1ad2d5[_0x68bf('0x30')][_0x68bf('0x40')]){_0x5adb5e[_0x68bf('0x41')]=[{'all':!![]}];}_0x5adb5e=_[_0x68bf('0x3d')]({},_0x5adb5e,_0x1ad2d5[_0x68bf('0x3e')]);return db['VoiceMusicOnHold'][_0x68bf('0x46')](_0x5adb5e)[_0x68bf('0x23')](handleEntityNotFound(_0x404ef2,null))[_0x68bf('0x23')](respondWithResult(_0x404ef2,null))[_0x68bf('0x43')](handleError(_0x404ef2,null));};exports[_0x68bf('0x22')]=function(_0x3ca997,_0x230d5a){if(_0x3ca997['body']['id']){delete _0x3ca997[_0x68bf('0x47')]['id'];}return db[_0x68bf('0x3f')][_0x68bf('0x46')]({'where':{'id':_0x3ca997[_0x68bf('0x45')]['id']}})[_0x68bf('0x23')](handleEntityNotFound(_0x230d5a,null))[_0x68bf('0x23')](saveUpdates(_0x3ca997[_0x68bf('0x47')],null))['then'](respondWithResult(_0x230d5a,null))[_0x68bf('0x43')](handleError(_0x230d5a,null));};exports[_0x68bf('0x48')]=function(_0x43ea1d,_0x154c2d,_0x58fba3){return db[_0x68bf('0x49')][_0x68bf('0x4a')](function(_0x533e64){if(_0x43ea1d[_0x68bf('0x47')]['mode']===_0x68bf('0x4b')){_0x43ea1d['body'][_0x68bf('0x4c')]=path[_0x68bf('0x4d')](config['root'],_0x68bf('0x4e'),_0x43ea1d['body'][_0x68bf('0x29')]);}return db[_0x68bf('0x3f')][_0x68bf('0x48')](_0x43ea1d[_0x68bf('0x47')],{'transaction':_0x533e64})[_0x68bf('0x23')](function(_0x4c91d9){if(_0x43ea1d[_0x68bf('0x47')][_0x68bf('0x4f')]===_0x68bf('0x4b')){fs[_0x68bf('0x50')](_0x4c91d9[_0x68bf('0x4c')],parseInt(_0x68bf('0x51'),0x8));}var _0x590913=_0x43ea1d['user'][_0x68bf('0x25')]({'plain':!![]});if(!_0x590913)throw new Error(_0x68bf('0x52'));if(_0x590913[_0x68bf('0x53')]===_0x68bf('0x54')){var _0x13523f=_0x4c91d9[_0x68bf('0x25')]({'plain':!![]});return db[_0x68bf('0x55')]['find']({'where':{'name':'MusicOnHolds','userProfileId':_0x590913[_0x68bf('0x56')]},'raw':!![]})[_0x68bf('0x23')](function(_0x71fab1){if(_0x71fab1&&_0x71fab1[_0x68bf('0x57')]===0x0){return db['UserProfileResource'][_0x68bf('0x48')]({'name':_0x13523f['name'],'resourceId':_0x13523f['id'],'type':_0x71fab1[_0x68bf('0x29')],'sectionId':_0x71fab1['id']},{})[_0x68bf('0x23')](function(){return _0x4c91d9;});}else{return _0x4c91d9;}})[_0x68bf('0x43')](function(_0x28f317){logger[_0x68bf('0x58')](_0x68bf('0x59'),_0x28f317);});}return _0x4c91d9;});})['then'](respondWithResult(_0x154c2d,0xc9))[_0x68bf('0x43')](handleError(_0x154c2d,null));};exports[_0x68bf('0x24')]=function(_0x20ceeb,_0x3a0f27,_0x55a00c){var _0x478ffd;return db[_0x68bf('0x3f')]['find']({'where':{'id':_0x20ceeb[_0x68bf('0x45')]['id']}})[_0x68bf('0x23')](function(_0x3a0aa9){if(_0x3a0aa9){return db[_0x68bf('0x49')][_0x68bf('0x4a')](function(_0x2c5137){return _0x3a0aa9['destroy']({'transaction':_0x2c5137,'raw':!![]})[_0x68bf('0x23')](function(_0x146829){if(_0x146829[_0x68bf('0x4c')]){fs['readdirSync'](_0x146829[_0x68bf('0x4c')])[_0x68bf('0x5a')](function(_0x1024b7){fs[_0x68bf('0x5b')](path['join'](_0x146829['directory'],_0x1024b7));});fs[_0x68bf('0x5c')](_0x146829[_0x68bf('0x4c')]);}return _0x146829;});})[_0x68bf('0x43')](function(_0x18b53b){throw new db['Sequelize'][(_0x68bf('0x5d'))](_0x18b53b['message']);});}})['then'](handleEntityNotFound(_0x3a0f27,null))[_0x68bf('0x23')](removeEntity(_0x3a0f27,null))[_0x68bf('0x43')](handleError(_0x3a0f27,null));};exports[_0x68bf('0x5e')]=function(_0x2b245a,_0x401a5d,_0x269a77){return db[_0x68bf('0x49')][_0x68bf('0x4a')](function(_0x701748){var _0x1e1e3b;return db[_0x68bf('0x3f')][_0x68bf('0x46')]({'where':{'id':_0x2b245a[_0x68bf('0x45')]['id']}})[_0x68bf('0x23')](function(_0x5f4c63){if(_0x5f4c63){_0x1e1e3b=_0x5f4c63;return _0x5f4c63['addSound'](_0x2b245a[_0x68bf('0x47')]['id'],{'transaction':_0x701748});}})[_0x68bf('0x23')](function(_0x4246b5){if(_0x4246b5){return db[_0x68bf('0x5f')]['findOne']({'where':{'id':_0x2b245a['body']['id']},'attributes':['id',_0x68bf('0x29'),'save_name',_0x68bf('0x60'),_0x68bf('0x61')],'raw':!![]});}})['then'](function(_0x4e97f4){if(_0x4e97f4){var _0x6a1b69=path[_0x68bf('0x4d')](config[_0x68bf('0x62')],_0x68bf('0x63'),util['format'](_0x68bf('0x64'),path[_0x68bf('0x65')](_0x4e97f4[_0x68bf('0x66')],path[_0x68bf('0x67')](_0x4e97f4[_0x68bf('0x66')])),_0x4e97f4['converted_format']));var _0x11c30f=path[_0x68bf('0x4d')](config['root'],'server/files/moh',_0x1e1e3b[_0x68bf('0x29')],util[_0x68bf('0x68')](_0x68bf('0x64'),_0x4e97f4[_0x68bf('0x29')],_0x4e97f4[_0x68bf('0x60')]));fs['symlinkSync'](_0x6a1b69,_0x11c30f);return _0x4e97f4;}})[_0x68bf('0x43')](function(_0x21b2c5){throw new db['Sequelize'][(_0x68bf('0x5d'))](_0x21b2c5[_0x68bf('0x69')]);});})[_0x68bf('0x23')](handleEntityNotFound(_0x401a5d,null))['then'](respondWithResult(_0x401a5d,0xc9))[_0x68bf('0x43')](handleError(_0x401a5d,null));};exports[_0x68bf('0x6a')]=function(_0x338570,_0x260284,_0x5a1171){return db[_0x68bf('0x49')][_0x68bf('0x4a')](function(_0x132362){var _0x833c0d;return db[_0x68bf('0x3f')][_0x68bf('0x6b')]({'where':{'id':_0x338570[_0x68bf('0x45')]['id']}})[_0x68bf('0x23')](handleEntityNotFound(_0x260284,null))[_0x68bf('0x23')](function(_0x58ecb7){if(_0x58ecb7){_0x833c0d=_0x58ecb7;return _0x58ecb7[_0x68bf('0x6a')](_0x338570[_0x68bf('0x45')][_0x68bf('0x6c')]);}})[_0x68bf('0x23')](function(_0x8251d2){if(_0x8251d2){return db[_0x68bf('0x5f')][_0x68bf('0x6b')]({'where':{'id':_0x338570[_0x68bf('0x45')][_0x68bf('0x6c')]},'attributes':['id',_0x68bf('0x29'),_0x68bf('0x66'),'converted_format',_0x68bf('0x61')],'raw':!![]});}})[_0x68bf('0x23')](function(_0x1b6c0b){if(_0x1b6c0b){fs['unlinkSync'](path[_0x68bf('0x4d')](_0x833c0d[_0x68bf('0x4c')],util[_0x68bf('0x68')](_0x68bf('0x64'),_0x1b6c0b[_0x68bf('0x29')],_0x1b6c0b[_0x68bf('0x60')])));return _0x1b6c0b;}})[_0x68bf('0x43')](function(_0x598a9a){throw new db[(_0x68bf('0x6d'))][(_0x68bf('0x5d'))](_0x598a9a[_0x68bf('0x69')]);});})[_0x68bf('0x23')](handleEntityNotFound(_0x260284,null))[_0x68bf('0x23')](respondWithStatusCode(_0x260284,0xcc))[_0x68bf('0x43')](handleError(_0x260284,null));};exports[_0x68bf('0x6e')]=function(_0x5d31fd,_0x10dc13,_0x4d3dfa){var _0x2dc6bc={};var _0x4b349b={};var _0x13c3bd;var _0x3686af;return db[_0x68bf('0x3f')][_0x68bf('0x6b')]({'where':{'id':_0x5d31fd['params']['id']}})[_0x68bf('0x23')](handleEntityNotFound(_0x10dc13,null))[_0x68bf('0x23')](function(_0x443da4){if(_0x443da4){_0x13c3bd=_0x443da4;_0x4b349b['model']=_[_0x68bf('0x31')](db[_0x68bf('0x5f')][_0x68bf('0x2c')]);_0x4b349b['query']=_[_0x68bf('0x31')](_0x5d31fd['query']);_0x4b349b[_0x68bf('0x32')]=_[_0x68bf('0x33')](_0x4b349b[_0x68bf('0x2f')],_0x4b349b['query']);_0x2dc6bc['attributes']=_[_0x68bf('0x33')](_0x4b349b[_0x68bf('0x2f')],qs[_0x68bf('0x35')](_0x5d31fd[_0x68bf('0x30')][_0x68bf('0x35')]));_0x2dc6bc[_0x68bf('0x34')]=_0x2dc6bc['attributes'][_0x68bf('0x36')]?_0x2dc6bc['attributes']:_0x4b349b[_0x68bf('0x2f')];_0x2dc6bc[_0x68bf('0x6f')]=qs[_0x68bf('0x39')](_0x5d31fd[_0x68bf('0x30')][_0x68bf('0x39')]);_0x2dc6bc[_0x68bf('0x3a')]=qs[_0x68bf('0x32')](_['pick'](_0x5d31fd[_0x68bf('0x30')],_0x4b349b[_0x68bf('0x32')]));if(_0x5d31fd[_0x68bf('0x30')][_0x68bf('0x3c')]){_0x2dc6bc[_0x68bf('0x3a')]=_[_0x68bf('0x3d')](_0x2dc6bc[_0x68bf('0x3a')],{'$or':_[_0x68bf('0x2b')](_0x2dc6bc[_0x68bf('0x34')],function(_0x381c15){var _0x54b72d={};_0x54b72d[_0x381c15]={'$like':'%'+_0x5d31fd['query'][_0x68bf('0x3c')]+'%'};return _0x54b72d;})});}_0x2dc6bc=_['merge']({},_0x2dc6bc,_0x5d31fd[_0x68bf('0x3e')]);return _0x13c3bd[_0x68bf('0x6e')](_0x2dc6bc);}})[_0x68bf('0x23')](function(_0x19f820){if(_0x19f820){_0x3686af=_0x19f820[_0x68bf('0x36')];if(!_0x5d31fd[_0x68bf('0x30')][_0x68bf('0x37')](_0x68bf('0x38'))){_0x2dc6bc[_0x68bf('0x1b')]=qs[_0x68bf('0x1b')](_0x5d31fd[_0x68bf('0x30')]['limit']);_0x2dc6bc['offset']=qs[_0x68bf('0x1a')](_0x5d31fd['query'][_0x68bf('0x1a')]);}return _0x13c3bd[_0x68bf('0x6e')](_0x2dc6bc);}})[_0x68bf('0x23')](function(_0x329993){if(_0x329993){return _0x329993?{'count':_0x3686af,'rows':_0x329993}:null;}})[_0x68bf('0x23')](respondWithResult(_0x10dc13,null))[_0x68bf('0x43')](handleError(_0x10dc13,null));};
\ No newline at end of file
+var _0x855d=['userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readdirSync','forEach','unlinkSync','rmdirSync','ValidationError','message','addSound','Sound','findOne','createdAt','server/files/sounds/converted','%s.%s','basename','save_name','extname','converted_format','format','Sequelize','removeSound','id2','getSounds','hasOwnProperty','rimraf','zip-dir','fast-json-patch','request-promise','path','to-csv','ejs','fs-extra','lodash','squel','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','update','then','destroy','get','UserProfileResource','error','stack','name','send','index','map','VoiceMusicOnHold','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','find','body','create','sequelize','transaction','mode','files','directory','join','root','server/files/moh','0777','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','MusicOnHolds'];(function(_0x5d5678,_0x3fc15e){var _0x50c6c4=function(_0x60dbb1){while(--_0x60dbb1){_0x5d5678['push'](_0x5d5678['shift']());}};_0x50c6c4(++_0x3fc15e);}(_0x855d,0xf9));var _0xd855=function(_0x458b5a,_0x5b0e18){_0x458b5a=_0x458b5a-0x0;var _0x202d59=_0x855d[_0x458b5a];return _0x202d59;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd855('0x0'));var zipdir=require(_0xd855('0x1'));var jsonpatch=require(_0xd855('0x2'));var rp=require(_0xd855('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xd855('0x4'));var sox=require('sox');var csv=require(_0xd855('0x5'));var ejs=require(_0xd855('0x6'));var fs=require('fs');var fs_extra=require(_0xd855('0x7'));var _=require(_0xd855('0x8'));var squel=require(_0xd855('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xd855('0xa'));var toCsv=require(_0xd855('0x5'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xd855('0xb'));var authService=require(_0xd855('0xc'));var qs=require(_0xd855('0xd'));var as=require(_0xd855('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xd855('0xf'));var utils=require(_0xd855('0x10'));var config=require(_0xd855('0x11'));var licenseUtil=require(_0xd855('0x12'));var db=require(_0xd855('0x13'))['db'];function respondWithStatusCode(_0x53472a,_0x53ec8a){_0x53ec8a=_0x53ec8a||0xcc;return function(_0x1d78d4){if(_0x1d78d4){return _0x53472a[_0xd855('0x14')](_0x53ec8a);}return _0x53472a[_0xd855('0x15')](_0x53ec8a)['end']();};}function respondWithResult(_0x93ea08,_0x4140ce){_0x4140ce=_0x4140ce||0xc8;return function(_0x535754){if(_0x535754){return _0x93ea08['status'](_0x4140ce)[_0xd855('0x16')](_0x535754);}};}function respondWithFilteredResult(_0x12c273,_0x41904c){return function(_0xd157f3){if(_0xd157f3){var _0x522514=typeof _0x41904c[_0xd855('0x17')]===_0xd855('0x18')&&typeof _0x41904c[_0xd855('0x19')]===_0xd855('0x18');var _0x471e6b=_0xd157f3[_0xd855('0x1a')];var _0x4d2053=_0x522514?0x0:_0x41904c[_0xd855('0x17')];var _0x5383dc=_0x522514?_0xd157f3[_0xd855('0x1a')]:_0x41904c[_0xd855('0x17')]+_0x41904c[_0xd855('0x19')];var _0x10dcb2;if(_0x5383dc>=_0x471e6b){_0x5383dc=_0x471e6b;_0x10dcb2=0xc8;}else{_0x10dcb2=0xce;}_0x12c273[_0xd855('0x15')](_0x10dcb2);return _0x12c273[_0xd855('0x1b')](_0xd855('0x1c'),_0x4d2053+'-'+_0x5383dc+'/'+_0x471e6b)[_0xd855('0x16')](_0xd157f3);}return null;};}function patchUpdates(_0x2627af){return function(_0x28d526){try{jsonpatch['apply'](_0x28d526,_0x2627af,!![]);}catch(_0x5ddf18){return BPromise[_0xd855('0x1d')](_0x5ddf18);}return _0x28d526['save']();};}function saveUpdates(_0x1c1ac7,_0x30600a){return function(_0x573f48){if(_0x573f48){return _0x573f48[_0xd855('0x1e')](_0x1c1ac7)[_0xd855('0x1f')](function(_0x4a5db8){return _0x4a5db8;});}return null;};}function removeEntity(_0x55efbc,_0x561242){return function(_0x2478ac){if(_0x2478ac){return _0x2478ac[_0xd855('0x20')]()[_0xd855('0x1f')](function(){var _0x140692=_0x2478ac[_0xd855('0x21')]({'plain':!![]});var _0x17bba2='MusicOnHolds';return db[_0xd855('0x22')][_0xd855('0x20')]({'where':{'type':_0x17bba2,'resourceId':_0x140692['id']}})[_0xd855('0x1f')](function(){return _0x2478ac;});})[_0xd855('0x1f')](function(){_0x55efbc[_0xd855('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5157ac,_0x41cbd9){return function(_0x110fa2){if(!_0x110fa2){_0x5157ac[_0xd855('0x14')](0x194);}return _0x110fa2;};}function handleError(_0x56b3d5,_0x25a4cb){_0x25a4cb=_0x25a4cb||0x1f4;return function(_0x172385){logger[_0xd855('0x23')](_0x172385[_0xd855('0x24')]);if(_0x172385[_0xd855('0x25')]){delete _0x172385[_0xd855('0x25')];}_0x56b3d5[_0xd855('0x15')](_0x25a4cb)[_0xd855('0x26')](_0x172385);};}exports[_0xd855('0x27')]=function(_0xe6a410,_0x454a62){var _0x2c4c12={},_0x47e927={},_0x40152f={'count':0x0,'rows':[]};var _0x554fd5=_[_0xd855('0x28')](db[_0xd855('0x29')][_0xd855('0x2a')],function(_0x16370e){return{'name':_0x16370e[_0xd855('0x2b')],'type':_0x16370e[_0xd855('0x2c')][_0xd855('0x2d')]};});_0x47e927[_0xd855('0x2e')]=_[_0xd855('0x28')](_0x554fd5,_0xd855('0x25'));_0x47e927[_0xd855('0x2f')]=_['keys'](_0xe6a410[_0xd855('0x2f')]);_0x47e927[_0xd855('0x30')]=_[_0xd855('0x31')](_0x47e927[_0xd855('0x2e')],_0x47e927[_0xd855('0x2f')]);_0x2c4c12[_0xd855('0x32')]=_[_0xd855('0x31')](_0x47e927[_0xd855('0x2e')],qs[_0xd855('0x33')](_0xe6a410[_0xd855('0x2f')][_0xd855('0x33')]));_0x2c4c12[_0xd855('0x32')]=_0x2c4c12[_0xd855('0x32')][_0xd855('0x34')]?_0x2c4c12[_0xd855('0x32')]:_0x47e927['model'];if(!_0xe6a410['query']['hasOwnProperty'](_0xd855('0x35'))){_0x2c4c12[_0xd855('0x19')]=qs['limit'](_0xe6a410[_0xd855('0x2f')][_0xd855('0x19')]);_0x2c4c12[_0xd855('0x17')]=qs[_0xd855('0x17')](_0xe6a410[_0xd855('0x2f')][_0xd855('0x17')]);}_0x2c4c12[_0xd855('0x36')]=qs['sort'](_0xe6a410['query'][_0xd855('0x37')]);delete _0xe6a410['query']['sort'];_0x2c4c12[_0xd855('0x38')]=qs['filters'](_[_0xd855('0x39')](_0xe6a410[_0xd855('0x2f')],_0x47e927[_0xd855('0x30')]),_0x554fd5);if(_0xe6a410[_0xd855('0x2f')][_0xd855('0x3a')]){_0x2c4c12[_0xd855('0x38')]=_[_0xd855('0x3b')](_0x2c4c12[_0xd855('0x38')],{'$or':_[_0xd855('0x28')](_0x554fd5,function(_0x1b04d0){if(_0x1b04d0[_0xd855('0x2c')]!==_0xd855('0x3c')){var _0x26afef={};_0x26afef[_0x1b04d0[_0xd855('0x25')]]={'$like':'%'+_0xe6a410['query'][_0xd855('0x3a')]+'%'};return _0x26afef;}})});}_0x2c4c12=_[_0xd855('0x3b')]({},_0x2c4c12,_0xe6a410[_0xd855('0x3d')]);var _0x1ae55b={'where':_0x2c4c12[_0xd855('0x38')]};return db[_0xd855('0x29')][_0xd855('0x1a')](_0x1ae55b)[_0xd855('0x1f')](function(_0x103845){_0x40152f[_0xd855('0x1a')]=_0x103845;if(_0xe6a410[_0xd855('0x2f')][_0xd855('0x3e')]){_0x2c4c12[_0xd855('0x3f')]=[{'all':!![]}];}return db[_0xd855('0x29')][_0xd855('0x40')](_0x2c4c12);})['then'](function(_0x1ef483){_0x40152f[_0xd855('0x41')]=_0x1ef483;return _0x40152f;})['then'](respondWithFilteredResult(_0x454a62,_0x2c4c12))[_0xd855('0x42')](handleError(_0x454a62,null));};exports[_0xd855('0x43')]=function(_0x53eeba,_0x74b059){var _0x441abd={'raw':![],'where':{'id':_0x53eeba[_0xd855('0x44')]['id']}},_0x328dea={};_0x328dea[_0xd855('0x2e')]=_[_0xd855('0x45')](db[_0xd855('0x29')][_0xd855('0x2a')]);_0x328dea[_0xd855('0x2f')]=_['keys'](_0x53eeba[_0xd855('0x2f')]);_0x328dea[_0xd855('0x30')]=_[_0xd855('0x31')](_0x328dea[_0xd855('0x2e')],_0x328dea[_0xd855('0x2f')]);_0x441abd[_0xd855('0x32')]=_[_0xd855('0x31')](_0x328dea[_0xd855('0x2e')],qs[_0xd855('0x33')](_0x53eeba['query'][_0xd855('0x33')]));_0x441abd['attributes']=_0x441abd[_0xd855('0x32')][_0xd855('0x34')]?_0x441abd[_0xd855('0x32')]:_0x328dea[_0xd855('0x2e')];if(_0x53eeba[_0xd855('0x2f')][_0xd855('0x3e')]){_0x441abd[_0xd855('0x3f')]=[{'all':!![]}];}_0x441abd=_[_0xd855('0x3b')]({},_0x441abd,_0x53eeba[_0xd855('0x3d')]);return db[_0xd855('0x29')][_0xd855('0x46')](_0x441abd)[_0xd855('0x1f')](handleEntityNotFound(_0x74b059,null))[_0xd855('0x1f')](respondWithResult(_0x74b059,null))[_0xd855('0x42')](handleError(_0x74b059,null));};exports[_0xd855('0x1e')]=function(_0x17d8ae,_0x44ce11){if(_0x17d8ae[_0xd855('0x47')]['id']){delete _0x17d8ae['body']['id'];}return db[_0xd855('0x29')]['find']({'where':{'id':_0x17d8ae[_0xd855('0x44')]['id']}})[_0xd855('0x1f')](handleEntityNotFound(_0x44ce11,null))['then'](saveUpdates(_0x17d8ae[_0xd855('0x47')],null))[_0xd855('0x1f')](respondWithResult(_0x44ce11,null))[_0xd855('0x42')](handleError(_0x44ce11,null));};exports[_0xd855('0x48')]=function(_0xd73deb,_0x5ee5a0,_0x5502f5){return db[_0xd855('0x49')][_0xd855('0x4a')](function(_0x8f9892){if(_0xd73deb[_0xd855('0x47')][_0xd855('0x4b')]===_0xd855('0x4c')){_0xd73deb[_0xd855('0x47')][_0xd855('0x4d')]=path[_0xd855('0x4e')](config[_0xd855('0x4f')],_0xd855('0x50'),_0xd73deb[_0xd855('0x47')][_0xd855('0x25')]);}return db[_0xd855('0x29')][_0xd855('0x48')](_0xd73deb[_0xd855('0x47')],{'transaction':_0x8f9892})[_0xd855('0x1f')](function(_0x14d13d){if(_0xd73deb[_0xd855('0x47')][_0xd855('0x4b')]===_0xd855('0x4c')){fs['mkdirSync'](_0x14d13d['directory'],parseInt(_0xd855('0x51'),0x8));}var _0x1bf286=_0xd73deb[_0xd855('0x52')][_0xd855('0x21')]({'plain':!![]});if(!_0x1bf286)throw new Error(_0xd855('0x53'));if(_0x1bf286[_0xd855('0x54')]===_0xd855('0x52')){var _0x257860=_0x14d13d[_0xd855('0x21')]({'plain':!![]});return db[_0xd855('0x55')][_0xd855('0x46')]({'where':{'name':_0xd855('0x56'),'userProfileId':_0x1bf286[_0xd855('0x57')]},'raw':!![]})[_0xd855('0x1f')](function(_0xbc63b0){if(_0xbc63b0&&_0xbc63b0[_0xd855('0x58')]===0x0){return db[_0xd855('0x22')][_0xd855('0x48')]({'name':_0x257860[_0xd855('0x25')],'resourceId':_0x257860['id'],'type':_0xbc63b0['name'],'sectionId':_0xbc63b0['id']},{})[_0xd855('0x1f')](function(){return _0x14d13d;});}else{return _0x14d13d;}})[_0xd855('0x42')](function(_0x4c427f){logger[_0xd855('0x23')](_0xd855('0x59'),_0x4c427f);});}return _0x14d13d;});})['then'](respondWithResult(_0x5ee5a0,0xc9))[_0xd855('0x42')](handleError(_0x5ee5a0,null));};exports[_0xd855('0x20')]=function(_0xe6708e,_0x2bf8b5,_0x43d5e1){var _0x4d663b;return db['VoiceMusicOnHold'][_0xd855('0x46')]({'where':{'id':_0xe6708e[_0xd855('0x44')]['id']}})['then'](function(_0x466b63){if(_0x466b63){return db[_0xd855('0x49')][_0xd855('0x4a')](function(_0x13569f){return _0x466b63['destroy']({'transaction':_0x13569f,'raw':!![]})[_0xd855('0x1f')](function(_0x10bb4f){if(_0x10bb4f[_0xd855('0x4d')]){fs[_0xd855('0x5a')](_0x10bb4f[_0xd855('0x4d')])[_0xd855('0x5b')](function(_0x9d1d93){fs[_0xd855('0x5c')](path['join'](_0x10bb4f[_0xd855('0x4d')],_0x9d1d93));});fs[_0xd855('0x5d')](_0x10bb4f[_0xd855('0x4d')]);}return _0x10bb4f;});})[_0xd855('0x42')](function(_0x2a5ffb){throw new db['Sequelize'][(_0xd855('0x5e'))](_0x2a5ffb[_0xd855('0x5f')]);});}})['then'](handleEntityNotFound(_0x2bf8b5,null))['then'](removeEntity(_0x2bf8b5,null))[_0xd855('0x42')](handleError(_0x2bf8b5,null));};exports[_0xd855('0x60')]=function(_0x813689,_0x2b450e,_0x1a3129){return db[_0xd855('0x49')]['transaction'](function(_0x39c3f3){var _0x17cff5;return db['VoiceMusicOnHold'][_0xd855('0x46')]({'where':{'id':_0x813689['params']['id']}})['then'](function(_0x3aa768){if(_0x3aa768){_0x17cff5=_0x3aa768;return _0x3aa768[_0xd855('0x60')](_0x813689[_0xd855('0x47')]['id'],{'transaction':_0x39c3f3});}})[_0xd855('0x1f')](function(_0x85acb5){if(_0x85acb5){return db[_0xd855('0x61')][_0xd855('0x62')]({'where':{'id':_0x813689[_0xd855('0x47')]['id']},'attributes':['id',_0xd855('0x25'),'save_name','converted_format',_0xd855('0x63')],'raw':!![]});}})[_0xd855('0x1f')](function(_0x166f3c){if(_0x166f3c){var _0x964fd8=path[_0xd855('0x4e')](config[_0xd855('0x4f')],_0xd855('0x64'),util['format'](_0xd855('0x65'),path[_0xd855('0x66')](_0x166f3c[_0xd855('0x67')],path[_0xd855('0x68')](_0x166f3c[_0xd855('0x67')])),_0x166f3c[_0xd855('0x69')]));var _0xcc5ff5=path['join'](config[_0xd855('0x4f')],_0xd855('0x50'),_0x17cff5[_0xd855('0x25')],util[_0xd855('0x6a')](_0xd855('0x65'),_0x166f3c[_0xd855('0x25')],_0x166f3c[_0xd855('0x69')]));fs['symlinkSync'](_0x964fd8,_0xcc5ff5);return _0x166f3c;}})[_0xd855('0x42')](function(_0x3e1534){throw new db[(_0xd855('0x6b'))]['ValidationError'](_0x3e1534[_0xd855('0x5f')]);});})[_0xd855('0x1f')](handleEntityNotFound(_0x2b450e,null))['then'](respondWithResult(_0x2b450e,0xc9))[_0xd855('0x42')](handleError(_0x2b450e,null));};exports[_0xd855('0x6c')]=function(_0x4c1442,_0x5ad461,_0xac2c13){return db[_0xd855('0x49')]['transaction'](function(_0x33fde8){var _0x4d502e;return db[_0xd855('0x29')][_0xd855('0x62')]({'where':{'id':_0x4c1442[_0xd855('0x44')]['id']}})[_0xd855('0x1f')](handleEntityNotFound(_0x5ad461,null))[_0xd855('0x1f')](function(_0x4b332c){if(_0x4b332c){_0x4d502e=_0x4b332c;return _0x4b332c[_0xd855('0x6c')](_0x4c1442['params']['id2']);}})['then'](function(_0x1916bd){if(_0x1916bd){return db[_0xd855('0x61')][_0xd855('0x62')]({'where':{'id':_0x4c1442['params'][_0xd855('0x6d')]},'attributes':['id',_0xd855('0x25'),_0xd855('0x67'),_0xd855('0x69'),_0xd855('0x63')],'raw':!![]});}})[_0xd855('0x1f')](function(_0xcc2216){if(_0xcc2216){fs[_0xd855('0x5c')](path[_0xd855('0x4e')](_0x4d502e[_0xd855('0x4d')],util[_0xd855('0x6a')](_0xd855('0x65'),_0xcc2216['name'],_0xcc2216['converted_format'])));return _0xcc2216;}})[_0xd855('0x42')](function(_0x19e09f){throw new db[(_0xd855('0x6b'))][(_0xd855('0x5e'))](_0x19e09f[_0xd855('0x5f')]);});})['then'](handleEntityNotFound(_0x5ad461,null))[_0xd855('0x1f')](respondWithStatusCode(_0x5ad461,0xcc))[_0xd855('0x42')](handleError(_0x5ad461,null));};exports[_0xd855('0x6e')]=function(_0x4b6daf,_0x3c6370,_0x539843){var _0x2e83f8={};var _0x3cd703={};var _0x286f16;var _0x1d2060;return db[_0xd855('0x29')][_0xd855('0x62')]({'where':{'id':_0x4b6daf[_0xd855('0x44')]['id']}})[_0xd855('0x1f')](handleEntityNotFound(_0x3c6370,null))[_0xd855('0x1f')](function(_0x3b9aad){if(_0x3b9aad){_0x286f16=_0x3b9aad;_0x3cd703['model']=_[_0xd855('0x45')](db['Sound'][_0xd855('0x2a')]);_0x3cd703[_0xd855('0x2f')]=_[_0xd855('0x45')](_0x4b6daf[_0xd855('0x2f')]);_0x3cd703[_0xd855('0x30')]=_[_0xd855('0x31')](_0x3cd703[_0xd855('0x2e')],_0x3cd703['query']);_0x2e83f8[_0xd855('0x32')]=_['intersection'](_0x3cd703[_0xd855('0x2e')],qs[_0xd855('0x33')](_0x4b6daf[_0xd855('0x2f')]['fields']));_0x2e83f8[_0xd855('0x32')]=_0x2e83f8[_0xd855('0x32')][_0xd855('0x34')]?_0x2e83f8[_0xd855('0x32')]:_0x3cd703[_0xd855('0x2e')];_0x2e83f8[_0xd855('0x36')]=qs[_0xd855('0x37')](_0x4b6daf[_0xd855('0x2f')][_0xd855('0x37')]);_0x2e83f8[_0xd855('0x38')]=qs[_0xd855('0x30')](_[_0xd855('0x39')](_0x4b6daf[_0xd855('0x2f')],_0x3cd703[_0xd855('0x30')]));if(_0x4b6daf['query'][_0xd855('0x3a')]){_0x2e83f8['where']=_['merge'](_0x2e83f8[_0xd855('0x38')],{'$or':_[_0xd855('0x28')](_0x2e83f8[_0xd855('0x32')],function(_0x6add19){var _0x5db159={};_0x5db159[_0x6add19]={'$like':'%'+_0x4b6daf['query'][_0xd855('0x3a')]+'%'};return _0x5db159;})});}_0x2e83f8=_[_0xd855('0x3b')]({},_0x2e83f8,_0x4b6daf[_0xd855('0x3d')]);return _0x286f16[_0xd855('0x6e')](_0x2e83f8);}})['then'](function(_0x2f742d){if(_0x2f742d){_0x1d2060=_0x2f742d['length'];if(!_0x4b6daf['query'][_0xd855('0x6f')]('nolimit')){_0x2e83f8['limit']=qs[_0xd855('0x19')](_0x4b6daf['query'][_0xd855('0x19')]);_0x2e83f8[_0xd855('0x17')]=qs[_0xd855('0x17')](_0x4b6daf[_0xd855('0x2f')]['offset']);}return _0x286f16[_0xd855('0x6e')](_0x2e83f8);}})[_0xd855('0x1f')](function(_0x510327){if(_0x510327){return _0x510327?{'count':_0x1d2060,'rows':_0x510327}:null;}})['then'](respondWithResult(_0x3c6370,null))[_0xd855('0x42')](handleError(_0x3c6370,null));};
\ No newline at end of file
index bc454a0..8320cf4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x276b=['../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./voiceMusicOnHold.attributes','exports','define','VoiceMusicOnHold','voice_musiconhold','lodash','util'];(function(_0x297b1c,_0x303ab9){var _0x21c2dd=function(_0x4ee51a){while(--_0x4ee51a){_0x297b1c['push'](_0x297b1c['shift']());}};_0x21c2dd(++_0x303ab9);}(_0x276b,0x108));var _0xb276=function(_0xbee109,_0x848f63){_0xbee109=_0xbee109-0x0;var _0x5860e4=_0x276b[_0xbee109];return _0x5860e4;};'use strict';var _=require(_0xb276('0x0'));var util=require(_0xb276('0x1'));var logger=require(_0xb276('0x2'))(_0xb276('0x3'));var moment=require(_0xb276('0x4'));var BPromise=require(_0xb276('0x5'));var rp=require(_0xb276('0x6'));var fs=require('fs');var path=require(_0xb276('0x7'));var rimraf=require('rimraf');var config=require(_0xb276('0x8'));var attributes=require(_0xb276('0x9'));module[_0xb276('0xa')]=function(_0x3ec225,_0x41d61a){return _0x3ec225[_0xb276('0xb')](_0xb276('0xc'),attributes,{'tableName':_0xb276('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8dbd=['../../config/environment','./voiceMusicOnHold.attributes','exports','define','VoiceMusicOnHold','voice_musiconhold','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x3192eb,_0x155a6e){var _0x1b3ef0=function(_0x42f2f7){while(--_0x42f2f7){_0x3192eb['push'](_0x3192eb['shift']());}};_0x1b3ef0(++_0x155a6e);}(_0x8dbd,0x165));var _0xd8db=function(_0x26efbd,_0x110fac){_0x26efbd=_0x26efbd-0x0;var _0xe25667=_0x8dbd[_0x26efbd];return _0xe25667;};'use strict';var _=require('lodash');var util=require(_0xd8db('0x0'));var logger=require(_0xd8db('0x1'))(_0xd8db('0x2'));var moment=require(_0xd8db('0x3'));var BPromise=require(_0xd8db('0x4'));var rp=require(_0xd8db('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd8db('0x6'));var config=require(_0xd8db('0x7'));var attributes=require(_0xd8db('0x8'));module[_0xd8db('0x9')]=function(_0x4f4f0b,_0xd9255c){return _0x4f4f0b[_0xd8db('0xa')](_0xd8db('0xb'),attributes,{'tableName':_0xd8db('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 05a84bb..0f0e2ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['http','request','then','info','VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x32f9bb,_0x4778be){var _0x51ecce=function(_0x5c5282){while(--_0x5c5282){_0x32f9bb['push'](_0x32f9bb['shift']());}};_0x51ecce(++_0x4778be);}(_0xe706,0xa3));var _0x6e70=function(_0x15624a,_0x62a80b){_0x15624a=_0x15624a-0x0;var _0x42b811=_0xe706[_0x15624a];return _0x42b811;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var moment=require(_0x6e70('0x2'));var BPromise=require('bluebird');var rs=require(_0x6e70('0x3'));var fs=require('fs');var Redis=require(_0x6e70('0x4'));var db=require(_0x6e70('0x5'))['db'];var utils=require(_0x6e70('0x6'));var logger=require(_0x6e70('0x7'))(_0x6e70('0x8'));var config=require(_0x6e70('0x9'));var jayson=require(_0x6e70('0xa'));var client=jayson[_0x6e70('0xb')][_0x6e70('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x36357b,_0x293ce7,_0x45a2d4){return new BPromise(function(_0x188ed3,_0x3c4843){return client[_0x6e70('0xd')](_0x36357b,_0x45a2d4)[_0x6e70('0xe')](function(_0x25e61c){logger[_0x6e70('0xf')](_0x6e70('0x10'),_0x293ce7,_0x6e70('0x11'));logger[_0x6e70('0x12')](_0x6e70('0x13'),_0x293ce7,_0x6e70('0x11'),JSON['stringify'](_0x25e61c));if(_0x25e61c['error']){if(_0x25e61c[_0x6e70('0x14')][_0x6e70('0x15')]===0x1f4){logger[_0x6e70('0x14')](_0x6e70('0x10'),_0x293ce7,_0x25e61c[_0x6e70('0x14')][_0x6e70('0x16')]);return _0x3c4843(_0x25e61c[_0x6e70('0x14')][_0x6e70('0x16')]);}logger['error']('VoiceMusicOnHold,\x20%s,\x20%s',_0x293ce7,_0x25e61c['error'][_0x6e70('0x16')]);return _0x188ed3(_0x25e61c['error']['message']);}else{logger[_0x6e70('0xf')](_0x6e70('0x10'),_0x293ce7,'request\x20sent');_0x188ed3(_0x25e61c[_0x6e70('0x17')]['message']);}})[_0x6e70('0x18')](function(_0x161f23){logger['error']('VoiceMusicOnHold,\x20%s,\x20%s',_0x293ce7,_0x161f23);_0x3c4843(_0x161f23);});});}
\ No newline at end of file
+var _0xe706=['http','request','then','info','VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x4894d0,_0x12806b){var _0x2c7f01=function(_0x417984){while(--_0x417984){_0x4894d0['push'](_0x4894d0['shift']());}};_0x2c7f01(++_0x12806b);}(_0xe706,0xa3));var _0x6e70=function(_0x29b929,_0x2a4b10){_0x29b929=_0x29b929-0x0;var _0x3a8ce6=_0xe706[_0x29b929];return _0x3a8ce6;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var moment=require(_0x6e70('0x2'));var BPromise=require('bluebird');var rs=require(_0x6e70('0x3'));var fs=require('fs');var Redis=require(_0x6e70('0x4'));var db=require(_0x6e70('0x5'))['db'];var utils=require(_0x6e70('0x6'));var logger=require(_0x6e70('0x7'))(_0x6e70('0x8'));var config=require(_0x6e70('0x9'));var jayson=require(_0x6e70('0xa'));var client=jayson[_0x6e70('0xb')][_0x6e70('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x36357b,_0x293ce7,_0x45a2d4){return new BPromise(function(_0x188ed3,_0x3c4843){return client[_0x6e70('0xd')](_0x36357b,_0x45a2d4)[_0x6e70('0xe')](function(_0x25e61c){logger[_0x6e70('0xf')](_0x6e70('0x10'),_0x293ce7,_0x6e70('0x11'));logger[_0x6e70('0x12')](_0x6e70('0x13'),_0x293ce7,_0x6e70('0x11'),JSON['stringify'](_0x25e61c));if(_0x25e61c['error']){if(_0x25e61c[_0x6e70('0x14')][_0x6e70('0x15')]===0x1f4){logger[_0x6e70('0x14')](_0x6e70('0x10'),_0x293ce7,_0x25e61c[_0x6e70('0x14')][_0x6e70('0x16')]);return _0x3c4843(_0x25e61c[_0x6e70('0x14')][_0x6e70('0x16')]);}logger['error']('VoiceMusicOnHold,\x20%s,\x20%s',_0x293ce7,_0x25e61c['error'][_0x6e70('0x16')]);return _0x188ed3(_0x25e61c['error']['message']);}else{logger[_0x6e70('0xf')](_0x6e70('0x10'),_0x293ce7,'request\x20sent');_0x188ed3(_0x25e61c[_0x6e70('0x17')]['message']);}})[_0x6e70('0x18')](function(_0x161f23){logger['error']('VoiceMusicOnHold,\x20%s,\x20%s',_0x293ce7,_0x161f23);_0x3c4843(_0x161f23);});});}
\ No newline at end of file
index f8b96a0..2e086a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2a5=['post','create','addAgents','addTeams','put','update','destroy','delete','removeAgents','removeTeams','exports','util','path','../../components/auth/service','../../components/interaction/service','../../config/environment','./voicePrefix.controller','isAuthenticated','index','/describe','describe','get','/:id','show','/:id/users','getAgents','/:id/teams'];(function(_0x7f3b4d,_0x144c7f){var _0xf3292b=function(_0x534845){while(--_0x534845){_0x7f3b4d['push'](_0x7f3b4d['shift']());}};_0xf3292b(++_0x144c7f);}(_0xf2a5,0xc8));var _0x5f2a=function(_0x11faf6,_0x1c132d){_0x11faf6=_0x11faf6-0x0;var _0x24724c=_0xf2a5[_0x11faf6];return _0x24724c;};'use strict';var multer=require('multer');var util=require(_0x5f2a('0x0'));var path=require(_0x5f2a('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x5f2a('0x2'));var interaction=require(_0x5f2a('0x3'));var config=require(_0x5f2a('0x4'));var controller=require(_0x5f2a('0x5'));router['get']('/',auth[_0x5f2a('0x6')](),controller[_0x5f2a('0x7')]);router['get'](_0x5f2a('0x8'),auth[_0x5f2a('0x6')](),controller[_0x5f2a('0x9')]);router[_0x5f2a('0xa')](_0x5f2a('0xb'),auth[_0x5f2a('0x6')](),controller[_0x5f2a('0xc')]);router[_0x5f2a('0xa')](_0x5f2a('0xd'),auth['isAuthenticated'](),controller[_0x5f2a('0xe')]);router[_0x5f2a('0xa')](_0x5f2a('0xf'),auth[_0x5f2a('0x6')](),controller['getTeams']);router[_0x5f2a('0x10')]('/',auth[_0x5f2a('0x6')](),controller[_0x5f2a('0x11')]);router[_0x5f2a('0x10')](_0x5f2a('0xd'),auth[_0x5f2a('0x6')](),controller[_0x5f2a('0x12')]);router[_0x5f2a('0x10')]('/:id/teams',auth['isAuthenticated'](),controller[_0x5f2a('0x13')]);router[_0x5f2a('0x14')]('/:id',auth['isAuthenticated'](),controller[_0x5f2a('0x15')]);router['delete'](_0x5f2a('0xb'),auth[_0x5f2a('0x6')](),controller[_0x5f2a('0x16')]);router[_0x5f2a('0x17')](_0x5f2a('0xd'),auth[_0x5f2a('0x6')](),controller[_0x5f2a('0x18')]);router[_0x5f2a('0x17')](_0x5f2a('0xf'),auth[_0x5f2a('0x6')](),controller[_0x5f2a('0x19')]);module[_0x5f2a('0x1a')]=router;
\ No newline at end of file
+var _0x3d5d=['path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voicePrefix.controller','get','isAuthenticated','describe','/:id','show','/:id/users','getAgents','post','create','addAgents','update','delete','destroy','removeAgents','exports'];(function(_0x1ef7e6,_0x1f8fa1){var _0x4d7de6=function(_0x5cae05){while(--_0x5cae05){_0x1ef7e6['push'](_0x1ef7e6['shift']());}};_0x4d7de6(++_0x1f8fa1);}(_0x3d5d,0x160));var _0xd3d5=function(_0x164eca,_0x555e28){_0x164eca=_0x164eca-0x0;var _0x2ce562=_0x3d5d[_0x164eca];return _0x2ce562;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xd3d5('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xd3d5('0x1')]();var fs_extra=require(_0xd3d5('0x2'));var auth=require(_0xd3d5('0x3'));var interaction=require(_0xd3d5('0x4'));var config=require(_0xd3d5('0x5'));var controller=require(_0xd3d5('0x6'));router[_0xd3d5('0x7')]('/',auth[_0xd3d5('0x8')](),controller['index']);router[_0xd3d5('0x7')]('/describe',auth[_0xd3d5('0x8')](),controller[_0xd3d5('0x9')]);router[_0xd3d5('0x7')](_0xd3d5('0xa'),auth[_0xd3d5('0x8')](),controller[_0xd3d5('0xb')]);router[_0xd3d5('0x7')](_0xd3d5('0xc'),auth[_0xd3d5('0x8')](),controller[_0xd3d5('0xd')]);router[_0xd3d5('0xe')]('/',auth[_0xd3d5('0x8')](),controller[_0xd3d5('0xf')]);router[_0xd3d5('0xe')](_0xd3d5('0xc'),auth[_0xd3d5('0x8')](),controller[_0xd3d5('0x10')]);router['put'](_0xd3d5('0xa'),auth[_0xd3d5('0x8')](),controller[_0xd3d5('0x11')]);router[_0xd3d5('0x12')](_0xd3d5('0xa'),auth[_0xd3d5('0x8')](),controller[_0xd3d5('0x13')]);router[_0xd3d5('0x12')](_0xd3d5('0xc'),auth[_0xd3d5('0x8')](),controller[_0xd3d5('0x14')]);module[_0xd3d5('0x15')]=router;
\ No newline at end of file
index 6f35e75..c00cf88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa562=['INTEGER','sequelize','exports','STRING','name','VIRTUAL','system-'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xa562,0x1d6));var _0x2a56=function(_0x1c3e42,_0x1a4fe9){_0x1c3e42=_0x1c3e42-0x0;var _0x348fdc=_0xa562[_0x1c3e42];return _0x348fdc;};'use strict';var Sequelize=require(_0x2a56('0x0'));module[_0x2a56('0x1')]={'name':{'type':Sequelize[_0x2a56('0x2')],'allowNull':![],'unique':_0x2a56('0x3')},'prefix':{'type':Sequelize[_0x2a56('0x4')],'get':function(_0x5c7acc){return _0x2a56('0x5')+this['getDataValue'](_0x2a56('0x3'))+'-';}},'description':{'type':Sequelize['STRING']},'callerIdAll':{'type':Sequelize['STRING']},'VoiceExtensionId':{'type':Sequelize[_0x2a56('0x6')]}};
\ No newline at end of file
+var _0x914c=['system-','getDataValue','name','sequelize','STRING'];(function(_0x47ced9,_0x38ec71){var _0x13ec04=function(_0x41917c){while(--_0x41917c){_0x47ced9['push'](_0x47ced9['shift']());}};_0x13ec04(++_0x38ec71);}(_0x914c,0x13e));var _0xc914=function(_0x4d934b,_0x52f8e9){_0x4d934b=_0x4d934b-0x0;var _0xc0338b=_0x914c[_0x4d934b];return _0xc0338b;};'use strict';var Sequelize=require(_0xc914('0x0'));module['exports']={'name':{'type':Sequelize[_0xc914('0x1')],'allowNull':![],'unique':'name'},'prefix':{'type':Sequelize['VIRTUAL'],'get':function(_0xada1d9){return _0xc914('0x2')+this[_0xc914('0x3')](_0xc914('0x4'))+'-';}},'description':{'type':Sequelize[_0xc914('0x1')]},'callerIdAll':{'type':Sequelize['STRING']},'VoiceExtensionId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 2abe1de..36c8360 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x236c=['User','getAgents','getTeams','Team','pick','addTeams','findAll','Agents','online','interface','flatMap','each','TeamVoicePrefix','UserVoicePrefix','findOrCreate','forEach','removeTeams','select','team_has_voice_prefixes','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoicePrefixId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','TeamId','includes','all','union','compact','value','isEmpty','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','defaults','socket.io-emitter','redis','./voicePrefix.socket','register','status','end','undefined','count','offset','limit','set','json','apply','reject','save','update','then','UserProfileResource','sendStatus','stack','name','send','index','map','VoicePrefix','rawAttributes','fieldName','query','keys','filters','intersection','attributes','fields','length','model','hasOwnProperty','nolimit','order','sort','filter','where','merge','type','VIRTUAL','options','includeAll','include','rows','catch','show','find','destroy','params','describe','create','sequelize','transaction','get','VoiceExtension','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','context','exten','system','description','Voice\x20Prefix\x20Extension','appdata','prefix','NoOp','Voice\x20Prefix','bulkCreate','push','Set','CDR(prefix)=','callerIdAll','No\x20callerid\x20available','goto','${EXTEN:','charAt','body','system-','findById','addAgents','ids','omit','spread','removeAgents','isArray','emit','userVoicePrefix:remove','findOne'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x236c,0x155));var _0xc236=function(_0x32cbcb,_0x488e84){_0x32cbcb=_0x32cbcb-0x0;var _0x1a521c=_0x236c[_0x32cbcb];return _0x1a521c;};'use strict';var emlformat=require(_0xc236('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc236('0x1'));var jsonpatch=require(_0xc236('0x2'));var rp=require(_0xc236('0x3'));var moment=require(_0xc236('0x4'));var BPromise=require(_0xc236('0x5'));var Mustache=require('mustache');var util=require(_0xc236('0x6'));var path=require(_0xc236('0x7'));var sox=require(_0xc236('0x8'));var csv=require(_0xc236('0x9'));var ejs=require(_0xc236('0xa'));var fs=require('fs');var fs_extra=require(_0xc236('0xb'));var _=require('lodash');var squel=require(_0xc236('0xc'));var crypto=require(_0xc236('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xc236('0xe'));var Papa=require('papaparse');var Redis=require(_0xc236('0xf'));var authService=require(_0xc236('0x10'));var qs=require(_0xc236('0x11'));var as=require(_0xc236('0x12'));var hardwareService=require(_0xc236('0x13'));var logger=require('../../config/logger')(_0xc236('0x14'));var utils=require(_0xc236('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xc236('0x16'));var db=require(_0xc236('0x17'))['db'];config['redis']=_[_0xc236('0x18')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xc236('0x19'))(new Redis(config[_0xc236('0x1a')]));require(_0xc236('0x1b'))[_0xc236('0x1c')](socket);function respondWithStatusCode(_0x5052db,_0x13a42b){_0x13a42b=_0x13a42b||0xcc;return function(_0x55b188){if(_0x55b188){return _0x5052db['sendStatus'](_0x13a42b);}return _0x5052db[_0xc236('0x1d')](_0x13a42b)[_0xc236('0x1e')]();};}function respondWithResult(_0x443a46,_0x1aeafc){_0x1aeafc=_0x1aeafc||0xc8;return function(_0x267913){if(_0x267913){return _0x443a46['status'](_0x1aeafc)['json'](_0x267913);}};}function respondWithFilteredResult(_0x57355b,_0x3f5884){return function(_0x76f45){if(_0x76f45){var _0x11ec65=typeof _0x3f5884['offset']===_0xc236('0x1f')&&typeof _0x3f5884['limit']==='undefined';var _0x1eafba=_0x76f45[_0xc236('0x20')];var _0x3a6183=_0x11ec65?0x0:_0x3f5884[_0xc236('0x21')];var _0x2b6d3f=_0x11ec65?_0x76f45[_0xc236('0x20')]:_0x3f5884[_0xc236('0x21')]+_0x3f5884[_0xc236('0x22')];var _0x54ffac;if(_0x2b6d3f>=_0x1eafba){_0x2b6d3f=_0x1eafba;_0x54ffac=0xc8;}else{_0x54ffac=0xce;}_0x57355b[_0xc236('0x1d')](_0x54ffac);return _0x57355b[_0xc236('0x23')]('Content-Range',_0x3a6183+'-'+_0x2b6d3f+'/'+_0x1eafba)[_0xc236('0x24')](_0x76f45);}return null;};}function patchUpdates(_0x34d73a){return function(_0x3bd41b){try{jsonpatch[_0xc236('0x25')](_0x3bd41b,_0x34d73a,!![]);}catch(_0x27afba){return BPromise[_0xc236('0x26')](_0x27afba);}return _0x3bd41b[_0xc236('0x27')]();};}function saveUpdates(_0xf921e6,_0x1d65e2){return function(_0x3b4059){if(_0x3b4059){return _0x3b4059[_0xc236('0x28')](_0xf921e6)['then'](function(_0x308cd6){return _0x308cd6;});}return null;};}function removeEntity(_0x21d78f,_0x356042){return function(_0x9017ec){if(_0x9017ec){return _0x9017ec['destroy']()[_0xc236('0x29')](function(){var _0x5da4b2=_0x9017ec['get']({'plain':!![]});var _0x15ead8='VoicePrefixes';return db[_0xc236('0x2a')]['destroy']({'where':{'type':_0x15ead8,'resourceId':_0x5da4b2['id']}})[_0xc236('0x29')](function(){return _0x9017ec;});})['then'](function(){_0x21d78f[_0xc236('0x1d')](0xcc)[_0xc236('0x1e')]();});}};}function handleEntityNotFound(_0x4f5175,_0x5a61b5){return function(_0x265c8d){if(!_0x265c8d){_0x4f5175[_0xc236('0x2b')](0x194);}return _0x265c8d;};}function handleError(_0x1f4995,_0x6ad83f){_0x6ad83f=_0x6ad83f||0x1f4;return function(_0x5f3891){logger['error'](_0x5f3891[_0xc236('0x2c')]);if(_0x5f3891['name']){delete _0x5f3891[_0xc236('0x2d')];}_0x1f4995['status'](_0x6ad83f)[_0xc236('0x2e')](_0x5f3891);};}exports[_0xc236('0x2f')]=function(_0x57c99e,_0x5a5ec3){var _0x2537f9={},_0x3053a3={},_0xbda858={'count':0x0,'rows':[]};var _0x2f64bd=_[_0xc236('0x30')](db[_0xc236('0x31')][_0xc236('0x32')],function(_0x22a2ca){return{'name':_0x22a2ca[_0xc236('0x33')],'type':_0x22a2ca['type']['key']};});_0x3053a3['model']=_[_0xc236('0x30')](_0x2f64bd,_0xc236('0x2d'));_0x3053a3[_0xc236('0x34')]=_[_0xc236('0x35')](_0x57c99e[_0xc236('0x34')]);_0x3053a3[_0xc236('0x36')]=_[_0xc236('0x37')](_0x3053a3['model'],_0x3053a3[_0xc236('0x34')]);_0x2537f9[_0xc236('0x38')]=_[_0xc236('0x37')](_0x3053a3['model'],qs[_0xc236('0x39')](_0x57c99e[_0xc236('0x34')][_0xc236('0x39')]));_0x2537f9[_0xc236('0x38')]=_0x2537f9['attributes'][_0xc236('0x3a')]?_0x2537f9[_0xc236('0x38')]:_0x3053a3[_0xc236('0x3b')];if(!_0x57c99e[_0xc236('0x34')][_0xc236('0x3c')](_0xc236('0x3d'))){_0x2537f9[_0xc236('0x22')]=qs[_0xc236('0x22')](_0x57c99e[_0xc236('0x34')][_0xc236('0x22')]);_0x2537f9[_0xc236('0x21')]=qs[_0xc236('0x21')](_0x57c99e[_0xc236('0x34')][_0xc236('0x21')]);}_0x2537f9[_0xc236('0x3e')]=qs[_0xc236('0x3f')](_0x57c99e[_0xc236('0x34')]['sort']);_0x2537f9['where']=qs['filters'](_['pick'](_0x57c99e[_0xc236('0x34')],_0x3053a3['filters']),_0x2f64bd);if(_0x57c99e[_0xc236('0x34')][_0xc236('0x40')]){_0x2537f9[_0xc236('0x41')]=_[_0xc236('0x42')](_0x2537f9[_0xc236('0x41')],{'$or':_[_0xc236('0x30')](_0x2f64bd,function(_0x427de1){if(_0x427de1[_0xc236('0x43')]!==_0xc236('0x44')){var _0x12a270={};_0x12a270[_0x427de1[_0xc236('0x2d')]]={'$like':'%'+_0x57c99e[_0xc236('0x34')][_0xc236('0x40')]+'%'};return _0x12a270;}})});}_0x2537f9=_[_0xc236('0x42')]({},_0x2537f9,_0x57c99e[_0xc236('0x45')]);var _0x594ffc={'where':_0x2537f9[_0xc236('0x41')]};return db[_0xc236('0x31')]['count'](_0x594ffc)[_0xc236('0x29')](function(_0x5b0bc5){_0xbda858[_0xc236('0x20')]=_0x5b0bc5;if(_0x57c99e['query'][_0xc236('0x46')]){_0x2537f9[_0xc236('0x47')]=[{'all':!![]}];}return db[_0xc236('0x31')]['findAll'](_0x2537f9);})[_0xc236('0x29')](function(_0x429e08){_0xbda858[_0xc236('0x48')]=_0x429e08;return _0xbda858;})['then'](respondWithFilteredResult(_0x5a5ec3,_0x2537f9))[_0xc236('0x49')](handleError(_0x5a5ec3,null));};exports[_0xc236('0x4a')]=function(_0x317431,_0x408312){var _0xc35ef9={'raw':![],'where':{'id':_0x317431['params']['id']}},_0x3235b0={};_0x3235b0[_0xc236('0x3b')]=_['keys'](db[_0xc236('0x31')][_0xc236('0x32')]);_0x3235b0[_0xc236('0x34')]=_[_0xc236('0x35')](_0x317431[_0xc236('0x34')]);_0x3235b0[_0xc236('0x36')]=_[_0xc236('0x37')](_0x3235b0['model'],_0x3235b0[_0xc236('0x34')]);_0xc35ef9['attributes']=_[_0xc236('0x37')](_0x3235b0[_0xc236('0x3b')],qs['fields'](_0x317431[_0xc236('0x34')][_0xc236('0x39')]));_0xc35ef9[_0xc236('0x38')]=_0xc35ef9[_0xc236('0x38')][_0xc236('0x3a')]?_0xc35ef9[_0xc236('0x38')]:_0x3235b0[_0xc236('0x3b')];if(_0x317431['query']['includeAll']){_0xc35ef9[_0xc236('0x47')]=[{'all':!![]}];}_0xc35ef9=_[_0xc236('0x42')]({},_0xc35ef9,_0x317431['options']);return db[_0xc236('0x31')][_0xc236('0x4b')](_0xc35ef9)[_0xc236('0x29')](handleEntityNotFound(_0x408312,null))[_0xc236('0x29')](respondWithResult(_0x408312,null))[_0xc236('0x49')](handleError(_0x408312,null));};exports[_0xc236('0x4c')]=function(_0x300523,_0x14a83d){return db[_0xc236('0x31')]['find']({'where':{'id':_0x300523[_0xc236('0x4d')]['id']}})[_0xc236('0x29')](handleEntityNotFound(_0x14a83d,null))[_0xc236('0x29')](removeEntity(_0x14a83d,null))[_0xc236('0x49')](handleError(_0x14a83d,null));};exports[_0xc236('0x4e')]=function(_0x28e6b4,_0x3ea045){return db['VoicePrefix'][_0xc236('0x4e')]()[_0xc236('0x29')](respondWithResult(_0x3ea045,null))[_0xc236('0x49')](handleError(_0x3ea045,null));};exports[_0xc236('0x4f')]=function(_0x4860d8,_0xa34c01){var _0x3e6da6;return db[_0xc236('0x50')][_0xc236('0x51')](function(_0x9d81c8){return db['VoicePrefix'][_0xc236('0x4f')](_0x4860d8['body'],{'transaction':_0x9d81c8})[_0xc236('0x29')](function(_0x93904b){_0x3e6da6=_0x93904b[_0xc236('0x52')]({'plain':!![]});return db[_0xc236('0x53')][_0xc236('0x4b')]({'where':{'id':_0x3e6da6['VoiceExtensionId']},'raw':!![]})['then'](function(_0x3bee67){return createVoicePrefixExtensions(_0x3e6da6,_0x3bee67,_0x9d81c8);});});})[_0xc236('0x29')](function(){var _0x205d09=_0x4860d8[_0xc236('0x54')][_0xc236('0x52')]({'plain':!![]});if(!_0x205d09)throw new Error(_0xc236('0x55'));if(_0x205d09[_0xc236('0x56')]===_0xc236('0x54')){var _0x24af08=_0x3e6da6;return db[_0xc236('0x57')]['find']({'where':{'name':'VoicePrefixes','userProfileId':_0x205d09[_0xc236('0x58')]},'raw':!![]})[_0xc236('0x29')](function(_0x8e19c6){if(_0x8e19c6&&_0x8e19c6[_0xc236('0x59')]===0x0){return db['UserProfileResource'][_0xc236('0x4f')]({'name':_0x24af08[_0xc236('0x2d')],'resourceId':_0x24af08['id'],'type':_0x8e19c6['name'],'sectionId':_0x8e19c6['id']},{})[_0xc236('0x29')](function(){return _0x3e6da6;});}else{return _0x3e6da6;}})[_0xc236('0x49')](function(_0x445f03){logger[_0xc236('0x5a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x445f03);throw _0x445f03;});}return _0x3e6da6;})[_0xc236('0x29')](respondWithResult(_0xa34c01,null))[_0xc236('0x49')](handleError(_0xa34c01,null));};function Extension(_0x35955c,_0x2602f8,_0x41a160,_0x1edbae){this[_0xc236('0x5b')]='from-sip';this[_0xc236('0x5c')]=_0x35955c;this['app']=_0x41a160;this[_0xc236('0x43')]=_0xc236('0x5d');this[_0xc236('0x5e')]=_0xc236('0x5f');this['priority']=_0x2602f8;this[_0xc236('0x60')]=_0x1edbae;}function createVoicePrefixExtensions(_0x3f1a5f,_0x379e99,_0x4ed4fc){return new BPromise(function(_0x175d5d,_0x2bc7f0){var _0x2ecad1=new Extension(formatPrefixName(_0x3f1a5f[_0xc236('0x61')]),0x1,_0xc236('0x62'),_0xc236('0x63'));_0x2ecad1['VoicePrefixId']=_0x3f1a5f['id'];return db['VoiceExtension'][_0xc236('0x4f')](_0x2ecad1,{'transaction':_0x4ed4fc})[_0xc236('0x29')](function(_0x125f9a){var _0x1e9ad8=_0x125f9a[_0xc236('0x52')]({'plain':!![]});var _0x4649a3=_[_0xc236('0x30')](addVoicePrefixExtensions(_0x3f1a5f,_0x379e99),function(_0x553f58){_0x553f58['VoiceExtensionId']=_0x1e9ad8['id'];_0x553f58['VoicePrefixId']=_0x3f1a5f['id'];return _0x553f58;});return db[_0xc236('0x53')][_0xc236('0x64')](_0x4649a3,{'transaction':_0x4ed4fc})[_0xc236('0x29')](function(_0x2d6b00){if(!_0x2d6b00){return _0x2bc7f0('Extensions\x20creation\x20failed');}else{return _0x175d5d(_0x2d6b00);}})['catch'](function(_0x506910){return _0x2bc7f0(_0x506910);});});;});};function addVoicePrefixExtensions(_0x528d3d,_0x145e86){var _0x5df2ba=[];var _0x20a1eb=formatPrefixName(_0x528d3d['prefix']);_0x5df2ba[_0xc236('0x65')](new Extension(_0x20a1eb,0x2,_0xc236('0x66'),_0xc236('0x67')+_0x528d3d[_0xc236('0x2d')]));if(_0x528d3d[_0xc236('0x68')]){_0x5df2ba[_0xc236('0x65')](new Extension(_0x20a1eb,0x3,_0xc236('0x66'),'PREFIX-CALLERIDALL='+_0x528d3d[_0xc236('0x68')]));}else{_0x5df2ba['push'](new Extension(_0x20a1eb,0x3,_0xc236('0x62'),_0xc236('0x69')));}_0x5df2ba[_0xc236('0x65')](new Extension(_0x20a1eb,0x4,_0xc236('0x6a'),_0x145e86[_0xc236('0x5b')]+','+_0xc236('0x6b')+(0x8+_0x528d3d['name'][_0xc236('0x3a')])+'}'+','+0x1));return _0x5df2ba;}function formatPrefixName(_0x94f65d){var _0x4bb0c6='_';for(var _0x2fb86f=0x0;_0x2fb86f<_0x94f65d[_0xc236('0x3a')];_0x2fb86f++){if(_0x94f65d[_0xc236('0x6c')](_0x2fb86f)=='-'){_0x4bb0c6+=_0x94f65d['charAt'](_0x2fb86f);}else{_0x4bb0c6+='['+_0x94f65d[_0xc236('0x6c')](_0x2fb86f)+']';}}_0x4bb0c6+='.';return _0x4bb0c6;}exports[_0xc236('0x28')]=function(_0x5897a1,_0x2c8f89,_0x340f7c){var _0x1c07d7=_0x5897a1[_0xc236('0x6d')];_0x1c07d7[_0xc236('0x61')]=_0xc236('0x6e')+_0x1c07d7[_0xc236('0x2d')]+'-';return db[_0xc236('0x50')][_0xc236('0x51')](function(_0x5d627d){return db[_0xc236('0x31')][_0xc236('0x28')](_0x1c07d7,{'where':{'id':_0x1c07d7['id']},'transaction':_0x5d627d})[_0xc236('0x29')](function(){return db['VoiceExtension'][_0xc236('0x4c')]({'where':{'VoicePrefixId':_0x1c07d7['id']},'transaction':_0x5d627d})[_0xc236('0x29')](function(){return db[_0xc236('0x53')][_0xc236('0x4b')]({'where':{'id':_0x1c07d7['VoiceExtensionId']},'raw':!![]})[_0xc236('0x29')](function(_0x4a433e){return createVoicePrefixExtensions(_0x1c07d7,_0x4a433e,_0x5d627d);});});});})[_0xc236('0x29')](function(){return db['VoicePrefix'][_0xc236('0x6f')](_0x1c07d7['id']);})[_0xc236('0x29')](respondWithResult(_0x2c8f89,null))['catch'](handleError(_0x2c8f89,null));};exports['addAgents']=function(_0x4ec6d1,_0x930527,_0x4e9624){return db[_0xc236('0x31')][_0xc236('0x4b')]({'where':{'id':_0x4ec6d1['params']['id']}})[_0xc236('0x29')](handleEntityNotFound(_0x930527,null))[_0xc236('0x29')](function(_0x4d7e8d){if(_0x4d7e8d){return _0x4d7e8d[_0xc236('0x70')](_0x4ec6d1[_0xc236('0x6d')][_0xc236('0x71')],_[_0xc236('0x72')](_0x4ec6d1['body'],[_0xc236('0x71'),'id'])||{})[_0xc236('0x73')](function(_0x14cbad){for(var _0x1a27c9=0x0;_0x1a27c9<_0x4ec6d1[_0xc236('0x6d')][_0xc236('0x71')][_0xc236('0x3a')];_0x1a27c9+=0x1){socket['emit']('userVoicePrefix:save',{'UserId':Number(_0x4ec6d1[_0xc236('0x6d')][_0xc236('0x71')][_0x1a27c9]),'VoicePrefixId':Number(_0x4ec6d1[_0xc236('0x4d')]['id'])});}return _0x14cbad;});}})[_0xc236('0x29')](respondWithResult(_0x930527,null))[_0xc236('0x49')](handleError(_0x930527,null));};exports[_0xc236('0x74')]=function(_0x8967c,_0x1c6923,_0x4df1a5){return db['VoicePrefix'][_0xc236('0x4b')]({'where':{'id':_0x8967c['params']['id']}})[_0xc236('0x29')](handleEntityNotFound(_0x1c6923,null))[_0xc236('0x29')](function(_0x25d982){if(_0x25d982){return _0x25d982['removeAgents'](_0x8967c[_0xc236('0x34')]['ids'])[_0xc236('0x29')](function(){if(_[_0xc236('0x75')](_0x8967c[_0xc236('0x34')][_0xc236('0x71')])){for(var _0x48cf03=0x0;_0x48cf03<_0x8967c[_0xc236('0x34')][_0xc236('0x71')]['length'];_0x48cf03+=0x1){socket[_0xc236('0x76')](_0xc236('0x77'),{'UserId':Number(_0x8967c[_0xc236('0x34')][_0xc236('0x71')][_0x48cf03]),'VoicePrefixId':Number(_0x8967c[_0xc236('0x4d')]['id'])});}}else{socket[_0xc236('0x76')](_0xc236('0x77'),{'UserId':Number(_0x8967c['query'][_0xc236('0x71')]),'VoicePrefixId':Number(_0x8967c[_0xc236('0x4d')]['id'])});}});}})[_0xc236('0x29')](respondWithStatusCode(_0x1c6923,null))[_0xc236('0x49')](handleError(_0x1c6923,null));};exports['getAgents']=function(_0x3646c6,_0x1ee8d0,_0x50d1c6){var _0x40fd6d={};var _0x593b62={};var _0x25f91e;var _0xfc94e8;return db['VoicePrefix'][_0xc236('0x78')]({'where':{'id':_0x3646c6[_0xc236('0x4d')]['id']}})['then'](handleEntityNotFound(_0x1ee8d0,null))['then'](function(_0x2a9308){if(_0x2a9308){_0x25f91e=_0x2a9308;_0x593b62[_0xc236('0x3b')]=_[_0xc236('0x35')](db[_0xc236('0x79')][_0xc236('0x32')]);_0x593b62[_0xc236('0x34')]=_['keys'](_0x3646c6[_0xc236('0x34')]);_0x593b62[_0xc236('0x36')]=_[_0xc236('0x37')](_0x593b62[_0xc236('0x3b')],_0x593b62['query']);_0x40fd6d[_0xc236('0x38')]=_[_0xc236('0x37')](_0x593b62[_0xc236('0x3b')],qs[_0xc236('0x39')](_0x3646c6[_0xc236('0x34')]['fields']));_0x40fd6d['attributes']=_0x40fd6d[_0xc236('0x38')]['length']?_0x40fd6d[_0xc236('0x38')]:_0x593b62[_0xc236('0x3b')];_0x40fd6d[_0xc236('0x3e')]=qs[_0xc236('0x3f')](_0x3646c6['query'][_0xc236('0x3f')]);_0x40fd6d['where']=qs[_0xc236('0x36')](_['pick'](_0x3646c6[_0xc236('0x34')],_0x593b62[_0xc236('0x36')]));if(_0x3646c6[_0xc236('0x34')][_0xc236('0x40')]){_0x40fd6d[_0xc236('0x41')]=_[_0xc236('0x42')](_0x40fd6d[_0xc236('0x41')],{'$or':_[_0xc236('0x30')](_0x40fd6d[_0xc236('0x38')],function(_0x577ace){var _0x4849a6={};_0x4849a6[_0x577ace]={'$like':'%'+_0x3646c6[_0xc236('0x34')][_0xc236('0x40')]+'%'};return _0x4849a6;})});}_0x40fd6d=_[_0xc236('0x42')]({},_0x40fd6d,_0x3646c6[_0xc236('0x45')]);return _0x25f91e[_0xc236('0x7a')](_0x40fd6d);}})[_0xc236('0x29')](function(_0x557ad9){if(_0x557ad9){_0xfc94e8=_0x557ad9[_0xc236('0x3a')];if(!_0x3646c6[_0xc236('0x34')][_0xc236('0x3c')](_0xc236('0x3d'))){_0x40fd6d[_0xc236('0x22')]=qs[_0xc236('0x22')](_0x3646c6[_0xc236('0x34')][_0xc236('0x22')]);_0x40fd6d[_0xc236('0x21')]=qs[_0xc236('0x21')](_0x3646c6[_0xc236('0x34')][_0xc236('0x21')]);}return _0x25f91e[_0xc236('0x7a')](_0x40fd6d);}})[_0xc236('0x29')](function(_0x475c8f){if(_0x475c8f){return _0x475c8f?{'count':_0xfc94e8,'rows':_0x475c8f}:null;}})['then'](respondWithResult(_0x1ee8d0,null))[_0xc236('0x49')](handleError(_0x1ee8d0,null));};exports[_0xc236('0x7b')]=function(_0x17080e,_0x1070a3,_0x2bc6ed){var _0x4ed695={};var _0x424b51={};var _0x7bbb2c;var _0x1a938e;return db['VoicePrefix'][_0xc236('0x78')]({'where':{'id':_0x17080e['params']['id']}})['then'](handleEntityNotFound(_0x1070a3,null))[_0xc236('0x29')](function(_0x436845){if(_0x436845){_0x7bbb2c=_0x436845;_0x424b51[_0xc236('0x3b')]=_[_0xc236('0x35')](db[_0xc236('0x7c')]['rawAttributes']);_0x424b51[_0xc236('0x34')]=_[_0xc236('0x35')](_0x17080e[_0xc236('0x34')]);_0x424b51[_0xc236('0x36')]=_[_0xc236('0x37')](_0x424b51['model'],_0x424b51['query']);_0x4ed695[_0xc236('0x38')]=_[_0xc236('0x37')](_0x424b51[_0xc236('0x3b')],qs[_0xc236('0x39')](_0x17080e['query'][_0xc236('0x39')]));_0x4ed695[_0xc236('0x38')]=_0x4ed695[_0xc236('0x38')][_0xc236('0x3a')]?_0x4ed695[_0xc236('0x38')]:_0x424b51['model'];_0x4ed695[_0xc236('0x3e')]=qs[_0xc236('0x3f')](_0x17080e[_0xc236('0x34')][_0xc236('0x3f')]);_0x4ed695[_0xc236('0x41')]=qs['filters'](_[_0xc236('0x7d')](_0x17080e[_0xc236('0x34')],_0x424b51['filters']));if(_0x17080e[_0xc236('0x34')][_0xc236('0x40')]){_0x4ed695[_0xc236('0x41')]=_[_0xc236('0x42')](_0x4ed695[_0xc236('0x41')],{'$or':_['map'](_0x4ed695[_0xc236('0x38')],function(_0x182750){var _0x32f936={};_0x32f936[_0x182750]={'$like':'%'+_0x17080e[_0xc236('0x34')][_0xc236('0x40')]+'%'};return _0x32f936;})});}_0x4ed695=_[_0xc236('0x42')]({},_0x4ed695,_0x17080e['options']);return _0x7bbb2c[_0xc236('0x7b')](_0x4ed695);}})['then'](function(_0x391ad3){if(_0x391ad3){_0x1a938e=_0x391ad3['length'];if(!_0x17080e[_0xc236('0x34')]['hasOwnProperty'](_0xc236('0x3d'))){_0x4ed695['limit']=qs[_0xc236('0x22')](_0x17080e[_0xc236('0x34')][_0xc236('0x22')]);_0x4ed695[_0xc236('0x21')]=qs[_0xc236('0x21')](_0x17080e[_0xc236('0x34')]['offset']);}return _0x7bbb2c[_0xc236('0x7b')](_0x4ed695);}})[_0xc236('0x29')](function(_0x32d1cc){if(_0x32d1cc){return _0x32d1cc?{'count':_0x1a938e,'rows':_0x32d1cc}:null;}})[_0xc236('0x29')](respondWithResult(_0x1070a3,null))[_0xc236('0x49')](handleError(_0x1070a3,null));};exports[_0xc236('0x7e')]=function(_0x424875,_0x14177d,_0x30e7b3){var _0x23fc57=_0x424875[_0xc236('0x6d')][_0xc236('0x71')];var _0x2bed4b;return db[_0xc236('0x7c')][_0xc236('0x7f')]({'where':{'id':_0x23fc57},'attributes':['id'],'include':[{'model':db[_0xc236('0x79')],'as':_0xc236('0x80'),'attributes':['id',_0xc236('0x2d'),_0xc236('0x81'),'voicePause',_0xc236('0x82')],'raw':!![]}]})[_0xc236('0x29')](function(_0x210989){if(_0x210989){_0x2bed4b=_0x210989;var _0x5164e5=_[_0xc236('0x83')](_0x210989,function(_0x32765e){var _0x4f9faf=_0x32765e[_0xc236('0x52')]({'plain':!![]});return _0x4f9faf[_0xc236('0x80')];});return db['VoicePrefix'][_0xc236('0x4b')]({'where':{'id':_0x424875[_0xc236('0x4d')]['id']}})[_0xc236('0x29')](function(_0xfb7a98){return db['sequelize'][_0xc236('0x51')](function(_0x53287f){return _0xfb7a98[_0xc236('0x7e')](_0x23fc57,{'transaction':_0x53287f})[_0xc236('0x29')](function(){return BPromise[_0xc236('0x84')](_0x2bed4b,function(_0x2900ed){return db[_0xc236('0x85')]['upsert']({'TeamId':_0x2900ed['id'],'VoicePrefixId':_0x424875[_0xc236('0x4d')]['id']},{'transaction':_0x53287f});});})[_0xc236('0x29')](function(){return BPromise[_0xc236('0x84')](_0x5164e5,function(_0x29131a){return db[_0xc236('0x86')][_0xc236('0x87')]({'where':{'UserId':_0x29131a['id'],'VoicePrefixId':_0x424875[_0xc236('0x4d')]['id']},'transaction':_0x53287f});});})[_0xc236('0x29')](function(){_0x5164e5[_0xc236('0x88')](function(_0x833f85){socket[_0xc236('0x76')]('userVoicePrefix:save',{'UserId':_0x833f85['id'],'VoicePrefixId':_0xfb7a98['id']});});});});});}})['then'](respondWithStatusCode(_0x14177d,null))[_0xc236('0x49')](handleError(_0x14177d,null));};exports[_0xc236('0x89')]=function(_0x2207a8,_0x36fd37,_0x2494d9){return db[_0xc236('0x7c')][_0xc236('0x7f')]({'where':{'id':_0x2207a8[_0xc236('0x34')][_0xc236('0x71')]},'attributes':['id'],'include':[{'model':db[_0xc236('0x79')],'as':_0xc236('0x80'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x36fd37,null))[_0xc236('0x29')](function(_0x1669c4){var _0x29ae97=_[_0xc236('0x30')](_0x1669c4,'id');var _0x2a8f63=[];var _0x38aecf=[];var _0x2b46e4=squel[_0xc236('0x8a')]();_0x2b46e4['field']('tq.TeamId')['from'](_0xc236('0x8b'),'tq')['join'](_0xc236('0x8c'),'ut',_0xc236('0x8d'))[_0xc236('0x41')](_0xc236('0x8e'),_0x2207a8[_0xc236('0x4d')]['id']);for(var _0x43216e=0x0;_0x43216e<_0x1669c4[_0xc236('0x3a')];_0x43216e+=0x1){let _0x49d232=_0x1669c4[_0x43216e];for(var _0x870908=0x0;_0x870908<_0x49d232[_0xc236('0x80')][_0xc236('0x3a')];_0x870908+=0x1){let _0x364d8d=_0x49d232[_0xc236('0x80')][_0x870908];var _0x53cd27=_0x2b46e4[_0xc236('0x8f')]();_0x53cd27[_0xc236('0x41')](_0xc236('0x90'),_0x364d8d['id']);_0x38aecf[_0xc236('0x65')](db[_0xc236('0x50')][_0xc236('0x34')](_0x53cd27[_0xc236('0x91')](),{'type':db[_0xc236('0x50')][_0xc236('0x92')]['SELECT']})[_0xc236('0x29')](function(_0x281d3c){if(_0x281d3c[_0xc236('0x3a')]===0x1){return _0x364d8d['id'];}else{var _0x33cdb2=_['every'](_[_0xc236('0x30')](_0x281d3c,_0xc236('0x93')),function(_0x5ca99c){return _[_0xc236('0x94')](_0x29ae97,_0x5ca99c);});if(_0x33cdb2){return _0x364d8d['id'];}}}));}}return BPromise[_0xc236('0x95')](_0x38aecf)[_0xc236('0x29')](function(_0x32658a){_0x2a8f63=_(_0x2a8f63)[_0xc236('0x96')](_0x32658a)[_0xc236('0x97')]()[_0xc236('0x98')]();return db[_0xc236('0x31')]['find']({'where':{'id':_0x2207a8[_0xc236('0x4d')]['id']}})[_0xc236('0x29')](function(_0x26c461){return db[_0xc236('0x50')][_0xc236('0x51')](function(_0x57a83b){return _0x26c461[_0xc236('0x89')](_0x2207a8['query'][_0xc236('0x71')],{'transaction':_0x57a83b})[_0xc236('0x29')](function(){if(!_[_0xc236('0x99')](_0x2a8f63)){return _0x26c461[_0xc236('0x74')](_0x2a8f63,{'transaction':_0x57a83b});}})[_0xc236('0x29')](function(){_0x2a8f63[_0xc236('0x88')](function(_0x2e4215){socket[_0xc236('0x76')](_0xc236('0x77'),{'UserId':_0x2e4215,'VoicePrefixId':_0x26c461['id']});});});});});});})[_0xc236('0x29')](respondWithStatusCode(_0x36fd37,null))[_0xc236('0x49')](handleError(_0x36fd37,null));};
\ No newline at end of file
+var _0xb7aa=['Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','system','Voice\x20Prefix\x20Extension','priority','appdata','prefix','NoOp','Voice\x20Prefix','VoicePrefixId','bulkCreate','push','Set','CDR(prefix)=','callerIdAll','No\x20callerid\x20available','${EXTEN:','length','charAt','update','system-','VoiceExtensionId','findById','addAgents','ids','spread','emit','userVoicePrefix:save','removeAgents','userVoicePrefix:remove','getAgents','findOne','User','options','hasOwnProperty','nolimit','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','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','localhost','socket.io-emitter','register','sendStatus','status','end','offset','undefined','limit','count','set','apply','reject','save','then','destroy','get','UserProfileResource','stack','name','send','index','VoicePrefix','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','order','sort','where','pick','filter','merge','includeAll','rows','show','params','rawAttributes','keys','find','catch','describe','create','sequelize','body','VoiceExtension','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','error'];(function(_0x29b6bc,_0x2967d1){var _0x5fa66d=function(_0x1bb198){while(--_0x1bb198){_0x29b6bc['push'](_0x29b6bc['shift']());}};_0x5fa66d(++_0x2967d1);}(_0xb7aa,0x11a));var _0xab7a=function(_0x797339,_0x4dc36d){_0x797339=_0x797339-0x0;var _0x24be8c=_0xb7aa[_0x797339];return _0x24be8c;};'use strict';var emlformat=require(_0xab7a('0x0'));var rimraf=require(_0xab7a('0x1'));var zipdir=require(_0xab7a('0x2'));var jsonpatch=require(_0xab7a('0x3'));var rp=require(_0xab7a('0x4'));var moment=require(_0xab7a('0x5'));var BPromise=require(_0xab7a('0x6'));var Mustache=require(_0xab7a('0x7'));var util=require(_0xab7a('0x8'));var path=require(_0xab7a('0x9'));var sox=require('sox');var csv=require(_0xab7a('0xa'));var ejs=require(_0xab7a('0xb'));var fs=require('fs');var fs_extra=require(_0xab7a('0xc'));var _=require(_0xab7a('0xd'));var squel=require('squel');var crypto=require(_0xab7a('0xe'));var jsforce=require(_0xab7a('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xab7a('0xa'));var querystring=require(_0xab7a('0x10'));var Papa=require(_0xab7a('0x11'));var Redis=require(_0xab7a('0x12'));var authService=require(_0xab7a('0x13'));var qs=require(_0xab7a('0x14'));var as=require(_0xab7a('0x15'));var hardwareService=require(_0xab7a('0x16'));var logger=require(_0xab7a('0x17'))(_0xab7a('0x18'));var utils=require('../../config/utils');var config=require(_0xab7a('0x19'));var licenseUtil=require(_0xab7a('0x1a'));var db=require(_0xab7a('0x1b'))['db'];config[_0xab7a('0x1c')]=_['defaults'](config[_0xab7a('0x1c')],{'host':_0xab7a('0x1d'),'port':0x18eb});var socket=require(_0xab7a('0x1e'))(new Redis(config[_0xab7a('0x1c')]));require('./voicePrefix.socket')[_0xab7a('0x1f')](socket);function respondWithStatusCode(_0x1cc43f,_0x4a78b8){_0x4a78b8=_0x4a78b8||0xcc;return function(_0x899a95){if(_0x899a95){return _0x1cc43f[_0xab7a('0x20')](_0x4a78b8);}return _0x1cc43f[_0xab7a('0x21')](_0x4a78b8)[_0xab7a('0x22')]();};}function respondWithResult(_0x30146c,_0x522f10){_0x522f10=_0x522f10||0xc8;return function(_0x198e78){if(_0x198e78){return _0x30146c[_0xab7a('0x21')](_0x522f10)['json'](_0x198e78);}};}function respondWithFilteredResult(_0x203980,_0x177c90){return function(_0x187f51){if(_0x187f51){var _0xc3bb41=typeof _0x177c90[_0xab7a('0x23')]===_0xab7a('0x24')&&typeof _0x177c90[_0xab7a('0x25')]==='undefined';var _0x41f3c0=_0x187f51[_0xab7a('0x26')];var _0x16ce64=_0xc3bb41?0x0:_0x177c90[_0xab7a('0x23')];var _0x2fa287=_0xc3bb41?_0x187f51[_0xab7a('0x26')]:_0x177c90[_0xab7a('0x23')]+_0x177c90[_0xab7a('0x25')];var _0x169988;if(_0x2fa287>=_0x41f3c0){_0x2fa287=_0x41f3c0;_0x169988=0xc8;}else{_0x169988=0xce;}_0x203980[_0xab7a('0x21')](_0x169988);return _0x203980[_0xab7a('0x27')]('Content-Range',_0x16ce64+'-'+_0x2fa287+'/'+_0x41f3c0)['json'](_0x187f51);}return null;};}function patchUpdates(_0x5c4c3e){return function(_0x60ad2b){try{jsonpatch[_0xab7a('0x28')](_0x60ad2b,_0x5c4c3e,!![]);}catch(_0x33f484){return BPromise[_0xab7a('0x29')](_0x33f484);}return _0x60ad2b[_0xab7a('0x2a')]();};}function saveUpdates(_0x8c1e1f,_0x3324f2){return function(_0x533680){if(_0x533680){return _0x533680['update'](_0x8c1e1f)[_0xab7a('0x2b')](function(_0x4a13dd){return _0x4a13dd;});}return null;};}function removeEntity(_0x4d8e6b,_0x249904){return function(_0x570a8b){if(_0x570a8b){return _0x570a8b[_0xab7a('0x2c')]()[_0xab7a('0x2b')](function(){var _0x81dc99=_0x570a8b[_0xab7a('0x2d')]({'plain':!![]});var _0x2b0885='VoicePrefixes';return db[_0xab7a('0x2e')][_0xab7a('0x2c')]({'where':{'type':_0x2b0885,'resourceId':_0x81dc99['id']}})[_0xab7a('0x2b')](function(){return _0x570a8b;});})['then'](function(){_0x4d8e6b[_0xab7a('0x21')](0xcc)[_0xab7a('0x22')]();});}};}function handleEntityNotFound(_0x32945c,_0x599375){return function(_0x5d16f4){if(!_0x5d16f4){_0x32945c[_0xab7a('0x20')](0x194);}return _0x5d16f4;};}function handleError(_0x5b5501,_0x3f5219){_0x3f5219=_0x3f5219||0x1f4;return function(_0x3dfbaf){logger['error'](_0x3dfbaf[_0xab7a('0x2f')]);if(_0x3dfbaf[_0xab7a('0x30')]){delete _0x3dfbaf[_0xab7a('0x30')];}_0x5b5501[_0xab7a('0x21')](_0x3f5219)[_0xab7a('0x31')](_0x3dfbaf);};}exports[_0xab7a('0x32')]=function(_0x58a509,_0x44ba02){var _0x554154={},_0x304af8={},_0x3a7c55={'count':0x0,'rows':[]};var _0x20a0a8=_['map'](db[_0xab7a('0x33')]['rawAttributes'],function(_0x59fb42){return{'name':_0x59fb42[_0xab7a('0x34')],'type':_0x59fb42[_0xab7a('0x35')][_0xab7a('0x36')]};});_0x304af8[_0xab7a('0x37')]=_[_0xab7a('0x38')](_0x20a0a8,_0xab7a('0x30'));_0x304af8[_0xab7a('0x39')]=_['keys'](_0x58a509[_0xab7a('0x39')]);_0x304af8[_0xab7a('0x3a')]=_[_0xab7a('0x3b')](_0x304af8[_0xab7a('0x37')],_0x304af8['query']);_0x554154[_0xab7a('0x3c')]=_[_0xab7a('0x3b')](_0x304af8[_0xab7a('0x37')],qs['fields'](_0x58a509[_0xab7a('0x39')][_0xab7a('0x3d')]));_0x554154[_0xab7a('0x3c')]=_0x554154[_0xab7a('0x3c')]['length']?_0x554154[_0xab7a('0x3c')]:_0x304af8[_0xab7a('0x37')];if(!_0x58a509[_0xab7a('0x39')]['hasOwnProperty']('nolimit')){_0x554154[_0xab7a('0x25')]=qs['limit'](_0x58a509[_0xab7a('0x39')][_0xab7a('0x25')]);_0x554154['offset']=qs['offset'](_0x58a509[_0xab7a('0x39')][_0xab7a('0x23')]);}_0x554154[_0xab7a('0x3e')]=qs[_0xab7a('0x3f')](_0x58a509['query']['sort']);_0x554154[_0xab7a('0x40')]=qs[_0xab7a('0x3a')](_[_0xab7a('0x41')](_0x58a509[_0xab7a('0x39')],_0x304af8['filters']),_0x20a0a8);if(_0x58a509[_0xab7a('0x39')][_0xab7a('0x42')]){_0x554154[_0xab7a('0x40')]=_['merge'](_0x554154[_0xab7a('0x40')],{'$or':_[_0xab7a('0x38')](_0x20a0a8,function(_0x2c42a9){if(_0x2c42a9[_0xab7a('0x35')]!=='VIRTUAL'){var _0x1e431d={};_0x1e431d[_0x2c42a9['name']]={'$like':'%'+_0x58a509[_0xab7a('0x39')][_0xab7a('0x42')]+'%'};return _0x1e431d;}})});}_0x554154=_[_0xab7a('0x43')]({},_0x554154,_0x58a509['options']);var _0x103826={'where':_0x554154[_0xab7a('0x40')]};return db[_0xab7a('0x33')][_0xab7a('0x26')](_0x103826)['then'](function(_0x2ddf18){_0x3a7c55[_0xab7a('0x26')]=_0x2ddf18;if(_0x58a509[_0xab7a('0x39')][_0xab7a('0x44')]){_0x554154['include']=[{'all':!![]}];}return db[_0xab7a('0x33')]['findAll'](_0x554154);})[_0xab7a('0x2b')](function(_0x4d980a){_0x3a7c55[_0xab7a('0x45')]=_0x4d980a;return _0x3a7c55;})[_0xab7a('0x2b')](respondWithFilteredResult(_0x44ba02,_0x554154))['catch'](handleError(_0x44ba02,null));};exports[_0xab7a('0x46')]=function(_0x600bb8,_0x1e890b){var _0x2e31e9={'raw':![],'where':{'id':_0x600bb8[_0xab7a('0x47')]['id']}},_0xe9afc0={};_0xe9afc0['model']=_['keys'](db[_0xab7a('0x33')][_0xab7a('0x48')]);_0xe9afc0[_0xab7a('0x39')]=_[_0xab7a('0x49')](_0x600bb8[_0xab7a('0x39')]);_0xe9afc0[_0xab7a('0x3a')]=_[_0xab7a('0x3b')](_0xe9afc0[_0xab7a('0x37')],_0xe9afc0[_0xab7a('0x39')]);_0x2e31e9[_0xab7a('0x3c')]=_[_0xab7a('0x3b')](_0xe9afc0[_0xab7a('0x37')],qs['fields'](_0x600bb8['query'][_0xab7a('0x3d')]));_0x2e31e9[_0xab7a('0x3c')]=_0x2e31e9[_0xab7a('0x3c')]['length']?_0x2e31e9[_0xab7a('0x3c')]:_0xe9afc0['model'];if(_0x600bb8[_0xab7a('0x39')][_0xab7a('0x44')]){_0x2e31e9['include']=[{'all':!![]}];}_0x2e31e9=_['merge']({},_0x2e31e9,_0x600bb8['options']);return db[_0xab7a('0x33')][_0xab7a('0x4a')](_0x2e31e9)['then'](handleEntityNotFound(_0x1e890b,null))['then'](respondWithResult(_0x1e890b,null))[_0xab7a('0x4b')](handleError(_0x1e890b,null));};exports[_0xab7a('0x2c')]=function(_0xf7344c,_0x1ba1ef){return db[_0xab7a('0x33')]['find']({'where':{'id':_0xf7344c['params']['id']}})[_0xab7a('0x2b')](handleEntityNotFound(_0x1ba1ef,null))['then'](removeEntity(_0x1ba1ef,null))[_0xab7a('0x4b')](handleError(_0x1ba1ef,null));};exports['describe']=function(_0x32c1b7,_0x3f73b8){return db[_0xab7a('0x33')][_0xab7a('0x4c')]()[_0xab7a('0x2b')](respondWithResult(_0x3f73b8,null))[_0xab7a('0x4b')](handleError(_0x3f73b8,null));};exports[_0xab7a('0x4d')]=function(_0x2bfd65,_0x33f8e7){var _0xea5de5;return db[_0xab7a('0x4e')]['transaction'](function(_0x3bfdae){return db[_0xab7a('0x33')][_0xab7a('0x4d')](_0x2bfd65[_0xab7a('0x4f')],{'transaction':_0x3bfdae})['then'](function(_0x57b506){_0xea5de5=_0x57b506['get']({'plain':!![]});return db[_0xab7a('0x50')][_0xab7a('0x4a')]({'where':{'id':_0xea5de5['VoiceExtensionId']},'raw':!![]})[_0xab7a('0x2b')](function(_0x28d5e9){return createVoicePrefixExtensions(_0xea5de5,_0x28d5e9,_0x3bfdae);});});})[_0xab7a('0x2b')](function(){var _0x3a501b=_0x2bfd65[_0xab7a('0x51')][_0xab7a('0x2d')]({'plain':!![]});if(!_0x3a501b)throw new Error(_0xab7a('0x52'));if(_0x3a501b[_0xab7a('0x53')]===_0xab7a('0x51')){var _0x3fb2fe=_0xea5de5;return db[_0xab7a('0x54')][_0xab7a('0x4a')]({'where':{'name':'VoicePrefixes','userProfileId':_0x3a501b['userProfileId']},'raw':!![]})[_0xab7a('0x2b')](function(_0x1ca03c){if(_0x1ca03c&&_0x1ca03c[_0xab7a('0x55')]===0x0){return db['UserProfileResource'][_0xab7a('0x4d')]({'name':_0x3fb2fe['name'],'resourceId':_0x3fb2fe['id'],'type':_0x1ca03c[_0xab7a('0x30')],'sectionId':_0x1ca03c['id']},{})['then'](function(){return _0xea5de5;});}else{return _0xea5de5;}})[_0xab7a('0x4b')](function(_0x4d2ebb){logger[_0xab7a('0x56')](_0xab7a('0x57'),_0x4d2ebb);throw _0x4d2ebb;});}return _0xea5de5;})[_0xab7a('0x2b')](respondWithResult(_0x33f8e7,null))[_0xab7a('0x4b')](handleError(_0x33f8e7,null));};function Extension(_0x17aa25,_0x13762f,_0x23055d,_0xfb96fa){this[_0xab7a('0x58')]='from-sip';this['exten']=_0x17aa25;this['app']=_0x23055d;this[_0xab7a('0x35')]=_0xab7a('0x59');this['description']=_0xab7a('0x5a');this[_0xab7a('0x5b')]=_0x13762f;this[_0xab7a('0x5c')]=_0xfb96fa;}function createVoicePrefixExtensions(_0x56a225,_0x14fb46,_0x107677){return new BPromise(function(_0x1db24b,_0x5312e4){var _0x4c84ff=new Extension(formatPrefixName(_0x56a225[_0xab7a('0x5d')]),0x1,_0xab7a('0x5e'),_0xab7a('0x5f'));_0x4c84ff[_0xab7a('0x60')]=_0x56a225['id'];return db[_0xab7a('0x50')][_0xab7a('0x4d')](_0x4c84ff,{'transaction':_0x107677})[_0xab7a('0x2b')](function(_0x7e765a){var _0x37db85=_0x7e765a[_0xab7a('0x2d')]({'plain':!![]});var _0x272dde=_['map'](addVoicePrefixExtensions(_0x56a225,_0x14fb46),function(_0x4263ac){_0x4263ac['VoiceExtensionId']=_0x37db85['id'];_0x4263ac[_0xab7a('0x60')]=_0x56a225['id'];return _0x4263ac;});return db[_0xab7a('0x50')][_0xab7a('0x61')](_0x272dde,{'transaction':_0x107677})['then'](function(_0x520c83){if(!_0x520c83){return _0x5312e4('Extensions\x20creation\x20failed');}else{return _0x1db24b(_0x520c83);}})['catch'](function(_0x98441){return _0x5312e4(_0x98441);});});;});};function addVoicePrefixExtensions(_0x274e91,_0x4a0461){var _0x40d487=[];var _0xaae5c2=formatPrefixName(_0x274e91[_0xab7a('0x5d')]);_0x40d487[_0xab7a('0x62')](new Extension(_0xaae5c2,0x2,_0xab7a('0x63'),_0xab7a('0x64')+_0x274e91[_0xab7a('0x30')]));if(_0x274e91[_0xab7a('0x65')]){_0x40d487[_0xab7a('0x62')](new Extension(_0xaae5c2,0x3,_0xab7a('0x63'),'PREFIX-CALLERIDALL='+_0x274e91[_0xab7a('0x65')]));}else{_0x40d487[_0xab7a('0x62')](new Extension(_0xaae5c2,0x3,_0xab7a('0x5e'),_0xab7a('0x66')));}_0x40d487[_0xab7a('0x62')](new Extension(_0xaae5c2,0x4,'goto',_0x4a0461[_0xab7a('0x58')]+','+_0xab7a('0x67')+(0x8+_0x274e91[_0xab7a('0x30')]['length'])+'}'+','+0x1));return _0x40d487;}function formatPrefixName(_0x48eb78){var _0x40d4f0='_';for(var _0x4cc81a=0x0;_0x4cc81a<_0x48eb78[_0xab7a('0x68')];_0x4cc81a++){if(_0x48eb78['charAt'](_0x4cc81a)=='-'){_0x40d4f0+=_0x48eb78[_0xab7a('0x69')](_0x4cc81a);}else{_0x40d4f0+='['+_0x48eb78[_0xab7a('0x69')](_0x4cc81a)+']';}}_0x40d4f0+='.';return _0x40d4f0;}exports[_0xab7a('0x6a')]=function(_0xfb3730,_0x38ef99,_0x354556){var _0xb98aa8=_0xfb3730['body'];_0xb98aa8['prefix']=_0xab7a('0x6b')+_0xb98aa8[_0xab7a('0x30')]+'-';return db[_0xab7a('0x4e')]['transaction'](function(_0x2c54c3){return db['VoicePrefix'][_0xab7a('0x6a')](_0xb98aa8,{'where':{'id':_0xb98aa8['id']},'transaction':_0x2c54c3})[_0xab7a('0x2b')](function(){return db[_0xab7a('0x50')][_0xab7a('0x2c')]({'where':{'VoicePrefixId':_0xb98aa8['id']},'transaction':_0x2c54c3})[_0xab7a('0x2b')](function(){return db[_0xab7a('0x50')][_0xab7a('0x4a')]({'where':{'id':_0xb98aa8[_0xab7a('0x6c')]},'raw':!![]})[_0xab7a('0x2b')](function(_0x4d6b8c){return createVoicePrefixExtensions(_0xb98aa8,_0x4d6b8c,_0x2c54c3);});});});})[_0xab7a('0x2b')](function(){return db[_0xab7a('0x33')][_0xab7a('0x6d')](_0xb98aa8['id']);})['then'](respondWithResult(_0x38ef99,null))[_0xab7a('0x4b')](handleError(_0x38ef99,null));};exports[_0xab7a('0x6e')]=function(_0x368608,_0x144332,_0x5c3255){return db[_0xab7a('0x33')][_0xab7a('0x4a')]({'where':{'id':_0x368608[_0xab7a('0x47')]['id']}})[_0xab7a('0x2b')](handleEntityNotFound(_0x144332,null))[_0xab7a('0x2b')](function(_0x3c48f1){if(_0x3c48f1){return _0x3c48f1[_0xab7a('0x6e')](_0x368608[_0xab7a('0x4f')][_0xab7a('0x6f')],_['omit'](_0x368608['body'],[_0xab7a('0x6f'),'id'])||{})[_0xab7a('0x70')](function(_0x5ef7f1){for(var _0x648e7f=0x0;_0x648e7f<_0x368608['body'][_0xab7a('0x6f')]['length'];_0x648e7f+=0x1){socket[_0xab7a('0x71')](_0xab7a('0x72'),{'UserId':Number(_0x368608[_0xab7a('0x4f')][_0xab7a('0x6f')][_0x648e7f]),'VoicePrefixId':Number(_0x368608[_0xab7a('0x47')]['id'])});}return _0x5ef7f1;});}})[_0xab7a('0x2b')](respondWithResult(_0x144332,null))[_0xab7a('0x4b')](handleError(_0x144332,null));};exports[_0xab7a('0x73')]=function(_0x57fa58,_0x28533b,_0x392d61){return db['VoicePrefix'][_0xab7a('0x4a')]({'where':{'id':_0x57fa58[_0xab7a('0x47')]['id']}})['then'](handleEntityNotFound(_0x28533b,null))[_0xab7a('0x2b')](function(_0x4e186b){if(_0x4e186b){return _0x4e186b[_0xab7a('0x73')](_0x57fa58[_0xab7a('0x39')]['ids'])['then'](function(){if(_['isArray'](_0x57fa58[_0xab7a('0x39')][_0xab7a('0x6f')])){for(var _0x1c4a7f=0x0;_0x1c4a7f<_0x57fa58['query']['ids'][_0xab7a('0x68')];_0x1c4a7f+=0x1){socket[_0xab7a('0x71')](_0xab7a('0x74'),{'UserId':Number(_0x57fa58['query'][_0xab7a('0x6f')][_0x1c4a7f]),'VoicePrefixId':Number(_0x57fa58[_0xab7a('0x47')]['id'])});}}else{socket['emit']('userVoicePrefix:remove',{'UserId':Number(_0x57fa58[_0xab7a('0x39')][_0xab7a('0x6f')]),'VoicePrefixId':Number(_0x57fa58[_0xab7a('0x47')]['id'])});}});}})[_0xab7a('0x2b')](respondWithStatusCode(_0x28533b,null))[_0xab7a('0x4b')](handleError(_0x28533b,null));};exports[_0xab7a('0x75')]=function(_0x3f3556,_0x246127,_0x24d250){var _0x27a754={};var _0xda9552={};var _0x64a146;var _0x20f378;return db[_0xab7a('0x33')][_0xab7a('0x76')]({'where':{'id':_0x3f3556[_0xab7a('0x47')]['id']}})[_0xab7a('0x2b')](handleEntityNotFound(_0x246127,null))[_0xab7a('0x2b')](function(_0x3c5d4a){if(_0x3c5d4a){_0x64a146=_0x3c5d4a;_0xda9552[_0xab7a('0x37')]=_[_0xab7a('0x49')](db[_0xab7a('0x77')][_0xab7a('0x48')]);_0xda9552[_0xab7a('0x39')]=_[_0xab7a('0x49')](_0x3f3556[_0xab7a('0x39')]);_0xda9552[_0xab7a('0x3a')]=_[_0xab7a('0x3b')](_0xda9552[_0xab7a('0x37')],_0xda9552[_0xab7a('0x39')]);_0x27a754['attributes']=_[_0xab7a('0x3b')](_0xda9552['model'],qs[_0xab7a('0x3d')](_0x3f3556[_0xab7a('0x39')][_0xab7a('0x3d')]));_0x27a754[_0xab7a('0x3c')]=_0x27a754[_0xab7a('0x3c')][_0xab7a('0x68')]?_0x27a754[_0xab7a('0x3c')]:_0xda9552['model'];_0x27a754['order']=qs[_0xab7a('0x3f')](_0x3f3556[_0xab7a('0x39')][_0xab7a('0x3f')]);_0x27a754[_0xab7a('0x40')]=qs[_0xab7a('0x3a')](_[_0xab7a('0x41')](_0x3f3556['query'],_0xda9552[_0xab7a('0x3a')]));if(_0x3f3556[_0xab7a('0x39')]['filter']){_0x27a754[_0xab7a('0x40')]=_[_0xab7a('0x43')](_0x27a754[_0xab7a('0x40')],{'$or':_['map'](_0x27a754[_0xab7a('0x3c')],function(_0x5ec87d){var _0x16f9ee={};_0x16f9ee[_0x5ec87d]={'$like':'%'+_0x3f3556[_0xab7a('0x39')]['filter']+'%'};return _0x16f9ee;})});}_0x27a754=_[_0xab7a('0x43')]({},_0x27a754,_0x3f3556[_0xab7a('0x78')]);return _0x64a146[_0xab7a('0x75')](_0x27a754);}})[_0xab7a('0x2b')](function(_0x3dd12f){if(_0x3dd12f){_0x20f378=_0x3dd12f['length'];if(!_0x3f3556['query'][_0xab7a('0x79')](_0xab7a('0x7a'))){_0x27a754[_0xab7a('0x25')]=qs[_0xab7a('0x25')](_0x3f3556[_0xab7a('0x39')][_0xab7a('0x25')]);_0x27a754[_0xab7a('0x23')]=qs[_0xab7a('0x23')](_0x3f3556[_0xab7a('0x39')][_0xab7a('0x23')]);}return _0x64a146[_0xab7a('0x75')](_0x27a754);}})['then'](function(_0x61ef85){if(_0x61ef85){return _0x61ef85?{'count':_0x20f378,'rows':_0x61ef85}:null;}})[_0xab7a('0x2b')](respondWithResult(_0x246127,null))[_0xab7a('0x4b')](handleError(_0x246127,null));};
\ No newline at end of file
index 0621997..043d2bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a29=['hasOwnProperty','exports','../../mysqldb','setMaxListeners','update','remove','emit'];(function(_0x51b8c7,_0x16bcc3){var _0x500cba=function(_0x2ac7d7){while(--_0x2ac7d7){_0x51b8c7['push'](_0x51b8c7['shift']());}};_0x500cba(++_0x16bcc3);}(_0x0a29,0xd4));var _0x90a2=function(_0xec8a0c,_0x712a40){_0xec8a0c=_0xec8a0c-0x0;var _0x41617=_0x0a29[_0xec8a0c];return _0x41617;};'use strict';var EventEmitter=require('events');var VoicePrefix=require(_0x90a2('0x0'))['db']['VoicePrefix'];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x90a2('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x90a2('0x2'),'afterDestroy':_0x90a2('0x3')};function emitEvent(_0xe7a674){return function(_0x1f8124,_0x42b75e,_0x1fe4ef){VoicePrefixEvents[_0x90a2('0x4')](_0xe7a674+':'+_0x1f8124['id'],_0x1f8124);VoicePrefixEvents[_0x90a2('0x4')](_0xe7a674,_0x1f8124);_0x1fe4ef(null);};}for(var e in events){if(events[_0x90a2('0x5')](e)){var event=events[e];VoicePrefix['hook'](e,emitEvent(event));}}module[_0x90a2('0x6')]=VoicePrefixEvents;
\ No newline at end of file
+var _0x94be=['emit','hook','exports','events','../../mysqldb','setMaxListeners','save','update'];(function(_0x196e1b,_0x55fa06){var _0x5e1f18=function(_0x3bdb41){while(--_0x3bdb41){_0x196e1b['push'](_0x196e1b['shift']());}};_0x5e1f18(++_0x55fa06);}(_0x94be,0xd3));var _0xe94b=function(_0x1c2b98,_0x570b0c){_0x1c2b98=_0x1c2b98-0x0;var _0x56bf33=_0x94be[_0x1c2b98];return _0x56bf33;};'use strict';var EventEmitter=require(_0xe94b('0x0'));var VoicePrefix=require(_0xe94b('0x1'))['db']['VoicePrefix'];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0xe94b('0x2')](0x0);var events={'afterCreate':_0xe94b('0x3'),'afterUpdate':_0xe94b('0x4'),'afterDestroy':'remove'};function emitEvent(_0x3f9929){return function(_0x37c3a6,_0x29991a,_0x61ab59){VoicePrefixEvents[_0xe94b('0x5')](_0x3f9929+':'+_0x37c3a6['id'],_0x37c3a6);VoicePrefixEvents[_0xe94b('0x5')](_0x3f9929,_0x37c3a6);_0x61ab59(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoicePrefix[_0xe94b('0x6')](e,emitEvent(event));}}module[_0xe94b('0x7')]=VoicePrefixEvents;
\ No newline at end of file
index f54ab03..ad62679 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba09=['../../config/environment','./voicePrefix.attributes','exports','VoicePrefix','../../config/logger','moment','bluebird','request-promise','path','rimraf'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xba09,0xcc));var _0x9ba0=function(_0x2114e3,_0x2c3028){_0x2114e3=_0x2114e3-0x0;var _0x6bff25=_0xba09[_0x2114e3];return _0x6bff25;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x9ba0('0x0'))('api');var moment=require(_0x9ba0('0x1'));var BPromise=require(_0x9ba0('0x2'));var rp=require(_0x9ba0('0x3'));var fs=require('fs');var path=require(_0x9ba0('0x4'));var rimraf=require(_0x9ba0('0x5'));var config=require(_0x9ba0('0x6'));var attributes=require(_0x9ba0('0x7'));module[_0x9ba0('0x8')]=function(_0x379f6c,_0x511584){return _0x379f6c['define'](_0x9ba0('0x9'),attributes,{'tableName':'voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x160d=['path','rimraf','../../config/environment','./voicePrefix.attributes','define','VoicePrefix','voice_prefixes','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0x160d,0x118));var _0xd160=function(_0x181850,_0x281503){_0x181850=_0x181850-0x0;var _0x211252=_0x160d[_0x181850];return _0x211252;};'use strict';var _=require(_0xd160('0x0'));var util=require(_0xd160('0x1'));var logger=require(_0xd160('0x2'))('api');var moment=require(_0xd160('0x3'));var BPromise=require(_0xd160('0x4'));var rp=require(_0xd160('0x5'));var fs=require('fs');var path=require(_0xd160('0x6'));var rimraf=require(_0xd160('0x7'));var config=require(_0xd160('0x8'));var attributes=require(_0xd160('0x9'));module['exports']=function(_0x368a5f,_0xbdc243){return _0x368a5f[_0xd160('0xa')](_0xd160('0xb'),attributes,{'tableName':_0xd160('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d7294bb..e3466d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2272=['jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./voicePrefix.socket','request','then','info','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x413e01,_0x58ac57){var _0x5c3566=function(_0xd9396b){while(--_0xd9396b){_0x413e01['push'](_0x413e01['shift']());}};_0x5c3566(++_0x58ac57);}(_0x2272,0xd8));var _0x2227=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x2272[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x2227('0x0'));var util=require(_0x2227('0x1'));var moment=require(_0x2227('0x2'));var BPromise=require(_0x2227('0x3'));var rs=require(_0x2227('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2227('0x5'))['db'];var utils=require(_0x2227('0x6'));var logger=require(_0x2227('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x2227('0x8'));var client=jayson[_0x2227('0x9')][_0x2227('0xa')]({'port':0x232a});config[_0x2227('0xb')]=_[_0x2227('0xc')](config[_0x2227('0xb')],{'host':_0x2227('0xd'),'port':0x18eb});var socket=require(_0x2227('0xe'))(new Redis(config[_0x2227('0xb')]));require(_0x2227('0xf'))['register'](socket);function respondWithRpcPromise(_0x799370,_0x5c1cba,_0x2f66ca){return new BPromise(function(_0x2d1c39,_0x164735){return client[_0x2227('0x10')](_0x799370,_0x2f66ca)[_0x2227('0x11')](function(_0x51ed54){logger[_0x2227('0x12')](_0x2227('0x13'),_0x5c1cba,_0x2227('0x14'));logger[_0x2227('0x15')](_0x2227('0x16'),_0x5c1cba,_0x2227('0x14'),JSON['stringify'](_0x51ed54));if(_0x51ed54['error']){if(_0x51ed54['error'][_0x2227('0x17')]===0x1f4){logger['error'](_0x2227('0x13'),_0x5c1cba,_0x51ed54[_0x2227('0x18')]['message']);return _0x164735(_0x51ed54[_0x2227('0x18')][_0x2227('0x19')]);}logger[_0x2227('0x18')](_0x2227('0x13'),_0x5c1cba,_0x51ed54[_0x2227('0x18')][_0x2227('0x19')]);return _0x2d1c39(_0x51ed54['error'][_0x2227('0x19')]);}else{logger[_0x2227('0x12')](_0x2227('0x13'),_0x5c1cba,'request\x20sent');_0x2d1c39(_0x51ed54[_0x2227('0x1a')][_0x2227('0x19')]);}})[_0x2227('0x1b')](function(_0x2482ba){logger[_0x2227('0x18')](_0x2227('0x13'),_0x5c1cba,_0x2482ba);_0x164735(_0x2482ba);});});}
\ 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','./voicePrefix.socket','register','request','then','info','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash'];(function(_0x599f12,_0x5390d6){var _0x59e0b5=function(_0x41900a){while(--_0x41900a){_0x599f12['push'](_0x599f12['shift']());}};_0x59e0b5(++_0x5390d6);}(_0xcb04,0x9a));var _0x4cb0=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xcb04[_0x14add3];return _0x4a174f;};'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')]('VoicePrefix,\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 ac5ae71..ec29310 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ff1=['./voicePrefix.events','save','remove','update','removeListener','register','voicePrefix:'];(function(_0x50cd41,_0x4874a7){var _0x399475=function(_0x1946da){while(--_0x1946da){_0x50cd41['push'](_0x50cd41['shift']());}};_0x399475(++_0x4874a7);}(_0x6ff1,0x10a));var _0x16ff=function(_0x57cb21,_0x54f809){_0x57cb21=_0x57cb21-0x0;var _0x4c0c53=_0x6ff1[_0x57cb21];return _0x4c0c53;};'use strict';var VoicePrefixEvents=require(_0x16ff('0x0'));var events=[_0x16ff('0x1'),_0x16ff('0x2'),_0x16ff('0x3')];function createListener(_0x4e4d9c,_0x50cd8a){return function(_0x1402f0){_0x50cd8a['emit'](_0x4e4d9c,_0x1402f0);};}function removeListener(_0x1db386,_0x2bf329){return function(){VoicePrefixEvents[_0x16ff('0x4')](_0x1db386,_0x2bf329);};}exports[_0x16ff('0x5')]=function(_0x5325dd){for(var _0x4f3752=0x0,_0x560612=events['length'];_0x4f3752<_0x560612;_0x4f3752++){var _0x133612=events[_0x4f3752];var _0x218c28=createListener(_0x16ff('0x6')+_0x133612,_0x5325dd);VoicePrefixEvents['on'](_0x133612,_0x218c28);}};
\ No newline at end of file
+var _0x7ee1=['length','./voicePrefix.events','remove','update','register'];(function(_0x44b09d,_0x1d2fdc){var _0x4d9038=function(_0x5df0d5){while(--_0x5df0d5){_0x44b09d['push'](_0x44b09d['shift']());}};_0x4d9038(++_0x1d2fdc);}(_0x7ee1,0xab));var _0x17ee=function(_0x5214b6,_0xc9b988){_0x5214b6=_0x5214b6-0x0;var _0x4365dd=_0x7ee1[_0x5214b6];return _0x4365dd;};'use strict';var VoicePrefixEvents=require(_0x17ee('0x0'));var events=['save',_0x17ee('0x1'),_0x17ee('0x2')];function createListener(_0x455623,_0xe08ab1){return function(_0x45c9e3){_0xe08ab1['emit'](_0x455623,_0x45c9e3);};}function removeListener(_0x3a5743,_0x5172f0){return function(){VoicePrefixEvents['removeListener'](_0x3a5743,_0x5172f0);};}exports[_0x17ee('0x3')]=function(_0x2e4db0){for(var _0x2efefb=0x0,_0x3e6b4c=events[_0x17ee('0x4')];_0x2efefb<_0x3e6b4c;_0x2efefb++){var _0x59b876=events[_0x2efefb];var _0x314088=createListener('voicePrefix:'+_0x59b876,_0x2e4db0);VoicePrefixEvents['on'](_0x59b876,_0x314088);}};
\ No newline at end of file
index c58f523..7349e8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdf1=['addBlackLists','put','update','destroy','delete','removeLists','removeBlackLists','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','/:id','isAuthenticated','show','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','getHopperBlacks','/:id/teams','getTeams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','getLists','/:id/blacklists','getBlackLists','post','create','/:id/clone','clone','addAgents'];(function(_0x51020b,_0x38c2c7){var _0x371e47=function(_0x2a538f){while(--_0x2a538f){_0x51020b['push'](_0x51020b['shift']());}};_0x371e47(++_0x38c2c7);}(_0xfdf1,0x14f));var _0x1fdf=function(_0x4ef377,_0x41ecf0){_0x4ef377=_0x4ef377-0x0;var _0x4daa20=_0xfdf1[_0x4ef377];return _0x4daa20;};'use strict';var multer=require(_0x1fdf('0x0'));var util=require(_0x1fdf('0x1'));var path=require('path');var timeout=require(_0x1fdf('0x2'));var express=require(_0x1fdf('0x3'));var router=express[_0x1fdf('0x4')]();var fs_extra=require(_0x1fdf('0x5'));var auth=require(_0x1fdf('0x6'));var interaction=require(_0x1fdf('0x7'));var config=require(_0x1fdf('0x8'));var controller=require(_0x1fdf('0x9'));router[_0x1fdf('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0x1fdf('0xa')](_0x1fdf('0xb'),auth[_0x1fdf('0xc')](),controller[_0x1fdf('0xd')]);router[_0x1fdf('0xa')]('/:id/hoppers',auth[_0x1fdf('0xc')](),controller['getHoppers']);router[_0x1fdf('0xa')](_0x1fdf('0xe'),auth[_0x1fdf('0xc')](),controller[_0x1fdf('0xf')]);router[_0x1fdf('0xa')](_0x1fdf('0x10'),auth[_0x1fdf('0xc')](),controller[_0x1fdf('0x11')]);router[_0x1fdf('0xa')]('/:id/hopper_black',auth[_0x1fdf('0xc')](),controller[_0x1fdf('0x12')]);router['get'](_0x1fdf('0x13'),auth[_0x1fdf('0xc')](),controller[_0x1fdf('0x14')]);router[_0x1fdf('0xa')](_0x1fdf('0x15'),auth[_0x1fdf('0xc')](),controller[_0x1fdf('0x16')]);router[_0x1fdf('0xa')](_0x1fdf('0x17'),auth['isAuthenticated'](),controller[_0x1fdf('0x18')]);router[_0x1fdf('0xa')](_0x1fdf('0x19'),auth['isAuthenticated'](),controller[_0x1fdf('0x1a')]);router[_0x1fdf('0xa')](_0x1fdf('0x1b'),auth[_0x1fdf('0xc')](),controller[_0x1fdf('0x1c')]);router[_0x1fdf('0x1d')]('/',auth[_0x1fdf('0xc')](),controller[_0x1fdf('0x1e')]);router[_0x1fdf('0x1d')](_0x1fdf('0x1f'),auth['isAuthenticated'](),controller[_0x1fdf('0x20')]);router[_0x1fdf('0x1d')](_0x1fdf('0x13'),auth[_0x1fdf('0xc')](),controller['addTeams']);router[_0x1fdf('0x1d')]('/:id/users',auth[_0x1fdf('0xc')](),controller[_0x1fdf('0x21')]);router['post'](_0x1fdf('0x19'),auth[_0x1fdf('0xc')](),controller['addLists']);router[_0x1fdf('0x1d')](_0x1fdf('0x1b'),auth[_0x1fdf('0xc')](),controller[_0x1fdf('0x22')]);router[_0x1fdf('0x23')]('/:id',auth[_0x1fdf('0xc')](),controller[_0x1fdf('0x24')]);router['delete'](_0x1fdf('0xb'),auth[_0x1fdf('0xc')](),controller[_0x1fdf('0x25')]);router['delete'](_0x1fdf('0x13'),auth[_0x1fdf('0xc')](),controller['removeTeams']);router[_0x1fdf('0x26')](_0x1fdf('0x15'),auth[_0x1fdf('0xc')](),controller['removeAgents']);router[_0x1fdf('0x26')]('/:id/lists',auth['isAuthenticated'](),controller[_0x1fdf('0x27')]);router[_0x1fdf('0x26')](_0x1fdf('0x1b'),auth[_0x1fdf('0xc')](),controller[_0x1fdf('0x28')]);module['exports']=router;
\ No newline at end of file
+var _0xe0a3=['../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','isAuthenticated','index','/:id','show','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/hopper_black','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','getLists','getBlackLists','post','/:id/clone','/:id/teams','addTeams','addAgents','addLists','/:id/blacklists','addBlackLists','update','delete','destroy','removeTeams','removeAgents','removeBlackLists','exports','multer','path','Router'];(function(_0x155fd7,_0x542719){var _0x4183bf=function(_0x21ab87){while(--_0x21ab87){_0x155fd7['push'](_0x155fd7['shift']());}};_0x4183bf(++_0x542719);}(_0xe0a3,0x1b5));var _0x3e0a=function(_0x68ee8b,_0x3cc6c5){_0x68ee8b=_0x68ee8b-0x0;var _0x5148f7=_0xe0a3[_0x68ee8b];return _0x5148f7;};'use strict';var multer=require(_0x3e0a('0x0'));var util=require('util');var path=require(_0x3e0a('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x3e0a('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x3e0a('0x3'));var config=require(_0x3e0a('0x4'));var controller=require(_0x3e0a('0x5'));router[_0x3e0a('0x6')]('/',auth[_0x3e0a('0x7')](),controller[_0x3e0a('0x8')]);router[_0x3e0a('0x6')](_0x3e0a('0x9'),auth[_0x3e0a('0x7')](),controller[_0x3e0a('0xa')]);router[_0x3e0a('0x6')](_0x3e0a('0xb'),auth['isAuthenticated'](),controller[_0x3e0a('0xc')]);router['get'](_0x3e0a('0xd'),auth['isAuthenticated'](),controller[_0x3e0a('0xe')]);router[_0x3e0a('0x6')](_0x3e0a('0xf'),auth[_0x3e0a('0x7')](),controller[_0x3e0a('0x10')]);router[_0x3e0a('0x6')](_0x3e0a('0x11'),auth['isAuthenticated'](),controller['getHopperBlacks']);router['get']('/:id/teams',auth[_0x3e0a('0x7')](),controller['getTeams']);router['get'](_0x3e0a('0x12'),auth[_0x3e0a('0x7')](),controller[_0x3e0a('0x13')]);router[_0x3e0a('0x6')](_0x3e0a('0x14'),auth['isAuthenticated'](),controller[_0x3e0a('0x15')]);router[_0x3e0a('0x6')](_0x3e0a('0x16'),auth[_0x3e0a('0x7')](),controller[_0x3e0a('0x17')]);router[_0x3e0a('0x6')]('/:id/blacklists',auth[_0x3e0a('0x7')](),controller[_0x3e0a('0x18')]);router[_0x3e0a('0x19')]('/',auth[_0x3e0a('0x7')](),controller['create']);router[_0x3e0a('0x19')](_0x3e0a('0x1a'),auth[_0x3e0a('0x7')](),controller['clone']);router['post'](_0x3e0a('0x1b'),auth[_0x3e0a('0x7')](),controller[_0x3e0a('0x1c')]);router[_0x3e0a('0x19')](_0x3e0a('0x12'),auth['isAuthenticated'](),controller[_0x3e0a('0x1d')]);router[_0x3e0a('0x19')](_0x3e0a('0x16'),auth['isAuthenticated'](),controller[_0x3e0a('0x1e')]);router[_0x3e0a('0x19')](_0x3e0a('0x1f'),auth[_0x3e0a('0x7')](),controller[_0x3e0a('0x20')]);router['put'](_0x3e0a('0x9'),auth[_0x3e0a('0x7')](),controller[_0x3e0a('0x21')]);router[_0x3e0a('0x22')](_0x3e0a('0x9'),auth['isAuthenticated'](),controller[_0x3e0a('0x23')]);router['delete']('/:id/teams',auth[_0x3e0a('0x7')](),controller[_0x3e0a('0x24')]);router['delete']('/:id/users',auth[_0x3e0a('0x7')](),controller[_0x3e0a('0x25')]);router[_0x3e0a('0x22')]('/:id/lists',auth[_0x3e0a('0x7')](),controller['removeLists']);router[_0x3e0a('0x22')](_0x3e0a('0x1f'),auth[_0x3e0a('0x7')](),controller[_0x3e0a('0x26')]);module[_0x3e0a('0x27')]=router;
\ No newline at end of file
index 5e8f29c..214ad5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c22=['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\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','07:00-22:00,*,*,*','always','Active/Disactive\x20AMD','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','Active/Disactive\x20Recall\x20In\x20Queue','ASC','DESC','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\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\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','name','ENUM','outbound','inbound','STRING','ringall','fewestcalls','random','linear','wrandom','rrordered','rrmemory','getDataValue','type','dialMethod','booked','roundrobin','predictive','INTEGER','yes','all','TEXT','setDataValue','periodic_announce','join','split','joinempty','leavewhenempty','BOOLEAN','acw','wrapuptime','Active/Disactive\x20Campaign','preview','power','progressive','Dial\x20Method.','UNSIGNED','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)'];(function(_0x18013c,_0x525967){var _0x3eeaad=function(_0x5880fa){while(--_0x5880fa){_0x18013c['push'](_0x18013c['shift']());}};_0x3eeaad(++_0x525967);}(_0x7c22,0x6c));var _0x27c2=function(_0x34f77c,_0x56b02d){_0x34f77c=_0x34f77c-0x0;var _0x1546ff=_0x7c22[_0x34f77c];return _0x1546ff;};'use strict';var Sequelize=require(_0x27c2('0x0'));module[_0x27c2('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x27c2('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x27c2('0x3')]('inbound',_0x27c2('0x4')),'allowNull':![],'defaultValue':_0x27c2('0x5')},'musiconhold':{'type':Sequelize['STRING'],'defaultValue':'default'},'announce':{'type':Sequelize[_0x27c2('0x6')],'defaultValue':''},'strategy':{'type':Sequelize['ENUM']('rr',_0x27c2('0x7'),'leastrecent',_0x27c2('0x8'),_0x27c2('0x9'),'rrmemory',_0x27c2('0xa'),_0x27c2('0xb'),_0x27c2('0xc')),'allowNull':![],'defaultValue':_0x27c2('0x7'),'set':function(_0x298bb7){this['setDataValue']('strategy',_0x298bb7?_0x298bb7:_0x27c2('0xd'));},'get':function(){var _0x3552e6=this[_0x27c2('0xe')](_0x27c2('0xf'));var _0x56c4c4=this[_0x27c2('0xe')](_0x27c2('0x10'));var _0x212f1c=this['getDataValue']('strategy');if(_0x3552e6===_0x27c2('0x5')){return _0x212f1c;}if(_0x56c4c4===_0x27c2('0x11')&&_0x212f1c===_0x27c2('0xd')||_0x56c4c4===_0x27c2('0x11')&&_0x212f1c===_0x27c2('0x12')){return _0x212f1c;}if(_0x56c4c4==='progressive'||_0x56c4c4===_0x27c2('0x13')||_0x56c4c4==='power'){return _0x212f1c;}return null;}},'servicelevel':{'type':Sequelize[_0x27c2('0x14')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0x27c2('0x6')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x27c2('0x14')](0xb)},'timeout':{'type':Sequelize[_0x27c2('0x14')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0x27c2('0x6')]},'weight':{'type':Sequelize[_0x27c2('0x14')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x27c2('0x14')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x27c2('0x3')](_0x27c2('0x15'),'no'),'defaultValue':_0x27c2('0x15')},'autopause':{'type':Sequelize[_0x27c2('0x3')](_0x27c2('0x15'),'no',_0x27c2('0x16')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize['INTEGER'](0xb)},'autopausebusy':{'type':Sequelize[_0x27c2('0x3')](_0x27c2('0x15'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x27c2('0x3')](_0x27c2('0x15'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize['ENUM'](_0x27c2('0x15'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x27c2('0x3')](_0x27c2('0x15'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x27c2('0x3')](_0x27c2('0x15'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x27c2('0x3')]('yes','no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0x27c2('0x6')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0x27c2('0x6')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x27c2('0x14')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0x27c2('0x14')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0x27c2('0x14')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0x27c2('0x3')](_0x27c2('0x15'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0x27c2('0x3')]('yes','no'),'defaultValue':'yes'},'announce_holdtime':{'type':Sequelize[_0x27c2('0x3')](_0x27c2('0x15'),'no','once'),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x27c2('0x6')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x27c2('0x3')](_0x27c2('0x15'),'no')},'announce_position_limit':{'type':Sequelize[_0x27c2('0x14')](0xb)},'announce_round_seconds':{'type':Sequelize['ENUM']('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x27c2('0x6')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0x27c2('0x6')]},'queue_youarenext':{'type':Sequelize[_0x27c2('0x6')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x27c2('0x6')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x27c2('0x6')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x27c2('0x6')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x27c2('0x6')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0x27c2('0x6')],'defaultValue':null},'queue_seconds':{'type':Sequelize['STRING'],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0x27c2('0x6')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x27c2('0x6')]},'queue_quantity1':{'type':Sequelize[_0x27c2('0x6')]},'queue_quantity2':{'type':Sequelize['STRING']},'queue_periodic_announce':{'type':Sequelize[_0x27c2('0x6')]},'queue_less_than':{'type':Sequelize[_0x27c2('0x6')]},'periodic_announce':{'type':Sequelize[_0x27c2('0x17')],'set':function(_0x5d397b){this[_0x27c2('0x18')](_0x27c2('0x19'),_0x5d397b?_0x5d397b[_0x27c2('0x1a')](','):[]);},'get':function(){return this[_0x27c2('0xe')](_0x27c2('0x19'))?this[_0x27c2('0xe')]('periodic_announce')[_0x27c2('0x1b')](','):[];}},'joinempty':{'type':Sequelize[_0x27c2('0x6')],'defaultValue':_0x27c2('0x15'),'set':function(_0x524de2){this[_0x27c2('0x18')](_0x27c2('0x1c'),_0x524de2?_0x524de2[_0x27c2('0x1a')](','):undefined);},'get':function(){return this[_0x27c2('0xe')]('joinempty')?this[_0x27c2('0xe')](_0x27c2('0x1c'))[_0x27c2('0x1b')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x27c2('0x6')],'defaultValue':'no','set':function(_0x39f795){this[_0x27c2('0x18')](_0x27c2('0x1d'),_0x39f795?_0x39f795[_0x27c2('0x1a')](','):undefined);},'get':function(){return this[_0x27c2('0xe')]('leavewhenempty')?this[_0x27c2('0xe')](_0x27c2('0x1d'))[_0x27c2('0x1b')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0x27c2('0x3')](_0x27c2('0x15'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize['ENUM'](_0x27c2('0x15'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0x27c2('0x14')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0x27c2('0x3')](_0x27c2('0x15'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x27c2('0x6')]},'acw':{'type':Sequelize[_0x27c2('0x1e')],'defaultValue':0x0,'set':function(_0x97ef60){this[_0x27c2('0x18')](_0x27c2('0x1f'),_0x97ef60);if(_0x97ef60){if(this[_0x27c2('0xe')](_0x27c2('0x20'))<0x2){this['setDataValue'](_0x27c2('0x20'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0x27c2('0x14')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x27c2('0x21')},'dialMethod':{'type':Sequelize[_0x27c2('0x3')](_0x27c2('0x22'),'progressive',_0x27c2('0x23'),_0x27c2('0x13'),_0x27c2('0x11')),'defaultValue':_0x27c2('0x24'),'comment':_0x27c2('0x25')},'dialLimitChannel':{'type':Sequelize['INTEGER'](0x4)[_0x27c2('0x26')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20channels,\x200\x20means\x20unlimited.'},'dialLimitQueue':{'type':Sequelize[_0x27c2('0x14')](0x4)[_0x27c2('0x26')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x27c2('0x27')},'dialPowerLevel':{'type':Sequelize[_0x27c2('0x28')](0x2)[_0x27c2('0x26')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0x27c2('0x29')},'dialPredictiveOptimization':{'type':Sequelize['ENUM'](_0x27c2('0x2a'),_0x27c2('0x2b')),'defaultValue':'dropRate','comment':_0x27c2('0x2c')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0x27c2('0x28')](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0x27c2('0x2d')},'dialPredictiveInterval':{'type':Sequelize[_0x27c2('0x14')](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x27c2('0x2e')},'dialOriginateCallerIdName':{'type':Sequelize[_0x27c2('0x6')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x27c2('0x6')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)[_0x27c2('0x26')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x27c2('0x2f')},'dialQueueOptions':{'type':Sequelize[_0x27c2('0x6')],'defaultValue':_0x27c2('0x30'),'comment':_0x27c2('0x31')},'dialQueueTimeout':{'type':Sequelize[_0x27c2('0x14')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueProject':{'type':Sequelize[_0x27c2('0x6')],'comment':_0x27c2('0x32')},'dialCongestionMaxRetry':{'type':Sequelize[_0x27c2('0x14')](0x3)[_0x27c2('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0x27c2('0x14')](0x5)[_0x27c2('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x27c2('0x33')},'dialBusyMaxRetry':{'type':Sequelize[_0x27c2('0x14')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x27c2('0x34')},'dialBusyRetryFrequency':{'type':Sequelize[_0x27c2('0x14')](0x5)[_0x27c2('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x27c2('0x26')],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x27c2('0x14')](0x5)[_0x27c2('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x27c2('0x35')},'dialGlobalMaxRetry':{'type':Sequelize[_0x27c2('0x14')](0x3)[_0x27c2('0x26')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':'#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x27c2('0x6')],'defaultValue':_0x27c2('0x36')},'dialPrefix':{'type':Sequelize[_0x27c2('0x6')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x27c2('0x3')](_0x27c2('0x37'),'never','onlyIfOpen'),'defaultValue':_0x27c2('0x37')},'dialAMDActive':{'type':Sequelize[_0x27c2('0x1e')],'defaultValue':0x0,'comment':_0x27c2('0x38')},'dialAMDInitialSilence':{'type':Sequelize[_0x27c2('0x14')](0x9)[_0x27c2('0x26')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize[_0x27c2('0x14')](0x9)[_0x27c2('0x26')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x27c2('0x39')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x27c2('0x14')](0x9)[_0x27c2('0x26')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x27c2('0x3a')},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)[_0x27c2('0x26')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x27c2('0x3b')},'dialAMDMinWordLength':{'type':Sequelize[_0x27c2('0x14')](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x27c2('0x3c')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x27c2('0x14')](0x9)[_0x27c2('0x26')],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x27c2('0x14')](0x9)[_0x27c2('0x26')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x27c2('0x3d')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x27c2('0x14')](0x5)[_0x27c2('0x26')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x27c2('0x3e')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x27c2('0x14')](0x9)[_0x27c2('0x26')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialRecallMeTimeout':{'type':Sequelize[_0x27c2('0x14')](0x5)[_0x27c2('0x26')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':'#RecallMe\x20Timeout\x20(min:1)'},'dialRecallInQueue':{'type':Sequelize[_0x27c2('0x1e')],'defaultValue':0x0,'comment':_0x27c2('0x3f')},'dialOrderByScheduledAt':{'type':Sequelize[_0x27c2('0x3')]('DESC',_0x27c2('0x40')),'defaultValue':_0x27c2('0x41')},'dialQueueProject2':{'type':Sequelize[_0x27c2('0x6')],'comment':_0x27c2('0x32')},'dialAgiAfterHangupClient':{'type':Sequelize[_0x27c2('0x1e')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)[_0x27c2('0x26')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0x27c2('0x14')](0x3)[_0x27c2('0x26')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x27c2('0x42')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x27c2('0x14')](0x3)[_0x27c2('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x27c2('0x43')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x27c2('0x14')](0x5)[_0x27c2('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialDropMaxRetry':{'type':Sequelize[_0x27c2('0x14')](0x3)[_0x27c2('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAbandonedMaxRetry':{'type':Sequelize[_0x27c2('0x14')](0x3)[_0x27c2('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x27c2('0x44')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x27c2('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x27c2('0x45')},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x27c2('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x27c2('0x46')},'dialMachineRetryFrequency':{'type':Sequelize[_0x27c2('0x14')](0x5)[_0x27c2('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x27c2('0x47')},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x27c2('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#AgentReject\x20Retry\x20(min:1,\x20max:999)'},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x27c2('0x14')](0x5)[_0x27c2('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x27c2('0x48')},'mandatoryDispositionPauseId':{'type':Sequelize[_0x27c2('0x14')],'allowNull':!![],'comment':_0x27c2('0x49')},'mandatoryDisposition':{'type':Sequelize[_0x27c2('0x1e')],'defaultValue':![],'comment':_0x27c2('0x4a'),'set':function(_0x528802){if(!_0x528802)this[_0x27c2('0x18')](_0x27c2('0x4b'),null);this['setDataValue'](_0x27c2('0x4c'),_0x528802);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x27c2('0x14')](0x3)[_0x27c2('0x26')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x27c2('0x14')](0x3)[_0x27c2('0x26')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}}};
\ No newline at end of file
+var _0x3edb=['dialMethod','booked','roundrobin','progressive','predictive','power','INTEGER','yes','all','once','TEXT','setDataValue','periodic_announce','join','split','joinempty','leavewhenempty','BOOLEAN','wrapuptime','Active/Disactive\x20Campaign','preview','Dial\x20Method.','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#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,*,*,*','always','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','ASC','DESC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','name','ENUM','inbound','outbound','STRING','ringall','leastrecent','fewestcalls','rrmemory','linear','wrandom','rrordered','strategy','getDataValue','type'];(function(_0x29b30c,_0x4f4b69){var _0x3e0cd3=function(_0x3d21e2){while(--_0x3d21e2){_0x29b30c['push'](_0x29b30c['shift']());}};_0x3e0cd3(++_0x4f4b69);}(_0x3edb,0x1c9));var _0xb3ed=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0x3edb[_0x9df060];return _0x338dfe;};'use strict';var Sequelize=require(_0xb3ed('0x0'));module[_0xb3ed('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xb3ed('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xb3ed('0x3')](_0xb3ed('0x4'),_0xb3ed('0x5')),'allowNull':![],'defaultValue':'inbound'},'musiconhold':{'type':Sequelize[_0xb3ed('0x6')],'defaultValue':'default'},'announce':{'type':Sequelize[_0xb3ed('0x6')],'defaultValue':''},'strategy':{'type':Sequelize['ENUM']('rr',_0xb3ed('0x7'),_0xb3ed('0x8'),_0xb3ed('0x9'),'random',_0xb3ed('0xa'),_0xb3ed('0xb'),_0xb3ed('0xc'),_0xb3ed('0xd')),'allowNull':![],'defaultValue':_0xb3ed('0x7'),'set':function(_0x33d48f){this['setDataValue'](_0xb3ed('0xe'),_0x33d48f?_0x33d48f:'rrmemory');},'get':function(){var _0x5402f0=this[_0xb3ed('0xf')](_0xb3ed('0x10'));var _0x240741=this[_0xb3ed('0xf')](_0xb3ed('0x11'));var _0x4e143e=this[_0xb3ed('0xf')]('strategy');if(_0x5402f0==='inbound'){return _0x4e143e;}if(_0x240741===_0xb3ed('0x12')&&_0x4e143e===_0xb3ed('0xa')||_0x240741==='booked'&&_0x4e143e===_0xb3ed('0x13')){return _0x4e143e;}if(_0x240741===_0xb3ed('0x14')||_0x240741===_0xb3ed('0x15')||_0x240741===_0xb3ed('0x16')){return _0x4e143e;}return null;}},'servicelevel':{'type':Sequelize[_0xb3ed('0x17')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0xb3ed('0x6')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize['INTEGER'](0xb)},'timeout':{'type':Sequelize[_0xb3ed('0x17')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0xb3ed('0x17')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize['STRING']},'weight':{'type':Sequelize[_0xb3ed('0x17')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0xb3ed('0x17')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0xb3ed('0x3')]('yes','no'),'defaultValue':'yes'},'autopause':{'type':Sequelize[_0xb3ed('0x3')](_0xb3ed('0x18'),'no',_0xb3ed('0x19')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0xb3ed('0x17')](0xb)},'autopausebusy':{'type':Sequelize[_0xb3ed('0x3')](_0xb3ed('0x18'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0xb3ed('0x3')](_0xb3ed('0x18'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0xb3ed('0x17')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize['ENUM'](_0xb3ed('0x18'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize['ENUM']('yes','no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0xb3ed('0x3')](_0xb3ed('0x18'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0xb3ed('0x3')](_0xb3ed('0x18'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize['STRING'],'allowNull':!![]},'membergosub':{'type':Sequelize['STRING'],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0xb3ed('0x17')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0xb3ed('0x3')](_0xb3ed('0x18'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize['ENUM'](_0xb3ed('0x18'),'no'),'defaultValue':'yes'},'announce_holdtime':{'type':Sequelize['ENUM'](_0xb3ed('0x18'),'no',_0xb3ed('0x1a')),'defaultValue':'no'},'announce_position':{'type':Sequelize['STRING'],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0xb3ed('0x3')](_0xb3ed('0x18'),'no')},'announce_position_limit':{'type':Sequelize['INTEGER'](0xb)},'announce_round_seconds':{'type':Sequelize[_0xb3ed('0x3')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0xb3ed('0x6')],'defaultValue':''},'monitor_type':{'type':Sequelize['STRING']},'queue_youarenext':{'type':Sequelize['STRING'],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0xb3ed('0x6')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0xb3ed('0x6')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0xb3ed('0x6')],'defaultValue':null},'queue_minute':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize['STRING'],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0xb3ed('0x6')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0xb3ed('0x6')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0xb3ed('0x6')]},'queue_quantity1':{'type':Sequelize[_0xb3ed('0x6')]},'queue_quantity2':{'type':Sequelize[_0xb3ed('0x6')]},'queue_periodic_announce':{'type':Sequelize[_0xb3ed('0x6')]},'queue_less_than':{'type':Sequelize[_0xb3ed('0x6')]},'periodic_announce':{'type':Sequelize[_0xb3ed('0x1b')],'set':function(_0x4a916a){this[_0xb3ed('0x1c')](_0xb3ed('0x1d'),_0x4a916a?_0x4a916a[_0xb3ed('0x1e')](','):[]);},'get':function(){return this[_0xb3ed('0xf')](_0xb3ed('0x1d'))?this[_0xb3ed('0xf')]('periodic_announce')[_0xb3ed('0x1f')](','):[];}},'joinempty':{'type':Sequelize[_0xb3ed('0x6')],'defaultValue':_0xb3ed('0x18'),'set':function(_0x34fea1){this[_0xb3ed('0x1c')](_0xb3ed('0x20'),_0x34fea1?_0x34fea1[_0xb3ed('0x1e')](','):undefined);},'get':function(){return this[_0xb3ed('0xf')](_0xb3ed('0x20'))?this[_0xb3ed('0xf')](_0xb3ed('0x20'))[_0xb3ed('0x1f')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0xb3ed('0x6')],'defaultValue':'no','set':function(_0x239c33){this['setDataValue']('leavewhenempty',_0x239c33?_0x239c33[_0xb3ed('0x1e')](','):undefined);},'get':function(){return this[_0xb3ed('0xf')](_0xb3ed('0x21'))?this[_0xb3ed('0xf')](_0xb3ed('0x21'))['split'](','):undefined;}},'reportholdtime':{'type':Sequelize[_0xb3ed('0x3')](_0xb3ed('0x18'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0xb3ed('0x3')](_0xb3ed('0x18'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0xb3ed('0x6')]},'description':{'type':Sequelize[_0xb3ed('0x6')]},'acw':{'type':Sequelize[_0xb3ed('0x22')],'defaultValue':0x0,'set':function(_0x3440a0){this['setDataValue']('acw',_0x3440a0);if(_0x3440a0){if(this[_0xb3ed('0xf')](_0xb3ed('0x23'))<0x2){this[_0xb3ed('0x1c')]('wrapuptime',0x2);}}}},'acwTimeout':{'type':Sequelize[_0xb3ed('0x17')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0xb3ed('0x22')],'defaultValue':0x0,'comment':_0xb3ed('0x24')},'dialMethod':{'type':Sequelize[_0xb3ed('0x3')](_0xb3ed('0x25'),_0xb3ed('0x14'),_0xb3ed('0x16'),'predictive','booked'),'defaultValue':_0xb3ed('0x14'),'comment':_0xb3ed('0x26')},'dialLimitChannel':{'type':Sequelize[_0xb3ed('0x17')](0x4)[_0xb3ed('0x27')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xb3ed('0x28')},'dialLimitQueue':{'type':Sequelize[_0xb3ed('0x17')](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xb3ed('0x29')},'dialPowerLevel':{'type':Sequelize[_0xb3ed('0x2a')](0x2)[_0xb3ed('0x27')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0xb3ed('0x2b')},'dialPredictiveOptimization':{'type':Sequelize[_0xb3ed('0x3')](_0xb3ed('0x2c'),_0xb3ed('0x2d')),'defaultValue':'dropRate','comment':_0xb3ed('0x2e')},'dialPredictiveOptimizationPercentage':{'type':Sequelize['FLOAT'](0x2)[_0xb3ed('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':'Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)'},'dialPredictiveInterval':{'type':Sequelize[_0xb3ed('0x17')](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0xb3ed('0x2f')},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xb3ed('0x6')]},'dialOriginateTimeout':{'type':Sequelize[_0xb3ed('0x17')](0x3)[_0xb3ed('0x27')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb3ed('0x30')},'dialQueueOptions':{'type':Sequelize[_0xb3ed('0x6')],'defaultValue':'tTxX','comment':'https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue'},'dialQueueTimeout':{'type':Sequelize[_0xb3ed('0x17')](0x3)[_0xb3ed('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb3ed('0x31')},'dialQueueProject':{'type':Sequelize['STRING'],'comment':_0xb3ed('0x32')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xb3ed('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0xb3ed('0x17')](0x5)[_0xb3ed('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize[_0xb3ed('0x17')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb3ed('0x33')},'dialBusyRetryFrequency':{'type':Sequelize[_0xb3ed('0x17')](0x5)[_0xb3ed('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xb3ed('0x34')},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xb3ed('0x27')],'defaultValue':0x3,'comment':_0xb3ed('0x35')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xb3ed('0x17')](0x5)[_0xb3ed('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialGlobalMaxRetry':{'type':Sequelize[_0xb3ed('0x17')](0x3)[_0xb3ed('0x27')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':'#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'},'dialTimezone':{'type':Sequelize[_0xb3ed('0x6')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xb3ed('0x6')],'defaultValue':_0xb3ed('0x36')},'dialPrefix':{'type':Sequelize[_0xb3ed('0x6')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0xb3ed('0x3')](_0xb3ed('0x37'),'never',_0xb3ed('0x38')),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize[_0xb3ed('0x22')],'defaultValue':0x0,'comment':_0xb3ed('0x39')},'dialAMDInitialSilence':{'type':Sequelize[_0xb3ed('0x17')](0x9)[_0xb3ed('0x27')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xb3ed('0x3a')},'dialAMDGreeting':{'type':Sequelize[_0xb3ed('0x17')](0x9)[_0xb3ed('0x27')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xb3ed('0x17')](0x9)[_0xb3ed('0x27')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xb3ed('0x3b')},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xb3ed('0x3c')},'dialAMDMinWordLength':{'type':Sequelize[_0xb3ed('0x17')](0x9)[_0xb3ed('0x27')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xb3ed('0x17')](0x9)[_0xb3ed('0x27')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xb3ed('0x3d')},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)[_0xb3ed('0x27')],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xb3ed('0x3e')},'dialAMDMaximumWordLength':{'type':Sequelize[_0xb3ed('0x17')](0x9)[_0xb3ed('0x27')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xb3ed('0x3f')},'dialRecallMeTimeout':{'type':Sequelize[_0xb3ed('0x17')](0x5)[_0xb3ed('0x27')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0xb3ed('0x40')},'dialRecallInQueue':{'type':Sequelize[_0xb3ed('0x22')],'defaultValue':0x0,'comment':_0xb3ed('0x41')},'dialOrderByScheduledAt':{'type':Sequelize[_0xb3ed('0x3')]('DESC',_0xb3ed('0x42')),'defaultValue':_0xb3ed('0x43')},'dialQueueProject2':{'type':Sequelize[_0xb3ed('0x6')],'comment':_0xb3ed('0x32')},'dialAgiAfterHangupClient':{'type':Sequelize[_0xb3ed('0x22')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0xb3ed('0x22')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xb3ed('0x17')](0x3)[_0xb3ed('0x27')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xb3ed('0x44')},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)[_0xb3ed('0x27')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xb3ed('0x45')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xb3ed('0x17')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb3ed('0x46')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xb3ed('0x17')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialDropMaxRetry':{'type':Sequelize[_0xb3ed('0x17')](0x3)[_0xb3ed('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb3ed('0x47')},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xb3ed('0x48')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xb3ed('0x17')](0x3)[_0xb3ed('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xb3ed('0x17')](0x5)[_0xb3ed('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xb3ed('0x49')},'dialMachineMaxRetry':{'type':Sequelize[_0xb3ed('0x17')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb3ed('0x4a')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xb3ed('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xb3ed('0x17')](0x3)[_0xb3ed('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb3ed('0x4b')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xb3ed('0x17')](0x5)[_0xb3ed('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'mandatoryDispositionPauseId':{'type':Sequelize[_0xb3ed('0x17')],'allowNull':!![],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xb3ed('0x22')],'defaultValue':![],'comment':_0xb3ed('0x4c'),'set':function(_0x7509c5){if(!_0x7509c5)this[_0xb3ed('0x1c')](_0xb3ed('0x4d'),null);this[_0xb3ed('0x1c')](_0xb3ed('0x4e'),_0x7509c5);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize['INTEGER'](0x3)[_0xb3ed('0x27')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0xb3ed('0x17')](0x3)[_0xb3ed('0x27')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}}};
\ No newline at end of file
index f656c0b..990a547 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97dc=['length','model','hasOwnProperty','sort','where','pick','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','inbound','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','getHoppers','findOne','nolimit','order','VoiceQueueId','CmHopper','getHopperHistories','CmHopperHistory','findAll','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','Team','teams','Agents','voicePause','interface','flatMap','forEach','penalty','sequelize','transaction','addTeams','each','TeamVoiceQueue','upsert','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','isNil','format','SIP/%s','emit','removeTeams','ids','User','select','tq.TeamId','team_has_voice_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','push','QueryTypes','SELECT','compact','isEmpty','removeAgents','userVoiceQueue:remove','addAgents','spread','userVoiceQueue:save','online','isArray','getAgents','getMembers','getLists','CmList','addLists','dialCheckDuplicateType','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','field','NOW()','ListId','from','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','CmListId','toString','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','onlyIfOpen','COALESCE(phone,\x27\x27)','all','removeLists','getBlackLists','addBlackLists','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','./voiceQueue.socket','register','sendStatus','end','status','json','offset','undefined','count','limit','Content-Range','reject','save','update','then','destroy','VoiceQueues','QueueCampaigns','outbound','filter','ignore','map','value','includes','type','find','name','UserProfileResource','error','send','index','VoiceQueue','rawAttributes','fieldName','key','query','keys','filters','intersection','attributes','fields'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x97dc,0x76));var _0xc97d=function(_0x355488,_0x55d26a){_0x355488=_0x355488-0x0;var _0x4eaf2e=_0x97dc[_0x355488];return _0x4eaf2e;};'use strict';var emlformat=require(_0xc97d('0x0'));var rimraf=require(_0xc97d('0x1'));var zipdir=require(_0xc97d('0x2'));var jsonpatch=require(_0xc97d('0x3'));var rp=require(_0xc97d('0x4'));var moment=require(_0xc97d('0x5'));var BPromise=require(_0xc97d('0x6'));var Mustache=require(_0xc97d('0x7'));var util=require(_0xc97d('0x8'));var path=require(_0xc97d('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc97d('0xa'));var _=require(_0xc97d('0xb'));var squel=require(_0xc97d('0xc'));var crypto=require(_0xc97d('0xd'));var jsforce=require(_0xc97d('0xe'));var deskjs=require(_0xc97d('0xf'));var toCsv=require(_0xc97d('0x10'));var querystring=require('querystring');var Papa=require(_0xc97d('0x11'));var Redis=require(_0xc97d('0x12'));var authService=require(_0xc97d('0x13'));var qs=require(_0xc97d('0x14'));var as=require(_0xc97d('0x15'));var hardwareService=require(_0xc97d('0x16'));var logger=require(_0xc97d('0x17'))(_0xc97d('0x18'));var utils=require(_0xc97d('0x19'));var config=require(_0xc97d('0x1a'));var licenseUtil=require(_0xc97d('0x1b'));var db=require('../../mysqldb')['db'];config[_0xc97d('0x1c')]=_[_0xc97d('0x1d')](config[_0xc97d('0x1c')],{'host':_0xc97d('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xc97d('0x1f'))[_0xc97d('0x20')](socket);function respondWithStatusCode(_0x5bd47a,_0x5692d9){_0x5692d9=_0x5692d9||0xcc;return function(_0xb2c3fd){if(_0xb2c3fd){return _0x5bd47a[_0xc97d('0x21')](_0x5692d9);}return _0x5bd47a['status'](_0x5692d9)[_0xc97d('0x22')]();};}function respondWithResult(_0x5573d0,_0x11d217){_0x11d217=_0x11d217||0xc8;return function(_0x394c77){if(_0x394c77){return _0x5573d0[_0xc97d('0x23')](_0x11d217)[_0xc97d('0x24')](_0x394c77);}};}function respondWithFilteredResult(_0x361faa,_0x38f106){return function(_0x274e6d){if(_0x274e6d){var _0x1448f0=typeof _0x38f106[_0xc97d('0x25')]===_0xc97d('0x26')&&typeof _0x38f106['limit']===_0xc97d('0x26');var _0x46fbc7=_0x274e6d[_0xc97d('0x27')];var _0x32d52f=_0x1448f0?0x0:_0x38f106[_0xc97d('0x25')];var _0x5a4a27=_0x1448f0?_0x274e6d[_0xc97d('0x27')]:_0x38f106['offset']+_0x38f106[_0xc97d('0x28')];var _0x35d961;if(_0x5a4a27>=_0x46fbc7){_0x5a4a27=_0x46fbc7;_0x35d961=0xc8;}else{_0x35d961=0xce;}_0x361faa[_0xc97d('0x23')](_0x35d961);return _0x361faa['set'](_0xc97d('0x29'),_0x32d52f+'-'+_0x5a4a27+'/'+_0x46fbc7)[_0xc97d('0x24')](_0x274e6d);}return null;};}function patchUpdates(_0xf70ff3){return function(_0x25927e){try{jsonpatch['apply'](_0x25927e,_0xf70ff3,!![]);}catch(_0x5995b7){return BPromise[_0xc97d('0x2a')](_0x5995b7);}return _0x25927e[_0xc97d('0x2b')]();};}function saveUpdates(_0x33297e,_0x2df7dc){return function(_0x4cdd7b){if(_0x4cdd7b){return _0x4cdd7b[_0xc97d('0x2c')](_0x33297e)[_0xc97d('0x2d')](function(_0x1a3e2e){return _0x1a3e2e;});}return null;};}function removeEntity(_0x5ae5bb,_0x3f15ba){return function(_0xf4a061){if(_0xf4a061){return _0xf4a061[_0xc97d('0x2e')]()['then'](function(){var _0x4bcd88=_0xf4a061['get']({'plain':!![]});var _0x44b7de=[{'name':_0xc97d('0x2f'),'value':'inbound','ignore':![]},{'name':_0xc97d('0x30'),'value':_0xc97d('0x31'),'ignore':![]}];var _0x5cf705=_(_0x44b7de)[_0xc97d('0x32')](_0xc97d('0x33'))[_0xc97d('0x34')]('value')[_0xc97d('0x35')]();if(_[_0xc97d('0x36')](_0x5cf705,_0x4bcd88[_0xc97d('0x37')])){return;}var _0x4b81a9=_[_0xc97d('0x38')](_0x44b7de,[_0xc97d('0x35'),_0x4bcd88[_0xc97d('0x37')]])[_0xc97d('0x39')];return db[_0xc97d('0x3a')]['destroy']({'where':{'type':_0x4b81a9,'resourceId':_0x4bcd88['id']}})[_0xc97d('0x2d')](function(){return _0xf4a061;});})[_0xc97d('0x2d')](function(){_0x5ae5bb[_0xc97d('0x23')](0xcc)[_0xc97d('0x22')]();});}};}function handleEntityNotFound(_0x5740fc,_0x1c6531){return function(_0x588cd4){if(!_0x588cd4){_0x5740fc[_0xc97d('0x21')](0x194);}return _0x588cd4;};}function handleError(_0x460ef8,_0x1a5e2d){_0x1a5e2d=_0x1a5e2d||0x1f4;return function(_0xfc7c44){logger[_0xc97d('0x3b')](_0xfc7c44['stack']);if(_0xfc7c44[_0xc97d('0x39')]){delete _0xfc7c44[_0xc97d('0x39')];}_0x460ef8[_0xc97d('0x23')](_0x1a5e2d)[_0xc97d('0x3c')](_0xfc7c44);};}exports[_0xc97d('0x3d')]=function(_0x6f868b,_0x4a9dea){var _0x5a5916={},_0x3ed0d0={},_0x5831d9={'count':0x0,'rows':[]};var _0x2b4a5c=_[_0xc97d('0x34')](db[_0xc97d('0x3e')][_0xc97d('0x3f')],function(_0x23d903){return{'name':_0x23d903[_0xc97d('0x40')],'type':_0x23d903[_0xc97d('0x37')][_0xc97d('0x41')]};});_0x3ed0d0['model']=_['map'](_0x2b4a5c,_0xc97d('0x39'));_0x3ed0d0[_0xc97d('0x42')]=_[_0xc97d('0x43')](_0x6f868b[_0xc97d('0x42')]);_0x3ed0d0[_0xc97d('0x44')]=_[_0xc97d('0x45')](_0x3ed0d0['model'],_0x3ed0d0[_0xc97d('0x42')]);_0x5a5916[_0xc97d('0x46')]=_[_0xc97d('0x45')](_0x3ed0d0['model'],qs['fields'](_0x6f868b[_0xc97d('0x42')][_0xc97d('0x47')]));_0x5a5916['attributes']=_0x5a5916['attributes'][_0xc97d('0x48')]?_0x5a5916[_0xc97d('0x46')]:_0x3ed0d0[_0xc97d('0x49')];if(!_0x6f868b[_0xc97d('0x42')][_0xc97d('0x4a')]('nolimit')){_0x5a5916[_0xc97d('0x28')]=qs[_0xc97d('0x28')](_0x6f868b[_0xc97d('0x42')][_0xc97d('0x28')]);_0x5a5916[_0xc97d('0x25')]=qs[_0xc97d('0x25')](_0x6f868b[_0xc97d('0x42')][_0xc97d('0x25')]);}_0x5a5916['order']=qs[_0xc97d('0x4b')](_0x6f868b[_0xc97d('0x42')][_0xc97d('0x4b')]);_0x5a5916[_0xc97d('0x4c')]=qs[_0xc97d('0x44')](_[_0xc97d('0x4d')](_0x6f868b[_0xc97d('0x42')],_0x3ed0d0[_0xc97d('0x44')]),_0x2b4a5c);if(_0x6f868b[_0xc97d('0x42')][_0xc97d('0x32')]){_0x5a5916[_0xc97d('0x4c')]=_[_0xc97d('0x4e')](_0x5a5916['where'],{'$or':_['map'](_0x2b4a5c,function(_0x374847){if(_0x374847[_0xc97d('0x37')]!==_0xc97d('0x4f')){var _0x4f05f2={};_0x4f05f2[_0x374847['name']]={'$like':'%'+_0x6f868b[_0xc97d('0x42')][_0xc97d('0x32')]+'%'};return _0x4f05f2;}})});}_0x5a5916=_['merge']({},_0x5a5916,_0x6f868b[_0xc97d('0x50')]);var _0x52204c={'where':_0x5a5916[_0xc97d('0x4c')]};return db[_0xc97d('0x3e')][_0xc97d('0x27')](_0x52204c)['then'](function(_0x2f5aa4){_0x5831d9['count']=_0x2f5aa4;if(_0x6f868b[_0xc97d('0x42')][_0xc97d('0x51')]){_0x5a5916[_0xc97d('0x52')]=[{'all':!![]}];}return db[_0xc97d('0x3e')]['findAll'](_0x5a5916);})[_0xc97d('0x2d')](function(_0x576642){_0x5831d9[_0xc97d('0x53')]=_0x576642;return _0x5831d9;})[_0xc97d('0x2d')](respondWithFilteredResult(_0x4a9dea,_0x5a5916))[_0xc97d('0x54')](handleError(_0x4a9dea,null));};exports[_0xc97d('0x55')]=function(_0x3ba64a,_0x11bab7){var _0x3601b0={'raw':![],'where':{'id':_0x3ba64a[_0xc97d('0x56')]['id']}},_0x4db533={};_0x4db533[_0xc97d('0x49')]=_[_0xc97d('0x43')](db[_0xc97d('0x3e')]['rawAttributes']);_0x4db533['query']=_[_0xc97d('0x43')](_0x3ba64a[_0xc97d('0x42')]);_0x4db533['filters']=_[_0xc97d('0x45')](_0x4db533[_0xc97d('0x49')],_0x4db533[_0xc97d('0x42')]);_0x3601b0[_0xc97d('0x46')]=_['intersection'](_0x4db533['model'],qs[_0xc97d('0x47')](_0x3ba64a[_0xc97d('0x42')][_0xc97d('0x47')]));_0x3601b0[_0xc97d('0x46')]=_0x3601b0[_0xc97d('0x46')][_0xc97d('0x48')]?_0x3601b0[_0xc97d('0x46')]:_0x4db533[_0xc97d('0x49')];if(_0x3ba64a[_0xc97d('0x42')][_0xc97d('0x51')]){_0x3601b0['include']=[{'all':!![]}];}_0x3601b0=_[_0xc97d('0x4e')]({},_0x3601b0,_0x3ba64a[_0xc97d('0x50')]);return db[_0xc97d('0x3e')][_0xc97d('0x38')](_0x3601b0)[_0xc97d('0x2d')](handleEntityNotFound(_0x11bab7,null))['then'](respondWithResult(_0x11bab7,null))[_0xc97d('0x54')](handleError(_0x11bab7,null));};exports[_0xc97d('0x57')]=function(_0x850587,_0x371b6b){return db[_0xc97d('0x3e')]['create'](_0x850587[_0xc97d('0x58')],{})[_0xc97d('0x2d')](function(_0xff52ba){var _0x13473b=_0x850587[_0xc97d('0x59')]['get']({'plain':!![]});if(!_0x13473b)throw new Error(_0xc97d('0x5a'));if(_0x13473b[_0xc97d('0x5b')]==='user'){var _0xf5936a=_0xff52ba[_0xc97d('0x5c')]({'plain':!![]});var _0x10a847=[{'name':'VoiceQueues','value':_0xc97d('0x5d')},{'name':_0xc97d('0x30'),'value':_0xc97d('0x31')}];var _0x3c42eb=_['find'](_0x10a847,['value',_0xf5936a[_0xc97d('0x37')]])[_0xc97d('0x39')];return db[_0xc97d('0x5e')][_0xc97d('0x38')]({'where':{'name':_0x3c42eb,'userProfileId':_0x13473b[_0xc97d('0x5f')]},'raw':!![]})[_0xc97d('0x2d')](function(_0x245e72){if(_0x245e72&&_0x245e72[_0xc97d('0x60')]===0x0){return db['UserProfileResource'][_0xc97d('0x57')]({'name':_0xf5936a[_0xc97d('0x39')],'resourceId':_0xf5936a['id'],'type':_0x245e72['name'],'sectionId':_0x245e72['id']},{})[_0xc97d('0x2d')](function(){return _0xff52ba;});}else{return _0xff52ba;}})[_0xc97d('0x54')](function(_0x5d5333){logger[_0xc97d('0x3b')](_0xc97d('0x61'),_0x5d5333);throw _0x5d5333;});}return _0xff52ba;})['then'](respondWithResult(_0x371b6b,0xc9))[_0xc97d('0x54')](handleError(_0x371b6b,null));};exports[_0xc97d('0x62')]=function(_0x310e76,_0x1cee60){var _0x3b424a={'where':{'id':_0x310e76[_0xc97d('0x56')]['id']}},_0x4a139b={};_0x4a139b[_0xc97d('0x49')]=_[_0xc97d('0x43')](db[_0xc97d('0x3e')][_0xc97d('0x3f')]);_0x3b424a[_0xc97d('0x46')]=_['intersection'](_0x4a139b[_0xc97d('0x49')],qs[_0xc97d('0x47')](_0x310e76['query'][_0xc97d('0x47')]));_0x3b424a[_0xc97d('0x46')]=_0x3b424a[_0xc97d('0x46')]['length']?_0x3b424a[_0xc97d('0x46')]:_0x4a139b[_0xc97d('0x49')];if(_0x310e76[_0xc97d('0x42')][_0xc97d('0x51')]){_0x3b424a[_0xc97d('0x52')]=[{'all':!![]}];}_0x3b424a=_['merge']({},_0x3b424a,_0x310e76[_0xc97d('0x50')]);return db[_0xc97d('0x3e')][_0xc97d('0x38')](_0x3b424a)[_0xc97d('0x2d')](handleEntityNotFound(_0x1cee60,null))[_0xc97d('0x2d')](function(_0x55e39c){if(_0x55e39c){var _0x37cc52=_0x55e39c['get']({'plain':!![]});_0x37cc52=qs[_0xc97d('0x63')](_0x37cc52,['id',_0xc97d('0x64'),'updatedAt']);_0x310e76['body']=_[_0xc97d('0x63')](_0x310e76[_0xc97d('0x58')],['id','createdAt',_0xc97d('0x65')]);return db[_0xc97d('0x3e')]['create'](_['merge'](_0x37cc52,_0x310e76[_0xc97d('0x58')]),{'include':_0x310e76[_0xc97d('0x42')]['includeAll']?[{'all':!![]}]:undefined})[_0xc97d('0x2d')](function(_0x4a712e){var _0x234d1a=_0x310e76[_0xc97d('0x59')]['get']({'plain':!![]});if(!_0x234d1a)throw new Error(_0xc97d('0x5a'));if(_0x234d1a[_0xc97d('0x5b')]===_0xc97d('0x59')){var _0x23ae70=_0x4a712e['get']({'plain':!![]});var _0x583446=[{'name':_0xc97d('0x2f'),'value':'inbound'},{'name':'QueueCampaigns','value':_0xc97d('0x31')}];var _0x17d450=_[_0xc97d('0x38')](_0x583446,[_0xc97d('0x35'),_0x23ae70[_0xc97d('0x37')]])[_0xc97d('0x39')];return db[_0xc97d('0x5e')]['find']({'where':{'name':_0x17d450,'userProfileId':_0x234d1a[_0xc97d('0x5f')]},'raw':!![]})['then'](function(_0x12232d){if(_0x12232d&&_0x12232d[_0xc97d('0x60')]===0x0){return db[_0xc97d('0x3a')][_0xc97d('0x57')]({'name':_0x23ae70[_0xc97d('0x39')],'resourceId':_0x23ae70['id'],'type':_0x12232d[_0xc97d('0x39')],'sectionId':_0x12232d['id']},{})[_0xc97d('0x2d')](function(){return _0x4a712e;});}else{return _0x4a712e;}})[_0xc97d('0x54')](function(_0x4fb871){logger[_0xc97d('0x3b')](_0xc97d('0x61'),_0x4fb871);throw _0x4fb871;});}return _0x4a712e;});}})['then'](respondWithResult(_0x1cee60,0xc9))[_0xc97d('0x54')](handleError(_0x1cee60,null));};exports[_0xc97d('0x2c')]=function(_0xfc8e84,_0x2a41fa){if(_0xfc8e84['body']['id']){delete _0xfc8e84[_0xc97d('0x58')]['id'];}return db[_0xc97d('0x3e')][_0xc97d('0x38')]({'where':{'id':_0xfc8e84[_0xc97d('0x56')]['id']}})['then'](handleEntityNotFound(_0x2a41fa,null))['then'](saveUpdates(_0xfc8e84[_0xc97d('0x58')],null))['then'](respondWithResult(_0x2a41fa,null))['catch'](handleError(_0x2a41fa,null));};exports[_0xc97d('0x2e')]=function(_0x8d938a,_0x223582){return db[_0xc97d('0x3e')][_0xc97d('0x38')]({'where':{'id':_0x8d938a[_0xc97d('0x56')]['id']}})[_0xc97d('0x2d')](handleEntityNotFound(_0x223582,null))[_0xc97d('0x2d')](removeEntity(_0x223582,null))[_0xc97d('0x54')](handleError(_0x223582,null));};exports[_0xc97d('0x66')]=function(_0x1f32d6,_0x5ac9fb,_0x4ce3a7){var _0xc14615={'raw':![],'where':{}};var _0x34a22d={};var _0x51ff3f={'count':0x0,'rows':[]};return db[_0xc97d('0x3e')][_0xc97d('0x67')]({'where':{'id':_0x1f32d6[_0xc97d('0x56')]['id']}})['then'](handleEntityNotFound(_0x5ac9fb,null))['then'](function(_0x44575e){if(_0x44575e){_0x34a22d['model']=_['keys'](db['CmHopper']['rawAttributes']);_0x34a22d[_0xc97d('0x42')]=_[_0xc97d('0x43')](_0x1f32d6[_0xc97d('0x42')]);_0x34a22d[_0xc97d('0x44')]=_[_0xc97d('0x45')](_0x34a22d['model'],_0x34a22d[_0xc97d('0x42')]);_0xc14615[_0xc97d('0x46')]=_['intersection'](_0x34a22d['model'],qs[_0xc97d('0x47')](_0x1f32d6['query'][_0xc97d('0x47')]));_0xc14615['attributes']=_0xc14615[_0xc97d('0x46')][_0xc97d('0x48')]?_0xc14615[_0xc97d('0x46')]:_0x34a22d['model'];if(!_0x1f32d6[_0xc97d('0x42')]['hasOwnProperty'](_0xc97d('0x68'))){_0xc14615[_0xc97d('0x28')]=qs[_0xc97d('0x28')](_0x1f32d6[_0xc97d('0x42')][_0xc97d('0x28')]);_0xc14615['offset']=qs['offset'](_0x1f32d6[_0xc97d('0x42')][_0xc97d('0x25')]);}_0xc14615[_0xc97d('0x69')]=qs['sort'](_0x1f32d6['query']['sort']);_0xc14615[_0xc97d('0x4c')]=qs['filters'](_[_0xc97d('0x4d')](_0x1f32d6[_0xc97d('0x42')],_0x34a22d[_0xc97d('0x44')]));_0xc14615['where'][_0xc97d('0x6a')]=_0x44575e['id'];if(_0x1f32d6[_0xc97d('0x42')][_0xc97d('0x32')]){_0xc14615[_0xc97d('0x4c')]=_[_0xc97d('0x4e')](_0xc14615[_0xc97d('0x4c')],{'$or':_[_0xc97d('0x34')](_0xc14615[_0xc97d('0x46')],function(_0x2abbfe){var _0xe9a8e8={};_0xe9a8e8[_0x2abbfe]={'$like':'%'+_0x1f32d6[_0xc97d('0x42')][_0xc97d('0x32')]+'%'};return _0xe9a8e8;})});}_0xc14615=_['merge']({},_0xc14615,_0x1f32d6[_0xc97d('0x50')]);return db[_0xc97d('0x6b')][_0xc97d('0x27')]({'where':_0xc14615[_0xc97d('0x4c')]})['then'](function(_0x505a36){_0x51ff3f[_0xc97d('0x27')]=_0x505a36;if(_0x1f32d6[_0xc97d('0x42')][_0xc97d('0x51')]){_0xc14615[_0xc97d('0x52')]=[{'all':!![]}];}return db[_0xc97d('0x6b')]['findAll'](_0xc14615);})[_0xc97d('0x2d')](function(_0x366ce1){_0x51ff3f[_0xc97d('0x53')]=_0x366ce1;return _0x51ff3f;});}})['then'](respondWithFilteredResult(_0x5ac9fb,_0xc14615))['catch'](handleError(_0x5ac9fb,null));};exports[_0xc97d('0x6c')]=function(_0xf13c65,_0x4aeba5,_0x22c0b7){var _0x3e36f3={'raw':!![],'where':{}};var _0x14ce64={};var _0xb88da2={'count':0x0,'rows':[]};return db[_0xc97d('0x3e')][_0xc97d('0x67')]({'where':{'id':_0xf13c65[_0xc97d('0x56')]['id']}})[_0xc97d('0x2d')](handleEntityNotFound(_0x4aeba5,null))[_0xc97d('0x2d')](function(_0xe5be56){if(_0xe5be56){_0x14ce64[_0xc97d('0x49')]=_[_0xc97d('0x43')](db[_0xc97d('0x6d')]['rawAttributes']);_0x14ce64[_0xc97d('0x42')]=_['keys'](_0xf13c65[_0xc97d('0x42')]);_0x14ce64[_0xc97d('0x44')]=_[_0xc97d('0x45')](_0x14ce64[_0xc97d('0x49')],_0x14ce64['query']);_0x3e36f3[_0xc97d('0x46')]=_[_0xc97d('0x45')](_0x14ce64[_0xc97d('0x49')],qs['fields'](_0xf13c65[_0xc97d('0x42')][_0xc97d('0x47')]));_0x3e36f3[_0xc97d('0x46')]=_0x3e36f3[_0xc97d('0x46')][_0xc97d('0x48')]?_0x3e36f3['attributes']:_0x14ce64[_0xc97d('0x49')];if(!_0xf13c65['query'][_0xc97d('0x4a')]('nolimit')){_0x3e36f3[_0xc97d('0x28')]=qs['limit'](_0xf13c65[_0xc97d('0x42')][_0xc97d('0x28')]);_0x3e36f3['offset']=qs['offset'](_0xf13c65[_0xc97d('0x42')][_0xc97d('0x25')]);}_0x3e36f3[_0xc97d('0x69')]=qs[_0xc97d('0x4b')](_0xf13c65[_0xc97d('0x42')]['sort']);_0x3e36f3[_0xc97d('0x4c')]=qs[_0xc97d('0x44')](_[_0xc97d('0x4d')](_0xf13c65['query'],_0x14ce64[_0xc97d('0x44')]));_0x3e36f3[_0xc97d('0x4c')][_0xc97d('0x6a')]=_0xe5be56['id'];if(_0xf13c65[_0xc97d('0x42')][_0xc97d('0x32')]){_0x3e36f3[_0xc97d('0x4c')]=_[_0xc97d('0x4e')](_0x3e36f3[_0xc97d('0x4c')],{'$or':_['map'](_0x3e36f3[_0xc97d('0x46')],function(_0x5511be){var _0x16973e={};_0x16973e[_0x5511be]={'$like':'%'+_0xf13c65[_0xc97d('0x42')][_0xc97d('0x32')]+'%'};return _0x16973e;})});}_0x3e36f3=_[_0xc97d('0x4e')]({},_0x3e36f3,_0xf13c65[_0xc97d('0x50')]);return db[_0xc97d('0x6d')][_0xc97d('0x27')]({'where':_0x3e36f3['where']})['then'](function(_0x6cc3a4){_0xb88da2[_0xc97d('0x27')]=_0x6cc3a4;if(_0xf13c65[_0xc97d('0x42')][_0xc97d('0x51')]){_0x3e36f3['include']=[{'all':!![]}];}return db[_0xc97d('0x6d')][_0xc97d('0x6e')](_0x3e36f3);})[_0xc97d('0x2d')](function(_0x5ac3f0){_0xb88da2['rows']=_0x5ac3f0;return _0xb88da2;});}})[_0xc97d('0x2d')](respondWithFilteredResult(_0x4aeba5,_0x3e36f3))['catch'](handleError(_0x4aeba5,null));};exports[_0xc97d('0x6f')]=function(_0x27d281,_0x4a363f,_0x31be3b){var _0x44f477={'raw':!![],'where':{}};var _0x2d3eba={};var _0x1a2670={'count':0x0,'rows':[]};return db[_0xc97d('0x3e')][_0xc97d('0x67')]({'where':{'id':_0x27d281['params']['id']}})[_0xc97d('0x2d')](handleEntityNotFound(_0x4a363f,null))['then'](function(_0x3269cf){if(_0x3269cf){_0x2d3eba['model']=_[_0xc97d('0x43')](db['CmHopperFinal'][_0xc97d('0x3f')]);_0x2d3eba['query']=_[_0xc97d('0x43')](_0x27d281[_0xc97d('0x42')]);_0x2d3eba['filters']=_['intersection'](_0x2d3eba[_0xc97d('0x49')],_0x2d3eba['query']);_0x44f477[_0xc97d('0x46')]=_[_0xc97d('0x45')](_0x2d3eba[_0xc97d('0x49')],qs['fields'](_0x27d281[_0xc97d('0x42')][_0xc97d('0x47')]));_0x44f477[_0xc97d('0x46')]=_0x44f477['attributes'][_0xc97d('0x48')]?_0x44f477[_0xc97d('0x46')]:_0x2d3eba[_0xc97d('0x49')];if(!_0x27d281[_0xc97d('0x42')][_0xc97d('0x4a')]('nolimit')){_0x44f477[_0xc97d('0x28')]=qs['limit'](_0x27d281[_0xc97d('0x42')][_0xc97d('0x28')]);_0x44f477[_0xc97d('0x25')]=qs['offset'](_0x27d281[_0xc97d('0x42')][_0xc97d('0x25')]);}_0x44f477[_0xc97d('0x69')]=qs[_0xc97d('0x4b')](_0x27d281[_0xc97d('0x42')]['sort']);_0x44f477[_0xc97d('0x4c')]=qs[_0xc97d('0x44')](_[_0xc97d('0x4d')](_0x27d281['query'],_0x2d3eba[_0xc97d('0x44')]));_0x44f477[_0xc97d('0x4c')][_0xc97d('0x6a')]=_0x3269cf['id'];if(_0x27d281[_0xc97d('0x42')]['filter']){_0x44f477[_0xc97d('0x4c')]=_['merge'](_0x44f477['where'],{'$or':_['map'](_0x44f477[_0xc97d('0x46')],function(_0x4e8be4){var _0x32c382={};_0x32c382[_0x4e8be4]={'$like':'%'+_0x27d281[_0xc97d('0x42')][_0xc97d('0x32')]+'%'};return _0x32c382;})});}_0x44f477=_['merge']({},_0x44f477,_0x27d281[_0xc97d('0x50')]);return db[_0xc97d('0x70')][_0xc97d('0x27')]({'where':_0x44f477[_0xc97d('0x4c')]})[_0xc97d('0x2d')](function(_0x4eb682){_0x1a2670[_0xc97d('0x27')]=_0x4eb682;if(_0x27d281[_0xc97d('0x42')]['includeAll']){_0x44f477[_0xc97d('0x52')]=[{'all':!![]}];}return db['CmHopperFinal'][_0xc97d('0x6e')](_0x44f477);})[_0xc97d('0x2d')](function(_0x1fb3ac){_0x1a2670[_0xc97d('0x53')]=_0x1fb3ac;return _0x1a2670;});}})[_0xc97d('0x2d')](respondWithFilteredResult(_0x4a363f,_0x44f477))[_0xc97d('0x54')](handleError(_0x4a363f,null));};exports[_0xc97d('0x71')]=function(_0x20971b,_0x11a914,_0x299cc3){var _0x4c8e3c={'raw':!![],'where':{}};var _0x5395e2={};var _0x18dbc1={'count':0x0,'rows':[]};return db[_0xc97d('0x3e')][_0xc97d('0x67')]({'where':{'id':_0x20971b[_0xc97d('0x56')]['id']}})['then'](handleEntityNotFound(_0x11a914,null))[_0xc97d('0x2d')](function(_0x258e1f){if(_0x258e1f){_0x5395e2[_0xc97d('0x49')]=_[_0xc97d('0x43')](db['CmHopperBlack'][_0xc97d('0x3f')]);_0x5395e2['query']=_['keys'](_0x20971b[_0xc97d('0x42')]);_0x5395e2[_0xc97d('0x44')]=_['intersection'](_0x5395e2['model'],_0x5395e2[_0xc97d('0x42')]);_0x4c8e3c['attributes']=_['intersection'](_0x5395e2[_0xc97d('0x49')],qs[_0xc97d('0x47')](_0x20971b['query']['fields']));_0x4c8e3c[_0xc97d('0x46')]=_0x4c8e3c[_0xc97d('0x46')][_0xc97d('0x48')]?_0x4c8e3c[_0xc97d('0x46')]:_0x5395e2[_0xc97d('0x49')];if(!_0x20971b[_0xc97d('0x42')][_0xc97d('0x4a')](_0xc97d('0x68'))){_0x4c8e3c['limit']=qs['limit'](_0x20971b['query'][_0xc97d('0x28')]);_0x4c8e3c['offset']=qs[_0xc97d('0x25')](_0x20971b[_0xc97d('0x42')][_0xc97d('0x25')]);}_0x4c8e3c[_0xc97d('0x69')]=qs[_0xc97d('0x4b')](_0x20971b[_0xc97d('0x42')][_0xc97d('0x4b')]);_0x4c8e3c[_0xc97d('0x4c')]=qs[_0xc97d('0x44')](_['pick'](_0x20971b['query'],_0x5395e2[_0xc97d('0x44')]));_0x4c8e3c[_0xc97d('0x4c')]['VoiceQueueId']=_0x258e1f['id'];if(_0x20971b[_0xc97d('0x42')]['filter']){_0x4c8e3c[_0xc97d('0x4c')]=_['merge'](_0x4c8e3c[_0xc97d('0x4c')],{'$or':_[_0xc97d('0x34')](_0x4c8e3c['attributes'],function(_0x5c7bb1){var _0x36a68f={};_0x36a68f[_0x5c7bb1]={'$like':'%'+_0x20971b[_0xc97d('0x42')]['filter']+'%'};return _0x36a68f;})});}_0x4c8e3c=_[_0xc97d('0x4e')]({},_0x4c8e3c,_0x20971b['options']);return db[_0xc97d('0x72')][_0xc97d('0x27')]({'where':_0x4c8e3c['where']})[_0xc97d('0x2d')](function(_0x151ad6){_0x18dbc1[_0xc97d('0x27')]=_0x151ad6;if(_0x20971b['query'][_0xc97d('0x51')]){_0x4c8e3c[_0xc97d('0x52')]=[{'all':!![]}];}return db[_0xc97d('0x72')][_0xc97d('0x6e')](_0x4c8e3c);})[_0xc97d('0x2d')](function(_0x3c30c8){_0x18dbc1[_0xc97d('0x53')]=_0x3c30c8;return _0x18dbc1;});}})[_0xc97d('0x2d')](respondWithFilteredResult(_0x11a914,_0x4c8e3c))[_0xc97d('0x54')](handleError(_0x11a914,null));};exports['getTeams']=function(_0x1ac0c7,_0x2dba5a,_0x4957cb){var _0x1a9d37={};var _0x151157={};var _0x11d1f7;var _0x29fd91;return db[_0xc97d('0x3e')][_0xc97d('0x67')]({'where':{'id':_0x1ac0c7[_0xc97d('0x56')]['id']}})[_0xc97d('0x2d')](handleEntityNotFound(_0x2dba5a,null))['then'](function(_0xe6ec5b){if(_0xe6ec5b){_0x11d1f7=_0xe6ec5b;_0x151157[_0xc97d('0x49')]=_[_0xc97d('0x43')](db[_0xc97d('0x73')][_0xc97d('0x3f')]);_0x151157['query']=_[_0xc97d('0x43')](_0x1ac0c7[_0xc97d('0x42')]);_0x151157[_0xc97d('0x44')]=_['intersection'](_0x151157['model'],_0x151157['query']);_0x1a9d37[_0xc97d('0x46')]=_[_0xc97d('0x45')](_0x151157[_0xc97d('0x49')],qs['fields'](_0x1ac0c7[_0xc97d('0x42')][_0xc97d('0x47')]));_0x1a9d37[_0xc97d('0x46')]=_0x1a9d37[_0xc97d('0x46')][_0xc97d('0x48')]?_0x1a9d37[_0xc97d('0x46')]:_0x151157[_0xc97d('0x49')];_0x1a9d37[_0xc97d('0x69')]=qs[_0xc97d('0x4b')](_0x1ac0c7['query']['sort']);_0x1a9d37[_0xc97d('0x4c')]=qs[_0xc97d('0x44')](_[_0xc97d('0x4d')](_0x1ac0c7['query'],_0x151157[_0xc97d('0x44')]));if(_0x1ac0c7[_0xc97d('0x42')]['filter']){_0x1a9d37[_0xc97d('0x4c')]=_[_0xc97d('0x4e')](_0x1a9d37[_0xc97d('0x4c')],{'$or':_[_0xc97d('0x34')](_0x1a9d37[_0xc97d('0x46')],function(_0x5aa42f){var _0x367bfe={};_0x367bfe[_0x5aa42f]={'$like':'%'+_0x1ac0c7[_0xc97d('0x42')][_0xc97d('0x32')]+'%'};return _0x367bfe;})});}_0x1a9d37=_[_0xc97d('0x4e')]({},_0x1a9d37,_0x1ac0c7[_0xc97d('0x50')]);return _0x11d1f7['getTeams'](_0x1a9d37);}})[_0xc97d('0x2d')](function(_0x1a61b1){if(_0x1a61b1){_0x29fd91=_0x1a61b1['length'];if(!_0x1ac0c7['query'][_0xc97d('0x4a')]('nolimit')){_0x1a9d37[_0xc97d('0x28')]=qs[_0xc97d('0x28')](_0x1ac0c7[_0xc97d('0x42')][_0xc97d('0x28')]);_0x1a9d37['offset']=qs['offset'](_0x1ac0c7['query'][_0xc97d('0x25')]);}return _0x11d1f7['getTeams'](_0x1a9d37);}})[_0xc97d('0x2d')](function(_0xe1ddf2){if(_0xe1ddf2){return _0xe1ddf2?{'count':_0x29fd91,'rows':_0xe1ddf2}:null;}})[_0xc97d('0x2d')](respondWithResult(_0x2dba5a,null))['catch'](handleError(_0x2dba5a,null));};exports['addTeams']=function(_0x3984ba,_0x5c53e7,_0x5de529){var _0x5f0e31=_0x3984ba[_0xc97d('0x58')][_0xc97d('0x74')];var _0x3aad64=_[_0xc97d('0x34')](_0x5f0e31,'id');return db['Team']['findAll']({'where':{'id':_0x3aad64},'attributes':['id'],'include':[{'model':db['User'],'as':_0xc97d('0x75'),'attributes':['id',_0xc97d('0x39'),'online',_0xc97d('0x76'),_0xc97d('0x77')],'raw':!![]}]})[_0xc97d('0x2d')](function(_0x193e3c){if(_0x193e3c){var _0x391b48=_[_0xc97d('0x78')](_0x193e3c,function(_0x2af3f7){var _0x4ca9a6=_0x2af3f7[_0xc97d('0x5c')]({'plain':!![]});_0x4ca9a6['Agents'][_0xc97d('0x79')](function(_0x32a897){_0x32a897['penalty']=_[_0xc97d('0x38')](_0x5f0e31,{'id':_0x4ca9a6['id']})[_0xc97d('0x7a')];});return _0x4ca9a6['Agents'];});return db[_0xc97d('0x3e')][_0xc97d('0x38')]({'where':{'id':_0x3984ba[_0xc97d('0x56')]['id']}})[_0xc97d('0x2d')](function(_0x337cf2){return db[_0xc97d('0x7b')][_0xc97d('0x7c')](function(_0x14cf2e){return _0x337cf2[_0xc97d('0x7d')](_0x3aad64,{'transaction':_0x14cf2e})[_0xc97d('0x2d')](function(){return BPromise[_0xc97d('0x7e')](_0x5f0e31,function(_0xc9767e){return db[_0xc97d('0x7f')][_0xc97d('0x80')]({'TeamId':_0xc9767e['id'],'VoiceQueueId':_0x3984ba[_0xc97d('0x56')]['id'],'penalty':_0xc9767e[_0xc97d('0x7a')]},{'transaction':_0x14cf2e});});})[_0xc97d('0x2d')](function(){return BPromise[_0xc97d('0x7e')](_0x391b48,function(_0x2929d1){return db[_0xc97d('0x81')][_0xc97d('0x82')]({'where':{'UserId':_0x2929d1['id'],'VoiceQueueId':_0x3984ba[_0xc97d('0x56')]['id']},'defaults':{'penalty':_0x2929d1[_0xc97d('0x7a')]},'transaction':_0x14cf2e});});})['then'](function(){return BPromise[_0xc97d('0x7e')](_[_0xc97d('0x32')](_0x391b48,{'online':!![]}),function(_0x5ea198){return db[_0xc97d('0x83')][_0xc97d('0x80')]({'membername':_0x5ea198['name'],'UserId':_0x5ea198['id'],'queue_name':_0x337cf2[_0xc97d('0x39')],'VoiceQueueId':_0x337cf2['id'],'interface':_[_0xc97d('0x84')](_0x5ea198['interface'])?util[_0xc97d('0x85')](_0xc97d('0x86'),_0x5ea198[_0xc97d('0x39')]):_0x5ea198[_0xc97d('0x77')],'paused':_0x5ea198[_0xc97d('0x76')]||![],'penalty':_0x5ea198['penalty']},{'transaction':_0x14cf2e});});})[_0xc97d('0x2d')](function(){_0x391b48[_0xc97d('0x79')](function(_0x11b716){socket[_0xc97d('0x87')]('userVoiceQueue:save',{'UserId':_0x11b716['id'],'VoiceQueueId':_0x337cf2['id']});});});});});}})[_0xc97d('0x2d')](respondWithStatusCode(_0x5c53e7,null))[_0xc97d('0x54')](handleError(_0x5c53e7,null));};exports[_0xc97d('0x88')]=function(_0xb7395c,_0x5f2cd4,_0x4420fa){return db[_0xc97d('0x73')][_0xc97d('0x6e')]({'where':{'id':_0xb7395c[_0xc97d('0x42')][_0xc97d('0x89')]},'attributes':['id'],'include':[{'model':db[_0xc97d('0x8a')],'as':_0xc97d('0x75'),'attributes':['id'],'raw':!![]}]})[_0xc97d('0x2d')](handleEntityNotFound(_0x5f2cd4,null))[_0xc97d('0x2d')](function(_0x55594c){var _0x11e252=_[_0xc97d('0x34')](_0x55594c,'id');var _0x4bb7d4=[];var _0x58dea6=[];var _0x157ed9=squel[_0xc97d('0x8b')]();_0x157ed9['field'](_0xc97d('0x8c'))['from'](_0xc97d('0x8d'),'tq')[_0xc97d('0x8e')](_0xc97d('0x8f'),'ut',_0xc97d('0x90'))[_0xc97d('0x4c')](_0xc97d('0x91'),_0xb7395c[_0xc97d('0x56')]['id']);for(var _0x9fca23=0x0;_0x9fca23<_0x55594c[_0xc97d('0x48')];_0x9fca23+=0x1){let _0x3ba89a=_0x55594c[_0x9fca23];for(var _0x1a9fbc=0x0;_0x1a9fbc<_0x3ba89a[_0xc97d('0x75')][_0xc97d('0x48')];_0x1a9fbc+=0x1){let _0x504beb=_0x3ba89a[_0xc97d('0x75')][_0x1a9fbc];var _0x46ad16=_0x157ed9[_0xc97d('0x62')]();_0x46ad16[_0xc97d('0x4c')]('ut.UserId\x20=\x20?',_0x504beb['id']);_0x58dea6[_0xc97d('0x92')](db['sequelize'][_0xc97d('0x42')](_0x46ad16['toString'](),{'type':db[_0xc97d('0x7b')][_0xc97d('0x93')][_0xc97d('0x94')]})[_0xc97d('0x2d')](function(_0x558684){if(_0x558684[_0xc97d('0x48')]===0x1){return _0x504beb['id'];}else{var _0x7a9cf2=_['every'](_[_0xc97d('0x34')](_0x558684,'TeamId'),function(_0x578fbe){return _[_0xc97d('0x36')](_0x11e252,_0x578fbe);});if(_0x7a9cf2){return _0x504beb['id'];}}}));}}return BPromise['all'](_0x58dea6)['then'](function(_0x273a4d){_0x4bb7d4=_(_0x4bb7d4)['union'](_0x273a4d)[_0xc97d('0x95')]()['value']();return db[_0xc97d('0x3e')][_0xc97d('0x38')]({'where':{'id':_0xb7395c['params']['id']}})[_0xc97d('0x2d')](function(_0x3c9da1){return db['sequelize'][_0xc97d('0x7c')](function(_0x31ba6a){return _0x3c9da1[_0xc97d('0x88')](_0xb7395c[_0xc97d('0x42')][_0xc97d('0x89')],{'transaction':_0x31ba6a})[_0xc97d('0x2d')](function(){if(!_[_0xc97d('0x96')](_0x4bb7d4)){return _0x3c9da1[_0xc97d('0x97')](_0x4bb7d4,{'transaction':_0x31ba6a})['then'](function(){return db[_0xc97d('0x83')][_0xc97d('0x2e')]({'where':{'VoiceQueueId':_0xb7395c['params']['id'],'UserId':_0x4bb7d4},'transaction':_0x31ba6a});});}})[_0xc97d('0x2d')](function(){_0x4bb7d4['forEach'](function(_0x178cc9){socket[_0xc97d('0x87')](_0xc97d('0x98'),{'UserId':_0x178cc9,'VoiceQueueId':_0x3c9da1['id']});});});});});});})[_0xc97d('0x2d')](respondWithStatusCode(_0x5f2cd4,null))[_0xc97d('0x54')](handleError(_0x5f2cd4,null));};exports[_0xc97d('0x99')]=function(_0x11c1a1,_0x11a8a3,_0x8d046d){var _0x2ad2d6,_0x1484cb;return db['VoiceQueue']['find']({'where':{'id':_0x11c1a1['params']['id']}})['then'](handleEntityNotFound(_0x11a8a3,null))['then'](function(_0x1ad742){if(_0x1ad742){_0x1484cb=_0x1ad742;return _0x1ad742[_0xc97d('0x99')](_0x11c1a1[_0xc97d('0x58')][_0xc97d('0x89')],_['omit'](_0x11c1a1[_0xc97d('0x58')],['ids','id'])||{})[_0xc97d('0x9a')](function(_0xf87e6e){for(var _0x554e57=0x0;_0x554e57<_0x11c1a1[_0xc97d('0x58')][_0xc97d('0x89')][_0xc97d('0x48')];_0x554e57+=0x1){socket[_0xc97d('0x87')](_0xc97d('0x9b'),{'UserId':Number(_0x11c1a1[_0xc97d('0x58')]['ids'][_0x554e57]),'VoiceQueueId':Number(_0x11c1a1['params']['id'])});}return _0xf87e6e;});}})['then'](function(_0x3b95a1){_0x2ad2d6=_0x3b95a1||[];if(_0x1484cb){return db[_0xc97d('0x8a')][_0xc97d('0x6e')]({'where':{'id':_0x11c1a1[_0xc97d('0x58')]['ids']},'attributes':['id',_0xc97d('0x39'),_0xc97d('0x9c'),_0xc97d('0x76'),_0xc97d('0x77')],'raw':!![]});}})['then'](function(_0x55eaa8){if(!_[_0xc97d('0x96')](_0x55eaa8)){var _0x22de71=[];for(var _0x52c854=0x0;_0x52c854<_0x55eaa8[_0xc97d('0x48')];_0x52c854++){if(_0x55eaa8[_0x52c854][_0xc97d('0x9c')]){_0x22de71[_0xc97d('0x92')](db[_0xc97d('0x83')][_0xc97d('0x80')]({'membername':_0x55eaa8[_0x52c854]['name'],'UserId':_0x55eaa8[_0x52c854]['id'],'queue_name':_0x1484cb[_0xc97d('0x39')],'VoiceQueueId':_0x1484cb['id'],'interface':_[_0xc97d('0x84')](_0x55eaa8[_0x52c854][_0xc97d('0x77')])?util[_0xc97d('0x85')](_0xc97d('0x86'),_0x55eaa8[_0x52c854]['name']):_0x55eaa8[_0x52c854][_0xc97d('0x77')],'paused':_0x55eaa8[_0x52c854][_0xc97d('0x76')]||![],'penalty':_0x11c1a1[_0xc97d('0x58')]['penalty']||0x0}));}}return BPromise['all'](_0x22de71);}})['then'](function(){return _0x2ad2d6;})['then'](respondWithResult(_0x11a8a3,null))['catch'](handleError(_0x11a8a3,null));};exports['removeAgents']=function(_0x21bc03,_0x664469,_0xe87a44){return db['VoiceQueue'][_0xc97d('0x38')]({'where':{'id':_0x21bc03[_0xc97d('0x56')]['id']}})[_0xc97d('0x2d')](handleEntityNotFound(_0x664469,null))['then'](function(_0x277c5a){if(_0x277c5a){return _0x277c5a[_0xc97d('0x97')](_0x21bc03['query'][_0xc97d('0x89')])[_0xc97d('0x2d')](function(){if(_[_0xc97d('0x9d')](_0x21bc03[_0xc97d('0x42')][_0xc97d('0x89')])){for(var _0x1f2521=0x0;_0x1f2521<_0x21bc03['query'][_0xc97d('0x89')][_0xc97d('0x48')];_0x1f2521+=0x1){socket[_0xc97d('0x87')](_0xc97d('0x98'),{'UserId':Number(_0x21bc03['query'][_0xc97d('0x89')][_0x1f2521]),'VoiceQueueId':Number(_0x21bc03['params']['id'])});}}else{socket['emit']('userVoiceQueue:remove',{'UserId':Number(_0x21bc03[_0xc97d('0x42')][_0xc97d('0x89')]),'VoiceQueueId':Number(_0x21bc03[_0xc97d('0x56')]['id'])});}});}})[_0xc97d('0x2d')](function(_0x424191){return db[_0xc97d('0x83')]['destroy']({'where':{'VoiceQueueId':_0x21bc03['params']['id'],'UserId':_0x21bc03[_0xc97d('0x42')][_0xc97d('0x89')]}})[_0xc97d('0x2d')](function(){return _0x424191;});})['then'](respondWithStatusCode(_0x664469,null))['catch'](handleError(_0x664469,null));};exports['getAgents']=function(_0x11bfaa,_0x384f46,_0x11cc09){var _0x55aeca={};var _0x5100b8={};var _0x2eea6d;var _0x26e590;return db[_0xc97d('0x3e')][_0xc97d('0x67')]({'where':{'id':_0x11bfaa[_0xc97d('0x56')]['id']}})[_0xc97d('0x2d')](handleEntityNotFound(_0x384f46,null))[_0xc97d('0x2d')](function(_0x225d40){if(_0x225d40){_0x2eea6d=_0x225d40;_0x5100b8[_0xc97d('0x49')]=_[_0xc97d('0x43')](db[_0xc97d('0x8a')][_0xc97d('0x3f')]);_0x5100b8['query']=_[_0xc97d('0x43')](_0x11bfaa[_0xc97d('0x42')]);_0x5100b8[_0xc97d('0x44')]=_['intersection'](_0x5100b8[_0xc97d('0x49')],_0x5100b8[_0xc97d('0x42')]);_0x55aeca[_0xc97d('0x46')]=_[_0xc97d('0x45')](_0x5100b8[_0xc97d('0x49')],qs['fields'](_0x11bfaa[_0xc97d('0x42')][_0xc97d('0x47')]));_0x55aeca['attributes']=_0x55aeca[_0xc97d('0x46')][_0xc97d('0x48')]?_0x55aeca[_0xc97d('0x46')]:_0x5100b8['model'];_0x55aeca[_0xc97d('0x69')]=qs[_0xc97d('0x4b')](_0x11bfaa[_0xc97d('0x42')][_0xc97d('0x4b')]);_0x55aeca[_0xc97d('0x4c')]=qs[_0xc97d('0x44')](_[_0xc97d('0x4d')](_0x11bfaa[_0xc97d('0x42')],_0x5100b8[_0xc97d('0x44')]));if(_0x11bfaa[_0xc97d('0x42')]['filter']){_0x55aeca[_0xc97d('0x4c')]=_['merge'](_0x55aeca['where'],{'$or':_[_0xc97d('0x34')](_0x55aeca[_0xc97d('0x46')],function(_0x5a731c){var _0x3dc51c={};_0x3dc51c[_0x5a731c]={'$like':'%'+_0x11bfaa['query'][_0xc97d('0x32')]+'%'};return _0x3dc51c;})});}_0x55aeca=_[_0xc97d('0x4e')]({},_0x55aeca,_0x11bfaa[_0xc97d('0x50')]);return _0x2eea6d[_0xc97d('0x9e')](_0x55aeca);}})[_0xc97d('0x2d')](function(_0x29507a){if(_0x29507a){_0x26e590=_0x29507a[_0xc97d('0x48')];if(!_0x11bfaa[_0xc97d('0x42')][_0xc97d('0x4a')](_0xc97d('0x68'))){_0x55aeca[_0xc97d('0x28')]=qs[_0xc97d('0x28')](_0x11bfaa[_0xc97d('0x42')][_0xc97d('0x28')]);_0x55aeca[_0xc97d('0x25')]=qs[_0xc97d('0x25')](_0x11bfaa[_0xc97d('0x42')][_0xc97d('0x25')]);}return _0x2eea6d[_0xc97d('0x9e')](_0x55aeca);}})[_0xc97d('0x2d')](function(_0x50140a){if(_0x50140a){return _0x50140a?{'count':_0x26e590,'rows':_0x50140a}:null;}})['then'](respondWithResult(_0x384f46,null))[_0xc97d('0x54')](handleError(_0x384f46,null));};exports[_0xc97d('0x9f')]=function(_0x1a2665,_0x37f4ef,_0x4c287c){var _0x124e44={};var _0x3b665c={};var _0x428060;var _0x1b4455;return db[_0xc97d('0x3e')][_0xc97d('0x67')]({'where':{'id':_0x1a2665['params']['id']}})['then'](handleEntityNotFound(_0x37f4ef,null))[_0xc97d('0x2d')](function(_0x2c3da9){if(_0x2c3da9){_0x428060=_0x2c3da9;_0x3b665c['model']=_[_0xc97d('0x43')](db['UserVoiceQueueRt'][_0xc97d('0x3f')]);_0x3b665c[_0xc97d('0x42')]=_[_0xc97d('0x43')](_0x1a2665[_0xc97d('0x42')]);_0x3b665c[_0xc97d('0x44')]=_[_0xc97d('0x45')](_0x3b665c['model'],_0x3b665c['query']);_0x124e44['attributes']=_[_0xc97d('0x45')](_0x3b665c[_0xc97d('0x49')],qs[_0xc97d('0x47')](_0x1a2665[_0xc97d('0x42')]['fields']));_0x124e44[_0xc97d('0x46')]=_0x124e44['attributes'][_0xc97d('0x48')]?_0x124e44['attributes']:_0x3b665c[_0xc97d('0x49')];_0x124e44[_0xc97d('0x69')]=qs[_0xc97d('0x4b')](_0x1a2665['query']['sort']);_0x124e44[_0xc97d('0x4c')]=qs[_0xc97d('0x44')](_['pick'](_0x1a2665[_0xc97d('0x42')],_0x3b665c[_0xc97d('0x44')]));if(_0x1a2665[_0xc97d('0x42')][_0xc97d('0x32')]){_0x124e44[_0xc97d('0x4c')]=_[_0xc97d('0x4e')](_0x124e44[_0xc97d('0x4c')],{'$or':_[_0xc97d('0x34')](_0x124e44[_0xc97d('0x46')],function(_0x4b4b28){var _0x565e59={};_0x565e59[_0x4b4b28]={'$like':'%'+_0x1a2665[_0xc97d('0x42')][_0xc97d('0x32')]+'%'};return _0x565e59;})});}_0x124e44=_[_0xc97d('0x4e')]({},_0x124e44,_0x1a2665[_0xc97d('0x50')]);return _0x428060[_0xc97d('0x9f')](_0x124e44);}})[_0xc97d('0x2d')](function(_0x226b2f){if(_0x226b2f){_0x1b4455=_0x226b2f['length'];if(!_0x1a2665['query'][_0xc97d('0x4a')]('nolimit')){_0x124e44[_0xc97d('0x28')]=qs[_0xc97d('0x28')](_0x1a2665[_0xc97d('0x42')][_0xc97d('0x28')]);_0x124e44[_0xc97d('0x25')]=qs[_0xc97d('0x25')](_0x1a2665[_0xc97d('0x42')][_0xc97d('0x25')]);}return _0x428060['getMembers'](_0x124e44);}})[_0xc97d('0x2d')](function(_0x18a20f){return _0x18a20f?{'count':_0x1b4455,'rows':_0x18a20f}:null;})[_0xc97d('0x2d')](respondWithResult(_0x37f4ef,null))[_0xc97d('0x54')](handleError(_0x37f4ef,null));};exports[_0xc97d('0xa0')]=function(_0x34b5a7,_0x148bc1,_0x3fee19){var _0x3a9e73={};var _0x42932b={};var _0x409f72;var _0x3a82c7;return db[_0xc97d('0x3e')][_0xc97d('0x67')]({'where':{'id':_0x34b5a7[_0xc97d('0x56')]['id']}})[_0xc97d('0x2d')](handleEntityNotFound(_0x148bc1,null))[_0xc97d('0x2d')](function(_0x5802a5){if(_0x5802a5){_0x409f72=_0x5802a5;_0x42932b[_0xc97d('0x49')]=_[_0xc97d('0x43')](db[_0xc97d('0xa1')][_0xc97d('0x3f')]);_0x42932b[_0xc97d('0x42')]=_['keys'](_0x34b5a7[_0xc97d('0x42')]);_0x42932b[_0xc97d('0x44')]=_[_0xc97d('0x45')](_0x42932b[_0xc97d('0x49')],_0x42932b[_0xc97d('0x42')]);_0x3a9e73['attributes']=_['intersection'](_0x42932b[_0xc97d('0x49')],qs[_0xc97d('0x47')](_0x34b5a7[_0xc97d('0x42')][_0xc97d('0x47')]));_0x3a9e73[_0xc97d('0x46')]=_0x3a9e73[_0xc97d('0x46')][_0xc97d('0x48')]?_0x3a9e73[_0xc97d('0x46')]:_0x42932b[_0xc97d('0x49')];_0x3a9e73[_0xc97d('0x69')]=qs[_0xc97d('0x4b')](_0x34b5a7[_0xc97d('0x42')]['sort']);_0x3a9e73[_0xc97d('0x4c')]=qs[_0xc97d('0x44')](_[_0xc97d('0x4d')](_0x34b5a7['query'],_0x42932b[_0xc97d('0x44')]));if(_0x34b5a7[_0xc97d('0x42')][_0xc97d('0x32')]){_0x3a9e73[_0xc97d('0x4c')]=_[_0xc97d('0x4e')](_0x3a9e73['where'],{'$or':_[_0xc97d('0x34')](_0x3a9e73[_0xc97d('0x46')],function(_0x3a746c){var _0x563edf={};_0x563edf[_0x3a746c]={'$like':'%'+_0x34b5a7['query'][_0xc97d('0x32')]+'%'};return _0x563edf;})});}_0x3a9e73=_['merge']({},_0x3a9e73,_0x34b5a7[_0xc97d('0x50')]);return _0x409f72[_0xc97d('0xa0')](_0x3a9e73);}})[_0xc97d('0x2d')](function(_0x472c95){if(_0x472c95){_0x3a82c7=_0x472c95[_0xc97d('0x48')];if(!_0x34b5a7[_0xc97d('0x42')][_0xc97d('0x4a')](_0xc97d('0x68'))){_0x3a9e73[_0xc97d('0x28')]=qs[_0xc97d('0x28')](_0x34b5a7['query'][_0xc97d('0x28')]);_0x3a9e73[_0xc97d('0x25')]=qs[_0xc97d('0x25')](_0x34b5a7[_0xc97d('0x42')][_0xc97d('0x25')]);}return _0x409f72[_0xc97d('0xa0')](_0x3a9e73);}})['then'](function(_0xe761){if(_0xe761){return _0xe761?{'count':_0x3a82c7,'rows':_0xe761}:null;}})['then'](respondWithResult(_0x148bc1,null))[_0xc97d('0x54')](handleError(_0x148bc1,null));};exports[_0xc97d('0xa2')]=function(_0x174493,_0x2f1d82,_0x109374){var _0x532c79,_0x2b571d;return db[_0xc97d('0x3e')][_0xc97d('0x38')]({'where':{'id':_0x174493['params']['id']}})[_0xc97d('0x2d')](handleEntityNotFound(_0x2f1d82,null))['then'](function(_0x56363c){if(_0x56363c){_0x2b571d=_0x56363c;return _0x56363c[_0xc97d('0xa2')](_0x174493[_0xc97d('0x58')][_0xc97d('0x89')],_[_0xc97d('0x63')](_0x174493['body'],[_0xc97d('0x89'),'id'])||{});}return null;})[_0xc97d('0x9a')](function(_0x39de0e){var _0x518911;_0x532c79=_0x39de0e||[];var _0xc08b59=[];if(_0x39de0e){for(var _0x53f18b=0x0;_0x53f18b<_0x39de0e[_0xc97d('0x48')];_0x53f18b+=0x1){var _0xfa38cd=_0x39de0e[_0x53f18b][_0xc97d('0x5c')]({'plain':!![]});_0x2b571d[_0xc97d('0xa3')]=_0x174493[_0xc97d('0x58')][_0xc97d('0xa3')]?_0x174493[_0xc97d('0x58')]['dialCheckDuplicateType']:_0x2b571d[_0xc97d('0xa3')];switch(_0x2b571d['dialCheckDuplicateType']){case'always':_0x518911=squel[_0xc97d('0xa4')]()[_0xc97d('0xa5')](_0xc97d('0xa6'))[_0xc97d('0xa7')]([_0xc97d('0xa8'),_0xc97d('0xa9'),_0xc97d('0xaa'),'ListId',_0xc97d('0x6a'),_0xc97d('0x64'),_0xc97d('0x65')],squel[_0xc97d('0x8b')]()[_0xc97d('0xab')]('phone',_0xc97d('0xa8'))[_0xc97d('0xab')](_0xc97d('0xac'),_0xc97d('0xa9'))[_0xc97d('0xab')]('id','ContactId')[_0xc97d('0xab')](_0xfa38cd['CmListId']['toString'](),_0xc97d('0xad'))[_0xc97d('0xab')](_0x174493[_0xc97d('0x56')]['id']['toString'](),_0xc97d('0x6a'))['field'](_0xc97d('0xac'),_0xc97d('0x64'))[_0xc97d('0xab')](_0xc97d('0xac'),'updatedAt')[_0xc97d('0xae')](_0xc97d('0xaf'))[_0xc97d('0x4c')](_0xc97d('0xb0'))[_0xc97d('0x4c')](_0xc97d('0xb1'),_0xfa38cd[_0xc97d('0xb2')][_0xc97d('0xb3')]())['where'](_0xc97d('0xb4'))[_0xc97d('0x4c')](_0xc97d('0xb5'),squel['select']()[_0xc97d('0xab')](_0xc97d('0xb6'))[_0xc97d('0xae')]('cm_hopper_final')[_0xc97d('0x4c')](_0xc97d('0x91'),_0x174493[_0xc97d('0x56')]['id']['toString']()))[_0xc97d('0x4c')](_0xc97d('0xb5'),squel['select']()[_0xc97d('0xab')]('COALESCE(phone,\x27\x27)')[_0xc97d('0xae')](_0xc97d('0xa6'))[_0xc97d('0x4c')]('VoiceQueueId\x20=\x20?',_0x174493[_0xc97d('0x56')]['id'][_0xc97d('0xb3')]())))['toString']();break;case _0xc97d('0xb7'):_0x518911=squel[_0xc97d('0xa4')]()[_0xc97d('0xa5')](_0xc97d('0xa6'))['fromQuery']([_0xc97d('0xa8'),_0xc97d('0xa9'),_0xc97d('0xaa'),'ListId',_0xc97d('0x6a'),_0xc97d('0x64'),_0xc97d('0x65')],squel[_0xc97d('0x8b')]()[_0xc97d('0xab')](_0xc97d('0xa8'),_0xc97d('0xa8'))['field']('NOW()',_0xc97d('0xa9'))['field']('id',_0xc97d('0xaa'))[_0xc97d('0xab')](_0xfa38cd[_0xc97d('0xb2')]['toString'](),_0xc97d('0xad'))[_0xc97d('0xab')](_0x174493[_0xc97d('0x56')]['id']['toString'](),_0xc97d('0x6a'))[_0xc97d('0xab')]('NOW()','createdAt')['field'](_0xc97d('0xac'),_0xc97d('0x65'))['from'](_0xc97d('0xaf'))[_0xc97d('0x4c')](_0xc97d('0xb0'))[_0xc97d('0x4c')]('ListId\x20=\x20?',_0xfa38cd['CmListId']['toString']())[_0xc97d('0x4c')](_0xc97d('0xb4'))[_0xc97d('0x4c')](_0xc97d('0xb5'),squel[_0xc97d('0x8b')]()[_0xc97d('0xab')](_0xc97d('0xb8'))[_0xc97d('0xae')]('cm_hopper')[_0xc97d('0x4c')](_0xc97d('0x91'),_0x174493[_0xc97d('0x56')]['id'][_0xc97d('0xb3')]())))[_0xc97d('0xb3')]();break;default:_0x518911=squel[_0xc97d('0xa4')]()['into']('cm_hopper')[_0xc97d('0xa7')]([_0xc97d('0xa8'),_0xc97d('0xa9'),_0xc97d('0xaa'),_0xc97d('0xad'),_0xc97d('0x6a'),'createdAt',_0xc97d('0x65')],squel[_0xc97d('0x8b')]()[_0xc97d('0xab')](_0xc97d('0xa8'),_0xc97d('0xa8'))[_0xc97d('0xab')](_0xc97d('0xac'),'scheduledAt')['field']('id',_0xc97d('0xaa'))[_0xc97d('0xab')](_0xfa38cd[_0xc97d('0xb2')][_0xc97d('0xb3')](),_0xc97d('0xad'))['field'](_0x174493[_0xc97d('0x56')]['id']['toString'](),'VoiceQueueId')['field'](_0xc97d('0xac'),_0xc97d('0x64'))[_0xc97d('0xab')](_0xc97d('0xac'),_0xc97d('0x65'))[_0xc97d('0xae')](_0xc97d('0xaf'))['where'](_0xc97d('0xb0'))[_0xc97d('0x4c')](_0xc97d('0xb1'),_0xfa38cd[_0xc97d('0xb2')][_0xc97d('0xb3')]())[_0xc97d('0x4c')](_0xc97d('0xb4')))['toString']();}_0xc08b59['push'](db[_0xc97d('0x7b')][_0xc97d('0x42')](_0x518911));}return BPromise[_0xc97d('0xb9')](_0xc08b59);}})['then'](function(){return _0x532c79;})[_0xc97d('0x2d')](respondWithResult(_0x2f1d82,null))[_0xc97d('0x54')](handleError(_0x2f1d82,null));};exports[_0xc97d('0xba')]=function(_0x5d5512,_0x5dde55,_0x418cb1){return db[_0xc97d('0x3e')][_0xc97d('0x38')]({'where':{'id':_0x5d5512[_0xc97d('0x56')]['id']}})[_0xc97d('0x2d')](handleEntityNotFound(_0x5dde55,null))[_0xc97d('0x2d')](function(_0x379073){if(_0x379073){return _0x379073['removeLists'](_0x5d5512[_0xc97d('0x42')][_0xc97d('0x89')]);}})[_0xc97d('0x2d')](function(_0x59fd45){if(_0x59fd45){return db[_0xc97d('0x6b')][_0xc97d('0x2e')]({'where':{'ListId':_0x5d5512[_0xc97d('0x42')]['ids'],'VoiceQueueId':_0x5d5512[_0xc97d('0x56')]['id']}})[_0xc97d('0x2d')](function(){return _0x59fd45;});}})['then'](respondWithStatusCode(_0x5dde55,null))[_0xc97d('0x54')](handleError(_0x5dde55,null));};exports[_0xc97d('0xbb')]=function(_0x3a8259,_0x5206f6,_0x553ca6){var _0x1543ef={};var _0x4640c9={};var _0x2b8df9;var _0x348c95;return db[_0xc97d('0x3e')]['findOne']({'where':{'id':_0x3a8259[_0xc97d('0x56')]['id']}})[_0xc97d('0x2d')](handleEntityNotFound(_0x5206f6,null))[_0xc97d('0x2d')](function(_0x536b12){if(_0x536b12){_0x2b8df9=_0x536b12;_0x4640c9[_0xc97d('0x49')]=_[_0xc97d('0x43')](db[_0xc97d('0xa1')][_0xc97d('0x3f')]);_0x4640c9['query']=_[_0xc97d('0x43')](_0x3a8259[_0xc97d('0x42')]);_0x4640c9['filters']=_['intersection'](_0x4640c9[_0xc97d('0x49')],_0x4640c9[_0xc97d('0x42')]);_0x1543ef[_0xc97d('0x46')]=_['intersection'](_0x4640c9['model'],qs['fields'](_0x3a8259['query'][_0xc97d('0x47')]));_0x1543ef[_0xc97d('0x46')]=_0x1543ef['attributes']['length']?_0x1543ef[_0xc97d('0x46')]:_0x4640c9[_0xc97d('0x49')];_0x1543ef['order']=qs[_0xc97d('0x4b')](_0x3a8259[_0xc97d('0x42')]['sort']);_0x1543ef[_0xc97d('0x4c')]=qs[_0xc97d('0x44')](_[_0xc97d('0x4d')](_0x3a8259[_0xc97d('0x42')],_0x4640c9['filters']));if(_0x3a8259[_0xc97d('0x42')][_0xc97d('0x32')]){_0x1543ef['where']=_[_0xc97d('0x4e')](_0x1543ef[_0xc97d('0x4c')],{'$or':_['map'](_0x1543ef['attributes'],function(_0x402d93){var _0x342b47={};_0x342b47[_0x402d93]={'$like':'%'+_0x3a8259[_0xc97d('0x42')][_0xc97d('0x32')]+'%'};return _0x342b47;})});}_0x1543ef=_['merge']({},_0x1543ef,_0x3a8259[_0xc97d('0x50')]);return _0x2b8df9[_0xc97d('0xbb')](_0x1543ef);}})[_0xc97d('0x2d')](function(_0x1495e4){if(_0x1495e4){_0x348c95=_0x1495e4[_0xc97d('0x48')];if(!_0x3a8259['query'][_0xc97d('0x4a')](_0xc97d('0x68'))){_0x1543ef['limit']=qs[_0xc97d('0x28')](_0x3a8259[_0xc97d('0x42')][_0xc97d('0x28')]);_0x1543ef[_0xc97d('0x25')]=qs[_0xc97d('0x25')](_0x3a8259[_0xc97d('0x42')]['offset']);}return _0x2b8df9['getBlackLists'](_0x1543ef);}})[_0xc97d('0x2d')](function(_0x5313b8){if(_0x5313b8){return _0x5313b8?{'count':_0x348c95,'rows':_0x5313b8}:null;}})[_0xc97d('0x2d')](respondWithResult(_0x5206f6,null))['catch'](handleError(_0x5206f6,null));};exports['addBlackLists']=function(_0x293be0,_0x582cef,_0x2cbebf){var _0x311598,_0x33726a;return db['VoiceQueue'][_0xc97d('0x38')]({'where':{'id':_0x293be0['params']['id']}})[_0xc97d('0x2d')](handleEntityNotFound(_0x582cef,null))[_0xc97d('0x2d')](function(_0x54a944){if(_0x54a944){_0x33726a=_0x54a944;return _0x54a944[_0xc97d('0xbc')](_0x293be0[_0xc97d('0x58')][_0xc97d('0x89')],_[_0xc97d('0x63')](_0x293be0[_0xc97d('0x58')],[_0xc97d('0x89'),'id'])||{});}return null;})['spread'](function(_0x5656b3){var _0x54bbc0;_0x311598=_0x5656b3||[];var _0x4f7d3f=[];if(_0x5656b3){for(var _0x257041=0x0;_0x257041<_0x5656b3[_0xc97d('0x48')];_0x257041+=0x1){var _0x449456=_0x5656b3[_0x257041][_0xc97d('0x5c')]({'plain':!![]});_0x54bbc0=squel[_0xc97d('0xa4')]()[_0xc97d('0xa5')]('cm_hopper_black')['fromQuery'](['phone',_0xc97d('0xaa'),_0xc97d('0xad'),'VoiceQueueId',_0xc97d('0x64'),_0xc97d('0x65')],squel[_0xc97d('0x8b')]()[_0xc97d('0xab')](_0xc97d('0xa8'),_0xc97d('0xa8'))[_0xc97d('0xab')]('id','ContactId')[_0xc97d('0xab')](_0x449456[_0xc97d('0xb2')][_0xc97d('0xb3')](),'ListId')['field'](_0x293be0[_0xc97d('0x56')]['id'][_0xc97d('0xb3')](),'VoiceQueueId')[_0xc97d('0xab')](_0xc97d('0xac'),_0xc97d('0x64'))['field'](_0xc97d('0xac'),'updatedAt')[_0xc97d('0xae')](_0xc97d('0xaf'))['where'](_0xc97d('0xb0'))[_0xc97d('0x4c')]('ListId\x20=\x20?',_0x449456['CmListId'][_0xc97d('0xb3')]())[_0xc97d('0x4c')](_0xc97d('0xb4')))[_0xc97d('0xb3')]();_0x4f7d3f[_0xc97d('0x92')](db[_0xc97d('0x7b')]['query'](_0x54bbc0));}return BPromise['all'](_0x4f7d3f);}})[_0xc97d('0x2d')](function(){return _0x311598;})['then'](respondWithResult(_0x582cef,null))[_0xc97d('0x54')](handleError(_0x582cef,null));};exports[_0xc97d('0xbd')]=function(_0x4a9044,_0x4c64e3,_0x5d75cc){return db[_0xc97d('0x3e')][_0xc97d('0x38')]({'where':{'id':_0x4a9044[_0xc97d('0x56')]['id']}})['then'](handleEntityNotFound(_0x4c64e3,null))['then'](function(_0x35beeb){if(_0x35beeb){return _0x35beeb[_0xc97d('0xbd')](_0x4a9044[_0xc97d('0x42')]['ids']);}})[_0xc97d('0x2d')](function(_0x2e6ea5){if(_0x2e6ea5){return db[_0xc97d('0x72')][_0xc97d('0x2e')]({'where':{'ListId':_0x4a9044[_0xc97d('0x42')][_0xc97d('0x89')],'VoiceQueueId':_0x4a9044[_0xc97d('0x56')]['id']}})[_0xc97d('0x2d')](function(){return _0x2e6ea5;});}})[_0xc97d('0x2d')](respondWithStatusCode(_0x4c64e3,null))[_0xc97d('0x54')](handleError(_0x4c64e3,null));};
\ No newline at end of file
+var _0x5f21=['all','union','compact','removeAgents','forEach','userVoiceQueue:remove','addAgents','userVoiceQueue:save','isEmpty','isNil','isArray','getAgents','getMembers','CmList','getLists','addLists','dialCheckDuplicateType','insert','cm_hopper','phone','scheduledAt','ContactId','ListId','field','NOW()','CmListId','deletedAt\x20IS\x20NULL','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','onlyIfOpen','fromQuery','COALESCE(phone,\x27\x27)','into','ListId\x20=\x20?','removeLists','getBlackLists','addBlackLists','spread','cm_hopper_black','cm_contacts','removeBlackLists','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./voiceQueue.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','update','then','destroy','QueueCampaigns','filter','ignore','map','value','includes','find','name','error','stack','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','VoiceQueue','includeAll','include','findAll','rows','catch','show','user','get','inbound','outbound','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','omit','createdAt','updatedAt','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','VoiceQueues','getHoppers','findOne','CmHopper','VoiceQueueId','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','Team','getTeams','addTeams','teams','Agents','online','voicePause','interface','flatMap','penalty','sequelize','transaction','each','TeamVoiceQueue','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','upsert','format','SIP/%s','emit','removeTeams','ids','User','select','tq.TeamId','from','team_has_voice_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','every'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5f21,0x1a1));var _0x15f2=function(_0x47f40b,_0x4c578e){_0x47f40b=_0x47f40b-0x0;var _0x39be6c=_0x5f21[_0x47f40b];return _0x39be6c;};'use strict';var emlformat=require(_0x15f2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x15f2('0x1'));var jsonpatch=require(_0x15f2('0x2'));var rp=require(_0x15f2('0x3'));var moment=require('moment');var BPromise=require(_0x15f2('0x4'));var Mustache=require(_0x15f2('0x5'));var util=require(_0x15f2('0x6'));var path=require('path');var sox=require(_0x15f2('0x7'));var csv=require('to-csv');var ejs=require(_0x15f2('0x8'));var fs=require('fs');var fs_extra=require(_0x15f2('0x9'));var _=require(_0x15f2('0xa'));var squel=require(_0x15f2('0xb'));var crypto=require(_0x15f2('0xc'));var jsforce=require(_0x15f2('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x15f2('0xe'));var querystring=require('querystring');var Papa=require(_0x15f2('0xf'));var Redis=require(_0x15f2('0x10'));var authService=require(_0x15f2('0x11'));var qs=require(_0x15f2('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x15f2('0x13'));var logger=require('../../config/logger')(_0x15f2('0x14'));var utils=require(_0x15f2('0x15'));var config=require(_0x15f2('0x16'));var licenseUtil=require(_0x15f2('0x17'));var db=require(_0x15f2('0x18'))['db'];config[_0x15f2('0x19')]=_[_0x15f2('0x1a')](config['redis'],{'host':_0x15f2('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x15f2('0x19')]));require(_0x15f2('0x1c'))[_0x15f2('0x1d')](socket);function respondWithStatusCode(_0x1a7f2b,_0x14ec53){_0x14ec53=_0x14ec53||0xcc;return function(_0x18e081){if(_0x18e081){return _0x1a7f2b[_0x15f2('0x1e')](_0x14ec53);}return _0x1a7f2b[_0x15f2('0x1f')](_0x14ec53)[_0x15f2('0x20')]();};}function respondWithResult(_0x51a052,_0x333ce6){_0x333ce6=_0x333ce6||0xc8;return function(_0x43ee2d){if(_0x43ee2d){return _0x51a052[_0x15f2('0x1f')](_0x333ce6)[_0x15f2('0x21')](_0x43ee2d);}};}function respondWithFilteredResult(_0x3eb567,_0x4b6e64){return function(_0x36dcbf){if(_0x36dcbf){var _0x2b22c8=typeof _0x4b6e64[_0x15f2('0x22')]===_0x15f2('0x23')&&typeof _0x4b6e64[_0x15f2('0x24')]===_0x15f2('0x23');var _0x3343e5=_0x36dcbf[_0x15f2('0x25')];var _0x33f3ea=_0x2b22c8?0x0:_0x4b6e64[_0x15f2('0x22')];var _0x1f5ac8=_0x2b22c8?_0x36dcbf[_0x15f2('0x25')]:_0x4b6e64[_0x15f2('0x22')]+_0x4b6e64[_0x15f2('0x24')];var _0x4f8489;if(_0x1f5ac8>=_0x3343e5){_0x1f5ac8=_0x3343e5;_0x4f8489=0xc8;}else{_0x4f8489=0xce;}_0x3eb567[_0x15f2('0x1f')](_0x4f8489);return _0x3eb567[_0x15f2('0x26')](_0x15f2('0x27'),_0x33f3ea+'-'+_0x1f5ac8+'/'+_0x3343e5)[_0x15f2('0x21')](_0x36dcbf);}return null;};}function patchUpdates(_0x59ad28){return function(_0x5b007e){try{jsonpatch[_0x15f2('0x28')](_0x5b007e,_0x59ad28,!![]);}catch(_0x467c84){return BPromise['reject'](_0x467c84);}return _0x5b007e['save']();};}function saveUpdates(_0x3cb5e7,_0x1a1fe5){return function(_0x474b4e){if(_0x474b4e){return _0x474b4e[_0x15f2('0x29')](_0x3cb5e7)[_0x15f2('0x2a')](function(_0x3f5d65){return _0x3f5d65;});}return null;};}function removeEntity(_0x2cf62f,_0x3bd18e){return function(_0x3572a5){if(_0x3572a5){return _0x3572a5[_0x15f2('0x2b')]()['then'](function(){var _0x4fc3a6=_0x3572a5['get']({'plain':!![]});var _0x17967b=[{'name':'VoiceQueues','value':'inbound','ignore':![]},{'name':_0x15f2('0x2c'),'value':'outbound','ignore':![]}];var _0x2a2c1e=_(_0x17967b)[_0x15f2('0x2d')](_0x15f2('0x2e'))[_0x15f2('0x2f')](_0x15f2('0x30'))[_0x15f2('0x30')]();if(_[_0x15f2('0x31')](_0x2a2c1e,_0x4fc3a6['type'])){return;}var _0x245933=_[_0x15f2('0x32')](_0x17967b,[_0x15f2('0x30'),_0x4fc3a6['type']])[_0x15f2('0x33')];return db['UserProfileResource'][_0x15f2('0x2b')]({'where':{'type':_0x245933,'resourceId':_0x4fc3a6['id']}})[_0x15f2('0x2a')](function(){return _0x3572a5;});})[_0x15f2('0x2a')](function(){_0x2cf62f[_0x15f2('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x316b0e,_0x37c230){return function(_0x6324b5){if(!_0x6324b5){_0x316b0e[_0x15f2('0x1e')](0x194);}return _0x6324b5;};}function handleError(_0x57becd,_0x4b11d5){_0x4b11d5=_0x4b11d5||0x1f4;return function(_0x5d0061){logger[_0x15f2('0x34')](_0x5d0061[_0x15f2('0x35')]);if(_0x5d0061[_0x15f2('0x33')]){delete _0x5d0061[_0x15f2('0x33')];}_0x57becd['status'](_0x4b11d5)['send'](_0x5d0061);};}exports['index']=function(_0x24647f,_0x56e88b){var _0x367c4b={},_0x1c6d24={},_0x40f965={'count':0x0,'rows':[]};var _0x57c0d0=_[_0x15f2('0x2f')](db['VoiceQueue'][_0x15f2('0x36')],function(_0x317230){return{'name':_0x317230[_0x15f2('0x37')],'type':_0x317230[_0x15f2('0x38')][_0x15f2('0x39')]};});_0x1c6d24[_0x15f2('0x3a')]=_['map'](_0x57c0d0,_0x15f2('0x33'));_0x1c6d24['query']=_[_0x15f2('0x3b')](_0x24647f[_0x15f2('0x3c')]);_0x1c6d24[_0x15f2('0x3d')]=_[_0x15f2('0x3e')](_0x1c6d24[_0x15f2('0x3a')],_0x1c6d24['query']);_0x367c4b['attributes']=_['intersection'](_0x1c6d24[_0x15f2('0x3a')],qs[_0x15f2('0x3f')](_0x24647f[_0x15f2('0x3c')]['fields']));_0x367c4b['attributes']=_0x367c4b[_0x15f2('0x40')][_0x15f2('0x41')]?_0x367c4b[_0x15f2('0x40')]:_0x1c6d24[_0x15f2('0x3a')];if(!_0x24647f['query'][_0x15f2('0x42')](_0x15f2('0x43'))){_0x367c4b[_0x15f2('0x24')]=qs[_0x15f2('0x24')](_0x24647f['query'][_0x15f2('0x24')]);_0x367c4b[_0x15f2('0x22')]=qs[_0x15f2('0x22')](_0x24647f[_0x15f2('0x3c')][_0x15f2('0x22')]);}_0x367c4b[_0x15f2('0x44')]=qs['sort'](_0x24647f['query'][_0x15f2('0x45')]);_0x367c4b[_0x15f2('0x46')]=qs['filters'](_[_0x15f2('0x47')](_0x24647f[_0x15f2('0x3c')],_0x1c6d24[_0x15f2('0x3d')]),_0x57c0d0);if(_0x24647f[_0x15f2('0x3c')][_0x15f2('0x2d')]){_0x367c4b[_0x15f2('0x46')]=_[_0x15f2('0x48')](_0x367c4b[_0x15f2('0x46')],{'$or':_[_0x15f2('0x2f')](_0x57c0d0,function(_0x3da040){if(_0x3da040[_0x15f2('0x38')]!==_0x15f2('0x49')){var _0x537faa={};_0x537faa[_0x3da040[_0x15f2('0x33')]]={'$like':'%'+_0x24647f[_0x15f2('0x3c')][_0x15f2('0x2d')]+'%'};return _0x537faa;}})});}_0x367c4b=_[_0x15f2('0x48')]({},_0x367c4b,_0x24647f[_0x15f2('0x4a')]);var _0x569c7e={'where':_0x367c4b['where']};return db[_0x15f2('0x4b')][_0x15f2('0x25')](_0x569c7e)[_0x15f2('0x2a')](function(_0x3acd58){_0x40f965[_0x15f2('0x25')]=_0x3acd58;if(_0x24647f[_0x15f2('0x3c')][_0x15f2('0x4c')]){_0x367c4b[_0x15f2('0x4d')]=[{'all':!![]}];}return db['VoiceQueue'][_0x15f2('0x4e')](_0x367c4b);})[_0x15f2('0x2a')](function(_0x57f3ef){_0x40f965[_0x15f2('0x4f')]=_0x57f3ef;return _0x40f965;})[_0x15f2('0x2a')](respondWithFilteredResult(_0x56e88b,_0x367c4b))[_0x15f2('0x50')](handleError(_0x56e88b,null));};exports[_0x15f2('0x51')]=function(_0x425eef,_0x3350a4){var _0x18b7a0={'raw':![],'where':{'id':_0x425eef['params']['id']}},_0x320f3f={};_0x320f3f[_0x15f2('0x3a')]=_['keys'](db[_0x15f2('0x4b')][_0x15f2('0x36')]);_0x320f3f['query']=_[_0x15f2('0x3b')](_0x425eef[_0x15f2('0x3c')]);_0x320f3f[_0x15f2('0x3d')]=_[_0x15f2('0x3e')](_0x320f3f[_0x15f2('0x3a')],_0x320f3f[_0x15f2('0x3c')]);_0x18b7a0[_0x15f2('0x40')]=_[_0x15f2('0x3e')](_0x320f3f[_0x15f2('0x3a')],qs[_0x15f2('0x3f')](_0x425eef[_0x15f2('0x3c')]['fields']));_0x18b7a0[_0x15f2('0x40')]=_0x18b7a0[_0x15f2('0x40')][_0x15f2('0x41')]?_0x18b7a0[_0x15f2('0x40')]:_0x320f3f[_0x15f2('0x3a')];if(_0x425eef[_0x15f2('0x3c')][_0x15f2('0x4c')]){_0x18b7a0[_0x15f2('0x4d')]=[{'all':!![]}];}_0x18b7a0=_['merge']({},_0x18b7a0,_0x425eef[_0x15f2('0x4a')]);return db[_0x15f2('0x4b')][_0x15f2('0x32')](_0x18b7a0)[_0x15f2('0x2a')](handleEntityNotFound(_0x3350a4,null))[_0x15f2('0x2a')](respondWithResult(_0x3350a4,null))[_0x15f2('0x50')](handleError(_0x3350a4,null));};exports['create']=function(_0x423380,_0x5545dd){return db[_0x15f2('0x4b')]['create'](_0x423380['body'],{})[_0x15f2('0x2a')](function(_0x4d4b52){var _0x2c39dc=_0x423380[_0x15f2('0x52')][_0x15f2('0x53')]({'plain':!![]});if(!_0x2c39dc)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2c39dc['role']==='user'){var _0x325f60=_0x4d4b52['get']({'plain':!![]});var _0x11fab9=[{'name':'VoiceQueues','value':_0x15f2('0x54')},{'name':_0x15f2('0x2c'),'value':_0x15f2('0x55')}];var _0x3e53ff=_[_0x15f2('0x32')](_0x11fab9,[_0x15f2('0x30'),_0x325f60[_0x15f2('0x38')]])[_0x15f2('0x33')];return db[_0x15f2('0x56')][_0x15f2('0x32')]({'where':{'name':_0x3e53ff,'userProfileId':_0x2c39dc[_0x15f2('0x57')]},'raw':!![]})[_0x15f2('0x2a')](function(_0x147fb9){if(_0x147fb9&&_0x147fb9[_0x15f2('0x58')]===0x0){return db[_0x15f2('0x59')][_0x15f2('0x5a')]({'name':_0x325f60[_0x15f2('0x33')],'resourceId':_0x325f60['id'],'type':_0x147fb9['name'],'sectionId':_0x147fb9['id']},{})[_0x15f2('0x2a')](function(){return _0x4d4b52;});}else{return _0x4d4b52;}})['catch'](function(_0x5ee764){logger['error'](_0x15f2('0x5b'),_0x5ee764);throw _0x5ee764;});}return _0x4d4b52;})[_0x15f2('0x2a')](respondWithResult(_0x5545dd,0xc9))[_0x15f2('0x50')](handleError(_0x5545dd,null));};exports[_0x15f2('0x5c')]=function(_0x3328fa,_0x60edf4){var _0x2b4095={'where':{'id':_0x3328fa[_0x15f2('0x5d')]['id']}},_0x4773f4={};_0x4773f4[_0x15f2('0x3a')]=_['keys'](db[_0x15f2('0x4b')]['rawAttributes']);_0x2b4095[_0x15f2('0x40')]=_['intersection'](_0x4773f4['model'],qs[_0x15f2('0x3f')](_0x3328fa['query'][_0x15f2('0x3f')]));_0x2b4095['attributes']=_0x2b4095['attributes'][_0x15f2('0x41')]?_0x2b4095[_0x15f2('0x40')]:_0x4773f4['model'];if(_0x3328fa[_0x15f2('0x3c')]['includeAll']){_0x2b4095[_0x15f2('0x4d')]=[{'all':!![]}];}_0x2b4095=_[_0x15f2('0x48')]({},_0x2b4095,_0x3328fa[_0x15f2('0x4a')]);return db[_0x15f2('0x4b')]['find'](_0x2b4095)[_0x15f2('0x2a')](handleEntityNotFound(_0x60edf4,null))[_0x15f2('0x2a')](function(_0x1f768e){if(_0x1f768e){var _0x49855a=_0x1f768e[_0x15f2('0x53')]({'plain':!![]});_0x49855a=qs[_0x15f2('0x5e')](_0x49855a,['id',_0x15f2('0x5f'),_0x15f2('0x60')]);_0x3328fa[_0x15f2('0x61')]=_[_0x15f2('0x5e')](_0x3328fa[_0x15f2('0x61')],['id',_0x15f2('0x5f'),_0x15f2('0x60')]);return db['VoiceQueue']['create'](_[_0x15f2('0x48')](_0x49855a,_0x3328fa[_0x15f2('0x61')]),{'include':_0x3328fa[_0x15f2('0x3c')]['includeAll']?[{'all':!![]}]:undefined})[_0x15f2('0x2a')](function(_0x44ecc7){var _0xb8e1d7=_0x3328fa[_0x15f2('0x52')][_0x15f2('0x53')]({'plain':!![]});if(!_0xb8e1d7)throw new Error(_0x15f2('0x62'));if(_0xb8e1d7[_0x15f2('0x63')]===_0x15f2('0x52')){var _0x8fde1c=_0x44ecc7[_0x15f2('0x53')]({'plain':!![]});var _0x17a181=[{'name':_0x15f2('0x64'),'value':_0x15f2('0x54')},{'name':_0x15f2('0x2c'),'value':_0x15f2('0x55')}];var _0x25b0d=_[_0x15f2('0x32')](_0x17a181,['value',_0x8fde1c['type']])[_0x15f2('0x33')];return db[_0x15f2('0x56')][_0x15f2('0x32')]({'where':{'name':_0x25b0d,'userProfileId':_0xb8e1d7['userProfileId']},'raw':!![]})[_0x15f2('0x2a')](function(_0x47b0ea){if(_0x47b0ea&&_0x47b0ea['autoAssociation']===0x0){return db[_0x15f2('0x59')]['create']({'name':_0x8fde1c[_0x15f2('0x33')],'resourceId':_0x8fde1c['id'],'type':_0x47b0ea[_0x15f2('0x33')],'sectionId':_0x47b0ea['id']},{})[_0x15f2('0x2a')](function(){return _0x44ecc7;});}else{return _0x44ecc7;}})[_0x15f2('0x50')](function(_0x2c1145){logger['error'](_0x15f2('0x5b'),_0x2c1145);throw _0x2c1145;});}return _0x44ecc7;});}})[_0x15f2('0x2a')](respondWithResult(_0x60edf4,0xc9))[_0x15f2('0x50')](handleError(_0x60edf4,null));};exports[_0x15f2('0x29')]=function(_0x54a844,_0x1556ba){if(_0x54a844[_0x15f2('0x61')]['id']){delete _0x54a844[_0x15f2('0x61')]['id'];}return db[_0x15f2('0x4b')][_0x15f2('0x32')]({'where':{'id':_0x54a844['params']['id']}})[_0x15f2('0x2a')](handleEntityNotFound(_0x1556ba,null))[_0x15f2('0x2a')](saveUpdates(_0x54a844[_0x15f2('0x61')],null))[_0x15f2('0x2a')](respondWithResult(_0x1556ba,null))[_0x15f2('0x50')](handleError(_0x1556ba,null));};exports[_0x15f2('0x2b')]=function(_0x76af81,_0x11d54d){return db['VoiceQueue'][_0x15f2('0x32')]({'where':{'id':_0x76af81[_0x15f2('0x5d')]['id']}})['then'](handleEntityNotFound(_0x11d54d,null))[_0x15f2('0x2a')](removeEntity(_0x11d54d,null))[_0x15f2('0x50')](handleError(_0x11d54d,null));};exports[_0x15f2('0x65')]=function(_0x400a53,_0xe46284,_0xe5a5be){var _0x2d354e={'raw':![],'where':{}};var _0x41a5fb={};var _0x20f0d7={'count':0x0,'rows':[]};return db[_0x15f2('0x4b')][_0x15f2('0x66')]({'where':{'id':_0x400a53[_0x15f2('0x5d')]['id']}})[_0x15f2('0x2a')](handleEntityNotFound(_0xe46284,null))[_0x15f2('0x2a')](function(_0x11e1e6){if(_0x11e1e6){_0x41a5fb[_0x15f2('0x3a')]=_['keys'](db[_0x15f2('0x67')][_0x15f2('0x36')]);_0x41a5fb[_0x15f2('0x3c')]=_[_0x15f2('0x3b')](_0x400a53[_0x15f2('0x3c')]);_0x41a5fb[_0x15f2('0x3d')]=_['intersection'](_0x41a5fb[_0x15f2('0x3a')],_0x41a5fb[_0x15f2('0x3c')]);_0x2d354e['attributes']=_[_0x15f2('0x3e')](_0x41a5fb['model'],qs['fields'](_0x400a53[_0x15f2('0x3c')]['fields']));_0x2d354e['attributes']=_0x2d354e[_0x15f2('0x40')][_0x15f2('0x41')]?_0x2d354e['attributes']:_0x41a5fb[_0x15f2('0x3a')];if(!_0x400a53[_0x15f2('0x3c')]['hasOwnProperty']('nolimit')){_0x2d354e['limit']=qs[_0x15f2('0x24')](_0x400a53[_0x15f2('0x3c')][_0x15f2('0x24')]);_0x2d354e[_0x15f2('0x22')]=qs[_0x15f2('0x22')](_0x400a53[_0x15f2('0x3c')][_0x15f2('0x22')]);}_0x2d354e[_0x15f2('0x44')]=qs['sort'](_0x400a53[_0x15f2('0x3c')][_0x15f2('0x45')]);_0x2d354e[_0x15f2('0x46')]=qs[_0x15f2('0x3d')](_[_0x15f2('0x47')](_0x400a53['query'],_0x41a5fb[_0x15f2('0x3d')]));_0x2d354e[_0x15f2('0x46')][_0x15f2('0x68')]=_0x11e1e6['id'];if(_0x400a53['query'][_0x15f2('0x2d')]){_0x2d354e['where']=_[_0x15f2('0x48')](_0x2d354e[_0x15f2('0x46')],{'$or':_[_0x15f2('0x2f')](_0x2d354e['attributes'],function(_0x36336c){var _0x4067d0={};_0x4067d0[_0x36336c]={'$like':'%'+_0x400a53[_0x15f2('0x3c')]['filter']+'%'};return _0x4067d0;})});}_0x2d354e=_[_0x15f2('0x48')]({},_0x2d354e,_0x400a53[_0x15f2('0x4a')]);return db[_0x15f2('0x67')][_0x15f2('0x25')]({'where':_0x2d354e[_0x15f2('0x46')]})['then'](function(_0x3bf4d9){_0x20f0d7[_0x15f2('0x25')]=_0x3bf4d9;if(_0x400a53[_0x15f2('0x3c')][_0x15f2('0x4c')]){_0x2d354e[_0x15f2('0x4d')]=[{'all':!![]}];}return db[_0x15f2('0x67')][_0x15f2('0x4e')](_0x2d354e);})[_0x15f2('0x2a')](function(_0x37854e){_0x20f0d7[_0x15f2('0x4f')]=_0x37854e;return _0x20f0d7;});}})[_0x15f2('0x2a')](respondWithFilteredResult(_0xe46284,_0x2d354e))['catch'](handleError(_0xe46284,null));};exports[_0x15f2('0x69')]=function(_0x4e21bf,_0x1d1d93,_0x5a846e){var _0x1fea1c={'raw':!![],'where':{}};var _0x1701a9={};var _0x27a015={'count':0x0,'rows':[]};return db[_0x15f2('0x4b')][_0x15f2('0x66')]({'where':{'id':_0x4e21bf['params']['id']}})[_0x15f2('0x2a')](handleEntityNotFound(_0x1d1d93,null))[_0x15f2('0x2a')](function(_0xc05a9){if(_0xc05a9){_0x1701a9[_0x15f2('0x3a')]=_[_0x15f2('0x3b')](db[_0x15f2('0x6a')][_0x15f2('0x36')]);_0x1701a9[_0x15f2('0x3c')]=_[_0x15f2('0x3b')](_0x4e21bf[_0x15f2('0x3c')]);_0x1701a9[_0x15f2('0x3d')]=_[_0x15f2('0x3e')](_0x1701a9[_0x15f2('0x3a')],_0x1701a9[_0x15f2('0x3c')]);_0x1fea1c[_0x15f2('0x40')]=_[_0x15f2('0x3e')](_0x1701a9[_0x15f2('0x3a')],qs[_0x15f2('0x3f')](_0x4e21bf[_0x15f2('0x3c')][_0x15f2('0x3f')]));_0x1fea1c[_0x15f2('0x40')]=_0x1fea1c[_0x15f2('0x40')]['length']?_0x1fea1c[_0x15f2('0x40')]:_0x1701a9['model'];if(!_0x4e21bf[_0x15f2('0x3c')][_0x15f2('0x42')]('nolimit')){_0x1fea1c['limit']=qs[_0x15f2('0x24')](_0x4e21bf[_0x15f2('0x3c')][_0x15f2('0x24')]);_0x1fea1c[_0x15f2('0x22')]=qs[_0x15f2('0x22')](_0x4e21bf['query']['offset']);}_0x1fea1c[_0x15f2('0x44')]=qs[_0x15f2('0x45')](_0x4e21bf[_0x15f2('0x3c')][_0x15f2('0x45')]);_0x1fea1c['where']=qs['filters'](_['pick'](_0x4e21bf[_0x15f2('0x3c')],_0x1701a9['filters']));_0x1fea1c[_0x15f2('0x46')][_0x15f2('0x68')]=_0xc05a9['id'];if(_0x4e21bf['query'][_0x15f2('0x2d')]){_0x1fea1c[_0x15f2('0x46')]=_[_0x15f2('0x48')](_0x1fea1c[_0x15f2('0x46')],{'$or':_['map'](_0x1fea1c['attributes'],function(_0x51663b){var _0x40d822={};_0x40d822[_0x51663b]={'$like':'%'+_0x4e21bf[_0x15f2('0x3c')]['filter']+'%'};return _0x40d822;})});}_0x1fea1c=_[_0x15f2('0x48')]({},_0x1fea1c,_0x4e21bf[_0x15f2('0x4a')]);return db[_0x15f2('0x6a')][_0x15f2('0x25')]({'where':_0x1fea1c['where']})['then'](function(_0x595f7a){_0x27a015[_0x15f2('0x25')]=_0x595f7a;if(_0x4e21bf[_0x15f2('0x3c')][_0x15f2('0x4c')]){_0x1fea1c['include']=[{'all':!![]}];}return db[_0x15f2('0x6a')][_0x15f2('0x4e')](_0x1fea1c);})[_0x15f2('0x2a')](function(_0x39db02){_0x27a015[_0x15f2('0x4f')]=_0x39db02;return _0x27a015;});}})['then'](respondWithFilteredResult(_0x1d1d93,_0x1fea1c))[_0x15f2('0x50')](handleError(_0x1d1d93,null));};exports[_0x15f2('0x6b')]=function(_0x5f44b3,_0x40b8c5,_0x13273a){var _0x546de1={'raw':!![],'where':{}};var _0x8dae2d={};var _0xb8970e={'count':0x0,'rows':[]};return db['VoiceQueue'][_0x15f2('0x66')]({'where':{'id':_0x5f44b3['params']['id']}})['then'](handleEntityNotFound(_0x40b8c5,null))['then'](function(_0x17fe86){if(_0x17fe86){_0x8dae2d[_0x15f2('0x3a')]=_[_0x15f2('0x3b')](db[_0x15f2('0x6c')][_0x15f2('0x36')]);_0x8dae2d[_0x15f2('0x3c')]=_[_0x15f2('0x3b')](_0x5f44b3[_0x15f2('0x3c')]);_0x8dae2d[_0x15f2('0x3d')]=_['intersection'](_0x8dae2d['model'],_0x8dae2d[_0x15f2('0x3c')]);_0x546de1[_0x15f2('0x40')]=_[_0x15f2('0x3e')](_0x8dae2d[_0x15f2('0x3a')],qs[_0x15f2('0x3f')](_0x5f44b3[_0x15f2('0x3c')][_0x15f2('0x3f')]));_0x546de1[_0x15f2('0x40')]=_0x546de1[_0x15f2('0x40')]['length']?_0x546de1[_0x15f2('0x40')]:_0x8dae2d[_0x15f2('0x3a')];if(!_0x5f44b3[_0x15f2('0x3c')][_0x15f2('0x42')]('nolimit')){_0x546de1[_0x15f2('0x24')]=qs[_0x15f2('0x24')](_0x5f44b3[_0x15f2('0x3c')][_0x15f2('0x24')]);_0x546de1[_0x15f2('0x22')]=qs[_0x15f2('0x22')](_0x5f44b3['query'][_0x15f2('0x22')]);}_0x546de1['order']=qs[_0x15f2('0x45')](_0x5f44b3[_0x15f2('0x3c')][_0x15f2('0x45')]);_0x546de1['where']=qs[_0x15f2('0x3d')](_[_0x15f2('0x47')](_0x5f44b3[_0x15f2('0x3c')],_0x8dae2d[_0x15f2('0x3d')]));_0x546de1[_0x15f2('0x46')][_0x15f2('0x68')]=_0x17fe86['id'];if(_0x5f44b3['query']['filter']){_0x546de1[_0x15f2('0x46')]=_['merge'](_0x546de1['where'],{'$or':_[_0x15f2('0x2f')](_0x546de1['attributes'],function(_0xe8efb6){var _0x45822f={};_0x45822f[_0xe8efb6]={'$like':'%'+_0x5f44b3[_0x15f2('0x3c')][_0x15f2('0x2d')]+'%'};return _0x45822f;})});}_0x546de1=_[_0x15f2('0x48')]({},_0x546de1,_0x5f44b3[_0x15f2('0x4a')]);return db[_0x15f2('0x6c')][_0x15f2('0x25')]({'where':_0x546de1[_0x15f2('0x46')]})[_0x15f2('0x2a')](function(_0x37b9ec){_0xb8970e[_0x15f2('0x25')]=_0x37b9ec;if(_0x5f44b3[_0x15f2('0x3c')]['includeAll']){_0x546de1['include']=[{'all':!![]}];}return db['CmHopperFinal'][_0x15f2('0x4e')](_0x546de1);})[_0x15f2('0x2a')](function(_0x4d4adc){_0xb8970e[_0x15f2('0x4f')]=_0x4d4adc;return _0xb8970e;});}})[_0x15f2('0x2a')](respondWithFilteredResult(_0x40b8c5,_0x546de1))[_0x15f2('0x50')](handleError(_0x40b8c5,null));};exports[_0x15f2('0x6d')]=function(_0x3fcbc2,_0x3b43ec,_0x23d63d){var _0x107f11={'raw':!![],'where':{}};var _0x30510a={};var _0x29dc89={'count':0x0,'rows':[]};return db[_0x15f2('0x4b')][_0x15f2('0x66')]({'where':{'id':_0x3fcbc2[_0x15f2('0x5d')]['id']}})[_0x15f2('0x2a')](handleEntityNotFound(_0x3b43ec,null))[_0x15f2('0x2a')](function(_0x2d4054){if(_0x2d4054){_0x30510a[_0x15f2('0x3a')]=_['keys'](db['CmHopperBlack']['rawAttributes']);_0x30510a[_0x15f2('0x3c')]=_[_0x15f2('0x3b')](_0x3fcbc2['query']);_0x30510a[_0x15f2('0x3d')]=_[_0x15f2('0x3e')](_0x30510a[_0x15f2('0x3a')],_0x30510a['query']);_0x107f11[_0x15f2('0x40')]=_[_0x15f2('0x3e')](_0x30510a[_0x15f2('0x3a')],qs[_0x15f2('0x3f')](_0x3fcbc2[_0x15f2('0x3c')][_0x15f2('0x3f')]));_0x107f11[_0x15f2('0x40')]=_0x107f11[_0x15f2('0x40')][_0x15f2('0x41')]?_0x107f11[_0x15f2('0x40')]:_0x30510a[_0x15f2('0x3a')];if(!_0x3fcbc2[_0x15f2('0x3c')]['hasOwnProperty'](_0x15f2('0x43'))){_0x107f11[_0x15f2('0x24')]=qs[_0x15f2('0x24')](_0x3fcbc2['query'][_0x15f2('0x24')]);_0x107f11[_0x15f2('0x22')]=qs['offset'](_0x3fcbc2['query'][_0x15f2('0x22')]);}_0x107f11[_0x15f2('0x44')]=qs[_0x15f2('0x45')](_0x3fcbc2[_0x15f2('0x3c')][_0x15f2('0x45')]);_0x107f11['where']=qs[_0x15f2('0x3d')](_[_0x15f2('0x47')](_0x3fcbc2['query'],_0x30510a[_0x15f2('0x3d')]));_0x107f11[_0x15f2('0x46')][_0x15f2('0x68')]=_0x2d4054['id'];if(_0x3fcbc2[_0x15f2('0x3c')][_0x15f2('0x2d')]){_0x107f11['where']=_[_0x15f2('0x48')](_0x107f11['where'],{'$or':_['map'](_0x107f11['attributes'],function(_0x4b9112){var _0x29d848={};_0x29d848[_0x4b9112]={'$like':'%'+_0x3fcbc2[_0x15f2('0x3c')][_0x15f2('0x2d')]+'%'};return _0x29d848;})});}_0x107f11=_[_0x15f2('0x48')]({},_0x107f11,_0x3fcbc2[_0x15f2('0x4a')]);return db[_0x15f2('0x6e')]['count']({'where':_0x107f11[_0x15f2('0x46')]})[_0x15f2('0x2a')](function(_0x3b1a55){_0x29dc89[_0x15f2('0x25')]=_0x3b1a55;if(_0x3fcbc2['query']['includeAll']){_0x107f11[_0x15f2('0x4d')]=[{'all':!![]}];}return db[_0x15f2('0x6e')][_0x15f2('0x4e')](_0x107f11);})[_0x15f2('0x2a')](function(_0x2b127a){_0x29dc89[_0x15f2('0x4f')]=_0x2b127a;return _0x29dc89;});}})[_0x15f2('0x2a')](respondWithFilteredResult(_0x3b43ec,_0x107f11))[_0x15f2('0x50')](handleError(_0x3b43ec,null));};exports['getTeams']=function(_0x5ecbc0,_0x2f02ec,_0x4813c0){var _0x2f38e9={};var _0x5e706f={};var _0x51ce7a;var _0x7a08d8;return db[_0x15f2('0x4b')]['findOne']({'where':{'id':_0x5ecbc0[_0x15f2('0x5d')]['id']}})[_0x15f2('0x2a')](handleEntityNotFound(_0x2f02ec,null))[_0x15f2('0x2a')](function(_0x1c5c26){if(_0x1c5c26){_0x51ce7a=_0x1c5c26;_0x5e706f[_0x15f2('0x3a')]=_['keys'](db[_0x15f2('0x6f')]['rawAttributes']);_0x5e706f[_0x15f2('0x3c')]=_['keys'](_0x5ecbc0[_0x15f2('0x3c')]);_0x5e706f['filters']=_[_0x15f2('0x3e')](_0x5e706f[_0x15f2('0x3a')],_0x5e706f['query']);_0x2f38e9['attributes']=_['intersection'](_0x5e706f[_0x15f2('0x3a')],qs[_0x15f2('0x3f')](_0x5ecbc0[_0x15f2('0x3c')][_0x15f2('0x3f')]));_0x2f38e9['attributes']=_0x2f38e9[_0x15f2('0x40')][_0x15f2('0x41')]?_0x2f38e9[_0x15f2('0x40')]:_0x5e706f[_0x15f2('0x3a')];_0x2f38e9[_0x15f2('0x44')]=qs[_0x15f2('0x45')](_0x5ecbc0['query'][_0x15f2('0x45')]);_0x2f38e9[_0x15f2('0x46')]=qs[_0x15f2('0x3d')](_[_0x15f2('0x47')](_0x5ecbc0[_0x15f2('0x3c')],_0x5e706f['filters']));if(_0x5ecbc0['query'][_0x15f2('0x2d')]){_0x2f38e9[_0x15f2('0x46')]=_[_0x15f2('0x48')](_0x2f38e9[_0x15f2('0x46')],{'$or':_[_0x15f2('0x2f')](_0x2f38e9[_0x15f2('0x40')],function(_0x3dc903){var _0x2fdae3={};_0x2fdae3[_0x3dc903]={'$like':'%'+_0x5ecbc0[_0x15f2('0x3c')][_0x15f2('0x2d')]+'%'};return _0x2fdae3;})});}_0x2f38e9=_[_0x15f2('0x48')]({},_0x2f38e9,_0x5ecbc0[_0x15f2('0x4a')]);return _0x51ce7a[_0x15f2('0x70')](_0x2f38e9);}})[_0x15f2('0x2a')](function(_0x4b3f34){if(_0x4b3f34){_0x7a08d8=_0x4b3f34[_0x15f2('0x41')];if(!_0x5ecbc0[_0x15f2('0x3c')][_0x15f2('0x42')](_0x15f2('0x43'))){_0x2f38e9['limit']=qs['limit'](_0x5ecbc0['query'][_0x15f2('0x24')]);_0x2f38e9['offset']=qs[_0x15f2('0x22')](_0x5ecbc0['query'][_0x15f2('0x22')]);}return _0x51ce7a['getTeams'](_0x2f38e9);}})[_0x15f2('0x2a')](function(_0x244663){if(_0x244663){return _0x244663?{'count':_0x7a08d8,'rows':_0x244663}:null;}})['then'](respondWithResult(_0x2f02ec,null))[_0x15f2('0x50')](handleError(_0x2f02ec,null));};exports[_0x15f2('0x71')]=function(_0x42c3c7,_0x5da7bb,_0x2ad4e4){var _0x3a52ea=_0x42c3c7[_0x15f2('0x61')][_0x15f2('0x72')];var _0x398f07=_[_0x15f2('0x2f')](_0x3a52ea,'id');return db[_0x15f2('0x6f')][_0x15f2('0x4e')]({'where':{'id':_0x398f07},'attributes':['id'],'include':[{'model':db['User'],'as':_0x15f2('0x73'),'attributes':['id',_0x15f2('0x33'),_0x15f2('0x74'),_0x15f2('0x75'),_0x15f2('0x76')],'raw':!![]}]})[_0x15f2('0x2a')](function(_0x4a2172){if(_0x4a2172){var _0x2e2a9a=_[_0x15f2('0x77')](_0x4a2172,function(_0x3ab3dc){var _0x340683=_0x3ab3dc[_0x15f2('0x53')]({'plain':!![]});_0x340683[_0x15f2('0x73')]['forEach'](function(_0x4c6ab1){_0x4c6ab1[_0x15f2('0x78')]=_['find'](_0x3a52ea,{'id':_0x340683['id']})[_0x15f2('0x78')];});return _0x340683[_0x15f2('0x73')];});return db[_0x15f2('0x4b')]['find']({'where':{'id':_0x42c3c7[_0x15f2('0x5d')]['id']}})[_0x15f2('0x2a')](function(_0xfa4bee){return db[_0x15f2('0x79')][_0x15f2('0x7a')](function(_0x521b53){return _0xfa4bee[_0x15f2('0x71')](_0x398f07,{'transaction':_0x521b53})[_0x15f2('0x2a')](function(){return BPromise[_0x15f2('0x7b')](_0x3a52ea,function(_0x3bf1e3){return db[_0x15f2('0x7c')]['upsert']({'TeamId':_0x3bf1e3['id'],'VoiceQueueId':_0x42c3c7[_0x15f2('0x5d')]['id'],'penalty':_0x3bf1e3[_0x15f2('0x78')]},{'transaction':_0x521b53});});})['then'](function(){return BPromise[_0x15f2('0x7b')](_0x2e2a9a,function(_0x57a919){return db[_0x15f2('0x7d')][_0x15f2('0x7e')]({'where':{'UserId':_0x57a919['id'],'VoiceQueueId':_0x42c3c7[_0x15f2('0x5d')]['id']},'defaults':{'penalty':_0x57a919[_0x15f2('0x78')]},'transaction':_0x521b53});});})[_0x15f2('0x2a')](function(){return BPromise[_0x15f2('0x7b')](_[_0x15f2('0x2d')](_0x2e2a9a,{'online':!![]}),function(_0x49df6a){return db[_0x15f2('0x7f')][_0x15f2('0x80')]({'membername':_0x49df6a[_0x15f2('0x33')],'UserId':_0x49df6a['id'],'queue_name':_0xfa4bee[_0x15f2('0x33')],'VoiceQueueId':_0xfa4bee['id'],'interface':_['isNil'](_0x49df6a[_0x15f2('0x76')])?util[_0x15f2('0x81')](_0x15f2('0x82'),_0x49df6a[_0x15f2('0x33')]):_0x49df6a[_0x15f2('0x76')],'paused':_0x49df6a[_0x15f2('0x75')]||![],'penalty':_0x49df6a[_0x15f2('0x78')]},{'transaction':_0x521b53});});})[_0x15f2('0x2a')](function(){_0x2e2a9a['forEach'](function(_0x39a21b){socket[_0x15f2('0x83')]('userVoiceQueue:save',{'UserId':_0x39a21b['id'],'VoiceQueueId':_0xfa4bee['id']});});});});});}})['then'](respondWithStatusCode(_0x5da7bb,null))['catch'](handleError(_0x5da7bb,null));};exports[_0x15f2('0x84')]=function(_0x1652fd,_0x461f0e,_0x3234f2){return db[_0x15f2('0x6f')]['findAll']({'where':{'id':_0x1652fd[_0x15f2('0x3c')][_0x15f2('0x85')]},'attributes':['id'],'include':[{'model':db[_0x15f2('0x86')],'as':_0x15f2('0x73'),'attributes':['id'],'raw':!![]}]})[_0x15f2('0x2a')](handleEntityNotFound(_0x461f0e,null))[_0x15f2('0x2a')](function(_0x18c603){var _0x347ddd=_[_0x15f2('0x2f')](_0x18c603,'id');var _0x4f4507=[];var _0x541118=[];var _0x16c2cc=squel[_0x15f2('0x87')]();_0x16c2cc['field'](_0x15f2('0x88'))[_0x15f2('0x89')](_0x15f2('0x8a'),'tq')['join'](_0x15f2('0x8b'),'ut',_0x15f2('0x8c'))[_0x15f2('0x46')](_0x15f2('0x8d'),_0x1652fd['params']['id']);for(var _0x519f56=0x0;_0x519f56<_0x18c603['length'];_0x519f56+=0x1){let _0x58f271=_0x18c603[_0x519f56];for(var _0x3b349a=0x0;_0x3b349a<_0x58f271[_0x15f2('0x73')][_0x15f2('0x41')];_0x3b349a+=0x1){let _0x245b17=_0x58f271[_0x15f2('0x73')][_0x3b349a];var _0x4d28a1=_0x16c2cc[_0x15f2('0x5c')]();_0x4d28a1['where'](_0x15f2('0x8e'),_0x245b17['id']);_0x541118[_0x15f2('0x8f')](db[_0x15f2('0x79')][_0x15f2('0x3c')](_0x4d28a1[_0x15f2('0x90')](),{'type':db[_0x15f2('0x79')][_0x15f2('0x91')]['SELECT']})['then'](function(_0x28037f){if(_0x28037f[_0x15f2('0x41')]===0x1){return _0x245b17['id'];}else{var _0x26aebe=_[_0x15f2('0x92')](_[_0x15f2('0x2f')](_0x28037f,'TeamId'),function(_0x4bb840){return _['includes'](_0x347ddd,_0x4bb840);});if(_0x26aebe){return _0x245b17['id'];}}}));}}return BPromise[_0x15f2('0x93')](_0x541118)['then'](function(_0xb0ea90){_0x4f4507=_(_0x4f4507)[_0x15f2('0x94')](_0xb0ea90)[_0x15f2('0x95')]()[_0x15f2('0x30')]();return db['VoiceQueue'][_0x15f2('0x32')]({'where':{'id':_0x1652fd[_0x15f2('0x5d')]['id']}})[_0x15f2('0x2a')](function(_0x336f29){return db[_0x15f2('0x79')]['transaction'](function(_0x5214a0){return _0x336f29['removeTeams'](_0x1652fd[_0x15f2('0x3c')][_0x15f2('0x85')],{'transaction':_0x5214a0})[_0x15f2('0x2a')](function(){if(!_['isEmpty'](_0x4f4507)){return _0x336f29[_0x15f2('0x96')](_0x4f4507,{'transaction':_0x5214a0})['then'](function(){return db[_0x15f2('0x7f')][_0x15f2('0x2b')]({'where':{'VoiceQueueId':_0x1652fd['params']['id'],'UserId':_0x4f4507},'transaction':_0x5214a0});});}})[_0x15f2('0x2a')](function(){_0x4f4507[_0x15f2('0x97')](function(_0x9aaceb){socket[_0x15f2('0x83')](_0x15f2('0x98'),{'UserId':_0x9aaceb,'VoiceQueueId':_0x336f29['id']});});});});});});})[_0x15f2('0x2a')](respondWithStatusCode(_0x461f0e,null))[_0x15f2('0x50')](handleError(_0x461f0e,null));};exports[_0x15f2('0x99')]=function(_0x3cf2ab,_0x3acccb,_0x4d3fb6){var _0x2247a0,_0x264201;return db[_0x15f2('0x4b')][_0x15f2('0x32')]({'where':{'id':_0x3cf2ab[_0x15f2('0x5d')]['id']}})[_0x15f2('0x2a')](handleEntityNotFound(_0x3acccb,null))[_0x15f2('0x2a')](function(_0x3f59e8){if(_0x3f59e8){_0x264201=_0x3f59e8;return _0x3f59e8[_0x15f2('0x99')](_0x3cf2ab['body'][_0x15f2('0x85')],_['omit'](_0x3cf2ab[_0x15f2('0x61')],[_0x15f2('0x85'),'id'])||{})['spread'](function(_0x489e93){for(var _0x57e433=0x0;_0x57e433<_0x3cf2ab[_0x15f2('0x61')]['ids'][_0x15f2('0x41')];_0x57e433+=0x1){socket['emit'](_0x15f2('0x9a'),{'UserId':Number(_0x3cf2ab[_0x15f2('0x61')][_0x15f2('0x85')][_0x57e433]),'VoiceQueueId':Number(_0x3cf2ab[_0x15f2('0x5d')]['id'])});}return _0x489e93;});}})[_0x15f2('0x2a')](function(_0x491b92){_0x2247a0=_0x491b92||[];if(_0x264201){return db[_0x15f2('0x86')][_0x15f2('0x4e')]({'where':{'id':_0x3cf2ab[_0x15f2('0x61')][_0x15f2('0x85')]},'attributes':['id','name',_0x15f2('0x74'),_0x15f2('0x75'),'interface'],'raw':!![]});}})[_0x15f2('0x2a')](function(_0x148df7){if(!_[_0x15f2('0x9b')](_0x148df7)){var _0x2bece5=[];for(var _0x49b0c9=0x0;_0x49b0c9<_0x148df7[_0x15f2('0x41')];_0x49b0c9++){if(_0x148df7[_0x49b0c9]['online']){_0x2bece5[_0x15f2('0x8f')](db[_0x15f2('0x7f')]['upsert']({'membername':_0x148df7[_0x49b0c9][_0x15f2('0x33')],'UserId':_0x148df7[_0x49b0c9]['id'],'queue_name':_0x264201[_0x15f2('0x33')],'VoiceQueueId':_0x264201['id'],'interface':_[_0x15f2('0x9c')](_0x148df7[_0x49b0c9][_0x15f2('0x76')])?util[_0x15f2('0x81')](_0x15f2('0x82'),_0x148df7[_0x49b0c9][_0x15f2('0x33')]):_0x148df7[_0x49b0c9][_0x15f2('0x76')],'paused':_0x148df7[_0x49b0c9][_0x15f2('0x75')]||![],'penalty':_0x3cf2ab[_0x15f2('0x61')]['penalty']||0x0}));}}return BPromise['all'](_0x2bece5);}})[_0x15f2('0x2a')](function(){return _0x2247a0;})['then'](respondWithResult(_0x3acccb,null))['catch'](handleError(_0x3acccb,null));};exports[_0x15f2('0x96')]=function(_0x3b3678,_0x166d43,_0x13ab1d){return db['VoiceQueue'][_0x15f2('0x32')]({'where':{'id':_0x3b3678[_0x15f2('0x5d')]['id']}})[_0x15f2('0x2a')](handleEntityNotFound(_0x166d43,null))['then'](function(_0x48ac17){if(_0x48ac17){return _0x48ac17[_0x15f2('0x96')](_0x3b3678[_0x15f2('0x3c')][_0x15f2('0x85')])[_0x15f2('0x2a')](function(){if(_[_0x15f2('0x9d')](_0x3b3678[_0x15f2('0x3c')][_0x15f2('0x85')])){for(var _0x4c7c62=0x0;_0x4c7c62<_0x3b3678['query'][_0x15f2('0x85')][_0x15f2('0x41')];_0x4c7c62+=0x1){socket['emit'](_0x15f2('0x98'),{'UserId':Number(_0x3b3678[_0x15f2('0x3c')][_0x15f2('0x85')][_0x4c7c62]),'VoiceQueueId':Number(_0x3b3678[_0x15f2('0x5d')]['id'])});}}else{socket[_0x15f2('0x83')](_0x15f2('0x98'),{'UserId':Number(_0x3b3678['query'][_0x15f2('0x85')]),'VoiceQueueId':Number(_0x3b3678['params']['id'])});}});}})['then'](function(_0x558090){return db[_0x15f2('0x7f')][_0x15f2('0x2b')]({'where':{'VoiceQueueId':_0x3b3678[_0x15f2('0x5d')]['id'],'UserId':_0x3b3678[_0x15f2('0x3c')]['ids']}})[_0x15f2('0x2a')](function(){return _0x558090;});})[_0x15f2('0x2a')](respondWithStatusCode(_0x166d43,null))[_0x15f2('0x50')](handleError(_0x166d43,null));};exports[_0x15f2('0x9e')]=function(_0x5b285f,_0x19a740,_0x2dd3c3){var _0x20f83={};var _0x3e7596={};var _0x1a6aa3;var _0x482a20;return db['VoiceQueue'][_0x15f2('0x66')]({'where':{'id':_0x5b285f[_0x15f2('0x5d')]['id']}})[_0x15f2('0x2a')](handleEntityNotFound(_0x19a740,null))[_0x15f2('0x2a')](function(_0x444c76){if(_0x444c76){_0x1a6aa3=_0x444c76;_0x3e7596[_0x15f2('0x3a')]=_[_0x15f2('0x3b')](db[_0x15f2('0x86')][_0x15f2('0x36')]);_0x3e7596[_0x15f2('0x3c')]=_[_0x15f2('0x3b')](_0x5b285f['query']);_0x3e7596[_0x15f2('0x3d')]=_['intersection'](_0x3e7596['model'],_0x3e7596[_0x15f2('0x3c')]);_0x20f83['attributes']=_[_0x15f2('0x3e')](_0x3e7596['model'],qs[_0x15f2('0x3f')](_0x5b285f[_0x15f2('0x3c')][_0x15f2('0x3f')]));_0x20f83[_0x15f2('0x40')]=_0x20f83[_0x15f2('0x40')]['length']?_0x20f83['attributes']:_0x3e7596[_0x15f2('0x3a')];_0x20f83[_0x15f2('0x44')]=qs[_0x15f2('0x45')](_0x5b285f['query'][_0x15f2('0x45')]);_0x20f83[_0x15f2('0x46')]=qs[_0x15f2('0x3d')](_[_0x15f2('0x47')](_0x5b285f[_0x15f2('0x3c')],_0x3e7596['filters']));if(_0x5b285f[_0x15f2('0x3c')]['filter']){_0x20f83[_0x15f2('0x46')]=_[_0x15f2('0x48')](_0x20f83[_0x15f2('0x46')],{'$or':_[_0x15f2('0x2f')](_0x20f83[_0x15f2('0x40')],function(_0x880cde){var _0x1be674={};_0x1be674[_0x880cde]={'$like':'%'+_0x5b285f[_0x15f2('0x3c')][_0x15f2('0x2d')]+'%'};return _0x1be674;})});}_0x20f83=_[_0x15f2('0x48')]({},_0x20f83,_0x5b285f[_0x15f2('0x4a')]);return _0x1a6aa3[_0x15f2('0x9e')](_0x20f83);}})['then'](function(_0x61070f){if(_0x61070f){_0x482a20=_0x61070f[_0x15f2('0x41')];if(!_0x5b285f['query'][_0x15f2('0x42')](_0x15f2('0x43'))){_0x20f83[_0x15f2('0x24')]=qs[_0x15f2('0x24')](_0x5b285f[_0x15f2('0x3c')][_0x15f2('0x24')]);_0x20f83[_0x15f2('0x22')]=qs[_0x15f2('0x22')](_0x5b285f[_0x15f2('0x3c')][_0x15f2('0x22')]);}return _0x1a6aa3['getAgents'](_0x20f83);}})['then'](function(_0x17ed41){if(_0x17ed41){return _0x17ed41?{'count':_0x482a20,'rows':_0x17ed41}:null;}})[_0x15f2('0x2a')](respondWithResult(_0x19a740,null))['catch'](handleError(_0x19a740,null));};exports[_0x15f2('0x9f')]=function(_0x4f3115,_0x58eabc,_0x28969c){var _0x36eee0={};var _0x449bba={};var _0xec1672;var _0xd993e;return db['VoiceQueue'][_0x15f2('0x66')]({'where':{'id':_0x4f3115[_0x15f2('0x5d')]['id']}})[_0x15f2('0x2a')](handleEntityNotFound(_0x58eabc,null))['then'](function(_0x2ea628){if(_0x2ea628){_0xec1672=_0x2ea628;_0x449bba['model']=_['keys'](db[_0x15f2('0x7f')][_0x15f2('0x36')]);_0x449bba['query']=_['keys'](_0x4f3115[_0x15f2('0x3c')]);_0x449bba[_0x15f2('0x3d')]=_['intersection'](_0x449bba['model'],_0x449bba[_0x15f2('0x3c')]);_0x36eee0[_0x15f2('0x40')]=_[_0x15f2('0x3e')](_0x449bba[_0x15f2('0x3a')],qs['fields'](_0x4f3115[_0x15f2('0x3c')][_0x15f2('0x3f')]));_0x36eee0[_0x15f2('0x40')]=_0x36eee0[_0x15f2('0x40')][_0x15f2('0x41')]?_0x36eee0['attributes']:_0x449bba[_0x15f2('0x3a')];_0x36eee0[_0x15f2('0x44')]=qs[_0x15f2('0x45')](_0x4f3115[_0x15f2('0x3c')][_0x15f2('0x45')]);_0x36eee0[_0x15f2('0x46')]=qs['filters'](_['pick'](_0x4f3115[_0x15f2('0x3c')],_0x449bba['filters']));if(_0x4f3115[_0x15f2('0x3c')][_0x15f2('0x2d')]){_0x36eee0[_0x15f2('0x46')]=_[_0x15f2('0x48')](_0x36eee0[_0x15f2('0x46')],{'$or':_[_0x15f2('0x2f')](_0x36eee0[_0x15f2('0x40')],function(_0xf8ca5a){var _0xb4a709={};_0xb4a709[_0xf8ca5a]={'$like':'%'+_0x4f3115[_0x15f2('0x3c')][_0x15f2('0x2d')]+'%'};return _0xb4a709;})});}_0x36eee0=_[_0x15f2('0x48')]({},_0x36eee0,_0x4f3115[_0x15f2('0x4a')]);return _0xec1672['getMembers'](_0x36eee0);}})[_0x15f2('0x2a')](function(_0x4e0d68){if(_0x4e0d68){_0xd993e=_0x4e0d68[_0x15f2('0x41')];if(!_0x4f3115['query']['hasOwnProperty'](_0x15f2('0x43'))){_0x36eee0['limit']=qs['limit'](_0x4f3115[_0x15f2('0x3c')][_0x15f2('0x24')]);_0x36eee0[_0x15f2('0x22')]=qs[_0x15f2('0x22')](_0x4f3115[_0x15f2('0x3c')][_0x15f2('0x22')]);}return _0xec1672[_0x15f2('0x9f')](_0x36eee0);}})[_0x15f2('0x2a')](function(_0x246844){return _0x246844?{'count':_0xd993e,'rows':_0x246844}:null;})[_0x15f2('0x2a')](respondWithResult(_0x58eabc,null))[_0x15f2('0x50')](handleError(_0x58eabc,null));};exports['getLists']=function(_0x3f3cd8,_0x5cf237,_0x2d4f7c){var _0x22a6c6={};var _0x3f35ff={};var _0x4f9b8c;var _0x1296b6;return db[_0x15f2('0x4b')]['findOne']({'where':{'id':_0x3f3cd8[_0x15f2('0x5d')]['id']}})[_0x15f2('0x2a')](handleEntityNotFound(_0x5cf237,null))[_0x15f2('0x2a')](function(_0x3382a0){if(_0x3382a0){_0x4f9b8c=_0x3382a0;_0x3f35ff[_0x15f2('0x3a')]=_[_0x15f2('0x3b')](db[_0x15f2('0xa0')]['rawAttributes']);_0x3f35ff[_0x15f2('0x3c')]=_[_0x15f2('0x3b')](_0x3f3cd8['query']);_0x3f35ff[_0x15f2('0x3d')]=_[_0x15f2('0x3e')](_0x3f35ff[_0x15f2('0x3a')],_0x3f35ff['query']);_0x22a6c6[_0x15f2('0x40')]=_[_0x15f2('0x3e')](_0x3f35ff[_0x15f2('0x3a')],qs['fields'](_0x3f3cd8[_0x15f2('0x3c')][_0x15f2('0x3f')]));_0x22a6c6['attributes']=_0x22a6c6['attributes']['length']?_0x22a6c6[_0x15f2('0x40')]:_0x3f35ff[_0x15f2('0x3a')];_0x22a6c6[_0x15f2('0x44')]=qs[_0x15f2('0x45')](_0x3f3cd8['query'][_0x15f2('0x45')]);_0x22a6c6[_0x15f2('0x46')]=qs[_0x15f2('0x3d')](_[_0x15f2('0x47')](_0x3f3cd8['query'],_0x3f35ff[_0x15f2('0x3d')]));if(_0x3f3cd8[_0x15f2('0x3c')][_0x15f2('0x2d')]){_0x22a6c6[_0x15f2('0x46')]=_[_0x15f2('0x48')](_0x22a6c6[_0x15f2('0x46')],{'$or':_['map'](_0x22a6c6[_0x15f2('0x40')],function(_0x466f18){var _0x381d38={};_0x381d38[_0x466f18]={'$like':'%'+_0x3f3cd8[_0x15f2('0x3c')][_0x15f2('0x2d')]+'%'};return _0x381d38;})});}_0x22a6c6=_[_0x15f2('0x48')]({},_0x22a6c6,_0x3f3cd8['options']);return _0x4f9b8c[_0x15f2('0xa1')](_0x22a6c6);}})[_0x15f2('0x2a')](function(_0x37df30){if(_0x37df30){_0x1296b6=_0x37df30[_0x15f2('0x41')];if(!_0x3f3cd8[_0x15f2('0x3c')][_0x15f2('0x42')](_0x15f2('0x43'))){_0x22a6c6[_0x15f2('0x24')]=qs['limit'](_0x3f3cd8[_0x15f2('0x3c')][_0x15f2('0x24')]);_0x22a6c6['offset']=qs[_0x15f2('0x22')](_0x3f3cd8[_0x15f2('0x3c')][_0x15f2('0x22')]);}return _0x4f9b8c['getLists'](_0x22a6c6);}})[_0x15f2('0x2a')](function(_0x5cd27e){if(_0x5cd27e){return _0x5cd27e?{'count':_0x1296b6,'rows':_0x5cd27e}:null;}})[_0x15f2('0x2a')](respondWithResult(_0x5cf237,null))[_0x15f2('0x50')](handleError(_0x5cf237,null));};exports[_0x15f2('0xa2')]=function(_0x1d0edd,_0x47e3a0,_0xce3c0e){var _0x317420,_0x1fe6ec;return db[_0x15f2('0x4b')][_0x15f2('0x32')]({'where':{'id':_0x1d0edd[_0x15f2('0x5d')]['id']}})[_0x15f2('0x2a')](handleEntityNotFound(_0x47e3a0,null))[_0x15f2('0x2a')](function(_0x198286){if(_0x198286){_0x1fe6ec=_0x198286;return _0x198286[_0x15f2('0xa2')](_0x1d0edd['body'][_0x15f2('0x85')],_[_0x15f2('0x5e')](_0x1d0edd['body'],[_0x15f2('0x85'),'id'])||{});}return null;})['spread'](function(_0x2e2c31){var _0x1d3488;_0x317420=_0x2e2c31||[];var _0x52b72a=[];if(_0x2e2c31){for(var _0x4a25ae=0x0;_0x4a25ae<_0x2e2c31[_0x15f2('0x41')];_0x4a25ae+=0x1){var _0x3d2302=_0x2e2c31[_0x4a25ae][_0x15f2('0x53')]({'plain':!![]});_0x1fe6ec[_0x15f2('0xa3')]=_0x1d0edd['body'][_0x15f2('0xa3')]?_0x1d0edd['body']['dialCheckDuplicateType']:_0x1fe6ec['dialCheckDuplicateType'];switch(_0x1fe6ec[_0x15f2('0xa3')]){case'always':_0x1d3488=squel[_0x15f2('0xa4')]()['into'](_0x15f2('0xa5'))['fromQuery']([_0x15f2('0xa6'),_0x15f2('0xa7'),_0x15f2('0xa8'),_0x15f2('0xa9'),'VoiceQueueId',_0x15f2('0x5f'),'updatedAt'],squel[_0x15f2('0x87')]()[_0x15f2('0xaa')](_0x15f2('0xa6'),_0x15f2('0xa6'))[_0x15f2('0xaa')](_0x15f2('0xab'),_0x15f2('0xa7'))[_0x15f2('0xaa')]('id',_0x15f2('0xa8'))[_0x15f2('0xaa')](_0x3d2302[_0x15f2('0xac')][_0x15f2('0x90')](),_0x15f2('0xa9'))['field'](_0x1d0edd[_0x15f2('0x5d')]['id'][_0x15f2('0x90')](),_0x15f2('0x68'))[_0x15f2('0xaa')](_0x15f2('0xab'),'createdAt')['field'](_0x15f2('0xab'),'updatedAt')[_0x15f2('0x89')]('cm_contacts')['where'](_0x15f2('0xad'))[_0x15f2('0x46')]('ListId\x20=\x20?',_0x3d2302[_0x15f2('0xac')][_0x15f2('0x90')]())[_0x15f2('0x46')](_0x15f2('0xae'))[_0x15f2('0x46')](_0x15f2('0xaf'),squel['select']()[_0x15f2('0xaa')]('COALESCE(calleridnum,\x27\x27)')['from']('cm_hopper_final')[_0x15f2('0x46')](_0x15f2('0x8d'),_0x1d0edd[_0x15f2('0x5d')]['id'][_0x15f2('0x90')]()))[_0x15f2('0x46')](_0x15f2('0xaf'),squel[_0x15f2('0x87')]()['field']('COALESCE(phone,\x27\x27)')[_0x15f2('0x89')](_0x15f2('0xa5'))[_0x15f2('0x46')]('VoiceQueueId\x20=\x20?',_0x1d0edd[_0x15f2('0x5d')]['id'][_0x15f2('0x90')]())))[_0x15f2('0x90')]();break;case _0x15f2('0xb0'):_0x1d3488=squel[_0x15f2('0xa4')]()['into'](_0x15f2('0xa5'))[_0x15f2('0xb1')]([_0x15f2('0xa6'),_0x15f2('0xa7'),_0x15f2('0xa8'),_0x15f2('0xa9'),_0x15f2('0x68'),_0x15f2('0x5f'),_0x15f2('0x60')],squel[_0x15f2('0x87')]()[_0x15f2('0xaa')](_0x15f2('0xa6'),_0x15f2('0xa6'))[_0x15f2('0xaa')]('NOW()',_0x15f2('0xa7'))[_0x15f2('0xaa')]('id',_0x15f2('0xa8'))[_0x15f2('0xaa')](_0x3d2302[_0x15f2('0xac')]['toString'](),_0x15f2('0xa9'))[_0x15f2('0xaa')](_0x1d0edd[_0x15f2('0x5d')]['id'][_0x15f2('0x90')](),_0x15f2('0x68'))[_0x15f2('0xaa')]('NOW()',_0x15f2('0x5f'))[_0x15f2('0xaa')](_0x15f2('0xab'),_0x15f2('0x60'))[_0x15f2('0x89')]('cm_contacts')[_0x15f2('0x46')](_0x15f2('0xad'))[_0x15f2('0x46')]('ListId\x20=\x20?',_0x3d2302['CmListId'][_0x15f2('0x90')]())[_0x15f2('0x46')](_0x15f2('0xae'))[_0x15f2('0x46')](_0x15f2('0xaf'),squel[_0x15f2('0x87')]()[_0x15f2('0xaa')](_0x15f2('0xb2'))['from'](_0x15f2('0xa5'))[_0x15f2('0x46')]('VoiceQueueId\x20=\x20?',_0x1d0edd[_0x15f2('0x5d')]['id']['toString']())))[_0x15f2('0x90')]();break;default:_0x1d3488=squel['insert']()[_0x15f2('0xb3')]('cm_hopper')[_0x15f2('0xb1')](['phone',_0x15f2('0xa7'),_0x15f2('0xa8'),'ListId',_0x15f2('0x68'),_0x15f2('0x5f'),_0x15f2('0x60')],squel[_0x15f2('0x87')]()[_0x15f2('0xaa')](_0x15f2('0xa6'),'phone')[_0x15f2('0xaa')]('NOW()',_0x15f2('0xa7'))[_0x15f2('0xaa')]('id',_0x15f2('0xa8'))[_0x15f2('0xaa')](_0x3d2302['CmListId'][_0x15f2('0x90')](),_0x15f2('0xa9'))[_0x15f2('0xaa')](_0x1d0edd['params']['id'][_0x15f2('0x90')](),_0x15f2('0x68'))[_0x15f2('0xaa')](_0x15f2('0xab'),_0x15f2('0x5f'))[_0x15f2('0xaa')](_0x15f2('0xab'),'updatedAt')[_0x15f2('0x89')]('cm_contacts')[_0x15f2('0x46')](_0x15f2('0xad'))[_0x15f2('0x46')](_0x15f2('0xb4'),_0x3d2302[_0x15f2('0xac')][_0x15f2('0x90')]())['where'](_0x15f2('0xae')))['toString']();}_0x52b72a['push'](db[_0x15f2('0x79')][_0x15f2('0x3c')](_0x1d3488));}return BPromise[_0x15f2('0x93')](_0x52b72a);}})[_0x15f2('0x2a')](function(){return _0x317420;})[_0x15f2('0x2a')](respondWithResult(_0x47e3a0,null))[_0x15f2('0x50')](handleError(_0x47e3a0,null));};exports['removeLists']=function(_0x2d47a9,_0x514964,_0x350971){return db[_0x15f2('0x4b')]['find']({'where':{'id':_0x2d47a9[_0x15f2('0x5d')]['id']}})[_0x15f2('0x2a')](handleEntityNotFound(_0x514964,null))[_0x15f2('0x2a')](function(_0x8bc9b7){if(_0x8bc9b7){return _0x8bc9b7[_0x15f2('0xb5')](_0x2d47a9[_0x15f2('0x3c')]['ids']);}})[_0x15f2('0x2a')](function(_0x2e2e19){if(_0x2e2e19){return db[_0x15f2('0x67')][_0x15f2('0x2b')]({'where':{'ListId':_0x2d47a9[_0x15f2('0x3c')][_0x15f2('0x85')],'VoiceQueueId':_0x2d47a9['params']['id']}})['then'](function(){return _0x2e2e19;});}})['then'](respondWithStatusCode(_0x514964,null))[_0x15f2('0x50')](handleError(_0x514964,null));};exports[_0x15f2('0xb6')]=function(_0x5846ff,_0x590bee,_0x262558){var _0x2b0ccf={};var _0x4f4345={};var _0x364c4f;var _0x4588ad;return db['VoiceQueue'][_0x15f2('0x66')]({'where':{'id':_0x5846ff[_0x15f2('0x5d')]['id']}})[_0x15f2('0x2a')](handleEntityNotFound(_0x590bee,null))[_0x15f2('0x2a')](function(_0x2601e3){if(_0x2601e3){_0x364c4f=_0x2601e3;_0x4f4345[_0x15f2('0x3a')]=_[_0x15f2('0x3b')](db[_0x15f2('0xa0')][_0x15f2('0x36')]);_0x4f4345[_0x15f2('0x3c')]=_[_0x15f2('0x3b')](_0x5846ff[_0x15f2('0x3c')]);_0x4f4345[_0x15f2('0x3d')]=_[_0x15f2('0x3e')](_0x4f4345[_0x15f2('0x3a')],_0x4f4345['query']);_0x2b0ccf[_0x15f2('0x40')]=_[_0x15f2('0x3e')](_0x4f4345[_0x15f2('0x3a')],qs[_0x15f2('0x3f')](_0x5846ff[_0x15f2('0x3c')][_0x15f2('0x3f')]));_0x2b0ccf['attributes']=_0x2b0ccf['attributes'][_0x15f2('0x41')]?_0x2b0ccf[_0x15f2('0x40')]:_0x4f4345[_0x15f2('0x3a')];_0x2b0ccf[_0x15f2('0x44')]=qs[_0x15f2('0x45')](_0x5846ff[_0x15f2('0x3c')]['sort']);_0x2b0ccf[_0x15f2('0x46')]=qs[_0x15f2('0x3d')](_[_0x15f2('0x47')](_0x5846ff[_0x15f2('0x3c')],_0x4f4345[_0x15f2('0x3d')]));if(_0x5846ff[_0x15f2('0x3c')]['filter']){_0x2b0ccf[_0x15f2('0x46')]=_[_0x15f2('0x48')](_0x2b0ccf[_0x15f2('0x46')],{'$or':_[_0x15f2('0x2f')](_0x2b0ccf[_0x15f2('0x40')],function(_0x384069){var _0x30da79={};_0x30da79[_0x384069]={'$like':'%'+_0x5846ff[_0x15f2('0x3c')][_0x15f2('0x2d')]+'%'};return _0x30da79;})});}_0x2b0ccf=_[_0x15f2('0x48')]({},_0x2b0ccf,_0x5846ff[_0x15f2('0x4a')]);return _0x364c4f[_0x15f2('0xb6')](_0x2b0ccf);}})[_0x15f2('0x2a')](function(_0x457353){if(_0x457353){_0x4588ad=_0x457353['length'];if(!_0x5846ff[_0x15f2('0x3c')][_0x15f2('0x42')](_0x15f2('0x43'))){_0x2b0ccf[_0x15f2('0x24')]=qs['limit'](_0x5846ff[_0x15f2('0x3c')][_0x15f2('0x24')]);_0x2b0ccf[_0x15f2('0x22')]=qs[_0x15f2('0x22')](_0x5846ff[_0x15f2('0x3c')][_0x15f2('0x22')]);}return _0x364c4f[_0x15f2('0xb6')](_0x2b0ccf);}})['then'](function(_0x258af7){if(_0x258af7){return _0x258af7?{'count':_0x4588ad,'rows':_0x258af7}:null;}})[_0x15f2('0x2a')](respondWithResult(_0x590bee,null))[_0x15f2('0x50')](handleError(_0x590bee,null));};exports[_0x15f2('0xb7')]=function(_0x1121af,_0x11a937,_0x7630be){var _0x89a86c,_0x377f68;return db['VoiceQueue']['find']({'where':{'id':_0x1121af[_0x15f2('0x5d')]['id']}})[_0x15f2('0x2a')](handleEntityNotFound(_0x11a937,null))[_0x15f2('0x2a')](function(_0x31bc61){if(_0x31bc61){_0x377f68=_0x31bc61;return _0x31bc61[_0x15f2('0xb7')](_0x1121af[_0x15f2('0x61')][_0x15f2('0x85')],_['omit'](_0x1121af[_0x15f2('0x61')],[_0x15f2('0x85'),'id'])||{});}return null;})[_0x15f2('0xb8')](function(_0x33e95a){var _0x107834;_0x89a86c=_0x33e95a||[];var _0x16fcab=[];if(_0x33e95a){for(var _0x281e88=0x0;_0x281e88<_0x33e95a[_0x15f2('0x41')];_0x281e88+=0x1){var _0x2c7b72=_0x33e95a[_0x281e88][_0x15f2('0x53')]({'plain':!![]});_0x107834=squel[_0x15f2('0xa4')]()[_0x15f2('0xb3')](_0x15f2('0xb9'))[_0x15f2('0xb1')]([_0x15f2('0xa6'),_0x15f2('0xa8'),_0x15f2('0xa9'),_0x15f2('0x68'),'createdAt',_0x15f2('0x60')],squel[_0x15f2('0x87')]()[_0x15f2('0xaa')](_0x15f2('0xa6'),_0x15f2('0xa6'))[_0x15f2('0xaa')]('id',_0x15f2('0xa8'))[_0x15f2('0xaa')](_0x2c7b72['CmListId']['toString'](),_0x15f2('0xa9'))[_0x15f2('0xaa')](_0x1121af[_0x15f2('0x5d')]['id'][_0x15f2('0x90')](),_0x15f2('0x68'))[_0x15f2('0xaa')](_0x15f2('0xab'),'createdAt')[_0x15f2('0xaa')](_0x15f2('0xab'),_0x15f2('0x60'))[_0x15f2('0x89')](_0x15f2('0xba'))[_0x15f2('0x46')](_0x15f2('0xad'))[_0x15f2('0x46')](_0x15f2('0xb4'),_0x2c7b72[_0x15f2('0xac')]['toString']())['where'](_0x15f2('0xae')))[_0x15f2('0x90')]();_0x16fcab[_0x15f2('0x8f')](db[_0x15f2('0x79')][_0x15f2('0x3c')](_0x107834));}return BPromise[_0x15f2('0x93')](_0x16fcab);}})['then'](function(){return _0x89a86c;})[_0x15f2('0x2a')](respondWithResult(_0x11a937,null))[_0x15f2('0x50')](handleError(_0x11a937,null));};exports[_0x15f2('0xbb')]=function(_0x3815c4,_0x44de17,_0x2d7c04){return db[_0x15f2('0x4b')]['find']({'where':{'id':_0x3815c4[_0x15f2('0x5d')]['id']}})[_0x15f2('0x2a')](handleEntityNotFound(_0x44de17,null))[_0x15f2('0x2a')](function(_0x5b4674){if(_0x5b4674){return _0x5b4674[_0x15f2('0xbb')](_0x3815c4[_0x15f2('0x3c')][_0x15f2('0x85')]);}})[_0x15f2('0x2a')](function(_0x47a107){if(_0x47a107){return db[_0x15f2('0x6e')]['destroy']({'where':{'ListId':_0x3815c4[_0x15f2('0x3c')][_0x15f2('0x85')],'VoiceQueueId':_0x3815c4[_0x15f2('0x5d')]['id']}})[_0x15f2('0x2a')](function(){return _0x47a107;});}})[_0x15f2('0x2a')](respondWithStatusCode(_0x44de17,null))[_0x15f2('0x50')](handleError(_0x44de17,null));};
\ No newline at end of file
index fb84cc2..5cf81bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c3d=['setMaxListeners','save','update','remove','emit','hook','exports','events','../../mysqldb','VoiceQueue'];(function(_0x5dd9f1,_0x256448){var _0x25558f=function(_0x471100){while(--_0x471100){_0x5dd9f1['push'](_0x5dd9f1['shift']());}};_0x25558f(++_0x256448);}(_0x9c3d,0x1d3));var _0xd9c3=function(_0xcf2382,_0x1da16e){_0xcf2382=_0xcf2382-0x0;var _0x1ade36=_0x9c3d[_0xcf2382];return _0x1ade36;};'use strict';var EventEmitter=require(_0xd9c3('0x0'));var VoiceQueue=require(_0xd9c3('0x1'))['db'][_0xd9c3('0x2')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0xd9c3('0x3')](0x0);var events={'afterCreate':_0xd9c3('0x4'),'afterUpdate':_0xd9c3('0x5'),'afterDestroy':_0xd9c3('0x6')};function emitEvent(_0x553f7c){return function(_0xce2311,_0x3223b5,_0x4a7c1e){VoiceQueueEvents['emit'](_0x553f7c+':'+_0xce2311['id'],_0xce2311);VoiceQueueEvents[_0xd9c3('0x7')](_0x553f7c,_0xce2311);_0x4a7c1e(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueue[_0xd9c3('0x8')](e,emitEvent(event));}}module[_0xd9c3('0x9')]=VoiceQueueEvents;
\ No newline at end of file
+var _0xabd0=['emit','hasOwnProperty','hook','exports','../../mysqldb','VoiceQueue','setMaxListeners','update'];(function(_0x21c6d5,_0x4ca9fd){var _0x126749=function(_0x45a6ab){while(--_0x45a6ab){_0x21c6d5['push'](_0x21c6d5['shift']());}};_0x126749(++_0x4ca9fd);}(_0xabd0,0x1ec));var _0x0abd=function(_0x276107,_0x11ee26){_0x276107=_0x276107-0x0;var _0x5d1beb=_0xabd0[_0x276107];return _0x5d1beb;};'use strict';var EventEmitter=require('events');var VoiceQueue=require(_0x0abd('0x0'))['db'][_0x0abd('0x1')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0x0abd('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x0abd('0x3'),'afterDestroy':'remove'};function emitEvent(_0x285408){return function(_0x4da6b2,_0xdaa4,_0x1aa7f7){VoiceQueueEvents['emit'](_0x285408+':'+_0x4da6b2['id'],_0x4da6b2);VoiceQueueEvents[_0x0abd('0x4')](_0x285408,_0x4da6b2);_0x1aa7f7(null);};}for(var e in events){if(events[_0x0abd('0x5')](e)){var event=events[e];VoiceQueue[_0x0abd('0x6')](e,emitEvent(event));}}module[_0x0abd('0x7')]=VoiceQueueEvents;
\ No newline at end of file
index 5ac9299..5da8f58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['define','voice_queues','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./voiceQueue.attributes','exports'];(function(_0x27ab58,_0x48c638){var _0x3daff0=function(_0x7e2522){while(--_0x7e2522){_0x27ab58['push'](_0x27ab58['shift']());}};_0x3daff0(++_0x48c638);}(_0x008c,0x188));var _0xc008=function(_0x1c72ac,_0x380a0e){_0x1c72ac=_0x1c72ac-0x0;var _0x274e46=_0x008c[_0x1c72ac];return _0x274e46;};'use strict';var _=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var logger=require(_0xc008('0x2'))(_0xc008('0x3'));var moment=require(_0xc008('0x4'));var BPromise=require('bluebird');var rp=require(_0xc008('0x5'));var fs=require('fs');var path=require(_0xc008('0x6'));var rimraf=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var attributes=require(_0xc008('0x9'));module[_0xc008('0xa')]=function(_0x13aa7,_0x39bb5e){return _0x13aa7[_0xc008('0xb')]('VoiceQueue',attributes,{'tableName':_0xc008('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xedd9=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./voiceQueue.attributes','exports','VoiceQueue','util'];(function(_0x4ed2b2,_0x4096ed){var _0x54a658=function(_0x3d3a16){while(--_0x3d3a16){_0x4ed2b2['push'](_0x4ed2b2['shift']());}};_0x54a658(++_0x4096ed);}(_0xedd9,0xfc));var _0x9edd=function(_0x8d565d,_0xff5baa){_0x8d565d=_0x8d565d-0x0;var _0x8641dd=_0xedd9[_0x8d565d];return _0x8641dd;};'use strict';var _=require('lodash');var util=require(_0x9edd('0x0'));var logger=require(_0x9edd('0x1'))(_0x9edd('0x2'));var moment=require(_0x9edd('0x3'));var BPromise=require(_0x9edd('0x4'));var rp=require(_0x9edd('0x5'));var fs=require('fs');var path=require(_0x9edd('0x6'));var rimraf=require(_0x9edd('0x7'));var config=require('../../config/environment');var attributes=require(_0x9edd('0x8'));module[_0x9edd('0x9')]=function(_0x268f9e,_0x34c1a7){return _0x268f9e['define'](_0x9edd('0xa'),attributes,{'tableName':'voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6192308..7635bfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb3c=['raw','options','where','attributes','limit','include','map','model','stringify','ShowVoiceQueue','VoiceQueue','find','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','redis','localhost','./voiceQueue.socket','register','then','info','VoiceQueue,\x20%s,\x20%s','request\x20sent','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetVoiceQueue'];(function(_0x374418,_0x37ab48){var _0x41d6a2=function(_0x2dc92d){while(--_0x2dc92d){_0x374418['push'](_0x374418['shift']());}};_0x41d6a2(++_0x37ab48);}(_0xbb3c,0x16b));var _0xcbb3=function(_0x2b6316,_0x1dd4f1){_0x2b6316=_0x2b6316-0x0;var _0x4421de=_0xbb3c[_0x2b6316];return _0x4421de;};'use strict';var _=require(_0xcbb3('0x0'));var util=require(_0xcbb3('0x1'));var moment=require(_0xcbb3('0x2'));var BPromise=require(_0xcbb3('0x3'));var rs=require(_0xcbb3('0x4'));var fs=require('fs');var Redis=require(_0xcbb3('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xcbb3('0x6'));var logger=require(_0xcbb3('0x7'))(_0xcbb3('0x8'));var config=require(_0xcbb3('0x9'));var jayson=require(_0xcbb3('0xa'));var client=jayson['client']['http']({'port':0x232a});config[_0xcbb3('0xb')]=_['defaults'](config[_0xcbb3('0xb')],{'host':_0xcbb3('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xcbb3('0xb')]));require(_0xcbb3('0xd'))[_0xcbb3('0xe')](socket);function respondWithRpcPromise(_0x51b20c,_0xe3746f,_0x2d14aa){return new BPromise(function(_0x30f950,_0xbe35cb){return client['request'](_0x51b20c,_0x2d14aa)[_0xcbb3('0xf')](function(_0x383b94){logger[_0xcbb3('0x10')](_0xcbb3('0x11'),_0xe3746f,_0xcbb3('0x12'));logger[_0xcbb3('0x13')](_0xcbb3('0x14'),_0xe3746f,_0xcbb3('0x12'),JSON['stringify'](_0x383b94));if(_0x383b94[_0xcbb3('0x15')]){if(_0x383b94['error'][_0xcbb3('0x16')]===0x1f4){logger[_0xcbb3('0x15')](_0xcbb3('0x11'),_0xe3746f,_0x383b94['error'][_0xcbb3('0x17')]);return _0xbe35cb(_0x383b94[_0xcbb3('0x15')][_0xcbb3('0x17')]);}logger['error'](_0xcbb3('0x11'),_0xe3746f,_0x383b94[_0xcbb3('0x15')][_0xcbb3('0x17')]);return _0x30f950(_0x383b94[_0xcbb3('0x15')][_0xcbb3('0x17')]);}else{logger[_0xcbb3('0x10')](_0xcbb3('0x11'),_0xe3746f,_0xcbb3('0x12'));_0x30f950(_0x383b94[_0xcbb3('0x18')][_0xcbb3('0x17')]);}})[_0xcbb3('0x19')](function(_0x3cc830){logger['error'](_0xcbb3('0x11'),_0xe3746f,_0x3cc830);_0xbe35cb(_0x3cc830);});});}exports[_0xcbb3('0x1a')]=function(_0x40216a){var _0x49af26=this;return new Promise(function(_0x3b723e,_0x33885f){return db['VoiceQueue']['findAll']({'raw':_0x40216a['options']?_0x40216a['options'][_0xcbb3('0x1b')]===undefined?!![]:![]:!![],'where':_0x40216a[_0xcbb3('0x1c')]?_0x40216a[_0xcbb3('0x1c')][_0xcbb3('0x1d')]||null:null,'attributes':_0x40216a[_0xcbb3('0x1c')]?_0x40216a[_0xcbb3('0x1c')][_0xcbb3('0x1e')]||null:null,'limit':_0x40216a[_0xcbb3('0x1c')]?_0x40216a[_0xcbb3('0x1c')][_0xcbb3('0x1f')]||null:null,'include':_0x40216a[_0xcbb3('0x1c')]?_0x40216a[_0xcbb3('0x1c')][_0xcbb3('0x20')]?_[_0xcbb3('0x21')](_0x40216a[_0xcbb3('0x1c')][_0xcbb3('0x20')],function(_0x37eef3){return{'model':db[_0x37eef3[_0xcbb3('0x22')]],'as':_0x37eef3['as'],'attributes':_0x37eef3['attributes'],'include':_0x37eef3[_0xcbb3('0x20')]?_[_0xcbb3('0x21')](_0x37eef3[_0xcbb3('0x20')],function(_0x574d66){return{'model':db[_0x574d66[_0xcbb3('0x22')]],'as':_0x574d66['as'],'attributes':_0x574d66[_0xcbb3('0x1e')],'include':_0x574d66[_0xcbb3('0x20')]?_[_0xcbb3('0x21')](_0x574d66[_0xcbb3('0x20')],function(_0x493a63){return{'model':db[_0x493a63[_0xcbb3('0x22')]],'as':_0x493a63['as'],'attributes':_0x493a63[_0xcbb3('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xcbb3('0xf')](function(_0x10ef03){logger[_0xcbb3('0x10')](_0xcbb3('0x1a'),_0x40216a);logger[_0xcbb3('0x13')](_0xcbb3('0x1a'),_0x40216a,JSON[_0xcbb3('0x23')](_0x10ef03));_0x3b723e(_0x10ef03);})[_0xcbb3('0x19')](function(_0x35d5ac){logger[_0xcbb3('0x15')]('GetVoiceQueue',_0x35d5ac[_0xcbb3('0x17')],_0x40216a);_0x33885f(_0x49af26['error'](0x1f4,_0x35d5ac[_0xcbb3('0x17')]));});});};exports[_0xcbb3('0x24')]=function(_0x31df3f){var _0x3fc52f=this;return new Promise(function(_0xf731b1,_0x6f66b8){return db[_0xcbb3('0x25')][_0xcbb3('0x26')]({'raw':_0x31df3f[_0xcbb3('0x1c')]?_0x31df3f[_0xcbb3('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x31df3f[_0xcbb3('0x1c')]?_0x31df3f['options']['where']||null:null,'attributes':_0x31df3f[_0xcbb3('0x1c')]?_0x31df3f[_0xcbb3('0x1c')]['attributes']||null:null,'include':_0x31df3f['options']?_0x31df3f[_0xcbb3('0x1c')]['include']?_[_0xcbb3('0x21')](_0x31df3f['options']['include'],function(_0x4c1027){return{'model':db[_0x4c1027[_0xcbb3('0x22')]],'as':_0x4c1027['as'],'attributes':_0x4c1027[_0xcbb3('0x1e')],'include':_0x4c1027['include']?_[_0xcbb3('0x21')](_0x4c1027[_0xcbb3('0x20')],function(_0x21b5fa){return{'model':db[_0x21b5fa[_0xcbb3('0x22')]],'as':_0x21b5fa['as'],'attributes':_0x21b5fa['attributes'],'include':_0x21b5fa[_0xcbb3('0x20')]?_[_0xcbb3('0x21')](_0x21b5fa[_0xcbb3('0x20')],function(_0x3f0ae5){return{'model':db[_0x3f0ae5[_0xcbb3('0x22')]],'as':_0x3f0ae5['as'],'attributes':_0x3f0ae5[_0xcbb3('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4255a6){logger[_0xcbb3('0x10')](_0xcbb3('0x24'),_0x31df3f);logger[_0xcbb3('0x13')](_0xcbb3('0x24'),_0x31df3f,JSON['stringify'](_0x4255a6));_0xf731b1(_0x4255a6);})[_0xcbb3('0x19')](function(_0x3a29ab){logger['error'](_0xcbb3('0x24'),_0x3a29ab[_0xcbb3('0x17')],_0x31df3f);_0x6f66b8(_0x3fc52f[_0xcbb3('0x15')](0x1f4,_0x3a29ab['message']));});});};
\ No newline at end of file
+var _0x809f=['client','redis','defaults','localhost','socket.io-emitter','./voiceQueue.socket','register','request','then','VoiceQueue,\x20%s,\x20%s','request\x20sent','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','findAll','options','raw','where','attributes','limit','map','include','model','info','GetVoiceQueue','ShowVoiceQueue','find','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x50850f,_0x2649c7){var _0x5e9ba4=function(_0x2e19ff){while(--_0x2e19ff){_0x50850f['push'](_0x50850f['shift']());}};_0x5e9ba4(++_0x2649c7);}(_0x809f,0x190));var _0xf809=function(_0x95a519,_0x2fad88){_0x95a519=_0x95a519-0x0;var _0x3ef432=_0x809f[_0x95a519];return _0x3ef432;};'use strict';var _=require(_0xf809('0x0'));var util=require(_0xf809('0x1'));var moment=require(_0xf809('0x2'));var BPromise=require(_0xf809('0x3'));var rs=require(_0xf809('0x4'));var fs=require('fs');var Redis=require(_0xf809('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xf809('0x6'));var logger=require(_0xf809('0x7'))('rpc');var config=require(_0xf809('0x8'));var jayson=require(_0xf809('0x9'));var client=jayson[_0xf809('0xa')]['http']({'port':0x232a});config[_0xf809('0xb')]=_[_0xf809('0xc')](config['redis'],{'host':_0xf809('0xd'),'port':0x18eb});var socket=require(_0xf809('0xe'))(new Redis(config[_0xf809('0xb')]));require(_0xf809('0xf'))[_0xf809('0x10')](socket);function respondWithRpcPromise(_0x2f8f8b,_0x41fb2a,_0x1026d5){return new BPromise(function(_0xe4c6f1,_0x51829b){return client[_0xf809('0x11')](_0x2f8f8b,_0x1026d5)[_0xf809('0x12')](function(_0x3384de){logger['info'](_0xf809('0x13'),_0x41fb2a,_0xf809('0x14'));logger[_0xf809('0x15')](_0xf809('0x16'),_0x41fb2a,_0xf809('0x14'),JSON[_0xf809('0x17')](_0x3384de));if(_0x3384de[_0xf809('0x18')]){if(_0x3384de[_0xf809('0x18')]['code']===0x1f4){logger[_0xf809('0x18')](_0xf809('0x13'),_0x41fb2a,_0x3384de[_0xf809('0x18')][_0xf809('0x19')]);return _0x51829b(_0x3384de['error']['message']);}logger['error'](_0xf809('0x13'),_0x41fb2a,_0x3384de[_0xf809('0x18')][_0xf809('0x19')]);return _0xe4c6f1(_0x3384de['error']['message']);}else{logger['info'](_0xf809('0x13'),_0x41fb2a,_0xf809('0x14'));_0xe4c6f1(_0x3384de[_0xf809('0x1a')][_0xf809('0x19')]);}})[_0xf809('0x1b')](function(_0x31638c){logger[_0xf809('0x18')](_0xf809('0x13'),_0x41fb2a,_0x31638c);_0x51829b(_0x31638c);});});}exports['GetVoiceQueue']=function(_0x189f25){var _0x2e4f4d=this;return new Promise(function(_0x3fb3a7,_0x29c523){return db['VoiceQueue'][_0xf809('0x1c')]({'raw':_0x189f25[_0xf809('0x1d')]?_0x189f25[_0xf809('0x1d')][_0xf809('0x1e')]===undefined?!![]:![]:!![],'where':_0x189f25[_0xf809('0x1d')]?_0x189f25[_0xf809('0x1d')][_0xf809('0x1f')]||null:null,'attributes':_0x189f25['options']?_0x189f25[_0xf809('0x1d')][_0xf809('0x20')]||null:null,'limit':_0x189f25['options']?_0x189f25['options'][_0xf809('0x21')]||null:null,'include':_0x189f25[_0xf809('0x1d')]?_0x189f25['options']['include']?_[_0xf809('0x22')](_0x189f25[_0xf809('0x1d')][_0xf809('0x23')],function(_0x521691){return{'model':db[_0x521691[_0xf809('0x24')]],'as':_0x521691['as'],'attributes':_0x521691['attributes'],'include':_0x521691[_0xf809('0x23')]?_[_0xf809('0x22')](_0x521691[_0xf809('0x23')],function(_0x88fe1b){return{'model':db[_0x88fe1b[_0xf809('0x24')]],'as':_0x88fe1b['as'],'attributes':_0x88fe1b[_0xf809('0x20')],'include':_0x88fe1b['include']?_['map'](_0x88fe1b[_0xf809('0x23')],function(_0x54e6f6){return{'model':db[_0x54e6f6[_0xf809('0x24')]],'as':_0x54e6f6['as'],'attributes':_0x54e6f6[_0xf809('0x20')]};}):[]};}):[]};}):[]:[]})[_0xf809('0x12')](function(_0x12ccc1){logger[_0xf809('0x25')](_0xf809('0x26'),_0x189f25);logger[_0xf809('0x15')]('GetVoiceQueue',_0x189f25,JSON[_0xf809('0x17')](_0x12ccc1));_0x3fb3a7(_0x12ccc1);})[_0xf809('0x1b')](function(_0x596d26){logger['error'](_0xf809('0x26'),_0x596d26[_0xf809('0x19')],_0x189f25);_0x29c523(_0x2e4f4d[_0xf809('0x18')](0x1f4,_0x596d26[_0xf809('0x19')]));});});};exports[_0xf809('0x27')]=function(_0x5391c2){var _0x4f9944=this;return new Promise(function(_0x48c5bf,_0x2d67ed){return db['VoiceQueue'][_0xf809('0x28')]({'raw':_0x5391c2['options']?_0x5391c2[_0xf809('0x1d')][_0xf809('0x1e')]===undefined?!![]:![]:!![],'where':_0x5391c2[_0xf809('0x1d')]?_0x5391c2[_0xf809('0x1d')][_0xf809('0x1f')]||null:null,'attributes':_0x5391c2['options']?_0x5391c2[_0xf809('0x1d')][_0xf809('0x20')]||null:null,'include':_0x5391c2[_0xf809('0x1d')]?_0x5391c2[_0xf809('0x1d')][_0xf809('0x23')]?_['map'](_0x5391c2[_0xf809('0x1d')][_0xf809('0x23')],function(_0x4aa0a4){return{'model':db[_0x4aa0a4[_0xf809('0x24')]],'as':_0x4aa0a4['as'],'attributes':_0x4aa0a4[_0xf809('0x20')],'include':_0x4aa0a4[_0xf809('0x23')]?_[_0xf809('0x22')](_0x4aa0a4['include'],function(_0x25f401){return{'model':db[_0x25f401['model']],'as':_0x25f401['as'],'attributes':_0x25f401[_0xf809('0x20')],'include':_0x25f401[_0xf809('0x23')]?_[_0xf809('0x22')](_0x25f401[_0xf809('0x23')],function(_0xd9f1f1){return{'model':db[_0xd9f1f1[_0xf809('0x24')]],'as':_0xd9f1f1['as'],'attributes':_0xd9f1f1[_0xf809('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3b9243){logger[_0xf809('0x25')](_0xf809('0x27'),_0x5391c2);logger['debug'](_0xf809('0x27'),_0x5391c2,JSON[_0xf809('0x17')](_0x3b9243));_0x48c5bf(_0x3b9243);})[_0xf809('0x1b')](function(_0x5c4ab2){logger[_0xf809('0x18')](_0xf809('0x27'),_0x5c4ab2['message'],_0x5391c2);_0x2d67ed(_0x4f9944[_0xf809('0x18')](0x1f4,_0x5c4ab2['message']));});});};
\ No newline at end of file
index a88b37c..182586b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb88a=['save','remove','update','emit','removeListener','register','length','voiceQueue:','./voiceQueue.events'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0xb88a,0x8f));var _0xab88=function(_0x10de99,_0xdd42d){_0x10de99=_0x10de99-0x0;var _0x8550e5=_0xb88a[_0x10de99];return _0x8550e5;};'use strict';var VoiceQueueEvents=require(_0xab88('0x0'));var events=[_0xab88('0x1'),_0xab88('0x2'),_0xab88('0x3')];function createListener(_0x34fc81,_0x259364){return function(_0x41c17b){_0x259364[_0xab88('0x4')](_0x34fc81,_0x41c17b);};}function removeListener(_0x3e3ec4,_0x4ad474){return function(){VoiceQueueEvents[_0xab88('0x5')](_0x3e3ec4,_0x4ad474);};}exports[_0xab88('0x6')]=function(_0x4eff7c){for(var _0x2f7d42=0x0,_0x3d9558=events[_0xab88('0x7')];_0x2f7d42<_0x3d9558;_0x2f7d42++){var _0x28b84a=events[_0x2f7d42];var _0x5a36cf=createListener(_0xab88('0x8')+_0x28b84a,_0x4eff7c);VoiceQueueEvents['on'](_0x28b84a,_0x5a36cf);}};
\ No newline at end of file
+var _0xaf52=['removeListener','register','length','voiceQueue:','./voiceQueue.events','remove','update','emit'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0xaf52,0x1ac));var _0x2af5=function(_0x40c630,_0x35863d){_0x40c630=_0x40c630-0x0;var _0x5579f6=_0xaf52[_0x40c630];return _0x5579f6;};'use strict';var VoiceQueueEvents=require(_0x2af5('0x0'));var events=['save',_0x2af5('0x1'),_0x2af5('0x2')];function createListener(_0x57ecab,_0x236918){return function(_0x35ca37){_0x236918[_0x2af5('0x3')](_0x57ecab,_0x35ca37);};}function removeListener(_0x47a070,_0x451cfc){return function(){VoiceQueueEvents[_0x2af5('0x4')](_0x47a070,_0x451cfc);};}exports[_0x2af5('0x5')]=function(_0x35168d){for(var _0x3616d5=0x0,_0x241579=events[_0x2af5('0x6')];_0x3616d5<_0x241579;_0x3616d5++){var _0x3ffe17=events[_0x3616d5];var _0x269e41=createListener(_0x2af5('0x7')+_0x3ffe17,_0x35168d);VoiceQueueEvents['on'](_0x3ffe17,_0x269e41);}};
\ No newline at end of file
index 29f1a24..cca846f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc532=['show','post','create','update','delete','destroy','multer','path','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x1e1fe9,_0x216dd9){var _0x4eeb06=function(_0x3c69c2){while(--_0x3c69c2){_0x1e1fe9['push'](_0x1e1fe9['shift']());}};_0x4eeb06(++_0x216dd9);}(_0xc532,0x1ec));var _0x2c53=function(_0x584f8a,_0x1d4604){_0x584f8a=_0x584f8a-0x0;var _0x214665=_0xc532[_0x584f8a];return _0x214665;};'use strict';var multer=require(_0x2c53('0x0'));var util=require('util');var path=require(_0x2c53('0x1'));var timeout=require('connect-timeout');var express=require(_0x2c53('0x2'));var router=express[_0x2c53('0x3')]();var fs_extra=require(_0x2c53('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x2c53('0x5'));var config=require('../../config/environment');var controller=require('./voiceQueueReport.controller');router[_0x2c53('0x6')]('/',auth[_0x2c53('0x7')](),controller[_0x2c53('0x8')]);router[_0x2c53('0x6')](_0x2c53('0x9'),auth['isAuthenticated'](),controller[_0x2c53('0xa')]);router[_0x2c53('0x6')]('/index',auth[_0x2c53('0x7')](),controller['getVoiceQueuesReport']);router[_0x2c53('0x6')](_0x2c53('0xb'),auth['isAuthenticated'](),controller[_0x2c53('0xc')]);router[_0x2c53('0xd')]('/',auth[_0x2c53('0x7')](),controller[_0x2c53('0xe')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x2c53('0xf')]);router[_0x2c53('0x10')](_0x2c53('0xb'),auth[_0x2c53('0x7')](),controller[_0x2c53('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x7b9c=['/:id','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceQueueReport.controller','/describe','isAuthenticated','get','/index','show','post','put'];(function(_0x140f9d,_0x260908){var _0x1ad88a=function(_0x3d1fca){while(--_0x3d1fca){_0x140f9d['push'](_0x140f9d['shift']());}};_0x1ad88a(++_0x260908);}(_0x7b9c,0x194));var _0xc7b9=function(_0x143f66,_0xc137ba){_0x143f66=_0x143f66-0x0;var _0x52a5f3=_0x7b9c[_0x143f66];return _0x52a5f3;};'use strict';var multer=require(_0xc7b9('0x0'));var util=require('util');var path=require(_0xc7b9('0x1'));var timeout=require(_0xc7b9('0x2'));var express=require(_0xc7b9('0x3'));var router=express[_0xc7b9('0x4')]();var fs_extra=require(_0xc7b9('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xc7b9('0x6'));var config=require(_0xc7b9('0x7'));var controller=require(_0xc7b9('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xc7b9('0x9'),auth[_0xc7b9('0xa')](),controller['describe']);router[_0xc7b9('0xb')](_0xc7b9('0xc'),auth[_0xc7b9('0xa')](),controller['getVoiceQueuesReport']);router[_0xc7b9('0xb')]('/:id',auth[_0xc7b9('0xa')](),controller[_0xc7b9('0xd')]);router[_0xc7b9('0xe')]('/',auth[_0xc7b9('0xa')](),controller['create']);router[_0xc7b9('0xf')](_0xc7b9('0x10'),auth[_0xc7b9('0xa')](),controller[_0xc7b9('0x11')]);router[_0xc7b9('0x12')](_0xc7b9('0x10'),auth['isAuthenticated'](),controller[_0xc7b9('0x13')]);module[_0xc7b9('0x14')]=router;
\ No newline at end of file
index d566307..2c0313f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cd9=['holdtime','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','INTEGER','sequelize','moment','STRING','DATE','getDataValue','format','YYYY-MM-DD\x20HH:mm:ss','diff','seconds','setDataValue','queuecallerleaveAt'];(function(_0x239890,_0x3a98e5){var _0x177d3e=function(_0x4b66ce){while(--_0x4b66ce){_0x239890['push'](_0x239890['shift']());}};_0x177d3e(++_0x3a98e5);}(_0x6cd9,0x1f3));var _0x96cd=function(_0x46c886,_0x20f323){_0x46c886=_0x46c886-0x0;var _0x234d9c=_0x6cd9[_0x46c886];return _0x234d9c;};'use strict';var Sequelize=require(_0x96cd('0x0'));var moment=require(_0x96cd('0x1'));module['exports']={'type':{'type':Sequelize[_0x96cd('0x2')]},'uniqueid':{'type':Sequelize[_0x96cd('0x2')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x96cd('0x2')]},'queuecallerjoinAt':{'type':Sequelize[_0x96cd('0x3')]},'queuecallerleaveAt':{'type':Sequelize[_0x96cd('0x3')],'set':function(_0x45763a){var _0x40d257=moment(_0x45763a);var _0x480c92=moment(this[_0x96cd('0x4')]('queuecallerjoinAt'))[_0x96cd('0x5')](_0x96cd('0x6'));var _0x42452e=_0x40d257[_0x96cd('0x7')](_0x480c92,_0x96cd('0x8'));this[_0x96cd('0x9')](_0x96cd('0xa'),_0x45763a);this[_0x96cd('0x9')](_0x96cd('0xb'),_0x42452e||null);}},'position':{'type':Sequelize['INTEGER']},'count':{'type':Sequelize['INTEGER']},'queuecallerabandon':{'type':Sequelize[_0x96cd('0xc')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x96cd('0x3')]},'queuecallercomplete':{'type':Sequelize[_0x96cd('0xc')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x96cd('0x3')]},'queuecallerexit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x96cd('0x3')]},'queuecallerexitreason':{'type':Sequelize[_0x96cd('0x2')],'comment':_0x96cd('0xd')},'originalposition':{'type':Sequelize[_0x96cd('0xe')]},'channel':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x96cd('0x2')]},'connectedlinename':{'type':Sequelize[_0x96cd('0x2')]},'accountcode':{'type':Sequelize[_0x96cd('0x2')]},'context':{'type':Sequelize[_0x96cd('0x2')]},'exten':{'type':Sequelize[_0x96cd('0x2')]},'priority':{'type':Sequelize[_0x96cd('0x2')]},'holdtime':{'type':Sequelize[_0x96cd('0xe')]},'mohtime':{'type':Sequelize[_0x96cd('0xe')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x96cd('0xc')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0x96cd('0xc')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x96cd('0x2')],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize['STRING']},'transferuniqueid':{'type':Sequelize[_0x96cd('0x2')]},'disposition':{'type':Sequelize[_0x96cd('0x2')]},'secondDisposition':{'type':Sequelize[_0x96cd('0x2')]},'thirdDisposition':{'type':Sequelize[_0x96cd('0x2')]},'queuecallerenterreason':{'type':Sequelize[_0x96cd('0xe')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x0962=['moment','exports','STRING','DATE','getDataValue','format','YYYY-MM-DD\x20HH:mm:ss','diff','setDataValue','holdtime','INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED'];(function(_0x72ee00,_0x4f9a0c){var _0x4da881=function(_0x5f1dc2){while(--_0x5f1dc2){_0x72ee00['push'](_0x72ee00['shift']());}};_0x4da881(++_0x4f9a0c);}(_0x0962,0xd0));var _0x2096=function(_0x47d6a9,_0x32de4b){_0x47d6a9=_0x47d6a9-0x0;var _0x11c430=_0x0962[_0x47d6a9];return _0x11c430;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x2096('0x0'));module[_0x2096('0x1')]={'type':{'type':Sequelize[_0x2096('0x2')]},'uniqueid':{'type':Sequelize[_0x2096('0x2')]},'calleridnum':{'type':Sequelize[_0x2096('0x2')]},'calleridname':{'type':Sequelize[_0x2096('0x2')]},'queue':{'type':Sequelize[_0x2096('0x2')]},'queuecallerjoinAt':{'type':Sequelize[_0x2096('0x3')]},'queuecallerleaveAt':{'type':Sequelize[_0x2096('0x3')],'set':function(_0x462ba3){var _0x3a78c3=moment(_0x462ba3);var _0x209f36=moment(this[_0x2096('0x4')]('queuecallerjoinAt'))[_0x2096('0x5')](_0x2096('0x6'));var _0x13bf44=_0x3a78c3[_0x2096('0x7')](_0x209f36,'seconds');this[_0x2096('0x8')]('queuecallerleaveAt',_0x462ba3);this[_0x2096('0x8')](_0x2096('0x9'),_0x13bf44||null);}},'position':{'type':Sequelize['INTEGER']},'count':{'type':Sequelize[_0x2096('0xa')]},'queuecallerabandon':{'type':Sequelize[_0x2096('0xb')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x2096('0x3')]},'queuecallercomplete':{'type':Sequelize[_0x2096('0xb')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize['DATE']},'queuecallerexit':{'type':Sequelize[_0x2096('0xb')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x2096('0x3')]},'queuecallerexitreason':{'type':Sequelize[_0x2096('0x2')],'comment':'COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT'},'originalposition':{'type':Sequelize[_0x2096('0xa')]},'channel':{'type':Sequelize[_0x2096('0x2')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0x2096('0x2')]},'accountcode':{'type':Sequelize[_0x2096('0x2')]},'context':{'type':Sequelize[_0x2096('0x2')]},'exten':{'type':Sequelize[_0x2096('0x2')]},'priority':{'type':Sequelize[_0x2096('0x2')]},'holdtime':{'type':Sequelize[_0x2096('0xa')]},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x2096('0xb')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0x2096('0x2')]},'transfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x2096('0x2')],'comment':_0x2096('0xc')},'transferexten':{'type':Sequelize[_0x2096('0x2')]},'transferuniqueid':{'type':Sequelize[_0x2096('0x2')]},'disposition':{'type':Sequelize[_0x2096('0x2')]},'secondDisposition':{'type':Sequelize[_0x2096('0x2')]},'thirdDisposition':{'type':Sequelize[_0x2096('0x2')]},'queuecallerenterreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 65e96bb..3596b56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7d5=['length','hasOwnProperty','nolimit','limit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','describe','getVoiceQueuesReport','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','crypto','ioredis','../../components/auth/service','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','register','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','sendStatus','error','stack','name','send','index','map','VoiceQueueReport','type','key','model','query','filters','intersection','attributes','fields'];(function(_0x56ebe6,_0x5cd53b){var _0x2f5cf9=function(_0x3516af){while(--_0x3516af){_0x56ebe6['push'](_0x56ebe6['shift']());}};_0x2f5cf9(++_0x5cd53b);}(_0xa7d5,0xff));var _0x5a7d=function(_0x3dc727,_0x129aa5){_0x3dc727=_0x3dc727-0x0;var _0xc6fd01=_0xa7d5[_0x3dc727];return _0xc6fd01;};'use strict';var emlformat=require(_0x5a7d('0x0'));var rimraf=require(_0x5a7d('0x1'));var zipdir=require(_0x5a7d('0x2'));var jsonpatch=require(_0x5a7d('0x3'));var rp=require(_0x5a7d('0x4'));var moment=require(_0x5a7d('0x5'));var BPromise=require(_0x5a7d('0x6'));var Mustache=require(_0x5a7d('0x7'));var util=require('util');var path=require(_0x5a7d('0x8'));var sox=require(_0x5a7d('0x9'));var csv=require(_0x5a7d('0xa'));var ejs=require(_0x5a7d('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x5a7d('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x5a7d('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x5a7d('0xd'));var authService=require(_0x5a7d('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5a7d('0xf'));var logger=require('../../config/logger')('api');var utils=require(_0x5a7d('0x10'));var config=require(_0x5a7d('0x11'));var licenseUtil=require(_0x5a7d('0x12'));var db=require(_0x5a7d('0x13'))['db'];config[_0x5a7d('0x14')]=_[_0x5a7d('0x15')](config[_0x5a7d('0x14')],{'host':'localhost','port':0x18eb});var socket=require(_0x5a7d('0x16'))(new Redis(config[_0x5a7d('0x14')]));require('./voiceQueueReport.socket')[_0x5a7d('0x17')](socket);function respondWithStatusCode(_0x2a8538,_0x2a40f2){_0x2a40f2=_0x2a40f2||0xcc;return function(_0x9af783){if(_0x9af783){return _0x2a8538['sendStatus'](_0x2a40f2);}return _0x2a8538[_0x5a7d('0x18')](_0x2a40f2)[_0x5a7d('0x19')]();};}function respondWithResult(_0x5c6921,_0x377f1c){_0x377f1c=_0x377f1c||0xc8;return function(_0x5b034d){if(_0x5b034d){return _0x5c6921[_0x5a7d('0x18')](_0x377f1c)[_0x5a7d('0x1a')](_0x5b034d);}};}function respondWithFilteredResult(_0x5aaf11,_0x4e3b2c){return function(_0x13faf8){if(_0x13faf8){var _0xe24d8e=typeof _0x4e3b2c[_0x5a7d('0x1b')]===_0x5a7d('0x1c')&&typeof _0x4e3b2c['limit']===_0x5a7d('0x1c');var _0xcfe838=_0x13faf8[_0x5a7d('0x1d')];var _0x12010c=_0xe24d8e?0x0:_0x4e3b2c[_0x5a7d('0x1b')];var _0x237319=_0xe24d8e?_0x13faf8['count']:_0x4e3b2c[_0x5a7d('0x1b')]+_0x4e3b2c['limit'];var _0xde47f8;if(_0x237319>=_0xcfe838){_0x237319=_0xcfe838;_0xde47f8=0xc8;}else{_0xde47f8=0xce;}_0x5aaf11[_0x5a7d('0x18')](_0xde47f8);return _0x5aaf11[_0x5a7d('0x1e')](_0x5a7d('0x1f'),_0x12010c+'-'+_0x237319+'/'+_0xcfe838)['json'](_0x13faf8);}return null;};}function patchUpdates(_0x5bdcd1){return function(_0x502d8b){try{jsonpatch[_0x5a7d('0x20')](_0x502d8b,_0x5bdcd1,!![]);}catch(_0x30a7cd){return BPromise[_0x5a7d('0x21')](_0x30a7cd);}return _0x502d8b[_0x5a7d('0x22')]();};}function saveUpdates(_0xc0a67d,_0x585590){return function(_0x3de8d3){if(_0x3de8d3){return _0x3de8d3[_0x5a7d('0x23')](_0xc0a67d)[_0x5a7d('0x24')](function(_0x544ee4){return _0x544ee4;});}return null;};}function removeEntity(_0x26560b,_0xd4fbad){return function(_0x215b2f){if(_0x215b2f){return _0x215b2f['destroy']()[_0x5a7d('0x24')](function(){_0x26560b[_0x5a7d('0x18')](0xcc)[_0x5a7d('0x19')]();});}};}function handleEntityNotFound(_0x466413,_0x47fa40){return function(_0x2d15ce){if(!_0x2d15ce){_0x466413[_0x5a7d('0x25')](0x194);}return _0x2d15ce;};}function handleError(_0x2b5474,_0x4073ca){_0x4073ca=_0x4073ca||0x1f4;return function(_0x49e8df){logger[_0x5a7d('0x26')](_0x49e8df[_0x5a7d('0x27')]);if(_0x49e8df['name']){delete _0x49e8df[_0x5a7d('0x28')];}_0x2b5474[_0x5a7d('0x18')](_0x4073ca)[_0x5a7d('0x29')](_0x49e8df);};}exports[_0x5a7d('0x2a')]=function(_0x34b24b,_0x1147e1){var _0x4fb615={},_0x1add37={},_0x2899da={'count':0x0,'rows':[]};var _0x3c7183=_[_0x5a7d('0x2b')](db[_0x5a7d('0x2c')]['rawAttributes'],function(_0x5e6a2c){return{'name':_0x5e6a2c['fieldName'],'type':_0x5e6a2c[_0x5a7d('0x2d')][_0x5a7d('0x2e')]};});_0x1add37[_0x5a7d('0x2f')]=_[_0x5a7d('0x2b')](_0x3c7183,_0x5a7d('0x28'));_0x1add37['query']=_['keys'](_0x34b24b[_0x5a7d('0x30')]);_0x1add37[_0x5a7d('0x31')]=_[_0x5a7d('0x32')](_0x1add37[_0x5a7d('0x2f')],_0x1add37[_0x5a7d('0x30')]);_0x4fb615[_0x5a7d('0x33')]=_[_0x5a7d('0x32')](_0x1add37[_0x5a7d('0x2f')],qs[_0x5a7d('0x34')](_0x34b24b[_0x5a7d('0x30')]['fields']));_0x4fb615['attributes']=_0x4fb615[_0x5a7d('0x33')][_0x5a7d('0x35')]?_0x4fb615[_0x5a7d('0x33')]:_0x1add37[_0x5a7d('0x2f')];if(!_0x34b24b[_0x5a7d('0x30')][_0x5a7d('0x36')](_0x5a7d('0x37'))){_0x4fb615[_0x5a7d('0x38')]=qs['limit'](_0x34b24b['query'][_0x5a7d('0x38')]);_0x4fb615[_0x5a7d('0x1b')]=qs['offset'](_0x34b24b['query'][_0x5a7d('0x1b')]);}_0x4fb615[_0x5a7d('0x39')]=qs['sort'](_0x34b24b['query'][_0x5a7d('0x3a')]);_0x4fb615[_0x5a7d('0x3b')]=qs[_0x5a7d('0x31')](_['pick'](_0x34b24b[_0x5a7d('0x30')],_0x1add37[_0x5a7d('0x31')]),_0x3c7183);if(_0x34b24b[_0x5a7d('0x30')][_0x5a7d('0x3c')]){_0x4fb615[_0x5a7d('0x3b')]=_[_0x5a7d('0x3d')](_0x4fb615[_0x5a7d('0x3b')],{'$or':_[_0x5a7d('0x2b')](_0x3c7183,function(_0x390f26){if(_0x390f26[_0x5a7d('0x2d')]!==_0x5a7d('0x3e')){var _0x1e7924={};_0x1e7924[_0x390f26[_0x5a7d('0x28')]]={'$like':'%'+_0x34b24b[_0x5a7d('0x30')][_0x5a7d('0x3c')]+'%'};return _0x1e7924;}})});}_0x4fb615=_['merge']({},_0x4fb615,_0x34b24b[_0x5a7d('0x3f')]);var _0x317f59={'where':_0x4fb615[_0x5a7d('0x3b')]};return db[_0x5a7d('0x2c')][_0x5a7d('0x1d')](_0x317f59)[_0x5a7d('0x24')](function(_0x3d96a5){_0x2899da[_0x5a7d('0x1d')]=_0x3d96a5;if(_0x34b24b['query'][_0x5a7d('0x40')]){_0x4fb615[_0x5a7d('0x41')]=[{'all':!![]}];}return db[_0x5a7d('0x2c')][_0x5a7d('0x42')](_0x4fb615);})[_0x5a7d('0x24')](function(_0x210acd){_0x2899da[_0x5a7d('0x43')]=_0x210acd;return _0x2899da;})[_0x5a7d('0x24')](respondWithFilteredResult(_0x1147e1,_0x4fb615))[_0x5a7d('0x44')](handleError(_0x1147e1,null));};exports[_0x5a7d('0x45')]=function(_0xb14a00,_0x2469aa){var _0x54ac3c={'raw':![],'where':{'id':_0xb14a00[_0x5a7d('0x46')]['id']}},_0x550dfa={};_0x550dfa['model']=_[_0x5a7d('0x47')](db[_0x5a7d('0x2c')]['rawAttributes']);_0x550dfa[_0x5a7d('0x30')]=_['keys'](_0xb14a00[_0x5a7d('0x30')]);_0x550dfa[_0x5a7d('0x31')]=_[_0x5a7d('0x32')](_0x550dfa[_0x5a7d('0x2f')],_0x550dfa[_0x5a7d('0x30')]);_0x54ac3c[_0x5a7d('0x33')]=_[_0x5a7d('0x32')](_0x550dfa[_0x5a7d('0x2f')],qs[_0x5a7d('0x34')](_0xb14a00['query'][_0x5a7d('0x34')]));_0x54ac3c[_0x5a7d('0x33')]=_0x54ac3c[_0x5a7d('0x33')][_0x5a7d('0x35')]?_0x54ac3c[_0x5a7d('0x33')]:_0x550dfa[_0x5a7d('0x2f')];if(_0xb14a00[_0x5a7d('0x30')]['includeAll']){_0x54ac3c[_0x5a7d('0x41')]=[{'all':!![]}];}_0x54ac3c=_[_0x5a7d('0x3d')]({},_0x54ac3c,_0xb14a00[_0x5a7d('0x3f')]);return db[_0x5a7d('0x2c')][_0x5a7d('0x48')](_0x54ac3c)[_0x5a7d('0x24')](handleEntityNotFound(_0x2469aa,null))[_0x5a7d('0x24')](respondWithResult(_0x2469aa,null))['catch'](handleError(_0x2469aa,null));};exports['create']=function(_0x44f510,_0x423642){return db['VoiceQueueReport'][_0x5a7d('0x49')](_0x44f510['body'],{})[_0x5a7d('0x24')](respondWithResult(_0x423642,0xc9))[_0x5a7d('0x44')](handleError(_0x423642,null));};exports['update']=function(_0x483d3e,_0x4f90fc){if(_0x483d3e[_0x5a7d('0x4a')]['id']){delete _0x483d3e[_0x5a7d('0x4a')]['id'];}return db[_0x5a7d('0x2c')]['find']({'where':{'id':_0x483d3e[_0x5a7d('0x46')]['id']}})['then'](handleEntityNotFound(_0x4f90fc,null))[_0x5a7d('0x24')](saveUpdates(_0x483d3e[_0x5a7d('0x4a')],null))[_0x5a7d('0x24')](respondWithResult(_0x4f90fc,null))[_0x5a7d('0x44')](handleError(_0x4f90fc,null));};exports['destroy']=function(_0x2579f5,_0x4c1342){return db['VoiceQueueReport']['find']({'where':{'id':_0x2579f5[_0x5a7d('0x46')]['id']}})[_0x5a7d('0x24')](handleEntityNotFound(_0x4c1342,null))['then'](removeEntity(_0x4c1342,null))['catch'](handleError(_0x4c1342,null));};exports[_0x5a7d('0x4b')]=function(_0x3dca68,_0x2ebd6d){return db[_0x5a7d('0x2c')][_0x5a7d('0x4b')]()[_0x5a7d('0x24')](respondWithResult(_0x2ebd6d,null))[_0x5a7d('0x44')](handleError(_0x2ebd6d,null));};exports[_0x5a7d('0x4c')]=function(_0x13e25d,_0x2ee80f){var _0x17a696={},_0x4e58c5={},_0x5cd8d4={'count':0x0,'rows':[]};_0x4e58c5[_0x5a7d('0x2f')]=_[_0x5a7d('0x47')](db[_0x5a7d('0x2c')]['rawAttributes']);_0x4e58c5[_0x5a7d('0x30')]=_['keys'](_0x13e25d[_0x5a7d('0x30')]);_0x4e58c5[_0x5a7d('0x31')]=_[_0x5a7d('0x32')](_0x4e58c5[_0x5a7d('0x2f')],_0x4e58c5['query']);_0x17a696[_0x5a7d('0x33')]=_[_0x5a7d('0x32')](_0x4e58c5['model'],qs[_0x5a7d('0x34')](_0x13e25d[_0x5a7d('0x30')][_0x5a7d('0x34')]));_0x17a696['attributes']=_0x17a696[_0x5a7d('0x33')]['length']?_0x17a696['attributes']:_0x4e58c5[_0x5a7d('0x2f')];if(!_0x13e25d[_0x5a7d('0x30')][_0x5a7d('0x36')]('nolimit')){_0x17a696[_0x5a7d('0x38')]=qs['limit'](_0x13e25d[_0x5a7d('0x30')]['limit']);_0x17a696['offset']=qs[_0x5a7d('0x1b')](_0x13e25d['query'][_0x5a7d('0x1b')]);}_0x17a696[_0x5a7d('0x39')]=qs['sort'](_0x13e25d['query']['sort']);_0x17a696['where']=qs[_0x5a7d('0x31')](_['pick'](_0x13e25d['query'],_0x4e58c5[_0x5a7d('0x31')]));if(_0x13e25d['query'][_0x5a7d('0x3c')]){_0x17a696['where']=_[_0x5a7d('0x3d')](_0x17a696[_0x5a7d('0x3b')],{'$or':_[_0x5a7d('0x2b')](_0x17a696['attributes'],function(_0x3f89bd){var _0x53fc7c={};_0x53fc7c[_0x3f89bd]={'$like':'%'+_0x13e25d[_0x5a7d('0x30')][_0x5a7d('0x3c')]+'%'};return _0x53fc7c;})});}_0x17a696=_['merge']({},_0x17a696,_0x13e25d[_0x5a7d('0x3f')]);var _0x21d456={'where':_0x17a696['where']};return db[_0x5a7d('0x2c')][_0x5a7d('0x1d')](_0x21d456)['then'](function(_0x1142ad){_0x5cd8d4[_0x5a7d('0x1d')]=_0x1142ad;if(_0x13e25d[_0x5a7d('0x30')][_0x5a7d('0x40')]){_0x17a696[_0x5a7d('0x41')]=[{'all':!![]}];}return db[_0x5a7d('0x2c')][_0x5a7d('0x42')](_0x17a696);})[_0x5a7d('0x24')](function(_0x174948){_0x5cd8d4[_0x5a7d('0x43')]=_0x174948;return _0x5cd8d4;})[_0x5a7d('0x24')](respondWithFilteredResult(_0x2ee80f,_0x17a696,_0x5a7d('0x4c')))[_0x5a7d('0x44')](handleError(_0x2ee80f,null,_0x5a7d('0x4c')));};
\ No newline at end of file
+var _0x0d02=['offset','set','apply','reject','save','update','then','destroy','end','stack','name','send','index','VoiceQueueReport','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','length','find','create','body','describe','nolimit','rows','getVoiceQueuesReport','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','sendStatus','status','json','undefined','count'];(function(_0x532b76,_0x29338c){var _0x387b9c=function(_0x13798c){while(--_0x13798c){_0x532b76['push'](_0x532b76['shift']());}};_0x387b9c(++_0x29338c);}(_0x0d02,0xd4));var _0x20d0=function(_0x2b2455,_0x451090){_0x2b2455=_0x2b2455-0x0;var _0x15f8dc=_0x0d02[_0x2b2455];return _0x15f8dc;};'use strict';var emlformat=require(_0x20d0('0x0'));var rimraf=require(_0x20d0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x20d0('0x2'));var rp=require(_0x20d0('0x3'));var moment=require(_0x20d0('0x4'));var BPromise=require(_0x20d0('0x5'));var Mustache=require(_0x20d0('0x6'));var util=require(_0x20d0('0x7'));var path=require('path');var sox=require(_0x20d0('0x8'));var csv=require(_0x20d0('0x9'));var ejs=require(_0x20d0('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(_0x20d0('0xb'));var deskjs=require(_0x20d0('0xc'));var toCsv=require(_0x20d0('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x20d0('0xd'));var authService=require(_0x20d0('0xe'));var qs=require(_0x20d0('0xf'));var as=require(_0x20d0('0x10'));var hardwareService=require(_0x20d0('0x11'));var logger=require(_0x20d0('0x12'))(_0x20d0('0x13'));var utils=require(_0x20d0('0x14'));var config=require(_0x20d0('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x20d0('0x16'))['db'];config[_0x20d0('0x17')]=_[_0x20d0('0x18')](config[_0x20d0('0x17')],{'host':_0x20d0('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./voiceQueueReport.socket')['register'](socket);function respondWithStatusCode(_0x407396,_0x41d217){_0x41d217=_0x41d217||0xcc;return function(_0x3e323f){if(_0x3e323f){return _0x407396[_0x20d0('0x1a')](_0x41d217);}return _0x407396['status'](_0x41d217)['end']();};}function respondWithResult(_0x40d62d,_0x4c23d8){_0x4c23d8=_0x4c23d8||0xc8;return function(_0x435659){if(_0x435659){return _0x40d62d[_0x20d0('0x1b')](_0x4c23d8)[_0x20d0('0x1c')](_0x435659);}};}function respondWithFilteredResult(_0xd7c33d,_0x194af4){return function(_0x5975f6){if(_0x5975f6){var _0x4387f4=typeof _0x194af4['offset']===_0x20d0('0x1d')&&typeof _0x194af4['limit']==='undefined';var _0x4201fe=_0x5975f6[_0x20d0('0x1e')];var _0x46822a=_0x4387f4?0x0:_0x194af4['offset'];var _0x231dd4=_0x4387f4?_0x5975f6[_0x20d0('0x1e')]:_0x194af4[_0x20d0('0x1f')]+_0x194af4['limit'];var _0x134f0f;if(_0x231dd4>=_0x4201fe){_0x231dd4=_0x4201fe;_0x134f0f=0xc8;}else{_0x134f0f=0xce;}_0xd7c33d[_0x20d0('0x1b')](_0x134f0f);return _0xd7c33d[_0x20d0('0x20')]('Content-Range',_0x46822a+'-'+_0x231dd4+'/'+_0x4201fe)['json'](_0x5975f6);}return null;};}function patchUpdates(_0xdb14ae){return function(_0x3fdd4d){try{jsonpatch[_0x20d0('0x21')](_0x3fdd4d,_0xdb14ae,!![]);}catch(_0x352cf2){return BPromise[_0x20d0('0x22')](_0x352cf2);}return _0x3fdd4d[_0x20d0('0x23')]();};}function saveUpdates(_0x4fea9b,_0xcd12f1){return function(_0x10c413){if(_0x10c413){return _0x10c413[_0x20d0('0x24')](_0x4fea9b)[_0x20d0('0x25')](function(_0x1e6642){return _0x1e6642;});}return null;};}function removeEntity(_0x3af4f2,_0x3513fb){return function(_0x3b1441){if(_0x3b1441){return _0x3b1441[_0x20d0('0x26')]()[_0x20d0('0x25')](function(){_0x3af4f2[_0x20d0('0x1b')](0xcc)[_0x20d0('0x27')]();});}};}function handleEntityNotFound(_0x28bd59,_0xac0d53){return function(_0x345ddb){if(!_0x345ddb){_0x28bd59[_0x20d0('0x1a')](0x194);}return _0x345ddb;};}function handleError(_0x5f20de,_0x551c02){_0x551c02=_0x551c02||0x1f4;return function(_0x7dd724){logger['error'](_0x7dd724[_0x20d0('0x28')]);if(_0x7dd724[_0x20d0('0x29')]){delete _0x7dd724['name'];}_0x5f20de['status'](_0x551c02)[_0x20d0('0x2a')](_0x7dd724);};}exports[_0x20d0('0x2b')]=function(_0x3bd9d8,_0x5fdec4){var _0xf976a4={},_0x428373={},_0x108003={'count':0x0,'rows':[]};var _0x40a58d=_['map'](db[_0x20d0('0x2c')][_0x20d0('0x2d')],function(_0x5569b7){return{'name':_0x5569b7[_0x20d0('0x2e')],'type':_0x5569b7[_0x20d0('0x2f')][_0x20d0('0x30')]};});_0x428373['model']=_[_0x20d0('0x31')](_0x40a58d,_0x20d0('0x29'));_0x428373[_0x20d0('0x32')]=_[_0x20d0('0x33')](_0x3bd9d8[_0x20d0('0x32')]);_0x428373[_0x20d0('0x34')]=_[_0x20d0('0x35')](_0x428373[_0x20d0('0x36')],_0x428373[_0x20d0('0x32')]);_0xf976a4[_0x20d0('0x37')]=_[_0x20d0('0x35')](_0x428373[_0x20d0('0x36')],qs['fields'](_0x3bd9d8[_0x20d0('0x32')][_0x20d0('0x38')]));_0xf976a4[_0x20d0('0x37')]=_0xf976a4[_0x20d0('0x37')]['length']?_0xf976a4['attributes']:_0x428373['model'];if(!_0x3bd9d8[_0x20d0('0x32')][_0x20d0('0x39')]('nolimit')){_0xf976a4['limit']=qs['limit'](_0x3bd9d8['query'][_0x20d0('0x3a')]);_0xf976a4[_0x20d0('0x1f')]=qs[_0x20d0('0x1f')](_0x3bd9d8[_0x20d0('0x32')]['offset']);}_0xf976a4[_0x20d0('0x3b')]=qs[_0x20d0('0x3c')](_0x3bd9d8[_0x20d0('0x32')][_0x20d0('0x3c')]);_0xf976a4[_0x20d0('0x3d')]=qs[_0x20d0('0x34')](_[_0x20d0('0x3e')](_0x3bd9d8[_0x20d0('0x32')],_0x428373[_0x20d0('0x34')]),_0x40a58d);if(_0x3bd9d8[_0x20d0('0x32')][_0x20d0('0x3f')]){_0xf976a4['where']=_[_0x20d0('0x40')](_0xf976a4['where'],{'$or':_[_0x20d0('0x31')](_0x40a58d,function(_0x4beaac){if(_0x4beaac[_0x20d0('0x2f')]!==_0x20d0('0x41')){var _0x4c9638={};_0x4c9638[_0x4beaac[_0x20d0('0x29')]]={'$like':'%'+_0x3bd9d8[_0x20d0('0x32')]['filter']+'%'};return _0x4c9638;}})});}_0xf976a4=_['merge']({},_0xf976a4,_0x3bd9d8[_0x20d0('0x42')]);var _0x2338f0={'where':_0xf976a4[_0x20d0('0x3d')]};return db[_0x20d0('0x2c')][_0x20d0('0x1e')](_0x2338f0)[_0x20d0('0x25')](function(_0x2ce930){_0x108003[_0x20d0('0x1e')]=_0x2ce930;if(_0x3bd9d8['query'][_0x20d0('0x43')]){_0xf976a4[_0x20d0('0x44')]=[{'all':!![]}];}return db[_0x20d0('0x2c')][_0x20d0('0x45')](_0xf976a4);})['then'](function(_0x1ae0cf){_0x108003['rows']=_0x1ae0cf;return _0x108003;})['then'](respondWithFilteredResult(_0x5fdec4,_0xf976a4))[_0x20d0('0x46')](handleError(_0x5fdec4,null));};exports[_0x20d0('0x47')]=function(_0x361af8,_0x112cc7){var _0x56b5b8={'raw':![],'where':{'id':_0x361af8[_0x20d0('0x48')]['id']}},_0xa1f3fd={};_0xa1f3fd[_0x20d0('0x36')]=_[_0x20d0('0x33')](db[_0x20d0('0x2c')]['rawAttributes']);_0xa1f3fd['query']=_['keys'](_0x361af8['query']);_0xa1f3fd['filters']=_[_0x20d0('0x35')](_0xa1f3fd['model'],_0xa1f3fd['query']);_0x56b5b8[_0x20d0('0x37')]=_[_0x20d0('0x35')](_0xa1f3fd['model'],qs[_0x20d0('0x38')](_0x361af8[_0x20d0('0x32')][_0x20d0('0x38')]));_0x56b5b8[_0x20d0('0x37')]=_0x56b5b8[_0x20d0('0x37')][_0x20d0('0x49')]?_0x56b5b8[_0x20d0('0x37')]:_0xa1f3fd[_0x20d0('0x36')];if(_0x361af8[_0x20d0('0x32')]['includeAll']){_0x56b5b8[_0x20d0('0x44')]=[{'all':!![]}];}_0x56b5b8=_[_0x20d0('0x40')]({},_0x56b5b8,_0x361af8['options']);return db['VoiceQueueReport'][_0x20d0('0x4a')](_0x56b5b8)[_0x20d0('0x25')](handleEntityNotFound(_0x112cc7,null))[_0x20d0('0x25')](respondWithResult(_0x112cc7,null))['catch'](handleError(_0x112cc7,null));};exports[_0x20d0('0x4b')]=function(_0x4dbb3e,_0x531e47){return db[_0x20d0('0x2c')][_0x20d0('0x4b')](_0x4dbb3e[_0x20d0('0x4c')],{})['then'](respondWithResult(_0x531e47,0xc9))[_0x20d0('0x46')](handleError(_0x531e47,null));};exports[_0x20d0('0x24')]=function(_0x5cd48b,_0x30095c){if(_0x5cd48b['body']['id']){delete _0x5cd48b[_0x20d0('0x4c')]['id'];}return db[_0x20d0('0x2c')][_0x20d0('0x4a')]({'where':{'id':_0x5cd48b[_0x20d0('0x48')]['id']}})[_0x20d0('0x25')](handleEntityNotFound(_0x30095c,null))['then'](saveUpdates(_0x5cd48b[_0x20d0('0x4c')],null))[_0x20d0('0x25')](respondWithResult(_0x30095c,null))['catch'](handleError(_0x30095c,null));};exports[_0x20d0('0x26')]=function(_0x509dcd,_0x406d49){return db[_0x20d0('0x2c')]['find']({'where':{'id':_0x509dcd['params']['id']}})['then'](handleEntityNotFound(_0x406d49,null))['then'](removeEntity(_0x406d49,null))[_0x20d0('0x46')](handleError(_0x406d49,null));};exports[_0x20d0('0x4d')]=function(_0x1134a2,_0x4c53bf){return db[_0x20d0('0x2c')]['describe']()[_0x20d0('0x25')](respondWithResult(_0x4c53bf,null))[_0x20d0('0x46')](handleError(_0x4c53bf,null));};exports['getVoiceQueuesReport']=function(_0x525dc9,_0xc9fc3a){var _0x1eee8c={},_0x3106de={},_0x2e2644={'count':0x0,'rows':[]};_0x3106de[_0x20d0('0x36')]=_[_0x20d0('0x33')](db['VoiceQueueReport'][_0x20d0('0x2d')]);_0x3106de[_0x20d0('0x32')]=_['keys'](_0x525dc9[_0x20d0('0x32')]);_0x3106de[_0x20d0('0x34')]=_[_0x20d0('0x35')](_0x3106de[_0x20d0('0x36')],_0x3106de[_0x20d0('0x32')]);_0x1eee8c['attributes']=_[_0x20d0('0x35')](_0x3106de[_0x20d0('0x36')],qs['fields'](_0x525dc9['query'][_0x20d0('0x38')]));_0x1eee8c[_0x20d0('0x37')]=_0x1eee8c['attributes']['length']?_0x1eee8c[_0x20d0('0x37')]:_0x3106de[_0x20d0('0x36')];if(!_0x525dc9[_0x20d0('0x32')][_0x20d0('0x39')](_0x20d0('0x4e'))){_0x1eee8c[_0x20d0('0x3a')]=qs[_0x20d0('0x3a')](_0x525dc9['query'][_0x20d0('0x3a')]);_0x1eee8c[_0x20d0('0x1f')]=qs['offset'](_0x525dc9[_0x20d0('0x32')][_0x20d0('0x1f')]);}_0x1eee8c['order']=qs[_0x20d0('0x3c')](_0x525dc9[_0x20d0('0x32')][_0x20d0('0x3c')]);_0x1eee8c[_0x20d0('0x3d')]=qs[_0x20d0('0x34')](_[_0x20d0('0x3e')](_0x525dc9[_0x20d0('0x32')],_0x3106de['filters']));if(_0x525dc9[_0x20d0('0x32')][_0x20d0('0x3f')]){_0x1eee8c[_0x20d0('0x3d')]=_[_0x20d0('0x40')](_0x1eee8c[_0x20d0('0x3d')],{'$or':_[_0x20d0('0x31')](_0x1eee8c[_0x20d0('0x37')],function(_0x46b213){var _0x321792={};_0x321792[_0x46b213]={'$like':'%'+_0x525dc9['query'][_0x20d0('0x3f')]+'%'};return _0x321792;})});}_0x1eee8c=_['merge']({},_0x1eee8c,_0x525dc9[_0x20d0('0x42')]);var _0x53ab23={'where':_0x1eee8c[_0x20d0('0x3d')]};return db[_0x20d0('0x2c')][_0x20d0('0x1e')](_0x53ab23)[_0x20d0('0x25')](function(_0x336f4e){_0x2e2644['count']=_0x336f4e;if(_0x525dc9[_0x20d0('0x32')][_0x20d0('0x43')]){_0x1eee8c['include']=[{'all':!![]}];}return db[_0x20d0('0x2c')][_0x20d0('0x45')](_0x1eee8c);})[_0x20d0('0x25')](function(_0x5e99c5){_0x2e2644[_0x20d0('0x4f')]=_0x5e99c5;return _0x2e2644;})[_0x20d0('0x25')](respondWithFilteredResult(_0xc9fc3a,_0x1eee8c,'getVoiceQueuesReport'))['catch'](handleError(_0xc9fc3a,null,_0x20d0('0x50')));};
\ No newline at end of file
index 65e73f5..5e9173e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7657=['update','remove','emit','hasOwnProperty','hook','exports','events','VoiceQueueReport','setMaxListeners','save'];(function(_0x2f7790,_0x26dccc){var _0x42a939=function(_0x102bf3){while(--_0x102bf3){_0x2f7790['push'](_0x2f7790['shift']());}};_0x42a939(++_0x26dccc);}(_0x7657,0x150));var _0x7765=function(_0x1a6c89,_0x2d6332){_0x1a6c89=_0x1a6c89-0x0;var _0x2b70c1=_0x7657[_0x1a6c89];return _0x2b70c1;};'use strict';var EventEmitter=require(_0x7765('0x0'));var VoiceQueueReport=require('../../mysqldb')['db'][_0x7765('0x1')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0x7765('0x2')](0x0);var events={'afterCreate':_0x7765('0x3'),'afterUpdate':_0x7765('0x4'),'afterDestroy':_0x7765('0x5')};function emitEvent(_0x4027c1){return function(_0x2bbbee,_0x43bc49,_0x5759c9){VoiceQueueReportEvents[_0x7765('0x6')](_0x4027c1+':'+_0x2bbbee['id'],_0x2bbbee);VoiceQueueReportEvents[_0x7765('0x6')](_0x4027c1,_0x2bbbee);_0x5759c9(null);};}for(var e in events){if(events[_0x7765('0x7')](e)){var event=events[e];VoiceQueueReport[_0x7765('0x8')](e,emitEvent(event));}}module[_0x7765('0x9')]=VoiceQueueReportEvents;
\ No newline at end of file
+var _0xa091=['events','VoiceQueueReport','setMaxListeners','save','update','remove','emit','hook','exports'];(function(_0xca1f0e,_0x2713d5){var _0x35e4ef=function(_0x44c40f){while(--_0x44c40f){_0xca1f0e['push'](_0xca1f0e['shift']());}};_0x35e4ef(++_0x2713d5);}(_0xa091,0x18c));var _0x1a09=function(_0x4298b1,_0x1ec4f1){_0x4298b1=_0x4298b1-0x0;var _0x3d6d4a=_0xa091[_0x4298b1];return _0x3d6d4a;};'use strict';var EventEmitter=require(_0x1a09('0x0'));var VoiceQueueReport=require('../../mysqldb')['db'][_0x1a09('0x1')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0x1a09('0x2')](0x0);var events={'afterCreate':_0x1a09('0x3'),'afterUpdate':_0x1a09('0x4'),'afterDestroy':_0x1a09('0x5')};function emitEvent(_0x58ce16){return function(_0x237039,_0x3077e5,_0x1d1eef){VoiceQueueReportEvents[_0x1a09('0x6')](_0x58ce16+':'+_0x237039['id'],_0x237039);VoiceQueueReportEvents['emit'](_0x58ce16,_0x237039);_0x1d1eef(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueueReport[_0x1a09('0x7')](e,emitEvent(event));}}module[_0x1a09('0x8')]=VoiceQueueReportEvents;
\ No newline at end of file
index d7d1d24..dc26747 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b43=['request-promise','path','../../config/environment','./voiceQueueReport.attributes','exports','define','VoiceQueueReport','report_queue','uniqueid','util','../../config/logger','api','moment','bluebird'];(function(_0x88cd7b,_0x4c884c){var _0x56fcc8=function(_0x513b3d){while(--_0x513b3d){_0x88cd7b['push'](_0x88cd7b['shift']());}};_0x56fcc8(++_0x4c884c);}(_0x6b43,0x12f));var _0x36b4=function(_0x52872a,_0x65faec){_0x52872a=_0x52872a-0x0;var _0x1a785a=_0x6b43[_0x52872a];return _0x1a785a;};'use strict';var _=require('lodash');var util=require(_0x36b4('0x0'));var logger=require(_0x36b4('0x1'))(_0x36b4('0x2'));var moment=require(_0x36b4('0x3'));var BPromise=require(_0x36b4('0x4'));var rp=require(_0x36b4('0x5'));var fs=require('fs');var path=require(_0x36b4('0x6'));var rimraf=require('rimraf');var config=require(_0x36b4('0x7'));var attributes=require(_0x36b4('0x8'));module[_0x36b4('0x9')]=function(_0x516461,_0x22ff33){return _0x516461[_0x36b4('0xa')](_0x36b4('0xb'),attributes,{'tableName':_0x36b4('0xc'),'paranoid':![],'indexes':[{'fields':[_0x36b4('0xd')]},{'fields':['calleridnum']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x42ab=['path','exports','define','VoiceQueueReport','report_queue','uniqueid','calleridnum','util','../../config/logger','api','moment','request-promise'];(function(_0x1550eb,_0x447251){var _0x477220=function(_0x24454f){while(--_0x24454f){_0x1550eb['push'](_0x1550eb['shift']());}};_0x477220(++_0x447251);}(_0x42ab,0x67));var _0xb42a=function(_0x5416db,_0x55683a){_0x5416db=_0x5416db-0x0;var _0x243e35=_0x42ab[_0x5416db];return _0x243e35;};'use strict';var _=require('lodash');var util=require(_0xb42a('0x0'));var logger=require(_0xb42a('0x1'))(_0xb42a('0x2'));var moment=require(_0xb42a('0x3'));var BPromise=require('bluebird');var rp=require(_0xb42a('0x4'));var fs=require('fs');var path=require(_0xb42a('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./voiceQueueReport.attributes');module[_0xb42a('0x6')]=function(_0x2dcf66,_0x54977b){return _0x2dcf66[_0xb42a('0x7')](_0xb42a('0x8'),attributes,{'tableName':_0xb42a('0x9'),'paranoid':![],'indexes':[{'fields':[_0xb42a('0xa')]},{'fields':[_0xb42a('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index ca21a38..d8f07ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x421d=['body','raw','UpdateVoiceQueueReport','lodash','moment','ioredis','../../mysqldb','rpc','../../config/environment','client','http','redis','socket.io-emitter','request','then','VoiceQueueReport,\x20%s,\x20%s','VoiceQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetVoiceQueueReport','findAll','options','where','attributes','limit','include','model','map','debug','CreateVoiceQueueReport','VoiceQueueReport','create','info','update'];(function(_0x1957a8,_0x3c1aee){var _0x54fa6b=function(_0x4ca820){while(--_0x4ca820){_0x1957a8['push'](_0x1957a8['shift']());}};_0x54fa6b(++_0x3c1aee);}(_0x421d,0x1b0));var _0xd421=function(_0x5608a3,_0x5b33c5){_0x5608a3=_0x5608a3-0x0;var _0x1ed50a=_0x421d[_0x5608a3];return _0x1ed50a;};'use strict';var _=require(_0xd421('0x0'));var util=require('util');var moment=require(_0xd421('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd421('0x2'));var db=require(_0xd421('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xd421('0x4'));var config=require(_0xd421('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xd421('0x6')][_0xd421('0x7')]({'port':0x232a});config['redis']=_['defaults'](config[_0xd421('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0xd421('0x9'))(new Redis(config[_0xd421('0x8')]));require('./voiceQueueReport.socket')['register'](socket);function respondWithRpcPromise(_0x2c9cfa,_0x125a00,_0x3dfce5){return new BPromise(function(_0x599f3f,_0xf097dd){return client[_0xd421('0xa')](_0x2c9cfa,_0x3dfce5)[_0xd421('0xb')](function(_0x500618){logger['info'](_0xd421('0xc'),_0x125a00,'request\x20sent');logger['debug'](_0xd421('0xd'),_0x125a00,_0xd421('0xe'),JSON[_0xd421('0xf')](_0x500618));if(_0x500618[_0xd421('0x10')]){if(_0x500618[_0xd421('0x10')][_0xd421('0x11')]===0x1f4){logger['error'](_0xd421('0xc'),_0x125a00,_0x500618[_0xd421('0x10')][_0xd421('0x12')]);return _0xf097dd(_0x500618[_0xd421('0x10')][_0xd421('0x12')]);}logger[_0xd421('0x10')](_0xd421('0xc'),_0x125a00,_0x500618['error'][_0xd421('0x12')]);return _0x599f3f(_0x500618[_0xd421('0x10')]['message']);}else{logger['info'](_0xd421('0xc'),_0x125a00,_0xd421('0xe'));_0x599f3f(_0x500618[_0xd421('0x13')][_0xd421('0x12')]);}})[_0xd421('0x14')](function(_0x4e29f3){logger['error'](_0xd421('0xc'),_0x125a00,_0x4e29f3);_0xf097dd(_0x4e29f3);});});}exports[_0xd421('0x15')]=function(_0x2d4cb5){var _0x51716d=this;return new Promise(function(_0x10019f,_0x314c5e){return db['VoiceQueueReport'][_0xd421('0x16')]({'raw':_0x2d4cb5['options']?_0x2d4cb5[_0xd421('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x2d4cb5[_0xd421('0x17')]?_0x2d4cb5[_0xd421('0x17')][_0xd421('0x18')]||null:null,'attributes':_0x2d4cb5['options']?_0x2d4cb5[_0xd421('0x17')][_0xd421('0x19')]||null:null,'limit':_0x2d4cb5[_0xd421('0x17')]?_0x2d4cb5['options'][_0xd421('0x1a')]||null:null,'include':_0x2d4cb5[_0xd421('0x17')]?_0x2d4cb5[_0xd421('0x17')][_0xd421('0x1b')]?_['map'](_0x2d4cb5[_0xd421('0x17')][_0xd421('0x1b')],function(_0x599de3){return{'model':db[_0x599de3[_0xd421('0x1c')]],'as':_0x599de3['as'],'attributes':_0x599de3[_0xd421('0x19')],'include':_0x599de3[_0xd421('0x1b')]?_[_0xd421('0x1d')](_0x599de3[_0xd421('0x1b')],function(_0x192333){return{'model':db[_0x192333[_0xd421('0x1c')]],'as':_0x192333['as'],'attributes':_0x192333[_0xd421('0x19')],'include':_0x192333[_0xd421('0x1b')]?_[_0xd421('0x1d')](_0x192333[_0xd421('0x1b')],function(_0x19366a){return{'model':db[_0x19366a[_0xd421('0x1c')]],'as':_0x19366a['as'],'attributes':_0x19366a[_0xd421('0x19')]};}):[]};}):[]};}):[]:[]})[_0xd421('0xb')](function(_0x259c98){logger['info'](_0xd421('0x15'),_0x2d4cb5);logger[_0xd421('0x1e')]('GetVoiceQueueReport',_0x2d4cb5,JSON['stringify'](_0x259c98));_0x10019f(_0x259c98);})[_0xd421('0x14')](function(_0x59c34d){logger[_0xd421('0x10')](_0xd421('0x15'),_0x59c34d['message'],_0x2d4cb5);_0x314c5e(_0x51716d[_0xd421('0x10')](0x1f4,_0x59c34d[_0xd421('0x12')]));});});};exports[_0xd421('0x1f')]=function(_0x390a28){var _0x1ac784=this;return new Promise(function(_0x1e04d0,_0x38db7a){return db[_0xd421('0x20')][_0xd421('0x21')](_0x390a28['body'],{'raw':_0x390a28[_0xd421('0x17')]?_0x390a28[_0xd421('0x17')]['raw']===undefined?!![]:![]:!![]})[_0xd421('0xb')](function(_0x2b6354){logger[_0xd421('0x22')](_0xd421('0x1f'),_0x390a28);logger[_0xd421('0x1e')](_0xd421('0x1f'),_0x390a28,JSON[_0xd421('0xf')](_0x2b6354));_0x1e04d0(_0x2b6354);})[_0xd421('0x14')](function(_0x3c76cb){logger['error'](_0xd421('0x1f'),_0x3c76cb[_0xd421('0x12')],_0x390a28);_0x38db7a(_0x1ac784[_0xd421('0x10')](0x1f4,_0x3c76cb[_0xd421('0x12')]));});});};exports['UpdateVoiceQueueReport']=function(_0x5c2e53){var _0x29349a=this;return new Promise(function(_0x3ea93f,_0x385c18){return db['VoiceQueueReport'][_0xd421('0x23')](_0x5c2e53[_0xd421('0x24')],{'raw':_0x5c2e53[_0xd421('0x17')]?_0x5c2e53[_0xd421('0x17')][_0xd421('0x25')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5c2e53[_0xd421('0x17')]?_0x5c2e53[_0xd421('0x17')][_0xd421('0x18')]||null:null,'attributes':_0x5c2e53[_0xd421('0x17')]?_0x5c2e53[_0xd421('0x17')][_0xd421('0x19')]||null:null,'limit':_0x5c2e53[_0xd421('0x17')]?_0x5c2e53[_0xd421('0x17')]['limit']||null:null})[_0xd421('0xb')](function(_0x4caf57){logger[_0xd421('0x22')](_0xd421('0x26'),_0x5c2e53);logger[_0xd421('0x1e')]('UpdateVoiceQueueReport',_0x5c2e53,JSON[_0xd421('0xf')](_0x4caf57));_0x3ea93f(_0x4caf57);})[_0xd421('0x14')](function(_0x59990a){logger[_0xd421('0x10')](_0xd421('0x26'),_0x59990a[_0xd421('0x12')],_0x5c2e53);_0x385c18(_0x29349a[_0xd421('0x10')](0x1f4,_0x59990a[_0xd421('0x12')]));});});};
\ No newline at end of file
+var _0xfeb1=['GetVoiceQueueReport','VoiceQueueReport','findAll','options','where','attributes','limit','include','model','then','CreateVoiceQueueReport','body','raw','UpdateVoiceQueueReport','lodash','util','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','socket.io-emitter','./voiceQueueReport.socket','request','info','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch'];(function(_0x28ef81,_0x2224f0){var _0x24de06=function(_0x524979){while(--_0x524979){_0x28ef81['push'](_0x28ef81['shift']());}};_0x24de06(++_0x2224f0);}(_0xfeb1,0xf8));var _0x1feb=function(_0x7400bb,_0x50d4ef){_0x7400bb=_0x7400bb-0x0;var _0x5c909b=_0xfeb1[_0x7400bb];return _0x5c909b;};'use strict';var _=require(_0x1feb('0x0'));var util=require(_0x1feb('0x1'));var moment=require('moment');var BPromise=require(_0x1feb('0x2'));var rs=require(_0x1feb('0x3'));var fs=require('fs');var Redis=require(_0x1feb('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x1feb('0x5'))(_0x1feb('0x6'));var config=require(_0x1feb('0x7'));var jayson=require(_0x1feb('0x8'));var client=jayson['client'][_0x1feb('0x9')]({'port':0x232a});config[_0x1feb('0xa')]=_[_0x1feb('0xb')](config[_0x1feb('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x1feb('0xc'))(new Redis(config[_0x1feb('0xa')]));require(_0x1feb('0xd'))['register'](socket);function respondWithRpcPromise(_0x4de815,_0x36a6da,_0x1f1ffb){return new BPromise(function(_0x3e2d2c,_0x2c666f){return client[_0x1feb('0xe')](_0x4de815,_0x1f1ffb)['then'](function(_0xb1df22){logger[_0x1feb('0xf')](_0x1feb('0x10'),_0x36a6da,_0x1feb('0x11'));logger[_0x1feb('0x12')](_0x1feb('0x13'),_0x36a6da,_0x1feb('0x11'),JSON[_0x1feb('0x14')](_0xb1df22));if(_0xb1df22['error']){if(_0xb1df22[_0x1feb('0x15')]['code']===0x1f4){logger[_0x1feb('0x15')](_0x1feb('0x10'),_0x36a6da,_0xb1df22['error'][_0x1feb('0x16')]);return _0x2c666f(_0xb1df22[_0x1feb('0x15')]['message']);}logger[_0x1feb('0x15')](_0x1feb('0x10'),_0x36a6da,_0xb1df22[_0x1feb('0x15')]['message']);return _0x3e2d2c(_0xb1df22['error'][_0x1feb('0x16')]);}else{logger['info'](_0x1feb('0x10'),_0x36a6da,_0x1feb('0x11'));_0x3e2d2c(_0xb1df22[_0x1feb('0x17')][_0x1feb('0x16')]);}})[_0x1feb('0x18')](function(_0x2e345b){logger[_0x1feb('0x15')](_0x1feb('0x10'),_0x36a6da,_0x2e345b);_0x2c666f(_0x2e345b);});});}exports[_0x1feb('0x19')]=function(_0x58aff1){var _0xd48385=this;return new Promise(function(_0x5d41e6,_0xd381c8){return db[_0x1feb('0x1a')][_0x1feb('0x1b')]({'raw':_0x58aff1[_0x1feb('0x1c')]?_0x58aff1[_0x1feb('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x58aff1['options']?_0x58aff1['options'][_0x1feb('0x1d')]||null:null,'attributes':_0x58aff1[_0x1feb('0x1c')]?_0x58aff1['options'][_0x1feb('0x1e')]||null:null,'limit':_0x58aff1['options']?_0x58aff1['options'][_0x1feb('0x1f')]||null:null,'include':_0x58aff1[_0x1feb('0x1c')]?_0x58aff1[_0x1feb('0x1c')][_0x1feb('0x20')]?_['map'](_0x58aff1['options'][_0x1feb('0x20')],function(_0x25ba58){return{'model':db[_0x25ba58[_0x1feb('0x21')]],'as':_0x25ba58['as'],'attributes':_0x25ba58['attributes'],'include':_0x25ba58[_0x1feb('0x20')]?_['map'](_0x25ba58[_0x1feb('0x20')],function(_0x417072){return{'model':db[_0x417072[_0x1feb('0x21')]],'as':_0x417072['as'],'attributes':_0x417072[_0x1feb('0x1e')],'include':_0x417072[_0x1feb('0x20')]?_['map'](_0x417072[_0x1feb('0x20')],function(_0x191e40){return{'model':db[_0x191e40[_0x1feb('0x21')]],'as':_0x191e40['as'],'attributes':_0x191e40[_0x1feb('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x1feb('0x22')](function(_0x350078){logger[_0x1feb('0xf')](_0x1feb('0x19'),_0x58aff1);logger['debug']('GetVoiceQueueReport',_0x58aff1,JSON[_0x1feb('0x14')](_0x350078));_0x5d41e6(_0x350078);})[_0x1feb('0x18')](function(_0x1ed7b2){logger['error'](_0x1feb('0x19'),_0x1ed7b2[_0x1feb('0x16')],_0x58aff1);_0xd381c8(_0xd48385[_0x1feb('0x15')](0x1f4,_0x1ed7b2[_0x1feb('0x16')]));});});};exports[_0x1feb('0x23')]=function(_0x4b6bc9){var _0x588a8e=this;return new Promise(function(_0x3b9d42,_0x7795e0){return db['VoiceQueueReport']['create'](_0x4b6bc9[_0x1feb('0x24')],{'raw':_0x4b6bc9[_0x1feb('0x1c')]?_0x4b6bc9[_0x1feb('0x1c')][_0x1feb('0x25')]===undefined?!![]:![]:!![]})[_0x1feb('0x22')](function(_0x2937db){logger[_0x1feb('0xf')](_0x1feb('0x23'),_0x4b6bc9);logger[_0x1feb('0x12')](_0x1feb('0x23'),_0x4b6bc9,JSON[_0x1feb('0x14')](_0x2937db));_0x3b9d42(_0x2937db);})[_0x1feb('0x18')](function(_0x4965c0){logger[_0x1feb('0x15')](_0x1feb('0x23'),_0x4965c0['message'],_0x4b6bc9);_0x7795e0(_0x588a8e[_0x1feb('0x15')](0x1f4,_0x4965c0[_0x1feb('0x16')]));});});};exports[_0x1feb('0x26')]=function(_0xdbf6c5){var _0x368ef6=this;return new Promise(function(_0x156965,_0x4d78cf){return db['VoiceQueueReport']['update'](_0xdbf6c5['body'],{'raw':_0xdbf6c5[_0x1feb('0x1c')]?_0xdbf6c5[_0x1feb('0x1c')][_0x1feb('0x25')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xdbf6c5[_0x1feb('0x1c')]?_0xdbf6c5[_0x1feb('0x1c')][_0x1feb('0x1d')]||null:null,'attributes':_0xdbf6c5[_0x1feb('0x1c')]?_0xdbf6c5['options'][_0x1feb('0x1e')]||null:null,'limit':_0xdbf6c5[_0x1feb('0x1c')]?_0xdbf6c5[_0x1feb('0x1c')]['limit']||null:null})[_0x1feb('0x22')](function(_0x244955){logger[_0x1feb('0xf')]('UpdateVoiceQueueReport',_0xdbf6c5);logger['debug'](_0x1feb('0x26'),_0xdbf6c5,JSON['stringify'](_0x244955));_0x156965(_0x244955);})['catch'](function(_0x2bb6db){logger[_0x1feb('0x15')](_0x1feb('0x26'),_0x2bb6db[_0x1feb('0x16')],_0xdbf6c5);_0x4d78cf(_0x368ef6['error'](0x1f4,_0x2bb6db[_0x1feb('0x16')]));});});};
\ No newline at end of file
index d26bbe7..ea6f31d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21d1=['voiceQueueReport:','./voiceQueueReport.events','save','remove','update','removeListener','register','length'];(function(_0x221ba2,_0x79208){var _0x47d08e=function(_0xaf14ee){while(--_0xaf14ee){_0x221ba2['push'](_0x221ba2['shift']());}};_0x47d08e(++_0x79208);}(_0x21d1,0x1c9));var _0x121d=function(_0x3871aa,_0x18b185){_0x3871aa=_0x3871aa-0x0;var _0x26452b=_0x21d1[_0x3871aa];return _0x26452b;};'use strict';var VoiceQueueReportEvents=require(_0x121d('0x0'));var events=[_0x121d('0x1'),_0x121d('0x2'),_0x121d('0x3')];function createListener(_0x438b9b,_0x14fd65){return function(_0x550ab5){_0x14fd65['emit'](_0x438b9b,_0x550ab5);};}function removeListener(_0x20b991,_0x19c637){return function(){VoiceQueueReportEvents[_0x121d('0x4')](_0x20b991,_0x19c637);};}exports[_0x121d('0x5')]=function(_0x2f3987){for(var _0x4c47ee=0x0,_0x226625=events[_0x121d('0x6')];_0x4c47ee<_0x226625;_0x4c47ee++){var _0x47b50b=events[_0x4c47ee];var _0x2d4d7e=createListener(_0x121d('0x7')+_0x47b50b,_0x2f3987);VoiceQueueReportEvents['on'](_0x47b50b,_0x2d4d7e);}};
\ No newline at end of file
+var _0x1224=['update','emit','register','length','voiceQueueReport:','./voiceQueueReport.events','save','remove'];(function(_0x5490c2,_0x3d757f){var _0x4f4a3d=function(_0x4e992a){while(--_0x4e992a){_0x5490c2['push'](_0x5490c2['shift']());}};_0x4f4a3d(++_0x3d757f);}(_0x1224,0x10d));var _0x4122=function(_0x2d7836,_0x5a5412){_0x2d7836=_0x2d7836-0x0;var _0x491179=_0x1224[_0x2d7836];return _0x491179;};'use strict';var VoiceQueueReportEvents=require(_0x4122('0x0'));var events=[_0x4122('0x1'),_0x4122('0x2'),_0x4122('0x3')];function createListener(_0x488f55,_0x3d42a9){return function(_0x51632b){_0x3d42a9[_0x4122('0x4')](_0x488f55,_0x51632b);};}function removeListener(_0x1f1533,_0x2f506b){return function(){VoiceQueueReportEvents['removeListener'](_0x1f1533,_0x2f506b);};}exports[_0x4122('0x5')]=function(_0x76278c){for(var _0xc6dfaf=0x0,_0x40b5e4=events[_0x4122('0x6')];_0xc6dfaf<_0x40b5e4;_0xc6dfaf++){var _0x431470=events[_0xc6dfaf];var _0x2444a3=createListener(_0x4122('0x7')+_0x431470,_0x76278c);VoiceQueueReportEvents['on'](_0x431470,_0x2444a3);}};
\ No newline at end of file
index 1506605..1719a69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26c2=['Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','create','put','update','destroy','exports','connect-timeout','express'];(function(_0x28ba6f,_0x372f1e){var _0x2f68ae=function(_0x59ce47){while(--_0x59ce47){_0x28ba6f['push'](_0x28ba6f['shift']());}};_0x2f68ae(++_0x372f1e);}(_0x26c2,0x130));var _0x226c=function(_0xd9679,_0x2f035c){_0xd9679=_0xd9679-0x0;var _0x10a4c3=_0x26c2[_0xd9679];return _0x10a4c3;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x226c('0x0'));var express=require(_0x226c('0x1'));var router=express[_0x226c('0x2')]();var fs_extra=require(_0x226c('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x226c('0x4'));var config=require(_0x226c('0x5'));var controller=require('./voiceQueuesLog.controller');router[_0x226c('0x6')]('/',auth[_0x226c('0x7')](),controller[_0x226c('0x8')]);router[_0x226c('0x6')](_0x226c('0x9'),auth['isAuthenticated'](),controller[_0x226c('0xa')]);router[_0x226c('0xb')]('/',auth[_0x226c('0x7')](),controller[_0x226c('0xc')]);router[_0x226c('0xd')]('/:id',auth[_0x226c('0x7')](),controller[_0x226c('0xe')]);router['delete']('/:id',auth[_0x226c('0x7')](),controller[_0x226c('0xf')]);module[_0x226c('0x10')]=router;
\ No newline at end of file
+var _0xb950=['exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueuesLog.controller','get','/:id','isAuthenticated','show','create','put','delete','destroy'];(function(_0x5e472c,_0x425b2e){var _0x1d055e=function(_0x361d13){while(--_0x361d13){_0x5e472c['push'](_0x5e472c['shift']());}};_0x1d055e(++_0x425b2e);}(_0xb950,0x18d));var _0x0b95=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0xb950[_0x126558];return _0x1f6d14;};'use strict';var multer=require(_0x0b95('0x0'));var util=require('util');var path=require(_0x0b95('0x1'));var timeout=require('connect-timeout');var express=require(_0x0b95('0x2'));var router=express[_0x0b95('0x3')]();var fs_extra=require(_0x0b95('0x4'));var auth=require(_0x0b95('0x5'));var interaction=require(_0x0b95('0x6'));var config=require(_0x0b95('0x7'));var controller=require(_0x0b95('0x8'));router[_0x0b95('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x0b95('0x9')](_0x0b95('0xa'),auth[_0x0b95('0xb')](),controller[_0x0b95('0xc')]);router['post']('/',auth[_0x0b95('0xb')](),controller[_0x0b95('0xd')]);router[_0x0b95('0xe')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x0b95('0xf')](_0x0b95('0xa'),auth[_0x0b95('0xb')](),controller[_0x0b95('0x10')]);module[_0x0b95('0x11')]=router;
\ No newline at end of file
index e865fac..fff2f3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc2f=['YYYY-MM-DD\x20HH:mm:ss','moment','exports','STRING','DATE'];(function(_0x5138e0,_0x24fbbc){var _0x18e57b=function(_0x5eda17){while(--_0x5eda17){_0x5138e0['push'](_0x5138e0['shift']());}};_0x18e57b(++_0x24fbbc);}(_0xbc2f,0x1a0));var _0xfbc2=function(_0x529b2a,_0x1cee17){_0x529b2a=_0x529b2a-0x0;var _0x35ddec=_0xbc2f[_0x529b2a];return _0x35ddec;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xfbc2('0x0'));module[_0xfbc2('0x1')]={'time':{'type':Sequelize['STRING']},'callid':{'type':Sequelize[_0xfbc2('0x2')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0xfbc2('0x2')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0xfbc2('0x2')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0xfbc2('0x2')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0xfbc2('0x2')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0xfbc2('0x2')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0xfbc2('0x2')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0xfbc2('0x2')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0xfbc2('0x2')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0xfbc2('0x3')],'allowNull':![],'defaultValue':moment()['format'](_0xfbc2('0x4'))}};
\ No newline at end of file
+var _0xc155=['exports','STRING','DATE','format','YYYY-MM-DD\x20HH:mm:ss','sequelize','moment'];(function(_0x2d86a6,_0x4dbbed){var _0x112397=function(_0x2a357d){while(--_0x2a357d){_0x2d86a6['push'](_0x2d86a6['shift']());}};_0x112397(++_0x4dbbed);}(_0xc155,0x16a));var _0x5c15=function(_0x1f142b,_0x73dd2f){_0x1f142b=_0x1f142b-0x0;var _0x384f74=_0xc155[_0x1f142b];return _0x384f74;};'use strict';var Sequelize=require(_0x5c15('0x0'));var moment=require(_0x5c15('0x1'));module[_0x5c15('0x2')]={'time':{'type':Sequelize['STRING']},'callid':{'type':Sequelize[_0x5c15('0x3')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x5c15('0x3')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0x5c15('0x3')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0x5c15('0x3')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0x5c15('0x3')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x5c15('0x3')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x5c15('0x3')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0x5c15('0x3')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x5c15('0x4')],'allowNull':![],'defaultValue':moment()[_0x5c15('0x5')](_0x5c15('0x6'))}};
\ No newline at end of file
index 4b15a1a..fbc55e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5e2=['sendStatus','end','json','offset','undefined','count','limit','set','Content-Range','apply','update','then','destroy','error','stack','name','status','index','map','VoiceQueuesLog','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','includeAll','include','findAll','catch','show','params','rawAttributes','options','create','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','lodash','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb'];(function(_0x55a914,_0x13a716){var _0x59ce39=function(_0x54801d){while(--_0x54801d){_0x55a914['push'](_0x55a914['shift']());}};_0x59ce39(++_0x13a716);}(_0xc5e2,0x1ed));var _0x2c5e=function(_0x432516,_0x394339){_0x432516=_0x432516-0x0;var _0x4f52c9=_0xc5e2[_0x432516];return _0x4f52c9;};'use strict';var emlformat=require(_0x2c5e('0x0'));var rimraf=require(_0x2c5e('0x1'));var zipdir=require(_0x2c5e('0x2'));var jsonpatch=require(_0x2c5e('0x3'));var rp=require(_0x2c5e('0x4'));var moment=require(_0x2c5e('0x5'));var BPromise=require(_0x2c5e('0x6'));var Mustache=require(_0x2c5e('0x7'));var util=require('util');var path=require(_0x2c5e('0x8'));var sox=require(_0x2c5e('0x9'));var csv=require('to-csv');var ejs=require(_0x2c5e('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2c5e('0xb'));var squel=require(_0x2c5e('0xc'));var crypto=require(_0x2c5e('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x2c5e('0xe'));var toCsv=require(_0x2c5e('0xf'));var querystring=require(_0x2c5e('0x10'));var Papa=require('papaparse');var Redis=require(_0x2c5e('0x11'));var authService=require(_0x2c5e('0x12'));var qs=require(_0x2c5e('0x13'));var as=require(_0x2c5e('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2c5e('0x15'))(_0x2c5e('0x16'));var utils=require(_0x2c5e('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x2c5e('0x18'))['db'];function respondWithStatusCode(_0x125e3d,_0xbad963){_0xbad963=_0xbad963||0xcc;return function(_0x405e6c){if(_0x405e6c){return _0x125e3d[_0x2c5e('0x19')](_0xbad963);}return _0x125e3d['status'](_0xbad963)[_0x2c5e('0x1a')]();};}function respondWithResult(_0x3e0771,_0x5ee79f){_0x5ee79f=_0x5ee79f||0xc8;return function(_0x22cecc){if(_0x22cecc){return _0x3e0771['status'](_0x5ee79f)[_0x2c5e('0x1b')](_0x22cecc);}};}function respondWithFilteredResult(_0x37fade,_0x509a6e){return function(_0x578137){if(_0x578137){var _0x5001a6=typeof _0x509a6e[_0x2c5e('0x1c')]===_0x2c5e('0x1d')&&typeof _0x509a6e['limit']===_0x2c5e('0x1d');var _0x298f11=_0x578137[_0x2c5e('0x1e')];var _0x578074=_0x5001a6?0x0:_0x509a6e[_0x2c5e('0x1c')];var _0x4f49ed=_0x5001a6?_0x578137[_0x2c5e('0x1e')]:_0x509a6e[_0x2c5e('0x1c')]+_0x509a6e[_0x2c5e('0x1f')];var _0x590b3c;if(_0x4f49ed>=_0x298f11){_0x4f49ed=_0x298f11;_0x590b3c=0xc8;}else{_0x590b3c=0xce;}_0x37fade['status'](_0x590b3c);return _0x37fade[_0x2c5e('0x20')](_0x2c5e('0x21'),_0x578074+'-'+_0x4f49ed+'/'+_0x298f11)[_0x2c5e('0x1b')](_0x578137);}return null;};}function patchUpdates(_0x27aab2){return function(_0x161d11){try{jsonpatch[_0x2c5e('0x22')](_0x161d11,_0x27aab2,!![]);}catch(_0x2f45f){return BPromise['reject'](_0x2f45f);}return _0x161d11['save']();};}function saveUpdates(_0x319f2e,_0x705c84){return function(_0x3656fe){if(_0x3656fe){return _0x3656fe[_0x2c5e('0x23')](_0x319f2e)[_0x2c5e('0x24')](function(_0x2d8d7b){return _0x2d8d7b;});}return null;};}function removeEntity(_0xa2fabd,_0x1b1676){return function(_0x2af009){if(_0x2af009){return _0x2af009[_0x2c5e('0x25')]()[_0x2c5e('0x24')](function(){_0xa2fabd['status'](0xcc)[_0x2c5e('0x1a')]();});}};}function handleEntityNotFound(_0x1c38b2,_0x303e64){return function(_0xf45bce){if(!_0xf45bce){_0x1c38b2['sendStatus'](0x194);}return _0xf45bce;};}function handleError(_0x46c2bb,_0x4b9155){_0x4b9155=_0x4b9155||0x1f4;return function(_0x25823e){logger[_0x2c5e('0x26')](_0x25823e[_0x2c5e('0x27')]);if(_0x25823e[_0x2c5e('0x28')]){delete _0x25823e['name'];}_0x46c2bb[_0x2c5e('0x29')](_0x4b9155)['send'](_0x25823e);};}exports[_0x2c5e('0x2a')]=function(_0x2cbf4,_0x2a9ad2){var _0x4782b8={},_0x54138b={},_0xd52739={'count':0x0,'rows':[]};var _0x1d5ff6=_[_0x2c5e('0x2b')](db[_0x2c5e('0x2c')]['rawAttributes'],function(_0x2f5e29){return{'name':_0x2f5e29[_0x2c5e('0x2d')],'type':_0x2f5e29[_0x2c5e('0x2e')][_0x2c5e('0x2f')]};});_0x54138b[_0x2c5e('0x30')]=_['map'](_0x1d5ff6,_0x2c5e('0x28'));_0x54138b[_0x2c5e('0x31')]=_[_0x2c5e('0x32')](_0x2cbf4[_0x2c5e('0x31')]);_0x54138b[_0x2c5e('0x33')]=_[_0x2c5e('0x34')](_0x54138b[_0x2c5e('0x30')],_0x54138b['query']);_0x4782b8[_0x2c5e('0x35')]=_[_0x2c5e('0x34')](_0x54138b[_0x2c5e('0x30')],qs['fields'](_0x2cbf4[_0x2c5e('0x31')][_0x2c5e('0x36')]));_0x4782b8[_0x2c5e('0x35')]=_0x4782b8['attributes'][_0x2c5e('0x37')]?_0x4782b8[_0x2c5e('0x35')]:_0x54138b[_0x2c5e('0x30')];if(!_0x2cbf4[_0x2c5e('0x31')][_0x2c5e('0x38')](_0x2c5e('0x39'))){_0x4782b8['limit']=qs[_0x2c5e('0x1f')](_0x2cbf4['query']['limit']);_0x4782b8['offset']=qs[_0x2c5e('0x1c')](_0x2cbf4[_0x2c5e('0x31')]['offset']);}_0x4782b8[_0x2c5e('0x3a')]=qs['sort'](_0x2cbf4[_0x2c5e('0x31')][_0x2c5e('0x3b')]);_0x4782b8[_0x2c5e('0x3c')]=qs['filters'](_['pick'](_0x2cbf4[_0x2c5e('0x31')],_0x54138b[_0x2c5e('0x33')]),_0x1d5ff6);if(_0x2cbf4[_0x2c5e('0x31')]['filter']){_0x4782b8[_0x2c5e('0x3c')]=_[_0x2c5e('0x3d')](_0x4782b8[_0x2c5e('0x3c')],{'$or':_[_0x2c5e('0x2b')](_0x1d5ff6,function(_0x15f2af){if(_0x15f2af[_0x2c5e('0x2e')]!==_0x2c5e('0x3e')){var _0x5f5760={};_0x5f5760[_0x15f2af['name']]={'$like':'%'+_0x2cbf4[_0x2c5e('0x31')]['filter']+'%'};return _0x5f5760;}})});}_0x4782b8=_[_0x2c5e('0x3d')]({},_0x4782b8,_0x2cbf4['options']);var _0x4cbdfd={'where':_0x4782b8[_0x2c5e('0x3c')]};return db['VoiceQueuesLog'][_0x2c5e('0x1e')](_0x4cbdfd)[_0x2c5e('0x24')](function(_0x68b223){_0xd52739['count']=_0x68b223;if(_0x2cbf4[_0x2c5e('0x31')][_0x2c5e('0x3f')]){_0x4782b8[_0x2c5e('0x40')]=[{'all':!![]}];}return db[_0x2c5e('0x2c')][_0x2c5e('0x41')](_0x4782b8);})[_0x2c5e('0x24')](function(_0x5961a6){_0xd52739['rows']=_0x5961a6;return _0xd52739;})[_0x2c5e('0x24')](respondWithFilteredResult(_0x2a9ad2,_0x4782b8))[_0x2c5e('0x42')](handleError(_0x2a9ad2,null));};exports[_0x2c5e('0x43')]=function(_0x4aca98,_0x3df10b){var _0x2eddf8={'raw':!![],'where':{'id':_0x4aca98[_0x2c5e('0x44')]['id']}},_0x4bc41b={};_0x4bc41b[_0x2c5e('0x30')]=_['keys'](db[_0x2c5e('0x2c')][_0x2c5e('0x45')]);_0x4bc41b['query']=_[_0x2c5e('0x32')](_0x4aca98['query']);_0x4bc41b[_0x2c5e('0x33')]=_['intersection'](_0x4bc41b[_0x2c5e('0x30')],_0x4bc41b[_0x2c5e('0x31')]);_0x2eddf8[_0x2c5e('0x35')]=_['intersection'](_0x4bc41b[_0x2c5e('0x30')],qs[_0x2c5e('0x36')](_0x4aca98[_0x2c5e('0x31')][_0x2c5e('0x36')]));_0x2eddf8[_0x2c5e('0x35')]=_0x2eddf8[_0x2c5e('0x35')][_0x2c5e('0x37')]?_0x2eddf8[_0x2c5e('0x35')]:_0x4bc41b[_0x2c5e('0x30')];if(_0x4aca98[_0x2c5e('0x31')][_0x2c5e('0x3f')]){_0x2eddf8['include']=[{'all':!![]}];}_0x2eddf8=_['merge']({},_0x2eddf8,_0x4aca98[_0x2c5e('0x46')]);return db['VoiceQueuesLog']['find'](_0x2eddf8)['then'](handleEntityNotFound(_0x3df10b,null))[_0x2c5e('0x24')](respondWithResult(_0x3df10b,null))[_0x2c5e('0x42')](handleError(_0x3df10b,null));};exports[_0x2c5e('0x47')]=function(_0x5d9e62,_0x685a05){return db[_0x2c5e('0x2c')][_0x2c5e('0x47')](_0x5d9e62[_0x2c5e('0x48')],{})['then'](respondWithResult(_0x685a05,0xc9))[_0x2c5e('0x42')](handleError(_0x685a05,null));};exports[_0x2c5e('0x23')]=function(_0x52acba,_0x3e6fa9){if(_0x52acba['body']['id']){delete _0x52acba['body']['id'];}return db['VoiceQueuesLog'][_0x2c5e('0x49')]({'where':{'id':_0x52acba['params']['id']}})[_0x2c5e('0x24')](handleEntityNotFound(_0x3e6fa9,null))[_0x2c5e('0x24')](saveUpdates(_0x52acba[_0x2c5e('0x48')],null))[_0x2c5e('0x24')](respondWithResult(_0x3e6fa9,null))[_0x2c5e('0x42')](handleError(_0x3e6fa9,null));};exports[_0x2c5e('0x25')]=function(_0x287d8c,_0x3b4709){return db[_0x2c5e('0x2c')][_0x2c5e('0x49')]({'where':{'id':_0x287d8c[_0x2c5e('0x44')]['id']}})['then'](handleEntityNotFound(_0x3b4709,null))[_0x2c5e('0x24')](removeEntity(_0x3b4709,null))[_0x2c5e('0x42')](handleError(_0x3b4709,null));};
\ No newline at end of file
+var _0x6f3a=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','update','then','error','name','send','rawAttributes','type','key','query','keys','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','VIRTUAL','merge','options','include','findAll','rows','show','params','VoiceQueuesLog','includeAll','find','catch','create','body','destroy','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x337860,_0x1b2a6b){var _0x587649=function(_0x4c2fe9){while(--_0x4c2fe9){_0x337860['push'](_0x337860['shift']());}};_0x587649(++_0x1b2a6b);}(_0x6f3a,0x1a9));var _0xa6f3=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x6f3a[_0x2c91e9];return _0x13f0ff;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xa6f3('0x0'));var jsonpatch=require(_0xa6f3('0x1'));var rp=require(_0xa6f3('0x2'));var moment=require('moment');var BPromise=require(_0xa6f3('0x3'));var Mustache=require(_0xa6f3('0x4'));var util=require(_0xa6f3('0x5'));var path=require(_0xa6f3('0x6'));var sox=require(_0xa6f3('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa6f3('0x8'));var _=require(_0xa6f3('0x9'));var squel=require(_0xa6f3('0xa'));var crypto=require(_0xa6f3('0xb'));var jsforce=require(_0xa6f3('0xc'));var deskjs=require(_0xa6f3('0xd'));var toCsv=require('to-csv');var querystring=require(_0xa6f3('0xe'));var Papa=require(_0xa6f3('0xf'));var Redis=require(_0xa6f3('0x10'));var authService=require(_0xa6f3('0x11'));var qs=require(_0xa6f3('0x12'));var as=require(_0xa6f3('0x13'));var hardwareService=require(_0xa6f3('0x14'));var logger=require(_0xa6f3('0x15'))('api');var utils=require('../../config/utils');var config=require(_0xa6f3('0x16'));var licenseUtil=require(_0xa6f3('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x33dff1,_0x5cf5ab){_0x5cf5ab=_0x5cf5ab||0xcc;return function(_0x474238){if(_0x474238){return _0x33dff1[_0xa6f3('0x18')](_0x5cf5ab);}return _0x33dff1[_0xa6f3('0x19')](_0x5cf5ab)[_0xa6f3('0x1a')]();};}function respondWithResult(_0x3b1491,_0x33a878){_0x33a878=_0x33a878||0xc8;return function(_0x4e5ae1){if(_0x4e5ae1){return _0x3b1491['status'](_0x33a878)[_0xa6f3('0x1b')](_0x4e5ae1);}};}function respondWithFilteredResult(_0x4279c4,_0x552323){return function(_0x26e81b){if(_0x26e81b){var _0xaa695a=typeof _0x552323['offset']===_0xa6f3('0x1c')&&typeof _0x552323['limit']==='undefined';var _0x58a3a4=_0x26e81b[_0xa6f3('0x1d')];var _0x4c3544=_0xaa695a?0x0:_0x552323[_0xa6f3('0x1e')];var _0x258e2e=_0xaa695a?_0x26e81b[_0xa6f3('0x1d')]:_0x552323[_0xa6f3('0x1e')]+_0x552323[_0xa6f3('0x1f')];var _0x5845ad;if(_0x258e2e>=_0x58a3a4){_0x258e2e=_0x58a3a4;_0x5845ad=0xc8;}else{_0x5845ad=0xce;}_0x4279c4[_0xa6f3('0x19')](_0x5845ad);return _0x4279c4[_0xa6f3('0x20')](_0xa6f3('0x21'),_0x4c3544+'-'+_0x258e2e+'/'+_0x58a3a4)[_0xa6f3('0x1b')](_0x26e81b);}return null;};}function patchUpdates(_0x3c6046){return function(_0x39bf48){try{jsonpatch[_0xa6f3('0x22')](_0x39bf48,_0x3c6046,!![]);}catch(_0x46229d){return BPromise[_0xa6f3('0x23')](_0x46229d);}return _0x39bf48[_0xa6f3('0x24')]();};}function saveUpdates(_0x30b0f4,_0x3756c1){return function(_0x1db694){if(_0x1db694){return _0x1db694[_0xa6f3('0x25')](_0x30b0f4)[_0xa6f3('0x26')](function(_0x45d517){return _0x45d517;});}return null;};}function removeEntity(_0x4cf5e7,_0x184a4f){return function(_0x1ff318){if(_0x1ff318){return _0x1ff318['destroy']()[_0xa6f3('0x26')](function(){_0x4cf5e7[_0xa6f3('0x19')](0xcc)[_0xa6f3('0x1a')]();});}};}function handleEntityNotFound(_0x5db197,_0x33d073){return function(_0x130571){if(!_0x130571){_0x5db197[_0xa6f3('0x18')](0x194);}return _0x130571;};}function handleError(_0x39c5a3,_0x282402){_0x282402=_0x282402||0x1f4;return function(_0xe17d0c){logger[_0xa6f3('0x27')](_0xe17d0c['stack']);if(_0xe17d0c[_0xa6f3('0x28')]){delete _0xe17d0c[_0xa6f3('0x28')];}_0x39c5a3[_0xa6f3('0x19')](_0x282402)[_0xa6f3('0x29')](_0xe17d0c);};}exports['index']=function(_0x52aa68,_0x3460bc){var _0x453819={},_0x420527={},_0x99aa0f={'count':0x0,'rows':[]};var _0x2bed2d=_['map'](db['VoiceQueuesLog'][_0xa6f3('0x2a')],function(_0xff00b6){return{'name':_0xff00b6['fieldName'],'type':_0xff00b6[_0xa6f3('0x2b')][_0xa6f3('0x2c')]};});_0x420527['model']=_['map'](_0x2bed2d,'name');_0x420527[_0xa6f3('0x2d')]=_[_0xa6f3('0x2e')](_0x52aa68[_0xa6f3('0x2d')]);_0x420527['filters']=_[_0xa6f3('0x2f')](_0x420527['model'],_0x420527[_0xa6f3('0x2d')]);_0x453819[_0xa6f3('0x30')]=_[_0xa6f3('0x2f')](_0x420527[_0xa6f3('0x31')],qs[_0xa6f3('0x32')](_0x52aa68['query']['fields']));_0x453819[_0xa6f3('0x30')]=_0x453819['attributes'][_0xa6f3('0x33')]?_0x453819['attributes']:_0x420527[_0xa6f3('0x31')];if(!_0x52aa68[_0xa6f3('0x2d')][_0xa6f3('0x34')](_0xa6f3('0x35'))){_0x453819['limit']=qs[_0xa6f3('0x1f')](_0x52aa68[_0xa6f3('0x2d')][_0xa6f3('0x1f')]);_0x453819[_0xa6f3('0x1e')]=qs[_0xa6f3('0x1e')](_0x52aa68[_0xa6f3('0x2d')][_0xa6f3('0x1e')]);}_0x453819[_0xa6f3('0x36')]=qs[_0xa6f3('0x37')](_0x52aa68[_0xa6f3('0x2d')]['sort']);_0x453819[_0xa6f3('0x38')]=qs[_0xa6f3('0x39')](_['pick'](_0x52aa68[_0xa6f3('0x2d')],_0x420527[_0xa6f3('0x39')]),_0x2bed2d);if(_0x52aa68[_0xa6f3('0x2d')][_0xa6f3('0x3a')]){_0x453819[_0xa6f3('0x38')]=_['merge'](_0x453819[_0xa6f3('0x38')],{'$or':_['map'](_0x2bed2d,function(_0xa3c36){if(_0xa3c36[_0xa6f3('0x2b')]!==_0xa6f3('0x3b')){var _0x58bd7a={};_0x58bd7a[_0xa3c36[_0xa6f3('0x28')]]={'$like':'%'+_0x52aa68[_0xa6f3('0x2d')][_0xa6f3('0x3a')]+'%'};return _0x58bd7a;}})});}_0x453819=_[_0xa6f3('0x3c')]({},_0x453819,_0x52aa68[_0xa6f3('0x3d')]);var _0x410ee0={'where':_0x453819[_0xa6f3('0x38')]};return db['VoiceQueuesLog'][_0xa6f3('0x1d')](_0x410ee0)[_0xa6f3('0x26')](function(_0x3578c2){_0x99aa0f[_0xa6f3('0x1d')]=_0x3578c2;if(_0x52aa68[_0xa6f3('0x2d')]['includeAll']){_0x453819[_0xa6f3('0x3e')]=[{'all':!![]}];}return db['VoiceQueuesLog'][_0xa6f3('0x3f')](_0x453819);})['then'](function(_0x595a6f){_0x99aa0f[_0xa6f3('0x40')]=_0x595a6f;return _0x99aa0f;})[_0xa6f3('0x26')](respondWithFilteredResult(_0x3460bc,_0x453819))['catch'](handleError(_0x3460bc,null));};exports[_0xa6f3('0x41')]=function(_0x23540b,_0x2be7da){var _0x30686b={'raw':!![],'where':{'id':_0x23540b[_0xa6f3('0x42')]['id']}},_0x430963={};_0x430963[_0xa6f3('0x31')]=_[_0xa6f3('0x2e')](db[_0xa6f3('0x43')][_0xa6f3('0x2a')]);_0x430963['query']=_[_0xa6f3('0x2e')](_0x23540b[_0xa6f3('0x2d')]);_0x430963[_0xa6f3('0x39')]=_[_0xa6f3('0x2f')](_0x430963['model'],_0x430963[_0xa6f3('0x2d')]);_0x30686b[_0xa6f3('0x30')]=_['intersection'](_0x430963['model'],qs[_0xa6f3('0x32')](_0x23540b[_0xa6f3('0x2d')][_0xa6f3('0x32')]));_0x30686b[_0xa6f3('0x30')]=_0x30686b[_0xa6f3('0x30')][_0xa6f3('0x33')]?_0x30686b['attributes']:_0x430963[_0xa6f3('0x31')];if(_0x23540b['query'][_0xa6f3('0x44')]){_0x30686b[_0xa6f3('0x3e')]=[{'all':!![]}];}_0x30686b=_[_0xa6f3('0x3c')]({},_0x30686b,_0x23540b['options']);return db[_0xa6f3('0x43')][_0xa6f3('0x45')](_0x30686b)[_0xa6f3('0x26')](handleEntityNotFound(_0x2be7da,null))[_0xa6f3('0x26')](respondWithResult(_0x2be7da,null))[_0xa6f3('0x46')](handleError(_0x2be7da,null));};exports[_0xa6f3('0x47')]=function(_0x30c7ca,_0x477699){return db['VoiceQueuesLog'][_0xa6f3('0x47')](_0x30c7ca[_0xa6f3('0x48')],{})[_0xa6f3('0x26')](respondWithResult(_0x477699,0xc9))[_0xa6f3('0x46')](handleError(_0x477699,null));};exports[_0xa6f3('0x25')]=function(_0x4ec791,_0x4ead11){if(_0x4ec791[_0xa6f3('0x48')]['id']){delete _0x4ec791[_0xa6f3('0x48')]['id'];}return db['VoiceQueuesLog'][_0xa6f3('0x45')]({'where':{'id':_0x4ec791['params']['id']}})[_0xa6f3('0x26')](handleEntityNotFound(_0x4ead11,null))[_0xa6f3('0x26')](saveUpdates(_0x4ec791['body'],null))[_0xa6f3('0x26')](respondWithResult(_0x4ead11,null))[_0xa6f3('0x46')](handleError(_0x4ead11,null));};exports[_0xa6f3('0x49')]=function(_0x1b2a01,_0x3b9342){return db[_0xa6f3('0x43')][_0xa6f3('0x45')]({'where':{'id':_0x1b2a01['params']['id']}})[_0xa6f3('0x26')](handleEntityNotFound(_0x3b9342,null))[_0xa6f3('0x26')](removeEntity(_0x3b9342,null))[_0xa6f3('0x46')](handleError(_0x3b9342,null));};
\ No newline at end of file
index b869ce7..101d650 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f7b=['define','VoiceQueuesLog','event_dtm','event','dtm','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceQueuesLog.attributes'];(function(_0x2d138a,_0x38524c){var _0x1c13e9=function(_0x342d00){while(--_0x342d00){_0x2d138a['push'](_0x2d138a['shift']());}};_0x1c13e9(++_0x38524c);}(_0x5f7b,0x104));var _0xb5f7=function(_0x2aea9e,_0x1f587f){_0x2aea9e=_0x2aea9e-0x0;var _0x430b92=_0x5f7b[_0x2aea9e];return _0x430b92;};'use strict';var _=require(_0xb5f7('0x0'));var util=require(_0xb5f7('0x1'));var logger=require(_0xb5f7('0x2'))('api');var moment=require(_0xb5f7('0x3'));var BPromise=require(_0xb5f7('0x4'));var rp=require(_0xb5f7('0x5'));var fs=require('fs');var path=require(_0xb5f7('0x6'));var rimraf=require(_0xb5f7('0x7'));var config=require(_0xb5f7('0x8'));var attributes=require(_0xb5f7('0x9'));module['exports']=function(_0x3007ac,_0xf37959){return _0x3007ac[_0xb5f7('0xa')](_0xb5f7('0xb'),attributes,{'tableName':'voice_queues_log','paranoid':![],'indexes':[{'name':_0xb5f7('0xc'),'fields':[_0xb5f7('0xd'),_0xb5f7('0xe')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x47c2=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceQueuesLog.attributes','exports','define','VoiceQueuesLog','event_dtm','dtm','lodash','util'];(function(_0x57b65f,_0x1e6bc7){var _0x317d05=function(_0x139d8f){while(--_0x139d8f){_0x57b65f['push'](_0x57b65f['shift']());}};_0x317d05(++_0x1e6bc7);}(_0x47c2,0x1ae));var _0x247c=function(_0x125dea,_0xb160c1){_0x125dea=_0x125dea-0x0;var _0x3f612a=_0x47c2[_0x125dea];return _0x3f612a;};'use strict';var _=require(_0x247c('0x0'));var util=require(_0x247c('0x1'));var logger=require(_0x247c('0x2'))(_0x247c('0x3'));var moment=require(_0x247c('0x4'));var BPromise=require(_0x247c('0x5'));var rp=require(_0x247c('0x6'));var fs=require('fs');var path=require(_0x247c('0x7'));var rimraf=require(_0x247c('0x8'));var config=require(_0x247c('0x9'));var attributes=require(_0x247c('0xa'));module[_0x247c('0xb')]=function(_0x233af5,_0x233e90){return _0x233af5[_0x247c('0xc')](_0x247c('0xd'),attributes,{'tableName':'voice_queues_log','paranoid':![],'indexes':[{'name':_0x247c('0xe'),'fields':['event',_0x247c('0xf')]}],'timestamps':![]});};
\ No newline at end of file
index c6ded7c..d9ca8d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50c3=['bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','http','request','then','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','result','catch','lodash','util','moment'];(function(_0x147232,_0xf9894d){var _0x3ef0e8=function(_0x5893fe){while(--_0x5893fe){_0x147232['push'](_0x147232['shift']());}};_0x3ef0e8(++_0xf9894d);}(_0x50c3,0x81));var _0x350c=function(_0x345fbb,_0x44d54a){_0x345fbb=_0x345fbb-0x0;var _0xa0e3de=_0x50c3[_0x345fbb];return _0xa0e3de;};'use strict';var _=require(_0x350c('0x0'));var util=require(_0x350c('0x1'));var moment=require(_0x350c('0x2'));var BPromise=require(_0x350c('0x3'));var rs=require(_0x350c('0x4'));var fs=require('fs');var Redis=require(_0x350c('0x5'));var db=require(_0x350c('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x350c('0x7'))(_0x350c('0x8'));var config=require(_0x350c('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x350c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4028b2,_0x737ae1,_0x1f1500){return new BPromise(function(_0x1b9758,_0x3bc4c7){return client[_0x350c('0xb')](_0x4028b2,_0x1f1500)[_0x350c('0xc')](function(_0x40fb2c){logger['info'](_0x350c('0xd'),_0x737ae1,_0x350c('0xe'));logger[_0x350c('0xf')]('VoiceQueuesLog,\x20%s,\x20%s,\x20%s',_0x737ae1,'request\x20sent',JSON['stringify'](_0x40fb2c));if(_0x40fb2c[_0x350c('0x10')]){if(_0x40fb2c[_0x350c('0x10')][_0x350c('0x11')]===0x1f4){logger['error'](_0x350c('0xd'),_0x737ae1,_0x40fb2c[_0x350c('0x10')][_0x350c('0x12')]);return _0x3bc4c7(_0x40fb2c[_0x350c('0x10')][_0x350c('0x12')]);}logger['error'](_0x350c('0xd'),_0x737ae1,_0x40fb2c['error'][_0x350c('0x12')]);return _0x1b9758(_0x40fb2c['error'][_0x350c('0x12')]);}else{logger[_0x350c('0x13')](_0x350c('0xd'),_0x737ae1,_0x350c('0xe'));_0x1b9758(_0x40fb2c[_0x350c('0x14')][_0x350c('0x12')]);}})[_0x350c('0x15')](function(_0x123a48){logger[_0x350c('0x10')](_0x350c('0xd'),_0x737ae1,_0x123a48);_0x3bc4c7(_0x123a48);});});}
\ No newline at end of file
+var _0x87ae=['debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','moment','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','then','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent'];(function(_0x363ef8,_0x4ecb1a){var _0x148822=function(_0x232634){while(--_0x232634){_0x363ef8['push'](_0x363ef8['shift']());}};_0x148822(++_0x4ecb1a);}(_0x87ae,0xf5));var _0xe87a=function(_0x6a0266,_0x1552d6){_0x6a0266=_0x6a0266-0x0;var _0x309e00=_0x87ae[_0x6a0266];return _0x309e00;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe87a('0x0'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe87a('0x1'));var db=require(_0xe87a('0x2'))['db'];var utils=require(_0xe87a('0x3'));var logger=require('../../config/logger')(_0xe87a('0x4'));var config=require(_0xe87a('0x5'));var jayson=require(_0xe87a('0x6'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x125dd3,_0x2fbd6b,_0x5dff22){return new BPromise(function(_0x379db4,_0x455b3a){return client['request'](_0x125dd3,_0x5dff22)[_0xe87a('0x7')](function(_0x278d7c){logger['info'](_0xe87a('0x8'),_0x2fbd6b,_0xe87a('0x9'));logger[_0xe87a('0xa')](_0xe87a('0xb'),_0x2fbd6b,_0xe87a('0x9'),JSON[_0xe87a('0xc')](_0x278d7c));if(_0x278d7c['error']){if(_0x278d7c['error'][_0xe87a('0xd')]===0x1f4){logger[_0xe87a('0xe')](_0xe87a('0x8'),_0x2fbd6b,_0x278d7c['error'][_0xe87a('0xf')]);return _0x455b3a(_0x278d7c[_0xe87a('0xe')]['message']);}logger[_0xe87a('0xe')](_0xe87a('0x8'),_0x2fbd6b,_0x278d7c[_0xe87a('0xe')]['message']);return _0x379db4(_0x278d7c['error']['message']);}else{logger['info'](_0xe87a('0x8'),_0x2fbd6b,_0xe87a('0x9'));_0x379db4(_0x278d7c[_0xe87a('0x10')][_0xe87a('0xf')]);}})['catch'](function(_0x415147){logger[_0xe87a('0xe')]('VoiceQueuesLog,\x20%s,\x20%s',_0x2fbd6b,_0x415147);_0x455b3a(_0x415147);});});}
\ No newline at end of file
index 26a2dab..272438e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa17e=['../../config/environment','./voiceRecording.controller','get','index','/describe','isAuthenticated','describe','/:id','show','download','/:id/downloads','/:id/transcribe','downloadTranscribe','create','post','runTranscribe','put','delete','destroy','exports','multer','connect-timeout','fs-extra','../../components/interaction/service'];(function(_0x381589,_0x27a707){var _0x2a075d=function(_0x4ea19d){while(--_0x4ea19d){_0x381589['push'](_0x381589['shift']());}};_0x2a075d(++_0x27a707);}(_0xa17e,0x14c));var _0xea17=function(_0x1cc768,_0x5c2ce7){_0x1cc768=_0x1cc768-0x0;var _0x4d3b6e=_0xa17e[_0x1cc768];return _0x4d3b6e;};'use strict';var multer=require(_0xea17('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xea17('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xea17('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0xea17('0x3'));var config=require(_0xea17('0x4'));var controller=require(_0xea17('0x5'));router[_0xea17('0x6')]('/',auth['isAuthenticated'](),controller[_0xea17('0x7')]);router[_0xea17('0x6')](_0xea17('0x8'),auth[_0xea17('0x9')](),controller[_0xea17('0xa')]);router[_0xea17('0x6')](_0xea17('0xb'),auth[_0xea17('0x9')](),controller[_0xea17('0xc')]);router['get']('/:id/download',auth['isAuthenticated'](),controller[_0xea17('0xd')]);router[_0xea17('0x6')](_0xea17('0xe'),controller['downloads']);router[_0xea17('0x6')](_0xea17('0xf'),auth[_0xea17('0x9')](),controller[_0xea17('0x10')]);router['post']('/',auth[_0xea17('0x9')](),controller[_0xea17('0x11')]);router[_0xea17('0x12')]('/:id/transcribe',auth[_0xea17('0x9')](),controller[_0xea17('0x13')]);router[_0xea17('0x14')](_0xea17('0xb'),auth[_0xea17('0x9')](),controller['update']);router[_0xea17('0x15')](_0xea17('0xb'),auth[_0xea17('0x9')](),controller[_0xea17('0x16')]);module[_0xea17('0x17')]=router;
\ No newline at end of file
+var _0xe96b=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceRecording.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/download','download','/:id/downloads','downloads','/:id/transcribe','post','runTranscribe','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x3aa131,_0x3342b7){var _0x35d256=function(_0x3a9311){while(--_0x3a9311){_0x3aa131['push'](_0x3aa131['shift']());}};_0x35d256(++_0x3342b7);}(_0xe96b,0x83));var _0xbe96=function(_0x56f481,_0x41b55e){_0x56f481=_0x56f481-0x0;var _0x3a6cc2=_0xe96b[_0x56f481];return _0x3a6cc2;};'use strict';var multer=require(_0xbe96('0x0'));var util=require(_0xbe96('0x1'));var path=require(_0xbe96('0x2'));var timeout=require(_0xbe96('0x3'));var express=require(_0xbe96('0x4'));var router=express[_0xbe96('0x5')]();var fs_extra=require(_0xbe96('0x6'));var auth=require(_0xbe96('0x7'));var interaction=require(_0xbe96('0x8'));var config=require(_0xbe96('0x9'));var controller=require(_0xbe96('0xa'));router[_0xbe96('0xb')]('/',auth[_0xbe96('0xc')](),controller[_0xbe96('0xd')]);router[_0xbe96('0xb')](_0xbe96('0xe'),auth[_0xbe96('0xc')](),controller['describe']);router[_0xbe96('0xb')](_0xbe96('0xf'),auth['isAuthenticated'](),controller[_0xbe96('0x10')]);router[_0xbe96('0xb')](_0xbe96('0x11'),auth[_0xbe96('0xc')](),controller[_0xbe96('0x12')]);router['get'](_0xbe96('0x13'),controller[_0xbe96('0x14')]);router[_0xbe96('0xb')](_0xbe96('0x15'),auth[_0xbe96('0xc')](),controller['downloadTranscribe']);router[_0xbe96('0x16')]('/',auth[_0xbe96('0xc')](),controller['create']);router[_0xbe96('0x16')]('/:id/transcribe',auth[_0xbe96('0xc')](),controller[_0xbe96('0x17')]);router['put'](_0xbe96('0xf'),auth[_0xbe96('0xc')](),controller['update']);router[_0xbe96('0x18')](_0xbe96('0xf'),auth[_0xbe96('0xc')](),controller[_0xbe96('0x19')]);module[_0xbe96('0x1a')]=router;
\ No newline at end of file
index 2f21f73..922409d 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(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1c546c,_0x5c57cb){_0x1c546c=_0x1c546c-0x0;var _0x2cc384=_0xa9e0[_0x1c546c];return _0x2cc384;};'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(_0x39096d,_0x51f8a0){var _0x13da4f=function(_0x11e6b2){while(--_0x11e6b2){_0x39096d['push'](_0x39096d['shift']());}};_0x13da4f(++_0x51f8a0);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0xa9e0[_0xbca1b1];return _0x4e1686;};'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 81a0e5e..33c3765 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8a1=['../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','index','rawAttributes','fieldName','type','model','differenceBy','map','format','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','merge','where','VIRTUAL','filter','options','includeAll','include','VoiceRecording','rows','catch','params','find','create','body','describe','download','../../components/encryptor','value','%s.cypher','decryptFile','recording','existsSync','Sequelize','ValidationError','VoiceRecording\x20not\x20found','filename','extname','unlink','downloads','sequelize','MD5','col','uniqueid','push','secrets','isNil','Entity\x20not\x20found','cancellazione\x20fisica\x20documento\x20%s','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','listBuckets','createBucket','upload','TranscribeService','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','readFileSync','bucket','Bucket','location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','Location','TranscriptionJob','TranscriptionJobName','transcribeName','transcribeStatus','runTranscribe','findOne','Voice\x20Recording\x20not\x20found','Setting','transcribe','transcribeAccountId','transcribeRegion','Transcribe\x20not\x20configured','runSentiment','sentiment','sentimentAccountId','sentimentRegion','language','CloudProvider','Cloud\x20Provider\x20not\x20available','data2','Cloud\x20Provider\x20not\x20configured','data1','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','tempSentiment','updateAttributes','writeFile','fileText','.txt','rimraf','zip-dir','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','uuid/v4','ioredis','../../components/auth/service'];(function(_0xba7753,_0x25c9bf){var _0x5ad2e0=function(_0x2d6ebf){while(--_0x2d6ebf){_0xba7753['push'](_0xba7753['shift']());}};_0x5ad2e0(++_0x25c9bf);}(_0xd8a1,0x1a5));var _0x1d8a=function(_0xe7abe5,_0x1550de){_0xe7abe5=_0xe7abe5-0x0;var _0x23286b=_0xd8a1[_0xe7abe5];return _0x23286b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1d8a('0x0'));var zipdir=require(_0x1d8a('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x1d8a('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x1d8a('0x3'));var util=require(_0x1d8a('0x4'));var path=require(_0x1d8a('0x5'));var sox=require('sox');var csv=require(_0x1d8a('0x6'));var ejs=require(_0x1d8a('0x7'));var fs=require('fs');var fs_extra=require(_0x1d8a('0x8'));var _=require(_0x1d8a('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x1d8a('0xa'));var deskjs=require(_0x1d8a('0xb'));var toCsv=require(_0x1d8a('0x6'));var querystring=require(_0x1d8a('0xc'));var Papa=require(_0x1d8a('0xd'));var AWS=require('aws-sdk');var uuidv4=require(_0x1d8a('0xe'));var Redis=require(_0x1d8a('0xf'));var authService=require(_0x1d8a('0x10'));var qs=require(_0x1d8a('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x1d8a('0x12'))(_0x1d8a('0x13'));var utils=require(_0x1d8a('0x14'));var config=require(_0x1d8a('0x15'));var licenseUtil=require(_0x1d8a('0x16'));var db=require(_0x1d8a('0x17'))['db'];function respondWithStatusCode(_0x1a9b08,_0xadc1f6){_0xadc1f6=_0xadc1f6||0xcc;return function(_0x5dd32f){if(_0x5dd32f){return _0x1a9b08[_0x1d8a('0x18')](_0xadc1f6);}return _0x1a9b08[_0x1d8a('0x19')](_0xadc1f6)[_0x1d8a('0x1a')]();};}function respondWithResult(_0x2cecc1,_0x2dead7){_0x2dead7=_0x2dead7||0xc8;return function(_0x21f5d3){if(_0x21f5d3){return _0x2cecc1[_0x1d8a('0x19')](_0x2dead7)[_0x1d8a('0x1b')](_0x21f5d3);}};}function respondWithFilteredResult(_0x365df5,_0x4e0f65){return function(_0x3a2ced){if(_0x3a2ced){var _0x63eb0c=typeof _0x4e0f65[_0x1d8a('0x1c')]==='undefined'&&typeof _0x4e0f65[_0x1d8a('0x1d')]===_0x1d8a('0x1e');var _0x8baad9=_0x3a2ced[_0x1d8a('0x1f')];var _0x251050=_0x63eb0c?0x0:_0x4e0f65[_0x1d8a('0x1c')];var _0x2eb372=_0x63eb0c?_0x3a2ced[_0x1d8a('0x1f')]:_0x4e0f65[_0x1d8a('0x1c')]+_0x4e0f65[_0x1d8a('0x1d')];var _0x506751;if(_0x2eb372>=_0x8baad9){_0x2eb372=_0x8baad9;_0x506751=0xc8;}else{_0x506751=0xce;}_0x365df5['status'](_0x506751);return _0x365df5[_0x1d8a('0x20')](_0x1d8a('0x21'),_0x251050+'-'+_0x2eb372+'/'+_0x8baad9)[_0x1d8a('0x1b')](_0x3a2ced);}return null;};}function patchUpdates(_0x227ecd){return function(_0x19271b){try{jsonpatch[_0x1d8a('0x22')](_0x19271b,_0x227ecd,!![]);}catch(_0x4c5f7a){return BPromise['reject'](_0x4c5f7a);}return _0x19271b[_0x1d8a('0x23')]();};}function saveUpdates(_0x718dbf,_0x4b387d){return function(_0x3447c6){if(_0x3447c6){return _0x3447c6[_0x1d8a('0x24')](_0x718dbf)[_0x1d8a('0x25')](function(_0x5eeaf0){return _0x5eeaf0;});}return null;};}function removeEntity(_0xa672e5,_0x3d6037){return function(_0x2840ec){if(_0x2840ec){return _0x2840ec[_0x1d8a('0x26')]()[_0x1d8a('0x25')](function(){_0xa672e5[_0x1d8a('0x19')](0xcc)[_0x1d8a('0x1a')]();});}};}function handleEntityNotFound(_0x5cb13e,_0xfeb0e3){return function(_0x20c633){if(!_0x20c633){_0x5cb13e[_0x1d8a('0x18')](0x194);}return _0x20c633;};}function handleError(_0x3d9c3c,_0x9f28ed){_0x9f28ed=_0x9f28ed||0x1f4;return function(_0x3b4fe5){logger[_0x1d8a('0x27')](_0x3b4fe5[_0x1d8a('0x28')]);if(_0x3b4fe5[_0x1d8a('0x29')]){delete _0x3b4fe5[_0x1d8a('0x29')];}_0x3d9c3c[_0x1d8a('0x19')](_0x9f28ed)[_0x1d8a('0x2a')](_0x3b4fe5);};}exports[_0x1d8a('0x2b')]=function(_0xae61d9,_0x508fb4){var _0x46ca54={},_0x4d73ce={},_0x3cb8d0={'count':0x0,'rows':[]};var _0x432ccd=_['map'](db['VoiceRecording'][_0x1d8a('0x2c')],function(_0x5de222){return{'name':_0x5de222[_0x1d8a('0x2d')],'type':_0x5de222[_0x1d8a('0x2e')]['key']};});_0x4d73ce[_0x1d8a('0x2f')]=_[_0x1d8a('0x30')](_[_0x1d8a('0x31')](_0x432ccd,_0x1d8a('0x29')),[_0x1d8a('0x32')]);_0x4d73ce['query']=_[_0x1d8a('0x33')](_0xae61d9[_0x1d8a('0x34')]);_0x4d73ce[_0x1d8a('0x35')]=_[_0x1d8a('0x36')](_0x4d73ce[_0x1d8a('0x2f')],_0x4d73ce['query']);_0x46ca54[_0x1d8a('0x37')]=_['intersection'](_0x4d73ce[_0x1d8a('0x2f')],qs[_0x1d8a('0x38')](_0xae61d9[_0x1d8a('0x34')][_0x1d8a('0x38')]));_0x46ca54['attributes']=_0x46ca54[_0x1d8a('0x37')][_0x1d8a('0x39')]?_0x46ca54[_0x1d8a('0x37')]:_0x4d73ce['model'];if(!_0xae61d9[_0x1d8a('0x34')][_0x1d8a('0x3a')](_0x1d8a('0x3b'))){_0x46ca54[_0x1d8a('0x1d')]=qs[_0x1d8a('0x1d')](_0xae61d9['query'][_0x1d8a('0x1d')]);_0x46ca54[_0x1d8a('0x1c')]=qs['offset'](_0xae61d9[_0x1d8a('0x34')][_0x1d8a('0x1c')]);}_0x46ca54['order']=qs[_0x1d8a('0x3c')](_0xae61d9[_0x1d8a('0x34')]['sort']);_0x46ca54['where']=qs['filters'](_['pick'](_0xae61d9['query'],_0x4d73ce[_0x1d8a('0x35')]),_0x432ccd);if(_0xae61d9[_0x1d8a('0x34')]['filter']){_0x46ca54['where']=_[_0x1d8a('0x3d')](_0x46ca54[_0x1d8a('0x3e')],{'$or':_[_0x1d8a('0x31')](_0x432ccd,function(_0x317260){if(_0x317260['type']!==_0x1d8a('0x3f')){var _0x4bec1b={};_0x4bec1b[_0x317260[_0x1d8a('0x29')]]={'$like':'%'+_0xae61d9[_0x1d8a('0x34')][_0x1d8a('0x40')]+'%'};return _0x4bec1b;}})});}_0x46ca54=_['merge']({},_0x46ca54,_0xae61d9[_0x1d8a('0x41')]);var _0x22cd7b={'where':_0x46ca54[_0x1d8a('0x3e')]};return db['VoiceRecording'][_0x1d8a('0x1f')](_0x22cd7b)[_0x1d8a('0x25')](function(_0x1d0d18){_0x3cb8d0['count']=_0x1d0d18;if(_0xae61d9[_0x1d8a('0x34')][_0x1d8a('0x42')]){_0x46ca54[_0x1d8a('0x43')]=[{'all':!![]}];}return db[_0x1d8a('0x44')]['findAll'](_0x46ca54);})[_0x1d8a('0x25')](function(_0x1a22ff){_0x3cb8d0[_0x1d8a('0x45')]=_0x1a22ff;return _0x3cb8d0;})[_0x1d8a('0x25')](respondWithFilteredResult(_0x508fb4,_0x46ca54))[_0x1d8a('0x46')](handleError(_0x508fb4,null));};exports['show']=function(_0x10b711,_0x55c916){var _0x12ef2d={'raw':![],'where':{'id':_0x10b711[_0x1d8a('0x47')]['id']}},_0x149339={};_0x149339['model']=_[_0x1d8a('0x33')](db[_0x1d8a('0x44')]['rawAttributes']);_0x149339[_0x1d8a('0x34')]=_[_0x1d8a('0x33')](_0x10b711['query']);_0x149339[_0x1d8a('0x35')]=_[_0x1d8a('0x36')](_0x149339['model'],_0x149339[_0x1d8a('0x34')]);_0x12ef2d[_0x1d8a('0x37')]=_[_0x1d8a('0x36')](_0x149339['model'],qs[_0x1d8a('0x38')](_0x10b711[_0x1d8a('0x34')][_0x1d8a('0x38')]));_0x12ef2d[_0x1d8a('0x37')]=_0x12ef2d[_0x1d8a('0x37')][_0x1d8a('0x39')]?_0x12ef2d[_0x1d8a('0x37')]:_0x149339[_0x1d8a('0x2f')];if(_0x10b711[_0x1d8a('0x34')][_0x1d8a('0x42')]){_0x12ef2d[_0x1d8a('0x43')]=[{'all':!![]}];}_0x12ef2d=_[_0x1d8a('0x3d')]({},_0x12ef2d,_0x10b711[_0x1d8a('0x41')]);return db[_0x1d8a('0x44')][_0x1d8a('0x48')](_0x12ef2d)[_0x1d8a('0x25')](handleEntityNotFound(_0x55c916,null))['then'](respondWithResult(_0x55c916,null))[_0x1d8a('0x46')](handleError(_0x55c916,null));};exports[_0x1d8a('0x49')]=function(_0x55a9b0,_0x57730c){return db[_0x1d8a('0x44')][_0x1d8a('0x49')](_0x55a9b0[_0x1d8a('0x4a')],{})['then'](respondWithResult(_0x57730c,0xc9))[_0x1d8a('0x46')](handleError(_0x57730c,null));};exports[_0x1d8a('0x24')]=function(_0x1614eb,_0x523f48){if(_0x1614eb[_0x1d8a('0x4a')]['id']){delete _0x1614eb['body']['id'];}return db[_0x1d8a('0x44')][_0x1d8a('0x48')]({'where':{'id':_0x1614eb['params']['id']}})[_0x1d8a('0x25')](handleEntityNotFound(_0x523f48,null))['then'](saveUpdates(_0x1614eb[_0x1d8a('0x4a')],null))[_0x1d8a('0x25')](respondWithResult(_0x523f48,null))[_0x1d8a('0x46')](handleError(_0x523f48,null));};exports['describe']=function(_0x451d26,_0x24abec){return db['VoiceRecording'][_0x1d8a('0x4b')]()[_0x1d8a('0x25')](respondWithResult(_0x24abec,null))[_0x1d8a('0x46')](handleError(_0x24abec,null));};exports[_0x1d8a('0x4c')]=function(_0x541da6,_0x493837,_0x26f3ed){var _0x2b408f=require(_0x1d8a('0x4d'));var _0x2cc245=![];var _0x38a146={};if(_0x541da6[_0x1d8a('0x34')][_0x1d8a('0x2e')]&&_0x541da6[_0x1d8a('0x34')][_0x1d8a('0x2e')]==='uniqueid'){_0x38a146['uniqueid']=_0x541da6[_0x1d8a('0x47')]['id'];}else{_0x38a146['id']=_0x541da6[_0x1d8a('0x47')]['id'];}return db['VoiceRecording']['find']({'where':_0x38a146,'attributes':['id',_0x1d8a('0x4e')],'raw':!![]})['then'](handleEntityNotFound(_0x493837,null))[_0x1d8a('0x25')](function(_0x423047){if(_0x423047){var _0x13dd95=_0x423047[_0x1d8a('0x4e')];var _0x34faa0=util[_0x1d8a('0x32')](_0x1d8a('0x4f'),_0x13dd95);if(fs['existsSync'](_0x34faa0)){_0x2cc245=!![];return _0x2b408f[_0x1d8a('0x50')](_0x34faa0,_0x13dd95,config['secrets'][_0x1d8a('0x51')])[_0x1d8a('0x25')](function(){return _0x423047;});}return _0x423047;}})[_0x1d8a('0x25')](function(_0x2cb817){if(_0x2cb817){var _0x33b42a=_0x2cb817[_0x1d8a('0x4e')];if(!fs[_0x1d8a('0x52')](_0x33b42a)){throw new db[(_0x1d8a('0x53'))][(_0x1d8a('0x54'))](_0x1d8a('0x55'));}if(_0x2cb817[_0x1d8a('0x56')]){return _0x493837[_0x1d8a('0x4c')](_0x33b42a,_0x2cb817['filename']+path[_0x1d8a('0x57')](_0x33b42a),function(){if(_0x2cc245){fs[_0x1d8a('0x58')](_0x33b42a);}});}else{return _0x493837[_0x1d8a('0x4c')](_0x33b42a,function(_0x3923a7){if(_0x2cc245){fs[_0x1d8a('0x58')](_0x33b42a);}});}}})['catch'](function(_0x3e1cd9){if(_0x3e1cd9['message']===_0x1d8a('0x55')){_0x493837[_0x1d8a('0x19')](0x194)[_0x1d8a('0x2a')]('Not\x20found');}else{return handleError(_0x493837,null);}});};exports[_0x1d8a('0x59')]=function(_0x47a2a3,_0x209907,_0x5aa363){var _0x22abf9=require(_0x1d8a('0x4d'));var _0x58b71c=![];var _0x107c02={'$and':[db[_0x1d8a('0x5a')][_0x1d8a('0x3e')](db['sequelize']['fn'](_0x1d8a('0x5b'),db[_0x1d8a('0x5a')][_0x1d8a('0x5c')]('uniqueid')),_0x47a2a3[_0x1d8a('0x34')]['token'])]};if(_0x47a2a3['query'][_0x1d8a('0x2e')]&&_0x47a2a3[_0x1d8a('0x34')][_0x1d8a('0x2e')]===_0x1d8a('0x5d')){_0x107c02['$and'][_0x1d8a('0x5e')]({'uniqueid':_0x47a2a3['params']['id']});}else{_0x107c02['$and'][_0x1d8a('0x5e')]({'id':_0x47a2a3[_0x1d8a('0x47')]['id']});}return db[_0x1d8a('0x44')]['find']({'where':_0x107c02,'attributes':['id',_0x1d8a('0x4e')],'raw':!![]})[_0x1d8a('0x25')](handleEntityNotFound(_0x209907,null))[_0x1d8a('0x25')](function(_0x4ad145){if(_0x4ad145){var _0x293678=util[_0x1d8a('0x32')](_0x1d8a('0x4f'),_0x4ad145[_0x1d8a('0x4e')]);if(fs['existsSync'](_0x293678)){_0x58b71c=!![];return _0x22abf9[_0x1d8a('0x50')](_0x293678,_0x4ad145[_0x1d8a('0x4e')],config[_0x1d8a('0x5f')][_0x1d8a('0x51')])[_0x1d8a('0x25')](function(){return _0x4ad145;});}return _0x4ad145;}})['then'](function(_0x397f2a){if(_0x397f2a){if(!fs['existsSync'](_0x397f2a['value'])){throw new db[(_0x1d8a('0x53'))][(_0x1d8a('0x54'))](_0x1d8a('0x55'));}if(_0x397f2a[_0x1d8a('0x56')]){return _0x209907[_0x1d8a('0x4c')](_0x397f2a['value'],_0x397f2a[_0x1d8a('0x56')]+path[_0x1d8a('0x57')](_0x397f2a[_0x1d8a('0x4e')]),function(){if(_0x58b71c){fs['unlink'](_0x397f2a[_0x1d8a('0x4e')]);}});}else{return _0x209907['download'](_0x397f2a[_0x1d8a('0x4e')],function(_0xc7a1b9){if(_0x58b71c){fs[_0x1d8a('0x58')](_0x397f2a[_0x1d8a('0x4e')]);}});}}})[_0x1d8a('0x46')](handleError(_0x209907,null));};exports['destroy']=function(_0x45951a,_0x318efd){return db['VoiceRecording'][_0x1d8a('0x48')]({'where':{'id':_0x45951a[_0x1d8a('0x47')]['id']}})[_0x1d8a('0x25')](function(_0x202b5a){if(_[_0x1d8a('0x60')](_0x202b5a)){throw new ReferenceError(_0x1d8a('0x61'));}return _0x202b5a;})['then'](function(_0x6ff0b1){var _0x301cd9=_0x6ff0b1[_0x1d8a('0x4e')];logger['info'](_0x1d8a('0x62'),_0x301cd9);if(!_['isNil'](_0x6ff0b1['value'])&&fs[_0x1d8a('0x52')](_0x301cd9)){logger[_0x1d8a('0x63')]('File:\x20\x22'+_0x301cd9+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs['unlinkSync'](_0x301cd9);}_0x301cd9=_0x301cd9+'.cypher';if(!_['isNil'](_0x6ff0b1[_0x1d8a('0x4e')])&&fs[_0x1d8a('0x52')](_0x301cd9)){logger[_0x1d8a('0x63')](_0x1d8a('0x64')+_0x301cd9+_0x1d8a('0x65'));fs[_0x1d8a('0x66')](_0x301cd9);}return _0x6ff0b1;})['then'](function(_0x168d7a){if(!_0x168d7a)throw new InternalError();return _0x168d7a[_0x1d8a('0x26')]();})['then'](function(){_0x318efd[_0x1d8a('0x19')](0xcc)[_0x1d8a('0x1a')]();})[_0x1d8a('0x46')](handleError(_0x318efd,null));};function getBucketslist(_0x13f904,_0x297ff9,_0x3aab27){return new Promise(function(_0x103c64,_0x28878d){var _0x201aad=new AWS['S3']({'accessKeyId':_0x297ff9,'secretAccessKey':_0x13f904,'region':_0x3aab27});_0x201aad[_0x1d8a('0x67')]({},function(_0x10dd5c,_0x3f5002){if(_0x10dd5c){return _0x28878d(_0x10dd5c);}else{return _0x103c64(_0x3f5002);}});});}function createBucket(_0x249959,_0x2b53ab,_0x18baef,_0x1fbfff){return new Promise(function(_0xbd4b7c,_0x541fb5){var _0x1092a4=new AWS['S3']({'accessKeyId':_0x2b53ab,'secretAccessKey':_0x249959,'region':_0x18baef});_0x1092a4[_0x1d8a('0x68')]({'Bucket':_0x1fbfff},function(_0x96b71e,_0x2da5aa){if(_0x96b71e){return _0x541fb5(_0x96b71e);}else{return _0xbd4b7c(_0x2da5aa);}});});}function uploadFile(_0x7052f8,_0x4719e8,_0xa2dd25,_0x3a4e84,_0x3d8b46,_0x376ddc){return new Promise(function(_0xe2bdb4,_0x2a89fd){var _0x155455=new AWS['S3']({'accessKeyId':_0x4719e8,'secretAccessKey':_0x7052f8,'region':_0xa2dd25});_0x155455[_0x1d8a('0x69')]({'Bucket':_0x3a4e84,'Key':_0x3d8b46,'Body':_0x376ddc},function(_0x122981,_0x2af019){if(_0x122981){return _0x2a89fd(_0x122981);}else{return _0xe2bdb4(_0x2af019);}});});}function startTranscribe(_0x134977,_0x1275b8,_0x352f9d,_0x1746e6,_0x544d76,_0xd6ff05){return new Promise(function(_0x23e268,_0x203221){var _0x330487=new AWS[(_0x1d8a('0x6a'))]({'accessKeyId':_0x1275b8,'secretAccessKey':_0x134977,'region':_0x352f9d});_0x330487['startTranscriptionJob']({'TranscriptionJobName':_0x1746e6,'LanguageCode':_0x544d76,'Media':{'MediaFileUri':_0xd6ff05}},function(_0x5d7dd8,_0xdfd439){if(_0x5d7dd8){return _0x203221(_0x5d7dd8);}else{return _0x23e268(_0xdfd439);}});});}function transcribe(_0xa9714c,_0x3a8c2f,_0x270fbd,_0x5648dc,_0x1673fe,_0x5bda27,_0x3c5045){return new Promise(function(_0x1ae123,_0xeec63e){var _0x4a6e7e={};logger[_0x1d8a('0x63')](util[_0x1d8a('0x32')](_0x1d8a('0x6b'),_0xa9714c,_0x1673fe));return uploadFile(_0x3a8c2f,_0x270fbd,_0x5648dc,_0x1673fe,path[_0x1d8a('0x6c')](_0x5bda27),fs[_0x1d8a('0x6d')](_0x5bda27))[_0x1d8a('0x25')](function(_0x194a66){logger[_0x1d8a('0x63')](util[_0x1d8a('0x32')]('[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)',_0xa9714c,_0x1673fe,_0x194a66['Location']));_0x4a6e7e[_0x1d8a('0x6e')]=_0x194a66[_0x1d8a('0x6f')];_0x4a6e7e[_0x1d8a('0x70')]=_0x194a66['Location'];logger[_0x1d8a('0x63')](util['format'](_0x1d8a('0x71'),_0xa9714c));return startTranscribe(_0x3a8c2f,_0x270fbd,_0x5648dc,uuidv4(),_0x3c5045,_0x194a66[_0x1d8a('0x72')]);})[_0x1d8a('0x25')](function(_0x150ecd){logger[_0x1d8a('0x63')](util['format']('[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created',_0xa9714c,_0x150ecd[_0x1d8a('0x73')][_0x1d8a('0x74')]));_0x4a6e7e[_0x1d8a('0x75')]=_0x150ecd['TranscriptionJob'][_0x1d8a('0x74')];_0x4a6e7e[_0x1d8a('0x76')]=_0x150ecd['TranscriptionJob']['TranscriptionJobStatus'];return _0x1ae123(_0x4a6e7e);})[_0x1d8a('0x46')](function(_0x26109c){return _0xeec63e(_0x26109c);});});}exports[_0x1d8a('0x77')]=function(_0x5bd731,_0x1fc749,_0x3190fd){var _0x4e3b83;var _0x449721;var _0x46c5d1;var _0x4b8471=require(_0x1d8a('0x4d'));return db[_0x1d8a('0x44')][_0x1d8a('0x78')]({'where':{'id':_0x5bd731[_0x1d8a('0x47')]['id']}})[_0x1d8a('0x25')](function(_0x1e7125){if(_0x1e7125){var _0x213129=util[_0x1d8a('0x32')](_0x1d8a('0x4f'),_0x1e7125[_0x1d8a('0x4e')]);if(fs[_0x1d8a('0x52')](_0x213129)){cypher=!![];return _0x4b8471[_0x1d8a('0x50')](_0x213129,_0x1e7125[_0x1d8a('0x4e')],config[_0x1d8a('0x5f')]['recording'])[_0x1d8a('0x25')](function(){return _0x1e7125;});}return _0x1e7125;}})[_0x1d8a('0x25')](function(_0x35001a){if(!_0x35001a){throw new db['Sequelize'][(_0x1d8a('0x54'))](_0x1d8a('0x79'));}_0x449721=_0x35001a;return db[_0x1d8a('0x7a')][_0x1d8a('0x78')]({'where':{'id':0x1}});})[_0x1d8a('0x25')](handleEntityNotFound(_0x1fc749,null))[_0x1d8a('0x25')](function(_0x2bc9a9){if(_0x2bc9a9){_0x4e3b83=_0x2bc9a9;if(!_0x4e3b83[_0x1d8a('0x7b')]||!_0x4e3b83[_0x1d8a('0x7c')]||!_0x4e3b83[_0x1d8a('0x7d')]||!_0x4e3b83['language']||!_0x4e3b83['bucket']){throw new db[(_0x1d8a('0x53'))][(_0x1d8a('0x54'))](_0x1d8a('0x7e'));}if(_0x5bd731[_0x1d8a('0x4a')][_0x1d8a('0x7f')]&&(!_0x4e3b83[_0x1d8a('0x80')]||!_0x4e3b83[_0x1d8a('0x81')]||!_0x4e3b83[_0x1d8a('0x82')]||!_0x4e3b83[_0x1d8a('0x83')]||!_0x4e3b83[_0x1d8a('0x6e')])){throw new db[(_0x1d8a('0x53'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20configured');}return db[_0x1d8a('0x84')][_0x1d8a('0x78')]({'where':{'id':_0x4e3b83['transcribeAccountId']}});}})[_0x1d8a('0x25')](function(_0x50cda9){if(!_0x50cda9){throw new db[(_0x1d8a('0x53'))][(_0x1d8a('0x54'))](_0x1d8a('0x85'));}if(!_0x50cda9['data1']||!_0x50cda9[_0x1d8a('0x86')]){throw new db[(_0x1d8a('0x53'))][(_0x1d8a('0x54'))](_0x1d8a('0x87'));}_0x46c5d1=_0x50cda9;return getBucketslist(_0x46c5d1[_0x1d8a('0x88')],_0x46c5d1[_0x1d8a('0x86')],_0x4e3b83['transcribeRegion']);})[_0x1d8a('0x25')](function(_0x44d0ff){if(_0x44d0ff&&_0x44d0ff[_0x1d8a('0x89')]){var _0x285b63=_[_0x1d8a('0x48')](_0x44d0ff['Buckets'],function(_0x3ee615){return _0x3ee615[_0x1d8a('0x8a')]===_0x4e3b83[_0x1d8a('0x6e')];});if(!_0x285b63){logger['info'](util['format'](_0x1d8a('0x8b'),_0x5bd731[_0x1d8a('0x47')]['id'],_0x4e3b83[_0x1d8a('0x6e')]));return createBucket(_0x46c5d1[_0x1d8a('0x88')],_0x46c5d1[_0x1d8a('0x86')],_0x4e3b83[_0x1d8a('0x7d')],_0x4e3b83['bucket']);}logger['info'](util['format'](_0x1d8a('0x8c'),_0x5bd731[_0x1d8a('0x47')]['id'],_0x4e3b83[_0x1d8a('0x6e')]));return;}})[_0x1d8a('0x25')](function(_0x468dfe){if(_0x449721[_0x1d8a('0x76')]==='NEW'){return transcribe(_0x5bd731[_0x1d8a('0x47')]['id'],_0x46c5d1['data1'],_0x46c5d1['data2'],_0x4e3b83[_0x1d8a('0x7d')],_0x4e3b83['bucket'],_0x449721[_0x1d8a('0x4e')],_0x4e3b83[_0x1d8a('0x83')]);}else{logger[_0x1d8a('0x63')](util[_0x1d8a('0x32')]('[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested',_0x5bd731['params']['id']));return{'transcribeStatus':'IN_PROGRESS'};}})[_0x1d8a('0x25')](function(_0x348281){if(_0x348281){_0x348281[_0x1d8a('0x8d')]=_0x5bd731['body'][_0x1d8a('0x7f')];return _0x449721[_0x1d8a('0x8e')](_0x348281);}})[_0x1d8a('0x25')](respondWithResult(_0x1fc749,null))[_0x1d8a('0x46')](handleError(_0x1fc749,null));};function writeFile(_0x2f1045,_0x5135c3){return new Promise(function(_0x33b822,_0x181d47){fs[_0x1d8a('0x8f')](_0x5135c3,_0x2f1045,function(_0x26250b,_0x11cb0b){if(_0x26250b){return _0x181d47(_0x26250b);}else{return _0x33b822(_0x11cb0b);}});});}exports['downloadTranscribe']=function(_0x5664d2,_0x59bf4a,_0x4732fe){return db[_0x1d8a('0x44')][_0x1d8a('0x78')]({'where':{'id':_0x5664d2[_0x1d8a('0x47')]['id']}})['then'](handleEntityNotFound(_0x59bf4a))[_0x1d8a('0x25')](function(_0x1fb473){if(_0x1fb473&&_0x1fb473[_0x1d8a('0x90')]){var _0x2b6d20=_0x1fb473[_0x1d8a('0x90')];var _0x29c6c1=config['root']+'/server/files/transcribes/transcribe_'+_0x1fb473['id']+_0x1d8a('0x91');if(fs[_0x1d8a('0x52')](_0x29c6c1)){return _0x29c6c1;}return writeFile(_0x2b6d20,_0x29c6c1)[_0x1d8a('0x25')](function(){return _0x29c6c1;});}else{throw new db[(_0x1d8a('0x53'))][(_0x1d8a('0x54'))]('Transcript\x20not\x20available');}})['then'](function(_0x35b457){return _0x59bf4a[_0x1d8a('0x4c')](_0x35b457);})[_0x1d8a('0x46')](handleError(_0x59bf4a));};
\ No newline at end of file
+var _0x682c=['includeAll','include','find','create','body','catch','describe','download','../../components/encryptor','uniqueid','value','format','%s.cypher','existsSync','decryptFile','secrets','recording','Sequelize','ValidationError','VoiceRecording\x20not\x20found','extname','unlink','message','downloads','sequelize','token','push','$and','filename','isNil','Entity\x20not\x20found','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','.cypher','unlinkSync','listBuckets','TranscribeService','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','readFileSync','Bucket','location','Location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','transcribeName','TranscriptionJobStatus','runTranscribe','Voice\x20Recording\x20not\x20found','Setting','findOne','transcribe','transcribeAccountId','language','Transcribe\x20not\x20configured','runSentiment','sentiment','bucket','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','Cloud\x20Provider\x20not\x20available','data1','data2','Cloud\x20Provider\x20not\x20configured','transcribeRegion','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','transcribeStatus','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','IN_PROGRESS','writeFile','downloadTranscribe','fileText','/server/files/transcribes/transcribe_','.txt','Transcript\x20not\x20available','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','aws-sdk','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','sendStatus','error','stack','name','send','index','VoiceRecording','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filter','map','merge','options','rows','show','params','length'];(function(_0x5d3369,_0xe47921){var _0x51c215=function(_0x24c0f1){while(--_0x24c0f1){_0x5d3369['push'](_0x5d3369['shift']());}};_0x51c215(++_0xe47921);}(_0x682c,0xe6));var _0xc682=function(_0x4d19d6,_0x478b73){_0x4d19d6=_0x4d19d6-0x0;var _0x238fd4=_0x682c[_0x4d19d6];return _0x238fd4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc682('0x0'));var zipdir=require(_0xc682('0x1'));var jsonpatch=require(_0xc682('0x2'));var rp=require(_0xc682('0x3'));var moment=require(_0xc682('0x4'));var BPromise=require(_0xc682('0x5'));var Mustache=require('mustache');var util=require(_0xc682('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xc682('0x7'));var ejs=require(_0xc682('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc682('0x9'));var squel=require(_0xc682('0xa'));var crypto=require(_0xc682('0xb'));var jsforce=require(_0xc682('0xc'));var deskjs=require(_0xc682('0xd'));var toCsv=require(_0xc682('0x7'));var querystring=require(_0xc682('0xe'));var Papa=require(_0xc682('0xf'));var AWS=require(_0xc682('0x10'));var uuidv4=require('uuid/v4');var Redis=require(_0xc682('0x11'));var authService=require(_0xc682('0x12'));var qs=require(_0xc682('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc682('0x14'));var logger=require(_0xc682('0x15'))('api');var utils=require(_0xc682('0x16'));var config=require(_0xc682('0x17'));var licenseUtil=require(_0xc682('0x18'));var db=require(_0xc682('0x19'))['db'];function respondWithStatusCode(_0x4e70c3,_0x5bfef7){_0x5bfef7=_0x5bfef7||0xcc;return function(_0x3c619c){if(_0x3c619c){return _0x4e70c3['sendStatus'](_0x5bfef7);}return _0x4e70c3['status'](_0x5bfef7)[_0xc682('0x1a')]();};}function respondWithResult(_0x409784,_0x269c93){_0x269c93=_0x269c93||0xc8;return function(_0x469fe1){if(_0x469fe1){return _0x409784[_0xc682('0x1b')](_0x269c93)[_0xc682('0x1c')](_0x469fe1);}};}function respondWithFilteredResult(_0x2db2c2,_0x2af5c5){return function(_0x3e5c5e){if(_0x3e5c5e){var _0x20eb6b=typeof _0x2af5c5[_0xc682('0x1d')]===_0xc682('0x1e')&&typeof _0x2af5c5[_0xc682('0x1f')]==='undefined';var _0x326656=_0x3e5c5e['count'];var _0x1d07e8=_0x20eb6b?0x0:_0x2af5c5[_0xc682('0x1d')];var _0xf3210a=_0x20eb6b?_0x3e5c5e[_0xc682('0x20')]:_0x2af5c5[_0xc682('0x1d')]+_0x2af5c5[_0xc682('0x1f')];var _0x1ff8c3;if(_0xf3210a>=_0x326656){_0xf3210a=_0x326656;_0x1ff8c3=0xc8;}else{_0x1ff8c3=0xce;}_0x2db2c2['status'](_0x1ff8c3);return _0x2db2c2[_0xc682('0x21')](_0xc682('0x22'),_0x1d07e8+'-'+_0xf3210a+'/'+_0x326656)[_0xc682('0x1c')](_0x3e5c5e);}return null;};}function patchUpdates(_0x42a639){return function(_0x22772a){try{jsonpatch[_0xc682('0x23')](_0x22772a,_0x42a639,!![]);}catch(_0x1a9a41){return BPromise[_0xc682('0x24')](_0x1a9a41);}return _0x22772a['save']();};}function saveUpdates(_0x2cdd33,_0x1a1d84){return function(_0xa0e09e){if(_0xa0e09e){return _0xa0e09e[_0xc682('0x25')](_0x2cdd33)[_0xc682('0x26')](function(_0x22b924){return _0x22b924;});}return null;};}function removeEntity(_0x117fbd,_0x3e6139){return function(_0x44e293){if(_0x44e293){return _0x44e293[_0xc682('0x27')]()[_0xc682('0x26')](function(){_0x117fbd[_0xc682('0x1b')](0xcc)[_0xc682('0x1a')]();});}};}function handleEntityNotFound(_0x2fd437,_0x2cc723){return function(_0x19ffbc){if(!_0x19ffbc){_0x2fd437[_0xc682('0x28')](0x194);}return _0x19ffbc;};}function handleError(_0x22b56c,_0x905cd1){_0x905cd1=_0x905cd1||0x1f4;return function(_0x3ef27d){logger[_0xc682('0x29')](_0x3ef27d[_0xc682('0x2a')]);if(_0x3ef27d[_0xc682('0x2b')]){delete _0x3ef27d[_0xc682('0x2b')];}_0x22b56c['status'](_0x905cd1)[_0xc682('0x2c')](_0x3ef27d);};}exports[_0xc682('0x2d')]=function(_0x5c35fd,_0x1613e7){var _0x52c1f2={},_0x1f8d65={},_0x4f2291={'count':0x0,'rows':[]};var _0x4a6eeb=_['map'](db[_0xc682('0x2e')]['rawAttributes'],function(_0x46ae4e){return{'name':_0x46ae4e[_0xc682('0x2f')],'type':_0x46ae4e[_0xc682('0x30')][_0xc682('0x31')]};});_0x1f8d65[_0xc682('0x32')]=_['differenceBy'](_['map'](_0x4a6eeb,_0xc682('0x2b')),['format']);_0x1f8d65[_0xc682('0x33')]=_[_0xc682('0x34')](_0x5c35fd[_0xc682('0x33')]);_0x1f8d65[_0xc682('0x35')]=_[_0xc682('0x36')](_0x1f8d65[_0xc682('0x32')],_0x1f8d65[_0xc682('0x33')]);_0x52c1f2['attributes']=_[_0xc682('0x36')](_0x1f8d65['model'],qs[_0xc682('0x37')](_0x5c35fd['query']['fields']));_0x52c1f2[_0xc682('0x38')]=_0x52c1f2[_0xc682('0x38')]['length']?_0x52c1f2[_0xc682('0x38')]:_0x1f8d65[_0xc682('0x32')];if(!_0x5c35fd[_0xc682('0x33')][_0xc682('0x39')](_0xc682('0x3a'))){_0x52c1f2[_0xc682('0x1f')]=qs[_0xc682('0x1f')](_0x5c35fd['query'][_0xc682('0x1f')]);_0x52c1f2[_0xc682('0x1d')]=qs[_0xc682('0x1d')](_0x5c35fd[_0xc682('0x33')][_0xc682('0x1d')]);}_0x52c1f2[_0xc682('0x3b')]=qs[_0xc682('0x3c')](_0x5c35fd['query'][_0xc682('0x3c')]);_0x52c1f2[_0xc682('0x3d')]=qs['filters'](_['pick'](_0x5c35fd['query'],_0x1f8d65[_0xc682('0x35')]),_0x4a6eeb);if(_0x5c35fd['query'][_0xc682('0x3e')]){_0x52c1f2[_0xc682('0x3d')]=_['merge'](_0x52c1f2[_0xc682('0x3d')],{'$or':_[_0xc682('0x3f')](_0x4a6eeb,function(_0x4f842c){if(_0x4f842c[_0xc682('0x30')]!=='VIRTUAL'){var _0x5bd660={};_0x5bd660[_0x4f842c[_0xc682('0x2b')]]={'$like':'%'+_0x5c35fd[_0xc682('0x33')][_0xc682('0x3e')]+'%'};return _0x5bd660;}})});}_0x52c1f2=_[_0xc682('0x40')]({},_0x52c1f2,_0x5c35fd[_0xc682('0x41')]);var _0x532ad7={'where':_0x52c1f2[_0xc682('0x3d')]};return db['VoiceRecording'][_0xc682('0x20')](_0x532ad7)['then'](function(_0x18a78b){_0x4f2291['count']=_0x18a78b;if(_0x5c35fd[_0xc682('0x33')]['includeAll']){_0x52c1f2['include']=[{'all':!![]}];}return db[_0xc682('0x2e')]['findAll'](_0x52c1f2);})['then'](function(_0x5534e4){_0x4f2291[_0xc682('0x42')]=_0x5534e4;return _0x4f2291;})['then'](respondWithFilteredResult(_0x1613e7,_0x52c1f2))['catch'](handleError(_0x1613e7,null));};exports[_0xc682('0x43')]=function(_0xf6aba7,_0x2e979b){var _0x3b9ff1={'raw':![],'where':{'id':_0xf6aba7[_0xc682('0x44')]['id']}},_0x1fb876={};_0x1fb876[_0xc682('0x32')]=_[_0xc682('0x34')](db[_0xc682('0x2e')]['rawAttributes']);_0x1fb876[_0xc682('0x33')]=_[_0xc682('0x34')](_0xf6aba7['query']);_0x1fb876[_0xc682('0x35')]=_[_0xc682('0x36')](_0x1fb876['model'],_0x1fb876[_0xc682('0x33')]);_0x3b9ff1[_0xc682('0x38')]=_[_0xc682('0x36')](_0x1fb876['model'],qs[_0xc682('0x37')](_0xf6aba7[_0xc682('0x33')]['fields']));_0x3b9ff1[_0xc682('0x38')]=_0x3b9ff1[_0xc682('0x38')][_0xc682('0x45')]?_0x3b9ff1[_0xc682('0x38')]:_0x1fb876[_0xc682('0x32')];if(_0xf6aba7[_0xc682('0x33')][_0xc682('0x46')]){_0x3b9ff1[_0xc682('0x47')]=[{'all':!![]}];}_0x3b9ff1=_[_0xc682('0x40')]({},_0x3b9ff1,_0xf6aba7[_0xc682('0x41')]);return db[_0xc682('0x2e')][_0xc682('0x48')](_0x3b9ff1)[_0xc682('0x26')](handleEntityNotFound(_0x2e979b,null))[_0xc682('0x26')](respondWithResult(_0x2e979b,null))['catch'](handleError(_0x2e979b,null));};exports[_0xc682('0x49')]=function(_0x48d36f,_0xead704){return db['VoiceRecording'][_0xc682('0x49')](_0x48d36f[_0xc682('0x4a')],{})[_0xc682('0x26')](respondWithResult(_0xead704,0xc9))['catch'](handleError(_0xead704,null));};exports['update']=function(_0x1cbd7d,_0x462feb){if(_0x1cbd7d[_0xc682('0x4a')]['id']){delete _0x1cbd7d[_0xc682('0x4a')]['id'];}return db[_0xc682('0x2e')][_0xc682('0x48')]({'where':{'id':_0x1cbd7d[_0xc682('0x44')]['id']}})[_0xc682('0x26')](handleEntityNotFound(_0x462feb,null))[_0xc682('0x26')](saveUpdates(_0x1cbd7d[_0xc682('0x4a')],null))[_0xc682('0x26')](respondWithResult(_0x462feb,null))[_0xc682('0x4b')](handleError(_0x462feb,null));};exports[_0xc682('0x4c')]=function(_0x2d11f3,_0x806624){return db[_0xc682('0x2e')][_0xc682('0x4c')]()[_0xc682('0x26')](respondWithResult(_0x806624,null))[_0xc682('0x4b')](handleError(_0x806624,null));};exports[_0xc682('0x4d')]=function(_0x441cb0,_0x2e49e1,_0x222106){var _0x4d519c=require(_0xc682('0x4e'));var _0x2f99e3=![];var _0x417ea6={};if(_0x441cb0['query']['type']&&_0x441cb0[_0xc682('0x33')][_0xc682('0x30')]===_0xc682('0x4f')){_0x417ea6['uniqueid']=_0x441cb0['params']['id'];}else{_0x417ea6['id']=_0x441cb0['params']['id'];}return db[_0xc682('0x2e')][_0xc682('0x48')]({'where':_0x417ea6,'attributes':['id',_0xc682('0x50')],'raw':!![]})['then'](handleEntityNotFound(_0x2e49e1,null))[_0xc682('0x26')](function(_0x2a6f5b){if(_0x2a6f5b){var _0x5b77ac=_0x2a6f5b[_0xc682('0x50')];var _0x30aea1=util[_0xc682('0x51')](_0xc682('0x52'),_0x5b77ac);if(fs[_0xc682('0x53')](_0x30aea1)){_0x2f99e3=!![];return _0x4d519c[_0xc682('0x54')](_0x30aea1,_0x5b77ac,config[_0xc682('0x55')][_0xc682('0x56')])['then'](function(){return _0x2a6f5b;});}return _0x2a6f5b;}})[_0xc682('0x26')](function(_0x55ba57){if(_0x55ba57){var _0x41d090=_0x55ba57[_0xc682('0x50')];if(!fs[_0xc682('0x53')](_0x41d090)){throw new db[(_0xc682('0x57'))][(_0xc682('0x58'))](_0xc682('0x59'));}if(_0x55ba57['filename']){return _0x2e49e1[_0xc682('0x4d')](_0x41d090,_0x55ba57['filename']+path[_0xc682('0x5a')](_0x41d090),function(){if(_0x2f99e3){fs[_0xc682('0x5b')](_0x41d090);}});}else{return _0x2e49e1[_0xc682('0x4d')](_0x41d090,function(_0x3e07d7){if(_0x2f99e3){fs[_0xc682('0x5b')](_0x41d090);}});}}})['catch'](function(_0x475056){if(_0x475056[_0xc682('0x5c')]===_0xc682('0x59')){_0x2e49e1[_0xc682('0x1b')](0x194)[_0xc682('0x2c')]('Not\x20found');}else{return handleError(_0x2e49e1,null);}});};exports[_0xc682('0x5d')]=function(_0x26947d,_0x57c442,_0x5c8bdf){var _0x59abd4=require(_0xc682('0x4e'));var _0x1d723a=![];var _0x4edd03={'$and':[db['sequelize']['where'](db[_0xc682('0x5e')]['fn']('MD5',db[_0xc682('0x5e')]['col'](_0xc682('0x4f'))),_0x26947d[_0xc682('0x33')][_0xc682('0x5f')])]};if(_0x26947d[_0xc682('0x33')][_0xc682('0x30')]&&_0x26947d[_0xc682('0x33')][_0xc682('0x30')]===_0xc682('0x4f')){_0x4edd03['$and'][_0xc682('0x60')]({'uniqueid':_0x26947d[_0xc682('0x44')]['id']});}else{_0x4edd03[_0xc682('0x61')][_0xc682('0x60')]({'id':_0x26947d[_0xc682('0x44')]['id']});}return db['VoiceRecording']['find']({'where':_0x4edd03,'attributes':['id',_0xc682('0x50')],'raw':!![]})[_0xc682('0x26')](handleEntityNotFound(_0x57c442,null))[_0xc682('0x26')](function(_0x47ac56){if(_0x47ac56){var _0x362829=util['format'](_0xc682('0x52'),_0x47ac56['value']);if(fs['existsSync'](_0x362829)){_0x1d723a=!![];return _0x59abd4[_0xc682('0x54')](_0x362829,_0x47ac56[_0xc682('0x50')],config[_0xc682('0x55')][_0xc682('0x56')])[_0xc682('0x26')](function(){return _0x47ac56;});}return _0x47ac56;}})['then'](function(_0x55d89e){if(_0x55d89e){if(!fs[_0xc682('0x53')](_0x55d89e['value'])){throw new db['Sequelize'][(_0xc682('0x58'))](_0xc682('0x59'));}if(_0x55d89e[_0xc682('0x62')]){return _0x57c442['download'](_0x55d89e[_0xc682('0x50')],_0x55d89e[_0xc682('0x62')]+path[_0xc682('0x5a')](_0x55d89e[_0xc682('0x50')]),function(){if(_0x1d723a){fs[_0xc682('0x5b')](_0x55d89e[_0xc682('0x50')]);}});}else{return _0x57c442[_0xc682('0x4d')](_0x55d89e['value'],function(_0x14ac57){if(_0x1d723a){fs[_0xc682('0x5b')](_0x55d89e[_0xc682('0x50')]);}});}}})['catch'](handleError(_0x57c442,null));};exports[_0xc682('0x27')]=function(_0x2347df,_0x5e4622){return db['VoiceRecording'][_0xc682('0x48')]({'where':{'id':_0x2347df[_0xc682('0x44')]['id']}})[_0xc682('0x26')](function(_0x1cf460){if(_[_0xc682('0x63')](_0x1cf460)){throw new ReferenceError(_0xc682('0x64'));}return _0x1cf460;})[_0xc682('0x26')](function(_0x789002){var _0x75edac=_0x789002[_0xc682('0x50')];logger[_0xc682('0x65')]('cancellazione\x20fisica\x20documento\x20%s',_0x75edac);if(!_[_0xc682('0x63')](_0x789002[_0xc682('0x50')])&&fs[_0xc682('0x53')](_0x75edac)){logger[_0xc682('0x65')](_0xc682('0x66')+_0x75edac+_0xc682('0x67'));fs['unlinkSync'](_0x75edac);}_0x75edac=_0x75edac+_0xc682('0x68');if(!_[_0xc682('0x63')](_0x789002[_0xc682('0x50')])&&fs[_0xc682('0x53')](_0x75edac)){logger[_0xc682('0x65')](_0xc682('0x66')+_0x75edac+_0xc682('0x67'));fs[_0xc682('0x69')](_0x75edac);}return _0x789002;})['then'](function(_0x377de1){if(!_0x377de1)throw new InternalError();return _0x377de1[_0xc682('0x27')]();})[_0xc682('0x26')](function(){_0x5e4622[_0xc682('0x1b')](0xcc)[_0xc682('0x1a')]();})[_0xc682('0x4b')](handleError(_0x5e4622,null));};function getBucketslist(_0x162104,_0x39485a,_0x176697){return new Promise(function(_0x4177df,_0x3c4187){var _0x2e05a9=new AWS['S3']({'accessKeyId':_0x39485a,'secretAccessKey':_0x162104,'region':_0x176697});_0x2e05a9[_0xc682('0x6a')]({},function(_0x140ac9,_0x3a6177){if(_0x140ac9){return _0x3c4187(_0x140ac9);}else{return _0x4177df(_0x3a6177);}});});}function createBucket(_0x47f157,_0xc46946,_0x1fd2fc,_0x496ee3){return new Promise(function(_0xe773d2,_0x4b0d54){var _0x5d8033=new AWS['S3']({'accessKeyId':_0xc46946,'secretAccessKey':_0x47f157,'region':_0x1fd2fc});_0x5d8033['createBucket']({'Bucket':_0x496ee3},function(_0x4abfc1,_0x1ab199){if(_0x4abfc1){return _0x4b0d54(_0x4abfc1);}else{return _0xe773d2(_0x1ab199);}});});}function uploadFile(_0x1bffbe,_0x36bf8c,_0x50dbf7,_0x24a058,_0x56d5e5,_0x4b3b08){return new Promise(function(_0x46f7be,_0x145b40){var _0x3a27c4=new AWS['S3']({'accessKeyId':_0x36bf8c,'secretAccessKey':_0x1bffbe,'region':_0x50dbf7});_0x3a27c4['upload']({'Bucket':_0x24a058,'Key':_0x56d5e5,'Body':_0x4b3b08},function(_0x411b13,_0xff2848){if(_0x411b13){return _0x145b40(_0x411b13);}else{return _0x46f7be(_0xff2848);}});});}function startTranscribe(_0x3807e5,_0x4c02e5,_0x11fe35,_0x327983,_0xd25a5f,_0x1c517c){return new Promise(function(_0x1969ed,_0x137017){var _0x38911c=new AWS[(_0xc682('0x6b'))]({'accessKeyId':_0x4c02e5,'secretAccessKey':_0x3807e5,'region':_0x11fe35});_0x38911c[_0xc682('0x6c')]({'TranscriptionJobName':_0x327983,'LanguageCode':_0xd25a5f,'Media':{'MediaFileUri':_0x1c517c}},function(_0x4d2af6,_0x4b22cb){if(_0x4d2af6){return _0x137017(_0x4d2af6);}else{return _0x1969ed(_0x4b22cb);}});});}function transcribe(_0x3db051,_0x1302ee,_0x5abc2f,_0x6a52b,_0x4d6b85,_0x2979de,_0x4e68e1){return new Promise(function(_0x594443,_0x312f1d){var _0x447a92={};logger['info'](util[_0xc682('0x51')](_0xc682('0x6d'),_0x3db051,_0x4d6b85));return uploadFile(_0x1302ee,_0x5abc2f,_0x6a52b,_0x4d6b85,path[_0xc682('0x6e')](_0x2979de),fs[_0xc682('0x6f')](_0x2979de))['then'](function(_0x358e07){logger[_0xc682('0x65')](util[_0xc682('0x51')]('[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)',_0x3db051,_0x4d6b85,_0x358e07['Location']));_0x447a92['bucket']=_0x358e07[_0xc682('0x70')];_0x447a92[_0xc682('0x71')]=_0x358e07[_0xc682('0x72')];logger[_0xc682('0x65')](util['format'](_0xc682('0x73'),_0x3db051));return startTranscribe(_0x1302ee,_0x5abc2f,_0x6a52b,uuidv4(),_0x4e68e1,_0x358e07[_0xc682('0x72')]);})['then'](function(_0x4ffe31){logger['info'](util[_0xc682('0x51')](_0xc682('0x74'),_0x3db051,_0x4ffe31[_0xc682('0x75')]['TranscriptionJobName']));_0x447a92[_0xc682('0x76')]=_0x4ffe31[_0xc682('0x75')]['TranscriptionJobName'];_0x447a92['transcribeStatus']=_0x4ffe31[_0xc682('0x75')][_0xc682('0x77')];return _0x594443(_0x447a92);})[_0xc682('0x4b')](function(_0x1e45b3){return _0x312f1d(_0x1e45b3);});});}exports[_0xc682('0x78')]=function(_0x3fbe44,_0x236f29,_0x238ab1){var _0x21195b;var _0x3f3fa3;var _0x3c64d4;var _0x378ee9=require(_0xc682('0x4e'));return db['VoiceRecording']['findOne']({'where':{'id':_0x3fbe44[_0xc682('0x44')]['id']}})['then'](function(_0x1b2d18){if(_0x1b2d18){var _0x4d702f=util[_0xc682('0x51')](_0xc682('0x52'),_0x1b2d18[_0xc682('0x50')]);if(fs[_0xc682('0x53')](_0x4d702f)){cypher=!![];return _0x378ee9['decryptFile'](_0x4d702f,_0x1b2d18['value'],config['secrets']['recording'])[_0xc682('0x26')](function(){return _0x1b2d18;});}return _0x1b2d18;}})[_0xc682('0x26')](function(_0xd976a9){if(!_0xd976a9){throw new db[(_0xc682('0x57'))][(_0xc682('0x58'))](_0xc682('0x79'));}_0x3f3fa3=_0xd976a9;return db[_0xc682('0x7a')][_0xc682('0x7b')]({'where':{'id':0x1}});})[_0xc682('0x26')](handleEntityNotFound(_0x236f29,null))[_0xc682('0x26')](function(_0x54659a){if(_0x54659a){_0x21195b=_0x54659a;if(!_0x21195b[_0xc682('0x7c')]||!_0x21195b[_0xc682('0x7d')]||!_0x21195b['transcribeRegion']||!_0x21195b[_0xc682('0x7e')]||!_0x21195b['bucket']){throw new db[(_0xc682('0x57'))][(_0xc682('0x58'))](_0xc682('0x7f'));}if(_0x3fbe44[_0xc682('0x4a')][_0xc682('0x80')]&&(!_0x21195b[_0xc682('0x81')]||!_0x21195b['sentimentAccountId']||!_0x21195b['sentimentRegion']||!_0x21195b[_0xc682('0x7e')]||!_0x21195b[_0xc682('0x82')])){throw new db[(_0xc682('0x57'))][(_0xc682('0x58'))](_0xc682('0x83'));}return db[_0xc682('0x84')][_0xc682('0x7b')]({'where':{'id':_0x21195b[_0xc682('0x7d')]}});}})[_0xc682('0x26')](function(_0x4b27b3){if(!_0x4b27b3){throw new db[(_0xc682('0x57'))][(_0xc682('0x58'))](_0xc682('0x85'));}if(!_0x4b27b3[_0xc682('0x86')]||!_0x4b27b3[_0xc682('0x87')]){throw new db[(_0xc682('0x57'))][(_0xc682('0x58'))](_0xc682('0x88'));}_0x3c64d4=_0x4b27b3;return getBucketslist(_0x3c64d4[_0xc682('0x86')],_0x3c64d4[_0xc682('0x87')],_0x21195b[_0xc682('0x89')]);})['then'](function(_0x3d32c5){if(_0x3d32c5&&_0x3d32c5['Buckets']){var _0x5a6e20=_['find'](_0x3d32c5['Buckets'],function(_0x31dd5d){return _0x31dd5d[_0xc682('0x8a')]===_0x21195b[_0xc682('0x82')];});if(!_0x5a6e20){logger[_0xc682('0x65')](util['format'](_0xc682('0x8b'),_0x3fbe44[_0xc682('0x44')]['id'],_0x21195b[_0xc682('0x82')]));return createBucket(_0x3c64d4[_0xc682('0x86')],_0x3c64d4[_0xc682('0x87')],_0x21195b['transcribeRegion'],_0x21195b[_0xc682('0x82')]);}logger[_0xc682('0x65')](util[_0xc682('0x51')]('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available',_0x3fbe44['params']['id'],_0x21195b[_0xc682('0x82')]));return;}})[_0xc682('0x26')](function(_0x5014c7){if(_0x3f3fa3[_0xc682('0x8c')]===_0xc682('0x8d')){return transcribe(_0x3fbe44['params']['id'],_0x3c64d4[_0xc682('0x86')],_0x3c64d4[_0xc682('0x87')],_0x21195b[_0xc682('0x89')],_0x21195b[_0xc682('0x82')],_0x3f3fa3['value'],_0x21195b[_0xc682('0x7e')]);}else{logger[_0xc682('0x65')](util['format'](_0xc682('0x8e'),_0x3fbe44[_0xc682('0x44')]['id']));return{'transcribeStatus':_0xc682('0x8f')};}})[_0xc682('0x26')](function(_0x1676a5){if(_0x1676a5){_0x1676a5['tempSentiment']=_0x3fbe44[_0xc682('0x4a')]['runSentiment'];return _0x3f3fa3['updateAttributes'](_0x1676a5);}})['then'](respondWithResult(_0x236f29,null))[_0xc682('0x4b')](handleError(_0x236f29,null));};function writeFile(_0x4b02c3,_0x30fafb){return new Promise(function(_0x1a2d52,_0x14d686){fs[_0xc682('0x90')](_0x30fafb,_0x4b02c3,function(_0x4da937,_0x4260dd){if(_0x4da937){return _0x14d686(_0x4da937);}else{return _0x1a2d52(_0x4260dd);}});});}exports[_0xc682('0x91')]=function(_0x32fe9b,_0x179512,_0x3f02ec){return db[_0xc682('0x2e')]['findOne']({'where':{'id':_0x32fe9b[_0xc682('0x44')]['id']}})[_0xc682('0x26')](handleEntityNotFound(_0x179512))['then'](function(_0x40d327){if(_0x40d327&&_0x40d327[_0xc682('0x92')]){var _0x245e2a=_0x40d327['fileText'];var _0x569f8e=config['root']+_0xc682('0x93')+_0x40d327['id']+_0xc682('0x94');if(fs[_0xc682('0x53')](_0x569f8e)){return _0x569f8e;}return writeFile(_0x245e2a,_0x569f8e)[_0xc682('0x26')](function(){return _0x569f8e;});}else{throw new db['Sequelize'][(_0xc682('0x58'))](_0xc682('0x95'));}})['then'](function(_0x4220ab){return _0x179512[_0xc682('0x4d')](_0x4220ab);})[_0xc682('0x4b')](handleError(_0x179512));};
\ No newline at end of file
index 044a465..939acd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe4a=['uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./voiceRecording.attributes','exports','define','VoiceRecording'];(function(_0xc753fe,_0x21130b){var _0x2c633a=function(_0x48e99e){while(--_0x48e99e){_0xc753fe['push'](_0xc753fe['shift']());}};_0x2c633a(++_0x21130b);}(_0xfe4a,0x10b));var _0xafe4=function(_0x36eaaa,_0x326732){_0x36eaaa=_0x36eaaa-0x0;var _0x461349=_0xfe4a[_0x36eaaa];return _0x461349;};'use strict';var _=require(_0xafe4('0x0'));var util=require(_0xafe4('0x1'));var logger=require(_0xafe4('0x2'))(_0xafe4('0x3'));var moment=require(_0xafe4('0x4'));var BPromise=require(_0xafe4('0x5'));var rp=require(_0xafe4('0x6'));var fs=require('fs');var path=require(_0xafe4('0x7'));var rimraf=require('rimraf');var config=require(_0xafe4('0x8'));var attributes=require(_0xafe4('0x9'));module[_0xafe4('0xa')]=function(_0xc7b0c9,_0x50583f){return _0xc7b0c9[_0xafe4('0xb')](_0xafe4('0xc'),attributes,{'tableName':'voice_recordings','paranoid':![],'indexes':[{'name':_0xafe4('0xd'),'fields':[_0xafe4('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7e22=['exports','define','voice_recordings','uniqueid','lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x5266e7,_0x97b16b){var _0x5470f1=function(_0x10258e){while(--_0x10258e){_0x5266e7['push'](_0x5266e7['shift']());}};_0x5470f1(++_0x97b16b);}(_0x7e22,0x1d8));var _0x27e2=function(_0x352f3f,_0xda7ed2){_0x352f3f=_0x352f3f-0x0;var _0x167843=_0x7e22[_0x352f3f];return _0x167843;};'use strict';var _=require(_0x27e2('0x0'));var util=require('util');var logger=require(_0x27e2('0x1'))(_0x27e2('0x2'));var moment=require(_0x27e2('0x3'));var BPromise=require(_0x27e2('0x4'));var rp=require(_0x27e2('0x5'));var fs=require('fs');var path=require(_0x27e2('0x6'));var rimraf=require('rimraf');var config=require(_0x27e2('0x7'));var attributes=require('./voiceRecording.attributes');module[_0x27e2('0x8')]=function(_0x350996,_0x3eb3cd){return _0x350996[_0x27e2('0x9')]('VoiceRecording',attributes,{'tableName':_0x27e2('0xa'),'paranoid':![],'indexes':[{'name':_0x27e2('0xb'),'fields':[_0x27e2('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 10e30f7..5bfce98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7046=['info','VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateVoiceRecording','update','body','options','raw','attributes','limit','then','CreateVoiceRecording','../../components/encryptor','Setting','findOne','value','format','encryptFile','secrets','recording','unlink','CreateVoiceRecording\x20file\x20encrypted','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x1a58ea,_0xc3a156){var _0x2d66ef=function(_0x2bb539){while(--_0x2bb539){_0x1a58ea['push'](_0x1a58ea['shift']());}};_0x2d66ef(++_0xc3a156);}(_0x7046,0x144));var _0x6704=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0x7046[_0x8c43de];return _0xa6591b;};'use strict';var _=require(_0x6704('0x0'));var util=require(_0x6704('0x1'));var moment=require(_0x6704('0x2'));var BPromise=require(_0x6704('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6704('0x4'));var db=require(_0x6704('0x5'))['db'];var utils=require(_0x6704('0x6'));var logger=require('../../config/logger')(_0x6704('0x7'));var config=require(_0x6704('0x8'));var jayson=require(_0x6704('0x9'));var client=jayson[_0x6704('0xa')][_0x6704('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4badf8,_0x5ced8,_0x49b8b6){return new BPromise(function(_0x56b1ff,_0x390ace){return client['request'](_0x4badf8,_0x49b8b6)['then'](function(_0x3ca599){logger[_0x6704('0xc')](_0x6704('0xd'),_0x5ced8,_0x6704('0xe'));logger[_0x6704('0xf')](_0x6704('0x10'),_0x5ced8,_0x6704('0xe'),JSON[_0x6704('0x11')](_0x3ca599));if(_0x3ca599['error']){if(_0x3ca599[_0x6704('0x12')][_0x6704('0x13')]===0x1f4){logger['error'](_0x6704('0xd'),_0x5ced8,_0x3ca599[_0x6704('0x12')][_0x6704('0x14')]);return _0x390ace(_0x3ca599[_0x6704('0x12')][_0x6704('0x14')]);}logger[_0x6704('0x12')](_0x6704('0xd'),_0x5ced8,_0x3ca599[_0x6704('0x12')][_0x6704('0x14')]);return _0x56b1ff(_0x3ca599['error'][_0x6704('0x14')]);}else{logger[_0x6704('0xc')](_0x6704('0xd'),_0x5ced8,'request\x20sent');_0x56b1ff(_0x3ca599[_0x6704('0x15')][_0x6704('0x14')]);}})[_0x6704('0x16')](function(_0x29fa46){logger[_0x6704('0x12')]('VoiceRecording,\x20%s,\x20%s',_0x5ced8,_0x29fa46);_0x390ace(_0x29fa46);});});}exports[_0x6704('0x17')]=function(_0x31d732){var _0x135f4b=this;return new Promise(function(_0xe49450,_0x344ed9){return db['VoiceRecording'][_0x6704('0x18')](_0x31d732[_0x6704('0x19')],{'raw':_0x31d732[_0x6704('0x1a')]?_0x31d732[_0x6704('0x1a')][_0x6704('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x31d732[_0x6704('0x1a')]?_0x31d732[_0x6704('0x1a')]['where']||null:null,'attributes':_0x31d732[_0x6704('0x1a')]?_0x31d732[_0x6704('0x1a')][_0x6704('0x1c')]||null:null,'limit':_0x31d732['options']?_0x31d732['options'][_0x6704('0x1d')]||null:null})[_0x6704('0x1e')](function(_0x3cd12e){logger[_0x6704('0xc')](_0x6704('0x17'),_0x31d732);logger['debug'](_0x6704('0x17'),_0x31d732,JSON[_0x6704('0x11')](_0x3cd12e));_0xe49450(_0x3cd12e);})[_0x6704('0x16')](function(_0x348fcb){logger[_0x6704('0x12')](_0x6704('0x17'),_0x348fcb[_0x6704('0x14')],_0x31d732);_0x344ed9(_0x135f4b[_0x6704('0x12')](0x1f4,_0x348fcb[_0x6704('0x14')]));});});};exports[_0x6704('0x1f')]=function(_0x36bea4){var _0x1bdfee=this;return new Promise(function(_0x118d93,_0x4979ec){var _0x5ac014=require(_0x6704('0x20'));var _0xf875dc;return db[_0x6704('0x21')][_0x6704('0x22')]({'attributes':['id','callRecordingEncryption'],'where':{'id':0x1},'raw':!![]})[_0x6704('0x1e')](function(_0x18cd98){_0xf875dc=_0x18cd98;return db['VoiceRecording']['create'](_0x36bea4[_0x6704('0x19')]);})['then'](function(_0x812ba2){if(_0xf875dc['callRecordingEncryption']&&fs['existsSync'](_0x812ba2[_0x6704('0x23')])){var _0x115514=util[_0x6704('0x24')]('%s.cypher',_0x812ba2[_0x6704('0x23')]);return _0x5ac014[_0x6704('0x25')](_0x812ba2[_0x6704('0x23')],_0x115514,config[_0x6704('0x26')][_0x6704('0x27')])[_0x6704('0x1e')](function(){fs[_0x6704('0x28')](_0x812ba2[_0x6704('0x23')]);logger[_0x6704('0xc')](_0x6704('0x29'));return _0x812ba2;});}return _0x812ba2;})[_0x6704('0x1e')](function(_0x454885){logger[_0x6704('0xc')](_0x6704('0x1f'),_0x36bea4);logger[_0x6704('0xf')](_0x6704('0x1f'),_0x36bea4,JSON[_0x6704('0x11')](_0x454885));_0x118d93(_0x454885);})[_0x6704('0x16')](function(_0x219494){logger[_0x6704('0x12')](_0x6704('0x1f'),_0x219494[_0x6704('0x14')],_0x36bea4);_0x4979ec(_0x1bdfee[_0x6704('0x12')](0x1f4,_0x219494[_0x6704('0x14')]));});});};
\ No newline at end of file
+var _0x958a=['unlink','CreateVoiceRecording\x20file\x20encrypted','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','then','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateVoiceRecording','VoiceRecording','update','body','options','raw','where','CreateVoiceRecording','../../components/encryptor','Setting','findOne','callRecordingEncryption','create','existsSync','value','format','%s.cypher'];(function(_0x1c4a10,_0x395625){var _0x12cc21=function(_0x5cca4e){while(--_0x5cca4e){_0x1c4a10['push'](_0x1c4a10['shift']());}};_0x12cc21(++_0x395625);}(_0x958a,0x128));var _0xa958=function(_0x6f9da0,_0x49c37a){_0x6f9da0=_0x6f9da0-0x0;var _0x321b85=_0x958a[_0x6f9da0];return _0x321b85;};'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});function respondWithRpcPromise(_0x3ddaa9,_0x3ca01f,_0x3b2693){return new BPromise(function(_0x1895da,_0x54c0e0){return client['request'](_0x3ddaa9,_0x3b2693)[_0xa958('0xb')](function(_0x249764){logger[_0xa958('0xc')](_0xa958('0xd'),_0x3ca01f,_0xa958('0xe'));logger[_0xa958('0xf')](_0xa958('0x10'),_0x3ca01f,_0xa958('0xe'),JSON[_0xa958('0x11')](_0x249764));if(_0x249764[_0xa958('0x12')]){if(_0x249764[_0xa958('0x12')][_0xa958('0x13')]===0x1f4){logger[_0xa958('0x12')]('VoiceRecording,\x20%s,\x20%s',_0x3ca01f,_0x249764['error']['message']);return _0x54c0e0(_0x249764[_0xa958('0x12')][_0xa958('0x14')]);}logger[_0xa958('0x12')]('VoiceRecording,\x20%s,\x20%s',_0x3ca01f,_0x249764[_0xa958('0x12')]['message']);return _0x1895da(_0x249764['error']['message']);}else{logger[_0xa958('0xc')](_0xa958('0xd'),_0x3ca01f,_0xa958('0xe'));_0x1895da(_0x249764[_0xa958('0x15')][_0xa958('0x14')]);}})[_0xa958('0x16')](function(_0x23736f){logger[_0xa958('0x12')]('VoiceRecording,\x20%s,\x20%s',_0x3ca01f,_0x23736f);_0x54c0e0(_0x23736f);});});}exports[_0xa958('0x17')]=function(_0x4eadc9){var _0x3a053f=this;return new Promise(function(_0x70d13e,_0x52a184){return db[_0xa958('0x18')][_0xa958('0x19')](_0x4eadc9[_0xa958('0x1a')],{'raw':_0x4eadc9[_0xa958('0x1b')]?_0x4eadc9[_0xa958('0x1b')][_0xa958('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4eadc9['options']?_0x4eadc9['options'][_0xa958('0x1d')]||null:null,'attributes':_0x4eadc9[_0xa958('0x1b')]?_0x4eadc9[_0xa958('0x1b')]['attributes']||null:null,'limit':_0x4eadc9[_0xa958('0x1b')]?_0x4eadc9[_0xa958('0x1b')]['limit']||null:null})[_0xa958('0xb')](function(_0x401175){logger['info']('UpdateVoiceRecording',_0x4eadc9);logger[_0xa958('0xf')](_0xa958('0x17'),_0x4eadc9,JSON['stringify'](_0x401175));_0x70d13e(_0x401175);})[_0xa958('0x16')](function(_0x27097a){logger[_0xa958('0x12')](_0xa958('0x17'),_0x27097a[_0xa958('0x14')],_0x4eadc9);_0x52a184(_0x3a053f[_0xa958('0x12')](0x1f4,_0x27097a['message']));});});};exports[_0xa958('0x1e')]=function(_0x48ef34){var _0x43df63=this;return new Promise(function(_0x3c2ea3,_0x32ea36){var _0x18f600=require(_0xa958('0x1f'));var _0xddc7f6;return db[_0xa958('0x20')][_0xa958('0x21')]({'attributes':['id',_0xa958('0x22')],'where':{'id':0x1},'raw':!![]})[_0xa958('0xb')](function(_0x4c4c37){_0xddc7f6=_0x4c4c37;return db['VoiceRecording'][_0xa958('0x23')](_0x48ef34['body']);})[_0xa958('0xb')](function(_0x1b76de){if(_0xddc7f6['callRecordingEncryption']&&fs[_0xa958('0x24')](_0x1b76de[_0xa958('0x25')])){var _0x179bc2=util[_0xa958('0x26')](_0xa958('0x27'),_0x1b76de['value']);return _0x18f600['encryptFile'](_0x1b76de[_0xa958('0x25')],_0x179bc2,config['secrets']['recording'])[_0xa958('0xb')](function(){fs[_0xa958('0x28')](_0x1b76de[_0xa958('0x25')]);logger[_0xa958('0xc')](_0xa958('0x29'));return _0x1b76de;});}return _0x1b76de;})[_0xa958('0xb')](function(_0x516a2f){logger[_0xa958('0xc')]('CreateVoiceRecording',_0x48ef34);logger['debug'](_0xa958('0x1e'),_0x48ef34,JSON[_0xa958('0x11')](_0x516a2f));_0x3c2ea3(_0x516a2f);})[_0xa958('0x16')](function(_0x1cc55d){logger[_0xa958('0x12')](_0xa958('0x1e'),_0x1cc55d[_0xa958('0x14')],_0x48ef34);_0x32ea36(_0x43df63[_0xa958('0x12')](0x1f4,_0x1cc55d['message']));});});};
\ No newline at end of file
index 6eec69d..bc26e97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x960c=['/describe','describe','/:id','show','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceTransferReport.controller','get','isAuthenticated'];(function(_0x1666a8,_0x17e631){var _0x5afe29=function(_0x2a5d29){while(--_0x2a5d29){_0x1666a8['push'](_0x1666a8['shift']());}};_0x5afe29(++_0x17e631);}(_0x960c,0x163));var _0xc960=function(_0x463d7b,_0x40d928){_0x463d7b=_0x463d7b-0x0;var _0x1273c0=_0x960c[_0x463d7b];return _0x1273c0;};'use strict';var multer=require(_0xc960('0x0'));var util=require(_0xc960('0x1'));var path=require(_0xc960('0x2'));var timeout=require(_0xc960('0x3'));var express=require(_0xc960('0x4'));var router=express[_0xc960('0x5')]();var fs_extra=require(_0xc960('0x6'));var auth=require(_0xc960('0x7'));var interaction=require(_0xc960('0x8'));var config=require(_0xc960('0x9'));var controller=require(_0xc960('0xa'));router[_0xc960('0xb')]('/',auth[_0xc960('0xc')](),controller['index']);router[_0xc960('0xb')](_0xc960('0xd'),auth['isAuthenticated'](),controller[_0xc960('0xe')]);router[_0xc960('0xb')](_0xc960('0xf'),auth['isAuthenticated'](),controller[_0xc960('0x10')]);router[_0xc960('0x11')]('/',auth[_0xc960('0xc')](),controller[_0xc960('0x12')]);router[_0xc960('0x13')]('/:id',auth[_0xc960('0xc')](),controller[_0xc960('0x14')]);router['delete']('/:id',auth[_0xc960('0xc')](),controller[_0xc960('0x15')]);module[_0xc960('0x16')]=router;
\ No newline at end of file
+var _0xbea6=['../../components/interaction/service','../../config/environment','./voiceTransferReport.controller','get','index','/describe','isAuthenticated','/:id','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xbea6,0x93));var _0x6bea=function(_0x5f309e,_0x66e31){_0x5f309e=_0x5f309e-0x0;var _0x487b5e=_0xbea6[_0x5f309e];return _0x487b5e;};'use strict';var multer=require(_0x6bea('0x0'));var util=require(_0x6bea('0x1'));var path=require(_0x6bea('0x2'));var timeout=require(_0x6bea('0x3'));var express=require(_0x6bea('0x4'));var router=express[_0x6bea('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x6bea('0x6'));var interaction=require(_0x6bea('0x7'));var config=require(_0x6bea('0x8'));var controller=require(_0x6bea('0x9'));router[_0x6bea('0xa')]('/',auth['isAuthenticated'](),controller[_0x6bea('0xb')]);router['get'](_0x6bea('0xc'),auth[_0x6bea('0xd')](),controller['describe']);router[_0x6bea('0xa')](_0x6bea('0xe'),auth[_0x6bea('0xd')](),controller['show']);router[_0x6bea('0xf')]('/',auth[_0x6bea('0xd')](),controller[_0x6bea('0x10')]);router[_0x6bea('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x6bea('0x12')]);router[_0x6bea('0x13')]('/:id',auth[_0x6bea('0xd')](),controller[_0x6bea('0x14')]);module[_0x6bea('0x15')]=router;
\ No newline at end of file
index 2c75ad0..e14c084 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec55=['blind','attended','STRING','Yes','sequelize','moment','exports','ENUM'];(function(_0x13baed,_0x1b3a1d){var _0x17dabf=function(_0x48fbcc){while(--_0x48fbcc){_0x13baed['push'](_0x13baed['shift']());}};_0x17dabf(++_0x1b3a1d);}(_0xec55,0x164));var _0x5ec5=function(_0x27c201,_0xd947bf){_0x27c201=_0x27c201-0x0;var _0x3cabde=_0xec55[_0x27c201];return _0x3cabde;};'use strict';var Sequelize=require(_0x5ec5('0x0'));var moment=require(_0x5ec5('0x1'));module[_0x5ec5('0x2')]={'type':{'type':Sequelize[_0x5ec5('0x3')](_0x5ec5('0x4'),_0x5ec5('0x5'))},'result':{'type':Sequelize[_0x5ec5('0x6')]},'transfererchannel':{'type':Sequelize[_0x5ec5('0x6')]},'transferercalleridnum':{'type':Sequelize[_0x5ec5('0x6')]},'transferercalleridname':{'type':Sequelize['STRING']},'transfererconnectedlinenum':{'type':Sequelize[_0x5ec5('0x6')]},'transfererconnectedlinename':{'type':Sequelize['STRING']},'transfereraccountcode':{'type':Sequelize[_0x5ec5('0x6')]},'transferercontext':{'type':Sequelize[_0x5ec5('0x6')]},'transfererexten':{'type':Sequelize['STRING']},'transfererlinkedid':{'type':Sequelize[_0x5ec5('0x6')]},'transfereechannel':{'type':Sequelize[_0x5ec5('0x6')]},'transfereecalleridnum':{'type':Sequelize[_0x5ec5('0x6')]},'transfereecalleridname':{'type':Sequelize['STRING']},'transfereeconnectedlinenum':{'type':Sequelize[_0x5ec5('0x6')]},'transfereeconnectedlinename':{'type':Sequelize[_0x5ec5('0x6')]},'transfereeaccountcode':{'type':Sequelize[_0x5ec5('0x6')]},'transfereecontext':{'type':Sequelize[_0x5ec5('0x6')]},'transfereeexten':{'type':Sequelize['STRING']},'transfereelinkedid':{'type':Sequelize[_0x5ec5('0x6')]},'isexternal':{'type':Sequelize['ENUM'](_0x5ec5('0x7'),'No')},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x5ec5('0x6')]}};
\ No newline at end of file
+var _0xb783=['ENUM','blind','STRING','Yes','moment'];(function(_0x57d7f4,_0x45665d){var _0x2d49da=function(_0x9198a9){while(--_0x9198a9){_0x57d7f4['push'](_0x57d7f4['shift']());}};_0x2d49da(++_0x45665d);}(_0xb783,0x72));var _0x3b78=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0xb783[_0x465a0c];return _0x1e202e;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x3b78('0x0'));module['exports']={'type':{'type':Sequelize[_0x3b78('0x1')](_0x3b78('0x2'),'attended')},'result':{'type':Sequelize['STRING']},'transfererchannel':{'type':Sequelize[_0x3b78('0x3')]},'transferercalleridnum':{'type':Sequelize[_0x3b78('0x3')]},'transferercalleridname':{'type':Sequelize['STRING']},'transfererconnectedlinenum':{'type':Sequelize[_0x3b78('0x3')]},'transfererconnectedlinename':{'type':Sequelize[_0x3b78('0x3')]},'transfereraccountcode':{'type':Sequelize[_0x3b78('0x3')]},'transferercontext':{'type':Sequelize[_0x3b78('0x3')]},'transfererexten':{'type':Sequelize['STRING']},'transfererlinkedid':{'type':Sequelize[_0x3b78('0x3')]},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize[_0x3b78('0x3')]},'transfereecalleridname':{'type':Sequelize['STRING']},'transfereeconnectedlinenum':{'type':Sequelize[_0x3b78('0x3')]},'transfereeconnectedlinename':{'type':Sequelize['STRING']},'transfereeaccountcode':{'type':Sequelize[_0x3b78('0x3')]},'transfereecontext':{'type':Sequelize[_0x3b78('0x3')]},'transfereeexten':{'type':Sequelize[_0x3b78('0x3')]},'transfereelinkedid':{'type':Sequelize[_0x3b78('0x3')]},'isexternal':{'type':Sequelize[_0x3b78('0x1')](_0x3b78('0x4'),'No')},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x3b78('0x3')]}};
\ No newline at end of file
index 0c066da..478d9be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2600=['merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','index','map','VoiceTransferReport','key','query','keys','intersection','attributes','model','fields','length','nolimit','order','sort','filters','pick','filter','where'];(function(_0x4b2271,_0x190a7c){var _0x58696c=function(_0x481a1){while(--_0x481a1){_0x4b2271['push'](_0x4b2271['shift']());}};_0x58696c(++_0x190a7c);}(_0x2600,0x19a));var _0x0260=function(_0x2125a1,_0x2e5d4f){_0x2125a1=_0x2125a1-0x0;var _0x4017e9=_0x2600[_0x2125a1];return _0x4017e9;};'use strict';var emlformat=require(_0x0260('0x0'));var rimraf=require(_0x0260('0x1'));var zipdir=require(_0x0260('0x2'));var jsonpatch=require(_0x0260('0x3'));var rp=require(_0x0260('0x4'));var moment=require(_0x0260('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x0260('0x6'));var util=require(_0x0260('0x7'));var path=require(_0x0260('0x8'));var sox=require(_0x0260('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0260('0xa'));var _=require(_0x0260('0xb'));var squel=require(_0x0260('0xc'));var crypto=require('crypto');var jsforce=require(_0x0260('0xd'));var deskjs=require(_0x0260('0xe'));var toCsv=require(_0x0260('0xf'));var querystring=require(_0x0260('0x10'));var Papa=require('papaparse');var Redis=require(_0x0260('0x11'));var authService=require(_0x0260('0x12'));var qs=require(_0x0260('0x13'));var as=require(_0x0260('0x14'));var hardwareService=require(_0x0260('0x15'));var logger=require(_0x0260('0x16'))(_0x0260('0x17'));var utils=require(_0x0260('0x18'));var config=require(_0x0260('0x19'));var licenseUtil=require(_0x0260('0x1a'));var db=require(_0x0260('0x1b'))['db'];function respondWithStatusCode(_0x79e1ce,_0x190339){_0x190339=_0x190339||0xcc;return function(_0x4220f8){if(_0x4220f8){return _0x79e1ce['sendStatus'](_0x190339);}return _0x79e1ce[_0x0260('0x1c')](_0x190339)[_0x0260('0x1d')]();};}function respondWithResult(_0x1ff73f,_0x49105e){_0x49105e=_0x49105e||0xc8;return function(_0x5e6003){if(_0x5e6003){return _0x1ff73f[_0x0260('0x1c')](_0x49105e)[_0x0260('0x1e')](_0x5e6003);}};}function respondWithFilteredResult(_0x54eb94,_0x4fc08b){return function(_0x53b18b){if(_0x53b18b){var _0x4bf9fe=typeof _0x4fc08b[_0x0260('0x1f')]===_0x0260('0x20')&&typeof _0x4fc08b[_0x0260('0x21')]===_0x0260('0x20');var _0x34fc3b=_0x53b18b[_0x0260('0x22')];var _0x5a09de=_0x4bf9fe?0x0:_0x4fc08b['offset'];var _0x38570b=_0x4bf9fe?_0x53b18b[_0x0260('0x22')]:_0x4fc08b[_0x0260('0x1f')]+_0x4fc08b[_0x0260('0x21')];var _0x554d4c;if(_0x38570b>=_0x34fc3b){_0x38570b=_0x34fc3b;_0x554d4c=0xc8;}else{_0x554d4c=0xce;}_0x54eb94[_0x0260('0x1c')](_0x554d4c);return _0x54eb94[_0x0260('0x23')](_0x0260('0x24'),_0x5a09de+'-'+_0x38570b+'/'+_0x34fc3b)['json'](_0x53b18b);}return null;};}function patchUpdates(_0x5ad5f2){return function(_0x45e1ab){try{jsonpatch[_0x0260('0x25')](_0x45e1ab,_0x5ad5f2,!![]);}catch(_0xacc22a){return BPromise[_0x0260('0x26')](_0xacc22a);}return _0x45e1ab[_0x0260('0x27')]();};}function saveUpdates(_0xd28df2,_0x269313){return function(_0x289867){if(_0x289867){return _0x289867[_0x0260('0x28')](_0xd28df2)[_0x0260('0x29')](function(_0x1d7b18){return _0x1d7b18;});}return null;};}function removeEntity(_0x325258,_0x2baa90){return function(_0x144647){if(_0x144647){return _0x144647[_0x0260('0x2a')]()[_0x0260('0x29')](function(){_0x325258['status'](0xcc)[_0x0260('0x1d')]();});}};}function handleEntityNotFound(_0x346d86,_0xa0faba){return function(_0x35a239){if(!_0x35a239){_0x346d86['sendStatus'](0x194);}return _0x35a239;};}function handleError(_0x57930d,_0x2642c6){_0x2642c6=_0x2642c6||0x1f4;return function(_0x1448d2){logger[_0x0260('0x2b')](_0x1448d2[_0x0260('0x2c')]);if(_0x1448d2[_0x0260('0x2d')]){delete _0x1448d2[_0x0260('0x2d')];}_0x57930d['status'](_0x2642c6)['send'](_0x1448d2);};}exports[_0x0260('0x2e')]=function(_0x3159a0,_0xa9ea58){var _0x2ab62d={},_0x10003d={},_0x53c684={'count':0x0,'rows':[]};var _0x10c6ae=_[_0x0260('0x2f')](db[_0x0260('0x30')]['rawAttributes'],function(_0x505ee5){return{'name':_0x505ee5['fieldName'],'type':_0x505ee5['type'][_0x0260('0x31')]};});_0x10003d['model']=_[_0x0260('0x2f')](_0x10c6ae,'name');_0x10003d[_0x0260('0x32')]=_[_0x0260('0x33')](_0x3159a0[_0x0260('0x32')]);_0x10003d['filters']=_[_0x0260('0x34')](_0x10003d['model'],_0x10003d['query']);_0x2ab62d[_0x0260('0x35')]=_[_0x0260('0x34')](_0x10003d[_0x0260('0x36')],qs['fields'](_0x3159a0[_0x0260('0x32')][_0x0260('0x37')]));_0x2ab62d[_0x0260('0x35')]=_0x2ab62d[_0x0260('0x35')][_0x0260('0x38')]?_0x2ab62d[_0x0260('0x35')]:_0x10003d[_0x0260('0x36')];if(!_0x3159a0['query']['hasOwnProperty'](_0x0260('0x39'))){_0x2ab62d['limit']=qs[_0x0260('0x21')](_0x3159a0[_0x0260('0x32')]['limit']);_0x2ab62d['offset']=qs[_0x0260('0x1f')](_0x3159a0['query'][_0x0260('0x1f')]);}_0x2ab62d[_0x0260('0x3a')]=qs[_0x0260('0x3b')](_0x3159a0['query'][_0x0260('0x3b')]);_0x2ab62d['where']=qs[_0x0260('0x3c')](_[_0x0260('0x3d')](_0x3159a0[_0x0260('0x32')],_0x10003d[_0x0260('0x3c')]),_0x10c6ae);if(_0x3159a0['query'][_0x0260('0x3e')]){_0x2ab62d[_0x0260('0x3f')]=_[_0x0260('0x40')](_0x2ab62d[_0x0260('0x3f')],{'$or':_[_0x0260('0x2f')](_0x10c6ae,function(_0x3f2a77){if(_0x3f2a77[_0x0260('0x41')]!==_0x0260('0x42')){var _0x27ad82={};_0x27ad82[_0x3f2a77['name']]={'$like':'%'+_0x3159a0[_0x0260('0x32')][_0x0260('0x3e')]+'%'};return _0x27ad82;}})});}_0x2ab62d=_[_0x0260('0x40')]({},_0x2ab62d,_0x3159a0[_0x0260('0x43')]);var _0x54dba9={'where':_0x2ab62d[_0x0260('0x3f')]};return db[_0x0260('0x30')][_0x0260('0x22')](_0x54dba9)['then'](function(_0x15b60f){_0x53c684[_0x0260('0x22')]=_0x15b60f;if(_0x3159a0[_0x0260('0x32')][_0x0260('0x44')]){_0x2ab62d[_0x0260('0x45')]=[{'all':!![]}];}return db[_0x0260('0x30')][_0x0260('0x46')](_0x2ab62d);})['then'](function(_0x5b5473){_0x53c684[_0x0260('0x47')]=_0x5b5473;return _0x53c684;})[_0x0260('0x29')](respondWithFilteredResult(_0xa9ea58,_0x2ab62d))[_0x0260('0x48')](handleError(_0xa9ea58,null));};exports[_0x0260('0x49')]=function(_0x2f99e1,_0x5a1561){var _0x35531b={'raw':!![],'where':{'id':_0x2f99e1[_0x0260('0x4a')]['id']}},_0x15f826={};_0x15f826['model']=_[_0x0260('0x33')](db['VoiceTransferReport']['rawAttributes']);_0x15f826['query']=_[_0x0260('0x33')](_0x2f99e1[_0x0260('0x32')]);_0x15f826[_0x0260('0x3c')]=_[_0x0260('0x34')](_0x15f826['model'],_0x15f826[_0x0260('0x32')]);_0x35531b[_0x0260('0x35')]=_['intersection'](_0x15f826[_0x0260('0x36')],qs[_0x0260('0x37')](_0x2f99e1[_0x0260('0x32')][_0x0260('0x37')]));_0x35531b['attributes']=_0x35531b['attributes'][_0x0260('0x38')]?_0x35531b[_0x0260('0x35')]:_0x15f826[_0x0260('0x36')];if(_0x2f99e1[_0x0260('0x32')][_0x0260('0x44')]){_0x35531b[_0x0260('0x45')]=[{'all':!![]}];}_0x35531b=_[_0x0260('0x40')]({},_0x35531b,_0x2f99e1[_0x0260('0x43')]);return db[_0x0260('0x30')][_0x0260('0x4b')](_0x35531b)[_0x0260('0x29')](handleEntityNotFound(_0x5a1561,null))[_0x0260('0x29')](respondWithResult(_0x5a1561,null))[_0x0260('0x48')](handleError(_0x5a1561,null));};exports[_0x0260('0x4c')]=function(_0x34442c,_0x12ea76){return db['VoiceTransferReport'][_0x0260('0x4c')](_0x34442c['body'],{})[_0x0260('0x29')](respondWithResult(_0x12ea76,0xc9))[_0x0260('0x48')](handleError(_0x12ea76,null));};exports[_0x0260('0x28')]=function(_0x77f9,_0x2b0d9f){if(_0x77f9['body']['id']){delete _0x77f9[_0x0260('0x4d')]['id'];}return db['VoiceTransferReport'][_0x0260('0x4b')]({'where':{'id':_0x77f9['params']['id']}})['then'](handleEntityNotFound(_0x2b0d9f,null))[_0x0260('0x29')](saveUpdates(_0x77f9[_0x0260('0x4d')],null))['then'](respondWithResult(_0x2b0d9f,null))['catch'](handleError(_0x2b0d9f,null));};exports[_0x0260('0x2a')]=function(_0x47b7ed,_0x2a2a1e){return db[_0x0260('0x30')][_0x0260('0x4b')]({'where':{'id':_0x47b7ed['params']['id']}})[_0x0260('0x29')](handleEntityNotFound(_0x2a2a1e,null))['then'](removeEntity(_0x2a2a1e,null))[_0x0260('0x48')](handleError(_0x2a2a1e,null));};exports['describe']=function(_0x3153c2,_0x492457){return db[_0x0260('0x30')][_0x0260('0x4e')]()[_0x0260('0x29')](respondWithResult(_0x492457,null))['catch'](handleError(_0x492457,null));};
\ No newline at end of file
+var _0xe59d=['model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filter','VIRTUAL','merge','options','includeAll','include','catch','show','params','rawAttributes','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','apply','reject','save','update','destroy','then','error','stack','name','index','map','VoiceTransferReport','type','key'];(function(_0xff8595,_0x39341d){var _0x31e49e=function(_0x23ee7b){while(--_0x23ee7b){_0xff8595['push'](_0xff8595['shift']());}};_0x31e49e(++_0x39341d);}(_0xe59d,0x101));var _0xde59=function(_0x56a7bc,_0x41d6f6){_0x56a7bc=_0x56a7bc-0x0;var _0x4f5883=_0xe59d[_0x56a7bc];return _0x4f5883;};'use strict';var emlformat=require(_0xde59('0x0'));var rimraf=require(_0xde59('0x1'));var zipdir=require(_0xde59('0x2'));var jsonpatch=require(_0xde59('0x3'));var rp=require(_0xde59('0x4'));var moment=require(_0xde59('0x5'));var BPromise=require(_0xde59('0x6'));var Mustache=require(_0xde59('0x7'));var util=require('util');var path=require(_0xde59('0x8'));var sox=require(_0xde59('0x9'));var csv=require('to-csv');var ejs=require(_0xde59('0xa'));var fs=require('fs');var fs_extra=require(_0xde59('0xb'));var _=require(_0xde59('0xc'));var squel=require(_0xde59('0xd'));var crypto=require('crypto');var jsforce=require(_0xde59('0xe'));var deskjs=require(_0xde59('0xf'));var toCsv=require(_0xde59('0x10'));var querystring=require(_0xde59('0x11'));var Papa=require(_0xde59('0x12'));var Redis=require(_0xde59('0x13'));var authService=require(_0xde59('0x14'));var qs=require(_0xde59('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xde59('0x16'));var logger=require(_0xde59('0x17'))(_0xde59('0x18'));var utils=require(_0xde59('0x19'));var config=require(_0xde59('0x1a'));var licenseUtil=require(_0xde59('0x1b'));var db=require(_0xde59('0x1c'))['db'];function respondWithStatusCode(_0x2e6631,_0x1021f5){_0x1021f5=_0x1021f5||0xcc;return function(_0x9b1f86){if(_0x9b1f86){return _0x2e6631[_0xde59('0x1d')](_0x1021f5);}return _0x2e6631[_0xde59('0x1e')](_0x1021f5)[_0xde59('0x1f')]();};}function respondWithResult(_0x1bc5b0,_0x5a0d8b){_0x5a0d8b=_0x5a0d8b||0xc8;return function(_0x5a73e0){if(_0x5a73e0){return _0x1bc5b0[_0xde59('0x1e')](_0x5a0d8b)[_0xde59('0x20')](_0x5a73e0);}};}function respondWithFilteredResult(_0x4ce251,_0x276f00){return function(_0x4b3ed7){if(_0x4b3ed7){var _0x2638c4=typeof _0x276f00[_0xde59('0x21')]===_0xde59('0x22')&&typeof _0x276f00[_0xde59('0x23')]===_0xde59('0x22');var _0xbbd137=_0x4b3ed7[_0xde59('0x24')];var _0x49a6f3=_0x2638c4?0x0:_0x276f00['offset'];var _0x23f53a=_0x2638c4?_0x4b3ed7[_0xde59('0x24')]:_0x276f00[_0xde59('0x21')]+_0x276f00['limit'];var _0x3006c2;if(_0x23f53a>=_0xbbd137){_0x23f53a=_0xbbd137;_0x3006c2=0xc8;}else{_0x3006c2=0xce;}_0x4ce251[_0xde59('0x1e')](_0x3006c2);return _0x4ce251['set']('Content-Range',_0x49a6f3+'-'+_0x23f53a+'/'+_0xbbd137)['json'](_0x4b3ed7);}return null;};}function patchUpdates(_0x11e6d3){return function(_0x3d5d0a){try{jsonpatch[_0xde59('0x25')](_0x3d5d0a,_0x11e6d3,!![]);}catch(_0x8fac5e){return BPromise[_0xde59('0x26')](_0x8fac5e);}return _0x3d5d0a[_0xde59('0x27')]();};}function saveUpdates(_0x47a446,_0x1fa6b2){return function(_0x1eac26){if(_0x1eac26){return _0x1eac26[_0xde59('0x28')](_0x47a446)['then'](function(_0x4d5433){return _0x4d5433;});}return null;};}function removeEntity(_0x4ac9cb,_0x4cf9a0){return function(_0x4cfff9){if(_0x4cfff9){return _0x4cfff9[_0xde59('0x29')]()[_0xde59('0x2a')](function(){_0x4ac9cb[_0xde59('0x1e')](0xcc)[_0xde59('0x1f')]();});}};}function handleEntityNotFound(_0xe3e72f,_0x2b118f){return function(_0x3ca116){if(!_0x3ca116){_0xe3e72f[_0xde59('0x1d')](0x194);}return _0x3ca116;};}function handleError(_0x37ae95,_0x233725){_0x233725=_0x233725||0x1f4;return function(_0x4bec98){logger[_0xde59('0x2b')](_0x4bec98[_0xde59('0x2c')]);if(_0x4bec98[_0xde59('0x2d')]){delete _0x4bec98['name'];}_0x37ae95['status'](_0x233725)['send'](_0x4bec98);};}exports[_0xde59('0x2e')]=function(_0x7a8825,_0x308cfb){var _0x386159={},_0x1ef558={},_0x10f6fe={'count':0x0,'rows':[]};var _0x28b059=_[_0xde59('0x2f')](db[_0xde59('0x30')]['rawAttributes'],function(_0x15a5c0){return{'name':_0x15a5c0['fieldName'],'type':_0x15a5c0[_0xde59('0x31')][_0xde59('0x32')]};});_0x1ef558[_0xde59('0x33')]=_[_0xde59('0x2f')](_0x28b059,'name');_0x1ef558[_0xde59('0x34')]=_[_0xde59('0x35')](_0x7a8825[_0xde59('0x34')]);_0x1ef558[_0xde59('0x36')]=_[_0xde59('0x37')](_0x1ef558[_0xde59('0x33')],_0x1ef558[_0xde59('0x34')]);_0x386159[_0xde59('0x38')]=_[_0xde59('0x37')](_0x1ef558[_0xde59('0x33')],qs[_0xde59('0x39')](_0x7a8825['query'][_0xde59('0x39')]));_0x386159[_0xde59('0x38')]=_0x386159['attributes'][_0xde59('0x3a')]?_0x386159[_0xde59('0x38')]:_0x1ef558[_0xde59('0x33')];if(!_0x7a8825[_0xde59('0x34')][_0xde59('0x3b')]('nolimit')){_0x386159['limit']=qs['limit'](_0x7a8825[_0xde59('0x34')]['limit']);_0x386159['offset']=qs[_0xde59('0x21')](_0x7a8825[_0xde59('0x34')][_0xde59('0x21')]);}_0x386159[_0xde59('0x3c')]=qs[_0xde59('0x3d')](_0x7a8825[_0xde59('0x34')][_0xde59('0x3d')]);_0x386159[_0xde59('0x3e')]=qs[_0xde59('0x36')](_['pick'](_0x7a8825[_0xde59('0x34')],_0x1ef558[_0xde59('0x36')]),_0x28b059);if(_0x7a8825[_0xde59('0x34')][_0xde59('0x3f')]){_0x386159[_0xde59('0x3e')]=_['merge'](_0x386159['where'],{'$or':_[_0xde59('0x2f')](_0x28b059,function(_0x4ac330){if(_0x4ac330[_0xde59('0x31')]!==_0xde59('0x40')){var _0x4bf73a={};_0x4bf73a[_0x4ac330[_0xde59('0x2d')]]={'$like':'%'+_0x7a8825[_0xde59('0x34')][_0xde59('0x3f')]+'%'};return _0x4bf73a;}})});}_0x386159=_[_0xde59('0x41')]({},_0x386159,_0x7a8825[_0xde59('0x42')]);var _0x5b2746={'where':_0x386159['where']};return db[_0xde59('0x30')][_0xde59('0x24')](_0x5b2746)[_0xde59('0x2a')](function(_0x37624f){_0x10f6fe['count']=_0x37624f;if(_0x7a8825['query'][_0xde59('0x43')]){_0x386159[_0xde59('0x44')]=[{'all':!![]}];}return db[_0xde59('0x30')]['findAll'](_0x386159);})[_0xde59('0x2a')](function(_0xd49caa){_0x10f6fe['rows']=_0xd49caa;return _0x10f6fe;})[_0xde59('0x2a')](respondWithFilteredResult(_0x308cfb,_0x386159))[_0xde59('0x45')](handleError(_0x308cfb,null));};exports[_0xde59('0x46')]=function(_0x3b1998,_0x37e59a){var _0xc6f790={'raw':!![],'where':{'id':_0x3b1998[_0xde59('0x47')]['id']}},_0x865e4e={};_0x865e4e[_0xde59('0x33')]=_[_0xde59('0x35')](db[_0xde59('0x30')][_0xde59('0x48')]);_0x865e4e['query']=_[_0xde59('0x35')](_0x3b1998[_0xde59('0x34')]);_0x865e4e[_0xde59('0x36')]=_[_0xde59('0x37')](_0x865e4e[_0xde59('0x33')],_0x865e4e[_0xde59('0x34')]);_0xc6f790[_0xde59('0x38')]=_[_0xde59('0x37')](_0x865e4e[_0xde59('0x33')],qs['fields'](_0x3b1998['query'][_0xde59('0x39')]));_0xc6f790[_0xde59('0x38')]=_0xc6f790['attributes']['length']?_0xc6f790[_0xde59('0x38')]:_0x865e4e[_0xde59('0x33')];if(_0x3b1998[_0xde59('0x34')][_0xde59('0x43')]){_0xc6f790[_0xde59('0x44')]=[{'all':!![]}];}_0xc6f790=_[_0xde59('0x41')]({},_0xc6f790,_0x3b1998[_0xde59('0x42')]);return db[_0xde59('0x30')][_0xde59('0x49')](_0xc6f790)[_0xde59('0x2a')](handleEntityNotFound(_0x37e59a,null))[_0xde59('0x2a')](respondWithResult(_0x37e59a,null))['catch'](handleError(_0x37e59a,null));};exports[_0xde59('0x4a')]=function(_0x1c814f,_0x2d8c3f){return db[_0xde59('0x30')]['create'](_0x1c814f[_0xde59('0x4b')],{})[_0xde59('0x2a')](respondWithResult(_0x2d8c3f,0xc9))['catch'](handleError(_0x2d8c3f,null));};exports['update']=function(_0x2ad504,_0x52c81e){if(_0x2ad504[_0xde59('0x4b')]['id']){delete _0x2ad504[_0xde59('0x4b')]['id'];}return db['VoiceTransferReport'][_0xde59('0x49')]({'where':{'id':_0x2ad504[_0xde59('0x47')]['id']}})[_0xde59('0x2a')](handleEntityNotFound(_0x52c81e,null))[_0xde59('0x2a')](saveUpdates(_0x2ad504[_0xde59('0x4b')],null))['then'](respondWithResult(_0x52c81e,null))[_0xde59('0x45')](handleError(_0x52c81e,null));};exports['destroy']=function(_0x4d5045,_0xbc2abb){return db[_0xde59('0x30')][_0xde59('0x49')]({'where':{'id':_0x4d5045[_0xde59('0x47')]['id']}})[_0xde59('0x2a')](handleEntityNotFound(_0xbc2abb,null))[_0xde59('0x2a')](removeEntity(_0xbc2abb,null))[_0xde59('0x45')](handleError(_0xbc2abb,null));};exports[_0xde59('0x4c')]=function(_0x523f65,_0x765510){return db['VoiceTransferReport'][_0xde59('0x4c')]()[_0xde59('0x2a')](respondWithResult(_0x765510,null))[_0xde59('0x45')](handleError(_0x765510,null));};
\ No newline at end of file
index c8767d9..6252f85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72a0=['lodash','util','moment','bluebird','request-promise','rimraf','../../config/environment','./voiceTransferReport.attributes','VoiceTransferReport','report_call_transfer'];(function(_0x511b76,_0x4727fa){var _0x5424ff=function(_0x24b7c0){while(--_0x24b7c0){_0x511b76['push'](_0x511b76['shift']());}};_0x5424ff(++_0x4727fa);}(_0x72a0,0x1b8));var _0x072a=function(_0x1b13e3,_0xd2b9c8){_0x1b13e3=_0x1b13e3-0x0;var _0x1e9ab9=_0x72a0[_0x1b13e3];return _0x1e9ab9;};'use strict';var _=require(_0x072a('0x0'));var util=require(_0x072a('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x072a('0x2'));var BPromise=require(_0x072a('0x3'));var rp=require(_0x072a('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x072a('0x5'));var config=require(_0x072a('0x6'));var attributes=require(_0x072a('0x7'));module['exports']=function(_0x3dad5a,_0x401e56){return _0x3dad5a['define'](_0x072a('0x8'),attributes,{'tableName':_0x072a('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x55e6=['./voiceTransferReport.attributes','exports','define','VoiceTransferReport','report_call_transfer','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x13f12a,_0xdd812){var _0x111434=function(_0x1b64f5){while(--_0x1b64f5){_0x13f12a['push'](_0x13f12a['shift']());}};_0x111434(++_0xdd812);}(_0x55e6,0x155));var _0x655e=function(_0x27a198,_0x5e501d){_0x27a198=_0x27a198-0x0;var _0x42f6d9=_0x55e6[_0x27a198];return _0x42f6d9;};'use strict';var _=require(_0x655e('0x0'));var util=require(_0x655e('0x1'));var logger=require(_0x655e('0x2'))(_0x655e('0x3'));var moment=require(_0x655e('0x4'));var BPromise=require('bluebird');var rp=require(_0x655e('0x5'));var fs=require('fs');var path=require(_0x655e('0x6'));var rimraf=require(_0x655e('0x7'));var config=require(_0x655e('0x8'));var attributes=require(_0x655e('0x9'));module[_0x655e('0xa')]=function(_0x1b36ab,_0x52c1a2){return _0x1b36ab[_0x655e('0xb')](_0x655e('0xc'),attributes,{'tableName':_0x655e('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d49db2f..4b81b54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x106f=['code','message','result','catch','CreateVoiceTransferReport','VoiceTransferReport','create','body','options','raw','then','debug','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x4a73dd,_0x58e46c){var _0x279e6b=function(_0x25254b){while(--_0x25254b){_0x4a73dd['push'](_0x4a73dd['shift']());}};_0x279e6b(++_0x58e46c);}(_0x106f,0x9d));var _0xf106=function(_0x5237ba,_0x41febe){_0x5237ba=_0x5237ba-0x0;var _0x50951d=_0x106f[_0x5237ba];return _0x50951d;};'use strict';var _=require(_0xf106('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xf106('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf106('0x2'));var db=require(_0xf106('0x3'))['db'];var utils=require(_0xf106('0x4'));var logger=require(_0xf106('0x5'))(_0xf106('0x6'));var config=require(_0xf106('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xf106('0x8')][_0xf106('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x537dcb,_0x2428a1,_0x4ee979){return new BPromise(function(_0x559073,_0x297edb){return client[_0xf106('0xa')](_0x537dcb,_0x4ee979)['then'](function(_0xb22071){logger[_0xf106('0xb')](_0xf106('0xc'),_0x2428a1,_0xf106('0xd'));logger['debug'](_0xf106('0xe'),_0x2428a1,_0xf106('0xd'),JSON[_0xf106('0xf')](_0xb22071));if(_0xb22071['error']){if(_0xb22071[_0xf106('0x10')][_0xf106('0x11')]===0x1f4){logger['error']('VoiceTransferReport,\x20%s,\x20%s',_0x2428a1,_0xb22071[_0xf106('0x10')][_0xf106('0x12')]);return _0x297edb(_0xb22071[_0xf106('0x10')]['message']);}logger[_0xf106('0x10')](_0xf106('0xc'),_0x2428a1,_0xb22071['error'][_0xf106('0x12')]);return _0x559073(_0xb22071[_0xf106('0x10')][_0xf106('0x12')]);}else{logger['info'](_0xf106('0xc'),_0x2428a1,_0xf106('0xd'));_0x559073(_0xb22071[_0xf106('0x13')][_0xf106('0x12')]);}})[_0xf106('0x14')](function(_0x1aaf0d){logger[_0xf106('0x10')]('VoiceTransferReport,\x20%s,\x20%s',_0x2428a1,_0x1aaf0d);_0x297edb(_0x1aaf0d);});});}exports[_0xf106('0x15')]=function(_0x395de7){var _0x3e07e9=this;return new Promise(function(_0x201d73,_0x297970){return db[_0xf106('0x16')][_0xf106('0x17')](_0x395de7[_0xf106('0x18')],{'raw':_0x395de7[_0xf106('0x19')]?_0x395de7[_0xf106('0x19')][_0xf106('0x1a')]===undefined?!![]:![]:!![]})[_0xf106('0x1b')](function(_0x4a9836){logger[_0xf106('0xb')](_0xf106('0x15'),_0x395de7);logger[_0xf106('0x1c')](_0xf106('0x15'),_0x395de7,JSON[_0xf106('0xf')](_0x4a9836));_0x201d73(_0x4a9836);})['catch'](function(_0x1fefe5){logger[_0xf106('0x10')]('CreateVoiceTransferReport',_0x1fefe5['message'],_0x395de7);_0x297970(_0x3e07e9[_0xf106('0x10')](0x1f4,_0x1fefe5['message']));});});};
\ No newline at end of file
+var _0x42b8=['raw','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','info','VoiceTransferReport,\x20%s,\x20%s','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateVoiceTransferReport','create','body','options'];(function(_0x350aeb,_0x3d265a){var _0x3c5273=function(_0x32b417){while(--_0x32b417){_0x350aeb['push'](_0x350aeb['shift']());}};_0x3c5273(++_0x3d265a);}(_0x42b8,0x71));var _0x842b=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0x42b8[_0x5d6456];return _0x4d66c1;};'use strict';var _=require('lodash');var util=require(_0x842b('0x0'));var moment=require(_0x842b('0x1'));var BPromise=require(_0x842b('0x2'));var rs=require(_0x842b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x842b('0x4'))['db'];var utils=require(_0x842b('0x5'));var logger=require(_0x842b('0x6'))(_0x842b('0x7'));var config=require('../../config/environment');var jayson=require(_0x842b('0x8'));var client=jayson[_0x842b('0x9')][_0x842b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xbad2ca,_0x445fd9,_0x224129){return new BPromise(function(_0x38d029,_0x3a85e4){return client[_0x842b('0xb')](_0xbad2ca,_0x224129)['then'](function(_0x137f64){logger[_0x842b('0xc')](_0x842b('0xd'),_0x445fd9,'request\x20sent');logger[_0x842b('0xe')](_0x842b('0xf'),_0x445fd9,_0x842b('0x10'),JSON[_0x842b('0x11')](_0x137f64));if(_0x137f64[_0x842b('0x12')]){if(_0x137f64[_0x842b('0x12')][_0x842b('0x13')]===0x1f4){logger['error'](_0x842b('0xd'),_0x445fd9,_0x137f64[_0x842b('0x12')][_0x842b('0x14')]);return _0x3a85e4(_0x137f64[_0x842b('0x12')][_0x842b('0x14')]);}logger[_0x842b('0x12')](_0x842b('0xd'),_0x445fd9,_0x137f64[_0x842b('0x12')][_0x842b('0x14')]);return _0x38d029(_0x137f64[_0x842b('0x12')][_0x842b('0x14')]);}else{logger[_0x842b('0xc')]('VoiceTransferReport,\x20%s,\x20%s',_0x445fd9,_0x842b('0x10'));_0x38d029(_0x137f64[_0x842b('0x15')][_0x842b('0x14')]);}})[_0x842b('0x16')](function(_0x261532){logger[_0x842b('0x12')](_0x842b('0xd'),_0x445fd9,_0x261532);_0x3a85e4(_0x261532);});});}exports[_0x842b('0x17')]=function(_0x1e05c1){var _0x17802f=this;return new Promise(function(_0x4d4e71,_0x506aee){return db['VoiceTransferReport'][_0x842b('0x18')](_0x1e05c1[_0x842b('0x19')],{'raw':_0x1e05c1[_0x842b('0x1a')]?_0x1e05c1['options'][_0x842b('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x4bbaef){logger[_0x842b('0xc')](_0x842b('0x17'),_0x1e05c1);logger[_0x842b('0xe')](_0x842b('0x17'),_0x1e05c1,JSON[_0x842b('0x11')](_0x4bbaef));_0x4d4e71(_0x4bbaef);})[_0x842b('0x16')](function(_0x2cca35){logger['error'](_0x842b('0x17'),_0x2cca35['message'],_0x1e05c1);_0x506aee(_0x17802f['error'](0x1f4,_0x2cca35[_0x842b('0x14')]));});});};
\ No newline at end of file
index 550210e..8fc2346 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91ad=['/transfer','transfer','exports','express','./webbar.controller','post','isAuthenticated','canUpdate','originate','/hangup','hangup','/answer','/hold','hold','/unhold','unhold','/calls','calls'];(function(_0x2c5e67,_0x33ac64){var _0x1a8581=function(_0x516a33){while(--_0x516a33){_0x2c5e67['push'](_0x2c5e67['shift']());}};_0x1a8581(++_0x33ac64);}(_0x91ad,0x93));var _0xd91a=function(_0x3ce6f5,_0x29c4ae){_0x3ce6f5=_0x3ce6f5-0x0;var _0x2844a6=_0x91ad[_0x3ce6f5];return _0x2844a6;};'use strict';var express=require(_0xd91a('0x0'));var router=express['Router']();var auth=require('../../components/auth/service');var controller=require(_0xd91a('0x1'));router[_0xd91a('0x2')]('/originate',auth[_0xd91a('0x3')](),auth[_0xd91a('0x4')](),controller[_0xd91a('0x5')]);router[_0xd91a('0x2')](_0xd91a('0x6'),auth[_0xd91a('0x3')](),auth['canUpdate'](),controller[_0xd91a('0x7')]);router[_0xd91a('0x2')](_0xd91a('0x8'),auth['isAuthenticated'](),auth[_0xd91a('0x4')](),controller['answer']);router[_0xd91a('0x2')](_0xd91a('0x9'),auth[_0xd91a('0x3')](),auth[_0xd91a('0x4')](),controller[_0xd91a('0xa')]);router[_0xd91a('0x2')](_0xd91a('0xb'),auth[_0xd91a('0x3')](),auth[_0xd91a('0x4')](),controller[_0xd91a('0xc')]);router['post'](_0xd91a('0xd'),auth[_0xd91a('0x3')](),auth[_0xd91a('0x4')](),controller[_0xd91a('0xe')]);router[_0xd91a('0x2')](_0xd91a('0xf'),auth[_0xd91a('0x3')](),auth['canUpdate'](),controller[_0xd91a('0x10')]);module[_0xd91a('0x11')]=router;
\ No newline at end of file
+var _0x163a=['/originate','isAuthenticated','canUpdate','originate','/hangup','hangup','/answer','answer','/hold','hold','unhold','/calls','/transfer','transfer','exports','express','Router','../../components/auth/service','post'];(function(_0x55db0d,_0x3cebed){var _0x217ab1=function(_0x41f432){while(--_0x41f432){_0x55db0d['push'](_0x55db0d['shift']());}};_0x217ab1(++_0x3cebed);}(_0x163a,0xe0));var _0xa163=function(_0x3a6e4b,_0x118cd9){_0x3a6e4b=_0x3a6e4b-0x0;var _0x36572d=_0x163a[_0x3a6e4b];return _0x36572d;};'use strict';var express=require(_0xa163('0x0'));var router=express[_0xa163('0x1')]();var auth=require(_0xa163('0x2'));var controller=require('./webbar.controller');router[_0xa163('0x3')](_0xa163('0x4'),auth[_0xa163('0x5')](),auth[_0xa163('0x6')](),controller[_0xa163('0x7')]);router[_0xa163('0x3')](_0xa163('0x8'),auth['isAuthenticated'](),auth['canUpdate'](),controller[_0xa163('0x9')]);router[_0xa163('0x3')](_0xa163('0xa'),auth[_0xa163('0x5')](),auth[_0xa163('0x6')](),controller[_0xa163('0xb')]);router[_0xa163('0x3')](_0xa163('0xc'),auth[_0xa163('0x5')](),auth[_0xa163('0x6')](),controller[_0xa163('0xd')]);router[_0xa163('0x3')]('/unhold',auth[_0xa163('0x5')](),auth['canUpdate'](),controller[_0xa163('0xe')]);router[_0xa163('0x3')](_0xa163('0xf'),auth['isAuthenticated'](),auth['canUpdate'](),controller['calls']);router['post'](_0xa163('0x10'),auth['isAuthenticated'](),auth[_0xa163('0x6')](),controller[_0xa163('0x11')]);module[_0xa163('0x12')]=router;
\ No newline at end of file
index 9db8a23..d3cb7b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b1f=['originate','info','originate\x20fired:','body','validate','userId','callNumber','callerId','entityFound:','format','user:%s','originate\x20executed!','hangup','hangup\x20fired:','webbar:hangup','json','hangup\x20executed!','webbar:answer','answer\x20executed!','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls\x20fired:','filter','rows','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transferNumber','webbar:transfer','path','lodash','../../config/environment','util','bluebird','client','http','../../config/logger','redis','defaults','localhost','socket.io-emitter','userId\x20is\x20required','callNumber\x20is\x20required','number','string','sessionId\x20is\x20required','transferNumber\x20is\x20required','stringify','emit','log','handleError:','error','stack','name','status','send','NotFound','request','then','result','catch','User','agent','all','UserId','sessionId','length','sessionId\x20'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x4b1f,0x195));var _0xf4b1=function(_0x5f309e,_0x66e31){_0x5f309e=_0x5f309e-0x0;var _0x487b5e=_0x4b1f[_0x5f309e];return _0x487b5e;};'use strict';var path=require(_0xf4b1('0x0'));var fs=require('fs');var _=require(_0xf4b1('0x1'));var db=require('../../mysqldb')['db'];var config=require(_0xf4b1('0x2'));var util=require(_0xf4b1('0x3'));var BPromise=require(_0xf4b1('0x4'));var jayson=require('jayson/promise');var amiClient=jayson[_0xf4b1('0x5')][_0xf4b1('0x6')]({'port':0x232a});var logger=require(_0xf4b1('0x7'))('webbarapi');var Redis=require('ioredis');config[_0xf4b1('0x8')]=_[_0xf4b1('0x9')](config[_0xf4b1('0x8')],{'host':_0xf4b1('0xa'),'port':0x18eb});var io=require(_0xf4b1('0xb'))(new Redis(config['redis']));var Schema=require('validate');var originateValidation=new Schema({'userId':{'type':'number','required':[!![],_0xf4b1('0xc')]},'callNumber':{'type':'string','required':[!![],_0xf4b1('0xd')]},'callerId':{'type':'string'},'callbackUrl':{'type':'string'}});var hangupValidation=new Schema({'userId':{'type':_0xf4b1('0xe'),'required':[!![],_0xf4b1('0xc')]},'sessionId':{'type':_0xf4b1('0xf'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xf4b1('0xe'),'required':[!![],_0xf4b1('0xc')]},'sessionId':{'type':_0xf4b1('0xf'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0xf4b1('0xe'),'required':[!![],_0xf4b1('0xc')]},'sessionId':{'type':_0xf4b1('0xf'),'required':[!![],_0xf4b1('0x10')]},'transferNumber':{'type':_0xf4b1('0xf'),'required':[!![],_0xf4b1('0x11')]}});var holdValidation=new Schema({'userId':{'type':_0xf4b1('0xe'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xf4b1('0xe'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':![]}});var callsValidation=new Schema({'userId':{'type':_0xf4b1('0xe'),'required':[!![],'userId\x20is\x20required']}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],_0xf4b1('0xc')]}});function emit(_0x4968f4,_0x5e7206,_0x554517){logger['info'](_0x4968f4,_0x5e7206,JSON[_0xf4b1('0x12')](_0x554517));io['to'](_0x4968f4)[_0xf4b1('0x13')](_0x5e7206,_0x554517);}function handleError(_0x534fd8){return function(_0x3b378e){console[_0xf4b1('0x14')](_0xf4b1('0x15'),_0x3b378e,_0x3b378e instanceof RangeError);logger[_0xf4b1('0x16')](_0x3b378e[_0xf4b1('0x17')]);if(_0x3b378e instanceof RangeError){if(_0x3b378e[_0xf4b1('0x18')]){delete _0x3b378e['name'];}_0x534fd8[_0xf4b1('0x19')](0x194)[_0xf4b1('0x1a')](_0x3b378e);}else{if(_0x3b378e['name']){delete _0x3b378e[_0xf4b1('0x18')];}_0x534fd8[_0xf4b1('0x19')](0x1f4)['send'](_0x3b378e);}};}function checkError(){return function(_0x13892d){if(!_0x13892d){throw new RangeError(_0xf4b1('0x1b'));}return _0x13892d;};}function respondWithRpcPromise(_0xbfab1e,_0x466739){return new BPromise(function(_0x5c50e8,_0x20013c){var _0x29b8c1=amiClient;return _0x29b8c1[_0xf4b1('0x1c')](_0xbfab1e,_0x466739)[_0xf4b1('0x1d')](function(_0x58376d){if(_0x58376d[_0xf4b1('0x16')]){if(_0x58376d[_0xf4b1('0x16')]['code']===0x1f4){return _0x20013c(_0x58376d[_0xf4b1('0x16')]['message']);}return _0x5c50e8(_0x58376d[_0xf4b1('0x16')]['message']);}else{_0x5c50e8(_0x58376d[_0xf4b1('0x1e')]);}})[_0xf4b1('0x1f')](function(_0x2e803d){_0x20013c(_0x2e803d);});});}function getAgent(_0x5a0285){return db[_0xf4b1('0x20')]['findOne']({'where':{'id':_0x5a0285,'role':_0xf4b1('0x21')}})['then'](checkError());}function getAgentCheckSession(_0x29493b,_0x447ae7){return new BPromise(function(_0x5d28af,_0x22353e){var _0x23693b=respondWithRpcPromise('VoiceChannels');var _0x125bf4=getAgent(_0x29493b);Promise[_0xf4b1('0x22')]([_0x23693b,_0x125bf4])[_0xf4b1('0x1d')](function(_0x11ffb3){var _0x3046dc=_0x11ffb3[0x0];var _0x36243e=_0x11ffb3[0x1];var _0x2f830c=_['filter'](_0x3046dc['rows'],function(_0x31c13c){return _0x31c13c[_0xf4b1('0x23')]==_0x36243e['id']&&_0x31c13c[_0xf4b1('0x24')]==_0x447ae7;});if(_0x2f830c[_0xf4b1('0x25')]==0x1){_0x5d28af(_0x36243e);}else{_0x22353e(new RangeError(_0xf4b1('0x26')+_0x447ae7+'\x20not\x20found!'));}});});}exports[_0xf4b1('0x27')]=function(_0xa08452,_0xa6bdd7){logger[_0xf4b1('0x28')](_0xf4b1('0x29'),_0xa08452[_0xf4b1('0x2a')]);var _0x186dd3=originateValidation[_0xf4b1('0x2b')](_0xa08452['body']);if(_0x186dd3[_0xf4b1('0x25')]>0x0){return _0xa6bdd7['status'](0x190)['json'](_0x186dd3);}var _0x48f672=_0xa08452[_0xf4b1('0x2a')][_0xf4b1('0x2c')];var _0x75f753=_0xa08452[_0xf4b1('0x2a')][_0xf4b1('0x2d')];var _0x2ddbc8=_0xa08452[_0xf4b1('0x2a')][_0xf4b1('0x2e')];var _0x55a5a6=_0xa08452[_0xf4b1('0x2a')]['callbackUrl'];return getAgent(_0x48f672)[_0xf4b1('0x1d')](function(_0x303290){logger['info'](_0xf4b1('0x2f'),_0x303290[_0xf4b1('0x18')]);emit(util[_0xf4b1('0x30')](_0xf4b1('0x31'),_0x303290[_0xf4b1('0x18')]),'webbar:originate',{'callNumber':_0x75f753,'callerId':_0x2ddbc8,'callbackUrl':_0x55a5a6});return _0xa6bdd7[_0xf4b1('0x19')](0xc8)['json']({'error':![],'message':_0xf4b1('0x32')});})['catch'](handleError(_0xa6bdd7));};exports[_0xf4b1('0x33')]=function(_0x366621,_0xfe587f){logger['info'](_0xf4b1('0x34'),_0x366621[_0xf4b1('0x2a')]);var _0x207020=hangupValidation[_0xf4b1('0x2b')](_0x366621[_0xf4b1('0x2a')]);if(_0x207020[_0xf4b1('0x25')]>0x0){return _0xfe587f[_0xf4b1('0x19')](0x190)['json'](_0x207020);}var _0x393da0=_0x366621[_0xf4b1('0x2a')][_0xf4b1('0x2c')];var _0x3553c3=_0x366621[_0xf4b1('0x2a')][_0xf4b1('0x24')];return getAgent(_0x393da0)['then'](function(_0x33879b){logger[_0xf4b1('0x28')]('entityFound:',_0x33879b['name']);emit(util[_0xf4b1('0x30')](_0xf4b1('0x31'),_0x33879b[_0xf4b1('0x18')]),_0xf4b1('0x35'),{'sessionId':_0x3553c3});return _0xfe587f[_0xf4b1('0x19')](0xc8)[_0xf4b1('0x36')]({'error':![],'message':_0xf4b1('0x37')});})[_0xf4b1('0x1f')](handleError(_0xfe587f));};exports['answer']=function(_0x3a4383,_0x5e9da4){logger['info']('answer\x20fired:',_0x3a4383[_0xf4b1('0x2a')]);var _0x3feed5=answerValidation[_0xf4b1('0x2b')](_0x3a4383['body']);if(_0x3feed5[_0xf4b1('0x25')]>0x0){return _0x5e9da4[_0xf4b1('0x19')](0x190)[_0xf4b1('0x36')](_0x3feed5);}var _0x5597d5=_0x3a4383[_0xf4b1('0x2a')][_0xf4b1('0x2c')];var _0x1f856c=_0x3a4383['body'][_0xf4b1('0x24')];return getAgent(_0x5597d5)['then'](function(_0x2e4f2a){logger[_0xf4b1('0x28')](_0xf4b1('0x2f'),_0x2e4f2a['name']);emit(util[_0xf4b1('0x30')](_0xf4b1('0x31'),_0x2e4f2a['name']),_0xf4b1('0x38'),{'sessionId':_0x1f856c});return _0x5e9da4[_0xf4b1('0x19')](0xc8)[_0xf4b1('0x36')]({'error':![],'message':_0xf4b1('0x39')});})['catch'](handleError(_0x5e9da4));};exports['hold']=function(_0x14cdc6,_0x1638a6){logger['info'](_0xf4b1('0x3a'),_0x14cdc6['body']);var _0x202381=holdValidation['validate'](_0x14cdc6[_0xf4b1('0x2a')]);if(_0x202381[_0xf4b1('0x25')]>0x0){return _0x1638a6['status'](0x190)[_0xf4b1('0x36')](_0x202381);}var _0x104819=_0x14cdc6[_0xf4b1('0x2a')][_0xf4b1('0x2c')];var _0x2f4c27=_0x14cdc6[_0xf4b1('0x2a')][_0xf4b1('0x24')];return getAgent(_0x104819)[_0xf4b1('0x1d')](function(_0x4e6e04){logger['info'](_0xf4b1('0x2f'),_0x4e6e04[_0xf4b1('0x18')]);emit(util['format'](_0xf4b1('0x31'),_0x4e6e04[_0xf4b1('0x18')]),_0xf4b1('0x3b'),{'sessionId':_0x2f4c27});return _0x1638a6[_0xf4b1('0x19')](0xc8)[_0xf4b1('0x36')]({'error':![],'message':_0xf4b1('0x3c')});})[_0xf4b1('0x1f')](handleError(_0x1638a6));};exports[_0xf4b1('0x3d')]=function(_0x29c3c1,_0x2bca13){logger[_0xf4b1('0x28')](_0xf4b1('0x3e'),_0x29c3c1[_0xf4b1('0x2a')]);var _0x1bf70f=unholdValidation[_0xf4b1('0x2b')](_0x29c3c1[_0xf4b1('0x2a')]);if(_0x1bf70f[_0xf4b1('0x25')]>0x0){return _0x2bca13[_0xf4b1('0x19')](0x190)[_0xf4b1('0x36')](_0x1bf70f);}var _0x3a1362=_0x29c3c1[_0xf4b1('0x2a')][_0xf4b1('0x2c')];var _0x38efcd=_0x29c3c1[_0xf4b1('0x2a')][_0xf4b1('0x24')];return getAgent(_0x3a1362)[_0xf4b1('0x1d')](function(_0x755ecb){logger[_0xf4b1('0x28')]('entityFound:',_0x755ecb[_0xf4b1('0x18')]);emit(util['format']('user:%s',_0x755ecb[_0xf4b1('0x18')]),_0xf4b1('0x3f'),{'sessionId':_0x38efcd});return _0x2bca13['status'](0xc8)[_0xf4b1('0x36')]({'error':![],'message':_0xf4b1('0x40')});})[_0xf4b1('0x1f')](handleError(_0x2bca13));};exports['calls']=function(_0x59b8e8,_0x1fc659){logger[_0xf4b1('0x28')](_0xf4b1('0x41'),_0x1fc659[_0xf4b1('0x2a')]);var _0x402e6c=callsValidation[_0xf4b1('0x2b')](_0x59b8e8[_0xf4b1('0x2a')]);if(_0x402e6c[_0xf4b1('0x25')]>0x0){return _0x1fc659[_0xf4b1('0x19')](0x190)[_0xf4b1('0x36')](_0x402e6c);}var _0x1fec6d=_0x59b8e8[_0xf4b1('0x2a')][_0xf4b1('0x2c')];var _0x24d0a6=respondWithRpcPromise('VoiceChannels');var _0x193bab=getAgent(_0x1fec6d);return Promise[_0xf4b1('0x22')]([_0x24d0a6,_0x193bab])[_0xf4b1('0x1d')](function(_0x427126){var _0xb53593=_0x427126[0x0];var _0x43d373=_0x427126[0x1];var _0xe7b6a3=_[_0xf4b1('0x42')](_0xb53593[_0xf4b1('0x43')],function(_0x47abe5){return _0x47abe5[_0xf4b1('0x23')]==_0x43d373['id'];});return _0x1fc659[_0xf4b1('0x19')](0xc8)[_0xf4b1('0x36')]({'count':_0xe7b6a3['length'],'rows':_0xe7b6a3});})['catch'](handleError(_0x1fc659));};exports[_0xf4b1('0x44')]=function(_0x1cc591,_0x4db29b){logger[_0xf4b1('0x28')](_0xf4b1('0x45'),_0x1cc591[_0xf4b1('0x2a')]);var _0x22d27f=conferenceValidation[_0xf4b1('0x2b')](_0x1cc591[_0xf4b1('0x2a')]);if(_0x22d27f[_0xf4b1('0x25')]>0x0){return _0x4db29b[_0xf4b1('0x19')](0x190)[_0xf4b1('0x36')](_0x22d27f);}var _0x36cf63=_0x1cc591[_0xf4b1('0x2a')]['userId'];return getAgent(_0x36cf63)[_0xf4b1('0x1d')](function(_0x350d07){logger['info'](_0xf4b1('0x2f'),_0x350d07[_0xf4b1('0x18')]);emit(util[_0xf4b1('0x30')]('user:%s',_0x350d07[_0xf4b1('0x18')]),_0xf4b1('0x46'));return _0x4db29b['status'](0xc8)['json']({'error':![],'message':_0xf4b1('0x47')});})['catch'](handleError(_0x4db29b));};exports['transfer']=function(_0x2de44d,_0x844121){logger['info']('transfer\x20fired:',_0x2de44d[_0xf4b1('0x2a')]);var _0x17eb9e=transferValidation['validate'](_0x2de44d[_0xf4b1('0x2a')]);if(_0x17eb9e[_0xf4b1('0x25')]>0x0){return _0x844121[_0xf4b1('0x19')](0x190)[_0xf4b1('0x36')](_0x17eb9e);}var _0xe82df1=_0x2de44d[_0xf4b1('0x2a')][_0xf4b1('0x2c')];var _0x55341b=_0x2de44d[_0xf4b1('0x2a')][_0xf4b1('0x24')];var _0xca5281=_0x2de44d[_0xf4b1('0x2a')][_0xf4b1('0x48')];return getAgent(_0xe82df1)[_0xf4b1('0x1d')](function(_0xe9ac5){logger['info']('entityFound:',_0xe9ac5[_0xf4b1('0x18')]);emit(util[_0xf4b1('0x30')]('user:%s',_0xe9ac5[_0xf4b1('0x18')]),_0xf4b1('0x49'),{'sessionId':_0x55341b,'transferNumber':_0xca5281});return _0x844121[_0xf4b1('0x19')](0xc8)[_0xf4b1('0x36')]({'error':![],'message':'transfer\x20executed!'});})[_0xf4b1('0x1f')](handleError(_0x844121));};
\ No newline at end of file
+var _0x49e9=['transferNumber\x20is\x20required','info','emit','log','handleError:','stack','name','status','send','NotFound','then','code','error','message','result','catch','User','agent','VoiceChannels','all','filter','rows','\x20not\x20found!','originate','originate\x20fired:','body','length','userId','callerId','callbackUrl','webbar:originate','json','originate\x20executed!','hangup','hangup\x20fired:','user:%s','answer','sessionId','entityFound:','webbar:answer','hold','hold\x20fired:','format','webbar:hold','hold\x20executed!','calls','UserId','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','path','lodash','../../config/environment','util','bluebird','http','webbarapi','ioredis','redis','localhost','socket.io-emitter','validate','number','userId\x20is\x20required','callNumber\x20is\x20required','string','sessionId\x20is\x20required'];(function(_0x141a0d,_0x148eaa){var _0x3ccf61=function(_0x25e6e7){while(--_0x25e6e7){_0x141a0d['push'](_0x141a0d['shift']());}};_0x3ccf61(++_0x148eaa);}(_0x49e9,0x10f));var _0x949e=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x49e9[_0x20a584];return _0x4b41a8;};'use strict';var path=require(_0x949e('0x0'));var fs=require('fs');var _=require(_0x949e('0x1'));var db=require('../../mysqldb')['db'];var config=require(_0x949e('0x2'));var util=require(_0x949e('0x3'));var BPromise=require(_0x949e('0x4'));var jayson=require('jayson/promise');var amiClient=jayson['client'][_0x949e('0x5')]({'port':0x232a});var logger=require('../../config/logger')(_0x949e('0x6'));var Redis=require(_0x949e('0x7'));config[_0x949e('0x8')]=_['defaults'](config[_0x949e('0x8')],{'host':_0x949e('0x9'),'port':0x18eb});var io=require(_0x949e('0xa'))(new Redis(config[_0x949e('0x8')]));var Schema=require(_0x949e('0xb'));var originateValidation=new Schema({'userId':{'type':_0x949e('0xc'),'required':[!![],_0x949e('0xd')]},'callNumber':{'type':'string','required':[!![],_0x949e('0xe')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0x949e('0xf')}});var hangupValidation=new Schema({'userId':{'type':_0x949e('0xc'),'required':[!![],_0x949e('0xd')]},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':_0x949e('0xc'),'required':[!![],_0x949e('0xd')]},'sessionId':{'type':_0x949e('0xf'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x949e('0xc'),'required':[!![],_0x949e('0xd')]},'sessionId':{'type':_0x949e('0xf'),'required':[!![],_0x949e('0x10')]},'transferNumber':{'type':_0x949e('0xf'),'required':[!![],_0x949e('0x11')]}});var holdValidation=new Schema({'userId':{'type':_0x949e('0xc'),'required':[!![],_0x949e('0xd')]},'sessionId':{'type':_0x949e('0xf'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x949e('0xc'),'required':[!![],_0x949e('0xd')]},'sessionId':{'type':_0x949e('0xf'),'required':![]}});var callsValidation=new Schema({'userId':{'type':'number','required':[!![],_0x949e('0xd')]}});var conferenceValidation=new Schema({'userId':{'type':_0x949e('0xc'),'required':[!![],_0x949e('0xd')]}});function emit(_0xf1f41a,_0x5f5962,_0x420733){logger[_0x949e('0x12')](_0xf1f41a,_0x5f5962,JSON['stringify'](_0x420733));io['to'](_0xf1f41a)[_0x949e('0x13')](_0x5f5962,_0x420733);}function handleError(_0x175d62){return function(_0x43498d){console[_0x949e('0x14')](_0x949e('0x15'),_0x43498d,_0x43498d instanceof RangeError);logger['error'](_0x43498d[_0x949e('0x16')]);if(_0x43498d instanceof RangeError){if(_0x43498d[_0x949e('0x17')]){delete _0x43498d[_0x949e('0x17')];}_0x175d62[_0x949e('0x18')](0x194)[_0x949e('0x19')](_0x43498d);}else{if(_0x43498d[_0x949e('0x17')]){delete _0x43498d[_0x949e('0x17')];}_0x175d62[_0x949e('0x18')](0x1f4)[_0x949e('0x19')](_0x43498d);}};}function checkError(){return function(_0x39ad61){if(!_0x39ad61){throw new RangeError(_0x949e('0x1a'));}return _0x39ad61;};}function respondWithRpcPromise(_0x260c1c,_0x1e3a79){return new BPromise(function(_0x1927ab,_0x199d53){var _0x2e81f2=amiClient;return _0x2e81f2['request'](_0x260c1c,_0x1e3a79)[_0x949e('0x1b')](function(_0x44ffb4){if(_0x44ffb4['error']){if(_0x44ffb4['error'][_0x949e('0x1c')]===0x1f4){return _0x199d53(_0x44ffb4[_0x949e('0x1d')][_0x949e('0x1e')]);}return _0x1927ab(_0x44ffb4[_0x949e('0x1d')][_0x949e('0x1e')]);}else{_0x1927ab(_0x44ffb4[_0x949e('0x1f')]);}})[_0x949e('0x20')](function(_0x255b11){_0x199d53(_0x255b11);});});}function getAgent(_0x3468ac){return db[_0x949e('0x21')]['findOne']({'where':{'id':_0x3468ac,'role':_0x949e('0x22')}})[_0x949e('0x1b')](checkError());}function getAgentCheckSession(_0x59b3a1,_0x39308f){return new BPromise(function(_0x20061d,_0x55d56a){var _0x446401=respondWithRpcPromise(_0x949e('0x23'));var _0x5b9f28=getAgent(_0x59b3a1);Promise[_0x949e('0x24')]([_0x446401,_0x5b9f28])['then'](function(_0x5e6e34){var _0x4e169d=_0x5e6e34[0x0];var _0x54ad5d=_0x5e6e34[0x1];var _0x52f5bd=_[_0x949e('0x25')](_0x4e169d[_0x949e('0x26')],function(_0x3051ec){return _0x3051ec['UserId']==_0x54ad5d['id']&&_0x3051ec['sessionId']==_0x39308f;});if(_0x52f5bd['length']==0x1){_0x20061d(_0x54ad5d);}else{_0x55d56a(new RangeError('sessionId\x20'+_0x39308f+_0x949e('0x27')));}});});}exports[_0x949e('0x28')]=function(_0xcfd5a6,_0x1fe31b){logger['info'](_0x949e('0x29'),_0xcfd5a6[_0x949e('0x2a')]);var _0xad8500=originateValidation['validate'](_0xcfd5a6[_0x949e('0x2a')]);if(_0xad8500[_0x949e('0x2b')]>0x0){return _0x1fe31b[_0x949e('0x18')](0x190)['json'](_0xad8500);}var _0x5b7d77=_0xcfd5a6[_0x949e('0x2a')][_0x949e('0x2c')];var _0x25d65a=_0xcfd5a6[_0x949e('0x2a')]['callNumber'];var _0x15a63f=_0xcfd5a6[_0x949e('0x2a')][_0x949e('0x2d')];var _0x41b8d7=_0xcfd5a6[_0x949e('0x2a')][_0x949e('0x2e')];return getAgent(_0x5b7d77)[_0x949e('0x1b')](function(_0xe6c996){logger['info']('entityFound:',_0xe6c996[_0x949e('0x17')]);emit(util['format']('user:%s',_0xe6c996[_0x949e('0x17')]),_0x949e('0x2f'),{'callNumber':_0x25d65a,'callerId':_0x15a63f,'callbackUrl':_0x41b8d7});return _0x1fe31b[_0x949e('0x18')](0xc8)[_0x949e('0x30')]({'error':![],'message':_0x949e('0x31')});})[_0x949e('0x20')](handleError(_0x1fe31b));};exports[_0x949e('0x32')]=function(_0x49bf64,_0x21bd17){logger[_0x949e('0x12')](_0x949e('0x33'),_0x49bf64[_0x949e('0x2a')]);var _0x39c90b=hangupValidation[_0x949e('0xb')](_0x49bf64[_0x949e('0x2a')]);if(_0x39c90b[_0x949e('0x2b')]>0x0){return _0x21bd17[_0x949e('0x18')](0x190)['json'](_0x39c90b);}var _0x34bcd5=_0x49bf64['body'][_0x949e('0x2c')];var _0x2b112a=_0x49bf64['body']['sessionId'];return getAgent(_0x34bcd5)['then'](function(_0x1e848c){logger[_0x949e('0x12')]('entityFound:',_0x1e848c['name']);emit(util['format'](_0x949e('0x34'),_0x1e848c[_0x949e('0x17')]),'webbar:hangup',{'sessionId':_0x2b112a});return _0x21bd17[_0x949e('0x18')](0xc8)[_0x949e('0x30')]({'error':![],'message':'hangup\x20executed!'});})[_0x949e('0x20')](handleError(_0x21bd17));};exports[_0x949e('0x35')]=function(_0x3db452,_0xb384ed){logger['info']('answer\x20fired:',_0x3db452[_0x949e('0x2a')]);var _0x590aa7=answerValidation[_0x949e('0xb')](_0x3db452[_0x949e('0x2a')]);if(_0x590aa7[_0x949e('0x2b')]>0x0){return _0xb384ed[_0x949e('0x18')](0x190)[_0x949e('0x30')](_0x590aa7);}var _0x572f20=_0x3db452['body'][_0x949e('0x2c')];var _0x5e970b=_0x3db452[_0x949e('0x2a')][_0x949e('0x36')];return getAgent(_0x572f20)[_0x949e('0x1b')](function(_0x2fdfe6){logger[_0x949e('0x12')](_0x949e('0x37'),_0x2fdfe6['name']);emit(util['format'](_0x949e('0x34'),_0x2fdfe6[_0x949e('0x17')]),_0x949e('0x38'),{'sessionId':_0x5e970b});return _0xb384ed[_0x949e('0x18')](0xc8)[_0x949e('0x30')]({'error':![],'message':'answer\x20executed!'});})[_0x949e('0x20')](handleError(_0xb384ed));};exports[_0x949e('0x39')]=function(_0x5b3086,_0x216789){logger[_0x949e('0x12')](_0x949e('0x3a'),_0x5b3086[_0x949e('0x2a')]);var _0x1f1e69=holdValidation[_0x949e('0xb')](_0x5b3086[_0x949e('0x2a')]);if(_0x1f1e69[_0x949e('0x2b')]>0x0){return _0x216789[_0x949e('0x18')](0x190)['json'](_0x1f1e69);}var _0x1599ea=_0x5b3086['body'][_0x949e('0x2c')];var _0x24c7a6=_0x5b3086['body'][_0x949e('0x36')];return getAgent(_0x1599ea)[_0x949e('0x1b')](function(_0x121355){logger[_0x949e('0x12')](_0x949e('0x37'),_0x121355[_0x949e('0x17')]);emit(util[_0x949e('0x3b')](_0x949e('0x34'),_0x121355['name']),_0x949e('0x3c'),{'sessionId':_0x24c7a6});return _0x216789[_0x949e('0x18')](0xc8)[_0x949e('0x30')]({'error':![],'message':_0x949e('0x3d')});})[_0x949e('0x20')](handleError(_0x216789));};exports['unhold']=function(_0x5f23b2,_0x46a4fe){logger[_0x949e('0x12')]('unhold\x20fired:',_0x5f23b2[_0x949e('0x2a')]);var _0xdeefe1=unholdValidation[_0x949e('0xb')](_0x5f23b2[_0x949e('0x2a')]);if(_0xdeefe1['length']>0x0){return _0x46a4fe['status'](0x190)[_0x949e('0x30')](_0xdeefe1);}var _0x46d687=_0x5f23b2[_0x949e('0x2a')][_0x949e('0x2c')];var _0x16ec1b=_0x5f23b2[_0x949e('0x2a')][_0x949e('0x36')];return getAgent(_0x46d687)[_0x949e('0x1b')](function(_0x21477f){logger['info'](_0x949e('0x37'),_0x21477f['name']);emit(util[_0x949e('0x3b')]('user:%s',_0x21477f[_0x949e('0x17')]),'webbar:unhold',{'sessionId':_0x16ec1b});return _0x46a4fe[_0x949e('0x18')](0xc8)[_0x949e('0x30')]({'error':![],'message':'unhold\x20executed!'});})[_0x949e('0x20')](handleError(_0x46a4fe));};exports[_0x949e('0x3e')]=function(_0x2eb9f9,_0x2a5e99){logger[_0x949e('0x12')]('calls\x20fired:',_0x2a5e99['body']);var _0x287a45=callsValidation[_0x949e('0xb')](_0x2eb9f9['body']);if(_0x287a45[_0x949e('0x2b')]>0x0){return _0x2a5e99[_0x949e('0x18')](0x190)['json'](_0x287a45);}var _0x195371=_0x2eb9f9[_0x949e('0x2a')][_0x949e('0x2c')];var _0x2d7397=respondWithRpcPromise(_0x949e('0x23'));var _0x41798a=getAgent(_0x195371);return Promise[_0x949e('0x24')]([_0x2d7397,_0x41798a])[_0x949e('0x1b')](function(_0x394b92){var _0x7dd940=_0x394b92[0x0];var _0x8cc24a=_0x394b92[0x1];var _0x1561b2=_[_0x949e('0x25')](_0x7dd940[_0x949e('0x26')],function(_0x1284ec){return _0x1284ec[_0x949e('0x3f')]==_0x8cc24a['id'];});return _0x2a5e99[_0x949e('0x18')](0xc8)[_0x949e('0x30')]({'count':_0x1561b2['length'],'rows':_0x1561b2});})[_0x949e('0x20')](handleError(_0x2a5e99));};exports['conference']=function(_0x5520cd,_0x1bc2bb){logger[_0x949e('0x12')](_0x949e('0x40'),_0x5520cd['body']);var _0xa07383=conferenceValidation[_0x949e('0xb')](_0x5520cd[_0x949e('0x2a')]);if(_0xa07383['length']>0x0){return _0x1bc2bb[_0x949e('0x18')](0x190)[_0x949e('0x30')](_0xa07383);}var _0x23a1c5=_0x5520cd['body'][_0x949e('0x2c')];return getAgent(_0x23a1c5)[_0x949e('0x1b')](function(_0x4073e9){logger[_0x949e('0x12')](_0x949e('0x37'),_0x4073e9[_0x949e('0x17')]);emit(util['format'](_0x949e('0x34'),_0x4073e9[_0x949e('0x17')]),_0x949e('0x41'));return _0x1bc2bb['status'](0xc8)['json']({'error':![],'message':_0x949e('0x42')});})['catch'](handleError(_0x1bc2bb));};exports[_0x949e('0x43')]=function(_0xcc3e22,_0x226576){logger[_0x949e('0x12')](_0x949e('0x44'),_0xcc3e22[_0x949e('0x2a')]);var _0x5ebbe3=transferValidation[_0x949e('0xb')](_0xcc3e22[_0x949e('0x2a')]);if(_0x5ebbe3[_0x949e('0x2b')]>0x0){return _0x226576[_0x949e('0x18')](0x190)[_0x949e('0x30')](_0x5ebbe3);}var _0x470e2a=_0xcc3e22['body'][_0x949e('0x2c')];var _0x1a1ebd=_0xcc3e22['body']['sessionId'];var _0x6ecca9=_0xcc3e22['body'][_0x949e('0x45')];return getAgent(_0x470e2a)['then'](function(_0x5c4c4c){logger[_0x949e('0x12')](_0x949e('0x37'),_0x5c4c4c[_0x949e('0x17')]);emit(util[_0x949e('0x3b')](_0x949e('0x34'),_0x5c4c4c[_0x949e('0x17')]),_0x949e('0x46'),{'sessionId':_0x1a1ebd,'transferNumber':_0x6ecca9});return _0x226576[_0x949e('0x18')](0xc8)[_0x949e('0x30')]({'error':![],'message':_0x949e('0x47')});})[_0x949e('0x20')](handleError(_0x226576));};
\ No newline at end of file
index 1b5ea0f..3320b89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x524e=['index','/describe','describe','/:id','isAuthenticated','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/users','/:id/applications','getApplications','post','addDisposition','addAnswer','addApplications','/:id/notify','notify','/:id/send','put','update','delete','destroy','removeAnswers','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappAccount.controller','get'];(function(_0x5d9999,_0x3f0321){var _0x1d15ed=function(_0x41b573){while(--_0x41b573){_0x5d9999['push'](_0x5d9999['shift']());}};_0x1d15ed(++_0x3f0321);}(_0x524e,0x15e));var _0xe524=function(_0xb5752,_0x2d91d2){_0xb5752=_0xb5752-0x0;var _0x2dcd24=_0x524e[_0xb5752];return _0x2dcd24;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe524('0x0'));var timeout=require(_0xe524('0x1'));var express=require(_0xe524('0x2'));var router=express[_0xe524('0x3')]();var fs_extra=require(_0xe524('0x4'));var auth=require(_0xe524('0x5'));var interaction=require(_0xe524('0x6'));var config=require(_0xe524('0x7'));var controller=require(_0xe524('0x8'));router[_0xe524('0x9')]('/',auth['isAuthenticated'](),controller[_0xe524('0xa')]);router[_0xe524('0x9')](_0xe524('0xb'),auth['isAuthenticated'](),controller[_0xe524('0xc')]);router[_0xe524('0x9')](_0xe524('0xd'),auth[_0xe524('0xe')](),controller[_0xe524('0xf')]);router[_0xe524('0x9')](_0xe524('0x10'),auth[_0xe524('0xe')](),controller[_0xe524('0x11')]);router[_0xe524('0x9')](_0xe524('0x12'),auth[_0xe524('0xe')](),controller[_0xe524('0x13')]);router[_0xe524('0x9')](_0xe524('0x14'),auth[_0xe524('0xe')](),controller['getAgents']);router['get'](_0xe524('0x15'),auth[_0xe524('0xe')](),controller[_0xe524('0x16')]);router[_0xe524('0x17')]('/',auth[_0xe524('0xe')](),controller['create']);router[_0xe524('0x17')]('/:id/dispositions',auth[_0xe524('0xe')](),controller[_0xe524('0x18')]);router['post'](_0xe524('0x12'),auth['isAuthenticated'](),controller[_0xe524('0x19')]);router['post'](_0xe524('0x14'),auth['isAuthenticated'](),controller['addAgents']);router['post'](_0xe524('0x15'),auth['isAuthenticated'](),controller[_0xe524('0x1a')]);router[_0xe524('0x17')](_0xe524('0x1b'),controller[_0xe524('0x1c')]);router['post'](_0xe524('0x1d'),auth[_0xe524('0xe')](),controller['send']);router[_0xe524('0x1e')](_0xe524('0xd'),auth[_0xe524('0xe')](),controller[_0xe524('0x1f')]);router[_0xe524('0x20')](_0xe524('0xd'),auth[_0xe524('0xe')](),controller[_0xe524('0x21')]);router[_0xe524('0x20')]('/:id/dispositions',auth[_0xe524('0xe')](),controller['removeDispositions']);router['delete'](_0xe524('0x12'),auth[_0xe524('0xe')](),controller[_0xe524('0x22')]);router[_0xe524('0x20')]('/:id/users',auth[_0xe524('0xe')](),controller['removeAgents']);module[_0xe524('0x23')]=router;
\ No newline at end of file
+var _0xef0f=['multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/users','/:id/applications','getApplications','post','create','addAnswer','addAgents','addApplications','/:id/notify','notify','/:id/send','send','put','update','delete','removeAnswers','exports'];(function(_0x9aada2,_0xd2d349){var _0x196dff=function(_0x5ad061){while(--_0x5ad061){_0x9aada2['push'](_0x9aada2['shift']());}};_0x196dff(++_0xd2d349);}(_0xef0f,0x168));var _0xfef0=function(_0x268a38,_0x3092f6){_0x268a38=_0x268a38-0x0;var _0x5118f9=_0xef0f[_0x268a38];return _0x5118f9;};'use strict';var multer=require(_0xfef0('0x0'));var util=require('util');var path=require(_0xfef0('0x1'));var timeout=require(_0xfef0('0x2'));var express=require(_0xfef0('0x3'));var router=express['Router']();var fs_extra=require(_0xfef0('0x4'));var auth=require(_0xfef0('0x5'));var interaction=require(_0xfef0('0x6'));var config=require('../../config/environment');var controller=require(_0xfef0('0x7'));router[_0xfef0('0x8')]('/',auth[_0xfef0('0x9')](),controller[_0xfef0('0xa')]);router[_0xfef0('0x8')](_0xfef0('0xb'),auth['isAuthenticated'](),controller[_0xfef0('0xc')]);router['get'](_0xfef0('0xd'),auth[_0xfef0('0x9')](),controller[_0xfef0('0xe')]);router[_0xfef0('0x8')](_0xfef0('0xf'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x10')]);router[_0xfef0('0x8')](_0xfef0('0x11'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x12')]);router[_0xfef0('0x8')](_0xfef0('0x13'),auth[_0xfef0('0x9')](),controller['getAgents']);router[_0xfef0('0x8')](_0xfef0('0x14'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x15')]);router[_0xfef0('0x16')]('/',auth[_0xfef0('0x9')](),controller[_0xfef0('0x17')]);router['post'](_0xfef0('0xf'),auth['isAuthenticated'](),controller['addDisposition']);router['post'](_0xfef0('0x11'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x18')]);router[_0xfef0('0x16')](_0xfef0('0x13'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x19')]);router[_0xfef0('0x16')]('/:id/applications',auth[_0xfef0('0x9')](),controller[_0xfef0('0x1a')]);router[_0xfef0('0x16')](_0xfef0('0x1b'),controller[_0xfef0('0x1c')]);router['post'](_0xfef0('0x1d'),auth['isAuthenticated'](),controller[_0xfef0('0x1e')]);router[_0xfef0('0x1f')](_0xfef0('0xd'),auth['isAuthenticated'](),controller[_0xfef0('0x20')]);router['delete'](_0xfef0('0xd'),auth[_0xfef0('0x9')](),controller['destroy']);router['delete']('/:id/dispositions',auth[_0xfef0('0x9')](),controller['removeDispositions']);router[_0xfef0('0x21')](_0xfef0('0x11'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x22')]);router[_0xfef0('0x21')](_0xfef0('0x13'),auth['isAuthenticated'](),controller['removeAgents']);module[_0xfef0('0x23')]=router;
\ No newline at end of file
index 933f32b..43c5f5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb816=['exports','STRING','name','ENUM','twilio','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','randomstring'];(function(_0x30dda9,_0x5bd716){var _0x523f33=function(_0x3d53b3){while(--_0x3d53b3){_0x30dda9['push'](_0x30dda9['shift']());}};_0x523f33(++_0x5bd716);}(_0xb816,0x86));var _0x6b81=function(_0x48634d,_0x581961){_0x48634d=_0x48634d-0x0;var _0x14ed18=_0xb816[_0x48634d];return _0x14ed18;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x6b81('0x0'));module[_0x6b81('0x1')]={'name':{'type':Sequelize[_0x6b81('0x2')],'unique':_0x6b81('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0x6b81('0x2')],'allowNull':![]},'remote':{'type':Sequelize[_0x6b81('0x2')],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize[_0x6b81('0x2')]},'type':{'type':Sequelize[_0x6b81('0x4')](_0x6b81('0x5'))},'accountSid':{'type':Sequelize[_0x6b81('0x2')]},'authToken':{'type':Sequelize[_0x6b81('0x2')]},'notificationTemplate':{'type':Sequelize[_0x6b81('0x6')],'defaultValue':function(){return _0x6b81('0x7');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x6b81('0x8')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x6b81('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x6b81('0x8')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x6b81('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x6b81('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':_0x6b81('0xa')},'mandatoryDisposition':{'type':Sequelize[_0x6b81('0x8')],'defaultValue':![],'comment':_0x6b81('0xb'),'set':function(_0x1735ce){if(!_0x1735ce){this[_0x6b81('0xc')](_0x6b81('0xd'),null);}this['setDataValue'](_0x6b81('0xe'),_0x1735ce);}},'description':{'type':Sequelize[_0x6b81('0x2')]}};
\ No newline at end of file
+var _0xaeac=['ENUM','twilio','TEXT','BOOLEAN','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','setDataValue','mandatoryDisposition','sequelize','randomstring','exports','STRING','generate'];(function(_0x49d973,_0x28a440){var _0x134f4a=function(_0x53ca6a){while(--_0x53ca6a){_0x49d973['push'](_0x49d973['shift']());}};_0x134f4a(++_0x28a440);}(_0xaeac,0x6b));var _0xcaea=function(_0x145e88,_0x37f205){_0x145e88=_0x145e88-0x0;var _0x1af7e4=_0xaeac[_0x145e88];return _0x1af7e4;};'use strict';var Sequelize=require(_0xcaea('0x0'));var rs=require(_0xcaea('0x1'));module[_0xcaea('0x2')]={'name':{'type':Sequelize[_0xcaea('0x3')],'unique':'name','allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0xcaea('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0xcaea('0x3')],'defaultValue':function(){return rs[_0xcaea('0x4')]();}},'phone':{'type':Sequelize[_0xcaea('0x3')]},'type':{'type':Sequelize[_0xcaea('0x5')](_0xcaea('0x6'))},'accountSid':{'type':Sequelize[_0xcaea('0x3')]},'authToken':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize[_0xcaea('0x7')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0xcaea('0x8')],'defaultValue':![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xcaea('0x8')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xcaea('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xcaea('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xcaea('0x8')],'defaultValue':![],'comment':_0xcaea('0xa'),'set':function(_0x267573){if(!_0x267573){this['setDataValue'](_0xcaea('0xb'),null);}this[_0xcaea('0xc')](_0xcaea('0xd'),_0x267573);}},'description':{'type':Sequelize[_0xcaea('0x3')]}};
\ No newline at end of file
index 7904d76..10d85ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b0e=['whatsapp:','Body','messageId','MessageSid','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','ListId','Contacts','list','WhatsappInteraction','spread','interaction','autoclose','push','unmanaged','*,*,*,*','created','WhatsappMessage','ContactId','AttachmentId','UserId','unshift','Start','startRouting','WhatsappAccount,\x20%s,\x20%s,\x20%s','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','twilio','Content-Type','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','List','DESC','Messages','dataValues','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','defaults','redis','socket.io-emitter','./whatsappAccount.socket','register','jayson/promise','client','http','request','then','info','WhatsappAccount,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','result','catch','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','destroy','get','WhatsappAccounts','UserProfileResource','end','stack','name','send','Pause','mandatoryDispositionPause','rawAttributes','fieldName','type','key','model','map','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','WhatsappAccount','includeAll','include','findAll','rows','show','params','options','find','create','user','role','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','WhatsappAccountId','Disposition','getDispositions','findOne','order','removeDispositions','ids','CannedAnswer','getAnswers','removeAnswers','addAgents','omit','emit','removeAgents','userWhatsappAccount:remove','getAgents','User','addApplications','sequelize','transaction','WhatsappApplication','findAndCountAll','priority','getApplications','Applications','account','applications','orderBy','asc','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','createdAt','updatedAt','difference','mobile','from','From','replace'];(function(_0x5b5264,_0x2c45fa){var _0x111db4=function(_0x3392f7){while(--_0x3392f7){_0x5b5264['push'](_0x5b5264['shift']());}};_0x111db4(++_0x2c45fa);}(_0x8b0e,0x192));var _0xe8b0=function(_0x4b630,_0x151f86){_0x4b630=_0x4b630-0x0;var _0x24f855=_0x8b0e[_0x4b630];return _0x24f855;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe8b0('0x0'));var zipdir=require(_0xe8b0('0x1'));var jsonpatch=require(_0xe8b0('0x2'));var rp=require('request-promise');var moment=require(_0xe8b0('0x3'));var BPromise=require(_0xe8b0('0x4'));var Mustache=require(_0xe8b0('0x5'));var util=require('util');var path=require(_0xe8b0('0x6'));var sox=require(_0xe8b0('0x7'));var csv=require(_0xe8b0('0x8'));var ejs=require(_0xe8b0('0x9'));var fs=require('fs');var fs_extra=require(_0xe8b0('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe8b0('0xb'));var deskjs=require(_0xe8b0('0xc'));var toCsv=require('to-csv');var querystring=require(_0xe8b0('0xd'));var Papa=require(_0xe8b0('0xe'));var Redis=require(_0xe8b0('0xf'));var authService=require(_0xe8b0('0x10'));var qs=require(_0xe8b0('0x11'));var as=require(_0xe8b0('0x12'));var hardwareService=require(_0xe8b0('0x13'));var logger=require(_0xe8b0('0x14'))(_0xe8b0('0x15'));var utils=require('../../config/utils');var config=require(_0xe8b0('0x16'));var licenseUtil=require(_0xe8b0('0x17'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xe8b0('0x18')](config[_0xe8b0('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xe8b0('0x1a'))(new Redis(config[_0xe8b0('0x19')]));require(_0xe8b0('0x1b'))[_0xe8b0('0x1c')](socket);var jayson=require(_0xe8b0('0x1d'));var client=jayson[_0xe8b0('0x1e')][_0xe8b0('0x1f')]({'port':0x232c});function respondWithRpcPromise(_0x2bd406,_0x4bc197,_0x2a8275,_0x22b9ba){return new BPromise(function(_0xf5c9bf,_0x1c9678){var _0x436ac9=_0x22b9ba||client;return _0x436ac9[_0xe8b0('0x20')](_0x2bd406,_0x2a8275)[_0xe8b0('0x21')](function(_0x4e0127){logger[_0xe8b0('0x22')](_0xe8b0('0x23'),_0x4bc197,'request\x20sent');logger[_0xe8b0('0x24')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x4bc197,_0xe8b0('0x25'),JSON[_0xe8b0('0x26')](_0x4e0127));if(_0x4e0127[_0xe8b0('0x27')]){if(_0x4e0127[_0xe8b0('0x27')]['code']===0x1f4){logger[_0xe8b0('0x27')](_0xe8b0('0x23'),_0x4bc197,_0x4e0127[_0xe8b0('0x27')][_0xe8b0('0x28')]);return _0x1c9678(_0x4e0127['error'][_0xe8b0('0x28')]);}logger[_0xe8b0('0x27')](_0xe8b0('0x23'),_0x4bc197,_0x4e0127[_0xe8b0('0x27')]['message']);return _0xf5c9bf(_0x4e0127[_0xe8b0('0x27')]['message']);}else{logger['info'](_0xe8b0('0x23'),_0x4bc197,_0xe8b0('0x25'));_0xf5c9bf(_0x4e0127[_0xe8b0('0x29')]['message']);}})[_0xe8b0('0x2a')](function(_0x1370f7){logger[_0xe8b0('0x27')](_0xe8b0('0x23'),_0x4bc197,_0x1370f7);_0x1c9678(_0x1370f7);});});}function respondWithStatusCode(_0x5c601a,_0x1ca9b8){_0x1ca9b8=_0x1ca9b8||0xcc;return function(_0xe243){if(_0xe243){return _0x5c601a[_0xe8b0('0x2b')](_0x1ca9b8);}return _0x5c601a[_0xe8b0('0x2c')](_0x1ca9b8)['end']();};}function respondWithResult(_0x44c342,_0x3ddd02){_0x3ddd02=_0x3ddd02||0xc8;return function(_0x1f80b2){if(_0x1f80b2){return _0x44c342[_0xe8b0('0x2c')](_0x3ddd02)[_0xe8b0('0x2d')](_0x1f80b2);}};}function respondWithFilteredResult(_0x4bb124,_0x282bce){return function(_0x272d8c){if(_0x272d8c){var _0x55eb5c=typeof _0x282bce['offset']===_0xe8b0('0x2e')&&typeof _0x282bce[_0xe8b0('0x2f')]===_0xe8b0('0x2e');var _0x4eda6a=_0x272d8c[_0xe8b0('0x30')];var _0x4017f2=_0x55eb5c?0x0:_0x282bce['offset'];var _0x298812=_0x55eb5c?_0x272d8c['count']:_0x282bce[_0xe8b0('0x31')]+_0x282bce[_0xe8b0('0x2f')];var _0xf44e16;if(_0x298812>=_0x4eda6a){_0x298812=_0x4eda6a;_0xf44e16=0xc8;}else{_0xf44e16=0xce;}_0x4bb124['status'](_0xf44e16);return _0x4bb124[_0xe8b0('0x32')](_0xe8b0('0x33'),_0x4017f2+'-'+_0x298812+'/'+_0x4eda6a)[_0xe8b0('0x2d')](_0x272d8c);}return null;};}function patchUpdates(_0x1c49b5){return function(_0x2365ea){try{jsonpatch[_0xe8b0('0x34')](_0x2365ea,_0x1c49b5,!![]);}catch(_0x4c7ad5){return BPromise[_0xe8b0('0x35')](_0x4c7ad5);}return _0x2365ea[_0xe8b0('0x36')]();};}function saveUpdates(_0x147f2e,_0x6492fa){return function(_0x15841d){if(_0x15841d){return _0x15841d[_0xe8b0('0x37')](_0x147f2e)[_0xe8b0('0x21')](function(_0x1879de){return _0x1879de;});}return null;};}function removeEntity(_0x1769fb,_0x1aa02c){return function(_0x565804){if(_0x565804){return _0x565804[_0xe8b0('0x38')]()[_0xe8b0('0x21')](function(){var _0x203f13=_0x565804[_0xe8b0('0x39')]({'plain':!![]});var _0x50aaa9=_0xe8b0('0x3a');return db[_0xe8b0('0x3b')][_0xe8b0('0x38')]({'where':{'type':_0x50aaa9,'resourceId':_0x203f13['id']}})[_0xe8b0('0x21')](function(){return _0x565804;});})[_0xe8b0('0x21')](function(){_0x1769fb[_0xe8b0('0x2c')](0xcc)[_0xe8b0('0x3c')]();});}};}function handleEntityNotFound(_0x2baf89,_0x31e7fd){return function(_0x14e087){if(!_0x14e087){_0x2baf89[_0xe8b0('0x2b')](0x194);}return _0x14e087;};}function handleError(_0x39f82b,_0x466c7d){_0x466c7d=_0x466c7d||0x1f4;return function(_0x49cb01){logger['error'](_0x49cb01[_0xe8b0('0x3d')]);if(_0x49cb01[_0xe8b0('0x3e')]){delete _0x49cb01[_0xe8b0('0x3e')];}_0x39f82b[_0xe8b0('0x2c')](_0x466c7d)[_0xe8b0('0x3f')](_0x49cb01);};}exports['index']=function(_0x46eaa3,_0x2d063b){var _0x423069={'include':[{'model':db[_0xe8b0('0x40')],'as':_0xe8b0('0x41')}]},_0x1093bf={},_0x148f6f={'count':0x0,'rows':[]};var _0x1cc3b7=_['map'](db['WhatsappAccount'][_0xe8b0('0x42')],function(_0x3fad9a){return{'name':_0x3fad9a[_0xe8b0('0x43')],'type':_0x3fad9a[_0xe8b0('0x44')][_0xe8b0('0x45')]};});_0x1093bf[_0xe8b0('0x46')]=_[_0xe8b0('0x47')](_0x1cc3b7,_0xe8b0('0x3e'));_0x1093bf['query']=_[_0xe8b0('0x48')](_0x46eaa3[_0xe8b0('0x49')]);_0x1093bf[_0xe8b0('0x4a')]=_[_0xe8b0('0x4b')](_0x1093bf[_0xe8b0('0x46')],_0x1093bf[_0xe8b0('0x49')]);_0x423069[_0xe8b0('0x4c')]=_['intersection'](_0x1093bf[_0xe8b0('0x46')],qs[_0xe8b0('0x4d')](_0x46eaa3[_0xe8b0('0x49')][_0xe8b0('0x4d')]));_0x423069[_0xe8b0('0x4c')]=_0x423069['attributes'][_0xe8b0('0x4e')]?_0x423069[_0xe8b0('0x4c')]:_0x1093bf[_0xe8b0('0x46')];if(!_0x46eaa3['query'][_0xe8b0('0x4f')](_0xe8b0('0x50'))){_0x423069['limit']=qs[_0xe8b0('0x2f')](_0x46eaa3[_0xe8b0('0x49')][_0xe8b0('0x2f')]);_0x423069[_0xe8b0('0x31')]=qs['offset'](_0x46eaa3['query'][_0xe8b0('0x31')]);}_0x423069['order']=qs[_0xe8b0('0x51')](_0x46eaa3[_0xe8b0('0x49')][_0xe8b0('0x51')]);_0x423069[_0xe8b0('0x52')]=qs[_0xe8b0('0x4a')](_[_0xe8b0('0x53')](_0x46eaa3[_0xe8b0('0x49')],_0x1093bf[_0xe8b0('0x4a')]),_0x1cc3b7);if(_0x46eaa3[_0xe8b0('0x49')][_0xe8b0('0x54')]){_0x423069['where']=_[_0xe8b0('0x55')](_0x423069[_0xe8b0('0x52')],{'$or':_[_0xe8b0('0x47')](_0x1cc3b7,function(_0x583c35){if(_0x583c35['type']!=='VIRTUAL'){var _0x18ed48={};_0x18ed48[_0x583c35[_0xe8b0('0x3e')]]={'$like':'%'+_0x46eaa3[_0xe8b0('0x49')][_0xe8b0('0x54')]+'%'};return _0x18ed48;}})});}_0x423069=_[_0xe8b0('0x55')]({},_0x423069,_0x46eaa3['options']);var _0x80797={'where':_0x423069[_0xe8b0('0x52')]};return db[_0xe8b0('0x56')][_0xe8b0('0x30')](_0x80797)[_0xe8b0('0x21')](function(_0x2ae31e){_0x148f6f[_0xe8b0('0x30')]=_0x2ae31e;if(_0x46eaa3[_0xe8b0('0x49')][_0xe8b0('0x57')]){_0x423069[_0xe8b0('0x58')]=[{'all':!![]}];}return db[_0xe8b0('0x56')][_0xe8b0('0x59')](_0x423069);})['then'](function(_0x2dc2bb){_0x148f6f[_0xe8b0('0x5a')]=_0x2dc2bb;return _0x148f6f;})[_0xe8b0('0x21')](respondWithFilteredResult(_0x2d063b,_0x423069))[_0xe8b0('0x2a')](handleError(_0x2d063b,null));};exports[_0xe8b0('0x5b')]=function(_0x1b0203,_0x568f3a){var _0x5678d0={'raw':![],'where':{'id':_0x1b0203[_0xe8b0('0x5c')]['id']},'include':[{'model':db[_0xe8b0('0x40')],'as':_0xe8b0('0x41')}]},_0x2cb305={};_0x2cb305[_0xe8b0('0x46')]=_['keys'](db['WhatsappAccount'][_0xe8b0('0x42')]);_0x2cb305[_0xe8b0('0x49')]=_[_0xe8b0('0x48')](_0x1b0203[_0xe8b0('0x49')]);_0x2cb305[_0xe8b0('0x4a')]=_[_0xe8b0('0x4b')](_0x2cb305[_0xe8b0('0x46')],_0x2cb305['query']);_0x5678d0['attributes']=_[_0xe8b0('0x4b')](_0x2cb305[_0xe8b0('0x46')],qs[_0xe8b0('0x4d')](_0x1b0203[_0xe8b0('0x49')]['fields']));_0x5678d0[_0xe8b0('0x4c')]=_0x5678d0['attributes']['length']?_0x5678d0[_0xe8b0('0x4c')]:_0x2cb305[_0xe8b0('0x46')];if(_0x1b0203['query'][_0xe8b0('0x57')]){_0x5678d0[_0xe8b0('0x58')]=[{'all':!![]}];}_0x5678d0=_[_0xe8b0('0x55')]({},_0x5678d0,_0x1b0203[_0xe8b0('0x5d')]);return db['WhatsappAccount'][_0xe8b0('0x5e')](_0x5678d0)[_0xe8b0('0x21')](handleEntityNotFound(_0x568f3a,null))[_0xe8b0('0x21')](respondWithResult(_0x568f3a,null))['catch'](handleError(_0x568f3a,null));};exports[_0xe8b0('0x5f')]=function(_0x2d4035,_0x1261ea){return db[_0xe8b0('0x56')][_0xe8b0('0x5f')](_0x2d4035['body'],{})['then'](function(_0x1eef4b){var _0x2acf6d=_0x2d4035[_0xe8b0('0x60')][_0xe8b0('0x39')]({'plain':!![]});if(!_0x2acf6d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2acf6d[_0xe8b0('0x61')]===_0xe8b0('0x60')){var _0x22d4aa=_0x1eef4b[_0xe8b0('0x39')]({'plain':!![]});var _0x3c1980='WhatsappAccounts';return db['UserProfileSection']['find']({'where':{'name':_0x3c1980,'userProfileId':_0x2acf6d['userProfileId']},'raw':!![]})[_0xe8b0('0x21')](function(_0x37b00b){if(_0x37b00b&&_0x37b00b['autoAssociation']===0x0){return db[_0xe8b0('0x3b')][_0xe8b0('0x5f')]({'name':_0x22d4aa[_0xe8b0('0x3e')],'resourceId':_0x22d4aa['id'],'type':_0x37b00b[_0xe8b0('0x3e')],'sectionId':_0x37b00b['id']},{})[_0xe8b0('0x21')](function(){return _0x1eef4b;});}else{return _0x1eef4b;}})['catch'](function(_0x94468b){logger['error'](_0xe8b0('0x62'),_0x94468b);throw _0x94468b;});}return _0x1eef4b;})['then'](respondWithResult(_0x1261ea,0xc9))[_0xe8b0('0x2a')](handleError(_0x1261ea,null));};exports[_0xe8b0('0x37')]=function(_0x2d3aea,_0x174a51){if(_0x2d3aea[_0xe8b0('0x63')]['id']){delete _0x2d3aea[_0xe8b0('0x63')]['id'];}return db['WhatsappAccount'][_0xe8b0('0x5e')]({'where':{'id':_0x2d3aea['params']['id']},'include':[{'model':db[_0xe8b0('0x40')],'as':_0xe8b0('0x41')}]})[_0xe8b0('0x21')](handleEntityNotFound(_0x174a51,null))[_0xe8b0('0x21')](saveUpdates(_0x2d3aea[_0xe8b0('0x63')],null))[_0xe8b0('0x21')](respondWithResult(_0x174a51,null))[_0xe8b0('0x2a')](handleError(_0x174a51,null));};exports[_0xe8b0('0x38')]=function(_0x4ede05,_0xfe2348){return db[_0xe8b0('0x56')][_0xe8b0('0x5e')]({'where':{'id':_0x4ede05[_0xe8b0('0x5c')]['id']}})[_0xe8b0('0x21')](handleEntityNotFound(_0xfe2348,null))[_0xe8b0('0x21')](removeEntity(_0xfe2348,null))[_0xe8b0('0x2a')](handleError(_0xfe2348,null));};exports[_0xe8b0('0x64')]=function(_0x3d8f60,_0x42e56e){return db['WhatsappAccount'][_0xe8b0('0x64')]()[_0xe8b0('0x21')](respondWithResult(_0x42e56e,null))[_0xe8b0('0x2a')](handleError(_0x42e56e,null));};exports['addDisposition']=function(_0x249944,_0x5e3b5f,_0x31e04a){if(_0x249944[_0xe8b0('0x63')]['id']){delete _0x249944['body']['id'];}return db['WhatsappAccount']['find']({'where':{'id':_0x249944[_0xe8b0('0x5c')]['id']}})[_0xe8b0('0x21')](handleEntityNotFound(_0x5e3b5f,null))[_0xe8b0('0x21')](function(_0x952cb5){if(_0x952cb5){_0x249944['body'][_0xe8b0('0x65')]=_0x952cb5['id'];return db[_0xe8b0('0x66')]['create'](_0x249944[_0xe8b0('0x63')]);}})['then'](respondWithResult(_0x5e3b5f,null))[_0xe8b0('0x2a')](handleError(_0x5e3b5f,null));};exports[_0xe8b0('0x67')]=function(_0xca920f,_0x14f82a,_0x3b07d5){var _0x2b19df={'raw':![],'where':{}};var _0x4dc437={};var _0x1f1da9={'count':0x0,'rows':[]};return db[_0xe8b0('0x56')][_0xe8b0('0x68')]({'where':{'id':_0xca920f[_0xe8b0('0x5c')]['id']}})['then'](handleEntityNotFound(_0x14f82a,null))[_0xe8b0('0x21')](function(_0x125c88){if(_0x125c88){_0x4dc437[_0xe8b0('0x46')]=_[_0xe8b0('0x48')](db['Disposition'][_0xe8b0('0x42')]);_0x4dc437['query']=_['keys'](_0xca920f[_0xe8b0('0x49')]);_0x4dc437[_0xe8b0('0x4a')]=_['intersection'](_0x4dc437[_0xe8b0('0x46')],_0x4dc437['query']);_0x2b19df[_0xe8b0('0x4c')]=_[_0xe8b0('0x4b')](_0x4dc437['model'],qs[_0xe8b0('0x4d')](_0xca920f['query'][_0xe8b0('0x4d')]));_0x2b19df[_0xe8b0('0x4c')]=_0x2b19df[_0xe8b0('0x4c')]['length']?_0x2b19df['attributes']:_0x4dc437[_0xe8b0('0x46')];if(!_0xca920f[_0xe8b0('0x49')][_0xe8b0('0x4f')]('nolimit')){_0x2b19df['limit']=qs['limit'](_0xca920f[_0xe8b0('0x49')]['limit']);_0x2b19df[_0xe8b0('0x31')]=qs[_0xe8b0('0x31')](_0xca920f[_0xe8b0('0x49')][_0xe8b0('0x31')]);}_0x2b19df[_0xe8b0('0x69')]=qs['sort'](_0xca920f[_0xe8b0('0x49')]['sort']);_0x2b19df[_0xe8b0('0x52')]=qs[_0xe8b0('0x4a')](_[_0xe8b0('0x53')](_0xca920f[_0xe8b0('0x49')],_0x4dc437[_0xe8b0('0x4a')]));_0x2b19df[_0xe8b0('0x52')]['WhatsappAccountId']=_0x125c88['id'];if(_0xca920f['query'][_0xe8b0('0x54')]){_0x2b19df[_0xe8b0('0x52')]=_[_0xe8b0('0x55')](_0x2b19df['where'],{'$or':_[_0xe8b0('0x47')](_0x2b19df[_0xe8b0('0x4c')],function(_0x575523){var _0x14af3e={};_0x14af3e[_0x575523]={'$like':'%'+_0xca920f['query'][_0xe8b0('0x54')]+'%'};return _0x14af3e;})});}_0x2b19df=_[_0xe8b0('0x55')]({},_0x2b19df,_0xca920f[_0xe8b0('0x5d')]);return db['Disposition'][_0xe8b0('0x30')]({'where':_0x2b19df['where']})[_0xe8b0('0x21')](function(_0x12558b){_0x1f1da9['count']=_0x12558b;if(_0xca920f['query'][_0xe8b0('0x57')]){_0x2b19df[_0xe8b0('0x58')]=[{'all':!![]}];}return db[_0xe8b0('0x66')][_0xe8b0('0x59')](_0x2b19df);})[_0xe8b0('0x21')](function(_0x4e0891){_0x1f1da9[_0xe8b0('0x5a')]=_0x4e0891;return _0x1f1da9;});}})[_0xe8b0('0x21')](respondWithFilteredResult(_0x14f82a,_0x2b19df))[_0xe8b0('0x2a')](handleError(_0x14f82a,null));};exports[_0xe8b0('0x6a')]=function(_0x402c3a,_0x3f20d4,_0x45831d){return db[_0xe8b0('0x56')][_0xe8b0('0x5e')]({'where':{'id':_0x402c3a[_0xe8b0('0x5c')]['id']}})[_0xe8b0('0x21')](handleEntityNotFound(_0x3f20d4,null))['then'](function(_0x4c54a9){if(_0x4c54a9){return _0x4c54a9[_0xe8b0('0x6a')](_0x402c3a[_0xe8b0('0x49')][_0xe8b0('0x6b')]);}})[_0xe8b0('0x21')](respondWithStatusCode(_0x3f20d4,null))[_0xe8b0('0x2a')](handleError(_0x3f20d4,null));};exports['addAnswer']=function(_0xa6917a,_0x3f72e5,_0x379b82){if(_0xa6917a[_0xe8b0('0x63')]['id']){delete _0xa6917a['body']['id'];}return db[_0xe8b0('0x56')]['find']({'where':{'id':_0xa6917a[_0xe8b0('0x5c')]['id']}})[_0xe8b0('0x21')](handleEntityNotFound(_0x3f72e5,null))[_0xe8b0('0x21')](function(_0x441c2e){if(_0x441c2e){_0xa6917a[_0xe8b0('0x63')][_0xe8b0('0x65')]=_0x441c2e['id'];return db[_0xe8b0('0x6c')][_0xe8b0('0x5f')](_0xa6917a[_0xe8b0('0x63')]);}})[_0xe8b0('0x21')](respondWithResult(_0x3f72e5,null))[_0xe8b0('0x2a')](handleError(_0x3f72e5,null));};exports[_0xe8b0('0x6d')]=function(_0x2f9166,_0x190a18,_0x148295){var _0x3cd99b={'raw':![],'where':{}};var _0x5d8fc6={};var _0x5f0d90={'count':0x0,'rows':[]};return db[_0xe8b0('0x56')][_0xe8b0('0x68')]({'where':{'id':_0x2f9166[_0xe8b0('0x5c')]['id']}})[_0xe8b0('0x21')](handleEntityNotFound(_0x190a18,null))[_0xe8b0('0x21')](function(_0x34dc8b){if(_0x34dc8b){_0x5d8fc6[_0xe8b0('0x46')]=_[_0xe8b0('0x48')](db['CannedAnswer'][_0xe8b0('0x42')]);_0x5d8fc6[_0xe8b0('0x49')]=_[_0xe8b0('0x48')](_0x2f9166[_0xe8b0('0x49')]);_0x5d8fc6[_0xe8b0('0x4a')]=_['intersection'](_0x5d8fc6[_0xe8b0('0x46')],_0x5d8fc6['query']);_0x3cd99b[_0xe8b0('0x4c')]=_[_0xe8b0('0x4b')](_0x5d8fc6[_0xe8b0('0x46')],qs[_0xe8b0('0x4d')](_0x2f9166[_0xe8b0('0x49')][_0xe8b0('0x4d')]));_0x3cd99b['attributes']=_0x3cd99b['attributes'][_0xe8b0('0x4e')]?_0x3cd99b[_0xe8b0('0x4c')]:_0x5d8fc6[_0xe8b0('0x46')];if(!_0x2f9166[_0xe8b0('0x49')][_0xe8b0('0x4f')](_0xe8b0('0x50'))){_0x3cd99b[_0xe8b0('0x2f')]=qs[_0xe8b0('0x2f')](_0x2f9166[_0xe8b0('0x49')][_0xe8b0('0x2f')]);_0x3cd99b[_0xe8b0('0x31')]=qs['offset'](_0x2f9166[_0xe8b0('0x49')][_0xe8b0('0x31')]);}_0x3cd99b['order']=qs[_0xe8b0('0x51')](_0x2f9166[_0xe8b0('0x49')][_0xe8b0('0x51')]);_0x3cd99b[_0xe8b0('0x52')]=qs['filters'](_['pick'](_0x2f9166[_0xe8b0('0x49')],_0x5d8fc6['filters']));_0x3cd99b[_0xe8b0('0x52')][_0xe8b0('0x65')]=_0x34dc8b['id'];if(_0x2f9166[_0xe8b0('0x49')][_0xe8b0('0x54')]){_0x3cd99b['where']=_[_0xe8b0('0x55')](_0x3cd99b[_0xe8b0('0x52')],{'$or':_[_0xe8b0('0x47')](_0x3cd99b['attributes'],function(_0x457c87){var _0x17c234={};_0x17c234[_0x457c87]={'$like':'%'+_0x2f9166[_0xe8b0('0x49')]['filter']+'%'};return _0x17c234;})});}_0x3cd99b=_['merge']({},_0x3cd99b,_0x2f9166[_0xe8b0('0x5d')]);return db[_0xe8b0('0x6c')]['count']({'where':_0x3cd99b[_0xe8b0('0x52')]})[_0xe8b0('0x21')](function(_0x5a1320){_0x5f0d90[_0xe8b0('0x30')]=_0x5a1320;if(_0x2f9166[_0xe8b0('0x49')]['includeAll']){_0x3cd99b['include']=[{'all':!![]}];}return db[_0xe8b0('0x6c')][_0xe8b0('0x59')](_0x3cd99b);})[_0xe8b0('0x21')](function(_0x400da4){_0x5f0d90['rows']=_0x400da4;return _0x5f0d90;});}})['then'](respondWithFilteredResult(_0x190a18,_0x3cd99b))[_0xe8b0('0x2a')](handleError(_0x190a18,null));};exports[_0xe8b0('0x6e')]=function(_0x2f042b,_0x125ddd,_0x405e27){return db['WhatsappAccount'][_0xe8b0('0x5e')]({'where':{'id':_0x2f042b[_0xe8b0('0x5c')]['id']}})[_0xe8b0('0x21')](handleEntityNotFound(_0x125ddd,null))[_0xe8b0('0x21')](function(_0x5a5026){if(_0x5a5026){return _0x5a5026[_0xe8b0('0x6e')](_0x2f042b[_0xe8b0('0x49')][_0xe8b0('0x6b')]);}})[_0xe8b0('0x21')](respondWithStatusCode(_0x125ddd,null))[_0xe8b0('0x2a')](handleError(_0x125ddd,null));};exports[_0xe8b0('0x6f')]=function(_0x237fa8,_0x156897,_0x15df8e){return db[_0xe8b0('0x56')][_0xe8b0('0x5e')]({'where':{'id':_0x237fa8[_0xe8b0('0x5c')]['id']}})[_0xe8b0('0x21')](handleEntityNotFound(_0x156897,null))['then'](function(_0x5a1d1e){if(_0x5a1d1e){return _0x5a1d1e[_0xe8b0('0x6f')](_0x237fa8['body'][_0xe8b0('0x6b')],_[_0xe8b0('0x70')](_0x237fa8['body'],[_0xe8b0('0x6b'),'id'])||{})['spread'](function(_0x4c8a07){for(var _0xd1b1f7=0x0;_0xd1b1f7<_0x237fa8[_0xe8b0('0x63')][_0xe8b0('0x6b')][_0xe8b0('0x4e')];_0xd1b1f7+=0x1){socket[_0xe8b0('0x71')]('userWhatsappAccount:save',{'UserId':Number(_0x237fa8[_0xe8b0('0x63')][_0xe8b0('0x6b')][_0xd1b1f7]),'WhatsappAccountId':Number(_0x237fa8[_0xe8b0('0x5c')]['id'])});}return _0x4c8a07;});}})[_0xe8b0('0x21')](respondWithResult(_0x156897,null))[_0xe8b0('0x2a')](handleError(_0x156897,null));};exports[_0xe8b0('0x72')]=function(_0x28b0c8,_0x10cdc0,_0x5c08ae){return db[_0xe8b0('0x56')]['find']({'where':{'id':_0x28b0c8[_0xe8b0('0x5c')]['id']}})['then'](handleEntityNotFound(_0x10cdc0,null))['then'](function(_0x30b047){if(_0x30b047){return _0x30b047['removeAgents'](_0x28b0c8[_0xe8b0('0x49')][_0xe8b0('0x6b')])[_0xe8b0('0x21')](function(){if(_['isArray'](_0x28b0c8['query'][_0xe8b0('0x6b')])){for(var _0x12da60=0x0;_0x12da60<_0x28b0c8[_0xe8b0('0x49')][_0xe8b0('0x6b')][_0xe8b0('0x4e')];_0x12da60+=0x1){socket['emit'](_0xe8b0('0x73'),{'UserId':Number(_0x28b0c8[_0xe8b0('0x49')][_0xe8b0('0x6b')][_0x12da60]),'WhatsappAccountId':Number(_0x28b0c8[_0xe8b0('0x5c')]['id'])});}}else{socket[_0xe8b0('0x71')](_0xe8b0('0x73'),{'UserId':Number(_0x28b0c8[_0xe8b0('0x49')][_0xe8b0('0x6b')]),'WhatsappAccountId':Number(_0x28b0c8[_0xe8b0('0x5c')]['id'])});}});}})['then'](respondWithStatusCode(_0x10cdc0,null))[_0xe8b0('0x2a')](handleError(_0x10cdc0,null));};exports[_0xe8b0('0x74')]=function(_0xdeb2ea,_0x2c29a1,_0x14a455){var _0x11a94e={};var _0x224b9d={};var _0x5b8682;var _0x47c23d;return db[_0xe8b0('0x56')]['findOne']({'where':{'id':_0xdeb2ea['params']['id']}})[_0xe8b0('0x21')](handleEntityNotFound(_0x2c29a1,null))[_0xe8b0('0x21')](function(_0x25d50c){if(_0x25d50c){_0x5b8682=_0x25d50c;_0x224b9d['model']=_[_0xe8b0('0x48')](db[_0xe8b0('0x75')]['rawAttributes']);_0x224b9d[_0xe8b0('0x49')]=_[_0xe8b0('0x48')](_0xdeb2ea[_0xe8b0('0x49')]);_0x224b9d['filters']=_[_0xe8b0('0x4b')](_0x224b9d['model'],_0x224b9d[_0xe8b0('0x49')]);_0x11a94e[_0xe8b0('0x4c')]=_[_0xe8b0('0x4b')](_0x224b9d[_0xe8b0('0x46')],qs['fields'](_0xdeb2ea[_0xe8b0('0x49')][_0xe8b0('0x4d')]));_0x11a94e[_0xe8b0('0x4c')]=_0x11a94e[_0xe8b0('0x4c')][_0xe8b0('0x4e')]?_0x11a94e[_0xe8b0('0x4c')]:_0x224b9d[_0xe8b0('0x46')];_0x11a94e[_0xe8b0('0x69')]=qs[_0xe8b0('0x51')](_0xdeb2ea[_0xe8b0('0x49')]['sort']);_0x11a94e[_0xe8b0('0x52')]=qs[_0xe8b0('0x4a')](_[_0xe8b0('0x53')](_0xdeb2ea[_0xe8b0('0x49')],_0x224b9d[_0xe8b0('0x4a')]));if(_0xdeb2ea[_0xe8b0('0x49')]['filter']){_0x11a94e['where']=_[_0xe8b0('0x55')](_0x11a94e['where'],{'$or':_[_0xe8b0('0x47')](_0x11a94e[_0xe8b0('0x4c')],function(_0x45144e){var _0x109131={};_0x109131[_0x45144e]={'$like':'%'+_0xdeb2ea[_0xe8b0('0x49')][_0xe8b0('0x54')]+'%'};return _0x109131;})});}_0x11a94e=_['merge']({},_0x11a94e,_0xdeb2ea['options']);return _0x5b8682[_0xe8b0('0x74')](_0x11a94e);}})['then'](function(_0xe6e631){if(_0xe6e631){_0x47c23d=_0xe6e631['length'];if(!_0xdeb2ea['query'][_0xe8b0('0x4f')]('nolimit')){_0x11a94e['limit']=qs['limit'](_0xdeb2ea[_0xe8b0('0x49')][_0xe8b0('0x2f')]);_0x11a94e[_0xe8b0('0x31')]=qs['offset'](_0xdeb2ea['query'][_0xe8b0('0x31')]);}return _0x5b8682['getAgents'](_0x11a94e);}})[_0xe8b0('0x21')](function(_0x55ffd6){if(_0x55ffd6){return _0x55ffd6?{'count':_0x47c23d,'rows':_0x55ffd6}:null;}})['then'](respondWithResult(_0x2c29a1,null))['catch'](handleError(_0x2c29a1,null));};exports[_0xe8b0('0x76')]=function(_0xd0f8d2,_0x2a80c1,_0x524d20){return db[_0xe8b0('0x56')][_0xe8b0('0x68')]({'where':{'id':_0xd0f8d2['params']['id']}})[_0xe8b0('0x21')](handleEntityNotFound(_0x2a80c1,null))[_0xe8b0('0x21')](function(_0x3808fa){if(_0x3808fa){return db[_0xe8b0('0x77')][_0xe8b0('0x78')](function(_0x146f07){return db[_0xe8b0('0x79')][_0xe8b0('0x38')]({'where':{'WhatsappAccountId':_0xd0f8d2[_0xe8b0('0x5c')]['id']},'transaction':_0x146f07})['then'](function(_0x16ef38){var _0x48a9ff=_[_0xe8b0('0x47')](_0xd0f8d2[_0xe8b0('0x63')],function(_0x474791){_0x474791[_0xe8b0('0x65')]=_0xd0f8d2[_0xe8b0('0x5c')]['id'];return _0x474791;});return db[_0xe8b0('0x79')]['bulkCreate'](_0x48a9ff,{'transaction':_0x146f07});});})[_0xe8b0('0x21')](function(){return db[_0xe8b0('0x79')][_0xe8b0('0x7a')]({'where':{'WhatsappAccountId':_0xd0f8d2[_0xe8b0('0x5c')]['id']},'order':_0xe8b0('0x7b')});});}})['then'](respondWithResult(_0x2a80c1,null))[_0xe8b0('0x2a')](handleError(_0x2a80c1,null));};exports[_0xe8b0('0x7c')]=function(_0x4d1047,_0x557994,_0x652a72){var _0x1b55ca={};var _0x2d71f3={};var _0x44dd67;var _0x568c4a;return db[_0xe8b0('0x56')][_0xe8b0('0x68')]({'where':{'id':_0x4d1047['params']['id']}})['then'](handleEntityNotFound(_0x557994,null))[_0xe8b0('0x21')](function(_0x406965){if(_0x406965){_0x44dd67=_0x406965;_0x2d71f3[_0xe8b0('0x46')]=_['keys'](db[_0xe8b0('0x79')][_0xe8b0('0x42')]);_0x2d71f3[_0xe8b0('0x49')]=_[_0xe8b0('0x48')](_0x4d1047[_0xe8b0('0x49')]);_0x2d71f3[_0xe8b0('0x4a')]=_['intersection'](_0x2d71f3[_0xe8b0('0x46')],_0x2d71f3[_0xe8b0('0x49')]);_0x1b55ca[_0xe8b0('0x4c')]=_['intersection'](_0x2d71f3['model'],qs[_0xe8b0('0x4d')](_0x4d1047[_0xe8b0('0x49')][_0xe8b0('0x4d')]));_0x1b55ca[_0xe8b0('0x4c')]=_0x1b55ca['attributes']['length']?_0x1b55ca[_0xe8b0('0x4c')]:_0x2d71f3[_0xe8b0('0x46')];_0x1b55ca[_0xe8b0('0x69')]=qs[_0xe8b0('0x51')](_0x4d1047[_0xe8b0('0x49')][_0xe8b0('0x51')]);_0x1b55ca[_0xe8b0('0x52')]=qs[_0xe8b0('0x4a')](_['pick'](_0x4d1047[_0xe8b0('0x49')],_0x2d71f3[_0xe8b0('0x4a')]));if(_0x4d1047[_0xe8b0('0x49')][_0xe8b0('0x54')]){_0x1b55ca['where']=_[_0xe8b0('0x55')](_0x1b55ca['where'],{'$or':_['map'](_0x1b55ca[_0xe8b0('0x4c')],function(_0x1495f6){var _0x5daa74={};_0x5daa74[_0x1495f6]={'$like':'%'+_0x4d1047[_0xe8b0('0x49')][_0xe8b0('0x54')]+'%'};return _0x5daa74;})});}_0x1b55ca=_['merge']({},_0x1b55ca,_0x4d1047[_0xe8b0('0x5d')]);return _0x44dd67[_0xe8b0('0x7c')](_0x1b55ca);}})[_0xe8b0('0x21')](function(_0x3597c6){if(_0x3597c6){_0x568c4a=_0x3597c6[_0xe8b0('0x4e')];if(!_0x4d1047[_0xe8b0('0x49')][_0xe8b0('0x4f')](_0xe8b0('0x50'))){_0x1b55ca[_0xe8b0('0x2f')]=qs[_0xe8b0('0x2f')](_0x4d1047[_0xe8b0('0x49')][_0xe8b0('0x2f')]);_0x1b55ca['offset']=qs[_0xe8b0('0x31')](_0x4d1047[_0xe8b0('0x49')][_0xe8b0('0x31')]);}return _0x44dd67[_0xe8b0('0x7c')](_0x1b55ca);}})['then'](function(_0x47c41e){if(_0x47c41e){return _0x47c41e?{'count':_0x568c4a,'rows':_0x47c41e}:null;}})['then'](respondWithResult(_0x557994,null))['catch'](handleError(_0x557994,null));};exports['notify']=function(_0x326e63,_0x260b77,_0x395c68){var _0x3d8364={'channel':'whatsapp'};var _0x4ca60e=[];var _0x42175f=[];var _0x18c5b4={};return db[_0xe8b0('0x56')][_0xe8b0('0x5e')]({'where':{'id':_0x326e63[_0xe8b0('0x5c')]['id']},'include':[{'model':db[_0xe8b0('0x79')],'as':_0xe8b0('0x7d')}]})[_0xe8b0('0x21')](handleEntityNotFound(_0x260b77,null))[_0xe8b0('0x21')](function(_0x31fc7a){_0x3d8364[_0xe8b0('0x7e')]=_0x31fc7a;_0x3d8364[_0xe8b0('0x7f')]=_[_0xe8b0('0x80')](_0x31fc7a[_0xe8b0('0x7d')],[_0xe8b0('0x7b')],[_0xe8b0('0x81')]);if(_0x3d8364[_0xe8b0('0x7e')][_0xe8b0('0x7d')]){delete _0x3d8364[_0xe8b0('0x7e')][_0xe8b0('0x7d')];}return db[_0xe8b0('0x82')][_0xe8b0('0x64')]();})[_0xe8b0('0x21')](function(_0x24841f){if(!_0x24841f){throw new db[(_0xe8b0('0x83'))][(_0xe8b0('0x84'))](_0xe8b0('0x85'));}_0x4ca60e=_['difference'](_[_0xe8b0('0x48')](_0x24841f),[_0xe8b0('0x86'),_0xe8b0('0x87')]);_0x42175f=_[_0xe8b0('0x88')](_[_0xe8b0('0x48')](_0x24841f),[_0xe8b0('0x86'),'updatedAt','CompanyId','ListId']);_0x3d8364['body']={'mapKey':_0xe8b0('0x89')};if(_0x3d8364[_0xe8b0('0x7e')]['type']&&_0x3d8364[_0xe8b0('0x7e')][_0xe8b0('0x44')]==='twilio'){_0x3d8364[_0xe8b0('0x63')][_0xe8b0('0x8a')]=_0x326e63[_0xe8b0('0x63')][_0xe8b0('0x8b')][_0xe8b0('0x8c')](_0xe8b0('0x8d'),'');_0x3d8364[_0xe8b0('0x63')][_0xe8b0('0x63')]=_0x326e63[_0xe8b0('0x63')][_0xe8b0('0x8e')];_0x3d8364[_0xe8b0('0x63')][_0xe8b0('0x8f')]=_0x326e63[_0xe8b0('0x63')][_0xe8b0('0x90')];}if(_0x3d8364[_0xe8b0('0x63')]['id']){delete _0x3d8364[_0xe8b0('0x63')]['id'];}if(_[_0xe8b0('0x91')](_0x3d8364[_0xe8b0('0x63')][_0xe8b0('0x8a')])){throw new db['Sequelize'][(_0xe8b0('0x84'))](_0xe8b0('0x92'));}if(_[_0xe8b0('0x91')](_0x3d8364[_0xe8b0('0x63')][_0xe8b0('0x63')])||_0x3d8364[_0xe8b0('0x63')][_0xe8b0('0x63')]===''){throw new db[(_0xe8b0('0x83'))][(_0xe8b0('0x84'))](_0xe8b0('0x93'));}if(_['isNil'](_0x3d8364[_0xe8b0('0x63')][_0xe8b0('0x94')])){throw new db[(_0xe8b0('0x83'))]['ValidationError'](_0xe8b0('0x95')+_0x42175f);}if(!_[_0xe8b0('0x96')](_0x42175f,_0x3d8364[_0xe8b0('0x63')][_0xe8b0('0x94')])){throw new db['Sequelize']['ValidationError'](_0xe8b0('0x97')+_0x42175f);}_0x18c5b4[_0x3d8364[_0xe8b0('0x63')]['mapKey']]=_0x3d8364[_0xe8b0('0x63')][_0xe8b0('0x8a')];return db[_0xe8b0('0x98')][_0xe8b0('0x5e')]({'where':{'id':_0x3d8364['account'][_0xe8b0('0x99')]},'include':[{'model':db[_0xe8b0('0x82')],'as':_0xe8b0('0x9a'),'where':_0x18c5b4,'limit':0x1,'order':[[_0xe8b0('0x87'),'DESC']]}]});})['then'](handleEntityNotFound(_0x260b77,null))[_0xe8b0('0x21')](function(_0x287ed6){if(_0x287ed6){_0x3d8364[_0xe8b0('0x9b')]=_[_0xe8b0('0x70')](_0x287ed6,['Contacts']);if(_0x287ed6[_0xe8b0('0x9a')][_0xe8b0('0x4e')]){return _0x287ed6['Contacts'][0x0];}var _0x2ab059=_[_0xe8b0('0x18')](_0x3d8364[_0xe8b0('0x63')],{'firstName':_0x3d8364[_0xe8b0('0x63')][_0xe8b0('0x8a')],'ListId':_0x287ed6['id']});_0x2ab059[_0x3d8364[_0xe8b0('0x63')][_0xe8b0('0x94')]]=_0x3d8364[_0xe8b0('0x63')]['from'];return db[_0xe8b0('0x82')][_0xe8b0('0x5f')](_0x2ab059,{'fields':_0x4ca60e,'raw':!![]});}})[_0xe8b0('0x21')](handleEntityNotFound(_0x260b77,null))[_0xe8b0('0x21')](function(_0x4df0a1){if(_0x4df0a1){_0x3d8364['contact']=_0x4df0a1;var _0x4de502={'ContactId':_0x4df0a1['id'],'phone':_0x3d8364['body'][_0xe8b0('0x8a')],'WhatsappAccountId':_0x326e63['params']['id']};var _0xa1c163={'ContactId':_0x4df0a1['id'],'WhatsappAccountId':_0x326e63['params']['id'],'closed':![]};return db['WhatsappInteraction']['find']({'where':_0xa1c163})['then'](function(_0x38ffaf){if(_0x38ffaf){return[_0x38ffaf,![]];}return db[_0xe8b0('0x9c')][_0xe8b0('0x5f')](_0x4de502)[_0xe8b0('0x21')](function(_0x47cc29){return[_0x47cc29,!![]];});});}})[_0xe8b0('0x9d')](function(_0x1c98c9,_0x20839c){_0x3d8364[_0xe8b0('0x9e')]=_0x1c98c9['get']({'plain':!![]});_0x3d8364[_0xe8b0('0x9e')]['created']=![];if(_0x20839c){if(_0x3d8364[_0xe8b0('0x7e')][_0xe8b0('0x9f')]){_0x3d8364['applications'][_0xe8b0('0xa0')]({'id':0x0,'priority':_0x3d8364['applications'][_0xe8b0('0x4e')]+0x1,'app':'close','appdata':_0xe8b0('0xa1'),'interval':_0xe8b0('0xa2')});}_0x3d8364[_0xe8b0('0x9e')][_0xe8b0('0xa3')]=!![];}return db[_0xe8b0('0xa4')][_0xe8b0('0x5f')]({'phone':_0x3d8364[_0xe8b0('0x63')][_0xe8b0('0x8a')],'messageId':_0x3d8364['body'][_0xe8b0('0x8f')],'body':_0x3d8364['body'][_0xe8b0('0x63')],'WhatsappAccountId':_0x326e63[_0xe8b0('0x5c')]['id'],'WhatsappInteractionId':_0x1c98c9['id'],'direction':'in','ContactId':_0x1c98c9[_0xe8b0('0xa5')],'AttachmentId':_0x3d8364[_0xe8b0('0x63')][_0xe8b0('0xa6')]});})[_0xe8b0('0x21')](function(_0x111b64){_0x3d8364[_0xe8b0('0x28')]=_0x111b64;if(_0x3d8364['interaction'][_0xe8b0('0xa7')]){return db[_0xe8b0('0x75')]['find']({'attributes':['id',_0xe8b0('0x3e')],'where':{'id':_0x3d8364[_0xe8b0('0x9e')][_0xe8b0('0xa7')]}})[_0xe8b0('0x21')](function(_0x10ee66){if(_0x10ee66){_0x3d8364[_0xe8b0('0x7f')][_0xe8b0('0xa8')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x10ee66[_0xe8b0('0x3e')]+','+(_0x3d8364['account']['waitForTheAssignedAgent']||0xa),'interval':_0xe8b0('0xa2')});}return respondWithRpcPromise('Start','startRouting',_0x3d8364);});}return respondWithRpcPromise(_0xe8b0('0xa9'),_0xe8b0('0xaa'),_0x3d8364);})[_0xe8b0('0x21')](function(_0x57a2ce){if(_0x57a2ce){var _0x48db2a=0xc8;var _0x335d7a='receiveMessage';logger['info'](_0xe8b0('0xab'),_0x335d7a,_0x48db2a,_0xe8b0('0xac'));logger[_0xe8b0('0x24')](_0xe8b0('0xad'),_0x335d7a,_0x48db2a,_0xe8b0('0xac'),JSON[_0xe8b0('0x26')](_0x57a2ce));if(_0x3d8364['account'][_0xe8b0('0x44')]===_0xe8b0('0xae')){return _0x260b77[_0xe8b0('0x2c')](_0x48db2a)[_0xe8b0('0x32')](_0xe8b0('0xaf'),'text/xml')[_0xe8b0('0x3f')](_0xe8b0('0xb0'));}else{return _0x260b77[_0xe8b0('0x2c')](_0x48db2a)[_0xe8b0('0x2d')](_0x57a2ce);}}})[_0xe8b0('0x2a')](handleError(_0x260b77,null));};exports[_0xe8b0('0x3f')]=function(_0x3e60b8,_0x3f3a43,_0x12552b){var _0x27d82d,_0x12d8d3,_0xc04d21;if(_[_0xe8b0('0x91')](_0x3e60b8[_0xe8b0('0x63')][_0xe8b0('0x63')])||_0x3e60b8[_0xe8b0('0x63')][_0xe8b0('0x63')]===''){throw new db[(_0xe8b0('0x83'))][(_0xe8b0('0x84'))](_0xe8b0('0x93'));}if(_[_0xe8b0('0x91')](_0x3e60b8[_0xe8b0('0x63')]['to'])){throw new db[(_0xe8b0('0x83'))][(_0xe8b0('0x84'))]('to\x20is\x20mandatory');}_0x27d82d=_0x3e60b8[_0xe8b0('0x63')]['to'];return db[_0xe8b0('0x56')][_0xe8b0('0x5e')]({'where':{'id':_0x3e60b8[_0xe8b0('0x5c')]['id']},'include':[{'model':db['CmList'],'as':_0xe8b0('0xb1'),'include':[{'model':db[_0xe8b0('0x82')],'as':'Contacts','where':{'mobile':_0x27d82d},'limit':0x1,'order':[[_0xe8b0('0x87'),_0xe8b0('0xb2')]]}]}]})[_0xe8b0('0x21')](handleEntityNotFound(_0x3f3a43,null))[_0xe8b0('0x21')](function(_0x28dc26){if(_0x28dc26&&_0x28dc26[_0xe8b0('0xb1')]){_0x12d8d3=_0x28dc26[_0xe8b0('0x39')]({'plain':!![]});if(_0x12d8d3[_0xe8b0('0xb1')]&&_0x12d8d3[_0xe8b0('0xb1')][_0xe8b0('0x9a')][_0xe8b0('0x4e')]){return _0x12d8d3[_0xe8b0('0xb1')][_0xe8b0('0x9a')][0x0];}return db[_0xe8b0('0x82')]['create'](_['defaults'](_0x3e60b8['body'],{'firstName':_0x27d82d,'mobile':_0x27d82d,'phone':_0x27d82d,'ListId':_0x12d8d3[_0xe8b0('0x99')]}));}})['then'](handleEntityNotFound(_0x3f3a43,null))[_0xe8b0('0x21')](function(_0x1d8db3){if(_0x1d8db3){_0xc04d21=_0x1d8db3;return db[_0xe8b0('0x9c')][_0xe8b0('0x5e')]({'where':{'ContactId':_0xc04d21['id'],'closed':![],'WhatsappAccountId':_0x12d8d3['id']}})[_0xe8b0('0x21')](function(_0xed9f53){if(_0xed9f53){return[_0xed9f53,![]];}return db['WhatsappInteraction']['create']({'UserId':_0x3e60b8['user']['id'],'ContactId':_0xc04d21['id'],'WhatsappAccountId':_0x12d8d3['id'],'phone':_0x27d82d,'firstMsgDirection':'out','Messages':[_[_0xe8b0('0x55')](_0x3e60b8[_0xe8b0('0x63')],{'read':![],'body':_0x3e60b8[_0xe8b0('0x63')]['body'],'phone':_0x27d82d,'WhatsappAccountId':_0x12d8d3['id'],'UserId':_0x3e60b8[_0xe8b0('0x60')]['id'],'ContactId':_0xc04d21['id']})]},{'include':[{'model':db['WhatsappMessage'],'as':_0xe8b0('0xb3')}]})[_0xe8b0('0x21')](function(_0x124d27){return[_0x124d27,!![]];});});}})[_0xe8b0('0x9d')](function(_0x9b2307,_0xd28820){if(_0xd28820){return _0x9b2307;}return db[_0xe8b0('0xa4')][_0xe8b0('0x5f')](_['merge'](_0x3e60b8['body'],{'read':![],'body':_0x3e60b8['body']['body'],'phone':_0x27d82d,'WhatsappAccountId':_0x12d8d3['id'],'WhatsappInteractionId':_0x9b2307['id'],'UserId':_0x3e60b8[_0xe8b0('0x60')]['id'],'ContactId':_0xc04d21['id']}))[_0xe8b0('0x21')](function(_0x2c3f70){_0x9b2307[_0xe8b0('0xb4')][_0xe8b0('0xb3')]=[];_0x9b2307['dataValues'][_0xe8b0('0xb3')][_0xe8b0('0xa0')](_0x2c3f70['dataValues']);return _0x9b2307;});})[_0xe8b0('0x21')](respondWithResult(_0x3f3a43,null))[_0xe8b0('0x2a')](handleError(_0x3f3a43,null));};
\ No newline at end of file
+var _0x1445=['status','offset','undefined','limit','count','Content-Range','json','reject','save','update','then','destroy','get','UserProfileResource','end','stack','name','send','index','Pause','mandatoryDispositionPause','map','WhatsappAccount','fieldName','type','key','model','query','intersection','attributes','fields','nolimit','sort','filters','filter','where','merge','options','includeAll','findAll','rows','show','keys','length','include','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','WhatsappAccounts','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','WhatsappAccountId','Disposition','findOne','rawAttributes','hasOwnProperty','order','pick','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','addAgents','omit','spread','emit','userWhatsappAccount:save','removeAgents','isArray','userWhatsappAccount:remove','getAgents','User','addApplications','sequelize','transaction','WhatsappApplication','bulkCreate','priority','getApplications','whatsapp','Applications','applications','asc','account','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','from','From','replace','Body','messageId','MessageSid','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','isNil','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','CmList','CmContact','Contacts','DESC','contact','WhatsappInteraction','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','WhatsappMessage','AttachmentId','UserId','unshift','waitForTheAssignedAgent','Start','receiveMessage','WhatsappAccount,\x20%s,\x20%s,\x20%s','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','stringify','twilio','set','Content-Type','text/xml','to\x20is\x20mandatory','List','ListId','out','Messages','dataValues','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','jayson/promise','client','http','request','WhatsappAccount,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','catch','sendStatus'];(function(_0x285a88,_0x5a772b){var _0x4bd9ae=function(_0x52c6b2){while(--_0x52c6b2){_0x285a88['push'](_0x285a88['shift']());}};_0x4bd9ae(++_0x5a772b);}(_0x1445,0x90));var _0x5144=function(_0xc4483f,_0x160f2e){_0xc4483f=_0xc4483f-0x0;var _0xf791d4=_0x1445[_0xc4483f];return _0xf791d4;};'use strict';var emlformat=require(_0x5144('0x0'));var rimraf=require(_0x5144('0x1'));var zipdir=require(_0x5144('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5144('0x3'));var moment=require(_0x5144('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x5144('0x5'));var util=require(_0x5144('0x6'));var path=require(_0x5144('0x7'));var sox=require(_0x5144('0x8'));var csv=require(_0x5144('0x9'));var ejs=require(_0x5144('0xa'));var fs=require('fs');var fs_extra=require(_0x5144('0xb'));var _=require(_0x5144('0xc'));var squel=require(_0x5144('0xd'));var crypto=require('crypto');var jsforce=require(_0x5144('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x5144('0xf'));var Papa=require(_0x5144('0x10'));var Redis=require(_0x5144('0x11'));var authService=require(_0x5144('0x12'));var qs=require(_0x5144('0x13'));var as=require(_0x5144('0x14'));var hardwareService=require(_0x5144('0x15'));var logger=require('../../config/logger')(_0x5144('0x16'));var utils=require(_0x5144('0x17'));var config=require(_0x5144('0x18'));var licenseUtil=require(_0x5144('0x19'));var db=require(_0x5144('0x1a'))['db'];config[_0x5144('0x1b')]=_[_0x5144('0x1c')](config[_0x5144('0x1b')],{'host':_0x5144('0x1d'),'port':0x18eb});var socket=require(_0x5144('0x1e'))(new Redis(config[_0x5144('0x1b')]));require(_0x5144('0x1f'))['register'](socket);var jayson=require(_0x5144('0x20'));var client=jayson[_0x5144('0x21')][_0x5144('0x22')]({'port':0x232c});function respondWithRpcPromise(_0x2c3431,_0xc7c17a,_0x2c6d90,_0x37c6da){return new BPromise(function(_0x2d01ac,_0x4d7c19){var _0x2ca6c3=_0x37c6da||client;return _0x2ca6c3[_0x5144('0x23')](_0x2c3431,_0x2c6d90)['then'](function(_0x9af255){logger['info'](_0x5144('0x24'),_0xc7c17a,_0x5144('0x25'));logger['debug']('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0xc7c17a,_0x5144('0x25'),JSON['stringify'](_0x9af255));if(_0x9af255['error']){if(_0x9af255[_0x5144('0x26')][_0x5144('0x27')]===0x1f4){logger['error'](_0x5144('0x24'),_0xc7c17a,_0x9af255[_0x5144('0x26')][_0x5144('0x28')]);return _0x4d7c19(_0x9af255[_0x5144('0x26')][_0x5144('0x28')]);}logger[_0x5144('0x26')](_0x5144('0x24'),_0xc7c17a,_0x9af255['error'][_0x5144('0x28')]);return _0x2d01ac(_0x9af255[_0x5144('0x26')][_0x5144('0x28')]);}else{logger[_0x5144('0x29')](_0x5144('0x24'),_0xc7c17a,_0x5144('0x25'));_0x2d01ac(_0x9af255[_0x5144('0x2a')][_0x5144('0x28')]);}})[_0x5144('0x2b')](function(_0x10115b){logger[_0x5144('0x26')]('WhatsappAccount,\x20%s,\x20%s',_0xc7c17a,_0x10115b);_0x4d7c19(_0x10115b);});});}function respondWithStatusCode(_0x4ded5b,_0x55dc35){_0x55dc35=_0x55dc35||0xcc;return function(_0x5a5908){if(_0x5a5908){return _0x4ded5b[_0x5144('0x2c')](_0x55dc35);}return _0x4ded5b['status'](_0x55dc35)['end']();};}function respondWithResult(_0x5114c7,_0x19fc69){_0x19fc69=_0x19fc69||0xc8;return function(_0x647bb0){if(_0x647bb0){return _0x5114c7[_0x5144('0x2d')](_0x19fc69)['json'](_0x647bb0);}};}function respondWithFilteredResult(_0x322bf2,_0xe2bbd8){return function(_0x3ec0e6){if(_0x3ec0e6){var _0x4f4c85=typeof _0xe2bbd8[_0x5144('0x2e')]===_0x5144('0x2f')&&typeof _0xe2bbd8[_0x5144('0x30')]===_0x5144('0x2f');var _0x2e0f54=_0x3ec0e6[_0x5144('0x31')];var _0x489785=_0x4f4c85?0x0:_0xe2bbd8['offset'];var _0x57fcf3=_0x4f4c85?_0x3ec0e6[_0x5144('0x31')]:_0xe2bbd8['offset']+_0xe2bbd8[_0x5144('0x30')];var _0x3da32d;if(_0x57fcf3>=_0x2e0f54){_0x57fcf3=_0x2e0f54;_0x3da32d=0xc8;}else{_0x3da32d=0xce;}_0x322bf2[_0x5144('0x2d')](_0x3da32d);return _0x322bf2['set'](_0x5144('0x32'),_0x489785+'-'+_0x57fcf3+'/'+_0x2e0f54)[_0x5144('0x33')](_0x3ec0e6);}return null;};}function patchUpdates(_0x5ae529){return function(_0x56e578){try{jsonpatch['apply'](_0x56e578,_0x5ae529,!![]);}catch(_0x2c2f29){return BPromise[_0x5144('0x34')](_0x2c2f29);}return _0x56e578[_0x5144('0x35')]();};}function saveUpdates(_0x33d063,_0x872ec5){return function(_0x49905f){if(_0x49905f){return _0x49905f[_0x5144('0x36')](_0x33d063)[_0x5144('0x37')](function(_0x248312){return _0x248312;});}return null;};}function removeEntity(_0x25e43a,_0x2e9b1f){return function(_0x225b9a){if(_0x225b9a){return _0x225b9a[_0x5144('0x38')]()[_0x5144('0x37')](function(){var _0x5da5cb=_0x225b9a[_0x5144('0x39')]({'plain':!![]});var _0x3602e0='WhatsappAccounts';return db[_0x5144('0x3a')][_0x5144('0x38')]({'where':{'type':_0x3602e0,'resourceId':_0x5da5cb['id']}})[_0x5144('0x37')](function(){return _0x225b9a;});})[_0x5144('0x37')](function(){_0x25e43a[_0x5144('0x2d')](0xcc)[_0x5144('0x3b')]();});}};}function handleEntityNotFound(_0x56d729,_0x449a54){return function(_0x23596f){if(!_0x23596f){_0x56d729['sendStatus'](0x194);}return _0x23596f;};}function handleError(_0x500b2c,_0x5e6c85){_0x5e6c85=_0x5e6c85||0x1f4;return function(_0x3a3741){logger[_0x5144('0x26')](_0x3a3741[_0x5144('0x3c')]);if(_0x3a3741[_0x5144('0x3d')]){delete _0x3a3741[_0x5144('0x3d')];}_0x500b2c[_0x5144('0x2d')](_0x5e6c85)[_0x5144('0x3e')](_0x3a3741);};}exports[_0x5144('0x3f')]=function(_0x297c95,_0x424c8d){var _0x148972={'include':[{'model':db[_0x5144('0x40')],'as':_0x5144('0x41')}]},_0x2f6bb3={},_0x1448b6={'count':0x0,'rows':[]};var _0x1cf21b=_[_0x5144('0x42')](db[_0x5144('0x43')]['rawAttributes'],function(_0x401946){return{'name':_0x401946[_0x5144('0x44')],'type':_0x401946[_0x5144('0x45')][_0x5144('0x46')]};});_0x2f6bb3[_0x5144('0x47')]=_[_0x5144('0x42')](_0x1cf21b,_0x5144('0x3d'));_0x2f6bb3[_0x5144('0x48')]=_['keys'](_0x297c95['query']);_0x2f6bb3['filters']=_[_0x5144('0x49')](_0x2f6bb3[_0x5144('0x47')],_0x2f6bb3[_0x5144('0x48')]);_0x148972[_0x5144('0x4a')]=_[_0x5144('0x49')](_0x2f6bb3[_0x5144('0x47')],qs[_0x5144('0x4b')](_0x297c95[_0x5144('0x48')][_0x5144('0x4b')]));_0x148972['attributes']=_0x148972[_0x5144('0x4a')]['length']?_0x148972[_0x5144('0x4a')]:_0x2f6bb3['model'];if(!_0x297c95[_0x5144('0x48')]['hasOwnProperty'](_0x5144('0x4c'))){_0x148972[_0x5144('0x30')]=qs['limit'](_0x297c95[_0x5144('0x48')]['limit']);_0x148972['offset']=qs[_0x5144('0x2e')](_0x297c95[_0x5144('0x48')][_0x5144('0x2e')]);}_0x148972['order']=qs[_0x5144('0x4d')](_0x297c95[_0x5144('0x48')][_0x5144('0x4d')]);_0x148972['where']=qs[_0x5144('0x4e')](_['pick'](_0x297c95[_0x5144('0x48')],_0x2f6bb3['filters']),_0x1cf21b);if(_0x297c95[_0x5144('0x48')][_0x5144('0x4f')]){_0x148972[_0x5144('0x50')]=_[_0x5144('0x51')](_0x148972[_0x5144('0x50')],{'$or':_[_0x5144('0x42')](_0x1cf21b,function(_0x2b68b3){if(_0x2b68b3['type']!=='VIRTUAL'){var _0xa25230={};_0xa25230[_0x2b68b3[_0x5144('0x3d')]]={'$like':'%'+_0x297c95[_0x5144('0x48')]['filter']+'%'};return _0xa25230;}})});}_0x148972=_[_0x5144('0x51')]({},_0x148972,_0x297c95[_0x5144('0x52')]);var _0x2c76bb={'where':_0x148972['where']};return db[_0x5144('0x43')][_0x5144('0x31')](_0x2c76bb)[_0x5144('0x37')](function(_0x2a0af0){_0x1448b6[_0x5144('0x31')]=_0x2a0af0;if(_0x297c95[_0x5144('0x48')][_0x5144('0x53')]){_0x148972['include']=[{'all':!![]}];}return db['WhatsappAccount'][_0x5144('0x54')](_0x148972);})[_0x5144('0x37')](function(_0x24fb7a){_0x1448b6[_0x5144('0x55')]=_0x24fb7a;return _0x1448b6;})[_0x5144('0x37')](respondWithFilteredResult(_0x424c8d,_0x148972))['catch'](handleError(_0x424c8d,null));};exports[_0x5144('0x56')]=function(_0x8890fd,_0x19d13d){var _0x14edee={'raw':![],'where':{'id':_0x8890fd['params']['id']},'include':[{'model':db[_0x5144('0x40')],'as':'mandatoryDispositionPause'}]},_0x30f74c={};_0x30f74c['model']=_[_0x5144('0x57')](db[_0x5144('0x43')]['rawAttributes']);_0x30f74c[_0x5144('0x48')]=_['keys'](_0x8890fd[_0x5144('0x48')]);_0x30f74c['filters']=_[_0x5144('0x49')](_0x30f74c[_0x5144('0x47')],_0x30f74c[_0x5144('0x48')]);_0x14edee[_0x5144('0x4a')]=_[_0x5144('0x49')](_0x30f74c[_0x5144('0x47')],qs[_0x5144('0x4b')](_0x8890fd['query'][_0x5144('0x4b')]));_0x14edee[_0x5144('0x4a')]=_0x14edee[_0x5144('0x4a')][_0x5144('0x58')]?_0x14edee[_0x5144('0x4a')]:_0x30f74c[_0x5144('0x47')];if(_0x8890fd[_0x5144('0x48')][_0x5144('0x53')]){_0x14edee[_0x5144('0x59')]=[{'all':!![]}];}_0x14edee=_[_0x5144('0x51')]({},_0x14edee,_0x8890fd[_0x5144('0x52')]);return db['WhatsappAccount']['find'](_0x14edee)[_0x5144('0x37')](handleEntityNotFound(_0x19d13d,null))[_0x5144('0x37')](respondWithResult(_0x19d13d,null))[_0x5144('0x2b')](handleError(_0x19d13d,null));};exports['create']=function(_0x2211dd,_0x442a1c){return db[_0x5144('0x43')][_0x5144('0x5a')](_0x2211dd['body'],{})[_0x5144('0x37')](function(_0x573421){var _0x42b4ac=_0x2211dd[_0x5144('0x5b')][_0x5144('0x39')]({'plain':!![]});if(!_0x42b4ac)throw new Error(_0x5144('0x5c'));if(_0x42b4ac['role']===_0x5144('0x5b')){var _0xc17c99=_0x573421[_0x5144('0x39')]({'plain':!![]});var _0x32687e=_0x5144('0x5d');return db['UserProfileSection'][_0x5144('0x5e')]({'where':{'name':_0x32687e,'userProfileId':_0x42b4ac[_0x5144('0x5f')]},'raw':!![]})['then'](function(_0x5a736e){if(_0x5a736e&&_0x5a736e[_0x5144('0x60')]===0x0){return db[_0x5144('0x3a')][_0x5144('0x5a')]({'name':_0xc17c99[_0x5144('0x3d')],'resourceId':_0xc17c99['id'],'type':_0x5a736e['name'],'sectionId':_0x5a736e['id']},{})[_0x5144('0x37')](function(){return _0x573421;});}else{return _0x573421;}})[_0x5144('0x2b')](function(_0x28f949){logger['error'](_0x5144('0x61'),_0x28f949);throw _0x28f949;});}return _0x573421;})[_0x5144('0x37')](respondWithResult(_0x442a1c,0xc9))['catch'](handleError(_0x442a1c,null));};exports['update']=function(_0x2fd4f1,_0x5ec558){if(_0x2fd4f1[_0x5144('0x62')]['id']){delete _0x2fd4f1['body']['id'];}return db[_0x5144('0x43')]['find']({'where':{'id':_0x2fd4f1[_0x5144('0x63')]['id']},'include':[{'model':db[_0x5144('0x40')],'as':_0x5144('0x41')}]})['then'](handleEntityNotFound(_0x5ec558,null))['then'](saveUpdates(_0x2fd4f1[_0x5144('0x62')],null))['then'](respondWithResult(_0x5ec558,null))[_0x5144('0x2b')](handleError(_0x5ec558,null));};exports['destroy']=function(_0x4e4cb7,_0x3ca8eb){return db[_0x5144('0x43')]['find']({'where':{'id':_0x4e4cb7['params']['id']}})['then'](handleEntityNotFound(_0x3ca8eb,null))['then'](removeEntity(_0x3ca8eb,null))[_0x5144('0x2b')](handleError(_0x3ca8eb,null));};exports['describe']=function(_0x233670,_0x2555dd){return db[_0x5144('0x43')][_0x5144('0x64')]()[_0x5144('0x37')](respondWithResult(_0x2555dd,null))[_0x5144('0x2b')](handleError(_0x2555dd,null));};exports['addDisposition']=function(_0x24cdcc,_0x3a5895,_0x22e3da){if(_0x24cdcc[_0x5144('0x62')]['id']){delete _0x24cdcc[_0x5144('0x62')]['id'];}return db[_0x5144('0x43')]['find']({'where':{'id':_0x24cdcc[_0x5144('0x63')]['id']}})[_0x5144('0x37')](handleEntityNotFound(_0x3a5895,null))['then'](function(_0x478302){if(_0x478302){_0x24cdcc['body'][_0x5144('0x65')]=_0x478302['id'];return db[_0x5144('0x66')][_0x5144('0x5a')](_0x24cdcc['body']);}})[_0x5144('0x37')](respondWithResult(_0x3a5895,null))[_0x5144('0x2b')](handleError(_0x3a5895,null));};exports['getDispositions']=function(_0xbdedc2,_0x239a73,_0x51cf97){var _0x390114={'raw':![],'where':{}};var _0x41de52={};var _0x3b67a0={'count':0x0,'rows':[]};return db[_0x5144('0x43')][_0x5144('0x67')]({'where':{'id':_0xbdedc2[_0x5144('0x63')]['id']}})[_0x5144('0x37')](handleEntityNotFound(_0x239a73,null))[_0x5144('0x37')](function(_0x1a502d){if(_0x1a502d){_0x41de52[_0x5144('0x47')]=_[_0x5144('0x57')](db[_0x5144('0x66')][_0x5144('0x68')]);_0x41de52[_0x5144('0x48')]=_['keys'](_0xbdedc2['query']);_0x41de52[_0x5144('0x4e')]=_[_0x5144('0x49')](_0x41de52[_0x5144('0x47')],_0x41de52['query']);_0x390114['attributes']=_[_0x5144('0x49')](_0x41de52['model'],qs['fields'](_0xbdedc2['query'][_0x5144('0x4b')]));_0x390114[_0x5144('0x4a')]=_0x390114[_0x5144('0x4a')][_0x5144('0x58')]?_0x390114[_0x5144('0x4a')]:_0x41de52['model'];if(!_0xbdedc2['query'][_0x5144('0x69')]('nolimit')){_0x390114['limit']=qs[_0x5144('0x30')](_0xbdedc2[_0x5144('0x48')][_0x5144('0x30')]);_0x390114[_0x5144('0x2e')]=qs[_0x5144('0x2e')](_0xbdedc2[_0x5144('0x48')][_0x5144('0x2e')]);}_0x390114[_0x5144('0x6a')]=qs[_0x5144('0x4d')](_0xbdedc2[_0x5144('0x48')][_0x5144('0x4d')]);_0x390114[_0x5144('0x50')]=qs[_0x5144('0x4e')](_[_0x5144('0x6b')](_0xbdedc2[_0x5144('0x48')],_0x41de52[_0x5144('0x4e')]));_0x390114[_0x5144('0x50')][_0x5144('0x65')]=_0x1a502d['id'];if(_0xbdedc2[_0x5144('0x48')]['filter']){_0x390114[_0x5144('0x50')]=_[_0x5144('0x51')](_0x390114[_0x5144('0x50')],{'$or':_[_0x5144('0x42')](_0x390114[_0x5144('0x4a')],function(_0x5c3dca){var _0x17ae03={};_0x17ae03[_0x5c3dca]={'$like':'%'+_0xbdedc2[_0x5144('0x48')][_0x5144('0x4f')]+'%'};return _0x17ae03;})});}_0x390114=_['merge']({},_0x390114,_0xbdedc2[_0x5144('0x52')]);return db[_0x5144('0x66')][_0x5144('0x31')]({'where':_0x390114[_0x5144('0x50')]})['then'](function(_0x5e382f){_0x3b67a0[_0x5144('0x31')]=_0x5e382f;if(_0xbdedc2[_0x5144('0x48')][_0x5144('0x53')]){_0x390114[_0x5144('0x59')]=[{'all':!![]}];}return db[_0x5144('0x66')][_0x5144('0x54')](_0x390114);})[_0x5144('0x37')](function(_0x1397d7){_0x3b67a0[_0x5144('0x55')]=_0x1397d7;return _0x3b67a0;});}})[_0x5144('0x37')](respondWithFilteredResult(_0x239a73,_0x390114))[_0x5144('0x2b')](handleError(_0x239a73,null));};exports[_0x5144('0x6c')]=function(_0x2436b7,_0x47b48a,_0x1c1845){return db['WhatsappAccount'][_0x5144('0x5e')]({'where':{'id':_0x2436b7['params']['id']}})['then'](handleEntityNotFound(_0x47b48a,null))[_0x5144('0x37')](function(_0x13b155){if(_0x13b155){return _0x13b155[_0x5144('0x6c')](_0x2436b7[_0x5144('0x48')][_0x5144('0x6d')]);}})[_0x5144('0x37')](respondWithStatusCode(_0x47b48a,null))[_0x5144('0x2b')](handleError(_0x47b48a,null));};exports[_0x5144('0x6e')]=function(_0x14af33,_0x2a4899,_0x3765bb){if(_0x14af33[_0x5144('0x62')]['id']){delete _0x14af33['body']['id'];}return db[_0x5144('0x43')][_0x5144('0x5e')]({'where':{'id':_0x14af33[_0x5144('0x63')]['id']}})[_0x5144('0x37')](handleEntityNotFound(_0x2a4899,null))[_0x5144('0x37')](function(_0x4cbfda){if(_0x4cbfda){_0x14af33[_0x5144('0x62')][_0x5144('0x65')]=_0x4cbfda['id'];return db[_0x5144('0x6f')]['create'](_0x14af33[_0x5144('0x62')]);}})[_0x5144('0x37')](respondWithResult(_0x2a4899,null))[_0x5144('0x2b')](handleError(_0x2a4899,null));};exports[_0x5144('0x70')]=function(_0x307780,_0x32d2d9,_0x4d36e4){var _0xd1955={'raw':![],'where':{}};var _0x1a209d={};var _0x912169={'count':0x0,'rows':[]};return db[_0x5144('0x43')][_0x5144('0x67')]({'where':{'id':_0x307780[_0x5144('0x63')]['id']}})[_0x5144('0x37')](handleEntityNotFound(_0x32d2d9,null))[_0x5144('0x37')](function(_0x4297bc){if(_0x4297bc){_0x1a209d[_0x5144('0x47')]=_[_0x5144('0x57')](db[_0x5144('0x6f')][_0x5144('0x68')]);_0x1a209d[_0x5144('0x48')]=_['keys'](_0x307780[_0x5144('0x48')]);_0x1a209d[_0x5144('0x4e')]=_[_0x5144('0x49')](_0x1a209d[_0x5144('0x47')],_0x1a209d[_0x5144('0x48')]);_0xd1955[_0x5144('0x4a')]=_[_0x5144('0x49')](_0x1a209d[_0x5144('0x47')],qs['fields'](_0x307780[_0x5144('0x48')][_0x5144('0x4b')]));_0xd1955[_0x5144('0x4a')]=_0xd1955[_0x5144('0x4a')]['length']?_0xd1955[_0x5144('0x4a')]:_0x1a209d[_0x5144('0x47')];if(!_0x307780[_0x5144('0x48')][_0x5144('0x69')](_0x5144('0x4c'))){_0xd1955[_0x5144('0x30')]=qs[_0x5144('0x30')](_0x307780['query'][_0x5144('0x30')]);_0xd1955['offset']=qs['offset'](_0x307780[_0x5144('0x48')][_0x5144('0x2e')]);}_0xd1955[_0x5144('0x6a')]=qs[_0x5144('0x4d')](_0x307780[_0x5144('0x48')][_0x5144('0x4d')]);_0xd1955[_0x5144('0x50')]=qs['filters'](_[_0x5144('0x6b')](_0x307780['query'],_0x1a209d[_0x5144('0x4e')]));_0xd1955['where']['WhatsappAccountId']=_0x4297bc['id'];if(_0x307780[_0x5144('0x48')][_0x5144('0x4f')]){_0xd1955[_0x5144('0x50')]=_[_0x5144('0x51')](_0xd1955[_0x5144('0x50')],{'$or':_[_0x5144('0x42')](_0xd1955[_0x5144('0x4a')],function(_0x21bef6){var _0x4aeed7={};_0x4aeed7[_0x21bef6]={'$like':'%'+_0x307780[_0x5144('0x48')][_0x5144('0x4f')]+'%'};return _0x4aeed7;})});}_0xd1955=_[_0x5144('0x51')]({},_0xd1955,_0x307780[_0x5144('0x52')]);return db[_0x5144('0x6f')][_0x5144('0x31')]({'where':_0xd1955[_0x5144('0x50')]})[_0x5144('0x37')](function(_0x33e01f){_0x912169[_0x5144('0x31')]=_0x33e01f;if(_0x307780['query'][_0x5144('0x53')]){_0xd1955[_0x5144('0x59')]=[{'all':!![]}];}return db[_0x5144('0x6f')][_0x5144('0x54')](_0xd1955);})[_0x5144('0x37')](function(_0xa0759c){_0x912169[_0x5144('0x55')]=_0xa0759c;return _0x912169;});}})[_0x5144('0x37')](respondWithFilteredResult(_0x32d2d9,_0xd1955))[_0x5144('0x2b')](handleError(_0x32d2d9,null));};exports[_0x5144('0x71')]=function(_0xd489db,_0x376a8e,_0x403f1e){return db[_0x5144('0x43')][_0x5144('0x5e')]({'where':{'id':_0xd489db['params']['id']}})['then'](handleEntityNotFound(_0x376a8e,null))[_0x5144('0x37')](function(_0x2413e0){if(_0x2413e0){return _0x2413e0[_0x5144('0x71')](_0xd489db[_0x5144('0x48')]['ids']);}})['then'](respondWithStatusCode(_0x376a8e,null))['catch'](handleError(_0x376a8e,null));};exports[_0x5144('0x72')]=function(_0x1d896a,_0x5d89f1,_0x55853b){return db['WhatsappAccount']['find']({'where':{'id':_0x1d896a['params']['id']}})[_0x5144('0x37')](handleEntityNotFound(_0x5d89f1,null))[_0x5144('0x37')](function(_0x120dc0){if(_0x120dc0){return _0x120dc0[_0x5144('0x72')](_0x1d896a[_0x5144('0x62')][_0x5144('0x6d')],_[_0x5144('0x73')](_0x1d896a[_0x5144('0x62')],[_0x5144('0x6d'),'id'])||{})[_0x5144('0x74')](function(_0x3ffa99){for(var _0x250ed6=0x0;_0x250ed6<_0x1d896a[_0x5144('0x62')]['ids']['length'];_0x250ed6+=0x1){socket[_0x5144('0x75')](_0x5144('0x76'),{'UserId':Number(_0x1d896a['body'][_0x5144('0x6d')][_0x250ed6]),'WhatsappAccountId':Number(_0x1d896a['params']['id'])});}return _0x3ffa99;});}})[_0x5144('0x37')](respondWithResult(_0x5d89f1,null))['catch'](handleError(_0x5d89f1,null));};exports[_0x5144('0x77')]=function(_0x79d2a2,_0x340f0e,_0x2ad702){return db['WhatsappAccount']['find']({'where':{'id':_0x79d2a2[_0x5144('0x63')]['id']}})[_0x5144('0x37')](handleEntityNotFound(_0x340f0e,null))[_0x5144('0x37')](function(_0x53711b){if(_0x53711b){return _0x53711b[_0x5144('0x77')](_0x79d2a2[_0x5144('0x48')][_0x5144('0x6d')])['then'](function(){if(_[_0x5144('0x78')](_0x79d2a2[_0x5144('0x48')][_0x5144('0x6d')])){for(var _0x20e93c=0x0;_0x20e93c<_0x79d2a2[_0x5144('0x48')][_0x5144('0x6d')][_0x5144('0x58')];_0x20e93c+=0x1){socket[_0x5144('0x75')](_0x5144('0x79'),{'UserId':Number(_0x79d2a2['query'][_0x5144('0x6d')][_0x20e93c]),'WhatsappAccountId':Number(_0x79d2a2[_0x5144('0x63')]['id'])});}}else{socket['emit'](_0x5144('0x79'),{'UserId':Number(_0x79d2a2[_0x5144('0x48')]['ids']),'WhatsappAccountId':Number(_0x79d2a2[_0x5144('0x63')]['id'])});}});}})[_0x5144('0x37')](respondWithStatusCode(_0x340f0e,null))[_0x5144('0x2b')](handleError(_0x340f0e,null));};exports[_0x5144('0x7a')]=function(_0x126027,_0x44051a,_0x454d10){var _0x38618f={};var _0x1ff5dd={};var _0x4126dd;var _0x1d7fd2;return db[_0x5144('0x43')]['findOne']({'where':{'id':_0x126027['params']['id']}})[_0x5144('0x37')](handleEntityNotFound(_0x44051a,null))[_0x5144('0x37')](function(_0xb49906){if(_0xb49906){_0x4126dd=_0xb49906;_0x1ff5dd[_0x5144('0x47')]=_[_0x5144('0x57')](db[_0x5144('0x7b')]['rawAttributes']);_0x1ff5dd[_0x5144('0x48')]=_[_0x5144('0x57')](_0x126027[_0x5144('0x48')]);_0x1ff5dd[_0x5144('0x4e')]=_[_0x5144('0x49')](_0x1ff5dd[_0x5144('0x47')],_0x1ff5dd['query']);_0x38618f['attributes']=_[_0x5144('0x49')](_0x1ff5dd['model'],qs[_0x5144('0x4b')](_0x126027[_0x5144('0x48')][_0x5144('0x4b')]));_0x38618f[_0x5144('0x4a')]=_0x38618f[_0x5144('0x4a')][_0x5144('0x58')]?_0x38618f[_0x5144('0x4a')]:_0x1ff5dd[_0x5144('0x47')];_0x38618f[_0x5144('0x6a')]=qs['sort'](_0x126027[_0x5144('0x48')]['sort']);_0x38618f[_0x5144('0x50')]=qs[_0x5144('0x4e')](_[_0x5144('0x6b')](_0x126027[_0x5144('0x48')],_0x1ff5dd['filters']));if(_0x126027[_0x5144('0x48')]['filter']){_0x38618f[_0x5144('0x50')]=_[_0x5144('0x51')](_0x38618f[_0x5144('0x50')],{'$or':_['map'](_0x38618f['attributes'],function(_0x433b44){var _0x5401de={};_0x5401de[_0x433b44]={'$like':'%'+_0x126027['query']['filter']+'%'};return _0x5401de;})});}_0x38618f=_[_0x5144('0x51')]({},_0x38618f,_0x126027['options']);return _0x4126dd['getAgents'](_0x38618f);}})[_0x5144('0x37')](function(_0x2c5c56){if(_0x2c5c56){_0x1d7fd2=_0x2c5c56['length'];if(!_0x126027['query'][_0x5144('0x69')](_0x5144('0x4c'))){_0x38618f[_0x5144('0x30')]=qs['limit'](_0x126027[_0x5144('0x48')]['limit']);_0x38618f[_0x5144('0x2e')]=qs[_0x5144('0x2e')](_0x126027['query'][_0x5144('0x2e')]);}return _0x4126dd[_0x5144('0x7a')](_0x38618f);}})[_0x5144('0x37')](function(_0x186eb9){if(_0x186eb9){return _0x186eb9?{'count':_0x1d7fd2,'rows':_0x186eb9}:null;}})[_0x5144('0x37')](respondWithResult(_0x44051a,null))[_0x5144('0x2b')](handleError(_0x44051a,null));};exports[_0x5144('0x7c')]=function(_0x4d07c9,_0xfe4601,_0x233785){return db[_0x5144('0x43')][_0x5144('0x67')]({'where':{'id':_0x4d07c9['params']['id']}})['then'](handleEntityNotFound(_0xfe4601,null))[_0x5144('0x37')](function(_0x382782){if(_0x382782){return db[_0x5144('0x7d')][_0x5144('0x7e')](function(_0x55aa1e){return db[_0x5144('0x7f')]['destroy']({'where':{'WhatsappAccountId':_0x4d07c9[_0x5144('0x63')]['id']},'transaction':_0x55aa1e})['then'](function(_0x561022){var _0x1db441=_[_0x5144('0x42')](_0x4d07c9[_0x5144('0x62')],function(_0xe6a7e8){_0xe6a7e8['WhatsappAccountId']=_0x4d07c9[_0x5144('0x63')]['id'];return _0xe6a7e8;});return db[_0x5144('0x7f')][_0x5144('0x80')](_0x1db441,{'transaction':_0x55aa1e});});})[_0x5144('0x37')](function(){return db['WhatsappApplication']['findAndCountAll']({'where':{'WhatsappAccountId':_0x4d07c9[_0x5144('0x63')]['id']},'order':_0x5144('0x81')});});}})[_0x5144('0x37')](respondWithResult(_0xfe4601,null))[_0x5144('0x2b')](handleError(_0xfe4601,null));};exports['getApplications']=function(_0x54673d,_0x2000ee,_0x8ca7e2){var _0x5150d4={};var _0x411336={};var _0x6c8d9;var _0x42fe52;return db[_0x5144('0x43')]['findOne']({'where':{'id':_0x54673d[_0x5144('0x63')]['id']}})[_0x5144('0x37')](handleEntityNotFound(_0x2000ee,null))[_0x5144('0x37')](function(_0x3ac696){if(_0x3ac696){_0x6c8d9=_0x3ac696;_0x411336[_0x5144('0x47')]=_[_0x5144('0x57')](db[_0x5144('0x7f')]['rawAttributes']);_0x411336['query']=_[_0x5144('0x57')](_0x54673d['query']);_0x411336['filters']=_[_0x5144('0x49')](_0x411336[_0x5144('0x47')],_0x411336['query']);_0x5150d4['attributes']=_[_0x5144('0x49')](_0x411336['model'],qs[_0x5144('0x4b')](_0x54673d[_0x5144('0x48')][_0x5144('0x4b')]));_0x5150d4[_0x5144('0x4a')]=_0x5150d4[_0x5144('0x4a')][_0x5144('0x58')]?_0x5150d4[_0x5144('0x4a')]:_0x411336[_0x5144('0x47')];_0x5150d4['order']=qs[_0x5144('0x4d')](_0x54673d['query'][_0x5144('0x4d')]);_0x5150d4[_0x5144('0x50')]=qs[_0x5144('0x4e')](_[_0x5144('0x6b')](_0x54673d['query'],_0x411336[_0x5144('0x4e')]));if(_0x54673d[_0x5144('0x48')][_0x5144('0x4f')]){_0x5150d4[_0x5144('0x50')]=_[_0x5144('0x51')](_0x5150d4['where'],{'$or':_[_0x5144('0x42')](_0x5150d4[_0x5144('0x4a')],function(_0x568cea){var _0x234f50={};_0x234f50[_0x568cea]={'$like':'%'+_0x54673d[_0x5144('0x48')][_0x5144('0x4f')]+'%'};return _0x234f50;})});}_0x5150d4=_['merge']({},_0x5150d4,_0x54673d[_0x5144('0x52')]);return _0x6c8d9[_0x5144('0x82')](_0x5150d4);}})[_0x5144('0x37')](function(_0x5fee45){if(_0x5fee45){_0x42fe52=_0x5fee45['length'];if(!_0x54673d[_0x5144('0x48')][_0x5144('0x69')](_0x5144('0x4c'))){_0x5150d4['limit']=qs['limit'](_0x54673d[_0x5144('0x48')][_0x5144('0x30')]);_0x5150d4[_0x5144('0x2e')]=qs[_0x5144('0x2e')](_0x54673d[_0x5144('0x48')][_0x5144('0x2e')]);}return _0x6c8d9[_0x5144('0x82')](_0x5150d4);}})[_0x5144('0x37')](function(_0x1105bc){if(_0x1105bc){return _0x1105bc?{'count':_0x42fe52,'rows':_0x1105bc}:null;}})[_0x5144('0x37')](respondWithResult(_0x2000ee,null))[_0x5144('0x2b')](handleError(_0x2000ee,null));};exports['notify']=function(_0x4ac76b,_0x4ab161,_0x46f635){var _0x23a955={'channel':_0x5144('0x83')};var _0x14ecbc=[];var _0x2c3808=[];var _0x47dab6={};return db[_0x5144('0x43')][_0x5144('0x5e')]({'where':{'id':_0x4ac76b[_0x5144('0x63')]['id']},'include':[{'model':db[_0x5144('0x7f')],'as':_0x5144('0x84')}]})[_0x5144('0x37')](handleEntityNotFound(_0x4ab161,null))[_0x5144('0x37')](function(_0x3b9f24){_0x23a955['account']=_0x3b9f24;_0x23a955[_0x5144('0x85')]=_['orderBy'](_0x3b9f24[_0x5144('0x84')],[_0x5144('0x81')],[_0x5144('0x86')]);if(_0x23a955[_0x5144('0x87')][_0x5144('0x84')]){delete _0x23a955['account'][_0x5144('0x84')];}return db['CmContact'][_0x5144('0x64')]();})[_0x5144('0x37')](function(_0x5b9aa3){if(!_0x5b9aa3){throw new db[(_0x5144('0x88'))][(_0x5144('0x89'))](_0x5144('0x8a'));}_0x14ecbc=_[_0x5144('0x8b')](_[_0x5144('0x57')](_0x5b9aa3),[_0x5144('0x8c'),'updatedAt']);_0x2c3808=_[_0x5144('0x8b')](_[_0x5144('0x57')](_0x5b9aa3),[_0x5144('0x8c'),_0x5144('0x8d'),_0x5144('0x8e'),'ListId']);_0x23a955[_0x5144('0x62')]={'mapKey':'mobile'};if(_0x23a955[_0x5144('0x87')][_0x5144('0x45')]&&_0x23a955[_0x5144('0x87')][_0x5144('0x45')]==='twilio'){_0x23a955[_0x5144('0x62')][_0x5144('0x8f')]=_0x4ac76b[_0x5144('0x62')][_0x5144('0x90')][_0x5144('0x91')]('whatsapp:','');_0x23a955[_0x5144('0x62')][_0x5144('0x62')]=_0x4ac76b[_0x5144('0x62')][_0x5144('0x92')];_0x23a955[_0x5144('0x62')][_0x5144('0x93')]=_0x4ac76b[_0x5144('0x62')][_0x5144('0x94')];}if(_0x23a955[_0x5144('0x62')]['id']){delete _0x23a955[_0x5144('0x62')]['id'];}if(_['isNil'](_0x23a955[_0x5144('0x62')][_0x5144('0x8f')])){throw new db[(_0x5144('0x88'))][(_0x5144('0x89'))](_0x5144('0x95'));}if(_['isNil'](_0x23a955[_0x5144('0x62')][_0x5144('0x62')])||_0x23a955[_0x5144('0x62')][_0x5144('0x62')]===''){throw new db[(_0x5144('0x88'))][(_0x5144('0x89'))](_0x5144('0x96'));}if(_[_0x5144('0x97')](_0x23a955[_0x5144('0x62')]['mapKey'])){throw new db['Sequelize'][(_0x5144('0x89'))](_0x5144('0x98')+_0x2c3808);}if(!_['includes'](_0x2c3808,_0x23a955[_0x5144('0x62')]['mapKey'])){throw new db['Sequelize'][(_0x5144('0x89'))](_0x5144('0x99')+_0x2c3808);}_0x47dab6[_0x23a955[_0x5144('0x62')][_0x5144('0x9a')]]=_0x23a955['body'][_0x5144('0x8f')];return db[_0x5144('0x9b')][_0x5144('0x5e')]({'where':{'id':_0x23a955[_0x5144('0x87')]['ListId']},'include':[{'model':db[_0x5144('0x9c')],'as':_0x5144('0x9d'),'where':_0x47dab6,'limit':0x1,'order':[[_0x5144('0x8d'),_0x5144('0x9e')]]}]});})[_0x5144('0x37')](handleEntityNotFound(_0x4ab161,null))[_0x5144('0x37')](function(_0xdf344a){if(_0xdf344a){_0x23a955['list']=_[_0x5144('0x73')](_0xdf344a,[_0x5144('0x9d')]);if(_0xdf344a['Contacts'][_0x5144('0x58')]){return _0xdf344a[_0x5144('0x9d')][0x0];}var _0x442144=_[_0x5144('0x1c')](_0x23a955[_0x5144('0x62')],{'firstName':_0x23a955[_0x5144('0x62')]['from'],'ListId':_0xdf344a['id']});_0x442144[_0x23a955['body'][_0x5144('0x9a')]]=_0x23a955[_0x5144('0x62')][_0x5144('0x8f')];return db[_0x5144('0x9c')][_0x5144('0x5a')](_0x442144,{'fields':_0x14ecbc,'raw':!![]});}})[_0x5144('0x37')](handleEntityNotFound(_0x4ab161,null))['then'](function(_0x4b755c){if(_0x4b755c){_0x23a955[_0x5144('0x9f')]=_0x4b755c;var _0x39ff6a={'ContactId':_0x4b755c['id'],'phone':_0x23a955[_0x5144('0x62')][_0x5144('0x8f')],'WhatsappAccountId':_0x4ac76b['params']['id']};var _0x545870={'ContactId':_0x4b755c['id'],'WhatsappAccountId':_0x4ac76b[_0x5144('0x63')]['id'],'closed':![]};return db[_0x5144('0xa0')][_0x5144('0x5e')]({'where':_0x545870})[_0x5144('0x37')](function(_0x3817f7){if(_0x3817f7){return[_0x3817f7,![]];}return db[_0x5144('0xa0')]['create'](_0x39ff6a)[_0x5144('0x37')](function(_0x4c8138){return[_0x4c8138,!![]];});});}})[_0x5144('0x74')](function(_0xb87a13,_0x296d82){_0x23a955[_0x5144('0xa1')]=_0xb87a13[_0x5144('0x39')]({'plain':!![]});_0x23a955[_0x5144('0xa1')][_0x5144('0xa2')]=![];if(_0x296d82){if(_0x23a955[_0x5144('0x87')][_0x5144('0xa3')]){_0x23a955['applications'][_0x5144('0xa4')]({'id':0x0,'priority':_0x23a955[_0x5144('0x85')][_0x5144('0x58')]+0x1,'app':_0x5144('0xa5'),'appdata':_0x5144('0xa6'),'interval':_0x5144('0xa7')});}_0x23a955[_0x5144('0xa1')][_0x5144('0xa2')]=!![];}return db[_0x5144('0xa8')][_0x5144('0x5a')]({'phone':_0x23a955['body'][_0x5144('0x8f')],'messageId':_0x23a955[_0x5144('0x62')][_0x5144('0x93')],'body':_0x23a955[_0x5144('0x62')][_0x5144('0x62')],'WhatsappAccountId':_0x4ac76b[_0x5144('0x63')]['id'],'WhatsappInteractionId':_0xb87a13['id'],'direction':'in','ContactId':_0xb87a13['ContactId'],'AttachmentId':_0x23a955[_0x5144('0x62')][_0x5144('0xa9')]});})[_0x5144('0x37')](function(_0x3015f4){_0x23a955[_0x5144('0x28')]=_0x3015f4;if(_0x23a955[_0x5144('0xa1')][_0x5144('0xaa')]){return db[_0x5144('0x7b')][_0x5144('0x5e')]({'attributes':['id','name'],'where':{'id':_0x23a955[_0x5144('0xa1')][_0x5144('0xaa')]}})['then'](function(_0x458669){if(_0x458669){_0x23a955[_0x5144('0x85')][_0x5144('0xab')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x458669[_0x5144('0x3d')]+','+(_0x23a955[_0x5144('0x87')][_0x5144('0xac')]||0xa),'interval':_0x5144('0xa7')});}return respondWithRpcPromise(_0x5144('0xad'),'startRouting',_0x23a955);});}return respondWithRpcPromise(_0x5144('0xad'),'startRouting',_0x23a955);})['then'](function(_0x5f1f47){if(_0x5f1f47){var _0x435f68=0xc8;var _0x376d51=_0x5144('0xae');logger['info'](_0x5144('0xaf'),_0x376d51,_0x435f68,'entity\x20found');logger[_0x5144('0xb0')](_0x5144('0xb1'),_0x376d51,_0x435f68,'entity\x20found',JSON[_0x5144('0xb2')](_0x5f1f47));if(_0x23a955['account']['type']===_0x5144('0xb3')){return _0x4ab161[_0x5144('0x2d')](_0x435f68)[_0x5144('0xb4')](_0x5144('0xb5'),_0x5144('0xb6'))[_0x5144('0x3e')]('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x4ab161[_0x5144('0x2d')](_0x435f68)[_0x5144('0x33')](_0x5f1f47);}}})['catch'](handleError(_0x4ab161,null));};exports['send']=function(_0x20882f,_0x5d60ba,_0x3b1dc4){var _0x16e50d,_0x2df132,_0x3f314d;if(_[_0x5144('0x97')](_0x20882f[_0x5144('0x62')][_0x5144('0x62')])||_0x20882f['body'][_0x5144('0x62')]===''){throw new db[(_0x5144('0x88'))][(_0x5144('0x89'))](_0x5144('0x96'));}if(_[_0x5144('0x97')](_0x20882f[_0x5144('0x62')]['to'])){throw new db[(_0x5144('0x88'))][(_0x5144('0x89'))](_0x5144('0xb7'));}_0x16e50d=_0x20882f[_0x5144('0x62')]['to'];return db[_0x5144('0x43')][_0x5144('0x5e')]({'where':{'id':_0x20882f['params']['id']},'include':[{'model':db[_0x5144('0x9b')],'as':_0x5144('0xb8'),'include':[{'model':db[_0x5144('0x9c')],'as':_0x5144('0x9d'),'where':{'mobile':_0x16e50d},'limit':0x1,'order':[[_0x5144('0x8d'),_0x5144('0x9e')]]}]}]})[_0x5144('0x37')](handleEntityNotFound(_0x5d60ba,null))[_0x5144('0x37')](function(_0x54fd0d){if(_0x54fd0d&&_0x54fd0d[_0x5144('0xb8')]){_0x2df132=_0x54fd0d[_0x5144('0x39')]({'plain':!![]});if(_0x2df132['List']&&_0x2df132[_0x5144('0xb8')][_0x5144('0x9d')][_0x5144('0x58')]){return _0x2df132[_0x5144('0xb8')]['Contacts'][0x0];}return db[_0x5144('0x9c')][_0x5144('0x5a')](_[_0x5144('0x1c')](_0x20882f[_0x5144('0x62')],{'firstName':_0x16e50d,'mobile':_0x16e50d,'phone':_0x16e50d,'ListId':_0x2df132[_0x5144('0xb9')]}));}})['then'](handleEntityNotFound(_0x5d60ba,null))[_0x5144('0x37')](function(_0x3449b0){if(_0x3449b0){_0x3f314d=_0x3449b0;return db[_0x5144('0xa0')][_0x5144('0x5e')]({'where':{'ContactId':_0x3f314d['id'],'closed':![],'WhatsappAccountId':_0x2df132['id']}})[_0x5144('0x37')](function(_0x5554b5){if(_0x5554b5){return[_0x5554b5,![]];}return db[_0x5144('0xa0')][_0x5144('0x5a')]({'UserId':_0x20882f[_0x5144('0x5b')]['id'],'ContactId':_0x3f314d['id'],'WhatsappAccountId':_0x2df132['id'],'phone':_0x16e50d,'firstMsgDirection':_0x5144('0xba'),'Messages':[_[_0x5144('0x51')](_0x20882f[_0x5144('0x62')],{'read':![],'body':_0x20882f[_0x5144('0x62')]['body'],'phone':_0x16e50d,'WhatsappAccountId':_0x2df132['id'],'UserId':_0x20882f['user']['id'],'ContactId':_0x3f314d['id']})]},{'include':[{'model':db['WhatsappMessage'],'as':_0x5144('0xbb')}]})[_0x5144('0x37')](function(_0x450c3e){return[_0x450c3e,!![]];});});}})[_0x5144('0x74')](function(_0x4cbc8b,_0x15c961){if(_0x15c961){return _0x4cbc8b;}return db[_0x5144('0xa8')][_0x5144('0x5a')](_['merge'](_0x20882f[_0x5144('0x62')],{'read':![],'body':_0x20882f[_0x5144('0x62')]['body'],'phone':_0x16e50d,'WhatsappAccountId':_0x2df132['id'],'WhatsappInteractionId':_0x4cbc8b['id'],'UserId':_0x20882f['user']['id'],'ContactId':_0x3f314d['id']}))[_0x5144('0x37')](function(_0x5c845c){_0x4cbc8b[_0x5144('0xbc')][_0x5144('0xbb')]=[];_0x4cbc8b[_0x5144('0xbc')]['Messages'][_0x5144('0xa4')](_0x5c845c[_0x5144('0xbc')]);return _0x4cbc8b;});})[_0x5144('0x37')](respondWithResult(_0x5d60ba,null))[_0x5144('0x2b')](handleError(_0x5d60ba,null));};
\ No newline at end of file
index ccb4f6f..bafa3e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f76=['hasOwnProperty','hook','events','../../mysqldb','save','update','emit'];(function(_0x575783,_0x4f66f6){var _0x1aeae0=function(_0x3e05cb){while(--_0x3e05cb){_0x575783['push'](_0x575783['shift']());}};_0x1aeae0(++_0x4f66f6);}(_0x7f76,0x72));var _0x67f7=function(_0x256f94,_0x17b546){_0x256f94=_0x256f94-0x0;var _0x3ecc67=_0x7f76[_0x256f94];return _0x3ecc67;};'use strict';var EventEmitter=require(_0x67f7('0x0'));var WhatsappAccount=require(_0x67f7('0x1'))['db']['WhatsappAccount'];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x67f7('0x2'),'afterUpdate':_0x67f7('0x3'),'afterDestroy':'remove'};function emitEvent(_0x3b775f){return function(_0x2ee9de,_0x2423df,_0x210a56){WhatsappAccountEvents[_0x67f7('0x4')](_0x3b775f+':'+_0x2ee9de['id'],_0x2ee9de);WhatsappAccountEvents['emit'](_0x3b775f,_0x2ee9de);_0x210a56(null);};}for(var e in events){if(events[_0x67f7('0x5')](e)){var event=events[e];WhatsappAccount[_0x67f7('0x6')](e,emitEvent(event));}}module['exports']=WhatsappAccountEvents;
\ No newline at end of file
+var _0xe857=['exports','../../mysqldb','setMaxListeners','save','remove','emit','hook'];(function(_0x395b58,_0x23518d){var _0x43c80a=function(_0x4f5687){while(--_0x4f5687){_0x395b58['push'](_0x395b58['shift']());}};_0x43c80a(++_0x23518d);}(_0xe857,0xa9));var _0x7e85=function(_0xe414ff,_0x1a3ddc){_0xe414ff=_0xe414ff-0x0;var _0x694aef=_0xe857[_0xe414ff];return _0x694aef;};'use strict';var EventEmitter=require('events');var WhatsappAccount=require(_0x7e85('0x0'))['db']['WhatsappAccount'];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x7e85('0x1')](0x0);var events={'afterCreate':_0x7e85('0x2'),'afterUpdate':'update','afterDestroy':_0x7e85('0x3')};function emitEvent(_0x212f22){return function(_0x38a5b3,_0x39ff55,_0x43ec4f){WhatsappAccountEvents[_0x7e85('0x4')](_0x212f22+':'+_0x38a5b3['id'],_0x38a5b3);WhatsappAccountEvents[_0x7e85('0x4')](_0x212f22,_0x38a5b3);_0x43ec4f(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappAccount[_0x7e85('0x5')](e,emitEvent(event));}}module[_0x7e85('0x6')]=WhatsappAccountEvents;
\ No newline at end of file
index 272387d..3110fa4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97fa=['bluebird','request-promise','path','rimraf','exports','WhatsappAccount','whatsapp_accounts','lodash','../../config/logger','api','moment'];(function(_0x1192a9,_0x2d53fd){var _0x5b1491=function(_0x26808e){while(--_0x26808e){_0x1192a9['push'](_0x1192a9['shift']());}};_0x5b1491(++_0x2d53fd);}(_0x97fa,0xcd));var _0xa97f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x97fa[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xa97f('0x0'));var util=require('util');var logger=require(_0xa97f('0x1'))(_0xa97f('0x2'));var moment=require(_0xa97f('0x3'));var BPromise=require(_0xa97f('0x4'));var rp=require(_0xa97f('0x5'));var fs=require('fs');var path=require(_0xa97f('0x6'));var rimraf=require(_0xa97f('0x7'));var config=require('../../config/environment');var attributes=require('./whatsappAccount.attributes');module[_0xa97f('0x8')]=function(_0x57b4f2,_0x354389){return _0x57b4f2['define'](_0xa97f('0x9'),attributes,{'tableName':_0xa97f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa431=['exports','define','WhatsappAccount','whatsapp_accounts','lodash','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./whatsappAccount.attributes'];(function(_0xa0c966,_0x9994e7){var _0x390b8a=function(_0x264fc6){while(--_0x264fc6){_0xa0c966['push'](_0xa0c966['shift']());}};_0x390b8a(++_0x9994e7);}(_0xa431,0x93));var _0x1a43=function(_0x3c1f28,_0x2f6f20){_0x3c1f28=_0x3c1f28-0x0;var _0x18f282=_0xa431[_0x3c1f28];return _0x18f282;};'use strict';var _=require(_0x1a43('0x0'));var util=require(_0x1a43('0x1'));var logger=require(_0x1a43('0x2'))(_0x1a43('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x1a43('0x4'));var fs=require('fs');var path=require(_0x1a43('0x5'));var rimraf=require(_0x1a43('0x6'));var config=require(_0x1a43('0x7'));var attributes=require(_0x1a43('0x8'));module[_0x1a43('0x9')]=function(_0x3cba39,_0x46b472){return _0x3cba39[_0x1a43('0xa')](_0x1a43('0xb'),attributes,{'tableName':_0x1a43('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 18ac9f6..2478de4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7174=['ShowWhatsappAccount','find','options','where','include','model','attributes','map','then','info','stringify','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','client','redis','defaults','socket.io-emitter','./whatsappAccount.socket','register','request','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','error','message','result'];(function(_0x46018d,_0x22c693){var _0x9fa6b4=function(_0x4f0478){while(--_0x4f0478){_0x46018d['push'](_0x46018d['shift']());}};_0x9fa6b4(++_0x22c693);}(_0x7174,0x182));var _0x4717=function(_0x22f9df,_0x111d4b){_0x22f9df=_0x22f9df-0x0;var _0x3e05cb=_0x7174[_0x22f9df];return _0x3e05cb;};'use strict';var _=require(_0x4717('0x0'));var util=require(_0x4717('0x1'));var moment=require('moment');var BPromise=require(_0x4717('0x2'));var rs=require(_0x4717('0x3'));var fs=require('fs');var Redis=require(_0x4717('0x4'));var db=require(_0x4717('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x4717('0x6'))('rpc');var config=require(_0x4717('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x4717('0x8')]['http']({'port':0x232a});config[_0x4717('0x9')]=_[_0x4717('0xa')](config[_0x4717('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x4717('0xb'))(new Redis(config[_0x4717('0x9')]));require(_0x4717('0xc'))[_0x4717('0xd')](socket);function respondWithRpcPromise(_0x283ef7,_0xdce1eb,_0x13a4d0){return new BPromise(function(_0x106c92,_0x58dbfe){return client[_0x4717('0xe')](_0x283ef7,_0x13a4d0)['then'](function(_0x41e5e7){logger['info'](_0x4717('0xf'),_0xdce1eb,_0x4717('0x10'));logger[_0x4717('0x11')](_0x4717('0x12'),_0xdce1eb,_0x4717('0x10'),JSON['stringify'](_0x41e5e7));if(_0x41e5e7[_0x4717('0x13')]){if(_0x41e5e7[_0x4717('0x13')]['code']===0x1f4){logger['error']('WhatsappAccount,\x20%s,\x20%s',_0xdce1eb,_0x41e5e7[_0x4717('0x13')][_0x4717('0x14')]);return _0x58dbfe(_0x41e5e7[_0x4717('0x13')][_0x4717('0x14')]);}logger[_0x4717('0x13')](_0x4717('0xf'),_0xdce1eb,_0x41e5e7['error'][_0x4717('0x14')]);return _0x106c92(_0x41e5e7[_0x4717('0x13')][_0x4717('0x14')]);}else{logger['info'](_0x4717('0xf'),_0xdce1eb,'request\x20sent');_0x106c92(_0x41e5e7[_0x4717('0x15')][_0x4717('0x14')]);}})['catch'](function(_0x523539){logger['error'](_0x4717('0xf'),_0xdce1eb,_0x523539);_0x58dbfe(_0x523539);});});}exports[_0x4717('0x16')]=function(_0x57b14f){var _0x1d03c4=this;return new Promise(function(_0x5c48eb,_0x141cdf){return db['WhatsappAccount'][_0x4717('0x17')]({'raw':_0x57b14f[_0x4717('0x18')]?_0x57b14f[_0x4717('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x57b14f[_0x4717('0x18')]?_0x57b14f['options'][_0x4717('0x19')]||null:null,'attributes':_0x57b14f['options']?_0x57b14f[_0x4717('0x18')]['attributes']||null:null,'include':_0x57b14f[_0x4717('0x18')]?_0x57b14f[_0x4717('0x18')]['include']?_['map'](_0x57b14f[_0x4717('0x18')][_0x4717('0x1a')],function(_0x5c0386){return{'model':db[_0x5c0386[_0x4717('0x1b')]],'as':_0x5c0386['as'],'attributes':_0x5c0386[_0x4717('0x1c')],'include':_0x5c0386[_0x4717('0x1a')]?_[_0x4717('0x1d')](_0x5c0386['include'],function(_0x59bc41){return{'model':db[_0x59bc41[_0x4717('0x1b')]],'as':_0x59bc41['as'],'attributes':_0x59bc41['attributes'],'include':_0x59bc41['include']?_[_0x4717('0x1d')](_0x59bc41[_0x4717('0x1a')],function(_0x35ba94){return{'model':db[_0x35ba94['model']],'as':_0x35ba94['as'],'attributes':_0x35ba94[_0x4717('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x4717('0x1e')](function(_0x29fd0a){logger[_0x4717('0x1f')](_0x4717('0x16'),_0x57b14f);logger['debug']('ShowWhatsappAccount',_0x57b14f,JSON[_0x4717('0x20')](_0x29fd0a));_0x5c48eb(_0x29fd0a);})[_0x4717('0x21')](function(_0x3138cd){logger[_0x4717('0x13')]('ShowWhatsappAccount',_0x3138cd[_0x4717('0x14')],_0x57b14f);_0x141cdf(_0x1d03c4[_0x4717('0x13')](0x1f4,_0x3138cd['message']));});});};
\ No newline at end of file
+var _0x2f75=['../../config/utils','../../config/logger','rpc','client','defaults','redis','./whatsappAccount.socket','register','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','ShowWhatsappAccount','find','options','raw','map','include','model','attributes','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x51adfc,_0x57ddae){var _0x5ee679=function(_0xf41425){while(--_0xf41425){_0x51adfc['push'](_0x51adfc['shift']());}};_0x5ee679(++_0x57ddae);}(_0x2f75,0x179));var _0x52f7=function(_0xb9abaf,_0x4080c){_0xb9abaf=_0xb9abaf-0x0;var _0x4f0255=_0x2f75[_0xb9abaf];return _0x4f0255;};'use strict';var _=require(_0x52f7('0x0'));var util=require(_0x52f7('0x1'));var moment=require(_0x52f7('0x2'));var BPromise=require(_0x52f7('0x3'));var rs=require(_0x52f7('0x4'));var fs=require('fs');var Redis=require(_0x52f7('0x5'));var db=require(_0x52f7('0x6'))['db'];var utils=require(_0x52f7('0x7'));var logger=require(_0x52f7('0x8'))(_0x52f7('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x52f7('0xa')]['http']({'port':0x232a});config['redis']=_[_0x52f7('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x52f7('0xc')]));require(_0x52f7('0xd'))[_0x52f7('0xe')](socket);function respondWithRpcPromise(_0x4cca56,_0x4fb1f3,_0x3e9d0e){return new BPromise(function(_0x12e617,_0x6cb669){return client['request'](_0x4cca56,_0x3e9d0e)[_0x52f7('0xf')](function(_0x4931a0){logger[_0x52f7('0x10')](_0x52f7('0x11'),_0x4fb1f3,_0x52f7('0x12'));logger[_0x52f7('0x13')](_0x52f7('0x14'),_0x4fb1f3,_0x52f7('0x12'),JSON[_0x52f7('0x15')](_0x4931a0));if(_0x4931a0[_0x52f7('0x16')]){if(_0x4931a0[_0x52f7('0x16')]['code']===0x1f4){logger['error'](_0x52f7('0x11'),_0x4fb1f3,_0x4931a0[_0x52f7('0x16')][_0x52f7('0x17')]);return _0x6cb669(_0x4931a0[_0x52f7('0x16')][_0x52f7('0x17')]);}logger[_0x52f7('0x16')](_0x52f7('0x11'),_0x4fb1f3,_0x4931a0['error'][_0x52f7('0x17')]);return _0x12e617(_0x4931a0[_0x52f7('0x16')]['message']);}else{logger[_0x52f7('0x10')](_0x52f7('0x11'),_0x4fb1f3,_0x52f7('0x12'));_0x12e617(_0x4931a0['result'][_0x52f7('0x17')]);}})['catch'](function(_0x3f4583){logger[_0x52f7('0x16')]('WhatsappAccount,\x20%s,\x20%s',_0x4fb1f3,_0x3f4583);_0x6cb669(_0x3f4583);});});}exports[_0x52f7('0x18')]=function(_0x6fe2c5){var _0x204730=this;return new Promise(function(_0xdcc34e,_0x1b3228){return db['WhatsappAccount'][_0x52f7('0x19')]({'raw':_0x6fe2c5['options']?_0x6fe2c5[_0x52f7('0x1a')][_0x52f7('0x1b')]===undefined?!![]:![]:!![],'where':_0x6fe2c5[_0x52f7('0x1a')]?_0x6fe2c5[_0x52f7('0x1a')]['where']||null:null,'attributes':_0x6fe2c5[_0x52f7('0x1a')]?_0x6fe2c5[_0x52f7('0x1a')]['attributes']||null:null,'include':_0x6fe2c5[_0x52f7('0x1a')]?_0x6fe2c5['options']['include']?_[_0x52f7('0x1c')](_0x6fe2c5[_0x52f7('0x1a')][_0x52f7('0x1d')],function(_0x4395b9){return{'model':db[_0x4395b9[_0x52f7('0x1e')]],'as':_0x4395b9['as'],'attributes':_0x4395b9[_0x52f7('0x1f')],'include':_0x4395b9['include']?_['map'](_0x4395b9[_0x52f7('0x1d')],function(_0x202172){return{'model':db[_0x202172[_0x52f7('0x1e')]],'as':_0x202172['as'],'attributes':_0x202172[_0x52f7('0x1f')],'include':_0x202172[_0x52f7('0x1d')]?_[_0x52f7('0x1c')](_0x202172[_0x52f7('0x1d')],function(_0x5936e2){return{'model':db[_0x5936e2[_0x52f7('0x1e')]],'as':_0x5936e2['as'],'attributes':_0x5936e2[_0x52f7('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3ca502){logger['info'](_0x52f7('0x18'),_0x6fe2c5);logger[_0x52f7('0x13')](_0x52f7('0x18'),_0x6fe2c5,JSON['stringify'](_0x3ca502));_0xdcc34e(_0x3ca502);})['catch'](function(_0x28b8fc){logger[_0x52f7('0x16')](_0x52f7('0x18'),_0x28b8fc['message'],_0x6fe2c5);_0x1b3228(_0x204730[_0x52f7('0x16')](0x1f4,_0x28b8fc[_0x52f7('0x17')]));});});};
\ No newline at end of file
index 483b51d..095702a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b2f=['length','./whatsappAccount.events','save','remove','update','emit','removeListener','register'];(function(_0x14f636,_0x1bde31){var _0x1411f1=function(_0x181cfc){while(--_0x181cfc){_0x14f636['push'](_0x14f636['shift']());}};_0x1411f1(++_0x1bde31);}(_0x5b2f,0x161));var _0xf5b2=function(_0x328bd3,_0x9cf5a5){_0x328bd3=_0x328bd3-0x0;var _0x458149=_0x5b2f[_0x328bd3];return _0x458149;};'use strict';var WhatsappAccountEvents=require(_0xf5b2('0x0'));var events=[_0xf5b2('0x1'),_0xf5b2('0x2'),_0xf5b2('0x3')];function createListener(_0x429ca3,_0x15f940){return function(_0x4eeb69){_0x15f940[_0xf5b2('0x4')](_0x429ca3,_0x4eeb69);};}function removeListener(_0x1ec8e7,_0x2262ea){return function(){WhatsappAccountEvents[_0xf5b2('0x5')](_0x1ec8e7,_0x2262ea);};}exports[_0xf5b2('0x6')]=function(_0x83c89e){for(var _0x1adf47=0x0,_0x148658=events[_0xf5b2('0x7')];_0x1adf47<_0x148658;_0x1adf47++){var _0x55a8a1=events[_0x1adf47];var _0x368fd6=createListener('whatsappAccount:'+_0x55a8a1,_0x83c89e);WhatsappAccountEvents['on'](_0x55a8a1,_0x368fd6);}};
\ No newline at end of file
+var _0x22fc=['emit','removeListener','register','length','save'];(function(_0x172a00,_0x504165){var _0x3e870d=function(_0x502d84){while(--_0x502d84){_0x172a00['push'](_0x172a00['shift']());}};_0x3e870d(++_0x504165);}(_0x22fc,0x1d0));var _0xc22f=function(_0x2bb80e,_0x25e5dd){_0x2bb80e=_0x2bb80e-0x0;var _0x12adfd=_0x22fc[_0x2bb80e];return _0x12adfd;};'use strict';var WhatsappAccountEvents=require('./whatsappAccount.events');var events=[_0xc22f('0x0'),'remove','update'];function createListener(_0x5066fa,_0x1a2a0c){return function(_0x3a2d5b){_0x1a2a0c[_0xc22f('0x1')](_0x5066fa,_0x3a2d5b);};}function removeListener(_0x244a94,_0x1ae7d7){return function(){WhatsappAccountEvents[_0xc22f('0x2')](_0x244a94,_0x1ae7d7);};}exports[_0xc22f('0x3')]=function(_0x3d73f9){for(var _0x490f8d=0x0,_0x1c4359=events[_0xc22f('0x4')];_0x490f8d<_0x1c4359;_0x490f8d++){var _0x101d1b=events[_0x490f8d];var _0x1ae226=createListener('whatsappAccount:'+_0x101d1b,_0x3d73f9);WhatsappAccountEvents['on'](_0x101d1b,_0x1ae226);}};
\ No newline at end of file
index b36e031..7c77082 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc7f=['delete','destroy','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappApplication.controller','isAuthenticated','index','get','/:id','post','create','put','update'];(function(_0x3b1c1d,_0x55f622){var _0x59f9a1=function(_0x1806f9){while(--_0x1806f9){_0x3b1c1d['push'](_0x3b1c1d['shift']());}};_0x59f9a1(++_0x55f622);}(_0xcc7f,0x11b));var _0xfcc7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcc7f[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0xfcc7('0x0'));var path=require(_0xfcc7('0x1'));var timeout=require('connect-timeout');var express=require(_0xfcc7('0x2'));var router=express[_0xfcc7('0x3')]();var fs_extra=require(_0xfcc7('0x4'));var auth=require(_0xfcc7('0x5'));var interaction=require(_0xfcc7('0x6'));var config=require(_0xfcc7('0x7'));var controller=require(_0xfcc7('0x8'));router['get']('/',auth[_0xfcc7('0x9')](),controller[_0xfcc7('0xa')]);router[_0xfcc7('0xb')](_0xfcc7('0xc'),auth['isAuthenticated'](),controller['show']);router[_0xfcc7('0xd')]('/',auth[_0xfcc7('0x9')](),controller[_0xfcc7('0xe')]);router[_0xfcc7('0xf')](_0xfcc7('0xc'),auth['isAuthenticated'](),controller[_0xfcc7('0x10')]);router[_0xfcc7('0x11')]('/:id',auth[_0xfcc7('0x9')](),controller[_0xfcc7('0x12')]);module[_0xfcc7('0x13')]=router;
\ No newline at end of file
+var _0x698d=['./whatsappApplication.controller','get','isAuthenticated','index','show','post','put','/:id','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x362510,_0x2bef8d){var _0x3a7871=function(_0x4f812a){while(--_0x4f812a){_0x362510['push'](_0x362510['shift']());}};_0x3a7871(++_0x2bef8d);}(_0x698d,0x1e6));var _0xd698=function(_0x5d61f5,_0x46fb73){_0x5d61f5=_0x5d61f5-0x0;var _0x5c1d95=_0x698d[_0x5d61f5];return _0x5c1d95;};'use strict';var multer=require('multer');var util=require(_0xd698('0x0'));var path=require(_0xd698('0x1'));var timeout=require(_0xd698('0x2'));var express=require(_0xd698('0x3'));var router=express[_0xd698('0x4')]();var fs_extra=require(_0xd698('0x5'));var auth=require(_0xd698('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xd698('0x7'));router[_0xd698('0x8')]('/',auth[_0xd698('0x9')](),controller[_0xd698('0xa')]);router[_0xd698('0x8')]('/:id',auth['isAuthenticated'](),controller[_0xd698('0xb')]);router[_0xd698('0xc')]('/',auth[_0xd698('0x9')](),controller['create']);router[_0xd698('0xd')](_0xd698('0xe'),auth['isAuthenticated'](),controller['update']);router[_0xd698('0xf')](_0xd698('0xe'),auth['isAuthenticated'](),controller['destroy']);module[_0xd698('0x10')]=router;
\ No newline at end of file
index fb29981..e642020 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d94=['sequelize','INTEGER','STRING','noop','TEXT','*,*,*,*'];(function(_0x1714a3,_0x1fc437){var _0x3d52fa=function(_0x2180af){while(--_0x2180af){_0x1714a3['push'](_0x1714a3['shift']());}};_0x3d52fa(++_0x1fc437);}(_0x0d94,0xc0));var _0x40d9=function(_0x52287e,_0x23d482){_0x52287e=_0x52287e-0x0;var _0x310844=_0x0d94[_0x52287e];return _0x310844;};'use strict';var Sequelize=require(_0x40d9('0x0'));module['exports']={'priority':{'type':Sequelize[_0x40d9('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x40d9('0x2')],'allowNull':![],'defaultValue':_0x40d9('0x3')},'appdata':{'type':Sequelize[_0x40d9('0x4')]()},'description':{'type':Sequelize[_0x40d9('0x2')]},'interval':{'type':Sequelize[_0x40d9('0x2')],'defaultValue':_0x40d9('0x5')}};
\ No newline at end of file
+var _0xdeaa=['INTEGER','STRING','TEXT','sequelize'];(function(_0xed0a4d,_0x258742){var _0x44cb6a=function(_0x1989f4){while(--_0x1989f4){_0xed0a4d['push'](_0xed0a4d['shift']());}};_0x44cb6a(++_0x258742);}(_0xdeaa,0x7b));var _0xadea=function(_0x415aaa,_0x467767){_0x415aaa=_0x415aaa-0x0;var _0x5ea7b2=_0xdeaa[_0x415aaa];return _0x5ea7b2;};'use strict';var Sequelize=require(_0xadea('0x0'));module['exports']={'priority':{'type':Sequelize[_0xadea('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0xadea('0x2')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0xadea('0x3')]()},'description':{'type':Sequelize[_0xadea('0x2')]},'interval':{'type':Sequelize[_0xadea('0x2')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 0af5501..a6f3303 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf846=['sendStatus','end','json','undefined','limit','count','offset','status','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','WhatsappApplication','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','params','rawAttributes','find','catch','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','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'];(function(_0x508438,_0x5ef19d){var _0x541024=function(_0x573032){while(--_0x573032){_0x508438['push'](_0x508438['shift']());}};_0x541024(++_0x5ef19d);}(_0xf846,0x85));var _0x6f84=function(_0x34951a,_0x1f28b2){_0x34951a=_0x34951a-0x0;var _0x3019cf=_0xf846[_0x34951a];return _0x3019cf;};'use strict';var emlformat=require(_0x6f84('0x0'));var rimraf=require(_0x6f84('0x1'));var zipdir=require(_0x6f84('0x2'));var jsonpatch=require(_0x6f84('0x3'));var rp=require('request-promise');var moment=require(_0x6f84('0x4'));var BPromise=require(_0x6f84('0x5'));var Mustache=require(_0x6f84('0x6'));var util=require(_0x6f84('0x7'));var path=require('path');var sox=require(_0x6f84('0x8'));var csv=require(_0x6f84('0x9'));var ejs=require(_0x6f84('0xa'));var fs=require('fs');var fs_extra=require(_0x6f84('0xb'));var _=require(_0x6f84('0xc'));var squel=require(_0x6f84('0xd'));var crypto=require('crypto');var jsforce=require(_0x6f84('0xe'));var deskjs=require(_0x6f84('0xf'));var toCsv=require(_0x6f84('0x9'));var querystring=require('querystring');var Papa=require(_0x6f84('0x10'));var Redis=require(_0x6f84('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x6f84('0x12'));var as=require(_0x6f84('0x13'));var hardwareService=require(_0x6f84('0x14'));var logger=require(_0x6f84('0x15'))(_0x6f84('0x16'));var utils=require(_0x6f84('0x17'));var config=require(_0x6f84('0x18'));var licenseUtil=require(_0x6f84('0x19'));var db=require(_0x6f84('0x1a'))['db'];function respondWithStatusCode(_0x3c2810,_0x1fc892){_0x1fc892=_0x1fc892||0xcc;return function(_0x502d4e){if(_0x502d4e){return _0x3c2810[_0x6f84('0x1b')](_0x1fc892);}return _0x3c2810['status'](_0x1fc892)[_0x6f84('0x1c')]();};}function respondWithResult(_0x342271,_0x505456){_0x505456=_0x505456||0xc8;return function(_0x400ec0){if(_0x400ec0){return _0x342271['status'](_0x505456)[_0x6f84('0x1d')](_0x400ec0);}};}function respondWithFilteredResult(_0x4a1844,_0x528782){return function(_0x4e77a0){if(_0x4e77a0){var _0x9c62fc=typeof _0x528782['offset']===_0x6f84('0x1e')&&typeof _0x528782[_0x6f84('0x1f')]===_0x6f84('0x1e');var _0x4290c5=_0x4e77a0[_0x6f84('0x20')];var _0x2abc28=_0x9c62fc?0x0:_0x528782['offset'];var _0x2b91ad=_0x9c62fc?_0x4e77a0['count']:_0x528782[_0x6f84('0x21')]+_0x528782[_0x6f84('0x1f')];var _0x3712d0;if(_0x2b91ad>=_0x4290c5){_0x2b91ad=_0x4290c5;_0x3712d0=0xc8;}else{_0x3712d0=0xce;}_0x4a1844[_0x6f84('0x22')](_0x3712d0);return _0x4a1844[_0x6f84('0x23')](_0x6f84('0x24'),_0x2abc28+'-'+_0x2b91ad+'/'+_0x4290c5)[_0x6f84('0x1d')](_0x4e77a0);}return null;};}function patchUpdates(_0x56dd3a){return function(_0x545ed6){try{jsonpatch[_0x6f84('0x25')](_0x545ed6,_0x56dd3a,!![]);}catch(_0x584feb){return BPromise[_0x6f84('0x26')](_0x584feb);}return _0x545ed6[_0x6f84('0x27')]();};}function saveUpdates(_0x307361,_0x158220){return function(_0x3465e3){if(_0x3465e3){return _0x3465e3[_0x6f84('0x28')](_0x307361)[_0x6f84('0x29')](function(_0x364972){return _0x364972;});}return null;};}function removeEntity(_0x145604,_0x512320){return function(_0x12a642){if(_0x12a642){return _0x12a642['destroy']()[_0x6f84('0x29')](function(){_0x145604[_0x6f84('0x22')](0xcc)[_0x6f84('0x1c')]();});}};}function handleEntityNotFound(_0x430fb7,_0x3627e8){return function(_0x30014e){if(!_0x30014e){_0x430fb7[_0x6f84('0x1b')](0x194);}return _0x30014e;};}function handleError(_0x9bd17d,_0x3a1327){_0x3a1327=_0x3a1327||0x1f4;return function(_0x31badd){logger[_0x6f84('0x2a')](_0x31badd[_0x6f84('0x2b')]);if(_0x31badd[_0x6f84('0x2c')]){delete _0x31badd[_0x6f84('0x2c')];}_0x9bd17d[_0x6f84('0x22')](_0x3a1327)[_0x6f84('0x2d')](_0x31badd);};}exports[_0x6f84('0x2e')]=function(_0x4fa5da,_0x16cab0){var _0x425d16={},_0x13d6f1={},_0x4a4a4f={'count':0x0,'rows':[]};var _0x4d3469=_[_0x6f84('0x2f')](db[_0x6f84('0x30')]['rawAttributes'],function(_0x261b49){return{'name':_0x261b49[_0x6f84('0x31')],'type':_0x261b49[_0x6f84('0x32')][_0x6f84('0x33')]};});_0x13d6f1['model']=_[_0x6f84('0x2f')](_0x4d3469,_0x6f84('0x2c'));_0x13d6f1[_0x6f84('0x34')]=_[_0x6f84('0x35')](_0x4fa5da['query']);_0x13d6f1[_0x6f84('0x36')]=_[_0x6f84('0x37')](_0x13d6f1[_0x6f84('0x38')],_0x13d6f1[_0x6f84('0x34')]);_0x425d16[_0x6f84('0x39')]=_[_0x6f84('0x37')](_0x13d6f1[_0x6f84('0x38')],qs[_0x6f84('0x3a')](_0x4fa5da[_0x6f84('0x34')][_0x6f84('0x3a')]));_0x425d16[_0x6f84('0x39')]=_0x425d16['attributes'][_0x6f84('0x3b')]?_0x425d16[_0x6f84('0x39')]:_0x13d6f1[_0x6f84('0x38')];if(!_0x4fa5da[_0x6f84('0x34')][_0x6f84('0x3c')]('nolimit')){_0x425d16[_0x6f84('0x1f')]=qs['limit'](_0x4fa5da[_0x6f84('0x34')][_0x6f84('0x1f')]);_0x425d16[_0x6f84('0x21')]=qs[_0x6f84('0x21')](_0x4fa5da[_0x6f84('0x34')][_0x6f84('0x21')]);}_0x425d16[_0x6f84('0x3d')]=qs[_0x6f84('0x3e')](_0x4fa5da[_0x6f84('0x34')][_0x6f84('0x3e')]);_0x425d16[_0x6f84('0x3f')]=qs[_0x6f84('0x36')](_[_0x6f84('0x40')](_0x4fa5da[_0x6f84('0x34')],_0x13d6f1[_0x6f84('0x36')]),_0x4d3469);if(_0x4fa5da[_0x6f84('0x34')][_0x6f84('0x41')]){_0x425d16['where']=_[_0x6f84('0x42')](_0x425d16[_0x6f84('0x3f')],{'$or':_['map'](_0x4d3469,function(_0x9dd9c5){if(_0x9dd9c5[_0x6f84('0x32')]!=='VIRTUAL'){var _0x18d750={};_0x18d750[_0x9dd9c5[_0x6f84('0x2c')]]={'$like':'%'+_0x4fa5da['query']['filter']+'%'};return _0x18d750;}})});}_0x425d16=_[_0x6f84('0x42')]({},_0x425d16,_0x4fa5da[_0x6f84('0x43')]);var _0x4d07d3={'where':_0x425d16['where']};return db[_0x6f84('0x30')][_0x6f84('0x20')](_0x4d07d3)[_0x6f84('0x29')](function(_0x1197d9){_0x4a4a4f[_0x6f84('0x20')]=_0x1197d9;if(_0x4fa5da['query'][_0x6f84('0x44')]){_0x425d16[_0x6f84('0x45')]=[{'all':!![]}];}return db[_0x6f84('0x30')][_0x6f84('0x46')](_0x425d16);})[_0x6f84('0x29')](function(_0x298716){_0x4a4a4f[_0x6f84('0x47')]=_0x298716;return _0x4a4a4f;})[_0x6f84('0x29')](respondWithFilteredResult(_0x16cab0,_0x425d16))['catch'](handleError(_0x16cab0,null));};exports[_0x6f84('0x48')]=function(_0x58e2f6,_0x12c8f3){var _0x452ef3={'raw':!![],'where':{'id':_0x58e2f6[_0x6f84('0x49')]['id']}},_0x26efdc={};_0x26efdc['model']=_[_0x6f84('0x35')](db[_0x6f84('0x30')][_0x6f84('0x4a')]);_0x26efdc['query']=_[_0x6f84('0x35')](_0x58e2f6[_0x6f84('0x34')]);_0x26efdc[_0x6f84('0x36')]=_['intersection'](_0x26efdc[_0x6f84('0x38')],_0x26efdc[_0x6f84('0x34')]);_0x452ef3[_0x6f84('0x39')]=_['intersection'](_0x26efdc['model'],qs['fields'](_0x58e2f6['query']['fields']));_0x452ef3[_0x6f84('0x39')]=_0x452ef3[_0x6f84('0x39')][_0x6f84('0x3b')]?_0x452ef3[_0x6f84('0x39')]:_0x26efdc[_0x6f84('0x38')];if(_0x58e2f6[_0x6f84('0x34')][_0x6f84('0x44')]){_0x452ef3[_0x6f84('0x45')]=[{'all':!![]}];}_0x452ef3=_['merge']({},_0x452ef3,_0x58e2f6[_0x6f84('0x43')]);return db[_0x6f84('0x30')][_0x6f84('0x4b')](_0x452ef3)[_0x6f84('0x29')](handleEntityNotFound(_0x12c8f3,null))[_0x6f84('0x29')](respondWithResult(_0x12c8f3,null))[_0x6f84('0x4c')](handleError(_0x12c8f3,null));};exports[_0x6f84('0x4d')]=function(_0x17659b,_0x13dba5){return db[_0x6f84('0x30')]['create'](_0x17659b[_0x6f84('0x4e')],{})[_0x6f84('0x29')](respondWithResult(_0x13dba5,0xc9))[_0x6f84('0x4c')](handleError(_0x13dba5,null));};exports[_0x6f84('0x28')]=function(_0x6065a6,_0x10b882){if(_0x6065a6['body']['id']){delete _0x6065a6[_0x6f84('0x4e')]['id'];}return db[_0x6f84('0x30')][_0x6f84('0x4b')]({'where':{'id':_0x6065a6[_0x6f84('0x49')]['id']}})[_0x6f84('0x29')](handleEntityNotFound(_0x10b882,null))[_0x6f84('0x29')](saveUpdates(_0x6065a6[_0x6f84('0x4e')],null))[_0x6f84('0x29')](respondWithResult(_0x10b882,null))[_0x6f84('0x4c')](handleError(_0x10b882,null));};exports[_0x6f84('0x4f')]=function(_0x36938e,_0x42e801){return db['WhatsappApplication'][_0x6f84('0x4b')]({'where':{'id':_0x36938e[_0x6f84('0x49')]['id']}})[_0x6f84('0x29')](handleEntityNotFound(_0x42e801,null))[_0x6f84('0x29')](removeEntity(_0x42e801,null))[_0x6f84('0x4c')](handleError(_0x42e801,null));};
\ No newline at end of file
+var _0xdab3=['nolimit','sort','pick','where','merge','VIRTUAL','filter','includeAll','include','show','params','find','catch','create','update','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','then','destroy','error','name','send','map','WhatsappApplication','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty'];(function(_0x5b5781,_0x1f8aae){var _0x21f9be=function(_0x3fed7d){while(--_0x3fed7d){_0x5b5781['push'](_0x5b5781['shift']());}};_0x21f9be(++_0x1f8aae);}(_0xdab3,0xeb));var _0x3dab=function(_0x3a0b4a,_0x15a99c){_0x3a0b4a=_0x3a0b4a-0x0;var _0x3a1e2a=_0xdab3[_0x3a0b4a];return _0x3a1e2a;};'use strict';var emlformat=require(_0x3dab('0x0'));var rimraf=require(_0x3dab('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3dab('0x2'));var rp=require(_0x3dab('0x3'));var moment=require(_0x3dab('0x4'));var BPromise=require(_0x3dab('0x5'));var Mustache=require(_0x3dab('0x6'));var util=require(_0x3dab('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x3dab('0x8'));var ejs=require(_0x3dab('0x9'));var fs=require('fs');var fs_extra=require(_0x3dab('0xa'));var _=require(_0x3dab('0xb'));var squel=require(_0x3dab('0xc'));var crypto=require(_0x3dab('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x3dab('0xe'));var toCsv=require(_0x3dab('0x8'));var querystring=require(_0x3dab('0xf'));var Papa=require(_0x3dab('0x10'));var Redis=require(_0x3dab('0x11'));var authService=require(_0x3dab('0x12'));var qs=require(_0x3dab('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3dab('0x14'));var logger=require(_0x3dab('0x15'))(_0x3dab('0x16'));var utils=require(_0x3dab('0x17'));var config=require(_0x3dab('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1556d6,_0x36196f){_0x36196f=_0x36196f||0xcc;return function(_0x302eec){if(_0x302eec){return _0x1556d6[_0x3dab('0x19')](_0x36196f);}return _0x1556d6[_0x3dab('0x1a')](_0x36196f)[_0x3dab('0x1b')]();};}function respondWithResult(_0x1e9dcb,_0xb44734){_0xb44734=_0xb44734||0xc8;return function(_0x54bf6e){if(_0x54bf6e){return _0x1e9dcb[_0x3dab('0x1a')](_0xb44734)[_0x3dab('0x1c')](_0x54bf6e);}};}function respondWithFilteredResult(_0x5b0784,_0x1bd550){return function(_0x60120a){if(_0x60120a){var _0x55cb0a=typeof _0x1bd550['offset']===_0x3dab('0x1d')&&typeof _0x1bd550[_0x3dab('0x1e')]===_0x3dab('0x1d');var _0x367942=_0x60120a[_0x3dab('0x1f')];var _0x4f71e1=_0x55cb0a?0x0:_0x1bd550[_0x3dab('0x20')];var _0x2cca19=_0x55cb0a?_0x60120a['count']:_0x1bd550[_0x3dab('0x20')]+_0x1bd550[_0x3dab('0x1e')];var _0x43961e;if(_0x2cca19>=_0x367942){_0x2cca19=_0x367942;_0x43961e=0xc8;}else{_0x43961e=0xce;}_0x5b0784[_0x3dab('0x1a')](_0x43961e);return _0x5b0784['set'](_0x3dab('0x21'),_0x4f71e1+'-'+_0x2cca19+'/'+_0x367942)[_0x3dab('0x1c')](_0x60120a);}return null;};}function patchUpdates(_0xfb3bc0){return function(_0x21bda4){try{jsonpatch[_0x3dab('0x22')](_0x21bda4,_0xfb3bc0,!![]);}catch(_0x220247){return BPromise[_0x3dab('0x23')](_0x220247);}return _0x21bda4[_0x3dab('0x24')]();};}function saveUpdates(_0x471dd5,_0x4ae9ee){return function(_0x29d21a){if(_0x29d21a){return _0x29d21a['update'](_0x471dd5)[_0x3dab('0x25')](function(_0x23f69a){return _0x23f69a;});}return null;};}function removeEntity(_0x420de0,_0x227c86){return function(_0x39b741){if(_0x39b741){return _0x39b741[_0x3dab('0x26')]()['then'](function(){_0x420de0['status'](0xcc)[_0x3dab('0x1b')]();});}};}function handleEntityNotFound(_0x10f848,_0x4f96aa){return function(_0x21880a){if(!_0x21880a){_0x10f848[_0x3dab('0x19')](0x194);}return _0x21880a;};}function handleError(_0x240c59,_0x151806){_0x151806=_0x151806||0x1f4;return function(_0x5acc7b){logger[_0x3dab('0x27')](_0x5acc7b['stack']);if(_0x5acc7b[_0x3dab('0x28')]){delete _0x5acc7b[_0x3dab('0x28')];}_0x240c59[_0x3dab('0x1a')](_0x151806)[_0x3dab('0x29')](_0x5acc7b);};}exports['index']=function(_0x4e562c,_0x36f834){var _0x5bfe9e={},_0x483bce={},_0x5b6026={'count':0x0,'rows':[]};var _0x56b1d6=_[_0x3dab('0x2a')](db[_0x3dab('0x2b')][_0x3dab('0x2c')],function(_0x42c7e3){return{'name':_0x42c7e3[_0x3dab('0x2d')],'type':_0x42c7e3[_0x3dab('0x2e')][_0x3dab('0x2f')]};});_0x483bce[_0x3dab('0x30')]=_[_0x3dab('0x2a')](_0x56b1d6,_0x3dab('0x28'));_0x483bce[_0x3dab('0x31')]=_[_0x3dab('0x32')](_0x4e562c[_0x3dab('0x31')]);_0x483bce[_0x3dab('0x33')]=_[_0x3dab('0x34')](_0x483bce[_0x3dab('0x30')],_0x483bce[_0x3dab('0x31')]);_0x5bfe9e[_0x3dab('0x35')]=_[_0x3dab('0x34')](_0x483bce[_0x3dab('0x30')],qs['fields'](_0x4e562c['query'][_0x3dab('0x36')]));_0x5bfe9e['attributes']=_0x5bfe9e[_0x3dab('0x35')][_0x3dab('0x37')]?_0x5bfe9e['attributes']:_0x483bce[_0x3dab('0x30')];if(!_0x4e562c[_0x3dab('0x31')][_0x3dab('0x38')](_0x3dab('0x39'))){_0x5bfe9e['limit']=qs['limit'](_0x4e562c[_0x3dab('0x31')]['limit']);_0x5bfe9e[_0x3dab('0x20')]=qs[_0x3dab('0x20')](_0x4e562c[_0x3dab('0x31')]['offset']);}_0x5bfe9e['order']=qs[_0x3dab('0x3a')](_0x4e562c[_0x3dab('0x31')][_0x3dab('0x3a')]);_0x5bfe9e['where']=qs[_0x3dab('0x33')](_[_0x3dab('0x3b')](_0x4e562c[_0x3dab('0x31')],_0x483bce[_0x3dab('0x33')]),_0x56b1d6);if(_0x4e562c[_0x3dab('0x31')]['filter']){_0x5bfe9e[_0x3dab('0x3c')]=_[_0x3dab('0x3d')](_0x5bfe9e[_0x3dab('0x3c')],{'$or':_[_0x3dab('0x2a')](_0x56b1d6,function(_0x8aef25){if(_0x8aef25[_0x3dab('0x2e')]!==_0x3dab('0x3e')){var _0x4bba15={};_0x4bba15[_0x8aef25[_0x3dab('0x28')]]={'$like':'%'+_0x4e562c[_0x3dab('0x31')][_0x3dab('0x3f')]+'%'};return _0x4bba15;}})});}_0x5bfe9e=_['merge']({},_0x5bfe9e,_0x4e562c['options']);var _0x240ae0={'where':_0x5bfe9e[_0x3dab('0x3c')]};return db[_0x3dab('0x2b')][_0x3dab('0x1f')](_0x240ae0)['then'](function(_0x2409ab){_0x5b6026[_0x3dab('0x1f')]=_0x2409ab;if(_0x4e562c[_0x3dab('0x31')][_0x3dab('0x40')]){_0x5bfe9e[_0x3dab('0x41')]=[{'all':!![]}];}return db[_0x3dab('0x2b')]['findAll'](_0x5bfe9e);})[_0x3dab('0x25')](function(_0x4a4153){_0x5b6026['rows']=_0x4a4153;return _0x5b6026;})[_0x3dab('0x25')](respondWithFilteredResult(_0x36f834,_0x5bfe9e))['catch'](handleError(_0x36f834,null));};exports[_0x3dab('0x42')]=function(_0x36e095,_0x2652e3){var _0x5d00cf={'raw':!![],'where':{'id':_0x36e095[_0x3dab('0x43')]['id']}},_0xf0bc93={};_0xf0bc93[_0x3dab('0x30')]=_[_0x3dab('0x32')](db[_0x3dab('0x2b')][_0x3dab('0x2c')]);_0xf0bc93[_0x3dab('0x31')]=_['keys'](_0x36e095[_0x3dab('0x31')]);_0xf0bc93['filters']=_[_0x3dab('0x34')](_0xf0bc93[_0x3dab('0x30')],_0xf0bc93[_0x3dab('0x31')]);_0x5d00cf['attributes']=_[_0x3dab('0x34')](_0xf0bc93[_0x3dab('0x30')],qs['fields'](_0x36e095['query'][_0x3dab('0x36')]));_0x5d00cf[_0x3dab('0x35')]=_0x5d00cf[_0x3dab('0x35')][_0x3dab('0x37')]?_0x5d00cf[_0x3dab('0x35')]:_0xf0bc93[_0x3dab('0x30')];if(_0x36e095[_0x3dab('0x31')][_0x3dab('0x40')]){_0x5d00cf[_0x3dab('0x41')]=[{'all':!![]}];}_0x5d00cf=_['merge']({},_0x5d00cf,_0x36e095['options']);return db['WhatsappApplication'][_0x3dab('0x44')](_0x5d00cf)[_0x3dab('0x25')](handleEntityNotFound(_0x2652e3,null))['then'](respondWithResult(_0x2652e3,null))[_0x3dab('0x45')](handleError(_0x2652e3,null));};exports[_0x3dab('0x46')]=function(_0x1137ec,_0x465819){return db[_0x3dab('0x2b')][_0x3dab('0x46')](_0x1137ec['body'],{})[_0x3dab('0x25')](respondWithResult(_0x465819,0xc9))['catch'](handleError(_0x465819,null));};exports[_0x3dab('0x47')]=function(_0x396e5e,_0x2341cd){if(_0x396e5e[_0x3dab('0x48')]['id']){delete _0x396e5e['body']['id'];}return db[_0x3dab('0x2b')][_0x3dab('0x44')]({'where':{'id':_0x396e5e[_0x3dab('0x43')]['id']}})[_0x3dab('0x25')](handleEntityNotFound(_0x2341cd,null))['then'](saveUpdates(_0x396e5e[_0x3dab('0x48')],null))[_0x3dab('0x25')](respondWithResult(_0x2341cd,null))[_0x3dab('0x45')](handleError(_0x2341cd,null));};exports[_0x3dab('0x26')]=function(_0x7c9bc6,_0x5cda6c){return db[_0x3dab('0x2b')]['find']({'where':{'id':_0x7c9bc6[_0x3dab('0x43')]['id']}})[_0x3dab('0x25')](handleEntityNotFound(_0x5cda6c,null))[_0x3dab('0x25')](removeEntity(_0x5cda6c,null))['catch'](handleError(_0x5cda6c,null));};
\ No newline at end of file
index f812957..262ed7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c32=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappApplication.attributes','exports','define','WhatsappApplication','whatsapp_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util'];(function(_0x4c172f,_0x4cf52){var _0x4f7eed=function(_0x1316c2){while(--_0x1316c2){_0x4c172f['push'](_0x4c172f['shift']());}};_0x4f7eed(++_0x4cf52);}(_0x8c32,0x130));var _0x28c3=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x8c32[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0x28c3('0x0'));var util=require(_0x28c3('0x1'));var logger=require(_0x28c3('0x2'))(_0x28c3('0x3'));var moment=require(_0x28c3('0x4'));var BPromise=require(_0x28c3('0x5'));var rp=require(_0x28c3('0x6'));var fs=require('fs');var path=require(_0x28c3('0x7'));var rimraf=require(_0x28c3('0x8'));var config=require(_0x28c3('0x9'));var attributes=require(_0x28c3('0xa'));module[_0x28c3('0xb')]=function(_0x537b4f,_0x2861c9){return _0x537b4f[_0x28c3('0xc')](_0x28c3('0xd'),attributes,{'tableName':_0x28c3('0xe'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x28c3('0xf'),'collate':_0x28c3('0x10')});};
\ No newline at end of file
+var _0x4491=['path','rimraf','../../config/environment','exports','define','WhatsappApplication','whatsapp_applications','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','moment','bluebird','request-promise'];(function(_0x59591b,_0x354045){var _0x576642=function(_0x12d1ce){while(--_0x12d1ce){_0x59591b['push'](_0x59591b['shift']());}};_0x576642(++_0x354045);}(_0x4491,0x1bb));var _0x1449=function(_0x58fb4f,_0x575aa6){_0x58fb4f=_0x58fb4f-0x0;var _0x3b9efa=_0x4491[_0x58fb4f];return _0x3b9efa;};'use strict';var _=require(_0x1449('0x0'));var util=require('util');var logger=require(_0x1449('0x1'))('api');var moment=require(_0x1449('0x2'));var BPromise=require(_0x1449('0x3'));var rp=require(_0x1449('0x4'));var fs=require('fs');var path=require(_0x1449('0x5'));var rimraf=require(_0x1449('0x6'));var config=require(_0x1449('0x7'));var attributes=require('./whatsappApplication.attributes');module[_0x1449('0x8')]=function(_0x557482,_0x1d45eb){return _0x557482[_0x1449('0x9')](_0x1449('0xa'),attributes,{'tableName':_0x1449('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x1449('0xc'),'collate':_0x1449('0xd')});};
\ No newline at end of file
index ca9d4ad..a6187fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8a8=['stringify','error','code','WhatsappApplication,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug'];(function(_0x17c04f,_0x2cf720){var _0x3af082=function(_0x42da63){while(--_0x42da63){_0x17c04f['push'](_0x17c04f['shift']());}};_0x3af082(++_0x2cf720);}(_0xa8a8,0xec));var _0x8a8a=function(_0x22fcd9,_0x45f342){_0x22fcd9=_0x22fcd9-0x0;var _0x4e14cd=_0xa8a8[_0x22fcd9];return _0x4e14cd;};'use strict';var _=require(_0x8a8a('0x0'));var util=require(_0x8a8a('0x1'));var moment=require(_0x8a8a('0x2'));var BPromise=require(_0x8a8a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8a8a('0x4'));var db=require(_0x8a8a('0x5'))['db'];var utils=require(_0x8a8a('0x6'));var logger=require(_0x8a8a('0x7'))(_0x8a8a('0x8'));var config=require(_0x8a8a('0x9'));var jayson=require(_0x8a8a('0xa'));var client=jayson[_0x8a8a('0xb')][_0x8a8a('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x315fe9,_0x1d7121,_0x8e7aa0){return new BPromise(function(_0x4225b9,_0xecaa6f){return client[_0x8a8a('0xd')](_0x315fe9,_0x8e7aa0)['then'](function(_0x576ef9){logger[_0x8a8a('0xe')]('WhatsappApplication,\x20%s,\x20%s',_0x1d7121,_0x8a8a('0xf'));logger[_0x8a8a('0x10')]('WhatsappApplication,\x20%s,\x20%s,\x20%s',_0x1d7121,_0x8a8a('0xf'),JSON[_0x8a8a('0x11')](_0x576ef9));if(_0x576ef9[_0x8a8a('0x12')]){if(_0x576ef9['error'][_0x8a8a('0x13')]===0x1f4){logger[_0x8a8a('0x12')](_0x8a8a('0x14'),_0x1d7121,_0x576ef9[_0x8a8a('0x12')]['message']);return _0xecaa6f(_0x576ef9[_0x8a8a('0x12')]['message']);}logger[_0x8a8a('0x12')](_0x8a8a('0x14'),_0x1d7121,_0x576ef9[_0x8a8a('0x12')][_0x8a8a('0x15')]);return _0x4225b9(_0x576ef9[_0x8a8a('0x12')][_0x8a8a('0x15')]);}else{logger[_0x8a8a('0xe')]('WhatsappApplication,\x20%s,\x20%s',_0x1d7121,_0x8a8a('0xf'));_0x4225b9(_0x576ef9['result'][_0x8a8a('0x15')]);}})[_0x8a8a('0x16')](function(_0x46a4f4){logger[_0x8a8a('0x12')](_0x8a8a('0x14'),_0x1d7121,_0x46a4f4);_0xecaa6f(_0x46a4f4);});});}
\ 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','WhatsappApplication,\x20%s,\x20%s','message','catch','util'];(function(_0x500fae,_0x9be8cf){var _0x2957dd=function(_0x35965f){while(--_0x35965f){_0x500fae['push'](_0x500fae['shift']());}};_0x2957dd(++_0x9be8cf);}(_0xedd9,0xfc));var _0x9edd=function(_0x5deab0,_0x59f8e6){_0x5deab0=_0x5deab0-0x0;var _0x381b5a=_0xedd9[_0x5deab0];return _0x381b5a;};'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')]('WhatsappApplication,\x20%s,\x20%s',_0xf0b2d8,_0x9edd('0xf'));logger[_0x9edd('0x10')]('WhatsappApplication,\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 57c3e10..4dd59ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3eea=['/:id/download','create','post','addMessage','/:id/tags','tracked','whatsapp','addTags','put','whatsappinteraction:update','update','delete','whatsappinteraction:destroy','destroy','removeTags','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappInteraction.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/messages','getMessages'];(function(_0x4ae1bc,_0x4cd286){var _0x30d8c2=function(_0x5aa02b){while(--_0x5aa02b){_0x4ae1bc['push'](_0x4ae1bc['shift']());}};_0x30d8c2(++_0x4cd286);}(_0x3eea,0x1ca));var _0xa3ee=function(_0x19812a,_0x236183){_0x19812a=_0x19812a-0x0;var _0x12cac4=_0x3eea[_0x19812a];return _0x12cac4;};'use strict';var multer=require(_0xa3ee('0x0'));var util=require('util');var path=require(_0xa3ee('0x1'));var timeout=require(_0xa3ee('0x2'));var express=require(_0xa3ee('0x3'));var router=express[_0xa3ee('0x4')]();var fs_extra=require(_0xa3ee('0x5'));var auth=require(_0xa3ee('0x6'));var interaction=require(_0xa3ee('0x7'));var config=require(_0xa3ee('0x8'));var controller=require(_0xa3ee('0x9'));router[_0xa3ee('0xa')]('/',auth[_0xa3ee('0xb')](),controller['index']);router['get'](_0xa3ee('0xc'),auth['isAuthenticated'](),controller[_0xa3ee('0xd')]);router['get'](_0xa3ee('0xe'),auth['isAuthenticated'](),controller[_0xa3ee('0xf')]);router['get'](_0xa3ee('0x10'),auth[_0xa3ee('0xb')](),controller[_0xa3ee('0x11')]);router['get'](_0xa3ee('0x12'),auth[_0xa3ee('0xb')](),controller['download']);router['post']('/',auth[_0xa3ee('0xb')](),controller[_0xa3ee('0x13')]);router[_0xa3ee('0x14')](_0xa3ee('0x10'),auth['isAuthenticated'](),controller[_0xa3ee('0x15')]);router['post'](_0xa3ee('0x16'),auth[_0xa3ee('0xb')](),interaction[_0xa3ee('0x17')](_0xa3ee('0x18'),'whatsappinteraction:addtags'),controller[_0xa3ee('0x19')]);router[_0xa3ee('0x1a')]('/:id',auth['isAuthenticated'](),interaction['tracked'](_0xa3ee('0x18'),_0xa3ee('0x1b')),controller[_0xa3ee('0x1c')]);router[_0xa3ee('0x1d')]('/:id',auth[_0xa3ee('0xb')](),interaction[_0xa3ee('0x17')](_0xa3ee('0x18'),_0xa3ee('0x1e')),controller[_0xa3ee('0x1f')]);router['delete'](_0xa3ee('0x16'),auth[_0xa3ee('0xb')](),controller[_0xa3ee('0x20')]);module[_0xa3ee('0x21')]=router;
\ No newline at end of file
+var _0xfb65=['/:id/tags','tracked','addTags','put','whatsapp','update','delete','destroy','removeTags','exports','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappInteraction.controller','get','/describe','isAuthenticated','describe','/:id','show','getMessages','/:id/download','download','post','/:id/messages','addMessage'];(function(_0x25bc8e,_0xfc8071){var _0x361990=function(_0x283643){while(--_0x283643){_0x25bc8e['push'](_0x25bc8e['shift']());}};_0x361990(++_0xfc8071);}(_0xfb65,0x82));var _0x5fb6=function(_0x2be1d6,_0x6ee010){_0x2be1d6=_0x2be1d6-0x0;var _0xea43e4=_0xfb65[_0x2be1d6];return _0xea43e4;};'use strict';var multer=require('multer');var util=require(_0x5fb6('0x0'));var path=require(_0x5fb6('0x1'));var timeout=require('connect-timeout');var express=require(_0x5fb6('0x2'));var router=express['Router']();var fs_extra=require(_0x5fb6('0x3'));var auth=require(_0x5fb6('0x4'));var interaction=require(_0x5fb6('0x5'));var config=require(_0x5fb6('0x6'));var controller=require(_0x5fb6('0x7'));router[_0x5fb6('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x5fb6('0x8')](_0x5fb6('0x9'),auth[_0x5fb6('0xa')](),controller[_0x5fb6('0xb')]);router['get'](_0x5fb6('0xc'),auth[_0x5fb6('0xa')](),controller[_0x5fb6('0xd')]);router[_0x5fb6('0x8')]('/:id/messages',auth[_0x5fb6('0xa')](),controller[_0x5fb6('0xe')]);router['get'](_0x5fb6('0xf'),auth[_0x5fb6('0xa')](),controller[_0x5fb6('0x10')]);router[_0x5fb6('0x11')]('/',auth[_0x5fb6('0xa')](),controller['create']);router[_0x5fb6('0x11')](_0x5fb6('0x12'),auth[_0x5fb6('0xa')](),controller[_0x5fb6('0x13')]);router[_0x5fb6('0x11')](_0x5fb6('0x14'),auth[_0x5fb6('0xa')](),interaction[_0x5fb6('0x15')]('whatsapp','whatsappinteraction:addtags'),controller[_0x5fb6('0x16')]);router[_0x5fb6('0x17')]('/:id',auth[_0x5fb6('0xa')](),interaction[_0x5fb6('0x15')](_0x5fb6('0x18'),'whatsappinteraction:update'),controller[_0x5fb6('0x19')]);router[_0x5fb6('0x1a')](_0x5fb6('0xc'),auth[_0x5fb6('0xa')](),interaction[_0x5fb6('0x15')](_0x5fb6('0x18'),'whatsappinteraction:destroy'),controller[_0x5fb6('0x1b')]);router['delete'](_0x5fb6('0x14'),auth['isAuthenticated'](),controller[_0x5fb6('0x1c')]);module[_0x5fb6('0x1d')]=router;
\ No newline at end of file
index a3a8bb6..c511f63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68f5=['out','BOOLEAN','sequelize','moment','exports','DATE','STRING','ENUM'];(function(_0x483888,_0x2ff778){var _0x4be161=function(_0x1c1915){while(--_0x1c1915){_0x483888['push'](_0x483888['shift']());}};_0x4be161(++_0x2ff778);}(_0x68f5,0x11a));var _0x568f=function(_0x208d90,_0x49b474){_0x208d90=_0x208d90-0x0;var _0x3141be=_0x68f5[_0x208d90];return _0x3141be;};'use strict';var Sequelize=require(_0x568f('0x0'));var moment=require(_0x568f('0x1'));module[_0x568f('0x2')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x568f('0x3')]},'disposition':{'type':Sequelize[_0x568f('0x4')]},'secondDisposition':{'type':Sequelize[_0x568f('0x4')]},'thirdDisposition':{'type':Sequelize[_0x568f('0x4')]},'note':{'type':Sequelize[_0x568f('0x4')]},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x568f('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x568f('0x5')]('in',_0x568f('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x568f('0x3')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x568f('0x7')],'defaultValue':![]}};
\ No newline at end of file
+var _0x49df=['BOOLEAN','DATE','STRING','ENUM','out','exports'];(function(_0x408e38,_0x23cda8){var _0x426b0e=function(_0x8f2898){while(--_0x8f2898){_0x408e38['push'](_0x408e38['shift']());}};_0x426b0e(++_0x23cda8);}(_0x49df,0xad));var _0xf49d=function(_0x382b8f,_0x5e0c9f){_0x382b8f=_0x382b8f-0x0;var _0x4c9b0e=_0x49df[_0x382b8f];return _0x4c9b0e;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module[_0xf49d('0x0')]={'closed':{'type':Sequelize[_0xf49d('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xf49d('0x2')]},'disposition':{'type':Sequelize[_0xf49d('0x3')]},'secondDisposition':{'type':Sequelize[_0xf49d('0x3')]},'thirdDisposition':{'type':Sequelize[_0xf49d('0x3')]},'note':{'type':Sequelize[_0xf49d('0x3')]},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0xf49d('0x2')]},'firstMsgDirection':{'type':Sequelize[_0xf49d('0x4')]('in',_0xf49d('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xf49d('0x2')]},'lastMsgDirection':{'type':Sequelize[_0xf49d('0x4')]('in',_0xf49d('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 61341be..196cb9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64b0=['buildExpression','text','body','some','compact','isEmpty','WhatsappAccountId','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','filter','replace','isNumeric','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','Sequelize','QueryTypes','clone','i.id','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','contactName','DESC','t.id\x20IN\x20?','resolve','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','role','agent','getWhatsappAccounts','i.WhatsappAccountId\x20IS\x20NULL','i.WhatsappAccountId\x20IN\x20?','sequelize','toString','keyBy','merge','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.lastName','Contact.lastName','c.email','Contact.email','Contact.mobile','Contact.fax','o.fullname','Owner.internal','ui.WhatsappInteractionId\x20IN\x20?','groupBy','WhatsappInteractionId','rows','params','includeAll','include','options','create','update','describe','WhatsappMessage','ids','omit','getMessages','findOne','nolimit','format','findAll','addTags','emit','removeTags','download','join','root','server','files','tmp','transcript-%d-%s.zip','CmContact','firstName','lastName','attachments','Attachment','Messages','direction','WhatsappAccount','Owner','get','Whatsapp','Account','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','disposition','basename','existsSync','createReadStream','pipe','createWriteStream','out','System','secret','renderFile','downloadInteraction.ejs','transcript-','.pdf','log','err','unlinkSync','eml-format','rimraf','zip-dir','moment','bluebird','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','./whatsappInteraction.socket','sendStatus','status','end','json','undefined','limit','count','offset','set','then','destroy','error','stack','name','send','Users','map','fullname','TagIds','Tags','forEach','push','catch','WhatsappInteraction','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','select','field','color','tools_tags','u.id','u.fullname','ui.WhatsappInteractionId','from','left_join','users','u.id\x20=\x20ui.UserId','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','whatsapp_accounts','a.id\x20=\x20i.WhatsappAccountId','whatsapp_messages','me.WhatsappInteractionId\x20=\x20i.id','it.WhatsappInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','parseSearch','search','sqlOperator','conditions','find','value','having','`\x20>\x200','Contact','operator','$substring','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','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?','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId'];(function(_0x21602f,_0x390717){var _0xef0d76=function(_0x50de8a){while(--_0x50de8a){_0x21602f['push'](_0x21602f['shift']());}};_0xef0d76(++_0x390717);}(_0x64b0,0x74));var _0x064b=function(_0x2cc248,_0x1ada66){_0x2cc248=_0x2cc248-0x0;var _0x350356=_0x64b0[_0x2cc248];return _0x350356;};'use strict';var emlformat=require(_0x064b('0x0'));var rimraf=require(_0x064b('0x1'));var zipdir=require(_0x064b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x064b('0x3'));var BPromise=require(_0x064b('0x4'));var Mustache=require('mustache');var util=require(_0x064b('0x5'));var path=require(_0x064b('0x6'));var sox=require('sox');var csv=require(_0x064b('0x7'));var ejs=require(_0x064b('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x064b('0x9'));var squel=require(_0x064b('0xa'));var crypto=require(_0x064b('0xb'));var jsforce=require(_0x064b('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x064b('0x7'));var querystring=require(_0x064b('0xd'));var Papa=require(_0x064b('0xe'));var Redis=require(_0x064b('0xf'));var authService=require(_0x064b('0x10'));var qs=require(_0x064b('0x11'));var as=require(_0x064b('0x12'));var pdf=require(_0x064b('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x064b('0x14'))('api');var utils=require(_0x064b('0x15'));var config=require(_0x064b('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x064b('0x17'))['db'];config[_0x064b('0x18')]=_[_0x064b('0x19')](config[_0x064b('0x18')],{'host':_0x064b('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x064b('0x18')]));require(_0x064b('0x1b'))['register'](socket);function respondWithStatusCode(_0x1e08f3,_0x1d4c21){_0x1d4c21=_0x1d4c21||0xcc;return function(_0x3460d4){if(_0x3460d4){return _0x1e08f3[_0x064b('0x1c')](_0x1d4c21);}return _0x1e08f3[_0x064b('0x1d')](_0x1d4c21)[_0x064b('0x1e')]();};}function respondWithResult(_0x1e4bc4,_0x26f750){_0x26f750=_0x26f750||0xc8;return function(_0x57a3fd){if(_0x57a3fd){return _0x1e4bc4[_0x064b('0x1d')](_0x26f750)[_0x064b('0x1f')](_0x57a3fd);}};}function respondWithFilteredResult(_0x28484e,_0x3bdfa8){return function(_0x4397fe){if(_0x4397fe){var _0x43225d=typeof _0x3bdfa8['offset']===_0x064b('0x20')&&typeof _0x3bdfa8[_0x064b('0x21')]===_0x064b('0x20');var _0x3c729e=_0x4397fe[_0x064b('0x22')];var _0xfe27d=_0x43225d?0x0:_0x3bdfa8[_0x064b('0x23')];var _0x374dfc=_0x43225d?_0x4397fe['count']:_0x3bdfa8['offset']+_0x3bdfa8['limit'];var _0x5cd81c;if(_0x374dfc>=_0x3c729e){_0x374dfc=_0x3c729e;_0x5cd81c=0xc8;}else{_0x5cd81c=0xce;}_0x28484e[_0x064b('0x1d')](_0x5cd81c);return _0x28484e[_0x064b('0x24')]('Content-Range',_0xfe27d+'-'+_0x374dfc+'/'+_0x3c729e)['json'](_0x4397fe);}return null;};}function patchUpdates(_0x6f6beb){return function(_0x2d976e){try{jsonpatch['apply'](_0x2d976e,_0x6f6beb,!![]);}catch(_0x33e15d){return BPromise['reject'](_0x33e15d);}return _0x2d976e['save']();};}function saveUpdates(_0x51658d,_0x595941){return function(_0x4fd9c2){if(_0x4fd9c2){return _0x4fd9c2['update'](_0x51658d)[_0x064b('0x25')](function(_0x257c9d){return _0x257c9d;});}return null;};}function removeEntity(_0x7389f5,_0x2f03ad){return function(_0x382c34){if(_0x382c34){return _0x382c34[_0x064b('0x26')]()[_0x064b('0x25')](function(){_0x7389f5[_0x064b('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0xdb6370,_0x37b0c8){return function(_0x5e8aad){if(!_0x5e8aad){_0xdb6370[_0x064b('0x1c')](0x194);}return _0x5e8aad;};}function handleError(_0x50276a,_0x4e6758){_0x4e6758=_0x4e6758||0x1f4;return function(_0x8fcc2d){logger[_0x064b('0x27')](_0x8fcc2d[_0x064b('0x28')]);if(_0x8fcc2d['name']){delete _0x8fcc2d[_0x064b('0x29')];}_0x50276a[_0x064b('0x1d')](_0x4e6758)[_0x064b('0x2a')](_0x8fcc2d);};}function getInteractionUsers(_0x64f0ca,_0x1c285e){return new BPromise(function(_0x40ed97,_0xf52819){try{if(_0x1c285e[_0x64f0ca['id']]){_0x64f0ca[_0x064b('0x2b')]=_[_0x064b('0x2c')](_0x1c285e[_0x64f0ca['id']],function(_0x1755bc){return{'id':_0x1755bc['id'],'fullname':_0x1755bc[_0x064b('0x2d')]};});}}catch(_0x3204d1){_0xf52819(_0x3204d1);}_0x40ed97(_0x64f0ca);});}function getInteractionTags(_0x194e4e,_0x9ae0b2){return new BPromise(function(_0x18d2b5,_0x558077){try{if(_0x194e4e[_0x064b('0x2e')]){_0x194e4e[_0x064b('0x2f')]=[];_0x194e4e[_0x064b('0x2e')]['split'](',')[_0x064b('0x30')](function(_0x1605be){_0x194e4e[_0x064b('0x2f')][_0x064b('0x31')](_0x9ae0b2[_0x1605be]);});}delete _0x194e4e[_0x064b('0x2e')];}catch(_0x35a5d4){_0x558077(_0x35a5d4);}_0x18d2b5(_0x194e4e);});}function updateWhatsappInteraction(_0x43bee9,_0x1add87,_0x271976){return new BPromise(function(_0xad57bb,_0x4e73da){return getInteractionUsers(_0x43bee9,_0x271976)['then'](function(_0x23cfe2){return getInteractionTags(_0x23cfe2,_0x1add87);})[_0x064b('0x25')](function(_0xbb918a){_0xad57bb(_0xbb918a);})[_0x064b('0x32')](function(_0x5a1307){_0x4e73da(_0x5a1307);});});}exports['index']=function(_0xc3c3a0,_0x2b86e1){var _0x5333fd={},_0xd70b0={},_0x31a175={'count':0x0,'rows':[]};var _0x185bd0=_[_0x064b('0x2c')](db[_0x064b('0x33')][_0x064b('0x34')],function(_0x5997fe){return{'name':_0x5997fe[_0x064b('0x35')],'type':_0x5997fe[_0x064b('0x36')][_0x064b('0x37')]};});_0xd70b0[_0x064b('0x38')]=_['map'](_0x185bd0,_0x064b('0x29'));_0xd70b0[_0x064b('0x39')]=_[_0x064b('0x3a')](_0xc3c3a0[_0x064b('0x39')]);_0xd70b0['filters']=_[_0x064b('0x3b')](_0xd70b0[_0x064b('0x38')],_0xd70b0[_0x064b('0x39')]);_0x5333fd[_0x064b('0x3c')]=_['intersection'](_0xd70b0[_0x064b('0x38')],qs[_0x064b('0x3d')](_0xc3c3a0[_0x064b('0x39')][_0x064b('0x3d')]));_0x5333fd[_0x064b('0x3c')]=_0x5333fd[_0x064b('0x3c')][_0x064b('0x3e')]?_0x5333fd['attributes']:_0xd70b0[_0x064b('0x38')];if(!_0xc3c3a0[_0x064b('0x39')][_0x064b('0x3f')]('nolimit')){_0x5333fd[_0x064b('0x21')]=qs[_0x064b('0x21')](_0xc3c3a0[_0x064b('0x39')][_0x064b('0x21')]);_0x5333fd[_0x064b('0x23')]=qs[_0x064b('0x23')](_0xc3c3a0[_0x064b('0x39')][_0x064b('0x23')]);}_0x5333fd[_0x064b('0x40')]=qs[_0x064b('0x41')](_0xc3c3a0[_0x064b('0x39')][_0x064b('0x41')]);_0x5333fd[_0x064b('0x42')]=qs[_0x064b('0x43')](_[_0x064b('0x44')](_0xc3c3a0[_0x064b('0x39')],_0xd70b0['filters']),_0x185bd0);var _0x40ca72=[];var _0x1e37ef=squel[_0x064b('0x45')]()['field']('id')['field'](_0x064b('0x29'))[_0x064b('0x46')](_0x064b('0x47'))['from'](_0x064b('0x48'));var _0x3fe6b0=squel[_0x064b('0x45')]()[_0x064b('0x46')](_0x064b('0x49'))[_0x064b('0x46')](_0x064b('0x4a'))[_0x064b('0x46')](_0x064b('0x4b'))[_0x064b('0x4c')]('user_has_whatsapp_interactions','ui')[_0x064b('0x4d')](_0x064b('0x4e'),'u',_0x064b('0x4f'));var _0x42ca55=squel['select']()['from']('whatsapp_interactions','i')['left_join']('cm_contacts','c',_0x064b('0x50'))[_0x064b('0x4d')](_0x064b('0x4e'),'o',_0x064b('0x51'))['left_join'](_0x064b('0x52'),'a',_0x064b('0x53'))['left_join'](_0x064b('0x54'),'me',_0x064b('0x55'))[_0x064b('0x4d')]('whatsapp_interaction_has_tags','it',_0x064b('0x56'))[_0x064b('0x4d')]('tools_tags','t',_0x064b('0x57'));var _0x11790a=squel[_0x064b('0x58')]();var _0x56139b=[];var _0xef4421=squel[_0x064b('0x58')]();var _0x31b019;if(_0xc3c3a0[_0x064b('0x39')]['search']){_0x31b019=as[_0x064b('0x59')](_0xc3c3a0[_0x064b('0x39')][_0x064b('0x5a')]);var _0x3fad5a=_0x31b019[_0x064b('0x5b')];for(var _0x3791df=0x0;_0x3791df<_0x31b019[_0x064b('0x5c')][_0x064b('0x3e')];_0x3791df++){var _0x53a20e=_0x31b019['conditions'][_0x3791df];var _0x4b5ffd='i';var _0x2d6d90=_[_0x064b('0x5d')](_0x185bd0,['name',_0x53a20e[_0x064b('0x46')]]);if(!_0x2d6d90){switch(_0x53a20e['field']){case'unreadMessages':if(_0x53a20e[_0x064b('0x5e')]==0x1){_0x42ca55[_0x064b('0x5f')]('`'+_0x53a20e[_0x064b('0x46')]+'`\x20=\x200');}else{_0x42ca55[_0x064b('0x5f')]('`'+_0x53a20e[_0x064b('0x46')]+_0x064b('0x60'));}break;case _0x064b('0x61'):if(_0x53a20e[_0x064b('0x62')]===_0x064b('0x63')){if(_0x53a20e['value'][_0x064b('0x64')]('\x20')[_0x064b('0x3e')]>0x1){_0x11790a[_0x3fad5a](_0x064b('0x65'),qs[_0x064b('0x66')](_0x53a20e[_0x064b('0x5e')]),null);}else{var _0x1a2bf3='%'+_0x53a20e[_0x064b('0x5e')]+'%';_0x11790a[_0x3fad5a](_0x064b('0x67'),_0x1a2bf3,_0x1a2bf3,_0x1a2bf3);}}else{_0x2d6d90=_['find'](_0x185bd0,[_0x064b('0x29'),'ContactId']);_0x53a20e['field']=_0x064b('0x68');_0x4301f6=as['buildExpression'](_0x4b5ffd,_0x2d6d90[_0x064b('0x36')],_0x53a20e);_0x11790a[_0x3fad5a](_0x4301f6['text'],_0x4301f6[_0x064b('0x5e')][_0x064b('0x69')],_0x4301f6['value'][_0x064b('0x1e')]);}break;case _0x064b('0x6a'):var _0x41223c=_0x53a20e[_0x064b('0x5e')][_0x064b('0x64')](',')[_0x064b('0x2c')](function(_0x323e21){return Number(_0x323e21);});_0x41223c[_0x064b('0x30')](function(_0x10ec62){_0xef4421['or'](_0x064b('0x6b'),'%,'+_0x10ec62+',%');});_0x56139b=_['union'](_0x56139b,_0x41223c);break;case _0x064b('0x6c'):if(_0x53a20e[_0x064b('0x62')]==='$substring'){_0x11790a[_0x3fad5a](_0x064b('0x6d'),'%'+_0x53a20e[_0x064b('0x5e')]+'%',null);}else{_0x2d6d90=_['find'](_0x185bd0,['name','UserId']);_0x53a20e['field']=_0x064b('0x6e');_0x4301f6=as[_0x064b('0x6f')](_0x4b5ffd,_0x2d6d90[_0x064b('0x36')],_0x53a20e);_0x11790a[_0x3fad5a](_0x4301f6[_0x064b('0x70')],_0x4301f6[_0x064b('0x5e')][_0x064b('0x69')],_0x4301f6['value'][_0x064b('0x1e')]);}break;case _0x064b('0x71'):_0x4301f6=as[_0x064b('0x6f')]('me',null,_0x53a20e);_0x11790a[_0x3fad5a](_0x4301f6[_0x064b('0x70')],_0x4301f6[_0x064b('0x5e')][_0x064b('0x69')],_0x4301f6[_0x064b('0x5e')]['end']);break;}}else{var _0x4301f6=as[_0x064b('0x6f')](_0x4b5ffd,_0x2d6d90['type'],_0x53a20e);_0x11790a[_0x3fad5a](_0x4301f6[_0x064b('0x70')],_0x4301f6['value'][_0x064b('0x69')],_0x4301f6['value']['end']);}}}else{var _0x2a815f=_(_0xc3c3a0[_0x064b('0x39')])[_0x064b('0x3a')]()['map'](function(_0x202234){return _[_0x064b('0x72')](_0x185bd0,[_0x064b('0x29'),_0x202234])?_0x202234:undefined;})[_0x064b('0x73')]()['value']();if(!_[_0x064b('0x74')](_0x2a815f)){_0x2a815f[_0x064b('0x30')](function(_0x46f2f0){if(_0x46f2f0===_0x064b('0x75')){_0x42ca55['where']('i.WhatsappAccountId\x20IN\x20?',[][_0x064b('0x76')](_0xc3c3a0[_0x064b('0x39')][_0x46f2f0]));}else if(_0x46f2f0===_0x064b('0x77')){var _0x528b14=JSON[_0x064b('0x78')](_0xc3c3a0[_0x064b('0x39')][_0x46f2f0])[_0x064b('0x79')];var _0x1d222c=JSON[_0x064b('0x78')](_0xc3c3a0[_0x064b('0x39')][_0x46f2f0])[_0x064b('0x7a')];_0x42ca55[_0x064b('0x42')](_0x064b('0x7b'),_0x528b14,_0x1d222c);}else{if(_0xc3c3a0[_0x064b('0x39')][_0x46f2f0]===_0x064b('0x7c')){_0x42ca55[_0x064b('0x42')]('i.'+_0x46f2f0+'\x20IS\x20NULL');}else{_0x42ca55[_0x064b('0x42')]('i.'+_0x46f2f0+'\x20=\x20?',_0xc3c3a0['query'][_0x46f2f0]);}}});}if(_0xc3c3a0['query'][_0x064b('0x7d')]){if(_0xc3c3a0[_0x064b('0x39')][_0x064b('0x7d')]==0x1){_0x42ca55['having'](_0x064b('0x7e'));}else{_0x42ca55[_0x064b('0x5f')](_0x064b('0x7f'));}}if(_0xc3c3a0[_0x064b('0x39')][_0x064b('0x80')]){_0x56139b=_['isArray'](_0xc3c3a0[_0x064b('0x39')]['tag'])?_0xc3c3a0[_0x064b('0x39')]['tag']:new Array(_0xc3c3a0[_0x064b('0x39')]['tag']);_0x56139b[_0x064b('0x30')](function(_0x2c2255){_0xef4421['or'](_0x064b('0x6b'),'%,'+_0x2c2255+',%');});}if(_0xc3c3a0[_0x064b('0x39')][_0x064b('0x81')]){var _0x2147c5=_0xc3c3a0[_0x064b('0x39')][_0x064b('0x81')][_0x064b('0x82')]('\x5c','\x5c\x5c')[_0x064b('0x82')](/'/g,'\x27\x27');if(qs[_0x064b('0x83')](_0x2147c5)){_0x11790a['or']('i.id\x20LIKE\x20?',_0x2147c5+'%')['or']('i.phone\x20LIKE\x20?',_0x2147c5+'%');}else{_0x11790a['or'](_0x064b('0x84'),qs['getFullTextValue'](_0x2147c5))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x2147c5+'%');}}}_0x42ca55[_0x064b('0x42')](_0x11790a);_0x42ca55[_0x064b('0x85')]('i.id');var _0x5be73c={'type':db[_0x064b('0x86')][_0x064b('0x87')]['SELECT'],'raw':!![]};var _0x27f81e=_0x42ca55[_0x064b('0x88')]();_0x27f81e[_0x064b('0x46')](_0x064b('0x89'));_0x27f81e['field'](_0x064b('0x8a'),_0x064b('0x8b'));if(_0x5333fd['order']){_0x5333fd[_0x064b('0x40')][_0x064b('0x30')](function(_0x16a5a8){var _0x36083f=_0x16a5a8[0x0]===_0x064b('0x8c')?_0x16a5a8[0x0]:'i.'+_0x16a5a8[0x0];_0x42ca55[_0x064b('0x40')](_0x36083f,_0x16a5a8[0x1]===_0x064b('0x8d')?![]:!![]);});}if(!_['isEmpty'](_0x56139b)){_0x42ca55['having'](_0xef4421);_0x27f81e[_0x064b('0x42')](_0x064b('0x8e'),_0x56139b);}BPromise[_0x064b('0x8f')]()[_0x064b('0x25')](function(){if(!_0x31b019){if(_0xc3c3a0[_0x064b('0x39')][_0x064b('0x75')])return;_0x27f81e['where'](_0x064b('0x90'));_0x42ca55[_0x064b('0x42')]('i.WhatsappAccountId\x20IS\x20NOT\x20NULL');return;}if(_0xc3c3a0['user'][_0x064b('0x91')]!==_0x064b('0x92'))return;return _0xc3c3a0['user'][_0x064b('0x93')]({'attributes':['id'],'raw':!![]})[_0x064b('0x25')](function(_0x420f8a){if(_[_0x064b('0x74')](_0x420f8a)){_0x27f81e[_0x064b('0x42')]('i.WhatsappAccountId\x20IS\x20NULL');_0x42ca55[_0x064b('0x42')](_0x064b('0x94'));}else{_0x27f81e['where'](_0x064b('0x95'),_[_0x064b('0x2c')](_0x420f8a,'id'));_0x42ca55[_0x064b('0x42')](_0x064b('0x95'),_[_0x064b('0x2c')](_0x420f8a,'id'));}});})[_0x064b('0x25')](function(){if(_0xc3c3a0['user'][_0x064b('0x91')]===_0x064b('0x92')&&!_0x31b019&&!_0xc3c3a0[_0x064b('0x39')]['WhatsappAccountId'])return[];return db[_0x064b('0x96')][_0x064b('0x39')](_0x27f81e[_0x064b('0x97')](),_0x5be73c);})[_0x064b('0x25')](function(_0x6071c6){_0x31a175[_0x064b('0x22')]=_0x6071c6['length'];if(_0x31a175['count']===0x0)return[];return db[_0x064b('0x96')]['query'](_0x1e37ef['toString'](),_0x5be73c)[_0x064b('0x25')](function(_0x387c08){_0x40ca72=_[_0x064b('0x98')](_0x387c08,'id');_0x5be73c=_[_0x064b('0x99')](_0x5be73c,{'model':db[_0x064b('0x33')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0xc3c3a0[_0x064b('0x39')]['fields']){_0x5333fd[_0x064b('0x3c')][_0x064b('0x30')](function(_0x2d4157){_0x42ca55['field']('i.'+_0x2d4157);});}else{_0x42ca55[_0x064b('0x46')](_0x064b('0x8a'),_0x064b('0x8b'));_0x42ca55[_0x064b('0x46')]('a.key',_0x064b('0x9a'));_0x42ca55[_0x064b('0x46')](_0x064b('0x9b'),_0x064b('0x9c'));_0x42ca55[_0x064b('0x46')](_0x064b('0x9d'),_0x064b('0x8c'));_0x42ca55[_0x064b('0x46')](_0x064b('0x9e'));_0x42ca55[_0x064b('0x46')]('c.firstName','Contact.firstName');_0x42ca55[_0x064b('0x46')](_0x064b('0x9f'),_0x064b('0xa0'));_0x42ca55['field'](_0x064b('0xa1'),_0x064b('0xa2'));_0x42ca55['field']('c.phone','Contact.phone');_0x42ca55['field']('c.mobile',_0x064b('0xa3'));_0x42ca55[_0x064b('0x46')]('c.fax',_0x064b('0xa4'));_0x42ca55['field'](_0x064b('0xa5'),'Owner.fullname');_0x42ca55[_0x064b('0x46')]('o.internal',_0x064b('0xa6'));_0x42ca55[_0x064b('0x46')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0x064b('0x2e'));}if(_0x5333fd[_0x064b('0x21')])_0x42ca55[_0x064b('0x21')](_0x5333fd['limit']);if(_0x5333fd[_0x064b('0x23')])_0x42ca55['offset'](_0x5333fd[_0x064b('0x23')]);return db[_0x064b('0x96')][_0x064b('0x39')](_0x42ca55[_0x064b('0x97')](),_0x5be73c);})[_0x064b('0x25')](function(_0x3ae0ad){if(_0x3ae0ad[_0x064b('0x3e')]>0x0)_0x3fe6b0['where'](_0x064b('0xa7'),_['map'](_0x3ae0ad,'id'));return db[_0x064b('0x96')][_0x064b('0x39')](_0x3fe6b0[_0x064b('0x97')](),_0x5be73c)['then'](function(_0x414f27){var _0x2de49b=_[_0x064b('0xa8')](_0x414f27,_0x064b('0xa9'));var _0x3cfa8d=[];_0x3ae0ad[_0x064b('0x30')](function(_0x4ff8e3){_0x3cfa8d[_0x064b('0x31')](updateWhatsappInteraction(_0x4ff8e3,_0x40ca72,_0x2de49b));});return BPromise['all'](_0x3cfa8d);});});})[_0x064b('0x25')](function(_0x15f806){_0x31a175[_0x064b('0xaa')]=_0x15f806;return _0x31a175;})[_0x064b('0x25')](respondWithFilteredResult(_0x2b86e1,_0x5333fd))[_0x064b('0x32')](handleError(_0x2b86e1,null));};exports['show']=function(_0x1275cf,_0x263da7){var _0x4a436b={'raw':![],'where':{'id':_0x1275cf[_0x064b('0xab')]['id']}},_0x1b6a9e={};_0x1b6a9e[_0x064b('0x38')]=_[_0x064b('0x3a')](db['WhatsappInteraction'][_0x064b('0x34')]);_0x1b6a9e[_0x064b('0x39')]=_['keys'](_0x1275cf[_0x064b('0x39')]);_0x1b6a9e[_0x064b('0x43')]=_['intersection'](_0x1b6a9e[_0x064b('0x38')],_0x1b6a9e[_0x064b('0x39')]);_0x4a436b['attributes']=_['intersection'](_0x1b6a9e[_0x064b('0x38')],qs['fields'](_0x1275cf['query'][_0x064b('0x3d')]));_0x4a436b['attributes']=_0x4a436b[_0x064b('0x3c')][_0x064b('0x3e')]?_0x4a436b[_0x064b('0x3c')]:_0x1b6a9e['model'];if(_0x1275cf[_0x064b('0x39')][_0x064b('0xac')]){_0x4a436b[_0x064b('0xad')]=[{'all':!![]}];}_0x4a436b=_[_0x064b('0x99')]({},_0x4a436b,_0x1275cf[_0x064b('0xae')]);return db[_0x064b('0x33')][_0x064b('0x5d')](_0x4a436b)[_0x064b('0x25')](handleEntityNotFound(_0x263da7,null))[_0x064b('0x25')](respondWithResult(_0x263da7,null))[_0x064b('0x32')](handleError(_0x263da7,null));};exports[_0x064b('0xaf')]=function(_0x2678a9,_0x105644){return db[_0x064b('0x33')]['create'](_0x2678a9['body'],{})['then'](respondWithResult(_0x105644,0xc9))[_0x064b('0x32')](handleError(_0x105644,null));};exports[_0x064b('0xb0')]=function(_0x35567c,_0x508af9){if(_0x35567c[_0x064b('0x71')]['id']){delete _0x35567c[_0x064b('0x71')]['id'];}return db[_0x064b('0x33')][_0x064b('0x5d')]({'where':{'id':_0x35567c[_0x064b('0xab')]['id']}})[_0x064b('0x25')](handleEntityNotFound(_0x508af9,null))[_0x064b('0x25')](saveUpdates(_0x35567c[_0x064b('0x71')],null))[_0x064b('0x25')](respondWithResult(_0x508af9,null))[_0x064b('0x32')](handleError(_0x508af9,null));};exports[_0x064b('0x26')]=function(_0x4c87b7,_0x3430aa){return db['WhatsappInteraction'][_0x064b('0x5d')]({'where':{'id':_0x4c87b7[_0x064b('0xab')]['id']}})[_0x064b('0x25')](handleEntityNotFound(_0x3430aa,null))['then'](removeEntity(_0x3430aa,null))[_0x064b('0x32')](handleError(_0x3430aa,null));};exports[_0x064b('0xb1')]=function(_0x587fd7,_0xaf467d){return db[_0x064b('0x33')][_0x064b('0xb1')]()[_0x064b('0x25')](respondWithResult(_0xaf467d,null))[_0x064b('0x32')](handleError(_0xaf467d,null));};exports['addMessage']=function(_0x5409f7,_0x1a4dd2,_0x29b395){return db[_0x064b('0xb2')][_0x064b('0x5d')]({'where':{'id':_0x5409f7[_0x064b('0xab')]['id']}})['then'](handleEntityNotFound(_0x1a4dd2,null))[_0x064b('0x25')](function(_0x5468f6){if(_0x5468f6){return _0x5468f6['addMessage'](_0x5409f7[_0x064b('0x71')][_0x064b('0xb3')],_[_0x064b('0xb4')](_0x5409f7[_0x064b('0x71')],[_0x064b('0xb3'),'id'])||{});}})['then'](respondWithResult(_0x1a4dd2,null))[_0x064b('0x32')](handleError(_0x1a4dd2,null));};exports[_0x064b('0xb5')]=function(_0xd1918c,_0x5d55f0,_0x2442f6){var _0x3517c6={'raw':![],'where':{}};var _0x589605={};var _0x21d7ba={'count':0x0,'rows':[]};return db['WhatsappInteraction'][_0x064b('0xb6')]({'where':{'id':_0xd1918c[_0x064b('0xab')]['id']}})['then'](handleEntityNotFound(_0x5d55f0,null))[_0x064b('0x25')](function(_0x1534dd){if(_0x1534dd){_0x589605[_0x064b('0x38')]=_[_0x064b('0x3a')](db['WhatsappMessage'][_0x064b('0x34')]);_0x589605[_0x064b('0x39')]=_[_0x064b('0x3a')](_0xd1918c[_0x064b('0x39')]);_0x589605[_0x064b('0x43')]=_[_0x064b('0x3b')](_0x589605[_0x064b('0x38')],_0x589605[_0x064b('0x39')]);_0x3517c6[_0x064b('0x3c')]=_[_0x064b('0x3b')](_0x589605[_0x064b('0x38')],qs['fields'](_0xd1918c[_0x064b('0x39')][_0x064b('0x3d')]));_0x3517c6[_0x064b('0x3c')]=_0x3517c6['attributes'][_0x064b('0x3e')]?_0x3517c6[_0x064b('0x3c')]:_0x589605['model'];if(!_0xd1918c['query'][_0x064b('0x3f')](_0x064b('0xb7'))){_0x3517c6[_0x064b('0x21')]=qs[_0x064b('0x21')](_0xd1918c['query'][_0x064b('0x21')]);_0x3517c6[_0x064b('0x23')]=qs[_0x064b('0x23')](_0xd1918c[_0x064b('0x39')]['offset']);}_0x3517c6['order']=qs['sort'](_0xd1918c[_0x064b('0x39')][_0x064b('0x41')]);_0x3517c6[_0x064b('0x42')]=qs['filters'](_['pick'](_0xd1918c[_0x064b('0x39')],_0x589605[_0x064b('0x43')]));_0x3517c6[_0x064b('0x42')][_0x064b('0xa9')]=_0x1534dd['id'];if(_0xd1918c[_0x064b('0x39')][_0x064b('0x81')]){_0x3517c6[_0x064b('0x42')]=_[_0x064b('0x99')](_0x3517c6[_0x064b('0x42')],{'$or':_[_0x064b('0x2c')](_0x3517c6[_0x064b('0x3c')],function(_0x49f806){var _0x2ef57f={};_0x2ef57f[_0x49f806]={'$like':'%'+_0xd1918c['query'][_0x064b('0x81')]+'%'};return _0x2ef57f;})});}if(_0xd1918c[_0x064b('0x39')][_0x064b('0x79')]){var _0x278bba=_0xd1918c[_0x064b('0x39')][_0x064b('0x79')][_0x064b('0x64')](',');var _0x27df2f={};_0x27df2f[_0x278bba[0x0]]={'$gte':moment(_0x278bba[0x1])[_0x064b('0xb8')]('YYYY-MM-DD\x20HH:mm:ss')};_0x3517c6[_0x064b('0x42')]=_[_0x064b('0x99')](_0x3517c6[_0x064b('0x42')],_0x27df2f);}_0x3517c6=_['merge']({},_0x3517c6,_0xd1918c[_0x064b('0xae')]);return db[_0x064b('0xb2')][_0x064b('0x22')]({'where':_0x3517c6['where']})[_0x064b('0x25')](function(_0x1790a0){_0x21d7ba[_0x064b('0x22')]=_0x1790a0;if(_0xd1918c[_0x064b('0x39')][_0x064b('0xac')]){_0x3517c6['include']=[{'all':!![]}];}return db[_0x064b('0xb2')][_0x064b('0xb9')](_0x3517c6);})[_0x064b('0x25')](function(_0x51be49){_0x21d7ba['rows']=_0x51be49;return _0x21d7ba;});}})[_0x064b('0x25')](respondWithFilteredResult(_0x5d55f0,_0x3517c6))[_0x064b('0x32')](handleError(_0x5d55f0,null));};exports[_0x064b('0xba')]=function(_0x2421c8,_0x54cb50,_0x49da5b){return db['WhatsappInteraction'][_0x064b('0x5d')]({'where':{'id':_0x2421c8[_0x064b('0xab')]['id']}})[_0x064b('0x25')](handleEntityNotFound(_0x54cb50,null))['then'](function(_0x2510cb){if(_0x2510cb){return _0x2510cb['setTags'](_0x2421c8[_0x064b('0x71')][_0x064b('0xb3')],_[_0x064b('0xb4')](_0x2421c8[_0x064b('0x71')],[_0x064b('0xb3'),'id'])||{})['spread'](function(){return db[_0x064b('0x6a')][_0x064b('0xb9')]({'attributes':['id',_0x064b('0x29'),_0x064b('0x47')],'where':{'id':_0x2421c8[_0x064b('0x71')][_0x064b('0xb3')]}});})[_0x064b('0x25')](function(_0xe735e2){socket[_0x064b('0xbb')]('whatsappInteractionTags:save',{'id':Number(_0x2421c8['params']['id']),'tags':_0xe735e2||[]});return{'id':Number(_0x2421c8['params']['id']),'tags':_0xe735e2||[]};});}})[_0x064b('0x25')](respondWithResult(_0x54cb50,null))['catch'](handleError(_0x54cb50,null));};exports[_0x064b('0xbc')]=function(_0xf77e12,_0x44b06e,_0x35cf2d){return db['WhatsappInteraction']['find']({'where':{'id':_0xf77e12['params']['id']}})[_0x064b('0x25')](handleEntityNotFound(_0x44b06e,null))[_0x064b('0x25')](function(_0x9dea6d){if(_0x9dea6d){return _0x9dea6d[_0x064b('0xbc')](_0xf77e12[_0x064b('0x39')]['ids']);}})[_0x064b('0x25')](respondWithStatusCode(_0x44b06e,null))['catch'](handleError(_0x44b06e,null));};exports[_0x064b('0xbd')]=function(_0x4efd6b,_0x52ef60){var _0x23c6a1=moment()['unix']()['toString']();var _0x1fb539=path[_0x064b('0xbe')](config[_0x064b('0xbf')],_0x064b('0xc0'),_0x064b('0xc1'),_0x064b('0xc2'));var _0x3d878f=path[_0x064b('0xbe')](config[_0x064b('0xbf')],_0x064b('0xc0'),_0x064b('0xc1'),'attachments');var _0x2341f1=path[_0x064b('0xbe')](_0x1fb539,_0x23c6a1);var _0x5f5d75=util['format'](_0x064b('0xc3'),_0x4efd6b['params']['id'],_0x23c6a1);var _0x413828=path['join'](_0x1fb539,_0x5f5d75);var _0x423a9c=[];_0x423a9c['push']({'model':db['User'],'as':'User','attributes':['id',_0x064b('0x2d')],'raw':!![]});_0x423a9c['push']({'model':db[_0x064b('0xc4')],'as':_0x064b('0x61'),'attributes':['id',_0x064b('0xc5'),_0x064b('0xc6')],'raw':!![]});if(_0x4efd6b[_0x064b('0x39')][_0x064b('0xc7')]){_0x423a9c['push']({'model':db['Attachment'],'as':_0x064b('0xc8'),'raw':!![]});}var _0x32c8e5=[{'model':db[_0x064b('0xb2')],'as':_0x064b('0xc9'),'attributes':['id',_0x064b('0x71'),_0x064b('0x77'),_0x064b('0xca'),'secret','read'],'include':_0x423a9c}];_0x32c8e5[_0x064b('0x31')]({'model':db[_0x064b('0xcb')],'as':'Account','attributes':['id',_0x064b('0x29')]});_0x32c8e5['push']({'model':db[_0x064b('0x6c')],'as':_0x064b('0xcc'),'attributes':['id',_0x064b('0x2d')]});return db['WhatsappInteraction'][_0x064b('0x5d')]({'where':{'id':_0x4efd6b[_0x064b('0xab')]['id']},'include':_0x32c8e5})['then'](handleEntityNotFound(_0x52ef60,null))[_0x064b('0x25')](function(_0x5186a3){if(_0x5186a3){var _0x204407=_0x5186a3[_0x064b('0xcd')]({'plain':!![]});fs['mkdirSync'](_0x2341f1);var _0x595d5d={'channel':_0x064b('0xce'),'account':_0x204407[_0x064b('0xcf')][_0x064b('0x29')],'agent':_0x204407['Owner']?_0x204407[_0x064b('0xcc')][_0x064b('0x2d')]:'N.A.','createdAt':moment(_0x204407[_0x064b('0x77')])[_0x064b('0xb8')](_0x064b('0xd0'))[_0x064b('0x97')](),'closedAt':_0x204407[_0x064b('0xd1')]?moment(_0x204407[_0x064b('0xd2')])[_0x064b('0xb8')]('YYYY-MM-DD\x20HH:mm:ss')[_0x064b('0x97')]():'','disposition':_0x204407[_0x064b('0xd3')],'messages':_(_0x204407['Messages'])[_0x064b('0x81')]({'secret':![]})[_0x064b('0x2c')](function(_0x29cd1a){if(_0x29cd1a[_0x064b('0xc8')]){var _0x2478c2=path['join'](_0x3d878f,_0x29cd1a['Attachment'][_0x064b('0xd4')]);if(fs[_0x064b('0xd5')](_0x2478c2)){fs[_0x064b('0xd6')](_0x2478c2)[_0x064b('0xd7')](fs[_0x064b('0xd8')](path[_0x064b('0xbe')](_0x2341f1,_0x29cd1a[_0x064b('0xc8')][_0x064b('0xd4')])));}}return{'date':moment(_0x29cd1a[_0x064b('0x77')])[_0x064b('0xb8')](_0x064b('0xd0'))[_0x064b('0x97')](),'sender':_0x29cd1a['direction']===_0x064b('0xd9')?_0x29cd1a[_0x064b('0x6c')]?_0x29cd1a[_0x064b('0x6c')][_0x064b('0x2d')]:_0x064b('0xda'):_0x29cd1a[_0x064b('0x61')][_0x064b('0xc5')]+(_0x29cd1a[_0x064b('0x61')][_0x064b('0xc6')]?'\x20'+_0x29cd1a[_0x064b('0x61')][_0x064b('0xc6')]:''),'body':_0x29cd1a[_0x064b('0xc8')]?_0x29cd1a[_0x064b('0xc8')][_0x064b('0xd4')]:_0x29cd1a[_0x064b('0x71')],'direction':_0x29cd1a[_0x064b('0xca')]===_0x064b('0xd9')?'A':'C','secret':_0x29cd1a[_0x064b('0xdb')],'read':_0x29cd1a[_0x064b('0x7d')],'attachment':_0x29cd1a['Attachment']};})[_0x064b('0x5e')]()};return ejs[_0x064b('0xdc')](path[_0x064b('0xbe')](config['root'],_0x064b('0xc0'),'views',_0x064b('0xdd')),{'interaction':_0x595d5d})[_0x064b('0x25')](function(_0xc9b97){var _0xc1d07=path[_0x064b('0xbe')](_0x2341f1,_0x064b('0xde')+_0x204407['id']+'-'+_0x23c6a1+_0x064b('0xdf'));var _0x31ade5={'path':_0xc1d07,'channel':_0x064b('0xce'),'interactionId':_0x204407['id']};return pdf['createPdfFromHTML'](_0xc9b97,_0x31ade5);})[_0x064b('0x25')](function(){return new BPromise(function(_0x2145d2,_0x4f05cf){zipdir(_0x2341f1,{'saveTo':_0x413828},function(_0x3bd21b,_0x411580){if(_0x3bd21b)return _0x4f05cf(_0x3bd21b);return _0x2145d2(_0x411580);});})['then'](function(){return new BPromise(function(_0x518880,_0x53aeba){rimraf(_0x2341f1,function(_0x5c51fa){if(_0x5c51fa)_0x53aeba(_0x5c51fa);return _0x518880();});});})[_0x064b('0x25')](function(){return _0x52ef60[_0x064b('0xbd')](_0x413828,_0x5f5d75,function(_0x24b99a){if(_0x24b99a){console[_0x064b('0xe0')](_0x064b('0xe1'),_0x24b99a);}else{fs[_0x064b('0xe2')](_0x413828);}});});});}else{return _0x52ef60[_0x064b('0x1c')](0xc8);}})['catch'](handleError(_0x52ef60,null));};
\ No newline at end of file
+var _0x3fec=['Content-Range','apply','reject','save','update','destroy','error','stack','name','send','Users','map','fullname','TagIds','Tags','then','catch','index','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','select','field','from','tools_tags','u.id','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','a.id\x20=\x20i.WhatsappAccountId','whatsapp_messages','me.WhatsappInteractionId\x20=\x20i.id','it.WhatsappInteractionId\x20=\x20i.id','expr','search','parseSearch','conditions','find','unreadMessages','value','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','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','some','isEmpty','WhatsappAccountId','i.WhatsappAccountId\x20IN\x20?','concat','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','having','isArray','tag','replace','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','QueryTypes','contactName','DESC','t.id\x20IN\x20?','resolve','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getWhatsappAccounts','toString','sequelize','keyBy','WhatsappInteraction','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.firstName','Contact.lastName','c.email','c.phone','c.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.WhatsappInteractionId\x20IN\x20?','groupBy','all','rows','show','params','includeAll','include','merge','options','create','body','describe','addMessage','WhatsappMessage','omit','ids','getMessages','findOne','hasOwnProperty','pick','WhatsappInteractionId','filter','$gte','format','YYYY-MM-DD\x20HH:mm:ss','addTags','setTags','color','emit','whatsappInteractionTags:save','removeTags','join','server','tmp','root','files','attachments','transcript-%d-%s.zip','push','CmContact','firstName','lastName','Attachment','Messages','createdAt','direction','secret','WhatsappAccount','Owner','get','mkdirSync','Whatsapp','Account','N.A.','closed','closedAt','disposition','basename','existsSync','createReadStream','System','out','renderFile','views','.pdf','download','err','unlinkSync','eml-format','fast-json-patch','request-promise','bluebird','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','sendStatus','status','end','json','offset','undefined','count','limit'];(function(_0x3bc1d6,_0x3c6269){var _0x547f5f=function(_0x38fb03){while(--_0x38fb03){_0x3bc1d6['push'](_0x3bc1d6['shift']());}};_0x547f5f(++_0x3c6269);}(_0x3fec,0x1ba));var _0xc3fe=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x3fec[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0xc3fe('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xc3fe('0x1'));var rp=require(_0xc3fe('0x2'));var moment=require('moment');var BPromise=require(_0xc3fe('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0xc3fe('0x4'));var sox=require('sox');var csv=require(_0xc3fe('0x5'));var ejs=require(_0xc3fe('0x6'));var fs=require('fs');var fs_extra=require(_0xc3fe('0x7'));var _=require(_0xc3fe('0x8'));var squel=require(_0xc3fe('0x9'));var crypto=require(_0xc3fe('0xa'));var jsforce=require(_0xc3fe('0xb'));var deskjs=require(_0xc3fe('0xc'));var toCsv=require(_0xc3fe('0x5'));var querystring=require(_0xc3fe('0xd'));var Papa=require(_0xc3fe('0xe'));var Redis=require(_0xc3fe('0xf'));var authService=require(_0xc3fe('0x10'));var qs=require(_0xc3fe('0x11'));var as=require(_0xc3fe('0x12'));var pdf=require(_0xc3fe('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc3fe('0x14'))(_0xc3fe('0x15'));var utils=require('../../config/utils');var config=require(_0xc3fe('0x16'));var licenseUtil=require(_0xc3fe('0x17'));var db=require(_0xc3fe('0x18'))['db'];config[_0xc3fe('0x19')]=_[_0xc3fe('0x1a')](config[_0xc3fe('0x19')],{'host':_0xc3fe('0x1b'),'port':0x18eb});var socket=require(_0xc3fe('0x1c'))(new Redis(config[_0xc3fe('0x19')]));require(_0xc3fe('0x1d'))['register'](socket);function respondWithStatusCode(_0x400476,_0x531fa5){_0x531fa5=_0x531fa5||0xcc;return function(_0x10091c){if(_0x10091c){return _0x400476[_0xc3fe('0x1e')](_0x531fa5);}return _0x400476[_0xc3fe('0x1f')](_0x531fa5)[_0xc3fe('0x20')]();};}function respondWithResult(_0x17edb6,_0x39705c){_0x39705c=_0x39705c||0xc8;return function(_0x1e291f){if(_0x1e291f){return _0x17edb6[_0xc3fe('0x1f')](_0x39705c)[_0xc3fe('0x21')](_0x1e291f);}};}function respondWithFilteredResult(_0x8d0835,_0x376fff){return function(_0x442fbd){if(_0x442fbd){var _0x423447=typeof _0x376fff[_0xc3fe('0x22')]===_0xc3fe('0x23')&&typeof _0x376fff['limit']===_0xc3fe('0x23');var _0x203d40=_0x442fbd[_0xc3fe('0x24')];var _0x599ea5=_0x423447?0x0:_0x376fff[_0xc3fe('0x22')];var _0x374fb4=_0x423447?_0x442fbd['count']:_0x376fff['offset']+_0x376fff[_0xc3fe('0x25')];var _0x434eb8;if(_0x374fb4>=_0x203d40){_0x374fb4=_0x203d40;_0x434eb8=0xc8;}else{_0x434eb8=0xce;}_0x8d0835[_0xc3fe('0x1f')](_0x434eb8);return _0x8d0835['set'](_0xc3fe('0x26'),_0x599ea5+'-'+_0x374fb4+'/'+_0x203d40)[_0xc3fe('0x21')](_0x442fbd);}return null;};}function patchUpdates(_0x3f9418){return function(_0x3c0ac4){try{jsonpatch[_0xc3fe('0x27')](_0x3c0ac4,_0x3f9418,!![]);}catch(_0x474195){return BPromise[_0xc3fe('0x28')](_0x474195);}return _0x3c0ac4[_0xc3fe('0x29')]();};}function saveUpdates(_0x2c4727,_0x30657f){return function(_0x3b4423){if(_0x3b4423){return _0x3b4423[_0xc3fe('0x2a')](_0x2c4727)['then'](function(_0x3220e7){return _0x3220e7;});}return null;};}function removeEntity(_0x1caee8,_0x1d3c16){return function(_0x3e8075){if(_0x3e8075){return _0x3e8075[_0xc3fe('0x2b')]()['then'](function(){_0x1caee8[_0xc3fe('0x1f')](0xcc)[_0xc3fe('0x20')]();});}};}function handleEntityNotFound(_0x2bfaa0,_0x1593b0){return function(_0x820b7f){if(!_0x820b7f){_0x2bfaa0[_0xc3fe('0x1e')](0x194);}return _0x820b7f;};}function handleError(_0x2dac90,_0x267b89){_0x267b89=_0x267b89||0x1f4;return function(_0xa74edf){logger[_0xc3fe('0x2c')](_0xa74edf[_0xc3fe('0x2d')]);if(_0xa74edf[_0xc3fe('0x2e')]){delete _0xa74edf[_0xc3fe('0x2e')];}_0x2dac90[_0xc3fe('0x1f')](_0x267b89)[_0xc3fe('0x2f')](_0xa74edf);};}function getInteractionUsers(_0x1339e7,_0x3cb4a7){return new BPromise(function(_0xe2117a,_0x5ac845){try{if(_0x3cb4a7[_0x1339e7['id']]){_0x1339e7[_0xc3fe('0x30')]=_[_0xc3fe('0x31')](_0x3cb4a7[_0x1339e7['id']],function(_0x4658c5){return{'id':_0x4658c5['id'],'fullname':_0x4658c5[_0xc3fe('0x32')]};});}}catch(_0x11a44e){_0x5ac845(_0x11a44e);}_0xe2117a(_0x1339e7);});}function getInteractionTags(_0x293999,_0x3f4573){return new BPromise(function(_0x28fc3b,_0x6fe063){try{if(_0x293999[_0xc3fe('0x33')]){_0x293999[_0xc3fe('0x34')]=[];_0x293999['TagIds']['split'](',')['forEach'](function(_0x26f65d){_0x293999[_0xc3fe('0x34')]['push'](_0x3f4573[_0x26f65d]);});}delete _0x293999[_0xc3fe('0x33')];}catch(_0x32f7b2){_0x6fe063(_0x32f7b2);}_0x28fc3b(_0x293999);});}function updateWhatsappInteraction(_0x5f37c0,_0x5b76ae,_0x38c948){return new BPromise(function(_0x237680,_0xd8aa2c){return getInteractionUsers(_0x5f37c0,_0x38c948)[_0xc3fe('0x35')](function(_0x5716b0){return getInteractionTags(_0x5716b0,_0x5b76ae);})['then'](function(_0x403283){_0x237680(_0x403283);})[_0xc3fe('0x36')](function(_0x4c47ef){_0xd8aa2c(_0x4c47ef);});});}exports[_0xc3fe('0x37')]=function(_0x5a9711,_0x299b61){var _0x484e59={},_0x1b0090={},_0x4e694d={'count':0x0,'rows':[]};var _0x7fc7fb=_[_0xc3fe('0x31')](db['WhatsappInteraction'][_0xc3fe('0x38')],function(_0x37e615){return{'name':_0x37e615['fieldName'],'type':_0x37e615[_0xc3fe('0x39')]['key']};});_0x1b0090[_0xc3fe('0x3a')]=_[_0xc3fe('0x31')](_0x7fc7fb,_0xc3fe('0x2e'));_0x1b0090[_0xc3fe('0x3b')]=_[_0xc3fe('0x3c')](_0x5a9711['query']);_0x1b0090[_0xc3fe('0x3d')]=_[_0xc3fe('0x3e')](_0x1b0090[_0xc3fe('0x3a')],_0x1b0090[_0xc3fe('0x3b')]);_0x484e59[_0xc3fe('0x3f')]=_[_0xc3fe('0x3e')](_0x1b0090[_0xc3fe('0x3a')],qs['fields'](_0x5a9711[_0xc3fe('0x3b')][_0xc3fe('0x40')]));_0x484e59[_0xc3fe('0x3f')]=_0x484e59[_0xc3fe('0x3f')][_0xc3fe('0x41')]?_0x484e59[_0xc3fe('0x3f')]:_0x1b0090[_0xc3fe('0x3a')];if(!_0x5a9711['query']['hasOwnProperty'](_0xc3fe('0x42'))){_0x484e59['limit']=qs['limit'](_0x5a9711[_0xc3fe('0x3b')][_0xc3fe('0x25')]);_0x484e59[_0xc3fe('0x22')]=qs[_0xc3fe('0x22')](_0x5a9711['query'][_0xc3fe('0x22')]);}_0x484e59[_0xc3fe('0x43')]=qs[_0xc3fe('0x44')](_0x5a9711['query'][_0xc3fe('0x44')]);_0x484e59[_0xc3fe('0x45')]=qs[_0xc3fe('0x3d')](_['pick'](_0x5a9711['query'],_0x1b0090['filters']),_0x7fc7fb);var _0x47551b=[];var _0x1530ff=squel[_0xc3fe('0x46')]()[_0xc3fe('0x47')]('id')[_0xc3fe('0x47')](_0xc3fe('0x2e'))[_0xc3fe('0x47')]('color')[_0xc3fe('0x48')](_0xc3fe('0x49'));var _0x97dded=squel[_0xc3fe('0x46')]()[_0xc3fe('0x47')](_0xc3fe('0x4a'))['field'](_0xc3fe('0x4b'))[_0xc3fe('0x47')](_0xc3fe('0x4c'))[_0xc3fe('0x48')](_0xc3fe('0x4d'),'ui')[_0xc3fe('0x4e')](_0xc3fe('0x4f'),'u',_0xc3fe('0x50'));var _0x4328b0=squel[_0xc3fe('0x46')]()['from'](_0xc3fe('0x51'),'i')[_0xc3fe('0x4e')](_0xc3fe('0x52'),'c',_0xc3fe('0x53'))[_0xc3fe('0x4e')](_0xc3fe('0x4f'),'o',_0xc3fe('0x54'))[_0xc3fe('0x4e')](_0xc3fe('0x55'),'a',_0xc3fe('0x56'))[_0xc3fe('0x4e')](_0xc3fe('0x57'),'me',_0xc3fe('0x58'))[_0xc3fe('0x4e')]('whatsapp_interaction_has_tags','it',_0xc3fe('0x59'))[_0xc3fe('0x4e')](_0xc3fe('0x49'),'t','t.id\x20=\x20it.TagId');var _0x1700e9=squel[_0xc3fe('0x5a')]();var _0x2668fb=[];var _0x49be8b=squel[_0xc3fe('0x5a')]();var _0x5a3c2c;if(_0x5a9711['query'][_0xc3fe('0x5b')]){_0x5a3c2c=as[_0xc3fe('0x5c')](_0x5a9711['query'][_0xc3fe('0x5b')]);var _0x400133=_0x5a3c2c['sqlOperator'];for(var _0xbbe076=0x0;_0xbbe076<_0x5a3c2c[_0xc3fe('0x5d')][_0xc3fe('0x41')];_0xbbe076++){var _0x3f85c0=_0x5a3c2c['conditions'][_0xbbe076];var _0x5d7b8a='i';var _0x196583=_[_0xc3fe('0x5e')](_0x7fc7fb,[_0xc3fe('0x2e'),_0x3f85c0['field']]);if(!_0x196583){switch(_0x3f85c0[_0xc3fe('0x47')]){case _0xc3fe('0x5f'):if(_0x3f85c0[_0xc3fe('0x60')]==0x1){_0x4328b0['having']('`'+_0x3f85c0[_0xc3fe('0x47')]+_0xc3fe('0x61'));}else{_0x4328b0['having']('`'+_0x3f85c0[_0xc3fe('0x47')]+_0xc3fe('0x62'));}break;case _0xc3fe('0x63'):if(_0x3f85c0[_0xc3fe('0x64')]===_0xc3fe('0x65')){if(_0x3f85c0[_0xc3fe('0x60')][_0xc3fe('0x66')]('\x20')[_0xc3fe('0x41')]>0x1){_0x1700e9[_0x400133](_0xc3fe('0x67'),qs['getFullTextValue'](_0x3f85c0[_0xc3fe('0x60')]),null);}else{var _0x5d1b6d='%'+_0x3f85c0[_0xc3fe('0x60')]+'%';_0x1700e9[_0x400133](_0xc3fe('0x68'),_0x5d1b6d,_0x5d1b6d,_0x5d1b6d);}}else{_0x196583=_['find'](_0x7fc7fb,[_0xc3fe('0x2e'),_0xc3fe('0x69')]);_0x3f85c0[_0xc3fe('0x47')]='ContactId';_0x51370d=as[_0xc3fe('0x6a')](_0x5d7b8a,_0x196583[_0xc3fe('0x39')],_0x3f85c0);_0x1700e9[_0x400133](_0x51370d[_0xc3fe('0x6b')],_0x51370d['value'][_0xc3fe('0x6c')],_0x51370d[_0xc3fe('0x60')][_0xc3fe('0x20')]);}break;case _0xc3fe('0x6d'):var _0x17fc18=_0x3f85c0[_0xc3fe('0x60')][_0xc3fe('0x66')](',')['map'](function(_0x11e5bf){return Number(_0x11e5bf);});_0x17fc18[_0xc3fe('0x6e')](function(_0x1ab9c8){_0x49be8b['or'](_0xc3fe('0x6f'),'%,'+_0x1ab9c8+',%');});_0x2668fb=_[_0xc3fe('0x70')](_0x2668fb,_0x17fc18);break;case _0xc3fe('0x71'):if(_0x3f85c0[_0xc3fe('0x64')]===_0xc3fe('0x65')){_0x1700e9[_0x400133](_0xc3fe('0x72'),'%'+_0x3f85c0[_0xc3fe('0x60')]+'%',null);}else{_0x196583=_[_0xc3fe('0x5e')](_0x7fc7fb,['name',_0xc3fe('0x73')]);_0x3f85c0[_0xc3fe('0x47')]='UserId';_0x51370d=as[_0xc3fe('0x6a')](_0x5d7b8a,_0x196583['type'],_0x3f85c0);_0x1700e9[_0x400133](_0x51370d[_0xc3fe('0x6b')],_0x51370d[_0xc3fe('0x60')][_0xc3fe('0x6c')],_0x51370d[_0xc3fe('0x60')][_0xc3fe('0x20')]);}break;case'body':_0x51370d=as[_0xc3fe('0x6a')]('me',null,_0x3f85c0);_0x1700e9[_0x400133](_0x51370d['text'],_0x51370d[_0xc3fe('0x60')]['start'],_0x51370d[_0xc3fe('0x60')][_0xc3fe('0x20')]);break;}}else{var _0x51370d=as[_0xc3fe('0x6a')](_0x5d7b8a,_0x196583[_0xc3fe('0x39')],_0x3f85c0);_0x1700e9[_0x400133](_0x51370d[_0xc3fe('0x6b')],_0x51370d[_0xc3fe('0x60')][_0xc3fe('0x6c')],_0x51370d[_0xc3fe('0x60')][_0xc3fe('0x20')]);}}}else{var _0x418b54=_(_0x5a9711['query'])[_0xc3fe('0x3c')]()[_0xc3fe('0x31')](function(_0x3f95fe){return _[_0xc3fe('0x74')](_0x7fc7fb,['name',_0x3f95fe])?_0x3f95fe:undefined;})['compact']()[_0xc3fe('0x60')]();if(!_[_0xc3fe('0x75')](_0x418b54)){_0x418b54[_0xc3fe('0x6e')](function(_0x1a853d){if(_0x1a853d===_0xc3fe('0x76')){_0x4328b0[_0xc3fe('0x45')](_0xc3fe('0x77'),[][_0xc3fe('0x78')](_0x5a9711[_0xc3fe('0x3b')][_0x1a853d]));}else if(_0x1a853d==='createdAt'){var _0x459e46=JSON[_0xc3fe('0x79')](_0x5a9711[_0xc3fe('0x3b')][_0x1a853d])['$gte'];var _0xae8545=JSON[_0xc3fe('0x79')](_0x5a9711[_0xc3fe('0x3b')][_0x1a853d])[_0xc3fe('0x7a')];_0x4328b0[_0xc3fe('0x45')](_0xc3fe('0x7b'),_0x459e46,_0xae8545);}else{if(_0x5a9711[_0xc3fe('0x3b')][_0x1a853d]===_0xc3fe('0x7c')){_0x4328b0[_0xc3fe('0x45')]('i.'+_0x1a853d+_0xc3fe('0x7d'));}else{_0x4328b0[_0xc3fe('0x45')]('i.'+_0x1a853d+_0xc3fe('0x7e'),_0x5a9711[_0xc3fe('0x3b')][_0x1a853d]);}}});}if(_0x5a9711[_0xc3fe('0x3b')]['read']){if(_0x5a9711['query'][_0xc3fe('0x7f')]==0x1){_0x4328b0['having'](_0xc3fe('0x80'));}else{_0x4328b0[_0xc3fe('0x81')]('`unreadMessages`\x20>\x200');}}if(_0x5a9711[_0xc3fe('0x3b')]['tag']){_0x2668fb=_[_0xc3fe('0x82')](_0x5a9711['query'][_0xc3fe('0x83')])?_0x5a9711[_0xc3fe('0x3b')]['tag']:new Array(_0x5a9711[_0xc3fe('0x3b')][_0xc3fe('0x83')]);_0x2668fb[_0xc3fe('0x6e')](function(_0x2a5a54){_0x49be8b['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x2a5a54+',%');});}if(_0x5a9711[_0xc3fe('0x3b')]['filter']){var _0x12cdb1=_0x5a9711[_0xc3fe('0x3b')]['filter'][_0xc3fe('0x84')]('\x5c','\x5c\x5c')[_0xc3fe('0x84')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x12cdb1)){_0x1700e9['or'](_0xc3fe('0x85'),_0x12cdb1+'%')['or'](_0xc3fe('0x86'),_0x12cdb1+'%');}else{_0x1700e9['or'](_0xc3fe('0x87'),qs[_0xc3fe('0x88')](_0x12cdb1))['or'](_0xc3fe('0x89'),_0x12cdb1+'%');}}}_0x4328b0['where'](_0x1700e9);_0x4328b0[_0xc3fe('0x8a')](_0xc3fe('0x8b'));var _0xa15ef2={'type':db['Sequelize'][_0xc3fe('0x8c')]['SELECT'],'raw':!![]};var _0x1658ec=_0x4328b0['clone']();_0x1658ec['field']('i.id');_0x1658ec['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xc3fe('0x5f'));if(_0x484e59[_0xc3fe('0x43')]){_0x484e59[_0xc3fe('0x43')][_0xc3fe('0x6e')](function(_0x5253a0){var _0x505455=_0x5253a0[0x0]===_0xc3fe('0x8d')?_0x5253a0[0x0]:'i.'+_0x5253a0[0x0];_0x4328b0[_0xc3fe('0x43')](_0x505455,_0x5253a0[0x1]===_0xc3fe('0x8e')?![]:!![]);});}if(!_[_0xc3fe('0x75')](_0x2668fb)){_0x4328b0[_0xc3fe('0x81')](_0x49be8b);_0x1658ec[_0xc3fe('0x45')](_0xc3fe('0x8f'),_0x2668fb);}BPromise[_0xc3fe('0x90')]()[_0xc3fe('0x35')](function(){if(!_0x5a3c2c){if(_0x5a9711['query'][_0xc3fe('0x76')])return;_0x1658ec[_0xc3fe('0x45')](_0xc3fe('0x91'));_0x4328b0['where'](_0xc3fe('0x91'));return;}if(_0x5a9711[_0xc3fe('0x92')][_0xc3fe('0x93')]!==_0xc3fe('0x94'))return;return _0x5a9711['user'][_0xc3fe('0x95')]({'attributes':['id'],'raw':!![]})[_0xc3fe('0x35')](function(_0x595534){if(_['isEmpty'](_0x595534)){_0x1658ec[_0xc3fe('0x45')]('i.WhatsappAccountId\x20IS\x20NULL');_0x4328b0[_0xc3fe('0x45')]('i.WhatsappAccountId\x20IS\x20NULL');}else{_0x1658ec[_0xc3fe('0x45')]('i.WhatsappAccountId\x20IN\x20?',_[_0xc3fe('0x31')](_0x595534,'id'));_0x4328b0[_0xc3fe('0x45')](_0xc3fe('0x77'),_[_0xc3fe('0x31')](_0x595534,'id'));}});})[_0xc3fe('0x35')](function(){if(_0x5a9711['user'][_0xc3fe('0x93')]==='agent'&&!_0x5a3c2c&&!_0x5a9711['query']['WhatsappAccountId'])return[];return db['sequelize']['query'](_0x1658ec[_0xc3fe('0x96')](),_0xa15ef2);})[_0xc3fe('0x35')](function(_0x3feb30){_0x4e694d[_0xc3fe('0x24')]=_0x3feb30[_0xc3fe('0x41')];if(_0x4e694d[_0xc3fe('0x24')]===0x0)return[];return db[_0xc3fe('0x97')][_0xc3fe('0x3b')](_0x1530ff['toString'](),_0xa15ef2)[_0xc3fe('0x35')](function(_0x2b21dc){_0x47551b=_[_0xc3fe('0x98')](_0x2b21dc,'id');_0xa15ef2=_['merge'](_0xa15ef2,{'model':db[_0xc3fe('0x99')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5a9711[_0xc3fe('0x3b')][_0xc3fe('0x40')]){_0x484e59[_0xc3fe('0x3f')][_0xc3fe('0x6e')](function(_0x53c2e3){_0x4328b0[_0xc3fe('0x47')]('i.'+_0x53c2e3);});}else{_0x4328b0[_0xc3fe('0x47')](_0xc3fe('0x9a'),_0xc3fe('0x5f'));_0x4328b0[_0xc3fe('0x47')](_0xc3fe('0x9b'),'Account.key');_0x4328b0[_0xc3fe('0x47')]('a.mandatoryDisposition','Account.mandatoryDisposition');_0x4328b0[_0xc3fe('0x47')](_0xc3fe('0x9c'),_0xc3fe('0x8d'));_0x4328b0['field'](_0xc3fe('0x9d'));_0x4328b0['field'](_0xc3fe('0x9e'),_0xc3fe('0x9f'));_0x4328b0[_0xc3fe('0x47')]('c.lastName',_0xc3fe('0xa0'));_0x4328b0[_0xc3fe('0x47')](_0xc3fe('0xa1'),'Contact.email');_0x4328b0[_0xc3fe('0x47')](_0xc3fe('0xa2'),'Contact.phone');_0x4328b0[_0xc3fe('0x47')](_0xc3fe('0xa3'),'Contact.mobile');_0x4328b0[_0xc3fe('0x47')](_0xc3fe('0xa4'),_0xc3fe('0xa5'));_0x4328b0[_0xc3fe('0x47')](_0xc3fe('0xa6'),_0xc3fe('0xa7'));_0x4328b0['field'](_0xc3fe('0xa8'),_0xc3fe('0xa9'));_0x4328b0[_0xc3fe('0x47')](_0xc3fe('0xaa'),_0xc3fe('0x33'));}if(_0x484e59[_0xc3fe('0x25')])_0x4328b0[_0xc3fe('0x25')](_0x484e59[_0xc3fe('0x25')]);if(_0x484e59['offset'])_0x4328b0[_0xc3fe('0x22')](_0x484e59[_0xc3fe('0x22')]);return db['sequelize'][_0xc3fe('0x3b')](_0x4328b0[_0xc3fe('0x96')](),_0xa15ef2);})['then'](function(_0x15f1f5){if(_0x15f1f5[_0xc3fe('0x41')]>0x0)_0x97dded[_0xc3fe('0x45')](_0xc3fe('0xab'),_[_0xc3fe('0x31')](_0x15f1f5,'id'));return db['sequelize'][_0xc3fe('0x3b')](_0x97dded[_0xc3fe('0x96')](),_0xa15ef2)[_0xc3fe('0x35')](function(_0x2da6a2){var _0x1f03e7=_[_0xc3fe('0xac')](_0x2da6a2,'WhatsappInteractionId');var _0x408569=[];_0x15f1f5['forEach'](function(_0x535b2d){_0x408569['push'](updateWhatsappInteraction(_0x535b2d,_0x47551b,_0x1f03e7));});return BPromise[_0xc3fe('0xad')](_0x408569);});});})[_0xc3fe('0x35')](function(_0x4fef1c){_0x4e694d[_0xc3fe('0xae')]=_0x4fef1c;return _0x4e694d;})[_0xc3fe('0x35')](respondWithFilteredResult(_0x299b61,_0x484e59))['catch'](handleError(_0x299b61,null));};exports[_0xc3fe('0xaf')]=function(_0x18824b,_0x27612b){var _0x25d04e={'raw':![],'where':{'id':_0x18824b[_0xc3fe('0xb0')]['id']}},_0x19d290={};_0x19d290[_0xc3fe('0x3a')]=_['keys'](db['WhatsappInteraction'][_0xc3fe('0x38')]);_0x19d290['query']=_[_0xc3fe('0x3c')](_0x18824b[_0xc3fe('0x3b')]);_0x19d290[_0xc3fe('0x3d')]=_[_0xc3fe('0x3e')](_0x19d290[_0xc3fe('0x3a')],_0x19d290['query']);_0x25d04e[_0xc3fe('0x3f')]=_[_0xc3fe('0x3e')](_0x19d290[_0xc3fe('0x3a')],qs[_0xc3fe('0x40')](_0x18824b[_0xc3fe('0x3b')][_0xc3fe('0x40')]));_0x25d04e['attributes']=_0x25d04e[_0xc3fe('0x3f')][_0xc3fe('0x41')]?_0x25d04e[_0xc3fe('0x3f')]:_0x19d290[_0xc3fe('0x3a')];if(_0x18824b[_0xc3fe('0x3b')][_0xc3fe('0xb1')]){_0x25d04e[_0xc3fe('0xb2')]=[{'all':!![]}];}_0x25d04e=_[_0xc3fe('0xb3')]({},_0x25d04e,_0x18824b[_0xc3fe('0xb4')]);return db[_0xc3fe('0x99')]['find'](_0x25d04e)['then'](handleEntityNotFound(_0x27612b,null))[_0xc3fe('0x35')](respondWithResult(_0x27612b,null))[_0xc3fe('0x36')](handleError(_0x27612b,null));};exports[_0xc3fe('0xb5')]=function(_0x337cf5,_0xa5f641){return db['WhatsappInteraction'][_0xc3fe('0xb5')](_0x337cf5[_0xc3fe('0xb6')],{})[_0xc3fe('0x35')](respondWithResult(_0xa5f641,0xc9))[_0xc3fe('0x36')](handleError(_0xa5f641,null));};exports[_0xc3fe('0x2a')]=function(_0x4cf865,_0x9c1439){if(_0x4cf865[_0xc3fe('0xb6')]['id']){delete _0x4cf865['body']['id'];}return db['WhatsappInteraction'][_0xc3fe('0x5e')]({'where':{'id':_0x4cf865[_0xc3fe('0xb0')]['id']}})['then'](handleEntityNotFound(_0x9c1439,null))[_0xc3fe('0x35')](saveUpdates(_0x4cf865[_0xc3fe('0xb6')],null))[_0xc3fe('0x35')](respondWithResult(_0x9c1439,null))[_0xc3fe('0x36')](handleError(_0x9c1439,null));};exports[_0xc3fe('0x2b')]=function(_0x216902,_0x2d58e7){return db[_0xc3fe('0x99')][_0xc3fe('0x5e')]({'where':{'id':_0x216902[_0xc3fe('0xb0')]['id']}})['then'](handleEntityNotFound(_0x2d58e7,null))['then'](removeEntity(_0x2d58e7,null))['catch'](handleError(_0x2d58e7,null));};exports['describe']=function(_0x2406e1,_0x88905f){return db[_0xc3fe('0x99')][_0xc3fe('0xb7')]()[_0xc3fe('0x35')](respondWithResult(_0x88905f,null))['catch'](handleError(_0x88905f,null));};exports[_0xc3fe('0xb8')]=function(_0x12c82c,_0x56f819,_0x2baff1){return db[_0xc3fe('0xb9')][_0xc3fe('0x5e')]({'where':{'id':_0x12c82c[_0xc3fe('0xb0')]['id']}})[_0xc3fe('0x35')](handleEntityNotFound(_0x56f819,null))[_0xc3fe('0x35')](function(_0x11a393){if(_0x11a393){return _0x11a393['addMessage'](_0x12c82c[_0xc3fe('0xb6')]['ids'],_[_0xc3fe('0xba')](_0x12c82c['body'],[_0xc3fe('0xbb'),'id'])||{});}})['then'](respondWithResult(_0x56f819,null))[_0xc3fe('0x36')](handleError(_0x56f819,null));};exports[_0xc3fe('0xbc')]=function(_0x7d7f75,_0x419ce4,_0x823934){var _0x174553={'raw':![],'where':{}};var _0x598f4a={};var _0x5e88ba={'count':0x0,'rows':[]};return db[_0xc3fe('0x99')][_0xc3fe('0xbd')]({'where':{'id':_0x7d7f75[_0xc3fe('0xb0')]['id']}})[_0xc3fe('0x35')](handleEntityNotFound(_0x419ce4,null))[_0xc3fe('0x35')](function(_0x4130d4){if(_0x4130d4){_0x598f4a[_0xc3fe('0x3a')]=_['keys'](db[_0xc3fe('0xb9')][_0xc3fe('0x38')]);_0x598f4a[_0xc3fe('0x3b')]=_['keys'](_0x7d7f75['query']);_0x598f4a[_0xc3fe('0x3d')]=_['intersection'](_0x598f4a[_0xc3fe('0x3a')],_0x598f4a[_0xc3fe('0x3b')]);_0x174553[_0xc3fe('0x3f')]=_[_0xc3fe('0x3e')](_0x598f4a[_0xc3fe('0x3a')],qs[_0xc3fe('0x40')](_0x7d7f75['query'][_0xc3fe('0x40')]));_0x174553[_0xc3fe('0x3f')]=_0x174553[_0xc3fe('0x3f')][_0xc3fe('0x41')]?_0x174553['attributes']:_0x598f4a['model'];if(!_0x7d7f75[_0xc3fe('0x3b')][_0xc3fe('0xbe')](_0xc3fe('0x42'))){_0x174553[_0xc3fe('0x25')]=qs[_0xc3fe('0x25')](_0x7d7f75[_0xc3fe('0x3b')]['limit']);_0x174553['offset']=qs[_0xc3fe('0x22')](_0x7d7f75['query'][_0xc3fe('0x22')]);}_0x174553[_0xc3fe('0x43')]=qs[_0xc3fe('0x44')](_0x7d7f75[_0xc3fe('0x3b')][_0xc3fe('0x44')]);_0x174553['where']=qs[_0xc3fe('0x3d')](_[_0xc3fe('0xbf')](_0x7d7f75[_0xc3fe('0x3b')],_0x598f4a[_0xc3fe('0x3d')]));_0x174553[_0xc3fe('0x45')][_0xc3fe('0xc0')]=_0x4130d4['id'];if(_0x7d7f75['query'][_0xc3fe('0xc1')]){_0x174553[_0xc3fe('0x45')]=_[_0xc3fe('0xb3')](_0x174553[_0xc3fe('0x45')],{'$or':_[_0xc3fe('0x31')](_0x174553[_0xc3fe('0x3f')],function(_0x3329a6){var _0x58b145={};_0x58b145[_0x3329a6]={'$like':'%'+_0x7d7f75[_0xc3fe('0x3b')][_0xc3fe('0xc1')]+'%'};return _0x58b145;})});}if(_0x7d7f75['query']['$gte']){var _0x493784=_0x7d7f75['query'][_0xc3fe('0xc2')][_0xc3fe('0x66')](',');var _0x361e01={};_0x361e01[_0x493784[0x0]]={'$gte':moment(_0x493784[0x1])[_0xc3fe('0xc3')](_0xc3fe('0xc4'))};_0x174553[_0xc3fe('0x45')]=_['merge'](_0x174553[_0xc3fe('0x45')],_0x361e01);}_0x174553=_[_0xc3fe('0xb3')]({},_0x174553,_0x7d7f75[_0xc3fe('0xb4')]);return db[_0xc3fe('0xb9')][_0xc3fe('0x24')]({'where':_0x174553['where']})[_0xc3fe('0x35')](function(_0x498b06){_0x5e88ba['count']=_0x498b06;if(_0x7d7f75[_0xc3fe('0x3b')]['includeAll']){_0x174553['include']=[{'all':!![]}];}return db['WhatsappMessage']['findAll'](_0x174553);})[_0xc3fe('0x35')](function(_0xa4d534){_0x5e88ba[_0xc3fe('0xae')]=_0xa4d534;return _0x5e88ba;});}})[_0xc3fe('0x35')](respondWithFilteredResult(_0x419ce4,_0x174553))['catch'](handleError(_0x419ce4,null));};exports[_0xc3fe('0xc5')]=function(_0x444373,_0x49de72,_0x108ef3){return db[_0xc3fe('0x99')][_0xc3fe('0x5e')]({'where':{'id':_0x444373[_0xc3fe('0xb0')]['id']}})[_0xc3fe('0x35')](handleEntityNotFound(_0x49de72,null))[_0xc3fe('0x35')](function(_0x1057ca){if(_0x1057ca){return _0x1057ca[_0xc3fe('0xc6')](_0x444373[_0xc3fe('0xb6')][_0xc3fe('0xbb')],_['omit'](_0x444373[_0xc3fe('0xb6')],['ids','id'])||{})['spread'](function(){return db[_0xc3fe('0x6d')]['findAll']({'attributes':['id',_0xc3fe('0x2e'),_0xc3fe('0xc7')],'where':{'id':_0x444373[_0xc3fe('0xb6')][_0xc3fe('0xbb')]}});})['then'](function(_0x5b9c81){socket[_0xc3fe('0xc8')](_0xc3fe('0xc9'),{'id':Number(_0x444373[_0xc3fe('0xb0')]['id']),'tags':_0x5b9c81||[]});return{'id':Number(_0x444373[_0xc3fe('0xb0')]['id']),'tags':_0x5b9c81||[]};});}})[_0xc3fe('0x35')](respondWithResult(_0x49de72,null))['catch'](handleError(_0x49de72,null));};exports[_0xc3fe('0xca')]=function(_0x29a1a3,_0x47762c,_0x307444){return db[_0xc3fe('0x99')][_0xc3fe('0x5e')]({'where':{'id':_0x29a1a3[_0xc3fe('0xb0')]['id']}})[_0xc3fe('0x35')](handleEntityNotFound(_0x47762c,null))[_0xc3fe('0x35')](function(_0x22a19c){if(_0x22a19c){return _0x22a19c[_0xc3fe('0xca')](_0x29a1a3['query'][_0xc3fe('0xbb')]);}})[_0xc3fe('0x35')](respondWithStatusCode(_0x47762c,null))[_0xc3fe('0x36')](handleError(_0x47762c,null));};exports['download']=function(_0x3cee59,_0x1a937a){var _0x568316=moment()['unix']()['toString']();var _0x58833d=path[_0xc3fe('0xcb')](config['root'],_0xc3fe('0xcc'),'files',_0xc3fe('0xcd'));var _0x5dd377=path['join'](config[_0xc3fe('0xce')],_0xc3fe('0xcc'),_0xc3fe('0xcf'),_0xc3fe('0xd0'));var _0x2652ac=path['join'](_0x58833d,_0x568316);var _0x30893e=util[_0xc3fe('0xc3')](_0xc3fe('0xd1'),_0x3cee59[_0xc3fe('0xb0')]['id'],_0x568316);var _0x34ab0e=path['join'](_0x58833d,_0x30893e);var _0x36a92b=[];_0x36a92b['push']({'model':db[_0xc3fe('0x71')],'as':'User','attributes':['id',_0xc3fe('0x32')],'raw':!![]});_0x36a92b[_0xc3fe('0xd2')]({'model':db[_0xc3fe('0xd3')],'as':'Contact','attributes':['id',_0xc3fe('0xd4'),_0xc3fe('0xd5')],'raw':!![]});if(_0x3cee59[_0xc3fe('0x3b')][_0xc3fe('0xd0')]){_0x36a92b[_0xc3fe('0xd2')]({'model':db[_0xc3fe('0xd6')],'as':_0xc3fe('0xd6'),'raw':!![]});}var _0x2bdf99=[{'model':db[_0xc3fe('0xb9')],'as':_0xc3fe('0xd7'),'attributes':['id',_0xc3fe('0xb6'),_0xc3fe('0xd8'),_0xc3fe('0xd9'),_0xc3fe('0xda'),_0xc3fe('0x7f')],'include':_0x36a92b}];_0x2bdf99[_0xc3fe('0xd2')]({'model':db[_0xc3fe('0xdb')],'as':'Account','attributes':['id','name']});_0x2bdf99[_0xc3fe('0xd2')]({'model':db[_0xc3fe('0x71')],'as':_0xc3fe('0xdc'),'attributes':['id',_0xc3fe('0x32')]});return db[_0xc3fe('0x99')][_0xc3fe('0x5e')]({'where':{'id':_0x3cee59['params']['id']},'include':_0x2bdf99})[_0xc3fe('0x35')](handleEntityNotFound(_0x1a937a,null))[_0xc3fe('0x35')](function(_0x4ee511){if(_0x4ee511){var _0x14aada=_0x4ee511[_0xc3fe('0xdd')]({'plain':!![]});fs[_0xc3fe('0xde')](_0x2652ac);var _0x38febe={'channel':_0xc3fe('0xdf'),'account':_0x14aada[_0xc3fe('0xe0')]['name'],'agent':_0x14aada['Owner']?_0x14aada[_0xc3fe('0xdc')][_0xc3fe('0x32')]:_0xc3fe('0xe1'),'createdAt':moment(_0x14aada[_0xc3fe('0xd8')])['format'](_0xc3fe('0xc4'))[_0xc3fe('0x96')](),'closedAt':_0x14aada[_0xc3fe('0xe2')]?moment(_0x14aada[_0xc3fe('0xe3')])[_0xc3fe('0xc3')](_0xc3fe('0xc4'))[_0xc3fe('0x96')]():'','disposition':_0x14aada[_0xc3fe('0xe4')],'messages':_(_0x14aada[_0xc3fe('0xd7')])[_0xc3fe('0xc1')]({'secret':![]})[_0xc3fe('0x31')](function(_0x3d4a3e){if(_0x3d4a3e[_0xc3fe('0xd6')]){var _0x18a52c=path['join'](_0x5dd377,_0x3d4a3e[_0xc3fe('0xd6')][_0xc3fe('0xe5')]);if(fs[_0xc3fe('0xe6')](_0x18a52c)){fs[_0xc3fe('0xe7')](_0x18a52c)['pipe'](fs['createWriteStream'](path[_0xc3fe('0xcb')](_0x2652ac,_0x3d4a3e[_0xc3fe('0xd6')][_0xc3fe('0xe5')])));}}return{'date':moment(_0x3d4a3e[_0xc3fe('0xd8')])[_0xc3fe('0xc3')](_0xc3fe('0xc4'))[_0xc3fe('0x96')](),'sender':_0x3d4a3e[_0xc3fe('0xd9')]==='out'?_0x3d4a3e[_0xc3fe('0x71')]?_0x3d4a3e[_0xc3fe('0x71')][_0xc3fe('0x32')]:_0xc3fe('0xe8'):_0x3d4a3e[_0xc3fe('0x63')][_0xc3fe('0xd4')]+(_0x3d4a3e[_0xc3fe('0x63')]['lastName']?'\x20'+_0x3d4a3e[_0xc3fe('0x63')][_0xc3fe('0xd5')]:''),'body':_0x3d4a3e[_0xc3fe('0xd6')]?_0x3d4a3e[_0xc3fe('0xd6')][_0xc3fe('0xe5')]:_0x3d4a3e[_0xc3fe('0xb6')],'direction':_0x3d4a3e[_0xc3fe('0xd9')]===_0xc3fe('0xe9')?'A':'C','secret':_0x3d4a3e[_0xc3fe('0xda')],'read':_0x3d4a3e[_0xc3fe('0x7f')],'attachment':_0x3d4a3e['Attachment']};})['value']()};return ejs[_0xc3fe('0xea')](path['join'](config[_0xc3fe('0xce')],_0xc3fe('0xcc'),_0xc3fe('0xeb'),'downloadInteraction.ejs'),{'interaction':_0x38febe})[_0xc3fe('0x35')](function(_0xab2b0e){var _0x45514f=path[_0xc3fe('0xcb')](_0x2652ac,'transcript-'+_0x14aada['id']+'-'+_0x568316+_0xc3fe('0xec'));var _0x2d530e={'path':_0x45514f,'channel':_0xc3fe('0xdf'),'interactionId':_0x14aada['id']};return pdf['createPdfFromHTML'](_0xab2b0e,_0x2d530e);})[_0xc3fe('0x35')](function(){return new BPromise(function(_0x5942cf,_0x132b43){zipdir(_0x2652ac,{'saveTo':_0x34ab0e},function(_0x3266b,_0x41e71b){if(_0x3266b)return _0x132b43(_0x3266b);return _0x5942cf(_0x41e71b);});})[_0xc3fe('0x35')](function(){return new BPromise(function(_0x689fba,_0x5f4791){rimraf(_0x2652ac,function(_0x41d513){if(_0x41d513)_0x5f4791(_0x41d513);return _0x689fba();});});})['then'](function(){return _0x1a937a[_0xc3fe('0xed')](_0x34ab0e,_0x30893e,function(_0x12223c){if(_0x12223c){console['log'](_0xc3fe('0xee'),_0x12223c);}else{fs[_0xc3fe('0xef')](_0x34ab0e);}});});});}else{return _0x1a937a[_0xc3fe('0x1e')](0xc8);}})[_0xc3fe('0x36')](handleError(_0x1a937a,null));};
\ No newline at end of file
index 9bc7637..e8848d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e54=['hook','events','../../mysqldb','WhatsappMessage','setMaxListeners','save','update','remove','getUsers','Users','findAll','then','setDataValue','unreadMessages','length','emit','hasOwnProperty'];(function(_0x8fa4bc,_0x5cd2af){var _0x35b6a7=function(_0x357c25){while(--_0x357c25){_0x8fa4bc['push'](_0x8fa4bc['shift']());}};_0x35b6a7(++_0x5cd2af);}(_0x2e54,0x1dd));var _0x42e5=function(_0x344e81,_0x8c0fc3){_0x344e81=_0x344e81-0x0;var _0x50c6ca=_0x2e54[_0x344e81];return _0x50c6ca;};'use strict';var EventEmitter=require(_0x42e5('0x0'));var WhatsappInteraction=require('../../mysqldb')['db']['WhatsappInteraction'];var WhatsappMessage=require(_0x42e5('0x1'))['db'][_0x42e5('0x2')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x42e5('0x3')](0x0);var events={'afterCreate':_0x42e5('0x4'),'afterUpdate':_0x42e5('0x5'),'afterDestroy':_0x42e5('0x6')};function emitEvent(_0x42736b){return function(_0x528772,_0x171302,_0x455f48){_0x528772[_0x42e5('0x7')]({'attributes':['id'],'raw':!![]})['then'](function(_0x2af5bb){_0x528772['setDataValue'](_0x42e5('0x8'),_0x2af5bb['map'](function(_0x3a8494){return{'id':_0x3a8494['id']};}));return WhatsappMessage[_0x42e5('0x9')]({'where':{'WhatsappInteractionId':_0x528772['id'],'direction':'in','read':![]},'raw':!![]});})[_0x42e5('0xa')](function(_0x15f9f1){_0x528772[_0x42e5('0xb')](_0x42e5('0xc'),_0x15f9f1[_0x42e5('0xd')]);WhatsappInteractionEvents[_0x42e5('0xe')](_0x42736b+':'+_0x528772['id'],_0x528772);WhatsappInteractionEvents[_0x42e5('0xe')](_0x42736b,_0x528772);_0x455f48(null);})['catch'](_0x455f48(null));};}for(var e in events){if(events[_0x42e5('0xf')](e)){var event=events[e];WhatsappInteraction[_0x42e5('0x10')](e,emitEvent(event));}}module['exports']=WhatsappInteractionEvents;
\ No newline at end of file
+var _0x58e5=['unreadMessages','length','emit','hasOwnProperty','exports','events','../../mysqldb','WhatsappInteraction','WhatsappMessage','setMaxListeners','update','then'];(function(_0x2b7817,_0x59dca8){var _0x17d3d6=function(_0x4aeadc){while(--_0x4aeadc){_0x2b7817['push'](_0x2b7817['shift']());}};_0x17d3d6(++_0x59dca8);}(_0x58e5,0xd1));var _0x558e=function(_0x176329,_0x568c84){_0x176329=_0x176329-0x0;var _0x31997c=_0x58e5[_0x176329];return _0x31997c;};'use strict';var EventEmitter=require(_0x558e('0x0'));var WhatsappInteraction=require(_0x558e('0x1'))['db'][_0x558e('0x2')];var WhatsappMessage=require(_0x558e('0x1'))['db'][_0x558e('0x3')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x558e('0x4')](0x0);var events={'afterCreate':'save','afterUpdate':_0x558e('0x5'),'afterDestroy':'remove'};function emitEvent(_0x4959f0){return function(_0xd66d13,_0x58497f,_0x33bcd4){_0xd66d13['getUsers']({'attributes':['id'],'raw':!![]})[_0x558e('0x6')](function(_0xdf6e1e){_0xd66d13['setDataValue']('Users',_0xdf6e1e['map'](function(_0x537f9f){return{'id':_0x537f9f['id']};}));return WhatsappMessage['findAll']({'where':{'WhatsappInteractionId':_0xd66d13['id'],'direction':'in','read':![]},'raw':!![]});})[_0x558e('0x6')](function(_0x8b89a){_0xd66d13['setDataValue'](_0x558e('0x7'),_0x8b89a[_0x558e('0x8')]);WhatsappInteractionEvents[_0x558e('0x9')](_0x4959f0+':'+_0xd66d13['id'],_0xd66d13);WhatsappInteractionEvents[_0x558e('0x9')](_0x4959f0,_0xd66d13);_0x33bcd4(null);})['catch'](_0x33bcd4(null));};}for(var e in events){if(events[_0x558e('0xa')](e)){var event=events[e];WhatsappInteraction['hook'](e,emitEvent(event));}}module[_0x558e('0xb')]=WhatsappInteractionEvents;
\ No newline at end of file
index de2c8da..7ed0c5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34a4=['./whatsappInteraction.attributes','exports','WhatsappInteraction','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x3a3cb8,_0x4b1190){var _0xefd863=function(_0xe18708){while(--_0xe18708){_0x3a3cb8['push'](_0x3a3cb8['shift']());}};_0xefd863(++_0x4b1190);}(_0x34a4,0x1d3));var _0x434a=function(_0x23e33d,_0x31c8c8){_0x23e33d=_0x23e33d-0x0;var _0x818fc=_0x34a4[_0x23e33d];return _0x818fc;};'use strict';var _=require(_0x434a('0x0'));var util=require('util');var logger=require(_0x434a('0x1'))(_0x434a('0x2'));var moment=require(_0x434a('0x3'));var BPromise=require(_0x434a('0x4'));var rp=require(_0x434a('0x5'));var fs=require('fs');var path=require(_0x434a('0x6'));var rimraf=require(_0x434a('0x7'));var config=require(_0x434a('0x8'));var attributes=require(_0x434a('0x9'));module[_0x434a('0xa')]=function(_0x227a96,_0x283ee2){return _0x227a96['define'](_0x434a('0xb'),attributes,{'tableName':'whatsapp_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4bd027,_0x35c994,_0x2aef47){if(_0x4bd027[_0x434a('0xc')](_0x434a('0xd'))){_0x4bd027[_0x434a('0xe')]=moment()[_0x434a('0xf')](_0x434a('0x10'));}_0x2aef47(null,_0x4bd027);}}});};
\ No newline at end of file
+var _0x28f2=['changed','closedAt','format','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./whatsappInteraction.attributes','exports','define','whatsapp_interactions'];(function(_0x1bece5,_0x351cec){var _0xd8c7e1=function(_0x1b29d1){while(--_0x1b29d1){_0x1bece5['push'](_0x1bece5['shift']());}};_0xd8c7e1(++_0x351cec);}(_0x28f2,0x193));var _0x228f=function(_0xcc33b3,_0x12f104){_0xcc33b3=_0xcc33b3-0x0;var _0x528ab1=_0x28f2[_0xcc33b3];return _0x528ab1;};'use strict';var _=require(_0x228f('0x0'));var util=require(_0x228f('0x1'));var logger=require(_0x228f('0x2'))(_0x228f('0x3'));var moment=require(_0x228f('0x4'));var BPromise=require('bluebird');var rp=require(_0x228f('0x5'));var fs=require('fs');var path=require(_0x228f('0x6'));var rimraf=require(_0x228f('0x7'));var config=require(_0x228f('0x8'));var attributes=require(_0x228f('0x9'));module[_0x228f('0xa')]=function(_0x32c5c3,_0x485423){return _0x32c5c3[_0x228f('0xb')]('WhatsappInteraction',attributes,{'tableName':_0x228f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x455eb6,_0xf4b011,_0x5f406c){if(_0x455eb6[_0x228f('0xd')]('closed')){_0x455eb6[_0x228f('0xe')]=moment()[_0x228f('0xf')]('YYYY-MM-DD\x20HH:mm:ss');}_0x5f406c(null,_0x455eb6);}}});};
\ No newline at end of file
index 997d23f..4ac8d01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe35f=['addTags','ids','spread','AddTags','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','defaults','localhost','socket.io-emitter','register','request','then','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','info','catch','WhatsappInteraction,\x20%s,\x20%s','UpdateWhatsappInteraction','WhatsappInteraction','update','raw','options','where','attributes','limit','stringify','AddTagsToWhatsappInteraction','find'];(function(_0x451959,_0x18c7a5){var _0x490269=function(_0x40cf17){while(--_0x40cf17){_0x451959['push'](_0x451959['shift']());}};_0x490269(++_0x18c7a5);}(_0xe35f,0x79));var _0xfe35=function(_0x2d067e,_0x3fef12){_0x2d067e=_0x2d067e-0x0;var _0x27fd86=_0xe35f[_0x2d067e];return _0x27fd86;};'use strict';var _=require(_0xfe35('0x0'));var util=require(_0xfe35('0x1'));var moment=require(_0xfe35('0x2'));var BPromise=require('bluebird');var rs=require(_0xfe35('0x3'));var fs=require('fs');var Redis=require(_0xfe35('0x4'));var db=require(_0xfe35('0x5'))['db'];var utils=require(_0xfe35('0x6'));var logger=require(_0xfe35('0x7'))('rpc');var config=require(_0xfe35('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xfe35('0x9')]['http']({'port':0x232a});config['redis']=_[_0xfe35('0xa')](config['redis'],{'host':_0xfe35('0xb'),'port':0x18eb});var socket=require(_0xfe35('0xc'))(new Redis(config['redis']));require('./whatsappInteraction.socket')[_0xfe35('0xd')](socket);function respondWithRpcPromise(_0x3843db,_0x344b86,_0x4c7dd7){return new BPromise(function(_0x40cd41,_0x3e3196){return client[_0xfe35('0xe')](_0x3843db,_0x4c7dd7)[_0xfe35('0xf')](function(_0x32316e){logger['info']('WhatsappInteraction,\x20%s,\x20%s',_0x344b86,'request\x20sent');logger[_0xfe35('0x10')](_0xfe35('0x11'),_0x344b86,_0xfe35('0x12'),JSON['stringify'](_0x32316e));if(_0x32316e['error']){if(_0x32316e['error']['code']===0x1f4){logger[_0xfe35('0x13')]('WhatsappInteraction,\x20%s,\x20%s',_0x344b86,_0x32316e['error'][_0xfe35('0x14')]);return _0x3e3196(_0x32316e['error'][_0xfe35('0x14')]);}logger['error']('WhatsappInteraction,\x20%s,\x20%s',_0x344b86,_0x32316e[_0xfe35('0x13')]['message']);return _0x40cd41(_0x32316e[_0xfe35('0x13')][_0xfe35('0x14')]);}else{logger[_0xfe35('0x15')]('WhatsappInteraction,\x20%s,\x20%s',_0x344b86,_0xfe35('0x12'));_0x40cd41(_0x32316e['result'][_0xfe35('0x14')]);}})[_0xfe35('0x16')](function(_0x1af81a){logger[_0xfe35('0x13')](_0xfe35('0x17'),_0x344b86,_0x1af81a);_0x3e3196(_0x1af81a);});});}exports[_0xfe35('0x18')]=function(_0x21fe80){var _0x1ee41e=this;return new Promise(function(_0x1ff1c6,_0x4c0665){return db[_0xfe35('0x19')][_0xfe35('0x1a')](_0x21fe80['body'],{'raw':_0x21fe80['options']?_0x21fe80['options'][_0xfe35('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x21fe80[_0xfe35('0x1c')]?_0x21fe80[_0xfe35('0x1c')][_0xfe35('0x1d')]||null:null,'attributes':_0x21fe80[_0xfe35('0x1c')]?_0x21fe80[_0xfe35('0x1c')][_0xfe35('0x1e')]||null:null,'limit':_0x21fe80[_0xfe35('0x1c')]?_0x21fe80['options'][_0xfe35('0x1f')]||null:null})['then'](function(_0x2b8d22){logger[_0xfe35('0x15')](_0xfe35('0x18'),_0x21fe80);logger[_0xfe35('0x10')](_0xfe35('0x18'),_0x21fe80,JSON[_0xfe35('0x20')](_0x2b8d22));_0x1ff1c6(_0x2b8d22);})[_0xfe35('0x16')](function(_0x23fa32){logger[_0xfe35('0x13')](_0xfe35('0x18'),_0x23fa32['message'],_0x21fe80);_0x4c0665(_0x1ee41e[_0xfe35('0x13')](0x1f4,_0x23fa32[_0xfe35('0x14')]));});});};exports[_0xfe35('0x21')]=function(_0x59f0c5){return new Promise(function(_0x4747eb,_0x16be26){return db[_0xfe35('0x19')][_0xfe35('0x22')]({'where':_0x59f0c5['options']?_0x59f0c5[_0xfe35('0x1c')][_0xfe35('0x1d')]||null:null})['then'](function(_0xada1dc){if(_0xada1dc){return _0xada1dc[_0xfe35('0x23')](_0x59f0c5['body'][_0xfe35('0x24')],_['omit'](_0x59f0c5['body'],['ids','id'])||{});}})[_0xfe35('0x25')](function(_0x4d1338){logger['info']('AddTags',_0x59f0c5);logger[_0xfe35('0x10')](_0xfe35('0x26'),_0x59f0c5,JSON[_0xfe35('0x20')](_0x4d1338));_0x4747eb(_0x4d1338);})[_0xfe35('0x16')](function(_0x30cfd5){logger[_0xfe35('0x13')](_0xfe35('0x26'),_0x30cfd5[_0xfe35('0x14')],_0x59f0c5);_0x16be26(_this[_0xfe35('0x13')](0x1f4,_0x30cfd5[_0xfe35('0x14')]));});});};
\ No newline at end of file
+var _0xd523=['defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','register','request','then','info','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','body','options','raw','limit','UpdateWhatsappInteraction','AddTagsToWhatsappInteraction','addTags','omit','ids','spread','AddTags','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis'];(function(_0x4bc65f,_0x39ec43){var _0x44f85f=function(_0x175343){while(--_0x175343){_0x4bc65f['push'](_0x4bc65f['shift']());}};_0x44f85f(++_0x39ec43);}(_0xd523,0xf4));var _0x3d52=function(_0x59e087,_0x599f36){_0x59e087=_0x59e087-0x0;var _0x13018a=_0xd523[_0x59e087];return _0x13018a;};'use strict';var _=require(_0x3d52('0x0'));var util=require(_0x3d52('0x1'));var moment=require(_0x3d52('0x2'));var BPromise=require('bluebird');var rs=require(_0x3d52('0x3'));var fs=require('fs');var Redis=require(_0x3d52('0x4'));var db=require(_0x3d52('0x5'))['db'];var utils=require(_0x3d52('0x6'));var logger=require(_0x3d52('0x7'))(_0x3d52('0x8'));var config=require(_0x3d52('0x9'));var jayson=require(_0x3d52('0xa'));var client=jayson[_0x3d52('0xb')][_0x3d52('0xc')]({'port':0x232a});config[_0x3d52('0xd')]=_[_0x3d52('0xe')](config[_0x3d52('0xd')],{'host':_0x3d52('0xf'),'port':0x18eb});var socket=require(_0x3d52('0x10'))(new Redis(config[_0x3d52('0xd')]));require(_0x3d52('0x11'))[_0x3d52('0x12')](socket);function respondWithRpcPromise(_0x292eda,_0x23a93f,_0x18a5b5){return new BPromise(function(_0x269c06,_0x273137){return client[_0x3d52('0x13')](_0x292eda,_0x18a5b5)[_0x3d52('0x14')](function(_0x3baca2){logger[_0x3d52('0x15')](_0x3d52('0x16'),_0x23a93f,_0x3d52('0x17'));logger[_0x3d52('0x18')](_0x3d52('0x19'),_0x23a93f,_0x3d52('0x17'),JSON[_0x3d52('0x1a')](_0x3baca2));if(_0x3baca2[_0x3d52('0x1b')]){if(_0x3baca2[_0x3d52('0x1b')][_0x3d52('0x1c')]===0x1f4){logger[_0x3d52('0x1b')](_0x3d52('0x16'),_0x23a93f,_0x3baca2[_0x3d52('0x1b')][_0x3d52('0x1d')]);return _0x273137(_0x3baca2[_0x3d52('0x1b')][_0x3d52('0x1d')]);}logger[_0x3d52('0x1b')](_0x3d52('0x16'),_0x23a93f,_0x3baca2[_0x3d52('0x1b')][_0x3d52('0x1d')]);return _0x269c06(_0x3baca2['error'][_0x3d52('0x1d')]);}else{logger['info'](_0x3d52('0x16'),_0x23a93f,_0x3d52('0x17'));_0x269c06(_0x3baca2[_0x3d52('0x1e')][_0x3d52('0x1d')]);}})[_0x3d52('0x1f')](function(_0x249b9d){logger[_0x3d52('0x1b')](_0x3d52('0x16'),_0x23a93f,_0x249b9d);_0x273137(_0x249b9d);});});}exports['UpdateWhatsappInteraction']=function(_0x5d2ab3){var _0x4646da=this;return new Promise(function(_0x4ec8e8,_0x4f9cea){return db['WhatsappInteraction']['update'](_0x5d2ab3[_0x3d52('0x20')],{'raw':_0x5d2ab3['options']?_0x5d2ab3[_0x3d52('0x21')][_0x3d52('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5d2ab3[_0x3d52('0x21')]?_0x5d2ab3[_0x3d52('0x21')]['where']||null:null,'attributes':_0x5d2ab3[_0x3d52('0x21')]?_0x5d2ab3['options']['attributes']||null:null,'limit':_0x5d2ab3[_0x3d52('0x21')]?_0x5d2ab3[_0x3d52('0x21')][_0x3d52('0x23')]||null:null})[_0x3d52('0x14')](function(_0x4d567f){logger[_0x3d52('0x15')](_0x3d52('0x24'),_0x5d2ab3);logger[_0x3d52('0x18')](_0x3d52('0x24'),_0x5d2ab3,JSON[_0x3d52('0x1a')](_0x4d567f));_0x4ec8e8(_0x4d567f);})[_0x3d52('0x1f')](function(_0x2d58e1){logger[_0x3d52('0x1b')]('UpdateWhatsappInteraction',_0x2d58e1['message'],_0x5d2ab3);_0x4f9cea(_0x4646da[_0x3d52('0x1b')](0x1f4,_0x2d58e1['message']));});});};exports[_0x3d52('0x25')]=function(_0x428fbe){return new Promise(function(_0x508de1,_0x5da030){return db['WhatsappInteraction']['find']({'where':_0x428fbe['options']?_0x428fbe[_0x3d52('0x21')]['where']||null:null})[_0x3d52('0x14')](function(_0x22f387){if(_0x22f387){return _0x22f387[_0x3d52('0x26')](_0x428fbe[_0x3d52('0x20')]['ids'],_[_0x3d52('0x27')](_0x428fbe['body'],[_0x3d52('0x28'),'id'])||{});}})[_0x3d52('0x29')](function(_0x5640b6){logger[_0x3d52('0x15')]('AddTags',_0x428fbe);logger[_0x3d52('0x18')](_0x3d52('0x2a'),_0x428fbe,JSON['stringify'](_0x5640b6));_0x508de1(_0x5640b6);})[_0x3d52('0x1f')](function(_0x1d278a){logger[_0x3d52('0x1b')](_0x3d52('0x2a'),_0x1d278a[_0x3d52('0x1d')],_0x428fbe);_0x5da030(_this[_0x3d52('0x1b')](0x1f4,_0x1d278a[_0x3d52('0x1d')]));});});};
\ No newline at end of file
index 0efac62..80852af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c27=['removeListener','register','length','save','remove','emit'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4c27,0x14d));var _0x74c2=function(_0x21892b,_0x437127){_0x21892b=_0x21892b-0x0;var _0x21865b=_0x4c27[_0x21892b];return _0x21865b;};'use strict';var WhatsappInteractionEvents=require('./whatsappInteraction.events');var events=[_0x74c2('0x0'),_0x74c2('0x1'),'update'];function createListener(_0x59bcc1,_0xf013d7){return function(_0x4cb14c){_0xf013d7[_0x74c2('0x2')](_0x59bcc1,_0x4cb14c);};}function removeListener(_0xa2cefc,_0x2ee53){return function(){WhatsappInteractionEvents[_0x74c2('0x3')](_0xa2cefc,_0x2ee53);};}exports[_0x74c2('0x4')]=function(_0x3f4c67){for(var _0x35e875=0x0,_0x439442=events[_0x74c2('0x5')];_0x35e875<_0x439442;_0x35e875++){var _0x5225b0=events[_0x35e875];var _0x1eece9=createListener('whatsappInteraction:'+_0x5225b0,_0x3f4c67);WhatsappInteractionEvents['on'](_0x5225b0,_0x1eece9);}};
\ No newline at end of file
+var _0xefe0=['./whatsappInteraction.events','save','remove','update','emit','register','length','whatsappInteraction:'];(function(_0x350bab,_0x19148d){var _0x558de3=function(_0x1b5c3a){while(--_0x1b5c3a){_0x350bab['push'](_0x350bab['shift']());}};_0x558de3(++_0x19148d);}(_0xefe0,0x150));var _0x0efe=function(_0xa277de,_0x2ad712){_0xa277de=_0xa277de-0x0;var _0x27c2da=_0xefe0[_0xa277de];return _0x27c2da;};'use strict';var WhatsappInteractionEvents=require(_0x0efe('0x0'));var events=[_0x0efe('0x1'),_0x0efe('0x2'),_0x0efe('0x3')];function createListener(_0x3a0f55,_0x2a7c79){return function(_0xba7526){_0x2a7c79[_0x0efe('0x4')](_0x3a0f55,_0xba7526);};}function removeListener(_0xf083a1,_0xe912da){return function(){WhatsappInteractionEvents['removeListener'](_0xf083a1,_0xe912da);};}exports[_0x0efe('0x5')]=function(_0x50c21e){for(var _0x1ebf09=0x0,_0xf9573e=events[_0x0efe('0x6')];_0x1ebf09<_0xf9573e;_0x1ebf09++){var _0x10a34d=events[_0x1ebf09];var _0x322b3f=createListener(_0x0efe('0x7')+_0x10a34d,_0x50c21e);WhatsappInteractionEvents['on'](_0x10a34d,_0x322b3f);}};
\ No newline at end of file
index a4630a3..378e43f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa437=['path','express','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','whatsapp','whatsappmessage:create','create','/:id/status','status','update','/:id/accept','accept','reject','delete','exports','multer','util'];(function(_0x279794,_0x194939){var _0x3ea364=function(_0x2cea71){while(--_0x2cea71){_0x279794['push'](_0x279794['shift']());}};_0x3ea364(++_0x194939);}(_0xa437,0x142));var _0x7a43=function(_0xf0bcac,_0x531755){_0xf0bcac=_0xf0bcac-0x0;var _0x4e4c65=_0xa437[_0xf0bcac];return _0x4e4c65;};'use strict';var multer=require(_0x7a43('0x0'));var util=require(_0x7a43('0x1'));var path=require(_0x7a43('0x2'));var timeout=require('connect-timeout');var express=require(_0x7a43('0x3'));var router=express['Router']();var fs_extra=require(_0x7a43('0x4'));var auth=require(_0x7a43('0x5'));var interaction=require(_0x7a43('0x6'));var config=require('../../config/environment');var controller=require(_0x7a43('0x7'));router[_0x7a43('0x8')]('/',auth[_0x7a43('0x9')](),controller[_0x7a43('0xa')]);router[_0x7a43('0x8')](_0x7a43('0xb'),auth['isAuthenticated'](),controller[_0x7a43('0xc')]);router[_0x7a43('0x8')](_0x7a43('0xd'),auth['isAuthenticated'](),controller[_0x7a43('0xe')]);router[_0x7a43('0xf')]('/',auth[_0x7a43('0x9')](),interaction['tracked'](_0x7a43('0x10'),_0x7a43('0x11')),controller[_0x7a43('0x12')]);router['post'](_0x7a43('0x13'),controller[_0x7a43('0x14')]);router['put'](_0x7a43('0xd'),auth[_0x7a43('0x9')](),controller[_0x7a43('0x15')]);router['put'](_0x7a43('0x16'),auth[_0x7a43('0x9')](),controller[_0x7a43('0x17')]);router['put']('/:id/reject',auth[_0x7a43('0x9')](),controller[_0x7a43('0x18')]);router[_0x7a43('0x19')]('/:id',auth[_0x7a43('0x9')](),controller['destroy']);module[_0x7a43('0x1a')]=router;
\ No newline at end of file
+var _0x0dd4=['../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappMessage.controller','get','/describe','isAuthenticated','describe','/:id','show','post','tracked','whatsapp','whatsappmessage:create','/:id/status','status','put','/:id/accept','accept','/:id/reject','exports','util','connect-timeout','express','fs-extra'];(function(_0x7835c2,_0x17fffc){var _0x5e9592=function(_0x56ec38){while(--_0x56ec38){_0x7835c2['push'](_0x7835c2['shift']());}};_0x5e9592(++_0x17fffc);}(_0x0dd4,0x79));var _0x40dd=function(_0x523a23,_0x5965b6){_0x523a23=_0x523a23-0x0;var _0x327d29=_0x0dd4[_0x523a23];return _0x327d29;};'use strict';var multer=require('multer');var util=require(_0x40dd('0x0'));var path=require('path');var timeout=require(_0x40dd('0x1'));var express=require(_0x40dd('0x2'));var router=express['Router']();var fs_extra=require(_0x40dd('0x3'));var auth=require(_0x40dd('0x4'));var interaction=require(_0x40dd('0x5'));var config=require(_0x40dd('0x6'));var controller=require(_0x40dd('0x7'));router[_0x40dd('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x40dd('0x8')](_0x40dd('0x9'),auth[_0x40dd('0xa')](),controller[_0x40dd('0xb')]);router['get'](_0x40dd('0xc'),auth[_0x40dd('0xa')](),controller[_0x40dd('0xd')]);router[_0x40dd('0xe')]('/',auth[_0x40dd('0xa')](),interaction[_0x40dd('0xf')](_0x40dd('0x10'),_0x40dd('0x11')),controller['create']);router['post'](_0x40dd('0x12'),controller[_0x40dd('0x13')]);router['put'](_0x40dd('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x40dd('0x14')](_0x40dd('0x15'),auth[_0x40dd('0xa')](),controller[_0x40dd('0x16')]);router[_0x40dd('0x14')](_0x40dd('0x17'),auth['isAuthenticated'](),controller['reject']);router['delete'](_0x40dd('0xc'),auth[_0x40dd('0xa')](),controller['destroy']);module[_0x40dd('0x18')]=router;
\ No newline at end of file
index 9a0b0c2..6922ed6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8b1=['medium','BOOLEAN','ENUM','out','STRING','DATE','sequelize','TEXT'];(function(_0x32214a,_0x24fb09){var _0x1ce1a5=function(_0x58a5ea){while(--_0x58a5ea){_0x32214a['push'](_0x32214a['shift']());}};_0x1ce1a5(++_0x24fb09);}(_0xa8b1,0xae));var _0x1a8b=function(_0xaa600e,_0x5cb705){_0xaa600e=_0xaa600e-0x0;var _0x224ea6=_0xa8b1[_0xaa600e];return _0x224ea6;};'use strict';var Sequelize=require(_0x1a8b('0x0'));module['exports']={'body':{'type':Sequelize[_0x1a8b('0x1')](_0x1a8b('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x1a8b('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x1a8b('0x4')]('in',_0x1a8b('0x5')),'defaultValue':_0x1a8b('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0x1a8b('0x6')](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize[_0x1a8b('0x7')]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'providerName':{'type':Sequelize[_0x1a8b('0x6')]},'providerResponse':{'type':Sequelize[_0x1a8b('0x1')]}};
\ No newline at end of file
+var _0xaaf2=['ENUM','out','STRING','DATE','exports','TEXT','BOOLEAN'];(function(_0x305486,_0x24acd4){var _0xa04940=function(_0x29e866){while(--_0x29e866){_0x305486['push'](_0x305486['shift']());}};_0xa04940(++_0x24acd4);}(_0xaaf2,0x169));var _0x2aaf=function(_0x2c468b,_0xe380bc){_0x2c468b=_0x2c468b-0x0;var _0x20a988=_0xaaf2[_0x2c468b];return _0x20a988;};'use strict';var Sequelize=require('sequelize');module[_0x2aaf('0x0')]={'body':{'type':Sequelize[_0x2aaf('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x2aaf('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x2aaf('0x3')]('in',_0x2aaf('0x4')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0x2aaf('0x5')](0xbe)},'phone':{'type':Sequelize[_0x2aaf('0x5')]},'readAt':{'type':Sequelize[_0x2aaf('0x6')]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'providerName':{'type':Sequelize[_0x2aaf('0x5')]},'providerResponse':{'type':Sequelize[_0x2aaf('0x1')]}};
\ No newline at end of file
index e294b86..02a2331 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb04=['mustache','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','jayson/promise','client','http','request','info','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','WhatsappMessage,\x20%s,\x20%s','result','catch','sendStatus','end','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','then','destroy','stack','name','send','index','map','rawAttributes','type','key','query','keys','filters','intersection','model','attributes','hasOwnProperty','order','sort','where','pick','merge','filter','WhatsappMessage','include','findAll','rows','params','fields','length','includeAll','find','body','describe','../../config/logger','whatsapp-interactions','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','WhatsappInteraction','WhatsappInteractionId','read1stAt','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','User','agent','fullname','email','internal','interface','channel','motionChannel','event','EventManager','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','QueryTypes','rejectmessage','WhatsappAccount','WhatsappAccountId','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird'];(function(_0x467f4e,_0x2b2d7f){var _0x6f736a=function(_0x75a7bc){while(--_0x75a7bc){_0x467f4e['push'](_0x467f4e['shift']());}};_0x6f736a(++_0x2b2d7f);}(_0xcb04,0x7c));var _0x4cb0=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xcb04[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0x4cb0('0x0'));var rimraf=require(_0x4cb0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4cb0('0x2'));var rp=require(_0x4cb0('0x3'));var moment=require(_0x4cb0('0x4'));var BPromise=require(_0x4cb0('0x5'));var Mustache=require(_0x4cb0('0x6'));var util=require('util');var path=require(_0x4cb0('0x7'));var sox=require(_0x4cb0('0x8'));var csv=require(_0x4cb0('0x9'));var ejs=require(_0x4cb0('0xa'));var fs=require('fs');var fs_extra=require(_0x4cb0('0xb'));var _=require(_0x4cb0('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x4cb0('0xd'));var toCsv=require('to-csv');var querystring=require(_0x4cb0('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x4cb0('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x4cb0('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x4cb0('0x11'));var utils=require('../../config/utils');var config=require(_0x4cb0('0x12'));var licenseUtil=require(_0x4cb0('0x13'));var db=require(_0x4cb0('0x14'))['db'];config[_0x4cb0('0x15')]=_['defaults'](config[_0x4cb0('0x15')],{'host':_0x4cb0('0x16'),'port':0x18eb});var socket=require(_0x4cb0('0x17'))(new Redis(config[_0x4cb0('0x15')]));require('./whatsappMessage.socket')['register'](socket);var jayson=require(_0x4cb0('0x18'));var client=jayson[_0x4cb0('0x19')][_0x4cb0('0x1a')]({'port':0x232c});var client9002=jayson[_0x4cb0('0x19')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1d27ea,_0x10e384,_0x1df76e,_0xec86d2){return new BPromise(function(_0x2d4ab3,_0x51eebf){var _0x2d4695=_0xec86d2||client;return _0x2d4695[_0x4cb0('0x1b')](_0x1d27ea,_0x1df76e)['then'](function(_0x2c7e4b){logger[_0x4cb0('0x1c')]('WhatsappMessage,\x20%s,\x20%s',_0x10e384,_0x4cb0('0x1d'));logger[_0x4cb0('0x1e')](_0x4cb0('0x1f'),_0x10e384,_0x4cb0('0x1d'),JSON[_0x4cb0('0x20')](_0x2c7e4b));if(_0x2c7e4b[_0x4cb0('0x21')]){if(_0x2c7e4b[_0x4cb0('0x21')][_0x4cb0('0x22')]===0x1f4){logger[_0x4cb0('0x21')]('WhatsappMessage,\x20%s,\x20%s',_0x10e384,_0x2c7e4b[_0x4cb0('0x21')][_0x4cb0('0x23')]);return _0x51eebf(_0x2c7e4b['error']['message']);}logger[_0x4cb0('0x21')]('WhatsappMessage,\x20%s,\x20%s',_0x10e384,_0x2c7e4b[_0x4cb0('0x21')]['message']);return _0x2d4ab3(_0x2c7e4b[_0x4cb0('0x21')][_0x4cb0('0x23')]);}else{logger['info'](_0x4cb0('0x24'),_0x10e384,_0x4cb0('0x1d'));_0x2d4ab3(_0x2c7e4b[_0x4cb0('0x25')][_0x4cb0('0x23')]);}})[_0x4cb0('0x26')](function(_0x5a8a2c){logger[_0x4cb0('0x21')](_0x4cb0('0x24'),_0x10e384,_0x5a8a2c);_0x51eebf(_0x5a8a2c);});});}function respondWithStatusCode(_0x4e08d4,_0x85b2c9){_0x85b2c9=_0x85b2c9||0xcc;return function(_0x3cd8a9){if(_0x3cd8a9){return _0x4e08d4[_0x4cb0('0x27')](_0x85b2c9);}return _0x4e08d4['status'](_0x85b2c9)[_0x4cb0('0x28')]();};}function respondWithResult(_0x7dc9c9,_0x17c7f7){_0x17c7f7=_0x17c7f7||0xc8;return function(_0x56291d){if(_0x56291d){return _0x7dc9c9[_0x4cb0('0x29')](_0x17c7f7)['json'](_0x56291d);}};}function respondWithFilteredResult(_0x337da9,_0xc6843a){return function(_0x375cc3){if(_0x375cc3){var _0x8a572c=typeof _0xc6843a['offset']===_0x4cb0('0x2a')&&typeof _0xc6843a[_0x4cb0('0x2b')]===_0x4cb0('0x2a');var _0x1db6c6=_0x375cc3[_0x4cb0('0x2c')];var _0x2d0fb4=_0x8a572c?0x0:_0xc6843a[_0x4cb0('0x2d')];var _0x227f83=_0x8a572c?_0x375cc3[_0x4cb0('0x2c')]:_0xc6843a[_0x4cb0('0x2d')]+_0xc6843a[_0x4cb0('0x2b')];var _0x114252;if(_0x227f83>=_0x1db6c6){_0x227f83=_0x1db6c6;_0x114252=0xc8;}else{_0x114252=0xce;}_0x337da9[_0x4cb0('0x29')](_0x114252);return _0x337da9[_0x4cb0('0x2e')](_0x4cb0('0x2f'),_0x2d0fb4+'-'+_0x227f83+'/'+_0x1db6c6)[_0x4cb0('0x30')](_0x375cc3);}return null;};}function patchUpdates(_0x88bce1){return function(_0x520637){try{jsonpatch[_0x4cb0('0x31')](_0x520637,_0x88bce1,!![]);}catch(_0x42b2ea){return BPromise[_0x4cb0('0x32')](_0x42b2ea);}return _0x520637[_0x4cb0('0x33')]();};}function saveUpdates(_0x52e918,_0x750a8e){return function(_0x486ba2){if(_0x486ba2){return _0x486ba2[_0x4cb0('0x34')](_0x52e918)[_0x4cb0('0x35')](function(_0x21df92){return _0x21df92;});}return null;};}function removeEntity(_0x123f13,_0x126eec){return function(_0x3910b1){if(_0x3910b1){return _0x3910b1[_0x4cb0('0x36')]()[_0x4cb0('0x35')](function(){_0x123f13[_0x4cb0('0x29')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4c2c4c,_0x309fa4){return function(_0x3f0d19){if(!_0x3f0d19){_0x4c2c4c[_0x4cb0('0x27')](0x194);}return _0x3f0d19;};}function handleError(_0x265f7c,_0x369444){_0x369444=_0x369444||0x1f4;return function(_0x4ec599){logger[_0x4cb0('0x21')](_0x4ec599[_0x4cb0('0x37')]);if(_0x4ec599[_0x4cb0('0x38')]){delete _0x4ec599[_0x4cb0('0x38')];}_0x265f7c[_0x4cb0('0x29')](_0x369444)[_0x4cb0('0x39')](_0x4ec599);};}exports[_0x4cb0('0x3a')]=function(_0x1fe5fe,_0x26330a){var _0x398870={},_0xc132aa={},_0x2ac068={'count':0x0,'rows':[]};var _0x4fa651=_[_0x4cb0('0x3b')](db['WhatsappMessage'][_0x4cb0('0x3c')],function(_0xa89e0b){return{'name':_0xa89e0b['fieldName'],'type':_0xa89e0b[_0x4cb0('0x3d')][_0x4cb0('0x3e')]};});_0xc132aa['model']=_[_0x4cb0('0x3b')](_0x4fa651,_0x4cb0('0x38'));_0xc132aa[_0x4cb0('0x3f')]=_[_0x4cb0('0x40')](_0x1fe5fe[_0x4cb0('0x3f')]);_0xc132aa[_0x4cb0('0x41')]=_[_0x4cb0('0x42')](_0xc132aa[_0x4cb0('0x43')],_0xc132aa['query']);_0x398870[_0x4cb0('0x44')]=_[_0x4cb0('0x42')](_0xc132aa[_0x4cb0('0x43')],qs['fields'](_0x1fe5fe[_0x4cb0('0x3f')]['fields']));_0x398870[_0x4cb0('0x44')]=_0x398870['attributes']['length']?_0x398870[_0x4cb0('0x44')]:_0xc132aa[_0x4cb0('0x43')];if(!_0x1fe5fe[_0x4cb0('0x3f')][_0x4cb0('0x45')]('nolimit')){_0x398870[_0x4cb0('0x2b')]=qs['limit'](_0x1fe5fe['query'][_0x4cb0('0x2b')]);_0x398870[_0x4cb0('0x2d')]=qs['offset'](_0x1fe5fe[_0x4cb0('0x3f')][_0x4cb0('0x2d')]);}_0x398870[_0x4cb0('0x46')]=qs[_0x4cb0('0x47')](_0x1fe5fe[_0x4cb0('0x3f')][_0x4cb0('0x47')]);_0x398870[_0x4cb0('0x48')]=qs[_0x4cb0('0x41')](_[_0x4cb0('0x49')](_0x1fe5fe['query'],_0xc132aa[_0x4cb0('0x41')]),_0x4fa651);if(_0x1fe5fe['query']['filter']){_0x398870[_0x4cb0('0x48')]=_[_0x4cb0('0x4a')](_0x398870[_0x4cb0('0x48')],{'$or':_[_0x4cb0('0x3b')](_0x4fa651,function(_0x3f48f8){if(_0x3f48f8[_0x4cb0('0x3d')]!=='VIRTUAL'){var _0x7a3456={};_0x7a3456[_0x3f48f8['name']]={'$like':'%'+_0x1fe5fe[_0x4cb0('0x3f')][_0x4cb0('0x4b')]+'%'};return _0x7a3456;}})});}_0x398870=_['merge']({},_0x398870,_0x1fe5fe['options']);var _0x527666={'where':_0x398870['where']};return db[_0x4cb0('0x4c')]['count'](_0x527666)[_0x4cb0('0x35')](function(_0x2ec350){_0x2ac068[_0x4cb0('0x2c')]=_0x2ec350;if(_0x1fe5fe['query']['includeAll']){_0x398870[_0x4cb0('0x4d')]=[{'all':!![]}];}return db[_0x4cb0('0x4c')][_0x4cb0('0x4e')](_0x398870);})[_0x4cb0('0x35')](function(_0x3602b1){_0x2ac068[_0x4cb0('0x4f')]=_0x3602b1;return _0x2ac068;})[_0x4cb0('0x35')](respondWithFilteredResult(_0x26330a,_0x398870))['catch'](handleError(_0x26330a,null));};exports['show']=function(_0x282ed3,_0x154fe8){var _0x26e98a={'raw':!![],'where':{'id':_0x282ed3[_0x4cb0('0x50')]['id']}},_0x12f017={};_0x12f017[_0x4cb0('0x43')]=_[_0x4cb0('0x40')](db[_0x4cb0('0x4c')][_0x4cb0('0x3c')]);_0x12f017[_0x4cb0('0x3f')]=_[_0x4cb0('0x40')](_0x282ed3[_0x4cb0('0x3f')]);_0x12f017['filters']=_['intersection'](_0x12f017['model'],_0x12f017[_0x4cb0('0x3f')]);_0x26e98a[_0x4cb0('0x44')]=_[_0x4cb0('0x42')](_0x12f017[_0x4cb0('0x43')],qs[_0x4cb0('0x51')](_0x282ed3[_0x4cb0('0x3f')][_0x4cb0('0x51')]));_0x26e98a[_0x4cb0('0x44')]=_0x26e98a[_0x4cb0('0x44')][_0x4cb0('0x52')]?_0x26e98a['attributes']:_0x12f017[_0x4cb0('0x43')];if(_0x282ed3[_0x4cb0('0x3f')][_0x4cb0('0x53')]){_0x26e98a[_0x4cb0('0x4d')]=[{'all':!![]}];}_0x26e98a=_[_0x4cb0('0x4a')]({},_0x26e98a,_0x282ed3['options']);return db[_0x4cb0('0x4c')][_0x4cb0('0x54')](_0x26e98a)[_0x4cb0('0x35')](handleEntityNotFound(_0x154fe8,null))[_0x4cb0('0x35')](respondWithResult(_0x154fe8,null))['catch'](handleError(_0x154fe8,null));};exports['create']=function(_0x56ee22,_0xf78056){return db['WhatsappMessage']['create'](_0x56ee22['body'],{})[_0x4cb0('0x35')](respondWithResult(_0xf78056,0xc9))[_0x4cb0('0x26')](handleError(_0xf78056,null));};exports[_0x4cb0('0x34')]=function(_0x51b0c7,_0x458828){if(_0x51b0c7[_0x4cb0('0x55')]['id']){delete _0x51b0c7[_0x4cb0('0x55')]['id'];}return db['WhatsappMessage'][_0x4cb0('0x54')]({'where':{'id':_0x51b0c7[_0x4cb0('0x50')]['id']}})[_0x4cb0('0x35')](handleEntityNotFound(_0x458828,null))[_0x4cb0('0x35')](saveUpdates(_0x51b0c7[_0x4cb0('0x55')],null))[_0x4cb0('0x35')](respondWithResult(_0x458828,null))[_0x4cb0('0x26')](handleError(_0x458828,null));};exports['destroy']=function(_0x7ce3d6,_0x537650){return db[_0x4cb0('0x4c')][_0x4cb0('0x54')]({'where':{'id':_0x7ce3d6[_0x4cb0('0x50')]['id']}})[_0x4cb0('0x35')](handleEntityNotFound(_0x537650,null))[_0x4cb0('0x35')](removeEntity(_0x537650,null))[_0x4cb0('0x26')](handleError(_0x537650,null));};exports[_0x4cb0('0x56')]=function(_0x564bab,_0x16bf90){return db[_0x4cb0('0x4c')][_0x4cb0('0x56')]()[_0x4cb0('0x35')](respondWithResult(_0x16bf90,null))[_0x4cb0('0x26')](handleError(_0x16bf90,null));};var interaction_log=require(_0x4cb0('0x57'))(_0x4cb0('0x58'));exports['accept']=function(_0x142c0e,_0x1959a0,_0x3949fb){var _0x56af64={'agent':{},'channel':'whatsapp'};if(_0x142c0e[_0x4cb0('0x55')]['id']){delete _0x142c0e[_0x4cb0('0x55')]['id'];}_0x142c0e['body'][_0x4cb0('0x59')]=!![];_0x142c0e[_0x4cb0('0x55')][_0x4cb0('0x5a')]=moment()[_0x4cb0('0x5b')](_0x4cb0('0x5c'));_0x142c0e[_0x4cb0('0x55')][_0x4cb0('0x5d')]=_0x142c0e[_0x4cb0('0x55')][_0x4cb0('0x5d')]||_0x142c0e[_0x4cb0('0x5e')]['id'];_0x56af64['agent']['id']=_0x142c0e[_0x4cb0('0x55')][_0x4cb0('0x5d')];return db[_0x4cb0('0x4c')]['find']({'where':{'id':_0x142c0e[_0x4cb0('0x50')]['id'],'UserId':null}})[_0x4cb0('0x35')](handleEntityNotFound(_0x1959a0,null))['then'](saveUpdates(_0x142c0e[_0x4cb0('0x55')],null))['then'](function(_0x2ed9ed){if(_0x2ed9ed){_0x56af64[_0x4cb0('0x23')]=_0x2ed9ed[_0x4cb0('0x5f')]({'plain':!![]});return db[_0x4cb0('0x60')]['find']({'where':{'id':_0x2ed9ed[_0x4cb0('0x61')]}});}return null;})[_0x4cb0('0x35')](handleEntityNotFound(_0x1959a0,null))[_0x4cb0('0x35')](function(_0x2bb80d){if(_0x2bb80d){return _0x2bb80d[_0x4cb0('0x34')]({'UserId':_0x142c0e[_0x4cb0('0x55')][_0x4cb0('0x5d')],'read1stAt':_['isNil'](_0x2bb80d[_0x4cb0('0x62')])?moment()[_0x4cb0('0x5b')](_0x4cb0('0x5c')):undefined});}return null;})[_0x4cb0('0x35')](function(_0xf03614){if(_0xf03614){_0x56af64[_0x4cb0('0x63')]=_0xf03614[_0x4cb0('0x5f')]({'plain':!![]});interaction_log['info'](_0x4cb0('0x64'),_0x142c0e[_0x4cb0('0x5e')]['id'],_0x142c0e['user'][_0x4cb0('0x38')],_0x142c0e[_0x4cb0('0x5e')][_0x4cb0('0x65')],_0x56af64[_0x4cb0('0x63')]['id'],_0x142c0e[_0x4cb0('0x55')]?JSON[_0x4cb0('0x20')](_0x142c0e[_0x4cb0('0x55')]):'null');return respondWithRpcPromise(_0x4cb0('0x66'),'acceptMessage',_0x56af64);}return null;})[_0x4cb0('0x35')](function(_0x36f515){var _0x39edbc=_0x4cb0('0x67')+_0x36f515[_0x4cb0('0x23')][_0x4cb0('0x68')];return db[_0x4cb0('0x69')]['query'](_0x39edbc,{'type':db[_0x4cb0('0x6a')]['QueryTypes']['SELECT'],'raw':!![]})['then'](function(_0x28102a){return _0x28102a;});})['then'](function(_0x4c1e45){if(_0x4c1e45){_0x56af64[_0x4cb0('0x23')]['contact']=_0x4c1e45[0x0];if(!_0x142c0e[_0x4cb0('0x55')][_0x4cb0('0x5d')])return;return db[_0x4cb0('0x6b')][_0x4cb0('0x54')]({'where':{'id':_0x142c0e['body'][_0x4cb0('0x5d')],'role':_0x4cb0('0x6c')},'attributes':['id',_0x4cb0('0x38'),_0x4cb0('0x6d'),_0x4cb0('0x6e'),_0x4cb0('0x6f')],'raw':!![]});}return null;})[_0x4cb0('0x35')](function(_0x3fe522){if(!_0x3fe522)return null;_0x56af64[_0x4cb0('0x23')][_0x4cb0('0x6c')]=_0x3fe522;return _0x56af64;})[_0x4cb0('0x35')](function(_0x18921c){if(_0x18921c){if(_0x142c0e[_0x4cb0('0x55')]['manual']){_0x56af64[_0x4cb0('0x23')][_0x4cb0('0x70')]=util[_0x4cb0('0x5b')]('SIP/%s',_0x142c0e[_0x4cb0('0x5e')][_0x4cb0('0x38')]);_0x56af64[_0x4cb0('0x23')]['channel']=_0x56af64[_0x4cb0('0x71')];_0x56af64[_0x4cb0('0x23')][_0x4cb0('0x72')]=_0x56af64[_0x4cb0('0x71')];_0x56af64['message'][_0x4cb0('0x73')]='accept';return respondWithRpcPromise(_0x4cb0('0x74'),_0x4cb0('0x74'),{'event':'acceptmessage','message':_0x56af64['message']},client9002)[_0x4cb0('0x35')](function(){return _0x56af64;});}return _0x56af64;}return null;})[_0x4cb0('0x35')](respondWithResult(_0x1959a0,null))[_0x4cb0('0x26')](handleError(_0x1959a0,null));};var interaction_log=require(_0x4cb0('0x57'))(_0x4cb0('0x58'));exports['reject']=function(_0x4497a0,_0x17709c,_0x3480b5){var _0x54c293={'agent':{},'channel':'whatsapp'};if(_0x4497a0['body']['id']){delete _0x4497a0[_0x4cb0('0x55')]['id'];}_0x4497a0[_0x4cb0('0x55')][_0x4cb0('0x5d')]=_0x4497a0[_0x4cb0('0x55')][_0x4cb0('0x5d')]||_0x4497a0[_0x4cb0('0x5e')]['id'];_0x54c293[_0x4cb0('0x6c')]['id']=_0x4497a0['body'][_0x4cb0('0x5d')];return db['WhatsappMessage'][_0x4cb0('0x54')]({'where':{'id':_0x4497a0[_0x4cb0('0x50')]['id'],'UserId':null}})[_0x4cb0('0x35')](handleEntityNotFound(_0x17709c,null))[_0x4cb0('0x35')](function(_0x2a74ac){if(_0x2a74ac){_0x54c293[_0x4cb0('0x23')]=_0x2a74ac['get']({'plain':!![]});return db[_0x4cb0('0x60')][_0x4cb0('0x54')]({'where':{'id':_0x2a74ac[_0x4cb0('0x61')]}});}return null;})['then'](handleEntityNotFound(_0x17709c,null))['then'](function(_0x533871){if(_0x533871){_0x54c293[_0x4cb0('0x63')]=_0x533871[_0x4cb0('0x5f')]({'plain':!![]});interaction_log['info'](_0x4cb0('0x75'),_0x4497a0[_0x4cb0('0x5e')]['id'],_0x4497a0[_0x4cb0('0x5e')]['name'],_0x4497a0[_0x4cb0('0x5e')]['role'],_0x54c293[_0x4cb0('0x63')]['id'],_0x4497a0['body']?JSON[_0x4cb0('0x20')](_0x4497a0['body']):'null');return respondWithRpcPromise(_0x4cb0('0x76'),'rejectMessage',_0x54c293);}return null;})['then'](function(_0x1b27fe){var _0x48a299=_0x4cb0('0x67')+_0x1b27fe['message'][_0x4cb0('0x68')];return db[_0x4cb0('0x69')][_0x4cb0('0x3f')](_0x48a299,{'type':db['Sequelize'][_0x4cb0('0x77')]['SELECT'],'raw':!![]})[_0x4cb0('0x35')](function(_0x4224bd){return _0x4224bd;});})['then'](function(_0x103869){if(_0x103869){_0x54c293['message']['contact']=_0x103869[0x0];if(!_0x4497a0[_0x4cb0('0x55')][_0x4cb0('0x5d')])return;return db[_0x4cb0('0x6b')][_0x4cb0('0x54')]({'where':{'id':_0x4497a0['body'][_0x4cb0('0x5d')],'role':'agent'},'attributes':['id','name',_0x4cb0('0x6d'),'email','internal'],'raw':!![]});}return null;})[_0x4cb0('0x35')](function(_0x55be63){if(!_0x55be63)return null;_0x54c293[_0x4cb0('0x23')]['agent']=_0x55be63;return _0x54c293;})[_0x4cb0('0x35')](function(_0x4b6c1f){if(_0x4b6c1f){_0x4b6c1f[_0x4cb0('0x23')][_0x4cb0('0x70')]=util[_0x4cb0('0x5b')]('SIP/%s',_0x4497a0['user'][_0x4cb0('0x38')]);_0x4b6c1f[_0x4cb0('0x23')]['channel']=_0x54c293[_0x4cb0('0x71')];_0x4b6c1f[_0x4cb0('0x23')][_0x4cb0('0x72')]=_0x54c293['channel'];_0x4b6c1f[_0x4cb0('0x23')][_0x4cb0('0x73')]='reject';respondWithRpcPromise('EventManager',_0x4cb0('0x74'),{'event':_0x4cb0('0x78'),'message':_0x4b6c1f[_0x4cb0('0x23')]},client9002);return _0x54c293;}return null;})['then'](respondWithResult(_0x17709c,null))[_0x4cb0('0x26')](handleError(_0x17709c,null));};exports[_0x4cb0('0x29')]=function(_0x2e1f8c,_0x3e9283,_0x1f37fc){if(_0x2e1f8c[_0x4cb0('0x55')]['id']){delete _0x2e1f8c[_0x4cb0('0x55')]['id'];}var _0x550536;return db[_0x4cb0('0x4c')]['find']({'where':{'id':_0x2e1f8c[_0x4cb0('0x50')]['id']}})[_0x4cb0('0x35')](handleEntityNotFound(_0x3e9283,null))['then'](function(_0x374ccd){if(_0x374ccd){_0x550536=_0x374ccd;return db[_0x4cb0('0x79')][_0x4cb0('0x54')]({'where':{'id':_0x374ccd[_0x4cb0('0x7a')]}});}})[_0x4cb0('0x35')](handleEntityNotFound(_0x3e9283,null))[_0x4cb0('0x35')](function(_0x5e0d18){if(_0x5e0d18){logger[_0x4cb0('0x1e')]('WhatsppMessage,\x20%s,\x20%s,\x20%s',_0x4cb0('0x29'),_0x4cb0('0x7b'),_0x5e0d18['type'],util[_0x4cb0('0x7c')](_0x2e1f8c[_0x4cb0('0x55')],{'showHidden':![],'depth':null}));switch(_0x5e0d18[_0x4cb0('0x3d')]){case _0x4cb0('0x7d'):if(_0x2e1f8c[_0x4cb0('0x55')][_0x4cb0('0x7e')]&&_0x2e1f8c['body'][_0x4cb0('0x7e')]===_0x550536[_0x4cb0('0x7f')]&&_0x2e1f8c['body'][_0x4cb0('0x80')]&&_0x2e1f8c[_0x4cb0('0x55')][_0x4cb0('0x80')]==='read'){return _0x550536[_0x4cb0('0x34')]({'read':!![]});}else{logger[_0x4cb0('0x21')](_0x4cb0('0x81'),_0x4cb0('0x29'),_0x4cb0('0x7d'),util[_0x4cb0('0x7c')](_0x2e1f8c[_0x4cb0('0x55')],{'showHidden':![],'depth':null}));}break;}return _0x550536;}})[_0x4cb0('0x35')](respondWithResult(_0x3e9283,null))[_0x4cb0('0x26')](handleError(_0x3e9283,null));};
\ No newline at end of file
+var _0x6bfc=['hasOwnProperty','order','sort','pick','filter','where','merge','map','VIRTUAL','include','findAll','rows','catch','rawAttributes','includeAll','options','find','create','body','params','describe','whatsapp-interactions','accept','whatsapp','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','WhatsappInteractionId','read1stAt','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','stringify','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','event','EventManager','../../config/logger','WhatsappInteraction','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','RejectMessage','rejectMessage','sequelize','rejectmessage','WhatsappAccount','received\x20delivery\x20report\x20from','inspect','MessageSid','messageId','MessageStatus','read','WhatsappAccount,\x20%s,\x20%s,\x20%s','twilio','rimraf','zip-dir','fast-json-patch','moment','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../mysqldb','redis','localhost','socket.io-emitter','./whatsappMessage.socket','client','http','request','then','info','WhatsappMessage,\x20%s,\x20%s','debug','error','message','request\x20sent','result','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','destroy','stack','name','send','index','WhatsappMessage','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields'];(function(_0x4a0833,_0x2a69ac){var _0x804b28=function(_0xbb366){while(--_0xbb366){_0x4a0833['push'](_0x4a0833['shift']());}};_0x804b28(++_0x2a69ac);}(_0x6bfc,0x159));var _0xc6bf=function(_0x1dc15f,_0xbd7f8f){_0x1dc15f=_0x1dc15f-0x0;var _0xd0a506=_0x6bfc[_0x1dc15f];return _0xd0a506;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc6bf('0x0'));var zipdir=require(_0xc6bf('0x1'));var jsonpatch=require(_0xc6bf('0x2'));var rp=require('request-promise');var moment=require(_0xc6bf('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xc6bf('0x4'));var util=require('util');var path=require(_0xc6bf('0x5'));var sox=require(_0xc6bf('0x6'));var csv=require(_0xc6bf('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc6bf('0x8'));var _=require(_0xc6bf('0x9'));var squel=require(_0xc6bf('0xa'));var crypto=require(_0xc6bf('0xb'));var jsforce=require(_0xc6bf('0xc'));var deskjs=require(_0xc6bf('0xd'));var toCsv=require(_0xc6bf('0x7'));var querystring=require(_0xc6bf('0xe'));var Papa=require('papaparse');var Redis=require(_0xc6bf('0xf'));var authService=require(_0xc6bf('0x10'));var qs=require(_0xc6bf('0x11'));var as=require(_0xc6bf('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xc6bf('0x13'));var utils=require(_0xc6bf('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xc6bf('0x15'))['db'];config[_0xc6bf('0x16')]=_['defaults'](config[_0xc6bf('0x16')],{'host':_0xc6bf('0x17'),'port':0x18eb});var socket=require(_0xc6bf('0x18'))(new Redis(config[_0xc6bf('0x16')]));require(_0xc6bf('0x19'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0xc6bf('0x1a')][_0xc6bf('0x1b')]({'port':0x232c});var client9002=jayson[_0xc6bf('0x1a')][_0xc6bf('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x331f31,_0x368195,_0x478f6,_0x54d6a8){return new BPromise(function(_0x23498a,_0x5b9900){var _0x4dec90=_0x54d6a8||client;return _0x4dec90[_0xc6bf('0x1c')](_0x331f31,_0x478f6)[_0xc6bf('0x1d')](function(_0x5bdc69){logger[_0xc6bf('0x1e')](_0xc6bf('0x1f'),_0x368195,'request\x20sent');logger[_0xc6bf('0x20')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x368195,'request\x20sent',JSON['stringify'](_0x5bdc69));if(_0x5bdc69[_0xc6bf('0x21')]){if(_0x5bdc69[_0xc6bf('0x21')]['code']===0x1f4){logger['error'](_0xc6bf('0x1f'),_0x368195,_0x5bdc69[_0xc6bf('0x21')]['message']);return _0x5b9900(_0x5bdc69[_0xc6bf('0x21')][_0xc6bf('0x22')]);}logger[_0xc6bf('0x21')](_0xc6bf('0x1f'),_0x368195,_0x5bdc69['error'][_0xc6bf('0x22')]);return _0x23498a(_0x5bdc69[_0xc6bf('0x21')][_0xc6bf('0x22')]);}else{logger[_0xc6bf('0x1e')](_0xc6bf('0x1f'),_0x368195,_0xc6bf('0x23'));_0x23498a(_0x5bdc69[_0xc6bf('0x24')][_0xc6bf('0x22')]);}})['catch'](function(_0x312138){logger[_0xc6bf('0x21')](_0xc6bf('0x1f'),_0x368195,_0x312138);_0x5b9900(_0x312138);});});}function respondWithStatusCode(_0x532bc1,_0x13281d){_0x13281d=_0x13281d||0xcc;return function(_0x273b97){if(_0x273b97){return _0x532bc1[_0xc6bf('0x25')](_0x13281d);}return _0x532bc1[_0xc6bf('0x26')](_0x13281d)[_0xc6bf('0x27')]();};}function respondWithResult(_0x15396c,_0x5abf52){_0x5abf52=_0x5abf52||0xc8;return function(_0x4b092f){if(_0x4b092f){return _0x15396c[_0xc6bf('0x26')](_0x5abf52)['json'](_0x4b092f);}};}function respondWithFilteredResult(_0x36b1c7,_0x48adb6){return function(_0x54fb9a){if(_0x54fb9a){var _0x2806e6=typeof _0x48adb6[_0xc6bf('0x28')]===_0xc6bf('0x29')&&typeof _0x48adb6[_0xc6bf('0x2a')]==='undefined';var _0x478af5=_0x54fb9a['count'];var _0x4f0234=_0x2806e6?0x0:_0x48adb6[_0xc6bf('0x28')];var _0xf49ed7=_0x2806e6?_0x54fb9a[_0xc6bf('0x2b')]:_0x48adb6[_0xc6bf('0x28')]+_0x48adb6[_0xc6bf('0x2a')];var _0x3186b1;if(_0xf49ed7>=_0x478af5){_0xf49ed7=_0x478af5;_0x3186b1=0xc8;}else{_0x3186b1=0xce;}_0x36b1c7[_0xc6bf('0x26')](_0x3186b1);return _0x36b1c7[_0xc6bf('0x2c')](_0xc6bf('0x2d'),_0x4f0234+'-'+_0xf49ed7+'/'+_0x478af5)[_0xc6bf('0x2e')](_0x54fb9a);}return null;};}function patchUpdates(_0x2ec79e){return function(_0x4630af){try{jsonpatch[_0xc6bf('0x2f')](_0x4630af,_0x2ec79e,!![]);}catch(_0x138092){return BPromise[_0xc6bf('0x30')](_0x138092);}return _0x4630af['save']();};}function saveUpdates(_0x310f9a,_0x1245d7){return function(_0x2a5036){if(_0x2a5036){return _0x2a5036[_0xc6bf('0x31')](_0x310f9a)['then'](function(_0x5393bc){return _0x5393bc;});}return null;};}function removeEntity(_0x39d41b,_0x188df5){return function(_0x11de46){if(_0x11de46){return _0x11de46[_0xc6bf('0x32')]()[_0xc6bf('0x1d')](function(){_0x39d41b['status'](0xcc)[_0xc6bf('0x27')]();});}};}function handleEntityNotFound(_0x571119,_0x525e59){return function(_0x31786a){if(!_0x31786a){_0x571119[_0xc6bf('0x25')](0x194);}return _0x31786a;};}function handleError(_0xda7005,_0x1eab86){_0x1eab86=_0x1eab86||0x1f4;return function(_0x2965bc){logger['error'](_0x2965bc[_0xc6bf('0x33')]);if(_0x2965bc[_0xc6bf('0x34')]){delete _0x2965bc['name'];}_0xda7005[_0xc6bf('0x26')](_0x1eab86)[_0xc6bf('0x35')](_0x2965bc);};}exports[_0xc6bf('0x36')]=function(_0x59b561,_0x5d1dbd){var _0x4fb13b={},_0x2a904b={},_0x3f05a4={'count':0x0,'rows':[]};var _0x2e9458=_['map'](db[_0xc6bf('0x37')]['rawAttributes'],function(_0x4b6f73){return{'name':_0x4b6f73[_0xc6bf('0x38')],'type':_0x4b6f73[_0xc6bf('0x39')][_0xc6bf('0x3a')]};});_0x2a904b['model']=_['map'](_0x2e9458,_0xc6bf('0x34'));_0x2a904b[_0xc6bf('0x3b')]=_[_0xc6bf('0x3c')](_0x59b561[_0xc6bf('0x3b')]);_0x2a904b[_0xc6bf('0x3d')]=_[_0xc6bf('0x3e')](_0x2a904b[_0xc6bf('0x3f')],_0x2a904b['query']);_0x4fb13b[_0xc6bf('0x40')]=_[_0xc6bf('0x3e')](_0x2a904b[_0xc6bf('0x3f')],qs['fields'](_0x59b561[_0xc6bf('0x3b')][_0xc6bf('0x41')]));_0x4fb13b[_0xc6bf('0x40')]=_0x4fb13b['attributes']['length']?_0x4fb13b['attributes']:_0x2a904b['model'];if(!_0x59b561[_0xc6bf('0x3b')][_0xc6bf('0x42')]('nolimit')){_0x4fb13b['limit']=qs[_0xc6bf('0x2a')](_0x59b561[_0xc6bf('0x3b')][_0xc6bf('0x2a')]);_0x4fb13b['offset']=qs[_0xc6bf('0x28')](_0x59b561[_0xc6bf('0x3b')][_0xc6bf('0x28')]);}_0x4fb13b[_0xc6bf('0x43')]=qs[_0xc6bf('0x44')](_0x59b561[_0xc6bf('0x3b')][_0xc6bf('0x44')]);_0x4fb13b['where']=qs['filters'](_[_0xc6bf('0x45')](_0x59b561[_0xc6bf('0x3b')],_0x2a904b[_0xc6bf('0x3d')]),_0x2e9458);if(_0x59b561[_0xc6bf('0x3b')][_0xc6bf('0x46')]){_0x4fb13b[_0xc6bf('0x47')]=_[_0xc6bf('0x48')](_0x4fb13b[_0xc6bf('0x47')],{'$or':_[_0xc6bf('0x49')](_0x2e9458,function(_0x3afe33){if(_0x3afe33[_0xc6bf('0x39')]!==_0xc6bf('0x4a')){var _0x1907a6={};_0x1907a6[_0x3afe33[_0xc6bf('0x34')]]={'$like':'%'+_0x59b561[_0xc6bf('0x3b')][_0xc6bf('0x46')]+'%'};return _0x1907a6;}})});}_0x4fb13b=_[_0xc6bf('0x48')]({},_0x4fb13b,_0x59b561['options']);var _0x100d5a={'where':_0x4fb13b[_0xc6bf('0x47')]};return db[_0xc6bf('0x37')][_0xc6bf('0x2b')](_0x100d5a)['then'](function(_0x2f75a3){_0x3f05a4[_0xc6bf('0x2b')]=_0x2f75a3;if(_0x59b561[_0xc6bf('0x3b')]['includeAll']){_0x4fb13b[_0xc6bf('0x4b')]=[{'all':!![]}];}return db[_0xc6bf('0x37')][_0xc6bf('0x4c')](_0x4fb13b);})[_0xc6bf('0x1d')](function(_0x5ee9ba){_0x3f05a4[_0xc6bf('0x4d')]=_0x5ee9ba;return _0x3f05a4;})[_0xc6bf('0x1d')](respondWithFilteredResult(_0x5d1dbd,_0x4fb13b))[_0xc6bf('0x4e')](handleError(_0x5d1dbd,null));};exports['show']=function(_0x4c0eb5,_0x4eb844){var _0x3bcce0={'raw':!![],'where':{'id':_0x4c0eb5['params']['id']}},_0x5b20ae={};_0x5b20ae[_0xc6bf('0x3f')]=_['keys'](db[_0xc6bf('0x37')][_0xc6bf('0x4f')]);_0x5b20ae[_0xc6bf('0x3b')]=_[_0xc6bf('0x3c')](_0x4c0eb5[_0xc6bf('0x3b')]);_0x5b20ae[_0xc6bf('0x3d')]=_[_0xc6bf('0x3e')](_0x5b20ae[_0xc6bf('0x3f')],_0x5b20ae[_0xc6bf('0x3b')]);_0x3bcce0[_0xc6bf('0x40')]=_[_0xc6bf('0x3e')](_0x5b20ae['model'],qs['fields'](_0x4c0eb5['query'][_0xc6bf('0x41')]));_0x3bcce0[_0xc6bf('0x40')]=_0x3bcce0['attributes']['length']?_0x3bcce0['attributes']:_0x5b20ae[_0xc6bf('0x3f')];if(_0x4c0eb5[_0xc6bf('0x3b')][_0xc6bf('0x50')]){_0x3bcce0['include']=[{'all':!![]}];}_0x3bcce0=_[_0xc6bf('0x48')]({},_0x3bcce0,_0x4c0eb5[_0xc6bf('0x51')]);return db['WhatsappMessage'][_0xc6bf('0x52')](_0x3bcce0)[_0xc6bf('0x1d')](handleEntityNotFound(_0x4eb844,null))[_0xc6bf('0x1d')](respondWithResult(_0x4eb844,null))[_0xc6bf('0x4e')](handleError(_0x4eb844,null));};exports[_0xc6bf('0x53')]=function(_0x548d3a,_0x4a6913){return db['WhatsappMessage'][_0xc6bf('0x53')](_0x548d3a[_0xc6bf('0x54')],{})[_0xc6bf('0x1d')](respondWithResult(_0x4a6913,0xc9))[_0xc6bf('0x4e')](handleError(_0x4a6913,null));};exports['update']=function(_0x1b8cef,_0x3059b3){if(_0x1b8cef[_0xc6bf('0x54')]['id']){delete _0x1b8cef[_0xc6bf('0x54')]['id'];}return db[_0xc6bf('0x37')]['find']({'where':{'id':_0x1b8cef[_0xc6bf('0x55')]['id']}})[_0xc6bf('0x1d')](handleEntityNotFound(_0x3059b3,null))[_0xc6bf('0x1d')](saveUpdates(_0x1b8cef[_0xc6bf('0x54')],null))[_0xc6bf('0x1d')](respondWithResult(_0x3059b3,null))[_0xc6bf('0x4e')](handleError(_0x3059b3,null));};exports['destroy']=function(_0x320481,_0x3f890e){return db['WhatsappMessage'][_0xc6bf('0x52')]({'where':{'id':_0x320481[_0xc6bf('0x55')]['id']}})['then'](handleEntityNotFound(_0x3f890e,null))['then'](removeEntity(_0x3f890e,null))[_0xc6bf('0x4e')](handleError(_0x3f890e,null));};exports[_0xc6bf('0x56')]=function(_0x2b7d2c,_0x388728){return db[_0xc6bf('0x37')][_0xc6bf('0x56')]()[_0xc6bf('0x1d')](respondWithResult(_0x388728,null))['catch'](handleError(_0x388728,null));};var interaction_log=require('../../config/logger')(_0xc6bf('0x57'));exports[_0xc6bf('0x58')]=function(_0x4495a1,_0x248eaa,_0xa0c02c){var _0x5d24c9={'agent':{},'channel':_0xc6bf('0x59')};if(_0x4495a1[_0xc6bf('0x54')]['id']){delete _0x4495a1[_0xc6bf('0x54')]['id'];}_0x4495a1['body']['read']=!![];_0x4495a1[_0xc6bf('0x54')][_0xc6bf('0x5a')]=moment()[_0xc6bf('0x5b')](_0xc6bf('0x5c'));_0x4495a1['body']['UserId']=_0x4495a1[_0xc6bf('0x54')][_0xc6bf('0x5d')]||_0x4495a1[_0xc6bf('0x5e')]['id'];_0x5d24c9[_0xc6bf('0x5f')]['id']=_0x4495a1[_0xc6bf('0x54')][_0xc6bf('0x5d')];return db['WhatsappMessage']['find']({'where':{'id':_0x4495a1[_0xc6bf('0x55')]['id'],'UserId':null}})[_0xc6bf('0x1d')](handleEntityNotFound(_0x248eaa,null))[_0xc6bf('0x1d')](saveUpdates(_0x4495a1[_0xc6bf('0x54')],null))[_0xc6bf('0x1d')](function(_0x54a8f0){if(_0x54a8f0){_0x5d24c9['message']=_0x54a8f0[_0xc6bf('0x60')]({'plain':!![]});return db['WhatsappInteraction'][_0xc6bf('0x52')]({'where':{'id':_0x54a8f0[_0xc6bf('0x61')]}});}return null;})[_0xc6bf('0x1d')](handleEntityNotFound(_0x248eaa,null))[_0xc6bf('0x1d')](function(_0x4193ff){if(_0x4193ff){return _0x4193ff['update']({'UserId':_0x4495a1['body']['UserId'],'read1stAt':_['isNil'](_0x4193ff[_0xc6bf('0x62')])?moment()['format'](_0xc6bf('0x5c')):undefined});}return null;})[_0xc6bf('0x1d')](function(_0x3570c3){if(_0x3570c3){_0x5d24c9[_0xc6bf('0x63')]=_0x3570c3[_0xc6bf('0x60')]({'plain':!![]});interaction_log[_0xc6bf('0x1e')](_0xc6bf('0x64'),_0x4495a1[_0xc6bf('0x5e')]['id'],_0x4495a1[_0xc6bf('0x5e')][_0xc6bf('0x34')],_0x4495a1['user']['role'],_0x5d24c9[_0xc6bf('0x63')]['id'],_0x4495a1['body']?JSON[_0xc6bf('0x65')](_0x4495a1['body']):_0xc6bf('0x66'));return respondWithRpcPromise(_0xc6bf('0x67'),_0xc6bf('0x68'),_0x5d24c9);}return null;})[_0xc6bf('0x1d')](function(_0x211107){var _0x5dff03=_0xc6bf('0x69')+_0x211107[_0xc6bf('0x22')]['ContactId'];return db['sequelize'][_0xc6bf('0x3b')](_0x5dff03,{'type':db[_0xc6bf('0x6a')][_0xc6bf('0x6b')][_0xc6bf('0x6c')],'raw':!![]})[_0xc6bf('0x1d')](function(_0x35654d){return _0x35654d;});})[_0xc6bf('0x1d')](function(_0x849c51){if(_0x849c51){_0x5d24c9['message'][_0xc6bf('0x6d')]=_0x849c51[0x0];if(!_0x4495a1[_0xc6bf('0x54')]['UserId'])return;return db[_0xc6bf('0x6e')][_0xc6bf('0x52')]({'where':{'id':_0x4495a1[_0xc6bf('0x54')]['UserId'],'role':'agent'},'attributes':['id',_0xc6bf('0x34'),_0xc6bf('0x6f'),_0xc6bf('0x70'),_0xc6bf('0x71')],'raw':!![]});}return null;})[_0xc6bf('0x1d')](function(_0x3ae2b8){if(!_0x3ae2b8)return null;_0x5d24c9[_0xc6bf('0x22')][_0xc6bf('0x5f')]=_0x3ae2b8;return _0x5d24c9;})[_0xc6bf('0x1d')](function(_0x1feb89){if(_0x1feb89){if(_0x4495a1[_0xc6bf('0x54')][_0xc6bf('0x72')]){_0x5d24c9[_0xc6bf('0x22')][_0xc6bf('0x73')]=util['format'](_0xc6bf('0x74'),_0x4495a1[_0xc6bf('0x5e')][_0xc6bf('0x34')]);_0x5d24c9[_0xc6bf('0x22')][_0xc6bf('0x75')]=_0x5d24c9[_0xc6bf('0x75')];_0x5d24c9['message'][_0xc6bf('0x76')]='accept';return respondWithRpcPromise(_0xc6bf('0x77'),_0xc6bf('0x77'),{'event':'acceptmessage','message':_0x5d24c9[_0xc6bf('0x22')]},client9002)['then'](function(){return _0x5d24c9;});}return _0x5d24c9;}return null;})[_0xc6bf('0x1d')](respondWithResult(_0x248eaa,null))[_0xc6bf('0x4e')](handleError(_0x248eaa,null));};var interaction_log=require(_0xc6bf('0x78'))(_0xc6bf('0x57'));exports[_0xc6bf('0x30')]=function(_0x39620a,_0x4e08cf,_0x8ad39a){var _0x58fcd3={'agent':{},'channel':_0xc6bf('0x59')};if(_0x39620a['body']['id']){delete _0x39620a[_0xc6bf('0x54')]['id'];}_0x39620a[_0xc6bf('0x54')]['UserId']=_0x39620a['body']['UserId']||_0x39620a[_0xc6bf('0x5e')]['id'];_0x58fcd3[_0xc6bf('0x5f')]['id']=_0x39620a[_0xc6bf('0x54')][_0xc6bf('0x5d')];return db['WhatsappMessage'][_0xc6bf('0x52')]({'where':{'id':_0x39620a[_0xc6bf('0x55')]['id'],'UserId':null}})[_0xc6bf('0x1d')](handleEntityNotFound(_0x4e08cf,null))['then'](function(_0x4ef404){if(_0x4ef404){_0x58fcd3['message']=_0x4ef404[_0xc6bf('0x60')]({'plain':!![]});return db[_0xc6bf('0x79')]['find']({'where':{'id':_0x4ef404[_0xc6bf('0x61')]}});}return null;})[_0xc6bf('0x1d')](handleEntityNotFound(_0x4e08cf,null))[_0xc6bf('0x1d')](function(_0x1bdc0b){if(_0x1bdc0b){_0x58fcd3['interaction']=_0x1bdc0b['get']({'plain':!![]});interaction_log[_0xc6bf('0x1e')](_0xc6bf('0x7a'),_0x39620a[_0xc6bf('0x5e')]['id'],_0x39620a['user']['name'],_0x39620a[_0xc6bf('0x5e')][_0xc6bf('0x7b')],_0x58fcd3[_0xc6bf('0x63')]['id'],_0x39620a[_0xc6bf('0x54')]?JSON[_0xc6bf('0x65')](_0x39620a[_0xc6bf('0x54')]):_0xc6bf('0x66'));return respondWithRpcPromise(_0xc6bf('0x7c'),_0xc6bf('0x7d'),_0x58fcd3);}return null;})[_0xc6bf('0x1d')](function(_0x4973a2){var _0x2ce17d=_0xc6bf('0x69')+_0x4973a2[_0xc6bf('0x22')]['ContactId'];return db[_0xc6bf('0x7e')][_0xc6bf('0x3b')](_0x2ce17d,{'type':db[_0xc6bf('0x6a')]['QueryTypes'][_0xc6bf('0x6c')],'raw':!![]})[_0xc6bf('0x1d')](function(_0x153397){return _0x153397;});})['then'](function(_0x4c4c6e){if(_0x4c4c6e){_0x58fcd3[_0xc6bf('0x22')][_0xc6bf('0x6d')]=_0x4c4c6e[0x0];if(!_0x39620a[_0xc6bf('0x54')][_0xc6bf('0x5d')])return;return db[_0xc6bf('0x6e')][_0xc6bf('0x52')]({'where':{'id':_0x39620a[_0xc6bf('0x54')][_0xc6bf('0x5d')],'role':_0xc6bf('0x5f')},'attributes':['id',_0xc6bf('0x34'),_0xc6bf('0x6f'),_0xc6bf('0x70'),'internal'],'raw':!![]});}return null;})['then'](function(_0x124706){if(!_0x124706)return null;_0x58fcd3[_0xc6bf('0x22')][_0xc6bf('0x5f')]=_0x124706;return _0x58fcd3;})[_0xc6bf('0x1d')](function(_0x3b567f){if(_0x3b567f){_0x3b567f[_0xc6bf('0x22')]['interface']=util[_0xc6bf('0x5b')](_0xc6bf('0x74'),_0x39620a[_0xc6bf('0x5e')][_0xc6bf('0x34')]);_0x3b567f[_0xc6bf('0x22')][_0xc6bf('0x75')]=_0x58fcd3[_0xc6bf('0x75')];_0x3b567f[_0xc6bf('0x22')]['event']='reject';respondWithRpcPromise('EventManager',_0xc6bf('0x77'),{'event':_0xc6bf('0x7f'),'message':_0x3b567f['message']},client9002);return _0x58fcd3;}return null;})['then'](respondWithResult(_0x4e08cf,null))['catch'](handleError(_0x4e08cf,null));};exports[_0xc6bf('0x26')]=function(_0x4d4378,_0x4b33dd,_0x3a350e){if(_0x4d4378['body']['id']){delete _0x4d4378[_0xc6bf('0x54')]['id'];}var _0xf02c40;return db[_0xc6bf('0x37')][_0xc6bf('0x52')]({'where':{'id':_0x4d4378[_0xc6bf('0x55')]['id']}})['then'](handleEntityNotFound(_0x4b33dd,null))['then'](function(_0x827025){if(_0x827025){_0xf02c40=_0x827025;return db[_0xc6bf('0x80')]['find']({'where':{'id':_0x827025['WhatsappAccountId']}});}})[_0xc6bf('0x1d')](handleEntityNotFound(_0x4b33dd,null))[_0xc6bf('0x1d')](function(_0x3a2444){if(_0x3a2444){logger[_0xc6bf('0x20')]('WhatsppMessage,\x20%s,\x20%s,\x20%s',_0xc6bf('0x26'),_0xc6bf('0x81'),_0x3a2444[_0xc6bf('0x39')],util[_0xc6bf('0x82')](_0x4d4378['body'],{'showHidden':![],'depth':null}));switch(_0x3a2444[_0xc6bf('0x39')]){case'twilio':if(_0x4d4378['body'][_0xc6bf('0x83')]&&_0x4d4378[_0xc6bf('0x54')][_0xc6bf('0x83')]===_0xf02c40[_0xc6bf('0x84')]&&_0x4d4378[_0xc6bf('0x54')]['MessageStatus']&&_0x4d4378[_0xc6bf('0x54')][_0xc6bf('0x85')]===_0xc6bf('0x86')){return _0xf02c40['update']({'read':!![]});}else{logger[_0xc6bf('0x21')](_0xc6bf('0x87'),_0xc6bf('0x26'),_0xc6bf('0x88'),util[_0xc6bf('0x82')](_0x4d4378[_0xc6bf('0x54')],{'showHidden':![],'depth':null}));}break;}return _0xf02c40;}})[_0xc6bf('0x1d')](respondWithResult(_0x4b33dd,null))[_0xc6bf('0x4e')](handleError(_0x4b33dd,null));};
\ No newline at end of file
index 762fd0a..d85886f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9434=['events','../../mysqldb','WhatsappMessage','setMaxListeners','save','update','emit','hasOwnProperty'];(function(_0x450253,_0x14caa1){var _0x404757=function(_0x50ecbc){while(--_0x50ecbc){_0x450253['push'](_0x450253['shift']());}};_0x404757(++_0x14caa1);}(_0x9434,0x168));var _0x4943=function(_0x310ccf,_0xb9528){_0x310ccf=_0x310ccf-0x0;var _0xbd1e1f=_0x9434[_0x310ccf];return _0xbd1e1f;};'use strict';var EventEmitter=require(_0x4943('0x0'));var WhatsappMessage=require(_0x4943('0x1'))['db'][_0x4943('0x2')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x4943('0x3')](0x0);var events={'afterCreate':_0x4943('0x4'),'afterUpdate':_0x4943('0x5'),'afterDestroy':'remove'};function emitEvent(_0x1159f9){return function(_0xda4cba,_0x5117c7,_0x2ce3d9){WhatsappMessageEvents[_0x4943('0x6')](_0x1159f9+':'+_0xda4cba['id'],_0xda4cba);WhatsappMessageEvents['emit'](_0x1159f9,_0xda4cba);_0x2ce3d9(null);};}for(var e in events){if(events[_0x4943('0x7')](e)){var event=events[e];WhatsappMessage['hook'](e,emitEvent(event));}}module['exports']=WhatsappMessageEvents;
\ No newline at end of file
+var _0x4fad=['update','remove','emit','hasOwnProperty','exports','events','../../mysqldb','WhatsappMessage','save'];(function(_0x5b300d,_0x4773d1){var _0x3c1c0b=function(_0x3229b9){while(--_0x3229b9){_0x5b300d['push'](_0x5b300d['shift']());}};_0x3c1c0b(++_0x4773d1);}(_0x4fad,0xcb));var _0xd4fa=function(_0x5972e3,_0x32f5b9){_0x5972e3=_0x5972e3-0x0;var _0x265a48=_0x4fad[_0x5972e3];return _0x265a48;};'use strict';var EventEmitter=require(_0xd4fa('0x0'));var WhatsappMessage=require(_0xd4fa('0x1'))['db'][_0xd4fa('0x2')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xd4fa('0x3'),'afterUpdate':_0xd4fa('0x4'),'afterDestroy':_0xd4fa('0x5')};function emitEvent(_0x3fc857){return function(_0x419a9c,_0x3903a1,_0x138bcb){WhatsappMessageEvents[_0xd4fa('0x6')](_0x3fc857+':'+_0x419a9c['id'],_0x419a9c);WhatsappMessageEvents['emit'](_0x3fc857,_0x419a9c);_0x138bcb(null);};}for(var e in events){if(events[_0xd4fa('0x7')](e)){var event=events[e];WhatsappMessage['hook'](e,emitEvent(event));}}module[_0xd4fa('0x8')]=WhatsappMessageEvents;
\ No newline at end of file
index cfc6006..7d3d68d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e58=['define','messageId','fti_whatsapp_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','isNil','UserId','WhatsappInteraction','WhatsappInteractionId','then','update','createdAt','catch','error','secret','WhatsappAccount','WhatsappAccountId','twilio','accountSid','authToken','create','phone','whatsapp:','/api/whatsapp/messages/','/status?token=','token','sid','afterCreate','WhatsappMessage,\x20%s,\x20%s,\x20%s','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','finally','utf8mb4','utf8mb4_unicode_ci','util','api','moment','bluebird','path','./whatsappMessage.attributes','exports'];(function(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0x9e58,0x80));var _0x89e5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9e58[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x89e5('0x0'));var logger=require('../../config/logger')(_0x89e5('0x1'));var moment=require(_0x89e5('0x2'));var BPromise=require(_0x89e5('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x89e5('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x89e5('0x5'));module[_0x89e5('0x6')]=function(_0x4bd8ea,_0x3a17cb){return _0x4bd8ea[_0x89e5('0x7')]('WhatsappMessage',attributes,{'tableName':'whatsapp_messages','paranoid':![],'indexes':[{'name':_0x89e5('0x8'),'fields':[_0x89e5('0x8')]},{'name':_0x89e5('0x9'),'fields':[_0x89e5('0xa')],'type':_0x89e5('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x2f2dac,_0x56df92,_0x5d8645){var _0x1c248d=_0x4bd8ea[_0x89e5('0xc')];var _0x1f7f00=_0x2f2dac[_0x89e5('0xd')]({'plain':!![]});if(_0x1f7f00[_0x89e5('0xe')][_0x89e5('0xf')]()==='in'||_0x1f7f00[_0x89e5('0xe')][_0x89e5('0xf')]()===_0x89e5('0x10')&&!_0x1f7f00['secret']&&!_[_0x89e5('0x11')](_0x1f7f00[_0x89e5('0x12')])){_0x1c248d[_0x89e5('0x13')]['findOne']({'where':{'id':_0x1f7f00[_0x89e5('0x14')]}})[_0x89e5('0x15')](function(_0x26860f){if(_0x26860f){_0x26860f[_0x89e5('0x16')]({'lastMsgAt':_0x1f7f00[_0x89e5('0x17')],'lastMsgDirection':_0x1f7f00[_0x89e5('0xe')]['toLowerCase']()});}})[_0x89e5('0x18')](function(_0x42606d){console[_0x89e5('0x19')](_0x42606d);});}if(_0x1f7f00[_0x89e5('0xe')]===_0x89e5('0x10')&&!_0x1f7f00[_0x89e5('0x1a')]){var _0x41dd49;_0x1c248d[_0x89e5('0x1b')]['find']({'where':{'id':_0x1f7f00[_0x89e5('0x1c')]},'raw':!![]})[_0x89e5('0x15')](function(_0x1322dd){_0x41dd49=_0x1322dd;if(_0x41dd49&&_0x41dd49['type']){switch(_0x41dd49['type']){case _0x89e5('0x1d'):var _0x1551e2=require(_0x89e5('0x1d'));if(_0x41dd49[_0x89e5('0x1e')]&&_0x41dd49['authToken']&&_0x41dd49['phone']){var _0x5d466b=new _0x1551e2(_0x41dd49[_0x89e5('0x1e')],_0x41dd49[_0x89e5('0x1f')]);_0x5d466b['messages'][_0x89e5('0x20')]({'body':_0x1f7f00['body'],'to':'whatsapp:'+_0x1f7f00[_0x89e5('0x21')],'from':_0x89e5('0x22')+_0x41dd49['phone'],'statusCallback':_0x41dd49['remote']+_0x89e5('0x23')+_0x1f7f00['id']+_0x89e5('0x24')+_0x41dd49[_0x89e5('0x25')]})[_0x89e5('0x15')](function(_0x36538d){if(_0x36538d[_0x89e5('0x26')]){return _0x2f2dac[_0x89e5('0x16')]({'messageId':_0x36538d[_0x89e5('0x26')]});}})[_0x89e5('0x18')](function(_0x3258a9){logger[_0x89e5('0x19')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x89e5('0x27'),'twilio',util['inspect'](_0x3258a9,{'showHidden':![],'depth':null}));});}else{logger[_0x89e5('0x19')](_0x89e5('0x28'),_0x89e5('0x27'),_0x89e5('0x1d'),_0x89e5('0x29'));}break;}}})[_0x89e5('0x2a')](function(){_0x5d8645();});}else{_0x5d8645();}}},'charset':_0x89e5('0x2b'),'collate':_0x89e5('0x2c')});};
\ No newline at end of file
+var _0xc02d=['models','get','direction','toLowerCase','secret','isNil','UserId','WhatsappInteraction','WhatsappInteractionId','update','catch','error','out','find','then','type','twilio','accountSid','phone','authToken','messages','create','whatsapp:','/api/whatsapp/messages/','token','sid','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','finally','utf8mb4','lodash','util','api','request-promise','rimraf','exports','define','whatsapp_messages','messageId','fti_whatsapp_messages'];(function(_0x3faaaa,_0x1497ac){var _0x23d9d2=function(_0x573575){while(--_0x573575){_0x3faaaa['push'](_0x3faaaa['shift']());}};_0x23d9d2(++_0x1497ac);}(_0xc02d,0xc8));var _0xdc02=function(_0x2389d3,_0x39428f){_0x2389d3=_0x2389d3-0x0;var _0xcbbdcc=_0xc02d[_0x2389d3];return _0xcbbdcc;};'use strict';var _=require(_0xdc02('0x0'));var util=require(_0xdc02('0x1'));var logger=require('../../config/logger')(_0xdc02('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xdc02('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xdc02('0x4'));var config=require('../../config/environment');var attributes=require('./whatsappMessage.attributes');module[_0xdc02('0x5')]=function(_0xb3dfb0,_0x54da61){return _0xb3dfb0[_0xdc02('0x6')]('WhatsappMessage',attributes,{'tableName':_0xdc02('0x7'),'paranoid':![],'indexes':[{'name':'messageId','fields':[_0xdc02('0x8')]},{'name':_0xdc02('0x9'),'fields':['body'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x257a1d,_0x3bffa7,_0x309471){var _0x148cb8=_0xb3dfb0[_0xdc02('0xa')];var _0x365594=_0x257a1d[_0xdc02('0xb')]({'plain':!![]});if(_0x365594[_0xdc02('0xc')][_0xdc02('0xd')]()==='in'||_0x365594[_0xdc02('0xc')][_0xdc02('0xd')]()==='out'&&!_0x365594[_0xdc02('0xe')]&&!_[_0xdc02('0xf')](_0x365594[_0xdc02('0x10')])){_0x148cb8[_0xdc02('0x11')]['findOne']({'where':{'id':_0x365594[_0xdc02('0x12')]}})['then'](function(_0x1a2742){if(_0x1a2742){_0x1a2742[_0xdc02('0x13')]({'lastMsgAt':_0x365594['createdAt'],'lastMsgDirection':_0x365594[_0xdc02('0xc')][_0xdc02('0xd')]()});}})[_0xdc02('0x14')](function(_0x14d562){console[_0xdc02('0x15')](_0x14d562);});}if(_0x365594[_0xdc02('0xc')]===_0xdc02('0x16')&&!_0x365594[_0xdc02('0xe')]){var _0x921f66;_0x148cb8['WhatsappAccount'][_0xdc02('0x17')]({'where':{'id':_0x365594['WhatsappAccountId']},'raw':!![]})[_0xdc02('0x18')](function(_0x1e580b){_0x921f66=_0x1e580b;if(_0x921f66&&_0x921f66[_0xdc02('0x19')]){switch(_0x921f66[_0xdc02('0x19')]){case _0xdc02('0x1a'):var _0x165c95=require('twilio');if(_0x921f66[_0xdc02('0x1b')]&&_0x921f66['authToken']&&_0x921f66[_0xdc02('0x1c')]){var _0xcaff51=new _0x165c95(_0x921f66[_0xdc02('0x1b')],_0x921f66[_0xdc02('0x1d')]);_0xcaff51[_0xdc02('0x1e')][_0xdc02('0x1f')]({'body':_0x365594['body'],'to':_0xdc02('0x20')+_0x365594[_0xdc02('0x1c')],'from':_0xdc02('0x20')+_0x921f66[_0xdc02('0x1c')],'statusCallback':_0x921f66['remote']+_0xdc02('0x21')+_0x365594['id']+'/status?token='+_0x921f66[_0xdc02('0x22')]})[_0xdc02('0x18')](function(_0x39d679){if(_0x39d679[_0xdc02('0x23')]){return _0x257a1d[_0xdc02('0x13')]({'messageId':_0x39d679['sid']});}})[_0xdc02('0x14')](function(_0x4cec18){logger[_0xdc02('0x15')](_0xdc02('0x24'),_0xdc02('0x25'),'twilio',util[_0xdc02('0x26')](_0x4cec18,{'showHidden':![],'depth':null}));});}else{logger[_0xdc02('0x15')](_0xdc02('0x24'),_0xdc02('0x25'),_0xdc02('0x1a'),_0xdc02('0x27'));}break;}}})[_0xdc02('0x28')](function(){_0x309471();});}else{_0x309471();}}},'charset':_0xdc02('0x29'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 017137e..20b90b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74da=['error','code','message','result','catch','CreateWhatsappMessage','WhatsappMessage','create','body','options','raw','debug','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','localhost','socket.io-emitter','./whatsappMessage.socket','register','request','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x182267,_0xcd7b48){var _0x554618=function(_0x595482){while(--_0x595482){_0x182267['push'](_0x182267['shift']());}};_0x554618(++_0xcd7b48);}(_0x74da,0x124));var _0xa74d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x74da[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xa74d('0x0'));var util=require(_0xa74d('0x1'));var moment=require(_0xa74d('0x2'));var BPromise=require(_0xa74d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa74d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa74d('0x5'));var logger=require(_0xa74d('0x6'))(_0xa74d('0x7'));var config=require(_0xa74d('0x8'));var jayson=require(_0xa74d('0x9'));var client=jayson[_0xa74d('0xa')]['http']({'port':0x232a});config[_0xa74d('0xb')]=_['defaults'](config['redis'],{'host':_0xa74d('0xc'),'port':0x18eb});var socket=require(_0xa74d('0xd'))(new Redis(config['redis']));require(_0xa74d('0xe'))[_0xa74d('0xf')](socket);function respondWithRpcPromise(_0x5f1ebf,_0x16d4c7,_0x22f777){return new BPromise(function(_0x598eab,_0x5b1865){return client[_0xa74d('0x10')](_0x5f1ebf,_0x22f777)[_0xa74d('0x11')](function(_0x50b77e){logger[_0xa74d('0x12')](_0xa74d('0x13'),_0x16d4c7,_0xa74d('0x14'));logger['debug'](_0xa74d('0x15'),_0x16d4c7,'request\x20sent',JSON[_0xa74d('0x16')](_0x50b77e));if(_0x50b77e[_0xa74d('0x17')]){if(_0x50b77e[_0xa74d('0x17')][_0xa74d('0x18')]===0x1f4){logger['error']('WhatsappMessage,\x20%s,\x20%s',_0x16d4c7,_0x50b77e[_0xa74d('0x17')][_0xa74d('0x19')]);return _0x5b1865(_0x50b77e[_0xa74d('0x17')]['message']);}logger[_0xa74d('0x17')]('WhatsappMessage,\x20%s,\x20%s',_0x16d4c7,_0x50b77e[_0xa74d('0x17')][_0xa74d('0x19')]);return _0x598eab(_0x50b77e[_0xa74d('0x17')][_0xa74d('0x19')]);}else{logger['info'](_0xa74d('0x13'),_0x16d4c7,_0xa74d('0x14'));_0x598eab(_0x50b77e[_0xa74d('0x1a')][_0xa74d('0x19')]);}})[_0xa74d('0x1b')](function(_0x322cda){logger['error'](_0xa74d('0x13'),_0x16d4c7,_0x322cda);_0x5b1865(_0x322cda);});});}exports[_0xa74d('0x1c')]=function(_0x4895e8){var _0xad0fb6=this;return new Promise(function(_0xee8cb1,_0x3c306c){return db[_0xa74d('0x1d')][_0xa74d('0x1e')](_0x4895e8[_0xa74d('0x1f')],{'raw':_0x4895e8['options']?_0x4895e8[_0xa74d('0x20')][_0xa74d('0x21')]===undefined?!![]:![]:!![]})['then'](function(_0x5e4a1d){logger[_0xa74d('0x12')](_0xa74d('0x1c'),_0x4895e8);logger[_0xa74d('0x22')](_0xa74d('0x1c'),_0x4895e8,JSON[_0xa74d('0x16')](_0x5e4a1d));_0xee8cb1(_0x5e4a1d);})[_0xa74d('0x1b')](function(_0x5034f2){logger[_0xa74d('0x17')](_0xa74d('0x1c'),_0x5034f2[_0xa74d('0x19')],_0x4895e8);_0x3c306c(_0xad0fb6['error'](0x1f4,_0x5034f2[_0xa74d('0x19')]));});});};
\ No newline at end of file
+var _0xd66e=['raw','info','lodash','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','./whatsappMessage.socket','register','request','then','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','error','code','message','catch','CreateWhatsappMessage','WhatsappMessage','create','body','options'];(function(_0xf2994,_0x1e3ced){var _0x24b570=function(_0x1bebe8){while(--_0x1bebe8){_0xf2994['push'](_0xf2994['shift']());}};_0x24b570(++_0x1e3ced);}(_0xd66e,0xdb));var _0xed66=function(_0x3a1dec,_0x1f943f){_0x3a1dec=_0x3a1dec-0x0;var _0x60ede0=_0xd66e[_0x3a1dec];return _0x60ede0;};'use strict';var _=require(_0xed66('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xed66('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xed66('0x2'))['db'];var utils=require(_0xed66('0x3'));var logger=require(_0xed66('0x4'))(_0xed66('0x5'));var config=require(_0xed66('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xed66('0x7')][_0xed66('0x8')]({'port':0x232a});config[_0xed66('0x9')]=_[_0xed66('0xa')](config[_0xed66('0x9')],{'host':_0xed66('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xed66('0x9')]));require(_0xed66('0xc'))[_0xed66('0xd')](socket);function respondWithRpcPromise(_0x25a86e,_0x42d255,_0xb05a4){return new BPromise(function(_0x796932,_0x540075){return client[_0xed66('0xe')](_0x25a86e,_0xb05a4)[_0xed66('0xf')](function(_0x4b2a92){logger['info'](_0xed66('0x10'),_0x42d255,_0xed66('0x11'));logger[_0xed66('0x12')](_0xed66('0x13'),_0x42d255,_0xed66('0x11'),JSON['stringify'](_0x4b2a92));if(_0x4b2a92['error']){if(_0x4b2a92[_0xed66('0x14')][_0xed66('0x15')]===0x1f4){logger[_0xed66('0x14')](_0xed66('0x10'),_0x42d255,_0x4b2a92[_0xed66('0x14')]['message']);return _0x540075(_0x4b2a92[_0xed66('0x14')][_0xed66('0x16')]);}logger[_0xed66('0x14')](_0xed66('0x10'),_0x42d255,_0x4b2a92[_0xed66('0x14')][_0xed66('0x16')]);return _0x796932(_0x4b2a92[_0xed66('0x14')]['message']);}else{logger['info'](_0xed66('0x10'),_0x42d255,_0xed66('0x11'));_0x796932(_0x4b2a92['result'][_0xed66('0x16')]);}})[_0xed66('0x17')](function(_0x2bc8bb){logger[_0xed66('0x14')]('WhatsappMessage,\x20%s,\x20%s',_0x42d255,_0x2bc8bb);_0x540075(_0x2bc8bb);});});}exports[_0xed66('0x18')]=function(_0xfb58bc){var _0x3537a0=this;return new Promise(function(_0x2cc960,_0x4d471e){return db[_0xed66('0x19')][_0xed66('0x1a')](_0xfb58bc[_0xed66('0x1b')],{'raw':_0xfb58bc['options']?_0xfb58bc[_0xed66('0x1c')][_0xed66('0x1d')]===undefined?!![]:![]:!![]})['then'](function(_0x38bde2){logger[_0xed66('0x1e')]('CreateWhatsappMessage',_0xfb58bc);logger['debug']('CreateWhatsappMessage',_0xfb58bc,JSON['stringify'](_0x38bde2));_0x2cc960(_0x38bde2);})[_0xed66('0x17')](function(_0x3a99ac){logger[_0xed66('0x14')](_0xed66('0x18'),_0x3a99ac[_0xed66('0x16')],_0xfb58bc);_0x4d471e(_0x3537a0['error'](0x1f4,_0x3a99ac[_0xed66('0x16')]));});});};
\ No newline at end of file
index d6f2b39..7c53d51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6e3=['whatsappMessage:','./whatsappMessage.events','save','remove','update','emit','length'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xc6e3,0x1a5));var _0x3c6e=function(_0x1a7b30,_0x41d102){_0x1a7b30=_0x1a7b30-0x0;var _0x2af787=_0xc6e3[_0x1a7b30];return _0x2af787;};'use strict';var WhatsappMessageEvents=require(_0x3c6e('0x0'));var events=[_0x3c6e('0x1'),_0x3c6e('0x2'),_0x3c6e('0x3')];function createListener(_0x1c35c2,_0x4e3113){return function(_0x508e32){_0x4e3113[_0x3c6e('0x4')](_0x1c35c2,_0x508e32);};}function removeListener(_0x36f364,_0x77654b){return function(){WhatsappMessageEvents['removeListener'](_0x36f364,_0x77654b);};}exports['register']=function(_0x2dcbdd){for(var _0x2d81c9=0x0,_0xa537cb=events[_0x3c6e('0x5')];_0x2d81c9<_0xa537cb;_0x2d81c9++){var _0x548e26=events[_0x2d81c9];var _0x573d04=createListener(_0x3c6e('0x6')+_0x548e26,_0x2dcbdd);WhatsappMessageEvents['on'](_0x548e26,_0x573d04);}};
\ No newline at end of file
+var _0x6da7=['removeListener','register','whatsappMessage:','./whatsappMessage.events','save','remove','update','emit'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0x6da7,0x1e3));var _0x76da=function(_0x5461ee,_0x8c1fca){_0x5461ee=_0x5461ee-0x0;var _0x359590=_0x6da7[_0x5461ee];return _0x359590;};'use strict';var WhatsappMessageEvents=require(_0x76da('0x0'));var events=[_0x76da('0x1'),_0x76da('0x2'),_0x76da('0x3')];function createListener(_0x2c2c78,_0x2d9bd3){return function(_0x287b5c){_0x2d9bd3[_0x76da('0x4')](_0x2c2c78,_0x287b5c);};}function removeListener(_0x9020cd,_0x273b7f){return function(){WhatsappMessageEvents[_0x76da('0x5')](_0x9020cd,_0x273b7f);};}exports[_0x76da('0x6')]=function(_0xec1a87){for(var _0x347145=0x0,_0x4fc7ea=events['length'];_0x347145<_0x4fc7ea;_0x347145++){var _0x26de3c=events[_0x347145];var _0x6716a6=createListener(_0x76da('0x7')+_0x26de3c,_0xec1a87);WhatsappMessageEvents['on'](_0x26de3c,_0x6716a6);}};
\ No newline at end of file
index 1760f36..29cbc1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2cc=['index','/describe','isAuthenticated','describe','show','/:id/members','getMembers','getTeams','getAgents','/:id/teams','addTeams','post','/:id/users','put','/:id','update','delete','destroy','removeTeams','removeAgents','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappQueue.controller','get'];(function(_0x33c603,_0x6d0ce4){var _0xae96f4=function(_0x2679f8){while(--_0x2679f8){_0x33c603['push'](_0x33c603['shift']());}};_0xae96f4(++_0x6d0ce4);}(_0xe2cc,0x189));var _0xce2c=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xe2cc[_0x2b4411];return _0x8e41ef;};'use strict';var multer=require('multer');var util=require(_0xce2c('0x0'));var path=require(_0xce2c('0x1'));var timeout=require('connect-timeout');var express=require(_0xce2c('0x2'));var router=express[_0xce2c('0x3')]();var fs_extra=require(_0xce2c('0x4'));var auth=require(_0xce2c('0x5'));var interaction=require(_0xce2c('0x6'));var config=require(_0xce2c('0x7'));var controller=require(_0xce2c('0x8'));router[_0xce2c('0x9')]('/',auth['isAuthenticated'](),controller[_0xce2c('0xa')]);router[_0xce2c('0x9')](_0xce2c('0xb'),auth[_0xce2c('0xc')](),controller[_0xce2c('0xd')]);router['get']('/:id',auth[_0xce2c('0xc')](),controller[_0xce2c('0xe')]);router[_0xce2c('0x9')](_0xce2c('0xf'),auth[_0xce2c('0xc')](),controller[_0xce2c('0x10')]);router[_0xce2c('0x9')]('/:id/teams',auth[_0xce2c('0xc')](),controller[_0xce2c('0x11')]);router[_0xce2c('0x9')]('/:id/users',auth[_0xce2c('0xc')](),controller[_0xce2c('0x12')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['post'](_0xce2c('0x13'),auth[_0xce2c('0xc')](),controller[_0xce2c('0x14')]);router[_0xce2c('0x15')](_0xce2c('0x16'),auth[_0xce2c('0xc')](),controller['addAgents']);router[_0xce2c('0x17')](_0xce2c('0x18'),auth[_0xce2c('0xc')](),controller[_0xce2c('0x19')]);router[_0xce2c('0x1a')]('/:id',auth['isAuthenticated'](),controller[_0xce2c('0x1b')]);router[_0xce2c('0x1a')](_0xce2c('0x13'),auth[_0xce2c('0xc')](),controller[_0xce2c('0x1c')]);router['delete'](_0xce2c('0x16'),auth[_0xce2c('0xc')](),controller[_0xce2c('0x1d')]);module[_0xce2c('0x1e')]=router;
\ No newline at end of file
+var _0xd9aa=['connect-timeout','express','Router','fs-extra','../../components/auth/service','./whatsappQueue.controller','isAuthenticated','index','get','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','addTeams','addAgents','put','update','delete','destroy','removeTeams','removeAgents','multer','util','path'];(function(_0x231d76,_0x2da17b){var _0x44f7b6=function(_0x560d41){while(--_0x560d41){_0x231d76['push'](_0x231d76['shift']());}};_0x44f7b6(++_0x2da17b);}(_0xd9aa,0x93));var _0xad9a=function(_0x342baa,_0x4a110f){_0x342baa=_0x342baa-0x0;var _0x1208f3=_0xd9aa[_0x342baa];return _0x1208f3;};'use strict';var multer=require(_0xad9a('0x0'));var util=require(_0xad9a('0x1'));var path=require(_0xad9a('0x2'));var timeout=require(_0xad9a('0x3'));var express=require(_0xad9a('0x4'));var router=express[_0xad9a('0x5')]();var fs_extra=require(_0xad9a('0x6'));var auth=require(_0xad9a('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xad9a('0x8'));router['get']('/',auth[_0xad9a('0x9')](),controller[_0xad9a('0xa')]);router[_0xad9a('0xb')]('/describe',auth[_0xad9a('0x9')](),controller[_0xad9a('0xc')]);router['get'](_0xad9a('0xd'),auth[_0xad9a('0x9')](),controller[_0xad9a('0xe')]);router[_0xad9a('0xb')](_0xad9a('0xf'),auth[_0xad9a('0x9')](),controller[_0xad9a('0x10')]);router[_0xad9a('0xb')](_0xad9a('0x11'),auth[_0xad9a('0x9')](),controller[_0xad9a('0x12')]);router['get'](_0xad9a('0x13'),auth[_0xad9a('0x9')](),controller[_0xad9a('0x14')]);router[_0xad9a('0x15')]('/',auth['isAuthenticated'](),controller['create']);router[_0xad9a('0x15')](_0xad9a('0x11'),auth[_0xad9a('0x9')](),controller[_0xad9a('0x16')]);router[_0xad9a('0x15')](_0xad9a('0x13'),auth[_0xad9a('0x9')](),controller[_0xad9a('0x17')]);router[_0xad9a('0x18')](_0xad9a('0xd'),auth['isAuthenticated'](),controller[_0xad9a('0x19')]);router[_0xad9a('0x1a')](_0xad9a('0xd'),auth[_0xad9a('0x9')](),controller[_0xad9a('0x1b')]);router[_0xad9a('0x1a')]('/:id/teams',auth[_0xad9a('0x9')](),controller[_0xad9a('0x1c')]);router['delete']('/:id/users',auth[_0xad9a('0x9')](),controller[_0xad9a('0x1d')]);module['exports']=router;
\ No newline at end of file
index 779d07b..7780296 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbed7=['rrmemory','beepall','roundrobin','sequelize','exports','STRING','name','INTEGER'];(function(_0x3ff7cf,_0xf3b962){var _0xc91167=function(_0x4323a5){while(--_0x4323a5){_0x3ff7cf['push'](_0x3ff7cf['shift']());}};_0xc91167(++_0xf3b962);}(_0xbed7,0x14b));var _0x7bed=function(_0x567e8d,_0xb8cc45){_0x567e8d=_0x567e8d-0x0;var _0x4390d6=_0xbed7[_0x567e8d];return _0x4390d6;};'use strict';var Sequelize=require(_0x7bed('0x0'));module[_0x7bed('0x1')]={'name':{'type':Sequelize[_0x7bed('0x2')],'unique':_0x7bed('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x7bed('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x7bed('0x5'),_0x7bed('0x6'),_0x7bed('0x7'))},'description':{'type':Sequelize[_0x7bed('0x2')]}};
\ No newline at end of file
+var _0x2ceb=['sequelize','exports','name','INTEGER','ENUM','rrmemory','beepall','roundrobin'];(function(_0x51172d,_0x200cf2){var _0x52064d=function(_0xa3008f){while(--_0xa3008f){_0x51172d['push'](_0x51172d['shift']());}};_0x52064d(++_0x200cf2);}(_0x2ceb,0x110));var _0xb2ce=function(_0x42c991,_0x38f625){_0x42c991=_0x42c991-0x0;var _0x4ae2e1=_0x2ceb[_0x42c991];return _0x4ae2e1;};'use strict';var Sequelize=require(_0xb2ce('0x0'));module[_0xb2ce('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xb2ce('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0xb2ce('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xb2ce('0x4')](_0xb2ce('0x5'),_0xb2ce('0x6'),_0xb2ce('0x7'))},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index cac97e3..59c91d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3926=['defaults','socket.io-emitter','./whatsappQueue.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','get','UserProfileResource','error','stack','name','send','index','map','WhatsappQueue','rawAttributes','type','key','keys','query','filters','intersection','model','attributes','fields','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','include','findAll','rows','show','params','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','describe','findOne','length','hasOwnProperty','UserWhatsappQueue','User','UserId','agent','updatedAt','createdAt','format','whatsappPause','getTeams','addTeams','Agents','online','voicePause','interface','sequelize','transaction','each','findOrCreate','userWhatsappQueue:save','Team','ids','select','tq.TeamId','team_has_whatsapp_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','TeamId','union','compact','removeTeams','isEmpty','removeAgents','forEach','emit','userWhatsappQueue:remove','addAgents','spread','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','lodash','desk.js','to-csv','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis'];(function(_0x38887e,_0x2866bd){var _0xd175b4=function(_0x2acb88){while(--_0x2acb88){_0x38887e['push'](_0x38887e['shift']());}};_0xd175b4(++_0x2866bd);}(_0x3926,0x6d));var _0x6392=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x3926[_0x465a0c];return _0x1e202e;};'use strict';var emlformat=require(_0x6392('0x0'));var rimraf=require(_0x6392('0x1'));var zipdir=require(_0x6392('0x2'));var jsonpatch=require(_0x6392('0x3'));var rp=require('request-promise');var moment=require(_0x6392('0x4'));var BPromise=require(_0x6392('0x5'));var Mustache=require(_0x6392('0x6'));var util=require(_0x6392('0x7'));var path=require(_0x6392('0x8'));var sox=require(_0x6392('0x9'));var csv=require('to-csv');var ejs=require(_0x6392('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6392('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x6392('0xc'));var toCsv=require(_0x6392('0xd'));var querystring=require('querystring');var Papa=require(_0x6392('0xe'));var Redis=require('ioredis');var authService=require(_0x6392('0xf'));var qs=require(_0x6392('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6392('0x11'));var logger=require(_0x6392('0x12'))(_0x6392('0x13'));var utils=require(_0x6392('0x14'));var config=require(_0x6392('0x15'));var licenseUtil=require(_0x6392('0x16'));var db=require('../../mysqldb')['db'];config[_0x6392('0x17')]=_[_0x6392('0x18')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x6392('0x19'))(new Redis(config[_0x6392('0x17')]));require(_0x6392('0x1a'))['register'](socket);function respondWithStatusCode(_0x4a26a1,_0x21e898){_0x21e898=_0x21e898||0xcc;return function(_0x51ff95){if(_0x51ff95){return _0x4a26a1[_0x6392('0x1b')](_0x21e898);}return _0x4a26a1[_0x6392('0x1c')](_0x21e898)[_0x6392('0x1d')]();};}function respondWithResult(_0x1454a5,_0x259f7e){_0x259f7e=_0x259f7e||0xc8;return function(_0xba1b1){if(_0xba1b1){return _0x1454a5[_0x6392('0x1c')](_0x259f7e)[_0x6392('0x1e')](_0xba1b1);}};}function respondWithFilteredResult(_0x2dbe3e,_0x422408){return function(_0x3f1f00){if(_0x3f1f00){var _0x32d099=typeof _0x422408[_0x6392('0x1f')]===_0x6392('0x20')&&typeof _0x422408[_0x6392('0x21')]===_0x6392('0x20');var _0x4edd60=_0x3f1f00[_0x6392('0x22')];var _0x97cec7=_0x32d099?0x0:_0x422408[_0x6392('0x1f')];var _0x47ceaa=_0x32d099?_0x3f1f00[_0x6392('0x22')]:_0x422408[_0x6392('0x1f')]+_0x422408['limit'];var _0x3f434d;if(_0x47ceaa>=_0x4edd60){_0x47ceaa=_0x4edd60;_0x3f434d=0xc8;}else{_0x3f434d=0xce;}_0x2dbe3e[_0x6392('0x1c')](_0x3f434d);return _0x2dbe3e[_0x6392('0x23')]('Content-Range',_0x97cec7+'-'+_0x47ceaa+'/'+_0x4edd60)['json'](_0x3f1f00);}return null;};}function patchUpdates(_0x3f8c2a){return function(_0x45610f){try{jsonpatch[_0x6392('0x24')](_0x45610f,_0x3f8c2a,!![]);}catch(_0x381de6){return BPromise[_0x6392('0x25')](_0x381de6);}return _0x45610f[_0x6392('0x26')]();};}function saveUpdates(_0x44c9a2,_0x330ae3){return function(_0x48ce3f){if(_0x48ce3f){return _0x48ce3f[_0x6392('0x27')](_0x44c9a2)[_0x6392('0x28')](function(_0x4cc9ec){return _0x4cc9ec;});}return null;};}function removeEntity(_0x21eb4d,_0xa3f71b){return function(_0x3627e6){if(_0x3627e6){return _0x3627e6[_0x6392('0x29')]()[_0x6392('0x28')](function(){var _0x5f3f25=_0x3627e6[_0x6392('0x2a')]({'plain':!![]});var _0x374467='WhatsappQueues';return db[_0x6392('0x2b')][_0x6392('0x29')]({'where':{'type':_0x374467,'resourceId':_0x5f3f25['id']}})[_0x6392('0x28')](function(){return _0x3627e6;});})['then'](function(){_0x21eb4d[_0x6392('0x1c')](0xcc)[_0x6392('0x1d')]();});}};}function handleEntityNotFound(_0xb8ec37,_0x5c0792){return function(_0x29f4ac){if(!_0x29f4ac){_0xb8ec37[_0x6392('0x1b')](0x194);}return _0x29f4ac;};}function handleError(_0x9fd4ed,_0x11c0a2){_0x11c0a2=_0x11c0a2||0x1f4;return function(_0x5ece18){logger[_0x6392('0x2c')](_0x5ece18[_0x6392('0x2d')]);if(_0x5ece18['name']){delete _0x5ece18[_0x6392('0x2e')];}_0x9fd4ed[_0x6392('0x1c')](_0x11c0a2)[_0x6392('0x2f')](_0x5ece18);};}exports[_0x6392('0x30')]=function(_0x2d0079,_0x340ee7){var _0xfa499a={},_0x2395fc={},_0xbf53ca={'count':0x0,'rows':[]};var _0x5b2273=_[_0x6392('0x31')](db[_0x6392('0x32')][_0x6392('0x33')],function(_0xe2770f){return{'name':_0xe2770f['fieldName'],'type':_0xe2770f[_0x6392('0x34')][_0x6392('0x35')]};});_0x2395fc['model']=_['map'](_0x5b2273,_0x6392('0x2e'));_0x2395fc['query']=_[_0x6392('0x36')](_0x2d0079[_0x6392('0x37')]);_0x2395fc[_0x6392('0x38')]=_[_0x6392('0x39')](_0x2395fc[_0x6392('0x3a')],_0x2395fc[_0x6392('0x37')]);_0xfa499a[_0x6392('0x3b')]=_['intersection'](_0x2395fc['model'],qs[_0x6392('0x3c')](_0x2d0079[_0x6392('0x37')][_0x6392('0x3c')]));_0xfa499a[_0x6392('0x3b')]=_0xfa499a[_0x6392('0x3b')]['length']?_0xfa499a[_0x6392('0x3b')]:_0x2395fc[_0x6392('0x3a')];if(!_0x2d0079[_0x6392('0x37')]['hasOwnProperty'](_0x6392('0x3d'))){_0xfa499a[_0x6392('0x21')]=qs[_0x6392('0x21')](_0x2d0079[_0x6392('0x37')][_0x6392('0x21')]);_0xfa499a['offset']=qs[_0x6392('0x1f')](_0x2d0079['query'][_0x6392('0x1f')]);}_0xfa499a[_0x6392('0x3e')]=qs[_0x6392('0x3f')](_0x2d0079[_0x6392('0x37')][_0x6392('0x3f')]);_0xfa499a[_0x6392('0x40')]=qs[_0x6392('0x38')](_[_0x6392('0x41')](_0x2d0079[_0x6392('0x37')],_0x2395fc[_0x6392('0x38')]),_0x5b2273);if(_0x2d0079[_0x6392('0x37')]['filter']){_0xfa499a[_0x6392('0x40')]=_[_0x6392('0x42')](_0xfa499a[_0x6392('0x40')],{'$or':_[_0x6392('0x31')](_0x5b2273,function(_0x105bbf){if(_0x105bbf[_0x6392('0x34')]!==_0x6392('0x43')){var _0x2c6515={};_0x2c6515[_0x105bbf[_0x6392('0x2e')]]={'$like':'%'+_0x2d0079[_0x6392('0x37')][_0x6392('0x44')]+'%'};return _0x2c6515;}})});}_0xfa499a=_['merge']({},_0xfa499a,_0x2d0079[_0x6392('0x45')]);var _0x1b4191={'where':_0xfa499a[_0x6392('0x40')]};return db[_0x6392('0x32')][_0x6392('0x22')](_0x1b4191)[_0x6392('0x28')](function(_0x33a0db){_0xbf53ca['count']=_0x33a0db;if(_0x2d0079[_0x6392('0x37')]['includeAll']){_0xfa499a[_0x6392('0x46')]=[{'all':!![]}];}return db[_0x6392('0x32')][_0x6392('0x47')](_0xfa499a);})[_0x6392('0x28')](function(_0x3fd1e1){_0xbf53ca[_0x6392('0x48')]=_0x3fd1e1;return _0xbf53ca;})[_0x6392('0x28')](respondWithFilteredResult(_0x340ee7,_0xfa499a))['catch'](handleError(_0x340ee7,null));};exports[_0x6392('0x49')]=function(_0xae3b7c,_0x123cd5){var _0x190289={'raw':!![],'where':{'id':_0xae3b7c[_0x6392('0x4a')]['id']}},_0x4ca13e={};_0x4ca13e[_0x6392('0x3a')]=_[_0x6392('0x36')](db[_0x6392('0x32')][_0x6392('0x33')]);_0x4ca13e[_0x6392('0x37')]=_['keys'](_0xae3b7c['query']);_0x4ca13e[_0x6392('0x38')]=_['intersection'](_0x4ca13e[_0x6392('0x3a')],_0x4ca13e[_0x6392('0x37')]);_0x190289['attributes']=_['intersection'](_0x4ca13e['model'],qs[_0x6392('0x3c')](_0xae3b7c['query'][_0x6392('0x3c')]));_0x190289[_0x6392('0x3b')]=_0x190289[_0x6392('0x3b')]['length']?_0x190289['attributes']:_0x4ca13e['model'];if(_0xae3b7c['query']['includeAll']){_0x190289[_0x6392('0x46')]=[{'all':!![]}];}_0x190289=_['merge']({},_0x190289,_0xae3b7c['options']);return db[_0x6392('0x32')][_0x6392('0x4b')](_0x190289)['then'](handleEntityNotFound(_0x123cd5,null))['then'](respondWithResult(_0x123cd5,null))[_0x6392('0x4c')](handleError(_0x123cd5,null));};exports['create']=function(_0x2b3ffd,_0xcaca6d){return db[_0x6392('0x32')][_0x6392('0x4d')](_0x2b3ffd[_0x6392('0x4e')],{})[_0x6392('0x28')](function(_0x250e2a){var _0x1f161c=_0x2b3ffd[_0x6392('0x4f')][_0x6392('0x2a')]({'plain':!![]});if(!_0x1f161c)throw new Error(_0x6392('0x50'));if(_0x1f161c[_0x6392('0x51')]==='user'){var _0x4e996e=_0x250e2a[_0x6392('0x2a')]({'plain':!![]});var _0x21d6c4='WhatsappQueues';return db[_0x6392('0x52')][_0x6392('0x4b')]({'where':{'name':_0x21d6c4,'userProfileId':_0x1f161c['userProfileId']},'raw':!![]})[_0x6392('0x28')](function(_0x107bed){if(_0x107bed&&_0x107bed[_0x6392('0x53')]===0x0){return db[_0x6392('0x2b')][_0x6392('0x4d')]({'name':_0x4e996e[_0x6392('0x2e')],'resourceId':_0x4e996e['id'],'type':_0x107bed[_0x6392('0x2e')],'sectionId':_0x107bed['id']},{})['then'](function(){return _0x250e2a;});}else{return _0x250e2a;}})['catch'](function(_0xababd0){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xababd0);throw _0xababd0;});}return _0x250e2a;})[_0x6392('0x28')](respondWithResult(_0xcaca6d,0xc9))[_0x6392('0x4c')](handleError(_0xcaca6d,null));};exports[_0x6392('0x27')]=function(_0x557fd7,_0x3752a4){if(_0x557fd7[_0x6392('0x4e')]['id']){delete _0x557fd7[_0x6392('0x4e')]['id'];}return db[_0x6392('0x32')][_0x6392('0x4b')]({'where':{'id':_0x557fd7[_0x6392('0x4a')]['id']}})[_0x6392('0x28')](handleEntityNotFound(_0x3752a4,null))['then'](saveUpdates(_0x557fd7[_0x6392('0x4e')],null))[_0x6392('0x28')](respondWithResult(_0x3752a4,null))['catch'](handleError(_0x3752a4,null));};exports['destroy']=function(_0x2b41b5,_0x36cc61){return db[_0x6392('0x32')][_0x6392('0x4b')]({'where':{'id':_0x2b41b5[_0x6392('0x4a')]['id']}})['then'](handleEntityNotFound(_0x36cc61,null))[_0x6392('0x28')](removeEntity(_0x36cc61,null))['catch'](handleError(_0x36cc61,null));};exports[_0x6392('0x54')]=function(_0x23f4a7,_0x1354ab){return db[_0x6392('0x32')][_0x6392('0x54')]()[_0x6392('0x28')](respondWithResult(_0x1354ab,null))['catch'](handleError(_0x1354ab,null));};exports['getMembers']=function(_0x59cc24,_0x5a1038,_0x1a58ba){var _0x2841e3={'raw':!![],'where':{}},_0x215fa0={},_0x4c0217;return db['WhatsappQueue'][_0x6392('0x55')]({'where':{'id':_0x59cc24[_0x6392('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5a1038,null))['then'](function(_0x101d7d){if(_0x101d7d){_0x4c0217=_0x101d7d[_0x6392('0x2a')]({'plain':!![]});_0x215fa0['model']=_[_0x6392('0x36')](db['UserWhatsappQueue']['rawAttributes']);_0x215fa0['query']=_['keys'](_0x59cc24[_0x6392('0x37')]);_0x215fa0[_0x6392('0x38')]=_[_0x6392('0x39')](_0x215fa0[_0x6392('0x3a')],_0x215fa0['query']);_0x2841e3[_0x6392('0x3b')]=_[_0x6392('0x39')](_0x215fa0['model'],qs[_0x6392('0x3c')](_0x59cc24[_0x6392('0x37')]['fields']));_0x2841e3['attributes']=_0x2841e3[_0x6392('0x3b')][_0x6392('0x56')]?_0x2841e3[_0x6392('0x3b')]:_0x215fa0[_0x6392('0x3a')];if(!_0x59cc24[_0x6392('0x37')][_0x6392('0x57')](_0x6392('0x3d'))){_0x2841e3[_0x6392('0x21')]=qs[_0x6392('0x21')](_0x59cc24[_0x6392('0x37')][_0x6392('0x21')]);_0x2841e3['offset']=qs[_0x6392('0x1f')](_0x59cc24[_0x6392('0x37')][_0x6392('0x1f')]);}_0x2841e3[_0x6392('0x3e')]=qs[_0x6392('0x3f')](_0x59cc24['query'][_0x6392('0x3f')]);_0x2841e3['where']=qs[_0x6392('0x38')](_[_0x6392('0x41')](_0x59cc24[_0x6392('0x37')],_0x215fa0['filters']));_0x2841e3[_0x6392('0x40')]['WhatsappQueueId']=_0x101d7d['id'];if(_0x59cc24['query'][_0x6392('0x44')]){_0x2841e3[_0x6392('0x40')]=_[_0x6392('0x42')](_0x2841e3[_0x6392('0x40')],{'$or':_[_0x6392('0x31')](_0x2841e3['attributes'],function(_0x10b346){var _0xc5bd70={};_0xc5bd70[_0x10b346]={'$like':'%'+_0x59cc24[_0x6392('0x37')][_0x6392('0x44')]+'%'};return _0xc5bd70;})});}_0x2841e3=_[_0x6392('0x42')]({},_0x2841e3,_0x59cc24['options']);return db[_0x6392('0x58')][_0x6392('0x47')](_0x2841e3);}})[_0x6392('0x28')](function(_0x211dde){if(_0x211dde){return db[_0x6392('0x59')]['findAndCountAll']({'where':{'id':_[_0x6392('0x31')](_0x211dde,_0x6392('0x5a')),'role':_0x6392('0x5b')},'attributes':['id',_0x6392('0x2e'),'whatsappPause',_0x6392('0x5c'),_0x6392('0x5d')]});}})[_0x6392('0x28')](function(_0x1f6cad){if(_0x1f6cad){return{'count':_0x1f6cad[_0x6392('0x22')],'rows':_['map'](_0x1f6cad[_0x6392('0x48')],function(_0x2598bf){return{'membername':_0x2598bf[_0x6392('0x2e')],'UserId':_0x2598bf['id'],'queue_name':_0x4c0217[_0x6392('0x2e')],'WhatsappQueueId':_0x4c0217['id'],'interface':util[_0x6392('0x5e')]('%s/%s','SIP',_0x2598bf[_0x6392('0x2e')]),'penalty':0x0,'paused':_0x2598bf[_0x6392('0x5f')],'createdAt':_0x2598bf[_0x6392('0x5d')],'updatedAt':_0x2598bf[_0x6392('0x5c')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x6392('0x28')](respondWithFilteredResult(_0x5a1038,_0x2841e3))['catch'](handleError(_0x5a1038,null));};exports[_0x6392('0x60')]=function(_0x11e9ab,_0x2c4c64,_0x35b067){var _0x182e0e={};var _0x4125ef={};var _0x16e3a2;var _0x4764da;return db[_0x6392('0x32')][_0x6392('0x55')]({'where':{'id':_0x11e9ab[_0x6392('0x4a')]['id']}})['then'](handleEntityNotFound(_0x2c4c64,null))[_0x6392('0x28')](function(_0x45599d){if(_0x45599d){_0x16e3a2=_0x45599d;_0x4125ef[_0x6392('0x3a')]=_[_0x6392('0x36')](db['Team']['rawAttributes']);_0x4125ef['query']=_[_0x6392('0x36')](_0x11e9ab['query']);_0x4125ef[_0x6392('0x38')]=_[_0x6392('0x39')](_0x4125ef[_0x6392('0x3a')],_0x4125ef['query']);_0x182e0e[_0x6392('0x3b')]=_['intersection'](_0x4125ef['model'],qs['fields'](_0x11e9ab['query']['fields']));_0x182e0e['attributes']=_0x182e0e[_0x6392('0x3b')][_0x6392('0x56')]?_0x182e0e[_0x6392('0x3b')]:_0x4125ef[_0x6392('0x3a')];_0x182e0e[_0x6392('0x3e')]=qs[_0x6392('0x3f')](_0x11e9ab[_0x6392('0x37')][_0x6392('0x3f')]);_0x182e0e[_0x6392('0x40')]=qs[_0x6392('0x38')](_[_0x6392('0x41')](_0x11e9ab['query'],_0x4125ef[_0x6392('0x38')]));if(_0x11e9ab[_0x6392('0x37')][_0x6392('0x44')]){_0x182e0e[_0x6392('0x40')]=_['merge'](_0x182e0e[_0x6392('0x40')],{'$or':_[_0x6392('0x31')](_0x182e0e[_0x6392('0x3b')],function(_0x1d8d45){var _0x510df5={};_0x510df5[_0x1d8d45]={'$like':'%'+_0x11e9ab['query']['filter']+'%'};return _0x510df5;})});}_0x182e0e=_[_0x6392('0x42')]({},_0x182e0e,_0x11e9ab[_0x6392('0x45')]);return _0x16e3a2[_0x6392('0x60')](_0x182e0e);}})[_0x6392('0x28')](function(_0xc96b77){if(_0xc96b77){_0x4764da=_0xc96b77[_0x6392('0x56')];if(!_0x11e9ab[_0x6392('0x37')][_0x6392('0x57')](_0x6392('0x3d'))){_0x182e0e['limit']=qs[_0x6392('0x21')](_0x11e9ab[_0x6392('0x37')][_0x6392('0x21')]);_0x182e0e['offset']=qs[_0x6392('0x1f')](_0x11e9ab[_0x6392('0x37')]['offset']);}return _0x16e3a2['getTeams'](_0x182e0e);}})[_0x6392('0x28')](function(_0x25787e){if(_0x25787e){return _0x25787e?{'count':_0x4764da,'rows':_0x25787e}:null;}})['then'](respondWithResult(_0x2c4c64,null))['catch'](handleError(_0x2c4c64,null));};exports[_0x6392('0x61')]=function(_0x3ec867,_0x8f313e,_0x3ac9b9){var _0x3acf46=_0x3ec867['body']['ids'];return db['Team'][_0x6392('0x47')]({'where':{'id':_0x3acf46},'attributes':['id'],'include':[{'model':db[_0x6392('0x59')],'as':_0x6392('0x62'),'attributes':['id',_0x6392('0x2e'),_0x6392('0x63'),_0x6392('0x64'),_0x6392('0x65')],'raw':!![]}]})[_0x6392('0x28')](function(_0x16d3b9){if(_0x16d3b9){var _0x9e343=_['flatMap'](_0x16d3b9,function(_0xcce56c){var _0x3191d8=_0xcce56c[_0x6392('0x2a')]({'plain':!![]});return _0x3191d8[_0x6392('0x62')];});return db['WhatsappQueue'][_0x6392('0x4b')]({'where':{'id':_0x3ec867[_0x6392('0x4a')]['id']}})['then'](function(_0x2c081d){return db[_0x6392('0x66')][_0x6392('0x67')](function(_0x1a0c53){return _0x2c081d[_0x6392('0x61')](_0x3acf46,{'transaction':_0x1a0c53})['then'](function(){return BPromise[_0x6392('0x68')](_0x9e343,function(_0x1e3781){return db[_0x6392('0x58')][_0x6392('0x69')]({'where':{'UserId':_0x1e3781['id'],'WhatsappQueueId':_0x3ec867[_0x6392('0x4a')]['id']},'transaction':_0x1a0c53});});})['then'](function(){_0x9e343['forEach'](function(_0x2fae57){socket['emit'](_0x6392('0x6a'),{'UserId':_0x2fae57['id'],'WhatsappQueueId':_0x2c081d['id']});});});});});}})[_0x6392('0x28')](respondWithStatusCode(_0x8f313e,null))[_0x6392('0x4c')](handleError(_0x8f313e,null));};exports['removeTeams']=function(_0x5bd4db,_0x4709a6,_0x2f220c){return db[_0x6392('0x6b')]['findAll']({'where':{'id':_0x5bd4db[_0x6392('0x37')][_0x6392('0x6c')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x6392('0x62'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x4709a6,null))['then'](function(_0x47acb9){var _0x2aeccc=_[_0x6392('0x31')](_0x47acb9,'id');var _0x36e69e=[];var _0x1781e3=[];var _0xe601b6=squel[_0x6392('0x6d')]();_0xe601b6['field'](_0x6392('0x6e'))['from'](_0x6392('0x6f'),'tq')[_0x6392('0x70')](_0x6392('0x71'),'ut',_0x6392('0x72'))[_0x6392('0x40')](_0x6392('0x73'),_0x5bd4db[_0x6392('0x4a')]['id']);for(var _0x395d2e=0x0;_0x395d2e<_0x47acb9[_0x6392('0x56')];_0x395d2e+=0x1){let _0x477515=_0x47acb9[_0x395d2e];for(var _0x12f6a2=0x0;_0x12f6a2<_0x477515[_0x6392('0x62')][_0x6392('0x56')];_0x12f6a2+=0x1){let _0x480e5b=_0x477515[_0x6392('0x62')][_0x12f6a2];var _0x5822d6=_0xe601b6['clone']();_0x5822d6['where'](_0x6392('0x74'),_0x480e5b['id']);_0x1781e3[_0x6392('0x75')](db[_0x6392('0x66')][_0x6392('0x37')](_0x5822d6[_0x6392('0x76')](),{'type':db[_0x6392('0x66')][_0x6392('0x77')]['SELECT']})['then'](function(_0x5c9ac6){if(_0x5c9ac6[_0x6392('0x56')]===0x1){return _0x480e5b['id'];}else{var _0x5bd69b=_['every'](_[_0x6392('0x31')](_0x5c9ac6,_0x6392('0x78')),function(_0xc19ce){return _['includes'](_0x2aeccc,_0xc19ce);});if(_0x5bd69b){return _0x480e5b['id'];}}}));}}return BPromise['all'](_0x1781e3)['then'](function(_0x34a9c1){_0x36e69e=_(_0x36e69e)[_0x6392('0x79')](_0x34a9c1)[_0x6392('0x7a')]()['value']();return db[_0x6392('0x32')][_0x6392('0x4b')]({'where':{'id':_0x5bd4db[_0x6392('0x4a')]['id']}})[_0x6392('0x28')](function(_0xad16d0){return db[_0x6392('0x66')][_0x6392('0x67')](function(_0x1eac5d){return _0xad16d0[_0x6392('0x7b')](_0x5bd4db[_0x6392('0x37')][_0x6392('0x6c')],{'transaction':_0x1eac5d})[_0x6392('0x28')](function(){if(!_[_0x6392('0x7c')](_0x36e69e)){return _0xad16d0[_0x6392('0x7d')](_0x36e69e,{'transaction':_0x1eac5d});}})[_0x6392('0x28')](function(){_0x36e69e[_0x6392('0x7e')](function(_0x43b605){socket[_0x6392('0x7f')](_0x6392('0x80'),{'UserId':_0x43b605,'WhatsappQueueId':_0xad16d0['id']});});});});});});})['then'](respondWithStatusCode(_0x4709a6,null))['catch'](handleError(_0x4709a6,null));};exports['addAgents']=function(_0x572e01,_0x107183,_0x375424){return db['WhatsappQueue'][_0x6392('0x4b')]({'where':{'id':_0x572e01['params']['id']}})[_0x6392('0x28')](handleEntityNotFound(_0x107183,null))['then'](function(_0x595dbe){if(_0x595dbe){return _0x595dbe[_0x6392('0x81')](_0x572e01[_0x6392('0x4e')][_0x6392('0x6c')],_['omit'](_0x572e01[_0x6392('0x4e')],[_0x6392('0x6c'),'id'])||{})[_0x6392('0x82')](function(_0x5454ba){for(var _0x565eba=0x0;_0x565eba<_0x572e01[_0x6392('0x4e')][_0x6392('0x6c')][_0x6392('0x56')];_0x565eba+=0x1){socket[_0x6392('0x7f')](_0x6392('0x6a'),{'UserId':Number(_0x572e01[_0x6392('0x4e')][_0x6392('0x6c')][_0x565eba]),'WhatsappQueueId':Number(_0x572e01[_0x6392('0x4a')]['id'])});}return _0x5454ba;});}})[_0x6392('0x28')](respondWithResult(_0x107183,null))['catch'](handleError(_0x107183,null));};exports[_0x6392('0x7d')]=function(_0x931a9b,_0x284ae1,_0x144d53){return db['WhatsappQueue'][_0x6392('0x4b')]({'where':{'id':_0x931a9b[_0x6392('0x4a')]['id']}})[_0x6392('0x28')](handleEntityNotFound(_0x284ae1,null))['then'](function(_0x29229e){if(_0x29229e){return _0x29229e[_0x6392('0x7d')](_0x931a9b['query'][_0x6392('0x6c')])[_0x6392('0x28')](function(){if(_[_0x6392('0x83')](_0x931a9b[_0x6392('0x37')][_0x6392('0x6c')])){for(var _0x5badd4=0x0;_0x5badd4<_0x931a9b[_0x6392('0x37')][_0x6392('0x6c')][_0x6392('0x56')];_0x5badd4+=0x1){socket[_0x6392('0x7f')](_0x6392('0x80'),{'UserId':Number(_0x931a9b['query'][_0x6392('0x6c')][_0x5badd4]),'WhatsappQueueId':Number(_0x931a9b[_0x6392('0x4a')]['id'])});}}else{socket[_0x6392('0x7f')]('userWhatsappQueue:remove',{'UserId':Number(_0x931a9b[_0x6392('0x37')][_0x6392('0x6c')]),'WhatsappQueueId':Number(_0x931a9b[_0x6392('0x4a')]['id'])});}});}})[_0x6392('0x28')](respondWithStatusCode(_0x284ae1,null))['catch'](handleError(_0x284ae1,null));};exports['getAgents']=function(_0x3167d6,_0x167198,_0x38521c){var _0x23ceca={};var _0x3cdb2d={};var _0xa741e8;var _0x2cb1d9;return db[_0x6392('0x32')]['findOne']({'where':{'id':_0x3167d6[_0x6392('0x4a')]['id']}})[_0x6392('0x28')](handleEntityNotFound(_0x167198,null))[_0x6392('0x28')](function(_0x17e316){if(_0x17e316){_0xa741e8=_0x17e316;_0x3cdb2d[_0x6392('0x3a')]=_[_0x6392('0x36')](db['User']['rawAttributes']);_0x3cdb2d['query']=_['keys'](_0x3167d6[_0x6392('0x37')]);_0x3cdb2d['filters']=_[_0x6392('0x39')](_0x3cdb2d[_0x6392('0x3a')],_0x3cdb2d['query']);_0x23ceca['attributes']=_['intersection'](_0x3cdb2d[_0x6392('0x3a')],qs[_0x6392('0x3c')](_0x3167d6[_0x6392('0x37')]['fields']));_0x23ceca[_0x6392('0x3b')]=_0x23ceca[_0x6392('0x3b')][_0x6392('0x56')]?_0x23ceca[_0x6392('0x3b')]:_0x3cdb2d[_0x6392('0x3a')];_0x23ceca[_0x6392('0x3e')]=qs[_0x6392('0x3f')](_0x3167d6['query'][_0x6392('0x3f')]);_0x23ceca[_0x6392('0x40')]=qs[_0x6392('0x38')](_[_0x6392('0x41')](_0x3167d6[_0x6392('0x37')],_0x3cdb2d[_0x6392('0x38')]));if(_0x3167d6[_0x6392('0x37')][_0x6392('0x44')]){_0x23ceca[_0x6392('0x40')]=_[_0x6392('0x42')](_0x23ceca[_0x6392('0x40')],{'$or':_['map'](_0x23ceca['attributes'],function(_0x582cf3){var _0x45c4ae={};_0x45c4ae[_0x582cf3]={'$like':'%'+_0x3167d6[_0x6392('0x37')][_0x6392('0x44')]+'%'};return _0x45c4ae;})});}_0x23ceca=_[_0x6392('0x42')]({},_0x23ceca,_0x3167d6[_0x6392('0x45')]);return _0xa741e8[_0x6392('0x84')](_0x23ceca);}})[_0x6392('0x28')](function(_0x573063){if(_0x573063){_0x2cb1d9=_0x573063[_0x6392('0x56')];if(!_0x3167d6[_0x6392('0x37')]['hasOwnProperty'](_0x6392('0x3d'))){_0x23ceca['limit']=qs[_0x6392('0x21')](_0x3167d6[_0x6392('0x37')]['limit']);_0x23ceca[_0x6392('0x1f')]=qs['offset'](_0x3167d6[_0x6392('0x37')][_0x6392('0x1f')]);}return _0xa741e8['getAgents'](_0x23ceca);}})['then'](function(_0x58d885){if(_0x58d885){return _0x58d885?{'count':_0x2cb1d9,'rows':_0x58d885}:null;}})[_0x6392('0x28')](respondWithResult(_0x167198,null))[_0x6392('0x4c')](handleError(_0x167198,null));};
\ No newline at end of file
+var _0x3b1c=['send','index','map','WhatsappQueue','fieldName','type','key','keys','query','filters','attributes','intersection','model','fields','hasOwnProperty','where','pick','filter','merge','VIRTUAL','includeAll','include','catch','params','length','find','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','WhatsappQueues','UserProfileSection','userProfileId','autoAssociation','create','error','describe','findOne','UserWhatsappQueue','rawAttributes','nolimit','sort','WhatsappQueueId','User','findAndCountAll','UserId','agent','whatsappPause','createdAt','rows','format','%s/%s','updatedAt','getTeams','Team','options','ids','findAll','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','emit','userWhatsappQueue:save','removeTeams','tq.TeamId','from','team_has_whatsapp_queues','user_has_teams','WhatsappQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','includes','all','union','compact','value','isEmpty','removeAgents','addAgents','omit','spread','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappQueue.socket','register','sendStatus','end','status','json','limit','count','offset','set','Content-Range','apply','reject','save','update','destroy','then','UserProfileResource','stack','name'];(function(_0x125c41,_0x2d0822){var _0x41869c=function(_0x2fcf30){while(--_0x2fcf30){_0x125c41['push'](_0x125c41['shift']());}};_0x41869c(++_0x2d0822);}(_0x3b1c,0x17d));var _0xc3b1=function(_0x2860b2,_0x2a8915){_0x2860b2=_0x2860b2-0x0;var _0x48c52b=_0x3b1c[_0x2860b2];return _0x48c52b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc3b1('0x0'));var zipdir=require(_0xc3b1('0x1'));var jsonpatch=require(_0xc3b1('0x2'));var rp=require(_0xc3b1('0x3'));var moment=require(_0xc3b1('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xc3b1('0x5'));var util=require(_0xc3b1('0x6'));var path=require(_0xc3b1('0x7'));var sox=require(_0xc3b1('0x8'));var csv=require(_0xc3b1('0x9'));var ejs=require(_0xc3b1('0xa'));var fs=require('fs');var fs_extra=require(_0xc3b1('0xb'));var _=require(_0xc3b1('0xc'));var squel=require(_0xc3b1('0xd'));var crypto=require(_0xc3b1('0xe'));var jsforce=require(_0xc3b1('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xc3b1('0x9'));var querystring=require(_0xc3b1('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xc3b1('0x11'));var qs=require(_0xc3b1('0x12'));var as=require(_0xc3b1('0x13'));var hardwareService=require(_0xc3b1('0x14'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xc3b1('0x15'));var licenseUtil=require(_0xc3b1('0x16'));var db=require(_0xc3b1('0x17'))['db'];config[_0xc3b1('0x18')]=_[_0xc3b1('0x19')](config['redis'],{'host':_0xc3b1('0x1a'),'port':0x18eb});var socket=require(_0xc3b1('0x1b'))(new Redis(config[_0xc3b1('0x18')]));require(_0xc3b1('0x1c'))[_0xc3b1('0x1d')](socket);function respondWithStatusCode(_0x33229b,_0x382e8c){_0x382e8c=_0x382e8c||0xcc;return function(_0xf2a62e){if(_0xf2a62e){return _0x33229b[_0xc3b1('0x1e')](_0x382e8c);}return _0x33229b['status'](_0x382e8c)[_0xc3b1('0x1f')]();};}function respondWithResult(_0x3a568c,_0x304d22){_0x304d22=_0x304d22||0xc8;return function(_0x565910){if(_0x565910){return _0x3a568c[_0xc3b1('0x20')](_0x304d22)[_0xc3b1('0x21')](_0x565910);}};}function respondWithFilteredResult(_0x3bda9d,_0x954743){return function(_0x416d5f){if(_0x416d5f){var _0x21552c=typeof _0x954743['offset']==='undefined'&&typeof _0x954743[_0xc3b1('0x22')]==='undefined';var _0x4fb23c=_0x416d5f[_0xc3b1('0x23')];var _0x595b39=_0x21552c?0x0:_0x954743[_0xc3b1('0x24')];var _0x2f0688=_0x21552c?_0x416d5f[_0xc3b1('0x23')]:_0x954743[_0xc3b1('0x24')]+_0x954743[_0xc3b1('0x22')];var _0xf0af5c;if(_0x2f0688>=_0x4fb23c){_0x2f0688=_0x4fb23c;_0xf0af5c=0xc8;}else{_0xf0af5c=0xce;}_0x3bda9d[_0xc3b1('0x20')](_0xf0af5c);return _0x3bda9d[_0xc3b1('0x25')](_0xc3b1('0x26'),_0x595b39+'-'+_0x2f0688+'/'+_0x4fb23c)[_0xc3b1('0x21')](_0x416d5f);}return null;};}function patchUpdates(_0x2c5ef8){return function(_0x427482){try{jsonpatch[_0xc3b1('0x27')](_0x427482,_0x2c5ef8,!![]);}catch(_0x3d7f34){return BPromise[_0xc3b1('0x28')](_0x3d7f34);}return _0x427482[_0xc3b1('0x29')]();};}function saveUpdates(_0x3c5bca,_0x432e8c){return function(_0x1c04ef){if(_0x1c04ef){return _0x1c04ef[_0xc3b1('0x2a')](_0x3c5bca)['then'](function(_0x483149){return _0x483149;});}return null;};}function removeEntity(_0x19992f,_0xc0ab7e){return function(_0x4d0e9a){if(_0x4d0e9a){return _0x4d0e9a[_0xc3b1('0x2b')]()[_0xc3b1('0x2c')](function(){var _0x217a87=_0x4d0e9a['get']({'plain':!![]});var _0x4bfb81='WhatsappQueues';return db[_0xc3b1('0x2d')]['destroy']({'where':{'type':_0x4bfb81,'resourceId':_0x217a87['id']}})[_0xc3b1('0x2c')](function(){return _0x4d0e9a;});})['then'](function(){_0x19992f['status'](0xcc)[_0xc3b1('0x1f')]();});}};}function handleEntityNotFound(_0x48b065,_0x5afb0a){return function(_0x2fce8f){if(!_0x2fce8f){_0x48b065[_0xc3b1('0x1e')](0x194);}return _0x2fce8f;};}function handleError(_0x26e135,_0x42fb19){_0x42fb19=_0x42fb19||0x1f4;return function(_0x394c76){logger['error'](_0x394c76[_0xc3b1('0x2e')]);if(_0x394c76[_0xc3b1('0x2f')]){delete _0x394c76['name'];}_0x26e135[_0xc3b1('0x20')](_0x42fb19)[_0xc3b1('0x30')](_0x394c76);};}exports[_0xc3b1('0x31')]=function(_0x50c97c,_0x5c02ee){var _0x575f9b={},_0x1703c3={},_0xec5881={'count':0x0,'rows':[]};var _0x2959fc=_[_0xc3b1('0x32')](db[_0xc3b1('0x33')]['rawAttributes'],function(_0x5dfddf){return{'name':_0x5dfddf[_0xc3b1('0x34')],'type':_0x5dfddf[_0xc3b1('0x35')][_0xc3b1('0x36')]};});_0x1703c3['model']=_[_0xc3b1('0x32')](_0x2959fc,'name');_0x1703c3['query']=_[_0xc3b1('0x37')](_0x50c97c[_0xc3b1('0x38')]);_0x1703c3[_0xc3b1('0x39')]=_['intersection'](_0x1703c3['model'],_0x1703c3[_0xc3b1('0x38')]);_0x575f9b[_0xc3b1('0x3a')]=_[_0xc3b1('0x3b')](_0x1703c3[_0xc3b1('0x3c')],qs[_0xc3b1('0x3d')](_0x50c97c['query'][_0xc3b1('0x3d')]));_0x575f9b[_0xc3b1('0x3a')]=_0x575f9b[_0xc3b1('0x3a')]['length']?_0x575f9b[_0xc3b1('0x3a')]:_0x1703c3[_0xc3b1('0x3c')];if(!_0x50c97c[_0xc3b1('0x38')][_0xc3b1('0x3e')]('nolimit')){_0x575f9b[_0xc3b1('0x22')]=qs[_0xc3b1('0x22')](_0x50c97c['query']['limit']);_0x575f9b[_0xc3b1('0x24')]=qs[_0xc3b1('0x24')](_0x50c97c[_0xc3b1('0x38')]['offset']);}_0x575f9b['order']=qs['sort'](_0x50c97c[_0xc3b1('0x38')]['sort']);_0x575f9b[_0xc3b1('0x3f')]=qs[_0xc3b1('0x39')](_[_0xc3b1('0x40')](_0x50c97c[_0xc3b1('0x38')],_0x1703c3['filters']),_0x2959fc);if(_0x50c97c[_0xc3b1('0x38')][_0xc3b1('0x41')]){_0x575f9b[_0xc3b1('0x3f')]=_[_0xc3b1('0x42')](_0x575f9b[_0xc3b1('0x3f')],{'$or':_[_0xc3b1('0x32')](_0x2959fc,function(_0x344e53){if(_0x344e53['type']!==_0xc3b1('0x43')){var _0x55a93a={};_0x55a93a[_0x344e53['name']]={'$like':'%'+_0x50c97c[_0xc3b1('0x38')][_0xc3b1('0x41')]+'%'};return _0x55a93a;}})});}_0x575f9b=_['merge']({},_0x575f9b,_0x50c97c['options']);var _0x35bcbd={'where':_0x575f9b[_0xc3b1('0x3f')]};return db['WhatsappQueue'][_0xc3b1('0x23')](_0x35bcbd)[_0xc3b1('0x2c')](function(_0x26181a){_0xec5881[_0xc3b1('0x23')]=_0x26181a;if(_0x50c97c[_0xc3b1('0x38')][_0xc3b1('0x44')]){_0x575f9b[_0xc3b1('0x45')]=[{'all':!![]}];}return db[_0xc3b1('0x33')]['findAll'](_0x575f9b);})[_0xc3b1('0x2c')](function(_0x592ad7){_0xec5881['rows']=_0x592ad7;return _0xec5881;})[_0xc3b1('0x2c')](respondWithFilteredResult(_0x5c02ee,_0x575f9b))[_0xc3b1('0x46')](handleError(_0x5c02ee,null));};exports['show']=function(_0x54ad43,_0x3bc062){var _0x15d9a5={'raw':!![],'where':{'id':_0x54ad43[_0xc3b1('0x47')]['id']}},_0x1a2878={};_0x1a2878[_0xc3b1('0x3c')]=_[_0xc3b1('0x37')](db[_0xc3b1('0x33')]['rawAttributes']);_0x1a2878[_0xc3b1('0x38')]=_[_0xc3b1('0x37')](_0x54ad43[_0xc3b1('0x38')]);_0x1a2878[_0xc3b1('0x39')]=_[_0xc3b1('0x3b')](_0x1a2878[_0xc3b1('0x3c')],_0x1a2878[_0xc3b1('0x38')]);_0x15d9a5['attributes']=_[_0xc3b1('0x3b')](_0x1a2878[_0xc3b1('0x3c')],qs[_0xc3b1('0x3d')](_0x54ad43[_0xc3b1('0x38')][_0xc3b1('0x3d')]));_0x15d9a5[_0xc3b1('0x3a')]=_0x15d9a5[_0xc3b1('0x3a')][_0xc3b1('0x48')]?_0x15d9a5['attributes']:_0x1a2878[_0xc3b1('0x3c')];if(_0x54ad43[_0xc3b1('0x38')][_0xc3b1('0x44')]){_0x15d9a5[_0xc3b1('0x45')]=[{'all':!![]}];}_0x15d9a5=_[_0xc3b1('0x42')]({},_0x15d9a5,_0x54ad43['options']);return db[_0xc3b1('0x33')][_0xc3b1('0x49')](_0x15d9a5)[_0xc3b1('0x2c')](handleEntityNotFound(_0x3bc062,null))['then'](respondWithResult(_0x3bc062,null))[_0xc3b1('0x46')](handleError(_0x3bc062,null));};exports['create']=function(_0x1071be,_0x4f44a0){return db['WhatsappQueue']['create'](_0x1071be[_0xc3b1('0x4a')],{})['then'](function(_0x243fb3){var _0x2554f1=_0x1071be[_0xc3b1('0x4b')][_0xc3b1('0x4c')]({'plain':!![]});if(!_0x2554f1)throw new Error(_0xc3b1('0x4d'));if(_0x2554f1[_0xc3b1('0x4e')]===_0xc3b1('0x4b')){var _0x55f316=_0x243fb3[_0xc3b1('0x4c')]({'plain':!![]});var _0x179b73=_0xc3b1('0x4f');return db[_0xc3b1('0x50')][_0xc3b1('0x49')]({'where':{'name':_0x179b73,'userProfileId':_0x2554f1[_0xc3b1('0x51')]},'raw':!![]})[_0xc3b1('0x2c')](function(_0x9e59a3){if(_0x9e59a3&&_0x9e59a3[_0xc3b1('0x52')]===0x0){return db['UserProfileResource'][_0xc3b1('0x53')]({'name':_0x55f316[_0xc3b1('0x2f')],'resourceId':_0x55f316['id'],'type':_0x9e59a3[_0xc3b1('0x2f')],'sectionId':_0x9e59a3['id']},{})[_0xc3b1('0x2c')](function(){return _0x243fb3;});}else{return _0x243fb3;}})[_0xc3b1('0x46')](function(_0x555298){logger[_0xc3b1('0x54')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x555298);throw _0x555298;});}return _0x243fb3;})[_0xc3b1('0x2c')](respondWithResult(_0x4f44a0,0xc9))[_0xc3b1('0x46')](handleError(_0x4f44a0,null));};exports[_0xc3b1('0x2a')]=function(_0x42f595,_0x1873ac){if(_0x42f595[_0xc3b1('0x4a')]['id']){delete _0x42f595['body']['id'];}return db['WhatsappQueue'][_0xc3b1('0x49')]({'where':{'id':_0x42f595[_0xc3b1('0x47')]['id']}})[_0xc3b1('0x2c')](handleEntityNotFound(_0x1873ac,null))[_0xc3b1('0x2c')](saveUpdates(_0x42f595[_0xc3b1('0x4a')],null))['then'](respondWithResult(_0x1873ac,null))[_0xc3b1('0x46')](handleError(_0x1873ac,null));};exports[_0xc3b1('0x2b')]=function(_0x10a3f8,_0x5844ef){return db[_0xc3b1('0x33')][_0xc3b1('0x49')]({'where':{'id':_0x10a3f8['params']['id']}})['then'](handleEntityNotFound(_0x5844ef,null))['then'](removeEntity(_0x5844ef,null))['catch'](handleError(_0x5844ef,null));};exports['describe']=function(_0x2405be,_0x32ee02){return db['WhatsappQueue'][_0xc3b1('0x55')]()['then'](respondWithResult(_0x32ee02,null))[_0xc3b1('0x46')](handleError(_0x32ee02,null));};exports['getMembers']=function(_0x203c12,_0x365b25,_0x48cf3d){var _0x308fe0={'raw':!![],'where':{}},_0x1646bf={},_0x28dfdf;return db['WhatsappQueue'][_0xc3b1('0x56')]({'where':{'id':_0x203c12[_0xc3b1('0x47')]['id']}})[_0xc3b1('0x2c')](handleEntityNotFound(_0x365b25,null))[_0xc3b1('0x2c')](function(_0x59d6b3){if(_0x59d6b3){_0x28dfdf=_0x59d6b3[_0xc3b1('0x4c')]({'plain':!![]});_0x1646bf[_0xc3b1('0x3c')]=_[_0xc3b1('0x37')](db[_0xc3b1('0x57')][_0xc3b1('0x58')]);_0x1646bf[_0xc3b1('0x38')]=_[_0xc3b1('0x37')](_0x203c12[_0xc3b1('0x38')]);_0x1646bf[_0xc3b1('0x39')]=_[_0xc3b1('0x3b')](_0x1646bf[_0xc3b1('0x3c')],_0x1646bf[_0xc3b1('0x38')]);_0x308fe0[_0xc3b1('0x3a')]=_[_0xc3b1('0x3b')](_0x1646bf['model'],qs['fields'](_0x203c12['query'][_0xc3b1('0x3d')]));_0x308fe0[_0xc3b1('0x3a')]=_0x308fe0[_0xc3b1('0x3a')][_0xc3b1('0x48')]?_0x308fe0[_0xc3b1('0x3a')]:_0x1646bf[_0xc3b1('0x3c')];if(!_0x203c12['query'][_0xc3b1('0x3e')](_0xc3b1('0x59'))){_0x308fe0[_0xc3b1('0x22')]=qs[_0xc3b1('0x22')](_0x203c12[_0xc3b1('0x38')][_0xc3b1('0x22')]);_0x308fe0['offset']=qs[_0xc3b1('0x24')](_0x203c12[_0xc3b1('0x38')][_0xc3b1('0x24')]);}_0x308fe0['order']=qs[_0xc3b1('0x5a')](_0x203c12[_0xc3b1('0x38')]['sort']);_0x308fe0['where']=qs[_0xc3b1('0x39')](_[_0xc3b1('0x40')](_0x203c12[_0xc3b1('0x38')],_0x1646bf[_0xc3b1('0x39')]));_0x308fe0[_0xc3b1('0x3f')][_0xc3b1('0x5b')]=_0x59d6b3['id'];if(_0x203c12[_0xc3b1('0x38')]['filter']){_0x308fe0[_0xc3b1('0x3f')]=_[_0xc3b1('0x42')](_0x308fe0[_0xc3b1('0x3f')],{'$or':_[_0xc3b1('0x32')](_0x308fe0[_0xc3b1('0x3a')],function(_0x22e608){var _0xde48ec={};_0xde48ec[_0x22e608]={'$like':'%'+_0x203c12[_0xc3b1('0x38')][_0xc3b1('0x41')]+'%'};return _0xde48ec;})});}_0x308fe0=_['merge']({},_0x308fe0,_0x203c12['options']);return db[_0xc3b1('0x57')]['findAll'](_0x308fe0);}})['then'](function(_0x275e22){if(_0x275e22){return db[_0xc3b1('0x5c')][_0xc3b1('0x5d')]({'where':{'id':_[_0xc3b1('0x32')](_0x275e22,_0xc3b1('0x5e')),'role':_0xc3b1('0x5f')},'attributes':['id',_0xc3b1('0x2f'),_0xc3b1('0x60'),'updatedAt',_0xc3b1('0x61')]});}})['then'](function(_0x10044a){if(_0x10044a){return{'count':_0x10044a[_0xc3b1('0x23')],'rows':_[_0xc3b1('0x32')](_0x10044a[_0xc3b1('0x62')],function(_0x5a83ca){return{'membername':_0x5a83ca[_0xc3b1('0x2f')],'UserId':_0x5a83ca['id'],'queue_name':_0x28dfdf['name'],'WhatsappQueueId':_0x28dfdf['id'],'interface':util[_0xc3b1('0x63')](_0xc3b1('0x64'),'SIP',_0x5a83ca[_0xc3b1('0x2f')]),'penalty':0x0,'paused':_0x5a83ca[_0xc3b1('0x60')],'createdAt':_0x5a83ca[_0xc3b1('0x61')],'updatedAt':_0x5a83ca[_0xc3b1('0x65')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xc3b1('0x2c')](respondWithFilteredResult(_0x365b25,_0x308fe0))['catch'](handleError(_0x365b25,null));};exports[_0xc3b1('0x66')]=function(_0x52fe9b,_0x815d30,_0x3f3e9f){var _0x18325f={};var _0x3a8146={};var _0x378ef8;var _0x148ab4;return db[_0xc3b1('0x33')]['findOne']({'where':{'id':_0x52fe9b['params']['id']}})[_0xc3b1('0x2c')](handleEntityNotFound(_0x815d30,null))[_0xc3b1('0x2c')](function(_0x2b6168){if(_0x2b6168){_0x378ef8=_0x2b6168;_0x3a8146[_0xc3b1('0x3c')]=_[_0xc3b1('0x37')](db[_0xc3b1('0x67')]['rawAttributes']);_0x3a8146[_0xc3b1('0x38')]=_[_0xc3b1('0x37')](_0x52fe9b[_0xc3b1('0x38')]);_0x3a8146[_0xc3b1('0x39')]=_[_0xc3b1('0x3b')](_0x3a8146[_0xc3b1('0x3c')],_0x3a8146[_0xc3b1('0x38')]);_0x18325f[_0xc3b1('0x3a')]=_[_0xc3b1('0x3b')](_0x3a8146['model'],qs[_0xc3b1('0x3d')](_0x52fe9b['query']['fields']));_0x18325f['attributes']=_0x18325f[_0xc3b1('0x3a')][_0xc3b1('0x48')]?_0x18325f[_0xc3b1('0x3a')]:_0x3a8146[_0xc3b1('0x3c')];_0x18325f['order']=qs[_0xc3b1('0x5a')](_0x52fe9b['query'][_0xc3b1('0x5a')]);_0x18325f[_0xc3b1('0x3f')]=qs['filters'](_[_0xc3b1('0x40')](_0x52fe9b[_0xc3b1('0x38')],_0x3a8146[_0xc3b1('0x39')]));if(_0x52fe9b[_0xc3b1('0x38')]['filter']){_0x18325f[_0xc3b1('0x3f')]=_['merge'](_0x18325f['where'],{'$or':_[_0xc3b1('0x32')](_0x18325f['attributes'],function(_0x53d444){var _0x1af8c3={};_0x1af8c3[_0x53d444]={'$like':'%'+_0x52fe9b[_0xc3b1('0x38')]['filter']+'%'};return _0x1af8c3;})});}_0x18325f=_['merge']({},_0x18325f,_0x52fe9b[_0xc3b1('0x68')]);return _0x378ef8[_0xc3b1('0x66')](_0x18325f);}})['then'](function(_0x94c16a){if(_0x94c16a){_0x148ab4=_0x94c16a[_0xc3b1('0x48')];if(!_0x52fe9b['query'][_0xc3b1('0x3e')]('nolimit')){_0x18325f['limit']=qs[_0xc3b1('0x22')](_0x52fe9b[_0xc3b1('0x38')][_0xc3b1('0x22')]);_0x18325f[_0xc3b1('0x24')]=qs[_0xc3b1('0x24')](_0x52fe9b[_0xc3b1('0x38')]['offset']);}return _0x378ef8[_0xc3b1('0x66')](_0x18325f);}})[_0xc3b1('0x2c')](function(_0x57a83c){if(_0x57a83c){return _0x57a83c?{'count':_0x148ab4,'rows':_0x57a83c}:null;}})[_0xc3b1('0x2c')](respondWithResult(_0x815d30,null))[_0xc3b1('0x46')](handleError(_0x815d30,null));};exports['addTeams']=function(_0x23dbef,_0x5e06cf,_0x31b68d){var _0x48f3e8=_0x23dbef[_0xc3b1('0x4a')][_0xc3b1('0x69')];return db['Team'][_0xc3b1('0x6a')]({'where':{'id':_0x48f3e8},'attributes':['id'],'include':[{'model':db['User'],'as':_0xc3b1('0x6b'),'attributes':['id',_0xc3b1('0x2f'),_0xc3b1('0x6c'),_0xc3b1('0x6d'),_0xc3b1('0x6e')],'raw':!![]}]})[_0xc3b1('0x2c')](function(_0x354bd2){if(_0x354bd2){var _0xc1ceaa=_[_0xc3b1('0x6f')](_0x354bd2,function(_0x3a45a4){var _0x34e819=_0x3a45a4[_0xc3b1('0x4c')]({'plain':!![]});return _0x34e819[_0xc3b1('0x6b')];});return db[_0xc3b1('0x33')][_0xc3b1('0x49')]({'where':{'id':_0x23dbef[_0xc3b1('0x47')]['id']}})[_0xc3b1('0x2c')](function(_0x5871fa){return db[_0xc3b1('0x70')][_0xc3b1('0x71')](function(_0x8d591){return _0x5871fa['addTeams'](_0x48f3e8,{'transaction':_0x8d591})[_0xc3b1('0x2c')](function(){return BPromise[_0xc3b1('0x72')](_0xc1ceaa,function(_0x291b94){return db['UserWhatsappQueue'][_0xc3b1('0x73')]({'where':{'UserId':_0x291b94['id'],'WhatsappQueueId':_0x23dbef['params']['id']},'transaction':_0x8d591});});})[_0xc3b1('0x2c')](function(){_0xc1ceaa[_0xc3b1('0x74')](function(_0x1de8f6){socket[_0xc3b1('0x75')](_0xc3b1('0x76'),{'UserId':_0x1de8f6['id'],'WhatsappQueueId':_0x5871fa['id']});});});});});}})[_0xc3b1('0x2c')](respondWithStatusCode(_0x5e06cf,null))[_0xc3b1('0x46')](handleError(_0x5e06cf,null));};exports[_0xc3b1('0x77')]=function(_0x579809,_0x561378,_0x365c9d){return db[_0xc3b1('0x67')]['findAll']({'where':{'id':_0x579809[_0xc3b1('0x38')]['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':_0xc3b1('0x6b'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x561378,null))[_0xc3b1('0x2c')](function(_0x373797){var _0x42d7e7=_[_0xc3b1('0x32')](_0x373797,'id');var _0xb50962=[];var _0x1b8b61=[];var _0x192eb2=squel['select']();_0x192eb2['field'](_0xc3b1('0x78'))[_0xc3b1('0x79')](_0xc3b1('0x7a'),'tq')['join'](_0xc3b1('0x7b'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0xc3b1('0x3f')](_0xc3b1('0x7c'),_0x579809[_0xc3b1('0x47')]['id']);for(var _0x5ecfec=0x0;_0x5ecfec<_0x373797['length'];_0x5ecfec+=0x1){let _0x5b2b71=_0x373797[_0x5ecfec];for(var _0x3e0103=0x0;_0x3e0103<_0x5b2b71[_0xc3b1('0x6b')][_0xc3b1('0x48')];_0x3e0103+=0x1){let _0x406a90=_0x5b2b71[_0xc3b1('0x6b')][_0x3e0103];var _0xb2c048=_0x192eb2[_0xc3b1('0x7d')]();_0xb2c048[_0xc3b1('0x3f')](_0xc3b1('0x7e'),_0x406a90['id']);_0x1b8b61[_0xc3b1('0x7f')](db[_0xc3b1('0x70')]['query'](_0xb2c048[_0xc3b1('0x80')](),{'type':db[_0xc3b1('0x70')][_0xc3b1('0x81')][_0xc3b1('0x82')]})[_0xc3b1('0x2c')](function(_0x54caff){if(_0x54caff[_0xc3b1('0x48')]===0x1){return _0x406a90['id'];}else{var _0x4a639d=_[_0xc3b1('0x83')](_[_0xc3b1('0x32')](_0x54caff,'TeamId'),function(_0x379e69){return _[_0xc3b1('0x84')](_0x42d7e7,_0x379e69);});if(_0x4a639d){return _0x406a90['id'];}}}));}}return BPromise[_0xc3b1('0x85')](_0x1b8b61)[_0xc3b1('0x2c')](function(_0x281f95){_0xb50962=_(_0xb50962)[_0xc3b1('0x86')](_0x281f95)[_0xc3b1('0x87')]()[_0xc3b1('0x88')]();return db[_0xc3b1('0x33')][_0xc3b1('0x49')]({'where':{'id':_0x579809[_0xc3b1('0x47')]['id']}})['then'](function(_0x43a70b){return db[_0xc3b1('0x70')]['transaction'](function(_0x49bd66){return _0x43a70b[_0xc3b1('0x77')](_0x579809['query']['ids'],{'transaction':_0x49bd66})[_0xc3b1('0x2c')](function(){if(!_[_0xc3b1('0x89')](_0xb50962)){return _0x43a70b[_0xc3b1('0x8a')](_0xb50962,{'transaction':_0x49bd66});}})['then'](function(){_0xb50962[_0xc3b1('0x74')](function(_0x7255c){socket[_0xc3b1('0x75')]('userWhatsappQueue:remove',{'UserId':_0x7255c,'WhatsappQueueId':_0x43a70b['id']});});});});});});})['then'](respondWithStatusCode(_0x561378,null))[_0xc3b1('0x46')](handleError(_0x561378,null));};exports[_0xc3b1('0x8b')]=function(_0xb6bff1,_0x5b7d51,_0x3c53e5){return db[_0xc3b1('0x33')][_0xc3b1('0x49')]({'where':{'id':_0xb6bff1[_0xc3b1('0x47')]['id']}})[_0xc3b1('0x2c')](handleEntityNotFound(_0x5b7d51,null))[_0xc3b1('0x2c')](function(_0x11665a){if(_0x11665a){return _0x11665a['addAgents'](_0xb6bff1[_0xc3b1('0x4a')]['ids'],_[_0xc3b1('0x8c')](_0xb6bff1[_0xc3b1('0x4a')],['ids','id'])||{})[_0xc3b1('0x8d')](function(_0x58b380){for(var _0x3935bb=0x0;_0x3935bb<_0xb6bff1[_0xc3b1('0x4a')][_0xc3b1('0x69')][_0xc3b1('0x48')];_0x3935bb+=0x1){socket['emit'](_0xc3b1('0x76'),{'UserId':Number(_0xb6bff1['body'][_0xc3b1('0x69')][_0x3935bb]),'WhatsappQueueId':Number(_0xb6bff1[_0xc3b1('0x47')]['id'])});}return _0x58b380;});}})[_0xc3b1('0x2c')](respondWithResult(_0x5b7d51,null))[_0xc3b1('0x46')](handleError(_0x5b7d51,null));};exports[_0xc3b1('0x8a')]=function(_0xa752c7,_0x45e5a8,_0x25e2d0){return db[_0xc3b1('0x33')][_0xc3b1('0x49')]({'where':{'id':_0xa752c7['params']['id']}})['then'](handleEntityNotFound(_0x45e5a8,null))[_0xc3b1('0x2c')](function(_0x4d3466){if(_0x4d3466){return _0x4d3466[_0xc3b1('0x8a')](_0xa752c7[_0xc3b1('0x38')][_0xc3b1('0x69')])['then'](function(){if(_['isArray'](_0xa752c7[_0xc3b1('0x38')][_0xc3b1('0x69')])){for(var _0x5e16e3=0x0;_0x5e16e3<_0xa752c7[_0xc3b1('0x38')][_0xc3b1('0x69')][_0xc3b1('0x48')];_0x5e16e3+=0x1){socket[_0xc3b1('0x75')]('userWhatsappQueue:remove',{'UserId':Number(_0xa752c7['query'][_0xc3b1('0x69')][_0x5e16e3]),'WhatsappQueueId':Number(_0xa752c7[_0xc3b1('0x47')]['id'])});}}else{socket[_0xc3b1('0x75')]('userWhatsappQueue:remove',{'UserId':Number(_0xa752c7[_0xc3b1('0x38')][_0xc3b1('0x69')]),'WhatsappQueueId':Number(_0xa752c7[_0xc3b1('0x47')]['id'])});}});}})[_0xc3b1('0x2c')](respondWithStatusCode(_0x45e5a8,null))['catch'](handleError(_0x45e5a8,null));};exports['getAgents']=function(_0x3bbea2,_0x5bf487,_0x34d70c){var _0x2fec9c={};var _0x2bf5cc={};var _0xdb641a;var _0x11c97e;return db[_0xc3b1('0x33')]['findOne']({'where':{'id':_0x3bbea2[_0xc3b1('0x47')]['id']}})[_0xc3b1('0x2c')](handleEntityNotFound(_0x5bf487,null))['then'](function(_0x4c6dd2){if(_0x4c6dd2){_0xdb641a=_0x4c6dd2;_0x2bf5cc[_0xc3b1('0x3c')]=_[_0xc3b1('0x37')](db['User'][_0xc3b1('0x58')]);_0x2bf5cc['query']=_[_0xc3b1('0x37')](_0x3bbea2[_0xc3b1('0x38')]);_0x2bf5cc[_0xc3b1('0x39')]=_[_0xc3b1('0x3b')](_0x2bf5cc[_0xc3b1('0x3c')],_0x2bf5cc['query']);_0x2fec9c[_0xc3b1('0x3a')]=_['intersection'](_0x2bf5cc['model'],qs[_0xc3b1('0x3d')](_0x3bbea2[_0xc3b1('0x38')][_0xc3b1('0x3d')]));_0x2fec9c[_0xc3b1('0x3a')]=_0x2fec9c[_0xc3b1('0x3a')][_0xc3b1('0x48')]?_0x2fec9c[_0xc3b1('0x3a')]:_0x2bf5cc['model'];_0x2fec9c['order']=qs[_0xc3b1('0x5a')](_0x3bbea2[_0xc3b1('0x38')][_0xc3b1('0x5a')]);_0x2fec9c[_0xc3b1('0x3f')]=qs[_0xc3b1('0x39')](_[_0xc3b1('0x40')](_0x3bbea2[_0xc3b1('0x38')],_0x2bf5cc[_0xc3b1('0x39')]));if(_0x3bbea2[_0xc3b1('0x38')][_0xc3b1('0x41')]){_0x2fec9c['where']=_[_0xc3b1('0x42')](_0x2fec9c['where'],{'$or':_['map'](_0x2fec9c[_0xc3b1('0x3a')],function(_0x1ed1d5){var _0x44d48e={};_0x44d48e[_0x1ed1d5]={'$like':'%'+_0x3bbea2['query']['filter']+'%'};return _0x44d48e;})});}_0x2fec9c=_[_0xc3b1('0x42')]({},_0x2fec9c,_0x3bbea2[_0xc3b1('0x68')]);return _0xdb641a[_0xc3b1('0x8e')](_0x2fec9c);}})['then'](function(_0x73360){if(_0x73360){_0x11c97e=_0x73360[_0xc3b1('0x48')];if(!_0x3bbea2[_0xc3b1('0x38')][_0xc3b1('0x3e')](_0xc3b1('0x59'))){_0x2fec9c[_0xc3b1('0x22')]=qs[_0xc3b1('0x22')](_0x3bbea2[_0xc3b1('0x38')][_0xc3b1('0x22')]);_0x2fec9c['offset']=qs[_0xc3b1('0x24')](_0x3bbea2[_0xc3b1('0x38')][_0xc3b1('0x24')]);}return _0xdb641a[_0xc3b1('0x8e')](_0x2fec9c);}})[_0xc3b1('0x2c')](function(_0x203f56){if(_0x203f56){return _0x203f56?{'count':_0x11c97e,'rows':_0x203f56}:null;}})[_0xc3b1('0x2c')](respondWithResult(_0x5bf487,null))[_0xc3b1('0x46')](handleError(_0x5bf487,null));};
\ No newline at end of file
index 20c8053..8563b92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9655=['hasOwnProperty','hook','exports','events','WhatsappQueue','setMaxListeners','save','update','remove','emit'];(function(_0x5111e9,_0x4d2dff){var _0x456ff5=function(_0xb88995){while(--_0xb88995){_0x5111e9['push'](_0x5111e9['shift']());}};_0x456ff5(++_0x4d2dff);}(_0x9655,0x14d));var _0x5965=function(_0x2e3bc8,_0x2216d0){_0x2e3bc8=_0x2e3bc8-0x0;var _0x26ee87=_0x9655[_0x2e3bc8];return _0x26ee87;};'use strict';var EventEmitter=require(_0x5965('0x0'));var WhatsappQueue=require('../../mysqldb')['db'][_0x5965('0x1')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0x5965('0x2')](0x0);var events={'afterCreate':_0x5965('0x3'),'afterUpdate':_0x5965('0x4'),'afterDestroy':_0x5965('0x5')};function emitEvent(_0x5d332b){return function(_0x309fba,_0x107e6a,_0x43be35){WhatsappQueueEvents[_0x5965('0x6')](_0x5d332b+':'+_0x309fba['id'],_0x309fba);WhatsappQueueEvents[_0x5965('0x6')](_0x5d332b,_0x309fba);_0x43be35(null);};}for(var e in events){if(events[_0x5965('0x7')](e)){var event=events[e];WhatsappQueue[_0x5965('0x8')](e,emitEvent(event));}}module[_0x5965('0x9')]=WhatsappQueueEvents;
\ No newline at end of file
+var _0x6613=['hook','exports','events','../../mysqldb','WhatsappQueue','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x6613,0xbd));var _0x3661=function(_0x369c6,_0x1e6564){_0x369c6=_0x369c6-0x0;var _0x200515=_0x6613[_0x369c6];return _0x200515;};'use strict';var EventEmitter=require(_0x3661('0x0'));var WhatsappQueue=require(_0x3661('0x1'))['db'][_0x3661('0x2')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0x3661('0x3')](0x0);var events={'afterCreate':_0x3661('0x4'),'afterUpdate':_0x3661('0x5'),'afterDestroy':_0x3661('0x6')};function emitEvent(_0x933eac){return function(_0x4263c4,_0x3b64a3,_0x2b6c03){WhatsappQueueEvents[_0x3661('0x7')](_0x933eac+':'+_0x4263c4['id'],_0x4263c4);WhatsappQueueEvents[_0x3661('0x7')](_0x933eac,_0x4263c4);_0x2b6c03(null);};}for(var e in events){if(events[_0x3661('0x8')](e)){var event=events[e];WhatsappQueue[_0x3661('0x9')](e,emitEvent(event));}}module[_0x3661('0xa')]=WhatsappQueueEvents;
\ No newline at end of file
index 3ea3a10..c9a2945 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf400=['api','moment','bluebird','rimraf','../../config/environment','./whatsappQueue.attributes','define','WhatsappQueue','lodash','util'];(function(_0x6e05f2,_0x7fc70e){var _0xc30bbc=function(_0x282f30){while(--_0x282f30){_0x6e05f2['push'](_0x6e05f2['shift']());}};_0xc30bbc(++_0x7fc70e);}(_0xf400,0x76));var _0x0f40=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0xf400[_0xc6be3a];return _0x56a310;};'use strict';var _=require(_0x0f40('0x0'));var util=require(_0x0f40('0x1'));var logger=require('../../config/logger')(_0x0f40('0x2'));var moment=require(_0x0f40('0x3'));var BPromise=require(_0x0f40('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x0f40('0x5'));var config=require(_0x0f40('0x6'));var attributes=require(_0x0f40('0x7'));module['exports']=function(_0x2776a7,_0x3d1c7c){return _0x2776a7[_0x0f40('0x8')](_0x0f40('0x9'),attributes,{'tableName':'whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd6dd=['request-promise','path','rimraf','../../config/environment','./whatsappQueue.attributes','exports','define','whatsapp_queues','lodash','../../config/logger','api','moment'];(function(_0x4b5385,_0x3f4c7e){var _0x286c0a=function(_0x5c4fe1){while(--_0x5c4fe1){_0x4b5385['push'](_0x4b5385['shift']());}};_0x286c0a(++_0x3f4c7e);}(_0xd6dd,0x1c4));var _0xdd6d=function(_0x21fdce,_0x3b4c0e){_0x21fdce=_0x21fdce-0x0;var _0xcdf7d6=_0xd6dd[_0x21fdce];return _0xcdf7d6;};'use strict';var _=require(_0xdd6d('0x0'));var util=require('util');var logger=require(_0xdd6d('0x1'))(_0xdd6d('0x2'));var moment=require(_0xdd6d('0x3'));var BPromise=require('bluebird');var rp=require(_0xdd6d('0x4'));var fs=require('fs');var path=require(_0xdd6d('0x5'));var rimraf=require(_0xdd6d('0x6'));var config=require(_0xdd6d('0x7'));var attributes=require(_0xdd6d('0x8'));module[_0xdd6d('0x9')]=function(_0x12c44f,_0x4549fa){return _0x12c44f[_0xdd6d('0xa')]('WhatsappQueue',attributes,{'tableName':_0xdd6d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f62aa09..558c441 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x614e=['GetWhatsappQueue','findAll','options','raw','where','include','map','model','attributes','then','ShowWhatsappQueue','WhatsappQueue','find','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./whatsappQueue.socket','register','request','WhatsappQueue,\x20%s,\x20%s','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','catch'];(function(_0x44890a,_0xca96dd){var _0x2bf7bf=function(_0x31c685){while(--_0x31c685){_0x44890a['push'](_0x44890a['shift']());}};_0x2bf7bf(++_0xca96dd);}(_0x614e,0xb5));var _0xe614=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x614e[_0x4b369d];return _0x571a98;};'use strict';var _=require(_0xe614('0x0'));var util=require(_0xe614('0x1'));var moment=require('moment');var BPromise=require(_0xe614('0x2'));var rs=require(_0xe614('0x3'));var fs=require('fs');var Redis=require(_0xe614('0x4'));var db=require(_0xe614('0x5'))['db'];var utils=require(_0xe614('0x6'));var logger=require(_0xe614('0x7'))(_0xe614('0x8'));var config=require(_0xe614('0x9'));var jayson=require(_0xe614('0xa'));var client=jayson['client'][_0xe614('0xb')]({'port':0x232a});config[_0xe614('0xc')]=_[_0xe614('0xd')](config[_0xe614('0xc')],{'host':_0xe614('0xe'),'port':0x18eb});var socket=require(_0xe614('0xf'))(new Redis(config['redis']));require(_0xe614('0x10'))[_0xe614('0x11')](socket);function respondWithRpcPromise(_0x256be4,_0x27997d,_0x782d07){return new BPromise(function(_0x33b4a8,_0x481d21){return client[_0xe614('0x12')](_0x256be4,_0x782d07)['then'](function(_0x284c0f){logger['info'](_0xe614('0x13'),_0x27997d,'request\x20sent');logger[_0xe614('0x14')](_0xe614('0x15'),_0x27997d,_0xe614('0x16'),JSON[_0xe614('0x17')](_0x284c0f));if(_0x284c0f[_0xe614('0x18')]){if(_0x284c0f[_0xe614('0x18')]['code']===0x1f4){logger['error'](_0xe614('0x13'),_0x27997d,_0x284c0f['error'][_0xe614('0x19')]);return _0x481d21(_0x284c0f[_0xe614('0x18')][_0xe614('0x19')]);}logger['error'](_0xe614('0x13'),_0x27997d,_0x284c0f['error'][_0xe614('0x19')]);return _0x33b4a8(_0x284c0f['error'][_0xe614('0x19')]);}else{logger[_0xe614('0x1a')](_0xe614('0x13'),_0x27997d,_0xe614('0x16'));_0x33b4a8(_0x284c0f[_0xe614('0x1b')][_0xe614('0x19')]);}})[_0xe614('0x1c')](function(_0x3f73d5){logger[_0xe614('0x18')]('WhatsappQueue,\x20%s,\x20%s',_0x27997d,_0x3f73d5);_0x481d21(_0x3f73d5);});});}exports[_0xe614('0x1d')]=function(_0x336c25){var _0x5da285=this;return new Promise(function(_0x2bac2,_0x18af61){return db['WhatsappQueue'][_0xe614('0x1e')]({'raw':_0x336c25[_0xe614('0x1f')]?_0x336c25[_0xe614('0x1f')][_0xe614('0x20')]===undefined?!![]:![]:!![],'where':_0x336c25['options']?_0x336c25[_0xe614('0x1f')][_0xe614('0x21')]||null:null,'attributes':_0x336c25[_0xe614('0x1f')]?_0x336c25['options']['attributes']||null:null,'limit':_0x336c25[_0xe614('0x1f')]?_0x336c25[_0xe614('0x1f')]['limit']||null:null,'include':_0x336c25[_0xe614('0x1f')]?_0x336c25[_0xe614('0x1f')][_0xe614('0x22')]?_[_0xe614('0x23')](_0x336c25[_0xe614('0x1f')]['include'],function(_0xdcc56d){return{'model':db[_0xdcc56d['model']],'as':_0xdcc56d['as'],'attributes':_0xdcc56d['attributes'],'include':_0xdcc56d[_0xe614('0x22')]?_[_0xe614('0x23')](_0xdcc56d['include'],function(_0x2f499e){return{'model':db[_0x2f499e[_0xe614('0x24')]],'as':_0x2f499e['as'],'attributes':_0x2f499e[_0xe614('0x25')],'include':_0x2f499e[_0xe614('0x22')]?_[_0xe614('0x23')](_0x2f499e[_0xe614('0x22')],function(_0x43ff10){return{'model':db[_0x43ff10[_0xe614('0x24')]],'as':_0x43ff10['as'],'attributes':_0x43ff10['attributes']};}):[]};}):[]};}):[]:[]})[_0xe614('0x26')](function(_0x363a03){logger[_0xe614('0x1a')]('GetWhatsappQueue',_0x336c25);logger['debug'](_0xe614('0x1d'),_0x336c25,JSON['stringify'](_0x363a03));_0x2bac2(_0x363a03);})['catch'](function(_0x1de6d8){logger[_0xe614('0x18')](_0xe614('0x1d'),_0x1de6d8[_0xe614('0x19')],_0x336c25);_0x18af61(_0x5da285['error'](0x1f4,_0x1de6d8[_0xe614('0x19')]));});});};exports[_0xe614('0x27')]=function(_0x3009c0){var _0x2a4d7d=this;return new Promise(function(_0x1fd286,_0x561d4d){return db[_0xe614('0x28')][_0xe614('0x29')]({'raw':_0x3009c0[_0xe614('0x1f')]?_0x3009c0[_0xe614('0x1f')][_0xe614('0x20')]===undefined?!![]:![]:!![],'where':_0x3009c0[_0xe614('0x1f')]?_0x3009c0['options'][_0xe614('0x21')]||null:null,'attributes':_0x3009c0['options']?_0x3009c0[_0xe614('0x1f')][_0xe614('0x25')]||null:null,'include':_0x3009c0[_0xe614('0x1f')]?_0x3009c0[_0xe614('0x1f')]['include']?_[_0xe614('0x23')](_0x3009c0[_0xe614('0x1f')][_0xe614('0x22')],function(_0xcf4979){return{'model':db[_0xcf4979['model']],'as':_0xcf4979['as'],'attributes':_0xcf4979[_0xe614('0x25')],'include':_0xcf4979[_0xe614('0x22')]?_['map'](_0xcf4979[_0xe614('0x22')],function(_0x1224f7){return{'model':db[_0x1224f7[_0xe614('0x24')]],'as':_0x1224f7['as'],'attributes':_0x1224f7[_0xe614('0x25')],'include':_0x1224f7[_0xe614('0x22')]?_[_0xe614('0x23')](_0x1224f7[_0xe614('0x22')],function(_0x55fa82){return{'model':db[_0x55fa82['model']],'as':_0x55fa82['as'],'attributes':_0x55fa82[_0xe614('0x25')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3070ca){logger[_0xe614('0x1a')](_0xe614('0x27'),_0x3009c0);logger[_0xe614('0x14')](_0xe614('0x27'),_0x3009c0,JSON[_0xe614('0x17')](_0x3070ca));_0x1fd286(_0x3070ca);})[_0xe614('0x1c')](function(_0x11246d){logger[_0xe614('0x18')](_0xe614('0x27'),_0x11246d[_0xe614('0x19')],_0x3009c0);_0x561d4d(_0x2a4d7d['error'](0x1f4,_0x11246d[_0xe614('0x19')]));});});};
\ No newline at end of file
+var _0x7aaf=['include','model','attributes','ShowWhatsappQueue','find','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','client','http','redis','localhost','./whatsappQueue.socket','request','then','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetWhatsappQueue','WhatsappQueue','options','raw','where','limit','map'];(function(_0x23ae54,_0x544ef3){var _0x117fa7=function(_0x19b565){while(--_0x19b565){_0x23ae54['push'](_0x23ae54['shift']());}};_0x117fa7(++_0x544ef3);}(_0x7aaf,0x16d));var _0xf7aa=function(_0x3d1214,_0x5b9f64){_0x3d1214=_0x3d1214-0x0;var _0x29aea8=_0x7aaf[_0x3d1214];return _0x29aea8;};'use strict';var _=require(_0xf7aa('0x0'));var util=require('util');var moment=require(_0xf7aa('0x1'));var BPromise=require(_0xf7aa('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf7aa('0x3'));var db=require(_0xf7aa('0x4'))['db'];var utils=require(_0xf7aa('0x5'));var logger=require(_0xf7aa('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xf7aa('0x7')][_0xf7aa('0x8')]({'port':0x232a});config[_0xf7aa('0x9')]=_['defaults'](config['redis'],{'host':_0xf7aa('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xf7aa('0xb'))['register'](socket);function respondWithRpcPromise(_0x1c558e,_0x4ed795,_0x35788f){return new BPromise(function(_0x5e1d53,_0x38c6fe){return client[_0xf7aa('0xc')](_0x1c558e,_0x35788f)[_0xf7aa('0xd')](function(_0x4f65fd){logger[_0xf7aa('0xe')](_0xf7aa('0xf'),_0x4ed795,_0xf7aa('0x10'));logger[_0xf7aa('0x11')](_0xf7aa('0x12'),_0x4ed795,_0xf7aa('0x10'),JSON[_0xf7aa('0x13')](_0x4f65fd));if(_0x4f65fd[_0xf7aa('0x14')]){if(_0x4f65fd[_0xf7aa('0x14')][_0xf7aa('0x15')]===0x1f4){logger[_0xf7aa('0x14')](_0xf7aa('0xf'),_0x4ed795,_0x4f65fd[_0xf7aa('0x14')]['message']);return _0x38c6fe(_0x4f65fd[_0xf7aa('0x14')][_0xf7aa('0x16')]);}logger[_0xf7aa('0x14')](_0xf7aa('0xf'),_0x4ed795,_0x4f65fd[_0xf7aa('0x14')][_0xf7aa('0x16')]);return _0x5e1d53(_0x4f65fd['error'][_0xf7aa('0x16')]);}else{logger[_0xf7aa('0xe')](_0xf7aa('0xf'),_0x4ed795,'request\x20sent');_0x5e1d53(_0x4f65fd['result'][_0xf7aa('0x16')]);}})[_0xf7aa('0x17')](function(_0x1552c6){logger[_0xf7aa('0x14')]('WhatsappQueue,\x20%s,\x20%s',_0x4ed795,_0x1552c6);_0x38c6fe(_0x1552c6);});});}exports[_0xf7aa('0x18')]=function(_0x1af791){var _0x375c84=this;return new Promise(function(_0x2d5275,_0x1fe3d3){return db[_0xf7aa('0x19')]['findAll']({'raw':_0x1af791[_0xf7aa('0x1a')]?_0x1af791['options'][_0xf7aa('0x1b')]===undefined?!![]:![]:!![],'where':_0x1af791['options']?_0x1af791[_0xf7aa('0x1a')][_0xf7aa('0x1c')]||null:null,'attributes':_0x1af791['options']?_0x1af791[_0xf7aa('0x1a')]['attributes']||null:null,'limit':_0x1af791[_0xf7aa('0x1a')]?_0x1af791[_0xf7aa('0x1a')][_0xf7aa('0x1d')]||null:null,'include':_0x1af791[_0xf7aa('0x1a')]?_0x1af791['options']['include']?_[_0xf7aa('0x1e')](_0x1af791[_0xf7aa('0x1a')][_0xf7aa('0x1f')],function(_0x4654e8){return{'model':db[_0x4654e8[_0xf7aa('0x20')]],'as':_0x4654e8['as'],'attributes':_0x4654e8['attributes'],'include':_0x4654e8[_0xf7aa('0x1f')]?_[_0xf7aa('0x1e')](_0x4654e8['include'],function(_0xbc04b2){return{'model':db[_0xbc04b2['model']],'as':_0xbc04b2['as'],'attributes':_0xbc04b2['attributes'],'include':_0xbc04b2[_0xf7aa('0x1f')]?_[_0xf7aa('0x1e')](_0xbc04b2[_0xf7aa('0x1f')],function(_0x5cc346){return{'model':db[_0x5cc346[_0xf7aa('0x20')]],'as':_0x5cc346['as'],'attributes':_0x5cc346[_0xf7aa('0x21')]};}):[]};}):[]};}):[]:[]})[_0xf7aa('0xd')](function(_0x48216e){logger[_0xf7aa('0xe')](_0xf7aa('0x18'),_0x1af791);logger[_0xf7aa('0x11')](_0xf7aa('0x18'),_0x1af791,JSON[_0xf7aa('0x13')](_0x48216e));_0x2d5275(_0x48216e);})[_0xf7aa('0x17')](function(_0x5f1bb2){logger['error']('GetWhatsappQueue',_0x5f1bb2[_0xf7aa('0x16')],_0x1af791);_0x1fe3d3(_0x375c84['error'](0x1f4,_0x5f1bb2[_0xf7aa('0x16')]));});});};exports[_0xf7aa('0x22')]=function(_0x1fee2b){var _0x4ebbf1=this;return new Promise(function(_0x5195ec,_0x4c76fd){return db[_0xf7aa('0x19')][_0xf7aa('0x23')]({'raw':_0x1fee2b[_0xf7aa('0x1a')]?_0x1fee2b[_0xf7aa('0x1a')][_0xf7aa('0x1b')]===undefined?!![]:![]:!![],'where':_0x1fee2b[_0xf7aa('0x1a')]?_0x1fee2b[_0xf7aa('0x1a')]['where']||null:null,'attributes':_0x1fee2b[_0xf7aa('0x1a')]?_0x1fee2b[_0xf7aa('0x1a')][_0xf7aa('0x21')]||null:null,'include':_0x1fee2b[_0xf7aa('0x1a')]?_0x1fee2b[_0xf7aa('0x1a')][_0xf7aa('0x1f')]?_[_0xf7aa('0x1e')](_0x1fee2b[_0xf7aa('0x1a')][_0xf7aa('0x1f')],function(_0x169794){return{'model':db[_0x169794[_0xf7aa('0x20')]],'as':_0x169794['as'],'attributes':_0x169794[_0xf7aa('0x21')],'include':_0x169794['include']?_[_0xf7aa('0x1e')](_0x169794[_0xf7aa('0x1f')],function(_0x251c4b){return{'model':db[_0x251c4b[_0xf7aa('0x20')]],'as':_0x251c4b['as'],'attributes':_0x251c4b['attributes'],'include':_0x251c4b[_0xf7aa('0x1f')]?_[_0xf7aa('0x1e')](_0x251c4b['include'],function(_0x550199){return{'model':db[_0x550199['model']],'as':_0x550199['as'],'attributes':_0x550199['attributes']};}):[]};}):[]};}):[]:[]})[_0xf7aa('0xd')](function(_0x25c340){logger[_0xf7aa('0xe')](_0xf7aa('0x22'),_0x1fee2b);logger[_0xf7aa('0x11')](_0xf7aa('0x22'),_0x1fee2b,JSON['stringify'](_0x25c340));_0x5195ec(_0x25c340);})[_0xf7aa('0x17')](function(_0x2e3d90){logger[_0xf7aa('0x14')](_0xf7aa('0x22'),_0x2e3d90[_0xf7aa('0x16')],_0x1fee2b);_0x4c76fd(_0x4ebbf1[_0xf7aa('0x14')](0x1f4,_0x2e3d90['message']));});});};
\ No newline at end of file
index fa63a78..8ffdf30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82ce=['whatsappQueue:','save','remove','update','removeListener','length'];(function(_0x127916,_0x3b7a25){var _0x3c8d08=function(_0x386e92){while(--_0x386e92){_0x127916['push'](_0x127916['shift']());}};_0x3c8d08(++_0x3b7a25);}(_0x82ce,0x6d));var _0xe82c=function(_0x19217d,_0x542f91){_0x19217d=_0x19217d-0x0;var _0x25a7b7=_0x82ce[_0x19217d];return _0x25a7b7;};'use strict';var WhatsappQueueEvents=require('./whatsappQueue.events');var events=[_0xe82c('0x0'),_0xe82c('0x1'),_0xe82c('0x2')];function createListener(_0x5f18cf,_0x3b47cd){return function(_0x43c399){_0x3b47cd['emit'](_0x5f18cf,_0x43c399);};}function removeListener(_0x4b3058,_0x5b3233){return function(){WhatsappQueueEvents[_0xe82c('0x3')](_0x4b3058,_0x5b3233);};}exports['register']=function(_0x2b08c8){for(var _0x1cb0e8=0x0,_0x4ab243=events[_0xe82c('0x4')];_0x1cb0e8<_0x4ab243;_0x1cb0e8++){var _0x44b677=events[_0x1cb0e8];var _0x12a15c=createListener(_0xe82c('0x5')+_0x44b677,_0x2b08c8);WhatsappQueueEvents['on'](_0x44b677,_0x12a15c);}};
\ No newline at end of file
+var _0xfdd9=['register','length','whatsappQueue:','save','remove','emit'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0xfdd9,0x1bf));var _0x9fdd=function(_0x5f1302,_0x4dcb01){_0x5f1302=_0x5f1302-0x0;var _0x24b78d=_0xfdd9[_0x5f1302];return _0x24b78d;};'use strict';var WhatsappQueueEvents=require('./whatsappQueue.events');var events=[_0x9fdd('0x0'),_0x9fdd('0x1'),'update'];function createListener(_0x385fcb,_0x355e1e){return function(_0x4aa238){_0x355e1e[_0x9fdd('0x2')](_0x385fcb,_0x4aa238);};}function removeListener(_0x4f4f01,_0x1bfa4b){return function(){WhatsappQueueEvents['removeListener'](_0x4f4f01,_0x1bfa4b);};}exports[_0x9fdd('0x3')]=function(_0x1e9c76){for(var _0x17614e=0x0,_0x18d63c=events[_0x9fdd('0x4')];_0x17614e<_0x18d63c;_0x17614e++){var _0x3a9f76=events[_0x17614e];var _0x54d90b=createListener(_0x9fdd('0x5')+_0x3a9f76,_0x1e9c76);WhatsappQueueEvents['on'](_0x3a9f76,_0x54d90b);}};
\ No newline at end of file
index b60df1a..b50b88b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94e2=['show','post','create','put','delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','/:id'];(function(_0x5c58fa,_0x335e48){var _0x3b0234=function(_0x2d3e41){while(--_0x2d3e41){_0x5c58fa['push'](_0x5c58fa['shift']());}};_0x3b0234(++_0x335e48);}(_0x94e2,0x11f));var _0x294e=function(_0x26d9b3,_0x591f4e){_0x26d9b3=_0x26d9b3-0x0;var _0x15c226=_0x94e2[_0x26d9b3];return _0x15c226;};'use strict';var multer=require('multer');var util=require(_0x294e('0x0'));var path=require(_0x294e('0x1'));var timeout=require(_0x294e('0x2'));var express=require('express');var router=express[_0x294e('0x3')]();var fs_extra=require(_0x294e('0x4'));var auth=require(_0x294e('0x5'));var interaction=require(_0x294e('0x6'));var config=require(_0x294e('0x7'));var controller=require('./whatsappQueueReport.controller');router[_0x294e('0x8')]('/',auth[_0x294e('0x9')](),controller[_0x294e('0xa')]);router[_0x294e('0x8')]('/describe',auth[_0x294e('0x9')](),controller[_0x294e('0xb')]);router[_0x294e('0x8')](_0x294e('0xc'),auth[_0x294e('0x9')](),controller[_0x294e('0xd')]);router[_0x294e('0xe')]('/',auth['isAuthenticated'](),controller[_0x294e('0xf')]);router[_0x294e('0x10')](_0x294e('0xc'),auth[_0x294e('0x9')](),controller['update']);router[_0x294e('0x11')](_0x294e('0xc'),auth['isAuthenticated'](),controller[_0x294e('0x12')]);module[_0x294e('0x13')]=router;
\ No newline at end of file
+var _0xe26b=['path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappQueueReport.controller','get','isAuthenticated','index','describe','/:id','show','create','put','update','delete','exports','multer'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0xe26b,0x9f));var _0xbe26=function(_0x55892c,_0xce573c){_0x55892c=_0x55892c-0x0;var _0x532bad=_0xe26b[_0x55892c];return _0x532bad;};'use strict';var multer=require(_0xbe26('0x0'));var util=require('util');var path=require(_0xbe26('0x1'));var timeout=require('connect-timeout');var express=require(_0xbe26('0x2'));var router=express[_0xbe26('0x3')]();var fs_extra=require(_0xbe26('0x4'));var auth=require(_0xbe26('0x5'));var interaction=require(_0xbe26('0x6'));var config=require(_0xbe26('0x7'));var controller=require(_0xbe26('0x8'));router[_0xbe26('0x9')]('/',auth[_0xbe26('0xa')](),controller[_0xbe26('0xb')]);router[_0xbe26('0x9')]('/describe',auth[_0xbe26('0xa')](),controller[_0xbe26('0xc')]);router['get'](_0xbe26('0xd'),auth['isAuthenticated'](),controller[_0xbe26('0xe')]);router['post']('/',auth[_0xbe26('0xa')](),controller[_0xbe26('0xf')]);router[_0xbe26('0x10')]('/:id',auth['isAuthenticated'](),controller[_0xbe26('0x11')]);router[_0xbe26('0x12')](_0xbe26('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0xbe26('0x13')]=router;
\ No newline at end of file
index 5b01a19..b27b355 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x258bc6,_0x583fb3){var _0x284ece=function(_0x34ecbf){while(--_0x34ecbf){_0x258bc6['push'](_0x258bc6['shift']());}};_0x284ece(++_0x583fb3);}(_0x7a54,0x106));var _0x47a5=function(_0x4feea4,_0x1affd9){_0x4feea4=_0x4feea4-0x0;var _0x22487d=_0x7a54[_0x4feea4];return _0x22487d;};'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(_0x45acaa,_0x667cd5){var _0x3f6d9d=function(_0x583adc){while(--_0x583adc){_0x45acaa['push'](_0x45acaa['shift']());}};_0x3f6d9d(++_0x667cd5);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'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 b0eef04..3067239 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2547=['order','where','pick','filter','merge','VIRTUAL','options','WhatsappQueueReport','includeAll','include','rows','catch','params','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','index','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2547,0x1cd));var _0x7254=function(_0x59b891,_0x69bf27){_0x59b891=_0x59b891-0x0;var _0x458a15=_0x2547[_0x59b891];return _0x458a15;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7254('0x0'));var zipdir=require(_0x7254('0x1'));var jsonpatch=require(_0x7254('0x2'));var rp=require(_0x7254('0x3'));var moment=require(_0x7254('0x4'));var BPromise=require(_0x7254('0x5'));var Mustache=require(_0x7254('0x6'));var util=require(_0x7254('0x7'));var path=require('path');var sox=require(_0x7254('0x8'));var csv=require(_0x7254('0x9'));var ejs=require(_0x7254('0xa'));var fs=require('fs');var fs_extra=require(_0x7254('0xb'));var _=require('lodash');var squel=require(_0x7254('0xc'));var crypto=require(_0x7254('0xd'));var jsforce=require(_0x7254('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x7254('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x7254('0xf'));var qs=require(_0x7254('0x10'));var as=require(_0x7254('0x11'));var hardwareService=require(_0x7254('0x12'));var logger=require(_0x7254('0x13'))(_0x7254('0x14'));var utils=require('../../config/utils');var config=require(_0x7254('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x7254('0x16'))['db'];function respondWithStatusCode(_0x53fc4f,_0x16c08e){_0x16c08e=_0x16c08e||0xcc;return function(_0x2bfff8){if(_0x2bfff8){return _0x53fc4f[_0x7254('0x17')](_0x16c08e);}return _0x53fc4f[_0x7254('0x18')](_0x16c08e)[_0x7254('0x19')]();};}function respondWithResult(_0x395a8a,_0x124192){_0x124192=_0x124192||0xc8;return function(_0x21cecc){if(_0x21cecc){return _0x395a8a[_0x7254('0x18')](_0x124192)[_0x7254('0x1a')](_0x21cecc);}};}function respondWithFilteredResult(_0x38a99c,_0x1ee5cb){return function(_0x163c8c){if(_0x163c8c){var _0x535065=typeof _0x1ee5cb[_0x7254('0x1b')]===_0x7254('0x1c')&&typeof _0x1ee5cb[_0x7254('0x1d')]===_0x7254('0x1c');var _0x3b5f06=_0x163c8c[_0x7254('0x1e')];var _0x2737e0=_0x535065?0x0:_0x1ee5cb['offset'];var _0x1f48f6=_0x535065?_0x163c8c[_0x7254('0x1e')]:_0x1ee5cb[_0x7254('0x1b')]+_0x1ee5cb[_0x7254('0x1d')];var _0x2a1ddc;if(_0x1f48f6>=_0x3b5f06){_0x1f48f6=_0x3b5f06;_0x2a1ddc=0xc8;}else{_0x2a1ddc=0xce;}_0x38a99c[_0x7254('0x18')](_0x2a1ddc);return _0x38a99c[_0x7254('0x1f')](_0x7254('0x20'),_0x2737e0+'-'+_0x1f48f6+'/'+_0x3b5f06)[_0x7254('0x1a')](_0x163c8c);}return null;};}function patchUpdates(_0x3b6cb6){return function(_0x2594b8){try{jsonpatch[_0x7254('0x21')](_0x2594b8,_0x3b6cb6,!![]);}catch(_0xc617b6){return BPromise[_0x7254('0x22')](_0xc617b6);}return _0x2594b8[_0x7254('0x23')]();};}function saveUpdates(_0x95ceaa,_0x2bb2fe){return function(_0x46c0a2){if(_0x46c0a2){return _0x46c0a2[_0x7254('0x24')](_0x95ceaa)[_0x7254('0x25')](function(_0x1be69b){return _0x1be69b;});}return null;};}function removeEntity(_0x50c34b,_0x493bfd){return function(_0x136ea3){if(_0x136ea3){return _0x136ea3[_0x7254('0x26')]()[_0x7254('0x25')](function(){_0x50c34b[_0x7254('0x18')](0xcc)[_0x7254('0x19')]();});}};}function handleEntityNotFound(_0x36b5d5,_0x133aee){return function(_0x5d6df5){if(!_0x5d6df5){_0x36b5d5[_0x7254('0x17')](0x194);}return _0x5d6df5;};}function handleError(_0x21a579,_0x2b4f46){_0x2b4f46=_0x2b4f46||0x1f4;return function(_0x494cdb){logger[_0x7254('0x27')](_0x494cdb['stack']);if(_0x494cdb[_0x7254('0x28')]){delete _0x494cdb[_0x7254('0x28')];}_0x21a579['status'](_0x2b4f46)[_0x7254('0x29')](_0x494cdb);};}exports[_0x7254('0x2a')]=function(_0x4f684c,_0x14cbea){var _0x6c4927={},_0x37cb5c={},_0xb9198b={'count':0x0,'rows':[]};var _0x43bf02=_[_0x7254('0x2b')](db['WhatsappQueueReport'][_0x7254('0x2c')],function(_0x2dba3f){return{'name':_0x2dba3f['fieldName'],'type':_0x2dba3f[_0x7254('0x2d')][_0x7254('0x2e')]};});_0x37cb5c[_0x7254('0x2f')]=_['map'](_0x43bf02,_0x7254('0x28'));_0x37cb5c[_0x7254('0x30')]=_[_0x7254('0x31')](_0x4f684c[_0x7254('0x30')]);_0x37cb5c[_0x7254('0x32')]=_[_0x7254('0x33')](_0x37cb5c[_0x7254('0x2f')],_0x37cb5c['query']);_0x6c4927[_0x7254('0x34')]=_['intersection'](_0x37cb5c['model'],qs[_0x7254('0x35')](_0x4f684c[_0x7254('0x30')][_0x7254('0x35')]));_0x6c4927[_0x7254('0x34')]=_0x6c4927[_0x7254('0x34')][_0x7254('0x36')]?_0x6c4927[_0x7254('0x34')]:_0x37cb5c[_0x7254('0x2f')];if(!_0x4f684c[_0x7254('0x30')][_0x7254('0x37')](_0x7254('0x38'))){_0x6c4927[_0x7254('0x1d')]=qs[_0x7254('0x1d')](_0x4f684c[_0x7254('0x30')]['limit']);_0x6c4927[_0x7254('0x1b')]=qs[_0x7254('0x1b')](_0x4f684c[_0x7254('0x30')][_0x7254('0x1b')]);}_0x6c4927[_0x7254('0x39')]=qs['sort'](_0x4f684c[_0x7254('0x30')]['sort']);_0x6c4927[_0x7254('0x3a')]=qs[_0x7254('0x32')](_[_0x7254('0x3b')](_0x4f684c[_0x7254('0x30')],_0x37cb5c[_0x7254('0x32')]),_0x43bf02);if(_0x4f684c['query'][_0x7254('0x3c')]){_0x6c4927['where']=_[_0x7254('0x3d')](_0x6c4927[_0x7254('0x3a')],{'$or':_['map'](_0x43bf02,function(_0x1485a0){if(_0x1485a0[_0x7254('0x2d')]!==_0x7254('0x3e')){var _0x9273ee={};_0x9273ee[_0x1485a0[_0x7254('0x28')]]={'$like':'%'+_0x4f684c[_0x7254('0x30')]['filter']+'%'};return _0x9273ee;}})});}_0x6c4927=_[_0x7254('0x3d')]({},_0x6c4927,_0x4f684c[_0x7254('0x3f')]);var _0x105b8c={'where':_0x6c4927['where']};return db[_0x7254('0x40')][_0x7254('0x1e')](_0x105b8c)[_0x7254('0x25')](function(_0x4824d5){_0xb9198b[_0x7254('0x1e')]=_0x4824d5;if(_0x4f684c[_0x7254('0x30')][_0x7254('0x41')]){_0x6c4927[_0x7254('0x42')]=[{'all':!![]}];}return db[_0x7254('0x40')]['findAll'](_0x6c4927);})['then'](function(_0x25004f){_0xb9198b[_0x7254('0x43')]=_0x25004f;return _0xb9198b;})[_0x7254('0x25')](respondWithFilteredResult(_0x14cbea,_0x6c4927))[_0x7254('0x44')](handleError(_0x14cbea,null));};exports['show']=function(_0x53a7a7,_0x29821a){var _0x565cd8={'raw':!![],'where':{'id':_0x53a7a7[_0x7254('0x45')]['id']}},_0x2ae22e={};_0x2ae22e[_0x7254('0x2f')]=_[_0x7254('0x31')](db['WhatsappQueueReport']['rawAttributes']);_0x2ae22e[_0x7254('0x30')]=_[_0x7254('0x31')](_0x53a7a7[_0x7254('0x30')]);_0x2ae22e[_0x7254('0x32')]=_[_0x7254('0x33')](_0x2ae22e['model'],_0x2ae22e['query']);_0x565cd8[_0x7254('0x34')]=_[_0x7254('0x33')](_0x2ae22e[_0x7254('0x2f')],qs['fields'](_0x53a7a7[_0x7254('0x30')][_0x7254('0x35')]));_0x565cd8['attributes']=_0x565cd8[_0x7254('0x34')][_0x7254('0x36')]?_0x565cd8[_0x7254('0x34')]:_0x2ae22e[_0x7254('0x2f')];if(_0x53a7a7['query'][_0x7254('0x41')]){_0x565cd8[_0x7254('0x42')]=[{'all':!![]}];}_0x565cd8=_['merge']({},_0x565cd8,_0x53a7a7[_0x7254('0x3f')]);return db[_0x7254('0x40')][_0x7254('0x46')](_0x565cd8)['then'](handleEntityNotFound(_0x29821a,null))[_0x7254('0x25')](respondWithResult(_0x29821a,null))[_0x7254('0x44')](handleError(_0x29821a,null));};exports['create']=function(_0x5f101e,_0x10b32f){return db['WhatsappQueueReport'][_0x7254('0x47')](_0x5f101e[_0x7254('0x48')],{})['then'](respondWithResult(_0x10b32f,0xc9))['catch'](handleError(_0x10b32f,null));};exports[_0x7254('0x24')]=function(_0xc40bc5,_0x38bcd5){if(_0xc40bc5[_0x7254('0x48')]['id']){delete _0xc40bc5[_0x7254('0x48')]['id'];}return db[_0x7254('0x40')]['find']({'where':{'id':_0xc40bc5[_0x7254('0x45')]['id']}})['then'](handleEntityNotFound(_0x38bcd5,null))[_0x7254('0x25')](saveUpdates(_0xc40bc5[_0x7254('0x48')],null))[_0x7254('0x25')](respondWithResult(_0x38bcd5,null))['catch'](handleError(_0x38bcd5,null));};exports[_0x7254('0x26')]=function(_0x1c1a0e,_0x252758){return db['WhatsappQueueReport'][_0x7254('0x46')]({'where':{'id':_0x1c1a0e[_0x7254('0x45')]['id']}})[_0x7254('0x25')](handleEntityNotFound(_0x252758,null))[_0x7254('0x25')](removeEntity(_0x252758,null))[_0x7254('0x44')](handleError(_0x252758,null));};exports['describe']=function(_0x5e66c6,_0x24c532){return db[_0x7254('0x40')][_0x7254('0x49')]()[_0x7254('0x25')](respondWithResult(_0x24c532,null))[_0x7254('0x44')](handleError(_0x24c532,null));};
\ No newline at end of file
+var _0x351d=['includeAll','include','catch','show','params','rawAttributes','create','body','find','describe','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','util','path','to-csv','ejs','fs-extra','squel','crypto','desk.js','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','sendStatus','end','status','json','limit','count','offset','apply','reject','save','update','destroy','then','name','send','map','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','WhatsappQueueReport'];(function(_0x208c5e,_0x38594e){var _0x3b97e6=function(_0x2dbe18){while(--_0x2dbe18){_0x208c5e['push'](_0x208c5e['shift']());}};_0x3b97e6(++_0x38594e);}(_0x351d,0x90));var _0xd351=function(_0x4e5903,_0x31aef5){_0x4e5903=_0x4e5903-0x0;var _0x100dfe=_0x351d[_0x4e5903];return _0x100dfe;};'use strict';var emlformat=require(_0xd351('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd351('0x1'));var jsonpatch=require(_0xd351('0x2'));var rp=require(_0xd351('0x3'));var moment=require('moment');var BPromise=require(_0xd351('0x4'));var Mustache=require('mustache');var util=require(_0xd351('0x5'));var path=require(_0xd351('0x6'));var sox=require('sox');var csv=require(_0xd351('0x7'));var ejs=require(_0xd351('0x8'));var fs=require('fs');var fs_extra=require(_0xd351('0x9'));var _=require('lodash');var squel=require(_0xd351('0xa'));var crypto=require(_0xd351('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xd351('0xc'));var toCsv=require(_0xd351('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xd351('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xd351('0xe'));var as=require(_0xd351('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd351('0x10'))(_0xd351('0x11'));var utils=require('../../config/utils');var config=require(_0xd351('0x12'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3eb40c,_0x15549a){_0x15549a=_0x15549a||0xcc;return function(_0x23445f){if(_0x23445f){return _0x3eb40c[_0xd351('0x13')](_0x15549a);}return _0x3eb40c['status'](_0x15549a)[_0xd351('0x14')]();};}function respondWithResult(_0x316cf6,_0x597d7c){_0x597d7c=_0x597d7c||0xc8;return function(_0xc5a145){if(_0xc5a145){return _0x316cf6[_0xd351('0x15')](_0x597d7c)[_0xd351('0x16')](_0xc5a145);}};}function respondWithFilteredResult(_0xf1c285,_0x3867fb){return function(_0x4d238c){if(_0x4d238c){var _0x9f790f=typeof _0x3867fb['offset']==='undefined'&&typeof _0x3867fb[_0xd351('0x17')]==='undefined';var _0x21e591=_0x4d238c[_0xd351('0x18')];var _0x4e0164=_0x9f790f?0x0:_0x3867fb['offset'];var _0x1e1a3c=_0x9f790f?_0x4d238c[_0xd351('0x18')]:_0x3867fb[_0xd351('0x19')]+_0x3867fb[_0xd351('0x17')];var _0x51f265;if(_0x1e1a3c>=_0x21e591){_0x1e1a3c=_0x21e591;_0x51f265=0xc8;}else{_0x51f265=0xce;}_0xf1c285[_0xd351('0x15')](_0x51f265);return _0xf1c285['set']('Content-Range',_0x4e0164+'-'+_0x1e1a3c+'/'+_0x21e591)[_0xd351('0x16')](_0x4d238c);}return null;};}function patchUpdates(_0x4a427b){return function(_0x33b1e5){try{jsonpatch[_0xd351('0x1a')](_0x33b1e5,_0x4a427b,!![]);}catch(_0x3634c9){return BPromise[_0xd351('0x1b')](_0x3634c9);}return _0x33b1e5[_0xd351('0x1c')]();};}function saveUpdates(_0x53e729,_0x18625b){return function(_0xbbc58){if(_0xbbc58){return _0xbbc58[_0xd351('0x1d')](_0x53e729)['then'](function(_0x1ce7f7){return _0x1ce7f7;});}return null;};}function removeEntity(_0x2d9aa0,_0x365bbc){return function(_0x59fb6d){if(_0x59fb6d){return _0x59fb6d[_0xd351('0x1e')]()[_0xd351('0x1f')](function(){_0x2d9aa0[_0xd351('0x15')](0xcc)[_0xd351('0x14')]();});}};}function handleEntityNotFound(_0x489c9a,_0x40f7f3){return function(_0x483c92){if(!_0x483c92){_0x489c9a[_0xd351('0x13')](0x194);}return _0x483c92;};}function handleError(_0x8ad0a6,_0x54f471){_0x54f471=_0x54f471||0x1f4;return function(_0x2648d0){logger['error'](_0x2648d0['stack']);if(_0x2648d0[_0xd351('0x20')]){delete _0x2648d0['name'];}_0x8ad0a6['status'](_0x54f471)[_0xd351('0x21')](_0x2648d0);};}exports['index']=function(_0x38471c,_0x2ddae8){var _0x407b50={},_0x4d3f48={},_0x71ce9c={'count':0x0,'rows':[]};var _0x4aa902=_[_0xd351('0x22')](db['WhatsappQueueReport']['rawAttributes'],function(_0xeb4da9){return{'name':_0xeb4da9[_0xd351('0x23')],'type':_0xeb4da9[_0xd351('0x24')][_0xd351('0x25')]};});_0x4d3f48['model']=_[_0xd351('0x22')](_0x4aa902,_0xd351('0x20'));_0x4d3f48[_0xd351('0x26')]=_[_0xd351('0x27')](_0x38471c[_0xd351('0x26')]);_0x4d3f48[_0xd351('0x28')]=_[_0xd351('0x29')](_0x4d3f48[_0xd351('0x2a')],_0x4d3f48[_0xd351('0x26')]);_0x407b50['attributes']=_[_0xd351('0x29')](_0x4d3f48[_0xd351('0x2a')],qs[_0xd351('0x2b')](_0x38471c[_0xd351('0x26')]['fields']));_0x407b50[_0xd351('0x2c')]=_0x407b50[_0xd351('0x2c')][_0xd351('0x2d')]?_0x407b50[_0xd351('0x2c')]:_0x4d3f48[_0xd351('0x2a')];if(!_0x38471c[_0xd351('0x26')][_0xd351('0x2e')](_0xd351('0x2f'))){_0x407b50[_0xd351('0x17')]=qs['limit'](_0x38471c['query'][_0xd351('0x17')]);_0x407b50[_0xd351('0x19')]=qs[_0xd351('0x19')](_0x38471c[_0xd351('0x26')][_0xd351('0x19')]);}_0x407b50[_0xd351('0x30')]=qs['sort'](_0x38471c['query'][_0xd351('0x31')]);_0x407b50['where']=qs[_0xd351('0x28')](_[_0xd351('0x32')](_0x38471c[_0xd351('0x26')],_0x4d3f48[_0xd351('0x28')]),_0x4aa902);if(_0x38471c[_0xd351('0x26')][_0xd351('0x33')]){_0x407b50[_0xd351('0x34')]=_[_0xd351('0x35')](_0x407b50[_0xd351('0x34')],{'$or':_[_0xd351('0x22')](_0x4aa902,function(_0x2b7170){if(_0x2b7170['type']!==_0xd351('0x36')){var _0x5f0b1c={};_0x5f0b1c[_0x2b7170[_0xd351('0x20')]]={'$like':'%'+_0x38471c[_0xd351('0x26')][_0xd351('0x33')]+'%'};return _0x5f0b1c;}})});}_0x407b50=_[_0xd351('0x35')]({},_0x407b50,_0x38471c[_0xd351('0x37')]);var _0x3db72a={'where':_0x407b50['where']};return db[_0xd351('0x38')][_0xd351('0x18')](_0x3db72a)['then'](function(_0x2e1219){_0x71ce9c[_0xd351('0x18')]=_0x2e1219;if(_0x38471c[_0xd351('0x26')][_0xd351('0x39')]){_0x407b50[_0xd351('0x3a')]=[{'all':!![]}];}return db['WhatsappQueueReport']['findAll'](_0x407b50);})[_0xd351('0x1f')](function(_0x3935aa){_0x71ce9c['rows']=_0x3935aa;return _0x71ce9c;})['then'](respondWithFilteredResult(_0x2ddae8,_0x407b50))[_0xd351('0x3b')](handleError(_0x2ddae8,null));};exports[_0xd351('0x3c')]=function(_0x4ff06a,_0x570d57){var _0x46af23={'raw':!![],'where':{'id':_0x4ff06a[_0xd351('0x3d')]['id']}},_0x18f9d1={};_0x18f9d1[_0xd351('0x2a')]=_[_0xd351('0x27')](db[_0xd351('0x38')][_0xd351('0x3e')]);_0x18f9d1[_0xd351('0x26')]=_[_0xd351('0x27')](_0x4ff06a['query']);_0x18f9d1['filters']=_[_0xd351('0x29')](_0x18f9d1[_0xd351('0x2a')],_0x18f9d1[_0xd351('0x26')]);_0x46af23[_0xd351('0x2c')]=_[_0xd351('0x29')](_0x18f9d1[_0xd351('0x2a')],qs[_0xd351('0x2b')](_0x4ff06a[_0xd351('0x26')][_0xd351('0x2b')]));_0x46af23[_0xd351('0x2c')]=_0x46af23[_0xd351('0x2c')][_0xd351('0x2d')]?_0x46af23[_0xd351('0x2c')]:_0x18f9d1[_0xd351('0x2a')];if(_0x4ff06a[_0xd351('0x26')][_0xd351('0x39')]){_0x46af23['include']=[{'all':!![]}];}_0x46af23=_[_0xd351('0x35')]({},_0x46af23,_0x4ff06a[_0xd351('0x37')]);return db[_0xd351('0x38')]['find'](_0x46af23)[_0xd351('0x1f')](handleEntityNotFound(_0x570d57,null))[_0xd351('0x1f')](respondWithResult(_0x570d57,null))[_0xd351('0x3b')](handleError(_0x570d57,null));};exports[_0xd351('0x3f')]=function(_0xbb92d4,_0x5bc86a){return db[_0xd351('0x38')]['create'](_0xbb92d4[_0xd351('0x40')],{})[_0xd351('0x1f')](respondWithResult(_0x5bc86a,0xc9))['catch'](handleError(_0x5bc86a,null));};exports['update']=function(_0x1bd727,_0x444206){if(_0x1bd727[_0xd351('0x40')]['id']){delete _0x1bd727['body']['id'];}return db[_0xd351('0x38')][_0xd351('0x41')]({'where':{'id':_0x1bd727['params']['id']}})[_0xd351('0x1f')](handleEntityNotFound(_0x444206,null))['then'](saveUpdates(_0x1bd727[_0xd351('0x40')],null))[_0xd351('0x1f')](respondWithResult(_0x444206,null))['catch'](handleError(_0x444206,null));};exports['destroy']=function(_0x25ea1e,_0x58ce5a){return db[_0xd351('0x38')][_0xd351('0x41')]({'where':{'id':_0x25ea1e[_0xd351('0x3d')]['id']}})['then'](handleEntityNotFound(_0x58ce5a,null))[_0xd351('0x1f')](removeEntity(_0x58ce5a,null))['catch'](handleError(_0x58ce5a,null));};exports['describe']=function(_0x48c287,_0x7e4bad){return db[_0xd351('0x38')][_0xd351('0x42')]()['then'](respondWithResult(_0x7e4bad,null))['catch'](handleError(_0x7e4bad,null));};
\ No newline at end of file
index 2a9f89b..878bc29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd581=['path','../../config/environment','./whatsappQueueReport.attributes','exports','define','WhatsappQueueReport','report_whatsapp_queue','uniqueid','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x26c762,_0x3488fb){var _0xb37f8c=function(_0x47009d){while(--_0x47009d){_0x26c762['push'](_0x26c762['shift']());}};_0xb37f8c(++_0x3488fb);}(_0xd581,0x1ac));var _0x1d58=function(_0x1a72f3,_0x217011){_0x1a72f3=_0x1a72f3-0x0;var _0x57ef47=_0xd581[_0x1a72f3];return _0x57ef47;};'use strict';var _=require(_0x1d58('0x0'));var util=require(_0x1d58('0x1'));var logger=require(_0x1d58('0x2'))('api');var moment=require(_0x1d58('0x3'));var BPromise=require(_0x1d58('0x4'));var rp=require(_0x1d58('0x5'));var fs=require('fs');var path=require(_0x1d58('0x6'));var rimraf=require('rimraf');var config=require(_0x1d58('0x7'));var attributes=require(_0x1d58('0x8'));module[_0x1d58('0x9')]=function(_0x20c39a,_0x2d44c1){return _0x20c39a[_0x1d58('0xa')](_0x1d58('0xb'),attributes,{'tableName':_0x1d58('0xc'),'paranoid':![],'indexes':[{'name':_0x1d58('0xd'),'fields':[_0x1d58('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xdba1=['path','rimraf','../../config/environment','./whatsappQueueReport.attributes','exports','define','report_whatsapp_queue','uniqueid','lodash','util','../../config/logger','moment','request-promise'];(function(_0x2cde3d,_0x37644){var _0x2a7e9c=function(_0x845ecc){while(--_0x845ecc){_0x2cde3d['push'](_0x2cde3d['shift']());}};_0x2a7e9c(++_0x37644);}(_0xdba1,0x10c));var _0x1dba=function(_0x394075,_0x22c45e){_0x394075=_0x394075-0x0;var _0x5b9f10=_0xdba1[_0x394075];return _0x5b9f10;};'use strict';var _=require(_0x1dba('0x0'));var util=require(_0x1dba('0x1'));var logger=require(_0x1dba('0x2'))('api');var moment=require(_0x1dba('0x3'));var BPromise=require('bluebird');var rp=require(_0x1dba('0x4'));var fs=require('fs');var path=require(_0x1dba('0x5'));var rimraf=require(_0x1dba('0x6'));var config=require(_0x1dba('0x7'));var attributes=require(_0x1dba('0x8'));module[_0x1dba('0x9')]=function(_0x16ee64,_0x1acb1b){return _0x16ee64[_0x1dba('0xa')]('WhatsappQueueReport',attributes,{'tableName':_0x1dba('0xb'),'paranoid':![],'indexes':[{'name':_0x1dba('0xc'),'fields':[_0x1dba('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 0c029fa..9bb177a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5689=['raw','stringify','catch','UpdateWhatsappQueueReport','update','body','limit','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','http','request','then','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','result','CreateWhatsappQueueReport','WhatsappQueueReport','create','options'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x5689,0xe0));var _0x9568=function(_0xd5ea18,_0x44e0d8){_0xd5ea18=_0xd5ea18-0x0;var _0x447951=_0x5689[_0xd5ea18];return _0x447951;};'use strict';var _=require(_0x9568('0x0'));var util=require('util');var moment=require(_0x9568('0x1'));var BPromise=require(_0x9568('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9568('0x3'));var db=require(_0x9568('0x4'))['db'];var utils=require(_0x9568('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x9568('0x6'));var jayson=require(_0x9568('0x7'));var client=jayson['client'][_0x9568('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x7090cc,_0x17a226,_0xa28e67){return new BPromise(function(_0x1b9eb3,_0x52cce1){return client[_0x9568('0x9')](_0x7090cc,_0xa28e67)[_0x9568('0xa')](function(_0x1601b1){logger[_0x9568('0xb')](_0x9568('0xc'),_0x17a226,_0x9568('0xd'));logger[_0x9568('0xe')](_0x9568('0xf'),_0x17a226,'request\x20sent',JSON['stringify'](_0x1601b1));if(_0x1601b1['error']){if(_0x1601b1[_0x9568('0x10')][_0x9568('0x11')]===0x1f4){logger[_0x9568('0x10')]('WhatsappQueueReport,\x20%s,\x20%s',_0x17a226,_0x1601b1['error'][_0x9568('0x12')]);return _0x52cce1(_0x1601b1[_0x9568('0x10')]['message']);}logger['error'](_0x9568('0xc'),_0x17a226,_0x1601b1[_0x9568('0x10')][_0x9568('0x12')]);return _0x1b9eb3(_0x1601b1['error'][_0x9568('0x12')]);}else{logger[_0x9568('0xb')](_0x9568('0xc'),_0x17a226,_0x9568('0xd'));_0x1b9eb3(_0x1601b1[_0x9568('0x13')][_0x9568('0x12')]);}})['catch'](function(_0x4abe79){logger[_0x9568('0x10')](_0x9568('0xc'),_0x17a226,_0x4abe79);_0x52cce1(_0x4abe79);});});}exports[_0x9568('0x14')]=function(_0x337ec4){var _0x124a28=this;return new Promise(function(_0xa92bb,_0x474d69){return db[_0x9568('0x15')][_0x9568('0x16')](_0x337ec4['body'],{'raw':_0x337ec4['options']?_0x337ec4[_0x9568('0x17')][_0x9568('0x18')]===undefined?!![]:![]:!![]})[_0x9568('0xa')](function(_0x3b4d7b){logger[_0x9568('0xb')]('CreateWhatsappQueueReport',_0x337ec4);logger['debug']('CreateWhatsappQueueReport',_0x337ec4,JSON[_0x9568('0x19')](_0x3b4d7b));_0xa92bb(_0x3b4d7b);})[_0x9568('0x1a')](function(_0x17ac37){logger[_0x9568('0x10')](_0x9568('0x14'),_0x17ac37['message'],_0x337ec4);_0x474d69(_0x124a28['error'](0x1f4,_0x17ac37[_0x9568('0x12')]));});});};exports[_0x9568('0x1b')]=function(_0x4d5d2e){var _0x417367=this;return new Promise(function(_0xc14c2a,_0xcf1ac9){return db[_0x9568('0x15')][_0x9568('0x1c')](_0x4d5d2e[_0x9568('0x1d')],{'raw':_0x4d5d2e[_0x9568('0x17')]?_0x4d5d2e[_0x9568('0x17')][_0x9568('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4d5d2e[_0x9568('0x17')]?_0x4d5d2e['options']['where']||null:null,'attributes':_0x4d5d2e[_0x9568('0x17')]?_0x4d5d2e['options']['attributes']||null:null,'limit':_0x4d5d2e[_0x9568('0x17')]?_0x4d5d2e[_0x9568('0x17')][_0x9568('0x1e')]||null:null})[_0x9568('0xa')](function(_0x573984){logger[_0x9568('0xb')]('UpdateWhatsappQueueReport',_0x4d5d2e);logger[_0x9568('0xe')](_0x9568('0x1b'),_0x4d5d2e,JSON[_0x9568('0x19')](_0x573984));_0xc14c2a(_0x573984);})[_0x9568('0x1a')](function(_0x5789a0){logger[_0x9568('0x10')]('UpdateWhatsappQueueReport',_0x5789a0['message'],_0x4d5d2e);_0xcf1ac9(_0x417367[_0x9568('0x10')](0x1f4,_0x5789a0[_0x9568('0x12')]));});});};
\ No newline at end of file
+var _0x2b2a=['then','CreateWhatsappQueueReport','catch','where','attributes','limit','UpdateWhatsappQueueReport','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/environment','jayson/promise','client','http','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','WhatsappQueueReport','create','body','options','raw'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2b2a,0x1e7));var _0xa2b2=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0x2b2a[_0x47a7d0];return _0xb9bd08;};'use strict';var _=require(_0xa2b2('0x0'));var util=require(_0xa2b2('0x1'));var moment=require(_0xa2b2('0x2'));var BPromise=require(_0xa2b2('0x3'));var rs=require(_0xa2b2('0x4'));var fs=require('fs');var Redis=require(_0xa2b2('0x5'));var db=require(_0xa2b2('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xa2b2('0x7'));var jayson=require(_0xa2b2('0x8'));var client=jayson[_0xa2b2('0x9')][_0xa2b2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5bf07a,_0x5824ce,_0x254401){return new BPromise(function(_0x413022,_0x4558d2){return client['request'](_0x5bf07a,_0x254401)['then'](function(_0x51389a){logger['info'](_0xa2b2('0xb'),_0x5824ce,_0xa2b2('0xc'));logger[_0xa2b2('0xd')](_0xa2b2('0xe'),_0x5824ce,_0xa2b2('0xc'),JSON[_0xa2b2('0xf')](_0x51389a));if(_0x51389a['error']){if(_0x51389a['error'][_0xa2b2('0x10')]===0x1f4){logger[_0xa2b2('0x11')](_0xa2b2('0xb'),_0x5824ce,_0x51389a[_0xa2b2('0x11')][_0xa2b2('0x12')]);return _0x4558d2(_0x51389a[_0xa2b2('0x11')][_0xa2b2('0x12')]);}logger[_0xa2b2('0x11')](_0xa2b2('0xb'),_0x5824ce,_0x51389a[_0xa2b2('0x11')]['message']);return _0x413022(_0x51389a[_0xa2b2('0x11')][_0xa2b2('0x12')]);}else{logger[_0xa2b2('0x13')](_0xa2b2('0xb'),_0x5824ce,_0xa2b2('0xc'));_0x413022(_0x51389a['result'][_0xa2b2('0x12')]);}})['catch'](function(_0x337496){logger[_0xa2b2('0x11')](_0xa2b2('0xb'),_0x5824ce,_0x337496);_0x4558d2(_0x337496);});});}exports['CreateWhatsappQueueReport']=function(_0x519fd6){var _0x51ecd7=this;return new Promise(function(_0x24e658,_0x47c719){return db[_0xa2b2('0x14')][_0xa2b2('0x15')](_0x519fd6[_0xa2b2('0x16')],{'raw':_0x519fd6['options']?_0x519fd6[_0xa2b2('0x17')][_0xa2b2('0x18')]===undefined?!![]:![]:!![]})[_0xa2b2('0x19')](function(_0x8a30fc){logger[_0xa2b2('0x13')](_0xa2b2('0x1a'),_0x519fd6);logger[_0xa2b2('0xd')]('CreateWhatsappQueueReport',_0x519fd6,JSON['stringify'](_0x8a30fc));_0x24e658(_0x8a30fc);})[_0xa2b2('0x1b')](function(_0x28b1a0){logger['error'](_0xa2b2('0x1a'),_0x28b1a0['message'],_0x519fd6);_0x47c719(_0x51ecd7['error'](0x1f4,_0x28b1a0[_0xa2b2('0x12')]));});});};exports['UpdateWhatsappQueueReport']=function(_0x826d5e){var _0x1a97b3=this;return new Promise(function(_0x5810c7,_0x466cc3){return db[_0xa2b2('0x14')]['update'](_0x826d5e['body'],{'raw':_0x826d5e[_0xa2b2('0x17')]?_0x826d5e['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x826d5e['options']?_0x826d5e['options'][_0xa2b2('0x1c')]||null:null,'attributes':_0x826d5e[_0xa2b2('0x17')]?_0x826d5e[_0xa2b2('0x17')][_0xa2b2('0x1d')]||null:null,'limit':_0x826d5e[_0xa2b2('0x17')]?_0x826d5e[_0xa2b2('0x17')][_0xa2b2('0x1e')]||null:null})[_0xa2b2('0x19')](function(_0x2ab91c){logger[_0xa2b2('0x13')](_0xa2b2('0x1f'),_0x826d5e);logger[_0xa2b2('0xd')]('UpdateWhatsappQueueReport',_0x826d5e,JSON[_0xa2b2('0xf')](_0x2ab91c));_0x5810c7(_0x2ab91c);})['catch'](function(_0xfbcd78){logger['error'](_0xa2b2('0x1f'),_0xfbcd78['message'],_0x826d5e);_0x466cc3(_0x1a97b3[_0xa2b2('0x11')](0x1f4,_0xfbcd78[_0xa2b2('0x12')]));});});};
\ No newline at end of file
index e343186..8d62889 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x453a=['show','post','put','update','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','./whatsappTransferReport.controller','isAuthenticated','get','describe','/:id'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x453a,0x85));var _0xa453=function(_0x1b54f5,_0x83ee6a){_0x1b54f5=_0x1b54f5-0x0;var _0x3b9975=_0x453a[_0x1b54f5];return _0x3b9975;};'use strict';var multer=require(_0xa453('0x0'));var util=require(_0xa453('0x1'));var path=require('path');var timeout=require(_0xa453('0x2'));var express=require(_0xa453('0x3'));var router=express['Router']();var fs_extra=require(_0xa453('0x4'));var auth=require(_0xa453('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xa453('0x6'));router['get']('/',auth[_0xa453('0x7')](),controller['index']);router[_0xa453('0x8')]('/describe',auth[_0xa453('0x7')](),controller[_0xa453('0x9')]);router['get'](_0xa453('0xa'),auth[_0xa453('0x7')](),controller[_0xa453('0xb')]);router[_0xa453('0xc')]('/',auth[_0xa453('0x7')](),controller['create']);router[_0xa453('0xd')](_0xa453('0xa'),auth[_0xa453('0x7')](),controller[_0xa453('0xe')]);router['delete'](_0xa453('0xa'),auth[_0xa453('0x7')](),controller['destroy']);module[_0xa453('0xf')]=router;
\ No newline at end of file
+var _0xa694=['isAuthenticated','index','/describe','/:id','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./whatsappTransferReport.controller','get'];(function(_0x3cc90b,_0x1b69d9){var _0x34051b=function(_0x1f01f7){while(--_0x1f01f7){_0x3cc90b['push'](_0x3cc90b['shift']());}};_0x34051b(++_0x1b69d9);}(_0xa694,0x145));var _0x4a69=function(_0x1b5535,_0x38d4ec){_0x1b5535=_0x1b5535-0x0;var _0x281948=_0xa694[_0x1b5535];return _0x281948;};'use strict';var multer=require(_0x4a69('0x0'));var util=require(_0x4a69('0x1'));var path=require(_0x4a69('0x2'));var timeout=require(_0x4a69('0x3'));var express=require(_0x4a69('0x4'));var router=express[_0x4a69('0x5')]();var fs_extra=require(_0x4a69('0x6'));var auth=require(_0x4a69('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x4a69('0x8'));var controller=require(_0x4a69('0x9'));router[_0x4a69('0xa')]('/',auth[_0x4a69('0xb')](),controller[_0x4a69('0xc')]);router[_0x4a69('0xa')](_0x4a69('0xd'),auth[_0x4a69('0xb')](),controller['describe']);router['get'](_0x4a69('0xe'),auth[_0x4a69('0xb')](),controller['show']);router[_0x4a69('0xf')]('/',auth[_0x4a69('0xb')](),controller[_0x4a69('0x10')]);router[_0x4a69('0x11')]('/:id',auth[_0x4a69('0xb')](),controller[_0x4a69('0x12')]);router[_0x4a69('0x13')](_0x4a69('0xe'),auth['isAuthenticated'](),controller[_0x4a69('0x14')]);module['exports']=router;
\ No newline at end of file
index 87f9f8e..0a0e815 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58a4=['exports','STRING','ENUM','account','agent','queue','DATE','sequelize'];(function(_0xbca161,_0x4ff432){var _0x16b108=function(_0x1f0463){while(--_0x1f0463){_0xbca161['push'](_0xbca161['shift']());}};_0x16b108(++_0x4ff432);}(_0x58a4,0xbf));var _0x458a=function(_0x3c8f26,_0x453699){_0x3c8f26=_0x3c8f26-0x0;var _0x5a4dd7=_0x58a4[_0x3c8f26];return _0x5a4dd7;};'use strict';var Sequelize=require(_0x458a('0x0'));module[_0x458a('0x1')]={'uniqueid':{'type':Sequelize[_0x458a('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x458a('0x3')](_0x458a('0x4'),_0x458a('0x5'),_0x458a('0x6')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x458a('0x7')]}};
\ No newline at end of file
+var _0x34b7=['account','agent','queue','DATE','STRING','ENUM'];(function(_0x4164f2,_0x38669f){var _0x2575c7=function(_0x24dca1){while(--_0x24dca1){_0x4164f2['push'](_0x4164f2['shift']());}};_0x2575c7(++_0x38669f);}(_0x34b7,0x196));var _0x734b=function(_0x1eebe4,_0x27f7b4){_0x1eebe4=_0x1eebe4-0x0;var _0x46f639=_0x34b7[_0x1eebe4];return _0x46f639;};'use strict';var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0x734b('0x0')],'allowNull':![]},'type':{'type':Sequelize[_0x734b('0x1')](_0x734b('0x2'),_0x734b('0x3'),_0x734b('0x4')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x734b('0x5')]}};
\ No newline at end of file
index d935f2b..0af0fbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe293=['hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','options','includeAll','include','findAll','rows','catch','find','create','body','params','describe','eml-format','rimraf','fast-json-patch','moment','util','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','reject','save','update','then','destroy','end','error','stack','name','send','map','WhatsappTransferReport','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length'];(function(_0x37bd26,_0x5ad346){var _0xe83dc4=function(_0x1ac229){while(--_0x1ac229){_0x37bd26['push'](_0x37bd26['shift']());}};_0xe83dc4(++_0x5ad346);}(_0xe293,0x172));var _0x3e29=function(_0x218972,_0x1f9794){_0x218972=_0x218972-0x0;var _0x1bb1a8=_0xe293[_0x218972];return _0x1bb1a8;};'use strict';var emlformat=require(_0x3e29('0x0'));var rimraf=require(_0x3e29('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3e29('0x2'));var rp=require('request-promise');var moment=require(_0x3e29('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x3e29('0x4'));var path=require('path');var sox=require(_0x3e29('0x5'));var csv=require(_0x3e29('0x6'));var ejs=require(_0x3e29('0x7'));var fs=require('fs');var fs_extra=require(_0x3e29('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x3e29('0x9'));var jsforce=require(_0x3e29('0xa'));var deskjs=require(_0x3e29('0xb'));var toCsv=require('to-csv');var querystring=require(_0x3e29('0xc'));var Papa=require(_0x3e29('0xd'));var Redis=require(_0x3e29('0xe'));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(_0x3e29('0xf'))(_0x3e29('0x10'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x3e29('0x11'));var db=require(_0x3e29('0x12'))['db'];function respondWithStatusCode(_0x10fa81,_0x5a33da){_0x5a33da=_0x5a33da||0xcc;return function(_0x6a3120){if(_0x6a3120){return _0x10fa81[_0x3e29('0x13')](_0x5a33da);}return _0x10fa81[_0x3e29('0x14')](_0x5a33da)['end']();};}function respondWithResult(_0x55584a,_0x36e37a){_0x36e37a=_0x36e37a||0xc8;return function(_0x3fb8b2){if(_0x3fb8b2){return _0x55584a[_0x3e29('0x14')](_0x36e37a)[_0x3e29('0x15')](_0x3fb8b2);}};}function respondWithFilteredResult(_0x4cbd02,_0x4e4101){return function(_0x5e577e){if(_0x5e577e){var _0x5e6785=typeof _0x4e4101[_0x3e29('0x16')]===_0x3e29('0x17')&&typeof _0x4e4101[_0x3e29('0x18')]===_0x3e29('0x17');var _0x58b9cc=_0x5e577e[_0x3e29('0x19')];var _0x2f07f6=_0x5e6785?0x0:_0x4e4101[_0x3e29('0x16')];var _0x1e85ec=_0x5e6785?_0x5e577e[_0x3e29('0x19')]:_0x4e4101['offset']+_0x4e4101[_0x3e29('0x18')];var _0x3856c0;if(_0x1e85ec>=_0x58b9cc){_0x1e85ec=_0x58b9cc;_0x3856c0=0xc8;}else{_0x3856c0=0xce;}_0x4cbd02[_0x3e29('0x14')](_0x3856c0);return _0x4cbd02[_0x3e29('0x1a')]('Content-Range',_0x2f07f6+'-'+_0x1e85ec+'/'+_0x58b9cc)[_0x3e29('0x15')](_0x5e577e);}return null;};}function patchUpdates(_0x405a4e){return function(_0x41c0a7){try{jsonpatch['apply'](_0x41c0a7,_0x405a4e,!![]);}catch(_0x6ee28e){return BPromise[_0x3e29('0x1b')](_0x6ee28e);}return _0x41c0a7[_0x3e29('0x1c')]();};}function saveUpdates(_0x1bff3c,_0x12ccb4){return function(_0x422f4b){if(_0x422f4b){return _0x422f4b[_0x3e29('0x1d')](_0x1bff3c)[_0x3e29('0x1e')](function(_0x40ee17){return _0x40ee17;});}return null;};}function removeEntity(_0x20a942,_0x415e20){return function(_0x47540a){if(_0x47540a){return _0x47540a[_0x3e29('0x1f')]()['then'](function(){_0x20a942[_0x3e29('0x14')](0xcc)[_0x3e29('0x20')]();});}};}function handleEntityNotFound(_0x51ebf3,_0x4de9cf){return function(_0x58a96c){if(!_0x58a96c){_0x51ebf3[_0x3e29('0x13')](0x194);}return _0x58a96c;};}function handleError(_0x23f47a,_0x4ba322){_0x4ba322=_0x4ba322||0x1f4;return function(_0x17701b){logger[_0x3e29('0x21')](_0x17701b[_0x3e29('0x22')]);if(_0x17701b[_0x3e29('0x23')]){delete _0x17701b[_0x3e29('0x23')];}_0x23f47a['status'](_0x4ba322)[_0x3e29('0x24')](_0x17701b);};}exports['index']=function(_0x3dc73f,_0x5522f8){var _0x405e45={},_0x1b5b57={},_0x1f92d1={'count':0x0,'rows':[]};var _0xce1148=_[_0x3e29('0x25')](db[_0x3e29('0x26')][_0x3e29('0x27')],function(_0x40ddc5){return{'name':_0x40ddc5[_0x3e29('0x28')],'type':_0x40ddc5['type'][_0x3e29('0x29')]};});_0x1b5b57[_0x3e29('0x2a')]=_['map'](_0xce1148,_0x3e29('0x23'));_0x1b5b57[_0x3e29('0x2b')]=_[_0x3e29('0x2c')](_0x3dc73f[_0x3e29('0x2b')]);_0x1b5b57[_0x3e29('0x2d')]=_['intersection'](_0x1b5b57[_0x3e29('0x2a')],_0x1b5b57['query']);_0x405e45[_0x3e29('0x2e')]=_[_0x3e29('0x2f')](_0x1b5b57[_0x3e29('0x2a')],qs[_0x3e29('0x30')](_0x3dc73f[_0x3e29('0x2b')]['fields']));_0x405e45[_0x3e29('0x2e')]=_0x405e45[_0x3e29('0x2e')][_0x3e29('0x31')]?_0x405e45['attributes']:_0x1b5b57[_0x3e29('0x2a')];if(!_0x3dc73f[_0x3e29('0x2b')][_0x3e29('0x32')](_0x3e29('0x33'))){_0x405e45[_0x3e29('0x18')]=qs[_0x3e29('0x18')](_0x3dc73f['query'][_0x3e29('0x18')]);_0x405e45[_0x3e29('0x16')]=qs[_0x3e29('0x16')](_0x3dc73f[_0x3e29('0x2b')]['offset']);}_0x405e45[_0x3e29('0x34')]=qs[_0x3e29('0x35')](_0x3dc73f[_0x3e29('0x2b')]['sort']);_0x405e45[_0x3e29('0x36')]=qs[_0x3e29('0x2d')](_[_0x3e29('0x37')](_0x3dc73f['query'],_0x1b5b57['filters']),_0xce1148);if(_0x3dc73f[_0x3e29('0x2b')][_0x3e29('0x38')]){_0x405e45['where']=_[_0x3e29('0x39')](_0x405e45[_0x3e29('0x36')],{'$or':_[_0x3e29('0x25')](_0xce1148,function(_0x3621e9){if(_0x3621e9[_0x3e29('0x3a')]!=='VIRTUAL'){var _0xde5847={};_0xde5847[_0x3621e9[_0x3e29('0x23')]]={'$like':'%'+_0x3dc73f[_0x3e29('0x2b')]['filter']+'%'};return _0xde5847;}})});}_0x405e45=_['merge']({},_0x405e45,_0x3dc73f[_0x3e29('0x3b')]);var _0x24be63={'where':_0x405e45[_0x3e29('0x36')]};return db[_0x3e29('0x26')][_0x3e29('0x19')](_0x24be63)[_0x3e29('0x1e')](function(_0x19ec18){_0x1f92d1[_0x3e29('0x19')]=_0x19ec18;if(_0x3dc73f[_0x3e29('0x2b')][_0x3e29('0x3c')]){_0x405e45[_0x3e29('0x3d')]=[{'all':!![]}];}return db[_0x3e29('0x26')][_0x3e29('0x3e')](_0x405e45);})['then'](function(_0xed30bf){_0x1f92d1[_0x3e29('0x3f')]=_0xed30bf;return _0x1f92d1;})[_0x3e29('0x1e')](respondWithFilteredResult(_0x5522f8,_0x405e45))[_0x3e29('0x40')](handleError(_0x5522f8,null));};exports['show']=function(_0x180df7,_0x1ce7e4){var _0x168bf2={'raw':!![],'where':{'id':_0x180df7['params']['id']}},_0x535b37={};_0x535b37['model']=_[_0x3e29('0x2c')](db[_0x3e29('0x26')][_0x3e29('0x27')]);_0x535b37[_0x3e29('0x2b')]=_[_0x3e29('0x2c')](_0x180df7['query']);_0x535b37['filters']=_[_0x3e29('0x2f')](_0x535b37[_0x3e29('0x2a')],_0x535b37[_0x3e29('0x2b')]);_0x168bf2[_0x3e29('0x2e')]=_[_0x3e29('0x2f')](_0x535b37[_0x3e29('0x2a')],qs[_0x3e29('0x30')](_0x180df7[_0x3e29('0x2b')][_0x3e29('0x30')]));_0x168bf2[_0x3e29('0x2e')]=_0x168bf2[_0x3e29('0x2e')]['length']?_0x168bf2['attributes']:_0x535b37['model'];if(_0x180df7['query']['includeAll']){_0x168bf2[_0x3e29('0x3d')]=[{'all':!![]}];}_0x168bf2=_[_0x3e29('0x39')]({},_0x168bf2,_0x180df7[_0x3e29('0x3b')]);return db[_0x3e29('0x26')][_0x3e29('0x41')](_0x168bf2)[_0x3e29('0x1e')](handleEntityNotFound(_0x1ce7e4,null))[_0x3e29('0x1e')](respondWithResult(_0x1ce7e4,null))[_0x3e29('0x40')](handleError(_0x1ce7e4,null));};exports[_0x3e29('0x42')]=function(_0x31b6c7,_0x566a9e){return db[_0x3e29('0x26')][_0x3e29('0x42')](_0x31b6c7[_0x3e29('0x43')],{})['then'](respondWithResult(_0x566a9e,0xc9))['catch'](handleError(_0x566a9e,null));};exports[_0x3e29('0x1d')]=function(_0x250b3d,_0x3a90cd){if(_0x250b3d[_0x3e29('0x43')]['id']){delete _0x250b3d[_0x3e29('0x43')]['id'];}return db[_0x3e29('0x26')][_0x3e29('0x41')]({'where':{'id':_0x250b3d['params']['id']}})[_0x3e29('0x1e')](handleEntityNotFound(_0x3a90cd,null))['then'](saveUpdates(_0x250b3d['body'],null))[_0x3e29('0x1e')](respondWithResult(_0x3a90cd,null))[_0x3e29('0x40')](handleError(_0x3a90cd,null));};exports[_0x3e29('0x1f')]=function(_0x1c6d61,_0x38b616){return db[_0x3e29('0x26')]['find']({'where':{'id':_0x1c6d61[_0x3e29('0x44')]['id']}})['then'](handleEntityNotFound(_0x38b616,null))[_0x3e29('0x1e')](removeEntity(_0x38b616,null))[_0x3e29('0x40')](handleError(_0x38b616,null));};exports[_0x3e29('0x45')]=function(_0x432169,_0x511909){return db[_0x3e29('0x26')][_0x3e29('0x45')]()[_0x3e29('0x1e')](respondWithResult(_0x511909,null))['catch'](handleError(_0x511909,null));};
\ No newline at end of file
+var _0xef50=['attributes','intersection','fields','length','order','sort','pick','filter','merge','where','type','VIRTUAL','WhatsappTransferReport','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','update','then','destroy','error','stack','name','send','index','map','rawAttributes','key','model','keys','query','filters'];(function(_0x305678,_0x2043e7){var _0x29e3db=function(_0x167a88){while(--_0x167a88){_0x305678['push'](_0x305678['shift']());}};_0x29e3db(++_0x2043e7);}(_0xef50,0x1e1));var _0x0ef5=function(_0x4794e6,_0x544fa1){_0x4794e6=_0x4794e6-0x0;var _0x2b07d8=_0xef50[_0x4794e6];return _0x2b07d8;};'use strict';var emlformat=require(_0x0ef5('0x0'));var rimraf=require(_0x0ef5('0x1'));var zipdir=require(_0x0ef5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0ef5('0x3'));var moment=require(_0x0ef5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x0ef5('0x5'));var util=require(_0x0ef5('0x6'));var path=require(_0x0ef5('0x7'));var sox=require(_0x0ef5('0x8'));var csv=require('to-csv');var ejs=require(_0x0ef5('0x9'));var fs=require('fs');var fs_extra=require(_0x0ef5('0xa'));var _=require(_0x0ef5('0xb'));var squel=require(_0x0ef5('0xc'));var crypto=require(_0x0ef5('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x0ef5('0xe'));var toCsv=require('to-csv');var querystring=require(_0x0ef5('0xf'));var Papa=require(_0x0ef5('0x10'));var Redis=require(_0x0ef5('0x11'));var authService=require(_0x0ef5('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0ef5('0x13'));var logger=require(_0x0ef5('0x14'))(_0x0ef5('0x15'));var utils=require('../../config/utils');var config=require(_0x0ef5('0x16'));var licenseUtil=require(_0x0ef5('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x56f77e,_0x316630){_0x316630=_0x316630||0xcc;return function(_0x35fb4d){if(_0x35fb4d){return _0x56f77e[_0x0ef5('0x18')](_0x316630);}return _0x56f77e[_0x0ef5('0x19')](_0x316630)[_0x0ef5('0x1a')]();};}function respondWithResult(_0x78d461,_0x2dc027){_0x2dc027=_0x2dc027||0xc8;return function(_0x4c7bcf){if(_0x4c7bcf){return _0x78d461[_0x0ef5('0x19')](_0x2dc027)['json'](_0x4c7bcf);}};}function respondWithFilteredResult(_0x43559e,_0xa52849){return function(_0x4614db){if(_0x4614db){var _0x15a915=typeof _0xa52849['offset']===_0x0ef5('0x1b')&&typeof _0xa52849[_0x0ef5('0x1c')]===_0x0ef5('0x1b');var _0x39e2d3=_0x4614db[_0x0ef5('0x1d')];var _0x83753c=_0x15a915?0x0:_0xa52849[_0x0ef5('0x1e')];var _0x1df4c4=_0x15a915?_0x4614db[_0x0ef5('0x1d')]:_0xa52849[_0x0ef5('0x1e')]+_0xa52849[_0x0ef5('0x1c')];var _0x8e5edc;if(_0x1df4c4>=_0x39e2d3){_0x1df4c4=_0x39e2d3;_0x8e5edc=0xc8;}else{_0x8e5edc=0xce;}_0x43559e[_0x0ef5('0x19')](_0x8e5edc);return _0x43559e[_0x0ef5('0x1f')](_0x0ef5('0x20'),_0x83753c+'-'+_0x1df4c4+'/'+_0x39e2d3)[_0x0ef5('0x21')](_0x4614db);}return null;};}function patchUpdates(_0x29c2a4){return function(_0x4e4ac3){try{jsonpatch[_0x0ef5('0x22')](_0x4e4ac3,_0x29c2a4,!![]);}catch(_0x23535f){return BPromise[_0x0ef5('0x23')](_0x23535f);}return _0x4e4ac3['save']();};}function saveUpdates(_0x57beec,_0x3d6fa5){return function(_0x3e97e9){if(_0x3e97e9){return _0x3e97e9[_0x0ef5('0x24')](_0x57beec)[_0x0ef5('0x25')](function(_0x17c43a){return _0x17c43a;});}return null;};}function removeEntity(_0x3657d2,_0x162a4f){return function(_0x11d804){if(_0x11d804){return _0x11d804[_0x0ef5('0x26')]()['then'](function(){_0x3657d2[_0x0ef5('0x19')](0xcc)[_0x0ef5('0x1a')]();});}};}function handleEntityNotFound(_0x7224a9,_0x1903d1){return function(_0x14fb8c){if(!_0x14fb8c){_0x7224a9['sendStatus'](0x194);}return _0x14fb8c;};}function handleError(_0x3e88be,_0x5a9569){_0x5a9569=_0x5a9569||0x1f4;return function(_0x5c468c){logger[_0x0ef5('0x27')](_0x5c468c[_0x0ef5('0x28')]);if(_0x5c468c[_0x0ef5('0x29')]){delete _0x5c468c[_0x0ef5('0x29')];}_0x3e88be['status'](_0x5a9569)[_0x0ef5('0x2a')](_0x5c468c);};}exports[_0x0ef5('0x2b')]=function(_0x790c97,_0x19f602){var _0xa31d03={},_0x259763={},_0x549ab1={'count':0x0,'rows':[]};var _0x231345=_[_0x0ef5('0x2c')](db['WhatsappTransferReport'][_0x0ef5('0x2d')],function(_0x43c56c){return{'name':_0x43c56c['fieldName'],'type':_0x43c56c['type'][_0x0ef5('0x2e')]};});_0x259763[_0x0ef5('0x2f')]=_['map'](_0x231345,_0x0ef5('0x29'));_0x259763['query']=_[_0x0ef5('0x30')](_0x790c97[_0x0ef5('0x31')]);_0x259763[_0x0ef5('0x32')]=_['intersection'](_0x259763[_0x0ef5('0x2f')],_0x259763['query']);_0xa31d03[_0x0ef5('0x33')]=_[_0x0ef5('0x34')](_0x259763['model'],qs[_0x0ef5('0x35')](_0x790c97[_0x0ef5('0x31')]['fields']));_0xa31d03[_0x0ef5('0x33')]=_0xa31d03[_0x0ef5('0x33')][_0x0ef5('0x36')]?_0xa31d03[_0x0ef5('0x33')]:_0x259763[_0x0ef5('0x2f')];if(!_0x790c97[_0x0ef5('0x31')]['hasOwnProperty']('nolimit')){_0xa31d03[_0x0ef5('0x1c')]=qs[_0x0ef5('0x1c')](_0x790c97[_0x0ef5('0x31')]['limit']);_0xa31d03[_0x0ef5('0x1e')]=qs['offset'](_0x790c97['query'][_0x0ef5('0x1e')]);}_0xa31d03[_0x0ef5('0x37')]=qs[_0x0ef5('0x38')](_0x790c97[_0x0ef5('0x31')][_0x0ef5('0x38')]);_0xa31d03['where']=qs[_0x0ef5('0x32')](_[_0x0ef5('0x39')](_0x790c97[_0x0ef5('0x31')],_0x259763['filters']),_0x231345);if(_0x790c97['query'][_0x0ef5('0x3a')]){_0xa31d03['where']=_[_0x0ef5('0x3b')](_0xa31d03[_0x0ef5('0x3c')],{'$or':_[_0x0ef5('0x2c')](_0x231345,function(_0x31ff08){if(_0x31ff08[_0x0ef5('0x3d')]!==_0x0ef5('0x3e')){var _0x29e6c0={};_0x29e6c0[_0x31ff08[_0x0ef5('0x29')]]={'$like':'%'+_0x790c97['query'][_0x0ef5('0x3a')]+'%'};return _0x29e6c0;}})});}_0xa31d03=_['merge']({},_0xa31d03,_0x790c97['options']);var _0x27439e={'where':_0xa31d03[_0x0ef5('0x3c')]};return db[_0x0ef5('0x3f')][_0x0ef5('0x1d')](_0x27439e)[_0x0ef5('0x25')](function(_0x213f74){_0x549ab1[_0x0ef5('0x1d')]=_0x213f74;if(_0x790c97['query'][_0x0ef5('0x40')]){_0xa31d03[_0x0ef5('0x41')]=[{'all':!![]}];}return db[_0x0ef5('0x3f')][_0x0ef5('0x42')](_0xa31d03);})[_0x0ef5('0x25')](function(_0x3a5b4a){_0x549ab1[_0x0ef5('0x43')]=_0x3a5b4a;return _0x549ab1;})[_0x0ef5('0x25')](respondWithFilteredResult(_0x19f602,_0xa31d03))[_0x0ef5('0x44')](handleError(_0x19f602,null));};exports[_0x0ef5('0x45')]=function(_0x34685b,_0x49474e){var _0x4adc17={'raw':!![],'where':{'id':_0x34685b[_0x0ef5('0x46')]['id']}},_0x4b0dff={};_0x4b0dff[_0x0ef5('0x2f')]=_[_0x0ef5('0x30')](db[_0x0ef5('0x3f')][_0x0ef5('0x2d')]);_0x4b0dff[_0x0ef5('0x31')]=_[_0x0ef5('0x30')](_0x34685b[_0x0ef5('0x31')]);_0x4b0dff[_0x0ef5('0x32')]=_['intersection'](_0x4b0dff[_0x0ef5('0x2f')],_0x4b0dff[_0x0ef5('0x31')]);_0x4adc17[_0x0ef5('0x33')]=_[_0x0ef5('0x34')](_0x4b0dff[_0x0ef5('0x2f')],qs[_0x0ef5('0x35')](_0x34685b['query']['fields']));_0x4adc17[_0x0ef5('0x33')]=_0x4adc17[_0x0ef5('0x33')][_0x0ef5('0x36')]?_0x4adc17['attributes']:_0x4b0dff[_0x0ef5('0x2f')];if(_0x34685b[_0x0ef5('0x31')][_0x0ef5('0x40')]){_0x4adc17[_0x0ef5('0x41')]=[{'all':!![]}];}_0x4adc17=_[_0x0ef5('0x3b')]({},_0x4adc17,_0x34685b[_0x0ef5('0x47')]);return db[_0x0ef5('0x3f')][_0x0ef5('0x48')](_0x4adc17)['then'](handleEntityNotFound(_0x49474e,null))['then'](respondWithResult(_0x49474e,null))[_0x0ef5('0x44')](handleError(_0x49474e,null));};exports[_0x0ef5('0x49')]=function(_0x3eb5d2,_0x40c570){return db[_0x0ef5('0x3f')][_0x0ef5('0x49')](_0x3eb5d2[_0x0ef5('0x4a')],{})[_0x0ef5('0x25')](respondWithResult(_0x40c570,0xc9))[_0x0ef5('0x44')](handleError(_0x40c570,null));};exports[_0x0ef5('0x24')]=function(_0x554c2b,_0x1b4416){if(_0x554c2b[_0x0ef5('0x4a')]['id']){delete _0x554c2b[_0x0ef5('0x4a')]['id'];}return db[_0x0ef5('0x3f')][_0x0ef5('0x48')]({'where':{'id':_0x554c2b[_0x0ef5('0x46')]['id']}})['then'](handleEntityNotFound(_0x1b4416,null))['then'](saveUpdates(_0x554c2b[_0x0ef5('0x4a')],null))[_0x0ef5('0x25')](respondWithResult(_0x1b4416,null))[_0x0ef5('0x44')](handleError(_0x1b4416,null));};exports[_0x0ef5('0x26')]=function(_0x51fb73,_0x5e8ffa){return db['WhatsappTransferReport']['find']({'where':{'id':_0x51fb73[_0x0ef5('0x46')]['id']}})[_0x0ef5('0x25')](handleEntityNotFound(_0x5e8ffa,null))['then'](removeEntity(_0x5e8ffa,null))['catch'](handleError(_0x5e8ffa,null));};exports['describe']=function(_0x343e45,_0x2fb40c){return db[_0x0ef5('0x3f')][_0x0ef5('0x4b')]()[_0x0ef5('0x25')](respondWithResult(_0x2fb40c,null))['catch'](handleError(_0x2fb40c,null));};
\ No newline at end of file
index 397e885..7766e81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a2a=['uniqueid','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','WhatsappTransferReport','report_whatsapp_transfer'];(function(_0x4d216c,_0x363a80){var _0x36fe74=function(_0x460e09){while(--_0x460e09){_0x4d216c['push'](_0x4d216c['shift']());}};_0x36fe74(++_0x363a80);}(_0x5a2a,0x16d));var _0xa5a2=function(_0x3fde87,_0x11291e){_0x3fde87=_0x3fde87-0x0;var _0x4bca0d=_0x5a2a[_0x3fde87];return _0x4bca0d;};'use strict';var _=require(_0xa5a2('0x0'));var util=require('util');var logger=require(_0xa5a2('0x1'))(_0xa5a2('0x2'));var moment=require(_0xa5a2('0x3'));var BPromise=require(_0xa5a2('0x4'));var rp=require(_0xa5a2('0x5'));var fs=require('fs');var path=require(_0xa5a2('0x6'));var rimraf=require(_0xa5a2('0x7'));var config=require(_0xa5a2('0x8'));var attributes=require('./whatsappTransferReport.attributes');module['exports']=function(_0x334898,_0x22467a){return _0x334898[_0xa5a2('0x9')](_0xa5a2('0xa'),attributes,{'tableName':_0xa5a2('0xb'),'paranoid':![],'indexes':[{'name':_0xa5a2('0xc'),'fields':[_0xa5a2('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb25d=['../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','report_whatsapp_transfer','lodash','util'];(function(_0x2e49c5,_0x41f824){var _0xad7c45=function(_0x3db6b3){while(--_0x3db6b3){_0x2e49c5['push'](_0x2e49c5['shift']());}};_0xad7c45(++_0x41f824);}(_0xb25d,0x12a));var _0xdb25=function(_0x15b75c,_0x52f837){_0x15b75c=_0x15b75c-0x0;var _0x1fb570=_0xb25d[_0x15b75c];return _0x1fb570;};'use strict';var _=require(_0xdb25('0x0'));var util=require(_0xdb25('0x1'));var logger=require(_0xdb25('0x2'))(_0xdb25('0x3'));var moment=require(_0xdb25('0x4'));var BPromise=require(_0xdb25('0x5'));var rp=require(_0xdb25('0x6'));var fs=require('fs');var path=require(_0xdb25('0x7'));var rimraf=require('rimraf');var config=require(_0xdb25('0x8'));var attributes=require('./whatsappTransferReport.attributes');module['exports']=function(_0x3a6a67,_0x245274){return _0x3a6a67['define']('WhatsappTransferReport',attributes,{'tableName':_0xdb25('0x9'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 221ec0b..79a3113 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a63=['message','WhatsappTransferReport,\x20%s,\x20%s','info','request\x20sent','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x50223a,_0x530610){var _0x1863c6=function(_0x1efe65){while(--_0x1efe65){_0x50223a['push'](_0x50223a['shift']());}};_0x1863c6(++_0x530610);}(_0x0a63,0x1e5));var _0x30a6=function(_0x11a2dd,_0x5bf4bc){_0x11a2dd=_0x11a2dd-0x0;var _0x4bc0e2=_0x0a63[_0x11a2dd];return _0x4bc0e2;};'use strict';var _=require(_0x30a6('0x0'));var util=require(_0x30a6('0x1'));var moment=require(_0x30a6('0x2'));var BPromise=require(_0x30a6('0x3'));var rs=require(_0x30a6('0x4'));var fs=require('fs');var Redis=require(_0x30a6('0x5'));var db=require(_0x30a6('0x6'))['db'];var utils=require(_0x30a6('0x7'));var logger=require(_0x30a6('0x8'))(_0x30a6('0x9'));var config=require('../../config/environment');var jayson=require(_0x30a6('0xa'));var client=jayson['client'][_0x30a6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x344377,_0x7d183,_0x13bcdd){return new BPromise(function(_0x1c6a97,_0x1f7911){return client[_0x30a6('0xc')](_0x344377,_0x13bcdd)[_0x30a6('0xd')](function(_0x4deeaf){logger['info']('WhatsappTransferReport,\x20%s,\x20%s',_0x7d183,'request\x20sent');logger[_0x30a6('0xe')](_0x30a6('0xf'),_0x7d183,'request\x20sent',JSON[_0x30a6('0x10')](_0x4deeaf));if(_0x4deeaf[_0x30a6('0x11')]){if(_0x4deeaf['error'][_0x30a6('0x12')]===0x1f4){logger[_0x30a6('0x11')]('WhatsappTransferReport,\x20%s,\x20%s',_0x7d183,_0x4deeaf[_0x30a6('0x11')][_0x30a6('0x13')]);return _0x1f7911(_0x4deeaf[_0x30a6('0x11')]['message']);}logger[_0x30a6('0x11')](_0x30a6('0x14'),_0x7d183,_0x4deeaf['error'][_0x30a6('0x13')]);return _0x1c6a97(_0x4deeaf[_0x30a6('0x11')][_0x30a6('0x13')]);}else{logger[_0x30a6('0x15')](_0x30a6('0x14'),_0x7d183,_0x30a6('0x16'));_0x1c6a97(_0x4deeaf['result']['message']);}})[_0x30a6('0x17')](function(_0x527285){logger[_0x30a6('0x11')](_0x30a6('0x14'),_0x7d183,_0x527285);_0x1f7911(_0x527285);});});}
\ No newline at end of file
+var _0xc121=['stringify','error','code','message','info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s'];(function(_0x32ec4f,_0x42b5d5){var _0x5ff5a6=function(_0x4d7e80){while(--_0x4d7e80){_0x32ec4f['push'](_0x32ec4f['shift']());}};_0x5ff5a6(++_0x42b5d5);}(_0xc121,0xc7));var _0x1c12=function(_0x3070dc,_0x40cf11){_0x3070dc=_0x3070dc-0x0;var _0x431489=_0xc121[_0x3070dc];return _0x431489;};'use strict';var _=require(_0x1c12('0x0'));var util=require(_0x1c12('0x1'));var moment=require('moment');var BPromise=require(_0x1c12('0x2'));var rs=require(_0x1c12('0x3'));var fs=require('fs');var Redis=require(_0x1c12('0x4'));var db=require(_0x1c12('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x1c12('0x6'))(_0x1c12('0x7'));var config=require(_0x1c12('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x1c12('0x9')][_0x1c12('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xc67fe0,_0x3d5c38,_0x4b6ae0){return new BPromise(function(_0x1d8b05,_0x22471a){return client[_0x1c12('0xb')](_0xc67fe0,_0x4b6ae0)[_0x1c12('0xc')](function(_0x4881b5){logger['info'](_0x1c12('0xd'),_0x3d5c38,_0x1c12('0xe'));logger[_0x1c12('0xf')](_0x1c12('0x10'),_0x3d5c38,_0x1c12('0xe'),JSON[_0x1c12('0x11')](_0x4881b5));if(_0x4881b5['error']){if(_0x4881b5[_0x1c12('0x12')][_0x1c12('0x13')]===0x1f4){logger[_0x1c12('0x12')](_0x1c12('0xd'),_0x3d5c38,_0x4881b5[_0x1c12('0x12')][_0x1c12('0x14')]);return _0x22471a(_0x4881b5[_0x1c12('0x12')][_0x1c12('0x14')]);}logger[_0x1c12('0x12')](_0x1c12('0xd'),_0x3d5c38,_0x4881b5[_0x1c12('0x12')][_0x1c12('0x14')]);return _0x1d8b05(_0x4881b5['error'][_0x1c12('0x14')]);}else{logger[_0x1c12('0x15')]('WhatsappTransferReport,\x20%s,\x20%s',_0x3d5c38,_0x1c12('0xe'));_0x1d8b05(_0x4881b5[_0x1c12('0x16')][_0x1c12('0x14')]);}})[_0x1c12('0x17')](function(_0x53e1f8){logger['error']('WhatsappTransferReport,\x20%s,\x20%s',_0x3d5c38,_0x53e1f8);_0x22471a(_0x53e1f8);});});}
\ No newline at end of file
index dc46e5e..a7fe784 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x226d=['Online\x20apps:','map','filter','online','name','join','status','seedDB','default','catch','./mysqldb','./rpc','./config/environment','app','./config/pm2','./config/schedule/whatsapp','./config/schedule/transcribe','sequelize','sync','then','listen','info','start'];(function(_0x172747,_0x1732bd){var _0x509692=function(_0x448c56){while(--_0x448c56){_0x172747['push'](_0x172747['shift']());}};_0x509692(++_0x1732bd);}(_0x226d,0xc2));var _0xd226=function(_0x270286,_0x1525dd){_0x270286=_0x270286-0x0;var _0x4636ee=_0x226d[_0x270286];return _0x4636ee;};'use strict';var _=require('lodash');var mysqldb=require(_0xd226('0x0'));var rpc=require(_0xd226('0x1'));var config=require(_0xd226('0x2'));var logger=require('./config/logger')(_0xd226('0x3'));var pm2=require(_0xd226('0x4'));var pm2Config=require('./config/pm2/config');var schedule=require('./config/schedule');var chat=require('./config/schedule/chat');var whatsapp=require(_0xd226('0x5'));var transcribe=require(_0xd226('0x6'));function main(){return mysqldb['db'][_0xd226('0x7')][_0xd226('0x8')]()[_0xd226('0x9')](function(){return rpc[_0xd226('0xa')]();})[_0xd226('0x9')](function(_0x38d444){logger[_0xd226('0xb')](_0x38d444);return chat[_0xd226('0xc')]();})[_0xd226('0x9')](function(){return whatsapp[_0xd226('0xc')]();})[_0xd226('0x9')](function(){return schedule['start']();})[_0xd226('0x9')](function(){return transcribe[_0xd226('0xc')]();})['then'](function(_0x442294){logger[_0xd226('0xb')](_0x442294);return pm2[_0xd226('0xc')](pm2Config);})[_0xd226('0x9')](function(_0x30494b){logger[_0xd226('0xb')](_0xd226('0xd'),_[_0xd226('0xe')](_[_0xd226('0xf')](_0x30494b,{'status':_0xd226('0x10')}),_0xd226('0x11'))[_0xd226('0x12')]());logger[_0xd226('0xb')]('Offline\x20apps:',_[_0xd226('0xe')](_[_0xd226('0xf')](_0x30494b,function(_0x296005){return _0x296005[_0xd226('0x13')]!==_0xd226('0x10');}),_0xd226('0x11'))['join']()||'None');config[_0xd226('0x14')]&&require('./config/seedDB')['default']();require('./config/license')[_0xd226('0x15')]();})[_0xd226('0x16')](function(_0x1dbfa8){logger['error']('Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s',_0x1dbfa8);process['exit'](0x1);});}main();
\ No newline at end of file
+var _0x87da=['sequelize','then','listen','info','start','map','filter','name','join','Offline\x20apps:','status','online','None','seedDB','./config/seedDB','./config/license','default','catch','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','lodash','./mysqldb','./rpc','./config/environment','./config/logger','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/chat','./config/schedule/transcribe'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x87da,0x122));var _0xa87d=function(_0x2e3045,_0x981539){_0x2e3045=_0x2e3045-0x0;var _0x2844cb=_0x87da[_0x2e3045];return _0x2844cb;};'use strict';var _=require(_0xa87d('0x0'));var mysqldb=require(_0xa87d('0x1'));var rpc=require(_0xa87d('0x2'));var config=require(_0xa87d('0x3'));var logger=require(_0xa87d('0x4'))('app');var pm2=require(_0xa87d('0x5'));var pm2Config=require(_0xa87d('0x6'));var schedule=require(_0xa87d('0x7'));var chat=require(_0xa87d('0x8'));var whatsapp=require('./config/schedule/whatsapp');var transcribe=require(_0xa87d('0x9'));function main(){return mysqldb['db'][_0xa87d('0xa')]['sync']()[_0xa87d('0xb')](function(){return rpc[_0xa87d('0xc')]();})[_0xa87d('0xb')](function(_0x3249d5){logger[_0xa87d('0xd')](_0x3249d5);return chat[_0xa87d('0xe')]();})[_0xa87d('0xb')](function(){return whatsapp['start']();})[_0xa87d('0xb')](function(){return schedule[_0xa87d('0xe')]();})[_0xa87d('0xb')](function(){return transcribe[_0xa87d('0xe')]();})[_0xa87d('0xb')](function(_0x12462a){logger[_0xa87d('0xd')](_0x12462a);return pm2[_0xa87d('0xe')](pm2Config);})[_0xa87d('0xb')](function(_0x2d8b8f){logger[_0xa87d('0xd')]('Online\x20apps:',_[_0xa87d('0xf')](_[_0xa87d('0x10')](_0x2d8b8f,{'status':'online'}),_0xa87d('0x11'))[_0xa87d('0x12')]());logger[_0xa87d('0xd')](_0xa87d('0x13'),_[_0xa87d('0xf')](_[_0xa87d('0x10')](_0x2d8b8f,function(_0x3e5505){return _0x3e5505[_0xa87d('0x14')]!==_0xa87d('0x15');}),_0xa87d('0x11'))[_0xa87d('0x12')]()||_0xa87d('0x16'));config[_0xa87d('0x17')]&&require(_0xa87d('0x18'))['default']();require(_0xa87d('0x19'))[_0xa87d('0x1a')]();})[_0xa87d('0x1b')](function(_0x36c297){logger['error'](_0xa87d('0x1c'),_0x36c297);process[_0xa87d('0x1d')](0x1);});}main();
\ No newline at end of file
index ebd105b..92c50e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f7a=['add','minutes','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','update','Forbidden','isMiddleware','signToken','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','redirect','/dashboards/general','isNil','apiKeyIat','regenerateApiKey','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','validatePasswordPattern','test','Sequelize','ValidationError','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','toLowerCase','format','updatePasswordsHistory','decryptString','split','length','unshift','sign','secret','payload','options','promisify','secrets','randomBytes','toString','hex','now','HS512','../../mysqldb','../../config/environment','../../config/license/hardware','../../config/license/util','../encryptor','lodash','jsonwebtoken','express-jwt','util','moment','session','name','internal','userpic','permissions','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','lastLoginAt','lastPauseAt','crudPermissions','passwordResetAt','alias','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableRecording','phoneBarRemoteControl','phoneBarRemoteControlPort','hotdesk','interface','userProfileId','wssPort','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','isChatInteractionAuthorized','isAuthenticated','use','user','findOne','params','closed','disposition','status','unmanaged','Unmanaged.','catch','authorization','startsWith','headers','Basic','User','find','then','authenticate','json','Wrong\x20credentials.','Bearer','Unknown\x20authorization\x20format','query','apikey','getUuid','Setting','allowedLoginAttempts','blockDuration','isEqual','apiKeyNonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','Invalid\x20API\x20access\x20key','blockedAt'];(function(_0x92713a,_0x68f8b0){var _0x1893e1=function(_0xe49768){while(--_0xe49768){_0x92713a['push'](_0x92713a['shift']());}};_0x1893e1(++_0x68f8b0);}(_0x9f7a,0x185));var _0xa9f7=function(_0x5f309e,_0x66e31){_0x5f309e=_0x5f309e-0x0;var _0x487b5e=_0x9f7a[_0x5f309e];return _0x487b5e;};'use strict';var db=require(_0xa9f7('0x0'))['db'];var config=require(_0xa9f7('0x1'));var hardwareConf=require(_0xa9f7('0x2'));var licenseUtil=require(_0xa9f7('0x3'));var encryptor=require(_0xa9f7('0x4'));var _=require(_0xa9f7('0x5'));var jwt=require(_0xa9f7('0x6'));var expressJwt=require(_0xa9f7('0x7'));var compose=require('composable-middleware');var basicAuth=require('basic-auth');var crypto=require('crypto');var BPromise=require('bluebird');var util=require(_0xa9f7('0x8'));var moment=require(_0xa9f7('0x9'));var validateJwt=expressJwt({'secret':config['secrets'][_0xa9f7('0xa')]});var userAttributes=['id','role','fullname',_0xa9f7('0xb'),_0xa9f7('0xc'),'email',_0xa9f7('0xd'),_0xa9f7('0xe'),'md5secret',_0xa9f7('0xf'),_0xa9f7('0x10'),_0xa9f7('0x11'),_0xa9f7('0x12'),_0xa9f7('0x13'),_0xa9f7('0x14'),'pauseType','showWebBar',_0xa9f7('0x15'),_0xa9f7('0x16'),_0xa9f7('0x17'),'allowmessenger',_0xa9f7('0x18'),_0xa9f7('0x19'),_0xa9f7('0x1a'),_0xa9f7('0x1b'),_0xa9f7('0x1c'),_0xa9f7('0x1d'),'phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired',_0xa9f7('0x1e'),_0xa9f7('0x1f'),_0xa9f7('0x20'),_0xa9f7('0x21'),_0xa9f7('0x22'),'privacyEnabled','settingsEnabled',_0xa9f7('0x23'),_0xa9f7('0x24'),_0xa9f7('0x25'),_0xa9f7('0x26')];exports[_0xa9f7('0x27')]=function(){return this[_0xa9f7('0x28')](!![])[_0xa9f7('0x29')](function(_0x115bd2,_0x410519,_0x50ead9){if(_0x115bd2[_0xa9f7('0x2a')]){_0x50ead9();}else{return db['ChatInteraction'][_0xa9f7('0x2b')]({'where':{'id':_0x115bd2[_0xa9f7('0x2c')]['id']},'attributes':['id',_0xa9f7('0x2d'),_0xa9f7('0x2e')],'raw':!![]})['then'](function(_0x1c4482){if(_0x1c4482&&_0x1c4482[_0xa9f7('0x2d')]){return _0x410519[_0xa9f7('0x2f')](_0x1c4482['disposition']===_0xa9f7('0x30')?0x195:0x193)['json']({'message':_0x1c4482[_0xa9f7('0x2e')]===_0xa9f7('0x30')?_0xa9f7('0x31'):'Forbidden.'});}else{_0x50ead9();}})[_0xa9f7('0x32')](function(_0x2b017f){_0x50ead9(_0x2b017f);});}});};exports[_0xa9f7('0x28')]=function isAuthenticated(_0x2e1064){return compose()['use'](function(_0x4a8aa9,_0x45f287,_0x6a2bfd){var _0x4a13e2;if(_0x4a8aa9['headers'][_0xa9f7('0x33')]){if(_[_0xa9f7('0x34')](_0x4a8aa9[_0xa9f7('0x35')][_0xa9f7('0x33')],_0xa9f7('0x36'))){var _0x136797=basicAuth(_0x4a8aa9);db[_0xa9f7('0x37')][_0xa9f7('0x38')]({'where':{'name':_0x136797[_0xa9f7('0xb')]}})[_0xa9f7('0x39')](function(_0x19da8e){if(!_0x19da8e||!_0x19da8e[_0xa9f7('0x3a')](_0x136797['pass'])){return _0x45f287['status'](0x191)[_0xa9f7('0x3b')]({'message':_0xa9f7('0x3c')});}_0x4a8aa9['user']={'id':_0x19da8e['id']};_0x6a2bfd();})['catch'](function(_0x36f0a5){_0x6a2bfd(_0x36f0a5);});}else if(_[_0xa9f7('0x34')](_0x4a8aa9[_0xa9f7('0x35')]['authorization'],_0xa9f7('0x3d'))){validateJwt(_0x4a8aa9,_0x45f287,_0x6a2bfd);}else{if(_0x2e1064){_0x6a2bfd();}else{return _0x45f287[_0xa9f7('0x2f')](0x193)[_0xa9f7('0x3b')]({'message':_0xa9f7('0x3e')});}}}else if(_0x4a8aa9[_0xa9f7('0x3f')][_0xa9f7('0x40')]){try{var _0x4000fe={'audience':hardwareConf[_0xa9f7('0x41')](),'issuer':hardwareConf[_0xa9f7('0x41')]()};verifyJwt(_0x4a8aa9['query']['apikey'],_0x4000fe)[_0xa9f7('0x39')](function(_0x4519d8){return db[_0xa9f7('0x37')][_0xa9f7('0x38')]({'where':{'id':_0x4519d8['sub']}})[_0xa9f7('0x39')](function(_0x3b417a){_0x4a13e2=_0x3b417a;return db[_0xa9f7('0x42')][_0xa9f7('0x2b')]({'where':{'id':0x1},'attributes':[_0xa9f7('0x43'),_0xa9f7('0x44')],'raw':!![]});})[_0xa9f7('0x39')](function(_0x311ba9){if(!_0x4a13e2||!_[_0xa9f7('0x45')](_0x4a13e2[_0xa9f7('0x46')],_0x4519d8['nonce'])){return _0x45f287[_0xa9f7('0x2f')](0x191)['json']({'message':_0xa9f7('0x47')});}if(_0x4a13e2[_0xa9f7('0x48')]){return _0x45f287[_0xa9f7('0x2f')](0x191)[_0xa9f7('0x3b')]({'message':_0xa9f7('0x49')});}if(_0x4a13e2['blocked']){if(_0x311ba9[_0xa9f7('0x44')]>0x0){if(moment(_0x4a13e2[_0xa9f7('0x4a')])[_0xa9f7('0x4b')](_0x311ba9[_0xa9f7('0x44')],_0xa9f7('0x4c'))>moment()){return _0x45f287['status'](0x191)[_0xa9f7('0x3b')]({'message':_0xa9f7('0x49')});}}else{return _0x45f287[_0xa9f7('0x2f')](0x191)[_0xa9f7('0x3b')]({'message':_0xa9f7('0x49')});}}_0x4a8aa9[_0xa9f7('0x2a')]={'id':_0x4a13e2['id']};_0x6a2bfd();});})[_0xa9f7('0x32')](function(){return _0x45f287[_0xa9f7('0x2f')](0x191)['json']({'message':_0xa9f7('0x49')});});}catch(_0x1703b5){_0x6a2bfd(_0x1703b5);}}else if(_0x2e1064){_0x6a2bfd();}else{return _0x45f287[_0xa9f7('0x2f')](0x193)[_0xa9f7('0x3b')]({'message':_0xa9f7('0x3e')});}})[_0xa9f7('0x29')](function(_0x690f47,_0x81581a,_0x440b9c){if(_0x690f47[_0xa9f7('0x2a')]){db[_0xa9f7('0x37')][_0xa9f7('0x38')]({'where':{'id':_0x690f47[_0xa9f7('0x2a')]['id']},'attributes':userAttributes})['then'](function(_0x3c58ac){if(!_0x3c58ac){return _0x81581a[_0xa9f7('0x2f')](0x194)['json']({'message':_0xa9f7('0x4d')});}_0x690f47[_0xa9f7('0x2a')]=_0x3c58ac;_0x440b9c();})[_0xa9f7('0x32')](function(_0x1f47ef){_0x440b9c(_0x1f47ef);});}else if(_0x2e1064){_0x440b9c();}else{return _0x81581a[_0xa9f7('0x2f')](0x194)[_0xa9f7('0x3b')]({'message':_0xa9f7('0x4e')});}});};exports[_0xa9f7('0x4f')]=function canUpdate(){return compose()[_0xa9f7('0x29')](function(_0x3b25e8,_0x3f0c30,_0x4f1e06){return licenseUtil['getLicense']()['then'](function(_0x34154c){if(_0x34154c[_0xa9f7('0x50')]){_0x4f1e06();}else{return _0x3f0c30['status'](0x193)['json']({'message':_0xa9f7('0x51')});}})[_0xa9f7('0x32')](function(_0x1e33d8){_0x4f1e06(_0x1e33d8);});});};exports[_0xa9f7('0x52')]=function(_0x4b4162,_0x397df6,_0x4e3676){_0x4b4162[_0xa9f7('0x52')]=!![];return _0x4e3676();};exports[_0xa9f7('0x53')]=function signToken(_0x3b702b){return signJwt(_0x3b702b);};exports[_0xa9f7('0x54')]=function(_0x3a37b5,_0x4c61b4){if(!_0x3a37b5[_0xa9f7('0x2a')]){return _0x4c61b4[_0xa9f7('0x2f')](0x194)[_0xa9f7('0x3b')]({'message':_0xa9f7('0x55')});}var _0x28d4a9={'payload':{'id':_0x3a37b5['user']['id'],'role':_0x3a37b5['user']['role']},'options':{'expiresIn':0x15180}};return signJwt(_0x28d4a9)[_0xa9f7('0x39')](function(_0x47854a){_0x4c61b4[_0xa9f7('0x56')]('motion.token',_0x47854a);_0x4c61b4[_0xa9f7('0x57')](_0xa9f7('0x58'));})['catch'](function(_0x10e7d9){return _0x4c61b4['status'](0x1f4)['send'](_0x10e7d9);});};exports['retrieveApiKey']=function(_0x465889){if(_[_0xa9f7('0x59')](_0x465889['apiKeyNonce'])||_[_0xa9f7('0x59')](_0x465889[_0xa9f7('0x5a')])){return null;}else{return createJwt(_0x465889);}};exports['generateApiKey']=function(_0x48a357){_0x48a357[_0xa9f7('0x46')]=generateNonce();_0x48a357[_0xa9f7('0x5a')]=generateIssuedAt();return createJwt(_0x48a357);};exports[_0xa9f7('0x5b')]=function(_0x3e60c5,_0x56eb75){var _0x3f2a66=_0x3e60c5[_0xa9f7('0x3f')]['apikey'];if(_0x3f2a66){var _0x5c1659={'nonce':_0x56eb75['apiKeyNonce'],'iat':_0x56eb75['apiKeyIat'],'audience':hardwareConf[_0xa9f7('0x41')](),'issuer':hardwareConf[_0xa9f7('0x41')]()};return verifyJwt(_0x3f2a66,_0x5c1659)[_0xa9f7('0x39')](function(){return generateApiKey(_0x56eb75);});}else{throw{'message':_0xa9f7('0x5c')};}};exports[_0xa9f7('0x5d')]=function(_0x5a56a1){var _0x1405d0=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x1405d0[_0xa9f7('0x5e')](_0x5a56a1))throw new db[(_0xa9f7('0x5f'))][(_0xa9f7('0x60'))](_0xa9f7('0x61'));return;};exports['validatePasswordHistory']=function(_0x15dce9,_0x4dcc9d,_0x5989c0){var _0x286e35=encryptor['decryptString'](_0x4dcc9d)['split'](',');for(var _0x1a380e=0x0;_0x1a380e<_0x5989c0;_0x1a380e++){if(!_0x286e35[_0x1a380e])break;if(_0x15dce9[_0xa9f7('0x62')]()===_0x286e35[_0x1a380e][_0xa9f7('0x62')]()){var _0x2492df=util[_0xa9f7('0x63')]('The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.',_0x5989c0);if(_0x5989c0===0x1){_0x2492df='The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.';}throw new db[(_0xa9f7('0x5f'))][(_0xa9f7('0x60'))](_0x2492df);}}return;};exports[_0xa9f7('0x64')]=function(_0x551268,_0x1cbde2){var _0x547c27=_0x1cbde2?encryptor[_0xa9f7('0x65')](_0x1cbde2)[_0xa9f7('0x66')](','):[];if(_0x547c27[_0xa9f7('0x67')]===0x5){_0x547c27['splice'](-0x1,0x1);}_0x547c27[_0xa9f7('0x68')](_0x551268);return encryptor['encryptString'](_0x547c27['join'](','));};function signJwt(_0x59e9be){var _0x21aa46=BPromise['promisify'](jwt[_0xa9f7('0x69')],{'context':jwt});var _0x192472=_0x59e9be[_0xa9f7('0x6a')]||config['secrets'][_0xa9f7('0xa')];return new BPromise(function(_0xa8dfc7,_0x119aba){_0x21aa46(_0x59e9be[_0xa9f7('0x6b')],_0x192472,_0x59e9be[_0xa9f7('0x6c')])[_0xa9f7('0x39')](function(_0x404710){_0xa8dfc7(_0x404710);})['catch'](function(_0x23d120){_0x119aba(_0x23d120);});});}function verifyJwt(_0x493ca3,_0x5d1269,_0x6dbccf){var _0x25bf1f=BPromise[_0xa9f7('0x6d')](jwt['verify'],{'context':jwt});var _0x384812=_0x6dbccf||config[_0xa9f7('0x6e')][_0xa9f7('0xa')];return new BPromise(function(_0x1e94d0,_0x5ba50b){_0x25bf1f(_0x493ca3,_0x384812,_0x5d1269)['then'](function(_0x472aff){_0x1e94d0(_0x472aff);})[_0xa9f7('0x32')](function(_0xd01657){_0x5ba50b(_0xd01657);});});}function generateNonce(){return crypto[_0xa9f7('0x6f')](0x10)[_0xa9f7('0x70')](_0xa9f7('0x71'));}function generateIssuedAt(){return Math['floor'](Date[_0xa9f7('0x72')]()/0x3e8)[_0xa9f7('0x70')]();}function createJwt(_0x586959){var _0xb639f8={'payload':{'iat':_0x586959[_0xa9f7('0x5a')],'nonce':_0x586959[_0xa9f7('0x46')]},'options':{'algorithm':_0xa9f7('0x73'),'subject':_0x586959['id']['toString'](),'issuer':hardwareConf[_0xa9f7('0x41')](),'audience':hardwareConf[_0xa9f7('0x41')]()}};return signJwt(_0xb639f8)[_0xa9f7('0x39')](function(_0xd8fa8f){return{'iat':_0x586959[_0xa9f7('0x5a')],'nonce':_0x586959[_0xa9f7('0x46')],'token':_0xd8fa8f};});}
\ No newline at end of file
+var _0xa946=['The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','split','splice','unshift','encryptString','sign','secret','promisify','hex','floor','toString','HS512','../../mysqldb','../../config/environment','../../config/license/util','../encryptor','jsonwebtoken','express-jwt','composable-middleware','basic-auth','crypto','util','moment','secrets','session','role','fullname','name','internal','email','userpic','md5secret','chatPause','mailPause','faxPause','openchannelPause','pauseType','showWebBar','lastLoginAt','lastPauseAt','allowmessenger','passwordResetAt','alias','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarEnableRecording','phoneBarEnableSettings','phoneBarExpires','phoneBarRemoteControl','phoneBarRemoteControlPort','interface','userProfileId','privacyEnabled','settingsEnabled','wssPort','downloadVoiceRecordings','downloadAttachments','isChatInteractionAuthorized','isAuthenticated','use','params','closed','disposition','then','status','unmanaged','Unmanaged.','Forbidden.','catch','headers','startsWith','authorization','Basic','User','find','authenticate','pass','json','Wrong\x20credentials.','user','Bearer','Unknown\x20authorization\x20format','query','getUuid','apikey','sub','Setting','findOne','blockDuration','isEqual','apiKeyNonce','nonce','disabled','Invalid\x20API\x20access\x20key','blocked','add','minutes','User\x20not\x20found.','User\x20object\x20not\x20found.','getLicense','Forbidden','isMiddleware','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','motion.token','/dashboards/general','generateApiKey','apiKeyIat','regenerateApiKey','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','validatePasswordPattern','test','Sequelize','ValidationError','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','validatePasswordHistory','decryptString','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.'];(function(_0x2e6c19,_0x131233){var _0x52885d=function(_0x38f224){while(--_0x38f224){_0x2e6c19['push'](_0x2e6c19['shift']());}};_0x52885d(++_0x131233);}(_0xa946,0xff));var _0x6a94=function(_0x26236f,_0x36916c){_0x26236f=_0x26236f-0x0;var _0x11c59f=_0xa946[_0x26236f];return _0x11c59f;};'use strict';var db=require(_0x6a94('0x0'))['db'];var config=require(_0x6a94('0x1'));var hardwareConf=require('../../config/license/hardware');var licenseUtil=require(_0x6a94('0x2'));var encryptor=require(_0x6a94('0x3'));var _=require('lodash');var jwt=require(_0x6a94('0x4'));var expressJwt=require(_0x6a94('0x5'));var compose=require(_0x6a94('0x6'));var basicAuth=require(_0x6a94('0x7'));var crypto=require(_0x6a94('0x8'));var BPromise=require('bluebird');var util=require(_0x6a94('0x9'));var moment=require(_0x6a94('0xa'));var validateJwt=expressJwt({'secret':config[_0x6a94('0xb')][_0x6a94('0xc')]});var userAttributes=['id',_0x6a94('0xd'),_0x6a94('0xe'),_0x6a94('0xf'),_0x6a94('0x10'),_0x6a94('0x11'),_0x6a94('0x12'),'permissions',_0x6a94('0x13'),'voicePause',_0x6a94('0x14'),_0x6a94('0x15'),_0x6a94('0x16'),'smsPause',_0x6a94('0x17'),_0x6a94('0x18'),_0x6a94('0x19'),_0x6a94('0x1a'),_0x6a94('0x1b'),'crudPermissions',_0x6a94('0x1c'),_0x6a94('0x1d'),_0x6a94('0x1e'),_0x6a94('0x1f'),_0x6a94('0x20'),'phoneBarDnd',_0x6a94('0x21'),'phoneBarEnableDtmfTone',_0x6a94('0x22'),_0x6a94('0x23'),'phoneBarPrefixRequired',_0x6a94('0x24'),_0x6a94('0x25'),'hotdesk',_0x6a94('0x26'),_0x6a94('0x27'),_0x6a94('0x28'),_0x6a94('0x29'),_0x6a94('0x2a'),_0x6a94('0x2b'),'downloadOmnichannelInteractions',_0x6a94('0x2c')];exports[_0x6a94('0x2d')]=function(){return this[_0x6a94('0x2e')](!![])[_0x6a94('0x2f')](function(_0x1fda33,_0x43f723,_0x1774c1){if(_0x1fda33['user']){_0x1774c1();}else{return db['ChatInteraction']['findOne']({'where':{'id':_0x1fda33[_0x6a94('0x30')]['id']},'attributes':['id',_0x6a94('0x31'),_0x6a94('0x32')],'raw':!![]})[_0x6a94('0x33')](function(_0x118133){if(_0x118133&&_0x118133[_0x6a94('0x31')]){return _0x43f723[_0x6a94('0x34')](_0x118133[_0x6a94('0x32')]==='unmanaged'?0x195:0x193)['json']({'message':_0x118133[_0x6a94('0x32')]===_0x6a94('0x35')?_0x6a94('0x36'):_0x6a94('0x37')});}else{_0x1774c1();}})[_0x6a94('0x38')](function(_0x2a1990){_0x1774c1(_0x2a1990);});}});};exports['isAuthenticated']=function isAuthenticated(_0x312d4f){return compose()[_0x6a94('0x2f')](function(_0x46443e,_0x26d5ff,_0x494123){var _0x373547;if(_0x46443e[_0x6a94('0x39')]['authorization']){if(_[_0x6a94('0x3a')](_0x46443e['headers'][_0x6a94('0x3b')],_0x6a94('0x3c'))){var _0xfffc51=basicAuth(_0x46443e);db[_0x6a94('0x3d')][_0x6a94('0x3e')]({'where':{'name':_0xfffc51[_0x6a94('0xf')]}})['then'](function(_0x21c479){if(!_0x21c479||!_0x21c479[_0x6a94('0x3f')](_0xfffc51[_0x6a94('0x40')])){return _0x26d5ff['status'](0x191)[_0x6a94('0x41')]({'message':_0x6a94('0x42')});}_0x46443e[_0x6a94('0x43')]={'id':_0x21c479['id']};_0x494123();})[_0x6a94('0x38')](function(_0x33773f){_0x494123(_0x33773f);});}else if(_[_0x6a94('0x3a')](_0x46443e[_0x6a94('0x39')]['authorization'],_0x6a94('0x44'))){validateJwt(_0x46443e,_0x26d5ff,_0x494123);}else{if(_0x312d4f){_0x494123();}else{return _0x26d5ff[_0x6a94('0x34')](0x193)[_0x6a94('0x41')]({'message':_0x6a94('0x45')});}}}else if(_0x46443e[_0x6a94('0x46')]['apikey']){try{var _0x3bb541={'audience':hardwareConf[_0x6a94('0x47')](),'issuer':hardwareConf[_0x6a94('0x47')]()};verifyJwt(_0x46443e[_0x6a94('0x46')][_0x6a94('0x48')],_0x3bb541)['then'](function(_0x39a464){return db[_0x6a94('0x3d')][_0x6a94('0x3e')]({'where':{'id':_0x39a464[_0x6a94('0x49')]}})[_0x6a94('0x33')](function(_0x345105){_0x373547=_0x345105;return db[_0x6a94('0x4a')][_0x6a94('0x4b')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0x6a94('0x4c')],'raw':!![]});})['then'](function(_0x2a798e){if(!_0x373547||!_[_0x6a94('0x4d')](_0x373547[_0x6a94('0x4e')],_0x39a464[_0x6a94('0x4f')])){return _0x26d5ff[_0x6a94('0x34')](0x191)['json']({'message':'API\x20access\x20key\x20is\x20not\x20valid\x20anymore'});}if(_0x373547[_0x6a94('0x50')]){return _0x26d5ff[_0x6a94('0x34')](0x191)[_0x6a94('0x41')]({'message':_0x6a94('0x51')});}if(_0x373547[_0x6a94('0x52')]){if(_0x2a798e[_0x6a94('0x4c')]>0x0){if(moment(_0x373547['blockedAt'])[_0x6a94('0x53')](_0x2a798e[_0x6a94('0x4c')],_0x6a94('0x54'))>moment()){return _0x26d5ff[_0x6a94('0x34')](0x191)[_0x6a94('0x41')]({'message':_0x6a94('0x51')});}}else{return _0x26d5ff['status'](0x191)['json']({'message':_0x6a94('0x51')});}}_0x46443e[_0x6a94('0x43')]={'id':_0x373547['id']};_0x494123();});})['catch'](function(){return _0x26d5ff[_0x6a94('0x34')](0x191)[_0x6a94('0x41')]({'message':_0x6a94('0x51')});});}catch(_0x18b0d0){_0x494123(_0x18b0d0);}}else if(_0x312d4f){_0x494123();}else{return _0x26d5ff[_0x6a94('0x34')](0x193)[_0x6a94('0x41')]({'message':_0x6a94('0x45')});}})[_0x6a94('0x2f')](function(_0x1f83c4,_0x22a78f,_0x3c09b5){if(_0x1f83c4['user']){db['User'][_0x6a94('0x3e')]({'where':{'id':_0x1f83c4[_0x6a94('0x43')]['id']},'attributes':userAttributes})['then'](function(_0x50bd93){if(!_0x50bd93){return _0x22a78f['status'](0x194)['json']({'message':_0x6a94('0x55')});}_0x1f83c4[_0x6a94('0x43')]=_0x50bd93;_0x3c09b5();})[_0x6a94('0x38')](function(_0x2d2eff){_0x3c09b5(_0x2d2eff);});}else if(_0x312d4f){_0x3c09b5();}else{return _0x22a78f[_0x6a94('0x34')](0x194)[_0x6a94('0x41')]({'message':_0x6a94('0x56')});}});};exports['canUpdate']=function canUpdate(){return compose()[_0x6a94('0x2f')](function(_0x4df98b,_0x2527bb,_0x54e89b){return licenseUtil[_0x6a94('0x57')]()['then'](function(_0xe5792b){if(_0xe5792b['update']){_0x54e89b();}else{return _0x2527bb[_0x6a94('0x34')](0x193)[_0x6a94('0x41')]({'message':_0x6a94('0x58')});}})[_0x6a94('0x38')](function(_0x436c49){_0x54e89b(_0x436c49);});});};exports[_0x6a94('0x59')]=function(_0x3c1601,_0x2621cc,_0xab7ea3){_0x3c1601[_0x6a94('0x59')]=!![];return _0xab7ea3();};exports['signToken']=function signToken(_0x4960d5){return signJwt(_0x4960d5);};exports[_0x6a94('0x5a')]=function(_0x28889d,_0x21cc1a){if(!_0x28889d[_0x6a94('0x43')]){return _0x21cc1a['status'](0x194)['json']({'message':_0x6a94('0x5b')});}var _0x590620={'payload':{'id':_0x28889d['user']['id'],'role':_0x28889d[_0x6a94('0x43')][_0x6a94('0xd')]},'options':{'expiresIn':0x15180}};return signJwt(_0x590620)['then'](function(_0x15e3d1){_0x21cc1a['cookie'](_0x6a94('0x5c'),_0x15e3d1);_0x21cc1a['redirect'](_0x6a94('0x5d'));})[_0x6a94('0x38')](function(_0x43e600){return _0x21cc1a['status'](0x1f4)['send'](_0x43e600);});};exports['retrieveApiKey']=function(_0x50f31f){if(_['isNil'](_0x50f31f[_0x6a94('0x4e')])||_['isNil'](_0x50f31f['apiKeyIat'])){return null;}else{return createJwt(_0x50f31f);}};exports[_0x6a94('0x5e')]=function(_0x5ca6eb){_0x5ca6eb['apiKeyNonce']=generateNonce();_0x5ca6eb[_0x6a94('0x5f')]=generateIssuedAt();return createJwt(_0x5ca6eb);};exports[_0x6a94('0x60')]=function(_0x4611d3,_0x4de0c9){var _0x466659=_0x4611d3[_0x6a94('0x46')][_0x6a94('0x48')];if(_0x466659){var _0x1db664={'nonce':_0x4de0c9[_0x6a94('0x4e')],'iat':_0x4de0c9[_0x6a94('0x5f')],'audience':hardwareConf[_0x6a94('0x47')](),'issuer':hardwareConf['getUuid']()};return verifyJwt(_0x466659,_0x1db664)[_0x6a94('0x33')](function(){return generateApiKey(_0x4de0c9);});}else{throw{'message':_0x6a94('0x61')};}};exports[_0x6a94('0x62')]=function(_0x4e9ded){var _0xd59292=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0xd59292[_0x6a94('0x63')](_0x4e9ded))throw new db[(_0x6a94('0x64'))][(_0x6a94('0x65'))](_0x6a94('0x66'));return;};exports[_0x6a94('0x67')]=function(_0x1a0aef,_0x787152,_0x46c5b0){var _0x2e9060=encryptor[_0x6a94('0x68')](_0x787152)['split'](',');for(var _0x126d56=0x0;_0x126d56<_0x46c5b0;_0x126d56++){if(!_0x2e9060[_0x126d56])break;if(_0x1a0aef[_0x6a94('0x69')]()===_0x2e9060[_0x126d56]['toLowerCase']()){var _0x2fcf03=util[_0x6a94('0x6a')](_0x6a94('0x6b'),_0x46c5b0);if(_0x46c5b0===0x1){_0x2fcf03=_0x6a94('0x6c');}throw new db[(_0x6a94('0x64'))][(_0x6a94('0x65'))](_0x2fcf03);}}return;};exports[_0x6a94('0x6d')]=function(_0x2a318a,_0x32792e){var _0x22a20b=_0x32792e?encryptor[_0x6a94('0x68')](_0x32792e)[_0x6a94('0x6e')](','):[];if(_0x22a20b['length']===0x5){_0x22a20b[_0x6a94('0x6f')](-0x1,0x1);}_0x22a20b[_0x6a94('0x70')](_0x2a318a);return encryptor[_0x6a94('0x71')](_0x22a20b['join'](','));};function signJwt(_0x2b6b27){var _0x539018=BPromise['promisify'](jwt[_0x6a94('0x72')],{'context':jwt});var _0x57f0ca=_0x2b6b27[_0x6a94('0x73')]||config[_0x6a94('0xb')][_0x6a94('0xc')];return new BPromise(function(_0xb80810,_0x26b8c6){_0x539018(_0x2b6b27['payload'],_0x57f0ca,_0x2b6b27['options'])[_0x6a94('0x33')](function(_0x3baad1){_0xb80810(_0x3baad1);})[_0x6a94('0x38')](function(_0x3d2a13){_0x26b8c6(_0x3d2a13);});});}function verifyJwt(_0x162de0,_0x54fd27,_0x3cefa0){var _0xdd8ccb=BPromise[_0x6a94('0x74')](jwt['verify'],{'context':jwt});var _0x16f342=_0x3cefa0||config[_0x6a94('0xb')]['session'];return new BPromise(function(_0x38ca82,_0x3a4973){_0xdd8ccb(_0x162de0,_0x16f342,_0x54fd27)['then'](function(_0xdcf82c){_0x38ca82(_0xdcf82c);})[_0x6a94('0x38')](function(_0x480461){_0x3a4973(_0x480461);});});}function generateNonce(){return crypto['randomBytes'](0x10)['toString'](_0x6a94('0x75'));}function generateIssuedAt(){return Math[_0x6a94('0x76')](Date['now']()/0x3e8)[_0x6a94('0x77')]();}function createJwt(_0x527dbf){var _0x5b7b1a={'payload':{'iat':_0x527dbf[_0x6a94('0x5f')],'nonce':_0x527dbf['apiKeyNonce']},'options':{'algorithm':_0x6a94('0x78'),'subject':_0x527dbf['id'][_0x6a94('0x77')](),'issuer':hardwareConf[_0x6a94('0x47')](),'audience':hardwareConf['getUuid']()}};return signJwt(_0x5b7b1a)[_0x6a94('0x33')](function(_0x4867cd){return{'iat':_0x527dbf['apiKeyIat'],'nonce':_0x527dbf[_0x6a94('0x4e')],'token':_0x4867cd};});}
\ No newline at end of file
index ced0c59..915da63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ae9=['unlink','secret','utf8','base64','crypto','bluebird','lodash','../../config/environment','../../config/logger','app','secrets','session','aes192','encrypt','algorithm','join','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','indexOf','hasOwnProperty','encryptFile','createReadStream','createWriteStream','data','update','binary','write','end','final','close','decryptFile','createDecipher'];(function(_0x2fc012,_0x503e5b){var _0x2891f9=function(_0x295f5e){while(--_0x295f5e){_0x2fc012['push'](_0x2fc012['shift']());}};_0x2891f9(++_0x503e5b);}(_0x8ae9,0xf9));var _0x98ae=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8ae9[_0x3dd15e];return _0x231fd0;};'use strict';var crypto=require(_0x98ae('0x0'));var fs=require('fs');var BPromise=require(_0x98ae('0x1'));var _=require(_0x98ae('0x2'));var config=require(_0x98ae('0x3'));var logger=require(_0x98ae('0x4'))(_0x98ae('0x5'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x98ae('0x6')][_0x98ae('0x7')],'algorithm':'aes-256-ctr'};const fileOptions={'algorithm':_0x98ae('0x8')};if(config[_0x98ae('0x9')]&&config[_0x98ae('0x9')]['algorithm']){var isSupported=isAlgorithmSupported(config[_0x98ae('0x9')][_0x98ae('0xa')]);if(isSupported){fileOptions[_0x98ae('0xa')]=config[_0x98ae('0x9')][_0x98ae('0xa')];}else{var supportedAlgorithms=getSupportedCiphers()[_0x98ae('0xb')](',\x20');logger[_0x98ae('0xc')](config[_0x98ae('0x9')][_0x98ae('0xa')],_0x98ae('0xd'),supportedAlgorithms);}}function isASupportedCipher(_0x35cad2){return AES_SUPPORTED_RX[_0x98ae('0xe')](_0x35cad2);}function getSupportedCiphers(){return crypto[_0x98ae('0xf')]()[_0x98ae('0x10')](isASupportedCipher);}function isAlgorithmSupported(_0xef8cf3){return getSupportedCiphers()[_0x98ae('0x11')](_0xef8cf3)>-0x1;}function combineOptions(_0xce633d){var _0xee8fe8={};for(var _0x5c7d54 in fileOptions){if(fileOptions['hasOwnProperty'](_0x5c7d54)){_0xee8fe8[_0x5c7d54]=fileOptions[_0x5c7d54];}}if(_0xce633d){for(var _0x293955 in _0xce633d){if(_0xce633d[_0x98ae('0x12')](_0x293955)){_0xee8fe8[_0x293955]=_0xce633d[_0x293955];}}}return _0xee8fe8;}exports[_0x98ae('0x13')]=function(_0x3008f8,_0x4bf97d,_0x1a5e1a,_0x36d658){return new BPromise(function(_0x48aac6,_0x9bc6ed){_0x36d658=combineOptions(_0x36d658);var _0x2a1370=new Buffer(_0x1a5e1a);var _0x1ce9f4=fs[_0x98ae('0x14')](_0x3008f8);var _0x2cd9d3=fs[_0x98ae('0x15')](_0x4bf97d);var _0x2f94fc=crypto['createCipher'](_0x36d658[_0x98ae('0xa')],_0x2a1370);_0x1ce9f4['on'](_0x98ae('0x16'),function(_0x4454e4){var _0x424910=new Buffer(_0x2f94fc[_0x98ae('0x17')](_0x4454e4),_0x98ae('0x18'));_0x2cd9d3[_0x98ae('0x19')](_0x424910);});_0x1ce9f4['on'](_0x98ae('0x1a'),function(){try{var _0x3fd20e=new Buffer(_0x2f94fc[_0x98ae('0x1b')](_0x98ae('0x18')),_0x98ae('0x18'));_0x2cd9d3[_0x98ae('0x19')](_0x3fd20e);_0x2cd9d3[_0x98ae('0x1a')]();_0x2cd9d3['on'](_0x98ae('0x1c'),function(){return _0x48aac6(_0x4bf97d);});}catch(_0x28ffbc){fs['unlink'](_0x4bf97d);return _0x9bc6ed(_0x28ffbc);}});});};exports[_0x98ae('0x1d')]=function(_0x1d1495,_0x44acec,_0x513ecc,_0x2c7278){return new BPromise(function(_0x248956,_0x76edb1){_0x2c7278=combineOptions(_0x2c7278);var _0x368073=new Buffer(_0x513ecc);var _0x406243=fs[_0x98ae('0x14')](_0x1d1495);var _0x2c7426=fs[_0x98ae('0x15')](_0x44acec);var _0xeec571=crypto[_0x98ae('0x1e')](_0x2c7278[_0x98ae('0xa')],_0x368073);_0x406243['on'](_0x98ae('0x16'),function(_0x3f0119){var _0x50fc6d=new Buffer(_0xeec571['update'](_0x3f0119),_0x98ae('0x18'));_0x2c7426[_0x98ae('0x19')](_0x50fc6d);});_0x406243['on'](_0x98ae('0x1a'),function(){try{var _0xf76f75=new Buffer(_0xeec571['final'](_0x98ae('0x18')),_0x98ae('0x18'));_0x2c7426[_0x98ae('0x19')](_0xf76f75);_0x2c7426['end']();_0x2c7426['on'](_0x98ae('0x1c'),function(){return _0x248956(_0x44acec);});}catch(_0x3c7b6f){fs[_0x98ae('0x1f')](_0x44acec);return _0x76edb1(_0x3c7b6f);}});});};exports['encryptString']=function(_0x3c646c,_0x5c3583,_0x533c15){var _0x5b4e7e=_0x533c15||stringOptions[_0x98ae('0xa')];var _0x411b15=_0x5c3583||stringOptions[_0x98ae('0x20')];var _0x427b6b=crypto['createCipher'](_0x5b4e7e,_0x411b15);var _0x3b2d71=_0x427b6b[_0x98ae('0x17')](_0x3c646c,_0x98ae('0x21'),'base64');_0x3b2d71+=_0x427b6b[_0x98ae('0x1b')](_0x98ae('0x22'));return _0x3b2d71;};exports['decryptString']=function(_0x154d13,_0x11d7c1,_0x4f8579){var _0x42683b=_0x4f8579||stringOptions[_0x98ae('0xa')];var _0x221302=_0x11d7c1||stringOptions[_0x98ae('0x20')];var _0x18227e=crypto['createDecipher'](_0x42683b,_0x221302);var _0xad2e45=_0x18227e[_0x98ae('0x17')](_0x154d13,_0x98ae('0x22'),_0x98ae('0x21'));_0xad2e45+=_0x18227e[_0x98ae('0x1b')](_0x98ae('0x21'));return _0xad2e45;};
\ No newline at end of file
+var _0xa3fc=['join','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','hasOwnProperty','createWriteStream','update','binary','write','end','final','close','unlink','decryptFile','createReadStream','createDecipher','data','encryptString','utf8','base64','decryptString','secret','crypto','lodash','../../config/logger','app','session','aes-256-ctr','aes192','encrypt','algorithm'];(function(_0x1ada77,_0x4949dc){var _0x4dd957=function(_0x2772e8){while(--_0x2772e8){_0x1ada77['push'](_0x1ada77['shift']());}};_0x4dd957(++_0x4949dc);}(_0xa3fc,0xff));var _0xca3f=function(_0x5a32bb,_0x2d24ca){_0x5a32bb=_0x5a32bb-0x0;var _0x594bce=_0xa3fc[_0x5a32bb];return _0x594bce;};'use strict';var crypto=require(_0xca3f('0x0'));var fs=require('fs');var BPromise=require('bluebird');var _=require(_0xca3f('0x1'));var config=require('../../config/environment');var logger=require(_0xca3f('0x2'))(_0xca3f('0x3'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config['secrets'][_0xca3f('0x4')],'algorithm':_0xca3f('0x5')};const fileOptions={'algorithm':_0xca3f('0x6')};if(config[_0xca3f('0x7')]&&config[_0xca3f('0x7')][_0xca3f('0x8')]){var isSupported=isAlgorithmSupported(config[_0xca3f('0x7')][_0xca3f('0x8')]);if(isSupported){fileOptions['algorithm']=config[_0xca3f('0x7')][_0xca3f('0x8')];}else{var supportedAlgorithms=getSupportedCiphers()[_0xca3f('0x9')](',\x20');logger[_0xca3f('0xa')](config['encrypt'][_0xca3f('0x8')],_0xca3f('0xb'),supportedAlgorithms);}}function isASupportedCipher(_0x864fea){return AES_SUPPORTED_RX[_0xca3f('0xc')](_0x864fea);}function getSupportedCiphers(){return crypto[_0xca3f('0xd')]()[_0xca3f('0xe')](isASupportedCipher);}function isAlgorithmSupported(_0x513991){return getSupportedCiphers()['indexOf'](_0x513991)>-0x1;}function combineOptions(_0x20bdeb){var _0x5cab08={};for(var _0x392c23 in fileOptions){if(fileOptions[_0xca3f('0xf')](_0x392c23)){_0x5cab08[_0x392c23]=fileOptions[_0x392c23];}}if(_0x20bdeb){for(var _0x1cae21 in _0x20bdeb){if(_0x20bdeb[_0xca3f('0xf')](_0x1cae21)){_0x5cab08[_0x1cae21]=_0x20bdeb[_0x1cae21];}}}return _0x5cab08;}exports['encryptFile']=function(_0x1acea3,_0x11f01d,_0x4f1639,_0x189f1c){return new BPromise(function(_0xdd8b44,_0x3dcb64){_0x189f1c=combineOptions(_0x189f1c);var _0x316480=new Buffer(_0x4f1639);var _0x92501a=fs['createReadStream'](_0x1acea3);var _0x4b2b88=fs[_0xca3f('0x10')](_0x11f01d);var _0x2ad5d=crypto['createCipher'](_0x189f1c['algorithm'],_0x316480);_0x92501a['on']('data',function(_0x12488d){var _0x48bdde=new Buffer(_0x2ad5d[_0xca3f('0x11')](_0x12488d),_0xca3f('0x12'));_0x4b2b88[_0xca3f('0x13')](_0x48bdde);});_0x92501a['on'](_0xca3f('0x14'),function(){try{var _0x44773c=new Buffer(_0x2ad5d[_0xca3f('0x15')](_0xca3f('0x12')),_0xca3f('0x12'));_0x4b2b88[_0xca3f('0x13')](_0x44773c);_0x4b2b88[_0xca3f('0x14')]();_0x4b2b88['on'](_0xca3f('0x16'),function(){return _0xdd8b44(_0x11f01d);});}catch(_0x5012e1){fs[_0xca3f('0x17')](_0x11f01d);return _0x3dcb64(_0x5012e1);}});});};exports[_0xca3f('0x18')]=function(_0x641994,_0x36f6e7,_0x5981ba,_0x992289){return new BPromise(function(_0x3ad4d0,_0xc04470){_0x992289=combineOptions(_0x992289);var _0x318a64=new Buffer(_0x5981ba);var _0x2cd10f=fs[_0xca3f('0x19')](_0x641994);var _0x3d61af=fs[_0xca3f('0x10')](_0x36f6e7);var _0x24a664=crypto[_0xca3f('0x1a')](_0x992289['algorithm'],_0x318a64);_0x2cd10f['on'](_0xca3f('0x1b'),function(_0x2d89a3){var _0x132c77=new Buffer(_0x24a664[_0xca3f('0x11')](_0x2d89a3),_0xca3f('0x12'));_0x3d61af[_0xca3f('0x13')](_0x132c77);});_0x2cd10f['on'](_0xca3f('0x14'),function(){try{var _0x338a76=new Buffer(_0x24a664[_0xca3f('0x15')]('binary'),_0xca3f('0x12'));_0x3d61af[_0xca3f('0x13')](_0x338a76);_0x3d61af[_0xca3f('0x14')]();_0x3d61af['on'](_0xca3f('0x16'),function(){return _0x3ad4d0(_0x36f6e7);});}catch(_0x3f1937){fs[_0xca3f('0x17')](_0x36f6e7);return _0xc04470(_0x3f1937);}});});};exports[_0xca3f('0x1c')]=function(_0x5848f9,_0x3dd574,_0x3cff3a){var _0x17bf1f=_0x3cff3a||stringOptions[_0xca3f('0x8')];var _0x5a7c8d=_0x3dd574||stringOptions['secret'];var _0x124d90=crypto['createCipher'](_0x17bf1f,_0x5a7c8d);var _0x5d9049=_0x124d90[_0xca3f('0x11')](_0x5848f9,_0xca3f('0x1d'),'base64');_0x5d9049+=_0x124d90[_0xca3f('0x15')](_0xca3f('0x1e'));return _0x5d9049;};exports[_0xca3f('0x1f')]=function(_0x36c216,_0x30532e,_0x506c2e){var _0x4d6113=_0x506c2e||stringOptions[_0xca3f('0x8')];var _0xd0825b=_0x30532e||stringOptions[_0xca3f('0x20')];var _0x17e857=crypto[_0xca3f('0x1a')](_0x4d6113,_0xd0825b);var _0x5829db=_0x17e857[_0xca3f('0x11')](_0x36c216,_0xca3f('0x1e'),_0xca3f('0x1d'));_0x5829db+=_0x17e857[_0xca3f('0x15')](_0xca3f('0x1d'));return _0x5829db;};
\ No newline at end of file
index 0413e08..8d1178f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2351=['find','split','splitSizeCsv','then','sequelize','query','QueryTypes','SELECT','num','Empty','length','range','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','.csv','existsSync','join','mkdirSync','each','csv','writeFileSync','%s.%s','zip','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','Failed','finally','exit','util','path','lodash','to-csv','bluebird','zip-dir','rimraf','dbH','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','update','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting'];(function(_0x3c487b,_0x44c5e2){var _0x1d65f6=function(_0x135e6d){while(--_0x135e6d){_0x3c487b['push'](_0x3c487b['shift']());}};_0x1d65f6(++_0x44c5e2);}(_0x2351,0xed));var _0x1235=function(_0x1cc85f,_0x540c9c){_0x1cc85f=_0x1cc85f-0x0;var _0x3f0a49=_0x2351[_0x1cc85f];return _0x3f0a49;};'use strict';var util=require(_0x1235('0x0'));var path=require(_0x1235('0x1'));var _=require(_0x1235('0x2'));var csv=require(_0x1235('0x3'));var fs=require('fs');var BPromise=require(_0x1235('0x4'));var zipdir=require(_0x1235('0x5'));var rimraf=require(_0x1235('0x6'));var db=require('../../mysqldb')['db'];var dbH=require('../../mysqldb')[_0x1235('0x7')];var logger=require(_0x1235('0x8'))(_0x1235('0x9'));var EXTRACTED_REPORT_ID=Number(process[_0x1235('0xa')][0x2]);var QUERY=process[_0x1235('0xa')][0x3];var PATH=process[_0x1235('0xa')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x33518b,_0x46f262){var _0x182bd={'status':_0x33518b};var _0x3c4a9a={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x46f262){_0x182bd[_0x1235('0xb')]=_0x46f262;}return db[_0x1235('0xc')][_0x1235('0xd')](_0x182bd,_0x3c4a9a);}function main(){var _0x452af3=0x1388;var _0x3186ce;logger['info'](util[_0x1235('0xe')](_0x1235('0xf'),EXTRACTED_REPORT_ID,_0x1235('0x10')));return db[_0x1235('0x11')][_0x1235('0x12')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x1235('0x13'),_0x1235('0x14')]})[_0x1235('0x15')](function(_0x590a8c){if(_0x590a8c){_0x3186ce=_0x590a8c;_0x452af3=_0x3186ce[_0x1235('0x14')]||0x1388;}})[_0x1235('0x15')](function(){return dbH[_0x1235('0x16')][_0x1235('0x17')](util[_0x1235('0xe')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x1235('0x16')][_0x1235('0x18')][_0x1235('0x19')]});})[_0x1235('0x15')](function(_0x36659a){if(!_0x36659a[0x0][_0x1235('0x1a')]){return analyticExtractedReport(_0x1235('0x1b'));}var _0x11e197=[];var _0x27c1b9=0x0;if(_0x3186ce[_0x1235('0x13')]){if(_0x36659a&&_0x36659a[_0x1235('0x1c')]){var _0x1e8bc9=_[_0x1235('0x1d')](_0x36659a[0x0][_0x1235('0x1a')]/_0x452af3);var _0x24c48d=Number['isInteger'](_0x36659a[0x0][_0x1235('0x1a')]/_0x452af3)?_0x36659a[0x0][_0x1235('0x1a')]%_0x452af3:0x0;_0x1e8bc9[_0x1235('0x1e')](function(_0x3374b0){if(_0x3374b0>0x0){_0x27c1b9+=_0x452af3;}_0x11e197[_0x1235('0x1f')](dbH[_0x1235('0x16')][_0x1235('0x17')](util['format']('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x452af3,_0x27c1b9),{'type':dbH['sequelize'][_0x1235('0x18')][_0x1235('0x19')]}));});if(_0x24c48d>0x0){_0x27c1b9+=_0x452af3;_0x11e197[_0x1235('0x1f')](dbH[_0x1235('0x16')][_0x1235('0x17')](util[_0x1235('0xe')](_0x1235('0x20'),QUERY,_0x24c48d,_0x27c1b9),{'type':dbH[_0x1235('0x16')]['QueryTypes']['SELECT']}));}}}else{_0x11e197[_0x1235('0x1f')](dbH[_0x1235('0x16')][_0x1235('0x17')](QUERY,{'type':dbH[_0x1235('0x16')][_0x1235('0x18')][_0x1235('0x19')]}));}var _0x270faf=path[_0x1235('0x21')](PATH);var _0x4bbb2f=path['basename'](PATH,_0x1235('0x22'));var _0x15b1fc=_0x3186ce['split']&&_0x11e197['length']>0x1;var _0x3198d4=[];if(!fs[_0x1235('0x23')](path[_0x1235('0x24')](_0x270faf,_0x4bbb2f))&&_0x15b1fc){fs[_0x1235('0x25')](path[_0x1235('0x24')](_0x270faf,_0x4bbb2f));}return BPromise[_0x1235('0x26')](_0x11e197,function(_0x526aa6){_0x3198d4[_0x1235('0x1f')](_0x526aa6);})[_0x1235('0x15')](function(){for(var _0x321d5f=0x0;_0x321d5f<_0x3198d4[_0x1235('0x1c')];_0x321d5f+=0x1){var _0x73912d;var _0x5004d1=_0x3198d4[_0x321d5f];if(_0x15b1fc){_0x73912d=path[_0x1235('0x24')](_0x270faf,_0x4bbb2f,util['format']('%s%d.%s',_0x4bbb2f,_0x321d5f,_0x1235('0x27')));}else{_0x73912d=path[_0x1235('0x24')](_0x270faf,util[_0x1235('0xe')]('%s.%s',_0x4bbb2f,_0x1235('0x27')));}fs[_0x1235('0x28')](_0x73912d,csv(_0x5004d1));}})[_0x1235('0x15')](function(){if(_0x15b1fc){return new Promise(function(_0x2e539b){zipdir(path[_0x1235('0x24')](_0x270faf,_0x4bbb2f),{'saveTo':path[_0x1235('0x24')](_0x270faf,util['format'](_0x1235('0x29'),_0x4bbb2f,_0x1235('0x2a')))},function(_0xd78021,_0xcc0b45){rimraf(path[_0x1235('0x24')](_0x270faf,_0x4bbb2f),function(){});_0x2e539b(_0x1235('0x2b'));});});}})[_0x1235('0x15')](function(){logger[_0x1235('0x2c')](util[_0x1235('0xe')](_0x1235('0x2d'),EXTRACTED_REPORT_ID,_0x1235('0x10')));return analyticExtractedReport('Completed',_0x15b1fc?util[_0x1235('0xe')]('%s.%s',_0x4bbb2f,_0x15b1fc?_0x1235('0x2a'):_0x1235('0x27')):null);});})[_0x1235('0x2e')](function(_0x471d1a){logger[_0x1235('0x2c')](util[_0x1235('0xe')](_0x1235('0x2f'),EXTRACTED_REPORT_ID,_0x1235('0x10')),util['inspect'](_0x471d1a,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x1235('0x30'));})[_0x1235('0x31')](function(){process[_0x1235('0x32')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x4227=['analytics','argv','savename','AnalyticExtractedReport','update','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','find','splitSizeCsv','then','query','QueryTypes','Empty','length','split','num','push','%s\x20limit\x20%d\x20OFFSET\x20%d','sequelize','dirname','basename','.csv','existsSync','mkdirSync','join','each','%s%d.%s','csv','%s.%s','writeFileSync','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','zip','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','Failed','finally','exit','util','to-csv','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger'];(function(_0x512f6f,_0x1818c1){var _0x33cf5c=function(_0x3acb84){while(--_0x3acb84){_0x512f6f['push'](_0x512f6f['shift']());}};_0x33cf5c(++_0x1818c1);}(_0x4227,0x89));var _0x7422=function(_0x412fce,_0x2de4d5){_0x412fce=_0x412fce-0x0;var _0x4c75bb=_0x4227[_0x412fce];return _0x4c75bb;};'use strict';var util=require(_0x7422('0x0'));var path=require('path');var _=require('lodash');var csv=require(_0x7422('0x1'));var fs=require('fs');var BPromise=require('bluebird');var zipdir=require(_0x7422('0x2'));var rimraf=require(_0x7422('0x3'));var db=require(_0x7422('0x4'))['db'];var dbH=require('../../mysqldb')[_0x7422('0x5')];var logger=require(_0x7422('0x6'))(_0x7422('0x7'));var EXTRACTED_REPORT_ID=Number(process[_0x7422('0x8')][0x2]);var QUERY=process[_0x7422('0x8')][0x3];var PATH=process[_0x7422('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0xe99299,_0x45ca1a){var _0x12965e={'status':_0xe99299};var _0x599d78={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x45ca1a){_0x12965e[_0x7422('0x9')]=_0x45ca1a;}return db[_0x7422('0xa')][_0x7422('0xb')](_0x12965e,_0x599d78);}function main(){var _0x511340=0x1388;var _0x1603ee;logger['info'](util[_0x7422('0xc')](_0x7422('0xd'),EXTRACTED_REPORT_ID,_0x7422('0xe')));return db[_0x7422('0xf')][_0x7422('0x10')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x7422('0x11')]})[_0x7422('0x12')](function(_0x575c47){if(_0x575c47){_0x1603ee=_0x575c47;_0x511340=_0x1603ee[_0x7422('0x11')]||0x1388;}})[_0x7422('0x12')](function(){return dbH['sequelize'][_0x7422('0x13')](util[_0x7422('0xc')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH['sequelize'][_0x7422('0x14')]['SELECT']});})[_0x7422('0x12')](function(_0x788829){if(!_0x788829[0x0]['num']){return analyticExtractedReport(_0x7422('0x15'));}var _0x39c31c=[];var _0x31c3ec=0x0;var _0x1d1ac3=!![];if(_0x788829&&_0x788829[_0x7422('0x16')]){var _0x25401d=_0x788829[0x0]['num']%(_0x31c3ec+_0x511340);if(_0x1603ee[_0x7422('0x17')]){for(;_0x1d1ac3;_0x31c3ec+=_0x511340,_0x25401d=_0x788829[0x0][_0x7422('0x18')]%(_0x31c3ec+_0x511340)){if(_0x25401d==0x0||_0x25401d==_0x788829[0x0][_0x7422('0x18')]){_0x1d1ac3=![];}_0x39c31c[_0x7422('0x19')](dbH['sequelize'][_0x7422('0x13')](util['format'](_0x7422('0x1a'),QUERY,_0x511340,_0x31c3ec),{'type':dbH[_0x7422('0x1b')][_0x7422('0x14')]['SELECT']}));}}else{_0x39c31c[_0x7422('0x19')](dbH[_0x7422('0x1b')][_0x7422('0x13')](QUERY,{'type':dbH[_0x7422('0x1b')]['QueryTypes']['SELECT']}));}}var _0x2fedd2=path[_0x7422('0x1c')](PATH);var _0x20c1e3=path[_0x7422('0x1d')](PATH,_0x7422('0x1e'));var _0x35e2b0=_0x1603ee[_0x7422('0x17')]&&_0x39c31c['length']>0x1;var _0x24ce62=[];if(!fs[_0x7422('0x1f')](path['join'](_0x2fedd2,_0x20c1e3))&&_0x35e2b0){fs[_0x7422('0x20')](path[_0x7422('0x21')](_0x2fedd2,_0x20c1e3));}return BPromise[_0x7422('0x22')](_0x39c31c,function(_0x3eeb9c){_0x24ce62['push'](_0x3eeb9c);})[_0x7422('0x12')](function(){for(var _0x2eed9f=0x0;_0x2eed9f<_0x24ce62[_0x7422('0x16')];_0x2eed9f+=0x1){var _0x2dd10f;var _0x3438d1=_0x24ce62[_0x2eed9f];if(_0x35e2b0){_0x2dd10f=path['join'](_0x2fedd2,_0x20c1e3,util[_0x7422('0xc')](_0x7422('0x23'),_0x20c1e3,_0x2eed9f,_0x7422('0x24')));}else{_0x2dd10f=path[_0x7422('0x21')](_0x2fedd2,util['format'](_0x7422('0x25'),_0x20c1e3,_0x7422('0x24')));}fs[_0x7422('0x26')](_0x2dd10f,csv(_0x3438d1));}})[_0x7422('0x12')](function(){if(_0x35e2b0){zipdir(path['join'](_0x2fedd2,_0x20c1e3),{'saveTo':path[_0x7422('0x21')](_0x2fedd2,util[_0x7422('0xc')]('%s.%s',_0x20c1e3,'zip'))},function(_0x2baac6,_0x2fb125){});rimraf(path['join'](_0x2fedd2,_0x20c1e3),function(){});}})[_0x7422('0x12')](function(){logger[_0x7422('0x27')](util[_0x7422('0xc')](_0x7422('0x28'),EXTRACTED_REPORT_ID,_0x7422('0xe')));return analyticExtractedReport(_0x7422('0x29'),_0x35e2b0?util[_0x7422('0xc')](_0x7422('0x25'),_0x20c1e3,_0x35e2b0?_0x7422('0x2a'):_0x7422('0x24')):null);});})[_0x7422('0x2b')](function(_0x47e57b){logger[_0x7422('0x27')](util[_0x7422('0xc')](_0x7422('0x2c'),EXTRACTED_REPORT_ID,_0x7422('0xe')),util['inspect'](_0x47e57b,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x7422('0x2d'));})[_0x7422('0x2e')](function(){process[_0x7422('0x2f')](EXIT_CODE);});}main();
\ No newline at end of file
index 32ae9b0..2abd525 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbc6=['footer','black','right','Empty','Setting','find','then','splitSizePdf','range','num','isInteger','forEach','sequelize','query','QueryTypes','SELECT','.pdf','split','mkdirSync','join','each','%s%d.%s','pdf','%s.%s','all','zip','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','PDF','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','channel','interactionId','YYYY-MM-DD','Arial','center','createWriteStream','finish','error','end','createPdfFromHTML','createPdfKitDocument','catch','lodash','util','path','moment','html-to-pdfmake','zip-dir','rimraf','jsdom','JSDOM','window','bluebird','../../mysqldb','../../config/logger','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','update','map','tableHeader','pick','toString','value','fill','length','auto','body','push','chunk','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','format','endDate','pageBreak','before','landscape','\x20/\x20'];(function(_0x100af9,_0x262716){var _0x2b9160=function(_0x2b74c3){while(--_0x2b74c3){_0x100af9['push'](_0x100af9['shift']());}};_0x2b9160(++_0x262716);}(_0xbbc6,0x19c));var _0x6bbc=function(_0x2fbb9d,_0x505f83){_0x2fbb9d=_0x2fbb9d-0x0;var _0x5bf8ee=_0xbbc6[_0x2fbb9d];return _0x5bf8ee;};'use strict';var _=require(_0x6bbc('0x0'));var fs=require('fs');var util=require(_0x6bbc('0x1'));var path=require(_0x6bbc('0x2'));var moment=require(_0x6bbc('0x3'));var htmlToPdfmake=require(_0x6bbc('0x4'));var PdfPrinter=require('pdfmake/src/printer');var zipdir=require(_0x6bbc('0x5'));var rimraf=require(_0x6bbc('0x6'));var JSDOM=require(_0x6bbc('0x7'))[_0x6bbc('0x8')];var window=new JSDOM('')[_0x6bbc('0x9')];var BPromise=require(_0x6bbc('0xa'));var db=require(_0x6bbc('0xb'))['db'];var dbH=require('../../mysqldb')['dbH'];var logger=require(_0x6bbc('0xc'))('analytics');var EXTRACTED_REPORT_ID=Number(process[_0x6bbc('0xd')][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0x6bbc('0xd')][0x4];var NAME=process[_0x6bbc('0xd')][0x5];var FORMAT=_0x6bbc('0xe');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x574d5a,_0x4b873a){var _0x1420b8={'status':_0x574d5a};var _0x564b51={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x4b873a){_0x1420b8[_0x6bbc('0xf')]=_0x4b873a;}return db[_0x6bbc('0x10')][_0x6bbc('0x11')](_0x1420b8,_0x564b51);}function getHeaders(_0x4ab41e){return _[_0x6bbc('0x12')](_0x4ab41e,function(_0x10c4f6){return{'text':_0x10c4f6,'style':_0x6bbc('0x13')};});}function getRows(_0x23ab12,_0x35e43a){return _[_0x6bbc('0x12')](_0x35e43a,function(_0x1269d0){return _(_0x1269d0)[_0x6bbc('0x14')](_0x23ab12)[_0x6bbc('0x12')](function(_0x2640ff){return _0x2640ff?_[_0x6bbc('0x15')](_0x2640ff):'';})[_0x6bbc('0x16')]();});}function createTable(_0x4f3272,_0x47ecad){var _0x101885={'widths':_[_0x6bbc('0x17')](Array(_0x4f3272[_0x6bbc('0x18')]),0x91),'heights':function(_0x2fde2c){return _0x2fde2c===0x0?_0x6bbc('0x19'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x14334d=getHeaders(_0x4f3272);_0x101885[_0x6bbc('0x1a')][_0x6bbc('0x1b')](_0x14334d);var _0x37eeb9=getRows(_0x4f3272,_0x47ecad);_0x101885[_0x6bbc('0x1a')]=_0x101885[_0x6bbc('0x1a')]['concat'](_0x37eeb9);return _0x101885;}function createTables(_0x58c5dd){var _0x21b183=[];var _0x366680=_[_0x6bbc('0x1c')](Object['keys'](_0x58c5dd[0x0]),0x5);_0x366680['forEach'](function(_0x1624c4){_0x21b183[_0x6bbc('0x1b')](createTable(_0x1624c4,_0x58c5dd));});return _0x21b183;}function getPDFDocDefinition(_0x440211){var _0x1c3231=util['format'](_0x6bbc('0x1d'),NAME,EXTRACTED_REPORT[_0x6bbc('0x1e')],moment(EXTRACTED_REPORT[_0x6bbc('0x1f')])[_0x6bbc('0x20')](FORMAT),moment(EXTRACTED_REPORT[_0x6bbc('0x21')])[_0x6bbc('0x20')](FORMAT));var _0x359dd8=[];for(var _0x128d4b=0x0;_0x128d4b<_0x440211[_0x6bbc('0x18')];_0x128d4b++){var _0x1aaf6d=[];if(_0x128d4b===0x0){_0x1aaf6d[_0x6bbc('0x1b')]({'text':_0x1c3231,'style':'header'});}var _0x24b75f={'table':_0x440211[_0x128d4b]};if(_0x128d4b>0x0){_0x24b75f[_0x6bbc('0x22')]=_0x6bbc('0x23');_0x24b75f['margin']=[0x0,0x46,0x0,0x0];}_0x1aaf6d[_0x6bbc('0x1b')](_0x24b75f);_0x359dd8[_0x6bbc('0x1b')](_0x1aaf6d);}return{'pageSize':'A4','pageOrientation':_0x6bbc('0x24'),'content':_0x359dd8,'footer':function(_0x4c3d55,_0x3fdfc9){return{'text':_0x4c3d55[_0x6bbc('0x15')]()+_0x6bbc('0x25')+_0x3fdfc9,'style':_0x6bbc('0x26')};},'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x6bbc('0x27')},'footer':{'alignment':_0x6bbc('0x28'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x5a793c){var _0x226441=0x1388;var _0x45352c;if(!_0x5a793c[0x0]['num']){return analyticExtractedReport(_0x6bbc('0x29'));}return db[_0x6bbc('0x2a')][_0x6bbc('0x2b')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split','splitSizePdf']})[_0x6bbc('0x2c')](function(_0x3e84df){if(_0x3e84df){_0x45352c=_0x3e84df;_0x226441=_0x45352c[_0x6bbc('0x2d')]||0x3e8;}})['then'](function(){var _0x1ae9d3=[];var _0x28ff13=0x0;if(_0x45352c['split']){if(_0x5a793c&&_0x5a793c[_0x6bbc('0x18')]){var _0x2beae7=_[_0x6bbc('0x2e')](_0x5a793c[0x0][_0x6bbc('0x2f')]/_0x226441);var _0x2f8b81=Number[_0x6bbc('0x30')](_0x5a793c[0x0][_0x6bbc('0x2f')]/_0x226441)?_0x5a793c[0x0]['num']%_0x226441:0x0;_0x2beae7[_0x6bbc('0x31')](function(_0x13b6ab){if(_0x13b6ab>0x0){_0x28ff13+=_0x226441;}_0x1ae9d3[_0x6bbc('0x1b')](dbH[_0x6bbc('0x32')][_0x6bbc('0x33')](util['format']('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x226441,_0x28ff13),{'type':dbH[_0x6bbc('0x32')][_0x6bbc('0x34')][_0x6bbc('0x35')]}));});if(_0x2f8b81>0x0){_0x28ff13+=_0x226441;_0x1ae9d3['push'](dbH[_0x6bbc('0x32')][_0x6bbc('0x33')](util[_0x6bbc('0x20')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x2f8b81,_0x28ff13),{'type':dbH[_0x6bbc('0x32')][_0x6bbc('0x34')][_0x6bbc('0x35')]}));}}}else{_0x1ae9d3[_0x6bbc('0x1b')](dbH[_0x6bbc('0x32')][_0x6bbc('0x33')](QUERY,{'type':dbH[_0x6bbc('0x32')][_0x6bbc('0x34')][_0x6bbc('0x35')]}));}var _0x5c24b4=path['dirname'](PATH);var _0x2310c9=path['basename'](PATH,_0x6bbc('0x36'));var _0x61f9c1=_0x45352c[_0x6bbc('0x37')]&&_0x1ae9d3['length']>0x1;var _0x374c93=[];if(!fs['existsSync'](path['join'](_0x5c24b4,_0x2310c9))&&_0x61f9c1){fs[_0x6bbc('0x38')](path[_0x6bbc('0x39')](_0x5c24b4,_0x2310c9));}return BPromise[_0x6bbc('0x3a')](_0x1ae9d3,function(_0x129f22){_0x374c93['push'](_0x129f22);})[_0x6bbc('0x2c')](function(){var _0xf674f9=[];for(var _0x447225=0x0;_0x447225<_0x374c93[_0x6bbc('0x18')];_0x447225+=0x1){var _0x1ae82f=_0x374c93[_0x447225];var _0x49875b=createTables(_['flatten'](_0x1ae82f));var _0x3e9057;var _0x503868=getPDFDocDefinition(_0x49875b);var _0x17dd2f=getPDFPrinter();var _0x543643=_0x17dd2f['createPdfKitDocument'](_0x503868);if(_0x61f9c1){_0x3e9057=path[_0x6bbc('0x39')](_0x5c24b4,_0x2310c9,util[_0x6bbc('0x20')](_0x6bbc('0x3b'),_0x2310c9,_0x447225,_0x6bbc('0x3c')));}else{_0x3e9057=path['join'](_0x5c24b4,util[_0x6bbc('0x20')](_0x6bbc('0x3d'),_0x2310c9,_0x6bbc('0x3c')));}_0xf674f9[_0x6bbc('0x1b')](writePDFDocument(_0x543643,_0x3e9057));}return Promise[_0x6bbc('0x3e')](_0xf674f9);})['then'](function(){if(_0x61f9c1){return new Promise(function(_0x20aec7){zipdir(path[_0x6bbc('0x39')](_0x5c24b4,_0x2310c9),{'saveTo':path[_0x6bbc('0x39')](_0x5c24b4,util[_0x6bbc('0x20')](_0x6bbc('0x3d'),_0x2310c9,_0x6bbc('0x3f')))},function(){rimraf(path[_0x6bbc('0x39')](_0x5c24b4,_0x2310c9),function(){});_0x20aec7(_0x6bbc('0x40'));});});}})[_0x6bbc('0x2c')](function(){if(!_0x61f9c1)return;rimraf(path[_0x6bbc('0x39')](_0x5c24b4,_0x2310c9),function(){});})[_0x6bbc('0x2c')](function(){logger[_0x6bbc('0x41')](util[_0x6bbc('0x20')](_0x6bbc('0x42'),EXTRACTED_REPORT_ID,'PDF'));return analyticExtractedReport(_0x6bbc('0x43'),_0x61f9c1?util[_0x6bbc('0x20')](_0x6bbc('0x3d'),_0x2310c9,_0x61f9c1?'zip':'pdf'):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x6bbc('0x41')](util[_0x6bbc('0x20')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x6bbc('0x44')));return db[_0x6bbc('0x10')]['findOne']({'where':{'id':EXTRACTED_REPORT_ID}})[_0x6bbc('0x2c')](function(_0x304117){EXTRACTED_REPORT=_0x304117;return dbH[_0x6bbc('0x32')][_0x6bbc('0x33')](util[_0x6bbc('0x20')](_0x6bbc('0x45'),QUERY),{'type':dbH[_0x6bbc('0x32')][_0x6bbc('0x34')][_0x6bbc('0x35')]});})[_0x6bbc('0x2c')](extractReport)['catch'](function(_0x16e5ed){logger[_0x6bbc('0x41')](util[_0x6bbc('0x20')](_0x6bbc('0x46'),EXTRACTED_REPORT_ID,_0x6bbc('0x44')),util[_0x6bbc('0x47')](_0x16e5ed,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x6bbc('0x48'));})['finally'](function(){process[_0x6bbc('0x49')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x5cf0d7=new PdfPrinter({'Arial':{'normal':__dirname+_0x6bbc('0x4a'),'bold':__dirname+_0x6bbc('0x4b'),'italics':__dirname+_0x6bbc('0x4c'),'bolditalics':__dirname+_0x6bbc('0x4d')}});return _0x5cf0d7;}function getPDFDocDefinitionFromHTML(_0x449b53,_0x3f9eb6){var _0x1c18a1=util[_0x6bbc('0x20')]('%s\x20#%d',_0x3f9eb6[_0x6bbc('0x4e')],_0x3f9eb6[_0x6bbc('0x4f')]);var _0x591939=moment()[_0x6bbc('0x20')](_0x6bbc('0x50'))[_0x6bbc('0x15')]();var _0xc4005=htmlToPdfmake(_0x449b53,{'window':window,'tableAutoSize':!![]});return{'content':[_0xc4005],'defaultStyle':{'font':_0x6bbc('0x51')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x6bbc('0x52'),'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':_0x6bbc('0x52')}},'header':function(){return[{'text':'Interaction\x20Transcript','style':'header'}];},'footer':function(_0x1d0ac5,_0x57bc96){return[{'text':util[_0x6bbc('0x20')]('\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s',_0x1c18a1,_0x1d0ac5,_0x57bc96,_0x591939),'style':_0x6bbc('0x26')}];}};}function writePDFDocument(_0x585398,_0x10b10b){return new Promise(function(_0x5c8d77,_0x213f5d){var _0x4fbf91=_0x585398['pipe'](fs[_0x6bbc('0x53')](_0x10b10b));_0x4fbf91['on'](_0x6bbc('0x54'),function(){_0x5c8d77(_0x6bbc('0x54'));});_0x4fbf91['on'](_0x6bbc('0x55'),function(_0x45b174){_0x213f5d(_0x45b174);});_0x585398[_0x6bbc('0x56')]();});}exports[_0x6bbc('0x57')]=function(_0x1b6234,_0x3ab6e3){var _0x3310c7=getPDFPrinter();var _0x3a733f=getPDFDocDefinitionFromHTML(_0x1b6234,_0x3ab6e3);var _0x44af6b=_0x3310c7[_0x6bbc('0x58')](_0x3a733f);return writePDFDocument(_0x44af6b,_0x3ab6e3[_0x6bbc('0x2')])[_0x6bbc('0x59')](function(_0x33d900){throw _0x33d900;});};
\ No newline at end of file
+var _0xd743=['JSDOM','window','../../mysqldb','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','update','map','tableHeader','toString','length','auto','body','chunk','keys','push','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','format','header','before','landscape','\x20/\x20','footer','Arial','right','num','Empty','basename','.pdf','join','%s.%s','Setting','find','splitSizePdf','then','split','sequelize','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','query','existsSync','all','flatten','createPdfKitDocument','%s%d.%s','pdf','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','PDF','inspect','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.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','pipe','createWriteStream','finish','end','createPdfFromHTML','lodash','util','path','moment','html-to-pdfmake','pdfmake/src/printer','zip-dir','rimraf','jsdom'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd743,0x14f));var _0x3d74=function(_0x40ee09,_0x3393f9){_0x40ee09=_0x40ee09-0x0;var _0x19b1e2=_0xd743[_0x40ee09];return _0x19b1e2;};'use strict';var _=require(_0x3d74('0x0'));var fs=require('fs');var util=require(_0x3d74('0x1'));var path=require(_0x3d74('0x2'));var moment=require(_0x3d74('0x3'));var htmlToPdfmake=require(_0x3d74('0x4'));var PdfPrinter=require(_0x3d74('0x5'));var zipdir=require(_0x3d74('0x6'));var rimraf=require(_0x3d74('0x7'));var JSDOM=require(_0x3d74('0x8'))[_0x3d74('0x9')];var window=new JSDOM('')[_0x3d74('0xa')];var db=require('../../mysqldb')['db'];var dbH=require(_0x3d74('0xb'))[_0x3d74('0xc')];var logger=require(_0x3d74('0xd'))(_0x3d74('0xe'));var EXTRACTED_REPORT_ID=Number(process[_0x3d74('0xf')][0x2]);var QUERY=process[_0x3d74('0xf')][0x3];var PATH=process['argv'][0x4];var NAME=process[_0x3d74('0xf')][0x5];var FORMAT=_0x3d74('0x10');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x7110ff,_0x1d0de7){var _0x330ab8={'status':_0x7110ff};var _0x18d82e={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x1d0de7){_0x330ab8[_0x3d74('0x11')]=_0x1d0de7;}return db[_0x3d74('0x12')][_0x3d74('0x13')](_0x330ab8,_0x18d82e);}function getHeaders(_0x28f90f){return _[_0x3d74('0x14')](_0x28f90f,function(_0x564903){return{'text':_0x564903,'style':_0x3d74('0x15')};});}function getRows(_0x323170,_0x721860){return _['map'](_0x721860,function(_0x4cb1ee){return _(_0x4cb1ee)['pick'](_0x323170)[_0x3d74('0x14')](function(_0x473feb){return _0x473feb?_[_0x3d74('0x16')](_0x473feb):'';})['value']();});}function createTable(_0x5d92ad,_0x1bdc35){var _0x183ba4={'widths':_['fill'](Array(_0x5d92ad[_0x3d74('0x17')]),0x91),'heights':function(_0x472aed){return _0x472aed===0x0?_0x3d74('0x18'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x578967=getHeaders(_0x5d92ad);_0x183ba4[_0x3d74('0x19')]['push'](_0x578967);var _0x38e3a4=getRows(_0x5d92ad,_0x1bdc35);_0x183ba4[_0x3d74('0x19')]=_0x183ba4[_0x3d74('0x19')]['concat'](_0x38e3a4);return _0x183ba4;}function createTables(_0x1f82c0){var _0x3f43c4=[];var _0x53b88f=_[_0x3d74('0x1a')](Object[_0x3d74('0x1b')](_0x1f82c0[0x0]),0x5);_0x53b88f['forEach'](function(_0x1828dd){_0x3f43c4[_0x3d74('0x1c')](createTable(_0x1828dd,_0x1f82c0));});return _0x3f43c4;}function getPDFDocDefinition(_0x27615c){var _0x97bf61=util['format'](_0x3d74('0x1d'),NAME,EXTRACTED_REPORT[_0x3d74('0x1e')],moment(EXTRACTED_REPORT[_0x3d74('0x1f')])[_0x3d74('0x20')](FORMAT),moment(EXTRACTED_REPORT['endDate'])['format'](FORMAT));var _0x3e57f5=[];for(var _0x64be4f=0x0;_0x64be4f<_0x27615c[_0x3d74('0x17')];_0x64be4f++){var _0x282a69=[];if(_0x64be4f===0x0){_0x282a69[_0x3d74('0x1c')]({'text':_0x97bf61,'style':_0x3d74('0x21')});}var _0x1d8b67={'table':_0x27615c[_0x64be4f]};if(_0x64be4f>0x0){_0x1d8b67['pageBreak']=_0x3d74('0x22');_0x1d8b67['margin']=[0x0,0x46,0x0,0x0];}_0x282a69[_0x3d74('0x1c')](_0x1d8b67);_0x3e57f5[_0x3d74('0x1c')](_0x282a69);}return{'pageSize':'A4','pageOrientation':_0x3d74('0x23'),'content':_0x3e57f5,'footer':function(_0x20bad8,_0xffd77a){return{'text':_0x20bad8[_0x3d74('0x16')]()+_0x3d74('0x24')+_0xffd77a,'style':_0x3d74('0x25')};},'defaultStyle':{'font':_0x3d74('0x26')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':'black'},'footer':{'alignment':_0x3d74('0x27'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x1e2511){var _0x9c2c39=0x1388;var _0x960505;if(!_0x1e2511[0x0][_0x3d74('0x28')]){return analyticExtractedReport(_0x3d74('0x29'));}var _0x1660a5=[];var _0x3c3131=0x0;var _0x8bc970=!![];var _0x6072b7=path['dirname'](PATH);var _0x4b9016=path[_0x3d74('0x2a')](PATH,_0x3d74('0x2b'));var _0x442fbd=path[_0x3d74('0x2c')](_0x6072b7,util[_0x3d74('0x20')](_0x3d74('0x2d'),_0x4b9016,'pdf'));var _0x23e3e7=![];return db[_0x3d74('0x2e')][_0x3d74('0x2f')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x3d74('0x30')]})['then'](function(_0x174de0){if(_0x174de0){_0x960505=_0x174de0;_0x9c2c39=_0x960505[_0x3d74('0x30')]||0x3e8;}})[_0x3d74('0x31')](function(){if(_0x1e2511&&_0x1e2511[_0x3d74('0x17')]){var _0x4578d7=_0x1e2511[0x0]['num']%(_0x3c3131+_0x9c2c39);if(_0x960505[_0x3d74('0x32')]){for(;_0x8bc970;_0x3c3131+=_0x9c2c39,_0x4578d7=_0x1e2511[0x0][_0x3d74('0x28')]%(_0x3c3131+_0x9c2c39)){if(_0x4578d7==0x0||_0x4578d7==_0x1e2511[0x0][_0x3d74('0x28')]){_0x8bc970=![];}_0x1660a5[_0x3d74('0x1c')](dbH[_0x3d74('0x33')]['query'](util[_0x3d74('0x20')](_0x3d74('0x34'),QUERY,_0x9c2c39,_0x3c3131),{'type':dbH[_0x3d74('0x33')][_0x3d74('0x35')][_0x3d74('0x36')]}));}}else{_0x1660a5['push'](dbH[_0x3d74('0x33')][_0x3d74('0x37')](QUERY,{'type':dbH[_0x3d74('0x33')][_0x3d74('0x35')][_0x3d74('0x36')]}));}}_0x23e3e7=_0x960505[_0x3d74('0x32')]&&_0x1660a5['length']>0x1;if(!fs[_0x3d74('0x38')](path['join'](_0x6072b7,_0x4b9016))&&_0x23e3e7){fs['mkdirSync'](path['join'](_0x6072b7,_0x4b9016));}return Promise[_0x3d74('0x39')](_0x1660a5);})[_0x3d74('0x31')](function(_0x3fdb07){return createTables(_[_0x3d74('0x3a')](_0x3fdb07));})['then'](function(_0x267913){var _0xcd88d5=getPDFDocDefinition(_0x267913);var _0x393f78=getPDFPrinter();var _0x144e92=_0x393f78[_0x3d74('0x3b')](_0xcd88d5);if(_0x23e3e7)_0x442fbd=path[_0x3d74('0x2c')](_0x6072b7,_0x4b9016,util[_0x3d74('0x20')](_0x3d74('0x3c'),_0x4b9016,index,_0x3d74('0x3d')));return writePDFDocument(_0x144e92,_0x442fbd);})[_0x3d74('0x31')](function(){if(!_0x23e3e7)return;zipdir(path[_0x3d74('0x2c')](_0x6072b7,_0x4b9016),{'saveTo':path[_0x3d74('0x2c')](_0x6072b7,util[_0x3d74('0x20')](_0x3d74('0x2d'),_0x4b9016,'zip'))},function(_0x43f8a4){if(_0x43f8a4)throw _0x43f8a4;return;});})[_0x3d74('0x31')](function(){if(!_0x23e3e7)return;rimraf(path['join'](_0x6072b7,_0x4b9016),function(){});})[_0x3d74('0x31')](function(){logger[_0x3d74('0x3e')](util['format'](_0x3d74('0x3f'),EXTRACTED_REPORT_ID,'CSV'));return analyticExtractedReport(_0x3d74('0x40'),_0x23e3e7?util['format'](_0x3d74('0x2d'),_0x4b9016,_0x23e3e7?'zip':_0x3d74('0x3d')):null);});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x3d74('0x3e')](util[_0x3d74('0x20')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'PDF'));return db[_0x3d74('0x12')][_0x3d74('0x41')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x3d74('0x31')](function(_0x4c1cf3){EXTRACTED_REPORT=_0x4c1cf3;return dbH['sequelize']['query'](util[_0x3d74('0x20')](_0x3d74('0x42'),QUERY),{'type':dbH[_0x3d74('0x33')][_0x3d74('0x35')][_0x3d74('0x36')]});})[_0x3d74('0x31')](extractReport)[_0x3d74('0x43')](function(_0x5a2e3d){logger[_0x3d74('0x3e')](util['format']('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x3d74('0x44')),util[_0x3d74('0x45')](_0x5a2e3d,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})['finally'](function(){process[_0x3d74('0x46')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x357c93=new PdfPrinter({'Arial':{'normal':__dirname+_0x3d74('0x47'),'bold':__dirname+_0x3d74('0x48'),'italics':__dirname+'/fonts/arial-italic.ttf','bolditalics':__dirname+_0x3d74('0x49')}});return _0x357c93;}function getPDFDocDefinitionFromHTML(_0x12fd79,_0x43d799){var _0x5c1540=util[_0x3d74('0x20')](_0x3d74('0x4a'),_0x43d799[_0x3d74('0x4b')],_0x43d799[_0x3d74('0x4c')]);var _0x5ce342=moment()[_0x3d74('0x20')](_0x3d74('0x4d'))[_0x3d74('0x16')]();var _0x82e104=htmlToPdfmake(_0x12fd79,{'window':window,'tableAutoSize':!![]});return{'content':[_0x82e104],'defaultStyle':{'font':_0x3d74('0x26')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x3d74('0x4e'),'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':_0x3d74('0x4e')}},'header':function(){return[{'text':_0x3d74('0x4f'),'style':_0x3d74('0x21')}];},'footer':function(_0x585bf9,_0x209f85){return[{'text':util[_0x3d74('0x20')](_0x3d74('0x50'),_0x5c1540,_0x585bf9,_0x209f85,_0x5ce342),'style':_0x3d74('0x25')}];}};}function writePDFDocument(_0x511212,_0x18f42b){return new Promise(function(_0xc89750,_0x40659a){var _0x2aa969=_0x511212[_0x3d74('0x51')](fs[_0x3d74('0x52')](_0x18f42b));_0x2aa969['on'](_0x3d74('0x53'),function(){_0xc89750('finish');});_0x2aa969['on']('error',function(_0x5677e8){_0x40659a(_0x5677e8);});_0x511212[_0x3d74('0x54')]();});}exports[_0x3d74('0x55')]=function(_0x3be7bd,_0x2016fc){var _0x337e55=getPDFPrinter();var _0x1d167b=getPDFDocDefinitionFromHTML(_0x3be7bd,_0x2016fc);var _0x3890a3=_0x337e55[_0x3d74('0x3b')](_0x1d167b);return writePDFDocument(_0x3890a3,_0x2016fc[_0x3d74('0x2')])[_0x3d74('0x43')](function(_0x50e8ec){throw _0x50e8ec;});};
\ No newline at end of file
index d853b26..67b8690 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x052c=['savename','AnalyticExtractedReport','update','info','format','XLSX','Setting','find','split','splitSizeXlsx','then','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','sequelize','num','length','isInteger','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','basename','existsSync','join','mkdirSync','each','%s%d.%s','xlsx','%s.%s','writeFileSync','zip','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','exit','util','path','lodash','json2xls','bluebird','zip-dir','../../mysqldb','dbH','analytics','argv'];(function(_0x41c493,_0xed7a99){var _0xf95c25=function(_0x378f3b){while(--_0x378f3b){_0x41c493['push'](_0x41c493['shift']());}};_0xf95c25(++_0xed7a99);}(_0x052c,0xe6));var _0xc052=function(_0x2a9f3b,_0x411e03){_0x2a9f3b=_0x2a9f3b-0x0;var _0x2c6e4f=_0x052c[_0x2a9f3b];return _0x2c6e4f;};'use strict';var util=require(_0xc052('0x0'));var path=require(_0xc052('0x1'));var _=require(_0xc052('0x2'));var fs=require('fs');var json2xls=require(_0xc052('0x3'));var BPromise=require(_0xc052('0x4'));var zipdir=require(_0xc052('0x5'));var rimraf=require('rimraf');var db=require('../../mysqldb')['db'];var dbH=require(_0xc052('0x6'))[_0xc052('0x7')];var logger=require('../../config/logger')(_0xc052('0x8'));var EXTRACTED_REPORT_ID=Number(process[_0xc052('0x9')][0x2]);var QUERY=process[_0xc052('0x9')][0x3];var PATH=process[_0xc052('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0xb0d25b,_0x8fd3c3){var _0x7211ff={'status':_0xb0d25b};var _0x350ec9={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x8fd3c3){_0x7211ff[_0xc052('0xa')]=_0x8fd3c3;}return db[_0xc052('0xb')][_0xc052('0xc')](_0x7211ff,_0x350ec9);}function main(){var _0x2941d5=0x1388;var _0x75ebdf;logger[_0xc052('0xd')](util[_0xc052('0xe')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xc052('0xf')));return db[_0xc052('0x10')][_0xc052('0x11')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xc052('0x12'),'splitSizeXlsx']})['then'](function(_0x41f66e){if(_0x41f66e){_0x75ebdf=_0x41f66e;_0x2941d5=_0x75ebdf[_0xc052('0x13')]||0x1388;}})[_0xc052('0x14')](function(){return dbH['sequelize'][_0xc052('0x15')](util['format'](_0xc052('0x16'),QUERY),{'type':dbH[_0xc052('0x17')]['QueryTypes']['SELECT']});})[_0xc052('0x14')](function(_0x374f0e){if(!_0x374f0e[0x0][_0xc052('0x18')]){return analyticExtractedReport('Empty');}var _0x142cf2=[];var _0x54bb71=0x0;if(_0x75ebdf[_0xc052('0x12')]){if(_0x374f0e&&_0x374f0e[_0xc052('0x19')]){var _0x3750a7=_['range'](_0x374f0e[0x0][_0xc052('0x18')]/_0x2941d5);var _0x2dc290=Number[_0xc052('0x1a')](_0x374f0e[0x0][_0xc052('0x18')]/_0x2941d5)?_0x374f0e[0x0]['num']%_0x2941d5:0x0;_0x3750a7[_0xc052('0x1b')](function(_0x4aa784){if(_0x4aa784>0x0){_0x54bb71+=_0x2941d5;}_0x142cf2[_0xc052('0x1c')](dbH[_0xc052('0x17')][_0xc052('0x15')](util['format'](_0xc052('0x1d'),QUERY,_0x2941d5,_0x54bb71),{'type':dbH[_0xc052('0x17')][_0xc052('0x1e')][_0xc052('0x1f')]}));});if(_0x2dc290>0x0){_0x54bb71+=_0x2941d5;_0x142cf2[_0xc052('0x1c')](dbH['sequelize'][_0xc052('0x15')](util[_0xc052('0xe')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x2dc290,_0x54bb71),{'type':dbH[_0xc052('0x17')][_0xc052('0x1e')]['SELECT']}));}}}else{_0x142cf2[_0xc052('0x1c')](dbH[_0xc052('0x17')][_0xc052('0x15')](QUERY,{'type':dbH[_0xc052('0x17')]['QueryTypes'][_0xc052('0x1f')]}));}var _0x4d52ed=path['dirname'](PATH);var _0x34d52f=path[_0xc052('0x20')](PATH,'.xlsx');var _0x2aafc3=_0x75ebdf[_0xc052('0x12')]&&_0x142cf2['length']>0x1;var _0x1af454=[];if(!fs[_0xc052('0x21')](path[_0xc052('0x22')](_0x4d52ed,_0x34d52f))&&_0x2aafc3){fs[_0xc052('0x23')](path['join'](_0x4d52ed,_0x34d52f));}return BPromise[_0xc052('0x24')](_0x142cf2,function(_0x3d6716){_0x1af454[_0xc052('0x1c')](_0x3d6716);})[_0xc052('0x14')](function(){for(var _0x1e7397=0x0;_0x1e7397<_0x1af454[_0xc052('0x19')];_0x1e7397+=0x1){var _0x2a1752;var _0x5b1f39=_0x1af454[_0x1e7397];if(_0x2aafc3){_0x2a1752=path[_0xc052('0x22')](_0x4d52ed,_0x34d52f,util[_0xc052('0xe')](_0xc052('0x25'),_0x34d52f,_0x1e7397,_0xc052('0x26')));}else{_0x2a1752=path[_0xc052('0x22')](_0x4d52ed,util[_0xc052('0xe')](_0xc052('0x27'),_0x34d52f,_0xc052('0x26')));}fs[_0xc052('0x28')](_0x2a1752,json2xls(_0x5b1f39),'binary');}})['then'](function(){if(_0x2aafc3){return new Promise(function(_0x34acac){zipdir(path[_0xc052('0x22')](_0x4d52ed,_0x34d52f),{'saveTo':path[_0xc052('0x22')](_0x4d52ed,util[_0xc052('0xe')]('%s.%s',_0x34d52f,_0xc052('0x29')))},function(_0x2db27f,_0x29f48d){rimraf(path[_0xc052('0x22')](_0x4d52ed,_0x34d52f),function(){});_0x34acac('zip\x20finished');});});}})['then'](function(){logger['info'](util['format'](_0xc052('0x2a'),EXTRACTED_REPORT_ID,'XLSX'));return analyticExtractedReport('Completed',_0x2aafc3?util['format']('%s.%s',_0x34d52f,_0x2aafc3?_0xc052('0x29'):_0xc052('0x26')):null);});})[_0xc052('0x2b')](function(_0x57755c){logger[_0xc052('0xd')](util[_0xc052('0xe')](_0xc052('0x2c'),EXTRACTED_REPORT_ID,_0xc052('0xf')),util[_0xc052('0x2d')](_0x57755c,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xc052('0x2e'));})['finally'](function(){process[_0xc052('0x2f')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x61a3=['mkdirSync','%s%d.%s','xlsx','%s.%s','writeFileSync','binary','zip','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','exit','util','path','lodash','json2xls','bluebird','rimraf','../../mysqldb','dbH','../../config/logger','argv','savename','update','format','XLSX','Setting','find','split','splitSizeXlsx','then','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','sequelize','QueryTypes','num','Empty','length','push','SELECT','dirname','basename','.xlsx','existsSync','join'];(function(_0x4687df,_0x12099c){var _0x32eaef=function(_0x2387db){while(--_0x2387db){_0x4687df['push'](_0x4687df['shift']());}};_0x32eaef(++_0x12099c);}(_0x61a3,0x69));var _0x361a=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x61a3[_0x20a584];return _0x4b41a8;};'use strict';var util=require(_0x361a('0x0'));var path=require(_0x361a('0x1'));var _=require(_0x361a('0x2'));var fs=require('fs');var json2xls=require(_0x361a('0x3'));var BPromise=require(_0x361a('0x4'));var zipdir=require('zip-dir');var rimraf=require(_0x361a('0x5'));var db=require(_0x361a('0x6'))['db'];var dbH=require('../../mysqldb')[_0x361a('0x7')];var logger=require(_0x361a('0x8'))('analytics');var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x361a('0x9')][0x3];var PATH=process[_0x361a('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x3850ab,_0x2bbee2){var _0x1d923c={'status':_0x3850ab};var _0x386ae9={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x2bbee2){_0x1d923c[_0x361a('0xa')]=_0x2bbee2;}return db['AnalyticExtractedReport'][_0x361a('0xb')](_0x1d923c,_0x386ae9);}function main(){var _0x4fa56c=0x1388;var _0x585b86;logger['info'](util[_0x361a('0xc')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x361a('0xd')));return db[_0x361a('0xe')][_0x361a('0xf')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x361a('0x10'),_0x361a('0x11')]})[_0x361a('0x12')](function(_0x312ef7){if(_0x312ef7){_0x585b86=_0x312ef7;_0x4fa56c=_0x585b86[_0x361a('0x11')]||0x1388;}})[_0x361a('0x12')](function(){return dbH['sequelize'][_0x361a('0x13')](util['format'](_0x361a('0x14'),QUERY),{'type':dbH[_0x361a('0x15')][_0x361a('0x16')]['SELECT']});})[_0x361a('0x12')](function(_0x2352ce){if(!_0x2352ce[0x0][_0x361a('0x17')]){return analyticExtractedReport(_0x361a('0x18'));}var _0x3643a1=[];var _0x5d39ad=0x0;var _0x3eea06=!![];if(_0x585b86[_0x361a('0x10')]){if(_0x2352ce&&_0x2352ce[_0x361a('0x19')]){var _0x47b044=_0x2352ce[0x0]['num']%(_0x5d39ad+_0x4fa56c);for(;_0x3eea06;_0x5d39ad+=_0x4fa56c,_0x47b044=_0x2352ce[0x0][_0x361a('0x17')]%(_0x5d39ad+_0x4fa56c)){if(_0x47b044==0x0||_0x47b044==_0x2352ce[0x0][_0x361a('0x17')]){_0x3eea06=![];}_0x3643a1[_0x361a('0x1a')](dbH[_0x361a('0x15')][_0x361a('0x13')](util[_0x361a('0xc')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x4fa56c,_0x5d39ad),{'type':dbH[_0x361a('0x15')][_0x361a('0x16')][_0x361a('0x1b')]}));}}}else{_0x3643a1[_0x361a('0x1a')](dbH['sequelize'][_0x361a('0x13')](QUERY,{'type':dbH['sequelize'][_0x361a('0x16')][_0x361a('0x1b')]}));}var _0x3f2d57=path[_0x361a('0x1c')](PATH);var _0x2d3eaf=path[_0x361a('0x1d')](PATH,_0x361a('0x1e'));var _0x2fe2e1=_0x585b86[_0x361a('0x10')]&&_0x3643a1[_0x361a('0x19')]>0x1;var _0x9824bc=[];if(!fs[_0x361a('0x1f')](path[_0x361a('0x20')](_0x3f2d57,_0x2d3eaf))&&_0x2fe2e1){fs[_0x361a('0x21')](path[_0x361a('0x20')](_0x3f2d57,_0x2d3eaf));}return BPromise['each'](_0x3643a1,function(_0x316b92){_0x9824bc['push'](_0x316b92);})[_0x361a('0x12')](function(){for(var _0x1f59ca=0x0;_0x1f59ca<_0x9824bc[_0x361a('0x19')];_0x1f59ca+=0x1){var _0xb6d218;var _0x19b23c=_0x9824bc[_0x1f59ca];if(_0x2fe2e1){_0xb6d218=path[_0x361a('0x20')](_0x3f2d57,_0x2d3eaf,util[_0x361a('0xc')](_0x361a('0x22'),_0x2d3eaf,_0x1f59ca,_0x361a('0x23')));}else{_0xb6d218=path[_0x361a('0x20')](_0x3f2d57,util[_0x361a('0xc')](_0x361a('0x24'),_0x2d3eaf,_0x361a('0x23')));}fs[_0x361a('0x25')](_0xb6d218,json2xls(_0x19b23c),_0x361a('0x26'));}})[_0x361a('0x12')](function(){if(_0x2fe2e1){zipdir(path[_0x361a('0x20')](_0x3f2d57,_0x2d3eaf),{'saveTo':path['join'](_0x3f2d57,util['format'](_0x361a('0x24'),_0x2d3eaf,_0x361a('0x27')))},function(_0x5bd2b7,_0x36731a){});rimraf(path[_0x361a('0x20')](_0x3f2d57,_0x2d3eaf),function(){});}})['then'](function(){logger[_0x361a('0x28')](util[_0x361a('0xc')](_0x361a('0x29'),EXTRACTED_REPORT_ID,'XLSX'));return analyticExtractedReport('Completed',_0x2fe2e1?util['format']('%s.%s',_0x2d3eaf,_0x2fe2e1?_0x361a('0x27'):_0x361a('0x23')):null);});})[_0x361a('0x2a')](function(_0x2778a3){logger['info'](util[_0x361a('0xc')](_0x361a('0x2b'),EXTRACTED_REPORT_ID,_0x361a('0xd')),util[_0x361a('0x2c')](_0x2778a3,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})['finally'](function(){process[_0x361a('0x2d')](EXIT_CODE);});}main();
\ No newline at end of file
index a160120..beb5ba1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf211=['CDR(destination)=','extension','${EXTEN:','cutdigits','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','wav','XCALLY-MOTION-ANSWER=0','MONITOR_OPTIONS=ab','toLowerCase','updatedAt','interval','*,*,*,*','tag','CDR(tag)=','length','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','answer','indexOf','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','last','concat','Hangup','transaction','destroy','bulkCreate','sortBy','catch','error','rewrite','lodash','util','models','Interval','findAll','intervals','VoiceExtension','IntervalId','then','uniq','map','exten','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','queue','playback','hasOwnProperty','priority','extensions','find','push','type','Set','CDR(type)=%s','context','VoiceExtensionId','inbound','CDR(routeid)=','outbound'];(function(_0x38865f,_0x58978d){var _0x5c03f1=function(_0x44c5ca){while(--_0x44c5ca){_0x38865f['push'](_0x38865f['shift']());}};_0x5c03f1(++_0x58978d);}(_0xf211,0x1ef));var _0x1f21=function(_0x593f03,_0x4af84a){_0x593f03=_0x593f03-0x0;var _0x178299=_0xf211[_0x593f03];return _0x178299;};'use strict';var _=require(_0x1f21('0x0'));var util=require(_0x1f21('0x1'));function rewrite(_0x2b4ee0,_0x1558e3){var _0x3d1f99=this;return _0x2b4ee0[_0x1f21('0x2')][_0x1f21('0x3')][_0x1f21('0x4')]({'raw':!![]})['then'](function(_0x58daab){_0x3d1f99[_0x1f21('0x5')]=_0x58daab;return _0x2b4ee0[_0x1f21('0x2')][_0x1f21('0x6')][_0x1f21('0x4')]({'where':{'IntervalId':_0x1558e3[_0x1f21('0x7')]},'raw':!![]});})[_0x1f21('0x8')](function(_0x86f2d2){return _0x2b4ee0[_0x1f21('0x2')][_0x1f21('0x6')][_0x1f21('0x4')]({'where':{'exten':{'$in':_[_0x1f21('0x9')](_[_0x1f21('0xa')](_0x86f2d2,_0x1f21('0xb')))}},'order':[{'raw':_0x1f21('0xc')}],'raw':!![]});})['then'](function(_0xe7e256){var _0x4aeffd=_['filter'](_0xe7e256,{'priority':'1'});var _0x293146=_[_0x1f21('0xd')](_0xe7e256,{'isApp':0x1});var _0x52536e=_[_0x1f21('0xe')](_0x293146,'exten');var _0x4df0c9=[_0x1f21('0xf'),_0x1f21('0x10')];var _0x2849be=[];var _0xc38d88=[];for(var _0x6dceac in _0x52536e){if(_0x52536e[_0x1f21('0x11')](_0x6dceac)){_0x3d1f99[_0x1f21('0x12')]=0x2;_0x3d1f99[_0x1f21('0x13')]=[];_0x3d1f99['extension']=_[_0x1f21('0x14')](_0x4aeffd,{'exten':_0x52536e[_0x6dceac][0x0]['exten']});_0x3d1f99[_0x1f21('0x13')][_0x1f21('0x15')]({'type':_0x52536e[_0x6dceac][0x0][_0x1f21('0x16')],'app':_0x1f21('0x17'),'appdata':util['format'](_0x1f21('0x18'),_0x52536e[_0x6dceac][0x0][_0x1f21('0x16')]),'context':_0x52536e[_0x6dceac][0x0][_0x1f21('0x19')],'exten':_0x52536e[_0x6dceac][0x0][_0x1f21('0xb')],'priority':_0x3d1f99['priority']++,'VoiceExtensionId':_0x52536e[_0x6dceac][0x0][_0x1f21('0x1a')]});if(_0x52536e[_0x6dceac][0x0][_0x1f21('0x16')]===_0x1f21('0x1b')){_0x3d1f99[_0x1f21('0x13')][_0x1f21('0x15')]({'type':_0x52536e[_0x6dceac][0x0][_0x1f21('0x16')],'app':_0x1f21('0x17'),'appdata':_0x1f21('0x1c')+_0x52536e[_0x6dceac][0x0][_0x1f21('0x1a')],'context':_0x52536e[_0x6dceac][0x0][_0x1f21('0x19')],'exten':_0x52536e[_0x6dceac][0x0]['exten'],'priority':_0x3d1f99['priority']++,'VoiceExtensionId':_0x52536e[_0x6dceac][0x0][_0x1f21('0x1a')]});}else if(_0x52536e[_0x6dceac][0x0][_0x1f21('0x16')]===_0x1f21('0x1d')){if(_0x3d1f99['extension']){_0x3d1f99[_0x1f21('0x13')]['push']({'type':_0x52536e[_0x6dceac][0x0][_0x1f21('0x16')],'app':_0x1f21('0x17'),'appdata':_0x1f21('0x1e')+(_0x3d1f99[_0x1f21('0x1f')]['cutdigits']?_0x1f21('0x20')+_0x3d1f99[_0x1f21('0x1f')][_0x1f21('0x21')]+'}':_0x1f21('0x22')),'context':_0x52536e[_0x6dceac][0x0][_0x1f21('0x19')],'exten':_0x52536e[_0x6dceac][0x0]['exten'],'priority':_0x3d1f99[_0x1f21('0x12')]++,'VoiceExtensionId':_0x52536e[_0x6dceac][0x0][_0x1f21('0x1a')]});}_0x3d1f99['extensions']['push']({'type':_0x52536e[_0x6dceac][0x0][_0x1f21('0x16')],'app':_0x1f21('0x17'),'appdata':_0x1f21('0x1c')+_0x52536e[_0x6dceac][0x0][_0x1f21('0x1a')],'context':_0x52536e[_0x6dceac][0x0][_0x1f21('0x19')],'exten':_0x52536e[_0x6dceac][0x0][_0x1f21('0xb')],'priority':_0x3d1f99[_0x1f21('0x12')]++,'VoiceExtensionId':_0x52536e[_0x6dceac][0x0]['VoiceExtensionId']});var _0x3f558d=_0x3d1f99['priority']++;_0x3d1f99[_0x1f21('0x13')][_0x1f21('0x15')]({'type':_0x52536e[_0x6dceac][0x0]['type'],'app':_0x1f21('0x23'),'appdata':_0x1f21('0x24')+(_0x3f558d+0x2)+_0x1f21('0x25')+(_0x3f558d+0x1)+')','context':_0x52536e[_0x6dceac][0x0][_0x1f21('0x19')],'exten':_0x52536e[_0x6dceac][0x0][_0x1f21('0xb')],'priority':_0x3f558d,'VoiceExtensionId':_0x52536e[_0x6dceac][0x0][_0x1f21('0x1a')]});if(_0x3d1f99[_0x1f21('0x1f')]){_0x3d1f99[_0x1f21('0x13')][_0x1f21('0x15')]({'type':_0x52536e[_0x6dceac][0x0][_0x1f21('0x16')],'app':'Set','appdata':_0x3d1f99['extension']['cutdigits']?_0x1f21('0x26')+_0x3d1f99[_0x1f21('0x1f')][_0x1f21('0x21')]+'}':_0x1f21('0x27'),'context':_0x52536e[_0x6dceac][0x0][_0x1f21('0x19')],'exten':_0x52536e[_0x6dceac][0x0]['exten'],'priority':_0x3d1f99[_0x1f21('0x12')]++,'VoiceExtensionId':_0x52536e[_0x6dceac][0x0][_0x1f21('0x1a')]});}_0x3d1f99['extensions']['push']({'type':_0x52536e[_0x6dceac][0x0][_0x1f21('0x16')],'app':_0x1f21('0x17'),'appdata':_0x1f21('0x28')+_0x52536e[_0x6dceac][0x0][_0x1f21('0x1a')],'context':_0x52536e[_0x6dceac][0x0][_0x1f21('0x19')],'exten':_0x52536e[_0x6dceac][0x0][_0x1f21('0xb')],'priority':_0x3d1f99[_0x1f21('0x12')]++,'VoiceExtensionId':_0x52536e[_0x6dceac][0x0][_0x1f21('0x1a')]});if(_0x3d1f99[_0x1f21('0x1f')]&&_0x3d1f99[_0x1f21('0x1f')][_0x1f21('0x11')](_0x1f21('0x29'))&&_0x3d1f99[_0x1f21('0x1f')]['recordingFormat']!==_0x1f21('0x2a')){_0x3d1f99[_0x1f21('0x13')][_0x1f21('0x15')]({'type':_0x52536e[_0x6dceac][0x0]['type'],'app':_0x1f21('0x17'),'appdata':_0x1f21('0x2b'),'context':_0x52536e[_0x6dceac][0x0]['context'],'exten':_0x52536e[_0x6dceac][0x0][_0x1f21('0xb')],'priority':_0x3d1f99[_0x1f21('0x12')]++,'VoiceExtensionId':_0x52536e[_0x6dceac][0x0][_0x1f21('0x1a')]});_0x3d1f99['extensions'][_0x1f21('0x15')]({'type':_0x52536e[_0x6dceac][0x0][_0x1f21('0x16')],'app':_0x1f21('0x17'),'appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0x3d1f99[_0x1f21('0x1f')][_0x1f21('0x29')]||_0x1f21('0x2c'),'context':_0x52536e[_0x6dceac][0x0][_0x1f21('0x19')],'exten':_0x52536e[_0x6dceac][0x0][_0x1f21('0xb')],'priority':_0x3d1f99[_0x1f21('0x12')]++,'VoiceExtensionId':_0x52536e[_0x6dceac][0x0][_0x1f21('0x1a')]});}}_0x3d1f99['extensions'][_0x1f21('0x15')]({'type':_0x52536e[_0x6dceac][0x0][_0x1f21('0x16')],'app':_0x1f21('0x17'),'appdata':_0x1f21('0x2d'),'context':_0x52536e[_0x6dceac][0x0][_0x1f21('0x19')],'exten':_0x52536e[_0x6dceac][0x0]['exten'],'priority':_0x3d1f99[_0x1f21('0x12')]++,'VoiceExtensionId':_0x52536e[_0x6dceac][0x0]['VoiceExtensionId']});_0x3d1f99[_0x1f21('0x13')][_0x1f21('0x15')]({'type':_0x52536e[_0x6dceac][0x0][_0x1f21('0x16')],'app':'Set','appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x52536e[_0x6dceac][0x0][_0x1f21('0x19')],'exten':_0x52536e[_0x6dceac][0x0][_0x1f21('0xb')],'priority':_0x3d1f99[_0x1f21('0x12')]++,'VoiceExtensionId':_0x52536e[_0x6dceac][0x0][_0x1f21('0x1a')]});_0x3d1f99['extensions'][_0x1f21('0x15')]({'type':_0x52536e[_0x6dceac][0x0][_0x1f21('0x16')],'app':'Set','appdata':_0x1f21('0x2e'),'context':_0x52536e[_0x6dceac][0x0][_0x1f21('0x19')],'exten':_0x52536e[_0x6dceac][0x0][_0x1f21('0xb')],'priority':_0x3d1f99[_0x1f21('0x12')]++,'VoiceExtensionId':_0x52536e[_0x6dceac][0x0][_0x1f21('0x1a')]});for(var _0x55396d=0x0,_0x79bc36=0x0;_0x55396d<_0x52536e[_0x6dceac]['length'];_0x55396d+=0x1,_0x79bc36=0x0){var _0x5fb216=_0x52536e[_0x6dceac][_0x55396d];if(_0x5fb216[_0x1f21('0x16')]){_0x5fb216[_0x1f21('0x16')]=_0x5fb216[_0x1f21('0x16')][_0x1f21('0x2f')]();}var _0x5ad21f=[];var _0x22a2cb=[];delete _0x5fb216['id'];delete _0x5fb216['createdAt'];delete _0x5fb216[_0x1f21('0x30')];var _0x15249e=_0x5fb216[_0x1f21('0x31')]!==_0x1f21('0x32')?[_0x5fb216['interval']]:_0x5fb216[_0x1f21('0x7')]?_[_0x1f21('0xa')](_[_0x1f21('0xd')](_0x3d1f99[_0x1f21('0x5')],{'IntervalId':_0x5fb216[_0x1f21('0x7')]}),_0x1f21('0x31')):[];if(_0x5fb216[_0x1f21('0x11')]('tag')){if(_0x5fb216['tag']&&_0x5fb216[_0x1f21('0x33')]!=='--'){_0x5ad21f[_0x1f21('0x15')]({'type':_0x5fb216[_0x1f21('0x16')],'app':'Set','appdata':_0x1f21('0x34')+_0x5fb216[_0x1f21('0x33')],'context':_0x5fb216[_0x1f21('0x19')],'exten':_0x5fb216[_0x1f21('0xb')],'priority':_0x15249e[_0x1f21('0x35')]+_0x3d1f99[_0x1f21('0x12')]+_0x79bc36++,'VoiceExtensionId':_0x5fb216[_0x1f21('0x1a')]});}}if(_0x5fb216[_0x1f21('0x16')]===_0x1f21('0x1d')&&_0x5fb216[_0x1f21('0x11')](_0x1f21('0x36'))){if(_0x5fb216[_0x1f21('0x36')]){_0x5ad21f[_0x1f21('0x15')]({'type':_0x5fb216[_0x1f21('0x16')],'app':'ExecIf','appdata':_0x1f21('0x37')+_0x5fb216[_0x1f21('0x36')]+')','context':_0x5fb216['context'],'exten':_0x5fb216[_0x1f21('0xb')],'priority':_0x15249e[_0x1f21('0x35')]+_0x3d1f99[_0x1f21('0x12')]+_0x79bc36++,'VoiceExtensionId':_0x5fb216[_0x1f21('0x1a')]});}else{_0x5ad21f['push']({'type':_0x5fb216[_0x1f21('0x16')],'app':_0x1f21('0x23'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','context':_0x5fb216[_0x1f21('0x19')],'exten':_0x5fb216['exten'],'priority':_0x15249e[_0x1f21('0x35')]+_0x3d1f99[_0x1f21('0x12')]+_0x79bc36++,'VoiceExtensionId':_0x5fb216[_0x1f21('0x1a')]});}}if(_0x5fb216[_0x1f21('0x11')](_0x1f21('0x38'))){if(_0x4df0c9[_0x1f21('0x39')](_0x5fb216['app'][_0x1f21('0x2f')]())>=0x0&&_0x5fb216['appType']!==_0x1f21('0x3a')){if(_0x5fb216[_0x1f21('0x38')]){_0x5ad21f[_0x1f21('0x15')]({'type':_0x5fb216['type'],'app':_0x1f21('0x23'),'appdata':_0x1f21('0x3b'),'context':_0x5fb216[_0x1f21('0x19')],'exten':_0x5fb216[_0x1f21('0xb')],'priority':_0x15249e[_0x1f21('0x35')]+_0x3d1f99[_0x1f21('0x12')]+_0x79bc36++,'VoiceExtensionId':_0x5fb216['VoiceExtensionId']});_0x5ad21f[_0x1f21('0x15')]({'type':_0x5fb216[_0x1f21('0x16')],'app':_0x1f21('0x17'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0x5fb216[_0x1f21('0x19')],'exten':_0x5fb216['exten'],'priority':_0x15249e['length']+_0x3d1f99[_0x1f21('0x12')]+_0x79bc36++,'VoiceExtensionId':_0x5fb216['VoiceExtensionId']});}else{_0x5ad21f[_0x1f21('0x15')]({'type':_0x5fb216[_0x1f21('0x16')],'app':_0x1f21('0x23'),'appdata':_0x1f21('0x3c'),'context':_0x5fb216[_0x1f21('0x19')],'exten':_0x5fb216[_0x1f21('0xb')],'priority':_0x15249e[_0x1f21('0x35')]+_0x3d1f99[_0x1f21('0x12')]+_0x79bc36++,'VoiceExtensionId':_0x5fb216[_0x1f21('0x1a')]});_0x5ad21f[_0x1f21('0x15')]({'type':_0x5fb216[_0x1f21('0x16')],'app':_0x1f21('0x17'),'appdata':_0x1f21('0x3d'),'context':_0x5fb216[_0x1f21('0x19')],'exten':_0x5fb216[_0x1f21('0xb')],'priority':_0x15249e['length']+_0x3d1f99[_0x1f21('0x12')]+_0x79bc36++,'VoiceExtensionId':_0x5fb216['VoiceExtensionId']});}}}for(var _0x362eec=0x0;_0x362eec<_0x15249e[_0x1f21('0x35')];_0x362eec+=0x1){var _0x562296=_0x3d1f99[_0x1f21('0x12')]+_0x15249e[_0x1f21('0x35')];var _0x4a6af0=_0x362eec===_0x15249e['length']-0x1?_0x3d1f99[_0x1f21('0x12')]+_0x5ad21f[_0x1f21('0x35')]+_0x22a2cb[_0x1f21('0x35')]+0x2:_0x3d1f99[_0x1f21('0x12')]+_0x362eec+0x1;_0x5ad21f[_0x1f21('0x3e')](_0x362eec,0x0,{'type':_0x5fb216['type'],'app':_0x1f21('0x3f'),'appdata':_0x15249e[_0x362eec]+'?'+_0x5fb216[_0x1f21('0x19')]+_0x1f21('0x40')+_0x562296+':'+_0x5fb216['context']+_0x1f21('0x40')+_0x4a6af0,'exten':_0x5fb216[_0x1f21('0xb')],'context':_0x5fb216[_0x1f21('0x19')],'priority':_0x3d1f99['priority']+_0x362eec,'VoiceExtensionId':_0x52536e[_0x6dceac][0x0]['VoiceExtensionId']});}_0x5fb216[_0x1f21('0x12')]=_0x5ad21f['length']?_[_0x1f21('0x41')](_0x5ad21f)['priority']+0x1:_0x3d1f99[_0x1f21('0x12')];_0x3d1f99[_0x1f21('0x12')]=(_0x22a2cb[_0x1f21('0x35')]?_[_0x1f21('0x41')](_0x22a2cb)[_0x1f21('0x12')]:_0x5fb216[_0x1f21('0x12')])+0x1;_0x3d1f99[_0x1f21('0x13')]=_[_0x1f21('0x42')](_0x3d1f99[_0x1f21('0x13')],_0x5ad21f,[_0x5fb216],_0x22a2cb);}_0x3d1f99[_0x1f21('0x13')][_0x1f21('0x15')]({'type':_0x52536e[_0x6dceac][0x0]['type'],'app':_0x1f21('0x43'),'exten':_0x52536e[_0x6dceac][0x0]['exten'],'context':_0x52536e[_0x6dceac][0x0]['context'],'priority':_0x3d1f99[_0x1f21('0x12')],'VoiceExtensionId':_0x52536e[_0x6dceac][0x0]['VoiceExtensionId']});_0x2849be[_0x1f21('0x15')](_0x52536e[_0x6dceac][0x0][_0x1f21('0x1a')]);_0xc38d88=_[_0x1f21('0x42')](_0xc38d88,_0x3d1f99[_0x1f21('0x13')]);}}return _0x2b4ee0[_0x1f21('0x44')](function(_0x2028b8){return _0x2b4ee0[_0x1f21('0x2')][_0x1f21('0x6')][_0x1f21('0x45')]({'where':{'VoiceExtensionId':{'$in':_0x2849be}},'transaction':_0x2028b8})[_0x1f21('0x8')](function(_0x20976e){return _0x2b4ee0[_0x1f21('0x2')][_0x1f21('0x6')][_0x1f21('0x46')](_[_0x1f21('0x47')](_0xc38d88,_0x1f21('0x12')),{'transaction':_0x2028b8});});});})[_0x1f21('0x48')](function(_0x47e556){console[_0x1f21('0x49')](_0x47e556);});}exports[_0x1f21('0x4a')]=rewrite;
\ No newline at end of file
+var _0x6144=['groupBy','queue','hasOwnProperty','extensions','extension','type','format','CDR(type)=%s','context','priority','VoiceExtensionId','inbound','Set','CDR(routeid)=','outbound','push','CDR(destination)=','cutdigits','${EXTEN:','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=noprefix','outboundrouteid=','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','XCALLY-MOTION-ANSWER=0','MONITOR_OPTIONS=ab','length','toLowerCase','createdAt','updatedAt','*,*,*,*','interval','tag','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','indexOf','app','appType','custom','answer','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-PROGRESS=1','splice',',${EXTEN},','last','concat','Hangup','destroy','sortBy','error','rewrite','lodash','util','models','Interval','findAll','then','intervals','VoiceExtension','IntervalId','uniq','map','exten','CAST(priority\x20AS\x20UNSIGNED)','filter'];(function(_0xbb7e59,_0x18590f){var _0x299681=function(_0x3ac77a){while(--_0x3ac77a){_0xbb7e59['push'](_0xbb7e59['shift']());}};_0x299681(++_0x18590f);}(_0x6144,0x1d5));var _0x4614=function(_0x170ee8,_0x67794a){_0x170ee8=_0x170ee8-0x0;var _0x22fd46=_0x6144[_0x170ee8];return _0x22fd46;};'use strict';var _=require(_0x4614('0x0'));var util=require(_0x4614('0x1'));function rewrite(_0x18453e,_0x32e973){var _0x432adc=this;return _0x18453e[_0x4614('0x2')][_0x4614('0x3')][_0x4614('0x4')]({'raw':!![]})[_0x4614('0x5')](function(_0x27318f){_0x432adc[_0x4614('0x6')]=_0x27318f;return _0x18453e[_0x4614('0x2')][_0x4614('0x7')]['findAll']({'where':{'IntervalId':_0x32e973[_0x4614('0x8')]},'raw':!![]});})[_0x4614('0x5')](function(_0x5b5c09){return _0x18453e[_0x4614('0x2')][_0x4614('0x7')][_0x4614('0x4')]({'where':{'exten':{'$in':_[_0x4614('0x9')](_[_0x4614('0xa')](_0x5b5c09,_0x4614('0xb')))}},'order':[{'raw':_0x4614('0xc')}],'raw':!![]});})[_0x4614('0x5')](function(_0xffb563){var _0x15d6b9=_[_0x4614('0xd')](_0xffb563,{'priority':'1'});var _0x13ace4=_[_0x4614('0xd')](_0xffb563,{'isApp':0x1});var _0x9cf412=_[_0x4614('0xe')](_0x13ace4,_0x4614('0xb'));var _0x2b727d=[_0x4614('0xf'),'playback'];var _0x532c4c=[];var _0x43e136=[];for(var _0x5bd31c in _0x9cf412){if(_0x9cf412[_0x4614('0x10')](_0x5bd31c)){_0x432adc['priority']=0x2;_0x432adc[_0x4614('0x11')]=[];_0x432adc[_0x4614('0x12')]=_['find'](_0x15d6b9,{'exten':_0x9cf412[_0x5bd31c][0x0][_0x4614('0xb')]});_0x432adc[_0x4614('0x11')]['push']({'type':_0x9cf412[_0x5bd31c][0x0][_0x4614('0x13')],'app':'Set','appdata':util[_0x4614('0x14')](_0x4614('0x15'),_0x9cf412[_0x5bd31c][0x0][_0x4614('0x13')]),'context':_0x9cf412[_0x5bd31c][0x0][_0x4614('0x16')],'exten':_0x9cf412[_0x5bd31c][0x0][_0x4614('0xb')],'priority':_0x432adc[_0x4614('0x17')]++,'VoiceExtensionId':_0x9cf412[_0x5bd31c][0x0][_0x4614('0x18')]});if(_0x9cf412[_0x5bd31c][0x0][_0x4614('0x13')]===_0x4614('0x19')){_0x432adc['extensions']['push']({'type':_0x9cf412[_0x5bd31c][0x0][_0x4614('0x13')],'app':_0x4614('0x1a'),'appdata':_0x4614('0x1b')+_0x9cf412[_0x5bd31c][0x0][_0x4614('0x18')],'context':_0x9cf412[_0x5bd31c][0x0][_0x4614('0x16')],'exten':_0x9cf412[_0x5bd31c][0x0][_0x4614('0xb')],'priority':_0x432adc[_0x4614('0x17')]++,'VoiceExtensionId':_0x9cf412[_0x5bd31c][0x0][_0x4614('0x18')]});}else if(_0x9cf412[_0x5bd31c][0x0][_0x4614('0x13')]===_0x4614('0x1c')){if(_0x432adc[_0x4614('0x12')]){_0x432adc[_0x4614('0x11')][_0x4614('0x1d')]({'type':_0x9cf412[_0x5bd31c][0x0]['type'],'app':_0x4614('0x1a'),'appdata':_0x4614('0x1e')+(_0x432adc[_0x4614('0x12')][_0x4614('0x1f')]?_0x4614('0x20')+_0x432adc['extension'][_0x4614('0x1f')]+'}':'${EXTEN}'),'context':_0x9cf412[_0x5bd31c][0x0][_0x4614('0x16')],'exten':_0x9cf412[_0x5bd31c][0x0][_0x4614('0xb')],'priority':_0x432adc[_0x4614('0x17')]++,'VoiceExtensionId':_0x9cf412[_0x5bd31c][0x0]['VoiceExtensionId']});}_0x432adc[_0x4614('0x11')][_0x4614('0x1d')]({'type':_0x9cf412[_0x5bd31c][0x0]['type'],'app':'Set','appdata':_0x4614('0x1b')+_0x9cf412[_0x5bd31c][0x0][_0x4614('0x18')],'context':_0x9cf412[_0x5bd31c][0x0][_0x4614('0x16')],'exten':_0x9cf412[_0x5bd31c][0x0]['exten'],'priority':_0x432adc['priority']++,'VoiceExtensionId':_0x9cf412[_0x5bd31c][0x0][_0x4614('0x18')]});var _0x5cb9a5=_0x432adc[_0x4614('0x17')]++;_0x432adc[_0x4614('0x11')]['push']({'type':_0x9cf412[_0x5bd31c][0x0][_0x4614('0x13')],'app':_0x4614('0x21'),'appdata':_0x4614('0x22')+(_0x5cb9a5+0x2)+_0x4614('0x23')+(_0x5cb9a5+0x1)+')','context':_0x9cf412[_0x5bd31c][0x0]['context'],'exten':_0x9cf412[_0x5bd31c][0x0][_0x4614('0xb')],'priority':_0x5cb9a5,'VoiceExtensionId':_0x9cf412[_0x5bd31c][0x0][_0x4614('0x18')]});if(_0x432adc[_0x4614('0x12')]){_0x432adc[_0x4614('0x11')]['push']({'type':_0x9cf412[_0x5bd31c][0x0][_0x4614('0x13')],'app':_0x4614('0x1a'),'appdata':_0x432adc[_0x4614('0x12')]['cutdigits']?'CDR(prefix)=${EXTEN:0:'+_0x432adc[_0x4614('0x12')]['cutdigits']+'}':_0x4614('0x24'),'context':_0x9cf412[_0x5bd31c][0x0][_0x4614('0x16')],'exten':_0x9cf412[_0x5bd31c][0x0]['exten'],'priority':_0x432adc[_0x4614('0x17')]++,'VoiceExtensionId':_0x9cf412[_0x5bd31c][0x0]['VoiceExtensionId']});}_0x432adc[_0x4614('0x11')][_0x4614('0x1d')]({'type':_0x9cf412[_0x5bd31c][0x0][_0x4614('0x13')],'app':_0x4614('0x1a'),'appdata':_0x4614('0x25')+_0x9cf412[_0x5bd31c][0x0]['VoiceExtensionId'],'context':_0x9cf412[_0x5bd31c][0x0]['context'],'exten':_0x9cf412[_0x5bd31c][0x0][_0x4614('0xb')],'priority':_0x432adc[_0x4614('0x17')]++,'VoiceExtensionId':_0x9cf412[_0x5bd31c][0x0][_0x4614('0x18')]});if(_0x432adc[_0x4614('0x12')]&&_0x432adc[_0x4614('0x12')]['hasOwnProperty'](_0x4614('0x26'))&&_0x432adc[_0x4614('0x12')][_0x4614('0x26')]!==_0x4614('0x27')){_0x432adc['extensions'][_0x4614('0x1d')]({'type':_0x9cf412[_0x5bd31c][0x0][_0x4614('0x13')],'app':_0x4614('0x1a'),'appdata':_0x4614('0x28'),'context':_0x9cf412[_0x5bd31c][0x0][_0x4614('0x16')],'exten':_0x9cf412[_0x5bd31c][0x0][_0x4614('0xb')],'priority':_0x432adc['priority']++,'VoiceExtensionId':_0x9cf412[_0x5bd31c][0x0]['VoiceExtensionId']});_0x432adc['extensions']['push']({'type':_0x9cf412[_0x5bd31c][0x0][_0x4614('0x13')],'app':_0x4614('0x1a'),'appdata':_0x4614('0x29')+_0x432adc['extension'][_0x4614('0x26')]||'wav','context':_0x9cf412[_0x5bd31c][0x0][_0x4614('0x16')],'exten':_0x9cf412[_0x5bd31c][0x0]['exten'],'priority':_0x432adc[_0x4614('0x17')]++,'VoiceExtensionId':_0x9cf412[_0x5bd31c][0x0][_0x4614('0x18')]});}}_0x432adc[_0x4614('0x11')][_0x4614('0x1d')]({'type':_0x9cf412[_0x5bd31c][0x0][_0x4614('0x13')],'app':'Set','appdata':_0x4614('0x2a'),'context':_0x9cf412[_0x5bd31c][0x0]['context'],'exten':_0x9cf412[_0x5bd31c][0x0][_0x4614('0xb')],'priority':_0x432adc[_0x4614('0x17')]++,'VoiceExtensionId':_0x9cf412[_0x5bd31c][0x0]['VoiceExtensionId']});_0x432adc[_0x4614('0x11')][_0x4614('0x1d')]({'type':_0x9cf412[_0x5bd31c][0x0][_0x4614('0x13')],'app':_0x4614('0x1a'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x9cf412[_0x5bd31c][0x0][_0x4614('0x16')],'exten':_0x9cf412[_0x5bd31c][0x0][_0x4614('0xb')],'priority':_0x432adc[_0x4614('0x17')]++,'VoiceExtensionId':_0x9cf412[_0x5bd31c][0x0][_0x4614('0x18')]});_0x432adc[_0x4614('0x11')][_0x4614('0x1d')]({'type':_0x9cf412[_0x5bd31c][0x0][_0x4614('0x13')],'app':_0x4614('0x1a'),'appdata':_0x4614('0x2b'),'context':_0x9cf412[_0x5bd31c][0x0][_0x4614('0x16')],'exten':_0x9cf412[_0x5bd31c][0x0][_0x4614('0xb')],'priority':_0x432adc[_0x4614('0x17')]++,'VoiceExtensionId':_0x9cf412[_0x5bd31c][0x0][_0x4614('0x18')]});for(var _0x574324=0x0,_0x4b25d2=0x0;_0x574324<_0x9cf412[_0x5bd31c][_0x4614('0x2c')];_0x574324+=0x1,_0x4b25d2=0x0){var _0x1831f0=_0x9cf412[_0x5bd31c][_0x574324];if(_0x1831f0[_0x4614('0x13')]){_0x1831f0[_0x4614('0x13')]=_0x1831f0[_0x4614('0x13')][_0x4614('0x2d')]();}var _0x4f07d9=[];var _0x60b4ef=[];delete _0x1831f0['id'];delete _0x1831f0[_0x4614('0x2e')];delete _0x1831f0[_0x4614('0x2f')];var _0x441cc7=_0x1831f0['interval']!==_0x4614('0x30')?[_0x1831f0[_0x4614('0x31')]]:_0x1831f0[_0x4614('0x8')]?_[_0x4614('0xa')](_[_0x4614('0xd')](_0x432adc[_0x4614('0x6')],{'IntervalId':_0x1831f0[_0x4614('0x8')]}),_0x4614('0x31')):[];if(_0x1831f0[_0x4614('0x10')](_0x4614('0x32'))){if(_0x1831f0['tag']&&_0x1831f0[_0x4614('0x32')]!=='--'){_0x4f07d9[_0x4614('0x1d')]({'type':_0x1831f0['type'],'app':_0x4614('0x1a'),'appdata':'CDR(tag)='+_0x1831f0[_0x4614('0x32')],'context':_0x1831f0['context'],'exten':_0x1831f0['exten'],'priority':_0x441cc7['length']+_0x432adc[_0x4614('0x17')]+_0x4b25d2++,'VoiceExtensionId':_0x1831f0[_0x4614('0x18')]});}}if(_0x1831f0[_0x4614('0x13')]==='outbound'&&_0x1831f0['hasOwnProperty'](_0x4614('0x33'))){if(_0x1831f0[_0x4614('0x33')]){_0x4f07d9[_0x4614('0x1d')]({'type':_0x1831f0[_0x4614('0x13')],'app':_0x4614('0x21'),'appdata':_0x4614('0x34')+_0x1831f0[_0x4614('0x33')]+')','context':_0x1831f0['context'],'exten':_0x1831f0['exten'],'priority':_0x441cc7[_0x4614('0x2c')]+_0x432adc[_0x4614('0x17')]+_0x4b25d2++,'VoiceExtensionId':_0x1831f0['VoiceExtensionId']});}else{_0x4f07d9[_0x4614('0x1d')]({'type':_0x1831f0['type'],'app':_0x4614('0x21'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','context':_0x1831f0['context'],'exten':_0x1831f0[_0x4614('0xb')],'priority':_0x441cc7[_0x4614('0x2c')]+_0x432adc[_0x4614('0x17')]+_0x4b25d2++,'VoiceExtensionId':_0x1831f0[_0x4614('0x18')]});}}if(_0x1831f0[_0x4614('0x10')]('answer')){if(_0x2b727d[_0x4614('0x35')](_0x1831f0[_0x4614('0x36')][_0x4614('0x2d')]())>=0x0&&_0x1831f0[_0x4614('0x37')]!==_0x4614('0x38')){if(_0x1831f0[_0x4614('0x39')]){_0x4f07d9['push']({'type':_0x1831f0[_0x4614('0x13')],'app':_0x4614('0x21'),'appdata':_0x4614('0x3a'),'context':_0x1831f0[_0x4614('0x16')],'exten':_0x1831f0[_0x4614('0xb')],'priority':_0x441cc7[_0x4614('0x2c')]+_0x432adc[_0x4614('0x17')]+_0x4b25d2++,'VoiceExtensionId':_0x1831f0[_0x4614('0x18')]});_0x4f07d9[_0x4614('0x1d')]({'type':_0x1831f0[_0x4614('0x13')],'app':_0x4614('0x1a'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0x1831f0[_0x4614('0x16')],'exten':_0x1831f0[_0x4614('0xb')],'priority':_0x441cc7[_0x4614('0x2c')]+_0x432adc['priority']+_0x4b25d2++,'VoiceExtensionId':_0x1831f0[_0x4614('0x18')]});}else{_0x4f07d9[_0x4614('0x1d')]({'type':_0x1831f0[_0x4614('0x13')],'app':_0x4614('0x21'),'appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x1831f0[_0x4614('0x16')],'exten':_0x1831f0[_0x4614('0xb')],'priority':_0x441cc7[_0x4614('0x2c')]+_0x432adc[_0x4614('0x17')]+_0x4b25d2++,'VoiceExtensionId':_0x1831f0['VoiceExtensionId']});_0x4f07d9[_0x4614('0x1d')]({'type':_0x1831f0[_0x4614('0x13')],'app':_0x4614('0x1a'),'appdata':_0x4614('0x3b'),'context':_0x1831f0[_0x4614('0x16')],'exten':_0x1831f0[_0x4614('0xb')],'priority':_0x441cc7[_0x4614('0x2c')]+_0x432adc['priority']+_0x4b25d2++,'VoiceExtensionId':_0x1831f0['VoiceExtensionId']});}}}for(var _0x149b38=0x0;_0x149b38<_0x441cc7[_0x4614('0x2c')];_0x149b38+=0x1){var _0x5e828d=_0x432adc['priority']+_0x441cc7[_0x4614('0x2c')];var _0x3bc121=_0x149b38===_0x441cc7[_0x4614('0x2c')]-0x1?_0x432adc['priority']+_0x4f07d9[_0x4614('0x2c')]+_0x60b4ef[_0x4614('0x2c')]+0x2:_0x432adc[_0x4614('0x17')]+_0x149b38+0x1;_0x4f07d9[_0x4614('0x3c')](_0x149b38,0x0,{'type':_0x1831f0[_0x4614('0x13')],'app':'GotoIfTime','appdata':_0x441cc7[_0x149b38]+'?'+_0x1831f0[_0x4614('0x16')]+',${EXTEN},'+_0x5e828d+':'+_0x1831f0[_0x4614('0x16')]+_0x4614('0x3d')+_0x3bc121,'exten':_0x1831f0[_0x4614('0xb')],'context':_0x1831f0[_0x4614('0x16')],'priority':_0x432adc[_0x4614('0x17')]+_0x149b38,'VoiceExtensionId':_0x9cf412[_0x5bd31c][0x0]['VoiceExtensionId']});}_0x1831f0[_0x4614('0x17')]=_0x4f07d9[_0x4614('0x2c')]?_[_0x4614('0x3e')](_0x4f07d9)['priority']+0x1:_0x432adc[_0x4614('0x17')];_0x432adc[_0x4614('0x17')]=(_0x60b4ef[_0x4614('0x2c')]?_[_0x4614('0x3e')](_0x60b4ef)[_0x4614('0x17')]:_0x1831f0['priority'])+0x1;_0x432adc[_0x4614('0x11')]=_[_0x4614('0x3f')](_0x432adc[_0x4614('0x11')],_0x4f07d9,[_0x1831f0],_0x60b4ef);}_0x432adc[_0x4614('0x11')]['push']({'type':_0x9cf412[_0x5bd31c][0x0][_0x4614('0x13')],'app':_0x4614('0x40'),'exten':_0x9cf412[_0x5bd31c][0x0][_0x4614('0xb')],'context':_0x9cf412[_0x5bd31c][0x0][_0x4614('0x16')],'priority':_0x432adc[_0x4614('0x17')],'VoiceExtensionId':_0x9cf412[_0x5bd31c][0x0][_0x4614('0x18')]});_0x532c4c[_0x4614('0x1d')](_0x9cf412[_0x5bd31c][0x0][_0x4614('0x18')]);_0x43e136=_[_0x4614('0x3f')](_0x43e136,_0x432adc[_0x4614('0x11')]);}}return _0x18453e['transaction'](function(_0x2f2a03){return _0x18453e[_0x4614('0x2')][_0x4614('0x7')][_0x4614('0x41')]({'where':{'VoiceExtensionId':{'$in':_0x532c4c}},'transaction':_0x2f2a03})['then'](function(_0x386165){return _0x18453e[_0x4614('0x2')][_0x4614('0x7')]['bulkCreate'](_[_0x4614('0x42')](_0x43e136,'priority'),{'transaction':_0x2f2a03});});});})['catch'](function(_0x2b87ea){console[_0x4614('0x43')](_0x2b87ea);});}exports[_0x4614('0x44')]=rewrite;
\ No newline at end of file
index 5a1ba72..4089f63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1953=['contact:csv_','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','exit','SIGINT','info','CSV\x20import\x20process\x20stopped!','createReadStream','parse','duplicate','pause','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','util','lodash','ioredis','../../../config/environment','../../../config/logger','api','redis','socket.io-emitter','../../../api/cmContact/cmContact.socket','register','argv','undefined','null','Missing\x20filepath\x20parameter!','zipObject','split','Missing\x20socket_timestamp\x20parameter!','error','contact','index','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','message','join','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','email\x20format\x20is\x20not\x20valid!','ListId','CompanyId','find','Duplicate\x20Contact','create','keys','then','push','catch','Error\x20while\x20creating\x20contact:\x20','stringify','cmContact','checkHopper','inspect','insert','into','fromQuery','ContactId','createdAt','updatedAt','select','field','NOW()','scheduledAt','toString','from','where','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','cm_hopper','cm_contacts','id\x20IN\x20?','str','cm_hopper_final','\x20=\x20?','findAll','outbound','dialCheckDuplicateType','CmList','query','VoiceQueueId','onlyIfOpen','sequelize','all','VoiceQueue','BlackLists','get','Campaign','Lists','CampaignId','Error\x20processing\x20rows\x20block:','finally','emit','resume','resolve'];(function(_0x14e9a5,_0x3f2840){var _0x56b6c7=function(_0x25b24d){while(--_0x25b24d){_0x14e9a5['push'](_0x14e9a5['shift']());}};_0x56b6c7(++_0x3f2840);}(_0x1953,0xe6));var _0x3195=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x1953[_0x17d9e3];return _0x14192d;};'use strict';var BPromise=require('bluebird');var util=require(_0x3195('0x0'));var _=require(_0x3195('0x1'));var fs=require('fs');var squel=require('squel');var Papa=require('papaparse');var Redis=require(_0x3195('0x2'));var db=require('../../../mysqldb')['db'];var config=require(_0x3195('0x3'));var logger=require(_0x3195('0x4'))(_0x3195('0x5'));config[_0x3195('0x6')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x3195('0x7'))(new Redis(config[_0x3195('0x6')]));require(_0x3195('0x8'))[_0x3195('0x9')](socket);try{if(!process[_0x3195('0xa')][0x2]||process[_0x3195('0xa')][0x2]===_0x3195('0xb')||process['argv'][0x2]===_0x3195('0xc')){throw new Error(_0x3195('0xd'));}var FILEPATH=process[_0x3195('0xa')][0x2];if(!process[_0x3195('0xa')][0x3]||process[_0x3195('0xa')][0x3]===_0x3195('0xb')||process[_0x3195('0xa')][0x3]===_0x3195('0xc')||!process[_0x3195('0xa')][0x4]||process[_0x3195('0xa')][0x4]===_0x3195('0xb')||process['argv'][0x4]==='null'){throw new Error('Missing\x20binding\x20parameters!');}var FIELDS=_[_0x3195('0xe')](process[_0x3195('0xa')][0x3][_0x3195('0xf')](','),process[_0x3195('0xa')][0x4][_0x3195('0xf')](','));if(!process[_0x3195('0xa')][0x5]||process['argv'][0x5]===_0x3195('0xb')||process[_0x3195('0xa')][0x5]===_0x3195('0xc')){throw new Error('Missing\x20ListId\x20parameter!');}var LISTID=process[_0x3195('0xa')][0x5];var COMPANYID=process[_0x3195('0xa')][0x6]&&process[_0x3195('0xa')][0x6]!==_0x3195('0xb')&&process[_0x3195('0xa')][0x6]!==_0x3195('0xc')?process[_0x3195('0xa')][0x6]:null;var DUPLICATES=process['argv'][0x7]&&process[_0x3195('0xa')][0x7]!==_0x3195('0xb')&&process['argv'][0x7]!==_0x3195('0xc')?process[_0x3195('0xa')][0x7]:null;if(!process[_0x3195('0xa')][0x8]||process[_0x3195('0xa')][0x8]===_0x3195('0xb')||process[_0x3195('0xa')][0x8]==='null'){throw new Error(_0x3195('0x10'));}var SOCKET_TIMESTAMP=process['argv'][0x8];}catch(_0x5ab199){logger[_0x3195('0x11')](_0x5ab199);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(_0x42b190,_0x3992aa,_0x28e6c6,_0x15464f){var _0x3b3432={'message':_0x3992aa};_0x3b3432[_0x42b190]=!![];if(_0x28e6c6){_0x3b3432[_0x3195('0x12')]=_0x28e6c6;}if(_0x15464f){_0x3b3432[_0x3195('0x13')]=_0x15464f;}return _0x3b3432;}function isEmail(_0x421679){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'](_0x421679);}function checkRow(_0x26d14b,_0x2cc020,_0x52281a){return new BPromise(function(_0x24e213,_0x5940b7){if(_['isNil'](_0x26d14b)){return _0x5940b7(handleCheckRowError(_0x3195('0x11'),_0x3195('0x14'),null,_0x52281a));}if(_0x26d14b[_0x3195('0x15')]&&_0x26d14b[_0x3195('0x15')][_0x3195('0x16')]){var _0xbdfa2=_['map'](_0x26d14b[_0x3195('0x15')],_0x3195('0x17'))[_0x3195('0x18')](';');return _0x5940b7(handleCheckRowError(_0x3195('0x11'),_0xbdfa2,null,_0x52281a));}var _0xc54091={};for(var _0x59a805 in FIELDS){if(FIELDS[_0x3195('0x19')](_0x59a805)&&FIELDS[_0x59a805]){_0xc54091[_0x59a805]=_0x26d14b['data'][0x0][FIELDS[_0x59a805]]||_0x26d14b[_0x3195('0x1a')][0x0]['\ufeff'+FIELDS[_0x59a805]];}}if(!_0xc54091[_0x3195('0x1b')]){return _0x5940b7(handleCheckRowError('error',_0x3195('0x1c'),null,_0x52281a));}if(!_0xc54091[_0x3195('0x1d')]){return _0x5940b7(handleCheckRowError('error',_0x3195('0x1e'),null,_0x52281a));}if(_0xc54091[_0x3195('0x1f')]){var _0x5a27b0=moment(_0xc54091[_0x3195('0x1f')],_0x3195('0x20'));if(!_0x5a27b0[_0x3195('0x21')]()){return _0x5940b7(handleCheckRowError(_0x3195('0x11'),_0x3195('0x22'),null,_0x52281a));}}if(_0xc54091['email']){if(!isEmail(_0xc54091[_0x3195('0x23')])){return _0x5940b7(handleCheckRowError(_0x3195('0x11'),_0x3195('0x24'),null,_0x52281a));}}_0xc54091[_0x3195('0x25')]=LISTID;_0xc54091[_0x3195('0x26')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x3195('0x16')]&&_0x2cc020){var _0x1d9a45={};for(var _0x4a3159=0x0,_0x719d1c=DUPLICATES['length'];_0x4a3159<_0x719d1c;_0x4a3159+=0x1){_0x1d9a45[DUPLICATES[_0x4a3159]]=_0xc54091[DUPLICATES[_0x4a3159]];}var _0x33be9e=_[_0x3195('0x27')](_0x2cc020,_0x1d9a45);if(_0x33be9e){return _0x5940b7(handleCheckRowError('duplicate',_0x3195('0x28'),_0x33be9e,_0x52281a));}}return db['CmContact'][_0x3195('0x29')](_0xc54091,{'raw':!![],'hooks':![],'fields':_[_0x3195('0x2a')](_0xc54091)})[_0x3195('0x2b')](function(_0x599607){if(DUPLICATES&&DUPLICATES[_0x3195('0x16')]&&_0x2cc020){_0x2cc020[_0x3195('0x2c')](_['pick'](_0xc54091,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x599607['id'];return _0x24e213();})[_0x3195('0x2d')](function(_0x28923f){return _0x5940b7(handleCheckRowError(_0x3195('0x11'),_0x3195('0x2e')+(_0x28923f[_0x3195('0x17')]||JSON[_0x3195('0x2f')](_0x28923f)),null,_0x52281a));});});}function checkHopper(){function _0x560865(){return function(_0x104338){logger[_0x3195('0x11')](_0x3195('0x30'),_0x3195('0x31'),util[_0x3195('0x32')](_0x104338,{'showHidden':![],'depth':null}));};}var _0x31490b=function(_0x2dedfa,_0x2ba332){var _0x4f6b79=squel[_0x3195('0x33')]()[_0x3195('0x34')]('cm_hopper')[_0x3195('0x35')]([_0x3195('0x1d'),'scheduledAt',_0x3195('0x36'),'ListId',_0x2ba332,_0x3195('0x37'),_0x3195('0x38')],squel[_0x3195('0x39')]()[_0x3195('0x3a')]('phone','phone')['field'](_0x3195('0x3b'),_0x3195('0x3c'))[_0x3195('0x3a')]('id',_0x3195('0x36'))[_0x3195('0x3a')](LISTID[_0x3195('0x3d')](),_0x3195('0x25'))[_0x3195('0x3a')](_0x2dedfa['id'][_0x3195('0x3d')](),_0x2ba332)['field'](_0x3195('0x3b'),'createdAt')[_0x3195('0x3a')](_0x3195('0x3b'),_0x3195('0x38'))[_0x3195('0x3e')]('cm_contacts')[_0x3195('0x3f')](_0x3195('0x40'))[_0x3195('0x3f')](_0x3195('0x41'),LISTID['toString']())[_0x3195('0x3f')](_0x3195('0x42'))[_0x3195('0x3f')](_0x3195('0x43'),squel[_0x3195('0x39')]()[_0x3195('0x3a')](_0x3195('0x1d'))[_0x3195('0x3e')]('cm_hopper')[_0x3195('0x3f')](_0x2ba332+'\x20=\x20?',_0x2dedfa['id'][_0x3195('0x3d')]())))[_0x3195('0x3d')]();return _0x4f6b79;};var _0x309bcd=function(_0x6c8a96,_0xc38eb0){var _0x46fd23=squel['insert']()['into'](_0x3195('0x44'))[_0x3195('0x35')]([_0x3195('0x1d'),_0x3195('0x3c'),'ContactId','ListId',_0xc38eb0,_0x3195('0x37'),_0x3195('0x38')],squel['select']()[_0x3195('0x3a')](_0x3195('0x1d'),_0x3195('0x1d'))[_0x3195('0x3a')](_0x3195('0x3b'),_0x3195('0x3c'))[_0x3195('0x3a')]('id','ContactId')[_0x3195('0x3a')](LISTID[_0x3195('0x3d')](),_0x3195('0x25'))['field'](_0x6c8a96['id'][_0x3195('0x3d')](),_0xc38eb0)[_0x3195('0x3a')](_0x3195('0x3b'),'createdAt')[_0x3195('0x3a')](_0x3195('0x3b'),_0x3195('0x38'))[_0x3195('0x3e')](_0x3195('0x45'))[_0x3195('0x3f')](_0x3195('0x40'))[_0x3195('0x3f')]('ListId\x20=\x20?',LISTID[_0x3195('0x3d')]())[_0x3195('0x3f')](_0x3195('0x46'),squel[_0x3195('0x47')](hopperContacts))[_0x3195('0x3f')](_0x3195('0x42'))['where']('phone\x20NOT\x20IN\x20(?)',squel[_0x3195('0x39')]()[_0x3195('0x3a')]('calleridnum')[_0x3195('0x3e')](_0x3195('0x48'))[_0x3195('0x3f')](_0xc38eb0+_0x3195('0x49'),_0x6c8a96['id'][_0x3195('0x3d')]()))[_0x3195('0x3f')](_0x3195('0x43'),squel[_0x3195('0x39')]()[_0x3195('0x3a')](_0x3195('0x1d'))[_0x3195('0x3e')](_0x3195('0x44'))['where'](_0xc38eb0+_0x3195('0x49'),_0x6c8a96['id'][_0x3195('0x3d')]())))[_0x3195('0x3d')]();return _0x46fd23;};function _0x3894e7(_0x553ce8,_0x32bd1a){var _0x56498e=squel[_0x3195('0x33')]()[_0x3195('0x34')](_0x3195('0x44'))[_0x3195('0x35')]([_0x3195('0x1d'),_0x3195('0x3c'),_0x3195('0x36'),_0x3195('0x25'),_0x32bd1a,_0x3195('0x37'),_0x3195('0x38')],squel[_0x3195('0x39')]()['field']('phone','phone')[_0x3195('0x3a')](_0x3195('0x3b'),_0x3195('0x3c'))[_0x3195('0x3a')]('id','ContactId')[_0x3195('0x3a')](LISTID[_0x3195('0x3d')](),_0x3195('0x25'))[_0x3195('0x3a')](_0x553ce8['id'][_0x3195('0x3d')](),_0x32bd1a)[_0x3195('0x3a')](_0x3195('0x3b'),_0x3195('0x37'))[_0x3195('0x3a')](_0x3195('0x3b'),_0x3195('0x38'))[_0x3195('0x3e')](_0x3195('0x45'))[_0x3195('0x3f')](_0x3195('0x40'))[_0x3195('0x3f')]('ListId\x20=\x20?',LISTID['toString']())[_0x3195('0x3f')]('id\x20IN\x20?',squel['str'](hopperContacts))['where'](_0x3195('0x42')))['toString']();return _0x56498e;}function _0x3136db(_0x1d4693,_0x3f6a3f){var _0x35bb1f=squel['insert']()[_0x3195('0x34')]('cm_hopper_black')['fromQuery']([_0x3195('0x1d'),'ContactId',_0x3195('0x25'),_0x3f6a3f,_0x3195('0x37'),_0x3195('0x38')],squel[_0x3195('0x39')]()[_0x3195('0x3a')](_0x3195('0x1d'),_0x3195('0x1d'))[_0x3195('0x3a')]('id',_0x3195('0x36'))[_0x3195('0x3a')](LISTID[_0x3195('0x3d')](),'ListId')[_0x3195('0x3a')](_0x1d4693['id'][_0x3195('0x3d')](),_0x3f6a3f)['field'](_0x3195('0x3b'),'createdAt')[_0x3195('0x3a')](_0x3195('0x3b'),'updatedAt')[_0x3195('0x3e')](_0x3195('0x45'))[_0x3195('0x3f')](_0x3195('0x40'))[_0x3195('0x3f')](_0x3195('0x41'),LISTID[_0x3195('0x3d')]())['where'](_0x3195('0x46'),squel[_0x3195('0x47')](hopperContacts))[_0x3195('0x3f')](_0x3195('0x42')))[_0x3195('0x3d')]();return _0x35bb1f;}return db['VoiceQueue'][_0x3195('0x4a')]({'where':{'type':_0x3195('0x4b')},'attributes':['id',_0x3195('0x4c')],'include':[{'model':db[_0x3195('0x4d')],'as':'Lists','where':{'id':LISTID}}]})[_0x3195('0x2b')](function(_0x2f299f){var _0x22e82c=[];if(_0x2f299f){var _0x2d66ac;for(var _0x502706=0x0,_0x27b44a;_0x502706<_0x2f299f[_0x3195('0x16')];_0x502706+=0x1){_0x27b44a=_0x2f299f[_0x502706]['get']({'plain':!![]});switch(_0x27b44a[_0x3195('0x4c')]){case'always':_0x22e82c[_0x3195('0x2c')](db['sequelize'][_0x3195('0x4e')](_0x309bcd(_0x27b44a,_0x3195('0x4f')))[_0x3195('0x2b')](function(){})[_0x3195('0x2d')](_0x560865()));break;case _0x3195('0x50'):_0x22e82c[_0x3195('0x2c')](db[_0x3195('0x51')][_0x3195('0x4e')](_0x31490b(_0x27b44a,_0x3195('0x4f')))[_0x3195('0x2b')](function(){})[_0x3195('0x2d')](_0x560865()));break;default:_0x22e82c[_0x3195('0x2c')](db[_0x3195('0x51')][_0x3195('0x4e')](_0x3894e7(_0x27b44a,_0x3195('0x4f')))[_0x3195('0x2b')](function(){})[_0x3195('0x2d')](_0x560865()));}}}return _0x22e82c;})[_0x3195('0x52')]()[_0x3195('0x2b')](function(){return db[_0x3195('0x53')][_0x3195('0x4a')]({'where':{'type':_0x3195('0x4b')},'attributes':['id'],'include':[{'model':db['CmList'],'as':_0x3195('0x54'),'where':{'id':LISTID}}]})[_0x3195('0x2b')](function(_0x1d8f99){var _0x3eeab3=[];if(_0x1d8f99){var _0x2f4792;for(var _0x3c380a=0x0,_0x1ba2a2;_0x3c380a<_0x1d8f99[_0x3195('0x16')];_0x3c380a+=0x1){_0x1ba2a2=_0x1d8f99[_0x3c380a][_0x3195('0x55')]({'plain':!![]});_0x3eeab3['push'](db['sequelize']['query'](_0x3136db(_0x1ba2a2,_0x3195('0x4f')))[_0x3195('0x2b')](function(){})[_0x3195('0x2d')](_0x560865()));}}return _0x3eeab3;})[_0x3195('0x52')]();})[_0x3195('0x2b')](function(){return db[_0x3195('0x56')]['findAll']({'attributes':['id',_0x3195('0x4c')],'include':[{'model':db[_0x3195('0x4d')],'as':_0x3195('0x57'),'where':{'id':LISTID}}]})[_0x3195('0x2b')](function(_0x4bea14){var _0x33cc62=[];if(_0x4bea14){for(var _0x19a7f5=0x0,_0x6dd5d5;_0x19a7f5<_0x4bea14[_0x3195('0x16')];_0x19a7f5+=0x1){_0x6dd5d5=_0x4bea14[_0x19a7f5][_0x3195('0x55')]({'plain':!![]});switch(_0x6dd5d5[_0x3195('0x4c')]){case'always':_0x33cc62[_0x3195('0x2c')](db[_0x3195('0x51')][_0x3195('0x4e')](_0x309bcd(_0x6dd5d5,'CampaignId'))[_0x3195('0x2b')](function(){})['catch'](_0x560865()));break;case'onlyIfOpen':_0x33cc62[_0x3195('0x2c')](db['sequelize'][_0x3195('0x4e')](_0x31490b(_0x6dd5d5,_0x3195('0x58')))['then'](function(){})[_0x3195('0x2d')](_0x560865()));break;default:_0x33cc62[_0x3195('0x2c')](db[_0x3195('0x51')][_0x3195('0x4e')](_0x3894e7(_0x6dd5d5,_0x3195('0x58')))[_0x3195('0x2b')](function(){})['catch'](_0x560865()));}}}return _0x33cc62;})['all']();})[_0x3195('0x2b')](function(){return db[_0x3195('0x56')][_0x3195('0x4a')]({'attributes':['id'],'include':[{'model':db['CmList'],'as':_0x3195('0x54'),'where':{'id':LISTID}}]})['then'](function(_0x3de554){var _0x5bbaf9=[];if(_0x3de554){for(var _0x53b09c=0x0,_0x5cd651;_0x53b09c<_0x3de554[_0x3195('0x16')];_0x53b09c+=0x1){_0x5cd651=_0x3de554[_0x53b09c][_0x3195('0x55')]({'plain':!![]});_0x5bbaf9[_0x3195('0x2c')](db['sequelize'][_0x3195('0x4e')](_0x3136db(_0x5cd651,_0x3195('0x58')))[_0x3195('0x2b')](function(){})[_0x3195('0x2d')](_0x560865()));}}return _0x5bbaf9;})['all']();})[_0x3195('0x2d')](function(_0x3b8ae0){logger[_0x3195('0x11')]('cmContact,\x20%s,\x20%s','generalCheckHopper',_0x3b8ae0[_0x3195('0x17')]);});}var processPromises=function(_0x5ef872){return BPromise['all'](promises)[_0x3195('0x2b')](function(_0x20ecb4){})[_0x3195('0x2d')](function(_0x4100ee){logger[_0x3195('0x11')](_0x3195('0x59'),JSON['stringify'](_0x4100ee));})[_0x3195('0x5a')](function(){socket[_0x3195('0x5b')]('contact:csv_'+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x5ef872){return _0x5ef872[_0x3195('0x5c')]();}});};var endCsv=function(){return BPromise[_0x3195('0x5d')]()[_0x3195('0x2b')](function(){if(hopperContacts){return checkHopper();}})[_0x3195('0x2b')](function(){socket[_0x3195('0x5b')](_0x3195('0x5e')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x3195('0x5f')](FILEPATH);}catch(_0x496db5){logger[_0x3195('0x11')](_0x3195('0x60'),JSON['stringify'](_0x496db5));}finally{process[_0x3195('0x61')](0x0);}});};process['on'](_0x3195('0x62'),function(){logger[_0x3195('0x63')](_0x3195('0x64'));endCsv();});function main(){return BPromise[_0x3195('0x5d')]()['then'](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x3195('0xf')](',');return db['CmContact'][_0x3195('0x4a')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})['then'](function(_0x47f317){var _0x507b99=fs[_0x3195('0x65')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x3195('0x66')](_0x507b99,{'header':!![],'skipEmptyLines':!![],'step':function(_0x1d10b5,_0x4ce262){total+=0x1;var _0x412c42=total;promises[_0x3195('0x2c')](checkRow(_0x1d10b5,_0x47f317,_0x412c42)[_0x3195('0x2b')](function(){success+=0x1;})['catch'](function(_0x575296){if(_0x575296[_0x3195('0x11')]){errors+=0x1;delete _0x575296['error'];}else if(_0x575296['duplicate']){duplicates+=0x1;delete _0x575296[_0x3195('0x67')];}rows[_0x3195('0x2c')](_0x575296);}));if(total%0xc8===0x0){_0x4ce262[_0x3195('0x68')]();return processPromises(_0x4ce262);}},'complete':function(){return processPromises()['then'](function(){logger[_0x3195('0x63')](_0x3195('0x69'));endCsv();});},'error':function(_0x3015c6,_0x7da2af){logger['info'](_0x3195('0x6a'),JSON[_0x3195('0x2f')](_0x3015c6));endCsv();}});})[_0x3195('0x2d')](function(_0x3fda54){logger[_0x3195('0x11')](_0x3195('0x6b'),JSON[_0x3195('0x2f')](_0x3fda54));});}main();
\ No newline at end of file
+var _0x386b=['api','redis','defaults','socket.io-emitter','argv','undefined','null','Missing\x20filepath\x20parameter!','Missing\x20binding\x20parameters!','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','contact','index','test','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','message','join','data','firstName','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','email\x20format\x20is\x20not\x20valid!','ListId','find','duplicate','Duplicate\x20Contact','CmContact','create','keys','then','pick','catch','stringify','cmContact','inspect','insert','into','fromQuery','scheduledAt','ContactId','createdAt','updatedAt','select','field','NOW()','toString','from','cm_contacts','where','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','cm_hopper','\x20=\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','str','cm_hopper_black','VoiceQueue','findAll','outbound','CmList','Lists','get','dialCheckDuplicateType','always','push','sequelize','query','VoiceQueueId','onlyIfOpen','all','BlackLists','Campaign','CampaignId','cmContact,\x20%s,\x20%s','generalCheckHopper','Error\x20processing\x20rows\x20block:','emit','resume','resolve','contact:csv_','unlinkSync','exit','SIGINT','CSV\x20import\x20process\x20stopped!','parse','pause','info','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','lodash','squel'];(function(_0x1278cc,_0x1f070d){var _0x484807=function(_0x2dd294){while(--_0x2dd294){_0x1278cc['push'](_0x1278cc['shift']());}};_0x484807(++_0x1f070d);}(_0x386b,0x67));var _0xb386=function(_0x240657,_0x5dd4f1){_0x240657=_0x240657-0x0;var _0x42c4ac=_0x386b[_0x240657];return _0x42c4ac;};'use strict';var BPromise=require(_0xb386('0x0'));var util=require('util');var _=require(_0xb386('0x1'));var fs=require('fs');var squel=require(_0xb386('0x2'));var Papa=require('papaparse');var Redis=require('ioredis');var db=require('../../../mysqldb')['db'];var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0xb386('0x3'));config[_0xb386('0x4')]=_[_0xb386('0x5')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xb386('0x6'))(new Redis(config['redis']));require('../../../api/cmContact/cmContact.socket')['register'](socket);try{if(!process[_0xb386('0x7')][0x2]||process[_0xb386('0x7')][0x2]===_0xb386('0x8')||process[_0xb386('0x7')][0x2]===_0xb386('0x9')){throw new Error(_0xb386('0xa'));}var FILEPATH=process['argv'][0x2];if(!process['argv'][0x3]||process[_0xb386('0x7')][0x3]===_0xb386('0x8')||process[_0xb386('0x7')][0x3]===_0xb386('0x9')||!process[_0xb386('0x7')][0x4]||process[_0xb386('0x7')][0x4]==='undefined'||process['argv'][0x4]==='null'){throw new Error(_0xb386('0xb'));}var FIELDS=_['zipObject'](process[_0xb386('0x7')][0x3][_0xb386('0xc')](','),process[_0xb386('0x7')][0x4][_0xb386('0xc')](','));if(!process['argv'][0x5]||process[_0xb386('0x7')][0x5]===_0xb386('0x8')||process['argv'][0x5]===_0xb386('0x9')){throw new Error(_0xb386('0xd'));}var LISTID=process[_0xb386('0x7')][0x5];var COMPANYID=process['argv'][0x6]&&process[_0xb386('0x7')][0x6]!==_0xb386('0x8')&&process[_0xb386('0x7')][0x6]!==_0xb386('0x9')?process[_0xb386('0x7')][0x6]:null;var DUPLICATES=process['argv'][0x7]&&process[_0xb386('0x7')][0x7]!=='undefined'&&process[_0xb386('0x7')][0x7]!==_0xb386('0x9')?process[_0xb386('0x7')][0x7]:null;if(!process[_0xb386('0x7')][0x8]||process[_0xb386('0x7')][0x8]===_0xb386('0x8')||process[_0xb386('0x7')][0x8]==='null'){throw new Error(_0xb386('0xe'));}var SOCKET_TIMESTAMP=process[_0xb386('0x7')][0x8];}catch(_0x101941){logger[_0xb386('0xf')](_0x101941);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(_0x22cc2d,_0xa36b75,_0x11a02f,_0x9fbaff){var _0x24b77e={'message':_0xa36b75};_0x24b77e[_0x22cc2d]=!![];if(_0x11a02f){_0x24b77e[_0xb386('0x10')]=_0x11a02f;}if(_0x9fbaff){_0x24b77e[_0xb386('0x11')]=_0x9fbaff;}return _0x24b77e;}function isEmail(_0x4d5c55){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))*$/[_0xb386('0x12')](_0x4d5c55);}function checkRow(_0x27b6da,_0xc454c2,_0x550a8a){return new BPromise(function(_0xb905ee,_0x2b8e00){if(_[_0xb386('0x13')](_0x27b6da)){return _0x2b8e00(handleCheckRowError(_0xb386('0xf'),_0xb386('0x14'),null,_0x550a8a));}if(_0x27b6da[_0xb386('0x15')]&&_0x27b6da[_0xb386('0x15')][_0xb386('0x16')]){var _0x308f5d=_['map'](_0x27b6da['errors'],_0xb386('0x17'))[_0xb386('0x18')](';');return _0x2b8e00(handleCheckRowError('error',_0x308f5d,null,_0x550a8a));}var _0x209ab0={};for(var _0x1d071c in FIELDS){if(FIELDS['hasOwnProperty'](_0x1d071c)&&FIELDS[_0x1d071c]){_0x209ab0[_0x1d071c]=_0x27b6da[_0xb386('0x19')][0x0][FIELDS[_0x1d071c]]||_0x27b6da[_0xb386('0x19')][0x0]['\ufeff'+FIELDS[_0x1d071c]];}}if(!_0x209ab0[_0xb386('0x1a')]){return _0x2b8e00(handleCheckRowError(_0xb386('0xf'),_0xb386('0x1b'),null,_0x550a8a));}if(!_0x209ab0[_0xb386('0x1c')]){return _0x2b8e00(handleCheckRowError(_0xb386('0xf'),_0xb386('0x1d'),null,_0x550a8a));}if(_0x209ab0[_0xb386('0x1e')]){var _0x37cb30=moment(_0x209ab0['birthDate'],_0xb386('0x1f'));if(!_0x37cb30[_0xb386('0x20')]()){return _0x2b8e00(handleCheckRowError(_0xb386('0xf'),_0xb386('0x21'),null,_0x550a8a));}}if(_0x209ab0[_0xb386('0x22')]){if(!isEmail(_0x209ab0['email'])){return _0x2b8e00(handleCheckRowError(_0xb386('0xf'),_0xb386('0x23'),null,_0x550a8a));}}_0x209ab0[_0xb386('0x24')]=LISTID;_0x209ab0['CompanyId']=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0xb386('0x16')]&&_0xc454c2){var _0xc0826e={};for(var _0x15c3b7=0x0,_0x2342d1=DUPLICATES[_0xb386('0x16')];_0x15c3b7<_0x2342d1;_0x15c3b7+=0x1){_0xc0826e[DUPLICATES[_0x15c3b7]]=_0x209ab0[DUPLICATES[_0x15c3b7]];}var _0x24d225=_[_0xb386('0x25')](_0xc454c2,_0xc0826e);if(_0x24d225){return _0x2b8e00(handleCheckRowError(_0xb386('0x26'),_0xb386('0x27'),_0x24d225,_0x550a8a));}}return db[_0xb386('0x28')][_0xb386('0x29')](_0x209ab0,{'raw':!![],'hooks':![],'fields':_[_0xb386('0x2a')](_0x209ab0)})[_0xb386('0x2b')](function(_0x489132){if(DUPLICATES&&DUPLICATES[_0xb386('0x16')]&&_0xc454c2){_0xc454c2['push'](_[_0xb386('0x2c')](_0x209ab0,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x489132['id'];return _0xb905ee();})[_0xb386('0x2d')](function(_0x492078){return _0x2b8e00(handleCheckRowError('error','Error\x20while\x20creating\x20contact:\x20'+(_0x492078[_0xb386('0x17')]||JSON[_0xb386('0x2e')](_0x492078)),null,_0x550a8a));});});}function checkHopper(){function _0x23caf4(){return function(_0x293f80){logger[_0xb386('0xf')](_0xb386('0x2f'),'checkHopper',util[_0xb386('0x30')](_0x293f80,{'showHidden':![],'depth':null}));};}var _0x5280ff=function(_0x326e60,_0x419e9c){var _0x23be74=squel[_0xb386('0x31')]()[_0xb386('0x32')]('cm_hopper')[_0xb386('0x33')]([_0xb386('0x1c'),_0xb386('0x34'),_0xb386('0x35'),_0xb386('0x24'),_0x419e9c,_0xb386('0x36'),_0xb386('0x37')],squel[_0xb386('0x38')]()[_0xb386('0x39')](_0xb386('0x1c'),'phone')['field'](_0xb386('0x3a'),_0xb386('0x34'))[_0xb386('0x39')]('id',_0xb386('0x35'))[_0xb386('0x39')](LISTID[_0xb386('0x3b')](),_0xb386('0x24'))[_0xb386('0x39')](_0x326e60['id'][_0xb386('0x3b')](),_0x419e9c)[_0xb386('0x39')](_0xb386('0x3a'),_0xb386('0x36'))[_0xb386('0x39')](_0xb386('0x3a'),_0xb386('0x37'))[_0xb386('0x3c')](_0xb386('0x3d'))[_0xb386('0x3e')]('deletedAt\x20IS\x20NULL')[_0xb386('0x3e')](_0xb386('0x3f'),LISTID[_0xb386('0x3b')]())[_0xb386('0x3e')](_0xb386('0x40'))[_0xb386('0x3e')](_0xb386('0x41'),squel[_0xb386('0x38')]()[_0xb386('0x39')](_0xb386('0x1c'))[_0xb386('0x3c')](_0xb386('0x42'))['where'](_0x419e9c+_0xb386('0x43'),_0x326e60['id']['toString']())))[_0xb386('0x3b')]();return _0x23be74;};var _0x4189b7=function(_0x260350,_0x7b37bc){var _0x351324=squel[_0xb386('0x31')]()[_0xb386('0x32')]('cm_hopper')['fromQuery']([_0xb386('0x1c'),_0xb386('0x34'),_0xb386('0x35'),_0xb386('0x24'),_0x7b37bc,_0xb386('0x36'),_0xb386('0x37')],squel[_0xb386('0x38')]()[_0xb386('0x39')](_0xb386('0x1c'),_0xb386('0x1c'))[_0xb386('0x39')](_0xb386('0x3a'),_0xb386('0x34'))[_0xb386('0x39')]('id','ContactId')[_0xb386('0x39')](LISTID[_0xb386('0x3b')](),_0xb386('0x24'))[_0xb386('0x39')](_0x260350['id']['toString'](),_0x7b37bc)[_0xb386('0x39')](_0xb386('0x3a'),_0xb386('0x36'))[_0xb386('0x39')](_0xb386('0x3a'),'updatedAt')[_0xb386('0x3c')](_0xb386('0x3d'))['where'](_0xb386('0x44'))[_0xb386('0x3e')]('ListId\x20=\x20?',LISTID[_0xb386('0x3b')]())[_0xb386('0x3e')](_0xb386('0x45'),squel[_0xb386('0x46')](hopperContacts))[_0xb386('0x3e')](_0xb386('0x40'))[_0xb386('0x3e')](_0xb386('0x41'),squel[_0xb386('0x38')]()[_0xb386('0x39')]('calleridnum')[_0xb386('0x3c')]('cm_hopper_final')[_0xb386('0x3e')](_0x7b37bc+_0xb386('0x43'),_0x260350['id']['toString']()))[_0xb386('0x3e')](_0xb386('0x41'),squel[_0xb386('0x38')]()[_0xb386('0x39')](_0xb386('0x1c'))[_0xb386('0x3c')](_0xb386('0x42'))['where'](_0x7b37bc+_0xb386('0x43'),_0x260350['id'][_0xb386('0x3b')]())))[_0xb386('0x3b')]();return _0x351324;};function _0x2a9c8a(_0x256ecb,_0xa3c3ac){var _0x333312=squel['insert']()[_0xb386('0x32')](_0xb386('0x42'))[_0xb386('0x33')]([_0xb386('0x1c'),'scheduledAt',_0xb386('0x35'),'ListId',_0xa3c3ac,_0xb386('0x36'),_0xb386('0x37')],squel[_0xb386('0x38')]()[_0xb386('0x39')]('phone',_0xb386('0x1c'))['field'](_0xb386('0x3a'),'scheduledAt')['field']('id',_0xb386('0x35'))[_0xb386('0x39')](LISTID['toString'](),_0xb386('0x24'))[_0xb386('0x39')](_0x256ecb['id'][_0xb386('0x3b')](),_0xa3c3ac)[_0xb386('0x39')](_0xb386('0x3a'),_0xb386('0x36'))[_0xb386('0x39')](_0xb386('0x3a'),_0xb386('0x37'))[_0xb386('0x3c')](_0xb386('0x3d'))[_0xb386('0x3e')](_0xb386('0x44'))[_0xb386('0x3e')]('ListId\x20=\x20?',LISTID[_0xb386('0x3b')]())[_0xb386('0x3e')](_0xb386('0x45'),squel[_0xb386('0x46')](hopperContacts))[_0xb386('0x3e')](_0xb386('0x40')))['toString']();return _0x333312;}function _0x24b043(_0x45337d,_0x3ac374){var _0x356f42=squel[_0xb386('0x31')]()['into'](_0xb386('0x47'))['fromQuery'](['phone','ContactId',_0xb386('0x24'),_0x3ac374,_0xb386('0x36'),'updatedAt'],squel[_0xb386('0x38')]()[_0xb386('0x39')](_0xb386('0x1c'),_0xb386('0x1c'))['field']('id',_0xb386('0x35'))[_0xb386('0x39')](LISTID[_0xb386('0x3b')](),'ListId')[_0xb386('0x39')](_0x45337d['id'][_0xb386('0x3b')](),_0x3ac374)['field'](_0xb386('0x3a'),_0xb386('0x36'))[_0xb386('0x39')]('NOW()','updatedAt')[_0xb386('0x3c')]('cm_contacts')['where'](_0xb386('0x44'))[_0xb386('0x3e')](_0xb386('0x3f'),LISTID[_0xb386('0x3b')]())['where'](_0xb386('0x45'),squel[_0xb386('0x46')](hopperContacts))[_0xb386('0x3e')]('phone\x20IS\x20NOT\x20NULL'))[_0xb386('0x3b')]();return _0x356f42;}return db[_0xb386('0x48')][_0xb386('0x49')]({'where':{'type':_0xb386('0x4a')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db[_0xb386('0x4b')],'as':_0xb386('0x4c'),'where':{'id':LISTID}}]})[_0xb386('0x2b')](function(_0x59937b){var _0x3ced30=[];if(_0x59937b){var _0x58f372;for(var _0x2da7b9=0x0,_0x1233fa;_0x2da7b9<_0x59937b[_0xb386('0x16')];_0x2da7b9+=0x1){_0x1233fa=_0x59937b[_0x2da7b9][_0xb386('0x4d')]({'plain':!![]});switch(_0x1233fa[_0xb386('0x4e')]){case _0xb386('0x4f'):_0x3ced30[_0xb386('0x50')](db[_0xb386('0x51')][_0xb386('0x52')](_0x4189b7(_0x1233fa,_0xb386('0x53')))[_0xb386('0x2b')](function(){})[_0xb386('0x2d')](_0x23caf4()));break;case _0xb386('0x54'):_0x3ced30[_0xb386('0x50')](db[_0xb386('0x51')][_0xb386('0x52')](_0x5280ff(_0x1233fa,_0xb386('0x53')))[_0xb386('0x2b')](function(){})[_0xb386('0x2d')](_0x23caf4()));break;default:_0x3ced30[_0xb386('0x50')](db[_0xb386('0x51')][_0xb386('0x52')](_0x2a9c8a(_0x1233fa,'VoiceQueueId'))[_0xb386('0x2b')](function(){})[_0xb386('0x2d')](_0x23caf4()));}}}return _0x3ced30;})[_0xb386('0x55')]()[_0xb386('0x2b')](function(){return db[_0xb386('0x48')][_0xb386('0x49')]({'where':{'type':_0xb386('0x4a')},'attributes':['id'],'include':[{'model':db[_0xb386('0x4b')],'as':_0xb386('0x56'),'where':{'id':LISTID}}]})[_0xb386('0x2b')](function(_0x3fc22b){var _0x55f625=[];if(_0x3fc22b){var _0x37dacf;for(var _0x58185e=0x0,_0x4a9152;_0x58185e<_0x3fc22b['length'];_0x58185e+=0x1){_0x4a9152=_0x3fc22b[_0x58185e][_0xb386('0x4d')]({'plain':!![]});_0x55f625[_0xb386('0x50')](db[_0xb386('0x51')][_0xb386('0x52')](_0x24b043(_0x4a9152,_0xb386('0x53')))[_0xb386('0x2b')](function(){})[_0xb386('0x2d')](_0x23caf4()));}}return _0x55f625;})[_0xb386('0x55')]();})[_0xb386('0x2b')](function(){return db[_0xb386('0x57')][_0xb386('0x49')]({'attributes':['id',_0xb386('0x4e')],'include':[{'model':db[_0xb386('0x4b')],'as':_0xb386('0x4c'),'where':{'id':LISTID}}]})[_0xb386('0x2b')](function(_0x3bfa5f){var _0x2386a6=[];if(_0x3bfa5f){for(var _0x3adf77=0x0,_0xe2ef4c;_0x3adf77<_0x3bfa5f[_0xb386('0x16')];_0x3adf77+=0x1){_0xe2ef4c=_0x3bfa5f[_0x3adf77]['get']({'plain':!![]});switch(_0xe2ef4c['dialCheckDuplicateType']){case _0xb386('0x4f'):_0x2386a6[_0xb386('0x50')](db['sequelize'][_0xb386('0x52')](_0x4189b7(_0xe2ef4c,'CampaignId'))[_0xb386('0x2b')](function(){})['catch'](_0x23caf4()));break;case _0xb386('0x54'):_0x2386a6['push'](db[_0xb386('0x51')][_0xb386('0x52')](_0x5280ff(_0xe2ef4c,_0xb386('0x58')))[_0xb386('0x2b')](function(){})[_0xb386('0x2d')](_0x23caf4()));break;default:_0x2386a6[_0xb386('0x50')](db[_0xb386('0x51')][_0xb386('0x52')](_0x2a9c8a(_0xe2ef4c,_0xb386('0x58')))[_0xb386('0x2b')](function(){})[_0xb386('0x2d')](_0x23caf4()));}}}return _0x2386a6;})[_0xb386('0x55')]();})[_0xb386('0x2b')](function(){return db[_0xb386('0x57')][_0xb386('0x49')]({'attributes':['id'],'include':[{'model':db['CmList'],'as':_0xb386('0x56'),'where':{'id':LISTID}}]})['then'](function(_0x13df8a){var _0x16eb78=[];if(_0x13df8a){for(var _0x2214e6=0x0,_0x8b5715;_0x2214e6<_0x13df8a[_0xb386('0x16')];_0x2214e6+=0x1){_0x8b5715=_0x13df8a[_0x2214e6]['get']({'plain':!![]});_0x16eb78[_0xb386('0x50')](db[_0xb386('0x51')]['query'](_0x24b043(_0x8b5715,_0xb386('0x58')))['then'](function(){})[_0xb386('0x2d')](_0x23caf4()));}}return _0x16eb78;})[_0xb386('0x55')]();})[_0xb386('0x2d')](function(_0x37dde4){logger[_0xb386('0xf')](_0xb386('0x59'),_0xb386('0x5a'),_0x37dde4[_0xb386('0x17')]);});}var processPromises=function(_0x7dfe6c){return BPromise[_0xb386('0x55')](promises)['then'](function(_0x4909d5){})['catch'](function(_0x1b60d0){logger[_0xb386('0xf')](_0xb386('0x5b'),JSON[_0xb386('0x2e')](_0x1b60d0));})['finally'](function(){socket[_0xb386('0x5c')]('contact:csv_'+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x7dfe6c){return _0x7dfe6c[_0xb386('0x5d')]();}});};var endCsv=function(){return BPromise[_0xb386('0x5e')]()[_0xb386('0x2b')](function(){if(hopperContacts){return checkHopper();}})[_0xb386('0x2b')](function(){socket['emit'](_0xb386('0x5f')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0xb386('0x60')](FILEPATH);}catch(_0x5f5cdd){logger[_0xb386('0xf')]('Unable\x20to\x20delete\x20temp\x20file:',JSON[_0xb386('0x2e')](_0x5f5cdd));}finally{process[_0xb386('0x61')](0x0);}});};process['on'](_0xb386('0x62'),function(){logger['info'](_0xb386('0x63'));endCsv();});function main(){return BPromise[_0xb386('0x5e')]()[_0xb386('0x2b')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0xb386('0xc')](',');return db[_0xb386('0x28')][_0xb386('0x49')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0xb386('0x2b')](function(_0xe0ecdb){var _0x3bfcbf=fs['createReadStream'](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0xb386('0x64')](_0x3bfcbf,{'header':!![],'skipEmptyLines':!![],'step':function(_0x333a96,_0x401620){total+=0x1;var _0x1bcb29=total;promises['push'](checkRow(_0x333a96,_0xe0ecdb,_0x1bcb29)[_0xb386('0x2b')](function(){success+=0x1;})[_0xb386('0x2d')](function(_0x16b3eb){if(_0x16b3eb['error']){errors+=0x1;delete _0x16b3eb[_0xb386('0xf')];}else if(_0x16b3eb['duplicate']){duplicates+=0x1;delete _0x16b3eb[_0xb386('0x26')];}rows[_0xb386('0x50')](_0x16b3eb);}));if(total%0xc8===0x0){_0x401620[_0xb386('0x65')]();return processPromises(_0x401620);}},'complete':function(){return processPromises()[_0xb386('0x2b')](function(){logger[_0xb386('0x66')](_0xb386('0x67'));endCsv();});},'error':function(_0x42ea44,_0x3bd34e){logger[_0xb386('0x66')](_0xb386('0x68'),JSON[_0xb386('0x2e')](_0x42ea44));endCsv();}});})[_0xb386('0x2d')](function(_0x2a0ad3){logger['error'](_0xb386('0x69'),JSON[_0xb386('0x2e')](_0x2a0ad3));});}main();
\ No newline at end of file
index 979af7d..b454990 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8d3=['voice_queues','VoiceQueueId','campaigns','CampaignId','campaigns_has_cm_blacklists','each','then','finish','affectedRows','contact:import:','unlink','complete','argv','existsSync','binding\x20doesn\x27t\x20exists','body\x20id\x20mandatory','map','No\x20agent\x20available','SIGINT','uncaughtException','path','lodash','papaparse','moment','squel','ioredis','../../../mysqldb','../../../config/environment','import','redis','localhost','format','YYYY-MM-DD\x20HH:mm:ss','select','field','phone','from','join','where','\x20=\x20','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','insert','into','fromQuery','ContactId','ListId','createdAt','updatedAt','priority','UserId','recallme','cm_contacts','cm_contacts.ListId\x20=\x20','.id\x20=\x20','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','cm_hopper','\x22always\x22','\x22onlyIfOpen\x22','toString','cm_contacts.phone','cm_hopper_black','fields','ListId\x20=\x20?','\x20=\x20?','CompanyId',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','MIN(id)','min_id','group','info','Received\x20SIGINT','message','exit','errors','push','sequelize','spread','catch','main','stringify','binding','socket_timestamp','root','server/files/tmp','keys','header','writeFileSync','parse','createReadStream','data','length','rows','hasOwnProperty','trim','replace','scheduledat','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','includes','email','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','SystemRow','emit','Abort\x20parser','abort','SystemError','error','step','duplicates','cm_contacts_','CREATE\x20TABLE\x20','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','DROP\x20TABLE\x20','voice_queues_has_cm_lists'];(function(_0x149c1f,_0x7b4dc6){var _0x309eeb=function(_0x19863c){while(--_0x19863c){_0x149c1f['push'](_0x149c1f['shift']());}};_0x309eeb(++_0x7b4dc6);}(_0xa8d3,0x94));var _0x3a8d=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xa8d3[_0x5ddb1c];return _0x354adc;};'use strict';var fs=require('fs');var path=require(_0x3a8d('0x0'));var _=require(_0x3a8d('0x1'));var Papa=require(_0x3a8d('0x2'));var util=require('util');var BPromise=require('bluebird');var moment=require(_0x3a8d('0x3'));var squel=require(_0x3a8d('0x4'));var Redis=require(_0x3a8d('0x5'));var db=require(_0x3a8d('0x6'))['db'];var config=require(_0x3a8d('0x7'));var logger=require('../../../config/logger')(_0x3a8d('0x8'));config[_0x3a8d('0x9')]=_['defaults'](config[_0x3a8d('0x9')],{'host':_0x3a8d('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3a8d('0x9')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0x3a8d('0xb')](_0x3a8d('0xc'));function isEmail(_0x4cdc62){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'](_0x4cdc62);}function selectNotIn(_0x50c4f2,_0xc157ac,_0x3c4a39,_0x37ff14,_0x4835de){return squel[_0x3a8d('0xd')]()[_0x3a8d('0xe')](_0x3a8d('0xf'))[_0x3a8d('0x10')](_0x37ff14)[_0x3a8d('0x11')](_0xc157ac,null,_0xc157ac+'.id\x20=\x20'+_0x37ff14+'.'+_0x3c4a39)[_0x3a8d('0x12')](_0x37ff14+'.'+_0x3c4a39+_0x3a8d('0x13')+_0x50c4f2+'.'+_0x3c4a39)['where'](_0xc157ac+'.dialCheckDuplicateType\x20IN\x20('+_0x4835de['join']()+')');}function insertCmHopper(_0x5f24eb,_0x134f40,_0x30192a,_0x5c95fa,_0x2712b3){var _0x4d2fad=['cm_contacts.phone',_0x3a8d('0x14'),_0x3a8d('0x15'),_0x3a8d('0x16'),_0x134f40+'.'+_0x5c95fa,_0x3a8d('0x17'),_0x3a8d('0x18'),'cm_contacts.priority','cm_contacts.UserId','\x22'+_0x2712b3+'\x22'];return squel[_0x3a8d('0x19')]()[_0x3a8d('0x1a')]('cm_hopper')[_0x3a8d('0x1b')]([_0x3a8d('0xf'),'scheduledat',_0x3a8d('0x1c'),_0x3a8d('0x1d'),_0x5c95fa,_0x3a8d('0x1e'),_0x3a8d('0x1f'),_0x3a8d('0x20'),_0x3a8d('0x21'),_0x3a8d('0x22')],squel[_0x3a8d('0xd')]()['fields'](_0x4d2fad)[_0x3a8d('0x10')](_0x134f40)['join'](_0x3a8d('0x23'),null,_0x3a8d('0x24')+_0x134f40+'.CmListId')['join'](_0x30192a,null,_0x30192a+_0x3a8d('0x25')+_0x134f40+'.'+_0x5c95fa)[_0x3a8d('0x12')](_0x134f40+_0x3a8d('0x26'),_0x5f24eb)[_0x3a8d('0x12')](_0x3a8d('0x27'),NOW)[_0x3a8d('0x12')](_0x3a8d('0x28'),selectNotIn(_0x134f40,_0x30192a,_0x5c95fa,_0x3a8d('0x29'),[_0x3a8d('0x2a'),_0x3a8d('0x2b')]))[_0x3a8d('0x12')](_0x3a8d('0x28'),selectNotIn(_0x134f40,_0x30192a,_0x5c95fa,_0x3a8d('0x29'),[_0x3a8d('0x2a')])))[_0x3a8d('0x2c')]();}function insertCmHopperBlack(_0xda9490,_0x17f389,_0x2cbd4d,_0x3924ab){var _0x881d91=[_0x3a8d('0x2d'),'cm_contacts.id',_0x3a8d('0x16'),_0x17f389+'.'+_0x3924ab,_0x3a8d('0x17'),_0x3a8d('0x18')];return squel['insert']()[_0x3a8d('0x1a')](_0x3a8d('0x2e'))['fromQuery'](['phone',_0x3a8d('0x1c'),_0x3a8d('0x1d'),_0x3924ab,_0x3a8d('0x1e'),_0x3a8d('0x1f')],squel[_0x3a8d('0xd')]()[_0x3a8d('0x2f')](_0x881d91)[_0x3a8d('0x10')](_0x17f389)[_0x3a8d('0x11')](_0x3a8d('0x23'),null,_0x3a8d('0x24')+_0x17f389+'.CmListId')[_0x3a8d('0x11')](_0x2cbd4d,null,_0x2cbd4d+_0x3a8d('0x25')+_0x17f389+'.'+_0x3924ab)[_0x3a8d('0x12')](_0x17f389+_0x3a8d('0x26'),_0xda9490)[_0x3a8d('0x12')]('cm_contacts.createdAt\x20=\x20?',NOW)['where'](_0x3a8d('0x28'),squel[_0x3a8d('0xd')]()[_0x3a8d('0xe')](_0x3a8d('0xf'))[_0x3a8d('0x10')]('cm_hopper_black')['where'](_0x3a8d('0x30'),_0xda9490)['where'](_0x3924ab+_0x3a8d('0x31'),_0x17f389+'.'+_0x3924ab)))['toString']();}function insertCmContact(_0x279d84,_0x1c3b33,_0x166431,_0x1bdf39){var _0x456d15=_['concat'](_['keys'](_0x1bdf39),['ListId',_0x3a8d('0x32'),_0x3a8d('0x1e'),'updatedAt']);return squel[_0x3a8d('0x19')]()[_0x3a8d('0x1a')](_0x3a8d('0x23'))['fromQuery'](_0x456d15,squel[_0x3a8d('0xd')]()[_0x3a8d('0x2f')](_0x456d15)['from'](_0x1c3b33)['where']('('+_0x166431[_0x3a8d('0x11')](',')+_0x3a8d('0x33'),squel[_0x3a8d('0xd')]()[_0x3a8d('0x2f')](_0x166431)['from'](_0x3a8d('0x23'))[_0x3a8d('0x12')](_0x3a8d('0x30'),_0x279d84)[_0x3a8d('0x12')](_0x3a8d('0x34')))[_0x3a8d('0x12')]('id\x20IN\x20?',squel['select']()[_0x3a8d('0xe')](_0x3a8d('0x35'),_0x3a8d('0x36'))['from'](_0x1c3b33)[_0x3a8d('0x37')](_0x166431[_0x3a8d('0x11')](','))))[_0x3a8d('0x2c')]();}function handleStop(){logger[_0x3a8d('0x38')](_0x3a8d('0x39'));stopped=!![];}function handleUncaughtException(_0x4af0ad){logger['error'](_0x4af0ad[_0x3a8d('0x3a')]);process[_0x3a8d('0x3b')](0x1);}function handleError(_0x33698d,_0x53ecf2){stats[_0x3a8d('0x3c')][_0x3a8d('0x3d')]({'name':_0x53ecf2['code'],'message':_0x53ecf2[_0x3a8d('0x3a')],'row':_0x33698d});}function handleQuery(_0x75afb7){logger['info'](_0x75afb7);return db[_0x3a8d('0x3e')]['query'](_0x75afb7)[_0x3a8d('0x3f')](function(_0x53a4d9){results[_0x3a8d('0x3d')](_0x53a4d9);})[_0x3a8d('0x40')](function(_0x3e893a){logger['error'](_0x3e893a[_0x3a8d('0x3a')]);});}function main(_0x590d05,_0x1a5f30,_0x39c622,_0x2c0a45){logger[_0x3a8d('0x38')](_0x3a8d('0x41'),_0x590d05,JSON[_0x3a8d('0x42')](_0x1a5f30));process['send']('start');var _0x5a3b0f=_0x1a5f30[_0x3a8d('0x43')];var _0x3617ee=_0x1a5f30[_0x3a8d('0x44')];var _0x226a38=path[_0x3a8d('0x11')](config[_0x3a8d('0x45')],_0x3a8d('0x46'),_0x3617ee+'.csv');var _0x14f292=_[_0x3a8d('0x47')](_0x5a3b0f)[_0x3a8d('0x11')]();logger[_0x3a8d('0x38')](_0x3a8d('0x48'),_0x14f292);fs[_0x3a8d('0x49')](_0x226a38,_0x14f292+'\x0a');Papa[_0x3a8d('0x4a')](fs[_0x3a8d('0x4b')](_0x590d05),{'header':!![],'skipEmptyLines':!![],'step':function(_0x22cc2d,_0x49847a){try{for(var _0x578e29=0x0,_0x148b90=[];_0x578e29<_0x22cc2d[_0x3a8d('0x4c')][_0x3a8d('0x4d')];_0x578e29++){stats[_0x3a8d('0x4e')]+=0x1;if(_0x22cc2d['errors'][_0x578e29]){handleError(_0x22cc2d['data'][_0x578e29],_0x22cc2d[_0x3a8d('0x3c')][_0x578e29]);}else{var _0x487e34=[];for(var _0x427417 in _0x5a3b0f){if(_0x5a3b0f[_0x3a8d('0x4f')](_0x427417)){if(_0x22cc2d['data'][_0x578e29][_0x5a3b0f[_0x427417]]){var _0x36d3c9=_[_0x3a8d('0x50')](_0x22cc2d[_0x3a8d('0x4c')][_0x578e29][_0x5a3b0f[_0x427417]][_0x3a8d('0x51')](/"/g,'\x27'));switch(_0x427417){case _0x3a8d('0x52'):var _0xfaf5e5=moment(_0x36d3c9,_0x3a8d('0xc'),!![]);if(_0xfaf5e5[_0x3a8d('0x53')]()){_0x148b90[_0x3a8d('0x3d')]('\x22'+_0x36d3c9+'\x22');}else{_0x487e34['push'](_0x3a8d('0x54'));}break;case'priority':var _0x558fd6=parseInt(_0x36d3c9);_0x36d3c9=_[_0x3a8d('0x55')](_0x558fd6)||_0x558fd6<0x0||_0x558fd6>0x4?_0x2c0a45?0x3:0x2:_0x558fd6;_0x148b90[_0x3a8d('0x3d')]('\x22'+_0x36d3c9+'\x22');break;case _0x3a8d('0x21'):var _0x25870e=parseInt(_0x36d3c9);if(_['isNumber'](_0x25870e)&&_[_0x3a8d('0x56')](_0x39c622,_0x25870e)){_0x148b90[_0x3a8d('0x3d')]('\x22'+_0x25870e+'\x22');}else{_0x487e34[_0x3a8d('0x3d')]('agent\x20not\x20exists');}break;case _0x3a8d('0x57'):if(isEmail(_0x36d3c9)){_0x148b90[_0x3a8d('0x3d')]('\x22'+_0x36d3c9+'\x22');}else{_0x487e34['push'](_0x3a8d('0x58'));}break;case _0x3a8d('0x59'):var _0x36bc99=moment(_0x36d3c9,_0x3a8d('0x5a'),!![]);if(_0x36bc99['isValid']()){_0x148b90[_0x3a8d('0x3d')]('\x22'+_0x36d3c9+'\x22');}else{_0x487e34[_0x3a8d('0x3d')](_0x3a8d('0x5b'));}break;default:_0x148b90['push']('\x22'+_0x36d3c9+'\x22');}}else{switch(_0x427417){case _0x3a8d('0x5c'):case _0x3a8d('0xf'):_0x487e34['push'](_0x427417+_0x3a8d('0x5d'));break;default:_0x148b90[_0x3a8d('0x3d')]('\x22\x22');}}}}if(_0x487e34[_0x3a8d('0x4d')]){handleError(_0x22cc2d[_0x3a8d('0x4c')][_0x578e29],{'code':_0x3a8d('0x5e'),'message':_0x487e34['join']()});}else{fs['appendFileSync'](_0x226a38,_0x148b90[_0x3a8d('0x11')]()+'\x0a');}_0x148b90=[];}if(!(stats[_0x3a8d('0x4e')]%0xc8)){socket[_0x3a8d('0x5f')]('contact:import:'+_0x3617ee,stats);stats['errors']=[];}}if(stopped){logger['info'](_0x3a8d('0x60'));_0x49847a[_0x3a8d('0x61')]();}}catch(_0x45085c){handleError(_0x22cc2d[_0x3a8d('0x4c')][_0x578e29],{'code':_0x3a8d('0x62'),'message':_0x45085c[_0x3a8d('0x3a')]});logger[_0x3a8d('0x63')](_0x3a8d('0x64'),_0x45085c[_0x3a8d('0x3a')]);}},'complete':function(){try{var _0x3c6c1c=[];var _0x16b025='cm_contacts';if(_0x1a5f30['duplicates']&&_0x1a5f30[_0x3a8d('0x65')][_0x3a8d('0x4d')]){_0x16b025=_0x3a8d('0x66')+_0x3617ee;_0x3c6c1c[_0x3a8d('0x3d')](_0x3a8d('0x67')+_0x16b025+'\x20LIKE\x20cm_contacts;');}var _0x59907f=util[_0x3a8d('0xb')](_0x3a8d('0x68'),_0x226a38,_0x16b025,_0x14f292,_0x1a5f30[_0x3a8d('0x1d')],_0x1a5f30[_0x3a8d('0x32')]||null,NOW,NOW);if(_[_0x3a8d('0x69')](_0x5a3b0f[_0x3a8d('0x52')])){_0x59907f+=',\x20scheduledAt\x20=\x20NOW()';}_0x3c6c1c[_0x3a8d('0x3d')](_0x59907f);if(_0x1a5f30['duplicates']&&_0x1a5f30['duplicates'][_0x3a8d('0x4d')]){_0x3c6c1c[_0x3a8d('0x3d')](insertCmContact(_0x1a5f30['ListId'],_0x16b025,_0x1a5f30[_0x3a8d('0x65')],_0x5a3b0f));_0x3c6c1c[_0x3a8d('0x3d')](_0x3a8d('0x6a')+_0x16b025+';');}_0x3c6c1c[_0x3a8d('0x3d')](insertCmHopper(_0x1a5f30[_0x3a8d('0x1d')],_0x3a8d('0x6b'),_0x3a8d('0x6c'),_0x3a8d('0x6d'),_0x2c0a45));_0x3c6c1c[_0x3a8d('0x3d')](insertCmHopperBlack(_0x1a5f30[_0x3a8d('0x1d')],'voice_queues_has_cm_blacklists','voice_queues',_0x3a8d('0x6d')));_0x3c6c1c[_0x3a8d('0x3d')](insertCmHopper(_0x1a5f30[_0x3a8d('0x1d')],'campaigns_has_cm_lists',_0x3a8d('0x6e'),_0x3a8d('0x6f'),_0x2c0a45));_0x3c6c1c['push'](insertCmHopperBlack(_0x1a5f30[_0x3a8d('0x1d')],_0x3a8d('0x70'),_0x3a8d('0x6e'),_0x3a8d('0x6f')));BPromise[_0x3a8d('0x71')](_0x3c6c1c,handleQuery)[_0x3a8d('0x72')](function(_0x2fd431){stats[_0x3a8d('0x73')]=!![];stats[_0x3a8d('0x74')]=_0x1a5f30[_0x3a8d('0x65')]&&_0x1a5f30[_0x3a8d('0x65')][_0x3a8d('0x4d')]?results[0x2][_0x3a8d('0x74')]:results[0x0][_0x3a8d('0x74')];socket[_0x3a8d('0x5f')](_0x3a8d('0x75')+_0x3617ee,stats);fs[_0x3a8d('0x76')](_0x590d05);fs[_0x3a8d('0x76')](_0x226a38);process[_0x3a8d('0x3b')](0x0);})[_0x3a8d('0x40')](function(_0x3d16c3){logger[_0x3a8d('0x63')](_0x3d16c3[_0x3a8d('0x3a')]);process[_0x3a8d('0x3b')](0x1);});}catch(_0x327e76){logger[_0x3a8d('0x63')](_0x3a8d('0x77'),_0x327e76['message']);process['exit'](0x1);}},'error':function(_0x4621e8,_0x53c33e,_0x57b910,_0x590117){throw new Error(_0x590117);}});}function validate(){if(process[_0x3a8d('0x78')]&&process['argv'][_0x3a8d('0x4d')]<0x4){throw new Error('arguments\x20<filename>\x20<parameters>\x20<agents>');}var _0x3c2607=path[_0x3a8d('0x11')](config[_0x3a8d('0x45')],_0x3a8d('0x46'),process['argv'][0x2]);if(!fs[_0x3a8d('0x79')](_0x3c2607)){throw new Error('file\x20doesn\x27t\x20exists');}var _0x26955a={};try{_0x26955a=JSON[_0x3a8d('0x4a')](process[_0x3a8d('0x78')][0x3]);if(!_0x26955a['binding']){throw new Error(_0x3a8d('0x7a'));}if(!_0x26955a[_0x3a8d('0x43')][_0x3a8d('0xf')]){throw new Error('phone\x20is\x20mandatory');}if(!_0x26955a['binding']['firstName']){throw new Error('firstName\x20is\x20mandatory');}var _0x291dea=0x0;if(_0x26955a[_0x3a8d('0x43')][_0x3a8d('0x21')]){_0x291dea=0x1;}if(!_0x26955a[_0x3a8d('0x1d')]){throw new Error('ListId\x20is\x20mandatory');}}catch(_0x2ed4e6){throw new Error(_0x3a8d('0x7b'));}var _0x2dc1e8=[];try{_0x2dc1e8=_[_0x3a8d('0x7c')](JSON['parse'](process[_0x3a8d('0x78')][0x4]),'id');}catch(_0x4f74d3){logger[_0x3a8d('0x38')](_0x3a8d('0x7d'));}main(_0x3c2607,_0x26955a,_0x2dc1e8,_0x291dea);}validate();process['on'](_0x3a8d('0x7e'),handleStop);process['on'](_0x3a8d('0x7f'),handleUncaughtException);
\ No newline at end of file
+var _0x62ce=['dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','appendFileSync','contact:import:','Abort\x20parser','SystemError','step','duplicates','cm_contacts_','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20id\x20=\x20NULL,\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27','DROP\x20TABLE\x20','voice_queues_has_cm_lists','VoiceQueueId','campaigns_has_cm_lists','CampaignId','campaigns_has_cm_blacklists','each','finish','affectedRows','emit','unlink','exit','complete','argv','root','existsSync','file\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available','uncaughtException','lodash','papaparse','moment','squel','../../../mysqldb','../../../config/environment','../../../config/logger','import','redis','defaults','localhost','format','YYYY-MM-DD\x20HH:mm:ss','test','select','field','from','join','.id\x20=\x20','where','\x20=\x20','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','insert','into','cm_hopper','ContactId','ListId','createdAt','priority','recallme','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','toString','cm_contacts.phone','cm_hopper_black','phone','ListId\x20=\x20?','concat','keys','CompanyId','updatedAt','fromQuery',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','group','info','Received\x20SIGINT','error','message','errors','sequelize','query','push','catch','main','send','binding','socket_timestamp','server/files/tmp','.csv','writeFileSync','parse','createReadStream','data','length','rows','hasOwnProperty','trim','replace','scheduledat','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','UserId','includes','agent\x20not\x20exists','email\x20wrong\x20format'];(function(_0xbc9cd8,_0x326ebf){var _0x2a7e20=function(_0x2529b5){while(--_0x2529b5){_0xbc9cd8['push'](_0xbc9cd8['shift']());}};_0x2a7e20(++_0x326ebf);}(_0x62ce,0x1a6));var _0xe62c=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x62ce[_0x1facfa];return _0x9ec701;};'use strict';var fs=require('fs');var path=require('path');var _=require(_0xe62c('0x0'));var Papa=require(_0xe62c('0x1'));var util=require('util');var BPromise=require('bluebird');var moment=require(_0xe62c('0x2'));var squel=require(_0xe62c('0x3'));var Redis=require('ioredis');var db=require(_0xe62c('0x4'))['db'];var config=require(_0xe62c('0x5'));var logger=require(_0xe62c('0x6'))(_0xe62c('0x7'));config[_0xe62c('0x8')]=_[_0xe62c('0x9')](config[_0xe62c('0x8')],{'host':_0xe62c('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0xe62c('0xb')](_0xe62c('0xc'));function isEmail(_0x32fba8){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))*$/[_0xe62c('0xd')](_0x32fba8);}function selectNotIn(_0x300169,_0x3d3b9a,_0x124c5b,_0x334ab7,_0x22a320){return squel[_0xe62c('0xe')]()[_0xe62c('0xf')]('phone')[_0xe62c('0x10')](_0x334ab7)[_0xe62c('0x11')](_0x3d3b9a,null,_0x3d3b9a+_0xe62c('0x12')+_0x334ab7+'.'+_0x124c5b)[_0xe62c('0x13')](_0x334ab7+'.'+_0x124c5b+_0xe62c('0x14')+_0x300169+'.'+_0x124c5b)[_0xe62c('0x13')](_0x3d3b9a+'.dialCheckDuplicateType\x20IN\x20('+_0x22a320[_0xe62c('0x11')]()+')');}function insertCmHopper(_0x17b78a,_0x21a971,_0x189ebb,_0x79c7ac,_0x35a523){var _0x34b33b=['cm_contacts.phone',_0xe62c('0x15'),_0xe62c('0x16'),_0xe62c('0x17'),_0x21a971+'.'+_0x79c7ac,_0xe62c('0x18'),_0xe62c('0x19'),_0xe62c('0x1a'),_0xe62c('0x1b'),'\x22'+_0x35a523+'\x22'];return squel[_0xe62c('0x1c')]()[_0xe62c('0x1d')](_0xe62c('0x1e'))['fromQuery'](['phone','scheduledat',_0xe62c('0x1f'),_0xe62c('0x20'),_0x79c7ac,_0xe62c('0x21'),'updatedAt',_0xe62c('0x22'),'UserId',_0xe62c('0x23')],squel[_0xe62c('0xe')]()[_0xe62c('0x24')](_0x34b33b)[_0xe62c('0x10')](_0x21a971)[_0xe62c('0x11')](_0xe62c('0x25'),null,_0xe62c('0x26')+_0x21a971+_0xe62c('0x27'))['join'](_0x189ebb,null,_0x189ebb+_0xe62c('0x12')+_0x21a971+'.'+_0x79c7ac)[_0xe62c('0x13')](_0x21a971+_0xe62c('0x28'),_0x17b78a)[_0xe62c('0x13')]('cm_contacts.createdAt\x20=\x20?',NOW)['where'](_0xe62c('0x29'),selectNotIn(_0x21a971,_0x189ebb,_0x79c7ac,_0xe62c('0x1e'),[_0xe62c('0x2a'),_0xe62c('0x2b')]))[_0xe62c('0x13')](_0xe62c('0x29'),selectNotIn(_0x21a971,_0x189ebb,_0x79c7ac,_0xe62c('0x1e'),[_0xe62c('0x2a')])))[_0xe62c('0x2c')]();}function insertCmHopperBlack(_0x189010,_0xec8e50,_0x3a0c11,_0x4af0be){var _0x51c125=[_0xe62c('0x2d'),_0xe62c('0x16'),_0xe62c('0x17'),_0xec8e50+'.'+_0x4af0be,'cm_contacts.createdAt','cm_contacts.updatedAt'];return squel['insert']()[_0xe62c('0x1d')](_0xe62c('0x2e'))['fromQuery']([_0xe62c('0x2f'),'ContactId',_0xe62c('0x20'),_0x4af0be,_0xe62c('0x21'),'updatedAt'],squel[_0xe62c('0xe')]()[_0xe62c('0x24')](_0x51c125)[_0xe62c('0x10')](_0xec8e50)[_0xe62c('0x11')](_0xe62c('0x25'),null,'cm_contacts.ListId\x20=\x20'+_0xec8e50+_0xe62c('0x27'))['join'](_0x3a0c11,null,_0x3a0c11+_0xe62c('0x12')+_0xec8e50+'.'+_0x4af0be)['where'](_0xec8e50+_0xe62c('0x28'),_0x189010)['where']('cm_contacts.createdAt\x20=\x20?',NOW)[_0xe62c('0x13')](_0xe62c('0x29'),squel[_0xe62c('0xe')]()[_0xe62c('0xf')](_0xe62c('0x2f'))[_0xe62c('0x10')](_0xe62c('0x2e'))[_0xe62c('0x13')](_0xe62c('0x30'),_0x189010)['where'](_0x4af0be+'\x20=\x20?',_0xec8e50+'.'+_0x4af0be)))['toString']();}function insertCmContact(_0x2d0f99,_0x1c619d,_0x5b520b,_0x30baac){var _0xc2e0df=_[_0xe62c('0x31')](_[_0xe62c('0x32')](_0x30baac),[_0xe62c('0x20'),_0xe62c('0x33'),'createdAt',_0xe62c('0x34')]);return squel['insert']()[_0xe62c('0x1d')](_0xe62c('0x25'))[_0xe62c('0x35')](_0xc2e0df,squel[_0xe62c('0xe')]()['fields'](_0xc2e0df)['from'](_0x1c619d)[_0xe62c('0x13')]('('+_0x5b520b['join'](',')+_0xe62c('0x36'),squel[_0xe62c('0xe')]()[_0xe62c('0x24')](_0x5b520b)['from'](_0xe62c('0x25'))['where'](_0xe62c('0x30'),_0x2d0f99)['where'](_0xe62c('0x37')))[_0xe62c('0x13')](_0xe62c('0x38'),squel[_0xe62c('0xe')]()[_0xe62c('0xf')]('MIN(id)','min_id')[_0xe62c('0x10')](_0x1c619d)[_0xe62c('0x39')](_0x5b520b['join'](','))))[_0xe62c('0x2c')]();}function handleStop(){logger[_0xe62c('0x3a')](_0xe62c('0x3b'));stopped=!![];}function handleUncaughtException(_0x5a79c5){logger[_0xe62c('0x3c')](_0x5a79c5[_0xe62c('0x3d')]);process['exit'](0x1);}function handleError(_0x4f9a81,_0x836d0b){stats[_0xe62c('0x3e')]['push']({'name':_0x836d0b['code'],'message':_0x836d0b[_0xe62c('0x3d')],'row':_0x4f9a81});}function handleQuery(_0x4e5828){logger['info'](_0x4e5828);return db[_0xe62c('0x3f')][_0xe62c('0x40')](_0x4e5828)['spread'](function(_0x526a84){results[_0xe62c('0x41')](_0x526a84);})[_0xe62c('0x42')](function(_0x2d9f77){logger['error'](_0x2d9f77[_0xe62c('0x3d')]);});}function main(_0x58d78f,_0x24c668,_0x2df302,_0x597df2){logger[_0xe62c('0x3a')](_0xe62c('0x43'),_0x58d78f,JSON['stringify'](_0x24c668));process[_0xe62c('0x44')]('start');var _0xce79ea=_0x24c668[_0xe62c('0x45')];var _0x5c7867=_0x24c668[_0xe62c('0x46')];var _0x40567e=path[_0xe62c('0x11')](config['root'],_0xe62c('0x47'),_0x5c7867+_0xe62c('0x48'));var _0x554690=_[_0xe62c('0x32')](_0xce79ea)['join']();logger[_0xe62c('0x3a')]('header',_0x554690);fs[_0xe62c('0x49')](_0x40567e,_0x554690+'\x0a');Papa[_0xe62c('0x4a')](fs[_0xe62c('0x4b')](_0x58d78f),{'header':!![],'skipEmptyLines':!![],'step':function(_0x553365,_0xf3112d){try{for(var _0x529ea6=0x0,_0x56fcd1=[];_0x529ea6<_0x553365[_0xe62c('0x4c')][_0xe62c('0x4d')];_0x529ea6++){stats[_0xe62c('0x4e')]+=0x1;if(_0x553365['errors'][_0x529ea6]){handleError(_0x553365[_0xe62c('0x4c')][_0x529ea6],_0x553365[_0xe62c('0x3e')][_0x529ea6]);}else{var _0x64f5a7=[];for(var _0x4440a0 in _0xce79ea){if(_0xce79ea[_0xe62c('0x4f')](_0x4440a0)){if(_0x553365[_0xe62c('0x4c')][_0x529ea6][_0xce79ea[_0x4440a0]]){var _0x4d0ebd=_[_0xe62c('0x50')](_0x553365[_0xe62c('0x4c')][_0x529ea6][_0xce79ea[_0x4440a0]][_0xe62c('0x51')](/"/g,'\x27'));switch(_0x4440a0){case _0xe62c('0x52'):var _0x277c08=moment(_0x4d0ebd,_0xe62c('0xc'),!![]);if(_0x277c08[_0xe62c('0x53')]()){_0x56fcd1['push']('\x22'+_0x4d0ebd+'\x22');}else{_0x64f5a7['push'](_0xe62c('0x54'));}break;case _0xe62c('0x22'):var _0x5c6075=parseInt(_0x4d0ebd);_0x4d0ebd=_[_0xe62c('0x55')](_0x5c6075)||_0x5c6075<0x0||_0x5c6075>0x4?_0x597df2?0x3:0x2:_0x5c6075;_0x56fcd1[_0xe62c('0x41')]('\x22'+_0x4d0ebd+'\x22');break;case _0xe62c('0x56'):var _0x10dce2=parseInt(_0x4d0ebd);if(_['isNumber'](_0x10dce2)&&_[_0xe62c('0x57')](_0x2df302,_0x10dce2)){_0x56fcd1['push']('\x22'+_0x10dce2+'\x22');}else{_0x64f5a7[_0xe62c('0x41')](_0xe62c('0x58'));}break;case'email':if(isEmail(_0x4d0ebd)){_0x56fcd1[_0xe62c('0x41')]('\x22'+_0x4d0ebd+'\x22');}else{_0x64f5a7[_0xe62c('0x41')](_0xe62c('0x59'));}break;case _0xe62c('0x5a'):var _0x2677e9=moment(_0x4d0ebd,_0xe62c('0x5b'),!![]);if(_0x2677e9[_0xe62c('0x53')]()){_0x56fcd1[_0xe62c('0x41')]('\x22'+_0x4d0ebd+'\x22');}else{_0x64f5a7[_0xe62c('0x41')](_0xe62c('0x5c'));}break;default:_0x56fcd1[_0xe62c('0x41')]('\x22'+_0x4d0ebd+'\x22');}}else{switch(_0x4440a0){case _0xe62c('0x5d'):case _0xe62c('0x2f'):_0x64f5a7[_0xe62c('0x41')](_0x4440a0+_0xe62c('0x5e'));break;default:_0x56fcd1['push']('\x22\x22');}}}}if(_0x64f5a7['length']){handleError(_0x553365[_0xe62c('0x4c')][_0x529ea6],{'code':'SystemRow','message':_0x64f5a7[_0xe62c('0x11')]()});}else{fs[_0xe62c('0x5f')](_0x40567e,_0x56fcd1[_0xe62c('0x11')]()+'\x0a');}_0x56fcd1=[];}if(!(stats[_0xe62c('0x4e')]%0xc8)){socket['emit'](_0xe62c('0x60')+_0x5c7867,stats);stats[_0xe62c('0x3e')]=[];}}if(stopped){logger[_0xe62c('0x3a')](_0xe62c('0x61'));_0xf3112d['abort']();}}catch(_0x2941dc){handleError(_0x553365[_0xe62c('0x4c')][_0x529ea6],{'code':_0xe62c('0x62'),'message':_0x2941dc[_0xe62c('0x3d')]});logger[_0xe62c('0x3c')](_0xe62c('0x63'),_0x2941dc[_0xe62c('0x3d')]);}},'complete':function(){try{var _0x5af695=[];var _0x351e1f=_0xe62c('0x25');if(_0x24c668[_0xe62c('0x64')]&&_0x24c668[_0xe62c('0x64')]['length']){_0x351e1f=_0xe62c('0x65')+_0x5c7867;_0x5af695['push'](_0xe62c('0x66')+_0x351e1f+_0xe62c('0x67'));}var _0x241f4c=util[_0xe62c('0xb')](_0xe62c('0x68'),_0x40567e,_0x351e1f,_0x554690,_0x24c668[_0xe62c('0x20')],_0x24c668['CompanyId']||null,NOW,NOW);if(_['isNil'](_0xce79ea[_0xe62c('0x52')])){_0x241f4c+=',\x20scheduledAt\x20=\x20NOW()';}_0x5af695[_0xe62c('0x41')](_0x241f4c);if(_0x24c668[_0xe62c('0x64')]&&_0x24c668['duplicates'][_0xe62c('0x4d')]){_0x5af695[_0xe62c('0x41')](insertCmContact(_0x24c668[_0xe62c('0x20')],_0x351e1f,_0x24c668['duplicates'],_0xce79ea));_0x5af695['push'](_0xe62c('0x69')+_0x351e1f+';');}_0x5af695[_0xe62c('0x41')](insertCmHopper(_0x24c668[_0xe62c('0x20')],_0xe62c('0x6a'),'voice_queues',_0xe62c('0x6b'),_0x597df2));_0x5af695['push'](insertCmHopperBlack(_0x24c668[_0xe62c('0x20')],'voice_queues_has_cm_blacklists','voice_queues',_0xe62c('0x6b')));_0x5af695[_0xe62c('0x41')](insertCmHopper(_0x24c668[_0xe62c('0x20')],_0xe62c('0x6c'),'campaigns',_0xe62c('0x6d'),_0x597df2));_0x5af695[_0xe62c('0x41')](insertCmHopperBlack(_0x24c668[_0xe62c('0x20')],_0xe62c('0x6e'),'campaigns','CampaignId'));BPromise[_0xe62c('0x6f')](_0x5af695,handleQuery)['then'](function(_0x4c3868){stats[_0xe62c('0x70')]=!![];stats[_0xe62c('0x71')]=_0x24c668[_0xe62c('0x64')]&&_0x24c668[_0xe62c('0x64')][_0xe62c('0x4d')]?results[0x2][_0xe62c('0x71')]:results[0x0][_0xe62c('0x71')];socket[_0xe62c('0x72')](_0xe62c('0x60')+_0x5c7867,stats);fs[_0xe62c('0x73')](_0x58d78f);fs[_0xe62c('0x73')](_0x40567e);process[_0xe62c('0x74')](0x0);})['catch'](function(_0x21af1d){logger[_0xe62c('0x3c')](_0x21af1d[_0xe62c('0x3d')]);process['exit'](0x1);});}catch(_0x3c1b72){logger[_0xe62c('0x3c')](_0xe62c('0x75'),_0x3c1b72[_0xe62c('0x3d')]);process[_0xe62c('0x74')](0x1);}},'error':function(_0x34810c,_0x1fb088,_0x25e0ac,_0x2dc67b){throw new Error(_0x2dc67b);}});}function validate(){if(process[_0xe62c('0x76')]&&process[_0xe62c('0x76')][_0xe62c('0x4d')]<0x4){throw new Error('arguments\x20<filename>\x20<parameters>\x20<agents>');}var _0x977f60=path[_0xe62c('0x11')](config[_0xe62c('0x77')],'server/files/tmp',process[_0xe62c('0x76')][0x2]);if(!fs[_0xe62c('0x78')](_0x977f60)){throw new Error(_0xe62c('0x79'));}var _0x5b66f2={};try{_0x5b66f2=JSON['parse'](process[_0xe62c('0x76')][0x3]);if(!_0x5b66f2[_0xe62c('0x45')]){throw new Error('binding\x20doesn\x27t\x20exists');}if(!_0x5b66f2['binding'][_0xe62c('0x2f')]){throw new Error(_0xe62c('0x7a'));}if(!_0x5b66f2[_0xe62c('0x45')][_0xe62c('0x5d')]){throw new Error(_0xe62c('0x7b'));}var _0x24af88=0x0;if(_0x5b66f2[_0xe62c('0x45')][_0xe62c('0x56')]){_0x24af88=0x1;}if(!_0x5b66f2[_0xe62c('0x20')]){throw new Error('ListId\x20is\x20mandatory');}}catch(_0x50ad7a){throw new Error(_0xe62c('0x7c'));}var _0x4a856e=[];try{_0x4a856e=_[_0xe62c('0x7d')](JSON[_0xe62c('0x4a')](process['argv'][0x4]),'id');}catch(_0x4f8019){logger[_0xe62c('0x3a')](_0xe62c('0x7e'));}main(_0x977f60,_0x5b66f2,_0x4a856e,_0x24af88);}validate();process['on']('SIGINT',handleStop);process['on'](_0xe62c('0x7f'),handleUncaughtException);
\ No newline at end of file
index cb9ac97..c9f09f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f73=['Member\x20Name','UniqueId','starttime','Answer\x20Time','Complete\x20Time','Duration','duration','Billable\x20Time','billableseconds','string','toLowerCase','voice','inbound','queue','push','variable','calleridnum','outbound','getDescriptions','***\x20Call\x20Info\x20***','keyValue','uniqueid','Date','agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Number','destcalleridnum','***\x20Time\x20Info\x20***','Agent\x20Ring','Agent\x20Connect','Agent\x20Complete','agentcompleteAt','Hold\x20Time','holdtime','talktime','Called\x20Number'];(function(_0x283d33,_0x303be2){var _0x41cc0b=function(_0x51f7e2){while(--_0x51f7e2){_0x283d33['push'](_0x283d33['shift']());}};_0x41cc0b(++_0x303be2);}(_0x2f73,0x99));var _0x32f7=function(_0xaa6c53,_0x57e3ec){_0xaa6c53=_0xaa6c53-0x0;var _0xa14007=_0x2f73[_0xaa6c53];return _0xa14007;};'use strict';exports['getSubjects']=function(_0x426c68,_0x511965){var _0x120302=[{'type':_0x32f7('0x0'),'content':'[xCALLY\x20Ticket]','variableName':null}];switch(_0x426c68[_0x32f7('0x1')]()){case _0x32f7('0x2'):switch(_0x511965[_0x32f7('0x1')]()){case _0x32f7('0x3'):_0x120302['push']({'type':'variable','content':'','variableName':_0x32f7('0x4')});_0x120302[_0x32f7('0x5')]({'type':_0x32f7('0x6'),'content':'','variableName':_0x32f7('0x7')});break;case _0x32f7('0x8'):_0x120302[_0x32f7('0x5')]({'type':'string','content':'Outbound\x20Call','variableName':null});_0x120302['push']({'type':_0x32f7('0x6'),'content':'','variableName':'destcalleridnum'});break;}}return _0x120302;};exports[_0x32f7('0x9')]=function(_0x1d079a,_0x1c3005){var _0x431456=[];switch(_0x1d079a['toLowerCase']()){case _0x32f7('0x2'):switch(_0x1c3005[_0x32f7('0x1')]()){case'inbound':_0x431456=[{'type':'string','content':_0x32f7('0xa'),'key':null,'keyType':null,'variableName':null},{'type':_0x32f7('0xb'),'content':'','key':'Caller\x20Number','keyType':_0x32f7('0x6'),'variableName':_0x32f7('0x7')},{'type':'keyValue','content':'','key':'Caller\x20Name','keyType':_0x32f7('0x6'),'variableName':'calleridname'},{'type':_0x32f7('0xb'),'content':'','key':'Call\x20To','keyType':_0x32f7('0x6'),'variableName':'destexten'},{'type':_0x32f7('0xb'),'content':'','key':'Queue','keyType':_0x32f7('0x6'),'variableName':_0x32f7('0x4')},{'type':_0x32f7('0xb'),'content':'','key':'UniqueId','keyType':_0x32f7('0x6'),'variableName':_0x32f7('0xc')},{'type':_0x32f7('0xb'),'content':'','key':_0x32f7('0xd'),'keyType':_0x32f7('0x6'),'variableName':_0x32f7('0xe')},{'type':'string','content':_0x32f7('0xf'),'key':null,'keyType':null,'variableName':null},{'type':_0x32f7('0xb'),'content':'','key':'Agent\x20Name','keyType':_0x32f7('0x6'),'variableName':'destcalleridname'},{'type':'keyValue','content':'','key':_0x32f7('0x10'),'keyType':'variable','variableName':_0x32f7('0x11')},{'type':_0x32f7('0x0'),'content':_0x32f7('0x12'),'key':null,'keyType':null,'variableName':null},{'type':_0x32f7('0xb'),'content':'','key':_0x32f7('0x13'),'keyType':'variable','variableName':_0x32f7('0xe')},{'type':'keyValue','content':'','key':_0x32f7('0x14'),'keyType':'variable','variableName':'agentconnectAt'},{'type':_0x32f7('0xb'),'content':'','key':_0x32f7('0x15'),'keyType':_0x32f7('0x6'),'variableName':_0x32f7('0x16')},{'type':_0x32f7('0xb'),'content':'','key':_0x32f7('0x17'),'keyType':'variable','variableName':_0x32f7('0x18')},{'type':'keyValue','content':'','key':'Talk\x20Time','keyType':_0x32f7('0x6'),'variableName':_0x32f7('0x19')}];break;case'outbound':_0x431456=[{'type':_0x32f7('0x0'),'content':'***\x20Call\x20Info\x20***','variableName':null},{'type':_0x32f7('0xb'),'content':'','key':_0x32f7('0x1a'),'keyType':_0x32f7('0x6'),'keyContent':'','variableName':'destcalleridnum'},{'type':_0x32f7('0xb'),'content':'','key':_0x32f7('0x1b'),'keyType':_0x32f7('0x6'),'keyContent':'','variableName':'membername'},{'type':_0x32f7('0xb'),'content':'','key':_0x32f7('0x1c'),'keyType':'variable','keyContent':'','variableName':_0x32f7('0xc')},{'type':'keyValue','content':'','key':'Date','keyType':'variable','keyContent':'','variableName':_0x32f7('0x1d')},{'type':_0x32f7('0x0'),'content':'***\x20Time\x20Info\x20***'},{'type':'keyValue','content':'','key':_0x32f7('0x1e'),'keyType':_0x32f7('0x6'),'keyContent':'','variableName':'answertime'},{'type':'keyValue','content':'','key':_0x32f7('0x1f'),'keyType':'variable','keyContent':'','variableName':'endtime'},{'type':_0x32f7('0xb'),'content':'','key':_0x32f7('0x20'),'keyType':_0x32f7('0x6'),'keyContent':'','variableName':_0x32f7('0x21')},{'type':_0x32f7('0xb'),'content':'','key':_0x32f7('0x22'),'keyType':_0x32f7('0x6'),'keyContent':'','variableName':_0x32f7('0x23')}];break;}}return _0x431456;};
\ No newline at end of file
+var _0x56aa=['endtime','Duration','Billable\x20Time','billableseconds','getSubjects','string','toLowerCase','voice','inbound','push','variable','queue','calleridnum','outbound','Outbound\x20Call','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','Call\x20To','destexten','UniqueId','Date','***\x20Agent\x20Info\x20***','Agent\x20Name','destcalleridname','Agent\x20Number','***\x20Time\x20Info\x20***','agentcalledAt','Agent\x20Connect','agentconnectAt','Agent\x20Complete','agentcompleteAt','holdtime','talktime','Called\x20Number','destcalleridnum','membername','uniqueid','starttime','Answer\x20Time','answertime','Complete\x20Time'];(function(_0x134c2e,_0x3573c4){var _0x2825db=function(_0x2a574d){while(--_0x2a574d){_0x134c2e['push'](_0x134c2e['shift']());}};_0x2825db(++_0x3573c4);}(_0x56aa,0x1a8));var _0xa56a=function(_0x204ad4,_0x502841){_0x204ad4=_0x204ad4-0x0;var _0x50675f=_0x56aa[_0x204ad4];return _0x50675f;};'use strict';exports[_0xa56a('0x0')]=function(_0x4c68bc,_0x39f214){var _0x504e4c=[{'type':_0xa56a('0x1'),'content':'[xCALLY\x20Ticket]','variableName':null}];switch(_0x4c68bc[_0xa56a('0x2')]()){case _0xa56a('0x3'):switch(_0x39f214['toLowerCase']()){case _0xa56a('0x4'):_0x504e4c[_0xa56a('0x5')]({'type':_0xa56a('0x6'),'content':'','variableName':_0xa56a('0x7')});_0x504e4c[_0xa56a('0x5')]({'type':_0xa56a('0x6'),'content':'','variableName':_0xa56a('0x8')});break;case _0xa56a('0x9'):_0x504e4c[_0xa56a('0x5')]({'type':_0xa56a('0x1'),'content':_0xa56a('0xa'),'variableName':null});_0x504e4c[_0xa56a('0x5')]({'type':'variable','content':'','variableName':'destcalleridnum'});break;}}return _0x504e4c;};exports['getDescriptions']=function(_0x2ddd45,_0x97d8f8){var _0x38dfed=[];switch(_0x2ddd45[_0xa56a('0x2')]()){case _0xa56a('0x3'):switch(_0x97d8f8[_0xa56a('0x2')]()){case _0xa56a('0x4'):_0x38dfed=[{'type':'string','content':_0xa56a('0xb'),'key':null,'keyType':null,'variableName':null},{'type':_0xa56a('0xc'),'content':'','key':_0xa56a('0xd'),'keyType':'variable','variableName':'calleridnum'},{'type':_0xa56a('0xc'),'content':'','key':'Caller\x20Name','keyType':_0xa56a('0x6'),'variableName':'calleridname'},{'type':_0xa56a('0xc'),'content':'','key':_0xa56a('0xe'),'keyType':_0xa56a('0x6'),'variableName':_0xa56a('0xf')},{'type':'keyValue','content':'','key':'Queue','keyType':_0xa56a('0x6'),'variableName':_0xa56a('0x7')},{'type':'keyValue','content':'','key':_0xa56a('0x10'),'keyType':_0xa56a('0x6'),'variableName':'uniqueid'},{'type':_0xa56a('0xc'),'content':'','key':_0xa56a('0x11'),'keyType':'variable','variableName':'agentcalledAt'},{'type':_0xa56a('0x1'),'content':_0xa56a('0x12'),'key':null,'keyType':null,'variableName':null},{'type':_0xa56a('0xc'),'content':'','key':_0xa56a('0x13'),'keyType':_0xa56a('0x6'),'variableName':_0xa56a('0x14')},{'type':_0xa56a('0xc'),'content':'','key':_0xa56a('0x15'),'keyType':_0xa56a('0x6'),'variableName':'destcalleridnum'},{'type':_0xa56a('0x1'),'content':_0xa56a('0x16'),'key':null,'keyType':null,'variableName':null},{'type':_0xa56a('0xc'),'content':'','key':'Agent\x20Ring','keyType':_0xa56a('0x6'),'variableName':_0xa56a('0x17')},{'type':_0xa56a('0xc'),'content':'','key':_0xa56a('0x18'),'keyType':'variable','variableName':_0xa56a('0x19')},{'type':'keyValue','content':'','key':_0xa56a('0x1a'),'keyType':_0xa56a('0x6'),'variableName':_0xa56a('0x1b')},{'type':_0xa56a('0xc'),'content':'','key':'Hold\x20Time','keyType':'variable','variableName':_0xa56a('0x1c')},{'type':_0xa56a('0xc'),'content':'','key':'Talk\x20Time','keyType':_0xa56a('0x6'),'variableName':_0xa56a('0x1d')}];break;case _0xa56a('0x9'):_0x38dfed=[{'type':'string','content':_0xa56a('0xb'),'variableName':null},{'type':_0xa56a('0xc'),'content':'','key':_0xa56a('0x1e'),'keyType':_0xa56a('0x6'),'keyContent':'','variableName':_0xa56a('0x1f')},{'type':_0xa56a('0xc'),'content':'','key':'Member\x20Name','keyType':_0xa56a('0x6'),'keyContent':'','variableName':_0xa56a('0x20')},{'type':_0xa56a('0xc'),'content':'','key':_0xa56a('0x10'),'keyType':_0xa56a('0x6'),'keyContent':'','variableName':_0xa56a('0x21')},{'type':_0xa56a('0xc'),'content':'','key':_0xa56a('0x11'),'keyType':_0xa56a('0x6'),'keyContent':'','variableName':_0xa56a('0x22')},{'type':'string','content':_0xa56a('0x16')},{'type':_0xa56a('0xc'),'content':'','key':_0xa56a('0x23'),'keyType':_0xa56a('0x6'),'keyContent':'','variableName':_0xa56a('0x24')},{'type':_0xa56a('0xc'),'content':'','key':_0xa56a('0x25'),'keyType':_0xa56a('0x6'),'keyContent':'','variableName':_0xa56a('0x26')},{'type':'keyValue','content':'','key':_0xa56a('0x27'),'keyType':_0xa56a('0x6'),'keyContent':'','variableName':'duration'},{'type':_0xa56a('0xc'),'content':'','key':_0xa56a('0x28'),'keyType':_0xa56a('0x6'),'keyContent':'','variableName':_0xa56a('0x29')}];break;}}return _0x38dfed;};
\ No newline at end of file
index 5fe4c75..63e344e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47e9=['stringify','Interaction','update','then','catch','clone','body','html','fax','mobile','lodash','../../mysqldb','../../config/logger','openchannel-interactions','mail-interactions','fax-interactions','sms-interactions','InteractionId','upperFirst','unknown','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','name','role'];(function(_0x1483ed,_0x3919ea){var _0x198002=function(_0x3e6f79){while(--_0x3e6f79){_0x1483ed['push'](_0x1483ed['shift']());}};_0x198002(++_0x3919ea);}(_0x47e9,0x1cc));var _0x947e=function(_0x186051,_0x55857d){_0x186051=_0x186051-0x0;var _0x3671b3=_0x47e9[_0x186051];return _0x3671b3;};'use strict';var _=require(_0x947e('0x0'));var db=require(_0x947e('0x1'))['db'];var loggers={'openchannel':require(_0x947e('0x2'))(_0x947e('0x3')),'mail':require('../../config/logger')(_0x947e('0x4')),'fax':require('../../config/logger')(_0x947e('0x5')),'sms':require(_0x947e('0x2'))(_0x947e('0x6')),'chat':require('../../config/logger')('chat-interactions'),'whatsapp':require(_0x947e('0x2'))('whatsapp-interactions')};function getInteractionId(_0x5927aa,_0x1e7935,_0x48b7d5){if(_0x5927aa&&_0x5927aa[_['upperFirst'](_0x48b7d5)+_0x947e('0x7')]){return _0x5927aa[_[_0x947e('0x8')](_0x48b7d5)+_0x947e('0x7')];}else if(_0x5927aa&&_0x5927aa['id']){return _0x5927aa['id'];}else if(_0x1e7935&&_0x1e7935['id']){return _0x1e7935['id'];}else{return _0x947e('0x9');}}function log(_0xec34b0,_0x525115,_0x3060b1,_0x3f54df,_0x1e2ba9,_0x236920){loggers[_0x1e2ba9[_0x947e('0xa')]()][_0xec34b0](_0x947e('0xb'),_0x236920[_0x947e('0xc')](),_0x525115?_0x525115['id']:null,_0x525115?_0x525115[_0x947e('0xd')]:null,_0x525115?_0x525115[_0x947e('0xe')]:null,getInteractionId(_0x3060b1,_0x3f54df,_0x1e2ba9),_0x3060b1?JSON[_0x947e('0xf')](_0x3060b1):'null');}function updateUser(_0x133c82,_0x4b81de,_0x3d2a21,_0x5f1c99,_0x33e64c){db[_[_0x947e('0x8')](_0x5f1c99)+_0x947e('0x10')]['findOne']({'where':{'id':getInteractionId(_0x4b81de,_0x3d2a21,_0x5f1c99)}})['then'](function(_0x4a7da7){if(_0x4a7da7){return _0x4a7da7[_0x947e('0x11')]({'UserId':_0x133c82?_0x133c82['id']:null});}})[_0x947e('0x12')](function(_0x156f38){if(_0x156f38){log('info',_0x133c82,_0x4b81de,_0x3d2a21,_0x5f1c99,_0x33e64c);}})[_0x947e('0x13')](function(){log('error',_0x133c82,_0x4b81de,_0x3d2a21,_0x5f1c99,_0x33e64c);});}exports['tracked']=function(_0x1f7e3a,_0x285bbb){return function(_0x5def08,_0xb388c5,_0x191c87){var _0x4e6d66=_0x5def08['user'];var _0x631a13={};var _0x1ee68f=_0x5def08['query'];if(_0x631a13){_0x631a13=_[_0x947e('0x14')](_0x5def08[_0x947e('0x15')]);_0x631a13=_['omit'](_0x631a13,[_0x947e('0x15'),_0x947e('0x16'),'phone',_0x947e('0x17'),_0x947e('0x18')]);}updateUser(_0x4e6d66,_0x631a13,_0x1ee68f,_0x1f7e3a,_0x285bbb);_0x191c87(null);};};
\ No newline at end of file
+var _0x4360=['error','tracked','query','clone','body','html','phone','fax','lodash','../../mysqldb','../../config/logger','openchannel-interactions','mail-interactions','sms-interactions','chat-interactions','upperFirst','InteractionId','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','name','role','Interaction','findOne','update','then'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4360,0xf8));var _0x0436=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0x4360[_0x433a86];return _0x23000c;};'use strict';var _=require(_0x0436('0x0'));var db=require(_0x0436('0x1'))['db'];var loggers={'openchannel':require(_0x0436('0x2'))(_0x0436('0x3')),'mail':require(_0x0436('0x2'))(_0x0436('0x4')),'fax':require(_0x0436('0x2'))('fax-interactions'),'sms':require('../../config/logger')(_0x0436('0x5')),'chat':require(_0x0436('0x2'))(_0x0436('0x6')),'whatsapp':require('../../config/logger')('whatsapp-interactions')};function getInteractionId(_0x4aadd7,_0x197f74,_0x29e775){if(_0x4aadd7&&_0x4aadd7[_[_0x0436('0x7')](_0x29e775)+_0x0436('0x8')]){return _0x4aadd7[_[_0x0436('0x7')](_0x29e775)+'InteractionId'];}else if(_0x4aadd7&&_0x4aadd7['id']){return _0x4aadd7['id'];}else if(_0x197f74&&_0x197f74['id']){return _0x197f74['id'];}else{return'unknown';}}function log(_0x2a3626,_0x36f3ff,_0x25817f,_0x265f82,_0x4cd498,_0x3f0f8b){loggers[_0x4cd498['toLowerCase']()][_0x2a3626](_0x0436('0x9'),_0x3f0f8b['toUpperCase'](),_0x36f3ff?_0x36f3ff['id']:null,_0x36f3ff?_0x36f3ff[_0x0436('0xa')]:null,_0x36f3ff?_0x36f3ff[_0x0436('0xb')]:null,getInteractionId(_0x25817f,_0x265f82,_0x4cd498),_0x25817f?JSON['stringify'](_0x25817f):'null');}function updateUser(_0x578363,_0x55c206,_0x4f153b,_0x60c4d7,_0x591509){db[_['upperFirst'](_0x60c4d7)+_0x0436('0xc')][_0x0436('0xd')]({'where':{'id':getInteractionId(_0x55c206,_0x4f153b,_0x60c4d7)}})['then'](function(_0x369134){if(_0x369134){return _0x369134[_0x0436('0xe')]({'UserId':_0x578363?_0x578363['id']:null});}})[_0x0436('0xf')](function(_0x19c886){if(_0x19c886){log('info',_0x578363,_0x55c206,_0x4f153b,_0x60c4d7,_0x591509);}})['catch'](function(){log(_0x0436('0x10'),_0x578363,_0x55c206,_0x4f153b,_0x60c4d7,_0x591509);});}exports[_0x0436('0x11')]=function(_0x4e37f7,_0x3f5a7d){return function(_0x37a70c,_0x258dfd,_0x917052){var _0x213abb=_0x37a70c['user'];var _0x5f4a00={};var _0x24105f=_0x37a70c[_0x0436('0x12')];if(_0x5f4a00){_0x5f4a00=_[_0x0436('0x13')](_0x37a70c[_0x0436('0x14')]);_0x5f4a00=_['omit'](_0x5f4a00,['body',_0x0436('0x15'),_0x0436('0x16'),_0x0436('0x17'),'mobile']);}updateUser(_0x213abb,_0x5f4a00,_0x24105f,_0x4e37f7,_0x3f5a7d);_0x917052(null);};};
\ No newline at end of file
index 8e7739b..b1786c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3777=['findOne','then','count','status','catch','users','User','admin','user','isUserLimit','crypto','util','composable-middleware','../../mysqldb','../../config/environment','data1','license','split','aes-256-ctr','format','update','utf8','parse','hasOwnProperty','use','License'];(function(_0x47ad4f,_0xefa6e1){var _0x441870=function(_0x47060b){while(--_0x47060b){_0x47ad4f['push'](_0x47ad4f['shift']());}};_0x441870(++_0xefa6e1);}(_0x3777,0xda));var _0x7377=function(_0x5416db,_0x55683a){_0x5416db=_0x5416db-0x0;var _0x243e35=_0x3777[_0x5416db];return _0x243e35;};'use strict';var crypto=require(_0x7377('0x0'));var util=require(_0x7377('0x1'));var compose=require(_0x7377('0x2'));var db=require(_0x7377('0x3'))['db'];var config=require(_0x7377('0x4'));function getValueFromLicense(_0x33739b,_0x23f737){if(_0x33739b&&_0x23f737){if(_0x23f737[_0x7377('0x5')]&&_0x23f737[_0x7377('0x6')]){var _0x4f85f0=_0x23f737[_0x7377('0x5')];var _0x4bfee4=_0x23f737[_0x7377('0x6')];var _0x1b2611=_0x4f85f0[_0x7377('0x7')]('-')[0x4];var _0x50b3ec=_0x4f85f0[_0x7377('0x7')]('-')[0x0];var _0x1101f8=crypto['createDecipher'](_0x7377('0x8'),util[_0x7377('0x9')]('%s:%s:%s',_0x1b2611,_0x4f85f0,_0x50b3ec));var _0x509a50=_0x1101f8[_0x7377('0xa')](_0x4bfee4,'base64',_0x7377('0xb'));_0x509a50+=_0x1101f8['final'](_0x7377('0xb'));var _0x50fddf=JSON[_0x7377('0xc')](_0x509a50);return _0x50fddf[_0x7377('0xd')](_0x33739b)?_0x50fddf[_0x33739b]:null;}}return null;}function isLimit(_0x424eb9,_0x34d9df,_0x4709a3,_0x3e203d){var _0x14a48f=_0x34d9df;return compose()[_0x7377('0xe')](function(_0x28ac76,_0x38c257,_0x4bd956){return db[_0x7377('0xf')][_0x7377('0x10')]({'where':{'id':0x1},'raw':!![]})['then'](function(_0x1509f7){var _0x1c7010=getValueFromLicense(_0x424eb9,_0x1509f7);return _0x1c7010?_0x1c7010:_0x14a48f;})[_0x7377('0x11')](function(_0x261e0a){_0x14a48f=_0x261e0a;return _0x4709a3[_0x7377('0x12')](_0x3e203d);})[_0x7377('0x11')](function(_0x68e35){if(_0x68e35>=_0x14a48f){return _0x38c257[_0x7377('0x13')](0x193)['json']({'message':util[_0x7377('0x9')]('Maximum\x20%s\x20limit\x20have\x20been\x20reached',_0x424eb9)});}_0x4bd956();})[_0x7377('0x14')](function(_0x3eead8){_0x4bd956(_0x3eead8);});});}function isUserLimit(){return isLimit(_0x7377('0x15'),0x1,db[_0x7377('0x16')],{'where':{'$or':[{'role':_0x7377('0x17')},{'role':_0x7377('0x18')}]}});}exports[_0x7377('0x19')]=isUserLimit;
\ No newline at end of file
+var _0xf8ab=['count','status','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','users','admin','user','isUserLimit','crypto','composable-middleware','license','data1','split','createDecipher','aes-256-ctr','format','%s:%s:%s','update','utf8','final','parse','use','License','findOne','then'];(function(_0x3cec8c,_0x3f6c1d){var _0x38032e=function(_0x4ef75b){while(--_0x4ef75b){_0x3cec8c['push'](_0x3cec8c['shift']());}};_0x38032e(++_0x3f6c1d);}(_0xf8ab,0xf3));var _0xbf8a=function(_0x5cfb69,_0x8ad059){_0x5cfb69=_0x5cfb69-0x0;var _0x3564e7=_0xf8ab[_0x5cfb69];return _0x3564e7;};'use strict';var crypto=require(_0xbf8a('0x0'));var util=require('util');var compose=require(_0xbf8a('0x1'));var db=require('../../mysqldb')['db'];var config=require('../../config/environment');function getValueFromLicense(_0x1437d9,_0x75faea){if(_0x1437d9&&_0x75faea){if(_0x75faea['data1']&&_0x75faea[_0xbf8a('0x2')]){var _0x27e50f=_0x75faea[_0xbf8a('0x3')];var _0x2fa5ec=_0x75faea['license'];var _0x585608=_0x27e50f[_0xbf8a('0x4')]('-')[0x4];var _0x17e1ae=_0x27e50f[_0xbf8a('0x4')]('-')[0x0];var _0x4f26ce=crypto[_0xbf8a('0x5')](_0xbf8a('0x6'),util[_0xbf8a('0x7')](_0xbf8a('0x8'),_0x585608,_0x27e50f,_0x17e1ae));var _0x1cf738=_0x4f26ce[_0xbf8a('0x9')](_0x2fa5ec,'base64',_0xbf8a('0xa'));_0x1cf738+=_0x4f26ce[_0xbf8a('0xb')](_0xbf8a('0xa'));var _0x3d36cf=JSON[_0xbf8a('0xc')](_0x1cf738);return _0x3d36cf['hasOwnProperty'](_0x1437d9)?_0x3d36cf[_0x1437d9]:null;}}return null;}function isLimit(_0x14e678,_0x67a7a,_0x21bc86,_0x868ea){var _0x5ccb67=_0x67a7a;return compose()[_0xbf8a('0xd')](function(_0x5c339e,_0x4813d0,_0x2ddd00){return db[_0xbf8a('0xe')][_0xbf8a('0xf')]({'where':{'id':0x1},'raw':!![]})[_0xbf8a('0x10')](function(_0x5cff2b){var _0x515db8=getValueFromLicense(_0x14e678,_0x5cff2b);return _0x515db8?_0x515db8:_0x5ccb67;})[_0xbf8a('0x10')](function(_0x215fb3){_0x5ccb67=_0x215fb3;return _0x21bc86[_0xbf8a('0x11')](_0x868ea);})[_0xbf8a('0x10')](function(_0x253e41){if(_0x253e41>=_0x5ccb67){return _0x4813d0[_0xbf8a('0x12')](0x193)[_0xbf8a('0x13')]({'message':util['format'](_0xbf8a('0x14'),_0x14e678)});}_0x2ddd00();})[_0xbf8a('0x15')](function(_0x170e1d){_0x2ddd00(_0x170e1d);});});}function isUserLimit(){return isLimit(_0xbf8a('0x16'),0x1,db['User'],{'where':{'$or':[{'role':_0xbf8a('0x17')},{'role':_0xbf8a('0x18')}]}});}exports[_0xbf8a('0x19')]=isUserLimit;
\ No newline at end of file
index 66b0f18..249926a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdafb=['castTo','text','CAST(','field','\x20AS\x20','$ne','$notIn','\x20OR\x20','\x20IS\x20NULL)','$in','IN\x20?','NOT\x20IN\x20?','=\x20?','<>\x20?','$substring','$startsWith','$endsWith','$lt','<\x20?','<=\x20?','>=\x20?','BETWEEN\x20?\x20AND\x20?','start','shift','pop','utcOffset','add','hours','minutes','seconds','lodash','moment','parseSearch','startsWith','[$or]','and','replace','[$and]','split','length','slice','forEach','match','indexOf','map','conditions','DATE','$eq','operator','$between','value','includes','$gt','$lte','days','format','YYYY-MM-DD'];(function(_0xd1d19a,_0x1933f0){var _0x52a79d=function(_0x5199e2){while(--_0x5199e2){_0xd1d19a['push'](_0xd1d19a['shift']());}};_0x52a79d(++_0x1933f0);}(_0xdafb,0x13b));var _0xbdaf=function(_0x5d1533,_0xf2d3e9){_0x5d1533=_0x5d1533-0x0;var _0x269fda=_0xdafb[_0x5d1533];return _0x269fda;};'use strict';var _=require(_0xbdaf('0x0'));var moment=require(_0xbdaf('0x1'));exports[_0xbdaf('0x2')]=function(_0x361e3a){var _0x18f773={'conditions':[]};_0x18f773['sqlOperator']=_[_0xbdaf('0x3')](_0x361e3a,_0xbdaf('0x4'))?'or':_0xbdaf('0x5');var _0x5e836d=_0x361e3a[_0xbdaf('0x6')](_0xbdaf('0x7'),'')[_0xbdaf('0x6')](_0xbdaf('0x4'),'')[_0xbdaf('0x8')]('||');for(var _0x3e817f=0x0;_0x3e817f<_0x5e836d[_0xbdaf('0x9')];_0x3e817f++){var _0x9dbec3=_0x5e836d[_0x3e817f][_0xbdaf('0x8')](':=');var _0x2a0fff=_0x9dbec3[0x0];var _0x2993cc=_0x9dbec3[_0xbdaf('0xa')](0x1);_0x2993cc[_0xbdaf('0xb')](function(_0x2d5635){var _0x5cc333=_0x2d5635['split']('[')['shift']();var _0x4ee9d8=_0x2d5635[_0xbdaf('0xc')](/\[(.*?)\]/g);_0x4ee9d8[_0xbdaf('0xb')](function(_0x4bdb22){var _0x570216=_0x4bdb22[_0xbdaf('0x8')]('[')['filter'](function(_0x1498a2){return _0x1498a2[_0xbdaf('0xd')](']')>-0x1;})[_0xbdaf('0xe')](function(_0x2a64ed){return _0x2a64ed[_0xbdaf('0x8')](']')[0x0];})[0x0];_0x18f773[_0xbdaf('0xf')]['push']({'field':_0x2a0fff,'operator':_0x5cc333,'value':_0x570216});});});}return _0x18f773;};exports['buildExpression']=function(_0x44d600,_0x4bafa5,_0x280bac){var _0x40f7b3={};if(_0x4bafa5===_0xbdaf('0x10')){if(_0x280bac['operator']===_0xbdaf('0x11')){_0x280bac[_0xbdaf('0x12')]=_0xbdaf('0x13');_0x280bac[_0xbdaf('0x14')]+=','+_0x280bac[_0xbdaf('0x14')];}else if(_[_0xbdaf('0x15')]([_0xbdaf('0x16'),_0xbdaf('0x17')],_0x280bac['operator'])){_0x280bac[_0xbdaf('0x14')]=moment(_0x280bac[_0xbdaf('0x14')])['add'](0x1,_0xbdaf('0x18'))[_0xbdaf('0x19')](_0xbdaf('0x1a'));}}if(_0x280bac[_0xbdaf('0x1b')]){_0x4bafa5=_0x280bac[_0xbdaf('0x1b')];_0x40f7b3[_0xbdaf('0x1c')]=_0xbdaf('0x1d')+_0x44d600+'.'+_0x280bac[_0xbdaf('0x1e')]+_0xbdaf('0x1f')+_0x280bac['castTo']+')\x20'+parseOperator(_0x280bac[_0xbdaf('0x12')]);}else{_0x40f7b3['text']=_0x44d600+'.'+_0x280bac['field']+'\x20'+parseOperator(_0x280bac[_0xbdaf('0x12')]);}if(_['includes']([_0xbdaf('0x20'),_0xbdaf('0x21')],_0x280bac[_0xbdaf('0x12')]))_0x40f7b3['text']='('+_0x40f7b3[_0xbdaf('0x1c')]+_0xbdaf('0x22')+_0x44d600+'.'+_0x280bac[_0xbdaf('0x1e')]+_0xbdaf('0x23');_0x40f7b3[_0xbdaf('0x14')]=parseValue(_0x4bafa5,_0x280bac[_0xbdaf('0x12')],_0x280bac[_0xbdaf('0x14')]);return _0x40f7b3;};function parseOperator(_0x52a5bf){var _0x585e19;switch(_0x52a5bf){case _0xbdaf('0x24'):_0x585e19=_0xbdaf('0x25');break;case _0xbdaf('0x21'):_0x585e19=_0xbdaf('0x26');break;case'$eq':_0x585e19=_0xbdaf('0x27');break;case'$ne':_0x585e19=_0xbdaf('0x28');break;case _0xbdaf('0x29'):case _0xbdaf('0x2a'):case _0xbdaf('0x2b'):_0x585e19='LIKE\x20?';break;case _0xbdaf('0x2c'):_0x585e19=_0xbdaf('0x2d');break;case _0xbdaf('0x16'):_0x585e19='>\x20?';break;case _0xbdaf('0x17'):_0x585e19=_0xbdaf('0x2e');break;case'$gte':_0x585e19=_0xbdaf('0x2f');break;case _0xbdaf('0x13'):_0x585e19=_0xbdaf('0x30');break;}return _0x585e19;}function parseValue(_0x171db5,_0xc1ad04,_0xc8de53){var _0xf5eb02={'start':undefined,'end':undefined};switch(_0xc1ad04){case _0xbdaf('0x24'):case'$notIn':_0xf5eb02[_0xbdaf('0x31')]=_0xc8de53[_0xbdaf('0x8')](',');break;case _0xbdaf('0x29'):_0xf5eb02['start']='%'+_0xc8de53+'%';break;case _0xbdaf('0x2a'):_0xf5eb02[_0xbdaf('0x31')]=_0xc8de53+'%';break;case _0xbdaf('0x2b'):_0xf5eb02[_0xbdaf('0x31')]='%'+_0xc8de53;break;case'$between':var _0x4c1248=_0xc8de53[_0xbdaf('0x8')](',');var _0xc8de53=_0x4c1248[_0xbdaf('0x32')]();var _0x29c16d=_0x4c1248[_0xbdaf('0x33')]();if(_0x171db5==='DATE'){_0xc8de53=moment(_0xc8de53)['utcOffset'](0x0,!![])['format']();_0x29c16d=moment(_0x29c16d)[_0xbdaf('0x34')](0x0,!![])[_0xbdaf('0x35')](0x17,_0xbdaf('0x36'))[_0xbdaf('0x35')](0x3b,_0xbdaf('0x37'))[_0xbdaf('0x35')](0x3b,_0xbdaf('0x38'))['format']();}_0xf5eb02={'start':_0xc8de53,'end':_0x29c16d};break;default:_0xf5eb02['start']=_0xc8de53;break;}return _0xf5eb02;}
\ No newline at end of file
+var _0xf73b=['and','[$or]','split','forEach','match','filter','indexOf','map','conditions','buildExpression','DATE','operator','$between','value','includes','$lte','days','format','YYYY-MM-DD','castTo','text','CAST(','field','\x20AS\x20','$notIn','\x20IS\x20NULL)','$in','IN\x20?','$eq','=\x20?','$ne','<>\x20?','$startsWith','$lt','<\x20?','$gt','>\x20?','<=\x20?','$gte','>=\x20?','BETWEEN\x20?\x20AND\x20?','$substring','start','$endsWith','shift','pop','utcOffset','add','seconds','parseSearch','sqlOperator','startsWith'];(function(_0x57a699,_0x276bcc){var _0x4f7ee1=function(_0x1ab4bf){while(--_0x1ab4bf){_0x57a699['push'](_0x57a699['shift']());}};_0x4f7ee1(++_0x276bcc);}(_0xf73b,0x19d));var _0xbf73=function(_0xd444e7,_0x986904){_0xd444e7=_0xd444e7-0x0;var _0x171580=_0xf73b[_0xd444e7];return _0x171580;};'use strict';var _=require('lodash');var moment=require('moment');exports[_0xbf73('0x0')]=function(_0x33c21e){var _0x1c955b={'conditions':[]};_0x1c955b[_0xbf73('0x1')]=_[_0xbf73('0x2')](_0x33c21e,'[$or]')?'or':_0xbf73('0x3');var _0x3c2d4a=_0x33c21e['replace']('[$and]','')['replace'](_0xbf73('0x4'),'')[_0xbf73('0x5')]('||');for(var _0x16b29c=0x0;_0x16b29c<_0x3c2d4a['length'];_0x16b29c++){var _0x3780b9=_0x3c2d4a[_0x16b29c]['split'](':=');var _0xca70a8=_0x3780b9[0x0];var _0x168482=_0x3780b9['slice'](0x1);_0x168482[_0xbf73('0x6')](function(_0x15d624){var _0x50fbf4=_0x15d624[_0xbf73('0x5')]('[')['shift']();var _0x332a8a=_0x15d624[_0xbf73('0x7')](/\[(.*?)\]/g);_0x332a8a[_0xbf73('0x6')](function(_0x43e729){var _0x290e06=_0x43e729[_0xbf73('0x5')]('[')[_0xbf73('0x8')](function(_0x4defc1){return _0x4defc1[_0xbf73('0x9')](']')>-0x1;})[_0xbf73('0xa')](function(_0x41d6f0){return _0x41d6f0[_0xbf73('0x5')](']')[0x0];})[0x0];_0x1c955b[_0xbf73('0xb')]['push']({'field':_0xca70a8,'operator':_0x50fbf4,'value':_0x290e06});});});}return _0x1c955b;};exports[_0xbf73('0xc')]=function(_0x46f1f2,_0x276fd0,_0x1132fd){var _0x2317ee={};if(_0x276fd0===_0xbf73('0xd')){if(_0x1132fd['operator']==='$eq'){_0x1132fd[_0xbf73('0xe')]=_0xbf73('0xf');_0x1132fd[_0xbf73('0x10')]+=','+_0x1132fd[_0xbf73('0x10')];}else if(_[_0xbf73('0x11')](['$gt',_0xbf73('0x12')],_0x1132fd['operator'])){_0x1132fd[_0xbf73('0x10')]=moment(_0x1132fd[_0xbf73('0x10')])['add'](0x1,_0xbf73('0x13'))[_0xbf73('0x14')](_0xbf73('0x15'));}}if(_0x1132fd[_0xbf73('0x16')]){_0x276fd0=_0x1132fd[_0xbf73('0x16')];_0x2317ee[_0xbf73('0x17')]=_0xbf73('0x18')+_0x46f1f2+'.'+_0x1132fd[_0xbf73('0x19')]+_0xbf73('0x1a')+_0x1132fd[_0xbf73('0x16')]+')\x20'+parseOperator(_0x1132fd[_0xbf73('0xe')]);}else{_0x2317ee[_0xbf73('0x17')]=_0x46f1f2+'.'+_0x1132fd[_0xbf73('0x19')]+'\x20'+parseOperator(_0x1132fd[_0xbf73('0xe')]);}if(_[_0xbf73('0x11')](['$ne',_0xbf73('0x1b')],_0x1132fd['operator']))_0x2317ee['text']='('+_0x2317ee[_0xbf73('0x17')]+'\x20OR\x20'+_0x46f1f2+'.'+_0x1132fd[_0xbf73('0x19')]+_0xbf73('0x1c');_0x2317ee['value']=parseValue(_0x276fd0,_0x1132fd['operator'],_0x1132fd['value']);return _0x2317ee;};function parseOperator(_0x52cea8){var _0x250aeb;switch(_0x52cea8){case _0xbf73('0x1d'):_0x250aeb=_0xbf73('0x1e');break;case _0xbf73('0x1b'):_0x250aeb='NOT\x20IN\x20?';break;case _0xbf73('0x1f'):_0x250aeb=_0xbf73('0x20');break;case _0xbf73('0x21'):_0x250aeb=_0xbf73('0x22');break;case'$substring':case _0xbf73('0x23'):case'$endsWith':_0x250aeb='LIKE\x20?';break;case _0xbf73('0x24'):_0x250aeb=_0xbf73('0x25');break;case _0xbf73('0x26'):_0x250aeb=_0xbf73('0x27');break;case _0xbf73('0x12'):_0x250aeb=_0xbf73('0x28');break;case _0xbf73('0x29'):_0x250aeb=_0xbf73('0x2a');break;case _0xbf73('0xf'):_0x250aeb=_0xbf73('0x2b');break;}return _0x250aeb;}function parseValue(_0x5aee68,_0x4997d5,_0x107a4b){var _0x2452a8={'start':undefined,'end':undefined};switch(_0x4997d5){case _0xbf73('0x1d'):case'$notIn':_0x2452a8['start']=_0x107a4b[_0xbf73('0x5')](',');break;case _0xbf73('0x2c'):_0x2452a8['start']='%'+_0x107a4b+'%';break;case _0xbf73('0x23'):_0x2452a8[_0xbf73('0x2d')]=_0x107a4b+'%';break;case _0xbf73('0x2e'):_0x2452a8[_0xbf73('0x2d')]='%'+_0x107a4b;break;case _0xbf73('0xf'):var _0x2796cb=_0x107a4b[_0xbf73('0x5')](',');var _0x107a4b=_0x2796cb[_0xbf73('0x2f')]();var _0x23e1e0=_0x2796cb[_0xbf73('0x30')]();if(_0x5aee68===_0xbf73('0xd')){_0x107a4b=moment(_0x107a4b)[_0xbf73('0x31')](0x0,!![])['format']();_0x23e1e0=moment(_0x23e1e0)[_0xbf73('0x31')](0x0,!![])[_0xbf73('0x32')](0x17,'hours')[_0xbf73('0x32')](0x3b,'minutes')[_0xbf73('0x32')](0x3b,_0xbf73('0x33'))[_0xbf73('0x14')]();}_0x2452a8={'start':_0x107a4b,'end':_0x23e1e0};break;default:_0x2452a8[_0xbf73('0x2d')]=_0x107a4b;break;}return _0x2452a8;}
\ No newline at end of file
index 62117fd..0e57018 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab31=['model','name','intersection','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','lower','options','sequelize','moment','keys','includes','parse','fields','split','filters','isEmpty','forOwn','find','type','DATE','isPlainObject','$gte','format','YYYY-MM-DD','utc','$lte','uniqueid','isArray','limit','offset','map','indexOf','priority','cast','col','unsigned','substr','DESC','ASC','omit','length','isObject','isString','unset','isNumeric','match','^[+]?[0-9]*$','isEmail','getFullTextValue','forEach','replace','push','join','getOptions','query','$id'];(function(_0x28be72,_0x2b83af){var _0x46c5da=function(_0x312911){while(--_0x312911){_0x28be72['push'](_0x28be72['shift']());}};_0x46c5da(++_0x2b83af);}(_0xab31,0x10f));var _0x1ab3=function(_0x1098a5,_0x586b8c){_0x1098a5=_0x1098a5-0x0;var _0x4d27a9=_0xab31[_0x1098a5];return _0x4d27a9;};'use strict';var _=require('lodash');var sequelize=require(_0x1ab3('0x0'));var moment=require(_0x1ab3('0x1'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x2d0f85){var _0x5bfa9c=['ne'];try{var _0x48e5b6=JSON['parse'](_0x2d0f85);var _0xb2313f=Object[_0x1ab3('0x2')](_0x48e5b6)[0x0];return _0x5bfa9c[_0x1ab3('0x3')](_0xb2313f);}catch(_0x2a148a){return![];}}function getOperatorValue(_0x37e175){var _0x4c01e3=JSON[_0x1ab3('0x4')](_0x37e175);var _0x2dc8ca=Object['keys'](_0x4c01e3)[0x0];var _0x1c7787=_0x4c01e3[_0x2dc8ca];return{['$'+_0x2dc8ca]:_0x1c7787};}exports[_0x1ab3('0x5')]=function(_0x6c383f){var _0x5aaf8b=null;if(_0x6c383f){_0x5aaf8b=_0x6c383f[_0x1ab3('0x6')](',');}return _0x5aaf8b;};exports[_0x1ab3('0x7')]=function(_0x9ae7bb,_0x17c5d4){var _0x247c49={};if(!_[_0x1ab3('0x8')](_0x9ae7bb)){_[_0x1ab3('0x9')](_0x9ae7bb,function(_0x8a72cf,_0x3cd929){try{if(_0x17c5d4){var _0x45ea67=_[_0x1ab3('0xa')](_0x17c5d4,{'name':_0x3cd929})||{};if(hasSequelizeOperator(_0x8a72cf)){_0x247c49[_0x3cd929]=getOperatorValue(_0x8a72cf);}else if(_0x45ea67[_0x1ab3('0xb')]===_0x1ab3('0xc')&&_[_0x1ab3('0xd')](_0x8a72cf)){var _0x21055a=JSON[_0x1ab3('0x4')](_0x8a72cf);var _0x1bbf6d={'$gte':moment(moment(_0x21055a[_0x1ab3('0xe')])[_0x1ab3('0xf')](_0x1ab3('0x10')))[_0x1ab3('0x11')]()['format'](),'$lte':moment(moment(_0x21055a[_0x1ab3('0x12')])['format'](_0x1ab3('0x10')))['utc']()['subtract'](0x1,'s')[_0x1ab3('0xf')]()};_0x247c49[_0x3cd929]=_0x1bbf6d;}else if(_0x45ea67['name']===_0x1ab3('0x13')){_0x247c49[_0x3cd929]=_0x8a72cf;}else{_0x247c49[_0x3cd929]=_['isArray'](_0x8a72cf)?_0x8a72cf:JSON[_0x1ab3('0x4')](_0x8a72cf);}}else{_0x247c49[_0x3cd929]=_[_0x1ab3('0x14')](_0x8a72cf)?_0x8a72cf:JSON[_0x1ab3('0x4')](_0x8a72cf);}}catch(_0x5b0b76){_0x247c49[_0x3cd929]=_0x8a72cf[_0x1ab3('0x6')](',');}});}return _0x247c49;};exports[_0x1ab3('0x15')]=function(_0x6d89ac){_0x6d89ac=parseInt(_0x6d89ac,0xa);if(!_0x6d89ac||_0x6d89ac<0x0){_0x6d89ac=LIMIT_VALUE;}return _0x6d89ac;};exports[_0x1ab3('0x16')]=function(_0x8b691){_0x8b691=parseInt(_0x8b691,0xa);if(!_0x8b691||_0x8b691<0x0){_0x8b691=0x0;}return _0x8b691;};exports['sort']=function(_0x3d0769){var _0x400cb0,_0x238400=null;if(_0x3d0769){_0x400cb0=_0x3d0769[_0x1ab3('0x6')](',');_0x238400=_[_0x1ab3('0x17')](_0x400cb0,function(_0x3f5b85){if(_0x3f5b85[_0x1ab3('0x18')]('-')===0x0){return[_0x3f5b85===_0x1ab3('0x19')?sequelize[_0x1ab3('0x1a')](sequelize[_0x1ab3('0x1b')](_0x1ab3('0x19')),_0x1ab3('0x1c')):_0x3f5b85[_0x1ab3('0x1d')](0x1),_0x1ab3('0x1e')];}else{return[_0x3f5b85===_0x1ab3('0x19')?sequelize['cast'](sequelize[_0x1ab3('0x1b')](_0x1ab3('0x19')),_0x1ab3('0x1c')):_0x3f5b85,_0x1ab3('0x1f')];}});}return _0x238400;};exports[_0x1ab3('0x20')]=function(_0x380c2f,_0x3bf021){if(_[_0x1ab3('0x8')](_0x380c2f)){return _0x380c2f;}if(_[_0x1ab3('0x14')](_0x380c2f)){for(var _0x362ad7=0x0;_0x362ad7<_0x380c2f[_0x1ab3('0x21')];_0x362ad7+=0x1){_0x380c2f[_0x362ad7]=this['omit'](_0x380c2f[_0x362ad7],_0x3bf021);}return _0x380c2f;}if(!_[_0x1ab3('0x22')](_0x380c2f)){return _0x380c2f;}if(_[_0x1ab3('0x23')](_0x3bf021)){_0x3bf021=[_0x3bf021];}if(!_['isArray'](_0x3bf021)){return _0x380c2f;}for(var _0x5ab051=0x0;_0x5ab051<_0x3bf021[_0x1ab3('0x21')];_0x5ab051+=0x1){_[_0x1ab3('0x24')](_0x380c2f,_0x3bf021[_0x5ab051]);}for(var _0x14a0d0 in _0x380c2f){if(_0x380c2f['hasOwnProperty'](_0x14a0d0)){_0x380c2f[_0x14a0d0]=this[_0x1ab3('0x20')](_0x380c2f[_0x14a0d0],_0x3bf021);}}return _0x380c2f;};exports[_0x1ab3('0x25')]=function(_0x2054b7){return _0x2054b7[_0x1ab3('0x26')](RegExp(_0x1ab3('0x27')))?!![]:![];};exports[_0x1ab3('0x28')]=function(_0x44b0e3){return _0x44b0e3['match'](/^\S+@\S+$/)?!![]:![];};exports[_0x1ab3('0x29')]=function(_0x12d5ac){var _0x410930=[];_0x12d5ac['split'](/[ ,]+/)[_0x1ab3('0x2a')](function(_0x35877b){_0x35877b=_0x35877b[_0x1ab3('0x2b')](/([^:]")"+/g,'$1');_0x35877b='+'+_0x35877b+'*';if(_0x35877b['includes']('@'))_0x35877b='\x22'+_0x35877b+'\x22';_0x410930[_0x1ab3('0x2c')](_0x35877b);});return _0x410930[_0x1ab3('0x2d')]('\x20');};exports[_0x1ab3('0x2e')]=function(_0x548403,_0x44860a,_0x16d2a3){var _0x3a74de={},_0x399b5c={};if(_0x44860a[_0x1ab3('0x2f')][_0x1ab3('0x30')]){_0x44860a[_0x1ab3('0x2f')]['id']=_0x44860a[_0x1ab3('0x2f')][_0x1ab3('0x30')];delete _0x44860a[_0x1ab3('0x2f')]['$id'];}_0x3a74de[_0x1ab3('0x31')]=_[_0x1ab3('0x17')](_0x548403,_0x1ab3('0x32'));_0x3a74de[_0x1ab3('0x2f')]=_[_0x1ab3('0x2')](_0x44860a[_0x1ab3('0x2f')]);_0x3a74de[_0x1ab3('0x7')]=_[_0x1ab3('0x33')](_0x3a74de['model'],_0x3a74de[_0x1ab3('0x2f')]);_0x399b5c[_0x1ab3('0x34')]=_[_0x1ab3('0x33')](_0x3a74de[_0x1ab3('0x31')],this[_0x1ab3('0x5')](_0x44860a[_0x1ab3('0x2f')]['fields']));_0x399b5c[_0x1ab3('0x34')]=_0x399b5c[_0x1ab3('0x34')][_0x1ab3('0x21')]?_0x399b5c['attributes']:_0x3a74de['model'];if(!_0x44860a[_0x1ab3('0x2f')][_0x1ab3('0x35')](_0x1ab3('0x36'))){_0x399b5c['limit']=this[_0x1ab3('0x15')](_0x44860a['query'][_0x1ab3('0x15')]);_0x399b5c[_0x1ab3('0x16')]=this[_0x1ab3('0x16')](_0x44860a[_0x1ab3('0x2f')]['offset']);}_0x399b5c[_0x1ab3('0x37')]=this[_0x1ab3('0x38')](_0x44860a[_0x1ab3('0x2f')]['sort']);_0x399b5c[_0x1ab3('0x39')]=this[_0x1ab3('0x7')](_[_0x1ab3('0x3a')](_0x44860a[_0x1ab3('0x2f')],_0x3a74de[_0x1ab3('0x7')]),_0x548403);if(_0x44860a[_0x1ab3('0x2f')][_0x1ab3('0x3b')]){_0x399b5c['where']=_[_0x1ab3('0x3c')](_0x399b5c[_0x1ab3('0x39')],{'$or':_[_0x1ab3('0x17')](_0x548403,function(_0x2fe0d4){if(_0x2fe0d4[_0x1ab3('0xb')]!==_0x1ab3('0x3d')){if(_0x16d2a3){return sequelize['where'](sequelize['fn'](_0x1ab3('0x3e'),sequelize[_0x1ab3('0x1b')](_0x2fe0d4[_0x1ab3('0x32')])),{'$like':sequelize['fn']('lower','%'+_0x44860a[_0x1ab3('0x2f')][_0x1ab3('0x3b')]+'%')});}else{var _0x1ae6a3={};_0x1ae6a3[_0x2fe0d4[_0x1ab3('0x32')]]={'$like':'%'+_0x44860a[_0x1ab3('0x2f')][_0x1ab3('0x3b')]+'%'};return _0x1ae6a3;}}})});}_0x399b5c=_['merge']({},_0x399b5c,_0x44860a[_0x1ab3('0x3f')]);return _0x399b5c;};
\ No newline at end of file
+var _0xf3a9=['model','intersection','attributes','nolimit','limit','order','where','pick','filter','merge','type','lower','options','moment','parse','keys','includes','fields','filters','forOwn','find','DATE','$gte','YYYY-MM-DD','utc','$lte','format','subtract','name','isArray','split','offset','sort','map','indexOf','priority','cast','col','unsigned','DESC','ASC','omit','isEmpty','length','isString','hasOwnProperty','isNumeric','match','^[+]?[0-9]*$','isEmail','getFullTextValue','forEach','push','join','getOptions','query','$id'];(function(_0x138448,_0x1ba248){var _0xcabbb6=function(_0x44028a){while(--_0x44028a){_0x138448['push'](_0x138448['shift']());}};_0xcabbb6(++_0x1ba248);}(_0xf3a9,0x12a));var _0x9f3a=function(_0x531f6b,_0x461469){_0x531f6b=_0x531f6b-0x0;var _0x5d3b8b=_0xf3a9[_0x531f6b];return _0x5d3b8b;};'use strict';var _=require('lodash');var sequelize=require('sequelize');var moment=require(_0x9f3a('0x0'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x2e8b8e){var _0x466f18=['ne'];try{var _0x1fdf7e=JSON[_0x9f3a('0x1')](_0x2e8b8e);var _0x42f894=Object[_0x9f3a('0x2')](_0x1fdf7e)[0x0];return _0x466f18[_0x9f3a('0x3')](_0x42f894);}catch(_0x1b26eb){return![];}}function getOperatorValue(_0x3bc60a){var _0x39b0db=JSON[_0x9f3a('0x1')](_0x3bc60a);var _0x4225a4=Object[_0x9f3a('0x2')](_0x39b0db)[0x0];var _0x1498dc=_0x39b0db[_0x4225a4];return{['$'+_0x4225a4]:_0x1498dc};}exports[_0x9f3a('0x4')]=function(_0x3da9d6){var _0x3461d2=null;if(_0x3da9d6){_0x3461d2=_0x3da9d6['split'](',');}return _0x3461d2;};exports[_0x9f3a('0x5')]=function(_0x251e4e,_0x2dedc0){var _0x400fbb={};if(!_['isEmpty'](_0x251e4e)){_[_0x9f3a('0x6')](_0x251e4e,function(_0xf20dd7,_0x3f080f){try{if(_0x2dedc0){var _0x1952f9=_[_0x9f3a('0x7')](_0x2dedc0,{'name':_0x3f080f})||{};if(hasSequelizeOperator(_0xf20dd7)){_0x400fbb[_0x3f080f]=getOperatorValue(_0xf20dd7);}else if(_0x1952f9['type']===_0x9f3a('0x8')&&_['isPlainObject'](_0xf20dd7)){var _0x79bb53=JSON[_0x9f3a('0x1')](_0xf20dd7);var _0x43fadd={'$gte':moment(moment(_0x79bb53[_0x9f3a('0x9')])['format'](_0x9f3a('0xa')))[_0x9f3a('0xb')]()['format'](),'$lte':moment(moment(_0x79bb53[_0x9f3a('0xc')])[_0x9f3a('0xd')](_0x9f3a('0xa')))[_0x9f3a('0xb')]()[_0x9f3a('0xe')](0x1,'s')[_0x9f3a('0xd')]()};_0x400fbb[_0x3f080f]=_0x43fadd;}else if(_0x1952f9[_0x9f3a('0xf')]==='uniqueid'){_0x400fbb[_0x3f080f]=_0xf20dd7;}else{_0x400fbb[_0x3f080f]=_[_0x9f3a('0x10')](_0xf20dd7)?_0xf20dd7:JSON[_0x9f3a('0x1')](_0xf20dd7);}}else{_0x400fbb[_0x3f080f]=_[_0x9f3a('0x10')](_0xf20dd7)?_0xf20dd7:JSON[_0x9f3a('0x1')](_0xf20dd7);}}catch(_0x2fb2c1){_0x400fbb[_0x3f080f]=_0xf20dd7[_0x9f3a('0x11')](',');}});}return _0x400fbb;};exports['limit']=function(_0x575a15){_0x575a15=parseInt(_0x575a15,0xa);if(!_0x575a15||_0x575a15<0x0){_0x575a15=LIMIT_VALUE;}return _0x575a15;};exports[_0x9f3a('0x12')]=function(_0x4c7462){_0x4c7462=parseInt(_0x4c7462,0xa);if(!_0x4c7462||_0x4c7462<0x0){_0x4c7462=0x0;}return _0x4c7462;};exports[_0x9f3a('0x13')]=function(_0x123770){var _0x315ac5,_0x2f6550=null;if(_0x123770){_0x315ac5=_0x123770[_0x9f3a('0x11')](',');_0x2f6550=_[_0x9f3a('0x14')](_0x315ac5,function(_0x264a4f){if(_0x264a4f[_0x9f3a('0x15')]('-')===0x0){return[_0x264a4f===_0x9f3a('0x16')?sequelize[_0x9f3a('0x17')](sequelize[_0x9f3a('0x18')](_0x9f3a('0x16')),_0x9f3a('0x19')):_0x264a4f['substr'](0x1),_0x9f3a('0x1a')];}else{return[_0x264a4f==='priority'?sequelize[_0x9f3a('0x17')](sequelize['col'](_0x9f3a('0x16')),_0x9f3a('0x19')):_0x264a4f,_0x9f3a('0x1b')];}});}return _0x2f6550;};exports[_0x9f3a('0x1c')]=function(_0x556efe,_0xbe188){if(_[_0x9f3a('0x1d')](_0x556efe)){return _0x556efe;}if(_[_0x9f3a('0x10')](_0x556efe)){for(var _0x4330c4=0x0;_0x4330c4<_0x556efe[_0x9f3a('0x1e')];_0x4330c4+=0x1){_0x556efe[_0x4330c4]=this[_0x9f3a('0x1c')](_0x556efe[_0x4330c4],_0xbe188);}return _0x556efe;}if(!_['isObject'](_0x556efe)){return _0x556efe;}if(_[_0x9f3a('0x1f')](_0xbe188)){_0xbe188=[_0xbe188];}if(!_[_0x9f3a('0x10')](_0xbe188)){return _0x556efe;}for(var _0x2e09df=0x0;_0x2e09df<_0xbe188[_0x9f3a('0x1e')];_0x2e09df+=0x1){_['unset'](_0x556efe,_0xbe188[_0x2e09df]);}for(var _0x301514 in _0x556efe){if(_0x556efe[_0x9f3a('0x20')](_0x301514)){_0x556efe[_0x301514]=this[_0x9f3a('0x1c')](_0x556efe[_0x301514],_0xbe188);}}return _0x556efe;};exports[_0x9f3a('0x21')]=function(_0x4e2212){return _0x4e2212[_0x9f3a('0x22')](RegExp(_0x9f3a('0x23')))?!![]:![];};exports[_0x9f3a('0x24')]=function(_0x1d82cb){return _0x1d82cb['match'](/^\S+@\S+$/)?!![]:![];};exports[_0x9f3a('0x25')]=function(_0x11fe06){var _0x49af7d=[];_0x11fe06[_0x9f3a('0x11')](/[ ,]+/)[_0x9f3a('0x26')](function(_0x424713){_0x424713=_0x424713['replace'](/([^:]")"+/g,'$1');_0x424713='+'+_0x424713+'*';if(_0x424713[_0x9f3a('0x3')]('@'))_0x424713='\x22'+_0x424713+'\x22';_0x49af7d[_0x9f3a('0x27')](_0x424713);});return _0x49af7d[_0x9f3a('0x28')]('\x20');};exports[_0x9f3a('0x29')]=function(_0x33cc32,_0x6c8081,_0x16039b){var _0x4e2d1b={},_0x1d07ae={};if(_0x6c8081[_0x9f3a('0x2a')][_0x9f3a('0x2b')]){_0x6c8081[_0x9f3a('0x2a')]['id']=_0x6c8081[_0x9f3a('0x2a')][_0x9f3a('0x2b')];delete _0x6c8081[_0x9f3a('0x2a')][_0x9f3a('0x2b')];}_0x4e2d1b[_0x9f3a('0x2c')]=_[_0x9f3a('0x14')](_0x33cc32,'name');_0x4e2d1b[_0x9f3a('0x2a')]=_['keys'](_0x6c8081[_0x9f3a('0x2a')]);_0x4e2d1b[_0x9f3a('0x5')]=_[_0x9f3a('0x2d')](_0x4e2d1b[_0x9f3a('0x2c')],_0x4e2d1b['query']);_0x1d07ae[_0x9f3a('0x2e')]=_[_0x9f3a('0x2d')](_0x4e2d1b[_0x9f3a('0x2c')],this[_0x9f3a('0x4')](_0x6c8081[_0x9f3a('0x2a')]['fields']));_0x1d07ae['attributes']=_0x1d07ae[_0x9f3a('0x2e')][_0x9f3a('0x1e')]?_0x1d07ae[_0x9f3a('0x2e')]:_0x4e2d1b[_0x9f3a('0x2c')];if(!_0x6c8081[_0x9f3a('0x2a')][_0x9f3a('0x20')](_0x9f3a('0x2f'))){_0x1d07ae['limit']=this[_0x9f3a('0x30')](_0x6c8081['query'][_0x9f3a('0x30')]);_0x1d07ae['offset']=this['offset'](_0x6c8081['query'][_0x9f3a('0x12')]);}_0x1d07ae[_0x9f3a('0x31')]=this[_0x9f3a('0x13')](_0x6c8081[_0x9f3a('0x2a')][_0x9f3a('0x13')]);_0x1d07ae[_0x9f3a('0x32')]=this[_0x9f3a('0x5')](_[_0x9f3a('0x33')](_0x6c8081[_0x9f3a('0x2a')],_0x4e2d1b[_0x9f3a('0x5')]),_0x33cc32);if(_0x6c8081[_0x9f3a('0x2a')][_0x9f3a('0x34')]){_0x1d07ae[_0x9f3a('0x32')]=_[_0x9f3a('0x35')](_0x1d07ae[_0x9f3a('0x32')],{'$or':_[_0x9f3a('0x14')](_0x33cc32,function(_0x1da9c0){if(_0x1da9c0[_0x9f3a('0x36')]!=='VIRTUAL'){if(_0x16039b){return sequelize[_0x9f3a('0x32')](sequelize['fn'](_0x9f3a('0x37'),sequelize[_0x9f3a('0x18')](_0x1da9c0['name'])),{'$like':sequelize['fn'](_0x9f3a('0x37'),'%'+_0x6c8081['query']['filter']+'%')});}else{var _0x508c9c={};_0x508c9c[_0x1da9c0[_0x9f3a('0xf')]]={'$like':'%'+_0x6c8081[_0x9f3a('0x2a')]['filter']+'%'};return _0x508c9c;}}})});}_0x1d07ae=_[_0x9f3a('0x35')]({},_0x1d07ae,_0x6c8081[_0x9f3a('0x38')]);return _0x1d07ae;};
\ No newline at end of file
index 1541e74..465e963 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc9a=['ejs','view\x20engine','html','urlencoded','50mb','json','initialize','express','body-parser','cookie-parser','errorhandler','path','moment','./environment','default','env','production','set','join','root','public','development','test','appPath','client','use','json\x20replacer','toISOString','static','get','views','/server/views','engine'];(function(_0x15100a,_0x29bdb0){var _0x4aa853=function(_0x299a44){while(--_0x299a44){_0x15100a['push'](_0x15100a['shift']());}};_0x4aa853(++_0x29bdb0);}(_0xbc9a,0x10f));var _0xabc9=function(_0x13f38e,_0x10ecce){_0x13f38e=_0x13f38e-0x0;var _0x2a4b96=_0xbc9a[_0x13f38e];return _0x2a4b96;};'use strict';var express=require(_0xabc9('0x0'));var favicon=require('serve-favicon');var bodyParser=require(_0xabc9('0x1'));var methodOverride=require('method-override');var cookieParser=require(_0xabc9('0x2'));var errorHandler=require(_0xabc9('0x3'));var path=require(_0xabc9('0x4'));var passport=require('passport');var cors=require('cors');var moment=require(_0xabc9('0x5'));var config=require(_0xabc9('0x6'));var db=require('../mysqldb')['db'];exports[_0xabc9('0x7')]=function(_0x66fa22){var _0xe4312d=_0x66fa22['get'](_0xabc9('0x8'));if(_0xe4312d===_0xabc9('0x9')){_0x66fa22[_0xabc9('0xa')]('appPath',path[_0xabc9('0xb')](config[_0xabc9('0xc')],_0xabc9('0xd')));}if(_0xe4312d===_0xabc9('0xe')||_0xe4312d===_0xabc9('0xf')){_0x66fa22[_0xabc9('0xa')](_0xabc9('0x10'),path[_0xabc9('0xb')](config[_0xabc9('0xc')],_0xabc9('0x11')));_0x66fa22[_0xabc9('0x12')](errorHandler());}_0x66fa22[_0xabc9('0xa')](_0xabc9('0x13'),function(_0x1ac2d7,_0x1c2ff4){if(this[_0x1ac2d7]instanceof Date){_0x1c2ff4=this[_0x1ac2d7][_0xabc9('0x14')]()['split']('.')[0x0]+'Z';}return _0x1c2ff4;});_0x66fa22[_0xabc9('0x12')](express[_0xabc9('0x15')](_0x66fa22[_0xabc9('0x16')](_0xabc9('0x10'))));_0x66fa22[_0xabc9('0xa')](_0xabc9('0x17'),config[_0xabc9('0xc')]+_0xabc9('0x18'));_0x66fa22[_0xabc9('0x19')]('html',require(_0xabc9('0x1a'))['renderFile']);_0x66fa22['set'](_0xabc9('0x1b'),_0xabc9('0x1c'));_0x66fa22['use'](bodyParser[_0xabc9('0x1d')]({'limit':_0xabc9('0x1e'),'extended':!![]}));_0x66fa22[_0xabc9('0x12')](bodyParser[_0xabc9('0x1f')]({'limit':_0xabc9('0x1e')}));_0x66fa22[_0xabc9('0x12')](cors());_0x66fa22[_0xabc9('0x12')](methodOverride());_0x66fa22['use'](cookieParser());_0x66fa22[_0xabc9('0x12')](passport[_0xabc9('0x20')]());};
\ No newline at end of file
+var _0x774d=['errorhandler','passport','moment','./environment','../mysqldb','default','get','env','appPath','public','development','test','join','root','client','use','set','json\x20replacer','toISOString','split','static','engine','ejs','renderFile','html','50mb','initialize','serve-favicon','body-parser','cookie-parser'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x774d,0x93));var _0xd774=function(_0x6aefff,_0xe3df93){_0x6aefff=_0x6aefff-0x0;var _0xeba47b=_0x774d[_0x6aefff];return _0xeba47b;};'use strict';var express=require('express');var favicon=require(_0xd774('0x0'));var bodyParser=require(_0xd774('0x1'));var methodOverride=require('method-override');var cookieParser=require(_0xd774('0x2'));var errorHandler=require(_0xd774('0x3'));var path=require('path');var passport=require(_0xd774('0x4'));var cors=require('cors');var moment=require(_0xd774('0x5'));var config=require(_0xd774('0x6'));var db=require(_0xd774('0x7'))['db'];exports[_0xd774('0x8')]=function(_0x2f4efd){var _0x5673e5=_0x2f4efd[_0xd774('0x9')](_0xd774('0xa'));if(_0x5673e5==='production'){_0x2f4efd['set'](_0xd774('0xb'),path['join'](config['root'],_0xd774('0xc')));}if(_0x5673e5===_0xd774('0xd')||_0x5673e5===_0xd774('0xe')){_0x2f4efd['set'](_0xd774('0xb'),path[_0xd774('0xf')](config[_0xd774('0x10')],_0xd774('0x11')));_0x2f4efd[_0xd774('0x12')](errorHandler());}_0x2f4efd[_0xd774('0x13')](_0xd774('0x14'),function(_0x4091c0,_0x23bcf4){if(this[_0x4091c0]instanceof Date){_0x23bcf4=this[_0x4091c0][_0xd774('0x15')]()[_0xd774('0x16')]('.')[0x0]+'Z';}return _0x23bcf4;});_0x2f4efd[_0xd774('0x12')](express[_0xd774('0x17')](_0x2f4efd[_0xd774('0x9')](_0xd774('0xb'))));_0x2f4efd[_0xd774('0x13')]('views',config[_0xd774('0x10')]+'/server/views');_0x2f4efd[_0xd774('0x18')]('html',require(_0xd774('0x19'))[_0xd774('0x1a')]);_0x2f4efd[_0xd774('0x13')]('view\x20engine',_0xd774('0x1b'));_0x2f4efd[_0xd774('0x12')](bodyParser['urlencoded']({'limit':_0xd774('0x1c'),'extended':!![]}));_0x2f4efd[_0xd774('0x12')](bodyParser['json']({'limit':_0xd774('0x1c')}));_0x2f4efd[_0xd774('0x12')](cors());_0x2f4efd[_0xd774('0x12')](methodOverride());_0x2f4efd[_0xd774('0x12')](cookieParser());_0x2f4efd['use'](passport[_0xd774('0x1d')]());};
\ No newline at end of file
index bf2bba5..c0dee29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x688e=['licenseToken','test','win32','dmidecode\x20--string\x20system-uuid','replace','ipAddress','createHash','hex','substring','lodash','crypto','bimedia-machine-uuid','child_process','execSync','networkInterfaces','orderBy','keys','length','IPv4','internal','concat','head','mac','00:00:00:00:00:00','address','getFirstInterface','cpus','map','model','join','md5','update','digest','getUuid'];(function(_0x2f037f,_0x2958c5){var _0x2d1573=function(_0x34146e){while(--_0x34146e){_0x2f037f['push'](_0x2f037f['shift']());}};_0x2d1573(++_0x2958c5);}(_0x688e,0xb3));var _0xe688=function(_0x30cdee,_0x1d2472){_0x30cdee=_0x30cdee-0x0;var _0x4231bf=_0x688e[_0x30cdee];return _0x4231bf;};'use strict';var _=require(_0xe688('0x0'));var os=require('os');var crypto=require(_0xe688('0x1'));var machine=require(_0xe688('0x2'));var exec=require(_0xe688('0x3'))[_0xe688('0x4')];var config=require('../environment');function getInterfaces(){var _0x1fc20d=[];var _0x45425a=os[_0xe688('0x5')]();var _0xbb4645=_[_0xe688('0x6')](_[_0xe688('0x7')](_0x45425a));for(var _0x429f2c=0x0;_0x429f2c<_0xbb4645[_0xe688('0x8')];_0x429f2c++){var _0x18a666=_0x45425a[_0xbb4645[_0x429f2c]]['filter'](function(_0xe6af18){return _0xe6af18['family']===_0xe688('0x9')&&_0xe6af18[_0xe688('0xa')]===![];});_0x1fc20d=_0x1fc20d[_0xe688('0xb')](_0x18a666);}return _0x1fc20d;}function getFirstInterface(){var _0x4e4bff=_[_0xe688('0xc')](getInterfaces());return{'macAddress':_0x4e4bff&&_0x4e4bff[_0xe688('0xd')]?_0x4e4bff[_0xe688('0xd')]:_0xe688('0xe'),'ipAddress':_0x4e4bff&&_0x4e4bff[_0xe688('0xf')]?_0x4e4bff[_0xe688('0xf')]:'127.0.0.1'};}exports[_0xe688('0x10')]=getFirstInterface;function getCPUhash(){var _0x5b3b5f=_[_0xe688('0x6')](os[_0xe688('0x11')]()[_0xe688('0x12')](function(_0x1bfa6c){return _0x1bfa6c[_0xe688('0x13')];}))[_0xe688('0x14')](':');return crypto['createHash'](_0xe688('0x15'))[_0xe688('0x16')](_0x5b3b5f)[_0xe688('0x17')]('hex');}exports[_0xe688('0x18')]=function(){var _0x553d8a=os['platform']();var _0x200d77=/[0-9a-f-]{36}/;if(config[_0xe688('0x19')]&&_0x200d77[_0xe688('0x1a')](config[_0xe688('0x19')])){return config[_0xe688('0x19')];}else if(_0x553d8a===_0xe688('0x1b')){return exec(_0xe688('0x1c'),{'encoding':'utf8'})[_0xe688('0x1d')]('\x0d\x0a','');}else{var _0x296ced=getFirstInterface();var _0x188021=getCPUhash();var _0x5dc4cb=_0x188021+'|'+os['hostname']()+'|'+_0x296ced['macAddress']+'|'+_0x296ced[_0xe688('0x1e')];var _0x3b2e02=crypto[_0xe688('0x1f')](_0xe688('0x15'))[_0xe688('0x16')](_0x5dc4cb)[_0xe688('0x17')](_0xe688('0x20'));return _0x3b2e02[_0xe688('0x21')](0x0,0x8)+'-'+_0x3b2e02[_0xe688('0x21')](0x8,0xc)+'-'+_0x3b2e02[_0xe688('0x21')](0xc,0x10)+'-'+_0x3b2e02[_0xe688('0x21')](0x10,0x14)+'-'+_0x3b2e02[_0xe688('0x21')](0x14);}};
\ No newline at end of file
+var _0x0e63=['update','digest','hex','getUuid','platform','test','licenseToken','win32','dmidecode\x20--string\x20system-uuid','utf8','hostname','macAddress','ipAddress','substring','lodash','bimedia-machine-uuid','child_process','execSync','../environment','orderBy','keys','length','filter','family','IPv4','internal','concat','mac','address','getFirstInterface','cpus','join','createHash','md5'];(function(_0x315611,_0x2d376e){var _0x3884ba=function(_0x3d9aa1){while(--_0x3d9aa1){_0x315611['push'](_0x315611['shift']());}};_0x3884ba(++_0x2d376e);}(_0x0e63,0x96));var _0x30e6=function(_0x323f5e,_0x5f322b){_0x323f5e=_0x323f5e-0x0;var _0x376117=_0x0e63[_0x323f5e];return _0x376117;};'use strict';var _=require(_0x30e6('0x0'));var os=require('os');var crypto=require('crypto');var machine=require(_0x30e6('0x1'));var exec=require(_0x30e6('0x2'))[_0x30e6('0x3')];var config=require(_0x30e6('0x4'));function getInterfaces(){var _0x2a4777=[];var _0xacd13e=os['networkInterfaces']();var _0x149765=_[_0x30e6('0x5')](_[_0x30e6('0x6')](_0xacd13e));for(var _0x5a554f=0x0;_0x5a554f<_0x149765[_0x30e6('0x7')];_0x5a554f++){var _0x566ac8=_0xacd13e[_0x149765[_0x5a554f]][_0x30e6('0x8')](function(_0x5e8e14){return _0x5e8e14[_0x30e6('0x9')]===_0x30e6('0xa')&&_0x5e8e14[_0x30e6('0xb')]===![];});_0x2a4777=_0x2a4777[_0x30e6('0xc')](_0x566ac8);}return _0x2a4777;}function getFirstInterface(){var _0x1f78c0=_['head'](getInterfaces());return{'macAddress':_0x1f78c0&&_0x1f78c0[_0x30e6('0xd')]?_0x1f78c0[_0x30e6('0xd')]:'00:00:00:00:00:00','ipAddress':_0x1f78c0&&_0x1f78c0[_0x30e6('0xe')]?_0x1f78c0[_0x30e6('0xe')]:'127.0.0.1'};}exports[_0x30e6('0xf')]=getFirstInterface;function getCPUhash(){var _0x4ba176=_[_0x30e6('0x5')](os[_0x30e6('0x10')]()['map'](function(_0x4e33ab){return _0x4e33ab['model'];}))[_0x30e6('0x11')](':');return crypto[_0x30e6('0x12')](_0x30e6('0x13'))[_0x30e6('0x14')](_0x4ba176)[_0x30e6('0x15')](_0x30e6('0x16'));}exports[_0x30e6('0x17')]=function(){var _0xbb1423=os[_0x30e6('0x18')]();var _0x4541d2=/[0-9a-f-]{36}/;if(config['licenseToken']&&_0x4541d2[_0x30e6('0x19')](config['licenseToken'])){return config[_0x30e6('0x1a')];}else if(_0xbb1423===_0x30e6('0x1b')){return exec(_0x30e6('0x1c'),{'encoding':_0x30e6('0x1d')})['replace']('\x0d\x0a','');}else{var _0x3308a0=getFirstInterface();var _0x392dcd=getCPUhash();var _0x513eec=_0x392dcd+'|'+os[_0x30e6('0x1e')]()+'|'+_0x3308a0[_0x30e6('0x1f')]+'|'+_0x3308a0[_0x30e6('0x20')];var _0x284da7=crypto[_0x30e6('0x12')](_0x30e6('0x13'))['update'](_0x513eec)[_0x30e6('0x15')](_0x30e6('0x16'));return _0x284da7[_0x30e6('0x21')](0x0,0x8)+'-'+_0x284da7[_0x30e6('0x21')](0x8,0xc)+'-'+_0x284da7['substring'](0xc,0x10)+'-'+_0x284da7[_0x30e6('0x21')](0x10,0x14)+'-'+_0x284da7[_0x30e6('0x21')](0x14);}};
\ No newline at end of file
index e588039..1638a19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71e4=['moment','bluebird','version','../../mysqldb','../../components/encryptor','./hardware','../logger','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','%s/api/servers/%s/check?version=%s&oldtoken=%s','exports','GET','then','catch','get','data1','data2','active','license','info','update','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','encryptString','diff','decryptString','days','DEMO\x20START\x20AT\x20%s','message','finally','getUuid','License','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','error','util'];(function(_0x2e8b45,_0x40b219){var _0x173aa2=function(_0x519636){while(--_0x519636){_0x2e8b45['push'](_0x2e8b45['shift']());}};_0x173aa2(++_0x40b219);}(_0x71e4,0x1c2));var _0x471e=function(_0xb98d8d,_0x481423){_0xb98d8d=_0xb98d8d-0x0;var _0x489b15=_0x71e4[_0xb98d8d];return _0x489b15;};'use strict';var util=require(_0x471e('0x0'));var moment=require(_0x471e('0x1'));var rp=require('request-promise');var BPromise=require(_0x471e('0x2'));var pkginfo=require('pkginfo')(module,_0x471e('0x3'));var db=require(_0x471e('0x4'))['db'];var encryptor=require(_0x471e('0x5'));var hardware=require(_0x471e('0x6'));var logger=require(_0x471e('0x7'))('license');var HOST=_0x471e('0x8');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x4df884){return new BPromise(function(_0x3b391f,_0x257c6a){var _0x1eeddc=util[_0x471e('0x9')](_0x471e('0xa'),HOST,_0x4df884,module['exports'][_0x471e('0x3')]);if(oldToken){_0x1eeddc=util[_0x471e('0x9')](_0x471e('0xb'),HOST,_0x4df884,module[_0x471e('0xc')]['version'],oldToken);}var _0x36429a={'uri':_0x1eeddc,'method':_0x471e('0xd'),'timeout':0xea60,'json':!![]};return rp(_0x36429a)[_0x471e('0xe')](function(_0x12d7df){_0x3b391f(_0x12d7df);})[_0x471e('0xf')](function(_0x370116){_0x257c6a(_0x370116);});});}function manageLicense(_0x444fa7,_0x1399ef){var _0x8d1c4b=_0x1399ef[_0x471e('0x10')]({'plain':!![]});if(!isOldTokenSent&&_0x8d1c4b[_0x471e('0x11')]!==_0x444fa7&&!_0x8d1c4b[_0x471e('0x12')]){oldToken=_0x8d1c4b[_0x471e('0x11')];}httpRequest(_0x444fa7)[_0x471e('0xe')](function(_0x263b4b){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x263b4b[_0x471e('0x13')]){isOldTokenSent=![];if(!_0x8d1c4b[_0x471e('0x14')]&&_0x8d1c4b['license']!=_0x263b4b[_0x471e('0x14')]||_0x8d1c4b['license']&&_0x8d1c4b['data2']){logger[_0x471e('0x15')]('THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED');}if(_0x8d1c4b['license']&&!_0x8d1c4b['data2']&&_0x8d1c4b[_0x471e('0x14')]!=_0x263b4b['license']){logger[_0x471e('0x15')]('THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED');}if(_0x8d1c4b[_0x471e('0x14')]&&!_0x8d1c4b[_0x471e('0x12')]&&_0x8d1c4b['license']==_0x263b4b['license']){return _0x1399ef;}return _0x1399ef[_0x471e('0x16')]({'data1':_0x444fa7,'data2':null,'license':_0x263b4b[_0x471e('0x14')]});}else{if(_0x263b4b[_0x471e('0x14')]||_0x8d1c4b['license']){if(!_0x8d1c4b[_0x471e('0x12')]){if(_0x8d1c4b[_0x471e('0x11')]==_0x444fa7){GRAY_PERIOD_REASON=_0x471e('0x17');logger[_0x471e('0x15')](_0x471e('0x18'));}else{GRAY_PERIOD_REASON=_0x471e('0x19');logger['info'](_0x471e('0x1a'),_0x8d1c4b[_0x471e('0x11')],_0x444fa7);}logger[_0x471e('0x15')]('%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s',GRAY_PERIOD_REASON[_0x471e('0x1b')](),moment()['format'](_0x471e('0x1c')));return _0x1399ef[_0x471e('0x16')]({'data2':encryptor[_0x471e('0x1d')](moment()[_0x471e('0x9')](_0x471e('0x1c')))});}else{if(moment()[_0x471e('0x1e')](encryptor[_0x471e('0x1f')](_0x8d1c4b[_0x471e('0x12')]),_0x471e('0x20'))>DAYS){logger[_0x471e('0x15')](_0x471e('0x21'),moment()[_0x471e('0x9')](_0x471e('0x1c')));isOldTokenSent=![];return _0x1399ef['update']({'data1':_0x444fa7,'data2':null,'license':null});}}}else{if(_0x8d1c4b['data1']!=_0x444fa7){logger[_0x471e('0x15')](_0x471e('0x1a'),_0x8d1c4b[_0x471e('0x11')],_0x444fa7);return _0x1399ef[_0x471e('0x16')]({'data1':_0x444fa7,'data2':null,'license':null});}}}return _0x1399ef;})['then'](function(_0x4e67d4){_0x1399ef=_0x4e67d4;})[_0x471e('0xf')](function(_0x5d15b9){logger['error'](_0x5d15b9[_0x471e('0x22')]);})[_0x471e('0x23')](function(){setTimeout(function(){manageLicense(hardware[_0x471e('0x24')](),_0x1399ef);},TIME);});}function defaultLicense(){var _0xbee0a8=hardware['getUuid']();if(_0xbee0a8){return db[_0x471e('0x25')]['findOrCreate']({'where':{'id':0x1},'defaults':{'data1':_0xbee0a8}})[_0x471e('0x26')](function(_0x1d1fa1,_0x371e0c){logger[_0x471e('0x15')](_0x471e('0x27'),_0xbee0a8);manageLicense(_0xbee0a8,_0x1d1fa1);})['catch'](function(_0x54bf8d){logger[_0x471e('0x28')](_0x54bf8d[_0x471e('0x22')]);});}}exports['default']=defaultLicense;
\ No newline at end of file
+var _0x1429=['../../components/encryptor','../logger','license','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','exports','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','then','catch','get','data1','active','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','data2','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','diff','days','DEMO\x20START\x20AT\x20%s','error','message','finally','getUuid','License','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','util','moment','request-promise','bluebird','version','../../mysqldb'];(function(_0x19b3f9,_0xade753){var _0x18c3f6=function(_0x21439f){while(--_0x21439f){_0x19b3f9['push'](_0x19b3f9['shift']());}};_0x18c3f6(++_0xade753);}(_0x1429,0x194));var _0x9142=function(_0x20105f,_0xf3ff25){_0x20105f=_0x20105f-0x0;var _0x4026de=_0x1429[_0x20105f];return _0x4026de;};'use strict';var util=require(_0x9142('0x0'));var moment=require(_0x9142('0x1'));var rp=require(_0x9142('0x2'));var BPromise=require(_0x9142('0x3'));var pkginfo=require('pkginfo')(module,_0x9142('0x4'));var db=require(_0x9142('0x5'))['db'];var encryptor=require(_0x9142('0x6'));var hardware=require('./hardware');var logger=require(_0x9142('0x7'))(_0x9142('0x8'));var HOST=_0x9142('0x9');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x53d911){return new BPromise(function(_0x1debbd,_0xdafe5d){var _0x2902f6=util[_0x9142('0xa')](_0x9142('0xb'),HOST,_0x53d911,module[_0x9142('0xc')][_0x9142('0x4')]);if(oldToken){_0x2902f6=util[_0x9142('0xa')](_0x9142('0xd'),HOST,_0x53d911,module[_0x9142('0xc')]['version'],oldToken);}var _0x56ddf8={'uri':_0x2902f6,'method':_0x9142('0xe'),'timeout':0xea60,'json':!![]};return rp(_0x56ddf8)[_0x9142('0xf')](function(_0x4f0d66){_0x1debbd(_0x4f0d66);})[_0x9142('0x10')](function(_0x4179a2){_0xdafe5d(_0x4179a2);});});}function manageLicense(_0x5d23df,_0x455757){var _0x3c6a93=_0x455757[_0x9142('0x11')]({'plain':!![]});if(!isOldTokenSent&&_0x3c6a93[_0x9142('0x12')]!==_0x5d23df&&!_0x3c6a93['data2']){oldToken=_0x3c6a93[_0x9142('0x12')];}httpRequest(_0x5d23df)[_0x9142('0xf')](function(_0x11c99f){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x11c99f[_0x9142('0x13')]){isOldTokenSent=![];if(!_0x3c6a93[_0x9142('0x8')]&&_0x3c6a93[_0x9142('0x8')]!=_0x11c99f[_0x9142('0x8')]||_0x3c6a93[_0x9142('0x8')]&&_0x3c6a93['data2']){logger[_0x9142('0x14')](_0x9142('0x15'));}if(_0x3c6a93[_0x9142('0x8')]&&!_0x3c6a93[_0x9142('0x16')]&&_0x3c6a93[_0x9142('0x8')]!=_0x11c99f[_0x9142('0x8')]){logger[_0x9142('0x14')](_0x9142('0x17'));}if(_0x3c6a93[_0x9142('0x8')]&&!_0x3c6a93[_0x9142('0x16')]&&_0x3c6a93['license']==_0x11c99f[_0x9142('0x8')]){return _0x455757;}return _0x455757[_0x9142('0x18')]({'data1':_0x5d23df,'data2':null,'license':_0x11c99f[_0x9142('0x8')]});}else{if(_0x11c99f['license']||_0x3c6a93['license']){if(!_0x3c6a93[_0x9142('0x16')]){if(_0x3c6a93[_0x9142('0x12')]==_0x5d23df){GRAY_PERIOD_REASON='Disabled';logger[_0x9142('0x14')](_0x9142('0x19'));}else{GRAY_PERIOD_REASON=_0x9142('0x1a');logger[_0x9142('0x14')]('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x3c6a93[_0x9142('0x12')],_0x5d23df);}logger[_0x9142('0x14')](_0x9142('0x1b'),GRAY_PERIOD_REASON[_0x9142('0x1c')](),moment()[_0x9142('0xa')](_0x9142('0x1d')));return _0x455757[_0x9142('0x18')]({'data2':encryptor['encryptString'](moment()[_0x9142('0xa')](_0x9142('0x1d')))});}else{if(moment()[_0x9142('0x1e')](encryptor['decryptString'](_0x3c6a93[_0x9142('0x16')]),_0x9142('0x1f'))>DAYS){logger[_0x9142('0x14')](_0x9142('0x20'),moment()[_0x9142('0xa')](_0x9142('0x1d')));isOldTokenSent=![];return _0x455757[_0x9142('0x18')]({'data1':_0x5d23df,'data2':null,'license':null});}}}else{if(_0x3c6a93['data1']!=_0x5d23df){logger[_0x9142('0x14')]('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x3c6a93[_0x9142('0x12')],_0x5d23df);return _0x455757[_0x9142('0x18')]({'data1':_0x5d23df,'data2':null,'license':null});}}}return _0x455757;})['then'](function(_0x28c9d6){_0x455757=_0x28c9d6;})[_0x9142('0x10')](function(_0x28629f){logger[_0x9142('0x21')](_0x28629f[_0x9142('0x22')]);})[_0x9142('0x23')](function(){setTimeout(function(){manageLicense(hardware[_0x9142('0x24')](),_0x455757);},TIME);});}function defaultLicense(){var _0x25f17d=hardware['getUuid']();if(_0x25f17d){return db[_0x9142('0x25')][_0x9142('0x26')]({'where':{'id':0x1},'defaults':{'data1':_0x25f17d}})[_0x9142('0x27')](function(_0x34c124,_0xa22eba){logger[_0x9142('0x14')](_0x9142('0x28'),_0x25f17d);manageLicense(_0x25f17d,_0x34c124);})[_0x9142('0x10')](function(_0x4f498c){logger[_0x9142('0x21')](_0x4f498c[_0x9142('0x22')]);});}}exports['default']=defaultLicense;
\ No newline at end of file
index 7167acb..26c7296 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf0d=['decryptString','format','%s:%s:%s','parse','demo','machineUuid','gray','deadline','add','days','grayReason','disabled','message','User','role','sequelize','COUNT','col','count','user','telephone','users','telephones','forEach','admin','pick','countBy','License\x20limit\x20reached\x20for\x20users','lodash','bluebird','../../components/encryptor','../../mysqldb','2027-01-01T00:00:00.000Z','Demo\x20license','Breaking\x20license','getUuid','License','find','defaults','then','catch','uuid','data1','license','License\x20key\x20value\x20not\x20found','data2','split'];(function(_0xa81b8c,_0x389aae){var _0x4c11b3=function(_0x2f990c){while(--_0x2f990c){_0xa81b8c['push'](_0xa81b8c['shift']());}};_0x4c11b3(++_0x389aae);}(_0xaf0d,0x7a));var _0xdaf0=function(_0x39eae0,_0x4556ea){_0x39eae0=_0x39eae0-0x0;var _0x121579=_0xaf0d[_0x39eae0];return _0x121579;};'use strict';var util=require('util');var _=require(_0xdaf0('0x0'));var moment=require('moment');var BPromise=require(_0xdaf0('0x1'));var hardware=require('./hardware');var encryptor=require(_0xdaf0('0x2'));var db=require(_0xdaf0('0x3'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xdaf0('0x4'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0xdaf0('0x5'),'machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xdaf0('0x4'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0xdaf0('0x6'),'machineUuid':hardware[_0xdaf0('0x7')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x5ba4fd){return new BPromise(function(_0x2318f8,_0x3285ae){return db[_0xdaf0('0x8')][_0xdaf0('0x9')](_[_0xdaf0('0xa')](_0x5ba4fd,{'raw':!![],'where':{'id':0x1}}))[_0xdaf0('0xb')](function(_0x169cff){return checkLicense(_0x169cff,null);})[_0xdaf0('0xb')](function(_0x54a11f){_0x2318f8(_0x54a11f);return;})[_0xdaf0('0xc')](function(_0x57a541){_0x3285ae(_0x57a541);});});}function checkLicense(_0x59630e,_0x3ecb49){if(!_0x59630e){demoLicense[_0xdaf0('0xd')]=_0x59630e[_0xdaf0('0xe')];return demoLicense;}try{var _0x53e5aa=_0x3ecb49||_0x59630e[_0xdaf0('0xf')];if(_['isEmpty'](_0x53e5aa)){throw new Error(_0xdaf0('0x10'));}var _0xad6264=_0x59630e['data1'];var _0x48ab42=_0x59630e[_0xdaf0('0x11')];var _0x4c022c=_0xad6264[_0xdaf0('0x12')]('-')[0x4];var _0x4a3860=_0xad6264[_0xdaf0('0x12')]('-')[0x0];var _0x1d1ee4=encryptor[_0xdaf0('0x13')](_0x53e5aa,util[_0xdaf0('0x14')](_0xdaf0('0x15'),_0x4c022c,_0xad6264,_0x4a3860));var _0x159d24=JSON[_0xdaf0('0x16')](_0x1d1ee4);_0x159d24[_0xdaf0('0x17')]=![];_0x159d24['uuid']=_0xad6264;_0x159d24[_0xdaf0('0x18')]=hardware['getUuid']();if(_0x48ab42){var _0x268ad=encryptor[_0xdaf0('0x13')](_0x48ab42);_0x159d24[_0xdaf0('0x19')]=_0x268ad;_0x159d24[_0xdaf0('0x1a')]=moment(_0x268ad)[_0xdaf0('0x1b')](0x7,_0xdaf0('0x1c'))[_0xdaf0('0x14')]();_0x159d24[_0xdaf0('0x1d')]=_0x159d24['uuid']!=_0x159d24[_0xdaf0('0x18')]?'changed':_0xdaf0('0x1e');}return _0x159d24;}catch(_0x3ab0b3){breakingLicense[_0xdaf0('0xd')]=_0x59630e[_0xdaf0('0xe')];breakingLicense[_0xdaf0('0x1f')]=_0x3ab0b3['message'];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x4b0312,_0x5a5759){getLicense()['then'](function(_0x184374){return db[_0xdaf0('0x20')]['findAll']({'attributes':[_0xdaf0('0x21'),[db[_0xdaf0('0x22')]['fn'](_0xdaf0('0x23'),db[_0xdaf0('0x22')][_0xdaf0('0x24')](_0xdaf0('0x21'))),_0xdaf0('0x25')]],'group':_0xdaf0('0x21'),'where':{'role':{'$or':['admin',_0xdaf0('0x26'),_0xdaf0('0x27')]}},'raw':!![]})[_0xdaf0('0xb')](function(_0x20c285){var _0x1d8507={'user':_0x184374[_0xdaf0('0x28')]||0x0,'telephone':_0x184374[_0xdaf0('0x29')]||0x0};_0x20c285[_0xdaf0('0x2a')](function(_0x32319f){var _0x4c146d=_0x32319f[_0xdaf0('0x21')]===_0xdaf0('0x2b')?_0xdaf0('0x26'):_0x32319f[_0xdaf0('0x21')];_0x1d8507[_0x4c146d]-=_0x32319f[_0xdaf0('0x25')];if(_0x1d8507[_0x4c146d]<0x0)_0x1d8507[_0x4c146d]=0x0;});_0x4b0312(_0x1d8507);return;});})['catch'](function(_0x408a9b){_0x5a5759(_0x408a9b);});});}function checkUserLimits(_0x2757e9){return new BPromise(function(_0x28ec08,_0x5c17f0){getLimits()[_0xdaf0('0xb')](function(_0x361d44){var _0x3cf317=_[_0xdaf0('0x2c')](_[_0xdaf0('0x2d')](_0x2757e9,'role'),[_0xdaf0('0x2b'),'user',_0xdaf0('0x27')]);var _0x29840d=(_0x3cf317[_0xdaf0('0x2b')]||0x0)+(_0x3cf317[_0xdaf0('0x26')]||0x0);var _0x4dd905=_0x3cf317[_0xdaf0('0x27')]||0x0;if(_0x29840d>_0x361d44[_0xdaf0('0x26')])return _0x5c17f0(_0xdaf0('0x2e'));if(_0x4dd905>_0x361d44[_0xdaf0('0x27')])return _0x5c17f0('License\x20limit\x20reached\x20for\x20telephones');return _0x28ec08();})[_0xdaf0('0xc')](function(_0x2a52ea){_0x5c17f0(_0x2a52ea);});});}module['exports']={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0x2f38=['exports','util','bluebird','./hardware','../../components/encryptor','2027-01-01T00:00:00.000Z','Demo\x20license','getUuid','Breaking\x20license','License','defaults','then','catch','data1','license','isEmpty','data2','split','decryptString','format','%s:%s:%s','parse','demo','uuid','machineUuid','deadline','add','grayReason','changed','message','User','findAll','role','sequelize','col','admin','user','telephone','users','telephones','forEach','count','pick','countBy','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x2f38,0x1cd));var _0x82f3=function(_0x1569a7,_0x5bcbe5){_0x1569a7=_0x1569a7-0x0;var _0x275672=_0x2f38[_0x1569a7];return _0x275672;};'use strict';var util=require(_0x82f3('0x0'));var _=require('lodash');var moment=require('moment');var BPromise=require(_0x82f3('0x1'));var hardware=require(_0x82f3('0x2'));var encryptor=require(_0x82f3('0x3'));var db=require('../../mysqldb')['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x82f3('0x4'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0x82f3('0x5'),'machineUuid':hardware[_0x82f3('0x6')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':'2027-01-01T00:00:00.000Z','chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x82f3('0x7'),'machineUuid':hardware[_0x82f3('0x6')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x2275fd){return new BPromise(function(_0x5e85ee,_0x3de2e6){return db[_0x82f3('0x8')]['find'](_[_0x82f3('0x9')](_0x2275fd,{'raw':!![],'where':{'id':0x1}}))['then'](function(_0x36833f){return checkLicense(_0x36833f,null);})[_0x82f3('0xa')](function(_0x11db54){_0x5e85ee(_0x11db54);return;})[_0x82f3('0xb')](function(_0x54b8c6){_0x3de2e6(_0x54b8c6);});});}function checkLicense(_0x5e34a0,_0x33aa4c){if(!_0x5e34a0){demoLicense['uuid']=_0x5e34a0[_0x82f3('0xc')];return demoLicense;}try{var _0x10fb50=_0x33aa4c||_0x5e34a0[_0x82f3('0xd')];if(_[_0x82f3('0xe')](_0x10fb50)){throw new Error('License\x20key\x20value\x20not\x20found');}var _0x901df3=_0x5e34a0[_0x82f3('0xc')];var _0x49de31=_0x5e34a0[_0x82f3('0xf')];var _0x5be0fa=_0x901df3[_0x82f3('0x10')]('-')[0x4];var _0x59a0a7=_0x901df3[_0x82f3('0x10')]('-')[0x0];var _0x28751d=encryptor[_0x82f3('0x11')](_0x10fb50,util[_0x82f3('0x12')](_0x82f3('0x13'),_0x5be0fa,_0x901df3,_0x59a0a7));var _0xe5b385=JSON[_0x82f3('0x14')](_0x28751d);_0xe5b385[_0x82f3('0x15')]=![];_0xe5b385[_0x82f3('0x16')]=_0x901df3;_0xe5b385[_0x82f3('0x17')]=hardware[_0x82f3('0x6')]();if(_0x49de31){var _0x71ba27=encryptor[_0x82f3('0x11')](_0x49de31);_0xe5b385['gray']=_0x71ba27;_0xe5b385[_0x82f3('0x18')]=moment(_0x71ba27)[_0x82f3('0x19')](0x7,'days')[_0x82f3('0x12')]();_0xe5b385[_0x82f3('0x1a')]=_0xe5b385[_0x82f3('0x16')]!=_0xe5b385[_0x82f3('0x17')]?_0x82f3('0x1b'):'disabled';}return _0xe5b385;}catch(_0x219581){breakingLicense[_0x82f3('0x16')]=_0x5e34a0[_0x82f3('0xc')];breakingLicense[_0x82f3('0x1c')]=_0x219581[_0x82f3('0x1c')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x586b96,_0x2e959c){getLicense()['then'](function(_0x19978e){return db[_0x82f3('0x1d')][_0x82f3('0x1e')]({'attributes':[_0x82f3('0x1f'),[db[_0x82f3('0x20')]['fn']('COUNT',db[_0x82f3('0x20')][_0x82f3('0x21')](_0x82f3('0x1f'))),'count']],'group':_0x82f3('0x1f'),'where':{'role':{'$or':[_0x82f3('0x22'),_0x82f3('0x23'),_0x82f3('0x24')]}},'raw':!![]})[_0x82f3('0xa')](function(_0xd641ce){var _0x30643a={'user':_0x19978e[_0x82f3('0x25')]||0x0,'telephone':_0x19978e[_0x82f3('0x26')]||0x0};_0xd641ce[_0x82f3('0x27')](function(_0x309af9){var _0x5a3b75=_0x309af9[_0x82f3('0x1f')]===_0x82f3('0x22')?'user':_0x309af9[_0x82f3('0x1f')];_0x30643a[_0x5a3b75]-=_0x309af9[_0x82f3('0x28')];if(_0x30643a[_0x5a3b75]<0x0)_0x30643a[_0x5a3b75]=0x0;});_0x586b96(_0x30643a);return;});})[_0x82f3('0xb')](function(_0x30e28d){_0x2e959c(_0x30e28d);});});}function checkUserLimits(_0x4295fc){return new BPromise(function(_0xb59dc8,_0x1f782b){getLimits()[_0x82f3('0xa')](function(_0x11f2b2){var _0x11c625=_[_0x82f3('0x29')](_[_0x82f3('0x2a')](_0x4295fc,_0x82f3('0x1f')),[_0x82f3('0x22'),_0x82f3('0x23'),_0x82f3('0x24')]);var _0xa6e754=(_0x11c625[_0x82f3('0x22')]||0x0)+(_0x11c625[_0x82f3('0x23')]||0x0);var _0x36fe2c=_0x11c625[_0x82f3('0x24')]||0x0;if(_0xa6e754>_0x11f2b2['user'])return _0x1f782b(_0x82f3('0x2b'));if(_0x36fe2c>_0x11f2b2[_0x82f3('0x24')])return _0x1f782b(_0x82f3('0x2c'));return _0xb59dc8();})['catch'](function(_0x5e88ed){_0x1f782b(_0x5e88ed);});});}module[_0x82f3('0x2d')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index d542f34..b224ccb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['app-id','secret','http://localhost:9000'];(function(_0x4b1e60,_0x4a2e1c){var _0x27f958=function(_0x3570d2){while(--_0x3570d2){_0x4b1e60['push'](_0x4b1e60['shift']());}};_0x27f958(++_0x4a2e1c);}(_0x5f66,0x1a0));var _0x65f6=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0x5f66[_0x2b4411];return _0x8e41ef;};'use strict';module['exports']={'DOMAIN':_0x65f6('0x0'),'SESSION_SECRET':'myappanuglar-secret','GOOGLE_ID':_0x65f6('0x1'),'GOOGLE_SECRET':_0x65f6('0x2'),'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(_0x424663,_0xfa30f0){_0x424663=_0x424663-0x0;var _0x35b493=_0x8f59[_0x424663];return _0x35b493;};'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 ee8feb7..ca58e02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8911=['replace','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','message','exports','Logger','transports','File','error','%s-%s','info','Console','debugLevel','moment','winston','util','path','join','xcally','format','%s-%s.log','{{{'];(function(_0x3cc634,_0x1fa280){var _0x5530fe=function(_0xf42993){while(--_0xf42993){_0x3cc634['push'](_0x3cc634['shift']());}};_0x5530fe(++_0x1fa280);}(_0x8911,0x115));var _0x1891=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x8911[_0x14add3];return _0x4a174f;};'use strict';var moment=require(_0x1891('0x0'));var winston=require(_0x1891('0x1'));var util=require(_0x1891('0x2'));var path=require(_0x1891('0x3'));var debugLevel='INFO';function filename(_0x2323df,_0x291b49){return path[_0x1891('0x4')]('/var','log',_0x1891('0x5'),util[_0x1891('0x6')](_0x1891('0x7'),_0x2323df,_0x291b49));}function formatter(_0x5a4449,_0x44b9fb){_0x44b9fb['message']=_0x44b9fb['message']['replace'](/@@{/g,_0x1891('0x8'))[_0x1891('0x9')](/}@@/g,'}}}')['replace'](/@{/g,'{{')[_0x1891('0x9')](/}@/g,'}}');return util[_0x1891('0x6')](_0x1891('0xa'),moment()[_0x1891('0x6')](_0x1891('0xb')),_0x44b9fb['level']['toUpperCase'](),_0x5a4449,_0x44b9fb[_0x1891('0xc')]);}module[_0x1891('0xd')]=function(_0x494256){return new winston[(_0x1891('0xe'))]({'transports':[new winston[(_0x1891('0xf'))][(_0x1891('0x10'))]({'name':util['format']('%s-%s',_0x494256,_0x1891('0x11')),'filename':filename(_0x494256,_0x1891('0x11')),'level':_0x1891('0x11'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x142bf1){return formatter(_0x494256,_0x142bf1);}}),new winston[(_0x1891('0xf'))]['File']({'name':util['format'](_0x1891('0x12'),_0x494256,_0x1891('0x13')),'filename':filename(_0x494256,_0x1891('0x13')),'level':_0x1891('0x13'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x353473){return formatter(_0x494256,_0x353473);}}),new winston['transports'][(_0x1891('0x14'))]({'level':process['env'][_0x1891('0x15')]||debugLevel,'json':![],'formatter':function(_0x3c443c){return formatter(_0x494256,_0x3c443c);}})]});};
\ No newline at end of file
+var _0x1246=['info','env','debugLevel','moment','winston','INFO','join','/var','xcally','%s-%s.log','message','replace','{{{','}}}','format','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','exports','File','%s-%s','error','transports'];(function(_0x536256,_0x237fb5){var _0x1675f7=function(_0x339198){while(--_0x339198){_0x536256['push'](_0x536256['shift']());}};_0x1675f7(++_0x237fb5);}(_0x1246,0x10b));var _0x6124=function(_0x3ca0e9,_0x5d74b5){_0x3ca0e9=_0x3ca0e9-0x0;var _0xd1f0=_0x1246[_0x3ca0e9];return _0xd1f0;};'use strict';var moment=require(_0x6124('0x0'));var winston=require(_0x6124('0x1'));var util=require('util');var path=require('path');var debugLevel=_0x6124('0x2');function filename(_0x80b18b,_0x466c1d){return path[_0x6124('0x3')](_0x6124('0x4'),'log',_0x6124('0x5'),util['format'](_0x6124('0x6'),_0x80b18b,_0x466c1d));}function formatter(_0x51474f,_0x3f9123){_0x3f9123['message']=_0x3f9123[_0x6124('0x7')][_0x6124('0x8')](/@@{/g,_0x6124('0x9'))[_0x6124('0x8')](/}@@/g,_0x6124('0xa'))[_0x6124('0x8')](/@{/g,'{{')[_0x6124('0x8')](/}@/g,'}}');return util[_0x6124('0xb')](_0x6124('0xc'),moment()[_0x6124('0xb')](_0x6124('0xd')),_0x3f9123[_0x6124('0xe')][_0x6124('0xf')](),_0x51474f,_0x3f9123[_0x6124('0x7')]);}module[_0x6124('0x10')]=function(_0x3ea1e7){return new winston['Logger']({'transports':[new winston['transports'][(_0x6124('0x11'))]({'name':util[_0x6124('0xb')](_0x6124('0x12'),_0x3ea1e7,_0x6124('0x13')),'filename':filename(_0x3ea1e7,_0x6124('0x13')),'level':_0x6124('0x13'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x5537a6){return formatter(_0x3ea1e7,_0x5537a6);}}),new winston[(_0x6124('0x14'))][(_0x6124('0x11'))]({'name':util[_0x6124('0xb')](_0x6124('0x12'),_0x3ea1e7,'info'),'filename':filename(_0x3ea1e7,_0x6124('0x15')),'level':'info','json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x266dcb){return formatter(_0x3ea1e7,_0x266dcb);}}),new winston['transports']['Console']({'level':process[_0x6124('0x16')][_0x6124('0x17')]||debugLevel,'json':![],'formatter':function(_0xd040b1){return formatter(_0x3ea1e7,_0xd040b1);}})]});};
\ No newline at end of file
index e53c96b..1e2c738 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95d0=['join','../../services/express/index.js','ami','agi','../../services/agi/index.js','routing','../../services/routing/index.js','../../services/xdr/index.js','exports','path','express'];(function(_0x2dcf8b,_0x477184){var _0x287c68=function(_0x5f1689){while(--_0x5f1689){_0x2dcf8b['push'](_0x2dcf8b['shift']());}};_0x287c68(++_0x477184);}(_0x95d0,0x1e2));var _0x095d=function(_0x54c7a8,_0x45aba5){_0x54c7a8=_0x54c7a8-0x0;var _0x2d5d6e=_0x95d0[_0x54c7a8];return _0x2d5d6e;};'use strict';var path=require(_0x095d('0x0'));var os=require('os');var config={'apps':[{'name':_0x095d('0x1'),'script':path[_0x095d('0x2')](__dirname,_0x095d('0x3'))},{'name':_0x095d('0x4'),'script':path['join'](__dirname,'../../services/ami/index.js')},{'name':_0x095d('0x5'),'script':path['join'](__dirname,_0x095d('0x6'))},{'name':'email','script':path[_0x095d('0x2')](__dirname,'../../services/email/index.js')},{'name':_0x095d('0x7'),'script':path['join'](__dirname,_0x095d('0x8'))},{'name':'xdr','script':path[_0x095d('0x2')](__dirname,_0x095d('0x9'))}]};module[_0x095d('0xa')]=config;
\ No newline at end of file
+var _0x0ce9=['ami','../../services/ami/index.js','agi','email','../../services/email/index.js','routing','../../services/routing/index.js','xdr','../../services/xdr/index.js','exports','join','../../services/express/index.js'];(function(_0x18d43d,_0x597070){var _0x267483=function(_0x3070d7){while(--_0x3070d7){_0x18d43d['push'](_0x18d43d['shift']());}};_0x267483(++_0x597070);}(_0x0ce9,0xa6));var _0x90ce=function(_0xb6728d,_0x124273){_0xb6728d=_0xb6728d-0x0;var _0x5e7f3a=_0x0ce9[_0xb6728d];return _0x5e7f3a;};'use strict';var path=require('path');var os=require('os');var config={'apps':[{'name':'express','script':path[_0x90ce('0x0')](__dirname,_0x90ce('0x1'))},{'name':_0x90ce('0x2'),'script':path[_0x90ce('0x0')](__dirname,_0x90ce('0x3'))},{'name':_0x90ce('0x4'),'script':path[_0x90ce('0x0')](__dirname,'../../services/agi/index.js')},{'name':_0x90ce('0x5'),'script':path[_0x90ce('0x0')](__dirname,_0x90ce('0x6'))},{'name':_0x90ce('0x7'),'script':path[_0x90ce('0x0')](__dirname,_0x90ce('0x8'))},{'name':_0x90ce('0x9'),'script':path[_0x90ce('0x0')](__dirname,_0x90ce('0xa'))}]};module[_0x90ce('0xb')]=config;
\ No newline at end of file
index 8124e8e..4bbcdad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x908d=['then','restart','list','describe','delete','dump','pm2','connected','start','disconnect','stop'];(function(_0x201956,_0x2f2457){var _0x1c065c=function(_0x475b47){while(--_0x475b47){_0x201956['push'](_0x201956['shift']());}};_0x1c065c(++_0x2f2457);}(_0x908d,0xab));var _0xd908=function(_0x9769a3,_0xe431f0){_0x9769a3=_0x9769a3-0x0;var _0x43667d=_0x908d[_0x9769a3];return _0x43667d;};'use strict';var pm2=require(_0xd908('0x0'));var BPromise=require('bluebird');var config=require('./config');function connect(){return new BPromise(function(_0x1feed8,_0x396be3){return pm2['connect'](function(_0x196883){if(_0x196883){return _0x396be3(_0x196883);}return _0x1feed8(_0xd908('0x1'));});});};exports[_0xd908('0x2')]=function(_0x5a4fdf){return connect()['then'](function(){return new BPromise(function(_0x2bb2f8,_0x2b5ca8){return pm2['start'](_0x5a4fdf,function(_0x4000c5,_0x2fb877){if(_0x4000c5){return _0x2b5ca8(_0x4000c5);}pm2[_0xd908('0x3')]();return _0x2bb2f8(_0x2fb877);});});});};exports[_0xd908('0x4')]=function(_0x57e45c){return connect()[_0xd908('0x5')](function(){return new BPromise(function(_0x44a8a1,_0x42aa20){return pm2[_0xd908('0x4')](_0x57e45c,function(_0x18944f,_0x36a667){if(_0x18944f){return _0x42aa20(_0x18944f);}pm2[_0xd908('0x3')]();return _0x44a8a1(_0x36a667);});});});};exports[_0xd908('0x6')]=function(_0x1e9e87){return connect()['then'](function(){return new BPromise(function(_0x59f4b0,_0x142def){return pm2[_0xd908('0x6')](_0x1e9e87,function(_0x176d35,_0xe9fdb1){if(_0x176d35){return _0x142def(_0x176d35);}pm2[_0xd908('0x3')]();return _0x59f4b0(_0xe9fdb1);});});});};exports[_0xd908('0x7')]=function(){return connect()[_0xd908('0x5')](function(){return new BPromise(function(_0x467991,_0x477ab9){return pm2[_0xd908('0x7')](function(_0x838645,_0xba3dbc){if(_0x838645){return _0x477ab9(_0x838645);}pm2[_0xd908('0x3')]();return _0x467991(_0xba3dbc);});});});};exports[_0xd908('0x8')]=function(_0x2fe304){return connect()[_0xd908('0x5')](function(){return new BPromise(function(_0x39615c,_0xb46ed5){return pm2[_0xd908('0x8')](_0x2fe304,function(_0x2364e8,_0x43142a){if(_0x2364e8){return _0xb46ed5(_0x2364e8);}pm2[_0xd908('0x3')]();return _0x39615c(_0x43142a);});});});};exports[_0xd908('0x9')]=function(_0x1ac086){return connect()[_0xd908('0x5')](function(){return new BPromise(function(_0x8b34d1,_0x31fa3c){return pm2[_0xd908('0x9')](_0x1ac086,function(_0xfbfa51,_0x553d33){if(_0xfbfa51){return _0x31fa3c(_0xfbfa51);}pm2[_0xd908('0x3')]();return _0x8b34d1(_0x553d33);});});});};exports['dump']=function(){return connect()['then'](function(){return new BPromise(function(_0x5d6b60,_0x544b63){return pm2[_0xd908('0xa')](function(_0x3ff5a6){if(_0x3ff5a6){return _0x544b63(_0x3ff5a6);}return _0x5d6b60('saved');});});});};
\ No newline at end of file
+var _0x5018=['then','restart','list','describe','dump','saved','pm2','./config','connect','connected','start','disconnect','stop'];(function(_0x2820a5,_0xbca915){var _0x491f77=function(_0x4156e4){while(--_0x4156e4){_0x2820a5['push'](_0x2820a5['shift']());}};_0x491f77(++_0xbca915);}(_0x5018,0x1cd));var _0x8501=function(_0x510b98,_0x4c4cbb){_0x510b98=_0x510b98-0x0;var _0x45e775=_0x5018[_0x510b98];return _0x45e775;};'use strict';var pm2=require(_0x8501('0x0'));var BPromise=require('bluebird');var config=require(_0x8501('0x1'));function connect(){return new BPromise(function(_0x209a85,_0x22cd17){return pm2[_0x8501('0x2')](function(_0x13f888){if(_0x13f888){return _0x22cd17(_0x13f888);}return _0x209a85(_0x8501('0x3'));});});};exports[_0x8501('0x4')]=function(_0x13a568){return connect()['then'](function(){return new BPromise(function(_0x1f965b,_0x551bb6){return pm2['start'](_0x13a568,function(_0x38df52,_0xcf2d65){if(_0x38df52){return _0x551bb6(_0x38df52);}pm2[_0x8501('0x5')]();return _0x1f965b(_0xcf2d65);});});});};exports[_0x8501('0x6')]=function(_0x1fa97d){return connect()[_0x8501('0x7')](function(){return new BPromise(function(_0x2e8b00,_0x26912a){return pm2[_0x8501('0x6')](_0x1fa97d,function(_0x547776,_0x47eb1e){if(_0x547776){return _0x26912a(_0x547776);}pm2[_0x8501('0x5')]();return _0x2e8b00(_0x47eb1e);});});});};exports[_0x8501('0x8')]=function(_0x32565a){return connect()[_0x8501('0x7')](function(){return new BPromise(function(_0x38372f,_0x424c08){return pm2['restart'](_0x32565a,function(_0x177db8,_0x274eab){if(_0x177db8){return _0x424c08(_0x177db8);}pm2[_0x8501('0x5')]();return _0x38372f(_0x274eab);});});});};exports['list']=function(){return connect()[_0x8501('0x7')](function(){return new BPromise(function(_0x48f8c1,_0x50ed84){return pm2[_0x8501('0x9')](function(_0x19ab74,_0x513d74){if(_0x19ab74){return _0x50ed84(_0x19ab74);}pm2[_0x8501('0x5')]();return _0x48f8c1(_0x513d74);});});});};exports[_0x8501('0xa')]=function(_0x562f61){return connect()['then'](function(){return new BPromise(function(_0x3622fc,_0x4455c1){return pm2['describe'](_0x562f61,function(_0x2ad139,_0x9c5c7a){if(_0x2ad139){return _0x4455c1(_0x2ad139);}pm2[_0x8501('0x5')]();return _0x3622fc(_0x9c5c7a);});});});};exports['delete']=function(_0x104981){return connect()[_0x8501('0x7')](function(){return new BPromise(function(_0x46b409,_0x4e9a5f){return pm2['delete'](_0x104981,function(_0x5d4fa0,_0x5d51a2){if(_0x5d4fa0){return _0x4e9a5f(_0x5d4fa0);}pm2['disconnect']();return _0x46b409(_0x5d51a2);});});});};exports[_0x8501('0xb')]=function(){return connect()[_0x8501('0x7')](function(){return new BPromise(function(_0x5ba594,_0x4499d7){return pm2[_0x8501('0xb')](function(_0x50f7c4){if(_0x50f7c4){return _0x4499d7(_0x50f7c4);}return _0x5ba594(_0x8501('0xc'));});});});};
\ No newline at end of file
index 24b55e1..2d117e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5270=['minutes','map','info','update','system','timeout','YYYY-MM-DD\x20HH:mm:ss','length','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','join','emit','chatInteraction:update','error','inspect','lodash','moment','ioredis','util','../../mysqldb','../logger','schedule','redis','defaults','Setting','find','chatTimeout','then','ChatInteraction','findAll','subtract'];(function(_0x31997c,_0x13412b){var _0x3c9756=function(_0x23e38c){while(--_0x23e38c){_0x31997c['push'](_0x31997c['shift']());}};_0x3c9756(++_0x13412b);}(_0x5270,0xa4));var _0x0527=function(_0x203127,_0x4a695d){_0x203127=_0x203127-0x0;var _0x217b4b=_0x5270[_0x203127];return _0x217b4b;};'use strict';var _=require(_0x0527('0x0'));var moment=require(_0x0527('0x1'));var Redis=require(_0x0527('0x2'));var util=require(_0x0527('0x3'));var config=require('../../config/environment');var db=require(_0x0527('0x4'))['db'];var logger=require(_0x0527('0x5'))(_0x0527('0x6'));config[_0x0527('0x7')]=_[_0x0527('0x8')](config[_0x0527('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0527('0x7')]));function closeInteractions(){var _0xee4b0=0x0;var _0x2be3f3=[];return db[_0x0527('0x9')][_0x0527('0xa')]({'raw':!![],'attributes':['id',_0x0527('0xb')],'where':{'id':0x1}})[_0x0527('0xc')](function(_0x569f9e){_0xee4b0=_0x569f9e[_0x0527('0xb')];if(_0xee4b0){return db[_0x0527('0xd')][_0x0527('0xe')]({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x0527('0xf')](_0x569f9e[_0x0527('0xb')],_0x0527('0x10'))}}});}else{return[];}})[_0x0527('0xc')](function(_0x54f72a){if(_0x54f72a&&_0x54f72a['length']){_0x2be3f3=_[_0x0527('0x11')](_0x54f72a||[],'id');logger[_0x0527('0x12')]('[CHAT]\x20Interactions\x20to\x20close:',_0x2be3f3['join']());return db[_0x0527('0xd')][_0x0527('0x13')]({'closeReason':_0x0527('0x14'),'disposition':_0x0527('0x15'),'closed':!![],'closedAt':moment()['format'](_0x0527('0x16'))},{'where':{'id':_0x2be3f3}});}})[_0x0527('0xc')](function(){if(_0x2be3f3&&_0x2be3f3[_0x0527('0x17')]){logger['info'](_0x0527('0x18'),_0x2be3f3[_0x0527('0x19')]());for(var _0x11e57e=0x0;_0x11e57e<_0x2be3f3['length'];_0x11e57e++){io[_0x0527('0x1a')](_0x0527('0x1b'),{'id':_0x2be3f3[_0x11e57e],'closed':!![]});}}})['catch'](function(_0x53282b){logger[_0x0527('0x1c')]('[CHAT]\x20Error\x20closing\x20interactions',_0x53282b?util[_0x0527('0x1d')](_0x53282b,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x934f=['lodash','util','../../config/environment','../logger','redis','defaults','localhost','socket.io-emitter','Setting','find','chatTimeout','then','findAll','lastMsgAt','minutes','map','info','[CHAT]\x20Interactions\x20to\x20close:','join','ChatInteraction','update','system','format','YYYY-MM-DD\x20HH:mm:ss','length','emit','chatInteraction:update','catch','error','[CHAT]\x20Error\x20closing\x20interactions','inspect','start'];(function(_0x326e11,_0x2a4f76){var _0x3deedc=function(_0x37c9c0){while(--_0x37c9c0){_0x326e11['push'](_0x326e11['shift']());}};_0x3deedc(++_0x2a4f76);}(_0x934f,0xc0));var _0xf934=function(_0x27e297,_0x789346){_0x27e297=_0x27e297-0x0;var _0x2c1458=_0x934f[_0x27e297];return _0x2c1458;};'use strict';var _=require(_0xf934('0x0'));var moment=require('moment');var Redis=require('ioredis');var util=require(_0xf934('0x1'));var config=require(_0xf934('0x2'));var db=require('../../mysqldb')['db'];var logger=require(_0xf934('0x3'))('schedule');config[_0xf934('0x4')]=_[_0xf934('0x5')](config[_0xf934('0x4')],{'host':_0xf934('0x6'),'port':0x18eb});var io=require(_0xf934('0x7'))(new Redis(config[_0xf934('0x4')]));function closeInteractions(){var _0x41eabb=0x0;var _0x1daccb=[];return db[_0xf934('0x8')][_0xf934('0x9')]({'raw':!![],'attributes':['id',_0xf934('0xa')],'where':{'id':0x1}})[_0xf934('0xb')](function(_0x36e37a){_0x41eabb=_0x36e37a[_0xf934('0xa')];if(_0x41eabb){return db['ChatInteraction'][_0xf934('0xc')]({'raw':!![],'attributes':['id',_0xf934('0xd')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()['subtract'](_0x36e37a[_0xf934('0xa')],_0xf934('0xe'))}}});}else{return[];}})[_0xf934('0xb')](function(_0x31a03a){if(_0x31a03a&&_0x31a03a['length']){_0x1daccb=_[_0xf934('0xf')](_0x31a03a||[],'id');logger[_0xf934('0x10')](_0xf934('0x11'),_0x1daccb[_0xf934('0x12')]());return db[_0xf934('0x13')][_0xf934('0x14')]({'closeReason':_0xf934('0x15'),'disposition':'timeout','closed':!![],'closedAt':moment()[_0xf934('0x16')](_0xf934('0x17'))},{'where':{'id':_0x1daccb}});}})[_0xf934('0xb')](function(){if(_0x1daccb&&_0x1daccb['length']){logger['info']('[CHAT]\x20Sending\x20updates\x20for\x20interactions:',_0x1daccb[_0xf934('0x12')]());for(var _0x418de2=0x0;_0x418de2<_0x1daccb[_0xf934('0x18')];_0x418de2++){io[_0xf934('0x19')](_0xf934('0x1a'),{'id':_0x1daccb[_0x418de2],'closed':!![]});}}})[_0xf934('0x1b')](function(_0x275ab4){logger[_0xf934('0x1c')](_0xf934('0x1d'),_0x275ab4?util[_0xf934('0x1e')](_0x275ab4,{'showHidden':![],'depth':null}):'');});}exports[_0xf934('0x1f')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index a628337..14dedb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a41=['isNil','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','Schedule','MailServerOut','keys','map','toString','keyBy','intersection','difference','toRun','length','index','my\x20id','resolve','run\x20job','cron','active','isBetween','startAt','endAt','add','add\x20cron','stop','deleteJob','update','update\x20cron','run','start','util','path','lodash','moment','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','http','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','service','host','Smtp','port','secure','authentication','auth','user','format','\x22%s\x22\x20<%s>','name','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','join','../../files/reports','savename','%s.%s','extname','existsSync','status','Sent','message','attachments','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','text','info','request','SendMail','then','error','error\x20mail','stringify','catch','data'];(function(_0x41a4bb,_0x36b115){var _0x4d4239=function(_0x572b5c){while(--_0x572b5c){_0x41a4bb['push'](_0x41a4bb['shift']());}};_0x4d4239(++_0x36b115);}(_0x6a41,0x1e3));var _0x16a4=function(_0x13cc23,_0x487f14){_0x13cc23=_0x13cc23-0x0;var _0x11677c=_0x6a41[_0x13cc23];return _0x11677c;};'use strict';var fs=require('fs');var util=require(_0x16a4('0x0'));var path=require(_0x16a4('0x1'));var _=require(_0x16a4('0x2'));var moment=require(_0x16a4('0x3'));var CronJobManager=require('cron-job-manager');var jayson=require(_0x16a4('0x4'));var BPromise=require(_0x16a4('0x5'));var logger=require(_0x16a4('0x6'))(_0x16a4('0x7'));var db=require(_0x16a4('0x8'))['db'];var analyticCustomReportController=require(_0x16a4('0x9'));var analyticDefaultReportController=require(_0x16a4('0xa'));var client=jayson['client'][_0x16a4('0xb')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x4606ee,_0x10b33f){return function(){logger['info'](_0x16a4('0xc'),_0x4606ee[_0x16a4('0xd')]);var _0x5437e7=!![];var _0x434448={'tls':{'rejectUnauthorized':![]}};if(_0x4606ee[_0x16a4('0xe')]['Smtp'][_0x16a4('0xf')]){_0x434448[_0x16a4('0xf')]=_0x4606ee[_0x16a4('0xe')]['Smtp'][_0x16a4('0xf')];}else{_0x434448[_0x16a4('0x10')]=_0x4606ee[_0x16a4('0xe')][_0x16a4('0x11')][_0x16a4('0x10')];_0x434448[_0x16a4('0x12')]=_0x4606ee[_0x16a4('0xe')][_0x16a4('0x11')][_0x16a4('0x12')];_0x434448[_0x16a4('0x13')]=_0x4606ee[_0x16a4('0xe')]['Smtp'][_0x16a4('0x13')];}if(_0x4606ee[_0x16a4('0xe')][_0x16a4('0x11')][_0x16a4('0x14')]){_0x434448[_0x16a4('0x15')]={'user':_0x4606ee[_0x16a4('0xe')]['Smtp'][_0x16a4('0x16')],'pass':_0x4606ee[_0x16a4('0xe')][_0x16a4('0x11')]['pass']};}var _0x3787b5={'account':_0x434448,'message':{'from':util[_0x16a4('0x17')](_0x16a4('0x18'),_0x4606ee[_0x16a4('0xe')][_0x16a4('0x19')],_0x4606ee[_0x16a4('0xe')][_0x16a4('0xd')]||_0x4606ee[_0x16a4('0xe')][_0x16a4('0x11')][_0x16a4('0x16')]),'to':_0x4606ee['email'],'cc':_0x4606ee['cc'],'bcc':_0x4606ee[_0x16a4('0x1a')],'subject':util[_0x16a4('0x17')](_0x16a4('0x1b'),_0x10b33f[_0x16a4('0x19')],_0x4606ee[_0x16a4('0x1c')],_0x4606ee[_0x16a4('0x1d')])}};var _0x529bbc=path[_0x16a4('0x1e')](__dirname,_0x16a4('0x1f'));var _0x1f0331=_0x10b33f[_0x16a4('0x20')];var _0x3d60f3=util[_0x16a4('0x17')](_0x16a4('0x21'),path['basename'](_0x10b33f['savename'],path[_0x16a4('0x22')](_0x10b33f[_0x16a4('0x20')])),'zip');var _0xee5ab5=path[_0x16a4('0x1e')](_0x529bbc,_0x1f0331);var _0x303fbb=path[_0x16a4('0x1e')](_0x529bbc,_0x3d60f3);if(fs[_0x16a4('0x23')](_0xee5ab5)){_0x10b33f[_0x16a4('0x24')]=_0x16a4('0x25');_0x3787b5[_0x16a4('0x26')][_0x16a4('0x27')]=[{'filename':_0x1f0331,'path':_0xee5ab5}];_0x3787b5[_0x16a4('0x26')]['text']=util[_0x16a4('0x17')](_0x16a4('0x28'),JSON['stringify'](_0x10b33f,null,0x2));}else if(fs['existsSync'](_0x303fbb)){_0x10b33f[_0x16a4('0x24')]=_0x16a4('0x25');_0x3787b5[_0x16a4('0x26')][_0x16a4('0x27')]=[{'filename':_0x3d60f3,'path':_0x303fbb}];}else{_0x3787b5[_0x16a4('0x26')][_0x16a4('0x29')]='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x4606ee['sendIfEmpty']){_0x5437e7=![];logger[_0x16a4('0x2a')]('empty\x20file,\x20email\x20not\x20sent');}}if(_0x5437e7){return client[_0x16a4('0x2b')](_0x16a4('0x2c'),_0x3787b5)[_0x16a4('0x2d')](function(_0x4bc6d1){if(_0x4bc6d1[_0x16a4('0x2e')]){return logger[_0x16a4('0x2e')](_0x16a4('0x2f'),JSON[_0x16a4('0x30')](_0x4bc6d1));}return logger[_0x16a4('0x2a')]('email\x20sent');})[_0x16a4('0x31')](function(_0x4265dd){return logger[_0x16a4('0x2e')](_0x16a4('0x2f'),JSON['stringify'](_0x4265dd));});}};}function handleError(){return function(_0x434647){return logger[_0x16a4('0x2e')](JSON[_0x16a4('0x30')](_0x434647));};}function handleResult(_0x128a5e){return function(_0x2aadbe){logger[_0x16a4('0x2a')](_0x16a4('0x32'),JSON[_0x16a4('0x30')](_0x2aadbe));if(_0x128a5e[_0x16a4('0xe')]&&_0x128a5e[_0x16a4('0xe')][_0x16a4('0x11')]&&!_[_0x16a4('0x33')](_0x128a5e[_0x16a4('0xd')])){setTimeout(handleSendEmail(_0x128a5e,_0x2aadbe),0x3c*0x3e8);}};}function handleJob(_0x531777){return function(){try{if(_['isNil'](_0x531777['subtractNumber'])){return logger[_0x16a4('0x2a')]('subtractNumber\x20null\x20or\x20undefined');}if(_[_0x16a4('0x33')](_0x531777[_0x16a4('0x1d')])){return logger[_0x16a4('0x2a')](_0x16a4('0x34'));}var _0x1ca0df={'startDate':moment()[_0x16a4('0x35')](_0x531777[_0x16a4('0x1c')],_0x531777['subtractUnit'])[_0x16a4('0x17')]('YYYY-MM-DD\x20HH:mm:ss'),'endDate':moment()['format'](_0x16a4('0x36')),'type':_0x16a4('0x37'),'output':_0x531777[_0x16a4('0x38')],'name':_0x531777[_0x16a4('0x19')]};if(!_[_0x16a4('0x33')](_0x531777[_0x16a4('0x39')])){logger[_0x16a4('0x2a')](_0x16a4('0x3a'),_0x531777['DefaultReportId']);return analyticDefaultReportController[_0x16a4('0x3b')]({'id':_0x531777['DefaultReportId']},_0x1ca0df)[_0x16a4('0x2d')](handleResult(_0x531777))['catch'](handleError());}if(!_[_0x16a4('0x33')](_0x531777[_0x16a4('0x3c')])){logger[_0x16a4('0x2a')](_0x16a4('0x3d'),_0x531777[_0x16a4('0x3c')]);return analyticCustomReportController[_0x16a4('0x3b')]({'id':_0x531777['CustomReportId']},_0x1ca0df)[_0x16a4('0x2d')](handleResult(_0x531777))['catch'](handleError());}}catch(_0x264198){logger[_0x16a4('0x2e')](JSON[_0x16a4('0x30')](_0x264198));}return logger[_0x16a4('0x2a')]('no\x20report\x20id');};}function getJobs(_0x597212){var _0x17483e={};if(_0x597212){_0x17483e['id']=_0x597212;}return db[_0x16a4('0x3e')]['findAll']({'where':_0x17483e,'include':[{'model':db['MailAccount'],'attributes':['id',_0x16a4('0x19'),_0x16a4('0xd')],'include':[{'model':db[_0x16a4('0x3f')],'as':_0x16a4('0x11')}]}]})[_0x16a4('0x2d')](function(_0x2f9af0){var _0x416f36=_[_0x16a4('0x40')](manager['jobs']);var _0xca013d=_[_0x16a4('0x41')](_0x2f9af0,function(_0x242b0f){return _0x242b0f['id'][_0x16a4('0x42')]();});var _0x39d680=_[_0x16a4('0x43')](_0x2f9af0,function(_0x56fb6c){return _0x56fb6c['id'][_0x16a4('0x42')]();});var _0x2921e0=_0x597212?_0xca013d:_['difference'](_0xca013d,_0x416f36);var _0x3d9d98=_[_0x16a4('0x44')](_0xca013d,_0x416f36);var _0x250254=_[_0x16a4('0x45')](_0x416f36,_0xca013d);var _0x43b984;var _0x36947c;for(_0x43b984=0x0;_0x43b984<_0x250254['length']&&!_0x597212;_0x43b984+=0x1){_0x36947c=_0x250254[_0x43b984][_0x16a4('0x42')]();if(manager['exists'](_0x36947c)){manager['stop'](_0x36947c);manager['deleteJob'](_0x36947c);logger[_0x16a4('0x2a')]('delete\x20cron',_0x36947c);}}logger[_0x16a4('0x2a')](_0x16a4('0x46'),JSON[_0x16a4('0x30')](_0x2921e0));for(_0x43b984=0x0;_0x43b984<_0x2921e0[_0x16a4('0x47')];_0x43b984+=0x1){_0x36947c=_0x2921e0[_0x43b984]['toString']();logger['info'](_0x16a4('0x48'),_0x36947c);if(_0x597212){logger['info'](_0x16a4('0x49'),_0x597212);logger[_0x16a4('0x2a')](JSON['stringify'](_0x39d680[_0x36947c]));BPromise[_0x16a4('0x4a')]()[_0x16a4('0x2d')](handleJob(_0x39d680[_0x36947c]));logger['info'](_0x16a4('0x4b'),_0x39d680[_0x36947c][_0x16a4('0x19')],_0x39d680[_0x36947c]['cron']);}else if(_0x39d680[_0x36947c][_0x16a4('0x4c')]&&_0x39d680[_0x36947c][_0x16a4('0x4d')]&&moment()[_0x16a4('0x4e')](_0x39d680[_0x36947c][_0x16a4('0x4f')],_0x39d680[_0x36947c][_0x16a4('0x50')])){manager[_0x16a4('0x51')](_0x36947c,_0x39d680[_0x36947c][_0x16a4('0x4c')],handleJob(_0x39d680[_0x36947c]));manager['start'](_0x36947c);logger[_0x16a4('0x2a')](_0x16a4('0x52'),_0x39d680[_0x36947c][_0x16a4('0x19')],_0x39d680[_0x36947c]['cron']);}else if(manager['exists'](_0x36947c)){manager[_0x16a4('0x53')](_0x36947c);manager[_0x16a4('0x54')](_0x36947c);logger[_0x16a4('0x2a')]('stop\x20cron',_0x39d680[_0x36947c][_0x16a4('0x19')],_0x39d680[_0x36947c]['cron']);}}for(_0x43b984=0x0,_0x36947c;_0x43b984<_0x3d9d98[_0x16a4('0x47')]&&!_0x597212;_0x43b984+=0x1){_0x36947c=_0x3d9d98[_0x43b984][_0x16a4('0x42')]();if(manager['exists'](_0x36947c)){if(_0x39d680[_0x36947c][_0x16a4('0x4c')]&&_0x39d680[_0x36947c][_0x16a4('0x4d')]&&moment()['isBetween'](_0x39d680[_0x36947c][_0x16a4('0x4f')],_0x39d680[_0x36947c][_0x16a4('0x50')])){manager[_0x16a4('0x55')](_0x36947c,_0x39d680[_0x36947c]['cron'],handleJob(_0x39d680[_0x36947c]));logger[_0x16a4('0x2a')](_0x16a4('0x56'),_0x39d680[_0x36947c][_0x16a4('0x19')],_0x39d680[_0x36947c][_0x16a4('0x4c')]);}else{manager[_0x16a4('0x53')](_0x36947c);manager['deleteJob'](_0x36947c);logger[_0x16a4('0x2a')]('stop\x20cron',_0x39d680[_0x36947c][_0x16a4('0x19')],_0x39d680[_0x36947c][_0x16a4('0x4c')]);}}}})[_0x16a4('0x31')](function(_0x1ab95a){logger[_0x16a4('0x2e')](JSON[_0x16a4('0x30')](_0x1ab95a));});}exports[_0x16a4('0x57')]=function(_0x2971d2){return getJobs(_0x2971d2);};exports[_0x16a4('0x58')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0x3e54=['cron','deleteJob','stop\x20cron','update','run','util','path','lodash','moment','cron-job-manager','jayson/promise','bluebird','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','client','info','email','MailAccount','Smtp','service','host','port','secure','authentication','auth','user','pass','name','bcc','format','subtractNumber','subtractUnit','join','../../files/reports','savename','basename','extname','zip','existsSync','status','Sent','attachments','text','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','message','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','SendMail','then','error','stringify','catch','error\x20mail','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','exec\x20defaul\x20report\x20id:%s','DefaultReportId','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','findAll','MailServerOut','keys','jobs','map','toString','keyBy','difference','intersection','exists','stop','delete\x20cron','toRun','length','index','resolve','run\x20job','active','isBetween','startAt','endAt','start','add\x20cron'];(function(_0x4b8c07,_0x4363f6){var _0xf19042=function(_0x21dec5){while(--_0x21dec5){_0x4b8c07['push'](_0x4b8c07['shift']());}};_0xf19042(++_0x4363f6);}(_0x3e54,0x161));var _0x43e5=function(_0x634135,_0x5533c5){_0x634135=_0x634135-0x0;var _0x24dd71=_0x3e54[_0x634135];return _0x24dd71;};'use strict';var fs=require('fs');var util=require(_0x43e5('0x0'));var path=require(_0x43e5('0x1'));var _=require(_0x43e5('0x2'));var moment=require(_0x43e5('0x3'));var CronJobManager=require(_0x43e5('0x4'));var jayson=require(_0x43e5('0x5'));var BPromise=require(_0x43e5('0x6'));var logger=require('../logger')('schedule');var db=require(_0x43e5('0x7'))['db'];var analyticCustomReportController=require(_0x43e5('0x8'));var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson[_0x43e5('0x9')]['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x3e6635,_0x2fe8b3){return function(){logger[_0x43e5('0xa')]('Try\x20to\x20send\x20a\x20mail\x20to',_0x3e6635[_0x43e5('0xb')]);var _0x19cad7=!![];var _0x46bca9={'tls':{'rejectUnauthorized':![]}};if(_0x3e6635[_0x43e5('0xc')][_0x43e5('0xd')][_0x43e5('0xe')]){_0x46bca9[_0x43e5('0xe')]=_0x3e6635['MailAccount']['Smtp'][_0x43e5('0xe')];}else{_0x46bca9[_0x43e5('0xf')]=_0x3e6635[_0x43e5('0xc')][_0x43e5('0xd')]['host'];_0x46bca9[_0x43e5('0x10')]=_0x3e6635['MailAccount']['Smtp'][_0x43e5('0x10')];_0x46bca9[_0x43e5('0x11')]=_0x3e6635[_0x43e5('0xc')][_0x43e5('0xd')][_0x43e5('0x11')];}if(_0x3e6635[_0x43e5('0xc')][_0x43e5('0xd')][_0x43e5('0x12')]){_0x46bca9[_0x43e5('0x13')]={'user':_0x3e6635['MailAccount'][_0x43e5('0xd')][_0x43e5('0x14')],'pass':_0x3e6635[_0x43e5('0xc')]['Smtp'][_0x43e5('0x15')]};}var _0x372951={'account':_0x46bca9,'message':{'from':util['format']('\x22%s\x22\x20<%s>',_0x3e6635[_0x43e5('0xc')][_0x43e5('0x16')],_0x3e6635[_0x43e5('0xc')][_0x43e5('0xb')]||_0x3e6635[_0x43e5('0xc')][_0x43e5('0xd')]['user']),'to':_0x3e6635[_0x43e5('0xb')],'cc':_0x3e6635['cc'],'bcc':_0x3e6635[_0x43e5('0x17')],'subject':util[_0x43e5('0x18')]('Report\x20%s\x20last\x20%s\x20%s',_0x2fe8b3['name'],_0x3e6635[_0x43e5('0x19')],_0x3e6635[_0x43e5('0x1a')])}};var _0x5a181a=path[_0x43e5('0x1b')](__dirname,_0x43e5('0x1c'));var _0x56a47d=_0x2fe8b3[_0x43e5('0x1d')];var _0x3efe79=util[_0x43e5('0x18')]('%s.%s',path[_0x43e5('0x1e')](_0x2fe8b3['savename'],path[_0x43e5('0x1f')](_0x2fe8b3[_0x43e5('0x1d')])),_0x43e5('0x20'));var _0x468263=path['join'](_0x5a181a,_0x56a47d);var _0x167b35=path[_0x43e5('0x1b')](_0x5a181a,_0x3efe79);if(fs[_0x43e5('0x21')](_0x468263)){_0x2fe8b3[_0x43e5('0x22')]=_0x43e5('0x23');_0x372951['message'][_0x43e5('0x24')]=[{'filename':_0x56a47d,'path':_0x468263}];_0x372951['message'][_0x43e5('0x25')]=util[_0x43e5('0x18')](_0x43e5('0x26'),JSON['stringify'](_0x2fe8b3,null,0x2));}else if(fs['existsSync'](_0x167b35)){_0x2fe8b3[_0x43e5('0x22')]=_0x43e5('0x23');_0x372951['message'][_0x43e5('0x24')]=[{'filename':_0x3efe79,'path':_0x167b35}];}else{_0x372951[_0x43e5('0x27')]['text']=_0x43e5('0x28');if(!_0x3e6635[_0x43e5('0x29')]){_0x19cad7=![];logger[_0x43e5('0xa')]('empty\x20file,\x20email\x20not\x20sent');}}if(_0x19cad7){return client['request'](_0x43e5('0x2a'),_0x372951)[_0x43e5('0x2b')](function(_0x269cd1){if(_0x269cd1['error']){return logger[_0x43e5('0x2c')]('error\x20mail',JSON[_0x43e5('0x2d')](_0x269cd1));}return logger['info']('email\x20sent');})[_0x43e5('0x2e')](function(_0x188263){return logger[_0x43e5('0x2c')](_0x43e5('0x2f'),JSON['stringify'](_0x188263));});}};}function handleError(){return function(_0x44d336){return logger[_0x43e5('0x2c')](JSON[_0x43e5('0x2d')](_0x44d336));};}function handleResult(_0x55e338){return function(_0x266860){logger[_0x43e5('0xa')]('data',JSON[_0x43e5('0x2d')](_0x266860));if(_0x55e338[_0x43e5('0xc')]&&_0x55e338[_0x43e5('0xc')][_0x43e5('0xd')]&&!_[_0x43e5('0x30')](_0x55e338[_0x43e5('0xb')])){setTimeout(handleSendEmail(_0x55e338,_0x266860),0x3c*0x3e8);}};}function handleJob(_0x292b45){return function(){try{if(_['isNil'](_0x292b45[_0x43e5('0x19')])){return logger['info'](_0x43e5('0x31'));}if(_[_0x43e5('0x30')](_0x292b45[_0x43e5('0x1a')])){return logger['info'](_0x43e5('0x32'));}var _0x2720fd={'startDate':moment()['subtract'](_0x292b45[_0x43e5('0x19')],_0x292b45['subtractUnit'])[_0x43e5('0x18')](_0x43e5('0x33')),'endDate':moment()[_0x43e5('0x18')](_0x43e5('0x33')),'type':_0x43e5('0x34'),'output':_0x292b45[_0x43e5('0x35')],'name':_0x292b45[_0x43e5('0x16')]};if(!_['isNil'](_0x292b45['DefaultReportId'])){logger[_0x43e5('0xa')](_0x43e5('0x36'),_0x292b45['DefaultReportId']);return analyticDefaultReportController['runReport']({'id':_0x292b45[_0x43e5('0x37')]},_0x2720fd)['then'](handleResult(_0x292b45))['catch'](handleError());}if(!_[_0x43e5('0x30')](_0x292b45[_0x43e5('0x38')])){logger[_0x43e5('0xa')](_0x43e5('0x39'),_0x292b45[_0x43e5('0x38')]);return analyticCustomReportController['runReport']({'id':_0x292b45[_0x43e5('0x38')]},_0x2720fd)[_0x43e5('0x2b')](handleResult(_0x292b45))[_0x43e5('0x2e')](handleError());}}catch(_0xa978c1){logger[_0x43e5('0x2c')](JSON[_0x43e5('0x2d')](_0xa978c1));}return logger[_0x43e5('0xa')](_0x43e5('0x3a'));};}function getJobs(_0x51317b){var _0x1a9e48={};if(_0x51317b){_0x1a9e48['id']=_0x51317b;}return db['Schedule'][_0x43e5('0x3b')]({'where':_0x1a9e48,'include':[{'model':db[_0x43e5('0xc')],'attributes':['id','name',_0x43e5('0xb')],'include':[{'model':db[_0x43e5('0x3c')],'as':_0x43e5('0xd')}]}]})[_0x43e5('0x2b')](function(_0x556472){var _0x1c8edb=_[_0x43e5('0x3d')](manager[_0x43e5('0x3e')]);var _0x35feb2=_[_0x43e5('0x3f')](_0x556472,function(_0x51ce4b){return _0x51ce4b['id'][_0x43e5('0x40')]();});var _0x52133b=_[_0x43e5('0x41')](_0x556472,function(_0x18dee9){return _0x18dee9['id'][_0x43e5('0x40')]();});var _0x107871=_0x51317b?_0x35feb2:_[_0x43e5('0x42')](_0x35feb2,_0x1c8edb);var _0x99743=_[_0x43e5('0x43')](_0x35feb2,_0x1c8edb);var _0x1dd730=_[_0x43e5('0x42')](_0x1c8edb,_0x35feb2);var _0x1bde9a;var _0x42aed0;for(_0x1bde9a=0x0;_0x1bde9a<_0x1dd730['length']&&!_0x51317b;_0x1bde9a+=0x1){_0x42aed0=_0x1dd730[_0x1bde9a][_0x43e5('0x40')]();if(manager[_0x43e5('0x44')](_0x42aed0)){manager[_0x43e5('0x45')](_0x42aed0);manager['deleteJob'](_0x42aed0);logger['info'](_0x43e5('0x46'),_0x42aed0);}}logger[_0x43e5('0xa')](_0x43e5('0x47'),JSON[_0x43e5('0x2d')](_0x107871));for(_0x1bde9a=0x0;_0x1bde9a<_0x107871[_0x43e5('0x48')];_0x1bde9a+=0x1){_0x42aed0=_0x107871[_0x1bde9a][_0x43e5('0x40')]();logger['info'](_0x43e5('0x49'),_0x42aed0);if(_0x51317b){logger['info']('my\x20id',_0x51317b);logger[_0x43e5('0xa')](JSON['stringify'](_0x52133b[_0x42aed0]));BPromise[_0x43e5('0x4a')]()[_0x43e5('0x2b')](handleJob(_0x52133b[_0x42aed0]));logger[_0x43e5('0xa')](_0x43e5('0x4b'),_0x52133b[_0x42aed0][_0x43e5('0x16')],_0x52133b[_0x42aed0]['cron']);}else if(_0x52133b[_0x42aed0]['cron']&&_0x52133b[_0x42aed0][_0x43e5('0x4c')]&&moment()[_0x43e5('0x4d')](_0x52133b[_0x42aed0][_0x43e5('0x4e')],_0x52133b[_0x42aed0][_0x43e5('0x4f')])){manager['add'](_0x42aed0,_0x52133b[_0x42aed0]['cron'],handleJob(_0x52133b[_0x42aed0]));manager[_0x43e5('0x50')](_0x42aed0);logger[_0x43e5('0xa')](_0x43e5('0x51'),_0x52133b[_0x42aed0][_0x43e5('0x16')],_0x52133b[_0x42aed0][_0x43e5('0x52')]);}else if(manager['exists'](_0x42aed0)){manager['stop'](_0x42aed0);manager[_0x43e5('0x53')](_0x42aed0);logger[_0x43e5('0xa')](_0x43e5('0x54'),_0x52133b[_0x42aed0][_0x43e5('0x16')],_0x52133b[_0x42aed0]['cron']);}}for(_0x1bde9a=0x0,_0x42aed0;_0x1bde9a<_0x99743[_0x43e5('0x48')]&&!_0x51317b;_0x1bde9a+=0x1){_0x42aed0=_0x99743[_0x1bde9a][_0x43e5('0x40')]();if(manager[_0x43e5('0x44')](_0x42aed0)){if(_0x52133b[_0x42aed0][_0x43e5('0x52')]&&_0x52133b[_0x42aed0][_0x43e5('0x4c')]&&moment()[_0x43e5('0x4d')](_0x52133b[_0x42aed0][_0x43e5('0x4e')],_0x52133b[_0x42aed0][_0x43e5('0x4f')])){manager[_0x43e5('0x55')](_0x42aed0,_0x52133b[_0x42aed0][_0x43e5('0x52')],handleJob(_0x52133b[_0x42aed0]));logger[_0x43e5('0xa')]('update\x20cron',_0x52133b[_0x42aed0]['name'],_0x52133b[_0x42aed0][_0x43e5('0x52')]);}else{manager[_0x43e5('0x45')](_0x42aed0);manager['deleteJob'](_0x42aed0);logger['info'](_0x43e5('0x54'),_0x52133b[_0x42aed0][_0x43e5('0x16')],_0x52133b[_0x42aed0][_0x43e5('0x52')]);}}}})[_0x43e5('0x2e')](function(_0x29713b){logger[_0x43e5('0x2c')](JSON[_0x43e5('0x2d')](_0x29713b));});}exports[_0x43e5('0x56')]=function(_0x58cb23){return getJobs(_0x58cb23);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index 613d1f5..59bb6a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf81a=['TranscriptionJobStatus','fileText','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','then','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','tempSentiment','Sequelize','ValidationError','sentiment','sentimentAccountId','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','findOne','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','data2','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Negative','Mixed','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','Sentiment\x20Analysis\x20not\x20requested','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribe','transcribeAccountId','Transcribe\x20not\x20configured','forEach','push','all','lodash','aws-sdk','request-promise','bluebird','../../mysqldb','../../config/logger','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','transcribeRegion','TranscriptionJob'];(function(_0x533edc,_0x99bbe9){var _0x58bc91=function(_0x3c2b58){while(--_0x3c2b58){_0x533edc['push'](_0x533edc['shift']());}};_0x58bc91(++_0x99bbe9);}(_0xf81a,0x16b));var _0xaf81=function(_0x16885a,_0x395ebc){_0x16885a=_0x16885a-0x0;var _0x289b2c=_0xf81a[_0x16885a];return _0x289b2c;};var _=require(_0xaf81('0x0'));var AWS=require(_0xaf81('0x1'));var rp=require(_0xaf81('0x2'));var util=require('util');var BPromise=require(_0xaf81('0x3'));var db=require(_0xaf81('0x4'))['db'];var logger=require(_0xaf81('0x5'))('transcribe');function getTranscriptionJob(_0x4590d4,_0x398bb6,_0x5c8d58,_0x102c05){return new Promise(function(_0x3c4f98,_0x1c89dd){var _0x5cfd36=new AWS[(_0xaf81('0x6'))]({'accessKeyId':_0x398bb6,'secretAccessKey':_0x4590d4,'region':_0x5c8d58});_0x5cfd36[_0xaf81('0x7')]({'TranscriptionJobName':_0x102c05},function(_0x4c3052,_0x3f0ac8){if(_0x4c3052){return _0x1c89dd(_0x4c3052);}else{return _0x3c4f98(_0x3f0ac8);}});});}function sentiment(_0x34cc6a,_0x413337,_0x3efaaf,_0x4be0dd,_0x26d83a){return new Promise(function(_0x304b68,_0x154067){var _0x307190=new AWS[(_0xaf81('0x8'))]({'accessKeyId':_0x413337,'secretAccessKey':_0x34cc6a,'region':_0x3efaaf});_0x307190[_0xaf81('0x9')]({'Text':_0x4be0dd,'LanguageCode':_0x26d83a['substring'](0x0,0x2)},function(_0x57ba9c,_0x2acecd){if(_0x57ba9c){return _0x154067(_0x57ba9c);}else{return _0x304b68(_0x2acecd);}});});}function checkTranscribeJob(_0x56497d,_0x2ecd06,_0x327517){var _0x2b62dd;return new BPromise(function(_0x3f6fbd,_0x5dc8dc){logger[_0xaf81('0xa')](util[_0xaf81('0xb')](_0xaf81('0xc'),_0x56497d['id'],_0x56497d[_0xaf81('0xd')]));return getTranscriptionJob(_0x327517[_0xaf81('0xe')],_0x327517['data2'],_0x2ecd06[_0xaf81('0xf')],_0x56497d[_0xaf81('0xd')])['then'](function(_0x14d43e){logger[_0xaf81('0xa')](util[_0xaf81('0xb')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x56497d['id'],_0x56497d[_0xaf81('0xd')],_0x14d43e[_0xaf81('0x10')][_0xaf81('0x11')]));if(!_0x56497d[_0xaf81('0x12')]){switch(_0x14d43e[_0xaf81('0x10')][_0xaf81('0x11')]){case _0xaf81('0x13'):var _0x3912de={'transcribeStatus':_0x14d43e['TranscriptionJob'][_0xaf81('0x11')],'fileUri':_0x14d43e['TranscriptionJob'][_0xaf81('0x14')][_0xaf81('0x15')]};logger[_0xaf81('0xa')](util[_0xaf81('0xb')](_0xaf81('0x16'),_0x56497d['id']));return rp({'uri':_0x14d43e['TranscriptionJob']['Transcript']['TranscriptFileUri'],'json':!![]})[_0xaf81('0x17')](function(_0x45d102){logger[_0xaf81('0xa')](util[_0xaf81('0xb')](_0xaf81('0x18'),_0x56497d['id']));if(_0x45d102&&_0x45d102[_0xaf81('0x19')]&&_0x45d102[_0xaf81('0x19')][_0xaf81('0x1a')]&&_0x45d102[_0xaf81('0x19')]['transcripts'][_0xaf81('0x1b')]){_0x3912de[_0xaf81('0x12')]='';for(var _0x4d7f7a=0x0;_0x4d7f7a<_0x45d102['results']['transcripts'][_0xaf81('0x1b')];_0x4d7f7a++){_0x3912de[_0xaf81('0x12')]+=_0x45d102[_0xaf81('0x19')][_0xaf81('0x1a')][_0x4d7f7a][_0xaf81('0x1c')]+'';}}return _0x56497d[_0xaf81('0x1d')](_0x3912de);})[_0xaf81('0x17')](function(){logger[_0xaf81('0xa')](util[_0xaf81('0xb')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x56497d['id']));if(!_0x56497d[_0xaf81('0x1e')]){throw new db[(_0xaf81('0x1f'))][(_0xaf81('0x20'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x2ecd06[_0xaf81('0x21')]||!_0x2ecd06[_0xaf81('0x22')]||!_0x2ecd06[_0xaf81('0x23')]||!_0x2ecd06[_0xaf81('0x24')]||!_0x2ecd06[_0xaf81('0x25')]){throw new db['Sequelize'][(_0xaf81('0x20'))](_0xaf81('0x26'));}if(!_0x3912de[_0xaf81('0x12')]){throw new Error(_0xaf81('0x27'));}if(_0x2ecd06[_0xaf81('0x22')]===_0x327517['id']){return _0x327517;}else{return db[_0xaf81('0x28')][_0xaf81('0x29')]({'where':{'id':_settings[_0xaf81('0x22')]}});}})[_0xaf81('0x17')](function(_0x207058){if(!_0x207058){throw new db['Sequelize'][(_0xaf81('0x20'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x207058[_0xaf81('0xe')]||!_0x207058['data2']){throw new db['Sequelize'][(_0xaf81('0x20'))]('Cloud\x20Provider\x20not\x20configured');}_0x2b62dd=_0x207058;logger[_0xaf81('0xa')](util['format'](_0xaf81('0x2a'),_0x56497d['id']));return sentiment(_0x2b62dd['data1'],_0x2b62dd[_0xaf81('0x2b')],_0x2ecd06[_0xaf81('0x23')],_0x3912de[_0xaf81('0x12')],_0x2ecd06[_0xaf81('0x24')]);})[_0xaf81('0x17')](function(_0x3c51d2){logger[_0xaf81('0xa')](util[_0xaf81('0xb')](_0xaf81('0x2c'),_0x56497d['id']));return _0x56497d['update']({'sentiment':_0x3c51d2[_0xaf81('0x2d')],'sPositive':_0x3c51d2[_0xaf81('0x2e')][_0xaf81('0x2f')],'sNegative':_0x3c51d2['SentimentScore'][_0xaf81('0x30')],'sMixed':_0x3c51d2[_0xaf81('0x2e')][_0xaf81('0x31')],'sNeutral':_0x3c51d2[_0xaf81('0x2e')]['Neutral']});})['then'](function(){logger[_0xaf81('0xa')](util[_0xaf81('0xb')](_0xaf81('0x32'),_0x56497d['id']));_0x3f6fbd();});case'FAILED':return _0x56497d[_0xaf81('0x1d')]({'transcribeStatus':_0xaf81('0x33'),'failureReason':_0x14d43e[_0xaf81('0x10')][_0xaf81('0x34')]})[_0xaf81('0x17')](function(){logger[_0xaf81('0xa')](util[_0xaf81('0xb')](_0xaf81('0x32'),_0x56497d['id']));_0x3f6fbd();});default:logger[_0xaf81('0xa')](util[_0xaf81('0xb')](_0xaf81('0x35'),_0x56497d['id']));break;}}else{return BPromise[_0xaf81('0x36')]()[_0xaf81('0x17')](function(){if(!_0x56497d[_0xaf81('0x1e')]){throw new db['Sequelize']['ValidationError'](_0xaf81('0x37'));}if(!_0x2ecd06[_0xaf81('0x21')]||!_0x2ecd06[_0xaf81('0x22')]||!_0x2ecd06['sentimentRegion']||!_0x2ecd06['language']||!_0x2ecd06[_0xaf81('0x25')]){throw new db['Sequelize'][(_0xaf81('0x20'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x56497d['fileText']){throw new Error('Transcript\x20not\x20available');}if(_0x2ecd06['sentimentAccountId']===_0x327517['id']){return _0x327517;}else{return db[_0xaf81('0x28')][_0xaf81('0x29')]({'where':{'id':_settings[_0xaf81('0x22')]}});}})[_0xaf81('0x17')](function(_0x425dd1){if(!_0x425dd1){throw new db[(_0xaf81('0x1f'))]['ValidationError'](_0xaf81('0x38'));}if(!_0x425dd1[_0xaf81('0xe')]||!_0x425dd1[_0xaf81('0x2b')]){throw new db['Sequelize'][(_0xaf81('0x20'))](_0xaf81('0x39'));}_0x2b62dd=_0x425dd1;logger[_0xaf81('0xa')](util[_0xaf81('0xb')](_0xaf81('0x2a'),_0x56497d['id']));return sentiment(_0x2b62dd[_0xaf81('0xe')],_0x2b62dd[_0xaf81('0x2b')],_0x2ecd06[_0xaf81('0x23')],_0x56497d[_0xaf81('0x12')],_0x2ecd06[_0xaf81('0x24')]);})['then'](function(_0x52bb17){logger['info'](util[_0xaf81('0xb')](_0xaf81('0x2c'),_0x56497d['id']));return _0x56497d[_0xaf81('0x1d')]({'sentiment':_0x52bb17[_0xaf81('0x2d')],'sPositive':_0x52bb17[_0xaf81('0x2e')][_0xaf81('0x2f')],'sNegative':_0x52bb17[_0xaf81('0x2e')]['Negative'],'sMixed':_0x52bb17[_0xaf81('0x2e')][_0xaf81('0x31')],'sNeutral':_0x52bb17[_0xaf81('0x2e')]['Neutral'],'transcribeStatus':'COMPLETED'});})[_0xaf81('0x17')](function(){logger[_0xaf81('0xa')](util[_0xaf81('0xb')](_0xaf81('0x32'),_0x56497d['id']));_0x3f6fbd();});}})[_0xaf81('0x3a')](function(_0xbc5496){if(_0xbc5496){if(!_0xbc5496[_0xaf81('0x3b')]||_0xbc5496[_0xaf81('0x3b')]!==_0xaf81('0x3c')){logger[_0xaf81('0x3d')](util[_0xaf81('0xb')](_0xaf81('0x3e'),_0x56497d['id']),util[_0xaf81('0x3f')](_0xbc5496,{'showHidden':![],'depth':null}));}}_0x3f6fbd();});});}function checkTranscribe(){var _0x485b8c;var _0x53dd8e;var _0x29347b;return db[_0xaf81('0x40')][_0xaf81('0x41')]({'where':{'transcribeStatus':_0xaf81('0x42')}})[_0xaf81('0x17')](function(_0x2a40f7){if(!_0x2a40f7||!_0x2a40f7[_0xaf81('0x1b')]){throw new db[(_0xaf81('0x1f'))][(_0xaf81('0x20'))](_0xaf81('0x43'));}_0x485b8c=_0x2a40f7;return db[_0xaf81('0x44')][_0xaf81('0x29')]({'where':{'id':0x1}});})['then'](function(_0x392ad5){if(!_0x392ad5){throw new db[(_0xaf81('0x1f'))]['ValidationError'](_0xaf81('0x45'));}_0x53dd8e=_0x392ad5;if(!_0x53dd8e[_0xaf81('0x46')]||!_0x53dd8e[_0xaf81('0x47')]||!_0x53dd8e[_0xaf81('0xf')]||!_0x53dd8e['language']||!_0x53dd8e[_0xaf81('0x25')]){throw new db[(_0xaf81('0x1f'))]['ValidationError'](_0xaf81('0x48'));}return db[_0xaf81('0x28')][_0xaf81('0x29')]({'where':{'id':_0x53dd8e['transcribeAccountId']}});})[_0xaf81('0x17')](function(_0x21b27d){if(!_0x21b27d){throw new db[(_0xaf81('0x1f'))][(_0xaf81('0x20'))](_0xaf81('0x38'));}if(!_0x21b27d[_0xaf81('0xe')]||!_0x21b27d['data2']){throw new db[(_0xaf81('0x1f'))][(_0xaf81('0x20'))](_0xaf81('0x39'));}_0x29347b=_0x21b27d;var _0x1ea024=[];_0x485b8c[_0xaf81('0x49')](function(_0x2897f3){_0x1ea024[_0xaf81('0x4a')](checkTranscribeJob(_0x2897f3,_0x53dd8e,_0x29347b));});return BPromise[_0xaf81('0x4b')](_0x1ea024);})['catch'](function(_0x1088ab){if(_0x1088ab){if(!_0x1088ab['name']||_0x1088ab[_0xaf81('0x3b')]!=='SequelizeValidationError'){logger[_0xaf81('0x3d')](util[_0xaf81('0x3f')](_0x1088ab,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0xdac7=['data2','Negative','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Transcribe\x20not\x20configured','transcribeAccountId','forEach','push','all','inspect','start','lodash','aws-sdk','../../mysqldb','../../config/logger','transcribe','TranscribeService','Comprehend','detectSentiment','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','transcribeRegion','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJobStatus','TranscriptionJob','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','fileText','transcript','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','language','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','then','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Mixed','Neutral','update','FailureReason','resolve','bucket','Transcript\x20not\x20available'];(function(_0x266d45,_0x5d3899){var _0x17171e=function(_0x5bac1c){while(--_0x5bac1c){_0x266d45['push'](_0x266d45['shift']());}};_0x17171e(++_0x5d3899);}(_0xdac7,0x180));var _0x7dac=function(_0x47a062,_0xccd2c4){_0x47a062=_0x47a062-0x0;var _0xb223ed=_0xdac7[_0x47a062];return _0xb223ed;};var _=require(_0x7dac('0x0'));var AWS=require(_0x7dac('0x1'));var rp=require('request-promise');var util=require('util');var BPromise=require('bluebird');var db=require(_0x7dac('0x2'))['db'];var logger=require(_0x7dac('0x3'))(_0x7dac('0x4'));function getTranscriptionJob(_0x3c4806,_0x56d2ac,_0x4f55eb,_0x4987d1){return new Promise(function(_0x17a05f,_0x2557ee){var _0x505705=new AWS[(_0x7dac('0x5'))]({'accessKeyId':_0x56d2ac,'secretAccessKey':_0x3c4806,'region':_0x4f55eb});_0x505705['getTranscriptionJob']({'TranscriptionJobName':_0x4987d1},function(_0x3b319f,_0x5ccf75){if(_0x3b319f){return _0x2557ee(_0x3b319f);}else{return _0x17a05f(_0x5ccf75);}});});}function sentiment(_0x8746d9,_0x19eaa4,_0x45fbdc,_0x43f23f,_0x11b680){return new Promise(function(_0x2b552f,_0x27eb87){var _0x41e0db=new AWS[(_0x7dac('0x6'))]({'accessKeyId':_0x19eaa4,'secretAccessKey':_0x8746d9,'region':_0x45fbdc});_0x41e0db[_0x7dac('0x7')]({'Text':_0x43f23f,'LanguageCode':_0x11b680['substring'](0x0,0x2)},function(_0x4e3a47,_0x4d4625){if(_0x4e3a47){return _0x27eb87(_0x4e3a47);}else{return _0x2b552f(_0x4d4625);}});});}function checkTranscribeJob(_0x28f4bc,_0x5dd35a,_0x42fbe3){var _0x4e5e65;return new BPromise(function(_0x2413ee,_0x22e197){logger[_0x7dac('0x8')](util[_0x7dac('0x9')](_0x7dac('0xa'),_0x28f4bc['id'],_0x28f4bc[_0x7dac('0xb')]));return getTranscriptionJob(_0x42fbe3[_0x7dac('0xc')],_0x42fbe3['data2'],_0x5dd35a[_0x7dac('0xd')],_0x28f4bc['transcribeName'])['then'](function(_0x218a2a){logger[_0x7dac('0x8')](util[_0x7dac('0x9')](_0x7dac('0xe'),_0x28f4bc['id'],_0x28f4bc[_0x7dac('0xb')],_0x218a2a['TranscriptionJob'][_0x7dac('0xf')]));if(!_0x28f4bc['fileText']){switch(_0x218a2a[_0x7dac('0x10')][_0x7dac('0xf')]){case _0x7dac('0x11'):var _0x1ddde7={'transcribeStatus':_0x218a2a[_0x7dac('0x10')][_0x7dac('0xf')],'fileUri':_0x218a2a[_0x7dac('0x10')][_0x7dac('0x12')][_0x7dac('0x13')]};logger[_0x7dac('0x8')](util[_0x7dac('0x9')](_0x7dac('0x14'),_0x28f4bc['id']));return rp({'uri':_0x218a2a[_0x7dac('0x10')][_0x7dac('0x12')]['TranscriptFileUri'],'json':!![]})['then'](function(_0x12cd84){logger['info'](util[_0x7dac('0x9')](_0x7dac('0x15'),_0x28f4bc['id']));if(_0x12cd84&&_0x12cd84['results']&&_0x12cd84[_0x7dac('0x16')][_0x7dac('0x17')]&&_0x12cd84['results'][_0x7dac('0x17')][_0x7dac('0x18')]){_0x1ddde7[_0x7dac('0x19')]='';for(var _0x179881=0x0;_0x179881<_0x12cd84[_0x7dac('0x16')][_0x7dac('0x17')][_0x7dac('0x18')];_0x179881++){_0x1ddde7['fileText']+=_0x12cd84[_0x7dac('0x16')][_0x7dac('0x17')][_0x179881][_0x7dac('0x1a')]+'';}}return _0x28f4bc['update'](_0x1ddde7);})['then'](function(){logger[_0x7dac('0x8')](util[_0x7dac('0x9')](_0x7dac('0x1b'),_0x28f4bc['id']));if(!_0x28f4bc[_0x7dac('0x1c')]){throw new db[(_0x7dac('0x1d'))][(_0x7dac('0x1e'))](_0x7dac('0x1f'));}if(!_0x5dd35a[_0x7dac('0x20')]||!_0x5dd35a[_0x7dac('0x21')]||!_0x5dd35a[_0x7dac('0x22')]||!_0x5dd35a[_0x7dac('0x23')]||!_0x5dd35a['bucket']){throw new db['Sequelize'][(_0x7dac('0x1e'))](_0x7dac('0x24'));}if(!_0x1ddde7[_0x7dac('0x19')]){throw new Error('Transcript\x20not\x20available');}if(_0x5dd35a[_0x7dac('0x21')]===_0x42fbe3['id']){return _0x42fbe3;}else{return db[_0x7dac('0x25')][_0x7dac('0x26')]({'where':{'id':_settings[_0x7dac('0x21')]}});}})['then'](function(_0x282e3d){if(!_0x282e3d){throw new db['Sequelize'][(_0x7dac('0x1e'))](_0x7dac('0x27'));}if(!_0x282e3d[_0x7dac('0xc')]||!_0x282e3d['data2']){throw new db[(_0x7dac('0x1d'))][(_0x7dac('0x1e'))](_0x7dac('0x28'));}_0x4e5e65=_0x282e3d;logger[_0x7dac('0x8')](util[_0x7dac('0x9')](_0x7dac('0x29'),_0x28f4bc['id']));return sentiment(_0x4e5e65['data1'],_0x4e5e65['data2'],_0x5dd35a['sentimentRegion'],_0x1ddde7[_0x7dac('0x19')],_0x5dd35a[_0x7dac('0x23')]);})[_0x7dac('0x2a')](function(_0x4ec055){logger[_0x7dac('0x8')](util[_0x7dac('0x9')](_0x7dac('0x2b'),_0x28f4bc['id']));return _0x28f4bc['update']({'sentiment':_0x4ec055[_0x7dac('0x2c')],'sPositive':_0x4ec055[_0x7dac('0x2d')][_0x7dac('0x2e')],'sNegative':_0x4ec055[_0x7dac('0x2d')]['Negative'],'sMixed':_0x4ec055[_0x7dac('0x2d')][_0x7dac('0x2f')],'sNeutral':_0x4ec055[_0x7dac('0x2d')][_0x7dac('0x30')]});})[_0x7dac('0x2a')](function(){logger[_0x7dac('0x8')](util['format'](_0x7dac('0x1b'),_0x28f4bc['id']));_0x2413ee();});case'FAILED':return _0x28f4bc[_0x7dac('0x31')]({'transcribeStatus':'FAILED','failureReason':_0x218a2a[_0x7dac('0x10')][_0x7dac('0x32')]})[_0x7dac('0x2a')](function(){logger[_0x7dac('0x8')](util[_0x7dac('0x9')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x28f4bc['id']));_0x2413ee();});default:logger['info'](util[_0x7dac('0x9')]('[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed',_0x28f4bc['id']));break;}}else{return BPromise[_0x7dac('0x33')]()[_0x7dac('0x2a')](function(){if(!_0x28f4bc[_0x7dac('0x1c')]){throw new db[(_0x7dac('0x1d'))][(_0x7dac('0x1e'))](_0x7dac('0x1f'));}if(!_0x5dd35a['sentiment']||!_0x5dd35a['sentimentAccountId']||!_0x5dd35a[_0x7dac('0x22')]||!_0x5dd35a[_0x7dac('0x23')]||!_0x5dd35a[_0x7dac('0x34')]){throw new db[(_0x7dac('0x1d'))][(_0x7dac('0x1e'))](_0x7dac('0x24'));}if(!_0x28f4bc['fileText']){throw new Error(_0x7dac('0x35'));}if(_0x5dd35a[_0x7dac('0x21')]===_0x42fbe3['id']){return _0x42fbe3;}else{return db[_0x7dac('0x25')][_0x7dac('0x26')]({'where':{'id':_settings['sentimentAccountId']}});}})[_0x7dac('0x2a')](function(_0x53e093){if(!_0x53e093){throw new db[(_0x7dac('0x1d'))][(_0x7dac('0x1e'))](_0x7dac('0x27'));}if(!_0x53e093[_0x7dac('0xc')]||!_0x53e093[_0x7dac('0x36')]){throw new db[(_0x7dac('0x1d'))]['ValidationError'](_0x7dac('0x28'));}_0x4e5e65=_0x53e093;logger[_0x7dac('0x8')](util[_0x7dac('0x9')](_0x7dac('0x29'),_0x28f4bc['id']));return sentiment(_0x4e5e65[_0x7dac('0xc')],_0x4e5e65[_0x7dac('0x36')],_0x5dd35a[_0x7dac('0x22')],_0x28f4bc[_0x7dac('0x19')],_0x5dd35a[_0x7dac('0x23')]);})[_0x7dac('0x2a')](function(_0x378bb5){logger['info'](util['format'](_0x7dac('0x2b'),_0x28f4bc['id']));return _0x28f4bc[_0x7dac('0x31')]({'sentiment':_0x378bb5['Sentiment'],'sPositive':_0x378bb5[_0x7dac('0x2d')][_0x7dac('0x2e')],'sNegative':_0x378bb5[_0x7dac('0x2d')][_0x7dac('0x37')],'sMixed':_0x378bb5[_0x7dac('0x2d')]['Mixed'],'sNeutral':_0x378bb5[_0x7dac('0x2d')][_0x7dac('0x30')],'transcribeStatus':'COMPLETED'});})[_0x7dac('0x2a')](function(){logger[_0x7dac('0x8')](util['format'](_0x7dac('0x1b'),_0x28f4bc['id']));_0x2413ee();});}})[_0x7dac('0x38')](function(_0x1d860b){if(_0x1d860b){if(!_0x1d860b[_0x7dac('0x39')]||_0x1d860b[_0x7dac('0x39')]!==_0x7dac('0x3a')){logger[_0x7dac('0x3b')](util[_0x7dac('0x9')](_0x7dac('0x3c'),_0x28f4bc['id']),util['inspect'](_0x1d860b,{'showHidden':![],'depth':null}));}}_0x2413ee();});});}function checkTranscribe(){var _0x2d2c8b;var _0xe61204;var _0x49804d;return db[_0x7dac('0x3d')][_0x7dac('0x3e')]({'where':{'transcribeStatus':_0x7dac('0x3f')}})[_0x7dac('0x2a')](function(_0x3cd7a9){if(!_0x3cd7a9||!_0x3cd7a9[_0x7dac('0x18')]){throw new db[(_0x7dac('0x1d'))][(_0x7dac('0x1e'))](_0x7dac('0x40'));}_0x2d2c8b=_0x3cd7a9;return db[_0x7dac('0x41')][_0x7dac('0x26')]({'where':{'id':0x1}});})[_0x7dac('0x2a')](function(_0x1da157){if(!_0x1da157){throw new db[(_0x7dac('0x1d'))][(_0x7dac('0x1e'))]('Settings\x20not\x20available');}_0xe61204=_0x1da157;if(!_0xe61204[_0x7dac('0x4')]||!_0xe61204['transcribeAccountId']||!_0xe61204[_0x7dac('0xd')]||!_0xe61204[_0x7dac('0x23')]||!_0xe61204['bucket']){throw new db[(_0x7dac('0x1d'))][(_0x7dac('0x1e'))](_0x7dac('0x42'));}return db['CloudProvider'][_0x7dac('0x26')]({'where':{'id':_0xe61204[_0x7dac('0x43')]}});})[_0x7dac('0x2a')](function(_0x33909c){if(!_0x33909c){throw new db[(_0x7dac('0x1d'))]['ValidationError'](_0x7dac('0x27'));}if(!_0x33909c[_0x7dac('0xc')]||!_0x33909c['data2']){throw new db[(_0x7dac('0x1d'))][(_0x7dac('0x1e'))](_0x7dac('0x28'));}_0x49804d=_0x33909c;var _0x5cd59c=[];_0x2d2c8b[_0x7dac('0x44')](function(_0x1d7739){_0x5cd59c[_0x7dac('0x45')](checkTranscribeJob(_0x1d7739,_0xe61204,_0x49804d));});return BPromise[_0x7dac('0x46')](_0x5cd59c);})[_0x7dac('0x38')](function(_0x3b71fb){if(_0x3b71fb){if(!_0x3b71fb[_0x7dac('0x39')]||_0x3b71fb['name']!=='SequelizeValidationError'){logger['error'](util[_0x7dac('0x47')](_0x3b71fb,{'showHidden':![],'depth':null}));}}});}exports[_0x7dac('0x48')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index 799ebf9..eaa720b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9aea=['../../config/environment','../logger','schedule','redis','WhatsappInteraction','findAll','hours','then','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join','update','timeout','format','length','emit','whatsappInteraction:update','catch','error','inspect','start','lodash','ioredis'];(function(_0x147f8e,_0x3d97f2){var _0x64ceb3=function(_0x4c5ed7){while(--_0x4c5ed7){_0x147f8e['push'](_0x147f8e['shift']());}};_0x64ceb3(++_0x3d97f2);}(_0x9aea,0xee));var _0xa9ae=function(_0x5c54cf,_0x3bed51){_0x5c54cf=_0x5c54cf-0x0;var _0x5a43e3=_0x9aea[_0x5c54cf];return _0x5a43e3;};'use strict';var _=require(_0xa9ae('0x0'));var moment=require('moment');var Redis=require(_0xa9ae('0x1'));var util=require('util');var config=require(_0xa9ae('0x2'));var db=require('../../mysqldb')['db'];var logger=require(_0xa9ae('0x3'))(_0xa9ae('0x4'));config[_0xa9ae('0x5')]=_['defaults'](config[_0xa9ae('0x5')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xa9ae('0x5')]));function closeInteractions(){var _0x85257=[];return db[_0xa9ae('0x6')][_0xa9ae('0x7')]({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()['subtract'](0x18,_0xa9ae('0x8'))}}})[_0xa9ae('0x9')](function(_0x31b098){if(_0x31b098&&_0x31b098['length']){_0x85257=_[_0xa9ae('0xa')](_0x31b098||[],'id');logger[_0xa9ae('0xb')](_0xa9ae('0xc'),_0x85257[_0xa9ae('0xd')]());return db['WhatsappInteraction'][_0xa9ae('0xe')]({'closeReason':'system','disposition':_0xa9ae('0xf'),'closed':!![],'closedAt':moment()[_0xa9ae('0x10')]('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0x85257}});}})[_0xa9ae('0x9')](function(){if(_0x85257&&_0x85257['length']){logger[_0xa9ae('0xb')]('[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:',_0x85257['join']());for(var _0x19c152=0x0;_0x19c152<_0x85257[_0xa9ae('0x11')];_0x19c152++){io[_0xa9ae('0x12')](_0xa9ae('0x13'),{'id':_0x85257[_0x19c152],'closed':!![]});}}})[_0xa9ae('0x14')](function(_0x42d2e5){logger[_0xa9ae('0x15')]('[WHATSAPP]\x20Error\x20closing\x20interactions',_0x42d2e5?util[_0xa9ae('0x16')](_0x42d2e5,{'showHidden':![],'depth':null}):'');});}exports[_0xa9ae('0x17')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x2e17=['length','map','[WHATSAPP]\x20Interactions\x20to\x20close:','join','update','timeout','format','YYYY-MM-DD\x20HH:mm:ss','then','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','whatsappInteraction:update','catch','error','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','start','lodash','moment','util','../../mysqldb','../logger','redis','defaults','localhost','WhatsappInteraction','hours'];(function(_0x1c6367,_0x1295c5){var _0x4be9b0=function(_0x1955ba){while(--_0x1955ba){_0x1c6367['push'](_0x1c6367['shift']());}};_0x4be9b0(++_0x1295c5);}(_0x2e17,0x98));var _0x72e1=function(_0x2555d0,_0x4150a6){_0x2555d0=_0x2555d0-0x0;var _0x3bb486=_0x2e17[_0x2555d0];return _0x3bb486;};'use strict';var _=require(_0x72e1('0x0'));var moment=require(_0x72e1('0x1'));var Redis=require('ioredis');var util=require(_0x72e1('0x2'));var config=require('../../config/environment');var db=require(_0x72e1('0x3'))['db'];var logger=require(_0x72e1('0x4'))('schedule');config[_0x72e1('0x5')]=_[_0x72e1('0x6')](config['redis'],{'host':_0x72e1('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x72e1('0x5')]));function closeInteractions(){var _0x2fe2f1=[];return db[_0x72e1('0x8')]['findAll']({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()['subtract'](0x18,_0x72e1('0x9'))}}})['then'](function(_0x256ac9){if(_0x256ac9&&_0x256ac9[_0x72e1('0xa')]){_0x2fe2f1=_[_0x72e1('0xb')](_0x256ac9||[],'id');logger['info'](_0x72e1('0xc'),_0x2fe2f1[_0x72e1('0xd')]());return db[_0x72e1('0x8')][_0x72e1('0xe')]({'closeReason':'system','disposition':_0x72e1('0xf'),'closed':!![],'closedAt':moment()[_0x72e1('0x10')](_0x72e1('0x11'))},{'where':{'id':_0x2fe2f1}});}})[_0x72e1('0x12')](function(){if(_0x2fe2f1&&_0x2fe2f1[_0x72e1('0xa')]){logger['info'](_0x72e1('0x13'),_0x2fe2f1[_0x72e1('0xd')]());for(var _0x381ace=0x0;_0x381ace<_0x2fe2f1[_0x72e1('0xa')];_0x381ace++){io[_0x72e1('0x14')](_0x72e1('0x15'),{'id':_0x2fe2f1[_0x381ace],'closed':!![]});}}})[_0x72e1('0x16')](function(_0x4f7c64){logger[_0x72e1('0x17')](_0x72e1('0x18'),_0x4f7c64?util[_0x72e1('0x19')](_0x4f7c64,{'showHidden':![],'depth':null}):'');});}exports[_0x72e1('0x1a')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 304ba2a..f607491 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7311=['hopper1','contacts2','hopper2','util','../mysqldb','push','Biondo','innocenzo.biondo','now','Innocenzo','@xcally.com','CmContact','destroy','then','bulkCreate','log','finished\x20populating','contacts1','CmHopper'];(function(_0x510ee9,_0x894344){var _0x5bf64f=function(_0x19b423){while(--_0x19b423){_0x510ee9['push'](_0x510ee9['shift']());}};_0x5bf64f(++_0x894344);}(_0x7311,0xae));var _0x1731=function(_0x4f15c6,_0x3eb56a){_0x4f15c6=_0x4f15c6-0x0;var _0x5cd110=_0x7311[_0x4f15c6];return _0x5cd110;};'use strict';var util=require(_0x1731('0x0'));var db=require(_0x1731('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x1731('0x2')]({'id':i,'firstName':'Innocenzo'+i,'lastName':_0x1731('0x3')+i,'phone':0xf879fb460+i,'email':_0x1731('0x4')+i+'@xcally.com'});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper['push']({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x1731('0x5')](),'updatedAt':Date['now']()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x1731('0x2')]({'id':i,'firstName':_0x1731('0x6')+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':_0x1731('0x4')+i+_0x1731('0x7')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x1731('0x2')]({'id':i,'active':![],'scheduledat':Date[_0x1731('0x5')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x1731('0x5')](),'updatedAt':Date[_0x1731('0x5')]()});}db[_0x1731('0x8')][_0x1731('0x9')]({'where':{}})[_0x1731('0xa')](function(){return db[_0x1731('0x8')][_0x1731('0xb')](contacts);})[_0x1731('0xa')](function(){console[_0x1731('0xc')](_0x1731('0xd'),_0x1731('0xe'));return db[_0x1731('0xf')][_0x1731('0x9')]({'where':{}});})[_0x1731('0xa')](function(){return db['CmHopper']['bulkCreate'](hopper);})[_0x1731('0xa')](function(){console[_0x1731('0xc')](_0x1731('0xd'),_0x1731('0x10'));return db['CmContact'][_0x1731('0xb')](contacts2);})['then'](function(){console[_0x1731('0xc')](_0x1731('0xd'),_0x1731('0x11'));return db[_0x1731('0xf')][_0x1731('0xb')](hopper2);})[_0x1731('0xa')](function(){console['log']('finished\x20populating',_0x1731('0x12'));})['catch'](function(_0x21c016){console[_0x1731('0xc')](_0x21c016);});
\ No newline at end of file
+var _0x6d01=['log','contacts1','CmHopper','finished\x20populating','contacts2','catch','../mysqldb','push','Innocenzo','Biondo','innocenzo.biondo','@xcally.com','now','CmContact','destroy','then','bulkCreate'];(function(_0x59da9b,_0x32d178){var _0x3e0b44=function(_0x407cbd){while(--_0x407cbd){_0x59da9b['push'](_0x59da9b['shift']());}};_0x3e0b44(++_0x32d178);}(_0x6d01,0x7d));var _0x16d0=function(_0x139145,_0x4d64da){_0x139145=_0x139145-0x0;var _0xa4fb44=_0x6d01[_0x139145];return _0xa4fb44;};'use strict';var util=require('util');var db=require(_0x16d0('0x0'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x16d0('0x1')]({'id':i,'firstName':_0x16d0('0x2')+i,'lastName':_0x16d0('0x3')+i,'phone':0xf879fb460+i,'email':_0x16d0('0x4')+i+_0x16d0('0x5')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0x16d0('0x1')]({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x16d0('0x6')](),'updatedAt':Date[_0x16d0('0x6')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x16d0('0x1')]({'id':i,'firstName':_0x16d0('0x2')+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':'innocenzo.biondo'+i+_0x16d0('0x5')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x16d0('0x1')]({'id':i,'active':![],'scheduledat':Date[_0x16d0('0x6')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date[_0x16d0('0x6')]()});}db[_0x16d0('0x7')][_0x16d0('0x8')]({'where':{}})[_0x16d0('0x9')](function(){return db['CmContact'][_0x16d0('0xa')](contacts);})[_0x16d0('0x9')](function(){console[_0x16d0('0xb')]('finished\x20populating',_0x16d0('0xc'));return db[_0x16d0('0xd')][_0x16d0('0x8')]({'where':{}});})[_0x16d0('0x9')](function(){return db['CmHopper'][_0x16d0('0xa')](hopper);})[_0x16d0('0x9')](function(){console[_0x16d0('0xb')](_0x16d0('0xe'),'hopper1');return db['CmContact']['bulkCreate'](contacts2);})[_0x16d0('0x9')](function(){console[_0x16d0('0xb')](_0x16d0('0xe'),_0x16d0('0xf'));return db[_0x16d0('0xd')][_0x16d0('0xa')](hopper2);})[_0x16d0('0x9')](function(){console[_0x16d0('0xb')]('finished\x20populating','hopper2');})[_0x16d0('0x10')](function(_0x58767c){console[_0x16d0('0xb')](_0x58767c);});
\ No newline at end of file
index f3cdbd7..fd43979 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b83=['/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','actpass','\x22%s\x22\x20<%s>','bulkCreate','then','add\x20user','log','util','../mysqldb','push','format','%s%s','agent','%s%s@xcally.com','password','friend','wss','ulaw','yes'];(function(_0x433bf8,_0x4b5981){var _0x181b83=function(_0x6007b0){while(--_0x6007b0){_0x433bf8['push'](_0x433bf8['shift']());}};_0x181b83(++_0x4b5981);}(_0x8b83,0x184));var _0x38b8=function(_0x308e27,_0x40c1cf){_0x308e27=_0x308e27-0x0;var _0xde0701=_0x8b83[_0x308e27];return _0xde0701;};'use strict';var util=require(_0x38b8('0x0'));var db=require(_0x38b8('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x38b8('0x2')]({'name':util[_0x38b8('0x3')](_0x38b8('0x4'),_0x38b8('0x5'),i),'fullname':util[_0x38b8('0x3')](_0x38b8('0x4'),_0x38b8('0x5'),i),'email':util[_0x38b8('0x3')](_0x38b8('0x6'),_0x38b8('0x5'),i),'role':_0x38b8('0x5'),'password':_0x38b8('0x7'),'internal':0xfa0+i,'type':_0x38b8('0x8'),'transport':['udp','ws',_0x38b8('0x9')],'disallow':['all'],'allow':[_0x38b8('0xa')],'defaultuser':util[_0x38b8('0x3')](_0x38b8('0x4'),_0x38b8('0x5'),i),'encryption':_0x38b8('0xb'),'avpf':'yes','force_avp':_0x38b8('0xb'),'icesupport':'yes','dtlsenable':'yes','dtlsverify':'no','dtlscertfile':_0x38b8('0xc'),'dtlsprivatekey':_0x38b8('0xd'),'dtlssetup':_0x38b8('0xe'),'callerid':util[_0x38b8('0x3')](_0x38b8('0xf'),util[_0x38b8('0x3')]('%s%s',_0x38b8('0x5'),i),0xfa0+i)});}db['User'][_0x38b8('0x10')](users)[_0x38b8('0x11')](function(){console['log'](_0x38b8('0x12'));})['catch'](function(_0x5d6b11){console[_0x38b8('0x13')](_0x5d6b11);});
\ No newline at end of file
+var _0x4389=['bulkCreate','then','log','add\x20user','util','push','format','%s%s','%s%s@xcally.com','agent','password','friend','all','ulaw','yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','actpass','\x22%s\x22\x20<%s>','User'];(function(_0x58e3ed,_0xbeff77){var _0x4a738c=function(_0x59ffc7){while(--_0x59ffc7){_0x58e3ed['push'](_0x58e3ed['shift']());}};_0x4a738c(++_0xbeff77);}(_0x4389,0x130));var _0x9438=function(_0xd32f21,_0x1c2dfa){_0xd32f21=_0xd32f21-0x0;var _0x153bdc=_0x4389[_0xd32f21];return _0x153bdc;};'use strict';var util=require(_0x9438('0x0'));var db=require('../mysqldb')['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x9438('0x1')]({'name':util[_0x9438('0x2')](_0x9438('0x3'),'agent',i),'fullname':util[_0x9438('0x2')](_0x9438('0x3'),'agent',i),'email':util[_0x9438('0x2')](_0x9438('0x4'),_0x9438('0x5'),i),'role':'agent','password':_0x9438('0x6'),'internal':0xfa0+i,'type':_0x9438('0x7'),'transport':['udp','ws','wss'],'disallow':[_0x9438('0x8')],'allow':[_0x9438('0x9')],'defaultuser':util[_0x9438('0x2')](_0x9438('0x3'),_0x9438('0x5'),i),'encryption':_0x9438('0xa'),'avpf':_0x9438('0xa'),'force_avp':'yes','icesupport':'yes','dtlsenable':_0x9438('0xa'),'dtlsverify':'no','dtlscertfile':_0x9438('0xb'),'dtlsprivatekey':_0x9438('0xc'),'dtlssetup':_0x9438('0xd'),'callerid':util[_0x9438('0x2')](_0x9438('0xe'),util[_0x9438('0x2')](_0x9438('0x3'),_0x9438('0x5'),i),0xfa0+i)});}db[_0x9438('0xf')][_0x9438('0x10')](users)[_0x9438('0x11')](function(){console[_0x9438('0x12')](_0x9438('0x13'));})['catch'](function(_0x504179){console['log'](_0x504179);});
\ No newline at end of file
index 8601288..8ff0309 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8561=['fax','sms','mail','openchannel','whatsapp','telephone:%s','campaign:%s:%s','removeChatInteractions','emit','leave','MailInteractions','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','SmsInteractions','removeSmsInteractions','user_has_sms_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','default','setMaxListeners','connection','remoteAddress','request','remotePort','connectedAt','nsp','disconnect','DISCONNECTED','CONNECTED','util','bluebird','./environment','Agents','name','agent','type','UserProfileSection','findOne','autoAssociation','ChatQueues','FaxQueues','SmsQueues','OpenchannelQueues','WhatsappQueues','Telephones','findAll','Trunks','IvrCampaigns','UserProfileResource','resourceId','then','map','User','telephone','ivr','format','length','user:%s','handshake','query','find','role','userProfileId','ChatInteractions','MailInteraction','FaxInteraction','SmsInteraction','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','VoiceQueues','ChatQueue','MailQueues','Campaign','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all'];(function(_0x46a3e8,_0x2e1b35){var _0xf1442e=function(_0x37b5d4){while(--_0x37b5d4){_0x46a3e8['push'](_0x46a3e8['shift']());}};_0xf1442e(++_0x2e1b35);}(_0x8561,0x1b2));var _0x1856=function(_0xeb67d8,_0x14a337){_0xeb67d8=_0xeb67d8-0x0;var _0x4138f9=_0x8561[_0xeb67d8];return _0x4138f9;};'use strict';var _=require('lodash');var util=require(_0x1856('0x0'));var BPromise=require(_0x1856('0x1'));var db=require('../mysqldb')['db'];var config=require(_0x1856('0x2'));var queryQueues={'attributes':['id','name'],'include':[{'as':_0x1856('0x3'),'model':db['User'],'attributes':['id',_0x1856('0x4'),'role'],'raw':!![],'where':{'role':_0x1856('0x5')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x1856('0x4')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id',_0x1856('0x4')],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id','name',_0x1856('0x6')],'where':{'type':'ivr'}};function getAssociatedResources(_0x4c19c5,_0x5b0930,_0x5c3bc5){return db[_0x1856('0x7')][_0x1856('0x8')]({'where':{'name':_0x4c19c5,'userProfileId':_0x5b0930},'raw':!![]})['then'](function(_0x55fe85){if(_0x55fe85){if(_0x55fe85[_0x1856('0x9')]){switch(_0x4c19c5){case'VoiceQueues':case _0x1856('0xa'):case _0x1856('0xb'):case _0x1856('0xc'):case'MailQueues':case _0x1856('0xd'):case _0x1856('0xe'):return db[_0x5c3bc5]['findAll'](queryQueues);case _0x1856('0xf'):return db[_0x5c3bc5][_0x1856('0x10')](queryTelephones);case _0x1856('0x11'):return db[_0x5c3bc5]['findAll'](queryTrunks);case _0x1856('0x12'):return db[_0x5c3bc5][_0x1856('0x10')](queryCampaigns);}}else{return db[_0x1856('0x13')]['findAll']({'attributes':[_0x1856('0x14')],'where':{'sectionId':_0x55fe85['id']},'raw':!![]})[_0x1856('0x15')](function(_0x12a82f){if(_0x12a82f){var _0x3ff3af={'where':{'id':_[_0x1856('0x16')](_0x12a82f,_0x1856('0x14'))},'raw':!![]};switch(_0x5c3bc5){case _0x1856('0x17'):_0x3ff3af['where']['role']=_0x1856('0x18');break;case'Campaign':_0x3ff3af['where'][_0x1856('0x6')]=_0x1856('0x19');break;}return db[_0x5c3bc5]['findAll'](_0x3ff3af);}else{return[];}});}}else{return[];}})['then'](function(_0x1a12e1){return _0x1a12e1;});}function joinOrLeaveQueues(_0x40d229,_0xd19f62,_0x17ed21,_0x2d4771){_0x40d229[_0xd19f62](util[_0x1856('0x1a')]('%s:queue:%s',_0x17ed21,_0x2d4771[_0x1856('0x4')]));if(_0x2d4771[_0x1856('0x3')]){for(var _0x1dd95d=0x0;_0x1dd95d<_0x2d4771[_0x1856('0x3')][_0x1856('0x1b')];_0x1dd95d+=0x1){_0x40d229[_0xd19f62](util[_0x1856('0x1a')](_0x1856('0x1c'),_0x2d4771['Agents'][_0x1dd95d]['name']));}}}function joinOrLeave(_0x237d8b,_0x31df72,_0x31dc64){var _0x4b867e;if(_0x237d8b[_0x1856('0x1d')][_0x1856('0x1e')]['id']){db[_0x1856('0x17')][_0x1856('0x1f')]({'attributes':['id','name',_0x1856('0x20'),_0x1856('0x21')],'where':{'id':_0x237d8b[_0x1856('0x1d')][_0x1856('0x1e')]['id']},'include':[{'model':db['ChatInteraction'],'as':_0x1856('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0x1856('0x23')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x1856('0x24')],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x1856('0x25')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x1856('0x26')],'as':_0x1856('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0x1856('0x28')],'as':_0x1856('0x29'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x2f3d8f){if(_0x2f3d8f){_0x4b867e=_0x2f3d8f;_0x237d8b[_0x31df72](util[_0x1856('0x1a')](_0x1856('0x1c'),_0x2f3d8f[_0x1856('0x4')]));var _0x3ef572=[];switch(_0x2f3d8f[_0x1856('0x20')]){case'admin':_0x237d8b[_0x31df72](_0x1856('0x2a'));_0x237d8b[_0x31df72](_0x1856('0x2b'));if(queryQueues[_0x1856('0x2c')]('include')){delete queryQueues[_0x1856('0x2d')];}_0x3ef572[_0x1856('0x2e')](db[_0x1856('0x2f')]['findAll'](queryQueues));_0x3ef572[_0x1856('0x2e')](db['ChatQueue'][_0x1856('0x10')](queryQueues));_0x3ef572[_0x1856('0x2e')](db[_0x1856('0x30')][_0x1856('0x10')](queryQueues));_0x3ef572[_0x1856('0x2e')](db[_0x1856('0x31')][_0x1856('0x10')](queryQueues));_0x3ef572['push'](db[_0x1856('0x32')][_0x1856('0x10')](queryQueues));_0x3ef572[_0x1856('0x2e')](db[_0x1856('0x33')][_0x1856('0x10')](queryQueues));_0x3ef572['push'](db[_0x1856('0x34')][_0x1856('0x10')](queryQueues));_0x3ef572[_0x1856('0x2e')](db['User'][_0x1856('0x10')](queryTelephones));_0x3ef572[_0x1856('0x2e')](db[_0x1856('0x35')][_0x1856('0x10')](queryTrunks));_0x3ef572[_0x1856('0x2e')](db['Campaign']['findAll'](queryCampaigns));_0x3ef572['push'](db[_0x1856('0x17')]['findAll'](queryAgents));break;case _0x1856('0x36'):_0x237d8b[_0x31df72](_0x1856('0x2a'));_0x237d8b[_0x31df72]('voice:outbound');_0x3ef572['push'](getAssociatedResources(_0x1856('0x37'),_0x2f3d8f[_0x1856('0x21')],_0x1856('0x2f')));_0x3ef572[_0x1856('0x2e')](getAssociatedResources('ChatQueues',_0x2f3d8f[_0x1856('0x21')],_0x1856('0x38')));_0x3ef572[_0x1856('0x2e')](getAssociatedResources(_0x1856('0xb'),_0x2f3d8f[_0x1856('0x21')],_0x1856('0x30')));_0x3ef572[_0x1856('0x2e')](getAssociatedResources('SmsQueues',_0x2f3d8f[_0x1856('0x21')],_0x1856('0x31')));_0x3ef572['push'](getAssociatedResources(_0x1856('0x39'),_0x2f3d8f[_0x1856('0x21')],'MailQueue'));_0x3ef572['push'](getAssociatedResources(_0x1856('0xd'),_0x2f3d8f[_0x1856('0x21')],_0x1856('0x33')));_0x3ef572[_0x1856('0x2e')](getAssociatedResources(_0x1856('0xe'),_0x2f3d8f[_0x1856('0x21')],'WhatsappQueue'));_0x3ef572[_0x1856('0x2e')](getAssociatedResources('Telephones',_0x2f3d8f[_0x1856('0x21')],_0x1856('0x17')));_0x3ef572['push'](getAssociatedResources(_0x1856('0x11'),_0x2f3d8f[_0x1856('0x21')],_0x1856('0x35')));_0x3ef572[_0x1856('0x2e')](getAssociatedResources(_0x1856('0x12'),_0x2f3d8f[_0x1856('0x21')],_0x1856('0x3a')));_0x3ef572['push'](db['User'][_0x1856('0x10')](queryAgents));break;case'agent':_0x237d8b[_0x31df72]('voice:inbound');_0x237d8b[_0x31df72](_0x1856('0x2b'));_0x3ef572[_0x1856('0x2e')](_0x2f3d8f['getVoiceQueues']({'attributes':['id',_0x1856('0x4')]}));_0x3ef572[_0x1856('0x2e')](_0x2f3d8f[_0x1856('0x3b')]({'attributes':['id',_0x1856('0x4')]}));_0x3ef572[_0x1856('0x2e')](_0x2f3d8f[_0x1856('0x3c')]({'attributes':['id',_0x1856('0x4')]}));_0x3ef572[_0x1856('0x2e')](_0x2f3d8f[_0x1856('0x3d')]({'attributes':['id',_0x1856('0x4')]}));_0x3ef572['push'](_0x2f3d8f[_0x1856('0x3e')]({'attributes':['id',_0x1856('0x4')]}));_0x3ef572[_0x1856('0x2e')](_0x2f3d8f[_0x1856('0x3f')]({'attributes':['id',_0x1856('0x4')]}));_0x3ef572['push'](_0x2f3d8f[_0x1856('0x40')]({'attributes':['id',_0x1856('0x4')]}));break;}return BPromise[_0x1856('0x41')](_0x3ef572);}})[_0x1856('0x15')](function(_0x426ea5){if(_0x426ea5&&_0x426ea5['length']){for(var _0x942900=0x0;_0x942900<_0x426ea5[_0x1856('0x1b')];_0x942900+=0x1){for(var _0x3426ed=0x0;_0x3426ed<_0x426ea5[_0x942900]['length'];_0x3426ed+=0x1){switch(_0x942900){case 0x0:joinOrLeaveQueues(_0x237d8b,_0x31df72,'voice',_0x426ea5[_0x942900][_0x3426ed]);break;case 0x1:joinOrLeaveQueues(_0x237d8b,_0x31df72,'chat',_0x426ea5[_0x942900][_0x3426ed]);break;case 0x2:joinOrLeaveQueues(_0x237d8b,_0x31df72,_0x1856('0x42'),_0x426ea5[_0x942900][_0x3426ed]);break;case 0x3:joinOrLeaveQueues(_0x237d8b,_0x31df72,_0x1856('0x43'),_0x426ea5[_0x942900][_0x3426ed]);break;case 0x4:joinOrLeaveQueues(_0x237d8b,_0x31df72,_0x1856('0x44'),_0x426ea5[_0x942900][_0x3426ed]);break;case 0x5:joinOrLeaveQueues(_0x237d8b,_0x31df72,_0x1856('0x45'),_0x426ea5[_0x942900][_0x3426ed]);break;case 0x6:joinOrLeaveQueues(_0x237d8b,_0x31df72,_0x1856('0x46'),_0x426ea5[_0x942900][_0x3426ed]);break;case 0x7:if(_0x4b867e['role']!==_0x1856('0x5'))_0x237d8b[_0x31df72](util[_0x1856('0x1a')](_0x1856('0x47'),_0x426ea5[_0x942900][_0x3426ed][_0x1856('0x4')]));break;case 0x8:if(_0x4b867e['role']!==_0x1856('0x5'))_0x237d8b[_0x31df72](util[_0x1856('0x1a')]('trunk:%s',_0x426ea5[_0x942900][_0x3426ed][_0x1856('0x4')]));break;case 0x9:if(_0x4b867e[_0x1856('0x20')]!==_0x1856('0x5'))_0x237d8b[_0x31df72](util[_0x1856('0x1a')](_0x1856('0x48'),_0x426ea5[_0x942900][_0x3426ed][_0x1856('0x6')],_0x426ea5[_0x942900][_0x3426ed][_0x1856('0x4')]));break;case 0xa:_0x237d8b[_0x31df72](util[_0x1856('0x1a')]('user:%s',_0x426ea5[_0x942900][_0x3426ed][_0x1856('0x4')]));break;}}}}})['then'](function(){if(_0x31df72==='leave'){var _0xc8def7=_['map'](_0x4b867e[_0x1856('0x22')],'id');return _0x4b867e[_0x1856('0x49')](_0xc8def7)[_0x1856('0x15')](function(){for(var _0x3256ae=0x0;_0x3256ae<_0xc8def7[_0x1856('0x1b')];_0x3256ae+=0x1){_0x31dc64[_0x1856('0x4a')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0xc8def7[_0x3256ae]),'UserId':Number(_0x4b867e['id'])});}});}})[_0x1856('0x15')](function(){if(_0x31df72===_0x1856('0x4b')){var _0x5b3704=_[_0x1856('0x16')](_0x4b867e[_0x1856('0x4c')],'id');return _0x4b867e[_0x1856('0x4d')](_0x5b3704)[_0x1856('0x15')](function(){for(var _0x5beae8=0x0;_0x5beae8<_0x5b3704[_0x1856('0x1b')];_0x5beae8+=0x1){_0x31dc64[_0x1856('0x4a')](_0x1856('0x4e'),{'MailInteractionId':Number(_0x5b3704[_0x5beae8]),'UserId':Number(_0x4b867e['id'])});}});}})[_0x1856('0x15')](function(){if(_0x31df72===_0x1856('0x4b')){var _0x40e2f5=_['map'](_0x4b867e['FaxInteractions'],'id');return _0x4b867e[_0x1856('0x4f')](_0x40e2f5)[_0x1856('0x15')](function(){for(var _0x544d0a=0x0;_0x544d0a<_0x40e2f5[_0x1856('0x1b')];_0x544d0a+=0x1){_0x31dc64[_0x1856('0x4a')](_0x1856('0x50'),{'FaxInteractionId':Number(_0x40e2f5[_0x544d0a]),'UserId':Number(_0x4b867e['id'])});}});}})[_0x1856('0x15')](function(){if(_0x31df72===_0x1856('0x4b')){var _0x593e60=_[_0x1856('0x16')](_0x4b867e[_0x1856('0x51')],'id');return _0x4b867e[_0x1856('0x52')](_0x593e60)[_0x1856('0x15')](function(){for(var _0xec318d=0x0;_0xec318d<_0x593e60[_0x1856('0x1b')];_0xec318d+=0x1){_0x31dc64[_0x1856('0x4a')](_0x1856('0x53'),{'SmsInteractionId':Number(_0x593e60[_0xec318d]),'UserId':Number(_0x4b867e['id'])});}});}})['then'](function(){if(_0x31df72===_0x1856('0x4b')){var _0x24499a=_['map'](_0x4b867e[_0x1856('0x27')],'id');return _0x4b867e['removeOpenchannelInteractions'](_0x24499a)['then'](function(){for(var _0x2301ae=0x0;_0x2301ae<_0x24499a['length'];_0x2301ae+=0x1){_0x31dc64['emit']('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x24499a[_0x2301ae]),'UserId':Number(_0x4b867e['id'])});}});}})[_0x1856('0x15')](function(){if(_0x31df72===_0x1856('0x4b')){var _0x98740a=_[_0x1856('0x16')](_0x4b867e[_0x1856('0x29')],'id');return _0x4b867e[_0x1856('0x54')](_0x98740a)[_0x1856('0x15')](function(){for(var _0x53eee2=0x0;_0x53eee2<_0x98740a[_0x1856('0x1b')];_0x53eee2+=0x1){_0x31dc64[_0x1856('0x4a')](_0x1856('0x55'),{'WhatsappInteractionId':Number(_0x98740a[_0x53eee2]),'UserId':Number(_0x4b867e['id'])});}});}})[_0x1856('0x56')](function(_0x1fe02c){_0x237d8b[_0x1856('0x57')](_0x1fe02c);});}}function onDisconnect(_0x1b9d76,_0x5e553c){joinOrLeave(_0x1b9d76,_0x1856('0x4b'),_0x5e553c);}function onConnect(_0x4b421e){joinOrLeave(_0x4b421e,_0x1856('0x58'));}exports[_0x1856('0x59')]=function(_0x199401){_0x199401['on']('connection',function(_0x54376d){_0x54376d[_0x1856('0x5a')](0x0);_0x54376d['address']=_0x54376d['request'][_0x1856('0x5b')][_0x1856('0x5c')]+':'+_0x54376d[_0x1856('0x5d')][_0x1856('0x5b')][_0x1856('0x5e')];_0x54376d[_0x1856('0x5f')]=new Date();_0x54376d['log']=function(_0x18d5b3){console[_0x1856('0x57')]('SocketIO\x20'+_0x54376d[_0x1856('0x60')]['name']+'['+_0x54376d['address']+']',_0x18d5b3);};_0x54376d['on'](_0x1856('0x61'),function(){onDisconnect(_0x54376d,_0x199401);_0x54376d[_0x1856('0x57')](_0x1856('0x62'));});onConnect(_0x54376d);_0x54376d[_0x1856('0x57')](_0x1856('0x63'));});};
\ No newline at end of file
+var _0x8f25=['chat','fax','sms','mail','openchannel','trunk:%s','campaign:%s:%s','leave','removeChatInteractions','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','emit','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','user_has_openchannel_interactions:remove','user_has_whatsapp_interactions:remove','catch','log','join','connection','remoteAddress','request','remotePort','SocketIO\x20','nsp','address','disconnect','DISCONNECTED','CONNECTED','lodash','util','bluebird','../mysqldb','./environment','name','role','agent','type','ivr','UserProfileSection','findOne','then','autoAssociation','ChatQueues','FaxQueues','SmsQueues','OpenchannelQueues','WhatsappQueues','Telephones','findAll','IvrCampaigns','UserProfileResource','resourceId','map','User','Campaign','where','format','Agents','length','user:%s','handshake','query','find','userProfileId','ChatInteractions','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteractions','admin','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','voice:inbound','VoiceQueues','MailQueues','Trunks','getChatQueues','getSmsQueues','getOpenchannelQueues','getWhatsappQueues','all','voice'];(function(_0x1b8a6c,_0x4c2a5f){var _0x13ec3b=function(_0x53e579){while(--_0x53e579){_0x1b8a6c['push'](_0x1b8a6c['shift']());}};_0x13ec3b(++_0x4c2a5f);}(_0x8f25,0x14b));var _0x58f2=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0x8f25[_0x5bd426];return _0x23a7eb;};'use strict';var _=require(_0x58f2('0x0'));var util=require(_0x58f2('0x1'));var BPromise=require(_0x58f2('0x2'));var db=require(_0x58f2('0x3'))['db'];var config=require(_0x58f2('0x4'));var queryQueues={'attributes':['id',_0x58f2('0x5')],'include':[{'as':'Agents','model':db['User'],'attributes':['id','name',_0x58f2('0x6')],'raw':!![],'where':{'role':_0x58f2('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x58f2('0x5')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0x58f2('0x5')]};var queryAgents={'raw':!![],'attributes':['id',_0x58f2('0x5')],'where':{'role':_0x58f2('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x58f2('0x5'),_0x58f2('0x8')],'where':{'type':_0x58f2('0x9')}};function getAssociatedResources(_0xbe19cb,_0x30feef,_0x4b56c1){return db[_0x58f2('0xa')][_0x58f2('0xb')]({'where':{'name':_0xbe19cb,'userProfileId':_0x30feef},'raw':!![]})[_0x58f2('0xc')](function(_0x4242a6){if(_0x4242a6){if(_0x4242a6[_0x58f2('0xd')]){switch(_0xbe19cb){case'VoiceQueues':case _0x58f2('0xe'):case _0x58f2('0xf'):case _0x58f2('0x10'):case'MailQueues':case _0x58f2('0x11'):case _0x58f2('0x12'):return db[_0x4b56c1]['findAll'](queryQueues);case _0x58f2('0x13'):return db[_0x4b56c1][_0x58f2('0x14')](queryTelephones);case'Trunks':return db[_0x4b56c1][_0x58f2('0x14')](queryTrunks);case _0x58f2('0x15'):return db[_0x4b56c1][_0x58f2('0x14')](queryCampaigns);}}else{return db[_0x58f2('0x16')][_0x58f2('0x14')]({'attributes':[_0x58f2('0x17')],'where':{'sectionId':_0x4242a6['id']},'raw':!![]})[_0x58f2('0xc')](function(_0x1d3f73){if(_0x1d3f73){var _0x371e73={'where':{'id':_[_0x58f2('0x18')](_0x1d3f73,_0x58f2('0x17'))},'raw':!![]};switch(_0x4b56c1){case _0x58f2('0x19'):_0x371e73['where'][_0x58f2('0x6')]='telephone';break;case _0x58f2('0x1a'):_0x371e73[_0x58f2('0x1b')]['type']='ivr';break;}return db[_0x4b56c1]['findAll'](_0x371e73);}else{return[];}});}}else{return[];}})['then'](function(_0x2e6fa1){return _0x2e6fa1;});}function joinOrLeaveQueues(_0x16523e,_0x48ddb2,_0xf66efd,_0x28370e){_0x16523e[_0x48ddb2](util[_0x58f2('0x1c')]('%s:queue:%s',_0xf66efd,_0x28370e[_0x58f2('0x5')]));if(_0x28370e[_0x58f2('0x1d')]){for(var _0x4c537f=0x0;_0x4c537f<_0x28370e[_0x58f2('0x1d')][_0x58f2('0x1e')];_0x4c537f+=0x1){_0x16523e[_0x48ddb2](util['format'](_0x58f2('0x1f'),_0x28370e[_0x58f2('0x1d')][_0x4c537f][_0x58f2('0x5')]));}}}function joinOrLeave(_0x32ff95,_0x16fa72,_0x4084a4){var _0x2e83cf;if(_0x32ff95[_0x58f2('0x20')][_0x58f2('0x21')]['id']){db[_0x58f2('0x19')][_0x58f2('0x22')]({'attributes':['id',_0x58f2('0x5'),_0x58f2('0x6'),_0x58f2('0x23')],'where':{'id':_0x32ff95[_0x58f2('0x20')][_0x58f2('0x21')]['id']},'include':[{'model':db['ChatInteraction'],'as':_0x58f2('0x24'),'attributes':['id'],'raw':!![]},{'model':db['MailInteraction'],'as':_0x58f2('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x58f2('0x26')],'as':_0x58f2('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0x58f2('0x28')],'as':_0x58f2('0x29'),'attributes':['id'],'raw':!![]},{'model':db[_0x58f2('0x2a')],'as':_0x58f2('0x2b'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0x58f2('0x2c'),'attributes':['id'],'raw':!![]}]})[_0x58f2('0xc')](function(_0x4b2b78){if(_0x4b2b78){_0x2e83cf=_0x4b2b78;_0x32ff95[_0x16fa72](util[_0x58f2('0x1c')](_0x58f2('0x1f'),_0x4b2b78[_0x58f2('0x5')]));var _0x48b1f6=[];switch(_0x4b2b78['role']){case _0x58f2('0x2d'):_0x32ff95[_0x16fa72]('voice:inbound');_0x32ff95[_0x16fa72](_0x58f2('0x2e'));if(queryQueues[_0x58f2('0x2f')](_0x58f2('0x30'))){delete queryQueues[_0x58f2('0x30')];}_0x48b1f6[_0x58f2('0x31')](db[_0x58f2('0x32')]['findAll'](queryQueues));_0x48b1f6[_0x58f2('0x31')](db[_0x58f2('0x33')][_0x58f2('0x14')](queryQueues));_0x48b1f6['push'](db[_0x58f2('0x34')][_0x58f2('0x14')](queryQueues));_0x48b1f6['push'](db[_0x58f2('0x35')][_0x58f2('0x14')](queryQueues));_0x48b1f6[_0x58f2('0x31')](db[_0x58f2('0x36')][_0x58f2('0x14')](queryQueues));_0x48b1f6['push'](db[_0x58f2('0x37')][_0x58f2('0x14')](queryQueues));_0x48b1f6[_0x58f2('0x31')](db[_0x58f2('0x38')][_0x58f2('0x14')](queryQueues));_0x48b1f6[_0x58f2('0x31')](db[_0x58f2('0x19')]['findAll'](queryTelephones));_0x48b1f6['push'](db[_0x58f2('0x39')][_0x58f2('0x14')](queryTrunks));_0x48b1f6[_0x58f2('0x31')](db[_0x58f2('0x1a')]['findAll'](queryCampaigns));_0x48b1f6[_0x58f2('0x31')](db['User']['findAll'](queryAgents));break;case _0x58f2('0x3a'):_0x32ff95[_0x16fa72](_0x58f2('0x3b'));_0x32ff95[_0x16fa72]('voice:outbound');_0x48b1f6[_0x58f2('0x31')](getAssociatedResources(_0x58f2('0x3c'),_0x4b2b78[_0x58f2('0x23')],_0x58f2('0x32')));_0x48b1f6[_0x58f2('0x31')](getAssociatedResources(_0x58f2('0xe'),_0x4b2b78[_0x58f2('0x23')],'ChatQueue'));_0x48b1f6[_0x58f2('0x31')](getAssociatedResources('FaxQueues',_0x4b2b78[_0x58f2('0x23')],_0x58f2('0x34')));_0x48b1f6[_0x58f2('0x31')](getAssociatedResources(_0x58f2('0x10'),_0x4b2b78['userProfileId'],_0x58f2('0x35')));_0x48b1f6[_0x58f2('0x31')](getAssociatedResources(_0x58f2('0x3d'),_0x4b2b78[_0x58f2('0x23')],_0x58f2('0x36')));_0x48b1f6[_0x58f2('0x31')](getAssociatedResources(_0x58f2('0x11'),_0x4b2b78[_0x58f2('0x23')],_0x58f2('0x37')));_0x48b1f6[_0x58f2('0x31')](getAssociatedResources('WhatsappQueues',_0x4b2b78['userProfileId'],_0x58f2('0x38')));_0x48b1f6[_0x58f2('0x31')](getAssociatedResources('Telephones',_0x4b2b78[_0x58f2('0x23')],_0x58f2('0x19')));_0x48b1f6[_0x58f2('0x31')](getAssociatedResources(_0x58f2('0x3e'),_0x4b2b78[_0x58f2('0x23')],_0x58f2('0x39')));_0x48b1f6['push'](getAssociatedResources(_0x58f2('0x15'),_0x4b2b78[_0x58f2('0x23')],_0x58f2('0x1a')));_0x48b1f6[_0x58f2('0x31')](db[_0x58f2('0x19')][_0x58f2('0x14')](queryAgents));break;case'agent':_0x32ff95[_0x16fa72](_0x58f2('0x3b'));_0x32ff95[_0x16fa72]('voice:outbound');_0x48b1f6[_0x58f2('0x31')](_0x4b2b78['getVoiceQueues']({'attributes':['id',_0x58f2('0x5')]}));_0x48b1f6[_0x58f2('0x31')](_0x4b2b78[_0x58f2('0x3f')]({'attributes':['id',_0x58f2('0x5')]}));_0x48b1f6['push'](_0x4b2b78['getFaxQueues']({'attributes':['id',_0x58f2('0x5')]}));_0x48b1f6[_0x58f2('0x31')](_0x4b2b78[_0x58f2('0x40')]({'attributes':['id',_0x58f2('0x5')]}));_0x48b1f6['push'](_0x4b2b78['getMailQueues']({'attributes':['id',_0x58f2('0x5')]}));_0x48b1f6[_0x58f2('0x31')](_0x4b2b78[_0x58f2('0x41')]({'attributes':['id',_0x58f2('0x5')]}));_0x48b1f6['push'](_0x4b2b78[_0x58f2('0x42')]({'attributes':['id',_0x58f2('0x5')]}));break;}return BPromise[_0x58f2('0x43')](_0x48b1f6);}})[_0x58f2('0xc')](function(_0x5e151b){if(_0x5e151b&&_0x5e151b[_0x58f2('0x1e')]){for(var _0x1d499b=0x0;_0x1d499b<_0x5e151b[_0x58f2('0x1e')];_0x1d499b+=0x1){for(var _0x537061=0x0;_0x537061<_0x5e151b[_0x1d499b][_0x58f2('0x1e')];_0x537061+=0x1){switch(_0x1d499b){case 0x0:joinOrLeaveQueues(_0x32ff95,_0x16fa72,_0x58f2('0x44'),_0x5e151b[_0x1d499b][_0x537061]);break;case 0x1:joinOrLeaveQueues(_0x32ff95,_0x16fa72,_0x58f2('0x45'),_0x5e151b[_0x1d499b][_0x537061]);break;case 0x2:joinOrLeaveQueues(_0x32ff95,_0x16fa72,_0x58f2('0x46'),_0x5e151b[_0x1d499b][_0x537061]);break;case 0x3:joinOrLeaveQueues(_0x32ff95,_0x16fa72,_0x58f2('0x47'),_0x5e151b[_0x1d499b][_0x537061]);break;case 0x4:joinOrLeaveQueues(_0x32ff95,_0x16fa72,_0x58f2('0x48'),_0x5e151b[_0x1d499b][_0x537061]);break;case 0x5:joinOrLeaveQueues(_0x32ff95,_0x16fa72,_0x58f2('0x49'),_0x5e151b[_0x1d499b][_0x537061]);break;case 0x6:joinOrLeaveQueues(_0x32ff95,_0x16fa72,'whatsapp',_0x5e151b[_0x1d499b][_0x537061]);break;case 0x7:if(_0x2e83cf[_0x58f2('0x6')]!==_0x58f2('0x7'))_0x32ff95[_0x16fa72](util[_0x58f2('0x1c')]('telephone:%s',_0x5e151b[_0x1d499b][_0x537061][_0x58f2('0x5')]));break;case 0x8:if(_0x2e83cf[_0x58f2('0x6')]!==_0x58f2('0x7'))_0x32ff95[_0x16fa72](util['format'](_0x58f2('0x4a'),_0x5e151b[_0x1d499b][_0x537061][_0x58f2('0x5')]));break;case 0x9:if(_0x2e83cf[_0x58f2('0x6')]!==_0x58f2('0x7'))_0x32ff95[_0x16fa72](util[_0x58f2('0x1c')](_0x58f2('0x4b'),_0x5e151b[_0x1d499b][_0x537061]['type'],_0x5e151b[_0x1d499b][_0x537061][_0x58f2('0x5')]));break;case 0xa:_0x32ff95[_0x16fa72](util[_0x58f2('0x1c')](_0x58f2('0x1f'),_0x5e151b[_0x1d499b][_0x537061][_0x58f2('0x5')]));break;}}}}})[_0x58f2('0xc')](function(){if(_0x16fa72===_0x58f2('0x4c')){var _0x5da2ee=_[_0x58f2('0x18')](_0x2e83cf[_0x58f2('0x24')],'id');return _0x2e83cf[_0x58f2('0x4d')](_0x5da2ee)['then'](function(){for(var _0x316f19=0x0;_0x316f19<_0x5da2ee[_0x58f2('0x1e')];_0x316f19+=0x1){_0x4084a4['emit'](_0x58f2('0x4e'),{'ChatInteractionId':Number(_0x5da2ee[_0x316f19]),'UserId':Number(_0x2e83cf['id'])});}});}})[_0x58f2('0xc')](function(){if(_0x16fa72===_0x58f2('0x4c')){var _0x39d15d=_[_0x58f2('0x18')](_0x2e83cf[_0x58f2('0x25')],'id');return _0x2e83cf[_0x58f2('0x4f')](_0x39d15d)['then'](function(){for(var _0x5ace9f=0x0;_0x5ace9f<_0x39d15d[_0x58f2('0x1e')];_0x5ace9f+=0x1){_0x4084a4['emit'](_0x58f2('0x50'),{'MailInteractionId':Number(_0x39d15d[_0x5ace9f]),'UserId':Number(_0x2e83cf['id'])});}});}})['then'](function(){if(_0x16fa72===_0x58f2('0x4c')){var _0x241b79=_['map'](_0x2e83cf[_0x58f2('0x27')],'id');return _0x2e83cf['removeFaxInteractions'](_0x241b79)[_0x58f2('0xc')](function(){for(var _0x110d7b=0x0;_0x110d7b<_0x241b79[_0x58f2('0x1e')];_0x110d7b+=0x1){_0x4084a4[_0x58f2('0x51')](_0x58f2('0x52'),{'FaxInteractionId':Number(_0x241b79[_0x110d7b]),'UserId':Number(_0x2e83cf['id'])});}});}})[_0x58f2('0xc')](function(){if(_0x16fa72===_0x58f2('0x4c')){var _0x544e61=_[_0x58f2('0x18')](_0x2e83cf['SmsInteractions'],'id');return _0x2e83cf[_0x58f2('0x53')](_0x544e61)[_0x58f2('0xc')](function(){for(var _0x4c54ae=0x0;_0x4c54ae<_0x544e61[_0x58f2('0x1e')];_0x4c54ae+=0x1){_0x4084a4[_0x58f2('0x51')](_0x58f2('0x54'),{'SmsInteractionId':Number(_0x544e61[_0x4c54ae]),'UserId':Number(_0x2e83cf['id'])});}});}})[_0x58f2('0xc')](function(){if(_0x16fa72===_0x58f2('0x4c')){var _0x325755=_[_0x58f2('0x18')](_0x2e83cf['OpenchannelInteractions'],'id');return _0x2e83cf['removeOpenchannelInteractions'](_0x325755)[_0x58f2('0xc')](function(){for(var _0x59bfa9=0x0;_0x59bfa9<_0x325755[_0x58f2('0x1e')];_0x59bfa9+=0x1){_0x4084a4[_0x58f2('0x51')](_0x58f2('0x55'),{'OpenchannelInteractionId':Number(_0x325755[_0x59bfa9]),'UserId':Number(_0x2e83cf['id'])});}});}})['then'](function(){if(_0x16fa72===_0x58f2('0x4c')){var _0x550dd9=_['map'](_0x2e83cf[_0x58f2('0x2c')],'id');return _0x2e83cf['removeWhatsappInteractions'](_0x550dd9)[_0x58f2('0xc')](function(){for(var _0x431677=0x0;_0x431677<_0x550dd9[_0x58f2('0x1e')];_0x431677+=0x1){_0x4084a4['emit'](_0x58f2('0x56'),{'WhatsappInteractionId':Number(_0x550dd9[_0x431677]),'UserId':Number(_0x2e83cf['id'])});}});}})[_0x58f2('0x57')](function(_0x371ccb){_0x32ff95[_0x58f2('0x58')](_0x371ccb);});}}function onDisconnect(_0x560e62,_0xcdc1e0){joinOrLeave(_0x560e62,'leave',_0xcdc1e0);}function onConnect(_0x5ccaeb){joinOrLeave(_0x5ccaeb,_0x58f2('0x59'));}exports['default']=function(_0x175f3f){_0x175f3f['on'](_0x58f2('0x5a'),function(_0x3a1418){_0x3a1418['setMaxListeners'](0x0);_0x3a1418['address']=_0x3a1418['request'][_0x58f2('0x5a')][_0x58f2('0x5b')]+':'+_0x3a1418[_0x58f2('0x5c')]['connection'][_0x58f2('0x5d')];_0x3a1418['connectedAt']=new Date();_0x3a1418[_0x58f2('0x58')]=function(_0x50d1ce){console[_0x58f2('0x58')](_0x58f2('0x5e')+_0x3a1418[_0x58f2('0x5f')][_0x58f2('0x5')]+'['+_0x3a1418[_0x58f2('0x60')]+']',_0x50d1ce);};_0x3a1418['on'](_0x58f2('0x61'),function(){onDisconnect(_0x3a1418,_0x175f3f);_0x3a1418[_0x58f2('0x58')](_0x58f2('0x62'));});onConnect(_0x3a1418);_0x3a1418[_0x58f2('0x58')](_0x58f2('0x63'));});};
\ No newline at end of file
index 0b12add..3a2d640 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f65=['motionChannel','event','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','query','Sequelize','contact','find','UserId','fullname','email','internal','interface','format','name','agent','outgoingmessage','opened','QueryTypes','SELECT','changed','closed','User','SIP/%s','default','length','hasOwnProperty','model','hook','callback','toLowerCase','condition','util','../../mysqldb','../logger','triggers','lodash','client','http','ChatInteraction','afterCreate','newinteraction','afterUpdate','closedinteraction','Chat','newmessage','Sms','SmsInteraction','Whatsapp','WhatsappInteraction','Fax','FaxInteraction','FaxMessage','Mail','MailInteraction','substatus','MailMessage','Openchannel','OpenchannelInteraction','request','then','Trigger,\x20%s','error','EventManager','catch','get','channel'];(function(_0x1f008e,_0xb7acf1){var _0x320dc5=function(_0x54b4f4){while(--_0x54b4f4){_0x1f008e['push'](_0x1f008e['shift']());}};_0x320dc5(++_0xb7acf1);}(_0x8f65,0x131));var _0x58f6=function(_0x37373a,_0x1e0a55){_0x37373a=_0x37373a-0x0;var _0x155da6=_0x8f65[_0x37373a];return _0x155da6;};'use strict';var util=require(_0x58f6('0x0'));var db=require(_0x58f6('0x1'))['db'];var jayson=require('jayson/promise');var logger=require(_0x58f6('0x2'))(_0x58f6('0x3'));var _=require(_0x58f6('0x4'));var client=jayson[_0x58f6('0x5')][_0x58f6('0x6')]({'port':0x232a});var triggers=[{'channel':'Chat','model':_0x58f6('0x7'),'event':_0x58f6('0x8'),'condition':_0x58f6('0x9'),'callback':afterCreate},{'channel':'Chat','model':'ChatInteraction','event':_0x58f6('0xa'),'condition':_0x58f6('0xb'),'callback':afterUpdate},{'channel':_0x58f6('0xc'),'model':'ChatMessage','event':_0x58f6('0x8'),'condition':_0x58f6('0xd'),'callback':afterCreateMessage},{'channel':_0x58f6('0xe'),'model':_0x58f6('0xf'),'event':'afterCreate','condition':'newinteraction','callback':afterCreate},{'channel':_0x58f6('0xe'),'model':_0x58f6('0xf'),'event':_0x58f6('0xa'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x58f6('0xe'),'model':'SmsMessage','event':_0x58f6('0x8'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0x58f6('0x10'),'model':'WhatsappInteraction','event':'afterCreate','condition':_0x58f6('0x9'),'callback':afterCreate},{'channel':_0x58f6('0x10'),'model':_0x58f6('0x11'),'event':_0x58f6('0xa'),'condition':_0x58f6('0xb'),'callback':afterUpdate},{'channel':_0x58f6('0x10'),'model':'WhatsappMessage','event':_0x58f6('0x8'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0x58f6('0x12'),'model':_0x58f6('0x13'),'event':_0x58f6('0x8'),'condition':_0x58f6('0x9'),'callback':afterCreate},{'channel':_0x58f6('0x12'),'model':_0x58f6('0x13'),'event':_0x58f6('0xa'),'condition':_0x58f6('0xb'),'callback':afterUpdate},{'channel':_0x58f6('0x12'),'model':_0x58f6('0x14'),'event':'afterCreate','condition':_0x58f6('0xd'),'callback':afterCreateMessage},{'channel':_0x58f6('0x15'),'model':_0x58f6('0x16'),'event':'afterCreate','condition':_0x58f6('0x9'),'callback':afterCreate},{'channel':_0x58f6('0x15'),'model':_0x58f6('0x16'),'event':_0x58f6('0xa'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x58f6('0x15'),'model':_0x58f6('0x16'),'event':_0x58f6('0x17'),'condition':_0x58f6('0x17'),'callback':afterUpdate},{'channel':_0x58f6('0x15'),'model':_0x58f6('0x18'),'event':'afterCreate','condition':'newmessage','callback':afterCreateMessage},{'channel':_0x58f6('0x19'),'model':_0x58f6('0x1a'),'event':_0x58f6('0x8'),'condition':_0x58f6('0x9'),'callback':afterCreate},{'channel':_0x58f6('0x19'),'model':'OpenchannelInteraction','event':_0x58f6('0xa'),'condition':_0x58f6('0xb'),'callback':afterUpdate},{'channel':_0x58f6('0x19'),'model':'OpenchannelMessage','event':'afterCreate','condition':_0x58f6('0xd'),'callback':afterCreateMessage}];function request(_0x511ad3){return client[_0x58f6('0x1b')]('EventManager',_0x511ad3)[_0x58f6('0x1c')](function(_0x24659d){logger['info'](_0x58f6('0x1d'),'EventManager',_0x24659d);if(_0x24659d[_0x58f6('0x1e')]){if(_0x24659d[_0x58f6('0x1e')]['code']===0x1f4){logger[_0x58f6('0x1e')](_0x58f6('0x1d'),_0x58f6('0x1f'),_0x24659d[_0x58f6('0x1e')]);}}})[_0x58f6('0x20')](function(_0x742281){logger[_0x58f6('0x1e')](_0x58f6('0x1d'),_0x58f6('0x1f'),_0x742281);});}function afterCreateMessage(_0x1b7c11,_0x19524d){return function(_0x503813,_0x33a56e){_0x503813=_0x503813[_0x58f6('0x21')]({'plain':!![]});_0x503813[_0x58f6('0x22')]=_0x1b7c11;_0x503813[_0x58f6('0x23')]=_0x1b7c11;_0x503813[_0x58f6('0x24')]=_0x503813['direction'];var _0x38b2f6=_0x58f6('0x25')+_0x503813[_0x58f6('0x26')];return db[_0x58f6('0x27')][_0x58f6('0x28')](_0x38b2f6,{'type':db[_0x58f6('0x29')]['QueryTypes']['SELECT'],'raw':!![]})['then'](function(_0x159c18){return _0x159c18;})[_0x58f6('0x1c')](function(_0x24e74e){if(_0x24e74e){_0x503813[_0x58f6('0x2a')]=_0x24e74e[0x0];}if(_0x503813['UserId']){return db['User'][_0x58f6('0x2b')]({'where':{'id':_0x503813[_0x58f6('0x2c')]},'attributes':['id','name',_0x58f6('0x2d'),_0x58f6('0x2e'),_0x58f6('0x2f')],'raw':!![]})['then'](function(_0x305deb){_0x503813[_0x58f6('0x30')]=util[_0x58f6('0x31')]('SIP/%s',_0x305deb[_0x58f6('0x32')]);_0x503813['channel']=_0x1b7c11;_0x503813[_0x58f6('0x33')]=_0x305deb;return request({'event':'incomingmessage','message':_0x503813});})[_0x58f6('0x20')](function(_0xe1ea71){console[_0x58f6('0x1e')](_0xe1ea71);});}else{return request({'event':_0x58f6('0x34'),'message':_0x503813});}});};}function afterCreate(_0x18352f,_0x3164de){return function(_0x16f460,_0x43735c){_0x16f460=_0x16f460[_0x58f6('0x21')]({'plain':!![]});_0x16f460[_0x58f6('0x22')]=_0x18352f;_0x16f460[_0x58f6('0x23')]=_0x18352f;_0x16f460['event']=_0x58f6('0x35');var _0xf2e38a=_0x58f6('0x25')+_0x16f460['ContactId'];return db[_0x58f6('0x27')][_0x58f6('0x28')](_0xf2e38a,{'type':db[_0x58f6('0x29')][_0x58f6('0x36')][_0x58f6('0x37')],'raw':!![]})[_0x58f6('0x1c')](function(_0x2ad9aa){return _0x2ad9aa;})[_0x58f6('0x1c')](function(_0x5df8e7){if(_0x5df8e7){_0x16f460[_0x58f6('0x2a')]=_0x5df8e7[0x0];}return request({'event':_0x3164de,'message':_0x16f460});});};}function afterUpdate(_0x3fee59,_0x5a7316){return function(_0x1d78bf,_0x3a775c){if(_0x1d78bf[_0x58f6('0x38')]('closed')&&_0x1d78bf[_0x58f6('0x39')]){_0x1d78bf=_0x1d78bf[_0x58f6('0x21')]({'plain':!![]});_0x1d78bf[_0x58f6('0x22')]=_0x3fee59;_0x1d78bf[_0x58f6('0x23')]=_0x3fee59;_0x1d78bf[_0x58f6('0x24')]=_0x58f6('0x39');var _0x50b8ee='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x1d78bf['ContactId'];return db[_0x58f6('0x27')][_0x58f6('0x28')](_0x50b8ee,{'type':db[_0x58f6('0x29')]['QueryTypes']['SELECT'],'raw':!![]})[_0x58f6('0x1c')](function(_0x469fd6){return _0x469fd6;})[_0x58f6('0x1c')](function(_0x334f05){if(_0x334f05){_0x1d78bf['contact']=_0x334f05[0x0];}if(_0x1d78bf['UserId']){return db[_0x58f6('0x3a')][_0x58f6('0x2b')]({'where':{'id':_0x1d78bf['UserId']},'attributes':['id',_0x58f6('0x32'),_0x58f6('0x2d'),'email',_0x58f6('0x2f')],'raw':!![]})[_0x58f6('0x1c')](function(_0x1955de){_0x1d78bf[_0x58f6('0x30')]=util[_0x58f6('0x31')](_0x58f6('0x3b'),_0x1955de[_0x58f6('0x32')]);_0x1d78bf[_0x58f6('0x33')]=_0x1955de;return request({'event':_0x5a7316,'message':_0x1d78bf});})[_0x58f6('0x20')](function(_0x207a28){console[_0x58f6('0x1e')](_0x207a28);});}else{return request({'event':_0x5a7316,'message':_0x1d78bf});}});}else if(_0x1d78bf['changed'](_0x58f6('0x17'))){_0x1d78bf=_0x1d78bf[_0x58f6('0x21')]({'plain':!![]});_0x1d78bf[_0x58f6('0x22')]=_0x3fee59;_0x1d78bf['event']=_0x58f6('0x17');var _0x50b8ee='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x1d78bf[_0x58f6('0x26')];return db[_0x58f6('0x27')][_0x58f6('0x28')](_0x50b8ee,{'type':db['Sequelize']['QueryTypes'][_0x58f6('0x37')],'raw':!![]})[_0x58f6('0x1c')](function(_0x43be8a){return _0x43be8a;})[_0x58f6('0x1c')](function(_0xaeffe){if(_0xaeffe){_0x1d78bf[_0x58f6('0x2a')]=_0xaeffe[0x0];}if(_0x1d78bf['UserId']){return db[_0x58f6('0x3a')][_0x58f6('0x2b')]({'where':{'id':_0x1d78bf['UserId']},'attributes':['id',_0x58f6('0x32'),'fullname',_0x58f6('0x2e'),'internal'],'raw':!![]})[_0x58f6('0x1c')](function(_0x12e5d7){_0x1d78bf[_0x58f6('0x30')]=util[_0x58f6('0x31')](_0x58f6('0x3b'),_0x12e5d7['name']);_0x1d78bf['agent']=_0x12e5d7;return request({'event':_0x5a7316,'message':_0x1d78bf});})['catch'](function(_0x6bba76){console[_0x58f6('0x1e')](_0x6bba76);});}else{return request({'event':_0x5a7316,'message':_0x1d78bf});}});}};}exports[_0x58f6('0x3c')]=function(){for(var _0x3a91e2=0x0;_0x3a91e2<triggers[_0x58f6('0x3d')];_0x3a91e2+=0x1){if(db[_0x58f6('0x3e')](triggers[_0x3a91e2][_0x58f6('0x3f')])){db[triggers[_0x3a91e2][_0x58f6('0x3f')]][_0x58f6('0x40')](triggers[_0x3a91e2][_0x58f6('0x24')],triggers[_0x3a91e2][_0x58f6('0x41')](triggers[_0x3a91e2][_0x58f6('0x22')][_0x58f6('0x42')](),triggers[_0x3a91e2][_0x58f6('0x43')]));}}};
\ No newline at end of file
+var _0x1070=['MailInteraction','MailMessage','Openchannel','OpenchannelInteraction','request','EventManager','then','info','Trigger,\x20%s','error','catch','channel','event','direction','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','query','Sequelize','QueryTypes','SELECT','contact','UserId','User','find','name','fullname','email','format','SIP/%s','agent','incomingmessage','get','changed','closed','internal','interface','length','model','callback','condition','../../mysqldb','jayson/promise','../logger','triggers','lodash','client','http','Chat','ChatInteraction','afterCreate','ChatMessage','Sms','SmsInteraction','newinteraction','afterUpdate','closedinteraction','newmessage','Whatsapp','WhatsappInteraction','Fax','FaxInteraction','FaxMessage','Mail'];(function(_0xd09668,_0x1435b2){var _0x68726=function(_0x54a030){while(--_0x54a030){_0xd09668['push'](_0xd09668['shift']());}};_0x68726(++_0x1435b2);}(_0x1070,0x1a9));var _0x0107=function(_0x2f7a08,_0x13e677){_0x2f7a08=_0x2f7a08-0x0;var _0x48edf1=_0x1070[_0x2f7a08];return _0x48edf1;};'use strict';var util=require('util');var db=require(_0x0107('0x0'))['db'];var jayson=require(_0x0107('0x1'));var logger=require(_0x0107('0x2'))(_0x0107('0x3'));var _=require(_0x0107('0x4'));var client=jayson[_0x0107('0x5')][_0x0107('0x6')]({'port':0x232a});var triggers=[{'channel':_0x0107('0x7'),'model':_0x0107('0x8'),'event':_0x0107('0x9'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x0107('0x7'),'model':_0x0107('0x8'),'event':'afterUpdate','condition':'closedinteraction','callback':afterUpdate},{'channel':_0x0107('0x7'),'model':_0x0107('0xa'),'event':_0x0107('0x9'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0x0107('0xb'),'model':_0x0107('0xc'),'event':_0x0107('0x9'),'condition':_0x0107('0xd'),'callback':afterCreate},{'channel':_0x0107('0xb'),'model':_0x0107('0xc'),'event':_0x0107('0xe'),'condition':_0x0107('0xf'),'callback':afterUpdate},{'channel':_0x0107('0xb'),'model':'SmsMessage','event':'afterCreate','condition':_0x0107('0x10'),'callback':afterCreateMessage},{'channel':_0x0107('0x11'),'model':_0x0107('0x12'),'event':_0x0107('0x9'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x0107('0x11'),'model':_0x0107('0x12'),'event':_0x0107('0xe'),'condition':_0x0107('0xf'),'callback':afterUpdate},{'channel':_0x0107('0x11'),'model':'WhatsappMessage','event':_0x0107('0x9'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0x0107('0x13'),'model':'FaxInteraction','event':_0x0107('0x9'),'condition':_0x0107('0xd'),'callback':afterCreate},{'channel':_0x0107('0x13'),'model':_0x0107('0x14'),'event':_0x0107('0xe'),'condition':_0x0107('0xf'),'callback':afterUpdate},{'channel':_0x0107('0x13'),'model':_0x0107('0x15'),'event':_0x0107('0x9'),'condition':_0x0107('0x10'),'callback':afterCreateMessage},{'channel':_0x0107('0x16'),'model':_0x0107('0x17'),'event':_0x0107('0x9'),'condition':_0x0107('0xd'),'callback':afterCreate},{'channel':_0x0107('0x16'),'model':'MailInteraction','event':_0x0107('0xe'),'condition':_0x0107('0xf'),'callback':afterUpdate},{'channel':_0x0107('0x16'),'model':_0x0107('0x18'),'event':_0x0107('0x9'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0x0107('0x19'),'model':_0x0107('0x1a'),'event':_0x0107('0x9'),'condition':_0x0107('0xd'),'callback':afterCreate},{'channel':_0x0107('0x19'),'model':'OpenchannelInteraction','event':'afterUpdate','condition':_0x0107('0xf'),'callback':afterUpdate},{'channel':_0x0107('0x19'),'model':'OpenchannelMessage','event':_0x0107('0x9'),'condition':_0x0107('0x10'),'callback':afterCreateMessage}];function request(_0x28e5c1){return client[_0x0107('0x1b')](_0x0107('0x1c'),_0x28e5c1)[_0x0107('0x1d')](function(_0x40cd82){logger[_0x0107('0x1e')](_0x0107('0x1f'),'EventManager',_0x40cd82);if(_0x40cd82[_0x0107('0x20')]){if(_0x40cd82['error']['code']===0x1f4){logger[_0x0107('0x20')](_0x0107('0x1f'),_0x0107('0x1c'),_0x40cd82[_0x0107('0x20')]);}}})[_0x0107('0x21')](function(_0x411b6c){logger[_0x0107('0x20')](_0x0107('0x1f'),_0x0107('0x1c'),_0x411b6c);});}function afterCreateMessage(_0xa83d51,_0x5f474b){return function(_0x41277c,_0x1321f4){_0x41277c=_0x41277c['get']({'plain':!![]});_0x41277c[_0x0107('0x22')]=_0xa83d51;_0x41277c[_0x0107('0x23')]=_0x41277c[_0x0107('0x24')];var _0x2ec9b6=_0x0107('0x25')+_0x41277c[_0x0107('0x26')];return db[_0x0107('0x27')][_0x0107('0x28')](_0x2ec9b6,{'type':db[_0x0107('0x29')][_0x0107('0x2a')][_0x0107('0x2b')],'raw':!![]})[_0x0107('0x1d')](function(_0x5bdbd4){return _0x5bdbd4;})[_0x0107('0x1d')](function(_0x426ba6){if(_0x426ba6){_0x41277c[_0x0107('0x2c')]=_0x426ba6[0x0];}if(_0x41277c[_0x0107('0x2d')]){return db[_0x0107('0x2e')][_0x0107('0x2f')]({'where':{'id':_0x41277c[_0x0107('0x2d')]},'attributes':['id',_0x0107('0x30'),_0x0107('0x31'),_0x0107('0x32'),'internal'],'raw':!![]})['then'](function(_0x31bc50){_0x41277c['interface']=util[_0x0107('0x33')](_0x0107('0x34'),_0x31bc50['name']);_0x41277c[_0x0107('0x22')]=_0xa83d51;_0x41277c[_0x0107('0x35')]=_0x31bc50;return request({'event':_0x0107('0x36'),'message':_0x41277c});})[_0x0107('0x21')](function(_0x4240bd){console[_0x0107('0x20')](_0x4240bd);});}else{return request({'event':'outgoingmessage','message':_0x41277c});}});};}function afterCreate(_0x1c49d3,_0x2079ba){return function(_0x1f8615,_0x4a88b5){_0x1f8615=_0x1f8615[_0x0107('0x37')]({'plain':!![]});_0x1f8615[_0x0107('0x22')]=_0x1c49d3;_0x1f8615[_0x0107('0x23')]='opened';var _0x42a053=_0x0107('0x25')+_0x1f8615[_0x0107('0x26')];return db['sequelize']['query'](_0x42a053,{'type':db[_0x0107('0x29')][_0x0107('0x2a')]['SELECT'],'raw':!![]})[_0x0107('0x1d')](function(_0x5cfb5d){return _0x5cfb5d;})[_0x0107('0x1d')](function(_0x80e7fa){if(_0x80e7fa){_0x1f8615['contact']=_0x80e7fa[0x0];}return request({'event':_0x2079ba,'message':_0x1f8615});});};}function afterUpdate(_0x9331fd,_0x51a8db){return function(_0x4e6deb,_0x388e11){if(_0x4e6deb[_0x0107('0x38')]('closed')&&_0x4e6deb[_0x0107('0x39')]){_0x4e6deb=_0x4e6deb['get']({'plain':!![]});_0x4e6deb['channel']=_0x9331fd;_0x4e6deb[_0x0107('0x23')]='closed';var _0x1621a5=_0x0107('0x25')+_0x4e6deb[_0x0107('0x26')];return db[_0x0107('0x27')][_0x0107('0x28')](_0x1621a5,{'type':db[_0x0107('0x29')][_0x0107('0x2a')]['SELECT'],'raw':!![]})['then'](function(_0x4dc01c){return _0x4dc01c;})[_0x0107('0x1d')](function(_0x4f5500){if(_0x4f5500){_0x4e6deb[_0x0107('0x2c')]=_0x4f5500[0x0];}if(_0x4e6deb[_0x0107('0x2d')]){return db['User']['find']({'where':{'id':_0x4e6deb[_0x0107('0x2d')]},'attributes':['id','name','fullname','email',_0x0107('0x3a')],'raw':!![]})[_0x0107('0x1d')](function(_0x385929){_0x4e6deb[_0x0107('0x3b')]=util[_0x0107('0x33')](_0x0107('0x34'),_0x385929[_0x0107('0x30')]);_0x4e6deb[_0x0107('0x35')]=_0x385929;return request({'event':_0x51a8db,'message':_0x4e6deb});})[_0x0107('0x21')](function(_0x50b8f9){console['error'](_0x50b8f9);});}else{return request({'event':_0x51a8db,'message':_0x4e6deb});}});}};}exports['default']=function(){for(var _0x40df30=0x0;_0x40df30<triggers[_0x0107('0x3c')];_0x40df30+=0x1){if(db['hasOwnProperty'](triggers[_0x40df30][_0x0107('0x3d')])){db[triggers[_0x40df30][_0x0107('0x3d')]]['hook'](triggers[_0x40df30]['event'],triggers[_0x40df30][_0x0107('0x3e')](triggers[_0x40df30]['channel']['toLowerCase'](),triggers[_0x40df30][_0x0107('0x3f')]));}}};
\ No newline at end of file
index c1282bd..6c52aaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9613=['updateAttributes','getLicense','agent','User','then','agents','Maximum\x20login\x20has\x20been\x20reached','catch','lodash','bluebird','../mysqldb','./license/util','mail','chat','fax','sms','whatsapp','isValidChannel','toLowerCase','clearBlockUser','isUndefined'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0x9613,0x16d));var _0x3961=function(_0x280d83,_0x44b1f9){_0x280d83=_0x280d83-0x0;var _0x10d72f=_0x9613[_0x280d83];return _0x10d72f;};'use strict';var _=require(_0x3961('0x0'));var BPromise=require(_0x3961('0x1'));var db=require(_0x3961('0x2'))['db'];var util=require(_0x3961('0x3'));var channels=['voice',_0x3961('0x4'),_0x3961('0x5'),_0x3961('0x6'),_0x3961('0x7'),_0x3961('0x8'),'openchannel'];exports['getChannels']=function(){return channels;};exports[_0x3961('0x9')]=function(_0x44bc97){_0x44bc97=_0x44bc97[_0x3961('0xa')]();return _['includes'](channels,_0x44bc97);};exports[_0x3961('0xb')]=function(_0x985fb6,_0x200f76,_0x2d01d7,_0x1a2815){var _0x3158a8={'loginAttempts':_0x200f76,'blocked':_0x2d01d7};if(!_[_0x3961('0xc')](_0x1a2815)){_0x3158a8['blockedAt']=_0x1a2815;}return _0x985fb6[_0x3961('0xd')](_0x3158a8);};exports[_0x3961('0xe')]=function(_0x2aa6ce){return new BPromise(function(_0x151de5,_0x5a9d0a){var _0x4bc549=0x0;if(_0x2aa6ce['role']!==_0x3961('0xf')){_0x151de5(_0x2aa6ce);}db[_0x3961('0x10')]['count']({'where':{'role':_0x3961('0xf'),'online':!![],'id':{'$ne':_0x2aa6ce['id']}}})[_0x3961('0x11')](function(_0x4e82dc){_0x4bc549=_0x4e82dc;return util[_0x3961('0xe')]();})[_0x3961('0x11')](function(_0x2e8bd5){if(_0x2e8bd5&&_0x2e8bd5[_0x3961('0x12')]&&_0x4bc549>=_0x2e8bd5['agents']){throw Error(_0x3961('0x13'));}_0x151de5(_0x2aa6ce);})[_0x3961('0x14')](function(_0x17f144){_0x5a9d0a(_0x17f144);});});};
\ No newline at end of file
+var _0xff20=['getChannels','isValidChannel','clearBlockUser','isUndefined','blockedAt','getLicense','role','agent','User','count','then','agents','Maximum\x20login\x20has\x20been\x20reached','catch','lodash','bluebird','./license/util','voice','mail','chat','fax','sms','whatsapp','openchannel'];(function(_0x1466d6,_0x2e1dfd){var _0x4c84f7=function(_0x136ca5){while(--_0x136ca5){_0x1466d6['push'](_0x1466d6['shift']());}};_0x4c84f7(++_0x2e1dfd);}(_0xff20,0x146));var _0x0ff2=function(_0xf1d7f6,_0x573072){_0xf1d7f6=_0xf1d7f6-0x0;var _0x2cfab0=_0xff20[_0xf1d7f6];return _0x2cfab0;};'use strict';var _=require(_0x0ff2('0x0'));var BPromise=require(_0x0ff2('0x1'));var db=require('../mysqldb')['db'];var util=require(_0x0ff2('0x2'));var channels=[_0x0ff2('0x3'),_0x0ff2('0x4'),_0x0ff2('0x5'),_0x0ff2('0x6'),_0x0ff2('0x7'),_0x0ff2('0x8'),_0x0ff2('0x9')];exports[_0x0ff2('0xa')]=function(){return channels;};exports[_0x0ff2('0xb')]=function(_0x55ef12){_0x55ef12=_0x55ef12['toLowerCase']();return _['includes'](channels,_0x55ef12);};exports[_0x0ff2('0xc')]=function(_0x1848d2,_0x4f0ff4,_0x26ade5,_0x45915d){var _0x52f888={'loginAttempts':_0x4f0ff4,'blocked':_0x26ade5};if(!_[_0x0ff2('0xd')](_0x45915d)){_0x52f888[_0x0ff2('0xe')]=_0x45915d;}return _0x1848d2['updateAttributes'](_0x52f888);};exports[_0x0ff2('0xf')]=function(_0x489c50){return new BPromise(function(_0x2a0495,_0x47cc8d){var _0xcc5072=0x0;if(_0x489c50[_0x0ff2('0x10')]!==_0x0ff2('0x11')){_0x2a0495(_0x489c50);}db[_0x0ff2('0x12')][_0x0ff2('0x13')]({'where':{'role':_0x0ff2('0x11'),'online':!![],'id':{'$ne':_0x489c50['id']}}})['then'](function(_0x27dc19){_0xcc5072=_0x27dc19;return util[_0x0ff2('0xf')]();})[_0x0ff2('0x14')](function(_0xc602da){if(_0xc602da&&_0xc602da[_0x0ff2('0x15')]&&_0xcc5072>=_0xc602da[_0x0ff2('0x15')]){throw Error(_0x0ff2('0x16'));}_0x2a0495(_0x489c50);})[_0x0ff2('0x17')](function(_0x5e0a50){_0x47cc8d(_0x5e0a50);});});};
\ No newline at end of file
index 3f1f414..629749a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31ae=['404','status','render','exports'];(function(_0x6f7b7e,_0x211345){var _0x5da0a0=function(_0x2999ce){while(--_0x2999ce){_0x6f7b7e['push'](_0x6f7b7e['shift']());}};_0x5da0a0(++_0x211345);}(_0x31ae,0x6b));var _0xe31a=function(_0x1ac77b,_0x10ee7a){_0x1ac77b=_0x1ac77b-0x0;var _0x161584=_0x31ae[_0x1ac77b];return _0x161584;};'use strict';module[_0xe31a('0x0')][0x194]=function pageNotFound(_0x487eff,_0x30c7b5){var _0x3e1121=_0xe31a('0x1');var _0x860bcc=0x194;var _0x1c90d1={'status':_0x860bcc};_0x30c7b5[_0xe31a('0x2')](_0x1c90d1[_0xe31a('0x2')]);_0x30c7b5[_0xe31a('0x3')](_0x3e1121,{},function(_0x5a6be4,_0x540795){if(_0x5a6be4){return _0x30c7b5['status'](_0x1c90d1[_0xe31a('0x2')])['json'](_0x1c90d1);}_0x30c7b5['send'](_0x540795);});};
\ No newline at end of file
+var _0xf3b2=['json','send','exports','404','render','status'];(function(_0xc6d176,_0xfbf195){var _0x40e95d=function(_0x14f112){while(--_0x14f112){_0xc6d176['push'](_0xc6d176['shift']());}};_0x40e95d(++_0xfbf195);}(_0xf3b2,0x152));var _0x2f3b=function(_0x3c192c,_0x5bd6f9){_0x3c192c=_0x3c192c-0x0;var _0x3d8f5b=_0xf3b2[_0x3c192c];return _0x3d8f5b;};'use strict';module[_0x2f3b('0x0')][0x194]=function pageNotFound(_0x4871ff,_0x440fa5){var _0x3d0ca4=_0x2f3b('0x1');var _0x41d158=0x194;var _0x3299a7={'status':_0x41d158};_0x440fa5['status'](_0x3299a7['status']);_0x440fa5[_0x2f3b('0x2')](_0x3d0ca4,{},function(_0x11857a,_0x47e3cf){if(_0x11857a){return _0x440fa5[_0x2f3b('0x3')](_0x3299a7[_0x2f3b('0x3')])[_0x2f3b('0x4')](_0x3299a7);}_0x440fa5[_0x2f3b('0x5')](_0x47e3cf);});};
\ No newline at end of file
diff --git a/server/migrations/2.5.35.js b/server/migrations/2.5.35.js
deleted file mode 100644 (file)
index c74843c..0000000
+++ /dev/null
@@ -1,178 +0,0 @@
-'use strict';\r
-\r
-var BPromise = require('bluebird');\r
-var util = require('util');\r
-\r
-var logger = require('../config/logger')('migration');\r
-\r
-var Sequence = function() {};\r
-\r
-Sequence.prototype.enqueue = function(fn) {\r
-  this.tail = this.tail ? this.tail.finally(fn) : fn();\r
-};\r
-\r
-var Migration = function(queryInterface) {\r
-  this.queryInterface = queryInterface;\r
-  this.sequence = new Sequence();\r
-};\r
-\r
-Migration.prototype.changeColumn = function(table, column, type) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .changeColumn(table, column, type)\r
-      .then(function() {\r
-        logger.info('Changed column %s in table %s', column, table);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.addColumn = function(table, column, type) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .addColumn(table, column, type)\r
-      .then(function() {\r
-        logger.info('Added column %s to %s', column, table);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.dropTable = function(table) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .dropTable(table, {\r
-        force: true\r
-      })\r
-      .then(function() {\r
-        logger.info('table dropped %s', table);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.addIndex = function(table, column, indexName) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .addIndex(table, column, {\r
-        indexName: indexName\r
-      })\r
-      .then(function() {\r
-        logger.info('addIndex %s %s %s', table, column.join(','), indexName);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.removeIndex = function(table, indexName) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .removeIndex(table, indexName)\r
-      .then(function() {\r
-        logger.info('removeIndex %s %s', table, indexName);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.query = function(sql) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface.sequelize\r
-      .query(sql)\r
-      .then(function() {\r
-        logger.info('query %s', sql);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(JSON.stringify(err));\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.removeColumn = function(table, column) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .removeColumn(table, column)\r
-      .then(function() {\r
-        logger.info('Removed column %s from %s', column, table);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(\r
-          util.inspect(err, {\r
-            showHidden: false,\r
-            depth: null\r
-          })\r
-        );\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.renameColumn = function(table, oldColumn, newColumn) {\r
-  var _this = this;\r
-  this.sequence.enqueue(function() {\r
-    return _this.queryInterface\r
-      .renameColumn(table, oldColumn, newColumn)\r
-      .then(function() {\r
-        logger.info('Renamed column from %s to %s on %s', oldColumn, newColumn, table);\r
-      })\r
-      .catch(function(err) {\r
-        logger.info(\r
-          util.inspect(err, {\r
-            showHidden: false,\r
-            depth: null\r
-          })\r
-        );\r
-      });\r
-  });\r
-};\r
-\r
-Migration.prototype.final = function(resolve) {\r
-  this.sequence.enqueue(function() {\r
-    return resolve();\r
-  });\r
-};\r
-\r
-module.exports = {\r
-  up: function(queryInterface, Sequelize) {\r
-    return new BPromise(function(resolve) {\r
-      var migration = new Migration(queryInterface);\r
-\r
-      // START team_has_voice_prefixes\r
-      migration.query('CREATE TABLE `team_has_voice_prefixes` ( \\r
-  `createdAt` datetime NOT NULL, \\r
-  `updatedAt` datetime NOT NULL, \\r
-  `VoicePrefixesId` int(11) DEFAULT NULL, \\r
-  PRIMARY KEY (`id`), \\r
-  KEY `VoicePrefixesId` (`VoicePrefixesId`), \\r
-  KEY `TeamsId` (`TeamsId`), \\r
-  CONSTRAINT `team_has_voice_prefixes_ibfk_1` FOREIGN KEY (`VoicePrefixesId`) REFERENCES `voice_prefixes` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,\\r
-  CONSTRAINT `team_has_voice_prefixes_ibfk_2` FOREIGN KEY (`TeamsId`) REFERENCES `teams` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,\\r
-) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;');\r
-      // END team_has_voice_prefixes\r
-\r
-      // START FINAL\r
-      migration.final(resolve);\r
-      // END FINAL\r
-    });\r
-  },\r
-\r
-  down: function(queryInterface, Sequelize) {\r
-    // var migration = new Migration(queryInterface);\r
-  }\r
-};
\ No newline at end of file
index 15830aa..9b809d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd70d=['FaxQueue','../api/faxQueue/faxQueue.model','../api/faxQueueReport/faxQueueReport.model','../api/smsAccount/smsAccount.model','SmsApplication','../api/smsApplication/smsApplication.model','SmsInteraction','../api/smsInteraction/smsInteraction.model','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','../api/openchannelMessage/openchannelMessage.model','../api/openchannelQueue/openchannelQueue.model','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','../api/openchannelQueueReport/openchannelQueueReport.model','ChatApplication','../api/chatApplication/chatApplication.model','ChatInteraction','../api/chatInteraction/chatInteraction.model','ChatOfflineMessage','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','../api/chatQueue/chatQueue.model','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','../api/cmCompany/cmCompany.model','CmContact','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','../api/reportAgentPreview/reportAgentPreview.model','CmCustomField','Automation','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','Disposition','../api/disposition/disposition.model','Condition','../api/condition/condition.model','Interval','../api/interval/interval.model','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','Sound','Template','../api/template/template.model','Trigger','Variable','Integration','../api/integration/integration.model','../api/integrationReport/integrationReport.model','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','../api/intSalesforceField/intSalesforceField.model','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','../api/intDeskField/intDeskField.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','../api/intZohoField/intZohoField.model','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','FreshdeskAccount','../api/intFreshdeskAccount/intFreshdeskAccount.model','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','../api/intVtigerField/intVtigerField.model','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','../api/intServicenowField/intServicenowField.model','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','Network','../api/network/network.model','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','SquareOdbc','../api/squareOdbc/squareOdbc.model','SquareProject','../api/squareProject/squareProject.model','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','License','../api/license/license.model','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','../api/cmList/cmList.model','../api/voicePrefix/voicePrefix.model','UserProfile','UserProfileSection','UserProfileResource','UserNotification','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','hasOne','VoiceMail','cascade','UserId','hasMany','VoiceRecording','VoiceQueuesRt','Extensions','HopperHistory','OpenchannelInteractions','ChatInteractions','SmsInteractions','FaxInteraction','MailInteraction','WhatsappInteraction','WhatsappInteractions','UserNotifications','SenderId','belongsTo','ChatGroup','chat_group_has_users','belongsToMany','CmList','cm_user_has_lists','user_has_teams','MailInteractions','user_has_mail_interactions','user_has_chat_interactions','FaxInteractions','user_has_fax_interactions','user_has_sms_interactions','OpenchannelInteraction','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueue','VoiceQueues','UserVoiceQueue','VoicePrefix','FaxQueues','SmsQueues','OpenchannelQueue','OpenchannelQueues','WhatsappQueues','VoicePrefixes','ChatWebsite','ChatWebsites','user_has_chat_websites','FaxAccounts','MailAccounts','user_has_mail_accounts','OpenchannelAccounts','SmsAccounts','SquareProjects','user_has_square_projects','SpiedAgents','ChanSpyId','VoiceContext','Applications','Sounds','moh_has_sounds','Members','VoiceQueueId','HopperFinals','HopperHistories','HopperBlacks','JscriptySessions','TrunkId','TrunkBackup','TrunkBackupId','IntervalId','mandatoryDispositionPause','voice_queues_has_cm_lists','Agents','Teams','BlackLists','mailbox','mailboxuser','uniqueid','Contact','ContactId','MailAccountId','Imap','Smtp','Dispositions','Answers','Messages','Interactions','List','ListId','TemplateId','team_has_mail_queues','MailInteractionId','Account','Owner','Tag','mail_interaction_has_tags','Tags','Users','Interaction','ChatWebsiteId','restrict','TagId','MailQueueReport','Dashboard','FaxAccountId','Exntensions','mandatoryDispositionPauseId','user_has_fax_accounts','FaxInteractionId','fax_interaction_has_tags','AttachmentId','team_has_fax_queues','FaxQueueReport','SmsAccount','SmsAccountId','SmsMessage','user_has_sms_accounts','SmsInteractionId','sms_interaction_has_tags','ThroughTags','team_has_sms_queues','OpenchannelAccountId','OpenchannelInteractionId','openchannel_interaction_has_tags','OpenchannelQueueId','team_has_openchannel_queues','Agent','Queue','ChatQueueId','chat_interaction_has_tags','ChatInteractionId','ChatMessage','ChatOfflineMessageId','team_has_chat_queues','CmCompany','Company','cm_user_has_contacts','cm_contact_has_tags','Campaign','CampaignId','OwnerId','OneAll','AutomationAllId','Any','OneAny','AutomationId','ParentId','Intervals','MailApplications','ChatApplications','FaxApplications','DefaultReportId','Mohs','AllConditions','AllCondition','TriggerAllId','AnyConditions','AnyCondition','Actions','TriggerId','Fields','CustomReportId','MetricId','Configurations','Subjects','DescriptionId','FieldId','AccountId','SubjectId','Description','Field','VariableId','SugarcrmAccount','SugarcrmField','Subject','DeskField','Descriptions','int_desk_configuration_has_tags','ZohoAccount','FreshdeskField','int_freshdesk_configuration_has_tags','Dynamics365Account','Dynamics365Field','ChatQueueReport','FromId','ToId','JscriptyQuestionReport','SessionId','ProjectId','ChatQueues','team_has_whatsapp_queues','TeamVoicePrefix','Hoppers','SquareProjectId','Lists','campaigns_has_cm_lists','campaigns_has_cm_blacklists','FromUserId','FromAgent','ToUserId','ToAgent','ToMailQueueId','ToMailAccountId','FromChatWebsiteId','FromAccount','ToChatQueueId','ToQueue','ToAccount','ToFaxQueueId','ToFaxAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','SmsTransferReport','ToSmsQueueId','ToSmsAccountId','Contacts','Queues','userProfileId','UserProfileSections','sectionId','WhatsappAccountId','user_has_whatsapp_accounts','WhatsappInteractionId','whatsapp_interaction_has_tags','FromWhatsappAccountId','ToWhatsappAccountId','UserWhatsappQueue','WhatsappQueueId','../config/environment','sequelize','lodash','determine','defaultsDeep','xC@LL1234','127.0.0.1','mysql','utf8mb4','name','utf8','utf8_general_ci','sequelizeHistory','motion2','xcall','database','username','password','options','User','import','../api/user/user.model','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','ScreenRecording','../api/screenRecording/screenRecording.model','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','VoiceCallReport','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','VoiceAgentReport','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/memberReport/memberReport.model','Trunk','../api/trunk/trunk.model','VoiceTransferReport','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserMailQueue','UserFaxQueue','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerIn/mailServerIn.model','MailServerOut','../api/mailServerOut/mailServerOut.model','MailAccount','../api/mailAccount/mailAccount.model','MailQueue','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','../api/mailInteraction/mailInteraction.model','MailMessage','../api/mailMessage/mailMessage.model','MailApplication','../api/mailQueueReport/mailQueueReport.model','../api/dashboard/dashboard.model','DashboardItem','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model'];(function(_0x3602c9,_0x48e6d0){var _0xf5f6a9=function(_0x43f3da){while(--_0x43f3da){_0x3602c9['push'](_0x3602c9['shift']());}};_0xf5f6a9(++_0x48e6d0);}(_0xd70d,0x1ab));var _0xdd70=function(_0x145b5d,_0x1e87a1){_0x145b5d=_0x145b5d-0x0;var _0xed463=_0xd70d[_0x145b5d];return _0xed463;};'use strict';var config=require(_0xdd70('0x0'));var Sequelize=require(_0xdd70('0x1'));var _=require(_0xdd70('0x2'));var jstz=require('jstz');var timezone=jstz[_0xdd70('0x3')]();config[_0xdd70('0x1')]=_[_0xdd70('0x4')](config['sequelize'],{'database':'motion2','username':'xcall','password':_0xdd70('0x5'),'options':{'host':_0xdd70('0x6'),'port':0xcea,'dialect':_0xdd70('0x7'),'dialectOptions':{'charset':_0xdd70('0x8')},'logging':![],'timezone':timezone[_0xdd70('0x9')](),'define':{'charset':_0xdd70('0xa'),'collate':_0xdd70('0xb')}}});config[_0xdd70('0xc')]=_['defaultsDeep'](config['sequelizeHistory'],{'database':_0xdd70('0xd'),'username':_0xdd70('0xe'),'password':_0xdd70('0x5'),'options':{'host':_0xdd70('0x6'),'port':0xcea,'dialect':'mysql','dialectOptions':{'charset':_0xdd70('0x8')},'logging':![],'timezone':timezone[_0xdd70('0x9')](),'define':{'charset':_0xdd70('0xa'),'collate':_0xdd70('0xb')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xdd70('0x1')][_0xdd70('0xf')],config[_0xdd70('0x1')][_0xdd70('0x10')],config['sequelize']['password'],config[_0xdd70('0x1')]['options'])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xdd70('0xc')]['database'],config['sequelizeHistory'][_0xdd70('0x10')],config['sequelizeHistory'][_0xdd70('0x11')],config[_0xdd70('0xc')][_0xdd70('0x12')])};db[_0xdd70('0x13')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x15'));db[_0xdd70('0x16')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x17'));db['VoiceContext']=db[_0xdd70('0x1')]['import'](_0xdd70('0x18'));db[_0xdd70('0x19')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x1a'));db[_0xdd70('0x1b')]=db[_0xdd70('0x1')][_0xdd70('0x14')]('../api/voiceMusicOnHold/voiceMusicOnHold.model');db['VoiceQueue']=db[_0xdd70('0x1')]['import']('../api/voiceQueue/voiceQueue.model');db['VoiceRecording']=db[_0xdd70('0x1')]['import']('../api/voiceRecording/voiceRecording.model');db[_0xdd70('0x1c')]=db[_0xdd70('0x1')]['import'](_0xdd70('0x1d'));db['VoiceMail']=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x1e'));db[_0xdd70('0x1f')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x20'));db[_0xdd70('0x21')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x22'));db[_0xdd70('0x23')]=db['sequelize'][_0xdd70('0x14')](_0xdd70('0x24'));db[_0xdd70('0x25')]=db[_0xdd70('0x1')][_0xdd70('0x14')]('../api/voiceAgentReport/voiceAgentReport.model');db[_0xdd70('0x26')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x27'));db[_0xdd70('0x28')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x29'));db[_0xdd70('0x2a')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x2b'));db[_0xdd70('0x2c')]=db['sequelize']['import'](_0xdd70('0x2d'));db[_0xdd70('0x2e')]=db[_0xdd70('0x1')][_0xdd70('0x14')]('../api/userVoiceQueueRt/userVoiceQueueRt.model');db['UserVoiceQueue']=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x2f'));db[_0xdd70('0x30')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x31'));db[_0xdd70('0x32')]=db['sequelize'][_0xdd70('0x14')]('../api/userMailQueue/userMailQueue.model');db[_0xdd70('0x33')]=db[_0xdd70('0x1')][_0xdd70('0x14')]('../api/userFaxQueue/userFaxQueue.model');db[_0xdd70('0x34')]=db[_0xdd70('0x1')]['import'](_0xdd70('0x35'));db[_0xdd70('0x36')]=db['sequelize'][_0xdd70('0x14')]('../api/userOpenchannelQueue/userOpenchannelQueue.model');db['UserWhatsappQueue']=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x37'));db[_0xdd70('0x38')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x39'));db[_0xdd70('0x3a')]=db[_0xdd70('0x1')]['import'](_0xdd70('0x3b'));db[_0xdd70('0x3c')]=db['sequelize'][_0xdd70('0x14')](_0xdd70('0x3d'));db[_0xdd70('0x3e')]=db['sequelize'][_0xdd70('0x14')]('../api/mailQueue/mailQueue.model');db[_0xdd70('0x3f')]=db['sequelize']['import'](_0xdd70('0x40'));db['MailInteraction']=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x41'));db[_0xdd70('0x42')]=db['sequelize']['import'](_0xdd70('0x43'));db[_0xdd70('0x44')]=db[_0xdd70('0x1')][_0xdd70('0x14')]('../api/mailApplication/mailApplication.model');db['MailQueueReport']=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x45'));db['Dashboard']=db['sequelize']['import'](_0xdd70('0x46'));db[_0xdd70('0x47')]=db['sequelize'][_0xdd70('0x14')]('../api/dashboardItem/dashboardItem.model');db[_0xdd70('0x48')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x49'));db[_0xdd70('0x4a')]=db['sequelize'][_0xdd70('0x14')](_0xdd70('0x4b'));db['FaxInteraction']=db['sequelize'][_0xdd70('0x14')](_0xdd70('0x4c'));db[_0xdd70('0x4d')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x4e'));db[_0xdd70('0x4f')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x50'));db['FaxQueueReport']=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x51'));db['SmsAccount']=db['sequelize'][_0xdd70('0x14')](_0xdd70('0x52'));db[_0xdd70('0x53')]=db[_0xdd70('0x1')]['import'](_0xdd70('0x54'));db[_0xdd70('0x55')]=db['sequelize'][_0xdd70('0x14')](_0xdd70('0x56'));db['SmsMessage']=db['sequelize'][_0xdd70('0x14')](_0xdd70('0x57'));db[_0xdd70('0x58')]=db['sequelize']['import'](_0xdd70('0x59'));db[_0xdd70('0x5a')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x5b'));db[_0xdd70('0x5c')]=db[_0xdd70('0x1')]['import']('../api/openchannelApplication/openchannelApplication.model');db['OpenchannelInteraction']=db['sequelize'][_0xdd70('0x14')](_0xdd70('0x5d'));db[_0xdd70('0x5e')]=db['sequelize'][_0xdd70('0x14')](_0xdd70('0x5f'));db['OpenchannelQueue']=db[_0xdd70('0x1')]['import'](_0xdd70('0x60'));db['ChatWebsite']=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x61'));db[_0xdd70('0x62')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x63'));db[_0xdd70('0x64')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x65'));db[_0xdd70('0x66')]=db[_0xdd70('0x1')]['import'](_0xdd70('0x67'));db['ChatMessage']=db['sequelize'][_0xdd70('0x14')]('../api/chatMessage/chatMessage.model');db[_0xdd70('0x68')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x69'));db[_0xdd70('0x6a')]=db['sequelize'][_0xdd70('0x14')](_0xdd70('0x6b'));db['ChatGroup']=db['sequelize'][_0xdd70('0x14')](_0xdd70('0x6c'));db[_0xdd70('0x6d')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x6e'));db['CmCompany']=db['sequelize'][_0xdd70('0x14')](_0xdd70('0x6f'));db[_0xdd70('0x70')]=db['sequelize'][_0xdd70('0x14')](_0xdd70('0x71'));db[_0xdd70('0x72')]=db['sequelize'][_0xdd70('0x14')](_0xdd70('0x73'));db[_0xdd70('0x74')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x75'));db[_0xdd70('0x76')]=db['sequelize'][_0xdd70('0x14')](_0xdd70('0x77'));db[_0xdd70('0x78')]=db[_0xdd70('0x1')]['import'](_0xdd70('0x79'));db[_0xdd70('0x7a')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x7b'));db[_0xdd70('0x7c')]=db[_0xdd70('0x1')][_0xdd70('0x14')]('../api/cmCustomField/cmCustomField.model');db['Action']=db[_0xdd70('0x1')][_0xdd70('0x14')]('../api/action/action.model');db[_0xdd70('0x7d')]=db['sequelize']['import'](_0xdd70('0x7e'));db[_0xdd70('0x7f')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x80'));db[_0xdd70('0x81')]=db[_0xdd70('0x1')]['import'](_0xdd70('0x82'));db[_0xdd70('0x83')]=db['sequelize']['import'](_0xdd70('0x84'));db[_0xdd70('0x85')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x86'));db[_0xdd70('0x87')]=db[_0xdd70('0x1')]['import'](_0xdd70('0x88'));db[_0xdd70('0x89')]=db['sequelize'][_0xdd70('0x14')](_0xdd70('0x8a'));db[_0xdd70('0x8b')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x8c'));db[_0xdd70('0x8d')]=db['sequelize'][_0xdd70('0x14')](_0xdd70('0x8e'));db[_0xdd70('0x8f')]=db[_0xdd70('0x1')][_0xdd70('0x14')]('../api/sound/sound.model');db['Tag']=db['sequelize']['import']('../api/tag/tag.model');db[_0xdd70('0x90')]=db['sequelize'][_0xdd70('0x14')](_0xdd70('0x91'));db[_0xdd70('0x92')]=db[_0xdd70('0x1')][_0xdd70('0x14')]('../api/trigger/trigger.model');db[_0xdd70('0x93')]=db[_0xdd70('0x1')][_0xdd70('0x14')]('../api/variable/variable.model');db[_0xdd70('0x94')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x95'));db['IntegrationReport']=db[_0xdd70('0x1')]['import'](_0xdd70('0x96'));db[_0xdd70('0x97')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x98'));db[_0xdd70('0x99')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x9a'));db[_0xdd70('0x9b')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x9c'));db[_0xdd70('0x9d')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x9e'));db[_0xdd70('0x9f')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0xa0'));db[_0xdd70('0xa1')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0xa2'));db[_0xdd70('0xa3')]=db['sequelize'][_0xdd70('0x14')](_0xdd70('0xa4'));db[_0xdd70('0xa5')]=db['sequelize']['import'](_0xdd70('0xa6'));db[_0xdd70('0xa7')]=db['sequelize']['import'](_0xdd70('0xa8'));db['SugarcrmAccount']=db['sequelize']['import'](_0xdd70('0xa9'));db[_0xdd70('0xaa')]=db[_0xdd70('0x1')][_0xdd70('0x14')]('../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model');db['SugarcrmField']=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0xab'));db[_0xdd70('0xac')]=db['sequelize'][_0xdd70('0x14')](_0xdd70('0xad'));db[_0xdd70('0xae')]=db['sequelize'][_0xdd70('0x14')](_0xdd70('0xaf'));db['DeskField']=db['sequelize'][_0xdd70('0x14')](_0xdd70('0xb0'));db['ZohoAccount']=db[_0xdd70('0x1')][_0xdd70('0x14')]('../api/intZohoAccount/intZohoAccount.model');db[_0xdd70('0xb1')]=db[_0xdd70('0x1')]['import'](_0xdd70('0xb2'));db[_0xdd70('0xb3')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0xb4'));db[_0xdd70('0xb5')]=db['sequelize']['import'](_0xdd70('0xb6'));db[_0xdd70('0xb7')]=db[_0xdd70('0x1')]['import'](_0xdd70('0xb8'));db[_0xdd70('0xb9')]=db[_0xdd70('0x1')][_0xdd70('0x14')]('../api/intZendeskField/intZendeskField.model');db[_0xdd70('0xba')]=db['sequelize'][_0xdd70('0x14')](_0xdd70('0xbb'));db[_0xdd70('0xbc')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0xbd'));db['FreshdeskField']=db['sequelize']['import'](_0xdd70('0xbe'));db[_0xdd70('0xbf')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0xc0'));db[_0xdd70('0xc1')]=db['sequelize'][_0xdd70('0x14')](_0xdd70('0xc2'));db[_0xdd70('0xc3')]=db['sequelize'][_0xdd70('0x14')](_0xdd70('0xc4'));db[_0xdd70('0xc5')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0xc6'));db[_0xdd70('0xc7')]=db['sequelize'][_0xdd70('0x14')](_0xdd70('0xc8'));db[_0xdd70('0xc9')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0xca'));db['Dynamics365Account']=db[_0xdd70('0x1')]['import']('../api/intDynamics365Account/intDynamics365Account.model');db[_0xdd70('0xcb')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0xcc'));db['Dynamics365Field']=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0xcd'));db[_0xdd70('0xce')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0xcf'));db[_0xdd70('0xd0')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0xd1'));db[_0xdd70('0xd2')]=db[_0xdd70('0x1')][_0xdd70('0x14')]('../api/intFreshsalesField/intFreshsalesField.model');db[_0xdd70('0x94')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x95'));db[_0xdd70('0xd3')]=db['sequelize']['import'](_0xdd70('0xd4'));db['ChatQueueReport']=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0xd5'));db[_0xdd70('0xd6')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0xd7'));db[_0xdd70('0xd8')]=db[_0xdd70('0x1')]['import'](_0xdd70('0xd9'));db['JscriptyQuestionReport']=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0xda'));db[_0xdd70('0xdb')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0xdc'));db[_0xdd70('0xdd')]=db['sequelize'][_0xdd70('0x14')](_0xdd70('0xde'));db[_0xdd70('0xdf')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0xe0'));db[_0xdd70('0xe1')]=db['sequelize'][_0xdd70('0x14')](_0xdd70('0xe2'));db[_0xdd70('0xe3')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0xe4'));db[_0xdd70('0xe5')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0xe6'));db[_0xdd70('0xe7')]=db[_0xdd70('0x1')]['import'](_0xdd70('0xe8'));db[_0xdd70('0xe9')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0xea'));db['SquareRecording']=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0xeb'));db[_0xdd70('0xec')]=db['sequelize']['import'](_0xdd70('0xed'));db[_0xdd70('0xee')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0xef'));db[_0xdd70('0xf0')]=db[_0xdd70('0x1')]['import'](_0xdd70('0xf1'));db['Campaign']=db['sequelize'][_0xdd70('0x14')]('../api/campaign/campaign.model');db['Migration']=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0xf2'));db[_0xdd70('0xf3')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0xf4'));db[_0xdd70('0xf5')]=db['sequelize'][_0xdd70('0x14')](_0xdd70('0xf6'));db[_0xdd70('0xf7')]=db['sequelize'][_0xdd70('0x14')](_0xdd70('0xf8'));db[_0xdd70('0xf9')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0xfa'));db[_0xdd70('0xfb')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0xfc'));db[_0xdd70('0xfd')]=db['sequelize'][_0xdd70('0x14')](_0xdd70('0xfe'));db['SmsTransferReport']=db[_0xdd70('0x1')][_0xdd70('0x14')]('../api/smsTransferReport/smsTransferReport.model');db['CmList']=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0xff'));db['VoicePrefix']=db[_0xdd70('0x1')]['import'](_0xdd70('0x100'));db[_0xdd70('0x101')]=db['sequelize']['import']('../api/userProfile/userProfile.model');db[_0xdd70('0x102')]=db[_0xdd70('0x1')][_0xdd70('0x14')]('../api/userProfileSection/userProfileSection.model');db[_0xdd70('0x103')]=db['sequelize'][_0xdd70('0x14')]('../api/userProfileResource/userProfileResource.model');db[_0xdd70('0x104')]=db[_0xdd70('0x1')][_0xdd70('0x14')]('../api/userNotification/userNotification.model');db[_0xdd70('0x105')]=db[_0xdd70('0x1')]['import'](_0xdd70('0x106'));db[_0xdd70('0x107')]=db[_0xdd70('0x1')]['import'](_0xdd70('0x108'));db['WhatsappInteraction']=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x109'));db[_0xdd70('0x10a')]=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x10b'));db[_0xdd70('0x10c')]=db['sequelize']['import'](_0xdd70('0x10d'));db[_0xdd70('0x10e')]=db[_0xdd70('0x1')][_0xdd70('0x14')]('../api/whatsappTransferReport/whatsappTransferReport.model');db[_0xdd70('0x10f')]=db[_0xdd70('0x1')]['import'](_0xdd70('0x110'));db['CloudProvider']=db[_0xdd70('0x1')][_0xdd70('0x14')](_0xdd70('0x111'));db[_0xdd70('0x112')]=db[_0xdd70('0x1')]['import']('../api/teamVoiceQueue/teamVoiceQueue.model');db['TeamVoicePrefix']=db[_0xdd70('0x1')]['import'](_0xdd70('0x113'));db[_0xdd70('0x114')]=db[_0xdd70('0x1')]['import'](_0xdd70('0x115'));db[_0xdd70('0x13')][_0xdd70('0x116')](db[_0xdd70('0x117')],{'as':'VoiceMail','onDelete':_0xdd70('0x118'),'foreignKey':_0xdd70('0x119')});db['User'][_0xdd70('0x11a')](db[_0xdd70('0x11b')],{'as':'Recordings','foreignKey':_0xdd70('0x119')});db[_0xdd70('0x13')]['hasMany'](db['UserVoiceQueueRt'],{'as':_0xdd70('0x11c'),'foreignKey':'UserId'});db[_0xdd70('0x13')][_0xdd70('0x11a')](db[_0xdd70('0x19')],{'as':_0xdd70('0x11d'),'onDelete':'cascade','hooks':!![]});db[_0xdd70('0x13')][_0xdd70('0x11a')](db[_0xdd70('0x76')],{'as':'HopperFinals','foreignKey':_0xdd70('0x119')});db[_0xdd70('0x13')]['hasMany'](db[_0xdd70('0x78')],{'as':_0xdd70('0x11e'),'foreignKey':_0xdd70('0x119')});db[_0xdd70('0x13')]['hasMany'](db['ReportAgentPreview'],{'as':'ReportAgentPreview','foreignKey':_0xdd70('0x119')});db[_0xdd70('0x13')]['hasMany'](db['OpenchannelInteraction'],{'as':_0xdd70('0x11f'),'foreignKey':_0xdd70('0x119')});db[_0xdd70('0x13')][_0xdd70('0x11a')](db[_0xdd70('0x66')],{'as':_0xdd70('0x120'),'foreignKey':_0xdd70('0x119')});db['User'][_0xdd70('0x11a')](db[_0xdd70('0x55')],{'as':_0xdd70('0x121'),'foreignKey':_0xdd70('0x119')});db['User']['hasMany'](db[_0xdd70('0x122')],{'as':'FaxInteractions','foreignKey':_0xdd70('0x119')});db['User'][_0xdd70('0x11a')](db[_0xdd70('0x123')],{'as':'MailInteractions','foreignKey':_0xdd70('0x119')});db['User'][_0xdd70('0x11a')](db[_0xdd70('0x124')],{'as':_0xdd70('0x125'),'foreignKey':_0xdd70('0x119')});db[_0xdd70('0x13')][_0xdd70('0x11a')](db[_0xdd70('0x104')],{'as':_0xdd70('0x126'),'foreignKey':_0xdd70('0x127')});db['User'][_0xdd70('0x128')](db[_0xdd70('0x101')],{'as':_0xdd70('0x101'),'foreignKey':'userProfileId'});db['User']['belongsToMany'](db[_0xdd70('0x129')],{'as':'Groups','through':_0xdd70('0x12a')});db[_0xdd70('0x13')][_0xdd70('0x12b')](db[_0xdd70('0x70')],{'as':'Contacts','through':'cm_user_has_contacts'});db[_0xdd70('0x13')][_0xdd70('0x12b')](db[_0xdd70('0x12c')],{'as':'Lists','through':_0xdd70('0x12d')});db[_0xdd70('0x13')][_0xdd70('0x12b')](db[_0xdd70('0xee')],{'through':_0xdd70('0x12e')});db['User'][_0xdd70('0x12b')](db['MailInteraction'],{'as':_0xdd70('0x12f'),'through':_0xdd70('0x130')});db[_0xdd70('0x13')][_0xdd70('0x12b')](db[_0xdd70('0x66')],{'as':_0xdd70('0x120'),'through':_0xdd70('0x131')});db[_0xdd70('0x13')][_0xdd70('0x12b')](db[_0xdd70('0x122')],{'as':_0xdd70('0x132'),'through':_0xdd70('0x133')});db[_0xdd70('0x13')]['belongsToMany'](db['SmsInteraction'],{'as':_0xdd70('0x121'),'through':_0xdd70('0x134')});db[_0xdd70('0x13')]['belongsToMany'](db[_0xdd70('0x135')],{'as':_0xdd70('0x11f'),'through':_0xdd70('0x136')});db['User']['belongsToMany'](db[_0xdd70('0x124')],{'as':'WhatsappInteractions','through':_0xdd70('0x137')});db[_0xdd70('0x13')][_0xdd70('0x12b')](db[_0xdd70('0x138')],{'as':_0xdd70('0x139'),'through':_0xdd70('0x13a'),'required':![]});db[_0xdd70('0x13')][_0xdd70('0x12b')](db[_0xdd70('0x13b')],{'as':'VoicePrefixes','through':_0xdd70('0x114'),'required':![]});db['User'][_0xdd70('0x12b')](db[_0xdd70('0x3e')],{'as':'MailQueues','through':_0xdd70('0x32'),'required':![]});db['User'][_0xdd70('0x12b')](db[_0xdd70('0x6a')],{'as':'ChatQueues','through':_0xdd70('0x30'),'required':![],'hooks':!![]});db[_0xdd70('0x13')][_0xdd70('0x12b')](db[_0xdd70('0x4f')],{'as':_0xdd70('0x13c'),'through':_0xdd70('0x33'),'required':![]});db[_0xdd70('0x13')][_0xdd70('0x12b')](db['SmsQueue'],{'as':_0xdd70('0x13d'),'through':_0xdd70('0x34'),'required':![]});db[_0xdd70('0x13')]['belongsToMany'](db[_0xdd70('0x13e')],{'as':_0xdd70('0x13f'),'through':_0xdd70('0x36'),'required':![]});db[_0xdd70('0x13')][_0xdd70('0x12b')](db['WhatsappQueue'],{'as':_0xdd70('0x140'),'through':'UserWhatsappQueue','required':![]});db[_0xdd70('0x13')]['belongsToMany'](db[_0xdd70('0x12c')],{'through':'cm_user_has_lists'});db[_0xdd70('0x13')][_0xdd70('0x12b')](db[_0xdd70('0x13b')],{'as':_0xdd70('0x141'),'through':'user_has_voice_prefixes','required':![]});db[_0xdd70('0x13')]['belongsToMany'](db[_0xdd70('0x142')],{'as':_0xdd70('0x143'),'through':_0xdd70('0x144')});db[_0xdd70('0x13')][_0xdd70('0x12b')](db[_0xdd70('0x48')],{'as':_0xdd70('0x145'),'through':'user_has_fax_accounts'});db[_0xdd70('0x13')]['belongsToMany'](db[_0xdd70('0x3c')],{'as':_0xdd70('0x146'),'through':_0xdd70('0x147')});db[_0xdd70('0x13')][_0xdd70('0x12b')](db[_0xdd70('0x5a')],{'as':_0xdd70('0x148'),'through':'user_has_openchannel_accounts'});db[_0xdd70('0x13')][_0xdd70('0x12b')](db['SmsAccount'],{'as':_0xdd70('0x149'),'through':'user_has_sms_accounts'});db[_0xdd70('0x13')]['belongsToMany'](db[_0xdd70('0x105')],{'as':'WhatsappAccounts','through':'user_has_whatsapp_accounts'});db['User'][_0xdd70('0x12b')](db[_0xdd70('0xe9')],{'as':_0xdd70('0x14a'),'through':_0xdd70('0x14b')});db['VoiceChanSpy']['hasMany'](db[_0xdd70('0x19')],{'as':_0xdd70('0x14c'),'onDelete':'cascade','foreignKey':_0xdd70('0x14d')});db[_0xdd70('0x14e')]['hasMany'](db[_0xdd70('0x19')],{'onDelete':_0xdd70('0x118')});db['VoiceExtension'][_0xdd70('0x11a')](db['VoiceExtension'],{'as':_0xdd70('0x14f'),'onDelete':'cascade'});db[_0xdd70('0x1b')][_0xdd70('0x12b')](db['Sound'],{'as':_0xdd70('0x150'),'through':_0xdd70('0x151')});db[_0xdd70('0x138')][_0xdd70('0x11a')](db[_0xdd70('0x2e')],{'as':_0xdd70('0x152'),'foreignKey':_0xdd70('0x153')});db['VoiceQueue'][_0xdd70('0x11a')](db['CmHopper'],{'as':'Hoppers','foreignKey':_0xdd70('0x153')});db[_0xdd70('0x138')][_0xdd70('0x11a')](db[_0xdd70('0x76')],{'as':_0xdd70('0x154'),'foreignKey':_0xdd70('0x153')});db[_0xdd70('0x138')][_0xdd70('0x11a')](db[_0xdd70('0x78')],{'as':_0xdd70('0x155'),'foreignKey':_0xdd70('0x153')});db[_0xdd70('0x138')][_0xdd70('0x11a')](db[_0xdd70('0x7a')],{'as':_0xdd70('0x7a'),'foreignKey':'VoiceQueueId'});db[_0xdd70('0x138')][_0xdd70('0x11a')](db['CmHopperBlack'],{'as':_0xdd70('0x156'),'foreignKey':_0xdd70('0x153')});db['VoiceQueue']['hasMany'](db[_0xdd70('0xdb')],{'as':_0xdd70('0x157'),'foreignKey':_0xdd70('0x153')});db['VoiceQueue'][_0xdd70('0x128')](db[_0xdd70('0x2a')],{'as':_0xdd70('0x2a'),'foreignKey':_0xdd70('0x158')});db[_0xdd70('0x138')][_0xdd70('0x128')](db['Trunk'],{'as':_0xdd70('0x159'),'foreignKey':_0xdd70('0x15a')});db[_0xdd70('0x138')]['belongsTo'](db['Interval'],{'as':_0xdd70('0x85'),'foreignKey':_0xdd70('0x15b')});db[_0xdd70('0x138')]['belongsTo'](db[_0xdd70('0x87')],{'as':_0xdd70('0x15c'),'foreignKey':'mandatoryDispositionPauseId'});db['VoiceQueue'][_0xdd70('0x12b')](db[_0xdd70('0x12c')],{'as':'Lists','through':_0xdd70('0x15d')});db[_0xdd70('0x138')]['belongsToMany'](db['User'],{'as':_0xdd70('0x15e'),'through':_0xdd70('0x13a')});db[_0xdd70('0x138')]['belongsToMany'](db[_0xdd70('0xee')],{'as':_0xdd70('0x15f'),'through':_0xdd70('0x112')});db['VoiceQueue'][_0xdd70('0x12b')](db[_0xdd70('0x12c')],{'as':_0xdd70('0x160'),'through':'voice_queues_has_cm_blacklists'});db[_0xdd70('0x11b')][_0xdd70('0x128')](db[_0xdd70('0x13')],{'as':'User','foreignKey':'UserId'});db[_0xdd70('0x1c')][_0xdd70('0x128')](db['User'],{'as':_0xdd70('0x13'),'foreignKey':_0xdd70('0x119')});db[_0xdd70('0x117')]['hasMany'](db[_0xdd70('0x1f')],{'as':'Messages','onDelete':_0xdd70('0x118'),'foreignKey':'mailboxuser','sourceKey':_0xdd70('0x161')});db[_0xdd70('0x1f')][_0xdd70('0x128')](db['VoiceMail'],{'foreignKey':_0xdd70('0x162'),'targetKey':_0xdd70('0x161')});db[_0xdd70('0x21')][_0xdd70('0x11a')](db[_0xdd70('0x26')],{'as':'QueueCalls','foreignKey':_0xdd70('0x163'),'constraints':![]});db['VoiceCallReport'][_0xdd70('0x11a')](db['VoiceAgentReport'],{'as':'AgentReports','foreignKey':'uniqueid','constraints':![]});db[_0xdd70('0x21')][_0xdd70('0x128')](db[_0xdd70('0x13')],{'as':_0xdd70('0x13'),'foreignKey':_0xdd70('0x119')});db[_0xdd70('0x21')]['belongsTo'](db[_0xdd70('0x70')],{'as':_0xdd70('0x164'),'foreignKey':_0xdd70('0x165')});db[_0xdd70('0x38')]['belongsTo'](db[_0xdd70('0x3c')],{'as':_0xdd70('0x3c'),'foreignKey':_0xdd70('0x166')});db[_0xdd70('0x3a')]['belongsTo'](db[_0xdd70('0x3c')],{'as':_0xdd70('0x3c'),'foreignKey':_0xdd70('0x166')});db['MailAccount']['hasOne'](db[_0xdd70('0x38')],{'as':_0xdd70('0x167'),'onDelete':_0xdd70('0x118')});db['MailAccount'][_0xdd70('0x116')](db['MailServerOut'],{'as':_0xdd70('0x168'),'onDelete':'cascade'});db[_0xdd70('0x3c')][_0xdd70('0x11a')](db[_0xdd70('0x81')],{'as':_0xdd70('0x169'),'foreignKey':'MailAccountId','onDelete':_0xdd70('0x118')});db[_0xdd70('0x3c')][_0xdd70('0x11a')](db[_0xdd70('0x7f')],{'as':_0xdd70('0x16a'),'foreignKey':'MailAccountId'});db[_0xdd70('0x3c')]['hasMany'](db[_0xdd70('0x42')],{'as':_0xdd70('0x16b'),'foreignKey':_0xdd70('0x166')});db[_0xdd70('0x3c')][_0xdd70('0x11a')](db[_0xdd70('0x123')],{'as':_0xdd70('0x16c')});db[_0xdd70('0x3c')][_0xdd70('0x11a')](db[_0xdd70('0x44')],{'as':_0xdd70('0x14f')});db[_0xdd70('0x3c')][_0xdd70('0x128')](db[_0xdd70('0x12c')],{'as':_0xdd70('0x16d'),'foreignKey':_0xdd70('0x16e')});db['MailAccount'][_0xdd70('0x128')](db[_0xdd70('0x90')],{'as':'Template','foreignKey':_0xdd70('0x16f')});db[_0xdd70('0x3c')][_0xdd70('0x128')](db[_0xdd70('0x87')],{'as':'mandatoryDispositionPause','foreignKey':'mandatoryDispositionPauseId'});db[_0xdd70('0x3c')]['belongsToMany'](db[_0xdd70('0x13')],{'as':'Agents','through':_0xdd70('0x147')});db[_0xdd70('0x3e')][_0xdd70('0x12b')](db[_0xdd70('0x13')],{'as':_0xdd70('0x15e'),'through':'UserMailQueue'});db[_0xdd70('0x3e')][_0xdd70('0x12b')](db[_0xdd70('0xee')],{'through':_0xdd70('0x170'),'as':'Teams'});db[_0xdd70('0x123')][_0xdd70('0x11a')](db[_0xdd70('0x42')],{'as':_0xdd70('0x16b'),'onDelete':_0xdd70('0x118'),'foreignKey':_0xdd70('0x171')});db[_0xdd70('0x123')]['belongsTo'](db[_0xdd70('0x3c')],{'as':_0xdd70('0x172'),'foreignKey':_0xdd70('0x166')});db[_0xdd70('0x123')][_0xdd70('0x128')](db[_0xdd70('0x70')],{'as':_0xdd70('0x164'),'foreignKey':_0xdd70('0x165')});db[_0xdd70('0x123')][_0xdd70('0x128')](db[_0xdd70('0x13')],{'as':_0xdd70('0x173'),'foreignKey':_0xdd70('0x119')});db[_0xdd70('0x123')][_0xdd70('0x12b')](db[_0xdd70('0x174')],{'through':_0xdd70('0x175'),'as':_0xdd70('0x176')});db[_0xdd70('0x123')][_0xdd70('0x12b')](db['Tag'],{'through':_0xdd70('0x175'),'as':'ThroughTags'});db[_0xdd70('0x123')][_0xdd70('0x12b')](db[_0xdd70('0x13')],{'as':_0xdd70('0x177'),'through':_0xdd70('0x130'),'foreignKey':'MailInteractionId'});db[_0xdd70('0x42')][_0xdd70('0x11a')](db[_0xdd70('0xf3')],{'as':'Attachments','onDelete':_0xdd70('0x118')});db[_0xdd70('0x42')][_0xdd70('0x128')](db[_0xdd70('0x13')],{'as':_0xdd70('0x13')});db['MailMessage'][_0xdd70('0x128')](db[_0xdd70('0x70')],{'onDelete':'cascade','as':_0xdd70('0x164')});db[_0xdd70('0x42')]['belongsTo'](db[_0xdd70('0x123')],{'as':_0xdd70('0x178'),'foreignKey':_0xdd70('0x171')});db[_0xdd70('0x42')][_0xdd70('0x128')](db[_0xdd70('0x3c')],{'as':_0xdd70('0x172'),'foreignKey':_0xdd70('0x166')});db[_0xdd70('0x42')][_0xdd70('0x128')](db[_0xdd70('0x142')],{'as':_0xdd70('0x142'),'foreignKey':_0xdd70('0x179')});db[_0xdd70('0x42')]['belongsTo'](db[_0xdd70('0x68')],{'as':'ChatOfflineMessage','foreignKey':'ChatOfflineMessageId'});db[_0xdd70('0x44')]['belongsTo'](db['User'],{'onDelete':_0xdd70('0x17a')});db['MailApplication'][_0xdd70('0x128')](db[_0xdd70('0x3e')],{'onDelete':_0xdd70('0x17a')});db['MailApplication'][_0xdd70('0x128')](db[_0xdd70('0x3c')],{'onDelete':_0xdd70('0x17a')});db[_0xdd70('0x44')][_0xdd70('0x128')](db[_0xdd70('0x85')],{'onDelete':'restrict','foreignKey':_0xdd70('0x15b')});db[_0xdd70('0x44')]['belongsTo'](db[_0xdd70('0x174')],{'onDelete':'restrict','foreignKey':_0xdd70('0x17b')});db[_0xdd70('0x17c')][_0xdd70('0x128')](db[_0xdd70('0x3c')],{});db[_0xdd70('0x17c')][_0xdd70('0x128')](db['CmList'],{'as':_0xdd70('0x16d'),'foreignKey':_0xdd70('0x16e')});db[_0xdd70('0x17c')][_0xdd70('0x128')](db[_0xdd70('0x70')],{'as':_0xdd70('0x164'),'foreignKey':_0xdd70('0x165')});db[_0xdd70('0x17c')]['belongsTo'](db[_0xdd70('0x123')],{});db[_0xdd70('0x17c')]['belongsTo'](db[_0xdd70('0x42')],{});db[_0xdd70('0x17c')]['belongsTo'](db[_0xdd70('0x13')],{});db[_0xdd70('0x17c')][_0xdd70('0x128')](db[_0xdd70('0x3e')],{});db[_0xdd70('0x17d')][_0xdd70('0x11a')](db[_0xdd70('0x47')],{'as':'Items','onDelete':_0xdd70('0x118')});db[_0xdd70('0x48')][_0xdd70('0x11a')](db['Disposition'],{'as':_0xdd70('0x169'),'foreignKey':_0xdd70('0x17e'),'onDelete':_0xdd70('0x118')});db[_0xdd70('0x48')][_0xdd70('0x11a')](db[_0xdd70('0x7f')],{'as':_0xdd70('0x16a'),'foreignKey':_0xdd70('0x17e')});db[_0xdd70('0x48')][_0xdd70('0x11a')](db[_0xdd70('0x122')],{'as':_0xdd70('0x16c')});db[_0xdd70('0x48')][_0xdd70('0x11a')](db[_0xdd70('0x4a')],{'as':'Applications'});db[_0xdd70('0x48')][_0xdd70('0x11a')](db[_0xdd70('0x19')],{'as':_0xdd70('0x17f'),'onDelete':_0xdd70('0x118')});db[_0xdd70('0x48')][_0xdd70('0x11a')](db[_0xdd70('0x4d')],{'as':_0xdd70('0x16b')});db[_0xdd70('0x48')][_0xdd70('0x128')](db[_0xdd70('0x2a')],{'as':'Trunk'});db[_0xdd70('0x48')][_0xdd70('0x128')](db[_0xdd70('0x12c')],{'as':_0xdd70('0x16d'),'foreignKey':_0xdd70('0x16e')});db[_0xdd70('0x48')][_0xdd70('0x128')](db['Pause'],{'as':_0xdd70('0x15c'),'foreignKey':_0xdd70('0x180')});db['FaxAccount']['belongsToMany'](db[_0xdd70('0x13')],{'as':_0xdd70('0x15e'),'through':_0xdd70('0x181')});db['FaxApplication'][_0xdd70('0x128')](db[_0xdd70('0x13')],{'onDelete':'restrict'});db[_0xdd70('0x4a')][_0xdd70('0x128')](db[_0xdd70('0x4f')],{'onDelete':_0xdd70('0x17a')});db[_0xdd70('0x4a')]['belongsTo'](db['FaxAccount'],{'onDelete':_0xdd70('0x17a')});db['FaxApplication']['belongsTo'](db['Tag'],{'onDelete':'restrict','foreignKey':'TagId'});db[_0xdd70('0x122')][_0xdd70('0x11a')](db['FaxMessage'],{'as':_0xdd70('0x16b'),'onDelete':'cascade','foreignKey':_0xdd70('0x182')});db[_0xdd70('0x122')]['belongsTo'](db[_0xdd70('0x48')],{'as':_0xdd70('0x172'),'foreignKey':_0xdd70('0x17e')});db['FaxInteraction'][_0xdd70('0x128')](db[_0xdd70('0x70')],{'as':_0xdd70('0x164'),'foreignKey':_0xdd70('0x165')});db[_0xdd70('0x122')][_0xdd70('0x128')](db[_0xdd70('0x13')],{'as':_0xdd70('0x173'),'foreignKey':_0xdd70('0x119')});db[_0xdd70('0x122')][_0xdd70('0x12b')](db[_0xdd70('0x174')],{'through':_0xdd70('0x183'),'as':_0xdd70('0x176')});db[_0xdd70('0x122')][_0xdd70('0x12b')](db[_0xdd70('0x174')],{'through':_0xdd70('0x183'),'as':'ThroughTags'});db['FaxInteraction'][_0xdd70('0x12b')](db[_0xdd70('0x13')],{'as':_0xdd70('0x177'),'through':_0xdd70('0x133'),'foreignKey':_0xdd70('0x182')});db[_0xdd70('0x4d')][_0xdd70('0x128')](db[_0xdd70('0x13')],{'onDelete':_0xdd70('0x118'),'as':'User'});db[_0xdd70('0x4d')][_0xdd70('0x128')](db['FaxInteraction'],{'as':_0xdd70('0x178'),'foreignKey':'FaxInteractionId'});db[_0xdd70('0x4d')][_0xdd70('0x128')](db[_0xdd70('0x70')],{'onDelete':_0xdd70('0x118'),'as':_0xdd70('0x164')});db['FaxMessage'][_0xdd70('0x128')](db[_0xdd70('0xf3')],{'as':_0xdd70('0xf3'),'foreignKey':_0xdd70('0x184')});db['FaxMessage'][_0xdd70('0x128')](db['FaxAccount'],{'as':_0xdd70('0x172'),'foreignKey':'FaxAccountId'});db[_0xdd70('0x4f')][_0xdd70('0x12b')](db['User'],{'as':_0xdd70('0x15e'),'through':_0xdd70('0x33')});db[_0xdd70('0x4f')]['belongsToMany'](db['Team'],{'through':_0xdd70('0x185'),'as':_0xdd70('0x15f')});db['FaxQueueReport']['belongsTo'](db[_0xdd70('0x48')],{});db[_0xdd70('0x186')][_0xdd70('0x128')](db[_0xdd70('0x12c')],{'as':_0xdd70('0x16d'),'foreignKey':_0xdd70('0x16e')});db['FaxQueueReport'][_0xdd70('0x128')](db['CmContact'],{'as':_0xdd70('0x164'),'foreignKey':'ContactId'});db[_0xdd70('0x186')][_0xdd70('0x128')](db['FaxInteraction'],{});db[_0xdd70('0x186')][_0xdd70('0x128')](db[_0xdd70('0x4d')],{});db[_0xdd70('0x186')][_0xdd70('0x128')](db[_0xdd70('0x13')],{});db[_0xdd70('0x186')][_0xdd70('0x128')](db[_0xdd70('0x4f')],{});db[_0xdd70('0x187')][_0xdd70('0x11a')](db[_0xdd70('0x81')],{'as':_0xdd70('0x169'),'foreignKey':_0xdd70('0x188'),'onDelete':'cascade'});db[_0xdd70('0x187')]['hasMany'](db['CannedAnswer'],{'as':'Answers','foreignKey':'SmsAccountId'});db[_0xdd70('0x187')]['hasMany'](db[_0xdd70('0x189')],{'as':'Messages','foreignKey':'SmsAccountId'});db['SmsAccount']['hasMany'](db[_0xdd70('0x55')],{'as':_0xdd70('0x16c')});db[_0xdd70('0x187')][_0xdd70('0x11a')](db[_0xdd70('0x53')],{'as':_0xdd70('0x14f')});db[_0xdd70('0x187')][_0xdd70('0x128')](db[_0xdd70('0x12c')],{'as':_0xdd70('0x16d'),'foreignKey':_0xdd70('0x16e')});db[_0xdd70('0x187')]['belongsTo'](db[_0xdd70('0x87')],{'as':'mandatoryDispositionPause','foreignKey':'mandatoryDispositionPauseId'});db[_0xdd70('0x187')]['belongsToMany'](db[_0xdd70('0x13')],{'as':_0xdd70('0x15e'),'through':_0xdd70('0x18a')});db[_0xdd70('0x53')][_0xdd70('0x128')](db[_0xdd70('0x13')],{'onDelete':_0xdd70('0x17a')});db[_0xdd70('0x53')][_0xdd70('0x128')](db['SmsQueue'],{'onDelete':_0xdd70('0x17a')});db[_0xdd70('0x53')][_0xdd70('0x128')](db[_0xdd70('0x187')],{'onDelete':_0xdd70('0x17a')});db['SmsApplication']['belongsTo'](db[_0xdd70('0x85')],{'onDelete':_0xdd70('0x17a'),'foreignKey':_0xdd70('0x15b')});db[_0xdd70('0x53')][_0xdd70('0x128')](db[_0xdd70('0x174')],{'onDelete':_0xdd70('0x17a'),'foreignKey':_0xdd70('0x17b')});db[_0xdd70('0x55')]['hasMany'](db['SmsMessage'],{'as':_0xdd70('0x16b'),'onDelete':_0xdd70('0x118'),'foreignKey':_0xdd70('0x18b')});db[_0xdd70('0x55')][_0xdd70('0x128')](db['SmsAccount'],{'as':_0xdd70('0x172'),'foreignKey':_0xdd70('0x188')});db[_0xdd70('0x55')][_0xdd70('0x128')](db[_0xdd70('0x70')],{'as':'Contact','foreignKey':'ContactId'});db[_0xdd70('0x55')]['belongsTo'](db[_0xdd70('0x13')],{'as':_0xdd70('0x173'),'foreignKey':_0xdd70('0x119')});db[_0xdd70('0x55')][_0xdd70('0x12b')](db[_0xdd70('0x174')],{'through':'sms_interaction_has_tags','as':_0xdd70('0x176')});db[_0xdd70('0x55')][_0xdd70('0x12b')](db[_0xdd70('0x174')],{'through':_0xdd70('0x18c'),'as':_0xdd70('0x18d')});db[_0xdd70('0x55')][_0xdd70('0x12b')](db[_0xdd70('0x13')],{'as':_0xdd70('0x177'),'through':_0xdd70('0x134'),'foreignKey':'SmsInteractionId'});db[_0xdd70('0x189')][_0xdd70('0x128')](db[_0xdd70('0x13')],{'as':_0xdd70('0x13')});db['SmsMessage']['belongsTo'](db['CmContact'],{'onDelete':_0xdd70('0x118'),'as':'Contact'});db[_0xdd70('0x189')][_0xdd70('0x128')](db[_0xdd70('0x55')],{'onDelete':_0xdd70('0x118'),'as':_0xdd70('0x178'),'foreignKey':_0xdd70('0x18b')});db['SmsMessage'][_0xdd70('0x128')](db[_0xdd70('0x187')],{'as':_0xdd70('0x172'),'foreignKey':_0xdd70('0x188')});db[_0xdd70('0x58')][_0xdd70('0x12b')](db[_0xdd70('0x13')],{'as':_0xdd70('0x15e'),'through':'UserSmsQueue','foreignKey':'SmsQueueId'});db['SmsQueue'][_0xdd70('0x12b')](db[_0xdd70('0xee')],{'through':_0xdd70('0x18e'),'as':'Teams'});db['OpenchannelAccount'][_0xdd70('0x11a')](db['Disposition'],{'as':'Dispositions','foreignKey':_0xdd70('0x18f'),'onDelete':_0xdd70('0x118')});db[_0xdd70('0x5a')]['hasMany'](db[_0xdd70('0x7f')],{'as':_0xdd70('0x16a'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelAccount']['hasMany'](db[_0xdd70('0x135')],{'as':_0xdd70('0x16c'),'foreignKey':_0xdd70('0x18f')});db[_0xdd70('0x5a')][_0xdd70('0x11a')](db[_0xdd70('0x5e')],{'as':_0xdd70('0x16b'),'foreignKey':_0xdd70('0x18f')});db[_0xdd70('0x5a')]['hasMany'](db[_0xdd70('0x5c')],{'as':_0xdd70('0x14f'),'foreignKey':'OpenchannelAccountId'});db[_0xdd70('0x5a')][_0xdd70('0x128')](db[_0xdd70('0x12c')],{'as':_0xdd70('0x16d'),'foreignKey':'ListId'});db[_0xdd70('0x5a')]['belongsTo'](db[_0xdd70('0x87')],{'as':'mandatoryDispositionPause','foreignKey':_0xdd70('0x180')});db[_0xdd70('0x5a')][_0xdd70('0x12b')](db[_0xdd70('0x13')],{'as':_0xdd70('0x15e'),'through':'user_has_openchannel_accounts'});db['OpenchannelApplication']['belongsTo'](db['User'],{'onDelete':_0xdd70('0x17a')});db[_0xdd70('0x5c')][_0xdd70('0x128')](db[_0xdd70('0x13e')],{'onDelete':_0xdd70('0x17a'),'foreignKey':'OpenchannelQueueId'});db[_0xdd70('0x5c')][_0xdd70('0x128')](db[_0xdd70('0x5a')],{'onDelete':_0xdd70('0x17a'),'foreignKey':_0xdd70('0x18f')});db[_0xdd70('0x5c')][_0xdd70('0x128')](db['Interval'],{'onDelete':'restrict','foreignKey':_0xdd70('0x15b')});db[_0xdd70('0x5c')][_0xdd70('0x128')](db[_0xdd70('0x174')],{'onDelete':_0xdd70('0x17a'),'foreignKey':'TagId'});db['OpenchannelInteraction'][_0xdd70('0x11a')](db[_0xdd70('0x5e')],{'as':_0xdd70('0x16b'),'onDelete':_0xdd70('0x118'),'foreignKey':_0xdd70('0x190')});db['OpenchannelInteraction'][_0xdd70('0x128')](db['OpenchannelAccount'],{'as':_0xdd70('0x172'),'foreignKey':_0xdd70('0x18f')});db[_0xdd70('0x135')][_0xdd70('0x128')](db[_0xdd70('0x70')],{'as':'Contact','foreignKey':_0xdd70('0x165')});db[_0xdd70('0x135')][_0xdd70('0x128')](db['User'],{'as':'Owner','foreignKey':_0xdd70('0x119')});db['OpenchannelInteraction'][_0xdd70('0x12b')](db[_0xdd70('0x174')],{'through':_0xdd70('0x191'),'as':_0xdd70('0x176')});db[_0xdd70('0x135')][_0xdd70('0x12b')](db[_0xdd70('0x174')],{'through':_0xdd70('0x191'),'as':_0xdd70('0x18d')});db[_0xdd70('0x135')][_0xdd70('0x12b')](db['User'],{'as':'Users','through':'user_has_openchannel_interactions','foreignKey':_0xdd70('0x190')});db[_0xdd70('0x5e')]['belongsTo'](db['User'],{'onDelete':'cascade','as':_0xdd70('0x13')});db['OpenchannelMessage'][_0xdd70('0x128')](db[_0xdd70('0x70')],{'onDelete':'cascade','as':'Contact'});db[_0xdd70('0x5e')][_0xdd70('0x128')](db[_0xdd70('0x135')],{'onDelete':_0xdd70('0x118'),'as':_0xdd70('0x178'),'foreignKey':_0xdd70('0x190')});db['OpenchannelMessage'][_0xdd70('0x128')](db['Attachment'],{'as':'Attachment','foreignKey':'AttachmentId'});db[_0xdd70('0x5e')][_0xdd70('0x128')](db[_0xdd70('0x5a')],{'as':_0xdd70('0x172'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelQueue'][_0xdd70('0x12b')](db[_0xdd70('0x13')],{'as':_0xdd70('0x15e'),'through':_0xdd70('0x36'),'foreignKey':_0xdd70('0x192')});db[_0xdd70('0x13e')][_0xdd70('0x12b')](db[_0xdd70('0xee')],{'through':_0xdd70('0x193'),'as':_0xdd70('0x15f')});db[_0xdd70('0x142')][_0xdd70('0x11a')](db[_0xdd70('0x81')],{'as':_0xdd70('0x169'),'foreignKey':_0xdd70('0x179'),'onDelete':_0xdd70('0x118')});db[_0xdd70('0x142')][_0xdd70('0x11a')](db[_0xdd70('0x7f')],{'as':_0xdd70('0x16a'),'foreignKey':_0xdd70('0x179')});db[_0xdd70('0x142')][_0xdd70('0x11a')](db[_0xdd70('0x6d')],{'as':'ProactiveActions'});db['ChatWebsite'][_0xdd70('0x11a')](db[_0xdd70('0x66')],{'as':_0xdd70('0x16c')});db[_0xdd70('0x142')][_0xdd70('0x11a')](db['ChatApplication'],{'as':_0xdd70('0x14f')});db[_0xdd70('0x142')][_0xdd70('0x11a')](db['ChatMessage'],{'as':_0xdd70('0x16b')});db[_0xdd70('0x142')][_0xdd70('0x128')](db[_0xdd70('0x12c')],{'as':_0xdd70('0x16d'),'foreignKey':_0xdd70('0x16e')});db[_0xdd70('0x142')][_0xdd70('0x128')](db[_0xdd70('0x85')],{'as':_0xdd70('0x85'),'foreignKey':_0xdd70('0x15b')});db[_0xdd70('0x142')]['belongsTo'](db['MailAccount'],{'as':_0xdd70('0x3c'),'foreignKey':_0xdd70('0x166')});db[_0xdd70('0x142')][_0xdd70('0x128')](db[_0xdd70('0x87')],{'as':_0xdd70('0x15c'),'foreignKey':'mandatoryDispositionPauseId'});db['ChatWebsite'][_0xdd70('0x12b')](db[_0xdd70('0x13')],{'as':_0xdd70('0x15e'),'through':_0xdd70('0x144')});db[_0xdd70('0x62')][_0xdd70('0x128')](db['OpenchannelAccount'],{});db[_0xdd70('0x62')][_0xdd70('0x128')](db[_0xdd70('0x12c')],{'as':_0xdd70('0x16d'),'foreignKey':_0xdd70('0x16e')});db['OpenchannelQueueReport']['belongsTo'](db[_0xdd70('0x70')],{'as':_0xdd70('0x164'),'foreignKey':_0xdd70('0x165')});db['OpenchannelQueueReport'][_0xdd70('0x128')](db[_0xdd70('0x135')],{});db[_0xdd70('0x62')][_0xdd70('0x128')](db[_0xdd70('0x5e')],{});db['OpenchannelQueueReport']['belongsTo'](db['User'],{});db[_0xdd70('0x62')][_0xdd70('0x128')](db[_0xdd70('0x13e')],{});db[_0xdd70('0x64')][_0xdd70('0x128')](db[_0xdd70('0x13')],{'as':_0xdd70('0x194'),'foreignKey':_0xdd70('0x119'),'onDelete':_0xdd70('0x17a')});db[_0xdd70('0x64')][_0xdd70('0x128')](db[_0xdd70('0x6a')],{'as':_0xdd70('0x195'),'foreignKey':_0xdd70('0x196'),'onDelete':'restrict'});db[_0xdd70('0x64')][_0xdd70('0x128')](db['ChatWebsite'],{'as':'Website','foreignKey':'ChatWebsiteId','onDelete':_0xdd70('0x17a')});db['ChatApplication']['belongsTo'](db[_0xdd70('0x174')],{'onDelete':_0xdd70('0x17a'),'foreignKey':_0xdd70('0x17b')});db[_0xdd70('0x66')]['hasMany'](db['ChatMessage'],{'as':_0xdd70('0x16b'),'onDelete':_0xdd70('0x118'),'foreignKey':'ChatInteractionId'});db[_0xdd70('0x66')]['belongsTo'](db[_0xdd70('0x142')],{'as':_0xdd70('0x172'),'foreignKey':_0xdd70('0x179')});db[_0xdd70('0x66')]['belongsTo'](db[_0xdd70('0x70')],{'as':_0xdd70('0x164'),'foreignKey':'ContactId'});db[_0xdd70('0x66')][_0xdd70('0x128')](db[_0xdd70('0x13')],{'as':_0xdd70('0x173'),'foreignKey':_0xdd70('0x119')});db[_0xdd70('0x66')][_0xdd70('0x12b')](db[_0xdd70('0x174')],{'through':_0xdd70('0x197'),'as':_0xdd70('0x176')});db[_0xdd70('0x66')][_0xdd70('0x12b')](db[_0xdd70('0x174')],{'through':'chat_interaction_has_tags','as':_0xdd70('0x18d')});db[_0xdd70('0x66')][_0xdd70('0x12b')](db[_0xdd70('0x13')],{'as':_0xdd70('0x177'),'through':_0xdd70('0x131'),'foreignKey':_0xdd70('0x198')});db[_0xdd70('0x199')][_0xdd70('0x128')](db[_0xdd70('0x13')],{'onDelete':_0xdd70('0x118'),'as':_0xdd70('0x13')});db[_0xdd70('0x199')][_0xdd70('0x128')](db[_0xdd70('0x70')],{'onDelete':_0xdd70('0x118'),'as':'Contact','foreignKey':_0xdd70('0x165')});db[_0xdd70('0x199')][_0xdd70('0x128')](db[_0xdd70('0x66')],{'onDelete':_0xdd70('0x118'),'as':'Interaction','foreignKey':_0xdd70('0x198')});db[_0xdd70('0x199')][_0xdd70('0x128')](db['Attachment'],{'as':_0xdd70('0xf3'),'foreignKey':_0xdd70('0x184')});db['ChatMessage'][_0xdd70('0x128')](db[_0xdd70('0x142')],{'as':_0xdd70('0x172'),'foreignKey':_0xdd70('0x179')});db[_0xdd70('0x68')][_0xdd70('0x11a')](db[_0xdd70('0xf3')],{'as':'Attachments','foreignKey':_0xdd70('0x19a'),'onDelete':_0xdd70('0x118'),'hooks':!![]});db[_0xdd70('0x68')][_0xdd70('0x128')](db[_0xdd70('0x70')],{'onDelete':'cascade','as':_0xdd70('0x164'),'foreignKey':_0xdd70('0x165')});db[_0xdd70('0x68')][_0xdd70('0x128')](db[_0xdd70('0x142')],{'as':_0xdd70('0x172'),'foreignKey':_0xdd70('0x179')});db[_0xdd70('0x6a')]['belongsToMany'](db[_0xdd70('0x13')],{'as':_0xdd70('0x15e'),'through':_0xdd70('0x30'),'hooks':!![]});db[_0xdd70('0x6a')]['belongsToMany'](db[_0xdd70('0xee')],{'through':_0xdd70('0x19b'),'as':_0xdd70('0x15f')});db[_0xdd70('0x129')]['hasMany'](db[_0xdd70('0xd6')],{'as':_0xdd70('0x16b'),'foreignKey':'ChatGroupId','onDelete':_0xdd70('0x118')});db['ChatGroup'][_0xdd70('0x12b')](db[_0xdd70('0x13')],{'as':_0xdd70('0x152'),'through':_0xdd70('0x12a')});db[_0xdd70('0x6d')][_0xdd70('0x128')](db[_0xdd70('0x142')],{'as':'Website','foreignKey':_0xdd70('0x179')});db[_0xdd70('0x19c')][_0xdd70('0x11a')](db[_0xdd70('0x70')],{'as':'Contacts','foreignKey':'CompanyId'});db['CmContact'][_0xdd70('0x11a')](db[_0xdd70('0x72')],{'as':'Hoppers','foreignKey':_0xdd70('0x165')});db[_0xdd70('0x70')][_0xdd70('0x11a')](db[_0xdd70('0x76')],{'as':_0xdd70('0x154'),'foreignKey':_0xdd70('0x165')});db[_0xdd70('0x70')][_0xdd70('0x11a')](db[_0xdd70('0x78')],{'as':_0xdd70('0x155'),'foreignKey':_0xdd70('0x165')});db[_0xdd70('0x70')]['hasMany'](db[_0xdd70('0x7a')],{'as':'ReportAgentPreview','foreignKey':_0xdd70('0x165')});db[_0xdd70('0x70')]['hasMany'](db[_0xdd70('0xdb')],{'as':'JscriptySessions','foreignKey':_0xdd70('0x165')});db['CmContact'][_0xdd70('0x11a')](db[_0xdd70('0x135')],{'as':_0xdd70('0x11f'),'foreignKey':_0xdd70('0x165'),'onDelete':'restrict'});db[_0xdd70('0x70')][_0xdd70('0x11a')](db[_0xdd70('0x66')],{'as':_0xdd70('0x120'),'foreignKey':_0xdd70('0x165'),'onDelete':_0xdd70('0x17a')});db['CmContact']['hasMany'](db[_0xdd70('0x55')],{'as':'SmsInteractions','foreignKey':_0xdd70('0x165'),'onDelete':_0xdd70('0x17a')});db[_0xdd70('0x70')][_0xdd70('0x11a')](db[_0xdd70('0x122')],{'as':_0xdd70('0x132'),'foreignKey':_0xdd70('0x165'),'onDelete':'restrict'});db[_0xdd70('0x70')][_0xdd70('0x11a')](db[_0xdd70('0x123')],{'as':'MailInteractions','foreignKey':_0xdd70('0x165'),'onDelete':_0xdd70('0x17a')});db[_0xdd70('0x70')][_0xdd70('0x128')](db[_0xdd70('0x19c')],{'as':_0xdd70('0x19d'),'foreignKey':'CompanyId'});db[_0xdd70('0x70')][_0xdd70('0x128')](db[_0xdd70('0x12c')],{'as':_0xdd70('0x16d'),'foreignKey':_0xdd70('0x16e'),'onDelete':_0xdd70('0x118')});db[_0xdd70('0x70')][_0xdd70('0x12b')](db['User'],{'as':_0xdd70('0x177'),'through':_0xdd70('0x19e')});db[_0xdd70('0x70')][_0xdd70('0x12b')](db[_0xdd70('0x174')],{'as':_0xdd70('0x176'),'through':_0xdd70('0x19f')});db[_0xdd70('0x70')][_0xdd70('0x12b')](db[_0xdd70('0x174')],{'through':_0xdd70('0x19f'),'as':_0xdd70('0x18d')});db[_0xdd70('0x72')][_0xdd70('0x128')](db[_0xdd70('0x70')],{'as':'Contact','foreignKey':_0xdd70('0x165'),'onDelete':_0xdd70('0x118')});db[_0xdd70('0x72')][_0xdd70('0x128')](db[_0xdd70('0x12c')],{'as':_0xdd70('0x16d'),'foreignKey':_0xdd70('0x16e'),'onDelete':_0xdd70('0x118')});db['CmHopper'][_0xdd70('0x128')](db[_0xdd70('0x13')],{'as':'Agent','foreignKey':_0xdd70('0x119')});db['CmHopper']['belongsTo'](db[_0xdd70('0x138')],{'as':'Queue','foreignKey':'VoiceQueueId','onDelete':'cascade'});db[_0xdd70('0x72')][_0xdd70('0x128')](db[_0xdd70('0x1a0')],{'as':_0xdd70('0x1a0'),'foreignKey':_0xdd70('0x1a1'),'onDelete':_0xdd70('0x118')});db[_0xdd70('0x72')][_0xdd70('0x128')](db[_0xdd70('0x13')],{'as':_0xdd70('0x173'),'foreignKey':_0xdd70('0x1a2')});db['CmHopperBlack']['belongsTo'](db[_0xdd70('0x70')],{'as':_0xdd70('0x164'),'foreignKey':_0xdd70('0x165'),'onDelete':_0xdd70('0x118')});db['CmHopperBlack'][_0xdd70('0x128')](db[_0xdd70('0x12c')],{'as':_0xdd70('0x16d'),'foreignKey':_0xdd70('0x16e'),'onDelete':_0xdd70('0x118')});db[_0xdd70('0x74')][_0xdd70('0x128')](db[_0xdd70('0x138')],{'as':_0xdd70('0x195'),'foreignKey':_0xdd70('0x153'),'onDelete':_0xdd70('0x118')});db['CmHopperBlack']['belongsTo'](db[_0xdd70('0x1a0')],{'as':'Campaign','foreignKey':_0xdd70('0x1a1'),'onDelete':_0xdd70('0x118')});db[_0xdd70('0x7d')][_0xdd70('0x11a')](db[_0xdd70('0x83')],{'as':{'plural':'All','singular':_0xdd70('0x1a3')},'foreignKey':_0xdd70('0x1a4'),'onDelete':_0xdd70('0x118'),'hooks':!![]});db[_0xdd70('0x7d')]['hasMany'](db['Condition'],{'as':{'plural':_0xdd70('0x1a5'),'singular':_0xdd70('0x1a6')},'foreignKey':'AutomationAnyId','onDelete':'cascade','hooks':!![]});db[_0xdd70('0x7d')][_0xdd70('0x11a')](db['Action'],{'as':'Actions','foreignKey':_0xdd70('0x1a7'),'onDelete':_0xdd70('0x118'),'hooks':!![]});db[_0xdd70('0x81')][_0xdd70('0x11a')](db['Disposition'],{'as':_0xdd70('0x169'),'foreignKey':_0xdd70('0x1a8'),'onDelete':_0xdd70('0x118')});db[_0xdd70('0x85')][_0xdd70('0x11a')](db['Interval'],{'as':_0xdd70('0x1a9'),'foreignKey':_0xdd70('0x15b'),'onDelete':_0xdd70('0x118'),'hooks':!![],'required':![]});db[_0xdd70('0x85')]['hasMany'](db[_0xdd70('0x19')],{'as':_0xdd70('0x11d'),'foreignKey':'IntervalId','onDelete':_0xdd70('0x17a')});db[_0xdd70('0x85')][_0xdd70('0x11a')](db[_0xdd70('0x44')],{'as':_0xdd70('0x1aa'),'foreignKey':_0xdd70('0x15b')});db[_0xdd70('0x85')][_0xdd70('0x11a')](db['ChatApplication'],{'as':_0xdd70('0x1ab'),'foreignKey':_0xdd70('0x15b')});db[_0xdd70('0x85')]['hasMany'](db[_0xdd70('0x4a')],{'as':_0xdd70('0x1ac'),'foreignKey':_0xdd70('0x15b')});db[_0xdd70('0x85')][_0xdd70('0x11a')](db['SmsApplication'],{'as':'SmsApplications','foreignKey':_0xdd70('0x15b')});db[_0xdd70('0x8d')][_0xdd70('0x128')](db[_0xdd70('0x3c')],{});db[_0xdd70('0x8d')][_0xdd70('0x128')](db[_0xdd70('0x99')],{'foreignKey':_0xdd70('0x1ad')});db[_0xdd70('0x8d')]['belongsTo'](db[_0xdd70('0x97')],{'foreignKey':'CustomReportId'});db['Sound'][_0xdd70('0x12b')](db[_0xdd70('0x1b')],{'as':_0xdd70('0x1ae'),'through':_0xdd70('0x151'),'onDelete':'restrict'});db[_0xdd70('0x174')][_0xdd70('0x12b')](db[_0xdd70('0x70')],{'through':_0xdd70('0x19f')});db[_0xdd70('0x174')][_0xdd70('0x12b')](db[_0xdd70('0x66')],{'through':'chat_interaction_has_tags'});db[_0xdd70('0x174')][_0xdd70('0x12b')](db[_0xdd70('0x123')],{'through':_0xdd70('0x175')});db[_0xdd70('0x174')][_0xdd70('0x12b')](db['SmsInteraction'],{'through':'sms_interaction_has_tags'});db[_0xdd70('0x174')]['belongsToMany'](db[_0xdd70('0x122')],{'through':_0xdd70('0x183')});db['Tag']['belongsToMany'](db['OpenchannelInteraction'],{'through':_0xdd70('0x191')});db[_0xdd70('0x174')][_0xdd70('0x12b')](db['WhatsappInteraction'],{'through':'whatsapp_interaction_has_tags'});db[_0xdd70('0x92')][_0xdd70('0x11a')](db['Condition'],{'as':{'plural':_0xdd70('0x1af'),'singular':_0xdd70('0x1b0')},'foreignKey':_0xdd70('0x1b1'),'onDelete':_0xdd70('0x118'),'hooks':!![]});db[_0xdd70('0x92')]['hasMany'](db['Condition'],{'as':{'plural':_0xdd70('0x1b2'),'singular':_0xdd70('0x1b3')},'foreignKey':'TriggerAnyId','onDelete':_0xdd70('0x118'),'hooks':!![]});db[_0xdd70('0x92')][_0xdd70('0x11a')](db['Action'],{'as':_0xdd70('0x1b4'),'foreignKey':_0xdd70('0x1b5'),'onDelete':_0xdd70('0x118'),'hooks':!![]});db['AnalyticCustomReport'][_0xdd70('0x11a')](db[_0xdd70('0x9f')],{'as':_0xdd70('0x1b6'),'onDelete':'cascade','foreignKey':_0xdd70('0x1b7'),'hooks':!![]});db[_0xdd70('0x99')][_0xdd70('0x11a')](db[_0xdd70('0x9f')],{'as':_0xdd70('0x1b6'),'onDelete':_0xdd70('0x118'),'foreignKey':_0xdd70('0x1ad')});db['AnalyticMetric'][_0xdd70('0x11a')](db['AnalyticFieldReport'],{'as':_0xdd70('0x1b6'),'onDelete':_0xdd70('0x118'),'foreignKey':_0xdd70('0x1b8')});db[_0xdd70('0x9f')][_0xdd70('0x128')](db[_0xdd70('0x9d')],{'foreignKey':_0xdd70('0x1b8')});db[_0xdd70('0xa3')][_0xdd70('0x11a')](db['SalesforceConfiguration'],{'as':_0xdd70('0x1b9'),'onDelete':'cascade','foreignKey':'AccountId'});db['SalesforceConfiguration'][_0xdd70('0x11a')](db[_0xdd70('0xa7')],{'as':_0xdd70('0x1ba'),'onDelete':_0xdd70('0x118'),'foreignKey':'SubjectId'});db['SalesforceConfiguration'][_0xdd70('0x11a')](db[_0xdd70('0xa7')],{'as':'Descriptions','onDelete':_0xdd70('0x118'),'foreignKey':_0xdd70('0x1bb')});db[_0xdd70('0xa5')][_0xdd70('0x11a')](db[_0xdd70('0xa7')],{'as':_0xdd70('0x1b6'),'onDelete':'cascade','foreignKey':_0xdd70('0x1bc')});db['SalesforceConfiguration'][_0xdd70('0x128')](db[_0xdd70('0xa3')],{'as':_0xdd70('0x172'),'foreignKey':_0xdd70('0x1bd')});db[_0xdd70('0xa7')][_0xdd70('0x11a')](db['SalesforceField'],{'as':'Subject','foreignKey':_0xdd70('0x1be')});db[_0xdd70('0xa7')][_0xdd70('0x11a')](db['SalesforceField'],{'as':_0xdd70('0x1bf'),'foreignKey':'DescriptionId'});db[_0xdd70('0xa7')][_0xdd70('0x11a')](db['SalesforceField'],{'as':_0xdd70('0x1c0'),'foreignKey':_0xdd70('0x1bc')});db['SalesforceField'][_0xdd70('0x128')](db['Variable'],{'as':_0xdd70('0x93'),'foreignKey':_0xdd70('0x1c1')});db['SugarcrmAccount']['hasMany'](db[_0xdd70('0xaa')],{'as':_0xdd70('0x1b9'),'onDelete':'cascade','foreignKey':'AccountId'});db[_0xdd70('0xaa')][_0xdd70('0x11a')](db['SugarcrmField'],{'as':'Subjects','onDelete':_0xdd70('0x118'),'foreignKey':_0xdd70('0x1be')});db['SugarcrmConfiguration'][_0xdd70('0x11a')](db['SugarcrmField'],{'as':'Descriptions','onDelete':_0xdd70('0x118'),'foreignKey':'DescriptionId'});db['SugarcrmConfiguration'][_0xdd70('0x11a')](db['SugarcrmField'],{'as':_0xdd70('0x1b6'),'onDelete':_0xdd70('0x118'),'foreignKey':'FieldId'});db[_0xdd70('0xaa')][_0xdd70('0x128')](db[_0xdd70('0x1c2')],{'as':_0xdd70('0x172'),'foreignKey':_0xdd70('0x1bd')});db[_0xdd70('0x1c3')][_0xdd70('0x11a')](db[_0xdd70('0x1c3')],{'as':_0xdd70('0x1c4'),'foreignKey':_0xdd70('0x1be')});db['SugarcrmField']['hasMany'](db[_0xdd70('0x1c3')],{'as':_0xdd70('0x1bf'),'foreignKey':_0xdd70('0x1bb')});db[_0xdd70('0x1c3')]['hasMany'](db[_0xdd70('0x1c3')],{'as':'Field','foreignKey':_0xdd70('0x1bc')});db[_0xdd70('0x1c3')]['belongsTo'](db[_0xdd70('0x93')],{'as':_0xdd70('0x93'),'foreignKey':_0xdd70('0x1c1')});db[_0xdd70('0xac')][_0xdd70('0x11a')](db[_0xdd70('0xae')],{'as':_0xdd70('0x1b9'),'onDelete':_0xdd70('0x118'),'foreignKey':_0xdd70('0x1bd')});db['DeskConfiguration'][_0xdd70('0x11a')](db[_0xdd70('0x1c5')],{'as':'Subjects','onDelete':_0xdd70('0x118'),'foreignKey':_0xdd70('0x1be')});db['DeskConfiguration'][_0xdd70('0x11a')](db['DeskField'],{'as':_0xdd70('0x1c6'),'onDelete':_0xdd70('0x118'),'foreignKey':_0xdd70('0x1bb')});db['DeskConfiguration'][_0xdd70('0x11a')](db['DeskField'],{'as':_0xdd70('0x1b6'),'onDelete':_0xdd70('0x118'),'foreignKey':_0xdd70('0x1bc')});db['DeskConfiguration']['belongsTo'](db[_0xdd70('0xac')],{'as':_0xdd70('0x172'),'foreignKey':_0xdd70('0x1bd')});db[_0xdd70('0xae')][_0xdd70('0x12b')](db['Tag'],{'through':_0xdd70('0x1c7')});db['DeskField'][_0xdd70('0x11a')](db[_0xdd70('0x1c5')],{'as':_0xdd70('0x1c4'),'foreignKey':_0xdd70('0x1be')});db[_0xdd70('0x1c5')][_0xdd70('0x11a')](db['DeskField'],{'as':'Description','foreignKey':_0xdd70('0x1bb')});db['DeskField'][_0xdd70('0x11a')](db['DeskField'],{'as':_0xdd70('0x1c0'),'foreignKey':'FieldId'});db[_0xdd70('0x1c5')][_0xdd70('0x128')](db[_0xdd70('0x93')],{'as':_0xdd70('0x93'),'foreignKey':_0xdd70('0x1c1')});db[_0xdd70('0x1c8')]['hasMany'](db[_0xdd70('0xb1')],{'as':_0xdd70('0x1b9'),'onDelete':'cascade','foreignKey':_0xdd70('0x1bd')});db[_0xdd70('0xb1')][_0xdd70('0x11a')](db[_0xdd70('0xb3')],{'as':_0xdd70('0x1ba'),'onDelete':'cascade','foreignKey':_0xdd70('0x1be')});db[_0xdd70('0xb1')][_0xdd70('0x11a')](db[_0xdd70('0xb3')],{'as':_0xdd70('0x1c6'),'onDelete':'cascade','foreignKey':_0xdd70('0x1bb')});db[_0xdd70('0xb1')][_0xdd70('0x11a')](db[_0xdd70('0xb3')],{'as':_0xdd70('0x1b6'),'onDelete':'cascade','foreignKey':_0xdd70('0x1bc')});db[_0xdd70('0xb1')]['belongsTo'](db['ZohoAccount'],{'as':_0xdd70('0x172'),'foreignKey':'AccountId'});db[_0xdd70('0xb3')][_0xdd70('0x11a')](db[_0xdd70('0xb3')],{'as':_0xdd70('0x1c4'),'foreignKey':_0xdd70('0x1be')});db[_0xdd70('0xb3')]['hasMany'](db['ZohoField'],{'as':_0xdd70('0x1bf'),'foreignKey':'DescriptionId'});db[_0xdd70('0xb3')][_0xdd70('0x11a')](db[_0xdd70('0xb3')],{'as':_0xdd70('0x1c0'),'foreignKey':_0xdd70('0x1bc')});db[_0xdd70('0xb3')][_0xdd70('0x128')](db['Variable'],{'as':'Variable','foreignKey':_0xdd70('0x1c1')});db['ZendeskAccount'][_0xdd70('0x11a')](db[_0xdd70('0xb7')],{'as':_0xdd70('0x1b9'),'onDelete':_0xdd70('0x118'),'foreignKey':_0xdd70('0x1bd')});db[_0xdd70('0xb7')][_0xdd70('0x11a')](db[_0xdd70('0xb9')],{'as':_0xdd70('0x1ba'),'foreignKey':'SubjectId'});db[_0xdd70('0xb7')][_0xdd70('0x11a')](db[_0xdd70('0xb9')],{'as':_0xdd70('0x1c6'),'foreignKey':_0xdd70('0x1bb')});db['ZendeskConfiguration'][_0xdd70('0x11a')](db[_0xdd70('0xb9')],{'as':_0xdd70('0x1b6'),'foreignKey':_0xdd70('0x1bc')});db[_0xdd70('0xb7')]['belongsTo'](db['ZendeskAccount'],{'as':_0xdd70('0x172'),'foreignKey':_0xdd70('0x1bd')});db[_0xdd70('0xb7')][_0xdd70('0x12b')](db['Tag'],{'through':'int_zendesk_configuration_has_tags'});db['ZendeskField']['hasMany'](db[_0xdd70('0xb9')],{'as':_0xdd70('0x1c4'),'foreignKey':_0xdd70('0x1be')});db[_0xdd70('0xb9')][_0xdd70('0x11a')](db['ZendeskField'],{'as':_0xdd70('0x1bf'),'foreignKey':'DescriptionId'});db[_0xdd70('0xb9')][_0xdd70('0x11a')](db['ZendeskField'],{'as':_0xdd70('0x1c0'),'foreignKey':_0xdd70('0x1bc')});db[_0xdd70('0xb9')][_0xdd70('0x128')](db['Variable'],{'as':_0xdd70('0x93'),'foreignKey':'VariableId'});db[_0xdd70('0xba')][_0xdd70('0x11a')](db[_0xdd70('0xbc')],{'as':_0xdd70('0x1b9'),'onDelete':'cascade','foreignKey':'AccountId'});db[_0xdd70('0xbc')]['hasMany'](db[_0xdd70('0x1c9')],{'as':_0xdd70('0x1ba'),'onDelete':_0xdd70('0x118'),'foreignKey':'SubjectId'});db[_0xdd70('0xbc')]['hasMany'](db[_0xdd70('0x1c9')],{'as':'Descriptions','onDelete':_0xdd70('0x118'),'foreignKey':_0xdd70('0x1bb')});db['FreshdeskConfiguration'][_0xdd70('0x11a')](db['FreshdeskField'],{'as':'Fields','onDelete':_0xdd70('0x118'),'foreignKey':_0xdd70('0x1bc')});db['FreshdeskConfiguration'][_0xdd70('0x128')](db[_0xdd70('0xba')],{'as':'Account','foreignKey':'AccountId'});db[_0xdd70('0xbc')][_0xdd70('0x12b')](db['Tag'],{'through':_0xdd70('0x1ca')});db['FreshdeskField']['hasMany'](db[_0xdd70('0x1c9')],{'as':'Subject','foreignKey':'SubjectId'});db[_0xdd70('0x1c9')][_0xdd70('0x11a')](db[_0xdd70('0x1c9')],{'as':_0xdd70('0x1bf'),'foreignKey':_0xdd70('0x1bb')});db['FreshdeskField']['hasMany'](db[_0xdd70('0x1c9')],{'as':_0xdd70('0x1c0'),'foreignKey':_0xdd70('0x1bc')});db[_0xdd70('0x1c9')][_0xdd70('0x128')](db[_0xdd70('0x93')],{'as':'Variable','foreignKey':_0xdd70('0x1c1')});db[_0xdd70('0xbf')][_0xdd70('0x11a')](db[_0xdd70('0xc1')],{'as':_0xdd70('0x1b9'),'onDelete':_0xdd70('0x118'),'foreignKey':_0xdd70('0x1bd')});db[_0xdd70('0xc1')][_0xdd70('0x11a')](db[_0xdd70('0xc3')],{'as':_0xdd70('0x1ba'),'foreignKey':'SubjectId'});db[_0xdd70('0xc1')]['hasMany'](db[_0xdd70('0xc3')],{'as':_0xdd70('0x1c6'),'foreignKey':_0xdd70('0x1bb')});db[_0xdd70('0xc1')][_0xdd70('0x11a')](db[_0xdd70('0xc3')],{'as':_0xdd70('0x1b6'),'foreignKey':'FieldId'});db[_0xdd70('0xc1')][_0xdd70('0x128')](db['VtigerAccount'],{'as':'Account','foreignKey':'AccountId'});db['VtigerField'][_0xdd70('0x11a')](db[_0xdd70('0xc3')],{'as':'Subject','foreignKey':'SubjectId'});db[_0xdd70('0xc3')][_0xdd70('0x11a')](db[_0xdd70('0xc3')],{'as':_0xdd70('0x1bf'),'foreignKey':_0xdd70('0x1bb')});db[_0xdd70('0xc3')][_0xdd70('0x11a')](db[_0xdd70('0xc3')],{'as':_0xdd70('0x1c0'),'foreignKey':_0xdd70('0x1bc')});db[_0xdd70('0xc3')][_0xdd70('0x128')](db[_0xdd70('0x93')],{'as':_0xdd70('0x93'),'foreignKey':_0xdd70('0x1c1')});db[_0xdd70('0xc5')][_0xdd70('0x11a')](db[_0xdd70('0xc7')],{'as':_0xdd70('0x1b9'),'onDelete':_0xdd70('0x118'),'foreignKey':_0xdd70('0x1bd')});db[_0xdd70('0xc7')]['hasMany'](db[_0xdd70('0xc9')],{'as':_0xdd70('0x1ba'),'foreignKey':_0xdd70('0x1be')});db[_0xdd70('0xc7')][_0xdd70('0x11a')](db[_0xdd70('0xc9')],{'as':'Descriptions','foreignKey':'DescriptionId'});db['ServicenowConfiguration'][_0xdd70('0x11a')](db['ServicenowField'],{'as':_0xdd70('0x1b6'),'foreignKey':_0xdd70('0x1bc')});db['ServicenowConfiguration'][_0xdd70('0x128')](db[_0xdd70('0xc5')],{'as':_0xdd70('0x172'),'foreignKey':_0xdd70('0x1bd')});db['ServicenowField']['hasMany'](db[_0xdd70('0xc9')],{'as':_0xdd70('0x1c4'),'foreignKey':_0xdd70('0x1be')});db[_0xdd70('0xc9')][_0xdd70('0x11a')](db[_0xdd70('0xc9')],{'as':_0xdd70('0x1bf'),'foreignKey':'DescriptionId'});db['ServicenowField'][_0xdd70('0x11a')](db[_0xdd70('0xc9')],{'as':'Field','foreignKey':_0xdd70('0x1bc')});db[_0xdd70('0xc9')][_0xdd70('0x128')](db[_0xdd70('0x93')],{'as':_0xdd70('0x93'),'foreignKey':'VariableId'});db[_0xdd70('0x1cb')][_0xdd70('0x11a')](db[_0xdd70('0xcb')],{'as':_0xdd70('0x1b9'),'onDelete':_0xdd70('0x118'),'foreignKey':_0xdd70('0x1bd')});db[_0xdd70('0xcb')]['hasMany'](db['Dynamics365Field'],{'as':_0xdd70('0x1ba'),'onDelete':_0xdd70('0x118'),'foreignKey':_0xdd70('0x1be')});db[_0xdd70('0xcb')][_0xdd70('0x11a')](db[_0xdd70('0x1cc')],{'as':_0xdd70('0x1c6'),'onDelete':_0xdd70('0x118'),'foreignKey':'DescriptionId'});db[_0xdd70('0xcb')]['hasMany'](db[_0xdd70('0x1cc')],{'as':'Fields','onDelete':_0xdd70('0x118'),'foreignKey':_0xdd70('0x1bc')});db['Dynamics365Configuration'][_0xdd70('0x128')](db[_0xdd70('0x1cb')],{'as':_0xdd70('0x172'),'foreignKey':_0xdd70('0x1bd')});db[_0xdd70('0x1cc')][_0xdd70('0x11a')](db['Dynamics365Field'],{'as':'Subject','foreignKey':_0xdd70('0x1be')});db[_0xdd70('0x1cc')][_0xdd70('0x11a')](db[_0xdd70('0x1cc')],{'as':'Description','foreignKey':_0xdd70('0x1bb')});db[_0xdd70('0x1cc')][_0xdd70('0x11a')](db[_0xdd70('0x1cc')],{'as':'Field','foreignKey':_0xdd70('0x1bc')});db[_0xdd70('0x1cc')][_0xdd70('0x128')](db[_0xdd70('0x93')],{'as':_0xdd70('0x93'),'foreignKey':_0xdd70('0x1c1')});db[_0xdd70('0xce')][_0xdd70('0x11a')](db[_0xdd70('0xd0')],{'as':_0xdd70('0x1b9'),'onDelete':'cascade','foreignKey':_0xdd70('0x1bd')});db[_0xdd70('0xd0')][_0xdd70('0x11a')](db[_0xdd70('0xd2')],{'as':_0xdd70('0x1ba'),'foreignKey':'SubjectId'});db['FreshsalesConfiguration'][_0xdd70('0x11a')](db[_0xdd70('0xd2')],{'as':_0xdd70('0x1c6'),'foreignKey':'DescriptionId'});db[_0xdd70('0xd0')][_0xdd70('0x11a')](db[_0xdd70('0xd2')],{'as':_0xdd70('0x1b6'),'foreignKey':_0xdd70('0x1bc')});db[_0xdd70('0xd0')]['belongsTo'](db['FreshsalesAccount'],{'as':'Account','foreignKey':_0xdd70('0x1bd')});db[_0xdd70('0xd2')][_0xdd70('0x11a')](db['FreshsalesField'],{'as':_0xdd70('0x1c4'),'foreignKey':_0xdd70('0x1be')});db[_0xdd70('0xd2')]['hasMany'](db[_0xdd70('0xd2')],{'as':_0xdd70('0x1bf'),'foreignKey':_0xdd70('0x1bb')});db[_0xdd70('0xd2')]['hasMany'](db[_0xdd70('0xd2')],{'as':_0xdd70('0x1c0'),'foreignKey':'FieldId'});db[_0xdd70('0xd2')][_0xdd70('0x128')](db[_0xdd70('0x93')],{'as':_0xdd70('0x93'),'foreignKey':_0xdd70('0x1c1')});db[_0xdd70('0x1cd')][_0xdd70('0x128')](db[_0xdd70('0x142')],{});db[_0xdd70('0x1cd')]['belongsTo'](db['CmList'],{'as':_0xdd70('0x16d'),'foreignKey':_0xdd70('0x16e')});db[_0xdd70('0x1cd')][_0xdd70('0x128')](db[_0xdd70('0x70')],{'as':_0xdd70('0x164'),'foreignKey':_0xdd70('0x165')});db['ChatQueueReport'][_0xdd70('0x128')](db[_0xdd70('0x66')],{});db[_0xdd70('0x1cd')][_0xdd70('0x128')](db[_0xdd70('0x199')],{});db['ChatQueueReport']['belongsTo'](db['User'],{});db[_0xdd70('0x1cd')][_0xdd70('0x128')](db['ChatQueue'],{});db[_0xdd70('0xd6')][_0xdd70('0x128')](db[_0xdd70('0x13')],{'onDelete':_0xdd70('0x118'),'foreignKey':_0xdd70('0x1ce')});db['ChatInternalMessage'][_0xdd70('0x128')](db[_0xdd70('0x13')],{'onDelete':_0xdd70('0x118'),'foreignKey':_0xdd70('0x1cf')});db[_0xdd70('0xdb')][_0xdd70('0x11a')](db[_0xdd70('0x1d0')],{'foreignKey':_0xdd70('0x1d1'),'onDelete':_0xdd70('0x118')});db[_0xdd70('0xdb')][_0xdd70('0x11a')](db['JscriptyAnswerReport'],{'foreignKey':_0xdd70('0x1d1'),'onDelete':'cascade'});db[_0xdd70('0xdd')][_0xdd70('0x128')](db[_0xdd70('0x187')],{});db['SmsQueueReport'][_0xdd70('0x128')](db[_0xdd70('0x12c')],{'as':_0xdd70('0x16d'),'foreignKey':'ListId'});db[_0xdd70('0xdd')][_0xdd70('0x128')](db['CmContact'],{'as':_0xdd70('0x164'),'foreignKey':_0xdd70('0x165')});db[_0xdd70('0xdd')][_0xdd70('0x128')](db[_0xdd70('0x55')],{});db[_0xdd70('0xdd')][_0xdd70('0x128')](db[_0xdd70('0x189')],{});db[_0xdd70('0xdd')][_0xdd70('0x128')](db['User'],{});db[_0xdd70('0xdd')][_0xdd70('0x128')](db[_0xdd70('0x58')],{});db[_0xdd70('0xe3')]['hasMany'](db[_0xdd70('0xdb')],{'foreignKey':_0xdd70('0x1d2')});db[_0xdd70('0xe3')][_0xdd70('0x11a')](db['JscriptyQuestionReport'],{'foreignKey':'ProjectId'});db['JscriptyProject'][_0xdd70('0x11a')](db[_0xdd70('0xd8')],{'foreignKey':_0xdd70('0x1d2')});db['SquareProject'][_0xdd70('0x12b')](db[_0xdd70('0x13')],{'as':_0xdd70('0x177'),'through':_0xdd70('0x14b')});db['Team']['belongsToMany'](db[_0xdd70('0x13')],{'as':_0xdd70('0x15e'),'through':_0xdd70('0x12e')});db[_0xdd70('0xee')][_0xdd70('0x12b')](db[_0xdd70('0x138')],{'through':_0xdd70('0x112'),'as':_0xdd70('0x139')});db[_0xdd70('0xee')]['belongsToMany'](db[_0xdd70('0x3e')],{'through':'team_has_mail_queues','as':'MailQueues'});db[_0xdd70('0xee')]['belongsToMany'](db[_0xdd70('0x6a')],{'through':_0xdd70('0x19b'),'as':_0xdd70('0x1d3')});db[_0xdd70('0xee')][_0xdd70('0x12b')](db['FaxQueue'],{'through':_0xdd70('0x185'),'as':_0xdd70('0x13c')});db[_0xdd70('0xee')]['belongsToMany'](db['SmsQueue'],{'through':_0xdd70('0x18e'),'as':_0xdd70('0x13d')});db[_0xdd70('0xee')]['belongsToMany'](db[_0xdd70('0x13e')],{'through':_0xdd70('0x193'),'as':'OpenchannelQueues'});db[_0xdd70('0xee')]['belongsToMany'](db[_0xdd70('0x10f')],{'through':_0xdd70('0x1d4'),'as':_0xdd70('0x140')});db['Team'][_0xdd70('0x12b')](db[_0xdd70('0x13b')],{'through':_0xdd70('0x1d5'),'as':_0xdd70('0x141')});db['Campaign'][_0xdd70('0x11a')](db[_0xdd70('0x72')],{'as':_0xdd70('0x1d6'),'foreignKey':_0xdd70('0x1a1')});db[_0xdd70('0x1a0')][_0xdd70('0x11a')](db[_0xdd70('0x76')],{'as':_0xdd70('0x154'),'foreignKey':_0xdd70('0x1a1')});db[_0xdd70('0x1a0')]['hasMany'](db[_0xdd70('0x78')],{'as':_0xdd70('0x155'),'foreignKey':_0xdd70('0x1a1')});db[_0xdd70('0x1a0')][_0xdd70('0x11a')](db[_0xdd70('0x74')],{'as':_0xdd70('0x156'),'foreignKey':'CampaignId'});db[_0xdd70('0x1a0')][_0xdd70('0x128')](db[_0xdd70('0x2a')],{'as':_0xdd70('0x2a'),'foreignKey':_0xdd70('0x158')});db[_0xdd70('0x1a0')][_0xdd70('0x128')](db[_0xdd70('0x2a')],{'as':'TrunkBackup','foreignKey':_0xdd70('0x15a')});db[_0xdd70('0x1a0')][_0xdd70('0x128')](db[_0xdd70('0x85')],{'as':_0xdd70('0x85'),'foreignKey':_0xdd70('0x15b')});db['Campaign']['belongsTo'](db[_0xdd70('0xe9')],{'as':_0xdd70('0xe9'),'foreignKey':_0xdd70('0x1d7')});db['Campaign'][_0xdd70('0x12b')](db['CmList'],{'as':_0xdd70('0x1d8'),'through':_0xdd70('0x1d9')});db[_0xdd70('0x1a0')]['belongsToMany'](db['CmList'],{'as':_0xdd70('0x160'),'through':_0xdd70('0x1da')});db[_0xdd70('0xf3')][_0xdd70('0x128')](db[_0xdd70('0x68')],{'as':_0xdd70('0x68'),'foreignKey':_0xdd70('0x19a')});db[_0xdd70('0xf7')][_0xdd70('0x128')](db[_0xdd70('0x42')],{});db['MailTransferReport'][_0xdd70('0x128')](db[_0xdd70('0x123')],{});db[_0xdd70('0xf7')][_0xdd70('0x128')](db[_0xdd70('0x3c')],{'foreignKey':'FromMailAccountId','as':'FromAccount'});db['MailTransferReport']['belongsTo'](db[_0xdd70('0x13')],{'foreignKey':_0xdd70('0x1db'),'as':_0xdd70('0x1dc')});db[_0xdd70('0xf7')][_0xdd70('0x128')](db[_0xdd70('0x13')],{'foreignKey':_0xdd70('0x1dd'),'as':_0xdd70('0x1de')});db[_0xdd70('0xf7')]['belongsTo'](db[_0xdd70('0x3e')],{'foreignKey':_0xdd70('0x1df'),'as':'ToQueue'});db[_0xdd70('0xf7')][_0xdd70('0x128')](db[_0xdd70('0x3c')],{'foreignKey':_0xdd70('0x1e0'),'as':'ToAccount'});db[_0xdd70('0xf9')]['belongsTo'](db[_0xdd70('0x199')],{});db[_0xdd70('0xf9')][_0xdd70('0x128')](db[_0xdd70('0x66')],{});db[_0xdd70('0xf9')][_0xdd70('0x128')](db['ChatWebsite'],{'foreignKey':_0xdd70('0x1e1'),'as':_0xdd70('0x1e2')});db[_0xdd70('0xf9')][_0xdd70('0x128')](db[_0xdd70('0x13')],{'foreignKey':'FromUserId','as':_0xdd70('0x1dc')});db[_0xdd70('0xf9')][_0xdd70('0x128')](db[_0xdd70('0x13')],{'foreignKey':_0xdd70('0x1dd'),'as':'ToAgent'});db[_0xdd70('0xf9')]['belongsTo'](db[_0xdd70('0x6a')],{'foreignKey':_0xdd70('0x1e3'),'as':_0xdd70('0x1e4')});db[_0xdd70('0xf9')][_0xdd70('0x128')](db[_0xdd70('0x142')],{'foreignKey':'ToChatWebsiteId','as':_0xdd70('0x1e5')});db[_0xdd70('0xfb')][_0xdd70('0x128')](db['FaxMessage'],{});db['FaxTransferReport']['belongsTo'](db[_0xdd70('0x122')],{});db[_0xdd70('0xfb')][_0xdd70('0x128')](db[_0xdd70('0x48')],{'foreignKey':'FromFaxAccountId','as':_0xdd70('0x1e2')});db[_0xdd70('0xfb')][_0xdd70('0x128')](db[_0xdd70('0x13')],{'foreignKey':_0xdd70('0x1db'),'as':_0xdd70('0x1dc')});db[_0xdd70('0xfb')]['belongsTo'](db['User'],{'foreignKey':'ToUserId','as':_0xdd70('0x1de')});db[_0xdd70('0xfb')][_0xdd70('0x128')](db[_0xdd70('0x4f')],{'foreignKey':_0xdd70('0x1e6'),'as':'ToQueue'});db['FaxTransferReport']['belongsTo'](db['FaxAccount'],{'foreignKey':_0xdd70('0x1e7'),'as':_0xdd70('0x1e5')});db[_0xdd70('0xfd')][_0xdd70('0x128')](db[_0xdd70('0x5e')],{});db[_0xdd70('0xfd')][_0xdd70('0x128')](db[_0xdd70('0x135')],{});db[_0xdd70('0xfd')][_0xdd70('0x128')](db[_0xdd70('0x5a')],{'foreignKey':'FromOpenchannelAccountId','as':_0xdd70('0x1e2')});db[_0xdd70('0xfd')][_0xdd70('0x128')](db[_0xdd70('0x13')],{'foreignKey':_0xdd70('0x1db'),'as':'FromAgent'});db[_0xdd70('0xfd')][_0xdd70('0x128')](db[_0xdd70('0x13')],{'foreignKey':'ToUserId','as':_0xdd70('0x1de')});db['OpenchannelTransferReport'][_0xdd70('0x128')](db[_0xdd70('0x13e')],{'foreignKey':_0xdd70('0x1e8'),'as':_0xdd70('0x1e4')});db[_0xdd70('0xfd')]['belongsTo'](db[_0xdd70('0x5a')],{'foreignKey':_0xdd70('0x1e9'),'as':'ToAccount'});db[_0xdd70('0x1ea')][_0xdd70('0x128')](db[_0xdd70('0x189')],{});db[_0xdd70('0x1ea')][_0xdd70('0x128')](db[_0xdd70('0x55')],{});db['SmsTransferReport']['belongsTo'](db[_0xdd70('0x187')],{'foreignKey':'FromSmsAccountId','as':_0xdd70('0x1e2')});db[_0xdd70('0x1ea')][_0xdd70('0x128')](db[_0xdd70('0x13')],{'foreignKey':'FromUserId','as':'FromAgent'});db[_0xdd70('0x1ea')]['belongsTo'](db[_0xdd70('0x13')],{'foreignKey':_0xdd70('0x1dd'),'as':_0xdd70('0x1de')});db[_0xdd70('0x1ea')][_0xdd70('0x128')](db[_0xdd70('0x58')],{'foreignKey':_0xdd70('0x1eb'),'as':'ToQueue'});db[_0xdd70('0x1ea')][_0xdd70('0x128')](db[_0xdd70('0x187')],{'foreignKey':_0xdd70('0x1ec'),'as':_0xdd70('0x1e5')});db[_0xdd70('0x12c')][_0xdd70('0x11a')](db[_0xdd70('0x81')],{'as':'Dispositions','foreignKey':_0xdd70('0x16e'),'onDelete':_0xdd70('0x118')});db[_0xdd70('0x12c')][_0xdd70('0x11a')](db['CmCustomField'],{'as':'CustomFields','foreignKey':_0xdd70('0x16e')});db[_0xdd70('0x12c')][_0xdd70('0x11a')](db['CmContact'],{'as':_0xdd70('0x1ed'),'onDelete':_0xdd70('0x118'),'foreignKey':_0xdd70('0x16e')});db[_0xdd70('0x12c')][_0xdd70('0x11a')](db[_0xdd70('0x76')],{'as':_0xdd70('0x154'),'foreignKey':_0xdd70('0x16e')});db[_0xdd70('0x12c')][_0xdd70('0x11a')](db[_0xdd70('0x78')],{'as':_0xdd70('0x11e'),'foreignKey':_0xdd70('0x16e')});db['CmList']['hasMany'](db[_0xdd70('0x7a')],{'as':_0xdd70('0x7a'),'foreignKey':_0xdd70('0x16e')});db[_0xdd70('0x12c')][_0xdd70('0x12b')](db[_0xdd70('0x138')],{'as':_0xdd70('0x1ee'),'through':_0xdd70('0x15d')});db[_0xdd70('0x12c')][_0xdd70('0x12b')](db['User'],{'as':_0xdd70('0x15e'),'through':_0xdd70('0x12d')});db[_0xdd70('0x13b')]['hasMany'](db[_0xdd70('0x19')],{'as':_0xdd70('0x11d'),'onDelete':_0xdd70('0x118')});db[_0xdd70('0x13b')][_0xdd70('0x12b')](db[_0xdd70('0x13')],{'as':_0xdd70('0x15e'),'through':_0xdd70('0x114')});db[_0xdd70('0x13b')][_0xdd70('0x12b')](db[_0xdd70('0xee')],{'through':_0xdd70('0x1d5'),'as':_0xdd70('0x15f')});db[_0xdd70('0x101')][_0xdd70('0x11a')](db[_0xdd70('0x13')],{'as':'Users','foreignKey':_0xdd70('0x1ef')});db[_0xdd70('0x101')]['hasMany'](db['UserProfileSection'],{'as':_0xdd70('0x1f0'),'foreignKey':'userProfileId','onDelete':_0xdd70('0x118')});db['UserProfileSection'][_0xdd70('0x11a')](db[_0xdd70('0x103')],{'as':'Resources','foreignKey':_0xdd70('0x1f1'),'onDelete':_0xdd70('0x118')});db[_0xdd70('0x105')][_0xdd70('0x11a')](db[_0xdd70('0x81')],{'as':_0xdd70('0x169'),'foreignKey':_0xdd70('0x1f2'),'onDelete':'cascade'});db[_0xdd70('0x105')]['hasMany'](db[_0xdd70('0x7f')],{'as':'Answers','foreignKey':_0xdd70('0x1f2')});db[_0xdd70('0x105')][_0xdd70('0x11a')](db[_0xdd70('0x10a')],{'as':_0xdd70('0x16b'),'foreignKey':_0xdd70('0x1f2')});db[_0xdd70('0x105')]['hasMany'](db['WhatsappInteraction'],{'as':_0xdd70('0x16c')});db[_0xdd70('0x105')][_0xdd70('0x11a')](db[_0xdd70('0x107')],{'as':_0xdd70('0x14f')});db['WhatsappAccount']['belongsTo'](db['CmList'],{'as':_0xdd70('0x16d'),'foreignKey':_0xdd70('0x16e')});db['WhatsappAccount'][_0xdd70('0x128')](db[_0xdd70('0x87')],{'as':_0xdd70('0x15c'),'foreignKey':_0xdd70('0x180')});db[_0xdd70('0x105')][_0xdd70('0x12b')](db[_0xdd70('0x13')],{'as':_0xdd70('0x15e'),'through':_0xdd70('0x1f3')});db[_0xdd70('0x107')]['belongsTo'](db['User'],{'onDelete':_0xdd70('0x17a')});db[_0xdd70('0x107')][_0xdd70('0x128')](db['WhatsappQueue'],{'onDelete':_0xdd70('0x17a')});db[_0xdd70('0x107')][_0xdd70('0x128')](db[_0xdd70('0x105')],{'onDelete':_0xdd70('0x17a')});db[_0xdd70('0x107')]['belongsTo'](db[_0xdd70('0x85')],{'onDelete':_0xdd70('0x17a'),'foreignKey':_0xdd70('0x15b')});db[_0xdd70('0x107')][_0xdd70('0x128')](db[_0xdd70('0x174')],{'onDelete':_0xdd70('0x17a'),'foreignKey':_0xdd70('0x17b')});db[_0xdd70('0x124')][_0xdd70('0x11a')](db['WhatsappMessage'],{'as':_0xdd70('0x16b'),'onDelete':_0xdd70('0x118'),'foreignKey':_0xdd70('0x1f4')});db['WhatsappInteraction'][_0xdd70('0x128')](db[_0xdd70('0x105')],{'as':'Account','foreignKey':_0xdd70('0x1f2')});db[_0xdd70('0x124')][_0xdd70('0x128')](db[_0xdd70('0x70')],{'as':_0xdd70('0x164'),'foreignKey':_0xdd70('0x165')});db['WhatsappInteraction']['belongsTo'](db['User'],{'as':_0xdd70('0x173'),'foreignKey':_0xdd70('0x119')});db[_0xdd70('0x124')][_0xdd70('0x12b')](db[_0xdd70('0x174')],{'through':_0xdd70('0x1f5'),'as':_0xdd70('0x176')});db[_0xdd70('0x124')][_0xdd70('0x12b')](db['Tag'],{'through':_0xdd70('0x1f5'),'as':_0xdd70('0x18d')});db[_0xdd70('0x124')][_0xdd70('0x12b')](db['User'],{'as':'Users','through':_0xdd70('0x137'),'foreignKey':_0xdd70('0x1f4')});db[_0xdd70('0x10a')][_0xdd70('0x128')](db[_0xdd70('0x13')],{'as':_0xdd70('0x13')});db[_0xdd70('0x10a')]['belongsTo'](db[_0xdd70('0x70')],{'onDelete':_0xdd70('0x118'),'as':_0xdd70('0x164')});db[_0xdd70('0x10a')][_0xdd70('0x128')](db[_0xdd70('0x124')],{'onDelete':_0xdd70('0x118'),'as':'Interaction','foreignKey':'WhatsappInteractionId'});db[_0xdd70('0x10a')][_0xdd70('0x128')](db[_0xdd70('0x105')],{'as':_0xdd70('0x172'),'foreignKey':_0xdd70('0x1f2')});db[_0xdd70('0x10c')][_0xdd70('0x128')](db[_0xdd70('0x105')],{});db[_0xdd70('0x10c')][_0xdd70('0x128')](db[_0xdd70('0x12c')],{'as':_0xdd70('0x16d'),'foreignKey':_0xdd70('0x16e')});db[_0xdd70('0x10c')][_0xdd70('0x128')](db[_0xdd70('0x70')],{'as':_0xdd70('0x164'),'foreignKey':_0xdd70('0x165')});db[_0xdd70('0x10c')]['belongsTo'](db[_0xdd70('0x124')],{});db['WhatsappQueueReport'][_0xdd70('0x128')](db[_0xdd70('0x10f')],{});db['WhatsappQueueReport'][_0xdd70('0x128')](db[_0xdd70('0x10a')],{});db[_0xdd70('0x10c')][_0xdd70('0x128')](db[_0xdd70('0x13')],{});db[_0xdd70('0x10e')][_0xdd70('0x128')](db[_0xdd70('0x10a')],{});db[_0xdd70('0x10e')][_0xdd70('0x128')](db[_0xdd70('0x124')],{});db[_0xdd70('0x10e')][_0xdd70('0x128')](db[_0xdd70('0x105')],{'foreignKey':_0xdd70('0x1f6'),'as':_0xdd70('0x1e2')});db[_0xdd70('0x10e')]['belongsTo'](db[_0xdd70('0x105')],{'foreignKey':_0xdd70('0x1f7'),'as':'ToAccount'});db[_0xdd70('0x10e')][_0xdd70('0x128')](db[_0xdd70('0x10f')],{'foreignKey':'ToQueueId','as':_0xdd70('0x1e4')});db[_0xdd70('0x10e')]['belongsTo'](db['User'],{'foreignKey':_0xdd70('0x1db'),'as':_0xdd70('0x1dc')});db[_0xdd70('0x10e')][_0xdd70('0x128')](db[_0xdd70('0x13')],{'foreignKey':_0xdd70('0x1dd'),'as':'ToAgent'});db[_0xdd70('0x10f')][_0xdd70('0x12b')](db[_0xdd70('0x13')],{'as':'Agents','through':_0xdd70('0x1f8'),'foreignKey':_0xdd70('0x1f9')});db[_0xdd70('0x10f')][_0xdd70('0x12b')](db['Team'],{'through':_0xdd70('0x1d4'),'as':_0xdd70('0x15f')});module['exports']={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0x4205=['Groups','chat_group_has_users','CmContact','Contacts','cm_user_has_contacts','belongsToMany','Lists','cm_user_has_lists','user_has_mail_interactions','user_has_fax_interactions','SmsInteractions','user_has_openchannel_interactions','user_has_whatsapp_interactions','MailQueue','MailQueues','UserMailQueue','ChatQueue','ChatQueues','FaxQueues','VoicePrefixes','user_has_voice_prefixes','user_has_chat_websites','FaxAccounts','user_has_fax_accounts','MailAccounts','OpenchannelAccount','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','SquareProjects','user_has_square_projects','VoiceChanSpy','SpiedAgents','ChanSpyId','VoiceContext','Applications','Sounds','Members','VoiceQueueId','Hoppers','HopperFinals','HopperHistories','HopperBlacks','belongsTo','TrunkBackup','IntervalId','mandatoryDispositionPauseId','voice_queues_has_cm_lists','Agents','Teams','BlackLists','voice_queues_has_cm_blacklists','ScreenRecording','Messages','mailboxuser','mailbox','QueueCalls','AgentReports','uniqueid','Contact','ContactId','MailAccountId','Imap','hasOne','Smtp','Dispositions','ListId','Template','TemplateId','Pause','mandatoryDispositionPause','team_has_mail_queues','Account','Owner','mail_interaction_has_tags','Tag','Users','Interaction','MailInteractionId','ChatWebsiteId','restrict','TagId','List','FaxAccountId','Answers','Interactions','FaxApplication','FaxMessage','FaxInteractionId','fax_interaction_has_tags','Tags','ThroughTags','AttachmentId','FaxQueueReport','SmsAccountId','SmsApplication','SmsInteractionId','sms_interaction_has_tags','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelApplication','user_has_openchannel_accounts','OpenchannelQueueId','openchannel_interaction_has_tags','OpenchannelInteractionId','team_has_openchannel_queues','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','Attachments','ChatOfflineMessageId','team_has_chat_queues','ChatGroupId','CompanyId','JscriptySessions','Company','cm_contact_has_tags','CmHopper','Agent','Queue','CampaignId','OwnerId','All','OneAll','AutomationAllId','Any','Actions','ParentId','Intervals','MailApplications','ChatApplications','FaxApplications','AnalyticDefaultReport','CustomReportId','Mohs','moh_has_sounds','whatsapp_interaction_has_tags','AllCondition','AnyConditions','AnyCondition','TriggerAnyId','Fields','DefaultReportId','MetricId','Configurations','AccountId','SalesforceConfiguration','SalesforceField','Subjects','SubjectId','Descriptions','DescriptionId','FieldId','Subject','Field','Variable','VariableId','SugarcrmConfiguration','Description','int_desk_configuration_has_tags','ZohoField','ZendeskAccount','FreshdeskField','int_freshdesk_configuration_has_tags','VtigerAccount','VtigerConfiguration','ServicenowConfiguration','ServicenowField','Dynamics365Configuration','Dynamics365Account','SessionId','JscriptyAnswerReport','ProjectId','user_has_teams','VoiceQueues','team_has_fax_queues','SmsQueues','OpenchannelQueues','WhatsappQueues','TrunkId','TrunkBackupId','SquareProjectId','campaigns_has_cm_lists','campaigns_has_cm_blacklists','FromAccount','FromUserId','FromAgent','ToUserId','ToAgent','ToMailQueueId','ToQueue','ToMailAccountId','FromChatWebsiteId','ToChatWebsiteId','ToAccount','FromFaxAccountId','ToFaxQueueId','FromOpenchannelAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','FromSmsAccountId','ToSmsQueueId','CustomFields','HopperHistory','Queues','UserProfileSections','Resources','WhatsappAccountId','WhatsappInteractionId','WhatsappTransferReport','ToWhatsappAccountId','ToQueueId','team_has_whatsapp_queues','exports','../config/environment','sequelize','lodash','jstz','determine','defaultsDeep','xcall','127.0.0.1','mysql','utf8mb4','name','xC@LL1234','utf8','database','username','password','options','sequelizeHistory','User','import','../api/voiceChanSpy/voiceChanSpy.model','../api/voiceContext/voiceContext.model','VoiceExtension','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','VoiceRecording','../api/screenRecording/screenRecording.model','../api/voiceMail/voiceMail.model','VoiceMailMessage','VoiceCallReport','../api/voiceCallReport/voiceCallReport.model','../api/voiceDialReport/voiceDialReport.model','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','Trunk','VoiceTransferReport','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','UserChatQueue','../api/userChatQueue/userChatQueue.model','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','MailServerOut','MailAccount','../api/mailAccount/mailAccount.model','../api/mailQueue/mailQueue.model','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','../api/mailInteraction/mailInteraction.model','MailMessage','../api/mailMessage/mailMessage.model','MailApplication','../api/mailApplication/mailApplication.model','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','Dashboard','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','../api/faxApplication/faxApplication.model','../api/faxInteraction/faxInteraction.model','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','SmsAccount','../api/smsAccount/smsAccount.model','../api/smsApplication/smsApplication.model','SmsInteraction','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','../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','ChatApplication','../api/chatApplication/chatApplication.model','ChatInteraction','../api/chatInteraction/chatInteraction.model','ChatMessage','../api/chatMessage/chatMessage.model','ChatOfflineMessage','../api/chatOfflineMessage/chatOfflineMessage.model','ChatGroup','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','../api/cmContact/cmContact.model','CmHopperBlack','CmHopperFinal','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','../api/reportAgentPreview/reportAgentPreview.model','CmCustomField','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','Automation','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','Disposition','../api/disposition/disposition.model','Condition','Interval','../api/interval/interval.model','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','Sound','../api/tag/tag.model','../api/template/template.model','Trigger','Integration','../api/integration/integration.model','IntegrationReport','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticMetric','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','../api/intSalesforceAccount/intSalesforceAccount.model','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','../api/intZohoField/intZohoField.model','../api/intZendeskAccount/intZendeskAccount.model','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','FreshdeskAccount','../api/intFreshdeskAccount/intFreshdeskAccount.model','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','../api/intVtigerField/intVtigerField.model','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','../api/intServicenowField/intServicenowField.model','../api/intDynamics365Account/intDynamics365Account.model','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','Network','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','SquareProject','../api/squareProject/squareProject.model','SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','License','../api/license/license.model','Campaign','../api/campaign/campaign.model','Migration','Attachment','Plugin','../api/plugin/plugin.model','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','CmList','VoicePrefix','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfile/userProfile.model','UserProfileSection','../api/userProfileSection/userProfileSection.model','UserProfileResource','../api/userProfileResource/userProfileResource.model','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','CloudProvider','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','VoiceMail','cascade','hasMany','Recordings','UserId','VoiceQueuesRt','Extensions','OpenchannelInteractions','ChatInteractions','FaxInteraction','FaxInteractions','MailInteraction','MailInteractions','WhatsappInteractions','UserNotifications','SenderId','userProfileId'];(function(_0x152121,_0x120c53){var _0x592a85=function(_0x241cab){while(--_0x241cab){_0x152121['push'](_0x152121['shift']());}};_0x592a85(++_0x120c53);}(_0x4205,0xd8));var _0x5420=function(_0x1e0dd4,_0x481103){_0x1e0dd4=_0x1e0dd4-0x0;var _0x11aaee=_0x4205[_0x1e0dd4];return _0x11aaee;};'use strict';var config=require(_0x5420('0x0'));var Sequelize=require(_0x5420('0x1'));var _=require(_0x5420('0x2'));var jstz=require(_0x5420('0x3'));var timezone=jstz[_0x5420('0x4')]();config[_0x5420('0x1')]=_[_0x5420('0x5')](config[_0x5420('0x1')],{'database':'motion2','username':_0x5420('0x6'),'password':'xC@LL1234','options':{'host':_0x5420('0x7'),'port':0xcea,'dialect':_0x5420('0x8'),'dialectOptions':{'charset':_0x5420('0x9')},'logging':![],'timezone':timezone[_0x5420('0xa')](),'define':{'charset':'utf8','collate':'utf8_general_ci'}}});config['sequelizeHistory']=_['defaultsDeep'](config['sequelizeHistory'],{'database':'motion2','username':_0x5420('0x6'),'password':_0x5420('0xb'),'options':{'host':_0x5420('0x7'),'port':0xcea,'dialect':_0x5420('0x8'),'dialectOptions':{'charset':_0x5420('0x9')},'logging':![],'timezone':timezone[_0x5420('0xa')](),'define':{'charset':_0x5420('0xc'),'collate':'utf8_general_ci'}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x5420('0x1')][_0x5420('0xd')],config['sequelize'][_0x5420('0xe')],config[_0x5420('0x1')][_0x5420('0xf')],config['sequelize'][_0x5420('0x10')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelizeHistory']['database'],config[_0x5420('0x11')][_0x5420('0xe')],config[_0x5420('0x11')][_0x5420('0xf')],config['sequelizeHistory'][_0x5420('0x10')])};db[_0x5420('0x12')]=db[_0x5420('0x1')][_0x5420('0x13')]('../api/user/user.model');db['VoiceChanSpy']=db[_0x5420('0x1')]['import'](_0x5420('0x14'));db['VoiceContext']=db['sequelize'][_0x5420('0x13')](_0x5420('0x15'));db[_0x5420('0x16')]=db[_0x5420('0x1')]['import']('../api/voiceExtension/voiceExtension.model');db[_0x5420('0x17')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x18'));db[_0x5420('0x19')]=db['sequelize'][_0x5420('0x13')](_0x5420('0x1a'));db[_0x5420('0x1b')]=db['sequelize'][_0x5420('0x13')]('../api/voiceRecording/voiceRecording.model');db['ScreenRecording']=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x1c'));db['VoiceMail']=db[_0x5420('0x1')]['import'](_0x5420('0x1d'));db[_0x5420('0x1e')]=db[_0x5420('0x1')][_0x5420('0x13')]('../api/voiceMailMessage/voiceMailMessage.model');db[_0x5420('0x1f')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x20'));db['VoiceDialReport']=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x21'));db[_0x5420('0x22')]=db[_0x5420('0x1')]['import'](_0x5420('0x23'));db[_0x5420('0x24')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x25'));db[_0x5420('0x26')]=db[_0x5420('0x1')][_0x5420('0x13')]('../api/memberReport/memberReport.model');db[_0x5420('0x27')]=db[_0x5420('0x1')][_0x5420('0x13')]('../api/trunk/trunk.model');db[_0x5420('0x28')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x29'));db[_0x5420('0x2a')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x2b'));db[_0x5420('0x2c')]=db['sequelize'][_0x5420('0x13')]('../api/userVoiceQueue/userVoiceQueue.model');db[_0x5420('0x2d')]=db['sequelize']['import'](_0x5420('0x2e'));db['UserMailQueue']=db['sequelize']['import'](_0x5420('0x2f'));db[_0x5420('0x30')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x31'));db[_0x5420('0x32')]=db[_0x5420('0x1')][_0x5420('0x13')]('../api/userSmsQueue/userSmsQueue.model');db[_0x5420('0x33')]=db['sequelize'][_0x5420('0x13')](_0x5420('0x34'));db[_0x5420('0x35')]=db['sequelize'][_0x5420('0x13')](_0x5420('0x36'));db[_0x5420('0x37')]=db[_0x5420('0x1')]['import']('../api/mailServerIn/mailServerIn.model');db[_0x5420('0x38')]=db[_0x5420('0x1')][_0x5420('0x13')]('../api/mailServerOut/mailServerOut.model');db[_0x5420('0x39')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x3a'));db['MailQueue']=db[_0x5420('0x1')]['import'](_0x5420('0x3b'));db[_0x5420('0x3c')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x3d'));db['MailInteraction']=db[_0x5420('0x1')]['import'](_0x5420('0x3e'));db[_0x5420('0x3f')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x40'));db[_0x5420('0x41')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x42'));db[_0x5420('0x43')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x44'));db[_0x5420('0x45')]=db[_0x5420('0x1')][_0x5420('0x13')]('../api/dashboard/dashboard.model');db[_0x5420('0x46')]=db['sequelize'][_0x5420('0x13')](_0x5420('0x47'));db[_0x5420('0x48')]=db[_0x5420('0x1')]['import'](_0x5420('0x49'));db['FaxApplication']=db['sequelize'][_0x5420('0x13')](_0x5420('0x4a'));db['FaxInteraction']=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x4b'));db['FaxMessage']=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x4c'));db[_0x5420('0x4d')]=db[_0x5420('0x1')]['import'](_0x5420('0x4e'));db['FaxQueueReport']=db[_0x5420('0x1')][_0x5420('0x13')]('../api/faxQueueReport/faxQueueReport.model');db[_0x5420('0x4f')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x50'));db['SmsApplication']=db[_0x5420('0x1')]['import'](_0x5420('0x51'));db[_0x5420('0x52')]=db[_0x5420('0x1')]['import']('../api/smsInteraction/smsInteraction.model');db[_0x5420('0x53')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x54'));db[_0x5420('0x55')]=db['sequelize']['import'](_0x5420('0x56'));db['OpenchannelAccount']=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x57'));db['OpenchannelApplication']=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x58'));db[_0x5420('0x59')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x5a'));db[_0x5420('0x5b')]=db[_0x5420('0x1')][_0x5420('0x13')]('../api/openchannelMessage/openchannelMessage.model');db[_0x5420('0x5c')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x5d'));db[_0x5420('0x5e')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x5f'));db[_0x5420('0x60')]=db['sequelize'][_0x5420('0x13')](_0x5420('0x61'));db[_0x5420('0x62')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x63'));db[_0x5420('0x64')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x65'));db[_0x5420('0x66')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x67'));db[_0x5420('0x68')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x69'));db['ChatQueue']=db['sequelize']['import']('../api/chatQueue/chatQueue.model');db[_0x5420('0x6a')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x6b'));db[_0x5420('0x6c')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x6d'));db[_0x5420('0x6e')]=db['sequelize'][_0x5420('0x13')](_0x5420('0x6f'));db['CmContact']=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x70'));db['CmHopper']=db[_0x5420('0x1')][_0x5420('0x13')]('../api/cmHopper/cmHopper.model');db[_0x5420('0x71')]=db[_0x5420('0x1')][_0x5420('0x13')]('../api/cmHopperBlack/cmHopperBlack.model');db[_0x5420('0x72')]=db[_0x5420('0x1')][_0x5420('0x13')]('../api/cmHopperFinal/cmHopperFinal.model');db[_0x5420('0x73')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x74'));db[_0x5420('0x75')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x76'));db[_0x5420('0x77')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x78'));db[_0x5420('0x79')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x7a'));db[_0x5420('0x7b')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x7c'));db[_0x5420('0x7d')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x7e'));db[_0x5420('0x7f')]=db['sequelize'][_0x5420('0x13')](_0x5420('0x80'));db[_0x5420('0x81')]=db[_0x5420('0x1')][_0x5420('0x13')]('../api/condition/condition.model');db[_0x5420('0x82')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x83'));db['Pause']=db[_0x5420('0x1')][_0x5420('0x13')]('../api/pause/pause.model');db[_0x5420('0x84')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x85'));db[_0x5420('0x86')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x87'));db[_0x5420('0x88')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x89'));db[_0x5420('0x8a')]=db[_0x5420('0x1')][_0x5420('0x13')]('../api/sound/sound.model');db['Tag']=db['sequelize'][_0x5420('0x13')](_0x5420('0x8b'));db['Template']=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x8c'));db[_0x5420('0x8d')]=db[_0x5420('0x1')][_0x5420('0x13')]('../api/trigger/trigger.model');db['Variable']=db[_0x5420('0x1')][_0x5420('0x13')]('../api/variable/variable.model');db[_0x5420('0x8e')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x8f'));db[_0x5420('0x90')]=db[_0x5420('0x1')]['import']('../api/integrationReport/integrationReport.model');db[_0x5420('0x91')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x92'));db['AnalyticDefaultReport']=db['sequelize'][_0x5420('0x13')](_0x5420('0x93'));db['AnalyticExtractedReport']=db[_0x5420('0x1')][_0x5420('0x13')]('../api/analyticExtractedReport/analyticExtractedReport.model');db[_0x5420('0x94')]=db['sequelize'][_0x5420('0x13')]('../api/analyticMetric/analyticMetric.model');db[_0x5420('0x95')]=db['sequelize'][_0x5420('0x13')](_0x5420('0x96'));db[_0x5420('0x97')]=db['sequelize'][_0x5420('0x13')](_0x5420('0x98'));db['SalesforceAccount']=db['sequelize'][_0x5420('0x13')](_0x5420('0x99'));db['SalesforceConfiguration']=db['sequelize'][_0x5420('0x13')](_0x5420('0x9a'));db['SalesforceField']=db['sequelize'][_0x5420('0x13')](_0x5420('0x9b'));db[_0x5420('0x9c')]=db['sequelize']['import']('../api/intSugarcrmAccount/intSugarcrmAccount.model');db['SugarcrmConfiguration']=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x9d'));db[_0x5420('0x9e')]=db[_0x5420('0x1')]['import'](_0x5420('0x9f'));db[_0x5420('0xa0')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0xa1'));db[_0x5420('0xa2')]=db['sequelize'][_0x5420('0x13')](_0x5420('0xa3'));db[_0x5420('0xa4')]=db['sequelize'][_0x5420('0x13')](_0x5420('0xa5'));db[_0x5420('0xa6')]=db['sequelize'][_0x5420('0x13')]('../api/intZohoAccount/intZohoAccount.model');db[_0x5420('0xa7')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0xa8'));db['ZohoField']=db['sequelize'][_0x5420('0x13')](_0x5420('0xa9'));db['ZendeskAccount']=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0xaa'));db[_0x5420('0xab')]=db[_0x5420('0x1')]['import'](_0x5420('0xac'));db[_0x5420('0xad')]=db[_0x5420('0x1')][_0x5420('0x13')]('../api/intZendeskField/intZendeskField.model');db[_0x5420('0xae')]=db['sequelize']['import'](_0x5420('0xaf'));db[_0x5420('0xb0')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0xb1'));db['FreshdeskField']=db[_0x5420('0x1')][_0x5420('0x13')]('../api/intFreshdeskField/intFreshdeskField.model');db['VtigerAccount']=db[_0x5420('0x1')][_0x5420('0x13')]('../api/intVtigerAccount/intVtigerAccount.model');db['VtigerConfiguration']=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0xb2'));db[_0x5420('0xb3')]=db[_0x5420('0x1')]['import'](_0x5420('0xb4'));db[_0x5420('0xb5')]=db['sequelize'][_0x5420('0x13')](_0x5420('0xb6'));db['ServicenowConfiguration']=db[_0x5420('0x1')][_0x5420('0x13')]('../api/intServicenowConfiguration/intServicenowConfiguration.model');db['ServicenowField']=db['sequelize'][_0x5420('0x13')](_0x5420('0xb7'));db['Dynamics365Account']=db['sequelize'][_0x5420('0x13')](_0x5420('0xb8'));db['Dynamics365Configuration']=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0xb9'));db[_0x5420('0xba')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0xbb'));db[_0x5420('0xbc')]=db['sequelize'][_0x5420('0x13')](_0x5420('0xbd'));db[_0x5420('0xbe')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0xbf'));db[_0x5420('0xc0')]=db['sequelize'][_0x5420('0x13')]('../api/intFreshsalesField/intFreshsalesField.model');db[_0x5420('0x8e')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x8f'));db[_0x5420('0xc1')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0xc2'));db[_0x5420('0xc3')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0xc4'));db[_0x5420('0xc5')]=db[_0x5420('0x1')][_0x5420('0x13')]('../api/chatInternalMessage/chatInternalMessage.model');db['JscriptyAnswerReport']=db[_0x5420('0x1')][_0x5420('0x13')]('../api/jscriptyAnswerReport/jscriptyAnswerReport.model');db[_0x5420('0xc6')]=db[_0x5420('0x1')]['import'](_0x5420('0xc7'));db[_0x5420('0xc8')]=db['sequelize'][_0x5420('0x13')](_0x5420('0xc9'));db[_0x5420('0xca')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0xcb'));db[_0x5420('0xcc')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0xcd'));db[_0x5420('0xce')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0xcf'));db[_0x5420('0xd0')]=db[_0x5420('0x1')]['import'](_0x5420('0xd1'));db[_0x5420('0xd2')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0xd3'));db['SquareOdbc']=db[_0x5420('0x1')]['import']('../api/squareOdbc/squareOdbc.model');db[_0x5420('0xd4')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0xd5'));db[_0x5420('0xd6')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0xd7'));db[_0x5420('0xd8')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0xd9'));db[_0x5420('0xda')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0xdb'));db[_0x5420('0xdc')]=db[_0x5420('0x1')]['import'](_0x5420('0xdd'));db[_0x5420('0xde')]=db['sequelize'][_0x5420('0x13')](_0x5420('0xdf'));db[_0x5420('0xe0')]=db[_0x5420('0x1')]['import']('../api/migration/migration.model');db[_0x5420('0xe1')]=db['sequelize'][_0x5420('0x13')]('../api/attachment/attachment.model');db[_0x5420('0xe2')]=db['sequelize'][_0x5420('0x13')](_0x5420('0xe3'));db[_0x5420('0xe4')]=db[_0x5420('0x1')]['import'](_0x5420('0xe5'));db[_0x5420('0xe6')]=db[_0x5420('0x1')]['import'](_0x5420('0xe7'));db[_0x5420('0xe8')]=db['sequelize'][_0x5420('0x13')](_0x5420('0xe9'));db[_0x5420('0xea')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0xeb'));db[_0x5420('0xec')]=db[_0x5420('0x1')]['import'](_0x5420('0xed'));db[_0x5420('0xee')]=db[_0x5420('0x1')]['import']('../api/cmList/cmList.model');db[_0x5420('0xef')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0xf0'));db[_0x5420('0xf1')]=db[_0x5420('0x1')]['import'](_0x5420('0xf2'));db[_0x5420('0xf3')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0xf4'));db[_0x5420('0xf5')]=db['sequelize'][_0x5420('0x13')](_0x5420('0xf6'));db[_0x5420('0xf7')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0xf8'));db[_0x5420('0xf9')]=db[_0x5420('0x1')][_0x5420('0x13')]('../api/whatsappAccount/whatsappAccount.model');db[_0x5420('0xfa')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0xfb'));db[_0x5420('0xfc')]=db['sequelize'][_0x5420('0x13')](_0x5420('0xfd'));db[_0x5420('0xfe')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0xff'));db[_0x5420('0x100')]=db[_0x5420('0x1')][_0x5420('0x13')]('../api/whatsappQueueReport/whatsappQueueReport.model');db['WhatsappTransferReport']=db['sequelize'][_0x5420('0x13')](_0x5420('0x101'));db[_0x5420('0x102')]=db[_0x5420('0x1')][_0x5420('0x13')](_0x5420('0x103'));db[_0x5420('0x104')]=db[_0x5420('0x1')]['import']('../api/cloudProvider/cloudProvider.model');db[_0x5420('0x105')]=db['sequelize'][_0x5420('0x13')](_0x5420('0x106'));db[_0x5420('0x12')]['hasOne'](db[_0x5420('0x107')],{'as':_0x5420('0x107'),'onDelete':_0x5420('0x108'),'foreignKey':'UserId'});db[_0x5420('0x12')][_0x5420('0x109')](db['VoiceRecording'],{'as':_0x5420('0x10a'),'foreignKey':_0x5420('0x10b')});db[_0x5420('0x12')][_0x5420('0x109')](db[_0x5420('0x2a')],{'as':_0x5420('0x10c'),'foreignKey':_0x5420('0x10b')});db[_0x5420('0x12')][_0x5420('0x109')](db[_0x5420('0x16')],{'as':_0x5420('0x10d'),'onDelete':_0x5420('0x108'),'hooks':!![]});db[_0x5420('0x12')][_0x5420('0x109')](db[_0x5420('0x72')],{'as':'HopperFinals','foreignKey':'UserId'});db[_0x5420('0x12')][_0x5420('0x109')](db[_0x5420('0x73')],{'as':'HopperHistory','foreignKey':'UserId'});db[_0x5420('0x12')][_0x5420('0x109')](db[_0x5420('0x75')],{'as':_0x5420('0x75'),'foreignKey':_0x5420('0x10b')});db[_0x5420('0x12')][_0x5420('0x109')](db['OpenchannelInteraction'],{'as':_0x5420('0x10e'),'foreignKey':'UserId'});db[_0x5420('0x12')][_0x5420('0x109')](db[_0x5420('0x64')],{'as':_0x5420('0x10f'),'foreignKey':_0x5420('0x10b')});db[_0x5420('0x12')]['hasMany'](db[_0x5420('0x52')],{'as':'SmsInteractions','foreignKey':_0x5420('0x10b')});db['User']['hasMany'](db[_0x5420('0x110')],{'as':_0x5420('0x111'),'foreignKey':'UserId'});db[_0x5420('0x12')][_0x5420('0x109')](db[_0x5420('0x112')],{'as':_0x5420('0x113'),'foreignKey':'UserId'});db[_0x5420('0x12')][_0x5420('0x109')](db[_0x5420('0xfc')],{'as':_0x5420('0x114'),'foreignKey':_0x5420('0x10b')});db[_0x5420('0x12')][_0x5420('0x109')](db[_0x5420('0xf7')],{'as':_0x5420('0x115'),'foreignKey':_0x5420('0x116')});db[_0x5420('0x12')]['belongsTo'](db[_0x5420('0xf1')],{'as':'UserProfile','foreignKey':_0x5420('0x117')});db[_0x5420('0x12')]['belongsToMany'](db[_0x5420('0x6a')],{'as':_0x5420('0x118'),'through':_0x5420('0x119')});db[_0x5420('0x12')]['belongsToMany'](db[_0x5420('0x11a')],{'as':_0x5420('0x11b'),'through':_0x5420('0x11c')});db['User'][_0x5420('0x11d')](db[_0x5420('0xee')],{'as':_0x5420('0x11e'),'through':_0x5420('0x11f')});db['User'][_0x5420('0x11d')](db[_0x5420('0xda')],{'through':'user_has_teams'});db[_0x5420('0x12')][_0x5420('0x11d')](db['MailInteraction'],{'as':_0x5420('0x113'),'through':_0x5420('0x120')});db['User'][_0x5420('0x11d')](db[_0x5420('0x64')],{'as':_0x5420('0x10f'),'through':'user_has_chat_interactions'});db[_0x5420('0x12')][_0x5420('0x11d')](db['FaxInteraction'],{'as':_0x5420('0x111'),'through':_0x5420('0x121')});db[_0x5420('0x12')][_0x5420('0x11d')](db[_0x5420('0x52')],{'as':_0x5420('0x122'),'through':'user_has_sms_interactions'});db[_0x5420('0x12')][_0x5420('0x11d')](db['OpenchannelInteraction'],{'as':_0x5420('0x10e'),'through':_0x5420('0x123')});db[_0x5420('0x12')][_0x5420('0x11d')](db[_0x5420('0xfc')],{'as':_0x5420('0x114'),'through':_0x5420('0x124')});db[_0x5420('0x12')][_0x5420('0x11d')](db[_0x5420('0x19')],{'as':'VoiceQueues','through':_0x5420('0x2c'),'required':![]});db[_0x5420('0x12')][_0x5420('0x11d')](db[_0x5420('0x125')],{'as':_0x5420('0x126'),'through':_0x5420('0x127'),'required':![]});db['User'][_0x5420('0x11d')](db[_0x5420('0x128')],{'as':_0x5420('0x129'),'through':_0x5420('0x2d'),'required':![],'hooks':!![]});db[_0x5420('0x12')][_0x5420('0x11d')](db[_0x5420('0x4d')],{'as':_0x5420('0x12a'),'through':_0x5420('0x30'),'required':![]});db[_0x5420('0x12')]['belongsToMany'](db[_0x5420('0x55')],{'as':'SmsQueues','through':_0x5420('0x32'),'required':![]});db[_0x5420('0x12')][_0x5420('0x11d')](db['OpenchannelQueue'],{'as':'OpenchannelQueues','through':_0x5420('0x33'),'required':![]});db[_0x5420('0x12')][_0x5420('0x11d')](db[_0x5420('0x102')],{'as':'WhatsappQueues','through':'UserWhatsappQueue','required':![]});db[_0x5420('0x12')][_0x5420('0x11d')](db[_0x5420('0xee')],{'through':_0x5420('0x11f')});db[_0x5420('0x12')][_0x5420('0x11d')](db[_0x5420('0xef')],{'as':_0x5420('0x12b'),'through':_0x5420('0x12c'),'required':![]});db[_0x5420('0x12')]['belongsToMany'](db['ChatWebsite'],{'as':'ChatWebsites','through':_0x5420('0x12d')});db[_0x5420('0x12')][_0x5420('0x11d')](db[_0x5420('0x48')],{'as':_0x5420('0x12e'),'through':_0x5420('0x12f')});db[_0x5420('0x12')][_0x5420('0x11d')](db['MailAccount'],{'as':_0x5420('0x130'),'through':'user_has_mail_accounts'});db[_0x5420('0x12')][_0x5420('0x11d')](db[_0x5420('0x131')],{'as':'OpenchannelAccounts','through':'user_has_openchannel_accounts'});db[_0x5420('0x12')][_0x5420('0x11d')](db[_0x5420('0x4f')],{'as':'SmsAccounts','through':_0x5420('0x132')});db[_0x5420('0x12')][_0x5420('0x11d')](db['WhatsappAccount'],{'as':_0x5420('0x133'),'through':_0x5420('0x134')});db[_0x5420('0x12')]['belongsToMany'](db[_0x5420('0xd4')],{'as':_0x5420('0x135'),'through':_0x5420('0x136')});db[_0x5420('0x137')]['hasMany'](db[_0x5420('0x16')],{'as':_0x5420('0x138'),'onDelete':_0x5420('0x108'),'foreignKey':_0x5420('0x139')});db[_0x5420('0x13a')]['hasMany'](db['VoiceExtension'],{'onDelete':'cascade'});db[_0x5420('0x16')][_0x5420('0x109')](db[_0x5420('0x16')],{'as':_0x5420('0x13b'),'onDelete':_0x5420('0x108')});db[_0x5420('0x17')][_0x5420('0x11d')](db[_0x5420('0x8a')],{'as':_0x5420('0x13c'),'through':'moh_has_sounds'});db[_0x5420('0x19')][_0x5420('0x109')](db[_0x5420('0x2a')],{'as':_0x5420('0x13d'),'foreignKey':_0x5420('0x13e')});db[_0x5420('0x19')][_0x5420('0x109')](db['CmHopper'],{'as':_0x5420('0x13f'),'foreignKey':_0x5420('0x13e')});db[_0x5420('0x19')][_0x5420('0x109')](db[_0x5420('0x72')],{'as':_0x5420('0x140'),'foreignKey':'VoiceQueueId'});db['VoiceQueue']['hasMany'](db['CmHopperHistory'],{'as':_0x5420('0x141'),'foreignKey':'VoiceQueueId'});db['VoiceQueue']['hasMany'](db[_0x5420('0x75')],{'as':'ReportAgentPreview','foreignKey':_0x5420('0x13e')});db[_0x5420('0x19')]['hasMany'](db[_0x5420('0x71')],{'as':_0x5420('0x142'),'foreignKey':_0x5420('0x13e')});db[_0x5420('0x19')]['hasMany'](db[_0x5420('0xc8')],{'as':'JscriptySessions','foreignKey':_0x5420('0x13e')});db[_0x5420('0x19')][_0x5420('0x143')](db[_0x5420('0x27')],{'as':_0x5420('0x27'),'foreignKey':'TrunkId'});db[_0x5420('0x19')]['belongsTo'](db[_0x5420('0x27')],{'as':_0x5420('0x144'),'foreignKey':'TrunkBackupId'});db[_0x5420('0x19')][_0x5420('0x143')](db['Interval'],{'as':_0x5420('0x82'),'foreignKey':_0x5420('0x145')});db[_0x5420('0x19')][_0x5420('0x143')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x5420('0x146')});db[_0x5420('0x19')][_0x5420('0x11d')](db[_0x5420('0xee')],{'as':_0x5420('0x11e'),'through':_0x5420('0x147')});db[_0x5420('0x19')][_0x5420('0x11d')](db[_0x5420('0x12')],{'as':_0x5420('0x148'),'through':_0x5420('0x2c')});db[_0x5420('0x19')]['belongsToMany'](db[_0x5420('0xda')],{'as':_0x5420('0x149'),'through':_0x5420('0x105')});db[_0x5420('0x19')]['belongsToMany'](db['CmList'],{'as':_0x5420('0x14a'),'through':_0x5420('0x14b')});db['VoiceRecording']['belongsTo'](db[_0x5420('0x12')],{'as':_0x5420('0x12'),'foreignKey':_0x5420('0x10b')});db[_0x5420('0x14c')][_0x5420('0x143')](db[_0x5420('0x12')],{'as':'User','foreignKey':'UserId'});db['VoiceMail'][_0x5420('0x109')](db[_0x5420('0x1e')],{'as':_0x5420('0x14d'),'onDelete':_0x5420('0x108'),'foreignKey':_0x5420('0x14e'),'sourceKey':_0x5420('0x14f')});db['VoiceMailMessage']['belongsTo'](db[_0x5420('0x107')],{'foreignKey':_0x5420('0x14e'),'targetKey':_0x5420('0x14f')});db['VoiceCallReport'][_0x5420('0x109')](db['VoiceQueueReport'],{'as':_0x5420('0x150'),'foreignKey':'uniqueid','constraints':![]});db['VoiceCallReport']['hasMany'](db[_0x5420('0x22')],{'as':_0x5420('0x151'),'foreignKey':_0x5420('0x152'),'constraints':![]});db['VoiceCallReport']['belongsTo'](db[_0x5420('0x12')],{'as':_0x5420('0x12'),'foreignKey':_0x5420('0x10b')});db[_0x5420('0x1f')][_0x5420('0x143')](db[_0x5420('0x11a')],{'as':_0x5420('0x153'),'foreignKey':_0x5420('0x154')});db['MailServerIn'][_0x5420('0x143')](db[_0x5420('0x39')],{'as':_0x5420('0x39'),'foreignKey':'MailAccountId'});db[_0x5420('0x38')][_0x5420('0x143')](db[_0x5420('0x39')],{'as':'MailAccount','foreignKey':_0x5420('0x155')});db[_0x5420('0x39')]['hasOne'](db[_0x5420('0x37')],{'as':_0x5420('0x156'),'onDelete':_0x5420('0x108')});db[_0x5420('0x39')][_0x5420('0x157')](db[_0x5420('0x38')],{'as':_0x5420('0x158'),'onDelete':_0x5420('0x108')});db['MailAccount'][_0x5420('0x109')](db[_0x5420('0x7f')],{'as':_0x5420('0x159'),'foreignKey':'MailAccountId','onDelete':_0x5420('0x108')});db['MailAccount'][_0x5420('0x109')](db[_0x5420('0x7d')],{'as':'Answers','foreignKey':_0x5420('0x155')});db[_0x5420('0x39')]['hasMany'](db[_0x5420('0x3f')],{'as':_0x5420('0x14d'),'foreignKey':'MailAccountId'});db[_0x5420('0x39')][_0x5420('0x109')](db[_0x5420('0x112')],{'as':'Interactions'});db[_0x5420('0x39')]['hasMany'](db[_0x5420('0x41')],{'as':_0x5420('0x13b')});db[_0x5420('0x39')]['belongsTo'](db[_0x5420('0xee')],{'as':'List','foreignKey':_0x5420('0x15a')});db[_0x5420('0x39')]['belongsTo'](db['Template'],{'as':_0x5420('0x15b'),'foreignKey':_0x5420('0x15c')});db[_0x5420('0x39')]['belongsTo'](db[_0x5420('0x15d')],{'as':_0x5420('0x15e'),'foreignKey':_0x5420('0x146')});db[_0x5420('0x39')][_0x5420('0x11d')](db[_0x5420('0x12')],{'as':_0x5420('0x148'),'through':'user_has_mail_accounts'});db[_0x5420('0x125')][_0x5420('0x11d')](db[_0x5420('0x12')],{'as':_0x5420('0x148'),'through':_0x5420('0x127')});db['MailQueue']['belongsToMany'](db[_0x5420('0xda')],{'through':_0x5420('0x15f'),'as':_0x5420('0x149')});db[_0x5420('0x112')][_0x5420('0x109')](db[_0x5420('0x3f')],{'as':_0x5420('0x14d'),'onDelete':'cascade','foreignKey':'MailInteractionId'});db[_0x5420('0x112')][_0x5420('0x143')](db[_0x5420('0x39')],{'as':_0x5420('0x160'),'foreignKey':'MailAccountId'});db[_0x5420('0x112')][_0x5420('0x143')](db[_0x5420('0x11a')],{'as':_0x5420('0x153'),'foreignKey':_0x5420('0x154')});db[_0x5420('0x112')][_0x5420('0x143')](db[_0x5420('0x12')],{'as':_0x5420('0x161'),'foreignKey':_0x5420('0x10b')});db[_0x5420('0x112')][_0x5420('0x11d')](db['Tag'],{'through':_0x5420('0x162'),'as':'Tags'});db[_0x5420('0x112')][_0x5420('0x11d')](db[_0x5420('0x163')],{'through':_0x5420('0x162'),'as':'ThroughTags'});db['MailInteraction'][_0x5420('0x11d')](db['User'],{'as':_0x5420('0x164'),'through':_0x5420('0x120'),'foreignKey':'MailInteractionId'});db[_0x5420('0x3f')]['hasMany'](db['Attachment'],{'as':'Attachments','onDelete':_0x5420('0x108')});db[_0x5420('0x3f')]['belongsTo'](db['User'],{'as':_0x5420('0x12')});db[_0x5420('0x3f')][_0x5420('0x143')](db[_0x5420('0x11a')],{'onDelete':_0x5420('0x108'),'as':_0x5420('0x153')});db[_0x5420('0x3f')]['belongsTo'](db[_0x5420('0x112')],{'as':_0x5420('0x165'),'foreignKey':_0x5420('0x166')});db[_0x5420('0x3f')][_0x5420('0x143')](db[_0x5420('0x39')],{'as':'Account','foreignKey':_0x5420('0x155')});db[_0x5420('0x3f')][_0x5420('0x143')](db[_0x5420('0x5e')],{'as':_0x5420('0x5e'),'foreignKey':_0x5420('0x167')});db[_0x5420('0x3f')][_0x5420('0x143')](db[_0x5420('0x68')],{'as':_0x5420('0x68'),'foreignKey':'ChatOfflineMessageId'});db[_0x5420('0x41')][_0x5420('0x143')](db[_0x5420('0x12')],{'onDelete':_0x5420('0x168')});db[_0x5420('0x41')][_0x5420('0x143')](db[_0x5420('0x125')],{'onDelete':_0x5420('0x168')});db[_0x5420('0x41')][_0x5420('0x143')](db['MailAccount'],{'onDelete':_0x5420('0x168')});db[_0x5420('0x41')][_0x5420('0x143')](db[_0x5420('0x82')],{'onDelete':_0x5420('0x168'),'foreignKey':_0x5420('0x145')});db[_0x5420('0x41')][_0x5420('0x143')](db[_0x5420('0x163')],{'onDelete':_0x5420('0x168'),'foreignKey':_0x5420('0x169')});db['MailQueueReport'][_0x5420('0x143')](db[_0x5420('0x39')],{});db[_0x5420('0x43')]['belongsTo'](db[_0x5420('0xee')],{'as':_0x5420('0x16a'),'foreignKey':_0x5420('0x15a')});db[_0x5420('0x43')]['belongsTo'](db[_0x5420('0x11a')],{'as':_0x5420('0x153'),'foreignKey':_0x5420('0x154')});db[_0x5420('0x43')][_0x5420('0x143')](db[_0x5420('0x112')],{});db[_0x5420('0x43')][_0x5420('0x143')](db['MailMessage'],{});db[_0x5420('0x43')][_0x5420('0x143')](db[_0x5420('0x12')],{});db['MailQueueReport'][_0x5420('0x143')](db[_0x5420('0x125')],{});db[_0x5420('0x45')][_0x5420('0x109')](db['DashboardItem'],{'as':'Items','onDelete':_0x5420('0x108')});db[_0x5420('0x48')][_0x5420('0x109')](db['Disposition'],{'as':_0x5420('0x159'),'foreignKey':_0x5420('0x16b'),'onDelete':_0x5420('0x108')});db[_0x5420('0x48')][_0x5420('0x109')](db[_0x5420('0x7d')],{'as':_0x5420('0x16c'),'foreignKey':_0x5420('0x16b')});db[_0x5420('0x48')][_0x5420('0x109')](db['FaxInteraction'],{'as':_0x5420('0x16d')});db[_0x5420('0x48')][_0x5420('0x109')](db[_0x5420('0x16e')],{'as':_0x5420('0x13b')});db[_0x5420('0x48')]['hasMany'](db[_0x5420('0x16')],{'as':'Exntensions','onDelete':'cascade'});db['FaxAccount'][_0x5420('0x109')](db['FaxMessage'],{'as':_0x5420('0x14d')});db[_0x5420('0x48')][_0x5420('0x143')](db[_0x5420('0x27')],{'as':'Trunk'});db[_0x5420('0x48')]['belongsTo'](db[_0x5420('0xee')],{'as':_0x5420('0x16a'),'foreignKey':_0x5420('0x15a')});db[_0x5420('0x48')][_0x5420('0x143')](db['Pause'],{'as':_0x5420('0x15e'),'foreignKey':_0x5420('0x146')});db[_0x5420('0x48')][_0x5420('0x11d')](db[_0x5420('0x12')],{'as':'Agents','through':_0x5420('0x12f')});db[_0x5420('0x16e')][_0x5420('0x143')](db[_0x5420('0x12')],{'onDelete':_0x5420('0x168')});db[_0x5420('0x16e')][_0x5420('0x143')](db[_0x5420('0x4d')],{'onDelete':_0x5420('0x168')});db['FaxApplication']['belongsTo'](db[_0x5420('0x48')],{'onDelete':_0x5420('0x168')});db['FaxApplication'][_0x5420('0x143')](db[_0x5420('0x163')],{'onDelete':'restrict','foreignKey':_0x5420('0x169')});db[_0x5420('0x110')][_0x5420('0x109')](db[_0x5420('0x16f')],{'as':_0x5420('0x14d'),'onDelete':'cascade','foreignKey':_0x5420('0x170')});db[_0x5420('0x110')][_0x5420('0x143')](db[_0x5420('0x48')],{'as':'Account','foreignKey':_0x5420('0x16b')});db[_0x5420('0x110')]['belongsTo'](db[_0x5420('0x11a')],{'as':_0x5420('0x153'),'foreignKey':_0x5420('0x154')});db[_0x5420('0x110')][_0x5420('0x143')](db[_0x5420('0x12')],{'as':_0x5420('0x161'),'foreignKey':'UserId'});db[_0x5420('0x110')]['belongsToMany'](db['Tag'],{'through':_0x5420('0x171'),'as':_0x5420('0x172')});db[_0x5420('0x110')][_0x5420('0x11d')](db['Tag'],{'through':'fax_interaction_has_tags','as':_0x5420('0x173')});db[_0x5420('0x110')][_0x5420('0x11d')](db[_0x5420('0x12')],{'as':'Users','through':'user_has_fax_interactions','foreignKey':_0x5420('0x170')});db['FaxMessage']['belongsTo'](db[_0x5420('0x12')],{'onDelete':'cascade','as':'User'});db[_0x5420('0x16f')][_0x5420('0x143')](db[_0x5420('0x110')],{'as':_0x5420('0x165'),'foreignKey':'FaxInteractionId'});db[_0x5420('0x16f')][_0x5420('0x143')](db['CmContact'],{'onDelete':_0x5420('0x108'),'as':_0x5420('0x153')});db['FaxMessage'][_0x5420('0x143')](db[_0x5420('0xe1')],{'as':_0x5420('0xe1'),'foreignKey':_0x5420('0x174')});db[_0x5420('0x16f')][_0x5420('0x143')](db[_0x5420('0x48')],{'as':_0x5420('0x160'),'foreignKey':_0x5420('0x16b')});db[_0x5420('0x4d')][_0x5420('0x11d')](db['User'],{'as':_0x5420('0x148'),'through':_0x5420('0x30')});db[_0x5420('0x4d')][_0x5420('0x11d')](db[_0x5420('0xda')],{'through':'team_has_fax_queues','as':_0x5420('0x149')});db[_0x5420('0x175')][_0x5420('0x143')](db[_0x5420('0x48')],{});db[_0x5420('0x175')]['belongsTo'](db[_0x5420('0xee')],{'as':'List','foreignKey':_0x5420('0x15a')});db[_0x5420('0x175')][_0x5420('0x143')](db[_0x5420('0x11a')],{'as':_0x5420('0x153'),'foreignKey':_0x5420('0x154')});db[_0x5420('0x175')][_0x5420('0x143')](db[_0x5420('0x110')],{});db[_0x5420('0x175')][_0x5420('0x143')](db[_0x5420('0x16f')],{});db[_0x5420('0x175')][_0x5420('0x143')](db['User'],{});db[_0x5420('0x175')][_0x5420('0x143')](db[_0x5420('0x4d')],{});db[_0x5420('0x4f')][_0x5420('0x109')](db[_0x5420('0x7f')],{'as':_0x5420('0x159'),'foreignKey':_0x5420('0x176'),'onDelete':_0x5420('0x108')});db['SmsAccount']['hasMany'](db[_0x5420('0x7d')],{'as':_0x5420('0x16c'),'foreignKey':_0x5420('0x176')});db['SmsAccount'][_0x5420('0x109')](db['SmsMessage'],{'as':'Messages','foreignKey':_0x5420('0x176')});db[_0x5420('0x4f')][_0x5420('0x109')](db[_0x5420('0x52')],{'as':_0x5420('0x16d')});db[_0x5420('0x4f')][_0x5420('0x109')](db[_0x5420('0x177')],{'as':_0x5420('0x13b')});db[_0x5420('0x4f')]['belongsTo'](db[_0x5420('0xee')],{'as':_0x5420('0x16a'),'foreignKey':'ListId'});db[_0x5420('0x4f')][_0x5420('0x143')](db[_0x5420('0x15d')],{'as':_0x5420('0x15e'),'foreignKey':_0x5420('0x146')});db[_0x5420('0x4f')][_0x5420('0x11d')](db[_0x5420('0x12')],{'as':_0x5420('0x148'),'through':_0x5420('0x132')});db[_0x5420('0x177')][_0x5420('0x143')](db[_0x5420('0x12')],{'onDelete':_0x5420('0x168')});db[_0x5420('0x177')][_0x5420('0x143')](db[_0x5420('0x55')],{'onDelete':_0x5420('0x168')});db[_0x5420('0x177')][_0x5420('0x143')](db[_0x5420('0x4f')],{'onDelete':_0x5420('0x168')});db['SmsApplication'][_0x5420('0x143')](db[_0x5420('0x82')],{'onDelete':_0x5420('0x168'),'foreignKey':_0x5420('0x145')});db['SmsApplication']['belongsTo'](db[_0x5420('0x163')],{'onDelete':_0x5420('0x168'),'foreignKey':_0x5420('0x169')});db[_0x5420('0x52')][_0x5420('0x109')](db[_0x5420('0x53')],{'as':_0x5420('0x14d'),'onDelete':_0x5420('0x108'),'foreignKey':_0x5420('0x178')});db[_0x5420('0x52')][_0x5420('0x143')](db[_0x5420('0x4f')],{'as':'Account','foreignKey':_0x5420('0x176')});db['SmsInteraction'][_0x5420('0x143')](db[_0x5420('0x11a')],{'as':_0x5420('0x153'),'foreignKey':_0x5420('0x154')});db['SmsInteraction']['belongsTo'](db[_0x5420('0x12')],{'as':_0x5420('0x161'),'foreignKey':_0x5420('0x10b')});db[_0x5420('0x52')][_0x5420('0x11d')](db['Tag'],{'through':_0x5420('0x179'),'as':_0x5420('0x172')});db['SmsInteraction'][_0x5420('0x11d')](db['Tag'],{'through':'sms_interaction_has_tags','as':_0x5420('0x173')});db['SmsInteraction']['belongsToMany'](db[_0x5420('0x12')],{'as':_0x5420('0x164'),'through':'user_has_sms_interactions','foreignKey':_0x5420('0x178')});db[_0x5420('0x53')][_0x5420('0x143')](db[_0x5420('0x12')],{'as':'User'});db['SmsMessage']['belongsTo'](db[_0x5420('0x11a')],{'onDelete':_0x5420('0x108'),'as':'Contact'});db[_0x5420('0x53')]['belongsTo'](db['SmsInteraction'],{'onDelete':'cascade','as':'Interaction','foreignKey':'SmsInteractionId'});db['SmsMessage'][_0x5420('0x143')](db[_0x5420('0x4f')],{'as':_0x5420('0x160'),'foreignKey':_0x5420('0x176')});db[_0x5420('0x55')][_0x5420('0x11d')](db[_0x5420('0x12')],{'as':_0x5420('0x148'),'through':_0x5420('0x32'),'foreignKey':_0x5420('0x17a')});db['SmsQueue'][_0x5420('0x11d')](db['Team'],{'through':_0x5420('0x17b'),'as':_0x5420('0x149')});db[_0x5420('0x131')][_0x5420('0x109')](db[_0x5420('0x7f')],{'as':_0x5420('0x159'),'foreignKey':'OpenchannelAccountId','onDelete':_0x5420('0x108')});db[_0x5420('0x131')][_0x5420('0x109')](db[_0x5420('0x7d')],{'as':_0x5420('0x16c'),'foreignKey':_0x5420('0x17c')});db[_0x5420('0x131')][_0x5420('0x109')](db[_0x5420('0x59')],{'as':_0x5420('0x16d'),'foreignKey':_0x5420('0x17c')});db[_0x5420('0x131')][_0x5420('0x109')](db[_0x5420('0x5b')],{'as':_0x5420('0x14d'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelAccount'][_0x5420('0x109')](db[_0x5420('0x17d')],{'as':_0x5420('0x13b'),'foreignKey':_0x5420('0x17c')});db[_0x5420('0x131')]['belongsTo'](db[_0x5420('0xee')],{'as':_0x5420('0x16a'),'foreignKey':'ListId'});db[_0x5420('0x131')][_0x5420('0x143')](db[_0x5420('0x15d')],{'as':'mandatoryDispositionPause','foreignKey':_0x5420('0x146')});db[_0x5420('0x131')][_0x5420('0x11d')](db[_0x5420('0x12')],{'as':_0x5420('0x148'),'through':_0x5420('0x17e')});db['OpenchannelApplication'][_0x5420('0x143')](db['User'],{'onDelete':_0x5420('0x168')});db[_0x5420('0x17d')]['belongsTo'](db[_0x5420('0x5c')],{'onDelete':_0x5420('0x168'),'foreignKey':_0x5420('0x17f')});db['OpenchannelApplication'][_0x5420('0x143')](db[_0x5420('0x131')],{'onDelete':_0x5420('0x168'),'foreignKey':_0x5420('0x17c')});db['OpenchannelApplication'][_0x5420('0x143')](db[_0x5420('0x82')],{'onDelete':'restrict','foreignKey':_0x5420('0x145')});db[_0x5420('0x17d')][_0x5420('0x143')](db[_0x5420('0x163')],{'onDelete':_0x5420('0x168'),'foreignKey':_0x5420('0x169')});db[_0x5420('0x59')][_0x5420('0x109')](db[_0x5420('0x5b')],{'as':_0x5420('0x14d'),'onDelete':_0x5420('0x108'),'foreignKey':'OpenchannelInteractionId'});db[_0x5420('0x59')][_0x5420('0x143')](db[_0x5420('0x131')],{'as':'Account','foreignKey':_0x5420('0x17c')});db[_0x5420('0x59')][_0x5420('0x143')](db['CmContact'],{'as':_0x5420('0x153'),'foreignKey':_0x5420('0x154')});db[_0x5420('0x59')]['belongsTo'](db[_0x5420('0x12')],{'as':_0x5420('0x161'),'foreignKey':'UserId'});db[_0x5420('0x59')][_0x5420('0x11d')](db[_0x5420('0x163')],{'through':_0x5420('0x180'),'as':_0x5420('0x172')});db['OpenchannelInteraction'][_0x5420('0x11d')](db[_0x5420('0x163')],{'through':'openchannel_interaction_has_tags','as':_0x5420('0x173')});db[_0x5420('0x59')][_0x5420('0x11d')](db[_0x5420('0x12')],{'as':_0x5420('0x164'),'through':_0x5420('0x123'),'foreignKey':_0x5420('0x181')});db[_0x5420('0x5b')][_0x5420('0x143')](db[_0x5420('0x12')],{'onDelete':'cascade','as':_0x5420('0x12')});db['OpenchannelMessage']['belongsTo'](db['CmContact'],{'onDelete':_0x5420('0x108'),'as':_0x5420('0x153')});db[_0x5420('0x5b')][_0x5420('0x143')](db[_0x5420('0x59')],{'onDelete':_0x5420('0x108'),'as':_0x5420('0x165'),'foreignKey':_0x5420('0x181')});db[_0x5420('0x5b')][_0x5420('0x143')](db[_0x5420('0xe1')],{'as':'Attachment','foreignKey':_0x5420('0x174')});db[_0x5420('0x5b')][_0x5420('0x143')](db[_0x5420('0x131')],{'as':_0x5420('0x160'),'foreignKey':'OpenchannelAccountId'});db[_0x5420('0x5c')][_0x5420('0x11d')](db[_0x5420('0x12')],{'as':_0x5420('0x148'),'through':_0x5420('0x33'),'foreignKey':_0x5420('0x17f')});db[_0x5420('0x5c')][_0x5420('0x11d')](db[_0x5420('0xda')],{'through':_0x5420('0x182'),'as':_0x5420('0x149')});db[_0x5420('0x5e')][_0x5420('0x109')](db[_0x5420('0x7f')],{'as':_0x5420('0x159'),'foreignKey':_0x5420('0x167'),'onDelete':_0x5420('0x108')});db[_0x5420('0x5e')][_0x5420('0x109')](db['CannedAnswer'],{'as':_0x5420('0x16c'),'foreignKey':_0x5420('0x167')});db['ChatWebsite'][_0x5420('0x109')](db[_0x5420('0x6c')],{'as':'ProactiveActions'});db[_0x5420('0x5e')][_0x5420('0x109')](db[_0x5420('0x64')],{'as':_0x5420('0x16d')});db[_0x5420('0x5e')]['hasMany'](db['ChatApplication'],{'as':_0x5420('0x13b')});db['ChatWebsite'][_0x5420('0x109')](db['ChatMessage'],{'as':_0x5420('0x14d')});db[_0x5420('0x5e')]['belongsTo'](db[_0x5420('0xee')],{'as':_0x5420('0x16a'),'foreignKey':_0x5420('0x15a')});db['ChatWebsite'][_0x5420('0x143')](db[_0x5420('0x82')],{'as':_0x5420('0x82'),'foreignKey':_0x5420('0x145')});db[_0x5420('0x5e')][_0x5420('0x143')](db[_0x5420('0x39')],{'as':_0x5420('0x39'),'foreignKey':'MailAccountId'});db[_0x5420('0x5e')][_0x5420('0x143')](db[_0x5420('0x15d')],{'as':_0x5420('0x15e'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x5420('0x5e')][_0x5420('0x11d')](db[_0x5420('0x12')],{'as':'Agents','through':_0x5420('0x12d')});db[_0x5420('0x60')]['belongsTo'](db[_0x5420('0x131')],{});db[_0x5420('0x60')][_0x5420('0x143')](db[_0x5420('0xee')],{'as':_0x5420('0x16a'),'foreignKey':'ListId'});db[_0x5420('0x60')][_0x5420('0x143')](db[_0x5420('0x11a')],{'as':'Contact','foreignKey':_0x5420('0x154')});db[_0x5420('0x60')][_0x5420('0x143')](db[_0x5420('0x59')],{});db[_0x5420('0x60')][_0x5420('0x143')](db[_0x5420('0x5b')],{});db['OpenchannelQueueReport']['belongsTo'](db['User'],{});db['OpenchannelQueueReport'][_0x5420('0x143')](db['OpenchannelQueue'],{});db[_0x5420('0x62')][_0x5420('0x143')](db[_0x5420('0x12')],{'as':'Agent','foreignKey':_0x5420('0x10b'),'onDelete':_0x5420('0x168')});db[_0x5420('0x62')][_0x5420('0x143')](db['ChatQueue'],{'as':'Queue','foreignKey':_0x5420('0x183'),'onDelete':_0x5420('0x168')});db[_0x5420('0x62')]['belongsTo'](db['ChatWebsite'],{'as':_0x5420('0x184'),'foreignKey':_0x5420('0x167'),'onDelete':_0x5420('0x168')});db[_0x5420('0x62')]['belongsTo'](db[_0x5420('0x163')],{'onDelete':'restrict','foreignKey':_0x5420('0x169')});db[_0x5420('0x64')]['hasMany'](db[_0x5420('0x66')],{'as':_0x5420('0x14d'),'onDelete':_0x5420('0x108'),'foreignKey':_0x5420('0x185')});db[_0x5420('0x64')]['belongsTo'](db[_0x5420('0x5e')],{'as':_0x5420('0x160'),'foreignKey':_0x5420('0x167')});db[_0x5420('0x64')][_0x5420('0x143')](db[_0x5420('0x11a')],{'as':_0x5420('0x153'),'foreignKey':_0x5420('0x154')});db[_0x5420('0x64')][_0x5420('0x143')](db[_0x5420('0x12')],{'as':'Owner','foreignKey':_0x5420('0x10b')});db['ChatInteraction'][_0x5420('0x11d')](db[_0x5420('0x163')],{'through':_0x5420('0x186'),'as':'Tags'});db['ChatInteraction'][_0x5420('0x11d')](db[_0x5420('0x163')],{'through':_0x5420('0x186'),'as':_0x5420('0x173')});db[_0x5420('0x64')][_0x5420('0x11d')](db[_0x5420('0x12')],{'as':_0x5420('0x164'),'through':'user_has_chat_interactions','foreignKey':_0x5420('0x185')});db[_0x5420('0x66')][_0x5420('0x143')](db[_0x5420('0x12')],{'onDelete':_0x5420('0x108'),'as':_0x5420('0x12')});db[_0x5420('0x66')][_0x5420('0x143')](db[_0x5420('0x11a')],{'onDelete':_0x5420('0x108'),'as':'Contact','foreignKey':_0x5420('0x154')});db[_0x5420('0x66')]['belongsTo'](db[_0x5420('0x64')],{'onDelete':_0x5420('0x108'),'as':_0x5420('0x165'),'foreignKey':_0x5420('0x185')});db['ChatMessage'][_0x5420('0x143')](db['Attachment'],{'as':'Attachment','foreignKey':_0x5420('0x174')});db[_0x5420('0x66')][_0x5420('0x143')](db[_0x5420('0x5e')],{'as':'Account','foreignKey':_0x5420('0x167')});db['ChatOfflineMessage'][_0x5420('0x109')](db['Attachment'],{'as':_0x5420('0x187'),'foreignKey':_0x5420('0x188'),'onDelete':_0x5420('0x108'),'hooks':!![]});db['ChatOfflineMessage'][_0x5420('0x143')](db[_0x5420('0x11a')],{'onDelete':'cascade','as':_0x5420('0x153'),'foreignKey':_0x5420('0x154')});db[_0x5420('0x68')][_0x5420('0x143')](db['ChatWebsite'],{'as':'Account','foreignKey':_0x5420('0x167')});db['ChatQueue'][_0x5420('0x11d')](db[_0x5420('0x12')],{'as':_0x5420('0x148'),'through':'UserChatQueue','hooks':!![]});db[_0x5420('0x128')][_0x5420('0x11d')](db[_0x5420('0xda')],{'through':_0x5420('0x189'),'as':_0x5420('0x149')});db['ChatGroup']['hasMany'](db[_0x5420('0xc5')],{'as':'Messages','foreignKey':_0x5420('0x18a'),'onDelete':_0x5420('0x108')});db[_0x5420('0x6a')][_0x5420('0x11d')](db[_0x5420('0x12')],{'as':_0x5420('0x13d'),'through':_0x5420('0x119')});db[_0x5420('0x6c')][_0x5420('0x143')](db[_0x5420('0x5e')],{'as':'Website','foreignKey':_0x5420('0x167')});db['CmCompany']['hasMany'](db['CmContact'],{'as':_0x5420('0x11b'),'foreignKey':_0x5420('0x18b')});db[_0x5420('0x11a')]['hasMany'](db['CmHopper'],{'as':'Hoppers','foreignKey':_0x5420('0x154')});db[_0x5420('0x11a')][_0x5420('0x109')](db[_0x5420('0x72')],{'as':'HopperFinals','foreignKey':_0x5420('0x154')});db[_0x5420('0x11a')]['hasMany'](db['CmHopperHistory'],{'as':'HopperHistories','foreignKey':'ContactId'});db['CmContact'][_0x5420('0x109')](db[_0x5420('0x75')],{'as':_0x5420('0x75'),'foreignKey':'ContactId'});db[_0x5420('0x11a')][_0x5420('0x109')](db['JscriptySessionReport'],{'as':_0x5420('0x18c'),'foreignKey':_0x5420('0x154')});db[_0x5420('0x11a')][_0x5420('0x109')](db[_0x5420('0x59')],{'as':_0x5420('0x10e'),'foreignKey':'ContactId','onDelete':_0x5420('0x168')});db[_0x5420('0x11a')][_0x5420('0x109')](db[_0x5420('0x64')],{'as':_0x5420('0x10f'),'foreignKey':_0x5420('0x154'),'onDelete':'restrict'});db[_0x5420('0x11a')][_0x5420('0x109')](db[_0x5420('0x52')],{'as':_0x5420('0x122'),'foreignKey':_0x5420('0x154'),'onDelete':'restrict'});db[_0x5420('0x11a')][_0x5420('0x109')](db[_0x5420('0x110')],{'as':_0x5420('0x111'),'foreignKey':_0x5420('0x154'),'onDelete':_0x5420('0x168')});db[_0x5420('0x11a')][_0x5420('0x109')](db[_0x5420('0x112')],{'as':_0x5420('0x113'),'foreignKey':_0x5420('0x154'),'onDelete':_0x5420('0x168')});db[_0x5420('0x11a')][_0x5420('0x143')](db[_0x5420('0x6e')],{'as':_0x5420('0x18d'),'foreignKey':_0x5420('0x18b')});db[_0x5420('0x11a')][_0x5420('0x143')](db[_0x5420('0xee')],{'as':_0x5420('0x16a'),'foreignKey':_0x5420('0x15a'),'onDelete':_0x5420('0x108')});db[_0x5420('0x11a')][_0x5420('0x11d')](db[_0x5420('0x12')],{'as':_0x5420('0x164'),'through':_0x5420('0x11c')});db['CmContact'][_0x5420('0x11d')](db[_0x5420('0x163')],{'as':_0x5420('0x172'),'through':'cm_contact_has_tags'});db[_0x5420('0x11a')]['belongsToMany'](db[_0x5420('0x163')],{'through':_0x5420('0x18e'),'as':_0x5420('0x173')});db[_0x5420('0x18f')][_0x5420('0x143')](db[_0x5420('0x11a')],{'as':'Contact','foreignKey':'ContactId','onDelete':'cascade'});db[_0x5420('0x18f')]['belongsTo'](db['CmList'],{'as':_0x5420('0x16a'),'foreignKey':_0x5420('0x15a'),'onDelete':'cascade'});db[_0x5420('0x18f')][_0x5420('0x143')](db[_0x5420('0x12')],{'as':_0x5420('0x190'),'foreignKey':_0x5420('0x10b')});db[_0x5420('0x18f')][_0x5420('0x143')](db[_0x5420('0x19')],{'as':_0x5420('0x191'),'foreignKey':_0x5420('0x13e'),'onDelete':_0x5420('0x108')});db[_0x5420('0x18f')][_0x5420('0x143')](db[_0x5420('0xde')],{'as':_0x5420('0xde'),'foreignKey':_0x5420('0x192'),'onDelete':_0x5420('0x108')});db[_0x5420('0x18f')]['belongsTo'](db[_0x5420('0x12')],{'as':'Owner','foreignKey':_0x5420('0x193')});db['CmHopperBlack'][_0x5420('0x143')](db[_0x5420('0x11a')],{'as':_0x5420('0x153'),'foreignKey':_0x5420('0x154'),'onDelete':_0x5420('0x108')});db[_0x5420('0x71')][_0x5420('0x143')](db[_0x5420('0xee')],{'as':_0x5420('0x16a'),'foreignKey':_0x5420('0x15a'),'onDelete':_0x5420('0x108')});db[_0x5420('0x71')][_0x5420('0x143')](db['VoiceQueue'],{'as':_0x5420('0x191'),'foreignKey':_0x5420('0x13e'),'onDelete':_0x5420('0x108')});db[_0x5420('0x71')]['belongsTo'](db['Campaign'],{'as':_0x5420('0xde'),'foreignKey':_0x5420('0x192'),'onDelete':_0x5420('0x108')});db[_0x5420('0x7b')][_0x5420('0x109')](db[_0x5420('0x81')],{'as':{'plural':_0x5420('0x194'),'singular':_0x5420('0x195')},'foreignKey':_0x5420('0x196'),'onDelete':_0x5420('0x108'),'hooks':!![]});db[_0x5420('0x7b')][_0x5420('0x109')](db[_0x5420('0x81')],{'as':{'plural':_0x5420('0x197'),'singular':'OneAny'},'foreignKey':'AutomationAnyId','onDelete':_0x5420('0x108'),'hooks':!![]});db[_0x5420('0x7b')][_0x5420('0x109')](db[_0x5420('0x79')],{'as':_0x5420('0x198'),'foreignKey':'AutomationId','onDelete':_0x5420('0x108'),'hooks':!![]});db[_0x5420('0x7f')]['hasMany'](db[_0x5420('0x7f')],{'as':_0x5420('0x159'),'foreignKey':_0x5420('0x199'),'onDelete':_0x5420('0x108')});db[_0x5420('0x82')][_0x5420('0x109')](db[_0x5420('0x82')],{'as':_0x5420('0x19a'),'foreignKey':'IntervalId','onDelete':_0x5420('0x108'),'hooks':!![],'required':![]});db['Interval'][_0x5420('0x109')](db['VoiceExtension'],{'as':'Extensions','foreignKey':_0x5420('0x145'),'onDelete':_0x5420('0x168')});db[_0x5420('0x82')]['hasMany'](db[_0x5420('0x41')],{'as':_0x5420('0x19b'),'foreignKey':_0x5420('0x145')});db[_0x5420('0x82')][_0x5420('0x109')](db[_0x5420('0x62')],{'as':_0x5420('0x19c'),'foreignKey':'IntervalId'});db['Interval']['hasMany'](db[_0x5420('0x16e')],{'as':_0x5420('0x19d'),'foreignKey':_0x5420('0x145')});db[_0x5420('0x82')][_0x5420('0x109')](db[_0x5420('0x177')],{'as':'SmsApplications','foreignKey':_0x5420('0x145')});db[_0x5420('0x88')][_0x5420('0x143')](db['MailAccount'],{});db[_0x5420('0x88')][_0x5420('0x143')](db[_0x5420('0x19e')],{'foreignKey':'DefaultReportId'});db['Schedule'][_0x5420('0x143')](db[_0x5420('0x91')],{'foreignKey':_0x5420('0x19f')});db[_0x5420('0x8a')][_0x5420('0x11d')](db[_0x5420('0x17')],{'as':_0x5420('0x1a0'),'through':_0x5420('0x1a1'),'onDelete':_0x5420('0x168')});db[_0x5420('0x163')][_0x5420('0x11d')](db['CmContact'],{'through':'cm_contact_has_tags'});db[_0x5420('0x163')]['belongsToMany'](db[_0x5420('0x64')],{'through':_0x5420('0x186')});db[_0x5420('0x163')][_0x5420('0x11d')](db['MailInteraction'],{'through':_0x5420('0x162')});db[_0x5420('0x163')][_0x5420('0x11d')](db[_0x5420('0x52')],{'through':_0x5420('0x179')});db[_0x5420('0x163')][_0x5420('0x11d')](db['FaxInteraction'],{'through':_0x5420('0x171')});db['Tag'][_0x5420('0x11d')](db[_0x5420('0x59')],{'through':_0x5420('0x180')});db['Tag'][_0x5420('0x11d')](db[_0x5420('0xfc')],{'through':_0x5420('0x1a2')});db[_0x5420('0x8d')][_0x5420('0x109')](db[_0x5420('0x81')],{'as':{'plural':'AllConditions','singular':_0x5420('0x1a3')},'foreignKey':'TriggerAllId','onDelete':_0x5420('0x108'),'hooks':!![]});db[_0x5420('0x8d')][_0x5420('0x109')](db['Condition'],{'as':{'plural':_0x5420('0x1a4'),'singular':_0x5420('0x1a5')},'foreignKey':_0x5420('0x1a6'),'onDelete':_0x5420('0x108'),'hooks':!![]});db[_0x5420('0x8d')][_0x5420('0x109')](db['Action'],{'as':'Actions','foreignKey':'TriggerId','onDelete':_0x5420('0x108'),'hooks':!![]});db[_0x5420('0x91')][_0x5420('0x109')](db['AnalyticFieldReport'],{'as':_0x5420('0x1a7'),'onDelete':'cascade','foreignKey':_0x5420('0x19f'),'hooks':!![]});db['AnalyticDefaultReport']['hasMany'](db['AnalyticFieldReport'],{'as':_0x5420('0x1a7'),'onDelete':'cascade','foreignKey':_0x5420('0x1a8')});db['AnalyticMetric']['hasMany'](db[_0x5420('0x95')],{'as':_0x5420('0x1a7'),'onDelete':'cascade','foreignKey':_0x5420('0x1a9')});db[_0x5420('0x95')][_0x5420('0x143')](db[_0x5420('0x94')],{'foreignKey':_0x5420('0x1a9')});db['SalesforceAccount'][_0x5420('0x109')](db['SalesforceConfiguration'],{'as':_0x5420('0x1aa'),'onDelete':_0x5420('0x108'),'foreignKey':_0x5420('0x1ab')});db[_0x5420('0x1ac')][_0x5420('0x109')](db[_0x5420('0x1ad')],{'as':_0x5420('0x1ae'),'onDelete':_0x5420('0x108'),'foreignKey':_0x5420('0x1af')});db['SalesforceConfiguration']['hasMany'](db['SalesforceField'],{'as':_0x5420('0x1b0'),'onDelete':_0x5420('0x108'),'foreignKey':_0x5420('0x1b1')});db[_0x5420('0x1ac')]['hasMany'](db[_0x5420('0x1ad')],{'as':'Fields','onDelete':'cascade','foreignKey':_0x5420('0x1b2')});db['SalesforceConfiguration'][_0x5420('0x143')](db['SalesforceAccount'],{'as':_0x5420('0x160'),'foreignKey':_0x5420('0x1ab')});db[_0x5420('0x1ad')][_0x5420('0x109')](db[_0x5420('0x1ad')],{'as':_0x5420('0x1b3'),'foreignKey':_0x5420('0x1af')});db[_0x5420('0x1ad')][_0x5420('0x109')](db[_0x5420('0x1ad')],{'as':'Description','foreignKey':_0x5420('0x1b1')});db['SalesforceField'][_0x5420('0x109')](db[_0x5420('0x1ad')],{'as':_0x5420('0x1b4'),'foreignKey':_0x5420('0x1b2')});db['SalesforceField'][_0x5420('0x143')](db[_0x5420('0x1b5')],{'as':_0x5420('0x1b5'),'foreignKey':_0x5420('0x1b6')});db[_0x5420('0x9c')][_0x5420('0x109')](db[_0x5420('0x1b7')],{'as':_0x5420('0x1aa'),'onDelete':_0x5420('0x108'),'foreignKey':_0x5420('0x1ab')});db['SugarcrmConfiguration'][_0x5420('0x109')](db[_0x5420('0x9e')],{'as':_0x5420('0x1ae'),'onDelete':_0x5420('0x108'),'foreignKey':_0x5420('0x1af')});db[_0x5420('0x1b7')][_0x5420('0x109')](db['SugarcrmField'],{'as':'Descriptions','onDelete':_0x5420('0x108'),'foreignKey':_0x5420('0x1b1')});db[_0x5420('0x1b7')][_0x5420('0x109')](db[_0x5420('0x9e')],{'as':_0x5420('0x1a7'),'onDelete':_0x5420('0x108'),'foreignKey':'FieldId'});db['SugarcrmConfiguration'][_0x5420('0x143')](db[_0x5420('0x9c')],{'as':'Account','foreignKey':_0x5420('0x1ab')});db['SugarcrmField'][_0x5420('0x109')](db[_0x5420('0x9e')],{'as':_0x5420('0x1b3'),'foreignKey':_0x5420('0x1af')});db[_0x5420('0x9e')][_0x5420('0x109')](db[_0x5420('0x9e')],{'as':_0x5420('0x1b8'),'foreignKey':'DescriptionId'});db[_0x5420('0x9e')]['hasMany'](db[_0x5420('0x9e')],{'as':'Field','foreignKey':_0x5420('0x1b2')});db[_0x5420('0x9e')][_0x5420('0x143')](db[_0x5420('0x1b5')],{'as':_0x5420('0x1b5'),'foreignKey':_0x5420('0x1b6')});db[_0x5420('0xa0')][_0x5420('0x109')](db['DeskConfiguration'],{'as':_0x5420('0x1aa'),'onDelete':_0x5420('0x108'),'foreignKey':_0x5420('0x1ab')});db[_0x5420('0xa2')][_0x5420('0x109')](db[_0x5420('0xa4')],{'as':'Subjects','onDelete':'cascade','foreignKey':_0x5420('0x1af')});db[_0x5420('0xa2')]['hasMany'](db['DeskField'],{'as':'Descriptions','onDelete':'cascade','foreignKey':_0x5420('0x1b1')});db['DeskConfiguration'][_0x5420('0x109')](db[_0x5420('0xa4')],{'as':_0x5420('0x1a7'),'onDelete':_0x5420('0x108'),'foreignKey':'FieldId'});db[_0x5420('0xa2')][_0x5420('0x143')](db['DeskAccount'],{'as':'Account','foreignKey':'AccountId'});db[_0x5420('0xa2')]['belongsToMany'](db['Tag'],{'through':_0x5420('0x1b9')});db[_0x5420('0xa4')][_0x5420('0x109')](db[_0x5420('0xa4')],{'as':_0x5420('0x1b3'),'foreignKey':_0x5420('0x1af')});db['DeskField'][_0x5420('0x109')](db['DeskField'],{'as':_0x5420('0x1b8'),'foreignKey':_0x5420('0x1b1')});db[_0x5420('0xa4')][_0x5420('0x109')](db[_0x5420('0xa4')],{'as':_0x5420('0x1b4'),'foreignKey':_0x5420('0x1b2')});db[_0x5420('0xa4')]['belongsTo'](db[_0x5420('0x1b5')],{'as':_0x5420('0x1b5'),'foreignKey':_0x5420('0x1b6')});db['ZohoAccount'][_0x5420('0x109')](db[_0x5420('0xa7')],{'as':_0x5420('0x1aa'),'onDelete':'cascade','foreignKey':_0x5420('0x1ab')});db[_0x5420('0xa7')][_0x5420('0x109')](db['ZohoField'],{'as':'Subjects','onDelete':_0x5420('0x108'),'foreignKey':'SubjectId'});db[_0x5420('0xa7')][_0x5420('0x109')](db[_0x5420('0x1ba')],{'as':_0x5420('0x1b0'),'onDelete':'cascade','foreignKey':'DescriptionId'});db[_0x5420('0xa7')][_0x5420('0x109')](db[_0x5420('0x1ba')],{'as':_0x5420('0x1a7'),'onDelete':_0x5420('0x108'),'foreignKey':'FieldId'});db[_0x5420('0xa7')]['belongsTo'](db['ZohoAccount'],{'as':'Account','foreignKey':_0x5420('0x1ab')});db[_0x5420('0x1ba')][_0x5420('0x109')](db[_0x5420('0x1ba')],{'as':_0x5420('0x1b3'),'foreignKey':_0x5420('0x1af')});db[_0x5420('0x1ba')][_0x5420('0x109')](db[_0x5420('0x1ba')],{'as':_0x5420('0x1b8'),'foreignKey':_0x5420('0x1b1')});db[_0x5420('0x1ba')][_0x5420('0x109')](db['ZohoField'],{'as':_0x5420('0x1b4'),'foreignKey':_0x5420('0x1b2')});db[_0x5420('0x1ba')]['belongsTo'](db[_0x5420('0x1b5')],{'as':_0x5420('0x1b5'),'foreignKey':_0x5420('0x1b6')});db[_0x5420('0x1bb')][_0x5420('0x109')](db[_0x5420('0xab')],{'as':_0x5420('0x1aa'),'onDelete':'cascade','foreignKey':_0x5420('0x1ab')});db[_0x5420('0xab')][_0x5420('0x109')](db[_0x5420('0xad')],{'as':_0x5420('0x1ae'),'foreignKey':_0x5420('0x1af')});db[_0x5420('0xab')][_0x5420('0x109')](db[_0x5420('0xad')],{'as':_0x5420('0x1b0'),'foreignKey':_0x5420('0x1b1')});db['ZendeskConfiguration'][_0x5420('0x109')](db[_0x5420('0xad')],{'as':_0x5420('0x1a7'),'foreignKey':_0x5420('0x1b2')});db['ZendeskConfiguration'][_0x5420('0x143')](db[_0x5420('0x1bb')],{'as':'Account','foreignKey':_0x5420('0x1ab')});db[_0x5420('0xab')][_0x5420('0x11d')](db['Tag'],{'through':'int_zendesk_configuration_has_tags'});db[_0x5420('0xad')]['hasMany'](db[_0x5420('0xad')],{'as':'Subject','foreignKey':_0x5420('0x1af')});db['ZendeskField'][_0x5420('0x109')](db[_0x5420('0xad')],{'as':'Description','foreignKey':_0x5420('0x1b1')});db[_0x5420('0xad')]['hasMany'](db['ZendeskField'],{'as':_0x5420('0x1b4'),'foreignKey':_0x5420('0x1b2')});db[_0x5420('0xad')][_0x5420('0x143')](db[_0x5420('0x1b5')],{'as':_0x5420('0x1b5'),'foreignKey':_0x5420('0x1b6')});db['FreshdeskAccount'][_0x5420('0x109')](db['FreshdeskConfiguration'],{'as':_0x5420('0x1aa'),'onDelete':_0x5420('0x108'),'foreignKey':'AccountId'});db[_0x5420('0xb0')][_0x5420('0x109')](db['FreshdeskField'],{'as':_0x5420('0x1ae'),'onDelete':_0x5420('0x108'),'foreignKey':_0x5420('0x1af')});db[_0x5420('0xb0')][_0x5420('0x109')](db[_0x5420('0x1bc')],{'as':_0x5420('0x1b0'),'onDelete':'cascade','foreignKey':_0x5420('0x1b1')});db[_0x5420('0xb0')]['hasMany'](db[_0x5420('0x1bc')],{'as':_0x5420('0x1a7'),'onDelete':_0x5420('0x108'),'foreignKey':_0x5420('0x1b2')});db[_0x5420('0xb0')][_0x5420('0x143')](db[_0x5420('0xae')],{'as':_0x5420('0x160'),'foreignKey':_0x5420('0x1ab')});db['FreshdeskConfiguration'][_0x5420('0x11d')](db[_0x5420('0x163')],{'through':_0x5420('0x1bd')});db[_0x5420('0x1bc')][_0x5420('0x109')](db[_0x5420('0x1bc')],{'as':_0x5420('0x1b3'),'foreignKey':'SubjectId'});db[_0x5420('0x1bc')][_0x5420('0x109')](db[_0x5420('0x1bc')],{'as':_0x5420('0x1b8'),'foreignKey':_0x5420('0x1b1')});db['FreshdeskField']['hasMany'](db[_0x5420('0x1bc')],{'as':'Field','foreignKey':_0x5420('0x1b2')});db[_0x5420('0x1bc')][_0x5420('0x143')](db[_0x5420('0x1b5')],{'as':_0x5420('0x1b5'),'foreignKey':_0x5420('0x1b6')});db[_0x5420('0x1be')][_0x5420('0x109')](db[_0x5420('0x1bf')],{'as':_0x5420('0x1aa'),'onDelete':_0x5420('0x108'),'foreignKey':_0x5420('0x1ab')});db['VtigerConfiguration'][_0x5420('0x109')](db[_0x5420('0xb3')],{'as':_0x5420('0x1ae'),'foreignKey':_0x5420('0x1af')});db[_0x5420('0x1bf')][_0x5420('0x109')](db[_0x5420('0xb3')],{'as':_0x5420('0x1b0'),'foreignKey':_0x5420('0x1b1')});db['VtigerConfiguration']['hasMany'](db[_0x5420('0xb3')],{'as':_0x5420('0x1a7'),'foreignKey':_0x5420('0x1b2')});db['VtigerConfiguration'][_0x5420('0x143')](db['VtigerAccount'],{'as':_0x5420('0x160'),'foreignKey':_0x5420('0x1ab')});db['VtigerField'][_0x5420('0x109')](db[_0x5420('0xb3')],{'as':_0x5420('0x1b3'),'foreignKey':_0x5420('0x1af')});db[_0x5420('0xb3')][_0x5420('0x109')](db[_0x5420('0xb3')],{'as':_0x5420('0x1b8'),'foreignKey':_0x5420('0x1b1')});db['VtigerField']['hasMany'](db[_0x5420('0xb3')],{'as':_0x5420('0x1b4'),'foreignKey':'FieldId'});db['VtigerField'][_0x5420('0x143')](db[_0x5420('0x1b5')],{'as':_0x5420('0x1b5'),'foreignKey':_0x5420('0x1b6')});db[_0x5420('0xb5')]['hasMany'](db[_0x5420('0x1c0')],{'as':_0x5420('0x1aa'),'onDelete':_0x5420('0x108'),'foreignKey':_0x5420('0x1ab')});db[_0x5420('0x1c0')][_0x5420('0x109')](db[_0x5420('0x1c1')],{'as':_0x5420('0x1ae'),'foreignKey':_0x5420('0x1af')});db[_0x5420('0x1c0')][_0x5420('0x109')](db[_0x5420('0x1c1')],{'as':_0x5420('0x1b0'),'foreignKey':_0x5420('0x1b1')});db[_0x5420('0x1c0')][_0x5420('0x109')](db[_0x5420('0x1c1')],{'as':'Fields','foreignKey':_0x5420('0x1b2')});db['ServicenowConfiguration'][_0x5420('0x143')](db['ServicenowAccount'],{'as':'Account','foreignKey':_0x5420('0x1ab')});db[_0x5420('0x1c1')][_0x5420('0x109')](db[_0x5420('0x1c1')],{'as':_0x5420('0x1b3'),'foreignKey':_0x5420('0x1af')});db[_0x5420('0x1c1')]['hasMany'](db['ServicenowField'],{'as':_0x5420('0x1b8'),'foreignKey':_0x5420('0x1b1')});db['ServicenowField'][_0x5420('0x109')](db[_0x5420('0x1c1')],{'as':_0x5420('0x1b4'),'foreignKey':_0x5420('0x1b2')});db[_0x5420('0x1c1')][_0x5420('0x143')](db[_0x5420('0x1b5')],{'as':'Variable','foreignKey':_0x5420('0x1b6')});db['Dynamics365Account']['hasMany'](db['Dynamics365Configuration'],{'as':_0x5420('0x1aa'),'onDelete':_0x5420('0x108'),'foreignKey':_0x5420('0x1ab')});db['Dynamics365Configuration'][_0x5420('0x109')](db[_0x5420('0xba')],{'as':_0x5420('0x1ae'),'onDelete':'cascade','foreignKey':_0x5420('0x1af')});db[_0x5420('0x1c2')][_0x5420('0x109')](db[_0x5420('0xba')],{'as':_0x5420('0x1b0'),'onDelete':'cascade','foreignKey':'DescriptionId'});db[_0x5420('0x1c2')]['hasMany'](db[_0x5420('0xba')],{'as':_0x5420('0x1a7'),'onDelete':'cascade','foreignKey':_0x5420('0x1b2')});db[_0x5420('0x1c2')][_0x5420('0x143')](db[_0x5420('0x1c3')],{'as':_0x5420('0x160'),'foreignKey':_0x5420('0x1ab')});db[_0x5420('0xba')][_0x5420('0x109')](db[_0x5420('0xba')],{'as':_0x5420('0x1b3'),'foreignKey':_0x5420('0x1af')});db[_0x5420('0xba')][_0x5420('0x109')](db[_0x5420('0xba')],{'as':_0x5420('0x1b8'),'foreignKey':_0x5420('0x1b1')});db[_0x5420('0xba')]['hasMany'](db[_0x5420('0xba')],{'as':_0x5420('0x1b4'),'foreignKey':_0x5420('0x1b2')});db['Dynamics365Field'][_0x5420('0x143')](db['Variable'],{'as':'Variable','foreignKey':'VariableId'});db[_0x5420('0xbc')]['hasMany'](db[_0x5420('0xbe')],{'as':_0x5420('0x1aa'),'onDelete':_0x5420('0x108'),'foreignKey':_0x5420('0x1ab')});db['FreshsalesConfiguration'][_0x5420('0x109')](db[_0x5420('0xc0')],{'as':_0x5420('0x1ae'),'foreignKey':_0x5420('0x1af')});db[_0x5420('0xbe')]['hasMany'](db[_0x5420('0xc0')],{'as':_0x5420('0x1b0'),'foreignKey':_0x5420('0x1b1')});db[_0x5420('0xbe')]['hasMany'](db[_0x5420('0xc0')],{'as':_0x5420('0x1a7'),'foreignKey':_0x5420('0x1b2')});db[_0x5420('0xbe')][_0x5420('0x143')](db[_0x5420('0xbc')],{'as':_0x5420('0x160'),'foreignKey':'AccountId'});db[_0x5420('0xc0')][_0x5420('0x109')](db[_0x5420('0xc0')],{'as':_0x5420('0x1b3'),'foreignKey':_0x5420('0x1af')});db[_0x5420('0xc0')][_0x5420('0x109')](db[_0x5420('0xc0')],{'as':_0x5420('0x1b8'),'foreignKey':_0x5420('0x1b1')});db[_0x5420('0xc0')][_0x5420('0x109')](db[_0x5420('0xc0')],{'as':_0x5420('0x1b4'),'foreignKey':_0x5420('0x1b2')});db['FreshsalesField'][_0x5420('0x143')](db['Variable'],{'as':_0x5420('0x1b5'),'foreignKey':_0x5420('0x1b6')});db['ChatQueueReport']['belongsTo'](db['ChatWebsite'],{});db[_0x5420('0xc3')][_0x5420('0x143')](db['CmList'],{'as':_0x5420('0x16a'),'foreignKey':'ListId'});db[_0x5420('0xc3')][_0x5420('0x143')](db[_0x5420('0x11a')],{'as':_0x5420('0x153'),'foreignKey':'ContactId'});db[_0x5420('0xc3')]['belongsTo'](db[_0x5420('0x64')],{});db['ChatQueueReport'][_0x5420('0x143')](db[_0x5420('0x66')],{});db['ChatQueueReport'][_0x5420('0x143')](db[_0x5420('0x12')],{});db[_0x5420('0xc3')][_0x5420('0x143')](db[_0x5420('0x128')],{});db[_0x5420('0xc5')][_0x5420('0x143')](db[_0x5420('0x12')],{'onDelete':_0x5420('0x108'),'foreignKey':'FromId'});db[_0x5420('0xc5')][_0x5420('0x143')](db[_0x5420('0x12')],{'onDelete':_0x5420('0x108'),'foreignKey':'ToId'});db[_0x5420('0xc8')][_0x5420('0x109')](db[_0x5420('0xc6')],{'foreignKey':_0x5420('0x1c4'),'onDelete':_0x5420('0x108')});db['JscriptySessionReport'][_0x5420('0x109')](db[_0x5420('0x1c5')],{'foreignKey':_0x5420('0x1c4'),'onDelete':_0x5420('0x108')});db['SmsQueueReport']['belongsTo'](db[_0x5420('0x4f')],{});db['SmsQueueReport'][_0x5420('0x143')](db[_0x5420('0xee')],{'as':_0x5420('0x16a'),'foreignKey':_0x5420('0x15a')});db[_0x5420('0xca')]['belongsTo'](db['CmContact'],{'as':_0x5420('0x153'),'foreignKey':_0x5420('0x154')});db[_0x5420('0xca')][_0x5420('0x143')](db[_0x5420('0x52')],{});db['SmsQueueReport']['belongsTo'](db[_0x5420('0x53')],{});db[_0x5420('0xca')][_0x5420('0x143')](db[_0x5420('0x12')],{});db[_0x5420('0xca')][_0x5420('0x143')](db[_0x5420('0x55')],{});db[_0x5420('0xd0')][_0x5420('0x109')](db[_0x5420('0xc8')],{'foreignKey':_0x5420('0x1c6')});db[_0x5420('0xd0')][_0x5420('0x109')](db['JscriptyQuestionReport'],{'foreignKey':'ProjectId'});db['JscriptyProject']['hasMany'](db[_0x5420('0x1c5')],{'foreignKey':'ProjectId'});db[_0x5420('0xd4')][_0x5420('0x11d')](db[_0x5420('0x12')],{'as':_0x5420('0x164'),'through':_0x5420('0x136')});db[_0x5420('0xda')][_0x5420('0x11d')](db[_0x5420('0x12')],{'as':_0x5420('0x148'),'through':_0x5420('0x1c7')});db['Team'][_0x5420('0x11d')](db[_0x5420('0x19')],{'through':_0x5420('0x105'),'as':_0x5420('0x1c8')});db['Team'][_0x5420('0x11d')](db['MailQueue'],{'through':'team_has_mail_queues','as':_0x5420('0x126')});db['Team'][_0x5420('0x11d')](db[_0x5420('0x128')],{'through':'team_has_chat_queues','as':'ChatQueues'});db[_0x5420('0xda')][_0x5420('0x11d')](db[_0x5420('0x4d')],{'through':_0x5420('0x1c9'),'as':'FaxQueues'});db[_0x5420('0xda')][_0x5420('0x11d')](db['SmsQueue'],{'through':_0x5420('0x17b'),'as':_0x5420('0x1ca')});db['Team'][_0x5420('0x11d')](db[_0x5420('0x5c')],{'through':_0x5420('0x182'),'as':_0x5420('0x1cb')});db[_0x5420('0xda')][_0x5420('0x11d')](db[_0x5420('0x102')],{'through':'team_has_whatsapp_queues','as':_0x5420('0x1cc')});db[_0x5420('0xde')][_0x5420('0x109')](db[_0x5420('0x18f')],{'as':_0x5420('0x13f'),'foreignKey':'CampaignId'});db[_0x5420('0xde')][_0x5420('0x109')](db[_0x5420('0x72')],{'as':_0x5420('0x140'),'foreignKey':_0x5420('0x192')});db[_0x5420('0xde')][_0x5420('0x109')](db[_0x5420('0x73')],{'as':_0x5420('0x141'),'foreignKey':_0x5420('0x192')});db[_0x5420('0xde')][_0x5420('0x109')](db[_0x5420('0x71')],{'as':'HopperBlacks','foreignKey':_0x5420('0x192')});db['Campaign'][_0x5420('0x143')](db[_0x5420('0x27')],{'as':'Trunk','foreignKey':_0x5420('0x1cd')});db[_0x5420('0xde')][_0x5420('0x143')](db['Trunk'],{'as':'TrunkBackup','foreignKey':_0x5420('0x1ce')});db['Campaign'][_0x5420('0x143')](db['Interval'],{'as':_0x5420('0x82'),'foreignKey':_0x5420('0x145')});db[_0x5420('0xde')][_0x5420('0x143')](db[_0x5420('0xd4')],{'as':_0x5420('0xd4'),'foreignKey':_0x5420('0x1cf')});db[_0x5420('0xde')][_0x5420('0x11d')](db[_0x5420('0xee')],{'as':_0x5420('0x11e'),'through':_0x5420('0x1d0')});db[_0x5420('0xde')][_0x5420('0x11d')](db['CmList'],{'as':_0x5420('0x14a'),'through':_0x5420('0x1d1')});db[_0x5420('0xe1')]['belongsTo'](db[_0x5420('0x68')],{'as':_0x5420('0x68'),'foreignKey':'ChatOfflineMessageId'});db[_0x5420('0xe4')]['belongsTo'](db['MailMessage'],{});db['MailTransferReport']['belongsTo'](db[_0x5420('0x112')],{});db[_0x5420('0xe4')][_0x5420('0x143')](db['MailAccount'],{'foreignKey':'FromMailAccountId','as':_0x5420('0x1d2')});db[_0x5420('0xe4')][_0x5420('0x143')](db[_0x5420('0x12')],{'foreignKey':_0x5420('0x1d3'),'as':_0x5420('0x1d4')});db[_0x5420('0xe4')][_0x5420('0x143')](db[_0x5420('0x12')],{'foreignKey':_0x5420('0x1d5'),'as':_0x5420('0x1d6')});db[_0x5420('0xe4')]['belongsTo'](db[_0x5420('0x125')],{'foreignKey':_0x5420('0x1d7'),'as':_0x5420('0x1d8')});db[_0x5420('0xe4')][_0x5420('0x143')](db[_0x5420('0x39')],{'foreignKey':_0x5420('0x1d9'),'as':'ToAccount'});db['ChatTransferReport'][_0x5420('0x143')](db[_0x5420('0x66')],{});db['ChatTransferReport']['belongsTo'](db[_0x5420('0x64')],{});db[_0x5420('0xe6')][_0x5420('0x143')](db[_0x5420('0x5e')],{'foreignKey':_0x5420('0x1da'),'as':_0x5420('0x1d2')});db[_0x5420('0xe6')][_0x5420('0x143')](db[_0x5420('0x12')],{'foreignKey':_0x5420('0x1d3'),'as':_0x5420('0x1d4')});db[_0x5420('0xe6')][_0x5420('0x143')](db['User'],{'foreignKey':_0x5420('0x1d5'),'as':_0x5420('0x1d6')});db[_0x5420('0xe6')][_0x5420('0x143')](db[_0x5420('0x128')],{'foreignKey':'ToChatQueueId','as':_0x5420('0x1d8')});db['ChatTransferReport'][_0x5420('0x143')](db['ChatWebsite'],{'foreignKey':_0x5420('0x1db'),'as':_0x5420('0x1dc')});db[_0x5420('0xe8')]['belongsTo'](db[_0x5420('0x16f')],{});db[_0x5420('0xe8')][_0x5420('0x143')](db[_0x5420('0x110')],{});db['FaxTransferReport'][_0x5420('0x143')](db[_0x5420('0x48')],{'foreignKey':_0x5420('0x1dd'),'as':_0x5420('0x1d2')});db[_0x5420('0xe8')][_0x5420('0x143')](db[_0x5420('0x12')],{'foreignKey':_0x5420('0x1d3'),'as':_0x5420('0x1d4')});db[_0x5420('0xe8')][_0x5420('0x143')](db['User'],{'foreignKey':_0x5420('0x1d5'),'as':_0x5420('0x1d6')});db[_0x5420('0xe8')][_0x5420('0x143')](db[_0x5420('0x4d')],{'foreignKey':_0x5420('0x1de'),'as':_0x5420('0x1d8')});db[_0x5420('0xe8')]['belongsTo'](db[_0x5420('0x48')],{'foreignKey':'ToFaxAccountId','as':_0x5420('0x1dc')});db[_0x5420('0xea')][_0x5420('0x143')](db['OpenchannelMessage'],{});db[_0x5420('0xea')]['belongsTo'](db[_0x5420('0x59')],{});db[_0x5420('0xea')][_0x5420('0x143')](db[_0x5420('0x131')],{'foreignKey':_0x5420('0x1df'),'as':_0x5420('0x1d2')});db[_0x5420('0xea')][_0x5420('0x143')](db[_0x5420('0x12')],{'foreignKey':_0x5420('0x1d3'),'as':_0x5420('0x1d4')});db['OpenchannelTransferReport']['belongsTo'](db[_0x5420('0x12')],{'foreignKey':_0x5420('0x1d5'),'as':_0x5420('0x1d6')});db['OpenchannelTransferReport'][_0x5420('0x143')](db[_0x5420('0x5c')],{'foreignKey':_0x5420('0x1e0'),'as':_0x5420('0x1d8')});db[_0x5420('0xea')][_0x5420('0x143')](db[_0x5420('0x131')],{'foreignKey':_0x5420('0x1e1'),'as':_0x5420('0x1dc')});db[_0x5420('0xec')]['belongsTo'](db[_0x5420('0x53')],{});db['SmsTransferReport'][_0x5420('0x143')](db[_0x5420('0x52')],{});db['SmsTransferReport']['belongsTo'](db[_0x5420('0x4f')],{'foreignKey':_0x5420('0x1e2'),'as':_0x5420('0x1d2')});db['SmsTransferReport'][_0x5420('0x143')](db[_0x5420('0x12')],{'foreignKey':_0x5420('0x1d3'),'as':_0x5420('0x1d4')});db[_0x5420('0xec')]['belongsTo'](db[_0x5420('0x12')],{'foreignKey':_0x5420('0x1d5'),'as':_0x5420('0x1d6')});db[_0x5420('0xec')][_0x5420('0x143')](db[_0x5420('0x55')],{'foreignKey':_0x5420('0x1e3'),'as':_0x5420('0x1d8')});db[_0x5420('0xec')][_0x5420('0x143')](db[_0x5420('0x4f')],{'foreignKey':'ToSmsAccountId','as':'ToAccount'});db[_0x5420('0xee')][_0x5420('0x109')](db[_0x5420('0x7f')],{'as':_0x5420('0x159'),'foreignKey':'ListId','onDelete':_0x5420('0x108')});db[_0x5420('0xee')][_0x5420('0x109')](db[_0x5420('0x77')],{'as':_0x5420('0x1e4'),'foreignKey':'ListId'});db[_0x5420('0xee')][_0x5420('0x109')](db[_0x5420('0x11a')],{'as':_0x5420('0x11b'),'onDelete':_0x5420('0x108'),'foreignKey':_0x5420('0x15a')});db[_0x5420('0xee')][_0x5420('0x109')](db[_0x5420('0x72')],{'as':'HopperFinals','foreignKey':'ListId'});db[_0x5420('0xee')][_0x5420('0x109')](db[_0x5420('0x73')],{'as':_0x5420('0x1e5'),'foreignKey':_0x5420('0x15a')});db[_0x5420('0xee')][_0x5420('0x109')](db[_0x5420('0x75')],{'as':_0x5420('0x75'),'foreignKey':'ListId'});db[_0x5420('0xee')][_0x5420('0x11d')](db[_0x5420('0x19')],{'as':_0x5420('0x1e6'),'through':_0x5420('0x147')});db[_0x5420('0xee')][_0x5420('0x11d')](db['User'],{'as':_0x5420('0x148'),'through':_0x5420('0x11f')});db[_0x5420('0xef')][_0x5420('0x109')](db[_0x5420('0x16')],{'as':_0x5420('0x10d'),'onDelete':_0x5420('0x108')});db[_0x5420('0xef')][_0x5420('0x11d')](db[_0x5420('0x12')],{'as':'Agents','through':_0x5420('0x12c')});db[_0x5420('0xf1')][_0x5420('0x109')](db[_0x5420('0x12')],{'as':'Users','foreignKey':_0x5420('0x117')});db['UserProfile'][_0x5420('0x109')](db[_0x5420('0xf3')],{'as':_0x5420('0x1e7'),'foreignKey':_0x5420('0x117'),'onDelete':_0x5420('0x108')});db[_0x5420('0xf3')][_0x5420('0x109')](db[_0x5420('0xf5')],{'as':_0x5420('0x1e8'),'foreignKey':'sectionId','onDelete':'cascade'});db[_0x5420('0xf9')][_0x5420('0x109')](db['Disposition'],{'as':_0x5420('0x159'),'foreignKey':_0x5420('0x1e9'),'onDelete':_0x5420('0x108')});db[_0x5420('0xf9')][_0x5420('0x109')](db[_0x5420('0x7d')],{'as':_0x5420('0x16c'),'foreignKey':_0x5420('0x1e9')});db[_0x5420('0xf9')][_0x5420('0x109')](db[_0x5420('0xfe')],{'as':_0x5420('0x14d'),'foreignKey':'WhatsappAccountId'});db[_0x5420('0xf9')][_0x5420('0x109')](db[_0x5420('0xfc')],{'as':_0x5420('0x16d')});db[_0x5420('0xf9')][_0x5420('0x109')](db[_0x5420('0xfa')],{'as':_0x5420('0x13b')});db[_0x5420('0xf9')][_0x5420('0x143')](db[_0x5420('0xee')],{'as':_0x5420('0x16a'),'foreignKey':_0x5420('0x15a')});db[_0x5420('0xf9')][_0x5420('0x143')](db[_0x5420('0x15d')],{'as':'mandatoryDispositionPause','foreignKey':_0x5420('0x146')});db[_0x5420('0xf9')][_0x5420('0x11d')](db['User'],{'as':_0x5420('0x148'),'through':_0x5420('0x134')});db[_0x5420('0xfa')][_0x5420('0x143')](db[_0x5420('0x12')],{'onDelete':_0x5420('0x168')});db[_0x5420('0xfa')][_0x5420('0x143')](db[_0x5420('0x102')],{'onDelete':'restrict'});db[_0x5420('0xfa')][_0x5420('0x143')](db[_0x5420('0xf9')],{'onDelete':'restrict'});db[_0x5420('0xfa')]['belongsTo'](db['Interval'],{'onDelete':'restrict','foreignKey':_0x5420('0x145')});db['WhatsappApplication']['belongsTo'](db[_0x5420('0x163')],{'onDelete':_0x5420('0x168'),'foreignKey':_0x5420('0x169')});db[_0x5420('0xfc')][_0x5420('0x109')](db[_0x5420('0xfe')],{'as':_0x5420('0x14d'),'onDelete':_0x5420('0x108'),'foreignKey':_0x5420('0x1ea')});db[_0x5420('0xfc')][_0x5420('0x143')](db[_0x5420('0xf9')],{'as':_0x5420('0x160'),'foreignKey':'WhatsappAccountId'});db['WhatsappInteraction'][_0x5420('0x143')](db[_0x5420('0x11a')],{'as':_0x5420('0x153'),'foreignKey':_0x5420('0x154')});db['WhatsappInteraction'][_0x5420('0x143')](db[_0x5420('0x12')],{'as':_0x5420('0x161'),'foreignKey':_0x5420('0x10b')});db['WhatsappInteraction'][_0x5420('0x11d')](db[_0x5420('0x163')],{'through':_0x5420('0x1a2'),'as':_0x5420('0x172')});db['WhatsappInteraction'][_0x5420('0x11d')](db[_0x5420('0x163')],{'through':_0x5420('0x1a2'),'as':_0x5420('0x173')});db[_0x5420('0xfc')][_0x5420('0x11d')](db[_0x5420('0x12')],{'as':_0x5420('0x164'),'through':_0x5420('0x124'),'foreignKey':_0x5420('0x1ea')});db[_0x5420('0xfe')][_0x5420('0x143')](db[_0x5420('0x12')],{'as':'User'});db['WhatsappMessage'][_0x5420('0x143')](db[_0x5420('0x11a')],{'onDelete':_0x5420('0x108'),'as':_0x5420('0x153')});db[_0x5420('0xfe')]['belongsTo'](db['WhatsappInteraction'],{'onDelete':'cascade','as':_0x5420('0x165'),'foreignKey':_0x5420('0x1ea')});db['WhatsappMessage'][_0x5420('0x143')](db['WhatsappAccount'],{'as':_0x5420('0x160'),'foreignKey':_0x5420('0x1e9')});db[_0x5420('0x100')][_0x5420('0x143')](db[_0x5420('0xf9')],{});db['WhatsappQueueReport']['belongsTo'](db[_0x5420('0xee')],{'as':_0x5420('0x16a'),'foreignKey':'ListId'});db['WhatsappQueueReport'][_0x5420('0x143')](db[_0x5420('0x11a')],{'as':_0x5420('0x153'),'foreignKey':_0x5420('0x154')});db[_0x5420('0x100')][_0x5420('0x143')](db[_0x5420('0xfc')],{});db['WhatsappQueueReport'][_0x5420('0x143')](db[_0x5420('0x102')],{});db[_0x5420('0x100')]['belongsTo'](db[_0x5420('0xfe')],{});db[_0x5420('0x100')][_0x5420('0x143')](db[_0x5420('0x12')],{});db[_0x5420('0x1eb')][_0x5420('0x143')](db[_0x5420('0xfe')],{});db['WhatsappTransferReport'][_0x5420('0x143')](db[_0x5420('0xfc')],{});db[_0x5420('0x1eb')][_0x5420('0x143')](db[_0x5420('0xf9')],{'foreignKey':'FromWhatsappAccountId','as':_0x5420('0x1d2')});db[_0x5420('0x1eb')]['belongsTo'](db[_0x5420('0xf9')],{'foreignKey':_0x5420('0x1ec'),'as':_0x5420('0x1dc')});db[_0x5420('0x1eb')][_0x5420('0x143')](db[_0x5420('0x102')],{'foreignKey':_0x5420('0x1ed'),'as':_0x5420('0x1d8')});db[_0x5420('0x1eb')][_0x5420('0x143')](db[_0x5420('0x12')],{'foreignKey':_0x5420('0x1d3'),'as':_0x5420('0x1d4')});db[_0x5420('0x1eb')][_0x5420('0x143')](db[_0x5420('0x12')],{'foreignKey':_0x5420('0x1d5'),'as':_0x5420('0x1d6')});db[_0x5420('0x102')][_0x5420('0x11d')](db[_0x5420('0x12')],{'as':'Agents','through':'UserWhatsappQueue','foreignKey':'WhatsappQueueId'});db['WhatsappQueue'][_0x5420('0x11d')](db['Team'],{'through':_0x5420('0x1ee'),'as':_0x5420('0x149')});module[_0x5420('0x1ef')]={'db':db,'dbH':dbH};
\ No newline at end of file
index 9fe3a75..c3eb158 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd74d=['/api/cm/companies','./api/cmCompany','/api/cm/contacts','./api/cmContact','/api/cm/hopper','./api/cmHopper','/api/cm/hopper_black','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperFinal','/api/cm/hopper_history','/api/cm/custom_fields','./api/cmCustomField','/api/actions','./api/action','/api/canned_answers','./api/cannedAnswer','./api/disposition','/api/conditions','./api/condition','/api/intervals','./api/interval','/api/pauses','./api/pause','/api/cdr','./api/cdr','./api/voiceQueuesLog','/api/schedules','./api/schedule','./api/sound','/api/tags','./api/tag','/api/templates','./api/template','/api/triggers','./api/variable','/api/integrations','/api/integrations/reports','/api/analytics/custom_reports','./api/analyticCustomReport','/api/analytics/default_reports','/api/analytics/extracted_reports','/api/analytics/metrics','./api/analyticMetric','/api/analytics/field_reports','./api/analyticTreeReport','/api/integrations/salesforce/configurations','/api/integrations/salesforce/fields','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','./api/intSugarcrmField','/api/integrations/desk/accounts','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskConfiguration','/api/integrations/desk/fields','/api/integrations/zoho/accounts','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoField','/api/integrations/zendesk/accounts','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','./api/intFreshdeskField','/api/integrations/vtiger/accounts','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','./api/intServicenowAccount','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','/api/integrations/freshsales/accounts','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','./api/intFreshsalesField','/api/networks','./api/network','/api/chat/reports/queue','/api/chat/internal/messages','./api/chatInternalMessage','/api/jscripty/answers/reports','/api/jscripty/questions/reports','./api/jscriptyQuestionReport','./api/jscriptySessionReport','./api/smsQueueReport','./api/squareReport','/api/square/details/reports','/api/settings','./api/setting','./api/squareOdbc','/api/square/projects','./api/squareProject','/api/square/recordings','./api/squareRecording','/api/square/messages','/api/teams','./api/team','/api/license','/api/campaigns','/api/migrations','./api/migration','/api/attachments','./api/attachment','/api/plugins','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','/api/chat/reports/transfer','./api/chatTransferReport','/api/fax/reports/transfer','./api/faxTransferReport','/api/openchannel/reports/transfer','./api/openchannelTransferReport','/api/sms/reports/transfer','./api/smsTransferReport','/api/cm/lists','./api/userProfileSection','/api/userProfile/resources','./api/userProfileResource','/api/userNotifications','./api/whatsappAccount','/api/whatsapp/applications','./api/whatsappApplication','/api/whatsapp/interactions','/api/whatsapp/messages','./api/whatsappMessage','/api/whatsapp/reports/queue','./api/whatsappQueueReport','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/cloudProviders','./api/cloudProvider','/api/realtime','./api/realtime','/api/auth/local','./api/authLocal','/api/auth/google','./api/authGoogle','/api/rpc','./api/rpc','/api/version','./api/version','/api/system','./api/system','/api/pm2','./api/pm2','/api/webbar','./api/webbar','/apidoc','join','root','static','/www','/demo','3.0.0','/server/files/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','appPath','/index.html','username','newPassword','apiKey','lastName','street','phone','mobile','clientId','clientSecret','tenantId','token','channelSecret','accessToken','accessTokenSecret','authToken','consumerKey','membername','calleridname','calleridnum','clientEmail','privateKey','accesskeyid','secretaccesskey','key','pass','accountSid','dsn','secret','oldPassword','isPlainObject','isArray','length','isString','replace','@@{','}@@','lodash','path','util','./errors','./config/logger','api','auth','default','use','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','isEmpty','body','\x20body=%s','format','method','headers','x-forwarded-for','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','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','name','other','agent_name','test','/api/users','./api/user','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/contexts','./api/voiceContext','/api/voice/extensions','./api/voiceExtension','/api/voice/mohs','./api/voiceMusicOnHold','./api/voiceQueue','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','/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/trunks','./api/trunk','/api/voice/transfers/reports','/api/mail/out_servers','/api/mail/accounts','./api/mailAccount','./api/mailSubstatus','/api/mail/interactions','./api/mailInteraction','./api/mailMessage','/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/faxInteraction','/api/fax/messages','./api/faxMessage','/api/fax/queues','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','./api/smsAccount','/api/sms/applications','./api/smsApplication','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','./api/smsMessage','/api/sms/queues','./api/smsQueue','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/applications','./api/openchannelApplication','/api/openchannel/interactions','./api/openchannelInteraction','/api/openchannel/messages','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','./api/chatWebsite','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','./api/chatInteraction','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','/api/chat/queues','./api/chatQueue','/api/chat/groups','/api/chat/proactive_actions'];(function(_0xd1ce83,_0x4199ec){var _0x51aabb=function(_0xa05538){while(--_0xa05538){_0xd1ce83['push'](_0xd1ce83['shift']());}};_0x51aabb(++_0x4199ec);}(_0xd74d,0xd5));var _0xdd74=function(_0x59cb41,_0x5e2fa6){_0x59cb41=_0x59cb41-0x0;var _0x1022ff=_0xd74d[_0x59cb41];return _0x1022ff;};'use strict';var _=require(_0xdd74('0x0'));var path=require(_0xdd74('0x1'));var express=require('express');var ewinston=require('express-winston');var util=require(_0xdd74('0x2'));var errors=require(_0xdd74('0x3'));var config=require('./config/environment');var logger=require(_0xdd74('0x4'))(_0xdd74('0x5'));var authLogger=require(_0xdd74('0x4'))(_0xdd74('0x6'));exports[_0xdd74('0x7')]=function(_0x52f31d){_0x52f31d[_0xdd74('0x8')](ewinston[_0xdd74('0x9')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x33b487,_0x4fc05a){var _0x3fe150=_0xdd74('0xa');if(!_[_0xdd74('0xb')](_0x33b487[_0xdd74('0xc')])){_0x3fe150+=_0xdd74('0xd');var _0x3ee76a=_0x33b487[_0xdd74('0xc')];maskSensitiveData(_0x3ee76a);}return util[_0xdd74('0xe')](_0x3fe150,_0x33b487[_0xdd74('0xf')],_0x33b487[_0xdd74('0x10')][_0xdd74('0x11')]?_0x33b487[_0xdd74('0x10')]['x-forwarded-for']:_0x33b487[_0xdd74('0x12')][_0xdd74('0x13')]||_0x33b487['ip'],_0x33b487[_0xdd74('0x14')],_0x4fc05a[_0xdd74('0x15')],_0x4fc05a[_0xdd74('0x16')],_0x33b487['user']?_0x33b487[_0xdd74('0x17')]['id']:null,_0x33b487[_0xdd74('0x17')]?_0x33b487[_0xdd74('0x17')]['name']:null,_0x33b487[_0xdd74('0x17')]?_0x33b487[_0xdd74('0x17')][_0xdd74('0x18')]:null,_0x3ee76a?util[_0xdd74('0x19')](_0x3ee76a,![],null):'');}}));_0x52f31d[_0xdd74('0x8')](ewinston['logger']({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x2ce11d,_0x52993e){var _0x436e36=_0xdd74('0x1a');if(_0x2ce11d[_0xdd74('0xc')]&&_0x2ce11d[_0xdd74('0xc')][_0xdd74('0x1b')]&&_0x2ce11d[_0xdd74('0xc')][_0xdd74('0x1c')]){_0x436e36=_0xdd74('0x1d');}return util['format'](_0x436e36,_0x2ce11d[_0xdd74('0xf')],_0x2ce11d[_0xdd74('0x10')][_0xdd74('0x11')]?_0x2ce11d[_0xdd74('0x10')][_0xdd74('0x11')]:_0x2ce11d[_0xdd74('0x12')][_0xdd74('0x13')]||_0x2ce11d['ip'],_0x2ce11d[_0xdd74('0x14')],_0x52993e[_0xdd74('0x15')],_0x52993e[_0xdd74('0x16')],_0x2ce11d[_0xdd74('0x17')]?_0x2ce11d[_0xdd74('0x17')]['id']:null,_0x2ce11d[_0xdd74('0x17')]?_0x2ce11d['user'][_0xdd74('0x1e')]:null,_0x2ce11d[_0xdd74('0x17')]?_0x2ce11d['user'][_0xdd74('0x18')]:null,_0x2ce11d[_0xdd74('0xc')]&&_0x2ce11d[_0xdd74('0xc')]['device']?_0x2ce11d['body'][_0xdd74('0x1b')]:_0xdd74('0x1f'),_0x2ce11d[_0xdd74('0xc')]&&_0x2ce11d['body'][_0xdd74('0x1c')]?_0x2ce11d[_0xdd74('0xc')][_0xdd74('0x1c')]:'',_0x2ce11d[_0xdd74('0xc')]&&_0x2ce11d[_0xdd74('0xc')]['agent_name']?_0x2ce11d[_0xdd74('0xc')][_0xdd74('0x20')]:'');},'ignoreRoute':function(_0x19f4ae){var _0x4afb22=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x4afb22[_0xdd74('0x21')](_0x19f4ae[_0xdd74('0x14')]);}}));_0x52f31d['use'](_0xdd74('0x22'),require(_0xdd74('0x23')));_0x52f31d['use'](_0xdd74('0x24'),require(_0xdd74('0x25')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x26'),require(_0xdd74('0x27')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x28'),require(_0xdd74('0x29')));_0x52f31d['use'](_0xdd74('0x2a'),require(_0xdd74('0x2b')));_0x52f31d[_0xdd74('0x8')]('/api/voice/queues',require(_0xdd74('0x2c')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x2d'),require(_0xdd74('0x2e')));_0x52f31d['use'](_0xdd74('0x2f'),require(_0xdd74('0x30')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x31'),require(_0xdd74('0x32')));_0x52f31d['use'](_0xdd74('0x33'),require(_0xdd74('0x34')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x35'),require('./api/voiceCallReport'));_0x52f31d['use'](_0xdd74('0x36'),require(_0xdd74('0x37')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x38'),require(_0xdd74('0x39')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x3a'),require(_0xdd74('0x3b')));_0x52f31d['use']('/api/members/reports',require('./api/memberReport'));_0x52f31d['use'](_0xdd74('0x3c'),require(_0xdd74('0x3d')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x3e'),require('./api/voiceTransferReport'));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x3f'),require('./api/mailServerOut'));_0x52f31d['use'](_0xdd74('0x40'),require(_0xdd74('0x41')));_0x52f31d[_0xdd74('0x8')]('/api/mail/queues',require('./api/mailQueue'));_0x52f31d['use']('/api/mail/substatuses',require(_0xdd74('0x42')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x43'),require(_0xdd74('0x44')));_0x52f31d[_0xdd74('0x8')]('/api/mail/messages',require(_0xdd74('0x45')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x46'),require(_0xdd74('0x47')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x48'),require(_0xdd74('0x49')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x4a'),require(_0xdd74('0x4b')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x4c'),require('./api/dashboardItem'));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x4d'),require(_0xdd74('0x4e')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x4f'),require(_0xdd74('0x50')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x51'),require(_0xdd74('0x52')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x53'),require(_0xdd74('0x54')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x55'),require('./api/faxQueue'));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x56'),require(_0xdd74('0x57')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x58'),require(_0xdd74('0x59')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x5a'),require(_0xdd74('0x5b')));_0x52f31d['use'](_0xdd74('0x5c'),require(_0xdd74('0x5d')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x5e'),require(_0xdd74('0x5f')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x60'),require(_0xdd74('0x61')));_0x52f31d['use'](_0xdd74('0x62'),require(_0xdd74('0x63')));_0x52f31d['use'](_0xdd74('0x64'),require(_0xdd74('0x65')));_0x52f31d['use'](_0xdd74('0x66'),require(_0xdd74('0x67')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x68'),require('./api/openchannelMessage'));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x69'),require(_0xdd74('0x6a')));_0x52f31d['use'](_0xdd74('0x6b'),require(_0xdd74('0x6c')));_0x52f31d[_0xdd74('0x8')]('/api/openchannel/reports/queue',require(_0xdd74('0x6d')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x6e'),require(_0xdd74('0x6f')));_0x52f31d[_0xdd74('0x8')]('/api/chat/interactions',require(_0xdd74('0x70')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x71'),require(_0xdd74('0x72')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x73'),require('./api/chatOfflineMessage'));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x74'),require(_0xdd74('0x75')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x76'),require('./api/chatGroup'));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x77'),require('./api/chatProactiveAction'));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x78'),require(_0xdd74('0x79')));_0x52f31d['use'](_0xdd74('0x7a'),require(_0xdd74('0x7b')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x7c'),require(_0xdd74('0x7d')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x7e'),require(_0xdd74('0x7f')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x80'),require(_0xdd74('0x81')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x82'),require('./api/cmHopperHistory'));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x83'),require(_0xdd74('0x84')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x85'),require(_0xdd74('0x86')));_0x52f31d[_0xdd74('0x8')]('/api/automations',require('./api/automation'));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x87'),require(_0xdd74('0x88')));_0x52f31d[_0xdd74('0x8')]('/api/dispositions',require(_0xdd74('0x89')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x8a'),require(_0xdd74('0x8b')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x8c'),require(_0xdd74('0x8d')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x8e'),require(_0xdd74('0x8f')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x90'),require(_0xdd74('0x91')));_0x52f31d[_0xdd74('0x8')]('/api/voiceQueuesLog',require(_0xdd74('0x92')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x93'),require(_0xdd74('0x94')));_0x52f31d[_0xdd74('0x8')]('/api/sounds',require(_0xdd74('0x95')));_0x52f31d['use'](_0xdd74('0x96'),require(_0xdd74('0x97')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x98'),require(_0xdd74('0x99')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x9a'),require('./api/trigger'));_0x52f31d[_0xdd74('0x8')]('/api/variables',require(_0xdd74('0x9b')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x9c'),require('./api/integration'));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x9d'),require('./api/integrationReport'));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x9e'),require(_0xdd74('0x9f')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xa0'),require('./api/analyticDefaultReport'));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xa1'),require('./api/analyticExtractedReport'));_0x52f31d['use'](_0xdd74('0xa2'),require(_0xdd74('0xa3')));_0x52f31d['use'](_0xdd74('0xa4'),require('./api/analyticFieldReport'));_0x52f31d[_0xdd74('0x8')]('/api/analytics/tree_reports',require(_0xdd74('0xa5')));_0x52f31d[_0xdd74('0x8')]('/api/integrations/salesforce/accounts',require('./api/intSalesforceAccount'));_0x52f31d['use'](_0xdd74('0xa6'),require('./api/intSalesforceConfiguration'));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xa7'),require('./api/intSalesforceField'));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xa8'),require(_0xdd74('0xa9')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xaa'),require(_0xdd74('0xab')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xac'),require(_0xdd74('0xad')));_0x52f31d['use'](_0xdd74('0xae'),require(_0xdd74('0xaf')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xb0'),require(_0xdd74('0xb1')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xb2'),require('./api/intDeskField'));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xb3'),require(_0xdd74('0xb4')));_0x52f31d['use'](_0xdd74('0xb5'),require('./api/intZohoConfiguration'));_0x52f31d['use']('/api/integrations/zoho/fields',require(_0xdd74('0xb6')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xb7'),require('./api/intZendeskAccount'));_0x52f31d['use'](_0xdd74('0xb8'),require(_0xdd74('0xb9')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xba'),require('./api/intZendeskField'));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xbb'),require(_0xdd74('0xbc')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xbd'),require('./api/intFreshdeskConfiguration'));_0x52f31d['use']('/api/integrations/freshdesk/fields',require(_0xdd74('0xbe')));_0x52f31d['use'](_0xdd74('0xbf'),require('./api/intVtigerAccount'));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xc0'),require(_0xdd74('0xc1')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xc2'),require(_0xdd74('0xc3')));_0x52f31d[_0xdd74('0x8')]('/api/integrations/servicenow/accounts',require(_0xdd74('0xc4')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xc5'),require(_0xdd74('0xc6')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xc7'),require('./api/intServicenowField'));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xc8'),require(_0xdd74('0xc9')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xca'),require(_0xdd74('0xcb')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xcc'),require('./api/intDynamics365Field'));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xcd'),require(_0xdd74('0xce')));_0x52f31d['use'](_0xdd74('0xcf'),require(_0xdd74('0xd0')));_0x52f31d['use']('/api/integrations/freshsales/fields',require(_0xdd74('0xd1')));_0x52f31d['use'](_0xdd74('0xd2'),require(_0xdd74('0xd3')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xd4'),require('./api/chatQueueReport'));_0x52f31d['use'](_0xdd74('0xd5'),require(_0xdd74('0xd6')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xd7'),require('./api/jscriptyAnswerReport'));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xd8'),require(_0xdd74('0xd9')));_0x52f31d['use']('/api/jscripty/sessions/reports',require(_0xdd74('0xda')));_0x52f31d['use']('/api/sms/reports/queue',require(_0xdd74('0xdb')));_0x52f31d['use']('/api/square/reports',require(_0xdd74('0xdc')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xdd'),require('./api/squareReportDetail'));_0x52f31d[_0xdd74('0x8')]('/api/jscripty/projects',require('./api/jscriptyProject'));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xde'),require(_0xdd74('0xdf')));_0x52f31d[_0xdd74('0x8')]('/api/square/odbc',require(_0xdd74('0xe0')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xe1'),require(_0xdd74('0xe2')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xe3'),require(_0xdd74('0xe4')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xe5'),require('./api/squareMessage'));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xe6'),require(_0xdd74('0xe7')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xe8'),require('./api/license'));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xe9'),require('./api/campaign'));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xea'),require(_0xdd74('0xeb')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xec'),require(_0xdd74('0xed')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xee'),require(_0xdd74('0xef')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xf0'),require(_0xdd74('0xf1')));_0x52f31d['use'](_0xdd74('0xf2'),require(_0xdd74('0xf3')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xf4'),require(_0xdd74('0xf5')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xf6'),require(_0xdd74('0xf7')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xf8'),require(_0xdd74('0xf9')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xfa'),require('./api/cmList'));_0x52f31d['use']('/api/voice/prefixes',require('./api/voicePrefix'));_0x52f31d['use']('/api/userProfiles',require('./api/userProfile'));_0x52f31d['use']('/api/userProfile/sections',require(_0xdd74('0xfb')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xfc'),require(_0xdd74('0xfd')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0xfe'),require('./api/userNotification'));_0x52f31d['use']('/api/whatsapp/accounts',require(_0xdd74('0xff')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x100'),require(_0xdd74('0x101')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x102'),require('./api/whatsappInteraction'));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x103'),require(_0xdd74('0x104')));_0x52f31d['use'](_0xdd74('0x105'),require(_0xdd74('0x106')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x107'),require(_0xdd74('0x108')));_0x52f31d['use']('/api/whatsapp/queues',require('./api/whatsappQueue'));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x109'),require(_0xdd74('0x10a')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x10b'),require(_0xdd74('0x10c')));_0x52f31d['use'](_0xdd74('0x10d'),require(_0xdd74('0x10e')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x10f'),require(_0xdd74('0x110')));_0x52f31d[_0xdd74('0x8')]('/api/jira',require('./api/jira'));_0x52f31d['use'](_0xdd74('0x111'),require(_0xdd74('0x112')));_0x52f31d['use'](_0xdd74('0x113'),require(_0xdd74('0x114')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x115'),require(_0xdd74('0x116')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x117'),require(_0xdd74('0x118')));_0x52f31d['use'](_0xdd74('0x119'),require(_0xdd74('0x11a')));_0x52f31d[_0xdd74('0x8')](_0xdd74('0x11b'),express['static'](path[_0xdd74('0x11c')](config[_0xdd74('0x11d')],_0xdd74('0x11b'))));_0x52f31d['use']('/www',express[_0xdd74('0x11e')](path['join'](config[_0xdd74('0x11d')],_0xdd74('0x11f'))));_0x52f31d[_0xdd74('0x8')]('/demo',express['static'](path['join'](config['root'],_0xdd74('0x120'))));_0x52f31d['use']('/snippet',express[_0xdd74('0x11e')](path[_0xdd74('0x11c')](config[_0xdd74('0x11d')],'snippet',_0xdd74('0x121'))));_0x52f31d[_0xdd74('0x8')]('/plugins',express[_0xdd74('0x11e')](path[_0xdd74('0x11c')](config[_0xdd74('0x11d')],_0xdd74('0x122'))));_0x52f31d[_0xdd74('0x123')](_0xdd74('0x124'))[_0xdd74('0x125')](errors[0x194]);_0x52f31d[_0xdd74('0x123')]('/*')[_0xdd74('0x125')](function(_0x192269,_0x2ee4d6){_0x2ee4d6[_0xdd74('0x126')](path['resolve'](_0x52f31d[_0xdd74('0x125')](_0xdd74('0x127'))+_0xdd74('0x128')));});};var sensitiveFields=[_0xdd74('0x129'),'password',_0xdd74('0x12a'),_0xdd74('0x12b'),'firstName',_0xdd74('0x12c'),_0xdd74('0x12d'),_0xdd74('0x12e'),_0xdd74('0x12f'),'fax','email',_0xdd74('0x130'),_0xdd74('0x131'),'securityToken','code','accessKey',_0xdd74('0x132'),_0xdd74('0x133'),_0xdd74('0x134'),_0xdd74('0x135'),_0xdd74('0x136'),_0xdd74('0x137'),_0xdd74('0x138'),'consumerSecret',_0xdd74('0x139'),_0xdd74('0x13a'),_0xdd74('0x13b'),'exten','vidaooApiKey',_0xdd74('0x13c'),_0xdd74('0x13d'),_0xdd74('0x13e'),_0xdd74('0x13f'),_0xdd74('0x140'),_0xdd74('0x17'),_0xdd74('0x141'),_0xdd74('0x142'),'localstationid',_0xdd74('0x143'),_0xdd74('0x144'),'registry',_0xdd74('0x145')];function maskSensitiveData(_0x3add0a){var _0x25d1de=/(?!^)[\s\S](?!$)/g;if(!_[_0xdd74('0x146')](_0x3add0a))return;for(var _0x4b351b in _0x3add0a){if(_[_0xdd74('0x147')](_0x3add0a[_0x4b351b])){for(var _0x16197c=0x0;_0x16197c<_0x3add0a[_0x4b351b][_0xdd74('0x148')];_0x16197c++){maskSensitiveData(_0x3add0a[_0x4b351b][_0x16197c]);}}else if(_[_0xdd74('0x146')](_0x3add0a[_0x4b351b])){maskSensitiveData(_0x3add0a[_0x4b351b]);}else if(_[_0xdd74('0x149')](_0x3add0a[_0x4b351b])){_0x3add0a[_0x4b351b]=_0x3add0a[_0x4b351b][_0xdd74('0x14a')](/{{{/g,_0xdd74('0x14b'))['replace'](/}}}/g,_0xdd74('0x14c'))['replace'](/{{/g,'@{')[_0xdd74('0x14a')](/}}/g,'}@');if(_['includes'](sensitiveFields,_0x4b351b)){_0x3add0a[_0x4b351b]=_0x3add0a[_0x4b351b][_0xdd74('0x14a')](_0x25d1de,'*');}}}}
\ No newline at end of file
+var _0xa9cb=['./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/square/reports','./api/squareReport','./api/squareReportDetail','/api/jscripty/projects','/api/settings','./api/setting','/api/square/odbc','./api/squareProject','/api/square/recordings','./api/squareRecording','/api/square/messages','/api/teams','./api/team','/api/license','./api/license','./api/campaign','/api/migrations','./api/migration','/api/attachments','./api/attachment','/api/plugins','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','/api/chat/reports/transfer','./api/chatTransferReport','/api/fax/reports/transfer','./api/faxTransferReport','./api/openchannelTransferReport','/api/sms/reports/transfer','./api/smsTransferReport','/api/cm/lists','./api/cmList','/api/voice/prefixes','/api/userProfiles','./api/userProfile','/api/userProfile/sections','./api/userProfileSection','/api/userNotifications','./api/userNotification','/api/whatsapp/accounts','./api/whatsappApplication','/api/whatsapp/interactions','./api/whatsappMessage','/api/whatsapp/reports/queue','/api/whatsapp/reports/transfer','./api/whatsappQueue','/api/cloudProviders','/api/realtime','./api/realtime','/api/auth/local','./api/authLocal','/api/auth/google','./api/authGoogle','/api/rpc','./api/rpc','/api/version','./api/version','/api/system','./api/system','./api/pm2','/api/webbar','./api/webbar','/apidoc','static','join','/www','/demo','root','/snippet','snippet','/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','/index.html','username','password','firstName','lastName','phone','mobile','fax','email','clientId','clientSecret','securityToken','code','tenantId','channelSecret','accessTokenSecret','consumerKey','consumerSecret','membername','calleridname','calleridnum','exten','clientEmail','privateKey','accesskeyid','key','pass','localstationid','dsn','secret','oldPassword','isPlainObject','isArray','length','isString','@@{','replace','includes','path','express','express-winston','util','./errors','./config/environment','./config/logger','default','use','logger','isEmpty','\x20body=%s','body','format','method','headers','x-forwarded-for','connection','remoteAddress','url','statusCode','responseTime','user','name','role','inspect','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','device','agent_id','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','other','agent_name','/api/users','./api/user','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/contexts','./api/voiceContext','/api/voice/extensions','./api/voiceExtension','/api/voice/mohs','./api/voiceMusicOnHold','/api/voice/queues','./api/voiceQueue','/api/voice/recordings','/api/screen/recordings','/api/voice/mails','./api/voiceCallReport','/api/voice/dials/reports','./api/voiceDialReport','./api/voiceAgentReport','/api/voice/queues/reports','./api/voiceQueueReport','/api/members/reports','./api/memberReport','/api/trunks','/api/voice/transfers/reports','./api/voiceTransferReport','/api/mail/accounts','./api/mailAccount','/api/mail/queues','./api/mailQueue','./api/mailInteraction','/api/mail/messages','./api/mailMessage','/api/mail/applications','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','./api/dashboard','/api/dashboards/items','./api/dashboardItem','/api/fax/accounts','./api/faxAccount','/api/fax/applications','./api/faxApplication','/api/fax/interactions','/api/fax/messages','/api/fax/queues','./api/faxQueue','/api/fax/reports/queue','/api/sms/accounts','./api/smsAccount','/api/sms/applications','./api/smsApplication','./api/smsMessage','./api/smsQueue','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/interactions','./api/openchannelInteraction','/api/openchannel/messages','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','./api/chatWebsite','/api/openchannel/reports/queue','./api/openchannelQueueReport','/api/chat/applications','/api/chat/interactions','/api/chat/messages','./api/chatMessage','./api/chatQueue','/api/chat/groups','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','./api/cmCompany','/api/cm/contacts','./api/cmContact','/api/cm/hopper','./api/cmHopper','/api/cm/hopper_black','./api/cmHopperBlack','/api/cm/hopper_final','/api/cm/hopper_history','/api/cm/custom_fields','./api/cmCustomField','/api/automations','./api/cannedAnswer','/api/dispositions','./api/disposition','/api/conditions','./api/condition','/api/intervals','./api/interval','/api/pauses','./api/pause','/api/cdr','./api/cdr','./api/voiceQueuesLog','/api/schedules','./api/schedule','/api/sounds','./api/sound','/api/tags','/api/templates','./api/template','/api/triggers','./api/trigger','/api/variables','./api/variable','./api/integration','/api/integrations/reports','./api/integrationReport','/api/analytics/custom_reports','./api/analyticCustomReport','./api/analyticExtractedReport','/api/analytics/metrics','./api/analyticMetric','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','/api/integrations/salesforce/fields','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','./api/intSugarcrmField','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','/api/integrations/zoho/accounts','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','./api/intZendeskField','/api/integrations/freshdesk/accounts','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','/api/integrations/vtiger/configurations','/api/integrations/vtiger/fields','./api/intVtigerField','./api/intServicenowAccount','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','./api/intServicenowField','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','/api/integrations/dynamics365/fields','./api/intDynamics365Field','/api/integrations/freshsales/accounts','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField','./api/network','/api/chat/internal/messages'];(function(_0x2531f5,_0x2d7279){var _0x457411=function(_0x6324b5){while(--_0x6324b5){_0x2531f5['push'](_0x2531f5['shift']());}};_0x457411(++_0x2d7279);}(_0xa9cb,0x1bf));var _0xba9c=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa9cb[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var path=require(_0xba9c('0x0'));var express=require(_0xba9c('0x1'));var ewinston=require(_0xba9c('0x2'));var util=require(_0xba9c('0x3'));var errors=require(_0xba9c('0x4'));var config=require(_0xba9c('0x5'));var logger=require(_0xba9c('0x6'))('api');var authLogger=require(_0xba9c('0x6'))('auth');exports[_0xba9c('0x7')]=function(_0x3ac786){_0x3ac786[_0xba9c('0x8')](ewinston[_0xba9c('0x9')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x2e048b,_0x1249dc){var _0x4bac4b='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s';if(!_[_0xba9c('0xa')](_0x2e048b['body'])){_0x4bac4b+=_0xba9c('0xb');var _0x164b48=_0x2e048b[_0xba9c('0xc')];maskSensitiveData(_0x164b48);}return util[_0xba9c('0xd')](_0x4bac4b,_0x2e048b[_0xba9c('0xe')],_0x2e048b[_0xba9c('0xf')]['x-forwarded-for']?_0x2e048b[_0xba9c('0xf')][_0xba9c('0x10')]:_0x2e048b[_0xba9c('0x11')][_0xba9c('0x12')]||_0x2e048b['ip'],_0x2e048b[_0xba9c('0x13')],_0x1249dc[_0xba9c('0x14')],_0x1249dc[_0xba9c('0x15')],_0x2e048b['user']?_0x2e048b[_0xba9c('0x16')]['id']:null,_0x2e048b[_0xba9c('0x16')]?_0x2e048b[_0xba9c('0x16')][_0xba9c('0x17')]:null,_0x2e048b[_0xba9c('0x16')]?_0x2e048b['user'][_0xba9c('0x18')]:null,_0x164b48?util[_0xba9c('0x19')](_0x164b48,![],null):'');}}));_0x3ac786[_0xba9c('0x8')](ewinston[_0xba9c('0x9')]({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x538489,_0x436dd3){var _0x2ccc77=_0xba9c('0x1a');if(_0x538489[_0xba9c('0xc')]&&_0x538489[_0xba9c('0xc')][_0xba9c('0x1b')]&&_0x538489[_0xba9c('0xc')][_0xba9c('0x1c')]){_0x2ccc77=_0xba9c('0x1d');}return util[_0xba9c('0xd')](_0x2ccc77,_0x538489[_0xba9c('0xe')],_0x538489[_0xba9c('0xf')][_0xba9c('0x10')]?_0x538489[_0xba9c('0xf')][_0xba9c('0x10')]:_0x538489[_0xba9c('0x11')][_0xba9c('0x12')]||_0x538489['ip'],_0x538489[_0xba9c('0x13')],_0x436dd3['statusCode'],_0x436dd3[_0xba9c('0x15')],_0x538489['user']?_0x538489[_0xba9c('0x16')]['id']:null,_0x538489['user']?_0x538489['user'][_0xba9c('0x17')]:null,_0x538489[_0xba9c('0x16')]?_0x538489[_0xba9c('0x16')][_0xba9c('0x18')]:null,_0x538489[_0xba9c('0xc')]&&_0x538489['body'][_0xba9c('0x1b')]?_0x538489[_0xba9c('0xc')]['device']:_0xba9c('0x1e'),_0x538489[_0xba9c('0xc')]&&_0x538489[_0xba9c('0xc')][_0xba9c('0x1c')]?_0x538489['body'][_0xba9c('0x1c')]:'',_0x538489[_0xba9c('0xc')]&&_0x538489['body'][_0xba9c('0x1f')]?_0x538489[_0xba9c('0xc')][_0xba9c('0x1f')]:'');},'ignoreRoute':function(_0xc5f73b){var _0xe5b08e=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0xe5b08e['test'](_0xc5f73b[_0xba9c('0x13')]);}}));_0x3ac786['use'](_0xba9c('0x20'),require(_0xba9c('0x21')));_0x3ac786['use'](_0xba9c('0x22'),require(_0xba9c('0x23')));_0x3ac786['use'](_0xba9c('0x24'),require(_0xba9c('0x25')));_0x3ac786['use'](_0xba9c('0x26'),require(_0xba9c('0x27')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x28'),require(_0xba9c('0x29')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x2a'),require(_0xba9c('0x2b')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x2c'),require('./api/voiceRecording'));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x2d'),require('./api/screenRecording'));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x2e'),require('./api/voiceMail'));_0x3ac786[_0xba9c('0x8')]('/api/voice/mails/messages',require('./api/voiceMailMessage'));_0x3ac786[_0xba9c('0x8')]('/api/voice/calls/reports',require(_0xba9c('0x2f')));_0x3ac786['use'](_0xba9c('0x30'),require(_0xba9c('0x31')));_0x3ac786[_0xba9c('0x8')]('/api/voice/agents/reports',require(_0xba9c('0x32')));_0x3ac786['use'](_0xba9c('0x33'),require(_0xba9c('0x34')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x35'),require(_0xba9c('0x36')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x37'),require('./api/trunk'));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x38'),require(_0xba9c('0x39')));_0x3ac786[_0xba9c('0x8')]('/api/mail/out_servers',require('./api/mailServerOut'));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x3a'),require(_0xba9c('0x3b')));_0x3ac786['use'](_0xba9c('0x3c'),require(_0xba9c('0x3d')));_0x3ac786[_0xba9c('0x8')]('/api/mail/substatuses',require('./api/mailSubstatus'));_0x3ac786[_0xba9c('0x8')]('/api/mail/interactions',require(_0xba9c('0x3e')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x3f'),require(_0xba9c('0x40')));_0x3ac786['use'](_0xba9c('0x41'),require(_0xba9c('0x42')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x43'),require(_0xba9c('0x44')));_0x3ac786[_0xba9c('0x8')]('/api/dashboards',require(_0xba9c('0x45')));_0x3ac786['use'](_0xba9c('0x46'),require(_0xba9c('0x47')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x48'),require(_0xba9c('0x49')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x4a'),require(_0xba9c('0x4b')));_0x3ac786['use'](_0xba9c('0x4c'),require('./api/faxInteraction'));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x4d'),require('./api/faxMessage'));_0x3ac786['use'](_0xba9c('0x4e'),require(_0xba9c('0x4f')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x50'),require('./api/faxQueueReport'));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x51'),require(_0xba9c('0x52')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x53'),require(_0xba9c('0x54')));_0x3ac786['use']('/api/sms/interactions',require('./api/smsInteraction'));_0x3ac786[_0xba9c('0x8')]('/api/sms/messages',require(_0xba9c('0x55')));_0x3ac786[_0xba9c('0x8')]('/api/sms/queues',require(_0xba9c('0x56')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x57'),require(_0xba9c('0x58')));_0x3ac786[_0xba9c('0x8')]('/api/openchannel/applications',require('./api/openchannelApplication'));_0x3ac786['use'](_0xba9c('0x59'),require(_0xba9c('0x5a')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x5b'),require(_0xba9c('0x5c')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x5d'),require(_0xba9c('0x5e')));_0x3ac786['use']('/api/chat/websites',require(_0xba9c('0x5f')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x60'),require(_0xba9c('0x61')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x62'),require('./api/chatApplication'));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x63'),require('./api/chatInteraction'));_0x3ac786['use'](_0xba9c('0x64'),require(_0xba9c('0x65')));_0x3ac786['use']('/api/chat/offline_messages',require('./api/chatOfflineMessage'));_0x3ac786[_0xba9c('0x8')]('/api/chat/queues',require(_0xba9c('0x66')));_0x3ac786['use'](_0xba9c('0x67'),require('./api/chatGroup'));_0x3ac786['use'](_0xba9c('0x68'),require(_0xba9c('0x69')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x6a'),require(_0xba9c('0x6b')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x6c'),require(_0xba9c('0x6d')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x6e'),require(_0xba9c('0x6f')));_0x3ac786['use'](_0xba9c('0x70'),require(_0xba9c('0x71')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x72'),require('./api/cmHopperFinal'));_0x3ac786['use'](_0xba9c('0x73'),require('./api/cmHopperHistory'));_0x3ac786['use'](_0xba9c('0x74'),require(_0xba9c('0x75')));_0x3ac786[_0xba9c('0x8')]('/api/actions',require('./api/action'));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x76'),require('./api/automation'));_0x3ac786[_0xba9c('0x8')]('/api/canned_answers',require(_0xba9c('0x77')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x78'),require(_0xba9c('0x79')));_0x3ac786['use'](_0xba9c('0x7a'),require(_0xba9c('0x7b')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x7c'),require(_0xba9c('0x7d')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x7e'),require(_0xba9c('0x7f')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x80'),require(_0xba9c('0x81')));_0x3ac786[_0xba9c('0x8')]('/api/voiceQueuesLog',require(_0xba9c('0x82')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x83'),require(_0xba9c('0x84')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x85'),require(_0xba9c('0x86')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x87'),require('./api/tag'));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x88'),require(_0xba9c('0x89')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x8a'),require(_0xba9c('0x8b')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x8c'),require(_0xba9c('0x8d')));_0x3ac786['use']('/api/integrations',require(_0xba9c('0x8e')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x8f'),require(_0xba9c('0x90')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x91'),require(_0xba9c('0x92')));_0x3ac786[_0xba9c('0x8')]('/api/analytics/default_reports',require('./api/analyticDefaultReport'));_0x3ac786['use']('/api/analytics/extracted_reports',require(_0xba9c('0x93')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x94'),require(_0xba9c('0x95')));_0x3ac786[_0xba9c('0x8')]('/api/analytics/field_reports',require(_0xba9c('0x96')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x97'),require(_0xba9c('0x98')));_0x3ac786[_0xba9c('0x8')]('/api/integrations/salesforce/accounts',require(_0xba9c('0x99')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x9a'),require('./api/intSalesforceConfiguration'));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x9b'),require(_0xba9c('0x9c')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x9d'),require(_0xba9c('0x9e')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x9f'),require(_0xba9c('0xa0')));_0x3ac786['use']('/api/integrations/sugarcrm/fields',require(_0xba9c('0xa1')));_0x3ac786[_0xba9c('0x8')]('/api/integrations/desk/accounts',require(_0xba9c('0xa2')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xa3'),require(_0xba9c('0xa4')));_0x3ac786['use'](_0xba9c('0xa5'),require(_0xba9c('0xa6')));_0x3ac786['use'](_0xba9c('0xa7'),require(_0xba9c('0xa8')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xa9'),require('./api/intZohoConfiguration'));_0x3ac786['use']('/api/integrations/zoho/fields',require(_0xba9c('0xaa')));_0x3ac786['use'](_0xba9c('0xab'),require(_0xba9c('0xac')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xad'),require(_0xba9c('0xae')));_0x3ac786[_0xba9c('0x8')]('/api/integrations/zendesk/fields',require(_0xba9c('0xaf')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xb0'),require('./api/intFreshdeskAccount'));_0x3ac786['use'](_0xba9c('0xb1'),require(_0xba9c('0xb2')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xb3'),require(_0xba9c('0xb4')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xb5'),require('./api/intVtigerAccount'));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xb6'),require('./api/intVtigerConfiguration'));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xb7'),require(_0xba9c('0xb8')));_0x3ac786['use']('/api/integrations/servicenow/accounts',require(_0xba9c('0xb9')));_0x3ac786[_0xba9c('0x8')]('/api/integrations/servicenow/configurations',require(_0xba9c('0xba')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xbb'),require(_0xba9c('0xbc')));_0x3ac786[_0xba9c('0x8')]('/api/integrations/dynamics365/accounts',require(_0xba9c('0xbd')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xbe'),require('./api/intDynamics365Configuration'));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xbf'),require(_0xba9c('0xc0')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xc1'),require(_0xba9c('0xc2')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xc3'),require(_0xba9c('0xc4')));_0x3ac786['use'](_0xba9c('0xc5'),require(_0xba9c('0xc6')));_0x3ac786[_0xba9c('0x8')]('/api/networks',require(_0xba9c('0xc7')));_0x3ac786['use']('/api/chat/reports/queue',require('./api/chatQueueReport'));_0x3ac786['use'](_0xba9c('0xc8'),require(_0xba9c('0xc9')));_0x3ac786['use'](_0xba9c('0xca'),require(_0xba9c('0xcb')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xcc'),require(_0xba9c('0xcd')));_0x3ac786['use'](_0xba9c('0xce'),require(_0xba9c('0xcf')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xd0'),require('./api/smsQueueReport'));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xd1'),require(_0xba9c('0xd2')));_0x3ac786[_0xba9c('0x8')]('/api/square/details/reports',require(_0xba9c('0xd3')));_0x3ac786['use'](_0xba9c('0xd4'),require('./api/jscriptyProject'));_0x3ac786['use'](_0xba9c('0xd5'),require(_0xba9c('0xd6')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xd7'),require('./api/squareOdbc'));_0x3ac786[_0xba9c('0x8')]('/api/square/projects',require(_0xba9c('0xd8')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xd9'),require(_0xba9c('0xda')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xdb'),require('./api/squareMessage'));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xdc'),require(_0xba9c('0xdd')));_0x3ac786['use'](_0xba9c('0xde'),require(_0xba9c('0xdf')));_0x3ac786[_0xba9c('0x8')]('/api/campaigns',require(_0xba9c('0xe0')));_0x3ac786['use'](_0xba9c('0xe1'),require(_0xba9c('0xe2')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xe3'),require(_0xba9c('0xe4')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xe5'),require(_0xba9c('0xe6')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xe7'),require(_0xba9c('0xe8')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xe9'),require(_0xba9c('0xea')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xeb'),require(_0xba9c('0xec')));_0x3ac786['use']('/api/openchannel/reports/transfer',require(_0xba9c('0xed')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xee'),require(_0xba9c('0xef')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xf0'),require(_0xba9c('0xf1')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xf2'),require('./api/voicePrefix'));_0x3ac786['use'](_0xba9c('0xf3'),require(_0xba9c('0xf4')));_0x3ac786['use'](_0xba9c('0xf5'),require(_0xba9c('0xf6')));_0x3ac786[_0xba9c('0x8')]('/api/userProfile/resources',require('./api/userProfileResource'));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xf7'),require(_0xba9c('0xf8')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xf9'),require('./api/whatsappAccount'));_0x3ac786[_0xba9c('0x8')]('/api/whatsapp/applications',require(_0xba9c('0xfa')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xfb'),require('./api/whatsappInteraction'));_0x3ac786[_0xba9c('0x8')]('/api/whatsapp/messages',require(_0xba9c('0xfc')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xfd'),require('./api/whatsappQueueReport'));_0x3ac786[_0xba9c('0x8')](_0xba9c('0xfe'),require('./api/whatsappTransferReport'));_0x3ac786[_0xba9c('0x8')]('/api/whatsapp/queues',require(_0xba9c('0xff')));_0x3ac786['use'](_0xba9c('0x100'),require('./api/cloudProvider'));_0x3ac786['use'](_0xba9c('0x101'),require(_0xba9c('0x102')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x103'),require(_0xba9c('0x104')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x105'),require(_0xba9c('0x106')));_0x3ac786[_0xba9c('0x8')]('/api/jira',require('./api/jira'));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x107'),require(_0xba9c('0x108')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x109'),require(_0xba9c('0x10a')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x10b'),require(_0xba9c('0x10c')));_0x3ac786[_0xba9c('0x8')]('/api/pm2',require(_0xba9c('0x10d')));_0x3ac786['use'](_0xba9c('0x10e'),require(_0xba9c('0x10f')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x110'),express[_0xba9c('0x111')](path[_0xba9c('0x112')](config['root'],_0xba9c('0x110'))));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x113'),express[_0xba9c('0x111')](path['join'](config['root'],_0xba9c('0x113'))));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x114'),express[_0xba9c('0x111')](path[_0xba9c('0x112')](config[_0xba9c('0x115')],_0xba9c('0x114'))));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x116'),express[_0xba9c('0x111')](path[_0xba9c('0x112')](config[_0xba9c('0x115')],_0xba9c('0x117'),'3.0.0')));_0x3ac786[_0xba9c('0x8')](_0xba9c('0x118'),express[_0xba9c('0x111')](path['join'](config[_0xba9c('0x115')],'/server/files/plugins')));_0x3ac786[_0xba9c('0x119')](_0xba9c('0x11a'))['get'](errors[0x194]);_0x3ac786['route']('/*')[_0xba9c('0x11b')](function(_0x3e8459,_0x37af83){_0x37af83[_0xba9c('0x11c')](path[_0xba9c('0x11d')](_0x3ac786[_0xba9c('0x11b')]('appPath')+_0xba9c('0x11e')));});};var sensitiveFields=[_0xba9c('0x11f'),_0xba9c('0x120'),'newPassword','apiKey',_0xba9c('0x121'),_0xba9c('0x122'),'street',_0xba9c('0x123'),_0xba9c('0x124'),_0xba9c('0x125'),_0xba9c('0x126'),_0xba9c('0x127'),_0xba9c('0x128'),_0xba9c('0x129'),_0xba9c('0x12a'),'accessKey',_0xba9c('0x12b'),'token',_0xba9c('0x12c'),'accessToken',_0xba9c('0x12d'),'authToken',_0xba9c('0x12e'),_0xba9c('0x12f'),_0xba9c('0x130'),_0xba9c('0x131'),_0xba9c('0x132'),_0xba9c('0x133'),'vidaooApiKey',_0xba9c('0x134'),_0xba9c('0x135'),_0xba9c('0x136'),'secretaccesskey',_0xba9c('0x137'),_0xba9c('0x16'),_0xba9c('0x138'),'accountSid',_0xba9c('0x139'),_0xba9c('0x13a'),_0xba9c('0x13b'),'registry',_0xba9c('0x13c')];function maskSensitiveData(_0xa44ddf){var _0x507947=/(?!^)[\s\S](?!$)/g;if(!_[_0xba9c('0x13d')](_0xa44ddf))return;for(var _0x1156e3 in _0xa44ddf){if(_[_0xba9c('0x13e')](_0xa44ddf[_0x1156e3])){for(var _0x20a51a=0x0;_0x20a51a<_0xa44ddf[_0x1156e3][_0xba9c('0x13f')];_0x20a51a++){maskSensitiveData(_0xa44ddf[_0x1156e3][_0x20a51a]);}}else if(_[_0xba9c('0x13d')](_0xa44ddf[_0x1156e3])){maskSensitiveData(_0xa44ddf[_0x1156e3]);}else if(_[_0xba9c('0x140')](_0xa44ddf[_0x1156e3])){_0xa44ddf[_0x1156e3]=_0xa44ddf[_0x1156e3]['replace'](/{{{/g,_0xba9c('0x141'))['replace'](/}}}/g,'}@@')[_0xba9c('0x142')](/{{/g,'@{')[_0xba9c('0x142')](/}}/g,'}@');if(_[_0xba9c('0x143')](sensitiveFields,_0x1156e3)){_0xa44ddf[_0x1156e3]=_0xa44ddf[_0x1156e3][_0xba9c('0x142')](_0x507947,'*');}}}}
\ No newline at end of file
index 85a7e54..2ff739c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4810=['../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/intZendeskAccount/intZendeskAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareProject/squareProject.rpc','../api/squareRecording/squareRecording.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueue/whatsappQueue.rpc','http','port','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','jayson/promise','bluebird','lodash','../config/environment','listen','merge','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/memberReport/memberReport.rpc','../api/trunk/trunk.rpc','../api/mailAccount/mailAccount.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailApplication/mailApplication.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc'];(function(_0x47604f,_0x17531e){var _0x171b8a=function(_0x547193){while(--_0x547193){_0x47604f['push'](_0x47604f['shift']());}};_0x171b8a(++_0x17531e);}(_0x4810,0xa4));var _0x0481=function(_0x2a478b,_0x29b8b3){_0x2a478b=_0x2a478b-0x0;var _0x539bee=_0x4810[_0x2a478b];return _0x539bee;};'use strict';var jayson=require(_0x0481('0x0'));var BPromise=require(_0x0481('0x1'));var _=require(_0x0481('0x2'));var config=require(_0x0481('0x3'));exports[_0x0481('0x4')]=function(){return new BPromise(function(_0x401a39,_0x39807a){var _0x366288={};_0x366288=_[_0x0481('0x5')](_0x366288,require('../api/user/user.rpc'));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x6')));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x7')));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x8')));_0x366288=_['merge'](_0x366288,require(_0x0481('0x9')));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0xa')));_0x366288=_[_0x0481('0x5')](_0x366288,require('../api/voiceAgentReport/voiceAgentReport.rpc'));_0x366288=_[_0x0481('0x5')](_0x366288,require('../api/voiceQueueReport/voiceQueueReport.rpc'));_0x366288=_['merge'](_0x366288,require(_0x0481('0xb')));_0x366288=_['merge'](_0x366288,require(_0x0481('0xc')));_0x366288=_['merge'](_0x366288,require('../api/voiceTransferReport/voiceTransferReport.rpc'));_0x366288=_[_0x0481('0x5')](_0x366288,require('../api/userVoiceQueueRt/userVoiceQueueRt.rpc'));_0x366288=_[_0x0481('0x5')](_0x366288,require('../api/mailServerIn/mailServerIn.rpc'));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0xd')));_0x366288=_[_0x0481('0x5')](_0x366288,require('../api/mailQueue/mailQueue.rpc'));_0x366288=_['merge'](_0x366288,require(_0x0481('0xe')));_0x366288=_['merge'](_0x366288,require('../api/mailMessage/mailMessage.rpc'));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0xf')));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x10')));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x11')));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x12')));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x13')));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x14')));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x15')));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x16')));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x17')));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x18')));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x19')));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x1a')));_0x366288=_['merge'](_0x366288,require(_0x0481('0x1b')));_0x366288=_['merge'](_0x366288,require('../api/openchannelInteraction/openchannelInteraction.rpc'));_0x366288=_['merge'](_0x366288,require(_0x0481('0x1c')));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x1d')));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x1e')));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x1f')));_0x366288=_[_0x0481('0x5')](_0x366288,require('../api/chatMessage/chatMessage.rpc'));_0x366288=_[_0x0481('0x5')](_0x366288,require('../api/chatQueue/chatQueue.rpc'));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x20')));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x21')));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x22')));_0x366288=_[_0x0481('0x5')](_0x366288,require('../api/cmHopperFinal/cmHopperFinal.rpc'));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x23')));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x24')));_0x366288=_[_0x0481('0x5')](_0x366288,require('../api/interval/interval.rpc'));_0x366288=_[_0x0481('0x5')](_0x366288,require('../api/pause/pause.rpc'));_0x366288=_['merge'](_0x366288,require(_0x0481('0x25')));_0x366288=_[_0x0481('0x5')](_0x366288,require('../api/template/template.rpc'));_0x366288=_['merge'](_0x366288,require(_0x0481('0x26')));_0x366288=_['merge'](_0x366288,require(_0x0481('0x27')));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x28')));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x29')));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x2a')));_0x366288=_['merge'](_0x366288,require('../api/intZohoAccount/intZohoAccount.rpc'));_0x366288=_['merge'](_0x366288,require(_0x0481('0x2b')));_0x366288=_['merge'](_0x366288,require(_0x0481('0x2c')));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x2d')));_0x366288=_['merge'](_0x366288,require(_0x0481('0x2e')));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x2f')));_0x366288=_[_0x0481('0x5')](_0x366288,require('../api/intFreshsalesAccount/intFreshsalesAccount.rpc'));_0x366288=_['merge'](_0x366288,require(_0x0481('0x30')));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x31')));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x32')));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x33')));_0x366288=_['merge'](_0x366288,require(_0x0481('0x34')));_0x366288=_['merge'](_0x366288,require(_0x0481('0x35')));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x36')));_0x366288=_['merge'](_0x366288,require(_0x0481('0x37')));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x38')));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x39')));_0x366288=_['merge'](_0x366288,require(_0x0481('0x3a')));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x3b')));_0x366288=_[_0x0481('0x5')](_0x366288,require('../api/whatsappAccount/whatsappAccount.rpc'));_0x366288=_[_0x0481('0x5')](_0x366288,require('../api/whatsappInteraction/whatsappInteraction.rpc'));_0x366288=_[_0x0481('0x5')](_0x366288,require(_0x0481('0x3c')));_0x366288=_[_0x0481('0x5')](_0x366288,require('../api/whatsappQueueReport/whatsappQueueReport.rpc'));_0x366288=_['merge'](_0x366288,require(_0x0481('0x3d')));var _0x1da4a3=jayson['server'](_0x366288)[_0x0481('0x3e')]();var _0x13d488=config['rpc'][_0x0481('0x3f')]||config[_0x0481('0x3f')]+0x1;var _0x584fff=config['rpc']['ip']||'localhost';_0x1da4a3['on']('error',function(_0x692ad0){return _0x39807a(_0x692ad0);});_0x1da4a3['listen'](_0x13d488,_0x584fff,function(){console[_0x0481('0x40')](_0x0481('0x41'),_0x584fff,_0x13d488);require(_0x0481('0x42'))['default']();return _0x401a39('RPC\x20listening\x20on\x20'+_0x584fff+':'+_0x13d488);});});};
\ No newline at end of file
+var _0x8277=['../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/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','rpc','port','localhost','error','log','../config/triggers','RPC\x20listening\x20on\x20','jayson/promise','bluebird','lodash','../config/environment','listen','merge','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/memberReport/memberReport.rpc','../api/trunk/trunk.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailMessage/mailMessage.rpc','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/interval/interval.rpc','../api/pause/pause.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.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/squareReport/squareReport.rpc'];(function(_0x243866,_0x36269a){var _0x551bbd=function(_0x5a07ab){while(--_0x5a07ab){_0x243866['push'](_0x243866['shift']());}};_0x551bbd(++_0x36269a);}(_0x8277,0x16d));var _0x7827=function(_0x2a6754,_0x277259){_0x2a6754=_0x2a6754-0x0;var _0x17feda=_0x8277[_0x2a6754];return _0x17feda;};'use strict';var jayson=require(_0x7827('0x0'));var BPromise=require(_0x7827('0x1'));var _=require(_0x7827('0x2'));var config=require(_0x7827('0x3'));exports[_0x7827('0x4')]=function(){return new BPromise(function(_0x1d2f0a,_0x4d34d3){var _0x51674={};_0x51674=_[_0x7827('0x5')](_0x51674,require('../api/user/user.rpc'));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x6')));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x7')));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x8')));_0x51674=_['merge'](_0x51674,require('../api/voiceCallReport/voiceCallReport.rpc'));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x9')));_0x51674=_['merge'](_0x51674,require('../api/voiceAgentReport/voiceAgentReport.rpc'));_0x51674=_[_0x7827('0x5')](_0x51674,require('../api/voiceQueueReport/voiceQueueReport.rpc'));_0x51674=_['merge'](_0x51674,require(_0x7827('0xa')));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0xb')));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0xc')));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0xd')));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0xe')));_0x51674=_['merge'](_0x51674,require(_0x7827('0xf')));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x10')));_0x51674=_['merge'](_0x51674,require('../api/mailInteraction/mailInteraction.rpc'));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x11')));_0x51674=_[_0x7827('0x5')](_0x51674,require('../api/mailApplication/mailApplication.rpc'));_0x51674=_[_0x7827('0x5')](_0x51674,require('../api/mailQueueReport/mailQueueReport.rpc'));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x12')));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x13')));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x14')));_0x51674=_[_0x7827('0x5')](_0x51674,require('../api/faxMessage/faxMessage.rpc'));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x15')));_0x51674=_['merge'](_0x51674,require(_0x7827('0x16')));_0x51674=_['merge'](_0x51674,require(_0x7827('0x17')));_0x51674=_[_0x7827('0x5')](_0x51674,require('../api/smsInteraction/smsInteraction.rpc'));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x18')));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x19')));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x1a')));_0x51674=_[_0x7827('0x5')](_0x51674,require('../api/openchannelInteraction/openchannelInteraction.rpc'));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x1b')));_0x51674=_['merge'](_0x51674,require(_0x7827('0x1c')));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x1d')));_0x51674=_['merge'](_0x51674,require(_0x7827('0x1e')));_0x51674=_[_0x7827('0x5')](_0x51674,require('../api/chatMessage/chatMessage.rpc'));_0x51674=_[_0x7827('0x5')](_0x51674,require('../api/chatQueue/chatQueue.rpc'));_0x51674=_[_0x7827('0x5')](_0x51674,require('../api/cmContact/cmContact.rpc'));_0x51674=_['merge'](_0x51674,require(_0x7827('0x1f')));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x20')));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x21')));_0x51674=_['merge'](_0x51674,require(_0x7827('0x22')));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x23')));_0x51674=_['merge'](_0x51674,require(_0x7827('0x24')));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x25')));_0x51674=_[_0x7827('0x5')](_0x51674,require('../api/sound/sound.rpc'));_0x51674=_[_0x7827('0x5')](_0x51674,require('../api/template/template.rpc'));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x26')));_0x51674=_['merge'](_0x51674,require(_0x7827('0x27')));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x28')));_0x51674=_[_0x7827('0x5')](_0x51674,require('../api/intSugarcrmAccount/intSugarcrmAccount.rpc'));_0x51674=_['merge'](_0x51674,require(_0x7827('0x29')));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x2a')));_0x51674=_['merge'](_0x51674,require(_0x7827('0x2b')));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x2c')));_0x51674=_['merge'](_0x51674,require(_0x7827('0x2d')));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x2e')));_0x51674=_['merge'](_0x51674,require(_0x7827('0x2f')));_0x51674=_['merge'](_0x51674,require('../api/intFreshsalesAccount/intFreshsalesAccount.rpc'));_0x51674=_['merge'](_0x51674,require('../api/chatQueueReport/chatQueueReport.rpc'));_0x51674=_[_0x7827('0x5')](_0x51674,require('../api/smsQueueReport/smsQueueReport.rpc'));_0x51674=_['merge'](_0x51674,require(_0x7827('0x30')));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x31')));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x32')));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x33')));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x34')));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x35')));_0x51674=_['merge'](_0x51674,require('../api/squareMessage/squareMessage.rpc'));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x36')));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x37')));_0x51674=_['merge'](_0x51674,require(_0x7827('0x38')));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x39')));_0x51674=_['merge'](_0x51674,require(_0x7827('0x3a')));_0x51674=_[_0x7827('0x5')](_0x51674,require('../api/whatsappMessage/whatsappMessage.rpc'));_0x51674=_[_0x7827('0x5')](_0x51674,require(_0x7827('0x3b')));_0x51674=_['merge'](_0x51674,require(_0x7827('0x3c')));var _0x3a858c=jayson[_0x7827('0x3d')](_0x51674)['http']();var _0x220ab7=config[_0x7827('0x3e')][_0x7827('0x3f')]||config[_0x7827('0x3f')]+0x1;var _0x5b9139=config[_0x7827('0x3e')]['ip']||_0x7827('0x40');_0x3a858c['on'](_0x7827('0x41'),function(_0x409536){return _0x4d34d3(_0x409536);});_0x3a858c[_0x7827('0x4')](_0x220ab7,_0x5b9139,function(){console[_0x7827('0x42')]('Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!',_0x5b9139,_0x220ab7);require(_0x7827('0x43'))['default']();return _0x1d2f0a(_0x7827('0x44')+_0x5b9139+':'+_0x220ab7);});});};
\ No newline at end of file
index 102a698..f5b87c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea21=['E_AGI_SOCKET_ERROR','code','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','command','inherits','prototype','sync','answer','sendRequest','ANSWER','getData','beep','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','NO\x20MESSAGE','VERBOSE\x20\x22%s\x22','exec','isArray','EXEC\x20%s\x20%s','setContext','SET\x20CONTEXT\x20%s','setExtension','setPriority','HANGUP','setVariable','isBoolean','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayDigits','SAY\x20DIGITS\x20%s\x20%s','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','extension','GOTO\x20%s\x20%s\x20%s','getVariable','GET\x20VARIABLE\x20\x22%s\x22','recordFile','wav','BEEP','AGI','wait','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','util','events','EventEmitter','./reply','call','utf8','setTimeout','setEncoding','ready','line','toLowerCase','hangup','emit','520-Invalid','search','520\x20End\x20of\x20proper','function','no\x20code','substring','replace','indexOf','substr','startsWith','length','match','error'];(function(_0x2be30d,_0x47e21b){var _0x2837a3=function(_0x26c4a3){while(--_0x26c4a3){_0x2be30d['push'](_0x2be30d['shift']());}};_0x2837a3(++_0x47e21b);}(_0xea21,0x80));var _0x1ea2=function(_0x3ac203,_0x822e96){_0x3ac203=_0x3ac203-0x0;var _0x36b3e4=_0xea21[_0x3ac203];return _0x36b3e4;};'use strict';var util=require(_0x1ea2('0x0'));var _=require('lodash');var EventEmitter=require(_0x1ea2('0x1'))[_0x1ea2('0x2')];var AGIReply=require(_0x1ea2('0x3'));var AGIError=require('./error');function AGIChannel(_0x40f808){var _0x5e1519=this,_0xd183cc=new AGIReply(),_0x1d1d87=![],_0x324637={};EventEmitter[_0x1ea2('0x4')](_0x5e1519);_0x40f808['setEncoding'](_0x1ea2('0x5'));_0x40f808[_0x1ea2('0x6')](0x8*0x3c*0x3c*0x3e8);_0xd183cc[_0x1ea2('0x7')](_0x1ea2('0x5'));_0xd183cc['on']('headers',function(_0x407202){for(var _0x210ae4 in _0x407202){_0x5e1519[_0x210ae4]=_0x407202[_0x210ae4];}_0x5e1519['emit'](_0x1ea2('0x8'));});_0xd183cc['on'](_0x1ea2('0x9'),function(_0x21fa87){if(_0x21fa87[_0x1ea2('0xa')]()==_0x1ea2('0xb')){_0x5e1519[_0x1ea2('0xc')]('hangup');return;}if(_0x21fa87['substring'](0x0,0xb)==_0x1ea2('0xd')){_0x1d1d87=!![];}if(_0x1d1d87){_0x324637['rx']+=_0x21fa87+'\x0a';if(_0x21fa87[_0x1ea2('0xe')](_0x1ea2('0xf'))!=-0x1){_0x1d1d87=![];}}else{_0x324637['rx']=_0x21fa87;}if(_0x1d1d87){return;}if(typeof _0x324637['cb']==_0x1ea2('0x10')){var _0x303b44=_0x324637['rx']['substring'](0x0,0x3),_0x13717f=null,_0xf0cf76=null;_0x303b44=parseInt(_0x303b44);if(isNaN(_0x303b44)){_0x324637['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x1ea2('0x11')});return;}if(_0x303b44!=0xc8){_0x324637['cb'](null,{'code':_0x303b44,'result':-0x1,'extra':'KO'});return;}_0x13717f=_0x324637['rx'][_0x1ea2('0x12')](0x4)[_0x1ea2('0x13')]('result=','');if(_0x13717f[_0x1ea2('0x14')]('\x20')!=-0x1){_0x13717f=_0x13717f[_0x1ea2('0x15')](0x0,_0x13717f[_0x1ea2('0x14')]('\x20'));}if(_[_0x1ea2('0x16')](_0x13717f,'-1')){_0x13717f=parseInt(_0x13717f);}_0xf0cf76=_0x324637['rx']['split']('\x20');if(_0xf0cf76[_0x1ea2('0x17')]==0x3){_0xf0cf76=_0xf0cf76[0x2][_0x1ea2('0x12')](0x1,_0xf0cf76[0x2][_0x1ea2('0x17')]-0x1);}else if(_0xf0cf76[_0x1ea2('0x17')]>0x3){var _0x28040b=/\((.+)\)/;var _0x53965f=_0x324637['rx'][_0x1ea2('0x18')](_0x28040b);if(_0x53965f){_0xf0cf76=_0x53965f[0x1];}else{_0xf0cf76=null;}}else{_0xf0cf76=null;}_0x324637['cb'](null,{'code':_0x303b44,'result':_0x13717f,'extra':_0xf0cf76});}});_0x40f808['on'](_0x1ea2('0x19'),function(_0x1819b2){_0x5e1519['emit'](_0x1ea2('0x19'),new AGIError(_0x1ea2('0x1a'),_0x1819b2[_0x1ea2('0x1b')]));});_0x40f808['on']('close',function(){_0x5e1519[_0x1ea2('0xc')](_0x1ea2('0x1c'),new AGIError(_0x1ea2('0x1d')));});_0x40f808['on'](_0x1ea2('0x1e'),function(){_0x5e1519[_0x1ea2('0xc')]('timeout',new AGIError(_0x1ea2('0x1f')));_0x40f808[_0x1ea2('0x20')]();});_0x40f808[_0x1ea2('0x21')](_0xd183cc);this[_0x1ea2('0x22')]=function(_0x20d4d2,_0x35a87f){var _0x20d4d2=_0x20d4d2||'',_0x35a87f=typeof _0x35a87f==_0x1ea2('0x10')?_0x35a87f:new Function();_0x324637={'tx':_0x20d4d2,'rx':'','cb':_0x35a87f};_0x40f808['write'](_0x20d4d2+'\x0a');},this[_0x1ea2('0x1c')]=function(){_0x40f808[_0x1ea2('0x20')]();};}util[_0x1ea2('0x23')](AGIChannel,EventEmitter);AGIChannel[_0x1ea2('0x24')]['sendRequest']=function(_0x56da54){return this[_0x1ea2('0x22')][_0x1ea2('0x25')](this,_0x56da54);};AGIChannel['prototype'][_0x1ea2('0x26')]=function(){return this[_0x1ea2('0x27')](_0x1ea2('0x28'));};AGIChannel[_0x1ea2('0x24')][_0x1ea2('0x29')]=function(_0xfd52b2,_0x5504d9,_0x58c125){_0xfd52b2=_0xfd52b2===undefined?_0x1ea2('0x2a'):_0xfd52b2;_0x5504d9=_0x5504d9===undefined?'5':_0x5504d9;_0x58c125=_0x58c125===undefined?'1':_0x58c125;return this[_0x1ea2('0x27')](util[_0x1ea2('0x2b')](_0x1ea2('0x2c'),_0xfd52b2,_0x5504d9*0x3e8,_0x58c125));};AGIChannel[_0x1ea2('0x24')][_0x1ea2('0x2d')]=function(_0x53e48c){_0x53e48c=_0x53e48c||_0x1ea2('0x2e');return this['sendRequest'](util[_0x1ea2('0x2b')](_0x1ea2('0x2f'),_0x53e48c));};AGIChannel[_0x1ea2('0x24')][_0x1ea2('0x30')]=function(_0x149251,_0x2b17ce){if(_[_0x1ea2('0x31')](_0x2b17ce)){return this[_0x1ea2('0x27')](util['format']('EXEC\x20%s\x20%s',_0x149251,_0x2b17ce['join'](',')));}return this[_0x1ea2('0x27')](util[_0x1ea2('0x2b')](_0x1ea2('0x32'),_0x149251,_0x2b17ce));};AGIChannel['prototype'][_0x1ea2('0x33')]=function(_0xdd9d68){return this[_0x1ea2('0x27')](util[_0x1ea2('0x2b')](_0x1ea2('0x34'),_0xdd9d68));};AGIChannel[_0x1ea2('0x24')][_0x1ea2('0x35')]=function(_0x567bb6){return this[_0x1ea2('0x27')](util[_0x1ea2('0x2b')]('SET\x20EXTENSION\x20%s',_0x567bb6));};AGIChannel[_0x1ea2('0x24')][_0x1ea2('0x36')]=function(_0x108b74){return this[_0x1ea2('0x27')](util[_0x1ea2('0x2b')]('SET\x20PRIORITY\x20%s',_0x108b74));};AGIChannel[_0x1ea2('0x24')]['hangup']=function(){return this[_0x1ea2('0x27')](_0x1ea2('0x37'));};AGIChannel[_0x1ea2('0x24')][_0x1ea2('0x38')]=function(_0x2b825a,_0xe6da){var _0x134277=_[_0x1ea2('0x39')](_0xe6da)||_[_0x1ea2('0x3a')](_0xe6da)?_0xe6da[_0x1ea2('0x3b')]():_0xe6da;return this[_0x1ea2('0x27')](util[_0x1ea2('0x2b')](_0x1ea2('0x3c'),_0x2b825a,_0x134277?_0x134277[_0x1ea2('0x3b')]()[_0x1ea2('0x13')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype']['sayNumber']=function(_0x411766,_0x7acab0){return this[_0x1ea2('0x27')](util[_0x1ea2('0x2b')]('SAY\x20NUMBER\x20%s\x20%s',_0x411766,_0x7acab0));};AGIChannel[_0x1ea2('0x24')][_0x1ea2('0x3d')]=function(_0x363525,_0x4cf0c8){return this[_0x1ea2('0x27')](util[_0x1ea2('0x2b')](_0x1ea2('0x3e'),_0x363525,_0x4cf0c8));};AGIChannel[_0x1ea2('0x24')]['sayPhonetic']=function(_0x49b95b,_0x483a6d){return this[_0x1ea2('0x27')](util[_0x1ea2('0x2b')](_0x1ea2('0x3f'),_0x49b95b,_0x483a6d));};AGIChannel[_0x1ea2('0x24')][_0x1ea2('0x40')]=function(_0x2153c4,_0x182032,_0x11e648){_0x182032=_0x182032||this[_0x1ea2('0x41')];_0x11e648=_0x11e648||0x1;this[_0x1ea2('0x33')](_0x2153c4);this['setExtension'](_0x182032);this[_0x1ea2('0x36')](_0x11e648);return this['noop'](util[_0x1ea2('0x2b')](_0x1ea2('0x42'),_0x2153c4,_0x182032,_0x11e648));};AGIChannel[_0x1ea2('0x24')][_0x1ea2('0x43')]=function(_0x4029d5){return this[_0x1ea2('0x27')](util['format'](_0x1ea2('0x44'),_0x4029d5));};AGIChannel['prototype'][_0x1ea2('0x45')]=function(_0x466d5e,_0x3b418b,_0x594797,_0x49e02c,_0x339e00,_0x1ae073){_0x3b418b=_0x3b418b||_0x1ea2('0x46');_0x594797=_0x594797||'';_0x49e02c=_0x49e02c===undefined?-0x1:_0x49e02c==='-1'?-0x1:_0x49e02c*0x3e8;_0x339e00=_0x339e00===undefined?'':'s='+_0x339e00;_0x1ae073=_0x1ae073?_0x1ea2('0x47'):'';return this['sendRequest'](util['format']('RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s',_0x466d5e,_0x3b418b,_0x594797,_0x49e02c,_0x1ae073,_0x339e00));};AGIChannel[_0x1ea2('0x24')]['streamFile']=function(_0x2a221c,_0x33f7c9){_0x33f7c9=_0x33f7c9||'';return this[_0x1ea2('0x27')](util['format']('STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22',_0x2a221c,_0x33f7c9));};AGIChannel[_0x1ea2('0x24')]['agi']=function(_0x56fd1b){return this[_0x1ea2('0x30')](_0x1ea2('0x48'),_0x56fd1b);};AGIChannel[_0x1ea2('0x24')][_0x1ea2('0x49')]=function(_0x2e3491){return this[_0x1ea2('0x30')]('WAIT',_0x2e3491);};AGIChannel['prototype']['error']=function(_0x57c106,_0x518eab){this[_0x1ea2('0x2d')](util['format'](_0x1ea2('0x4a'),_0x57c106['id'],_0x57c106[_0x1ea2('0x4b')],_0x518eab));return{'code':0x1f4,'result':'-1','extra':''};};module[_0x1ea2('0x4c')]=AGIChannel;
\ No newline at end of file
+var _0xfbf2=['command','write','inherits','prototype','sendRequest','sync','answer','ANSWER','getData','beep','format','NO\x20MESSAGE','exec','isArray','join','EXEC\x20%s\x20%s','setContext','SET\x20CONTEXT\x20%s','setPriority','hangup','HANGUP','setVariable','isBoolean','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20DIGITS\x20%s\x20%s','continueAt','extension','setExtension','getVariable','wav','BEEP','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','agi','AGI','wait','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','exports','util','lodash','events','EventEmitter','./reply','./error','call','setEncoding','utf8','emit','ready','line','toLowerCase','substring','search','520\x20End\x20of\x20proper','function','no\x20code','replace','result=','substr','startsWith','split','length','match','error','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0xfbf2,0xc0));var _0x2fbf=function(_0x1277a3,_0xfa0e66){_0x1277a3=_0x1277a3-0x0;var _0x3c6822=_0xfbf2[_0x1277a3];return _0x3c6822;};'use strict';var util=require(_0x2fbf('0x0'));var _=require(_0x2fbf('0x1'));var EventEmitter=require(_0x2fbf('0x2'))[_0x2fbf('0x3')];var AGIReply=require(_0x2fbf('0x4'));var AGIError=require(_0x2fbf('0x5'));function AGIChannel(_0x4fb013){var _0x255a0b=this,_0x1f4177=new AGIReply(),_0xfc9ee7=![],_0x32b674={};EventEmitter[_0x2fbf('0x6')](_0x255a0b);_0x4fb013[_0x2fbf('0x7')](_0x2fbf('0x8'));_0x4fb013['setTimeout'](0x8*0x3c*0x3c*0x3e8);_0x1f4177[_0x2fbf('0x7')](_0x2fbf('0x8'));_0x1f4177['on']('headers',function(_0x211c7c){for(var _0x4d9850 in _0x211c7c){_0x255a0b[_0x4d9850]=_0x211c7c[_0x4d9850];}_0x255a0b[_0x2fbf('0x9')](_0x2fbf('0xa'));});_0x1f4177['on'](_0x2fbf('0xb'),function(_0x72f3c8){if(_0x72f3c8[_0x2fbf('0xc')]()=='hangup'){_0x255a0b[_0x2fbf('0x9')]('hangup');return;}if(_0x72f3c8[_0x2fbf('0xd')](0x0,0xb)=='520-Invalid'){_0xfc9ee7=!![];}if(_0xfc9ee7){_0x32b674['rx']+=_0x72f3c8+'\x0a';if(_0x72f3c8[_0x2fbf('0xe')](_0x2fbf('0xf'))!=-0x1){_0xfc9ee7=![];}}else{_0x32b674['rx']=_0x72f3c8;}if(_0xfc9ee7){return;}if(typeof _0x32b674['cb']==_0x2fbf('0x10')){var _0x1c1ab6=_0x32b674['rx'][_0x2fbf('0xd')](0x0,0x3),_0x4c28bb=null,_0x44fb6a=null;_0x1c1ab6=parseInt(_0x1c1ab6);if(isNaN(_0x1c1ab6)){_0x32b674['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x2fbf('0x11')});return;}if(_0x1c1ab6!=0xc8){_0x32b674['cb'](null,{'code':_0x1c1ab6,'result':-0x1,'extra':'KO'});return;}_0x4c28bb=_0x32b674['rx']['substring'](0x4)[_0x2fbf('0x12')](_0x2fbf('0x13'),'');if(_0x4c28bb['indexOf']('\x20')!=-0x1){_0x4c28bb=_0x4c28bb[_0x2fbf('0x14')](0x0,_0x4c28bb['indexOf']('\x20'));}if(_[_0x2fbf('0x15')](_0x4c28bb,'-1')){_0x4c28bb=parseInt(_0x4c28bb);}_0x44fb6a=_0x32b674['rx'][_0x2fbf('0x16')]('\x20');if(_0x44fb6a[_0x2fbf('0x17')]==0x3){_0x44fb6a=_0x44fb6a[0x2][_0x2fbf('0xd')](0x1,_0x44fb6a[0x2][_0x2fbf('0x17')]-0x1);}else if(_0x44fb6a[_0x2fbf('0x17')]>0x3){var _0x37cad2=/\((.+)\)/;var _0x4e856f=_0x32b674['rx'][_0x2fbf('0x18')](_0x37cad2);if(_0x4e856f){_0x44fb6a=_0x4e856f[0x1];}else{_0x44fb6a=null;}}else{_0x44fb6a=null;}_0x32b674['cb'](null,{'code':_0x1c1ab6,'result':_0x4c28bb,'extra':_0x44fb6a});}});_0x4fb013['on'](_0x2fbf('0x19'),function(_0x56b0d5){_0x255a0b[_0x2fbf('0x9')](_0x2fbf('0x19'),new AGIError('E_AGI_SOCKET_ERROR',_0x56b0d5['code']));});_0x4fb013['on'](_0x2fbf('0x1a'),function(){_0x255a0b[_0x2fbf('0x9')](_0x2fbf('0x1a'),new AGIError(_0x2fbf('0x1b')));});_0x4fb013['on'](_0x2fbf('0x1c'),function(){_0x255a0b[_0x2fbf('0x9')](_0x2fbf('0x1c'),new AGIError(_0x2fbf('0x1d')));_0x4fb013['destroy']();});_0x4fb013['pipe'](_0x1f4177);this[_0x2fbf('0x1e')]=function(_0x5adec7,_0x5628c){var _0x5adec7=_0x5adec7||'',_0x5628c=typeof _0x5628c==_0x2fbf('0x10')?_0x5628c:new Function();_0x32b674={'tx':_0x5adec7,'rx':'','cb':_0x5628c};_0x4fb013[_0x2fbf('0x1f')](_0x5adec7+'\x0a');},this['close']=function(){_0x4fb013['destroy']();};}util[_0x2fbf('0x20')](AGIChannel,EventEmitter);AGIChannel[_0x2fbf('0x21')][_0x2fbf('0x22')]=function(_0x104021){return this[_0x2fbf('0x1e')][_0x2fbf('0x23')](this,_0x104021);};AGIChannel[_0x2fbf('0x21')][_0x2fbf('0x24')]=function(){return this[_0x2fbf('0x22')](_0x2fbf('0x25'));};AGIChannel[_0x2fbf('0x21')][_0x2fbf('0x26')]=function(_0x545638,_0x777e3,_0x71d12d){_0x545638=_0x545638===undefined?_0x2fbf('0x27'):_0x545638;_0x777e3=_0x777e3===undefined?'5':_0x777e3;_0x71d12d=_0x71d12d===undefined?'1':_0x71d12d;return this['sendRequest'](util[_0x2fbf('0x28')]('GET\x20DATA\x20\x22%s\x22\x20%s\x20%s',_0x545638,_0x777e3*0x3e8,_0x71d12d));};AGIChannel[_0x2fbf('0x21')]['noop']=function(_0x48494f){_0x48494f=_0x48494f||_0x2fbf('0x29');return this['sendRequest'](util[_0x2fbf('0x28')]('VERBOSE\x20\x22%s\x22',_0x48494f));};AGIChannel[_0x2fbf('0x21')][_0x2fbf('0x2a')]=function(_0xfab771,_0x1d67ca){if(_[_0x2fbf('0x2b')](_0x1d67ca)){return this[_0x2fbf('0x22')](util[_0x2fbf('0x28')]('EXEC\x20%s\x20%s',_0xfab771,_0x1d67ca[_0x2fbf('0x2c')](',')));}return this[_0x2fbf('0x22')](util['format'](_0x2fbf('0x2d'),_0xfab771,_0x1d67ca));};AGIChannel[_0x2fbf('0x21')][_0x2fbf('0x2e')]=function(_0x252d13){return this[_0x2fbf('0x22')](util['format'](_0x2fbf('0x2f'),_0x252d13));};AGIChannel[_0x2fbf('0x21')]['setExtension']=function(_0x419a79){return this[_0x2fbf('0x22')](util[_0x2fbf('0x28')]('SET\x20EXTENSION\x20%s',_0x419a79));};AGIChannel['prototype'][_0x2fbf('0x30')]=function(_0x55b770){return this[_0x2fbf('0x22')](util['format']('SET\x20PRIORITY\x20%s',_0x55b770));};AGIChannel[_0x2fbf('0x21')][_0x2fbf('0x31')]=function(){return this[_0x2fbf('0x22')](_0x2fbf('0x32'));};AGIChannel[_0x2fbf('0x21')][_0x2fbf('0x33')]=function(_0x3788aa,_0x4206ee){var _0x26ccce=_[_0x2fbf('0x34')](_0x4206ee)||_[_0x2fbf('0x35')](_0x4206ee)?_0x4206ee[_0x2fbf('0x36')]():_0x4206ee;return this['sendRequest'](util[_0x2fbf('0x28')](_0x2fbf('0x37'),_0x3788aa,_0x26ccce?_0x26ccce[_0x2fbf('0x36')]()[_0x2fbf('0x12')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0x2fbf('0x21')]['sayNumber']=function(_0x317c53,_0x2cab72){return this[_0x2fbf('0x22')](util[_0x2fbf('0x28')](_0x2fbf('0x38'),_0x317c53,_0x2cab72));};AGIChannel[_0x2fbf('0x21')][_0x2fbf('0x39')]=function(_0x13b30b,_0x1dddf0){return this[_0x2fbf('0x22')](util[_0x2fbf('0x28')](_0x2fbf('0x3a'),_0x13b30b,_0x1dddf0));};AGIChannel[_0x2fbf('0x21')]['sayPhonetic']=function(_0x35f415,_0x2d378f){return this['sendRequest'](util[_0x2fbf('0x28')]('SAY\x20PHONETIC\x20\x22%s\x22\x20%s',_0x35f415,_0x2d378f));};AGIChannel[_0x2fbf('0x21')][_0x2fbf('0x3b')]=function(_0x5c1135,_0xc845c4,_0x401c53){_0xc845c4=_0xc845c4||this[_0x2fbf('0x3c')];_0x401c53=_0x401c53||0x1;this[_0x2fbf('0x2e')](_0x5c1135);this[_0x2fbf('0x3d')](_0xc845c4);this[_0x2fbf('0x30')](_0x401c53);return this['noop'](util['format']('GOTO\x20%s\x20%s\x20%s',_0x5c1135,_0xc845c4,_0x401c53));};AGIChannel[_0x2fbf('0x21')][_0x2fbf('0x3e')]=function(_0x2b01fe){return this[_0x2fbf('0x22')](util[_0x2fbf('0x28')]('GET\x20VARIABLE\x20\x22%s\x22',_0x2b01fe));};AGIChannel[_0x2fbf('0x21')]['recordFile']=function(_0x14e155,_0x393d8f,_0x45e1c5,_0x424668,_0x46b480,_0x21bd34){_0x393d8f=_0x393d8f||_0x2fbf('0x3f');_0x45e1c5=_0x45e1c5||'';_0x424668=_0x424668===undefined?-0x1:_0x424668==='-1'?-0x1:_0x424668*0x3e8;_0x46b480=_0x46b480===undefined?'':'s='+_0x46b480;_0x21bd34=_0x21bd34?_0x2fbf('0x40'):'';return this[_0x2fbf('0x22')](util[_0x2fbf('0x28')](_0x2fbf('0x41'),_0x14e155,_0x393d8f,_0x45e1c5,_0x424668,_0x21bd34,_0x46b480));};AGIChannel[_0x2fbf('0x21')][_0x2fbf('0x42')]=function(_0x142330,_0x2e10db){_0x2e10db=_0x2e10db||'';return this[_0x2fbf('0x22')](util[_0x2fbf('0x28')](_0x2fbf('0x43'),_0x142330,_0x2e10db));};AGIChannel['prototype'][_0x2fbf('0x44')]=function(_0x1ee059){return this[_0x2fbf('0x2a')](_0x2fbf('0x45'),_0x1ee059);};AGIChannel[_0x2fbf('0x21')][_0x2fbf('0x46')]=function(_0x2043ed){return this['exec'](_0x2fbf('0x47'),_0x2043ed);};AGIChannel['prototype'][_0x2fbf('0x19')]=function(_0x2442bf,_0x577b44){this['noop'](util['format'](_0x2fbf('0x48'),_0x2442bf['id'],_0x2442bf['label'],_0x577b44));return{'code':0x1f4,'result':'-1','extra':''};};module[_0x2fbf('0x49')]=AGIChannel;
\ No newline at end of file
index fddb811..e4a143e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ce4=['Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_UNDEFINED','push','format','name','exports','util','Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Empty\x20command.'];(function(_0x1bdfb6,_0x2dd242){var _0x5c124d=function(_0x3af4c3){while(--_0x3af4c3){_0x1bdfb6['push'](_0x1bdfb6['shift']());}};_0x5c124d(++_0x2dd242);}(_0x3ce4,0x123));var _0x43ce=function(_0x391c55,_0x168617){_0x391c55=_0x391c55-0x0;var _0xa434e0=_0x3ce4[_0x391c55];return _0xa434e0;};'use strict';var util=require(_0x43ce('0x0'));var error={'E_AGI_UNDEFINED':_0x43ce('0x1'),'E_AGI_ARGUMENT_PORT':_0x43ce('0x2'),'E_AGI_SERVER_ERROR':'Server\x20error.\x20Code:\x20%s.','E_AGI_SERVER_CLOSE':_0x43ce('0x3'),'E_AGI_SERVER_MAXCONNECTION':_0x43ce('0x4'),'E_AGI_SERVER_VOICE_DISABLED':_0x43ce('0x5'),'E_AGI_SOCKET_ERROR':_0x43ce('0x6'),'E_AGI_SOCKET_CLOSE':_0x43ce('0x7'),'E_AGI_SOCKET_TIMEOUT':'Socket\x20timeout.','E_AGI_COMMAND_EMPTY':_0x43ce('0x8'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0x43ce('0x9'),'E_AGI_IVR_ENTRY':'Missing\x20\x27ivr.entry\x27\x20menu.'};function AGIError(_0x3c2dda){var _0x3c2dda=_0x3c2dda||null,_0x2d2ee6=_0x2d2ee6||[],_0x5763e4=0x1,_0x5a3e9b='';if(!error[_0x3c2dda]){_0x3c2dda=_0x43ce('0xa');}_0x2d2ee6[_0x43ce('0xb')](error[_0x3c2dda]);while(arguments[_0x5763e4]){_0x2d2ee6[_0x43ce('0xb')](arguments[_0x5763e4]);_0x5763e4++;}_0x5a3e9b=util[_0x43ce('0xc')]['apply'](util,_0x2d2ee6);this['message']=_0x5a3e9b;this[_0x43ce('0xd')]=_0x3c2dda;}module[_0x43ce('0xe')]=AGIError;
\ No newline at end of file
+var _0xabc4=['exports','Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Empty\x20command.','Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','format','apply','message'];(function(_0xcf77fa,_0x3e891e){var _0x11f2b9=function(_0x441934){while(--_0x441934){_0xcf77fa['push'](_0xcf77fa['shift']());}};_0x11f2b9(++_0x3e891e);}(_0xabc4,0x1d2));var _0x4abc=function(_0x42cf89,_0x2bd0dd){_0x42cf89=_0x42cf89-0x0;var _0x5a918f=_0xabc4[_0x42cf89];return _0x5a918f;};'use strict';var util=require('util');var error={'E_AGI_UNDEFINED':_0x4abc('0x0'),'E_AGI_ARGUMENT_PORT':_0x4abc('0x1'),'E_AGI_SERVER_ERROR':'Server\x20error.\x20Code:\x20%s.','E_AGI_SERVER_CLOSE':_0x4abc('0x2'),'E_AGI_SERVER_MAXCONNECTION':_0x4abc('0x3'),'E_AGI_SERVER_VOICE_DISABLED':'[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','E_AGI_SOCKET_ERROR':_0x4abc('0x4'),'E_AGI_SOCKET_CLOSE':_0x4abc('0x5'),'E_AGI_SOCKET_TIMEOUT':'Socket\x20timeout.','E_AGI_COMMAND_EMPTY':_0x4abc('0x6'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0x4abc('0x7'),'E_AGI_IVR_ENTRY':_0x4abc('0x8')};function AGIError(_0x1a2de3){var _0x1a2de3=_0x1a2de3||null,_0x3c202a=_0x3c202a||[],_0x2ce3c6=0x1,_0x5b2a3c='';if(!error[_0x1a2de3]){_0x1a2de3=_0x4abc('0x9');}_0x3c202a[_0x4abc('0xa')](error[_0x1a2de3]);while(arguments[_0x2ce3c6]){_0x3c202a[_0x4abc('0xa')](arguments[_0x2ce3c6]);_0x2ce3c6++;}_0x5b2a3c=util[_0x4abc('0xb')][_0x4abc('0xc')](util,_0x3c202a);this[_0x4abc('0xd')]=_0x5b2a3c;this['name']=_0x1a2de3;}module[_0x4abc('0xe')]=AGIError;
\ No newline at end of file
index 0b04531..37e2a6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c9f=['getdigits','getsecretdigits','vertices','edges','numberOfEdges','prototype','addEdge','size','relations','traverseBFS','info','no\x20vertex\x20found','length','condition','split','agicommand','vswitch','target','default','default\x20on\x20switch\x20not\x20found','includes','max\x20retry\x20reach','condition\x20not\x20found','exports','lodash','agi'];(function(_0x67eb19,_0x4832d2){var _0x128079=function(_0x5bfa89){while(--_0x5bfa89){_0x67eb19['push'](_0x67eb19['shift']());}};_0x128079(++_0x4832d2);}(_0x6c9f,0x16a));var _0xf6c9=function(_0x4139b8,_0x554564){_0x4139b8=_0x4139b8-0x0;var _0x40c6d6=_0x6c9f[_0x4139b8];return _0x40c6d6;};'use strict';var _=require(_0xf6c9('0x0'));var logger=require('../../../config/logger')(_0xf6c9('0x1'));var verticesWithRetry=['menu',_0xf6c9('0x2'),_0xf6c9('0x3')];var Graph=function(){this[_0xf6c9('0x4')]={};this[_0xf6c9('0x5')]={};this[_0xf6c9('0x6')]=0x0;};Graph[_0xf6c9('0x7')]['addVertex']=function(_0x1e7f09){this[_0xf6c9('0x4')][_0x1e7f09['id']]=_0x1e7f09;this[_0xf6c9('0x5')][_0x1e7f09['id']]=[];};Graph[_0xf6c9('0x7')][_0xf6c9('0x8')]=function(_0x3d8579,_0x24901b,_0x105f16){this[_0xf6c9('0x5')][_0x3d8579]['push']({'target':_0x24901b,'condition':_0x105f16});this[_0xf6c9('0x6')]+=0x1;};Graph[_0xf6c9('0x7')][_0xf6c9('0x9')]=function(){return _[_0xf6c9('0x9')](this[_0xf6c9('0x4')]);};Graph[_0xf6c9('0x7')][_0xf6c9('0xa')]=function(){return this[_0xf6c9('0x6')];};Graph[_0xf6c9('0x7')]['getVertex']=function(_0x21923f){return this[_0xf6c9('0x4')][_0x21923f];};Graph[_0xf6c9('0x7')][_0xf6c9('0xb')]=function(_0x564e64,_0x5d7a24){if(!this[_0xf6c9('0x4')][_0x564e64]){return logger[_0xf6c9('0xc')](_0xf6c9('0xd'));}var _0x38a2f4=_0x5d7a24(this[_0xf6c9('0x4')][_0x564e64]);if(!_0x38a2f4){return logger[_0xf6c9('0xc')]('stop\x20traverse');}if(this['edges'][_0x564e64][_0xf6c9('0xe')]===0x0){return logger[_0xf6c9('0xc')]('no\x20edge/s\x20available');}for(var _0x2f9016=0x0,_0x32b541=[],_0x276b26=![];_0x2f9016<this[_0xf6c9('0x5')][_0x564e64][_0xf6c9('0xe')];_0x2f9016+=0x1){if(this[_0xf6c9('0x5')][_0x564e64][_0x2f9016]['condition']){_0x32b541=this[_0xf6c9('0x5')][_0x564e64][_0x2f9016][_0xf6c9('0xf')][_0xf6c9('0x10')](',');for(var _0x2ba234=0x0;_0x2ba234<_0x32b541[_0xf6c9('0xe')];_0x2ba234+=0x1){if(this[_0xf6c9('0x4')][_0x564e64][_0xf6c9('0x11')]===_0xf6c9('0x12')&&_0x32b541[_0x2ba234]==='-'){_0x276b26=this[_0xf6c9('0x5')][_0x564e64][_0x2f9016][_0xf6c9('0x13')];logger[_0xf6c9('0xc')](_0xf6c9('0x14'),_0x32b541[_0x2ba234],this['edges'][_0x564e64][_0x2f9016]['target']);}else if(this['vertices'][_0x564e64][_0xf6c9('0x11')]==='menu'&&_0x32b541[_0x2ba234]==='i'){_0x276b26=this[_0xf6c9('0x5')][_0x564e64][_0x2f9016][_0xf6c9('0x13')];logger[_0xf6c9('0xc')]('invalid',_0x32b541[_0x2ba234],this[_0xf6c9('0x5')][_0x564e64][_0x2f9016][_0xf6c9('0x13')]);}if(_0x32b541[_0x2ba234]===_0x38a2f4){return this[_0xf6c9('0xb')](this[_0xf6c9('0x5')][_0x564e64][_0x2f9016]['target'],_0x5d7a24);}}}else{return this[_0xf6c9('0xb')](this[_0xf6c9('0x5')][_0x564e64][_0x2f9016][_0xf6c9('0x13')],_0x5d7a24);}}if(_0x32b541[_0xf6c9('0xe')]){if(this['vertices'][_0x564e64][_0xf6c9('0x11')]==='vswitch'){if(_0x276b26){return this['traverseBFS'](_0x276b26,_0x5d7a24);}return logger[_0xf6c9('0xc')](_0xf6c9('0x15'));}else if(_[_0xf6c9('0x16')](verticesWithRetry,this['vertices'][_0x564e64]['agicommand'])){if(_0x38a2f4==='-'){return logger[_0xf6c9('0xc')](_0xf6c9('0x17'));}if(_0x276b26&&_0x38a2f4!=='t'){return this[_0xf6c9('0xb')](_0x276b26,_0x5d7a24);}return this[_0xf6c9('0xb')](_0x564e64,_0x5d7a24);}return logger[_0xf6c9('0xc')](_0xf6c9('0x18'));}};module[_0xf6c9('0x19')]=Graph;
\ No newline at end of file
+var _0xace9=['traverseBFS','default\x20on\x20switch\x20not\x20found','includes','max\x20retry\x20reach','condition\x20not\x20found','exports','lodash','../../../config/logger','menu','getsecretdigits','numberOfEdges','prototype','addVertex','vertices','addEdge','edges','size','getVertex','no\x20vertex\x20found','stop\x20traverse','length','info','no\x20edge/s\x20available','condition','split','vswitch','target','agicommand','invalid'];(function(_0x16ee51,_0x37bbb0){var _0x2a1682=function(_0x4ed8fc){while(--_0x4ed8fc){_0x16ee51['push'](_0x16ee51['shift']());}};_0x2a1682(++_0x37bbb0);}(_0xace9,0xd1));var _0x9ace=function(_0x3ed67f,_0x1e357e){_0x3ed67f=_0x3ed67f-0x0;var _0x3bcbf5=_0xace9[_0x3ed67f];return _0x3bcbf5;};'use strict';var _=require(_0x9ace('0x0'));var logger=require(_0x9ace('0x1'))('agi');var verticesWithRetry=[_0x9ace('0x2'),'getdigits',_0x9ace('0x3')];var Graph=function(){this['vertices']={};this['edges']={};this[_0x9ace('0x4')]=0x0;};Graph[_0x9ace('0x5')][_0x9ace('0x6')]=function(_0x4836c1){this[_0x9ace('0x7')][_0x4836c1['id']]=_0x4836c1;this['edges'][_0x4836c1['id']]=[];};Graph[_0x9ace('0x5')][_0x9ace('0x8')]=function(_0x36ec23,_0x16c0c9,_0x2f6228){this[_0x9ace('0x9')][_0x36ec23]['push']({'target':_0x16c0c9,'condition':_0x2f6228});this['numberOfEdges']+=0x1;};Graph['prototype'][_0x9ace('0xa')]=function(){return _['size'](this['vertices']);};Graph[_0x9ace('0x5')]['relations']=function(){return this[_0x9ace('0x4')];};Graph[_0x9ace('0x5')][_0x9ace('0xb')]=function(_0x10f414){return this['vertices'][_0x10f414];};Graph[_0x9ace('0x5')]['traverseBFS']=function(_0x505450,_0x974c38){if(!this[_0x9ace('0x7')][_0x505450]){return logger['info'](_0x9ace('0xc'));}var _0x217172=_0x974c38(this[_0x9ace('0x7')][_0x505450]);if(!_0x217172){return logger['info'](_0x9ace('0xd'));}if(this[_0x9ace('0x9')][_0x505450][_0x9ace('0xe')]===0x0){return logger[_0x9ace('0xf')](_0x9ace('0x10'));}for(var _0x214549=0x0,_0x18a69a=[],_0x53d582=![];_0x214549<this[_0x9ace('0x9')][_0x505450]['length'];_0x214549+=0x1){if(this[_0x9ace('0x9')][_0x505450][_0x214549][_0x9ace('0x11')]){_0x18a69a=this[_0x9ace('0x9')][_0x505450][_0x214549][_0x9ace('0x11')][_0x9ace('0x12')](',');for(var _0x1d8fdc=0x0;_0x1d8fdc<_0x18a69a[_0x9ace('0xe')];_0x1d8fdc+=0x1){if(this[_0x9ace('0x7')][_0x505450]['agicommand']===_0x9ace('0x13')&&_0x18a69a[_0x1d8fdc]==='-'){_0x53d582=this[_0x9ace('0x9')][_0x505450][_0x214549][_0x9ace('0x14')];logger['info']('default',_0x18a69a[_0x1d8fdc],this[_0x9ace('0x9')][_0x505450][_0x214549][_0x9ace('0x14')]);}else if(this[_0x9ace('0x7')][_0x505450][_0x9ace('0x15')]===_0x9ace('0x2')&&_0x18a69a[_0x1d8fdc]==='i'){_0x53d582=this[_0x9ace('0x9')][_0x505450][_0x214549][_0x9ace('0x14')];logger[_0x9ace('0xf')](_0x9ace('0x16'),_0x18a69a[_0x1d8fdc],this[_0x9ace('0x9')][_0x505450][_0x214549]['target']);}if(_0x18a69a[_0x1d8fdc]===_0x217172){return this[_0x9ace('0x17')](this[_0x9ace('0x9')][_0x505450][_0x214549][_0x9ace('0x14')],_0x974c38);}}}else{return this[_0x9ace('0x17')](this['edges'][_0x505450][_0x214549][_0x9ace('0x14')],_0x974c38);}}if(_0x18a69a['length']){if(this[_0x9ace('0x7')][_0x505450][_0x9ace('0x15')]===_0x9ace('0x13')){if(_0x53d582){return this[_0x9ace('0x17')](_0x53d582,_0x974c38);}return logger['info'](_0x9ace('0x18'));}else if(_[_0x9ace('0x19')](verticesWithRetry,this[_0x9ace('0x7')][_0x505450]['agicommand'])){if(_0x217172==='-'){return logger[_0x9ace('0xf')](_0x9ace('0x1a'));}if(_0x53d582&&_0x217172!=='t'){return this[_0x9ace('0x17')](_0x53d582,_0x974c38);}return this['traverseBFS'](_0x505450,_0x974c38);}return logger[_0x9ace('0xf')](_0x9ace('0x1b'));}};module[_0x9ace('0x1c')]=Graph;
\ No newline at end of file
index e13e345..b70b1da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6278=['gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','code','response','result','toString','agicommand\x20not\x20found','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','Project\x20%s\x20not\x20published','Project\x20%s\x20not\x20found','getLicense','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','./server','listening','xml2json','lodash','syncho','util','moment','../../config/logger','agi','../../config/license/util','./rpc','./mailRpc','./graph','./vertices','127.0.0.1','nextTick','error','stack','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','message','format','[%s]\x20%s','name','[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','dnid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','uniqueid','evtHangup','root','agicommand','hasOwnProperty','retry','maxRetry','addVertex','mxCell','length','source','addEdge','target','value','getSquareProject','catch','createSquareReport','then','agi_','substring','inspect','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','production','debug','joinAt','omit','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','start','clear','vertex'];(function(_0x88cd7b,_0x4c884c){var _0x56fcc8=function(_0x513b3d){while(--_0x513b3d){_0x88cd7b['push'](_0x88cd7b['shift']());}};_0x56fcc8(++_0x4c884c);}(_0x6278,0xc9));var _0x8627=function(_0x4b03d3,_0x32f1d2){_0x4b03d3=_0x4b03d3-0x0;var _0x58a968=_0x6278[_0x4b03d3];return _0x58a968;};'use strict';var parser=require(_0x8627('0x0'));var _=require(_0x8627('0x1'));var syncho=require(_0x8627('0x2'));var util=require(_0x8627('0x3'));var moment=require(_0x8627('0x4'));var config=require('../../config/environment');var logger=require(_0x8627('0x5'))(_0x8627('0x6'));var utilLicense=require(_0x8627('0x7'));var rpc=require(_0x8627('0x8'));var mailRpc=require(_0x8627('0x9'));var Graph=require(_0x8627('0xa'));var Vertices=require(_0x8627('0xb'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x8627('0x6')]=_['defaults'](config[_0x8627('0x6')],{'ip':_0x8627('0xc'),'port':0x11dd});function connectionHandler(_0x397662){process[_0x8627('0xd')](function(){syncho(function(){try{setChannelVariables(_0x397662);agiHandler(_0x397662);}catch(_0x247a5b){logger[_0x8627('0xe')](_0x247a5b[_0x8627('0xf')]);}});});}function listeningHandler(){console[_0x8627('0x10')](_0x8627('0x11'),config[_0x8627('0x6')][_0x8627('0x12')]);logger[_0x8627('0x13')](util['format']('[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d',config[_0x8627('0x6')]['ip'],config['agi'][_0x8627('0x12')]));}function errorHandler(_0x2d4305){if(_0x2d4305&&_0x2d4305['name']&&_0x2d4305[_0x8627('0x14')]){logger['error'](util[_0x8627('0x15')](_0x8627('0x16'),_0x2d4305[_0x8627('0x17')],_0x2d4305[_0x8627('0x14')]));}else{logger[_0x8627('0xe')](util[_0x8627('0x15')](_0x8627('0x18'),_0x2d4305[_0x8627('0xf')]));}}function closeHandler(){logger['info'](util[_0x8627('0x15')](_0x8627('0x19'),this[_0x8627('0x1a')],this[_0x8627('0x1b')],this[_0x8627('0x1c')],this[_0x8627('0x1d')],this['uniqueid']));try{createSquareReport(this);}catch(_0xcf0bd3){logger['error'](_0xcf0bd3[_0x8627('0xf')]);}}function timeoutHandler(){logger[_0x8627('0x13')](util[_0x8627('0x15')](_0x8627('0x1e'),this['arg_1'],this[_0x8627('0x1b')],this[_0x8627('0x1c')],this[_0x8627('0x1d')],this[_0x8627('0x1f')]));}function hangupHandler(){logger[_0x8627('0x13')](util[_0x8627('0x15')]('[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x8627('0x1a')],this['calleridname'],this[_0x8627('0x1c')],this['dnid'],this[_0x8627('0x1f')]));this[_0x8627('0x20')]=!![];}function getRoot(_0x2c2a02){return parser['toJson'](_0x2c2a02,{'object':!![]})['mxGraphModel'][_0x8627('0x21')];}function addVertex(_0x2f39fc,_0x33bb6c,_0x102f01){_0x33bb6c[_0x8627('0x22')]=_0x102f01;if(_0x33bb6c[_0x8627('0x23')](_0x8627('0x24'))){_0x33bb6c[_0x8627('0x25')]=parseInt(_0x33bb6c['retry'],0xa);}_0x2f39fc[_0x8627('0x26')](_['omit'](_0x33bb6c,_0x8627('0x27')));}function initGraph(_0x2a04b8,_0x25d8f3){var _0x418ef7=new Graph();for(var _0x2f6a3d in _0x2a04b8){if(_0x2a04b8[_0x8627('0x23')](_0x2f6a3d)){if(_['isArray'](_0x2a04b8[_0x2f6a3d])){for(var _0x4507da=0x0;_0x4507da<_0x2a04b8[_0x2f6a3d][_0x8627('0x28')];_0x4507da+=0x1){addVertex(_0x418ef7,_0x2a04b8[_0x2f6a3d][_0x4507da],_0x2f6a3d);}}else{addVertex(_0x418ef7,_0x2a04b8[_0x2f6a3d],_0x2f6a3d);}}}for(var _0x57c518=0x0;_0x57c518<_0x25d8f3[_0x8627('0x28')];_0x57c518+=0x1){if(_0x25d8f3[_0x57c518][_0x8627('0x29')]&&_0x25d8f3[_0x57c518]['target']){_0x418ef7[_0x8627('0x2a')](_0x25d8f3[_0x57c518]['source'],_0x25d8f3[_0x57c518][_0x8627('0x2b')],_0x25d8f3[_0x57c518][_0x8627('0x2c')]);}}return _0x418ef7;}function getSquareProject(_0x11da75,_0x4e442d){rpc[_0x8627('0x2d')](_0x11da75)['then'](function(_0x57639e){_0x4e442d(null,_0x57639e);})[_0x8627('0x2e')](function(_0x4d9645){_0x4e442d(null,_0x4d9645);});}function createSquareReport(_0x5ea56f,_0x132f37){rpc[_0x8627('0x2f')](_0x5ea56f)[_0x8627('0x30')](function(_0x12168f){if(_0x132f37){_0x132f37(null,_0x12168f);}})[_0x8627('0x2e')](function(_0x2cd4db){if(_0x132f37){_0x132f37(null,_0x2cd4db);}});}function setChannelVariables(_0x36a3ae){for(var _0x2318a5 in _0x36a3ae){if(_0x36a3ae['hasOwnProperty'](_0x2318a5)){if(_0x2318a5['indexOf'](_0x8627('0x31'))===0x0){_0x36a3ae[_0x2318a5[_0x8627('0x32')](0x4)]=_0x36a3ae[_0x2318a5];delete _0x36a3ae[_0x2318a5];}}}}function getLogFromObject(_0x5508a3){return util[_0x8627('0x33')](_0x5508a3,{'showHidden':![],'depth':null});}function agiHandler(_0x51b58a){var _0xbd9292,_0x5b4bfc,_0x47833f,_0x91220d,_0x16cb34;logger['debug'](_0x8627('0x34'),JSON[_0x8627('0x35')](_0x51b58a,null,0x2));logger['info'](util['format'](_0x8627('0x36'),_0x51b58a[_0x8627('0x1a')],_0x51b58a['calleridname'],_0x51b58a['callerid'],_0x51b58a[_0x8627('0x1d')],_0x51b58a['uniqueid']));_0x51b58a['on'](_0x8627('0xe'),errorHandler);_0x51b58a['on'](_0x8627('0x37'),closeHandler);_0x51b58a['on'](_0x8627('0x38'),timeoutHandler);_0x51b58a[_0x8627('0x20')]=![];_0x51b58a['on']('hangup',hangupHandler);var _0x5782c5=getSquareProject['sync'](null,_0x51b58a[_0x8627('0x1a')]);if(_0x5782c5){if(_0x5782c5[_0x8627('0x39')]){_0xbd9292=getRoot(_0x5782c5[_0x8627('0x39')]);if(_0xbd9292&&_0xbd9292['start']){logger[_0x8627('0x3a')]('root',JSON[_0x8627('0x35')](_0xbd9292,null,0x2));_0x51b58a[_0x8627('0x3b')]=moment()[_0x8627('0x15')]('YYYY-MM-DD\x20HH:mm:ss');_0x5b4bfc=initGraph(_[_0x8627('0x3c')](_0xbd9292,_0x8627('0x27')),_0xbd9292['mxCell']);_0x47833f=new Vertices(_0x51b58a,rpc,mailRpc);logger[_0x8627('0x13')](util[_0x8627('0x15')](_0x8627('0x3d'),_0x51b58a[_0x8627('0x1a')],_0x51b58a[_0x8627('0x1b')],_0x51b58a[_0x8627('0x1c')],_0x51b58a[_0x8627('0x1d')],_0x51b58a[_0x8627('0x1f')]));_0x5b4bfc[_0x8627('0x3e')](_0xbd9292[_0x8627('0x3f')]['id'],function(_0x30ae02){try{_0x30ae02=_0x47833f[_0x8627('0x40')](_0x30ae02);logger['debug'](_0x8627('0x41'),JSON[_0x8627('0x35')](_0x30ae02,null,0x2));if(_0x30ae02[_0x8627('0x22')]==='gotoc'){logger[_0x8627('0x13')](_0x8627('0x42'));_0x51b58a[_0x8627('0x43')]=_0x30ae02['context']||_0x51b58a['context'];_0x51b58a[_0x8627('0x44')]=_0x30ae02['extension'];_0x51b58a['priority']=_0x30ae02[_0x8627('0x45')]?_0x30ae02[_0x8627('0x45')]-0x1:0x1;return null;}else if(_0x30ae02&&_0x47833f[_0x30ae02['agicommand']]){_0x16cb34=_0x47833f[_0x30ae02[_0x8627('0x22')]](_0x30ae02);logger[_0x8627('0x13')]('response',JSON[_0x8627('0x35')](_0x16cb34,null,0x2));if(_0x16cb34&&_0x16cb34[_0x8627('0x46')]===AGI_CODE_SUCCESS&&_0x16cb34['result']!==AGI_RESULT_ERROR&&!_0x51b58a[_0x8627('0x20')]){logger[_0x8627('0x3a')](_0x8627('0x47'),getLogFromObject(_0x16cb34));return _['isUndefined'](_0x16cb34['result'])?null:_0x16cb34[_0x8627('0x48')][_0x8627('0x49')]();}else{logger['error'](_0x8627('0x47'),getLogFromObject(_0x16cb34));return null;}}else{logger[_0x8627('0xe')](_0x8627('0x4a'));return null;}}catch(_0xee2d13){logger['error'](_0xee2d13[_0x8627('0xf')]);return null;}});if(_0xbd9292[_0x8627('0x4b')]){logger[_0x8627('0x13')](util[_0x8627('0x15')](_0x8627('0x4c'),_0x51b58a['arg_1'],_0x51b58a[_0x8627('0x1b')],_0x51b58a['callerid'],_0x51b58a['dnid'],_0x51b58a[_0x8627('0x1f')]));_0x5b4bfc[_0x8627('0x3e')](_0xbd9292[_0x8627('0x4b')]['id'],function(_0x37505b){try{_0x37505b=_0x47833f[_0x8627('0x40')](_0x37505b);logger[_0x8627('0x3a')](_0x8627('0x41'),JSON[_0x8627('0x35')](_0x37505b,null,0x2));if(_0x37505b&&_0x47833f[_0x37505b[_0x8627('0x22')]]){_0x16cb34=_0x47833f[_0x37505b[_0x8627('0x22')]](_0x37505b);if(_0x16cb34){logger[_0x8627('0x3a')]('response',getLogFromObject(_0x16cb34));return _['isUndefined'](_0x16cb34['result'])?null:_0x16cb34[_0x8627('0x48')][_0x8627('0x49')]();}else{logger[_0x8627('0xe')]('response',getLogFromObject(_0x16cb34));return null;}}else{logger[_0x8627('0xe')](_0x8627('0x4a'));return null;}}catch(_0x2b7486){logger[_0x8627('0xe')](_0x2b7486['stack']);return null;}});}logger[_0x8627('0x13')](util[_0x8627('0x15')](_0x8627('0x4d'),_0x51b58a['arg_1'],_0x51b58a['calleridname'],_0x51b58a[_0x8627('0x1c')],_0x51b58a[_0x8627('0x1d')],_0x51b58a['uniqueid']));logger[_0x8627('0x13')](util[_0x8627('0x15')](_0x8627('0x4e'),_0x51b58a[_0x8627('0x43')],_0x51b58a[_0x8627('0x44')],parseInt(_0x51b58a[_0x8627('0x45')],0xa)+0x1));_0x51b58a[_0x8627('0x4f')](_0x51b58a[_0x8627('0x43')],_0x51b58a[_0x8627('0x44')],parseInt(_0x51b58a[_0x8627('0x45')],0xa)+0x1);_0x51b58a[_0x8627('0x37')]();}}else{logger[_0x8627('0xe')](util[_0x8627('0x15')](_0x8627('0x50'),_0x51b58a['arg_1']));_0x51b58a[_0x8627('0x4f')](_0x51b58a[_0x8627('0x43')],_0x51b58a[_0x8627('0x44')],parseInt(_0x51b58a[_0x8627('0x45')],0xa)+0x1);_0x51b58a[_0x8627('0x37')]();}}else{logger[_0x8627('0xe')](util[_0x8627('0x15')](_0x8627('0x51'),_0x51b58a['arg_1']));_0x51b58a['continueAt'](_0x51b58a['context'],_0x51b58a[_0x8627('0x44')],parseInt(_0x51b58a[_0x8627('0x45')],0xa)+0x1);_0x51b58a['close']();}}function main(){var _0x365465;return utilLicense[_0x8627('0x52')]()['then'](function(_0x458c6e){if(_0x458c6e){if(_0x458c6e['voice']){if(_0x458c6e[_0x8627('0x53')]&&_0x458c6e[_0x8627('0x53')]>0x0){logger[_0x8627('0x13')](util[_0x8627('0x15')](_0x8627('0x54'),_0x458c6e['callysquare']));_0x365465=_0x458c6e['callysquare'];}else{logger['info'](_0x8627('0x55'));}}else{logger[_0x8627('0x13')](_0x8627('0x56'));_0x365465=-0x1;}}})[_0x8627('0x2e')](function(_0x1beaf9){logger[_0x8627('0xe')]('[LICENSE]',_0x1beaf9[_0x8627('0xf')]);})['finally'](function(){var _0x34a97f=require(_0x8627('0x57'))(config[_0x8627('0x6')][_0x8627('0x12')],config['agi']['ip'],_0x365465);_0x34a97f['on']('error',errorHandler);_0x34a97f['on'](_0x8627('0x58'),listeningHandler);_0x34a97f['on']('connection',connectionHandler);_0x34a97f['on']('close',closeHandler);});}main();
\ No newline at end of file
+var _0xa897=['[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','toJson','mxGraphModel','root','agicommand','hasOwnProperty','retry','maxRetry','addVertex','omit','mxCell','isArray','length','source','target','value','getSquareProject','then','catch','createSquareReport','indexOf','substring','inspect','debug','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','hangup','sync','production','stringify','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','start','clear','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','response','code','result','agicommand\x20not\x20found','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','vertex','toString','[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','priority','continueAt','Project\x20%s\x20not\x20published','close','Project\x20%s\x20not\x20found','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]','listening','connection','xml2json','lodash','../../config/logger','agi','../../config/license/util','./rpc','./mailRpc','./vertices','defaults','127.0.0.1','nextTick','error','stack','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','message','[%s]\x20%s','[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','dnid','uniqueid','info','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s'];(function(_0x397dfb,_0x2373a1){var _0x39002f=function(_0x23748e){while(--_0x23748e){_0x397dfb['push'](_0x397dfb['shift']());}};_0x39002f(++_0x2373a1);}(_0xa897,0x97));var _0x7a89=function(_0x56f471,_0x37ab52){_0x56f471=_0x56f471-0x0;var _0x8ef2ab=_0xa897[_0x56f471];return _0x8ef2ab;};'use strict';var parser=require(_0x7a89('0x0'));var _=require(_0x7a89('0x1'));var syncho=require('syncho');var util=require('util');var moment=require('moment');var config=require('../../config/environment');var logger=require(_0x7a89('0x2'))(_0x7a89('0x3'));var utilLicense=require(_0x7a89('0x4'));var rpc=require(_0x7a89('0x5'));var mailRpc=require(_0x7a89('0x6'));var Graph=require('./graph');var Vertices=require(_0x7a89('0x7'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config['agi']=_[_0x7a89('0x8')](config[_0x7a89('0x3')],{'ip':_0x7a89('0x9'),'port':0x11dd});function connectionHandler(_0x55721f){process[_0x7a89('0xa')](function(){syncho(function(){try{setChannelVariables(_0x55721f);agiHandler(_0x55721f);}catch(_0x10a8cf){logger[_0x7a89('0xb')](_0x10a8cf[_0x7a89('0xc')]);}});});}function listeningHandler(){console[_0x7a89('0xd')](_0x7a89('0xe'),config[_0x7a89('0x3')][_0x7a89('0xf')]);logger['info'](util[_0x7a89('0x10')](_0x7a89('0x11'),config['agi']['ip'],config[_0x7a89('0x3')]['port']));}function errorHandler(_0x4fa441){if(_0x4fa441&&_0x4fa441['name']&&_0x4fa441[_0x7a89('0x12')]){logger['error'](util[_0x7a89('0x10')](_0x7a89('0x13'),_0x4fa441['name'],_0x4fa441[_0x7a89('0x12')]));}else{logger[_0x7a89('0xb')](util['format'](_0x7a89('0x14'),_0x4fa441[_0x7a89('0xc')]));}}function closeHandler(){logger['info'](util[_0x7a89('0x10')](_0x7a89('0x15'),this[_0x7a89('0x16')],this[_0x7a89('0x17')],this[_0x7a89('0x18')],this[_0x7a89('0x19')],this[_0x7a89('0x1a')]));try{createSquareReport(this);}catch(_0x16a3ec){logger[_0x7a89('0xb')](_0x16a3ec[_0x7a89('0xc')]);}}function timeoutHandler(){logger[_0x7a89('0x1b')](util['format'](_0x7a89('0x1c'),this[_0x7a89('0x16')],this[_0x7a89('0x17')],this[_0x7a89('0x18')],this[_0x7a89('0x19')],this[_0x7a89('0x1a')]));}function hangupHandler(){logger[_0x7a89('0x1b')](util[_0x7a89('0x10')](_0x7a89('0x1d'),this[_0x7a89('0x16')],this[_0x7a89('0x17')],this[_0x7a89('0x18')],this[_0x7a89('0x19')],this[_0x7a89('0x1a')]));this['evtHangup']=!![];}function getRoot(_0x185177){return parser[_0x7a89('0x1e')](_0x185177,{'object':!![]})[_0x7a89('0x1f')][_0x7a89('0x20')];}function addVertex(_0x1a2429,_0xa42ca2,_0x477cec){_0xa42ca2[_0x7a89('0x21')]=_0x477cec;if(_0xa42ca2[_0x7a89('0x22')](_0x7a89('0x23'))){_0xa42ca2[_0x7a89('0x24')]=parseInt(_0xa42ca2['retry'],0xa);}_0x1a2429[_0x7a89('0x25')](_[_0x7a89('0x26')](_0xa42ca2,_0x7a89('0x27')));}function initGraph(_0x4f6e06,_0x3e1706){var _0x5285f4=new Graph();for(var _0x57a79c in _0x4f6e06){if(_0x4f6e06['hasOwnProperty'](_0x57a79c)){if(_[_0x7a89('0x28')](_0x4f6e06[_0x57a79c])){for(var _0x51f787=0x0;_0x51f787<_0x4f6e06[_0x57a79c][_0x7a89('0x29')];_0x51f787+=0x1){addVertex(_0x5285f4,_0x4f6e06[_0x57a79c][_0x51f787],_0x57a79c);}}else{addVertex(_0x5285f4,_0x4f6e06[_0x57a79c],_0x57a79c);}}}for(var _0x3b33e0=0x0;_0x3b33e0<_0x3e1706[_0x7a89('0x29')];_0x3b33e0+=0x1){if(_0x3e1706[_0x3b33e0][_0x7a89('0x2a')]&&_0x3e1706[_0x3b33e0][_0x7a89('0x2b')]){_0x5285f4['addEdge'](_0x3e1706[_0x3b33e0][_0x7a89('0x2a')],_0x3e1706[_0x3b33e0][_0x7a89('0x2b')],_0x3e1706[_0x3b33e0][_0x7a89('0x2c')]);}}return _0x5285f4;}function getSquareProject(_0x1a3b00,_0x3b406b){rpc[_0x7a89('0x2d')](_0x1a3b00)[_0x7a89('0x2e')](function(_0x18e43a){_0x3b406b(null,_0x18e43a);})[_0x7a89('0x2f')](function(_0x386bc4){_0x3b406b(null,_0x386bc4);});}function createSquareReport(_0x88f503,_0x40f462){rpc[_0x7a89('0x30')](_0x88f503)['then'](function(_0x514961){if(_0x40f462){_0x40f462(null,_0x514961);}})[_0x7a89('0x2f')](function(_0x1dded2){if(_0x40f462){_0x40f462(null,_0x1dded2);}});}function setChannelVariables(_0x3e0075){for(var _0x32f97b in _0x3e0075){if(_0x3e0075[_0x7a89('0x22')](_0x32f97b)){if(_0x32f97b[_0x7a89('0x31')]('agi_')===0x0){_0x3e0075[_0x32f97b[_0x7a89('0x32')](0x4)]=_0x3e0075[_0x32f97b];delete _0x3e0075[_0x32f97b];}}}}function getLogFromObject(_0x1f4220){return util[_0x7a89('0x33')](_0x1f4220,{'showHidden':![],'depth':null});}function agiHandler(_0x22d77a){var _0x4bc3ec,_0x3a848b,_0x4d0995,_0x5a13f7,_0x312e5a;logger[_0x7a89('0x34')]('variables',JSON['stringify'](_0x22d77a,null,0x2));logger['info'](util[_0x7a89('0x10')](_0x7a89('0x35'),_0x22d77a[_0x7a89('0x16')],_0x22d77a['calleridname'],_0x22d77a[_0x7a89('0x18')],_0x22d77a[_0x7a89('0x19')],_0x22d77a['uniqueid']));_0x22d77a['on'](_0x7a89('0xb'),errorHandler);_0x22d77a['on']('close',closeHandler);_0x22d77a['on']('timeout',timeoutHandler);_0x22d77a[_0x7a89('0x36')]=![];_0x22d77a['on'](_0x7a89('0x37'),hangupHandler);var _0x37272e=getSquareProject[_0x7a89('0x38')](null,_0x22d77a[_0x7a89('0x16')]);if(_0x37272e){if(_0x37272e[_0x7a89('0x39')]){_0x4bc3ec=getRoot(_0x37272e[_0x7a89('0x39')]);if(_0x4bc3ec&&_0x4bc3ec['start']){logger[_0x7a89('0x34')](_0x7a89('0x20'),JSON[_0x7a89('0x3a')](_0x4bc3ec,null,0x2));_0x22d77a['joinAt']=moment()[_0x7a89('0x10')](_0x7a89('0x3b'));_0x3a848b=initGraph(_[_0x7a89('0x26')](_0x4bc3ec,_0x7a89('0x27')),_0x4bc3ec['mxCell']);_0x4d0995=new Vertices(_0x22d77a,rpc,mailRpc);logger[_0x7a89('0x1b')](util[_0x7a89('0x10')](_0x7a89('0x3c'),_0x22d77a['arg_1'],_0x22d77a[_0x7a89('0x17')],_0x22d77a[_0x7a89('0x18')],_0x22d77a[_0x7a89('0x19')],_0x22d77a[_0x7a89('0x1a')]));_0x3a848b[_0x7a89('0x3d')](_0x4bc3ec[_0x7a89('0x3e')]['id'],function(_0x68096d){try{_0x68096d=_0x4d0995[_0x7a89('0x3f')](_0x68096d);logger[_0x7a89('0x34')]('vertex',JSON[_0x7a89('0x3a')](_0x68096d,null,0x2));if(_0x68096d[_0x7a89('0x21')]===_0x7a89('0x40')){logger[_0x7a89('0x1b')](_0x7a89('0x41'));_0x22d77a[_0x7a89('0x42')]=_0x68096d[_0x7a89('0x42')]||_0x22d77a[_0x7a89('0x42')];_0x22d77a[_0x7a89('0x43')]=_0x68096d[_0x7a89('0x43')];_0x22d77a['priority']=_0x68096d['priority']?_0x68096d['priority']-0x1:0x1;return null;}else if(_0x68096d&&_0x4d0995[_0x68096d[_0x7a89('0x21')]]){_0x312e5a=_0x4d0995[_0x68096d[_0x7a89('0x21')]](_0x68096d);logger[_0x7a89('0x1b')](_0x7a89('0x44'),JSON[_0x7a89('0x3a')](_0x312e5a,null,0x2));if(_0x312e5a&&_0x312e5a[_0x7a89('0x45')]===AGI_CODE_SUCCESS&&_0x312e5a['result']!==AGI_RESULT_ERROR&&!_0x22d77a[_0x7a89('0x36')]){logger[_0x7a89('0x34')](_0x7a89('0x44'),getLogFromObject(_0x312e5a));return _['isUndefined'](_0x312e5a[_0x7a89('0x46')])?null:_0x312e5a['result']['toString']();}else{logger['error']('response',getLogFromObject(_0x312e5a));return null;}}else{logger[_0x7a89('0xb')](_0x7a89('0x47'));return null;}}catch(_0x1943da){logger[_0x7a89('0xb')](_0x1943da[_0x7a89('0xc')]);return null;}});if(_0x4bc3ec[_0x7a89('0x48')]){logger[_0x7a89('0x1b')](util[_0x7a89('0x10')](_0x7a89('0x49'),_0x22d77a[_0x7a89('0x16')],_0x22d77a[_0x7a89('0x17')],_0x22d77a[_0x7a89('0x18')],_0x22d77a[_0x7a89('0x19')],_0x22d77a['uniqueid']));_0x3a848b[_0x7a89('0x3d')](_0x4bc3ec[_0x7a89('0x48')]['id'],function(_0x49af3f){try{_0x49af3f=_0x4d0995[_0x7a89('0x3f')](_0x49af3f);logger[_0x7a89('0x34')](_0x7a89('0x4a'),JSON[_0x7a89('0x3a')](_0x49af3f,null,0x2));if(_0x49af3f&&_0x4d0995[_0x49af3f[_0x7a89('0x21')]]){_0x312e5a=_0x4d0995[_0x49af3f[_0x7a89('0x21')]](_0x49af3f);if(_0x312e5a){logger[_0x7a89('0x34')](_0x7a89('0x44'),getLogFromObject(_0x312e5a));return _['isUndefined'](_0x312e5a[_0x7a89('0x46')])?null:_0x312e5a['result'][_0x7a89('0x4b')]();}else{logger[_0x7a89('0xb')](_0x7a89('0x44'),getLogFromObject(_0x312e5a));return null;}}else{logger['error'](_0x7a89('0x47'));return null;}}catch(_0x1ad544){logger[_0x7a89('0xb')](_0x1ad544[_0x7a89('0xc')]);return null;}});}logger[_0x7a89('0x1b')](util[_0x7a89('0x10')](_0x7a89('0x4c'),_0x22d77a[_0x7a89('0x16')],_0x22d77a[_0x7a89('0x17')],_0x22d77a['callerid'],_0x22d77a[_0x7a89('0x19')],_0x22d77a['uniqueid']));logger[_0x7a89('0x1b')](util[_0x7a89('0x10')](_0x7a89('0x4d'),_0x22d77a['context'],_0x22d77a['extension'],parseInt(_0x22d77a[_0x7a89('0x4e')],0xa)+0x1));_0x22d77a[_0x7a89('0x4f')](_0x22d77a[_0x7a89('0x42')],_0x22d77a['extension'],parseInt(_0x22d77a[_0x7a89('0x4e')],0xa)+0x1);_0x22d77a['close']();}}else{logger[_0x7a89('0xb')](util[_0x7a89('0x10')](_0x7a89('0x50'),_0x22d77a[_0x7a89('0x16')]));_0x22d77a['continueAt'](_0x22d77a[_0x7a89('0x42')],_0x22d77a[_0x7a89('0x43')],parseInt(_0x22d77a[_0x7a89('0x4e')],0xa)+0x1);_0x22d77a[_0x7a89('0x51')]();}}else{logger[_0x7a89('0xb')](util[_0x7a89('0x10')](_0x7a89('0x52'),_0x22d77a[_0x7a89('0x16')]));_0x22d77a['continueAt'](_0x22d77a[_0x7a89('0x42')],_0x22d77a['extension'],parseInt(_0x22d77a[_0x7a89('0x4e')],0xa)+0x1);_0x22d77a['close']();}}function main(){var _0x9aaae8;return utilLicense['getLicense']()[_0x7a89('0x2e')](function(_0x4ece5e){if(_0x4ece5e){if(_0x4ece5e[_0x7a89('0x53')]){if(_0x4ece5e[_0x7a89('0x54')]&&_0x4ece5e[_0x7a89('0x54')]>0x0){logger[_0x7a89('0x1b')](util[_0x7a89('0x10')](_0x7a89('0x55'),_0x4ece5e[_0x7a89('0x54')]));_0x9aaae8=_0x4ece5e['callysquare'];}else{logger['info'](_0x7a89('0x56'));}}else{logger['info']('[LICENSE]\x20VOICE\x20IS\x20DISABLED');_0x9aaae8=-0x1;}}})[_0x7a89('0x2f')](function(_0x46cb0a){logger[_0x7a89('0xb')](_0x7a89('0x57'),_0x46cb0a[_0x7a89('0xc')]);})[_0x7a89('0x48')](function(){var _0x8c469f=require('./server')(config['agi'][_0x7a89('0xf')],config[_0x7a89('0x3')]['ip'],_0x9aaae8);_0x8c469f['on'](_0x7a89('0xb'),errorHandler);_0x8c469f['on'](_0x7a89('0x58'),listeningHandler);_0x8c469f['on'](_0x7a89('0x59'),connectionHandler);_0x8c469f['on'](_0x7a89('0x51'),closeHandler);});}main();
\ No newline at end of file
index e7ce2ef..67121c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe22=['SendMail','bluebird','client','request','then','error','message','result','catch','sendMailMessage'];(function(_0x1f1fbf,_0x21abb0){var _0x5d1869=function(_0x32cad5){while(--_0x32cad5){_0x1f1fbf['push'](_0x1f1fbf['shift']());}};_0x5d1869(++_0x21abb0);}(_0xfe22,0x1eb));var _0x2fe2=function(_0x3bc062,_0x5f20e6){_0x3bc062=_0x3bc062-0x0;var _0x3682ef=_0xfe22[_0x3bc062];return _0x3682ef;};'use strict';var BPromise=require(_0x2fe2('0x0'));var jayson=require('jayson/promise');var client=jayson[_0x2fe2('0x1')]['http']({'port':0x232b});function request(_0x2a0fa7,_0x2ec8cc){return new BPromise(function(_0x22233b,_0x159bea){return client[_0x2fe2('0x2')](_0x2a0fa7,_0x2ec8cc)[_0x2fe2('0x3')](function(_0x5df109){if(_0x5df109[_0x2fe2('0x4')]){return _0x159bea(_0x5df109[_0x2fe2('0x4')][_0x2fe2('0x5')]);}else{return _0x22233b(_0x5df109[_0x2fe2('0x6')]);}})[_0x2fe2('0x7')](function(_0x5c2b21){return _0x159bea(_0x5c2b21);});});}exports[_0x2fe2('0x8')]=function(_0x59ed40,_0x5698b2){return request(_0x2fe2('0x9'),{'account':_0x59ed40,'message':_0x5698b2});};
\ No newline at end of file
+var _0x2afd=['bluebird','request','then','error','message','catch','sendMailMessage','SendMail'];(function(_0x124c24,_0x13593a){var _0x5e4ec8=function(_0xa151fb){while(--_0xa151fb){_0x124c24['push'](_0x124c24['shift']());}};_0x5e4ec8(++_0x13593a);}(_0x2afd,0x68));var _0xd2af=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x2afd[_0x3ab51d];return _0x29a04e;};'use strict';var BPromise=require(_0xd2af('0x0'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232b});function request(_0x22b302,_0x5c4b7e){return new BPromise(function(_0x300284,_0x1cd75a){return client[_0xd2af('0x1')](_0x22b302,_0x5c4b7e)[_0xd2af('0x2')](function(_0x48be4b){if(_0x48be4b[_0xd2af('0x3')]){return _0x1cd75a(_0x48be4b[_0xd2af('0x3')][_0xd2af('0x4')]);}else{return _0x300284(_0x48be4b['result']);}})[_0xd2af('0x5')](function(_0x32890e){return _0x1cd75a(_0x32890e);});});}exports[_0xd2af('0x6')]=function(_0x32b8c7,_0x41cabf){return request(_0xd2af('0x7'),{'account':_0x32b8c7,'message':_0x41cabf});};
\ No newline at end of file
index 574797a..2c283ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10c4=['toString','indexOf','substring','length','split','slice','trim','emit','headers','exports','util','stream','call','_localBuffer','_inBody','prototype','_transform'];(function(_0x1f0d60,_0x58a2c2){var _0x148a20=function(_0x96e0a3){while(--_0x96e0a3){_0x1f0d60['push'](_0x1f0d60['shift']());}};_0x148a20(++_0x58a2c2);}(_0x10c4,0x109));var _0x410c=function(_0x4f79f2,_0x2a2085){_0x4f79f2=_0x4f79f2-0x0;var _0x1968d2=_0x10c4[_0x4f79f2];return _0x1968d2;};'use strict';var util=require(_0x410c('0x0'));var Transform=require(_0x410c('0x1'))['Transform'];function AGIReply(_0x474ad5){Transform[_0x410c('0x2')](this,_0x474ad5);this[_0x410c('0x3')]='';this[_0x410c('0x4')]=![];}util['inherits'](AGIReply,Transform);AGIReply[_0x410c('0x5')][_0x410c('0x6')]=function(_0x535164,_0x3d99df,_0x518935){var _0x34c9ff='\x0a',_0xb90c89=['\x0a\x0a','\x0d\x0a\x0d\x0a'],_0x540097=-0x1,_0x5a1ed3=-0x1,_0x1fcca8='',_0x30d2bb=0x0,_0x22ef62='',_0x4c0b23='';this[_0x410c('0x3')]+=_0x535164[_0x410c('0x7')]();_0x22ef62=this[_0x410c('0x3')];if(!this[_0x410c('0x4')]){_0x30d2bb=0x0;while(_0xb90c89[_0x30d2bb]){while((_0x5a1ed3=_0x22ef62[_0x410c('0x8')](_0xb90c89[_0x30d2bb]))!=-0x1){_0x1fcca8=_0xb90c89[_0x30d2bb];_0x4c0b23=_0x22ef62[_0x410c('0x9')](0x0,_0x5a1ed3);_0x22ef62=_0x22ef62[_0x410c('0x9')](_0x5a1ed3+_0x1fcca8[_0x410c('0xa')]);var _0x53e6a9=_0x4c0b23[_0x410c('0xb')](_0x34c9ff),_0x4922b4=0x0,_0x2d125d={},_0x3231c7='',_0x55cfd7='',_0x1b1908=-0x1;while(_0x53e6a9[_0x4922b4]){_0x1b1908=_0x53e6a9[_0x4922b4][_0x410c('0x8')](':');if(_0x1b1908!=-0x1){_0x3231c7=_0x53e6a9[_0x4922b4][_0x410c('0xc')](0x0,_0x1b1908)['trim']();_0x55cfd7=_0x53e6a9[_0x4922b4][_0x410c('0xc')](_0x1b1908+0x1)[_0x410c('0xd')]();if(_0x3231c7[_0x410c('0xa')]>0x0){_0x2d125d[_0x3231c7]=_0x55cfd7;}}else{}_0x4922b4++;}this[_0x410c('0xe')](_0x410c('0xf'),_0x2d125d);this['_inBody']=!![];}_0x30d2bb++;}this[_0x410c('0x3')]=_0x22ef62;}else{while((_0x540097=_0x22ef62[_0x410c('0x8')](_0x34c9ff))!=-0x1){_0x4c0b23=_0x22ef62[_0x410c('0x9')](0x0,_0x540097);this[_0x410c('0xe')]('line',_0x4c0b23);_0x22ef62=_0x22ef62[_0x410c('0x9')](_0x540097+_0x34c9ff[_0x410c('0xa')]);}this[_0x410c('0x3')]=_0x22ef62;}_0x518935();};module[_0x410c('0x10')]=AGIReply;
\ No newline at end of file
+var _0x3495=['emit','headers','exports','util','stream','Transform','call','_localBuffer','_inBody','inherits','prototype','\x0d\x0a\x0d\x0a','toString','substring','length','split','indexOf','slice','trim'];(function(_0x28ba65,_0x3c7b96){var _0x9a8f91=function(_0x4a5033){while(--_0x4a5033){_0x28ba65['push'](_0x28ba65['shift']());}};_0x9a8f91(++_0x3c7b96);}(_0x3495,0x1de));var _0x5349=function(_0x506731,_0x58d11c){_0x506731=_0x506731-0x0;var _0x1f5bf4=_0x3495[_0x506731];return _0x1f5bf4;};'use strict';var util=require(_0x5349('0x0'));var Transform=require(_0x5349('0x1'))[_0x5349('0x2')];function AGIReply(_0x42494c){Transform[_0x5349('0x3')](this,_0x42494c);this[_0x5349('0x4')]='';this[_0x5349('0x5')]=![];}util[_0x5349('0x6')](AGIReply,Transform);AGIReply[_0x5349('0x7')]['_transform']=function(_0x4034ba,_0x8283b5,_0x5ce2cd){var _0xcb5a1='\x0a',_0x538385=['\x0a\x0a',_0x5349('0x8')],_0x6fb5dc=-0x1,_0x529323=-0x1,_0x393873='',_0x583cee=0x0,_0x1751b2='',_0x3eaddf='';this[_0x5349('0x4')]+=_0x4034ba[_0x5349('0x9')]();_0x1751b2=this[_0x5349('0x4')];if(!this[_0x5349('0x5')]){_0x583cee=0x0;while(_0x538385[_0x583cee]){while((_0x529323=_0x1751b2['indexOf'](_0x538385[_0x583cee]))!=-0x1){_0x393873=_0x538385[_0x583cee];_0x3eaddf=_0x1751b2[_0x5349('0xa')](0x0,_0x529323);_0x1751b2=_0x1751b2['substring'](_0x529323+_0x393873[_0x5349('0xb')]);var _0x32b09b=_0x3eaddf[_0x5349('0xc')](_0xcb5a1),_0xcf06a8=0x0,_0x11d230={},_0x2f5172='',_0x3c592a='',_0x642966=-0x1;while(_0x32b09b[_0xcf06a8]){_0x642966=_0x32b09b[_0xcf06a8][_0x5349('0xd')](':');if(_0x642966!=-0x1){_0x2f5172=_0x32b09b[_0xcf06a8][_0x5349('0xe')](0x0,_0x642966)['trim']();_0x3c592a=_0x32b09b[_0xcf06a8][_0x5349('0xe')](_0x642966+0x1)[_0x5349('0xf')]();if(_0x2f5172['length']>0x0){_0x11d230[_0x2f5172]=_0x3c592a;}}else{}_0xcf06a8++;}this[_0x5349('0x10')](_0x5349('0x11'),_0x11d230);this[_0x5349('0x5')]=!![];}_0x583cee++;}this['_localBuffer']=_0x1751b2;}else{while((_0x6fb5dc=_0x1751b2['indexOf'](_0xcb5a1))!=-0x1){_0x3eaddf=_0x1751b2['substring'](0x0,_0x6fb5dc);this[_0x5349('0x10')]('line',_0x3eaddf);_0x1751b2=_0x1751b2[_0x5349('0xa')](_0x6fb5dc+_0xcb5a1['length']);}this[_0x5349('0x4')]=_0x1751b2;}_0x5ce2cd();};module[_0x5349('0x12')]=AGIReply;
\ No newline at end of file
index d175899..75ec67a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5853=['ShowSmsAccount','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','createSquareReport','merge','arg_1','arg_2','format','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','CreateSquareMessage','createCmContact','ShowCmHopper','phone','ListId','then','CreateCmContact','getPauseById','agentLogin','LoginUser','agentUnpause','UnpauseUser','LogoutUser','bluebird','moment','lodash','util','http','request','error','message','result','catch','getSquareProject','ShowSquareProject','production','getMailAccountById','ShowMailAccount','MailServerOut','Smtp','email','getSquareProjectById','name','ShowVoiceQueue','getVariableById','ShowVariable','getSquareOdbcById','ShowSquareOdbc','dsn','getUserById','ShowUser','ShowTrunk','ShowSound','ShowInterval','Interval','Intervals','getSmsAccountById'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5853,0x1f1));var _0x3585=function(_0x596de3,_0xf801c0){_0x596de3=_0x596de3-0x0;var _0xbf541f=_0x5853[_0x596de3];return _0xbf541f;};'use strict';var BPromise=require(_0x3585('0x0'));var moment=require(_0x3585('0x1'));var _=require(_0x3585('0x2'));var util=require(_0x3585('0x3'));var jayson=require('jayson/promise');var client=jayson['client'][_0x3585('0x4')]({'port':0x2329});function request(_0x3b4079,_0x284074){return new BPromise(function(_0x5cac28,_0x418720){return client[_0x3585('0x5')](_0x3b4079,_0x284074)['then'](function(_0x318d33){if(_0x318d33[_0x3585('0x6')]){return _0x418720(_0x318d33[_0x3585('0x6')][_0x3585('0x7')]);}else{return _0x5cac28(_0x318d33[_0x3585('0x8')]);}})[_0x3585('0x9')](function(_0x279287){return _0x418720(_0x279287);});});}exports[_0x3585('0xa')]=function(_0x18f9ca){return request(_0x3585('0xb'),{'options':{'raw':![],'where':{'name':_0x18f9ca},'attributes':[_0x3585('0xc')]}});};exports[_0x3585('0xd')]=function(_0xb5abe9){return request(_0x3585('0xe'),{'options':{'raw':![],'where':{'id':_0xb5abe9},'include':[{'model':_0x3585('0xf'),'as':_0x3585('0x10')}],'attributes':['id','name',_0x3585('0x11')]}});};exports[_0x3585('0x12')]=function(_0x2f7efa){return request(_0x3585('0xb'),{'options':{'where':{'id':_0x2f7efa},'attributes':[_0x3585('0x13')]}});};exports['getVoiceQueueById']=function(_0x393cd4){return request(_0x3585('0x14'),{'options':{'where':{'id':_0x393cd4},'attributes':[_0x3585('0x13')]}});};exports[_0x3585('0x15')]=function(_0x365861){return request(_0x3585('0x16'),{'options':{'where':{'id':_0x365861},'attributes':['name']}});};exports[_0x3585('0x17')]=function(_0x1c2d66){return request(_0x3585('0x18'),{'options':{'where':{'id':_0x1c2d66},'attributes':[_0x3585('0x19')]}});};exports[_0x3585('0x1a')]=function(_0x5cb954){return request(_0x3585('0x1b'),{'options':{'where':{'id':_0x5cb954},'attributes':['name']}});};exports['getTrunkById']=function(_0x21b991){return request(_0x3585('0x1c'),{'options':{'where':{'id':_0x21b991},'attributes':[_0x3585('0x13')]}});};exports['getSoundById']=function(_0x3fd434){return request(_0x3585('0x1d'),{'options':{'where':{'id':_0x3fd434},'attributes':['save_name']}});};exports['getIntervalById']=function(_0x5aa96a){return request(_0x3585('0x1e'),{'options':{'raw':![],'where':{'id':_0x5aa96a},'include':[{'model':_0x3585('0x1f'),'as':_0x3585('0x20')}]}});};exports[_0x3585('0x21')]=function(_0x178876){return request(_0x3585('0x22'),{'options':{'where':{'id':_0x178876},'attributes':['id',_0x3585('0x13')]}});};exports[_0x3585('0x23')]=function(_0x44ef6b){return request(_0x3585('0x24'),{'body':_0x44ef6b});};exports[_0x3585('0x25')]=function(_0x2df5ec){return request(_0x3585('0x26'),{'body':_0x2df5ec});};exports[_0x3585('0x27')]=function(_0x253f66){return request('CreateSquareReport',{'body':_[_0x3585('0x28')](_0x253f66,{'project_name':_0x253f66[_0x3585('0x29')],'prev_project_name':_0x253f66[_0x3585('0x2a')]||'','is_subproject':_0x253f66[_0x3585('0x2a')]?!![]:![],'leaveAt':moment()[_0x3585('0x2b')](_0x3585('0x2c'))})});};exports[_0x3585('0x2d')]=function(_0x4ed1fb){return request('CreateSquareRecording',{'body':_0x4ed1fb});};exports['createSquareMessage']=function(_0x337fbd){return request(_0x3585('0x2e'),{'body':_0x337fbd});};exports[_0x3585('0x2f')]=function(_0x1e60c8){return request(_0x3585('0x30'),{'options':{'raw':![],'where':{'phone':_0x1e60c8[_0x3585('0x31')],'ListId':_0x1e60c8[_0x3585('0x32')]}}})[_0x3585('0x33')](function(_0x9fd7b){if(_0x9fd7b){return _0x9fd7b;}return request(_0x3585('0x34'),{'body':_0x1e60c8});});};exports[_0x3585('0x35')]=function(_0xf85472){return request('ShowPause',{'options':{'where':{'id':_0xf85472},'attributes':[_0x3585('0x13')]}});};exports[_0x3585('0x36')]=function(_0x4b1089,_0x5f4148){return request(_0x3585('0x37'),{'body':{'interface':_0x5f4148},'options':{'where':_0x4b1089}});};exports['agentPause']=function(_0x5e62fa,_0x28e5cd,_0x207b10){return request('PauseUser',{'body':{'type':_0x28e5cd,'uniqueid':_0x207b10},'options':{'where':_0x5e62fa}});};exports[_0x3585('0x38')]=function(_0x129dc5){return request(_0x3585('0x39'),{'body':{},'options':{'where':_0x129dc5}});};exports['agentLogout']=function(_0x4aea52){return request(_0x3585('0x3a'),{'body':{},'options':{'where':_0x4aea52}});};
\ No newline at end of file
+var _0x219f=['CreateSquareDetailsReport','createSquareReport','merge','arg_1','arg_2','format','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','CreateSquareRecording','createSquareMessage','createCmContact','ShowCmHopper','phone','getPauseById','ShowPause','LoginUser','agentPause','PauseUser','UnpauseUser','agentLogout','LogoutUser','bluebird','moment','util','jayson/promise','client','http','then','error','message','getSquareProject','ShowSquareProject','getMailAccountById','ShowMailAccount','MailServerOut','Smtp','name','email','getSquareProjectById','getVoiceQueueById','ShowVoiceQueue','getVariableById','ShowVariable','getSquareOdbcById','dsn','getUserById','ShowUser','ShowTrunk','getSoundById','save_name','getIntervalById','ShowInterval','Interval','getSmsAccountById','ShowSmsAccount','createSmsMessage','CreateSmsMessage'];(function(_0x4a1b7d,_0x353256){var _0x429b4c=function(_0x4c881c){while(--_0x4c881c){_0x4a1b7d['push'](_0x4a1b7d['shift']());}};_0x429b4c(++_0x353256);}(_0x219f,0xf9));var _0xf219=function(_0x1543df,_0x223f34){_0x1543df=_0x1543df-0x0;var _0x84cff4=_0x219f[_0x1543df];return _0x84cff4;};'use strict';var BPromise=require(_0xf219('0x0'));var moment=require(_0xf219('0x1'));var _=require('lodash');var util=require(_0xf219('0x2'));var jayson=require(_0xf219('0x3'));var client=jayson[_0xf219('0x4')][_0xf219('0x5')]({'port':0x2329});function request(_0x1066b0,_0x374a79){return new BPromise(function(_0x26ab55,_0x42cc98){return client['request'](_0x1066b0,_0x374a79)[_0xf219('0x6')](function(_0x14413c){if(_0x14413c[_0xf219('0x7')]){return _0x42cc98(_0x14413c[_0xf219('0x7')][_0xf219('0x8')]);}else{return _0x26ab55(_0x14413c['result']);}})['catch'](function(_0x2ed0e2){return _0x42cc98(_0x2ed0e2);});});}exports[_0xf219('0x9')]=function(_0x238e84){return request(_0xf219('0xa'),{'options':{'raw':![],'where':{'name':_0x238e84},'attributes':['production']}});};exports[_0xf219('0xb')]=function(_0x41b088){return request(_0xf219('0xc'),{'options':{'raw':![],'where':{'id':_0x41b088},'include':[{'model':_0xf219('0xd'),'as':_0xf219('0xe')}],'attributes':['id',_0xf219('0xf'),_0xf219('0x10')]}});};exports[_0xf219('0x11')]=function(_0x151c66){return request(_0xf219('0xa'),{'options':{'where':{'id':_0x151c66},'attributes':[_0xf219('0xf')]}});};exports[_0xf219('0x12')]=function(_0x457b35){return request(_0xf219('0x13'),{'options':{'where':{'id':_0x457b35},'attributes':[_0xf219('0xf')]}});};exports[_0xf219('0x14')]=function(_0x3c6af4){return request(_0xf219('0x15'),{'options':{'where':{'id':_0x3c6af4},'attributes':[_0xf219('0xf')]}});};exports[_0xf219('0x16')]=function(_0x4cb985){return request('ShowSquareOdbc',{'options':{'where':{'id':_0x4cb985},'attributes':[_0xf219('0x17')]}});};exports[_0xf219('0x18')]=function(_0x2af99c){return request(_0xf219('0x19'),{'options':{'where':{'id':_0x2af99c},'attributes':[_0xf219('0xf')]}});};exports['getTrunkById']=function(_0x2a6315){return request(_0xf219('0x1a'),{'options':{'where':{'id':_0x2a6315},'attributes':[_0xf219('0xf')]}});};exports[_0xf219('0x1b')]=function(_0x5756e9){return request('ShowSound',{'options':{'where':{'id':_0x5756e9},'attributes':[_0xf219('0x1c')]}});};exports[_0xf219('0x1d')]=function(_0x13816a){return request(_0xf219('0x1e'),{'options':{'raw':![],'where':{'id':_0x13816a},'include':[{'model':_0xf219('0x1f'),'as':'Intervals'}]}});};exports[_0xf219('0x20')]=function(_0x932d03){return request(_0xf219('0x21'),{'options':{'where':{'id':_0x932d03},'attributes':['id','name']}});};exports[_0xf219('0x22')]=function(_0x400106){return request(_0xf219('0x23'),{'body':_0x400106});};exports['createSquareDetailsReport']=function(_0x2011f8){return request(_0xf219('0x24'),{'body':_0x2011f8});};exports[_0xf219('0x25')]=function(_0x31aa15){return request('CreateSquareReport',{'body':_[_0xf219('0x26')](_0x31aa15,{'project_name':_0x31aa15[_0xf219('0x27')],'prev_project_name':_0x31aa15[_0xf219('0x28')]||'','is_subproject':_0x31aa15[_0xf219('0x28')]?!![]:![],'leaveAt':moment()[_0xf219('0x29')](_0xf219('0x2a'))})});};exports[_0xf219('0x2b')]=function(_0x3340e4){return request(_0xf219('0x2c'),{'body':_0x3340e4});};exports[_0xf219('0x2d')]=function(_0x45e80d){return request('CreateSquareMessage',{'body':_0x45e80d});};exports[_0xf219('0x2e')]=function(_0x570048){return request(_0xf219('0x2f'),{'options':{'raw':![],'where':{'phone':_0x570048[_0xf219('0x30')],'ListId':_0x570048['ListId']}}})['then'](function(_0x460ef8){if(_0x460ef8){return _0x460ef8;}return request('CreateCmContact',{'body':_0x570048});});};exports[_0xf219('0x31')]=function(_0x2b1778){return request(_0xf219('0x32'),{'options':{'where':{'id':_0x2b1778},'attributes':[_0xf219('0xf')]}});};exports['agentLogin']=function(_0x3be718,_0x5ae860){return request(_0xf219('0x33'),{'body':{'interface':_0x5ae860},'options':{'where':_0x3be718}});};exports[_0xf219('0x34')]=function(_0x26713e,_0x1cd4c7,_0x3de3b3){return request(_0xf219('0x35'),{'body':{'type':_0x1cd4c7,'uniqueid':_0x3de3b3},'options':{'where':_0x26713e}});};exports['agentUnpause']=function(_0x177830){return request(_0xf219('0x36'),{'body':{},'options':{'where':_0x177830}});};exports[_0xf219('0x37')]=function(_0x1addbe){return request(_0xf219('0x38'),{'body':{},'options':{'where':_0x1addbe}});};
\ No newline at end of file
index 5c5eef3..907a0e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21cd=['exports','./polly','./lex'];(function(_0x3c9cab,_0x5f06de){var _0x2e7f50=function(_0x2c54cf){while(--_0x2c54cf){_0x3c9cab['push'](_0x3c9cab['shift']());}};_0x2e7f50(++_0x5f06de);}(_0x21cd,0x6a));var _0xd21c=function(_0x4e7d25,_0x58285f){_0x4e7d25=_0x4e7d25-0x0;var _0x526fe6=_0x21cd[_0x4e7d25];return _0x526fe6;};var polly=require(_0xd21c('0x0'));var lex=require(_0xd21c('0x1'));module[_0xd21c('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0xf435=['./lex','exports'];(function(_0x28c1c0,_0x2398aa){var _0x2ff1e3=function(_0x23dfb3){while(--_0x23dfb3){_0x28c1c0['push'](_0x28c1c0['shift']());}};_0x2ff1e3(++_0x2398aa);}(_0xf435,0x174));var _0x5f43=function(_0x4b4e32,_0x17e374){_0x4b4e32=_0x4b4e32-0x0;var _0x291f8b=_0xf435[_0x4b4e32];return _0x291f8b;};var polly=require('./polly');var lex=require(_0x5f43('0x0'));module[_0x5f43('0x1')]={'polly':polly,'lex':lex};
\ No newline at end of file
index 20aaa45..1694d46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec56=['./lib/api'];(function(_0x5eb22e,_0x27cbac){var _0x27fed5=function(_0x565467){while(--_0x565467){_0x5eb22e['push'](_0x5eb22e['shift']());}};_0x27fed5(++_0x27cbac);}(_0xec56,0x1bd));var _0x6ec5=function(_0x15b8c3,_0x5974f7){_0x15b8c3=_0x15b8c3-0x0;var _0x2fb3e9=_0xec56[_0x15b8c3];return _0x2fb3e9;};'use strict';var lex=require(_0x6ec5('0x0'));module['exports']=function(_0x4d6dcd,_0x10a273,_0x3b8a3f,_0x26a5af,_0x240ccf,_0x43c2cd){return lex(_0x4d6dcd,_0x10a273,_0x3b8a3f,_0x26a5af,_0x240ccf,_0x43c2cd);};
\ No newline at end of file
+var _0xe5b5=['exports','./lib/api'];(function(_0x1e63c0,_0x234bab){var _0x1ed2b6=function(_0x91e31f){while(--_0x91e31f){_0x1e63c0['push'](_0x1e63c0['shift']());}};_0x1ed2b6(++_0x234bab);}(_0xe5b5,0x12b));var _0x5e5b=function(_0x49c057,_0xc808ed){_0x49c057=_0x49c057-0x0;var _0xd8f0e6=_0xe5b5[_0x49c057];return _0xd8f0e6;};'use strict';var lex=require(_0x5e5b('0x0'));module[_0x5e5b('0x1')]=function(_0x418c87,_0x3b3efd,_0x208070,_0x4263e,_0x33e813,_0x3dc763){return lex(_0x418c87,_0x3b3efd,_0x208070,_0x4263e,_0x33e813,_0x3dc763);};
\ No newline at end of file
index 0a89abd..4e37eea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x4a4d2f,_0x33fd37){var _0x36ffc0=function(_0x4bd6ba){while(--_0x4bd6ba){_0x4a4d2f['push'](_0x4a4d2f['shift']());}};_0x36ffc0(++_0x33fd37);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0xa9e0[_0x3054be];return _0x3df150;};'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(_0x1adbfd,_0x281747){var _0x19c754=function(_0x2bf78d){while(--_0x2bf78d){_0x1adbfd['push'](_0x1adbfd['shift']());}};_0x19c754(++_0x281747);}(_0xa9e0,0x123));var _0x0a9e=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0xa9e0[_0x25bea7];return _0x175952;};'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 12669ee..e714956 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf307=['exports','./lib/api'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf307,0x11b));var _0x7f30=function(_0xfbceb4,_0x392f3b){_0xfbceb4=_0xfbceb4-0x0;var _0x563dbe=_0xf307[_0xfbceb4];return _0x563dbe;};'use strict';var polly=require(_0x7f30('0x0'));module[_0x7f30('0x1')]=function(_0x300d94,_0x53c459,_0x35f864,_0x36c42a,_0x4ffec2,_0x1ea4af,_0xee5f7b){return polly(_0x300d94,_0x53c459,_0x35f864,_0x36c42a,_0x4ffec2,_0x1ea4af,_0xee5f7b);};
\ No newline at end of file
+var _0x12bd=['exports','./lib/api'];(function(_0x21b3ab,_0x432c2e){var _0x3d5f1e=function(_0x35fbb0){while(--_0x35fbb0){_0x21b3ab['push'](_0x21b3ab['shift']());}};_0x3d5f1e(++_0x432c2e);}(_0x12bd,0x135));var _0xd12b=function(_0x1b0c8c,_0x486222){_0x1b0c8c=_0x1b0c8c-0x0;var _0x2e67c9=_0x12bd[_0x1b0c8c];return _0x2e67c9;};'use strict';var polly=require(_0xd12b('0x0'));module[_0xd12b('0x1')]=function(_0x592203,_0x32796d,_0x1584d8,_0x112e6e,_0xd290ce,_0x4a70fb,_0x438b45){return polly(_0x592203,_0x32796d,_0x1584d8,_0x112e6e,_0xd290ce,_0x4a70fb,_0x438b45);};
\ No newline at end of file
index 83b5902..f8decbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8dd9=['randomstring','synthesizeSpeech','AudioStream','writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','Polly','text'];(function(_0x214266,_0x1f6f52){var _0x568f75=function(_0x541904){while(--_0x541904){_0x214266['push'](_0x214266['shift']());}};_0x568f75(++_0x1f6f52);}(_0x8dd9,0x1b9));var _0x98dd=function(_0x163000,_0x4ee91){_0x163000=_0x163000-0x0;var _0xacd5af=_0x8dd9[_0x163000];return _0xacd5af;};'use strict';var fs=require('fs');var path=require('path');var BPromise=require('bluebird');var rs=require(_0x98dd('0x0'));var AWS=require('aws-sdk');function pollyResult(_0xdf9460,_0x4dc56d,_0x4b6592){return new BPromise(function(_0xcd80eb,_0x4c90f7){_0xdf9460[_0x98dd('0x1')](_0x4dc56d,function(_0x30e428,_0x5a73cb){if(_0x30e428){_0x4c90f7(_0x30e428);}else if(_0x5a73cb){if(_0x5a73cb[_0x98dd('0x2')]instanceof Buffer){fs[_0x98dd('0x3')](_0x4b6592,_0x5a73cb[_0x98dd('0x2')],function(_0xc2d958){if(_0xc2d958){_0x4c90f7(_0xc2d958);}else{_0xcd80eb();}});}else{_0x4c90f7(new Error(_0x98dd('0x4')));}}else{_0x4c90f7(new Error(_0x98dd('0x5')));}});});}module[_0x98dd('0x6')]=function(_0x443758,_0x333f58,_0x1823cd,_0x44f441,_0x31c3bb,_0x22673a,_0x3fa544){var _0x1e4e76=new AWS[(_0x98dd('0x7'))]({'accessKeyId':_0x443758,'secretAccessKey':_0x333f58,'region':_0x1823cd});var _0x5d75ba={'Text':_0x31c3bb,'TextType':_0x22673a||_0x98dd('0x8'),'OutputFormat':'mp3','VoiceId':_0x44f441};return pollyResult(_0x1e4e76,_0x5d75ba,_0x3fa544);};
\ No newline at end of file
+var _0x1dc9=['No\x20data\x20response\x20from\x20aws\x20Polly!','exports','mp3','path','bluebird','randomstring','aws-sdk','synthesizeSpeech','writeFile'];(function(_0x3dabc0,_0x1c0f3e){var _0x5a3550=function(_0x214f57){while(--_0x214f57){_0x3dabc0['push'](_0x3dabc0['shift']());}};_0x5a3550(++_0x1c0f3e);}(_0x1dc9,0x8a));var _0x91dc=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x1dc9[_0x14add3];return _0x4a174f;};'use strict';var fs=require('fs');var path=require(_0x91dc('0x0'));var BPromise=require(_0x91dc('0x1'));var rs=require(_0x91dc('0x2'));var AWS=require(_0x91dc('0x3'));function pollyResult(_0x1ca601,_0x5d8134,_0x418fb3){return new BPromise(function(_0x4110a0,_0x236ffb){_0x1ca601[_0x91dc('0x4')](_0x5d8134,function(_0x15331c,_0x698171){if(_0x15331c){_0x236ffb(_0x15331c);}else if(_0x698171){if(_0x698171['AudioStream']instanceof Buffer){fs[_0x91dc('0x5')](_0x418fb3,_0x698171['AudioStream'],function(_0x278a4d){if(_0x278a4d){_0x236ffb(_0x278a4d);}else{_0x4110a0();}});}else{_0x236ffb(new Error('Invalid\x20data\x20response\x20from\x20aws\x20Polly!'));}}else{_0x236ffb(new Error(_0x91dc('0x6')));}});});}module[_0x91dc('0x7')]=function(_0x5c907d,_0x41eafd,_0x546100,_0x50248e,_0x3f87bf,_0x1390ca,_0x41f056){var _0x493b72=new AWS['Polly']({'accessKeyId':_0x5c907d,'secretAccessKey':_0x41eafd,'region':_0x546100});var _0x1020a2={'Text':_0x3f87bf,'TextType':_0x1390ca||'text','OutputFormat':_0x91dc('0x8'),'VoiceId':_0x50248e};return pollyResult(_0x493b72,_0x1020a2,_0x41f056);};
\ No newline at end of file
index 570e9e3..04a1a8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x019e=['./lib/api','exports'];(function(_0x20732c,_0xae22d){var _0x3fd9c1=function(_0x28ae21){while(--_0x28ae21){_0x20732c['push'](_0x20732c['shift']());}};_0x3fd9c1(++_0xae22d);}(_0x019e,0x13a));var _0xe019=function(_0x40aa28,_0x471669){_0x40aa28=_0x40aa28-0x0;var _0x415534=_0x019e[_0x40aa28];return _0x415534;};'use strict';var asr=require(_0xe019('0x0'));module[_0xe019('0x1')]=function(_0x4696bf,_0x3046da,_0x372bfd,_0x1da7d5){return asr(_0x4696bf,_0x3046da,_0x372bfd);};
\ No newline at end of file
+var _0x59f7=['./lib/api','exports'];(function(_0x39e730,_0x2cde9a){var _0x311b69=function(_0x416a13){while(--_0x416a13){_0x39e730['push'](_0x39e730['shift']());}};_0x311b69(++_0x2cde9a);}(_0x59f7,0x178));var _0x759f=function(_0x2cab93,_0x10e31c){_0x2cab93=_0x2cab93-0x0;var _0x50de52=_0x59f7[_0x2cab93];return _0x50de52;};'use strict';var asr=require(_0x759f('0x0'));module[_0x759f('0x1')]=function(_0x1a1954,_0x4dbcc5,_0x3a8c06,_0x30e2ff){return asr(_0x1a1954,_0x4dbcc5,_0x3a8c06);};
\ No newline at end of file
index 19e6144..65e450d 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(_0x15318c,_0x2e50e4){var _0x10d3ce=function(_0x2fecdd){while(--_0x2fecdd){_0x15318c['push'](_0x15318c['shift']());}};_0x10d3ce(++_0x2e50e4);}(_0x48ea,0x9c));var _0xa48e=function(_0x479ddb,_0x4b2927){_0x479ddb=_0x479ddb-0x0;var _0xd9f0fa=_0x48ea[_0x479ddb];return _0xd9f0fa;};'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 _0x8b7c=['length','key\x20should\x20be\x20a\x20string','undefined','readFileSync','base64','POST','/v1/speech:recognize?key=','LINEAR16','url','bluebird','https://speech.googleapis.com','exports','string'];(function(_0x297eea,_0x5060be){var _0x1c42d2=function(_0x3afff4){while(--_0x3afff4){_0x297eea['push'](_0x297eea['shift']());}};_0x1c42d2(++_0x5060be);}(_0x8b7c,0x119));var _0xc8b7=function(_0x369a41,_0x5ed95c){_0x369a41=_0x369a41-0x0;var _0x16807d=_0x8b7c[_0x369a41];return _0x16807d;};'use strict';var url=require(_0xc8b7('0x0'));var BPromise=require(_0xc8b7('0x1'));var fs=require('fs');var host=_0xc8b7('0x2');module[_0xc8b7('0x3')]=function(_0x2473cc,_0x47766d,_0x47089d){return new BPromise(function(_0x201c49,_0x4f66ab){var _0x85fa34;if(typeof _0x2473cc!==_0xc8b7('0x4')||_0x2473cc[_0xc8b7('0x5')]===0x0){return _0x4f66ab('filepath\x20should\x20be\x20a\x20string');}if(typeof _0x47766d!==_0xc8b7('0x4')||_0x47766d[_0xc8b7('0x5')]===0x0){return _0x4f66ab(_0xc8b7('0x6'));}if(typeof _0x47089d!==_0xc8b7('0x7')&&(typeof _0x47089d!==_0xc8b7('0x4')||_0x47089d[_0xc8b7('0x5')]===0x0)){return _0x4f66ab('lang\x20should\x20be\x20a\x20string');}try{_0x85fa34=fs[_0xc8b7('0x8')](_0x2473cc)['toString'](_0xc8b7('0x9'));}catch(_0xf69f1f){return _0x4f66ab(_0xf69f1f);}return _0x201c49({'method':_0xc8b7('0xa'),'uri':host+_0xc8b7('0xb')+_0x47766d,'body':{'config':{'encoding':_0xc8b7('0xc'),'sampleRateHertz':'8000','languageCode':_0x47089d},'audio':{'content':_0x85fa34}},'json':!![]});});};
\ No newline at end of file
index 63b2c7a..e69668f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03e0=['exports','./asr'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x03e0,0x1bf));var _0x003e=function(_0x1f2033,_0x4484b8){_0x1f2033=_0x1f2033-0x0;var _0x44f104=_0x03e0[_0x1f2033];return _0x44f104;};var asr=require(_0x003e('0x0'));module[_0x003e('0x1')]={'asr':asr};
\ No newline at end of file
+var _0x2c21=['exports'];(function(_0x25ea6c,_0x497f36){var _0x1ce894=function(_0x370066){while(--_0x370066){_0x25ea6c['push'](_0x25ea6c['shift']());}};_0x1ce894(++_0x497f36);}(_0x2c21,0x1b6));var _0x12c2=function(_0xcd4d8e,_0x1fc2fd){_0xcd4d8e=_0xcd4d8e-0x0;var _0x1c3c61=_0x2c21[_0xcd4d8e];return _0x1c3c61;};var asr=require('./asr');module[_0x12c2('0x0')]={'asr':asr};
\ No newline at end of file
index 67bc161..5594b9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e8f=['request-promise','randomstring','sox','google-tts-api','url','parse','util','./aws','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','https:','host','path','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','finish','finish\x20download\x20file','close','unlink','download\x20error','protocol','WHAT_EVER','data','end','transcode','wav','error\x20convert','finish\x20to\x20convert','resolve','tmp','generate','.wav','writeFileSync','base64','777','readFileSync','toString','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','MP3','text:synthesize','POST','then','.mp3','from','audioContent','writeFile','chmodSync','info','googleCloudTTS\x20path','split','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','f.req=','stringify','null','slice','parse\x20response\x20failed:\x0a','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','catch','name','googleDialogflow','textRequest','result','source','resolvedQuery','action','actionIncomplete','score','status','code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','fulfillmentText','intent','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20confidence','awsPolly','polly','awsLex','lex','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','sestekNDA','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','audiofile','dirName','apiai-promise','http','md5','querystring'];(function(_0x5dcdc7,_0x3c8e6b){var _0x13ab40=function(_0x2236a6){while(--_0x2236a6){_0x5dcdc7['push'](_0x5dcdc7['shift']());}};_0x13ab40(++_0x3c8e6b);}(_0x9e8f,0x1a0));var _0xf9e8=function(_0x420b45,_0x1bc16e){_0x420b45=_0x420b45-0x0;var _0x287e37=_0x9e8f[_0x420b45];return _0x287e37;};'use strict';var apiai=require(_0xf9e8('0x0'));var BPromise=require('bluebird');var dialogflow=require('dialogflow');var fs=require('fs');var http=require(_0xf9e8('0x1'));var https=require('https');var md5=require(_0xf9e8('0x2'));var path=require('path');var querystring=require(_0xf9e8('0x3'));var rp=require(_0xf9e8('0x4'));var rs=require(_0xf9e8('0x5'));var sox=require(_0xf9e8('0x6'));var tts=require(_0xf9e8('0x7'));var urlParse=require(_0xf9e8('0x8'))[_0xf9e8('0x9')];var util=require(_0xf9e8('0xa'));var aws=require(_0xf9e8('0xb'));var google=require('./google');var sestek=require('./sestek');var tilde=require(_0xf9e8('0xc'));var logger=require(_0xf9e8('0xd'))(_0xf9e8('0xe'));var ISPEECH_API=_0xf9e8('0xf');function downloadFile(_0x533ca6,_0x4ec9c8){return new BPromise(function(_0x744818,_0x4c4325){var _0x523fcb=urlParse(_0x533ca6);var _0x3098c7=_0x523fcb['protocol']===_0xf9e8('0x10')?https:http;var _0x54e3c5={'host':_0x523fcb[_0xf9e8('0x11')],'path':_0x523fcb[_0xf9e8('0x12')],'headers':{'user-agent':'WHAT_EVER'}};_0x3098c7[_0xf9e8('0x13')](_0x54e3c5,function(_0x40ebf2){if(_0x40ebf2[_0xf9e8('0x14')]!==0xc8){logger[_0xf9e8('0x15')](_0xf9e8('0x16')+_0x533ca6+_0xf9e8('0x17')+_0x40ebf2['statusCode']+'\x20('+_0x40ebf2[_0xf9e8('0x18')]+')');_0x4c4325(new Error(_0xf9e8('0x16')+_0x533ca6+_0xf9e8('0x17')+_0x40ebf2[_0xf9e8('0x14')]+'\x20('+_0x40ebf2['statusMessage']+')'));return;}var _0x207770=fs['createWriteStream'](_0x4ec9c8);_0x207770['on'](_0xf9e8('0x19'),function(){logger['info'](_0xf9e8('0x1a'));_0x207770[_0xf9e8('0x1b')](_0x744818);});_0x207770['on']('error',function(_0x1ac8d3){fs[_0xf9e8('0x1c')](_0x4ec9c8);logger[_0xf9e8('0x15')](_0xf9e8('0x1d'),_0x1ac8d3);_0x4c4325(_0x1ac8d3);});_0x40ebf2['pipe'](_0x207770);})['on']('error',function(_0x42461e){logger[_0xf9e8('0x15')](_0x42461e);_0x4c4325(_0x42461e);})['end']();});}function uploadFile(_0x493c52){return new BPromise(function(_0x2738ba,_0x4f61c8){var _0x4e3f2a=urlParse(_0x493c52);var _0x3b9129=_0x4e3f2a[_0xf9e8('0x1e')]==='https:'?https:http;var _0x2da7a1={'host':_0x4e3f2a[_0xf9e8('0x11')],'path':_0x4e3f2a['path'],'headers':{'user-agent':_0xf9e8('0x1f')}};_0x3b9129['get'](_0x2da7a1,function(_0x4c35a1){if(_0x4c35a1['statusCode']!==0xc8){_0x4f61c8(new Error(_0xf9e8('0x16')+_0x493c52+_0xf9e8('0x17')+_0x4c35a1[_0xf9e8('0x14')]+'\x20('+_0x4c35a1[_0xf9e8('0x18')]+')'));return;}var _0x49fc64='';_0x4c35a1['on'](_0xf9e8('0x20'),function(_0x195973){_0x49fc64+=_0x195973;});_0x4c35a1['on'](_0xf9e8('0x21'),function(){_0x2738ba(_0x49fc64);});})['on'](_0xf9e8('0x15'),function(_0x3842bf){_0x4f61c8(_0x3842bf);})[_0xf9e8('0x21')]();});}function convertFile(_0x10ab23,_0x1f05e2){return new BPromise(function(_0x3c9513,_0x464730){var _0x20adfa=sox[_0xf9e8('0x22')](_0x10ab23,_0x1f05e2,{'sampleRate':0x1f40,'format':_0xf9e8('0x23'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x20adfa['on'](_0xf9e8('0x15'),function(_0x409c17){logger[_0xf9e8('0x15')](_0xf9e8('0x24'),_0x409c17);_0x464730(_0x409c17);});_0x20adfa['on'](_0xf9e8('0x21'),function(){logger['info'](_0xf9e8('0x25'));_0x3c9513();});_0x20adfa['start']();});}function base64Decode(_0x126da1,_0x7a8606){var _0x298a73=path[_0xf9e8('0x26')](__dirname,_0xf9e8('0x27'),rs[_0xf9e8('0x28')](0x4)+_0xf9e8('0x29'));fs[_0xf9e8('0x2a')](_0x298a73,_0x126da1,_0xf9e8('0x2b'));return convertFile(_0x298a73,_0x7a8606)['then'](function(){try{fs[_0xf9e8('0x1c')](_0x298a73);fs['chmodSync'](_0x7a8606,_0xf9e8('0x2c'));}catch(_0x223f82){logger[_0xf9e8('0x15')](_0x223f82);}return _0x7a8606['split']('.')[0x0];});}function base64Encode(_0x504852){var _0xdbd54=fs[_0xf9e8('0x2d')](_0x504852);return new Buffer(_0xdbd54)[_0xf9e8('0x2e')](_0xf9e8('0x2b'));}exports[_0xf9e8('0x2f')]=function(_0x38fd4f,_0x34d24e,_0x5d6ef2,_0x4dd3f6,_0x482cac,_0xee08d8){var _0x592973,_0x483798;var _0x57e9f2=_0xf9e8('0x30');var _0x3df8f6=_0xf9e8('0x31')+_0x38fd4f;var _0x1cd2b1={};if(_0x34d24e===_0xf9e8('0x32')){_0x1cd2b1['input']={'ssml':_0x5d6ef2};}else{_0x1cd2b1[_0xf9e8('0x33')]={'text':_0x5d6ef2};};_0x1cd2b1[_0xf9e8('0x34')]={'languageCode':_0x4dd3f6,'ssmlGender':_0x482cac};_0x1cd2b1['audioConfig']={'audioEncoding':_0xf9e8('0x35'),'sampleRateHertz':0x1f40};var _0x209bf9={'url':_0x57e9f2+_0xf9e8('0x36')+_0x3df8f6,'method':_0xf9e8('0x37'),'json':!![],'body':_0x1cd2b1};return rp(_0x209bf9)[_0xf9e8('0x38')](function(_0x17e200){return new BPromise(function(_0x442700,_0x17064f){_0x592973=path[_0xf9e8('0x26')](__dirname,'tmp',rs['generate'](0x4)+_0xf9e8('0x39'));var _0x3b16fd=Buffer[_0xf9e8('0x3a')](_0x17e200[_0xf9e8('0x3b')],_0xf9e8('0x2b'));return fs[_0xf9e8('0x3c')](_0x592973,_0x3b16fd,function(_0x3d3cf1){_0x17064f(_0x3d3cf1);},function(_0xae0f3e){fs['chmodSync'](_0x592973,_0xf9e8('0x2c'));_0x442700(_0xae0f3e);});});})[_0xf9e8('0x38')](function(_0x10f84a){_0x483798=path[_0xf9e8('0x26')](__dirname,_0xf9e8('0x27'),rs[_0xf9e8('0x28')](0x4)+_0xf9e8('0x29'));return convertFile(_0x592973,_0x483798);})[_0xf9e8('0x38')](function(){try{fs['unlink'](_0x592973);fs[_0xf9e8('0x3d')](_0x483798,_0xf9e8('0x2c'));}catch(_0x405421){logger[_0xf9e8('0x15')](_0x405421);}logger[_0xf9e8('0x3e')](_0xf9e8('0x3f'),_0x483798[_0xf9e8('0x40')]('.')[0x0]);return _0x483798[_0xf9e8('0x40')]('.')[0x0];});};exports[_0xf9e8('0x41')]=function(_0x2e81a3,_0x1a843d){var _0x49b38c=_0xf9e8('0x42');var _0x21b3c8,_0x2b7abd;var _0x2901d1;var _0x307462={'encoding':_0xf9e8('0x43'),'method':_0xf9e8('0x37'),'timeout':0x2710,'url':_0x49b38c,'headers':{'Content-Type':_0xf9e8('0x44')},'body':_0xf9e8('0x45')+encodeURIComponent(JSON[_0xf9e8('0x46')]([[['jQ1olc',JSON[_0xf9e8('0x46')]([_0x2e81a3,_0x1a843d||'en',![],_0xf9e8('0x47')]),null,'generic']]]))};return rp(_0x307462)[_0xf9e8('0x38')](function(_0x2dbaa0){try{_0x2901d1=eval(_0x2dbaa0[_0xf9e8('0x48')](0x5))[0x0][0x2];}catch(_0x47f32f){throw new Error(_0xf9e8('0x49')+_0x2dbaa0[_0xf9e8('0x20')]);}if(!_0x2901d1){if(_0x2e81a3[_0xf9e8('0x4a')]>0xc8){throw new Error(_0xf9e8('0x4b'));}else{throw new Error(_0xf9e8('0x4c')+_0x1a843d+_0xf9e8('0x4d'));}}try{_0x2901d1=eval(_0x2901d1)[0x0];}catch(_0x111548){throw new Error(_0xf9e8('0x49')+res[_0xf9e8('0x20')]);}const _0x449d62=_0x2901d1;_0x21b3c8=path[_0xf9e8('0x26')](__dirname,_0xf9e8('0x27'),rs['generate'](0x4)+_0xf9e8('0x39'));fs[_0xf9e8('0x2a')](_0x21b3c8,_0x2901d1,{'encoding':_0xf9e8('0x2b')});_0x2b7abd=path[_0xf9e8('0x26')](__dirname,_0xf9e8('0x27'),rs['generate'](0x4)+_0xf9e8('0x29'));return convertFile(_0x21b3c8,_0x2b7abd);})[_0xf9e8('0x38')](function(){try{fs[_0xf9e8('0x1c')](_0x21b3c8);fs[_0xf9e8('0x3d')](_0x2b7abd,_0xf9e8('0x2c'));}catch(_0x5b05f5){logger[_0xf9e8('0x15')](_0x5b05f5);}logger[_0xf9e8('0x3e')](_0xf9e8('0x4e'),_0x2b7abd[_0xf9e8('0x40')]('.')[0x0]);return _0x2b7abd['split']('.')[0x0];});};exports[_0xf9e8('0x4f')]=function(_0x3afaa7,_0x15bfe0,_0x30acac){return google[_0xf9e8('0x50')](_0x3afaa7,_0x15bfe0,_0x30acac)[_0xf9e8('0x38')](function(_0x5649e3){logger['info'](_0x5649e3[_0xf9e8('0x51')]);return rp(_0x5649e3);})[_0xf9e8('0x38')](function(_0x1476df){var _0x56b5a3='';var _0x4ea68a=0x0;try{fs[_0xf9e8('0x1c')](_0x3afaa7);}catch(_0x3c5b45){logger['error'](_0x3c5b45);}if(_0x1476df&&_0x1476df[_0xf9e8('0x52')]){_0x56b5a3=_0x1476df[_0xf9e8('0x52')][_0xf9e8('0x53')](function(_0x56edac){return _0x56edac&&_0x56edac['alternatives'][0x0]&&_0x56edac[_0xf9e8('0x54')][0x0][_0xf9e8('0x55')]?_0x56edac[_0xf9e8('0x54')][0x0][_0xf9e8('0x55')]:'';})[_0xf9e8('0x56')]('\x0a');_0x4ea68a=_0x1476df[_0xf9e8('0x52')][_0xf9e8('0x53')](function(_0x52f876){return _0x52f876&&_0x52f876['alternatives'][0x0]&&_0x52f876[_0xf9e8('0x54')][0x0]['confidence']?_0x52f876[_0xf9e8('0x54')][0x0][_0xf9e8('0x57')]:0x0;})[_0xf9e8('0x56')]('\x0a');}logger[_0xf9e8('0x3e')](_0xf9e8('0x58'),_0x56b5a3);logger[_0xf9e8('0x3e')]('googleASR\x20confidence',_0x4ea68a);return{'transcript':_0x56b5a3,'confidence':_0x4ea68a};})[_0xf9e8('0x59')](function(_0x12de8f){logger[_0xf9e8('0x15')]('[%s]\x20%s:%s',_0x12de8f['statusCode'],_0x12de8f[_0xf9e8('0x5a')],_0x12de8f['message']);});};exports[_0xf9e8('0x5b')]=function(_0x3e42b8,_0x29b50f,_0x210f52,_0x4711a3){var _0x1b8d82=apiai(_0x29b50f,{'language':_0x4711a3||'en'});return _0x1b8d82[_0xf9e8('0x5c')](_0x210f52,{'sessionId':md5(_0x3e42b8)})[_0xf9e8('0x38')](function(_0x282ef8){logger[_0xf9e8('0x3e')](JSON[_0xf9e8('0x46')](_0x282ef8));return{'source':_0x282ef8[_0xf9e8('0x5d')][_0xf9e8('0x5e')],'resolvedQuery':_0x282ef8['result'][_0xf9e8('0x5f')],'action':_0x282ef8['result'][_0xf9e8('0x60')],'actionIncomplete':_0x282ef8[_0xf9e8('0x5d')][_0xf9e8('0x61')],'speech':_0x282ef8[_0xf9e8('0x5d')]['fulfillment']['speech'],'score':_0x282ef8[_0xf9e8('0x5d')][_0xf9e8('0x62')],'statusCode':_0x282ef8[_0xf9e8('0x63')][_0xf9e8('0x64')],'endConversation':_0x282ef8[_0xf9e8('0x5d')][_0xf9e8('0x65')][_0xf9e8('0x66')]||![],'isFallbackIntent':_0x282ef8['result']['metadata'][_0xf9e8('0x67')]};});};exports[_0xf9e8('0x68')]=function(_0x58c1a1,_0x12d543,_0x3523fb,_0xec4f03,_0xd571bd,_0x57a81c){var _0x4cff06=_0xec4f03[_0xf9e8('0x69')](/\\n/g,'\x0a');var _0x377b6e={'credentials':{'private_key':_0x4cff06,'client_email':_0x3523fb}};var _0x5f2ed8=new dialogflow[(_0xf9e8('0x6a'))](_0x377b6e);var _0x583f8c=_0x5f2ed8[_0xf9e8('0x6b')](_0x12d543,md5(_0x58c1a1));var _0x2524aa={'session':_0x583f8c,'queryInput':{'text':{'text':_0xd571bd,'languageCode':_0x57a81c}}};return _0x5f2ed8[_0xf9e8('0x6c')](_0x2524aa)['then'](function(_0x4f2ecc){if(_0x4f2ecc&&_0x4f2ecc[_0xf9e8('0x4a')]){logger[_0xf9e8('0x3e')]('Dialogflow\x20V2\x20response:',JSON[_0xf9e8('0x46')](_0x4f2ecc));var _0x479825=_0x4f2ecc[0x0];if(_0x479825){var _0x29084b={'action':_0x479825[_0xf9e8('0x6d')][_0xf9e8('0x60')],'allRequiredParamsPresent':_0x479825['queryResult'][_0xf9e8('0x6e')],'endConversation':_0x479825['queryResult'][_0xf9e8('0x6f')]&&_0x479825[_0xf9e8('0x6d')]['diagnosticInfo'][_0xf9e8('0x70')]?_0x479825[_0xf9e8('0x6d')][_0xf9e8('0x6f')]['fields'][_0xf9e8('0x71')]['boolValue']:![],'fulfillmentText':_0x479825[_0xf9e8('0x6d')][_0xf9e8('0x72')],'intentName':_0x479825[_0xf9e8('0x6d')]['intent'][_0xf9e8('0x5a')],'intentDisplayName':_0x479825[_0xf9e8('0x6d')][_0xf9e8('0x73')]['displayName'],'isFallbackIntent':_0x479825[_0xf9e8('0x6d')]['intent'][_0xf9e8('0x74')],'languageCode':_0x479825[_0xf9e8('0x6d')][_0xf9e8('0x75')],'queryText':_0x479825[_0xf9e8('0x6d')][_0xf9e8('0x76')],'responseId':_0x479825[_0xf9e8('0x77')],'score':_0x479825[_0xf9e8('0x6d')][_0xf9e8('0x78')],'speech':_0x479825['queryResult'][_0xf9e8('0x72')],'providerResponse':JSON[_0xf9e8('0x46')](_0x4f2ecc)};return _0x29084b;}}});};exports[_0xf9e8('0x79')]=function(_0x11d233,_0x51b016,_0x29e48c,_0x1300b4){return tilde[_0xf9e8('0x50')](_0x11d233,_0x51b016,_0x29e48c,_0x1300b4)[_0xf9e8('0x38')](function(_0x5606f0){try{fs[_0xf9e8('0x1c')](_0x11d233);}catch(_0x538140){logger['error'](_0x538140);}logger[_0xf9e8('0x3e')]('Tilde\x20ASR\x20transcription',_0x5606f0[_0xf9e8('0x55')]);logger[_0xf9e8('0x3e')](_0xf9e8('0x7a'),_0x5606f0[_0xf9e8('0x57')]);return _0x5606f0;});};exports[_0xf9e8('0x7b')]=function(_0x47183c,_0x27c52e,_0x36fa79,_0x500fe8,_0xabac20,_0x50f75e){var _0x4896d2=path[_0xf9e8('0x26')](__dirname,_0xf9e8('0x27'),rs[_0xf9e8('0x28')](0x4)+'.mp3');var _0x7d586c;return aws[_0xf9e8('0x7c')](_0x47183c,_0x27c52e,_0x36fa79,_0x500fe8,_0xabac20,_0x50f75e,_0x4896d2)['then'](function(){_0x7d586c=path['resolve'](__dirname,_0xf9e8('0x27'),rs[_0xf9e8('0x28')](0x4)+_0xf9e8('0x29'));return convertFile(_0x4896d2,_0x7d586c);})[_0xf9e8('0x38')](function(){try{fs[_0xf9e8('0x1c')](_0x4896d2);fs[_0xf9e8('0x3d')](_0x7d586c,_0xf9e8('0x2c'));}catch(_0x875495){logger[_0xf9e8('0x15')](_0x875495);}return _0x7d586c[_0xf9e8('0x40')]('.')[0x0];});};exports[_0xf9e8('0x7d')]=function(_0x23cf43,_0x4ab84a,_0x20551e,_0x56a537,_0x4298ce,_0x20831f){return aws[_0xf9e8('0x7e')](_0x23cf43,_0x4ab84a,_0x20551e,_0x56a537,_0x4298ce,_0x20831f)[_0xf9e8('0x38')](function(_0x24a732){logger[_0xf9e8('0x3e')](JSON[_0xf9e8('0x46')](_0x24a732));return _0x24a732;});};exports[_0xf9e8('0x7f')]=function(_0x57b64,_0x428751,_0x4d9eac,_0xd20dc6){var _0x339ff8=util[_0xf9e8('0x80')](_0xf9e8('0x81'),ISPEECH_API,_0x57b64,encodeURIComponent(_0x428751),_0x4d9eac,_0xd20dc6);var _0x9efc4b=path[_0xf9e8('0x26')](__dirname,_0xf9e8('0x27'),rs['generate'](0x4)+_0xf9e8('0x39'));var _0x2a74fc;return downloadFile(_0x339ff8,_0x9efc4b)[_0xf9e8('0x38')](function(){_0x2a74fc=path[_0xf9e8('0x26')](__dirname,'tmp',rs[_0xf9e8('0x28')](0x4)+_0xf9e8('0x29'));return convertFile(_0x9efc4b,_0x2a74fc);})[_0xf9e8('0x38')](function(){try{fs[_0xf9e8('0x1c')](_0x9efc4b);fs['chmodSync'](_0x2a74fc,_0xf9e8('0x2c'));}catch(_0x5be877){logger[_0xf9e8('0x15')](_0x5be877);}return _0x2a74fc[_0xf9e8('0x40')]('.')[0x0];});};exports[_0xf9e8('0x82')]=function(_0x308479,_0x36b323,_0x21a596,_0x183938){var _0x785f72=util[_0xf9e8('0x80')]('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x36b323,_0x21a596,base64Encode(_0x308479),_0x183938?util['format']('model=%s',encodeURIComponent(_0x183938)):'freeform=3');return uploadFile(_0x785f72)[_0xf9e8('0x38')](function(_0x487bef){return querystring['parse'](_0x487bef);});};exports[_0xf9e8('0x83')]=function(_0x378bbd,_0x827131){return sestek['nda'](_0x378bbd,_0x827131)[_0xf9e8('0x38')](function(_0x3a5548){logger[_0xf9e8('0x3e')](JSON[_0xf9e8('0x46')](_0x3a5548));var _0xb68812={'speech':_0x3a5548[_0xf9e8('0x84')],'action':_0x3a5548['channelData']?_0x3a5548[_0xf9e8('0x85')][_0xf9e8('0x86')]:undefined,'actiondata':_0x3a5548[_0xf9e8('0x85')]?_0x3a5548['channelData'][_0xf9e8('0x87')]:undefined};if(_0x3a5548[_0xf9e8('0x85')]&&_0x3a5548[_0xf9e8('0x85')][_0xf9e8('0x88')]){return base64Decode(_0x3a5548['channelData']['AudioFromTts'][_0xf9e8('0x89')],path[_0xf9e8('0x26')](__dirname,'tmp',rs[_0xf9e8('0x28')](0x4)+_0xf9e8('0x29')))['then'](function(_0x1baac2){_0xb68812[_0xf9e8('0x8a')]=_0x1baac2;return _0xb68812;});}return _0xb68812;});};exports[_0xf9e8('0x8b')]=function(){return __dirname;};
\ No newline at end of file
+var _0xe687=['.mp3','writeFile','chmodSync','googleCloudTTS\x20path','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','stringify','generic','slice','parse\x20response\x20failed:\x0a','text\x20length\x20limit\x20reached','lang\x20\x22','\x22\x20might\x20not\x20exist','data','googleASR','asr','uri','results','alternatives','transcript','join','confidence','googleASR\x20transcription','googleASR\x20confidence','catch','name','message','googleDialogflow','textRequest','result','source','resolvedQuery','action','speech','score','status','code','metadata','isFallbackIntent','googleDialogflowV2','SessionsClient','sessionPath','detectIntent','length','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','displayName','isFallback','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','polly','lex','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','sestekNDA','nda','text','channelData','CustomAction','AudioFromTts','Data','audiofile','apiai-promise','bluebird','dialogflow','https','md5','path','querystring','request-promise','sox','google-tts-api','url','parse','util','./sestek','./tilde','https://api.ispeech.org/api/rest','protocol','https:','host','WHAT_EVER','get','statusCode','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','finish','info','finish\x20download\x20file','close','error','unlink','pipe','end','wav','error\x20convert','finish\x20to\x20convert','start','resolve','tmp','.wav','writeFileSync','base64','then','777','split','readFileSync','googleCloudTTS','https://texttospeech.googleapis.com/v1/','ssml','input','voice','MP3','POST','generate'];(function(_0x5a80ef,_0x57d7fa){var _0x40ea9c=function(_0x3d12d0){while(--_0x3d12d0){_0x5a80ef['push'](_0x5a80ef['shift']());}};_0x40ea9c(++_0x57d7fa);}(_0xe687,0x155));var _0x7e68=function(_0x57ee22,_0x11b728){_0x57ee22=_0x57ee22-0x0;var _0x3890b6=_0xe687[_0x57ee22];return _0x3890b6;};'use strict';var apiai=require(_0x7e68('0x0'));var BPromise=require(_0x7e68('0x1'));var dialogflow=require(_0x7e68('0x2'));var fs=require('fs');var http=require('http');var https=require(_0x7e68('0x3'));var md5=require(_0x7e68('0x4'));var path=require(_0x7e68('0x5'));var querystring=require(_0x7e68('0x6'));var rp=require(_0x7e68('0x7'));var rs=require('randomstring');var sox=require(_0x7e68('0x8'));var tts=require(_0x7e68('0x9'));var urlParse=require(_0x7e68('0xa'))[_0x7e68('0xb')];var util=require(_0x7e68('0xc'));var aws=require('./aws');var google=require('./google');var sestek=require(_0x7e68('0xd'));var tilde=require(_0x7e68('0xe'));var logger=require('../../../config/logger')('agi');var ISPEECH_API=_0x7e68('0xf');function downloadFile(_0x3ef5,_0x3a421a){return new BPromise(function(_0x303cae,_0x5966fb){var _0x94bbee=urlParse(_0x3ef5);var _0x5d2656=_0x94bbee[_0x7e68('0x10')]===_0x7e68('0x11')?https:http;var _0x5c8ab8={'host':_0x94bbee[_0x7e68('0x12')],'path':_0x94bbee[_0x7e68('0x5')],'headers':{'user-agent':_0x7e68('0x13')}};_0x5d2656[_0x7e68('0x14')](_0x5c8ab8,function(_0x502b02){if(_0x502b02[_0x7e68('0x15')]!==0xc8){logger['error'](_0x7e68('0x16')+_0x3ef5+_0x7e68('0x17')+_0x502b02['statusCode']+'\x20('+_0x502b02[_0x7e68('0x18')]+')');_0x5966fb(new Error(_0x7e68('0x16')+_0x3ef5+'\x20failed,\x20status\x20code\x20=\x20'+_0x502b02[_0x7e68('0x15')]+'\x20('+_0x502b02[_0x7e68('0x18')]+')'));return;}var _0x9c3169=fs[_0x7e68('0x19')](_0x3a421a);_0x9c3169['on'](_0x7e68('0x1a'),function(){logger[_0x7e68('0x1b')](_0x7e68('0x1c'));_0x9c3169[_0x7e68('0x1d')](_0x303cae);});_0x9c3169['on'](_0x7e68('0x1e'),function(_0x25cf10){fs[_0x7e68('0x1f')](_0x3a421a);logger[_0x7e68('0x1e')]('download\x20error',_0x25cf10);_0x5966fb(_0x25cf10);});_0x502b02[_0x7e68('0x20')](_0x9c3169);})['on'](_0x7e68('0x1e'),function(_0x4f0077){logger[_0x7e68('0x1e')](_0x4f0077);_0x5966fb(_0x4f0077);})['end']();});}function uploadFile(_0x541916){return new BPromise(function(_0x509b93,_0x44ff37){var _0x22d846=urlParse(_0x541916);var _0x305492=_0x22d846['protocol']===_0x7e68('0x11')?https:http;var _0x542666={'host':_0x22d846[_0x7e68('0x12')],'path':_0x22d846[_0x7e68('0x5')],'headers':{'user-agent':_0x7e68('0x13')}};_0x305492[_0x7e68('0x14')](_0x542666,function(_0x1ce207){if(_0x1ce207[_0x7e68('0x15')]!==0xc8){_0x44ff37(new Error('request\x20to\x20'+_0x541916+_0x7e68('0x17')+_0x1ce207['statusCode']+'\x20('+_0x1ce207['statusMessage']+')'));return;}var _0x33e5a7='';_0x1ce207['on']('data',function(_0x500d52){_0x33e5a7+=_0x500d52;});_0x1ce207['on'](_0x7e68('0x21'),function(){_0x509b93(_0x33e5a7);});})['on'](_0x7e68('0x1e'),function(_0x4de3de){_0x44ff37(_0x4de3de);})[_0x7e68('0x21')]();});}function convertFile(_0x7f1617,_0x57746c){return new BPromise(function(_0xd908e6,_0x4ad382){var _0x312ce6=sox['transcode'](_0x7f1617,_0x57746c,{'sampleRate':0x1f40,'format':_0x7e68('0x22'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x312ce6['on'](_0x7e68('0x1e'),function(_0x25bfad){logger[_0x7e68('0x1e')](_0x7e68('0x23'),_0x25bfad);_0x4ad382(_0x25bfad);});_0x312ce6['on']('end',function(){logger[_0x7e68('0x1b')](_0x7e68('0x24'));_0xd908e6();});_0x312ce6[_0x7e68('0x25')]();});}function base64Decode(_0x1414c1,_0x5b9884){var _0x54ce1f=path[_0x7e68('0x26')](__dirname,_0x7e68('0x27'),rs['generate'](0x4)+_0x7e68('0x28'));fs[_0x7e68('0x29')](_0x54ce1f,_0x1414c1,_0x7e68('0x2a'));return convertFile(_0x54ce1f,_0x5b9884)[_0x7e68('0x2b')](function(){try{fs[_0x7e68('0x1f')](_0x54ce1f);fs['chmodSync'](_0x5b9884,_0x7e68('0x2c'));}catch(_0x353a8f){logger['error'](_0x353a8f);}return _0x5b9884[_0x7e68('0x2d')]('.')[0x0];});}function base64Encode(_0x56de18){var _0x204cbd=fs[_0x7e68('0x2e')](_0x56de18);return new Buffer(_0x204cbd)['toString'](_0x7e68('0x2a'));}exports[_0x7e68('0x2f')]=function(_0x2579d3,_0x1cce62,_0x17c825,_0xbaf912,_0x40863c,_0x5ed07c){var _0x1c68ff,_0x33555b;var _0x11a278=_0x7e68('0x30');var _0x305475='?key='+_0x2579d3;var _0x1929c8={};if(_0x1cce62===_0x7e68('0x31')){_0x1929c8[_0x7e68('0x32')]={'ssml':_0x17c825};}else{_0x1929c8[_0x7e68('0x32')]={'text':_0x17c825};};_0x1929c8[_0x7e68('0x33')]={'languageCode':_0xbaf912,'ssmlGender':_0x40863c};_0x1929c8['audioConfig']={'audioEncoding':_0x7e68('0x34'),'sampleRateHertz':0x1f40};var _0x543e35={'url':_0x11a278+'text:synthesize'+_0x305475,'method':_0x7e68('0x35'),'json':!![],'body':_0x1929c8};return rp(_0x543e35)['then'](function(_0x244c22){return new BPromise(function(_0x4a11d6,_0xc5727){_0x1c68ff=path[_0x7e68('0x26')](__dirname,'tmp',rs[_0x7e68('0x36')](0x4)+_0x7e68('0x37'));var _0x1729fd=Buffer['from'](_0x244c22['audioContent'],_0x7e68('0x2a'));return fs[_0x7e68('0x38')](_0x1c68ff,_0x1729fd,function(_0x2290f0){_0xc5727(_0x2290f0);},function(_0x1df5ed){fs[_0x7e68('0x39')](_0x1c68ff,_0x7e68('0x2c'));_0x4a11d6(_0x1df5ed);});});})[_0x7e68('0x2b')](function(_0xf13ff9){_0x33555b=path[_0x7e68('0x26')](__dirname,_0x7e68('0x27'),rs[_0x7e68('0x36')](0x4)+_0x7e68('0x28'));return convertFile(_0x1c68ff,_0x33555b);})['then'](function(){try{fs[_0x7e68('0x1f')](_0x1c68ff);fs[_0x7e68('0x39')](_0x33555b,_0x7e68('0x2c'));}catch(_0x1c4f4b){logger[_0x7e68('0x1e')](_0x1c4f4b);}logger['info'](_0x7e68('0x3a'),_0x33555b[_0x7e68('0x2d')]('.')[0x0]);return _0x33555b[_0x7e68('0x2d')]('.')[0x0];});};exports['googleTTS']=function(_0x49b701,_0x279707){var _0x2fe60e=_0x7e68('0x3b');var _0x1d4636,_0x34f587;var _0x4d2ed1;var _0x3ad935={'encoding':_0x7e68('0x3c'),'method':'POST','timeout':0x2710,'url':_0x2fe60e,'headers':{'Content-Type':_0x7e68('0x3d')},'body':'f.req='+encodeURIComponent(JSON[_0x7e68('0x3e')]([[['jQ1olc',JSON[_0x7e68('0x3e')]([_0x49b701,_0x279707||'en',![],'null']),null,_0x7e68('0x3f')]]]))};return rp(_0x3ad935)[_0x7e68('0x2b')](function(_0x5a83c4){try{_0x4d2ed1=eval(_0x5a83c4[_0x7e68('0x40')](0x5))[0x0][0x2];}catch(_0x18d741){throw new Error(_0x7e68('0x41')+_0x5a83c4['data']);}if(!_0x4d2ed1){if(_0x49b701['length']>0xc8){throw new Error(_0x7e68('0x42'));}else{throw new Error(_0x7e68('0x43')+_0x279707+_0x7e68('0x44'));}}try{_0x4d2ed1=eval(_0x4d2ed1)[0x0];}catch(_0x2a7f88){throw new Error(_0x7e68('0x41')+res[_0x7e68('0x45')]);}const _0x5c4fc1=_0x4d2ed1;_0x1d4636=path['resolve'](__dirname,_0x7e68('0x27'),rs[_0x7e68('0x36')](0x4)+_0x7e68('0x37'));fs[_0x7e68('0x29')](_0x1d4636,_0x4d2ed1,{'encoding':_0x7e68('0x2a')});_0x34f587=path['resolve'](__dirname,_0x7e68('0x27'),rs[_0x7e68('0x36')](0x4)+_0x7e68('0x28'));return convertFile(_0x1d4636,_0x34f587);})[_0x7e68('0x2b')](function(){try{fs['unlink'](_0x1d4636);fs['chmodSync'](_0x34f587,'777');}catch(_0x30b583){logger[_0x7e68('0x1e')](_0x30b583);}logger[_0x7e68('0x1b')]('goggleTTS\x20path',_0x34f587[_0x7e68('0x2d')]('.')[0x0]);return _0x34f587[_0x7e68('0x2d')]('.')[0x0];});};exports[_0x7e68('0x46')]=function(_0x175ca0,_0x4afbc0,_0x409a9f){return google[_0x7e68('0x47')](_0x175ca0,_0x4afbc0,_0x409a9f)[_0x7e68('0x2b')](function(_0x49a482){logger[_0x7e68('0x1b')](_0x49a482[_0x7e68('0x48')]);return rp(_0x49a482);})['then'](function(_0x1f921d){var _0x14b859='';var _0x306bee=0x0;try{fs[_0x7e68('0x1f')](_0x175ca0);}catch(_0x1ccfbc){logger[_0x7e68('0x1e')](_0x1ccfbc);}if(_0x1f921d&&_0x1f921d[_0x7e68('0x49')]){_0x14b859=_0x1f921d[_0x7e68('0x49')]['map'](function(_0x3c5034){return _0x3c5034&&_0x3c5034['alternatives'][0x0]&&_0x3c5034[_0x7e68('0x4a')][0x0][_0x7e68('0x4b')]?_0x3c5034['alternatives'][0x0]['transcript']:'';})[_0x7e68('0x4c')]('\x0a');_0x306bee=_0x1f921d[_0x7e68('0x49')]['map'](function(_0x116e65){return _0x116e65&&_0x116e65[_0x7e68('0x4a')][0x0]&&_0x116e65['alternatives'][0x0]['confidence']?_0x116e65[_0x7e68('0x4a')][0x0][_0x7e68('0x4d')]:0x0;})[_0x7e68('0x4c')]('\x0a');}logger[_0x7e68('0x1b')](_0x7e68('0x4e'),_0x14b859);logger[_0x7e68('0x1b')](_0x7e68('0x4f'),_0x306bee);return{'transcript':_0x14b859,'confidence':_0x306bee};})[_0x7e68('0x50')](function(_0x1ccf95){logger[_0x7e68('0x1e')]('[%s]\x20%s:%s',_0x1ccf95[_0x7e68('0x15')],_0x1ccf95[_0x7e68('0x51')],_0x1ccf95[_0x7e68('0x52')]);});};exports[_0x7e68('0x53')]=function(_0x6bc28a,_0x46c51a,_0x3a0bf9,_0x1a32b4){var _0x4735f8=apiai(_0x46c51a,{'language':_0x1a32b4||'en'});return _0x4735f8[_0x7e68('0x54')](_0x3a0bf9,{'sessionId':md5(_0x6bc28a)})[_0x7e68('0x2b')](function(_0x12914e){logger[_0x7e68('0x1b')](JSON['stringify'](_0x12914e));return{'source':_0x12914e[_0x7e68('0x55')][_0x7e68('0x56')],'resolvedQuery':_0x12914e[_0x7e68('0x55')][_0x7e68('0x57')],'action':_0x12914e[_0x7e68('0x55')][_0x7e68('0x58')],'actionIncomplete':_0x12914e[_0x7e68('0x55')]['actionIncomplete'],'speech':_0x12914e['result']['fulfillment'][_0x7e68('0x59')],'score':_0x12914e[_0x7e68('0x55')][_0x7e68('0x5a')],'statusCode':_0x12914e[_0x7e68('0x5b')][_0x7e68('0x5c')],'endConversation':_0x12914e[_0x7e68('0x55')][_0x7e68('0x5d')]['endConversation']||![],'isFallbackIntent':_0x12914e[_0x7e68('0x55')][_0x7e68('0x5d')][_0x7e68('0x5e')]};});};exports[_0x7e68('0x5f')]=function(_0x39b05a,_0x5692e9,_0x4c7f9a,_0x3f93ac,_0x4093c7,_0x3be8a1){var _0x4614c8=_0x3f93ac['replace'](/\\n/g,'\x0a');var _0x22282e={'credentials':{'private_key':_0x4614c8,'client_email':_0x4c7f9a}};var _0x194e25=new dialogflow[(_0x7e68('0x60'))](_0x22282e);var _0x1912dd=_0x194e25[_0x7e68('0x61')](_0x5692e9,md5(_0x39b05a));var _0xf71e21={'session':_0x1912dd,'queryInput':{'text':{'text':_0x4093c7,'languageCode':_0x3be8a1}}};return _0x194e25[_0x7e68('0x62')](_0xf71e21)[_0x7e68('0x2b')](function(_0x592dfd){if(_0x592dfd&&_0x592dfd[_0x7e68('0x63')]){logger['info']('Dialogflow\x20V2\x20response:',JSON[_0x7e68('0x3e')](_0x592dfd));var _0xd7f4d1=_0x592dfd[0x0];if(_0xd7f4d1){var _0x2c3159={'action':_0xd7f4d1[_0x7e68('0x64')][_0x7e68('0x58')],'allRequiredParamsPresent':_0xd7f4d1['queryResult'][_0x7e68('0x65')],'endConversation':_0xd7f4d1[_0x7e68('0x64')]['diagnosticInfo']&&_0xd7f4d1[_0x7e68('0x64')][_0x7e68('0x66')][_0x7e68('0x67')]?_0xd7f4d1[_0x7e68('0x64')][_0x7e68('0x66')][_0x7e68('0x67')][_0x7e68('0x68')][_0x7e68('0x69')]:![],'fulfillmentText':_0xd7f4d1[_0x7e68('0x64')][_0x7e68('0x6a')],'intentName':_0xd7f4d1[_0x7e68('0x64')][_0x7e68('0x6b')][_0x7e68('0x51')],'intentDisplayName':_0xd7f4d1[_0x7e68('0x64')][_0x7e68('0x6b')][_0x7e68('0x6c')],'isFallbackIntent':_0xd7f4d1[_0x7e68('0x64')][_0x7e68('0x6b')][_0x7e68('0x6d')],'languageCode':_0xd7f4d1[_0x7e68('0x64')]['languageCode'],'queryText':_0xd7f4d1[_0x7e68('0x64')]['queryText'],'responseId':_0xd7f4d1[_0x7e68('0x6e')],'score':_0xd7f4d1[_0x7e68('0x64')][_0x7e68('0x6f')],'speech':_0xd7f4d1[_0x7e68('0x64')][_0x7e68('0x6a')],'providerResponse':JSON[_0x7e68('0x3e')](_0x592dfd)};return _0x2c3159;}}});};exports[_0x7e68('0x70')]=function(_0x458215,_0x972ea3,_0x262675,_0x5f18d9){return tilde[_0x7e68('0x47')](_0x458215,_0x972ea3,_0x262675,_0x5f18d9)[_0x7e68('0x2b')](function(_0x37688d){try{fs[_0x7e68('0x1f')](_0x458215);}catch(_0x2fd016){logger['error'](_0x2fd016);}logger[_0x7e68('0x1b')](_0x7e68('0x71'),_0x37688d[_0x7e68('0x4b')]);logger[_0x7e68('0x1b')](_0x7e68('0x72'),_0x37688d[_0x7e68('0x4d')]);return _0x37688d;});};exports['awsPolly']=function(_0x1b9320,_0x52ec07,_0x28aaf1,_0x57bdf5,_0x1a77e1,_0x2ab95c){var _0x1a3073=path[_0x7e68('0x26')](__dirname,_0x7e68('0x27'),rs[_0x7e68('0x36')](0x4)+_0x7e68('0x37'));var _0x2cb317;return aws[_0x7e68('0x73')](_0x1b9320,_0x52ec07,_0x28aaf1,_0x57bdf5,_0x1a77e1,_0x2ab95c,_0x1a3073)[_0x7e68('0x2b')](function(){_0x2cb317=path[_0x7e68('0x26')](__dirname,'tmp',rs['generate'](0x4)+_0x7e68('0x28'));return convertFile(_0x1a3073,_0x2cb317);})[_0x7e68('0x2b')](function(){try{fs['unlink'](_0x1a3073);fs[_0x7e68('0x39')](_0x2cb317,_0x7e68('0x2c'));}catch(_0x4187cb){logger['error'](_0x4187cb);}return _0x2cb317[_0x7e68('0x2d')]('.')[0x0];});};exports['awsLex']=function(_0x436389,_0x2d3777,_0x266548,_0x2cdb67,_0x498fbe,_0x2db358){return aws[_0x7e68('0x74')](_0x436389,_0x2d3777,_0x266548,_0x2cdb67,_0x498fbe,_0x2db358)[_0x7e68('0x2b')](function(_0x530cc7){logger[_0x7e68('0x1b')](JSON[_0x7e68('0x3e')](_0x530cc7));return _0x530cc7;});};exports[_0x7e68('0x75')]=function(_0x34b8b5,_0x2d8826,_0x157c4c,_0x5880f6){var _0x32ea28=util[_0x7e68('0x76')](_0x7e68('0x77'),ISPEECH_API,_0x34b8b5,encodeURIComponent(_0x2d8826),_0x157c4c,_0x5880f6);var _0x370e46=path['resolve'](__dirname,_0x7e68('0x27'),rs[_0x7e68('0x36')](0x4)+_0x7e68('0x37'));var _0x3b3aac;return downloadFile(_0x32ea28,_0x370e46)[_0x7e68('0x2b')](function(){_0x3b3aac=path[_0x7e68('0x26')](__dirname,_0x7e68('0x27'),rs[_0x7e68('0x36')](0x4)+'.wav');return convertFile(_0x370e46,_0x3b3aac);})[_0x7e68('0x2b')](function(){try{fs['unlink'](_0x370e46);fs['chmodSync'](_0x3b3aac,_0x7e68('0x2c'));}catch(_0x54fdb8){logger[_0x7e68('0x1e')](_0x54fdb8);}return _0x3b3aac[_0x7e68('0x2d')]('.')[0x0];});};exports[_0x7e68('0x78')]=function(_0x1af98d,_0x11f10e,_0x3bedde,_0x1dbaa2){var _0x2f9d41=util[_0x7e68('0x76')](_0x7e68('0x79'),ISPEECH_API,_0x11f10e,_0x3bedde,base64Encode(_0x1af98d),_0x1dbaa2?util['format'](_0x7e68('0x7a'),encodeURIComponent(_0x1dbaa2)):_0x7e68('0x7b'));return uploadFile(_0x2f9d41)[_0x7e68('0x2b')](function(_0xb95e5c){return querystring[_0x7e68('0xb')](_0xb95e5c);});};exports[_0x7e68('0x7c')]=function(_0x3299ca,_0x5be174){return sestek[_0x7e68('0x7d')](_0x3299ca,_0x5be174)[_0x7e68('0x2b')](function(_0x3600a2){logger[_0x7e68('0x1b')](JSON[_0x7e68('0x3e')](_0x3600a2));var _0x4eade8={'speech':_0x3600a2[_0x7e68('0x7e')],'action':_0x3600a2['channelData']?_0x3600a2[_0x7e68('0x7f')][_0x7e68('0x80')]:undefined,'actiondata':_0x3600a2[_0x7e68('0x7f')]?_0x3600a2[_0x7e68('0x7f')]['CustomActionData']:undefined};if(_0x3600a2['channelData']&&_0x3600a2[_0x7e68('0x7f')]['AudioFromTts']){return base64Decode(_0x3600a2['channelData'][_0x7e68('0x81')][_0x7e68('0x82')],path[_0x7e68('0x26')](__dirname,_0x7e68('0x27'),rs['generate'](0x4)+_0x7e68('0x28')))[_0x7e68('0x2b')](function(_0x4771f7){_0x4eade8[_0x7e68('0x83')]=_0x4771f7;return _0x4eade8;});}return _0x4eade8;});};exports['dirName']=function(){return __dirname;};
\ No newline at end of file
index f88f743..1f200a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d02=['exports','./nda'];(function(_0x1b6186,_0x1ec7f2){var _0x186121=function(_0x1748a8){while(--_0x1748a8){_0x1b6186['push'](_0x1b6186['shift']());}};_0x186121(++_0x1ec7f2);}(_0x5d02,0x107));var _0x25d0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5d02[_0x3dd15e];return _0x231fd0;};var nda=require(_0x25d0('0x0'));module[_0x25d0('0x1')]={'nda':nda};
\ No newline at end of file
+var _0x73e3=['./nda','exports'];(function(_0x5a7d9e,_0x4ae29e){var _0x1b2361=function(_0x5339ee){while(--_0x5339ee){_0x5a7d9e['push'](_0x5a7d9e['shift']());}};_0x1b2361(++_0x4ae29e);}(_0x73e3,0x8a));var _0x373e=function(_0xaa0309,_0x1c8008){_0xaa0309=_0xaa0309-0x0;var _0x5de7ce=_0x73e3[_0xaa0309];return _0x5de7ce;};var nda=require(_0x373e('0x0'));module[_0x373e('0x1')]={'nda':nda};
\ No newline at end of file
index 2ff6456..3039112 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b73=['password','username','then','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','message','Nda','uniqueid','callerid','calleridname','dnid','extension','text','Bearer\x20','access_token','body','channelData','ProjectName','project','ndagenerate_audio','AudioOutputSettings','audio/wav','CustomAction','custom_action','CustomActionData','custom_action_data','info','url','../../../../../config/logger','agi','exports','POST','resolve','/token'];(function(_0xbaa540,_0x339232){var _0x52aaa0=function(_0xd8663c){while(--_0xd8663c){_0xbaa540['push'](_0xbaa540['shift']());}};_0x52aaa0(++_0x339232);}(_0x1b73,0x1d5));var _0x31b7=function(_0x2bb0c5,_0x56560c){_0x2bb0c5=_0x2bb0c5-0x0;var _0x328244=_0x1b73[_0x2bb0c5];return _0x328244;};'use strict';var rp=require('request-promise');var url=require(_0x31b7('0x0'));var logger=require(_0x31b7('0x1'))(_0x31b7('0x2'));module[_0x31b7('0x3')]=function(_0x4bf5ae,_0x17c0ef){var _0x59e606={'method':_0x31b7('0x4'),'uri':url[_0x31b7('0x5')](_0x17c0ef['ndauth_url'],_0x31b7('0x6')),'form':{'grant_type':_0x31b7('0x7'),'username':_0x17c0ef[_0x31b7('0x8')],'password':_0x17c0ef['password']},'json':!![]};return rp(_0x59e606)[_0x31b7('0x9')](function(_0x1a730f){var _0x86ef8e={'method':_0x31b7('0x4'),'uri':url[_0x31b7('0x5')](_0x17c0ef[_0x31b7('0xa')],_0x31b7('0xb')),'body':{'type':_0x17c0ef['ndaactivity_type']||_0x31b7('0xc'),'channelId':_0x31b7('0xd'),'conversation':{'id':_0x4bf5ae[_0x31b7('0xe')]},'from':{'id':_0x4bf5ae[_0x31b7('0xf')],'name':_0x4bf5ae[_0x31b7('0x10')]},'recipient':{'id':_0x4bf5ae[_0x31b7('0x11')],'name':_0x4bf5ae[_0x31b7('0x12')]},'text':_0x17c0ef[_0x31b7('0x13')],'channelData':{}},'headers':{'Authorization':_0x31b7('0x14')+_0x1a730f[_0x31b7('0x15')]},'json':!![]};if(_0x17c0ef['project']){_0x86ef8e[_0x31b7('0x16')][_0x31b7('0x17')][_0x31b7('0x18')]=_0x17c0ef[_0x31b7('0x19')];}if(_0x17c0ef[_0x31b7('0x1a')]=='1'){_0x86ef8e[_0x31b7('0x16')][_0x31b7('0x17')][_0x31b7('0x1b')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x31b7('0x1c')};}if(_0x17c0ef['custom_action']){_0x86ef8e[_0x31b7('0x16')]['channelData'][_0x31b7('0x1d')]=_0x17c0ef[_0x31b7('0x1e')];if(_0x17c0ef['custom_action_data']){_0x86ef8e[_0x31b7('0x16')][_0x31b7('0x17')][_0x31b7('0x1f')]=_0x17c0ef[_0x31b7('0x20')];}}logger[_0x31b7('0x21')](JSON['stringify'](_0x86ef8e));return rp(_0x86ef8e);});};
\ No newline at end of file
+var _0x78f0=['ndagenerate_audio','AudioOutputSettings','custom_action','body','CustomAction','custom_action_data','CustomActionData','info','stringify','request-promise','url','../../../../../config/logger','agi','exports','resolve','ndauth_url','/token','password','then','POST','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','Nda','callerid','calleridname','extension','text','Bearer\x20','access_token','channelData','ProjectName','project'];(function(_0x14bf63,_0xdbd373){var _0x410d22=function(_0x2e5e3a){while(--_0x2e5e3a){_0x14bf63['push'](_0x14bf63['shift']());}};_0x410d22(++_0xdbd373);}(_0x78f0,0x15d));var _0x078f=function(_0x42ecfc,_0x36215b){_0x42ecfc=_0x42ecfc-0x0;var _0x197bb5=_0x78f0[_0x42ecfc];return _0x197bb5;};'use strict';var rp=require(_0x078f('0x0'));var url=require(_0x078f('0x1'));var logger=require(_0x078f('0x2'))(_0x078f('0x3'));module[_0x078f('0x4')]=function(_0x2bde34,_0x34a715){var _0x316f1c={'method':'POST','uri':url[_0x078f('0x5')](_0x34a715[_0x078f('0x6')],_0x078f('0x7')),'form':{'grant_type':_0x078f('0x8'),'username':_0x34a715['username'],'password':_0x34a715[_0x078f('0x8')]},'json':!![]};return rp(_0x316f1c)[_0x078f('0x9')](function(_0x4a7db3){var _0x2ef013={'method':_0x078f('0xa'),'uri':url[_0x078f('0x5')](_0x34a715[_0x078f('0xb')],_0x078f('0xc')),'body':{'type':_0x34a715[_0x078f('0xd')]||_0x078f('0xe'),'channelId':_0x078f('0xf'),'conversation':{'id':_0x2bde34['uniqueid']},'from':{'id':_0x2bde34[_0x078f('0x10')],'name':_0x2bde34[_0x078f('0x11')]},'recipient':{'id':_0x2bde34['dnid'],'name':_0x2bde34[_0x078f('0x12')]},'text':_0x34a715[_0x078f('0x13')],'channelData':{}},'headers':{'Authorization':_0x078f('0x14')+_0x4a7db3[_0x078f('0x15')]},'json':!![]};if(_0x34a715['project']){_0x2ef013['body'][_0x078f('0x16')][_0x078f('0x17')]=_0x34a715[_0x078f('0x18')];}if(_0x34a715[_0x078f('0x19')]=='1'){_0x2ef013['body'][_0x078f('0x16')][_0x078f('0x1a')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':'audio/wav'};}if(_0x34a715[_0x078f('0x1b')]){_0x2ef013[_0x078f('0x1c')][_0x078f('0x16')][_0x078f('0x1d')]=_0x34a715[_0x078f('0x1b')];if(_0x34a715[_0x078f('0x1e')]){_0x2ef013['body']['channelData'][_0x078f('0x1f')]=_0x34a715[_0x078f('0x1e')];}}logger[_0x078f('0x20')](JSON[_0x078f('0x21')](_0x2ef013));return rp(_0x2ef013);});};
\ No newline at end of file
index 94ec62c..ca61520 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66ff=['./lib/api'];(function(_0x52f9dc,_0x58cfc4){var _0x395a45=function(_0x11eca1){while(--_0x11eca1){_0x52f9dc['push'](_0x52f9dc['shift']());}};_0x395a45(++_0x58cfc4);}(_0x66ff,0xb3));var _0xf66f=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x66ff[_0x14add3];return _0x4a174f;};'use strict';var asr=require(_0xf66f('0x0'));module['exports']=function(_0x49eee3,_0xd7d5f4,_0x3a08e0,_0x4e6d01){return asr(_0x49eee3,_0xd7d5f4,_0x3a08e0,_0x4e6d01);};
\ No newline at end of file
+var _0x9e73=['exports'];(function(_0x27bcf5,_0x236765){var _0x4ce4cf=function(_0x4864ea){while(--_0x4864ea){_0x27bcf5['push'](_0x27bcf5['shift']());}};_0x4ce4cf(++_0x236765);}(_0x9e73,0xd7));var _0x39e7=function(_0x51752d,_0x42fa10){_0x51752d=_0x51752d-0x0;var _0x555799=_0x9e73[_0x51752d];return _0x555799;};'use strict';var asr=require('./lib/api');module[_0x39e7('0x0')]=function(_0x54409c,_0x551c6c,_0x49a8d0,_0x28fc62){return asr(_0x54409c,_0x551c6c,_0x49a8d0,_0x28fc62);};
\ No newline at end of file
index 7eef793..9f38dac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6d5=['hex','unix','stringify','createReadStream','send','EOS','Tilde\x20ASR\x20send\x20error','terminate','parse','status','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','Success.','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','error','Tilde\x20ASR\x20parse\x20error','Error\x20Tilde\x20ASR\x20socket','isNil','isObject','message','close','bluebird','lodash','moment','agi','exports','info','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','sha1','digest'];(function(_0xd559cb,_0x4f64e7){var _0x364827=function(_0x5d2063){while(--_0x5d2063){_0xd559cb['push'](_0xd559cb['shift']());}};_0x364827(++_0x4f64e7);}(_0xc6d5,0x1ef));var _0x5c6d=function(_0x3414cd,_0x467348){_0x3414cd=_0x3414cd-0x0;var _0x3891e9=_0xc6d5[_0x3414cd];return _0x3891e9;};'use strict';var BPromise=require(_0x5c6d('0x0'));var _=require(_0x5c6d('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x5c6d('0x2'));var crypto=require('crypto');var logger=require('../../../../../../config/logger')(_0x5c6d('0x3'));module[_0x5c6d('0x4')]=function(_0x145ab4,_0x770f2,_0x888e46,_0x17548c){return new BPromise(function(_0x463cc7,_0x11b7af){logger[_0x5c6d('0x5')](_0x5c6d('0x6'),_0x17548c||_0x5c6d('0x7'));var _0x19634d=new WebSocket(_0x17548c||_0x5c6d('0x7'),{'perMessageDeflate':![]});var _0x3d5621='';var _0x4522c1='0';var _0xfaef12='1';var _0x1d6759=_0x5c6d('0x8');function _0x382199(_0x257d58){var _0x30e1ca=crypto[_0x5c6d('0x9')](_0x5c6d('0xa'));_0x30e1ca['update'](_0x257d58);return _0x30e1ca[_0x5c6d('0xb')](_0x5c6d('0xc'));}function _0x5a8896(){try{logger[_0x5c6d('0x5')]('Open\x20Tilde\x20ASR\x20socket');var _0x5c1eb3=moment()[_0x5c6d('0xd')]();var _0x387691=_0x382199(_0x5c1eb3+_0x770f2+_0x888e46);_0x19634d['send'](JSON[_0x5c6d('0xe')]({'appID':_0x770f2,'timestamp':_0x5c1eb3,'appKey':_0x387691}));var _0x554e29=fs[_0x5c6d('0xf')](_0x145ab4);_0x554e29['on']('data',function(_0x5311c1){_0x19634d[_0x5c6d('0x10')](_0x5311c1);});_0x554e29['on']('close',function(){_0x19634d[_0x5c6d('0x10')](_0x5c6d('0x11'));});}catch(_0x1647d9){logger['error'](_0x5c6d('0x12'),JSON[_0x5c6d('0xe')](_0x1647d9));_0x19634d[_0x5c6d('0x13')]();}}function _0x20c4cd(_0x1683dc){try{if(_0x1683dc){var _0x2d8a48=JSON[_0x5c6d('0x14')](_0x1683dc);switch(_0x2d8a48[_0x5c6d('0x15')]){case 0x0:if(_0x2d8a48['result']){if(_0x2d8a48[_0x5c6d('0x16')][_0x5c6d('0x17')]){logger[_0x5c6d('0x5')](_0x5c6d('0x18'),JSON[_0x5c6d('0xe')](_0x2d8a48[_0x5c6d('0x16')][_0x5c6d('0x19')]));_0x3d5621=_0x2d8a48['result'][_0x5c6d('0x19')][0x0][_0x5c6d('0x1a')];_0x4522c1=_0x2d8a48[_0x5c6d('0x16')][_0x5c6d('0x19')][0x0]['likelihood'];_0xfaef12='0';_0x1d6759=_0x5c6d('0x1b');_0x19634d[_0x5c6d('0x13')]();}}break;case 0x1:logger[_0x5c6d('0x5')](_0x5c6d('0x8'));_0xfaef12='1';_0x1d6759=_0x5c6d('0x8');break;case 0x2:logger[_0x5c6d('0x5')](_0x5c6d('0x1c'));_0xfaef12='2';_0x1d6759=_0x5c6d('0x1c');break;case 0x9:logger[_0x5c6d('0x5')](_0x5c6d('0x1d'));_0xfaef12='9';_0x1d6759=_0x5c6d('0x1d');break;case 0xa:logger[_0x5c6d('0x5')]('Authentication\x20failed.');_0xfaef12='10';_0x1d6759=_0x5c6d('0x1e');break;case 0xb:logger[_0x5c6d('0x5')]('All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.');_0xfaef12='11';_0x1d6759=_0x5c6d('0x1f');}}}catch(_0x299918){logger[_0x5c6d('0x20')](_0x5c6d('0x21'),JSON[_0x5c6d('0xe')](_0x299918));_0x19634d[_0x5c6d('0x13')]();}}function _0x1c3402(){logger[_0x5c6d('0x5')]('Close\x20Tilde\x20ASR\x20socket');_0x463cc7({'transcript':_0x3d5621,'confidence':_0x4522c1,'status':_0xfaef12,'status_message':_0x1d6759});}function _0x8f5e5(_0x34bc45){logger[_0x5c6d('0x20')](_0x5c6d('0x22'));if(!_[_0x5c6d('0x23')](_0x34bc45)){logger[_0x5c6d('0x20')](_[_0x5c6d('0x24')](_0x34bc45)?JSON[_0x5c6d('0xe')](_0x34bc45):_0x34bc45);}}_0x19634d['on']('open',_0x5a8896);_0x19634d['on'](_0x5c6d('0x25'),_0x20c4cd);_0x19634d['on'](_0x5c6d('0x26'),_0x1c3402);_0x19634d['on'](_0x5c6d('0x20'),_0x8f5e5);});};
\ No newline at end of file
+var _0x3a54=['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','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isNil','isObject','message','bluebird','lodash','moment','../../../../../../config/logger','exports','info','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','sha1','digest','Open\x20Tilde\x20ASR\x20socket','unix','send','data','close','EOS','error','stringify','terminate','parse','status','result','final','Tilde\x20ASR\x20hypoteses'];(function(_0x511033,_0x44a597){var _0x275387=function(_0x4c4aa4){while(--_0x4c4aa4){_0x511033['push'](_0x511033['shift']());}};_0x275387(++_0x44a597);}(_0x3a54,0x176));var _0x43a5=function(_0x3dc5d0,_0x3809f3){_0x3dc5d0=_0x3dc5d0-0x0;var _0x126dde=_0x3a54[_0x3dc5d0];return _0x126dde;};'use strict';var BPromise=require(_0x43a5('0x0'));var _=require(_0x43a5('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x43a5('0x2'));var crypto=require('crypto');var logger=require(_0x43a5('0x3'))('agi');module[_0x43a5('0x4')]=function(_0x20d652,_0x2e76f0,_0xdabeae,_0x28a771){return new BPromise(function(_0x1a9f9f,_0x4313aa){logger[_0x43a5('0x5')](_0x43a5('0x6'),_0x28a771||_0x43a5('0x7'));var _0x139253=new WebSocket(_0x28a771||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE',{'perMessageDeflate':![]});var _0x2ee099='';var _0x3962e3='0';var _0x5b3372='1';var _0x31acd5=_0x43a5('0x8');function _0x578002(_0x2a3831){var _0x53f25e=crypto[_0x43a5('0x9')](_0x43a5('0xa'));_0x53f25e['update'](_0x2a3831);return _0x53f25e[_0x43a5('0xb')]('hex');}function _0x30466c(){try{logger[_0x43a5('0x5')](_0x43a5('0xc'));var _0x30d918=moment()[_0x43a5('0xd')]();var _0x53d43b=_0x578002(_0x30d918+_0x2e76f0+_0xdabeae);_0x139253[_0x43a5('0xe')](JSON['stringify']({'appID':_0x2e76f0,'timestamp':_0x30d918,'appKey':_0x53d43b}));var _0x15fcd4=fs['createReadStream'](_0x20d652);_0x15fcd4['on'](_0x43a5('0xf'),function(_0x1bf2b3){_0x139253[_0x43a5('0xe')](_0x1bf2b3);});_0x15fcd4['on'](_0x43a5('0x10'),function(){_0x139253['send'](_0x43a5('0x11'));});}catch(_0x10d00b){logger[_0x43a5('0x12')]('Tilde\x20ASR\x20send\x20error',JSON[_0x43a5('0x13')](_0x10d00b));_0x139253[_0x43a5('0x14')]();}}function _0x5e8d28(_0x4e8acf){try{if(_0x4e8acf){var _0x40c98a=JSON[_0x43a5('0x15')](_0x4e8acf);switch(_0x40c98a[_0x43a5('0x16')]){case 0x0:if(_0x40c98a[_0x43a5('0x17')]){if(_0x40c98a[_0x43a5('0x17')][_0x43a5('0x18')]){logger[_0x43a5('0x5')](_0x43a5('0x19'),JSON['stringify'](_0x40c98a[_0x43a5('0x17')][_0x43a5('0x1a')]));_0x2ee099=_0x40c98a['result']['hypotheses'][0x0][_0x43a5('0x1b')];_0x3962e3=_0x40c98a[_0x43a5('0x17')][_0x43a5('0x1a')][0x0][_0x43a5('0x1c')];_0x5b3372='0';_0x31acd5=_0x43a5('0x1d');_0x139253[_0x43a5('0x14')]();}}break;case 0x1:logger['info'](_0x43a5('0x8'));_0x5b3372='1';_0x31acd5=_0x43a5('0x8');break;case 0x2:logger[_0x43a5('0x5')](_0x43a5('0x1e'));_0x5b3372='2';_0x31acd5=_0x43a5('0x1e');break;case 0x9:logger[_0x43a5('0x5')]('Not\x20available.\x20Max\x20load\x20limit\x20reached.');_0x5b3372='9';_0x31acd5=_0x43a5('0x1f');break;case 0xa:logger[_0x43a5('0x5')]('Authentication\x20failed.');_0x5b3372='10';_0x31acd5=_0x43a5('0x20');break;case 0xb:logger[_0x43a5('0x5')](_0x43a5('0x21'));_0x5b3372='11';_0x31acd5=_0x43a5('0x21');}}}catch(_0x5c7462){logger[_0x43a5('0x12')](_0x43a5('0x22'),JSON[_0x43a5('0x13')](_0x5c7462));_0x139253[_0x43a5('0x14')]();}}function _0x98a77(){logger[_0x43a5('0x5')](_0x43a5('0x23'));_0x1a9f9f({'transcript':_0x2ee099,'confidence':_0x3962e3,'status':_0x5b3372,'status_message':_0x31acd5});}function _0x4ecf03(_0x3b029b){logger[_0x43a5('0x12')](_0x43a5('0x24'));if(!_[_0x43a5('0x25')](_0x3b029b)){logger[_0x43a5('0x12')](_[_0x43a5('0x26')](_0x3b029b)?JSON[_0x43a5('0x13')](_0x3b029b):_0x3b029b);}}_0x139253['on']('open',_0x30466c);_0x139253['on'](_0x43a5('0x27'),_0x5e8d28);_0x139253['on'](_0x43a5('0x10'),_0x98a77);_0x139253['on'](_0x43a5('0x12'),_0x4ecf03);});};
\ No newline at end of file
index 753acc4..54a482b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2034=['./asr'];(function(_0x492638,_0x5cfc7f){var _0x1d4aca=function(_0x2760bb){while(--_0x2760bb){_0x492638['push'](_0x492638['shift']());}};_0x1d4aca(++_0x5cfc7f);}(_0x2034,0x156));var _0x4203=function(_0x1582cd,_0x211132){_0x1582cd=_0x1582cd-0x0;var _0x2ef951=_0x2034[_0x1582cd];return _0x2ef951;};var asr=require(_0x4203('0x0'));module['exports']={'asr':asr};
\ No newline at end of file
+var _0x4757=['./asr','exports'];(function(_0xd40e2c,_0x92be2){var _0x56c0b0=function(_0x4142f8){while(--_0x4142f8){_0xd40e2c['push'](_0xd40e2c['shift']());}};_0x56c0b0(++_0x92be2);}(_0x4757,0x1ac));var _0x7475=function(_0x569fef,_0x49c37a){_0x569fef=_0x569fef-0x0;var _0x11f20b=_0x4757[_0x569fef];return _0x11f20b;};var asr=require(_0x7475('0x0'));module[_0x7475('0x1')]={'asr':asr};
\ No newline at end of file
index e429cb7..2d57d96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc605=['E_AGI_SERVER_CLOSE','nextTick','inherits','net','events','EventEmitter','./error','./channel','127.0.0.1','emit','createServer','listening','connection','getConnections','error','destroy','E_AGI_SERVER_MAXCONNECTION','ready','E_AGI_SERVER_ERROR','code','close'];(function(_0x5b5ffe,_0x1c5874){var _0x2d12bc=function(_0x14d075){while(--_0x14d075){_0x5b5ffe['push'](_0x5b5ffe['shift']());}};_0x2d12bc(++_0x1c5874);}(_0xc605,0xff));var _0x5c60=function(_0x1ec33f,_0xac9a0a){_0x1ec33f=_0x1ec33f-0x0;var _0xacb3da=_0xc605[_0x1ec33f];return _0xacb3da;};'use strict';var util=require('util');var net=require(_0x5c60('0x0'));var EventEmitter=require(_0x5c60('0x1'))[_0x5c60('0x2')];var AGIError=require(_0x5c60('0x3'));var AGIChannel=require(_0x5c60('0x4'));var AGIServer=function(_0x350950,_0xed21cd,_0x3be2e1){var _0x12969d=this,_0x350950=_0x350950||0x11dd,_0xed21cd=_0xed21cd||_0x5c60('0x5'),_0x426590=null,_0x2f72d8=0x0;EventEmitter['call'](_0x12969d);function _0x1e5321(){if(!_0x350950){_0x12969d[_0x5c60('0x6')]('error',new AGIError('E_AGI_ARGUMENT_PORT'));return![];}_0x426590=net[_0x5c60('0x7')]();_0x426590['listen'](_0x350950,_0xed21cd);_0x426590['on'](_0x5c60('0x8'),function(){_0x12969d[_0x5c60('0x6')](_0x5c60('0x8'));});_0x426590['on'](_0x5c60('0x9'),function(_0x2732f3){_0x426590[_0x5c60('0xa')](function(_0x4ee8d4,_0x3e71e4){if(_0x4ee8d4){_0x12969d[_0x5c60('0x6')](_0x5c60('0xb'),new AGIError('E_AGI_SERVER_ERROR',_0x4ee8d4));}else if(_0x3be2e1&&_0x3be2e1<0x0){_0x12969d[_0x5c60('0x6')]('error',new AGIError('E_AGI_SERVER_VOICE_DISABLED'));_0x2732f3[_0x5c60('0xc')]();}else if(_0x3be2e1&&_0x3be2e1>0x0&&_0x3be2e1<_0x3e71e4){_0x2f72d8+=0x1;_0x12969d[_0x5c60('0x6')](_0x5c60('0xb'),new AGIError(_0x5c60('0xd'),_0x2f72d8));_0x2732f3['destroy']();}else{var _0x2655eb=new AGIChannel(_0x2732f3);_0x2655eb['on'](_0x5c60('0xe'),function(){_0x12969d[_0x5c60('0x6')]('connection',_0x2655eb);});}});});_0x426590['on'](_0x5c60('0xb'),function(_0x1f9663){_0x12969d[_0x5c60('0x6')](_0x5c60('0xb'),new AGIError(_0x5c60('0xf'),_0x1f9663[_0x5c60('0x10')]));});_0x426590['on'](_0x5c60('0x11'),function(){_0x12969d[_0x5c60('0x6')](_0x5c60('0x11'),new AGIError(_0x5c60('0x12')));});}process[_0x5c60('0x13')](function(){_0x1e5321();});};util[_0x5c60('0x14')](AGIServer,EventEmitter);module['exports']=function(_0x823f5a,_0x49310e,_0xc77dde){return new AGIServer(_0x823f5a,_0x49310e,_0xc77dde);};
\ No newline at end of file
+var _0xee77=['events','EventEmitter','./channel','127.0.0.1','call','emit','error','E_AGI_ARGUMENT_PORT','listen','listening','getConnections','E_AGI_SERVER_VOICE_DISABLED','destroy','E_AGI_SERVER_MAXCONNECTION','ready','connection','E_AGI_SERVER_ERROR','close','E_AGI_SERVER_CLOSE','nextTick','inherits','exports','util','net'];(function(_0x247ada,_0x3e6cfd){var _0x39f1a1=function(_0x33daf3){while(--_0x33daf3){_0x247ada['push'](_0x247ada['shift']());}};_0x39f1a1(++_0x3e6cfd);}(_0xee77,0x76));var _0x7ee7=function(_0x9cd4c3,_0x1c9b2c){_0x9cd4c3=_0x9cd4c3-0x0;var _0x4c9025=_0xee77[_0x9cd4c3];return _0x4c9025;};'use strict';var util=require(_0x7ee7('0x0'));var net=require(_0x7ee7('0x1'));var EventEmitter=require(_0x7ee7('0x2'))[_0x7ee7('0x3')];var AGIError=require('./error');var AGIChannel=require(_0x7ee7('0x4'));var AGIServer=function(_0x5df731,_0x4380d5,_0x225345){var _0x3e51c9=this,_0x5df731=_0x5df731||0x11dd,_0x4380d5=_0x4380d5||_0x7ee7('0x5'),_0x4182b1=null,_0x55b336=0x0;EventEmitter[_0x7ee7('0x6')](_0x3e51c9);function _0x174fd5(){if(!_0x5df731){_0x3e51c9[_0x7ee7('0x7')](_0x7ee7('0x8'),new AGIError(_0x7ee7('0x9')));return![];}_0x4182b1=net['createServer']();_0x4182b1[_0x7ee7('0xa')](_0x5df731,_0x4380d5);_0x4182b1['on'](_0x7ee7('0xb'),function(){_0x3e51c9['emit']('listening');});_0x4182b1['on']('connection',function(_0x2702da){_0x4182b1[_0x7ee7('0xc')](function(_0x37ea2f,_0x2af2f2){if(_0x37ea2f){_0x3e51c9[_0x7ee7('0x7')](_0x7ee7('0x8'),new AGIError('E_AGI_SERVER_ERROR',_0x37ea2f));}else if(_0x225345&&_0x225345<0x0){_0x3e51c9[_0x7ee7('0x7')](_0x7ee7('0x8'),new AGIError(_0x7ee7('0xd')));_0x2702da[_0x7ee7('0xe')]();}else if(_0x225345&&_0x225345>0x0&&_0x225345<_0x2af2f2){_0x55b336+=0x1;_0x3e51c9[_0x7ee7('0x7')](_0x7ee7('0x8'),new AGIError(_0x7ee7('0xf'),_0x55b336));_0x2702da['destroy']();}else{var _0x3553f3=new AGIChannel(_0x2702da);_0x3553f3['on'](_0x7ee7('0x10'),function(){_0x3e51c9[_0x7ee7('0x7')](_0x7ee7('0x11'),_0x3553f3);});}});});_0x4182b1['on'](_0x7ee7('0x8'),function(_0x2b27d2){_0x3e51c9[_0x7ee7('0x7')](_0x7ee7('0x8'),new AGIError(_0x7ee7('0x12'),_0x2b27d2['code']));});_0x4182b1['on'](_0x7ee7('0x13'),function(){_0x3e51c9[_0x7ee7('0x7')](_0x7ee7('0x13'),new AGIError(_0x7ee7('0x14')));});}process[_0x7ee7('0x15')](function(){_0x174fd5();});};util[_0x7ee7('0x16')](AGIServer,EventEmitter);module[_0x7ee7('0x17')]=function(_0x3852a2,_0x30fff1,_0x37f21c){return new AGIServer(_0x3852a2,_0x30fff1,_0x37f21c);};
\ No newline at end of file
index 1cb5f23..6c977b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0b0=['password','no\x20password\x20configured','ndassistant_url','bot','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','audiofile','streamFile','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','end','Enter\x20in\x20END\x20(%s)\x20block','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20selected','no\x20trunk\x20found','trunk_name','SIP/%s/%s','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','retry','file_id','no\x20file\x20audio\x20selected','getData','response','maxdigit','test','mindigit','hiddendigitsnum','hiddendigitspos','first','substr','generate','getsecretdigits','goalname','GOAL\x20%s','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','aws\x20Polly\x20is\x20unreachable','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','aws_bot_name','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','%s/recordings/%s','beep','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','no\x20appsecret\x20configured','recordFile','intKey','tilde\x20%s\x20file\x20created','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','no\x20condition\x20configured','true','EVAL\x20CONDITION\x20%s\x20%s','condition','false','gotoiftime','interval_id','no\x20interval\x20configured','getIntervals','no\x20intervals\x20found','IFTIME\x20%s\x20%s','Enter\x20in\x20HANGUP\x20(%s)\x20block','hangup','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','NOBEEP','ispeech\x20%s\x20file\x20created','ispeechtts','unlink','ispeech\x20TTS\x20is\x20unreachable','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','AGENT\x20%s\x20FOUND\x20BY','success','failure','Enter\x20in\x20LOGOUT\x20(%s)\x20block','no\x20find\x20by\x20configured','AGENT\x20%s\x20NOT\x20FOUND\x20BY','Enter\x20in\x20MATH\x20(%s)\x20block','operation','no\x20operation\x20configured','math\x20%s','%s[%s]','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','FIND\x20AGENT\x20%s\x20BY\x20%s','pause_id','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','no\x20file\x20audio\x20found','PLAYBACK','Executed\x20command\x20%s\x20%s','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','getVoiceQueue','indexOf','toLowerCase','macro','gosub','record','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%s_%s','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','statusCode','200','%s_STATUS_MESSAGE','variable\x20%s\x20set','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','digits','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','sayphonetic','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','account_id','Smtp','no\x20mail\x20account\x20found','email','user','bcc','subject','service','host','port','authentication','auth','template_id','Trying\x20SendMail\x20with\x20account\x20%s','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','SENDFAX\x20block\x20not\x20implemented','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20found','sms_text','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','Enter\x20in\x20SET\x20(%s)\x20block','variable_value','start','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','yes','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','no\x20subproject\x20selected','project_id','agi://%s/square,\x22%s\x22,\x22%s\x22','AGI','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','no\x20apiKey\x20configured','googleCloudTTS','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','tts','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','no\x20variable\x20selected','exports','path','util','shelljs','odbc','randomstring','mustache','request-promise','../../config/environment','./scripts','rawHeaders','rawBody','menu','getdigits','rpc','mailRpc','prototype','getVariable','then','name','catch','getSquareProject','getSquareOdbc','dsn','getUser','getUserById','getTrunk','getTrunkById','getSound','getSoundById','getSoundPath','save_name','getMailAccount','sendMailMessage','getIntervalById','map','Intervals','interval','format','%s/sounds/converted/%s','getQueryOdbc','open','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','getSmsAccountById','createSmsMessage','createSquareDetailsReport','label','agicommand','arg_1','channel','callerid','createSquareRecording','uniqueid','calleridname','context','extension','priority','accountcode','dnid','file','createSquareMessage','createCmContact','isNil','random','lastName','phone','list_id','scheduledAt','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPause','getPauseById','agentPause','agent','agentUnpause','agentLogout','agentLogin','internal','%s/%s@from-sip/n','LOCAL','shellCommand','exec','trim','replace','apiKey','google_cloud_tts_text_type','text','ssmlGender','MALE','MP3','googleTTS','google_tts_language','restAPI','timeout','number','includes','PUT','body','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','computedVariables','uri','url','render','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusMessage','message','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','key','googleDialogflowV2','client_email','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','ispeech_tts_language','en-US','ispeechASR','isConfigured','model','awsPolly','aws_polly_voice','Amy','awsLex','aws_access_key_id','aws_secret_access_key','aws_lex_region','googleASR','google_asr_language','tildeASR','appsecret','clone','isString','replaceAllVariables','hasOwnProperty','isPlainObject','isArray','length','recursiveNodeIndex','isEmpty','%s.%s','saveRestApiResult','setVariable','replaceObjectAllVariables','split','replaceAll','extra','result','sync','maxRetry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','no\x20text\x20configured','MRCPSynth','noop','Executed\x20command\x20MRCPSynth\x20%s','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','no\x20grammar\x20configured','MRCPRecog','getAndSetVariable','RECOG_CONFIDENCE()','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','agi','Enter\x20in\x20AGI\x20(%s)\x20block','command','args','Enter\x20in\x20ANSWER\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','wait','answer','callback','Enter\x20in\x20CALLBACK\x20(%s)\x20block','no\x20list\x20selected','delay','add','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','sestektts','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','LUMENVOX_ASR_CONFIDENCE','LUMENVOX_ASR_TRANSCRIPT','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','no\x20database\x20selected','odbc_id','no\x20odbc\x20database\x20found','no\x20query\x20configured','query:\x20%s','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','dial','debug','sip_id','no\x20user\x20selected','no\x20user\x20found','DIAL','SIP/%s','opts','Executed\x20command\x20%s','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','DIALOGFLOW_%s','toUpperCase','speech','out','Dialogflow\x20is\x20unreachable','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','dialogflowV2_project_id','no\x20project_id\x20configured','no\x20client_email\x20configured','no\x20private_key\x20configured','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20ndauth\x20url\x20configured','username'];(function(_0x2849e2,_0x23a701){var _0x3e5418=function(_0x264791){while(--_0x264791){_0x2849e2['push'](_0x2849e2['shift']());}};_0x3e5418(++_0x23a701);}(_0xf0b0,0xd1));var _0x0f0b=function(_0x1e52de,_0x493da4){_0x1e52de=_0x1e52de-0x0;var _0x1f9dbf=_0xf0b0[_0x1e52de];return _0x1f9dbf;};'use strict';var fs=require('fs');var path=require(_0x0f0b('0x0'));var util=require(_0x0f0b('0x1'));var _=require('lodash');var sh=require(_0x0f0b('0x2'));var odbc=require(_0x0f0b('0x3'))();var rs=require(_0x0f0b('0x4'));var moment=require('moment');var Mustache=require(_0x0f0b('0x5'));var rp=require(_0x0f0b('0x6'));var logger=require('../../config/logger')('agi');var config=require(_0x0f0b('0x7'));var scripts=require(_0x0f0b('0x8'));var FILES_PATH='/var/opt/motion2/server/files';var recursiveMapAttributes=[_0x0f0b('0x9'),_0x0f0b('0xa')];var verticesWithRetry=[_0x0f0b('0xb'),_0x0f0b('0xc'),'getsecretdigits'];var AGIVertices=function(_0x327c7f,_0x47bf98,_0xfc4d57){this['channel']=_0x327c7f;this[_0x0f0b('0xd')]=_0x47bf98;this[_0x0f0b('0xe')]=_0xfc4d57;};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x10')]=function(_0x5ca9c9,_0x36aa82){this['rpc']['getVariableById'](_0x5ca9c9)[_0x0f0b('0x11')](function(_0x2382ff){_0x36aa82(null,_0x2382ff?_0x2382ff[_0x0f0b('0x12')]:![]);})[_0x0f0b('0x13')](function(_0x500eea){_0x36aa82(_0x500eea);});};AGIVertices['prototype']['getVoiceQueue']=function(_0x362aa0,_0x3d907d){this[_0x0f0b('0xd')]['getVoiceQueueById'](_0x362aa0)[_0x0f0b('0x11')](function(_0x53dedc){_0x3d907d(null,_0x53dedc?_0x53dedc[_0x0f0b('0x12')]:![]);})[_0x0f0b('0x13')](function(_0x1334e6){_0x3d907d(_0x1334e6);});};AGIVertices['prototype'][_0x0f0b('0x14')]=function(_0x3d6293,_0xc98412){this[_0x0f0b('0xd')]['getSquareProjectById'](_0x3d6293)[_0x0f0b('0x11')](function(_0xd0f672){_0xc98412(null,_0xd0f672?_0xd0f672[_0x0f0b('0x12')]:![]);})[_0x0f0b('0x13')](function(_0x2cdd2d){_0xc98412(_0x2cdd2d);});};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x15')]=function(_0x551bea,_0x189b38){this[_0x0f0b('0xd')]['getSquareOdbcById'](_0x551bea)[_0x0f0b('0x11')](function(_0x302a9f){_0x189b38(null,_0x302a9f?_0x302a9f[_0x0f0b('0x16')]:![]);})[_0x0f0b('0x13')](function(_0x5d8060){_0x189b38(_0x5d8060);});};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x17')]=function(_0xb76fa1,_0x358327){this[_0x0f0b('0xd')][_0x0f0b('0x18')](_0xb76fa1)[_0x0f0b('0x11')](function(_0x2647fb){_0x358327(null,_0x2647fb?_0x2647fb[_0x0f0b('0x12')]:![]);})['catch'](function(_0x5bac1a){_0x358327(_0x5bac1a);});};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x19')]=function(_0x1c6d68,_0x232020){this[_0x0f0b('0xd')][_0x0f0b('0x1a')](_0x1c6d68)['then'](function(_0x2a8e27){_0x232020(null,_0x2a8e27?_0x2a8e27['name']:![]);})['catch'](function(_0x4b61c5){_0x232020(_0x4b61c5);});};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x1b')]=function(_0x25359d,_0x3fb4f7){var _0x16de11=this;this[_0x0f0b('0xd')][_0x0f0b('0x1c')](_0x25359d)[_0x0f0b('0x11')](function(_0x155902){_0x3fb4f7(null,_0x155902?_0x16de11[_0x0f0b('0x1d')](_0x155902[_0x0f0b('0x1e')]):![]);})[_0x0f0b('0x13')](function(_0x275791){_0x3fb4f7(_0x275791);});};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x1f')]=function(_0xe3f647,_0x388235){this[_0x0f0b('0xd')]['getMailAccountById'](_0xe3f647)[_0x0f0b('0x11')](function(_0xabb8dc){_0x388235(null,_0xabb8dc?_0xabb8dc:![]);})['catch'](function(_0x376b24){_0x388235(_0x376b24);});};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x20')]=function(_0x17b750,_0x2acd9f,_0x30ec8f){this[_0x0f0b('0xe')][_0x0f0b('0x20')](_0x17b750,_0x2acd9f)['then'](function(){_0x30ec8f(null);})['catch'](function(_0x13bf04){_0x30ec8f(_0x13bf04);});};AGIVertices['prototype']['getIntervals']=function(_0x4bc766,_0x4f238b){this[_0x0f0b('0xd')][_0x0f0b('0x21')](_0x4bc766)[_0x0f0b('0x11')](function(_0x582b92){if(_0x582b92){if(_0x582b92['IntervalId']){_0x4f238b(null,[_0x582b92['interval']]);}else{_0x4f238b(null,_[_0x0f0b('0x22')](_0x582b92[_0x0f0b('0x23')],_0x0f0b('0x24')));}}else{_0x4f238b(null,![]);}})[_0x0f0b('0x13')](function(_0x59edb0){_0x4f238b(_0x59edb0);});};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x1d')]=function(_0x3244a9){return util[_0x0f0b('0x25')](_0x0f0b('0x26'),FILES_PATH,_0x3244a9);};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x27')]=function(_0x25047a,_0xf1838f,_0x32906d){odbc[_0x0f0b('0x28')](_0x25047a,function(_0x5ce108){if(_0x5ce108){logger[_0x0f0b('0x29')]('Error\x20getting\x20ODBC\x20connection\x20%s',_0x5ce108);_0x32906d(_0x5ce108);}else{logger[_0x0f0b('0x2a')](_0x0f0b('0x2b'));odbc[_0x0f0b('0x2c')](_0xf1838f,function(_0x2de5f8,_0x35705b){if(_0x2de5f8){logger[_0x0f0b('0x2a')](_0x0f0b('0x2d'),_0xf1838f);_0x32906d(_0x2de5f8);}else{logger[_0x0f0b('0x2a')](_0x0f0b('0x2e'),_0xf1838f);odbc[_0x0f0b('0x2f')](function(_0x213033){if(_0x213033){logger[_0x0f0b('0x29')](_0x0f0b('0x30'),_0x213033);}_0x32906d(null,_0x35705b);});}});}});};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x31')]=function(_0x4f9553,_0x4eb7ef){this[_0x0f0b('0xd')][_0x0f0b('0x32')](_0x4f9553)[_0x0f0b('0x11')](function(_0x2bc4eb){_0x4eb7ef(null,_0x2bc4eb?_0x2bc4eb:![]);})[_0x0f0b('0x13')](function(_0xd4f201){_0x4eb7ef(_0xd4f201);});};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x33')]=function(_0x3c5d50,_0x2a7037){this[_0x0f0b('0xd')][_0x0f0b('0x33')](_0x3c5d50)['then'](function(_0x38388a){_0x2a7037(null,_0x38388a);})[_0x0f0b('0x13')](function(_0x3a562d){_0x2a7037(_0x3a562d);});};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x34')]=function(_0x1ab81c,_0x1f09ab,_0x19590a){this['rpc'][_0x0f0b('0x34')]({'uniqueid':this['channel']['uniqueid'],'node':_0x1ab81c[_0x0f0b('0x35')],'application':_0x1ab81c[_0x0f0b('0x36')],'data':_0x1f09ab||null,'project_name':this['channel'][_0x0f0b('0x37')],'callerid':this[_0x0f0b('0x38')][_0x0f0b('0x39')]})[_0x0f0b('0x11')](function(_0xf4abf4){if(_0x19590a){_0x19590a(null,_0xf4abf4);}})[_0x0f0b('0x13')](function(_0xca793c){if(_0x19590a){_0x19590a(_0xca793c);}});};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x3a')]=function(_0x2fea13,_0x441caa,_0x4a7aa1,_0x1f5082){this[_0x0f0b('0xd')]['createSquareRecording']({'uniqueid':this[_0x0f0b('0x38')][_0x0f0b('0x3b')],'callerid':this[_0x0f0b('0x38')][_0x0f0b('0x39')],'calleridname':this['channel'][_0x0f0b('0x3c')],'context':this[_0x0f0b('0x38')][_0x0f0b('0x3d')],'extension':this[_0x0f0b('0x38')][_0x0f0b('0x3e')],'priority':this[_0x0f0b('0x38')][_0x0f0b('0x3f')],'accountcode':this[_0x0f0b('0x38')][_0x0f0b('0x40')],'dnid':this[_0x0f0b('0x38')][_0x0f0b('0x41')],'projectName':this[_0x0f0b('0x38')]['arg_1'],'saveName':_0x441caa,'filename':_0x2fea13[_0x0f0b('0x42')]||_0x441caa,'savePath':_0x4a7aa1})[_0x0f0b('0x11')](function(_0x381118){_0x1f5082(null,_0x381118);})[_0x0f0b('0x13')](function(_0x10c331){_0x1f5082(_0x10c331);});};AGIVertices['prototype'][_0x0f0b('0x43')]=function(_0x59b7ff,_0x20c01c,_0x238323,_0x4fd216,_0x584a89){this['rpc'][_0x0f0b('0x43')]({'uniqueid':this[_0x0f0b('0x38')]['uniqueid'],'body':_0x59b7ff,'direction':_0x20c01c,'providerName':_0x238323,'providerResponse':_0x4fd216})[_0x0f0b('0x11')](function(_0x1e9397){if(_0x584a89){_0x584a89(null,_0x1e9397);}})[_0x0f0b('0x13')](function(_0x677129){if(_0x584a89){_0x584a89(_0x677129);}});};AGIVertices[_0x0f0b('0xf')]['createCmContact']=function(_0x3c373a,_0x3b1ae9){this['rpc'][_0x0f0b('0x44')]({'firstName':_['isEmpty'](_0x3c373a['name'])||_[_0x0f0b('0x45')](_0x3c373a['name'])?'callback_'+Math[_0x0f0b('0x46')]():_0x3c373a[_0x0f0b('0x12')],'lastName':_['isEmpty'](_0x3c373a[_0x0f0b('0x47')])||_[_0x0f0b('0x45')](_0x3c373a[_0x0f0b('0x47')])?null:_0x3c373a[_0x0f0b('0x47')],'phone':_0x3c373a[_0x0f0b('0x48')],'ListId':_0x3c373a[_0x0f0b('0x49')],'scheduledat':_0x3c373a[_0x0f0b('0x4a')],'callbackUniqueid':this[_0x0f0b('0x38')][_0x0f0b('0x3b')],'tags':'callback','description':_0x0f0b('0x4b')+_0x3c373a[_0x0f0b('0x4a')][_0x0f0b('0x4c')](),'priority':_0x3c373a[_0x0f0b('0x4d')]})['then'](function(_0x3b873d){_0x3b1ae9(null,_0x3b873d);})[_0x0f0b('0x13')](function(_0x2b88f8){_0x3b1ae9(_0x2b88f8);});};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x4e')]=function(_0x5da44e,_0xdfad7f){this[_0x0f0b('0xd')][_0x0f0b('0x4f')](_0x5da44e)[_0x0f0b('0x11')](function(_0x375f0f){_0xdfad7f(null,_0x375f0f?_0x375f0f[_0x0f0b('0x12')]:![]);})[_0x0f0b('0x13')](function(_0x4b6520){_0xdfad7f(_0x4b6520);});};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x50')]=function(_0xa2db5a,_0x465c7e,_0x5c4649){var _0x5718fc={'role':_0x0f0b('0x51')};_0x5718fc[_0xa2db5a]=this['channel'][_0x0f0b('0x39')];this[_0x0f0b('0xd')][_0x0f0b('0x50')](_0x5718fc,_0x465c7e,this['channel'][_0x0f0b('0x3b')])['then'](function(_0xb61db){_0x5c4649(null,_['isNil'](_0xb61db)?![]:!![]);})['catch'](function(_0x28a97f){logger[_0x0f0b('0x29')](_0x28a97f);_0x5c4649(null,![]);});};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x52')]=function(_0x282005,_0xb1096d){var _0x94d180={'role':'agent'};_0x94d180[_0x282005]=this[_0x0f0b('0x38')][_0x0f0b('0x39')];this[_0x0f0b('0xd')][_0x0f0b('0x52')](_0x94d180)[_0x0f0b('0x11')](function(_0x58d21c){_0xb1096d(null,_[_0x0f0b('0x45')](_0x58d21c)?![]:!![]);})[_0x0f0b('0x13')](function(_0x4c3ae4){logger['error'](_0x4c3ae4);_0xb1096d(null,![]);});};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x53')]=function(_0x510903,_0x303259){var _0x1c4ba3={'role':_0x0f0b('0x51')};_0x1c4ba3[_0x510903]=this[_0x0f0b('0x38')][_0x0f0b('0x39')];this[_0x0f0b('0xd')][_0x0f0b('0x53')](_0x1c4ba3)[_0x0f0b('0x11')](function(_0x23e450){_0x303259(null,_[_0x0f0b('0x45')](_0x23e450)?![]:!![]);})[_0x0f0b('0x13')](function(_0x1f69a4){logger[_0x0f0b('0x29')](_0x1f69a4);_0x303259(null,![]);});};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x54')]=function(_0x247e35,_0x192c04){var _0x18700a={'role':_0x0f0b('0x51')};_0x18700a[_0x247e35]=this[_0x0f0b('0x38')][_0x0f0b('0x39')];var _0x428209=_0x247e35!=_0x0f0b('0x55')?util[_0x0f0b('0x25')](_0x0f0b('0x56'),_0x0f0b('0x57'),this[_0x0f0b('0x38')][_0x0f0b('0x39')]):undefined;this[_0x0f0b('0xd')]['agentLogin'](_0x18700a,_0x428209)[_0x0f0b('0x11')](function(_0x187e44){_0x192c04(null,_[_0x0f0b('0x45')](_0x187e44)?![]:!![]);})['catch'](function(_0x4e4dd5){logger['error'](_0x4e4dd5);_0x192c04(null,![]);});};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x58')]=function(_0xcfa93e,_0x4ad982){sh[_0x0f0b('0x59')](_[_0x0f0b('0x5a')](_0xcfa93e),function(_0x5b7b35,_0x194ec8){var _0x11b1fe=_0x194ec8[_0x0f0b('0x5b')](/(\r\n|\n|\r)/gm,'');_0x4ad982(null,_0x11b1fe);});};AGIVertices[_0x0f0b('0xf')]['googleCloudTTS']=function(_0x8bf17,_0x5d6403){scripts['googleCloudTTS'](_0x8bf17[_0x0f0b('0x5c')],_0x8bf17[_0x0f0b('0x5d')]||_0x0f0b('0x5e'),_0x8bf17[_0x0f0b('0x5e')],_0x8bf17['languageCode']||'en-US',_0x8bf17[_0x0f0b('0x5f')]||_0x0f0b('0x60'),_0x8bf17['audioEncoding']||_0x0f0b('0x61'))[_0x0f0b('0x11')](function(_0x410fef){_0x5d6403(null,_0x410fef);})[_0x0f0b('0x13')](function(_0x6343d2){_0x5d6403(_0x6343d2);});};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x62')]=function(_0x49012d,_0x3b045d){scripts[_0x0f0b('0x62')](_0x49012d[_0x0f0b('0x5e')],_0x49012d[_0x0f0b('0x63')]||'en',0x1)[_0x0f0b('0x11')](function(_0x79eb21){_0x3b045d(null,_0x79eb21);})[_0x0f0b('0x13')](function(_0x31a8e7){_0x3b045d(_0x31a8e7);});};AGIVertices['prototype'][_0x0f0b('0x64')]=function(_0x20b82f,_0x861d3f){var _0x58cca8={'uri':_0x20b82f['url'],'method':_0x20b82f['method'],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x20b82f[_0x0f0b('0x65')])===_0x0f0b('0x66')&&parseInt(_0x20b82f[_0x0f0b('0x65')])>=0x1?parseInt(_0x20b82f[_0x0f0b('0x65')])*0x3e8:0x5*0x3e8};if(_[_0x0f0b('0x67')](['POST',_0x0f0b('0x68')],_0x58cca8['method']['toUpperCase']())){try{_0x58cca8[_0x0f0b('0x69')]=_0x20b82f[_0x0f0b('0xa')]?JSON[_0x0f0b('0x6a')](_0x20b82f[_0x0f0b('0xa')]):{};}catch(_0x274dca){logger[_0x0f0b('0x29')](_0x0f0b('0x6b'),_0x274dca);}}try{_0x58cca8[_0x0f0b('0x6c')]=_0x20b82f[_0x0f0b('0x9')]?JSON[_0x0f0b('0x6a')](_0x20b82f[_0x0f0b('0x9')]):{};}catch(_0x33683e){logger[_0x0f0b('0x29')]('An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function',_0x33683e);}if(_0x20b82f[_0x0f0b('0x6d')]){try{var _0x141547=require(_0x20b82f[_0x0f0b('0x6d')])['sync'](this,_0x58cca8);_0x58cca8[_0x0f0b('0x6e')]=Mustache['render'](_0x20b82f[_0x0f0b('0x6f')],_0x141547,{},['$$','$$']);if(_0x58cca8['headers']){_0x58cca8[_0x0f0b('0x6c')]=JSON[_0x0f0b('0x6a')](Mustache['render'](JSON['stringify'](_0x58cca8[_0x0f0b('0x6c')]),_0x141547,{},['$$','$$']));}if(_0x58cca8[_0x0f0b('0x69')]){_0x58cca8['body']=JSON[_0x0f0b('0x6a')](Mustache[_0x0f0b('0x70')](JSON[_0x0f0b('0x71')](_0x58cca8[_0x0f0b('0x69')]),_0x141547,{},['$$','$$']));}}catch(_0x1cf692){logger[_0x0f0b('0x29')](_0x0f0b('0x72'),_0x1cf692);}}rp(_0x58cca8)[_0x0f0b('0x11')](function(_0x3c75d7){var _0x5308dc={'statusCode':_0x3c75d7['statusCode']||0xc8,'statusMessage':_0x3c75d7[_0x0f0b('0x73')]||'OK','headers':_0x3c75d7['headers']||{},'body':_0x3c75d7[_0x0f0b('0x69')]||{}};_0x861d3f(null,_0x5308dc);})[_0x0f0b('0x13')](function(_0x4cebd3){var _0x3f962d={'statusCode':_0x4cebd3['statusCode']||0x1f4,'statusMessage':_0x4cebd3[_0x0f0b('0x74')]||_0x0f0b('0x75'),'headers':_0x4cebd3[_0x0f0b('0x76')]['headers']||{},'body':_0x4cebd3[_0x0f0b('0x76')][_0x0f0b('0x69')]||{}};_0x861d3f(null,_0x3f962d);});};AGIVertices[_0x0f0b('0xf')]['googleDialogflow']=function(_0x5b3fbc,_0x354bd5){scripts[_0x0f0b('0x77')](this['channel']['uniqueid'],_0x5b3fbc[_0x0f0b('0x78')],_0x5b3fbc['text'],_0x5b3fbc['dialogflow_language']||'en')[_0x0f0b('0x11')](function(_0x10097e){_0x354bd5(null,_0x10097e);})[_0x0f0b('0x13')](function(_0x20b1ae){_0x354bd5(_0x20b1ae);});};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x79')]=function(_0x5aa3e8,_0x243fb0){scripts[_0x0f0b('0x79')](this[_0x0f0b('0x38')][_0x0f0b('0x3b')],_0x5aa3e8['dialogflowV2_project_id'],_0x5aa3e8[_0x0f0b('0x7a')],_0x5aa3e8[_0x0f0b('0x7b')],_0x5aa3e8[_0x0f0b('0x5e')],_0x5aa3e8[_0x0f0b('0x7c')]||'en')[_0x0f0b('0x11')](function(_0x353587){_0x243fb0(null,_0x353587);})[_0x0f0b('0x13')](function(_0x2845e0){_0x243fb0(_0x2845e0);});};AGIVertices['prototype']['sestekNDA']=function(_0x5c7e34,_0x173d69){scripts[_0x0f0b('0x7d')](this[_0x0f0b('0x38')],_0x5c7e34)['then'](function(_0x566c3a){_0x173d69(null,_0x566c3a);})['catch'](function(_0x5e2b12){_0x173d69(_0x5e2b12);});};AGIVertices['prototype'][_0x0f0b('0x7e')]=function(_0x3aa7af,_0x39fa07){scripts[_0x0f0b('0x7e')](_0x3aa7af[_0x0f0b('0x78')],_0x3aa7af[_0x0f0b('0x5e')],_0x3aa7af[_0x0f0b('0x7f')]||_0x0f0b('0x80'),_0x3aa7af['speed'])[_0x0f0b('0x11')](function(_0x2e6a81){_0x39fa07(null,_0x2e6a81);})[_0x0f0b('0x13')](function(_0x13601e){_0x39fa07(_0x13601e);});};AGIVertices['prototype']['ispeechASR']=function(_0x18b732,_0x2370d4,_0x241fcd){scripts[_0x0f0b('0x81')](_0x2370d4,_0x18b732[_0x0f0b('0x78')],_0x18b732['ispeech_asr_language']||'en-US',this[_0x0f0b('0x82')](_0x18b732['model'])?_0x18b732[_0x0f0b('0x83')]:undefined)['then'](function(_0x4b4c33){_0x241fcd(null,_0x4b4c33);})[_0x0f0b('0x13')](function(_0x25d160){_0x241fcd(_0x25d160);});};AGIVertices['prototype'][_0x0f0b('0x84')]=function(_0x7d8b77,_0x2fd386){scripts[_0x0f0b('0x84')](_0x7d8b77['aws_access_key_id'],_0x7d8b77['aws_secret_access_key'],_0x7d8b77['aws_polly_region'],_0x7d8b77[_0x0f0b('0x85')]||_0x0f0b('0x86'),_0x7d8b77['text'],_0x7d8b77['aws_text_type']||_0x0f0b('0x5e'))[_0x0f0b('0x11')](function(_0x31dbf0){_0x2fd386(null,_0x31dbf0);})[_0x0f0b('0x13')](function(_0x301538){_0x2fd386(_0x301538);});};AGIVertices[_0x0f0b('0xf')]['awsLex']=function(_0x2ec75d,_0x9a355a){scripts[_0x0f0b('0x87')](this[_0x0f0b('0x38')][_0x0f0b('0x3b')],_0x2ec75d[_0x0f0b('0x88')],_0x2ec75d[_0x0f0b('0x89')],_0x2ec75d[_0x0f0b('0x8a')],_0x2ec75d[_0x0f0b('0x5e')],_0x2ec75d['aws_bot_name'])['then'](function(_0x10cd5d){_0x9a355a(null,_0x10cd5d);})['catch'](function(_0x55f526){_0x9a355a(_0x55f526);});};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x8b')]=function(_0x565cfa,_0x19cbab,_0x347dfa){scripts[_0x0f0b('0x8b')](_0x19cbab,_0x565cfa['key'],_0x565cfa[_0x0f0b('0x8c')]||_0x0f0b('0x80'))[_0x0f0b('0x11')](function(_0x325927){_0x347dfa(null,_0x325927);})[_0x0f0b('0x13')](function(_0x5dc0b9){_0x347dfa(_0x5dc0b9);});};AGIVertices['prototype'][_0x0f0b('0x8d')]=function(_0x82dcda,_0x116090,_0x475dcc){scripts[_0x0f0b('0x8d')](_0x116090,_0x82dcda['appid'],_0x82dcda[_0x0f0b('0x8e')],_0x82dcda['uri'])[_0x0f0b('0x11')](function(_0x4b1472){_0x475dcc(null,_0x4b1472);})[_0x0f0b('0x13')](function(_0x578481){_0x475dcc(_0x578481);});};AGIVertices[_0x0f0b('0xf')]['clear']=function(_0x47d422){var _0x489a26=_[_0x0f0b('0x67')](verticesWithRetry,_0x47d422[_0x0f0b('0x36')])?_0x47d422:_[_0x0f0b('0x8f')](_0x47d422);for(var _0x26fe89 in _0x489a26){if(_0x489a26['hasOwnProperty'](_0x26fe89)){if(_0x489a26[_0x26fe89]&&_[_0x0f0b('0x90')](_0x489a26[_0x26fe89])){if(_[_0x0f0b('0x67')](recursiveMapAttributes,_0x26fe89)){_0x489a26[_0x26fe89]=this['replaceObjectAllVariables'](_0x489a26[_0x26fe89]);}else{_0x489a26[_0x26fe89]=this[_0x0f0b('0x91')](_0x489a26[_0x26fe89]);}}}}return _0x489a26;};AGIVertices[_0x0f0b('0xf')]['recursiveNodeIndex']=function(_0x1fcc13){for(var _0xbbc5a9 in _0x1fcc13){if(_0x1fcc13[_0x0f0b('0x92')](_0xbbc5a9)){if(_[_0x0f0b('0x93')](_0x1fcc13[_0xbbc5a9])){this['recursiveNodeIndex'](_0x1fcc13[_0xbbc5a9]);}else if(_[_0x0f0b('0x94')](_0x1fcc13[_0xbbc5a9])){for(var _0x49a457=0x0;_0x49a457<_0x1fcc13[_0xbbc5a9][_0x0f0b('0x95')];_0x49a457++){this[_0x0f0b('0x96')](_0x1fcc13[_0xbbc5a9][_0x49a457]);}}else if(_[_0x0f0b('0x90')](_0x1fcc13[_0xbbc5a9])){_0x1fcc13[_0xbbc5a9]=this['replaceAllVariables'](_0x1fcc13[_0xbbc5a9]);}}}};AGIVertices[_0x0f0b('0xf')]['saveRestApiResult']=function(_0x26870f,_0x470cec){for(var _0x36d90b in _0x26870f){if(_0x26870f[_0x0f0b('0x92')](_0x36d90b)){if(_[_0x0f0b('0x93')](_0x26870f[_0x36d90b])){if(!_[_0x0f0b('0x97')](_0x26870f[_0x36d90b])){this['saveRestApiResult'](_0x26870f[_0x36d90b],util[_0x0f0b('0x25')](_0x0f0b('0x98'),_0x470cec,_0x36d90b));}}else if(_[_0x0f0b('0x94')](_0x26870f[_0x36d90b])){for(var _0xad0b09=0x0;_0xad0b09<_0x26870f[_0x36d90b][_0x0f0b('0x95')];_0xad0b09++){this[_0x0f0b('0x99')](_0x26870f[_0x36d90b][_0xad0b09],util[_0x0f0b('0x25')]('%s.%s',_0x470cec,_0x36d90b+'['+_0xad0b09+']'));}}else{if(!_[_0x0f0b('0x45')](_0x26870f[_0x36d90b])){this[_0x0f0b('0x38')][_0x0f0b('0x9a')](util['format']('%s.%s',_0x470cec,_0x36d90b),_0x26870f[_0x36d90b]);}}}}};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x9b')]=function(_0x49c3ea){try{var _0x5b535c=JSON[_0x0f0b('0x6a')](_0x49c3ea);this[_0x0f0b('0x96')](_0x5b535c);return JSON['stringify'](_0x5b535c);}catch(_0x3e3d7c){return this[_0x0f0b('0x91')](_0x49c3ea);}};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x91')]=function(_0x28bb1a){var _0x28cacd=_0x28bb1a[_0x0f0b('0x9c')]('{');for(var _0x7b38b9=0x1;_0x7b38b9<_0x28cacd[_0x0f0b('0x95')];_0x7b38b9+=0x1){var _0x785406=_0x28cacd[_0x7b38b9][_0x0f0b('0x9c')]('}');if(_0x785406[_0x0f0b('0x95')]>0x1){_0x28bb1a=_0x28bb1a[_0x0f0b('0x9d')]('{'+_0x785406[0x0]+'}',this['channel'][_0x0f0b('0x10')](_0x785406[0x0])[_0x0f0b('0x9e')]||_0x785406[0x0]);}}if(_0x28cacd[_0x0f0b('0x95')]===0x1){return _0x28bb1a[_0x0f0b('0x4c')]();}return this['replaceAllVariables'](_0x28bb1a);};AGIVertices[_0x0f0b('0xf')]['getAndSetVariable']=function(_0x3a8784,_0x1b0ea0){var _0x3ce5d6=this[_0x0f0b('0x38')]['getVariable'](_0x3a8784);if(_0x3ce5d6[_0x0f0b('0x9f')]===-0x1){return _0x3ce5d6;}logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')]('The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s',_0x1b0ea0,_0x3ce5d6[_0x0f0b('0x9e')]));return this[_0x0f0b('0x38')][_0x0f0b('0x9a')](_0x1b0ea0,_0x3ce5d6['extra']);};AGIVertices['prototype'][_0x0f0b('0x82')]=function(_0x140551){return _0x140551&&_0x140551!=='0'&&_0x140551!=='-1'&&_0x140551!=='';};AGIVertices[_0x0f0b('0xf')]['maxRetry']=function(_0x354fdd){this[_0x0f0b('0x34')][_0x0f0b('0xa0')](this,_0x354fdd,'-');_0x354fdd['retry']=_0x354fdd[_0x0f0b('0xa1')];return{'code':0xc8,'result':'-'};};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0xa2')]=function(_0x314897){logger['info'](util[_0x0f0b('0x25')](_0x0f0b('0xa3'),_0x314897[_0x0f0b('0x35')]));if(!this[_0x0f0b('0x82')](_0x314897[_0x0f0b('0x5e')])){return this[_0x0f0b('0x38')]['noop'](_0x0f0b('0xa4'));}var _0x2f38d2='\x22'+_0x314897[_0x0f0b('0x5e')]+'\x22';if(this[_0x0f0b('0x82')](_0x314897[_0x0f0b('0x76')])){_0x2f38d2+=','+_0x314897[_0x0f0b('0x76')];}var _0x368edb=this[_0x0f0b('0x38')]['exec'](_0x0f0b('0xa5'),_0x2f38d2);if(_0x368edb[_0x0f0b('0x9f')]===-0x1){return _0x368edb;}return this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util[_0x0f0b('0x25')](_0x0f0b('0xa7'),_0x2f38d2));};AGIVertices['prototype']['mrcprecog']=function(_0x4286db){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0xa8'),_0x4286db[_0x0f0b('0x35')]));if(!this[_0x0f0b('0x82')](_0x4286db[_0x0f0b('0xa9')])){return this[_0x0f0b('0x38')]['noop'](_0x0f0b('0xaa'));}var _0x107897=_0x4286db[_0x0f0b('0xa9')];if(this[_0x0f0b('0x82')](_0x4286db['options'])){_0x107897+=','+_0x4286db[_0x0f0b('0x76')];}var _0x59d053=this[_0x0f0b('0x38')][_0x0f0b('0x59')](_0x0f0b('0xab'),_0x107897);if(_0x59d053[_0x0f0b('0x9f')]===-0x1){return _0x59d053;}var _0x1a0e73=this[_0x0f0b('0xac')](_0x0f0b('0xad'),'MRCP_RECOG_CONFIDENCE');if(_0x1a0e73[_0x0f0b('0x9f')]===-0x1){return _0x1a0e73;}var _0x47e964=this[_0x0f0b('0xac')](_0x0f0b('0xae'),_0x0f0b('0xaf'));if(_0x47e964[_0x0f0b('0x9f')]===-0x1){return _0x47e964;}var _0x41ec22=this[_0x0f0b('0xac')](_0x0f0b('0xb0'),_0x0f0b('0xb1'));if(_0x41ec22[_0x0f0b('0x9f')]===-0x1){return _0x41ec22;}return this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util[_0x0f0b('0x25')](_0x0f0b('0xb2'),_0x107897));};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0xb3')]=function(_0x3e5fe1){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0xb4'),_0x3e5fe1[_0x0f0b('0x35')]));return this['channel']['agi']([_0x3e5fe1[_0x0f0b('0xb5')],_0x3e5fe1[_0x0f0b('0xb6')]]);};AGIVertices[_0x0f0b('0xf')]['answer']=function(_0x5f412e){logger['info'](util['format'](_0x0f0b('0xb7'),_0x5f412e[_0x0f0b('0x35')]));if(this[_0x0f0b('0x82')](_0x5f412e[_0x0f0b('0x65')])){logger['info'](util[_0x0f0b('0x25')](_0x0f0b('0xb8'),_0x5f412e[_0x0f0b('0x65')]));var _0x20dacb=this[_0x0f0b('0x38')][_0x0f0b('0xb9')](_0x5f412e['timeout']);if(_0x20dacb[_0x0f0b('0x9f')]===-0x1){return _0x20dacb;}}return this[_0x0f0b('0x38')][_0x0f0b('0xba')]();};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0xbb')]=function(_0x3608f2){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0xbc'),_0x3608f2[_0x0f0b('0x35')]));if(!this[_0x0f0b('0x82')](_0x3608f2['list_id'])){return this[_0x0f0b('0x38')][_0x0f0b('0x29')](_0x3608f2,_0x0f0b('0xbd'));}_0x3608f2[_0x0f0b('0x4a')]=moment();if(this['isConfigured'](_0x3608f2[_0x0f0b('0xbe')])){_0x3608f2[_0x0f0b('0x4a')]=moment()[_0x0f0b('0xbf')](_0x3608f2[_0x0f0b('0xbe')],'minutes');}if(!this[_0x0f0b('0x82')](_0x3608f2[_0x0f0b('0x4d')])){_0x3608f2['callback_priority']=0x2;}this[_0x0f0b('0x44')][_0x0f0b('0xa0')](this,_0x3608f2);return this['channel'][_0x0f0b('0xa6')](util[_0x0f0b('0x25')](_0x0f0b('0xc0'),_0x3608f2[_0x0f0b('0x48')],_0x3608f2[_0x0f0b('0x49')],_0x3608f2[_0x0f0b('0x4a')]));};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0xc1')]=function(_0xb6f7ff){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0xc2'),_0xb6f7ff[_0x0f0b('0x35')]));var _0x56e991=this[_0x0f0b('0x38')][_0x0f0b('0x59')](_0xb6f7ff[_0x0f0b('0xc3')],_0xb6f7ff['options']);if(_0x56e991['result']===-0x1){return _0x56e991;}return this[_0x0f0b('0x38')]['noop'](util[_0x0f0b('0x25')]('Executed\x20command\x20%s\x20%s',_0xb6f7ff[_0x0f0b('0xc3')],_0xb6f7ff['options']));};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0xc4')]=function(_0x3d1131){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0xc5'),_0x3d1131[_0x0f0b('0x35')]));if(!this[_0x0f0b('0x82')](_0x3d1131[_0x0f0b('0x5e')])){return this[_0x0f0b('0x38')][_0x0f0b('0xa6')](_0x0f0b('0xa4'));}var _0x3e8dfc='\x22'+_0x3d1131[_0x0f0b('0x5e')]+'\x22';if(this[_0x0f0b('0x82')](_0x3d1131[_0x0f0b('0x76')])){_0x3e8dfc+=','+_0x3d1131['options'];}var _0x5d1fa7=this[_0x0f0b('0x38')][_0x0f0b('0x59')]('MRCPSynth',_0x3e8dfc);if(_0x5d1fa7[_0x0f0b('0x9f')]===-0x1){return _0x5d1fa7;}return this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util['format'](_0x0f0b('0xa7'),_0x3e8dfc));};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0xc6')]=function(_0x580ba3){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')]('Enter\x20in\x20SESTEKTTS\x20(%s)\x20block',_0x580ba3[_0x0f0b('0x35')]));if(!this[_0x0f0b('0x82')](_0x580ba3[_0x0f0b('0x5e')])){return this[_0x0f0b('0x38')][_0x0f0b('0xa6')](_0x0f0b('0xa4'));}var _0x432319='\x22'+_0x580ba3[_0x0f0b('0x5e')]+'\x22';if(this[_0x0f0b('0x82')](_0x580ba3[_0x0f0b('0x76')])){_0x432319+=','+_0x580ba3['options'];}var _0x291afb=this['channel'][_0x0f0b('0x59')](_0x0f0b('0xa5'),_0x432319);if(_0x291afb[_0x0f0b('0x9f')]===-0x1){return _0x291afb;}return this['channel'][_0x0f0b('0xa6')](util['format'](_0x0f0b('0xa7'),_0x432319));};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0xc7')]=function(_0x2f5d39){logger['info'](util[_0x0f0b('0x25')](_0x0f0b('0xc8'),_0x2f5d39[_0x0f0b('0x35')]));if(!this[_0x0f0b('0x82')](_0x2f5d39[_0x0f0b('0xa9')])){return this[_0x0f0b('0x38')]['noop'](_0x0f0b('0xaa'));}var _0x1ee46c=_0x2f5d39['grammar'];if(this['isConfigured'](_0x2f5d39[_0x0f0b('0x76')])){_0x1ee46c+=','+_0x2f5d39[_0x0f0b('0x76')];}var _0x3a2798=this['channel']['exec'](_0x0f0b('0xab'),_0x1ee46c);if(_0x3a2798[_0x0f0b('0x9f')]===-0x1){return _0x3a2798;}var _0x481933=this['getAndSetVariable'](_0x0f0b('0xad'),_0x0f0b('0xc9'));if(_0x481933[_0x0f0b('0x9f')]===-0x1){return _0x481933;}var _0x15aac2=this[_0x0f0b('0xac')](_0x0f0b('0xae'),_0x0f0b('0xca'));if(_0x15aac2[_0x0f0b('0x9f')]===-0x1){return _0x15aac2;}var _0x1022d2=this[_0x0f0b('0xac')](_0x0f0b('0xb0'),'LUMENVOX_ASR_INSTANCE');if(_0x1022d2[_0x0f0b('0x9f')]===-0x1){return _0x1022d2;}return this['channel'][_0x0f0b('0xa6')](util[_0x0f0b('0x25')](_0x0f0b('0xb2'),_0x1ee46c));};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0xcb')]=function(_0x158426){logger['info'](util[_0x0f0b('0x25')](_0x0f0b('0xcc'),_0x158426[_0x0f0b('0x35')]));if(!this[_0x0f0b('0x82')](_0x158426[_0x0f0b('0xa9')])){return this[_0x0f0b('0x38')][_0x0f0b('0xa6')](_0x0f0b('0xaa'));}var _0x70486c=_0x158426['grammar'];if(this[_0x0f0b('0x82')](_0x158426[_0x0f0b('0x76')])){_0x70486c+=','+_0x158426['options'];}var _0x3ddded=this[_0x0f0b('0x38')]['exec'](_0x0f0b('0xab'),_0x70486c);if(_0x3ddded[_0x0f0b('0x9f')]===-0x1){return _0x3ddded;}var _0x539a93=this[_0x0f0b('0xac')]('RECOG_CONFIDENCE()',_0x0f0b('0xcd'));if(_0x539a93[_0x0f0b('0x9f')]===-0x1){return _0x539a93;}var _0x3b640c=this['getAndSetVariable'](_0x0f0b('0xae'),_0x0f0b('0xce'));if(_0x3b640c['result']===-0x1){return _0x3b640c;}var _0x14c881=this[_0x0f0b('0xac')](_0x0f0b('0xb0'),_0x0f0b('0xcf'));if(_0x14c881['result']===-0x1){return _0x14c881;}return this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util[_0x0f0b('0x25')](_0x0f0b('0xb2'),_0x70486c));};AGIVertices[_0x0f0b('0xf')]['database']=function(_0x53c94f){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')]('Enter\x20in\x20DATABASE\x20(%s)\x20block',_0x53c94f['label']));if(!this['isConfigured'](_0x53c94f['odbc_id'])){return this[_0x0f0b('0x38')][_0x0f0b('0x29')](_0x53c94f,_0x0f0b('0xd0'));}var _0x583c9a=this['getSquareOdbc']['sync'](this,_0x53c94f[_0x0f0b('0xd1')]);if(!_0x583c9a){return this[_0x0f0b('0x38')]['error'](_0x53c94f,_0x0f0b('0xd2'));}if(!this['isConfigured'](_0x53c94f['query'])){return this[_0x0f0b('0x38')]['error'](_0x53c94f,_0x0f0b('0xd3'));}var _0x4e2f8f=_0x53c94f['query'][_0x0f0b('0x5b')](/(\r\n|\n|\r)/gm,'\x20');this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util[_0x0f0b('0x25')](_0x0f0b('0xd4'),_0x4e2f8f));var _0x502831=this[_0x0f0b('0x27')][_0x0f0b('0xa0')](this,_0x583c9a,_0x4e2f8f);this[_0x0f0b('0x34')][_0x0f0b('0xa0')](this,_0x53c94f,_0x4e2f8f);if(!this[_0x0f0b('0x82')](_0x53c94f[_0x0f0b('0xd5')])){return this[_0x0f0b('0x38')]['noop'](_0x0f0b('0xd6'));}var _0x10120e=this[_0x0f0b('0x10')][_0x0f0b('0xa0')](this,_0x53c94f[_0x0f0b('0xd5')]);if(!_0x10120e){return this[_0x0f0b('0x38')][_0x0f0b('0x29')](_0x53c94f,_0x0f0b('0xd7'));}var _0x4b7c06=this;_0x502831[_0x0f0b('0xd8')](function(_0x31bb9f,_0x4dba07){Object[_0x0f0b('0xd9')](_0x31bb9f)[_0x0f0b('0xd8')](function(_0x2d6ea5){_0x4b7c06[_0x0f0b('0x38')][_0x0f0b('0x9a')](util[_0x0f0b('0x25')](_0x0f0b('0xda'),_0x10120e,_0x4dba07,_0x2d6ea5),_0x31bb9f[_0x2d6ea5]);});});this[_0x0f0b('0x38')][_0x0f0b('0x9a')](util[_0x0f0b('0x25')](_0x0f0b('0xdb'),_0x10120e),_0x502831[_0x0f0b('0x95')]);return this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util[_0x0f0b('0x25')]('variable\x20%s\x20set',_0x10120e));};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0xdc')]=function(_0x346e8b){logger[_0x0f0b('0xdd')](util['format']('Enter\x20in\x20DIAL\x20(%s)\x20block',_0x346e8b[_0x0f0b('0x35')]));if(!this[_0x0f0b('0x82')](_0x346e8b[_0x0f0b('0xde')])){return this[_0x0f0b('0x38')][_0x0f0b('0x29')](_0x346e8b,_0x0f0b('0xdf'));}var _0x531c34=this[_0x0f0b('0x17')][_0x0f0b('0xa0')](this,_0x346e8b[_0x0f0b('0xde')]);if(!_0x531c34){return this[_0x0f0b('0x38')][_0x0f0b('0x29')](_0x346e8b,_0x0f0b('0xe0'));}var _0x3383b3=this[_0x0f0b('0x38')][_0x0f0b('0x59')](_0x0f0b('0xe1'),[util[_0x0f0b('0x25')](_0x0f0b('0xe2'),_0x531c34),_0x346e8b[_0x0f0b('0x65')],_0x346e8b[_0x0f0b('0xe3')],_0x346e8b[_0x0f0b('0x6f')]]);if(_0x3383b3[_0x0f0b('0x9f')]===-0x1){return _0x3383b3;}return this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util['format'](_0x0f0b('0xe4'),_0x0f0b('0xe1')));};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0xe5')]=function(_0x18e59a){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0xe6'),_0x18e59a[_0x0f0b('0x35')]));if(!this[_0x0f0b('0x82')](_0x18e59a[_0x0f0b('0x78')])){return this[_0x0f0b('0x38')][_0x0f0b('0xa6')](_0x0f0b('0xe7'));}if(!this[_0x0f0b('0x82')](_0x18e59a[_0x0f0b('0x5e')])){return this['channel']['noop'](_0x0f0b('0xa4'));}this['channel']['bot']=!![];this[_0x0f0b('0x34')](_0x18e59a);this[_0x0f0b('0x43')](_0x18e59a[_0x0f0b('0x5e')],'in','','');this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util[_0x0f0b('0x25')]('Trying\x20Dialogflow:\x20%s',_0x18e59a[_0x0f0b('0x5e')]));var _0x4de5b0=this[_0x0f0b('0x77')][_0x0f0b('0xa0')](this,_0x18e59a);if(_0x4de5b0){for(var _0x235062 in _0x4de5b0){if(_0x4de5b0[_0x0f0b('0x92')](_0x235062)){this[_0x0f0b('0x38')][_0x0f0b('0x9a')](util[_0x0f0b('0x25')](_0x0f0b('0xe8'),_0x235062[_0x0f0b('0xe9')]()),_0x4de5b0[_0x235062]);}}this[_0x0f0b('0x43')](_0x4de5b0[_0x0f0b('0xea')],_0x0f0b('0xeb'),'dialogflow','');return this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util[_0x0f0b('0x25')]('Dialogflow\x20Result\x20%s',_0x4de5b0['speech']));}return this[_0x0f0b('0x38')][_0x0f0b('0x29')](_0x18e59a,_0x0f0b('0xec'));};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0xed')]=function(_0x6cdd97){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0xee'),_0x6cdd97['label']));if(!this[_0x0f0b('0x82')](_0x6cdd97[_0x0f0b('0xef')])){return this[_0x0f0b('0x38')][_0x0f0b('0xa6')](_0x0f0b('0xf0'));}if(!this[_0x0f0b('0x82')](_0x6cdd97['client_email'])){return this[_0x0f0b('0x38')][_0x0f0b('0xa6')](_0x0f0b('0xf1'));}if(!this[_0x0f0b('0x82')](_0x6cdd97[_0x0f0b('0x7b')])){return this[_0x0f0b('0x38')][_0x0f0b('0xa6')](_0x0f0b('0xf2'));}if(!this[_0x0f0b('0x82')](_0x6cdd97[_0x0f0b('0x7c')])){return this['channel'][_0x0f0b('0xa6')](_0x0f0b('0xf3'));}if(!this[_0x0f0b('0x82')](_0x6cdd97[_0x0f0b('0x5e')])){return this[_0x0f0b('0x38')][_0x0f0b('0xa6')](_0x0f0b('0xa4'));}this[_0x0f0b('0x38')]['bot']=!![];this['createSquareDetailsReport'](_0x6cdd97);this[_0x0f0b('0x43')](_0x6cdd97[_0x0f0b('0x5e')],'in','','');this[_0x0f0b('0x38')]['noop'](util[_0x0f0b('0x25')](_0x0f0b('0xf4'),_0x6cdd97['text']));var _0x253816=this[_0x0f0b('0x79')][_0x0f0b('0xa0')](this,_0x6cdd97);if(_0x253816){for(var _0x31fca3 in _0x253816){if(_0x253816[_0x0f0b('0x92')](_0x31fca3)){if(_0x31fca3!=='providerResponse'){this[_0x0f0b('0x38')][_0x0f0b('0x9a')](util[_0x0f0b('0x25')]('DIALOGFLOW_%s',_0x31fca3['toUpperCase']()),_0x253816[_0x31fca3]);}}}this[_0x0f0b('0x43')](_0x253816[_0x0f0b('0xea')],_0x0f0b('0xeb'),'dialogflowV2',_0x253816[_0x0f0b('0xf5')]);return this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util[_0x0f0b('0x25')]('DialogflowV2\x20Result\x20%s',_0x253816[_0x0f0b('0xea')]));}return this[_0x0f0b('0x38')][_0x0f0b('0x29')](_0x6cdd97,'DialogflowV2\x20is\x20unreachable');};AGIVertices['prototype'][_0x0f0b('0xf6')]=function(_0x2f1813){logger[_0x0f0b('0x2a')](util['format'](_0x0f0b('0xf7'),_0x2f1813[_0x0f0b('0x35')]));if(!this['isConfigured'](_0x2f1813[_0x0f0b('0xf8')])){return this[_0x0f0b('0x38')][_0x0f0b('0xa6')](_0x0f0b('0xf9'));}if(!this[_0x0f0b('0x82')](_0x2f1813[_0x0f0b('0xfa')])){return this[_0x0f0b('0x38')][_0x0f0b('0xa6')]('no\x20username\x20configured');}if(!this[_0x0f0b('0x82')](_0x2f1813[_0x0f0b('0xfb')])){return this[_0x0f0b('0x38')][_0x0f0b('0xa6')](_0x0f0b('0xfc'));}if(!this[_0x0f0b('0x82')](_0x2f1813[_0x0f0b('0xfd')])){return this[_0x0f0b('0x38')]['noop'](_0x0f0b('0xa4'));}this[_0x0f0b('0x38')][_0x0f0b('0xfe')]=!![];this[_0x0f0b('0x34')](_0x2f1813);this['createSquareMessage'](_0x2f1813[_0x0f0b('0x5e')],'in','','');this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util[_0x0f0b('0x25')](_0x0f0b('0xff'),_0x2f1813['text']));var _0xfb2a8f=this[_0x0f0b('0x7d')][_0x0f0b('0xa0')](this,_0x2f1813);if(_0xfb2a8f){for(var _0x592bd in _0xfb2a8f){if(_0xfb2a8f['hasOwnProperty'](_0x592bd)){this[_0x0f0b('0x38')][_0x0f0b('0x9a')](util[_0x0f0b('0x25')](_0x0f0b('0x100'),_0x592bd[_0x0f0b('0xe9')]()),_0xfb2a8f[_0x592bd]);}}this[_0x0f0b('0x43')](_0xfb2a8f[_0x0f0b('0xea')],_0x0f0b('0xeb'),'sesteknda','');if(_0xfb2a8f['audiofile']){this['channel'][_0x0f0b('0xa6')](util[_0x0f0b('0x25')]('Sestek\x20NDA\x20%s\x20file\x20created',_0xfb2a8f[_0x0f0b('0x101')]));var _0x4aabcc=this[_0x0f0b('0x38')][_0x0f0b('0x102')](_0xfb2a8f[_0x0f0b('0x101')]);try{fs['unlink'](_0xfb2a8f['audiofile']+_0x0f0b('0x103'));}catch(_0x657ad1){logger[_0x0f0b('0x29')](_0x657ad1);}return _0x4aabcc;}else{return this[_0x0f0b('0x38')]['noop'](util[_0x0f0b('0x25')](_0x0f0b('0x104'),_0xfb2a8f[_0x0f0b('0xea')]));}}return this[_0x0f0b('0x38')][_0x0f0b('0x29')](_0x2f1813,_0x0f0b('0x105'));};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x106')]=function(_0x50ca38){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0x107'),_0x50ca38['label']));return this[_0x0f0b('0x38')][_0x0f0b('0xa6')](_0x0f0b('0x106'));};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x108')]=function(_0x26d836){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0x109'),_0x26d836[_0x0f0b('0x35')]));var _0x359829='';if(_0x26d836[_0x0f0b('0x10a')]){if(!this[_0x0f0b('0x82')](_0x26d836[_0x0f0b('0x10a')])){return this[_0x0f0b('0x38')][_0x0f0b('0x29')](_0x26d836,_0x0f0b('0x10b'));}else{var _0x2a812f=parseInt(_0x26d836['trunk_id'],0xa);if(isNaN(_0x2a812f)){_0x359829=_0x26d836[_0x0f0b('0x10a')];}else{_0x359829=this[_0x0f0b('0x19')][_0x0f0b('0xa0')](this,_0x26d836['trunk_id']);if(!_0x359829){return this[_0x0f0b('0x38')][_0x0f0b('0x29')](_0x26d836,_0x0f0b('0x10c'));}}}}else if(_0x26d836[_0x0f0b('0x10d')]){_0x359829=_0x26d836[_0x0f0b('0x10d')];}else{return this['channel'][_0x0f0b('0x29')](_0x26d836,'no\x20trunk\x20selected');}var _0x28f5c4=this[_0x0f0b('0x38')][_0x0f0b('0x59')](_0x0f0b('0xe1'),[util['format'](_0x0f0b('0x10e'),_0x359829,_0x26d836['phone']),_0x26d836[_0x0f0b('0x65')],_0x26d836[_0x0f0b('0xe3')],_0x26d836[_0x0f0b('0x6f')]]);if(_0x28f5c4[_0x0f0b('0x9f')]===-0x1){return _0x28f5c4;}return this['channel'][_0x0f0b('0xa6')](util[_0x0f0b('0x25')](_0x0f0b('0xe4'),'DIAL'));};AGIVertices['prototype'][_0x0f0b('0x10f')]=function(_0x17d8c7){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0x110'),_0x17d8c7[_0x0f0b('0x35')]));return this[_0x0f0b('0x38')]['noop'](_0x0f0b('0x10f'));};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0xc')]=function(_0xa3e563){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0x111'),_0xa3e563[_0x0f0b('0x35')]));if(_0xa3e563[_0x0f0b('0x112')]===0x0){return this[_0x0f0b('0xa1')](_0xa3e563);}_0xa3e563['retry']-=0x1;if(!this[_0x0f0b('0x82')](_0xa3e563[_0x0f0b('0x113')])){return this[_0x0f0b('0x38')]['error'](_0xa3e563,_0x0f0b('0x114'));}var _0x1882c5=this['getSound'][_0x0f0b('0xa0')](this,_0xa3e563[_0x0f0b('0x113')]);if(!_0x1882c5){return this[_0x0f0b('0x38')][_0x0f0b('0x29')](_0xa3e563,'no\x20file\x20audio\x20found');}if(!this[_0x0f0b('0x82')](_0xa3e563[_0x0f0b('0xd5')])){return this[_0x0f0b('0x38')][_0x0f0b('0x29')](_0x0f0b('0xd6'));}var _0x3c974f=this[_0x0f0b('0x38')][_0x0f0b('0x115')](_0x1882c5,_0xa3e563[_0x0f0b('0x116')],_0xa3e563[_0x0f0b('0x117')]);var _0x45cb6b=_0x3c974f[_0x0f0b('0x9f')]?_0x3c974f[_0x0f0b('0x9f')][_0x0f0b('0x4c')]():'';logger[_0x0f0b('0x2a')](_0x0f0b('0x118'),JSON[_0x0f0b('0x71')](_0x3c974f));if(_0x3c974f['result']===-0x1){this[_0x0f0b('0x34')][_0x0f0b('0xa0')](this,_0xa3e563,_0x45cb6b);return _0x3c974f;}else if(_0x3c974f[_0x0f0b('0x9e')]===_0x0f0b('0x65')){_0x3c974f['result']=_0x45cb6b[_0x0f0b('0x95')]>=parseInt(_0xa3e563['mindigit'])?'x':'i';}else{_0x3c974f['result']=_0x45cb6b[_0x0f0b('0x95')]>=parseInt(_0xa3e563[_0x0f0b('0x119')])&&_0x45cb6b[_0x0f0b('0x95')]<=parseInt(_0xa3e563['maxdigit'])?'x':'i';}var _0xfe8757=this['getVariable']['sync'](this,_0xa3e563[_0x0f0b('0xd5')]);if(!_0xfe8757){return this[_0x0f0b('0x38')][_0x0f0b('0x29')](_0xa3e563,_0x0f0b('0xd7'));}this[_0x0f0b('0x38')][_0x0f0b('0x9a')](_0xfe8757,_0x45cb6b);if(this[_0x0f0b('0x82')](_0xa3e563[_0x0f0b('0x11a')])){var _0x36bb4e=parseInt(_0xa3e563[_0x0f0b('0x11a')],0xa);var _0x520c3a=rs['generate']({'charset':'*','length':_0x36bb4e});var _0x1ca3d6=_0x45cb6b['length'];if(_0x1ca3d6>0x0){if(_0x1ca3d6>_0x36bb4e){this['createSquareDetailsReport'][_0x0f0b('0xa0')](this,_0xa3e563,_0xa3e563[_0x0f0b('0x11b')]===_0x0f0b('0x11c')?_0x520c3a+_0x45cb6b['substr'](_0x36bb4e):_0x45cb6b[_0x0f0b('0x11d')](0x0,_0x1ca3d6-_0x36bb4e)+_0x520c3a);}else{this[_0x0f0b('0x34')][_0x0f0b('0xa0')](this,_0xa3e563,rs[_0x0f0b('0x11e')]({'charset':'*','length':_0x1ca3d6}));}}else{this['createSquareDetailsReport']['sync'](this,_0xa3e563,'');}}else{this['createSquareDetailsReport']['sync'](this,_0xa3e563,_0x45cb6b);}return _0x3c974f;};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x11f')]=function(_0x4d9275){logger['info'](util['format']('Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block',_0x4d9275['label']));return this[_0x0f0b('0xc')](_0x4d9275);};AGIVertices[_0x0f0b('0xf')]['goal']=function(_0x551fb8){logger[_0x0f0b('0x2a')](util['format']('Enter\x20in\x20GOAL\x20(%s)\x20block',_0x551fb8[_0x0f0b('0x35')]));this[_0x0f0b('0x34')][_0x0f0b('0xa0')](this,_0x551fb8,_0x551fb8[_0x0f0b('0x120')]);return this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util[_0x0f0b('0x25')](_0x0f0b('0x121'),_0x551fb8['goalname']));};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x122')]=function(_0x4411ce){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0x123'),_0x4411ce[_0x0f0b('0x35')]));if(!this[_0x0f0b('0x82')](_0x4411ce['aws_access_key_id'])||!this[_0x0f0b('0x82')](_0x4411ce[_0x0f0b('0x89')])){return this[_0x0f0b('0x38')][_0x0f0b('0xa6')]('no\x20valid\x20credentials\x20configured');}if(!this[_0x0f0b('0x82')](_0x4411ce['text'])){return this['channel']['noop'](_0x0f0b('0xa4'));}this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util['format'](_0x0f0b('0x124'),_0x4411ce['text']));var _0x22f469=this['awsPolly'][_0x0f0b('0xa0')](this,_0x4411ce);if(_0x22f469){this[_0x0f0b('0x38')]['noop'](util['format'](_0x0f0b('0x125'),_0x22f469));var _0x546095=this[_0x0f0b('0x38')]['streamFile'](_0x22f469);try{fs['unlink'](_0x22f469+_0x0f0b('0x103'));}catch(_0x31a059){logger[_0x0f0b('0x29')](_0x31a059);}return _0x546095;}return this[_0x0f0b('0x38')][_0x0f0b('0x29')](_0x4411ce,_0x0f0b('0x126'));};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x127')]=function(_0x2730cf){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0x128'),_0x2730cf[_0x0f0b('0x35')]));if(!this[_0x0f0b('0x82')](_0x2730cf['aws_access_key_id'])||!this[_0x0f0b('0x82')](_0x2730cf[_0x0f0b('0x89')])){return this['channel'][_0x0f0b('0xa6')]('no\x20valid\x20credentials\x20configured');}if(!this['isConfigured'](_0x2730cf[_0x0f0b('0x129')])){return this[_0x0f0b('0x38')][_0x0f0b('0xa6')](_0x0f0b('0x12a'));}if(!this[_0x0f0b('0x82')](_0x2730cf[_0x0f0b('0x5e')])){return this['channel'][_0x0f0b('0xa6')](_0x0f0b('0xa4'));}this['channel']['bot']=!![];this[_0x0f0b('0x34')](_0x2730cf);this['createSquareMessage'](_0x2730cf[_0x0f0b('0x5e')],'in','','');this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util[_0x0f0b('0x25')](_0x0f0b('0x12b'),_0x2730cf[_0x0f0b('0x5e')]));var _0x1811df=this[_0x0f0b('0x87')][_0x0f0b('0xa0')](this,_0x2730cf);if(_0x1811df){for(var _0x4378ba in _0x1811df){if(_0x1811df['hasOwnProperty'](_0x4378ba)&&_[_0x0f0b('0x90')](_0x1811df[_0x4378ba])){this[_0x0f0b('0x38')][_0x0f0b('0x9a')](util[_0x0f0b('0x25')](_0x0f0b('0x12c'),_0x4378ba['toUpperCase']()),_0x1811df[_0x4378ba]);}}if(_[_0x0f0b('0x45')](_0x1811df[_0x0f0b('0x74')])){return this[_0x0f0b('0x38')][_0x0f0b('0xa6')](_0x0f0b('0x12d'));}else{this[_0x0f0b('0x43')](_0x1811df[_0x0f0b('0x74')],_0x0f0b('0xeb'),'amazonlex','');return this[_0x0f0b('0x38')]['noop'](util[_0x0f0b('0x25')](_0x0f0b('0x12e'),_0x1811df[_0x0f0b('0x74')]));}}return this[_0x0f0b('0x38')][_0x0f0b('0x29')](_0x2730cf,_0x0f0b('0x12f'));};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x130')]=function(_0x46bc8e){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0x131'),_0x46bc8e[_0x0f0b('0x35')],_0x46bc8e[_0x0f0b('0x65')]));if(!this[_0x0f0b('0x82')](_0x46bc8e['key'])){return this['channel']['noop'](_0x0f0b('0xe7'));}var _0x30451e=_0x0f0b('0x132');var _0xc13302=util[_0x0f0b('0x25')](_0x0f0b('0x133'),FILES_PATH,rs[_0x0f0b('0x11e')](0x4));var _0x15c0e2=util['format'](_0x0f0b('0x98'),_0xc13302,_0x30451e);var _0x195049=!![];if(_0x46bc8e[_0x0f0b('0x134')]==='NOBEEP'){_0x195049=![];}var _0x440262=this[_0x0f0b('0x38')]['recordFile'](_0xc13302,_0x30451e,_0x46bc8e['intKey'],_0x46bc8e['timeout'],undefined,_0x195049);if(_0x440262[_0x0f0b('0x9f')]!==-0x1){this['channel'][_0x0f0b('0xa6')](util[_0x0f0b('0x25')]('google\x20%s\x20file\x20created',_0x15c0e2));var _0x3a2554=this[_0x0f0b('0x8b')]['sync'](this,_0x46bc8e,_0x15c0e2);if(_0x3a2554){for(var _0x397f5d in _0x3a2554){if(_0x3a2554[_0x0f0b('0x92')](_0x397f5d)){this[_0x0f0b('0x38')][_0x0f0b('0x9a')](util['format'](_0x0f0b('0x135'),_0x397f5d[_0x0f0b('0xe9')]()),_0x3a2554[_0x397f5d]);}}return this[_0x0f0b('0x38')]['noop'](util[_0x0f0b('0x25')](_0x0f0b('0x136'),JSON['stringify'](_0x3a2554)));}}return _0x440262;};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x137')]=function(_0x2ce79c){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0x138'),_0x2ce79c[_0x0f0b('0x35')]));if(!this[_0x0f0b('0x82')](_0x2ce79c['appid'])){return this[_0x0f0b('0x38')]['noop'](_0x0f0b('0x139'));}if(!this['isConfigured'](_0x2ce79c[_0x0f0b('0x8e')])){return this['channel'][_0x0f0b('0xa6')](_0x0f0b('0x13a'));}var _0x454472=_0x0f0b('0x132');var _0x4d9deb=util[_0x0f0b('0x25')]('%s/recordings/%s',FILES_PATH,rs[_0x0f0b('0x11e')](0x4));var _0x3ce5f8=util[_0x0f0b('0x25')]('%s.%s',_0x4d9deb,_0x454472);var _0x37caef=!![];if(_0x2ce79c[_0x0f0b('0x134')]==='NOBEEP'){_0x37caef=![];}var _0x1c89c0=this['channel'][_0x0f0b('0x13b')](_0x4d9deb,_0x454472,_0x2ce79c[_0x0f0b('0x13c')],_0x2ce79c[_0x0f0b('0x65')],undefined,_0x37caef);if(_0x1c89c0['result']!==-0x1){this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util['format'](_0x0f0b('0x13d'),_0x3ce5f8));var _0x5aea85=this['tildeASR'][_0x0f0b('0xa0')](this,_0x2ce79c,_0x3ce5f8);if(_0x5aea85){for(var _0x12a63a in _0x5aea85){if(_0x5aea85[_0x0f0b('0x92')](_0x12a63a)){this['channel'][_0x0f0b('0x9a')](util['format']('TILDE_ASR_%s',_0x12a63a[_0x0f0b('0xe9')]()),_0x5aea85[_0x12a63a]);}}return this['channel'][_0x0f0b('0xa6')](util['format'](_0x0f0b('0x13e'),JSON[_0x0f0b('0x71')](_0x5aea85)));}}return _0x1c89c0;};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x13f')]=function(_0x34d060){logger[_0x0f0b('0x2a')](util['format'](_0x0f0b('0x140'),_0x34d060['label']));return this[_0x0f0b('0x38')][_0x0f0b('0x141')](_0x34d060['context'],_0x34d060[_0x0f0b('0x3e')],_0x34d060[_0x0f0b('0x3f')]);};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x142')]=function(_0xde863f){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0x143'),_0xde863f[_0x0f0b('0x35')]));if(!this['isConfigured'](_0xde863f['condition'])){return this['channel'][_0x0f0b('0x29')](_0xde863f,_0x0f0b('0x144'));}try{var _0x3f2208=eval(_0xde863f['condition'])?_0x0f0b('0x145'):'false';this['channel'][_0x0f0b('0xa6')](util['format'](_0x0f0b('0x146'),_0xde863f[_0x0f0b('0x147')],_0x3f2208));return{'code':0xc8,'result':_0x3f2208};}catch(_0x1b93d5){return{'code':0xc8,'result':_0x0f0b('0x148')};}};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x149')]=function(_0x5c0849){logger['info'](util[_0x0f0b('0x25')]('Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block',_0x5c0849[_0x0f0b('0x35')]));if(!this[_0x0f0b('0x82')](_0x5c0849[_0x0f0b('0x14a')])){return this[_0x0f0b('0x38')]['error'](_0x5c0849,_0x0f0b('0x14b'));}var _0x396d0f=this[_0x0f0b('0x14c')][_0x0f0b('0xa0')](this,_0x5c0849[_0x0f0b('0x14a')]);if(!_0x396d0f){return this['channel'][_0x0f0b('0x29')](_0x5c0849,_0x0f0b('0x14d'));}for(var _0x5b2750=0x0;_0x5b2750<_0x396d0f['length'];_0x5b2750+=0x1){var _0x3cc76e=this[_0x0f0b('0x38')][_0x0f0b('0x10')](util[_0x0f0b('0x25')]('IFTIME(%s?true:false)',_0x396d0f[_0x5b2750]));if(_0x3cc76e['result']===-0x1){return _0x3cc76e;}logger['info'](util[_0x0f0b('0x25')](_0x0f0b('0x14e'),_0x396d0f[_0x5b2750],_0x3cc76e[_0x0f0b('0x9e')]));if(_0x3cc76e[_0x0f0b('0x9e')]===_0x0f0b('0x145')){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0x14e'),_0x396d0f[_0x5b2750],_0x0f0b('0x145')));this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util[_0x0f0b('0x25')](_0x0f0b('0x14e'),_0x396d0f[_0x5b2750],_0x0f0b('0x145')));return{'code':0xc8,'result':'true'};}else{logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0x14e'),_0x396d0f[_0x5b2750],_0x0f0b('0x148')));this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util[_0x0f0b('0x25')](_0x0f0b('0x14e'),_0x396d0f[_0x5b2750],_0x0f0b('0x148')));}}return{'code':0xc8,'result':'false'};};AGIVertices[_0x0f0b('0xf')]['hangup']=function(_0x7a9059){logger['info'](util[_0x0f0b('0x25')](_0x0f0b('0x14f'),_0x7a9059[_0x0f0b('0x35')]));return this[_0x0f0b('0x38')][_0x0f0b('0x150')]();};AGIVertices[_0x0f0b('0xf')]['ispeechasr']=function(_0xa36436){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0x151'),_0xa36436[_0x0f0b('0x35')]));if(!this[_0x0f0b('0x82')](_0xa36436['key'])){return this['channel']['noop'](_0x0f0b('0xe7'));}var _0x3e8267='wav';var _0x20c883=util[_0x0f0b('0x25')]('%s/recordings/%s',FILES_PATH,rs[_0x0f0b('0x11e')](0x4));var _0x447565=util[_0x0f0b('0x25')]('%s.%s',_0x20c883,_0x3e8267);var _0x348838=!![];if(_0xa36436[_0x0f0b('0x134')]===_0x0f0b('0x152')){_0x348838=![];}var _0x3a9541=this['channel']['recordFile'](_0x20c883,_0x3e8267,_0xa36436['intKey'],_0xa36436['timeout'],undefined,_0x348838);if(_0x3a9541[_0x0f0b('0x9f')]!==-0x1){this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util[_0x0f0b('0x25')](_0x0f0b('0x153'),_0x447565));var _0x417255=this[_0x0f0b('0x81')][_0x0f0b('0xa0')](this,_0xa36436,_0x447565);if(_0x417255){for(var _0x21e6f7 in _0x417255){if(_0x417255['hasOwnProperty'](_0x21e6f7)){this[_0x0f0b('0x38')][_0x0f0b('0x9a')](util[_0x0f0b('0x25')]('ISPEECH_ASR_%s',_0x21e6f7['toUpperCase']()),_0x417255[_0x21e6f7]);}}return this[_0x0f0b('0x38')]['noop'](util['format']('IspeechASR\x20Result\x20%s',JSON['stringify'](_0x417255)));}}return _0x3a9541;};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x154')]=function(_0xe731de){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')]('Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block',_0xe731de[_0x0f0b('0x35')]));if(!this['isConfigured'](_0xe731de['key'])){return this['channel'][_0x0f0b('0xa6')](_0x0f0b('0xe7'));}if(!this[_0x0f0b('0x82')](_0xe731de[_0x0f0b('0x5e')])){return this['channel'][_0x0f0b('0xa6')](_0x0f0b('0xa4'));}this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util[_0x0f0b('0x25')]('Trying\x20ispeech\x20TTS\x20%s',_0xe731de['text']));var _0x447f9e=this[_0x0f0b('0x7e')][_0x0f0b('0xa0')](this,_0xe731de);if(_0x447f9e){this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util[_0x0f0b('0x25')](_0x0f0b('0x153'),_0x447f9e));var _0x2a37b5=this['channel'][_0x0f0b('0x102')](_0x447f9e,_0xe731de[_0x0f0b('0x13c')]);try{fs[_0x0f0b('0x155')](_0x447f9e+'.wav');}catch(_0x5dcb76){logger[_0x0f0b('0x29')](_0x5dcb76);}return _0x2a37b5;}return this[_0x0f0b('0x38')][_0x0f0b('0x29')](_0xe731de,_0x0f0b('0x156'));};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x157')]=function(_0x5ae022){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0x158'),_0x5ae022[_0x0f0b('0x35')]));if(!this[_0x0f0b('0x82')](_0x5ae022[_0x0f0b('0x159')])){return this['channel'][_0x0f0b('0x29')](_0x5ae022,'no\x20find\x20by\x20configured');}logger['info'](util[_0x0f0b('0x25')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0x0f0b('0x38')][_0x0f0b('0x39')],_0x5ae022[_0x0f0b('0x159')]));var _0x93c723=this[_0x0f0b('0x54')][_0x0f0b('0xa0')](this,_0x5ae022[_0x0f0b('0x159')]);if(_0x93c723){logger[_0x0f0b('0x2a')](util['format'](_0x0f0b('0x15a'),this['channel'][_0x0f0b('0x39')],_0x5ae022[_0x0f0b('0x159')]));this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util[_0x0f0b('0x25')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x0f0b('0x38')][_0x0f0b('0x39')],_0x5ae022[_0x0f0b('0x159')]));return{'code':0xc8,'result':_0x0f0b('0x15b')};}else{logger['info'](util[_0x0f0b('0x25')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x0f0b('0x38')]['callerid'],_0x5ae022[_0x0f0b('0x159')]));this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util['format']('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x0f0b('0x38')][_0x0f0b('0x39')],_0x5ae022[_0x0f0b('0x159')]));return{'code':0xc8,'result':_0x0f0b('0x15c')};}};AGIVertices[_0x0f0b('0xf')]['logout']=function(_0x250297){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0x15d'),_0x250297[_0x0f0b('0x35')]));if(!this['isConfigured'](_0x250297[_0x0f0b('0x159')])){return this['channel'][_0x0f0b('0x29')](_0x250297,_0x0f0b('0x15e'));}logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0x0f0b('0x38')][_0x0f0b('0x39')],_0x250297['findBy']));var _0x12c71e=this[_0x0f0b('0x53')][_0x0f0b('0xa0')](this,_0x250297[_0x0f0b('0x159')]);if(_0x12c71e){logger['info'](util['format'](_0x0f0b('0x15a'),this['channel'][_0x0f0b('0x39')],_0x250297[_0x0f0b('0x159')]));this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util[_0x0f0b('0x25')](_0x0f0b('0x15a'),this[_0x0f0b('0x38')][_0x0f0b('0x39')],_0x250297[_0x0f0b('0x159')]));return{'code':0xc8,'result':_0x0f0b('0x15b')};}else{logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0x15f'),this[_0x0f0b('0x38')][_0x0f0b('0x39')],_0x250297['findBy']));this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util['format']('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x0f0b('0x38')][_0x0f0b('0x39')],_0x250297[_0x0f0b('0x159')]));return{'code':0xc8,'result':_0x0f0b('0x15c')};}};AGIVertices[_0x0f0b('0xf')]['math']=function(_0x53778e){logger['info'](util[_0x0f0b('0x25')](_0x0f0b('0x160'),_0x53778e[_0x0f0b('0x35')]));if(!this['isConfigured'](_0x53778e[_0x0f0b('0x161')])){return this[_0x0f0b('0x38')][_0x0f0b('0x29')](_0x53778e,_0x0f0b('0x162'));}this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util['format'](_0x0f0b('0x163'),_0x53778e[_0x0f0b('0x161')]));var _0x19d8ee=eval(_0x53778e[_0x0f0b('0x161')]);if(!this[_0x0f0b('0x82')](_0x53778e[_0x0f0b('0xd5')])){return this[_0x0f0b('0x38')][_0x0f0b('0xa6')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x44f5b8=this[_0x0f0b('0x10')][_0x0f0b('0xa0')](this,_0x53778e['variable_id']);if(!_0x44f5b8){return this[_0x0f0b('0x38')][_0x0f0b('0x29')](_0x53778e,'no\x20variable\x20found');}if(_[_0x0f0b('0x94')](_0x19d8ee)){var _0x6102ad=this;_0x19d8ee[_0x0f0b('0xd8')](function(_0x1b2f9f,_0x13c1c4){_0x6102ad[_0x0f0b('0x38')][_0x0f0b('0x9a')](util['format'](_0x0f0b('0x164'),_0x44f5b8,_0x13c1c4),_0x1b2f9f);});return this['channel'][_0x0f0b('0xa6')](util[_0x0f0b('0x25')](_0x0f0b('0x165'),_0x44f5b8));}else{return this[_0x0f0b('0x38')]['setVariable'](_0x44f5b8,_0x19d8ee);}};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0xb')]=function(_0xc73e21){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0x166'),_0xc73e21[_0x0f0b('0x35')]));if(_0xc73e21[_0x0f0b('0x112')]===0x0){return this[_0x0f0b('0xa1')](_0xc73e21);}_0xc73e21[_0x0f0b('0x112')]-=0x1;if(!this[_0x0f0b('0x82')](_0xc73e21[_0x0f0b('0x113')])){return this[_0x0f0b('0x38')][_0x0f0b('0x29')](_0xc73e21,_0x0f0b('0x114'));}var _0x12e53a=this[_0x0f0b('0x1b')][_0x0f0b('0xa0')](this,_0xc73e21['file_id']);if(!_0x12e53a){return this[_0x0f0b('0x38')][_0x0f0b('0x29')](_0xc73e21,'no\x20file\x20audio\x20found');}var _0x515a4a=this[_0x0f0b('0x38')]['getData'](_0x12e53a,_0xc73e21[_0x0f0b('0x116')],_0xc73e21[_0x0f0b('0x167')]);var _0x559be3=_0x515a4a[_0x0f0b('0x9f')];if(_0x515a4a[_0x0f0b('0x9f')]===-0x1){this[_0x0f0b('0x34')]['sync'](this,_0xc73e21,'-1');return _0x515a4a;}else if(_0x515a4a[_0x0f0b('0x9e')]==='timeout'){_0x515a4a[_0x0f0b('0x9f')]=_0x515a4a[_0x0f0b('0x9f')]['length']>0x0?_0x515a4a[_0x0f0b('0x9f')]:'t';}else if(_['isEmpty'](_0x515a4a[_0x0f0b('0x9f')])){_0x515a4a[_0x0f0b('0x9f')]='#';_0x559be3='#';}if(!this['isConfigured'](_0xc73e21[_0x0f0b('0xd5')])){this[_0x0f0b('0x38')][_0x0f0b('0xa6')]('no\x20variable\x20selected\x20for\x20the\x20result');}else{var _0x2e6ed6=this[_0x0f0b('0x10')][_0x0f0b('0xa0')](this,_0xc73e21[_0x0f0b('0xd5')]);if(!_0x2e6ed6){return this[_0x0f0b('0x38')]['error'](_0xc73e21,'no\x20variable\x20found');}this['channel'][_0x0f0b('0x9a')](_0x2e6ed6,_0x559be3);}this[_0x0f0b('0x34')][_0x0f0b('0xa0')](this,_0xc73e21,_0x559be3);return _0x515a4a;};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0xa6')]=function(_0xada16d){logger['info'](util['format'](_0x0f0b('0x168'),_0xada16d['label']));return this[_0x0f0b('0x38')]['noop'](_0xada16d[_0x0f0b('0x169')]||_0xada16d[_0x0f0b('0x35')]);};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x16a')]=function(_0x39c04d){logger[_0x0f0b('0x2a')](util['format']('Enter\x20in\x20PAUSE\x20(%s)\x20block',_0x39c04d[_0x0f0b('0x35')]));if(!this[_0x0f0b('0x82')](_0x39c04d[_0x0f0b('0x159')])){return this[_0x0f0b('0x38')][_0x0f0b('0x29')](_0x39c04d,_0x0f0b('0x15e'));}logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0x16b'),this[_0x0f0b('0x38')][_0x0f0b('0x39')],_0x39c04d['findBy']));var _0x3e15e7=this[_0x0f0b('0x4e')][_0x0f0b('0xa0')](this,_0x39c04d[_0x0f0b('0x16c')]);var _0x55384f=this[_0x0f0b('0x50')][_0x0f0b('0xa0')](this,_0x39c04d[_0x0f0b('0x159')],_0x3e15e7);if(_0x55384f){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x0f0b('0x38')][_0x0f0b('0x39')],_0x39c04d['findBy']));this['channel'][_0x0f0b('0xa6')](util[_0x0f0b('0x25')](_0x0f0b('0x15a'),this[_0x0f0b('0x38')][_0x0f0b('0x39')],_0x39c04d[_0x0f0b('0x159')]));return{'code':0xc8,'result':_0x0f0b('0x15b')};}else{logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0x15f'),this[_0x0f0b('0x38')][_0x0f0b('0x39')],_0x39c04d['findBy']));this[_0x0f0b('0x38')]['noop'](util['format'](_0x0f0b('0x15a'),this[_0x0f0b('0x38')]['callerid'],_0x39c04d[_0x0f0b('0x159')]));return{'code':0xc8,'result':_0x0f0b('0x15c')};}};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x16d')]=function(_0x34d8e8){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0x16e'),_0x34d8e8['label']));if(!this['isConfigured'](_0x34d8e8['file_id'])){return this[_0x0f0b('0x38')][_0x0f0b('0x29')](_0x34d8e8,'no\x20file\x20audio\x20selected');}var _0x38a72e=this[_0x0f0b('0x1b')]['sync'](this,_0x34d8e8[_0x0f0b('0x113')]);if(!_0x38a72e){return this[_0x0f0b('0x38')][_0x0f0b('0x29')](_0x34d8e8,_0x0f0b('0x16f'));}var _0x1be187=this[_0x0f0b('0x38')]['exec'](_0x0f0b('0x170'),[_0x38a72e,_0x34d8e8[_0x0f0b('0xe3')]]);if(_0x1be187[_0x0f0b('0x9f')]===-0x1){return _0x1be187;}return this['channel'][_0x0f0b('0xa6')](util[_0x0f0b('0x25')](_0x0f0b('0x171'),_0x0f0b('0x170'),_0x38a72e));};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x172')]=function(_0x266bf2){logger[_0x0f0b('0x2a')](util['format'](_0x0f0b('0x173'),_0x266bf2[_0x0f0b('0x35')]));if(!this['isConfigured'](_0x266bf2[_0x0f0b('0x174')])){return this[_0x0f0b('0x38')]['error'](_0x266bf2,'no\x20queue\x20selected');}var _0x420ef6='';var _0x377b34=parseInt(_0x266bf2['queue_id'],0xa);if(isNaN(_0x377b34)){_0x420ef6=_0x266bf2[_0x0f0b('0x174')];}else{_0x420ef6=this[_0x0f0b('0x175')][_0x0f0b('0xa0')](this,_0x266bf2[_0x0f0b('0x174')]);if(!_0x420ef6){return this[_0x0f0b('0x38')][_0x0f0b('0x29')](_0x266bf2,'no\x20queue\x20found');}}var _0x10c8eb='';if(this[_0x0f0b('0x82')](_0x266bf2['file_id'])){var _0x254aa2=this[_0x0f0b('0x1b')][_0x0f0b('0xa0')](this,_0x266bf2[_0x0f0b('0x113')]);if(_0x254aa2){_0x10c8eb=_0x254aa2;}}this[_0x0f0b('0x34')][_0x0f0b('0xa0')](this,_0x266bf2,_0x420ef6);if(_0x266bf2['opts'][_0x0f0b('0x176')]('x')<0x0){_0x266bf2['opts']+='x';}if(_0x266bf2[_0x0f0b('0xe3')][_0x0f0b('0x176')]('X')<0x0){_0x266bf2[_0x0f0b('0xe3')]+='X';}this['channel'][_0x0f0b('0x9a')]('XMCS-QUEUE',_0x420ef6?_0x420ef6[_0x0f0b('0x177')]():'');var _0x401b49=this[_0x0f0b('0x38')][_0x0f0b('0x59')]('QUEUE',[_0x420ef6,_0x266bf2[_0x0f0b('0xe3')],_0x266bf2[_0x0f0b('0x6f')],_0x10c8eb,_0x266bf2['timeout'],_0x266bf2[_0x0f0b('0xb3')],_0x266bf2[_0x0f0b('0x178')],_0x266bf2[_0x0f0b('0x179')],'',_0x266bf2['position']]);if(_0x401b49[_0x0f0b('0x9f')]===-0x1){return _0x401b49;}return this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util[_0x0f0b('0x25')](_0x0f0b('0x171'),'QUEUE',_0x420ef6));};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x17a')]=function(_0x1c912b){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0x17b'),_0x1c912b['label']));var _0x11aeb2=_0x1c912b[_0x0f0b('0x17c')]||_0x0f0b('0x132');var _0x493303=util[_0x0f0b('0x25')](_0x0f0b('0x17d'),this['channel'][_0x0f0b('0x3b')],rs[_0x0f0b('0x11e')](0x5));var _0x40ac8a=util[_0x0f0b('0x25')]('%s/recordings/%s.%s',FILES_PATH,_0x493303,_0x11aeb2);var _0x141441=util[_0x0f0b('0x25')](_0x0f0b('0x133'),FILES_PATH,_0x493303);this['createSquareRecording'][_0x0f0b('0xa0')](this,_0x1c912b,_0x493303,_0x40ac8a);this[_0x0f0b('0x38')][_0x0f0b('0x9a')]('RECORDING_SAVENAME',_0x493303);logger[_0x0f0b('0x2a')]('Recording\x20%s\x20%s\x20%s\x20%s',_0x141441,_0x11aeb2,_0x1c912b[_0x0f0b('0x17e')],_0x1c912b[_0x0f0b('0x65')]);return this[_0x0f0b('0x38')][_0x0f0b('0x13b')](_0x141441,_0x11aeb2,_0x1c912b[_0x0f0b('0x17e')],_0x1c912b[_0x0f0b('0x65')],undefined,!![]);};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x17f')]=function(_0x270176){logger['info'](util[_0x0f0b('0x25')](_0x0f0b('0x180'),_0x270176[_0x0f0b('0x35')]));if(!this[_0x0f0b('0x82')](_0x270176['url'])){return this[_0x0f0b('0x38')][_0x0f0b('0xa6')](_0x0f0b('0x181'));}var _0x51d37c=this['restAPI'][_0x0f0b('0xa0')](this,_0x270176);logger['info'](util[_0x0f0b('0x25')]('Response:',util['inspect'](_0x51d37c,{'showHidden':![],'depth':null})));if(!this['isConfigured'](_0x270176[_0x0f0b('0xd5')])){return this['channel'][_0x0f0b('0xa6')](_0x0f0b('0x182'));}var _0x3559c5=this['getVariable'][_0x0f0b('0xa0')](this,_0x270176[_0x0f0b('0xd5')]);if(!_0x3559c5){return this['channel']['error'](_0x270176,_0x0f0b('0xd7'));}this['channel'][_0x0f0b('0x9a')](util[_0x0f0b('0x25')](_0x0f0b('0x183'),_0x3559c5),_0x51d37c['statusCode']?_0x51d37c[_0x0f0b('0x184')]:_0x0f0b('0x185'));this[_0x0f0b('0x38')][_0x0f0b('0x9a')](util[_0x0f0b('0x25')](_0x0f0b('0x186'),_0x3559c5),_0x51d37c['statusMessage']?_0x51d37c[_0x0f0b('0x73')]:'OK');if(_0x51d37c[_0x0f0b('0x69')]){try{this[_0x0f0b('0x99')](_0x51d37c['body'],_0x3559c5);}catch(_0x39dbd8){logger[_0x0f0b('0x29')](util[_0x0f0b('0x25')]('Unable\x20to\x20set\x20result\x20in\x20variable\x20%s',_0x3559c5));}}return this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util[_0x0f0b('0x25')](_0x0f0b('0x187'),_0x3559c5));};AGIVertices[_0x0f0b('0xf')]['saydigits']=function(_0x367ac4){logger['info'](util[_0x0f0b('0x25')](_0x0f0b('0x188'),_0x367ac4[_0x0f0b('0x35')]));return this['channel']['sayDigits'](_0x367ac4[_0x0f0b('0x189')][_0x0f0b('0x5b')](/\s+/g,''),_0x367ac4[_0x0f0b('0x17e')]);};AGIVertices['prototype'][_0x0f0b('0x18a')]=function(_0x5a83b3){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0x18b'),_0x5a83b3['label']));return this[_0x0f0b('0x38')][_0x0f0b('0x18c')](_0x5a83b3[_0x0f0b('0x66')]['replace'](/\s+/g,''),_0x5a83b3[_0x0f0b('0x17e')]);};AGIVertices['prototype'][_0x0f0b('0x18d')]=function(_0x552660){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0x18e'),_0x552660['label']));return this['channel'][_0x0f0b('0x18f')](_0x552660[_0x0f0b('0x5e')],_0x552660[_0x0f0b('0x17e')]);};AGIVertices[_0x0f0b('0xf')]['sendMail']=function(_0xdc7538){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')]('Enter\x20in\x20SENDMAIL\x20(%s)\x20block',_0xdc7538[_0x0f0b('0x35')]));if(!this[_0x0f0b('0x82')](_0xdc7538[_0x0f0b('0x190')])){return this[_0x0f0b('0x38')]['noop']('no\x20mail\x20account\x20configured');}var _0x734e32=this[_0x0f0b('0x1f')][_0x0f0b('0xa0')](this,_0xdc7538[_0x0f0b('0x190')]);if(!_0x734e32||!_0x734e32[_0x0f0b('0x191')]){return this[_0x0f0b('0x38')][_0x0f0b('0x29')](_0xdc7538,_0x0f0b('0x192'));}var _0x5a4623={'from':util[_0x0f0b('0x25')]('\x22%s\x22\x20<%s>',_0x734e32[_0x0f0b('0x12')],_0x734e32[_0x0f0b('0x193')]||_0x734e32[_0x0f0b('0x191')][_0x0f0b('0x194')]),'to':_0xdc7538['to']||'','cc':_0xdc7538['cc']||'','bcc':_0xdc7538[_0x0f0b('0x195')]||'','subject':_0xdc7538[_0x0f0b('0x196')],'html':_0xdc7538[_0x0f0b('0x5e')],'text':_0xdc7538[_0x0f0b('0x5e')]};var _0x5b9cf6={'tls':{'rejectUnauthorized':![]}};if(_0x734e32['Smtp']['service']){_0x5b9cf6[_0x0f0b('0x197')]=_0x734e32[_0x0f0b('0x191')]['service'];}else{_0x5b9cf6[_0x0f0b('0x198')]=_0x734e32[_0x0f0b('0x191')]['host'];_0x5b9cf6[_0x0f0b('0x199')]=_0x734e32[_0x0f0b('0x191')]['port'];_0x5b9cf6['secure']=_0x734e32['Smtp']['secure'];}if(_0x734e32['Smtp'][_0x0f0b('0x19a')]){_0x5b9cf6[_0x0f0b('0x19b')]={'user':_0x734e32[_0x0f0b('0x191')][_0x0f0b('0x194')],'pass':_0x734e32[_0x0f0b('0x191')]['pass']};}if(this['isConfigured'](_0xdc7538[_0x0f0b('0x19c')])){}logger[_0x0f0b('0xdd')]('sendMail\x20message',JSON[_0x0f0b('0x71')](_0x5a4623));this[_0x0f0b('0x34')][_0x0f0b('0xa0')](this,_0xdc7538,_0xdc7538[_0x0f0b('0x190')]);this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util[_0x0f0b('0x25')](_0x0f0b('0x19d'),_0x734e32[_0x0f0b('0x12')]));this['sendMailMessage'][_0x0f0b('0xa0')](this,_0x5b9cf6,_0x5a4623);return this[_0x0f0b('0x38')][_0x0f0b('0xa6')](_0x0f0b('0x19e'));};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x19f')]=function(_0x3d5d44){logger[_0x0f0b('0x2a')](util['format']('Enter\x20in\x20SENDFAX\x20(%s)\x20block',_0x3d5d44[_0x0f0b('0x35')]));return this[_0x0f0b('0x38')][_0x0f0b('0xa6')](_0x0f0b('0x1a0'));};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x1a1')]=function(_0x237635){logger[_0x0f0b('0x2a')](util['format'](_0x0f0b('0x1a2'),_0x237635[_0x0f0b('0x35')]));if(!this[_0x0f0b('0x82')](_0x237635['sms_account_id'])){return this[_0x0f0b('0x38')]['noop']('no\x20sms\x20account\x20configured');}var _0x4883f8=this['getSmsAccount']['sync'](this,_0x237635[_0x0f0b('0x1a3')]);if(!_0x4883f8){return this[_0x0f0b('0x38')][_0x0f0b('0x29')](_0x237635,_0x0f0b('0x1a4'));}var _0x4c1d26={'body':_0x237635[_0x0f0b('0x1a5')],'phone':_0x237635['to']||'','SmsAccountId':_0x4883f8['id']};logger[_0x0f0b('0xdd')](_0x0f0b('0x1a6'),JSON[_0x0f0b('0x71')](_0x4c1d26));this[_0x0f0b('0x34')][_0x0f0b('0xa0')](this,_0x237635,_0x237635[_0x0f0b('0x1a3')]);this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util['format'](_0x0f0b('0x1a7'),_0x4883f8[_0x0f0b('0x12')]));this[_0x0f0b('0x33')][_0x0f0b('0xa0')](this,_0x4c1d26);return this['channel']['noop'](_0x0f0b('0x1a8'));};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x1a9')]=function(_0x116c27){logger[_0x0f0b('0x2a')](util['format'](_0x0f0b('0x1aa'),_0x116c27[_0x0f0b('0x35')]));if(!this['isConfigured'](_0x116c27[_0x0f0b('0xd5')])){return this[_0x0f0b('0x38')][_0x0f0b('0x29')](_0x116c27,'no\x20variable\x20selected');}var _0x1ac87f=this['getVariable'][_0x0f0b('0xa0')](this,_0x116c27[_0x0f0b('0xd5')]);if(!_0x1ac87f){return this[_0x0f0b('0x38')][_0x0f0b('0x29')](_0x116c27,_0x0f0b('0xd7'));}return this[_0x0f0b('0x38')][_0x0f0b('0x9a')](_0x1ac87f,_0x116c27[_0x0f0b('0x1ab')]);};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x1ac')]=function(_0x4f705b){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0x1ad'),_0x4f705b[_0x0f0b('0x35')]));this[_0x0f0b('0x38')][_0x0f0b('0xa6')](_0x0f0b('0x1ae'));if(_0x4f705b[_0x0f0b('0xba')]===_0x0f0b('0x1af')){this[_0x0f0b('0x38')][_0x0f0b('0xa6')]('Answer');return this[_0x0f0b('0x38')]['answer']();}return this[_0x0f0b('0x38')][_0x0f0b('0xa6')]('Skipped\x20Answer');};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x1b0')]=function(_0xaba452){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0x1b1'),_0xaba452[_0x0f0b('0x35')]));if(!this[_0x0f0b('0x82')](_0xaba452['project_id'])){return this[_0x0f0b('0x38')][_0x0f0b('0x29')](_0xaba452,_0x0f0b('0x1b2'));}var _0x4da36e=this[_0x0f0b('0x14')][_0x0f0b('0xa0')](this,_0xaba452[_0x0f0b('0x1b3')]);if(!this[_0x0f0b('0x82')](_0x4da36e)){return this['channel'][_0x0f0b('0x29')](_0xaba452,util[_0x0f0b('0x25')]('no\x20subproject\x20found\x20with\x20id\x20%d',_0xaba452[_0x0f0b('0x1b3')]));}if(_0x4da36e===this[_0x0f0b('0x38')][_0x0f0b('0x37')]){return this[_0x0f0b('0x38')]['error'](_0xaba452,'project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project');}this[_0x0f0b('0x34')][_0x0f0b('0xa0')](this,_0xaba452,_0x4da36e);var _0x20cf23=this['channel'][_0x0f0b('0x59')]('AGI',util['format'](_0x0f0b('0x1b4'),config[_0x0f0b('0xb3')][_0x0f0b('0x198')]||'127.0.0.1',_0x4da36e,this[_0x0f0b('0x38')][_0x0f0b('0x37')]));if(_0x20cf23['result']===-0x1){return _0x20cf23;}return this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util[_0x0f0b('0x25')]('Executed\x20command\x20%s\x20%s',_0x0f0b('0x1b5'),_0x4da36e));};AGIVertices['prototype'][_0x0f0b('0x1b6')]=function(_0xec862a){logger['info'](util[_0x0f0b('0x25')](_0x0f0b('0x1b7'),_0xec862a[_0x0f0b('0x35')]));var _0x12841d=this[_0x0f0b('0x58')][_0x0f0b('0xa0')](this,_0xec862a['command']);this[_0x0f0b('0x34')][_0x0f0b('0xa0')](this,_0xec862a,_0xec862a['command']);if(this[_0x0f0b('0x82')](_0xec862a[_0x0f0b('0xd5')])){var _0x149401=this[_0x0f0b('0x10')][_0x0f0b('0xa0')](this,_0xec862a[_0x0f0b('0xd5')]);if(_0x149401){this[_0x0f0b('0x38')][_0x0f0b('0x9a')](_0x149401,_0x12841d);return this['channel'][_0x0f0b('0xa6')](util[_0x0f0b('0x25')](_0x0f0b('0x1b8'),_0xec862a[_0x0f0b('0xb5')],_0x149401));}}return this[_0x0f0b('0x38')]['noop'](util[_0x0f0b('0x25')](_0x0f0b('0x1b9'),_0xec862a[_0x0f0b('0xb5')]));};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x1ba')]=function(_0x445be8){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')]('Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block',_0x445be8['label']));_0x445be8[_0x0f0b('0x5e')]=_0x445be8[_0x0f0b('0x5e')]['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x0f0b('0x82')](_0x445be8['apiKey'])){return this['channel']['noop'](_0x0f0b('0x1bb'));}if(!this['isConfigured'](_0x445be8['text'])){return this[_0x0f0b('0x38')][_0x0f0b('0xa6')](_0x0f0b('0xa4'));}this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util[_0x0f0b('0x25')]('Trying\x20Google\x20Cloud\x20TTS\x20%s',_0x445be8[_0x0f0b('0x5e')]));var _0x4e3eb9=this[_0x0f0b('0x1bc')]['sync'](this,_0x445be8);if(_0x4e3eb9){this[_0x0f0b('0x38')]['noop'](util[_0x0f0b('0x25')](_0x0f0b('0x1bd'),_0x4e3eb9));var _0x49e56c=this['channel'][_0x0f0b('0x102')](_0x4e3eb9);try{fs[_0x0f0b('0x155')](_0x4e3eb9+_0x0f0b('0x103'));}catch(_0x2ec638){logger['error'](_0x2ec638);}return _0x49e56c;}return this[_0x0f0b('0x38')][_0x0f0b('0x29')](_0x445be8,'Google\x20Cloud\x20TTS\x20is\x20unreachable');};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x1be')]=function(_0x46ecea){logger['info'](util[_0x0f0b('0x25')](_0x0f0b('0x1bf'),_0x46ecea['label']));_0x46ecea['text']=_0x46ecea['text'][_0x0f0b('0x5b')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x0f0b('0x82')](_0x46ecea[_0x0f0b('0x5e')])){return this['channel'][_0x0f0b('0xa6')](_0x0f0b('0xa4'));}this['channel'][_0x0f0b('0xa6')](util[_0x0f0b('0x25')](_0x0f0b('0x1c0'),_0x46ecea[_0x0f0b('0x5e')]));var _0x16deaf=this[_0x0f0b('0x62')][_0x0f0b('0xa0')](this,_0x46ecea);if(_0x16deaf){this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util[_0x0f0b('0x25')](_0x0f0b('0x1c1'),_0x16deaf));var _0x2593b7=this[_0x0f0b('0x38')][_0x0f0b('0x102')](_0x16deaf);try{fs['unlink'](_0x16deaf+'.wav');}catch(_0x5b54c6){logger[_0x0f0b('0x29')](_0x5b54c6);}return _0x2593b7;}return this[_0x0f0b('0x38')][_0x0f0b('0x29')](_0x46ecea,_0x0f0b('0x1c2'));};AGIVertices[_0x0f0b('0xf')]['unpause']=function(_0x4ca3cc){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0x1c3'),_0x4ca3cc[_0x0f0b('0x35')]));if(!this['isConfigured'](_0x4ca3cc[_0x0f0b('0x159')])){return this[_0x0f0b('0x38')][_0x0f0b('0x29')](_0x4ca3cc,'no\x20find\x20by\x20configured');}logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0x16b'),this['channel'][_0x0f0b('0x39')],_0x4ca3cc[_0x0f0b('0x159')]));var _0x577964=this['agentUnpause'][_0x0f0b('0xa0')](this,_0x4ca3cc[_0x0f0b('0x159')]);if(_0x577964){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0x15a'),this[_0x0f0b('0x38')][_0x0f0b('0x39')],_0x4ca3cc['findBy']));this[_0x0f0b('0x38')]['noop'](util['format'](_0x0f0b('0x15a'),this[_0x0f0b('0x38')][_0x0f0b('0x39')],_0x4ca3cc[_0x0f0b('0x159')]));return{'code':0xc8,'result':_0x0f0b('0x15b')};}else{logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel']['callerid'],_0x4ca3cc['findBy']));this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util[_0x0f0b('0x25')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x0f0b('0x38')][_0x0f0b('0x39')],_0x4ca3cc[_0x0f0b('0x159')]));return{'code':0xc8,'result':_0x0f0b('0x15c')};}};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x1c4')]=function(_0x22fb88){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0x1c5'),_0x22fb88['label']));var _0x453140=this[_0x0f0b('0x38')][_0x0f0b('0x59')](_0x0f0b('0x1c6'),[_0x22fb88[_0x0f0b('0x1c7')],_0x22fb88[_0x0f0b('0x76')]]);if(_0x453140[_0x0f0b('0x9f')]===-0x1){return _0x453140;}return this[_0x0f0b('0x38')][_0x0f0b('0xa6')](util['format'](_0x0f0b('0x171'),_0x0f0b('0x1c6'),_0x22fb88[_0x0f0b('0x1c7')]));};AGIVertices[_0x0f0b('0xf')][_0x0f0b('0x1c8')]=function(_0x12f5f4){logger[_0x0f0b('0x2a')](util[_0x0f0b('0x25')](_0x0f0b('0x1c9'),_0x12f5f4[_0x0f0b('0x35')]));if(!this[_0x0f0b('0x82')](_0x12f5f4[_0x0f0b('0xd5')])){return this[_0x0f0b('0x38')]['error'](_0x12f5f4,_0x0f0b('0x1ca'));}var _0x5b592a=this[_0x0f0b('0x10')]['sync'](this,_0x12f5f4[_0x0f0b('0xd5')]);if(!_0x5b592a){return this['channel'][_0x0f0b('0x29')](_0x12f5f4,'no\x20variable\x20found');}var _0x32fab4=this['channel'][_0x0f0b('0x10')](_0x5b592a);return{'code':0xc8,'result':_0x32fab4['extra']?_0x32fab4['extra']:'-'};};String[_0x0f0b('0xf')][_0x0f0b('0x9d')]=function(_0x4470bb,_0x45bf43){return this[_0x0f0b('0x9c')](_0x4470bb)['join'](_0x45bf43);};module[_0x0f0b('0x1cb')]=AGIVertices;
\ No newline at end of file
+var _0x47c5=['toUpperCase','body','parse','headers','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','uri','render','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','statusMessage','message','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','key','dialogflow_language','dialogflowV2_project_id','client_email','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','speed','ispeechASR','ispeech_asr_language','isConfigured','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_region','aws_polly_voice','awsLex','aws_lex_region','aws_bot_name','googleASR','google_asr_language','tildeASR','appid','clear','clone','replaceObjectAllVariables','hasOwnProperty','isPlainObject','recursiveNodeIndex','isArray','length','isString','%s.%s','saveRestApiResult','replaceAllVariables','split','replaceAll','extra','getAndSetVariable','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','setVariable','maxRetry','sync','retry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','noop','no\x20text\x20configured','result','Executed\x20command\x20MRCPSynth\x20%s','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','no\x20grammar\x20configured','MRCPRecog','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','Enter\x20in\x20AGI\x20(%s)\x20block','command','args','answer','Wait\x20%s\x20seconds\x20before\x20answer','wait','Enter\x20in\x20CALLBACK\x20(%s)\x20block','no\x20list\x20selected','add','delay','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','MRCPSynth','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','RECOG_CONFIDENCE()','LUMENVOX_ASR_CONFIDENCE','LUMENVOX_ASR_TRANSCRIPT','LUMENVOX_ASR_INSTANCE','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_TRANSCRIPT','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','odbc_id','no\x20database\x20selected','no\x20odbc\x20database\x20found','query','query:\x20%s','no\x20variable\x20selected\x20for\x20the\x20result','variable_id','%s_ROWS_COUNT','variable\x20%s\x20set','dial','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','no\x20user\x20found','DIAL','SIP/%s','opts','url','dialogflow','no\x20key\x20configured','bot','Trying\x20Dialogflow:\x20%s','out','Dialogflow\x20Result\x20%s','speech','Dialogflow\x20is\x20unreachable','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20project_id\x20configured','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','googleDialogflowV2','providerResponse','DIALOGFLOW_%s','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','sesteknda','ndauth_url','username','no\x20username\x20configured','no\x20password\x20configured','ndassistant_url','SESTEK_NDA_%s','audiofile','streamFile','end','Enter\x20in\x20END\x20(%s)\x20block','ext_dial','trunk_id','no\x20trunk\x20selected','no\x20trunk\x20found','SIP/%s/%s','Executed\x20command\x20%s','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','no\x20file\x20audio\x20selected','file_id','getData','maxdigit','mindigit','hiddendigitsnum','hiddendigitspos','first','substr','generate','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','GOAL\x20%s','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','aws\x20Polly\x20%s\x20file\x20created','unlink','.wav','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','amazonlex','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','%s/recordings/%s','recordFile','intKey','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','appsecret','no\x20appsecret\x20configured','wav','NOBEEP','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','TildeASR\x20Result\x20%s','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','context','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','false','EVAL\x20CONDITION\x20%s\x20%s','interval_id','no\x20interval\x20configured','no\x20intervals\x20found','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','true','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','beep','ISPEECH_ASR_%s','IspeechASR\x20Result\x20%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','ispeech\x20%s\x20file\x20created','FIND\x20AGENT\x20%s\x20BY\x20%s','findBy','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','no\x20find\x20by\x20configured','agentLogout','math','Enter\x20in\x20MATH\x20(%s)\x20block','operation','no\x20operation\x20configured','math\x20%s','forEach','%s[%s]','variable\x20%s[key]\x20set','no\x20file\x20audio\x20found','digit','no\x20variable\x20found','output','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','pause_id','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','indexOf','XMCS-QUEUE','toLowerCase','macro','gosub','position','QUEUE','record','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%s/recordings/%s.%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','Response:','no\x20variable\x20selected\x20for\x20the\x20response','200','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','digits','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','sayphonetic','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','no\x20mail\x20account\x20configured','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','user','bcc','subject','service','host','port','secure','authentication','auth','template_id','Mail\x20message\x20added\x20to\x20outgoing\x20process','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','Enter\x20in\x20SENDSMS\x20(%s)\x20block','no\x20sms\x20account\x20configured','sms_account_id','no\x20sms\x20account\x20found','sms_text','sendSMS\x20message','createSmsMessage','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','no\x20variable\x20selected','variable_value','start','START\x20CALLY\x20SQUARE','yes','Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','no\x20subproject\x20found\x20with\x20id\x20%d','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','127.0.0.1','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','Google\x20Cloud\x20TTS\x20is\x20unreachable','tts','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20%s\x20file\x20created','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','Executed\x20command\x20%s\x20%s','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','join','path','util','lodash','shelljs','odbc','randomstring','mustache','request-promise','agi','../../config/environment','/var/opt/motion2/server/files','rawHeaders','rawBody','menu','getdigits','getsecretdigits','channel','rpc','mailRpc','prototype','getVariable','then','catch','getVoiceQueue','getVoiceQueueById','name','getSquareProject','getSquareOdbc','getSquareOdbcById','dsn','getUser','getUserById','getTrunk','getTrunkById','getSound','getSoundById','getSoundPath','getMailAccount','getMailAccountById','sendMailMessage','getIntervals','getIntervalById','interval','map','Intervals','format','%s/sounds/converted/%s','getQueryOdbc','open','error','Error\x20getting\x20ODBC\x20connection\x20%s','ODBC\x20connection\x20successfully','info','Error\x20executing\x20query\x20%s','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSquareDetailsReport','uniqueid','label','agicommand','arg_1','callerid','createSquareRecording','calleridname','extension','priority','accountcode','file','createSquareMessage','createCmContact','isEmpty','isNil','callback_','random','lastName','phone','list_id','callback','Callback\x20scheduled\x20at\x20','scheduledAt','toString','callback_priority','getPause','getPauseById','agentPause','agentUnpause','agent','%s/%s@from-sip/n','LOCAL','agentLogin','shellCommand','exec','trim','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','en-US','ssmlGender','MALE','googleTTS','google_tts_language','restAPI','timeout','number','includes','POST','PUT','method'];(function(_0x160103,_0x1f90ee){var _0xf12407=function(_0x285383){while(--_0x285383){_0x160103['push'](_0x160103['shift']());}};_0xf12407(++_0x1f90ee);}(_0x47c5,0x165));var _0x547c=function(_0x2f3d1d,_0x28129e){_0x2f3d1d=_0x2f3d1d-0x0;var _0x89c489=_0x47c5[_0x2f3d1d];return _0x89c489;};'use strict';var fs=require('fs');var path=require(_0x547c('0x0'));var util=require(_0x547c('0x1'));var _=require(_0x547c('0x2'));var sh=require(_0x547c('0x3'));var odbc=require(_0x547c('0x4'))();var rs=require(_0x547c('0x5'));var moment=require('moment');var Mustache=require(_0x547c('0x6'));var rp=require(_0x547c('0x7'));var logger=require('../../config/logger')(_0x547c('0x8'));var config=require(_0x547c('0x9'));var scripts=require('./scripts');var FILES_PATH=_0x547c('0xa');var recursiveMapAttributes=[_0x547c('0xb'),_0x547c('0xc')];var verticesWithRetry=[_0x547c('0xd'),_0x547c('0xe'),_0x547c('0xf')];var AGIVertices=function(_0x3e2279,_0x40be25,_0x10dec9){this[_0x547c('0x10')]=_0x3e2279;this[_0x547c('0x11')]=_0x40be25;this[_0x547c('0x12')]=_0x10dec9;};AGIVertices[_0x547c('0x13')][_0x547c('0x14')]=function(_0x386e2c,_0x8addbe){this[_0x547c('0x11')]['getVariableById'](_0x386e2c)[_0x547c('0x15')](function(_0x39dce7){_0x8addbe(null,_0x39dce7?_0x39dce7['name']:![]);})[_0x547c('0x16')](function(_0x201d95){_0x8addbe(_0x201d95);});};AGIVertices[_0x547c('0x13')][_0x547c('0x17')]=function(_0x392a35,_0x150317){this[_0x547c('0x11')][_0x547c('0x18')](_0x392a35)[_0x547c('0x15')](function(_0x161991){_0x150317(null,_0x161991?_0x161991[_0x547c('0x19')]:![]);})[_0x547c('0x16')](function(_0x39f316){_0x150317(_0x39f316);});};AGIVertices[_0x547c('0x13')][_0x547c('0x1a')]=function(_0xf32cdd,_0x39498d){this[_0x547c('0x11')]['getSquareProjectById'](_0xf32cdd)['then'](function(_0x23fa9e){_0x39498d(null,_0x23fa9e?_0x23fa9e[_0x547c('0x19')]:![]);})[_0x547c('0x16')](function(_0x4a8901){_0x39498d(_0x4a8901);});};AGIVertices[_0x547c('0x13')][_0x547c('0x1b')]=function(_0x1ddbd3,_0x58ddc9){this[_0x547c('0x11')][_0x547c('0x1c')](_0x1ddbd3)['then'](function(_0x5453f9){_0x58ddc9(null,_0x5453f9?_0x5453f9[_0x547c('0x1d')]:![]);})[_0x547c('0x16')](function(_0x4f20c1){_0x58ddc9(_0x4f20c1);});};AGIVertices[_0x547c('0x13')][_0x547c('0x1e')]=function(_0x592e46,_0x2e317a){this[_0x547c('0x11')][_0x547c('0x1f')](_0x592e46)['then'](function(_0x3a55a0){_0x2e317a(null,_0x3a55a0?_0x3a55a0[_0x547c('0x19')]:![]);})[_0x547c('0x16')](function(_0x26823c){_0x2e317a(_0x26823c);});};AGIVertices[_0x547c('0x13')][_0x547c('0x20')]=function(_0x2ab2cc,_0x17fa33){this['rpc'][_0x547c('0x21')](_0x2ab2cc)['then'](function(_0x5b05f2){_0x17fa33(null,_0x5b05f2?_0x5b05f2['name']:![]);})['catch'](function(_0x2c725d){_0x17fa33(_0x2c725d);});};AGIVertices['prototype'][_0x547c('0x22')]=function(_0x5729b0,_0x3ea493){var _0x486216=this;this[_0x547c('0x11')][_0x547c('0x23')](_0x5729b0)[_0x547c('0x15')](function(_0x30a96c){_0x3ea493(null,_0x30a96c?_0x486216[_0x547c('0x24')](_0x30a96c['save_name']):![]);})['catch'](function(_0x28c282){_0x3ea493(_0x28c282);});};AGIVertices['prototype'][_0x547c('0x25')]=function(_0xed2d39,_0x3e7652){this[_0x547c('0x11')][_0x547c('0x26')](_0xed2d39)[_0x547c('0x15')](function(_0x342c10){_0x3e7652(null,_0x342c10?_0x342c10:![]);})['catch'](function(_0x54f6a8){_0x3e7652(_0x54f6a8);});};AGIVertices[_0x547c('0x13')][_0x547c('0x27')]=function(_0x1e4313,_0x26850a,_0x1b8c17){this[_0x547c('0x12')][_0x547c('0x27')](_0x1e4313,_0x26850a)[_0x547c('0x15')](function(){_0x1b8c17(null);})[_0x547c('0x16')](function(_0x31026e){_0x1b8c17(_0x31026e);});};AGIVertices[_0x547c('0x13')][_0x547c('0x28')]=function(_0x243cb,_0x385275){this['rpc'][_0x547c('0x29')](_0x243cb)['then'](function(_0x4ad00e){if(_0x4ad00e){if(_0x4ad00e['IntervalId']){_0x385275(null,[_0x4ad00e[_0x547c('0x2a')]]);}else{_0x385275(null,_[_0x547c('0x2b')](_0x4ad00e[_0x547c('0x2c')],_0x547c('0x2a')));}}else{_0x385275(null,![]);}})[_0x547c('0x16')](function(_0x45f724){_0x385275(_0x45f724);});};AGIVertices['prototype']['getSoundPath']=function(_0x5ea2c7){return util[_0x547c('0x2d')](_0x547c('0x2e'),FILES_PATH,_0x5ea2c7);};AGIVertices[_0x547c('0x13')][_0x547c('0x2f')]=function(_0xe0352c,_0x185465,_0x57ce3b){odbc[_0x547c('0x30')](_0xe0352c,function(_0x4e2e52){if(_0x4e2e52){logger[_0x547c('0x31')](_0x547c('0x32'),_0x4e2e52);_0x57ce3b(_0x4e2e52);}else{logger['info'](_0x547c('0x33'));odbc['query'](_0x185465,function(_0x511103,_0x3137e0){if(_0x511103){logger[_0x547c('0x34')](_0x547c('0x35'),_0x185465);_0x57ce3b(_0x511103);}else{logger[_0x547c('0x34')]('Query\x20executed\x20correctly\x20%s',_0x185465);odbc['close'](function(_0xe5f1b9){if(_0xe5f1b9){logger[_0x547c('0x31')](_0x547c('0x36'),_0xe5f1b9);}_0x57ce3b(null,_0x3137e0);});}});}});};AGIVertices['prototype'][_0x547c('0x37')]=function(_0x21838a,_0x4746ee){this['rpc'][_0x547c('0x38')](_0x21838a)[_0x547c('0x15')](function(_0xbb08e7){_0x4746ee(null,_0xbb08e7?_0xbb08e7:![]);})['catch'](function(_0x26e8d2){_0x4746ee(_0x26e8d2);});};AGIVertices[_0x547c('0x13')]['createSmsMessage']=function(_0x26ea8c,_0x23c8b2){this[_0x547c('0x11')]['createSmsMessage'](_0x26ea8c)[_0x547c('0x15')](function(_0x4f2859){_0x23c8b2(null,_0x4f2859);})[_0x547c('0x16')](function(_0x5393a2){_0x23c8b2(_0x5393a2);});};AGIVertices[_0x547c('0x13')][_0x547c('0x39')]=function(_0x3d37d7,_0x3797d3,_0x139a61){this[_0x547c('0x11')]['createSquareDetailsReport']({'uniqueid':this['channel'][_0x547c('0x3a')],'node':_0x3d37d7[_0x547c('0x3b')],'application':_0x3d37d7[_0x547c('0x3c')],'data':_0x3797d3||null,'project_name':this['channel'][_0x547c('0x3d')],'callerid':this[_0x547c('0x10')][_0x547c('0x3e')]})[_0x547c('0x15')](function(_0x1e4ab7){if(_0x139a61){_0x139a61(null,_0x1e4ab7);}})[_0x547c('0x16')](function(_0x4adb6f){if(_0x139a61){_0x139a61(_0x4adb6f);}});};AGIVertices[_0x547c('0x13')][_0x547c('0x3f')]=function(_0x3d7088,_0x4c4287,_0x291302,_0x478320){this[_0x547c('0x11')][_0x547c('0x3f')]({'uniqueid':this['channel'][_0x547c('0x3a')],'callerid':this['channel'][_0x547c('0x3e')],'calleridname':this['channel'][_0x547c('0x40')],'context':this[_0x547c('0x10')]['context'],'extension':this[_0x547c('0x10')][_0x547c('0x41')],'priority':this[_0x547c('0x10')][_0x547c('0x42')],'accountcode':this['channel'][_0x547c('0x43')],'dnid':this['channel']['dnid'],'projectName':this[_0x547c('0x10')][_0x547c('0x3d')],'saveName':_0x4c4287,'filename':_0x3d7088[_0x547c('0x44')]||_0x4c4287,'savePath':_0x291302})[_0x547c('0x15')](function(_0x1daaf4){_0x478320(null,_0x1daaf4);})[_0x547c('0x16')](function(_0x153392){_0x478320(_0x153392);});};AGIVertices[_0x547c('0x13')][_0x547c('0x45')]=function(_0x31a262,_0x25b267,_0x38b2bc,_0x503b41,_0x4a0f42){this[_0x547c('0x11')][_0x547c('0x45')]({'uniqueid':this['channel'][_0x547c('0x3a')],'body':_0x31a262,'direction':_0x25b267,'providerName':_0x38b2bc,'providerResponse':_0x503b41})[_0x547c('0x15')](function(_0x3ab131){if(_0x4a0f42){_0x4a0f42(null,_0x3ab131);}})[_0x547c('0x16')](function(_0x30680d){if(_0x4a0f42){_0x4a0f42(_0x30680d);}});};AGIVertices[_0x547c('0x13')]['createCmContact']=function(_0x152982,_0x5258cf){this[_0x547c('0x11')][_0x547c('0x46')]({'firstName':_[_0x547c('0x47')](_0x152982['name'])||_[_0x547c('0x48')](_0x152982['name'])?_0x547c('0x49')+Math[_0x547c('0x4a')]():_0x152982['name'],'lastName':_[_0x547c('0x47')](_0x152982[_0x547c('0x4b')])||_[_0x547c('0x48')](_0x152982[_0x547c('0x4b')])?null:_0x152982[_0x547c('0x4b')],'phone':_0x152982[_0x547c('0x4c')],'ListId':_0x152982[_0x547c('0x4d')],'scheduledat':_0x152982['scheduledAt'],'callbackUniqueid':this[_0x547c('0x10')]['uniqueid'],'tags':_0x547c('0x4e'),'description':_0x547c('0x4f')+_0x152982[_0x547c('0x50')][_0x547c('0x51')](),'priority':_0x152982[_0x547c('0x52')]})['then'](function(_0x369fb0){_0x5258cf(null,_0x369fb0);})['catch'](function(_0x124222){_0x5258cf(_0x124222);});};AGIVertices[_0x547c('0x13')][_0x547c('0x53')]=function(_0x2b14e0,_0x347536){this['rpc'][_0x547c('0x54')](_0x2b14e0)[_0x547c('0x15')](function(_0x4efdd5){_0x347536(null,_0x4efdd5?_0x4efdd5[_0x547c('0x19')]:![]);})[_0x547c('0x16')](function(_0x22e016){_0x347536(_0x22e016);});};AGIVertices[_0x547c('0x13')]['agentPause']=function(_0x52d134,_0x56125c,_0x188363){var _0x455467={'role':'agent'};_0x455467[_0x52d134]=this[_0x547c('0x10')]['callerid'];this[_0x547c('0x11')][_0x547c('0x55')](_0x455467,_0x56125c,this[_0x547c('0x10')][_0x547c('0x3a')])[_0x547c('0x15')](function(_0x423889){_0x188363(null,_[_0x547c('0x48')](_0x423889)?![]:!![]);})['catch'](function(_0x5746ee){logger[_0x547c('0x31')](_0x5746ee);_0x188363(null,![]);});};AGIVertices[_0x547c('0x13')][_0x547c('0x56')]=function(_0x64bf1e,_0xd3b584){var _0x50582e={'role':'agent'};_0x50582e[_0x64bf1e]=this['channel']['callerid'];this['rpc'][_0x547c('0x56')](_0x50582e)[_0x547c('0x15')](function(_0xe32d09){_0xd3b584(null,_['isNil'](_0xe32d09)?![]:!![]);})[_0x547c('0x16')](function(_0x1f901b){logger[_0x547c('0x31')](_0x1f901b);_0xd3b584(null,![]);});};AGIVertices[_0x547c('0x13')]['agentLogout']=function(_0x4ab718,_0x5c395d){var _0xa66eee={'role':_0x547c('0x57')};_0xa66eee[_0x4ab718]=this[_0x547c('0x10')][_0x547c('0x3e')];this[_0x547c('0x11')]['agentLogout'](_0xa66eee)['then'](function(_0x1e2826){_0x5c395d(null,_[_0x547c('0x48')](_0x1e2826)?![]:!![]);})[_0x547c('0x16')](function(_0x70451){logger[_0x547c('0x31')](_0x70451);_0x5c395d(null,![]);});};AGIVertices['prototype']['agentLogin']=function(_0x531892,_0x244e32){var _0x48f519={'role':_0x547c('0x57')};_0x48f519[_0x531892]=this[_0x547c('0x10')][_0x547c('0x3e')];var _0x50f4e6=_0x531892!='internal'?util[_0x547c('0x2d')](_0x547c('0x58'),_0x547c('0x59'),this[_0x547c('0x10')][_0x547c('0x3e')]):undefined;this[_0x547c('0x11')][_0x547c('0x5a')](_0x48f519,_0x50f4e6)['then'](function(_0x310243){_0x244e32(null,_[_0x547c('0x48')](_0x310243)?![]:!![]);})[_0x547c('0x16')](function(_0x6bf96d){logger[_0x547c('0x31')](_0x6bf96d);_0x244e32(null,![]);});};AGIVertices[_0x547c('0x13')][_0x547c('0x5b')]=function(_0x4066ce,_0x49dc3c){sh[_0x547c('0x5c')](_[_0x547c('0x5d')](_0x4066ce),function(_0x1dedca,_0xe3e820){var _0x4f0ed4=_0xe3e820[_0x547c('0x5e')](/(\r\n|\n|\r)/gm,'');_0x49dc3c(null,_0x4f0ed4);});};AGIVertices[_0x547c('0x13')][_0x547c('0x5f')]=function(_0x4e2acc,_0x52cccd){scripts['googleCloudTTS'](_0x4e2acc[_0x547c('0x60')],_0x4e2acc[_0x547c('0x61')]||_0x547c('0x62'),_0x4e2acc['text'],_0x4e2acc[_0x547c('0x63')]||_0x547c('0x64'),_0x4e2acc[_0x547c('0x65')]||_0x547c('0x66'),_0x4e2acc['audioEncoding']||'MP3')[_0x547c('0x15')](function(_0x5e41e4){_0x52cccd(null,_0x5e41e4);})[_0x547c('0x16')](function(_0x393204){_0x52cccd(_0x393204);});};AGIVertices['prototype'][_0x547c('0x67')]=function(_0x4edded,_0x1566d6){scripts[_0x547c('0x67')](_0x4edded['text'],_0x4edded[_0x547c('0x68')]||'en',0x1)[_0x547c('0x15')](function(_0xdd0ebc){_0x1566d6(null,_0xdd0ebc);})[_0x547c('0x16')](function(_0x4c7e53){_0x1566d6(_0x4c7e53);});};AGIVertices['prototype'][_0x547c('0x69')]=function(_0x165bfe,_0x358aed){var _0x3378a3={'uri':_0x165bfe['url'],'method':_0x165bfe['method'],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x165bfe[_0x547c('0x6a')])===_0x547c('0x6b')&&parseInt(_0x165bfe[_0x547c('0x6a')])>=0x1?parseInt(_0x165bfe[_0x547c('0x6a')])*0x3e8:0x5*0x3e8};if(_[_0x547c('0x6c')]([_0x547c('0x6d'),_0x547c('0x6e')],_0x3378a3[_0x547c('0x6f')][_0x547c('0x70')]())){try{_0x3378a3[_0x547c('0x71')]=_0x165bfe[_0x547c('0xc')]?JSON[_0x547c('0x72')](_0x165bfe[_0x547c('0xc')]):{};}catch(_0x4e038b){logger['error']('An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function',_0x4e038b);}}try{_0x3378a3[_0x547c('0x73')]=_0x165bfe['rawHeaders']?JSON['parse'](_0x165bfe[_0x547c('0xb')]):{};}catch(_0x5cbef2){logger['error'](_0x547c('0x74'),_0x5cbef2);}if(_0x165bfe[_0x547c('0x75')]){try{var _0x2ab7d3=require(_0x165bfe[_0x547c('0x75')])['sync'](this,_0x3378a3);_0x3378a3[_0x547c('0x76')]=Mustache[_0x547c('0x77')](_0x165bfe['url'],_0x2ab7d3,{},['$$','$$']);if(_0x3378a3['headers']){_0x3378a3[_0x547c('0x73')]=JSON[_0x547c('0x72')](Mustache[_0x547c('0x77')](JSON[_0x547c('0x78')](_0x3378a3[_0x547c('0x73')]),_0x2ab7d3,{},['$$','$$']));}if(_0x3378a3[_0x547c('0x71')]){_0x3378a3[_0x547c('0x71')]=JSON[_0x547c('0x72')](Mustache['render'](JSON[_0x547c('0x78')](_0x3378a3[_0x547c('0x71')]),_0x2ab7d3,{},['$$','$$']));}}catch(_0x1fd7d1){logger['error'](_0x547c('0x79'),_0x1fd7d1);}}rp(_0x3378a3)[_0x547c('0x15')](function(_0x2cb2ff){var _0x1fa904={'statusCode':_0x2cb2ff[_0x547c('0x7a')]||0xc8,'statusMessage':_0x2cb2ff[_0x547c('0x7b')]||'OK','headers':_0x2cb2ff[_0x547c('0x73')]||{},'body':_0x2cb2ff[_0x547c('0x71')]||{}};_0x358aed(null,_0x1fa904);})[_0x547c('0x16')](function(_0x7a72fd){var _0x73eb72={'statusCode':_0x7a72fd[_0x547c('0x7a')]||0x1f4,'statusMessage':_0x7a72fd[_0x547c('0x7c')]||_0x547c('0x7d'),'headers':_0x7a72fd['options'][_0x547c('0x73')]||{},'body':_0x7a72fd[_0x547c('0x7e')][_0x547c('0x71')]||{}};_0x358aed(null,_0x73eb72);});};AGIVertices['prototype'][_0x547c('0x7f')]=function(_0x19927b,_0x185176){scripts[_0x547c('0x7f')](this[_0x547c('0x10')][_0x547c('0x3a')],_0x19927b[_0x547c('0x80')],_0x19927b[_0x547c('0x62')],_0x19927b[_0x547c('0x81')]||'en')[_0x547c('0x15')](function(_0x224f62){_0x185176(null,_0x224f62);})[_0x547c('0x16')](function(_0x3a988f){_0x185176(_0x3a988f);});};AGIVertices['prototype']['googleDialogflowV2']=function(_0x4d8594,_0x588e2b){scripts['googleDialogflowV2'](this['channel'][_0x547c('0x3a')],_0x4d8594[_0x547c('0x82')],_0x4d8594[_0x547c('0x83')],_0x4d8594[_0x547c('0x84')],_0x4d8594['text'],_0x4d8594[_0x547c('0x85')]||'en')[_0x547c('0x15')](function(_0x27410e){_0x588e2b(null,_0x27410e);})['catch'](function(_0x4607f4){_0x588e2b(_0x4607f4);});};AGIVertices[_0x547c('0x13')][_0x547c('0x86')]=function(_0x53a0a7,_0x51f200){scripts['sestekNDA'](this[_0x547c('0x10')],_0x53a0a7)['then'](function(_0x41e2c2){_0x51f200(null,_0x41e2c2);})[_0x547c('0x16')](function(_0x58d2b3){_0x51f200(_0x58d2b3);});};AGIVertices[_0x547c('0x13')][_0x547c('0x87')]=function(_0x168b42,_0x3f54cf){scripts[_0x547c('0x87')](_0x168b42['key'],_0x168b42[_0x547c('0x62')],_0x168b42['ispeech_tts_language']||_0x547c('0x64'),_0x168b42[_0x547c('0x88')])[_0x547c('0x15')](function(_0x1dfce9){_0x3f54cf(null,_0x1dfce9);})['catch'](function(_0x1e8cd7){_0x3f54cf(_0x1e8cd7);});};AGIVertices['prototype'][_0x547c('0x89')]=function(_0x8eb70e,_0x506426,_0x348ef8){scripts['ispeechASR'](_0x506426,_0x8eb70e[_0x547c('0x80')],_0x8eb70e[_0x547c('0x8a')]||_0x547c('0x64'),this[_0x547c('0x8b')](_0x8eb70e['model'])?_0x8eb70e[_0x547c('0x8c')]:undefined)[_0x547c('0x15')](function(_0xea441b){_0x348ef8(null,_0xea441b);})[_0x547c('0x16')](function(_0x2febce){_0x348ef8(_0x2febce);});};AGIVertices['prototype'][_0x547c('0x8d')]=function(_0x36d1b0,_0x28cbee){scripts['awsPolly'](_0x36d1b0[_0x547c('0x8e')],_0x36d1b0[_0x547c('0x8f')],_0x36d1b0[_0x547c('0x90')],_0x36d1b0[_0x547c('0x91')]||'Amy',_0x36d1b0[_0x547c('0x62')],_0x36d1b0['aws_text_type']||_0x547c('0x62'))['then'](function(_0x196128){_0x28cbee(null,_0x196128);})[_0x547c('0x16')](function(_0xc17a4d){_0x28cbee(_0xc17a4d);});};AGIVertices[_0x547c('0x13')][_0x547c('0x92')]=function(_0x2b314d,_0x48bb39){scripts['awsLex'](this['channel'][_0x547c('0x3a')],_0x2b314d[_0x547c('0x8e')],_0x2b314d[_0x547c('0x8f')],_0x2b314d[_0x547c('0x93')],_0x2b314d['text'],_0x2b314d[_0x547c('0x94')])['then'](function(_0xbd5c0e){_0x48bb39(null,_0xbd5c0e);})[_0x547c('0x16')](function(_0x7edc0f){_0x48bb39(_0x7edc0f);});};AGIVertices[_0x547c('0x13')][_0x547c('0x95')]=function(_0x15778c,_0x51e60a,_0x40bc73){scripts['googleASR'](_0x51e60a,_0x15778c[_0x547c('0x80')],_0x15778c[_0x547c('0x96')]||'en-US')[_0x547c('0x15')](function(_0x141f89){_0x40bc73(null,_0x141f89);})[_0x547c('0x16')](function(_0x1fe6a2){_0x40bc73(_0x1fe6a2);});};AGIVertices[_0x547c('0x13')][_0x547c('0x97')]=function(_0x24339b,_0x59bc57,_0xcdd93f){scripts[_0x547c('0x97')](_0x59bc57,_0x24339b[_0x547c('0x98')],_0x24339b['appsecret'],_0x24339b[_0x547c('0x76')])['then'](function(_0x1a29ca){_0xcdd93f(null,_0x1a29ca);})['catch'](function(_0x44b5e9){_0xcdd93f(_0x44b5e9);});};AGIVertices[_0x547c('0x13')][_0x547c('0x99')]=function(_0x13bbfe){var _0x515220=_[_0x547c('0x6c')](verticesWithRetry,_0x13bbfe[_0x547c('0x3c')])?_0x13bbfe:_[_0x547c('0x9a')](_0x13bbfe);for(var _0x358ca1 in _0x515220){if(_0x515220['hasOwnProperty'](_0x358ca1)){if(_0x515220[_0x358ca1]&&_['isString'](_0x515220[_0x358ca1])){if(_[_0x547c('0x6c')](recursiveMapAttributes,_0x358ca1)){_0x515220[_0x358ca1]=this[_0x547c('0x9b')](_0x515220[_0x358ca1]);}else{_0x515220[_0x358ca1]=this['replaceAllVariables'](_0x515220[_0x358ca1]);}}}}return _0x515220;};AGIVertices[_0x547c('0x13')]['recursiveNodeIndex']=function(_0x4c91fe){for(var _0x5c4b10 in _0x4c91fe){if(_0x4c91fe[_0x547c('0x9c')](_0x5c4b10)){if(_[_0x547c('0x9d')](_0x4c91fe[_0x5c4b10])){this[_0x547c('0x9e')](_0x4c91fe[_0x5c4b10]);}else if(_[_0x547c('0x9f')](_0x4c91fe[_0x5c4b10])){for(var _0x508a62=0x0;_0x508a62<_0x4c91fe[_0x5c4b10][_0x547c('0xa0')];_0x508a62++){this[_0x547c('0x9e')](_0x4c91fe[_0x5c4b10][_0x508a62]);}}else if(_[_0x547c('0xa1')](_0x4c91fe[_0x5c4b10])){_0x4c91fe[_0x5c4b10]=this['replaceAllVariables'](_0x4c91fe[_0x5c4b10]);}}}};AGIVertices[_0x547c('0x13')]['saveRestApiResult']=function(_0x90de50,_0x3ffc1e){for(var _0xc648f4 in _0x90de50){if(_0x90de50['hasOwnProperty'](_0xc648f4)){if(_[_0x547c('0x9d')](_0x90de50[_0xc648f4])){if(!_[_0x547c('0x47')](_0x90de50[_0xc648f4])){this['saveRestApiResult'](_0x90de50[_0xc648f4],util[_0x547c('0x2d')](_0x547c('0xa2'),_0x3ffc1e,_0xc648f4));}}else if(_[_0x547c('0x9f')](_0x90de50[_0xc648f4])){for(var _0x2fb055=0x0;_0x2fb055<_0x90de50[_0xc648f4][_0x547c('0xa0')];_0x2fb055++){this[_0x547c('0xa3')](_0x90de50[_0xc648f4][_0x2fb055],util[_0x547c('0x2d')](_0x547c('0xa2'),_0x3ffc1e,_0xc648f4+'['+_0x2fb055+']'));}}else{if(!_[_0x547c('0x48')](_0x90de50[_0xc648f4])){this[_0x547c('0x10')]['setVariable'](util['format'](_0x547c('0xa2'),_0x3ffc1e,_0xc648f4),_0x90de50[_0xc648f4]);}}}}};AGIVertices['prototype'][_0x547c('0x9b')]=function(_0x557e76){try{var _0x66a70c=JSON[_0x547c('0x72')](_0x557e76);this[_0x547c('0x9e')](_0x66a70c);return JSON[_0x547c('0x78')](_0x66a70c);}catch(_0x2c962d){return this[_0x547c('0xa4')](_0x557e76);}};AGIVertices[_0x547c('0x13')]['replaceAllVariables']=function(_0x180b89){var _0x23701c=_0x180b89[_0x547c('0xa5')]('{');for(var _0x436c13=0x1;_0x436c13<_0x23701c[_0x547c('0xa0')];_0x436c13+=0x1){var _0x3fa33c=_0x23701c[_0x436c13][_0x547c('0xa5')]('}');if(_0x3fa33c[_0x547c('0xa0')]>0x1){_0x180b89=_0x180b89[_0x547c('0xa6')]('{'+_0x3fa33c[0x0]+'}',this[_0x547c('0x10')][_0x547c('0x14')](_0x3fa33c[0x0])[_0x547c('0xa7')]||_0x3fa33c[0x0]);}}if(_0x23701c[_0x547c('0xa0')]===0x1){return _0x180b89['toString']();}return this[_0x547c('0xa4')](_0x180b89);};AGIVertices[_0x547c('0x13')][_0x547c('0xa8')]=function(_0x8811ee,_0x23da9d){var _0x11e9fd=this[_0x547c('0x10')][_0x547c('0x14')](_0x8811ee);if(_0x11e9fd['result']===-0x1){return _0x11e9fd;}logger[_0x547c('0x34')](util[_0x547c('0x2d')](_0x547c('0xa9'),_0x23da9d,_0x11e9fd['extra']));return this['channel'][_0x547c('0xaa')](_0x23da9d,_0x11e9fd[_0x547c('0xa7')]);};AGIVertices[_0x547c('0x13')][_0x547c('0x8b')]=function(_0x443680){return _0x443680&&_0x443680!=='0'&&_0x443680!=='-1'&&_0x443680!=='';};AGIVertices[_0x547c('0x13')][_0x547c('0xab')]=function(_0xb541a7){this['createSquareDetailsReport'][_0x547c('0xac')](this,_0xb541a7,'-');_0xb541a7[_0x547c('0xad')]=_0xb541a7['maxRetry'];return{'code':0xc8,'result':'-'};};AGIVertices[_0x547c('0x13')][_0x547c('0xae')]=function(_0x40421b){logger[_0x547c('0x34')](util['format'](_0x547c('0xaf'),_0x40421b[_0x547c('0x3b')]));if(!this[_0x547c('0x8b')](_0x40421b[_0x547c('0x62')])){return this[_0x547c('0x10')][_0x547c('0xb0')](_0x547c('0xb1'));}var _0x50d13b='\x22'+_0x40421b[_0x547c('0x62')]+'\x22';if(this[_0x547c('0x8b')](_0x40421b[_0x547c('0x7e')])){_0x50d13b+=','+_0x40421b[_0x547c('0x7e')];}var _0x57dae1=this[_0x547c('0x10')]['exec']('MRCPSynth',_0x50d13b);if(_0x57dae1[_0x547c('0xb2')]===-0x1){return _0x57dae1;}return this[_0x547c('0x10')]['noop'](util[_0x547c('0x2d')](_0x547c('0xb3'),_0x50d13b));};AGIVertices[_0x547c('0x13')]['mrcprecog']=function(_0x5c3ccc){logger[_0x547c('0x34')](util['format'](_0x547c('0xb4'),_0x5c3ccc[_0x547c('0x3b')]));if(!this[_0x547c('0x8b')](_0x5c3ccc[_0x547c('0xb5')])){return this['channel'][_0x547c('0xb0')](_0x547c('0xb6'));}var _0x580190=_0x5c3ccc[_0x547c('0xb5')];if(this[_0x547c('0x8b')](_0x5c3ccc['options'])){_0x580190+=','+_0x5c3ccc[_0x547c('0x7e')];}var _0xa5710=this[_0x547c('0x10')]['exec'](_0x547c('0xb7'),_0x580190);if(_0xa5710['result']===-0x1){return _0xa5710;}var _0x47c368=this[_0x547c('0xa8')]('RECOG_CONFIDENCE()',_0x547c('0xb8'));if(_0x47c368['result']===-0x1){return _0x47c368;}var _0x1d00ea=this['getAndSetVariable'](_0x547c('0xb9'),_0x547c('0xba'));if(_0x1d00ea[_0x547c('0xb2')]===-0x1){return _0x1d00ea;}var _0x1bf745=this[_0x547c('0xa8')](_0x547c('0xbb'),_0x547c('0xbc'));if(_0x1bf745[_0x547c('0xb2')]===-0x1){return _0x1bf745;}return this['channel'][_0x547c('0xb0')](util[_0x547c('0x2d')](_0x547c('0xbd'),_0x580190));};AGIVertices[_0x547c('0x13')][_0x547c('0x8')]=function(_0x6105fe){logger[_0x547c('0x34')](util[_0x547c('0x2d')](_0x547c('0xbe'),_0x6105fe[_0x547c('0x3b')]));return this[_0x547c('0x10')][_0x547c('0x8')]([_0x6105fe[_0x547c('0xbf')],_0x6105fe[_0x547c('0xc0')]]);};AGIVertices['prototype'][_0x547c('0xc1')]=function(_0x2ea971){logger[_0x547c('0x34')](util[_0x547c('0x2d')]('Enter\x20in\x20ANSWER\x20(%s)\x20block',_0x2ea971[_0x547c('0x3b')]));if(this[_0x547c('0x8b')](_0x2ea971[_0x547c('0x6a')])){logger[_0x547c('0x34')](util[_0x547c('0x2d')](_0x547c('0xc2'),_0x2ea971[_0x547c('0x6a')]));var _0xecf19c=this['channel'][_0x547c('0xc3')](_0x2ea971[_0x547c('0x6a')]);if(_0xecf19c[_0x547c('0xb2')]===-0x1){return _0xecf19c;}}return this[_0x547c('0x10')][_0x547c('0xc1')]();};AGIVertices[_0x547c('0x13')][_0x547c('0x4e')]=function(_0x30a5b2){logger[_0x547c('0x34')](util[_0x547c('0x2d')](_0x547c('0xc4'),_0x30a5b2[_0x547c('0x3b')]));if(!this['isConfigured'](_0x30a5b2[_0x547c('0x4d')])){return this[_0x547c('0x10')][_0x547c('0x31')](_0x30a5b2,_0x547c('0xc5'));}_0x30a5b2[_0x547c('0x50')]=moment();if(this['isConfigured'](_0x30a5b2['delay'])){_0x30a5b2[_0x547c('0x50')]=moment()[_0x547c('0xc6')](_0x30a5b2[_0x547c('0xc7')],'minutes');}if(!this[_0x547c('0x8b')](_0x30a5b2[_0x547c('0x52')])){_0x30a5b2[_0x547c('0x52')]=0x2;}this[_0x547c('0x46')][_0x547c('0xac')](this,_0x30a5b2);return this[_0x547c('0x10')][_0x547c('0xb0')](util[_0x547c('0x2d')](_0x547c('0xc8'),_0x30a5b2['phone'],_0x30a5b2['list_id'],_0x30a5b2[_0x547c('0x50')]));};AGIVertices[_0x547c('0x13')]['custom_app']=function(_0x101cd1){logger[_0x547c('0x34')](util[_0x547c('0x2d')](_0x547c('0xc9'),_0x101cd1[_0x547c('0x3b')]));var _0x21d031=this[_0x547c('0x10')][_0x547c('0x5c')](_0x101cd1['application'],_0x101cd1['options']);if(_0x21d031[_0x547c('0xb2')]===-0x1){return _0x21d031;}return this['channel'][_0x547c('0xb0')](util[_0x547c('0x2d')]('Executed\x20command\x20%s\x20%s',_0x101cd1[_0x547c('0xca')],_0x101cd1['options']));};AGIVertices[_0x547c('0x13')][_0x547c('0xcb')]=function(_0x5b1afb){logger[_0x547c('0x34')](util[_0x547c('0x2d')](_0x547c('0xcc'),_0x5b1afb[_0x547c('0x3b')]));if(!this[_0x547c('0x8b')](_0x5b1afb[_0x547c('0x62')])){return this[_0x547c('0x10')]['noop']('no\x20text\x20configured');}var _0x21c274='\x22'+_0x5b1afb[_0x547c('0x62')]+'\x22';if(this['isConfigured'](_0x5b1afb[_0x547c('0x7e')])){_0x21c274+=','+_0x5b1afb['options'];}var _0x340512=this[_0x547c('0x10')][_0x547c('0x5c')](_0x547c('0xcd'),_0x21c274);if(_0x340512['result']===-0x1){return _0x340512;}return this[_0x547c('0x10')][_0x547c('0xb0')](util[_0x547c('0x2d')]('Executed\x20command\x20MRCPSynth\x20%s',_0x21c274));};AGIVertices[_0x547c('0x13')]['sestektts']=function(_0x2b4fd7){logger[_0x547c('0x34')](util[_0x547c('0x2d')](_0x547c('0xce'),_0x2b4fd7[_0x547c('0x3b')]));if(!this[_0x547c('0x8b')](_0x2b4fd7[_0x547c('0x62')])){return this[_0x547c('0x10')]['noop']('no\x20text\x20configured');}var _0x36ee98='\x22'+_0x2b4fd7[_0x547c('0x62')]+'\x22';if(this['isConfigured'](_0x2b4fd7[_0x547c('0x7e')])){_0x36ee98+=','+_0x2b4fd7[_0x547c('0x7e')];}var _0x4a5a9b=this['channel'][_0x547c('0x5c')](_0x547c('0xcd'),_0x36ee98);if(_0x4a5a9b[_0x547c('0xb2')]===-0x1){return _0x4a5a9b;}return this[_0x547c('0x10')]['noop'](util[_0x547c('0x2d')](_0x547c('0xb3'),_0x36ee98));};AGIVertices[_0x547c('0x13')][_0x547c('0xcf')]=function(_0x5256b0){logger[_0x547c('0x34')](util[_0x547c('0x2d')](_0x547c('0xd0'),_0x5256b0[_0x547c('0x3b')]));if(!this[_0x547c('0x8b')](_0x5256b0[_0x547c('0xb5')])){return this[_0x547c('0x10')][_0x547c('0xb0')](_0x547c('0xb6'));}var _0x42c8c5=_0x5256b0[_0x547c('0xb5')];if(this[_0x547c('0x8b')](_0x5256b0[_0x547c('0x7e')])){_0x42c8c5+=','+_0x5256b0[_0x547c('0x7e')];}var _0x5f2608=this['channel'][_0x547c('0x5c')](_0x547c('0xb7'),_0x42c8c5);if(_0x5f2608[_0x547c('0xb2')]===-0x1){return _0x5f2608;}var _0x5add20=this[_0x547c('0xa8')](_0x547c('0xd1'),_0x547c('0xd2'));if(_0x5add20[_0x547c('0xb2')]===-0x1){return _0x5add20;}var _0x45f2b7=this[_0x547c('0xa8')]('RECOG_INPUT()',_0x547c('0xd3'));if(_0x45f2b7[_0x547c('0xb2')]===-0x1){return _0x45f2b7;}var _0x47ad34=this['getAndSetVariable'](_0x547c('0xbb'),_0x547c('0xd4'));if(_0x47ad34[_0x547c('0xb2')]===-0x1){return _0x47ad34;}return this['channel'][_0x547c('0xb0')](util[_0x547c('0x2d')](_0x547c('0xbd'),_0x42c8c5));};AGIVertices[_0x547c('0x13')][_0x547c('0xd5')]=function(_0x4a2d0d){logger[_0x547c('0x34')](util[_0x547c('0x2d')](_0x547c('0xd6'),_0x4a2d0d[_0x547c('0x3b')]));if(!this[_0x547c('0x8b')](_0x4a2d0d[_0x547c('0xb5')])){return this[_0x547c('0x10')]['noop']('no\x20grammar\x20configured');}var _0x4eee3e=_0x4a2d0d[_0x547c('0xb5')];if(this['isConfigured'](_0x4a2d0d[_0x547c('0x7e')])){_0x4eee3e+=','+_0x4a2d0d[_0x547c('0x7e')];}var _0x135c87=this[_0x547c('0x10')]['exec'](_0x547c('0xb7'),_0x4eee3e);if(_0x135c87[_0x547c('0xb2')]===-0x1){return _0x135c87;}var _0x65a4e4=this['getAndSetVariable'](_0x547c('0xd1'),_0x547c('0xd7'));if(_0x65a4e4['result']===-0x1){return _0x65a4e4;}var _0x203b7d=this[_0x547c('0xa8')](_0x547c('0xb9'),_0x547c('0xd8'));if(_0x203b7d['result']===-0x1){return _0x203b7d;}var _0x1e3004=this[_0x547c('0xa8')]('RECOG_INSTANCE()','SESTEK_ASR_INSTANCE');if(_0x1e3004[_0x547c('0xb2')]===-0x1){return _0x1e3004;}return this[_0x547c('0x10')][_0x547c('0xb0')](util[_0x547c('0x2d')](_0x547c('0xbd'),_0x4eee3e));};AGIVertices[_0x547c('0x13')][_0x547c('0xd9')]=function(_0x3abe71){logger[_0x547c('0x34')](util['format'](_0x547c('0xda'),_0x3abe71[_0x547c('0x3b')]));if(!this[_0x547c('0x8b')](_0x3abe71[_0x547c('0xdb')])){return this[_0x547c('0x10')][_0x547c('0x31')](_0x3abe71,_0x547c('0xdc'));}var _0x1059cd=this['getSquareOdbc'][_0x547c('0xac')](this,_0x3abe71['odbc_id']);if(!_0x1059cd){return this[_0x547c('0x10')][_0x547c('0x31')](_0x3abe71,_0x547c('0xdd'));}if(!this[_0x547c('0x8b')](_0x3abe71[_0x547c('0xde')])){return this['channel'][_0x547c('0x31')](_0x3abe71,'no\x20query\x20configured');}var _0xae973e=_0x3abe71[_0x547c('0xde')][_0x547c('0x5e')](/(\r\n|\n|\r)/gm,'\x20');this['channel'][_0x547c('0xb0')](util[_0x547c('0x2d')](_0x547c('0xdf'),_0xae973e));var _0x2026bf=this[_0x547c('0x2f')]['sync'](this,_0x1059cd,_0xae973e);this['createSquareDetailsReport'][_0x547c('0xac')](this,_0x3abe71,_0xae973e);if(!this[_0x547c('0x8b')](_0x3abe71['variable_id'])){return this[_0x547c('0x10')]['noop'](_0x547c('0xe0'));}var _0x36eb83=this['getVariable'][_0x547c('0xac')](this,_0x3abe71[_0x547c('0xe1')]);if(!_0x36eb83){return this['channel'][_0x547c('0x31')](_0x3abe71,'no\x20variable\x20found');}var _0x85ac5c=this;_0x2026bf['forEach'](function(_0x2eff31,_0x288fa8){Object['keys'](_0x2eff31)['forEach'](function(_0x4cdef9){_0x85ac5c[_0x547c('0x10')][_0x547c('0xaa')](util[_0x547c('0x2d')]('%s[%s][%s]',_0x36eb83,_0x288fa8,_0x4cdef9),_0x2eff31[_0x4cdef9]);});});this[_0x547c('0x10')][_0x547c('0xaa')](util['format'](_0x547c('0xe2'),_0x36eb83),_0x2026bf[_0x547c('0xa0')]);return this[_0x547c('0x10')][_0x547c('0xb0')](util['format'](_0x547c('0xe3'),_0x36eb83));};AGIVertices['prototype'][_0x547c('0xe4')]=function(_0x27ad64){logger[_0x547c('0xe5')](util[_0x547c('0x2d')](_0x547c('0xe6'),_0x27ad64[_0x547c('0x3b')]));if(!this[_0x547c('0x8b')](_0x27ad64[_0x547c('0xe7')])){return this['channel'][_0x547c('0x31')](_0x27ad64,'no\x20user\x20selected');}var _0x21c7be=this[_0x547c('0x1e')][_0x547c('0xac')](this,_0x27ad64[_0x547c('0xe7')]);if(!_0x21c7be){return this['channel']['error'](_0x27ad64,_0x547c('0xe8'));}var _0x490e1e=this[_0x547c('0x10')][_0x547c('0x5c')](_0x547c('0xe9'),[util[_0x547c('0x2d')](_0x547c('0xea'),_0x21c7be),_0x27ad64[_0x547c('0x6a')],_0x27ad64[_0x547c('0xeb')],_0x27ad64[_0x547c('0xec')]]);if(_0x490e1e[_0x547c('0xb2')]===-0x1){return _0x490e1e;}return this[_0x547c('0x10')]['noop'](util['format']('Executed\x20command\x20%s','DIAL'));};AGIVertices[_0x547c('0x13')][_0x547c('0xed')]=function(_0x27aeb1){logger[_0x547c('0x34')](util[_0x547c('0x2d')]('Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block',_0x27aeb1[_0x547c('0x3b')]));if(!this['isConfigured'](_0x27aeb1[_0x547c('0x80')])){return this[_0x547c('0x10')]['noop'](_0x547c('0xee'));}if(!this[_0x547c('0x8b')](_0x27aeb1['text'])){return this[_0x547c('0x10')][_0x547c('0xb0')](_0x547c('0xb1'));}this[_0x547c('0x10')][_0x547c('0xef')]=!![];this['createSquareDetailsReport'](_0x27aeb1);this[_0x547c('0x45')](_0x27aeb1[_0x547c('0x62')],'in','','');this[_0x547c('0x10')]['noop'](util[_0x547c('0x2d')](_0x547c('0xf0'),_0x27aeb1[_0x547c('0x62')]));var _0x251e38=this[_0x547c('0x7f')]['sync'](this,_0x27aeb1);if(_0x251e38){for(var _0x57eba7 in _0x251e38){if(_0x251e38[_0x547c('0x9c')](_0x57eba7)){this[_0x547c('0x10')]['setVariable'](util['format']('DIALOGFLOW_%s',_0x57eba7[_0x547c('0x70')]()),_0x251e38[_0x57eba7]);}}this[_0x547c('0x45')](_0x251e38['speech'],_0x547c('0xf1'),'dialogflow','');return this[_0x547c('0x10')][_0x547c('0xb0')](util[_0x547c('0x2d')](_0x547c('0xf2'),_0x251e38[_0x547c('0xf3')]));}return this['channel'][_0x547c('0x31')](_0x27aeb1,_0x547c('0xf4'));};AGIVertices[_0x547c('0x13')]['dialogflowV2']=function(_0x309343){logger['info'](util[_0x547c('0x2d')](_0x547c('0xf5'),_0x309343[_0x547c('0x3b')]));if(!this[_0x547c('0x8b')](_0x309343['dialogflowV2_project_id'])){return this[_0x547c('0x10')][_0x547c('0xb0')](_0x547c('0xf6'));}if(!this[_0x547c('0x8b')](_0x309343[_0x547c('0x83')])){return this[_0x547c('0x10')][_0x547c('0xb0')]('no\x20client_email\x20configured');}if(!this[_0x547c('0x8b')](_0x309343['private_key'])){return this[_0x547c('0x10')][_0x547c('0xb0')]('no\x20private_key\x20configured');}if(!this[_0x547c('0x8b')](_0x309343[_0x547c('0x85')])){return this['channel'][_0x547c('0xb0')](_0x547c('0xf7'));}if(!this[_0x547c('0x8b')](_0x309343[_0x547c('0x62')])){return this[_0x547c('0x10')][_0x547c('0xb0')](_0x547c('0xb1'));}this['channel']['bot']=!![];this[_0x547c('0x39')](_0x309343);this[_0x547c('0x45')](_0x309343[_0x547c('0x62')],'in','','');this[_0x547c('0x10')][_0x547c('0xb0')](util[_0x547c('0x2d')](_0x547c('0xf8'),_0x309343[_0x547c('0x62')]));var _0x25e06e=this[_0x547c('0xf9')][_0x547c('0xac')](this,_0x309343);if(_0x25e06e){for(var _0x583fce in _0x25e06e){if(_0x25e06e['hasOwnProperty'](_0x583fce)){if(_0x583fce!==_0x547c('0xfa')){this[_0x547c('0x10')][_0x547c('0xaa')](util[_0x547c('0x2d')](_0x547c('0xfb'),_0x583fce[_0x547c('0x70')]()),_0x25e06e[_0x583fce]);}}}this[_0x547c('0x45')](_0x25e06e[_0x547c('0xf3')],_0x547c('0xf1'),'dialogflowV2',_0x25e06e['providerResponse']);return this['channel'][_0x547c('0xb0')](util[_0x547c('0x2d')](_0x547c('0xfc'),_0x25e06e[_0x547c('0xf3')]));}return this[_0x547c('0x10')]['error'](_0x309343,_0x547c('0xfd'));};AGIVertices[_0x547c('0x13')][_0x547c('0xfe')]=function(_0x770ced){logger[_0x547c('0x34')](util['format']('Enter\x20in\x20SESTEKNDA\x20(%s)\x20block',_0x770ced['label']));if(!this[_0x547c('0x8b')](_0x770ced[_0x547c('0xff')])){return this[_0x547c('0x10')][_0x547c('0xb0')]('no\x20ndauth\x20url\x20configured');}if(!this[_0x547c('0x8b')](_0x770ced[_0x547c('0x100')])){return this[_0x547c('0x10')][_0x547c('0xb0')](_0x547c('0x101'));}if(!this[_0x547c('0x8b')](_0x770ced['password'])){return this[_0x547c('0x10')]['noop'](_0x547c('0x102'));}if(!this[_0x547c('0x8b')](_0x770ced[_0x547c('0x103')])){return this['channel']['noop'](_0x547c('0xb1'));}this[_0x547c('0x10')][_0x547c('0xef')]=!![];this[_0x547c('0x39')](_0x770ced);this['createSquareMessage'](_0x770ced[_0x547c('0x62')],'in','','');this[_0x547c('0x10')][_0x547c('0xb0')](util[_0x547c('0x2d')]('Trying\x20SestekNDA:\x20%s',_0x770ced[_0x547c('0x62')]));var _0x4da4e0=this['sestekNDA'][_0x547c('0xac')](this,_0x770ced);if(_0x4da4e0){for(var _0x2cee60 in _0x4da4e0){if(_0x4da4e0['hasOwnProperty'](_0x2cee60)){this[_0x547c('0x10')][_0x547c('0xaa')](util[_0x547c('0x2d')](_0x547c('0x104'),_0x2cee60['toUpperCase']()),_0x4da4e0[_0x2cee60]);}}this[_0x547c('0x45')](_0x4da4e0['speech'],_0x547c('0xf1'),_0x547c('0xfe'),'');if(_0x4da4e0[_0x547c('0x105')]){this[_0x547c('0x10')][_0x547c('0xb0')](util[_0x547c('0x2d')]('Sestek\x20NDA\x20%s\x20file\x20created',_0x4da4e0['audiofile']));var _0x5bbcbf=this[_0x547c('0x10')][_0x547c('0x106')](_0x4da4e0['audiofile']);try{fs['unlink'](_0x4da4e0[_0x547c('0x105')]+'.wav');}catch(_0x4c7112){logger[_0x547c('0x31')](_0x4c7112);}return _0x5bbcbf;}else{return this[_0x547c('0x10')]['noop'](util[_0x547c('0x2d')]('SestekNDA\x20Result\x20%s',_0x4da4e0[_0x547c('0xf3')]));}}return this[_0x547c('0x10')][_0x547c('0x31')](_0x770ced,'SestekNDA\x20is\x20unreachable');};AGIVertices['prototype'][_0x547c('0x107')]=function(_0x25b70d){logger['info'](util[_0x547c('0x2d')](_0x547c('0x108'),_0x25b70d['label']));return this[_0x547c('0x10')][_0x547c('0xb0')](_0x547c('0x107'));};AGIVertices[_0x547c('0x13')][_0x547c('0x109')]=function(_0x2bceab){logger[_0x547c('0x34')](util[_0x547c('0x2d')]('Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block',_0x2bceab[_0x547c('0x3b')]));var _0x161191='';if(_0x2bceab['trunk_id']){if(!this[_0x547c('0x8b')](_0x2bceab[_0x547c('0x10a')])){return this[_0x547c('0x10')][_0x547c('0x31')](_0x2bceab,_0x547c('0x10b'));}else{var _0x1e0c5b=parseInt(_0x2bceab[_0x547c('0x10a')],0xa);if(isNaN(_0x1e0c5b)){_0x161191=_0x2bceab[_0x547c('0x10a')];}else{_0x161191=this[_0x547c('0x20')][_0x547c('0xac')](this,_0x2bceab[_0x547c('0x10a')]);if(!_0x161191){return this[_0x547c('0x10')]['error'](_0x2bceab,_0x547c('0x10c'));}}}}else if(_0x2bceab['trunk_name']){_0x161191=_0x2bceab['trunk_name'];}else{return this[_0x547c('0x10')][_0x547c('0x31')](_0x2bceab,_0x547c('0x10b'));}var _0x545620=this[_0x547c('0x10')]['exec'](_0x547c('0xe9'),[util[_0x547c('0x2d')](_0x547c('0x10d'),_0x161191,_0x2bceab[_0x547c('0x4c')]),_0x2bceab[_0x547c('0x6a')],_0x2bceab[_0x547c('0xeb')],_0x2bceab['url']]);if(_0x545620[_0x547c('0xb2')]===-0x1){return _0x545620;}return this['channel'][_0x547c('0xb0')](util[_0x547c('0x2d')](_0x547c('0x10e'),_0x547c('0xe9')));};AGIVertices[_0x547c('0x13')][_0x547c('0x10f')]=function(_0x7ba892){logger[_0x547c('0x34')](util['format'](_0x547c('0x110'),_0x7ba892['label']));return this['channel'][_0x547c('0xb0')](_0x547c('0x10f'));};AGIVertices[_0x547c('0x13')][_0x547c('0xe')]=function(_0x40061a){logger[_0x547c('0x34')](util['format'](_0x547c('0x111'),_0x40061a[_0x547c('0x3b')]));if(_0x40061a[_0x547c('0xad')]===0x0){return this[_0x547c('0xab')](_0x40061a);}_0x40061a[_0x547c('0xad')]-=0x1;if(!this[_0x547c('0x8b')](_0x40061a['file_id'])){return this[_0x547c('0x10')][_0x547c('0x31')](_0x40061a,_0x547c('0x112'));}var _0x410192=this[_0x547c('0x22')]['sync'](this,_0x40061a[_0x547c('0x113')]);if(!_0x410192){return this[_0x547c('0x10')][_0x547c('0x31')](_0x40061a,'no\x20file\x20audio\x20found');}if(!this[_0x547c('0x8b')](_0x40061a[_0x547c('0xe1')])){return this[_0x547c('0x10')][_0x547c('0x31')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x1748ef=this[_0x547c('0x10')][_0x547c('0x114')](_0x410192,_0x40061a['response'],_0x40061a[_0x547c('0x115')]);var _0x1201b7=_0x1748ef[_0x547c('0xb2')]?_0x1748ef['result']['toString']():'';logger['info']('test',JSON[_0x547c('0x78')](_0x1748ef));if(_0x1748ef['result']===-0x1){this[_0x547c('0x39')][_0x547c('0xac')](this,_0x40061a,_0x1201b7);return _0x1748ef;}else if(_0x1748ef['extra']==='timeout'){_0x1748ef[_0x547c('0xb2')]=_0x1201b7[_0x547c('0xa0')]>=parseInt(_0x40061a[_0x547c('0x116')])?'x':'i';}else{_0x1748ef[_0x547c('0xb2')]=_0x1201b7[_0x547c('0xa0')]>=parseInt(_0x40061a[_0x547c('0x116')])&&_0x1201b7[_0x547c('0xa0')]<=parseInt(_0x40061a[_0x547c('0x115')])?'x':'i';}var _0x214304=this['getVariable']['sync'](this,_0x40061a['variable_id']);if(!_0x214304){return this[_0x547c('0x10')][_0x547c('0x31')](_0x40061a,'no\x20variable\x20found');}this[_0x547c('0x10')][_0x547c('0xaa')](_0x214304,_0x1201b7);if(this[_0x547c('0x8b')](_0x40061a[_0x547c('0x117')])){var _0x1ddfff=parseInt(_0x40061a['hiddendigitsnum'],0xa);var _0x2f70e0=rs['generate']({'charset':'*','length':_0x1ddfff});var _0x5d8d4d=_0x1201b7[_0x547c('0xa0')];if(_0x5d8d4d>0x0){if(_0x5d8d4d>_0x1ddfff){this['createSquareDetailsReport'][_0x547c('0xac')](this,_0x40061a,_0x40061a[_0x547c('0x118')]===_0x547c('0x119')?_0x2f70e0+_0x1201b7[_0x547c('0x11a')](_0x1ddfff):_0x1201b7[_0x547c('0x11a')](0x0,_0x5d8d4d-_0x1ddfff)+_0x2f70e0);}else{this['createSquareDetailsReport'][_0x547c('0xac')](this,_0x40061a,rs[_0x547c('0x11b')]({'charset':'*','length':_0x5d8d4d}));}}else{this[_0x547c('0x39')][_0x547c('0xac')](this,_0x40061a,'');}}else{this[_0x547c('0x39')]['sync'](this,_0x40061a,_0x1201b7);}return _0x1748ef;};AGIVertices[_0x547c('0x13')]['getsecretdigits']=function(_0x28f27b){logger[_0x547c('0x34')](util[_0x547c('0x2d')](_0x547c('0x11c'),_0x28f27b[_0x547c('0x3b')]));return this[_0x547c('0xe')](_0x28f27b);};AGIVertices[_0x547c('0x13')][_0x547c('0x11d')]=function(_0x5f4eac){logger['info'](util['format'](_0x547c('0x11e'),_0x5f4eac[_0x547c('0x3b')]));this[_0x547c('0x39')]['sync'](this,_0x5f4eac,_0x5f4eac[_0x547c('0x11f')]);return this[_0x547c('0x10')][_0x547c('0xb0')](util[_0x547c('0x2d')](_0x547c('0x120'),_0x5f4eac[_0x547c('0x11f')]));};AGIVertices[_0x547c('0x13')]['awspolly']=function(_0x1ddf54){logger[_0x547c('0x34')](util[_0x547c('0x2d')](_0x547c('0x121'),_0x1ddf54['label']));if(!this[_0x547c('0x8b')](_0x1ddf54[_0x547c('0x8e')])||!this[_0x547c('0x8b')](_0x1ddf54[_0x547c('0x8f')])){return this[_0x547c('0x10')][_0x547c('0xb0')](_0x547c('0x122'));}if(!this[_0x547c('0x8b')](_0x1ddf54[_0x547c('0x62')])){return this[_0x547c('0x10')]['noop']('no\x20text\x20configured');}this[_0x547c('0x10')]['noop'](util[_0x547c('0x2d')]('Trying\x20aws\x20Polly\x20%s',_0x1ddf54[_0x547c('0x62')]));var _0x2c4f37=this['awsPolly'][_0x547c('0xac')](this,_0x1ddf54);if(_0x2c4f37){this['channel'][_0x547c('0xb0')](util[_0x547c('0x2d')](_0x547c('0x123'),_0x2c4f37));var _0x2d8ffd=this['channel'][_0x547c('0x106')](_0x2c4f37);try{fs[_0x547c('0x124')](_0x2c4f37+_0x547c('0x125'));}catch(_0x348577){logger[_0x547c('0x31')](_0x348577);}return _0x2d8ffd;}return this[_0x547c('0x10')][_0x547c('0x31')](_0x1ddf54,'aws\x20Polly\x20is\x20unreachable');};AGIVertices[_0x547c('0x13')][_0x547c('0x126')]=function(_0x303f60){logger[_0x547c('0x34')](util['format'](_0x547c('0x127'),_0x303f60[_0x547c('0x3b')]));if(!this[_0x547c('0x8b')](_0x303f60[_0x547c('0x8e')])||!this['isConfigured'](_0x303f60[_0x547c('0x8f')])){return this[_0x547c('0x10')][_0x547c('0xb0')](_0x547c('0x122'));}if(!this['isConfigured'](_0x303f60['aws_bot_name'])){return this['channel'][_0x547c('0xb0')](_0x547c('0x128'));}if(!this[_0x547c('0x8b')](_0x303f60['text'])){return this[_0x547c('0x10')][_0x547c('0xb0')]('no\x20text\x20configured');}this['channel']['bot']=!![];this['createSquareDetailsReport'](_0x303f60);this[_0x547c('0x45')](_0x303f60[_0x547c('0x62')],'in','','');this[_0x547c('0x10')]['noop'](util['format'](_0x547c('0x129'),_0x303f60[_0x547c('0x62')]));var _0x1e8dec=this[_0x547c('0x92')]['sync'](this,_0x303f60);if(_0x1e8dec){for(var _0x39275c in _0x1e8dec){if(_0x1e8dec[_0x547c('0x9c')](_0x39275c)&&_['isString'](_0x1e8dec[_0x39275c])){this[_0x547c('0x10')][_0x547c('0xaa')](util[_0x547c('0x2d')]('AWS_LEX_%s',_0x39275c[_0x547c('0x70')]()),_0x1e8dec[_0x39275c]);}}if(_['isNil'](_0x1e8dec[_0x547c('0x7c')])){return this[_0x547c('0x10')][_0x547c('0xb0')]('Amazon\x20Lex\x20ready\x20for\x20fulfillment');}else{this[_0x547c('0x45')](_0x1e8dec[_0x547c('0x7c')],_0x547c('0xf1'),_0x547c('0x12a'),'');return this[_0x547c('0x10')][_0x547c('0xb0')](util[_0x547c('0x2d')](_0x547c('0x12b'),_0x1e8dec[_0x547c('0x7c')]));}}return this['channel']['error'](_0x303f60,_0x547c('0x12c'));};AGIVertices[_0x547c('0x13')][_0x547c('0x12d')]=function(_0x5ac314){logger['info'](util[_0x547c('0x2d')](_0x547c('0x12e'),_0x5ac314['label'],_0x5ac314[_0x547c('0x6a')]));if(!this[_0x547c('0x8b')](_0x5ac314[_0x547c('0x80')])){return this[_0x547c('0x10')][_0x547c('0xb0')]('no\x20key\x20configured');}var _0x5699a0='wav';var _0x45fbb2=util[_0x547c('0x2d')](_0x547c('0x12f'),FILES_PATH,rs[_0x547c('0x11b')](0x4));var _0x4f4482=util[_0x547c('0x2d')](_0x547c('0xa2'),_0x45fbb2,_0x5699a0);var _0x23c84c=!![];if(_0x5ac314['beep']==='NOBEEP'){_0x23c84c=![];}var _0x54948d=this['channel'][_0x547c('0x130')](_0x45fbb2,_0x5699a0,_0x5ac314[_0x547c('0x131')],_0x5ac314[_0x547c('0x6a')],undefined,_0x23c84c);if(_0x54948d[_0x547c('0xb2')]!==-0x1){this[_0x547c('0x10')][_0x547c('0xb0')](util[_0x547c('0x2d')]('google\x20%s\x20file\x20created',_0x4f4482));var _0x1510a1=this[_0x547c('0x95')][_0x547c('0xac')](this,_0x5ac314,_0x4f4482);if(_0x1510a1){for(var _0x4824d1 in _0x1510a1){if(_0x1510a1[_0x547c('0x9c')](_0x4824d1)){this[_0x547c('0x10')]['setVariable'](util[_0x547c('0x2d')](_0x547c('0x132'),_0x4824d1[_0x547c('0x70')]()),_0x1510a1[_0x4824d1]);}}return this[_0x547c('0x10')][_0x547c('0xb0')](util[_0x547c('0x2d')](_0x547c('0x133'),JSON['stringify'](_0x1510a1)));}}return _0x54948d;};AGIVertices[_0x547c('0x13')]['tildeasr']=function(_0xad307c){logger[_0x547c('0x34')](util[_0x547c('0x2d')](_0x547c('0x134'),_0xad307c[_0x547c('0x3b')]));if(!this[_0x547c('0x8b')](_0xad307c[_0x547c('0x98')])){return this[_0x547c('0x10')][_0x547c('0xb0')](_0x547c('0x135'));}if(!this[_0x547c('0x8b')](_0xad307c[_0x547c('0x136')])){return this[_0x547c('0x10')][_0x547c('0xb0')](_0x547c('0x137'));}var _0x9ddf2=_0x547c('0x138');var _0x1b4961=util[_0x547c('0x2d')](_0x547c('0x12f'),FILES_PATH,rs['generate'](0x4));var _0x1a386f=util[_0x547c('0x2d')](_0x547c('0xa2'),_0x1b4961,_0x9ddf2);var _0x3e4503=!![];if(_0xad307c['beep']===_0x547c('0x139')){_0x3e4503=![];}var _0x4cd14a=this[_0x547c('0x10')][_0x547c('0x130')](_0x1b4961,_0x9ddf2,_0xad307c['intKey'],_0xad307c[_0x547c('0x6a')],undefined,_0x3e4503);if(_0x4cd14a[_0x547c('0xb2')]!==-0x1){this[_0x547c('0x10')][_0x547c('0xb0')](util[_0x547c('0x2d')](_0x547c('0x13a'),_0x1a386f));var _0x44309c=this[_0x547c('0x97')]['sync'](this,_0xad307c,_0x1a386f);if(_0x44309c){for(var _0x15e613 in _0x44309c){if(_0x44309c[_0x547c('0x9c')](_0x15e613)){this[_0x547c('0x10')][_0x547c('0xaa')](util[_0x547c('0x2d')](_0x547c('0x13b'),_0x15e613[_0x547c('0x70')]()),_0x44309c[_0x15e613]);}}return this[_0x547c('0x10')]['noop'](util['format'](_0x547c('0x13c'),JSON[_0x547c('0x78')](_0x44309c)));}}return _0x4cd14a;};AGIVertices[_0x547c('0x13')]['gotoc']=function(_0xf3bc02){logger[_0x547c('0x34')](util[_0x547c('0x2d')](_0x547c('0x13d'),_0xf3bc02['label']));return this['channel'][_0x547c('0x13e')](_0xf3bc02[_0x547c('0x13f')],_0xf3bc02[_0x547c('0x41')],_0xf3bc02[_0x547c('0x42')]);};AGIVertices['prototype'][_0x547c('0x140')]=function(_0x4cc4bb){logger[_0x547c('0x34')](util[_0x547c('0x2d')](_0x547c('0x141'),_0x4cc4bb['label']));if(!this[_0x547c('0x8b')](_0x4cc4bb[_0x547c('0x142')])){return this[_0x547c('0x10')][_0x547c('0x31')](_0x4cc4bb,_0x547c('0x143'));}try{var _0x3522ba=eval(_0x4cc4bb['condition'])?'true':_0x547c('0x144');this[_0x547c('0x10')]['noop'](util[_0x547c('0x2d')](_0x547c('0x145'),_0x4cc4bb['condition'],_0x3522ba));return{'code':0xc8,'result':_0x3522ba};}catch(_0x2b3ba6){return{'code':0xc8,'result':'false'};}};AGIVertices['prototype']['gotoiftime']=function(_0x1226e5){logger[_0x547c('0x34')](util[_0x547c('0x2d')]('Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block',_0x1226e5['label']));if(!this[_0x547c('0x8b')](_0x1226e5[_0x547c('0x146')])){return this['channel']['error'](_0x1226e5,_0x547c('0x147'));}var _0xbb471d=this['getIntervals']['sync'](this,_0x1226e5['interval_id']);if(!_0xbb471d){return this[_0x547c('0x10')][_0x547c('0x31')](_0x1226e5,_0x547c('0x148'));}for(var _0x52e3c3=0x0;_0x52e3c3<_0xbb471d[_0x547c('0xa0')];_0x52e3c3+=0x1){var _0x7fdeb=this['channel'][_0x547c('0x14')](util[_0x547c('0x2d')](_0x547c('0x149'),_0xbb471d[_0x52e3c3]));if(_0x7fdeb[_0x547c('0xb2')]===-0x1){return _0x7fdeb;}logger[_0x547c('0x34')](util[_0x547c('0x2d')](_0x547c('0x14a'),_0xbb471d[_0x52e3c3],_0x7fdeb['extra']));if(_0x7fdeb[_0x547c('0xa7')]===_0x547c('0x14b')){logger[_0x547c('0x34')](util['format']('IFTIME\x20%s\x20%s',_0xbb471d[_0x52e3c3],_0x547c('0x14b')));this[_0x547c('0x10')][_0x547c('0xb0')](util[_0x547c('0x2d')](_0x547c('0x14a'),_0xbb471d[_0x52e3c3],_0x547c('0x14b')));return{'code':0xc8,'result':_0x547c('0x14b')};}else{logger[_0x547c('0x34')](util[_0x547c('0x2d')](_0x547c('0x14a'),_0xbb471d[_0x52e3c3],_0x547c('0x144')));this[_0x547c('0x10')][_0x547c('0xb0')](util[_0x547c('0x2d')](_0x547c('0x14a'),_0xbb471d[_0x52e3c3],'false'));}}return{'code':0xc8,'result':_0x547c('0x144')};};AGIVertices[_0x547c('0x13')][_0x547c('0x14c')]=function(_0x15458f){logger[_0x547c('0x34')](util[_0x547c('0x2d')](_0x547c('0x14d'),_0x15458f[_0x547c('0x3b')]));return this['channel']['hangup']();};AGIVertices[_0x547c('0x13')][_0x547c('0x14e')]=function(_0x3c0b69){logger['info'](util[_0x547c('0x2d')](_0x547c('0x14f'),_0x3c0b69[_0x547c('0x3b')]));if(!this[_0x547c('0x8b')](_0x3c0b69[_0x547c('0x80')])){return this[_0x547c('0x10')][_0x547c('0xb0')](_0x547c('0xee'));}var _0x4430dd=_0x547c('0x138');var _0x2467e2=util[_0x547c('0x2d')](_0x547c('0x12f'),FILES_PATH,rs['generate'](0x4));var _0x5386c4=util[_0x547c('0x2d')](_0x547c('0xa2'),_0x2467e2,_0x4430dd);var _0x3c29b9=!![];if(_0x3c0b69[_0x547c('0x150')]==='NOBEEP'){_0x3c29b9=![];}var _0x28dd3e=this[_0x547c('0x10')][_0x547c('0x130')](_0x2467e2,_0x4430dd,_0x3c0b69['intKey'],_0x3c0b69[_0x547c('0x6a')],undefined,_0x3c29b9);if(_0x28dd3e['result']!==-0x1){this['channel']['noop'](util[_0x547c('0x2d')]('ispeech\x20%s\x20file\x20created',_0x5386c4));var _0xeacc0a=this['ispeechASR']['sync'](this,_0x3c0b69,_0x5386c4);if(_0xeacc0a){for(var _0x39fdc2 in _0xeacc0a){if(_0xeacc0a[_0x547c('0x9c')](_0x39fdc2)){this[_0x547c('0x10')][_0x547c('0xaa')](util[_0x547c('0x2d')](_0x547c('0x151'),_0x39fdc2[_0x547c('0x70')]()),_0xeacc0a[_0x39fdc2]);}}return this['channel'][_0x547c('0xb0')](util['format'](_0x547c('0x152'),JSON[_0x547c('0x78')](_0xeacc0a)));}}return _0x28dd3e;};AGIVertices[_0x547c('0x13')][_0x547c('0x153')]=function(_0x433d30){logger[_0x547c('0x34')](util['format'](_0x547c('0x154'),_0x433d30[_0x547c('0x3b')]));if(!this['isConfigured'](_0x433d30[_0x547c('0x80')])){return this[_0x547c('0x10')][_0x547c('0xb0')]('no\x20key\x20configured');}if(!this['isConfigured'](_0x433d30[_0x547c('0x62')])){return this[_0x547c('0x10')][_0x547c('0xb0')](_0x547c('0xb1'));}this[_0x547c('0x10')][_0x547c('0xb0')](util[_0x547c('0x2d')](_0x547c('0x155'),_0x433d30['text']));var _0x1ab6e0=this[_0x547c('0x87')][_0x547c('0xac')](this,_0x433d30);if(_0x1ab6e0){this[_0x547c('0x10')]['noop'](util[_0x547c('0x2d')](_0x547c('0x156'),_0x1ab6e0));var _0x2a7ae0=this[_0x547c('0x10')][_0x547c('0x106')](_0x1ab6e0,_0x433d30[_0x547c('0x131')]);try{fs[_0x547c('0x124')](_0x1ab6e0+'.wav');}catch(_0x31f68b){logger['error'](_0x31f68b);}return _0x2a7ae0;}return this[_0x547c('0x10')][_0x547c('0x31')](_0x433d30,'ispeech\x20TTS\x20is\x20unreachable');};AGIVertices[_0x547c('0x13')]['login']=function(_0x39e457){logger['info'](util[_0x547c('0x2d')]('Enter\x20in\x20LOGIN\x20(%s)\x20block',_0x39e457[_0x547c('0x3b')]));if(!this[_0x547c('0x8b')](_0x39e457['findBy'])){return this[_0x547c('0x10')]['error'](_0x39e457,'no\x20find\x20by\x20configured');}logger['info'](util['format'](_0x547c('0x157'),this['channel']['callerid'],_0x39e457['findBy']));var _0x36618f=this[_0x547c('0x5a')][_0x547c('0xac')](this,_0x39e457[_0x547c('0x158')]);if(_0x36618f){logger['info'](util[_0x547c('0x2d')]('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0x547c('0x3e')],_0x39e457[_0x547c('0x158')]));this[_0x547c('0x10')][_0x547c('0xb0')](util[_0x547c('0x2d')](_0x547c('0x159'),this[_0x547c('0x10')][_0x547c('0x3e')],_0x39e457[_0x547c('0x158')]));return{'code':0xc8,'result':_0x547c('0x15a')};}else{logger[_0x547c('0x34')](util['format']('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x547c('0x10')][_0x547c('0x3e')],_0x39e457[_0x547c('0x158')]));this[_0x547c('0x10')][_0x547c('0xb0')](util[_0x547c('0x2d')](_0x547c('0x15b'),this[_0x547c('0x10')]['callerid'],_0x39e457['findBy']));return{'code':0xc8,'result':_0x547c('0x15c')};}};AGIVertices[_0x547c('0x13')][_0x547c('0x15d')]=function(_0x336e89){logger[_0x547c('0x34')](util[_0x547c('0x2d')](_0x547c('0x15e'),_0x336e89[_0x547c('0x3b')]));if(!this[_0x547c('0x8b')](_0x336e89[_0x547c('0x158')])){return this[_0x547c('0x10')]['error'](_0x336e89,_0x547c('0x15f'));}logger[_0x547c('0x34')](util[_0x547c('0x2d')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this['channel'][_0x547c('0x3e')],_0x336e89[_0x547c('0x158')]));var _0x28f8f2=this[_0x547c('0x160')][_0x547c('0xac')](this,_0x336e89[_0x547c('0x158')]);if(_0x28f8f2){logger['info'](util[_0x547c('0x2d')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x547c('0x10')][_0x547c('0x3e')],_0x336e89[_0x547c('0x158')]));this['channel'][_0x547c('0xb0')](util[_0x547c('0x2d')](_0x547c('0x159'),this[_0x547c('0x10')][_0x547c('0x3e')],_0x336e89[_0x547c('0x158')]));return{'code':0xc8,'result':_0x547c('0x15a')};}else{logger[_0x547c('0x34')](util[_0x547c('0x2d')](_0x547c('0x15b'),this[_0x547c('0x10')][_0x547c('0x3e')],_0x336e89[_0x547c('0x158')]));this[_0x547c('0x10')][_0x547c('0xb0')](util[_0x547c('0x2d')](_0x547c('0x15b'),this[_0x547c('0x10')][_0x547c('0x3e')],_0x336e89[_0x547c('0x158')]));return{'code':0xc8,'result':_0x547c('0x15c')};}};AGIVertices['prototype'][_0x547c('0x161')]=function(_0x2d7ed4){logger[_0x547c('0x34')](util[_0x547c('0x2d')](_0x547c('0x162'),_0x2d7ed4['label']));if(!this['isConfigured'](_0x2d7ed4[_0x547c('0x163')])){return this[_0x547c('0x10')]['error'](_0x2d7ed4,_0x547c('0x164'));}this['channel']['noop'](util[_0x547c('0x2d')](_0x547c('0x165'),_0x2d7ed4[_0x547c('0x163')]));var _0x556b00=eval(_0x2d7ed4[_0x547c('0x163')]);if(!this[_0x547c('0x8b')](_0x2d7ed4[_0x547c('0xe1')])){return this[_0x547c('0x10')][_0x547c('0xb0')](_0x547c('0xe0'));}var _0x151cba=this[_0x547c('0x14')][_0x547c('0xac')](this,_0x2d7ed4[_0x547c('0xe1')]);if(!_0x151cba){return this[_0x547c('0x10')][_0x547c('0x31')](_0x2d7ed4,'no\x20variable\x20found');}if(_['isArray'](_0x556b00)){var _0x263366=this;_0x556b00[_0x547c('0x166')](function(_0x23add7,_0x54eb69){_0x263366[_0x547c('0x10')][_0x547c('0xaa')](util[_0x547c('0x2d')](_0x547c('0x167'),_0x151cba,_0x54eb69),_0x23add7);});return this['channel'][_0x547c('0xb0')](util[_0x547c('0x2d')](_0x547c('0x168'),_0x151cba));}else{return this[_0x547c('0x10')][_0x547c('0xaa')](_0x151cba,_0x556b00);}};AGIVertices[_0x547c('0x13')]['menu']=function(_0x416264){logger[_0x547c('0x34')](util[_0x547c('0x2d')]('Enter\x20in\x20MENU\x20(%s)\x20block',_0x416264[_0x547c('0x3b')]));if(_0x416264[_0x547c('0xad')]===0x0){return this[_0x547c('0xab')](_0x416264);}_0x416264[_0x547c('0xad')]-=0x1;if(!this[_0x547c('0x8b')](_0x416264['file_id'])){return this['channel'][_0x547c('0x31')](_0x416264,_0x547c('0x112'));}var _0x22f5cc=this['getSound'][_0x547c('0xac')](this,_0x416264[_0x547c('0x113')]);if(!_0x22f5cc){return this['channel'][_0x547c('0x31')](_0x416264,_0x547c('0x169'));}var _0x5d6c6c=this[_0x547c('0x10')][_0x547c('0x114')](_0x22f5cc,_0x416264['response'],_0x416264[_0x547c('0x16a')]);var _0x14828a=_0x5d6c6c[_0x547c('0xb2')];if(_0x5d6c6c[_0x547c('0xb2')]===-0x1){this[_0x547c('0x39')]['sync'](this,_0x416264,'-1');return _0x5d6c6c;}else if(_0x5d6c6c[_0x547c('0xa7')]===_0x547c('0x6a')){_0x5d6c6c[_0x547c('0xb2')]=_0x5d6c6c[_0x547c('0xb2')][_0x547c('0xa0')]>0x0?_0x5d6c6c['result']:'t';}else if(_[_0x547c('0x47')](_0x5d6c6c[_0x547c('0xb2')])){_0x5d6c6c[_0x547c('0xb2')]='#';_0x14828a='#';}if(!this['isConfigured'](_0x416264[_0x547c('0xe1')])){this[_0x547c('0x10')][_0x547c('0xb0')](_0x547c('0xe0'));}else{var _0x467e81=this[_0x547c('0x14')][_0x547c('0xac')](this,_0x416264[_0x547c('0xe1')]);if(!_0x467e81){return this[_0x547c('0x10')][_0x547c('0x31')](_0x416264,_0x547c('0x16b'));}this[_0x547c('0x10')]['setVariable'](_0x467e81,_0x14828a);}this[_0x547c('0x39')][_0x547c('0xac')](this,_0x416264,_0x14828a);return _0x5d6c6c;};AGIVertices['prototype'][_0x547c('0xb0')]=function(_0x5a15e6){logger[_0x547c('0x34')](util[_0x547c('0x2d')]('Enter\x20in\x20NOOP\x20(%s)\x20block',_0x5a15e6[_0x547c('0x3b')]));return this[_0x547c('0x10')][_0x547c('0xb0')](_0x5a15e6[_0x547c('0x16c')]||_0x5a15e6[_0x547c('0x3b')]);};AGIVertices[_0x547c('0x13')][_0x547c('0x16d')]=function(_0x48ab51){logger[_0x547c('0x34')](util[_0x547c('0x2d')](_0x547c('0x16e'),_0x48ab51[_0x547c('0x3b')]));if(!this[_0x547c('0x8b')](_0x48ab51[_0x547c('0x158')])){return this[_0x547c('0x10')]['error'](_0x48ab51,'no\x20find\x20by\x20configured');}logger[_0x547c('0x34')](util['format'](_0x547c('0x157'),this[_0x547c('0x10')][_0x547c('0x3e')],_0x48ab51['findBy']));var _0x30890f=this[_0x547c('0x53')][_0x547c('0xac')](this,_0x48ab51[_0x547c('0x16f')]);var _0x1609d9=this['agentPause'][_0x547c('0xac')](this,_0x48ab51[_0x547c('0x158')],_0x30890f);if(_0x1609d9){logger[_0x547c('0x34')](util[_0x547c('0x2d')](_0x547c('0x159'),this[_0x547c('0x10')][_0x547c('0x3e')],_0x48ab51[_0x547c('0x158')]));this[_0x547c('0x10')][_0x547c('0xb0')](util[_0x547c('0x2d')](_0x547c('0x159'),this[_0x547c('0x10')][_0x547c('0x3e')],_0x48ab51[_0x547c('0x158')]));return{'code':0xc8,'result':_0x547c('0x15a')};}else{logger['info'](util[_0x547c('0x2d')](_0x547c('0x15b'),this[_0x547c('0x10')][_0x547c('0x3e')],_0x48ab51[_0x547c('0x158')]));this[_0x547c('0x10')][_0x547c('0xb0')](util[_0x547c('0x2d')]('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0x547c('0x3e')],_0x48ab51[_0x547c('0x158')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x547c('0x13')]['playback']=function(_0x59377a){logger[_0x547c('0x34')](util[_0x547c('0x2d')](_0x547c('0x170'),_0x59377a[_0x547c('0x3b')]));if(!this[_0x547c('0x8b')](_0x59377a[_0x547c('0x113')])){return this[_0x547c('0x10')][_0x547c('0x31')](_0x59377a,_0x547c('0x112'));}var _0x3a6283=this[_0x547c('0x22')][_0x547c('0xac')](this,_0x59377a[_0x547c('0x113')]);if(!_0x3a6283){return this['channel']['error'](_0x59377a,_0x547c('0x169'));}var _0x312c76=this[_0x547c('0x10')][_0x547c('0x5c')](_0x547c('0x171'),[_0x3a6283,_0x59377a['opts']]);if(_0x312c76['result']===-0x1){return _0x312c76;}return this['channel'][_0x547c('0xb0')](util['format']('Executed\x20command\x20%s\x20%s',_0x547c('0x171'),_0x3a6283));};AGIVertices[_0x547c('0x13')]['queue']=function(_0x38655f){logger['info'](util[_0x547c('0x2d')](_0x547c('0x172'),_0x38655f['label']));if(!this['isConfigured'](_0x38655f[_0x547c('0x173')])){return this[_0x547c('0x10')][_0x547c('0x31')](_0x38655f,_0x547c('0x174'));}var _0x26cedc='';var _0xe042ea=parseInt(_0x38655f[_0x547c('0x173')],0xa);if(isNaN(_0xe042ea)){_0x26cedc=_0x38655f[_0x547c('0x173')];}else{_0x26cedc=this[_0x547c('0x17')][_0x547c('0xac')](this,_0x38655f[_0x547c('0x173')]);if(!_0x26cedc){return this[_0x547c('0x10')]['error'](_0x38655f,'no\x20queue\x20found');}}var _0x5abe57='';if(this[_0x547c('0x8b')](_0x38655f[_0x547c('0x113')])){var _0x3f029d=this['getSound']['sync'](this,_0x38655f[_0x547c('0x113')]);if(_0x3f029d){_0x5abe57=_0x3f029d;}}this[_0x547c('0x39')][_0x547c('0xac')](this,_0x38655f,_0x26cedc);if(_0x38655f[_0x547c('0xeb')][_0x547c('0x175')]('x')<0x0){_0x38655f['opts']+='x';}if(_0x38655f[_0x547c('0xeb')][_0x547c('0x175')]('X')<0x0){_0x38655f[_0x547c('0xeb')]+='X';}this[_0x547c('0x10')]['setVariable'](_0x547c('0x176'),_0x26cedc?_0x26cedc[_0x547c('0x177')]():'');var _0x327db8=this[_0x547c('0x10')][_0x547c('0x5c')]('QUEUE',[_0x26cedc,_0x38655f[_0x547c('0xeb')],_0x38655f['url'],_0x5abe57,_0x38655f[_0x547c('0x6a')],_0x38655f[_0x547c('0x8')],_0x38655f[_0x547c('0x178')],_0x38655f[_0x547c('0x179')],'',_0x38655f[_0x547c('0x17a')]]);if(_0x327db8[_0x547c('0xb2')]===-0x1){return _0x327db8;}return this[_0x547c('0x10')]['noop'](util['format']('Executed\x20command\x20%s\x20%s',_0x547c('0x17b'),_0x26cedc));};AGIVertices[_0x547c('0x13')][_0x547c('0x17c')]=function(_0x806a2e){logger[_0x547c('0x34')](util['format'](_0x547c('0x17d'),_0x806a2e[_0x547c('0x3b')]));var _0x4b6a72=_0x806a2e[_0x547c('0x17e')]||'wav';var _0x372c70=util[_0x547c('0x2d')]('%s_%s',this['channel']['uniqueid'],rs[_0x547c('0x11b')](0x5));var _0x2a73e1=util[_0x547c('0x2d')](_0x547c('0x17f'),FILES_PATH,_0x372c70,_0x4b6a72);var _0x92c34c=util[_0x547c('0x2d')](_0x547c('0x12f'),FILES_PATH,_0x372c70);this[_0x547c('0x3f')][_0x547c('0xac')](this,_0x806a2e,_0x372c70,_0x2a73e1);this[_0x547c('0x10')][_0x547c('0xaa')](_0x547c('0x180'),_0x372c70);logger[_0x547c('0x34')](_0x547c('0x181'),_0x92c34c,_0x4b6a72,_0x806a2e[_0x547c('0x182')],_0x806a2e[_0x547c('0x6a')]);return this['channel']['recordFile'](_0x92c34c,_0x4b6a72,_0x806a2e[_0x547c('0x182')],_0x806a2e[_0x547c('0x6a')],undefined,!![]);};AGIVertices[_0x547c('0x13')][_0x547c('0x183')]=function(_0x1129db){logger[_0x547c('0x34')](util[_0x547c('0x2d')](_0x547c('0x184'),_0x1129db[_0x547c('0x3b')]));if(!this[_0x547c('0x8b')](_0x1129db['url'])){return this['channel'][_0x547c('0xb0')](_0x547c('0x185'));}var _0x55fbd0=this['restAPI'][_0x547c('0xac')](this,_0x1129db);logger[_0x547c('0x34')](util['format'](_0x547c('0x186'),util['inspect'](_0x55fbd0,{'showHidden':![],'depth':null})));if(!this[_0x547c('0x8b')](_0x1129db[_0x547c('0xe1')])){return this[_0x547c('0x10')][_0x547c('0xb0')](_0x547c('0x187'));}var _0x4f0d29=this[_0x547c('0x14')]['sync'](this,_0x1129db[_0x547c('0xe1')]);if(!_0x4f0d29){return this[_0x547c('0x10')][_0x547c('0x31')](_0x1129db,_0x547c('0x16b'));}this['channel'][_0x547c('0xaa')](util[_0x547c('0x2d')]('%s_STATUS_CODE',_0x4f0d29),_0x55fbd0[_0x547c('0x7a')]?_0x55fbd0[_0x547c('0x7a')]:_0x547c('0x188'));this[_0x547c('0x10')][_0x547c('0xaa')](util[_0x547c('0x2d')]('%s_STATUS_MESSAGE',_0x4f0d29),_0x55fbd0[_0x547c('0x7b')]?_0x55fbd0[_0x547c('0x7b')]:'OK');if(_0x55fbd0[_0x547c('0x71')]){try{this[_0x547c('0xa3')](_0x55fbd0[_0x547c('0x71')],_0x4f0d29);}catch(_0x3757a9){logger['error'](util['format'](_0x547c('0x189'),_0x4f0d29));}}return this[_0x547c('0x10')][_0x547c('0xb0')](util[_0x547c('0x2d')](_0x547c('0xe3'),_0x4f0d29));};AGIVertices[_0x547c('0x13')][_0x547c('0x18a')]=function(_0xaadcb7){logger['info'](util['format'](_0x547c('0x18b'),_0xaadcb7['label']));return this[_0x547c('0x10')]['sayDigits'](_0xaadcb7[_0x547c('0x18c')]['replace'](/\s+/g,''),_0xaadcb7[_0x547c('0x182')]);};AGIVertices[_0x547c('0x13')]['saynumber']=function(_0x1ce40e){logger['info'](util[_0x547c('0x2d')](_0x547c('0x18d'),_0x1ce40e[_0x547c('0x3b')]));return this['channel'][_0x547c('0x18e')](_0x1ce40e['number'][_0x547c('0x5e')](/\s+/g,''),_0x1ce40e[_0x547c('0x182')]);};AGIVertices[_0x547c('0x13')][_0x547c('0x18f')]=function(_0x5e7c6b){logger[_0x547c('0x34')](util[_0x547c('0x2d')](_0x547c('0x190'),_0x5e7c6b[_0x547c('0x3b')]));return this[_0x547c('0x10')][_0x547c('0x191')](_0x5e7c6b[_0x547c('0x62')],_0x5e7c6b[_0x547c('0x182')]);};AGIVertices[_0x547c('0x13')][_0x547c('0x192')]=function(_0x4aa68e){logger[_0x547c('0x34')](util[_0x547c('0x2d')](_0x547c('0x193'),_0x4aa68e[_0x547c('0x3b')]));if(!this['isConfigured'](_0x4aa68e[_0x547c('0x194')])){return this[_0x547c('0x10')][_0x547c('0xb0')](_0x547c('0x195'));}var _0x509e98=this[_0x547c('0x25')][_0x547c('0xac')](this,_0x4aa68e[_0x547c('0x194')]);if(!_0x509e98||!_0x509e98[_0x547c('0x196')]){return this[_0x547c('0x10')]['error'](_0x4aa68e,_0x547c('0x197'));}var _0x5eedb4={'from':util[_0x547c('0x2d')](_0x547c('0x198'),_0x509e98[_0x547c('0x19')],_0x509e98[_0x547c('0x199')]||_0x509e98['Smtp'][_0x547c('0x19a')]),'to':_0x4aa68e['to']||'','cc':_0x4aa68e['cc']||'','bcc':_0x4aa68e[_0x547c('0x19b')]||'','subject':_0x4aa68e[_0x547c('0x19c')],'html':_0x4aa68e[_0x547c('0x62')],'text':_0x4aa68e[_0x547c('0x62')]};var _0x166864={'tls':{'rejectUnauthorized':![]}};if(_0x509e98[_0x547c('0x196')][_0x547c('0x19d')]){_0x166864[_0x547c('0x19d')]=_0x509e98[_0x547c('0x196')][_0x547c('0x19d')];}else{_0x166864[_0x547c('0x19e')]=_0x509e98[_0x547c('0x196')]['host'];_0x166864['port']=_0x509e98[_0x547c('0x196')][_0x547c('0x19f')];_0x166864[_0x547c('0x1a0')]=_0x509e98['Smtp'][_0x547c('0x1a0')];}if(_0x509e98[_0x547c('0x196')][_0x547c('0x1a1')]){_0x166864[_0x547c('0x1a2')]={'user':_0x509e98[_0x547c('0x196')][_0x547c('0x19a')],'pass':_0x509e98[_0x547c('0x196')]['pass']};}if(this[_0x547c('0x8b')](_0x4aa68e[_0x547c('0x1a3')])){}logger['debug']('sendMail\x20message',JSON[_0x547c('0x78')](_0x5eedb4));this['createSquareDetailsReport']['sync'](this,_0x4aa68e,_0x4aa68e[_0x547c('0x194')]);this['channel'][_0x547c('0xb0')](util[_0x547c('0x2d')]('Trying\x20SendMail\x20with\x20account\x20%s',_0x509e98['name']));this[_0x547c('0x27')][_0x547c('0xac')](this,_0x166864,_0x5eedb4);return this[_0x547c('0x10')]['noop'](_0x547c('0x1a4'));};AGIVertices[_0x547c('0x13')]['sendFax']=function(_0x3b3d31){logger[_0x547c('0x34')](util[_0x547c('0x2d')](_0x547c('0x1a5'),_0x3b3d31[_0x547c('0x3b')]));return this[_0x547c('0x10')][_0x547c('0xb0')](_0x547c('0x1a6'));};AGIVertices[_0x547c('0x13')]['sendSMS']=function(_0x26a68f){logger['info'](util[_0x547c('0x2d')](_0x547c('0x1a7'),_0x26a68f[_0x547c('0x3b')]));if(!this[_0x547c('0x8b')](_0x26a68f['sms_account_id'])){return this[_0x547c('0x10')][_0x547c('0xb0')](_0x547c('0x1a8'));}var _0x20f33b=this[_0x547c('0x37')][_0x547c('0xac')](this,_0x26a68f[_0x547c('0x1a9')]);if(!_0x20f33b){return this['channel'][_0x547c('0x31')](_0x26a68f,_0x547c('0x1aa'));}var _0x125278={'body':_0x26a68f[_0x547c('0x1ab')],'phone':_0x26a68f['to']||'','SmsAccountId':_0x20f33b['id']};logger[_0x547c('0xe5')](_0x547c('0x1ac'),JSON['stringify'](_0x125278));this[_0x547c('0x39')][_0x547c('0xac')](this,_0x26a68f,_0x26a68f[_0x547c('0x1a9')]);this['channel']['noop'](util['format']('Trying\x20SendSMS\x20with\x20account\x20%s',_0x20f33b[_0x547c('0x19')]));this[_0x547c('0x1ad')][_0x547c('0xac')](this,_0x125278);return this['channel'][_0x547c('0xb0')](_0x547c('0x1ae'));};AGIVertices['prototype'][_0x547c('0x1af')]=function(_0x4498f3){logger[_0x547c('0x34')](util['format']('Enter\x20in\x20SET\x20(%s)\x20block',_0x4498f3['label']));if(!this['isConfigured'](_0x4498f3[_0x547c('0xe1')])){return this['channel'][_0x547c('0x31')](_0x4498f3,_0x547c('0x1b0'));}var _0x27b6e7=this[_0x547c('0x14')][_0x547c('0xac')](this,_0x4498f3[_0x547c('0xe1')]);if(!_0x27b6e7){return this[_0x547c('0x10')][_0x547c('0x31')](_0x4498f3,_0x547c('0x16b'));}return this['channel'][_0x547c('0xaa')](_0x27b6e7,_0x4498f3[_0x547c('0x1b1')]);};AGIVertices[_0x547c('0x13')][_0x547c('0x1b2')]=function(_0x15b69c){logger[_0x547c('0x34')](util[_0x547c('0x2d')]('Enter\x20in\x20START\x20(%s)\x20block',_0x15b69c['label']));this[_0x547c('0x10')][_0x547c('0xb0')](_0x547c('0x1b3'));if(_0x15b69c['answer']===_0x547c('0x1b4')){this['channel'][_0x547c('0xb0')](_0x547c('0x1b5'));return this[_0x547c('0x10')]['answer']();}return this[_0x547c('0x10')][_0x547c('0xb0')]('Skipped\x20Answer');};AGIVertices[_0x547c('0x13')][_0x547c('0x1b6')]=function(_0x169091){logger['info'](util['format'](_0x547c('0x1b7'),_0x169091[_0x547c('0x3b')]));if(!this[_0x547c('0x8b')](_0x169091[_0x547c('0x1b8')])){return this[_0x547c('0x10')][_0x547c('0x31')](_0x169091,_0x547c('0x1b9'));}var _0x530d50=this[_0x547c('0x1a')][_0x547c('0xac')](this,_0x169091[_0x547c('0x1b8')]);if(!this[_0x547c('0x8b')](_0x530d50)){return this['channel'][_0x547c('0x31')](_0x169091,util['format'](_0x547c('0x1ba'),_0x169091[_0x547c('0x1b8')]));}if(_0x530d50===this[_0x547c('0x10')]['arg_1']){return this[_0x547c('0x10')]['error'](_0x169091,_0x547c('0x1bb'));}this[_0x547c('0x39')]['sync'](this,_0x169091,_0x530d50);var _0x4eca26=this['channel'][_0x547c('0x5c')](_0x547c('0x1bc'),util[_0x547c('0x2d')](_0x547c('0x1bd'),config[_0x547c('0x8')][_0x547c('0x19e')]||_0x547c('0x1be'),_0x530d50,this[_0x547c('0x10')][_0x547c('0x3d')]));if(_0x4eca26[_0x547c('0xb2')]===-0x1){return _0x4eca26;}return this[_0x547c('0x10')]['noop'](util[_0x547c('0x2d')]('Executed\x20command\x20%s\x20%s',_0x547c('0x1bc'),_0x530d50));};AGIVertices[_0x547c('0x13')][_0x547c('0x1bf')]=function(_0x57326b){logger[_0x547c('0x34')](util[_0x547c('0x2d')](_0x547c('0x1c0'),_0x57326b[_0x547c('0x3b')]));var _0x44c078=this[_0x547c('0x5b')][_0x547c('0xac')](this,_0x57326b['command']);this['createSquareDetailsReport'][_0x547c('0xac')](this,_0x57326b,_0x57326b[_0x547c('0xbf')]);if(this[_0x547c('0x8b')](_0x57326b[_0x547c('0xe1')])){var _0x855cb3=this['getVariable'][_0x547c('0xac')](this,_0x57326b[_0x547c('0xe1')]);if(_0x855cb3){this[_0x547c('0x10')][_0x547c('0xaa')](_0x855cb3,_0x44c078);return this[_0x547c('0x10')][_0x547c('0xb0')](util[_0x547c('0x2d')](_0x547c('0x1c1'),_0x57326b[_0x547c('0xbf')],_0x855cb3));}}return this[_0x547c('0x10')][_0x547c('0xb0')](util['format']('sh\x20command:\x20%s\x20result\x20no\x20stored',_0x57326b['command']));};AGIVertices[_0x547c('0x13')][_0x547c('0x1c2')]=function(_0x4a38af){logger[_0x547c('0x34')](util[_0x547c('0x2d')](_0x547c('0x1c3'),_0x4a38af[_0x547c('0x3b')]));_0x4a38af[_0x547c('0x62')]=_0x4a38af[_0x547c('0x62')][_0x547c('0x5e')](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x4a38af[_0x547c('0x60')])){return this[_0x547c('0x10')]['noop'](_0x547c('0x1c4'));}if(!this[_0x547c('0x8b')](_0x4a38af['text'])){return this[_0x547c('0x10')][_0x547c('0xb0')](_0x547c('0xb1'));}this['channel'][_0x547c('0xb0')](util[_0x547c('0x2d')](_0x547c('0x1c5'),_0x4a38af['text']));var _0xea5d21=this['googleCloudTTS']['sync'](this,_0x4a38af);if(_0xea5d21){this[_0x547c('0x10')][_0x547c('0xb0')](util[_0x547c('0x2d')](_0x547c('0x1c6'),_0xea5d21));var _0x105da8=this['channel'][_0x547c('0x106')](_0xea5d21);try{fs[_0x547c('0x124')](_0xea5d21+_0x547c('0x125'));}catch(_0x4b4130){logger['error'](_0x4b4130);}return _0x105da8;}return this[_0x547c('0x10')][_0x547c('0x31')](_0x4a38af,_0x547c('0x1c7'));};AGIVertices[_0x547c('0x13')][_0x547c('0x1c8')]=function(_0x7bfc89){logger['info'](util[_0x547c('0x2d')](_0x547c('0x1c9'),_0x7bfc89['label']));_0x7bfc89[_0x547c('0x62')]=_0x7bfc89[_0x547c('0x62')][_0x547c('0x5e')](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x7bfc89[_0x547c('0x62')])){return this[_0x547c('0x10')][_0x547c('0xb0')]('no\x20text\x20configured');}this[_0x547c('0x10')][_0x547c('0xb0')](util[_0x547c('0x2d')](_0x547c('0x1ca'),_0x7bfc89['text']));var _0x2a3508=this[_0x547c('0x67')][_0x547c('0xac')](this,_0x7bfc89);if(_0x2a3508){this[_0x547c('0x10')]['noop'](util['format'](_0x547c('0x1cb'),_0x2a3508));var _0x3e79e1=this[_0x547c('0x10')][_0x547c('0x106')](_0x2a3508);try{fs[_0x547c('0x124')](_0x2a3508+'.wav');}catch(_0x40fa4b){logger[_0x547c('0x31')](_0x40fa4b);}return _0x3e79e1;}return this['channel'][_0x547c('0x31')](_0x7bfc89,'Google\x20TTS\x20is\x20unreachable');};AGIVertices[_0x547c('0x13')][_0x547c('0x1cc')]=function(_0x56932e){logger['info'](util['format'](_0x547c('0x1cd'),_0x56932e[_0x547c('0x3b')]));if(!this[_0x547c('0x8b')](_0x56932e[_0x547c('0x158')])){return this[_0x547c('0x10')][_0x547c('0x31')](_0x56932e,_0x547c('0x15f'));}logger['info'](util[_0x547c('0x2d')](_0x547c('0x157'),this[_0x547c('0x10')][_0x547c('0x3e')],_0x56932e['findBy']));var _0x46e7a9=this['agentUnpause'][_0x547c('0xac')](this,_0x56932e['findBy']);if(_0x46e7a9){logger[_0x547c('0x34')](util[_0x547c('0x2d')](_0x547c('0x159'),this[_0x547c('0x10')][_0x547c('0x3e')],_0x56932e['findBy']));this['channel'][_0x547c('0xb0')](util[_0x547c('0x2d')](_0x547c('0x159'),this[_0x547c('0x10')][_0x547c('0x3e')],_0x56932e['findBy']));return{'code':0xc8,'result':_0x547c('0x15a')};}else{logger[_0x547c('0x34')](util[_0x547c('0x2d')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x547c('0x10')]['callerid'],_0x56932e[_0x547c('0x158')]));this[_0x547c('0x10')][_0x547c('0xb0')](util[_0x547c('0x2d')](_0x547c('0x15b'),this['channel'][_0x547c('0x3e')],_0x56932e[_0x547c('0x158')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x547c('0x13')]['voicemail']=function(_0x5ce54a){logger['info'](util[_0x547c('0x2d')](_0x547c('0x1ce'),_0x5ce54a[_0x547c('0x3b')]));var _0x44f83e=this[_0x547c('0x10')][_0x547c('0x5c')](_0x547c('0x1cf'),[_0x5ce54a['mailbox'],_0x5ce54a[_0x547c('0x7e')]]);if(_0x44f83e[_0x547c('0xb2')]===-0x1){return _0x44f83e;}return this[_0x547c('0x10')][_0x547c('0xb0')](util[_0x547c('0x2d')](_0x547c('0x1d0'),_0x547c('0x1cf'),_0x5ce54a[_0x547c('0x1d1')]));};AGIVertices[_0x547c('0x13')][_0x547c('0x1d2')]=function(_0x11cf1b){logger['info'](util[_0x547c('0x2d')](_0x547c('0x1d3'),_0x11cf1b[_0x547c('0x3b')]));if(!this[_0x547c('0x8b')](_0x11cf1b[_0x547c('0xe1')])){return this[_0x547c('0x10')][_0x547c('0x31')](_0x11cf1b,_0x547c('0x1b0'));}var _0x5d47ae=this[_0x547c('0x14')]['sync'](this,_0x11cf1b[_0x547c('0xe1')]);if(!_0x5d47ae){return this[_0x547c('0x10')][_0x547c('0x31')](_0x11cf1b,_0x547c('0x16b'));}var _0x391845=this[_0x547c('0x10')][_0x547c('0x14')](_0x5d47ae);return{'code':0xc8,'result':_0x391845['extra']?_0x391845[_0x547c('0xa7')]:'-'};};String['prototype'][_0x547c('0xa6')]=function(_0xc48591,_0x156307){return this[_0x547c('0xa5')](_0xc48591)[_0x547c('0x1d4')](_0x156307);};module['exports']=AGIVertices;
\ No newline at end of file
index fcbc349..1ca2be6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7983=['savePause','acwTimeout','timer','stopAcw','format','lastPauseAt','update','[%s][UPDATE][ACWTIME:%s]','error','catch','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','[ACW][START]\x20%s','message','prototype','uniqueid','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[%s][UPDATE][ERRORS:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','interface','destlinkedid','isUndefined','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','transfererlinkedid','autopause','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','../ami','../../../config/logger','acw','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','hanguprequest','bind','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','syncAgentConnectPreview','milliseconds','diff','seconds','startAcw','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','then','getAgent','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended'];(function(_0x543084,_0x4337f5){var _0x306a57=function(_0x2769ed){while(--_0x2769ed){_0x543084['push'](_0x543084['shift']());}};_0x306a57(++_0x4337f5);}(_0x7983,0x79));var _0x3798=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x7983[_0x167cc1];return _0x10bc4b;};'use strict';var util=require(_0x3798('0x0'));var _=require('lodash');var moment=require('moment');var ami=require(_0x3798('0x1'));var logger=require(_0x3798('0x2'))(_0x3798('0x3'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0x3798('0x4'));function Acw(_0x4e3034){this[_0x3798('0x5')]=_0x4e3034[_0x3798('0x5')];this['agents']=_0x4e3034[_0x3798('0x6')];this[_0x3798('0x7')]=_0x4e3034['timers'];this[_0x3798('0x8')]={};ami['on'](_0x3798('0x9'),this[_0x3798('0xa')]['bind'](this));ami['on'](_0x3798('0xb'),this['syncHangupRequest'][_0x3798('0xc')](this));ami['on'](_0x3798('0xd'),this[_0x3798('0xe')][_0x3798('0xc')](this));ami['on'](_0x3798('0xf'),this[_0x3798('0x10')][_0x3798('0xc')](this));ami['on'](_0x3798('0x11'),this[_0x3798('0x12')][_0x3798('0xc')](this));ami['on'](_0x3798('0x13'),this[_0x3798('0x14')][_0x3798('0xc')](this));ami['on']('custom:agentConnectPreview',this[_0x3798('0x15')][_0x3798('0xc')](this));}function getDiff(_0x387f52){var _0x21965e=moment()[_0x3798('0x16')](0x0);var _0x4d3031=moment(_0x387f52)[_0x3798('0x16')](0x0);return _0x21965e[_0x3798('0x17')](_0x4d3031,_0x3798('0x18'));}Acw['prototype'][_0x3798('0x19')]=function(_0x47cf0f){try{var _0x4b35f7=this;var _0x446363=this[_0x3798('0x8')][_0x47cf0f]['interface'];var _0x4d17cf=this[_0x3798('0x8')][_0x47cf0f][_0x3798('0x1a')];var _0x19a784=this[_0x3798('0x5')][_0x4d17cf];var _0x1ffd86=![];var _0x446e5d=_0x3798('0x1b');if(_0x19a784[_0x3798('0x1c')]){if(_0x19a784[_0x3798('0x1d')][_0x3798('0x1e')]){_0x1ffd86=!![];_0x446e5d=_0x19a784[_0x3798('0x1d')][_0x3798('0x1e')];}}ami['Action']({'action':'QueuePause','interface':_0x446363,'paused':!![],'reason':_0x446e5d})[_0x3798('0x1f')](function(_0x715e2d){if(_0x4b35f7[_0x3798('0x6')][_0x446363]){return RpcUser[_0x3798('0x20')](_0x4b35f7[_0x3798('0x6')][_0x446363]['id'])[_0x3798('0x1f')](function(_0x5709d5){if(_0x5709d5&&!_0x5709d5[_0x3798('0x21')]){logger[_0x3798('0x22')](_0x3798('0x23'),_0x47cf0f,_0x446363,_0x4d17cf);var _0x3abad2=_0x4b35f7[_0x3798('0x8')][_0x47cf0f][_0x3798('0x24')]&&_0x4b35f7[_0x3798('0x8')][_0x47cf0f]['destlinkedid']?_0x4b35f7[_0x3798('0x8')][_0x47cf0f]['destlinkedid']:_0x47cf0f;return RpcUser[_0x3798('0x25')](_0x4b35f7[_0x3798('0x6')][_0x446363],_0x446e5d,_0x3abad2)[_0x3798('0x1f')](function(_0x2287ee){if(!_0x1ffd86){_0x4b35f7['timers'][_0x446363]={};logger[_0x3798('0x22')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x47cf0f,_0x4b35f7[_0x3798('0x5')][_0x4d17cf][_0x3798('0x26')],_0x446363,_0x4d17cf);_0x4b35f7['timers'][_0x446363][_0x3798('0x27')]=setTimeout(_0x4b35f7[_0x3798('0x28')][_0x3798('0xc')](_0x4b35f7,_0x446363),_0x4b35f7['voiceQueues'][_0x4d17cf][_0x3798('0x26')]*0x3e8);_0x4b35f7['timers'][_0x446363]['lastPauseAt']=moment()[_0x3798('0x29')]('YYYY-MM-DD\x20HH:mm:ss');_0x4b35f7['timers'][_0x446363]['uniqueid']=_0x47cf0f;_0x4b35f7['timers'][_0x446363][_0x3798('0x1a')]=_0x4d17cf;_0x4b35f7[_0x3798('0x7')][_0x446363]['updateAcw']=function(){var _0x1bd1eb=getDiff(_0x4b35f7[_0x3798('0x7')][_0x446363][_0x3798('0x2a')]);clearTimeout(_0x4b35f7[_0x3798('0x7')][_0x446363][_0x3798('0x27')]);_0x4b35f7[_0x3798('0x7')][_0x446363][_0x3798('0x27')]=![];RpcVoiceAgentReport[_0x3798('0x2b')]({'acwtime':_0x1bd1eb},_0x4b35f7[_0x3798('0x7')][_0x446363]['uniqueid'],_0x446363)[_0x3798('0x1f')](function(_0x53a9ad){logger[_0x3798('0x22')](_0x3798('0x2c'),_0x47cf0f,_0x1bd1eb,_0x53a9ad);})['catch'](function(_0x5ea194){logger[_0x3798('0x2d')]('[%s][UPDATE][ERRORS:%s]',_0x47cf0f,_0x5ea194);});delete _0x4b35f7[_0x3798('0x7')][_0x446363];};}});}else{logger[_0x3798('0x22')]('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x47cf0f,_0x446363,_0x4d17cf);}});}})[_0x3798('0x2e')](function(_0x228af7){logger[_0x3798('0x2d')](_0x3798('0x2f'),_0x47cf0f,_0x4b35f7['voiceQueues'][_0x4d17cf][_0x3798('0x26')],_0x446363,_0x4d17cf);})['finally'](function(){delete _0x4b35f7[_0x3798('0x8')][_0x47cf0f];});}catch(_0x4f71af){logger[_0x3798('0x2d')](_0x3798('0x30'),_0x4f71af[_0x3798('0x31')]);}};Acw[_0x3798('0x32')]['stopAcw']=function(_0x4eaef5){try{var _0x5ac156=this;if(_0x5ac156[_0x3798('0x7')][_0x4eaef5]){_0x5ac156['timers'][_0x4eaef5][_0x3798('0x27')]=![];var _0x56a23f=_0x5ac156[_0x3798('0x7')][_0x4eaef5][_0x3798('0x33')];var _0x491db8=_0x5ac156['timers'][_0x4eaef5][_0x3798('0x1a')];var _0x401063=_0x5ac156['voiceQueues'][_0x491db8]['acwTimeout'];logger[_0x3798('0x22')](_0x3798('0x34'),_0x56a23f,_0x4eaef5);RpcUser[_0x3798('0x35')](this[_0x3798('0x6')][_0x4eaef5]);RpcVoiceAgentReport[_0x3798('0x2b')]({'acwtime':_0x401063,'agentacw':!![]},_0x56a23f,_0x4eaef5)['then'](function(_0x490833){logger[_0x3798('0x22')]('[%s][UPDATE][ACWTIME:%s]',_0x56a23f,_0x401063,_0x490833);})[_0x3798('0x2e')](function(_0x53537f){logger[_0x3798('0x2d')](_0x3798('0x36'),_0x56a23f,_0x53537f);});}else{logger[_0x3798('0x2d')](_0x3798('0x37'),_0x4eaef5);if(_0x5ac156[_0x3798('0x7')]){logger[_0x3798('0x22')](_0x3798('0x38'),JSON[_0x3798('0x39')](_0x5ac156[_0x3798('0x7')]));}}}catch(_0x5c9fe1){logger[_0x3798('0x2d')]('[ACW][STOP]\x20%s',_0x5c9fe1[_0x3798('0x31')]);}};Acw['prototype']['syncAgentConnect']=function(_0x3774f9){try{if(this[_0x3798('0x5')][_0x3774f9[_0x3798('0x1a')]]&&(this[_0x3798('0x5')][_0x3774f9[_0x3798('0x1a')]][_0x3798('0x3')]||this[_0x3798('0x5')][_0x3774f9['queue']][_0x3798('0x1c')])){if(this['agents'][_0x3774f9[_0x3798('0x3a')]]){this[_0x3798('0x8')][_0x3774f9['uniqueid']]={'queue':_0x3774f9[_0x3798('0x1a')],'interface':_0x3774f9[_0x3798('0x3a')],'destlinkedid':_0x3774f9[_0x3798('0x3b')]};}}}catch(_0x54b25c){logger[_0x3798('0x2d')]('[ACW][syncAgentConnect]\x20%s',_0x54b25c[_0x3798('0x31')]);}};Acw[_0x3798('0x32')][_0x3798('0x15')]=function(_0x2cf50c){try{if(this[_0x3798('0x5')][_0x2cf50c[_0x3798('0x1a')]]&&(this[_0x3798('0x5')][_0x2cf50c[_0x3798('0x1a')]]['acw']||this[_0x3798('0x5')][_0x2cf50c[_0x3798('0x1a')]][_0x3798('0x1c')])){if(this[_0x3798('0x6')][_0x2cf50c[_0x3798('0x3a')]]){this['channels'][_0x2cf50c['uniqueid']]={'queue':_0x2cf50c[_0x3798('0x1a')],'interface':_0x2cf50c[_0x3798('0x3a')]};}}}catch(_0x4ba31d){logger[_0x3798('0x2d')]('[ACW][syncAgentConnectPreview]\x20%s',_0x4ba31d['message']);}};Acw[_0x3798('0x32')]['syncHangupRequest']=function(_0x1947fd){try{if(this[_0x3798('0x8')][_0x1947fd['uniqueid']]&&_[_0x3798('0x3c')](this[_0x3798('0x8')][_0x1947fd['uniqueid']][_0x3798('0x24')])){logger[_0x3798('0x22')]('[%s][HANGUP:UNIQUEID]',_0x1947fd[_0x3798('0x33')]);this[_0x3798('0x19')](_0x1947fd['uniqueid']);}else if(this[_0x3798('0x8')][_0x1947fd['linkedid']]&&_[_0x3798('0x3c')](this[_0x3798('0x8')][_0x1947fd[_0x3798('0x3d')]][_0x3798('0x24')])){logger[_0x3798('0x22')](_0x3798('0x3e'),_0x1947fd[_0x3798('0x3d')]);this[_0x3798('0x19')](_0x1947fd['linkedid']);}}catch(_0x307ef9){logger[_0x3798('0x2d')](_0x3798('0x3f'),_0x307ef9[_0x3798('0x31')]);}};Acw[_0x3798('0x32')][_0x3798('0xe')]=function(_0x2016bf){try{if(this['channels'][_0x2016bf['uniqueid']]&&this[_0x3798('0x8')][_0x2016bf['uniqueid']][_0x3798('0x24')]){logger[_0x3798('0x22')](_0x3798('0x40'),_0x2016bf['uniqueid']);this[_0x3798('0x19')](_0x2016bf[_0x3798('0x33')]);}else if(this[_0x3798('0x8')][_0x2016bf[_0x3798('0x3d')]]&&this[_0x3798('0x8')][_0x2016bf['linkedid']][_0x3798('0x24')]){logger['info'](_0x3798('0x41'),_0x2016bf[_0x3798('0x3d')]);this[_0x3798('0x19')](_0x2016bf[_0x3798('0x3d')]);}}catch(_0x285ce8){logger[_0x3798('0x2d')]('[ACW][syncHangup]\x20%s',_0x285ce8[_0x3798('0x31')]);}};Acw[_0x3798('0x32')][_0x3798('0x12')]=function(_0x227fa8){try{if(!_[_0x3798('0x42')](this[_0x3798('0x8')][_0x227fa8[_0x3798('0x43')]])){this[_0x3798('0x19')](_0x227fa8[_0x3798('0x43')]);if(this['channels'][_0x227fa8[_0x3798('0x44')]]){this[_0x3798('0x8')][_0x227fa8[_0x3798('0x44')]]['attended']=!![];this['channels'][_0x227fa8[_0x3798('0x45')]]=this[_0x3798('0x8')][_0x227fa8[_0x3798('0x44')]];delete this[_0x3798('0x8')][_0x227fa8[_0x3798('0x44')]];}}else if(!_[_0x3798('0x42')](this[_0x3798('0x8')][_0x227fa8[_0x3798('0x45')]])){this['startAcw'](_0x227fa8[_0x3798('0x45')]);if(this[_0x3798('0x8')][_0x227fa8[_0x3798('0x46')]]){this['channels'][_0x227fa8['origtransfereruniqueid']][_0x3798('0x24')]=!![];this['channels'][_0x227fa8[_0x3798('0x43')]]=this[_0x3798('0x8')][_0x227fa8[_0x3798('0x46')]];delete this[_0x3798('0x8')][_0x227fa8[_0x3798('0x46')]];}}}catch(_0x39375d){logger[_0x3798('0x2d')](_0x3798('0x47'),_0x39375d[_0x3798('0x31')]);}};Acw[_0x3798('0x32')][_0x3798('0x14')]=function(_0xff8369){try{if(this['channels'][_0xff8369[_0x3798('0x48')]]){logger['info']('[%s][BLINDTRANSFER:UNIQUEID]',JSON['stringify'](_0xff8369[_0x3798('0x48')]));this['startAcw'](_0xff8369[_0x3798('0x48')]);}else if(this[_0x3798('0x8')][_0xff8369[_0x3798('0x49')]]){logger[_0x3798('0x22')]('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0x3798('0x39')](_0xff8369['transfererlinkedid']));this[_0x3798('0x19')](_0xff8369[_0x3798('0x49')]);}}catch(_0xc17938){logger['error']('[ACW][syncBlindTransfer]\x20%s',_0xc17938['message']);}};Acw[_0x3798('0x32')][_0x3798('0x10')]=function(_0x4c8a8f){try{if(this[_0x3798('0x5')][_0x4c8a8f['queue']]&&this[_0x3798('0x5')][_0x4c8a8f[_0x3798('0x1a')]][_0x3798('0x4a')]==='all'){if(this[_0x3798('0x6')][_0x4c8a8f['interface']]){logger[_0x3798('0x22')](_0x3798('0x4b'),_0x4c8a8f[_0x3798('0x33')],_0x4c8a8f[_0x3798('0x3a')],_0x4c8a8f['queue']);return RpcUser['savePause'](this[_0x3798('0x6')][_0x4c8a8f[_0x3798('0x3a')]],_0x3798('0x4c'),_0x4c8a8f[_0x3798('0x33')]);}}}catch(_0x586f53){logger[_0x3798('0x2d')](_0x3798('0x4d'),_0x586f53[_0x3798('0x31')]);}};module[_0x3798('0x4e')]=Acw;
\ No newline at end of file
+var _0x7f16=['voiceQueues','agents','timers','agentconnect','syncAgentConnect','bind','hanguprequest','syncHangupRequest','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','channels','interface','ACW','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','then','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','stopAcw','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','update','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','finally','[ACW][START]\x20%s','message','queue','[%s][TIMER][STOP][AGENT:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','isUndefined','linkedid','[%s][HANGUP:LINKEDID]','startAcw','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','transfereeuniqueid','secondtransfereruniqueid','isNil','transfertargetuniqueid','origtransfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfereruniqueid','[%s][BLINDTRANSFER:LINKEDID]','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','lodash','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport'];(function(_0xce17c4,_0x536920){var _0x4271c7=function(_0x1b961){while(--_0x1b961){_0xce17c4['push'](_0xce17c4['shift']());}};_0x4271c7(++_0x536920);}(_0x7f16,0x146));var _0x67f1=function(_0x111fec,_0x55932a){_0x111fec=_0x111fec-0x0;var _0x13b1a4=_0x7f16[_0x111fec];return _0x13b1a4;};'use strict';var util=require(_0x67f1('0x0'));var _=require(_0x67f1('0x1'));var moment=require('moment');var ami=require('../ami');var logger=require(_0x67f1('0x2'))(_0x67f1('0x3'));var RpcUser=require(_0x67f1('0x4'));var RpcVoiceAgentReport=require(_0x67f1('0x5'));function Acw(_0x4f44da){this['voiceQueues']=_0x4f44da[_0x67f1('0x6')];this[_0x67f1('0x7')]=_0x4f44da[_0x67f1('0x7')];this[_0x67f1('0x8')]=_0x4f44da[_0x67f1('0x8')];this['channels']={};ami['on'](_0x67f1('0x9'),this[_0x67f1('0xa')][_0x67f1('0xb')](this));ami['on'](_0x67f1('0xc'),this[_0x67f1('0xd')]['bind'](this));ami['on']('hangup',this[_0x67f1('0xe')]['bind'](this));ami['on'](_0x67f1('0xf'),this[_0x67f1('0x10')]['bind'](this));ami['on'](_0x67f1('0x11'),this[_0x67f1('0x12')][_0x67f1('0xb')](this));ami['on'](_0x67f1('0x13'),this[_0x67f1('0x14')][_0x67f1('0xb')](this));ami['on'](_0x67f1('0x15'),this[_0x67f1('0x16')][_0x67f1('0xb')](this));}function getDiff(_0x54dd25){var _0x1d64e5=moment()['milliseconds'](0x0);var _0x2b4a6d=moment(_0x54dd25)[_0x67f1('0x17')](0x0);return _0x1d64e5[_0x67f1('0x18')](_0x2b4a6d,_0x67f1('0x19'));}Acw[_0x67f1('0x1a')]['startAcw']=function(_0x4b4ef1){try{var _0x18be0a=this;var _0x3abb15=this[_0x67f1('0x1b')][_0x4b4ef1][_0x67f1('0x1c')];var _0x8e3479=this[_0x67f1('0x1b')][_0x4b4ef1]['queue'];var _0x404510=this[_0x67f1('0x6')][_0x8e3479];var _0x1682f4=![];var _0x259216=_0x67f1('0x1d');if(_0x404510[_0x67f1('0x1e')]){if(_0x404510[_0x67f1('0x1f')]['name']){_0x1682f4=!![];_0x259216=_0x404510[_0x67f1('0x1f')][_0x67f1('0x20')];}}ami[_0x67f1('0x21')]({'action':_0x67f1('0x22'),'interface':_0x3abb15,'paused':!![],'reason':_0x259216})[_0x67f1('0x23')](function(_0x3578a1){if(_0x18be0a[_0x67f1('0x7')][_0x3abb15]){return RpcUser['getAgent'](_0x18be0a[_0x67f1('0x7')][_0x3abb15]['id'])[_0x67f1('0x23')](function(_0x3e604e){if(_0x3e604e&&!_0x3e604e[_0x67f1('0x24')]){logger[_0x67f1('0x25')](_0x67f1('0x26'),_0x4b4ef1,_0x3abb15,_0x8e3479);var _0x46f5e5=_0x18be0a[_0x67f1('0x1b')][_0x4b4ef1][_0x67f1('0x27')]&&_0x18be0a[_0x67f1('0x1b')][_0x4b4ef1][_0x67f1('0x28')]?_0x18be0a[_0x67f1('0x1b')][_0x4b4ef1][_0x67f1('0x28')]:_0x4b4ef1;return RpcUser[_0x67f1('0x29')](_0x18be0a[_0x67f1('0x7')][_0x3abb15],_0x259216,_0x46f5e5)[_0x67f1('0x23')](function(_0x66d0e9){if(!_0x1682f4){_0x18be0a['timers'][_0x3abb15]={};logger[_0x67f1('0x25')](_0x67f1('0x2a'),_0x4b4ef1,_0x18be0a[_0x67f1('0x6')][_0x8e3479][_0x67f1('0x2b')],_0x3abb15,_0x8e3479);_0x18be0a[_0x67f1('0x8')][_0x3abb15][_0x67f1('0x2c')]=setTimeout(_0x18be0a[_0x67f1('0x2d')][_0x67f1('0xb')](_0x18be0a,_0x3abb15),_0x18be0a[_0x67f1('0x6')][_0x8e3479][_0x67f1('0x2b')]*0x3e8);_0x18be0a[_0x67f1('0x8')][_0x3abb15]['lastPauseAt']=moment()['format'](_0x67f1('0x2e'));_0x18be0a[_0x67f1('0x8')][_0x3abb15][_0x67f1('0x2f')]=_0x4b4ef1;_0x18be0a[_0x67f1('0x8')][_0x3abb15]['queue']=_0x8e3479;_0x18be0a[_0x67f1('0x8')][_0x3abb15][_0x67f1('0x30')]=function(){var _0x5427fb=getDiff(_0x18be0a['timers'][_0x3abb15]['lastPauseAt']);clearTimeout(_0x18be0a[_0x67f1('0x8')][_0x3abb15][_0x67f1('0x2c')]);_0x18be0a[_0x67f1('0x8')][_0x3abb15][_0x67f1('0x2c')]=![];RpcVoiceAgentReport[_0x67f1('0x31')]({'acwtime':_0x5427fb},_0x18be0a[_0x67f1('0x8')][_0x3abb15][_0x67f1('0x2f')],_0x3abb15)[_0x67f1('0x23')](function(_0x3aec6a){logger[_0x67f1('0x25')](_0x67f1('0x32'),_0x4b4ef1,_0x5427fb,_0x3aec6a);})[_0x67f1('0x33')](function(_0x25bcd8){logger[_0x67f1('0x34')](_0x67f1('0x35'),_0x4b4ef1,_0x25bcd8);});delete _0x18be0a[_0x67f1('0x8')][_0x3abb15];};}});}else{logger[_0x67f1('0x25')]('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x4b4ef1,_0x3abb15,_0x8e3479);}});}})['catch'](function(_0x1954e7){logger[_0x67f1('0x34')](_0x67f1('0x2a'),_0x4b4ef1,_0x18be0a[_0x67f1('0x6')][_0x8e3479]['acwTimeout'],_0x3abb15,_0x8e3479);})[_0x67f1('0x36')](function(){delete _0x18be0a[_0x67f1('0x1b')][_0x4b4ef1];});}catch(_0x3ebf54){logger['error'](_0x67f1('0x37'),_0x3ebf54[_0x67f1('0x38')]);}};Acw[_0x67f1('0x1a')]['stopAcw']=function(_0x5cfa76){try{var _0x4cc1f1=this;if(_0x4cc1f1['timers'][_0x5cfa76]){_0x4cc1f1['timers'][_0x5cfa76][_0x67f1('0x2c')]=![];var _0x2a1df2=_0x4cc1f1[_0x67f1('0x8')][_0x5cfa76][_0x67f1('0x2f')];var _0x1b24d4=_0x4cc1f1[_0x67f1('0x8')][_0x5cfa76][_0x67f1('0x39')];var _0x1ccf3b=_0x4cc1f1['voiceQueues'][_0x1b24d4][_0x67f1('0x2b')];logger[_0x67f1('0x25')](_0x67f1('0x3a'),_0x2a1df2,_0x5cfa76);RpcUser['saveUnpause'](this[_0x67f1('0x7')][_0x5cfa76]);RpcVoiceAgentReport[_0x67f1('0x31')]({'acwtime':_0x1ccf3b,'agentacw':!![]},_0x2a1df2,_0x5cfa76)['then'](function(_0x261548){logger[_0x67f1('0x25')](_0x67f1('0x32'),_0x2a1df2,_0x1ccf3b,_0x261548);})[_0x67f1('0x33')](function(_0x4f293e){logger[_0x67f1('0x34')]('[%s][UPDATE][ERRORS:%s]',_0x2a1df2,_0x4f293e);});}else{logger[_0x67f1('0x34')](_0x67f1('0x3b'),_0x5cfa76);if(_0x4cc1f1['timers']){logger['info'](_0x67f1('0x3c'),JSON[_0x67f1('0x3d')](_0x4cc1f1[_0x67f1('0x8')]));}}}catch(_0xfe3915){logger[_0x67f1('0x34')](_0x67f1('0x3e'),_0xfe3915['message']);}};Acw[_0x67f1('0x1a')][_0x67f1('0xa')]=function(_0x271351){try{if(this[_0x67f1('0x6')][_0x271351['queue']]&&(this[_0x67f1('0x6')][_0x271351['queue']][_0x67f1('0x3')]||this[_0x67f1('0x6')][_0x271351[_0x67f1('0x39')]][_0x67f1('0x1e')])){if(this[_0x67f1('0x7')][_0x271351[_0x67f1('0x1c')]]){this[_0x67f1('0x1b')][_0x271351['uniqueid']]={'queue':_0x271351['queue'],'interface':_0x271351[_0x67f1('0x1c')],'destlinkedid':_0x271351['destlinkedid']};}}}catch(_0x439a2f){logger[_0x67f1('0x34')]('[ACW][syncAgentConnect]\x20%s',_0x439a2f[_0x67f1('0x38')]);}};Acw['prototype'][_0x67f1('0x16')]=function(_0x1cff5b){try{if(this[_0x67f1('0x6')][_0x1cff5b[_0x67f1('0x39')]]&&(this[_0x67f1('0x6')][_0x1cff5b[_0x67f1('0x39')]][_0x67f1('0x3')]||this['voiceQueues'][_0x1cff5b[_0x67f1('0x39')]][_0x67f1('0x1e')])){if(this['agents'][_0x1cff5b[_0x67f1('0x1c')]]){this[_0x67f1('0x1b')][_0x1cff5b[_0x67f1('0x2f')]]={'queue':_0x1cff5b[_0x67f1('0x39')],'interface':_0x1cff5b[_0x67f1('0x1c')]};}}}catch(_0x57b5cf){logger[_0x67f1('0x34')]('[ACW][syncAgentConnectPreview]\x20%s',_0x57b5cf[_0x67f1('0x38')]);}};Acw['prototype'][_0x67f1('0xd')]=function(_0x1a4540){try{if(this[_0x67f1('0x1b')][_0x1a4540[_0x67f1('0x2f')]]&&_[_0x67f1('0x3f')](this[_0x67f1('0x1b')][_0x1a4540[_0x67f1('0x2f')]]['attended'])){logger[_0x67f1('0x25')]('[%s][HANGUP:UNIQUEID]',_0x1a4540[_0x67f1('0x2f')]);this['startAcw'](_0x1a4540[_0x67f1('0x2f')]);}else if(this[_0x67f1('0x1b')][_0x1a4540[_0x67f1('0x40')]]&&_[_0x67f1('0x3f')](this['channels'][_0x1a4540[_0x67f1('0x40')]]['attended'])){logger[_0x67f1('0x25')](_0x67f1('0x41'),_0x1a4540[_0x67f1('0x40')]);this[_0x67f1('0x42')](_0x1a4540['linkedid']);}}catch(_0x2c4c03){logger[_0x67f1('0x34')]('[ACW][syncHangupRequest]\x20%s',_0x2c4c03['message']);}};Acw[_0x67f1('0x1a')][_0x67f1('0xe')]=function(_0xa98cdf){try{if(this[_0x67f1('0x1b')][_0xa98cdf['uniqueid']]&&this[_0x67f1('0x1b')][_0xa98cdf[_0x67f1('0x2f')]][_0x67f1('0x27')]){logger[_0x67f1('0x25')]('[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]',_0xa98cdf[_0x67f1('0x2f')]);this[_0x67f1('0x42')](_0xa98cdf[_0x67f1('0x2f')]);}else if(this[_0x67f1('0x1b')][_0xa98cdf[_0x67f1('0x40')]]&&this[_0x67f1('0x1b')][_0xa98cdf['linkedid']][_0x67f1('0x27')]){logger['info'](_0x67f1('0x43'),_0xa98cdf['linkedid']);this[_0x67f1('0x42')](_0xa98cdf[_0x67f1('0x40')]);}}catch(_0x5def00){logger[_0x67f1('0x34')](_0x67f1('0x44'),_0x5def00['message']);}};Acw[_0x67f1('0x1a')][_0x67f1('0x12')]=function(_0xf4d35f){try{if(!_['isNil'](this[_0x67f1('0x1b')][_0xf4d35f[_0x67f1('0x45')]])){this[_0x67f1('0x42')](_0xf4d35f[_0x67f1('0x45')]);if(this['channels'][_0xf4d35f[_0x67f1('0x46')]]){this[_0x67f1('0x1b')][_0xf4d35f[_0x67f1('0x46')]][_0x67f1('0x27')]=!![];this[_0x67f1('0x1b')][_0xf4d35f['transfertargetuniqueid']]=this[_0x67f1('0x1b')][_0xf4d35f[_0x67f1('0x46')]];delete this[_0x67f1('0x1b')][_0xf4d35f['secondtransfereruniqueid']];}}else if(!_[_0x67f1('0x47')](this[_0x67f1('0x1b')][_0xf4d35f[_0x67f1('0x48')]])){this['startAcw'](_0xf4d35f[_0x67f1('0x48')]);if(this['channels'][_0xf4d35f[_0x67f1('0x49')]]){this[_0x67f1('0x1b')][_0xf4d35f[_0x67f1('0x49')]][_0x67f1('0x27')]=!![];this[_0x67f1('0x1b')][_0xf4d35f[_0x67f1('0x45')]]=this[_0x67f1('0x1b')][_0xf4d35f[_0x67f1('0x49')]];delete this[_0x67f1('0x1b')][_0xf4d35f[_0x67f1('0x49')]];}}}catch(_0x22e9bc){logger[_0x67f1('0x34')]('[ACW][syncAttendedTransfer]\x20%s',_0x22e9bc[_0x67f1('0x38')]);}};Acw['prototype'][_0x67f1('0x14')]=function(_0x3cb8a8){try{if(this[_0x67f1('0x1b')][_0x3cb8a8['transfereruniqueid']]){logger[_0x67f1('0x25')](_0x67f1('0x4a'),JSON['stringify'](_0x3cb8a8[_0x67f1('0x4b')]));this[_0x67f1('0x42')](_0x3cb8a8[_0x67f1('0x4b')]);}else if(this[_0x67f1('0x1b')][_0x3cb8a8['transfererlinkedid']]){logger['info'](_0x67f1('0x4c'),JSON[_0x67f1('0x3d')](_0x3cb8a8[_0x67f1('0x4d')]));this[_0x67f1('0x42')](_0x3cb8a8[_0x67f1('0x4d')]);}}catch(_0x271184){logger[_0x67f1('0x34')](_0x67f1('0x4e'),_0x271184['message']);}};Acw[_0x67f1('0x1a')][_0x67f1('0x10')]=function(_0x3b80a5){try{if(this[_0x67f1('0x6')][_0x3b80a5[_0x67f1('0x39')]]&&this[_0x67f1('0x6')][_0x3b80a5[_0x67f1('0x39')]]['autopause']==='all'){if(this['agents'][_0x3b80a5[_0x67f1('0x1c')]]){logger[_0x67f1('0x25')](_0x67f1('0x4f'),_0x3b80a5['uniqueid'],_0x3b80a5[_0x67f1('0x1c')],_0x3b80a5[_0x67f1('0x39')]);return RpcUser['savePause'](this[_0x67f1('0x7')][_0x3b80a5[_0x67f1('0x1c')]],_0x67f1('0x50'),_0x3b80a5[_0x67f1('0x2f')]);}}}catch(_0x263934){logger[_0x67f1('0x34')](_0x67f1('0x51'),_0x263934[_0x67f1('0x38')]);}};module[_0x67f1('0x52')]=Acw;
\ No newline at end of file
index f0bb7b7..3bf8e09 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc258=['asterisk-manager','moment','util','../../config/logger','ami','../../config/environment','asterisk','port','username','password','action','error','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','format','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','actionSipShowRegistry','Action','sipshowregistry','devicestatelist','queuesummary','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','fullybooted','resolve','actionDeviceStateList','then','actionSipPeerStatus','actionQueueSummary','actionCoreShowChannels','catch','log','exports'];(function(_0x599e60,_0x5b6519){var _0x468e19=function(_0xcdfd97){while(--_0xcdfd97){_0x599e60['push'](_0x599e60['shift']());}};_0x468e19(++_0x5b6519);}(_0xc258,0x90));var _0x8c25=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0xc258[_0x4a9fb1];return _0x348672;};'use strict';var Manager=require(_0x8c25('0x0'));var BPromise=require('bluebird');var moment=require(_0x8c25('0x1'));var util=require(_0x8c25('0x2'));var _=require('lodash');var logger=require(_0x8c25('0x3'))(_0x8c25('0x4'));var config=require(_0x8c25('0x5'));var ami=new Manager(config[_0x8c25('0x6')][_0x8c25('0x7')],config[_0x8c25('0x6')]['ip'],config['asterisk'][_0x8c25('0x8')],config[_0x8c25('0x6')][_0x8c25('0x9')],!![]);ami['keepConnected']();ami['Action']=BPromise['promisify'](ami[_0x8c25('0xa')]);function error(_0x6f563b){logger[_0x8c25('0xb')](util['format'](_0x8c25('0xc'),config['asterisk'][_0x8c25('0x8')],config['asterisk']['ip'],config[_0x8c25('0x6')]['port'],util[_0x8c25('0xd')](_0x6f563b,![],null)));}function close(){logger[_0x8c25('0xb')](util[_0x8c25('0xe')](_0x8c25('0xf'),config[_0x8c25('0x6')][_0x8c25('0x8')],config[_0x8c25('0x6')]['ip'],config[_0x8c25('0x6')][_0x8c25('0x7')]));}ami[_0x8c25('0x10')]=function(){return function(){return ami[_0x8c25('0x11')]({'action':_0x8c25('0x12')});};};ami['actionDeviceStateList']=function(){return function(){return ami['Action']({'action':_0x8c25('0x13')});};};ami['actionSipPeerStatus']=function(){return function(){return ami[_0x8c25('0x11')]({'action':'sippeerstatus'});};};ami['actionQueueSummary']=function(){return function(){return ami[_0x8c25('0x11')]({'action':_0x8c25('0x14')});};};ami['actionCoreShowChannels']=function(){return function(){return ami['Action']({'action':'coreshowchannels'});};};function connect(_0x56b10e){logger[_0x8c25('0x15')](util['format'](_0x8c25('0x16'),config[_0x8c25('0x6')]['username'],config[_0x8c25('0x6')]['ip'],config[_0x8c25('0x6')][_0x8c25('0x7')]));ami[_0x8c25('0x17')](_0x8c25('0xb'),error);ami[_0x8c25('0x17')](_0x8c25('0x18'),close);}ami['on']('connect',connect);ami['on']('shutdown',function(_0x429c52){logger[_0x8c25('0x15')](util[_0x8c25('0xe')](_0x8c25('0x19'),config[_0x8c25('0x6')][_0x8c25('0x8')],config[_0x8c25('0x6')]['ip'],config[_0x8c25('0x6')][_0x8c25('0x7')],util[_0x8c25('0xd')](_0x429c52,![],null)));});ami['on'](_0x8c25('0x1a'),function(_0x592813){logger[_0x8c25('0x15')](util['format']('Fullybooted\x20\x22%s\x22\x20to\x20%s:%s',config['asterisk']['username'],config[_0x8c25('0x6')]['ip'],config['asterisk']['port']));return BPromise[_0x8c25('0x1b')]()['then'](ami['actionSipShowRegistry']())['then'](ami[_0x8c25('0x1c')]())[_0x8c25('0x1d')](ami[_0x8c25('0x1e')]())[_0x8c25('0x1d')](ami[_0x8c25('0x1f')]())[_0x8c25('0x1d')](ami[_0x8c25('0x20')]())[_0x8c25('0x21')](function(_0x454b4d){console[_0x8c25('0x22')](_0x454b4d);});});ami[_0x8c25('0x17')]('error',error);ami[_0x8c25('0x17')](_0x8c25('0x18'),close);module[_0x8c25('0x23')]=ami;
\ No newline at end of file
+var _0xb25a=['lodash','../../config/logger','ami','../../config/environment','asterisk','username','password','keepConnected','Action','promisify','error','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','actionSipShowRegistry','sipshowregistry','actionDeviceStateList','devicestatelist','actionSipPeerStatus','sippeerstatus','actionQueueSummary','queuesummary','actionCoreShowChannels','coreshowchannels','port','once','close','connect','info','format','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','then','log','asterisk-manager','bluebird','moment','util'];(function(_0x2b3284,_0x4ff135){var _0x212ed5=function(_0x19ccd7){while(--_0x19ccd7){_0x2b3284['push'](_0x2b3284['shift']());}};_0x212ed5(++_0x4ff135);}(_0xb25a,0x152));var _0xab25=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xb25a[_0x19950b];return _0x3c6b41;};'use strict';var Manager=require(_0xab25('0x0'));var BPromise=require(_0xab25('0x1'));var moment=require(_0xab25('0x2'));var util=require(_0xab25('0x3'));var _=require(_0xab25('0x4'));var logger=require(_0xab25('0x5'))(_0xab25('0x6'));var config=require(_0xab25('0x7'));var ami=new Manager(config['asterisk']['port'],config[_0xab25('0x8')]['ip'],config[_0xab25('0x8')][_0xab25('0x9')],config['asterisk'][_0xab25('0xa')],!![]);ami[_0xab25('0xb')]();ami[_0xab25('0xc')]=BPromise[_0xab25('0xd')](ami['action']);function error(_0x1a0dae){logger[_0xab25('0xe')](util['format'](_0xab25('0xf'),config[_0xab25('0x8')][_0xab25('0x9')],config[_0xab25('0x8')]['ip'],config[_0xab25('0x8')]['port'],util[_0xab25('0x10')](_0x1a0dae,![],null)));}function close(){logger['error'](util['format'](_0xab25('0x11'),config[_0xab25('0x8')][_0xab25('0x9')],config[_0xab25('0x8')]['ip'],config['asterisk']['port']));}ami[_0xab25('0x12')]=function(){return function(){return ami[_0xab25('0xc')]({'action':_0xab25('0x13')});};};ami[_0xab25('0x14')]=function(){return function(){return ami[_0xab25('0xc')]({'action':_0xab25('0x15')});};};ami[_0xab25('0x16')]=function(){return function(){return ami['Action']({'action':_0xab25('0x17')});};};ami[_0xab25('0x18')]=function(){return function(){return ami['Action']({'action':_0xab25('0x19')});};};ami[_0xab25('0x1a')]=function(){return function(){return ami[_0xab25('0xc')]({'action':_0xab25('0x1b')});};};function connect(_0x306500){logger['info'](util['format']('Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s',config['asterisk'][_0xab25('0x9')],config['asterisk']['ip'],config['asterisk'][_0xab25('0x1c')]));ami[_0xab25('0x1d')](_0xab25('0xe'),error);ami[_0xab25('0x1d')](_0xab25('0x1e'),close);}ami['on'](_0xab25('0x1f'),connect);ami['on']('shutdown',function(_0x4a3022){logger[_0xab25('0x20')](util[_0xab25('0x21')](_0xab25('0x22'),config['asterisk'][_0xab25('0x9')],config[_0xab25('0x8')]['ip'],config[_0xab25('0x8')]['port'],util['inspect'](_0x4a3022,![],null)));});ami['on']('fullybooted',function(_0x5d145e){logger[_0xab25('0x20')](util[_0xab25('0x21')](_0xab25('0x23'),config[_0xab25('0x8')][_0xab25('0x9')],config[_0xab25('0x8')]['ip'],config[_0xab25('0x8')]['port']));return BPromise['resolve']()[_0xab25('0x24')](ami[_0xab25('0x12')]())['then'](ami[_0xab25('0x14')]())[_0xab25('0x24')](ami[_0xab25('0x16')]())[_0xab25('0x24')](ami[_0xab25('0x18')]())[_0xab25('0x24')](ami[_0xab25('0x1a')]())['catch'](function(_0x41788b){console[_0xab25('0x25')](_0x41788b);});});ami[_0xab25('0x1d')]('error',error);ami[_0xab25('0x1d')](_0xab25('0x1e'),close);module['exports']=ami;
\ No newline at end of file
index dbf53ab..bd3919a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['rpc','memberReport','error','message','result','catch','exports','../../config/logger','ami','client','http','Request','request','then','debug'];(function(_0x192791,_0x418a6e){var _0x3f2b35=function(_0x413b8a){while(--_0x413b8a){_0x192791['push'](_0x192791['shift']());}};_0x3f2b35(++_0x418a6e);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0x3071('0x0'))(_0x3071('0x1'));var client=jayson[_0x3071('0x2')][_0x3071('0x3')]({'port':0x2329});client[_0x3071('0x4')]=function(_0x52b5fb,_0x2c547f){return new BPromise(function(_0x7b18a4,_0x33a70c){return client[_0x3071('0x5')](_0x52b5fb,_0x2c547f)[_0x3071('0x6')](function(_0x41cf76){logger[_0x3071('0x7')](_0x3071('0x8'),_0x3071('0x9'),_0x52b5fb,_0x2c547f,_0x41cf76);if(_0x41cf76[_0x3071('0xa')]){logger[_0x3071('0xa')](_0x3071('0x8'),_0x3071('0x9'),_0x52b5fb,_0x41cf76['error'][_0x3071('0xb')],_0x2c547f);return _0x33a70c(_0x41cf76[_0x3071('0xa')][_0x3071('0xb')]);}else{return _0x7b18a4(_0x41cf76[_0x3071('0xc')]);}})[_0x3071('0xd')](function(_0x4a470a){logger[_0x3071('0xa')](_0x3071('0x8'),_0x3071('0x9'),_0x52b5fb,_0x4a470a,_0x2c547f);return _0x33a70c(_0x4a470a);});});};module[_0x3071('0xe')]=client;
\ No newline at end of file
+var _0xbdb7=['result','catch','jayson/promise','bluebird','../../config/logger','ami','client','http','Request','debug','error','message'];(function(_0x396f7d,_0xf9d7a){var _0x45efa6=function(_0x1e65a2){while(--_0x1e65a2){_0x396f7d['push'](_0x396f7d['shift']());}};_0x45efa6(++_0xf9d7a);}(_0xbdb7,0x12e));var _0x7bdb=function(_0x3072eb,_0x455321){_0x3072eb=_0x3072eb-0x0;var _0x55db4b=_0xbdb7[_0x3072eb];return _0x55db4b;};'use strict';var jayson=require(_0x7bdb('0x0'));var BPromise=require(_0x7bdb('0x1'));var logger=require(_0x7bdb('0x2'))(_0x7bdb('0x3'));var client=jayson[_0x7bdb('0x4')][_0x7bdb('0x5')]({'port':0x2329});client[_0x7bdb('0x6')]=function(_0x2c7e07,_0x46c068){return new BPromise(function(_0x47aec5,_0x28542c){return client['request'](_0x2c7e07,_0x46c068)['then'](function(_0xffdc86){logger[_0x7bdb('0x7')]('rpc','memberReport',_0x2c7e07,_0x46c068,_0xffdc86);if(_0xffdc86[_0x7bdb('0x8')]){logger[_0x7bdb('0x8')]('rpc','memberReport',_0x2c7e07,_0xffdc86[_0x7bdb('0x8')][_0x7bdb('0x9')],_0x46c068);return _0x28542c(_0xffdc86[_0x7bdb('0x8')][_0x7bdb('0x9')]);}else{return _0x47aec5(_0xffdc86[_0x7bdb('0xa')]);}})[_0x7bdb('0xb')](function(_0x297724){logger[_0x7bdb('0x8')]('rpc','memberReport',_0x2c7e07,_0x297724,_0x46c068);return _0x28542c(_0x297724);});});};module['exports']=client;
\ No newline at end of file
index c270d1f..29effcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43f4=['getQueue','exports','util','lodash','moment','isNil','voiceQueue','uniqueid','name','Contact','phone','lastName','number','queue','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','ContactFirstName','firstName','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','originatecalleridnum','originatecalleridname','dialCutDigit','substring','prototype'];(function(_0x5164b0,_0x55c095){var _0x4a17d5=function(_0x322f5c){while(--_0x322f5c){_0x5164b0['push'](_0x5164b0['shift']());}};_0x4a17d5(++_0x55c095);}(_0x43f4,0xd9));var _0x443f=function(_0x162f44,_0x1df451){_0x162f44=_0x162f44-0x0;var _0x57837b=_0x43f4[_0x162f44];return _0x57837b;};'use strict';var util=require(_0x443f('0x0'));var _=require(_0x443f('0x1'));var moment=require(_0x443f('0x2'));function checkNameSurname(_0x411319,_0xf9314c,_0x1d3178){var _0x46e09c='';if(!_[_0x443f('0x3')](_0xf9314c)&&'string'===typeof _0xf9314c){_0x46e09c+=_0xf9314c;}if(!_[_0x443f('0x3')](_0x1d3178)&&'string'===typeof _0x1d3178){_0x46e09c+='\x20'+_0x1d3178;}if(_0x46e09c!==''){return _0x46e09c;}return _0x411319;}function Action(_0x21bef0,_0x5847d0,_0x34a5a7){this[_0x443f('0x4')]=_0x21bef0;this[_0x443f('0x5')]=_0x34a5a7||undefined;this[_0x443f('0x6')]=checkNameSurname(_0x5847d0[_0x443f('0x7')][_0x443f('0x8')],_0x5847d0['Contact']['firstName'],_0x5847d0[_0x443f('0x7')][_0x443f('0x9')]);this[_0x443f('0xa')]=_0x5847d0['Contact'][_0x443f('0x8')];this[_0x443f('0xb')]=_0x21bef0['name'];this[_0x443f('0xc')]=_0x5847d0['active']||![];this[_0x443f('0xd')]=_0x21bef0[_0x443f('0xd')];this[_0x443f('0xe')]=_0x21bef0[_0x443f('0xe')]||0x3;this['scheduledat']=_0x5847d0[_0x443f('0xf')];this['countbusyretry']=_0x5847d0[_0x443f('0x10')];this[_0x443f('0x11')]=_0x5847d0[_0x443f('0x11')];this[_0x443f('0x12')]=_0x5847d0[_0x443f('0x12')];this[_0x443f('0x13')]=_0x5847d0[_0x443f('0x13')];this[_0x443f('0x14')]=_0x5847d0[_0x443f('0x14')];this['countabandonedretry']=_0x5847d0[_0x443f('0x15')];this[_0x443f('0x16')]=_0x5847d0[_0x443f('0x16')];this[_0x443f('0x17')]=_0x5847d0[_0x443f('0x17')];this[_0x443f('0x18')]=_0x5847d0[_0x443f('0x18')];this[_0x443f('0x19')]=_0x5847d0[_0x443f('0x19')];this[_0x443f('0x1a')]=_0x5847d0[_0x443f('0x1a')];this[_0x443f('0x1b')]=_0x5847d0[_0x443f('0x1b')];this[_0x443f('0x1c')]=_0x5847d0['CampaignId'];this['idHopper']=_0x5847d0['id'];this[_0x443f('0x1d')]=_0x5847d0[_0x443f('0x7')][_0x443f('0x1e')]||'';this['starttime']=moment()[_0x443f('0x1f')](_0x443f('0x20'));this[_0x443f('0x21')]=_0x5847d0[_0x443f('0x21')];this[_0x443f('0x22')]=_0x5847d0[_0x443f('0x22')];this[_0x443f('0x23')]=_0x5847d0[_0x443f('0x23')];this['recallme']=_0x5847d0['recallme'];this[_0x443f('0x24')]='';this[_0x443f('0x25')]='';}Action['prototype']['getCaller']=function(){return util[_0x443f('0x1f')]('\x22%s\x22\x20<%s>',this[_0x443f('0x6')],this[_0x443f('0x4')][_0x443f('0x26')]>0x0?this['number'][_0x443f('0x27')](this[_0x443f('0x4')][_0x443f('0x26')]):this[_0x443f('0xa')]);};Action[_0x443f('0x28')][_0x443f('0x29')]=function(){return this[_0x443f('0xb')];};module[_0x443f('0x2a')]=Action;
\ No newline at end of file
+var _0x7cd0=['VoiceQueueId','CampaignId','idHopper','ContactFirstName','firstName','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridname','getCaller','\x22%s\x22\x20<%s>','dialCutDigit','substring','prototype','getQueue','exports','lodash','moment','isNil','string','voiceQueue','name','Contact','number','phone','queue','active','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId'];(function(_0x3f88bc,_0xe38cf5){var _0x4df1c4=function(_0x111de1){while(--_0x111de1){_0x3f88bc['push'](_0x3f88bc['shift']());}};_0x4df1c4(++_0xe38cf5);}(_0x7cd0,0xea));var _0x07cd=function(_0x40cf6e,_0x31439b){_0x40cf6e=_0x40cf6e-0x0;var _0x5bf109=_0x7cd0[_0x40cf6e];return _0x5bf109;};'use strict';var util=require('util');var _=require(_0x07cd('0x0'));var moment=require(_0x07cd('0x1'));function checkNameSurname(_0x498817,_0x459edc,_0x41419d){var _0x5fdad3='';if(!_[_0x07cd('0x2')](_0x459edc)&&_0x07cd('0x3')===typeof _0x459edc){_0x5fdad3+=_0x459edc;}if(!_[_0x07cd('0x2')](_0x41419d)&&'string'===typeof _0x41419d){_0x5fdad3+='\x20'+_0x41419d;}if(_0x5fdad3!==''){return _0x5fdad3;}return _0x498817;}function Action(_0x56f8c9,_0x5d215b,_0x2bb981){this[_0x07cd('0x4')]=_0x56f8c9;this['uniqueid']=_0x2bb981||undefined;this[_0x07cd('0x5')]=checkNameSurname(_0x5d215b[_0x07cd('0x6')]['phone'],_0x5d215b[_0x07cd('0x6')]['firstName'],_0x5d215b[_0x07cd('0x6')]['lastName']);this[_0x07cd('0x7')]=_0x5d215b[_0x07cd('0x6')][_0x07cd('0x8')];this[_0x07cd('0x9')]=_0x56f8c9[_0x07cd('0x5')];this['active']=_0x5d215b[_0x07cd('0xa')]||![];this['type']=_0x56f8c9['type'];this[_0x07cd('0xb')]=_0x56f8c9[_0x07cd('0xb')]||0x3;this[_0x07cd('0xc')]=_0x5d215b[_0x07cd('0xc')];this[_0x07cd('0xd')]=_0x5d215b[_0x07cd('0xd')];this['countcongestionretry']=_0x5d215b[_0x07cd('0xe')];this[_0x07cd('0xf')]=_0x5d215b[_0x07cd('0xf')];this[_0x07cd('0x10')]=_0x5d215b['countnosuchnumberretry'];this['countdropretry']=_0x5d215b[_0x07cd('0x11')];this[_0x07cd('0x12')]=_0x5d215b[_0x07cd('0x12')];this[_0x07cd('0x13')]=_0x5d215b['countmachineretry'];this[_0x07cd('0x14')]=_0x5d215b[_0x07cd('0x14')];this[_0x07cd('0x15')]=_0x5d215b['ContactId'];this[_0x07cd('0x16')]=_0x5d215b[_0x07cd('0x16')];this[_0x07cd('0x17')]=_0x5d215b[_0x07cd('0x17')];this['VoiceQueueId']=_0x5d215b[_0x07cd('0x18')];this[_0x07cd('0x19')]=_0x5d215b[_0x07cd('0x19')];this[_0x07cd('0x1a')]=_0x5d215b['id'];this[_0x07cd('0x1b')]=_0x5d215b[_0x07cd('0x6')][_0x07cd('0x1c')]||'';this['starttime']=moment()[_0x07cd('0x1d')](_0x07cd('0x1e'));this[_0x07cd('0x1f')]=_0x5d215b['callback'];this['callbackuniqueid']=_0x5d215b[_0x07cd('0x20')];this[_0x07cd('0x21')]=_0x5d215b['callbackat'];this['recallme']=_0x5d215b[_0x07cd('0x22')];this['originatecalleridnum']='';this[_0x07cd('0x23')]='';}Action['prototype'][_0x07cd('0x24')]=function(){return util[_0x07cd('0x1d')](_0x07cd('0x25'),this[_0x07cd('0x5')],this[_0x07cd('0x4')][_0x07cd('0x26')]>0x0?this[_0x07cd('0x7')][_0x07cd('0x27')](this[_0x07cd('0x4')][_0x07cd('0x26')]):this[_0x07cd('0x7')]);};Action[_0x07cd('0x28')][_0x07cd('0x29')]=function(){return this[_0x07cd('0x9')];};module[_0x07cd('0x2a')]=Action;
\ No newline at end of file
index b87418f..bb5f182 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bb4=['UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','lodash','moment','milliseconds','seconds','state','statedesc','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','name','calleridnum','starttime','answertime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','responsetime','holdtime','talktime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId'];(function(_0x508dbe,_0x3573db){var _0x377bf2=function(_0x3f0d0e){while(--_0x3f0d0e){_0x508dbe['push'](_0x508dbe['shift']());}};_0x377bf2(++_0x3573db);}(_0x1bb4,0x1c7));var _0x41bb=function(_0x3bb8f5,_0x4343c8){_0x3bb8f5=_0x3bb8f5-0x0;var _0x176048=_0x1bb4[_0x3bb8f5];return _0x176048;};'use strict';var util=require(_0x41bb('0x0'));var _=require(_0x41bb('0x1'));var moment=require(_0x41bb('0x2'));function getSeconds(_0x42db48,_0x1cd211){var _0x4db093=moment(_0x42db48)[_0x41bb('0x3')](0x0);var _0x5da3f3=moment(_0x1cd211)[_0x41bb('0x3')](0x0);return _0x4db093['diff'](_0x5da3f3,_0x41bb('0x4'));}function AgentComplete(_0x4f7261,_0x232b17){this[_0x41bb('0x5')]=0x4;this[_0x41bb('0x6')]='Answer';this[_0x41bb('0x7')]=_0x4f7261[_0x41bb('0x7')];this['type']=_0x4f7261[_0x41bb('0x8')];this[_0x41bb('0x9')]=_0x4f7261[_0x41bb('0x8')]==='outbound'?_0x41bb('0xa'):_0x4f7261[_0x41bb('0x8')];this[_0x41bb('0xb')]=_0x4f7261[_0x41bb('0xb')];this[_0x41bb('0xc')]=_0x4f7261['countcongestionretry'];this[_0x41bb('0xd')]=_0x4f7261[_0x41bb('0xd')];this[_0x41bb('0xe')]=_0x4f7261[_0x41bb('0xb')]+_0x4f7261[_0x41bb('0xc')]+_0x4f7261[_0x41bb('0xd')]+_0x4f7261[_0x41bb('0xf')]+_0x4f7261[_0x41bb('0x10')]+_0x4f7261['countabandonedretry']+_0x4f7261['countmachineretry']+_0x4f7261['countagentrejectretry'];this[_0x41bb('0xf')]=_0x4f7261[_0x41bb('0xf')];this[_0x41bb('0x10')]=_0x4f7261['countdropretry'];this['countabandonedretry']=_0x4f7261[_0x41bb('0x11')];this[_0x41bb('0x12')]=_0x4f7261[_0x41bb('0x12')];this[_0x41bb('0x13')]=_0x4f7261[_0x41bb('0x13')];this['uniqueid']=_0x232b17[_0x41bb('0x14')];this['calleridname']=_0x4f7261[_0x41bb('0x15')];this[_0x41bb('0x16')]=_0x4f7261['number'];this[_0x41bb('0x17')]=_0x4f7261[_0x41bb('0x17')];this['responsetime']=_0x4f7261['responsetime'];this[_0x41bb('0x18')]=_0x4f7261['answertime'];this[_0x41bb('0x19')]=moment()[_0x41bb('0x1a')](_0x41bb('0x1b'));this[_0x41bb('0x1c')]=getSeconds(_0x4f7261[_0x41bb('0x1d')],_0x4f7261[_0x41bb('0x17')]);this[_0x41bb('0x1e')]=getSeconds(_0x4f7261[_0x41bb('0x18')],_0x4f7261[_0x41bb('0x1d')]);this[_0x41bb('0x1f')]=getSeconds(this['endtime'],_0x4f7261[_0x41bb('0x18')]);this[_0x41bb('0xa')]=_0x232b17[_0x41bb('0xa')];this[_0x41bb('0x20')]=_0x232b17['membername'];this['reason']=_0x232b17[_0x41bb('0x21')];this[_0x41bb('0x22')]=_0x4f7261[_0x41bb('0x22')];this['callbackuniqueid']=_0x4f7261[_0x41bb('0x23')];this[_0x41bb('0x24')]=_0x4f7261['callbackat'];this[_0x41bb('0x25')]=_0x4f7261[_0x41bb('0x25')];this[_0x41bb('0x26')]=_0x4f7261[_0x41bb('0x26')];this[_0x41bb('0x27')]=_0x4f7261[_0x41bb('0x27')];this[_0x41bb('0x28')]=_0x4f7261[_0x41bb('0x28')];this[_0x41bb('0x29')]=_0x4f7261[_0x41bb('0x29')];this[_0x41bb('0x2a')]=_0x4f7261[_0x41bb('0x2a')];this[_0x41bb('0x2b')]=_0x4f7261[_0x41bb('0x2b')]||'';this[_0x41bb('0x2c')]=_0x4f7261[_0x41bb('0x2c')]||'';}module['exports']=AgentComplete;
\ No newline at end of file
+var _0x3a60=['queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','answertime','endtime','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','lodash','moment','milliseconds','diff','statedesc','Answer','scheduledat','type','campaigntype','outbound'];(function(_0xfebcc7,_0x54d886){var _0x4cac4e=function(_0x5d651e){while(--_0x5d651e){_0xfebcc7['push'](_0xfebcc7['shift']());}};_0x4cac4e(++_0x54d886);}(_0x3a60,0x1b8));var _0x03a6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3a60[_0x3dd15e];return _0x231fd0;};'use strict';var util=require('util');var _=require(_0x03a6('0x0'));var moment=require(_0x03a6('0x1'));function getSeconds(_0x17dc2e,_0x481e88){var _0x2c4fda=moment(_0x17dc2e)[_0x03a6('0x2')](0x0);var _0x56a2c9=moment(_0x481e88)['milliseconds'](0x0);return _0x2c4fda[_0x03a6('0x3')](_0x56a2c9,'seconds');}function AgentComplete(_0x2dec1e,_0x3827b9){this['state']=0x4;this[_0x03a6('0x4')]=_0x03a6('0x5');this[_0x03a6('0x6')]=_0x2dec1e[_0x03a6('0x6')];this[_0x03a6('0x7')]=_0x2dec1e[_0x03a6('0x7')];this[_0x03a6('0x8')]=_0x2dec1e[_0x03a6('0x7')]===_0x03a6('0x9')?_0x03a6('0xa'):_0x2dec1e[_0x03a6('0x7')];this[_0x03a6('0xb')]=_0x2dec1e['countbusyretry'];this[_0x03a6('0xc')]=_0x2dec1e[_0x03a6('0xc')];this[_0x03a6('0xd')]=_0x2dec1e[_0x03a6('0xd')];this['countglobal']=_0x2dec1e[_0x03a6('0xb')]+_0x2dec1e[_0x03a6('0xc')]+_0x2dec1e[_0x03a6('0xd')]+_0x2dec1e[_0x03a6('0xe')]+_0x2dec1e[_0x03a6('0xf')]+_0x2dec1e[_0x03a6('0x10')]+_0x2dec1e['countmachineretry']+_0x2dec1e['countagentrejectretry'];this[_0x03a6('0xe')]=_0x2dec1e[_0x03a6('0xe')];this[_0x03a6('0xf')]=_0x2dec1e[_0x03a6('0xf')];this['countabandonedretry']=_0x2dec1e['countabandonedretry'];this[_0x03a6('0x11')]=_0x2dec1e[_0x03a6('0x11')];this[_0x03a6('0x12')]=_0x2dec1e[_0x03a6('0x12')];this[_0x03a6('0x13')]=_0x3827b9['uniqueid'];this[_0x03a6('0x14')]=_0x2dec1e[_0x03a6('0x15')];this[_0x03a6('0x16')]=_0x2dec1e[_0x03a6('0x17')];this['starttime']=_0x2dec1e[_0x03a6('0x18')];this[_0x03a6('0x19')]=_0x2dec1e[_0x03a6('0x19')];this[_0x03a6('0x1a')]=_0x2dec1e[_0x03a6('0x1a')];this[_0x03a6('0x1b')]=moment()['format'](_0x03a6('0x1c'));this[_0x03a6('0x1d')]=getSeconds(_0x2dec1e[_0x03a6('0x19')],_0x2dec1e['starttime']);this[_0x03a6('0x1e')]=getSeconds(_0x2dec1e[_0x03a6('0x1a')],_0x2dec1e[_0x03a6('0x19')]);this['talktime']=getSeconds(this[_0x03a6('0x1b')],_0x2dec1e[_0x03a6('0x1a')]);this[_0x03a6('0xa')]=_0x3827b9[_0x03a6('0xa')];this[_0x03a6('0x1f')]=_0x3827b9['membername'];this[_0x03a6('0x20')]=_0x3827b9[_0x03a6('0x20')];this['callback']=_0x2dec1e[_0x03a6('0x21')];this[_0x03a6('0x22')]=_0x2dec1e['callbackuniqueid'];this[_0x03a6('0x23')]=_0x2dec1e[_0x03a6('0x23')];this[_0x03a6('0x24')]=_0x2dec1e[_0x03a6('0x24')];this[_0x03a6('0x25')]=_0x2dec1e['ContactId'];this[_0x03a6('0x26')]=_0x2dec1e[_0x03a6('0x26')];this['UserId']=_0x2dec1e[_0x03a6('0x27')];this['VoiceQueueId']=_0x2dec1e[_0x03a6('0x28')];this[_0x03a6('0x29')]=_0x2dec1e['CampaignId'];this[_0x03a6('0x2a')]=_0x2dec1e[_0x03a6('0x2a')]||'';this[_0x03a6('0x2b')]=_0x2dec1e[_0x03a6('0x2b')]||'';}module[_0x03a6('0x2c')]=AgentComplete;
\ No newline at end of file
index bb53af4..464039c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfe8=['countagentrejectretry','countabandonedretry','countmachineretry','calleridname','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','lodash','milliseconds','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry'];(function(_0x5d1ed3,_0x56a960){var _0x26dda5=function(_0x3eee29){while(--_0x3eee29){_0x5d1ed3['push'](_0x5d1ed3['shift']());}};_0x26dda5(++_0x56a960);}(_0xbfe8,0x1b9));var _0x8bfe=function(_0x32d231,_0x1ef030){_0x32d231=_0x32d231-0x0;var _0x46411b=_0xbfe8[_0x32d231];return _0x46411b;};'use strict';var util=require('util');var _=require(_0x8bfe('0x0'));var moment=require('moment');function getSeconds(_0x1fd32c,_0x39d664){var _0x56fddf=moment(_0x1fd32c)['milliseconds'](0x0);var _0x101fc1=moment(_0x39d664)[_0x8bfe('0x1')](0x0);return _0x56fddf['diff'](_0x101fc1,_0x8bfe('0x2'));}function Final(_0x1deab0){this[_0x8bfe('0x3')]=_0x1deab0['uniqueid'];this[_0x8bfe('0x4')]=_0x1deab0[_0x8bfe('0x4')];this[_0x8bfe('0x5')]=_0x1deab0[_0x8bfe('0x5')];this[_0x8bfe('0x6')]=_0x1deab0[_0x8bfe('0x5')]===_0x8bfe('0x7')?_0x8bfe('0x8'):_0x1deab0[_0x8bfe('0x5')];this[_0x8bfe('0x9')]=_0x1deab0[_0x8bfe('0x9')];this[_0x8bfe('0xa')]=_0x1deab0[_0x8bfe('0xa')];this[_0x8bfe('0xb')]=_0x1deab0[_0x8bfe('0xb')];this['countglobal']=_0x1deab0[_0x8bfe('0x9')]+_0x1deab0['countcongestionretry']+_0x1deab0[_0x8bfe('0xb')]+_0x1deab0[_0x8bfe('0xc')]+_0x1deab0[_0x8bfe('0xd')]+_0x1deab0['countabandonedretry']+_0x1deab0['countmachineretry']+_0x1deab0[_0x8bfe('0xe')];this[_0x8bfe('0xc')]=_0x1deab0[_0x8bfe('0xc')];this[_0x8bfe('0xd')]=_0x1deab0[_0x8bfe('0xd')];this['countabandonedretry']=_0x1deab0[_0x8bfe('0xf')];this[_0x8bfe('0x10')]=_0x1deab0['countmachineretry'];this[_0x8bfe('0xe')]=_0x1deab0[_0x8bfe('0xe')];this[_0x8bfe('0x8')]=_0x1deab0['queue'];this['calleridname']=_0x1deab0[_0x8bfe('0x11')];this['calleridnum']=_0x1deab0['calleridnum'];this[_0x8bfe('0x12')]=_0x1deab0[_0x8bfe('0x12')];this[_0x8bfe('0x13')]=_0x1deab0[_0x8bfe('0x13')];this[_0x8bfe('0x14')]=_0x1deab0[_0x8bfe('0x13')];this[_0x8bfe('0x15')]=_0x1deab0['ringtime']||0x0;this[_0x8bfe('0x16')]=_0x1deab0['holdtime']||0x0;this[_0x8bfe('0x17')]=_0x1deab0[_0x8bfe('0x17')]||0x0;this[_0x8bfe('0x18')]=_0x1deab0['callback'];this['callbackuniqueid']=_0x1deab0[_0x8bfe('0x19')];this['callbackat']=_0x1deab0['callbackat'];this[_0x8bfe('0x1a')]=_0x1deab0['recallme'];this[_0x8bfe('0x1b')]=_0x1deab0['ContactId'];this[_0x8bfe('0x1c')]=_0x1deab0[_0x8bfe('0x1c')];this[_0x8bfe('0x1d')]=_0x1deab0[_0x8bfe('0x1d')];this['VoiceQueueId']=_0x1deab0[_0x8bfe('0x1e')];this[_0x8bfe('0x1f')]=_0x1deab0['CampaignId'];this[_0x8bfe('0x20')]=_0x1deab0[_0x8bfe('0x20')]||'';this[_0x8bfe('0x21')]=_0x1deab0[_0x8bfe('0x21')]||'';}module[_0x8bfe('0x22')]=Final;
\ No newline at end of file
+var _0x207c=['countdropretry','calleridname','calleridnum','starttime','responsetime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','lodash','moment','milliseconds','diff','uniqueid','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry'];(function(_0x35bcfe,_0x1a22fc){var _0x202ad0=function(_0x1c90ad){while(--_0x1c90ad){_0x35bcfe['push'](_0x35bcfe['shift']());}};_0x202ad0(++_0x1a22fc);}(_0x207c,0x1e8));var _0xc207=function(_0x972692,_0x2a1c56){_0x972692=_0x972692-0x0;var _0x542e84=_0x207c[_0x972692];return _0x542e84;};'use strict';var util=require('util');var _=require(_0xc207('0x0'));var moment=require(_0xc207('0x1'));function getSeconds(_0x1a420a,_0xaaba3d){var _0x2b40be=moment(_0x1a420a)[_0xc207('0x2')](0x0);var _0x1dd107=moment(_0xaaba3d)['milliseconds'](0x0);return _0x2b40be[_0xc207('0x3')](_0x1dd107,'seconds');}function Final(_0x5a727b){this['uniqueid']=_0x5a727b[_0xc207('0x4')];this[_0xc207('0x5')]=_0x5a727b[_0xc207('0x5')];this['type']=_0x5a727b[_0xc207('0x6')];this[_0xc207('0x7')]=_0x5a727b[_0xc207('0x6')]==='outbound'?_0xc207('0x8'):_0x5a727b[_0xc207('0x6')];this[_0xc207('0x9')]=_0x5a727b[_0xc207('0x9')];this[_0xc207('0xa')]=_0x5a727b[_0xc207('0xa')];this['countnoanswerretry']=_0x5a727b['countnoanswerretry'];this['countglobal']=_0x5a727b[_0xc207('0x9')]+_0x5a727b['countcongestionretry']+_0x5a727b[_0xc207('0xb')]+_0x5a727b[_0xc207('0xc')]+_0x5a727b['countdropretry']+_0x5a727b[_0xc207('0xd')]+_0x5a727b[_0xc207('0xe')]+_0x5a727b[_0xc207('0xf')];this[_0xc207('0xc')]=_0x5a727b[_0xc207('0xc')];this['countdropretry']=_0x5a727b[_0xc207('0x10')];this[_0xc207('0xd')]=_0x5a727b[_0xc207('0xd')];this[_0xc207('0xe')]=_0x5a727b['countmachineretry'];this['countagentrejectretry']=_0x5a727b['countagentrejectretry'];this[_0xc207('0x8')]=_0x5a727b[_0xc207('0x8')];this[_0xc207('0x11')]=_0x5a727b[_0xc207('0x11')];this['calleridnum']=_0x5a727b[_0xc207('0x12')];this[_0xc207('0x13')]=_0x5a727b[_0xc207('0x13')];this['responsetime']=_0x5a727b[_0xc207('0x14')];this['endtime']=_0x5a727b[_0xc207('0x14')];this[_0xc207('0x15')]=_0x5a727b[_0xc207('0x15')]||0x0;this[_0xc207('0x16')]=_0x5a727b[_0xc207('0x16')]||0x0;this[_0xc207('0x17')]=_0x5a727b[_0xc207('0x17')]||0x0;this[_0xc207('0x18')]=_0x5a727b[_0xc207('0x18')];this[_0xc207('0x19')]=_0x5a727b[_0xc207('0x19')];this[_0xc207('0x1a')]=_0x5a727b[_0xc207('0x1a')];this['recallme']=_0x5a727b[_0xc207('0x1b')];this['ContactId']=_0x5a727b[_0xc207('0x1c')];this[_0xc207('0x1d')]=_0x5a727b[_0xc207('0x1d')];this[_0xc207('0x1e')]=_0x5a727b[_0xc207('0x1e')];this[_0xc207('0x1f')]=_0x5a727b[_0xc207('0x1f')];this[_0xc207('0x20')]=_0x5a727b[_0xc207('0x20')];this[_0xc207('0x21')]=_0x5a727b[_0xc207('0x21')]||'';this[_0xc207('0x22')]=_0x5a727b[_0xc207('0x22')]||'';}module[_0xc207('0x23')]=Final;
\ No newline at end of file
index 6f04970..cb3b0d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63d4=['starttime','responsetime','endtime','YYYY-MM-DD\x20HH:mm:ss','holdtime','talktime','membername','IVR','reason','cause-txt','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','util','lodash','moment','milliseconds','seconds','state','statedesc','Answer','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','uniqueid','calleridname','calleridnum','number'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x63d4,0xc3));var _0x463d=function(_0x1574b4,_0x2a15f5){_0x1574b4=_0x1574b4-0x0;var _0x1cb660=_0x63d4[_0x1574b4];return _0x1cb660;};'use strict';var util=require(_0x463d('0x0'));var _=require(_0x463d('0x1'));var moment=require(_0x463d('0x2'));function getSeconds(_0x6b09fb,_0x4e5e4f){var _0x22f192=moment(_0x6b09fb)['milliseconds'](0x0);var _0xc6dc8e=moment(_0x4e5e4f)[_0x463d('0x3')](0x0);return _0x22f192['diff'](_0xc6dc8e,_0x463d('0x4'));}function Hangup(_0x24fd2d,_0x1d1560){this[_0x463d('0x5')]=0x4;this[_0x463d('0x6')]=_0x463d('0x7');this['scheduledat']=_0x24fd2d[_0x463d('0x8')];this[_0x463d('0x9')]=_0x24fd2d[_0x463d('0x9')];this[_0x463d('0xa')]=_0x24fd2d[_0x463d('0x9')]==='outbound'?_0x463d('0xb'):_0x24fd2d[_0x463d('0x9')];this[_0x463d('0xc')]=_0x24fd2d[_0x463d('0xc')];this[_0x463d('0xd')]=_0x24fd2d[_0x463d('0xd')];this[_0x463d('0xe')]=_0x24fd2d[_0x463d('0xe')];this[_0x463d('0xf')]=_0x24fd2d['countbusyretry']+_0x24fd2d[_0x463d('0xd')]+_0x24fd2d['countnoanswerretry']+_0x24fd2d[_0x463d('0x10')]+_0x24fd2d[_0x463d('0x11')]+_0x24fd2d['countabandonedretry']+_0x24fd2d[_0x463d('0x12')]+_0x24fd2d[_0x463d('0x13')];this[_0x463d('0x10')]=_0x24fd2d[_0x463d('0x10')];this[_0x463d('0x11')]=_0x24fd2d[_0x463d('0x11')];this[_0x463d('0x14')]=_0x24fd2d[_0x463d('0x14')];this[_0x463d('0x12')]=_0x24fd2d[_0x463d('0x12')];this[_0x463d('0x13')]=_0x24fd2d[_0x463d('0x13')];this['uniqueid']=_0x1d1560[_0x463d('0x15')];this[_0x463d('0x16')]=_0x24fd2d['name'];this[_0x463d('0x17')]=_0x24fd2d[_0x463d('0x18')];this[_0x463d('0x19')]=_0x24fd2d[_0x463d('0x19')];this[_0x463d('0x1a')]=_0x24fd2d[_0x463d('0x1a')];this[_0x463d('0x1b')]=moment()['format'](_0x463d('0x1c'));this['ringtime']=getSeconds(_0x24fd2d['responsetime'],_0x24fd2d[_0x463d('0x19')]);this[_0x463d('0x1d')]=0x0;this[_0x463d('0x1e')]=getSeconds(this[_0x463d('0x1b')],_0x24fd2d['responsetime']);this['queue']=_0x24fd2d[_0x463d('0xb')];this[_0x463d('0x1f')]=_0x463d('0x20');this[_0x463d('0x21')]=_0x1d1560[_0x463d('0x22')];this[_0x463d('0x23')]=_0x24fd2d[_0x463d('0x23')];this[_0x463d('0x24')]=_0x24fd2d[_0x463d('0x24')];this['callbackat']=_0x24fd2d[_0x463d('0x25')];this[_0x463d('0x26')]=_0x24fd2d['recallme'];this[_0x463d('0x27')]=_0x24fd2d[_0x463d('0x27')];this[_0x463d('0x28')]=_0x24fd2d[_0x463d('0x28')];this[_0x463d('0x29')]=_0x24fd2d[_0x463d('0x29')];this['VoiceQueueId']=_0x24fd2d[_0x463d('0x2a')];this[_0x463d('0x2b')]=_0x24fd2d[_0x463d('0x2b')];}module['exports']=Hangup;
\ No newline at end of file
+var _0x3591=['name','calleridnum','number','starttime','responsetime','endtime','format','ringtime','queue','membername','IVR','reason','callback','callbackuniqueid','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','milliseconds','diff','seconds','statedesc','Answer','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countglobal','countnoanswerretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','uniqueid'];(function(_0x5aea23,_0x5f003){var _0x1dd080=function(_0x1913dc){while(--_0x1913dc){_0x5aea23['push'](_0x5aea23['shift']());}};_0x1dd080(++_0x5f003);}(_0x3591,0x1cd));var _0x1359=function(_0x50aa2e,_0xfbd6f0){_0x50aa2e=_0x50aa2e-0x0;var _0x5e07f0=_0x3591[_0x50aa2e];return _0x5e07f0;};'use strict';var util=require('util');var _=require('lodash');var moment=require('moment');function getSeconds(_0x1e4b96,_0x4ed7b5){var _0x2ba0c5=moment(_0x1e4b96)[_0x1359('0x0')](0x0);var _0x18e814=moment(_0x4ed7b5)[_0x1359('0x0')](0x0);return _0x2ba0c5[_0x1359('0x1')](_0x18e814,_0x1359('0x2'));}function Hangup(_0x51e917,_0x3fa7ba){this['state']=0x4;this[_0x1359('0x3')]=_0x1359('0x4');this[_0x1359('0x5')]=_0x51e917[_0x1359('0x5')];this['type']=_0x51e917[_0x1359('0x6')];this[_0x1359('0x7')]=_0x51e917[_0x1359('0x6')]===_0x1359('0x8')?'queue':_0x51e917[_0x1359('0x6')];this['countbusyretry']=_0x51e917[_0x1359('0x9')];this[_0x1359('0xa')]=_0x51e917[_0x1359('0xa')];this['countnoanswerretry']=_0x51e917['countnoanswerretry'];this[_0x1359('0xb')]=_0x51e917['countbusyretry']+_0x51e917[_0x1359('0xa')]+_0x51e917[_0x1359('0xc')]+_0x51e917['countnosuchnumberretry']+_0x51e917[_0x1359('0xd')]+_0x51e917[_0x1359('0xe')]+_0x51e917[_0x1359('0xf')]+_0x51e917[_0x1359('0x10')];this[_0x1359('0x11')]=_0x51e917[_0x1359('0x11')];this[_0x1359('0xd')]=_0x51e917[_0x1359('0xd')];this[_0x1359('0xe')]=_0x51e917[_0x1359('0xe')];this[_0x1359('0xf')]=_0x51e917[_0x1359('0xf')];this['countagentrejectretry']=_0x51e917[_0x1359('0x10')];this[_0x1359('0x12')]=_0x3fa7ba['uniqueid'];this['calleridname']=_0x51e917[_0x1359('0x13')];this[_0x1359('0x14')]=_0x51e917[_0x1359('0x15')];this[_0x1359('0x16')]=_0x51e917['starttime'];this['responsetime']=_0x51e917[_0x1359('0x17')];this[_0x1359('0x18')]=moment()[_0x1359('0x19')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x1359('0x1a')]=getSeconds(_0x51e917[_0x1359('0x17')],_0x51e917[_0x1359('0x16')]);this['holdtime']=0x0;this['talktime']=getSeconds(this[_0x1359('0x18')],_0x51e917[_0x1359('0x17')]);this[_0x1359('0x1b')]=_0x51e917[_0x1359('0x1b')];this[_0x1359('0x1c')]=_0x1359('0x1d');this[_0x1359('0x1e')]=_0x3fa7ba['cause-txt'];this[_0x1359('0x1f')]=_0x51e917[_0x1359('0x1f')];this[_0x1359('0x20')]=_0x51e917[_0x1359('0x20')];this['callbackat']=_0x51e917['callbackat'];this[_0x1359('0x21')]=_0x51e917['recallme'];this[_0x1359('0x22')]=_0x51e917[_0x1359('0x22')];this[_0x1359('0x23')]=_0x51e917[_0x1359('0x23')];this[_0x1359('0x24')]=_0x51e917[_0x1359('0x24')];this['VoiceQueueId']=_0x51e917[_0x1359('0x25')];this['CampaignId']=_0x51e917[_0x1359('0x26')];}module[_0x1359('0x27')]=Hangup;
\ No newline at end of file
index 9af802e..5b907aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9594=['countcongestionretry','countnoanswerretry','countbusyretry','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','calleridname','calleridnum','number','starttime','responsetime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','seconds','uniqueid','scheduledat','type','campaigntype','outbound'];(function(_0x17ce97,_0x42af59){var _0x2f5d7e=function(_0x2be025){while(--_0x2be025){_0x17ce97['push'](_0x17ce97['shift']());}};_0x2f5d7e(++_0x42af59);}(_0x9594,0x11e));var _0x4959=function(_0x5b561d,_0x422b7c){_0x5b561d=_0x5b561d-0x0;var _0x431060=_0x9594[_0x5b561d];return _0x431060;};'use strict';var util=require(_0x4959('0x0'));var _=require(_0x4959('0x1'));var moment=require(_0x4959('0x2'));function getSeconds(_0x897ed8,_0x51f910){var _0x8936e5=moment(_0x897ed8)[_0x4959('0x3')](0x0);var _0x337339=moment(_0x51f910)[_0x4959('0x3')](0x0);return _0x8936e5['diff'](_0x337339,_0x4959('0x4'));}function History(_0x5aec26){this[_0x4959('0x5')]=_0x5aec26['uniqueid'];this[_0x4959('0x6')]=_0x5aec26[_0x4959('0x6')]||undefined;this[_0x4959('0x7')]=_0x5aec26[_0x4959('0x7')];this[_0x4959('0x8')]=_0x5aec26[_0x4959('0x7')]===_0x4959('0x9')?'queue':_0x5aec26[_0x4959('0x7')];this['countbusyretry']=_0x5aec26['countbusyretry'];this[_0x4959('0xa')]=_0x5aec26[_0x4959('0xa')];this[_0x4959('0xb')]=_0x5aec26[_0x4959('0xb')];this['countglobal']=_0x5aec26[_0x4959('0xc')]+_0x5aec26['countcongestionretry']+_0x5aec26[_0x4959('0xb')]+_0x5aec26[_0x4959('0xd')]+_0x5aec26['countdropretry']+_0x5aec26[_0x4959('0xe')]+_0x5aec26[_0x4959('0xf')]+_0x5aec26[_0x4959('0x10')];this[_0x4959('0xd')]=_0x5aec26[_0x4959('0xd')];this[_0x4959('0x11')]=_0x5aec26[_0x4959('0x11')];this[_0x4959('0xe')]=_0x5aec26['countabandonedretry'];this[_0x4959('0xf')]=_0x5aec26['countmachineretry'];this['countagentrejectretry']=_0x5aec26[_0x4959('0x10')];this['queue']=_0x5aec26['queue'];this[_0x4959('0x12')]=_0x5aec26['name'];this[_0x4959('0x13')]=_0x5aec26[_0x4959('0x14')];this[_0x4959('0x15')]=_0x5aec26[_0x4959('0x15')];this['responsetime']=_0x5aec26['responsetime'];this['endtime']=_0x5aec26[_0x4959('0x16')];this[_0x4959('0x17')]=getSeconds(_0x5aec26[_0x4959('0x16')],_0x5aec26['starttime']);this[_0x4959('0x18')]=0x0;this[_0x4959('0x19')]=0x0;this[_0x4959('0x1a')]=_0x5aec26[_0x4959('0x1a')];this['callbackuniqueid']=_0x5aec26[_0x4959('0x1b')];this[_0x4959('0x1c')]=_0x5aec26['callbackat'];this['recallme']=_0x5aec26['recallme'];this[_0x4959('0x1d')]=_0x5aec26[_0x4959('0x1d')];this[_0x4959('0x1e')]=_0x5aec26[_0x4959('0x1e')];this[_0x4959('0x1f')]=_0x5aec26['UserId'];this[_0x4959('0x20')]=_0x5aec26['VoiceQueueId'];this[_0x4959('0x21')]=_0x5aec26[_0x4959('0x21')];this[_0x4959('0x22')]=_0x5aec26[_0x4959('0x22')]||'';this['originatecalleridname']=_0x5aec26[_0x4959('0x23')]||'';}module[_0x4959('0x24')]=History;
\ No newline at end of file
+var _0xf41d=['util','lodash','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countdropretry','countabandonedretry','countmachineretry','countnosuchnumberretry','countagentrejectretry','queue','calleridname','name','calleridnum','number','starttime','responsetime','endtime','ringtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname'];(function(_0x2d7daa,_0x3698e0){var _0x119a17=function(_0x4f717a){while(--_0x4f717a){_0x2d7daa['push'](_0x2d7daa['shift']());}};_0x119a17(++_0x3698e0);}(_0xf41d,0x78));var _0xdf41=function(_0xe51e93,_0x232c25){_0xe51e93=_0xe51e93-0x0;var _0x59f47c=_0xf41d[_0xe51e93];return _0x59f47c;};'use strict';var util=require(_0xdf41('0x0'));var _=require(_0xdf41('0x1'));var moment=require(_0xdf41('0x2'));function getSeconds(_0x4fc8cd,_0x23afe6){var _0x228379=moment(_0x4fc8cd)['milliseconds'](0x0);var _0x2cc4d1=moment(_0x23afe6)[_0xdf41('0x3')](0x0);return _0x228379[_0xdf41('0x4')](_0x2cc4d1,_0xdf41('0x5'));}function History(_0x224c03){this[_0xdf41('0x6')]=_0x224c03[_0xdf41('0x6')];this[_0xdf41('0x7')]=_0x224c03['scheduledat']||undefined;this[_0xdf41('0x8')]=_0x224c03[_0xdf41('0x8')];this[_0xdf41('0x9')]=_0x224c03[_0xdf41('0x8')]===_0xdf41('0xa')?'queue':_0x224c03[_0xdf41('0x8')];this[_0xdf41('0xb')]=_0x224c03[_0xdf41('0xb')];this[_0xdf41('0xc')]=_0x224c03[_0xdf41('0xc')];this[_0xdf41('0xd')]=_0x224c03[_0xdf41('0xd')];this[_0xdf41('0xe')]=_0x224c03[_0xdf41('0xb')]+_0x224c03[_0xdf41('0xc')]+_0x224c03[_0xdf41('0xd')]+_0x224c03['countnosuchnumberretry']+_0x224c03[_0xdf41('0xf')]+_0x224c03[_0xdf41('0x10')]+_0x224c03[_0xdf41('0x11')]+_0x224c03['countagentrejectretry'];this[_0xdf41('0x12')]=_0x224c03[_0xdf41('0x12')];this[_0xdf41('0xf')]=_0x224c03['countdropretry'];this[_0xdf41('0x10')]=_0x224c03[_0xdf41('0x10')];this['countmachineretry']=_0x224c03[_0xdf41('0x11')];this['countagentrejectretry']=_0x224c03[_0xdf41('0x13')];this[_0xdf41('0x14')]=_0x224c03[_0xdf41('0x14')];this[_0xdf41('0x15')]=_0x224c03[_0xdf41('0x16')];this[_0xdf41('0x17')]=_0x224c03[_0xdf41('0x18')];this['starttime']=_0x224c03[_0xdf41('0x19')];this[_0xdf41('0x1a')]=_0x224c03[_0xdf41('0x1a')];this[_0xdf41('0x1b')]=_0x224c03['responsetime'];this[_0xdf41('0x1c')]=getSeconds(_0x224c03[_0xdf41('0x1a')],_0x224c03[_0xdf41('0x19')]);this['holdtime']=0x0;this[_0xdf41('0x1d')]=0x0;this[_0xdf41('0x1e')]=_0x224c03[_0xdf41('0x1e')];this[_0xdf41('0x1f')]=_0x224c03[_0xdf41('0x1f')];this[_0xdf41('0x20')]=_0x224c03[_0xdf41('0x20')];this[_0xdf41('0x21')]=_0x224c03['recallme'];this[_0xdf41('0x22')]=_0x224c03[_0xdf41('0x22')];this[_0xdf41('0x23')]=_0x224c03[_0xdf41('0x23')];this[_0xdf41('0x24')]=_0x224c03['UserId'];this['VoiceQueueId']=_0x224c03[_0xdf41('0x25')];this['CampaignId']=_0x224c03['CampaignId'];this[_0xdf41('0x26')]=_0x224c03[_0xdf41('0x26')]||'';this[_0xdf41('0x27')]=_0x224c03['originatecalleridname']||'';}module['exports']=History;
\ No newline at end of file
index af83e69..caf58c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4de7=['campaigns','agents','trunks','maxNumberOriginate','channels','contactsId','uniqueId','optionPredictive','startPredictive','agentconnect','syncAgentConnect','syncQueueCallerAbandon','bind','originateresponse','custom:queuesummary','hangup','syncHangup','newexten','syncNewExten','varset','syncVarSet','queuemember','syncQueueMember','loopCampaigns','loopClearZombieChannels','isUndefined','message','AGENTS_NOT_LOGGED','name','NOT_ACTIVE','\x20NOT\x20Active','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','Interval','Intervals','[ifTime][Action]','stringify','milliseconds','seconds','answered','available','loggedIn','sumDuration','sumHoldTime','talking','total','type','unmanaged','abandoned','waiting','loggedInDb','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','erlangCallToSecond','erlangAbandonmentRate','startProgressive','Trunk','active','callerid','format','voice:queue:%s','ivr','campaign:ivr:%s','campaign:save','isEmpty','info','-----\x20Stats\x20Predictive\x20---','Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangBusyFactor','merge','diff','handlePredictive','outbound','preview','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','error','inspect','length','originated','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','[decremetOriginate]\x20is\x20null\x20or\x20undefined','contactsRescheduled','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','contacts','AVAILABLE_CONTACTS_FINISHED','[getContactDialer2][Empty]','sendMessageOneNotActive','pTalking','IS_DISACTIVED','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20disactive','state','statedesc','endtime','[uniqueid]','clearZombieChannels','actions','isNil','Action','status','channel','catch','updateOriginated','[Dialer][checkChannel]','queue','[Dialer][checkChannel][ivr]','resolve','countReScheduled','[countReScheduled]\x20','checkIsBlackList','then','[checkIsBlackListIvr]\x20','rescheduleContact','[rescheduleContact]\x20','[unlockContact]\x20','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','loggerHandler','emptyContact','notFound','ContactId','UserId','VoiceQueueId','CampaignId','[emptyContact][createHistory]','[emptyContact]','isSuccess','SIP/%s','unmonitored','saveInDb','uniqueid','variable','exten','xcally-motion-dialer','dialAMDActive','HANGUP','HangupInAMD','membername','custom:amd','buildObj','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','MACHINE','Machine','countglobal','amd','emit','[syncAgentComplete][createHistory][0]','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','dialMachineRetryFrequency','minutes','YYYY-MM-DD\x20HH:mm:ss','ListId','value','AMD','[syncHangupInAMDIvr]','countagentrejectretry','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','[syncHangupIvr]','dialQueueProject','AnswerAGI','AGI','cause-txt','syncAgentComplete','reason','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','[syncAgentComplete]','answertime','queueCallerAbandonCreateState','[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','dialQueueTimeout','Drop','TIMEOUT','dialDropMaxRetry','add','[rescheduleContact][Drop]','starttime','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','Abandoned','CALLEREXIT','dialAbandonedRetryFrequency','[syncAgentComplete][createHistory][11]','strategy','roundrobin','actionid','stateinterface','locked','queueBooked','push','pick','idHopper','paused','[unlockQueueStatus][undefined]','queueStatusComplete','[booked][unlockQueueStatus]','syncQueueStatusComplete','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','queueBookedRR','_rr','unlockRR','Agent:\x20','contactAgent-idHopper:\x20','[booked][RR][finaly]','[booked][unlock]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','syncCampaigns','checkIsTrunkReachable','isTrunkReachable','TrunkBackup','\x20trunk\x20is\x20not\x20reachable','checkIfTime','checkIfTimeIntervals','ifTime','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','Failure','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','command','iftime\x20%s,%s','content','indexOf','true','timezones','all','some','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','dialMethod','progressive','handlePower','method\x20not\x20recognized','handleIvr','dialActive','dialGlobalInterval','dialTimezone','[syncQueueSummary]','[syncCampaigns]','\x5cw{0,','pow','random','actionOriginate','object','originate','voiceQueue\x20is\x20undefine','phone','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','ACTIVE','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','XMD-CAMPAIGNID','Contact','tags','createdAt','XMD-','toUpper','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','originatecalleridnum','SIP/%s/%s%s','trim','dialCutDigit','substring','from-sip','OriginateError','[originate][error]','Error','originate\x20action\x20Error','syncOriginateResponse','callProgressDetecting','checkRetriveMax','dialNoAnswerMaxRetry','dialBusyMaxRetry','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','dialCongestionRetryFrequency','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialDropRetryFrequency','dialAbandonedMaxRetry','[rescheduleContact][Abandoned]','[rescheduleContact][Machine]','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','entity\x20is\x20undefine','evt\x20is\x20undefine','outboundNoSuchCallsDay','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','dialNoSuchNumberMaxRetry','reason\x200\x20no\x20such\x20number....','NoAnswer','custom:agentnoanswer','noanswer','reason\x203\x20ringing\x20no\x20answer','Busy','custom:agentbusy','busy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','Congestion','custom:agentcongestion','congestion','[syncAgentComplete][createHistory][8]','outboundAbandonedCallsDay','reason\x2011\x20abandoned','custom:agentreject','agentreject','[syncAgentComplete][createHistory][20]','dialAgentRejectMaxRetry','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','[callProgressDetecting]','Success','dialPredictiveOptimizationPercentage','round','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','erlangCalls','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','averageHandleTime','getDataPredictive','startMethodPredictive','Predictive\x20after\x20first\x20interval','dialPredictiveInterval','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20more\x20than\x20threshold\x20(','agentBusyFactor','busyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','getDataPredictiveOld','outboundQueuePauses','[CatchErlangB]','one\x20call\x20every:','[handlePredictive]','fail\x20to\x20scheduled\x20calls','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','queuestatus','[booked][checkContactBlack][else]','[unlockOriginate][syncQueueStatusComplete]','scheduledat','Agent','run','unlockContact','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALLFAILEDTIMEOUT','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','BLACKLIST','Blacklist','[Originate][historyBlacklist]','inBlackList','dialOrderByScheduledAt','RUNNING','ivrTotalCallsDays','checkIsBlackListIvr','Contact.phone','checkContactBlack','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','not_inuse','reachable','[actionOriginate]\x20','[getContactDialer2]','tryOriginatePredictive','[handlePredictive][limitChannel]','[getContactDialerPredictive]','abandonmentRate','--------\x20Drop\x20Rate\x20--------','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','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','p\x20=\x20','interval\x20=\x20','Amax\x20=\x20','----\x20Agent\x20Busy\x20Factor\x20----','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','Ts\x20=\x20','Umin\x20=\x20','exports','util','bluebird','uuid','moment','md5','ioredis','../../../config/environment/','../../../config/logger','dialer','booked','predictive','predictiveCalls','syncQueueSummary','../ami','redis','defaults','localhost','../rpc/cmHopper','../rpc/cmHopperBlack','../rpc/voiceQueueRt','./action','./history','./final','./agentComplete','./hangup','XCALLY_IP_AGI','127.0.0.1','rrmemory','prototype','enqueue','tail','finally','sequence','voiceQueues'];(function(_0x1ac77b,_0x10ee7a){var _0x161584=function(_0x5a810d){while(--_0x5a810d){_0x1ac77b['push'](_0x1ac77b['shift']());}};_0x161584(++_0x10ee7a);}(_0x4de7,0x1f3));var _0x74de=function(_0x267990,_0x50235b){_0x267990=_0x267990-0x0;var _0x334526=_0x4de7[_0x267990];return _0x334526;};'use strict';var util=require(_0x74de('0x0'));var _=require('lodash');var BPromise=require(_0x74de('0x1'));var uuid=require(_0x74de('0x2'));var moment=require(_0x74de('0x3'));var rr=require('rr');var md5=require(_0x74de('0x4'));var Redis=require(_0x74de('0x5'));var ut=require('../preview/util/util');var config=require(_0x74de('0x6'));var logger=require(_0x74de('0x7'))(_0x74de('0x8'));var loggerBooked=require('../../../config/logger')(_0x74de('0x9'));var loggerPredictive=require(_0x74de('0x7'))(_0x74de('0xa'));var loggerPredictiveCalls=require(_0x74de('0x7'))(_0x74de('0xb'));var loggerSyncQueueSummary=require(_0x74de('0x7'))(_0x74de('0xc'));var ami=require(_0x74de('0xd'));config[_0x74de('0xe')]=_[_0x74de('0xf')](config['redis'],{'host':_0x74de('0x10'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x74de('0xe')]));var cmHopper=require(_0x74de('0x11'));var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperBlack=require(_0x74de('0x12'));var voiceQueueRt=require(_0x74de('0x13'));var Action=require(_0x74de('0x14'));var History=require(_0x74de('0x15'));var Final=require(_0x74de('0x16'));var AgentComplete=require(_0x74de('0x17'));var QueueCallerAbandon=require('./queueCallerAbandon');var Hangup=require(_0x74de('0x18'));var ipAgi=process['env'][_0x74de('0x19')]||_0x74de('0x1a');var strategy={'rrmemory':_0x74de('0x1b'),'roundrobin':'roundrobin'};var Sequence=function(){};Sequence[_0x74de('0x1c')][_0x74de('0x1d')]=function(_0x560c60){this[_0x74de('0x1e')]=this[_0x74de('0x1e')]?this[_0x74de('0x1e')][_0x74de('0x1f')](_0x560c60):_0x560c60();};function Dialer(_0x380c9c,_0xc337af){this[_0x74de('0x20')]=new Sequence();this['preview']=_0xc337af;this['voiceQueues']=_0x380c9c[_0x74de('0x21')];this[_0x74de('0x22')]=_0x380c9c[_0x74de('0x22')];this[_0x74de('0x23')]=_0x380c9c[_0x74de('0x23')];this[_0x74de('0x24')]=_0x380c9c['trunks'];this[_0x74de('0x25')]=config[_0x74de('0x25')]||0x2;this[_0x74de('0x26')]={};this['actions']={};this[_0x74de('0x27')]={};this[_0x74de('0x28')]={};this[_0x74de('0x29')]={};this[_0x74de('0x2a')]={};this['startProgressive']={};this['ivrOriginated']={};this['queueBooked']={};this['queueBookedRR']={};ami['on'](_0x74de('0x2b'),this[_0x74de('0x2c')]['bind'](this));ami['on']('queuecallerabandon',this[_0x74de('0x2d')][_0x74de('0x2e')](this));ami['on'](_0x74de('0x2f'),this['syncOriginateResponse']['bind'](this));ami['on']('agentcomplete',this['syncAgentComplete'][_0x74de('0x2e')](this));ami['on'](_0x74de('0x30'),this[_0x74de('0xc')][_0x74de('0x2e')](this));ami['on'](_0x74de('0x31'),this[_0x74de('0x32')][_0x74de('0x2e')](this));ami['on'](_0x74de('0x33'),this[_0x74de('0x34')][_0x74de('0x2e')](this));ami['on'](_0x74de('0x35'),this[_0x74de('0x36')][_0x74de('0x2e')](this));ami['on'](_0x74de('0x37'),this[_0x74de('0x38')][_0x74de('0x2e')](this));ami['on']('queuestatuscomplete',this['syncQueueStatusComplete'][_0x74de('0x2e')](this));this[_0x74de('0x39')]();this[_0x74de('0x3a')]();}function isNotNull(_0x5766e2){return _0x5766e2!==null&&!_[_0x74de('0x3b')](_0x5766e2);}function checkIsLoggedIn(_0x144e73,_0x4f70e2){return function(){if(_0x4f70e2<=0x0){_0x144e73[_0x74de('0x3c')]=_0x74de('0x3d');throw _0x144e73[_0x74de('0x3e')]+'\x20AGENTS\x20NOT\x20LOGGED';}};}function isActive(_0x3193e1){return _0x3193e1;}function checkIsActive(_0x226e8d,_0x39c45c){return function(){if(!isActive(_0x39c45c)){_0x226e8d[_0x74de('0x3c')]=_0x74de('0x3f');throw _0x226e8d[_0x74de('0x3e')]+_0x74de('0x40');}};}function checkInterval(_0x47d140){return function(){if(!isNotNull(_0x47d140['Interval'])){_0x47d140[_0x74de('0x3c')]=_0x74de('0x41');throw _0x47d140[_0x74de('0x3e')]+_0x74de('0x42');}if(!isNotNull(_0x47d140[_0x74de('0x43')][_0x74de('0x44')])){_0x47d140[_0x74de('0x3c')]='INTERVAL_IS_NULL';throw _0x47d140[_0x74de('0x3e')]+'\x20INTERVAL_IS_NULL';}if(!isNotNull(_['isEmpty'](_0x47d140[_0x74de('0x43')]['Intervals']))){_0x47d140[_0x74de('0x3c')]=_0x74de('0x41');throw _0x47d140[_0x74de('0x3e')]+'\x20INTERVAL_IS_NULL';}};}function msgResponse(_0x3b4778,_0xfaa91,_0x5a05bb){return{'action':_0x3b4778,'response':_0xfaa91,'message':_0x5a05bb,'stack':_0x5a05bb};}function myreject(_0x57c9fa){return function(_0x2283b1){return _0x57c9fa(msgResponse(_0x74de('0x45'),'Error',JSON[_0x74de('0x46')](_0x2283b1)));};}function getSeconds(_0x2bacf1,_0x5e0151){var _0x2c8b02=moment(_0x2bacf1)[_0x74de('0x47')](0x0);var _0x13ae0d=moment(_0x5e0151)[_0x74de('0x47')](0x0);return _0x2c8b02['diff'](_0x13ae0d,_0x74de('0x48'));}function emit(_0x4f6921,_0x3dc9fc,_0x5f2450){io['to'](_0x4f6921)['emit'](_0x3dc9fc,_0x5f2450);}function emitVoiceQueueSummary(_0xe9bea3){if(_0xe9bea3['type']==='outbound'){var _0x2cdfeb={'id':_0xe9bea3['id'],'name':_0xe9bea3[_0x74de('0x3e')],'strategy':_0xe9bea3['strategy'],'answered':_0xe9bea3[_0x74de('0x49')],'available':_0xe9bea3[_0x74de('0x4a')],'loggedIn':_0xe9bea3[_0x74de('0x4b')],'pTalking':_0xe9bea3['pTalking'],'sumBillable':_0xe9bea3['sumBillable'],'sumDuration':_0xe9bea3[_0x74de('0x4c')],'sumHoldTime':_0xe9bea3[_0x74de('0x4d')]||0x0,'talking':_0xe9bea3[_0x74de('0x4e')],'total':_0xe9bea3[_0x74de('0x4f')],'type':_0xe9bea3[_0x74de('0x50')],'unmanaged':_0xe9bea3[_0x74de('0x51')],'abandoned':_0xe9bea3[_0x74de('0x52')],'waiting':_0xe9bea3[_0x74de('0x53')],'loggedInDb':_0xe9bea3[_0x74de('0x54')],'dialActive':_0xe9bea3['dialActive'],'dialMethod':_0xe9bea3['dialMethod'],'dialOriginateCallerIdName':_0xe9bea3['dialOriginateCallerIdName'],'dialOriginateCallerIdNumber':_0xe9bea3[_0x74de('0x55')],'dialOriginateTimeout':_0xe9bea3[_0x74de('0x56')],'dialPrefix':_0xe9bea3[_0x74de('0x57')],'outboundAnswerAgiCallsDay':_0xe9bea3[_0x74de('0x58')],'outboundAnswerCallsDay':_0xe9bea3[_0x74de('0x59')],'outboundBlacklistCallsDay':_0xe9bea3[_0x74de('0x5a')],'outboundBusyCallsDay':_0xe9bea3[_0x74de('0x5b')],'outboundCongestionCallsDay':_0xe9bea3[_0x74de('0x5c')],'outboundDropCallsDayACS':_0xe9bea3[_0x74de('0x5d')],'outboundDropCallsDayCallersExit':_0xe9bea3[_0x74de('0x5e')],'outboundDropCallsDayTimeout':_0xe9bea3[_0x74de('0x5f')],'outboundNoAnswerCallsDay':_0xe9bea3[_0x74de('0x60')],'outboundNoSuchCallsDay':_0xe9bea3['outboundNoSuchCallsDay'],'outboundOriginateFailureCallsDay':_0xe9bea3[_0x74de('0x61')],'outboundReCallsDay':_0xe9bea3[_0x74de('0x62')],'outboundRejectCallsDay':_0xe9bea3[_0x74de('0x63')],'outboundUnknownCallsDay':_0xe9bea3[_0x74de('0x64')],'predictiveIntervalAnsweredCalls':_0xe9bea3[_0x74de('0x65')],'predictiveIntervalAvgHoldtime':_0xe9bea3[_0x74de('0x66')],'predictiveIntervalAvgTalktime':_0xe9bea3[_0x74de('0x67')],'predictiveIntervalDroppedCallsCallersExit':_0xe9bea3[_0x74de('0x68')],'predictiveIntervalDroppedCallsTimeout':_0xe9bea3[_0x74de('0x69')],'predictiveIntervalErlangCalls':_0xe9bea3['predictiveIntervalErlangCalls'],'predictiveIntervalErlangCallsDroppedCalls':_0xe9bea3[_0x74de('0x6a')],'predictiveIntervalHitRate':_0xe9bea3[_0x74de('0x6b')],'predictiveIntervalMultiplicativeFactor':_0xe9bea3[_0x74de('0x6c')],'predictiveIntervalPauses':_0xe9bea3[_0x74de('0x6d')],'predictiveIntervalAvailable':_0xe9bea3[_0x74de('0x6e')],'predictiveIntervalTotalCalls':_0xe9bea3[_0x74de('0x6f')],'message':_0xe9bea3['message'],'originated':_0xe9bea3['originated'],'erlangCalls':_0xe9bea3['erlangCalls'],'erlangCallToSecond':_0xe9bea3[_0x74de('0x70')],'erlangAbandonmentRate':_0xe9bea3[_0x74de('0x71')],'erlangBusyFactor':_0xe9bea3['erlangBusyFactor'],'startPredictive':_0xe9bea3['startPredictive'],'startProgressive':_0xe9bea3[_0x74de('0x72')]};if(_0xe9bea3['Trunk']){_0x2cdfeb[_0x74de('0x73')]={'id':_0xe9bea3[_0x74de('0x73')]['id'],'name':_0xe9bea3[_0x74de('0x73')]['name'],'active':_0xe9bea3[_0x74de('0x73')][_0x74de('0x74')],'callerid':_0xe9bea3[_0x74de('0x73')][_0x74de('0x75')]};}if(_0xe9bea3[_0x74de('0x43')]){_0x2cdfeb[_0x74de('0x43')]={'id':_0xe9bea3[_0x74de('0x43')]['id'],'name':_0xe9bea3[_0x74de('0x43')]['name']};}var _0x364043=md5(JSON[_0x74de('0x46')](_0x2cdfeb));if(_0xe9bea3['md5']!==_0x364043){_0xe9bea3[_0x74de('0x4')]=_0x364043;emit(util[_0x74de('0x76')](_0x74de('0x77'),_0x2cdfeb[_0x74de('0x3e')]),'voice_queue:save',_0x2cdfeb);}}}function emitCampaignSummary(_0x590422){if(_0x590422['type']===_0x74de('0x78')){emit(util[_0x74de('0x76')](_0x74de('0x79'),_0x590422[_0x74de('0x3e')]),_0x74de('0x7a'),_0x590422);}}function checkGetDataPredictive(_0x16526a){if(isNotNull(_0x16526a)&&!_[_0x74de('0x7b')](_0x16526a)){loggerPredictive[_0x74de('0x7c')](_0x74de('0x7d'));loggerPredictive['info'](_0x74de('0x7e'),_0x16526a[_0x74de('0x6f')]);loggerPredictive[_0x74de('0x7c')](_0x74de('0x7f'),_0x16526a[_0x74de('0x65')]);loggerPredictive[_0x74de('0x7c')](_0x74de('0x80'),_0x16526a[_0x74de('0x69')]);loggerPredictive[_0x74de('0x7c')](_0x74de('0x81'),_0x16526a[_0x74de('0x68')]);loggerPredictive['info']('AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x16526a[_0x74de('0x66')]);loggerPredictive[_0x74de('0x7c')]('AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x16526a[_0x74de('0x67')]);loggerPredictive[_0x74de('0x7c')](_0x74de('0x82'));if(_0x16526a[_0x74de('0x6f')]>0x0){if(!_[_0x74de('0x3b')](_0x16526a[_0x74de('0x67')])&&_0x16526a[_0x74de('0x67')]>0x0){return!![];}loggerPredictive[_0x74de('0x7c')](_0x74de('0x83'));if(!_[_0x74de('0x3b')](_0x16526a[_0x74de('0x66')])&&_0x16526a[_0x74de('0x66')]>0x0){return!![];}loggerPredictive[_0x74de('0x7c')](_0x74de('0x84'));}else{loggerPredictive[_0x74de('0x7c')]('Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive');}}else{loggerPredictive[_0x74de('0x7c')](_0x74de('0x85'));}return![];}function mergeDataErlangB(_0x5c0da1){return function(_0x27b3f5){loggerPredictive[_0x74de('0x7c')](_0x74de('0x86'));loggerPredictive[_0x74de('0x7c')](_0x74de('0x87'),_0x27b3f5['erlangCalls']);loggerPredictive[_0x74de('0x7c')](_0x74de('0x88'),_0x27b3f5[_0x74de('0x70')]);loggerPredictive[_0x74de('0x7c')](_0x74de('0x89'),_0x27b3f5['erlangAbandonmentRate']);loggerPredictive[_0x74de('0x7c')](_0x74de('0x8a'),_0x27b3f5[_0x74de('0x8b')]);loggerPredictive['info'](_0x74de('0x89'),_0x27b3f5['erlangAbandonmentRate']);loggerPredictive['info'](_0x74de('0x82'));_[_0x74de('0x8c')](_0x5c0da1,_0x27b3f5);};}function getDiff(_0xc0a61d){var _0x58cb8e=moment()[_0x74de('0x47')](0x0);var _0x1b797b=moment(_0xc0a61d)[_0x74de('0x47')](0x0);return _0x58cb8e[_0x74de('0x8d')](_0x1b797b,_0x74de('0x48'));}function ifInterval(_0x502af4,_0x28f2b9){if(_[_0x74de('0x3b')](_0x28f2b9)){return![];}return getDiff(_0x28f2b9)<_0x502af4*0x3c;}function freeVariablesPredictive(_0x406c33){if(isNotNull(_0x406c33)){if(!_['isUndefined'](_0x406c33['startProgressive'])){_0x406c33[_0x74de('0x72')]=undefined;loggerPredictive[_0x74de('0x7c')](_0x406c33[_0x74de('0x3e')],'clearing\x20variable\x20start\x20progressive');}if(!_[_0x74de('0x3b')](_0x406c33[_0x74de('0x2a')])){_0x406c33[_0x74de('0x2a')]=undefined;loggerPredictive['info'](_0x406c33[_0x74de('0x3e')],'clearing\x20variable\x20start\x20predictive');}if(!_[_0x74de('0x3b')](_0x406c33[_0x74de('0x8e')])){clearInterval(_0x406c33[_0x74de('0x8e')]);_0x406c33[_0x74de('0x8e')]=undefined;loggerPredictive[_0x74de('0x7c')](_0x406c33[_0x74de('0x3e')],'clearing\x20variable\x20handle\x20predictive');}}}function erlangb(_0x27ee1f,_0x2c4971){if(_0x2c4971===0x0){return 0x0;}var _0x4b9a5f=0x1;for(var _0x3aaffc=0x1;_0x3aaffc<=_0x2c4971;_0x3aaffc+=0x1){_0x4b9a5f=0x1+_0x4b9a5f*_0x3aaffc/_0x27ee1f;}return 0x1/_0x4b9a5f;}function isVoiceQueueOutbound(_0x2e2d6c){return _0x2e2d6c===_0x74de('0x8f');}function isNotPreview(_0x222d78){return _0x222d78!==_0x74de('0x90');}function isCampaignIvr(_0x503367){return _0x503367===_0x74de('0x78');}function getCallerId(_0x14dfff,_0x3de36f,_0x114f02){if(!_[_0x74de('0x3b')](_0x114f02)&&typeof _0x114f02===_0x74de('0x91')&&!_[_0x74de('0x7b')](_0x114f02)){if(!_['isUndefined'](_0x3de36f)&&typeof _0x3de36f==='string'&&!_[_0x74de('0x7b')](_0x3de36f)){return util[_0x74de('0x76')](_0x74de('0x92'),_0x3de36f,_0x114f02);}return util[_0x74de('0x76')](_0x74de('0x92'),_0x114f02,_0x114f02);}if(!_[_0x74de('0x3b')](_0x14dfff)&&typeof _0x14dfff===_0x74de('0x91')&&!_[_0x74de('0x7b')](_0x14dfff)){return _0x14dfff;}return _0x74de('0x93');}function loggerCatchQueueSummary(_0x4ad149,_0x2fcd73){return function(_0x352f04){freeVariablesPredictive(_0x2fcd73);emitVoiceQueueSummary(_0x2fcd73);emitCampaignSummary(_0x2fcd73);loggerSyncQueueSummary[_0x74de('0x94')](_0x4ad149,util[_0x74de('0x95')](_0x352f04,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x159357,_0x5b060f){return function(_0x4f84cd){loggerPredictive[_0x74de('0x94')](_0x5b060f[_0x74de('0x3e')],_0x159357);loggerPredictive[_0x74de('0x94')](_0x4f84cd['stack']);freeVariablesPredictive(_0x5b060f);};}function loggerCatch(_0x5ce577){return function(_0x4292bd){logger['error'](_0x5ce577,util[_0x74de('0x95')](_0x4292bd,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x4e883e){return _0x4e883e&&!_['isUndefined'](_0x4e883e)&&_0x4e883e[_0x74de('0x96')]>0x0;}function decremetOriginate(_0x2278a3){if(!_[_0x74de('0x3b')](_0x2278a3)&&_0x2278a3!==null){if(typeof _0x2278a3[_0x74de('0x97')]!==_0x74de('0x98')){if(_0x2278a3[_0x74de('0x97')]>0x0){_0x2278a3[_0x74de('0x97')]-=0x1;}else{logger['error'](_0x74de('0x99'));}}}else{logger[_0x74de('0x94')](_0x74de('0x9a'));}}function checkContactLowerLimitOriginate(_0x440079,_0x205bf5,_0x4c39e3){if(_0x205bf5>_0x4c39e3){for(var _0xedb7e0=0x0;_0xedb7e0<_0x205bf5-_0x4c39e3;_0xedb7e0+=0x1){decremetOriginate(_0x440079);}}}function loggerGetContactDialer(_0x3f84fc,_0x2fb49f,_0x311bcd){return function(_0x467b87){checkContactLowerLimitOriginate(_0x2fb49f,_0x311bcd,0x0);logger[_0x74de('0x94')](_0x3f84fc,util[_0x74de('0x95')](_0x467b87,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x835ccc){return function(_0x45093d){if(isNotNull(_0x45093d)&&isNotNull(_0x45093d[0x0])){if(_0x45093d[0x0][_0x74de('0x9b')]>0x0){_0x835ccc[_0x74de('0x3c')]=_0x74de('0x9c');logger[_0x74de('0x7c')](_0x74de('0x9d')+_0x835ccc[_0x74de('0x3e')],_0x45093d[0x0][_0x74de('0x9b')],_0x74de('0x9e'));}else{_0x835ccc[_0x74de('0x3c')]=_0x74de('0x9f');logger[_0x74de('0x7c')](_0x74de('0xa0')+_0x835ccc['name']);}}};}function notSendMessagesQueue(_0x16bd8b){if(_0x16bd8b[_0x74de('0xa1')]){freeVariablesPredictive(_0x16bd8b);if(_0x16bd8b[_0x74de('0x97')]===0x0&&_0x16bd8b[_0x74de('0x4e')]===0x0&&_0x16bd8b[_0x74de('0x53')]===0x0&&(_0x16bd8b[_0x74de('0xa2')]||0x0)===0x0){_0x16bd8b[_0x74de('0xa1')]=![];_0x16bd8b[_0x74de('0x4a')]=0x0;_0x16bd8b[_0x74de('0x3c')]='NOT_ACTIVE';loggerSyncQueueSummary['error']('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0x16bd8b[_0x74de('0x3e')],'is\x20not\x20active');}else{_0x16bd8b['message']=_0x74de('0xa3');loggerSyncQueueSummary[_0x74de('0x94')](_0x74de('0xa4'),_0x16bd8b[_0x74de('0x3e')],_0x74de('0xa5'));}emitVoiceQueueSummary(_0x16bd8b);}}function notSendMessagesCampaign(_0x1b2c02){if(_0x1b2c02[_0x74de('0xa1')]){if(_0x1b2c02['originated']===0x0){_0x1b2c02[_0x74de('0xa1')]=![];_0x1b2c02[_0x74de('0x3c')]='NOT_ACTIVE';loggerSyncQueueSummary[_0x74de('0x94')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x1b2c02[_0x74de('0x3e')],'is\x20not\x20active');}else{_0x1b2c02[_0x74de('0x3c')]='IS_DISACTIVED';loggerSyncQueueSummary[_0x74de('0x94')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x1b2c02[_0x74de('0x3e')],_0x74de('0xa5'));}emitCampaignSummary(_0x1b2c02);}}function createObjHistory(_0x57d43d,_0x9d6342,_0x524eff,_0x1ef8ab,_0x2f84ba){_0x57d43d[_0x74de('0x3c')]=_0x524eff;var _0x457f0a=new Action(_0x57d43d,_0x9d6342);var _0x25721=new History(_0x457f0a);_0x25721[_0x74de('0xa6')]=_0x1ef8ab;_0x25721[_0x74de('0xa7')]=_0x2f84ba;_0x25721[_0x74de('0xa8')]=_0x457f0a['starttime'];return _0x25721;}Dialer[_0x74de('0x1c')][_0x74de('0x3a')]=function(){var _0x255fd1=this;setInterval(function(){_0x255fd1['clearZombieChannels'](_0x255fd1['uniqueId'],_0x74de('0xa9'));_0x255fd1[_0x74de('0xaa')](_0x255fd1[_0x74de('0xab')],'[actions]');},0x32c8);};Dialer[_0x74de('0x1c')]['clearZombieChannels']=function(_0xc66941,_0x30d0d4){var _0x3155fc=this;for(var _0x1988b2 in _0xc66941){if(typeof _0xc66941[_0x1988b2]!==_0x74de('0x98')){this[_0x74de('0x20')][_0x74de('0x1d')](function(){if(!_[_0x74de('0xac')](_0xc66941[_0x1988b2])){return ami[_0x74de('0xad')]({'action':_0x74de('0xae'),'channel':_0xc66941[_0x1988b2][_0x74de('0xaf')]})[_0x74de('0xb0')](function(_0x3e62c1){if(_0x3e62c1[_0x74de('0x3c')]==='No\x20such\x20channel'){setTimeout(function(){if(_0xc66941[_0x1988b2]&&_0xc66941[_0x1988b2][_0x74de('0x50')]!=='ivr'){_0x3155fc[_0x74de('0xb1')](_0x3155fc[_0x74de('0x21')][_0xc66941[_0x1988b2]['queue']]);logger[_0x74de('0x94')](_0x74de('0xb2'),_0x30d0d4,_0x1988b2,_0xc66941[_0x1988b2][_0x74de('0xb3')]);delete _0xc66941[_0x1988b2];}if(_0xc66941[_0x1988b2]&&_0xc66941[_0x1988b2]['type']===_0x74de('0x78')){_0x3155fc[_0x74de('0xb1')](_0x3155fc[_0x74de('0x22')][_0xc66941[_0x1988b2][_0x74de('0xb3')]]);logger[_0x74de('0x94')](_0x74de('0xb4'),_0x30d0d4,_0x1988b2,_0xc66941[_0x1988b2][_0x74de('0xb3')]);delete _0xc66941[_0x1988b2];}},0x2328);}});}});}}};Dialer[_0x74de('0x1c')]['countReScheduled']=function(_0x37c52d){return BPromise[_0x74de('0xb5')]()['then'](cmHopper[_0x74de('0xb6')](_0x37c52d))[_0x74de('0xb0')](loggerCatch(_0x74de('0xb7')));};Dialer['prototype'][_0x74de('0xb8')]=function(_0x5569cf){return BPromise['resolve']()[_0x74de('0xb9')](cmHopperBlack[_0x74de('0xb8')](_0x5569cf))[_0x74de('0xb0')](loggerCatch('[checkIsBlackList]\x20'));};Dialer[_0x74de('0x1c')]['checkIsBlackListIvr']=function(_0x1b8ec5){return BPromise[_0x74de('0xb5')]()['then'](cmHopperBlack['checkIsBlackListIvr'](_0x1b8ec5))[_0x74de('0xb0')](loggerCatch(_0x74de('0xba')));};Dialer['prototype']['averageHandleTime']=function(_0x4d7a37){return BPromise[_0x74de('0xb5')]()[_0x74de('0xb9')](cmHopperHistory['avgHandleTime'](_0x4d7a37))[_0x74de('0xb0')](loggerCatch('[averageHandleTime]\x20'));};Dialer[_0x74de('0x1c')][_0x74de('0xbb')]=function(_0x1cf302){return BPromise[_0x74de('0xb5')]()[_0x74de('0xb9')](cmHopper['rescheduleContact'](_0x1cf302))[_0x74de('0xb0')](loggerCatch(_0x74de('0xbc')));};Dialer['prototype']['unlockContact']=function(_0x5e895d,_0xcadcc,_0x45a794){return BPromise[_0x74de('0xb5')]()[_0x74de('0xb9')](cmHopper['unlockContact'](_0x5e895d,_0xcadcc,_0x45a794))[_0x74de('0xb0')](loggerCatch(_0x74de('0xbd')));};Dialer['prototype']['getContactDialer']=function(_0x1ab161,_0x560512,_0x759dac,_0x39e71a,_0x443075){return BPromise[_0x74de('0xb5')]()[_0x74de('0xb9')](cmHopper[_0x74de('0xbe')](_0x1ab161,_0x560512,_0x759dac,_0x39e71a))[_0x74de('0xb0')](function(_0x7d9cb8){_0x443075[_0x74de('0xbf')]-=_0x759dac;_0x443075[_0x74de('0xbf')]=_0x443075[_0x74de('0xbf')]>0x0?_0x443075[_0x74de('0xbf')]:0x0;loggerCatch(_0x74de('0xc0'))(_0x7d9cb8);});};Dialer[_0x74de('0x1c')][_0x74de('0xc1')]=function(_0x3b398c,_0x37a4e9,_0x1dd0d9,_0x160c6a){return BPromise[_0x74de('0xb5')]()[_0x74de('0xb9')](cmHopper[_0x74de('0xc1')](_0x3b398c,_0x37a4e9,_0x1dd0d9))['catch'](function(_0xd8d046){_0x160c6a['temp']-=_0x37a4e9;_0x160c6a[_0x74de('0xbf')]=_0x160c6a['temp']>0x0?_0x160c6a[_0x74de('0xbf')]:0x0;loggerCatch(_0x74de('0xc2'))(_0xd8d046);});};Dialer['prototype'][_0x74de('0xc3')]=function(_0x629a06){return BPromise[_0x74de('0xb5')]()[_0x74de('0xb9')](voiceQueueRt[_0x74de('0xc3')](_0x629a06))[_0x74de('0xb0')](loggerCatch('[getVoiceQueueRtPauses]\x20'));};Dialer['prototype'][_0x74de('0xc4')]=function(_0x294ded){return BPromise['resolve']()[_0x74de('0xb9')](cmHopper[_0x74de('0xc4')](_0x294ded))[_0x74de('0xb0')](loggerCatch(_0x74de('0xc5')));};Dialer[_0x74de('0x1c')]['createHistory']=function(_0x2fdea5){return BPromise[_0x74de('0xb5')]()[_0x74de('0xb9')](cmHopperHistory[_0x74de('0xc6')](_0x2fdea5))[_0x74de('0xb0')](loggerCatch(_0x74de('0xc7')));};Dialer[_0x74de('0x1c')][_0x74de('0xb1')]=function(_0x3ddcb6){if(!_['isUndefined'](_0x3ddcb6)&&_0x3ddcb6!==null){if(typeof _0x3ddcb6['originated']!==_0x74de('0x98')){if(_0x3ddcb6['originated']>0x0){_0x3ddcb6[_0x74de('0x97')]-=0x1;}else{logger[_0x74de('0x94')](_0x74de('0xc8'));}}}else{logger['error']('[updateOriginated]\x20is\x20null\x20or\x20undefined');}};Dialer[_0x74de('0x1c')][_0x74de('0xc9')]=function(_0x313566,_0x247512){var _0x4a0472=this;return function(_0x31c17c){_0x4a0472[_0x74de('0xb1')](_0x247512);logger['error'](_0x313566,util['inspect'](_0x31c17c,{'showHidden':![],'depth':null}));};};Dialer[_0x74de('0x1c')][_0x74de('0xca')]=function(_0x5cea62,_0x138f75,_0x58535c){var _0x1d791c={'state':0x19,'statedesc':_0x74de('0xcb')};this[_0x74de('0xb1')](_0x138f75);this['saveInDb'](_[_0x74de('0x8c')](_0x1d791c,_['pick'](_0x58535c,[_0x74de('0xcc'),'ListId',_0x74de('0xcd'),_0x74de('0xce'),_0x74de('0xcf')])),_0x74de('0xd0'),_0x74de('0xd1'));logger[_0x74de('0x94')](_0x5cea62);};Dialer[_0x74de('0x1c')][_0x74de('0xd2')]=function(_0x1b61e6){return _0x1b61e6==='Success';};Dialer[_0x74de('0x1c')]['isTrunkReachable']=function(_0x4c4e4c){return!_[_0x74de('0x3b')](_0x4c4e4c)&&_0x4c4e4c&&!_['isUndefined'](_0x4c4e4c[_0x74de('0x3e')])&&!_['isUndefined'](_0x4c4e4c[_0x74de('0x74')])&&_0x4c4e4c[_0x74de('0x74')]&&(this[_0x74de('0x24')][util[_0x74de('0x76')](_0x74de('0xd3'),_0x4c4e4c[_0x74de('0x3e')])]['status']==='reachable'||this[_0x74de('0x24')][util[_0x74de('0x76')](_0x74de('0xd3'),_0x4c4e4c[_0x74de('0x3e')])][_0x74de('0xae')]===_0x74de('0xd4'));};Dialer['prototype'][_0x74de('0xd5')]=function(_0x18bb88,_0x1f5e9d,_0x377eaa){this[_0x74de('0xc6')](_0x18bb88)['catch'](loggerCatch(_0x1f5e9d));this[_0x74de('0xc4')](_0x18bb88)[_0x74de('0xb0')](loggerCatch(_0x377eaa));};Dialer[_0x74de('0x1c')][_0x74de('0x36')]=function(_0x5d2c2f){var _0x2c77bb=this['uniqueId'][_0x5d2c2f[_0x74de('0xd6')]];var _0x5b3232;if(!_['isNil'](_0x5d2c2f)&&!_[_0x74de('0xac')](_0x5d2c2f['variable'])&&!_[_0x74de('0xac')](_0x5d2c2f[_0x74de('0xd7')]['amdstatus'])&&_0x5d2c2f[_0x74de('0xd8')]===_0x74de('0xd9')&&_0x2c77bb){if(_0x2c77bb[_0x74de('0x50')]!==_0x74de('0x78')&&this[_0x74de('0x21')][_0x2c77bb['queue']][_0x74de('0xda')]&&_0x5d2c2f['value']===_0x74de('0xdb')){delete this[_0x74de('0x28')][_0x5d2c2f['uniqueid']];this['updateOriginated'](this['voiceQueues'][_0x2c77bb['queue']]);this[_0x74de('0x21')][_0x2c77bb[_0x74de('0xb3')]]['outboundAnswerCallsDay']+=0x1;this[_0x74de('0x21')][_0x2c77bb[_0x74de('0xb3')]]['outboundAnswerAgiCallsDay']+=0x1;_0x5b3232=new Hangup(_0x2c77bb,_0x5d2c2f);_0x5b3232[_0x74de('0xa6')]=0x12;_0x5b3232[_0x74de('0xa7')]=_0x74de('0xdc');_0x5b3232[_0x74de('0xdd')]='AMD';ami['emit'](_0x74de('0xde'),ut[_0x74de('0xdf')](_0x5b3232,'amd'));this[_0x74de('0xd5')](_0x5b3232,_0x74de('0xe0'),_0x74de('0xe1'));}if(_0x2c77bb[_0x74de('0x50')]!==_0x74de('0x78')&&this[_0x74de('0x21')][_0x2c77bb[_0x74de('0xb3')]]['dialAMDActive']&&_0x5d2c2f['value']===_0x74de('0xe2')){var _0x3237dc=this;return new BPromise(function(_0x151426,_0x58db46){delete _0x3237dc[_0x74de('0x28')][_0x5d2c2f[_0x74de('0xd6')]];_0x3237dc[_0x74de('0xb1')](_0x3237dc[_0x74de('0x21')][_0x2c77bb['queue']]);_0x3237dc[_0x74de('0x21')][_0x2c77bb[_0x74de('0xb3')]][_0x74de('0x59')]+=0x1;_0x3237dc[_0x74de('0x21')][_0x2c77bb[_0x74de('0xb3')]][_0x74de('0x58')]+=0x1;var _0x55c233=_0x3237dc[_0x74de('0x21')][_0x2c77bb[_0x74de('0xb3')]];var _0x44af51=new Hangup(_0x2c77bb,_0x5d2c2f);_0x44af51[_0x74de('0xa6')]=0x13;_0x44af51[_0x74de('0xa7')]=_0x74de('0xe3');_0x44af51[_0x74de('0xdd')]='AMD';_0x44af51['countmachineretry']+=0x1;_0x44af51[_0x74de('0xe4')]+=0x1;_0x44af51[_0x74de('0xe5')]=!![];ami[_0x74de('0xe6')]('custom:amd',ut[_0x74de('0xdf')](_0x44af51,_0x74de('0xe5')));_0x3237dc[_0x74de('0xc6')](_0x44af51)[_0x74de('0xb0')](loggerCatch(_0x74de('0xe7')));if(_0x44af51[_0x74de('0xe8')]+_0x44af51[_0x74de('0xe9')]+_0x44af51[_0x74de('0xea')]+_0x44af51[_0x74de('0xeb')]+_0x44af51[_0x74de('0xec')]+_0x44af51[_0x74de('0xed')]+_0x44af51[_0x74de('0xee')]+_0x44af51['countagentrejectretry']>=_0x55c233[_0x74de('0xef')]){_0x3237dc[_0x74de('0xf0')](_0x44af51,_0x151426,_0x58db46,_0x74de('0xf1'));}else{if(_0x44af51['countmachineretry']>=_0x55c233[_0x74de('0xf2')]){_0x3237dc[_0x74de('0xf3')](_0x44af51,_0x151426,_0x58db46,_0x74de('0xf4'));}else{_0x3237dc[_0x74de('0xbb')]({'active':![],'countmachineretry':_0x44af51[_0x74de('0xee')],'scheduledat':moment()['add'](_0x55c233[_0x74de('0xf5')],_0x74de('0xf6'))[_0x74de('0x76')](_0x74de('0xf7')),'ContactId':_0x44af51[_0x74de('0xcc')],'ListId':_0x44af51[_0x74de('0xf8')],'VoiceQueueId':_0x44af51[_0x74de('0xce')]||undefined,'CampaignId':_0x44af51[_0x74de('0xcf')]||undefined})[_0x74de('0xb0')](loggerCatch('[rescheduleContact][Machine]'));_0x151426({'reschedule':0x1});}}});}if(_0x2c77bb[_0x74de('0x50')]==='ivr'&&this[_0x74de('0x22')][_0x2c77bb[_0x74de('0xb3')]][_0x74de('0xda')]&&_0x5d2c2f[_0x74de('0xf9')]===_0x74de('0xdb')){delete this[_0x74de('0x28')][_0x5d2c2f['uniqueid']];this[_0x74de('0xb1')](this[_0x74de('0x22')][_0x2c77bb[_0x74de('0xb3')]]);_0x5b3232=new Hangup(_0x2c77bb,_0x5d2c2f);_0x5b3232['state']=0x12;_0x5b3232[_0x74de('0xa7')]=_0x74de('0xdc');_0x5b3232[_0x74de('0xdd')]=_0x74de('0xfa');ami['emit'](_0x74de('0xde'),ut[_0x74de('0xdf')](_0x5b3232,_0x74de('0xe5')));this[_0x74de('0xd5')](_0x5b3232,'[syncHangupInAMDIvr][createHistory]',_0x74de('0xfb'));}if(_0x2c77bb[_0x74de('0x50')]===_0x74de('0x78')&&this[_0x74de('0x22')][_0x2c77bb['queue']][_0x74de('0xda')]&&_0x5d2c2f[_0x74de('0xf9')]==='MACHINE'){var _0x3237dc=this;return new BPromise(function(_0x3be13f,_0x4cda29){delete _0x3237dc[_0x74de('0x28')][_0x5d2c2f[_0x74de('0xd6')]];_0x3237dc[_0x74de('0xb1')](_0x3237dc[_0x74de('0x22')][_0x2c77bb[_0x74de('0xb3')]]);_0x3237dc['campaigns'][_0x2c77bb['queue']][_0x74de('0x59')]+=0x1;_0x3237dc[_0x74de('0x22')][_0x2c77bb[_0x74de('0xb3')]][_0x74de('0x58')]+=0x1;var _0x54b661=_0x3237dc['campaigns'][_0x2c77bb[_0x74de('0xb3')]];var _0x31f27d=new Hangup(_0x2c77bb,_0x5d2c2f);_0x31f27d[_0x74de('0xa6')]=0x13;_0x31f27d[_0x74de('0xa7')]=_0x74de('0xe3');_0x31f27d[_0x74de('0xdd')]=_0x74de('0xfa');_0x31f27d['countmachineretry']+=0x1;_0x31f27d[_0x74de('0xe4')]+=0x1;_0x31f27d[_0x74de('0xe5')]=!![];ami[_0x74de('0xe6')](_0x74de('0xde'),ut[_0x74de('0xdf')](_0x31f27d,'amd'));_0x3237dc[_0x74de('0xc6')](_0x31f27d)['catch'](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x31f27d[_0x74de('0xe8')]+_0x31f27d['countcongestionretry']+_0x31f27d[_0x74de('0xea')]+_0x31f27d[_0x74de('0xeb')]+_0x31f27d[_0x74de('0xec')]+_0x31f27d[_0x74de('0xed')]+_0x31f27d[_0x74de('0xee')]+_0x31f27d[_0x74de('0xfc')]>=_0x54b661['dialGlobalMaxRetry']){_0x3237dc[_0x74de('0xf0')](_0x31f27d,_0x3be13f,_0x4cda29,_0x74de('0xf1'));}else{if(_0x31f27d['countmachineretry']>=_0x54b661[_0x74de('0xf2')]){_0x3237dc['createStateFinal'](_0x31f27d,_0x3be13f,_0x4cda29,_0x74de('0xf4'));}else{_0x3237dc[_0x74de('0xbb')]({'active':![],'countmachineretry':_0x31f27d[_0x74de('0xee')],'scheduledat':moment()['add'](_0x54b661[_0x74de('0xf5')],'minutes')[_0x74de('0x76')](_0x74de('0xf7')),'ContactId':_0x31f27d[_0x74de('0xcc')],'ListId':_0x31f27d[_0x74de('0xf8')],'VoiceQueueId':_0x31f27d[_0x74de('0xce')]||undefined,'CampaignId':_0x31f27d[_0x74de('0xcf')]||undefined})[_0x74de('0xb0')](loggerCatch('[rescheduleContact][Machine]'));_0x3be13f({'reschedule':0x1});}}});}}};Dialer[_0x74de('0x1c')][_0x74de('0x32')]=function(_0x6fa99c){var _0x2e0dc3=this[_0x74de('0x28')][_0x6fa99c['uniqueid']];var _0x717b51=this;var _0x1f3f52;if(_0x2e0dc3&&_0x2e0dc3[_0x74de('0x50')]===_0x74de('0x78')){delete this[_0x74de('0x28')][_0x6fa99c[_0x74de('0xd6')]];this[_0x74de('0xb1')](this[_0x74de('0x22')][_0x2e0dc3[_0x74de('0xb3')]]);this['campaigns'][_0x2e0dc3[_0x74de('0xb3')]][_0x74de('0xfd')]+=0x1;_0x1f3f52=new Hangup(_0x2e0dc3,_0x6fa99c);this[_0x74de('0xc6')](_0x1f3f52)[_0x74de('0xb0')](loggerCatch(_0x74de('0xfe')));this[_0x74de('0xc4')](_0x1f3f52)[_0x74de('0xb0')](loggerCatch(_0x74de('0xff')));}if(_0x2e0dc3&&_0x2e0dc3[_0x74de('0x50')]!==_0x74de('0x78')&&isNotNull(this['voiceQueues'][_0x2e0dc3[_0x74de('0xb3')]][_0x74de('0x100')])){delete this['uniqueId'][_0x6fa99c[_0x74de('0xd6')]];this[_0x74de('0xb1')](this['voiceQueues'][_0x2e0dc3['queue']]);this['voiceQueues'][_0x2e0dc3[_0x74de('0xb3')]][_0x74de('0x59')]+=0x1;this[_0x74de('0x21')][_0x2e0dc3['queue']][_0x74de('0x58')]+=0x1;_0x1f3f52=new Hangup(_0x2e0dc3,_0x6fa99c);_0x1f3f52[_0x74de('0xa6')]=0x10;_0x1f3f52[_0x74de('0xa7')]=_0x74de('0x101');_0x1f3f52[_0x74de('0xdd')]=_0x74de('0x102');this[_0x74de('0xc6')](_0x1f3f52)[_0x74de('0xb0')](loggerCatch(_0x74de('0xfe')));this[_0x74de('0xc4')](_0x1f3f52)[_0x74de('0xb0')](loggerCatch('[syncHangupIvr]'));}if(_0x2e0dc3&&_0x2e0dc3[_0x74de('0x50')]!==_0x74de('0x78')&&!isNotNull(this[_0x74de('0x21')][_0x2e0dc3[_0x74de('0xb3')]][_0x74de('0x100')])){delete this[_0x74de('0x28')][_0x6fa99c['uniqueid']];this['updateOriginated'](this[_0x74de('0x21')][_0x2e0dc3['queue']]);this[_0x74de('0x21')][_0x2e0dc3[_0x74de('0xb3')]][_0x74de('0x64')]+=0x1;_0x1f3f52=new Hangup(_0x2e0dc3,_0x6fa99c);_0x1f3f52[_0x74de('0xa6')]=0xc;_0x1f3f52[_0x74de('0xa7')]=_0x6fa99c[_0x74de('0x103')];_0x1f3f52[_0x74de('0xdd')]='Unknow';this['createHistory'](_0x1f3f52)['catch'](loggerCatch(_0x74de('0xfe')));this[_0x74de('0xc4')](_0x1f3f52)['catch'](loggerCatch(_0x74de('0xff')));}};Dialer['prototype'][_0x74de('0x104')]=function(_0x5c478f){var _0x405df9=this[_0x74de('0x28')][_0x5c478f[_0x74de('0xd6')]];var _0xfd9f4f=this;if(this[_0x74de('0x21')][_0x5c478f[_0x74de('0xb3')]]){if(_0x405df9&&_0x405df9['type']!==_0x74de('0x78')){delete this[_0x74de('0x28')][_0x5c478f[_0x74de('0xd6')]];this['voiceQueues'][_0x5c478f[_0x74de('0xb3')]][_0x74de('0x59')]+=0x1;var _0x47464f=new AgentComplete(_0x405df9,_0x5c478f);if(_0x5c478f[_0x74de('0x105')]==='agent'){_0x47464f[_0x74de('0x106')]=this[_0x74de('0x21')][_0x5c478f[_0x74de('0xb3')]][_0x74de('0x107')]&&this[_0x74de('0x21')][_0x5c478f[_0x74de('0xb3')]][_0x74de('0x108')]?moment()[_0x74de('0x76')](_0x74de('0xf7')):undefined;}this[_0x74de('0xc6')](_0x47464f)[_0x74de('0xb0')](loggerCatch('[syncAgentComplete][createHistory]'));this[_0x74de('0xc4')](_0x47464f)[_0x74de('0xb0')](loggerCatch(_0x74de('0x109')));}}};Dialer[_0x74de('0x1c')][_0x74de('0x2c')]=function(_0x5de73b){if(this['voiceQueues'][_0x5de73b['queue']]){if(this[_0x74de('0x28')][_0x5de73b[_0x74de('0xd6')]]&&this[_0x74de('0x28')][_0x5de73b[_0x74de('0xd6')]][_0x74de('0x50')]!==_0x74de('0x78')){this[_0x74de('0xb1')](this[_0x74de('0x21')][_0x5de73b[_0x74de('0xb3')]]);this[_0x74de('0x28')][_0x5de73b[_0x74de('0xd6')]][_0x74de('0x10a')]=moment()[_0x74de('0x76')](_0x74de('0xf7'));}}};Dialer[_0x74de('0x1c')][_0x74de('0x10b')]=function(_0x540a7e){this[_0x74de('0xc6')](_0x540a7e)[_0x74de('0xb0')](loggerCatch('[syncAgentComplete][createHistory]'));this[_0x74de('0xc4')](_0x540a7e)['catch'](loggerCatch(_0x74de('0x10c')));};Dialer[_0x74de('0x1c')]['syncQueueCallerAbandon']=function(_0x26242a){var _0x126cb1=this[_0x74de('0x28')][_0x26242a['uniqueid']];var _0x4052fb=this;if(this[_0x74de('0x21')][_0x26242a[_0x74de('0xb3')]]){if(_0x126cb1&&_0x126cb1[_0x74de('0x50')]!==_0x74de('0x78')){delete this[_0x74de('0x28')][_0x26242a[_0x74de('0xd6')]];this[_0x74de('0xb1')](this[_0x74de('0x21')][_0x26242a[_0x74de('0xb3')]]);_0x126cb1['droptime']=moment()[_0x74de('0x76')](_0x74de('0xf7'));var _0x5f2ac1=new QueueCallerAbandon(_0x126cb1,_0x26242a);if(getSeconds(_0x126cb1[_0x74de('0x10d')],_0x126cb1[_0x74de('0x10e')])>=_0x126cb1[_0x74de('0x10f')]){this[_0x74de('0x21')][_0x26242a[_0x74de('0xb3')]][_0x74de('0x69')]+=0x1;this['voiceQueues'][_0x26242a[_0x74de('0xb3')]][_0x74de('0x5f')]+=0x1;this[_0x74de('0x21')][_0x26242a[_0x74de('0xb3')]][_0x74de('0x6a')]+=0x1;_0x5f2ac1['state']=0xa;_0x5f2ac1['statedesc']=_0x74de('0x110');_0x5f2ac1['dropreason']=_0x74de('0x111');_0x5f2ac1['agiafterat']=this[_0x74de('0x21')][_0x26242a[_0x74de('0xb3')]]['dialQueueProject2']?moment()[_0x74de('0x76')](_0x74de('0xf7')):undefined;_0x5f2ac1['countdropretry']+=0x1;_0x5f2ac1['countglobal']+=0x1;if(_0x5f2ac1[_0x74de('0xec')]>=this['voiceQueues'][_0x26242a[_0x74de('0xb3')]][_0x74de('0x112')]){this[_0x74de('0x10b')](_0x5f2ac1);}else{this[_0x74de('0xbb')]({'active':![],'countdropretry':_0x5f2ac1[_0x74de('0xec')],'scheduledat':moment()[_0x74de('0x113')](this[_0x74de('0x21')][_0x26242a[_0x74de('0xb3')]]['dialDropRetryFrequency'],'minutes')[_0x74de('0x76')](_0x74de('0xf7')),'ContactId':_0x126cb1[_0x74de('0xcc')],'ListId':_0x126cb1[_0x74de('0xf8')],'VoiceQueueId':_0x126cb1['VoiceQueueId']||undefined,'CampaignId':_0x126cb1['CampaignId']||undefined})['catch'](loggerCatch(_0x74de('0x114')));var _0x2cad37=new History(_0x5f2ac1);_0x2cad37[_0x74de('0xa6')]=0xa;_0x2cad37[_0x74de('0xa7')]='Drop';_0x2cad37['starttime']=moment()[_0x74de('0x76')]('YYYY-MM-DD\x20HH:mm:ss');_0x2cad37[_0x74de('0xa8')]=_0x2cad37[_0x74de('0x115')];_0x2cad37[_0x74de('0x116')]=_0x5f2ac1[_0x74de('0x116')];_0x2cad37[_0x74de('0x117')]=_0x5f2ac1[_0x74de('0x117')];this[_0x74de('0xc6')](_0x2cad37)['catch'](loggerCatch(_0x74de('0x118')));}}else{this[_0x74de('0x21')][_0x26242a[_0x74de('0xb3')]][_0x74de('0x68')]+=0x1;this[_0x74de('0x21')][_0x26242a[_0x74de('0xb3')]][_0x74de('0x5e')]+=0x1;_0x5f2ac1[_0x74de('0xa6')]=0xb;_0x5f2ac1[_0x74de('0xa7')]=_0x74de('0x119');_0x5f2ac1['dropreason']=_0x74de('0x11a');_0x5f2ac1[_0x74de('0xed')]+=0x1;_0x5f2ac1[_0x74de('0xe4')]+=0x1;if(_0x5f2ac1[_0x74de('0xed')]>=this[_0x74de('0x21')][_0x26242a[_0x74de('0xb3')]]['dialAbandonedMaxRetry']){this[_0x74de('0x10b')](_0x5f2ac1);}else{this[_0x74de('0xbb')]({'active':![],'countabandonedretry':_0x5f2ac1[_0x74de('0xed')],'scheduledat':moment()['add'](this[_0x74de('0x21')][_0x26242a[_0x74de('0xb3')]][_0x74de('0x11b')],'minutes')[_0x74de('0x76')](_0x74de('0xf7')),'ContactId':_0x126cb1['ContactId'],'ListId':_0x126cb1[_0x74de('0xf8')],'VoiceQueueId':_0x126cb1['VoiceQueueId']||undefined,'CampaignId':_0x126cb1['CampaignId']||undefined})[_0x74de('0xb0')](loggerCatch('[rescheduleContact][Abandoned]'));var _0x2cad37=new History(_0x5f2ac1);_0x2cad37[_0x74de('0xa6')]=0xb;_0x2cad37['statedesc']=_0x74de('0x119');_0x2cad37['starttime']=moment()[_0x74de('0x76')](_0x74de('0xf7'));_0x2cad37['endtime']=_0x2cad37[_0x74de('0x115')];_0x2cad37[_0x74de('0x116')]=_0x5f2ac1[_0x74de('0x116')];_0x2cad37[_0x74de('0x117')]=_0x5f2ac1[_0x74de('0x117')];this[_0x74de('0xc6')](_0x2cad37)[_0x74de('0xb0')](loggerCatch(_0x74de('0x11c')));}}}}};Dialer[_0x74de('0x1c')]['syncNewExten']=function(_0x3fc3b4){if(this[_0x74de('0xab')][_0x3fc3b4[_0x74de('0xd6')]]){this[_0x74de('0xab')][_0x3fc3b4[_0x74de('0xd6')]][_0x74de('0xaf')]=_0x3fc3b4[_0x74de('0xaf')];}if(this['uniqueId'][_0x3fc3b4[_0x74de('0xd6')]]){this[_0x74de('0x28')][_0x3fc3b4[_0x74de('0xd6')]]['channel']=_0x3fc3b4[_0x74de('0xaf')];}};Dialer[_0x74de('0x1c')][_0x74de('0x38')]=function(_0xff0ac8){if(strategy[this[_0x74de('0x21')][this[_0x74de('0xab')][_0xff0ac8['actionid']][_0x74de('0xb3')]][_0x74de('0x11d')]]===_0x74de('0x11e')){if(this[_0x74de('0xab')][_0xff0ac8[_0x74de('0x11f')]]&&_['isNil'](this['actions'][_0xff0ac8['actionid']]['locked'])&&_0xff0ac8['status']==='1'&&_0xff0ac8['paused']==='0'){if(this[_0x74de('0x23')][_0xff0ac8[_0x74de('0x120')]]){if(!this[_0x74de('0x23')][_0xff0ac8[_0x74de('0x120')]][_0x74de('0x121')]){this[_0x74de('0x23')][_0xff0ac8[_0x74de('0x120')]][_0x74de('0x121')]=!![];this[_0x74de('0xab')][_0xff0ac8['actionid']][_0x74de('0x121')]=!![];this[_0x74de('0xab')][_0xff0ac8['actionid']][_0x74de('0x120')]=_0xff0ac8[_0x74de('0x120')];}}}}else if((strategy[this[_0x74de('0x21')][this[_0x74de('0xab')][_0xff0ac8[_0x74de('0x11f')]]['queue']][_0x74de('0x11d')]]||_0x74de('0x1b'))==='rrmemory'){if(this[_0x74de('0xab')][_0xff0ac8[_0x74de('0x11f')]]){if(this[_0x74de('0x23')][_0xff0ac8[_0x74de('0x120')]]){this[_0x74de('0xab')][_0xff0ac8[_0x74de('0x11f')]][_0x74de('0x120')]=_0xff0ac8[_0x74de('0x120')];if(_[_0x74de('0xac')](this[_0x74de('0x122')][this['actions'][_0xff0ac8[_0x74de('0x11f')]][_0x74de('0xb3')]])){this[_0x74de('0x122')][this['actions'][_0xff0ac8[_0x74de('0x11f')]][_0x74de('0xb3')]]=[];}this[_0x74de('0x122')][this[_0x74de('0xab')][_0xff0ac8[_0x74de('0x11f')]][_0x74de('0xb3')]][_0x74de('0x123')](_[_0x74de('0x8c')](_[_0x74de('0x124')](this[_0x74de('0xab')][_0xff0ac8[_0x74de('0x11f')]],[_0x74de('0x125'),_0x74de('0x120')]),{'status':_0xff0ac8[_0x74de('0xae')],'paused':_0xff0ac8[_0x74de('0x126')]}));}}}};function unlockQueueStatus(_0x72e410,_0x587e82){setTimeout(function(){if(_[_0x74de('0x3b')](_0x72e410['queueStatusComplete'])){loggerBooked[_0x74de('0x94')](_0x74de('0x127'),_0x587e82);}_0x72e410[_0x74de('0x128')]=!![];loggerBooked['info'](_0x74de('0x129'),_0x587e82,JSON[_0x74de('0x46')](_[_0x74de('0x124')](_0x72e410,[_0x74de('0x3e'),_0x74de('0x128')])));},0x1f3);}Dialer[_0x74de('0x1c')][_0x74de('0x12a')]=function(_0x4ea97b){var _0x378ca9=this;var _0xc6467=_0x378ca9['voiceQueues'][_0x378ca9[_0x74de('0xab')][_0x4ea97b[_0x74de('0x11f')]][_0x74de('0xb3')]];if(strategy[this[_0x74de('0x21')][this['actions'][_0x4ea97b[_0x74de('0x11f')]][_0x74de('0xb3')]][_0x74de('0x11d')]]===_0x74de('0x11e')){if(this[_0x74de('0xab')][_0x4ea97b['actionid']]&&this[_0x74de('0xab')][_0x4ea97b['actionid']][_0x74de('0x120')]){this[_0x74de('0x90')]['run'](this[_0x74de('0xab')][_0x4ea97b[_0x74de('0x11f')]][_0x74de('0x125')],this[_0x74de('0xab')][_0x4ea97b[_0x74de('0x11f')]]['stateinterface'])['catch'](function(_0x220abb){logger[_0x74de('0x94')](_0x74de('0x12b'),util[_0x74de('0x95')](_0x220abb,{'showHidden':![],'depth':null}));})[_0x74de('0x1f')](function(){_0x378ca9[_0x74de('0xb1')](_0x378ca9[_0x74de('0x21')][_0x378ca9[_0x74de('0xab')][_0x4ea97b['actionid']][_0x74de('0xb3')]]);_0x378ca9[_0x74de('0x23')][_0x378ca9[_0x74de('0xab')][_0x4ea97b[_0x74de('0x11f')]]['stateinterface']][_0x74de('0x121')]=![];delete _0x378ca9[_0x74de('0xab')][_0x4ea97b[_0x74de('0x11f')]];unlockQueueStatus(_0xc6467);});}else{this['updateOriginated'](this['voiceQueues'][this[_0x74de('0xab')][_0x4ea97b[_0x74de('0x11f')]]['queue']]);this[_0x74de('0xbb')]({'active':![],'ContactId':this[_0x74de('0xab')][_0x4ea97b[_0x74de('0x11f')]]['ContactId'],'ListId':this[_0x74de('0xab')][_0x4ea97b[_0x74de('0x11f')]][_0x74de('0xf8')],'VoiceQueueId':this[_0x74de('0xab')][_0x4ea97b[_0x74de('0x11f')]]['VoiceQueueId']||undefined,'CampaignId':this[_0x74de('0xab')][_0x4ea97b[_0x74de('0x11f')]]['CampaignId']||undefined})['catch'](loggerCatch(_0x74de('0x12c')));delete this['actions'][_0x4ea97b[_0x74de('0x11f')]];unlockQueueStatus(_0xc6467);}}else if((strategy[this[_0x74de('0x21')][this[_0x74de('0xab')][_0x4ea97b[_0x74de('0x11f')]][_0x74de('0xb3')]][_0x74de('0x11d')]]||'rrmemory')==='rrmemory'){var _0x2775ee;if(this[_0x74de('0xab')][_0x4ea97b[_0x74de('0x11f')]]&&!_[_0x74de('0x7b')](this['queueBooked'][this[_0x74de('0xab')][_0x4ea97b['actionid']][_0x74de('0xb3')]])){if(this[_0x74de('0x12d')][_0x378ca9['actions'][_0x4ea97b[_0x74de('0x11f')]]['queue']]){this[_0x74de('0x12d')][_0x378ca9[_0x74de('0xab')][_0x4ea97b[_0x74de('0x11f')]]['queue']]=this[_0x74de('0x12d')][this['actions'][_0x4ea97b[_0x74de('0x11f')]][_0x74de('0xb3')]]?this[_0x74de('0x12d')][this[_0x74de('0xab')][_0x4ea97b[_0x74de('0x11f')]]['queue']]:this[_0x74de('0x122')][this[_0x74de('0xab')][_0x4ea97b[_0x74de('0x11f')]][_0x74de('0xb3')]]?this[_0x74de('0x122')][this[_0x74de('0xab')][_0x4ea97b[_0x74de('0x11f')]][_0x74de('0xb3')]][_0x74de('0x12e')]||0x0:0x0;}this['queueBooked'][this['actions'][_0x4ea97b[_0x74de('0x11f')]][_0x74de('0xb3')]]['_rr']=this['queueBookedRR'][this[_0x74de('0xab')][_0x4ea97b[_0x74de('0x11f')]]['queue']];for(var _0xc815d9=0x0;_0xc815d9<this[_0x74de('0x122')][this['actions'][_0x4ea97b[_0x74de('0x11f')]][_0x74de('0xb3')]][_0x74de('0x96')];_0xc815d9+=0x1){_0x2775ee=rr(this[_0x74de('0x122')][this['actions'][_0x4ea97b['actionid']][_0x74de('0xb3')]]);this[_0x74de('0x12d')][_0x378ca9[_0x74de('0xab')][_0x4ea97b[_0x74de('0x11f')]][_0x74de('0xb3')]]=this[_0x74de('0x122')][this[_0x74de('0xab')][_0x4ea97b[_0x74de('0x11f')]][_0x74de('0xb3')]][_0x74de('0x12e')];if(_0x2775ee[_0x74de('0xae')]==='1'&&_0x2775ee[_0x74de('0x126')]==='0'){break;}}if(!_[_0x74de('0xac')](_0x2775ee)){this[_0x74de('0x23')][_0x2775ee[_0x74de('0x120')]][_0x74de('0x12f')]=_[_0x74de('0x3b')](this[_0x74de('0x23')][_0x2775ee['stateinterface']][_0x74de('0x12f')])?!![]:this[_0x74de('0x23')][_0x2775ee[_0x74de('0x120')]][_0x74de('0x12f')];}loggerBooked[_0x74de('0x7c')]('[booked][RR]',_0x4ea97b['actionid'],_0x74de('0x130'),JSON[_0x74de('0x46')](_[_0x74de('0x124')](this[_0x74de('0x23')][_0x2775ee[_0x74de('0x120')]],[_0x74de('0x3e'),'unlockRR'])),_0x74de('0x131'),JSON[_0x74de('0x46')](_0x2775ee[_0x74de('0x125')]));if(!_[_0x74de('0xac')](_0x2775ee)&&_0x2775ee[_0x74de('0xae')]==='1'&&_0x2775ee[_0x74de('0x126')]==='0'&&this[_0x74de('0x23')][_0x2775ee['stateinterface']][_0x74de('0x12f')]){this[_0x74de('0x23')][_0x2775ee['stateinterface']][_0x74de('0x12f')]=![];this['queueBooked'][_0x378ca9['actions'][_0x4ea97b['actionid']][_0x74de('0xb3')]]=[];this[_0x74de('0x90')]['run'](_0x2775ee[_0x74de('0x125')],_0x2775ee[_0x74de('0x120')])[_0x74de('0xb0')](function(_0x32d7fa){logger[_0x74de('0x94')]('[Catch][Preview][syncQueueStatusComplete]',util[_0x74de('0x95')](_0x32d7fa,{'showHidden':![],'depth':null}));})[_0x74de('0x1f')](function(){_0x378ca9[_0x74de('0xb1')](_0x378ca9[_0x74de('0x21')][_0x378ca9['actions'][_0x4ea97b['actionid']][_0x74de('0xb3')]]);setTimeout(function(){_0x378ca9[_0x74de('0x23')][_0x2775ee[_0x74de('0x120')]][_0x74de('0x12f')]=!![];loggerBooked[_0x74de('0x7c')](_0x74de('0x132'),_0x4ea97b['actionid'],_0x74de('0x130'),JSON[_0x74de('0x46')](_['pick'](_0x378ca9['agents'][_0x2775ee['stateinterface']],[_0x74de('0x3e'),_0x74de('0x12f')])),_0x74de('0x131'),JSON[_0x74de('0x46')](_0x2775ee[_0x74de('0x125')]));},0xc7);delete _0x378ca9[_0x74de('0xab')][_0x4ea97b['actionid']];unlockQueueStatus(_0xc6467,_0x4ea97b[_0x74de('0x11f')]);});}else{loggerBooked['info'](_0x74de('0x133'));this[_0x74de('0xb1')](this[_0x74de('0x21')][this[_0x74de('0xab')][_0x4ea97b[_0x74de('0x11f')]]['queue']]);this[_0x74de('0xbb')]({'active':![],'ContactId':this['actions'][_0x4ea97b[_0x74de('0x11f')]][_0x74de('0xcc')],'ListId':this['actions'][_0x4ea97b['actionid']]['ListId'],'VoiceQueueId':this['actions'][_0x4ea97b[_0x74de('0x11f')]][_0x74de('0xce')]||undefined,'CampaignId':this['actions'][_0x4ea97b['actionid']][_0x74de('0xcf')]||undefined})['catch'](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this['actions'][_0x4ea97b[_0x74de('0x11f')]];unlockQueueStatus(_0xc6467);}}else{loggerBooked[_0x74de('0x7c')]('[booked][unlock2]');this[_0x74de('0xb1')](this[_0x74de('0x21')][this[_0x74de('0xab')][_0x4ea97b[_0x74de('0x11f')]][_0x74de('0xb3')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0x74de('0xab')][_0x4ea97b[_0x74de('0x11f')]]['ContactId'],'ListId':this[_0x74de('0xab')][_0x4ea97b[_0x74de('0x11f')]][_0x74de('0xf8')],'VoiceQueueId':this[_0x74de('0xab')][_0x4ea97b[_0x74de('0x11f')]][_0x74de('0xce')]||undefined,'CampaignId':this[_0x74de('0xab')][_0x4ea97b[_0x74de('0x11f')]][_0x74de('0xcf')]||undefined})[_0x74de('0xb0')](loggerCatch(_0x74de('0x134')));delete this['actions'][_0x4ea97b[_0x74de('0x11f')]];unlockQueueStatus(_0xc6467);}}else{loggerBooked[_0x74de('0x7c')](_0x74de('0x135'));this[_0x74de('0xb1')](this[_0x74de('0x21')][this[_0x74de('0xab')][_0x4ea97b[_0x74de('0x11f')]][_0x74de('0xb3')]]);this[_0x74de('0xbb')]({'active':![],'ContactId':this[_0x74de('0xab')][_0x4ea97b[_0x74de('0x11f')]][_0x74de('0xcc')],'ListId':this[_0x74de('0xab')][_0x4ea97b[_0x74de('0x11f')]][_0x74de('0xf8')],'VoiceQueueId':this[_0x74de('0xab')][_0x4ea97b[_0x74de('0x11f')]][_0x74de('0xce')]||undefined,'CampaignId':this[_0x74de('0xab')][_0x4ea97b[_0x74de('0x11f')]]['CampaignId']||undefined})[_0x74de('0xb0')](loggerCatch(_0x74de('0x136')));delete this[_0x74de('0xab')][_0x4ea97b['actionid']];unlockQueueStatus(_0xc6467);}};Dialer[_0x74de('0x1c')][_0x74de('0x39')]=function(){var _0x3189a8=this;setInterval(function(){_0x3189a8[_0x74de('0x137')]();},0x3e8);};Dialer[_0x74de('0x1c')][_0x74de('0x138')]=function(_0x590322){var _0x5e2754=this;return function(){if(!_0x5e2754[_0x74de('0x139')](_0x590322[_0x74de('0x73')])){if(!_0x5e2754[_0x74de('0x139')](_0x590322[_0x74de('0x13a')])){_0x590322[_0x74de('0x3c')]='TRUNK_IS_NOT_REACHABLE';throw _0x590322[_0x74de('0x3e')]+_0x74de('0x13b');}}};};Dialer[_0x74de('0x1c')][_0x74de('0x13c')]=function(_0x42c531,_0x163463,_0xafe6b2,_0x475b1b){var _0x53646e=this;return function(){var _0x106e31=!![];return _0x53646e['ifTime'](_0x42c531,_0x163463,_0xafe6b2,_0x475b1b,_0x106e31);};};Dialer[_0x74de('0x1c')][_0x74de('0x13d')]=function(_0xaed030,_0x156e4f,_0x12c09d,_0x54572b){var _0x2b1689=this;return function(){var _0x25e977=![];return _0x2b1689[_0x74de('0x13e')](_0xaed030[_0x74de('0x44')],_0x156e4f,_0x12c09d,_0x54572b,_0x25e977);};};Dialer[_0x74de('0x1c')]['ifTime']=function(_0xa3ae02,_0x29078e,_0x7148a6,_0x411b35,_0x1f120a){var _0x3c3c23=[];return new BPromise(function(_0x4c754e,_0x19f9df){if(!isNotNull(_0xa3ae02)){_0x411b35[_0x74de('0x3c')]='INTERVAL_IS_NULL';return _0x19f9df(msgResponse(_0x74de('0x13e'),'Failure',_0x7148a6+_0x74de('0x13f')));}if(_[_0x74de('0x7b')](_0xa3ae02)){_0x411b35['message']=_0x74de('0x140');return _0x19f9df(msgResponse(_0x74de('0x13e'),_0x74de('0x141'),_0x7148a6+'\x20Intervals\x20is\x20empty\x20'));}if(_0x29078e&&_[_0x74de('0x3b')](config['timezones'][_0x29078e])){_0x411b35['message']=_0x74de('0x142');return _0x19f9df(msgResponse('ifTime',_0x74de('0x141'),_0x7148a6+_0x74de('0x143')+_0x29078e));}if(_['isArray'](_0xa3ae02)){for(var _0x11839a=0x0;_0x11839a<_0xa3ae02[_0x74de('0x96')];_0x11839a+=0x1){_0x3c3c23['push'](ami[_0x74de('0xad')]({'action':_0x74de('0x144'),'command':util[_0x74de('0x76')](_0x74de('0x145'),_0xa3ae02[_0x11839a]['interval'],!_[_0x74de('0x3b')](config['timezones'][_0x29078e])?_0x29078e:'')})[_0x74de('0xb9')](function(_0x24fb58){return _0x24fb58[_0x74de('0x146')][_0x74de('0x147')](_0x74de('0x148'))>=0x0;})['catch'](myreject(_0x19f9df)));}}else{_0x3c3c23[_0x74de('0x123')](ami['Action']({'action':_0x74de('0x144'),'command':util['format'](_0x74de('0x145'),_0xa3ae02,!_[_0x74de('0x3b')](config[_0x74de('0x149')][_0x29078e])?_0x29078e:'')})[_0x74de('0xb9')](function(_0x20a0b0){return _0x20a0b0[_0x74de('0x146')][_0x74de('0x147')]('true')>=0x0;})[_0x74de('0xb0')](myreject(_0x19f9df)));}BPromise[_0x74de('0x14a')](_0x3c3c23)['then'](function(_0x2a9adf){var _0x3aad01=_[_0x74de('0x14b')](_0x2a9adf);if(_0x3aad01){return _0x4c754e(_0x3aad01);}else{_0x411b35['message']=_0x1f120a?'GLOBAL_INTERVAL_IS_OVERTIME':_0x74de('0x14c');return _0x19f9df(msgResponse(_0x74de('0x14d'),'Failure',_0x74de('0x14e')+_0x1f120a+'\x20'+_0x7148a6+_0x74de('0x14f')+util[_0x74de('0x95')](_0xa3ae02,{'showHidden':![],'depth':null})+_0x74de('0x150')+_0x29078e));}})['catch'](function(_0x5a2fd7){return _0x19f9df(msgResponse(_0x74de('0x13e'),_0x74de('0x141'),JSON[_0x74de('0x46')](_0x5a2fd7)));});});};Dialer[_0x74de('0x1c')][_0x74de('0x151')]=function(_0x42e087){var _0x3e9872=this;return function(){switch(_0x42e087[_0x74de('0x152')]){case _0x74de('0x153'):freeVariablesPredictive(_0x42e087);_0x3e9872[_0x74de('0x154')](_0x42e087,0x1);break;case'power':freeVariablesPredictive(_0x42e087);_0x3e9872[_0x74de('0x154')](_0x42e087,_0x42e087['dialPowerLevel']);break;case _0x74de('0xa'):_0x3e9872[_0x74de('0xa')](_0x42e087);break;case _0x74de('0x9'):freeVariablesPredictive(_0x42e087);_0x3e9872[_0x74de('0x154')](_0x42e087,0x1);break;default:freeVariablesPredictive(_0x42e087);logger[_0x74de('0x94')]('Queue',_0x42e087[_0x74de('0x3e')],_0x74de('0x155'));}};};Dialer[_0x74de('0x1c')]['launchHandleIvr']=function(_0x775e91){var _0x157072=this;return function(){_0x157072[_0x74de('0x156')](_0x775e91);};};Dialer[_0x74de('0x1c')][_0x74de('0xc')]=function(_0x19dd61){var _0x21a4dd=this;if(isNotPreview(_0x19dd61[_0x74de('0x152')])){if(isVoiceQueueOutbound(_0x19dd61[_0x74de('0x50')])&&isActive(_0x19dd61[_0x74de('0x157')])){_0x19dd61[_0x74de('0xa1')]=!![];BPromise['resolve']()[_0x74de('0xb9')](checkIsLoggedIn(_0x19dd61,_0x19dd61[_0x74de('0x4b')]))[_0x74de('0xb9')](checkIsActive(_0x19dd61,_0x19dd61[_0x74de('0x157')]))[_0x74de('0xb9')](checkInterval(_0x19dd61))['then'](_0x21a4dd[_0x74de('0x138')](_0x19dd61))['then'](_0x21a4dd[_0x74de('0x13c')](_0x19dd61[_0x74de('0x158')],_0x19dd61[_0x74de('0x159')],_0x19dd61['name'],_0x19dd61))['then'](_0x21a4dd[_0x74de('0x13d')](_0x19dd61[_0x74de('0x43')],_0x19dd61[_0x74de('0x159')],_0x19dd61[_0x74de('0x3e')],_0x19dd61))[_0x74de('0xb9')](_0x21a4dd[_0x74de('0x151')](_0x19dd61))[_0x74de('0xb0')](loggerCatchQueueSummary(_0x74de('0x15a'),_0x19dd61));}else{notSendMessagesQueue(_0x19dd61);}}else{freeVariablesPredictive(_0x19dd61);}};Dialer[_0x74de('0x1c')][_0x74de('0x137')]=function(){var _0x5b89b9=this;var _0xe5df01;for(var _0xe82b65 in this[_0x74de('0x22')]){if(typeof this[_0x74de('0x22')][_0xe82b65]!=='undefined'){_0xe5df01=this[_0x74de('0x22')][_0xe82b65];if(isCampaignIvr(_0xe5df01[_0x74de('0x50')])&&isActive(_0xe5df01[_0x74de('0x74')])){_0xe5df01['sendMessageOneNotActive']=!![];BPromise[_0x74de('0xb5')]()[_0x74de('0xb9')](checkIsActive(_0xe5df01,_0xe5df01[_0x74de('0x74')]))[_0x74de('0xb9')](checkInterval(_0xe5df01))[_0x74de('0xb9')](_0x5b89b9[_0x74de('0x138')](_0xe5df01))[_0x74de('0xb9')](_0x5b89b9['checkIfTime'](_0xe5df01['dialGlobalInterval'],_0xe5df01['dialTimezone'],_0xe5df01[_0x74de('0x3e')],_0xe5df01))[_0x74de('0xb9')](_0x5b89b9[_0x74de('0x13d')](_0xe5df01[_0x74de('0x43')],_0xe5df01['dialTimezone'],_0xe5df01[_0x74de('0x3e')],_0xe5df01))[_0x74de('0xb9')](_0x5b89b9['launchHandleIvr'](_0xe5df01))[_0x74de('0xb0')](loggerCatchQueueSummary(_0x74de('0x15b'),_0xe5df01));}else{notSendMessagesCampaign(_0xe5df01);}}}};function getCallerIdRandom(_0x512380,_0x286c34){var _0x49bac4;var _0x4397ae;var _0x5a40ca;if(_0x286c34<=0x0){_0x286c34=0x1;}_0x49bac4=new RegExp(_0x74de('0x15c')+_0x286c34+'}$');_0x4397ae=Math[_0x74de('0x15d')](0xa,_0x286c34-0x1);_0x5a40ca=Math['pow'](0xa,_0x286c34)-0x1;return util[_0x74de('0x76')]('%s',_['replace'](_0x512380,_0x49bac4,_[_0x74de('0x15e')](_0x4397ae,_0x5a40ca)));}function extractCalleridName(_0xf5aec3){var _0x2985d0=_0xf5aec3['match'](/"(.*?)"/);return _0x2985d0?_0x2985d0[0x1]:_0xf5aec3;}function extractCalleridNumber(_0x300551){var _0x5006ae=_0x300551['match'](/<(.*?)>/);return _0x5006ae?_0x5006ae[0x1]:_0x300551;}Dialer[_0x74de('0x1c')][_0x74de('0x15f')]=function(_0x114d43,_0x2b5215){var _0x10592f=this;var _0x5d3d27=uuid['v4']();this[_0x74de('0xab')][_0x5d3d27]=new Action(_0x114d43,_0x2b5215,_0x5d3d27);return new BPromise(function(_0x10c017,_0x3f483e){if(_[_0x74de('0x3b')](_0x114d43)&&typeof _0x114d43!==_0x74de('0x160')){return _0x3f483e(msgResponse(_0x74de('0x161'),_0x74de('0x141'),_0x74de('0x162')));}if(_[_0x74de('0x3b')](_0x2b5215['Contact'][_0x74de('0x163')])||_0x2b5215['Contact'][_0x74de('0x163')]===null){return _0x3f483e(msgResponse('originate','Failure',_0x74de('0x164')));}var _0xdbcc01={'XMD-CALLERID':_0x10592f[_0x74de('0xab')][_0x5d3d27][_0x74de('0x165')](),'XMD-AGI':_0x114d43['dialQueueProject']?util[_0x74de('0x76')](_0x74de('0x166'),ipAgi,_0x114d43[_0x74de('0x100')]):'NONE','XMD-AGIAFTER':_0x114d43[_0x74de('0x107')]?util[_0x74de('0x76')](_0x74de('0x166'),ipAgi,_0x114d43[_0x74de('0x107')]):_0x74de('0x167'),'XMD-QUEUE':_0x114d43[_0x74de('0x50')]==='outbound'?util[_0x74de('0x76')](_0x74de('0x168'),_0x114d43[_0x74de('0x3e')],_0x114d43['dialQueueOptions']||'',_0x114d43['dialAgiAfterHangupAgent']?'c':'',_0x114d43[_0x74de('0x10f')]||0x3):_0x74de('0x167'),'XMD-CONTACTID':_0x2b5215[_0x74de('0xcc')],'XMD-CDRTYPE':_0x74de('0x8'),'CALLERID(all)':_0x10592f[_0x74de('0xab')][_0x5d3d27][_0x74de('0x165')](),'XMD-AMD':_0x114d43['dialAMDActive']?_0x74de('0x169'):_0x74de('0x167'),'XMD-DESTINATION':_0x74de('0xd9')};if(_0x114d43['dialAMDActive']){_0xdbcc01[_0x74de('0x16a')]=_0x114d43[_0x74de('0x16b')]||0x9c4;_0xdbcc01['XMD-AMDGREETING']=_0x114d43[_0x74de('0x16c')]||0x5dc;_0xdbcc01[_0x74de('0x16d')]=_0x114d43['dialAMDAfterGreetingSilence']||0x320;_0xdbcc01['XMD-AMDTOTALANALYSISTIME']=_0x114d43['dialAMDTotalAnalysisTime']||0x1388;_0xdbcc01[_0x74de('0x16e')]=_0x114d43[_0x74de('0x16f')]||0x64;_0xdbcc01['XMD-AMDBETWEENWORDSSILENCE']=_0x114d43['dialAMDBetweenWordsSilence']||0x32;_0xdbcc01['XMD-AMDMAXIMUMNUMBEROFWORDS']=_0x114d43[_0x74de('0x170')]||0x3;_0xdbcc01[_0x74de('0x171')]=_0x114d43['dialAMDSilenceThreshold']||0x100;_0xdbcc01[_0x74de('0x172')]=_0x114d43[_0x74de('0x173')]||0x1388;}if(_0x114d43[_0x74de('0x50')]==='outbound'){_0xdbcc01['XMD-VOICEQUEUEID']=_0x2b5215[_0x74de('0xce')];}else{_0xdbcc01[_0x74de('0x174')]=_0x2b5215[_0x74de('0xcf')];}for(var _0x395216 in _0x2b5215[_0x74de('0x175')]){if(typeof _0x2b5215[_0x74de('0x175')][_0x395216]!==_0x74de('0x98')){if(isNotNull(_0x2b5215[_0x74de('0x175')][_0x395216])&&_0x395216!=='id'&&_0x395216!==_0x74de('0x176')&&_0x395216!==_0x74de('0x177')&&_0x395216!=='updatedAt'){_0xdbcc01[util[_0x74de('0x76')]('%s%s',_0x74de('0x178'),_[_0x74de('0x179')](_0x395216))]=_0x2b5215[_0x74de('0x175')][_0x395216];}}}var _0x3b1913=_0x10592f[_0x74de('0x139')](_0x114d43[_0x74de('0x73')])?getCallerId(_0x114d43[_0x74de('0x73')][_0x74de('0x75')],_0x114d43[_0x74de('0x17a')],_0x114d43[_0x74de('0x17b')]>0x0?getCallerIdRandom(_0x114d43[_0x74de('0x55')],_0x114d43['dialRandomLastDigitCallerIdNumber']):_0x114d43[_0x74de('0x55')]):getCallerId(_['isNil'](_0x114d43[_0x74de('0x13a')])?_0x114d43[_0x74de('0x73')][_0x74de('0x75')]:_0x114d43[_0x74de('0x13a')]['callerid'],_0x114d43[_0x74de('0x17a')],_0x114d43[_0x74de('0x17b')]>0x0?getCallerIdRandom(_0x114d43[_0x74de('0x55')],_0x114d43[_0x74de('0x17b')]):_0x114d43['dialOriginateCallerIdNumber']);if(_0x3b1913){_0xdbcc01[_0x74de('0x17c')]=_0x10592f['actions'][_0x5d3d27][_0x74de('0x17d')]=extractCalleridName(_0x3b1913);_0xdbcc01[_0x74de('0x17e')]=_0x10592f[_0x74de('0xab')][_0x5d3d27][_0x74de('0x17f')]=extractCalleridNumber(_0x3b1913);}return ami['Action']({'actionid':_0x5d3d27,'action':_0x74de('0x161'),'channel':_0x10592f[_0x74de('0x139')](_0x114d43[_0x74de('0x73')])?util[_0x74de('0x76')](_0x74de('0x180'),_0x114d43[_0x74de('0x73')][_0x74de('0x3e')],isNotNull(_0x114d43['dialPrefix'])?_0x114d43[_0x74de('0x57')][_0x74de('0x181')]()||'':'',_0x114d43[_0x74de('0x182')]>0x0?_0x2b5215[_0x74de('0x175')][_0x74de('0x163')][_0x74de('0x183')](_0x114d43[_0x74de('0x182')]):_0x2b5215[_0x74de('0x175')][_0x74de('0x163')]):util['format']('SIP/%s/%s%s',_[_0x74de('0xac')](_0x114d43['TrunkBackup'])?_0x114d43[_0x74de('0x73')][_0x74de('0x3e')]:_0x114d43[_0x74de('0x13a')]['name'],isNotNull(_0x114d43[_0x74de('0x57')])?_0x114d43[_0x74de('0x57')]['trim']()||'':'',_0x114d43['dialCutDigit']>0x0?_0x2b5215[_0x74de('0x175')][_0x74de('0x163')]['substring'](_0x114d43['dialCutDigit']):_0x2b5215[_0x74de('0x175')][_0x74de('0x163')]),'callerid':_0x3b1913,'Exten':_0x74de('0xd9'),'Context':_0x74de('0x184'),'Priority':'1','variable':_0xdbcc01,'timeout':(_0x114d43[_0x74de('0x56')]||0x1e)*0x3e8,'async':!![],'channelid':_0x5d3d27})[_0x74de('0xb9')](function(_0x2ba83f){return _0x10c017(_0x2ba83f);})[_0x74de('0xb0')](function(_0x1bb93a){_0x114d43['outboundOriginateFailureCallsDay']+=0x1;var _0x39d209=new History(_0x10592f[_0x74de('0xab')][_0x5d3d27]);logger[_0x74de('0x94')](util[_0x74de('0x76')]('[originateError]:\x20%s',JSON[_0x74de('0x46')](_0x1bb93a)));_0x39d209[_0x74de('0xa6')]=0xe;_0x39d209[_0x74de('0xa7')]=_0x74de('0x185');_0x39d209[_0x74de('0x115')]=moment()[_0x74de('0x76')](_0x74de('0xf7'));_0x39d209[_0x74de('0xa8')]=_0x39d209[_0x74de('0x115')];_0x10592f['createHistory'](_0x39d209)[_0x74de('0xb0')](loggerCatch(_0x74de('0x186')));_0x10592f[_0x74de('0xc4')](_0x39d209)[_0x74de('0xb0')](loggerCatch(_0x74de('0x186')))[_0x74de('0x1f')](function(){delete _0x10592f[_0x74de('0xab')][_0x5d3d27];return _0x3f483e(msgResponse(_0x74de('0x161'),_0x74de('0x187'),_0x74de('0x188')));});});});};Dialer[_0x74de('0x1c')][_0x74de('0x189')]=function(_0x5f142d){var _0xadb44c=this[_0x74de('0xab')][_0x5f142d[_0x74de('0x11f')]];if(_0xadb44c){delete this[_0x74de('0xab')][_0x5f142d['actionid']];_0xadb44c[_0x74de('0x10e')]=moment()[_0x74de('0x76')](_0x74de('0xf7'));var _0x3d446e=_0xadb44c[_0x74de('0x50')]===_0x74de('0x78')?this[_0x74de('0x22')][_0xadb44c[_0x74de('0xb3')]]:this[_0x74de('0x21')][_0xadb44c['getQueue']()];if(!this[_0x74de('0xd2')](_0x5f142d['response'])){this['updateOriginated'](_0x3d446e);return this[_0x74de('0x18a')](_0xadb44c,_0x3d446e,_0x5f142d)[_0x74de('0xb0')](loggerCatch('[callProgressDetecting]\x20'));}this[_0x74de('0x28')][_0x5f142d[_0x74de('0xd6')]]=_0xadb44c;}};Dialer[_0x74de('0x1c')][_0x74de('0x18b')]=function(_0x75cd04,_0x24950c,_0x58a564){var _0x6372d8=new History(_0x24950c);if(_0x6372d8[_0x74de('0xe8')]+_0x6372d8[_0x74de('0xe9')]+_0x6372d8['countnoanswerretry']+_0x6372d8[_0x74de('0xeb')]+_0x6372d8[_0x74de('0xec')]+_0x6372d8[_0x74de('0xed')]+_0x6372d8['countmachineretry']+_0x6372d8[_0x74de('0xfc')]>=_0x58a564['dialGlobalMaxRetry']-0x1){return!![];}switch(_0x75cd04){case 0x3:if(_0x6372d8[_0x74de('0xea')]>=_0x58a564[_0x74de('0x18c')]-0x1){return!![];}this[_0x74de('0xbb')]({'active':![],'countnoanswerretry':_0x6372d8[_0x74de('0xea')]+=0x1,'scheduledat':moment()[_0x74de('0x113')](_0x58a564['dialNoAnswerRetryFrequency'],_0x74de('0xf6'))[_0x74de('0x76')](_0x74de('0xf7')),'ContactId':_0x6372d8['ContactId'],'ListId':_0x6372d8[_0x74de('0xf8')],'VoiceQueueId':_0x6372d8['VoiceQueueId']||undefined,'CampaignId':_0x6372d8[_0x74de('0xcf')]||undefined})[_0x74de('0xb0')](loggerCatch('[rescheduleContact][NoAnswer]'));break;case 0x5:if(_0x6372d8[_0x74de('0xe8')]>=_0x58a564[_0x74de('0x18d')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countbusyretry':_0x6372d8[_0x74de('0xe8')]+=0x1,'scheduledat':moment()[_0x74de('0x113')](_0x58a564['dialBusyRetryFrequency'],_0x74de('0xf6'))['format'](_0x74de('0xf7')),'ContactId':_0x6372d8[_0x74de('0xcc')],'ListId':_0x6372d8[_0x74de('0xf8')],'VoiceQueueId':_0x6372d8[_0x74de('0xce')]||undefined,'CampaignId':_0x6372d8[_0x74de('0xcf')]||undefined})[_0x74de('0xb0')](loggerCatch(_0x74de('0x18e')));break;case 0x8:if(_0x6372d8['countcongestionretry']>=_0x58a564[_0x74de('0x18f')]-0x1){return!![];}this[_0x74de('0xbb')]({'active':![],'countcongestionretry':_0x6372d8['countcongestionretry']+=0x1,'scheduledat':moment()[_0x74de('0x113')](_0x58a564[_0x74de('0x190')],'minutes')[_0x74de('0x76')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x6372d8[_0x74de('0xcc')],'ListId':_0x6372d8[_0x74de('0xf8')],'VoiceQueueId':_0x6372d8['VoiceQueueId']||undefined,'CampaignId':_0x6372d8['CampaignId']||undefined})[_0x74de('0xb0')](loggerCatch(_0x74de('0x191')));break;case 0x0:if(_0x6372d8[_0x74de('0xeb')]>=_0x58a564['dialNoSuchNumberMaxRetry']-0x1){return!![];}else{this[_0x74de('0xbb')]({'active':![],'countnosuchnumberretry':_0x6372d8[_0x74de('0xeb')]+=0x1,'scheduledat':moment()[_0x74de('0x113')](_0x58a564[_0x74de('0x192')],'minutes')['format'](_0x74de('0xf7')),'ContactId':_0x6372d8[_0x74de('0xcc')],'ListId':_0x6372d8[_0x74de('0xf8')],'VoiceQueueId':_0x6372d8[_0x74de('0xce')]||undefined,'CampaignId':_0x6372d8[_0x74de('0xcf')]||undefined})['catch'](loggerCatch(_0x74de('0x193')));}break;case 0xa:if(_0x6372d8[_0x74de('0xec')]>=_0x58a564['dialDropMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countdropretry':_0x6372d8[_0x74de('0xec')]+=0x1,'scheduledat':moment()['add'](_0x58a564[_0x74de('0x194')],_0x74de('0xf6'))[_0x74de('0x76')](_0x74de('0xf7')),'ContactId':_0x6372d8[_0x74de('0xcc')],'ListId':_0x6372d8[_0x74de('0xf8')],'VoiceQueueId':_0x6372d8[_0x74de('0xce')]||undefined,'CampaignId':_0x6372d8[_0x74de('0xcf')]||undefined})[_0x74de('0xb0')](loggerCatch(_0x74de('0x114')));break;case 0xb:if(_0x6372d8[_0x74de('0xed')]>=_0x58a564[_0x74de('0x195')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countabandonedretry':_0x6372d8['countabandonedretry']+=0x1,'scheduledat':moment()[_0x74de('0x113')](_0x58a564[_0x74de('0x11b')],_0x74de('0xf6'))[_0x74de('0x76')](_0x74de('0xf7')),'ContactId':_0x6372d8[_0x74de('0xcc')],'ListId':_0x6372d8[_0x74de('0xf8')],'VoiceQueueId':_0x6372d8[_0x74de('0xce')]||undefined,'CampaignId':_0x6372d8[_0x74de('0xcf')]||undefined})[_0x74de('0xb0')](loggerCatch(_0x74de('0x196')));break;case 0x13:if(_0x6372d8[_0x74de('0xee')]>=_0x58a564[_0x74de('0xf2')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countmachineretry':_0x6372d8['countmachineretry']+=0x1,'scheduledat':moment()[_0x74de('0x113')](_0x58a564[_0x74de('0xf5')],_0x74de('0xf6'))['format'](_0x74de('0xf7')),'ContactId':_0x6372d8[_0x74de('0xcc')],'ListId':_0x6372d8[_0x74de('0xf8')],'VoiceQueueId':_0x6372d8[_0x74de('0xce')]||undefined,'CampaignId':_0x6372d8[_0x74de('0xcf')]||undefined})[_0x74de('0xb0')](loggerCatch(_0x74de('0x197')));break;case 0x14:if(_0x6372d8['countagentrejectretry']>=_0x58a564['dialAgentRejectMaxRetry']-0x1){return!![];}this[_0x74de('0xbb')]({'active':![],'countagentrejectretry':_0x6372d8[_0x74de('0xfc')]+=0x1,'scheduledat':moment()[_0x74de('0x113')](_0x58a564[_0x74de('0x198')],_0x74de('0xf6'))['format'](_0x74de('0xf7')),'ContactId':_0x6372d8[_0x74de('0xcc')],'ListId':_0x6372d8[_0x74de('0xf8')],'VoiceQueueId':_0x6372d8['VoiceQueueId']||undefined,'CampaignId':_0x6372d8[_0x74de('0xcf')]||undefined})[_0x74de('0xb0')](loggerCatch(_0x74de('0x199')));break;default:return!![];}};Dialer['prototype'][_0x74de('0x18a')]=function(_0x480034,_0x5f03cf,_0xe894e5){var _0x3eccc1=this;var _0x1fc050=new History(_0x480034);return new BPromise(function(_0x235139,_0x40786a){if(_[_0x74de('0x3b')](_0x5f03cf)&&typeof _0x5f03cf!==_0x74de('0x160')){return _0x40786a(msgResponse('[callProgressDetecting]','Failure',_0x74de('0x19a')));}if(_[_0x74de('0x3b')](_0xe894e5)&&typeof _0xe894e5!=='object'){return _0x40786a(msgResponse('[callProgressDetecting]','Failure',_0x74de('0x19b')));}switch(_0xe894e5[_0x74de('0x105')]){case'0':_0x5f03cf[_0x74de('0x19c')]+=0x1;_0x1fc050[_0x74de('0xa6')]=0x0;_0x1fc050['statedesc']=_0x74de('0x19d');_0x1fc050['countnosuchnumberretry']+=0x1;_0x1fc050[_0x74de('0xe4')]+=0x1;ami[_0x74de('0xe6')](_0x74de('0x19e'),ut[_0x74de('0xdf')](_0x480034,_0x74de('0x19f')));_0x3eccc1[_0x74de('0xc6')](_0x1fc050)[_0x74de('0xb0')](loggerCatch(_0x74de('0xe7')));if(_0x3eccc1[_0x74de('0x18b')](0x0,_0x480034,_0x5f03cf)){if(_0x1fc050['countnosuchnumberretry']>=_0x5f03cf[_0x74de('0x1a0')]){_0x3eccc1[_0x74de('0xf3')](_0x1fc050,_0x235139,_0x40786a,_0x74de('0x1a1'));}else{_0x3eccc1[_0x74de('0xf0')](_0x1fc050,_0x235139,_0x40786a,'reason\x200\x20no\x20such\x20number....');}}break;case'3':_0x5f03cf[_0x74de('0x60')]+=0x1;_0x1fc050[_0x74de('0xa6')]=0x3;_0x1fc050[_0x74de('0xa7')]=_0x74de('0x1a2');_0x1fc050[_0x74de('0xea')]+=0x1;_0x1fc050[_0x74de('0xe4')]+=0x1;ami[_0x74de('0xe6')](_0x74de('0x1a3'),ut[_0x74de('0xdf')](_0x480034,_0x74de('0x1a4')));_0x3eccc1[_0x74de('0xc6')](_0x1fc050)[_0x74de('0xb0')](loggerCatch('[syncAgentComplete][createHistory][3]'));if(_0x3eccc1[_0x74de('0x18b')](0x3,_0x480034,_0x5f03cf)){if(_0x1fc050[_0x74de('0xea')]>=_0x5f03cf[_0x74de('0x18c')]){_0x3eccc1[_0x74de('0xf3')](_0x1fc050,_0x235139,_0x40786a,_0x74de('0x1a5'));}else{_0x3eccc1[_0x74de('0xf0')](_0x1fc050,_0x235139,_0x40786a,_0x74de('0x1a5'));}}break;case'5':_0x5f03cf['outboundBusyCallsDay']+=0x1;_0x1fc050['state']=0x5;_0x1fc050[_0x74de('0xa7')]=_0x74de('0x1a6');_0x1fc050[_0x74de('0xe8')]+=0x1;_0x1fc050[_0x74de('0xe4')]+=0x1;ami['emit'](_0x74de('0x1a7'),ut[_0x74de('0xdf')](_0x480034,_0x74de('0x1a8')));_0x3eccc1[_0x74de('0xc6')](_0x1fc050)[_0x74de('0xb0')](loggerCatch(_0x74de('0x1a9')));if(_0x3eccc1[_0x74de('0x18b')](0x5,_0x480034,_0x5f03cf)){if(_0x1fc050[_0x74de('0xe8')]>=_0x5f03cf['dialBusyMaxRetry']){_0x3eccc1['createStateFinal'](_0x1fc050,_0x235139,_0x40786a,'reason\x205\x20busy');}else{_0x3eccc1[_0x74de('0xf0')](_0x1fc050,_0x235139,_0x40786a,_0x74de('0x1aa'));}}break;case'8':_0x5f03cf[_0x74de('0x5c')]+=0x1;_0x1fc050[_0x74de('0xa6')]=0x8;_0x1fc050[_0x74de('0xa7')]=_0x74de('0x1ab');_0x1fc050[_0x74de('0xe9')]+=0x1;_0x1fc050[_0x74de('0xe4')]+=0x1;ami['emit'](_0x74de('0x1ac'),ut[_0x74de('0xdf')](_0x480034,_0x74de('0x1ad')));_0x3eccc1[_0x74de('0xc6')](_0x1fc050)[_0x74de('0xb0')](loggerCatch(_0x74de('0x1ae')));if(_0x3eccc1[_0x74de('0x18b')](0x8,_0x480034,_0x5f03cf)){if(_0x1fc050['countcongestionretry']>=_0x5f03cf['dialCongestionMaxRetry']){_0x3eccc1[_0x74de('0xf3')](_0x1fc050,_0x235139,_0x40786a,'reason\x208\x20congestion');}else{_0x3eccc1['stateGlobal'](_0x1fc050,_0x235139,_0x40786a,'reason\x208\x20congestion');}}break;case'11':_0x5f03cf[_0x74de('0x1af')]+=0x1;_0x1fc050[_0x74de('0xa6')]=0xb;_0x1fc050[_0x74de('0xa7')]='Abandoned';_0x1fc050['countabandonedretry']+=0x1;_0x1fc050['countglobal']+=0x1;_0x3eccc1['createHistory'](_0x1fc050)[_0x74de('0xb0')](loggerCatch('[syncAgentComplete][createHistory][11]'));if(_0x3eccc1[_0x74de('0x18b')](0xb,_0x480034,_0x5f03cf)){if(_0x1fc050[_0x74de('0xed')]>=_0x5f03cf[_0x74de('0x195')]){_0x3eccc1[_0x74de('0xf3')](_0x1fc050,_0x235139,_0x40786a,_0x74de('0x1b0'));}else{_0x3eccc1['stateGlobal'](_0x1fc050,_0x235139,_0x40786a,'reason\x2011\x20abandoned');}}break;case'20':_0x5f03cf['outboundRejectCallsDay']+=0x1;_0x1fc050[_0x74de('0xa6')]=0x14;_0x1fc050[_0x74de('0xa7')]='AgentReject';_0x1fc050['countagentrejectretry']+=0x1;_0x1fc050[_0x74de('0xe4')]+=0x1;ami[_0x74de('0xe6')](_0x74de('0x1b1'),ut['buildObj'](_0x480034,_0x74de('0x1b2')));_0x3eccc1[_0x74de('0xc6')](_0x1fc050)[_0x74de('0xb0')](loggerCatch(_0x74de('0x1b3')));if(_0x3eccc1[_0x74de('0x18b')](0x14,_0x480034,_0x5f03cf)){if(_0x1fc050[_0x74de('0xfc')]>=_0x5f03cf[_0x74de('0x1b4')]){_0x3eccc1[_0x74de('0xf3')](_0x1fc050,_0x235139,_0x40786a,_0x74de('0x1b5'));}else{_0x3eccc1[_0x74de('0xf0')](_0x1fc050,_0x235139,_0x40786a,_0x74de('0x1b5'));}}break;default:_0x5f03cf[_0x74de('0x64')]+=0x1;_0x1fc050[_0x74de('0xa6')]=0xc;_0x1fc050[_0x74de('0xa7')]=_0xe894e5['reason'];_0x3eccc1[_0x74de('0xc6')](_0x1fc050)[_0x74de('0xb0')](loggerCatch(_0x74de('0x1b6')));if(_0x3eccc1[_0x74de('0x18b')](_0xe894e5[_0x74de('0x105')],_0x480034,_0x5f03cf)){if(_0x1fc050[_0x74de('0xe8')]+_0x1fc050['countcongestionretry']+_0x1fc050[_0x74de('0xea')]+_0x1fc050[_0x74de('0xeb')]+_0x1fc050[_0x74de('0xec')]+_0x1fc050[_0x74de('0xed')]+_0x1fc050[_0x74de('0xee')]+_0x1fc050['countagentrejectretry']>=_0x5f03cf['dialGlobalMaxRetry']){_0x3eccc1[_0x74de('0xf0')](_0x1fc050,_0x235139,_0x40786a,_0xe894e5['reason']);}else{_0x3eccc1[_0x74de('0xf3')](_0x1fc050,_0x235139,_0x40786a,_0xe894e5[_0x74de('0x105')]);}}}});};Dialer[_0x74de('0x1c')][_0x74de('0xf0')]=function(_0x2cfb46,_0x340c14,_0x3b9f2f,_0x5efb8d){var _0x26e132=new Final(_0x2cfb46);_0x26e132[_0x74de('0xa6')]=0xf;_0x26e132[_0x74de('0xa7')]=_0x74de('0x1b7');this[_0x74de('0xf3')](_0x26e132,_0x340c14,_0x3b9f2f,_0x5efb8d);};Dialer[_0x74de('0x1c')][_0x74de('0xf3')]=function(_0x43c1d3,_0x3a96c4,_0x511777,_0xaa958e){this[_0x74de('0xc4')](_0x43c1d3)[_0x74de('0xb9')](function(){return _0x3a96c4(msgResponse(_0x74de('0x1b8'),_0x74de('0x1b9'),_0xaa958e));})['catch'](function(){return _0x511777(msgResponse('[moveContactManagedDialer][0]',_0x74de('0x141'),'contact\x20not\x20moved'));});};Dialer[_0x74de('0x1c')]['predictive']=function(_0x21dc9e){var _0x49c7db=_0x21dc9e[_0x74de('0x1ba')]/0x64;var _0x14706e=_0x21dc9e['outboundDropCallsDayTimeout']/(_0x21dc9e['outboundDropCallsDayTimeout']+_0x21dc9e['outboundAnswerCallsDay']);var _0x5a883a=Math[_0x74de('0x1bb')](_0x21dc9e[_0x74de('0x6e')]*(_0x21dc9e[_0x74de('0x1bc')]/0x64));var _0x13768d=Math['round'](_0x21dc9e[_0x74de('0x6e')]*(_0x21dc9e[_0x74de('0x1bd')]/0x64));var _0x2c15e5=_0x21dc9e[_0x74de('0x4a')]+_0x21dc9e[_0x74de('0x4e')];var _0x1486fc=Math['floor'](_0x21dc9e[_0x74de('0x1be')]*_0x21dc9e[_0x74de('0x71')]*_0x21dc9e[_0x74de('0x6b')]*_0x21dc9e['predictiveIntervalMultiplicativeFactor']);if(_[_0x74de('0x3b')](_0x21dc9e[_0x74de('0x72')])){if(!_['isUndefined'](_0x21dc9e['startPredictive'])){_0x21dc9e['startPredictive']=undefined;loggerPredictive[_0x74de('0x94')](_0x74de('0x1bf'),_0x74de('0x1c0'));}if(!_[_0x74de('0x3b')](_0x21dc9e[_0x74de('0x8e')])){loggerPredictive['error'](_0x74de('0x1bf'),'check\x20handlePredictive\x20is\x20not\x20undefine');clearInterval(_0x21dc9e[_0x74de('0x8e')]);_0x21dc9e[_0x74de('0x8e')]=undefined;}_0x21dc9e[_0x74de('0x72')]=moment()['format'](_0x74de('0xf7'));loggerPredictive[_0x74de('0x7c')](_0x21dc9e[_0x74de('0x3e')],_0x74de('0x1c1'),_0x21dc9e['startProgressive']);this[_0x74de('0x154')](_0x21dc9e,0x1);}else if(ifInterval(_0x21dc9e['dialPredictiveInterval'],_0x21dc9e[_0x74de('0x72')])){this[_0x74de('0x154')](_0x21dc9e,0x1);loggerPredictiveCalls[_0x74de('0x7c')](_0x74de('0x1c2'),_0x21dc9e['startProgressive'],_0x21dc9e[_0x74de('0x3e')]);_0x21dc9e['erlangCalls']=0x0;_0x21dc9e[_0x74de('0x6a')]=0x0;}else if(_0x49c7db<_0x14706e&&_0x21dc9e[_0x74de('0x1c3')]===_0x74de('0x1c4')){freeVariablesPredictive(_0x21dc9e);loggerPredictive['info'](_0x74de('0x1c5'),'Dropped\x20calls\x20day',_0x14706e,'startProgressive',_0x21dc9e[_0x74de('0x3e')]);}else if(_0x1486fc<_0x21dc9e[_0x74de('0x6a')]&&_0x21dc9e[_0x74de('0x1c3')]===_0x74de('0x1c4')){freeVariablesPredictive(_0x21dc9e);loggerPredictive[_0x74de('0x7c')](_0x74de('0x1c6'),_0x74de('0x1c7'),_0x1486fc,_0x74de('0x1c8'),_0x21dc9e[_0x74de('0x6a')],_0x74de('0x72'),_0x21dc9e[_0x74de('0x3e')]);}else if(!ifInterval(_0x21dc9e['dialPredictiveInterval'],_0x21dc9e['startProgressive'])&&_[_0x74de('0x3b')](_0x21dc9e[_0x74de('0x2a')])&&!_[_0x74de('0x3b')](_0x21dc9e[_0x74de('0x72')])){_0x21dc9e[_0x74de('0x2a')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0x74de('0x7c')](_0x21dc9e[_0x74de('0x3e')],_0x74de('0x1c9'),_0x21dc9e['startPredictive']);this[_0x74de('0x1ca')](_0x21dc9e['dialPredictiveInterval'])['then'](this[_0x74de('0x1cb')](_0x21dc9e))[_0x74de('0xb9')](mergeDataErlangB(_0x21dc9e))[_0x74de('0xb9')](this[_0x74de('0x1cc')](_0x21dc9e))[_0x74de('0xb0')](loggerCatchPredictive(_0x74de('0x1cd'),_0x21dc9e));}else if(!ifInterval(_0x21dc9e[_0x74de('0x1ce')],_0x21dc9e['startPredictive'])){_0x21dc9e[_0x74de('0x6a')]=0x0;_0x21dc9e['startPredictive']=moment()['format'](_0x74de('0xf7'));loggerPredictive[_0x74de('0x7c')](_0x21dc9e[_0x74de('0x3e')],'recalculate\x20predictive\x20at',_0x21dc9e[_0x74de('0x2a')]);clearInterval(_0x21dc9e[_0x74de('0x8e')]);_0x21dc9e[_0x74de('0x8e')]=undefined;this['averageHandleTime'](_0x21dc9e[_0x74de('0x1ce')])['then'](this['getDataPredictive'](_0x21dc9e))[_0x74de('0xb9')](mergeDataErlangB(_0x21dc9e))[_0x74de('0xb9')](this[_0x74de('0x1cc')](_0x21dc9e))['catch'](loggerCatchPredictive(_0x74de('0x1cf'),_0x21dc9e));}else if(_0x21dc9e[_0x74de('0x6e')]&&_0x2c15e5<_0x21dc9e['predictiveIntervalAvailable']-_0x13768d){freeVariablesPredictive(_0x21dc9e);loggerPredictive[_0x74de('0x7c')](_0x21dc9e[_0x74de('0x3e')],_0x74de('0x1d0'),_0x2c15e5,')\x20are\x20less\x20than\x20threshold\x20(',_0x21dc9e['predictiveIntervalAvailable'],'-',_0x13768d,'=',_0x21dc9e['predictiveIntervalAvailable']-_0x13768d,')');}else if(_0x21dc9e[_0x74de('0x6e')]&&_0x2c15e5>_0x21dc9e[_0x74de('0x6e')]+_0x5a883a){freeVariablesPredictive(_0x21dc9e);loggerPredictive[_0x74de('0x7c')](_0x21dc9e[_0x74de('0x3e')],_0x74de('0x1d0'),_0x2c15e5,_0x74de('0x1d1'),_0x21dc9e[_0x74de('0x6e')],'+',_0x5a883a,'=',_0x21dc9e[_0x74de('0x6e')]+_0x5a883a,')');}};Dialer[_0x74de('0x1c')]['getDataPredictive']=function(_0x58de7c){var _0x16a510=this;return function(_0x49fcbb){return new BPromise(function(_0x57566c,_0x509a20){_[_0x74de('0x8c')](_0x58de7c,_0x49fcbb[0x0]);if(checkGetDataPredictive(_0x49fcbb[0x0])){var _0x155e47=_0x58de7c[_0x74de('0x6e')]=_0x58de7c[_0x74de('0x4e')]+_0x58de7c['available'];var _0x1d78a9=_0x58de7c[_0x74de('0x1ce')]*0x3c;var _0x38591f=_0x49fcbb[0x0]['predictiveIntervalAvgTalktime']+_0x49fcbb[0x0][_0x74de('0x66')];var _0x311e7e=(_0x49fcbb[0x0][_0x74de('0x65')]+_0x49fcbb[0x0][_0x74de('0x69')]+_0x49fcbb[0x0][_0x74de('0x68')])/_0x49fcbb[0x0]['predictiveIntervalTotalCalls'];_0x58de7c[_0x74de('0x6b')]=_0x311e7e>0x0?_0x311e7e:0x1;switch(_0x58de7c[_0x74de('0x1c3')]){case _0x74de('0x1c4'):var _0x1faf0d=_0x58de7c['dialPredictiveOptimizationPercentage']/0x64;return _0x16a510['abandonmentRate'](_0x155e47,_0x1d78a9,_0x38591f,_0x311e7e,_0x1faf0d)[_0x74de('0xb9')](function(_0x4ec5dd){return _0x57566c(_0x4ec5dd);});case _0x74de('0x1d2'):var _0x283b18=_0x58de7c[_0x74de('0x1ba')]/0x64;return _0x16a510[_0x74de('0x1d3')](_0x155e47,_0x1d78a9,_0x38591f,_0x311e7e,_0x283b18)[_0x74de('0xb9')](function(_0x29ea5c){return _0x57566c(_0x29ea5c);});default:return _0x509a20(msgResponse(_0x74de('0x1d4'),_0x74de('0x141'),_0x74de('0x1d5')));}}else{return _0x509a20(msgResponse('[getDataPredictive]','Failure',_0x74de('0x1d6')));}});};};Dialer[_0x74de('0x1c')][_0x74de('0x1d7')]=function(_0x196a86){var _0x4cb509=this;return function(_0x2d8b54){return new BPromise(function(_0x432d9c,_0x672b6d){_['merge'](_0x196a86,_0x2d8b54[0x0]);if(checkGetDataPredictive(_0x2d8b54[0x0])){loggerPredictive[_0x74de('0x7c')](JSON['stringify'](_0x2d8b54[0x0]));if(_0x196a86['dialPredictiveOptimization']===_0x74de('0x1c4')){return _0x4cb509[_0x74de('0xc3')](_0x196a86['id'])[_0x74de('0xb9')](function(_0x108751){var _0x1109e3=_0x196a86[_0x74de('0x4b')]-_0x108751[0x0]['outboundQueuePauses'];var _0xe7300e=_0x196a86[_0x74de('0x1ce')]*0x3c;var _0x596093=_0x2d8b54[0x0][_0x74de('0x67')]+_0x2d8b54[0x0][_0x74de('0x66')];var _0x10bdb6=(_0x2d8b54[0x0][_0x74de('0x65')]+_0x2d8b54[0x0][_0x74de('0x69')]+_0x2d8b54[0x0][_0x74de('0x68')])/_0x2d8b54[0x0][_0x74de('0x6f')];var _0x43dda8=_0x196a86[_0x74de('0x1ba')]/0x64;_0x196a86[_0x74de('0x6d')]=_0x108751[0x0][_0x74de('0x1d8')]||0x0;_0x196a86['predictiveIntervalHitRate']=_0x10bdb6>0x0?_0x10bdb6:0x1;return _0x4cb509['abandonmentRate'](_0x1109e3,_0xe7300e,_0x596093,_0x10bdb6,_0x43dda8);})['then'](function(_0x3afa68){return _0x432d9c(_0x3afa68);})[_0x74de('0xb0')](function(_0x287614){return _0x672b6d(msgResponse('[CatchErlangB]',_0x74de('0x141'),JSON[_0x74de('0x46')](_0x287614)));});}if(_0x196a86[_0x74de('0x1c3')]===_0x74de('0x1d2')){return _0x4cb509[_0x74de('0xc3')](_0x196a86['id'])[_0x74de('0xb9')](function(_0x1d06b3){var _0x16cf5c=_0x196a86[_0x74de('0x4b')]-_0x1d06b3[0x0]['outboundQueuePauses'];var _0x429f82=_0x196a86[_0x74de('0x1ce')]*0x3c;var _0x100901=_0x2d8b54[0x0]['predictiveIntervalAvgTalktime']+_0x2d8b54[0x0]['predictiveIntervalAvgHoldtime'];var _0x363c1e=(_0x2d8b54[0x0][_0x74de('0x65')]+_0x2d8b54[0x0][_0x74de('0x69')]+_0x2d8b54[0x0][_0x74de('0x68')])/_0x2d8b54[0x0][_0x74de('0x6f')];var _0x2db22b=_0x196a86['dialPredictiveOptimizationPercentage']/0x64;_0x196a86[_0x74de('0x6d')]=_0x1d06b3[0x0][_0x74de('0x1d8')]||0x0;_0x196a86['predictiveIntervalHitRate']=_0x363c1e>0x0?_0x363c1e:0x1;return _0x4cb509[_0x74de('0x1d3')](_0x16cf5c,_0x429f82,_0x100901,_0x363c1e,_0x2db22b);})['then'](function(_0x2d1d95){return _0x432d9c(_0x2d1d95);})['catch'](function(_0x5c1ef9){return _0x672b6d(msgResponse(_0x74de('0x1d9'),_0x74de('0x141'),JSON[_0x74de('0x46')](_0x5c1ef9)));});}}else{return _0x672b6d(msgResponse(_0x74de('0x1d4'),_0x74de('0x141'),_0x74de('0x1d6')));}});};};Dialer[_0x74de('0x1c')][_0x74de('0x1cc')]=function(_0x2f433a){var _0xcc15cb=this;return function(){var _0x5af2bf=0x0;var _0x4274e0=Math['floor'](_0x2f433a[_0x74de('0x70')]*0x3e8);if(_0x4274e0>0x0){_0x4274e0=_0x4274e0<0x64?0x64:_0x4274e0;loggerPredictive[_0x74de('0x7c')](_0x2f433a[_0x74de('0x3e')],_0x74de('0x1da'),_0x4274e0,_0x74de('0x47'));_0x2f433a[_0x74de('0x8e')]=setInterval(function(){_0xcc15cb[_0x74de('0x8e')](_0x2f433a);loggerPredictiveCalls[_0x74de('0x7c')](_0x74de('0x1db'),_0x5af2bf+=0x1);},_0x4274e0);}else{loggerPredictive[_0x74de('0x7c')](_0x2f433a[_0x74de('0x3e')],_0x74de('0x1dc'));}};};Dialer[_0x74de('0x1c')]['checkContactBlack']=function(_0x176a9e,_0x4f7e97){var _0x2500c3=this;return function(_0x2fd1c3){if(_[_0x74de('0x7b')](_0x2fd1c3)){if(_[_0x74de('0xac')](_0x4f7e97[_0x74de('0xcd')])||!_0x4f7e97[_0x74de('0x1dd')]){if(_0x176a9e[_0x74de('0x152')]===_0x74de('0x9')){_0x176a9e[_0x74de('0x128')]=_[_0x74de('0x3b')](_0x176a9e[_0x74de('0x128')])?!![]:_0x176a9e[_0x74de('0x128')];var _0x385904=uuid['v4']();_0x2500c3['actions'][_0x385904]=new Action(_0x176a9e,_0x4f7e97,_0x385904);loggerBooked[_0x74de('0x7c')](_0x74de('0x1de'),_0x385904,_0x74de('0x1df'),JSON[_0x74de('0x46')](_0x176a9e[_0x74de('0x128')]),_0x74de('0x1e0'),_0x176a9e['name']);if(_0x176a9e[_0x74de('0x128')]){_0x176a9e[_0x74de('0x128')]=![];_0x2500c3[_0x74de('0x122')][_0x2500c3[_0x74de('0xab')][_0x385904][_0x74de('0xb3')]]=[];ami[_0x74de('0xad')]({'actionid':_0x385904,'action':_0x74de('0x1e1'),'queue':_0x176a9e[_0x74de('0x3e')]})[_0x74de('0xb0')](function(){_0x2500c3[_0x74de('0xb1')](_0x176a9e);_0x2500c3[_0x74de('0xbb')]({'active':![],'ContactId':_0x2500c3[_0x74de('0xab')][_0x385904][_0x74de('0xcc')],'ListId':_0x2500c3[_0x74de('0xab')][_0x385904]['ListId'],'VoiceQueueId':_0x2500c3['actions'][_0x385904][_0x74de('0xce')]||undefined,'CampaignId':_0x2500c3[_0x74de('0xab')][_0x385904][_0x74de('0xcf')]||undefined})['catch'](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x2500c3[_0x74de('0xab')][_0x385904];});}else{loggerBooked['info'](_0x74de('0x1e2'),JSON[_0x74de('0x46')](_0x176a9e[_0x74de('0x128')]),_0x74de('0x1e0'),_0x176a9e['name']);_0x2500c3[_0x74de('0xb1')](_0x176a9e);_0x2500c3['rescheduleContact']({'active':![],'ContactId':_0x2500c3[_0x74de('0xab')][_0x385904][_0x74de('0xcc')],'ListId':_0x2500c3[_0x74de('0xab')][_0x385904]['ListId'],'VoiceQueueId':_0x2500c3[_0x74de('0xab')][_0x385904][_0x74de('0xce')]||undefined,'CampaignId':_0x2500c3[_0x74de('0xab')][_0x385904][_0x74de('0xcf')]||undefined})[_0x74de('0xb0')](loggerCatch(_0x74de('0x1e3')));delete _0x2500c3[_0x74de('0xab')][_0x385904];}}else{return _0x2500c3[_0x74de('0x15f')](_0x176a9e,_0x4f7e97);}}else{if(getDiff(_0x4f7e97[_0x74de('0x1e4')])<_0x176a9e['dialRecallMeTimeout']*0x3c){if(_0x4f7e97[_0x74de('0x1e5')]&&!_0x4f7e97[_0x74de('0x1e5')]['voicePause']){_0x2500c3['preview'][_0x74de('0x1e6')](_0x4f7e97['id'])['finally'](function(){_0x2500c3[_0x74de('0xb1')](_0x176a9e);});}else{_0x2500c3[_0x74de('0x1e7')]({'active':![]},_0x4f7e97['id'],0x1)[_0x74de('0x1f')](function(){_0x2500c3[_0x74de('0xb1')](_0x176a9e);});}}else{_0x176a9e[_0x74de('0x62')]+=0x1;_0x2500c3[_0x74de('0xb1')](_0x176a9e);if(_0x176a9e[_0x74de('0x1e8')]){_0x2500c3['rescheduleContact']({'active':![],'recallme':![],'UserId':null,'ContactId':_0x4f7e97['ContactId'],'ListId':_0x4f7e97[_0x74de('0xf8')],'VoiceQueueId':_0x4f7e97[_0x74de('0xce')]||undefined,'CampaignId':_0x4f7e97[_0x74de('0xcf')]||undefined})[_0x74de('0xb0')](loggerCatch(_0x74de('0x1e9')));_0x2500c3[_0x74de('0xc6')](createObjHistory(_0x176a9e,_0x4f7e97,_0x74de('0x1ea'),0x17,_0x74de('0x1eb')))[_0x74de('0xb0')](loggerCatch(_0x74de('0x1ec')));}else{_0x2500c3[_0x74de('0xd5')](createObjHistory(_0x176a9e,_0x4f7e97,_0x74de('0x1ed'),0x16,'RecallFailedTimeout'),_0x74de('0x1ee'),_0x74de('0x1ef'));}}}}else{_0x176a9e[_0x74de('0x5a')]+=0x1;_0x2500c3[_0x74de('0xd5')](createObjHistory(_0x176a9e,_0x4f7e97,_0x74de('0x1f0'),0xd,_0x74de('0x1f1')),_0x74de('0x1f2'),'[Originate][MoveBlacklist]');throw _0x74de('0x1f3');}};};Dialer['prototype'][_0x74de('0x156')]=function(_0x42688b){var _0x231529=this;var _0x5ae790=_0x42688b['limitCalls']-_0x42688b[_0x74de('0x97')]-_0x42688b[_0x74de('0xbf')];emitCampaignSummary(_0x42688b);if(_0x5ae790>0x0){if(_0x5ae790>this[_0x74de('0x25')]){_0x5ae790=this[_0x74de('0x25')];}_0x42688b['temp']+=_0x5ae790;this[_0x74de('0xc1')](_0x42688b['id'],_0x5ae790,_0x42688b[_0x74de('0x1f4')],_0x42688b)[_0x74de('0xb9')](function(_0x4bc915){_0x42688b[_0x74de('0xbf')]-=_0x5ae790;_0x42688b[_0x74de('0xbf')]=_0x42688b[_0x74de('0xbf')]>0x0?_0x42688b[_0x74de('0xbf')]:0x0;if(!checkContactEmpty(_0x4bc915)){_0x42688b[_0x74de('0x3c')]=_0x74de('0x9f');logger[_0x74de('0x7c')]('[getContactCampaign2][Empty]'+_0x42688b[_0x74de('0x3e')]);}else{_0x42688b[_0x74de('0x97')]+=_0x4bc915[_0x74de('0x96')];_0x42688b[_0x74de('0x3c')]=_0x74de('0x1f5');for(var _0x1a2d6c=0x0;_0x1a2d6c<_0x4bc915['length'];_0x1a2d6c+=0x1){_0x42688b[_0x74de('0x1f6')]+=0x1;if(_['isNil'](_0x4bc915[_0x1a2d6c])||_[_0x74de('0xac')](_0x4bc915[_0x1a2d6c][_0x74de('0x175')])||_['isNil'](_0x4bc915[_0x1a2d6c][_0x74de('0x175')][_0x74de('0x163')])){_0x231529[_0x74de('0xca')]('[actionOriginate]\x20',_0x42688b,_0x4bc915[_0x1a2d6c]);}else{_0x231529[_0x74de('0x1f7')](_['pick'](_0x4bc915[_0x1a2d6c],[_0x74de('0xcf'),_0x74de('0x1f8')]))[_0x74de('0xb9')](_0x231529[_0x74de('0x1f9')](_0x42688b,_0x4bc915[_0x1a2d6c]))[_0x74de('0xb0')](_0x231529[_0x74de('0xc9')](_0x74de('0x1fa'),_0x42688b));}}}})[_0x74de('0xb0')](loggerGetContactDialer(_0x74de('0x1fb'),_0x42688b,_0x5ae790));}};Dialer[_0x74de('0x1c')][_0x74de('0x154')]=function(_0x2b06f1,_0x36b63d){var _0x2ef347=this;var _0x1f4617=[];var _0x3bf735=_0x36b63d>=0x1?_0x36b63d:0x1;if(_0x2b06f1[_0x74de('0x152')]==='booked'){_0x3bf735=0x1;}var _0x49e353=Math['floor'](_0x2b06f1[_0x74de('0x4a')]*_0x3bf735)-_0x2b06f1[_0x74de('0x97')]-_0x2b06f1[_0x74de('0xbf')];emitVoiceQueueSummary(_0x2b06f1);if(_0x2b06f1[_0x74de('0x1fc')]>0x0){var _0x153bae=_0x2b06f1[_0x74de('0x1fc')]-_0x2b06f1[_0x74de('0x97')]-_0x2b06f1[_0x74de('0x4e')]-_0x2b06f1[_0x74de('0xbf')]-_0x2b06f1['pTalking'];if(_0x49e353>_0x153bae){_0x49e353=_0x153bae;}}if(_0x49e353>0x0){if(_0x2b06f1['dialMethod']===_0x74de('0x9')){_0x49e353=0x1;}if(_0x49e353>this[_0x74de('0x25')]){_0x49e353=this['maxNumberOriginate'];}_0x2b06f1['temp']+=_0x49e353;for(var _0x518ad8 in this[_0x74de('0x23')]){if(typeof this['agents'][_0x518ad8]!==_0x74de('0x98')){if(this[_0x74de('0x23')][_0x518ad8][_0x74de('0xa6')]===_0x74de('0x1fd')&&this['agents'][_0x518ad8][_0x74de('0xae')]===_0x74de('0x1fe')){_0x1f4617['push'](this[_0x74de('0x23')][_0x518ad8]['id']);}}}this[_0x74de('0xbe')](_0x2b06f1['id'],_0x1f4617,_0x49e353,_0x2b06f1['dialOrderByScheduledAt'],_0x2b06f1)[_0x74de('0xb9')](function(_0x5d3630){_0x2b06f1['temp']-=_0x49e353;_0x2b06f1[_0x74de('0xbf')]=_0x2b06f1['temp']>0x0?_0x2b06f1[_0x74de('0xbf')]:0x0;if(!checkContactEmpty(_0x5d3630)){_0x2ef347['countReScheduled'](_0x2b06f1)[_0x74de('0xb9')](sendMessageReschedule(_0x2b06f1))[_0x74de('0xb0')](loggerCatch(_0x74de('0xb7')));}else{_0x2b06f1['originated']+=_0x5d3630[_0x74de('0x96')];_0x2b06f1[_0x74de('0x3c')]=_0x2b06f1[_0x74de('0x152')]===_0x74de('0x9')?_0x74de('0x169'):_0x74de('0x1f5');for(var _0x35ac7f=0x0;_0x35ac7f<_0x5d3630[_0x74de('0x96')];_0x35ac7f+=0x1){if(_[_0x74de('0xac')](_0x5d3630[_0x35ac7f])||_[_0x74de('0xac')](_0x5d3630[_0x35ac7f][_0x74de('0x175')])||_[_0x74de('0xac')](_0x5d3630[_0x35ac7f][_0x74de('0x175')][_0x74de('0x163')])){_0x2ef347[_0x74de('0xca')](_0x74de('0x1ff'),_0x2b06f1,_0x5d3630[_0x35ac7f]);}else{_0x2ef347[_0x74de('0xb8')](_[_0x74de('0x124')](_0x5d3630[_0x35ac7f],[_0x74de('0xce'),'Contact.phone']))[_0x74de('0xb9')](_0x2ef347[_0x74de('0x1f9')](_0x2b06f1,_0x5d3630[_0x35ac7f]))['catch'](_0x2ef347[_0x74de('0xc9')](_0x74de('0x1ff'),_0x2b06f1));}}}})[_0x74de('0xb0')](loggerGetContactDialer(_0x74de('0x200'),_0x2b06f1,_0x49e353));}};Dialer[_0x74de('0x1c')][_0x74de('0x8e')]=function(_0x5ac63b){if(_0x5ac63b[_0x74de('0x1fc')]>0x0){var _0x2b51f1=_0x5ac63b['dialLimitQueue']-_0x5ac63b[_0x74de('0x97')]-_0x5ac63b['talking'];if(_0x2b51f1>0x0){this[_0x74de('0x201')](_0x5ac63b);}else{loggerPredictiveCalls[_0x74de('0x7c')](_0x74de('0x202'));}}else{this[_0x74de('0x201')](_0x5ac63b);}};Dialer[_0x74de('0x1c')][_0x74de('0x201')]=function(_0x33a4d5){var _0x59ae4d=this;var _0x3f69fb=[];_0x33a4d5[_0x74de('0x97')]+=0x1;for(var _0x7c7668 in this['agents']){if(typeof this['agents'][_0x7c7668]!==_0x74de('0x98')){if(this['agents'][_0x7c7668][_0x74de('0xa6')]===_0x74de('0x1fd')&&this['agents'][_0x7c7668][_0x74de('0xae')]===_0x74de('0x1fe')){_0x3f69fb[_0x74de('0x123')](this[_0x74de('0x23')][_0x7c7668]['id']);}}}this['getContactDialer'](_0x33a4d5['id'],_0x3f69fb,0x1,_0x33a4d5[_0x74de('0x1f4')],_0x33a4d5)['then'](function(_0x3e2398){if(!checkContactEmpty(_0x3e2398)){checkContactLowerLimitOriginate(_0x33a4d5,0x1,0x0);_0x59ae4d[_0x74de('0xb6')](_0x33a4d5)['then'](sendMessageReschedule(_0x33a4d5))['catch'](loggerCatch(_0x74de('0xb7')));}else{_0x33a4d5[_0x74de('0x3c')]=_0x74de('0x1f5');if(_['isNil'](_0x3e2398[0x0])||_[_0x74de('0xac')](_0x3e2398[0x0][_0x74de('0x175')])||_['isNil'](_0x3e2398[0x0][_0x74de('0x175')][_0x74de('0x163')])){_0x59ae4d[_0x74de('0xca')](_0x74de('0x1ff'),_0x33a4d5,_0x3e2398[0x0]);}else{_0x59ae4d['checkIsBlackList'](_[_0x74de('0x124')](_0x3e2398[0x0],['VoiceQueueId',_0x74de('0x1f8')]))[_0x74de('0xb9')](_0x59ae4d[_0x74de('0x1f9')](_0x33a4d5,_0x3e2398[0x0]))[_0x74de('0xb0')](_0x59ae4d[_0x74de('0xc9')]('[actionOriginatePredictive]\x20',_0x33a4d5));}}})[_0x74de('0xb0')](loggerGetContactDialer(_0x74de('0x203'),_0x33a4d5,0x1));emitVoiceQueueSummary(_0x33a4d5);};Dialer[_0x74de('0x1c')][_0x74de('0x204')]=function(_0x311b9d,_0xdf7da3,_0x4f8cda,_0x15a8f8,_0x4667e6,_0x4a50e6){loggerPredictive[_0x74de('0x7c')](_0x74de('0x205'));loggerPredictive[_0x74de('0x7c')](_0x74de('0x206'),_0x311b9d);loggerPredictive[_0x74de('0x7c')](_0x74de('0x207'),_0xdf7da3);loggerPredictive[_0x74de('0x7c')]('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',_0x4f8cda);loggerPredictive['info'](_0x74de('0x208'),_0x15a8f8);loggerPredictive[_0x74de('0x7c')](_0x74de('0x209'),_0x4667e6);loggerPredictive['info'](_0x74de('0x82'));return new BPromise(function(_0x4cd317,_0xbbf91b){if(_0x311b9d<=0x0||isNaN(_0x311b9d)){return _0xbbf91b(msgResponse(_0x74de('0x20a'),_0x74de('0x187'),_0x74de('0x20b')+_0x311b9d));}if(_0x4f8cda<=0x0||isNaN(_0x4f8cda)){return _0xbbf91b(msgResponse(_0x74de('0x20a'),'Error','Ts\x20=\x20'+_0x4f8cda));}if(_0x15a8f8<=0x0||isNaN(_0x15a8f8)){return _0xbbf91b(msgResponse(_0x74de('0x20a'),_0x74de('0x187'),_0x74de('0x20c')+_0x15a8f8));}if(_0xdf7da3<=0x0||isNaN(_0xdf7da3)){return _0xbbf91b(msgResponse(_0x74de('0x20a'),_0x74de('0x187'),_0x74de('0x20d')+_0xdf7da3));}if(_0x4667e6<=0x0||isNaN(_0x4667e6)){return _0xbbf91b(msgResponse(_0x74de('0x20a'),_0x74de('0x187'),_0x74de('0x20e')+_0x4667e6));}_0x4a50e6=_0x4a50e6||0x0;var _0x321ac4=0x1/_0x4f8cda;var _0x193972=0x0;var _0x59179d=0x0;var _0xffdb67=0x0;var _0x1ba0e2=0x0;for(var _0x5844e3=0x0;_0xffdb67<_0x4667e6;_0x5844e3+=0x1){_0x59179d=_0x5844e3/_0xdf7da3;_0x193972=(_0x15a8f8*_0x59179d+_0x4a50e6)/_0x321ac4;_0xffdb67=erlangb(_0x193972,_0x311b9d);_0x1ba0e2=_0x193972/_0x311b9d*(0x1-erlangb(_0x193972,_0x311b9d));}return _0x4cd317({'erlangCalls':_0x5844e3,'erlangCallToSecond':_0xdf7da3/_0x5844e3,'erlangAbandonmentRate':_0xffdb67,'erlangBusyFactor':_0x1ba0e2});});};Dialer[_0x74de('0x1c')][_0x74de('0x1d3')]=function(_0x1a5983,_0x1b161b,_0x2edeb3,_0x41d198,_0x42307d,_0x57df10){loggerPredictive[_0x74de('0x7c')](_0x74de('0x20f'));loggerPredictive[_0x74de('0x7c')](_0x74de('0x206'),_0x1a5983);loggerPredictive[_0x74de('0x7c')](_0x74de('0x207'),_0x1b161b);loggerPredictive[_0x74de('0x7c')]('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',_0x2edeb3);loggerPredictive['info'](_0x74de('0x208'),_0x41d198);loggerPredictive[_0x74de('0x7c')](_0x74de('0x210'),_0x42307d);loggerPredictive[_0x74de('0x7c')]('---------------------------');return new BPromise(function(_0x372a9e,_0x985bc1){if(_0x1a5983<=0x0||isNaN(_0x1a5983)){return _0x985bc1(msgResponse(_0x74de('0x211'),'Error','m\x20=\x20'+_0x1a5983));}if(_0x2edeb3<=0x0||isNaN(_0x2edeb3)){return _0x985bc1(msgResponse(_0x74de('0x211'),_0x74de('0x187'),_0x74de('0x212')+_0x2edeb3));}if(_0x41d198<=0x0||isNaN(_0x41d198)){return _0x985bc1(msgResponse('[busyFactor]',_0x74de('0x187'),_0x74de('0x20c')+_0x41d198));}if(_0x1b161b<=0x0||isNaN(_0x1b161b)){return _0x985bc1(msgResponse(_0x74de('0x211'),_0x74de('0x187'),'interval\x20=\x20'+_0x1b161b));}if(_0x42307d<=0x0||isNaN(_0x42307d)){return _0x985bc1(msgResponse(_0x74de('0x211'),_0x74de('0x187'),_0x74de('0x213')+_0x42307d));}_0x57df10=_0x57df10||0x0;var _0x245c4e=0x1/_0x2edeb3;var _0x155f89=0x0;var _0x432a21=0x0;var _0x72aaec=0x0;var _0x5e7bb1=0x0;for(var _0x40fdf1=0x0;_0x5e7bb1<_0x42307d;_0x40fdf1+=0x1){_0x432a21=_0x40fdf1/_0x1b161b;_0x155f89=(_0x41d198*_0x432a21+_0x57df10)/_0x245c4e;_0x72aaec=erlangb(_0x155f89,_0x1a5983);_0x5e7bb1=_0x155f89/_0x1a5983*(0x1-erlangb(_0x155f89,_0x1a5983));}return _0x372a9e({'erlangCalls':_0x40fdf1,'erlangCallToSecond':_0x1b161b/_0x40fdf1,'erlangAbandonmentRate':_0x72aaec,'erlangBusyFactor':_0x5e7bb1});});};module[_0x74de('0x214')]=Dialer;
\ No newline at end of file
+var _0xdb76=['dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalAvailable','predictiveIntervalTotalCalls','erlangCallToSecond','erlangBusyFactor','Trunk','active','callerid','stringify','md5','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','predictiveIntervalDroppedCallsCallersExit','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangCalls','erlangAbandonmentRate','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','clearing\x20variable\x20start\x20progressive','clearing\x20variable\x20start\x20predictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','error','inspect','stack','length','originated','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','contactsRescheduled','RESCHEDULED_CONTACTS','[getContactDialer2][Empty]','sendMessageOneNotActive','available','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','IS_DISACTIVED','is\x20disactive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','statedesc','endtime','starttime','clearZombieChannels','[uniqueid]','[actions]','isNil','Action','status','channel','catch','updateOriginated','queue','[Dialer][checkChannel][ivr]','resolve','checkIsBlackList','then','[checkIsBlackList]\x20','[checkIsBlackListIvr]\x20','averageHandleTime','[averageHandleTime]\x20','unlockContact','getContactDialer','temp','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[moveContactManagedDialer]\x20','createHistory','loggerHandler','notFound','saveInDb','merge','pick','ListId','UserId','VoiceQueueId','CampaignId','[emptyContact][createHistory]','[emptyContact]','Success','isTrunkReachable','SIP/%s','unmonitored','moveContactManagedDialer','syncVarSet','uniqueid','variable','exten','xcally-motion-dialer','dialAMDActive','value','HANGUP','state','HangupInAMD','AMD','custom:amd','amd','[syncHangupInAMD][createHistory]','Machine','membername','countmachineretry','countglobal','buildObj','[syncAgentComplete][createHistory][0]','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','rescheduleContact','add','minutes','YYYY-MM-DD\x20HH:mm:ss','ContactId','[rescheduleContact][Machine]','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','MACHINE','dialGlobalMaxRetry','reason\x2019\x20machine....','dialMachineRetryFrequency','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','[syncHangupIvr]','dialQueueProject','AnswerAGI','AGI','cause-txt','agent','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','answertime','queueCallerAbandonCreateState','[syncQueueCallerAbandon]\x20[Drop]','droptime','Drop','dropreason','dialQueueProject2','dialDropRetryFrequency','[rescheduleContact][Drop]','calleridnum','Abandoned','CALLEREXIT','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','calleridname','[syncAgentComplete][createHistory][11]','actionid','locked','stateinterface','strategy','push','paused','[unlockQueueStatus][undefined]','queueStatusComplete','[booked][unlockQueueStatus]','run','idHopper','[unlock][syncQueueStatusComplete]','queueBookedRR','_rr','unlockRR','[booked][RR]','Agent:\x20','contactAgent-idHopper:\x20','[Catch][Preview][syncQueueStatusComplete]','[booked][RR][finaly]','[booked][unlock]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','checkIsTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTime','checkIfTimeIntervals','Failure','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','\x20Intervals\x20is\x20empty\x20','timezones','TIMEZONE_UNKNOW','isArray','iftime\x20%s,%s','interval','content','indexOf','command','true','all','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','Global:\x20','Timezone:\x20','dialPowerLevel','launchHandleIvr','dialActive','dialGlobalInterval','dialTimezone','[syncQueueSummary]','syncCampaigns','[syncCampaigns]','\x5cw{0,','pow','replace','random','match','actionOriginate','object','originate','voiceQueue\x20is\x20undefine','Contact','phone','contact\x20is\x20undefine','getCaller','NONE','\x22agi://%s/square,%s\x22','\x22%s,%s%s,,,%s\x22','dialQueueTimeout','dialer','ACTIVE','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','XMD-AMDTOTALANALYSISTIME','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','tags','createdAt','toUpper','dialRandomLastDigitCallerIdNumber','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','originatecalleridnum','SIP/%s/%s%s','trim','dialCutDigit','substring','from-sip','[originateError]:\x20%s','[originate][error]','originate\x20action\x20Error','responsetime','isSuccess','response','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','countbusyretry','countagentrejectretry','dialNoAnswerMaxRetry','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','dialCongestionMaxRetry','dialCongestionRetryFrequency','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','[rescheduleContact][Abandoned]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','[callProgressDetecting]','entity\x20is\x20undefine','evt\x20is\x20undefine','reason','NoSuchNumber','custom:agentnosuchnumber','reason\x200\x20no\x20such\x20number....','NoAnswer','custom:agentnoanswer','noanswer','reason\x203\x20ringing\x20no\x20answer','Busy','custom:agentbusy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','custom:agentcongestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','outboundRejectCallsDay','AgentReject','agentreject','[syncAgentComplete][createHistory][20]','outboundUnknownCallsDay','[syncAgentComplete][createHistory][?]','Global','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','round','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','floor','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','handlePower','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','dialPredictiveInterval','started\x20in\x20predictive\x20at','getDataPredictive','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at',')\x20are\x20less\x20than\x20threshold\x20(','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20more\x20than\x20threshold\x20(','abandonmentRate','agentBusyFactor','busyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','getDataPredictiveOld','outboundQueuePauses','predictiveIntervalPauses','[CatchErlangB]','one\x20call\x20every:','[handlePredictive]','checkContactBlack','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','dialRecallMeTimeout','Agent','voicePause','preview','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','RECALLFAILEDTIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','BLACKLIST','Blacklist','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','inBlackList','handleIvr','limitCalls','dialOrderByScheduledAt','AVAILABLE_CONTACTS_FINISHED','[getContactCampaign2][Empty]','RUNNING','ivrTotalCallsDays','emptyContact','[actionOriginate]\x20','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','not_inuse','reachable','countReScheduled','[countReScheduled]\x20','Contact.phone','[getContactDialer2]','[handlePredictive][limitChannel]','tryOriginatePredictive','[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','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','m\x20=\x20','Ts\x20=\x20','[abandonmentRate]','Amax\x20=\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','p\x20=\x20','interval\x20=\x20','Umin\x20=\x20','exports','util','lodash','bluebird','uuid','moment','ioredis','../preview/util/util','../../../config/environment/','../../../config/logger','booked','predictive','syncQueueSummary','redis','defaults','localhost','socket.io-emitter','../rpc/cmHopperBlack','../rpc/voiceQueueRt','./history','./final','./agentComplete','./queueCallerAbandon','./hangup','env','rrmemory','roundrobin','prototype','enqueue','tail','finally','sequence','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','actions','uniqueId','optionPredictive','startPredictive','startProgressive','ivrOriginated','queueBooked','agentconnect','syncAgentConnect','queuecallerabandon','syncQueueCallerAbandon','bind','syncOriginateResponse','syncAgentComplete','custom:queuesummary','hangup','syncHangup','syncNewExten','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','isUndefined','message','AGENTS_NOT_LOGGED','name','NOT_ACTIVE','\x20NOT\x20Active','Interval','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','Intervals','isEmpty','Error','milliseconds','seconds','emit','outbound','answered','loggedIn','pTalking','sumDuration','talking','type','abandoned','loggedInDb'];(function(_0x2e8418,_0x58c529){var _0x548fe6=function(_0x2b2877){while(--_0x2b2877){_0x2e8418['push'](_0x2e8418['shift']());}};_0x548fe6(++_0x58c529);}(_0xdb76,0x1be));var _0x6db7=function(_0x3054af,_0x1a6737){_0x3054af=_0x3054af-0x0;var _0x47e386=_0xdb76[_0x3054af];return _0x47e386;};'use strict';var util=require(_0x6db7('0x0'));var _=require(_0x6db7('0x1'));var BPromise=require(_0x6db7('0x2'));var uuid=require(_0x6db7('0x3'));var moment=require(_0x6db7('0x4'));var rr=require('rr');var md5=require('md5');var Redis=require(_0x6db7('0x5'));var ut=require(_0x6db7('0x6'));var config=require(_0x6db7('0x7'));var logger=require(_0x6db7('0x8'))('dialer');var loggerBooked=require(_0x6db7('0x8'))(_0x6db7('0x9'));var loggerPredictive=require(_0x6db7('0x8'))(_0x6db7('0xa'));var loggerPredictiveCalls=require(_0x6db7('0x8'))('predictiveCalls');var loggerSyncQueueSummary=require(_0x6db7('0x8'))(_0x6db7('0xb'));var ami=require('../ami');config[_0x6db7('0xc')]=_[_0x6db7('0xd')](config[_0x6db7('0xc')],{'host':_0x6db7('0xe'),'port':0x18eb});var io=require(_0x6db7('0xf'))(new Redis(config[_0x6db7('0xc')]));var cmHopper=require('../rpc/cmHopper');var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperBlack=require(_0x6db7('0x10'));var voiceQueueRt=require(_0x6db7('0x11'));var Action=require('./action');var History=require(_0x6db7('0x12'));var Final=require(_0x6db7('0x13'));var AgentComplete=require(_0x6db7('0x14'));var QueueCallerAbandon=require(_0x6db7('0x15'));var Hangup=require(_0x6db7('0x16'));var ipAgi=process[_0x6db7('0x17')]['XCALLY_IP_AGI']||'127.0.0.1';var strategy={'rrmemory':_0x6db7('0x18'),'roundrobin':_0x6db7('0x19')};var Sequence=function(){};Sequence[_0x6db7('0x1a')][_0x6db7('0x1b')]=function(_0x9f999){this[_0x6db7('0x1c')]=this[_0x6db7('0x1c')]?this[_0x6db7('0x1c')][_0x6db7('0x1d')](_0x9f999):_0x9f999();};function Dialer(_0x3e4a49,_0x25df35){this[_0x6db7('0x1e')]=new Sequence();this['preview']=_0x25df35;this[_0x6db7('0x1f')]=_0x3e4a49[_0x6db7('0x1f')];this[_0x6db7('0x20')]=_0x3e4a49[_0x6db7('0x20')];this[_0x6db7('0x21')]=_0x3e4a49[_0x6db7('0x21')];this[_0x6db7('0x22')]=_0x3e4a49[_0x6db7('0x22')];this[_0x6db7('0x23')]=config[_0x6db7('0x23')]||0x2;this[_0x6db7('0x24')]={};this[_0x6db7('0x25')]={};this['contactsId']={};this[_0x6db7('0x26')]={};this[_0x6db7('0x27')]={};this[_0x6db7('0x28')]={};this[_0x6db7('0x29')]={};this[_0x6db7('0x2a')]={};this[_0x6db7('0x2b')]={};this['queueBookedRR']={};ami['on'](_0x6db7('0x2c'),this[_0x6db7('0x2d')]['bind'](this));ami['on'](_0x6db7('0x2e'),this[_0x6db7('0x2f')][_0x6db7('0x30')](this));ami['on']('originateresponse',this[_0x6db7('0x31')][_0x6db7('0x30')](this));ami['on']('agentcomplete',this[_0x6db7('0x32')][_0x6db7('0x30')](this));ami['on'](_0x6db7('0x33'),this['syncQueueSummary']['bind'](this));ami['on'](_0x6db7('0x34'),this[_0x6db7('0x35')][_0x6db7('0x30')](this));ami['on']('newexten',this[_0x6db7('0x36')][_0x6db7('0x30')](this));ami['on']('varset',this['syncVarSet'][_0x6db7('0x30')](this));ami['on'](_0x6db7('0x37'),this[_0x6db7('0x38')][_0x6db7('0x30')](this));ami['on'](_0x6db7('0x39'),this[_0x6db7('0x3a')]['bind'](this));this[_0x6db7('0x3b')]();this[_0x6db7('0x3c')]();}function isNotNull(_0x4a619d){return _0x4a619d!==null&&!_[_0x6db7('0x3d')](_0x4a619d);}function checkIsLoggedIn(_0x4f068e,_0xbff04f){return function(){if(_0xbff04f<=0x0){_0x4f068e[_0x6db7('0x3e')]=_0x6db7('0x3f');throw _0x4f068e[_0x6db7('0x40')]+'\x20AGENTS\x20NOT\x20LOGGED';}};}function isActive(_0xb4bf2b){return _0xb4bf2b;}function checkIsActive(_0x285adc,_0x236c63){return function(){if(!isActive(_0x236c63)){_0x285adc[_0x6db7('0x3e')]=_0x6db7('0x41');throw _0x285adc['name']+_0x6db7('0x42');}};}function checkInterval(_0x27c3fb){return function(){if(!isNotNull(_0x27c3fb[_0x6db7('0x43')])){_0x27c3fb['message']=_0x6db7('0x44');throw _0x27c3fb[_0x6db7('0x40')]+_0x6db7('0x45');}if(!isNotNull(_0x27c3fb['Interval'][_0x6db7('0x46')])){_0x27c3fb['message']=_0x6db7('0x44');throw _0x27c3fb['name']+'\x20INTERVAL_IS_NULL';}if(!isNotNull(_[_0x6db7('0x47')](_0x27c3fb[_0x6db7('0x43')][_0x6db7('0x46')]))){_0x27c3fb[_0x6db7('0x3e')]='INTERVAL_IS_NULL';throw _0x27c3fb['name']+_0x6db7('0x45');}};}function msgResponse(_0x459051,_0x58d60d,_0x3ad4d6){return{'action':_0x459051,'response':_0x58d60d,'message':_0x3ad4d6,'stack':_0x3ad4d6};}function myreject(_0x5ea735){return function(_0x11f618){return _0x5ea735(msgResponse('[ifTime][Action]',_0x6db7('0x48'),JSON['stringify'](_0x11f618)));};}function getSeconds(_0x478950,_0x73daca){var _0x7448da=moment(_0x478950)[_0x6db7('0x49')](0x0);var _0x20b875=moment(_0x73daca)[_0x6db7('0x49')](0x0);return _0x7448da['diff'](_0x20b875,_0x6db7('0x4a'));}function emit(_0x1ff3c9,_0x25483d,_0x8dc3ba){io['to'](_0x1ff3c9)[_0x6db7('0x4b')](_0x25483d,_0x8dc3ba);}function emitVoiceQueueSummary(_0x4ff457){if(_0x4ff457['type']===_0x6db7('0x4c')){var _0x465ac7={'id':_0x4ff457['id'],'name':_0x4ff457[_0x6db7('0x40')],'strategy':_0x4ff457['strategy'],'answered':_0x4ff457[_0x6db7('0x4d')],'available':_0x4ff457['available'],'loggedIn':_0x4ff457[_0x6db7('0x4e')],'pTalking':_0x4ff457[_0x6db7('0x4f')],'sumBillable':_0x4ff457['sumBillable'],'sumDuration':_0x4ff457[_0x6db7('0x50')],'sumHoldTime':_0x4ff457['sumHoldTime']||0x0,'talking':_0x4ff457[_0x6db7('0x51')],'total':_0x4ff457['total'],'type':_0x4ff457[_0x6db7('0x52')],'unmanaged':_0x4ff457['unmanaged'],'abandoned':_0x4ff457[_0x6db7('0x53')],'waiting':_0x4ff457['waiting'],'loggedInDb':_0x4ff457[_0x6db7('0x54')],'dialActive':_0x4ff457['dialActive'],'dialMethod':_0x4ff457[_0x6db7('0x55')],'dialOriginateCallerIdName':_0x4ff457[_0x6db7('0x56')],'dialOriginateCallerIdNumber':_0x4ff457[_0x6db7('0x57')],'dialOriginateTimeout':_0x4ff457['dialOriginateTimeout'],'dialPrefix':_0x4ff457[_0x6db7('0x58')],'outboundAnswerAgiCallsDay':_0x4ff457[_0x6db7('0x59')],'outboundAnswerCallsDay':_0x4ff457[_0x6db7('0x5a')],'outboundBlacklistCallsDay':_0x4ff457['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x4ff457[_0x6db7('0x5b')],'outboundCongestionCallsDay':_0x4ff457[_0x6db7('0x5c')],'outboundDropCallsDayACS':_0x4ff457[_0x6db7('0x5d')],'outboundDropCallsDayCallersExit':_0x4ff457[_0x6db7('0x5e')],'outboundDropCallsDayTimeout':_0x4ff457[_0x6db7('0x5f')],'outboundNoAnswerCallsDay':_0x4ff457[_0x6db7('0x60')],'outboundNoSuchCallsDay':_0x4ff457['outboundNoSuchCallsDay'],'outboundOriginateFailureCallsDay':_0x4ff457[_0x6db7('0x61')],'outboundReCallsDay':_0x4ff457[_0x6db7('0x62')],'outboundRejectCallsDay':_0x4ff457['outboundRejectCallsDay'],'outboundUnknownCallsDay':_0x4ff457['outboundUnknownCallsDay'],'predictiveIntervalAnsweredCalls':_0x4ff457[_0x6db7('0x63')],'predictiveIntervalAvgHoldtime':_0x4ff457[_0x6db7('0x64')],'predictiveIntervalAvgTalktime':_0x4ff457[_0x6db7('0x65')],'predictiveIntervalDroppedCallsCallersExit':_0x4ff457['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x4ff457[_0x6db7('0x66')],'predictiveIntervalErlangCalls':_0x4ff457[_0x6db7('0x67')],'predictiveIntervalErlangCallsDroppedCalls':_0x4ff457[_0x6db7('0x68')],'predictiveIntervalHitRate':_0x4ff457[_0x6db7('0x69')],'predictiveIntervalMultiplicativeFactor':_0x4ff457[_0x6db7('0x6a')],'predictiveIntervalPauses':_0x4ff457['predictiveIntervalPauses'],'predictiveIntervalAvailable':_0x4ff457[_0x6db7('0x6b')],'predictiveIntervalTotalCalls':_0x4ff457[_0x6db7('0x6c')],'message':_0x4ff457[_0x6db7('0x3e')],'originated':_0x4ff457['originated'],'erlangCalls':_0x4ff457['erlangCalls'],'erlangCallToSecond':_0x4ff457[_0x6db7('0x6d')],'erlangAbandonmentRate':_0x4ff457['erlangAbandonmentRate'],'erlangBusyFactor':_0x4ff457[_0x6db7('0x6e')],'startPredictive':_0x4ff457[_0x6db7('0x28')],'startProgressive':_0x4ff457['startProgressive']};if(_0x4ff457['Trunk']){_0x465ac7[_0x6db7('0x6f')]={'id':_0x4ff457[_0x6db7('0x6f')]['id'],'name':_0x4ff457[_0x6db7('0x6f')][_0x6db7('0x40')],'active':_0x4ff457[_0x6db7('0x6f')][_0x6db7('0x70')],'callerid':_0x4ff457[_0x6db7('0x6f')][_0x6db7('0x71')]};}if(_0x4ff457['Interval']){_0x465ac7[_0x6db7('0x43')]={'id':_0x4ff457[_0x6db7('0x43')]['id'],'name':_0x4ff457[_0x6db7('0x43')]['name']};}var _0x48b8a7=md5(JSON[_0x6db7('0x72')](_0x465ac7));if(_0x4ff457[_0x6db7('0x73')]!==_0x48b8a7){_0x4ff457[_0x6db7('0x73')]=_0x48b8a7;emit(util[_0x6db7('0x74')](_0x6db7('0x75'),_0x465ac7[_0x6db7('0x40')]),_0x6db7('0x76'),_0x465ac7);}}}function emitCampaignSummary(_0x482c9b){if(_0x482c9b[_0x6db7('0x52')]===_0x6db7('0x77')){emit(util[_0x6db7('0x74')](_0x6db7('0x78'),_0x482c9b['name']),_0x6db7('0x79'),_0x482c9b);}}function checkGetDataPredictive(_0x189504){if(isNotNull(_0x189504)&&!_[_0x6db7('0x47')](_0x189504)){loggerPredictive[_0x6db7('0x7a')]('-----\x20Stats\x20Predictive\x20---');loggerPredictive[_0x6db7('0x7a')](_0x6db7('0x7b'),_0x189504['predictiveIntervalTotalCalls']);loggerPredictive['info'](_0x6db7('0x7c'),_0x189504['predictiveIntervalAnsweredCalls']);loggerPredictive[_0x6db7('0x7a')]('Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x189504[_0x6db7('0x66')]);loggerPredictive[_0x6db7('0x7a')]('Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x189504[_0x6db7('0x7d')]);loggerPredictive[_0x6db7('0x7a')](_0x6db7('0x7e'),_0x189504[_0x6db7('0x64')]);loggerPredictive[_0x6db7('0x7a')](_0x6db7('0x7f'),_0x189504['predictiveIntervalAvgTalktime']);loggerPredictive[_0x6db7('0x7a')](_0x6db7('0x80'));if(_0x189504[_0x6db7('0x6c')]>0x0){if(!_[_0x6db7('0x3d')](_0x189504[_0x6db7('0x65')])&&_0x189504['predictiveIntervalAvgTalktime']>0x0){return!![];}loggerPredictive[_0x6db7('0x7a')](_0x6db7('0x81'));if(!_[_0x6db7('0x3d')](_0x189504[_0x6db7('0x64')])&&_0x189504[_0x6db7('0x64')]>0x0){return!![];}loggerPredictive[_0x6db7('0x7a')](_0x6db7('0x82'));}else{loggerPredictive[_0x6db7('0x7a')](_0x6db7('0x83'));}}else{loggerPredictive[_0x6db7('0x7a')]('History\x20information\x20are\x20empty');}return![];}function mergeDataErlangB(_0x588855){return function(_0xd9f098){loggerPredictive[_0x6db7('0x7a')](_0x6db7('0x84'));loggerPredictive[_0x6db7('0x7a')](_0x6db7('0x85'),_0xd9f098[_0x6db7('0x86')]);loggerPredictive['info']('One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0xd9f098[_0x6db7('0x6d')]);loggerPredictive[_0x6db7('0x7a')]('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0xd9f098[_0x6db7('0x87')]);loggerPredictive['info']('Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0xd9f098[_0x6db7('0x6e')]);loggerPredictive[_0x6db7('0x7a')](_0x6db7('0x88'),_0xd9f098[_0x6db7('0x87')]);loggerPredictive[_0x6db7('0x7a')](_0x6db7('0x80'));_['merge'](_0x588855,_0xd9f098);};}function getDiff(_0x1e7a92){var _0xacbd2f=moment()[_0x6db7('0x49')](0x0);var _0x363374=moment(_0x1e7a92)[_0x6db7('0x49')](0x0);return _0xacbd2f['diff'](_0x363374,_0x6db7('0x4a'));}function ifInterval(_0x4ad9ff,_0x336c7f){if(_[_0x6db7('0x3d')](_0x336c7f)){return![];}return getDiff(_0x336c7f)<_0x4ad9ff*0x3c;}function freeVariablesPredictive(_0x36e538){if(isNotNull(_0x36e538)){if(!_[_0x6db7('0x3d')](_0x36e538[_0x6db7('0x29')])){_0x36e538['startProgressive']=undefined;loggerPredictive[_0x6db7('0x7a')](_0x36e538['name'],_0x6db7('0x89'));}if(!_[_0x6db7('0x3d')](_0x36e538[_0x6db7('0x28')])){_0x36e538[_0x6db7('0x28')]=undefined;loggerPredictive[_0x6db7('0x7a')](_0x36e538['name'],_0x6db7('0x8a'));}if(!_[_0x6db7('0x3d')](_0x36e538[_0x6db7('0x8b')])){clearInterval(_0x36e538[_0x6db7('0x8b')]);_0x36e538['handlePredictive']=undefined;loggerPredictive[_0x6db7('0x7a')](_0x36e538[_0x6db7('0x40')],_0x6db7('0x8c'));}}}function erlangb(_0x1c6f44,_0x20cd5a){if(_0x20cd5a===0x0){return 0x0;}var _0x43c55c=0x1;for(var _0x3f7297=0x1;_0x3f7297<=_0x20cd5a;_0x3f7297+=0x1){_0x43c55c=0x1+_0x43c55c*_0x3f7297/_0x1c6f44;}return 0x1/_0x43c55c;}function isVoiceQueueOutbound(_0x7440f7){return _0x7440f7===_0x6db7('0x4c');}function isNotPreview(_0x3275cf){return _0x3275cf!=='preview';}function isCampaignIvr(_0x45124b){return _0x45124b===_0x6db7('0x77');}function getCallerId(_0x162418,_0x18ad95,_0x42cc0b){if(!_['isUndefined'](_0x42cc0b)&&typeof _0x42cc0b===_0x6db7('0x8d')&&!_[_0x6db7('0x47')](_0x42cc0b)){if(!_[_0x6db7('0x3d')](_0x18ad95)&&typeof _0x18ad95===_0x6db7('0x8d')&&!_['isEmpty'](_0x18ad95)){return util[_0x6db7('0x74')](_0x6db7('0x8e'),_0x18ad95,_0x42cc0b);}return util[_0x6db7('0x74')](_0x6db7('0x8e'),_0x42cc0b,_0x42cc0b);}if(!_['isUndefined'](_0x162418)&&typeof _0x162418===_0x6db7('0x8d')&&!_[_0x6db7('0x47')](_0x162418)){return _0x162418;}return _0x6db7('0x8f');}function loggerCatchQueueSummary(_0x3f7eb0,_0x1e813c){return function(_0x2db728){freeVariablesPredictive(_0x1e813c);emitVoiceQueueSummary(_0x1e813c);emitCampaignSummary(_0x1e813c);loggerSyncQueueSummary[_0x6db7('0x90')](_0x3f7eb0,util[_0x6db7('0x91')](_0x2db728,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x379c58,_0x41c665){return function(_0x4c5755){loggerPredictive[_0x6db7('0x90')](_0x41c665[_0x6db7('0x40')],_0x379c58);loggerPredictive[_0x6db7('0x90')](_0x4c5755[_0x6db7('0x92')]);freeVariablesPredictive(_0x41c665);};}function loggerCatch(_0x11eec4){return function(_0x44f5e0){logger['error'](_0x11eec4,util[_0x6db7('0x91')](_0x44f5e0,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x34f4eb){return _0x34f4eb&&!_[_0x6db7('0x3d')](_0x34f4eb)&&_0x34f4eb[_0x6db7('0x93')]>0x0;}function decremetOriginate(_0x1e2cc7){if(!_[_0x6db7('0x3d')](_0x1e2cc7)&&_0x1e2cc7!==null){if(typeof _0x1e2cc7[_0x6db7('0x94')]!==_0x6db7('0x95')){if(_0x1e2cc7['originated']>0x0){_0x1e2cc7[_0x6db7('0x94')]-=0x1;}else{logger[_0x6db7('0x90')](_0x6db7('0x96'));}}}else{logger[_0x6db7('0x90')]('[decremetOriginate]\x20is\x20null\x20or\x20undefined');}}function checkContactLowerLimitOriginate(_0x3d6cd2,_0x3b3b02,_0x12f4a1){if(_0x3b3b02>_0x12f4a1){for(var _0x389db0=0x0;_0x389db0<_0x3b3b02-_0x12f4a1;_0x389db0+=0x1){decremetOriginate(_0x3d6cd2);}}}function loggerGetContactDialer(_0x14de39,_0xb650b8,_0x12904a){return function(_0x91832d){checkContactLowerLimitOriginate(_0xb650b8,_0x12904a,0x0);logger[_0x6db7('0x90')](_0x14de39,util['inspect'](_0x91832d,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x303246){return function(_0xc0dc1a){if(isNotNull(_0xc0dc1a)&&isNotNull(_0xc0dc1a[0x0])){if(_0xc0dc1a[0x0][_0x6db7('0x97')]>0x0){_0x303246[_0x6db7('0x3e')]=_0x6db7('0x98');logger[_0x6db7('0x7a')]('[getContactDialer2][ReScheduled]'+_0x303246[_0x6db7('0x40')],_0xc0dc1a[0x0][_0x6db7('0x97')],'contacts');}else{_0x303246[_0x6db7('0x3e')]='AVAILABLE_CONTACTS_FINISHED';logger['info'](_0x6db7('0x99')+_0x303246['name']);}}};}function notSendMessagesQueue(_0x1b2cad){if(_0x1b2cad[_0x6db7('0x9a')]){freeVariablesPredictive(_0x1b2cad);if(_0x1b2cad[_0x6db7('0x94')]===0x0&&_0x1b2cad[_0x6db7('0x51')]===0x0&&_0x1b2cad['waiting']===0x0&&(_0x1b2cad[_0x6db7('0x4f')]||0x0)===0x0){_0x1b2cad[_0x6db7('0x9a')]=![];_0x1b2cad[_0x6db7('0x9b')]=0x0;_0x1b2cad[_0x6db7('0x3e')]=_0x6db7('0x41');loggerSyncQueueSummary[_0x6db7('0x90')](_0x6db7('0x9c'),_0x1b2cad[_0x6db7('0x40')],_0x6db7('0x9d'));}else{_0x1b2cad[_0x6db7('0x3e')]=_0x6db7('0x9e');loggerSyncQueueSummary[_0x6db7('0x90')](_0x6db7('0x9c'),_0x1b2cad[_0x6db7('0x40')],_0x6db7('0x9f'));}emitVoiceQueueSummary(_0x1b2cad);}}function notSendMessagesCampaign(_0xba8d65){if(_0xba8d65['sendMessageOneNotActive']){if(_0xba8d65['originated']===0x0){_0xba8d65[_0x6db7('0x9a')]=![];_0xba8d65[_0x6db7('0x3e')]=_0x6db7('0x41');loggerSyncQueueSummary[_0x6db7('0x90')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0xba8d65['name'],_0x6db7('0x9d'));}else{_0xba8d65[_0x6db7('0x3e')]=_0x6db7('0x9e');loggerSyncQueueSummary['error'](_0x6db7('0xa0'),_0xba8d65['name'],'is\x20disactive');}emitCampaignSummary(_0xba8d65);}}function createObjHistory(_0xecfa7d,_0x39641f,_0x293954,_0x5a37e6,_0x120f49){_0xecfa7d[_0x6db7('0x3e')]=_0x293954;var _0x299f8f=new Action(_0xecfa7d,_0x39641f);var _0x4c203e=new History(_0x299f8f);_0x4c203e['state']=_0x5a37e6;_0x4c203e[_0x6db7('0xa1')]=_0x120f49;_0x4c203e[_0x6db7('0xa2')]=_0x299f8f[_0x6db7('0xa3')];return _0x4c203e;}Dialer[_0x6db7('0x1a')]['loopClearZombieChannels']=function(){var _0x215426=this;setInterval(function(){_0x215426[_0x6db7('0xa4')](_0x215426[_0x6db7('0x26')],_0x6db7('0xa5'));_0x215426[_0x6db7('0xa4')](_0x215426['actions'],_0x6db7('0xa6'));},0x32c8);};Dialer[_0x6db7('0x1a')][_0x6db7('0xa4')]=function(_0x33716f,_0x2659d5){var _0x1a1bba=this;for(var _0x552cd9 in _0x33716f){if(typeof _0x33716f[_0x552cd9]!==_0x6db7('0x95')){this[_0x6db7('0x1e')][_0x6db7('0x1b')](function(){if(!_[_0x6db7('0xa7')](_0x33716f[_0x552cd9])){return ami[_0x6db7('0xa8')]({'action':_0x6db7('0xa9'),'channel':_0x33716f[_0x552cd9][_0x6db7('0xaa')]})[_0x6db7('0xab')](function(_0xbe1233){if(_0xbe1233['message']==='No\x20such\x20channel'){setTimeout(function(){if(_0x33716f[_0x552cd9]&&_0x33716f[_0x552cd9][_0x6db7('0x52')]!==_0x6db7('0x77')){_0x1a1bba[_0x6db7('0xac')](_0x1a1bba[_0x6db7('0x1f')][_0x33716f[_0x552cd9][_0x6db7('0xad')]]);logger[_0x6db7('0x90')]('[Dialer][checkChannel]',_0x2659d5,_0x552cd9,_0x33716f[_0x552cd9]['queue']);delete _0x33716f[_0x552cd9];}if(_0x33716f[_0x552cd9]&&_0x33716f[_0x552cd9][_0x6db7('0x52')]==='ivr'){_0x1a1bba['updateOriginated'](_0x1a1bba[_0x6db7('0x20')][_0x33716f[_0x552cd9][_0x6db7('0xad')]]);logger[_0x6db7('0x90')](_0x6db7('0xae'),_0x2659d5,_0x552cd9,_0x33716f[_0x552cd9][_0x6db7('0xad')]);delete _0x33716f[_0x552cd9];}},0x2328);}});}});}}};Dialer[_0x6db7('0x1a')]['countReScheduled']=function(_0x298cf3){return BPromise[_0x6db7('0xaf')]()['then'](cmHopper['countReScheduled'](_0x298cf3))[_0x6db7('0xab')](loggerCatch('[countReScheduled]\x20'));};Dialer['prototype'][_0x6db7('0xb0')]=function(_0x74c289){return BPromise['resolve']()[_0x6db7('0xb1')](cmHopperBlack['checkIsBlackList'](_0x74c289))[_0x6db7('0xab')](loggerCatch(_0x6db7('0xb2')));};Dialer[_0x6db7('0x1a')]['checkIsBlackListIvr']=function(_0x3806c2){return BPromise[_0x6db7('0xaf')]()['then'](cmHopperBlack['checkIsBlackListIvr'](_0x3806c2))[_0x6db7('0xab')](loggerCatch(_0x6db7('0xb3')));};Dialer[_0x6db7('0x1a')][_0x6db7('0xb4')]=function(_0xcc4451){return BPromise[_0x6db7('0xaf')]()['then'](cmHopperHistory['avgHandleTime'](_0xcc4451))[_0x6db7('0xab')](loggerCatch(_0x6db7('0xb5')));};Dialer['prototype']['rescheduleContact']=function(_0x2c724a){return BPromise[_0x6db7('0xaf')]()['then'](cmHopper['rescheduleContact'](_0x2c724a))[_0x6db7('0xab')](loggerCatch('[rescheduleContact]\x20'));};Dialer[_0x6db7('0x1a')][_0x6db7('0xb6')]=function(_0x5f1c4e,_0x126033,_0x45b4e4){return BPromise['resolve']()[_0x6db7('0xb1')](cmHopper['unlockContact'](_0x5f1c4e,_0x126033,_0x45b4e4))['catch'](loggerCatch('[unlockContact]\x20'));};Dialer[_0x6db7('0x1a')][_0x6db7('0xb7')]=function(_0x19ab22,_0x527508,_0x1f5aca,_0x27b16e,_0x3e8af1){return BPromise[_0x6db7('0xaf')]()[_0x6db7('0xb1')](cmHopper[_0x6db7('0xb7')](_0x19ab22,_0x527508,_0x1f5aca,_0x27b16e))['catch'](function(_0x5c678b){_0x3e8af1[_0x6db7('0xb8')]-=_0x1f5aca;_0x3e8af1[_0x6db7('0xb8')]=_0x3e8af1[_0x6db7('0xb8')]>0x0?_0x3e8af1[_0x6db7('0xb8')]:0x0;loggerCatch('[getContactDialer]\x20')(_0x5c678b);});};Dialer['prototype'][_0x6db7('0xb9')]=function(_0x366d96,_0x1ac4f5,_0x39c204,_0x130c90){return BPromise[_0x6db7('0xaf')]()[_0x6db7('0xb1')](cmHopper[_0x6db7('0xb9')](_0x366d96,_0x1ac4f5,_0x39c204))['catch'](function(_0x75b7e7){_0x130c90[_0x6db7('0xb8')]-=_0x1ac4f5;_0x130c90[_0x6db7('0xb8')]=_0x130c90[_0x6db7('0xb8')]>0x0?_0x130c90[_0x6db7('0xb8')]:0x0;loggerCatch(_0x6db7('0xba'))(_0x75b7e7);});};Dialer[_0x6db7('0x1a')][_0x6db7('0xbb')]=function(_0x5b7b83){return BPromise[_0x6db7('0xaf')]()[_0x6db7('0xb1')](voiceQueueRt[_0x6db7('0xbb')](_0x5b7b83))[_0x6db7('0xab')](loggerCatch('[getVoiceQueueRtPauses]\x20'));};Dialer['prototype']['moveContactManagedDialer']=function(_0x4451c0){return BPromise[_0x6db7('0xaf')]()[_0x6db7('0xb1')](cmHopper['moveContactManagedDialer'](_0x4451c0))[_0x6db7('0xab')](loggerCatch(_0x6db7('0xbc')));};Dialer[_0x6db7('0x1a')][_0x6db7('0xbd')]=function(_0x5a4a2d){return BPromise[_0x6db7('0xaf')]()[_0x6db7('0xb1')](cmHopperHistory[_0x6db7('0xbd')](_0x5a4a2d))[_0x6db7('0xab')](loggerCatch('[createHistory]\x20'));};Dialer[_0x6db7('0x1a')][_0x6db7('0xac')]=function(_0x5e1c59){if(!_['isUndefined'](_0x5e1c59)&&_0x5e1c59!==null){if(typeof _0x5e1c59[_0x6db7('0x94')]!=='undefined'){if(_0x5e1c59[_0x6db7('0x94')]>0x0){_0x5e1c59[_0x6db7('0x94')]-=0x1;}else{logger[_0x6db7('0x90')]('[updateOriginated]\x20object\x20originated\x20is\x20negative');}}}else{logger[_0x6db7('0x90')]('[updateOriginated]\x20is\x20null\x20or\x20undefined');}};Dialer[_0x6db7('0x1a')][_0x6db7('0xbe')]=function(_0x4de82e,_0x37bc19){var _0x2008a5=this;return function(_0x1bca25){_0x2008a5[_0x6db7('0xac')](_0x37bc19);logger[_0x6db7('0x90')](_0x4de82e,util['inspect'](_0x1bca25,{'showHidden':![],'depth':null}));};};Dialer[_0x6db7('0x1a')]['emptyContact']=function(_0x38d828,_0x25df0b,_0x1a42a1){var _0x3db953={'state':0x19,'statedesc':_0x6db7('0xbf')};this[_0x6db7('0xac')](_0x25df0b);this[_0x6db7('0xc0')](_[_0x6db7('0xc1')](_0x3db953,_[_0x6db7('0xc2')](_0x1a42a1,['ContactId',_0x6db7('0xc3'),_0x6db7('0xc4'),_0x6db7('0xc5'),_0x6db7('0xc6')])),_0x6db7('0xc7'),_0x6db7('0xc8'));logger[_0x6db7('0x90')](_0x38d828);};Dialer[_0x6db7('0x1a')]['isSuccess']=function(_0x124502){return _0x124502===_0x6db7('0xc9');};Dialer[_0x6db7('0x1a')][_0x6db7('0xca')]=function(_0xbfccbc){return!_[_0x6db7('0x3d')](_0xbfccbc)&&_0xbfccbc&&!_[_0x6db7('0x3d')](_0xbfccbc[_0x6db7('0x40')])&&!_['isUndefined'](_0xbfccbc['active'])&&_0xbfccbc[_0x6db7('0x70')]&&(this['trunks'][util[_0x6db7('0x74')](_0x6db7('0xcb'),_0xbfccbc[_0x6db7('0x40')])][_0x6db7('0xa9')]==='reachable'||this[_0x6db7('0x22')][util[_0x6db7('0x74')](_0x6db7('0xcb'),_0xbfccbc[_0x6db7('0x40')])][_0x6db7('0xa9')]===_0x6db7('0xcc'));};Dialer[_0x6db7('0x1a')][_0x6db7('0xc0')]=function(_0x2b2c69,_0x3603a6,_0x24af46){this[_0x6db7('0xbd')](_0x2b2c69)['catch'](loggerCatch(_0x3603a6));this[_0x6db7('0xcd')](_0x2b2c69)[_0x6db7('0xab')](loggerCatch(_0x24af46));};Dialer['prototype'][_0x6db7('0xce')]=function(_0x31996a){var _0x27674c=this['uniqueId'][_0x31996a[_0x6db7('0xcf')]];var _0x2dd33b;if(!_['isNil'](_0x31996a)&&!_['isNil'](_0x31996a[_0x6db7('0xd0')])&&!_[_0x6db7('0xa7')](_0x31996a[_0x6db7('0xd0')]['amdstatus'])&&_0x31996a[_0x6db7('0xd1')]===_0x6db7('0xd2')&&_0x27674c){if(_0x27674c['type']!=='ivr'&&this[_0x6db7('0x1f')][_0x27674c[_0x6db7('0xad')]][_0x6db7('0xd3')]&&_0x31996a[_0x6db7('0xd4')]===_0x6db7('0xd5')){delete this[_0x6db7('0x26')][_0x31996a[_0x6db7('0xcf')]];this[_0x6db7('0xac')](this['voiceQueues'][_0x27674c[_0x6db7('0xad')]]);this[_0x6db7('0x1f')][_0x27674c[_0x6db7('0xad')]][_0x6db7('0x5a')]+=0x1;this[_0x6db7('0x1f')][_0x27674c[_0x6db7('0xad')]][_0x6db7('0x59')]+=0x1;_0x2dd33b=new Hangup(_0x27674c,_0x31996a);_0x2dd33b[_0x6db7('0xd6')]=0x12;_0x2dd33b[_0x6db7('0xa1')]=_0x6db7('0xd7');_0x2dd33b['membername']=_0x6db7('0xd8');ami[_0x6db7('0x4b')](_0x6db7('0xd9'),ut['buildObj'](_0x2dd33b,_0x6db7('0xda')));this[_0x6db7('0xc0')](_0x2dd33b,_0x6db7('0xdb'),'[syncHangupInAMD]');}if(_0x27674c[_0x6db7('0x52')]!==_0x6db7('0x77')&&this['voiceQueues'][_0x27674c['queue']][_0x6db7('0xd3')]&&_0x31996a[_0x6db7('0xd4')]==='MACHINE'){var _0x89c7c5=this;return new BPromise(function(_0x16ac21,_0x1e876e){delete _0x89c7c5[_0x6db7('0x26')][_0x31996a[_0x6db7('0xcf')]];_0x89c7c5[_0x6db7('0xac')](_0x89c7c5[_0x6db7('0x1f')][_0x27674c['queue']]);_0x89c7c5[_0x6db7('0x1f')][_0x27674c[_0x6db7('0xad')]][_0x6db7('0x5a')]+=0x1;_0x89c7c5[_0x6db7('0x1f')][_0x27674c[_0x6db7('0xad')]]['outboundAnswerAgiCallsDay']+=0x1;var _0x153209=_0x89c7c5['voiceQueues'][_0x27674c[_0x6db7('0xad')]];var _0x1170fe=new Hangup(_0x27674c,_0x31996a);_0x1170fe[_0x6db7('0xd6')]=0x13;_0x1170fe[_0x6db7('0xa1')]=_0x6db7('0xdc');_0x1170fe[_0x6db7('0xdd')]=_0x6db7('0xd8');_0x1170fe[_0x6db7('0xde')]+=0x1;_0x1170fe[_0x6db7('0xdf')]+=0x1;_0x1170fe[_0x6db7('0xda')]=!![];ami[_0x6db7('0x4b')](_0x6db7('0xd9'),ut[_0x6db7('0xe0')](_0x1170fe,'amd'));_0x89c7c5['createHistory'](_0x1170fe)[_0x6db7('0xab')](loggerCatch(_0x6db7('0xe1')));if(_0x1170fe['countbusyretry']+_0x1170fe[_0x6db7('0xe2')]+_0x1170fe[_0x6db7('0xe3')]+_0x1170fe[_0x6db7('0xe4')]+_0x1170fe[_0x6db7('0xe5')]+_0x1170fe[_0x6db7('0xe6')]+_0x1170fe['countmachineretry']+_0x1170fe['countagentrejectretry']>=_0x153209['dialGlobalMaxRetry']){_0x89c7c5[_0x6db7('0xe7')](_0x1170fe,_0x16ac21,_0x1e876e,_0x6db7('0xe8'));}else{if(_0x1170fe[_0x6db7('0xde')]>=_0x153209[_0x6db7('0xe9')]){_0x89c7c5[_0x6db7('0xea')](_0x1170fe,_0x16ac21,_0x1e876e,'reason\x2019\x20machine....');}else{_0x89c7c5[_0x6db7('0xeb')]({'active':![],'countmachineretry':_0x1170fe['countmachineretry'],'scheduledat':moment()[_0x6db7('0xec')](_0x153209['dialMachineRetryFrequency'],_0x6db7('0xed'))['format'](_0x6db7('0xee')),'ContactId':_0x1170fe[_0x6db7('0xef')],'ListId':_0x1170fe[_0x6db7('0xc3')],'VoiceQueueId':_0x1170fe[_0x6db7('0xc5')]||undefined,'CampaignId':_0x1170fe[_0x6db7('0xc6')]||undefined})[_0x6db7('0xab')](loggerCatch(_0x6db7('0xf0')));_0x16ac21({'reschedule':0x1});}}});}if(_0x27674c[_0x6db7('0x52')]===_0x6db7('0x77')&&this[_0x6db7('0x20')][_0x27674c[_0x6db7('0xad')]][_0x6db7('0xd3')]&&_0x31996a['value']===_0x6db7('0xd5')){delete this[_0x6db7('0x26')][_0x31996a[_0x6db7('0xcf')]];this['updateOriginated'](this[_0x6db7('0x20')][_0x27674c[_0x6db7('0xad')]]);_0x2dd33b=new Hangup(_0x27674c,_0x31996a);_0x2dd33b[_0x6db7('0xd6')]=0x12;_0x2dd33b['statedesc']=_0x6db7('0xd7');_0x2dd33b[_0x6db7('0xdd')]=_0x6db7('0xd8');ami[_0x6db7('0x4b')](_0x6db7('0xd9'),ut['buildObj'](_0x2dd33b,_0x6db7('0xda')));this[_0x6db7('0xc0')](_0x2dd33b,_0x6db7('0xf1'),_0x6db7('0xf2'));}if(_0x27674c[_0x6db7('0x52')]==='ivr'&&this[_0x6db7('0x20')][_0x27674c[_0x6db7('0xad')]][_0x6db7('0xd3')]&&_0x31996a['value']===_0x6db7('0xf3')){var _0x89c7c5=this;return new BPromise(function(_0x3b10d6,_0x54f753){delete _0x89c7c5[_0x6db7('0x26')][_0x31996a['uniqueid']];_0x89c7c5[_0x6db7('0xac')](_0x89c7c5['campaigns'][_0x27674c['queue']]);_0x89c7c5[_0x6db7('0x20')][_0x27674c[_0x6db7('0xad')]][_0x6db7('0x5a')]+=0x1;_0x89c7c5[_0x6db7('0x20')][_0x27674c[_0x6db7('0xad')]][_0x6db7('0x59')]+=0x1;var _0x2f32e2=_0x89c7c5[_0x6db7('0x20')][_0x27674c['queue']];var _0x1b3392=new Hangup(_0x27674c,_0x31996a);_0x1b3392[_0x6db7('0xd6')]=0x13;_0x1b3392[_0x6db7('0xa1')]='Machine';_0x1b3392['membername']=_0x6db7('0xd8');_0x1b3392['countmachineretry']+=0x1;_0x1b3392['countglobal']+=0x1;_0x1b3392[_0x6db7('0xda')]=!![];ami['emit'](_0x6db7('0xd9'),ut['buildObj'](_0x1b3392,_0x6db7('0xda')));_0x89c7c5[_0x6db7('0xbd')](_0x1b3392)[_0x6db7('0xab')](loggerCatch(_0x6db7('0xe1')));if(_0x1b3392['countbusyretry']+_0x1b3392['countcongestionretry']+_0x1b3392['countnoanswerretry']+_0x1b3392[_0x6db7('0xe4')]+_0x1b3392[_0x6db7('0xe5')]+_0x1b3392[_0x6db7('0xe6')]+_0x1b3392['countmachineretry']+_0x1b3392['countagentrejectretry']>=_0x2f32e2[_0x6db7('0xf4')]){_0x89c7c5['stateGlobal'](_0x1b3392,_0x3b10d6,_0x54f753,_0x6db7('0xe8'));}else{if(_0x1b3392[_0x6db7('0xde')]>=_0x2f32e2[_0x6db7('0xe9')]){_0x89c7c5[_0x6db7('0xea')](_0x1b3392,_0x3b10d6,_0x54f753,_0x6db7('0xf5'));}else{_0x89c7c5['rescheduleContact']({'active':![],'countmachineretry':_0x1b3392[_0x6db7('0xde')],'scheduledat':moment()['add'](_0x2f32e2[_0x6db7('0xf6')],_0x6db7('0xed'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x1b3392['ContactId'],'ListId':_0x1b3392[_0x6db7('0xc3')],'VoiceQueueId':_0x1b3392[_0x6db7('0xc5')]||undefined,'CampaignId':_0x1b3392[_0x6db7('0xc6')]||undefined})[_0x6db7('0xab')](loggerCatch('[rescheduleContact][Machine]'));_0x3b10d6({'reschedule':0x1});}}});}}};Dialer[_0x6db7('0x1a')][_0x6db7('0x35')]=function(_0x403bbe){var _0x16731d=this['uniqueId'][_0x403bbe[_0x6db7('0xcf')]];var _0x109267=this;var _0x1cb32b;if(_0x16731d&&_0x16731d['type']==='ivr'){delete this[_0x6db7('0x26')][_0x403bbe[_0x6db7('0xcf')]];this[_0x6db7('0xac')](this[_0x6db7('0x20')][_0x16731d[_0x6db7('0xad')]]);this[_0x6db7('0x20')][_0x16731d[_0x6db7('0xad')]][_0x6db7('0xf7')]+=0x1;_0x1cb32b=new Hangup(_0x16731d,_0x403bbe);this['createHistory'](_0x1cb32b)[_0x6db7('0xab')](loggerCatch(_0x6db7('0xf8')));this['moveContactManagedDialer'](_0x1cb32b)[_0x6db7('0xab')](loggerCatch(_0x6db7('0xf9')));}if(_0x16731d&&_0x16731d[_0x6db7('0x52')]!==_0x6db7('0x77')&&isNotNull(this[_0x6db7('0x1f')][_0x16731d[_0x6db7('0xad')]][_0x6db7('0xfa')])){delete this[_0x6db7('0x26')][_0x403bbe[_0x6db7('0xcf')]];this[_0x6db7('0xac')](this['voiceQueues'][_0x16731d[_0x6db7('0xad')]]);this['voiceQueues'][_0x16731d[_0x6db7('0xad')]]['outboundAnswerCallsDay']+=0x1;this[_0x6db7('0x1f')][_0x16731d[_0x6db7('0xad')]][_0x6db7('0x59')]+=0x1;_0x1cb32b=new Hangup(_0x16731d,_0x403bbe);_0x1cb32b['state']=0x10;_0x1cb32b[_0x6db7('0xa1')]=_0x6db7('0xfb');_0x1cb32b[_0x6db7('0xdd')]=_0x6db7('0xfc');this[_0x6db7('0xbd')](_0x1cb32b)[_0x6db7('0xab')](loggerCatch(_0x6db7('0xf8')));this[_0x6db7('0xcd')](_0x1cb32b)[_0x6db7('0xab')](loggerCatch(_0x6db7('0xf9')));}if(_0x16731d&&_0x16731d[_0x6db7('0x52')]!==_0x6db7('0x77')&&!isNotNull(this[_0x6db7('0x1f')][_0x16731d[_0x6db7('0xad')]][_0x6db7('0xfa')])){delete this[_0x6db7('0x26')][_0x403bbe[_0x6db7('0xcf')]];this['updateOriginated'](this[_0x6db7('0x1f')][_0x16731d[_0x6db7('0xad')]]);this[_0x6db7('0x1f')][_0x16731d[_0x6db7('0xad')]]['outboundUnknownCallsDay']+=0x1;_0x1cb32b=new Hangup(_0x16731d,_0x403bbe);_0x1cb32b[_0x6db7('0xd6')]=0xc;_0x1cb32b[_0x6db7('0xa1')]=_0x403bbe[_0x6db7('0xfd')];_0x1cb32b[_0x6db7('0xdd')]='Unknow';this[_0x6db7('0xbd')](_0x1cb32b)[_0x6db7('0xab')](loggerCatch('[syncHangupIvr][createHistory]'));this[_0x6db7('0xcd')](_0x1cb32b)[_0x6db7('0xab')](loggerCatch(_0x6db7('0xf9')));}};Dialer[_0x6db7('0x1a')][_0x6db7('0x32')]=function(_0x3f6386){var _0x17eecc=this[_0x6db7('0x26')][_0x3f6386[_0x6db7('0xcf')]];var _0x334552=this;if(this[_0x6db7('0x1f')][_0x3f6386[_0x6db7('0xad')]]){if(_0x17eecc&&_0x17eecc[_0x6db7('0x52')]!=='ivr'){delete this['uniqueId'][_0x3f6386[_0x6db7('0xcf')]];this[_0x6db7('0x1f')][_0x3f6386[_0x6db7('0xad')]]['outboundAnswerCallsDay']+=0x1;var _0x297838=new AgentComplete(_0x17eecc,_0x3f6386);if(_0x3f6386['reason']===_0x6db7('0xfe')){_0x297838['agiafterat']=this[_0x6db7('0x1f')][_0x3f6386[_0x6db7('0xad')]]['dialQueueProject2']&&this[_0x6db7('0x1f')][_0x3f6386['queue']][_0x6db7('0xff')]?moment()[_0x6db7('0x74')](_0x6db7('0xee')):undefined;}this[_0x6db7('0xbd')](_0x297838)[_0x6db7('0xab')](loggerCatch(_0x6db7('0x100')));this[_0x6db7('0xcd')](_0x297838)[_0x6db7('0xab')](loggerCatch('[syncAgentComplete]'));}}};Dialer[_0x6db7('0x1a')][_0x6db7('0x2d')]=function(_0x28d29d){if(this[_0x6db7('0x1f')][_0x28d29d[_0x6db7('0xad')]]){if(this[_0x6db7('0x26')][_0x28d29d[_0x6db7('0xcf')]]&&this['uniqueId'][_0x28d29d[_0x6db7('0xcf')]]['type']!=='ivr'){this[_0x6db7('0xac')](this[_0x6db7('0x1f')][_0x28d29d[_0x6db7('0xad')]]);this[_0x6db7('0x26')][_0x28d29d[_0x6db7('0xcf')]][_0x6db7('0x101')]=moment()[_0x6db7('0x74')](_0x6db7('0xee'));}}};Dialer[_0x6db7('0x1a')][_0x6db7('0x102')]=function(_0x31f6a6){this['createHistory'](_0x31f6a6)[_0x6db7('0xab')](loggerCatch(_0x6db7('0x100')));this[_0x6db7('0xcd')](_0x31f6a6)['catch'](loggerCatch(_0x6db7('0x103')));};Dialer[_0x6db7('0x1a')][_0x6db7('0x2f')]=function(_0x57d467){var _0x2842c5=this[_0x6db7('0x26')][_0x57d467[_0x6db7('0xcf')]];var _0x5e26ac=this;if(this[_0x6db7('0x1f')][_0x57d467['queue']]){if(_0x2842c5&&_0x2842c5[_0x6db7('0x52')]!=='ivr'){delete this[_0x6db7('0x26')][_0x57d467['uniqueid']];this[_0x6db7('0xac')](this[_0x6db7('0x1f')][_0x57d467[_0x6db7('0xad')]]);_0x2842c5[_0x6db7('0x104')]=moment()['format'](_0x6db7('0xee'));var _0x1fb766=new QueueCallerAbandon(_0x2842c5,_0x57d467);if(getSeconds(_0x2842c5['droptime'],_0x2842c5['responsetime'])>=_0x2842c5['dialQueueTimeout']){this[_0x6db7('0x1f')][_0x57d467['queue']][_0x6db7('0x66')]+=0x1;this[_0x6db7('0x1f')][_0x57d467[_0x6db7('0xad')]][_0x6db7('0x5f')]+=0x1;this[_0x6db7('0x1f')][_0x57d467[_0x6db7('0xad')]][_0x6db7('0x68')]+=0x1;_0x1fb766['state']=0xa;_0x1fb766['statedesc']=_0x6db7('0x105');_0x1fb766[_0x6db7('0x106')]='TIMEOUT';_0x1fb766['agiafterat']=this[_0x6db7('0x1f')][_0x57d467[_0x6db7('0xad')]][_0x6db7('0x107')]?moment()['format'](_0x6db7('0xee')):undefined;_0x1fb766[_0x6db7('0xe5')]+=0x1;_0x1fb766[_0x6db7('0xdf')]+=0x1;if(_0x1fb766['countdropretry']>=this['voiceQueues'][_0x57d467[_0x6db7('0xad')]]['dialDropMaxRetry']){this[_0x6db7('0x102')](_0x1fb766);}else{this['rescheduleContact']({'active':![],'countdropretry':_0x1fb766[_0x6db7('0xe5')],'scheduledat':moment()['add'](this[_0x6db7('0x1f')][_0x57d467[_0x6db7('0xad')]][_0x6db7('0x108')],'minutes')[_0x6db7('0x74')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x2842c5['ContactId'],'ListId':_0x2842c5[_0x6db7('0xc3')],'VoiceQueueId':_0x2842c5[_0x6db7('0xc5')]||undefined,'CampaignId':_0x2842c5['CampaignId']||undefined})[_0x6db7('0xab')](loggerCatch(_0x6db7('0x109')));var _0x310ae1=new History(_0x1fb766);_0x310ae1[_0x6db7('0xd6')]=0xa;_0x310ae1[_0x6db7('0xa1')]=_0x6db7('0x105');_0x310ae1[_0x6db7('0xa3')]=moment()[_0x6db7('0x74')](_0x6db7('0xee'));_0x310ae1['endtime']=_0x310ae1[_0x6db7('0xa3')];_0x310ae1['calleridname']=_0x1fb766['calleridname'];_0x310ae1['calleridnum']=_0x1fb766[_0x6db7('0x10a')];this[_0x6db7('0xbd')](_0x310ae1)[_0x6db7('0xab')](loggerCatch('[syncAgentComplete][createHistory][10]'));}}else{this[_0x6db7('0x1f')][_0x57d467[_0x6db7('0xad')]][_0x6db7('0x7d')]+=0x1;this['voiceQueues'][_0x57d467[_0x6db7('0xad')]]['outboundDropCallsDayCallersExit']+=0x1;_0x1fb766[_0x6db7('0xd6')]=0xb;_0x1fb766[_0x6db7('0xa1')]=_0x6db7('0x10b');_0x1fb766[_0x6db7('0x106')]=_0x6db7('0x10c');_0x1fb766[_0x6db7('0xe6')]+=0x1;_0x1fb766['countglobal']+=0x1;if(_0x1fb766[_0x6db7('0xe6')]>=this[_0x6db7('0x1f')][_0x57d467[_0x6db7('0xad')]][_0x6db7('0x10d')]){this[_0x6db7('0x102')](_0x1fb766);}else{this['rescheduleContact']({'active':![],'countabandonedretry':_0x1fb766[_0x6db7('0xe6')],'scheduledat':moment()[_0x6db7('0xec')](this['voiceQueues'][_0x57d467[_0x6db7('0xad')]][_0x6db7('0x10e')],'minutes')[_0x6db7('0x74')](_0x6db7('0xee')),'ContactId':_0x2842c5[_0x6db7('0xef')],'ListId':_0x2842c5[_0x6db7('0xc3')],'VoiceQueueId':_0x2842c5[_0x6db7('0xc5')]||undefined,'CampaignId':_0x2842c5[_0x6db7('0xc6')]||undefined})[_0x6db7('0xab')](loggerCatch('[rescheduleContact][Abandoned]'));var _0x310ae1=new History(_0x1fb766);_0x310ae1['state']=0xb;_0x310ae1[_0x6db7('0xa1')]='Abandoned';_0x310ae1[_0x6db7('0xa3')]=moment()[_0x6db7('0x74')](_0x6db7('0xee'));_0x310ae1[_0x6db7('0xa2')]=_0x310ae1[_0x6db7('0xa3')];_0x310ae1['calleridname']=_0x1fb766[_0x6db7('0x10f')];_0x310ae1[_0x6db7('0x10a')]=_0x1fb766[_0x6db7('0x10a')];this[_0x6db7('0xbd')](_0x310ae1)[_0x6db7('0xab')](loggerCatch(_0x6db7('0x110')));}}}}};Dialer[_0x6db7('0x1a')][_0x6db7('0x36')]=function(_0x154bd4){if(this[_0x6db7('0x25')][_0x154bd4[_0x6db7('0xcf')]]){this[_0x6db7('0x25')][_0x154bd4[_0x6db7('0xcf')]][_0x6db7('0xaa')]=_0x154bd4[_0x6db7('0xaa')];}if(this[_0x6db7('0x26')][_0x154bd4['uniqueid']]){this[_0x6db7('0x26')][_0x154bd4['uniqueid']][_0x6db7('0xaa')]=_0x154bd4[_0x6db7('0xaa')];}};Dialer[_0x6db7('0x1a')]['syncQueueMember']=function(_0x15cace){if(strategy[this[_0x6db7('0x1f')][this['actions'][_0x15cace[_0x6db7('0x111')]][_0x6db7('0xad')]]['strategy']]===_0x6db7('0x19')){if(this[_0x6db7('0x25')][_0x15cace[_0x6db7('0x111')]]&&_['isNil'](this[_0x6db7('0x25')][_0x15cace[_0x6db7('0x111')]][_0x6db7('0x112')])&&_0x15cace[_0x6db7('0xa9')]==='1'&&_0x15cace['paused']==='0'){if(this[_0x6db7('0x21')][_0x15cace[_0x6db7('0x113')]]){if(!this['agents'][_0x15cace[_0x6db7('0x113')]][_0x6db7('0x112')]){this['agents'][_0x15cace[_0x6db7('0x113')]][_0x6db7('0x112')]=!![];this['actions'][_0x15cace[_0x6db7('0x111')]][_0x6db7('0x112')]=!![];this[_0x6db7('0x25')][_0x15cace[_0x6db7('0x111')]][_0x6db7('0x113')]=_0x15cace[_0x6db7('0x113')];}}}}else if((strategy[this[_0x6db7('0x1f')][this['actions'][_0x15cace[_0x6db7('0x111')]][_0x6db7('0xad')]][_0x6db7('0x114')]]||_0x6db7('0x18'))===_0x6db7('0x18')){if(this[_0x6db7('0x25')][_0x15cace[_0x6db7('0x111')]]){if(this[_0x6db7('0x21')][_0x15cace['stateinterface']]){this['actions'][_0x15cace[_0x6db7('0x111')]][_0x6db7('0x113')]=_0x15cace[_0x6db7('0x113')];if(_[_0x6db7('0xa7')](this[_0x6db7('0x2b')][this[_0x6db7('0x25')][_0x15cace['actionid']][_0x6db7('0xad')]])){this['queueBooked'][this[_0x6db7('0x25')][_0x15cace[_0x6db7('0x111')]][_0x6db7('0xad')]]=[];}this[_0x6db7('0x2b')][this[_0x6db7('0x25')][_0x15cace[_0x6db7('0x111')]][_0x6db7('0xad')]][_0x6db7('0x115')](_[_0x6db7('0xc1')](_[_0x6db7('0xc2')](this[_0x6db7('0x25')][_0x15cace[_0x6db7('0x111')]],['idHopper',_0x6db7('0x113')]),{'status':_0x15cace[_0x6db7('0xa9')],'paused':_0x15cace[_0x6db7('0x116')]}));}}}};function unlockQueueStatus(_0x4654c7,_0x3809fd){setTimeout(function(){if(_[_0x6db7('0x3d')](_0x4654c7['queueStatusComplete'])){loggerBooked[_0x6db7('0x90')](_0x6db7('0x117'),_0x3809fd);}_0x4654c7[_0x6db7('0x118')]=!![];loggerBooked['info'](_0x6db7('0x119'),_0x3809fd,JSON['stringify'](_[_0x6db7('0xc2')](_0x4654c7,[_0x6db7('0x40'),'queueStatusComplete'])));},0x1f3);}Dialer[_0x6db7('0x1a')]['syncQueueStatusComplete']=function(_0x59c435){var _0xa6580e=this;var _0x29e7c6=_0xa6580e[_0x6db7('0x1f')][_0xa6580e[_0x6db7('0x25')][_0x59c435[_0x6db7('0x111')]][_0x6db7('0xad')]];if(strategy[this[_0x6db7('0x1f')][this[_0x6db7('0x25')][_0x59c435[_0x6db7('0x111')]]['queue']][_0x6db7('0x114')]]===_0x6db7('0x19')){if(this[_0x6db7('0x25')][_0x59c435[_0x6db7('0x111')]]&&this[_0x6db7('0x25')][_0x59c435[_0x6db7('0x111')]][_0x6db7('0x113')]){this['preview'][_0x6db7('0x11a')](this[_0x6db7('0x25')][_0x59c435[_0x6db7('0x111')]][_0x6db7('0x11b')],this[_0x6db7('0x25')][_0x59c435[_0x6db7('0x111')]][_0x6db7('0x113')])[_0x6db7('0xab')](function(_0x270ca5){logger['error']('[Catch][Preview][syncQueueStatusComplete]',util[_0x6db7('0x91')](_0x270ca5,{'showHidden':![],'depth':null}));})['finally'](function(){_0xa6580e[_0x6db7('0xac')](_0xa6580e['voiceQueues'][_0xa6580e[_0x6db7('0x25')][_0x59c435['actionid']][_0x6db7('0xad')]]);_0xa6580e['agents'][_0xa6580e['actions'][_0x59c435[_0x6db7('0x111')]]['stateinterface']][_0x6db7('0x112')]=![];delete _0xa6580e[_0x6db7('0x25')][_0x59c435['actionid']];unlockQueueStatus(_0x29e7c6);});}else{this['updateOriginated'](this[_0x6db7('0x1f')][this[_0x6db7('0x25')][_0x59c435[_0x6db7('0x111')]][_0x6db7('0xad')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0x6db7('0x25')][_0x59c435['actionid']][_0x6db7('0xef')],'ListId':this['actions'][_0x59c435[_0x6db7('0x111')]][_0x6db7('0xc3')],'VoiceQueueId':this[_0x6db7('0x25')][_0x59c435[_0x6db7('0x111')]][_0x6db7('0xc5')]||undefined,'CampaignId':this[_0x6db7('0x25')][_0x59c435['actionid']]['CampaignId']||undefined})[_0x6db7('0xab')](loggerCatch(_0x6db7('0x11c')));delete this[_0x6db7('0x25')][_0x59c435['actionid']];unlockQueueStatus(_0x29e7c6);}}else if((strategy[this[_0x6db7('0x1f')][this['actions'][_0x59c435[_0x6db7('0x111')]][_0x6db7('0xad')]][_0x6db7('0x114')]]||'rrmemory')===_0x6db7('0x18')){var _0x1b40eb;if(this[_0x6db7('0x25')][_0x59c435[_0x6db7('0x111')]]&&!_['isEmpty'](this[_0x6db7('0x2b')][this[_0x6db7('0x25')][_0x59c435['actionid']]['queue']])){if(this[_0x6db7('0x11d')][_0xa6580e[_0x6db7('0x25')][_0x59c435[_0x6db7('0x111')]][_0x6db7('0xad')]]){this[_0x6db7('0x11d')][_0xa6580e['actions'][_0x59c435[_0x6db7('0x111')]][_0x6db7('0xad')]]=this[_0x6db7('0x11d')][this[_0x6db7('0x25')][_0x59c435[_0x6db7('0x111')]][_0x6db7('0xad')]]?this[_0x6db7('0x11d')][this[_0x6db7('0x25')][_0x59c435['actionid']][_0x6db7('0xad')]]:this['queueBooked'][this['actions'][_0x59c435[_0x6db7('0x111')]]['queue']]?this[_0x6db7('0x2b')][this['actions'][_0x59c435[_0x6db7('0x111')]][_0x6db7('0xad')]][_0x6db7('0x11e')]||0x0:0x0;}this[_0x6db7('0x2b')][this[_0x6db7('0x25')][_0x59c435[_0x6db7('0x111')]][_0x6db7('0xad')]][_0x6db7('0x11e')]=this[_0x6db7('0x11d')][this[_0x6db7('0x25')][_0x59c435['actionid']][_0x6db7('0xad')]];for(var _0x34133c=0x0;_0x34133c<this[_0x6db7('0x2b')][this[_0x6db7('0x25')][_0x59c435[_0x6db7('0x111')]][_0x6db7('0xad')]][_0x6db7('0x93')];_0x34133c+=0x1){_0x1b40eb=rr(this[_0x6db7('0x2b')][this[_0x6db7('0x25')][_0x59c435['actionid']][_0x6db7('0xad')]]);this[_0x6db7('0x11d')][_0xa6580e[_0x6db7('0x25')][_0x59c435['actionid']]['queue']]=this['queueBooked'][this[_0x6db7('0x25')][_0x59c435['actionid']][_0x6db7('0xad')]][_0x6db7('0x11e')];if(_0x1b40eb['status']==='1'&&_0x1b40eb[_0x6db7('0x116')]==='0'){break;}}if(!_[_0x6db7('0xa7')](_0x1b40eb)){this['agents'][_0x1b40eb[_0x6db7('0x113')]]['unlockRR']=_[_0x6db7('0x3d')](this[_0x6db7('0x21')][_0x1b40eb[_0x6db7('0x113')]][_0x6db7('0x11f')])?!![]:this[_0x6db7('0x21')][_0x1b40eb[_0x6db7('0x113')]][_0x6db7('0x11f')];}loggerBooked[_0x6db7('0x7a')](_0x6db7('0x120'),_0x59c435[_0x6db7('0x111')],_0x6db7('0x121'),JSON[_0x6db7('0x72')](_[_0x6db7('0xc2')](this[_0x6db7('0x21')][_0x1b40eb['stateinterface']],[_0x6db7('0x40'),_0x6db7('0x11f')])),_0x6db7('0x122'),JSON[_0x6db7('0x72')](_0x1b40eb[_0x6db7('0x11b')]));if(!_['isNil'](_0x1b40eb)&&_0x1b40eb[_0x6db7('0xa9')]==='1'&&_0x1b40eb[_0x6db7('0x116')]==='0'&&this[_0x6db7('0x21')][_0x1b40eb['stateinterface']]['unlockRR']){this[_0x6db7('0x21')][_0x1b40eb[_0x6db7('0x113')]][_0x6db7('0x11f')]=![];this[_0x6db7('0x2b')][_0xa6580e[_0x6db7('0x25')][_0x59c435[_0x6db7('0x111')]][_0x6db7('0xad')]]=[];this['preview'][_0x6db7('0x11a')](_0x1b40eb[_0x6db7('0x11b')],_0x1b40eb[_0x6db7('0x113')])['catch'](function(_0x4f8d18){logger[_0x6db7('0x90')](_0x6db7('0x123'),util[_0x6db7('0x91')](_0x4f8d18,{'showHidden':![],'depth':null}));})[_0x6db7('0x1d')](function(){_0xa6580e['updateOriginated'](_0xa6580e['voiceQueues'][_0xa6580e['actions'][_0x59c435['actionid']][_0x6db7('0xad')]]);setTimeout(function(){_0xa6580e[_0x6db7('0x21')][_0x1b40eb[_0x6db7('0x113')]][_0x6db7('0x11f')]=!![];loggerBooked['info'](_0x6db7('0x124'),_0x59c435[_0x6db7('0x111')],_0x6db7('0x121'),JSON['stringify'](_[_0x6db7('0xc2')](_0xa6580e[_0x6db7('0x21')][_0x1b40eb[_0x6db7('0x113')]],[_0x6db7('0x40'),'unlockRR'])),_0x6db7('0x122'),JSON['stringify'](_0x1b40eb[_0x6db7('0x11b')]));},0xc7);delete _0xa6580e[_0x6db7('0x25')][_0x59c435[_0x6db7('0x111')]];unlockQueueStatus(_0x29e7c6,_0x59c435[_0x6db7('0x111')]);});}else{loggerBooked[_0x6db7('0x7a')](_0x6db7('0x125'));this[_0x6db7('0xac')](this[_0x6db7('0x1f')][this[_0x6db7('0x25')][_0x59c435[_0x6db7('0x111')]]['queue']]);this[_0x6db7('0xeb')]({'active':![],'ContactId':this[_0x6db7('0x25')][_0x59c435[_0x6db7('0x111')]][_0x6db7('0xef')],'ListId':this[_0x6db7('0x25')][_0x59c435[_0x6db7('0x111')]][_0x6db7('0xc3')],'VoiceQueueId':this['actions'][_0x59c435[_0x6db7('0x111')]]['VoiceQueueId']||undefined,'CampaignId':this['actions'][_0x59c435[_0x6db7('0x111')]][_0x6db7('0xc6')]||undefined})[_0x6db7('0xab')](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this['actions'][_0x59c435[_0x6db7('0x111')]];unlockQueueStatus(_0x29e7c6);}}else{loggerBooked[_0x6db7('0x7a')](_0x6db7('0x126'));this[_0x6db7('0xac')](this['voiceQueues'][this[_0x6db7('0x25')][_0x59c435[_0x6db7('0x111')]][_0x6db7('0xad')]]);this[_0x6db7('0xeb')]({'active':![],'ContactId':this[_0x6db7('0x25')][_0x59c435['actionid']]['ContactId'],'ListId':this[_0x6db7('0x25')][_0x59c435[_0x6db7('0x111')]]['ListId'],'VoiceQueueId':this[_0x6db7('0x25')][_0x59c435[_0x6db7('0x111')]]['VoiceQueueId']||undefined,'CampaignId':this[_0x6db7('0x25')][_0x59c435[_0x6db7('0x111')]][_0x6db7('0xc6')]||undefined})[_0x6db7('0xab')](loggerCatch(_0x6db7('0x127')));delete this[_0x6db7('0x25')][_0x59c435[_0x6db7('0x111')]];unlockQueueStatus(_0x29e7c6);}}else{loggerBooked['info'](_0x6db7('0x128'));this[_0x6db7('0xac')](this[_0x6db7('0x1f')][this[_0x6db7('0x25')][_0x59c435[_0x6db7('0x111')]]['queue']]);this[_0x6db7('0xeb')]({'active':![],'ContactId':this['actions'][_0x59c435[_0x6db7('0x111')]][_0x6db7('0xef')],'ListId':this[_0x6db7('0x25')][_0x59c435[_0x6db7('0x111')]][_0x6db7('0xc3')],'VoiceQueueId':this[_0x6db7('0x25')][_0x59c435['actionid']]['VoiceQueueId']||undefined,'CampaignId':this[_0x6db7('0x25')][_0x59c435[_0x6db7('0x111')]][_0x6db7('0xc6')]||undefined})[_0x6db7('0xab')](loggerCatch(_0x6db7('0x129')));delete this[_0x6db7('0x25')][_0x59c435['actionid']];unlockQueueStatus(_0x29e7c6);}};Dialer[_0x6db7('0x1a')][_0x6db7('0x3b')]=function(){var _0x40dcc3=this;setInterval(function(){_0x40dcc3['syncCampaigns']();},0x3e8);};Dialer[_0x6db7('0x1a')][_0x6db7('0x12a')]=function(_0x198752){var _0x287b76=this;return function(){if(!_0x287b76[_0x6db7('0xca')](_0x198752[_0x6db7('0x6f')])){if(!_0x287b76['isTrunkReachable'](_0x198752[_0x6db7('0x12b')])){_0x198752[_0x6db7('0x3e')]=_0x6db7('0x12c');throw _0x198752['name']+_0x6db7('0x12d');}}};};Dialer[_0x6db7('0x1a')][_0x6db7('0x12e')]=function(_0x46c437,_0xd10fae,_0x530e50,_0x36fa71){var _0x1db3ef=this;return function(){var _0x3a2a80=!![];return _0x1db3ef[_0x6db7('0x12f')](_0x46c437,_0xd10fae,_0x530e50,_0x36fa71,_0x3a2a80);};};Dialer['prototype'][_0x6db7('0x130')]=function(_0xecfd4f,_0x4250de,_0x3857b2,_0x15a404){var _0x4fe523=this;return function(){var _0x27c7de=![];return _0x4fe523[_0x6db7('0x12f')](_0xecfd4f[_0x6db7('0x46')],_0x4250de,_0x3857b2,_0x15a404,_0x27c7de);};};Dialer['prototype'][_0x6db7('0x12f')]=function(_0x1a7b12,_0x37acf6,_0x423105,_0x437831,_0x3c9ad8){var _0x59392f=[];return new BPromise(function(_0x4637bc,_0x5d44fb){if(!isNotNull(_0x1a7b12)){_0x437831[_0x6db7('0x3e')]=_0x6db7('0x44');return _0x5d44fb(msgResponse('ifTime',_0x6db7('0x131'),_0x423105+_0x6db7('0x132')));}if(_[_0x6db7('0x47')](_0x1a7b12)){_0x437831['message']=_0x6db7('0x133');return _0x5d44fb(msgResponse(_0x6db7('0x12f'),'Failure',_0x423105+_0x6db7('0x134')));}if(_0x37acf6&&_[_0x6db7('0x3d')](config[_0x6db7('0x135')][_0x37acf6])){_0x437831[_0x6db7('0x3e')]=_0x6db7('0x136');return _0x5d44fb(msgResponse(_0x6db7('0x12f'),'Failure',_0x423105+'\x20Timezone\x20unknow\x20'+_0x37acf6));}if(_[_0x6db7('0x137')](_0x1a7b12)){for(var _0x314d05=0x0;_0x314d05<_0x1a7b12[_0x6db7('0x93')];_0x314d05+=0x1){_0x59392f[_0x6db7('0x115')](ami[_0x6db7('0xa8')]({'action':'command','command':util[_0x6db7('0x74')](_0x6db7('0x138'),_0x1a7b12[_0x314d05][_0x6db7('0x139')],!_[_0x6db7('0x3d')](config[_0x6db7('0x135')][_0x37acf6])?_0x37acf6:'')})[_0x6db7('0xb1')](function(_0x51fb3e){return _0x51fb3e[_0x6db7('0x13a')][_0x6db7('0x13b')]('true')>=0x0;})[_0x6db7('0xab')](myreject(_0x5d44fb)));}}else{_0x59392f[_0x6db7('0x115')](ami['Action']({'action':_0x6db7('0x13c'),'command':util['format'](_0x6db7('0x138'),_0x1a7b12,!_['isUndefined'](config['timezones'][_0x37acf6])?_0x37acf6:'')})['then'](function(_0x2e17d9){return _0x2e17d9[_0x6db7('0x13a')]['indexOf'](_0x6db7('0x13d'))>=0x0;})[_0x6db7('0xab')](myreject(_0x5d44fb)));}BPromise[_0x6db7('0x13e')](_0x59392f)[_0x6db7('0xb1')](function(_0xce192d){var _0x2a16a5=_['some'](_0xce192d);if(_0x2a16a5){return _0x4637bc(_0x2a16a5);}else{_0x437831[_0x6db7('0x3e')]=_0x3c9ad8?_0x6db7('0x13f'):_0x6db7('0x140');return _0x5d44fb(msgResponse(_0x6db7('0x141'),_0x6db7('0x131'),_0x6db7('0x142')+_0x3c9ad8+'\x20'+_0x423105+'\x20Interval\x20is\x20overtime:\x20'+util['inspect'](_0x1a7b12,{'showHidden':![],'depth':null})+_0x6db7('0x143')+_0x37acf6));}})['catch'](function(_0x51f1c3){return _0x5d44fb(msgResponse(_0x6db7('0x12f'),_0x6db7('0x131'),JSON['stringify'](_0x51f1c3)));});});};Dialer[_0x6db7('0x1a')]['checkDialMethod']=function(_0x1504c3){var _0xac7167=this;return function(){switch(_0x1504c3[_0x6db7('0x55')]){case'progressive':freeVariablesPredictive(_0x1504c3);_0xac7167['handlePower'](_0x1504c3,0x1);break;case'power':freeVariablesPredictive(_0x1504c3);_0xac7167['handlePower'](_0x1504c3,_0x1504c3[_0x6db7('0x144')]);break;case _0x6db7('0xa'):_0xac7167[_0x6db7('0xa')](_0x1504c3);break;case _0x6db7('0x9'):freeVariablesPredictive(_0x1504c3);_0xac7167['handlePower'](_0x1504c3,0x1);break;default:freeVariablesPredictive(_0x1504c3);logger[_0x6db7('0x90')]('Queue',_0x1504c3[_0x6db7('0x40')],'method\x20not\x20recognized');}};};Dialer[_0x6db7('0x1a')][_0x6db7('0x145')]=function(_0x3fd86f){var _0x323884=this;return function(){_0x323884['handleIvr'](_0x3fd86f);};};Dialer[_0x6db7('0x1a')]['syncQueueSummary']=function(_0x605f11){var _0x3a49b9=this;if(isNotPreview(_0x605f11[_0x6db7('0x55')])){if(isVoiceQueueOutbound(_0x605f11[_0x6db7('0x52')])&&isActive(_0x605f11[_0x6db7('0x146')])){_0x605f11[_0x6db7('0x9a')]=!![];BPromise[_0x6db7('0xaf')]()[_0x6db7('0xb1')](checkIsLoggedIn(_0x605f11,_0x605f11[_0x6db7('0x4e')]))[_0x6db7('0xb1')](checkIsActive(_0x605f11,_0x605f11['dialActive']))['then'](checkInterval(_0x605f11))[_0x6db7('0xb1')](_0x3a49b9[_0x6db7('0x12a')](_0x605f11))[_0x6db7('0xb1')](_0x3a49b9['checkIfTime'](_0x605f11[_0x6db7('0x147')],_0x605f11[_0x6db7('0x148')],_0x605f11['name'],_0x605f11))[_0x6db7('0xb1')](_0x3a49b9[_0x6db7('0x130')](_0x605f11[_0x6db7('0x43')],_0x605f11[_0x6db7('0x148')],_0x605f11[_0x6db7('0x40')],_0x605f11))[_0x6db7('0xb1')](_0x3a49b9['checkDialMethod'](_0x605f11))['catch'](loggerCatchQueueSummary(_0x6db7('0x149'),_0x605f11));}else{notSendMessagesQueue(_0x605f11);}}else{freeVariablesPredictive(_0x605f11);}};Dialer[_0x6db7('0x1a')][_0x6db7('0x14a')]=function(){var _0x189921=this;var _0x53c045;for(var _0x477467 in this[_0x6db7('0x20')]){if(typeof this[_0x6db7('0x20')][_0x477467]!=='undefined'){_0x53c045=this[_0x6db7('0x20')][_0x477467];if(isCampaignIvr(_0x53c045[_0x6db7('0x52')])&&isActive(_0x53c045[_0x6db7('0x70')])){_0x53c045[_0x6db7('0x9a')]=!![];BPromise[_0x6db7('0xaf')]()[_0x6db7('0xb1')](checkIsActive(_0x53c045,_0x53c045['active']))[_0x6db7('0xb1')](checkInterval(_0x53c045))[_0x6db7('0xb1')](_0x189921[_0x6db7('0x12a')](_0x53c045))[_0x6db7('0xb1')](_0x189921[_0x6db7('0x12e')](_0x53c045[_0x6db7('0x147')],_0x53c045[_0x6db7('0x148')],_0x53c045['name'],_0x53c045))[_0x6db7('0xb1')](_0x189921[_0x6db7('0x130')](_0x53c045[_0x6db7('0x43')],_0x53c045[_0x6db7('0x148')],_0x53c045[_0x6db7('0x40')],_0x53c045))['then'](_0x189921['launchHandleIvr'](_0x53c045))[_0x6db7('0xab')](loggerCatchQueueSummary(_0x6db7('0x14b'),_0x53c045));}else{notSendMessagesCampaign(_0x53c045);}}}};function getCallerIdRandom(_0x226af1,_0x68bce6){var _0x37fbc1;var _0x4c1181;var _0xa3b8b0;if(_0x68bce6<=0x0){_0x68bce6=0x1;}_0x37fbc1=new RegExp(_0x6db7('0x14c')+_0x68bce6+'}$');_0x4c1181=Math[_0x6db7('0x14d')](0xa,_0x68bce6-0x1);_0xa3b8b0=Math[_0x6db7('0x14d')](0xa,_0x68bce6)-0x1;return util['format']('%s',_[_0x6db7('0x14e')](_0x226af1,_0x37fbc1,_[_0x6db7('0x14f')](_0x4c1181,_0xa3b8b0)));}function extractCalleridName(_0x565975){var _0x749e0d=_0x565975[_0x6db7('0x150')](/"(.*?)"/);return _0x749e0d?_0x749e0d[0x1]:_0x565975;}function extractCalleridNumber(_0xeb61a6){var _0x434aad=_0xeb61a6['match'](/<(.*?)>/);return _0x434aad?_0x434aad[0x1]:_0xeb61a6;}Dialer['prototype'][_0x6db7('0x151')]=function(_0x3be92c,_0x3516a2){var _0x30affb=this;var _0x5cfc3e=uuid['v4']();this['actions'][_0x5cfc3e]=new Action(_0x3be92c,_0x3516a2,_0x5cfc3e);return new BPromise(function(_0x23d1cd,_0x36e08c){if(_[_0x6db7('0x3d')](_0x3be92c)&&typeof _0x3be92c!==_0x6db7('0x152')){return _0x36e08c(msgResponse(_0x6db7('0x153'),_0x6db7('0x131'),_0x6db7('0x154')));}if(_[_0x6db7('0x3d')](_0x3516a2[_0x6db7('0x155')][_0x6db7('0x156')])||_0x3516a2[_0x6db7('0x155')]['phone']===null){return _0x36e08c(msgResponse(_0x6db7('0x153'),_0x6db7('0x131'),_0x6db7('0x157')));}var _0x2fe6db={'XMD-CALLERID':_0x30affb[_0x6db7('0x25')][_0x5cfc3e][_0x6db7('0x158')](),'XMD-AGI':_0x3be92c[_0x6db7('0xfa')]?util['format']('\x22agi://%s/square,%s\x22',ipAgi,_0x3be92c[_0x6db7('0xfa')]):_0x6db7('0x159'),'XMD-AGIAFTER':_0x3be92c[_0x6db7('0x107')]?util['format'](_0x6db7('0x15a'),ipAgi,_0x3be92c[_0x6db7('0x107')]):'NONE','XMD-QUEUE':_0x3be92c[_0x6db7('0x52')]===_0x6db7('0x4c')?util[_0x6db7('0x74')](_0x6db7('0x15b'),_0x3be92c[_0x6db7('0x40')],_0x3be92c['dialQueueOptions']||'',_0x3be92c[_0x6db7('0xff')]?'c':'',_0x3be92c[_0x6db7('0x15c')]||0x3):_0x6db7('0x159'),'XMD-CONTACTID':_0x3516a2[_0x6db7('0xef')],'XMD-CDRTYPE':_0x6db7('0x15d'),'CALLERID(all)':_0x30affb['actions'][_0x5cfc3e][_0x6db7('0x158')](),'XMD-AMD':_0x3be92c[_0x6db7('0xd3')]?_0x6db7('0x15e'):_0x6db7('0x159'),'XMD-DESTINATION':_0x6db7('0xd2')};if(_0x3be92c[_0x6db7('0xd3')]){_0x2fe6db[_0x6db7('0x15f')]=_0x3be92c[_0x6db7('0x160')]||0x9c4;_0x2fe6db[_0x6db7('0x161')]=_0x3be92c[_0x6db7('0x162')]||0x5dc;_0x2fe6db[_0x6db7('0x163')]=_0x3be92c['dialAMDAfterGreetingSilence']||0x320;_0x2fe6db[_0x6db7('0x164')]=_0x3be92c['dialAMDTotalAnalysisTime']||0x1388;_0x2fe6db[_0x6db7('0x165')]=_0x3be92c[_0x6db7('0x166')]||0x64;_0x2fe6db[_0x6db7('0x167')]=_0x3be92c['dialAMDBetweenWordsSilence']||0x32;_0x2fe6db[_0x6db7('0x168')]=_0x3be92c[_0x6db7('0x169')]||0x3;_0x2fe6db['XMD-AMDSILENCETHRESHOLD']=_0x3be92c[_0x6db7('0x16a')]||0x100;_0x2fe6db[_0x6db7('0x16b')]=_0x3be92c['dialAMDMaximumWordLength']||0x1388;}if(_0x3be92c['type']==='outbound'){_0x2fe6db[_0x6db7('0x16c')]=_0x3516a2[_0x6db7('0xc5')];}else{_0x2fe6db[_0x6db7('0x16d')]=_0x3516a2['CampaignId'];}for(var _0x474edf in _0x3516a2['Contact']){if(typeof _0x3516a2['Contact'][_0x474edf]!==_0x6db7('0x95')){if(isNotNull(_0x3516a2[_0x6db7('0x155')][_0x474edf])&&_0x474edf!=='id'&&_0x474edf!==_0x6db7('0x16e')&&_0x474edf!==_0x6db7('0x16f')&&_0x474edf!=='updatedAt'){_0x2fe6db[util[_0x6db7('0x74')]('%s%s','XMD-',_[_0x6db7('0x170')](_0x474edf))]=_0x3516a2[_0x6db7('0x155')][_0x474edf];}}}var _0x4e167f=_0x30affb[_0x6db7('0xca')](_0x3be92c[_0x6db7('0x6f')])?getCallerId(_0x3be92c[_0x6db7('0x6f')][_0x6db7('0x71')],_0x3be92c['dialOriginateCallerIdName'],_0x3be92c[_0x6db7('0x171')]>0x0?getCallerIdRandom(_0x3be92c[_0x6db7('0x57')],_0x3be92c[_0x6db7('0x171')]):_0x3be92c[_0x6db7('0x57')]):getCallerId(_[_0x6db7('0xa7')](_0x3be92c[_0x6db7('0x12b')])?_0x3be92c[_0x6db7('0x6f')]['callerid']:_0x3be92c[_0x6db7('0x12b')][_0x6db7('0x71')],_0x3be92c[_0x6db7('0x56')],_0x3be92c[_0x6db7('0x171')]>0x0?getCallerIdRandom(_0x3be92c['dialOriginateCallerIdNumber'],_0x3be92c['dialRandomLastDigitCallerIdNumber']):_0x3be92c[_0x6db7('0x57')]);if(_0x4e167f){_0x2fe6db[_0x6db7('0x172')]=_0x30affb[_0x6db7('0x25')][_0x5cfc3e][_0x6db7('0x173')]=extractCalleridName(_0x4e167f);_0x2fe6db[_0x6db7('0x174')]=_0x30affb[_0x6db7('0x25')][_0x5cfc3e][_0x6db7('0x175')]=extractCalleridNumber(_0x4e167f);}return ami[_0x6db7('0xa8')]({'actionid':_0x5cfc3e,'action':_0x6db7('0x153'),'channel':_0x30affb[_0x6db7('0xca')](_0x3be92c[_0x6db7('0x6f')])?util['format'](_0x6db7('0x176'),_0x3be92c['Trunk']['name'],isNotNull(_0x3be92c[_0x6db7('0x58')])?_0x3be92c[_0x6db7('0x58')][_0x6db7('0x177')]()||'':'',_0x3be92c[_0x6db7('0x178')]>0x0?_0x3516a2[_0x6db7('0x155')][_0x6db7('0x156')][_0x6db7('0x179')](_0x3be92c['dialCutDigit']):_0x3516a2[_0x6db7('0x155')][_0x6db7('0x156')]):util[_0x6db7('0x74')]('SIP/%s/%s%s',_['isNil'](_0x3be92c['TrunkBackup'])?_0x3be92c[_0x6db7('0x6f')][_0x6db7('0x40')]:_0x3be92c[_0x6db7('0x12b')]['name'],isNotNull(_0x3be92c[_0x6db7('0x58')])?_0x3be92c[_0x6db7('0x58')]['trim']()||'':'',_0x3be92c['dialCutDigit']>0x0?_0x3516a2['Contact'][_0x6db7('0x156')][_0x6db7('0x179')](_0x3be92c['dialCutDigit']):_0x3516a2[_0x6db7('0x155')][_0x6db7('0x156')]),'callerid':_0x4e167f,'Exten':_0x6db7('0xd2'),'Context':_0x6db7('0x17a'),'Priority':'1','variable':_0x2fe6db,'timeout':(_0x3be92c['dialOriginateTimeout']||0x1e)*0x3e8,'async':!![],'channelid':_0x5cfc3e})[_0x6db7('0xb1')](function(_0xd96ee2){return _0x23d1cd(_0xd96ee2);})['catch'](function(_0x44ef2a){_0x3be92c[_0x6db7('0x61')]+=0x1;var _0x52b8f6=new History(_0x30affb[_0x6db7('0x25')][_0x5cfc3e]);logger[_0x6db7('0x90')](util[_0x6db7('0x74')](_0x6db7('0x17b'),JSON[_0x6db7('0x72')](_0x44ef2a)));_0x52b8f6[_0x6db7('0xd6')]=0xe;_0x52b8f6['statedesc']='OriginateError';_0x52b8f6['starttime']=moment()['format'](_0x6db7('0xee'));_0x52b8f6[_0x6db7('0xa2')]=_0x52b8f6[_0x6db7('0xa3')];_0x30affb[_0x6db7('0xbd')](_0x52b8f6)[_0x6db7('0xab')](loggerCatch(_0x6db7('0x17c')));_0x30affb['moveContactManagedDialer'](_0x52b8f6)['catch'](loggerCatch(_0x6db7('0x17c')))[_0x6db7('0x1d')](function(){delete _0x30affb['actions'][_0x5cfc3e];return _0x36e08c(msgResponse('originate',_0x6db7('0x48'),_0x6db7('0x17d')));});});});};Dialer[_0x6db7('0x1a')]['syncOriginateResponse']=function(_0x237752){var _0x4dea13=this['actions'][_0x237752[_0x6db7('0x111')]];if(_0x4dea13){delete this['actions'][_0x237752['actionid']];_0x4dea13[_0x6db7('0x17e')]=moment()[_0x6db7('0x74')]('YYYY-MM-DD\x20HH:mm:ss');var _0x336041=_0x4dea13[_0x6db7('0x52')]===_0x6db7('0x77')?this[_0x6db7('0x20')][_0x4dea13['queue']]:this[_0x6db7('0x1f')][_0x4dea13['getQueue']()];if(!this[_0x6db7('0x17f')](_0x237752[_0x6db7('0x180')])){this[_0x6db7('0xac')](_0x336041);return this[_0x6db7('0x181')](_0x4dea13,_0x336041,_0x237752)[_0x6db7('0xab')](loggerCatch(_0x6db7('0x182')));}this[_0x6db7('0x26')][_0x237752[_0x6db7('0xcf')]]=_0x4dea13;}};Dialer[_0x6db7('0x1a')][_0x6db7('0x183')]=function(_0x4dfad8,_0x4dced4,_0x24bd11){var _0x504e19=new History(_0x4dced4);if(_0x504e19[_0x6db7('0x184')]+_0x504e19[_0x6db7('0xe2')]+_0x504e19[_0x6db7('0xe3')]+_0x504e19[_0x6db7('0xe4')]+_0x504e19[_0x6db7('0xe5')]+_0x504e19[_0x6db7('0xe6')]+_0x504e19[_0x6db7('0xde')]+_0x504e19[_0x6db7('0x185')]>=_0x24bd11[_0x6db7('0xf4')]-0x1){return!![];}switch(_0x4dfad8){case 0x3:if(_0x504e19['countnoanswerretry']>=_0x24bd11[_0x6db7('0x186')]-0x1){return!![];}this[_0x6db7('0xeb')]({'active':![],'countnoanswerretry':_0x504e19['countnoanswerretry']+=0x1,'scheduledat':moment()['add'](_0x24bd11['dialNoAnswerRetryFrequency'],_0x6db7('0xed'))['format'](_0x6db7('0xee')),'ContactId':_0x504e19[_0x6db7('0xef')],'ListId':_0x504e19[_0x6db7('0xc3')],'VoiceQueueId':_0x504e19[_0x6db7('0xc5')]||undefined,'CampaignId':_0x504e19[_0x6db7('0xc6')]||undefined})[_0x6db7('0xab')](loggerCatch(_0x6db7('0x187')));break;case 0x5:if(_0x504e19[_0x6db7('0x184')]>=_0x24bd11[_0x6db7('0x188')]-0x1){return!![];}this[_0x6db7('0xeb')]({'active':![],'countbusyretry':_0x504e19[_0x6db7('0x184')]+=0x1,'scheduledat':moment()[_0x6db7('0xec')](_0x24bd11['dialBusyRetryFrequency'],_0x6db7('0xed'))[_0x6db7('0x74')](_0x6db7('0xee')),'ContactId':_0x504e19[_0x6db7('0xef')],'ListId':_0x504e19[_0x6db7('0xc3')],'VoiceQueueId':_0x504e19[_0x6db7('0xc5')]||undefined,'CampaignId':_0x504e19[_0x6db7('0xc6')]||undefined})[_0x6db7('0xab')](loggerCatch('[rescheduleContact]\x20[Busy]'));break;case 0x8:if(_0x504e19[_0x6db7('0xe2')]>=_0x24bd11[_0x6db7('0x189')]-0x1){return!![];}this[_0x6db7('0xeb')]({'active':![],'countcongestionretry':_0x504e19[_0x6db7('0xe2')]+=0x1,'scheduledat':moment()['add'](_0x24bd11[_0x6db7('0x18a')],_0x6db7('0xed'))[_0x6db7('0x74')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x504e19[_0x6db7('0xef')],'ListId':_0x504e19[_0x6db7('0xc3')],'VoiceQueueId':_0x504e19['VoiceQueueId']||undefined,'CampaignId':_0x504e19[_0x6db7('0xc6')]||undefined})[_0x6db7('0xab')](loggerCatch(_0x6db7('0x18b')));break;case 0x0:if(_0x504e19[_0x6db7('0xe4')]>=_0x24bd11[_0x6db7('0x18c')]-0x1){return!![];}else{this[_0x6db7('0xeb')]({'active':![],'countnosuchnumberretry':_0x504e19[_0x6db7('0xe4')]+=0x1,'scheduledat':moment()[_0x6db7('0xec')](_0x24bd11[_0x6db7('0x18d')],'minutes')[_0x6db7('0x74')](_0x6db7('0xee')),'ContactId':_0x504e19[_0x6db7('0xef')],'ListId':_0x504e19['ListId'],'VoiceQueueId':_0x504e19[_0x6db7('0xc5')]||undefined,'CampaignId':_0x504e19[_0x6db7('0xc6')]||undefined})[_0x6db7('0xab')](loggerCatch(_0x6db7('0x18e')));}break;case 0xa:if(_0x504e19[_0x6db7('0xe5')]>=_0x24bd11['dialDropMaxRetry']-0x1){return!![];}this[_0x6db7('0xeb')]({'active':![],'countdropretry':_0x504e19[_0x6db7('0xe5')]+=0x1,'scheduledat':moment()['add'](_0x24bd11[_0x6db7('0x108')],_0x6db7('0xed'))[_0x6db7('0x74')](_0x6db7('0xee')),'ContactId':_0x504e19[_0x6db7('0xef')],'ListId':_0x504e19[_0x6db7('0xc3')],'VoiceQueueId':_0x504e19[_0x6db7('0xc5')]||undefined,'CampaignId':_0x504e19[_0x6db7('0xc6')]||undefined})[_0x6db7('0xab')](loggerCatch(_0x6db7('0x109')));break;case 0xb:if(_0x504e19[_0x6db7('0xe6')]>=_0x24bd11['dialAbandonedMaxRetry']-0x1){return!![];}this[_0x6db7('0xeb')]({'active':![],'countabandonedretry':_0x504e19[_0x6db7('0xe6')]+=0x1,'scheduledat':moment()[_0x6db7('0xec')](_0x24bd11[_0x6db7('0x10e')],_0x6db7('0xed'))[_0x6db7('0x74')](_0x6db7('0xee')),'ContactId':_0x504e19[_0x6db7('0xef')],'ListId':_0x504e19[_0x6db7('0xc3')],'VoiceQueueId':_0x504e19[_0x6db7('0xc5')]||undefined,'CampaignId':_0x504e19[_0x6db7('0xc6')]||undefined})[_0x6db7('0xab')](loggerCatch(_0x6db7('0x18f')));break;case 0x13:if(_0x504e19[_0x6db7('0xde')]>=_0x24bd11[_0x6db7('0xe9')]-0x1){return!![];}this[_0x6db7('0xeb')]({'active':![],'countmachineretry':_0x504e19['countmachineretry']+=0x1,'scheduledat':moment()[_0x6db7('0xec')](_0x24bd11[_0x6db7('0xf6')],_0x6db7('0xed'))[_0x6db7('0x74')](_0x6db7('0xee')),'ContactId':_0x504e19[_0x6db7('0xef')],'ListId':_0x504e19['ListId'],'VoiceQueueId':_0x504e19[_0x6db7('0xc5')]||undefined,'CampaignId':_0x504e19[_0x6db7('0xc6')]||undefined})[_0x6db7('0xab')](loggerCatch(_0x6db7('0xf0')));break;case 0x14:if(_0x504e19[_0x6db7('0x185')]>=_0x24bd11[_0x6db7('0x190')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countagentrejectretry':_0x504e19[_0x6db7('0x185')]+=0x1,'scheduledat':moment()[_0x6db7('0xec')](_0x24bd11[_0x6db7('0x191')],_0x6db7('0xed'))[_0x6db7('0x74')](_0x6db7('0xee')),'ContactId':_0x504e19['ContactId'],'ListId':_0x504e19[_0x6db7('0xc3')],'VoiceQueueId':_0x504e19[_0x6db7('0xc5')]||undefined,'CampaignId':_0x504e19[_0x6db7('0xc6')]||undefined})[_0x6db7('0xab')](loggerCatch(_0x6db7('0x192')));break;default:return!![];}};Dialer[_0x6db7('0x1a')][_0x6db7('0x181')]=function(_0x59eeca,_0x2af336,_0x4a695a){var _0xa0be3e=this;var _0x10cf64=new History(_0x59eeca);return new BPromise(function(_0x210b22,_0x3ef098){if(_[_0x6db7('0x3d')](_0x2af336)&&typeof _0x2af336!==_0x6db7('0x152')){return _0x3ef098(msgResponse(_0x6db7('0x193'),_0x6db7('0x131'),_0x6db7('0x194')));}if(_['isUndefined'](_0x4a695a)&&typeof _0x4a695a!==_0x6db7('0x152')){return _0x3ef098(msgResponse(_0x6db7('0x193'),_0x6db7('0x131'),_0x6db7('0x195')));}switch(_0x4a695a[_0x6db7('0x196')]){case'0':_0x2af336['outboundNoSuchCallsDay']+=0x1;_0x10cf64[_0x6db7('0xd6')]=0x0;_0x10cf64[_0x6db7('0xa1')]=_0x6db7('0x197');_0x10cf64[_0x6db7('0xe4')]+=0x1;_0x10cf64[_0x6db7('0xdf')]+=0x1;ami[_0x6db7('0x4b')](_0x6db7('0x198'),ut[_0x6db7('0xe0')](_0x59eeca,'nosuchnumber'));_0xa0be3e['createHistory'](_0x10cf64)[_0x6db7('0xab')](loggerCatch(_0x6db7('0xe1')));if(_0xa0be3e['checkRetriveMax'](0x0,_0x59eeca,_0x2af336)){if(_0x10cf64[_0x6db7('0xe4')]>=_0x2af336[_0x6db7('0x18c')]){_0xa0be3e[_0x6db7('0xea')](_0x10cf64,_0x210b22,_0x3ef098,_0x6db7('0x199'));}else{_0xa0be3e['stateGlobal'](_0x10cf64,_0x210b22,_0x3ef098,_0x6db7('0x199'));}}break;case'3':_0x2af336[_0x6db7('0x60')]+=0x1;_0x10cf64[_0x6db7('0xd6')]=0x3;_0x10cf64[_0x6db7('0xa1')]=_0x6db7('0x19a');_0x10cf64['countnoanswerretry']+=0x1;_0x10cf64[_0x6db7('0xdf')]+=0x1;ami[_0x6db7('0x4b')](_0x6db7('0x19b'),ut[_0x6db7('0xe0')](_0x59eeca,_0x6db7('0x19c')));_0xa0be3e[_0x6db7('0xbd')](_0x10cf64)['catch'](loggerCatch('[syncAgentComplete][createHistory][3]'));if(_0xa0be3e[_0x6db7('0x183')](0x3,_0x59eeca,_0x2af336)){if(_0x10cf64[_0x6db7('0xe3')]>=_0x2af336[_0x6db7('0x186')]){_0xa0be3e[_0x6db7('0xea')](_0x10cf64,_0x210b22,_0x3ef098,_0x6db7('0x19d'));}else{_0xa0be3e['stateGlobal'](_0x10cf64,_0x210b22,_0x3ef098,'reason\x203\x20ringing\x20no\x20answer');}}break;case'5':_0x2af336['outboundBusyCallsDay']+=0x1;_0x10cf64[_0x6db7('0xd6')]=0x5;_0x10cf64[_0x6db7('0xa1')]=_0x6db7('0x19e');_0x10cf64['countbusyretry']+=0x1;_0x10cf64[_0x6db7('0xdf')]+=0x1;ami[_0x6db7('0x4b')](_0x6db7('0x19f'),ut[_0x6db7('0xe0')](_0x59eeca,'busy'));_0xa0be3e[_0x6db7('0xbd')](_0x10cf64)[_0x6db7('0xab')](loggerCatch(_0x6db7('0x1a0')));if(_0xa0be3e['checkRetriveMax'](0x5,_0x59eeca,_0x2af336)){if(_0x10cf64['countbusyretry']>=_0x2af336['dialBusyMaxRetry']){_0xa0be3e[_0x6db7('0xea')](_0x10cf64,_0x210b22,_0x3ef098,_0x6db7('0x1a1'));}else{_0xa0be3e[_0x6db7('0xe7')](_0x10cf64,_0x210b22,_0x3ef098,_0x6db7('0x1a1'));}}break;case'8':_0x2af336[_0x6db7('0x5c')]+=0x1;_0x10cf64[_0x6db7('0xd6')]=0x8;_0x10cf64[_0x6db7('0xa1')]='Congestion';_0x10cf64['countcongestionretry']+=0x1;_0x10cf64[_0x6db7('0xdf')]+=0x1;ami[_0x6db7('0x4b')](_0x6db7('0x1a2'),ut[_0x6db7('0xe0')](_0x59eeca,'congestion'));_0xa0be3e[_0x6db7('0xbd')](_0x10cf64)[_0x6db7('0xab')](loggerCatch(_0x6db7('0x1a3')));if(_0xa0be3e['checkRetriveMax'](0x8,_0x59eeca,_0x2af336)){if(_0x10cf64[_0x6db7('0xe2')]>=_0x2af336[_0x6db7('0x189')]){_0xa0be3e[_0x6db7('0xea')](_0x10cf64,_0x210b22,_0x3ef098,_0x6db7('0x1a4'));}else{_0xa0be3e[_0x6db7('0xe7')](_0x10cf64,_0x210b22,_0x3ef098,_0x6db7('0x1a4'));}}break;case'11':_0x2af336[_0x6db7('0x1a5')]+=0x1;_0x10cf64[_0x6db7('0xd6')]=0xb;_0x10cf64[_0x6db7('0xa1')]='Abandoned';_0x10cf64[_0x6db7('0xe6')]+=0x1;_0x10cf64['countglobal']+=0x1;_0xa0be3e[_0x6db7('0xbd')](_0x10cf64)[_0x6db7('0xab')](loggerCatch(_0x6db7('0x110')));if(_0xa0be3e[_0x6db7('0x183')](0xb,_0x59eeca,_0x2af336)){if(_0x10cf64[_0x6db7('0xe6')]>=_0x2af336[_0x6db7('0x10d')]){_0xa0be3e[_0x6db7('0xea')](_0x10cf64,_0x210b22,_0x3ef098,_0x6db7('0x1a6'));}else{_0xa0be3e[_0x6db7('0xe7')](_0x10cf64,_0x210b22,_0x3ef098,'reason\x2011\x20abandoned');}}break;case'20':_0x2af336[_0x6db7('0x1a7')]+=0x1;_0x10cf64[_0x6db7('0xd6')]=0x14;_0x10cf64[_0x6db7('0xa1')]=_0x6db7('0x1a8');_0x10cf64[_0x6db7('0x185')]+=0x1;_0x10cf64[_0x6db7('0xdf')]+=0x1;ami['emit']('custom:agentreject',ut['buildObj'](_0x59eeca,_0x6db7('0x1a9')));_0xa0be3e[_0x6db7('0xbd')](_0x10cf64)[_0x6db7('0xab')](loggerCatch(_0x6db7('0x1aa')));if(_0xa0be3e[_0x6db7('0x183')](0x14,_0x59eeca,_0x2af336)){if(_0x10cf64[_0x6db7('0x185')]>=_0x2af336[_0x6db7('0x190')]){_0xa0be3e[_0x6db7('0xea')](_0x10cf64,_0x210b22,_0x3ef098,'reason\x2020\x20agentreject');}else{_0xa0be3e['stateGlobal'](_0x10cf64,_0x210b22,_0x3ef098,'reason\x2020\x20agentreject');}}break;default:_0x2af336[_0x6db7('0x1ab')]+=0x1;_0x10cf64[_0x6db7('0xd6')]=0xc;_0x10cf64[_0x6db7('0xa1')]=_0x4a695a[_0x6db7('0x196')];_0xa0be3e[_0x6db7('0xbd')](_0x10cf64)['catch'](loggerCatch(_0x6db7('0x1ac')));if(_0xa0be3e[_0x6db7('0x183')](_0x4a695a['reason'],_0x59eeca,_0x2af336)){if(_0x10cf64[_0x6db7('0x184')]+_0x10cf64[_0x6db7('0xe2')]+_0x10cf64['countnoanswerretry']+_0x10cf64[_0x6db7('0xe4')]+_0x10cf64['countdropretry']+_0x10cf64[_0x6db7('0xe6')]+_0x10cf64[_0x6db7('0xde')]+_0x10cf64[_0x6db7('0x185')]>=_0x2af336[_0x6db7('0xf4')]){_0xa0be3e[_0x6db7('0xe7')](_0x10cf64,_0x210b22,_0x3ef098,_0x4a695a[_0x6db7('0x196')]);}else{_0xa0be3e[_0x6db7('0xea')](_0x10cf64,_0x210b22,_0x3ef098,_0x4a695a[_0x6db7('0x196')]);}}}});};Dialer['prototype']['stateGlobal']=function(_0xdfec9c,_0x2a1c12,_0x282aea,_0x53d87a){var _0x60b564=new Final(_0xdfec9c);_0x60b564[_0x6db7('0xd6')]=0xf;_0x60b564[_0x6db7('0xa1')]=_0x6db7('0x1ad');this[_0x6db7('0xea')](_0x60b564,_0x2a1c12,_0x282aea,_0x53d87a);};Dialer[_0x6db7('0x1a')]['createStateFinal']=function(_0x21860e,_0x6ba1c1,_0x49900b,_0xd9f912){this[_0x6db7('0xcd')](_0x21860e)[_0x6db7('0xb1')](function(){return _0x6ba1c1(msgResponse(_0x6db7('0x193'),_0x6db7('0xc9'),_0xd9f912));})['catch'](function(){return _0x49900b(msgResponse(_0x6db7('0x1ae'),_0x6db7('0x131'),_0x6db7('0x1af')));});};Dialer[_0x6db7('0x1a')][_0x6db7('0xa')]=function(_0x1b8641){var _0x540caa=_0x1b8641[_0x6db7('0x1b0')]/0x64;var _0x19e1e3=_0x1b8641[_0x6db7('0x5f')]/(_0x1b8641[_0x6db7('0x5f')]+_0x1b8641[_0x6db7('0x5a')]);var _0x3ded76=Math[_0x6db7('0x1b1')](_0x1b8641[_0x6db7('0x6b')]*(_0x1b8641[_0x6db7('0x1b2')]/0x64));var _0x370ae7=Math[_0x6db7('0x1b1')](_0x1b8641[_0x6db7('0x6b')]*(_0x1b8641[_0x6db7('0x1b3')]/0x64));var _0x1d766a=_0x1b8641[_0x6db7('0x9b')]+_0x1b8641[_0x6db7('0x51')];var _0xadaa3a=Math[_0x6db7('0x1b4')](_0x1b8641[_0x6db7('0x86')]*_0x1b8641['erlangAbandonmentRate']*_0x1b8641['predictiveIntervalHitRate']*_0x1b8641[_0x6db7('0x6a')]);if(_[_0x6db7('0x3d')](_0x1b8641[_0x6db7('0x29')])){if(!_[_0x6db7('0x3d')](_0x1b8641[_0x6db7('0x28')])){_0x1b8641['startPredictive']=undefined;loggerPredictive['error'](_0x6db7('0x1b5'),_0x6db7('0x1b6'));}if(!_[_0x6db7('0x3d')](_0x1b8641[_0x6db7('0x8b')])){loggerPredictive[_0x6db7('0x90')](_0x6db7('0x1b5'),_0x6db7('0x1b7'));clearInterval(_0x1b8641[_0x6db7('0x8b')]);_0x1b8641[_0x6db7('0x8b')]=undefined;}_0x1b8641[_0x6db7('0x29')]=moment()[_0x6db7('0x74')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0x6db7('0x7a')](_0x1b8641[_0x6db7('0x40')],_0x6db7('0x1b8'),_0x1b8641[_0x6db7('0x29')]);this[_0x6db7('0x1b9')](_0x1b8641,0x1);}else if(ifInterval(_0x1b8641['dialPredictiveInterval'],_0x1b8641[_0x6db7('0x29')])){this['handlePower'](_0x1b8641,0x1);loggerPredictiveCalls[_0x6db7('0x7a')](_0x6db7('0x1ba'),_0x1b8641[_0x6db7('0x29')],_0x1b8641[_0x6db7('0x40')]);_0x1b8641[_0x6db7('0x86')]=0x0;_0x1b8641[_0x6db7('0x68')]=0x0;}else if(_0x540caa<_0x19e1e3&&_0x1b8641[_0x6db7('0x1bb')]===_0x6db7('0x1bc')){freeVariablesPredictive(_0x1b8641);loggerPredictive['info'](_0x6db7('0x1bd'),_0x6db7('0x1be'),_0x19e1e3,'startProgressive',_0x1b8641[_0x6db7('0x40')]);}else if(_0xadaa3a<_0x1b8641['predictiveIntervalErlangCallsDroppedCalls']&&_0x1b8641[_0x6db7('0x1bb')]===_0x6db7('0x1bc')){freeVariablesPredictive(_0x1b8641);loggerPredictive['info'](_0x6db7('0x1bf'),_0x6db7('0x1c0'),_0xadaa3a,_0x6db7('0x1c1'),_0x1b8641[_0x6db7('0x68')],_0x6db7('0x29'),_0x1b8641[_0x6db7('0x40')]);}else if(!ifInterval(_0x1b8641[_0x6db7('0x1c2')],_0x1b8641[_0x6db7('0x29')])&&_['isUndefined'](_0x1b8641[_0x6db7('0x28')])&&!_[_0x6db7('0x3d')](_0x1b8641[_0x6db7('0x29')])){_0x1b8641[_0x6db7('0x28')]=moment()[_0x6db7('0x74')](_0x6db7('0xee'));loggerPredictive['info'](_0x1b8641[_0x6db7('0x40')],_0x6db7('0x1c3'),_0x1b8641[_0x6db7('0x28')]);this[_0x6db7('0xb4')](_0x1b8641[_0x6db7('0x1c2')])[_0x6db7('0xb1')](this[_0x6db7('0x1c4')](_0x1b8641))[_0x6db7('0xb1')](mergeDataErlangB(_0x1b8641))['then'](this[_0x6db7('0x1c5')](_0x1b8641))[_0x6db7('0xab')](loggerCatchPredictive(_0x6db7('0x1c6'),_0x1b8641));}else if(!ifInterval(_0x1b8641['dialPredictiveInterval'],_0x1b8641['startPredictive'])){_0x1b8641['predictiveIntervalErlangCallsDroppedCalls']=0x0;_0x1b8641[_0x6db7('0x28')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0x6db7('0x7a')](_0x1b8641['name'],_0x6db7('0x1c7'),_0x1b8641[_0x6db7('0x28')]);clearInterval(_0x1b8641[_0x6db7('0x8b')]);_0x1b8641[_0x6db7('0x8b')]=undefined;this[_0x6db7('0xb4')](_0x1b8641[_0x6db7('0x1c2')])[_0x6db7('0xb1')](this['getDataPredictive'](_0x1b8641))[_0x6db7('0xb1')](mergeDataErlangB(_0x1b8641))[_0x6db7('0xb1')](this[_0x6db7('0x1c5')](_0x1b8641))[_0x6db7('0xab')](loggerCatchPredictive('Predictive\x20for\x20every\x20interval',_0x1b8641));}else if(_0x1b8641[_0x6db7('0x6b')]&&_0x1d766a<_0x1b8641[_0x6db7('0x6b')]-_0x370ae7){freeVariablesPredictive(_0x1b8641);loggerPredictive[_0x6db7('0x7a')](_0x1b8641[_0x6db7('0x40')],'switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',_0x1d766a,_0x6db7('0x1c8'),_0x1b8641[_0x6db7('0x6b')],'-',_0x370ae7,'=',_0x1b8641['predictiveIntervalAvailable']-_0x370ae7,')');}else if(_0x1b8641[_0x6db7('0x6b')]&&_0x1d766a>_0x1b8641[_0x6db7('0x6b')]+_0x3ded76){freeVariablesPredictive(_0x1b8641);loggerPredictive[_0x6db7('0x7a')](_0x1b8641['name'],_0x6db7('0x1c9'),_0x1d766a,_0x6db7('0x1ca'),_0x1b8641[_0x6db7('0x6b')],'+',_0x3ded76,'=',_0x1b8641[_0x6db7('0x6b')]+_0x3ded76,')');}};Dialer[_0x6db7('0x1a')][_0x6db7('0x1c4')]=function(_0x1d28c5){var _0x59d4f7=this;return function(_0x20ae16){return new BPromise(function(_0x440509,_0x4e0892){_[_0x6db7('0xc1')](_0x1d28c5,_0x20ae16[0x0]);if(checkGetDataPredictive(_0x20ae16[0x0])){var _0xdc0b54=_0x1d28c5['predictiveIntervalAvailable']=_0x1d28c5['talking']+_0x1d28c5[_0x6db7('0x9b')];var _0x1a6578=_0x1d28c5[_0x6db7('0x1c2')]*0x3c;var _0x132543=_0x20ae16[0x0]['predictiveIntervalAvgTalktime']+_0x20ae16[0x0][_0x6db7('0x64')];var _0x5e435a=(_0x20ae16[0x0][_0x6db7('0x63')]+_0x20ae16[0x0][_0x6db7('0x66')]+_0x20ae16[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x20ae16[0x0][_0x6db7('0x6c')];_0x1d28c5[_0x6db7('0x69')]=_0x5e435a>0x0?_0x5e435a:0x1;switch(_0x1d28c5[_0x6db7('0x1bb')]){case _0x6db7('0x1bc'):var _0x22f9a5=_0x1d28c5[_0x6db7('0x1b0')]/0x64;return _0x59d4f7[_0x6db7('0x1cb')](_0xdc0b54,_0x1a6578,_0x132543,_0x5e435a,_0x22f9a5)['then'](function(_0x4144d0){return _0x440509(_0x4144d0);});case _0x6db7('0x1cc'):var _0x3988c4=_0x1d28c5['dialPredictiveOptimizationPercentage']/0x64;return _0x59d4f7[_0x6db7('0x1cd')](_0xdc0b54,_0x1a6578,_0x132543,_0x5e435a,_0x3988c4)[_0x6db7('0xb1')](function(_0x35ec53){return _0x440509(_0x35ec53);});default:return _0x4e0892(msgResponse(_0x6db7('0x1ce'),'Failure',_0x6db7('0x1cf')));}}else{return _0x4e0892(msgResponse(_0x6db7('0x1ce'),_0x6db7('0x131'),_0x6db7('0x1d0')));}});};};Dialer[_0x6db7('0x1a')][_0x6db7('0x1d1')]=function(_0x4df0b0){var _0x46a872=this;return function(_0x21ac34){return new BPromise(function(_0x1ade6f,_0x3d2877){_[_0x6db7('0xc1')](_0x4df0b0,_0x21ac34[0x0]);if(checkGetDataPredictive(_0x21ac34[0x0])){loggerPredictive['info'](JSON['stringify'](_0x21ac34[0x0]));if(_0x4df0b0[_0x6db7('0x1bb')]===_0x6db7('0x1bc')){return _0x46a872[_0x6db7('0xbb')](_0x4df0b0['id'])['then'](function(_0x22bc5a){var _0x32def9=_0x4df0b0['loggedIn']-_0x22bc5a[0x0][_0x6db7('0x1d2')];var _0x49b37b=_0x4df0b0[_0x6db7('0x1c2')]*0x3c;var _0x19790d=_0x21ac34[0x0]['predictiveIntervalAvgTalktime']+_0x21ac34[0x0]['predictiveIntervalAvgHoldtime'];var _0xc81c48=(_0x21ac34[0x0][_0x6db7('0x63')]+_0x21ac34[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x21ac34[0x0][_0x6db7('0x7d')])/_0x21ac34[0x0]['predictiveIntervalTotalCalls'];var _0xba0005=_0x4df0b0[_0x6db7('0x1b0')]/0x64;_0x4df0b0[_0x6db7('0x1d3')]=_0x22bc5a[0x0]['outboundQueuePauses']||0x0;_0x4df0b0[_0x6db7('0x69')]=_0xc81c48>0x0?_0xc81c48:0x1;return _0x46a872[_0x6db7('0x1cb')](_0x32def9,_0x49b37b,_0x19790d,_0xc81c48,_0xba0005);})[_0x6db7('0xb1')](function(_0x2ffe6a){return _0x1ade6f(_0x2ffe6a);})[_0x6db7('0xab')](function(_0x49312d){return _0x3d2877(msgResponse(_0x6db7('0x1d4'),_0x6db7('0x131'),JSON[_0x6db7('0x72')](_0x49312d)));});}if(_0x4df0b0['dialPredictiveOptimization']===_0x6db7('0x1cc')){return _0x46a872['getVoiceQueueRtPauses'](_0x4df0b0['id'])[_0x6db7('0xb1')](function(_0x1bb411){var _0x123be1=_0x4df0b0['loggedIn']-_0x1bb411[0x0]['outboundQueuePauses'];var _0x29ed8a=_0x4df0b0['dialPredictiveInterval']*0x3c;var _0x4dd711=_0x21ac34[0x0][_0x6db7('0x65')]+_0x21ac34[0x0][_0x6db7('0x64')];var _0x1a3ad1=(_0x21ac34[0x0][_0x6db7('0x63')]+_0x21ac34[0x0][_0x6db7('0x66')]+_0x21ac34[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x21ac34[0x0]['predictiveIntervalTotalCalls'];var _0x18abf2=_0x4df0b0[_0x6db7('0x1b0')]/0x64;_0x4df0b0[_0x6db7('0x1d3')]=_0x1bb411[0x0][_0x6db7('0x1d2')]||0x0;_0x4df0b0['predictiveIntervalHitRate']=_0x1a3ad1>0x0?_0x1a3ad1:0x1;return _0x46a872[_0x6db7('0x1cd')](_0x123be1,_0x29ed8a,_0x4dd711,_0x1a3ad1,_0x18abf2);})[_0x6db7('0xb1')](function(_0x2a4975){return _0x1ade6f(_0x2a4975);})[_0x6db7('0xab')](function(_0x514c1a){return _0x3d2877(msgResponse(_0x6db7('0x1d4'),_0x6db7('0x131'),JSON[_0x6db7('0x72')](_0x514c1a)));});}}else{return _0x3d2877(msgResponse(_0x6db7('0x1ce'),'Failure',_0x6db7('0x1d0')));}});};};Dialer[_0x6db7('0x1a')][_0x6db7('0x1c5')]=function(_0x355da5){var _0x26f094=this;return function(){var _0xd71bb6=0x0;var _0x4aeb31=Math['floor'](_0x355da5[_0x6db7('0x6d')]*0x3e8);if(_0x4aeb31>0x0){_0x4aeb31=_0x4aeb31<0x64?0x64:_0x4aeb31;loggerPredictive[_0x6db7('0x7a')](_0x355da5[_0x6db7('0x40')],_0x6db7('0x1d5'),_0x4aeb31,'milliseconds');_0x355da5[_0x6db7('0x8b')]=setInterval(function(){_0x26f094[_0x6db7('0x8b')](_0x355da5);loggerPredictiveCalls[_0x6db7('0x7a')](_0x6db7('0x1d6'),_0xd71bb6+=0x1);},_0x4aeb31);}else{loggerPredictive['info'](_0x355da5[_0x6db7('0x40')],'fail\x20to\x20scheduled\x20calls');}};};Dialer['prototype'][_0x6db7('0x1d7')]=function(_0x337b7a,_0xbd27f1){var _0x26e387=this;return function(_0x10ae7d){if(_[_0x6db7('0x47')](_0x10ae7d)){if(_[_0x6db7('0xa7')](_0xbd27f1[_0x6db7('0xc4')])||!_0xbd27f1['recallme']){if(_0x337b7a['dialMethod']===_0x6db7('0x9')){_0x337b7a[_0x6db7('0x118')]=_[_0x6db7('0x3d')](_0x337b7a[_0x6db7('0x118')])?!![]:_0x337b7a[_0x6db7('0x118')];var _0x49aca2=uuid['v4']();_0x26e387['actions'][_0x49aca2]=new Action(_0x337b7a,_0xbd27f1,_0x49aca2);loggerBooked[_0x6db7('0x7a')](_0x6db7('0x1d8'),_0x49aca2,_0x6db7('0x1d9'),JSON[_0x6db7('0x72')](_0x337b7a[_0x6db7('0x118')]),_0x6db7('0x1da'),_0x337b7a[_0x6db7('0x40')]);if(_0x337b7a[_0x6db7('0x118')]){_0x337b7a[_0x6db7('0x118')]=![];_0x26e387['queueBooked'][_0x26e387[_0x6db7('0x25')][_0x49aca2][_0x6db7('0xad')]]=[];ami[_0x6db7('0xa8')]({'actionid':_0x49aca2,'action':_0x6db7('0x1db'),'queue':_0x337b7a[_0x6db7('0x40')]})[_0x6db7('0xab')](function(){_0x26e387['updateOriginated'](_0x337b7a);_0x26e387['rescheduleContact']({'active':![],'ContactId':_0x26e387[_0x6db7('0x25')][_0x49aca2]['ContactId'],'ListId':_0x26e387[_0x6db7('0x25')][_0x49aca2][_0x6db7('0xc3')],'VoiceQueueId':_0x26e387[_0x6db7('0x25')][_0x49aca2][_0x6db7('0xc5')]||undefined,'CampaignId':_0x26e387['actions'][_0x49aca2][_0x6db7('0xc6')]||undefined})['catch'](loggerCatch(_0x6db7('0x1dc')));delete _0x26e387[_0x6db7('0x25')][_0x49aca2];});}else{loggerBooked[_0x6db7('0x7a')](_0x6db7('0x1dd'),JSON['stringify'](_0x337b7a[_0x6db7('0x118')]),_0x6db7('0x1da'),_0x337b7a[_0x6db7('0x40')]);_0x26e387[_0x6db7('0xac')](_0x337b7a);_0x26e387[_0x6db7('0xeb')]({'active':![],'ContactId':_0x26e387['actions'][_0x49aca2][_0x6db7('0xef')],'ListId':_0x26e387[_0x6db7('0x25')][_0x49aca2][_0x6db7('0xc3')],'VoiceQueueId':_0x26e387[_0x6db7('0x25')][_0x49aca2][_0x6db7('0xc5')]||undefined,'CampaignId':_0x26e387[_0x6db7('0x25')][_0x49aca2][_0x6db7('0xc6')]||undefined})['catch'](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x26e387[_0x6db7('0x25')][_0x49aca2];}}else{return _0x26e387[_0x6db7('0x151')](_0x337b7a,_0xbd27f1);}}else{if(getDiff(_0xbd27f1['scheduledat'])<_0x337b7a[_0x6db7('0x1de')]*0x3c){if(_0xbd27f1[_0x6db7('0x1df')]&&!_0xbd27f1['Agent'][_0x6db7('0x1e0')]){_0x26e387[_0x6db7('0x1e1')]['run'](_0xbd27f1['id'])[_0x6db7('0x1d')](function(){_0x26e387[_0x6db7('0xac')](_0x337b7a);});}else{_0x26e387['unlockContact']({'active':![]},_0xbd27f1['id'],0x1)[_0x6db7('0x1d')](function(){_0x26e387['updateOriginated'](_0x337b7a);});}}else{_0x337b7a[_0x6db7('0x62')]+=0x1;_0x26e387['updateOriginated'](_0x337b7a);if(_0x337b7a[_0x6db7('0x1e2')]){_0x26e387[_0x6db7('0xeb')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0xbd27f1[_0x6db7('0xef')],'ListId':_0xbd27f1[_0x6db7('0xc3')],'VoiceQueueId':_0xbd27f1['VoiceQueueId']||undefined,'CampaignId':_0xbd27f1[_0x6db7('0xc6')]||undefined})['catch'](loggerCatch(_0x6db7('0x1e3')));_0x26e387[_0x6db7('0xbd')](createObjHistory(_0x337b7a,_0xbd27f1,_0x6db7('0x1e4'),0x17,_0x6db7('0x1e5')))[_0x6db7('0xab')](loggerCatch('[Originate][HistoryDialRecallInQueue][historyCatch]'));}else{_0x26e387['saveInDb'](createObjHistory(_0x337b7a,_0xbd27f1,_0x6db7('0x1e6'),0x16,_0x6db7('0x1e7')),_0x6db7('0x1e8'),_0x6db7('0x1e9'));}}}}else{_0x337b7a['outboundBlacklistCallsDay']+=0x1;_0x26e387['saveInDb'](createObjHistory(_0x337b7a,_0xbd27f1,_0x6db7('0x1ea'),0xd,_0x6db7('0x1eb')),_0x6db7('0x1ec'),_0x6db7('0x1ed'));throw _0x6db7('0x1ee');}};};Dialer[_0x6db7('0x1a')][_0x6db7('0x1ef')]=function(_0x54fb1d){var _0x41df83=this;var _0xe957b7=_0x54fb1d[_0x6db7('0x1f0')]-_0x54fb1d['originated']-_0x54fb1d[_0x6db7('0xb8')];emitCampaignSummary(_0x54fb1d);if(_0xe957b7>0x0){if(_0xe957b7>this[_0x6db7('0x23')]){_0xe957b7=this[_0x6db7('0x23')];}_0x54fb1d[_0x6db7('0xb8')]+=_0xe957b7;this[_0x6db7('0xb9')](_0x54fb1d['id'],_0xe957b7,_0x54fb1d[_0x6db7('0x1f1')],_0x54fb1d)[_0x6db7('0xb1')](function(_0x18a397){_0x54fb1d[_0x6db7('0xb8')]-=_0xe957b7;_0x54fb1d[_0x6db7('0xb8')]=_0x54fb1d[_0x6db7('0xb8')]>0x0?_0x54fb1d[_0x6db7('0xb8')]:0x0;if(!checkContactEmpty(_0x18a397)){_0x54fb1d[_0x6db7('0x3e')]=_0x6db7('0x1f2');logger[_0x6db7('0x7a')](_0x6db7('0x1f3')+_0x54fb1d[_0x6db7('0x40')]);}else{_0x54fb1d['originated']+=_0x18a397[_0x6db7('0x93')];_0x54fb1d[_0x6db7('0x3e')]=_0x6db7('0x1f4');for(var _0x407ce8=0x0;_0x407ce8<_0x18a397[_0x6db7('0x93')];_0x407ce8+=0x1){_0x54fb1d[_0x6db7('0x1f5')]+=0x1;if(_[_0x6db7('0xa7')](_0x18a397[_0x407ce8])||_['isNil'](_0x18a397[_0x407ce8][_0x6db7('0x155')])||_[_0x6db7('0xa7')](_0x18a397[_0x407ce8][_0x6db7('0x155')]['phone'])){_0x41df83[_0x6db7('0x1f6')](_0x6db7('0x1f7'),_0x54fb1d,_0x18a397[_0x407ce8]);}else{_0x41df83['checkIsBlackListIvr'](_[_0x6db7('0xc2')](_0x18a397[_0x407ce8],[_0x6db7('0xc6'),'Contact.phone']))[_0x6db7('0xb1')](_0x41df83[_0x6db7('0x1d7')](_0x54fb1d,_0x18a397[_0x407ce8]))[_0x6db7('0xab')](_0x41df83['loggerHandler'](_0x6db7('0x1f8'),_0x54fb1d));}}}})[_0x6db7('0xab')](loggerGetContactDialer(_0x6db7('0x1f9'),_0x54fb1d,_0xe957b7));}};Dialer['prototype']['handlePower']=function(_0x2f44f3,_0x2588ec){var _0x43f5a2=this;var _0x3bd5d0=[];var _0xfa0fdf=_0x2588ec>=0x1?_0x2588ec:0x1;if(_0x2f44f3[_0x6db7('0x55')]==='booked'){_0xfa0fdf=0x1;}var _0x5e5e85=Math[_0x6db7('0x1b4')](_0x2f44f3[_0x6db7('0x9b')]*_0xfa0fdf)-_0x2f44f3[_0x6db7('0x94')]-_0x2f44f3[_0x6db7('0xb8')];emitVoiceQueueSummary(_0x2f44f3);if(_0x2f44f3['dialLimitQueue']>0x0){var _0x35a757=_0x2f44f3[_0x6db7('0x1fa')]-_0x2f44f3[_0x6db7('0x94')]-_0x2f44f3['talking']-_0x2f44f3[_0x6db7('0xb8')]-_0x2f44f3[_0x6db7('0x4f')];if(_0x5e5e85>_0x35a757){_0x5e5e85=_0x35a757;}}if(_0x5e5e85>0x0){if(_0x2f44f3[_0x6db7('0x55')]===_0x6db7('0x9')){_0x5e5e85=0x1;}if(_0x5e5e85>this['maxNumberOriginate']){_0x5e5e85=this[_0x6db7('0x23')];}_0x2f44f3[_0x6db7('0xb8')]+=_0x5e5e85;for(var _0x2d6430 in this[_0x6db7('0x21')]){if(typeof this['agents'][_0x2d6430]!==_0x6db7('0x95')){if(this[_0x6db7('0x21')][_0x2d6430][_0x6db7('0xd6')]===_0x6db7('0x1fb')&&this[_0x6db7('0x21')][_0x2d6430][_0x6db7('0xa9')]===_0x6db7('0x1fc')){_0x3bd5d0[_0x6db7('0x115')](this['agents'][_0x2d6430]['id']);}}}this[_0x6db7('0xb7')](_0x2f44f3['id'],_0x3bd5d0,_0x5e5e85,_0x2f44f3[_0x6db7('0x1f1')],_0x2f44f3)[_0x6db7('0xb1')](function(_0x42d894){_0x2f44f3['temp']-=_0x5e5e85;_0x2f44f3['temp']=_0x2f44f3[_0x6db7('0xb8')]>0x0?_0x2f44f3[_0x6db7('0xb8')]:0x0;if(!checkContactEmpty(_0x42d894)){_0x43f5a2[_0x6db7('0x1fd')](_0x2f44f3)[_0x6db7('0xb1')](sendMessageReschedule(_0x2f44f3))[_0x6db7('0xab')](loggerCatch(_0x6db7('0x1fe')));}else{_0x2f44f3[_0x6db7('0x94')]+=_0x42d894[_0x6db7('0x93')];_0x2f44f3[_0x6db7('0x3e')]=_0x2f44f3[_0x6db7('0x55')]===_0x6db7('0x9')?_0x6db7('0x15e'):_0x6db7('0x1f4');for(var _0xb3cb16=0x0;_0xb3cb16<_0x42d894[_0x6db7('0x93')];_0xb3cb16+=0x1){if(_[_0x6db7('0xa7')](_0x42d894[_0xb3cb16])||_[_0x6db7('0xa7')](_0x42d894[_0xb3cb16][_0x6db7('0x155')])||_[_0x6db7('0xa7')](_0x42d894[_0xb3cb16][_0x6db7('0x155')][_0x6db7('0x156')])){_0x43f5a2[_0x6db7('0x1f6')](_0x6db7('0x1f7'),_0x2f44f3,_0x42d894[_0xb3cb16]);}else{_0x43f5a2[_0x6db7('0xb0')](_[_0x6db7('0xc2')](_0x42d894[_0xb3cb16],['VoiceQueueId',_0x6db7('0x1ff')]))[_0x6db7('0xb1')](_0x43f5a2['checkContactBlack'](_0x2f44f3,_0x42d894[_0xb3cb16]))[_0x6db7('0xab')](_0x43f5a2[_0x6db7('0xbe')](_0x6db7('0x1f7'),_0x2f44f3));}}}})['catch'](loggerGetContactDialer(_0x6db7('0x200'),_0x2f44f3,_0x5e5e85));}};Dialer[_0x6db7('0x1a')][_0x6db7('0x8b')]=function(_0x565ace){if(_0x565ace[_0x6db7('0x1fa')]>0x0){var _0x2f0997=_0x565ace[_0x6db7('0x1fa')]-_0x565ace['originated']-_0x565ace['talking'];if(_0x2f0997>0x0){this['tryOriginatePredictive'](_0x565ace);}else{loggerPredictiveCalls[_0x6db7('0x7a')](_0x6db7('0x201'));}}else{this[_0x6db7('0x202')](_0x565ace);}};Dialer[_0x6db7('0x1a')][_0x6db7('0x202')]=function(_0x554b5c){var _0x3fbb0f=this;var _0xb12fb3=[];_0x554b5c[_0x6db7('0x94')]+=0x1;for(var _0x4e31d6 in this['agents']){if(typeof this['agents'][_0x4e31d6]!=='undefined'){if(this[_0x6db7('0x21')][_0x4e31d6][_0x6db7('0xd6')]===_0x6db7('0x1fb')&&this[_0x6db7('0x21')][_0x4e31d6][_0x6db7('0xa9')]===_0x6db7('0x1fc')){_0xb12fb3['push'](this['agents'][_0x4e31d6]['id']);}}}this[_0x6db7('0xb7')](_0x554b5c['id'],_0xb12fb3,0x1,_0x554b5c[_0x6db7('0x1f1')],_0x554b5c)[_0x6db7('0xb1')](function(_0x44ea46){if(!checkContactEmpty(_0x44ea46)){checkContactLowerLimitOriginate(_0x554b5c,0x1,0x0);_0x3fbb0f['countReScheduled'](_0x554b5c)[_0x6db7('0xb1')](sendMessageReschedule(_0x554b5c))[_0x6db7('0xab')](loggerCatch(_0x6db7('0x1fe')));}else{_0x554b5c[_0x6db7('0x3e')]=_0x6db7('0x1f4');if(_['isNil'](_0x44ea46[0x0])||_[_0x6db7('0xa7')](_0x44ea46[0x0][_0x6db7('0x155')])||_[_0x6db7('0xa7')](_0x44ea46[0x0]['Contact'][_0x6db7('0x156')])){_0x3fbb0f[_0x6db7('0x1f6')](_0x6db7('0x1f7'),_0x554b5c,_0x44ea46[0x0]);}else{_0x3fbb0f[_0x6db7('0xb0')](_[_0x6db7('0xc2')](_0x44ea46[0x0],[_0x6db7('0xc5'),'Contact.phone']))[_0x6db7('0xb1')](_0x3fbb0f['checkContactBlack'](_0x554b5c,_0x44ea46[0x0]))[_0x6db7('0xab')](_0x3fbb0f['loggerHandler'](_0x6db7('0x203'),_0x554b5c));}}})['catch'](loggerGetContactDialer(_0x6db7('0x204'),_0x554b5c,0x1));emitVoiceQueueSummary(_0x554b5c);};Dialer['prototype'][_0x6db7('0x1cb')]=function(_0x46981d,_0x5ab291,_0x22f527,_0xc47df2,_0x1693ae,_0x5f01bc){loggerPredictive[_0x6db7('0x7a')](_0x6db7('0x205'));loggerPredictive[_0x6db7('0x7a')](_0x6db7('0x206'),_0x46981d);loggerPredictive[_0x6db7('0x7a')](_0x6db7('0x207'),_0x5ab291);loggerPredictive[_0x6db7('0x7a')]('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',_0x22f527);loggerPredictive[_0x6db7('0x7a')]('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',_0xc47df2);loggerPredictive[_0x6db7('0x7a')](_0x6db7('0x208'),_0x1693ae);loggerPredictive[_0x6db7('0x7a')](_0x6db7('0x80'));return new BPromise(function(_0x3a31ca,_0x37678d){if(_0x46981d<=0x0||isNaN(_0x46981d)){return _0x37678d(msgResponse('[abandonmentRate]','Error',_0x6db7('0x209')+_0x46981d));}if(_0x22f527<=0x0||isNaN(_0x22f527)){return _0x37678d(msgResponse('[abandonmentRate]',_0x6db7('0x48'),_0x6db7('0x20a')+_0x22f527));}if(_0xc47df2<=0x0||isNaN(_0xc47df2)){return _0x37678d(msgResponse(_0x6db7('0x20b'),'Error','p\x20=\x20'+_0xc47df2));}if(_0x5ab291<=0x0||isNaN(_0x5ab291)){return _0x37678d(msgResponse(_0x6db7('0x20b'),'Error','interval\x20=\x20'+_0x5ab291));}if(_0x1693ae<=0x0||isNaN(_0x1693ae)){return _0x37678d(msgResponse(_0x6db7('0x20b'),'Error',_0x6db7('0x20c')+_0x1693ae));}_0x5f01bc=_0x5f01bc||0x0;var _0x34de3a=0x1/_0x22f527;var _0x3937e8=0x0;var _0x211c64=0x0;var _0x221e86=0x0;var _0x67f605=0x0;for(var _0x43e702=0x0;_0x221e86<_0x1693ae;_0x43e702+=0x1){_0x211c64=_0x43e702/_0x5ab291;_0x3937e8=(_0xc47df2*_0x211c64+_0x5f01bc)/_0x34de3a;_0x221e86=erlangb(_0x3937e8,_0x46981d);_0x67f605=_0x3937e8/_0x46981d*(0x1-erlangb(_0x3937e8,_0x46981d));}return _0x3a31ca({'erlangCalls':_0x43e702,'erlangCallToSecond':_0x5ab291/_0x43e702,'erlangAbandonmentRate':_0x221e86,'erlangBusyFactor':_0x67f605});});};Dialer[_0x6db7('0x1a')][_0x6db7('0x1cd')]=function(_0x2276e5,_0xa2f696,_0x1cb2de,_0x2d318f,_0x3c57eb,_0x196068){loggerPredictive[_0x6db7('0x7a')]('----\x20Agent\x20Busy\x20Factor\x20----');loggerPredictive['info']('M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x2276e5);loggerPredictive[_0x6db7('0x7a')](_0x6db7('0x207'),_0xa2f696);loggerPredictive[_0x6db7('0x7a')](_0x6db7('0x20d'),_0x1cb2de);loggerPredictive[_0x6db7('0x7a')]('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',_0x2d318f);loggerPredictive[_0x6db7('0x7a')]('Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3c57eb);loggerPredictive[_0x6db7('0x7a')](_0x6db7('0x80'));return new BPromise(function(_0x9a1721,_0x5a2b6c){if(_0x2276e5<=0x0||isNaN(_0x2276e5)){return _0x5a2b6c(msgResponse(_0x6db7('0x20e'),'Error','m\x20=\x20'+_0x2276e5));}if(_0x1cb2de<=0x0||isNaN(_0x1cb2de)){return _0x5a2b6c(msgResponse(_0x6db7('0x20e'),_0x6db7('0x48'),'Ts\x20=\x20'+_0x1cb2de));}if(_0x2d318f<=0x0||isNaN(_0x2d318f)){return _0x5a2b6c(msgResponse('[busyFactor]',_0x6db7('0x48'),_0x6db7('0x20f')+_0x2d318f));}if(_0xa2f696<=0x0||isNaN(_0xa2f696)){return _0x5a2b6c(msgResponse('[busyFactor]',_0x6db7('0x48'),_0x6db7('0x210')+_0xa2f696));}if(_0x3c57eb<=0x0||isNaN(_0x3c57eb)){return _0x5a2b6c(msgResponse('[busyFactor]',_0x6db7('0x48'),_0x6db7('0x211')+_0x3c57eb));}_0x196068=_0x196068||0x0;var _0x68644f=0x1/_0x1cb2de;var _0x7f3b76=0x0;var _0x57ee40=0x0;var _0x407ffb=0x0;var _0x5387c4=0x0;for(var _0x6db34c=0x0;_0x5387c4<_0x3c57eb;_0x6db34c+=0x1){_0x57ee40=_0x6db34c/_0xa2f696;_0x7f3b76=(_0x2d318f*_0x57ee40+_0x196068)/_0x68644f;_0x407ffb=erlangb(_0x7f3b76,_0x2276e5);_0x5387c4=_0x7f3b76/_0x2276e5*(0x1-erlangb(_0x7f3b76,_0x2276e5));}return _0x9a1721({'erlangCalls':_0x6db34c,'erlangCallToSecond':_0xa2f696/_0x6db34c,'erlangAbandonmentRate':_0x407ffb,'erlangBusyFactor':_0x5387c4});});};module[_0x6db7('0x212')]=Dialer;
\ No newline at end of file
index f20245f..eb65841 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42fa=['exports','util','lodash','milliseconds','diff','seconds','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countdropretry','countabandonedretry','countagentrejectretry','countmachineretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','droptime','endtime','ringtime','holdtime','talktime','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname'];(function(_0x3868ef,_0x3b86db){var _0x2ed3c6=function(_0x287c5d){while(--_0x287c5d){_0x3868ef['push'](_0x3868ef['shift']());}};_0x2ed3c6(++_0x3b86db);}(_0x42fa,0x161));var _0xa42f=function(_0x41b9df,_0x13ffa3){_0x41b9df=_0x41b9df-0x0;var _0x31c181=_0x42fa[_0x41b9df];return _0x31c181;};'use strict';var util=require(_0xa42f('0x0'));var _=require(_0xa42f('0x1'));var moment=require('moment');function getSeconds(_0x592b48,_0x406786){var _0x21d0ad=moment(_0x592b48)[_0xa42f('0x2')](0x0);var _0xe7cc95=moment(_0x406786)[_0xa42f('0x2')](0x0);return _0x21d0ad[_0xa42f('0x3')](_0xe7cc95,_0xa42f('0x4'));}function QueueCallerAbandon(_0x47037a,_0x4da108){this[_0xa42f('0x5')]=_0x47037a[_0xa42f('0x5')];this['type']=_0x47037a[_0xa42f('0x6')];this[_0xa42f('0x7')]=_0x47037a[_0xa42f('0x6')]===_0xa42f('0x8')?_0xa42f('0x9'):_0x47037a[_0xa42f('0x6')];this[_0xa42f('0xa')]=_0x47037a[_0xa42f('0xa')];this[_0xa42f('0xb')]=_0x47037a[_0xa42f('0xb')];this[_0xa42f('0xc')]=_0x47037a['countnoanswerretry'];this['countglobal']=_0x47037a[_0xa42f('0xa')]+_0x47037a[_0xa42f('0xb')]+_0x47037a[_0xa42f('0xc')]+_0x47037a['countnosuchnumberretry']+_0x47037a[_0xa42f('0xd')]+_0x47037a[_0xa42f('0xe')]+_0x47037a['countmachineretry']+_0x47037a[_0xa42f('0xf')];this['countnosuchnumberretry']=_0x47037a['countnosuchnumberretry'];this[_0xa42f('0xd')]=_0x47037a[_0xa42f('0xd')];this[_0xa42f('0xe')]=_0x47037a['countabandonedretry'];this[_0xa42f('0x10')]=_0x47037a['countmachineretry'];this[_0xa42f('0xf')]=_0x47037a['countagentrejectretry'];this[_0xa42f('0x11')]=_0x4da108[_0xa42f('0x11')];this[_0xa42f('0x12')]=_0x47037a[_0xa42f('0x13')];this[_0xa42f('0x14')]=_0x47037a[_0xa42f('0x15')];this['starttime']=_0x47037a[_0xa42f('0x16')];this[_0xa42f('0x17')]=_0x47037a[_0xa42f('0x17')];this['droptime']=_0x47037a[_0xa42f('0x18')];this[_0xa42f('0x19')]=this['droptime'];this[_0xa42f('0x1a')]=getSeconds(_0x47037a[_0xa42f('0x17')],_0x47037a[_0xa42f('0x16')]);this[_0xa42f('0x1b')]=getSeconds(this[_0xa42f('0x18')],_0x47037a[_0xa42f('0x17')]);this[_0xa42f('0x1c')]=0x0;this[_0xa42f('0x9')]=_0x4da108['queue'];this[_0xa42f('0x1d')]=_0x4da108[_0xa42f('0x1e')];this[_0xa42f('0x1f')]=_0x4da108[_0xa42f('0x1f')];this[_0xa42f('0x20')]=_0x47037a[_0xa42f('0x20')];this[_0xa42f('0x21')]=_0x47037a[_0xa42f('0x21')];this[_0xa42f('0x22')]=_0x47037a[_0xa42f('0x22')];this[_0xa42f('0x23')]=_0x47037a[_0xa42f('0x23')];this[_0xa42f('0x24')]=_0x47037a[_0xa42f('0x24')];this[_0xa42f('0x25')]=_0x47037a[_0xa42f('0x25')];this[_0xa42f('0x26')]=_0x47037a[_0xa42f('0x26')];this[_0xa42f('0x27')]=_0x47037a[_0xa42f('0x27')];this[_0xa42f('0x28')]=_0x47037a[_0xa42f('0x28')];this[_0xa42f('0x29')]=_0x47037a[_0xa42f('0x29')]||'';this[_0xa42f('0x2a')]=_0x47037a['originatecalleridname']||'';}module[_0xa42f('0x2b')]=QueueCallerAbandon;
\ No newline at end of file
+var _0x9c34=['countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','number','responsetime','droptime','endtime','ringtime','holdtime','talktime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','diff','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry'];(function(_0x26a169,_0x54f908){var _0x1f07a1=function(_0x344027){while(--_0x344027){_0x26a169['push'](_0x26a169['shift']());}};_0x1f07a1(++_0x54f908);}(_0x9c34,0xcc));var _0x49c3=function(_0x22afe1,_0x4e0c1a){_0x22afe1=_0x22afe1-0x0;var _0x5aaffc=_0x9c34[_0x22afe1];return _0x5aaffc;};'use strict';var util=require(_0x49c3('0x0'));var _=require(_0x49c3('0x1'));var moment=require(_0x49c3('0x2'));function getSeconds(_0x5d399b,_0x476690){var _0x20dee6=moment(_0x5d399b)[_0x49c3('0x3')](0x0);var _0x5ea8c7=moment(_0x476690)[_0x49c3('0x3')](0x0);return _0x20dee6[_0x49c3('0x4')](_0x5ea8c7,'seconds');}function QueueCallerAbandon(_0x417a47,_0x4189d3){this[_0x49c3('0x5')]=_0x417a47[_0x49c3('0x5')];this['type']=_0x417a47[_0x49c3('0x6')];this[_0x49c3('0x7')]=_0x417a47[_0x49c3('0x6')]===_0x49c3('0x8')?_0x49c3('0x9'):_0x417a47[_0x49c3('0x6')];this[_0x49c3('0xa')]=_0x417a47[_0x49c3('0xa')];this['countcongestionretry']=_0x417a47[_0x49c3('0xb')];this[_0x49c3('0xc')]=_0x417a47[_0x49c3('0xc')];this[_0x49c3('0xd')]=_0x417a47[_0x49c3('0xa')]+_0x417a47[_0x49c3('0xb')]+_0x417a47[_0x49c3('0xc')]+_0x417a47[_0x49c3('0xe')]+_0x417a47[_0x49c3('0xf')]+_0x417a47[_0x49c3('0x10')]+_0x417a47['countmachineretry']+_0x417a47['countagentrejectretry'];this[_0x49c3('0xe')]=_0x417a47[_0x49c3('0xe')];this[_0x49c3('0xf')]=_0x417a47[_0x49c3('0xf')];this[_0x49c3('0x10')]=_0x417a47['countabandonedretry'];this[_0x49c3('0x11')]=_0x417a47[_0x49c3('0x11')];this[_0x49c3('0x12')]=_0x417a47[_0x49c3('0x12')];this[_0x49c3('0x13')]=_0x4189d3[_0x49c3('0x13')];this[_0x49c3('0x14')]=_0x417a47[_0x49c3('0x15')];this[_0x49c3('0x16')]=_0x417a47[_0x49c3('0x17')];this['starttime']=_0x417a47['starttime'];this[_0x49c3('0x18')]=_0x417a47[_0x49c3('0x18')];this[_0x49c3('0x19')]=_0x417a47['droptime'];this[_0x49c3('0x1a')]=this['droptime'];this[_0x49c3('0x1b')]=getSeconds(_0x417a47[_0x49c3('0x18')],_0x417a47['starttime']);this[_0x49c3('0x1c')]=getSeconds(this[_0x49c3('0x19')],_0x417a47[_0x49c3('0x18')]);this[_0x49c3('0x1d')]=0x0;this['queue']=_0x4189d3[_0x49c3('0x9')];this[_0x49c3('0x1e')]=_0x4189d3['connectedlinename'];this[_0x49c3('0x1f')]=_0x4189d3[_0x49c3('0x1f')];this[_0x49c3('0x20')]=_0x417a47['callback'];this[_0x49c3('0x21')]=_0x417a47[_0x49c3('0x21')];this[_0x49c3('0x22')]=_0x417a47[_0x49c3('0x22')];this[_0x49c3('0x23')]=_0x417a47[_0x49c3('0x23')];this[_0x49c3('0x24')]=_0x417a47['ContactId'];this[_0x49c3('0x25')]=_0x417a47[_0x49c3('0x25')];this[_0x49c3('0x26')]=_0x417a47['UserId'];this[_0x49c3('0x27')]=_0x417a47['VoiceQueueId'];this[_0x49c3('0x28')]=_0x417a47[_0x49c3('0x28')];this[_0x49c3('0x29')]=_0x417a47[_0x49c3('0x29')]||'';this[_0x49c3('0x2a')]=_0x417a47[_0x49c3('0x2a')]||'';}module[_0x49c3('0x2b')]=QueueCallerAbandon;
\ No newline at end of file
index 0cb5be3..c848558 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(_0x177803,_0x383358){var _0x55b3f8=function(_0x13bc67){while(--_0x13bc67){_0x177803['push'](_0x177803['shift']());}};_0x55b3f8(++_0x383358);}(_0xa9e0,0x123));var _0x0a9e=function(_0x481bf7,_0x437f69){_0x481bf7=_0x481bf7-0x0;var _0x461787=_0xa9e0[_0x481bf7];return _0x461787;};'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(_0x57aeaf,_0x362bb9){var _0x3d4174=function(_0x23bffb){while(--_0x23bffb){_0x57aeaf['push'](_0x57aeaf['shift']());}};_0x3d4174(++_0x362bb9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0xa9e0[_0x220dbb];return _0x2b77de;};'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 2d26332..62843c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02f9=['update','SENDING\x20FAILED\x20','then','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','[Fax][Message][Updated]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','SUCCESS','SENDING\x20FAILED:\x20','faxstatusstring','SENDING\x20FAILED','send','FaxAccountId','[Fax][execOriginate][success]','[Fax][execOriginate][failure]','checkAfterSend','checkTrunk','Trunk','isValid','message','path','execute','%s/%s.tif','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','execOriginate','addVariables','ext','isNil','active','format','SIP/%s','reachable','isTrunkReachable','[Fax][checkTrunk][Trunk\x20not\x20work]','fax','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','exports','lodash','bluebird','uuid','moment','tiff2pdf','./util/gs','../ami','./rpcDb','./util/util','./action','../rpc/faxMessage','channels','faxAccounts','trunks','actions','newchannel','syncNewchannel','bind','varset','syncVarSet','newstate','syncNewState','newexten','syncNewExten','faxstatus','syncFaxStatus','syncReceiveFax','hangup','syncHangup','syncOriginateResponse','prototype','context','from-voip-provider','hasOwnProperty','exten','localstationid','uniqueid','channel','name','info','\x20syncNewchannel\x20','variable','value','channelstate','channelstatedesc','operation','status','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','\x20result\x20conversion\x20file\x20','create','parse','application/pdf','calleridnum','error','\x20notify\x20','stringify','catch','\x20receiveFax\x20','merge','pick','response','AttachmentId'];(function(_0x5212ad,_0x35e4ac){var _0x66e95b=function(_0x421cb6){while(--_0x421cb6){_0x5212ad['push'](_0x5212ad['shift']());}};_0x66e95b(++_0x35e4ac);}(_0x02f9,0x11c));var _0x902f=function(_0x4d6e03,_0x532829){_0x4d6e03=_0x4d6e03-0x0;var _0x4ab28c=_0x02f9[_0x4d6e03];return _0x4ab28c;};'use strict';var util=require('util');var _=require(_0x902f('0x0'));var BPromise=require(_0x902f('0x1'));var uuid=require(_0x902f('0x2'));var moment=require(_0x902f('0x3'));var path=require('path');var tiff2pdf=require(_0x902f('0x4'));var gs=require(_0x902f('0x5'));var logger=require('../../../config/logger')('fax');var ami=require(_0x902f('0x6'));var rpcDb=require(_0x902f('0x7'));var Channel=require('./channel');var ut=require(_0x902f('0x8'));var Action=require(_0x902f('0x9'));var faxAccount=require('../rpc/faxAccount');var attachment=require('../rpc/attachment');var faxMessage=require(_0x902f('0xa'));function Fax(_0x2ac1c2){this[_0x902f('0xb')]={};this[_0x902f('0xc')]=_0x2ac1c2['faxAccounts'];this[_0x902f('0xd')]=_0x2ac1c2[_0x902f('0xd')];this[_0x902f('0xe')]={};ami['on'](_0x902f('0xf'),this[_0x902f('0x10')][_0x902f('0x11')](this));ami['on'](_0x902f('0x12'),this[_0x902f('0x13')]['bind'](this));ami['on'](_0x902f('0x14'),this[_0x902f('0x15')][_0x902f('0x11')](this));ami['on'](_0x902f('0x16'),this[_0x902f('0x17')][_0x902f('0x11')](this));ami['on'](_0x902f('0x18'),this[_0x902f('0x19')]['bind'](this));ami['on']('receivefax',this[_0x902f('0x1a')]['bind'](this));ami['on'](_0x902f('0x1b'),this[_0x902f('0x1c')][_0x902f('0x11')](this));ami['on']('originateresponse',this[_0x902f('0x1d')][_0x902f('0x11')](this));}Fax[_0x902f('0x1e')][_0x902f('0x10')]=function(_0x36a609){if(_0x36a609[_0x902f('0x1f')]===_0x902f('0x20')){for(var _0x21688a in this['faxAccounts']){if(this['faxAccounts'][_0x902f('0x21')](_0x21688a)){if(_0x36a609[_0x902f('0x22')]===this[_0x902f('0xc')][_0x21688a][_0x902f('0x23')]){this[_0x902f('0xb')][_0x36a609[_0x902f('0x24')]]={};this['channels'][_0x36a609[_0x902f('0x24')]][_0x902f('0x25')]=_0x36a609[_0x902f('0x25')];this[_0x902f('0xb')][_0x36a609[_0x902f('0x24')]]['id']=this[_0x902f('0xc')][_0x21688a]['id'];this[_0x902f('0xb')][_0x36a609[_0x902f('0x24')]][_0x902f('0x26')]=this[_0x902f('0xc')][_0x21688a]['name'];logger[_0x902f('0x27')](_0x36a609[_0x902f('0x24')],_0x902f('0x28'));}}}}if(this['actions'][_0x36a609['uniqueid']]){this['channels'][_0x36a609['uniqueid']]={};this[_0x902f('0xb')][_0x36a609[_0x902f('0x24')]][_0x902f('0x25')]=_0x36a609[_0x902f('0x25')];logger[_0x902f('0x27')](_0x36a609[_0x902f('0x24')],_0x902f('0x28'));}};Fax[_0x902f('0x1e')][_0x902f('0x13')]=function(_0x1cb0ad){if(this[_0x902f('0xb')][_0x1cb0ad[_0x902f('0x24')]]){for(var _0x2dfaf in _0x1cb0ad[_0x902f('0x29')]){if(_0x1cb0ad[_0x902f('0x29')][_0x902f('0x21')](_0x2dfaf)){this[_0x902f('0xb')][_0x1cb0ad[_0x902f('0x24')]][_0x2dfaf]=_0x1cb0ad[_0x902f('0x2a')];}}}};Fax[_0x902f('0x1e')]['syncNewState']=function(_0x310216){if(this['channels'][_0x310216[_0x902f('0x24')]]){this[_0x902f('0xb')][_0x310216[_0x902f('0x24')]]['channelstate']=_0x310216[_0x902f('0x2b')];this[_0x902f('0xb')][_0x310216[_0x902f('0x24')]]['channelstatedesc']=_0x310216[_0x902f('0x2c')];}};Fax[_0x902f('0x1e')][_0x902f('0x17')]=function(_0x525ad9){if(this[_0x902f('0xb')][_0x525ad9[_0x902f('0x24')]]){for(var _0x68d78a in _0x525ad9[_0x902f('0x29')]){if(_0x525ad9['variable'][_0x902f('0x21')](_0x68d78a)){this['channels'][_0x525ad9[_0x902f('0x24')]][_0x68d78a]=_0x525ad9[_0x902f('0x2a')];}}}};Fax['prototype'][_0x902f('0x19')]=function(_0x366681){if(this['channels'][_0x366681[_0x902f('0x24')]]){this[_0x902f('0xb')][_0x366681[_0x902f('0x24')]][_0x902f('0x2d')]=_0x366681[_0x902f('0x2d')];this[_0x902f('0xb')][_0x366681[_0x902f('0x24')]]['status']=_0x366681[_0x902f('0x2e')];this[_0x902f('0xb')][_0x366681[_0x902f('0x24')]][_0x902f('0x23')]=_0x366681[_0x902f('0x23')];this[_0x902f('0xb')][_0x366681[_0x902f('0x24')]][_0x902f('0x2f')]=_0x366681[_0x902f('0x2f')];logger[_0x902f('0x27')](_0x366681['uniqueid'],_0x902f('0x30'));}};Fax[_0x902f('0x1e')][_0x902f('0x1a')]=function(_0x371a18){var _0x5c4685=this;if(this[_0x902f('0xb')][_0x371a18['uniqueid']]){var _0x25f0db=this[_0x902f('0xb')][_0x371a18[_0x902f('0x24')]]['id'];this[_0x902f('0xb')][_0x371a18[_0x902f('0x24')]][_0x902f('0x31')]=_0x371a18[_0x902f('0x31')];this[_0x902f('0xb')][_0x371a18[_0x902f('0x24')]][_0x902f('0x32')]=_0x371a18[_0x902f('0x32')];this['channels'][_0x371a18[_0x902f('0x24')]]['localstationid']=_0x371a18[_0x902f('0x23')];this[_0x902f('0xb')][_0x371a18[_0x902f('0x24')]][_0x902f('0x33')]=_0x371a18[_0x902f('0x33')];this['channels'][_0x371a18[_0x902f('0x24')]][_0x902f('0x34')]=_0x371a18['transferrate'];this['channels'][_0x371a18[_0x902f('0x24')]][_0x902f('0x2f')]=_0x371a18['filename'];this[_0x902f('0xb')][_0x371a18[_0x902f('0x24')]]['calleridnum']=_0x371a18['calleridnum'];if(this[_0x902f('0xb')][_0x371a18['uniqueid']][_0x902f('0x32')]>0x0){tiff2pdf(_0x371a18['filename'],'/var/opt/motion2/server/files/attachments/',function(_0x59f9a7){logger['info'](_0x371a18[_0x902f('0x24')],_0x902f('0x35'),_0x59f9a7['message']);attachment[_0x902f('0x36')]({'name':path[_0x902f('0x37')](_0x371a18[_0x902f('0x2f')])['name'],'basename':path[_0x902f('0x37')](_0x371a18[_0x902f('0x2f')])[_0x902f('0x26')]+'.pdf','type':_0x902f('0x38')})['then'](function(_0x54e36b){faxAccount['notify'](_0x25f0db,{'from':_0x371a18[_0x902f('0x39')],'mapKey':'fax','body':path[_0x902f('0x37')](_0x371a18['filename'])[_0x902f('0x26')]+'.pdf','AttachmentId':_0x54e36b['id']})['catch'](function(_0x34301a){logger[_0x902f('0x3a')](_0x371a18[_0x902f('0x24')],_0x902f('0x3b'),JSON[_0x902f('0x3c')](_0x34301a));});})[_0x902f('0x3d')](function(_0x2c90d1){logger[_0x902f('0x3a')](_0x371a18[_0x902f('0x24')],'\x20receiveFax\x20',JSON[_0x902f('0x3c')](_0x2c90d1));});});}logger['info'](_0x371a18[_0x902f('0x24')],_0x902f('0x3e'));}};Fax[_0x902f('0x1e')][_0x902f('0x1d')]=function(_0x688a7){if(this[_0x902f('0xe')][_0x688a7[_0x902f('0x24')]]){_[_0x902f('0x3f')](this['channels'][_0x688a7[_0x902f('0x24')]],_[_0x902f('0x40')](_0x688a7,[_0x902f('0x41'),'reason']));}};function updateStatus(_0x1afa05){if(_0x1afa05[_0x902f('0x42')]){faxMessage[_0x902f('0x43')](_0x1afa05[_0x902f('0x42')],{'failMessage':_0x902f('0x44')})[_0x902f('0x45')](function(_0x332b75){ut[_0x902f('0x46')](_0x902f('0x47'),_0x332b75);})[_0x902f('0x3d')](function(_0x5eb56c){ut[_0x902f('0x46')](_0x902f('0x48'),_0x5eb56c);});}else{ut['logger'](_0x902f('0x49'));}}Fax[_0x902f('0x1e')][_0x902f('0x4a')]=function(_0x157dd8,_0x52f45f,_0x3d3ce0){var _0x2dafeb=this;var _0x1eef99={};if(_0x52f45f){_0x1eef99={'read':_0x52f45f};}else{_0x1eef99={'failMessage':_0x3d3ce0};}if(this[_0x902f('0xe')][_0x157dd8]['AttachmentId']){faxMessage[_0x902f('0x43')](this['actions'][_0x157dd8][_0x902f('0x42')],_0x1eef99)[_0x902f('0x45')](function(_0x54c0e1){ut[_0x902f('0x46')](_0x902f('0x4b'),_0x54c0e1);})[_0x902f('0x3d')](function(_0x2621f1){ut[_0x902f('0x46')]('[Fax][Message][NoUpdate1]',_0x2621f1);})[_0x902f('0x4c')](function(){delete _0x2dafeb[_0x902f('0xb')][_0x157dd8];delete _0x2dafeb[_0x902f('0xe')][_0x157dd8];});}else{ut[_0x902f('0x46')](_0x902f('0x4d'));delete this[_0x902f('0xb')][_0x157dd8];delete this['actions'][_0x157dd8];}};Fax[_0x902f('0x1e')]['syncHangup']=function(_0x501211){var _0x2cd2c3=this;if(this[_0x902f('0xb')][_0x501211[_0x902f('0x24')]]){if(this[_0x902f('0xe')][_0x501211[_0x902f('0x24')]]){this['channels'][_0x501211[_0x902f('0x24')]]['id']=this[_0x902f('0xe')][_0x501211['uniqueid']]['id'];this['channels'][_0x501211[_0x902f('0x24')]][_0x902f('0x26')]=this[_0x902f('0xe')][_0x501211[_0x902f('0x24')]][_0x902f('0x26')];}logger[_0x902f('0x27')](_0x501211['uniqueid'],this['actions'][_0x501211['uniqueid']]?_0x902f('0x4e'):_0x902f('0x4f'),JSON[_0x902f('0x3c')](this[_0x902f('0xb')][_0x501211[_0x902f('0x24')]]));if(this[_0x902f('0xe')][_0x501211[_0x902f('0x24')]]){if(this['channels'][_0x501211['uniqueid']][_0x902f('0x50')]>0x0&&this[_0x902f('0xb')][_0x501211[_0x902f('0x24')]][_0x902f('0x18')]===_0x902f('0x51')){this[_0x902f('0x4a')](_0x501211[_0x902f('0x24')],!![]);}else{this['updateStatus'](_0x501211[_0x902f('0x24')],![],this['channels'][_0x501211['uniqueid']]['faxstatusstring']?_0x902f('0x52')+this[_0x902f('0xb')][_0x501211[_0x902f('0x24')]][_0x902f('0x53')]:_0x902f('0x54'));}}}};Fax[_0x902f('0x1e')][_0x902f('0x55')]=function(_0x2a1bfd){var _0x184000=this;return new BPromise(function(_0x49ae4c,_0x1f997a){_0x184000['execOriginate'](_0x2a1bfd,_0x184000['faxAccounts'][_0x2a1bfd[_0x902f('0x56')]])[_0x902f('0x45')](function(_0x34f09a){ut['logger'](_0x902f('0x57'),_0x34f09a);_0x49ae4c(ut['message']('Fax\x20received'));})['catch'](function(_0x5e0b94){ut[_0x902f('0x46')](_0x902f('0x58'),_0x5e0b94);updateStatus(_0x2a1bfd);_0x1f997a(ut['message']('Fax\x20failed'));});});};Fax[_0x902f('0x1e')][_0x902f('0x59')]=function(_0x3630d6){var _0x52ffbb=this;return new BPromise(function(_0x229820,_0x4d4670){var _0x53ecd1=_0x52ffbb[_0x902f('0x5a')](_0x52ffbb['faxAccounts'][_0x3630d6[_0x902f('0x56')]][_0x902f('0x5b')],_0x3630d6);if(_0x53ecd1[_0x902f('0x5c')]){_0x229820(ut[_0x902f('0x5d')]('Trunk\x20Reachable'));}else{_0x4d4670(ut[_0x902f('0x5d')](_0x53ecd1[_0x902f('0x5d')]));}});};function originate(_0x1cd085,_0x4cad96,_0x4a77f4){return new BPromise(function(_0x115f2d,_0x361068){if(_0x4a77f4){var _0x5a323c=util['format']('gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit',path[_0x902f('0x37')](_0x1cd085[_0x902f('0x5e')])[_0x902f('0x26')],_0x1cd085[_0x902f('0x5e')]);gs[_0x902f('0x5f')](_0x5a323c)[_0x902f('0x45')](function(){_0x1cd085[_0x902f('0x5e')]=util['format'](_0x902f('0x60'),path[_0x902f('0x37')](_0x1cd085[_0x902f('0x5e')])['dir'],path['parse'](_0x1cd085[_0x902f('0x5e')])[_0x902f('0x26')]);_0x4cad96[_0x902f('0x61')]=_0x1cd085['path'];ut[_0x902f('0x46')](_0x902f('0x62'),'');ami[_0x902f('0x63')](ut[_0x902f('0x64')](_0x1cd085,_0x4cad96))[_0x902f('0x45')](function(_0x447cd3){_0x115f2d(_0x447cd3);})[_0x902f('0x3d')](function(_0x4cdcbe){_0x361068(_0x4cdcbe);});})[_0x902f('0x3d')](function(_0x41fc3a){_0x361068(_0x41fc3a);});}else{ami[_0x902f('0x63')](ut[_0x902f('0x64')](_0x1cd085,_0x4cad96))[_0x902f('0x45')](function(_0x37c403){_0x115f2d(_0x37c403);})[_0x902f('0x3d')](function(_0x55fce1){_0x361068(_0x55fce1);});}});}Fax['prototype'][_0x902f('0x65')]=function(_0x3917c3,_0x3187cb){var _0xb942c9=this;return new BPromise(function(_0x3a7405,_0x333a85){var _0x4c7f7e=uuid['v4']();var _0x72b0a1=ut[_0x902f('0x66')](_0x3917c3,_0x3187cb);_0xb942c9['actions'][_0x4c7f7e]=new Action(_0x4c7f7e,_0x3187cb,_0x3917c3);var _0x1bd6fd=_0xb942c9['actions'][_0x4c7f7e];if(path[_0x902f('0x37')](_0x3917c3['path'])[_0x902f('0x67')]==='.pdf'){originate(_0x1bd6fd,_0x72b0a1,!![])['then'](function(_0x367f62){_0x3a7405(_0x367f62);})[_0x902f('0x3d')](function(_0x36f562){_0x333a85(_0x36f562);});}else{originate(_0x1bd6fd,_0x72b0a1,![])[_0x902f('0x45')](function(_0x577ca2){_0x3a7405(_0x577ca2);})[_0x902f('0x3d')](function(_0x4f7206){_0x333a85(_0x4f7206);});}});};Fax[_0x902f('0x1e')]['isTrunkReachable']=function(_0x1a42ae){return!_[_0x902f('0x68')](_0x1a42ae)&&!_['isNil'](_0x1a42ae['name'])&&!_['isNil'](_0x1a42ae[_0x902f('0x69')])&&_0x1a42ae['active']&&!_['isNil'](this['trunks'][util[_0x902f('0x6a')](_0x902f('0x6b'),_0x1a42ae[_0x902f('0x26')])])&&!_[_0x902f('0x68')](this[_0x902f('0xd')][util[_0x902f('0x6a')](_0x902f('0x6b'),_0x1a42ae[_0x902f('0x26')])][_0x902f('0x2e')])&&(this[_0x902f('0xd')][util['format']('SIP/%s',_0x1a42ae['name'])]['status']===_0x902f('0x6c')||this['trunks'][util['format'](_0x902f('0x6b'),_0x1a42ae['name'])][_0x902f('0x2e')]==='unmonitored');};Fax[_0x902f('0x1e')][_0x902f('0x5a')]=function(_0x5eee18,_0x301136){if(!this[_0x902f('0x6d')](_0x5eee18)){ut[_0x902f('0x46')](_0x902f('0x6e'),_[_0x902f('0x68')](_0x5eee18)?'':_0x5eee18[_0x902f('0x26')]+'\x20Trunk\x20is\x20not\x20active');return{'isValid':![],'message':'Trunk\x20not\x20working'};}if(_[_0x902f('0x68')](_0x301136[_0x902f('0x6f')])){ut['logger'](_0x902f('0x70'),JSON[_0x902f('0x3c')](_0x301136));return{'isValid':![],'message':_0x902f('0x71')};}if(_[_0x902f('0x68')](_0x301136['path'])){ut[_0x902f('0x46')](_0x902f('0x72'),JSON[_0x902f('0x3c')](_0x301136));return{'isValid':![],'message':_0x902f('0x73')};}return{'isValid':!![],'message':'Is\x20Valid'};};module[_0x902f('0x74')]=Fax;
\ No newline at end of file
+var _0x2642=['execOriginate','Fax\x20received','Fax\x20failed','checkAfterSend','checkTrunk','FaxAccountId','Trunk','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','format','Convert\x20pdf\x20to\x20tif','Action','variablesAction','ext','isTrunkReachable','isNil','active','SIP/%s','reachable','unmonitored','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Is\x20Valid','lodash','bluebird','uuid','moment','tiff2pdf','./util/gs','fax','../ami','./rpcDb','./channel','./util/util','./action','../rpc/faxAccount','../rpc/attachment','../rpc/faxMessage','channels','faxAccounts','trunks','newchannel','bind','syncVarSet','newstate','syncNewState','newexten','syncNewExten','faxstatus','receivefax','syncReceiveFax','syncHangup','syncOriginateResponse','syncNewchannel','context','exten','localstationid','uniqueid','channel','name','info','\x20syncNewchannel\x20','actions','variable','hasOwnProperty','prototype','channelstate','channelstatedesc','syncFaxStatus','operation','status','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','parse','.pdf','application/pdf','then','notify','error','\x20notify\x20','stringify','catch','\x20receiveFax\x20','merge','response','reason','AttachmentId','update','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','faxpages','SUCCESS','faxstatusstring','send'];(function(_0xa8883,_0x1f107f){var _0x479426=function(_0x4e56b9){while(--_0x4e56b9){_0xa8883['push'](_0xa8883['shift']());}};_0x479426(++_0x1f107f);}(_0x2642,0x1e2));var _0x2264=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x2642[_0x501510];return _0x1e6ee5;};'use strict';var util=require('util');var _=require(_0x2264('0x0'));var BPromise=require(_0x2264('0x1'));var uuid=require(_0x2264('0x2'));var moment=require(_0x2264('0x3'));var path=require('path');var tiff2pdf=require(_0x2264('0x4'));var gs=require(_0x2264('0x5'));var logger=require('../../../config/logger')(_0x2264('0x6'));var ami=require(_0x2264('0x7'));var rpcDb=require(_0x2264('0x8'));var Channel=require(_0x2264('0x9'));var ut=require(_0x2264('0xa'));var Action=require(_0x2264('0xb'));var faxAccount=require(_0x2264('0xc'));var attachment=require(_0x2264('0xd'));var faxMessage=require(_0x2264('0xe'));function Fax(_0x36edf9){this[_0x2264('0xf')]={};this[_0x2264('0x10')]=_0x36edf9[_0x2264('0x10')];this[_0x2264('0x11')]=_0x36edf9[_0x2264('0x11')];this['actions']={};ami['on'](_0x2264('0x12'),this['syncNewchannel'][_0x2264('0x13')](this));ami['on']('varset',this[_0x2264('0x14')][_0x2264('0x13')](this));ami['on'](_0x2264('0x15'),this[_0x2264('0x16')][_0x2264('0x13')](this));ami['on'](_0x2264('0x17'),this[_0x2264('0x18')][_0x2264('0x13')](this));ami['on'](_0x2264('0x19'),this['syncFaxStatus'][_0x2264('0x13')](this));ami['on'](_0x2264('0x1a'),this[_0x2264('0x1b')]['bind'](this));ami['on']('hangup',this[_0x2264('0x1c')][_0x2264('0x13')](this));ami['on']('originateresponse',this[_0x2264('0x1d')]['bind'](this));}Fax['prototype'][_0x2264('0x1e')]=function(_0x59e8ec){if(_0x59e8ec[_0x2264('0x1f')]==='from-voip-provider'){for(var _0x1e7a0b in this[_0x2264('0x10')]){if(this[_0x2264('0x10')]['hasOwnProperty'](_0x1e7a0b)){if(_0x59e8ec[_0x2264('0x20')]===this[_0x2264('0x10')][_0x1e7a0b][_0x2264('0x21')]){this[_0x2264('0xf')][_0x59e8ec['uniqueid']]={};this[_0x2264('0xf')][_0x59e8ec[_0x2264('0x22')]][_0x2264('0x23')]=_0x59e8ec[_0x2264('0x23')];this['channels'][_0x59e8ec[_0x2264('0x22')]]['id']=this[_0x2264('0x10')][_0x1e7a0b]['id'];this[_0x2264('0xf')][_0x59e8ec[_0x2264('0x22')]]['name']=this[_0x2264('0x10')][_0x1e7a0b][_0x2264('0x24')];logger[_0x2264('0x25')](_0x59e8ec[_0x2264('0x22')],_0x2264('0x26'));}}}}if(this[_0x2264('0x27')][_0x59e8ec[_0x2264('0x22')]]){this[_0x2264('0xf')][_0x59e8ec['uniqueid']]={};this[_0x2264('0xf')][_0x59e8ec['uniqueid']]['channel']=_0x59e8ec[_0x2264('0x23')];logger[_0x2264('0x25')](_0x59e8ec[_0x2264('0x22')],'\x20syncNewchannel\x20');}};Fax['prototype'][_0x2264('0x14')]=function(_0x3bf320){if(this[_0x2264('0xf')][_0x3bf320[_0x2264('0x22')]]){for(var _0x4a8d74 in _0x3bf320[_0x2264('0x28')]){if(_0x3bf320['variable'][_0x2264('0x29')](_0x4a8d74)){this['channels'][_0x3bf320['uniqueid']][_0x4a8d74]=_0x3bf320['value'];}}}};Fax[_0x2264('0x2a')][_0x2264('0x16')]=function(_0x54c710){if(this[_0x2264('0xf')][_0x54c710[_0x2264('0x22')]]){this[_0x2264('0xf')][_0x54c710[_0x2264('0x22')]][_0x2264('0x2b')]=_0x54c710['channelstate'];this['channels'][_0x54c710[_0x2264('0x22')]]['channelstatedesc']=_0x54c710[_0x2264('0x2c')];}};Fax['prototype'][_0x2264('0x18')]=function(_0x568d95){if(this['channels'][_0x568d95[_0x2264('0x22')]]){for(var _0x52f91d in _0x568d95[_0x2264('0x28')]){if(_0x568d95['variable'][_0x2264('0x29')](_0x52f91d)){this[_0x2264('0xf')][_0x568d95[_0x2264('0x22')]][_0x52f91d]=_0x568d95['value'];}}}};Fax[_0x2264('0x2a')][_0x2264('0x2d')]=function(_0x196d3d){if(this[_0x2264('0xf')][_0x196d3d[_0x2264('0x22')]]){this[_0x2264('0xf')][_0x196d3d[_0x2264('0x22')]][_0x2264('0x2e')]=_0x196d3d[_0x2264('0x2e')];this[_0x2264('0xf')][_0x196d3d[_0x2264('0x22')]][_0x2264('0x2f')]=_0x196d3d['status'];this[_0x2264('0xf')][_0x196d3d[_0x2264('0x22')]][_0x2264('0x21')]=_0x196d3d[_0x2264('0x21')];this['channels'][_0x196d3d['uniqueid']][_0x2264('0x30')]=_0x196d3d[_0x2264('0x30')];logger[_0x2264('0x25')](_0x196d3d[_0x2264('0x22')],_0x2264('0x31'));}};Fax['prototype']['syncReceiveFax']=function(_0x17d948){var _0x6b0de8=this;if(this[_0x2264('0xf')][_0x17d948['uniqueid']]){var _0x3ed0ee=this['channels'][_0x17d948['uniqueid']]['id'];this['channels'][_0x17d948[_0x2264('0x22')]][_0x2264('0x32')]=_0x17d948[_0x2264('0x32')];this[_0x2264('0xf')][_0x17d948[_0x2264('0x22')]][_0x2264('0x33')]=_0x17d948[_0x2264('0x33')];this[_0x2264('0xf')][_0x17d948[_0x2264('0x22')]]['localstationid']=_0x17d948['localstationid'];this[_0x2264('0xf')][_0x17d948[_0x2264('0x22')]][_0x2264('0x34')]=_0x17d948[_0x2264('0x34')];this['channels'][_0x17d948[_0x2264('0x22')]][_0x2264('0x35')]=_0x17d948[_0x2264('0x35')];this[_0x2264('0xf')][_0x17d948[_0x2264('0x22')]][_0x2264('0x30')]=_0x17d948[_0x2264('0x30')];this['channels'][_0x17d948[_0x2264('0x22')]][_0x2264('0x36')]=_0x17d948[_0x2264('0x36')];if(this[_0x2264('0xf')][_0x17d948['uniqueid']][_0x2264('0x33')]>0x0){tiff2pdf(_0x17d948[_0x2264('0x30')],_0x2264('0x37'),function(_0x3657dd){logger[_0x2264('0x25')](_0x17d948[_0x2264('0x22')],_0x2264('0x38'),_0x3657dd[_0x2264('0x39')]);attachment['create']({'name':path[_0x2264('0x3a')](_0x17d948['filename'])['name'],'basename':path['parse'](_0x17d948[_0x2264('0x30')])[_0x2264('0x24')]+_0x2264('0x3b'),'type':_0x2264('0x3c')})[_0x2264('0x3d')](function(_0x53e27b){faxAccount[_0x2264('0x3e')](_0x3ed0ee,{'from':_0x17d948[_0x2264('0x36')],'mapKey':'fax','body':path[_0x2264('0x3a')](_0x17d948['filename'])['name']+_0x2264('0x3b'),'AttachmentId':_0x53e27b['id']})['catch'](function(_0x1fa3f0){logger[_0x2264('0x3f')](_0x17d948[_0x2264('0x22')],_0x2264('0x40'),JSON[_0x2264('0x41')](_0x1fa3f0));});})[_0x2264('0x42')](function(_0x4d73d4){logger[_0x2264('0x3f')](_0x17d948[_0x2264('0x22')],_0x2264('0x43'),JSON[_0x2264('0x41')](_0x4d73d4));});});}logger[_0x2264('0x25')](_0x17d948[_0x2264('0x22')],_0x2264('0x43'));}};Fax[_0x2264('0x2a')][_0x2264('0x1d')]=function(_0x49c1f6){if(this[_0x2264('0x27')][_0x49c1f6[_0x2264('0x22')]]){_[_0x2264('0x44')](this[_0x2264('0xf')][_0x49c1f6[_0x2264('0x22')]],_['pick'](_0x49c1f6,[_0x2264('0x45'),_0x2264('0x46')]));}};function updateStatus(_0xe126a8){if(_0xe126a8[_0x2264('0x47')]){faxMessage[_0x2264('0x48')](_0xe126a8[_0x2264('0x47')],{'failMessage':_0x2264('0x49')})[_0x2264('0x3d')](function(_0x2beef4){ut[_0x2264('0x4a')](_0x2264('0x4b'),_0x2beef4);})[_0x2264('0x42')](function(_0x2d2223){ut['logger'](_0x2264('0x4c'),_0x2d2223);});}else{ut['logger'](_0x2264('0x4d'));}}Fax[_0x2264('0x2a')][_0x2264('0x4e')]=function(_0x575946,_0x5aaf37,_0x155b9d){var _0x41a583=this;var _0x3d4661={};if(_0x5aaf37){_0x3d4661={'read':_0x5aaf37};}else{_0x3d4661={'failMessage':_0x155b9d};}if(this[_0x2264('0x27')][_0x575946][_0x2264('0x47')]){faxMessage['update'](this['actions'][_0x575946]['AttachmentId'],_0x3d4661)['then'](function(_0x12ec6c){ut[_0x2264('0x4a')](_0x2264('0x4f'),_0x12ec6c);})[_0x2264('0x42')](function(_0x2afde5){ut[_0x2264('0x4a')](_0x2264('0x50'),_0x2afde5);})[_0x2264('0x51')](function(){delete _0x41a583[_0x2264('0xf')][_0x575946];delete _0x41a583[_0x2264('0x27')][_0x575946];});}else{ut[_0x2264('0x4a')](_0x2264('0x52'));delete this[_0x2264('0xf')][_0x575946];delete this[_0x2264('0x27')][_0x575946];}};Fax[_0x2264('0x2a')][_0x2264('0x1c')]=function(_0x2159d4){var _0x38d887=this;if(this[_0x2264('0xf')][_0x2159d4['uniqueid']]){if(this['actions'][_0x2159d4['uniqueid']]){this[_0x2264('0xf')][_0x2159d4['uniqueid']]['id']=this['actions'][_0x2159d4[_0x2264('0x22')]]['id'];this[_0x2264('0xf')][_0x2159d4[_0x2264('0x22')]]['name']=this[_0x2264('0x27')][_0x2159d4['uniqueid']][_0x2264('0x24')];}logger[_0x2264('0x25')](_0x2159d4[_0x2264('0x22')],this['actions'][_0x2159d4[_0x2264('0x22')]]?_0x2264('0x53'):'\x20hangup\x20faxRiceive\x20',JSON['stringify'](this['channels'][_0x2159d4[_0x2264('0x22')]]));if(this[_0x2264('0x27')][_0x2159d4[_0x2264('0x22')]]){if(this[_0x2264('0xf')][_0x2159d4['uniqueid']][_0x2264('0x54')]>0x0&&this['channels'][_0x2159d4[_0x2264('0x22')]][_0x2264('0x19')]===_0x2264('0x55')){this['updateStatus'](_0x2159d4[_0x2264('0x22')],!![]);}else{this['updateStatus'](_0x2159d4[_0x2264('0x22')],![],this['channels'][_0x2159d4[_0x2264('0x22')]][_0x2264('0x56')]?'SENDING\x20FAILED:\x20'+this[_0x2264('0xf')][_0x2159d4[_0x2264('0x22')]][_0x2264('0x56')]:'SENDING\x20FAILED');}}}};Fax['prototype'][_0x2264('0x57')]=function(_0x461901){var _0x215c22=this;return new BPromise(function(_0x5503b7,_0x5d72d7){_0x215c22[_0x2264('0x58')](_0x461901,_0x215c22[_0x2264('0x10')][_0x461901['FaxAccountId']])[_0x2264('0x3d')](function(_0x8dd645){ut['logger']('[Fax][execOriginate][success]',_0x8dd645);_0x5503b7(ut[_0x2264('0x39')](_0x2264('0x59')));})[_0x2264('0x42')](function(_0x1dbba3){ut[_0x2264('0x4a')]('[Fax][execOriginate][failure]',_0x1dbba3);updateStatus(_0x461901);_0x5d72d7(ut['message'](_0x2264('0x5a')));});});};Fax[_0x2264('0x2a')][_0x2264('0x5b')]=function(_0x5aebd7){var _0x2f5be4=this;return new BPromise(function(_0x8b8943,_0x410dca){var _0x5c77df=_0x2f5be4[_0x2264('0x5c')](_0x2f5be4[_0x2264('0x10')][_0x5aebd7[_0x2264('0x5d')]][_0x2264('0x5e')],_0x5aebd7);if(_0x5c77df['isValid']){_0x8b8943(ut[_0x2264('0x39')]('Trunk\x20Reachable'));}else{_0x410dca(ut[_0x2264('0x39')](_0x5c77df[_0x2264('0x39')]));}});};function originate(_0xaa2bac,_0x44a41b,_0x4c76af){return new BPromise(function(_0x32e747,_0x1460e3){if(_0x4c76af){var _0x1b86a4=util['format'](_0x2264('0x5f'),path['parse'](_0xaa2bac[_0x2264('0x60')])[_0x2264('0x24')],_0xaa2bac[_0x2264('0x60')]);gs['execute'](_0x1b86a4)[_0x2264('0x3d')](function(){_0xaa2bac['path']=util[_0x2264('0x61')]('%s/%s.tif',path[_0x2264('0x3a')](_0xaa2bac['path'])['dir'],path['parse'](_0xaa2bac[_0x2264('0x60')])['name']);_0x44a41b['XMF-PATH']=_0xaa2bac['path'];ut[_0x2264('0x4a')](_0x2264('0x62'),'');ami[_0x2264('0x63')](ut['variablesAction'](_0xaa2bac,_0x44a41b))['then'](function(_0x28dc38){_0x32e747(_0x28dc38);})['catch'](function(_0x13c9d5){_0x1460e3(_0x13c9d5);});})['catch'](function(_0x211bec){_0x1460e3(_0x211bec);});}else{ami[_0x2264('0x63')](ut[_0x2264('0x64')](_0xaa2bac,_0x44a41b))[_0x2264('0x3d')](function(_0x1b0523){_0x32e747(_0x1b0523);})[_0x2264('0x42')](function(_0x394324){_0x1460e3(_0x394324);});}});}Fax[_0x2264('0x2a')][_0x2264('0x58')]=function(_0x5eb0a9,_0x5326c9){var _0x13e949=this;return new BPromise(function(_0x127b27,_0x44d0ed){var _0x268aaf=uuid['v4']();var _0x19e77e=ut['addVariables'](_0x5eb0a9,_0x5326c9);_0x13e949[_0x2264('0x27')][_0x268aaf]=new Action(_0x268aaf,_0x5326c9,_0x5eb0a9);var _0x179dfd=_0x13e949[_0x2264('0x27')][_0x268aaf];if(path['parse'](_0x5eb0a9[_0x2264('0x60')])[_0x2264('0x65')]===_0x2264('0x3b')){originate(_0x179dfd,_0x19e77e,!![])[_0x2264('0x3d')](function(_0x54ecc0){_0x127b27(_0x54ecc0);})[_0x2264('0x42')](function(_0x32001b){_0x44d0ed(_0x32001b);});}else{originate(_0x179dfd,_0x19e77e,![])[_0x2264('0x3d')](function(_0x4c29fc){_0x127b27(_0x4c29fc);})['catch'](function(_0x3b24da){_0x44d0ed(_0x3b24da);});}});};Fax[_0x2264('0x2a')][_0x2264('0x66')]=function(_0x19de22){return!_[_0x2264('0x67')](_0x19de22)&&!_[_0x2264('0x67')](_0x19de22[_0x2264('0x24')])&&!_['isNil'](_0x19de22[_0x2264('0x68')])&&_0x19de22[_0x2264('0x68')]&&!_[_0x2264('0x67')](this[_0x2264('0x11')][util[_0x2264('0x61')](_0x2264('0x69'),_0x19de22[_0x2264('0x24')])])&&!_[_0x2264('0x67')](this[_0x2264('0x11')][util[_0x2264('0x61')](_0x2264('0x69'),_0x19de22['name'])]['status'])&&(this[_0x2264('0x11')][util['format'](_0x2264('0x69'),_0x19de22[_0x2264('0x24')])][_0x2264('0x2f')]===_0x2264('0x6a')||this[_0x2264('0x11')][util[_0x2264('0x61')](_0x2264('0x69'),_0x19de22['name'])][_0x2264('0x2f')]===_0x2264('0x6b'));};Fax[_0x2264('0x2a')][_0x2264('0x5c')]=function(_0x10cc45,_0x3cef3c){if(!this[_0x2264('0x66')](_0x10cc45)){ut[_0x2264('0x4a')]('[Fax][checkTrunk][Trunk\x20not\x20work]',_[_0x2264('0x67')](_0x10cc45)?'':_0x10cc45[_0x2264('0x24')]+_0x2264('0x6c'));return{'isValid':![],'message':_0x2264('0x6d')};}if(_[_0x2264('0x67')](_0x3cef3c['fax'])){ut[_0x2264('0x4a')](_0x2264('0x6e'),JSON[_0x2264('0x41')](_0x3cef3c));return{'isValid':![],'message':_0x2264('0x6f')};}if(_[_0x2264('0x67')](_0x3cef3c['path'])){ut[_0x2264('0x4a')](_0x2264('0x70'),JSON[_0x2264('0x41')](_0x3cef3c));return{'isValid':![],'message':'Empty\x20path'};}return{'isValid':!![],'message':_0x2264('0x71')};};module['exports']=Fax;
\ No newline at end of file
index bacc340..b495452 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf812=['notify','resolve','catch','[Notify]\x20','../../../config/logger','preview','lodash','../rpc/faxAccount','error','inspect'];(function(_0xbe85b3,_0x26463c){var _0x185798=function(_0x173fd8){while(--_0x173fd8){_0xbe85b3['push'](_0xbe85b3['shift']());}};_0x185798(++_0x26463c);}(_0xf812,0xfe));var _0x2f81=function(_0x5a9405,_0x52b2aa){_0x5a9405=_0x5a9405-0x0;var _0x3ae14d=_0xf812[_0x5a9405];return _0x3ae14d;};'use strict';var util=require('util');var BPromise=require('bluebird');var logger=require(_0x2f81('0x0'))(_0x2f81('0x1'));var _=require(_0x2f81('0x2'));var faxAccount=require(_0x2f81('0x3'));function loggerCatch(_0x43e1f8){return function(_0x7fd2c7){logger[_0x2f81('0x4')](_0x43e1f8,util[_0x2f81('0x5')](_0x7fd2c7,{'showHidden':![],'depth':null}));};}exports[_0x2f81('0x6')]=function(_0x3c77a4,_0x41ec1c){return BPromise[_0x2f81('0x7')]()['then'](faxAccount[_0x2f81('0x6')](_0x3c77a4,_0x41ec1c))[_0x2f81('0x8')](loggerCatch(_0x2f81('0x9')));};
\ No newline at end of file
+var _0x49a6=['preview','error','inspect','notify','resolve','util','bluebird','../../../config/logger'];(function(_0x2070da,_0x45e586){var _0x4f9fe1=function(_0x5b6f2a){while(--_0x5b6f2a){_0x2070da['push'](_0x2070da['shift']());}};_0x4f9fe1(++_0x45e586);}(_0x49a6,0x1cd));var _0x649a=function(_0x4aa0a5,_0x778d4d){_0x4aa0a5=_0x4aa0a5-0x0;var _0xe2d4c3=_0x49a6[_0x4aa0a5];return _0xe2d4c3;};'use strict';var util=require(_0x649a('0x0'));var BPromise=require(_0x649a('0x1'));var logger=require(_0x649a('0x2'))(_0x649a('0x3'));var _=require('lodash');var faxAccount=require('../rpc/faxAccount');function loggerCatch(_0x558c0d){return function(_0x498ee4){logger[_0x649a('0x4')](_0x558c0d,util[_0x649a('0x5')](_0x498ee4,{'showHidden':![],'depth':null}));};}exports[_0x649a('0x6')]=function(_0x5c8dad,_0x4b0f47){return BPromise[_0x649a('0x7')]()['then'](faxAccount[_0x649a('0x6')](_0x5c8dad,_0x4b0f47))['catch'](loggerCatch('[Notify]\x20'));};
\ No newline at end of file
index 5051009..6236044 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ecf=['Exec\x20gs','info','\x20Error\x20:','inspect','../../../../config/logger','bluebird','child_process','exec','execute'];(function(_0x269a18,_0x281cdc){var _0x49969b=function(_0x11f7d4){while(--_0x11f7d4){_0x269a18['push'](_0x269a18['shift']());}};_0x49969b(++_0x281cdc);}(_0x0ecf,0xd3));var _0xf0ec=function(_0x2c5aee,_0x5da9ec){_0x2c5aee=_0x2c5aee-0x0;var _0x2aca83=_0x0ecf[_0x2c5aee];return _0x2aca83;};'use strict';var util=require('util');var logger=require(_0xf0ec('0x0'))('fax');var BPromise=require(_0xf0ec('0x1'));var exec=require(_0xf0ec('0x2'))[_0xf0ec('0x3')];exports[_0xf0ec('0x4')]=function(_0x4817b0){return new BPromise(function(_0x3dc540,_0x5c4811){exec(_0x4817b0,function(_0x3d3338,_0x1249e6,_0x37dc66){logger['info'](_0xf0ec('0x5'),_0x1249e6);if(_0x3d3338){logger[_0xf0ec('0x6')](_0xf0ec('0x5'),_0xf0ec('0x7'),util[_0xf0ec('0x8')](_0x3d3338,{'showHidden':![],'depth':null}),_0x1249e6,_0x37dc66);_0x5c4811(_0x3d3338);}_0x3dc540(_0x1249e6);});});};
\ No newline at end of file
+var _0x2339=['\x20Error\x20:','util','../../../../config/logger','fax','bluebird','child_process','exec','execute','info','Exec\x20gs'];(function(_0x467488,_0x38c7ae){var _0x56107f=function(_0x4992b3){while(--_0x4992b3){_0x467488['push'](_0x467488['shift']());}};_0x56107f(++_0x38c7ae);}(_0x2339,0x1e1));var _0x9233=function(_0x448721,_0x45ff24){_0x448721=_0x448721-0x0;var _0x649ebc=_0x2339[_0x448721];return _0x649ebc;};'use strict';var util=require(_0x9233('0x0'));var logger=require(_0x9233('0x1'))(_0x9233('0x2'));var BPromise=require(_0x9233('0x3'));var exec=require(_0x9233('0x4'))[_0x9233('0x5')];exports[_0x9233('0x6')]=function(_0x168b04){return new BPromise(function(_0x44f5c9,_0x23db25){exec(_0x168b04,function(_0x5f76cb,_0x48a66a,_0x4a89f1){logger[_0x9233('0x7')](_0x9233('0x8'),_0x48a66a);if(_0x5f76cb){logger[_0x9233('0x7')](_0x9233('0x8'),_0x9233('0x9'),util['inspect'](_0x5f76cb,{'showHidden':![],'depth':null}),_0x48a66a,_0x4a89f1);_0x23db25(_0x5f76cb);}_0x44f5c9(_0x48a66a);});});};
\ No newline at end of file
index 4629179..6012da1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cc0=['fax','message','info','addVariables','ecm','headerinfo','minrate','maxrate','\x22%s\x22','modem','faxdetect','t38timeout','localstationid','path','variablesAction','originate','channel','xcally-motion-fax','from-sip','uniqueid','../../../../config/logger'];(function(_0x165834,_0x49e6d7){var _0x2f8df1=function(_0x224230){while(--_0x224230){_0x165834['push'](_0x165834['shift']());}};_0x2f8df1(++_0x49e6d7);}(_0x6cc0,0xd1));var _0x06cc=function(_0x33e61d,_0x182628){_0x33e61d=_0x33e61d-0x0;var _0x185b31=_0x6cc0[_0x33e61d];return _0x185b31;};'use strict';var util=require('util');var _=require('lodash');var moment=require('moment');var logger=require(_0x06cc('0x0'))(_0x06cc('0x1'));exports[_0x06cc('0x2')]=function(_0x14087c){return{'message':_0x14087c};};exports['logger']=function(_0x4ecad4,_0x49b0b9){logger[_0x06cc('0x3')](_0x4ecad4,util['inspect'](_0x49b0b9,{'showHidden':![],'depth':null}));};exports[_0x06cc('0x4')]=function(_0xbcc478,_0x52dd84){var _0x1dec5b={'XMF-ECM':_0x52dd84[_0x06cc('0x5')],'XMF-HEADERINFO':_0x52dd84[_0x06cc('0x6')],'XMF-MINRATE':_0x52dd84[_0x06cc('0x7')],'XMF-MAXRATE':_0x52dd84[_0x06cc('0x8')],'XMF-MODEM':util['format'](_0x06cc('0x9'),_0x52dd84[_0x06cc('0xa')]),'XMF-GATEWAY':_0x52dd84['gateway'],'XMF-FAXDETECT':_0x52dd84[_0x06cc('0xb')],'XMF-T38TIMEOUT':_0x52dd84[_0x06cc('0xc')],'XMF-LOCALSTATIONID':_0x52dd84[_0x06cc('0xd')],'XMF-PATH':_0xbcc478[_0x06cc('0xe')]};return _0x1dec5b;};exports[_0x06cc('0xf')]=function(_0x38e7de,_0x11bd23){return{'actionid':_0x38e7de['uniqueid'],'action':_0x06cc('0x10'),'channel':_0x38e7de[_0x06cc('0x11')],'Exten':_0x06cc('0x12'),'Context':_0x06cc('0x13'),'Priority':'1','callerid':util['format']('\x22%s\x22\x20<%s>',_0x38e7de['headerinfo']?_0x38e7de[_0x06cc('0x6')]:'',_0x38e7de[_0x06cc('0xd')]),'variable':_0x11bd23,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x38e7de[_0x06cc('0x14')]};};
\ No newline at end of file
+var _0x17d3=['message','info','addVariables','ecm','headerinfo','maxrate','\x22%s\x22','modem','variablesAction','uniqueid','originate','xcally-motion-fax','from-sip','format','\x22%s\x22\x20<%s>','localstationid','util','lodash','../../../../config/logger'];(function(_0x35ae46,_0x30842f){var _0x215c6f=function(_0x5c1be1){while(--_0x5c1be1){_0x35ae46['push'](_0x35ae46['shift']());}};_0x215c6f(++_0x30842f);}(_0x17d3,0x140));var _0x317d=function(_0x3873be,_0x47997){_0x3873be=_0x3873be-0x0;var _0xd513d1=_0x17d3[_0x3873be];return _0xd513d1;};'use strict';var util=require(_0x317d('0x0'));var _=require(_0x317d('0x1'));var moment=require('moment');var logger=require(_0x317d('0x2'))('fax');exports[_0x317d('0x3')]=function(_0x286845){return{'message':_0x286845};};exports['logger']=function(_0x84b32d,_0x5db8de){logger[_0x317d('0x4')](_0x84b32d,util['inspect'](_0x5db8de,{'showHidden':![],'depth':null}));};exports[_0x317d('0x5')]=function(_0x568c17,_0x38e934){var _0x468032={'XMF-ECM':_0x38e934[_0x317d('0x6')],'XMF-HEADERINFO':_0x38e934[_0x317d('0x7')],'XMF-MINRATE':_0x38e934['minrate'],'XMF-MAXRATE':_0x38e934[_0x317d('0x8')],'XMF-MODEM':util['format'](_0x317d('0x9'),_0x38e934[_0x317d('0xa')]),'XMF-GATEWAY':_0x38e934['gateway'],'XMF-FAXDETECT':_0x38e934['faxdetect'],'XMF-T38TIMEOUT':_0x38e934['t38timeout'],'XMF-LOCALSTATIONID':_0x38e934['localstationid'],'XMF-PATH':_0x568c17['path']};return _0x468032;};exports[_0x317d('0xb')]=function(_0x340a52,_0x24a7bb){return{'actionid':_0x340a52[_0x317d('0xc')],'action':_0x317d('0xd'),'channel':_0x340a52['channel'],'Exten':_0x317d('0xe'),'Context':_0x317d('0xf'),'Priority':'1','callerid':util[_0x317d('0x10')](_0x317d('0x11'),_0x340a52['headerinfo']?_0x340a52['headerinfo']:'',_0x340a52[_0x317d('0x12')]),'variable':_0x24a7bb,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x340a52[_0x317d('0xc')]};};
\ No newline at end of file
index 4cf39a5..d5de12b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3792=['./rpc/integrations/freshsales','resolve','getAgents','initAgents','then','getTelephones','getTrunks','initTrunks','getVoiceQueues','getTriggers','initTriggers','getTemplates','initTemplates','getZendeskAccounts','initZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','getFreshdeskAccounts','getDeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','initVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','getDynamics365Accounts','initCampaigns','getVoiceExtensions','getFaxAccounts','initFaxAccounts','initVoiceQueueHopperHistory','getCampaignHopperHistory','getVoiceCallReports','catch','log','listen','sync','bluebird','util','moment','./server','./report','./acw','./trigger','./preview','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/trunk','./rpc/trigger','./rpc/template','./rpc/cmHopperHistory','./rpc/campaign','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/desk','./rpc/integrations/vtiger'];(function(_0x3267ae,_0x26e950){var _0x23bd42=function(_0x287a1d){while(--_0x287a1d){_0x3267ae['push'](_0x3267ae['shift']());}};_0x23bd42(++_0x26e950);}(_0x3792,0xe2));var _0x2379=function(_0x1fe303,_0x2eecd1){_0x1fe303=_0x1fe303-0x0;var _0x59bb23=_0x3792[_0x1fe303];return _0x59bb23;};'use strict';var BPromise=require(_0x2379('0x0'));var util=require(_0x2379('0x1'));var moment=require(_0x2379('0x2'));var server=require(_0x2379('0x3'));var Realtime=require('./realtime');var Report=require(_0x2379('0x4'));var Acw=require(_0x2379('0x5'));var Trigger=require(_0x2379('0x6'));var Dialer=require('./dialer');var Preview=require(_0x2379('0x7'));var Fax=require('./fax');var user=require(_0x2379('0x8'));var voiceQueue=require(_0x2379('0x9'));var voiceQueueReport=require(_0x2379('0xa'));var voiceCallReport=require(_0x2379('0xb'));var trunk=require(_0x2379('0xc'));var trigger=require(_0x2379('0xd'));var template=require(_0x2379('0xe'));var cmHopperHistory=require(_0x2379('0xf'));var campaign=require(_0x2379('0x10'));var voiceExtension=require('./rpc/voiceExtension');var faxAccount=require('./rpc/faxAccount');var zendesk=require(_0x2379('0x11'));var salesforce=require(_0x2379('0x12'));var sugarcrm=require(_0x2379('0x13'));var freshdesk=require('./rpc/integrations/freshdesk');var desk=require(_0x2379('0x14'));var zoho=require('./rpc/integrations/zoho');var vtiger=require(_0x2379('0x15'));var freshsales=require(_0x2379('0x16'));var servicenow=require('./rpc/integrations/servicenow');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()['get']('hour')===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()['get']('hour')===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0x2379('0x17')]()['then'](user[_0x2379('0x18')]())['then'](realtime[_0x2379('0x19')]())[_0x2379('0x1a')](user[_0x2379('0x1b')]())[_0x2379('0x1a')](realtime['initTelephones']())[_0x2379('0x1a')](trunk[_0x2379('0x1c')]())[_0x2379('0x1a')](realtime[_0x2379('0x1d')]())[_0x2379('0x1a')](voiceQueue[_0x2379('0x1e')]())['then'](realtime['initVoiceQueues']())['then'](trigger[_0x2379('0x1f')]())['then'](realtime[_0x2379('0x20')]())[_0x2379('0x1a')](template[_0x2379('0x21')]())[_0x2379('0x1a')](realtime[_0x2379('0x22')]())[_0x2379('0x1a')](zendesk[_0x2379('0x23')]())[_0x2379('0x1a')](realtime[_0x2379('0x24')]())[_0x2379('0x1a')](salesforce[_0x2379('0x25')]())[_0x2379('0x1a')](realtime[_0x2379('0x26')]())[_0x2379('0x1a')](sugarcrm[_0x2379('0x27')]())[_0x2379('0x1a')](realtime[_0x2379('0x28')]())['then'](freshdesk[_0x2379('0x29')]())[_0x2379('0x1a')](realtime['initFreshdeskAccounts']())['then'](desk[_0x2379('0x2a')]())['then'](realtime[_0x2379('0x2b')]())['then'](zoho[_0x2379('0x2c')]())[_0x2379('0x1a')](realtime[_0x2379('0x2d')]())[_0x2379('0x1a')](vtiger[_0x2379('0x2e')]())[_0x2379('0x1a')](realtime[_0x2379('0x2f')]())['then'](freshsales[_0x2379('0x30')]())[_0x2379('0x1a')](realtime[_0x2379('0x31')]())['then'](servicenow['getServicenowAccounts']())['then'](realtime['initServicenowAccounts']())['then'](dynamics365[_0x2379('0x32')]())[_0x2379('0x1a')](realtime['initDynamics365Accounts']())[_0x2379('0x1a')](campaign['getCampaigns']())[_0x2379('0x1a')](realtime[_0x2379('0x33')]())[_0x2379('0x1a')](voiceExtension[_0x2379('0x34')]())[_0x2379('0x1a')](realtime['initVoiceExtensions']())[_0x2379('0x1a')](faxAccount[_0x2379('0x35')]())[_0x2379('0x1a')](realtime[_0x2379('0x36')]())[_0x2379('0x1a')](function(){return realtime;});}function initParams(){return BPromise[_0x2379('0x17')]()[_0x2379('0x1a')](voiceQueueReport['getVoiceQueueReports']())[_0x2379('0x1a')](realtime['initVoiceQueueReports']())[_0x2379('0x1a')](cmHopperHistory['getVoiceQueueHopperHistory']())[_0x2379('0x1a')](realtime[_0x2379('0x37')]())[_0x2379('0x1a')](cmHopperHistory[_0x2379('0x38')]())[_0x2379('0x1a')](realtime['initCampaignHopperHistory']())[_0x2379('0x1a')](voiceCallReport[_0x2379('0x39')]())[_0x2379('0x1a')](realtime['initVoiceCallReports']())[_0x2379('0x1a')](function(_0x85059e){})[_0x2379('0x3a')](function(_0x1fd8c1){console[_0x2379('0x3b')](_0x1fd8c1);});}function main(){return server[_0x2379('0x3c')](realtime,preview,fax)[_0x2379('0x1a')](function(_0xd47e30){return initRealtime();})[_0x2379('0x1a')](function(){return initParams();})[_0x2379('0x1a')](function(){report[_0x2379('0x3d')]();setInterval(initRealtime,0x1388);})[_0x2379('0x3a')](function(_0x217896){console[_0x2379('0x3b')](_0x217896);});}main();
\ No newline at end of file
+var _0x9486=['getSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','getDeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','initVtigerAccounts','initFreshsalesAccounts','initServicenowAccounts','getDynamics365Accounts','initCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','resolve','getVoiceQueueReports','initVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','log','listen','bluebird','./realtime','./report','./acw','./trigger','./fax','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/trunk','./rpc/template','./rpc/campaign','./rpc/voiceExtension','./rpc/integrations/zendesk','./rpc/integrations/sugarcrm','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','get','hour','then','getAgents','initAgents','getTelephones','initTelephones','getTrunks','getVoiceQueues','initVoiceQueues','getTriggers','initTriggers','getTemplates','getZendeskAccounts','initZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts'];(function(_0x3f4027,_0x221cbb){var _0x4aea2e=function(_0x29bcbb){while(--_0x29bcbb){_0x3f4027['push'](_0x3f4027['shift']());}};_0x4aea2e(++_0x221cbb);}(_0x9486,0x9e));var _0x6948=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x9486[_0x5b644e];return _0x49c6bf;};'use strict';var BPromise=require(_0x6948('0x0'));var util=require('util');var moment=require('moment');var server=require('./server');var Realtime=require(_0x6948('0x1'));var Report=require(_0x6948('0x2'));var Acw=require(_0x6948('0x3'));var Trigger=require(_0x6948('0x4'));var Dialer=require('./dialer');var Preview=require('./preview');var Fax=require(_0x6948('0x5'));var user=require(_0x6948('0x6'));var voiceQueue=require(_0x6948('0x7'));var voiceQueueReport=require(_0x6948('0x8'));var voiceCallReport=require(_0x6948('0x9'));var trunk=require(_0x6948('0xa'));var trigger=require('./rpc/trigger');var template=require(_0x6948('0xb'));var cmHopperHistory=require('./rpc/cmHopperHistory');var campaign=require(_0x6948('0xc'));var voiceExtension=require(_0x6948('0xd'));var faxAccount=require('./rpc/faxAccount');var zendesk=require(_0x6948('0xe'));var salesforce=require('./rpc/integrations/salesforce');var sugarcrm=require(_0x6948('0xf'));var freshdesk=require('./rpc/integrations/freshdesk');var desk=require('./rpc/integrations/desk');var zoho=require('./rpc/integrations/zoho');var vtiger=require(_0x6948('0x10'));var freshsales=require(_0x6948('0x11'));var servicenow=require(_0x6948('0x12'));var dynamics365=require(_0x6948('0x13'));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()[_0x6948('0x14')](_0x6948('0x15'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x6948('0x14')](_0x6948('0x15'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise['resolve']()[_0x6948('0x16')](user[_0x6948('0x17')]())[_0x6948('0x16')](realtime[_0x6948('0x18')]())[_0x6948('0x16')](user[_0x6948('0x19')]())[_0x6948('0x16')](realtime[_0x6948('0x1a')]())['then'](trunk[_0x6948('0x1b')]())[_0x6948('0x16')](realtime['initTrunks']())['then'](voiceQueue[_0x6948('0x1c')]())['then'](realtime[_0x6948('0x1d')]())[_0x6948('0x16')](trigger[_0x6948('0x1e')]())['then'](realtime[_0x6948('0x1f')]())[_0x6948('0x16')](template[_0x6948('0x20')]())[_0x6948('0x16')](realtime['initTemplates']())[_0x6948('0x16')](zendesk[_0x6948('0x21')]())[_0x6948('0x16')](realtime[_0x6948('0x22')]())['then'](salesforce[_0x6948('0x23')]())[_0x6948('0x16')](realtime[_0x6948('0x24')]())[_0x6948('0x16')](sugarcrm[_0x6948('0x25')]())[_0x6948('0x16')](realtime['initSugarcrmAccounts']())[_0x6948('0x16')](freshdesk[_0x6948('0x26')]())[_0x6948('0x16')](realtime[_0x6948('0x27')]())['then'](desk[_0x6948('0x28')]())[_0x6948('0x16')](realtime[_0x6948('0x29')]())[_0x6948('0x16')](zoho[_0x6948('0x2a')]())[_0x6948('0x16')](realtime[_0x6948('0x2b')]())[_0x6948('0x16')](vtiger[_0x6948('0x2c')]())[_0x6948('0x16')](realtime[_0x6948('0x2d')]())[_0x6948('0x16')](freshsales['getFreshsalesAccounts']())[_0x6948('0x16')](realtime[_0x6948('0x2e')]())['then'](servicenow['getServicenowAccounts']())[_0x6948('0x16')](realtime[_0x6948('0x2f')]())[_0x6948('0x16')](dynamics365[_0x6948('0x30')]())['then'](realtime['initDynamics365Accounts']())[_0x6948('0x16')](campaign['getCampaigns']())[_0x6948('0x16')](realtime[_0x6948('0x31')]())[_0x6948('0x16')](voiceExtension[_0x6948('0x32')]())[_0x6948('0x16')](realtime[_0x6948('0x33')]())[_0x6948('0x16')](faxAccount[_0x6948('0x34')]())[_0x6948('0x16')](realtime['initFaxAccounts']())[_0x6948('0x16')](function(){return realtime;});}function initParams(){return BPromise[_0x6948('0x35')]()['then'](voiceQueueReport[_0x6948('0x36')]())[_0x6948('0x16')](realtime[_0x6948('0x37')]())['then'](cmHopperHistory[_0x6948('0x38')]())[_0x6948('0x16')](realtime[_0x6948('0x39')]())[_0x6948('0x16')](cmHopperHistory[_0x6948('0x3a')]())['then'](realtime[_0x6948('0x3b')]())[_0x6948('0x16')](voiceCallReport[_0x6948('0x3c')]())['then'](realtime[_0x6948('0x3d')]())[_0x6948('0x16')](function(_0x28b940){})[_0x6948('0x3e')](function(_0x29f4fc){console[_0x6948('0x3f')](_0x29f4fc);});}function main(){return server[_0x6948('0x40')](realtime,preview,fax)[_0x6948('0x16')](function(_0x2268a9){return initRealtime();})[_0x6948('0x16')](function(){return initParams();})['then'](function(){report['sync']();setInterval(initRealtime,0x1388);})[_0x6948('0x3e')](function(_0x2217e5){console[_0x6948('0x3f')](_0x2217e5);});}main();
\ No newline at end of file
index 3372de7..6c9f62b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['name','voiceStatusQueue','onhold','stringify','md5','user:%s','user:save','emit','user:presence','lodash','util','moment','../../../config/environment','redis','defaults','socket.io-emitter','email','accountcode','fullname','state','unknown','address','phone','mobile','interface','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','local','toLowerCase','not_inuse','idle','inuse','statePause','toNumber','format'];(function(_0x49e882,_0x281a5b){var _0x2f21e3=function(_0x23bf08){while(--_0x23bf08){_0x49e882['push'](_0x49e882['shift']());}};_0x2f21e3(++_0x281a5b);}(_0x70e0,0x17b));var _0x070e=function(_0x46b28f,_0x2ba163){_0x46b28f=_0x46b28f-0x0;var _0x1140ab=_0x70e0[_0x46b28f];return _0x1140ab;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var moment=require(_0x070e('0x2'));var md5=require('md5');var Redis=require('ioredis');var config=require(_0x070e('0x3'));config[_0x070e('0x4')]=_[_0x070e('0x5')](config[_0x070e('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x070e('0x6'))(new Redis(config['redis']));function Agent(_0x46fe68){this['id']=_0x46fe68['id']||0x0;this['name']=_0x46fe68['name']||'';this['email']=_0x46fe68[_0x070e('0x7')]||'';this[_0x070e('0x8')]=_0x46fe68[_0x070e('0x8')]||'';this[_0x070e('0x9')]=_0x46fe68[_0x070e('0x9')]||'';this[_0x070e('0xa')]=_0x070e('0xb');this['stateTime']=0x0;this['status']=_0x070e('0xb');this[_0x070e('0xc')]='';this[_0x070e('0xd')]='';this[_0x070e('0xe')]='';this[_0x070e('0xf')]='';this[_0x070e('0x10')]=_0x46fe68[_0x070e('0x10')]||![];this[_0x070e('0x11')]=_0x070e('0xb');this[_0x070e('0x12')]=0x0;this[_0x070e('0x13')]='';this['voiceStatusQueue']='';this['onhold']=![];this[_0x070e('0x14')]=![];this['md5']='';}Agent['prototype']['updateStatusRealtime']=function(_0x11d2ce){var _0x14c3fd;if(_0x11d2ce&&_0x11d2ce['state']){_0x14c3fd=_0x11d2ce['state'][_0x070e('0x15')]();switch(_0x14c3fd){case _0x070e('0x16'):_0x14c3fd=_0x070e('0x17');break;case _0x070e('0x18'):_0x14c3fd='talking';break;}}if(_0x14c3fd&&this['voiceStatus']!==_0x14c3fd||_0x11d2ce[_0x070e('0x19')]){this[_0x070e('0x12')]=_[_0x070e('0x1a')](moment()[_0x070e('0x1b')]('x'));}if(_0x14c3fd){this[_0x070e('0x11')]=_0x14c3fd;}var _0x5037eb={'id':this['id'],'name':this[_0x070e('0x1c')],'email':this[_0x070e('0x7')],'accountcode':this[_0x070e('0x8')],'fullname':this[_0x070e('0x9')],'state':this[_0x070e('0xa')],'stateTime':this['stateTime'],'status':this['status'],'address':this['address'],'online':this[_0x070e('0x10')],'voiceStatus':this[_0x070e('0x11')],'voiceStatusTime':this[_0x070e('0x12')],'voiceStatusCallerIdNumber':this['voiceStatusCallerIdNumber'],'voiceStatusQueue':this[_0x070e('0x1d')],'interface':this['interface'],'onhold':this[_0x070e('0x1e')]};var _0x3f6985=md5(JSON[_0x070e('0x1f')](_0x5037eb));if(this[_0x070e('0x20')]!==_0x3f6985){this[_0x070e('0x20')]=_0x3f6985;io['to'](util[_0x070e('0x1b')](_0x070e('0x21'),_0x5037eb[_0x070e('0x1c')]))['emit'](_0x070e('0x22'),_0x5037eb);io[_0x070e('0x23')](_0x070e('0x24'),_0x5037eb);}};module['exports']=Agent;
\ No newline at end of file
+var _0x9c44=['phone','mobile','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','onhold','local','prototype','updateStatusRealtime','toLowerCase','not_inuse','idle','inuse','talking','statePause','stateTime','address','voiceStatusQueue','stringify','format','user:%s','emit','user:presence','exports','moment','md5','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','email','accountcode','fullname','state','status','unknown'];(function(_0x43d11d,_0xccff91){var _0x38cd08=function(_0x131ae2){while(--_0x131ae2){_0x43d11d['push'](_0x43d11d['shift']());}};_0x38cd08(++_0xccff91);}(_0x9c44,0x178));var _0x49c4=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x9c44[_0xfae23b];return _0x200640;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x49c4('0x0'));var md5=require(_0x49c4('0x1'));var Redis=require(_0x49c4('0x2'));var config=require(_0x49c4('0x3'));config[_0x49c4('0x4')]=_[_0x49c4('0x5')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x49c4('0x6'))(new Redis(config['redis']));function Agent(_0xc1278f){this['id']=_0xc1278f['id']||0x0;this[_0x49c4('0x7')]=_0xc1278f[_0x49c4('0x7')]||'';this[_0x49c4('0x8')]=_0xc1278f[_0x49c4('0x8')]||'';this['accountcode']=_0xc1278f[_0x49c4('0x9')]||'';this[_0x49c4('0xa')]=_0xc1278f[_0x49c4('0xa')]||'';this[_0x49c4('0xb')]='unknown';this['stateTime']=0x0;this[_0x49c4('0xc')]=_0x49c4('0xd');this['address']='';this[_0x49c4('0xe')]='';this[_0x49c4('0xf')]='';this['interface']='';this['online']=_0xc1278f[_0x49c4('0x10')]||![];this[_0x49c4('0x11')]='unknown';this[_0x49c4('0x12')]=0x0;this[_0x49c4('0x13')]='';this['voiceStatusQueue']='';this[_0x49c4('0x14')]=![];this[_0x49c4('0x15')]=![];this[_0x49c4('0x1')]='';}Agent[_0x49c4('0x16')][_0x49c4('0x17')]=function(_0x18211c){var _0x75ea8;if(_0x18211c&&_0x18211c[_0x49c4('0xb')]){_0x75ea8=_0x18211c['state'][_0x49c4('0x18')]();switch(_0x75ea8){case _0x49c4('0x19'):_0x75ea8=_0x49c4('0x1a');break;case _0x49c4('0x1b'):_0x75ea8=_0x49c4('0x1c');break;}}if(_0x75ea8&&this['voiceStatus']!==_0x75ea8||_0x18211c[_0x49c4('0x1d')]){this[_0x49c4('0x12')]=_['toNumber'](moment()['format']('x'));}if(_0x75ea8){this[_0x49c4('0x11')]=_0x75ea8;}var _0x2f82d5={'id':this['id'],'name':this[_0x49c4('0x7')],'email':this['email'],'accountcode':this[_0x49c4('0x9')],'fullname':this['fullname'],'state':this[_0x49c4('0xb')],'stateTime':this[_0x49c4('0x1e')],'status':this[_0x49c4('0xc')],'address':this[_0x49c4('0x1f')],'online':this[_0x49c4('0x10')],'voiceStatus':this[_0x49c4('0x11')],'voiceStatusTime':this[_0x49c4('0x12')],'voiceStatusCallerIdNumber':this[_0x49c4('0x13')],'voiceStatusQueue':this[_0x49c4('0x20')],'interface':this['interface'],'onhold':this['onhold']};var _0x57f502=md5(JSON[_0x49c4('0x21')](_0x2f82d5));if(this['md5']!==_0x57f502){this['md5']=_0x57f502;io['to'](util[_0x49c4('0x22')](_0x49c4('0x23'),_0x2f82d5[_0x49c4('0x7')]))[_0x49c4('0x24')]('user:save',_0x2f82d5);io['emit'](_0x49c4('0x25'),_0x2f82d5);}};module[_0x49c4('0x26')]=Agent;
\ No newline at end of file
index d98c1db..44674ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb49c=['dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','campaign','originated','ivrAnswerCallsDay','ivrTotalCallsDays','message','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber'];(function(_0x5d990e,_0x4ba9f5){var _0x36c763=function(_0x52270c){while(--_0x52270c){_0x5d990e['push'](_0x5d990e['shift']());}};_0x36c763(++_0x4ba9f5);}(_0xb49c,0x12b));var _0xcb49=function(_0x13ae89,_0x832c38){_0x13ae89=_0x13ae89-0x0;var _0x1744a0=_0xb49c[_0x13ae89];return _0x1744a0;};'use strict';function Campaign(_0x643a27){this['id']=_0x643a27['id']||0x0;this[_0xcb49('0x0')]=_0x643a27['name']||'';this[_0xcb49('0x1')]=_0x643a27['type']||_0xcb49('0x2');this[_0xcb49('0x3')]=0x0;this['temp']=0x0;this[_0xcb49('0x4')]=0x0;this[_0xcb49('0x5')]=0x0;this[_0xcb49('0x6')]='';this['sendMessageOneNotActive']=!![];this[_0xcb49('0x7')]=_0x643a27[_0xcb49('0x7')];this[_0xcb49('0x8')]=_0x643a27['limitCalls'];this[_0xcb49('0x9')]=_0x643a27[_0xcb49('0x9')]||null;this[_0xcb49('0xa')]=_0x643a27[_0xcb49('0xa')]?_0x643a27[_0xcb49('0xa')]:null;this[_0xcb49('0xb')]=_0x643a27[_0xcb49('0xb')];this['dialOriginateCallerIdNumber']=_0x643a27[_0xcb49('0xc')];this[_0xcb49('0xd')]=_0x643a27['dialOriginateTimeout']||0x1e;this[_0xcb49('0xe')]=_0x643a27[_0xcb49('0xe')];this[_0xcb49('0xf')]=_0x643a27[_0xcb49('0xf')];this['dialBusyMaxRetry']=_0x643a27[_0xcb49('0x10')];this[_0xcb49('0x11')]=_0x643a27[_0xcb49('0x11')];this[_0xcb49('0x12')]=_0x643a27[_0xcb49('0x12')];this[_0xcb49('0x13')]=_0x643a27[_0xcb49('0x13')];this[_0xcb49('0x14')]=_0x643a27[_0xcb49('0x14')];this[_0xcb49('0x15')]=_0x643a27[_0xcb49('0x15')]||0x3;this[_0xcb49('0x16')]=_0x643a27['dialNoSuchNumberRetryFrequency']||0x96;this[_0xcb49('0x17')]=_0x643a27['dialDropMaxRetry']||0x3;this[_0xcb49('0x18')]=_0x643a27['dialDropRetryFrequency']||0x96;this[_0xcb49('0x19')]=_0x643a27['dialAbandonedMaxRetry']||0x3;this['dialAbandonedRetryFrequency']=_0x643a27[_0xcb49('0x1a')]||0x96;this[_0xcb49('0x1b')]=_0x643a27[_0xcb49('0x1b')]||0x3;this['dialMachineRetryFrequency']=_0x643a27[_0xcb49('0x1c')]||0x96;this[_0xcb49('0x1d')]=_0x643a27[_0xcb49('0x1d')]||0x3;this['dialAgentRejectRetryFrequency']=_0x643a27[_0xcb49('0x1e')]||0x96;this[_0xcb49('0x1f')]=_0x643a27[_0xcb49('0x1f')]||_0xcb49('0x20');this[_0xcb49('0x21')]=_0x643a27[_0xcb49('0x21')]||undefined;this[_0xcb49('0x22')]=_0x643a27['dialRandomLastDigitCallerIdNumber']||undefined;this['dialCutDigit']=_0x643a27[_0xcb49('0x23')]||undefined;this[_0xcb49('0x24')]=_0x643a27['TrunkBackup']?_0x643a27[_0xcb49('0x24')]:undefined;this[_0xcb49('0x25')]=_0x643a27[_0xcb49('0x25')]?_0x643a27[_0xcb49('0x25')]:undefined;this[_0xcb49('0x26')]=_0x643a27[_0xcb49('0x26')]?_0x643a27[_0xcb49('0x26')]:undefined;this[_0xcb49('0x27')]=_0x643a27['SquareProject']?_0x643a27[_0xcb49('0x27')]:undefined;this[_0xcb49('0x28')]=_0x643a27[_0xcb49('0x27')]?_0x643a27[_0xcb49('0x27')]['name']:undefined;this[_0xcb49('0x29')]=_0x643a27[_0xcb49('0x29')]||![];this[_0xcb49('0x2a')]=_0x643a27[_0xcb49('0x2a')];this['dialAMDGreeting']=_0x643a27[_0xcb49('0x2b')];this[_0xcb49('0x2c')]=_0x643a27[_0xcb49('0x2c')];this['dialAMDTotalAnalysisTime']=_0x643a27[_0xcb49('0x2d')];this[_0xcb49('0x2e')]=_0x643a27[_0xcb49('0x2e')];this['dialAMDBetweenWordsSilence']=_0x643a27[_0xcb49('0x2f')];this[_0xcb49('0x30')]=_0x643a27[_0xcb49('0x30')];this['dialAMDSilenceThreshold']=_0x643a27[_0xcb49('0x31')];this[_0xcb49('0x32')]=_0x643a27[_0xcb49('0x32')];}module[_0xcb49('0x33')]=Campaign;
\ No newline at end of file
+var _0x11d7=['Trunk','Interval','SquareProject','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','originated','ivrAnswerCallsDay','ivrTotalCallsDays','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup'];(function(_0x16a637,_0x5eb627){var _0x25126d=function(_0x54e016){while(--_0x54e016){_0x16a637['push'](_0x16a637['shift']());}};_0x25126d(++_0x5eb627);}(_0x11d7,0x133));var _0x711d=function(_0x5c38cd,_0x5a6b4e){_0x5c38cd=_0x5c38cd-0x0;var _0xc985ef=_0x11d7[_0x5c38cd];return _0xc985ef;};'use strict';function Campaign(_0x3fe80){this['id']=_0x3fe80['id']||0x0;this[_0x711d('0x0')]=_0x3fe80[_0x711d('0x0')]||'';this[_0x711d('0x1')]=_0x3fe80[_0x711d('0x1')]||'campaign';this[_0x711d('0x2')]=0x0;this['temp']=0x0;this[_0x711d('0x3')]=0x0;this[_0x711d('0x4')]=0x0;this[_0x711d('0x5')]='';this[_0x711d('0x6')]=!![];this[_0x711d('0x7')]=_0x3fe80[_0x711d('0x7')];this[_0x711d('0x8')]=_0x3fe80[_0x711d('0x8')];this[_0x711d('0x9')]=_0x3fe80[_0x711d('0x9')]||null;this[_0x711d('0xa')]=_0x3fe80['dialGlobalInterval']?_0x3fe80['dialGlobalInterval']:null;this['dialOriginateCallerIdName']=_0x3fe80[_0x711d('0xb')];this[_0x711d('0xc')]=_0x3fe80[_0x711d('0xc')];this[_0x711d('0xd')]=_0x3fe80[_0x711d('0xd')]||0x1e;this[_0x711d('0xe')]=_0x3fe80[_0x711d('0xe')];this[_0x711d('0xf')]=_0x3fe80[_0x711d('0xf')];this[_0x711d('0x10')]=_0x3fe80[_0x711d('0x10')];this[_0x711d('0x11')]=_0x3fe80[_0x711d('0x11')];this[_0x711d('0x12')]=_0x3fe80[_0x711d('0x12')];this[_0x711d('0x13')]=_0x3fe80[_0x711d('0x13')];this['dialGlobalMaxRetry']=_0x3fe80[_0x711d('0x14')];this[_0x711d('0x15')]=_0x3fe80[_0x711d('0x15')]||0x3;this[_0x711d('0x16')]=_0x3fe80['dialNoSuchNumberRetryFrequency']||0x96;this[_0x711d('0x17')]=_0x3fe80['dialDropMaxRetry']||0x3;this['dialDropRetryFrequency']=_0x3fe80[_0x711d('0x18')]||0x96;this['dialAbandonedMaxRetry']=_0x3fe80['dialAbandonedMaxRetry']||0x3;this[_0x711d('0x19')]=_0x3fe80[_0x711d('0x19')]||0x96;this[_0x711d('0x1a')]=_0x3fe80[_0x711d('0x1a')]||0x3;this[_0x711d('0x1b')]=_0x3fe80['dialMachineRetryFrequency']||0x96;this[_0x711d('0x1c')]=_0x3fe80[_0x711d('0x1c')]||0x3;this['dialAgentRejectRetryFrequency']=_0x3fe80[_0x711d('0x1d')]||0x96;this[_0x711d('0x1e')]=_0x3fe80[_0x711d('0x1e')]||_0x711d('0x1f');this['dialPrefix']=_0x3fe80[_0x711d('0x20')]||undefined;this[_0x711d('0x21')]=_0x3fe80[_0x711d('0x21')]||undefined;this[_0x711d('0x22')]=_0x3fe80['dialCutDigit']||undefined;this[_0x711d('0x23')]=_0x3fe80[_0x711d('0x23')]?_0x3fe80[_0x711d('0x23')]:undefined;this[_0x711d('0x24')]=_0x3fe80['Trunk']?_0x3fe80[_0x711d('0x24')]:undefined;this['Interval']=_0x3fe80['Interval']?_0x3fe80[_0x711d('0x25')]:undefined;this['SquareProject']=_0x3fe80[_0x711d('0x26')]?_0x3fe80[_0x711d('0x26')]:undefined;this['dialQueueProject']=_0x3fe80[_0x711d('0x26')]?_0x3fe80[_0x711d('0x26')][_0x711d('0x0')]:undefined;this['dialAMDActive']=_0x3fe80['dialAMDActive']||![];this[_0x711d('0x27')]=_0x3fe80['dialAMDInitialSilence'];this[_0x711d('0x28')]=_0x3fe80[_0x711d('0x28')];this[_0x711d('0x29')]=_0x3fe80[_0x711d('0x29')];this['dialAMDTotalAnalysisTime']=_0x3fe80[_0x711d('0x2a')];this[_0x711d('0x2b')]=_0x3fe80['dialAMDMinWordLength'];this[_0x711d('0x2c')]=_0x3fe80[_0x711d('0x2c')];this['dialAMDMaximumNumberOfWords']=_0x3fe80[_0x711d('0x2d')];this[_0x711d('0x2e')]=_0x3fe80[_0x711d('0x2e')];this[_0x711d('0x2f')]=_0x3fe80[_0x711d('0x2f')];}module[_0x711d('0x30')]=Campaign;
\ No newline at end of file
index 131bfcc..c8e29e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa467=['channel','destinationchannel','calleridnum','calleridname','connectedlinenum','connectedlinename','accountcode','context','exten','answered','answertime','endtime','unmanaged','lastapplication','lastdata','duration','billableseconds','holdtime','type','disposition','monitorFilename','monitors','transfercalleridnum','transferconnectedlinenum','transferType','mohtime','starttime'];(function(_0x406ae0,_0x1b8ea5){var _0x9e7b8b=function(_0x3a5d5f){while(--_0x3a5d5f){_0x406ae0['push'](_0x406ae0['shift']());}};_0x9e7b8b(++_0x1b8ea5);}(_0xa467,0x143));var _0x7a46=function(_0x3be195,_0x350495){_0x3be195=_0x3be195-0x0;var _0x24d114=_0xa467[_0x3be195];return _0x24d114;};'use strict';function Channel(){this[_0x7a46('0x0')]=null;this[_0x7a46('0x1')]='';this[_0x7a46('0x2')]='';this[_0x7a46('0x3')]=0x0;this[_0x7a46('0x4')]='';this[_0x7a46('0x5')]=undefined;this[_0x7a46('0x6')]=undefined;this[_0x7a46('0x7')]=0x0;this[_0x7a46('0x8')]='';this['uniqueid']=0x0;this['linkedid']=0x0;this[_0x7a46('0x9')]=0x0;this[_0x7a46('0xa')]=![];this[_0x7a46('0xb')]=null;this[_0x7a46('0xc')]=null;this[_0x7a46('0xd')]=![];this['abandoned']=![];this[_0x7a46('0xe')]='';this[_0x7a46('0xf')]='';this[_0x7a46('0x10')]=0x0;this[_0x7a46('0x11')]=0x0;this[_0x7a46('0x12')]=0x0;this[_0x7a46('0x13')]=null;this['tag']=null;this[_0x7a46('0x14')]=null;this['monitor']=![];this[_0x7a46('0x15')]=null;this['queue']=null;this[_0x7a46('0x16')]=[];this[_0x7a46('0x17')]=undefined;this[_0x7a46('0x18')]=undefined;this[_0x7a46('0x19')]=undefined;this[_0x7a46('0x1a')]=0x0;}module['exports']=Channel;
\ No newline at end of file
+var _0x4f2f=['calleridnum','connectedlinenum','connectedlinename','accountcode','context','uniqueid','linkedid','exten','answered','answertime','endtime','unmanaged','lastapplication','lastdata','billableseconds','holdtime','type','tag','monitors','transfercalleridnum','transferType','mohtime','destinationchannel'];(function(_0x46b0ba,_0x5a767c){var _0x2e53e0=function(_0x124fb2){while(--_0x124fb2){_0x46b0ba['push'](_0x46b0ba['shift']());}};_0x2e53e0(++_0x5a767c);}(_0x4f2f,0x1cb));var _0xf4f2=function(_0x1da04e,_0x31024b){_0x1da04e=_0x1da04e-0x0;var _0xdd8c41=_0x4f2f[_0x1da04e];return _0xdd8c41;};'use strict';function Channel(){this['starttime']=null;this['channel']='';this[_0xf4f2('0x0')]='';this[_0xf4f2('0x1')]=0x0;this['calleridname']='';this[_0xf4f2('0x2')]=undefined;this[_0xf4f2('0x3')]=undefined;this[_0xf4f2('0x4')]=0x0;this[_0xf4f2('0x5')]='';this[_0xf4f2('0x6')]=0x0;this[_0xf4f2('0x7')]=0x0;this[_0xf4f2('0x8')]=0x0;this[_0xf4f2('0x9')]=![];this[_0xf4f2('0xa')]=null;this[_0xf4f2('0xb')]=null;this[_0xf4f2('0xc')]=![];this['abandoned']=![];this[_0xf4f2('0xd')]='';this[_0xf4f2('0xe')]='';this['duration']=0x0;this[_0xf4f2('0xf')]=0x0;this[_0xf4f2('0x10')]=0x0;this[_0xf4f2('0x11')]=null;this[_0xf4f2('0x12')]=null;this['disposition']=null;this['monitor']=![];this['monitorFilename']=null;this['queue']=null;this[_0xf4f2('0x13')]=[];this[_0xf4f2('0x14')]=undefined;this['transferconnectedlinenum']=undefined;this[_0xf4f2('0x15')]=undefined;this[_0xf4f2('0x16')]=0x0;}module['exports']=Channel;
\ No newline at end of file
index 04bcd91..38fd2a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53e8=['token','tokenSecret','type','serverUrl','Configurations','exports','name','username','remoteUri','password','consumerKey','consumerSecret'];(function(_0xdeefbd,_0x9e1b3d){var _0x4ff63f=function(_0x4b51f9){while(--_0x4b51f9){_0xdeefbd['push'](_0xdeefbd['shift']());}};_0x4ff63f(++_0x9e1b3d);}(_0x53e8,0x1f2));var _0x853e=function(_0x45d3f0,_0x4be53f){_0x45d3f0=_0x45d3f0-0x0;var _0x314b79=_0x53e8[_0x45d3f0];return _0x314b79;};'use strict';function DeskAccount(_0x2106a8){this['id']=_0x2106a8['id']||0x0;this[_0x853e('0x0')]=_0x2106a8['name']||'';this[_0x853e('0x1')]=_0x2106a8[_0x853e('0x1')]||'';this[_0x853e('0x2')]=_0x2106a8[_0x853e('0x2')]||'';this['authType']=_0x2106a8['authType']||'';this[_0x853e('0x3')]=_0x2106a8[_0x853e('0x3')]||'';this[_0x853e('0x4')]=_0x2106a8[_0x853e('0x4')]||'';this[_0x853e('0x5')]=_0x2106a8[_0x853e('0x5')]||'';this[_0x853e('0x6')]=_0x2106a8[_0x853e('0x6')]||'';this['tokenSecret']=_0x2106a8[_0x853e('0x7')]||'';this[_0x853e('0x8')]=_0x2106a8[_0x853e('0x8')]||'';this[_0x853e('0x9')]=_0x2106a8[_0x853e('0x9')]||'';this[_0x853e('0xa')]=_0x2106a8['Configurations']||{};}module[_0x853e('0xb')]=DeskAccount;
\ No newline at end of file
+var _0x400c=['remoteUri','authType','password','consumerKey','consumerSecret','token','tokenSecret','type','serverUrl','Configurations','name','username'];(function(_0x1ef250,_0x1fa5b9){var _0x5f3dec=function(_0x31e533){while(--_0x31e533){_0x1ef250['push'](_0x1ef250['shift']());}};_0x5f3dec(++_0x1fa5b9);}(_0x400c,0x1d2));var _0xc400=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x400c[_0xa464c9];return _0x3d73c4;};'use strict';function DeskAccount(_0x52172a){this['id']=_0x52172a['id']||0x0;this[_0xc400('0x0')]=_0x52172a[_0xc400('0x0')]||'';this[_0xc400('0x1')]=_0x52172a[_0xc400('0x1')]||'';this[_0xc400('0x2')]=_0x52172a[_0xc400('0x2')]||'';this[_0xc400('0x3')]=_0x52172a['authType']||'';this[_0xc400('0x4')]=_0x52172a[_0xc400('0x4')]||'';this[_0xc400('0x5')]=_0x52172a[_0xc400('0x5')]||'';this[_0xc400('0x6')]=_0x52172a[_0xc400('0x6')]||'';this[_0xc400('0x7')]=_0x52172a[_0xc400('0x7')]||'';this[_0xc400('0x8')]=_0x52172a[_0xc400('0x8')]||'';this[_0xc400('0x9')]=_0x52172a[_0xc400('0x9')]||'';this[_0xc400('0xa')]=_0x52172a[_0xc400('0xa')]||'';this[_0xc400('0xb')]=_0x52172a[_0xc400('0xb')]||{};}module['exports']=DeskAccount;
\ No newline at end of file
index c2ddb2c..bc85af5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b02=['username','password','remoteUri','tenantId','clientId','clientSecret','serverUrl','Configurations','name'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5b02,0xe9));var _0x25b0=function(_0x14a327,_0x5abbb5){_0x14a327=_0x14a327-0x0;var _0x25c3cc=_0x5b02[_0x14a327];return _0x25c3cc;};'use strict';function Dynamics365Account(_0x5d3c24){this['id']=_0x5d3c24['id']||0x0;this[_0x25b0('0x0')]=_0x5d3c24[_0x25b0('0x0')]||'';this[_0x25b0('0x1')]=_0x5d3c24['username']||'';this['password']=_0x5d3c24[_0x25b0('0x2')]||'';this['remoteUri']=_0x5d3c24[_0x25b0('0x3')]||'';this[_0x25b0('0x4')]=_0x5d3c24[_0x25b0('0x4')]||'';this[_0x25b0('0x5')]=_0x5d3c24[_0x25b0('0x5')]||'';this['clientSecret']=_0x5d3c24[_0x25b0('0x6')]||{};this[_0x25b0('0x7')]=_0x5d3c24['serverUrl']||'';this[_0x25b0('0x8')]=_0x5d3c24['Configurations']||{};}module['exports']=Dynamics365Account;
\ No newline at end of file
+var _0xd8b0=['Configurations','exports','name','password','remoteUri','tenantId','clientId','clientSecret','serverUrl'];(function(_0x2bf6be,_0x5b23f1){var _0x532ef4=function(_0x3760df){while(--_0x3760df){_0x2bf6be['push'](_0x2bf6be['shift']());}};_0x532ef4(++_0x5b23f1);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';function Dynamics365Account(_0x5d04de){this['id']=_0x5d04de['id']||0x0;this[_0x0d8b('0x0')]=_0x5d04de['name']||'';this['username']=_0x5d04de['username']||'';this[_0x0d8b('0x1')]=_0x5d04de[_0x0d8b('0x1')]||'';this[_0x0d8b('0x2')]=_0x5d04de[_0x0d8b('0x2')]||'';this[_0x0d8b('0x3')]=_0x5d04de['tenantId']||'';this['clientId']=_0x5d04de[_0x0d8b('0x4')]||'';this[_0x0d8b('0x5')]=_0x5d04de[_0x0d8b('0x5')]||{};this['serverUrl']=_0x5d04de[_0x0d8b('0x6')]||'';this[_0x0d8b('0x7')]=_0x5d04de['Configurations']||{};}module[_0x0d8b('0x8')]=Dynamics365Account;
\ No newline at end of file
index fef24bd..1ae775c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf979=['ListId','key','exports','name','description','ecm','headerinfo','localstationid','minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout','tech','Trunk'];(function(_0x552b44,_0x25c593){var _0x452cd9=function(_0x39c81f){while(--_0x39c81f){_0x552b44['push'](_0x552b44['shift']());}};_0x452cd9(++_0x25c593);}(_0xf979,0xad));var _0x9f97=function(_0x3f95a5,_0x32aba7){_0x3f95a5=_0x3f95a5-0x0;var _0x925ddb=_0xf979[_0x3f95a5];return _0x925ddb;};'use strict';function FaxAccount(_0x22420d){this['id']=_0x22420d['id']||0x0;this['name']=_0x22420d[_0x9f97('0x0')]||'';this[_0x9f97('0x1')]=_0x22420d['description'];this['ecm']=_0x22420d[_0x9f97('0x2')];this['headerinfo']=_0x22420d[_0x9f97('0x3')];this[_0x9f97('0x4')]=_0x22420d[_0x9f97('0x4')];this[_0x9f97('0x5')]=_0x22420d['minrate']||0x960;this[_0x9f97('0x6')]=_0x22420d[_0x9f97('0x6')]||0x3840;this['modem']=_0x22420d[_0x9f97('0x7')]||_0x9f97('0x8');this[_0x9f97('0x9')]=_0x22420d[_0x9f97('0x9')]||'no';this['faxdetect']=_0x22420d[_0x9f97('0xa')]||'no';this[_0x9f97('0xb')]=_0x22420d[_0x9f97('0xb')]||0x1388;this['tech']=_0x22420d[_0x9f97('0xc')]||'SIP';this[_0x9f97('0xd')]=_0x22420d[_0x9f97('0xd')]?_0x22420d['Trunk']:undefined;this['ListId']=_0x22420d[_0x9f97('0xe')];this['key']=_0x22420d[_0x9f97('0xf')];}module[_0x9f97('0x10')]=FaxAccount;
\ No newline at end of file
+var _0xf6d2=['gateway','faxdetect','t38timeout','tech','Trunk','ListId','key','exports','name','description','ecm','headerinfo','localstationid','minrate','maxrate','v17,v27,v29'];(function(_0x47bfef,_0x2c8e82){var _0x5cd479=function(_0x4f0d9d){while(--_0x4f0d9d){_0x47bfef['push'](_0x47bfef['shift']());}};_0x5cd479(++_0x2c8e82);}(_0xf6d2,0x1d8));var _0x2f6d=function(_0x3b964d,_0x46297b){_0x3b964d=_0x3b964d-0x0;var _0x59af99=_0xf6d2[_0x3b964d];return _0x59af99;};'use strict';function FaxAccount(_0x400990){this['id']=_0x400990['id']||0x0;this['name']=_0x400990[_0x2f6d('0x0')]||'';this[_0x2f6d('0x1')]=_0x400990[_0x2f6d('0x1')];this[_0x2f6d('0x2')]=_0x400990['ecm'];this[_0x2f6d('0x3')]=_0x400990[_0x2f6d('0x3')];this['localstationid']=_0x400990[_0x2f6d('0x4')];this['minrate']=_0x400990[_0x2f6d('0x5')]||0x960;this['maxrate']=_0x400990[_0x2f6d('0x6')]||0x3840;this['modem']=_0x400990['modem']||_0x2f6d('0x7');this[_0x2f6d('0x8')]=_0x400990[_0x2f6d('0x8')]||'no';this[_0x2f6d('0x9')]=_0x400990[_0x2f6d('0x9')]||'no';this[_0x2f6d('0xa')]=_0x400990[_0x2f6d('0xa')]||0x1388;this[_0x2f6d('0xb')]=_0x400990['tech']||'SIP';this[_0x2f6d('0xc')]=_0x400990[_0x2f6d('0xc')]?_0x400990[_0x2f6d('0xc')]:undefined;this[_0x2f6d('0xd')]=_0x400990['ListId'];this['key']=_0x400990[_0x2f6d('0xe')];}module[_0x2f6d('0xf')]=FaxAccount;
\ No newline at end of file
index c8c20e7..a6b3757 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1961=['remoteUri','serverUrl','Configurations','exports','name','username','apiKey','token'];(function(_0x2ffb7d,_0x477146){var _0x25e382=function(_0x5084db){while(--_0x5084db){_0x2ffb7d['push'](_0x2ffb7d['shift']());}};_0x25e382(++_0x477146);}(_0x1961,0xdc));var _0x1196=function(_0x3f822e,_0x197392){_0x3f822e=_0x3f822e-0x0;var _0x2f7674=_0x1961[_0x3f822e];return _0x2f7674;};'use strict';function FreshdeskAccount(_0x322d85){this['id']=_0x322d85['id']||0x0;this[_0x1196('0x0')]=_0x322d85[_0x1196('0x0')]||'';this[_0x1196('0x1')]=_0x322d85[_0x1196('0x1')]||'';this[_0x1196('0x2')]=_0x322d85[_0x1196('0x3')]||'';this[_0x1196('0x4')]=_0x322d85[_0x1196('0x4')]||'';this[_0x1196('0x5')]=_0x322d85['serverUrl']||'';this[_0x1196('0x6')]=_0x322d85['Configurations']||{};}module[_0x1196('0x7')]=FreshdeskAccount;
\ No newline at end of file
+var _0xff4d=['serverUrl','Configurations','exports','name','username','token','remoteUri'];(function(_0x107f10,_0x5529f2){var _0x811cab=function(_0xc160ea){while(--_0xc160ea){_0x107f10['push'](_0x107f10['shift']());}};_0x811cab(++_0x5529f2);}(_0xff4d,0x65));var _0xdff4=function(_0x4e566c,_0x16e04c){_0x4e566c=_0x4e566c-0x0;var _0x31947e=_0xff4d[_0x4e566c];return _0x31947e;};'use strict';function FreshdeskAccount(_0x2332dc){this['id']=_0x2332dc['id']||0x0;this[_0xdff4('0x0')]=_0x2332dc[_0xdff4('0x0')]||'';this[_0xdff4('0x1')]=_0x2332dc[_0xdff4('0x1')]||'';this['apiKey']=_0x2332dc[_0xdff4('0x2')]||'';this[_0xdff4('0x3')]=_0x2332dc[_0xdff4('0x3')]||'';this[_0xdff4('0x4')]=_0x2332dc[_0xdff4('0x4')]||'';this[_0xdff4('0x5')]=_0x2332dc['Configurations']||{};}module[_0xdff4('0x6')]=FreshdeskAccount;
\ No newline at end of file
index db56e3c..1468185 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa63f=['apiKey','token','remoteUri','serverUrl','Configurations','exports','name','username'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa63f,0x1b6));var _0xfa63=function(_0x8cb470,_0x2b9757){_0x8cb470=_0x8cb470-0x0;var _0x2ca139=_0xa63f[_0x8cb470];return _0x2ca139;};'use strict';function FreshsalesAccount(_0xa59e5){this['id']=_0xa59e5['id']||0x0;this[_0xfa63('0x0')]=_0xa59e5[_0xfa63('0x0')]||'';this[_0xfa63('0x1')]=_0xa59e5[_0xfa63('0x1')]||'';this[_0xfa63('0x2')]=_0xa59e5[_0xfa63('0x3')]||'';this[_0xfa63('0x4')]=_0xa59e5[_0xfa63('0x4')]||'';this[_0xfa63('0x5')]=_0xa59e5['serverUrl']||'';this['Configurations']=_0xa59e5[_0xfa63('0x6')]||{};}module[_0xfa63('0x7')]=FreshsalesAccount;
\ No newline at end of file
+var _0xd8a5=['name','username','apiKey','token','remoteUri','serverUrl','Configurations','exports'];(function(_0x76ff3d,_0x552104){var _0xfeb3b8=function(_0x37a3a3){while(--_0x37a3a3){_0x76ff3d['push'](_0x76ff3d['shift']());}};_0xfeb3b8(++_0x552104);}(_0xd8a5,0x160));var _0x5d8a=function(_0x5693b4,_0x9ea47b){_0x5693b4=_0x5693b4-0x0;var _0x489578=_0xd8a5[_0x5693b4];return _0x489578;};'use strict';function FreshsalesAccount(_0x515cfd){this['id']=_0x515cfd['id']||0x0;this['name']=_0x515cfd[_0x5d8a('0x0')]||'';this[_0x5d8a('0x1')]=_0x515cfd['username']||'';this[_0x5d8a('0x2')]=_0x515cfd[_0x5d8a('0x3')]||'';this[_0x5d8a('0x4')]=_0x515cfd[_0x5d8a('0x4')]||'';this[_0x5d8a('0x5')]=_0x515cfd[_0x5d8a('0x5')]||'';this[_0x5d8a('0x6')]=_0x515cfd[_0x5d8a('0x6')]||{};}module[_0x5d8a('0x7')]=FreshsalesAccount;
\ No newline at end of file
index d7c4241..0f2a72e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb81c=['count','queuecallerabandon','queuecallercomplete','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','originalposition','channel','connectedlinenum','connectedlinename','accountcode','context','exten','priority','holdtime','motionChannel','mohtime','variables','exports','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','queuecallerleaveAt','position'];(function(_0x429983,_0x540904){var _0x11a622=function(_0x30c1c9){while(--_0x30c1c9){_0x429983['push'](_0x429983['shift']());}};_0x11a622(++_0x540904);}(_0xb81c,0x18d));var _0xcb81=function(_0x3ef622,_0x7e11f){_0x3ef622=_0x3ef622-0x0;var _0x5429c1=_0xb81c[_0x3ef622];return _0x5429c1;};'use strict';function QueueReport(){this[_0xcb81('0x0')]='inbound';this[_0xcb81('0x1')]='';this[_0xcb81('0x2')]='';this[_0xcb81('0x3')]='';this[_0xcb81('0x4')]='';this[_0xcb81('0x5')]=null;this[_0xcb81('0x6')]=null;this[_0xcb81('0x7')]=0x1;this[_0xcb81('0x8')]=0x1;this[_0xcb81('0x9')]=![];this['queuecallerabandonAt']=null;this[_0xcb81('0xa')]=![];this[_0xcb81('0xb')]=null;this[_0xcb81('0xc')]=![];this[_0xcb81('0xd')]=null;this[_0xcb81('0xe')]=0x1;this[_0xcb81('0xf')]='';this[_0xcb81('0x10')]='';this[_0xcb81('0x11')]='';this[_0xcb81('0x12')]='';this[_0xcb81('0x13')]='';this[_0xcb81('0x14')]='';this[_0xcb81('0x15')]='';this[_0xcb81('0x16')]=0x0;this['assigned']=![];this['lastAssignedTo']='';this[_0xcb81('0x17')]='voice';this[_0xcb81('0x18')]=0x0;this[_0xcb81('0x19')]={};}module[_0xcb81('0x1a')]=QueueReport;
\ No newline at end of file
+var _0x73df=['lastAssignedTo','mohtime','variables','exports','type','calleridnum','calleridname','queue','queuecallerjoinAt','position','count','queuecallerabandon','queuecallerabandonAt','queuecallercomplete','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','originalposition','channel','connectedlinenum','connectedlinename','accountcode','context','exten','holdtime','assigned'];(function(_0x57b36b,_0x452782){var _0x515125=function(_0x567ab5){while(--_0x567ab5){_0x57b36b['push'](_0x57b36b['shift']());}};_0x515125(++_0x452782);}(_0x73df,0x1f2));var _0xf73d=function(_0x5aa034,_0x13c83d){_0x5aa034=_0x5aa034-0x0;var _0x53afb5=_0x73df[_0x5aa034];return _0x53afb5;};'use strict';function QueueReport(){this[_0xf73d('0x0')]='inbound';this['uniqueid']='';this[_0xf73d('0x1')]='';this[_0xf73d('0x2')]='';this[_0xf73d('0x3')]='';this[_0xf73d('0x4')]=null;this['queuecallerleaveAt']=null;this[_0xf73d('0x5')]=0x1;this[_0xf73d('0x6')]=0x1;this[_0xf73d('0x7')]=![];this[_0xf73d('0x8')]=null;this[_0xf73d('0x9')]=![];this[_0xf73d('0xa')]=null;this[_0xf73d('0xb')]=![];this[_0xf73d('0xc')]=null;this[_0xf73d('0xd')]=0x1;this[_0xf73d('0xe')]='';this[_0xf73d('0xf')]='';this[_0xf73d('0x10')]='';this[_0xf73d('0x11')]='';this[_0xf73d('0x12')]='';this[_0xf73d('0x13')]='';this['priority']='';this[_0xf73d('0x14')]=0x0;this[_0xf73d('0x15')]=![];this[_0xf73d('0x16')]='';this[_0xf73d('0x17')]=0x0;this[_0xf73d('0x18')]={};}module[_0xf73d('0x19')]=QueueReport;
\ No newline at end of file
index bdd0adb..8ffc80a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe5d=['exports','name','username','remoteUri','clientId','clientSecret','securityToken','type','integrationTab','serverUrl','Configurations'];(function(_0x481ff7,_0x2b6ebb){var _0x1c1573=function(_0x4933fe){while(--_0x4933fe){_0x481ff7['push'](_0x481ff7['shift']());}};_0x1c1573(++_0x2b6ebb);}(_0xbe5d,0x90));var _0xdbe5=function(_0x1d65ce,_0x4a0328){_0x1d65ce=_0x1d65ce-0x0;var _0x2ed3d6=_0xbe5d[_0x1d65ce];return _0x2ed3d6;};'use strict';function SalesforceAccount(_0x5df217){this['id']=_0x5df217['id']||0x0;this[_0xdbe5('0x0')]=_0x5df217[_0xdbe5('0x0')]||'';this[_0xdbe5('0x1')]=_0x5df217[_0xdbe5('0x1')]||'';this[_0xdbe5('0x2')]=_0x5df217[_0xdbe5('0x2')]||'';this['password']=_0x5df217['password']||'';this[_0xdbe5('0x3')]=_0x5df217[_0xdbe5('0x3')]||'';this[_0xdbe5('0x4')]=_0x5df217[_0xdbe5('0x4')]||'';this[_0xdbe5('0x5')]=_0x5df217['securityToken']||'';this[_0xdbe5('0x6')]=_0x5df217['type']||_0xdbe5('0x7');this[_0xdbe5('0x8')]=_0x5df217[_0xdbe5('0x8')]||'';this[_0xdbe5('0x9')]=_0x5df217['Configurations']||{};}module[_0xdbe5('0xa')]=SalesforceAccount;
\ No newline at end of file
+var _0x42bd=['password','clientId','clientSecret','securityToken','type','integrationTab','serverUrl','Configurations','name','username'];(function(_0x2d7919,_0x4f486b){var _0x2e8542=function(_0x157212){while(--_0x157212){_0x2d7919['push'](_0x2d7919['shift']());}};_0x2e8542(++_0x4f486b);}(_0x42bd,0x198));var _0xd42b=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x42bd[_0x13d07a];return _0x5ee0ee;};'use strict';function SalesforceAccount(_0x586f4b){this['id']=_0x586f4b['id']||0x0;this['name']=_0x586f4b[_0xd42b('0x0')]||'';this[_0xd42b('0x1')]=_0x586f4b[_0xd42b('0x1')]||'';this['remoteUri']=_0x586f4b['remoteUri']||'';this['password']=_0x586f4b[_0xd42b('0x2')]||'';this[_0xd42b('0x3')]=_0x586f4b[_0xd42b('0x3')]||'';this[_0xd42b('0x4')]=_0x586f4b[_0xd42b('0x4')]||'';this[_0xd42b('0x5')]=_0x586f4b[_0xd42b('0x5')]||'';this[_0xd42b('0x6')]=_0x586f4b['type']||_0xd42b('0x7');this[_0xd42b('0x8')]=_0x586f4b[_0xd42b('0x8')]||'';this['Configurations']=_0x586f4b[_0xd42b('0x9')]||{};}module['exports']=SalesforceAccount;
\ No newline at end of file
index 0d69dcb..ff9d008 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7507=['password','remoteUri','serverUrl','Configurations','exports','name','username'];(function(_0x36884e,_0x48008f){var _0x1cc367=function(_0x388a78){while(--_0x388a78){_0x36884e['push'](_0x36884e['shift']());}};_0x1cc367(++_0x48008f);}(_0x7507,0xf3));var _0x7750=function(_0x57f107,_0x56543d){_0x57f107=_0x57f107-0x0;var _0x4003a9=_0x7507[_0x57f107];return _0x4003a9;};'use strict';function ServicenowAccount(_0x454ba0){this['id']=_0x454ba0['id']||0x0;this[_0x7750('0x0')]=_0x454ba0[_0x7750('0x0')]||'';this[_0x7750('0x1')]=_0x454ba0[_0x7750('0x1')]||'';this[_0x7750('0x2')]=_0x454ba0[_0x7750('0x2')]||'';this[_0x7750('0x3')]=_0x454ba0[_0x7750('0x3')]||'';this[_0x7750('0x4')]=_0x454ba0[_0x7750('0x4')]||'';this[_0x7750('0x5')]=_0x454ba0[_0x7750('0x5')]||{};}module[_0x7750('0x6')]=ServicenowAccount;
\ No newline at end of file
+var _0x3fc4=['name','username','password','remoteUri','serverUrl','Configurations'];(function(_0x54a24b,_0x423b2b){var _0x3c8bec=function(_0xfc3221){while(--_0xfc3221){_0x54a24b['push'](_0x54a24b['shift']());}};_0x3c8bec(++_0x423b2b);}(_0x3fc4,0x1d4));var _0x43fc=function(_0x205a4c,_0x3bb418){_0x205a4c=_0x205a4c-0x0;var _0x3039d4=_0x3fc4[_0x205a4c];return _0x3039d4;};'use strict';function ServicenowAccount(_0x36556e){this['id']=_0x36556e['id']||0x0;this[_0x43fc('0x0')]=_0x36556e['name']||'';this[_0x43fc('0x1')]=_0x36556e['username']||'';this[_0x43fc('0x2')]=_0x36556e[_0x43fc('0x2')]||'';this[_0x43fc('0x3')]=_0x36556e[_0x43fc('0x3')]||'';this[_0x43fc('0x4')]=_0x36556e[_0x43fc('0x4')]||'';this[_0x43fc('0x5')]=_0x36556e[_0x43fc('0x5')]||{};}module['exports']=ServicenowAccount;
\ No newline at end of file
index bc09f11..a3c8920 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f70=['remoteUri','serverUrl','Configurations','exports','name','username','password'];(function(_0x9c2fcc,_0x497c47){var _0x346391=function(_0x153e3b){while(--_0x153e3b){_0x9c2fcc['push'](_0x9c2fcc['shift']());}};_0x346391(++_0x497c47);}(_0x8f70,0x74));var _0x08f7=function(_0x41126c,_0x3b8346){_0x41126c=_0x41126c-0x0;var _0x4421e7=_0x8f70[_0x41126c];return _0x4421e7;};'use strict';function SugarcrmAccount(_0x9b2604){this['id']=_0x9b2604['id']||0x0;this[_0x08f7('0x0')]=_0x9b2604[_0x08f7('0x0')]||'';this[_0x08f7('0x1')]=_0x9b2604[_0x08f7('0x1')]||'';this[_0x08f7('0x2')]=_0x9b2604[_0x08f7('0x2')]||'';this[_0x08f7('0x3')]=_0x9b2604[_0x08f7('0x3')]||'';this[_0x08f7('0x4')]=_0x9b2604[_0x08f7('0x4')]||'';this[_0x08f7('0x5')]=_0x9b2604[_0x08f7('0x5')]||{};}module[_0x08f7('0x6')]=SugarcrmAccount;
\ No newline at end of file
+var _0xdeeb=['exports','name','username','password','remoteUri','serverUrl','Configurations'];(function(_0x598117,_0x477b34){var _0x224ce6=function(_0x3ed2ed){while(--_0x3ed2ed){_0x598117['push'](_0x598117['shift']());}};_0x224ce6(++_0x477b34);}(_0xdeeb,0x1b3));var _0xbdee=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0xdeeb[_0x138adb];return _0x1b27f2;};'use strict';function SugarcrmAccount(_0x2874c9){this['id']=_0x2874c9['id']||0x0;this['name']=_0x2874c9[_0xbdee('0x0')]||'';this[_0xbdee('0x1')]=_0x2874c9[_0xbdee('0x1')]||'';this['password']=_0x2874c9[_0xbdee('0x2')]||'';this['remoteUri']=_0x2874c9[_0xbdee('0x3')]||'';this['serverUrl']=_0x2874c9[_0xbdee('0x4')]||'';this['Configurations']=_0x2874c9[_0xbdee('0x5')]||{};}module[_0xbdee('0x6')]=SugarcrmAccount;
\ No newline at end of file
index 32f41e6..9940955 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ff5=['exports','name','accountcode','state','unknown','stateTime'];(function(_0x58d604,_0x1afd04){var _0x2db99a=function(_0x29c7e4){while(--_0x29c7e4){_0x58d604['push'](_0x58d604['shift']());}};_0x2db99a(++_0x1afd04);}(_0x7ff5,0xcd));var _0x57ff=function(_0x341b59,_0x4e7333){_0x341b59=_0x341b59-0x0;var _0x2c3417=_0x7ff5[_0x341b59];return _0x2c3417;};'use strict';function Telephone(_0x25b20d){this['id']=_0x25b20d['id']||0x0;this[_0x57ff('0x0')]=_0x25b20d[_0x57ff('0x0')]||'';this[_0x57ff('0x1')]=_0x25b20d['accountcode']||'';this[_0x57ff('0x2')]=_0x57ff('0x3');this[_0x57ff('0x4')]=0x0;this['status']=_0x57ff('0x3');this['address']='';}module[_0x57ff('0x5')]=Telephone;
\ No newline at end of file
+var _0xeee9=['stateTime','status','exports','name','accountcode','state','unknown'];(function(_0x3791a5,_0x3e9d44){var _0x495f05=function(_0x2a2e0c){while(--_0x2a2e0c){_0x3791a5['push'](_0x3791a5['shift']());}};_0x495f05(++_0x3e9d44);}(_0xeee9,0x153));var _0x9eee=function(_0x23571e,_0x12d4bb){_0x23571e=_0x23571e-0x0;var _0x55eb29=_0xeee9[_0x23571e];return _0x55eb29;};'use strict';function Telephone(_0x16b31a){this['id']=_0x16b31a['id']||0x0;this[_0x9eee('0x0')]=_0x16b31a[_0x9eee('0x0')]||'';this[_0x9eee('0x1')]=_0x16b31a[_0x9eee('0x1')]||'';this[_0x9eee('0x2')]=_0x9eee('0x3');this[_0x9eee('0x4')]=0x0;this[_0x9eee('0x5')]=_0x9eee('0x3');this['address']='';}module[_0x9eee('0x6')]=Telephone;
\ No newline at end of file
index e020d1f..4a98d8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['name','html'];(function(_0x27cbb6,_0x4a5c03){var _0xb64166=function(_0x1452e5){while(--_0x1452e5){_0x27cbb6['push'](_0x27cbb6['shift']());}};_0xb64166(++_0x4a5c03);}(_0xb10b,0x12a));var _0xbb10=function(_0x460013,_0x2ebc73){_0x460013=_0x460013-0x0;var _0x55924f=_0xb10b[_0x460013];return _0x55924f;};'use strict';function template(_0x13ce8d){this['id']=_0x13ce8d['id']||0x0;this['name']=_0x13ce8d[_0xbb10('0x0')]||'';this[_0xbb10('0x1')]=_0x13ce8d[_0xbb10('0x1')]||'';}module['exports']=template;
\ No newline at end of file
+var _0xb10b=['name','html'];(function(_0x565e3b,_0x19c55a){var _0x488cf0=function(_0xa5af58){while(--_0xa5af58){_0x565e3b['push'](_0x565e3b['shift']());}};_0x488cf0(++_0x19c55a);}(_0xb10b,0x12a));var _0xbb10=function(_0x972b32,_0x56ea80){_0x972b32=_0x972b32-0x0;var _0x6e8e75=_0xb10b[_0x972b32];return _0x6e8e75;};'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 5db287f..9b87a7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['AllConditions','AnyConditions','Actions','name','channel','voice','status'];(function(_0x556bb1,_0x34830d){var _0x45455f=function(_0x13c6ba){while(--_0x13c6ba){_0x556bb1['push'](_0x556bb1['shift']());}};_0x45455f(++_0x34830d);}(_0x5f66,0x1a0));var _0x65f6=function(_0x5d4607,_0x6b5e7b){_0x5d4607=_0x5d4607-0x0;var _0x5e4a86=_0x5f66[_0x5d4607];return _0x5e4a86;};'use strict';function Trigger(_0x253044){this['id']=_0x253044['id']||0x0;this[_0x65f6('0x0')]=_0x253044['name']||'';this[_0x65f6('0x1')]=_0x253044[_0x65f6('0x1')]||_0x65f6('0x2');this[_0x65f6('0x3')]=_0x253044[_0x65f6('0x3')]||![];this['AllConditions']=_0x253044[_0x65f6('0x4')]||[];this['AnyConditions']=_0x253044[_0x65f6('0x5')]||[];this[_0x65f6('0x6')]=_0x253044['Actions']||[];}module['exports']=Trigger;
\ No newline at end of file
+var _0x0b0e=['channel','voice','status','AllConditions','AnyConditions','Actions','exports','name'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x0b0e,0x187));var _0xe0b0=function(_0x4c6bca,_0x3de390){_0x4c6bca=_0x4c6bca-0x0;var _0x29d58e=_0x0b0e[_0x4c6bca];return _0x29d58e;};'use strict';function Trigger(_0x29cd1e){this['id']=_0x29cd1e['id']||0x0;this['name']=_0x29cd1e[_0xe0b0('0x0')]||'';this['channel']=_0x29cd1e[_0xe0b0('0x1')]||_0xe0b0('0x2');this[_0xe0b0('0x3')]=_0x29cd1e[_0xe0b0('0x3')]||![];this[_0xe0b0('0x4')]=_0x29cd1e[_0xe0b0('0x4')]||[];this[_0xe0b0('0x5')]=_0x29cd1e[_0xe0b0('0x5')]||[];this[_0xe0b0('0x6')]=_0x29cd1e[_0xe0b0('0x6')]||[];}module[_0xe0b0('0x7')]=Trigger;
\ No newline at end of file
index afe0786..d16c0a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11ec=['refresh','stateRegistry','registrationtime','address','defaultuser','exports','active','name','state','stateTime','unknown','registry','indexOf','split','host','port','domain','domainport'];(function(_0x3b1a6a,_0x280ab7){var _0x1ef521=function(_0x10f1f8){while(--_0x10f1f8){_0x3b1a6a['push'](_0x3b1a6a['shift']());}};_0x1ef521(++_0x280ab7);}(_0x11ec,0x14a));var _0xc11e=function(_0x210d7f,_0x2abe4f){_0x210d7f=_0x210d7f-0x0;var _0x42d687=_0x11ec[_0x210d7f];return _0x42d687;};'use strict';function Trunk(_0x2054c9){this['id']=_0x2054c9['id']||0x0;this[_0xc11e('0x0')]=_0x2054c9[_0xc11e('0x0')]||![];this[_0xc11e('0x1')]=_0x2054c9[_0xc11e('0x1')]||'';this[_0xc11e('0x2')]='unknown';this[_0xc11e('0x3')]=0x0;this['status']=_0xc11e('0x4');this[_0xc11e('0x5')]=_0x2054c9[_0xc11e('0x5')]&&_0x2054c9['registry'][_0xc11e('0x6')](':')?_0x2054c9[_0xc11e('0x5')][_0xc11e('0x7')](':')[0x0]:'';this[_0xc11e('0x8')]='';this[_0xc11e('0x9')]='';this[_0xc11e('0xa')]='';this[_0xc11e('0xb')]='';this[_0xc11e('0xc')]='';this[_0xc11e('0xd')]=_0xc11e('0x4');this[_0xc11e('0xe')]='';this[_0xc11e('0xf')]='';this[_0xc11e('0x10')]=_0x2054c9[_0xc11e('0x10')]||'';}module[_0xc11e('0x11')]=Trunk;
\ No newline at end of file
+var _0xdc30=['status','registry','host','domainport','registrationtime','address','exports','active','name','state','unknown'];(function(_0x4fa291,_0x56e289){var _0x506d9b=function(_0x24c31f){while(--_0x24c31f){_0x4fa291['push'](_0x4fa291['shift']());}};_0x506d9b(++_0x56e289);}(_0xdc30,0x8b));var _0x0dc3=function(_0xce9195,_0x1963e1){_0xce9195=_0xce9195-0x0;var _0x530fe6=_0xdc30[_0xce9195];return _0x530fe6;};'use strict';function Trunk(_0x3e6106){this['id']=_0x3e6106['id']||0x0;this[_0x0dc3('0x0')]=_0x3e6106[_0x0dc3('0x0')]||![];this['name']=_0x3e6106[_0x0dc3('0x1')]||'';this[_0x0dc3('0x2')]=_0x0dc3('0x3');this['stateTime']=0x0;this[_0x0dc3('0x4')]=_0x0dc3('0x3');this[_0x0dc3('0x5')]=_0x3e6106['registry']&&_0x3e6106['registry']['indexOf'](':')?_0x3e6106[_0x0dc3('0x5')]['split'](':')[0x0]:'';this[_0x0dc3('0x6')]='';this['port']='';this['domain']='';this[_0x0dc3('0x7')]='';this['refresh']='';this['stateRegistry']='unknown';this[_0x0dc3('0x8')]='';this[_0x0dc3('0x9')]='';this['defaultuser']=_0x3e6106['defaultuser']||'';}module[_0x0dc3('0xa')]=Trunk;
\ No newline at end of file
index 5b9007c..d3c54c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd8=['mandatoryDisposition','exten','recordingFormat','none'];(function(_0x5d34aa,_0x462f64){var _0x67ae3c=function(_0x146094){while(--_0x146094){_0x5d34aa['push'](_0x5d34aa['shift']());}};_0x67ae3c(++_0x462f64);}(_0xedd8,0x169));var _0x8edd=function(_0x5ef161,_0x27d16c){_0x5ef161=_0x5ef161-0x0;var _0x1c6e9e=_0xedd8[_0x5ef161];return _0x1c6e9e;};'use strict';function voiceExtension(_0x2a5e21){this['id']=_0x2a5e21['id']||0x0;this[_0x8edd('0x0')]=_0x2a5e21[_0x8edd('0x0')]||'';this[_0x8edd('0x1')]=_0x2a5e21[_0x8edd('0x1')]||_0x8edd('0x2');this[_0x8edd('0x3')]=_0x2a5e21[_0x8edd('0x3')]||![];}module['exports']=voiceExtension;
\ No newline at end of file
+var _0x4f52=['none','mandatoryDisposition','exports','exten','recordingFormat'];(function(_0x38537f,_0x252124){var _0x141e23=function(_0x2809b5){while(--_0x2809b5){_0x38537f['push'](_0x38537f['shift']());}};_0x141e23(++_0x252124);}(_0x4f52,0x111));var _0x24f5=function(_0x35fe3b,_0x310f07){_0x35fe3b=_0x35fe3b-0x0;var _0x2b3d86=_0x4f52[_0x35fe3b];return _0x2b3d86;};'use strict';function voiceExtension(_0x100c74){this['id']=_0x100c74['id']||0x0;this[_0x24f5('0x0')]=_0x100c74[_0x24f5('0x0')]||'';this['recordingFormat']=_0x100c74[_0x24f5('0x1')]||_0x24f5('0x2');this['mandatoryDisposition']=_0x100c74[_0x24f5('0x3')]||![];}module[_0x24f5('0x4')]=voiceExtension;
\ No newline at end of file
index 8a0b5da..35c6a1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6e8=['pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayACS','outboundAbandonedDay','startProgressive','startPredictive','handlePredictive','predictiveIntervalTotalCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCalls','erlangAbandonmentRate','dialRecallMeTimeout','dialRecallInQueue','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','unknown','not_inuse','inuse','busy','invalid','ringing','onhold','wav','wav49','roundrobin','name','monitor_format','type','inbound','waiting','talking','total','answered','sumHoldTime','unmanaged','abandoned','loggedIn','available','acw','acwTimeout','autopause','sendMessageOneNotActive','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueProject','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','rrmemory','dialAMDActive','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay'];(function(_0x21540e,_0x2af2c0){var _0x6f3788=function(_0x5987d7){while(--_0x5987d7){_0x21540e['push'](_0x21540e['shift']());}};_0x6f3788(++_0x2af2c0);}(_0xc6e8,0x9e));var _0x8c6e=function(_0x98fa0a,_0x4533c0){_0x98fa0a=_0x98fa0a-0x0;var _0x2c887a=_0xc6e8[_0x98fa0a];return _0x2c887a;};'use strict';var statusDesc=[_0x8c6e('0x0'),_0x8c6e('0x1'),_0x8c6e('0x2'),_0x8c6e('0x3'),_0x8c6e('0x4'),'unavailable',_0x8c6e('0x5'),'ringinuse',_0x8c6e('0x6')];var monitorFormat={'wav':_0x8c6e('0x7'),'wav49':_0x8c6e('0x8'),'gsm':'gsm'};var strategy={'rrmemory':'rrmemory','roundrobin':_0x8c6e('0x9')};function VoiceQueue(_0x4624a5){this['id']=_0x4624a5['id']||0x0;this['name']=_0x4624a5[_0x8c6e('0xa')]||'';this[_0x8c6e('0xb')]=_0x4624a5[_0x8c6e('0xb')]||'';this['type']=_0x4624a5[_0x8c6e('0xc')]||_0x8c6e('0xd');this[_0x8c6e('0xe')]=0x0;this[_0x8c6e('0xf')]=0x0;this[_0x8c6e('0x10')]=0x0;this[_0x8c6e('0x11')]=0x0;this['sumDuration']=0x0;this[_0x8c6e('0x12')]=0x0;this['sumBillable']=0x0;this[_0x8c6e('0x13')]=0x0;this[_0x8c6e('0x14')]=0x0;this[_0x8c6e('0x15')]=0x0;this[_0x8c6e('0x16')]=0x0;this[_0x8c6e('0x17')]=_0x4624a5[_0x8c6e('0x17')]||![];this[_0x8c6e('0x18')]=_0x4624a5['acwTimeout']||0xa;this[_0x8c6e('0x19')]=_0x4624a5[_0x8c6e('0x19')]||'no';this[_0x8c6e('0x1a')]=!![];this['message']='';this[_0x8c6e('0x1b')]=0x0;this[_0x8c6e('0x1c')]=0x0;this[_0x8c6e('0x1d')]=_0x4624a5[_0x8c6e('0x1d')]||null;this['dialGlobalInterval']=_0x4624a5['dialGlobalInterval']?_0x4624a5[_0x8c6e('0x1e')]:null;this[_0x8c6e('0x1f')]=_0x4624a5[_0x8c6e('0x1f')];this[_0x8c6e('0x20')]=_0x4624a5['dialMethod']||_0x8c6e('0x21');this['dialLimitChannel']=_0x4624a5[_0x8c6e('0x22')]||0x0;this['dialLimitQueue']=_0x4624a5[_0x8c6e('0x23')]||0x0;this['dialPowerLevel']=_0x4624a5[_0x8c6e('0x24')]||0x1;this[_0x8c6e('0x25')]=_0x4624a5[_0x8c6e('0x25')]||_0x8c6e('0x26');this[_0x8c6e('0x27')]=_0x4624a5['dialPredictiveOptimizationPercentage']||0.03;this[_0x8c6e('0x28')]=_0x4624a5['dialPredictiveInterval']||0x258;this[_0x8c6e('0x29')]=_0x4624a5[_0x8c6e('0x29')]||_0x8c6e('0x2a');this[_0x8c6e('0x2b')]=_0x4624a5['dialOriginateCallerIdNumber']||_0x8c6e('0x2a');this[_0x8c6e('0x2c')]=_0x4624a5[_0x8c6e('0x2c')]||0x1e;this[_0x8c6e('0x2d')]=_0x4624a5['dialQueueOptions']||'tTxX';this['dialQueueTimeout']=_0x4624a5['dialQueueTimeout']||0x3;this[_0x8c6e('0x2e')]=_0x4624a5[_0x8c6e('0x2e')]||undefined;this['dialCongestionMaxRetry']=_0x4624a5['dialCongestionMaxRetry']||0x3;this[_0x8c6e('0x2f')]=_0x4624a5[_0x8c6e('0x2f')]||0x96;this[_0x8c6e('0x30')]=_0x4624a5[_0x8c6e('0x30')]||0x3;this[_0x8c6e('0x31')]=_0x4624a5[_0x8c6e('0x31')]||0x96;this[_0x8c6e('0x32')]=_0x4624a5[_0x8c6e('0x32')]||0x3;this[_0x8c6e('0x33')]=_0x4624a5[_0x8c6e('0x33')]||0x96;this['dialNoSuchNumberMaxRetry']=_0x4624a5[_0x8c6e('0x34')]||0x3;this[_0x8c6e('0x35')]=_0x4624a5[_0x8c6e('0x35')]||0x96;this[_0x8c6e('0x36')]=_0x4624a5['dialDropMaxRetry']||0x3;this['dialDropRetryFrequency']=_0x4624a5[_0x8c6e('0x37')]||0x96;this[_0x8c6e('0x38')]=_0x4624a5[_0x8c6e('0x38')]||0x3;this['dialAbandonedRetryFrequency']=_0x4624a5[_0x8c6e('0x39')]||0x96;this[_0x8c6e('0x3a')]=_0x4624a5[_0x8c6e('0x3a')]||0x3;this['dialMachineRetryFrequency']=_0x4624a5[_0x8c6e('0x3b')]||0x96;this['dialAgentRejectMaxRetry']=_0x4624a5[_0x8c6e('0x3c')]||0x3;this[_0x8c6e('0x3d')]=_0x4624a5[_0x8c6e('0x3d')]||0x96;this[_0x8c6e('0x3e')]=_0x4624a5['dialGlobalMaxRetry']||0x4;this[_0x8c6e('0x3f')]=_0x4624a5[_0x8c6e('0x3f')]?_0x4624a5[_0x8c6e('0x3f')]:undefined;this[_0x8c6e('0x40')]=_0x4624a5[_0x8c6e('0x40')]?_0x4624a5['TrunkBackup']:undefined;this[_0x8c6e('0x41')]=_0x4624a5[_0x8c6e('0x41')]||undefined;this[_0x8c6e('0x42')]=_0x4624a5[_0x8c6e('0x42')]?_0x4624a5[_0x8c6e('0x42')]:undefined;this[_0x8c6e('0x43')]=_0x4624a5[_0x8c6e('0x43')]||'DESC';this['dialRandomLastDigitCallerIdNumber']=_0x4624a5[_0x8c6e('0x44')]||undefined;this['dialCutDigit']=_0x4624a5[_0x8c6e('0x45')]||undefined;this[_0x8c6e('0x46')]=strategy[_0x4624a5[_0x8c6e('0x46')]]||_0x8c6e('0x47');this['queueStatusComplete']=!![];this[_0x8c6e('0x48')]=_0x4624a5[_0x8c6e('0x48')]||![];this['dialAMDInitialSilence']=_0x4624a5['dialAMDInitialSilence'];this[_0x8c6e('0x49')]=_0x4624a5['dialAMDGreeting'];this[_0x8c6e('0x4a')]=_0x4624a5['dialAMDAfterGreetingSilence'];this[_0x8c6e('0x4b')]=_0x4624a5[_0x8c6e('0x4b')];this['dialAMDMinWordLength']=_0x4624a5[_0x8c6e('0x4c')];this['dialAMDBetweenWordsSilence']=_0x4624a5[_0x8c6e('0x4d')];this[_0x8c6e('0x4e')]=_0x4624a5[_0x8c6e('0x4e')];this[_0x8c6e('0x4f')]=_0x4624a5['dialAMDSilenceThreshold'];this['dialAMDMaximumWordLength']=_0x4624a5[_0x8c6e('0x50')];this[_0x8c6e('0x51')]=0x0;this[_0x8c6e('0x52')]=0x0;this['timeout']=_0x4624a5[_0x8c6e('0x53')];this[_0x8c6e('0x54')]=0x0;this[_0x8c6e('0x55')]=0x0;this['outboundNoAnswerCallsDay']=0x0;this[_0x8c6e('0x56')]=0x0;this[_0x8c6e('0x57')]=0x0;this[_0x8c6e('0x58')]=0x0;this[_0x8c6e('0x59')]=0x0;this[_0x8c6e('0x5a')]=0x0;this[_0x8c6e('0x5b')]=0x0;this[_0x8c6e('0x5c')]=0x0;this['outboundDropCallsDayTimeout']=0x0;this[_0x8c6e('0x5d')]=0x0;this['outboundReCallsDay']=0x0;this[_0x8c6e('0x5e')]=0x0;this[_0x8c6e('0x5f')]=undefined;this[_0x8c6e('0x60')]=undefined;this[_0x8c6e('0x61')]=undefined;this['predictiveIntervalMultiplicativeFactor']=1.05;this[_0x8c6e('0x62')]=0x0;this['predictiveIntervalAnsweredCalls']=0x0;this[_0x8c6e('0x63')]=0x0;this[_0x8c6e('0x64')]=0x0;this[_0x8c6e('0x65')]=0x0;this[_0x8c6e('0x66')]=0x0;this[_0x8c6e('0x67')]=0x0;this['predictiveIntervalAvailable']=0x0;this[_0x8c6e('0x68')]=_0x4624a5['dialPredictiveIntervalMaxThreshold']||0x14;this[_0x8c6e('0x69')]=_0x4624a5[_0x8c6e('0x6a')]||0xa;this[_0x8c6e('0x6b')]=0x0;this[_0x8c6e('0x6c')]=0x0;this[_0x8c6e('0x6d')]=0x1;this[_0x8c6e('0x6e')]=0x0;this['erlangCallToSecond']=0x0;this[_0x8c6e('0x6f')]=0x0;this['erlangBusyFactor']=0x0;this['dialRecallMeTimeout']=_0x4624a5[_0x8c6e('0x70')]||0x1e;this[_0x8c6e('0x71')]=_0x4624a5[_0x8c6e('0x71')]||![];this[_0x8c6e('0x72')]=_0x4624a5[_0x8c6e('0x72')]||undefined;this['dialAgiAfterHangupClient']=_0x4624a5[_0x8c6e('0x73')]||![];this[_0x8c6e('0x74')]=_0x4624a5[_0x8c6e('0x74')]||![];this[_0x8c6e('0xb')]=monitorFormat[_0x4624a5['monitor_format']]?monitorFormat[_0x4624a5['monitor_format']]:undefined;this[_0x8c6e('0x75')]=_0x4624a5[_0x8c6e('0x75')]||![];this[_0x8c6e('0x76')]=_0x4624a5[_0x8c6e('0x76')]?_0x4624a5[_0x8c6e('0x76')]:undefined;}module[_0x8c6e('0x77')]=VoiceQueue;
\ No newline at end of file
+var _0x9333=['dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','pTalking','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','outboundAbandonedDay','startProgressive','startPredictive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMinThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','erlangCalls','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDispositionPause','exports','unknown','not_inuse','invalid','unavailable','onhold','wav','wav49','gsm','rrmemory','monitor_format','type','inbound','waiting','total','sumDuration','sumHoldTime','sumBillable','unmanaged','abandoned','loggedIn','available','acw','autopause','sendMessageOneNotActive','message','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry'];(function(_0x3ce2c4,_0x4544c1){var _0x4047c1=function(_0x3fece6){while(--_0x3fece6){_0x3ce2c4['push'](_0x3ce2c4['shift']());}};_0x4047c1(++_0x4544c1);}(_0x9333,0x122));var _0x3933=function(_0x49741f,_0x20b39e){_0x49741f=_0x49741f-0x0;var _0x179734=_0x9333[_0x49741f];return _0x179734;};'use strict';var statusDesc=[_0x3933('0x0'),_0x3933('0x1'),'inuse','busy',_0x3933('0x2'),_0x3933('0x3'),'ringing','ringinuse',_0x3933('0x4')];var monitorFormat={'wav':_0x3933('0x5'),'wav49':_0x3933('0x6'),'gsm':_0x3933('0x7')};var strategy={'rrmemory':_0x3933('0x8'),'roundrobin':'roundrobin'};function VoiceQueue(_0x3a87d3){this['id']=_0x3a87d3['id']||0x0;this['name']=_0x3a87d3['name']||'';this['monitor_format']=_0x3a87d3[_0x3933('0x9')]||'';this[_0x3933('0xa')]=_0x3a87d3[_0x3933('0xa')]||_0x3933('0xb');this[_0x3933('0xc')]=0x0;this['talking']=0x0;this[_0x3933('0xd')]=0x0;this['answered']=0x0;this[_0x3933('0xe')]=0x0;this[_0x3933('0xf')]=0x0;this[_0x3933('0x10')]=0x0;this[_0x3933('0x11')]=0x0;this[_0x3933('0x12')]=0x0;this[_0x3933('0x13')]=0x0;this[_0x3933('0x14')]=0x0;this[_0x3933('0x15')]=_0x3a87d3['acw']||![];this['acwTimeout']=_0x3a87d3['acwTimeout']||0xa;this['autopause']=_0x3a87d3[_0x3933('0x16')]||'no';this[_0x3933('0x17')]=!![];this[_0x3933('0x18')]='';this['originated']=0x0;this[_0x3933('0x19')]=0x0;this[_0x3933('0x1a')]=_0x3a87d3[_0x3933('0x1a')]||null;this[_0x3933('0x1b')]=_0x3a87d3[_0x3933('0x1b')]?_0x3a87d3[_0x3933('0x1b')]:null;this[_0x3933('0x1c')]=_0x3a87d3['dialActive'];this[_0x3933('0x1d')]=_0x3a87d3[_0x3933('0x1d')]||_0x3933('0x1e');this['dialLimitChannel']=_0x3a87d3[_0x3933('0x1f')]||0x0;this[_0x3933('0x20')]=_0x3a87d3[_0x3933('0x20')]||0x0;this['dialPowerLevel']=_0x3a87d3[_0x3933('0x21')]||0x1;this['dialPredictiveOptimization']=_0x3a87d3[_0x3933('0x22')]||_0x3933('0x23');this['dialPredictiveOptimizationPercentage']=_0x3a87d3[_0x3933('0x24')]||0.03;this['dialPredictiveInterval']=_0x3a87d3[_0x3933('0x25')]||0x258;this[_0x3933('0x26')]=_0x3a87d3[_0x3933('0x26')]||_0x3933('0x27');this['dialOriginateCallerIdNumber']=_0x3a87d3[_0x3933('0x28')]||'anonymous';this[_0x3933('0x29')]=_0x3a87d3[_0x3933('0x29')]||0x1e;this[_0x3933('0x2a')]=_0x3a87d3[_0x3933('0x2a')]||_0x3933('0x2b');this[_0x3933('0x2c')]=_0x3a87d3[_0x3933('0x2c')]||0x3;this['dialQueueProject']=_0x3a87d3[_0x3933('0x2d')]||undefined;this[_0x3933('0x2e')]=_0x3a87d3[_0x3933('0x2e')]||0x3;this['dialCongestionRetryFrequency']=_0x3a87d3[_0x3933('0x2f')]||0x96;this[_0x3933('0x30')]=_0x3a87d3[_0x3933('0x30')]||0x3;this[_0x3933('0x31')]=_0x3a87d3[_0x3933('0x31')]||0x96;this['dialNoAnswerMaxRetry']=_0x3a87d3[_0x3933('0x32')]||0x3;this['dialNoAnswerRetryFrequency']=_0x3a87d3[_0x3933('0x33')]||0x96;this[_0x3933('0x34')]=_0x3a87d3[_0x3933('0x34')]||0x3;this[_0x3933('0x35')]=_0x3a87d3[_0x3933('0x35')]||0x96;this[_0x3933('0x36')]=_0x3a87d3[_0x3933('0x36')]||0x3;this[_0x3933('0x37')]=_0x3a87d3[_0x3933('0x37')]||0x96;this[_0x3933('0x38')]=_0x3a87d3[_0x3933('0x38')]||0x3;this[_0x3933('0x39')]=_0x3a87d3[_0x3933('0x39')]||0x96;this[_0x3933('0x3a')]=_0x3a87d3[_0x3933('0x3a')]||0x3;this['dialMachineRetryFrequency']=_0x3a87d3[_0x3933('0x3b')]||0x96;this[_0x3933('0x3c')]=_0x3a87d3[_0x3933('0x3c')]||0x3;this[_0x3933('0x3d')]=_0x3a87d3['dialAgentRejectRetryFrequency']||0x96;this[_0x3933('0x3e')]=_0x3a87d3[_0x3933('0x3e')]||0x4;this[_0x3933('0x3f')]=_0x3a87d3['Trunk']?_0x3a87d3[_0x3933('0x3f')]:undefined;this['TrunkBackup']=_0x3a87d3[_0x3933('0x40')]?_0x3a87d3[_0x3933('0x40')]:undefined;this[_0x3933('0x41')]=_0x3a87d3[_0x3933('0x41')]||undefined;this['Interval']=_0x3a87d3[_0x3933('0x42')]?_0x3a87d3['Interval']:undefined;this['dialOrderByScheduledAt']=_0x3a87d3[_0x3933('0x43')]||_0x3933('0x44');this[_0x3933('0x45')]=_0x3a87d3['dialRandomLastDigitCallerIdNumber']||undefined;this[_0x3933('0x46')]=_0x3a87d3[_0x3933('0x46')]||undefined;this[_0x3933('0x47')]=strategy[_0x3a87d3[_0x3933('0x47')]]||'rrmemory';this[_0x3933('0x48')]=!![];this[_0x3933('0x49')]=_0x3a87d3[_0x3933('0x49')]||![];this[_0x3933('0x4a')]=_0x3a87d3[_0x3933('0x4a')];this[_0x3933('0x4b')]=_0x3a87d3[_0x3933('0x4b')];this[_0x3933('0x4c')]=_0x3a87d3[_0x3933('0x4c')];this['dialAMDTotalAnalysisTime']=_0x3a87d3[_0x3933('0x4d')];this[_0x3933('0x4e')]=_0x3a87d3[_0x3933('0x4e')];this[_0x3933('0x4f')]=_0x3a87d3[_0x3933('0x4f')];this[_0x3933('0x50')]=_0x3a87d3[_0x3933('0x50')];this[_0x3933('0x51')]=_0x3a87d3[_0x3933('0x51')];this['dialAMDMaximumWordLength']=_0x3a87d3['dialAMDMaximumWordLength'];this['outboundRejectCallsDay']=0x0;this[_0x3933('0x52')]=0x0;this['timeout']=_0x3a87d3['timeout'];this['outboundAnswerCallsDay']=0x0;this['outboundAnswerAgiCallsDay']=0x0;this['outboundNoAnswerCallsDay']=0x0;this['outboundBusyCallsDay']=0x0;this[_0x3933('0x53')]=0x0;this[_0x3933('0x54')]=0x0;this[_0x3933('0x55')]=0x0;this[_0x3933('0x56')]=0x0;this[_0x3933('0x57')]=0x0;this['outboundDropCallsDayCallersExit']=0x0;this[_0x3933('0x58')]=0x0;this[_0x3933('0x59')]=0x0;this[_0x3933('0x5a')]=0x0;this[_0x3933('0x5b')]=0x0;this[_0x3933('0x5c')]=undefined;this[_0x3933('0x5d')]=undefined;this[_0x3933('0x5e')]=undefined;this[_0x3933('0x5f')]=1.05;this['predictiveIntervalTotalCalls']=0x0;this[_0x3933('0x60')]=0x0;this[_0x3933('0x61')]=0x0;this['predictiveIntervalDroppedCallsTimeout']=0x0;this['predictiveIntervalAvgHoldtime']=0x0;this[_0x3933('0x62')]=0x0;this[_0x3933('0x63')]=0x0;this[_0x3933('0x64')]=0x0;this['predictiveIntervalMaxThreshold']=_0x3a87d3['dialPredictiveIntervalMaxThreshold']||0x14;this[_0x3933('0x65')]=_0x3a87d3['dialPredictiveIntervalMaxThreshold']||0xa;this[_0x3933('0x66')]=0x0;this[_0x3933('0x67')]=0x0;this['predictiveIntervalHitRate']=0x1;this[_0x3933('0x68')]=0x0;this['erlangCallToSecond']=0x0;this['erlangAbandonmentRate']=0x0;this[_0x3933('0x69')]=0x0;this[_0x3933('0x6a')]=_0x3a87d3[_0x3933('0x6a')]||0x1e;this[_0x3933('0x6b')]=_0x3a87d3[_0x3933('0x6b')]||![];this['dialQueueProject2']=_0x3a87d3[_0x3933('0x6c')]||undefined;this[_0x3933('0x6d')]=_0x3a87d3[_0x3933('0x6d')]||![];this[_0x3933('0x6e')]=_0x3a87d3[_0x3933('0x6e')]||![];this[_0x3933('0x9')]=monitorFormat[_0x3a87d3[_0x3933('0x9')]]?monitorFormat[_0x3a87d3['monitor_format']]:undefined;this['mandatoryDisposition']=_0x3a87d3['mandatoryDisposition']||![];this[_0x3933('0x6f')]=_0x3a87d3[_0x3933('0x6f')]?_0x3a87d3[_0x3933('0x6f')]:undefined;}module[_0x3933('0x70')]=VoiceQueue;
\ No newline at end of file
index eb06477..12ba449 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b33=['exports','name','username','accessKey','remoteUri','serverUrl','Configurations'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6b33,0x182));var _0x36b3=function(_0x35df7f,_0x3d985e){_0x35df7f=_0x35df7f-0x0;var _0x16a116=_0x6b33[_0x35df7f];return _0x16a116;};'use strict';function VtigerAccount(_0x53ea03){this['id']=_0x53ea03['id']||0x0;this[_0x36b3('0x0')]=_0x53ea03[_0x36b3('0x0')]||'';this[_0x36b3('0x1')]=_0x53ea03[_0x36b3('0x1')]||'';this['accessKey']=_0x53ea03[_0x36b3('0x2')]||'';this[_0x36b3('0x3')]=_0x53ea03[_0x36b3('0x3')]||'';this[_0x36b3('0x4')]=_0x53ea03[_0x36b3('0x4')]||'';this[_0x36b3('0x5')]=_0x53ea03[_0x36b3('0x5')]||{};}module[_0x36b3('0x6')]=VtigerAccount;
\ No newline at end of file
+var _0x5c11=['serverUrl','Configurations','name','username','remoteUri'];(function(_0x3526b3,_0xee8d13){var _0x1e4c93=function(_0x1bdaef){while(--_0x1bdaef){_0x3526b3['push'](_0x3526b3['shift']());}};_0x1e4c93(++_0xee8d13);}(_0x5c11,0x11f));var _0x15c1=function(_0xd38133,_0xdae649){_0xd38133=_0xd38133-0x0;var _0x5e586e=_0x5c11[_0xd38133];return _0x5e586e;};'use strict';function VtigerAccount(_0x4844dd){this['id']=_0x4844dd['id']||0x0;this[_0x15c1('0x0')]=_0x4844dd[_0x15c1('0x0')]||'';this[_0x15c1('0x1')]=_0x4844dd[_0x15c1('0x1')]||'';this['accessKey']=_0x4844dd['accessKey']||'';this[_0x15c1('0x2')]=_0x4844dd[_0x15c1('0x2')]||'';this[_0x15c1('0x3')]=_0x4844dd[_0x15c1('0x3')]||'';this[_0x15c1('0x4')]=_0x4844dd[_0x15c1('0x4')]||{};}module['exports']=VtigerAccount;
\ No newline at end of file
index 1d15d82..30c58f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05cb=['type','integrationTab','serverUrl','Configurations','exports','name','username','password','token','remoteUri','authType'];(function(_0x472d3d,_0x1996ad){var _0x30553b=function(_0x12f7b8){while(--_0x12f7b8){_0x472d3d['push'](_0x472d3d['shift']());}};_0x30553b(++_0x1996ad);}(_0x05cb,0x68));var _0xb05c=function(_0x6b8b28,_0x27c185){_0x6b8b28=_0x6b8b28-0x0;var _0x5141f4=_0x05cb[_0x6b8b28];return _0x5141f4;};'use strict';function ZendeskAccount(_0x756e9d){this['id']=_0x756e9d['id']||0x0;this[_0xb05c('0x0')]=_0x756e9d['name']||'';this[_0xb05c('0x1')]=_0x756e9d[_0xb05c('0x1')]||'';this[_0xb05c('0x2')]=_0x756e9d['password']||'';this[_0xb05c('0x3')]=_0x756e9d[_0xb05c('0x3')]||'';this[_0xb05c('0x4')]=_0x756e9d['remoteUri']||'';this[_0xb05c('0x5')]=_0x756e9d['authType']||'';this['type']=_0x756e9d[_0xb05c('0x6')]||_0xb05c('0x7');this[_0xb05c('0x8')]=_0x756e9d[_0xb05c('0x8')]||'';this[_0xb05c('0x9')]=_0x756e9d['Configurations']||{};}module[_0xb05c('0xa')]=ZendeskAccount;
\ No newline at end of file
+var _0xdc67=['authType','type','serverUrl','Configurations','exports','name','username','password','token','remoteUri'];(function(_0x30aedd,_0x3e8876){var _0x1d6ec5=function(_0x2bf629){while(--_0x2bf629){_0x30aedd['push'](_0x30aedd['shift']());}};_0x1d6ec5(++_0x3e8876);}(_0xdc67,0xa5));var _0x7dc6=function(_0x5ff517,_0x3e4ee0){_0x5ff517=_0x5ff517-0x0;var _0x19a245=_0xdc67[_0x5ff517];return _0x19a245;};'use strict';function ZendeskAccount(_0x57f4cb){this['id']=_0x57f4cb['id']||0x0;this['name']=_0x57f4cb[_0x7dc6('0x0')]||'';this[_0x7dc6('0x1')]=_0x57f4cb['username']||'';this[_0x7dc6('0x2')]=_0x57f4cb[_0x7dc6('0x2')]||'';this['token']=_0x57f4cb[_0x7dc6('0x3')]||'';this[_0x7dc6('0x4')]=_0x57f4cb[_0x7dc6('0x4')]||'';this[_0x7dc6('0x5')]=_0x57f4cb[_0x7dc6('0x5')]||'';this['type']=_0x57f4cb[_0x7dc6('0x6')]||'integrationTab';this[_0x7dc6('0x7')]=_0x57f4cb[_0x7dc6('0x7')]||'';this[_0x7dc6('0x8')]=_0x57f4cb['Configurations']||{};}module[_0x7dc6('0x9')]=ZendeskAccount;
\ No newline at end of file
index cf63791..c7baede 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x837d=['code','refreshToken','Configurations','exports','name','description','host','zone','clientId','clientSecret','serverUrl'];(function(_0x2c8141,_0x4e8cdc){var _0x3e11a3=function(_0x597abe){while(--_0x597abe){_0x2c8141['push'](_0x2c8141['shift']());}};_0x3e11a3(++_0x4e8cdc);}(_0x837d,0xa9));var _0xd837=function(_0x4f206,_0x1578d4){_0x4f206=_0x4f206-0x0;var _0xcf49bb=_0x837d[_0x4f206];return _0xcf49bb;};'use strict';function ZohoAccount(_0x21118e){this['id']=_0x21118e['id']||0x0;this[_0xd837('0x0')]=_0x21118e[_0xd837('0x0')]||'';this[_0xd837('0x1')]=_0x21118e[_0xd837('0x1')]||'';this[_0xd837('0x2')]=_0x21118e[_0xd837('0x2')]||'';this[_0xd837('0x3')]=_0x21118e[_0xd837('0x3')]||'';this['clientId']=_0x21118e[_0xd837('0x4')]||'';this[_0xd837('0x5')]=_0x21118e[_0xd837('0x5')]||'';this['serverUrl']=_0x21118e[_0xd837('0x6')]||'';this[_0xd837('0x7')]=_0x21118e['code']||'';this[_0xd837('0x8')]=_0x21118e[_0xd837('0x8')]||'';this[_0xd837('0x9')]=_0x21118e[_0xd837('0x9')]||{};}module[_0xd837('0xa')]=ZohoAccount;
\ No newline at end of file
+var _0x3434=['serverUrl','code','refreshToken','Configurations','name','host','zone','clientId','clientSecret'];(function(_0x53f715,_0x52587b){var _0x16c757=function(_0x5cc9bf){while(--_0x5cc9bf){_0x53f715['push'](_0x53f715['shift']());}};_0x16c757(++_0x52587b);}(_0x3434,0x109));var _0x4343=function(_0x5cf5b0,_0x4073bb){_0x5cf5b0=_0x5cf5b0-0x0;var _0x10f862=_0x3434[_0x5cf5b0];return _0x10f862;};'use strict';function ZohoAccount(_0x2271c8){this['id']=_0x2271c8['id']||0x0;this[_0x4343('0x0')]=_0x2271c8[_0x4343('0x0')]||'';this['description']=_0x2271c8['description']||'';this['host']=_0x2271c8[_0x4343('0x1')]||'';this['zone']=_0x2271c8[_0x4343('0x2')]||'';this[_0x4343('0x3')]=_0x2271c8['clientId']||'';this['clientSecret']=_0x2271c8[_0x4343('0x4')]||'';this['serverUrl']=_0x2271c8[_0x4343('0x5')]||'';this[_0x4343('0x6')]=_0x2271c8[_0x4343('0x6')]||'';this[_0x4343('0x7')]=_0x2271c8[_0x4343('0x7')]||'';this[_0x4343('0x8')]=_0x2271c8[_0x4343('0x8')]||{};}module['exports']=ZohoAccount;
\ No newline at end of file
index 3ec98d4..027d194 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2454=['Contact','phone','firstName','lastName','active','calleridnum','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','countmachineretry','callback','callbackat','recallme','ListId','UserId','VoiceQueueId','originatecalleridnum','prototype','getCaller','\x22%s\x22\x20<%s>','number','exports','util','lodash','moment','isNil','string','idContact','name','type','campaigntype','queue','dialAnswer','membername','Agent','channelAgent','format','SIP/%s','calleridname'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0x2454,0xcb));var _0x4245=function(_0x4ac1a1,_0x1b823c){_0x4ac1a1=_0x4ac1a1-0x0;var _0x357b76=_0x2454[_0x4ac1a1];return _0x357b76;};'use strict';var util=require(_0x4245('0x0'));var _=require(_0x4245('0x1'));var moment=require(_0x4245('0x2'));function checkNameSurname(_0xc7794a,_0x52d4d9,_0x5e7859){var _0x51eed8='';if(!_[_0x4245('0x3')](_0x52d4d9)&&_0x4245('0x4')===typeof _0x52d4d9){_0x51eed8+=_0x52d4d9;}if(!_['isNil'](_0x5e7859)&&'string'===typeof _0x5e7859){_0x51eed8+='\x20'+_0x5e7859;}if(_0x51eed8!==''){return _0x51eed8;}return _0xc7794a;}function Action(_0x4a81ec,_0x9a3995,_0x4baa7d,_0x44a6ed,_0x35b823){this['uniqueid']=_0x4baa7d||undefined;this[_0x4245('0x5')]=_0x4a81ec['id'];this['queue']=_0x9a3995[_0x4245('0x6')];this[_0x4245('0x7')]=_0x9a3995[_0x4245('0x7')];this[_0x4245('0x8')]=_0x4245('0x9');this[_0x4245('0xa')]=![];this[_0x4245('0xb')]=_[_0x4245('0x3')](_0x4a81ec['Agent'])?undefined:_0x4a81ec[_0x4245('0xc')][_0x4245('0x6')];this[_0x4245('0xd')]=this[_0x4245('0xb')]?util[_0x4245('0xe')](_0x4245('0xf'),this['membername']):_0x44a6ed||undefined;this[_0x4245('0x10')]=checkNameSurname(_0x4a81ec[_0x4245('0x11')][_0x4245('0x12')],_0x4a81ec[_0x4245('0x11')][_0x4245('0x13')],_0x4a81ec['Contact'][_0x4245('0x14')]);this[_0x4245('0x15')]=_0x4a81ec['active']||![];this[_0x4245('0x16')]=_0x4a81ec[_0x4245('0x11')][_0x4245('0x12')];this[_0x4245('0x17')]=_0x4a81ec[_0x4245('0x17')];this['countbusyretry']=_0x4a81ec[_0x4245('0x18')]||0x0;this[_0x4245('0x19')]=_0x4a81ec[_0x4245('0x19')]||0x0;this[_0x4245('0x1a')]=_0x4a81ec['countnoanswerretry']||0x0;this['countglobal']=(_0x4a81ec[_0x4245('0x18')]||0x0)+(_0x4a81ec[_0x4245('0x19')]||0x0)+(_0x4a81ec[_0x4245('0x1a')]||0x0)+(_0x4a81ec[_0x4245('0x1b')]||0x0)+(_0x4a81ec[_0x4245('0x1c')]||0x0)+(_0x4a81ec[_0x4245('0x1d')]||0x0)+(_0x4a81ec['countmachineretry']||0x0)+(_0x4a81ec[_0x4245('0x1e')]||0x0);this[_0x4245('0x1b')]=_0x4a81ec[_0x4245('0x1b')]||0x0;this[_0x4245('0x1c')]=_0x4a81ec[_0x4245('0x1c')]||0x0;this[_0x4245('0x1d')]=_0x4a81ec[_0x4245('0x1d')]||0x0;this['countmachineretry']=_0x4a81ec[_0x4245('0x1f')]||0x0;this['countagentrejectretry']=_0x4a81ec[_0x4245('0x1e')]||0x0;this['callback']=_0x4a81ec[_0x4245('0x20')];this['callbackuniqueid']=_0x4a81ec['callbackuniqueid'];this[_0x4245('0x21')]=_0x4a81ec[_0x4245('0x21')];this['recallme']=_0x4a81ec[_0x4245('0x22')];this['ContactId']=_0x4a81ec['ContactId'];this[_0x4245('0x23')]=_0x4a81ec[_0x4245('0x23')];this[_0x4245('0x24')]=_[_0x4245('0x3')](_0x4a81ec[_0x4245('0xc')])?_0x4a81ec[_0x4245('0x24')]:_0x4a81ec[_0x4245('0xc')]['id'];this[_0x4245('0x25')]=_0x4a81ec[_0x4245('0x25')];this[_0x4245('0x26')]='';this['originatecalleridname']='';}Action[_0x4245('0x27')][_0x4245('0x28')]=function(){return util[_0x4245('0xe')](_0x4245('0x29'),this[_0x4245('0x10')],this[_0x4245('0x2a')]);};module[_0x4245('0x2b')]=Action;
\ No newline at end of file
+var _0x287a=['membername','Agent','channelAgent','format','calleridname','Contact','phone','firstName','lastName','active','calleridnum','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','VoiceQueueId','originatecalleridnum','originatecalleridname','prototype','getCaller','\x22%s\x22\x20<%s>','number','exports','util','lodash','moment','isNil','string','idContact','queue','name','type','campaigntype','dialAnswer'];(function(_0x21ccf9,_0x4def5e){var _0x31c14c=function(_0x329fe4){while(--_0x329fe4){_0x21ccf9['push'](_0x21ccf9['shift']());}};_0x31c14c(++_0x4def5e);}(_0x287a,0x1b7));var _0xa287=function(_0x22a021,_0x2dd8cc){_0x22a021=_0x22a021-0x0;var _0x38f6d7=_0x287a[_0x22a021];return _0x38f6d7;};'use strict';var util=require(_0xa287('0x0'));var _=require(_0xa287('0x1'));var moment=require(_0xa287('0x2'));function checkNameSurname(_0x20cfe5,_0x2474a1,_0x318091){var _0x191177='';if(!_[_0xa287('0x3')](_0x2474a1)&&'string'===typeof _0x2474a1){_0x191177+=_0x2474a1;}if(!_[_0xa287('0x3')](_0x318091)&&_0xa287('0x4')===typeof _0x318091){_0x191177+='\x20'+_0x318091;}if(_0x191177!==''){return _0x191177;}return _0x20cfe5;}function Action(_0x5432ff,_0x2af677,_0xf3383f,_0x517a30,_0x124a07){this['uniqueid']=_0xf3383f||undefined;this[_0xa287('0x5')]=_0x5432ff['id'];this[_0xa287('0x6')]=_0x2af677[_0xa287('0x7')];this[_0xa287('0x8')]=_0x2af677['type'];this[_0xa287('0x9')]=_0xa287('0x6');this[_0xa287('0xa')]=![];this[_0xa287('0xb')]=_[_0xa287('0x3')](_0x5432ff[_0xa287('0xc')])?undefined:_0x5432ff['Agent'][_0xa287('0x7')];this[_0xa287('0xd')]=this[_0xa287('0xb')]?util[_0xa287('0xe')]('SIP/%s',this[_0xa287('0xb')]):_0x517a30||undefined;this[_0xa287('0xf')]=checkNameSurname(_0x5432ff[_0xa287('0x10')][_0xa287('0x11')],_0x5432ff[_0xa287('0x10')][_0xa287('0x12')],_0x5432ff[_0xa287('0x10')][_0xa287('0x13')]);this[_0xa287('0x14')]=_0x5432ff[_0xa287('0x14')]||![];this[_0xa287('0x15')]=_0x5432ff[_0xa287('0x10')][_0xa287('0x11')];this[_0xa287('0x16')]=_0x5432ff[_0xa287('0x16')];this[_0xa287('0x17')]=_0x5432ff[_0xa287('0x17')]||0x0;this[_0xa287('0x18')]=_0x5432ff[_0xa287('0x18')]||0x0;this[_0xa287('0x19')]=_0x5432ff['countnoanswerretry']||0x0;this['countglobal']=(_0x5432ff[_0xa287('0x17')]||0x0)+(_0x5432ff[_0xa287('0x18')]||0x0)+(_0x5432ff[_0xa287('0x19')]||0x0)+(_0x5432ff[_0xa287('0x1a')]||0x0)+(_0x5432ff[_0xa287('0x1b')]||0x0)+(_0x5432ff[_0xa287('0x1c')]||0x0)+(_0x5432ff[_0xa287('0x1d')]||0x0)+(_0x5432ff[_0xa287('0x1e')]||0x0);this[_0xa287('0x1a')]=_0x5432ff[_0xa287('0x1a')]||0x0;this['countdropretry']=_0x5432ff['countdropretry']||0x0;this['countabandonedretry']=_0x5432ff[_0xa287('0x1c')]||0x0;this[_0xa287('0x1d')]=_0x5432ff[_0xa287('0x1d')]||0x0;this[_0xa287('0x1e')]=_0x5432ff[_0xa287('0x1e')]||0x0;this[_0xa287('0x1f')]=_0x5432ff[_0xa287('0x1f')];this[_0xa287('0x20')]=_0x5432ff['callbackuniqueid'];this[_0xa287('0x21')]=_0x5432ff['callbackat'];this[_0xa287('0x22')]=_0x5432ff[_0xa287('0x22')];this[_0xa287('0x23')]=_0x5432ff['ContactId'];this[_0xa287('0x24')]=_0x5432ff['ListId'];this['UserId']=_[_0xa287('0x3')](_0x5432ff[_0xa287('0xc')])?_0x5432ff['UserId']:_0x5432ff[_0xa287('0xc')]['id'];this[_0xa287('0x25')]=_0x5432ff[_0xa287('0x25')];this[_0xa287('0x26')]='';this[_0xa287('0x27')]='';}Action[_0xa287('0x28')][_0xa287('0x29')]=function(){return util['format'](_0xa287('0x2a'),this[_0xa287('0xf')],this[_0xa287('0x2b')]);};module[_0xa287('0x2c')]=Action;
\ No newline at end of file
index 2bf7f62..c7fa81d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbf8=['dialCutDigit','substring','callerid','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','dialOriginateCallerIdNumber','extractCalleridName','originatecalleridnum','extractCalleridNumber','addVariables','merge','starttime','Action','variablesAction','channelAgent','destconnectedlinenum','calleridnum','user:%s','accountcode','[originated][increment]','OriginateError','[originateFailure][logOriginateFailure]','actionid','lookAgent','logLookAgent','clone','response','custom:agentringnoanswer','rejected','callProgressDetectingAgent','[callProgressDetectingAgent][logAnswer]','[syncHangup][talking]','cause','statedesc','dialQueueProject','channelstate','transfer','[syncHangup][talking][cause]','syncDialEnd','destuniqueid','syncHangupRequest','addVariable','variables','syncVarSet','filterKey','keys','variable','value','[syncVarSet][Preview]','transfertargetlinkedid','transfererlinkedid','util','bluebird','uuid','md5','../../../config/logger','preview','../ami','./rpcDb','./util/util','redis','socket.io-emitter','prototype','enqueue','tail','sequence','voiceQueues','trunks','agents','clockClearZombieChannels','originateresponse','syncOriginateResponse','hangup','syncHangup','bind','dialend','newexten','syncNewExten','varset','syncAttendedTransfer','syncBlindTransfer','emit','type','name','strategy','answered','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','unmanaged','abandoned','waiting','loggedInDb','dialActive','dialOriginateCallerIdName','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','startProgressive','Trunk','active','Interval','stringify','format','voice_queue:save','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice:queue:%s','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','available','paused','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','IS_DISACTIVED','\x20is\x20disactive','loopCampaigns','syncCampaigns','booked','outbound','clearZombieChannels','hasOwnProperty','dialMethod','setMessage','recallMe','clearZombieChannel','actions','[clearZombieChannels][talking]','Queue','queue','originated:\x20','pTalking:\x20','campaignsPreview','pick','UserId','VoiceQueueId','ListId','status','channel','catch','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','dialAnswer','decrementTalkink','loggerError','[Dialer][checkChannel][pTalking][Preview]','info','[action]','getContactRecallMe','agentReadyId','then','isNil','length','Agent','voicePause','logger2','[RecallMe]','disableContact','YYYY-MM-DD\x20HH:mm:ss','logCustomer','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','[HistoryRecallClose]','createCustomerFinal','[getContactRecallMe]','IsNotLoggedIn','isActive','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','countnosuchnumberretry','totalGlobal','NoSuchNumber','custom:agentnosuchnumber','buildObj','dialGlobalMaxRetry','cloneAction','Global','dialNoSuchNumberMaxRetry','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberRetryFrequency','unlockAgent','activeContact','ANSWER','responsetime','answertime','[syncHangup][talking][increment]','custom:agentconnect','custom:agentConnectPreview','complete','total','[16]','Answer','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','talktime','[syncHangup][talking][decrement]','uniqueid','BUSY','countbusyretry','countglobal','Busy','custom:agentbusy','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','[callProgressDetectingCustomer][logBusy]','rescheduleContact','scheduledAt','dialBusyRetryFrequency','NOANSWER','NoAnswer','custom:agentnoanswer','noanswer','[callProgressDetectingCustomer][logNoAnswer]','[callProgressDetectingCustomer][logNoAnswerGlobal]','countnoanswerretry','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','CONGESTION','countcongestionretry','Congestion','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','[callProgressDetectingCustomer][logCongestion]','countagentrejectretry','AgentReject','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectMaxRetry','ABANDONED','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety','dialAbandonedRetryFrequency','countmachineretry','amd','[callProgressDetectingCustomer][hangupInAMD]','linkedid','custom:amd','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','cause-txt','dialstatus','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','\x20Queue','destlinkedid','isUndefined','object','reason','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','logAgent','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','checkInBlack','Contact','phone','Contact\x20is\x20undefined','isEmpty','execCall','[Preview][execCall][success]','Queue:\x20','idContact','custom:agentcalled','Calling','[Preview][execCall][failure]','logBlacklist','[Blacklist][error]','Contact\x20in\x20black\x20List','SIP/%s','reachable','run','execRun','unlock','unlockContact','recallme','validateContact','isValid','checkIsBlackList','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][getContactPreview]','[Preview][validateContact][Empty\x20Contact]','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','[Preview][validateContact][Trunk\x20not\x20work]','campaign\x20Name:\x20','\x20Trunk\x20Backup\x20is\x20not\x20active','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','SIP/%s/%s%s','trim'];(function(_0x256973,_0x3cdbd4){var _0x4bf1d8=function(_0x4b6fb6){while(--_0x4b6fb6){_0x256973['push'](_0x256973['shift']());}};_0x4bf1d8(++_0x3cdbd4);}(_0xdbf8,0x18a));var _0x8dbf=function(_0x96d481,_0x25f047){_0x96d481=_0x96d481-0x0;var _0x181a2a=_0xdbf8[_0x96d481];return _0x181a2a;};'use strict';var util=require(_0x8dbf('0x0'));var _=require('lodash');var BPromise=require(_0x8dbf('0x1'));var uuid=require(_0x8dbf('0x2'));var moment=require('moment');var md5=require(_0x8dbf('0x3'));var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require(_0x8dbf('0x4'))(_0x8dbf('0x5'));var loggerAction=require(_0x8dbf('0x4'))('actionPreview');var ami=require(_0x8dbf('0x6'));var rpcDb=require(_0x8dbf('0x7'));var Action=require('./action');var ut=require(_0x8dbf('0x8'));config[_0x8dbf('0x9')]=_['defaults'](config[_0x8dbf('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x8dbf('0xa'))(new Redis(config['redis']));var Sequence=function(){};Sequence[_0x8dbf('0xb')][_0x8dbf('0xc')]=function(_0x4b359f){this[_0x8dbf('0xd')]=this[_0x8dbf('0xd')]?this['tail']['finally'](_0x4b359f):_0x4b359f();};function Preview(_0x34be6a){this[_0x8dbf('0xe')]=new Sequence();this['campaignsPreview']=_0x34be6a[_0x8dbf('0xf')];this['trunks']=_0x34be6a[_0x8dbf('0x10')];this['actions']={};this['agents']=_0x34be6a[_0x8dbf('0x11')];this[_0x8dbf('0x12')]=0x0;ami['on'](_0x8dbf('0x13'),this[_0x8dbf('0x14')]['bind'](this));ami['on'](_0x8dbf('0x15'),this[_0x8dbf('0x16')][_0x8dbf('0x17')](this));ami['on']('hanguprequest',this['syncHangupRequest'][_0x8dbf('0x17')](this));ami['on'](_0x8dbf('0x18'),this['syncDialEnd'][_0x8dbf('0x17')](this));ami['on'](_0x8dbf('0x19'),this[_0x8dbf('0x1a')]['bind'](this));ami['on'](_0x8dbf('0x1b'),this['syncVarSet'][_0x8dbf('0x17')](this));ami['on']('attendedtransfer',this[_0x8dbf('0x1c')][_0x8dbf('0x17')](this));ami['on']('blindtransfer',this[_0x8dbf('0x1d')][_0x8dbf('0x17')](this));this['loopCampaigns'](this['campaignsPreview']);}function emit(_0x246a6b,_0x47f610,_0x41b27d){io['to'](_0x246a6b)[_0x8dbf('0x1e')](_0x47f610,_0x41b27d);}function emitCampaignPreview(_0x1be09f){if(_0x1be09f[_0x8dbf('0x1f')]==='outbound'){var _0x48fb12={'id':_0x1be09f['id'],'name':_0x1be09f[_0x8dbf('0x20')],'strategy':_0x1be09f[_0x8dbf('0x21')],'answered':_0x1be09f[_0x8dbf('0x22')],'available':_0x1be09f['available'],'loggedIn':_0x1be09f[_0x8dbf('0x23')],'pTalking':_0x1be09f[_0x8dbf('0x24')],'sumBillable':_0x1be09f[_0x8dbf('0x25')],'sumDuration':_0x1be09f[_0x8dbf('0x26')],'sumHoldTime':_0x1be09f[_0x8dbf('0x27')]||0x0,'talking':_0x1be09f[_0x8dbf('0x28')],'total':_0x1be09f['total'],'type':_0x1be09f['type'],'unmanaged':_0x1be09f[_0x8dbf('0x29')],'abandoned':_0x1be09f[_0x8dbf('0x2a')],'waiting':_0x1be09f[_0x8dbf('0x2b')],'loggedInDb':_0x1be09f[_0x8dbf('0x2c')],'dialActive':_0x1be09f[_0x8dbf('0x2d')],'dialMethod':_0x1be09f['dialMethod'],'dialOriginateCallerIdName':_0x1be09f[_0x8dbf('0x2e')],'dialOriginateCallerIdNumber':_0x1be09f['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x1be09f[_0x8dbf('0x2f')],'dialPrefix':_0x1be09f[_0x8dbf('0x30')],'outboundAnswerAgiCallsDay':_0x1be09f[_0x8dbf('0x31')],'outboundAnswerCallsDay':_0x1be09f[_0x8dbf('0x32')],'outboundBlacklistCallsDay':_0x1be09f[_0x8dbf('0x33')],'outboundBusyCallsDay':_0x1be09f[_0x8dbf('0x34')],'outboundCongestionCallsDay':_0x1be09f[_0x8dbf('0x35')],'outboundDropCallsDayACS':_0x1be09f[_0x8dbf('0x36')],'outboundDropCallsDayCallersExit':_0x1be09f['outboundDropCallsDayCallersExit'],'outboundDropCallsDayTimeout':_0x1be09f['outboundDropCallsDayTimeout'],'outboundNoAnswerCallsDay':_0x1be09f[_0x8dbf('0x37')],'outboundNoSuchCallsDay':_0x1be09f[_0x8dbf('0x38')],'outboundOriginateFailureCallsDay':_0x1be09f[_0x8dbf('0x39')],'outboundReCallsDay':_0x1be09f[_0x8dbf('0x3a')],'outboundRejectCallsDay':_0x1be09f[_0x8dbf('0x3b')],'outboundUnknownCallsDay':_0x1be09f[_0x8dbf('0x3c')],'outboundAbandonedCallsDay':_0x1be09f[_0x8dbf('0x3d')],'predictiveIntervalAnsweredCalls':_0x1be09f['predictiveIntervalAnsweredCalls'],'predictiveIntervalAvgHoldtime':_0x1be09f['predictiveIntervalAvgHoldtime'],'predictiveIntervalAvgTalktime':_0x1be09f[_0x8dbf('0x3e')],'predictiveIntervalDroppedCallsCallersExit':_0x1be09f[_0x8dbf('0x3f')],'predictiveIntervalDroppedCallsTimeout':_0x1be09f[_0x8dbf('0x40')],'predictiveIntervalErlangCalls':_0x1be09f[_0x8dbf('0x41')],'predictiveIntervalErlangCallsDroppedCalls':_0x1be09f['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x1be09f[_0x8dbf('0x42')],'predictiveIntervalMultiplicativeFactor':_0x1be09f[_0x8dbf('0x43')],'predictiveIntervalPauses':_0x1be09f[_0x8dbf('0x44')],'predictiveIntervalAvailable':_0x1be09f[_0x8dbf('0x45')],'predictiveIntervalTotalCalls':_0x1be09f[_0x8dbf('0x46')],'message':_0x1be09f[_0x8dbf('0x47')],'originated':_0x1be09f[_0x8dbf('0x48')],'erlangCalls':_0x1be09f[_0x8dbf('0x49')],'erlangCallToSecond':_0x1be09f[_0x8dbf('0x4a')],'erlangAbandonmentRate':_0x1be09f[_0x8dbf('0x4b')],'erlangBusyFactor':_0x1be09f['erlangBusyFactor'],'startPredictive':_0x1be09f['startPredictive'],'startProgressive':_0x1be09f[_0x8dbf('0x4c')]};if(_0x1be09f[_0x8dbf('0x4d')]){_0x48fb12[_0x8dbf('0x4d')]={'id':_0x1be09f[_0x8dbf('0x4d')]['id'],'name':_0x1be09f[_0x8dbf('0x4d')][_0x8dbf('0x20')],'active':_0x1be09f['Trunk'][_0x8dbf('0x4e')],'callerid':_0x1be09f['Trunk']['callerid']};}if(_0x1be09f['Interval']){_0x48fb12[_0x8dbf('0x4f')]={'id':_0x1be09f[_0x8dbf('0x4f')]['id'],'name':_0x1be09f[_0x8dbf('0x4f')][_0x8dbf('0x20')]};}var _0x5354ca=md5(JSON[_0x8dbf('0x50')](_0x48fb12));if(_0x1be09f[_0x8dbf('0x3')]!==_0x5354ca){_0x1be09f[_0x8dbf('0x3')]=_0x5354ca;emit(util[_0x8dbf('0x51')]('voice:queue:%s',_0x48fb12[_0x8dbf('0x20')]),_0x8dbf('0x52'),_0x48fb12);}}}function emitVoiceQueueChannelRemove(_0x278477){logger['info'](_0x8dbf('0x53'),JSON[_0x8dbf('0x50')](_0x278477));emit(util[_0x8dbf('0x51')](_0x8dbf('0x54'),_0x278477[_0x8dbf('0x20')]),_0x8dbf('0x55'),_0x278477);io[_0x8dbf('0x1e')](_0x8dbf('0x56'),_0x278477);}function notSendMessagesQueue(_0x2df347){if(_0x2df347[_0x8dbf('0x57')]){if(_0x2df347[_0x8dbf('0x48')]===0x0&&_0x2df347['pTalking']===0x0){_0x2df347[_0x8dbf('0x57')]=![];_0x2df347[_0x8dbf('0x58')]=0x0;_0x2df347[_0x8dbf('0x59')]=0x0;_0x2df347[_0x8dbf('0x47')]=_0x8dbf('0x5a');ut[_0x8dbf('0x5b')](_0x8dbf('0x5c'),_0x2df347[_0x8dbf('0x20')]+_0x8dbf('0x5d'));}else{_0x2df347[_0x8dbf('0x47')]=_0x8dbf('0x5e');ut['logger'](_0x8dbf('0x5c'),_0x2df347['name']+_0x8dbf('0x5f'));}emitCampaignPreview(_0x2df347);}}Preview[_0x8dbf('0xb')][_0x8dbf('0x60')]=function(){var _0x3b7bb5=this;setInterval(function(){_0x3b7bb5[_0x8dbf('0x61')]();},0x7cf);};Preview[_0x8dbf('0xb')][_0x8dbf('0x61')]=function(){var _0x24856f=this['campaignsPreview'];this['clockClearZombieChannels']+=0x1;for(var _0x3b3d10 in _0x24856f){if(_0x24856f['hasOwnProperty'](_0x3b3d10)&&(_0x24856f[_0x3b3d10]['dialMethod']===_0x8dbf('0x5')||_0x24856f[_0x3b3d10]['dialMethod']===_0x8dbf('0x62'))&&_0x24856f[_0x3b3d10][_0x8dbf('0x1f')]===_0x8dbf('0x63')){if(this[_0x8dbf('0x12')]>0x7){this[_0x8dbf('0x12')]=0x0;this[_0x8dbf('0x64')]();}}if(_0x24856f[_0x8dbf('0x65')](_0x3b3d10)&&_0x24856f[_0x3b3d10][_0x8dbf('0x66')]==='preview'&&_0x24856f[_0x3b3d10][_0x8dbf('0x1f')]===_0x8dbf('0x63')){if(_0x24856f[_0x3b3d10]['dialActive']){this[_0x8dbf('0x67')](_0x24856f[_0x3b3d10]);this[_0x8dbf('0x68')](_0x24856f[_0x3b3d10]);}else{notSendMessagesQueue(_0x24856f[_0x3b3d10]);}}}};Preview[_0x8dbf('0xb')][_0x8dbf('0x69')]=function(_0x340389){var _0x4b7773=this;this[_0x8dbf('0xe')][_0x8dbf('0xc')](function(){if(!_['isNil'](_0x4b7773[_0x8dbf('0x6a')][_0x340389])){loggerAction['info'](_0x8dbf('0x6b'),_0x340389,_0x8dbf('0x6c'),_0x4b7773[_0x8dbf('0x6a')][_0x340389][_0x8dbf('0x6d')],_0x8dbf('0x6e'),JSON[_0x8dbf('0x50')](_0x4b7773['campaignsPreview'][_0x4b7773[_0x8dbf('0x6a')][_0x340389][_0x8dbf('0x6d')]][_0x8dbf('0x48')]),_0x8dbf('0x6f'),JSON[_0x8dbf('0x50')](_0x4b7773[_0x8dbf('0x70')][_0x4b7773[_0x8dbf('0x6a')][_0x340389][_0x8dbf('0x6d')]][_0x8dbf('0x24')]),JSON['stringify'](_0x4b7773['actions'][_0x340389]['dialAnswer']),JSON['stringify'](_[_0x8dbf('0x71')](_0x4b7773[_0x8dbf('0x6a')][_0x340389],['contactId',_0x8dbf('0x72'),_0x8dbf('0x73'),_0x8dbf('0x74')])));return ami['Action']({'action':_0x8dbf('0x75'),'channel':_0x4b7773[_0x8dbf('0x6a')][_0x340389][_0x8dbf('0x76')]})[_0x8dbf('0x77')](function(_0x58604c){if(_0x58604c[_0x8dbf('0x47')]===_0x8dbf('0x78')){setTimeout(function(){if(_0x4b7773['actions'][_0x340389]){ut[_0x8dbf('0x79')](_0x4b7773['campaignsPreview'][_0x4b7773[_0x8dbf('0x6a')][_0x340389]['queue']],_0x8dbf('0x7a'));if(_0x4b7773[_0x8dbf('0x6a')][_0x340389][_0x8dbf('0x7b')]===!![]){ut[_0x8dbf('0x7c')](_0x4b7773[_0x8dbf('0x70')][_0x4b7773[_0x8dbf('0x6a')][_0x340389]['queue']],'[clearZombieChannel]');ut[_0x8dbf('0x7d')](_0x8dbf('0x7e')+_0x340389,_0x4b7773[_0x8dbf('0x6a')][_0x340389][_0x8dbf('0x6d')]);}ut['loggerError']('[Dialer][checkChannel][Preview]'+_0x340389,_0x4b7773[_0x8dbf('0x6a')][_0x340389]['queue']);delete _0x4b7773[_0x8dbf('0x6a')][_0x340389];}},0x2328);}});}});};Preview['prototype'][_0x8dbf('0x64')]=function(){var _0x468303=this;loggerAction[_0x8dbf('0x7f')](_0x8dbf('0x80'),_['size'](this[_0x8dbf('0x6a')]));for(var _0x3dc8f1 in this[_0x8dbf('0x6a')]){if(_0x468303[_0x8dbf('0x6a')][_0x8dbf('0x65')](_0x3dc8f1)){_0x468303[_0x8dbf('0x69')](_0x3dc8f1);}}};Preview[_0x8dbf('0xb')][_0x8dbf('0x68')]=function(_0x5a88b3){var _0x3d4bca=this;rpcDb[_0x8dbf('0x81')](_0x5a88b3['id'],ut[_0x8dbf('0x82')](this[_0x8dbf('0x11')]))[_0x8dbf('0x83')](function(_0x4a9669){if(!_[_0x8dbf('0x84')](_0x4a9669)){for(var _0x2fc296=0x0;_0x2fc296<_0x4a9669[_0x8dbf('0x85')];_0x2fc296+=0x1){if(ut['getDiff'](_0x4a9669[_0x2fc296]['scheduledat'])<_0x5a88b3['dialRecallMeTimeout']*0x3c){if(_0x4a9669[_0x2fc296]['Agent']&&!_0x4a9669[_0x2fc296][_0x8dbf('0x86')][_0x8dbf('0x87')]){_0x3d4bca['run'](_0x4a9669[_0x2fc296]['id'])[_0x8dbf('0x83')](ut[_0x8dbf('0x88')]('[RecallMe]'))[_0x8dbf('0x77')](ut[_0x8dbf('0x88')](_0x8dbf('0x89')));}else{rpcDb[_0x8dbf('0x8a')](_0x4a9669[_0x2fc296]['id']);}}else{var _0x1d02d4=new Action(_0x4a9669[_0x2fc296],_0x5a88b3);_0x1d02d4['starttime']=moment()[_0x8dbf('0x51')](_0x8dbf('0x8b'));_0x5a88b3[_0x8dbf('0x3a')]+=0x1;ut[_0x8dbf('0x8c')](_0x1d02d4,0x17,_0x8dbf('0x8d'));if(_0x5a88b3[_0x8dbf('0x8e')]){rpcDb[_0x8dbf('0x8f')](ut[_0x8dbf('0x90')](_0x4a9669[_0x2fc296]));rpcDb[_0x8dbf('0x91')](_0x1d02d4,_0x8dbf('0x92'));}else{ut[_0x8dbf('0x8c')](_0x1d02d4,0x16,'RecallFailedTimeout');rpcDb[_0x8dbf('0x91')](_0x1d02d4,_0x8dbf('0x93'));rpcDb[_0x8dbf('0x94')](_0x1d02d4,_0x8dbf('0x93'));}}}}})['catch'](ut[_0x8dbf('0x88')](_0x8dbf('0x95')));};Preview['prototype'][_0x8dbf('0x67')]=function(_0x1d813b){_0x1d813b[_0x8dbf('0x57')]=!![];if(ut[_0x8dbf('0x96')](_0x1d813b['loggedIn'])){_0x1d813b[_0x8dbf('0x47')]='AGENTS_NOT_LOGGED';}else if(!ut[_0x8dbf('0x97')](_0x1d813b[_0x8dbf('0x2d')])){_0x1d813b[_0x8dbf('0x47')]=_0x8dbf('0x5a');}else if(!this['isTrunkReachable'](_0x1d813b['Trunk'])){if(!this[_0x8dbf('0x98')](_0x1d813b[_0x8dbf('0x99')])){_0x1d813b[_0x8dbf('0x47')]=_0x8dbf('0x9a');}else{_0x1d813b[_0x8dbf('0x47')]=_0x8dbf('0x9b');}}else{_0x1d813b['message']=_0x8dbf('0x9b');}emitCampaignPreview(_0x1d813b);};Preview[_0x8dbf('0xb')][_0x8dbf('0x9c')]=function(_0x3c1580,_0x4a267c,_0x556d21){var _0x430649=this;var _0x3c33a3=this[_0x8dbf('0x6a')][_0x4a267c];var _0x1f202f=this[_0x8dbf('0x70')][_0x3c33a3['queue']];var _0x55b2b7;if(_0x1f202f){switch(_0x556d21){case'1':_0x1f202f[_0x8dbf('0x38')]+=0x1;_0x3c33a3[_0x8dbf('0x9d')]+=0x1;_0x3c33a3['countglobal']=ut[_0x8dbf('0x9e')](_0x3c33a3);ut[_0x8dbf('0x8c')](_0x3c33a3,0x0,_0x8dbf('0x9f'));ami['emit'](_0x8dbf('0xa0'),ut[_0x8dbf('0xa1')](_0x3c33a3,'nosuchnumber'));rpcDb[_0x8dbf('0x91')](_0x3c33a3,'[callProgressDetectingCustomer][logNoSuch]');if(ut[_0x8dbf('0x9e')](_0x3c33a3)>=_0x1f202f[_0x8dbf('0xa2')]){_0x55b2b7=ut[_0x8dbf('0xa3')](_0x3c33a3,0xf,_0x8dbf('0xa4'));rpcDb[_0x8dbf('0x94')](_0x55b2b7,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{if(_0x3c33a3['countnosuchnumberretry']>=_0x1f202f[_0x8dbf('0xa5')]){rpcDb[_0x8dbf('0x94')](_0x3c33a3,_0x8dbf('0xa6'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x3c33a3,_0x8dbf('0x9d'),_0x1f202f[_0x8dbf('0xa7')]),_0x3c33a3[_0x8dbf('0xa8')],_0x3c33a3[_0x8dbf('0xa9')]);}}delete this[_0x8dbf('0x6a')][_0x3c1580['linkedid']];break;case _0x8dbf('0xaa'):var _0x22a722=moment()[_0x8dbf('0x51')](_0x8dbf('0x8b'));_0x3c33a3[_0x8dbf('0xab')]=_0x22a722;_0x3c33a3[_0x8dbf('0xac')]=_0x22a722;_0x3c33a3[_0x8dbf('0x7b')]=!![];_0x1f202f['pTalking']+=0x1;logger['info'](_0x8dbf('0xad'),_0x3c33a3['uniqueid'],'\x20Queue',_0x1f202f[_0x8dbf('0x20')],_0x8dbf('0x6f'),_0x1f202f[_0x8dbf('0x24')]);ami[_0x8dbf('0x1e')](_0x8dbf('0xae'),ut[_0x8dbf('0xa1')](_0x3c33a3,'connect',this['campaignsPreview'][_0x3c33a3['queue']]));if(_0x1f202f['acw']){ami[_0x8dbf('0x1e')](_0x8dbf('0xaf'),ut['buildAcw'](_0x3c33a3));}break;case'16':ami[_0x8dbf('0x1e')]('custom:agentcomplete',ut[_0x8dbf('0xa1')](_0x3c33a3,_0x8dbf('0xb0'),this[_0x8dbf('0x70')][_0x3c33a3[_0x8dbf('0x6d')]]));emitVoiceQueueChannelRemove(ut[_0x8dbf('0xa1')](_0x3c33a3,_0x8dbf('0xb0')));_0x1f202f['outboundAnswerCallsDay']+=0x1;_0x1f202f[_0x8dbf('0xb1')]+=0x1;_0x1f202f[_0x8dbf('0x22')]+=0x1;ut['decrementTalkink'](_0x1f202f,_0x8dbf('0xb2'));_0x3c33a3['countglobal']=ut[_0x8dbf('0x9e')](_0x3c33a3);ut[_0x8dbf('0x8c')](_0x3c33a3,0x4,_0x8dbf('0xb3'));rpcDb['createCustomerHistory'](_0x3c33a3,'[callProgressDetectingCustomer][logAnswer]');rpcDb[_0x8dbf('0x94')](_0x3c33a3,_0x8dbf('0xb4'));rpcDb[_0x8dbf('0xb5')](_0x3c33a3);_0x1f202f[_0x8dbf('0x26')]+=_0x3c33a3[_0x8dbf('0xb6')];_0x1f202f[_0x8dbf('0x25')]+=_0x3c33a3[_0x8dbf('0xb6')];logger[_0x8dbf('0x7f')](_0x8dbf('0xb7'),_0x3c33a3[_0x8dbf('0xb8')],'\x20Queue',_0x1f202f['name'],_0x8dbf('0x6f'),_0x1f202f[_0x8dbf('0x24')]);delete this['actions'][_0x3c1580['linkedid']];break;case _0x8dbf('0xb9'):_0x1f202f[_0x8dbf('0x34')]+=0x1;_0x3c33a3[_0x8dbf('0xba')]+=0x1;_0x3c33a3[_0x8dbf('0xbb')]=ut[_0x8dbf('0x9e')](_0x3c33a3);ut[_0x8dbf('0x8c')](_0x3c33a3,0x5,_0x8dbf('0xbc'));ami[_0x8dbf('0x1e')](_0x8dbf('0xbd'),ut[_0x8dbf('0xa1')](_0x3c33a3,'busy'));rpcDb[_0x8dbf('0x91')](_0x3c33a3,'[callProgressDetectingCustomer][logBusy]');if(ut['totalGlobal'](_0x3c33a3)>=_0x1f202f[_0x8dbf('0xa2')]){_0x55b2b7=ut[_0x8dbf('0xa3')](_0x3c33a3,0xf,_0x8dbf('0xa4'));rpcDb['createCustomerFinal'](_0x55b2b7,_0x8dbf('0xbe'));}else{if(_0x3c33a3[_0x8dbf('0xba')]>=_0x1f202f[_0x8dbf('0xbf')]){rpcDb[_0x8dbf('0x94')](_0x3c33a3,_0x8dbf('0xc0'));}else{rpcDb[_0x8dbf('0xc1')](ut[_0x8dbf('0xc2')](_0x3c33a3,_0x8dbf('0xba'),_0x1f202f[_0x8dbf('0xc3')]),_0x3c33a3[_0x8dbf('0xa8')],_0x3c33a3['activeContact']);}}break;case _0x8dbf('0xc4'):_0x1f202f[_0x8dbf('0x37')]+=0x1;_0x3c33a3['countnoanswerretry']+=0x1;_0x3c33a3[_0x8dbf('0xbb')]=ut[_0x8dbf('0x9e')](_0x3c33a3);ut[_0x8dbf('0x8c')](_0x3c33a3,0x3,_0x8dbf('0xc5'));ami[_0x8dbf('0x1e')](_0x8dbf('0xc6'),ut[_0x8dbf('0xa1')](_0x3c33a3,_0x8dbf('0xc7')));rpcDb[_0x8dbf('0x91')](_0x3c33a3,_0x8dbf('0xc8'));if(ut[_0x8dbf('0x9e')](_0x3c33a3)>=_0x1f202f[_0x8dbf('0xa2')]){_0x55b2b7=ut['cloneAction'](_0x3c33a3,0xf,_0x8dbf('0xa4'));rpcDb[_0x8dbf('0x94')](_0x55b2b7,_0x8dbf('0xc9'));}else{if(_0x3c33a3[_0x8dbf('0xca')]>=_0x1f202f[_0x8dbf('0xcb')]){rpcDb['createCustomerFinal'](_0x3c33a3,_0x8dbf('0xc8'));}else{rpcDb[_0x8dbf('0xc1')](ut[_0x8dbf('0xc2')](_0x3c33a3,_0x8dbf('0xca'),_0x1f202f[_0x8dbf('0xcc')]),_0x3c33a3['unlockAgent'],_0x3c33a3[_0x8dbf('0xa9')]);}}break;case _0x8dbf('0xcd'):_0x1f202f[_0x8dbf('0x35')]+=0x1;_0x3c33a3[_0x8dbf('0xce')]+=0x1;_0x3c33a3['countglobal']=ut['totalGlobal'](_0x3c33a3);ut[_0x8dbf('0x8c')](_0x3c33a3,0x8,_0x8dbf('0xcf'));ami[_0x8dbf('0x1e')](_0x8dbf('0xd0'),ut[_0x8dbf('0xa1')](_0x3c33a3,_0x8dbf('0xd1')));rpcDb[_0x8dbf('0x91')](_0x3c33a3,'[callProgressDetectingCustomer][logCongestion]');if(ut[_0x8dbf('0x9e')](_0x3c33a3)>=_0x1f202f[_0x8dbf('0xa2')]){_0x55b2b7=ut[_0x8dbf('0xa3')](_0x3c33a3,0xf,_0x8dbf('0xa4'));rpcDb[_0x8dbf('0x94')](_0x55b2b7,_0x8dbf('0xd2'));}else{if(_0x3c33a3[_0x8dbf('0xce')]>=_0x1f202f[_0x8dbf('0xd3')]){rpcDb[_0x8dbf('0x94')](_0x3c33a3,_0x8dbf('0xd4'));}else{rpcDb[_0x8dbf('0xc1')](ut['scheduledAt'](_0x3c33a3,_0x8dbf('0xce'),_0x1f202f[_0x8dbf('0xc3')]),_0x3c33a3[_0x8dbf('0xa8')],_0x3c33a3[_0x8dbf('0xa9')]);}}break;case'CANCEL':_0x1f202f[_0x8dbf('0x3b')]+=0x1;_0x3c33a3[_0x8dbf('0xd5')]+=0x1;_0x3c33a3[_0x8dbf('0xbb')]=ut[_0x8dbf('0x9e')](_0x3c33a3);ut[_0x8dbf('0x8c')](_0x3c33a3,0x14,_0x8dbf('0xd6'));ami[_0x8dbf('0x1e')](_0x8dbf('0xd7'),ut[_0x8dbf('0xa1')](_0x3c33a3,_0x8dbf('0xd8')));rpcDb[_0x8dbf('0x91')](_0x3c33a3,_0x8dbf('0xd9'));if(ut['totalGlobal'](_0x3c33a3)>=_0x1f202f[_0x8dbf('0xa2')]){_0x55b2b7=ut['cloneAction'](_0x3c33a3,0x14,_0x8dbf('0xd6'));rpcDb[_0x8dbf('0x94')](_0x55b2b7,_0x8dbf('0xda'));}else{if(_0x3c33a3[_0x8dbf('0xd5')]>=_0x1f202f[_0x8dbf('0xdb')]){rpcDb[_0x8dbf('0x94')](_0x3c33a3,_0x8dbf('0xda'));}else{rpcDb[_0x8dbf('0xc1')](ut[_0x8dbf('0xc2')](_0x3c33a3,_0x8dbf('0xd5'),_0x1f202f['dialAgentRejectRetryFrequency']),_0x3c33a3[_0x8dbf('0xa8')],_0x3c33a3[_0x8dbf('0xa9')]);}}break;case _0x8dbf('0xdc'):_0x1f202f[_0x8dbf('0x3d')]+=0x1;_0x3c33a3['countabandonedretry']+=0x1;_0x3c33a3[_0x8dbf('0xbb')]=ut[_0x8dbf('0x9e')](_0x3c33a3);ut['logCustomer'](_0x3c33a3,0xb,'Abandoned');rpcDb['createCustomerHistory'](_0x3c33a3,'[callProgressDetectingCustomer][logAbandoned]');if(ut['totalGlobal'](_0x3c33a3)>=_0x1f202f[_0x8dbf('0xa2')]){_0x55b2b7=ut['cloneAction'](_0x3c33a3,0xf,'Global');rpcDb['createCustomerFinal'](_0x55b2b7,_0x8dbf('0xdd'));}else{if(_0x3c33a3[_0x8dbf('0xde')]>=_0x1f202f[_0x8dbf('0xdf')]){rpcDb[_0x8dbf('0x94')](_0x3c33a3,_0x8dbf('0xdd'));}else{rpcDb[_0x8dbf('0xc1')](ut[_0x8dbf('0xc2')](_0x3c33a3,'countabandonedretry',_0x1f202f[_0x8dbf('0xe0')]),_0x3c33a3[_0x8dbf('0xa8')],_0x3c33a3['activeContact']);}}break;case'18':_0x1f202f[_0x8dbf('0x3c')]+=0x1;_0x3c33a3[_0x8dbf('0xe1')]+=0x1;_0x3c33a3[_0x8dbf('0xbb')]=ut['totalGlobal'](_0x3c33a3);ut[_0x8dbf('0x8c')](_0x3c33a3,0x12,_0x3c1580['cause-txt']||_0x3c1580['dialstatus']);ami[_0x8dbf('0x1e')]('custom:amd',ut[_0x8dbf('0xa1')](_0x3c33a3,_0x8dbf('0xe2')));rpcDb[_0x8dbf('0x91')](_0x3c33a3,_0x8dbf('0xe3'));if(ut[_0x8dbf('0x9e')](_0x3c33a3)>=_0x1f202f[_0x8dbf('0xa2')]){_0x55b2b7=ut[_0x8dbf('0xa3')](_0x3c33a3,0xf,'Global');rpcDb[_0x8dbf('0x94')](_0x55b2b7,_0x8dbf('0xe3'));}else{rpcDb['createCustomerFinal'](_0x3c33a3,_0x8dbf('0xe3'));}delete this[_0x8dbf('0x6a')][_0x3c1580[_0x8dbf('0xe4')]];break;case'19':_0x1f202f[_0x8dbf('0x3c')]+=0x1;_0x3c33a3[_0x8dbf('0xbb')]=ut[_0x8dbf('0x9e')](_0x3c33a3);ut['logCustomer'](_0x3c33a3,0x13,_0x3c1580['cause-txt']||_0x3c1580['dialstatus']);ami['emit'](_0x8dbf('0xe5'),ut[_0x8dbf('0xa1')](_0x3c33a3,_0x8dbf('0xe2')));rpcDb[_0x8dbf('0x91')](_0x3c33a3,_0x8dbf('0xe6'));if(ut[_0x8dbf('0x9e')](_0x3c33a3)>=_0x1f202f[_0x8dbf('0xa2')]){_0x55b2b7=ut[_0x8dbf('0xa3')](_0x3c33a3,0xf,'Global');rpcDb[_0x8dbf('0x94')](_0x55b2b7,_0x8dbf('0xe6'));}else{rpcDb[_0x8dbf('0x94')](_0x3c33a3,_0x8dbf('0xe6'));}delete this['actions'][_0x3c1580[_0x8dbf('0xe4')]];break;default:if(_0x3c33a3[_0x8dbf('0x7b')]){ut[_0x8dbf('0x7c')](_0x1f202f,_0x8dbf('0xe7'));ut[_0x8dbf('0x7d')](_0x8dbf('0xe8')+_0x1f202f[_0x8dbf('0x20')],_0x3c1580);}_0x1f202f[_0x8dbf('0x3c')]+=0x1;_0x3c33a3[_0x8dbf('0xbb')]=ut[_0x8dbf('0x9e')](_0x3c33a3);ut[_0x8dbf('0x8c')](_0x3c33a3,0xc,_0x3c1580[_0x8dbf('0xe9')]||_0x3c1580[_0x8dbf('0xea')]);rpcDb[_0x8dbf('0x91')](_0x3c33a3,_0x8dbf('0xeb'));if(ut[_0x8dbf('0x9e')](_0x3c33a3)>=_0x1f202f[_0x8dbf('0xa2')]){_0x55b2b7=ut[_0x8dbf('0xa3')](_0x3c33a3,0xf,_0x8dbf('0xa4'));rpcDb[_0x8dbf('0x94')](_0x55b2b7,_0x8dbf('0xec'));}else{rpcDb['createCustomerFinal'](_0x3c33a3,_0x8dbf('0xec'));}delete this[_0x8dbf('0x6a')][_0x3c1580[_0x8dbf('0xe4')]];}if(!(_0x3c33a3[_0x8dbf('0x7b')]&&_0x556d21==='16')){ut['updateOriginated'](_0x1f202f,_0x8dbf('0xed'));logger[_0x8dbf('0x7f')](_0x8dbf('0xee'),_0x3c33a3[_0x8dbf('0xb8')],_0x8dbf('0xef'),_0x1f202f['name'],'originated:\x20',_0x1f202f[_0x8dbf('0x48')]);}if(_0x556d21!=='ANSWER'){delete this[_0x8dbf('0x6a')][_0x3c1580[_0x8dbf('0xe4')]];delete this[_0x8dbf('0x6a')][_0x3c1580[_0x8dbf('0xf0')]];}}};Preview[_0x8dbf('0xb')]['callProgressDetectingAgent']=function(_0x578590,_0x599544,_0x92418b){if(_[_0x8dbf('0xf1')](_0x599544)&&_0x8dbf('0xf2')!==typeof _0x599544){return;}if(_['isUndefined'](_0x92418b)&&_0x8dbf('0xf2')!==typeof _0x92418b){return;}switch(_0x92418b[_0x8dbf('0xf3')]){case'0':ut['logAgent'](_0x578590,0x0,_0x8dbf('0x9f'));rpcDb[_0x8dbf('0xf4')](_0x578590,_0x8dbf('0xf5'));break;case'3':ut[_0x8dbf('0xf6')](_0x578590,0x3,_0x8dbf('0xc5'));rpcDb[_0x8dbf('0xf4')](_0x578590,_0x8dbf('0xf7'));break;case'5':ut[_0x8dbf('0xf6')](_0x578590,0x5,_0x8dbf('0xbc'));rpcDb[_0x8dbf('0xf4')](_0x578590,'[callProgressDetectingAgent][logBusy]');break;case'8':ut[_0x8dbf('0xf6')](_0x578590,0x8,_0x8dbf('0xcf'));rpcDb[_0x8dbf('0xf4')](_0x578590,_0x8dbf('0xf8'));break;case'22':ut[_0x8dbf('0xf6')](_0x578590,0x16,_0x8dbf('0xf9'));rpcDb[_0x8dbf('0xf4')](_0x578590,_0x8dbf('0xfa'));break;default:ut['logAgent'](_0x578590,0xc,_0x92418b[_0x8dbf('0xf3')]);rpcDb[_0x8dbf('0xf4')](_0x578590,_0x8dbf('0xf8'));}ut[_0x8dbf('0x79')](_0x599544,_0x8dbf('0xfb'));logger[_0x8dbf('0x7f')](_0x8dbf('0xfc'),_0x578590[_0x8dbf('0xb8')],_0x8dbf('0xef'),_0x599544[_0x8dbf('0x20')],'originated:\x20',_0x599544[_0x8dbf('0x48')]);delete this[_0x8dbf('0x6a')][_0x578590[_0x8dbf('0xb8')]];};Preview[_0x8dbf('0xb')][_0x8dbf('0xfd')]=function(_0x48489d,_0xd69ae4,_0x178667,_0x18d4c3,_0x2b2f47){var _0x576d0a=this;return new BPromise(function(_0x5d15b1,_0x387804){if(_[_0x8dbf('0x84')](_0xd69ae4)||_[_0x8dbf('0x84')](_0xd69ae4[_0x8dbf('0xfe')])||_['isNil'](_0xd69ae4[_0x8dbf('0xfe')][_0x8dbf('0xff')])||_[_0x8dbf('0x84')](_0xd69ae4['VoiceQueueId'])){_0x387804(ut[_0x8dbf('0x47')](_0x8dbf('0x100'),_0x18d4c3,_0x2b2f47));return;}var _0x1850ab=uuid['v4']();var _0x3f713b=_0x576d0a[_0x8dbf('0x70')][_0xd69ae4[_0x8dbf('0x6c')][_0x8dbf('0x20')]];var _0x34f21a=_0x178667?_0x576d0a[_0x8dbf('0x11')][_0x178667]['id']:undefined;_0x576d0a['actions'][_0x1850ab]=new Action(_0xd69ae4,_0x3f713b,_0x1850ab,_0x178667,_0x34f21a);var _0x252045=_0x576d0a[_0x8dbf('0x6a')][_0x1850ab];_0x252045[_0x8dbf('0xa8')]=_0x18d4c3;_0x252045[_0x8dbf('0xa9')]=_0x2b2f47;_0x252045['lookAgent']=_0x178667;if(_[_0x8dbf('0x101')](_0x48489d)){_0x576d0a[_0x8dbf('0x102')](_0x252045,_0x3f713b,_0xd69ae4,_0x178667)['then'](function(_0x5a5165){logger[_0x8dbf('0x7f')](_0x8dbf('0x103'),_0x8dbf('0x104')+_0x252045['queue']+'\x20IdHopper:\x20'+_0x252045[_0x8dbf('0x105')],JSON[_0x8dbf('0x50')](_0x5a5165));ami[_0x8dbf('0x1e')](_0x8dbf('0x106'),ut[_0x8dbf('0xa1')](_0x252045,'called',_0x576d0a[_0x8dbf('0x70')][_0x252045[_0x8dbf('0x6d')]]));_0x5d15b1(ut[_0x8dbf('0x47')](_0x8dbf('0x107')));})[_0x8dbf('0x77')](function(_0x2dc7d6){ut[_0x8dbf('0x5b')](_0x8dbf('0x108'),_0x2dc7d6);_0x387804(ut[_0x8dbf('0x47')]('Call\x20failed',_0x18d4c3,_0x2b2f47));});}else{_0x3f713b[_0x8dbf('0x33')]+=0x1;ut[_0x8dbf('0x109')](_0x252045);rpcDb['createHistory'](_0x252045,_0x8dbf('0x10a'));delete _0x576d0a[_0x8dbf('0x6a')][_0x1850ab];_0x387804(ut[_0x8dbf('0x47')](_0x8dbf('0x10b'),_0x18d4c3,_0x2b2f47));}});};Preview['prototype']['isTrunkReachable']=function(_0x24114b){return!_[_0x8dbf('0x84')](_0x24114b)&&!_[_0x8dbf('0x84')](_0x24114b[_0x8dbf('0x20')])&&!_['isNil'](_0x24114b['active'])&&_0x24114b[_0x8dbf('0x4e')]&&!_[_0x8dbf('0x84')](this[_0x8dbf('0x10')][util[_0x8dbf('0x51')]('SIP/%s',_0x24114b[_0x8dbf('0x20')])])&&!_[_0x8dbf('0x84')](this[_0x8dbf('0x10')][util[_0x8dbf('0x51')](_0x8dbf('0x10c'),_0x24114b[_0x8dbf('0x20')])]['status'])&&(this[_0x8dbf('0x10')][util[_0x8dbf('0x51')]('SIP/%s',_0x24114b['name'])][_0x8dbf('0x75')]===_0x8dbf('0x10d')||this['trunks'][util['format'](_0x8dbf('0x10c'),_0x24114b[_0x8dbf('0x20')])]['status']==='unmonitored');};Preview[_0x8dbf('0xb')][_0x8dbf('0x10e')]=function(_0x21453c,_0x53d1ad){var _0x1a92ba=this;return new BPromise(function(_0x316569,_0x1dd806){_0x1a92ba[_0x8dbf('0x10f')](_0x21453c,_0x53d1ad)[_0x8dbf('0x83')](function(_0xba0761){_0x316569(_[_0x8dbf('0x71')](_0xba0761,['message']));})[_0x8dbf('0x77')](function(_0x1bb09f){if(_0x1bb09f[_0x8dbf('0x110')]){rpcDb[_0x8dbf('0x111')](_0x21453c);}if(_0x1bb09f[_0x8dbf('0x4e')]){rpcDb['disableContact'](_0x21453c);}_0x1dd806(_['pick'](_0x1bb09f,['message']));});});};Preview['prototype'][_0x8dbf('0x10f')]=function(_0x45e4b6,_0x2d1136){var _0x46a2ad=this;return new BPromise(function(_0x77587f,_0xe6f310){var _0x41e713,_0x308709;rpcDb['getContactPreview'](_0x45e4b6)['then'](function(_0x591c6e){if(!_[_0x8dbf('0x84')](_0x591c6e[0x0])){_0x308709=_0x591c6e[0x0][_0x8dbf('0x112')]?![]:!![];_0x41e713=_0x591c6e[0x0]['recallme']?!![]:![];_0x41e713=_0x2d1136?!![]:_0x41e713;}var _0x53885d=_0x46a2ad[_0x8dbf('0x113')](_0x591c6e);if(_0x53885d[_0x8dbf('0x114')]){rpcDb[_0x8dbf('0x115')](_['pick'](_0x591c6e[0x0],[_0x8dbf('0x73'),'Contact.phone']))[_0x8dbf('0x83')](function(_0x1e7a32){_0x46a2ad[_0x8dbf('0xfd')](_0x1e7a32,_0x591c6e[0x0],_0x2d1136,_0x308709,_0x41e713)['then'](function(_0x2466dc){_0x77587f(_0x2466dc);})[_0x8dbf('0x77')](function(_0x4998c6){_0xe6f310(_0x4998c6);});})[_0x8dbf('0x77')](function(_0x40254b){ut[_0x8dbf('0x5b')](_0x8dbf('0x116'),_0x40254b);_0xe6f310(ut[_0x8dbf('0x47')](_0x8dbf('0x117'),_0x308709,_0x41e713));});}else{_0xe6f310(ut[_0x8dbf('0x47')](_0x53885d[_0x8dbf('0x47')],_0x308709,_0x41e713));}})[_0x8dbf('0x77')](function(_0x328ade){ut['logger'](_0x8dbf('0x118'),_0x328ade);_0xe6f310(ut[_0x8dbf('0x47')]('Call\x20unsuccessful',![],!![]));});});};Preview['prototype'][_0x8dbf('0x113')]=function(_0x55f492){if(_['isNil'](_0x55f492)||_[_0x8dbf('0x101')](_0x55f492)||!_[_0x8dbf('0x84')](_0x55f492[0x0][_0x8dbf('0x86')])&&_[_0x8dbf('0x84')](_0x55f492[0x0]['Agent'][_0x8dbf('0x20')])){ut[_0x8dbf('0x5b')](_0x8dbf('0x119'),_0x55f492);return{'isValid':![],'message':'Empty\x20Contact'};}var _0x859c62=this[_0x8dbf('0x70')][_0x55f492[0x0][_0x8dbf('0x6c')][_0x8dbf('0x20')]];_0x859c62[_0x8dbf('0x47')]=_0x8dbf('0x9b');if(_[_0x8dbf('0x84')](_0x859c62)){ut[_0x8dbf('0x5b')](_0x8dbf('0x11a'),_0x859c62);return{'isValid':![],'message':_0x8dbf('0x11b')};}if(!this[_0x8dbf('0x98')](_0x859c62[_0x8dbf('0x4d')])){ut[_0x8dbf('0x5b')](_0x8dbf('0x11c'),_0x8dbf('0x11d')+_0x859c62[_0x8dbf('0x20')]+'\x20Trunk\x20is\x20not\x20active');if(!this[_0x8dbf('0x98')](_0x859c62[_0x8dbf('0x99')])){ut['logger']('[Preview][validateContact][Trunk\x20not\x20work]',_0x859c62[_0x8dbf('0x20')]+_0x8dbf('0x11e'));return{'isValid':![],'message':'Trunk\x20not\x20work'};}}if(!ut['isActive'](_0x859c62[_0x8dbf('0x2d')])){ut[_0x8dbf('0x5b')](_0x8dbf('0x11f'),_0x859c62[_0x8dbf('0x20')]+_0x8dbf('0x120'));return{'isValid':![],'message':_0x8dbf('0x11d')+_0x859c62[_0x8dbf('0x20')]+'\x20Not\x20Active'};}return{'isValid':!![],'message':_0x8dbf('0x121')};};Preview[_0x8dbf('0xb')][_0x8dbf('0x102')]=function(_0x230df6,_0x1a4876,_0x53e039,_0x1e0153){var _0x3d2479=this;return new BPromise(function(_0xcab0e,_0xe8eb62){var _0x20eef1=_0x230df6[_0x8dbf('0xb8')];var _0x3b9c59=_0x3d2479['isTrunkReachable'](_0x1a4876[_0x8dbf('0x4d')])?util['format'](_0x8dbf('0x122'),_0x1a4876[_0x8dbf('0x4d')]['name'],_['isNil'](_0x1a4876[_0x8dbf('0x30')])?'':_0x1a4876[_0x8dbf('0x30')][_0x8dbf('0x123')]()||'',_0x1a4876[_0x8dbf('0x124')]>0x0?_0x53e039[_0x8dbf('0xfe')]['phone'][_0x8dbf('0x125')](_0x1a4876[_0x8dbf('0x124')]):_0x53e039[_0x8dbf('0xfe')][_0x8dbf('0xff')]):util[_0x8dbf('0x51')](_0x8dbf('0x122'),_[_0x8dbf('0x84')](_0x1a4876[_0x8dbf('0x99')])?_0x1a4876[_0x8dbf('0x4d')][_0x8dbf('0x20')]:_0x1a4876[_0x8dbf('0x99')][_0x8dbf('0x20')],_[_0x8dbf('0x84')](_0x1a4876[_0x8dbf('0x30')])?'':_0x1a4876['dialPrefix']['trim']()||'',_0x1a4876[_0x8dbf('0x124')]>0x0?_0x53e039['Contact'][_0x8dbf('0xff')]['substring'](_0x1a4876[_0x8dbf('0x124')]):_0x53e039[_0x8dbf('0xfe')][_0x8dbf('0xff')]);var _0x55c39b=_0x3d2479['isTrunkReachable'](_0x1a4876[_0x8dbf('0x4d')])?ut['getCallerId'](_0x1a4876[_0x8dbf('0x4d')][_0x8dbf('0x126')],_0x1a4876[_0x8dbf('0x2e')],_0x1a4876[_0x8dbf('0x127')]>0x0?ut[_0x8dbf('0x128')](_0x1a4876[_0x8dbf('0x129')],_0x1a4876[_0x8dbf('0x127')]):_0x1a4876[_0x8dbf('0x129')]):ut['getCallerId'](_[_0x8dbf('0x84')](_0x1a4876[_0x8dbf('0x99')])?_0x1a4876[_0x8dbf('0x4d')]['callerid']:_0x1a4876['TrunkBackup']['callerid'],_0x1a4876[_0x8dbf('0x2e')],_0x1a4876['dialRandomLastDigitCallerIdNumber']>0x0?ut[_0x8dbf('0x128')](_0x1a4876[_0x8dbf('0x129')],_0x1a4876['dialRandomLastDigitCallerIdNumber']):_0x1a4876[_0x8dbf('0x129')]);if(_0x55c39b){_0x230df6['originatecalleridname']=ut[_0x8dbf('0x12a')](_0x55c39b);_0x230df6[_0x8dbf('0x12b')]=ut[_0x8dbf('0x12c')](_0x55c39b);}var _0x58369f=ut[_0x8dbf('0x12d')](_0x1a4876,_0x53e039,_0x3b9c59,_0x55c39b,_0x20eef1,_0x230df6);_[_0x8dbf('0x12e')](_0x230df6,ut['toLowerVariables'](_0x58369f));_0x230df6[_0x8dbf('0x12f')]=moment()[_0x8dbf('0x51')](_0x8dbf('0x8b'));ami[_0x8dbf('0x130')](ut[_0x8dbf('0x131')](_0x230df6,_0x1a4876,_0x58369f,_0x230df6[_0x8dbf('0xa9')],_0x1e0153))['then'](function(_0x1f3d49){var _0x374a36=_0x230df6[_0x8dbf('0x132')];if(!_['isNil'](_0x374a36)){if(!_[_0x8dbf('0x84')](_0x3d2479[_0x8dbf('0x11')][_0x374a36])){_0x3d2479[_0x8dbf('0x11')][_0x374a36][_0x8dbf('0x133')]=_0x230df6[_0x8dbf('0x134')];emit(util[_0x8dbf('0x51')](_0x8dbf('0x135'),_0x3d2479[_0x8dbf('0x11')][_0x374a36]['name']),'user:agentconnect',{'destaccountcode':_0x3d2479['agents'][_0x374a36][_0x8dbf('0x136')],'destconnectedlinenum':_0x230df6[_0x8dbf('0x134')]});}}_0x1a4876[_0x8dbf('0x48')]+=0x1;logger['info'](_0x8dbf('0x137'),_0x20eef1,_0x8dbf('0xef'),_0x1a4876[_0x8dbf('0x20')],_0x8dbf('0x6e'),_0x1a4876[_0x8dbf('0x48')]);_0xcab0e(_0x1f3d49);})[_0x8dbf('0x77')](function(_0x48a23f){ut[_0x8dbf('0xf6')](_0x230df6,0xe,_0x8dbf('0x138'));rpcDb[_0x8dbf('0xf4')](_0x230df6,_0x8dbf('0x139'));_0xe8eb62(_0x48a23f);});});};Preview[_0x8dbf('0xb')]['syncNewExten']=function(_0x8bce3){if(this[_0x8dbf('0x6a')][_0x8bce3['linkedid']]){this[_0x8dbf('0x6a')][_0x8bce3[_0x8dbf('0xe4')]][_0x8dbf('0x76')]=_0x8bce3[_0x8dbf('0x76')];}};Preview[_0x8dbf('0xb')][_0x8dbf('0x14')]=function(_0x36b78d){var _0x9a8c9e=this;var _0x160489=this['actions'][_0x36b78d[_0x8dbf('0x13a')]];if(_0x160489){if(_0x160489[_0x8dbf('0x13b')]&&this[_0x8dbf('0x11')][_0x160489[_0x8dbf('0x13b')]]){ut[_0x8dbf('0x13c')](_0x160489,this['agents'][_0x160489[_0x8dbf('0x13b')]][_0x8dbf('0x20')],this[_0x8dbf('0x11')][_0x160489[_0x8dbf('0x13b')]]['id']);}var _0x3eb6d8=_[_0x8dbf('0x13d')](_0x160489);_0x3eb6d8[_0x8dbf('0xab')]=moment()[_0x8dbf('0x51')](_0x8dbf('0x8b'));var _0x10b983=_0x9a8c9e[_0x8dbf('0x70')][_0x160489[_0x8dbf('0x6d')]];if(ut['isFailure'](_0x36b78d[_0x8dbf('0x13e')])){if(_0x160489[_0x8dbf('0xa8')]){rpcDb[_0x8dbf('0x111')](_0x160489[_0x8dbf('0x105')]);}if(_0x160489['activeContact']){rpcDb[_0x8dbf('0x8a')](_0x160489[_0x8dbf('0x105')]);}ami[_0x8dbf('0x1e')](_0x8dbf('0x13f'),ut[_0x8dbf('0xa1')](_0x160489,_0x8dbf('0x140'),this['campaignsPreview'][_0x160489[_0x8dbf('0x6d')]]));this[_0x8dbf('0x141')](_0x3eb6d8,_0x10b983,_0x36b78d);}else{_0x160489[_0x8dbf('0x12f')]=moment()[_0x8dbf('0x51')]('YYYY-MM-DD\x20HH:mm:ss');ut[_0x8dbf('0xf6')](_0x3eb6d8,0x4,_0x8dbf('0xb3'));rpcDb[_0x8dbf('0xf4')](_0x3eb6d8,_0x8dbf('0x142'));}}};Preview[_0x8dbf('0xb')][_0x8dbf('0x16')]=function(_0xa2130b){var _0x518f24=this;var _0x5ecee3=this[_0x8dbf('0x6a')][_0xa2130b['linkedid']];var _0x42e25e;if(_0x5ecee3){_0x42e25e=this['campaignsPreview'][_0x5ecee3[_0x8dbf('0x6d')]];logger[_0x8dbf('0x7f')](_0x8dbf('0x143'),_0xa2130b['linkedid'],_0x8dbf('0xef'),_0x42e25e[_0x8dbf('0x20')],_0x8dbf('0x6f'),_0x42e25e[_0x8dbf('0x24')]);}if(this[_0x8dbf('0x6a')][_0xa2130b['linkedid']]&&_0xa2130b[_0x8dbf('0xe4')]!==_0xa2130b[_0x8dbf('0xb8')]){if(_0xa2130b[_0x8dbf('0x144')]==='16'&&this[_0x8dbf('0x6a')][_0xa2130b[_0x8dbf('0xe4')]]['dialAnswer']){this[_0x8dbf('0x9c')](_0xa2130b,_0xa2130b[_0x8dbf('0xe4')],_0xa2130b[_0x8dbf('0x144')]);}else if(this['actions'][_0xa2130b['linkedid']]['dialAnswer']){logger[_0x8dbf('0x7f')]('[syncHangup][talking][cause]',_0xa2130b['linkedid'],_0xa2130b[_0x8dbf('0x144')],_0x8dbf('0xef'),_0x42e25e['name'],'pTalking:\x20',_0x42e25e[_0x8dbf('0x24')]);this['callProgressDetectingCustomer'](_0xa2130b,_0xa2130b[_0x8dbf('0xe4')],_0xa2130b[_0x8dbf('0x144')]);}}else if(_0x5ecee3&&_[_0x8dbf('0x84')](_0x5ecee3[_0x8dbf('0x145')])&&_0x42e25e[_0x8dbf('0x146')]&&_0xa2130b[_0x8dbf('0xe4')]===_0xa2130b[_0x8dbf('0xb8')]&&_['isNil'](_0xa2130b[_0x8dbf('0xf3')])&&_0xa2130b[_0x8dbf('0x144')]==='16'&&_0xa2130b[_0x8dbf('0x147')]==='6'&&_[_0x8dbf('0xf1')](_0x5ecee3['transfer'])){if(_0x5ecee3[_0x8dbf('0xa8')]){rpcDb['unlockContact'](_0x5ecee3[_0x8dbf('0x105')]);}if(_0x5ecee3[_0x8dbf('0xa9')]){rpcDb[_0x8dbf('0x8a')](_0x5ecee3[_0x8dbf('0x105')]);}_0xa2130b[_0x8dbf('0xf3')]='22';this[_0x8dbf('0x141')](_0x5ecee3,_0x42e25e,_0xa2130b);}else if(_0x5ecee3&&_0x5ecee3[_0x8dbf('0x148')]){if(_0xa2130b[_0x8dbf('0x144')]==='16'&&this[_0x8dbf('0x6a')][_0xa2130b[_0x8dbf('0xe4')]][_0x8dbf('0x7b')]){logger[_0x8dbf('0x7f')]('[syncHangup][talking][transfer]',_0xa2130b[_0x8dbf('0xe4')],_0xa2130b[_0x8dbf('0x144')],'\x20Queue',_0x42e25e[_0x8dbf('0x20')],_0x8dbf('0x6f'),_0x42e25e[_0x8dbf('0x24')]);this[_0x8dbf('0x9c')](_0xa2130b,_0xa2130b[_0x8dbf('0xe4')],_0xa2130b[_0x8dbf('0x144')]);}else if(this[_0x8dbf('0x6a')][_0xa2130b['linkedid']][_0x8dbf('0x7b')]){logger[_0x8dbf('0x7f')](_0x8dbf('0x149'),_0xa2130b[_0x8dbf('0xe4')],_0xa2130b[_0x8dbf('0x144')],_0x8dbf('0xef'),_0x42e25e[_0x8dbf('0x20')],'pTalking:\x20',_0x42e25e[_0x8dbf('0x24')]);this[_0x8dbf('0x9c')](_0xa2130b,_0xa2130b[_0x8dbf('0xe4')],_0xa2130b[_0x8dbf('0x144')]);}}};Preview[_0x8dbf('0xb')][_0x8dbf('0x14a')]=function(_0x455480){if(this[_0x8dbf('0x6a')][_0x455480[_0x8dbf('0xf0')]]&&_0x455480[_0x8dbf('0xf0')]!==_0x455480[_0x8dbf('0x14b')]){this[_0x8dbf('0x9c')](_0x455480,_0x455480['destlinkedid'],_0x455480[_0x8dbf('0xea')]);}};Preview[_0x8dbf('0xb')][_0x8dbf('0x14c')]=function(_0x207da7){if(this[_0x8dbf('0x6a')][_0x207da7[_0x8dbf('0xe4')]]&&_0x207da7[_0x8dbf('0xe4')]!==_0x207da7[_0x8dbf('0xb8')]&&!this[_0x8dbf('0x6a')][_0x207da7[_0x8dbf('0xe4')]][_0x8dbf('0x7b')]){if(_0x207da7[_0x8dbf('0x144')]==='1'){this[_0x8dbf('0x9c')](_0x207da7,_0x207da7[_0x8dbf('0xe4')],_0x207da7['cause']);}}};Preview[_0x8dbf('0xb')][_0x8dbf('0x14d')]=function(_0x4cb8eb,_0x48eedf,_0xd13474){if(this['actions'][_0x4cb8eb]){if(_[_0x8dbf('0x84')](this['actions'][_0x4cb8eb]['variables'])){this[_0x8dbf('0x6a')][_0x4cb8eb][_0x8dbf('0x14e')]={};}this[_0x8dbf('0x6a')][_0x4cb8eb][_0x8dbf('0x14e')][_0x48eedf]=_0xd13474;}};Preview[_0x8dbf('0xb')][_0x8dbf('0x14f')]=function(_0x25d397){try{if(!_[_0x8dbf('0x84')](_0x25d397)){if(ut[_0x8dbf('0x150')](_[_0x8dbf('0x151')](_0x25d397[_0x8dbf('0x152')])[0x0])){this['addVariable'](_0x25d397[_0x8dbf('0xb8')],_[_0x8dbf('0x151')](_0x25d397['variable'])[0x0],_0x25d397[_0x8dbf('0x153')]);}}}catch(_0x162945){logger['error'](_0x8dbf('0x154'),util['inspect'](_0x162945,{'showHidden':![],'depth':null}));}};Preview[_0x8dbf('0xb')][_0x8dbf('0x1c')]=function(_0x49ee92){if(_0x49ee92){if(this['actions'][_0x49ee92['transfertargetlinkedid']]){this[_0x8dbf('0x6a')][_0x49ee92[_0x8dbf('0x155')]]['transfer']=!![];}}};Preview[_0x8dbf('0xb')][_0x8dbf('0x1d')]=function(_0x2f2f40){if(_0x2f2f40){if(this['actions'][_0x2f2f40[_0x8dbf('0x156')]]){this[_0x8dbf('0x6a')][_0x2f2f40[_0x8dbf('0x156')]][_0x8dbf('0x148')]=!![];}}};module['exports']=Preview;
\ No newline at end of file
+var _0x1916=['[HistoryRecallClose]','createCustomerFinal','[getContactRecallMe]','IsNotLoggedIn','isActive','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','outboundNoSuchCallsDay','countnosuchnumberretry','NoSuchNumber','buildObj','[callProgressDetectingCustomer][logNoSuch]','Global','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','rescheduleContact','scheduledAt','dialNoSuchNumberRetryFrequency','unlockAgent','activeContact','linkedid','ANSWER','responsetime','answertime','\x20Queue','custom:agentconnect','connect','acw','custom:agentConnectPreview','buildAcw','custom:agentcomplete','complete','[16]','totalGlobal','Answer','crateCustomerReportQueue','talktime','[syncHangup][talking][decrement]','uniqueid','BUSY','countbusyretry','countglobal','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','dialGlobalMaxRetry','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','dialBusyRetryFrequency','NOANSWER','countnoanswerretry','noanswer','[callProgressDetectingCustomer][logNoAnswer]','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','custom:agentcongestion','[callProgressDetectingCustomer][logCongestion]','cloneAction','[callProgressDetectingCustomer][logCongestionGlobal]','countcongestionretry','CANCEL','countagentrejectretry','AgentReject','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','countabandonedretry','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedRetryFrequency','countmachineretry','cause-txt','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','destlinkedid','object','reason','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','NoAnswer','[callProgressDetectingAgent][logNoAnswer]','logAgent','[callProgressDetectingAgent][logBusy]','Congestion','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[originated][decrement][callProgressDetectingAgent]','checkInBlack','Contact','phone','Contact\x20is\x20undefined','isEmpty','Queue:\x20','\x20IdHopper:\x20','idContact','custom:agentcalled','[Preview][execCall][failure]','Call\x20failed','outboundBlacklistCallsDay','createHistory','[Blacklist][error]','Contact\x20in\x20black\x20List','SIP/%s','unmonitored','run','execRun','unlock','unlockContact','getContactPreview','recallme','validateContact','isValid','checkIsBlackList','[Preview][checkIsBlackList]','[Preview][getContactPreview]','Call\x20unsuccessful','[Preview][validateContact][Empty\x20Contact]','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','[Preview][validateContact][Trunk\x20not\x20work]','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20work','\x20Not\x20Active','Is\x20Valid','execCall','SIP/%s/%s%s','trim','dialCutDigit','substring','getCallerId','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','originatecalleridname','extractCalleridName','originatecalleridnum','extractCalleridNumber','toLowerVariables','channelAgent','destconnectedlinenum','calleridnum','user:%s','user:agentconnect','accountcode','[originated][increment]','OriginateError','[originateFailure][logOriginateFailure]','syncOriginateResponse','actionid','lookAgent','logLookAgent','isFailure','response','custom:agentringnoanswer','rejected','[callProgressDetectingAgent][logAnswer]','syncHangup','[syncHangup][talking]','cause','[syncHangup][talking][cause]','statedesc','dialQueueProject','channelstate','isUndefined','callProgressDetectingAgent','[syncHangup][talking][transfer]','destuniqueid','addVariable','variables','syncVarSet','filterKey','keys','variable','value','error','inspect','syncAttendedTransfer','transfertargetlinkedid','transfer','syncBlindTransfer','transfererlinkedid','util','lodash','uuid','moment','md5','ioredis','../../../config/environment','../../../config/logger','preview','actionPreview','../ami','./rpcDb','./action','./util/util','defaults','redis','localhost','prototype','enqueue','tail','voiceQueues','trunks','actions','agents','clockClearZombieChannels','originateresponse','bind','hangup','syncHangupRequest','dialend','syncDialEnd','syncNewExten','varset','attendedtransfer','blindtransfer','loopCampaigns','type','outbound','name','answered','available','loggedIn','sumBillable','sumDuration','total','unmanaged','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangCallToSecond','erlangAbandonmentRate','startPredictive','startProgressive','Trunk','active','callerid','Interval','stringify','format','voice_queue:save','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice_queue_channel:remove','emit','sendMessageOneNotActive','pTalking','NOT_ACTIVE','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','logger','syncCampaigns','campaignsPreview','hasOwnProperty','clearZombieChannel','sequence','isNil','[clearZombieChannels][talking]','Queue','queue','originated:\x20','pTalking:\x20','dialAnswer','pick','contactId','VoiceQueueId','ListId','Action','status','channel','catch','No\x20such\x20channel','updateOriginated','decrementTalkink','[clearZombieChannel]','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','clearZombieChannels','size','agentReadyId','then','getDiff','scheduledat','dialRecallMeTimeout','Agent','voicePause','[RecallMe]','logger2','disableContact','starttime','YYYY-MM-DD\x20HH:mm:ss','logCustomer','dialRecallInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]'];(function(_0x59721d,_0x1b1bf7){var _0x3bc7eb=function(_0x2cfa1a){while(--_0x2cfa1a){_0x59721d['push'](_0x59721d['shift']());}};_0x3bc7eb(++_0x1b1bf7);}(_0x1916,0xc6));var _0x6191=function(_0x3c2dd9,_0x57be2f){_0x3c2dd9=_0x3c2dd9-0x0;var _0x23d25f=_0x1916[_0x3c2dd9];return _0x23d25f;};'use strict';var util=require(_0x6191('0x0'));var _=require(_0x6191('0x1'));var BPromise=require('bluebird');var uuid=require(_0x6191('0x2'));var moment=require(_0x6191('0x3'));var md5=require(_0x6191('0x4'));var Redis=require(_0x6191('0x5'));var config=require(_0x6191('0x6'));var logger=require(_0x6191('0x7'))(_0x6191('0x8'));var loggerAction=require(_0x6191('0x7'))(_0x6191('0x9'));var ami=require(_0x6191('0xa'));var rpcDb=require(_0x6191('0xb'));var Action=require(_0x6191('0xc'));var ut=require(_0x6191('0xd'));config['redis']=_[_0x6191('0xe')](config[_0x6191('0xf')],{'host':_0x6191('0x10'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var Sequence=function(){};Sequence[_0x6191('0x11')][_0x6191('0x12')]=function(_0x1c9554){this['tail']=this['tail']?this[_0x6191('0x13')]['finally'](_0x1c9554):_0x1c9554();};function Preview(_0x15c989){this['sequence']=new Sequence();this['campaignsPreview']=_0x15c989[_0x6191('0x14')];this[_0x6191('0x15')]=_0x15c989[_0x6191('0x15')];this[_0x6191('0x16')]={};this[_0x6191('0x17')]=_0x15c989[_0x6191('0x17')];this[_0x6191('0x18')]=0x0;ami['on'](_0x6191('0x19'),this['syncOriginateResponse'][_0x6191('0x1a')](this));ami['on'](_0x6191('0x1b'),this['syncHangup']['bind'](this));ami['on']('hanguprequest',this[_0x6191('0x1c')][_0x6191('0x1a')](this));ami['on'](_0x6191('0x1d'),this[_0x6191('0x1e')]['bind'](this));ami['on']('newexten',this[_0x6191('0x1f')][_0x6191('0x1a')](this));ami['on'](_0x6191('0x20'),this['syncVarSet'][_0x6191('0x1a')](this));ami['on'](_0x6191('0x21'),this['syncAttendedTransfer'][_0x6191('0x1a')](this));ami['on'](_0x6191('0x22'),this['syncBlindTransfer'][_0x6191('0x1a')](this));this[_0x6191('0x23')](this['campaignsPreview']);}function emit(_0x5389ef,_0x2b867a,_0x398cb2){io['to'](_0x5389ef)['emit'](_0x2b867a,_0x398cb2);}function emitCampaignPreview(_0x368e53){if(_0x368e53[_0x6191('0x24')]===_0x6191('0x25')){var _0x2d4ecd={'id':_0x368e53['id'],'name':_0x368e53[_0x6191('0x26')],'strategy':_0x368e53['strategy'],'answered':_0x368e53[_0x6191('0x27')],'available':_0x368e53[_0x6191('0x28')],'loggedIn':_0x368e53[_0x6191('0x29')],'pTalking':_0x368e53['pTalking'],'sumBillable':_0x368e53[_0x6191('0x2a')],'sumDuration':_0x368e53[_0x6191('0x2b')],'sumHoldTime':_0x368e53['sumHoldTime']||0x0,'talking':_0x368e53['talking'],'total':_0x368e53[_0x6191('0x2c')],'type':_0x368e53[_0x6191('0x24')],'unmanaged':_0x368e53[_0x6191('0x2d')],'abandoned':_0x368e53['abandoned'],'waiting':_0x368e53[_0x6191('0x2e')],'loggedInDb':_0x368e53[_0x6191('0x2f')],'dialActive':_0x368e53[_0x6191('0x30')],'dialMethod':_0x368e53[_0x6191('0x31')],'dialOriginateCallerIdName':_0x368e53[_0x6191('0x32')],'dialOriginateCallerIdNumber':_0x368e53[_0x6191('0x33')],'dialOriginateTimeout':_0x368e53['dialOriginateTimeout'],'dialPrefix':_0x368e53[_0x6191('0x34')],'outboundAnswerAgiCallsDay':_0x368e53[_0x6191('0x35')],'outboundAnswerCallsDay':_0x368e53[_0x6191('0x36')],'outboundBlacklistCallsDay':_0x368e53['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x368e53[_0x6191('0x37')],'outboundCongestionCallsDay':_0x368e53[_0x6191('0x38')],'outboundDropCallsDayACS':_0x368e53[_0x6191('0x39')],'outboundDropCallsDayCallersExit':_0x368e53[_0x6191('0x3a')],'outboundDropCallsDayTimeout':_0x368e53[_0x6191('0x3b')],'outboundNoAnswerCallsDay':_0x368e53[_0x6191('0x3c')],'outboundNoSuchCallsDay':_0x368e53['outboundNoSuchCallsDay'],'outboundOriginateFailureCallsDay':_0x368e53[_0x6191('0x3d')],'outboundReCallsDay':_0x368e53[_0x6191('0x3e')],'outboundRejectCallsDay':_0x368e53[_0x6191('0x3f')],'outboundUnknownCallsDay':_0x368e53[_0x6191('0x40')],'outboundAbandonedCallsDay':_0x368e53[_0x6191('0x41')],'predictiveIntervalAnsweredCalls':_0x368e53['predictiveIntervalAnsweredCalls'],'predictiveIntervalAvgHoldtime':_0x368e53[_0x6191('0x42')],'predictiveIntervalAvgTalktime':_0x368e53[_0x6191('0x43')],'predictiveIntervalDroppedCallsCallersExit':_0x368e53[_0x6191('0x44')],'predictiveIntervalDroppedCallsTimeout':_0x368e53[_0x6191('0x45')],'predictiveIntervalErlangCalls':_0x368e53[_0x6191('0x46')],'predictiveIntervalErlangCallsDroppedCalls':_0x368e53['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x368e53['predictiveIntervalHitRate'],'predictiveIntervalMultiplicativeFactor':_0x368e53[_0x6191('0x47')],'predictiveIntervalPauses':_0x368e53[_0x6191('0x48')],'predictiveIntervalAvailable':_0x368e53[_0x6191('0x49')],'predictiveIntervalTotalCalls':_0x368e53[_0x6191('0x4a')],'message':_0x368e53[_0x6191('0x4b')],'originated':_0x368e53[_0x6191('0x4c')],'erlangCalls':_0x368e53['erlangCalls'],'erlangCallToSecond':_0x368e53[_0x6191('0x4d')],'erlangAbandonmentRate':_0x368e53[_0x6191('0x4e')],'erlangBusyFactor':_0x368e53['erlangBusyFactor'],'startPredictive':_0x368e53[_0x6191('0x4f')],'startProgressive':_0x368e53[_0x6191('0x50')]};if(_0x368e53['Trunk']){_0x2d4ecd[_0x6191('0x51')]={'id':_0x368e53[_0x6191('0x51')]['id'],'name':_0x368e53['Trunk'][_0x6191('0x26')],'active':_0x368e53['Trunk'][_0x6191('0x52')],'callerid':_0x368e53[_0x6191('0x51')][_0x6191('0x53')]};}if(_0x368e53[_0x6191('0x54')]){_0x2d4ecd[_0x6191('0x54')]={'id':_0x368e53[_0x6191('0x54')]['id'],'name':_0x368e53['Interval'][_0x6191('0x26')]};}var _0x3612b4=md5(JSON[_0x6191('0x55')](_0x2d4ecd));if(_0x368e53[_0x6191('0x4')]!==_0x3612b4){_0x368e53[_0x6191('0x4')]=_0x3612b4;emit(util[_0x6191('0x56')]('voice:queue:%s',_0x2d4ecd[_0x6191('0x26')]),_0x6191('0x57'),_0x2d4ecd);}}}function emitVoiceQueueChannelRemove(_0x2f72a6){logger[_0x6191('0x58')](_0x6191('0x59'),JSON[_0x6191('0x55')](_0x2f72a6));emit(util[_0x6191('0x56')]('voice:queue:%s',_0x2f72a6[_0x6191('0x26')]),_0x6191('0x5a'),_0x2f72a6);io[_0x6191('0x5b')]('voice_queue_presence:remove',_0x2f72a6);}function notSendMessagesQueue(_0x4daa2b){if(_0x4daa2b[_0x6191('0x5c')]){if(_0x4daa2b[_0x6191('0x4c')]===0x0&&_0x4daa2b[_0x6191('0x5d')]===0x0){_0x4daa2b[_0x6191('0x5c')]=![];_0x4daa2b[_0x6191('0x28')]=0x0;_0x4daa2b['paused']=0x0;_0x4daa2b[_0x6191('0x4b')]=_0x6191('0x5e');ut['logger'](_0x6191('0x5f'),_0x4daa2b[_0x6191('0x26')]+_0x6191('0x60'));}else{_0x4daa2b[_0x6191('0x4b')]='IS_DISACTIVED';ut[_0x6191('0x61')](_0x6191('0x5f'),_0x4daa2b[_0x6191('0x26')]+'\x20is\x20disactive');}emitCampaignPreview(_0x4daa2b);}}Preview[_0x6191('0x11')][_0x6191('0x23')]=function(){var _0x50e320=this;setInterval(function(){_0x50e320[_0x6191('0x62')]();},0x7cf);};Preview['prototype'][_0x6191('0x62')]=function(){var _0x563c1f=this[_0x6191('0x63')];this[_0x6191('0x18')]+=0x1;for(var _0x319ab9 in _0x563c1f){if(_0x563c1f[_0x6191('0x64')](_0x319ab9)&&(_0x563c1f[_0x319ab9]['dialMethod']===_0x6191('0x8')||_0x563c1f[_0x319ab9][_0x6191('0x31')]==='booked')&&_0x563c1f[_0x319ab9][_0x6191('0x24')]===_0x6191('0x25')){if(this[_0x6191('0x18')]>0x7){this['clockClearZombieChannels']=0x0;this['clearZombieChannels']();}}if(_0x563c1f[_0x6191('0x64')](_0x319ab9)&&_0x563c1f[_0x319ab9][_0x6191('0x31')]===_0x6191('0x8')&&_0x563c1f[_0x319ab9][_0x6191('0x24')]==='outbound'){if(_0x563c1f[_0x319ab9][_0x6191('0x30')]){this['setMessage'](_0x563c1f[_0x319ab9]);this['recallMe'](_0x563c1f[_0x319ab9]);}else{notSendMessagesQueue(_0x563c1f[_0x319ab9]);}}}};Preview[_0x6191('0x11')][_0x6191('0x65')]=function(_0x248816){var _0xa4e8c8=this;this[_0x6191('0x66')]['enqueue'](function(){if(!_[_0x6191('0x67')](_0xa4e8c8[_0x6191('0x16')][_0x248816])){loggerAction['info'](_0x6191('0x68'),_0x248816,_0x6191('0x69'),_0xa4e8c8['actions'][_0x248816][_0x6191('0x6a')],_0x6191('0x6b'),JSON[_0x6191('0x55')](_0xa4e8c8['campaignsPreview'][_0xa4e8c8['actions'][_0x248816][_0x6191('0x6a')]][_0x6191('0x4c')]),_0x6191('0x6c'),JSON['stringify'](_0xa4e8c8['campaignsPreview'][_0xa4e8c8[_0x6191('0x16')][_0x248816]['queue']][_0x6191('0x5d')]),JSON[_0x6191('0x55')](_0xa4e8c8[_0x6191('0x16')][_0x248816][_0x6191('0x6d')]),JSON['stringify'](_[_0x6191('0x6e')](_0xa4e8c8[_0x6191('0x16')][_0x248816],[_0x6191('0x6f'),'UserId',_0x6191('0x70'),_0x6191('0x71')])));return ami[_0x6191('0x72')]({'action':_0x6191('0x73'),'channel':_0xa4e8c8[_0x6191('0x16')][_0x248816][_0x6191('0x74')]})[_0x6191('0x75')](function(_0x3c4b45){if(_0x3c4b45[_0x6191('0x4b')]===_0x6191('0x76')){setTimeout(function(){if(_0xa4e8c8[_0x6191('0x16')][_0x248816]){ut[_0x6191('0x77')](_0xa4e8c8['campaignsPreview'][_0xa4e8c8[_0x6191('0x16')][_0x248816][_0x6191('0x6a')]],'[clearZombieChannel]');if(_0xa4e8c8[_0x6191('0x16')][_0x248816][_0x6191('0x6d')]===!![]){ut[_0x6191('0x78')](_0xa4e8c8[_0x6191('0x63')][_0xa4e8c8[_0x6191('0x16')][_0x248816][_0x6191('0x6a')]],_0x6191('0x79'));ut['loggerError'](_0x6191('0x7a')+_0x248816,_0xa4e8c8[_0x6191('0x16')][_0x248816][_0x6191('0x6a')]);}ut['loggerError'](_0x6191('0x7b')+_0x248816,_0xa4e8c8[_0x6191('0x16')][_0x248816][_0x6191('0x6a')]);delete _0xa4e8c8[_0x6191('0x16')][_0x248816];}},0x2328);}});}});};Preview[_0x6191('0x11')][_0x6191('0x7c')]=function(){var _0xd65e73=this;loggerAction[_0x6191('0x58')]('[action]',_[_0x6191('0x7d')](this[_0x6191('0x16')]));for(var _0x43cebf in this[_0x6191('0x16')]){if(_0xd65e73[_0x6191('0x16')][_0x6191('0x64')](_0x43cebf)){_0xd65e73['clearZombieChannel'](_0x43cebf);}}};Preview[_0x6191('0x11')]['recallMe']=function(_0x95b61){var _0x52fcbf=this;rpcDb['getContactRecallMe'](_0x95b61['id'],ut[_0x6191('0x7e')](this[_0x6191('0x17')]))[_0x6191('0x7f')](function(_0x1b1da7){if(!_[_0x6191('0x67')](_0x1b1da7)){for(var _0x3aa832=0x0;_0x3aa832<_0x1b1da7['length'];_0x3aa832+=0x1){if(ut[_0x6191('0x80')](_0x1b1da7[_0x3aa832][_0x6191('0x81')])<_0x95b61[_0x6191('0x82')]*0x3c){if(_0x1b1da7[_0x3aa832][_0x6191('0x83')]&&!_0x1b1da7[_0x3aa832][_0x6191('0x83')][_0x6191('0x84')]){_0x52fcbf['run'](_0x1b1da7[_0x3aa832]['id'])[_0x6191('0x7f')](ut['logger2'](_0x6191('0x85')))[_0x6191('0x75')](ut[_0x6191('0x86')](_0x6191('0x85')));}else{rpcDb[_0x6191('0x87')](_0x1b1da7[_0x3aa832]['id']);}}else{var _0x10841f=new Action(_0x1b1da7[_0x3aa832],_0x95b61);_0x10841f[_0x6191('0x88')]=moment()['format'](_0x6191('0x89'));_0x95b61[_0x6191('0x3e')]+=0x1;ut[_0x6191('0x8a')](_0x10841f,0x17,'RecallInQueue');if(_0x95b61[_0x6191('0x8b')]){rpcDb['rescheduleContactInQueue'](ut[_0x6191('0x8c')](_0x1b1da7[_0x3aa832]));rpcDb[_0x6191('0x8d')](_0x10841f,_0x6191('0x8e'));}else{ut[_0x6191('0x8a')](_0x10841f,0x16,'RecallFailedTimeout');rpcDb[_0x6191('0x8d')](_0x10841f,_0x6191('0x8f'));rpcDb[_0x6191('0x90')](_0x10841f,_0x6191('0x8f'));}}}}})[_0x6191('0x75')](ut[_0x6191('0x86')](_0x6191('0x91')));};Preview[_0x6191('0x11')]['setMessage']=function(_0x1540b6){_0x1540b6['sendMessageOneNotActive']=!![];if(ut[_0x6191('0x92')](_0x1540b6[_0x6191('0x29')])){_0x1540b6[_0x6191('0x4b')]='AGENTS_NOT_LOGGED';}else if(!ut[_0x6191('0x93')](_0x1540b6[_0x6191('0x30')])){_0x1540b6[_0x6191('0x4b')]=_0x6191('0x5e');}else if(!this[_0x6191('0x94')](_0x1540b6['Trunk'])){if(!this[_0x6191('0x94')](_0x1540b6[_0x6191('0x95')])){_0x1540b6[_0x6191('0x4b')]=_0x6191('0x96');}else{_0x1540b6[_0x6191('0x4b')]='ACTIVE';}}else{_0x1540b6['message']=_0x6191('0x97');}emitCampaignPreview(_0x1540b6);};Preview['prototype'][_0x6191('0x98')]=function(_0x3cf360,_0x76bea9,_0x4ef1e1){var _0x128634=this;var _0x282d35=this[_0x6191('0x16')][_0x76bea9];var _0x561a04=this[_0x6191('0x63')][_0x282d35['queue']];var _0xec59a9;if(_0x561a04){switch(_0x4ef1e1){case'1':_0x561a04[_0x6191('0x99')]+=0x1;_0x282d35[_0x6191('0x9a')]+=0x1;_0x282d35['countglobal']=ut['totalGlobal'](_0x282d35);ut[_0x6191('0x8a')](_0x282d35,0x0,_0x6191('0x9b'));ami['emit']('custom:agentnosuchnumber',ut[_0x6191('0x9c')](_0x282d35,'nosuchnumber'));rpcDb[_0x6191('0x8d')](_0x282d35,_0x6191('0x9d'));if(ut['totalGlobal'](_0x282d35)>=_0x561a04['dialGlobalMaxRetry']){_0xec59a9=ut['cloneAction'](_0x282d35,0xf,_0x6191('0x9e'));rpcDb['createCustomerFinal'](_0xec59a9,_0x6191('0x9f'));}else{if(_0x282d35['countnosuchnumberretry']>=_0x561a04[_0x6191('0xa0')]){rpcDb[_0x6191('0x90')](_0x282d35,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{rpcDb[_0x6191('0xa1')](ut[_0x6191('0xa2')](_0x282d35,'countnosuchnumberretry',_0x561a04[_0x6191('0xa3')]),_0x282d35[_0x6191('0xa4')],_0x282d35[_0x6191('0xa5')]);}}delete this[_0x6191('0x16')][_0x3cf360[_0x6191('0xa6')]];break;case _0x6191('0xa7'):var _0x4fc612=moment()[_0x6191('0x56')]('YYYY-MM-DD\x20HH:mm:ss');_0x282d35[_0x6191('0xa8')]=_0x4fc612;_0x282d35[_0x6191('0xa9')]=_0x4fc612;_0x282d35[_0x6191('0x6d')]=!![];_0x561a04[_0x6191('0x5d')]+=0x1;logger[_0x6191('0x58')]('[syncHangup][talking][increment]',_0x282d35['uniqueid'],_0x6191('0xaa'),_0x561a04[_0x6191('0x26')],'pTalking:\x20',_0x561a04[_0x6191('0x5d')]);ami[_0x6191('0x5b')](_0x6191('0xab'),ut[_0x6191('0x9c')](_0x282d35,_0x6191('0xac'),this[_0x6191('0x63')][_0x282d35['queue']]));if(_0x561a04[_0x6191('0xad')]){ami[_0x6191('0x5b')](_0x6191('0xae'),ut[_0x6191('0xaf')](_0x282d35));}break;case'16':ami[_0x6191('0x5b')](_0x6191('0xb0'),ut[_0x6191('0x9c')](_0x282d35,_0x6191('0xb1'),this[_0x6191('0x63')][_0x282d35['queue']]));emitVoiceQueueChannelRemove(ut['buildObj'](_0x282d35,_0x6191('0xb1')));_0x561a04[_0x6191('0x36')]+=0x1;_0x561a04[_0x6191('0x2c')]+=0x1;_0x561a04['answered']+=0x1;ut[_0x6191('0x78')](_0x561a04,_0x6191('0xb2'));_0x282d35['countglobal']=ut[_0x6191('0xb3')](_0x282d35);ut[_0x6191('0x8a')](_0x282d35,0x4,_0x6191('0xb4'));rpcDb[_0x6191('0x8d')](_0x282d35,'[callProgressDetectingCustomer][logAnswer]');rpcDb[_0x6191('0x90')](_0x282d35,'[callProgressDetectingCustomer][logAnswerGlobal]');rpcDb[_0x6191('0xb5')](_0x282d35);_0x561a04[_0x6191('0x2b')]+=_0x282d35[_0x6191('0xb6')];_0x561a04[_0x6191('0x2a')]+=_0x282d35[_0x6191('0xb6')];logger[_0x6191('0x58')](_0x6191('0xb7'),_0x282d35[_0x6191('0xb8')],_0x6191('0xaa'),_0x561a04[_0x6191('0x26')],'pTalking:\x20',_0x561a04[_0x6191('0x5d')]);delete this[_0x6191('0x16')][_0x3cf360[_0x6191('0xa6')]];break;case _0x6191('0xb9'):_0x561a04[_0x6191('0x37')]+=0x1;_0x282d35[_0x6191('0xba')]+=0x1;_0x282d35[_0x6191('0xbb')]=ut['totalGlobal'](_0x282d35);ut[_0x6191('0x8a')](_0x282d35,0x5,'Busy');ami[_0x6191('0x5b')](_0x6191('0xbc'),ut[_0x6191('0x9c')](_0x282d35,_0x6191('0xbd')));rpcDb[_0x6191('0x8d')](_0x282d35,_0x6191('0xbe'));if(ut[_0x6191('0xb3')](_0x282d35)>=_0x561a04[_0x6191('0xbf')]){_0xec59a9=ut['cloneAction'](_0x282d35,0xf,_0x6191('0x9e'));rpcDb[_0x6191('0x90')](_0xec59a9,_0x6191('0xc0'));}else{if(_0x282d35[_0x6191('0xba')]>=_0x561a04[_0x6191('0xc1')]){rpcDb['createCustomerFinal'](_0x282d35,'[callProgressDetectingCustomer][logBusy]');}else{rpcDb[_0x6191('0xa1')](ut[_0x6191('0xa2')](_0x282d35,_0x6191('0xba'),_0x561a04[_0x6191('0xc2')]),_0x282d35['unlockAgent'],_0x282d35['activeContact']);}}break;case _0x6191('0xc3'):_0x561a04['outboundNoAnswerCallsDay']+=0x1;_0x282d35[_0x6191('0xc4')]+=0x1;_0x282d35[_0x6191('0xbb')]=ut[_0x6191('0xb3')](_0x282d35);ut['logCustomer'](_0x282d35,0x3,'NoAnswer');ami[_0x6191('0x5b')]('custom:agentnoanswer',ut['buildObj'](_0x282d35,_0x6191('0xc5')));rpcDb['createCustomerHistory'](_0x282d35,_0x6191('0xc6'));if(ut[_0x6191('0xb3')](_0x282d35)>=_0x561a04[_0x6191('0xbf')]){_0xec59a9=ut['cloneAction'](_0x282d35,0xf,_0x6191('0x9e'));rpcDb[_0x6191('0x90')](_0xec59a9,_0x6191('0xc7'));}else{if(_0x282d35['countnoanswerretry']>=_0x561a04[_0x6191('0xc8')]){rpcDb[_0x6191('0x90')](_0x282d35,'[callProgressDetectingCustomer][logNoAnswer]');}else{rpcDb[_0x6191('0xa1')](ut[_0x6191('0xa2')](_0x282d35,'countnoanswerretry',_0x561a04[_0x6191('0xc9')]),_0x282d35[_0x6191('0xa4')],_0x282d35['activeContact']);}}break;case'CONGESTION':_0x561a04[_0x6191('0x38')]+=0x1;_0x282d35['countcongestionretry']+=0x1;_0x282d35[_0x6191('0xbb')]=ut[_0x6191('0xb3')](_0x282d35);ut['logCustomer'](_0x282d35,0x8,'Congestion');ami[_0x6191('0x5b')](_0x6191('0xca'),ut[_0x6191('0x9c')](_0x282d35,'congestion'));rpcDb[_0x6191('0x8d')](_0x282d35,_0x6191('0xcb'));if(ut[_0x6191('0xb3')](_0x282d35)>=_0x561a04['dialGlobalMaxRetry']){_0xec59a9=ut[_0x6191('0xcc')](_0x282d35,0xf,_0x6191('0x9e'));rpcDb[_0x6191('0x90')](_0xec59a9,_0x6191('0xcd'));}else{if(_0x282d35[_0x6191('0xce')]>=_0x561a04['dialCongestionMaxRetry']){rpcDb['createCustomerFinal'](_0x282d35,_0x6191('0xcb'));}else{rpcDb[_0x6191('0xa1')](ut['scheduledAt'](_0x282d35,_0x6191('0xce'),_0x561a04[_0x6191('0xc2')]),_0x282d35[_0x6191('0xa4')],_0x282d35['activeContact']);}}break;case _0x6191('0xcf'):_0x561a04['outboundRejectCallsDay']+=0x1;_0x282d35[_0x6191('0xd0')]+=0x1;_0x282d35[_0x6191('0xbb')]=ut[_0x6191('0xb3')](_0x282d35);ut['logCustomer'](_0x282d35,0x14,_0x6191('0xd1'));ami[_0x6191('0x5b')](_0x6191('0xd2'),ut[_0x6191('0x9c')](_0x282d35,_0x6191('0xd3')));rpcDb[_0x6191('0x8d')](_0x282d35,_0x6191('0xd4'));if(ut[_0x6191('0xb3')](_0x282d35)>=_0x561a04[_0x6191('0xbf')]){_0xec59a9=ut[_0x6191('0xcc')](_0x282d35,0x14,_0x6191('0xd1'));rpcDb[_0x6191('0x90')](_0xec59a9,_0x6191('0xd5'));}else{if(_0x282d35[_0x6191('0xd0')]>=_0x561a04[_0x6191('0xd6')]){rpcDb[_0x6191('0x90')](_0x282d35,_0x6191('0xd5'));}else{rpcDb['rescheduleContact'](ut[_0x6191('0xa2')](_0x282d35,_0x6191('0xd0'),_0x561a04[_0x6191('0xd7')]),_0x282d35[_0x6191('0xa4')],_0x282d35['activeContact']);}}break;case'ABANDONED':_0x561a04[_0x6191('0x41')]+=0x1;_0x282d35[_0x6191('0xd8')]+=0x1;_0x282d35['countglobal']=ut['totalGlobal'](_0x282d35);ut[_0x6191('0x8a')](_0x282d35,0xb,'Abandoned');rpcDb['createCustomerHistory'](_0x282d35,_0x6191('0xd9'));if(ut[_0x6191('0xb3')](_0x282d35)>=_0x561a04[_0x6191('0xbf')]){_0xec59a9=ut[_0x6191('0xcc')](_0x282d35,0xf,_0x6191('0x9e'));rpcDb[_0x6191('0x90')](_0xec59a9,_0x6191('0xd9'));}else{if(_0x282d35[_0x6191('0xda')]>=_0x561a04['dialAbandonedMaxRety']){rpcDb[_0x6191('0x90')](_0x282d35,_0x6191('0xd9'));}else{rpcDb[_0x6191('0xa1')](ut['scheduledAt'](_0x282d35,_0x6191('0xd8'),_0x561a04[_0x6191('0xdb')]),_0x282d35['unlockAgent'],_0x282d35[_0x6191('0xa5')]);}}break;case'18':_0x561a04[_0x6191('0x40')]+=0x1;_0x282d35[_0x6191('0xdc')]+=0x1;_0x282d35[_0x6191('0xbb')]=ut[_0x6191('0xb3')](_0x282d35);ut[_0x6191('0x8a')](_0x282d35,0x12,_0x3cf360[_0x6191('0xdd')]||_0x3cf360[_0x6191('0xde')]);ami['emit'](_0x6191('0xdf'),ut[_0x6191('0x9c')](_0x282d35,_0x6191('0xe0')));rpcDb[_0x6191('0x8d')](_0x282d35,_0x6191('0xe1'));if(ut['totalGlobal'](_0x282d35)>=_0x561a04[_0x6191('0xbf')]){_0xec59a9=ut[_0x6191('0xcc')](_0x282d35,0xf,_0x6191('0x9e'));rpcDb['createCustomerFinal'](_0xec59a9,'[callProgressDetectingCustomer][hangupInAMD]');}else{rpcDb[_0x6191('0x90')](_0x282d35,'[callProgressDetectingCustomer][hangupInAMD]');}delete this[_0x6191('0x16')][_0x3cf360[_0x6191('0xa6')]];break;case'19':_0x561a04['outboundUnknownCallsDay']+=0x1;_0x282d35['countglobal']=ut[_0x6191('0xb3')](_0x282d35);ut['logCustomer'](_0x282d35,0x13,_0x3cf360[_0x6191('0xdd')]||_0x3cf360['dialstatus']);ami[_0x6191('0x5b')](_0x6191('0xdf'),ut[_0x6191('0x9c')](_0x282d35,'amd'));rpcDb[_0x6191('0x8d')](_0x282d35,_0x6191('0xe2'));if(ut['totalGlobal'](_0x282d35)>=_0x561a04[_0x6191('0xbf')]){_0xec59a9=ut[_0x6191('0xcc')](_0x282d35,0xf,_0x6191('0x9e'));rpcDb[_0x6191('0x90')](_0xec59a9,_0x6191('0xe2'));}else{rpcDb[_0x6191('0x90')](_0x282d35,_0x6191('0xe2'));}delete this[_0x6191('0x16')][_0x3cf360[_0x6191('0xa6')]];break;default:if(_0x282d35[_0x6191('0x6d')]){ut['decrementTalkink'](_0x561a04,_0x6191('0xe3'));ut['loggerError'](_0x6191('0xe4')+_0x561a04[_0x6191('0x26')],_0x3cf360);}_0x561a04[_0x6191('0x40')]+=0x1;_0x282d35[_0x6191('0xbb')]=ut[_0x6191('0xb3')](_0x282d35);ut['logCustomer'](_0x282d35,0xc,_0x3cf360[_0x6191('0xdd')]||_0x3cf360[_0x6191('0xde')]);rpcDb[_0x6191('0x8d')](_0x282d35,'[callProgressDetectingCustomer][logUnknown]');if(ut['totalGlobal'](_0x282d35)>=_0x561a04['dialGlobalMaxRetry']){_0xec59a9=ut['cloneAction'](_0x282d35,0xf,_0x6191('0x9e'));rpcDb[_0x6191('0x90')](_0xec59a9,'[callProgressDetectingCustomer][logUnknownGlobal]');}else{rpcDb[_0x6191('0x90')](_0x282d35,_0x6191('0xe5'));}delete this[_0x6191('0x16')][_0x3cf360[_0x6191('0xa6')]];}if(!(_0x282d35[_0x6191('0x6d')]&&_0x4ef1e1==='16')){ut[_0x6191('0x77')](_0x561a04,_0x6191('0xe6'));logger[_0x6191('0x58')](_0x6191('0xe7'),_0x282d35[_0x6191('0xb8')],_0x6191('0xaa'),_0x561a04[_0x6191('0x26')],_0x6191('0x6b'),_0x561a04[_0x6191('0x4c')]);}if(_0x4ef1e1!==_0x6191('0xa7')){delete this[_0x6191('0x16')][_0x3cf360[_0x6191('0xa6')]];delete this[_0x6191('0x16')][_0x3cf360[_0x6191('0xe8')]];}}};Preview[_0x6191('0x11')]['callProgressDetectingAgent']=function(_0x1d71ce,_0xcda36e,_0x3975fb){if(_['isUndefined'](_0xcda36e)&&_0x6191('0xe9')!==typeof _0xcda36e){return;}if(_['isUndefined'](_0x3975fb)&&'object'!==typeof _0x3975fb){return;}switch(_0x3975fb[_0x6191('0xea')]){case'0':ut['logAgent'](_0x1d71ce,0x0,'NoSuchNumber');rpcDb[_0x6191('0xeb')](_0x1d71ce,_0x6191('0xec'));break;case'3':ut['logAgent'](_0x1d71ce,0x3,_0x6191('0xed'));rpcDb[_0x6191('0xeb')](_0x1d71ce,_0x6191('0xee'));break;case'5':ut[_0x6191('0xef')](_0x1d71ce,0x5,'Busy');rpcDb['createAgentHistory'](_0x1d71ce,_0x6191('0xf0'));break;case'8':ut[_0x6191('0xef')](_0x1d71ce,0x8,_0x6191('0xf1'));rpcDb['createAgentHistory'](_0x1d71ce,_0x6191('0xf2'));break;case'22':ut[_0x6191('0xef')](_0x1d71ce,0x16,_0x6191('0xf3'));rpcDb[_0x6191('0xeb')](_0x1d71ce,_0x6191('0xf4'));break;default:ut['logAgent'](_0x1d71ce,0xc,_0x3975fb[_0x6191('0xea')]);rpcDb[_0x6191('0xeb')](_0x1d71ce,_0x6191('0xf2'));}ut['updateOriginated'](_0xcda36e,'[callProgressDetectingAgent]');logger[_0x6191('0x58')](_0x6191('0xf5'),_0x1d71ce[_0x6191('0xb8')],_0x6191('0xaa'),_0xcda36e[_0x6191('0x26')],'originated:\x20',_0xcda36e[_0x6191('0x4c')]);delete this[_0x6191('0x16')][_0x1d71ce[_0x6191('0xb8')]];};Preview[_0x6191('0x11')][_0x6191('0xf6')]=function(_0x24738b,_0x339ee9,_0x4f8315,_0x481b41,_0x4bac63){var _0x3a63be=this;return new BPromise(function(_0x390b0d,_0x50f0b3){if(_[_0x6191('0x67')](_0x339ee9)||_[_0x6191('0x67')](_0x339ee9[_0x6191('0xf7')])||_[_0x6191('0x67')](_0x339ee9[_0x6191('0xf7')][_0x6191('0xf8')])||_[_0x6191('0x67')](_0x339ee9[_0x6191('0x70')])){_0x50f0b3(ut[_0x6191('0x4b')](_0x6191('0xf9'),_0x481b41,_0x4bac63));return;}var _0x402290=uuid['v4']();var _0x47a10b=_0x3a63be[_0x6191('0x63')][_0x339ee9[_0x6191('0x69')][_0x6191('0x26')]];var _0x4fd0ab=_0x4f8315?_0x3a63be['agents'][_0x4f8315]['id']:undefined;_0x3a63be['actions'][_0x402290]=new Action(_0x339ee9,_0x47a10b,_0x402290,_0x4f8315,_0x4fd0ab);var _0x23ceba=_0x3a63be[_0x6191('0x16')][_0x402290];_0x23ceba[_0x6191('0xa4')]=_0x481b41;_0x23ceba[_0x6191('0xa5')]=_0x4bac63;_0x23ceba['lookAgent']=_0x4f8315;if(_[_0x6191('0xfa')](_0x24738b)){_0x3a63be['execCall'](_0x23ceba,_0x47a10b,_0x339ee9,_0x4f8315)[_0x6191('0x7f')](function(_0x1a3a6b){logger['info']('[Preview][execCall][success]',_0x6191('0xfb')+_0x23ceba[_0x6191('0x6a')]+_0x6191('0xfc')+_0x23ceba[_0x6191('0xfd')],JSON[_0x6191('0x55')](_0x1a3a6b));ami['emit'](_0x6191('0xfe'),ut[_0x6191('0x9c')](_0x23ceba,'called',_0x3a63be['campaignsPreview'][_0x23ceba['queue']]));_0x390b0d(ut[_0x6191('0x4b')]('Calling'));})[_0x6191('0x75')](function(_0x30789a){ut[_0x6191('0x61')](_0x6191('0xff'),_0x30789a);_0x50f0b3(ut[_0x6191('0x4b')](_0x6191('0x100'),_0x481b41,_0x4bac63));});}else{_0x47a10b[_0x6191('0x101')]+=0x1;ut['logBlacklist'](_0x23ceba);rpcDb[_0x6191('0x102')](_0x23ceba,_0x6191('0x103'));delete _0x3a63be[_0x6191('0x16')][_0x402290];_0x50f0b3(ut['message'](_0x6191('0x104'),_0x481b41,_0x4bac63));}});};Preview['prototype'][_0x6191('0x94')]=function(_0x13f9dc){return!_['isNil'](_0x13f9dc)&&!_['isNil'](_0x13f9dc['name'])&&!_[_0x6191('0x67')](_0x13f9dc[_0x6191('0x52')])&&_0x13f9dc[_0x6191('0x52')]&&!_[_0x6191('0x67')](this[_0x6191('0x15')][util[_0x6191('0x56')](_0x6191('0x105'),_0x13f9dc['name'])])&&!_[_0x6191('0x67')](this[_0x6191('0x15')][util['format']('SIP/%s',_0x13f9dc[_0x6191('0x26')])][_0x6191('0x73')])&&(this['trunks'][util['format'](_0x6191('0x105'),_0x13f9dc['name'])][_0x6191('0x73')]==='reachable'||this[_0x6191('0x15')][util[_0x6191('0x56')]('SIP/%s',_0x13f9dc[_0x6191('0x26')])][_0x6191('0x73')]===_0x6191('0x106'));};Preview[_0x6191('0x11')][_0x6191('0x107')]=function(_0x581170,_0x200803){var _0x42eb99=this;return new BPromise(function(_0x47ee27,_0xc48d9b){_0x42eb99[_0x6191('0x108')](_0x581170,_0x200803)['then'](function(_0x56294d){_0x47ee27(_[_0x6191('0x6e')](_0x56294d,[_0x6191('0x4b')]));})[_0x6191('0x75')](function(_0x24aec7){if(_0x24aec7[_0x6191('0x109')]){rpcDb[_0x6191('0x10a')](_0x581170);}if(_0x24aec7[_0x6191('0x52')]){rpcDb['disableContact'](_0x581170);}_0xc48d9b(_[_0x6191('0x6e')](_0x24aec7,['message']));});});};Preview[_0x6191('0x11')]['execRun']=function(_0xb90685,_0x38279f){var _0x3e624f=this;return new BPromise(function(_0x20db7a,_0xdc30f6){var _0x4d5089,_0x12cfb1;rpcDb[_0x6191('0x10b')](_0xb90685)[_0x6191('0x7f')](function(_0x1ea8ed){if(!_[_0x6191('0x67')](_0x1ea8ed[0x0])){_0x12cfb1=_0x1ea8ed[0x0][_0x6191('0x10c')]?![]:!![];_0x4d5089=_0x1ea8ed[0x0][_0x6191('0x10c')]?!![]:![];_0x4d5089=_0x38279f?!![]:_0x4d5089;}var _0x39d371=_0x3e624f[_0x6191('0x10d')](_0x1ea8ed);if(_0x39d371[_0x6191('0x10e')]){rpcDb[_0x6191('0x10f')](_['pick'](_0x1ea8ed[0x0],[_0x6191('0x70'),'Contact.phone']))[_0x6191('0x7f')](function(_0xe05f97){_0x3e624f[_0x6191('0xf6')](_0xe05f97,_0x1ea8ed[0x0],_0x38279f,_0x12cfb1,_0x4d5089)['then'](function(_0x54f151){_0x20db7a(_0x54f151);})[_0x6191('0x75')](function(_0x1a5317){_0xdc30f6(_0x1a5317);});})['catch'](function(_0x1e26f4){ut[_0x6191('0x61')](_0x6191('0x110'),_0x1e26f4);_0xdc30f6(ut[_0x6191('0x4b')]('Call\x20unsuccessful',_0x12cfb1,_0x4d5089));});}else{_0xdc30f6(ut[_0x6191('0x4b')](_0x39d371['message'],_0x12cfb1,_0x4d5089));}})['catch'](function(_0x162c4e){ut['logger'](_0x6191('0x111'),_0x162c4e);_0xdc30f6(ut[_0x6191('0x4b')](_0x6191('0x112'),![],!![]));});});};Preview['prototype'][_0x6191('0x10d')]=function(_0x4ae96f){if(_[_0x6191('0x67')](_0x4ae96f)||_[_0x6191('0xfa')](_0x4ae96f)||!_[_0x6191('0x67')](_0x4ae96f[0x0][_0x6191('0x83')])&&_[_0x6191('0x67')](_0x4ae96f[0x0]['Agent'][_0x6191('0x26')])){ut[_0x6191('0x61')](_0x6191('0x113'),_0x4ae96f);return{'isValid':![],'message':'Empty\x20Contact'};}var _0x2fe8b6=this[_0x6191('0x63')][_0x4ae96f[0x0]['Queue'][_0x6191('0x26')]];_0x2fe8b6[_0x6191('0x4b')]=_0x6191('0x97');if(_[_0x6191('0x67')](_0x2fe8b6)){ut[_0x6191('0x61')](_0x6191('0x114'),_0x2fe8b6);return{'isValid':![],'message':_0x6191('0x115')};}if(!this[_0x6191('0x94')](_0x2fe8b6[_0x6191('0x51')])){ut[_0x6191('0x61')]('[Preview][validateContact][Trunk\x20not\x20work]',_0x6191('0x116')+_0x2fe8b6['name']+_0x6191('0x117'));if(!this['isTrunkReachable'](_0x2fe8b6[_0x6191('0x95')])){ut[_0x6191('0x61')](_0x6191('0x118'),_0x2fe8b6[_0x6191('0x26')]+_0x6191('0x119'));return{'isValid':![],'message':_0x6191('0x11a')};}}if(!ut[_0x6191('0x93')](_0x2fe8b6[_0x6191('0x30')])){ut['logger']('[Preview][validateContact][Campaign\x20Active]',_0x2fe8b6[_0x6191('0x26')]+_0x6191('0x11b'));return{'isValid':![],'message':_0x6191('0x116')+_0x2fe8b6[_0x6191('0x26')]+_0x6191('0x11b')};}return{'isValid':!![],'message':_0x6191('0x11c')};};Preview[_0x6191('0x11')][_0x6191('0x11d')]=function(_0x129280,_0x34f536,_0x5370dc,_0x3d304a){var _0x164206=this;return new BPromise(function(_0x548a91,_0x1d0135){var _0x53afff=_0x129280['uniqueid'];var _0x312ac0=_0x164206[_0x6191('0x94')](_0x34f536['Trunk'])?util['format'](_0x6191('0x11e'),_0x34f536[_0x6191('0x51')]['name'],_[_0x6191('0x67')](_0x34f536['dialPrefix'])?'':_0x34f536[_0x6191('0x34')][_0x6191('0x11f')]()||'',_0x34f536[_0x6191('0x120')]>0x0?_0x5370dc[_0x6191('0xf7')][_0x6191('0xf8')][_0x6191('0x121')](_0x34f536[_0x6191('0x120')]):_0x5370dc[_0x6191('0xf7')][_0x6191('0xf8')]):util[_0x6191('0x56')](_0x6191('0x11e'),_['isNil'](_0x34f536[_0x6191('0x95')])?_0x34f536[_0x6191('0x51')][_0x6191('0x26')]:_0x34f536[_0x6191('0x95')][_0x6191('0x26')],_[_0x6191('0x67')](_0x34f536[_0x6191('0x34')])?'':_0x34f536[_0x6191('0x34')][_0x6191('0x11f')]()||'',_0x34f536['dialCutDigit']>0x0?_0x5370dc[_0x6191('0xf7')][_0x6191('0xf8')][_0x6191('0x121')](_0x34f536[_0x6191('0x120')]):_0x5370dc['Contact'][_0x6191('0xf8')]);var _0xc0ea1f=_0x164206[_0x6191('0x94')](_0x34f536[_0x6191('0x51')])?ut[_0x6191('0x122')](_0x34f536[_0x6191('0x51')][_0x6191('0x53')],_0x34f536[_0x6191('0x32')],_0x34f536[_0x6191('0x123')]>0x0?ut[_0x6191('0x124')](_0x34f536[_0x6191('0x33')],_0x34f536[_0x6191('0x123')]):_0x34f536[_0x6191('0x33')]):ut[_0x6191('0x122')](_['isNil'](_0x34f536['TrunkBackup'])?_0x34f536[_0x6191('0x51')][_0x6191('0x53')]:_0x34f536[_0x6191('0x95')][_0x6191('0x53')],_0x34f536[_0x6191('0x32')],_0x34f536[_0x6191('0x123')]>0x0?ut[_0x6191('0x124')](_0x34f536[_0x6191('0x33')],_0x34f536[_0x6191('0x123')]):_0x34f536['dialOriginateCallerIdNumber']);if(_0xc0ea1f){_0x129280[_0x6191('0x125')]=ut[_0x6191('0x126')](_0xc0ea1f);_0x129280[_0x6191('0x127')]=ut[_0x6191('0x128')](_0xc0ea1f);}var _0x22f38d=ut['addVariables'](_0x34f536,_0x5370dc,_0x312ac0,_0xc0ea1f,_0x53afff,_0x129280);_['merge'](_0x129280,ut[_0x6191('0x129')](_0x22f38d));_0x129280[_0x6191('0x88')]=moment()[_0x6191('0x56')](_0x6191('0x89'));ami[_0x6191('0x72')](ut['variablesAction'](_0x129280,_0x34f536,_0x22f38d,_0x129280[_0x6191('0xa5')],_0x3d304a))[_0x6191('0x7f')](function(_0x1a647d){var _0x553396=_0x129280[_0x6191('0x12a')];if(!_[_0x6191('0x67')](_0x553396)){if(!_[_0x6191('0x67')](_0x164206[_0x6191('0x17')][_0x553396])){_0x164206[_0x6191('0x17')][_0x553396][_0x6191('0x12b')]=_0x129280[_0x6191('0x12c')];emit(util[_0x6191('0x56')](_0x6191('0x12d'),_0x164206['agents'][_0x553396][_0x6191('0x26')]),_0x6191('0x12e'),{'destaccountcode':_0x164206[_0x6191('0x17')][_0x553396][_0x6191('0x12f')],'destconnectedlinenum':_0x129280[_0x6191('0x12c')]});}}_0x34f536['originated']+=0x1;logger[_0x6191('0x58')](_0x6191('0x130'),_0x53afff,_0x6191('0xaa'),_0x34f536[_0x6191('0x26')],_0x6191('0x6b'),_0x34f536[_0x6191('0x4c')]);_0x548a91(_0x1a647d);})[_0x6191('0x75')](function(_0x168d19){ut[_0x6191('0xef')](_0x129280,0xe,_0x6191('0x131'));rpcDb[_0x6191('0xeb')](_0x129280,_0x6191('0x132'));_0x1d0135(_0x168d19);});});};Preview['prototype'][_0x6191('0x1f')]=function(_0x59e262){if(this[_0x6191('0x16')][_0x59e262['linkedid']]){this[_0x6191('0x16')][_0x59e262[_0x6191('0xa6')]][_0x6191('0x74')]=_0x59e262[_0x6191('0x74')];}};Preview[_0x6191('0x11')][_0x6191('0x133')]=function(_0x497d31){var _0x55154e=this;var _0x1bda02=this[_0x6191('0x16')][_0x497d31[_0x6191('0x134')]];if(_0x1bda02){if(_0x1bda02[_0x6191('0x135')]&&this[_0x6191('0x17')][_0x1bda02[_0x6191('0x135')]]){ut[_0x6191('0x136')](_0x1bda02,this[_0x6191('0x17')][_0x1bda02[_0x6191('0x135')]]['name'],this['agents'][_0x1bda02[_0x6191('0x135')]]['id']);}var _0x4fd7e8=_['clone'](_0x1bda02);_0x4fd7e8[_0x6191('0xa8')]=moment()[_0x6191('0x56')]('YYYY-MM-DD\x20HH:mm:ss');var _0x1b3e49=_0x55154e[_0x6191('0x63')][_0x1bda02[_0x6191('0x6a')]];if(ut[_0x6191('0x137')](_0x497d31[_0x6191('0x138')])){if(_0x1bda02[_0x6191('0xa4')]){rpcDb[_0x6191('0x10a')](_0x1bda02[_0x6191('0xfd')]);}if(_0x1bda02[_0x6191('0xa5')]){rpcDb['disableContact'](_0x1bda02[_0x6191('0xfd')]);}ami[_0x6191('0x5b')](_0x6191('0x139'),ut[_0x6191('0x9c')](_0x1bda02,_0x6191('0x13a'),this[_0x6191('0x63')][_0x1bda02[_0x6191('0x6a')]]));this['callProgressDetectingAgent'](_0x4fd7e8,_0x1b3e49,_0x497d31);}else{_0x1bda02[_0x6191('0x88')]=moment()[_0x6191('0x56')](_0x6191('0x89'));ut[_0x6191('0xef')](_0x4fd7e8,0x4,_0x6191('0xb4'));rpcDb[_0x6191('0xeb')](_0x4fd7e8,_0x6191('0x13b'));}}};Preview[_0x6191('0x11')][_0x6191('0x13c')]=function(_0x50745a){var _0x45a6c4=this;var _0x2b5beb=this[_0x6191('0x16')][_0x50745a[_0x6191('0xa6')]];var _0x24f52f;if(_0x2b5beb){_0x24f52f=this[_0x6191('0x63')][_0x2b5beb[_0x6191('0x6a')]];logger[_0x6191('0x58')](_0x6191('0x13d'),_0x50745a['linkedid'],_0x6191('0xaa'),_0x24f52f[_0x6191('0x26')],_0x6191('0x6c'),_0x24f52f[_0x6191('0x5d')]);}if(this[_0x6191('0x16')][_0x50745a[_0x6191('0xa6')]]&&_0x50745a[_0x6191('0xa6')]!==_0x50745a[_0x6191('0xb8')]){if(_0x50745a[_0x6191('0x13e')]==='16'&&this[_0x6191('0x16')][_0x50745a[_0x6191('0xa6')]]['dialAnswer']){this[_0x6191('0x98')](_0x50745a,_0x50745a[_0x6191('0xa6')],_0x50745a['cause']);}else if(this[_0x6191('0x16')][_0x50745a['linkedid']][_0x6191('0x6d')]){logger[_0x6191('0x58')](_0x6191('0x13f'),_0x50745a[_0x6191('0xa6')],_0x50745a[_0x6191('0x13e')],_0x6191('0xaa'),_0x24f52f[_0x6191('0x26')],_0x6191('0x6c'),_0x24f52f['pTalking']);this[_0x6191('0x98')](_0x50745a,_0x50745a[_0x6191('0xa6')],_0x50745a[_0x6191('0x13e')]);}}else if(_0x2b5beb&&_['isNil'](_0x2b5beb[_0x6191('0x140')])&&_0x24f52f[_0x6191('0x141')]&&_0x50745a[_0x6191('0xa6')]===_0x50745a[_0x6191('0xb8')]&&_[_0x6191('0x67')](_0x50745a['reason'])&&_0x50745a['cause']==='16'&&_0x50745a[_0x6191('0x142')]==='6'&&_[_0x6191('0x143')](_0x2b5beb['transfer'])){if(_0x2b5beb[_0x6191('0xa4')]){rpcDb[_0x6191('0x10a')](_0x2b5beb['idContact']);}if(_0x2b5beb[_0x6191('0xa5')]){rpcDb[_0x6191('0x87')](_0x2b5beb['idContact']);}_0x50745a[_0x6191('0xea')]='22';this[_0x6191('0x144')](_0x2b5beb,_0x24f52f,_0x50745a);}else if(_0x2b5beb&&_0x2b5beb['transfer']){if(_0x50745a['cause']==='16'&&this[_0x6191('0x16')][_0x50745a[_0x6191('0xa6')]][_0x6191('0x6d')]){logger[_0x6191('0x58')](_0x6191('0x145'),_0x50745a[_0x6191('0xa6')],_0x50745a['cause'],_0x6191('0xaa'),_0x24f52f[_0x6191('0x26')],'pTalking:\x20',_0x24f52f[_0x6191('0x5d')]);this[_0x6191('0x98')](_0x50745a,_0x50745a[_0x6191('0xa6')],_0x50745a[_0x6191('0x13e')]);}else if(this[_0x6191('0x16')][_0x50745a[_0x6191('0xa6')]]['dialAnswer']){logger[_0x6191('0x58')](_0x6191('0x13f'),_0x50745a[_0x6191('0xa6')],_0x50745a['cause'],_0x6191('0xaa'),_0x24f52f[_0x6191('0x26')],_0x6191('0x6c'),_0x24f52f[_0x6191('0x5d')]);this[_0x6191('0x98')](_0x50745a,_0x50745a['linkedid'],_0x50745a[_0x6191('0x13e')]);}}};Preview['prototype'][_0x6191('0x1e')]=function(_0x486225){if(this[_0x6191('0x16')][_0x486225[_0x6191('0xe8')]]&&_0x486225[_0x6191('0xe8')]!==_0x486225[_0x6191('0x146')]){this['callProgressDetectingCustomer'](_0x486225,_0x486225[_0x6191('0xe8')],_0x486225[_0x6191('0xde')]);}};Preview['prototype']['syncHangupRequest']=function(_0x5543ed){if(this[_0x6191('0x16')][_0x5543ed[_0x6191('0xa6')]]&&_0x5543ed['linkedid']!==_0x5543ed[_0x6191('0xb8')]&&!this[_0x6191('0x16')][_0x5543ed['linkedid']][_0x6191('0x6d')]){if(_0x5543ed[_0x6191('0x13e')]==='1'){this[_0x6191('0x98')](_0x5543ed,_0x5543ed['linkedid'],_0x5543ed[_0x6191('0x13e')]);}}};Preview[_0x6191('0x11')][_0x6191('0x147')]=function(_0x2a93fb,_0x42c647,_0x4ba263){if(this['actions'][_0x2a93fb]){if(_[_0x6191('0x67')](this[_0x6191('0x16')][_0x2a93fb][_0x6191('0x148')])){this[_0x6191('0x16')][_0x2a93fb]['variables']={};}this['actions'][_0x2a93fb][_0x6191('0x148')][_0x42c647]=_0x4ba263;}};Preview[_0x6191('0x11')][_0x6191('0x149')]=function(_0x2924f7){try{if(!_['isNil'](_0x2924f7)){if(ut[_0x6191('0x14a')](_[_0x6191('0x14b')](_0x2924f7[_0x6191('0x14c')])[0x0])){this[_0x6191('0x147')](_0x2924f7[_0x6191('0xb8')],_[_0x6191('0x14b')](_0x2924f7[_0x6191('0x14c')])[0x0],_0x2924f7[_0x6191('0x14d')]);}}}catch(_0x17fefc){logger[_0x6191('0x14e')]('[syncVarSet][Preview]',util[_0x6191('0x14f')](_0x17fefc,{'showHidden':![],'depth':null}));}};Preview[_0x6191('0x11')][_0x6191('0x150')]=function(_0x30dfef){if(_0x30dfef){if(this[_0x6191('0x16')][_0x30dfef['transfertargetlinkedid']]){this[_0x6191('0x16')][_0x30dfef[_0x6191('0x151')]][_0x6191('0x152')]=!![];}}};Preview[_0x6191('0x11')][_0x6191('0x153')]=function(_0x207368){if(_0x207368){if(this['actions'][_0x207368['transfererlinkedid']]){this['actions'][_0x207368[_0x6191('0x154')]][_0x6191('0x152')]=!![];}}};module['exports']=Preview;
\ No newline at end of file
index e79d956..111e1f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x429c=['type','uniqueid','calleridnum','calleridname','queuecallerjoinAt','queuecallerleaveAt','endtime','membername','context','from-sip','xcally-motion-preview','holdtime','assigned','lastAssignedTo','queuecallerexitreason','COMPLETED','create','[voiceQueueReport]\x20','[GetContactRecallMe]\x20','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','bluebird','../../../config/logger','preview','lodash','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/voiceQueueReport','error','inspect','resolve','catch','[createHistory]\x20','then','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createAgentHistory','createCustomerFinal','rescheduleContact','active','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','disableContact','[activeContact]\x20','crateCustomerReportQueue'];(function(_0x1382be,_0x49bc15){var _0x1cdb85=function(_0x5b14cc){while(--_0x5b14cc){_0x1382be['push'](_0x1382be['shift']());}};_0x1cdb85(++_0x49bc15);}(_0x429c,0x147));var _0xc429=function(_0x521134,_0x22ebad){_0x521134=_0x521134-0x0;var _0x523c1c=_0x429c[_0x521134];return _0x523c1c;};'use strict';var util=require('util');var BPromise=require(_0xc429('0x0'));var logger=require(_0xc429('0x1'))(_0xc429('0x2'));var _=require(_0xc429('0x3'));var cmHopper=require(_0xc429('0x4'));var cmHopperFinal=require('../rpc/cmHopperFinal');var cmHopperHistory=require(_0xc429('0x5'));var cmHopperBlack=require(_0xc429('0x6'));var voiceQueueRt=require(_0xc429('0x7'));var agentReportPreview=require('../rpc/agentReportPreview');var voiceQueueReport=require(_0xc429('0x8'));function loggerCatch(_0x4f1f11){return function(_0x2e0122){logger[_0xc429('0x9')](_0x4f1f11,util[_0xc429('0xa')](_0x2e0122,{'showHidden':![],'depth':null}));};}function create(_0x28717e){return BPromise[_0xc429('0xb')]()['then'](cmHopperHistory['createHistory'](_0x28717e))[_0xc429('0xc')](loggerCatch(_0xc429('0xd')));}function createAgent(_0x549613){return BPromise['resolve']()[_0xc429('0xe')](agentReportPreview['createHistory'](_0x549613))[_0xc429('0xc')](loggerCatch(_0xc429('0xd')));}function moveContact(_0x6d5080){return BPromise[_0xc429('0xb')]()[_0xc429('0xe')](cmHopper['moveContactManagedDialer'](_0x6d5080,!![]))[_0xc429('0xc')](loggerCatch('[moveContactManagedDialer]\x20'));}exports['checkIsBlackList']=function(_0x3999b8){return BPromise[_0xc429('0xb')]()[_0xc429('0xe')](cmHopperBlack[_0xc429('0xf')](_0x3999b8))[_0xc429('0xc')](loggerCatch(_0xc429('0x10')));};exports['getContactPreview']=function(_0x53673f){return BPromise[_0xc429('0xb')]()[_0xc429('0xe')](cmHopper[_0xc429('0x11')](_0x53673f))[_0xc429('0xc')](loggerCatch(_0xc429('0x12')));};exports['createHistory']=function(_0x8ec1b,_0x2ef499){create(_0x8ec1b)['catch'](loggerCatch(_0x2ef499));moveContact(_0x8ec1b)['catch'](loggerCatch(_0x2ef499));};exports[_0xc429('0x13')]=function(_0x4d9cfa,_0x4079eb){createAgent(_0x4d9cfa)[_0xc429('0xc')](loggerCatch(_0x4079eb));};exports['createCustomerHistory']=function(_0x3773c3,_0x25a300){create(_0x3773c3)[_0xc429('0xc')](loggerCatch(_0x25a300));};exports[_0xc429('0x14')]=function(_0x2000a2,_0x2f6ccb){moveContact(_0x2000a2)[_0xc429('0xc')](loggerCatch(_0x2f6ccb));};exports[_0xc429('0x15')]=function(_0x77f80,_0x36a207,_0x51c047){if(_0x36a207){_0x77f80['UserId']=null;}if(_0x51c047){_0x77f80[_0xc429('0x16')]=![];}return BPromise[_0xc429('0xb')]()['then'](cmHopper[_0xc429('0x15')](_0x77f80))[_0xc429('0xc')](loggerCatch(_0xc429('0x17')));};exports[_0xc429('0x18')]=function(_0x3f91d0){return BPromise['resolve']()[_0xc429('0xe')](cmHopper[_0xc429('0x18')](_0x3f91d0))['catch'](loggerCatch(_0xc429('0x19')));};exports['unlockContact']=function(_0x4c9633){return BPromise[_0xc429('0xb')]()[_0xc429('0xe')](cmHopper[_0xc429('0x1a')]({'UserId':null},_0x4c9633,0x1))[_0xc429('0xc')](loggerCatch('[unlockContact]\x20'));};exports[_0xc429('0x1b')]=function(_0x4fbc4a){return BPromise[_0xc429('0xb')]()['then'](cmHopper[_0xc429('0x1a')]({'active':![]},_0x4fbc4a,0x1))[_0xc429('0xc')](loggerCatch(_0xc429('0x1c')));};exports[_0xc429('0x1d')]=function(_0x43f663){var _0xcf1470={};_0xcf1470[_0xc429('0x1e')]=_0x43f663[_0xc429('0x1e')];_0xcf1470['uniqueid']=_0x43f663[_0xc429('0x1f')];_0xcf1470[_0xc429('0x20')]=_0x43f663['calleridnum'];_0xcf1470[_0xc429('0x21')]=_0x43f663[_0xc429('0x21')];_0xcf1470['queue']=_0x43f663['queue'];_0xcf1470[_0xc429('0x22')]=_0x43f663['answertime'];_0xcf1470[_0xc429('0x23')]=_0x43f663['answertime'];_0xcf1470['queuecallercomplete']=0x1;_0xcf1470['queuecallercompleteAt']=_0x43f663[_0xc429('0x24')];_0xcf1470['connectedlinename']=_0x43f663[_0xc429('0x25')];_0xcf1470[_0xc429('0x26')]=_0xc429('0x27');_0xcf1470['exten']=_0xc429('0x28');_0xcf1470[_0xc429('0x29')]=0x0;_0xcf1470[_0xc429('0x2a')]=0x1;_0xcf1470[_0xc429('0x2b')]=_0x43f663[_0xc429('0x25')];_0xcf1470[_0xc429('0x2c')]=_0xc429('0x2d');return BPromise[_0xc429('0xb')]()[_0xc429('0xe')](voiceQueueReport[_0xc429('0x2e')](_0xcf1470))[_0xc429('0xc')](loggerCatch(_0xc429('0x2f')));};exports['getContactRecallMe']=function(_0x3fdfd1,_0x32dce7){return BPromise[_0xc429('0xb')]()[_0xc429('0xe')](cmHopper['getContactRecallMe'](_0x3fdfd1,_0x32dce7))[_0xc429('0xc')](loggerCatch(_0xc429('0x30')));};exports[_0xc429('0x31')]=function(_0xaf4073){return BPromise[_0xc429('0xb')]()['then'](cmHopper[_0xc429('0x15')](_0xaf4073,!![],!![]))[_0xc429('0xc')](loggerCatch(_0xc429('0x32')));};
\ No newline at end of file
+var _0x6dc9=['[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','util','lodash','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/agentReportPreview','../rpc/voiceQueueReport','resolve','then','catch','[createHistory]\x20','moveContactManagedDialer','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createCustomerFinal','rescheduleContact','UserId','active','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','disableContact','[activeContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallercomplete','queuecallercompleteAt','endtime','connectedlinename','from-sip','exten','holdtime','assigned','lastAssignedTo','membername','queuecallerexitreason','COMPLETED','create'];(function(_0x3d5cde,_0x14a795){var _0x4fd53d=function(_0x8598b9){while(--_0x8598b9){_0x3d5cde['push'](_0x3d5cde['shift']());}};_0x4fd53d(++_0x14a795);}(_0x6dc9,0x108));var _0x96dc=function(_0x3bac05,_0xe3556a){_0x3bac05=_0x3bac05-0x0;var _0x5bc64b=_0x6dc9[_0x3bac05];return _0x5bc64b;};'use strict';var util=require(_0x96dc('0x0'));var BPromise=require('bluebird');var logger=require('../../../config/logger')('preview');var _=require(_0x96dc('0x1'));var cmHopper=require(_0x96dc('0x2'));var cmHopperFinal=require(_0x96dc('0x3'));var cmHopperHistory=require(_0x96dc('0x4'));var cmHopperBlack=require(_0x96dc('0x5'));var voiceQueueRt=require('../rpc/voiceQueueRt');var agentReportPreview=require(_0x96dc('0x6'));var voiceQueueReport=require(_0x96dc('0x7'));function loggerCatch(_0x4f5874){return function(_0x45e167){logger['error'](_0x4f5874,util['inspect'](_0x45e167,{'showHidden':![],'depth':null}));};}function create(_0x5ad5a4){return BPromise[_0x96dc('0x8')]()[_0x96dc('0x9')](cmHopperHistory['createHistory'](_0x5ad5a4))[_0x96dc('0xa')](loggerCatch('[createHistory]\x20'));}function createAgent(_0x3c9c79){return BPromise[_0x96dc('0x8')]()[_0x96dc('0x9')](agentReportPreview['createHistory'](_0x3c9c79))['catch'](loggerCatch(_0x96dc('0xb')));}function moveContact(_0x4a8f4c){return BPromise[_0x96dc('0x8')]()['then'](cmHopper[_0x96dc('0xc')](_0x4a8f4c,!![]))[_0x96dc('0xa')](loggerCatch('[moveContactManagedDialer]\x20'));}exports[_0x96dc('0xd')]=function(_0x77693a){return BPromise[_0x96dc('0x8')]()['then'](cmHopperBlack[_0x96dc('0xd')](_0x77693a))['catch'](loggerCatch(_0x96dc('0xe')));};exports[_0x96dc('0xf')]=function(_0x4dd1ea){return BPromise[_0x96dc('0x8')]()[_0x96dc('0x9')](cmHopper['getContactPreview'](_0x4dd1ea))[_0x96dc('0xa')](loggerCatch(_0x96dc('0x10')));};exports['createHistory']=function(_0x52dbcc,_0x1d633b){create(_0x52dbcc)[_0x96dc('0xa')](loggerCatch(_0x1d633b));moveContact(_0x52dbcc)[_0x96dc('0xa')](loggerCatch(_0x1d633b));};exports['createAgentHistory']=function(_0x516858,_0x2a0f0d){createAgent(_0x516858)[_0x96dc('0xa')](loggerCatch(_0x2a0f0d));};exports['createCustomerHistory']=function(_0x40df90,_0x883c25){create(_0x40df90)[_0x96dc('0xa')](loggerCatch(_0x883c25));};exports[_0x96dc('0x11')]=function(_0x82ce2c,_0xa4bfe){moveContact(_0x82ce2c)[_0x96dc('0xa')](loggerCatch(_0xa4bfe));};exports[_0x96dc('0x12')]=function(_0x5b0d1f,_0x4e6853,_0x3723a6){if(_0x4e6853){_0x5b0d1f[_0x96dc('0x13')]=null;}if(_0x3723a6){_0x5b0d1f[_0x96dc('0x14')]=![];}return BPromise[_0x96dc('0x8')]()['then'](cmHopper[_0x96dc('0x12')](_0x5b0d1f))['catch'](loggerCatch(_0x96dc('0x15')));};exports[_0x96dc('0x16')]=function(_0x2804c9){return BPromise[_0x96dc('0x8')]()['then'](cmHopper[_0x96dc('0x16')](_0x2804c9))['catch'](loggerCatch(_0x96dc('0x17')));};exports[_0x96dc('0x18')]=function(_0x578f85){return BPromise[_0x96dc('0x8')]()['then'](cmHopper[_0x96dc('0x18')]({'UserId':null},_0x578f85,0x1))[_0x96dc('0xa')](loggerCatch('[unlockContact]\x20'));};exports[_0x96dc('0x19')]=function(_0x3cbc19){return BPromise[_0x96dc('0x8')]()[_0x96dc('0x9')](cmHopper['unlockContact']({'active':![]},_0x3cbc19,0x1))[_0x96dc('0xa')](loggerCatch(_0x96dc('0x1a')));};exports[_0x96dc('0x1b')]=function(_0x29694a){var _0x24df41={};_0x24df41['type']=_0x29694a[_0x96dc('0x1c')];_0x24df41[_0x96dc('0x1d')]=_0x29694a[_0x96dc('0x1d')];_0x24df41[_0x96dc('0x1e')]=_0x29694a[_0x96dc('0x1e')];_0x24df41[_0x96dc('0x1f')]=_0x29694a[_0x96dc('0x1f')];_0x24df41[_0x96dc('0x20')]=_0x29694a[_0x96dc('0x20')];_0x24df41[_0x96dc('0x21')]=_0x29694a['answertime'];_0x24df41['queuecallerleaveAt']=_0x29694a[_0x96dc('0x22')];_0x24df41[_0x96dc('0x23')]=0x1;_0x24df41[_0x96dc('0x24')]=_0x29694a[_0x96dc('0x25')];_0x24df41[_0x96dc('0x26')]=_0x29694a['membername'];_0x24df41['context']=_0x96dc('0x27');_0x24df41[_0x96dc('0x28')]='xcally-motion-preview';_0x24df41[_0x96dc('0x29')]=0x0;_0x24df41[_0x96dc('0x2a')]=0x1;_0x24df41[_0x96dc('0x2b')]=_0x29694a[_0x96dc('0x2c')];_0x24df41[_0x96dc('0x2d')]=_0x96dc('0x2e');return BPromise[_0x96dc('0x8')]()['then'](voiceQueueReport[_0x96dc('0x2f')](_0x24df41))[_0x96dc('0xa')](loggerCatch(_0x96dc('0x30')));};exports[_0x96dc('0x31')]=function(_0x437637,_0xf17743){return BPromise[_0x96dc('0x8')]()[_0x96dc('0x9')](cmHopper[_0x96dc('0x31')](_0x437637,_0xf17743))[_0x96dc('0xa')](loggerCatch(_0x96dc('0x32')));};exports[_0x96dc('0x33')]=function(_0x5fe538){return BPromise[_0x96dc('0x8')]()[_0x96dc('0x9')](cmHopper[_0x96dc('0x12')](_0x5fe538,!![],!![]))['catch'](loggerCatch('[rescheduleContactInQueue]\x20'));};
\ No newline at end of file
index 6c9627c..a81f5ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x366c=['channelAgent','from-sip','timeout','uniqueid','totalGlobal','countbusyretry','countcongestionretry','countnoanswerretry','countagentrejectretry','cloneAction','clone','Global','active','add','minutes','ContactId','ListId','VoiceQueueId','decrementTalkink','pTalking','[decrementTalkink]\x20is\x20null\x20or\x20undefined','buildObj','lastevent','queue','interface','motionChannel','mandatoryDisposition','agentReadyId','not_inuse','status','reachable','push','getDiff','diff','CampaignId','filterKey','countglobal','callback','callbackuniqueid','callbackat','recallme','sipcallid','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-dialchannel','xmd-cdrtype','xmd-callerid','xmd-agiafter','xmd-agi','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','bridgepeer','bridgepvtcallid','\x5cw{0,','pow','replace','random','extractCalleridName','match','extractCalleridNumber','util','../../../../config/logger','preview','XCALLY_IP_AGI','milliseconds','seconds','error','inspect','logger','info','loggerError','logger2','message','getCallerId','isUndefined','string','isEmpty','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','isActive','isNil','addVariables','Queue','name','calleridname','calleridnum','dialer','dialOriginateTimeout','\x22rtTxX%s%s\x22','dialQueueProject2','U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','originatecalleridname','xcally-motion-preview','monitor_format','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','tags','XMD-','toLowerVariables','hasOwnProperty','toLower','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','Blacklist','starttime','endtime','logAgent','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','responsetime','logLookAgent','membername','UserId','logCustomer','ringtime','talktime','answertime','isFailure','RECALL','BOOKED','originate'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x366c,0x14e));var _0xc366=function(_0x56ca15,_0x1f7c73){_0x56ca15=_0x56ca15-0x0;var _0x38ea85=_0x366c[_0x56ca15];return _0x38ea85;};'use strict';var util=require(_0xc366('0x0'));var _=require('lodash');var moment=require('moment');var logger=require(_0xc366('0x1'))(_0xc366('0x2'));var ipAgi=process['env'][_0xc366('0x3')]||'127.0.0.1';function getSeconds(_0x23b62e,_0x1a8cfc){var _0x1b8cf2=moment(_0x23b62e)[_0xc366('0x4')](0x0);var _0x2621e8=moment(_0x1a8cfc)['milliseconds'](0x0);return _0x1b8cf2['diff'](_0x2621e8,_0xc366('0x5'));}exports['loggerCatch']=function(_0x7ef15){return function(_0x216bca){logger[_0xc366('0x6')](_0x7ef15,util[_0xc366('0x7')](_0x216bca,{'showHidden':![],'depth':null}));};};exports[_0xc366('0x8')]=function(_0x2d040a,_0x1b86f6){logger[_0xc366('0x9')](_0x2d040a,util[_0xc366('0x7')](_0x1b86f6,{'showHidden':![],'depth':null}));};exports[_0xc366('0xa')]=function(_0x3d2f41,_0xe9aa31){logger[_0xc366('0x6')](_0x3d2f41,util[_0xc366('0x7')](_0xe9aa31,{'showHidden':![],'depth':null}));};exports[_0xc366('0xb')]=function(_0x4b3020){return function(_0x2ef77d){logger['info'](_0x4b3020,util['inspect'](_0x2ef77d,{'showHidden':![],'depth':null}));};};exports[_0xc366('0xc')]=function(_0x118328,_0x3cb2c8,_0x43c3a4){return{'message':_0x118328,'unlock':_0x3cb2c8,'active':_0x43c3a4};};exports[_0xc366('0xd')]=function(_0x462241,_0x218eff,_0x9c6e9e){if(!_[_0xc366('0xe')](_0x9c6e9e)&&_0xc366('0xf')===typeof _0x9c6e9e&&!_[_0xc366('0x10')](_0x9c6e9e)){if(!_[_0xc366('0xe')](_0x218eff)&&_0xc366('0xf')===typeof _0x218eff&&!_[_0xc366('0x10')](_0x218eff)){return util[_0xc366('0x11')]('\x22%s\x22\x20<%s>',_0x218eff,_0x9c6e9e);}return util[_0xc366('0x11')](_0xc366('0x12'),_0x9c6e9e,_0x9c6e9e);}if(!_[_0xc366('0xe')](_0x462241)&&'string'===typeof _0x462241&&!_['isEmpty'](_0x462241)){return _0x462241;}return _0xc366('0x13');};exports[_0xc366('0x14')]=function(_0x25bd6a){if(_[_0xc366('0x15')](_0x25bd6a)){return![];}return _0x25bd6a;};exports[_0xc366('0x16')]=function(_0x54c1cb,_0x53fb82,_0x48cb52,_0x73431f,_0x5828c2,_0x3e98a0){var _0x1e99eb={'XMD-QUEUE':_0x53fb82[_0xc366('0x17')]?_0x53fb82[_0xc366('0x17')][_0xc366('0x18')]:'','XMD-CALLERID':_0x73431f,'XMD-CALLERID-PREVIEW':_0x3e98a0?util['format'](_0xc366('0x12'),_0x3e98a0[_0xc366('0x19')],_0x3e98a0[_0xc366('0x1a')]):_0x73431f,'XMD-DIALID':_0x5828c2,'XMD-CONTACTID':_0x53fb82['ContactId'],'XMD-CDRTYPE':_0xc366('0x1b'),'CALLERID(all)':_0x73431f,'XMD-VOICEQUEUEID':_0x53fb82['VoiceQueueId'],'XMD-DIALCHANNEL':_0x48cb52,'XMD-DIALTIMEOUT':_0x54c1cb[_0xc366('0x1c')]||0x1e,'XMD-DIALOPTIONS':util['format'](_0xc366('0x1d'),_0x54c1cb[_0xc366('0x1e')]?'g':'',_[_0xc366('0x10')](_0x54c1cb['monitor_format'])?'':_0xc366('0x1f')),'XMD-DIALURL':_0x54c1cb[_0xc366('0x20')]||'','XMD-AGI':_0x54c1cb['dialQueueProject']?util[_0xc366('0x11')]('\x22agi://%s/square,%s\x22',ipAgi,_0x54c1cb[_0xc366('0x21')]):'NONE','XMD-AGIAFTER':_0x54c1cb[_0xc366('0x1e')]?util[_0xc366('0x11')](_0xc366('0x22'),ipAgi,_0x54c1cb[_0xc366('0x1e')]):'NONE','XMD-ORIGINATECALLERIDNUM':_0x3e98a0?_0x3e98a0['originatecalleridnum']:'','XMD-ORIGINATECALLERIDNAME':_0x3e98a0?_0x3e98a0[_0xc366('0x23')]:'','XMD-DESTINATION':_0xc366('0x24')};if(!_[_0xc366('0x10')](_0x54c1cb[_0xc366('0x25')])){_0x1e99eb[util[_0xc366('0x11')]('%s',_0xc366('0x26'))]=_0x54c1cb[_0xc366('0x25')];_0x1e99eb[util['format']('%s',_0xc366('0x27'))]=_0x5828c2;}if(_0x53fb82&&_0x53fb82[_0xc366('0x28')]){for(var _0x571679 in _0x53fb82['Contact']){if(_0x53fb82[_0xc366('0x28')]['hasOwnProperty'](_0x571679)){if(!_[_0xc366('0x15')](_0x53fb82[_0xc366('0x28')][_0x571679])&&_0x571679!=='id'&&_0x571679!==_0xc366('0x29')&&_0x571679!=='createdAt'&&_0x571679!=='updatedAt'){_0x1e99eb[util['format']('%s%s',_0xc366('0x2a'),_['toUpper'](_0x571679))]=_0x53fb82[_0xc366('0x28')][_0x571679];}}}}return _0x1e99eb;};exports[_0xc366('0x2b')]=function(_0x38f837){var _0x3c5258={};for(var _0x673a6b in _0x38f837){if(_0x38f837[_0xc366('0x2c')](_0x673a6b)){_0x3c5258[util['format']('%s',_[_0xc366('0x2d')](_0x673a6b))]=_0x38f837[_0x673a6b];}}return{'variables':_0x3c5258};};exports[_0xc366('0x2e')]=function(_0x2b3af0,_0x448d9d){if(!_[_0xc366('0x15')](_0x2b3af0)){if(_0x2b3af0['hasOwnProperty'](_0xc366('0x2f'))){if(_0x2b3af0[_0xc366('0x2f')]>0x0){_0x2b3af0[_0xc366('0x2f')]-=0x1;}else{logger['error'](_0xc366('0x30'),_0x448d9d);}}}else{logger['error']('[updateOriginated]\x20is\x20null\x20or\x20undefined',_0x448d9d);}};exports['logBlacklist']=function(_0x209db0){var _0x3b6be3=moment()[_0xc366('0x11')]('YYYY-MM-DD\x20HH:mm:ss');_0x209db0['state']=0xd;_0x209db0['statedesc']=_0xc366('0x31');_0x209db0[_0xc366('0x32')]=_0x3b6be3;_0x209db0['responsetime']=_0x3b6be3;_0x209db0[_0xc366('0x33')]=_0x3b6be3;};exports[_0xc366('0x34')]=function(_0x3147a6,_0x464517,_0x308151){var _0x4dff4c=moment()['format'](_0xc366('0x35'));_0x3147a6[_0xc366('0x36')]=_0x464517;_0x3147a6[_0xc366('0x37')]=_0x308151;_0x3147a6[_0xc366('0x38')]=_0x4dff4c;_0x3147a6['ringtime']=getSeconds(_0x3147a6[_0xc366('0x38')],_0x3147a6[_0xc366('0x32')]);};exports[_0xc366('0x39')]=function(_0x593bd9,_0x2792b1,_0x4de0c0){_0x593bd9[_0xc366('0x3a')]=_0x2792b1;_0x593bd9[_0xc366('0x3b')]=_0x4de0c0;};exports[_0xc366('0x3c')]=function(_0xf33cd9,_0x440890,_0x241c04){var _0x9e2912=moment()[_0xc366('0x11')](_0xc366('0x35'));_0xf33cd9[_0xc366('0x36')]=_0x440890;_0xf33cd9['statedesc']=_0x241c04;_0xf33cd9[_0xc366('0x38')]=_0xf33cd9[_0xc366('0x38')]?_0xf33cd9[_0xc366('0x38')]:_0x9e2912;_0xf33cd9[_0xc366('0x33')]=_0xf33cd9['endtime']?_0xf33cd9['endtime']:_0x9e2912;_0xf33cd9[_0xc366('0x3d')]=getSeconds(_0xf33cd9['responsetime']||0x0,_0xf33cd9[_0xc366('0x32')]||0x0);_0xf33cd9[_0xc366('0x3e')]=_0xf33cd9['answertime']?getSeconds(_0xf33cd9[_0xc366('0x33')],_0xf33cd9[_0xc366('0x3f')]):0x0;};exports[_0xc366('0x40')]=function(_0x89b75c){return _0x89b75c==='Failure';};exports['variablesAction']=function(_0x58e7fd,_0x558087,_0x5aedf4,_0x4184a9,_0x4cb5af){var _0xce36b7=_0x4184a9?_0xc366('0x41'):_0x58e7fd[_0xc366('0x19')];_0xce36b7=_0x4cb5af?_0xc366('0x42'):_0xce36b7;return{'actionid':_0x58e7fd['uniqueid'],'action':_0xc366('0x43'),'channel':_0x58e7fd[_0xc366('0x44')],'callerid':util[_0xc366('0x11')](_0xc366('0x12'),_0xce36b7,_0x58e7fd['calleridnum']),'Exten':'xcally-motion-preview','Context':_0xc366('0x45'),'Priority':'1','variable':_0x5aedf4,'timeout':(_0x558087[_0xc366('0x46')]||0x1e)*0x3e8,'async':!![],'channelid':_0x58e7fd[_0xc366('0x47')]};};exports[_0xc366('0x48')]=function(_0x48f21e){return _0x48f21e[_0xc366('0x49')]+_0x48f21e[_0xc366('0x4a')]+_0x48f21e[_0xc366('0x4b')]+_0x48f21e[_0xc366('0x4c')]+_0x48f21e['countnosuchnumberretry'];};exports[_0xc366('0x4d')]=function(_0x10a03e){var _0x4d68bc=_[_0xc366('0x4e')](_0x10a03e);_0x4d68bc[_0xc366('0x36')]=0xf;_0x4d68bc['statedesc']=_0xc366('0x4f');return _0x4d68bc;};exports['scheduledAt']=function(_0x217bca,_0x482f18,_0xd48579){var _0x422a47={};_0x422a47[_0x482f18]=_0x217bca[_0x482f18];_0x422a47[_0xc366('0x50')]=![];_0x422a47['scheduledat']=moment()[_0xc366('0x51')](_0xd48579,_0xc366('0x52'))[_0xc366('0x11')]('YYYY-MM-DD\x20HH:mm:ss');_0x422a47[_0xc366('0x53')]=_0x217bca[_0xc366('0x53')];_0x422a47[_0xc366('0x54')]=_0x217bca[_0xc366('0x54')];_0x422a47[_0xc366('0x55')]=_0x217bca[_0xc366('0x55')]||undefined;return _0x422a47;};exports[_0xc366('0x56')]=function(_0x13b1c6,_0x5bce9e){if(!_['isNil'](_0x13b1c6)){if(_0x13b1c6[_0xc366('0x57')]>0x0){_0x13b1c6['pTalking']-=0x1;}else{logger['error'](_0x5bce9e,'[decrementTalkink]\x20object\x20talking\x20is\x20negative');}}else{logger[_0xc366('0x6')](_0x5bce9e,_0xc366('0x58'));}};exports['IsNotLoggedIn']=function(_0x16e1fd){if(_0x16e1fd<=0x0){return!![];}return![];};exports[_0xc366('0x59')]=function(_0x308b7a,_0x31ae88,_0x2d7c36){_0x308b7a[_0xc366('0x5a')]=_0x31ae88;_0x308b7a['name']=_0x308b7a[_0xc366('0x5b')];_0x308b7a[_0xc366('0x5c')]=_0x308b7a[_0xc366('0x44')];_0x308b7a[_0xc366('0x5d')]='voice';if(_0x2d7c36){_0x308b7a[_0xc366('0x5e')]=_0x2d7c36[_0xc366('0x5e')];}return _0x308b7a;};exports['buildAcw']=function(_0x4647a4){var _0x11889c={};_0x11889c[_0xc366('0x5b')]=_0x4647a4['queue'];_0x11889c[_0xc366('0x5c')]=_0x4647a4['channelAgent'];_0x11889c[_0xc366('0x47')]=_0x4647a4['uniqueid'];return _0x11889c;};exports[_0xc366('0x5f')]=function(_0x25c1be){var _0x6096d6=[];for(var _0x4d3474 in _0x25c1be){if(_0x25c1be[_0xc366('0x2c')](_0x4d3474)){if(!_[_0xc366('0x15')](_0x25c1be[_0x4d3474])&&_0x25c1be[_0x4d3474][_0xc366('0x36')]===_0xc366('0x60')&&_0x25c1be[_0x4d3474][_0xc366('0x61')]===_0xc366('0x62')){_0x6096d6[_0xc366('0x63')](_0x25c1be[_0x4d3474]['id']);}}}return _0x6096d6;};exports[_0xc366('0x64')]=function(_0x5dad91){var _0x449c45=moment()[_0xc366('0x4')](0x0);var _0x56ffa8=moment(_0x5dad91)['milliseconds'](0x0);return _0x449c45[_0xc366('0x65')](_0x56ffa8,_0xc366('0x5'));};exports['createBody']=function(_0x2ae975){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x2ae975[_0xc366('0x53')],'ListId':_0x2ae975['ListId'],'VoiceQueueId':_0x2ae975[_0xc366('0x55')]||undefined,'CampaignId':_0x2ae975[_0xc366('0x66')]||undefined};};exports[_0xc366('0x67')]=function(_0x4a001c){if(_0x4a001c===_0xc366('0x47')||_0x4a001c==='idContact'||_0x4a001c===_0xc366('0x5b')||_0x4a001c==='type'||_0x4a001c==='campaigntype'||_0x4a001c==='dialAnswer'||_0x4a001c===_0xc366('0x3a')||_0x4a001c===_0xc366('0x44')||_0x4a001c===_0xc366('0x19')||_0x4a001c===_0xc366('0x50')||_0x4a001c===_0xc366('0x1a')||_0x4a001c==='scheduledat'||_0x4a001c==='countbusyretry'||_0x4a001c==='countcongestionretry'||_0x4a001c==='countnoanswerretry'||_0x4a001c===_0xc366('0x68')||_0x4a001c===_0xc366('0x69')||_0x4a001c===_0xc366('0x6a')||_0x4a001c===_0xc366('0x6b')||_0x4a001c===_0xc366('0x6c')||_0x4a001c===_0xc366('0x53')||_0x4a001c==='ListId'||_0x4a001c==='UserId'||_0x4a001c===_0xc366('0x55')||_0x4a001c===_0xc366('0x6d')||_0x4a001c==='xmd-voicequeueid'||_0x4a001c==='xmd-queue'||_0x4a001c==='xmd-phone'||_0x4a001c===_0xc366('0x6e')||_0x4a001c===_0xc366('0x6f')||_0x4a001c===_0xc366('0x70')||_0x4a001c===_0xc366('0x71')||_0x4a001c==='xmd-dialid'||_0x4a001c===_0xc366('0x72')||_0x4a001c==='xmd-contactid'||_0x4a001c===_0xc366('0x73')||_0x4a001c===_0xc366('0x74')||_0x4a001c===_0xc366('0x75')||_0x4a001c===_0xc366('0x76')||_0x4a001c===_0xc366('0x77')||_0x4a001c===_0xc366('0x78')||_0x4a001c==='rtpaudioqosjitter'||_0x4a001c==='rtpaudioqosjitterbridged'||_0x4a001c===_0xc366('0x79')||_0x4a001c===_0xc366('0x7a')||_0x4a001c===_0xc366('0x7b')||_0x4a001c===_0xc366('0x7c')||_0x4a001c==='rtpaudioqos'||_0x4a001c===_0xc366('0x78')||_0x4a001c==='rtpaudioqosjitter'||_0x4a001c==='rtpaudioqosjitterbridged'||_0x4a001c===_0xc366('0x79')||_0x4a001c===_0xc366('0x7a')||_0x4a001c===_0xc366('0x7b')||_0x4a001c===_0xc366('0x7c')||_0x4a001c===_0xc366('0x7d')||_0x4a001c===_0xc366('0x7e')||_0x4a001c===_0xc366('0x36')||_0x4a001c===_0xc366('0x37')){return![];}return!![];};exports['getCallerIdRandom']=function(_0x45164a,_0x241173){var _0x10816c,_0x150953,_0x368629;if(_0x241173<=0x0){_0x241173=0x1;}_0x10816c=new RegExp(_0xc366('0x7f')+_0x241173+'}$');_0x150953=Math[_0xc366('0x80')](0xa,_0x241173-0x1);_0x368629=Math[_0xc366('0x80')](0xa,_0x241173)-0x1;return util['format']('%s',_[_0xc366('0x81')](_0x45164a,_0x10816c,_[_0xc366('0x82')](_0x150953,_0x368629)));};exports[_0xc366('0x83')]=function(_0x2250ce){var _0x2e5005=_0x2250ce[_0xc366('0x84')](/"(.*?)"/);return _0x2e5005?_0x2e5005[0x1]:_0x2250ce;};exports[_0xc366('0x85')]=function(_0x3bf6c4){var _0x5e177a=_0x3bf6c4[_0xc366('0x84')](/<(.*?)>/);return _0x5e177a?_0x5e177a[0x1]:_0x3bf6c4;};
\ No newline at end of file
+var _0x82be=['responsetime','logLookAgent','membername','UserId','logCustomer','ringtime','talktime','answertime','isFailure','Failure','variablesAction','RECALL','BOOKED','uniqueid','originate','xcally-motion-preview','from-sip','countbusyretry','countcongestionretry','countnoanswerretry','countagentrejectretry','countnosuchnumberretry','cloneAction','clone','Global','scheduledAt','active','ListId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','buildObj','lastevent','name','interface','channelAgent','mandatoryDisposition','queue','status','reachable','push','getDiff','createBody','CampaignId','filterKey','idContact','dialAnswer','scheduledat','countglobal','callback','callbackuniqueid','callbackat','recallme','xmd-voicequeueid','xmd-phone','xmd-dialurl','xmd-dialoptions','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agiafter','xmd-agi','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqosbridged','bridgepeer','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','pow','replace','random','extractCalleridName','match','util','lodash','moment','../../../../config/logger','env','XCALLY_IP_AGI','127.0.0.1','milliseconds','diff','seconds','loggerCatch','error','inspect','logger','info','logger2','message','getCallerId','isUndefined','string','isEmpty','\x22%s\x22\x20<%s>','format','\x22\x22\x20<>','isActive','addVariables','Queue','calleridname','calleridnum','ContactId','dialer','VoiceQueueId','dialOriginateTimeout','dialQueueProject2','monitor_format','dialPreviewUrl','\x22agi://%s/square,%s\x22','dialQueueProject','NONE','originatecalleridnum','originatecalleridname','_XCALLY_MIXMONITOR_FORMAT','Contact','hasOwnProperty','isNil','createdAt','%s%s','XMD-','toUpper','toLower','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','starttime','endtime','logAgent'];(function(_0x47d958,_0x2ccf25){var _0x5039b0=function(_0x34b2c5){while(--_0x34b2c5){_0x47d958['push'](_0x47d958['shift']());}};_0x5039b0(++_0x2ccf25);}(_0x82be,0xdb));var _0xe82b=function(_0x35b197,_0x4ffe0d){_0x35b197=_0x35b197-0x0;var _0x1e347b=_0x82be[_0x35b197];return _0x1e347b;};'use strict';var util=require(_0xe82b('0x0'));var _=require(_0xe82b('0x1'));var moment=require(_0xe82b('0x2'));var logger=require(_0xe82b('0x3'))('preview');var ipAgi=process[_0xe82b('0x4')][_0xe82b('0x5')]||_0xe82b('0x6');function getSeconds(_0x31ef2f,_0x2a1cfc){var _0x316e91=moment(_0x31ef2f)[_0xe82b('0x7')](0x0);var _0x2669e5=moment(_0x2a1cfc)[_0xe82b('0x7')](0x0);return _0x316e91[_0xe82b('0x8')](_0x2669e5,_0xe82b('0x9'));}exports[_0xe82b('0xa')]=function(_0x1be76c){return function(_0x38c151){logger[_0xe82b('0xb')](_0x1be76c,util[_0xe82b('0xc')](_0x38c151,{'showHidden':![],'depth':null}));};};exports[_0xe82b('0xd')]=function(_0xb6fecc,_0x4d2876){logger[_0xe82b('0xe')](_0xb6fecc,util[_0xe82b('0xc')](_0x4d2876,{'showHidden':![],'depth':null}));};exports['loggerError']=function(_0x431e97,_0x4fbb05){logger[_0xe82b('0xb')](_0x431e97,util['inspect'](_0x4fbb05,{'showHidden':![],'depth':null}));};exports[_0xe82b('0xf')]=function(_0x4ddc4a){return function(_0x455b7a){logger['info'](_0x4ddc4a,util[_0xe82b('0xc')](_0x455b7a,{'showHidden':![],'depth':null}));};};exports[_0xe82b('0x10')]=function(_0x3c4335,_0x5b5026,_0x561247){return{'message':_0x3c4335,'unlock':_0x5b5026,'active':_0x561247};};exports[_0xe82b('0x11')]=function(_0x1957e6,_0x557f81,_0xeab3c7){if(!_[_0xe82b('0x12')](_0xeab3c7)&&_0xe82b('0x13')===typeof _0xeab3c7&&!_['isEmpty'](_0xeab3c7)){if(!_[_0xe82b('0x12')](_0x557f81)&&'string'===typeof _0x557f81&&!_[_0xe82b('0x14')](_0x557f81)){return util['format'](_0xe82b('0x15'),_0x557f81,_0xeab3c7);}return util[_0xe82b('0x16')](_0xe82b('0x15'),_0xeab3c7,_0xeab3c7);}if(!_[_0xe82b('0x12')](_0x1957e6)&&_0xe82b('0x13')===typeof _0x1957e6&&!_[_0xe82b('0x14')](_0x1957e6)){return _0x1957e6;}return _0xe82b('0x17');};exports[_0xe82b('0x18')]=function(_0x337fd0){if(_['isNil'](_0x337fd0)){return![];}return _0x337fd0;};exports[_0xe82b('0x19')]=function(_0x3edfff,_0x40ee3f,_0x209267,_0x691a0,_0x28aa4a,_0x2dbf50){var _0x447461={'XMD-QUEUE':_0x40ee3f['Queue']?_0x40ee3f[_0xe82b('0x1a')]['name']:'','XMD-CALLERID':_0x691a0,'XMD-CALLERID-PREVIEW':_0x2dbf50?util[_0xe82b('0x16')](_0xe82b('0x15'),_0x2dbf50[_0xe82b('0x1b')],_0x2dbf50[_0xe82b('0x1c')]):_0x691a0,'XMD-DIALID':_0x28aa4a,'XMD-CONTACTID':_0x40ee3f[_0xe82b('0x1d')],'XMD-CDRTYPE':_0xe82b('0x1e'),'CALLERID(all)':_0x691a0,'XMD-VOICEQUEUEID':_0x40ee3f[_0xe82b('0x1f')],'XMD-DIALCHANNEL':_0x209267,'XMD-DIALTIMEOUT':_0x3edfff[_0xe82b('0x20')]||0x1e,'XMD-DIALOPTIONS':util[_0xe82b('0x16')]('\x22rtTxX%s%s\x22',_0x3edfff[_0xe82b('0x21')]?'g':'',_['isEmpty'](_0x3edfff[_0xe82b('0x22')])?'':'U(xcally-mixmonitor-context)'),'XMD-DIALURL':_0x3edfff[_0xe82b('0x23')]||'','XMD-AGI':_0x3edfff['dialQueueProject']?util[_0xe82b('0x16')](_0xe82b('0x24'),ipAgi,_0x3edfff[_0xe82b('0x25')]):'NONE','XMD-AGIAFTER':_0x3edfff[_0xe82b('0x21')]?util[_0xe82b('0x16')]('\x22agi://%s/square,%s\x22',ipAgi,_0x3edfff['dialQueueProject2']):_0xe82b('0x26'),'XMD-ORIGINATECALLERIDNUM':_0x2dbf50?_0x2dbf50[_0xe82b('0x27')]:'','XMD-ORIGINATECALLERIDNAME':_0x2dbf50?_0x2dbf50[_0xe82b('0x28')]:'','XMD-DESTINATION':'xcally-motion-preview'};if(!_['isEmpty'](_0x3edfff[_0xe82b('0x22')])){_0x447461[util[_0xe82b('0x16')]('%s',_0xe82b('0x29'))]=_0x3edfff[_0xe82b('0x22')];_0x447461[util[_0xe82b('0x16')]('%s','_XCALLY_MIXMONITOR_UNIQUEID')]=_0x28aa4a;}if(_0x40ee3f&&_0x40ee3f[_0xe82b('0x2a')]){for(var _0x131a16 in _0x40ee3f['Contact']){if(_0x40ee3f[_0xe82b('0x2a')][_0xe82b('0x2b')](_0x131a16)){if(!_[_0xe82b('0x2c')](_0x40ee3f[_0xe82b('0x2a')][_0x131a16])&&_0x131a16!=='id'&&_0x131a16!=='tags'&&_0x131a16!==_0xe82b('0x2d')&&_0x131a16!=='updatedAt'){_0x447461[util['format'](_0xe82b('0x2e'),_0xe82b('0x2f'),_[_0xe82b('0x30')](_0x131a16))]=_0x40ee3f[_0xe82b('0x2a')][_0x131a16];}}}}return _0x447461;};exports['toLowerVariables']=function(_0x28af13){var _0x48dcae={};for(var _0xba315b in _0x28af13){if(_0x28af13[_0xe82b('0x2b')](_0xba315b)){_0x48dcae[util['format']('%s',_[_0xe82b('0x31')](_0xba315b))]=_0x28af13[_0xba315b];}}return{'variables':_0x48dcae};};exports['updateOriginated']=function(_0x54a3e0,_0x7bf676){if(!_[_0xe82b('0x2c')](_0x54a3e0)){if(_0x54a3e0['hasOwnProperty'](_0xe82b('0x32'))){if(_0x54a3e0[_0xe82b('0x32')]>0x0){_0x54a3e0['originated']-=0x1;}else{logger[_0xe82b('0xb')](_0xe82b('0x33'),_0x7bf676);}}}else{logger['error']('[updateOriginated]\x20is\x20null\x20or\x20undefined',_0x7bf676);}};exports[_0xe82b('0x34')]=function(_0x5f9e19){var _0x13e47e=moment()[_0xe82b('0x16')](_0xe82b('0x35'));_0x5f9e19[_0xe82b('0x36')]=0xd;_0x5f9e19[_0xe82b('0x37')]='Blacklist';_0x5f9e19[_0xe82b('0x38')]=_0x13e47e;_0x5f9e19['responsetime']=_0x13e47e;_0x5f9e19[_0xe82b('0x39')]=_0x13e47e;};exports[_0xe82b('0x3a')]=function(_0x23ca86,_0x5b50cb,_0x29833b){var _0x50ebcf=moment()['format'](_0xe82b('0x35'));_0x23ca86[_0xe82b('0x36')]=_0x5b50cb;_0x23ca86[_0xe82b('0x37')]=_0x29833b;_0x23ca86[_0xe82b('0x3b')]=_0x50ebcf;_0x23ca86['ringtime']=getSeconds(_0x23ca86[_0xe82b('0x3b')],_0x23ca86[_0xe82b('0x38')]);};exports[_0xe82b('0x3c')]=function(_0x2d33e4,_0x1650a7,_0xe26aa4){_0x2d33e4[_0xe82b('0x3d')]=_0x1650a7;_0x2d33e4[_0xe82b('0x3e')]=_0xe26aa4;};exports[_0xe82b('0x3f')]=function(_0xb5f87f,_0x30e3ea,_0x15c333){var _0x5c9799=moment()[_0xe82b('0x16')](_0xe82b('0x35'));_0xb5f87f[_0xe82b('0x36')]=_0x30e3ea;_0xb5f87f['statedesc']=_0x15c333;_0xb5f87f[_0xe82b('0x3b')]=_0xb5f87f[_0xe82b('0x3b')]?_0xb5f87f['responsetime']:_0x5c9799;_0xb5f87f[_0xe82b('0x39')]=_0xb5f87f[_0xe82b('0x39')]?_0xb5f87f[_0xe82b('0x39')]:_0x5c9799;_0xb5f87f[_0xe82b('0x40')]=getSeconds(_0xb5f87f[_0xe82b('0x3b')]||0x0,_0xb5f87f[_0xe82b('0x38')]||0x0);_0xb5f87f[_0xe82b('0x41')]=_0xb5f87f[_0xe82b('0x42')]?getSeconds(_0xb5f87f[_0xe82b('0x39')],_0xb5f87f[_0xe82b('0x42')]):0x0;};exports[_0xe82b('0x43')]=function(_0x1f062e){return _0x1f062e===_0xe82b('0x44');};exports[_0xe82b('0x45')]=function(_0x2512ab,_0x2503b9,_0x1d9dbb,_0x4024cb,_0x2a80ae){var _0x47be18=_0x4024cb?_0xe82b('0x46'):_0x2512ab[_0xe82b('0x1b')];_0x47be18=_0x2a80ae?_0xe82b('0x47'):_0x47be18;return{'actionid':_0x2512ab[_0xe82b('0x48')],'action':_0xe82b('0x49'),'channel':_0x2512ab['channelAgent'],'callerid':util[_0xe82b('0x16')](_0xe82b('0x15'),_0x47be18,_0x2512ab[_0xe82b('0x1c')]),'Exten':_0xe82b('0x4a'),'Context':_0xe82b('0x4b'),'Priority':'1','variable':_0x1d9dbb,'timeout':(_0x2503b9['timeout']||0x1e)*0x3e8,'async':!![],'channelid':_0x2512ab[_0xe82b('0x48')]};};exports['totalGlobal']=function(_0x50563c){return _0x50563c[_0xe82b('0x4c')]+_0x50563c[_0xe82b('0x4d')]+_0x50563c[_0xe82b('0x4e')]+_0x50563c[_0xe82b('0x4f')]+_0x50563c[_0xe82b('0x50')];};exports[_0xe82b('0x51')]=function(_0x1ca5ab){var _0x4c9dc0=_[_0xe82b('0x52')](_0x1ca5ab);_0x4c9dc0[_0xe82b('0x36')]=0xf;_0x4c9dc0[_0xe82b('0x37')]=_0xe82b('0x53');return _0x4c9dc0;};exports[_0xe82b('0x54')]=function(_0x59a41a,_0x3b23b9,_0x15bc9e){var _0x2c0030={};_0x2c0030[_0x3b23b9]=_0x59a41a[_0x3b23b9];_0x2c0030[_0xe82b('0x55')]=![];_0x2c0030['scheduledat']=moment()['add'](_0x15bc9e,'minutes')[_0xe82b('0x16')](_0xe82b('0x35'));_0x2c0030[_0xe82b('0x1d')]=_0x59a41a['ContactId'];_0x2c0030['ListId']=_0x59a41a[_0xe82b('0x56')];_0x2c0030['VoiceQueueId']=_0x59a41a[_0xe82b('0x1f')]||undefined;return _0x2c0030;};exports[_0xe82b('0x57')]=function(_0x25d6b2,_0x2e1a01){if(!_['isNil'](_0x25d6b2)){if(_0x25d6b2[_0xe82b('0x58')]>0x0){_0x25d6b2[_0xe82b('0x58')]-=0x1;}else{logger['error'](_0x2e1a01,_0xe82b('0x59'));}}else{logger['error'](_0x2e1a01,_0xe82b('0x5a'));}};exports[_0xe82b('0x5b')]=function(_0x225a1f){if(_0x225a1f<=0x0){return!![];}return![];};exports[_0xe82b('0x5c')]=function(_0x311832,_0x386f8d,_0x67f6ef){_0x311832[_0xe82b('0x5d')]=_0x386f8d;_0x311832[_0xe82b('0x5e')]=_0x311832['queue'];_0x311832[_0xe82b('0x5f')]=_0x311832[_0xe82b('0x60')];if(_0x67f6ef){_0x311832[_0xe82b('0x61')]=_0x67f6ef[_0xe82b('0x61')];}return _0x311832;};exports['buildAcw']=function(_0x214946){var _0x2b174b={};_0x2b174b[_0xe82b('0x62')]=_0x214946['queue'];_0x2b174b['interface']=_0x214946[_0xe82b('0x60')];_0x2b174b[_0xe82b('0x48')]=_0x214946[_0xe82b('0x48')];return _0x2b174b;};exports['agentReadyId']=function(_0x40739f){var _0x4280d1=[];for(var _0x2f5bd9 in _0x40739f){if(_0x40739f[_0xe82b('0x2b')](_0x2f5bd9)){if(!_[_0xe82b('0x2c')](_0x40739f[_0x2f5bd9])&&_0x40739f[_0x2f5bd9][_0xe82b('0x36')]==='not_inuse'&&_0x40739f[_0x2f5bd9][_0xe82b('0x63')]===_0xe82b('0x64')){_0x4280d1[_0xe82b('0x65')](_0x40739f[_0x2f5bd9]['id']);}}}return _0x4280d1;};exports[_0xe82b('0x66')]=function(_0x35be2a){var _0x2e0c7c=moment()[_0xe82b('0x7')](0x0);var _0x1aaca3=moment(_0x35be2a)[_0xe82b('0x7')](0x0);return _0x2e0c7c[_0xe82b('0x8')](_0x1aaca3,_0xe82b('0x9'));};exports[_0xe82b('0x67')]=function(_0x4cb29a){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x4cb29a['ContactId'],'ListId':_0x4cb29a[_0xe82b('0x56')],'VoiceQueueId':_0x4cb29a['VoiceQueueId']||undefined,'CampaignId':_0x4cb29a[_0xe82b('0x68')]||undefined};};exports[_0xe82b('0x69')]=function(_0x50e3ef){if(_0x50e3ef===_0xe82b('0x48')||_0x50e3ef===_0xe82b('0x6a')||_0x50e3ef==='queue'||_0x50e3ef==='type'||_0x50e3ef==='campaigntype'||_0x50e3ef===_0xe82b('0x6b')||_0x50e3ef==='membername'||_0x50e3ef===_0xe82b('0x60')||_0x50e3ef===_0xe82b('0x1b')||_0x50e3ef===_0xe82b('0x55')||_0x50e3ef===_0xe82b('0x1c')||_0x50e3ef===_0xe82b('0x6c')||_0x50e3ef===_0xe82b('0x4c')||_0x50e3ef==='countcongestionretry'||_0x50e3ef===_0xe82b('0x4e')||_0x50e3ef===_0xe82b('0x6d')||_0x50e3ef===_0xe82b('0x6e')||_0x50e3ef===_0xe82b('0x6f')||_0x50e3ef===_0xe82b('0x70')||_0x50e3ef===_0xe82b('0x71')||_0x50e3ef===_0xe82b('0x1d')||_0x50e3ef===_0xe82b('0x56')||_0x50e3ef===_0xe82b('0x3e')||_0x50e3ef===_0xe82b('0x1f')||_0x50e3ef==='sipcallid'||_0x50e3ef===_0xe82b('0x72')||_0x50e3ef==='xmd-queue'||_0x50e3ef===_0xe82b('0x73')||_0x50e3ef==='xmd-listid'||_0x50e3ef===_0xe82b('0x74')||_0x50e3ef==='xmd-dialtimeout'||_0x50e3ef===_0xe82b('0x75')||_0x50e3ef==='xmd-dialid'||_0x50e3ef===_0xe82b('0x76')||_0x50e3ef===_0xe82b('0x77')||_0x50e3ef===_0xe82b('0x78')||_0x50e3ef===_0xe82b('0x79')||_0x50e3ef===_0xe82b('0x7a')||_0x50e3ef===_0xe82b('0x7b')||_0x50e3ef==='rtpaudioqos'||_0x50e3ef==='rtpaudioqosbridged'||_0x50e3ef===_0xe82b('0x7c')||_0x50e3ef===_0xe82b('0x7d')||_0x50e3ef===_0xe82b('0x7e')||_0x50e3ef==='rtpaudioqoslossbridged'||_0x50e3ef===_0xe82b('0x7f')||_0x50e3ef===_0xe82b('0x80')||_0x50e3ef==='rtpaudioqos'||_0x50e3ef===_0xe82b('0x81')||_0x50e3ef===_0xe82b('0x7c')||_0x50e3ef===_0xe82b('0x7d')||_0x50e3ef===_0xe82b('0x7e')||_0x50e3ef==='rtpaudioqoslossbridged'||_0x50e3ef===_0xe82b('0x7f')||_0x50e3ef===_0xe82b('0x80')||_0x50e3ef===_0xe82b('0x82')||_0x50e3ef===_0xe82b('0x83')||_0x50e3ef===_0xe82b('0x36')||_0x50e3ef===_0xe82b('0x37')){return![];}return!![];};exports[_0xe82b('0x84')]=function(_0x180ec8,_0x48d5b1){var _0x556db6,_0x166e6f,_0x208072;if(_0x48d5b1<=0x0){_0x48d5b1=0x1;}_0x556db6=new RegExp(_0xe82b('0x85')+_0x48d5b1+'}$');_0x166e6f=Math[_0xe82b('0x86')](0xa,_0x48d5b1-0x1);_0x208072=Math['pow'](0xa,_0x48d5b1)-0x1;return util[_0xe82b('0x16')]('%s',_[_0xe82b('0x87')](_0x180ec8,_0x556db6,_[_0xe82b('0x88')](_0x166e6f,_0x208072)));};exports[_0xe82b('0x89')]=function(_0xe21b2e){var _0x538433=_0xe21b2e[_0xe82b('0x8a')](/"(.*?)"/);return _0x538433?_0x538433[0x1]:_0xe21b2e;};exports['extractCalleridNumber']=function(_0x32d87c){var _0x33d9b2=_0x32d87c['match'](/<(.*?)>/);return _0x33d9b2?_0x33d9b2[0x1]:_0x32d87c;};
\ No newline at end of file
index 71d21c0..fba1734 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ef7=['queueadd','string','number','boolean','queuepause','reload','voicechannel','voicequeuechannelhangup','voicequeuechannelredirect'];(function(_0x62c958,_0x2bfdbc){var _0x57ec61=function(_0x5c0094){while(--_0x5c0094){_0x62c958['push'](_0x62c958['shift']());}};_0x57ec61(++_0x2bfdbc);}(_0x0ef7,0x132));var _0x70ef=function(_0x45b29d,_0x44ce43){_0x45b29d=_0x45b29d-0x0;var _0x32d74=_0x0ef7[_0x45b29d];return _0x32d74;};'use strict';exports[_0x70ef('0x0')]={'queue':{'type':_0x70ef('0x1'),'required':!![]},'interface':{'type':_0x70ef('0x1'),'required':!![]},'membername':{'type':'string','required':!![]},'penalty':{'type':_0x70ef('0x2'),'required':![]},'paused':{'type':_0x70ef('0x3'),'required':![]}};exports['queueremove']={'queue':{'type':_0x70ef('0x1'),'required':!![]},'interface':{'type':'string','required':!![]}};exports[_0x70ef('0x4')]={'interface':{'type':_0x70ef('0x1'),'required':!![]},'paused':{'type':_0x70ef('0x3')},'reason':{'type':_0x70ef('0x1'),'required':![]}};exports[_0x70ef('0x5')]={'module':{'type':_0x70ef('0x1'),'required':![]}};exports['voicequeuechannel']={'uniqueid':{'type':'string','required':!![]}};exports[_0x70ef('0x6')]={'uniqueid':{'type':_0x70ef('0x1'),'required':!![]},'filename':{'type':'string'},'format':{'type':_0x70ef('0x1')},'mixmonitorid':{'type':_0x70ef('0x1')}};exports[_0x70ef('0x7')]={'uniqueid':{'type':_0x70ef('0x1'),'required':!![]}};exports[_0x70ef('0x8')]={'uniqueid':{'type':_0x70ef('0x1'),'required':!![]},'exten':{'type':_0x70ef('0x1'),'required':!![]},'context':{'type':_0x70ef('0x1')}};
\ No newline at end of file
+var _0x2e07=['voicequeuechannel','voicechannel','voicequeuechannelredirect','string','number','boolean','queueremove','queuepause','reload'];(function(_0x35b28f,_0xc83cba){var _0x5603eb=function(_0x513adf){while(--_0x513adf){_0x35b28f['push'](_0x35b28f['shift']());}};_0x5603eb(++_0xc83cba);}(_0x2e07,0x17d));var _0x72e0=function(_0x5285f2,_0x3c71c7){_0x5285f2=_0x5285f2-0x0;var _0x4ddce4=_0x2e07[_0x5285f2];return _0x4ddce4;};'use strict';exports['queueadd']={'queue':{'type':'string','required':!![]},'interface':{'type':_0x72e0('0x0'),'required':!![]},'membername':{'type':_0x72e0('0x0'),'required':!![]},'penalty':{'type':_0x72e0('0x1'),'required':![]},'paused':{'type':_0x72e0('0x2'),'required':![]}};exports[_0x72e0('0x3')]={'queue':{'type':_0x72e0('0x0'),'required':!![]},'interface':{'type':_0x72e0('0x0'),'required':!![]}};exports[_0x72e0('0x4')]={'interface':{'type':'string','required':!![]},'paused':{'type':_0x72e0('0x2')},'reason':{'type':_0x72e0('0x0'),'required':![]}};exports[_0x72e0('0x5')]={'module':{'type':'string','required':![]}};exports[_0x72e0('0x6')]={'uniqueid':{'type':_0x72e0('0x0'),'required':!![]}};exports[_0x72e0('0x7')]={'uniqueid':{'type':_0x72e0('0x0'),'required':!![]},'filename':{'type':_0x72e0('0x0')},'format':{'type':_0x72e0('0x0')},'mixmonitorid':{'type':_0x72e0('0x0')}};exports['voicequeuechannelhangup']={'uniqueid':{'type':_0x72e0('0x0'),'required':!![]}};exports[_0x72e0('0x8')]={'uniqueid':{'type':'string','required':!![]},'exten':{'type':_0x72e0('0x0'),'required':!![]},'context':{'type':_0x72e0('0x0')}};
\ No newline at end of file
index 6543629..b454bab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef14=['hasOwnProperty','mapKeys','format','name','isNil','interface','SIP/%s','total','answered','sumHoldTime','sumBillable','isEmpty','ivrAnswerCallsDay','sumDuration','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundCongestionCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','initAgents','length','isUndefined','mergeFromDatabase','initTelephones','telephones','initTrunks','initVoiceQueues','initTemplates','initZendeskAccounts','initFreshdeskAccounts','initZohoAccounts','initDeskAccounts','deskAccounts','initSugarcrmAccounts','initVtigerAccounts','initDynamics365Accounts','initVoiceQueueHopperHistory','merge','groupBy','queuecallerexit','unmanaged','queuecallerabandon','abandoned','queuecallerleaveAt','queuecallerjoinAt','queuecallercompleteAt','queuecallerabandonAt','queuecallerexitAt','seconds','queuecallercomplete','initVoiceCallReports','outbound','disposition','ANSWERED','billableseconds','initCampaigns','dialQueueProject','SquareProject','initCampaignHopperHistory','bluebird','util','lodash','../model/agent','../model/telephone','../model/trunk','../model/voiceQueue','../model/trigger','../model/template','../model/campaign','../model/zendeskAccount','../model/salesforceAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/freshsalesAccount','agents','trunks','voiceQueues','triggers','campaigns','templates','voiceExtensions','channels','outboundChannels','timers','settings','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','faxAccounts'];(function(_0x10ddb0,_0xce8826){var _0x238105=function(_0xc376b7){while(--_0xc376b7){_0x10ddb0['push'](_0x10ddb0['shift']());}};_0x238105(++_0xce8826);}(_0xef14,0x10e));var _0x4ef1=function(_0x235a88,_0x4fca20){_0x235a88=_0x235a88-0x0;var _0x1d8323=_0xef14[_0x235a88];return _0x1d8323;};'use strict';var BPromise=require(_0x4ef1('0x0'));var util=require(_0x4ef1('0x1'));var _=require(_0x4ef1('0x2'));var moment=require('moment');var Agent=require(_0x4ef1('0x3'));var Telephone=require(_0x4ef1('0x4'));var Trunk=require(_0x4ef1('0x5'));var VoiceQueue=require(_0x4ef1('0x6'));var Trigger=require(_0x4ef1('0x7'));var Template=require(_0x4ef1('0x8'));var Campaign=require(_0x4ef1('0x9'));var VoiceExtension=require('../model/voiceExtension');var ZendeskAccount=require(_0x4ef1('0xa'));var SalesforceAccount=require(_0x4ef1('0xb'));var FreshdeskAccount=require('../model/freshdeskAccount');var SugarcrmAccount=require(_0x4ef1('0xc'));var ZohoAccount=require(_0x4ef1('0xd'));var DeskAccount=require(_0x4ef1('0xe'));var VtigerAccount=require(_0x4ef1('0xf'));var ServicenowAccount=require(_0x4ef1('0x10'));var Dynamics365Account=require('../model/dynamics365Account');var FreshsalesAccount=require(_0x4ef1('0x11'));var FaxAccount=require('../model/faxAccount');var Realtime=function(){this[_0x4ef1('0x12')]={};this['telephones']={};this[_0x4ef1('0x13')]={};this[_0x4ef1('0x14')]={};this[_0x4ef1('0x15')]={};this[_0x4ef1('0x16')]={};this[_0x4ef1('0x17')]={};this['outbound']={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x4ef1('0x18')]={};this[_0x4ef1('0x19')]={};this['queueChannels']={};this[_0x4ef1('0x1a')]={};this[_0x4ef1('0x1b')]={};this[_0x4ef1('0x1c')]={};this[_0x4ef1('0x1d')]={};this[_0x4ef1('0x1e')]={};this[_0x4ef1('0x1f')]={};this[_0x4ef1('0x20')]={};this[_0x4ef1('0x21')]={};this['deskAccounts']={};this[_0x4ef1('0x22')]={};this[_0x4ef1('0x23')]={};this[_0x4ef1('0x24')]={};this[_0x4ef1('0x25')]={};this[_0x4ef1('0x26')]={};};function freeIsNotKey(_0x3e5890,_0x29b33d,_0x5add7f){var _0x2f8d6f=_['mapKeys'](_0x3e5890,function(_0xf1cd7b,_0x10d10e){return _0xf1cd7b[_0x5add7f];});for(var _0x324e13 in _0x29b33d){if(_0x29b33d[_0x4ef1('0x27')](_0x324e13)){if(!_0x2f8d6f[_0x324e13]){delete _0x29b33d[_0x324e13];}}}}function freeIsNotKeySip(_0x23717,_0x17e10b){var _0x3f8149=_[_0x4ef1('0x28')](_0x23717,function(_0xa18bf7,_0x597d49){return util[_0x4ef1('0x29')]('SIP/%s',_0xa18bf7[_0x4ef1('0x2a')]);});for(var _0x217f9b in _0x17e10b){if(_0x17e10b['hasOwnProperty'](_0x217f9b)){if(!_0x3f8149[_0x217f9b]){delete _0x17e10b[_0x217f9b];}}}}function freeIsNotKeyAgent(_0x28566e,_0x439690){var _0x5ede48=_[_0x4ef1('0x28')](_0x28566e,function(_0x325770,_0x18d2e2){var _0x553560=_[_0x4ef1('0x2b')](_0x325770[_0x4ef1('0x2c')])?util['format'](_0x4ef1('0x2d'),_0x325770[_0x4ef1('0x2a')]):_0x325770['interface'];return _0x553560;});for(var _0x14156c in _0x439690){if(_0x439690[_0x4ef1('0x27')](_0x14156c)){if(!_0x5ede48[_0x14156c]){delete _0x439690[_0x14156c];}}}}function clearVoiceCallReports(_0x3fd491){_0x3fd491[_0x4ef1('0x2e')]=0x0;_0x3fd491[_0x4ef1('0x2f')]=0x0;_0x3fd491[_0x4ef1('0x30')]=0x0;_0x3fd491['sumDuration']=0x0;_0x3fd491[_0x4ef1('0x31')]=0x0;}function clearCampaigns(_0x4862c8){if(!_[_0x4ef1('0x32')](_0x4862c8)){for(var _0x357b60 in _0x4862c8){if(_0x4862c8['hasOwnProperty'](_0x357b60)){_0x4862c8[_0x357b60]['ivrTotalCallsDays']=0x0;_0x4862c8[_0x357b60][_0x4ef1('0x33')]=0x0;}}}}function clearVoiceQueues(_0x4875ba){if(!_[_0x4ef1('0x32')](_0x4875ba)){for(var _0x29a089 in _0x4875ba){if(_0x4875ba['hasOwnProperty'](_0x29a089)){_0x4875ba[_0x29a089]['total']=0x0;_0x4875ba[_0x29a089][_0x4ef1('0x2f')]=0x0;_0x4875ba[_0x29a089]['unmanaged']=0x0;_0x4875ba[_0x29a089]['abandoned']=0x0;_0x4875ba[_0x29a089][_0x4ef1('0x30')]=0x0;_0x4875ba[_0x29a089][_0x4ef1('0x34')]=0x0;_0x4875ba[_0x29a089][_0x4ef1('0x31')]=0x0;_0x4875ba[_0x29a089][_0x4ef1('0x35')]=0x0;_0x4875ba[_0x29a089][_0x4ef1('0x36')]=0x0;_0x4875ba[_0x29a089]['outboundBusyCallsDay']=0x0;_0x4875ba[_0x29a089][_0x4ef1('0x37')]=0x0;_0x4875ba[_0x29a089]['outboundNoSuchCallsDay']=0x0;_0x4875ba[_0x29a089][_0x4ef1('0x38')]=0x0;_0x4875ba[_0x29a089][_0x4ef1('0x39')]=0x0;_0x4875ba[_0x29a089]['outboundDropCallsDayCallersExit']=0x0;_0x4875ba[_0x29a089]['outboundBlacklistCallsDay']=0x0;_0x4875ba[_0x29a089][_0x4ef1('0x3a')]=0x0;_0x4875ba[_0x29a089][_0x4ef1('0x3b')]=0x0;_0x4875ba[_0x29a089]['outboundReCallsDay']=0x0;_0x4875ba[_0x29a089]['outboundAnswerAgiCallsDay']=0x0;_0x4875ba[_0x29a089][_0x4ef1('0x3c')]=0x0;_0x4875ba[_0x29a089][_0x4ef1('0x3d')]=!![];}}}}Realtime[_0x4ef1('0x3e')]['mergeFromDatabase']=function(_0x466a59,_0x3da146){for(var _0x3699a7 in _0x3da146){if(_0x466a59[_0x4ef1('0x27')](_0x3699a7)){_0x466a59[_0x3699a7]=_0x3da146[_0x3699a7];}}};Realtime['prototype'][_0x4ef1('0x3f')]=function(){var _0x19f13f=this;return function(_0x548a0d){if(_0x548a0d){freeIsNotKeyAgent(_0x548a0d,_0x19f13f[_0x4ef1('0x12')]);for(var _0x5b5624=0x0,_0x57a98a={},_0xa5f7b3={};_0x5b5624<_0x548a0d[_0x4ef1('0x40')];_0x5b5624+=0x1){_0x57a98a=_0x548a0d[_0x5b5624];var _0x86b9f1=_['isNil'](_0x57a98a['interface'])?util[_0x4ef1('0x29')](_0x4ef1('0x2d'),_0x57a98a[_0x4ef1('0x2a')]):_0x57a98a[_0x4ef1('0x2c')];if(_[_0x4ef1('0x41')](_0x19f13f[_0x4ef1('0x12')][_0x86b9f1])){_0x19f13f[_0x4ef1('0x12')][_0x86b9f1]=new Agent(_0x57a98a);}else{_0x19f13f[_0x4ef1('0x42')](_0x19f13f['agents'][_0x86b9f1],_0x57a98a);}}}return _0x19f13f[_0x4ef1('0x12')];};};Realtime[_0x4ef1('0x3e')][_0x4ef1('0x43')]=function(){var _0x520c87=this;return function(_0x12c7e5){if(_0x12c7e5){freeIsNotKeySip(_0x12c7e5,_0x520c87[_0x4ef1('0x44')]);for(var _0x2659e8=0x0,_0x464d91={},_0x1ef1bb={};_0x2659e8<_0x12c7e5[_0x4ef1('0x40')];_0x2659e8+=0x1){_0x464d91=_0x12c7e5[_0x2659e8];if(_[_0x4ef1('0x41')](_0x520c87[_0x4ef1('0x44')][util[_0x4ef1('0x29')](_0x4ef1('0x2d'),_0x464d91['name'])])){_0x520c87[_0x4ef1('0x44')][util[_0x4ef1('0x29')](_0x4ef1('0x2d'),_0x464d91[_0x4ef1('0x2a')])]=new Telephone(_0x464d91);}else{_0x520c87['mergeFromDatabase'](_0x520c87[_0x4ef1('0x44')][util['format'](_0x4ef1('0x2d'),_0x464d91[_0x4ef1('0x2a')])],_0x464d91);}}}return _0x520c87[_0x4ef1('0x44')];};};Realtime[_0x4ef1('0x3e')][_0x4ef1('0x45')]=function(){var _0x4e69ef=this;return function(_0x926cdd){if(_0x926cdd){freeIsNotKeySip(_0x926cdd,_0x4e69ef[_0x4ef1('0x13')]);for(var _0x5c6855=0x0,_0x426ed5={},_0x20e71d={};_0x5c6855<_0x926cdd[_0x4ef1('0x40')];_0x5c6855+=0x1){_0x426ed5=_0x926cdd[_0x5c6855];if(_[_0x4ef1('0x41')](_0x4e69ef[_0x4ef1('0x13')][util[_0x4ef1('0x29')](_0x4ef1('0x2d'),_0x426ed5[_0x4ef1('0x2a')])])){_0x4e69ef[_0x4ef1('0x13')][util[_0x4ef1('0x29')](_0x4ef1('0x2d'),_0x426ed5[_0x4ef1('0x2a')])]=new Trunk(_0x426ed5);}else{_0x4e69ef[_0x4ef1('0x42')](_0x4e69ef['trunks'][util[_0x4ef1('0x29')](_0x4ef1('0x2d'),_0x426ed5[_0x4ef1('0x2a')])],_0x426ed5);}}}return _0x4e69ef['trunks'];};};Realtime['prototype'][_0x4ef1('0x46')]=function(){var _0x1e37d6=this;return function(_0x2d0ad8){if(_0x2d0ad8){freeIsNotKey(_0x2d0ad8,_0x1e37d6[_0x4ef1('0x14')],_0x4ef1('0x2a'));for(var _0x228bd5=0x0,_0x44877a={},_0x1fa7ff={};_0x228bd5<_0x2d0ad8['length'];_0x228bd5+=0x1){_0x44877a=_0x2d0ad8[_0x228bd5];if(_['isUndefined'](_0x1e37d6[_0x4ef1('0x14')][_0x44877a['name']])){_0x1e37d6['voiceQueues'][_0x44877a[_0x4ef1('0x2a')]]=new VoiceQueue(_0x44877a);}else{_0x1e37d6['mergeFromDatabase'](_0x1e37d6[_0x4ef1('0x14')][_0x44877a[_0x4ef1('0x2a')]],_0x44877a);}}}return _0x1e37d6['voiceQueues'];};};Realtime['prototype']['initTriggers']=function(){var _0x13bb8b=this;return function(_0x3ce712){if(_0x3ce712){freeIsNotKey(_0x3ce712,_0x13bb8b['triggers'],'id');for(var _0x174d50=0x0,_0x4e26ed={},_0x7042bd={};_0x174d50<_0x3ce712[_0x4ef1('0x40')];_0x174d50+=0x1){_0x4e26ed=_0x3ce712[_0x174d50];if(_['isUndefined'](_0x13bb8b['triggers'][_0x4e26ed['id']])){_0x13bb8b[_0x4ef1('0x15')][_0x4e26ed['id']]=new Trigger(_0x4e26ed);}else{_0x13bb8b['mergeFromDatabase'](_0x13bb8b['triggers'][_0x4e26ed['id']],_0x4e26ed);}}}return _0x13bb8b['triggers'];};};Realtime['prototype'][_0x4ef1('0x47')]=function(){var _0x21d8b0=this;return function(_0x3acabc){if(_0x3acabc){freeIsNotKey(_0x3acabc,_0x21d8b0['templates'],'id');for(var _0x6cccf4=0x0,_0x3f5a78={},_0x5d679a={};_0x6cccf4<_0x3acabc['length'];_0x6cccf4+=0x1){_0x3f5a78=_0x3acabc[_0x6cccf4];if(_['isUndefined'](_0x21d8b0[_0x4ef1('0x17')][_0x3f5a78['id']])){_0x21d8b0[_0x4ef1('0x17')][_0x3f5a78['id']]=new Template(_0x3f5a78);}else{_0x21d8b0[_0x4ef1('0x42')](_0x21d8b0[_0x4ef1('0x17')][_0x3f5a78['id']],_0x3f5a78);}}}return _0x21d8b0[_0x4ef1('0x17')];};};Realtime[_0x4ef1('0x3e')][_0x4ef1('0x48')]=function(){var _0x5a4444=this;return function(_0x199453){if(_0x199453){freeIsNotKey(_0x199453,_0x5a4444[_0x4ef1('0x1d')],'id');for(var _0x51bae5=0x0,_0x4337af={},_0x771994={};_0x51bae5<_0x199453['length'];_0x51bae5+=0x1){_0x4337af=_0x199453[_0x51bae5];if(_[_0x4ef1('0x41')](_0x5a4444['zendeskAccounts'][_0x4337af['id']])){_0x5a4444[_0x4ef1('0x1d')][_0x4337af['id']]=new ZendeskAccount(_0x4337af);}else{_0x5a4444[_0x4ef1('0x42')](_0x5a4444[_0x4ef1('0x1d')][_0x4337af['id']],_0x4337af);}}}return _0x5a4444[_0x4ef1('0x1d')];};};Realtime[_0x4ef1('0x3e')]['initSalesforceAccounts']=function(){var _0x302dd1=this;return function(_0x1f2595){if(_0x1f2595){freeIsNotKey(_0x1f2595,_0x302dd1[_0x4ef1('0x1e')],'id');for(var _0x1024d6=0x0,_0x2e46e6={},_0x289981={};_0x1024d6<_0x1f2595[_0x4ef1('0x40')];_0x1024d6+=0x1){_0x2e46e6=_0x1f2595[_0x1024d6];if(_['isUndefined'](_0x302dd1[_0x4ef1('0x1e')][_0x2e46e6['id']])){_0x302dd1[_0x4ef1('0x1e')][_0x2e46e6['id']]=new SalesforceAccount(_0x2e46e6);}else{_0x302dd1[_0x4ef1('0x42')](_0x302dd1['salesforceAccounts'][_0x2e46e6['id']],_0x2e46e6);}}}return _0x302dd1[_0x4ef1('0x1e')];};};Realtime[_0x4ef1('0x3e')][_0x4ef1('0x49')]=function(){var _0x8d025e=this;return function(_0x2cead7){if(_0x2cead7){freeIsNotKey(_0x2cead7,_0x8d025e[_0x4ef1('0x20')],'id');for(var _0x15a3a3=0x0,_0x5e2f43={},_0x26c686={};_0x15a3a3<_0x2cead7['length'];_0x15a3a3+=0x1){_0x5e2f43=_0x2cead7[_0x15a3a3];if(_[_0x4ef1('0x41')](_0x8d025e[_0x4ef1('0x20')][_0x5e2f43['id']])){_0x8d025e[_0x4ef1('0x20')][_0x5e2f43['id']]=new FreshdeskAccount(_0x5e2f43);}else{_0x8d025e[_0x4ef1('0x42')](_0x8d025e[_0x4ef1('0x20')][_0x5e2f43['id']],_0x5e2f43);}}}return _0x8d025e['freshdeskAccounts'];};};Realtime[_0x4ef1('0x3e')][_0x4ef1('0x4a')]=function(){var _0x44b0f9=this;return function(_0x1bf72b){if(_0x1bf72b){freeIsNotKey(_0x1bf72b,_0x44b0f9[_0x4ef1('0x21')],'id');for(var _0x1a280c=0x0,_0x4c88ef={},_0x447d73={};_0x1a280c<_0x1bf72b[_0x4ef1('0x40')];_0x1a280c+=0x1){_0x4c88ef=_0x1bf72b[_0x1a280c];if(_['isUndefined'](_0x44b0f9[_0x4ef1('0x21')][_0x4c88ef['id']])){_0x44b0f9['zohoAccounts'][_0x4c88ef['id']]=new ZohoAccount(_0x4c88ef);}else{_0x44b0f9[_0x4ef1('0x42')](_0x44b0f9[_0x4ef1('0x21')][_0x4c88ef['id']],_0x4c88ef);}}}return _0x44b0f9['zohoAccounts'];};};Realtime[_0x4ef1('0x3e')][_0x4ef1('0x4b')]=function(){var _0x5c6336=this;return function(_0x1fc6c0){if(_0x1fc6c0){freeIsNotKey(_0x1fc6c0,_0x5c6336[_0x4ef1('0x4c')],'id');for(var _0x32681a=0x0,_0x4913b1={},_0x2c176f={};_0x32681a<_0x1fc6c0[_0x4ef1('0x40')];_0x32681a+=0x1){_0x4913b1=_0x1fc6c0[_0x32681a];if(_[_0x4ef1('0x41')](_0x5c6336['deskAccounts'][_0x4913b1['id']])){_0x5c6336[_0x4ef1('0x4c')][_0x4913b1['id']]=new DeskAccount(_0x4913b1);}else{_0x5c6336[_0x4ef1('0x42')](_0x5c6336[_0x4ef1('0x4c')][_0x4913b1['id']],_0x4913b1);}}}return _0x5c6336[_0x4ef1('0x4c')];};};Realtime['prototype'][_0x4ef1('0x4d')]=function(){var _0x8c5a7d=this;return function(_0x4329e5){if(_0x4329e5){freeIsNotKey(_0x4329e5,_0x8c5a7d[_0x4ef1('0x1f')],'id');for(var _0x5d2243=0x0,_0x4d2d8a={},_0x455dab={};_0x5d2243<_0x4329e5[_0x4ef1('0x40')];_0x5d2243+=0x1){_0x4d2d8a=_0x4329e5[_0x5d2243];if(_[_0x4ef1('0x41')](_0x8c5a7d[_0x4ef1('0x1f')][_0x4d2d8a['id']])){_0x8c5a7d[_0x4ef1('0x1f')][_0x4d2d8a['id']]=new SugarcrmAccount(_0x4d2d8a);}else{_0x8c5a7d[_0x4ef1('0x42')](_0x8c5a7d[_0x4ef1('0x1f')][_0x4d2d8a['id']],_0x4d2d8a);}}}return _0x8c5a7d[_0x4ef1('0x1f')];};};Realtime[_0x4ef1('0x3e')][_0x4ef1('0x4e')]=function(){var _0x3d0f51=this;return function(_0x38d1c7){if(_0x38d1c7){freeIsNotKey(_0x38d1c7,_0x3d0f51['vtigerAccounts'],'id');for(var _0x6ada96=0x0,_0x23d8d2={},_0x388578={};_0x6ada96<_0x38d1c7[_0x4ef1('0x40')];_0x6ada96+=0x1){_0x23d8d2=_0x38d1c7[_0x6ada96];if(_[_0x4ef1('0x41')](_0x3d0f51[_0x4ef1('0x22')][_0x23d8d2['id']])){_0x3d0f51[_0x4ef1('0x22')][_0x23d8d2['id']]=new VtigerAccount(_0x23d8d2);}else{_0x3d0f51[_0x4ef1('0x42')](_0x3d0f51[_0x4ef1('0x22')][_0x23d8d2['id']],_0x23d8d2);}}}return _0x3d0f51[_0x4ef1('0x22')];};};Realtime[_0x4ef1('0x3e')]['initServicenowAccounts']=function(){var _0x180389=this;return function(_0x519574){if(_0x519574){freeIsNotKey(_0x519574,_0x180389['servicenowAccounts'],'id');for(var _0x2d01b9=0x0,_0x2a9d6d={},_0x273739={};_0x2d01b9<_0x519574['length'];_0x2d01b9+=0x1){_0x2a9d6d=_0x519574[_0x2d01b9];if(_[_0x4ef1('0x41')](_0x180389[_0x4ef1('0x23')][_0x2a9d6d['id']])){_0x180389[_0x4ef1('0x23')][_0x2a9d6d['id']]=new ServicenowAccount(_0x2a9d6d);}else{_0x180389[_0x4ef1('0x42')](_0x180389['servicenowAccounts'][_0x2a9d6d['id']],_0x2a9d6d);}}}return _0x180389[_0x4ef1('0x23')];};};Realtime[_0x4ef1('0x3e')][_0x4ef1('0x4f')]=function(){var _0x2cbb59=this;return function(_0x5a9845){if(_0x5a9845){freeIsNotKey(_0x5a9845,_0x2cbb59[_0x4ef1('0x24')],'id');for(var _0x9472bd=0x0,_0x20334c={},_0x5e15fd={};_0x9472bd<_0x5a9845[_0x4ef1('0x40')];_0x9472bd+=0x1){_0x20334c=_0x5a9845[_0x9472bd];if(_[_0x4ef1('0x41')](_0x2cbb59[_0x4ef1('0x24')][_0x20334c['id']])){_0x2cbb59[_0x4ef1('0x24')][_0x20334c['id']]=new Dynamics365Account(_0x20334c);}else{_0x2cbb59[_0x4ef1('0x42')](_0x2cbb59[_0x4ef1('0x24')][_0x20334c['id']],_0x20334c);}}}return _0x2cbb59[_0x4ef1('0x24')];};};Realtime[_0x4ef1('0x3e')]['initFreshsalesAccounts']=function(){var _0x5e284a=this;return function(_0x28048d){if(_0x28048d){freeIsNotKey(_0x28048d,_0x5e284a['freshsalesAccounts'],'id');for(var _0x4f954a=0x0,_0x46e2d7={},_0x2fc6b5={};_0x4f954a<_0x28048d[_0x4ef1('0x40')];_0x4f954a+=0x1){_0x46e2d7=_0x28048d[_0x4f954a];if(_[_0x4ef1('0x41')](_0x5e284a[_0x4ef1('0x25')][_0x46e2d7['id']])){_0x5e284a[_0x4ef1('0x25')][_0x46e2d7['id']]=new FreshsalesAccount(_0x46e2d7);}else{_0x5e284a[_0x4ef1('0x42')](_0x5e284a[_0x4ef1('0x25')][_0x46e2d7['id']],_0x46e2d7);}}}return _0x5e284a[_0x4ef1('0x25')];};};Realtime[_0x4ef1('0x3e')][_0x4ef1('0x50')]=function(){var _0x476713=this;return function(_0x397ee0){for(var _0x21058f=0x0;_0x21058f<_0x397ee0[_0x4ef1('0x40')];_0x21058f+=0x1){_[_0x4ef1('0x51')](_0x476713[_0x4ef1('0x14')][_0x397ee0[_0x21058f]['name']],_0x397ee0[_0x21058f]);}return _0x476713['voiceQueues'];};};Realtime[_0x4ef1('0x3e')]['initVoiceQueueReports']=function(){var _0x3803be=this;return function(_0x3e10b8){clearVoiceQueues(_0x3803be[_0x4ef1('0x14')]);if(_0x3e10b8){_0x3e10b8=_[_0x4ef1('0x52')](_0x3e10b8,'uniqueid');for(var _0x2c8d69 in _0x3e10b8){if(_0x3e10b8['hasOwnProperty'](_0x2c8d69)){var _0x2b898b={};for(var _0xbcf936=0x0;_0xbcf936<_0x3e10b8[_0x2c8d69][_0x4ef1('0x40')];_0xbcf936+=0x1){var _0xfa3e1c=_0x3e10b8[_0x2c8d69][_0xbcf936]['queue'];if(_0x3803be[_0x4ef1('0x14')][_0xfa3e1c]){if(_0x3e10b8[_0x2c8d69][_0xbcf936][_0x4ef1('0x53')]){_0x3803be['voiceQueues'][_0xfa3e1c][_0x4ef1('0x54')]+=0x1;}if(_0x3e10b8[_0x2c8d69][_0xbcf936][_0x4ef1('0x55')]){_0x3803be[_0x4ef1('0x14')][_0xfa3e1c][_0x4ef1('0x56')]+=0x1;}_0x3803be[_0x4ef1('0x14')][_0xfa3e1c][_0x4ef1('0x30')]+=moment(_0x3e10b8[_0x2c8d69][_0xbcf936][_0x4ef1('0x57')])['diff'](moment(_0x3e10b8[_0x2c8d69][_0xbcf936][_0x4ef1('0x58')]),'seconds')||0x0;if(_0xbcf936===_0x3e10b8[_0x2c8d69][_0x4ef1('0x40')]-0x1){_0x3803be['voiceQueues'][_0xfa3e1c][_0x4ef1('0x34')]+=moment(_0x3e10b8[_0x2c8d69][_0xbcf936][_0x4ef1('0x59')]||_0x3e10b8[_0x2c8d69][_0xbcf936][_0x4ef1('0x5a')]||_0x3e10b8[_0x2c8d69][_0xbcf936][_0x4ef1('0x5b')])['diff'](moment(_0x3e10b8[_0x2c8d69][_0xbcf936]['queuecallerjoinAt']),_0x4ef1('0x5c'))||0x0;_0x3803be[_0x4ef1('0x14')][_0xfa3e1c]['total']+=0x1;if(_0x3e10b8[_0x2c8d69][_0xbcf936][_0x4ef1('0x5d')]){_0x3803be[_0x4ef1('0x14')][_0xfa3e1c][_0x4ef1('0x2f')]+=0x1;_0x3803be[_0x4ef1('0x14')][_0xfa3e1c]['sumBillable']+=moment(_0x3e10b8[_0x2c8d69][_0xbcf936]['queuecallercompleteAt'])['diff'](moment(_0x3e10b8[_0x2c8d69][_0xbcf936][_0x4ef1('0x57')]),'seconds')||0x0;}}else{_0x3803be[_0x4ef1('0x14')][_0xfa3e1c]['sumDuration']+=_0x3803be['voiceQueues'][_0xfa3e1c][_0x4ef1('0x30')]||0x0;}}}}}}return _0x3803be[_0x4ef1('0x14')];};};Realtime['prototype'][_0x4ef1('0x5e')]=function(){var _0x10fa38=this;return function(_0x43cf9a){clearVoiceCallReports(_0x10fa38['outbound']);if(_0x43cf9a){for(var _0x4c77dc=0x0;_0x4c77dc<_0x43cf9a[_0x4ef1('0x40')];_0x4c77dc+=0x1){_0x10fa38[_0x4ef1('0x5f')]['total']+=0x1;_0x10fa38[_0x4ef1('0x5f')][_0x4ef1('0x34')]+=_0x43cf9a[_0x4c77dc]['duration'];if(_0x43cf9a[_0x4c77dc][_0x4ef1('0x60')]===_0x4ef1('0x61')){_0x10fa38['outbound'][_0x4ef1('0x2f')]+=0x1;_0x10fa38['outbound'][_0x4ef1('0x30')]+=_0x43cf9a[_0x4c77dc]['duration']-_0x43cf9a[_0x4c77dc][_0x4ef1('0x62')]||0x0;_0x10fa38['outbound'][_0x4ef1('0x31')]+=_0x43cf9a[_0x4c77dc][_0x4ef1('0x62')];}}}return _0x10fa38['outbound'];};};Realtime[_0x4ef1('0x3e')][_0x4ef1('0x63')]=function(){var _0x4d5a8f=this;return function(_0x4f08bb){if(_0x4f08bb){freeIsNotKey(_0x4f08bb,_0x4d5a8f[_0x4ef1('0x16')],_0x4ef1('0x2a'));for(var _0x39462a=0x0,_0x3ff848={};_0x39462a<_0x4f08bb[_0x4ef1('0x40')];_0x39462a+=0x1){_0x3ff848=_0x4f08bb[_0x39462a];if(_[_0x4ef1('0x41')](_0x4d5a8f[_0x4ef1('0x16')][_0x3ff848[_0x4ef1('0x2a')]])){_0x4d5a8f[_0x4ef1('0x16')][_0x3ff848['name']]=new Campaign(_0x3ff848);}else{_0x4d5a8f[_0x4ef1('0x42')](_0x4d5a8f[_0x4ef1('0x16')][_0x3ff848[_0x4ef1('0x2a')]],_0x3ff848);_0x4d5a8f[_0x4ef1('0x16')][_0x3ff848['name']][_0x4ef1('0x64')]=_0x3ff848[_0x4ef1('0x65')]?_0x3ff848[_0x4ef1('0x65')]['name']:undefined;}}}return _0x4d5a8f['campaigns'];};};Realtime[_0x4ef1('0x3e')]['initVoiceExtensions']=function(){var _0x1371ce=this;return function(_0x33ccb2){if(_0x33ccb2){freeIsNotKey(_0x33ccb2,_0x1371ce[_0x4ef1('0x18')],'id');for(var _0x3db1f4=0x0,_0x250f0d={};_0x3db1f4<_0x33ccb2[_0x4ef1('0x40')];_0x3db1f4+=0x1){_0x250f0d=_0x33ccb2[_0x3db1f4];if(_[_0x4ef1('0x41')](_0x1371ce[_0x4ef1('0x18')][_0x250f0d['id']])){_0x1371ce['voiceExtensions'][_0x250f0d['id']]=new VoiceExtension(_0x250f0d);}else{_0x1371ce[_0x4ef1('0x42')](_0x1371ce[_0x4ef1('0x18')][_0x250f0d['id']],_0x250f0d);}}}return _0x1371ce[_0x4ef1('0x18')];};};Realtime['prototype'][_0x4ef1('0x66')]=function(){var _0x3d9ffd=this;return function(_0x234300){clearCampaigns(_0x3d9ffd['campaigns']);for(var _0x3de117=0x0;_0x3de117<_0x234300[_0x4ef1('0x40')];_0x3de117+=0x1){_[_0x4ef1('0x51')](_0x3d9ffd[_0x4ef1('0x16')][_0x234300[_0x3de117][_0x4ef1('0x2a')]],_0x234300[_0x3de117]);}return _0x3d9ffd[_0x4ef1('0x16')];};};Realtime[_0x4ef1('0x3e')]['initFaxAccounts']=function(){var _0x242668=this;return function(_0x49bc55){if(_0x49bc55){freeIsNotKey(_0x49bc55,_0x242668[_0x4ef1('0x26')],'id');for(var _0x26df63=0x0,_0x225ccb={},_0x56d051={};_0x26df63<_0x49bc55[_0x4ef1('0x40')];_0x26df63+=0x1){_0x225ccb=_0x49bc55[_0x26df63];if(_[_0x4ef1('0x41')](_0x242668[_0x4ef1('0x26')][_0x225ccb['id']])){_0x242668[_0x4ef1('0x26')][_0x225ccb['id']]=new FaxAccount(_0x225ccb);}else{_0x242668['mergeFromDatabase'](_0x242668[_0x4ef1('0x26')][_0x225ccb['id']],_0x225ccb);}}}return _0x242668[_0x4ef1('0x26')];};};module['exports']=Realtime;
\ No newline at end of file
+var _0xd1ca=['hasOwnProperty','format','SIP/%s','name','isNil','interface','total','answered','sumHoldTime','sumDuration','ivrAnswerCallsDay','isEmpty','unmanaged','abandoned','sumBillable','outboundAnswerAgiCallsDay','outboundBusyCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundReCallsDay','queueStatusComplete','prototype','length','isUndefined','initTelephones','mergeFromDatabase','initTrunks','voiceQueues','initTriggers','triggers','initTemplates','initZendeskAccounts','initSalesforceAccounts','salesforceAccounts','initFreshdeskAccounts','initZohoAccounts','initSugarcrmAccounts','initVtigerAccounts','vtigerAccounts','initServicenowAccounts','initDynamics365Accounts','freshsalesAccounts','initVoiceQueueHopperHistory','merge','initVoiceQueueReports','uniqueid','queue','queuecallerexit','queuecallerabandon','queuecallerleaveAt','diff','queuecallerjoinAt','seconds','queuecallercompleteAt','queuecallerexitAt','queuecallercomplete','initVoiceCallReports','duration','disposition','ANSWERED','billableseconds','initCampaigns','dialQueueProject','SquareProject','initVoiceExtensions','initCampaignHopperHistory','initFaxAccounts','faxAccounts','bluebird','util','moment','../model/telephone','../model/trunk','../model/voiceQueue','../model/trigger','../model/template','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/dynamics365Account','../model/freshsalesAccount','agents','telephones','trunks','campaigns','templates','outbound','voiceExtensions','channels','queueChannels','outboundChannels','timers','settings','zendeskAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','servicenowAccounts','dynamics365Accounts','mapKeys'];(function(_0x4ecef4,_0x3a4db0){var _0x11f0a8=function(_0x5fed0e){while(--_0x5fed0e){_0x4ecef4['push'](_0x4ecef4['shift']());}};_0x11f0a8(++_0x3a4db0);}(_0xd1ca,0xb6));var _0xad1c=function(_0x68c979,_0x431cff){_0x68c979=_0x68c979-0x0;var _0x4f0001=_0xd1ca[_0x68c979];return _0x4f0001;};'use strict';var BPromise=require(_0xad1c('0x0'));var util=require(_0xad1c('0x1'));var _=require('lodash');var moment=require(_0xad1c('0x2'));var Agent=require('../model/agent');var Telephone=require(_0xad1c('0x3'));var Trunk=require(_0xad1c('0x4'));var VoiceQueue=require(_0xad1c('0x5'));var Trigger=require(_0xad1c('0x6'));var Template=require(_0xad1c('0x7'));var Campaign=require(_0xad1c('0x8'));var VoiceExtension=require(_0xad1c('0x9'));var ZendeskAccount=require(_0xad1c('0xa'));var SalesforceAccount=require(_0xad1c('0xb'));var FreshdeskAccount=require('../model/freshdeskAccount');var SugarcrmAccount=require('../model/sugarcrmAccount');var ZohoAccount=require(_0xad1c('0xc'));var DeskAccount=require(_0xad1c('0xd'));var VtigerAccount=require(_0xad1c('0xe'));var ServicenowAccount=require(_0xad1c('0xf'));var Dynamics365Account=require(_0xad1c('0x10'));var FreshsalesAccount=require(_0xad1c('0x11'));var FaxAccount=require('../model/faxAccount');var Realtime=function(){this[_0xad1c('0x12')]={};this[_0xad1c('0x13')]={};this[_0xad1c('0x14')]={};this['voiceQueues']={};this['triggers']={};this[_0xad1c('0x15')]={};this[_0xad1c('0x16')]={};this[_0xad1c('0x17')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0xad1c('0x18')]={};this[_0xad1c('0x19')]={};this[_0xad1c('0x1a')]={};this[_0xad1c('0x1b')]={};this[_0xad1c('0x1c')]={};this[_0xad1c('0x1d')]={};this[_0xad1c('0x1e')]={};this['salesforceAccounts']={};this[_0xad1c('0x1f')]={};this[_0xad1c('0x20')]={};this[_0xad1c('0x21')]={};this[_0xad1c('0x22')]={};this['vtigerAccounts']={};this[_0xad1c('0x23')]={};this[_0xad1c('0x24')]={};this['freshsalesAccounts']={};this['faxAccounts']={};};function freeIsNotKey(_0x3a9a7e,_0x44bfa1,_0x2c7e64){var _0x57c5d3=_[_0xad1c('0x25')](_0x3a9a7e,function(_0xd059d5,_0x3078a5){return _0xd059d5[_0x2c7e64];});for(var _0x2869db in _0x44bfa1){if(_0x44bfa1[_0xad1c('0x26')](_0x2869db)){if(!_0x57c5d3[_0x2869db]){delete _0x44bfa1[_0x2869db];}}}}function freeIsNotKeySip(_0x410ff3,_0x138798){var _0x550a76=_[_0xad1c('0x25')](_0x410ff3,function(_0x4eb526,_0x1127c6){return util[_0xad1c('0x27')](_0xad1c('0x28'),_0x4eb526[_0xad1c('0x29')]);});for(var _0x17aa85 in _0x138798){if(_0x138798[_0xad1c('0x26')](_0x17aa85)){if(!_0x550a76[_0x17aa85]){delete _0x138798[_0x17aa85];}}}}function freeIsNotKeyAgent(_0x5626f0,_0x2b2da3){var _0x17012f=_[_0xad1c('0x25')](_0x5626f0,function(_0x39c7a8,_0x3df50e){var _0x31f651=_[_0xad1c('0x2a')](_0x39c7a8['interface'])?util['format']('SIP/%s',_0x39c7a8[_0xad1c('0x29')]):_0x39c7a8[_0xad1c('0x2b')];return _0x31f651;});for(var _0x253878 in _0x2b2da3){if(_0x2b2da3[_0xad1c('0x26')](_0x253878)){if(!_0x17012f[_0x253878]){delete _0x2b2da3[_0x253878];}}}}function clearVoiceCallReports(_0x5dae3f){_0x5dae3f[_0xad1c('0x2c')]=0x0;_0x5dae3f[_0xad1c('0x2d')]=0x0;_0x5dae3f[_0xad1c('0x2e')]=0x0;_0x5dae3f[_0xad1c('0x2f')]=0x0;_0x5dae3f['sumBillable']=0x0;}function clearCampaigns(_0x5b9662){if(!_['isEmpty'](_0x5b9662)){for(var _0x59fc45 in _0x5b9662){if(_0x5b9662[_0xad1c('0x26')](_0x59fc45)){_0x5b9662[_0x59fc45]['ivrTotalCallsDays']=0x0;_0x5b9662[_0x59fc45][_0xad1c('0x30')]=0x0;}}}}function clearVoiceQueues(_0x24e8bc){if(!_[_0xad1c('0x31')](_0x24e8bc)){for(var _0x36cfde in _0x24e8bc){if(_0x24e8bc[_0xad1c('0x26')](_0x36cfde)){_0x24e8bc[_0x36cfde][_0xad1c('0x2c')]=0x0;_0x24e8bc[_0x36cfde]['answered']=0x0;_0x24e8bc[_0x36cfde][_0xad1c('0x32')]=0x0;_0x24e8bc[_0x36cfde][_0xad1c('0x33')]=0x0;_0x24e8bc[_0x36cfde][_0xad1c('0x2e')]=0x0;_0x24e8bc[_0x36cfde][_0xad1c('0x2f')]=0x0;_0x24e8bc[_0x36cfde][_0xad1c('0x34')]=0x0;_0x24e8bc[_0x36cfde][_0xad1c('0x35')]=0x0;_0x24e8bc[_0x36cfde]['outboundNoAnswerCallsDay']=0x0;_0x24e8bc[_0x36cfde][_0xad1c('0x36')]=0x0;_0x24e8bc[_0x36cfde]['outboundCongestionCallsDay']=0x0;_0x24e8bc[_0x36cfde]['outboundNoSuchCallsDay']=0x0;_0x24e8bc[_0x36cfde][_0xad1c('0x37')]=0x0;_0x24e8bc[_0x36cfde][_0xad1c('0x38')]=0x0;_0x24e8bc[_0x36cfde][_0xad1c('0x39')]=0x0;_0x24e8bc[_0x36cfde][_0xad1c('0x3a')]=0x0;_0x24e8bc[_0x36cfde][_0xad1c('0x3b')]=0x0;_0x24e8bc[_0x36cfde][_0xad1c('0x3c')]=0x0;_0x24e8bc[_0x36cfde][_0xad1c('0x3d')]=0x0;_0x24e8bc[_0x36cfde][_0xad1c('0x35')]=0x0;_0x24e8bc[_0x36cfde]['outboundAnswerCallsDay']=0x0;_0x24e8bc[_0x36cfde][_0xad1c('0x3e')]=!![];}}}}Realtime[_0xad1c('0x3f')]['mergeFromDatabase']=function(_0xb9994b,_0x35af88){for(var _0x5a766c in _0x35af88){if(_0xb9994b['hasOwnProperty'](_0x5a766c)){_0xb9994b[_0x5a766c]=_0x35af88[_0x5a766c];}}};Realtime[_0xad1c('0x3f')]['initAgents']=function(){var _0x4a04a4=this;return function(_0x17c3de){if(_0x17c3de){freeIsNotKeyAgent(_0x17c3de,_0x4a04a4['agents']);for(var _0x421026=0x0,_0x4ed477={},_0x190ba7={};_0x421026<_0x17c3de[_0xad1c('0x40')];_0x421026+=0x1){_0x4ed477=_0x17c3de[_0x421026];var _0x3c1235=_[_0xad1c('0x2a')](_0x4ed477['interface'])?util[_0xad1c('0x27')](_0xad1c('0x28'),_0x4ed477[_0xad1c('0x29')]):_0x4ed477['interface'];if(_[_0xad1c('0x41')](_0x4a04a4['agents'][_0x3c1235])){_0x4a04a4[_0xad1c('0x12')][_0x3c1235]=new Agent(_0x4ed477);}else{_0x4a04a4['mergeFromDatabase'](_0x4a04a4[_0xad1c('0x12')][_0x3c1235],_0x4ed477);}}}return _0x4a04a4['agents'];};};Realtime[_0xad1c('0x3f')][_0xad1c('0x42')]=function(){var _0x28b0a9=this;return function(_0x471db5){if(_0x471db5){freeIsNotKeySip(_0x471db5,_0x28b0a9['telephones']);for(var _0x4e1727=0x0,_0x2a6307={},_0x51fcf4={};_0x4e1727<_0x471db5['length'];_0x4e1727+=0x1){_0x2a6307=_0x471db5[_0x4e1727];if(_[_0xad1c('0x41')](_0x28b0a9[_0xad1c('0x13')][util[_0xad1c('0x27')](_0xad1c('0x28'),_0x2a6307[_0xad1c('0x29')])])){_0x28b0a9[_0xad1c('0x13')][util['format']('SIP/%s',_0x2a6307[_0xad1c('0x29')])]=new Telephone(_0x2a6307);}else{_0x28b0a9[_0xad1c('0x43')](_0x28b0a9[_0xad1c('0x13')][util[_0xad1c('0x27')](_0xad1c('0x28'),_0x2a6307[_0xad1c('0x29')])],_0x2a6307);}}}return _0x28b0a9[_0xad1c('0x13')];};};Realtime['prototype'][_0xad1c('0x44')]=function(){var _0x4643c1=this;return function(_0x5f2559){if(_0x5f2559){freeIsNotKeySip(_0x5f2559,_0x4643c1[_0xad1c('0x14')]);for(var _0x3246e7=0x0,_0x453409={},_0x3006a0={};_0x3246e7<_0x5f2559[_0xad1c('0x40')];_0x3246e7+=0x1){_0x453409=_0x5f2559[_0x3246e7];if(_[_0xad1c('0x41')](_0x4643c1[_0xad1c('0x14')][util[_0xad1c('0x27')](_0xad1c('0x28'),_0x453409['name'])])){_0x4643c1[_0xad1c('0x14')][util['format'](_0xad1c('0x28'),_0x453409[_0xad1c('0x29')])]=new Trunk(_0x453409);}else{_0x4643c1['mergeFromDatabase'](_0x4643c1[_0xad1c('0x14')][util[_0xad1c('0x27')](_0xad1c('0x28'),_0x453409[_0xad1c('0x29')])],_0x453409);}}}return _0x4643c1[_0xad1c('0x14')];};};Realtime[_0xad1c('0x3f')]['initVoiceQueues']=function(){var _0x332ced=this;return function(_0x209efd){if(_0x209efd){freeIsNotKey(_0x209efd,_0x332ced[_0xad1c('0x45')],_0xad1c('0x29'));for(var _0x29a41e=0x0,_0x278aac={},_0x4e5536={};_0x29a41e<_0x209efd[_0xad1c('0x40')];_0x29a41e+=0x1){_0x278aac=_0x209efd[_0x29a41e];if(_[_0xad1c('0x41')](_0x332ced[_0xad1c('0x45')][_0x278aac['name']])){_0x332ced['voiceQueues'][_0x278aac[_0xad1c('0x29')]]=new VoiceQueue(_0x278aac);}else{_0x332ced[_0xad1c('0x43')](_0x332ced[_0xad1c('0x45')][_0x278aac[_0xad1c('0x29')]],_0x278aac);}}}return _0x332ced[_0xad1c('0x45')];};};Realtime[_0xad1c('0x3f')][_0xad1c('0x46')]=function(){var _0x149452=this;return function(_0x31be14){if(_0x31be14){freeIsNotKey(_0x31be14,_0x149452[_0xad1c('0x47')],'id');for(var _0x386eb3=0x0,_0x5b6f89={},_0x497284={};_0x386eb3<_0x31be14[_0xad1c('0x40')];_0x386eb3+=0x1){_0x5b6f89=_0x31be14[_0x386eb3];if(_[_0xad1c('0x41')](_0x149452[_0xad1c('0x47')][_0x5b6f89['id']])){_0x149452['triggers'][_0x5b6f89['id']]=new Trigger(_0x5b6f89);}else{_0x149452['mergeFromDatabase'](_0x149452[_0xad1c('0x47')][_0x5b6f89['id']],_0x5b6f89);}}}return _0x149452[_0xad1c('0x47')];};};Realtime[_0xad1c('0x3f')][_0xad1c('0x48')]=function(){var _0x9c1a1f=this;return function(_0x27b81a){if(_0x27b81a){freeIsNotKey(_0x27b81a,_0x9c1a1f[_0xad1c('0x16')],'id');for(var _0x2ac844=0x0,_0x4ba001={},_0x1d4ec3={};_0x2ac844<_0x27b81a[_0xad1c('0x40')];_0x2ac844+=0x1){_0x4ba001=_0x27b81a[_0x2ac844];if(_[_0xad1c('0x41')](_0x9c1a1f[_0xad1c('0x16')][_0x4ba001['id']])){_0x9c1a1f['templates'][_0x4ba001['id']]=new Template(_0x4ba001);}else{_0x9c1a1f[_0xad1c('0x43')](_0x9c1a1f[_0xad1c('0x16')][_0x4ba001['id']],_0x4ba001);}}}return _0x9c1a1f['templates'];};};Realtime[_0xad1c('0x3f')][_0xad1c('0x49')]=function(){var _0x4b8083=this;return function(_0x4d477b){if(_0x4d477b){freeIsNotKey(_0x4d477b,_0x4b8083[_0xad1c('0x1e')],'id');for(var _0x2a2c12=0x0,_0x1867c8={},_0x5b3e53={};_0x2a2c12<_0x4d477b[_0xad1c('0x40')];_0x2a2c12+=0x1){_0x1867c8=_0x4d477b[_0x2a2c12];if(_[_0xad1c('0x41')](_0x4b8083['zendeskAccounts'][_0x1867c8['id']])){_0x4b8083['zendeskAccounts'][_0x1867c8['id']]=new ZendeskAccount(_0x1867c8);}else{_0x4b8083[_0xad1c('0x43')](_0x4b8083['zendeskAccounts'][_0x1867c8['id']],_0x1867c8);}}}return _0x4b8083[_0xad1c('0x1e')];};};Realtime['prototype'][_0xad1c('0x4a')]=function(){var _0x34bd2f=this;return function(_0x2d6135){if(_0x2d6135){freeIsNotKey(_0x2d6135,_0x34bd2f[_0xad1c('0x4b')],'id');for(var _0x1d32a5=0x0,_0x156c32={},_0x5f1f93={};_0x1d32a5<_0x2d6135[_0xad1c('0x40')];_0x1d32a5+=0x1){_0x156c32=_0x2d6135[_0x1d32a5];if(_[_0xad1c('0x41')](_0x34bd2f[_0xad1c('0x4b')][_0x156c32['id']])){_0x34bd2f['salesforceAccounts'][_0x156c32['id']]=new SalesforceAccount(_0x156c32);}else{_0x34bd2f[_0xad1c('0x43')](_0x34bd2f[_0xad1c('0x4b')][_0x156c32['id']],_0x156c32);}}}return _0x34bd2f[_0xad1c('0x4b')];};};Realtime[_0xad1c('0x3f')][_0xad1c('0x4c')]=function(){var _0x15a312=this;return function(_0x5add5e){if(_0x5add5e){freeIsNotKey(_0x5add5e,_0x15a312[_0xad1c('0x20')],'id');for(var _0x385330=0x0,_0x1fb5d6={},_0x359cdf={};_0x385330<_0x5add5e[_0xad1c('0x40')];_0x385330+=0x1){_0x1fb5d6=_0x5add5e[_0x385330];if(_[_0xad1c('0x41')](_0x15a312['freshdeskAccounts'][_0x1fb5d6['id']])){_0x15a312[_0xad1c('0x20')][_0x1fb5d6['id']]=new FreshdeskAccount(_0x1fb5d6);}else{_0x15a312[_0xad1c('0x43')](_0x15a312[_0xad1c('0x20')][_0x1fb5d6['id']],_0x1fb5d6);}}}return _0x15a312[_0xad1c('0x20')];};};Realtime['prototype'][_0xad1c('0x4d')]=function(){var _0x1e2c24=this;return function(_0x567554){if(_0x567554){freeIsNotKey(_0x567554,_0x1e2c24['zohoAccounts'],'id');for(var _0x5451ad=0x0,_0x35bfcb={},_0x3a2ecd={};_0x5451ad<_0x567554[_0xad1c('0x40')];_0x5451ad+=0x1){_0x35bfcb=_0x567554[_0x5451ad];if(_[_0xad1c('0x41')](_0x1e2c24[_0xad1c('0x21')][_0x35bfcb['id']])){_0x1e2c24[_0xad1c('0x21')][_0x35bfcb['id']]=new ZohoAccount(_0x35bfcb);}else{_0x1e2c24[_0xad1c('0x43')](_0x1e2c24[_0xad1c('0x21')][_0x35bfcb['id']],_0x35bfcb);}}}return _0x1e2c24[_0xad1c('0x21')];};};Realtime[_0xad1c('0x3f')]['initDeskAccounts']=function(){var _0x2dac96=this;return function(_0x788fe2){if(_0x788fe2){freeIsNotKey(_0x788fe2,_0x2dac96[_0xad1c('0x22')],'id');for(var _0x33d2a6=0x0,_0x169862={},_0x51ee4b={};_0x33d2a6<_0x788fe2['length'];_0x33d2a6+=0x1){_0x169862=_0x788fe2[_0x33d2a6];if(_[_0xad1c('0x41')](_0x2dac96[_0xad1c('0x22')][_0x169862['id']])){_0x2dac96[_0xad1c('0x22')][_0x169862['id']]=new DeskAccount(_0x169862);}else{_0x2dac96[_0xad1c('0x43')](_0x2dac96[_0xad1c('0x22')][_0x169862['id']],_0x169862);}}}return _0x2dac96[_0xad1c('0x22')];};};Realtime[_0xad1c('0x3f')][_0xad1c('0x4e')]=function(){var _0x208d0e=this;return function(_0x3b03d5){if(_0x3b03d5){freeIsNotKey(_0x3b03d5,_0x208d0e['sugarcrmAccounts'],'id');for(var _0x4d9c38=0x0,_0x34700e={},_0x213698={};_0x4d9c38<_0x3b03d5[_0xad1c('0x40')];_0x4d9c38+=0x1){_0x34700e=_0x3b03d5[_0x4d9c38];if(_[_0xad1c('0x41')](_0x208d0e[_0xad1c('0x1f')][_0x34700e['id']])){_0x208d0e[_0xad1c('0x1f')][_0x34700e['id']]=new SugarcrmAccount(_0x34700e);}else{_0x208d0e[_0xad1c('0x43')](_0x208d0e[_0xad1c('0x1f')][_0x34700e['id']],_0x34700e);}}}return _0x208d0e[_0xad1c('0x1f')];};};Realtime['prototype'][_0xad1c('0x4f')]=function(){var _0x2856b=this;return function(_0x16ca01){if(_0x16ca01){freeIsNotKey(_0x16ca01,_0x2856b[_0xad1c('0x50')],'id');for(var _0x2b7d6a=0x0,_0x4d56f3={},_0x5c460d={};_0x2b7d6a<_0x16ca01[_0xad1c('0x40')];_0x2b7d6a+=0x1){_0x4d56f3=_0x16ca01[_0x2b7d6a];if(_[_0xad1c('0x41')](_0x2856b['vtigerAccounts'][_0x4d56f3['id']])){_0x2856b['vtigerAccounts'][_0x4d56f3['id']]=new VtigerAccount(_0x4d56f3);}else{_0x2856b[_0xad1c('0x43')](_0x2856b[_0xad1c('0x50')][_0x4d56f3['id']],_0x4d56f3);}}}return _0x2856b[_0xad1c('0x50')];};};Realtime['prototype'][_0xad1c('0x51')]=function(){var _0xc731f6=this;return function(_0x52abd5){if(_0x52abd5){freeIsNotKey(_0x52abd5,_0xc731f6['servicenowAccounts'],'id');for(var _0x3d96df=0x0,_0x44b87d={},_0x205862={};_0x3d96df<_0x52abd5[_0xad1c('0x40')];_0x3d96df+=0x1){_0x44b87d=_0x52abd5[_0x3d96df];if(_['isUndefined'](_0xc731f6[_0xad1c('0x23')][_0x44b87d['id']])){_0xc731f6[_0xad1c('0x23')][_0x44b87d['id']]=new ServicenowAccount(_0x44b87d);}else{_0xc731f6[_0xad1c('0x43')](_0xc731f6[_0xad1c('0x23')][_0x44b87d['id']],_0x44b87d);}}}return _0xc731f6[_0xad1c('0x23')];};};Realtime['prototype'][_0xad1c('0x52')]=function(){var _0x4d0bce=this;return function(_0x372e66){if(_0x372e66){freeIsNotKey(_0x372e66,_0x4d0bce[_0xad1c('0x24')],'id');for(var _0x3e9805=0x0,_0x4e7027={},_0x54ddbf={};_0x3e9805<_0x372e66[_0xad1c('0x40')];_0x3e9805+=0x1){_0x4e7027=_0x372e66[_0x3e9805];if(_[_0xad1c('0x41')](_0x4d0bce[_0xad1c('0x24')][_0x4e7027['id']])){_0x4d0bce[_0xad1c('0x24')][_0x4e7027['id']]=new Dynamics365Account(_0x4e7027);}else{_0x4d0bce['mergeFromDatabase'](_0x4d0bce['dynamics365Accounts'][_0x4e7027['id']],_0x4e7027);}}}return _0x4d0bce['dynamics365Accounts'];};};Realtime[_0xad1c('0x3f')]['initFreshsalesAccounts']=function(){var _0xd99f09=this;return function(_0xfec297){if(_0xfec297){freeIsNotKey(_0xfec297,_0xd99f09[_0xad1c('0x53')],'id');for(var _0x360834=0x0,_0x344545={},_0x12d943={};_0x360834<_0xfec297[_0xad1c('0x40')];_0x360834+=0x1){_0x344545=_0xfec297[_0x360834];if(_[_0xad1c('0x41')](_0xd99f09[_0xad1c('0x53')][_0x344545['id']])){_0xd99f09[_0xad1c('0x53')][_0x344545['id']]=new FreshsalesAccount(_0x344545);}else{_0xd99f09['mergeFromDatabase'](_0xd99f09[_0xad1c('0x53')][_0x344545['id']],_0x344545);}}}return _0xd99f09['freshsalesAccounts'];};};Realtime[_0xad1c('0x3f')][_0xad1c('0x54')]=function(){var _0x68fc9a=this;return function(_0x19aac0){for(var _0x14951f=0x0;_0x14951f<_0x19aac0[_0xad1c('0x40')];_0x14951f+=0x1){_[_0xad1c('0x55')](_0x68fc9a[_0xad1c('0x45')][_0x19aac0[_0x14951f]['name']],_0x19aac0[_0x14951f]);}return _0x68fc9a[_0xad1c('0x45')];};};Realtime['prototype'][_0xad1c('0x56')]=function(){var _0x31fd90=this;return function(_0x3e32b5){clearVoiceQueues(_0x31fd90[_0xad1c('0x45')]);if(_0x3e32b5){_0x3e32b5=_['groupBy'](_0x3e32b5,_0xad1c('0x57'));for(var _0x56e678 in _0x3e32b5){if(_0x3e32b5[_0xad1c('0x26')](_0x56e678)){var _0x3147bf={};for(var _0x1e9b08=0x0;_0x1e9b08<_0x3e32b5[_0x56e678]['length'];_0x1e9b08+=0x1){var _0x469614=_0x3e32b5[_0x56e678][_0x1e9b08][_0xad1c('0x58')];if(_0x31fd90['voiceQueues'][_0x469614]){if(_0x3e32b5[_0x56e678][_0x1e9b08][_0xad1c('0x59')]){_0x31fd90[_0xad1c('0x45')][_0x469614][_0xad1c('0x32')]+=0x1;}if(_0x3e32b5[_0x56e678][_0x1e9b08][_0xad1c('0x5a')]){_0x31fd90['voiceQueues'][_0x469614][_0xad1c('0x33')]+=0x1;}_0x31fd90[_0xad1c('0x45')][_0x469614][_0xad1c('0x2e')]+=moment(_0x3e32b5[_0x56e678][_0x1e9b08][_0xad1c('0x5b')])[_0xad1c('0x5c')](moment(_0x3e32b5[_0x56e678][_0x1e9b08][_0xad1c('0x5d')]),_0xad1c('0x5e'))||0x0;if(_0x1e9b08===_0x3e32b5[_0x56e678][_0xad1c('0x40')]-0x1){_0x31fd90[_0xad1c('0x45')][_0x469614][_0xad1c('0x2f')]+=moment(_0x3e32b5[_0x56e678][_0x1e9b08][_0xad1c('0x5f')]||_0x3e32b5[_0x56e678][_0x1e9b08]['queuecallerabandonAt']||_0x3e32b5[_0x56e678][_0x1e9b08][_0xad1c('0x60')])[_0xad1c('0x5c')](moment(_0x3e32b5[_0x56e678][_0x1e9b08][_0xad1c('0x5d')]),'seconds')||0x0;_0x31fd90[_0xad1c('0x45')][_0x469614][_0xad1c('0x2c')]+=0x1;if(_0x3e32b5[_0x56e678][_0x1e9b08][_0xad1c('0x61')]){_0x31fd90[_0xad1c('0x45')][_0x469614][_0xad1c('0x2d')]+=0x1;_0x31fd90[_0xad1c('0x45')][_0x469614][_0xad1c('0x34')]+=moment(_0x3e32b5[_0x56e678][_0x1e9b08][_0xad1c('0x5f')])['diff'](moment(_0x3e32b5[_0x56e678][_0x1e9b08][_0xad1c('0x5b')]),_0xad1c('0x5e'))||0x0;}}else{_0x31fd90[_0xad1c('0x45')][_0x469614][_0xad1c('0x2f')]+=_0x31fd90[_0xad1c('0x45')][_0x469614]['sumHoldTime']||0x0;}}}}}}return _0x31fd90[_0xad1c('0x45')];};};Realtime['prototype'][_0xad1c('0x62')]=function(){var _0x54af6e=this;return function(_0x442b4c){clearVoiceCallReports(_0x54af6e[_0xad1c('0x17')]);if(_0x442b4c){for(var _0x1ba7c6=0x0;_0x1ba7c6<_0x442b4c['length'];_0x1ba7c6+=0x1){_0x54af6e['outbound'][_0xad1c('0x2c')]+=0x1;_0x54af6e[_0xad1c('0x17')][_0xad1c('0x2f')]+=_0x442b4c[_0x1ba7c6][_0xad1c('0x63')];if(_0x442b4c[_0x1ba7c6][_0xad1c('0x64')]===_0xad1c('0x65')){_0x54af6e['outbound'][_0xad1c('0x2d')]+=0x1;_0x54af6e['outbound'][_0xad1c('0x2e')]+=_0x442b4c[_0x1ba7c6][_0xad1c('0x63')]-_0x442b4c[_0x1ba7c6][_0xad1c('0x66')]||0x0;_0x54af6e['outbound'][_0xad1c('0x34')]+=_0x442b4c[_0x1ba7c6][_0xad1c('0x66')];}}}return _0x54af6e[_0xad1c('0x17')];};};Realtime[_0xad1c('0x3f')][_0xad1c('0x67')]=function(){var _0x1a6bfe=this;return function(_0x28176d){if(_0x28176d){freeIsNotKey(_0x28176d,_0x1a6bfe[_0xad1c('0x15')],_0xad1c('0x29'));for(var _0x28041d=0x0,_0x3e66cb={};_0x28041d<_0x28176d['length'];_0x28041d+=0x1){_0x3e66cb=_0x28176d[_0x28041d];if(_[_0xad1c('0x41')](_0x1a6bfe[_0xad1c('0x15')][_0x3e66cb[_0xad1c('0x29')]])){_0x1a6bfe['campaigns'][_0x3e66cb[_0xad1c('0x29')]]=new Campaign(_0x3e66cb);}else{_0x1a6bfe[_0xad1c('0x43')](_0x1a6bfe[_0xad1c('0x15')][_0x3e66cb[_0xad1c('0x29')]],_0x3e66cb);_0x1a6bfe[_0xad1c('0x15')][_0x3e66cb[_0xad1c('0x29')]][_0xad1c('0x68')]=_0x3e66cb[_0xad1c('0x69')]?_0x3e66cb[_0xad1c('0x69')][_0xad1c('0x29')]:undefined;}}}return _0x1a6bfe[_0xad1c('0x15')];};};Realtime['prototype'][_0xad1c('0x6a')]=function(){var _0x67561b=this;return function(_0x21a37c){if(_0x21a37c){freeIsNotKey(_0x21a37c,_0x67561b['voiceExtensions'],'id');for(var _0x5067a5=0x0,_0xd57b6c={};_0x5067a5<_0x21a37c[_0xad1c('0x40')];_0x5067a5+=0x1){_0xd57b6c=_0x21a37c[_0x5067a5];if(_[_0xad1c('0x41')](_0x67561b[_0xad1c('0x18')][_0xd57b6c['id']])){_0x67561b[_0xad1c('0x18')][_0xd57b6c['id']]=new VoiceExtension(_0xd57b6c);}else{_0x67561b[_0xad1c('0x43')](_0x67561b['voiceExtensions'][_0xd57b6c['id']],_0xd57b6c);}}}return _0x67561b['voiceExtensions'];};};Realtime[_0xad1c('0x3f')][_0xad1c('0x6b')]=function(){var _0x20a6ee=this;return function(_0x219940){clearCampaigns(_0x20a6ee[_0xad1c('0x15')]);for(var _0x3579f2=0x0;_0x3579f2<_0x219940[_0xad1c('0x40')];_0x3579f2+=0x1){_[_0xad1c('0x55')](_0x20a6ee[_0xad1c('0x15')][_0x219940[_0x3579f2][_0xad1c('0x29')]],_0x219940[_0x3579f2]);}return _0x20a6ee[_0xad1c('0x15')];};};Realtime[_0xad1c('0x3f')][_0xad1c('0x6c')]=function(){var _0x378a64=this;return function(_0x4c440d){if(_0x4c440d){freeIsNotKey(_0x4c440d,_0x378a64[_0xad1c('0x6d')],'id');for(var _0x3ce7dc=0x0,_0x4d4473={},_0x4fdc93={};_0x3ce7dc<_0x4c440d[_0xad1c('0x40')];_0x3ce7dc+=0x1){_0x4d4473=_0x4c440d[_0x3ce7dc];if(_[_0xad1c('0x41')](_0x378a64['faxAccounts'][_0x4d4473['id']])){_0x378a64[_0xad1c('0x6d')][_0x4d4473['id']]=new FaxAccount(_0x4d4473);}else{_0x378a64[_0xad1c('0x43')](_0x378a64[_0xad1c('0x6d')][_0x4d4473['id']],_0x4d4473);}}}return _0x378a64[_0xad1c('0x6d')];};};module['exports']=Realtime;
\ No newline at end of file
index ac1b0db..bee4b00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f4e=['queuecallerexit','create','match','voiceCallReport','destination','exten','dialer','lastapplication','queue','lastdata','context','callerid','from-sip','xcally-motion-preview','calleridpreview','destinationchannel','channel','calleridnum','originatecalleridnum','disposition','connectedlinenum','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','transfereelinkedid','monitor','monitors','monitorFilename','createdAt','connectedlinename','membername','xcally-motion-dialer','startsWith','Local','substring','indexOf','mobile','phone','exports','moment','util','../../../config/environment','../ami','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','realtime','agents','telephones','prototype','sync','xdr','disabled','custom:voiceQueueReport','voiceQueueReport','bind','custom:voiceCallReport','custom:voiceAgentReport','voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindtransfer','blindTransfer','attendedTransfer','findAgent','accountcode','name','isNil','find','interface','format','SIP/%s','length','assigned','lastAssignedTo','queuecallercomplete','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x68c979,_0x431cff){var _0x4f0001=function(_0xa7595d){while(--_0xa7595d){_0x68c979['push'](_0x68c979['shift']());}};_0x4f0001(++_0x431cff);}(_0x6f4e,0x7a));var _0xe6f4=function(_0x4d7cc7,_0xe2f8a3){_0x4d7cc7=_0x4d7cc7-0x0;var _0x56bfca=_0x6f4e[_0x4d7cc7];return _0x56bfca;};'use strict';var _=require('lodash');var moment=require(_0xe6f4('0x0'));var util=require(_0xe6f4('0x1'));var config=require(_0xe6f4('0x2'));var ami=require(_0xe6f4('0x3'));var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');var RpcVoiceCallReport=require('../rpc/voiceCallReport');var RpcVoiceDialReport=require(_0xe6f4('0x4'));var RpcMemberReport=require(_0xe6f4('0x5'));var RpcVoiceQueueReport=require('../rpc/voiceQueueReport');var RpcVoiceRecording=require(_0xe6f4('0x6'));var RpcVoiceTransferReport=require(_0xe6f4('0x7'));var VoiceQueueReport=require(_0xe6f4('0x8'));var VoiceCallReport=require(_0xe6f4('0x9'));var VoiceAgentReport=require(_0xe6f4('0xa'));var VoiceDialReport=require('./voiceDialReport');var UserReport=require('./userReport');function Report(_0x24318f){this[_0xe6f4('0xb')]=_0x24318f;this[_0xe6f4('0xc')]=_0x24318f[_0xe6f4('0xc')];this[_0xe6f4('0xd')]=_0x24318f[_0xe6f4('0xd')];}Report[_0xe6f4('0xe')][_0xe6f4('0xf')]=function(_0x57eabb){var _0x56242b=new VoiceQueueReport(this['realtime']);var _0x33cf8c=new VoiceAgentReport(this['realtime']);var _0x1763e4=new VoiceDialReport(this[_0xe6f4('0xb')]);var _0x1e737c=new VoiceCallReport(this[_0xe6f4('0xb')]);var _0x258002=new UserReport(this[_0xe6f4('0xb')]);if(config['xdr']&&config[_0xe6f4('0x10')][_0xe6f4('0x11')]){ami['on'](_0xe6f4('0x12'),this[_0xe6f4('0x13')][_0xe6f4('0x14')](this));ami['on'](_0xe6f4('0x15'),this['voiceCallReport'][_0xe6f4('0x14')](this));ami['on'](_0xe6f4('0x16'),this[_0xe6f4('0x17')][_0xe6f4('0x14')](this));ami['on'](_0xe6f4('0x18'),this[_0xe6f4('0x19')][_0xe6f4('0x14')](this));ami['on'](_0xe6f4('0x1a'),this[_0xe6f4('0x1b')][_0xe6f4('0x14')](this));ami['on']('attendedtransfer',this[_0xe6f4('0x1c')][_0xe6f4('0x14')](this));}};Report[_0xe6f4('0xe')][_0xe6f4('0x1d')]=function(_0x58365c){var _0x3c197c;_0x3c197c=_['find'](this['agents'],function(_0x11e16e){return _0x11e16e[_0xe6f4('0x1e')]==_0x58365c||_0x11e16e[_0xe6f4('0x1f')]==_0x58365c;});if(_[_0xe6f4('0x20')](_0x3c197c)){var _0x248546=_[_0xe6f4('0x21')](this[_0xe6f4('0xd')],function(_0x3b2572){return _0x3b2572[_0xe6f4('0x1e')]==_0x58365c||_0x3b2572[_0xe6f4('0x1f')]==_0x58365c;});if(_0x248546){_0x3c197c=_[_0xe6f4('0x21')](this[_0xe6f4('0xc')],function(_0x267f42){return _0x267f42[_0xe6f4('0x22')]==util[_0xe6f4('0x23')](_0xe6f4('0x24'),_0x248546[_0xe6f4('0x1f')]);});}}return _0x3c197c;};Report[_0xe6f4('0xe')][_0xe6f4('0x13')]=function(_0x47c988){for(var _0x52572b=0x0;_0x52572b<_0x47c988[_0xe6f4('0x25')];_0x52572b+=0x1){var _0x445080=this['findAgent'](_0x47c988[_0x52572b]['connectedlinenum']);if(_0x445080){_0x47c988[_0x52572b][_0xe6f4('0x1e')]=_0x445080[_0xe6f4('0x1e')];_0x47c988[_0x52572b][_0xe6f4('0x26')]=!![];_0x47c988[_0x52572b][_0xe6f4('0x27')]=_0x445080[_0xe6f4('0x1f')];_0x47c988[_0x52572b]['interface']=_['isNil'](_0x445080[_0xe6f4('0x22')])?util[_0xe6f4('0x23')]('SIP/%s',_0x445080['name']):_0x445080[_0xe6f4('0x22')];if(_0x47c988[_0x52572b][_0xe6f4('0x28')]){_0x47c988[_0x52572b]['queuecallercompleteAt']=moment()['format'](_0xe6f4('0x29'));}if(_0x47c988[_0x52572b][_0xe6f4('0x2a')]){_0x47c988[_0x52572b]['queuecallerexitAt']=moment()[_0xe6f4('0x23')](_0xe6f4('0x29'));}RpcMemberReport['voiceQueueReport'](_0x47c988[_0x52572b]);}RpcVoiceQueueReport[_0xe6f4('0x2b')](_0x47c988[_0x52572b]);}};function extractCalleridNumber(_0x3d4170){var _0x521d31=_0x3d4170[_0xe6f4('0x2c')](/<(.*?)>/);return _0x521d31?_0x521d31[0x1]:_0x3d4170;}Report[_0xe6f4('0xe')][_0xe6f4('0x2d')]=function(_0x3ee315){_0x3ee315['destination']=_0x3ee315[_0xe6f4('0x2e')]||_0x3ee315[_0xe6f4('0x2f')];if(_0x3ee315['type']==_0xe6f4('0x30')){_0x3ee315[_0xe6f4('0x31')]=_0xe6f4('0x32');_0x3ee315[_0xe6f4('0x33')]=_0x3ee315['queue'];if(_0x3ee315[_0xe6f4('0x34')]=='from-voip-provider'){_0x3ee315['accountcode']='';_0x3ee315[_0xe6f4('0x2e')]=extractCalleridNumber(_0x3ee315[_0xe6f4('0x35')]);}else if(_0x3ee315[_0xe6f4('0x34')]==_0xe6f4('0x36')){if(_0x3ee315['destination']==_0xe6f4('0x37')){_0x3ee315[_0xe6f4('0x2e')]=extractCalleridNumber(_0x3ee315[_0xe6f4('0x38')]);_0x3ee315['calleridnum']=_0x3ee315['originatecalleridnum'];_0x3ee315[_0xe6f4('0x39')]=[_0x3ee315[_0xe6f4('0x3a')],_0x3ee315['channel']=_0x3ee315[_0xe6f4('0x39')]][0x0];_0x3ee315['callerid']=_0x3ee315[_0xe6f4('0x38')];}else{_0x3ee315[_0xe6f4('0x2e')]=_0x3ee315['calleridnum'];_0x3ee315[_0xe6f4('0x3b')]=_0x3ee315[_0xe6f4('0x3c')];if(_0x3ee315[_0xe6f4('0x3d')]=='ANSWERED'){_0x3ee315[_0xe6f4('0x1e')]=_0x3ee315[_0xe6f4('0x3e')];}else{_0x3ee315[_0xe6f4('0x1e')]='';}}}}else{_0x3ee315[_0xe6f4('0x35')]=util[_0xe6f4('0x23')](_0xe6f4('0x3f'),_0x3ee315[_0xe6f4('0x40')],_0x3ee315[_0xe6f4('0x3b')]);}if(RpcVoiceTransferReport[_0xe6f4('0x41')][_0x3ee315[_0xe6f4('0x42')]]){var _0x5b8c1c=RpcVoiceTransferReport[_0xe6f4('0x41')][_0x3ee315[_0xe6f4('0x42')]];_0x5b8c1c[_0xe6f4('0x43')]=_0x3ee315['uniqueid'];RpcVoiceTransferReport[_0xe6f4('0x1b')](_0x5b8c1c);delete RpcVoiceTransferReport['transfers'][_0x3ee315[_0xe6f4('0x42')]];}RpcVoiceCallReport[_0xe6f4('0x2b')](_0x3ee315);if(_0x3ee315[_0xe6f4('0x44')]){for(var _0x2ce3a9=0x0;_0x2ce3a9<_0x3ee315[_0xe6f4('0x45')][_0xe6f4('0x25')];_0x2ce3a9+=0x1){_0x3ee315[_0xe6f4('0x46')]=_0x3ee315['monitors'][_0x2ce3a9]['filename'];_0x3ee315[_0xe6f4('0x47')]=_0x3ee315['monitors'][_0x2ce3a9][_0xe6f4('0x47')];if(_0x3ee315['exten']==_0xe6f4('0x37')){_0x3ee315[_0xe6f4('0x3b')]=_0x3ee315[_0xe6f4('0x3e')];_0x3ee315[_0xe6f4('0x40')]=_0x3ee315[_0xe6f4('0x48')];_0x3ee315[_0xe6f4('0x3e')]=_0x3ee315['accountcode'];_0x3ee315[_0xe6f4('0x48')]=_0x3ee315[_0xe6f4('0x49')];_0x3ee315[_0xe6f4('0x2f')]=_0x3ee315[_0xe6f4('0x3c')];}else if(_0x3ee315['exten']==_0xe6f4('0x4a')){_0x3ee315['calleridnum']=_0x3ee315[_0xe6f4('0x2e')];_0x3ee315[_0xe6f4('0x2f')]=_0x3ee315['originatecalleridnum'];}RpcVoiceRecording[_0xe6f4('0x2b')](_0x3ee315);}}};Report[_0xe6f4('0xe')][_0xe6f4('0x17')]=function(_0x3a7853){if(_['isArray'](_0x3a7853)){_0x3a7853['forEach'](function(_0x14cb61){RpcVoiceAgentReport[_0xe6f4('0x2b')](_0x14cb61);});}else{RpcVoiceAgentReport['create'](_0x3a7853);}};Report[_0xe6f4('0xe')]['voiceDialReport']=function(_0x3c4d8d){RpcVoiceDialReport[_0xe6f4('0x2b')](_0x3c4d8d);var _0x37d40b;var _0x35ac65;var _0x5894a2=_0x3c4d8d[_0xe6f4('0x3a')];if(_[_0xe6f4('0x4b')](_0x5894a2,_0xe6f4('0x4c'))){_0x35ac65=_0x5894a2[_0xe6f4('0x4d')](_0x5894a2['indexOf']('/')+0x1,_0x5894a2[_0xe6f4('0x4e')]('@'));_0x37d40b=_['find'](this[_0xe6f4('0xc')],function(_0x2cdc75){return _0x2cdc75[_0xe6f4('0x4f')]==_0x35ac65||_0x2cdc75[_0xe6f4('0x50')]==_0x35ac65||_0x2cdc75['accountcode']==_0x35ac65;});}else{_0x35ac65=_0x5894a2['substring'](_0x5894a2[_0xe6f4('0x4e')]('/')+0x1,_0x5894a2['lastIndexOf']('-'));_0x37d40b=this[_0xe6f4('0x1d')](_0x35ac65);}if(_0x37d40b){_0x3c4d8d[_0xe6f4('0x22')]=_[_0xe6f4('0x20')](_0x37d40b[_0xe6f4('0x22')])?util[_0xe6f4('0x23')]('SIP/%s',_0x37d40b[_0xe6f4('0x1f')]):_0x37d40b[_0xe6f4('0x22')];_0x3c4d8d['membername']=_0x37d40b[_0xe6f4('0x1f')];_0x3c4d8d[_0xe6f4('0x1e')]=_0x37d40b[_0xe6f4('0x1e')];RpcMemberReport[_0xe6f4('0x19')](_0x3c4d8d);}};Report[_0xe6f4('0xe')][_0xe6f4('0x1b')]=function(_0x28722b){RpcVoiceTransferReport['transfers'][_0x28722b['transfererlinkedid']]=_0x28722b;};Report[_0xe6f4('0xe')][_0xe6f4('0x1c')]=function(_0x2cb9ce){RpcVoiceTransferReport['attendedTransfer'](_0x2cb9ce);};module[_0xe6f4('0x51')]=Report;
\ No newline at end of file
+var _0xd1c8=['find','accountcode','name','length','assigned','lastAssignedTo','interface','format','queuecallercomplete','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','queuecallerexitAt','create','match','destination','exten','type','dialer','lastapplication','queue','from-voip-provider','context','xcally-motion-preview','calleridnum','originatecalleridnum','channel','destinationchannel','callerid','calleridpreview','disposition','connectedlinenum','\x22%s\x22\x20<%s>','calleridname','linkedid','transfers','transfereelinkedid','uniqueid','monitor','monitors','monitorFilename','filename','createdAt','connectedlinename','membername','xcally-motion-dialer','forEach','Local','substring','indexOf','mobile','phone','isNil','transfererlinkedid','attendedTransfer','exports','lodash','moment','util','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','./voiceDialReport','./userReport','realtime','agents','telephones','prototype','sync','xdr','disabled','custom:voiceQueueReport','voiceQueueReport','bind','custom:voiceCallReport','voiceCallReport','custom:voiceAgentReport','voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','findAgent'];(function(_0xee5d2a,_0x534134){var _0x346948=function(_0x458fdf){while(--_0x458fdf){_0xee5d2a['push'](_0xee5d2a['shift']());}};_0x346948(++_0x534134);}(_0xd1c8,0x14f));var _0x8d1c=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xd1c8[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x8d1c('0x0'));var moment=require(_0x8d1c('0x1'));var util=require(_0x8d1c('0x2'));var config=require(_0x8d1c('0x3'));var ami=require(_0x8d1c('0x4'));var RpcVoiceAgentReport=require(_0x8d1c('0x5'));var RpcVoiceCallReport=require(_0x8d1c('0x6'));var RpcVoiceDialReport=require(_0x8d1c('0x7'));var RpcMemberReport=require(_0x8d1c('0x8'));var RpcVoiceQueueReport=require(_0x8d1c('0x9'));var RpcVoiceRecording=require(_0x8d1c('0xa'));var RpcVoiceTransferReport=require(_0x8d1c('0xb'));var VoiceQueueReport=require(_0x8d1c('0xc'));var VoiceCallReport=require(_0x8d1c('0xd'));var VoiceAgentReport=require(_0x8d1c('0xe'));var VoiceDialReport=require(_0x8d1c('0xf'));var UserReport=require(_0x8d1c('0x10'));function Report(_0xc2d933){this[_0x8d1c('0x11')]=_0xc2d933;this[_0x8d1c('0x12')]=_0xc2d933[_0x8d1c('0x12')];this['telephones']=_0xc2d933[_0x8d1c('0x13')];}Report[_0x8d1c('0x14')][_0x8d1c('0x15')]=function(_0x5b0f94){var _0x384e76=new VoiceQueueReport(this[_0x8d1c('0x11')]);var _0x29c715=new VoiceAgentReport(this[_0x8d1c('0x11')]);var _0x643a71=new VoiceDialReport(this[_0x8d1c('0x11')]);var _0x4129c5=new VoiceCallReport(this[_0x8d1c('0x11')]);var _0x2db826=new UserReport(this[_0x8d1c('0x11')]);if(config[_0x8d1c('0x16')]&&config[_0x8d1c('0x16')][_0x8d1c('0x17')]){ami['on'](_0x8d1c('0x18'),this[_0x8d1c('0x19')][_0x8d1c('0x1a')](this));ami['on'](_0x8d1c('0x1b'),this[_0x8d1c('0x1c')][_0x8d1c('0x1a')](this));ami['on'](_0x8d1c('0x1d'),this[_0x8d1c('0x1e')]['bind'](this));ami['on'](_0x8d1c('0x1f'),this[_0x8d1c('0x20')][_0x8d1c('0x1a')](this));ami['on'](_0x8d1c('0x21'),this[_0x8d1c('0x22')][_0x8d1c('0x1a')](this));ami['on'](_0x8d1c('0x23'),this['attendedTransfer'][_0x8d1c('0x1a')](this));}};Report[_0x8d1c('0x14')][_0x8d1c('0x24')]=function(_0x3cf378){var _0x2fdc0e;_0x2fdc0e=_[_0x8d1c('0x25')](this[_0x8d1c('0x12')],function(_0xb5760f){return _0xb5760f[_0x8d1c('0x26')]==_0x3cf378||_0xb5760f[_0x8d1c('0x27')]==_0x3cf378;});if(_['isNil'](_0x2fdc0e)){var _0x3eaa9e=_[_0x8d1c('0x25')](this[_0x8d1c('0x13')],function(_0x479e42){return _0x479e42[_0x8d1c('0x26')]==_0x3cf378||_0x479e42['name']==_0x3cf378;});if(_0x3eaa9e){_0x2fdc0e=_[_0x8d1c('0x25')](this[_0x8d1c('0x12')],function(_0x41343c){return _0x41343c['interface']==util['format']('SIP/%s',_0x3eaa9e['name']);});}}return _0x2fdc0e;};Report[_0x8d1c('0x14')][_0x8d1c('0x19')]=function(_0x5e6fc3){for(var _0x319ac4=0x0;_0x319ac4<_0x5e6fc3[_0x8d1c('0x28')];_0x319ac4+=0x1){var _0x4a6d4b=this['findAgent'](_0x5e6fc3[_0x319ac4]['connectedlinenum']);if(_0x4a6d4b){_0x5e6fc3[_0x319ac4]['accountcode']=_0x4a6d4b[_0x8d1c('0x26')];_0x5e6fc3[_0x319ac4][_0x8d1c('0x29')]=!![];_0x5e6fc3[_0x319ac4][_0x8d1c('0x2a')]=_0x4a6d4b[_0x8d1c('0x27')];_0x5e6fc3[_0x319ac4][_0x8d1c('0x2b')]=_['isNil'](_0x4a6d4b['interface'])?util[_0x8d1c('0x2c')]('SIP/%s',_0x4a6d4b['name']):_0x4a6d4b[_0x8d1c('0x2b')];if(_0x5e6fc3[_0x319ac4][_0x8d1c('0x2d')]){_0x5e6fc3[_0x319ac4][_0x8d1c('0x2e')]=moment()[_0x8d1c('0x2c')](_0x8d1c('0x2f'));}if(_0x5e6fc3[_0x319ac4][_0x8d1c('0x30')]){_0x5e6fc3[_0x319ac4][_0x8d1c('0x31')]=moment()[_0x8d1c('0x2c')](_0x8d1c('0x2f'));}RpcMemberReport[_0x8d1c('0x19')](_0x5e6fc3[_0x319ac4]);}RpcVoiceQueueReport[_0x8d1c('0x32')](_0x5e6fc3[_0x319ac4]);}};function extractCalleridNumber(_0xb8221b){var _0x57e7d3=_0xb8221b[_0x8d1c('0x33')](/<(.*?)>/);return _0x57e7d3?_0x57e7d3[0x1]:_0xb8221b;}Report[_0x8d1c('0x14')][_0x8d1c('0x1c')]=function(_0x377f14){_0x377f14[_0x8d1c('0x34')]=_0x377f14[_0x8d1c('0x34')]||_0x377f14[_0x8d1c('0x35')];if(_0x377f14[_0x8d1c('0x36')]==_0x8d1c('0x37')){_0x377f14[_0x8d1c('0x38')]=_0x8d1c('0x39');_0x377f14['lastdata']=_0x377f14[_0x8d1c('0x39')];if(_0x377f14['context']==_0x8d1c('0x3a')){_0x377f14['accountcode']='';_0x377f14['destination']=extractCalleridNumber(_0x377f14['callerid']);}else if(_0x377f14[_0x8d1c('0x3b')]=='from-sip'){if(_0x377f14[_0x8d1c('0x34')]==_0x8d1c('0x3c')){_0x377f14['destination']=extractCalleridNumber(_0x377f14['calleridpreview']);_0x377f14[_0x8d1c('0x3d')]=_0x377f14[_0x8d1c('0x3e')];_0x377f14['destinationchannel']=[_0x377f14['channel'],_0x377f14[_0x8d1c('0x3f')]=_0x377f14[_0x8d1c('0x40')]][0x0];_0x377f14[_0x8d1c('0x41')]=_0x377f14[_0x8d1c('0x42')];}else{_0x377f14[_0x8d1c('0x34')]=_0x377f14[_0x8d1c('0x3d')];_0x377f14[_0x8d1c('0x3d')]=_0x377f14['originatecalleridnum'];if(_0x377f14[_0x8d1c('0x43')]=='ANSWERED'){_0x377f14[_0x8d1c('0x26')]=_0x377f14[_0x8d1c('0x44')];}else{_0x377f14[_0x8d1c('0x26')]='';}}}}else{_0x377f14[_0x8d1c('0x41')]=util[_0x8d1c('0x2c')](_0x8d1c('0x45'),_0x377f14[_0x8d1c('0x46')],_0x377f14['calleridnum']);}if(RpcVoiceTransferReport['transfers'][_0x377f14[_0x8d1c('0x47')]]){var _0x5de107=RpcVoiceTransferReport[_0x8d1c('0x48')][_0x377f14['linkedid']];_0x5de107[_0x8d1c('0x49')]=_0x377f14[_0x8d1c('0x4a')];RpcVoiceTransferReport['blindTransfer'](_0x5de107);delete RpcVoiceTransferReport[_0x8d1c('0x48')][_0x377f14[_0x8d1c('0x47')]];}RpcVoiceCallReport['create'](_0x377f14);if(_0x377f14[_0x8d1c('0x4b')]){for(var _0x1e79b1=0x0;_0x1e79b1<_0x377f14[_0x8d1c('0x4c')]['length'];_0x1e79b1+=0x1){_0x377f14[_0x8d1c('0x4d')]=_0x377f14[_0x8d1c('0x4c')][_0x1e79b1][_0x8d1c('0x4e')];_0x377f14[_0x8d1c('0x4f')]=_0x377f14[_0x8d1c('0x4c')][_0x1e79b1][_0x8d1c('0x4f')];if(_0x377f14['exten']==_0x8d1c('0x3c')){_0x377f14[_0x8d1c('0x3d')]=_0x377f14[_0x8d1c('0x44')];_0x377f14[_0x8d1c('0x46')]=_0x377f14[_0x8d1c('0x50')];_0x377f14[_0x8d1c('0x44')]=_0x377f14['accountcode'];_0x377f14['connectedlinename']=_0x377f14[_0x8d1c('0x51')];_0x377f14['exten']=_0x377f14[_0x8d1c('0x3e')];}else if(_0x377f14[_0x8d1c('0x35')]==_0x8d1c('0x52')){_0x377f14['calleridnum']=_0x377f14[_0x8d1c('0x34')];_0x377f14[_0x8d1c('0x35')]=_0x377f14[_0x8d1c('0x3e')];}RpcVoiceRecording[_0x8d1c('0x32')](_0x377f14);}}};Report[_0x8d1c('0x14')]['voiceAgentReport']=function(_0x4ea253){if(_['isArray'](_0x4ea253)){_0x4ea253[_0x8d1c('0x53')](function(_0xda7a92){RpcVoiceAgentReport['create'](_0xda7a92);});}else{RpcVoiceAgentReport[_0x8d1c('0x32')](_0x4ea253);}};Report[_0x8d1c('0x14')][_0x8d1c('0x20')]=function(_0x381035){RpcVoiceDialReport['create'](_0x381035);var _0x13478f;var _0x483051;var _0x134f99=_0x381035['channel'];if(_['startsWith'](_0x134f99,_0x8d1c('0x54'))){_0x483051=_0x134f99[_0x8d1c('0x55')](_0x134f99[_0x8d1c('0x56')]('/')+0x1,_0x134f99[_0x8d1c('0x56')]('@'));_0x13478f=_['find'](this['agents'],function(_0x31c371){return _0x31c371[_0x8d1c('0x57')]==_0x483051||_0x31c371[_0x8d1c('0x58')]==_0x483051||_0x31c371['accountcode']==_0x483051;});}else{_0x483051=_0x134f99[_0x8d1c('0x55')](_0x134f99[_0x8d1c('0x56')]('/')+0x1,_0x134f99['lastIndexOf']('-'));_0x13478f=this[_0x8d1c('0x24')](_0x483051);}if(_0x13478f){_0x381035[_0x8d1c('0x2b')]=_[_0x8d1c('0x59')](_0x13478f[_0x8d1c('0x2b')])?util[_0x8d1c('0x2c')]('SIP/%s',_0x13478f['name']):_0x13478f[_0x8d1c('0x2b')];_0x381035[_0x8d1c('0x51')]=_0x13478f['name'];_0x381035['accountcode']=_0x13478f[_0x8d1c('0x26')];RpcMemberReport[_0x8d1c('0x20')](_0x381035);}};Report['prototype'][_0x8d1c('0x22')]=function(_0xa58683){RpcVoiceTransferReport[_0x8d1c('0x48')][_0xa58683[_0x8d1c('0x5a')]]=_0xa58683;};Report['prototype'][_0x8d1c('0x5b')]=function(_0x432b4a){RpcVoiceTransferReport[_0x8d1c('0x5b')](_0x432b4a);};module[_0x8d1c('0x5c')]=Report;
\ No newline at end of file
index 8293612..b6c6ab2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa07=['Local','substring','indexOf','phone','[userReport][devicestatechange]','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','[userReport][peerstatus]','peerstatus','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','telephone:%s','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','moment','util','bluebird','../../../config/environment','../ami','redis','localhost','socket.io-emitter','trunks','agents','telephones','syncRegistry','bind','registry','devicestatechange','syncDeviceState','syncPeerStatus','syncRealtimeShow','catch','error','[userReport][sipshowregistry]','inspect','resolve','then','actionDeviceStateList','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isNotNull','emit','info','username','state','[userReport][registry]','find','stateRegistry','omit','actionid','debug','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','local','toLowerCase','inuse','updateStatusRealtime','stateTime','toNumber','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xfa07,0x177));var _0x7fa0=function(_0x2dcf1e,_0x2238d5){_0x2dcf1e=_0x2dcf1e-0x0;var _0x53899e=_0xfa07[_0x2dcf1e];return _0x53899e;};'use strict';var _=require(_0x7fa0('0x0'));var moment=require(_0x7fa0('0x1'));var util=require(_0x7fa0('0x2'));var Redis=require('ioredis');var BPromise=require(_0x7fa0('0x3'));var config=require(_0x7fa0('0x4'));var logger=require('../../../config/logger')('ami');var ami=require(_0x7fa0('0x5'));config[_0x7fa0('0x6')]=_['defaults'](config[_0x7fa0('0x6')],{'host':_0x7fa0('0x7'),'port':0x18eb});var io=require(_0x7fa0('0x8'))(new Redis(config[_0x7fa0('0x6')]));function UserReport(_0x48005a){this[_0x7fa0('0x9')]=_0x48005a['trunks'];this['agents']=_0x48005a[_0x7fa0('0xa')];this[_0x7fa0('0xb')]=_0x48005a[_0x7fa0('0xb')];ami['on']('registryentry',this[_0x7fa0('0xc')][_0x7fa0('0xd')](this));ami['on'](_0x7fa0('0xe'),this[_0x7fa0('0xc')][_0x7fa0('0xd')](this));ami['on'](_0x7fa0('0xf'),this[_0x7fa0('0x10')][_0x7fa0('0xd')](this));ami['on']('peerstatus',this[_0x7fa0('0x11')][_0x7fa0('0xd')](this));return this[_0x7fa0('0x12')]();}function showSipRegistrations(){Promise['resolve']()['then'](ami['actionSipShowRegistry']())[_0x7fa0('0x13')](function(_0x480dbb){logger[_0x7fa0('0x14')](_0x7fa0('0x15'),util[_0x7fa0('0x16')](_0x480dbb,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x7fa0('0x17')]()[_0x7fa0('0x18')](ami[_0x7fa0('0x19')]())[_0x7fa0('0x13')](function(_0x5e016c){logger[_0x7fa0('0x14')]('[userReport][devicestatelist]',util[_0x7fa0('0x16')](_0x5e016c,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x7fa0('0x17')]()[_0x7fa0('0x18')](ami[_0x7fa0('0x1a')]())[_0x7fa0('0x13')](function(_0x3dc4d9){logger['error'](_0x7fa0('0x1b'),util[_0x7fa0('0x16')](_0x3dc4d9,{'showHidden':![],'depth':null}));});}UserReport[_0x7fa0('0x1c')][_0x7fa0('0x12')]=function(){setInterval(function(){BPromise[_0x7fa0('0x17')]()['then'](showSipRegistrations())['then'](listDeviceStates())[_0x7fa0('0x18')](showPeersStatus());},0x32c8);};UserReport['prototype'][_0x7fa0('0x1d')]=function(_0x4cb4cc){return _0x4cb4cc!==null&&!_['isUndefined'](_0x4cb4cc);};UserReport[_0x7fa0('0x1c')][_0x7fa0('0x1e')]=function(_0x3cc494,_0x48a08d,_0x397c47){io['to'](_0x3cc494)[_0x7fa0('0x1e')](_0x48a08d,_0x397c47);};UserReport['prototype'][_0x7fa0('0xc')]=function(_0x411cf5){try{if(this[_0x7fa0('0x1d')](_0x411cf5)){logger[_0x7fa0('0x1f')]('[userReport][registry]\x20registry:%s\x20state:%s',_0x411cf5[_0x7fa0('0x20')],_0x411cf5[_0x7fa0('0x21')]);logger['debug'](_0x7fa0('0x22'),util[_0x7fa0('0x16')](_0x411cf5,{'showHidden':![],'depth':null}));var _0x5e52df=_[_0x7fa0('0x23')](this[_0x7fa0('0x9')],{'defaultuser':_0x411cf5[_0x7fa0('0x20')]});if(_0x5e52df){_0x411cf5[_0x7fa0('0x24')]=_0x411cf5[_0x7fa0('0x21')];_['merge'](_0x5e52df,_[_0x7fa0('0x25')](_0x411cf5,['event',_0x7fa0('0x26'),'username','state']));logger[_0x7fa0('0x27')](_0x7fa0('0x28'),util[_0x7fa0('0x16')](_0x5e52df,{'showHidden':![],'depth':null}));this[_0x7fa0('0x1e')](util[_0x7fa0('0x29')](_0x7fa0('0x2a'),_0x5e52df[_0x7fa0('0x2b')]),_0x7fa0('0x2c'),_0x5e52df);}}}catch(_0x25c83e){logger[_0x7fa0('0x14')](_0x7fa0('0x22'),util[_0x7fa0('0x16')](_0x25c83e,{'showHidden':![],'depth':null}));}};UserReport[_0x7fa0('0x1c')][_0x7fa0('0x10')]=function(_0x4c8565){try{if(this[_0x7fa0('0x1d')](_0x4c8565)){logger[_0x7fa0('0x1f')](_0x7fa0('0x2d'),_0x4c8565[_0x7fa0('0x2e')],_0x4c8565[_0x7fa0('0x21')]);logger[_0x7fa0('0x27')]('[userReport][devicestatechange]',util[_0x7fa0('0x16')](_0x4c8565,{'showHidden':![],'depth':null}));if(this[_0x7fa0('0xa')][_0x4c8565[_0x7fa0('0x2e')]]){if(!this[_0x7fa0('0xa')][_0x4c8565[_0x7fa0('0x2e')]][_0x7fa0('0x2f')]||_0x4c8565[_0x7fa0('0x21')][_0x7fa0('0x30')]()==_0x7fa0('0x31')){this['agents'][_0x4c8565[_0x7fa0('0x2e')]]['local']=![];if(this[_0x7fa0('0xa')][_0x4c8565[_0x7fa0('0x2e')]][_0x7fa0('0x21')]!==_0x4c8565[_0x7fa0('0x21')][_0x7fa0('0x30')]()){this[_0x7fa0('0xa')][_0x4c8565['device']]['stateTime']=_['toNumber'](moment()[_0x7fa0('0x29')]('x'));}this[_0x7fa0('0xa')][_0x4c8565[_0x7fa0('0x2e')]][_0x7fa0('0x21')]=_0x4c8565[_0x7fa0('0x21')]['toLowerCase']();this['agents'][_0x4c8565[_0x7fa0('0x2e')]][_0x7fa0('0x32')](_0x4c8565);}}else if(this[_0x7fa0('0xb')][_0x4c8565[_0x7fa0('0x2e')]]){if(this[_0x7fa0('0xb')][_0x4c8565[_0x7fa0('0x2e')]][_0x7fa0('0x21')]!==_0x4c8565[_0x7fa0('0x21')]['toLowerCase']()){this[_0x7fa0('0xb')][_0x4c8565[_0x7fa0('0x2e')]][_0x7fa0('0x33')]=_[_0x7fa0('0x34')](moment()[_0x7fa0('0x29')]('x'));}this[_0x7fa0('0xb')][_0x4c8565[_0x7fa0('0x2e')]][_0x7fa0('0x21')]=_0x4c8565[_0x7fa0('0x21')][_0x7fa0('0x30')]();logger['debug'](_0x7fa0('0x35'),util[_0x7fa0('0x16')](this[_0x7fa0('0xb')][_0x4c8565[_0x7fa0('0x2e')]],{'showHidden':![],'depth':null}));this[_0x7fa0('0x1e')](util[_0x7fa0('0x29')]('telephone:%s',this[_0x7fa0('0xb')][_0x4c8565[_0x7fa0('0x2e')]][_0x7fa0('0x2b')]),_0x7fa0('0x36'),this['telephones'][_0x4c8565[_0x7fa0('0x2e')]]);}else if(this[_0x7fa0('0x9')][_0x4c8565[_0x7fa0('0x2e')]]){if(this[_0x7fa0('0x9')][_0x4c8565[_0x7fa0('0x2e')]]['state']!==_0x4c8565[_0x7fa0('0x21')]['toLowerCase']()){this['trunks'][_0x4c8565[_0x7fa0('0x2e')]][_0x7fa0('0x33')]=_[_0x7fa0('0x34')](moment()['format']('x'));}this[_0x7fa0('0x9')][_0x4c8565[_0x7fa0('0x2e')]][_0x7fa0('0x21')]=_0x4c8565[_0x7fa0('0x21')]['toLowerCase']();logger[_0x7fa0('0x27')](_0x7fa0('0x37'),util['inspect'](this[_0x7fa0('0x9')][_0x4c8565[_0x7fa0('0x2e')]],{'showHidden':![],'depth':null}));this[_0x7fa0('0x1e')](util['format'](_0x7fa0('0x2a'),this[_0x7fa0('0x9')][_0x4c8565[_0x7fa0('0x2e')]][_0x7fa0('0x2b')]),_0x7fa0('0x2c'),this[_0x7fa0('0x9')][_0x4c8565[_0x7fa0('0x2e')]]);}else if(_[_0x7fa0('0x38')](_0x4c8565[_0x7fa0('0x2e')],_0x7fa0('0x39'))){var _0x5525eb=_0x4c8565[_0x7fa0('0x2e')];var _0x420144=_0x5525eb[_0x7fa0('0x3a')](_0x5525eb[_0x7fa0('0x3b')]('/')+0x1,_0x5525eb[_0x7fa0('0x3b')]('@'));var _0x2297df=_['find'](this[_0x7fa0('0xa')],function(_0x52534e){return _0x52534e['mobile']==_0x420144||_0x52534e[_0x7fa0('0x3c')]==_0x420144||_0x52534e['accountcode']==_0x420144;});if(_0x2297df){if(_0x2297df[_0x7fa0('0x21')]!==_0x4c8565['state'][_0x7fa0('0x30')]()){_0x2297df[_0x7fa0('0x33')]=_['toNumber'](moment()[_0x7fa0('0x29')]('x'));}_0x2297df[_0x7fa0('0x21')]=_0x4c8565[_0x7fa0('0x21')][_0x7fa0('0x30')]();_0x2297df['local']=!![];_0x2297df[_0x7fa0('0x32')](_0x4c8565);}}}}catch(_0x803412){logger['error'](_0x7fa0('0x3d'),util['inspect'](_0x803412,{'showHidden':![],'depth':null}));}};UserReport[_0x7fa0('0x1c')][_0x7fa0('0x11')]=function(_0x1d7c7b){try{if(this[_0x7fa0('0x1d')](_0x1d7c7b)&&this[_0x7fa0('0x1d')](_0x1d7c7b['peerstatus'])){logger[_0x7fa0('0x1f')](_0x7fa0('0x3e'),_0x1d7c7b[_0x7fa0('0x3f')],_0x1d7c7b[_0x7fa0('0x40')],_0x1d7c7b['peerstatus']);logger[_0x7fa0('0x27')](_0x7fa0('0x41'),util[_0x7fa0('0x16')](_0x1d7c7b,{'showHidden':![],'depth':null}));if(this['agents'][_0x1d7c7b[_0x7fa0('0x3f')]]){if(!this[_0x7fa0('0xa')][_0x1d7c7b[_0x7fa0('0x3f')]][_0x7fa0('0x2f')]||_0x1d7c7b[_0x7fa0('0x42')][_0x7fa0('0x30')]()=='registered'){this['agents'][_0x1d7c7b[_0x7fa0('0x3f')]]['local']=![];this[_0x7fa0('0xa')][_0x1d7c7b[_0x7fa0('0x3f')]]['status']=_0x1d7c7b[_0x7fa0('0x42')][_0x7fa0('0x30')]();this[_0x7fa0('0xa')][_0x1d7c7b[_0x7fa0('0x3f')]][_0x7fa0('0x40')]=_0x1d7c7b[_0x7fa0('0x40')];this[_0x7fa0('0xa')][_0x1d7c7b['peer']][_0x7fa0('0x32')](_0x1d7c7b);}}else if(this[_0x7fa0('0xb')][_0x1d7c7b[_0x7fa0('0x3f')]]){this[_0x7fa0('0xb')][_0x1d7c7b[_0x7fa0('0x3f')]][_0x7fa0('0x43')]=_0x1d7c7b['peerstatus'][_0x7fa0('0x30')]();this[_0x7fa0('0xb')][_0x1d7c7b['peer']][_0x7fa0('0x40')]=_0x1d7c7b[_0x7fa0('0x40')];logger[_0x7fa0('0x27')](_0x7fa0('0x44'),util['inspect'](this[_0x7fa0('0xb')][_0x1d7c7b[_0x7fa0('0x3f')]],{'showHidden':![],'depth':null}));this[_0x7fa0('0x1e')](util[_0x7fa0('0x29')](_0x7fa0('0x45'),this['telephones'][_0x1d7c7b[_0x7fa0('0x3f')]][_0x7fa0('0x2b')]),_0x7fa0('0x36'),this[_0x7fa0('0xb')][_0x1d7c7b['peer']]);}else if(this[_0x7fa0('0x9')][_0x1d7c7b['peer']]){this[_0x7fa0('0x9')][_0x1d7c7b[_0x7fa0('0x3f')]][_0x7fa0('0x43')]=_0x1d7c7b[_0x7fa0('0x42')][_0x7fa0('0x30')]();this[_0x7fa0('0x9')][_0x1d7c7b[_0x7fa0('0x3f')]][_0x7fa0('0x40')]=_0x1d7c7b[_0x7fa0('0x40')];logger[_0x7fa0('0x27')](_0x7fa0('0x46'),util[_0x7fa0('0x16')](this[_0x7fa0('0x9')][_0x1d7c7b[_0x7fa0('0x3f')]],{'showHidden':![],'depth':null}));this[_0x7fa0('0x1e')](util[_0x7fa0('0x29')](_0x7fa0('0x2a'),this['trunks'][_0x1d7c7b[_0x7fa0('0x3f')]][_0x7fa0('0x2b')]),_0x7fa0('0x2c'),this[_0x7fa0('0x9')][_0x1d7c7b[_0x7fa0('0x3f')]]);}}}catch(_0x15e71e){logger[_0x7fa0('0x14')](_0x7fa0('0x41'),util['inspect'](_0x15e71e,{'showHidden':![],'depth':null}));}};module[_0x7fa0('0x47')]=UserReport;
\ No newline at end of file
+var _0x39af=['toLowerCase','stateTime','toNumber','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','mobile','phone','accountcode','peerstatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','address','[userReport][peerstatus]','peer','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','util','bluebird','../../../config/environment','../../../config/logger','../ami','redis','localhost','socket.io-emitter','trunks','telephones','registryentry','syncRegistry','bind','registry','devicestatechange','syncDeviceState','syncPeerStatus','resolve','then','actionSipShowRegistry','catch','inspect','actionDeviceStateList','[userReport][devicestatelist]','actionSipPeerStatus','error','[userReport][sippeerstatus]','prototype','syncRealtimeShow','isNotNull','isUndefined','emit','info','state','[userReport][registry]','find','username','omit','debug','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','agents','local'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0x39af,0xea));var _0xf39a=function(_0x4568d4,_0x4a2a2b){_0x4568d4=_0x4568d4-0x0;var _0x4ec0ee=_0x39af[_0x4568d4];return _0x4ec0ee;};'use strict';var _=require(_0xf39a('0x0'));var moment=require('moment');var util=require(_0xf39a('0x1'));var Redis=require('ioredis');var BPromise=require(_0xf39a('0x2'));var config=require(_0xf39a('0x3'));var logger=require(_0xf39a('0x4'))('ami');var ami=require(_0xf39a('0x5'));config['redis']=_['defaults'](config[_0xf39a('0x6')],{'host':_0xf39a('0x7'),'port':0x18eb});var io=require(_0xf39a('0x8'))(new Redis(config[_0xf39a('0x6')]));function UserReport(_0x25d3bd){this[_0xf39a('0x9')]=_0x25d3bd[_0xf39a('0x9')];this['agents']=_0x25d3bd['agents'];this['telephones']=_0x25d3bd[_0xf39a('0xa')];ami['on'](_0xf39a('0xb'),this[_0xf39a('0xc')][_0xf39a('0xd')](this));ami['on'](_0xf39a('0xe'),this[_0xf39a('0xc')][_0xf39a('0xd')](this));ami['on'](_0xf39a('0xf'),this[_0xf39a('0x10')][_0xf39a('0xd')](this));ami['on']('peerstatus',this[_0xf39a('0x11')][_0xf39a('0xd')](this));return this['syncRealtimeShow']();}function showSipRegistrations(){Promise[_0xf39a('0x12')]()[_0xf39a('0x13')](ami[_0xf39a('0x14')]())[_0xf39a('0x15')](function(_0x9c28ad){logger['error']('[userReport][sipshowregistry]',util[_0xf39a('0x16')](_0x9c28ad,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise['resolve']()[_0xf39a('0x13')](ami[_0xf39a('0x17')]())[_0xf39a('0x15')](function(_0x36f0b3){logger['error'](_0xf39a('0x18'),util[_0xf39a('0x16')](_0x36f0b3,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()[_0xf39a('0x13')](ami[_0xf39a('0x19')]())[_0xf39a('0x15')](function(_0x3061f5){logger[_0xf39a('0x1a')](_0xf39a('0x1b'),util['inspect'](_0x3061f5,{'showHidden':![],'depth':null}));});}UserReport[_0xf39a('0x1c')][_0xf39a('0x1d')]=function(){setInterval(function(){BPromise[_0xf39a('0x12')]()[_0xf39a('0x13')](showSipRegistrations())['then'](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport[_0xf39a('0x1c')][_0xf39a('0x1e')]=function(_0x4fd6f0){return _0x4fd6f0!==null&&!_[_0xf39a('0x1f')](_0x4fd6f0);};UserReport[_0xf39a('0x1c')][_0xf39a('0x20')]=function(_0x3ad829,_0x437347,_0x5df8ed){io['to'](_0x3ad829)['emit'](_0x437347,_0x5df8ed);};UserReport['prototype'][_0xf39a('0xc')]=function(_0x43f356){try{if(this[_0xf39a('0x1e')](_0x43f356)){logger[_0xf39a('0x21')]('[userReport][registry]\x20registry:%s\x20state:%s',_0x43f356['username'],_0x43f356[_0xf39a('0x22')]);logger['debug'](_0xf39a('0x23'),util['inspect'](_0x43f356,{'showHidden':![],'depth':null}));var _0x592563=_[_0xf39a('0x24')](this[_0xf39a('0x9')],{'defaultuser':_0x43f356[_0xf39a('0x25')]});if(_0x592563){_0x43f356['stateRegistry']=_0x43f356[_0xf39a('0x22')];_['merge'](_0x592563,_[_0xf39a('0x26')](_0x43f356,['event','actionid',_0xf39a('0x25'),_0xf39a('0x22')]));logger[_0xf39a('0x27')](_0xf39a('0x28'),util[_0xf39a('0x16')](_0x592563,{'showHidden':![],'depth':null}));this[_0xf39a('0x20')](util[_0xf39a('0x29')](_0xf39a('0x2a'),_0x592563[_0xf39a('0x2b')]),_0xf39a('0x2c'),_0x592563);}}}catch(_0x44f5bd){logger[_0xf39a('0x1a')](_0xf39a('0x23'),util['inspect'](_0x44f5bd,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0xf39a('0x10')]=function(_0x4408f9){try{if(this['isNotNull'](_0x4408f9)){logger[_0xf39a('0x21')](_0xf39a('0x2d'),_0x4408f9[_0xf39a('0x2e')],_0x4408f9[_0xf39a('0x22')]);logger['debug'](_0xf39a('0x2f'),util[_0xf39a('0x16')](_0x4408f9,{'showHidden':![],'depth':null}));if(this['agents'][_0x4408f9[_0xf39a('0x2e')]]){if(!this[_0xf39a('0x30')][_0x4408f9[_0xf39a('0x2e')]][_0xf39a('0x31')]||_0x4408f9[_0xf39a('0x22')][_0xf39a('0x32')]()=='inuse'){this[_0xf39a('0x30')][_0x4408f9[_0xf39a('0x2e')]]['local']=![];if(this['agents'][_0x4408f9['device']][_0xf39a('0x22')]!==_0x4408f9[_0xf39a('0x22')][_0xf39a('0x32')]()){this[_0xf39a('0x30')][_0x4408f9['device']][_0xf39a('0x33')]=_[_0xf39a('0x34')](moment()[_0xf39a('0x29')]('x'));}this[_0xf39a('0x30')][_0x4408f9[_0xf39a('0x2e')]]['state']=_0x4408f9[_0xf39a('0x22')][_0xf39a('0x32')]();this[_0xf39a('0x30')][_0x4408f9[_0xf39a('0x2e')]][_0xf39a('0x35')](_0x4408f9);}}else if(this[_0xf39a('0xa')][_0x4408f9[_0xf39a('0x2e')]]){if(this['telephones'][_0x4408f9[_0xf39a('0x2e')]]['state']!==_0x4408f9['state'][_0xf39a('0x32')]()){this[_0xf39a('0xa')][_0x4408f9[_0xf39a('0x2e')]][_0xf39a('0x33')]=_[_0xf39a('0x34')](moment()['format']('x'));}this[_0xf39a('0xa')][_0x4408f9[_0xf39a('0x2e')]]['state']=_0x4408f9[_0xf39a('0x22')][_0xf39a('0x32')]();logger[_0xf39a('0x27')](_0xf39a('0x36'),util['inspect'](this[_0xf39a('0xa')][_0x4408f9[_0xf39a('0x2e')]],{'showHidden':![],'depth':null}));this[_0xf39a('0x20')](util[_0xf39a('0x29')](_0xf39a('0x37'),this['telephones'][_0x4408f9['device']][_0xf39a('0x2b')]),_0xf39a('0x38'),this[_0xf39a('0xa')][_0x4408f9[_0xf39a('0x2e')]]);}else if(this[_0xf39a('0x9')][_0x4408f9[_0xf39a('0x2e')]]){if(this[_0xf39a('0x9')][_0x4408f9[_0xf39a('0x2e')]][_0xf39a('0x22')]!==_0x4408f9[_0xf39a('0x22')][_0xf39a('0x32')]()){this[_0xf39a('0x9')][_0x4408f9[_0xf39a('0x2e')]][_0xf39a('0x33')]=_[_0xf39a('0x34')](moment()[_0xf39a('0x29')]('x'));}this[_0xf39a('0x9')][_0x4408f9[_0xf39a('0x2e')]][_0xf39a('0x22')]=_0x4408f9[_0xf39a('0x22')]['toLowerCase']();logger['debug'](_0xf39a('0x39'),util[_0xf39a('0x16')](this[_0xf39a('0x9')][_0x4408f9[_0xf39a('0x2e')]],{'showHidden':![],'depth':null}));this[_0xf39a('0x20')](util['format'](_0xf39a('0x2a'),this[_0xf39a('0x9')][_0x4408f9[_0xf39a('0x2e')]][_0xf39a('0x2b')]),_0xf39a('0x2c'),this['trunks'][_0x4408f9['device']]);}else if(_[_0xf39a('0x3a')](_0x4408f9['device'],'Local')){var _0x5b0dc4=_0x4408f9[_0xf39a('0x2e')];var _0x2116a5=_0x5b0dc4['substring'](_0x5b0dc4['indexOf']('/')+0x1,_0x5b0dc4['indexOf']('@'));var _0x33f082=_[_0xf39a('0x24')](this[_0xf39a('0x30')],function(_0x2b116f){return _0x2b116f[_0xf39a('0x3b')]==_0x2116a5||_0x2b116f[_0xf39a('0x3c')]==_0x2116a5||_0x2b116f[_0xf39a('0x3d')]==_0x2116a5;});if(_0x33f082){if(_0x33f082[_0xf39a('0x22')]!==_0x4408f9[_0xf39a('0x22')][_0xf39a('0x32')]()){_0x33f082[_0xf39a('0x33')]=_[_0xf39a('0x34')](moment()[_0xf39a('0x29')]('x'));}_0x33f082[_0xf39a('0x22')]=_0x4408f9['state']['toLowerCase']();_0x33f082[_0xf39a('0x31')]=!![];_0x33f082['updateStatusRealtime'](_0x4408f9);}}}}catch(_0x554968){logger[_0xf39a('0x1a')](_0xf39a('0x2f'),util['inspect'](_0x554968,{'showHidden':![],'depth':null}));}};UserReport[_0xf39a('0x1c')][_0xf39a('0x11')]=function(_0x3a7163){try{if(this['isNotNull'](_0x3a7163)&&this[_0xf39a('0x1e')](_0x3a7163[_0xf39a('0x3e')])){logger[_0xf39a('0x21')](_0xf39a('0x3f'),_0x3a7163['peer'],_0x3a7163[_0xf39a('0x40')],_0x3a7163['peerstatus']);logger[_0xf39a('0x27')](_0xf39a('0x41'),util[_0xf39a('0x16')](_0x3a7163,{'showHidden':![],'depth':null}));if(this[_0xf39a('0x30')][_0x3a7163[_0xf39a('0x42')]]){if(!this[_0xf39a('0x30')][_0x3a7163[_0xf39a('0x42')]][_0xf39a('0x31')]||_0x3a7163[_0xf39a('0x3e')][_0xf39a('0x32')]()=='registered'){this['agents'][_0x3a7163[_0xf39a('0x42')]][_0xf39a('0x31')]=![];this[_0xf39a('0x30')][_0x3a7163[_0xf39a('0x42')]][_0xf39a('0x43')]=_0x3a7163[_0xf39a('0x3e')][_0xf39a('0x32')]();this['agents'][_0x3a7163[_0xf39a('0x42')]]['address']=_0x3a7163[_0xf39a('0x40')];this[_0xf39a('0x30')][_0x3a7163[_0xf39a('0x42')]][_0xf39a('0x35')](_0x3a7163);}}else if(this[_0xf39a('0xa')][_0x3a7163['peer']]){this[_0xf39a('0xa')][_0x3a7163[_0xf39a('0x42')]][_0xf39a('0x43')]=_0x3a7163[_0xf39a('0x3e')][_0xf39a('0x32')]();this[_0xf39a('0xa')][_0x3a7163[_0xf39a('0x42')]][_0xf39a('0x40')]=_0x3a7163[_0xf39a('0x40')];logger[_0xf39a('0x27')](_0xf39a('0x44'),util['inspect'](this[_0xf39a('0xa')][_0x3a7163[_0xf39a('0x42')]],{'showHidden':![],'depth':null}));this[_0xf39a('0x20')](util[_0xf39a('0x29')]('telephone:%s',this[_0xf39a('0xa')][_0x3a7163[_0xf39a('0x42')]][_0xf39a('0x2b')]),_0xf39a('0x38'),this[_0xf39a('0xa')][_0x3a7163[_0xf39a('0x42')]]);}else if(this['trunks'][_0x3a7163[_0xf39a('0x42')]]){this[_0xf39a('0x9')][_0x3a7163[_0xf39a('0x42')]][_0xf39a('0x43')]=_0x3a7163['peerstatus'][_0xf39a('0x32')]();this[_0xf39a('0x9')][_0x3a7163[_0xf39a('0x42')]][_0xf39a('0x40')]=_0x3a7163[_0xf39a('0x40')];logger['debug'](_0xf39a('0x45'),util[_0xf39a('0x16')](this[_0xf39a('0x9')][_0x3a7163['peer']],{'showHidden':![],'depth':null}));this[_0xf39a('0x20')](util[_0xf39a('0x29')]('trunk:%s',this['trunks'][_0x3a7163[_0xf39a('0x42')]][_0xf39a('0x2b')]),'trunk:save',this[_0xf39a('0x9')][_0x3a7163['peer']]);}}}catch(_0x5b7b9f){logger[_0xf39a('0x1a')]('[userReport][peerstatus]',util['inspect'](_0x5b7b9f,{'showHidden':![],'depth':null}));}};module[_0xf39a('0x46')]=UserReport;
\ No newline at end of file
index 087138e..cc78e87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1365=['format','YYYY-MM-DD\x20HH:mm:ss','queue','mandatoryDisposition','type','inbound','voice','omit','event','privilege','custom:agentcalled','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','user:%s','membername','user:called','error','[%s][voiceAgentReport][agentcalled]','syncAgentConnect','isNotNull','[%s][voiceAgentReport][agentconnect]\x20event:','hasOwnProperty','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','routealias','pick','destconnectedlinenum','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','user:agentconnect','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','answeredelsewheredestinationuniqueid','answeredelsewheremembername','answered_elsewhere','reason','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','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:','custom:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','complete','talktime','acwtime','acwTimeout','agentacw','interface','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','variables','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberrealtime','isNil','syncHangup','[%s][voiceAgentReport][hangup]\x20event:','transfer','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','agentcompleteAt','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','custom:voiceAgentReport','[%s][voiceAgentReport][hangup]','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','syncMusicOnHoldStart','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','substring','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','onhold','lodash','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','voiceChannels','channels','voiceQueues','agents','agentcalled','syncAgentCalled','agentconnect','bind','agentringnoanswer','syncAgentRingNoAnswer','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','musiconholdstart','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','prototype','emit','isUndefined','info','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','destuniqueid','debug','uniqueid','inspect'];(function(_0x3553ed,_0x6c8f7e){var _0x57a16f=function(_0x3a8010){while(--_0x3a8010){_0x3553ed['push'](_0x3553ed['shift']());}};_0x57a16f(++_0x6c8f7e);}(_0x1365,0x1a4));var _0x5136=function(_0x505241,_0x54a73d){_0x505241=_0x505241-0x0;var _0x1a1fcb=_0x1365[_0x505241];return _0x1a1fcb;};'use strict';var _=require(_0x5136('0x0'));var moment=require(_0x5136('0x1'));var util=require(_0x5136('0x2'));var Redis=require(_0x5136('0x3'));var config=require(_0x5136('0x4'));var logger=require(_0x5136('0x5'))(_0x5136('0x6'));var ami=require(_0x5136('0x7'));config[_0x5136('0x8')]=_[_0x5136('0x9')](config['redis'],{'host':_0x5136('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function VoiceAgentReport(_0x3fa26f){this['channels']={};this[_0x5136('0xb')]=_0x3fa26f[_0x5136('0xc')];this[_0x5136('0xd')]=_0x3fa26f[_0x5136('0xd')];this[_0x5136('0xe')]=_0x3fa26f[_0x5136('0xe')];this['variables']={};ami['on'](_0x5136('0xf'),this[_0x5136('0x10')]['bind'](this));ami['on'](_0x5136('0x11'),this['syncAgentConnect'][_0x5136('0x12')](this));ami['on'](_0x5136('0x13'),this[_0x5136('0x14')]['bind'](this));ami['on'](_0x5136('0x15'),this[_0x5136('0x16')][_0x5136('0x12')](this));ami['on'](_0x5136('0x17'),this[_0x5136('0x18')][_0x5136('0x12')](this));ami['on'](_0x5136('0x19'),this[_0x5136('0x1a')]['bind'](this));ami['on']('hangup',this['syncHangup']['bind'](this));ami['on'](_0x5136('0x1b'),this['syncMusicOnHoldStart']['bind'](this));ami['on']('musiconholdstop',this[_0x5136('0x1c')][_0x5136('0x12')](this));ami['on'](_0x5136('0x1d'),this[_0x5136('0x1e')][_0x5136('0x12')](this));ami['on'](_0x5136('0x1f'),this[_0x5136('0x20')]['bind'](this));}VoiceAgentReport[_0x5136('0x21')]['emit']=function(_0x22ec2a,_0x75f774,_0x56b054){io['to'](_0x22ec2a)[_0x5136('0x22')](_0x75f774,_0x56b054);};VoiceAgentReport['prototype']['isNotNull']=function(_0x5de7e9){return _0x5de7e9!==null&&!_[_0x5136('0x23')](_0x5de7e9);};VoiceAgentReport['prototype'][_0x5136('0x10')]=function(_0x5cfd2e){try{if(this['isNotNull'](_0x5cfd2e)){logger[_0x5136('0x24')](_0x5136('0x25'),_0x5cfd2e['uniqueid'],_0x5cfd2e['membername'],_0x5cfd2e[_0x5136('0x26')]);logger[_0x5136('0x27')]('[%s][voiceAgentReport][agentcalled]\x20event:',_0x5cfd2e[_0x5136('0x28')],util[_0x5136('0x29')](_0x5cfd2e,{'showHidden':![],'depth':null}));if(_[_0x5136('0x23')](this[_0x5136('0xc')][_0x5cfd2e[_0x5136('0x28')]])){this[_0x5136('0xc')][_0x5cfd2e[_0x5136('0x28')]]={};}if(_['isUndefined'](this[_0x5136('0xc')][_0x5cfd2e['uniqueid']][_0x5cfd2e[_0x5136('0x26')]])){this['channels'][_0x5cfd2e[_0x5136('0x28')]][_0x5cfd2e[_0x5136('0x26')]]={'agentcalledAt':moment()[_0x5136('0x2a')](_0x5136('0x2b')),'lastevent':'called','mandatoryDisposition':this['voiceQueues'][_0x5cfd2e[_0x5136('0x2c')]]?this[_0x5136('0xd')][_0x5cfd2e[_0x5136('0x2c')]][_0x5136('0x2d')]||![]:![],'type':this[_0x5136('0xd')][_0x5cfd2e[_0x5136('0x2c')]]?this[_0x5136('0xd')][_0x5cfd2e[_0x5136('0x2c')]][_0x5136('0x2e')]||_0x5136('0x2f'):_0x5136('0x2f'),'variables':this['variables'][_0x5cfd2e['uniqueid']],'motionChannel':_0x5136('0x30')};}_['merge'](this['channels'][_0x5cfd2e['uniqueid']][_0x5cfd2e[_0x5136('0x26')]],_[_0x5136('0x31')](_0x5cfd2e,[_0x5136('0x32'),_0x5136('0x33')]));logger[_0x5136('0x27')]('[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:',_0x5cfd2e['uniqueid'],util['inspect'](this[_0x5136('0xc')][_0x5cfd2e['uniqueid']][_0x5cfd2e['destuniqueid']],{'showHidden':![],'depth':null}));ami['emit'](_0x5136('0x34'),this['channels'][_0x5cfd2e['uniqueid']][_0x5cfd2e[_0x5136('0x26')]]);logger[_0x5136('0x27')](_0x5136('0x35'),_0x5cfd2e['uniqueid'],util[_0x5136('0x29')](this[_0x5136('0xc')][_0x5cfd2e[_0x5136('0x28')]][_0x5cfd2e[_0x5136('0x26')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x5136('0x2a')](_0x5136('0x36'),_0x5cfd2e[_0x5136('0x37')]),_0x5136('0x38'),this['channels'][_0x5cfd2e[_0x5136('0x28')]][_0x5cfd2e[_0x5136('0x26')]]);}}catch(_0x1a1878){logger[_0x5136('0x39')](_0x5136('0x3a'),_0x5cfd2e[_0x5136('0x28')],util[_0x5136('0x29')](_0x1a1878,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x5136('0x3b')]=function(_0x5c7f43){try{if(this[_0x5136('0x3c')](_0x5c7f43)){if(this[_0x5136('0xc')][_0x5c7f43[_0x5136('0x28')]]){logger['debug'](_0x5136('0x3d'),_0x5c7f43[_0x5136('0x28')],util[_0x5136('0x29')](_0x5c7f43,{'showHidden':![],'depth':null}));for(var _0x49b10e in this[_0x5136('0xc')][_0x5c7f43[_0x5136('0x28')]]){if(this[_0x5136('0xc')][_0x5c7f43[_0x5136('0x28')]][_0x5136('0x3e')](_0x49b10e)){if(_0x5c7f43[_0x5136('0x26')]===_0x49b10e){logger[_0x5136('0x24')](_0x5136('0x3f'),_0x5c7f43[_0x5136('0x28')],_0x5c7f43[_0x5136('0x37')],_0x5c7f43[_0x5136('0x26')]);this['channels'][_0x5c7f43[_0x5136('0x28')]][_0x49b10e][_0x5136('0x40')]=moment()['format'](_0x5136('0x2b'));this[_0x5136('0xc')][_0x5c7f43['uniqueid']][_0x49b10e][_0x5136('0x41')]=_0x5c7f43[_0x5136('0x41')];this[_0x5136('0xc')][_0x5c7f43[_0x5136('0x28')]][_0x49b10e][_0x5136('0x42')]=_0x5c7f43[_0x5136('0x42')];this[_0x5136('0xc')][_0x5c7f43[_0x5136('0x28')]][_0x49b10e][_0x5136('0x43')]=_0x5c7f43[_0x5136('0x43')];this[_0x5136('0xc')][_0x5c7f43[_0x5136('0x28')]][_0x49b10e][_0x5136('0x44')]=_0x5c7f43['destchannelstatedesc'];this['channels'][_0x5c7f43['uniqueid']][_0x49b10e][_0x5136('0x45')]=_0x5c7f43['holdtime'];this[_0x5136('0xc')][_0x5c7f43['uniqueid']][_0x49b10e][_0x5136('0x46')]='connect';if(this[_0x5136('0xb')][this[_0x5136('0xc')][_0x5c7f43[_0x5136('0x28')]][_0x49b10e][_0x5136('0x28')]]){var _0x2754c9=this[_0x5136('0xb')][this['channels'][_0x5c7f43[_0x5136('0x28')]][_0x49b10e][_0x5136('0x28')]][_0x5136('0x47')];this['channels'][_0x5c7f43[_0x5136('0x28')]][_0x49b10e][_0x5136('0x47')]=_0x2754c9;_0x5c7f43[_0x5136('0x47')]=_0x2754c9;}_['merge'](this['agents'][_0x5c7f43['interface']],_[_0x5136('0x48')](_0x5c7f43,[_0x5136('0x2c'),_0x5136('0x49'),_0x5136('0x47')]));logger[_0x5136('0x27')](_0x5136('0x4a'),_0x5c7f43[_0x5136('0x28')],util[_0x5136('0x29')](this['channels'][_0x5c7f43[_0x5136('0x28')]][_0x5c7f43[_0x5136('0x26')]],{'showHidden':![],'depth':null}));ami[_0x5136('0x22')]('custom:agentconnect',this['channels'][_0x5c7f43[_0x5136('0x28')]][_0x5c7f43[_0x5136('0x26')]]);logger[_0x5136('0x27')]('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:',_0x5c7f43[_0x5136('0x28')],util[_0x5136('0x29')](this['channels'][_0x5c7f43[_0x5136('0x28')]][_0x5c7f43[_0x5136('0x26')]],{'showHidden':![],'depth':null}));this[_0x5136('0x22')](util['format'](_0x5136('0x36'),_0x5c7f43[_0x5136('0x37')]),_0x5136('0x4b'),this['channels'][_0x5c7f43[_0x5136('0x28')]][_0x5c7f43[_0x5136('0x26')]]);}else if(!this['channels'][_0x5c7f43['uniqueid']][_0x49b10e][_0x5136('0x13')]&&!this[_0x5136('0xc')][_0x5c7f43['uniqueid']][_0x49b10e][_0x5136('0x17')]){logger['info'](_0x5136('0x4c'),_0x5c7f43[_0x5136('0x28')],this[_0x5136('0xc')][_0x5c7f43['uniqueid']][_0x49b10e]['membername'],_0x49b10e);this[_0x5136('0xc')][_0x5c7f43['uniqueid']][_0x49b10e][_0x5136('0x13')]=!![];this[_0x5136('0xc')][_0x5c7f43[_0x5136('0x28')]][_0x49b10e][_0x5136('0x4d')]=moment()[_0x5136('0x2a')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x5136('0xc')][_0x5c7f43[_0x5136('0x28')]][_0x49b10e][_0x5136('0x4e')]=_0x5c7f43[_0x5136('0x26')];this[_0x5136('0xc')][_0x5c7f43['uniqueid']][_0x49b10e][_0x5136('0x4f')]=_0x5c7f43[_0x5136('0x37')];this['channels'][_0x5c7f43['uniqueid']][_0x49b10e]['lastevent']=_0x5136('0x50');this[_0x5136('0xc')][_0x5c7f43[_0x5136('0x28')]][_0x49b10e][_0x5136('0x51')]=_0x5136('0x50');logger['debug'](_0x5136('0x52'),_0x5c7f43['uniqueid'],util[_0x5136('0x29')](this[_0x5136('0xc')][_0x5c7f43['uniqueid']][_0x49b10e],{'showHidden':![],'depth':null}));ami[_0x5136('0x22')](_0x5136('0x53'),this[_0x5136('0xc')][_0x5c7f43['uniqueid']][_0x49b10e]);}}}}}}catch(_0x5aec84){logger[_0x5136('0x39')](_0x5136('0x54'),_0x5c7f43[_0x5136('0x28')],util[_0x5136('0x29')](_0x5aec84,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x5136('0x21')][_0x5136('0x14')]=function(_0x27d139){try{if(this[_0x5136('0x3c')](_0x27d139)){logger[_0x5136('0x27')](_0x5136('0x55'),_0x27d139[_0x5136('0x28')],util[_0x5136('0x29')](_0x27d139,{'showHidden':![],'depth':null}));if(this[_0x5136('0xc')][_0x27d139['uniqueid']]&&this[_0x5136('0xc')][_0x27d139[_0x5136('0x28')]][_0x27d139[_0x5136('0x26')]]){logger['info'](_0x5136('0x56'),_0x27d139[_0x5136('0x28')],_0x27d139['membername'],_0x27d139[_0x5136('0x26')]);this[_0x5136('0xc')][_0x27d139[_0x5136('0x28')]][_0x27d139[_0x5136('0x26')]]['agentringnoanswer']=!![];this[_0x5136('0xc')][_0x27d139[_0x5136('0x28')]][_0x27d139[_0x5136('0x26')]][_0x5136('0x4d')]=moment()['format'](_0x5136('0x2b'));this[_0x5136('0xc')][_0x27d139['uniqueid']][_0x27d139[_0x5136('0x26')]]['lastevent']=_0x5136('0x57');this[_0x5136('0xc')][_0x27d139[_0x5136('0x28')]][_0x27d139[_0x5136('0x26')]][_0x5136('0x51')]=_0x5136('0x57');logger[_0x5136('0x27')](_0x5136('0x58'),_0x27d139[_0x5136('0x28')],util[_0x5136('0x29')](this[_0x5136('0xc')][_0x27d139[_0x5136('0x28')]][_0x27d139[_0x5136('0x26')]],{'showHidden':![],'depth':null}));ami[_0x5136('0x22')](_0x5136('0x59'),this[_0x5136('0xc')][_0x27d139[_0x5136('0x28')]][_0x27d139[_0x5136('0x26')]]);}}}catch(_0x4da91f){logger[_0x5136('0x39')](_0x5136('0x5a'),_0x27d139[_0x5136('0x28')],util[_0x5136('0x29')](_0x4da91f,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x5136('0x21')][_0x5136('0x16')]=function(_0x5b1e71){try{if(this[_0x5136('0x3c')](_0x5b1e71)){logger[_0x5136('0x27')](_0x5136('0x5b'),_0x5b1e71['uniqueid'],util[_0x5136('0x29')](_0x5b1e71,{'showHidden':![],'depth':null}));if(this['channels'][_0x5b1e71[_0x5136('0x28')]]){for(var _0x414d3b in this[_0x5136('0xc')][_0x5b1e71[_0x5136('0x28')]]){if(this[_0x5136('0xc')][_0x5b1e71[_0x5136('0x28')]][_0x5136('0x3e')](_0x414d3b)&&!this[_0x5136('0xc')][_0x5b1e71['uniqueid']][_0x414d3b][_0x5136('0x13')]&&!this[_0x5136('0xc')][_0x5b1e71[_0x5136('0x28')]][_0x414d3b][_0x5136('0x17')]){logger[_0x5136('0x24')](_0x5136('0x5c'),_0x5b1e71[_0x5136('0x28')],this[_0x5136('0xc')][_0x5b1e71[_0x5136('0x28')]][_0x414d3b][_0x5136('0x37')],_0x414d3b);this[_0x5136('0xc')][_0x5b1e71['uniqueid']][_0x414d3b][_0x5136('0x13')]=!![];this['channels'][_0x5b1e71[_0x5136('0x28')]][_0x414d3b][_0x5136('0x4d')]=moment()[_0x5136('0x2a')](_0x5136('0x2b'));this[_0x5136('0xc')][_0x5b1e71[_0x5136('0x28')]][_0x414d3b]['lastevent']=_0x5136('0x5d');this['channels'][_0x5b1e71[_0x5136('0x28')]][_0x414d3b]['reason']=_0x5136('0x5d');logger[_0x5136('0x27')](_0x5136('0x5e'),_0x5b1e71[_0x5136('0x28')],util[_0x5136('0x29')](this[_0x5136('0xc')][_0x5b1e71[_0x5136('0x28')]][_0x414d3b],{'showHidden':![],'depth':null}));ami[_0x5136('0x22')](_0x5136('0x5f'),this[_0x5136('0xc')][_0x5b1e71[_0x5136('0x28')]][_0x414d3b]);}}}}}catch(_0x5295a8){logger[_0x5136('0x39')](_0x5136('0x60'),_0x5b1e71['uniqueid'],util[_0x5136('0x29')](_0x5295a8,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x5136('0x21')][_0x5136('0x18')]=function(_0x2266f2){try{if(this[_0x5136('0x3c')](_0x2266f2)){logger['debug']('[%s][voiceAgentReport][agentcomplete]\x20event:',_0x2266f2[_0x5136('0x28')],util[_0x5136('0x29')](_0x2266f2,{'showHidden':![],'depth':null}));if(this[_0x5136('0xc')][_0x2266f2[_0x5136('0x28')]]){for(var _0x57b6b5 in this[_0x5136('0xc')][_0x2266f2[_0x5136('0x28')]]){if(this[_0x5136('0xc')][_0x2266f2[_0x5136('0x28')]]['hasOwnProperty'](_0x57b6b5)){if(this[_0x5136('0xc')][_0x2266f2[_0x5136('0x28')]][_0x57b6b5][_0x5136('0x40')]&&!this['channels'][_0x2266f2['uniqueid']][_0x57b6b5][_0x5136('0x17')]){logger[_0x5136('0x24')](_0x5136('0x61'),_0x2266f2[_0x5136('0x28')],this[_0x5136('0xc')][_0x2266f2[_0x5136('0x28')]][_0x57b6b5][_0x5136('0x37')],_0x57b6b5);this[_0x5136('0xc')][_0x2266f2['uniqueid']][_0x57b6b5][_0x5136('0x17')]=!![];this[_0x5136('0xc')][_0x2266f2['uniqueid']][_0x57b6b5]['agentcompleteAt']=moment()[_0x5136('0x2a')](_0x5136('0x2b'));this[_0x5136('0xc')][_0x2266f2['uniqueid']][_0x57b6b5][_0x5136('0x46')]=_0x5136('0x62');this[_0x5136('0xc')][_0x2266f2[_0x5136('0x28')]][_0x57b6b5][_0x5136('0x51')]=_0x2266f2['reason']=='transfer'?'agent':_0x2266f2[_0x5136('0x51')];this[_0x5136('0xc')][_0x2266f2['uniqueid']][_0x57b6b5][_0x5136('0x63')]=_0x2266f2['talktime'];if(this[_0x5136('0xd')][_0x2266f2[_0x5136('0x2c')]]&&this['voiceQueues'][_0x2266f2['queue']]['acw']){this[_0x5136('0xc')][_0x2266f2[_0x5136('0x28')]][_0x57b6b5][_0x5136('0x64')]=this[_0x5136('0xd')][_0x2266f2[_0x5136('0x2c')]][_0x5136('0x65')];this[_0x5136('0xc')][_0x2266f2[_0x5136('0x28')]][_0x57b6b5][_0x5136('0x66')]=!![];}this[_0x5136('0xe')][_0x2266f2[_0x5136('0x67')]]=_['omit'](this[_0x5136('0xe')][_0x2266f2['interface']],[_0x5136('0x2c'),_0x5136('0x49')]);logger[_0x5136('0x27')](_0x5136('0x68'),_0x2266f2[_0x5136('0x28')],util[_0x5136('0x29')](this['channels'][_0x2266f2[_0x5136('0x28')]][_0x57b6b5],{'showHidden':![],'depth':null}));ami[_0x5136('0x22')]('custom:agentcomplete',this[_0x5136('0xc')][_0x2266f2[_0x5136('0x28')]][_0x57b6b5]);logger[_0x5136('0x27')](_0x5136('0x69'),_0x2266f2['uniqueid'],util['inspect'](this[_0x5136('0xc')][_0x2266f2['uniqueid']][_0x57b6b5],{'showHidden':![],'depth':null}));this[_0x5136('0x22')](util[_0x5136('0x2a')](_0x5136('0x36'),_0x2266f2['membername']),'user:agentcomplete',this[_0x5136('0xc')][_0x2266f2[_0x5136('0x28')]][_0x57b6b5]);}}}}}}catch(_0x2ca2fd){logger[_0x5136('0x39')]('[%s][voiceAgentReport][agentcomplete]',_0x2266f2['uniqueid'],util[_0x5136('0x29')](_0x2ca2fd,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x5136('0x21')][_0x5136('0x1a')]=function(_0x10aff9){try{if(this[_0x5136('0x3c')](_0x10aff9)){logger['debug'](_0x5136('0x6a'),_0x10aff9[_0x5136('0x28')],util[_0x5136('0x29')](_0x10aff9,{'showHidden':![],'depth':null}));this[_0x5136('0x6b')](_0x10aff9['uniqueid'],_[_0x5136('0x6c')](_0x10aff9[_0x5136('0x6d')])[0x0],_0x10aff9[_0x5136('0x6e')]);if(this[_0x5136('0xc')][_0x10aff9[_0x5136('0x28')]]){for(var _0x115e42 in this[_0x5136('0xc')][_0x10aff9[_0x5136('0x28')]]){if(this[_0x5136('0xc')][_0x10aff9[_0x5136('0x28')]][_0x5136('0x3e')](_0x115e42)){logger[_0x5136('0x24')](_0x5136('0x6f'),_0x10aff9[_0x5136('0x28')],_0x115e42,_[_0x5136('0x6c')](_0x10aff9[_0x5136('0x6d')])[0x0],_0x10aff9[_0x5136('0x6e')]);if(_['isUndefined'](this['channels'][_0x10aff9[_0x5136('0x28')]][_0x115e42][_0x5136('0x70')])){this[_0x5136('0xc')][_0x10aff9[_0x5136('0x28')]][_0x115e42][_0x5136('0x70')]={};}this[_0x5136('0xc')][_0x10aff9[_0x5136('0x28')]][_0x115e42][_0x5136('0x70')]=this['variables'][_0x10aff9[_0x5136('0x28')]];}}}}}catch(_0x17ca4f){logger[_0x5136('0x39')](_0x5136('0x71'),_0x10aff9['uniqueid'],util[_0x5136('0x29')](_0x17ca4f,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x5136('0x6b')]=function(_0x39ef99,_0xca38d0,_0x412a54){var _0x400489=[_0x5136('0x72'),_0x5136('0x73'),_0x5136('0x74'),_0x5136('0x75'),_0x5136('0x76'),'rtpaudioqoslossbridged','rtpaudioqosrtt',_0x5136('0x77'),_0x5136('0x78'),_0x5136('0x79'),'bridgepeer',_0x5136('0x7a'),_0x5136('0x7b'),_0x5136('0x7c'),_0x5136('0x7d'),_0x5136('0x7e'),_0x5136('0x37'),'memberpenalty',_0x5136('0x7f')];if(!_[_0x5136('0x80')](_0xca38d0)&&!_['includes'](_0x400489,_0xca38d0)){if(_['isUndefined'](this[_0x5136('0x70')][_0x39ef99])){this[_0x5136('0x70')][_0x39ef99]={};}this[_0x5136('0x70')][_0x39ef99][_0xca38d0]=_0x412a54;}};VoiceAgentReport['prototype'][_0x5136('0x81')]=function(_0x159e02){try{if(this[_0x5136('0x3c')](_0x159e02)){logger['debug'](_0x5136('0x82'),_0x159e02[_0x5136('0x28')],util['inspect'](_0x159e02,{'showHidden':![],'depth':null}));if(this[_0x5136('0xc')][_0x159e02[_0x5136('0x28')]]){for(var _0x1dabed in this[_0x5136('0xc')][_0x159e02['uniqueid']]){if(this['channels'][_0x159e02['uniqueid']][_0x5136('0x3e')](_0x1dabed)){if(this[_0x5136('0xc')][_0x159e02[_0x5136('0x28')]][_0x1dabed][_0x5136('0x51')]==_0x5136('0x83')&&this[_0x5136('0xc')][_0x159e02[_0x5136('0x28')]][_0x1dabed][_0x5136('0x17')]){logger[_0x5136('0x24')](_0x5136('0x84'),_0x159e02['uniqueid'],_0x1dabed);this[_0x5136('0xc')][_0x159e02[_0x5136('0x28')]][_0x1dabed][_0x5136('0x85')]=moment()[_0x5136('0x2a')]('YYYY-MM-DD\x20HH:mm:ss');}}}logger[_0x5136('0x27')](_0x5136('0x86'),_0x159e02[_0x5136('0x28')],util[_0x5136('0x29')](_['values'](this[_0x5136('0xc')][_0x159e02[_0x5136('0x28')]]),{'showHidden':![],'depth':null}));ami[_0x5136('0x22')](_0x5136('0x87'),_['values'](this[_0x5136('0xc')][_0x159e02[_0x5136('0x28')]]));delete this[_0x5136('0xc')][_0x159e02[_0x5136('0x28')]];}if(this[_0x5136('0x70')][_0x159e02[_0x5136('0x28')]]){delete this[_0x5136('0x70')][_0x159e02[_0x5136('0x28')]];}}}catch(_0x24fbfa){logger[_0x5136('0x39')](_0x5136('0x88'),_0x159e02[_0x5136('0x28')],util['inspect'](_0x24fbfa,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x5136('0x21')][_0x5136('0x1e')]=function(_0x2352fe){try{if(this[_0x5136('0x3c')](_0x2352fe)){logger['debug'](_0x5136('0x89'),_0x2352fe[_0x5136('0x28')],util['inspect'](_0x2352fe,{'showHidden':![],'depth':null}));if(this[_0x5136('0xc')][_0x2352fe[_0x5136('0x8a')]]){for(var _0x289b7a in this[_0x5136('0xc')][_0x2352fe[_0x5136('0x8a')]]){if(this[_0x5136('0xc')][_0x2352fe[_0x5136('0x8a')]][_0x5136('0x3e')](_0x289b7a)){if(_0x2352fe[_0x5136('0x8b')]===_0x289b7a){logger[_0x5136('0x24')]('[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x2352fe[_0x5136('0x28')],this[_0x5136('0xc')][_0x2352fe[_0x5136('0x8a')]][_0x289b7a][_0x5136('0x37')],_0x289b7a);var _0x3168da=moment();this[_0x5136('0xc')][_0x2352fe[_0x5136('0x8a')]][_0x289b7a][_0x5136('0x17')]=!![];this['channels'][_0x2352fe[_0x5136('0x8a')]][_0x289b7a][_0x5136('0x85')]=moment()[_0x5136('0x2a')](_0x5136('0x2b'));this['channels'][_0x2352fe[_0x5136('0x8a')]][_0x289b7a][_0x5136('0x46')]='complete';this[_0x5136('0xc')][_0x2352fe[_0x5136('0x8a')]][_0x289b7a][_0x5136('0x51')]=_0x5136('0x83');this[_0x5136('0xc')][_0x2352fe['transfereeuniqueid']][_0x289b7a][_0x5136('0x63')]=_0x3168da[_0x5136('0x8c')](this[_0x5136('0xc')][_0x2352fe[_0x5136('0x8a')]][_0x289b7a]['agentconnectAt'],_0x5136('0x8d'));}}}}if(this[_0x5136('0xc')][_0x2352fe['secondtransfereruniqueid']]){var _0x5215d2=this['channels'][_0x2352fe[_0x5136('0x8e')]];this[_0x5136('0xc')][_0x2352fe[_0x5136('0x8e')]]=this[_0x5136('0xc')][_0x2352fe[_0x5136('0x8a')]];this[_0x5136('0xc')][_0x2352fe[_0x5136('0x8a')]]=_0x5215d2;}}}catch(_0x260dcf){logger['error'](_0x5136('0x8f'),_0x2352fe[_0x5136('0x28')],util[_0x5136('0x29')](_0x260dcf,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x5136('0x21')][_0x5136('0x20')]=function(_0x5b1abe){try{if(this[_0x5136('0x3c')](_0x5b1abe)){logger[_0x5136('0x27')]('[%s][voiceAgentReport][blindtransfer]\x20event:',_0x5b1abe[_0x5136('0x28')],util[_0x5136('0x29')](_0x5b1abe,{'showHidden':![],'depth':null}));if(this[_0x5136('0xc')][_0x5b1abe[_0x5136('0x8a')]]){for(var _0x2b3ced in this[_0x5136('0xc')][_0x5b1abe['transfereeuniqueid']]){if(this[_0x5136('0xc')][_0x5b1abe['transfereeuniqueid']]['hasOwnProperty'](_0x2b3ced)){if(_0x5b1abe['transfereruniqueid']===_0x2b3ced){logger['info'](_0x5136('0x90'),_0x5b1abe['uniqueid'],this['channels'][_0x5b1abe[_0x5136('0x8a')]][_0x2b3ced]['membername'],_0x2b3ced);var _0x374319=moment();this[_0x5136('0xc')][_0x5b1abe[_0x5136('0x8a')]][_0x2b3ced][_0x5136('0x17')]=!![];this['channels'][_0x5b1abe[_0x5136('0x8a')]][_0x2b3ced]['agentcompleteAt']=_0x374319;this[_0x5136('0xc')][_0x5b1abe['transfereeuniqueid']][_0x2b3ced][_0x5136('0x46')]=_0x5136('0x62');this[_0x5136('0xc')][_0x5b1abe['transfereeuniqueid']][_0x2b3ced][_0x5136('0x51')]=_0x5136('0x83');this[_0x5136('0xc')][_0x5b1abe['transfereeuniqueid']][_0x2b3ced][_0x5136('0x63')]=_0x374319['diff'](this[_0x5136('0xc')][_0x5b1abe[_0x5136('0x8a')]][_0x2b3ced]['agentconnectAt'],_0x5136('0x8d'));}}}}}}catch(_0x12c9f9){logger[_0x5136('0x39')](_0x5136('0x91'),_0x5b1abe[_0x5136('0x28')],util[_0x5136('0x29')](_0x12c9f9,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x5136('0x21')][_0x5136('0x92')]=function(_0x5287eb){var _0x1edb42='';try{if(this[_0x5136('0x3c')](_0x5287eb)){logger[_0x5136('0x27')](_0x5136('0x93'),_0x5287eb[_0x5136('0x28')],util['inspect'](_0x5287eb,{'showHidden':![],'depth':null}));if(_0x5287eb[_0x5136('0x94')]){_0x1edb42=_0x5287eb[_0x5136('0x94')][_0x5136('0x95')](0x0,_0x5287eb['channel'][_0x5136('0x96')]('-'));if(this[_0x5136('0xe')][_0x1edb42]){logger[_0x5136('0x24')](_0x5136('0x97'),_0x5287eb['uniqueid'],_0x1edb42);this[_0x5136('0xe')][_0x1edb42]['onhold']=!![];}}}}catch(_0x10fc21){logger[_0x5136('0x39')]('[%s][voiceAgentReport][musiconholdstart]',_0x5287eb[_0x5136('0x28')],util[_0x5136('0x29')](_0x10fc21,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['syncMusicOnHoldStop']=function(_0x29e8b2){var _0xe530b8='';try{if(this[_0x5136('0x3c')](_0x29e8b2)){logger['debug']('[%s][voiceAgentReport][musiconholdstop]\x20event:',_0x29e8b2[_0x5136('0x28')],util[_0x5136('0x29')](_0x29e8b2,{'showHidden':![],'depth':null}));if(_0x29e8b2['channel']){_0xe530b8=_0x29e8b2[_0x5136('0x94')][_0x5136('0x95')](0x0,_0x29e8b2[_0x5136('0x94')][_0x5136('0x96')]('-'));if(this[_0x5136('0xe')][_0xe530b8]){logger[_0x5136('0x24')](_0x5136('0x98'),_0x29e8b2['uniqueid'],_0xe530b8);this[_0x5136('0xe')][_0xe530b8][_0x5136('0x99')]=![];}}}}catch(_0x376dfc){logger['error']('[%s][voiceAgentReport][musiconholdstop]',_0x29e8b2[_0x5136('0x28')],util[_0x5136('0x29')](_0x376dfc,{'showHidden':![],'depth':null}));}};module['exports']=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(_0x519c30,_0x50ff8a){var _0x2f7ed5=function(_0x588b75){while(--_0x588b75){_0x519c30['push'](_0x519c30['shift']());}};_0x2f7ed5(++_0x50ff8a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x54d4fe,_0x55e869){_0x54d4fe=_0x54d4fe-0x0;var _0x1ab5bb=_0xa9e0[_0x54d4fe];return _0x1ab5bb;};'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 2bdab72..dbb70d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f4d=['blindTransfers','custom:voiceCallReport','[%s][voiceCallReport][hangup]','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','transfertargetcalleridnum','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','origtransfererlinkedid','some','ATTENDED','[%s][voiceCallReport][attendedtransfer]','syncBlindTransfer','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','extension','BLIND','syncHangup','transfererchannel','transfereruniqueid','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','isNil','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/environment','../../../config/logger','ami','../ami','../rpc/setting','not_inuse','inuse','busy','invalid','unavailable','ringing','ringinuse','onhold','set','queue','agi','dial','playback','voicemail','NO\x20ANSWER','FAILED','BUSY','defaults','redis','localhost','socket.io-emitter','channels','agents','coreshowchannel','syncNewExten','bind','newexten','newchannel','newstate','syncNewState','varset','syncVarSet','syncNewCallerId','attendedtransfer','syncAttendedTransfer','blindtransfer','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','inspect','isNotNull','isUndefined','prototype','calleridname','[%s][voiceCallReport][newcallerid]\x20event:','uniqueid','merge','pick','keys','context','from-sip','split','exten','xcally-motion-preview','channel','destconnectedlinenum','connectedlinenum','emit','format','user:%s','name','[%s][voiceCallReport][newcallerid]','debug','[%s][voiceCallReport][newchannel]\x20event:','linkedid','OutgoingSpoolFailed','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','starttime','toNumber','channelstate','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','user:agentconnect','[%s][voiceCallReport][newexten]\x20event:','application','toLowerCase','applicationdata','appdata','CDR(routeAlias)','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','subtract','seconds','YYYY-MM-DD\x20HH:mm:ss','disposition','includes','lastdata','startsWith','cdr(','[%s][voiceCallReport][newexten]','calleridnum','answertime','holdtime','diff','connectedlinename','destinationchannel','UserId','membername','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','accountcode','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','endsWith','.wav49','monitorFilename','find','monitors','push','rec','[%s][voiceCallReport][varset]\x20event:','variable','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','xmd-phone','value','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','type','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','destination','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalluniqueid','mixmonitor_filename','sipcalllinkedid','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','endtime','billableseconds','omit','user:agentcomplete','resolve','then','transferType','isEmpty','getSettings','stopRecordingOnTransfer','Action','StopMixMonitor','catch','webbar:stopmonitors','BlindTransfer','outbound'];(function(_0x17f63b,_0x510722){var _0x363418=function(_0x200f2c){while(--_0x200f2c){_0x17f63b['push'](_0x17f63b['shift']());}};_0x363418(++_0x510722);}(_0x4f4d,0xf3));var _0xd4f4=function(_0x4c12c1,_0x41926c){_0x4c12c1=_0x4c12c1-0x0;var _0x40bc9d=_0x4f4d[_0x4c12c1];return _0x40bc9d;};'use strict';var BPromise=require(_0xd4f4('0x0'));var _=require(_0xd4f4('0x1'));var moment=require(_0xd4f4('0x2'));var util=require(_0xd4f4('0x3'));var path=require(_0xd4f4('0x4'));var Redis=require(_0xd4f4('0x5'));var config=require(_0xd4f4('0x6'));var logger=require(_0xd4f4('0x7'))(_0xd4f4('0x8'));var ami=require(_0xd4f4('0x9'));var Channel=require('../model/channel');var RpcSetting=require(_0xd4f4('0xa'));var statusDesc=['unknown',_0xd4f4('0xb'),_0xd4f4('0xc'),_0xd4f4('0xd'),_0xd4f4('0xe'),_0xd4f4('0xf'),_0xd4f4('0x10'),_0xd4f4('0x11'),_0xd4f4('0x12')];var applications=[_0xd4f4('0x13'),_0xd4f4('0x14'),_0xd4f4('0x15'),_0xd4f4('0x16'),_0xd4f4('0x17'),_0xd4f4('0x18')];var dispositions=[_0xd4f4('0x19'),'FAILED',_0xd4f4('0x1a'),_0xd4f4('0x19'),'NO\x20ANSWER','NO\x20ANSWER','ANSWERED',_0xd4f4('0x1b'),'FAILED',_0xd4f4('0x1a'),_0xd4f4('0x1a')];var actions={};config['redis']=_[_0xd4f4('0x1c')](config[_0xd4f4('0x1d')],{'host':_0xd4f4('0x1e'),'port':0x18eb});var io=require(_0xd4f4('0x1f'))(new Redis(config['redis']));function VoiceCallReport(_0x339d30){this[_0xd4f4('0x20')]=_0x339d30[_0xd4f4('0x20')];this['agents']=_0x339d30[_0xd4f4('0x21')];this['blindTransfers']={};ami['on'](_0xd4f4('0x22'),this[_0xd4f4('0x23')][_0xd4f4('0x24')](this));ami['on'](_0xd4f4('0x25'),this['syncNewExten'][_0xd4f4('0x24')](this));ami['on'](_0xd4f4('0x26'),this['syncNewChannel'][_0xd4f4('0x24')](this));ami['on'](_0xd4f4('0x27'),this[_0xd4f4('0x28')]['bind'](this));ami['on'](_0xd4f4('0x29'),this[_0xd4f4('0x2a')][_0xd4f4('0x24')](this));ami['on']('hangup',this['syncHangup'][_0xd4f4('0x24')](this));ami['on']('newcallerid',this[_0xd4f4('0x2b')]['bind'](this));ami['on'](_0xd4f4('0x2c'),this[_0xd4f4('0x2d')]['bind'](this));ami['on'](_0xd4f4('0x2e'),this['syncBlindTransfer'][_0xd4f4('0x24')](this));ami['on'](_0xd4f4('0x2f'),this[_0xd4f4('0x30')][_0xd4f4('0x24')](this));ami['on'](_0xd4f4('0x31'),this[_0xd4f4('0x32')][_0xd4f4('0x24')](this));try{logger[_0xd4f4('0x33')](_0xd4f4('0x34'));ami[_0xd4f4('0x35')]();}catch(_0x5011eb){logger[_0xd4f4('0x36')](_0xd4f4('0x37'),util[_0xd4f4('0x38')](_0x5011eb,{'showHidden':![],'depth':null}));}}VoiceCallReport['prototype'][_0xd4f4('0x39')]=function(_0x57c05){return _0x57c05!==null&&!_[_0xd4f4('0x3a')](_0x57c05);};VoiceCallReport[_0xd4f4('0x3b')]['emit']=function(_0x3f97f5,_0xd8b1a7,_0x4cf7dd){io['to'](_0x3f97f5)['emit'](_0xd8b1a7,_0x4cf7dd);};VoiceCallReport[_0xd4f4('0x3b')][_0xd4f4('0x2b')]=function(_0x567e5b){try{if(this[_0xd4f4('0x39')](_0x567e5b)){logger['info']('[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s',_0x567e5b['uniqueid'],_0x567e5b[_0xd4f4('0x3c')],_0x567e5b['calleridnum']);logger['debug'](_0xd4f4('0x3d'),_0x567e5b[_0xd4f4('0x3e')],util[_0xd4f4('0x38')](_0x567e5b,{'showHidden':![],'depth':null}));if(_0x567e5b[_0xd4f4('0x3e')]===_0x567e5b['linkedid']){if(!_[_0xd4f4('0x3a')](this[_0xd4f4('0x20')][_0x567e5b[_0xd4f4('0x3e')]])){_[_0xd4f4('0x3f')](this[_0xd4f4('0x20')][_0x567e5b[_0xd4f4('0x3e')]],_[_0xd4f4('0x40')](_0x567e5b,_[_0xd4f4('0x41')](this[_0xd4f4('0x20')][_0x567e5b[_0xd4f4('0x3e')]])));}}if(_0x567e5b[_0xd4f4('0x42')]===_0xd4f4('0x43')){if(this[_0xd4f4('0x21')][_0x567e5b['channel'][_0xd4f4('0x44')]('-')[0x0]]){if(_0x567e5b[_0xd4f4('0x45')]==_0xd4f4('0x46')){this[_0xd4f4('0x21')][_0x567e5b[_0xd4f4('0x47')]['split']('-')[0x0]][_0xd4f4('0x48')]=_0x567e5b[_0xd4f4('0x49')];this[_0xd4f4('0x4a')](util[_0xd4f4('0x4b')](_0xd4f4('0x4c'),this[_0xd4f4('0x21')][_0x567e5b[_0xd4f4('0x47')][_0xd4f4('0x44')]('-')[0x0]][_0xd4f4('0x4d')]),'user:agentconnect',{'destaccountcode':this[_0xd4f4('0x21')][_0x567e5b[_0xd4f4('0x47')][_0xd4f4('0x44')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x567e5b[_0xd4f4('0x49')]});}}}}}catch(_0x2475e0){logger['error'](_0xd4f4('0x4e'),_0x567e5b[_0xd4f4('0x3e')],util[_0xd4f4('0x38')](_0x2475e0,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xd4f4('0x3b')]['syncNewChannel']=function(_0x1a395c){try{if(this[_0xd4f4('0x39')](_0x1a395c)){logger[_0xd4f4('0x4f')](_0xd4f4('0x50'),_0x1a395c[_0xd4f4('0x3e')],util[_0xd4f4('0x38')](_0x1a395c,{'showHidden':![],'depth':null}));if(_0x1a395c['uniqueid']===_0x1a395c[_0xd4f4('0x51')]&&_0x1a395c[_0xd4f4('0x47')]!=_0xd4f4('0x52')){if(_[_0xd4f4('0x3a')](this[_0xd4f4('0x20')][_0x1a395c[_0xd4f4('0x3e')]])){logger[_0xd4f4('0x33')](_0xd4f4('0x53'),_0x1a395c[_0xd4f4('0x3e')],_0x1a395c[_0xd4f4('0x42')],_0x1a395c[_0xd4f4('0x45')]);this[_0xd4f4('0x20')][_0x1a395c['uniqueid']]=new Channel();this[_0xd4f4('0x20')][_0x1a395c[_0xd4f4('0x3e')]][_0xd4f4('0x54')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0xd4f4('0x20')][_0x1a395c[_0xd4f4('0x3e')]]['disposition']=dispositions[_[_0xd4f4('0x55')](_0x1a395c[_0xd4f4('0x56')])];_[_0xd4f4('0x3f')](this[_0xd4f4('0x20')][_0x1a395c[_0xd4f4('0x3e')]],_[_0xd4f4('0x40')](_0x1a395c,_[_0xd4f4('0x41')](this['channels'][_0x1a395c[_0xd4f4('0x3e')]])));if(_0x1a395c[_0xd4f4('0x42')]==='from-sip'){if(this[_0xd4f4('0x21')][_0x1a395c[_0xd4f4('0x47')][_0xd4f4('0x44')]('-')[0x0]]){if(_['isUndefined'](this[_0xd4f4('0x21')][_0x1a395c[_0xd4f4('0x47')][_0xd4f4('0x44')]('-')[0x0]][_0xd4f4('0x48')])){this[_0xd4f4('0x21')][_0x1a395c[_0xd4f4('0x47')]['split']('-')[0x0]][_0xd4f4('0x48')]=_0x1a395c[_0xd4f4('0x45')];logger[_0xd4f4('0x4f')](_0xd4f4('0x57'),_0x1a395c[_0xd4f4('0x3e')],util[_0xd4f4('0x38')]({'destaccountcode':this[_0xd4f4('0x21')][_0x1a395c[_0xd4f4('0x47')]['split']('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x1a395c[_0xd4f4('0x45')]},{'showHidden':![],'depth':null}));this['emit'](util[_0xd4f4('0x4b')](_0xd4f4('0x4c'),this[_0xd4f4('0x21')][_0x1a395c[_0xd4f4('0x47')][_0xd4f4('0x44')]('-')[0x0]][_0xd4f4('0x4d')]),_0xd4f4('0x58'),{'destaccountcode':this['agents'][_0x1a395c['channel'][_0xd4f4('0x44')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x1a395c['exten']});}}}}}}}catch(_0x480919){logger[_0xd4f4('0x36')]('[%s][voiceCallReport][newchannel]',_0x1a395c[_0xd4f4('0x3e')],util['inspect'](_0x480919,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xd4f4('0x23')]=function(_0x5048d9){try{if(this[_0xd4f4('0x39')](_0x5048d9)){logger[_0xd4f4('0x4f')](_0xd4f4('0x59'),_0x5048d9['uniqueid'],util[_0xd4f4('0x38')](_0x5048d9,{'showHidden':![],'depth':null}));if(_0x5048d9['uniqueid']===_0x5048d9[_0xd4f4('0x51')]&&_0x5048d9[_0xd4f4('0x45')]!='h'&&_0x5048d9[_0xd4f4('0x47')]!=_0xd4f4('0x52')){_0x5048d9[_0xd4f4('0x5a')]=_0x5048d9[_0xd4f4('0x5a')][_0xd4f4('0x5b')]();_0x5048d9[_0xd4f4('0x5c')]=_0x5048d9[_0xd4f4('0x5d')]&&_0x5048d9[_0xd4f4('0x5d')]['startsWith'](_0xd4f4('0x5e'))?_0x5048d9[_0xd4f4('0x5d')]:(_0x5048d9['appdata']||_0x5048d9['applicationdata'])[_0xd4f4('0x5b')]();logger[_0xd4f4('0x33')](_0xd4f4('0x5f'),_0x5048d9[_0xd4f4('0x3e')],_0x5048d9['application'],_0x5048d9['applicationdata']);if(_[_0xd4f4('0x3a')](this['channels'][_0x5048d9[_0xd4f4('0x3e')]])){this['channels'][_0x5048d9[_0xd4f4('0x3e')]]=new Channel();this['channels'][_0x5048d9[_0xd4f4('0x3e')]][_0xd4f4('0x54')]=_0x5048d9[_0xd4f4('0x60')]?moment()[_0xd4f4('0x61')](moment[_0xd4f4('0x60')](_0x5048d9['duration'])[_0xd4f4('0x62')](),_0xd4f4('0x62'))[_0xd4f4('0x4b')]('YYYY-MM-DD\x20HH:mm:ss'):moment()['format'](_0xd4f4('0x63'));this[_0xd4f4('0x20')][_0x5048d9[_0xd4f4('0x3e')]][_0xd4f4('0x64')]=_0xd4f4('0x19');}_[_0xd4f4('0x3f')](this['channels'][_0x5048d9[_0xd4f4('0x3e')]],_[_0xd4f4('0x40')](_0x5048d9,_[_0xd4f4('0x41')](this[_0xd4f4('0x20')][_0x5048d9['uniqueid']])));if(_[_0xd4f4('0x65')](applications,_0x5048d9[_0xd4f4('0x5a')])){this[_0xd4f4('0x20')][_0x5048d9[_0xd4f4('0x3e')]]['lastapplication']=_0x5048d9[_0xd4f4('0x5a')];this[_0xd4f4('0x20')][_0x5048d9[_0xd4f4('0x3e')]][_0xd4f4('0x66')]=_0x5048d9['applicationdata'];if(_0x5048d9[_0xd4f4('0x5a')]==='set'&&_[_0xd4f4('0x67')](_0x5048d9[_0xd4f4('0x5c')][_0xd4f4('0x5b')](),_0xd4f4('0x68'))){var _0x53b5cd=_0x5048d9[_0xd4f4('0x5c')][_0xd4f4('0x44')]('=');var _0x5be8d7=_0x53b5cd[0x0][_0xd4f4('0x5b')]()['match'](/cdr\((.*)\)/);if(_0x5be8d7){this['channels'][_0x5048d9[_0xd4f4('0x3e')]][_0x5be8d7[0x1]]=_0x53b5cd[0x1];}}else if(_0x5048d9[_0xd4f4('0x5a')]===_0xd4f4('0x14')){this[_0xd4f4('0x20')][_0x5048d9[_0xd4f4('0x3e')]][_0xd4f4('0x14')]=_0x5048d9['applicationdata'][_0xd4f4('0x44')](',')[0x0];}}}}}catch(_0x1f6d55){logger[_0xd4f4('0x36')](_0xd4f4('0x69'),_0x5048d9[_0xd4f4('0x3e')],util[_0xd4f4('0x38')](_0x1f6d55,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xd4f4('0x3b')][_0xd4f4('0x28')]=function(_0x51fcee){try{if(this[_0xd4f4('0x39')](_0x51fcee)){logger['info']('[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s',_0x51fcee[_0xd4f4('0x3e')],_0x51fcee[_0xd4f4('0x51')],_0x51fcee[_0xd4f4('0x3c')],_0x51fcee[_0xd4f4('0x6a')]);logger['debug']('[%s][voiceCallReport][newstate]\x20event:',_0x51fcee['uniqueid'],util[_0xd4f4('0x38')](_0x51fcee,{'showHidden':![],'depth':null}));if(_0x51fcee[_0xd4f4('0x3e')]!==_0x51fcee[_0xd4f4('0x51')]){if(this[_0xd4f4('0x20')][_0x51fcee[_0xd4f4('0x51')]]){if(_0x51fcee[_0xd4f4('0x56')]==='6'){if(!this[_0xd4f4('0x20')][_0x51fcee[_0xd4f4('0x51')]]['answered']){var _0x31aca2=moment();this[_0xd4f4('0x20')][_0x51fcee['linkedid']]['answered']=!![];this[_0xd4f4('0x20')][_0x51fcee[_0xd4f4('0x51')]][_0xd4f4('0x6b')]=_0x31aca2['format']('YYYY-MM-DD\x20HH:mm:ss');if(this['channels'][_0x51fcee[_0xd4f4('0x51')]][_0xd4f4('0x54')]){this[_0xd4f4('0x20')][_0x51fcee[_0xd4f4('0x51')]][_0xd4f4('0x6c')]=_0x31aca2[_0xd4f4('0x6d')](this['channels'][_0x51fcee[_0xd4f4('0x51')]]['starttime'],_0xd4f4('0x62'));}}this[_0xd4f4('0x20')][_0x51fcee[_0xd4f4('0x51')]][_0xd4f4('0x51')]=_0x51fcee['uniqueid'];if(_0x51fcee['calleridnum']!==_0xd4f4('0x46')){this[_0xd4f4('0x20')][_0x51fcee[_0xd4f4('0x51')]][_0xd4f4('0x49')]=_0x51fcee[_0xd4f4('0x6a')];}this[_0xd4f4('0x20')][_0x51fcee[_0xd4f4('0x51')]][_0xd4f4('0x6e')]=_0x51fcee['calleridname'];this[_0xd4f4('0x20')][_0x51fcee[_0xd4f4('0x51')]][_0xd4f4('0x6f')]=_0x51fcee[_0xd4f4('0x47')];this[_0xd4f4('0x20')][_0x51fcee[_0xd4f4('0x51')]][_0xd4f4('0x64')]=dispositions[_[_0xd4f4('0x55')](_0x51fcee[_0xd4f4('0x56')])];if(this[_0xd4f4('0x21')][_0x51fcee[_0xd4f4('0x47')][_0xd4f4('0x44')]('-')[0x0]]){this['channels'][_0x51fcee[_0xd4f4('0x51')]][_0xd4f4('0x70')]=this[_0xd4f4('0x21')][_0x51fcee['channel'][_0xd4f4('0x44')]('-')[0x0]]['id'];this[_0xd4f4('0x20')][_0x51fcee[_0xd4f4('0x51')]][_0xd4f4('0x71')]=this[_0xd4f4('0x21')][_0x51fcee[_0xd4f4('0x47')][_0xd4f4('0x44')]('-')[0x0]][_0xd4f4('0x4d')];}}}}else{if(this[_0xd4f4('0x20')][_0x51fcee['uniqueid']]){if(_0x51fcee[_0xd4f4('0x56')]==='6'){if(this['agents'][_0x51fcee[_0xd4f4('0x47')][_0xd4f4('0x44')]('-')[0x0]]){this[_0xd4f4('0x20')][_0x51fcee['uniqueid']][_0xd4f4('0x70')]=this[_0xd4f4('0x21')][_0x51fcee[_0xd4f4('0x47')][_0xd4f4('0x44')]('-')[0x0]]['id'];this[_0xd4f4('0x20')][_0x51fcee[_0xd4f4('0x3e')]][_0xd4f4('0x71')]=this[_0xd4f4('0x21')][_0x51fcee[_0xd4f4('0x47')][_0xd4f4('0x44')]('-')[0x0]][_0xd4f4('0x4d')];}}}}if(_0x51fcee[_0xd4f4('0x56')]==='6'&&_0x51fcee[_0xd4f4('0x42')]===_0xd4f4('0x43')){if(this[_0xd4f4('0x21')][_0x51fcee[_0xd4f4('0x47')][_0xd4f4('0x44')]('-')[0x0]]){this[_0xd4f4('0x21')][_0x51fcee['channel'][_0xd4f4('0x44')]('-')[0x0]]['destconnectedlinenum']=_0x51fcee['exten'];var _0x42f060;if(this[_0xd4f4('0x20')][_0x51fcee[_0xd4f4('0x3e')]])_0x42f060=this[_0xd4f4('0x20')][_0x51fcee[_0xd4f4('0x3e')]][_0xd4f4('0x72')];else if(this[_0xd4f4('0x20')][_0x51fcee[_0xd4f4('0x51')]])_0x42f060=this[_0xd4f4('0x20')][_0x51fcee[_0xd4f4('0x51')]]['routealias'];logger[_0xd4f4('0x4f')](_0xd4f4('0x73'),_0x51fcee['uniqueid'],util[_0xd4f4('0x38')]({'destaccountcode':this['agents'][_0x51fcee[_0xd4f4('0x47')][_0xd4f4('0x44')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x51fcee['exten'],'routealias':_0x42f060},{'showHidden':![],'depth':null}));this[_0xd4f4('0x4a')](util[_0xd4f4('0x4b')](_0xd4f4('0x4c'),this[_0xd4f4('0x21')][_0x51fcee[_0xd4f4('0x47')][_0xd4f4('0x44')]('-')[0x0]][_0xd4f4('0x4d')]),_0xd4f4('0x58'),{'destaccountcode':this[_0xd4f4('0x21')][_0x51fcee[_0xd4f4('0x47')][_0xd4f4('0x44')]('-')[0x0]][_0xd4f4('0x74')],'destconnectedlinenum':_0x51fcee['exten'],'routealias':_0x42f060});}}}}catch(_0x59f87b){logger[_0xd4f4('0x36')](_0xd4f4('0x75'),_0x51fcee['uniqueid'],util['inspect'](_0x59f87b,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xd4f4('0x3b')][_0xd4f4('0x76')]=function(_0x14bb47,_0xca933f){try{if(this['channels'][_0x14bb47]){logger['info'](_0xd4f4('0x77'),_0x14bb47,_0xca933f);this['channels'][_0x14bb47][_0xd4f4('0x78')]=!![];if(_[_0xd4f4('0x79')](_0xca933f,_0xd4f4('0x7a'))){_0xca933f=_0xca933f['replace'](_0xd4f4('0x7a'),'.WAV');}this[_0xd4f4('0x20')][_0x14bb47][_0xd4f4('0x7b')]=_0xca933f;var _0x88ebcc=_[_0xd4f4('0x7c')](this['channels'][_0x14bb47]['monitors'],{'filename':_0xca933f});if(_['isNil'](_0x88ebcc)){this['channels'][_0x14bb47][_0xd4f4('0x7d')][_0xd4f4('0x7e')]({'filename':_0xca933f,'createdAt':moment()[_0xd4f4('0x4b')](_0xd4f4('0x63')),'mixmonitorid':'','status':_0xd4f4('0x7f')});}}}catch(_0x3557cd){logger['error']('[%s][voiceCallReport][mixMonitorFilename]',_0x14bb47,util['inspect'](_0x3557cd,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xd4f4('0x3b')][_0xd4f4('0x2a')]=function(_0x13cdfa){try{if(this['isNotNull'](_0x13cdfa)){logger[_0xd4f4('0x4f')](_0xd4f4('0x80'),_0x13cdfa[_0xd4f4('0x3e')],util[_0xd4f4('0x38')](_0x13cdfa,{'showHidden':![],'depth':null}));if(this['channels'][_0x13cdfa[_0xd4f4('0x3e')]]&&_0x13cdfa[_0xd4f4('0x47')]!=_0xd4f4('0x52')){if(this['isNotNull'](_0x13cdfa[_0xd4f4('0x81')])){if(this[_0xd4f4('0x39')](_0x13cdfa['variable']['mixmonitor_filename'])){logger['info'](_0xd4f4('0x82'),_0x13cdfa[_0xd4f4('0x3e')],_0x13cdfa['value']);this[_0xd4f4('0x76')](_0x13cdfa['uniqueid'],_0x13cdfa['value']);}else if(this[_0xd4f4('0x39')](_0x13cdfa['variable'][_0xd4f4('0x83')])){logger[_0xd4f4('0x33')]('[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s',_0x13cdfa[_0xd4f4('0x3e')],_0x13cdfa[_0xd4f4('0x84')]);this['channels'][_0x13cdfa[_0xd4f4('0x3e')]][_0xd4f4('0x6a')]=_0x13cdfa[_0xd4f4('0x84')];}else if(this[_0xd4f4('0x39')](_0x13cdfa[_0xd4f4('0x81')][_0xd4f4('0x85')])){logger[_0xd4f4('0x33')](_0xd4f4('0x86'),_0x13cdfa['uniqueid'],_0x13cdfa[_0xd4f4('0x84')]);this['channels'][_0x13cdfa[_0xd4f4('0x3e')]]['callerid']=_0x13cdfa[_0xd4f4('0x84')];}else if(this[_0xd4f4('0x39')](_0x13cdfa['variable'][_0xd4f4('0x87')])){logger['info'](_0xd4f4('0x88'),_0x13cdfa[_0xd4f4('0x3e')],_0x13cdfa[_0xd4f4('0x84')]);this[_0xd4f4('0x20')][_0x13cdfa['uniqueid']][_0xd4f4('0x89')]=_0x13cdfa[_0xd4f4('0x84')];}else if(this[_0xd4f4('0x39')](_0x13cdfa['variable'][_0xd4f4('0x8a')])){logger[_0xd4f4('0x33')](_0xd4f4('0x8b'),_0x13cdfa['uniqueid'],_0x13cdfa[_0xd4f4('0x84')][_0xd4f4('0x44')](',')[0x0]);this['channels'][_0x13cdfa[_0xd4f4('0x3e')]]['queue']=_0x13cdfa[_0xd4f4('0x84')][_0xd4f4('0x44')](',')[0x0];}else if(this[_0xd4f4('0x39')](_0x13cdfa[_0xd4f4('0x81')]['xmd-originatecalleridnum'])){logger[_0xd4f4('0x33')](_0xd4f4('0x8c'),_0x13cdfa['uniqueid'],_0x13cdfa[_0xd4f4('0x84')]);this['channels'][_0x13cdfa[_0xd4f4('0x3e')]][_0xd4f4('0x8d')]=_0x13cdfa['value'];}else if(this[_0xd4f4('0x39')](_0x13cdfa[_0xd4f4('0x81')][_0xd4f4('0x8e')])){logger[_0xd4f4('0x33')](_0xd4f4('0x8f'),_0x13cdfa[_0xd4f4('0x3e')],_0x13cdfa[_0xd4f4('0x84')]);this[_0xd4f4('0x20')][_0x13cdfa[_0xd4f4('0x3e')]][_0xd4f4('0x90')]=_0x13cdfa[_0xd4f4('0x84')];}else if(this[_0xd4f4('0x39')](_0x13cdfa[_0xd4f4('0x81')][_0xd4f4('0x91')])){logger[_0xd4f4('0x33')](_0xd4f4('0x92'),_0x13cdfa[_0xd4f4('0x3e')],_0x13cdfa['value']);this[_0xd4f4('0x20')][_0x13cdfa[_0xd4f4('0x3e')]][_0xd4f4('0x93')]=_0x13cdfa[_0xd4f4('0x84')];}else if(this[_0xd4f4('0x39')](_0x13cdfa[_0xd4f4('0x81')][_0xd4f4('0x94')])){logger[_0xd4f4('0x33')](_0xd4f4('0x95'),_0x13cdfa[_0xd4f4('0x3e')],_0x13cdfa[_0xd4f4('0x84')]);this[_0xd4f4('0x20')][_0x13cdfa[_0xd4f4('0x3e')]][_0xd4f4('0x14')]=_0x13cdfa['value'];}else if(this[_0xd4f4('0x39')](_0x13cdfa[_0xd4f4('0x81')][_0xd4f4('0x96')])){logger[_0xd4f4('0x33')](_0xd4f4('0x97'),_0x13cdfa['uniqueid'],_0x13cdfa['value']);this[_0xd4f4('0x20')][_0x13cdfa[_0xd4f4('0x3e')]][_0xd4f4('0x98')]=_0x13cdfa[_0xd4f4('0x84')];}}}else if(this[_0xd4f4('0x39')](_0x13cdfa[_0xd4f4('0x81')][_0xd4f4('0x99')])){if(_0x13cdfa['value']){var _0x378c12=path['parse'](_0x13cdfa[_0xd4f4('0x84')])[_0xd4f4('0x4d')];logger[_0xd4f4('0x33')](_0xd4f4('0x82'),_0x378c12,_0x13cdfa[_0xd4f4('0x84')]);this[_0xd4f4('0x76')](_0x378c12,_0x13cdfa[_0xd4f4('0x84')]);}}else if(this[_0xd4f4('0x20')][_0x13cdfa[_0xd4f4('0x51')]]){if(this[_0xd4f4('0x39')](_0x13cdfa['variable'])){if(this[_0xd4f4('0x39')](_0x13cdfa[_0xd4f4('0x81')][_0xd4f4('0x96')])){logger[_0xd4f4('0x33')](_0xd4f4('0x97'),_0x13cdfa[_0xd4f4('0x51')],_0x13cdfa[_0xd4f4('0x84')]);this[_0xd4f4('0x20')][_0x13cdfa['linkedid']][_0xd4f4('0x9a')]=_0x13cdfa['value'];}}}}}catch(_0x17085d){logger[_0xd4f4('0x36')]('[%s][voiceCallReport][varset]',_0x13cdfa[_0xd4f4('0x3e')],util['inspect'](_0x17085d,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xd4f4('0x3b')]['syncHangup']=function(_0x46cced){try{if(this['isNotNull'](_0x46cced)){logger[_0xd4f4('0x4f')](_0xd4f4('0x9b'),_0x46cced[_0xd4f4('0x3e')],util['inspect'](_0x46cced,{'showHidden':![],'depth':null}));if(this[_0xd4f4('0x20')][_0x46cced[_0xd4f4('0x3e')]]){logger[_0xd4f4('0x33')](_0xd4f4('0x9c'),_0x46cced[_0xd4f4('0x3e')],_0x46cced['cause-txt']);var _0x36d66e=moment();this[_0xd4f4('0x20')][_0x46cced[_0xd4f4('0x3e')]][_0xd4f4('0x9d')]=_0x36d66e[_0xd4f4('0x4b')](_0xd4f4('0x63'));this['channels'][_0x46cced[_0xd4f4('0x3e')]][_0xd4f4('0x60')]=_0x36d66e[_0xd4f4('0x6d')](this[_0xd4f4('0x20')][_0x46cced[_0xd4f4('0x3e')]][_0xd4f4('0x54')],'seconds');if(this[_0xd4f4('0x20')][_0x46cced['uniqueid']]['answered']){this['channels'][_0x46cced[_0xd4f4('0x3e')]][_0xd4f4('0x9e')]=_0x36d66e[_0xd4f4('0x6d')](this[_0xd4f4('0x20')][_0x46cced[_0xd4f4('0x3e')]][_0xd4f4('0x6b')],_0xd4f4('0x62'));this['channels'][_0x46cced[_0xd4f4('0x3e')]]['holdtime']=this[_0xd4f4('0x20')][_0x46cced[_0xd4f4('0x3e')]][_0xd4f4('0x60')]-this['channels'][_0x46cced[_0xd4f4('0x3e')]][_0xd4f4('0x9e')];}if(_0x46cced[_0xd4f4('0x42')]===_0xd4f4('0x43')){if(this[_0xd4f4('0x21')][_0x46cced['channel'][_0xd4f4('0x44')]('-')[0x0]]){this[_0xd4f4('0x21')][_0x46cced['channel'][_0xd4f4('0x44')]('-')[0x0]]=_[_0xd4f4('0x9f')](this['agents'][_0x46cced[_0xd4f4('0x47')][_0xd4f4('0x44')]('-')[0x0]],[_0xd4f4('0x48')]);logger[_0xd4f4('0x4f')]('[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:',_0x46cced[_0xd4f4('0x3e')],util[_0xd4f4('0x38')]({'id':this[_0xd4f4('0x21')][_0x46cced[_0xd4f4('0x47')][_0xd4f4('0x44')]('-')[0x0]]['id'],'destaccountcode':this[_0xd4f4('0x21')][_0x46cced[_0xd4f4('0x47')][_0xd4f4('0x44')]('-')[0x0]][_0xd4f4('0x74')]},{'showHidden':![],'depth':null}));this[_0xd4f4('0x4a')](util[_0xd4f4('0x4b')](_0xd4f4('0x4c'),this[_0xd4f4('0x21')][_0x46cced[_0xd4f4('0x47')][_0xd4f4('0x44')]('-')[0x0]][_0xd4f4('0x4d')]),_0xd4f4('0xa0'),{'id':this[_0xd4f4('0x21')][_0x46cced['channel'][_0xd4f4('0x44')]('-')[0x0]]['id'],'destaccountcode':this[_0xd4f4('0x21')][_0x46cced[_0xd4f4('0x47')][_0xd4f4('0x44')]('-')[0x0]][_0xd4f4('0x74')]});}}var _0x5e7af2=this;Promise[_0xd4f4('0xa1')]()[_0xd4f4('0xa2')](function(){var _0x345b1f=_0x5e7af2[_0xd4f4('0x20')][_0x46cced['uniqueid']];if(typeof _0x345b1f[_0xd4f4('0xa3')]==='undefined')return;if(_[_0xd4f4('0xa4')](_0x345b1f[_0xd4f4('0x7d')]))return;return RpcSetting[_0xd4f4('0xa5')]()[_0xd4f4('0xa2')](function(_0x1a258f){if(!_0x1a258f[_0xd4f4('0xa6')])return;return Promise['resolve']()[_0xd4f4('0xa2')](function(){return ami[_0xd4f4('0xa7')]({'action':_0xd4f4('0xa8'),'channel':_0x345b1f[_0xd4f4('0x47')]})[_0xd4f4('0xa9')](function(){});})[_0xd4f4('0xa2')](function(){return ami[_0xd4f4('0xa7')]({'action':_0xd4f4('0xa8'),'channel':_0x345b1f[_0xd4f4('0x6f')]})[_0xd4f4('0xa9')](function(){})['finally'](function(){var _0x2723fc=_0x5e7af2[_0xd4f4('0x21')][_0x345b1f[_0xd4f4('0x6f')]['split']('-')[0x0]];if(!_0x2723fc)return;io[_0xd4f4('0x4a')](_0xd4f4('0xaa'),{'agentId':_0x2723fc['id'],'uniqueid':_0x345b1f['uniqueid']});});});});})[_0xd4f4('0xa2')](function(){if(_0x46cced['event']===_0xd4f4('0xab')){_0x5e7af2['blindTransfers'][_0x46cced[_0xd4f4('0x3e')]]=_0x5e7af2[_0xd4f4('0x20')][_0x46cced['uniqueid']];}else{if(_0x5e7af2[_0xd4f4('0x20')][_0x46cced['uniqueid']][_0xd4f4('0x89')]===_0xd4f4('0xac')&&_0x5e7af2[_0xd4f4('0xad')][_0x46cced[_0xd4f4('0x3e')]]){_0x5e7af2[_0xd4f4('0x20')][_0x46cced[_0xd4f4('0x3e')]][_0xd4f4('0x3e')]=[_0x5e7af2[_0xd4f4('0x20')][_0x46cced[_0xd4f4('0x3e')]][_0xd4f4('0x51')],_0x5e7af2['channels'][_0x46cced['uniqueid']][_0xd4f4('0x51')]=_0x5e7af2['channels'][_0x46cced[_0xd4f4('0x3e')]][_0xd4f4('0x3e')]][0x0];delete _0x5e7af2[_0xd4f4('0xad')][_0x46cced[_0xd4f4('0x3e')]];}}logger['debug']('[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:',_0x46cced[_0xd4f4('0x3e')],util[_0xd4f4('0x38')](_0x5e7af2[_0xd4f4('0x20')][_0x46cced[_0xd4f4('0x3e')]],{'showHidden':![],'depth':null}));ami[_0xd4f4('0x4a')](_0xd4f4('0xae'),_0x5e7af2['channels'][_0x46cced['uniqueid']]);delete _0x5e7af2[_0xd4f4('0x20')][_0x46cced[_0xd4f4('0x3e')]];});}}}catch(_0xde7bab){logger['error'](_0xd4f4('0xaf'),_0x46cced['uniqueid'],util[_0xd4f4('0x38')](_0xde7bab,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xd4f4('0x3b')][_0xd4f4('0x2d')]=function(_0x4afc59){try{if(this[_0xd4f4('0x39')](_0x4afc59)){logger[_0xd4f4('0x33')](_0xd4f4('0xb0'),_0x4afc59['uniqueid'],_0x4afc59[_0xd4f4('0xb1')],_0x4afc59[_0xd4f4('0xb2')]);logger[_0xd4f4('0x4f')]('[%s][voiceCallReport][attendedtransfer]\x20event:',_0x4afc59['uniqueid'],util['inspect'](_0x4afc59,{'showHidden':![],'depth':null}));if(this['channels'][_0x4afc59[_0xd4f4('0xb3')]]){this[_0xd4f4('0x20')][_0x4afc59['transfereeuniqueid']][_0xd4f4('0xb4')]=_0x4afc59[_0xd4f4('0xb1')];this[_0xd4f4('0x20')][_0x4afc59[_0xd4f4('0xb3')]][_0xd4f4('0xb5')]=_0x4afc59[_0xd4f4('0xb2')];if(this[_0xd4f4('0x20')][_0x4afc59[_0xd4f4('0xb6')]]){var _0x4d7a42=this[_0xd4f4('0x20')][_0x4afc59[_0xd4f4('0xb6')]];this[_0xd4f4('0x20')][_0x4afc59[_0xd4f4('0xb6')]]=this[_0xd4f4('0x20')][_0x4afc59[_0xd4f4('0xb3')]];this['channels'][_0x4afc59[_0xd4f4('0xb3')]]=_0x4d7a42;}}else if(this[_0xd4f4('0x20')][_0x4afc59[_0xd4f4('0xb7')]]){this[_0xd4f4('0x20')][_0x4afc59[_0xd4f4('0xb7')]][_0xd4f4('0xb4')]=_0x4afc59['origtransferercalleridnum'];this[_0xd4f4('0x20')][_0x4afc59[_0xd4f4('0xb7')]][_0xd4f4('0xb5')]=_0x4afc59['transfertargetcalleridnum'];if(this[_0xd4f4('0x20')][_0x4afc59[_0xd4f4('0xb8')]]){var _0x4d7a42=this[_0xd4f4('0x20')][_0x4afc59[_0xd4f4('0xb8')]];this[_0xd4f4('0x20')][_0x4afc59['origtransfereruniqueid']]=this[_0xd4f4('0x20')][_0x4afc59[_0xd4f4('0xb7')]];this[_0xd4f4('0x20')][_0x4afc59[_0xd4f4('0xb7')]]=_0x4d7a42;}}if((this[_0xd4f4('0x20')][_0x4afc59[_0xd4f4('0xb8')]]||this['channels'][_0x4afc59[_0xd4f4('0xb9')]])&&this[_0xd4f4('0x20')][_0x4afc59[_0xd4f4('0xb6')]]){var _0x1adb75=_[_0xd4f4('0xba')]([this[_0xd4f4('0x20')][_0x4afc59[_0xd4f4('0xb8')]],this[_0xd4f4('0x20')][_0x4afc59[_0xd4f4('0xb9')]],this['channels'][_0x4afc59[_0xd4f4('0xb6')]]],function(_0x1d02b3){return _0x1d02b3&&_0x1d02b3['type']===_0xd4f4('0xac')&&_0x1d02b3['routeid'];});if(_0x1adb75){if(this[_0xd4f4('0x20')][_0x4afc59[_0xd4f4('0xb8')]])this[_0xd4f4('0x20')][_0x4afc59[_0xd4f4('0xb8')]][_0xd4f4('0xa3')]=_0xd4f4('0xbb');if(this[_0xd4f4('0x20')][_0x4afc59[_0xd4f4('0xb9')]])this[_0xd4f4('0x20')][_0x4afc59[_0xd4f4('0xb9')]][_0xd4f4('0xa3')]=_0xd4f4('0xbb');this[_0xd4f4('0x20')][_0x4afc59[_0xd4f4('0xb6')]][_0xd4f4('0xa3')]=_0xd4f4('0xbb');}}}}catch(_0x88eaa0){logger[_0xd4f4('0x36')](_0xd4f4('0xbc'),_0x4afc59[_0xd4f4('0x3e')],util[_0xd4f4('0x38')](_0x88eaa0,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xd4f4('0xbd')]=function(_0x1e8147){try{if(this[_0xd4f4('0x39')](_0x1e8147)){logger['info'](_0xd4f4('0xbe'),_0x1e8147[_0xd4f4('0x3e')],_0x1e8147[_0xd4f4('0xbf')],_0x1e8147[_0xd4f4('0xc0')]);logger[_0xd4f4('0x4f')]('[%s][voiceCallReport][blindtransfer]\x20event:',_0x1e8147['uniqueid'],util[_0xd4f4('0x38')](_0x1e8147,{'showHidden':![],'depth':null}));if(this[_0xd4f4('0x20')][_0x1e8147[_0xd4f4('0xb3')]]){this[_0xd4f4('0x20')][_0x1e8147[_0xd4f4('0xb3')]][_0xd4f4('0xb4')]=_0x1e8147[_0xd4f4('0xbf')];this[_0xd4f4('0x20')][_0x1e8147['transfereeuniqueid']][_0xd4f4('0xb5')]=_0x1e8147['extension'];this[_0xd4f4('0x20')][_0x1e8147[_0xd4f4('0xb3')]]['transferType']=_0xd4f4('0xc1');this[_0xd4f4('0xc2')]({'event':_0xd4f4('0xab'),'uniqueid':_0x1e8147['transfereeuniqueid'],'context':_0x1e8147[_0xd4f4('0x42')],'channel':_0x1e8147[_0xd4f4('0xc3')]});}else{this[_0xd4f4('0x20')][_0x1e8147[_0xd4f4('0xc4')]][_0xd4f4('0xa3')]=_0xd4f4('0xc1');}}}catch(_0x52fcc9){logger[_0xd4f4('0x36')](_0xd4f4('0xc5'),_0x1e8147[_0xd4f4('0x3e')],util['inspect'](_0x52fcc9,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xd4f4('0x3b')]['syncMusicOnHoldStart']=function(_0x64ae1d){try{if(this['isNotNull'](_0x64ae1d)){logger[_0xd4f4('0x4f')](_0xd4f4('0xc6'),_0x64ae1d[_0xd4f4('0x3e')],util['inspect'](_0x64ae1d,{'showHidden':![],'depth':null}));if(this[_0xd4f4('0x20')][_0x64ae1d[_0xd4f4('0x3e')]]){if(!_[_0xd4f4('0xc7')](this[_0xd4f4('0x20')][_0x64ae1d[_0xd4f4('0x3e')]]['answertime'])){this[_0xd4f4('0x20')][_0x64ae1d[_0xd4f4('0x3e')]][_0xd4f4('0xc8')]=moment()[_0xd4f4('0x4b')](_0xd4f4('0x63'));logger[_0xd4f4('0x33')](_0xd4f4('0xc9'),_0x64ae1d[_0xd4f4('0x3e')],this[_0xd4f4('0x20')][_0x64ae1d[_0xd4f4('0x3e')]][_0xd4f4('0xc8')]);}}}}catch(_0x158311){logger[_0xd4f4('0x36')](_0xd4f4('0xca'),_0x64ae1d[_0xd4f4('0x3e')],util[_0xd4f4('0x38')](_0x158311,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xd4f4('0x3b')][_0xd4f4('0x32')]=function(_0x586ec6){try{if(this[_0xd4f4('0x39')](_0x586ec6)){logger[_0xd4f4('0x4f')](_0xd4f4('0xcb'),_0x586ec6[_0xd4f4('0x3e')],util[_0xd4f4('0x38')](_0x586ec6,{'showHidden':![],'depth':null}));if(this[_0xd4f4('0x20')][_0x586ec6[_0xd4f4('0x3e')]]){if(!_[_0xd4f4('0xc7')](this[_0xd4f4('0x20')][_0x586ec6[_0xd4f4('0x3e')]][_0xd4f4('0xc8')])){this['channels'][_0x586ec6[_0xd4f4('0x3e')]][_0xd4f4('0xcc')]+=moment()[_0xd4f4('0xcd')](0x0)['diff'](this['channels'][_0x586ec6[_0xd4f4('0x3e')]][_0xd4f4('0xc8')],'seconds');logger[_0xd4f4('0x33')](_0xd4f4('0xce'),_0x586ec6['uniqueid'],this[_0xd4f4('0x20')][_0x586ec6['uniqueid']][_0xd4f4('0xcc')]);delete this[_0xd4f4('0x20')][_0x586ec6[_0xd4f4('0x3e')]][_0xd4f4('0xc8')];}}}}catch(_0x14f335){logger['error'](_0xd4f4('0xcf'),_0x586ec6[_0xd4f4('0x3e')],util['inspect'](_0x14f335,{'showHidden':![],'depth':null}));}};module['exports']=VoiceCallReport;
\ No newline at end of file
+var _0xa7d2=['[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','[%s][voiceCallReport][newstate]\x20event:','answered','answertime','diff','connectedlinename','destinationchannel','toNumber','UserId','membername','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','syncMixMonitorFilename','monitor','endsWith','.wav49','replace','.WAV','monitorFilename','find','monitors','isNil','push','rec','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20event:','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','destination','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','parse','sipcallid','sipcalllinkedid','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','endtime','billableseconds','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','resolve','transferType','undefined','isEmpty','getSettings','then','Action','StopMixMonitor','catch','finally','webbar:stopmonitors','BlindTransfer','blindTransfers','outbound','custom:voiceCallReport','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','origtransferercalleridnum','secondtransfereruniqueid','transfertargetuniqueid','transferconnectedlinenum','origtransfereruniqueid','type','ATTENDED','origtransfererlinkedid','[%s][voiceCallReport][attendedtransfer]','syncBlindTransfer','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','extension','[%s][voiceCallReport][blindtransfer]\x20event:','transfererchannel','transfereruniqueid','BLIND','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','[%s][voiceCallReport][musiconholdstop]','exports','bluebird','moment','util','path','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/channel','../rpc/setting','unknown','not_inuse','invalid','unavailable','ringing','ringinuse','set','queue','agi','dial','playback','voicemail','NO\x20ANSWER','FAILED','BUSY','redis','defaults','socket.io-emitter','channels','agents','syncNewExten','newexten','bind','newchannel','syncNewChannel','newstate','syncNewState','varset','syncVarSet','hangup','syncHangup','newcallerid','syncNewCallerId','attendedtransfer','syncAttendedTransfer','blindtransfer','musiconholdstart','syncMusicOnHoldStart','syncMusicOnHoldStop','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','prototype','isNotNull','isUndefined','emit','info','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','calleridname','calleridnum','[%s][voiceCallReport][newcallerid]\x20event:','inspect','linkedid','uniqueid','merge','pick','keys','context','from-sip','channel','split','exten','xcally-motion-preview','destconnectedlinenum','format','user:%s','name','user:agentconnect','connectedlinenum','[%s][voiceCallReport][newcallerid]','debug','OutgoingSpoolFailed','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','starttime','disposition','channelstate','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','accountcode','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','application','toLowerCase','applicationdata','startsWith','CDR(routeAlias)','appdata','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','seconds','YYYY-MM-DD\x20HH:mm:ss','lastapplication','lastdata','cdr(','match'];(function(_0x30ae5e,_0x391fc4){var _0x1f2e93=function(_0x60307d){while(--_0x60307d){_0x30ae5e['push'](_0x30ae5e['shift']());}};_0x1f2e93(++_0x391fc4);}(_0xa7d2,0x66));var _0x2a7d=function(_0x3e51b5,_0x2466f3){_0x3e51b5=_0x3e51b5-0x0;var _0xbf5ab9=_0xa7d2[_0x3e51b5];return _0xbf5ab9;};'use strict';var BPromise=require(_0x2a7d('0x0'));var _=require('lodash');var moment=require(_0x2a7d('0x1'));var util=require(_0x2a7d('0x2'));var path=require(_0x2a7d('0x3'));var Redis=require(_0x2a7d('0x4'));var config=require(_0x2a7d('0x5'));var logger=require(_0x2a7d('0x6'))(_0x2a7d('0x7'));var ami=require(_0x2a7d('0x8'));var Channel=require(_0x2a7d('0x9'));var RpcSetting=require(_0x2a7d('0xa'));var statusDesc=[_0x2a7d('0xb'),_0x2a7d('0xc'),'inuse','busy',_0x2a7d('0xd'),_0x2a7d('0xe'),_0x2a7d('0xf'),_0x2a7d('0x10'),'onhold'];var applications=[_0x2a7d('0x11'),_0x2a7d('0x12'),_0x2a7d('0x13'),_0x2a7d('0x14'),_0x2a7d('0x15'),_0x2a7d('0x16')];var dispositions=[_0x2a7d('0x17'),_0x2a7d('0x18'),_0x2a7d('0x18'),_0x2a7d('0x17'),'NO\x20ANSWER',_0x2a7d('0x17'),'ANSWERED',_0x2a7d('0x19'),_0x2a7d('0x18'),'FAILED',_0x2a7d('0x18')];var actions={};config[_0x2a7d('0x1a')]=_[_0x2a7d('0x1b')](config[_0x2a7d('0x1a')],{'host':'localhost','port':0x18eb});var io=require(_0x2a7d('0x1c'))(new Redis(config[_0x2a7d('0x1a')]));function VoiceCallReport(_0x580320){this[_0x2a7d('0x1d')]=_0x580320[_0x2a7d('0x1d')];this[_0x2a7d('0x1e')]=_0x580320[_0x2a7d('0x1e')];this['blindTransfers']={};ami['on']('coreshowchannel',this[_0x2a7d('0x1f')]['bind'](this));ami['on'](_0x2a7d('0x20'),this[_0x2a7d('0x1f')][_0x2a7d('0x21')](this));ami['on'](_0x2a7d('0x22'),this[_0x2a7d('0x23')]['bind'](this));ami['on'](_0x2a7d('0x24'),this[_0x2a7d('0x25')]['bind'](this));ami['on'](_0x2a7d('0x26'),this[_0x2a7d('0x27')]['bind'](this));ami['on'](_0x2a7d('0x28'),this[_0x2a7d('0x29')][_0x2a7d('0x21')](this));ami['on'](_0x2a7d('0x2a'),this[_0x2a7d('0x2b')][_0x2a7d('0x21')](this));ami['on'](_0x2a7d('0x2c'),this[_0x2a7d('0x2d')][_0x2a7d('0x21')](this));ami['on'](_0x2a7d('0x2e'),this['syncBlindTransfer']['bind'](this));ami['on'](_0x2a7d('0x2f'),this[_0x2a7d('0x30')][_0x2a7d('0x21')](this));ami['on']('musiconholdstop',this[_0x2a7d('0x31')][_0x2a7d('0x21')](this));try{logger['info'](_0x2a7d('0x32'));ami[_0x2a7d('0x33')]();}catch(_0x1765f5){logger[_0x2a7d('0x34')](_0x2a7d('0x35'),util['inspect'](_0x1765f5,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0x2a7d('0x36')][_0x2a7d('0x37')]=function(_0x2967b4){return _0x2967b4!==null&&!_[_0x2a7d('0x38')](_0x2967b4);};VoiceCallReport['prototype'][_0x2a7d('0x39')]=function(_0x358ecc,_0x1706bc,_0x5b4a99){io['to'](_0x358ecc)[_0x2a7d('0x39')](_0x1706bc,_0x5b4a99);};VoiceCallReport[_0x2a7d('0x36')][_0x2a7d('0x2b')]=function(_0x51c18a){try{if(this[_0x2a7d('0x37')](_0x51c18a)){logger[_0x2a7d('0x3a')](_0x2a7d('0x3b'),_0x51c18a['uniqueid'],_0x51c18a[_0x2a7d('0x3c')],_0x51c18a[_0x2a7d('0x3d')]);logger['debug'](_0x2a7d('0x3e'),_0x51c18a['uniqueid'],util[_0x2a7d('0x3f')](_0x51c18a,{'showHidden':![],'depth':null}));if(_0x51c18a['uniqueid']===_0x51c18a[_0x2a7d('0x40')]){if(!_[_0x2a7d('0x38')](this[_0x2a7d('0x1d')][_0x51c18a[_0x2a7d('0x41')]])){_[_0x2a7d('0x42')](this[_0x2a7d('0x1d')][_0x51c18a[_0x2a7d('0x41')]],_[_0x2a7d('0x43')](_0x51c18a,_[_0x2a7d('0x44')](this[_0x2a7d('0x1d')][_0x51c18a[_0x2a7d('0x41')]])));}}if(_0x51c18a[_0x2a7d('0x45')]===_0x2a7d('0x46')){if(this[_0x2a7d('0x1e')][_0x51c18a[_0x2a7d('0x47')][_0x2a7d('0x48')]('-')[0x0]]){if(_0x51c18a[_0x2a7d('0x49')]==_0x2a7d('0x4a')){this[_0x2a7d('0x1e')][_0x51c18a[_0x2a7d('0x47')][_0x2a7d('0x48')]('-')[0x0]][_0x2a7d('0x4b')]=_0x51c18a['connectedlinenum'];this['emit'](util[_0x2a7d('0x4c')](_0x2a7d('0x4d'),this[_0x2a7d('0x1e')][_0x51c18a[_0x2a7d('0x47')]['split']('-')[0x0]][_0x2a7d('0x4e')]),_0x2a7d('0x4f'),{'destaccountcode':this[_0x2a7d('0x1e')][_0x51c18a[_0x2a7d('0x47')]['split']('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x51c18a[_0x2a7d('0x50')]});}}}}}catch(_0x478594){logger[_0x2a7d('0x34')](_0x2a7d('0x51'),_0x51c18a[_0x2a7d('0x41')],util[_0x2a7d('0x3f')](_0x478594,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x2a7d('0x36')][_0x2a7d('0x23')]=function(_0x9bcac9){try{if(this[_0x2a7d('0x37')](_0x9bcac9)){logger[_0x2a7d('0x52')]('[%s][voiceCallReport][newchannel]\x20event:',_0x9bcac9[_0x2a7d('0x41')],util[_0x2a7d('0x3f')](_0x9bcac9,{'showHidden':![],'depth':null}));if(_0x9bcac9[_0x2a7d('0x41')]===_0x9bcac9[_0x2a7d('0x40')]&&_0x9bcac9[_0x2a7d('0x47')]!=_0x2a7d('0x53')){if(_[_0x2a7d('0x38')](this[_0x2a7d('0x1d')][_0x9bcac9[_0x2a7d('0x41')]])){logger[_0x2a7d('0x3a')](_0x2a7d('0x54'),_0x9bcac9[_0x2a7d('0x41')],_0x9bcac9['context'],_0x9bcac9['exten']);this[_0x2a7d('0x1d')][_0x9bcac9[_0x2a7d('0x41')]]=new Channel();this[_0x2a7d('0x1d')][_0x9bcac9[_0x2a7d('0x41')]][_0x2a7d('0x55')]=moment()[_0x2a7d('0x4c')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x2a7d('0x1d')][_0x9bcac9['uniqueid']][_0x2a7d('0x56')]=dispositions[_['toNumber'](_0x9bcac9[_0x2a7d('0x57')])];_[_0x2a7d('0x42')](this[_0x2a7d('0x1d')][_0x9bcac9[_0x2a7d('0x41')]],_[_0x2a7d('0x43')](_0x9bcac9,_[_0x2a7d('0x44')](this['channels'][_0x9bcac9[_0x2a7d('0x41')]])));if(_0x9bcac9[_0x2a7d('0x45')]==='from-sip'){if(this['agents'][_0x9bcac9[_0x2a7d('0x47')][_0x2a7d('0x48')]('-')[0x0]]){if(_[_0x2a7d('0x38')](this[_0x2a7d('0x1e')][_0x9bcac9['channel'][_0x2a7d('0x48')]('-')[0x0]][_0x2a7d('0x4b')])){this['agents'][_0x9bcac9[_0x2a7d('0x47')][_0x2a7d('0x48')]('-')[0x0]][_0x2a7d('0x4b')]=_0x9bcac9['exten'];logger[_0x2a7d('0x52')](_0x2a7d('0x58'),_0x9bcac9[_0x2a7d('0x41')],util[_0x2a7d('0x3f')]({'destaccountcode':this[_0x2a7d('0x1e')][_0x9bcac9[_0x2a7d('0x47')]['split']('-')[0x0]][_0x2a7d('0x59')],'destconnectedlinenum':_0x9bcac9[_0x2a7d('0x49')]},{'showHidden':![],'depth':null}));this[_0x2a7d('0x39')](util['format'](_0x2a7d('0x4d'),this['agents'][_0x9bcac9[_0x2a7d('0x47')]['split']('-')[0x0]][_0x2a7d('0x4e')]),'user:agentconnect',{'destaccountcode':this['agents'][_0x9bcac9['channel']['split']('-')[0x0]][_0x2a7d('0x59')],'destconnectedlinenum':_0x9bcac9[_0x2a7d('0x49')]});}}}}}}}catch(_0x3402a7){logger['error'](_0x2a7d('0x5a'),_0x9bcac9['uniqueid'],util[_0x2a7d('0x3f')](_0x3402a7,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x2a7d('0x1f')]=function(_0x13791e){try{if(this[_0x2a7d('0x37')](_0x13791e)){logger[_0x2a7d('0x52')](_0x2a7d('0x5b'),_0x13791e[_0x2a7d('0x41')],util['inspect'](_0x13791e,{'showHidden':![],'depth':null}));if(_0x13791e[_0x2a7d('0x41')]===_0x13791e[_0x2a7d('0x40')]&&_0x13791e[_0x2a7d('0x49')]!='h'&&_0x13791e[_0x2a7d('0x47')]!=_0x2a7d('0x53')){_0x13791e[_0x2a7d('0x5c')]=_0x13791e[_0x2a7d('0x5c')][_0x2a7d('0x5d')]();_0x13791e[_0x2a7d('0x5e')]=_0x13791e['appdata']&&_0x13791e['appdata'][_0x2a7d('0x5f')](_0x2a7d('0x60'))?_0x13791e[_0x2a7d('0x61')]:(_0x13791e['appdata']||_0x13791e[_0x2a7d('0x5e')])[_0x2a7d('0x5d')]();logger[_0x2a7d('0x3a')](_0x2a7d('0x62'),_0x13791e['uniqueid'],_0x13791e[_0x2a7d('0x5c')],_0x13791e['applicationdata']);if(_[_0x2a7d('0x38')](this[_0x2a7d('0x1d')][_0x13791e[_0x2a7d('0x41')]])){this['channels'][_0x13791e[_0x2a7d('0x41')]]=new Channel();this[_0x2a7d('0x1d')][_0x13791e[_0x2a7d('0x41')]]['starttime']=_0x13791e[_0x2a7d('0x63')]?moment()['subtract'](moment[_0x2a7d('0x63')](_0x13791e[_0x2a7d('0x63')])[_0x2a7d('0x64')](),_0x2a7d('0x64'))['format'](_0x2a7d('0x65')):moment()['format'](_0x2a7d('0x65'));this['channels'][_0x13791e[_0x2a7d('0x41')]][_0x2a7d('0x56')]=_0x2a7d('0x17');}_[_0x2a7d('0x42')](this['channels'][_0x13791e[_0x2a7d('0x41')]],_[_0x2a7d('0x43')](_0x13791e,_[_0x2a7d('0x44')](this['channels'][_0x13791e[_0x2a7d('0x41')]])));if(_['includes'](applications,_0x13791e[_0x2a7d('0x5c')])){this[_0x2a7d('0x1d')][_0x13791e['uniqueid']][_0x2a7d('0x66')]=_0x13791e['application'];this[_0x2a7d('0x1d')][_0x13791e[_0x2a7d('0x41')]][_0x2a7d('0x67')]=_0x13791e['applicationdata'];if(_0x13791e[_0x2a7d('0x5c')]===_0x2a7d('0x11')&&_[_0x2a7d('0x5f')](_0x13791e[_0x2a7d('0x5e')][_0x2a7d('0x5d')](),_0x2a7d('0x68'))){var _0x14b31b=_0x13791e[_0x2a7d('0x5e')][_0x2a7d('0x48')]('=');var _0xcc1a49=_0x14b31b[0x0][_0x2a7d('0x5d')]()[_0x2a7d('0x69')](/cdr\((.*)\)/);if(_0xcc1a49){this[_0x2a7d('0x1d')][_0x13791e[_0x2a7d('0x41')]][_0xcc1a49[0x1]]=_0x14b31b[0x1];}}else if(_0x13791e['application']===_0x2a7d('0x12')){this[_0x2a7d('0x1d')][_0x13791e[_0x2a7d('0x41')]]['queue']=_0x13791e[_0x2a7d('0x5e')][_0x2a7d('0x48')](',')[0x0];}}}}}catch(_0x54a9e9){logger[_0x2a7d('0x34')]('[%s][voiceCallReport][newexten]',_0x13791e[_0x2a7d('0x41')],util['inspect'](_0x54a9e9,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x2a7d('0x36')]['syncNewState']=function(_0x35541d){try{if(this['isNotNull'](_0x35541d)){logger[_0x2a7d('0x3a')](_0x2a7d('0x6a'),_0x35541d['uniqueid'],_0x35541d[_0x2a7d('0x40')],_0x35541d[_0x2a7d('0x3c')],_0x35541d['calleridnum']);logger[_0x2a7d('0x52')](_0x2a7d('0x6b'),_0x35541d[_0x2a7d('0x41')],util[_0x2a7d('0x3f')](_0x35541d,{'showHidden':![],'depth':null}));if(_0x35541d[_0x2a7d('0x41')]!==_0x35541d[_0x2a7d('0x40')]){if(this['channels'][_0x35541d['linkedid']]){if(_0x35541d['channelstate']==='6'){if(!this['channels'][_0x35541d[_0x2a7d('0x40')]]['answered']){var _0x30c0ae=moment();this[_0x2a7d('0x1d')][_0x35541d[_0x2a7d('0x40')]][_0x2a7d('0x6c')]=!![];this[_0x2a7d('0x1d')][_0x35541d['linkedid']][_0x2a7d('0x6d')]=_0x30c0ae['format']('YYYY-MM-DD\x20HH:mm:ss');if(this[_0x2a7d('0x1d')][_0x35541d['linkedid']][_0x2a7d('0x55')]){this['channels'][_0x35541d['linkedid']]['holdtime']=_0x30c0ae[_0x2a7d('0x6e')](this['channels'][_0x35541d[_0x2a7d('0x40')]][_0x2a7d('0x55')],_0x2a7d('0x64'));}}this[_0x2a7d('0x1d')][_0x35541d[_0x2a7d('0x40')]]['linkedid']=_0x35541d[_0x2a7d('0x41')];if(_0x35541d[_0x2a7d('0x3d')]!==_0x2a7d('0x4a')){this['channels'][_0x35541d['linkedid']]['connectedlinenum']=_0x35541d[_0x2a7d('0x3d')];}this[_0x2a7d('0x1d')][_0x35541d[_0x2a7d('0x40')]][_0x2a7d('0x6f')]=_0x35541d[_0x2a7d('0x3c')];this['channels'][_0x35541d[_0x2a7d('0x40')]][_0x2a7d('0x70')]=_0x35541d[_0x2a7d('0x47')];this['channels'][_0x35541d[_0x2a7d('0x40')]][_0x2a7d('0x56')]=dispositions[_[_0x2a7d('0x71')](_0x35541d['channelstate'])];if(this['agents'][_0x35541d['channel']['split']('-')[0x0]]){this['channels'][_0x35541d[_0x2a7d('0x40')]][_0x2a7d('0x72')]=this[_0x2a7d('0x1e')][_0x35541d[_0x2a7d('0x47')][_0x2a7d('0x48')]('-')[0x0]]['id'];this[_0x2a7d('0x1d')][_0x35541d[_0x2a7d('0x40')]][_0x2a7d('0x73')]=this[_0x2a7d('0x1e')][_0x35541d[_0x2a7d('0x47')][_0x2a7d('0x48')]('-')[0x0]][_0x2a7d('0x4e')];}}}}else{if(this[_0x2a7d('0x1d')][_0x35541d[_0x2a7d('0x41')]]){if(_0x35541d['channelstate']==='6'){if(this[_0x2a7d('0x1e')][_0x35541d['channel'][_0x2a7d('0x48')]('-')[0x0]]){this['channels'][_0x35541d['uniqueid']]['UserId']=this[_0x2a7d('0x1e')][_0x35541d[_0x2a7d('0x47')][_0x2a7d('0x48')]('-')[0x0]]['id'];this[_0x2a7d('0x1d')][_0x35541d[_0x2a7d('0x41')]][_0x2a7d('0x73')]=this[_0x2a7d('0x1e')][_0x35541d[_0x2a7d('0x47')][_0x2a7d('0x48')]('-')[0x0]][_0x2a7d('0x4e')];}}}}if(_0x35541d[_0x2a7d('0x57')]==='6'&&_0x35541d[_0x2a7d('0x45')]==='from-sip'){if(this['agents'][_0x35541d[_0x2a7d('0x47')][_0x2a7d('0x48')]('-')[0x0]]){this[_0x2a7d('0x1e')][_0x35541d[_0x2a7d('0x47')][_0x2a7d('0x48')]('-')[0x0]][_0x2a7d('0x4b')]=_0x35541d[_0x2a7d('0x49')];var _0x222fbd;if(this[_0x2a7d('0x1d')][_0x35541d[_0x2a7d('0x41')]])_0x222fbd=this['channels'][_0x35541d[_0x2a7d('0x41')]][_0x2a7d('0x74')];else if(this['channels'][_0x35541d[_0x2a7d('0x40')]])_0x222fbd=this['channels'][_0x35541d[_0x2a7d('0x40')]][_0x2a7d('0x74')];logger[_0x2a7d('0x52')](_0x2a7d('0x75'),_0x35541d['uniqueid'],util[_0x2a7d('0x3f')]({'destaccountcode':this[_0x2a7d('0x1e')][_0x35541d[_0x2a7d('0x47')][_0x2a7d('0x48')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x35541d[_0x2a7d('0x49')],'routealias':_0x222fbd},{'showHidden':![],'depth':null}));this[_0x2a7d('0x39')](util[_0x2a7d('0x4c')]('user:%s',this['agents'][_0x35541d[_0x2a7d('0x47')]['split']('-')[0x0]][_0x2a7d('0x4e')]),'user:agentconnect',{'destaccountcode':this[_0x2a7d('0x1e')][_0x35541d['channel'][_0x2a7d('0x48')]('-')[0x0]][_0x2a7d('0x59')],'destconnectedlinenum':_0x35541d['exten'],'routealias':_0x222fbd});}}}}catch(_0x27305e){logger[_0x2a7d('0x34')]('[%s][voiceCallReport][newstate]',_0x35541d[_0x2a7d('0x41')],util['inspect'](_0x27305e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x2a7d('0x36')][_0x2a7d('0x76')]=function(_0x509e76,_0x2a650f){try{if(this[_0x2a7d('0x1d')][_0x509e76]){logger[_0x2a7d('0x3a')]('[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s',_0x509e76,_0x2a650f);this[_0x2a7d('0x1d')][_0x509e76][_0x2a7d('0x77')]=!![];if(_[_0x2a7d('0x78')](_0x2a650f,_0x2a7d('0x79'))){_0x2a650f=_0x2a650f[_0x2a7d('0x7a')](_0x2a7d('0x79'),_0x2a7d('0x7b'));}this[_0x2a7d('0x1d')][_0x509e76][_0x2a7d('0x7c')]=_0x2a650f;var _0x2c6b84=_[_0x2a7d('0x7d')](this['channels'][_0x509e76][_0x2a7d('0x7e')],{'filename':_0x2a650f});if(_[_0x2a7d('0x7f')](_0x2c6b84)){this[_0x2a7d('0x1d')][_0x509e76][_0x2a7d('0x7e')][_0x2a7d('0x80')]({'filename':_0x2a650f,'createdAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'mixmonitorid':'','status':_0x2a7d('0x81')});}}}catch(_0x49a332){logger['error'](_0x2a7d('0x82'),_0x509e76,util['inspect'](_0x49a332,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x2a7d('0x36')][_0x2a7d('0x27')]=function(_0x706cae){try{if(this['isNotNull'](_0x706cae)){logger['debug'](_0x2a7d('0x83'),_0x706cae[_0x2a7d('0x41')],util[_0x2a7d('0x3f')](_0x706cae,{'showHidden':![],'depth':null}));if(this[_0x2a7d('0x1d')][_0x706cae[_0x2a7d('0x41')]]&&_0x706cae[_0x2a7d('0x47')]!='OutgoingSpoolFailed'){if(this[_0x2a7d('0x37')](_0x706cae[_0x2a7d('0x84')])){if(this[_0x2a7d('0x37')](_0x706cae[_0x2a7d('0x84')][_0x2a7d('0x85')])){logger[_0x2a7d('0x3a')](_0x2a7d('0x86'),_0x706cae[_0x2a7d('0x41')],_0x706cae[_0x2a7d('0x87')]);this['syncMixMonitorFilename'](_0x706cae[_0x2a7d('0x41')],_0x706cae['value']);}else if(this[_0x2a7d('0x37')](_0x706cae['variable'][_0x2a7d('0x88')])){logger['info'](_0x2a7d('0x89'),_0x706cae['uniqueid'],_0x706cae['value']);this[_0x2a7d('0x1d')][_0x706cae[_0x2a7d('0x41')]][_0x2a7d('0x3d')]=_0x706cae['value'];}else if(this[_0x2a7d('0x37')](_0x706cae['variable'][_0x2a7d('0x8a')])){logger[_0x2a7d('0x3a')](_0x2a7d('0x8b'),_0x706cae['uniqueid'],_0x706cae['value']);this[_0x2a7d('0x1d')][_0x706cae[_0x2a7d('0x41')]][_0x2a7d('0x8c')]=_0x706cae[_0x2a7d('0x87')];}else if(this[_0x2a7d('0x37')](_0x706cae[_0x2a7d('0x84')][_0x2a7d('0x8d')])){logger[_0x2a7d('0x3a')](_0x2a7d('0x8e'),_0x706cae[_0x2a7d('0x41')],_0x706cae[_0x2a7d('0x87')]);this['channels'][_0x706cae['uniqueid']]['type']=_0x706cae[_0x2a7d('0x87')];}else if(this['isNotNull'](_0x706cae[_0x2a7d('0x84')][_0x2a7d('0x8f')])){logger[_0x2a7d('0x3a')](_0x2a7d('0x90'),_0x706cae[_0x2a7d('0x41')],_0x706cae[_0x2a7d('0x87')]['split'](',')[0x0]);this[_0x2a7d('0x1d')][_0x706cae[_0x2a7d('0x41')]]['queue']=_0x706cae[_0x2a7d('0x87')]['split'](',')[0x0];}else if(this['isNotNull'](_0x706cae[_0x2a7d('0x84')]['xmd-originatecalleridnum'])){logger[_0x2a7d('0x3a')](_0x2a7d('0x91'),_0x706cae[_0x2a7d('0x41')],_0x706cae[_0x2a7d('0x87')]);this[_0x2a7d('0x1d')][_0x706cae['uniqueid']][_0x2a7d('0x92')]=_0x706cae['value'];}else if(this[_0x2a7d('0x37')](_0x706cae['variable']['xmd-destination'])){logger['info'](_0x2a7d('0x93'),_0x706cae[_0x2a7d('0x41')],_0x706cae[_0x2a7d('0x87')]);this[_0x2a7d('0x1d')][_0x706cae[_0x2a7d('0x41')]][_0x2a7d('0x94')]=_0x706cae[_0x2a7d('0x87')];}else if(this[_0x2a7d('0x37')](_0x706cae[_0x2a7d('0x84')][_0x2a7d('0x95')])){logger[_0x2a7d('0x3a')](_0x2a7d('0x96'),_0x706cae[_0x2a7d('0x41')],_0x706cae[_0x2a7d('0x87')]);this[_0x2a7d('0x1d')][_0x706cae[_0x2a7d('0x41')]][_0x2a7d('0x97')]=_0x706cae[_0x2a7d('0x87')];}else if(this[_0x2a7d('0x37')](_0x706cae[_0x2a7d('0x84')][_0x2a7d('0x98')])){logger[_0x2a7d('0x3a')](_0x2a7d('0x99'),_0x706cae['uniqueid'],_0x706cae[_0x2a7d('0x87')]);this['channels'][_0x706cae[_0x2a7d('0x41')]][_0x2a7d('0x12')]=_0x706cae[_0x2a7d('0x87')];}else if(this[_0x2a7d('0x37')](_0x706cae['variable']['sipcallid'])){logger[_0x2a7d('0x3a')](_0x2a7d('0x9a'),_0x706cae[_0x2a7d('0x41')],_0x706cae['value']);this[_0x2a7d('0x1d')][_0x706cae[_0x2a7d('0x41')]]['sipcalluniqueid']=_0x706cae['value'];}}}else if(this['isNotNull'](_0x706cae['variable'][_0x2a7d('0x85')])){if(_0x706cae[_0x2a7d('0x87')]){var _0x2095ab=path[_0x2a7d('0x9b')](_0x706cae[_0x2a7d('0x87')])[_0x2a7d('0x4e')];logger[_0x2a7d('0x3a')]('[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s',_0x2095ab,_0x706cae['value']);this['syncMixMonitorFilename'](_0x2095ab,_0x706cae['value']);}}else if(this[_0x2a7d('0x1d')][_0x706cae['linkedid']]){if(this[_0x2a7d('0x37')](_0x706cae[_0x2a7d('0x84')])){if(this[_0x2a7d('0x37')](_0x706cae[_0x2a7d('0x84')][_0x2a7d('0x9c')])){logger['info'](_0x2a7d('0x9a'),_0x706cae[_0x2a7d('0x40')],_0x706cae[_0x2a7d('0x87')]);this['channels'][_0x706cae[_0x2a7d('0x40')]][_0x2a7d('0x9d')]=_0x706cae[_0x2a7d('0x87')];}}}}}catch(_0x518b52){logger['error']('[%s][voiceCallReport][varset]',_0x706cae['uniqueid'],util['inspect'](_0x518b52,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x2a7d('0x36')][_0x2a7d('0x29')]=function(_0x47dde2){try{if(this[_0x2a7d('0x37')](_0x47dde2)){logger[_0x2a7d('0x52')](_0x2a7d('0x9e'),_0x47dde2[_0x2a7d('0x41')],util['inspect'](_0x47dde2,{'showHidden':![],'depth':null}));if(this[_0x2a7d('0x1d')][_0x47dde2[_0x2a7d('0x41')]]){logger[_0x2a7d('0x3a')](_0x2a7d('0x9f'),_0x47dde2['uniqueid'],_0x47dde2[_0x2a7d('0xa0')]);var _0x2374c2=moment();this[_0x2a7d('0x1d')][_0x47dde2[_0x2a7d('0x41')]][_0x2a7d('0xa1')]=_0x2374c2['format'](_0x2a7d('0x65'));this[_0x2a7d('0x1d')][_0x47dde2['uniqueid']][_0x2a7d('0x63')]=_0x2374c2[_0x2a7d('0x6e')](this[_0x2a7d('0x1d')][_0x47dde2[_0x2a7d('0x41')]]['starttime'],_0x2a7d('0x64'));if(this[_0x2a7d('0x1d')][_0x47dde2[_0x2a7d('0x41')]][_0x2a7d('0x6c')]){this[_0x2a7d('0x1d')][_0x47dde2[_0x2a7d('0x41')]]['billableseconds']=_0x2374c2[_0x2a7d('0x6e')](this[_0x2a7d('0x1d')][_0x47dde2[_0x2a7d('0x41')]][_0x2a7d('0x6d')],_0x2a7d('0x64'));this[_0x2a7d('0x1d')][_0x47dde2[_0x2a7d('0x41')]]['holdtime']=this['channels'][_0x47dde2[_0x2a7d('0x41')]][_0x2a7d('0x63')]-this[_0x2a7d('0x1d')][_0x47dde2['uniqueid']][_0x2a7d('0xa2')];}if(_0x47dde2[_0x2a7d('0x45')]==='from-sip'){if(this['agents'][_0x47dde2[_0x2a7d('0x47')]['split']('-')[0x0]]){this[_0x2a7d('0x1e')][_0x47dde2[_0x2a7d('0x47')][_0x2a7d('0x48')]('-')[0x0]]=_['omit'](this[_0x2a7d('0x1e')][_0x47dde2[_0x2a7d('0x47')][_0x2a7d('0x48')]('-')[0x0]],['destconnectedlinenum']);logger[_0x2a7d('0x52')](_0x2a7d('0xa3'),_0x47dde2[_0x2a7d('0x41')],util[_0x2a7d('0x3f')]({'id':this[_0x2a7d('0x1e')][_0x47dde2['channel'][_0x2a7d('0x48')]('-')[0x0]]['id'],'destaccountcode':this[_0x2a7d('0x1e')][_0x47dde2['channel'][_0x2a7d('0x48')]('-')[0x0]]['accountcode']},{'showHidden':![],'depth':null}));this['emit'](util[_0x2a7d('0x4c')](_0x2a7d('0x4d'),this[_0x2a7d('0x1e')][_0x47dde2[_0x2a7d('0x47')][_0x2a7d('0x48')]('-')[0x0]][_0x2a7d('0x4e')]),'user:agentcomplete',{'id':this['agents'][_0x47dde2[_0x2a7d('0x47')][_0x2a7d('0x48')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x47dde2[_0x2a7d('0x47')][_0x2a7d('0x48')]('-')[0x0]][_0x2a7d('0x59')]});}}var _0x15eeb4=this;Promise[_0x2a7d('0xa4')]()['then'](function(){var _0x11e153=_0x15eeb4[_0x2a7d('0x1d')][_0x47dde2[_0x2a7d('0x41')]];if(typeof _0x11e153[_0x2a7d('0xa5')]===_0x2a7d('0xa6'))return;if(_[_0x2a7d('0xa7')](_0x11e153[_0x2a7d('0x7e')]))return;return RpcSetting[_0x2a7d('0xa8')]()[_0x2a7d('0xa9')](function(_0x2ac7f8){if(!_0x2ac7f8['stopRecordingOnTransfer'])return;return Promise[_0x2a7d('0xa4')]()[_0x2a7d('0xa9')](function(){return ami[_0x2a7d('0xaa')]({'action':_0x2a7d('0xab'),'channel':_0x11e153[_0x2a7d('0x47')]})['catch'](function(){});})[_0x2a7d('0xa9')](function(){return ami[_0x2a7d('0xaa')]({'action':_0x2a7d('0xab'),'channel':_0x11e153[_0x2a7d('0x70')]})[_0x2a7d('0xac')](function(){})[_0x2a7d('0xad')](function(){var _0x38e5a7=_0x15eeb4[_0x2a7d('0x1e')][_0x11e153[_0x2a7d('0x70')][_0x2a7d('0x48')]('-')[0x0]];if(!_0x38e5a7)return;io[_0x2a7d('0x39')](_0x2a7d('0xae'),{'agentId':_0x38e5a7['id'],'uniqueid':_0x11e153['uniqueid']});});});});})[_0x2a7d('0xa9')](function(){if(_0x47dde2['event']===_0x2a7d('0xaf')){_0x15eeb4[_0x2a7d('0xb0')][_0x47dde2[_0x2a7d('0x41')]]=_0x15eeb4[_0x2a7d('0x1d')][_0x47dde2['uniqueid']];}else{if(_0x15eeb4[_0x2a7d('0x1d')][_0x47dde2[_0x2a7d('0x41')]]['type']===_0x2a7d('0xb1')&&_0x15eeb4[_0x2a7d('0xb0')][_0x47dde2[_0x2a7d('0x41')]]){_0x15eeb4[_0x2a7d('0x1d')][_0x47dde2[_0x2a7d('0x41')]]['uniqueid']=[_0x15eeb4['channels'][_0x47dde2['uniqueid']][_0x2a7d('0x40')],_0x15eeb4[_0x2a7d('0x1d')][_0x47dde2['uniqueid']][_0x2a7d('0x40')]=_0x15eeb4[_0x2a7d('0x1d')][_0x47dde2['uniqueid']][_0x2a7d('0x41')]][0x0];delete _0x15eeb4[_0x2a7d('0xb0')][_0x47dde2[_0x2a7d('0x41')]];}}logger['debug']('[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:',_0x47dde2[_0x2a7d('0x41')],util[_0x2a7d('0x3f')](_0x15eeb4[_0x2a7d('0x1d')][_0x47dde2[_0x2a7d('0x41')]],{'showHidden':![],'depth':null}));ami['emit'](_0x2a7d('0xb2'),_0x15eeb4[_0x2a7d('0x1d')][_0x47dde2[_0x2a7d('0x41')]]);delete _0x15eeb4['channels'][_0x47dde2[_0x2a7d('0x41')]];});}}}catch(_0x283769){logger[_0x2a7d('0x34')]('[%s][voiceCallReport][hangup]',_0x47dde2['uniqueid'],util['inspect'](_0x283769,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x2a7d('0x36')]['syncAttendedTransfer']=function(_0x222f08){try{if(this['isNotNull'](_0x222f08)){logger[_0x2a7d('0x3a')]('[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x222f08['uniqueid'],_0x222f08['origtransferercalleridnum'],_0x222f08[_0x2a7d('0xb3')]);logger['debug'](_0x2a7d('0xb4'),_0x222f08['uniqueid'],util['inspect'](_0x222f08,{'showHidden':![],'depth':null}));if(this[_0x2a7d('0x1d')][_0x222f08[_0x2a7d('0xb5')]]){this[_0x2a7d('0x1d')][_0x222f08['transfereeuniqueid']][_0x2a7d('0xb6')]=_0x222f08[_0x2a7d('0xb7')];this[_0x2a7d('0x1d')][_0x222f08[_0x2a7d('0xb5')]]['transferconnectedlinenum']=_0x222f08[_0x2a7d('0xb3')];if(this[_0x2a7d('0x1d')][_0x222f08[_0x2a7d('0xb8')]]){var _0xb43ca5=this[_0x2a7d('0x1d')][_0x222f08[_0x2a7d('0xb8')]];this[_0x2a7d('0x1d')][_0x222f08[_0x2a7d('0xb8')]]=this['channels'][_0x222f08[_0x2a7d('0xb5')]];this[_0x2a7d('0x1d')][_0x222f08['transfereeuniqueid']]=_0xb43ca5;}}else if(this['channels'][_0x222f08[_0x2a7d('0xb9')]]){this[_0x2a7d('0x1d')][_0x222f08[_0x2a7d('0xb9')]][_0x2a7d('0xb6')]=_0x222f08[_0x2a7d('0xb7')];this['channels'][_0x222f08[_0x2a7d('0xb9')]][_0x2a7d('0xba')]=_0x222f08[_0x2a7d('0xb3')];if(this[_0x2a7d('0x1d')][_0x222f08['origtransfereruniqueid']]){var _0xb43ca5=this[_0x2a7d('0x1d')][_0x222f08[_0x2a7d('0xbb')]];this['channels'][_0x222f08[_0x2a7d('0xbb')]]=this[_0x2a7d('0x1d')][_0x222f08[_0x2a7d('0xb9')]];this[_0x2a7d('0x1d')][_0x222f08['transfertargetuniqueid']]=_0xb43ca5;}}if((this[_0x2a7d('0x1d')][_0x222f08['origtransfereruniqueid']]||this[_0x2a7d('0x1d')][_0x222f08['origtransfererlinkedid']])&&this['channels'][_0x222f08[_0x2a7d('0xb8')]]){var _0x58a1e1=_['some']([this[_0x2a7d('0x1d')][_0x222f08[_0x2a7d('0xbb')]],this['channels'][_0x222f08['origtransfererlinkedid']],this[_0x2a7d('0x1d')][_0x222f08[_0x2a7d('0xb8')]]],function(_0x198402){return _0x198402&&_0x198402[_0x2a7d('0xbc')]===_0x2a7d('0xb1')&&_0x198402['routeid'];});if(_0x58a1e1){if(this['channels'][_0x222f08[_0x2a7d('0xbb')]])this['channels'][_0x222f08[_0x2a7d('0xbb')]][_0x2a7d('0xa5')]=_0x2a7d('0xbd');if(this[_0x2a7d('0x1d')][_0x222f08[_0x2a7d('0xbe')]])this[_0x2a7d('0x1d')][_0x222f08[_0x2a7d('0xbe')]][_0x2a7d('0xa5')]=_0x2a7d('0xbd');this[_0x2a7d('0x1d')][_0x222f08[_0x2a7d('0xb8')]][_0x2a7d('0xa5')]='ATTENDED';}}}}catch(_0x51a0b1){logger[_0x2a7d('0x34')](_0x2a7d('0xbf'),_0x222f08[_0x2a7d('0x41')],util[_0x2a7d('0x3f')](_0x51a0b1,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x2a7d('0x36')][_0x2a7d('0xc0')]=function(_0x2c5dfb){try{if(this[_0x2a7d('0x37')](_0x2c5dfb)){logger['info'](_0x2a7d('0xc1'),_0x2c5dfb[_0x2a7d('0x41')],_0x2c5dfb[_0x2a7d('0xc2')],_0x2c5dfb[_0x2a7d('0xc3')]);logger[_0x2a7d('0x52')](_0x2a7d('0xc4'),_0x2c5dfb[_0x2a7d('0x41')],util[_0x2a7d('0x3f')](_0x2c5dfb,{'showHidden':![],'depth':null}));if(this[_0x2a7d('0x1d')][_0x2c5dfb['transfereeuniqueid']]){this['channels'][_0x2c5dfb[_0x2a7d('0xb5')]][_0x2a7d('0xb6')]=_0x2c5dfb['transfereecalleridnum'];this[_0x2a7d('0x1d')][_0x2c5dfb['transfereeuniqueid']][_0x2a7d('0xba')]=_0x2c5dfb[_0x2a7d('0xc3')];this['channels'][_0x2c5dfb[_0x2a7d('0xb5')]][_0x2a7d('0xa5')]='BLIND';this[_0x2a7d('0x29')]({'event':_0x2a7d('0xaf'),'uniqueid':_0x2c5dfb[_0x2a7d('0xb5')],'context':_0x2c5dfb[_0x2a7d('0x45')],'channel':_0x2c5dfb[_0x2a7d('0xc5')]});}else{this[_0x2a7d('0x1d')][_0x2c5dfb[_0x2a7d('0xc6')]][_0x2a7d('0xa5')]=_0x2a7d('0xc7');}}}catch(_0x5a6359){logger[_0x2a7d('0x34')]('[%s][voiceCallReport][blindtransfer]',_0x2c5dfb['uniqueid'],util[_0x2a7d('0x3f')](_0x5a6359,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x2a7d('0x36')][_0x2a7d('0x30')]=function(_0x332d13){try{if(this[_0x2a7d('0x37')](_0x332d13)){logger[_0x2a7d('0x52')](_0x2a7d('0xc8'),_0x332d13[_0x2a7d('0x41')],util[_0x2a7d('0x3f')](_0x332d13,{'showHidden':![],'depth':null}));if(this[_0x2a7d('0x1d')][_0x332d13['uniqueid']]){if(!_[_0x2a7d('0x7f')](this[_0x2a7d('0x1d')][_0x332d13[_0x2a7d('0x41')]][_0x2a7d('0x6d')])){this['channels'][_0x332d13[_0x2a7d('0x41')]][_0x2a7d('0xc9')]=moment()[_0x2a7d('0x4c')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0x2a7d('0x3a')](_0x2a7d('0xca'),_0x332d13[_0x2a7d('0x41')],this[_0x2a7d('0x1d')][_0x332d13[_0x2a7d('0x41')]]['mohstarttime']);}}}}catch(_0x1ddf16){logger[_0x2a7d('0x34')](_0x2a7d('0xcb'),_0x332d13[_0x2a7d('0x41')],util[_0x2a7d('0x3f')](_0x1ddf16,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x2a7d('0x31')]=function(_0x63f4){try{if(this[_0x2a7d('0x37')](_0x63f4)){logger[_0x2a7d('0x52')](_0x2a7d('0xcc'),_0x63f4[_0x2a7d('0x41')],util[_0x2a7d('0x3f')](_0x63f4,{'showHidden':![],'depth':null}));if(this[_0x2a7d('0x1d')][_0x63f4[_0x2a7d('0x41')]]){if(!_[_0x2a7d('0x7f')](this[_0x2a7d('0x1d')][_0x63f4[_0x2a7d('0x41')]][_0x2a7d('0xc9')])){this['channels'][_0x63f4['uniqueid']][_0x2a7d('0xcd')]+=moment()['milliseconds'](0x0)['diff'](this[_0x2a7d('0x1d')][_0x63f4['uniqueid']][_0x2a7d('0xc9')],_0x2a7d('0x64'));logger[_0x2a7d('0x3a')]('[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s',_0x63f4[_0x2a7d('0x41')],this[_0x2a7d('0x1d')][_0x63f4['uniqueid']][_0x2a7d('0xcd')]);delete this[_0x2a7d('0x1d')][_0x63f4['uniqueid']]['mohstarttime'];}}}}catch(_0x24e18e){logger[_0x2a7d('0x34')](_0x2a7d('0xce'),_0x63f4[_0x2a7d('0x41')],util[_0x2a7d('0x3f')](_0x24e18e,{'showHidden':![],'depth':null}));}};module[_0x2a7d('0xcf')]=VoiceCallReport;
\ No newline at end of file
index 8be3766..a599dd9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb417=['voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','syncNewExten','toLowerCase','set','applicationdata','appdata','startsWith','cdr(','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','application','split','match','exports','moment','util','ioredis','../../../config/environment','../../../config/logger','redis','defaults','socket.io-emitter','channels','outboundChannels','applications','dialbegin','syncDialBegin','dialend','syncDialEnd','bind','varset','syncVarSet','newexten','syncHangup','isUndefined','prototype','emit','isNotNull','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','merge','substring','channel','lastIndexOf','omit','event','privilege','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','interface','inspect','voice:outbound','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','[%s][voiceDialReport][dialbegin]','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','format','lastevent','info','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','voice_outbound_channel:save','error','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','variable','value','outboundrouteid','voice','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberpenalty','includes','variables','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','YYYY-MM-DD\x20HH:mm:ss','starttime','seconds','complete','answered','holdtime','diff','billableseconds','outbound','sumBillable','sumDuration','duration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:dialend'];(function(_0x37bd26,_0x5ad346){var _0xe83dc4=function(_0x1ac229){while(--_0x1ac229){_0x37bd26['push'](_0x37bd26['shift']());}};_0xe83dc4(++_0x5ad346);}(_0xb417,0x175));var _0x7b41=function(_0x13c0d2,_0x51d02b){_0x13c0d2=_0x13c0d2-0x0;var _0x386057=_0xb417[_0x13c0d2];return _0x386057;};'use strict';var _=require('lodash');var moment=require(_0x7b41('0x0'));var util=require(_0x7b41('0x1'));var Redis=require(_0x7b41('0x2'));var config=require(_0x7b41('0x3'));var logger=require(_0x7b41('0x4'))('ami');var ami=require('../ami');config[_0x7b41('0x5')]=_[_0x7b41('0x6')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x7b41('0x7'))(new Redis(config[_0x7b41('0x5')]));function VoiceDialReport(_0x48a100){this[_0x7b41('0x8')]=_0x48a100[_0x7b41('0x9')];this['outbound']=_0x48a100['outbound'];this[_0x7b41('0xa')]={};this['variables']={};ami['on'](_0x7b41('0xb'),this[_0x7b41('0xc')]['bind'](this));ami['on'](_0x7b41('0xd'),this[_0x7b41('0xe')][_0x7b41('0xf')](this));ami['on'](_0x7b41('0x10'),this[_0x7b41('0x11')][_0x7b41('0xf')](this));ami['on'](_0x7b41('0x12'),this['syncNewExten'][_0x7b41('0xf')](this));ami['on']('hangup',this[_0x7b41('0x13')][_0x7b41('0xf')](this));}VoiceDialReport['prototype']['isNotNull']=function(_0x3c45aa){return _0x3c45aa!==null&&!_[_0x7b41('0x14')](_0x3c45aa);};VoiceDialReport[_0x7b41('0x15')][_0x7b41('0x16')]=function(_0x3d9f00,_0x5de998,_0x208af7){io['to'](_0x3d9f00)['emit'](_0x5de998,_0x208af7);};VoiceDialReport['prototype']['syncDialBegin']=function(_0x392959){try{if(this[_0x7b41('0x17')](_0x392959)){logger[_0x7b41('0x18')](_0x7b41('0x19'),_0x392959[_0x7b41('0x1a')],util['inspect'](_0x392959,{'showHidden':![],'depth':null}));if(this[_0x7b41('0x8')][_0x392959[_0x7b41('0x1a')]]){_[_0x7b41('0x1b')](this[_0x7b41('0x8')][_0x392959[_0x7b41('0x1a')]],{'starttime':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'lastevent':'called','interface':_0x392959['channel'][_0x7b41('0x1c')](0x0,_0x392959[_0x7b41('0x1d')][_0x7b41('0x1e')]('-')),'membername':_0x392959[_0x7b41('0x1d')][_0x7b41('0x1c')](_0x392959[_0x7b41('0x1d')][_0x7b41('0x1e')]('/')+0x1,_0x392959[_0x7b41('0x1d')][_0x7b41('0x1e')]('-'))},_[_0x7b41('0x1f')](_0x392959,[_0x7b41('0x20'),_0x7b41('0x21')]));logger['info'](_0x7b41('0x22'),_0x392959[_0x7b41('0x1a')],this['channels'][_0x392959[_0x7b41('0x1a')]][_0x7b41('0x23')],this[_0x7b41('0x8')][_0x392959[_0x7b41('0x1a')]][_0x7b41('0x24')]);logger['debug']('[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:',_0x392959['uniqueid'],util[_0x7b41('0x25')](this[_0x7b41('0x8')][_0x392959[_0x7b41('0x1a')]],{'showHidden':![],'depth':null}));if(this[_0x7b41('0xa')][_0x392959[_0x7b41('0x1a')]])_[_0x7b41('0x1b')](this['channels'][_0x392959[_0x7b41('0x1a')]],this[_0x7b41('0xa')][_0x392959[_0x7b41('0x1a')]]);this[_0x7b41('0x16')](_0x7b41('0x26'),'voice_outbound_channel:save',this[_0x7b41('0x8')][_0x392959[_0x7b41('0x1a')]]);logger['debug'](_0x7b41('0x27'),_0x392959[_0x7b41('0x1a')],util[_0x7b41('0x25')](this[_0x7b41('0x8')][_0x392959[_0x7b41('0x1a')]],{'showHidden':![],'depth':null}));ami['emit']('custom:dialbegin',this['channels'][_0x392959[_0x7b41('0x1a')]]);}}}catch(_0xed38f1){logger['error'](_0x7b41('0x28'),_0x392959['uniqueid'],util[_0x7b41('0x25')](_0xed38f1,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype']['syncDialEnd']=function(_0x54eba8){try{if(this['isNotNull'](_0x54eba8)){logger['debug'](_0x7b41('0x29'),_0x54eba8[_0x7b41('0x1a')],util[_0x7b41('0x25')](_0x54eba8,{'showHidden':![],'depth':null}));if(this[_0x7b41('0x8')][_0x54eba8[_0x7b41('0x1a')]]){this['channels'][_0x54eba8[_0x7b41('0x1a')]][_0x7b41('0x2a')]=_0x54eba8[_0x7b41('0x2a')];if(_0x54eba8[_0x7b41('0x2a')]===_0x7b41('0x2b')){this[_0x7b41('0x8')][_0x54eba8[_0x7b41('0x1a')]][_0x7b41('0x2c')]=_0x54eba8['connectedlinenum'];this[_0x7b41('0x8')][_0x54eba8[_0x7b41('0x1a')]][_0x7b41('0x2d')]=_0x54eba8[_0x7b41('0x2d')];this[_0x7b41('0x8')][_0x54eba8['uniqueid']][_0x7b41('0x2e')]=moment()[_0x7b41('0x2f')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x7b41('0x8')][_0x54eba8[_0x7b41('0x1a')]][_0x7b41('0x30')]='connect';logger[_0x7b41('0x31')](_0x7b41('0x32'),_0x54eba8[_0x7b41('0x1a')],_0x54eba8[_0x7b41('0x1d')][_0x7b41('0x1c')](_0x54eba8[_0x7b41('0x1d')][_0x7b41('0x1e')]('/')+0x1,_0x54eba8['channel'][_0x7b41('0x1e')]('-')));logger['debug'](_0x7b41('0x33'),_0x54eba8['uniqueid'],util[_0x7b41('0x25')](this[_0x7b41('0x8')][_0x54eba8[_0x7b41('0x1a')]],{'showHidden':![],'depth':null}));ami[_0x7b41('0x16')](_0x7b41('0x34'),this[_0x7b41('0x8')][_0x54eba8['uniqueid']]);}logger[_0x7b41('0x18')]('[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:',_0x54eba8[_0x7b41('0x1a')],util[_0x7b41('0x25')](this[_0x7b41('0x8')][_0x54eba8[_0x7b41('0x1a')]],{'showHidden':![],'depth':null}));this['emit'](_0x7b41('0x26'),_0x7b41('0x35'),this[_0x7b41('0x8')][_0x54eba8['uniqueid']]);}}}catch(_0x1233f5){logger[_0x7b41('0x36')](_0x7b41('0x37'),_0x54eba8[_0x7b41('0x1a')],util[_0x7b41('0x25')](_0x1233f5,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x7b41('0x15')]['syncVarSet']=function(_0x32b8a2){try{if(this[_0x7b41('0x17')](_0x32b8a2)){logger['debug'](_0x7b41('0x38'),_0x32b8a2['uniqueid'],util['inspect'](_0x32b8a2,{'showHidden':![],'depth':null}));this[_0x7b41('0x39')](_0x32b8a2['uniqueid'],_[_0x7b41('0x3a')](_0x32b8a2[_0x7b41('0x3b')])[0x0],_0x32b8a2[_0x7b41('0x3c')]);if(this[_0x7b41('0x17')](_0x32b8a2[_0x7b41('0x3b')])&&this[_0x7b41('0x17')](_0x32b8a2[_0x7b41('0x3b')][_0x7b41('0x3d')])){if(_[_0x7b41('0x14')](this[_0x7b41('0x8')][_0x32b8a2[_0x7b41('0x1a')]])){this[_0x7b41('0x8')][_0x32b8a2[_0x7b41('0x1a')]]={'routeId':_0x32b8a2['value'],'variables':this['variables'][_0x32b8a2[_0x7b41('0x1a')]],'motionChannel':_0x7b41('0x3e')};logger[_0x7b41('0x31')](_0x7b41('0x3f'),_0x32b8a2[_0x7b41('0x1a')],_0x32b8a2[_0x7b41('0x3b')][_0x7b41('0x3d')],_['keys'](_0x32b8a2['variable'])[0x0],_0x32b8a2[_0x7b41('0x3c')]);logger[_0x7b41('0x18')](_0x7b41('0x40'),_0x32b8a2[_0x7b41('0x1a')],util[_0x7b41('0x25')](this[_0x7b41('0x8')][_0x32b8a2[_0x7b41('0x1a')]],{'showHidden':![],'depth':null}));this[_0x7b41('0x16')](_0x7b41('0x26'),_0x7b41('0x35'),this[_0x7b41('0x8')][_0x32b8a2[_0x7b41('0x1a')]]);}}}}catch(_0xf5e52e){logger[_0x7b41('0x36')](_0x7b41('0x41'),_0x32b8a2[_0x7b41('0x1a')],util[_0x7b41('0x25')](_0xf5e52e,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x7b41('0x15')][_0x7b41('0x39')]=function(_0x58a998,_0x3df676,_0x32acd4){var _0x5ab798=[_0x7b41('0x42'),_0x7b41('0x43'),_0x7b41('0x44'),'rtpaudioqosjitterbridged',_0x7b41('0x45'),_0x7b41('0x46'),'rtpaudioqosrtt',_0x7b41('0x47'),'sipcallid',_0x7b41('0x48'),_0x7b41('0x49'),_0x7b41('0x4a'),_0x7b41('0x4b'),_0x7b41('0x4c'),_0x7b41('0x4d'),'memberlastcall',_0x7b41('0x23'),_0x7b41('0x4e'),'memberrealtime'];if(!_['isNil'](_0x3df676)&&!_[_0x7b41('0x4f')](_0x5ab798,_0x3df676)){if(_[_0x7b41('0x14')](this[_0x7b41('0x50')][_0x58a998])){this[_0x7b41('0x50')][_0x58a998]={};}this['variables'][_0x58a998][_0x3df676]=_0x32acd4;}};VoiceDialReport[_0x7b41('0x15')][_0x7b41('0x13')]=function(_0x11f9dd){try{if(this[_0x7b41('0x17')](_0x11f9dd)){logger[_0x7b41('0x18')](_0x7b41('0x51'),_0x11f9dd[_0x7b41('0x1a')],util[_0x7b41('0x25')](_0x11f9dd,{'showHidden':![],'depth':null}));if(this[_0x7b41('0x8')][_0x11f9dd[_0x7b41('0x1a')]]){logger[_0x7b41('0x31')](_0x7b41('0x52'),_0x11f9dd[_0x7b41('0x1a')],_0x11f9dd[_0x7b41('0x53')]);this[_0x7b41('0x8')][_0x11f9dd[_0x7b41('0x1a')]][_0x7b41('0x54')]=moment()[_0x7b41('0x2f')](_0x7b41('0x55'));this[_0x7b41('0x8')][_0x11f9dd[_0x7b41('0x1a')]]['duration']=moment(this[_0x7b41('0x8')][_0x11f9dd[_0x7b41('0x1a')]][_0x7b41('0x54')])['diff'](this[_0x7b41('0x8')][_0x11f9dd[_0x7b41('0x1a')]][_0x7b41('0x56')],_0x7b41('0x57'));this[_0x7b41('0x8')][_0x11f9dd[_0x7b41('0x1a')]][_0x7b41('0x30')]=_0x7b41('0x58');this['outbound']['total']+=0x1;if(this['channels'][_0x11f9dd[_0x7b41('0x1a')]][_0x7b41('0x2e')]){this['outbound'][_0x7b41('0x59')]+=0x1;this[_0x7b41('0x8')][_0x11f9dd[_0x7b41('0x1a')]][_0x7b41('0x5a')]=moment(this['channels'][_0x11f9dd[_0x7b41('0x1a')]][_0x7b41('0x2e')])[_0x7b41('0x5b')](this[_0x7b41('0x8')][_0x11f9dd['uniqueid']]['starttime'],_0x7b41('0x57'));this[_0x7b41('0x8')][_0x11f9dd[_0x7b41('0x1a')]][_0x7b41('0x5c')]=moment(this[_0x7b41('0x8')][_0x11f9dd[_0x7b41('0x1a')]]['endtime'])[_0x7b41('0x5b')](this['channels'][_0x11f9dd[_0x7b41('0x1a')]][_0x7b41('0x2e')],_0x7b41('0x57'));this['outbound']['sumHoldTime']+=this[_0x7b41('0x8')][_0x11f9dd['uniqueid']]['holdtime']||0x0;this[_0x7b41('0x5d')][_0x7b41('0x5e')]+=this[_0x7b41('0x8')][_0x11f9dd[_0x7b41('0x1a')]][_0x7b41('0x5c')];}this[_0x7b41('0x5d')][_0x7b41('0x5f')]+=this[_0x7b41('0x8')][_0x11f9dd[_0x7b41('0x1a')]][_0x7b41('0x60')];logger[_0x7b41('0x18')](_0x7b41('0x61'),_0x11f9dd[_0x7b41('0x1a')],util['inspect'](this[_0x7b41('0x8')][_0x11f9dd[_0x7b41('0x1a')]],{'showHidden':![],'depth':null}));ami[_0x7b41('0x16')]('custom:voiceDialReport',this[_0x7b41('0x8')][_0x11f9dd[_0x7b41('0x1a')]]);logger['debug']('[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:',_0x11f9dd[_0x7b41('0x1a')],util[_0x7b41('0x25')](this[_0x7b41('0x8')][_0x11f9dd[_0x7b41('0x1a')]],{'showHidden':![],'depth':null}));ami['emit'](_0x7b41('0x62'),this['channels'][_0x11f9dd[_0x7b41('0x1a')]]);logger['debug']('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:',_0x11f9dd[_0x7b41('0x1a')],util[_0x7b41('0x25')](this[_0x7b41('0x8')][_0x11f9dd['uniqueid']],{'showHidden':![],'depth':null}));this[_0x7b41('0x16')]('voice:outbound',_0x7b41('0x63'),this[_0x7b41('0x5d')]);logger[_0x7b41('0x31')](_0x7b41('0x64'),JSON[_0x7b41('0x65')](this[_0x7b41('0x8')][_0x11f9dd['uniqueid']]));logger[_0x7b41('0x18')](_0x7b41('0x66'),_0x11f9dd['uniqueid'],util[_0x7b41('0x25')](this[_0x7b41('0x8')][_0x11f9dd[_0x7b41('0x1a')]],{'showHidden':![],'depth':null}));this['emit'](_0x7b41('0x26'),'voice_outbound_channel:remove',this[_0x7b41('0x8')][_0x11f9dd[_0x7b41('0x1a')]]);delete this['channels'][_0x11f9dd[_0x7b41('0x1a')]];}else if(this[_0x7b41('0x8')][_0x11f9dd[_0x7b41('0x67')]]){this[_0x7b41('0x8')][_0x11f9dd[_0x7b41('0x67')]][_0x7b41('0x1a')]=this[_0x7b41('0x8')][_0x11f9dd[_0x7b41('0x67')]][_0x7b41('0x68')];}if(this[_0x7b41('0x50')][_0x11f9dd[_0x7b41('0x1a')]]){delete this[_0x7b41('0x50')][_0x11f9dd[_0x7b41('0x1a')]];}}}catch(_0x213cc7){logger[_0x7b41('0x36')](_0x7b41('0x69'),_0x11f9dd[_0x7b41('0x1a')],util[_0x7b41('0x25')](_0x213cc7,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x7b41('0x6a')]=function(_0x2bfa2b){try{if(this[_0x7b41('0x17')](_0x2bfa2b)){logger[_0x7b41('0x18')]('[%s][voiceDialReport][newexten]\x20event:',_0x2bfa2b[_0x7b41('0x1a')],util[_0x7b41('0x25')](_0x2bfa2b,{'showHidden':![],'depth':null}));if(_0x2bfa2b['application'][_0x7b41('0x6b')]()===_0x7b41('0x6c')){_0x2bfa2b[_0x7b41('0x6d')]=(_0x2bfa2b[_0x7b41('0x6e')]||_0x2bfa2b[_0x7b41('0x6d')])[_0x7b41('0x6b')]();if(_[_0x7b41('0x6f')](_0x2bfa2b[_0x7b41('0x6d')],_0x7b41('0x70'))){if(_[_0x7b41('0x14')](this[_0x7b41('0xa')][_0x2bfa2b[_0x7b41('0x1a')]]))this['applications'][_0x2bfa2b[_0x7b41('0x1a')]]={};logger['info'](_0x7b41('0x71'),_0x2bfa2b['uniqueid'],_0x2bfa2b[_0x7b41('0x72')],_0x2bfa2b[_0x7b41('0x6d')]);var _0xfa0960=_0x2bfa2b[_0x7b41('0x6d')][_0x7b41('0x73')]('=');var _0x3c4960=_0xfa0960[0x0][_0x7b41('0x74')](/cdr\((.*)\)/);if(_0x3c4960)this[_0x7b41('0xa')][_0x2bfa2b[_0x7b41('0x1a')]][_0x3c4960[0x1]]=_0xfa0960[0x1];}}}}catch(_0x2d740e){logger[_0x7b41('0x36')]('[%s][voiceDialReport][newexten]',_0x2bfa2b[_0x7b41('0x1a')],util[_0x7b41('0x25')](_0x2d740e,{'showHidden':![],'depth':null}));}};module[_0x7b41('0x75')]=VoiceDialReport;
\ No newline at end of file
+var _0x0be8=['newexten','syncNewExten','hangup','syncHangup','prototype','isUndefined','emit','syncDialBegin','isNotNull','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','format','channel','substring','lastIndexOf','omit','event','privilege','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','debug','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','inspect','merge','voice:outbound','custom:dialbegin','error','dialstatus','connectedlinenum','connectedlinename','answertime','YYYY-MM-DD\x20HH:mm:ss','connect','info','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','voice_outbound_channel:save','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','variable','value','outboundrouteid','variables','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','bridgepeer','membercalls','memberlastcall','memberrealtime','isNil','includes','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','duration','diff','starttime','seconds','lastevent','total','billableseconds','holdtime','sumBillable','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','voice_outbound:save','stringify','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','[%s][voiceDialReport][newexten]\x20event:','application','set','applicationdata','appdata','toLowerCase','startsWith','cdr(','split','[%s][voiceDialReport][newexten]','lodash','util','ioredis','../../../config/environment','../ami','redis','defaults','socket.io-emitter','channels','outbound','applications','dialbegin','bind','dialend','syncDialEnd','varset','syncVarSet'];(function(_0x7b2395,_0xca4664){var _0x85cba2=function(_0x103e21){while(--_0x103e21){_0x7b2395['push'](_0x7b2395['shift']());}};_0x85cba2(++_0xca4664);}(_0x0be8,0x142));var _0x80be=function(_0x5a5d41,_0x3ee827){_0x5a5d41=_0x5a5d41-0x0;var _0x2de42e=_0x0be8[_0x5a5d41];return _0x2de42e;};'use strict';var _=require(_0x80be('0x0'));var moment=require('moment');var util=require(_0x80be('0x1'));var Redis=require(_0x80be('0x2'));var config=require(_0x80be('0x3'));var logger=require('../../../config/logger')('ami');var ami=require(_0x80be('0x4'));config[_0x80be('0x5')]=_[_0x80be('0x6')](config[_0x80be('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x80be('0x7'))(new Redis(config[_0x80be('0x5')]));function VoiceDialReport(_0x46343d){this[_0x80be('0x8')]=_0x46343d['outboundChannels'];this[_0x80be('0x9')]=_0x46343d[_0x80be('0x9')];this[_0x80be('0xa')]={};this['variables']={};ami['on'](_0x80be('0xb'),this['syncDialBegin'][_0x80be('0xc')](this));ami['on'](_0x80be('0xd'),this[_0x80be('0xe')]['bind'](this));ami['on'](_0x80be('0xf'),this[_0x80be('0x10')][_0x80be('0xc')](this));ami['on'](_0x80be('0x11'),this[_0x80be('0x12')]['bind'](this));ami['on'](_0x80be('0x13'),this[_0x80be('0x14')][_0x80be('0xc')](this));}VoiceDialReport[_0x80be('0x15')]['isNotNull']=function(_0x20f838){return _0x20f838!==null&&!_[_0x80be('0x16')](_0x20f838);};VoiceDialReport[_0x80be('0x15')][_0x80be('0x17')]=function(_0x12ec3b,_0x1e26ba,_0x9750ee){io['to'](_0x12ec3b)[_0x80be('0x17')](_0x1e26ba,_0x9750ee);};VoiceDialReport[_0x80be('0x15')][_0x80be('0x18')]=function(_0x4d1479){try{if(this[_0x80be('0x19')](_0x4d1479)){logger['debug'](_0x80be('0x1a'),_0x4d1479[_0x80be('0x1b')],util['inspect'](_0x4d1479,{'showHidden':![],'depth':null}));if(this[_0x80be('0x8')][_0x4d1479[_0x80be('0x1b')]]){_['merge'](this['channels'][_0x4d1479[_0x80be('0x1b')]],{'starttime':moment()[_0x80be('0x1c')]('YYYY-MM-DD\x20HH:mm:ss'),'lastevent':'called','interface':_0x4d1479[_0x80be('0x1d')][_0x80be('0x1e')](0x0,_0x4d1479[_0x80be('0x1d')][_0x80be('0x1f')]('-')),'membername':_0x4d1479['channel']['substring'](_0x4d1479[_0x80be('0x1d')]['lastIndexOf']('/')+0x1,_0x4d1479[_0x80be('0x1d')][_0x80be('0x1f')]('-'))},_[_0x80be('0x20')](_0x4d1479,[_0x80be('0x21'),_0x80be('0x22')]));logger['info'](_0x80be('0x23'),_0x4d1479[_0x80be('0x1b')],this['channels'][_0x4d1479[_0x80be('0x1b')]][_0x80be('0x24')],this['channels'][_0x4d1479[_0x80be('0x1b')]]['interface']);logger[_0x80be('0x25')](_0x80be('0x26'),_0x4d1479[_0x80be('0x1b')],util[_0x80be('0x27')](this[_0x80be('0x8')][_0x4d1479[_0x80be('0x1b')]],{'showHidden':![],'depth':null}));if(this[_0x80be('0xa')][_0x4d1479[_0x80be('0x1b')]])_[_0x80be('0x28')](this[_0x80be('0x8')][_0x4d1479['uniqueid']],this[_0x80be('0xa')][_0x4d1479[_0x80be('0x1b')]]);this[_0x80be('0x17')](_0x80be('0x29'),'voice_outbound_channel:save',this[_0x80be('0x8')][_0x4d1479[_0x80be('0x1b')]]);logger[_0x80be('0x25')]('[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:',_0x4d1479[_0x80be('0x1b')],util[_0x80be('0x27')](this[_0x80be('0x8')][_0x4d1479[_0x80be('0x1b')]],{'showHidden':![],'depth':null}));ami[_0x80be('0x17')](_0x80be('0x2a'),this[_0x80be('0x8')][_0x4d1479[_0x80be('0x1b')]]);}}}catch(_0x1d43eb){logger[_0x80be('0x2b')]('[%s][voiceDialReport][dialbegin]',_0x4d1479['uniqueid'],util['inspect'](_0x1d43eb,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x80be('0x15')][_0x80be('0xe')]=function(_0x1918f3){try{if(this['isNotNull'](_0x1918f3)){logger[_0x80be('0x25')]('[%s][voiceDialReport][dialend]\x20event:',_0x1918f3['uniqueid'],util['inspect'](_0x1918f3,{'showHidden':![],'depth':null}));if(this[_0x80be('0x8')][_0x1918f3[_0x80be('0x1b')]]){this['channels'][_0x1918f3['uniqueid']]['dialstatus']=_0x1918f3[_0x80be('0x2c')];if(_0x1918f3[_0x80be('0x2c')]==='ANSWER'){this[_0x80be('0x8')][_0x1918f3[_0x80be('0x1b')]][_0x80be('0x2d')]=_0x1918f3['connectedlinenum'];this[_0x80be('0x8')][_0x1918f3['uniqueid']]['connectedlinename']=_0x1918f3[_0x80be('0x2e')];this[_0x80be('0x8')][_0x1918f3[_0x80be('0x1b')]][_0x80be('0x2f')]=moment()['format'](_0x80be('0x30'));this[_0x80be('0x8')][_0x1918f3[_0x80be('0x1b')]]['lastevent']=_0x80be('0x31');logger[_0x80be('0x32')](_0x80be('0x33'),_0x1918f3[_0x80be('0x1b')],_0x1918f3['channel'][_0x80be('0x1e')](_0x1918f3[_0x80be('0x1d')]['lastIndexOf']('/')+0x1,_0x1918f3[_0x80be('0x1d')][_0x80be('0x1f')]('-')));logger[_0x80be('0x25')](_0x80be('0x34'),_0x1918f3[_0x80be('0x1b')],util[_0x80be('0x27')](this[_0x80be('0x8')][_0x1918f3[_0x80be('0x1b')]],{'showHidden':![],'depth':null}));ami['emit'](_0x80be('0x35'),this['channels'][_0x1918f3['uniqueid']]);}logger[_0x80be('0x25')](_0x80be('0x36'),_0x1918f3[_0x80be('0x1b')],util[_0x80be('0x27')](this[_0x80be('0x8')][_0x1918f3[_0x80be('0x1b')]],{'showHidden':![],'depth':null}));this[_0x80be('0x17')](_0x80be('0x29'),_0x80be('0x37'),this['channels'][_0x1918f3[_0x80be('0x1b')]]);}}}catch(_0x122d49){logger[_0x80be('0x2b')](_0x80be('0x38'),_0x1918f3['uniqueid'],util['inspect'](_0x122d49,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x80be('0x15')][_0x80be('0x10')]=function(_0x5f5b4a){try{if(this[_0x80be('0x19')](_0x5f5b4a)){logger[_0x80be('0x25')](_0x80be('0x39'),_0x5f5b4a[_0x80be('0x1b')],util[_0x80be('0x27')](_0x5f5b4a,{'showHidden':![],'depth':null}));this[_0x80be('0x3a')](_0x5f5b4a[_0x80be('0x1b')],_[_0x80be('0x3b')](_0x5f5b4a[_0x80be('0x3c')])[0x0],_0x5f5b4a[_0x80be('0x3d')]);if(this[_0x80be('0x19')](_0x5f5b4a[_0x80be('0x3c')])&&this[_0x80be('0x19')](_0x5f5b4a[_0x80be('0x3c')][_0x80be('0x3e')])){if(_[_0x80be('0x16')](this[_0x80be('0x8')][_0x5f5b4a[_0x80be('0x1b')]])){this[_0x80be('0x8')][_0x5f5b4a[_0x80be('0x1b')]]={'routeId':_0x5f5b4a['value'],'variables':this[_0x80be('0x3f')][_0x5f5b4a[_0x80be('0x1b')]]};logger[_0x80be('0x32')](_0x80be('0x40'),_0x5f5b4a[_0x80be('0x1b')],_0x5f5b4a[_0x80be('0x3c')][_0x80be('0x3e')],_[_0x80be('0x3b')](_0x5f5b4a[_0x80be('0x3c')])[0x0],_0x5f5b4a[_0x80be('0x3d')]);logger['debug'](_0x80be('0x41'),_0x5f5b4a[_0x80be('0x1b')],util[_0x80be('0x27')](this[_0x80be('0x8')][_0x5f5b4a[_0x80be('0x1b')]],{'showHidden':![],'depth':null}));this['emit']('voice:outbound',_0x80be('0x37'),this[_0x80be('0x8')][_0x5f5b4a[_0x80be('0x1b')]]);}}}}catch(_0x3a15df){logger['error'](_0x80be('0x42'),_0x5f5b4a[_0x80be('0x1b')],util[_0x80be('0x27')](_0x3a15df,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x80be('0x15')][_0x80be('0x3a')]=function(_0x3df5f4,_0x3fbafa,_0x1fadfd){var _0x589e4a=[_0x80be('0x43'),_0x80be('0x44'),'rtpaudioqosjitter',_0x80be('0x45'),_0x80be('0x46'),_0x80be('0x47'),_0x80be('0x48'),_0x80be('0x49'),'sipcallid','sipuri',_0x80be('0x4a'),'bridgepvtcallid',_0x80be('0x4b'),'memberdynamic','memberinterface',_0x80be('0x4c'),_0x80be('0x24'),'memberpenalty',_0x80be('0x4d')];if(!_[_0x80be('0x4e')](_0x3fbafa)&&!_[_0x80be('0x4f')](_0x589e4a,_0x3fbafa)){if(_['isUndefined'](this[_0x80be('0x3f')][_0x3df5f4])){this['variables'][_0x3df5f4]={};}this[_0x80be('0x3f')][_0x3df5f4][_0x3fbafa]=_0x1fadfd;}};VoiceDialReport['prototype'][_0x80be('0x14')]=function(_0x1fd534){try{if(this[_0x80be('0x19')](_0x1fd534)){logger[_0x80be('0x25')](_0x80be('0x50'),_0x1fd534[_0x80be('0x1b')],util['inspect'](_0x1fd534,{'showHidden':![],'depth':null}));if(this[_0x80be('0x8')][_0x1fd534['uniqueid']]){logger[_0x80be('0x32')](_0x80be('0x51'),_0x1fd534[_0x80be('0x1b')],_0x1fd534[_0x80be('0x52')]);this[_0x80be('0x8')][_0x1fd534[_0x80be('0x1b')]][_0x80be('0x53')]=moment()[_0x80be('0x1c')](_0x80be('0x30'));this[_0x80be('0x8')][_0x1fd534['uniqueid']][_0x80be('0x54')]=moment(this[_0x80be('0x8')][_0x1fd534[_0x80be('0x1b')]][_0x80be('0x53')])[_0x80be('0x55')](this['channels'][_0x1fd534[_0x80be('0x1b')]][_0x80be('0x56')],_0x80be('0x57'));this[_0x80be('0x8')][_0x1fd534[_0x80be('0x1b')]][_0x80be('0x58')]='complete';this['outbound'][_0x80be('0x59')]+=0x1;if(this[_0x80be('0x8')][_0x1fd534['uniqueid']][_0x80be('0x2f')]){this[_0x80be('0x9')]['answered']+=0x1;this[_0x80be('0x8')][_0x1fd534[_0x80be('0x1b')]]['holdtime']=moment(this[_0x80be('0x8')][_0x1fd534[_0x80be('0x1b')]][_0x80be('0x2f')])['diff'](this[_0x80be('0x8')][_0x1fd534[_0x80be('0x1b')]][_0x80be('0x56')],_0x80be('0x57'));this[_0x80be('0x8')][_0x1fd534[_0x80be('0x1b')]][_0x80be('0x5a')]=moment(this[_0x80be('0x8')][_0x1fd534[_0x80be('0x1b')]][_0x80be('0x53')])[_0x80be('0x55')](this[_0x80be('0x8')][_0x1fd534[_0x80be('0x1b')]][_0x80be('0x2f')],_0x80be('0x57'));this['outbound']['sumHoldTime']+=this[_0x80be('0x8')][_0x1fd534[_0x80be('0x1b')]][_0x80be('0x5b')]||0x0;this[_0x80be('0x9')][_0x80be('0x5c')]+=this['channels'][_0x1fd534[_0x80be('0x1b')]][_0x80be('0x5a')];}this[_0x80be('0x9')][_0x80be('0x5d')]+=this['channels'][_0x1fd534[_0x80be('0x1b')]][_0x80be('0x54')];logger[_0x80be('0x25')](_0x80be('0x5e'),_0x1fd534[_0x80be('0x1b')],util[_0x80be('0x27')](this[_0x80be('0x8')][_0x1fd534[_0x80be('0x1b')]],{'showHidden':![],'depth':null}));ami[_0x80be('0x17')](_0x80be('0x5f'),this[_0x80be('0x8')][_0x1fd534[_0x80be('0x1b')]]);logger['debug'](_0x80be('0x60'),_0x1fd534[_0x80be('0x1b')],util[_0x80be('0x27')](this[_0x80be('0x8')][_0x1fd534[_0x80be('0x1b')]],{'showHidden':![],'depth':null}));ami['emit']('custom:dialend',this[_0x80be('0x8')][_0x1fd534[_0x80be('0x1b')]]);logger['debug']('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:',_0x1fd534[_0x80be('0x1b')],util[_0x80be('0x27')](this[_0x80be('0x8')][_0x1fd534[_0x80be('0x1b')]],{'showHidden':![],'depth':null}));this[_0x80be('0x17')](_0x80be('0x29'),_0x80be('0x61'),this['outbound']);logger['info']('[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event',JSON[_0x80be('0x62')](this[_0x80be('0x8')][_0x1fd534[_0x80be('0x1b')]]));logger[_0x80be('0x25')]('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:',_0x1fd534[_0x80be('0x1b')],util[_0x80be('0x27')](this[_0x80be('0x8')][_0x1fd534['uniqueid']],{'showHidden':![],'depth':null}));this[_0x80be('0x17')](_0x80be('0x29'),_0x80be('0x63'),this[_0x80be('0x8')][_0x1fd534[_0x80be('0x1b')]]);delete this[_0x80be('0x8')][_0x1fd534[_0x80be('0x1b')]];}else if(this[_0x80be('0x8')][_0x1fd534[_0x80be('0x64')]]){this[_0x80be('0x8')][_0x1fd534[_0x80be('0x64')]][_0x80be('0x1b')]=this[_0x80be('0x8')][_0x1fd534[_0x80be('0x64')]][_0x80be('0x65')];}if(this[_0x80be('0x3f')][_0x1fd534[_0x80be('0x1b')]]){delete this[_0x80be('0x3f')][_0x1fd534['uniqueid']];}}}catch(_0x56d944){logger[_0x80be('0x2b')](_0x80be('0x66'),_0x1fd534['uniqueid'],util[_0x80be('0x27')](_0x56d944,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x80be('0x12')]=function(_0x99487f){try{if(this[_0x80be('0x19')](_0x99487f)){logger[_0x80be('0x25')](_0x80be('0x67'),_0x99487f['uniqueid'],util['inspect'](_0x99487f,{'showHidden':![],'depth':null}));if(_0x99487f[_0x80be('0x68')]['toLowerCase']()===_0x80be('0x69')){_0x99487f[_0x80be('0x6a')]=(_0x99487f[_0x80be('0x6b')]||_0x99487f[_0x80be('0x6a')])[_0x80be('0x6c')]();if(_[_0x80be('0x6d')](_0x99487f['applicationdata'],_0x80be('0x6e'))){if(_[_0x80be('0x16')](this[_0x80be('0xa')][_0x99487f['uniqueid']]))this['applications'][_0x99487f[_0x80be('0x1b')]]={};logger[_0x80be('0x32')]('[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s',_0x99487f['uniqueid'],_0x99487f[_0x80be('0x68')],_0x99487f['applicationdata']);var _0x537611=_0x99487f[_0x80be('0x6a')][_0x80be('0x6f')]('=');var _0x36deff=_0x537611[0x0]['match'](/cdr\((.*)\)/);if(_0x36deff)this[_0x80be('0xa')][_0x99487f[_0x80be('0x1b')]][_0x36deff[0x1]]=_0x537611[0x1];}}}}catch(_0x55d1de){logger[_0x80be('0x2b')](_0x80be('0x70'),_0x99487f[_0x80be('0x1b')],util[_0x80be('0x27')](_0x55d1de,{'showHidden':![],'depth':null}));}};module['exports']=VoiceDialReport;
\ No newline at end of file
index 7176e9f..0e6b11a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd382=['syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','loopQueueSummary','isEmpty','hasOwnProperty','originated','talking','pTalking','switch','isNil','Action','status','catch','message','No\x20such\x20channel','error','[%s][voiceQueueReport][checkChannel]','inspect','[%s][voiceQueueReport][checkQueueReport]','[%s][voiceQueueReport][checkVariables]','syncFullyBooted','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][','uniqueid','voice:queue:%s','name','voice_queue_channel:save','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','voice_queue_channel:remove','voice_queue_presence:remove','emitVoiceQueueSummary','type','inbound','strategy','answered','available','loggedIn','sumBillable','sumDuration','sumHoldTime','total','abandoned','waiting','Trunk','active','callerid','Interval','[voiceQueueReport][','format','voice_queue:save','isNotNull','isUndefined','loopQueueShow','clearZombieChannels','queues','[voiceQueueReport][queues]','[voiceQueueReport][queuesummary]','queue','info','countBy','callers','toNumber','loggedin','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','custom:queuesummary','[voiceQueueReport][queuesummarycomplete]\x20event:','position','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','pick','keys','push','[%s][voiceQueueReport][queuecallerjoin]','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercomplete','holdtime','originalposition','queuecallerabandonAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexitreason','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','[%s][voiceQueueReport][agentconnect]','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','[%s][voiceQueueReport][agentcomplete]','assigned','lastAssignedTo','membername','queuecallerexit','queuecallerexitAt','reason','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','toLowerCase','local/','linkedid','queuecallerjoinAt','add','transfer','transfertype','FORWARD','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','[%s][voiceQueueReport][varset]','addVariable','variable','value','queuestatus','CONTINUE','TIMEOUT','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','varset','EXITWITHKEY','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','includes','length','unmanaged','diff','seconds','milliseconds','lastevent','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','hangup','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][hangup]','transfereeuniqueid','transferexten','secondtransfererexten','secondtransfereruniqueid','ATTENDED','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','ATTENDEDTRANSFER','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','context','transfererchannel','[%s][voiceQueueReport][musiconholdstart]','[%s][voiceQueueReport][musiconholdstop]','mohstarttime','mohtime','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','syncNewExten','application','set','appdata','CDR(routeAlias)','applicationdata','cdr(','match','[%s][voiceQueueReport][newexten]','exports','lodash','moment','util','md5','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/queueReport','localhost','socket.io-emitter','prototype','enqueue','tail','finally','queueReports','agents','channels','queueChannels','voiceQueues','flagQueueSummary','campaigns','variables','queuesummary','syncQueueSummary','bind','queuesummarycomplete','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','queuecallerleave','syncQueueCallerLeave','agentcomplete','syncAgentComplete','agentconnect','syncAgentConnect','syncVarSet','syncHangup','fullybooted','musiconholdstart','syncMusicOnHoldStart','musiconholdstop'];(function(_0x49a5a2,_0x51f4a7){var _0x5b03b0=function(_0x416984){while(--_0x416984){_0x49a5a2['push'](_0x49a5a2['shift']());}};_0x5b03b0(++_0x51f4a7);}(_0xd382,0x1b6));var _0x2d38=function(_0x380899,_0x42f805){_0x380899=_0x380899-0x0;var _0x3d4b46=_0xd382[_0x380899];return _0x3d4b46;};'use strict';var _=require(_0x2d38('0x0'));var moment=require(_0x2d38('0x1'));var util=require(_0x2d38('0x2'));var md5=require(_0x2d38('0x3'));var Redis=require(_0x2d38('0x4'));var config=require(_0x2d38('0x5'));var logger=require(_0x2d38('0x6'))(_0x2d38('0x7'));var ami=require(_0x2d38('0x8'));var QueueReport=require(_0x2d38('0x9'));config['redis']=_['defaults'](config['redis'],{'host':_0x2d38('0xa'),'port':0x18eb});var io=require(_0x2d38('0xb'))(new Redis(config['redis']));var Sequence=function(){};Sequence[_0x2d38('0xc')][_0x2d38('0xd')]=function(_0x39ebfd){this['tail']=this['tail']?this[_0x2d38('0xe')][_0x2d38('0xf')](_0x39ebfd):_0x39ebfd();};function VoiceQueueReport(_0x12a9bf){this['sequence']=new Sequence();this[_0x2d38('0x10')]={};this['agents']=_0x12a9bf[_0x2d38('0x11')];this[_0x2d38('0x12')]=_0x12a9bf[_0x2d38('0x13')];this[_0x2d38('0x14')]=_0x12a9bf[_0x2d38('0x14')];this[_0x2d38('0x15')]=!![];this[_0x2d38('0x16')]=_0x12a9bf['campaigns'];this[_0x2d38('0x17')]={};ami['on'](_0x2d38('0x18'),this[_0x2d38('0x19')][_0x2d38('0x1a')](this));ami['on'](_0x2d38('0x1b'),this['syncQueueSummaryComplete'][_0x2d38('0x1a')](this));ami['on'](_0x2d38('0x1c'),this[_0x2d38('0x1d')][_0x2d38('0x1a')](this));ami['on'](_0x2d38('0x1e'),this[_0x2d38('0x1f')][_0x2d38('0x1a')](this));ami['on'](_0x2d38('0x20'),this[_0x2d38('0x21')][_0x2d38('0x1a')](this));ami['on'](_0x2d38('0x22'),this[_0x2d38('0x23')][_0x2d38('0x1a')](this));ami['on'](_0x2d38('0x24'),this[_0x2d38('0x25')][_0x2d38('0x1a')](this));ami['on']('varset',this[_0x2d38('0x26')][_0x2d38('0x1a')](this));ami['on']('hangup',this[_0x2d38('0x27')][_0x2d38('0x1a')](this));ami['on'](_0x2d38('0x28'),this['syncFullyBooted'][_0x2d38('0x1a')](this));ami['on']('newexten',this['syncNewExten'][_0x2d38('0x1a')](this));ami['on'](_0x2d38('0x29'),this[_0x2d38('0x2a')][_0x2d38('0x1a')](this));ami['on'](_0x2d38('0x2b'),this[_0x2d38('0x2c')][_0x2d38('0x1a')](this));ami['on'](_0x2d38('0x2d'),this[_0x2d38('0x2e')][_0x2d38('0x1a')](this));ami['on']('blindtransfer',this[_0x2d38('0x2f')]['bind'](this));this[_0x2d38('0x30')]();this['loopQueueShow']();}function clearChannels(_0x1e3d6a){if(!_[_0x2d38('0x31')](_0x1e3d6a)){for(var _0x389c29 in _0x1e3d6a){if(_0x1e3d6a[_0x2d38('0x32')](_0x389c29)){delete _0x1e3d6a[_0x389c29];}}}}function clearCampaigns(_0xffa3ce){if(!_[_0x2d38('0x31')](_0xffa3ce)){for(var _0x7ddf6e in _0xffa3ce){if(_0xffa3ce['hasOwnProperty'](_0x7ddf6e)){_0xffa3ce[_0x7ddf6e][_0x2d38('0x33')]=0x0;}}}}function clearVoiceQueues(_0x3f0f7a){if(!_[_0x2d38('0x31')](_0x3f0f7a)){for(var _0x3d18cd in _0x3f0f7a){if(_0x3f0f7a[_0x2d38('0x32')](_0x3d18cd)){_0x3f0f7a[_0x3d18cd][_0x2d38('0x33')]=0x0;_0x3f0f7a[_0x3d18cd][_0x2d38('0x34')]=0x0;_0x3f0f7a[_0x3d18cd][_0x2d38('0x35')]=0x0;_0x3f0f7a[_0x3d18cd]['waiting']=0x0;_0x3f0f7a[_0x3d18cd]['queueStatusComplete']=!![];}}}}function clearAgentBooked(_0x5570c2){if(!_[_0x2d38('0x31')](_0x5570c2)){for(var _0xbd364b in _0x5570c2){if(_0x5570c2[_0x2d38('0x32')](_0xbd364b)){_0x5570c2[_0xbd364b]['unlockRR']=!![];}}}}VoiceQueueReport[_0x2d38('0xc')]['clearZombieChannels']=function(){var _0x2b84cc=this;for(var _0x210283 in this[_0x2d38('0x12')]){if(this['channels'][_0x2d38('0x32')](_0x210283)&&!this[_0x2d38('0x12')][_0x210283][_0x2d38('0x36')]){this['sequence'][_0x2d38('0xd')](function(){if(!_[_0x2d38('0x37')](_0x2b84cc[_0x2d38('0x12')][_0x210283])){return ami[_0x2d38('0x38')]({'action':_0x2d38('0x39'),'channel':_0x2b84cc[_0x2d38('0x12')][_0x210283]['channel']})[_0x2d38('0x3a')](function(_0x240d02){if(_0x240d02[_0x2d38('0x3b')]===_0x2d38('0x3c')){setTimeout(function(){if(_0x2b84cc['channels'][_0x210283]){delete _0x2b84cc[_0x2d38('0x12')][_0x210283];logger[_0x2d38('0x3d')](_0x2d38('0x3e'),_0x210283,util[_0x2d38('0x3f')](_0x240d02,{'showHidden':![],'depth':null}));}if(_0x2b84cc[_0x2d38('0x10')][_0x210283]){delete _0x2b84cc[_0x2d38('0x10')][_0x210283];logger[_0x2d38('0x3d')](_0x2d38('0x40'),_0x210283,util[_0x2d38('0x3f')](_0x240d02,{'showHidden':![],'depth':null}));}if(_0x2b84cc[_0x2d38('0x17')][_0x210283]){delete _0x2b84cc['variables'][_0x210283];logger['error'](_0x2d38('0x41'),_0x210283,util[_0x2d38('0x3f')](_0x240d02,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x2d38('0xc')][_0x2d38('0x42')]=function(){logger[_0x2d38('0x3d')](_0x2d38('0x43'));clearChannels(this[_0x2d38('0x12')]);this[_0x2d38('0x44')](this[_0x2d38('0x10')]);clearAgentBooked(this[_0x2d38('0x11')]);clearVoiceQueues(this[_0x2d38('0x14')]);clearCampaigns(this[_0x2d38('0x16')]);};VoiceQueueReport[_0x2d38('0xc')]['clearQueueReport']=function(_0x3654f3){var _0x1161b1=this;if(!_[_0x2d38('0x31')](_0x3654f3)){for(var _0x38870e in _0x3654f3){if(_0x3654f3['hasOwnProperty'](_0x38870e)){_0x1161b1[_0x2d38('0x45')](_0x3654f3[_0x38870e],_0x2d38('0x46'));delete _0x3654f3[_0x38870e];}}}};VoiceQueueReport[_0x2d38('0xc')][_0x2d38('0x47')]=function(_0x29ae18,_0x3beb74,_0x971848){io['to'](_0x29ae18)[_0x2d38('0x47')](_0x3beb74,_0x971848);};VoiceQueueReport[_0x2d38('0xc')][_0x2d38('0x48')]=function(_0x3cd072,_0x82bb9){logger[_0x2d38('0x49')](_0x2d38('0x4a')+_0x82bb9+']\x20sending\x20voice_queue_channel:save\x20event:',_0x3cd072[_0x2d38('0x4b')],util[_0x2d38('0x3f')](_0x3cd072,{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x2d38('0x4c'),_0x3cd072[_0x2d38('0x4d')]),_0x2d38('0x4e'),_0x3cd072);io['emit'](_0x2d38('0x4f'),_0x3cd072);};VoiceQueueReport[_0x2d38('0xc')][_0x2d38('0x45')]=function(_0x5a7e02,_0x553fd1){logger[_0x2d38('0x49')]('[%s][voiceQueueReport]['+_0x553fd1+_0x2d38('0x50'),_0x5a7e02[_0x2d38('0x4b')],util[_0x2d38('0x3f')](_0x5a7e02,{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x2d38('0x4c'),_0x5a7e02[_0x2d38('0x4d')]),_0x2d38('0x51'),_0x5a7e02);io['emit'](_0x2d38('0x52'),_0x5a7e02);};VoiceQueueReport[_0x2d38('0xc')][_0x2d38('0x53')]=function(_0x57d36e,_0x2b66ec){if(_0x57d36e[_0x2d38('0x54')]===_0x2d38('0x55')){var _0x5ea204={'id':_0x57d36e['id'],'name':_0x57d36e['name'],'strategy':_0x57d36e[_0x2d38('0x56')],'answered':_0x57d36e[_0x2d38('0x57')],'available':_0x57d36e[_0x2d38('0x58')],'loggedIn':_0x57d36e[_0x2d38('0x59')],'pTalking':_0x57d36e['pTalking'],'sumBillable':_0x57d36e[_0x2d38('0x5a')],'sumDuration':_0x57d36e[_0x2d38('0x5b')],'sumHoldTime':_0x57d36e[_0x2d38('0x5c')]||0x0,'talking':_0x57d36e['talking'],'total':_0x57d36e[_0x2d38('0x5d')],'type':_0x57d36e['type'],'unmanaged':_0x57d36e['unmanaged'],'abandoned':_0x57d36e[_0x2d38('0x5e')],'waiting':_0x57d36e[_0x2d38('0x5f')]};if(_0x57d36e[_0x2d38('0x60')]){_0x5ea204[_0x2d38('0x60')]={'id':_0x57d36e['Trunk']['id'],'name':_0x57d36e['Trunk'][_0x2d38('0x4d')],'active':_0x57d36e['Trunk'][_0x2d38('0x61')],'callerid':_0x57d36e[_0x2d38('0x60')][_0x2d38('0x62')]};}if(_0x57d36e[_0x2d38('0x63')]){_0x5ea204[_0x2d38('0x63')]={'id':_0x57d36e[_0x2d38('0x63')]['id'],'name':_0x57d36e[_0x2d38('0x63')][_0x2d38('0x4d')]};}var _0xaf8f34=md5(JSON['stringify'](_0x5ea204));if(_0x57d36e[_0x2d38('0x3')]!==_0xaf8f34){_0x57d36e['md5']=_0xaf8f34;logger[_0x2d38('0x49')](_0x2d38('0x64')+_0x2b66ec+']\x20sending\x20voice_queue:save\x20event:',util[_0x2d38('0x3f')](_0x5ea204,{'showHidden':![],'depth':null}));this[_0x2d38('0x47')](util[_0x2d38('0x65')](_0x2d38('0x4c'),_0x5ea204[_0x2d38('0x4d')]),_0x2d38('0x66'),_0x5ea204);}}};VoiceQueueReport[_0x2d38('0xc')][_0x2d38('0x67')]=function(_0x595a5c){return _0x595a5c!==null&&!_[_0x2d38('0x68')](_0x595a5c);};VoiceQueueReport[_0x2d38('0xc')][_0x2d38('0x69')]=function(){var _0x75d525=this;setInterval(function(){_0x75d525[_0x2d38('0x6a')]();ami[_0x2d38('0x38')]({'action':_0x2d38('0x6b')})[_0x2d38('0x3a')](function(_0x14f31b){logger['error'](_0x2d38('0x6c'),util[_0x2d38('0x3f')](_0x14f31b,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport['prototype']['loopQueueSummary']=function(){var _0x3e81f2=this;setInterval(function(){if(_0x3e81f2[_0x2d38('0x15')]){return ami[_0x2d38('0x38')]({'action':_0x2d38('0x18')})['then'](function(_0x4a7450){_0x3e81f2[_0x2d38('0x15')]=![];})[_0x2d38('0x3a')](function(_0x1b599c){logger[_0x2d38('0x3d')](_0x2d38('0x6d'),util[_0x2d38('0x3f')](_0x1b599c,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x2d38('0xc')][_0x2d38('0x19')]=function(_0x1348f8){try{if(this[_0x2d38('0x67')](_0x1348f8)&&this[_0x2d38('0x67')](_0x1348f8['queue'])){logger[_0x2d38('0x49')]('[voiceQueueReport][queuesummary]\x20event:',util['inspect'](_0x1348f8,{'showHidden':![],'depth':null}));if(this[_0x2d38('0x14')][_0x1348f8[_0x2d38('0x6e')]]){logger[_0x2d38('0x6f')]('[voiceQueueReport][queuesummary]\x20name:%s',_0x1348f8['queue']);var _0x3ca706=_[_0x2d38('0x70')](this['channels'],_0x2d38('0x6e'))[_0x1348f8[_0x2d38('0x6e')]]||0x0;var _0x2e978c=_0x3ca706-_0x1348f8[_0x2d38('0x71')];if(this[_0x2d38('0x14')][_0x1348f8['queue']]['waiting']!==_[_0x2d38('0x72')](_0x1348f8['callers'])||this[_0x2d38('0x14')][_0x1348f8[_0x2d38('0x6e')]][_0x2d38('0x59')]!==_[_0x2d38('0x72')](_0x1348f8['loggedin'])||this[_0x2d38('0x14')][_0x1348f8[_0x2d38('0x6e')]]['available']!==_[_0x2d38('0x72')](_0x1348f8[_0x2d38('0x58')])||this['voiceQueues'][_0x1348f8[_0x2d38('0x6e')]]['talking']!==_0x2e978c){this['voiceQueues'][_0x1348f8[_0x2d38('0x6e')]][_0x2d38('0x5f')]=_['toNumber'](_0x1348f8['callers']);this[_0x2d38('0x14')][_0x1348f8['queue']][_0x2d38('0x59')]=_[_0x2d38('0x72')](_0x1348f8[_0x2d38('0x73')]);this['voiceQueues'][_0x1348f8['queue']][_0x2d38('0x58')]=_[_0x2d38('0x72')](_0x1348f8['available']);this[_0x2d38('0x14')][_0x1348f8[_0x2d38('0x6e')]][_0x2d38('0x34')]=_0x2e978c>0x0?_0x2e978c:0x0;this[_0x2d38('0x14')][_0x1348f8[_0x2d38('0x6e')]]['talking']=this[_0x2d38('0x14')][_0x1348f8['queue']][_0x2d38('0x34')]>_[_0x2d38('0x72')](_0x1348f8['loggedin'])?_['toNumber'](_0x1348f8[_0x2d38('0x73')]):this[_0x2d38('0x14')][_0x1348f8[_0x2d38('0x6e')]][_0x2d38('0x34')];this['emitVoiceQueueSummary'](this[_0x2d38('0x14')][_0x1348f8['queue']],'queuesummary');}logger[_0x2d38('0x49')](_0x2d38('0x74'),util[_0x2d38('0x3f')](this[_0x2d38('0x14')][_0x1348f8['queue']],{'showHidden':![],'depth':null}));ami[_0x2d38('0x47')](_0x2d38('0x75'),this[_0x2d38('0x14')][_0x1348f8[_0x2d38('0x6e')]]);}}}catch(_0x55a3fe){logger['error']('[voiceQueueReport][queuesummary]',util['inspect'](_0x55a3fe,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncQueueSummaryComplete']=function(_0x2cd7b3){logger[_0x2d38('0x49')](_0x2d38('0x76'),util[_0x2d38('0x3f')](_0x2cd7b3,{'showHidden':![],'depth':null}));this[_0x2d38('0x15')]=!![];};VoiceQueueReport['prototype'][_0x2d38('0x1d')]=function(_0x4229d7){try{if(this[_0x2d38('0x67')](_0x4229d7)){logger[_0x2d38('0x49')]('[%s][voiceQueueReport][queuecallerjoin]',_0x4229d7[_0x2d38('0x4b')],util[_0x2d38('0x3f')](_0x4229d7,{'showHidden':![],'depth':null}));if(_[_0x2d38('0x68')](this[_0x2d38('0x10')][_0x4229d7[_0x2d38('0x4b')]]))this[_0x2d38('0x10')][_0x4229d7[_0x2d38('0x4b')]]=[];if(_[_0x2d38('0x68')](this[_0x2d38('0x12')][_0x4229d7['uniqueid']]))this[_0x2d38('0x12')][_0x4229d7[_0x2d38('0x4b')]]={};var _0x266d0c=new QueueReport();_0x266d0c['name']=_0x4229d7[_0x2d38('0x6e')];_0x266d0c[_0x2d38('0x54')]=this[_0x2d38('0x14')][_0x266d0c[_0x2d38('0x4d')]]&&this[_0x2d38('0x14')][_0x266d0c[_0x2d38('0x4d')]]['type']?this[_0x2d38('0x14')][_0x266d0c[_0x2d38('0x4d')]][_0x2d38('0x54')]||_0x2d38('0x55'):_0x2d38('0x55');_0x266d0c['queue']=_0x4229d7[_0x2d38('0x6e')];_0x266d0c['queuecallerjoinAt']=moment()[_0x2d38('0x65')]('YYYY-MM-DD\x20HH:mm:ss');_0x266d0c[_0x2d38('0x77')]=_0x4229d7[_0x2d38('0x77')];_0x266d0c['count']=_0x4229d7[_0x2d38('0x78')];_0x266d0c[_0x2d38('0x4b')]=_0x4229d7[_0x2d38('0x4b')];_0x266d0c[_0x2d38('0x79')]=this[_0x2d38('0x12')][_0x4229d7[_0x2d38('0x4b')]][_0x2d38('0x79')];logger[_0x2d38('0x6f')](_0x2d38('0x7a'),_0x266d0c[_0x2d38('0x4d')],_0x266d0c[_0x2d38('0x54')]);_[_0x2d38('0x7b')](_0x266d0c,_[_0x2d38('0x7c')](_0x4229d7,_[_0x2d38('0x7d')](_0x266d0c)));this[_0x2d38('0x10')][_0x4229d7['uniqueid']][_0x2d38('0x7e')](_0x266d0c);this[_0x2d38('0x12')][_0x4229d7[_0x2d38('0x4b')]]=_0x266d0c;this[_0x2d38('0x48')](_0x266d0c,_0x2d38('0x1c'));}}catch(_0x42e905){logger[_0x2d38('0x3d')](_0x2d38('0x7f'),_0x4229d7[_0x2d38('0x4b')],util[_0x2d38('0x3f')](_0x42e905,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x2d38('0xc')][_0x2d38('0x1f')]=function(_0x1412d0){try{if(this['isNotNull'](_0x1412d0)){logger[_0x2d38('0x49')](_0x2d38('0x80'),_0x1412d0[_0x2d38('0x4b')],util[_0x2d38('0x3f')](_0x1412d0,{'showHidden':![],'depth':null}));if(this[_0x2d38('0x10')][_0x1412d0[_0x2d38('0x4b')]]){var _0x45f29e=_[_0x2d38('0x81')](this[_0x2d38('0x10')][_0x1412d0[_0x2d38('0x4b')]]);_0x45f29e[_0x2d38('0x82')]=![];_0x45f29e['queuecallercompleteAt']=null;_0x45f29e['holdtime']=_0x1412d0[_0x2d38('0x83')];_0x45f29e[_0x2d38('0x84')]=_0x1412d0[_0x2d38('0x84')];_0x45f29e[_0x2d38('0x1e')]=!![];_0x45f29e[_0x2d38('0x85')]=moment()[_0x2d38('0x65')](_0x2d38('0x86'));_0x45f29e[_0x2d38('0x87')]='ABANDONED';_0x45f29e['lastAssignedTo']=null;logger['info'](_0x2d38('0x88'),_0x45f29e[_0x2d38('0x4d')],_0x45f29e[_0x2d38('0x54')]);this[_0x2d38('0x12')][_0x1412d0[_0x2d38('0x4b')]]=_0x45f29e;this[_0x2d38('0x45')](_0x45f29e,_0x2d38('0x1e'));}}}catch(_0x3e072f){logger[_0x2d38('0x3d')](_0x2d38('0x80'),_0x1412d0['uniqueid'],util[_0x2d38('0x3f')](_0x3e072f,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x2d38('0xc')][_0x2d38('0x21')]=function(_0x5c6526){try{if(this['isNotNull'](_0x5c6526)){logger['debug'](_0x2d38('0x89'),_0x5c6526[_0x2d38('0x4b')],util[_0x2d38('0x3f')](_0x5c6526,{'showHidden':![],'depth':null}));if(this[_0x2d38('0x10')][_0x5c6526[_0x2d38('0x4b')]]){var _0x257c00=_['last'](this['queueReports'][_0x5c6526[_0x2d38('0x4b')]]);_0x257c00[_0x2d38('0x8a')]=moment()['format'](_0x2d38('0x86'));_0x257c00[_0x2d38('0x8b')]=_0x5c6526[_0x2d38('0x8b')];_0x257c00[_0x2d38('0x8c')]=_0x5c6526[_0x2d38('0x8c')];logger['info'](_0x2d38('0x8d'),_0x257c00['name'],_0x257c00[_0x2d38('0x54')],_0x5c6526[_0x2d38('0x8b')],_0x5c6526['connectedlinename']);this[_0x2d38('0x12')][_0x5c6526[_0x2d38('0x4b')]]=_0x257c00;this[_0x2d38('0x48')](_0x257c00,_0x2d38('0x20'));}}}catch(_0x8bb6c9){logger[_0x2d38('0x3d')](_0x2d38('0x89'),_0x5c6526[_0x2d38('0x4b')],util['inspect'](_0x8bb6c9,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x2d38('0x25')]=function(_0x2f1a82){try{if(this[_0x2d38('0x67')](_0x2f1a82)){logger[_0x2d38('0x49')](_0x2d38('0x8e'),_0x2f1a82[_0x2d38('0x4b')],util[_0x2d38('0x3f')](_0x2f1a82,{'showHidden':![],'depth':null}));if(this[_0x2d38('0x10')][_0x2f1a82[_0x2d38('0x4b')]]){var _0x3293c5=_[_0x2d38('0x81')](this[_0x2d38('0x10')][_0x2f1a82['uniqueid']]);_0x3293c5[_0x2d38('0x82')]=!![];_0x3293c5[_0x2d38('0x87')]='COMPLETEDBYAGENT';logger[_0x2d38('0x6f')](_0x2d38('0x8f'),_0x3293c5[_0x2d38('0x4d')],_0x3293c5[_0x2d38('0x54')]);}}}catch(_0x456ad0){logger[_0x2d38('0x3d')](_0x2d38('0x8e'),_0x2f1a82[_0x2d38('0x4b')],util['inspect'](_0x456ad0,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x2d38('0xc')][_0x2d38('0x23')]=function(_0x2870c8){try{if(this[_0x2d38('0x67')](_0x2870c8)){logger['debug'](_0x2d38('0x90'),_0x2870c8['uniqueid'],util['inspect'](_0x2870c8,{'showHidden':![],'depth':null}));if(this[_0x2d38('0x10')][_0x2870c8[_0x2d38('0x4b')]]){var _0x5eb21e=_[_0x2d38('0x81')](this[_0x2d38('0x10')][_0x2870c8['uniqueid']]);_0x5eb21e[_0x2d38('0x1e')]=![];_0x5eb21e['queuecallerabandonAt']=null;_0x5eb21e[_0x2d38('0x91')]=!![];_0x5eb21e[_0x2d38('0x92')]=_0x2870c8[_0x2d38('0x93')];_0x5eb21e[_0x2d38('0x83')]=_0x2870c8['holdtime'];_0x5eb21e[_0x2d38('0x82')]=!![];_0x5eb21e[_0x2d38('0x94')]=![];_0x5eb21e[_0x2d38('0x95')]=null;if(!_0x5eb21e['transfer']){if(_0x2870c8[_0x2d38('0x96')]=='transfer'){_0x5eb21e[_0x2d38('0x87')]=_0x2d38('0x97');logger[_0x2d38('0x6f')](_0x2d38('0x98'),_0x5eb21e['name'],_0x5eb21e[_0x2d38('0x54')]);}else{if(_[_0x2d38('0x99')](_0x2870c8['channel'][_0x2d38('0x9a')](),_0x2d38('0x9b'))){if(this[_0x2d38('0x10')][_0x2870c8[_0x2d38('0x9c')]]){var _0x2a4fed=_['last'](this[_0x2d38('0x10')][_0x2870c8[_0x2d38('0x9c')]]);_0x2a4fed[_0x2d38('0x82')]=![];_0x2a4fed[_0x2d38('0x94')]=!![];_0x2a4fed[_0x2d38('0x95')]=moment(_0x5eb21e[_0x2d38('0x9d')])[_0x2d38('0x9e')](_0x2870c8[_0x2d38('0x83')],'seconds')[_0x2d38('0x65')](_0x2d38('0x86'));_0x2a4fed['queuecallerexitreason']='FORWARDTRANSFER';_0x2a4fed[_0x2d38('0x9f')]=!![];_0x2a4fed[_0x2d38('0xa0')]=_0x2d38('0xa1');_0x2a4fed['transferexten']=_0x2870c8['destexten'];_0x2a4fed[_0x2d38('0xa2')]=_0x2870c8['uniqueid'];logger[_0x2d38('0x6f')](_0x2d38('0xa3'),_0x2a4fed['name'],_0x2a4fed[_0x2d38('0x54')]);var _0x35b656=this[_0x2d38('0x10')][_0x2870c8[_0x2d38('0x9c')]];this[_0x2d38('0x10')][_0x2870c8[_0x2d38('0x9c')]]=this['queueReports'][_0x2870c8[_0x2d38('0x4b')]];this[_0x2d38('0x10')][_0x2870c8[_0x2d38('0x4b')]]=_0x35b656;}}else{_0x5eb21e['queuecallerexitreason']=_0x2d38('0xa4')+_0x2870c8[_0x2d38('0x96')]['toUpperCase']();logger[_0x2d38('0x6f')](_0x2d38('0xa5'),_0x5eb21e[_0x2d38('0x4d')],_0x5eb21e[_0x2d38('0x54')],_0x5eb21e[_0x2d38('0x87')]);}}}this['channels'][_0x2870c8[_0x2d38('0x4b')]]=_0x5eb21e;this['emitVoiceQueueChannelRemove'](_0x5eb21e,_0x2d38('0x22'));}}}catch(_0x3bd1b7){logger['error'](_0x2d38('0x90'),_0x2870c8[_0x2d38('0x4b')],util[_0x2d38('0x3f')](_0x3bd1b7,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncVarSet']=function(_0x5c8fb3){try{if(this[_0x2d38('0x67')](_0x5c8fb3)){logger[_0x2d38('0x49')](_0x2d38('0xa6'),_0x5c8fb3[_0x2d38('0x4b')],util['inspect'](_0x5c8fb3,{'showHidden':![],'depth':null}));this[_0x2d38('0xa7')](_0x5c8fb3[_0x2d38('0x4b')],_[_0x2d38('0x7d')](_0x5c8fb3[_0x2d38('0xa8')])[0x0],_0x5c8fb3[_0x2d38('0xa9')]);if(this[_0x2d38('0x10')][_0x5c8fb3[_0x2d38('0x4b')]]){var _0x4ba0c5=_[_0x2d38('0x81')](this[_0x2d38('0x10')][_0x5c8fb3['uniqueid']]);if(_0x4ba0c5){if(this['isNotNull'](_0x5c8fb3['variable'])&&this[_0x2d38('0x67')](_0x5c8fb3[_0x2d38('0xa8')][_0x2d38('0xaa')])){switch(_0x5c8fb3[_0x2d38('0xa9')]){case _0x2d38('0xab'):_0x4ba0c5[_0x2d38('0x94')]=![];_0x4ba0c5['queuecallerexitAt']=null;break;case _0x2d38('0xac'):_0x4ba0c5['lastevent']=_0x2d38('0xad');_0x4ba0c5['queuecallerexit']=!![];_0x4ba0c5[_0x2d38('0x95')]=moment()[_0x2d38('0x65')](_0x2d38('0x86'));_0x4ba0c5['queuecallerleaveAt']=moment()[_0x2d38('0x65')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0x2d38('0x49')](_0x2d38('0xae'),_0x5c8fb3[_0x2d38('0x4b')],util[_0x2d38('0x3f')](_0x4ba0c5,{'showHidden':![],'depth':null}));ami['emit'](_0x2d38('0xaf'),_0x4ba0c5);break;default:_0x4ba0c5[_0x2d38('0x94')]=!![];_0x4ba0c5['queuecallerexitAt']=moment()[_0x2d38('0x65')](_0x2d38('0x86'));_0x4ba0c5[_0x2d38('0x8a')]=moment()[_0x2d38('0x65')](_0x2d38('0x86'));}_0x4ba0c5[_0x2d38('0x1e')]=![];_0x4ba0c5[_0x2d38('0x85')]=null;_0x4ba0c5[_0x2d38('0x87')]=_0x5c8fb3[_0x2d38('0xa9')];this['channels'][_0x5c8fb3[_0x2d38('0x4b')]]=_0x4ba0c5;this[_0x2d38('0x45')](_0x4ba0c5,_0x2d38('0xb0'));}else if(this[_0x2d38('0x67')](_0x5c8fb3[_0x2d38('0xa8')])&&this[_0x2d38('0x67')](_0x5c8fb3[_0x2d38('0xa8')]['queueposition'])){if(!_0x4ba0c5[_0x2d38('0x1e')]){_0x4ba0c5[_0x2d38('0x94')]=!![];_0x4ba0c5[_0x2d38('0x95')]=moment()[_0x2d38('0x65')]('YYYY-MM-DD\x20HH:mm:ss');_0x4ba0c5[_0x2d38('0x87')]=_0x2d38('0xb1');_0x4ba0c5['queuecallerleaveAt']=moment()[_0x2d38('0x65')](_0x2d38('0x86'));this['channels'][_0x5c8fb3[_0x2d38('0x4b')]]=_0x4ba0c5;}}logger[_0x2d38('0x6f')]('[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s',_0x5c8fb3[_0x2d38('0x4b')],_0x4ba0c5[_0x2d38('0x4d')],_0x4ba0c5['type'],_['keys'](_0x5c8fb3[_0x2d38('0xa8')])[0x0],_0x5c8fb3[_0x2d38('0xa9')]);_0x4ba0c5[_0x2d38('0x17')]=this[_0x2d38('0x17')][_0x5c8fb3['uniqueid']];}}}}catch(_0x22672e){logger[_0x2d38('0x3d')](_0x2d38('0xa6'),_0x5c8fb3[_0x2d38('0x4b')],util['inspect'](_0x22672e,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x2d38('0xc')][_0x2d38('0xa7')]=function(_0x1ae97f,_0x20cbc9,_0x3c8e92){var _0x3c62d9=[_0x2d38('0xb2'),_0x2d38('0xb3'),_0x2d38('0xb4'),_0x2d38('0xb5'),_0x2d38('0xb6'),'rtpaudioqoslossbridged','rtpaudioqosrtt',_0x2d38('0xb7'),_0x2d38('0xb8'),_0x2d38('0xb9'),_0x2d38('0xba'),_0x2d38('0xbb'),_0x2d38('0xbc'),_0x2d38('0xbd'),_0x2d38('0xbe'),_0x2d38('0xbf'),'membername',_0x2d38('0xc0'),_0x2d38('0xc1')];if(!_['isNil'](_0x20cbc9)&&!_[_0x2d38('0xc2')](_0x3c62d9,_0x20cbc9)){if(_['isUndefined'](this['variables'][_0x1ae97f])){this[_0x2d38('0x17')][_0x1ae97f]={};}this[_0x2d38('0x17')][_0x1ae97f][_0x20cbc9]=_0x3c8e92;}};VoiceQueueReport[_0x2d38('0xc')][_0x2d38('0x27')]=function(_0x254ff4){try{if(this['isNotNull'](_0x254ff4)){logger['debug']('[%s][voiceQueueReport][hangup]',_0x254ff4[_0x2d38('0x4b')],util['inspect'](_0x254ff4,{'showHidden':![],'depth':null}));if(this[_0x2d38('0x10')][_0x254ff4[_0x2d38('0x4b')]]){for(var _0x432692=0x0,_0x195424={};_0x432692<this[_0x2d38('0x10')][_0x254ff4['uniqueid']][_0x2d38('0xc3')];_0x432692+=0x1){_0x195424=this[_0x2d38('0x10')][_0x254ff4[_0x2d38('0x4b')]][_0x432692];if(this[_0x2d38('0x14')][_0x195424[_0x2d38('0x6e')]]){if(_0x195424[_0x2d38('0x94')]&&_0x195424[_0x2d38('0x9f')]!=!![]){this['voiceQueues'][_0x195424[_0x2d38('0x6e')]][_0x2d38('0xc4')]+=0x1;}if(_0x195424['queuecallerabandon']){this['voiceQueues'][_0x195424[_0x2d38('0x6e')]][_0x2d38('0x5e')]+=0x1;}this[_0x2d38('0x14')][_0x195424['queue']][_0x2d38('0x5c')]+=moment(_0x195424[_0x2d38('0x8a')])[_0x2d38('0xc5')](_0x195424[_0x2d38('0x9d')],_0x2d38('0xc6'))||0x0;if(_0x432692===this[_0x2d38('0x10')][_0x254ff4[_0x2d38('0x4b')]][_0x2d38('0xc3')]-0x1){this[_0x2d38('0x14')][_0x195424[_0x2d38('0x6e')]]['sumDuration']+=moment()[_0x2d38('0xc7')](0x0)[_0x2d38('0xc5')](_0x195424[_0x2d38('0x9d')],'seconds');this[_0x2d38('0x14')][_0x195424[_0x2d38('0x6e')]][_0x2d38('0x5d')]+=0x1;if(_0x195424[_0x2d38('0x82')]){this[_0x2d38('0x14')][_0x195424[_0x2d38('0x6e')]][_0x2d38('0x57')]+=0x1;this[_0x2d38('0x14')][_0x195424[_0x2d38('0x6e')]]['sumBillable']+=moment()[_0x2d38('0xc7')](0x0)[_0x2d38('0xc5')](_0x195424['queuecallerleaveAt'],_0x2d38('0xc6'));_0x195424['queuecallercompleteAt']=moment()[_0x2d38('0x65')](_0x2d38('0x86'));_0x195424['queuecallerexit']=![];_0x195424[_0x2d38('0x95')]=null;}if(_0x195424[_0x2d38('0x94')]&&_0x195424[_0x2d38('0x9f')]!=!![]){_0x195424[_0x2d38('0xc8')]=_0x2d38('0xc4');logger['debug'](_0x2d38('0xc9'),_0x254ff4['uniqueid'],util['inspect'](_0x195424,{'showHidden':![],'depth':null}));ami[_0x2d38('0x47')](_0x2d38('0xca'),_0x195424);}if(_0x195424[_0x2d38('0x1e')]){_0x195424[_0x2d38('0xc8')]=_0x2d38('0x5e');logger['debug'](_0x2d38('0xcb'),_0x254ff4[_0x2d38('0x4b')],util['inspect'](_0x195424,{'showHidden':![],'depth':null}));ami[_0x2d38('0x47')](_0x2d38('0xcc'),_0x195424);}}else{this[_0x2d38('0x14')][_0x195424[_0x2d38('0x6e')]][_0x2d38('0x5b')]+=this['voiceQueues'][_0x195424[_0x2d38('0x6e')]]['sumHoldTime'];}logger[_0x2d38('0x6f')](_0x2d38('0xcd'),_0x254ff4[_0x2d38('0x4b')],_0x195424[_0x2d38('0x4d')],_0x195424[_0x2d38('0x54')],_0x254ff4['cause-txt']);this[_0x2d38('0x12')][_0x254ff4[_0x2d38('0x4b')]]=_0x195424;this[_0x2d38('0x45')](_0x195424,_0x2d38('0xce'));this['emitVoiceQueueSummary'](this[_0x2d38('0x14')][_0x195424[_0x2d38('0x6e')]],'hangup');}}logger['debug'](_0x2d38('0xcf'),_0x254ff4[_0x2d38('0x4b')],util['inspect'](this['queueReports'][_0x254ff4['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x2d38('0x47')](_0x2d38('0xd0'),this[_0x2d38('0x10')][_0x254ff4[_0x2d38('0x4b')]]);delete this[_0x2d38('0x10')][_0x254ff4[_0x2d38('0x4b')]];delete this[_0x2d38('0x12')][_0x254ff4[_0x2d38('0x4b')]];}if(this[_0x2d38('0x17')][_0x254ff4[_0x2d38('0x4b')]]){delete this[_0x2d38('0x17')][_0x254ff4[_0x2d38('0x4b')]];}}}catch(_0x4947ed){logger[_0x2d38('0x3d')](_0x2d38('0xd1'),_0x254ff4[_0x2d38('0x4b')],util[_0x2d38('0x3f')](_0x4947ed,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x2d38('0xc')][_0x2d38('0x2e')]=function(_0x1ef041){try{if(this[_0x2d38('0x67')](_0x1ef041)){logger[_0x2d38('0x49')]('[%s][voiceQueueReport][attendedtransfer]',_0x1ef041[_0x2d38('0x4b')],util['inspect'](_0x1ef041,{'showHidden':![],'depth':null}));var _0x10f3e2;if(this['queueReports'][_0x1ef041['transfereeuniqueid']]){_0x10f3e2=_[_0x2d38('0x81')](this[_0x2d38('0x10')][_0x1ef041[_0x2d38('0xd2')]]);_0x10f3e2[_0x2d38('0xd3')]=_0x1ef041[_0x2d38('0xd4')];_0x10f3e2[_0x2d38('0xa2')]=_0x1ef041[_0x2d38('0xd5')];_0x10f3e2[_0x2d38('0x87')]='ATTENDEDTRANSFER';_0x10f3e2[_0x2d38('0x9f')]=!![];_0x10f3e2[_0x2d38('0xa0')]=_0x2d38('0xd6');if(this['queueReports'][_0x1ef041[_0x2d38('0xd5')]]){var _0x48a579=this[_0x2d38('0x10')][_0x1ef041[_0x2d38('0xd5')]];this[_0x2d38('0x10')][_0x1ef041[_0x2d38('0xd5')]]=this['queueReports'][_0x1ef041[_0x2d38('0xd2')]];this[_0x2d38('0x10')][_0x1ef041['transfereeuniqueid']]=_0x48a579;var _0x3d0754=_[_0x2d38('0x81')](this[_0x2d38('0x10')][_0x1ef041[_0x2d38('0xd2')]]);_0x3d0754['switch']=!![];}logger[_0x2d38('0x6f')](_0x2d38('0xd7'),_0x1ef041[_0x2d38('0x4b')],_0x10f3e2[_0x2d38('0x4d')],_0x10f3e2['type'],_0x10f3e2['transferexten'],_0x10f3e2[_0x2d38('0xa2')]);}else if(this[_0x2d38('0x10')][_0x1ef041[_0x2d38('0xd8')]]){_0x10f3e2=_[_0x2d38('0x81')](this[_0x2d38('0x10')][_0x1ef041[_0x2d38('0xd8')]]);_0x10f3e2[_0x2d38('0xd3')]=_0x1ef041[_0x2d38('0xd9')];_0x10f3e2[_0x2d38('0xa2')]=_0x1ef041[_0x2d38('0xda')];_0x10f3e2[_0x2d38('0x87')]=_0x2d38('0xdb');_0x10f3e2[_0x2d38('0x9f')]=!![];_0x10f3e2['transfertype']='ATTENDED';if(this[_0x2d38('0x10')][_0x1ef041[_0x2d38('0xda')]]){var _0x48a579=this[_0x2d38('0x10')][_0x1ef041[_0x2d38('0xda')]];this['queueReports'][_0x1ef041['origtransfereruniqueid']]=this[_0x2d38('0x10')][_0x1ef041[_0x2d38('0xd8')]];this['queueReports'][_0x1ef041[_0x2d38('0xd8')]]=_0x48a579;var _0x3d0754=_[_0x2d38('0x81')](this[_0x2d38('0x10')][_0x1ef041['transfertargetuniqueid']]);_0x3d0754[_0x2d38('0x36')]=!![];}logger[_0x2d38('0x6f')](_0x2d38('0xd7'),_0x1ef041['uniqueid'],_0x10f3e2[_0x2d38('0x4d')],_0x10f3e2['type'],_0x10f3e2[_0x2d38('0xd3')],_0x10f3e2['transferuniqueid']);}}}catch(_0x338c30){logger['error']('[%s][voiceQueueReport][attendedtransfer]',_0x1ef041[_0x2d38('0x4b')],util[_0x2d38('0x3f')](_0x338c30,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x2d38('0xc')][_0x2d38('0x2f')]=function(_0x42b475){try{if(this[_0x2d38('0x67')](_0x42b475)){logger[_0x2d38('0x49')](_0x2d38('0xdc'),_0x42b475[_0x2d38('0x4b')],util[_0x2d38('0x3f')](_0x42b475,{'showHidden':![],'depth':null}));if(this[_0x2d38('0x10')][_0x42b475[_0x2d38('0xd2')]]){var _0x5a00c2=_[_0x2d38('0x81')](this[_0x2d38('0x10')][_0x42b475[_0x2d38('0xd2')]]);_0x5a00c2[_0x2d38('0x87')]=_0x2d38('0xdd');_0x5a00c2[_0x2d38('0x9f')]=!![];_0x5a00c2['transfertype']='BLIND';_0x5a00c2[_0x2d38('0xd3')]=_0x42b475[_0x2d38('0xde')];_0x5a00c2['transferuniqueid']=_0x42b475[_0x2d38('0xd2')];logger['info'](_0x2d38('0xdf'),_0x42b475[_0x2d38('0x4b')],_0x5a00c2[_0x2d38('0x4d')],_0x5a00c2[_0x2d38('0x54')],_0x5a00c2[_0x2d38('0xd3')],_0x5a00c2[_0x2d38('0xa2')]);this[_0x2d38('0x27')]({'event':'BlindTransfer','uniqueid':_0x42b475[_0x2d38('0xd2')],'context':_0x42b475[_0x2d38('0xe0')],'channel':_0x42b475[_0x2d38('0xe1')]});}}}catch(_0xaa13fd){logger[_0x2d38('0x3d')](_0x2d38('0xdc'),_0x42b475[_0x2d38('0x4b')],util['inspect'](_0xaa13fd,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x2d38('0xc')][_0x2d38('0x2a')]=function(_0x51ce58){try{if(this[_0x2d38('0x67')](_0x51ce58)){logger[_0x2d38('0x49')](_0x2d38('0xe2'),_0x51ce58[_0x2d38('0x4b')],util[_0x2d38('0x3f')](_0x51ce58,{'showHidden':![],'depth':null}));if(this[_0x2d38('0x10')][_0x51ce58['uniqueid']]){var _0x59117d=_['last'](this[_0x2d38('0x10')][_0x51ce58['uniqueid']]);if(!_['isNil'](_0x59117d[_0x2d38('0x8a')])){_0x59117d['mohstarttime']=moment()[_0x2d38('0x65')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0x2d38('0x6f')]('[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s',_0x51ce58[_0x2d38('0x4b')],_0x59117d['mohstarttime']);}}}}catch(_0x1cfb93){logger[_0x2d38('0x3d')](_0x2d38('0xe2'),_0x51ce58[_0x2d38('0x4b')],util[_0x2d38('0x3f')](_0x1cfb93,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x2d38('0xc')]['syncMusicOnHoldStop']=function(_0x1e9b40){try{if(this[_0x2d38('0x67')](_0x1e9b40)){logger[_0x2d38('0x49')](_0x2d38('0xe3'),_0x1e9b40[_0x2d38('0x4b')],util[_0x2d38('0x3f')](_0x1e9b40,{'showHidden':![],'depth':null}));if(this[_0x2d38('0x10')][_0x1e9b40[_0x2d38('0x4b')]]){var _0x1d7600=_[_0x2d38('0x81')](this[_0x2d38('0x10')][_0x1e9b40['uniqueid']]);if(!_[_0x2d38('0x37')](_0x1d7600[_0x2d38('0xe4')])){_0x1d7600[_0x2d38('0xe5')]+=moment()[_0x2d38('0xc7')](0x0)[_0x2d38('0xc5')](_0x1d7600['mohstarttime'],_0x2d38('0xc6'));logger[_0x2d38('0x6f')](_0x2d38('0xe6'),_0x1e9b40[_0x2d38('0x4b')],_0x1d7600['mohtime']);delete _0x1d7600[_0x2d38('0xe4')];}}}}catch(_0x56b0b4){logger['error'](_0x2d38('0xe3'),_0x1e9b40[_0x2d38('0x4b')],util['inspect'](_0x56b0b4,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x2d38('0xc')][_0x2d38('0xe7')]=function(_0x415a9f){try{if(this[_0x2d38('0x67')](_0x415a9f)){logger[_0x2d38('0x49')]('[%s][voiceQueueReport][newexten]\x20event:',_0x415a9f['uniqueid'],util[_0x2d38('0x3f')](_0x415a9f,{'showHidden':![],'depth':null}));if(_0x415a9f[_0x2d38('0xe8')][_0x2d38('0x9a')]()===_0x2d38('0xe9')){_0x415a9f['applicationdata']=_0x415a9f[_0x2d38('0xea')]&&_0x415a9f[_0x2d38('0xea')][_0x2d38('0x99')](_0x2d38('0xeb'))?_0x415a9f[_0x2d38('0xea')]:(_0x415a9f[_0x2d38('0xea')]||_0x415a9f['applicationdata'])['toLowerCase']();if(_[_0x2d38('0x99')](_0x415a9f[_0x2d38('0xec')][_0x2d38('0x9a')](),_0x2d38('0xed'))){logger[_0x2d38('0x6f')]('[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s',_0x415a9f[_0x2d38('0x4b')],_0x415a9f[_0x2d38('0xe8')],_0x415a9f['applicationdata']);if(_[_0x2d38('0x68')](this['channels'][_0x415a9f[_0x2d38('0x4b')]]))this['channels'][_0x415a9f[_0x2d38('0x4b')]]={};var _0x22e212=_0x415a9f['applicationdata']['split']('=');var _0x5bdab6=_0x22e212[0x0][_0x2d38('0x9a')]()[_0x2d38('0xee')](/cdr\((.*)\)/);if(_0x5bdab6)this['channels'][_0x415a9f[_0x2d38('0x4b')]][_0x5bdab6[0x1]]=_0x22e212[0x1];}}}}catch(_0xe0648e){logger[_0x2d38('0x3d')](_0x2d38('0xef'),_0x415a9f[_0x2d38('0x4b')],util[_0x2d38('0x3f')](_0xe0648e,{'showHidden':![],'depth':null}));}};module[_0x2d38('0xf0')]=VoiceQueueReport;
\ No newline at end of file
+var _0xe630=['[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','assigned','membername','queuecallercomplete','queuecallerexitAt','transfer','reason','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','toLowerCase','local/','queuecallerexit','FORWARDTRANSFER','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','linkedid','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','queuecallerexitreason','[%s][voiceQueueReport][agentcomplete]','keys','variable','value','queuestatus','CONTINUE','lastevent','custom:timeout','varset','queueposition','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','[%s][voiceQueueReport][varset]','rtpaudioqos','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','memberdynamic','memberlastcall','memberpenalty','[%s][voiceQueueReport][hangup]','length','diff','seconds','milliseconds','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','cause-txt','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfererexten','ATTENDEDTRANSFER','transfertype','ATTENDED','secondtransfereruniqueid','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','BLIND','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','transfererchannel','[%s][voiceQueueReport][musiconholdstart]','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','mohstarttime','[%s][voiceQueueReport][musiconholdstop]','mohtime','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','[%s][voiceQueueReport][newexten]\x20event:','set','applicationdata','appdata','CDR(routeAlias)','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','application','split','match','[%s][voiceQueueReport][newexten]','lodash','moment','md5','ioredis','../../../config/environment','ami','../ami','../model/queueReport','defaults','redis','localhost','socket.io-emitter','enqueue','tail','finally','sequence','queueReports','agents','queueChannels','voiceQueues','flagQueueSummary','campaigns','variables','queuesummary','syncQueueSummary','syncQueueSummaryComplete','bind','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','agentcomplete','syncAgentComplete','syncAgentConnect','syncVarSet','hangup','syncHangup','syncFullyBooted','newexten','syncNewExten','musiconholdstart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','blindtransfer','syncBlindTransfer','loopQueueSummary','loopQueueShow','isEmpty','hasOwnProperty','originated','pTalking','waiting','queueStatusComplete','unlockRR','prototype','clearZombieChannels','channels','switch','isNil','Action','status','channel','message','No\x20such\x20channel','error','inspect','[%s][voiceQueueReport][checkQueueReport]','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','emit','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','voice_queue_channel:save','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','voice:queue:%s','name','voice_queue_channel:remove','voice_queue_presence:remove','emitVoiceQueueSummary','type','inbound','strategy','answered','available','sumBillable','sumDuration','sumHoldTime','total','unmanaged','abandoned','Trunk','callerid','Interval','stringify','[voiceQueueReport][','voice_queue:save','isUndefined','queues','catch','[voiceQueueReport][queues]','[voiceQueueReport][queuesummary]','isNotNull','queue','[voiceQueueReport][queuesummary]\x20event:','info','countBy','callers','toNumber','loggedIn','loggedin','talking','custom:queuesummary','[voiceQueueReport][queuesummarycomplete]\x20event:','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','push','emitVoiceQueueChannelSave','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercompleteAt','holdtime','originalposition','queuecallerabandonAt','ABANDONED','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','queuecallerleave','[%s][voiceQueueReport][agentconnect]','COMPLETEDBYAGENT'];(function(_0x39fba9,_0x245311){var _0x3078c5=function(_0x4540ff){while(--_0x4540ff){_0x39fba9['push'](_0x39fba9['shift']());}};_0x3078c5(++_0x245311);}(_0xe630,0x149));var _0x0e63=function(_0x50027a,_0x7f0218){_0x50027a=_0x50027a-0x0;var _0x3fab50=_0xe630[_0x50027a];return _0x3fab50;};'use strict';var _=require(_0x0e63('0x0'));var moment=require(_0x0e63('0x1'));var util=require('util');var md5=require(_0x0e63('0x2'));var Redis=require(_0x0e63('0x3'));var config=require(_0x0e63('0x4'));var logger=require('../../../config/logger')(_0x0e63('0x5'));var ami=require(_0x0e63('0x6'));var QueueReport=require(_0x0e63('0x7'));config['redis']=_[_0x0e63('0x8')](config[_0x0e63('0x9')],{'host':_0x0e63('0xa'),'port':0x18eb});var io=require(_0x0e63('0xb'))(new Redis(config[_0x0e63('0x9')]));var Sequence=function(){};Sequence['prototype'][_0x0e63('0xc')]=function(_0x2db49a){this[_0x0e63('0xd')]=this[_0x0e63('0xd')]?this[_0x0e63('0xd')][_0x0e63('0xe')](_0x2db49a):_0x2db49a();};function VoiceQueueReport(_0x16f195){this[_0x0e63('0xf')]=new Sequence();this[_0x0e63('0x10')]={};this[_0x0e63('0x11')]=_0x16f195[_0x0e63('0x11')];this['channels']=_0x16f195[_0x0e63('0x12')];this[_0x0e63('0x13')]=_0x16f195[_0x0e63('0x13')];this[_0x0e63('0x14')]=!![];this[_0x0e63('0x15')]=_0x16f195[_0x0e63('0x15')];this[_0x0e63('0x16')]={};ami['on'](_0x0e63('0x17'),this[_0x0e63('0x18')]['bind'](this));ami['on']('queuesummarycomplete',this[_0x0e63('0x19')][_0x0e63('0x1a')](this));ami['on'](_0x0e63('0x1b'),this[_0x0e63('0x1c')][_0x0e63('0x1a')](this));ami['on'](_0x0e63('0x1d'),this['syncQueueCallerAbandon']['bind'](this));ami['on']('queuecallerleave',this['syncQueueCallerLeave'][_0x0e63('0x1a')](this));ami['on'](_0x0e63('0x1e'),this[_0x0e63('0x1f')]['bind'](this));ami['on']('agentconnect',this[_0x0e63('0x20')]['bind'](this));ami['on']('varset',this[_0x0e63('0x21')]['bind'](this));ami['on'](_0x0e63('0x22'),this[_0x0e63('0x23')]['bind'](this));ami['on']('fullybooted',this[_0x0e63('0x24')][_0x0e63('0x1a')](this));ami['on'](_0x0e63('0x25'),this[_0x0e63('0x26')][_0x0e63('0x1a')](this));ami['on'](_0x0e63('0x27'),this['syncMusicOnHoldStart'][_0x0e63('0x1a')](this));ami['on'](_0x0e63('0x28'),this[_0x0e63('0x29')][_0x0e63('0x1a')](this));ami['on'](_0x0e63('0x2a'),this['syncAttendedTransfer']['bind'](this));ami['on'](_0x0e63('0x2b'),this[_0x0e63('0x2c')][_0x0e63('0x1a')](this));this[_0x0e63('0x2d')]();this[_0x0e63('0x2e')]();}function clearChannels(_0x484ff3){if(!_[_0x0e63('0x2f')](_0x484ff3)){for(var _0x3c7de3 in _0x484ff3){if(_0x484ff3[_0x0e63('0x30')](_0x3c7de3)){delete _0x484ff3[_0x3c7de3];}}}}function clearCampaigns(_0xaa0600){if(!_[_0x0e63('0x2f')](_0xaa0600)){for(var _0x1dc52c in _0xaa0600){if(_0xaa0600[_0x0e63('0x30')](_0x1dc52c)){_0xaa0600[_0x1dc52c][_0x0e63('0x31')]=0x0;}}}}function clearVoiceQueues(_0x25e88e){if(!_[_0x0e63('0x2f')](_0x25e88e)){for(var _0x46c864 in _0x25e88e){if(_0x25e88e['hasOwnProperty'](_0x46c864)){_0x25e88e[_0x46c864]['originated']=0x0;_0x25e88e[_0x46c864]['talking']=0x0;_0x25e88e[_0x46c864][_0x0e63('0x32')]=0x0;_0x25e88e[_0x46c864][_0x0e63('0x33')]=0x0;_0x25e88e[_0x46c864][_0x0e63('0x34')]=!![];}}}}function clearAgentBooked(_0x188326){if(!_[_0x0e63('0x2f')](_0x188326)){for(var _0x816b25 in _0x188326){if(_0x188326[_0x0e63('0x30')](_0x816b25)){_0x188326[_0x816b25][_0x0e63('0x35')]=!![];}}}}VoiceQueueReport[_0x0e63('0x36')][_0x0e63('0x37')]=function(){var _0x1069c7=this;for(var _0x319061 in this[_0x0e63('0x38')]){if(this[_0x0e63('0x38')][_0x0e63('0x30')](_0x319061)&&!this[_0x0e63('0x38')][_0x319061][_0x0e63('0x39')]){this['sequence'][_0x0e63('0xc')](function(){if(!_[_0x0e63('0x3a')](_0x1069c7['channels'][_0x319061])){return ami[_0x0e63('0x3b')]({'action':_0x0e63('0x3c'),'channel':_0x1069c7[_0x0e63('0x38')][_0x319061][_0x0e63('0x3d')]})['catch'](function(_0x20de1b){if(_0x20de1b[_0x0e63('0x3e')]===_0x0e63('0x3f')){setTimeout(function(){if(_0x1069c7[_0x0e63('0x38')][_0x319061]){delete _0x1069c7[_0x0e63('0x38')][_0x319061];logger[_0x0e63('0x40')]('[%s][voiceQueueReport][checkChannel]',_0x319061,util[_0x0e63('0x41')](_0x20de1b,{'showHidden':![],'depth':null}));}if(_0x1069c7[_0x0e63('0x10')][_0x319061]){delete _0x1069c7[_0x0e63('0x10')][_0x319061];logger[_0x0e63('0x40')](_0x0e63('0x42'),_0x319061,util[_0x0e63('0x41')](_0x20de1b,{'showHidden':![],'depth':null}));}if(_0x1069c7['variables'][_0x319061]){delete _0x1069c7[_0x0e63('0x16')][_0x319061];logger[_0x0e63('0x40')](_0x0e63('0x43'),_0x319061,util[_0x0e63('0x41')](_0x20de1b,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x0e63('0x36')][_0x0e63('0x24')]=function(){logger['error'](_0x0e63('0x44'));clearChannels(this['channels']);this[_0x0e63('0x45')](this[_0x0e63('0x10')]);clearAgentBooked(this[_0x0e63('0x11')]);clearVoiceQueues(this[_0x0e63('0x13')]);clearCampaigns(this[_0x0e63('0x15')]);};VoiceQueueReport['prototype']['clearQueueReport']=function(_0x5e9f0f){var _0x162fe3=this;if(!_[_0x0e63('0x2f')](_0x5e9f0f)){for(var _0x5aebcc in _0x5e9f0f){if(_0x5e9f0f[_0x0e63('0x30')](_0x5aebcc)){_0x162fe3[_0x0e63('0x46')](_0x5e9f0f[_0x5aebcc],'clearqueuereport');delete _0x5e9f0f[_0x5aebcc];}}}};VoiceQueueReport['prototype'][_0x0e63('0x47')]=function(_0x5eed7e,_0x26e386,_0x5486a5){io['to'](_0x5eed7e)[_0x0e63('0x47')](_0x26e386,_0x5486a5);};VoiceQueueReport[_0x0e63('0x36')]['emitVoiceQueueChannelSave']=function(_0x198b04,_0x19b608){logger[_0x0e63('0x48')](_0x0e63('0x49')+_0x19b608+_0x0e63('0x4a'),_0x198b04[_0x0e63('0x4b')],util[_0x0e63('0x41')](_0x198b04,{'showHidden':![],'depth':null}));this[_0x0e63('0x47')](util[_0x0e63('0x4c')]('voice:queue:%s',_0x198b04['name']),_0x0e63('0x4d'),_0x198b04);io['emit'](_0x0e63('0x4e'),_0x198b04);};VoiceQueueReport[_0x0e63('0x36')][_0x0e63('0x46')]=function(_0x156ba1,_0x592f38){logger[_0x0e63('0x48')](_0x0e63('0x49')+_0x592f38+_0x0e63('0x4f'),_0x156ba1[_0x0e63('0x4b')],util[_0x0e63('0x41')](_0x156ba1,{'showHidden':![],'depth':null}));this[_0x0e63('0x47')](util[_0x0e63('0x4c')](_0x0e63('0x50'),_0x156ba1[_0x0e63('0x51')]),_0x0e63('0x52'),_0x156ba1);io['emit'](_0x0e63('0x53'),_0x156ba1);};VoiceQueueReport[_0x0e63('0x36')][_0x0e63('0x54')]=function(_0xe101e1,_0x5e66c5){if(_0xe101e1[_0x0e63('0x55')]===_0x0e63('0x56')){var _0x847a34={'id':_0xe101e1['id'],'name':_0xe101e1['name'],'strategy':_0xe101e1[_0x0e63('0x57')],'answered':_0xe101e1[_0x0e63('0x58')],'available':_0xe101e1[_0x0e63('0x59')],'loggedIn':_0xe101e1['loggedIn'],'pTalking':_0xe101e1[_0x0e63('0x32')],'sumBillable':_0xe101e1[_0x0e63('0x5a')],'sumDuration':_0xe101e1[_0x0e63('0x5b')],'sumHoldTime':_0xe101e1[_0x0e63('0x5c')]||0x0,'talking':_0xe101e1['talking'],'total':_0xe101e1[_0x0e63('0x5d')],'type':_0xe101e1['type'],'unmanaged':_0xe101e1[_0x0e63('0x5e')],'abandoned':_0xe101e1[_0x0e63('0x5f')],'waiting':_0xe101e1[_0x0e63('0x33')]};if(_0xe101e1[_0x0e63('0x60')]){_0x847a34[_0x0e63('0x60')]={'id':_0xe101e1[_0x0e63('0x60')]['id'],'name':_0xe101e1[_0x0e63('0x60')][_0x0e63('0x51')],'active':_0xe101e1['Trunk']['active'],'callerid':_0xe101e1['Trunk'][_0x0e63('0x61')]};}if(_0xe101e1[_0x0e63('0x62')]){_0x847a34[_0x0e63('0x62')]={'id':_0xe101e1['Interval']['id'],'name':_0xe101e1[_0x0e63('0x62')][_0x0e63('0x51')]};}var _0x1b743a=md5(JSON[_0x0e63('0x63')](_0x847a34));if(_0xe101e1['md5']!==_0x1b743a){_0xe101e1['md5']=_0x1b743a;logger[_0x0e63('0x48')](_0x0e63('0x64')+_0x5e66c5+']\x20sending\x20voice_queue:save\x20event:',util[_0x0e63('0x41')](_0x847a34,{'showHidden':![],'depth':null}));this[_0x0e63('0x47')](util[_0x0e63('0x4c')]('voice:queue:%s',_0x847a34[_0x0e63('0x51')]),_0x0e63('0x65'),_0x847a34);}}};VoiceQueueReport[_0x0e63('0x36')]['isNotNull']=function(_0x2c1d61){return _0x2c1d61!==null&&!_[_0x0e63('0x66')](_0x2c1d61);};VoiceQueueReport[_0x0e63('0x36')][_0x0e63('0x2e')]=function(){var _0x1b0c5c=this;setInterval(function(){_0x1b0c5c[_0x0e63('0x37')]();ami[_0x0e63('0x3b')]({'action':_0x0e63('0x67')})[_0x0e63('0x68')](function(_0x1978b1){logger['error'](_0x0e63('0x69'),util[_0x0e63('0x41')](_0x1978b1,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x0e63('0x36')][_0x0e63('0x2d')]=function(){var _0x241e70=this;setInterval(function(){if(_0x241e70[_0x0e63('0x14')]){return ami[_0x0e63('0x3b')]({'action':_0x0e63('0x17')})['then'](function(_0xee5c8b){_0x241e70[_0x0e63('0x14')]=![];})[_0x0e63('0x68')](function(_0x174d15){logger[_0x0e63('0x40')](_0x0e63('0x6a'),util[_0x0e63('0x41')](_0x174d15,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x0e63('0x36')][_0x0e63('0x18')]=function(_0x4266a1){try{if(this[_0x0e63('0x6b')](_0x4266a1)&&this[_0x0e63('0x6b')](_0x4266a1[_0x0e63('0x6c')])){logger['debug'](_0x0e63('0x6d'),util[_0x0e63('0x41')](_0x4266a1,{'showHidden':![],'depth':null}));if(this['voiceQueues'][_0x4266a1[_0x0e63('0x6c')]]){logger[_0x0e63('0x6e')]('[voiceQueueReport][queuesummary]\x20name:%s',_0x4266a1['queue']);var _0x2400b3=_[_0x0e63('0x6f')](this[_0x0e63('0x38')],_0x0e63('0x6c'))[_0x4266a1[_0x0e63('0x6c')]]||0x0;var _0x274e2c=_0x2400b3-_0x4266a1[_0x0e63('0x70')];if(this[_0x0e63('0x13')][_0x4266a1[_0x0e63('0x6c')]][_0x0e63('0x33')]!==_[_0x0e63('0x71')](_0x4266a1[_0x0e63('0x70')])||this[_0x0e63('0x13')][_0x4266a1[_0x0e63('0x6c')]][_0x0e63('0x72')]!==_[_0x0e63('0x71')](_0x4266a1[_0x0e63('0x73')])||this[_0x0e63('0x13')][_0x4266a1[_0x0e63('0x6c')]][_0x0e63('0x59')]!==_[_0x0e63('0x71')](_0x4266a1[_0x0e63('0x59')])||this[_0x0e63('0x13')][_0x4266a1[_0x0e63('0x6c')]][_0x0e63('0x74')]!==_0x274e2c){this['voiceQueues'][_0x4266a1[_0x0e63('0x6c')]]['waiting']=_[_0x0e63('0x71')](_0x4266a1['callers']);this['voiceQueues'][_0x4266a1[_0x0e63('0x6c')]][_0x0e63('0x72')]=_[_0x0e63('0x71')](_0x4266a1['loggedin']);this[_0x0e63('0x13')][_0x4266a1[_0x0e63('0x6c')]][_0x0e63('0x59')]=_['toNumber'](_0x4266a1[_0x0e63('0x59')]);this[_0x0e63('0x13')][_0x4266a1['queue']]['talking']=_0x274e2c>0x0?_0x274e2c:0x0;this[_0x0e63('0x13')][_0x4266a1['queue']][_0x0e63('0x74')]=this['voiceQueues'][_0x4266a1[_0x0e63('0x6c')]][_0x0e63('0x74')]>_[_0x0e63('0x71')](_0x4266a1[_0x0e63('0x73')])?_[_0x0e63('0x71')](_0x4266a1['loggedin']):this[_0x0e63('0x13')][_0x4266a1[_0x0e63('0x6c')]][_0x0e63('0x74')];this['emitVoiceQueueSummary'](this[_0x0e63('0x13')][_0x4266a1[_0x0e63('0x6c')]],_0x0e63('0x17'));}logger[_0x0e63('0x48')]('[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:',util[_0x0e63('0x41')](this[_0x0e63('0x13')][_0x4266a1[_0x0e63('0x6c')]],{'showHidden':![],'depth':null}));ami['emit'](_0x0e63('0x75'),this['voiceQueues'][_0x4266a1['queue']]);}}}catch(_0x46fbed){logger[_0x0e63('0x40')](_0x0e63('0x6a'),util['inspect'](_0x46fbed,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x0e63('0x19')]=function(_0x3313f7){logger[_0x0e63('0x48')](_0x0e63('0x76'),util[_0x0e63('0x41')](_0x3313f7,{'showHidden':![],'depth':null}));this[_0x0e63('0x14')]=!![];};VoiceQueueReport['prototype']['syncQueueCallerJoin']=function(_0x305e4d){try{if(this['isNotNull'](_0x305e4d)){logger[_0x0e63('0x48')]('[%s][voiceQueueReport][queuecallerjoin]',_0x305e4d['uniqueid'],util['inspect'](_0x305e4d,{'showHidden':![],'depth':null}));if(_['isUndefined'](this[_0x0e63('0x10')][_0x305e4d[_0x0e63('0x4b')]]))this[_0x0e63('0x10')][_0x305e4d[_0x0e63('0x4b')]]=[];if(_[_0x0e63('0x66')](this[_0x0e63('0x38')][_0x305e4d[_0x0e63('0x4b')]]))this[_0x0e63('0x38')][_0x305e4d[_0x0e63('0x4b')]]={};var _0x5e1225=new QueueReport();_0x5e1225[_0x0e63('0x51')]=_0x305e4d[_0x0e63('0x6c')];_0x5e1225[_0x0e63('0x55')]=this[_0x0e63('0x13')][_0x5e1225[_0x0e63('0x51')]]&&this[_0x0e63('0x13')][_0x5e1225[_0x0e63('0x51')]]['type']?this[_0x0e63('0x13')][_0x5e1225[_0x0e63('0x51')]][_0x0e63('0x55')]||'inbound':_0x0e63('0x56');_0x5e1225[_0x0e63('0x6c')]=_0x305e4d['queue'];_0x5e1225[_0x0e63('0x77')]=moment()[_0x0e63('0x4c')](_0x0e63('0x78'));_0x5e1225[_0x0e63('0x79')]=_0x305e4d['position'];_0x5e1225[_0x0e63('0x7a')]=_0x305e4d[_0x0e63('0x7a')];_0x5e1225['uniqueid']=_0x305e4d[_0x0e63('0x4b')];_0x5e1225[_0x0e63('0x7b')]=this[_0x0e63('0x38')][_0x305e4d['uniqueid']][_0x0e63('0x7b')];logger[_0x0e63('0x6e')]('[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s',_0x5e1225[_0x0e63('0x51')],_0x5e1225['type']);_['merge'](_0x5e1225,_['pick'](_0x305e4d,_['keys'](_0x5e1225)));this['queueReports'][_0x305e4d[_0x0e63('0x4b')]][_0x0e63('0x7c')](_0x5e1225);this[_0x0e63('0x38')][_0x305e4d[_0x0e63('0x4b')]]=_0x5e1225;this[_0x0e63('0x7d')](_0x5e1225,_0x0e63('0x1b'));}}catch(_0x5755c3){logger[_0x0e63('0x40')]('[%s][voiceQueueReport][queuecallerjoin]',_0x305e4d[_0x0e63('0x4b')],util[_0x0e63('0x41')](_0x5755c3,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0e63('0x36')]['syncQueueCallerAbandon']=function(_0x880c92){try{if(this['isNotNull'](_0x880c92)){logger[_0x0e63('0x48')](_0x0e63('0x7e'),_0x880c92[_0x0e63('0x4b')],util['inspect'](_0x880c92,{'showHidden':![],'depth':null}));if(this[_0x0e63('0x10')][_0x880c92['uniqueid']]){var _0x5021fa=_[_0x0e63('0x7f')](this[_0x0e63('0x10')][_0x880c92['uniqueid']]);_0x5021fa['queuecallercomplete']=![];_0x5021fa[_0x0e63('0x80')]=null;_0x5021fa[_0x0e63('0x81')]=_0x880c92[_0x0e63('0x81')];_0x5021fa['originalposition']=_0x880c92[_0x0e63('0x82')];_0x5021fa[_0x0e63('0x1d')]=!![];_0x5021fa[_0x0e63('0x83')]=moment()['format'](_0x0e63('0x78'));_0x5021fa['queuecallerexitreason']=_0x0e63('0x84');_0x5021fa[_0x0e63('0x85')]=null;logger[_0x0e63('0x6e')](_0x0e63('0x86'),_0x5021fa['name'],_0x5021fa[_0x0e63('0x55')]);this[_0x0e63('0x38')][_0x880c92[_0x0e63('0x4b')]]=_0x5021fa;this[_0x0e63('0x46')](_0x5021fa,_0x0e63('0x1d'));}}}catch(_0x312928){logger['error'](_0x0e63('0x7e'),_0x880c92[_0x0e63('0x4b')],util['inspect'](_0x312928,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0e63('0x36')]['syncQueueCallerLeave']=function(_0x14e0e5){try{if(this[_0x0e63('0x6b')](_0x14e0e5)){logger['debug'](_0x0e63('0x87'),_0x14e0e5[_0x0e63('0x4b')],util[_0x0e63('0x41')](_0x14e0e5,{'showHidden':![],'depth':null}));if(this[_0x0e63('0x10')][_0x14e0e5[_0x0e63('0x4b')]]){var _0x33ead9=_[_0x0e63('0x7f')](this['queueReports'][_0x14e0e5[_0x0e63('0x4b')]]);_0x33ead9[_0x0e63('0x88')]=moment()[_0x0e63('0x4c')](_0x0e63('0x78'));_0x33ead9[_0x0e63('0x89')]=_0x14e0e5[_0x0e63('0x89')];_0x33ead9[_0x0e63('0x8a')]=_0x14e0e5[_0x0e63('0x8a')];logger['info'](_0x0e63('0x8b'),_0x33ead9['name'],_0x33ead9['type'],_0x14e0e5['connectedlinenum'],_0x14e0e5[_0x0e63('0x8a')]);this[_0x0e63('0x38')][_0x14e0e5['uniqueid']]=_0x33ead9;this[_0x0e63('0x7d')](_0x33ead9,_0x0e63('0x8c'));}}}catch(_0x11ce89){logger[_0x0e63('0x40')]('[%s][voiceQueueReport][queuecallerleave]',_0x14e0e5[_0x0e63('0x4b')],util[_0x0e63('0x41')](_0x11ce89,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x0e63('0x20')]=function(_0x272656){try{if(this[_0x0e63('0x6b')](_0x272656)){logger[_0x0e63('0x48')](_0x0e63('0x8d'),_0x272656['uniqueid'],util[_0x0e63('0x41')](_0x272656,{'showHidden':![],'depth':null}));if(this[_0x0e63('0x10')][_0x272656[_0x0e63('0x4b')]]){var _0x4c457f=_[_0x0e63('0x7f')](this[_0x0e63('0x10')][_0x272656[_0x0e63('0x4b')]]);_0x4c457f['queuecallercomplete']=!![];_0x4c457f['queuecallerexitreason']=_0x0e63('0x8e');logger[_0x0e63('0x6e')](_0x0e63('0x8f'),_0x4c457f[_0x0e63('0x51')],_0x4c457f[_0x0e63('0x55')]);}}}catch(_0x95e32e){logger[_0x0e63('0x40')](_0x0e63('0x8d'),_0x272656[_0x0e63('0x4b')],util[_0x0e63('0x41')](_0x95e32e,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0e63('0x36')][_0x0e63('0x1f')]=function(_0x15825b){try{if(this[_0x0e63('0x6b')](_0x15825b)){logger['debug']('[%s][voiceQueueReport][agentcomplete]',_0x15825b[_0x0e63('0x4b')],util[_0x0e63('0x41')](_0x15825b,{'showHidden':![],'depth':null}));if(this[_0x0e63('0x10')][_0x15825b[_0x0e63('0x4b')]]){var _0x540437=_[_0x0e63('0x7f')](this[_0x0e63('0x10')][_0x15825b[_0x0e63('0x4b')]]);_0x540437[_0x0e63('0x1d')]=![];_0x540437[_0x0e63('0x83')]=null;_0x540437[_0x0e63('0x90')]=!![];_0x540437[_0x0e63('0x85')]=_0x15825b[_0x0e63('0x91')];_0x540437[_0x0e63('0x81')]=_0x15825b['holdtime'];_0x540437[_0x0e63('0x92')]=!![];_0x540437['queuecallerexit']=![];_0x540437[_0x0e63('0x93')]=null;if(!_0x540437[_0x0e63('0x94')]){if(_0x15825b[_0x0e63('0x95')]==_0x0e63('0x94')){_0x540437['queuecallerexitreason']=_0x0e63('0x96');logger[_0x0e63('0x6e')](_0x0e63('0x97'),_0x540437[_0x0e63('0x51')],_0x540437[_0x0e63('0x55')]);}else{if(_[_0x0e63('0x98')](_0x15825b[_0x0e63('0x3d')][_0x0e63('0x99')](),_0x0e63('0x9a'))){if(this[_0x0e63('0x10')][_0x15825b['linkedid']]){var _0x4de256=_[_0x0e63('0x7f')](this[_0x0e63('0x10')][_0x15825b['linkedid']]);_0x4de256[_0x0e63('0x92')]=![];_0x4de256[_0x0e63('0x9b')]=!![];_0x4de256[_0x0e63('0x93')]=moment(_0x540437[_0x0e63('0x77')])['add'](_0x15825b[_0x0e63('0x81')],'seconds')[_0x0e63('0x4c')](_0x0e63('0x78'));_0x4de256['queuecallerexitreason']=_0x0e63('0x9c');_0x4de256[_0x0e63('0x94')]=!![];_0x4de256['transfertype']='FORWARD';_0x4de256[_0x0e63('0x9d')]=_0x15825b[_0x0e63('0x9e')];_0x4de256[_0x0e63('0x9f')]=_0x15825b['uniqueid'];logger[_0x0e63('0x6e')](_0x0e63('0xa0'),_0x4de256[_0x0e63('0x51')],_0x4de256[_0x0e63('0x55')]);var _0x1ac27a=this['queueReports'][_0x15825b[_0x0e63('0xa1')]];this[_0x0e63('0x10')][_0x15825b['linkedid']]=this[_0x0e63('0x10')][_0x15825b[_0x0e63('0x4b')]];this[_0x0e63('0x10')][_0x15825b['uniqueid']]=_0x1ac27a;}}else{_0x540437['queuecallerexitreason']='COMPLETEDBY'+_0x15825b[_0x0e63('0x95')][_0x0e63('0xa2')]();logger[_0x0e63('0x6e')](_0x0e63('0xa3'),_0x540437['name'],_0x540437[_0x0e63('0x55')],_0x540437[_0x0e63('0xa4')]);}}}this[_0x0e63('0x38')][_0x15825b[_0x0e63('0x4b')]]=_0x540437;this[_0x0e63('0x46')](_0x540437,_0x0e63('0x1e'));}}}catch(_0x994b0d){logger[_0x0e63('0x40')](_0x0e63('0xa5'),_0x15825b['uniqueid'],util[_0x0e63('0x41')](_0x994b0d,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0e63('0x36')]['syncVarSet']=function(_0x393862){try{if(this[_0x0e63('0x6b')](_0x393862)){logger[_0x0e63('0x48')]('[%s][voiceQueueReport][varset]',_0x393862[_0x0e63('0x4b')],util[_0x0e63('0x41')](_0x393862,{'showHidden':![],'depth':null}));this['addVariable'](_0x393862[_0x0e63('0x4b')],_[_0x0e63('0xa6')](_0x393862[_0x0e63('0xa7')])[0x0],_0x393862[_0x0e63('0xa8')]);if(this[_0x0e63('0x10')][_0x393862[_0x0e63('0x4b')]]){var _0x487463=_[_0x0e63('0x7f')](this[_0x0e63('0x10')][_0x393862[_0x0e63('0x4b')]]);if(_0x487463){if(this['isNotNull'](_0x393862[_0x0e63('0xa7')])&&this[_0x0e63('0x6b')](_0x393862[_0x0e63('0xa7')][_0x0e63('0xa9')])){switch(_0x393862[_0x0e63('0xa8')]){case _0x0e63('0xaa'):_0x487463[_0x0e63('0x9b')]=![];_0x487463[_0x0e63('0x93')]=null;break;case'TIMEOUT':_0x487463[_0x0e63('0xab')]='timeout';_0x487463[_0x0e63('0x9b')]=!![];_0x487463[_0x0e63('0x93')]=moment()[_0x0e63('0x4c')](_0x0e63('0x78'));_0x487463[_0x0e63('0x88')]=moment()['format'](_0x0e63('0x78'));logger[_0x0e63('0x48')]('[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:',_0x393862[_0x0e63('0x4b')],util[_0x0e63('0x41')](_0x487463,{'showHidden':![],'depth':null}));ami[_0x0e63('0x47')](_0x0e63('0xac'),_0x487463);break;default:_0x487463[_0x0e63('0x9b')]=!![];_0x487463[_0x0e63('0x93')]=moment()[_0x0e63('0x4c')](_0x0e63('0x78'));_0x487463[_0x0e63('0x88')]=moment()[_0x0e63('0x4c')]('YYYY-MM-DD\x20HH:mm:ss');}_0x487463['queuecallerabandon']=![];_0x487463[_0x0e63('0x83')]=null;_0x487463['queuecallerexitreason']=_0x393862[_0x0e63('0xa8')];this[_0x0e63('0x38')][_0x393862[_0x0e63('0x4b')]]=_0x487463;this['emitVoiceQueueChannelRemove'](_0x487463,_0x0e63('0xad'));}else if(this[_0x0e63('0x6b')](_0x393862['variable'])&&this[_0x0e63('0x6b')](_0x393862[_0x0e63('0xa7')][_0x0e63('0xae')])){if(!_0x487463[_0x0e63('0x1d')]){_0x487463[_0x0e63('0x9b')]=!![];_0x487463[_0x0e63('0x93')]=moment()[_0x0e63('0x4c')](_0x0e63('0x78'));_0x487463[_0x0e63('0xa4')]='EXITWITHKEY';_0x487463[_0x0e63('0x88')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x0e63('0x38')][_0x393862[_0x0e63('0x4b')]]=_0x487463;}}logger['info'](_0x0e63('0xaf'),_0x393862['uniqueid'],_0x487463[_0x0e63('0x51')],_0x487463['type'],_[_0x0e63('0xa6')](_0x393862[_0x0e63('0xa7')])[0x0],_0x393862[_0x0e63('0xa8')]);_0x487463['variables']=this['variables'][_0x393862[_0x0e63('0x4b')]];}}}}catch(_0x2c77b0){logger[_0x0e63('0x40')](_0x0e63('0xb0'),_0x393862['uniqueid'],util[_0x0e63('0x41')](_0x2c77b0,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0e63('0x36')]['addVariable']=function(_0x3871a4,_0x2ac8a6,_0x7eeedb){var _0x174f04=[_0x0e63('0xb1'),'rtpaudioqosbridged',_0x0e63('0xb2'),_0x0e63('0xb3'),_0x0e63('0xb4'),'rtpaudioqoslossbridged',_0x0e63('0xb5'),_0x0e63('0xb6'),_0x0e63('0xb7'),_0x0e63('0xb8'),_0x0e63('0xb9'),_0x0e63('0xba'),'membercalls',_0x0e63('0xbb'),'memberinterface',_0x0e63('0xbc'),_0x0e63('0x91'),_0x0e63('0xbd'),'memberrealtime'];if(!_[_0x0e63('0x3a')](_0x2ac8a6)&&!_['includes'](_0x174f04,_0x2ac8a6)){if(_[_0x0e63('0x66')](this[_0x0e63('0x16')][_0x3871a4])){this[_0x0e63('0x16')][_0x3871a4]={};}this['variables'][_0x3871a4][_0x2ac8a6]=_0x7eeedb;}};VoiceQueueReport[_0x0e63('0x36')]['syncHangup']=function(_0x1fce02){try{if(this['isNotNull'](_0x1fce02)){logger['debug'](_0x0e63('0xbe'),_0x1fce02[_0x0e63('0x4b')],util[_0x0e63('0x41')](_0x1fce02,{'showHidden':![],'depth':null}));if(this[_0x0e63('0x10')][_0x1fce02['uniqueid']]){for(var _0x5b449c=0x0,_0x28668e={};_0x5b449c<this[_0x0e63('0x10')][_0x1fce02[_0x0e63('0x4b')]][_0x0e63('0xbf')];_0x5b449c+=0x1){_0x28668e=this['queueReports'][_0x1fce02['uniqueid']][_0x5b449c];if(this['voiceQueues'][_0x28668e[_0x0e63('0x6c')]]){if(_0x28668e[_0x0e63('0x9b')]&&_0x28668e[_0x0e63('0x94')]!=!![]){this['voiceQueues'][_0x28668e[_0x0e63('0x6c')]][_0x0e63('0x5e')]+=0x1;}if(_0x28668e[_0x0e63('0x1d')]){this['voiceQueues'][_0x28668e['queue']][_0x0e63('0x5f')]+=0x1;}this[_0x0e63('0x13')][_0x28668e[_0x0e63('0x6c')]]['sumHoldTime']+=moment(_0x28668e[_0x0e63('0x88')])[_0x0e63('0xc0')](_0x28668e['queuecallerjoinAt'],_0x0e63('0xc1'))||0x0;if(_0x5b449c===this[_0x0e63('0x10')][_0x1fce02[_0x0e63('0x4b')]]['length']-0x1){this[_0x0e63('0x13')][_0x28668e[_0x0e63('0x6c')]][_0x0e63('0x5b')]+=moment()[_0x0e63('0xc2')](0x0)['diff'](_0x28668e[_0x0e63('0x77')],_0x0e63('0xc1'));this[_0x0e63('0x13')][_0x28668e['queue']]['total']+=0x1;if(_0x28668e['queuecallercomplete']){this[_0x0e63('0x13')][_0x28668e[_0x0e63('0x6c')]][_0x0e63('0x58')]+=0x1;this['voiceQueues'][_0x28668e[_0x0e63('0x6c')]][_0x0e63('0x5a')]+=moment()[_0x0e63('0xc2')](0x0)[_0x0e63('0xc0')](_0x28668e[_0x0e63('0x88')],_0x0e63('0xc1'));_0x28668e[_0x0e63('0x80')]=moment()[_0x0e63('0x4c')](_0x0e63('0x78'));_0x28668e[_0x0e63('0x9b')]=![];_0x28668e[_0x0e63('0x93')]=null;}if(_0x28668e[_0x0e63('0x9b')]&&_0x28668e[_0x0e63('0x94')]!=!![]){_0x28668e[_0x0e63('0xab')]=_0x0e63('0x5e');logger[_0x0e63('0x48')](_0x0e63('0xc3'),_0x1fce02['uniqueid'],util['inspect'](_0x28668e,{'showHidden':![],'depth':null}));ami[_0x0e63('0x47')](_0x0e63('0xc4'),_0x28668e);}if(_0x28668e[_0x0e63('0x1d')]){_0x28668e[_0x0e63('0xab')]=_0x0e63('0x5f');logger[_0x0e63('0x48')]('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:',_0x1fce02[_0x0e63('0x4b')],util[_0x0e63('0x41')](_0x28668e,{'showHidden':![],'depth':null}));ami[_0x0e63('0x47')]('custom:queuecallerabandon',_0x28668e);}}else{this[_0x0e63('0x13')][_0x28668e[_0x0e63('0x6c')]][_0x0e63('0x5b')]+=this[_0x0e63('0x13')][_0x28668e['queue']][_0x0e63('0x5c')];}logger[_0x0e63('0x6e')](_0x0e63('0xc5'),_0x1fce02[_0x0e63('0x4b')],_0x28668e[_0x0e63('0x51')],_0x28668e[_0x0e63('0x55')],_0x1fce02[_0x0e63('0xc6')]);this['channels'][_0x1fce02['uniqueid']]=_0x28668e;this['emitVoiceQueueChannelRemove'](_0x28668e,_0x0e63('0x22'));this[_0x0e63('0x54')](this[_0x0e63('0x13')][_0x28668e['queue']],_0x0e63('0x22'));}}logger[_0x0e63('0x48')](_0x0e63('0xc7'),_0x1fce02[_0x0e63('0x4b')],util[_0x0e63('0x41')](this['queueReports'][_0x1fce02['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x0e63('0x47')](_0x0e63('0xc8'),this[_0x0e63('0x10')][_0x1fce02[_0x0e63('0x4b')]]);delete this[_0x0e63('0x10')][_0x1fce02[_0x0e63('0x4b')]];delete this['channels'][_0x1fce02['uniqueid']];}if(this['variables'][_0x1fce02['uniqueid']]){delete this[_0x0e63('0x16')][_0x1fce02[_0x0e63('0x4b')]];}}}catch(_0x34944a){logger[_0x0e63('0x40')](_0x0e63('0xbe'),_0x1fce02[_0x0e63('0x4b')],util[_0x0e63('0x41')](_0x34944a,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0e63('0x36')]['syncAttendedTransfer']=function(_0x145d20){try{if(this[_0x0e63('0x6b')](_0x145d20)){logger[_0x0e63('0x48')](_0x0e63('0xc9'),_0x145d20['uniqueid'],util[_0x0e63('0x41')](_0x145d20,{'showHidden':![],'depth':null}));var _0x33cdaa;if(this[_0x0e63('0x10')][_0x145d20[_0x0e63('0xca')]]){_0x33cdaa=_[_0x0e63('0x7f')](this[_0x0e63('0x10')][_0x145d20[_0x0e63('0xca')]]);_0x33cdaa[_0x0e63('0x9d')]=_0x145d20[_0x0e63('0xcb')];_0x33cdaa['transferuniqueid']=_0x145d20['secondtransfereruniqueid'];_0x33cdaa[_0x0e63('0xa4')]=_0x0e63('0xcc');_0x33cdaa['transfer']=!![];_0x33cdaa[_0x0e63('0xcd')]=_0x0e63('0xce');if(this[_0x0e63('0x10')][_0x145d20[_0x0e63('0xcf')]]){var _0x537c8b=this[_0x0e63('0x10')][_0x145d20['secondtransfereruniqueid']];this[_0x0e63('0x10')][_0x145d20[_0x0e63('0xcf')]]=this['queueReports'][_0x145d20[_0x0e63('0xca')]];this['queueReports'][_0x145d20['transfereeuniqueid']]=_0x537c8b;var _0x1c8ee1=_[_0x0e63('0x7f')](this['queueReports'][_0x145d20[_0x0e63('0xca')]]);_0x1c8ee1[_0x0e63('0x39')]=!![];}logger[_0x0e63('0x6e')]('[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x145d20[_0x0e63('0x4b')],_0x33cdaa[_0x0e63('0x51')],_0x33cdaa['type'],_0x33cdaa[_0x0e63('0x9d')],_0x33cdaa[_0x0e63('0x9f')]);}else if(this[_0x0e63('0x10')][_0x145d20[_0x0e63('0xd0')]]){_0x33cdaa=_[_0x0e63('0x7f')](this['queueReports'][_0x145d20['transfertargetuniqueid']]);_0x33cdaa[_0x0e63('0x9d')]=_0x145d20[_0x0e63('0xd1')];_0x33cdaa[_0x0e63('0x9f')]=_0x145d20[_0x0e63('0xd2')];_0x33cdaa[_0x0e63('0xa4')]=_0x0e63('0xcc');_0x33cdaa[_0x0e63('0x94')]=!![];_0x33cdaa['transfertype']=_0x0e63('0xce');if(this[_0x0e63('0x10')][_0x145d20['origtransfereruniqueid']]){var _0x537c8b=this[_0x0e63('0x10')][_0x145d20['origtransfereruniqueid']];this[_0x0e63('0x10')][_0x145d20[_0x0e63('0xd2')]]=this['queueReports'][_0x145d20[_0x0e63('0xd0')]];this['queueReports'][_0x145d20[_0x0e63('0xd0')]]=_0x537c8b;var _0x1c8ee1=_['last'](this[_0x0e63('0x10')][_0x145d20['transfertargetuniqueid']]);_0x1c8ee1[_0x0e63('0x39')]=!![];}logger[_0x0e63('0x6e')](_0x0e63('0xd3'),_0x145d20[_0x0e63('0x4b')],_0x33cdaa[_0x0e63('0x51')],_0x33cdaa[_0x0e63('0x55')],_0x33cdaa[_0x0e63('0x9d')],_0x33cdaa[_0x0e63('0x9f')]);}}}catch(_0x4df166){logger[_0x0e63('0x40')]('[%s][voiceQueueReport][attendedtransfer]',_0x145d20['uniqueid'],util[_0x0e63('0x41')](_0x4df166,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x0e63('0x2c')]=function(_0x4ed006){try{if(this[_0x0e63('0x6b')](_0x4ed006)){logger[_0x0e63('0x48')](_0x0e63('0xd4'),_0x4ed006[_0x0e63('0x4b')],util[_0x0e63('0x41')](_0x4ed006,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x4ed006[_0x0e63('0xca')]]){var _0x460025=_[_0x0e63('0x7f')](this[_0x0e63('0x10')][_0x4ed006['transfereeuniqueid']]);_0x460025[_0x0e63('0xa4')]=_0x0e63('0xd5');_0x460025[_0x0e63('0x94')]=!![];_0x460025[_0x0e63('0xcd')]=_0x0e63('0xd6');_0x460025[_0x0e63('0x9d')]=_0x4ed006[_0x0e63('0xd7')];_0x460025[_0x0e63('0x9f')]=_0x4ed006[_0x0e63('0xca')];logger['info'](_0x0e63('0xd8'),_0x4ed006['uniqueid'],_0x460025[_0x0e63('0x51')],_0x460025[_0x0e63('0x55')],_0x460025[_0x0e63('0x9d')],_0x460025[_0x0e63('0x9f')]);this['syncHangup']({'event':_0x0e63('0xd9'),'uniqueid':_0x4ed006[_0x0e63('0xca')],'context':_0x4ed006['context'],'channel':_0x4ed006[_0x0e63('0xda')]});}}}catch(_0x5ab2f1){logger[_0x0e63('0x40')](_0x0e63('0xd4'),_0x4ed006[_0x0e63('0x4b')],util[_0x0e63('0x41')](_0x5ab2f1,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0e63('0x36')]['syncMusicOnHoldStart']=function(_0x415767){try{if(this['isNotNull'](_0x415767)){logger['debug'](_0x0e63('0xdb'),_0x415767[_0x0e63('0x4b')],util['inspect'](_0x415767,{'showHidden':![],'depth':null}));if(this[_0x0e63('0x10')][_0x415767[_0x0e63('0x4b')]]){var _0x8da34=_[_0x0e63('0x7f')](this[_0x0e63('0x10')][_0x415767[_0x0e63('0x4b')]]);if(!_[_0x0e63('0x3a')](_0x8da34[_0x0e63('0x88')])){_0x8da34['mohstarttime']=moment()[_0x0e63('0x4c')](_0x0e63('0x78'));logger['info'](_0x0e63('0xdc'),_0x415767[_0x0e63('0x4b')],_0x8da34[_0x0e63('0xdd')]);}}}}catch(_0x59cc30){logger[_0x0e63('0x40')]('[%s][voiceQueueReport][musiconholdstart]',_0x415767[_0x0e63('0x4b')],util[_0x0e63('0x41')](_0x59cc30,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0e63('0x36')][_0x0e63('0x29')]=function(_0x4137c2){try{if(this[_0x0e63('0x6b')](_0x4137c2)){logger[_0x0e63('0x48')](_0x0e63('0xde'),_0x4137c2[_0x0e63('0x4b')],util['inspect'](_0x4137c2,{'showHidden':![],'depth':null}));if(this[_0x0e63('0x10')][_0x4137c2[_0x0e63('0x4b')]]){var _0xf5c9eb=_[_0x0e63('0x7f')](this[_0x0e63('0x10')][_0x4137c2[_0x0e63('0x4b')]]);if(!_['isNil'](_0xf5c9eb[_0x0e63('0xdd')])){_0xf5c9eb[_0x0e63('0xdf')]+=moment()[_0x0e63('0xc2')](0x0)[_0x0e63('0xc0')](_0xf5c9eb[_0x0e63('0xdd')],_0x0e63('0xc1'));logger[_0x0e63('0x6e')](_0x0e63('0xe0'),_0x4137c2[_0x0e63('0x4b')],_0xf5c9eb[_0x0e63('0xdf')]);delete _0xf5c9eb['mohstarttime'];}}}}catch(_0x5364e9){logger['error'](_0x0e63('0xde'),_0x4137c2['uniqueid'],util[_0x0e63('0x41')](_0x5364e9,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0e63('0x36')][_0x0e63('0x26')]=function(_0xfaf857){try{if(this[_0x0e63('0x6b')](_0xfaf857)){logger[_0x0e63('0x48')](_0x0e63('0xe1'),_0xfaf857[_0x0e63('0x4b')],util[_0x0e63('0x41')](_0xfaf857,{'showHidden':![],'depth':null}));if(_0xfaf857['application'][_0x0e63('0x99')]()===_0x0e63('0xe2')){_0xfaf857[_0x0e63('0xe3')]=_0xfaf857['appdata']&&_0xfaf857[_0x0e63('0xe4')]['startsWith'](_0x0e63('0xe5'))?_0xfaf857[_0x0e63('0xe4')]:(_0xfaf857['appdata']||_0xfaf857[_0x0e63('0xe3')])[_0x0e63('0x99')]();if(_['startsWith'](_0xfaf857['applicationdata'][_0x0e63('0x99')](),_0x0e63('0xe6'))){logger[_0x0e63('0x6e')](_0x0e63('0xe7'),_0xfaf857['uniqueid'],_0xfaf857[_0x0e63('0xe8')],_0xfaf857[_0x0e63('0xe3')]);if(_[_0x0e63('0x66')](this[_0x0e63('0x38')][_0xfaf857[_0x0e63('0x4b')]]))this[_0x0e63('0x38')][_0xfaf857['uniqueid']]={};var _0x551609=_0xfaf857[_0x0e63('0xe3')][_0x0e63('0xe9')]('=');var _0x263e8f=_0x551609[0x0][_0x0e63('0x99')]()[_0x0e63('0xea')](/cdr\((.*)\)/);if(_0x263e8f)this[_0x0e63('0x38')][_0xfaf857[_0x0e63('0x4b')]][_0x263e8f[0x1]]=_0x551609[0x1];}}}}catch(_0x509e0a){logger['error'](_0x0e63('0xeb'),_0xfaf857[_0x0e63('0x4b')],util[_0x0e63('0x41')](_0x509e0a,{'showHidden':![],'depth':null}));}};module['exports']=VoiceQueueReport;
\ No newline at end of file
index 82b4daf..f4eef19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a21=['../client','createHistory','campaign','CreateReportAgentPreview'];(function(_0x25ea6a,_0x50247b){var _0x418024=function(_0x5706c3){while(--_0x5706c3){_0x25ea6a['push'](_0x25ea6a['shift']());}};_0x418024(++_0x50247b);}(_0x7a21,0xc4));var _0x17a2=function(_0x1c6d76,_0x249431){_0x1c6d76=_0x1c6d76-0x0;var _0x1f4fb2=_0x7a21[_0x1c6d76];return _0x1f4fb2;};'use strict';var client=require(_0x17a2('0x0'));exports[_0x17a2('0x1')]=function(_0x343a74){return function(){_0x343a74[_0x17a2('0x2')]=_0x343a74['queue'];return client['Request'](_0x17a2('0x3'),{'body':_0x343a74,'log':_0x17a2('0x3')});};};
\ No newline at end of file
+var _0xebde=['campaign','queue','Request','../client','createHistory'];(function(_0x4f0558,_0x1d4b4a){var _0x2bcfa3=function(_0x2dcaca){while(--_0x2dcaca){_0x4f0558['push'](_0x4f0558['shift']());}};_0x2bcfa3(++_0x1d4b4a);}(_0xebde,0x1a7));var _0xeebd=function(_0x243b59,_0x3f9495){_0x243b59=_0x243b59-0x0;var _0x3e1676=_0xebde[_0x243b59];return _0x3e1676;};'use strict';var client=require(_0xeebd('0x0'));exports[_0xeebd('0x1')]=function(_0x538148){return function(){_0x538148[_0xeebd('0x2')]=_0x538148[_0xeebd('0x3')];return client[_0xeebd('0x4')]('CreateReportAgentPreview',{'body':_0x538148,'log':'CreateReportAgentPreview'});};};
\ No newline at end of file
index 9e85af3..760ee64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa768=['CreateAttachment','create'];(function(_0x147593,_0x4fb251){var _0x84a098=function(_0x3b73ae){while(--_0x3b73ae){_0x147593['push'](_0x147593['shift']());}};_0x84a098(++_0x4fb251);}(_0xa768,0x93));var _0x8a76=function(_0x552280,_0x4f5756){_0x552280=_0x552280-0x0;var _0x14bd65=_0xa768[_0x552280];return _0x14bd65;};'use strict';var client=require('../client');exports[_0x8a76('0x0')]=function(_0x58a7c7){return client['Request'](_0x8a76('0x1'),{'body':_0x58a7c7,'log':_0x8a76('0x1')});};
\ No newline at end of file
+var _0x11bc=['create','CreateAttachment','../client'];(function(_0x2fd7a6,_0x46e6e9){var _0xd42ba4=function(_0x8ae291){while(--_0x8ae291){_0x2fd7a6['push'](_0x2fd7a6['shift']());}};_0xd42ba4(++_0x46e6e9);}(_0x11bc,0x11c));var _0xc11b=function(_0x371145,_0x271b3d){_0x371145=_0x371145-0x0;var _0x583fae=_0x11bc[_0x371145];return _0x583fae;};'use strict';var client=require(_0xc11b('0x0'));exports[_0xc11b('0x1')]=function(_0x4f5813){return client['Request'](_0xc11b('0x2'),{'body':_0x4f5813,'log':_0xc11b('0x2')});};
\ No newline at end of file
index ac69a07..794bcbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['Interval','interval','SquareProject','getCampaign','getCampaigns','Request','GetCampaign','name','type','active','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectMaxRetry','dialGlobalInterval','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','TrunkBackup','callerid'];(function(_0x1e1be6,_0x51771f){var _0x2d35f3=function(_0x3841a7){while(--_0x3841a7){_0x1e1be6['push'](_0x1e1be6['shift']());}};_0x2d35f3(++_0x51771f);}(_0x1261,0x144));var _0x1126=function(_0x4d7df6,_0x3f6139){_0x4d7df6=_0x4d7df6-0x0;var _0x4c0d29=_0x1261[_0x4d7df6];return _0x4c0d29;};'use strict';var client=require('../client');exports[_0x1126('0x0')]=function(){return function(){return client[_0x1126('0x1')](_0x1126('0x2'),{'options':{'raw':![],'attributes':['id',_0x1126('0x3'),_0x1126('0x4'),_0x1126('0x5'),_0x1126('0x6'),_0x1126('0x7'),_0x1126('0x8'),_0x1126('0x9'),'dialCongestionMaxRetry','dialCongestionRetryFrequency',_0x1126('0xa'),_0x1126('0xb'),'dialNoAnswerMaxRetry',_0x1126('0xc'),_0x1126('0xd'),_0x1126('0xe'),_0x1126('0xf'),_0x1126('0x10'),'dialDropRetryFrequency',_0x1126('0x11'),_0x1126('0x12'),_0x1126('0x13'),'dialMachineRetryFrequency',_0x1126('0x14'),'dialAgentRejectRetryFrequency','dialTimezone',_0x1126('0x15'),'dialAMDActive',_0x1126('0x16'),_0x1126('0x17'),_0x1126('0x18'),_0x1126('0x19'),_0x1126('0x1a'),_0x1126('0x1b'),_0x1126('0x1c'),_0x1126('0x1d'),_0x1126('0x1e'),'dialOrderByScheduledAt','dialPrefix',_0x1126('0x1f'),_0x1126('0x20')],'include':[{'model':_0x1126('0x21'),'as':'Trunk','attributes':['id',_0x1126('0x3'),'callerid',_0x1126('0x5')]},{'model':_0x1126('0x21'),'as':_0x1126('0x22'),'attributes':['id','name',_0x1126('0x23'),_0x1126('0x5')]},{'model':'Interval','as':'Interval','attributes':['id',_0x1126('0x3')],'include':[{'model':_0x1126('0x24'),'as':'Intervals','attributes':['id','name',_0x1126('0x25')]}]},{'model':'SquareProject','as':_0x1126('0x26'),'attributes':['id',_0x1126('0x3')]}]},'log':_0x1126('0x27')});};};
\ No newline at end of file
+var _0xadb5=['dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDMaximumWordLength','dialOrderByScheduledAt','dialPrefix','dialCutDigit','Trunk','callerid','active','TrunkBackup','Interval','SquareProject','getCampaign','getCampaigns','GetCampaign','name','type','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectRetryFrequency','dialTimezone','dialGlobalInterval','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDMinWordLength'];(function(_0x302095,_0x52f3f6){var _0x1e5889=function(_0x44486b){while(--_0x44486b){_0x302095['push'](_0x302095['shift']());}};_0x1e5889(++_0x52f3f6);}(_0xadb5,0xad));var _0x5adb=function(_0x2f1a63,_0x5eca23){_0x2f1a63=_0x2f1a63-0x0;var _0x2328d6=_0xadb5[_0x2f1a63];return _0x2328d6;};'use strict';var client=require('../client');exports[_0x5adb('0x0')]=function(){return function(){return client['Request'](_0x5adb('0x1'),{'options':{'raw':![],'attributes':['id',_0x5adb('0x2'),_0x5adb('0x3'),'active',_0x5adb('0x4'),_0x5adb('0x5'),_0x5adb('0x6'),'dialOriginateTimeout',_0x5adb('0x7'),_0x5adb('0x8'),_0x5adb('0x9'),_0x5adb('0xa'),_0x5adb('0xb'),_0x5adb('0xc'),_0x5adb('0xd'),_0x5adb('0xe'),_0x5adb('0xf'),_0x5adb('0x10'),_0x5adb('0x11'),_0x5adb('0x12'),_0x5adb('0x13'),_0x5adb('0x14'),'dialMachineRetryFrequency','dialAgentRejectMaxRetry',_0x5adb('0x15'),_0x5adb('0x16'),_0x5adb('0x17'),'dialAMDActive',_0x5adb('0x18'),'dialAMDGreeting',_0x5adb('0x19'),'dialAMDTotalAnalysisTime',_0x5adb('0x1a'),_0x5adb('0x1b'),_0x5adb('0x1c'),'dialAMDSilenceThreshold',_0x5adb('0x1d'),_0x5adb('0x1e'),_0x5adb('0x1f'),'dialRandomLastDigitCallerIdNumber',_0x5adb('0x20')],'include':[{'model':'Trunk','as':_0x5adb('0x21'),'attributes':['id',_0x5adb('0x2'),_0x5adb('0x22'),_0x5adb('0x23')]},{'model':_0x5adb('0x21'),'as':_0x5adb('0x24'),'attributes':['id',_0x5adb('0x2'),_0x5adb('0x22'),_0x5adb('0x23')]},{'model':'Interval','as':_0x5adb('0x25'),'attributes':['id','name'],'include':[{'model':_0x5adb('0x25'),'as':'Intervals','attributes':['id',_0x5adb('0x2'),'interval']}]},{'model':'SquareProject','as':_0x5adb('0x26'),'attributes':['id',_0x5adb('0x2')]}]},'log':_0x5adb('0x27')});};};
\ No newline at end of file
index e96abfd..07641ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe40b=['../client','createContact','Request','CreateCmContact','GetCmContact'];(function(_0x1a3b6c,_0x581afe){var _0x102618=function(_0xb2ea66){while(--_0xb2ea66){_0x1a3b6c['push'](_0x1a3b6c['shift']());}};_0x102618(++_0x581afe);}(_0xe40b,0xf0));var _0xbe40=function(_0x52f51b,_0x544180){_0x52f51b=_0x52f51b-0x0;var _0x58a009=_0xe40b[_0x52f51b];return _0x58a009;};'use strict';var client=require(_0xbe40('0x0'));exports[_0xbe40('0x1')]=function(_0x50e914){return function(){return client[_0xbe40('0x2')](_0xbe40('0x3'),{'body':_0x50e914,'log':'CreateCmContact'});};};exports['getContacts']=function(_0x4516b8){return function(){return client[_0xbe40('0x2')](_0xbe40('0x4'),{'options':_0x4516b8,'log':_0xbe40('0x4')});};};
\ No newline at end of file
+var _0x08ec=['createContact','Request','CreateCmContact','getContacts','GetCmContact','../client'];(function(_0x443718,_0x6474cb){var _0x4e3143=function(_0x3c19d9){while(--_0x3c19d9){_0x443718['push'](_0x443718['shift']());}};_0x4e3143(++_0x6474cb);}(_0x08ec,0xe9));var _0xc08e=function(_0x58addd,_0x4f32d6){_0x58addd=_0x58addd-0x0;var _0x236efb=_0x08ec[_0x58addd];return _0x236efb;};'use strict';var client=require(_0xc08e('0x0'));exports[_0xc08e('0x1')]=function(_0x112147){return function(){return client[_0xc08e('0x2')]('CreateCmContact',{'body':_0x112147,'log':_0xc08e('0x3')});};};exports[_0xc08e('0x4')]=function(_0x14a063){return function(){return client[_0xc08e('0x2')](_0xc08e('0x5'),{'options':_0x14a063,'log':_0xc08e('0x5')});};};
\ No newline at end of file
index 3ed9371..44038fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cf9=['moment','lodash','getContacts','Request','GetCmHopper','getCmHopper','updateContacts','UpdateCmHopper','format','ListId','VoiceQueueId','CampaignId','DestroyCmHopper','getContactDialer','GetContactDialer','YYYY-MM-DD\x20HH:mm:ss','DESC','scheduledat','ASC','CmContact','Contact','priority','GetContactDialerIvr','moveContactManagedDialer','campaign','queue','MoveContactManagedDialer','ContactId','CountReScheduled','getContactPreview','GetCmHopperPreview','Agent','name','VoiceQueue','unlockContact','getContactRecallMe','GetContactRecallMe','voicePause','db.CmHopper.UserId','../client'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0cf9,0x18f));var _0x90cf=function(_0x5384ae,_0x32e603){_0x5384ae=_0x5384ae-0x0;var _0x4bcf2d=_0x0cf9[_0x5384ae];return _0x4bcf2d;};'use strict';var client=require(_0x90cf('0x0'));var moment=require(_0x90cf('0x1'));var _=require(_0x90cf('0x2'));exports[_0x90cf('0x3')]=function(_0x21ca0f,_0x39d88b){return function(){return client[_0x90cf('0x4')](_0x90cf('0x5'),{'options':{'where':{'VoiceQueueId':_0x21ca0f},'include':[{'model':'CmContact','as':'Contact'}],'limit':_0x39d88b,'raw':![]},'log':_0x90cf('0x6')});};};exports[_0x90cf('0x7')]=function(_0x5ab868,_0x4aa6b0,_0x55300b){return function(){return client['Request'](_0x90cf('0x8'),{'body':_0x5ab868,'options':{'where':{'VoiceQueueId':_0x4aa6b0,'scheduledat':{'$lte':moment()[_0x90cf('0x9')]('YYYY-MM-DD\x20HH:mm:ss')}},'limit':_0x55300b},'log':_0x90cf('0x8')});};};exports['rescheduleContact']=function(_0x3be2bb){return function(){return client['Request']('UpdateCmHopper',{'body':_0x3be2bb,'options':{'where':{'ContactId':_0x3be2bb['ContactId'],'ListId':_0x3be2bb[_0x90cf('0xa')],'VoiceQueueId':_0x3be2bb[_0x90cf('0xb')],'CampaignId':_0x3be2bb[_0x90cf('0xc')]}},'log':'rescheduleContact'});};};exports['destroyContact']=function(_0x5d1d04,_0x26b4f6,_0x3c59a5){return function(){return client[_0x90cf('0x4')]('DestroyCmHopper',{'options':{'where':{'VoiceQueueId':_0x5d1d04,'ListId':_0x26b4f6,'ContactId':_0x3c59a5}},'log':_0x90cf('0xd')});};};exports[_0x90cf('0xe')]=function(_0x482b7c,_0x12d9e5,_0x24dd82,_0x39ab50){return function(){return client[_0x90cf('0x4')](_0x90cf('0xf'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x482b7c,'active':![],'scheduledat':{'$lte':moment()['format'](_0x90cf('0x10'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x12d9e5}}]},'order':[['priority',_0x90cf('0x11')],[_0x90cf('0x12'),_0x39ab50],['id',_0x90cf('0x13')]],'raw':!![],'limit':_0x24dd82},'log':_0x90cf('0xf')});};};exports['getContactDialerIvr']=function(_0x5f069a,_0x1e3615,_0x58ed76){return function(){return client[_0x90cf('0x4')](_0x90cf('0xf'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x5f069a,'active':![],'scheduledat':{'$lte':moment()[_0x90cf('0x9')]('YYYY-MM-DD\x20HH:mm:ss')}},'include':[{'model':_0x90cf('0x14'),'as':_0x90cf('0x15')}],'order':[[_0x90cf('0x16'),_0x90cf('0x11')],[_0x90cf('0x12'),_0x58ed76],['id','ASC']],'raw':!![],'limit':_0x1e3615},'log':_0x90cf('0x17')});};};exports[_0x90cf('0x18')]=function(_0x3873df,_0x1e2e24){return function(){_0x3873df[_0x90cf('0x19')]=_0x3873df[_0x90cf('0x1a')];return client[_0x90cf('0x4')](_0x90cf('0x1b'),{'body':_0x3873df,'options':{'where':{'ContactId':_0x3873df[_0x90cf('0x1c')],'ListId':_0x3873df[_0x90cf('0xa')],'VoiceQueueId':_0x3873df['VoiceQueueId'],'CampaignId':_0x3873df['CampaignId'],'active':_0x1e2e24?undefined:!![]}},'log':_0x90cf('0x1b')});};};exports['countReScheduled']=function(_0xe3d179){return function(){return client['Request'](_0x90cf('0x1d'),{'options':{'where':{'VoiceQueueId':_0xe3d179['id']?_0xe3d179['id']||null:null}},'log':'countReScheduled'});};};exports[_0x90cf('0x1e')]=function(_0x3f6d9e){return function(){return client['Request'](_0x90cf('0x1f'),{'options':{'where':{'id':_0x3f6d9e},'include':[{'model':_0x90cf('0x14'),'as':'Contact'},{'model':'User','as':_0x90cf('0x20'),'attributes':['id',_0x90cf('0x21')]},{'model':_0x90cf('0x22'),'as':'Queue','attributes':['id','name']}],'raw':!![]},'log':_0x90cf('0x6')});};};exports[_0x90cf('0x23')]=function(_0x2f78d6,_0x2757e6,_0x529f3f){return function(){return client[_0x90cf('0x4')](_0x90cf('0x8'),{'body':_0x2f78d6,'options':{'where':{'id':_0x2757e6},'limit':_0x529f3f},'log':_0x90cf('0x8')});};};exports[_0x90cf('0x24')]=function(_0x7af3f6,_0x4c71c7){return function(){return client[_0x90cf('0x4')](_0x90cf('0x25'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x7af3f6,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x90cf('0x9')]('YYYY-MM-DD\x20HH:mm:ss')},'UserId':{'$in':_0x4c71c7}},'order':[[_0x90cf('0x16'),'DESC'],[_0x90cf('0x12'),_0x90cf('0x11')],['id','ASC']],'include':[{'model':'CmContact','as':'Contact'},{'model':'User','as':_0x90cf('0x20'),'attributes':['id',_0x90cf('0x21'),_0x90cf('0x26')]}],'group':_0x90cf('0x27'),'raw':!![]},'log':_0x90cf('0xf')});};};
\ No newline at end of file
+var _0x372e=['GetCmHopperPreview','Agent','name','VoiceQueue','Queue','unlockContact','Contact','User','../client','lodash','Request','GetCmHopper','CmContact','getCmHopper','UpdateCmHopper','format','ContactId','ListId','VoiceQueueId','rescheduleContact','destroyContact','DestroyCmHopper','getContactDialer','GetContactDialer','priority','DESC','scheduledat','ASC','getContactDialerIvr','YYYY-MM-DD\x20HH:mm:ss','GetContactDialerIvr','campaign','queue','MoveContactManagedDialer','CampaignId','countReScheduled','getContactPreview'];(function(_0x5225be,_0x32ecf1){var _0x28bea9=function(_0xf5fbb5){while(--_0xf5fbb5){_0x5225be['push'](_0x5225be['shift']());}};_0x28bea9(++_0x32ecf1);}(_0x372e,0x17a));var _0xe372=function(_0x1daaef,_0xa70f14){_0x1daaef=_0x1daaef-0x0;var _0x5b4387=_0x372e[_0x1daaef];return _0x5b4387;};'use strict';var client=require(_0xe372('0x0'));var moment=require('moment');var _=require(_0xe372('0x1'));exports['getContacts']=function(_0x316a11,_0x453e41){return function(){return client[_0xe372('0x2')](_0xe372('0x3'),{'options':{'where':{'VoiceQueueId':_0x316a11},'include':[{'model':_0xe372('0x4'),'as':'Contact'}],'limit':_0x453e41,'raw':![]},'log':_0xe372('0x5')});};};exports['updateContacts']=function(_0x3649f3,_0x1a0e22,_0xe136d7){return function(){return client['Request'](_0xe372('0x6'),{'body':_0x3649f3,'options':{'where':{'VoiceQueueId':_0x1a0e22,'scheduledat':{'$lte':moment()[_0xe372('0x7')]('YYYY-MM-DD\x20HH:mm:ss')}},'limit':_0xe136d7},'log':'UpdateCmHopper'});};};exports['rescheduleContact']=function(_0x55969c){return function(){return client[_0xe372('0x2')](_0xe372('0x6'),{'body':_0x55969c,'options':{'where':{'ContactId':_0x55969c[_0xe372('0x8')],'ListId':_0x55969c[_0xe372('0x9')],'VoiceQueueId':_0x55969c[_0xe372('0xa')],'CampaignId':_0x55969c['CampaignId']}},'log':_0xe372('0xb')});};};exports[_0xe372('0xc')]=function(_0x341d5e,_0x4c054a,_0x5c483d){return function(){return client[_0xe372('0x2')](_0xe372('0xd'),{'options':{'where':{'VoiceQueueId':_0x341d5e,'ListId':_0x4c054a,'ContactId':_0x5c483d}},'log':_0xe372('0xd')});};};exports[_0xe372('0xe')]=function(_0x144be3,_0x49b1ab,_0x34e20e,_0x1d3c5c){return function(){return client['Request'](_0xe372('0xf'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x144be3,'active':![],'scheduledat':{'$lte':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'$or':[{'UserId':null},{'UserId':{'$in':_0x49b1ab}}]},'order':[[_0xe372('0x10'),_0xe372('0x11')],[_0xe372('0x12'),_0x1d3c5c],['id',_0xe372('0x13')]],'raw':!![],'limit':_0x34e20e},'log':'GetContactDialer'});};};exports[_0xe372('0x14')]=function(_0x5e0763,_0x1c62a1,_0x3d6543){return function(){return client[_0xe372('0x2')]('GetContactDialer',{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x5e0763,'active':![],'scheduledat':{'$lte':moment()[_0xe372('0x7')](_0xe372('0x15'))}},'include':[{'model':'CmContact','as':'Contact'}],'order':[[_0xe372('0x10'),_0xe372('0x11')],[_0xe372('0x12'),_0x3d6543],['id','ASC']],'raw':!![],'limit':_0x1c62a1},'log':_0xe372('0x16')});};};exports['moveContactManagedDialer']=function(_0x44c2c8,_0x37218d){return function(){_0x44c2c8[_0xe372('0x17')]=_0x44c2c8[_0xe372('0x18')];return client['Request'](_0xe372('0x19'),{'body':_0x44c2c8,'options':{'where':{'ContactId':_0x44c2c8[_0xe372('0x8')],'ListId':_0x44c2c8[_0xe372('0x9')],'VoiceQueueId':_0x44c2c8['VoiceQueueId'],'CampaignId':_0x44c2c8[_0xe372('0x1a')],'active':_0x37218d?undefined:!![]}},'log':_0xe372('0x19')});};};exports[_0xe372('0x1b')]=function(_0x523c04){return function(){return client[_0xe372('0x2')]('CountReScheduled',{'options':{'where':{'VoiceQueueId':_0x523c04['id']?_0x523c04['id']||null:null}},'log':'countReScheduled'});};};exports[_0xe372('0x1c')]=function(_0x282ed9){return function(){return client['Request'](_0xe372('0x1d'),{'options':{'where':{'id':_0x282ed9},'include':[{'model':_0xe372('0x4'),'as':'Contact'},{'model':'User','as':_0xe372('0x1e'),'attributes':['id',_0xe372('0x1f')]},{'model':_0xe372('0x20'),'as':_0xe372('0x21'),'attributes':['id',_0xe372('0x1f')]}],'raw':!![]},'log':_0xe372('0x5')});};};exports[_0xe372('0x22')]=function(_0x5a1f42,_0x5284a2,_0x3d158e){return function(){return client[_0xe372('0x2')]('UpdateCmHopper',{'body':_0x5a1f42,'options':{'where':{'id':_0x5284a2},'limit':_0x3d158e},'log':_0xe372('0x6')});};};exports['getContactRecallMe']=function(_0x139e59,_0x410762){return function(){return client['Request']('GetContactRecallMe',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x139e59,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()['format'](_0xe372('0x15'))},'UserId':{'$in':_0x410762}},'order':[['priority',_0xe372('0x11')],[_0xe372('0x12'),_0xe372('0x11')],['id',_0xe372('0x13')]],'include':[{'model':'CmContact','as':_0xe372('0x23')},{'model':_0xe372('0x24'),'as':'Agent','attributes':['id',_0xe372('0x1f'),'voicePause']}],'group':'db.CmHopper.UserId','raw':!![]},'log':_0xe372('0xf')});};};
\ No newline at end of file
index 58ef12d..e63503e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb574=['Request','GetCmHopperBlack','Contact','phone','checkIsBlackListIvr','CampaignId','../client','checkIsBlackList'];(function(_0x34ad3b,_0x4ecdad){var _0xee394d=function(_0x52105f){while(--_0x52105f){_0x34ad3b['push'](_0x34ad3b['shift']());}};_0xee394d(++_0x4ecdad);}(_0xb574,0x106));var _0x4b57=function(_0xbc4e41,_0x1e4ae9){_0xbc4e41=_0xbc4e41-0x0;var _0x22d30c=_0xb574[_0xbc4e41];return _0x22d30c;};'use strict';var client=require(_0x4b57('0x0'));exports[_0x4b57('0x1')]=function(_0x4c29a6){return function(){return client[_0x4b57('0x2')](_0x4b57('0x3'),{'options':{'where':{'VoiceQueueId':_0x4c29a6['VoiceQueueId'],'phone':_0x4c29a6[_0x4b57('0x4')][_0x4b57('0x5')]},'raw':![]},'log':_0x4b57('0x3')});};};exports[_0x4b57('0x6')]=function(_0xe2ae86){return function(){return client['Request']('GetCmHopperBlack',{'options':{'where':{'CampaignId':_0xe2ae86[_0x4b57('0x7')],'phone':_0xe2ae86['Contact']['phone']},'raw':![]},'log':'GetCmHopperBlackIvr'});};};
\ No newline at end of file
+var _0x02ce=['phone','checkIsBlackListIvr','Request','CampaignId','../client','checkIsBlackList','GetCmHopperBlack','Contact'];(function(_0x5b83c6,_0x7d1630){var _0xdc74bf=function(_0x580acf){while(--_0x580acf){_0x5b83c6['push'](_0x5b83c6['shift']());}};_0xdc74bf(++_0x7d1630);}(_0x02ce,0x1ac));var _0xe02c=function(_0x10b006,_0x2c884c){_0x10b006=_0x10b006-0x0;var _0x52eeaf=_0x02ce[_0x10b006];return _0x52eeaf;};'use strict';var client=require(_0xe02c('0x0'));exports[_0xe02c('0x1')]=function(_0x3f9bc7){return function(){return client['Request'](_0xe02c('0x2'),{'options':{'where':{'VoiceQueueId':_0x3f9bc7['VoiceQueueId'],'phone':_0x3f9bc7[_0xe02c('0x3')][_0xe02c('0x4')]},'raw':![]},'log':_0xe02c('0x2')});};};exports[_0xe02c('0x5')]=function(_0x41b41c){return function(){return client[_0xe02c('0x6')](_0xe02c('0x2'),{'options':{'where':{'CampaignId':_0x41b41c[_0xe02c('0x7')],'phone':_0x41b41c[_0xe02c('0x3')]['phone']},'raw':![]},'log':'GetCmHopperBlackIvr'});};};
\ No newline at end of file
index b3a5471..fabd369 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06bd=['CreateCmHopperFinal','../client','createContact','campaign','queue','Request'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0x06bd,0x169));var _0xd06b=function(_0x380575,_0xc72d46){_0x380575=_0x380575-0x0;var _0x15080a=_0x06bd[_0x380575];return _0x15080a;};'use strict';var client=require(_0xd06b('0x0'));exports[_0xd06b('0x1')]=function(_0x47abc2){return function(){_0x47abc2[_0xd06b('0x2')]=_0x47abc2[_0xd06b('0x3')];return client[_0xd06b('0x4')]('CreateCmHopperFinal',{'body':_0x47abc2,'log':_0xd06b('0x5')});};};
\ No newline at end of file
+var _0xfa49=['Request','CreateCmHopperFinal','../client','createContact','queue'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xfa49,0xf7));var _0x9fa4=function(_0x29608d,_0x59b95d){_0x29608d=_0x29608d-0x0;var _0x1443dd=_0xfa49[_0x29608d];return _0x1443dd;};'use strict';var client=require(_0x9fa4('0x0'));exports[_0x9fa4('0x1')]=function(_0x49f6b9){return function(){_0x49f6b9['campaign']=_0x49f6b9[_0x9fa4('0x2')];return client[_0x9fa4('0x3')](_0x9fa4('0x4'),{'body':_0x49f6b9,'log':_0x9fa4('0x4')});};};
\ No newline at end of file
index 5870fe0..c87db7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f5f=['campaign','queue','CreateCmHopperHistory','Request','AvgHandleTime','subtract','minutes','YYYY-MM-DD\x20HH:mm:ss','format','getVoiceQueueHopperHistory','startOf','day','endOf','GetVoiceQueueHopperHistory','getCampaignHopperHistory','GetCampaignHopperHistory','ivr','moment','createHistory'];(function(_0x24fd81,_0x2ae33c){var _0x500f2d=function(_0x50fedb){while(--_0x50fedb){_0x24fd81['push'](_0x24fd81['shift']());}};_0x500f2d(++_0x2ae33c);}(_0x1f5f,0x70));var _0xf1f5=function(_0x194b29,_0x519e5b){_0x194b29=_0x194b29-0x0;var _0x19e925=_0x1f5f[_0x194b29];return _0x19e925;};'use strict';var client=require('../client');var moment=require(_0xf1f5('0x0'));exports[_0xf1f5('0x1')]=function(_0x183f12){return function(){_0x183f12[_0xf1f5('0x2')]=_0x183f12[_0xf1f5('0x3')];return client['Request'](_0xf1f5('0x4'),{'body':_0x183f12,'log':'CreateCmHopperHistory'});};};exports['avgHandleTime']=function(_0x36106a){return function(){return client[_0xf1f5('0x5')](_0xf1f5('0x6'),{'options':{'where':{'endtime':{'$between':[moment()[_0xf1f5('0x7')](_0x36106a,_0xf1f5('0x8'))['format'](_0xf1f5('0x9')),moment()[_0xf1f5('0xa')](_0xf1f5('0x9'))]}},'raw':![]},'log':'GetCmHopperHistory'});};};exports[_0xf1f5('0xb')]=function(_0x486944){return function(){return client[_0xf1f5('0x5')]('GetVoiceQueueHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()[_0xf1f5('0xc')](_0xf1f5('0xd'))['format'](_0xf1f5('0x9')),moment()[_0xf1f5('0xe')](_0xf1f5('0xd'))['format'](_0xf1f5('0x9'))]},'campaigntype':_0xf1f5('0x3')},'raw':![]},'log':_0xf1f5('0xf')});};};exports[_0xf1f5('0x10')]=function(_0x2f6c68){return function(){return client['Request'](_0xf1f5('0x11'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xf1f5('0xc')](_0xf1f5('0xd'))['format']('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0xf1f5('0xe')](_0xf1f5('0xd'))[_0xf1f5('0xa')](_0xf1f5('0x9'))]},'campaigntype':_0xf1f5('0x12')},'raw':![]},'log':_0xf1f5('0x11')});};};
\ No newline at end of file
+var _0xe446=['Request','startOf','endOf','day','getCampaignHopperHistory','GetCampaignHopperHistory','ivr','../client','campaign','queue','CreateCmHopperHistory','avgHandleTime','subtract','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory'];(function(_0xf0bcac,_0x531755){var _0x4e4c65=function(_0x35a77a){while(--_0x35a77a){_0xf0bcac['push'](_0xf0bcac['shift']());}};_0x4e4c65(++_0x531755);}(_0xe446,0xc2));var _0x6e44=function(_0x5afdbf,_0x3e09b8){_0x5afdbf=_0x5afdbf-0x0;var _0x41e647=_0xe446[_0x5afdbf];return _0x41e647;};'use strict';var client=require(_0x6e44('0x0'));var moment=require('moment');exports['createHistory']=function(_0x49a2e4){return function(){_0x49a2e4[_0x6e44('0x1')]=_0x49a2e4[_0x6e44('0x2')];return client['Request']('CreateCmHopperHistory',{'body':_0x49a2e4,'log':_0x6e44('0x3')});};};exports[_0x6e44('0x4')]=function(_0x3f941d){return function(){return client['Request']('AvgHandleTime',{'options':{'where':{'endtime':{'$between':[moment()[_0x6e44('0x5')](_0x3f941d,'minutes')[_0x6e44('0x6')](_0x6e44('0x7')),moment()[_0x6e44('0x6')](_0x6e44('0x7'))]}},'raw':![]},'log':_0x6e44('0x8')});};};exports[_0x6e44('0x9')]=function(_0x5cd2da){return function(){return client[_0x6e44('0xa')]('GetVoiceQueueHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()[_0x6e44('0xb')]('day')[_0x6e44('0x6')](_0x6e44('0x7')),moment()[_0x6e44('0xc')](_0x6e44('0xd'))[_0x6e44('0x6')](_0x6e44('0x7'))]},'campaigntype':_0x6e44('0x2')},'raw':![]},'log':'GetVoiceQueueHopperHistory'});};};exports[_0x6e44('0xe')]=function(_0x4d6fc9){return function(){return client[_0x6e44('0xa')](_0x6e44('0xf'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x6e44('0xb')](_0x6e44('0xd'))['format'](_0x6e44('0x7')),moment()[_0x6e44('0xc')](_0x6e44('0xd'))['format']('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':_0x6e44('0x10')},'raw':![]},'log':'GetCampaignHopperHistory'});};};
\ No newline at end of file
index feeee52..bf40bef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0da=['name','ecm','headerinfo','localstationid','modem','t38timeout','tech','TrunkId','ListId','Trunk','callerid','active','getFaxAccount','notify','NotifyFaxAccount','../client','getFaxAccounts','Request','GetFaxAccount'];(function(_0x4bf853,_0x1fc141){var _0x38994f=function(_0x2f84e0){while(--_0x2f84e0){_0x4bf853['push'](_0x4bf853['shift']());}};_0x38994f(++_0x1fc141);}(_0xd0da,0x1b1));var _0xad0d=function(_0x56355a,_0x138baf){_0x56355a=_0x56355a-0x0;var _0x573afa=_0xd0da[_0x56355a];return _0x573afa;};'use strict';var client=require(_0xad0d('0x0'));exports[_0xad0d('0x1')]=function(){return function(){return client[_0xad0d('0x2')](_0xad0d('0x3'),{'options':{'raw':![],'attributes':['id',_0xad0d('0x4'),'description',_0xad0d('0x5'),_0xad0d('0x6'),_0xad0d('0x7'),'minrate','maxrate',_0xad0d('0x8'),'gateway','faxdetect',_0xad0d('0x9'),_0xad0d('0xa'),_0xad0d('0xb'),_0xad0d('0xc'),'key'],'include':[{'model':_0xad0d('0xd'),'as':_0xad0d('0xd'),'attributes':['id',_0xad0d('0x4'),_0xad0d('0xe'),_0xad0d('0xf')]}]},'log':_0xad0d('0x10')});};};exports[_0xad0d('0x11')]=function(_0x2b898f,_0x240418){return client[_0xad0d('0x2')](_0xad0d('0x12'),{'account':{'id':_0x2b898f},'body':_0x240418,'log':_0xad0d('0x12')});};
\ No newline at end of file
+var _0x9f37=['../client','getFaxAccounts','GetFaxAccount','ecm','headerinfo','localstationid','maxrate','modem','t38timeout','tech','TrunkId','ListId','Trunk','callerid','active','getFaxAccount','notify','Request','NotifyFaxAccount'];(function(_0x527e41,_0x35dac9){var _0x3900d4=function(_0x4f38a2){while(--_0x4f38a2){_0x527e41['push'](_0x527e41['shift']());}};_0x3900d4(++_0x35dac9);}(_0x9f37,0xd1));var _0x79f3=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x9f37[_0x502c7d];return _0x30b7ed;};'use strict';var client=require(_0x79f3('0x0'));exports[_0x79f3('0x1')]=function(){return function(){return client['Request'](_0x79f3('0x2'),{'options':{'raw':![],'attributes':['id','name','description',_0x79f3('0x3'),_0x79f3('0x4'),_0x79f3('0x5'),'minrate',_0x79f3('0x6'),_0x79f3('0x7'),'gateway','faxdetect',_0x79f3('0x8'),_0x79f3('0x9'),_0x79f3('0xa'),_0x79f3('0xb'),'key'],'include':[{'model':_0x79f3('0xc'),'as':_0x79f3('0xc'),'attributes':['id','name',_0x79f3('0xd'),_0x79f3('0xe')]}]},'log':_0x79f3('0xf')});};};exports[_0x79f3('0x10')]=function(_0x3efa9b,_0x5f3d73){return client[_0x79f3('0x11')](_0x79f3('0x12'),{'account':{'id':_0x3efa9b},'body':_0x5f3d73,'log':'NotifyFaxAccount'});};
\ No newline at end of file
index 33d2b98..c65116b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01a6=['update','Request','UpdateFaxMessage','../client'];(function(_0x424a36,_0x1797a9){var _0x27c1ba=function(_0x505693){while(--_0x505693){_0x424a36['push'](_0x424a36['shift']());}};_0x27c1ba(++_0x1797a9);}(_0x01a6,0xa7));var _0x601a=function(_0x159e1b,_0x1bd812){_0x159e1b=_0x159e1b-0x0;var _0x205144=_0x01a6[_0x159e1b];return _0x205144;};'use strict';var client=require(_0x601a('0x0'));exports[_0x601a('0x1')]=function(_0x4996a2,_0x2b320a){return client[_0x601a('0x2')](_0x601a('0x3'),{'body':_0x2b320a,'options':{'where':{'AttachmentId':_0x4996a2}},'log':'UpdateFaxMessage'});};
\ No newline at end of file
+var _0x6051=['UpdateFaxMessage','../client','update'];(function(_0x5acd55,_0x5affab){var _0xeef4aa=function(_0x499c4f){while(--_0x499c4f){_0x5acd55['push'](_0x5acd55['shift']());}};_0xeef4aa(++_0x5affab);}(_0x6051,0x73));var _0x1605=function(_0x16da8f,_0x4ddb80){_0x16da8f=_0x16da8f-0x0;var _0xd5dca8=_0x6051[_0x16da8f];return _0xd5dca8;};'use strict';var client=require(_0x1605('0x0'));exports[_0x1605('0x1')]=function(_0x8c54b0,_0x10d687){return client['Request'](_0x1605('0x2'),{'body':_0x10d687,'options':{'where':{'AttachmentId':_0x8c54b0}},'log':'UpdateFaxMessage'});};
\ No newline at end of file
index 92ee2b0..e2452f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1473=['Variable','Descriptions','key','Fields','type','idField','nameField','customField','Tag','Tags','../../client','getDeskAccounts','Request','GetDeskAccount','name','description','password','remoteUri','serverUrl','DeskConfiguration','Configurations','DeskField','Subjects','content','variableName'];(function(_0x5de1bc,_0x434be1){var _0x19f4b8=function(_0x35f764){while(--_0x35f764){_0x5de1bc['push'](_0x5de1bc['shift']());}};_0x19f4b8(++_0x434be1);}(_0x1473,0x19a));var _0x3147=function(_0x393016,_0x116e6e){_0x393016=_0x393016-0x0;var _0x1638f0=_0x1473[_0x393016];return _0x1638f0;};'use strict';var client=require(_0x3147('0x0'));exports[_0x3147('0x1')]=function(){return function(_0x48ac6b){return client[_0x3147('0x2')](_0x3147('0x3'),{'options':{'raw':![],'attributes':['id',_0x3147('0x4'),_0x3147('0x5'),'username',_0x3147('0x6'),_0x3147('0x7'),'authType','type',_0x3147('0x8')],'include':[{'model':_0x3147('0x9'),'as':_0x3147('0xa'),'attributes':['id','name'],'include':[{'model':_0x3147('0xb'),'as':_0x3147('0xc'),'attributes':['id','type',_0x3147('0xd'),_0x3147('0xe')],'include':[{'model':_0x3147('0xf'),'as':'Variable','attributes':['id',_0x3147('0x4')]}]},{'model':_0x3147('0xb'),'as':_0x3147('0x10'),'attributes':['id','type','content',_0x3147('0x11'),'keyType','keyContent',_0x3147('0xe')],'include':[{'model':_0x3147('0xf'),'as':_0x3147('0xf'),'attributes':['id','name']}]},{'model':_0x3147('0xb'),'as':_0x3147('0x12'),'attributes':['id',_0x3147('0x13'),_0x3147('0xd'),_0x3147('0x14'),_0x3147('0x15'),_0x3147('0x16'),_0x3147('0xe')],'include':[{'model':_0x3147('0xf'),'as':_0x3147('0xf'),'attributes':['id',_0x3147('0x4')]}]},{'model':_0x3147('0x17'),'as':_0x3147('0x18'),'attributes':['id',_0x3147('0x4')]}]}]},'log':_0x3147('0x3')});};};
\ No newline at end of file
+var _0x7c69=['keyType','Fields','idField','customField','../../client','getDeskAccounts','Request','GetDeskAccount','name','description','username','password','remoteUri','authType','serverUrl','DeskConfiguration','Configurations','DeskField','Subjects','type','content','variableName','Variable','key'];(function(_0x1d5d72,_0x18093d){var _0x35029b=function(_0x49c57a){while(--_0x49c57a){_0x1d5d72['push'](_0x1d5d72['shift']());}};_0x35029b(++_0x18093d);}(_0x7c69,0xc4));var _0x97c6=function(_0x1b81b9,_0x1d314a){_0x1b81b9=_0x1b81b9-0x0;var _0x27a94d=_0x7c69[_0x1b81b9];return _0x27a94d;};'use strict';var client=require(_0x97c6('0x0'));exports[_0x97c6('0x1')]=function(){return function(_0x1db13c){return client[_0x97c6('0x2')](_0x97c6('0x3'),{'options':{'raw':![],'attributes':['id',_0x97c6('0x4'),_0x97c6('0x5'),_0x97c6('0x6'),_0x97c6('0x7'),_0x97c6('0x8'),_0x97c6('0x9'),'type',_0x97c6('0xa')],'include':[{'model':_0x97c6('0xb'),'as':_0x97c6('0xc'),'attributes':['id',_0x97c6('0x4')],'include':[{'model':_0x97c6('0xd'),'as':_0x97c6('0xe'),'attributes':['id',_0x97c6('0xf'),_0x97c6('0x10'),_0x97c6('0x11')],'include':[{'model':'Variable','as':_0x97c6('0x12'),'attributes':['id',_0x97c6('0x4')]}]},{'model':_0x97c6('0xd'),'as':'Descriptions','attributes':['id','type',_0x97c6('0x10'),_0x97c6('0x13'),_0x97c6('0x14'),'keyContent','variableName'],'include':[{'model':_0x97c6('0x12'),'as':'Variable','attributes':['id',_0x97c6('0x4')]}]},{'model':_0x97c6('0xd'),'as':_0x97c6('0x15'),'attributes':['id',_0x97c6('0xf'),'content',_0x97c6('0x16'),'nameField',_0x97c6('0x17'),_0x97c6('0x11')],'include':[{'model':_0x97c6('0x12'),'as':_0x97c6('0x12'),'attributes':['id','name']}]},{'model':'Tag','as':'Tags','attributes':['id',_0x97c6('0x4')]}]}]},'log':_0x97c6('0x3')});};};
\ No newline at end of file
index 4b636ce..ab4d451 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd62f=['Request','GetDynamics365Account','username','password','clientId','description','Configurations','Dynamics365Field','Subjects','type','content','variableName','Variable','name','Descriptions','key','keyType','keyContent','Fields','nameField','customField','../../client','getDynamics365Accounts'];(function(_0x18e84b,_0x55f6d6){var _0x4426e4=function(_0xb10409){while(--_0xb10409){_0x18e84b['push'](_0x18e84b['shift']());}};_0x4426e4(++_0x55f6d6);}(_0xd62f,0x157));var _0xfd62=function(_0x31d8c4,_0x408041){_0x31d8c4=_0x31d8c4-0x0;var _0x21b0d6=_0xd62f[_0x31d8c4];return _0x21b0d6;};'use strict';var client=require(_0xfd62('0x0'));exports[_0xfd62('0x1')]=function(){return function(_0x1fdc96){return client[_0xfd62('0x2')](_0xfd62('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xfd62('0x4'),_0xfd62('0x5'),'remoteUri','tenantId',_0xfd62('0x6'),'clientSecret','serverUrl',_0xfd62('0x7')],'include':[{'model':'Dynamics365Configuration','as':_0xfd62('0x8'),'attributes':['id','name','ticketType'],'include':[{'model':_0xfd62('0x9'),'as':_0xfd62('0xa'),'attributes':['id',_0xfd62('0xb'),_0xfd62('0xc'),_0xfd62('0xd')],'include':[{'model':_0xfd62('0xe'),'as':'Variable','attributes':['id',_0xfd62('0xf')]}]},{'model':_0xfd62('0x9'),'as':_0xfd62('0x10'),'attributes':['id',_0xfd62('0xb'),'content',_0xfd62('0x11'),_0xfd62('0x12'),_0xfd62('0x13'),_0xfd62('0xd')],'include':[{'model':_0xfd62('0xe'),'as':'Variable','attributes':['id',_0xfd62('0xf')]}]},{'model':_0xfd62('0x9'),'as':_0xfd62('0x14'),'attributes':['id',_0xfd62('0xb'),_0xfd62('0xc'),'idField',_0xfd62('0x15'),_0xfd62('0x16'),_0xfd62('0xd')],'include':[{'model':_0xfd62('0xe'),'as':'Variable','attributes':['id',_0xfd62('0xf')]}]}]}]},'log':'GetDynamics365Account'});};};
\ No newline at end of file
+var _0xd6dc=['Configurations','ticketType','Dynamics365Field','Subjects','type','content','variableName','Variable','key','idField','nameField','customField','../../client','getDynamics365Accounts','Request','GetDynamics365Account','name','username','password','remoteUri','tenantId','clientId','clientSecret','serverUrl','description','Dynamics365Configuration'];(function(_0x280710,_0x248803){var _0x24892b=function(_0x792db9){while(--_0x792db9){_0x280710['push'](_0x280710['shift']());}};_0x24892b(++_0x248803);}(_0xd6dc,0xa8));var _0xcd6d=function(_0x155294,_0x210990){_0x155294=_0x155294-0x0;var _0x27500f=_0xd6dc[_0x155294];return _0x27500f;};'use strict';var client=require(_0xcd6d('0x0'));exports[_0xcd6d('0x1')]=function(){return function(_0x483959){return client[_0xcd6d('0x2')](_0xcd6d('0x3'),{'options':{'raw':![],'attributes':['id',_0xcd6d('0x4'),_0xcd6d('0x5'),_0xcd6d('0x6'),_0xcd6d('0x7'),_0xcd6d('0x8'),_0xcd6d('0x9'),_0xcd6d('0xa'),_0xcd6d('0xb'),_0xcd6d('0xc')],'include':[{'model':_0xcd6d('0xd'),'as':_0xcd6d('0xe'),'attributes':['id','name',_0xcd6d('0xf')],'include':[{'model':_0xcd6d('0x10'),'as':_0xcd6d('0x11'),'attributes':['id',_0xcd6d('0x12'),_0xcd6d('0x13'),_0xcd6d('0x14')],'include':[{'model':_0xcd6d('0x15'),'as':_0xcd6d('0x15'),'attributes':['id',_0xcd6d('0x4')]}]},{'model':_0xcd6d('0x10'),'as':'Descriptions','attributes':['id',_0xcd6d('0x12'),_0xcd6d('0x13'),_0xcd6d('0x16'),'keyType','keyContent','variableName'],'include':[{'model':'Variable','as':_0xcd6d('0x15'),'attributes':['id',_0xcd6d('0x4')]}]},{'model':_0xcd6d('0x10'),'as':'Fields','attributes':['id',_0xcd6d('0x12'),_0xcd6d('0x13'),_0xcd6d('0x17'),_0xcd6d('0x18'),_0xcd6d('0x19'),'variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xcd6d('0x4')]}]}]}]},'log':_0xcd6d('0x3')});};};
\ No newline at end of file
index 321df53..a7d788d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x173d=['getFreshdeskAccounts','GetFreshdeskAccount','username','apiKey','remoteUri','serverUrl','FreshdeskConfiguration','name','Tag','Subjects','content','Variable','Descriptions','type','key','keyType','keyContent','variableName','FreshdeskField','Fields','idField','customField'];(function(_0x2e3bc5,_0x96b2db){var _0x46d511=function(_0x76bc23){while(--_0x76bc23){_0x2e3bc5['push'](_0x2e3bc5['shift']());}};_0x46d511(++_0x96b2db);}(_0x173d,0x108));var _0xd173=function(_0x4087e2,_0x3a1cce){_0x4087e2=_0x4087e2-0x0;var _0x1595fe=_0x173d[_0x4087e2];return _0x1595fe;};'use strict';var client=require('../../client');exports[_0xd173('0x0')]=function(){return function(_0x5b732c){return client['Request'](_0xd173('0x1'),{'options':{'raw':![],'attributes':['id','name',_0xd173('0x2'),_0xd173('0x3'),_0xd173('0x4'),_0xd173('0x5')],'include':[{'model':_0xd173('0x6'),'as':'Configurations','attributes':['id',_0xd173('0x7')],'include':[{'model':_0xd173('0x8'),'attributes':['id',_0xd173('0x7')]},{'model':'FreshdeskField','as':_0xd173('0x9'),'attributes':['id','type',_0xd173('0xa'),'variableName'],'include':[{'model':'Variable','as':_0xd173('0xb'),'attributes':['id',_0xd173('0x7')]}]},{'model':'FreshdeskField','as':_0xd173('0xc'),'attributes':['id',_0xd173('0xd'),'content',_0xd173('0xe'),_0xd173('0xf'),_0xd173('0x10'),_0xd173('0x11')],'include':[{'model':_0xd173('0xb'),'as':_0xd173('0xb'),'attributes':['id',_0xd173('0x7')]}]},{'model':_0xd173('0x12'),'as':_0xd173('0x13'),'attributes':['id',_0xd173('0xd'),_0xd173('0xa'),_0xd173('0x14'),'nameField',_0xd173('0x15'),'variableName'],'include':[{'model':_0xd173('0xb'),'as':_0xd173('0xb'),'attributes':['id','name']}]}]}]},'log':_0xd173('0x1')});};};
\ No newline at end of file
+var _0xc817=['FreshdeskConfiguration','Tag','FreshdeskField','Subjects','content','variableName','Variable','Descriptions','type','key','keyType','keyContent','Fields','idField','nameField','customField','GetFreshdeskAccount','../../client','getFreshdeskAccounts','Request','name','username','apiKey','remoteUri','serverUrl'];(function(_0x22be6d,_0x90876b){var _0x1985e1=function(_0x4a8921){while(--_0x4a8921){_0x22be6d['push'](_0x22be6d['shift']());}};_0x1985e1(++_0x90876b);}(_0xc817,0x75));var _0x7c81=function(_0x5e2864,_0x4b6831){_0x5e2864=_0x5e2864-0x0;var _0x387794=_0xc817[_0x5e2864];return _0x387794;};'use strict';var client=require(_0x7c81('0x0'));exports[_0x7c81('0x1')]=function(){return function(_0x54df25){return client[_0x7c81('0x2')]('GetFreshdeskAccount',{'options':{'raw':![],'attributes':['id',_0x7c81('0x3'),_0x7c81('0x4'),_0x7c81('0x5'),_0x7c81('0x6'),_0x7c81('0x7')],'include':[{'model':_0x7c81('0x8'),'as':'Configurations','attributes':['id',_0x7c81('0x3')],'include':[{'model':_0x7c81('0x9'),'attributes':['id','name']},{'model':_0x7c81('0xa'),'as':_0x7c81('0xb'),'attributes':['id','type',_0x7c81('0xc'),_0x7c81('0xd')],'include':[{'model':_0x7c81('0xe'),'as':_0x7c81('0xe'),'attributes':['id',_0x7c81('0x3')]}]},{'model':'FreshdeskField','as':_0x7c81('0xf'),'attributes':['id',_0x7c81('0x10'),_0x7c81('0xc'),_0x7c81('0x11'),_0x7c81('0x12'),_0x7c81('0x13'),_0x7c81('0xd')],'include':[{'model':_0x7c81('0xe'),'as':_0x7c81('0xe'),'attributes':['id',_0x7c81('0x3')]}]},{'model':_0x7c81('0xa'),'as':_0x7c81('0x14'),'attributes':['id',_0x7c81('0x10'),_0x7c81('0xc'),_0x7c81('0x15'),_0x7c81('0x16'),_0x7c81('0x17'),_0x7c81('0xd')],'include':[{'model':_0x7c81('0xe'),'as':'Variable','attributes':['id',_0x7c81('0x3')]}]}]}]},'log':_0x7c81('0x18')});};};
\ No newline at end of file
index 5ba4e26..8208088 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf69c=['apiKey','serverUrl','Configurations','FreshsalesField','Subjects','type','variableName','Variable','Descriptions','content','key','keyType','keyContent','GetFreshsalesccount','../../client','Request','name'];(function(_0x321305,_0x404291){var _0x2b7924=function(_0x1669c5){while(--_0x1669c5){_0x321305['push'](_0x321305['shift']());}};_0x2b7924(++_0x404291);}(_0xf69c,0x151));var _0xcf69=function(_0x170bba,_0x2be92f){_0x170bba=_0x170bba-0x0;var _0xa7c249=_0xf69c[_0x170bba];return _0xa7c249;};'use strict';var client=require(_0xcf69('0x0'));exports['getFreshsalesAccounts']=function(){return function(_0x166cfe){return client[_0xcf69('0x1')]('GetFreshsalesAccount',{'options':{'raw':![],'attributes':['id',_0xcf69('0x2'),'username',_0xcf69('0x3'),'remoteUri',_0xcf69('0x4')],'include':[{'model':'FreshsalesConfiguration','as':_0xcf69('0x5'),'attributes':['id',_0xcf69('0x2')],'include':[{'model':_0xcf69('0x6'),'as':_0xcf69('0x7'),'attributes':['id',_0xcf69('0x8'),'content',_0xcf69('0x9')],'include':[{'model':_0xcf69('0xa'),'as':_0xcf69('0xa'),'attributes':['id',_0xcf69('0x2')]}]},{'model':'FreshsalesField','as':_0xcf69('0xb'),'attributes':['id',_0xcf69('0x8'),_0xcf69('0xc'),_0xcf69('0xd'),_0xcf69('0xe'),_0xcf69('0xf'),'variableName'],'include':[{'model':_0xcf69('0xa'),'as':'Variable','attributes':['id',_0xcf69('0x2')]}]}]}]},'log':_0xcf69('0x10')});};};
\ No newline at end of file
+var _0xfc65=['GetFreshsalesccount','../../client','Request','GetFreshsalesAccount','name','username','apiKey','remoteUri','serverUrl','FreshsalesConfiguration','Configurations','FreshsalesField','Subjects','type','variableName','Variable','Descriptions','content','key','keyType'];(function(_0x23a789,_0x3a9be4){var _0x23d23a=function(_0x24dbb4){while(--_0x24dbb4){_0x23a789['push'](_0x23a789['shift']());}};_0x23d23a(++_0x3a9be4);}(_0xfc65,0x1e1));var _0x5fc6=function(_0x4c345f,_0x27459c){_0x4c345f=_0x4c345f-0x0;var _0x4537c7=_0xfc65[_0x4c345f];return _0x4537c7;};'use strict';var client=require(_0x5fc6('0x0'));exports['getFreshsalesAccounts']=function(){return function(_0x5807aa){return client[_0x5fc6('0x1')](_0x5fc6('0x2'),{'options':{'raw':![],'attributes':['id',_0x5fc6('0x3'),_0x5fc6('0x4'),_0x5fc6('0x5'),_0x5fc6('0x6'),_0x5fc6('0x7')],'include':[{'model':_0x5fc6('0x8'),'as':_0x5fc6('0x9'),'attributes':['id',_0x5fc6('0x3')],'include':[{'model':_0x5fc6('0xa'),'as':_0x5fc6('0xb'),'attributes':['id',_0x5fc6('0xc'),'content',_0x5fc6('0xd')],'include':[{'model':_0x5fc6('0xe'),'as':_0x5fc6('0xe'),'attributes':['id',_0x5fc6('0x3')]}]},{'model':_0x5fc6('0xa'),'as':_0x5fc6('0xf'),'attributes':['id',_0x5fc6('0xc'),_0x5fc6('0x10'),_0x5fc6('0x11'),_0x5fc6('0x12'),'keyContent',_0x5fc6('0xd')],'include':[{'model':'Variable','as':_0x5fc6('0xe'),'attributes':['id',_0x5fc6('0x3')]}]}]}]},'log':_0x5fc6('0x13')});};};
\ No newline at end of file
index 1dc891d..4727f48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97e6=['SalesforceField','Subjects','Variable','../../client','Request','GetSalesforceAccount','username','password','clientId','securityToken','serverUrl','type','SalesforceConfiguration','Configurations','name','ticketType','leadId','additionalSearchAccount','additionalSearchLead'];(function(_0x30d1a0,_0x1e7e42){var _0x4fa39e=function(_0x39c0b0){while(--_0x39c0b0){_0x30d1a0['push'](_0x30d1a0['shift']());}};_0x4fa39e(++_0x1e7e42);}(_0x97e6,0x159));var _0x697e=function(_0x407bd8,_0x277add){_0x407bd8=_0x407bd8-0x0;var _0x20b6c9=_0x97e6[_0x407bd8];return _0x20b6c9;};'use strict';var client=require(_0x697e('0x0'));exports['getSalesforceAccounts']=function(){return function(_0x5555c4){return client[_0x697e('0x1')](_0x697e('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x697e('0x3'),_0x697e('0x4'),'remoteUri',_0x697e('0x5'),'clientSecret',_0x697e('0x6'),_0x697e('0x7'),_0x697e('0x8')],'include':[{'model':_0x697e('0x9'),'as':_0x697e('0xa'),'attributes':['id',_0x697e('0xb'),'moduleSearch','moduleCreate',_0x697e('0xc'),_0x697e('0xd'),_0x697e('0xe'),'additionalSearchContact',_0x697e('0xf')],'include':[{'model':_0x697e('0x10'),'as':_0x697e('0x11'),'include':[{'model':_0x697e('0x12'),'as':_0x697e('0x12'),'attributes':['id','name']}]},{'model':_0x697e('0x10'),'as':'Descriptions','include':[{'model':'Variable','as':_0x697e('0x12'),'attributes':['id',_0x697e('0xb')]}]},{'model':_0x697e('0x10'),'as':'Fields','include':[{'model':_0x697e('0x12'),'as':_0x697e('0x12'),'attributes':['id','name']}]}]}]},'log':'GetSalesforceAccount'});};};
\ No newline at end of file
+var _0x7177=['serverUrl','type','SalesforceConfiguration','Configurations','moduleSearch','moduleCreate','ticketType','leadId','additionalSearchContact','additionalSearchLead','Subjects','Variable','SalesforceField','Descriptions','Fields','../../client','GetSalesforceAccount','name','password','remoteUri','clientSecret','securityToken'];(function(_0xfa0652,_0x757680){var _0x13b16a=function(_0x31ac6c){while(--_0x31ac6c){_0xfa0652['push'](_0xfa0652['shift']());}};_0x13b16a(++_0x757680);}(_0x7177,0x101));var _0x7717=function(_0x8f7825,_0xaa0ca0){_0x8f7825=_0x8f7825-0x0;var _0x29a7c9=_0x7177[_0x8f7825];return _0x29a7c9;};'use strict';var client=require(_0x7717('0x0'));exports['getSalesforceAccounts']=function(){return function(_0x42b224){return client['Request'](_0x7717('0x1'),{'options':{'raw':![],'attributes':['id',_0x7717('0x2'),'username',_0x7717('0x3'),_0x7717('0x4'),'clientId',_0x7717('0x5'),_0x7717('0x6'),_0x7717('0x7'),_0x7717('0x8')],'include':[{'model':_0x7717('0x9'),'as':_0x7717('0xa'),'attributes':['id',_0x7717('0x2'),_0x7717('0xb'),_0x7717('0xc'),_0x7717('0xd'),_0x7717('0xe'),'additionalSearchAccount',_0x7717('0xf'),_0x7717('0x10')],'include':[{'model':'SalesforceField','as':_0x7717('0x11'),'include':[{'model':'Variable','as':_0x7717('0x12'),'attributes':['id',_0x7717('0x2')]}]},{'model':_0x7717('0x13'),'as':_0x7717('0x14'),'include':[{'model':_0x7717('0x12'),'as':'Variable','attributes':['id',_0x7717('0x2')]}]},{'model':_0x7717('0x13'),'as':_0x7717('0x15'),'include':[{'model':_0x7717('0x12'),'as':_0x7717('0x12'),'attributes':['id',_0x7717('0x2')]}]}]}]},'log':_0x7717('0x1')});};};
\ No newline at end of file
index dcf40c9..312a64b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d38=['ServicenowField','content','variableName','Variable','Descriptions','key','keyType','Fields','type','idField','nameField','GetServicenowkAccount','getServicenowAccounts','Request','description','password','email','remoteUri','ServicenowConfiguration','Configurations','name'];(function(_0x11dc39,_0x491115){var _0x457277=function(_0x1d77cd){while(--_0x1d77cd){_0x11dc39['push'](_0x11dc39['shift']());}};_0x457277(++_0x491115);}(_0x6d38,0x1ef));var _0x86d3=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x6d38[_0x126558];return _0x1f6d14;};'use strict';var client=require('../../client');exports[_0x86d3('0x0')]=function(){return function(_0x4c9c06){return client[_0x86d3('0x1')]('GetServicenowAccount',{'options':{'raw':![],'attributes':['id','name',_0x86d3('0x2'),'username',_0x86d3('0x3'),_0x86d3('0x4'),_0x86d3('0x5'),'serverUrl'],'include':[{'model':_0x86d3('0x6'),'as':_0x86d3('0x7'),'attributes':['id',_0x86d3('0x8')],'include':[{'model':_0x86d3('0x9'),'as':'Subjects','attributes':['id','type',_0x86d3('0xa'),_0x86d3('0xb')],'include':[{'model':_0x86d3('0xc'),'as':'Variable','attributes':['id','name']}]},{'model':_0x86d3('0x9'),'as':_0x86d3('0xd'),'attributes':['id','type','content',_0x86d3('0xe'),_0x86d3('0xf'),'keyContent',_0x86d3('0xb')],'include':[{'model':'Variable','as':_0x86d3('0xc'),'attributes':['id',_0x86d3('0x8')]}]},{'model':_0x86d3('0x9'),'as':_0x86d3('0x10'),'attributes':['id',_0x86d3('0x11'),_0x86d3('0xa'),_0x86d3('0x12'),_0x86d3('0x13'),'customField',_0x86d3('0xb')],'include':[{'model':_0x86d3('0xc'),'as':_0x86d3('0xc'),'attributes':['id',_0x86d3('0x8')]}]}]}]},'log':_0x86d3('0x14')});};};
\ No newline at end of file
+var _0x53ec=['customField','GetServicenowkAccount','../../client','getServicenowAccounts','Request','GetServicenowAccount','name','username','email','remoteUri','ServicenowConfiguration','ServicenowField','type','content','variableName','Variable','Descriptions','keyType','idField','nameField'];(function(_0x2f640a,_0x237e1d){var _0x4ba2aa=function(_0x5daa5f){while(--_0x5daa5f){_0x2f640a['push'](_0x2f640a['shift']());}};_0x4ba2aa(++_0x237e1d);}(_0x53ec,0x192));var _0xc53e=function(_0x9ae07c,_0x4cba11){_0x9ae07c=_0x9ae07c-0x0;var _0x837b1f=_0x53ec[_0x9ae07c];return _0x837b1f;};'use strict';var client=require(_0xc53e('0x0'));exports[_0xc53e('0x1')]=function(){return function(_0x2d5f51){return client[_0xc53e('0x2')](_0xc53e('0x3'),{'options':{'raw':![],'attributes':['id',_0xc53e('0x4'),'description',_0xc53e('0x5'),'password',_0xc53e('0x6'),_0xc53e('0x7'),'serverUrl'],'include':[{'model':_0xc53e('0x8'),'as':'Configurations','attributes':['id',_0xc53e('0x4')],'include':[{'model':_0xc53e('0x9'),'as':'Subjects','attributes':['id',_0xc53e('0xa'),_0xc53e('0xb'),_0xc53e('0xc')],'include':[{'model':_0xc53e('0xd'),'as':_0xc53e('0xd'),'attributes':['id',_0xc53e('0x4')]}]},{'model':_0xc53e('0x9'),'as':_0xc53e('0xe'),'attributes':['id',_0xc53e('0xa'),'content','key',_0xc53e('0xf'),'keyContent','variableName'],'include':[{'model':_0xc53e('0xd'),'as':_0xc53e('0xd'),'attributes':['id',_0xc53e('0x4')]}]},{'model':_0xc53e('0x9'),'as':'Fields','attributes':['id','type',_0xc53e('0xb'),_0xc53e('0x10'),_0xc53e('0x11'),_0xc53e('0x12'),_0xc53e('0xc')],'include':[{'model':_0xc53e('0xd'),'as':_0xc53e('0xd'),'attributes':['id',_0xc53e('0x4')]}]}]}]},'log':_0xc53e('0x13')});};};
\ No newline at end of file
index 8302baf..f538df7 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(_0x5e0b5a,_0x582e4a){var _0x5f03fb=function(_0x177a98){while(--_0x177a98){_0x5e0b5a['push'](_0x5e0b5a['shift']());}};_0x5f03fb(++_0x582e4a);}(_0x1a85,0x178));var _0x51a8=function(_0x579042,_0x5a356f){_0x579042=_0x579042-0x0;var _0x3546af=_0x1a85[_0x579042];return _0x3546af;};'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 _0x1a85=['serverUrl','Configurations','SugarcrmField','type','content','Variable','Descriptions','key','keyType','keyContent','variableName','name','Fields','idField','nameField','Request','GetSugarcrmAccount','password','remoteUri'];(function(_0x51b0b3,_0x424ea2){var _0x14908d=function(_0x4d83c7){while(--_0x4d83c7){_0x51b0b3['push'](_0x51b0b3['shift']());}};_0x14908d(++_0x424ea2);}(_0x1a85,0x178));var _0x51a8=function(_0x19a9a5,_0x2bf8b2){_0x19a9a5=_0x19a9a5-0x0;var _0x5306fe=_0x1a85[_0x19a9a5];return _0x5306fe;};'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
index d2558ac..2ce40b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52e1=['Descriptions','key','keyType','VtigerField','Fields','idField','nameField','customField','GetVtigerAccount','../../client','getVtigerAccounts','Request','name','username','accessKey','remoteUri','serverUrl','Configurations','type','content','variableName','Variable'];(function(_0x36eaaa,_0x326732){var _0x461349=function(_0x4e4180){while(--_0x4e4180){_0x36eaaa['push'](_0x36eaaa['shift']());}};_0x461349(++_0x326732);}(_0x52e1,0x1ed));var _0x152e=function(_0x2e7423,_0x4c508b){_0x2e7423=_0x2e7423-0x0;var _0x14c575=_0x52e1[_0x2e7423];return _0x14c575;};'use strict';var client=require(_0x152e('0x0'));exports[_0x152e('0x1')]=function(){return function(_0x24f99b){return client[_0x152e('0x2')]('GetVtigerAccount',{'options':{'raw':![],'attributes':['id',_0x152e('0x3'),'description',_0x152e('0x4'),_0x152e('0x5'),_0x152e('0x6'),_0x152e('0x7')],'include':[{'model':'VtigerConfiguration','as':_0x152e('0x8'),'attributes':['id',_0x152e('0x3')],'include':[{'model':'VtigerField','as':'Subjects','attributes':['id',_0x152e('0x9'),_0x152e('0xa'),_0x152e('0xb')],'include':[{'model':_0x152e('0xc'),'as':_0x152e('0xc'),'attributes':['id',_0x152e('0x3')]}]},{'model':'VtigerField','as':_0x152e('0xd'),'attributes':['id','type',_0x152e('0xa'),_0x152e('0xe'),_0x152e('0xf'),'keyContent','variableName'],'include':[{'model':_0x152e('0xc'),'as':_0x152e('0xc'),'attributes':['id',_0x152e('0x3')]}]},{'model':_0x152e('0x10'),'as':_0x152e('0x11'),'attributes':['id','type',_0x152e('0xa'),_0x152e('0x12'),_0x152e('0x13'),_0x152e('0x14'),_0x152e('0xb')],'include':[{'model':_0x152e('0xc'),'as':_0x152e('0xc'),'attributes':['id','name']}]}]}]},'log':_0x152e('0x15')});};};
\ No newline at end of file
+var _0x4c3a=['getVtigerAccounts','Request','GetVtigerAccount','username','remoteUri','serverUrl','VtigerConfiguration','Configurations','name','type','Variable','VtigerField','content','key','keyType','Fields','idField','nameField','customField'];(function(_0x2bcda2,_0x2bd74c){var _0x53e1dc=function(_0x47287b){while(--_0x47287b){_0x2bcda2['push'](_0x2bcda2['shift']());}};_0x53e1dc(++_0x2bd74c);}(_0x4c3a,0x98));var _0xa4c3=function(_0x1715f0,_0x3311fe){_0x1715f0=_0x1715f0-0x0;var _0x504209=_0x4c3a[_0x1715f0];return _0x504209;};'use strict';var client=require('../../client');exports[_0xa4c3('0x0')]=function(){return function(_0x1776c9){return client[_0xa4c3('0x1')](_0xa4c3('0x2'),{'options':{'raw':![],'attributes':['id','name','description',_0xa4c3('0x3'),'accessKey',_0xa4c3('0x4'),_0xa4c3('0x5')],'include':[{'model':_0xa4c3('0x6'),'as':_0xa4c3('0x7'),'attributes':['id',_0xa4c3('0x8')],'include':[{'model':'VtigerField','as':'Subjects','attributes':['id',_0xa4c3('0x9'),'content','variableName'],'include':[{'model':_0xa4c3('0xa'),'as':_0xa4c3('0xa'),'attributes':['id','name']}]},{'model':_0xa4c3('0xb'),'as':'Descriptions','attributes':['id',_0xa4c3('0x9'),_0xa4c3('0xc'),_0xa4c3('0xd'),_0xa4c3('0xe'),'keyContent','variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id','name']}]},{'model':'VtigerField','as':_0xa4c3('0xf'),'attributes':['id','type',_0xa4c3('0xc'),_0xa4c3('0x10'),_0xa4c3('0x11'),_0xa4c3('0x12'),'variableName'],'include':[{'model':'Variable','as':_0xa4c3('0xa'),'attributes':['id',_0xa4c3('0x8')]}]}]}]},'log':'GetVtigerAccount'});};};
\ No newline at end of file
index 592d70f..5f3b59d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x623f=['Request','GetZendeskAccount','name','username','token','serverUrl','type','ZendeskConfiguration','Configurations','ZendeskField','Subjects','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','nameField','customField','../../client','getZendeskAccounts'];(function(_0x3a7c43,_0x43aca0){var _0x115645=function(_0x4971fd){while(--_0x4971fd){_0x3a7c43['push'](_0x3a7c43['shift']());}};_0x115645(++_0x43aca0);}(_0x623f,0x71));var _0xf623=function(_0x3390ff,_0x51e0f4){_0x3390ff=_0x3390ff-0x0;var _0x4654be=_0x623f[_0x3390ff];return _0x4654be;};'use strict';var client=require(_0xf623('0x0'));exports[_0xf623('0x1')]=function(){return function(_0x5ef4a1){return client[_0xf623('0x2')](_0xf623('0x3'),{'options':{'raw':![],'attributes':['id',_0xf623('0x4'),_0xf623('0x5'),'password',_0xf623('0x6'),'remoteUri','authType',_0xf623('0x7'),_0xf623('0x8')],'include':[{'model':_0xf623('0x9'),'as':_0xf623('0xa'),'attributes':['id',_0xf623('0x4')],'include':[{'model':'Tag','attributes':['id',_0xf623('0x4')]},{'model':_0xf623('0xb'),'as':_0xf623('0xc'),'attributes':['id',_0xf623('0x8'),_0xf623('0xd'),_0xf623('0xe')],'include':[{'model':_0xf623('0xf'),'as':_0xf623('0xf'),'attributes':['id',_0xf623('0x4')]}]},{'model':_0xf623('0xb'),'as':_0xf623('0x10'),'attributes':['id','type',_0xf623('0xd'),_0xf623('0x11'),_0xf623('0x12'),_0xf623('0x13'),_0xf623('0xe')],'include':[{'model':_0xf623('0xf'),'as':_0xf623('0xf'),'attributes':['id','name']}]},{'model':_0xf623('0xb'),'as':_0xf623('0x14'),'attributes':['id',_0xf623('0x8'),_0xf623('0xd'),'idField',_0xf623('0x15'),_0xf623('0x16'),_0xf623('0xe')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xf623('0x4')]}]}]}]},'log':'GetZendeskAccount'});};};
\ No newline at end of file
+var _0xeae9=['customField','../../client','Request','name','password','token','authType','serverUrl','type','ZendeskConfiguration','Configurations','Tag','ZendeskField','Subjects','content','variableName','Variable','Descriptions','key','keyType','keyContent','nameField'];(function(_0x5e8d3e,_0x18ed2e){var _0x1348c0=function(_0x5a889f){while(--_0x5a889f){_0x5e8d3e['push'](_0x5e8d3e['shift']());}};_0x1348c0(++_0x18ed2e);}(_0xeae9,0xc7));var _0x9eae=function(_0x309ad8,_0x3365a0){_0x309ad8=_0x309ad8-0x0;var _0x3114d4=_0xeae9[_0x309ad8];return _0x3114d4;};'use strict';var client=require(_0x9eae('0x0'));exports['getZendeskAccounts']=function(){return function(_0x29fcab){return client[_0x9eae('0x1')]('GetZendeskAccount',{'options':{'raw':![],'attributes':['id',_0x9eae('0x2'),'username',_0x9eae('0x3'),_0x9eae('0x4'),'remoteUri',_0x9eae('0x5'),_0x9eae('0x6'),_0x9eae('0x7')],'include':[{'model':_0x9eae('0x8'),'as':_0x9eae('0x9'),'attributes':['id',_0x9eae('0x2')],'include':[{'model':_0x9eae('0xa'),'attributes':['id',_0x9eae('0x2')]},{'model':_0x9eae('0xb'),'as':_0x9eae('0xc'),'attributes':['id',_0x9eae('0x7'),_0x9eae('0xd'),_0x9eae('0xe')],'include':[{'model':'Variable','as':_0x9eae('0xf'),'attributes':['id','name']}]},{'model':_0x9eae('0xb'),'as':_0x9eae('0x10'),'attributes':['id',_0x9eae('0x7'),_0x9eae('0xd'),_0x9eae('0x11'),_0x9eae('0x12'),_0x9eae('0x13'),'variableName'],'include':[{'model':_0x9eae('0xf'),'as':_0x9eae('0xf'),'attributes':['id',_0x9eae('0x2')]}]},{'model':_0x9eae('0xb'),'as':'Fields','attributes':['id',_0x9eae('0x7'),_0x9eae('0xd'),'idField',_0x9eae('0x14'),_0x9eae('0x15'),_0x9eae('0xe')],'include':[{'model':'Variable','as':_0x9eae('0xf'),'attributes':['id',_0x9eae('0x2')]}]}]}]},'log':'GetZendeskAccount'});};};
\ No newline at end of file
index a0ba44b..0a7a9d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5687=['moduleSearch','ZohoField','Subjects','type','content','variableName','keyType','keyContent','Variable','Fields','idField','nameField','GetZohoAccount','getZohoAccounts','name','description','host','zone','clientSecret','serverUrl','code','refreshToken','ZohoConfiguration','moduleCreate'];(function(_0x2ed0ba,_0x457141){var _0x59f665=function(_0x1aa55a){while(--_0x1aa55a){_0x2ed0ba['push'](_0x2ed0ba['shift']());}};_0x59f665(++_0x457141);}(_0x5687,0x6d));var _0x7568=function(_0x37031b,_0x47df64){_0x37031b=_0x37031b-0x0;var _0x549130=_0x5687[_0x37031b];return _0x549130;};'use strict';var client=require('../../client');exports[_0x7568('0x0')]=function(){return function(_0x131ce3){return client['Request']('GetZohoAccount',{'options':{'raw':![],'attributes':['id',_0x7568('0x1'),_0x7568('0x2'),_0x7568('0x3'),_0x7568('0x4'),'clientId',_0x7568('0x5'),_0x7568('0x6'),_0x7568('0x7'),_0x7568('0x8')],'include':[{'model':_0x7568('0x9'),'as':'Configurations','attributes':['id','name',_0x7568('0xa'),_0x7568('0xb'),'description'],'include':[{'model':_0x7568('0xc'),'as':_0x7568('0xd'),'attributes':['id',_0x7568('0xe'),_0x7568('0xf'),_0x7568('0x10')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x7568('0x1')]}]},{'model':'ZohoField','as':'Descriptions','attributes':['id',_0x7568('0xe'),_0x7568('0xf'),'key',_0x7568('0x11'),_0x7568('0x12'),_0x7568('0x10')],'include':[{'model':_0x7568('0x13'),'as':_0x7568('0x13'),'attributes':['id',_0x7568('0x1')]}]},{'model':_0x7568('0xc'),'as':_0x7568('0x14'),'attributes':['id',_0x7568('0xe'),_0x7568('0xf'),_0x7568('0x15'),_0x7568('0x16'),'customField',_0x7568('0x10')],'include':[{'model':_0x7568('0x13'),'as':_0x7568('0x13'),'attributes':['id',_0x7568('0x1')]}]}]}]},'log':_0x7568('0x17')});};};
\ No newline at end of file
+var _0xda4e=['Descriptions','keyType','keyContent','Fields','idField','nameField','customField','../../client','getZohoAccounts','Request','GetZohoAccount','name','host','zone','clientId','clientSecret','serverUrl','refreshToken','ZohoConfiguration','Configurations','moduleCreate','description','ZohoField','Subjects','type','content','variableName','Variable'];(function(_0x57d7e9,_0x20da63){var _0x474a13=function(_0x35c850){while(--_0x35c850){_0x57d7e9['push'](_0x57d7e9['shift']());}};_0x474a13(++_0x20da63);}(_0xda4e,0x13b));var _0xeda4=function(_0x25a756,_0x23752b){_0x25a756=_0x25a756-0x0;var _0x440fae=_0xda4e[_0x25a756];return _0x440fae;};'use strict';var client=require(_0xeda4('0x0'));exports[_0xeda4('0x1')]=function(){return function(_0xdf4d1c){return client[_0xeda4('0x2')](_0xeda4('0x3'),{'options':{'raw':![],'attributes':['id',_0xeda4('0x4'),'description',_0xeda4('0x5'),_0xeda4('0x6'),_0xeda4('0x7'),_0xeda4('0x8'),_0xeda4('0x9'),'code',_0xeda4('0xa')],'include':[{'model':_0xeda4('0xb'),'as':_0xeda4('0xc'),'attributes':['id',_0xeda4('0x4'),_0xeda4('0xd'),'moduleSearch',_0xeda4('0xe')],'include':[{'model':_0xeda4('0xf'),'as':_0xeda4('0x10'),'attributes':['id',_0xeda4('0x11'),_0xeda4('0x12'),_0xeda4('0x13')],'include':[{'model':_0xeda4('0x14'),'as':_0xeda4('0x14'),'attributes':['id','name']}]},{'model':_0xeda4('0xf'),'as':_0xeda4('0x15'),'attributes':['id','type',_0xeda4('0x12'),'key',_0xeda4('0x16'),_0xeda4('0x17'),'variableName'],'include':[{'model':_0xeda4('0x14'),'as':'Variable','attributes':['id',_0xeda4('0x4')]}]},{'model':'ZohoField','as':_0xeda4('0x18'),'attributes':['id','type',_0xeda4('0x12'),_0xeda4('0x19'),_0xeda4('0x1a'),_0xeda4('0x1b'),_0xeda4('0x13')],'include':[{'model':_0xeda4('0x14'),'as':_0xeda4('0x14'),'attributes':['id',_0xeda4('0x4')]}]}]}]},'log':_0xeda4('0x3')});};};
\ No newline at end of file
index f221fb7..4abe2af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x705c=['starttime','endtime','diff','outbound','uniqueid','moment','lodash','util','voiceQueueReport','queuecallercompleteAt','queuecallerexitAt','Request','CreateMemberReport','voice','lastAssignedTo','isNil','interface','format','SIP/%s','queuecallerleaveAt','seconds','inbound','calleridnum','exten','agent','accountcode','toNumber','voiceDialReport','TALKING'];(function(_0x506002,_0x17ad62){var _0x5a020c=function(_0xf907bc){while(--_0xf907bc){_0x506002['push'](_0x506002['shift']());}};_0x5a020c(++_0x17ad62);}(_0x705c,0x96));var _0xc705=function(_0x45fabb,_0xb5d945){_0x45fabb=_0x45fabb-0x0;var _0x3776f1=_0x705c[_0x45fabb];return _0x3776f1;};'use strict';var moment=require(_0xc705('0x0'));var _=require(_0xc705('0x1'));var util=require(_0xc705('0x2'));var client=require('../client');exports[_0xc705('0x3')]=function(_0x2c5eef){var _0x34df9f=_0x2c5eef[_0xc705('0x4')]||_0x2c5eef[_0xc705('0x5')];return client[_0xc705('0x6')](_0xc705('0x7'),{'body':{'channel':_0xc705('0x8'),'membername':_0x2c5eef[_0xc705('0x9')],'interface':_[_0xc705('0xa')](_0x2c5eef[_0xc705('0xb')])?util[_0xc705('0xc')](_0xc705('0xd'),_0x2c5eef['lastAssignedTo']):_0x2c5eef[_0xc705('0xb')],'type':'TALKING','enterAt':_0x2c5eef[_0xc705('0xe')],'exitAt':_0x34df9f,'duration':moment(_0x34df9f)['diff'](_0x2c5eef[_0xc705('0xe')],_0xc705('0xf')),'data1':_0xc705('0x10'),'data2':_0x2c5eef[_0xc705('0x11')],'data3':_0x2c5eef[_0xc705('0x12')],'data4':null,'data5':_0x2c5eef['queue'],'role':_0xc705('0x13'),'internal':_0x2c5eef[_0xc705('0x14')]?_[_0xc705('0x15')](_0x2c5eef[_0xc705('0x14')]):undefined,'uniqueid':_0x2c5eef['uniqueid']},'log':_0xc705('0x7')});};exports[_0xc705('0x16')]=function(_0x30bcf8){return client[_0xc705('0x6')]('CreateMemberReport',{'body':{'channel':'voice','membername':_0x30bcf8['membername'],'interface':_0x30bcf8['interface'],'type':_0xc705('0x17'),'enterAt':_0x30bcf8[_0xc705('0x18')],'exitAt':_0x30bcf8[_0xc705('0x19')],'duration':moment(_0x30bcf8[_0xc705('0x19')])['diff'](_0x30bcf8[_0xc705('0x18')],_0xc705('0xf'))>=0x0?moment(_0x30bcf8['endtime'])[_0xc705('0x1a')](_0x30bcf8[_0xc705('0x18')],_0xc705('0xf')):null,'data1':_0xc705('0x1b'),'data2':_0x30bcf8['accountcode'],'data3':_0x30bcf8[_0xc705('0x12')],'data4':_0x30bcf8['dialstring']||null,'role':_0xc705('0x13'),'internal':_0x30bcf8[_0xc705('0x14')]?_['toNumber'](_0x30bcf8[_0xc705('0x14')]):undefined,'uniqueid':_0x30bcf8[_0xc705('0x1c')]},'log':_0xc705('0x7')});};
\ No newline at end of file
+var _0x2b75=['agent','accountcode','toNumber','uniqueid','voiceDialReport','membername','starttime','endtime','diff','outbound','moment','util','../client','voiceQueueReport','queuecallerexitAt','Request','CreateMemberReport','voice','lastAssignedTo','format','SIP/%s','interface','TALKING','queuecallerleaveAt','seconds','calleridnum','exten','queue'];(function(_0x411687,_0x42442a){var _0xc98979=function(_0x5c2729){while(--_0x5c2729){_0x411687['push'](_0x411687['shift']());}};_0xc98979(++_0x42442a);}(_0x2b75,0x122));var _0x52b7=function(_0x2742e4,_0x17c473){_0x2742e4=_0x2742e4-0x0;var _0x3dcf83=_0x2b75[_0x2742e4];return _0x3dcf83;};'use strict';var moment=require(_0x52b7('0x0'));var _=require('lodash');var util=require(_0x52b7('0x1'));var client=require(_0x52b7('0x2'));exports[_0x52b7('0x3')]=function(_0x47497c){var _0x529f68=_0x47497c['queuecallercompleteAt']||_0x47497c[_0x52b7('0x4')];return client[_0x52b7('0x5')](_0x52b7('0x6'),{'body':{'channel':_0x52b7('0x7'),'membername':_0x47497c[_0x52b7('0x8')],'interface':_['isNil'](_0x47497c['interface'])?util[_0x52b7('0x9')](_0x52b7('0xa'),_0x47497c['lastAssignedTo']):_0x47497c[_0x52b7('0xb')],'type':_0x52b7('0xc'),'enterAt':_0x47497c[_0x52b7('0xd')],'exitAt':_0x529f68,'duration':moment(_0x529f68)['diff'](_0x47497c[_0x52b7('0xd')],_0x52b7('0xe')),'data1':'inbound','data2':_0x47497c[_0x52b7('0xf')],'data3':_0x47497c[_0x52b7('0x10')],'data4':null,'data5':_0x47497c[_0x52b7('0x11')],'role':_0x52b7('0x12'),'internal':_0x47497c[_0x52b7('0x13')]?_[_0x52b7('0x14')](_0x47497c['accountcode']):undefined,'uniqueid':_0x47497c[_0x52b7('0x15')]},'log':_0x52b7('0x6')});};exports[_0x52b7('0x16')]=function(_0x50aa28){return client['Request'](_0x52b7('0x6'),{'body':{'channel':_0x52b7('0x7'),'membername':_0x50aa28[_0x52b7('0x17')],'interface':_0x50aa28[_0x52b7('0xb')],'type':'TALKING','enterAt':_0x50aa28[_0x52b7('0x18')],'exitAt':_0x50aa28[_0x52b7('0x19')],'duration':moment(_0x50aa28[_0x52b7('0x19')])[_0x52b7('0x1a')](_0x50aa28[_0x52b7('0x18')],_0x52b7('0xe'))>=0x0?moment(_0x50aa28[_0x52b7('0x19')])[_0x52b7('0x1a')](_0x50aa28[_0x52b7('0x18')],'seconds'):null,'data1':_0x52b7('0x1b'),'data2':_0x50aa28[_0x52b7('0x13')],'data3':_0x50aa28[_0x52b7('0x10')],'data4':_0x50aa28['dialstring']||null,'role':_0x52b7('0x12'),'internal':_0x50aa28[_0x52b7('0x13')]?_[_0x52b7('0x14')](_0x50aa28[_0x52b7('0x13')]):undefined,'uniqueid':_0x50aa28[_0x52b7('0x15')]},'log':'CreateMemberReport'});};
\ No newline at end of file
index 546851b..4fa77d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb077=['ShowSetting','GetSettings','../client'];(function(_0x7c0351,_0x4ae2ec){var _0x1f4d2f=function(_0x3c660b){while(--_0x3c660b){_0x7c0351['push'](_0x7c0351['shift']());}};_0x1f4d2f(++_0x4ae2ec);}(_0xb077,0x7a));var _0x7b07=function(_0x45be32,_0x1b1e3d){_0x45be32=_0x45be32-0x0;var _0xd73a59=_0xb077[_0x45be32];return _0xd73a59;};'use strict';var client=require(_0x7b07('0x0'));exports['getSettings']=function(){return client['Request'](_0x7b07('0x1'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['stopRecordingOnTransfer']},'log':_0x7b07('0x2')});};
\ No newline at end of file
+var _0x4dd2=['GetSettings','getSettings','Request','ShowSetting'];(function(_0x1f9f37,_0x18776e){var _0x21c080=function(_0x4acb93){while(--_0x4acb93){_0x1f9f37['push'](_0x1f9f37['shift']());}};_0x21c080(++_0x18776e);}(_0x4dd2,0xf1));var _0x24dd=function(_0x590da5,_0x298084){_0x590da5=_0x590da5-0x0;var _0x54d4c4=_0x4dd2[_0x590da5];return _0x54d4c4;};'use strict';var client=require('../client');exports[_0x24dd('0x0')]=function(){return client[_0x24dd('0x1')](_0x24dd('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['stopRecordingOnTransfer']},'log':_0x24dd('0x3')});};
\ No newline at end of file
index 8282510..758d1fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2c2=['getTemplates','Request','html'];(function(_0x45f951,_0x2750c8){var _0x24756c=function(_0x31c931){while(--_0x31c931){_0x45f951['push'](_0x45f951['shift']());}};_0x24756c(++_0x2750c8);}(_0xd2c2,0x1ce));var _0x2d2c=function(_0x375428,_0x540c99){_0x375428=_0x375428-0x0;var _0x358569=_0xd2c2[_0x375428];return _0x358569;};'use strict';var client=require('../client');exports[_0x2d2c('0x0')]=function(_0x6c213){return function(_0x4e9e6a){return client[_0x2d2c('0x1')]('GetTemplate',{'options':{'raw':!![],'attributes':['id','name',_0x2d2c('0x2')]},'log':'GetTemplate'});};};
\ No newline at end of file
+var _0xff69=['getTemplates','Request','GetTemplate','name','html','../client'];(function(_0x55f493,_0x45b237){var _0x4f6a92=function(_0x2d2552){while(--_0x2d2552){_0x55f493['push'](_0x55f493['shift']());}};_0x4f6a92(++_0x45b237);}(_0xff69,0x119));var _0x9ff6=function(_0x432fca,_0xb0b1b5){_0x432fca=_0x432fca-0x0;var _0x3adba4=_0xff69[_0x432fca];return _0x3adba4;};'use strict';var client=require(_0x9ff6('0x0'));exports[_0x9ff6('0x1')]=function(_0x4c56fe){return function(_0x7fc1b4){return client[_0x9ff6('0x2')](_0x9ff6('0x3'),{'options':{'raw':!![],'attributes':['id',_0x9ff6('0x4'),_0x9ff6('0x5')]},'log':'GetTemplate'});};};
\ No newline at end of file
index 9d2d816..14effda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1ac=['value','AnyConditions','operator','Action','Actions','action','data2','data3','data5','data6','data7','Request','GetTrigger','name','channel','Condition','AllConditions','field'];(function(_0xe600a,_0x4ff849){var _0x26bc9c=function(_0x26a751){while(--_0x26a751){_0xe600a['push'](_0xe600a['shift']());}};_0x26bc9c(++_0x4ff849);}(_0xe1ac,0x1df));var _0xce1a=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xe1ac[_0x19e35c];return _0x3e1fe8;};'use strict';var client=require('../client');exports['getTriggers']=function(_0x1709f8){return function(_0x1e9250){return client[_0xce1a('0x0')](_0xce1a('0x1'),{'options':{'raw':![],'attributes':['id',_0xce1a('0x2'),_0xce1a('0x3'),'status'],'include':[{'model':_0xce1a('0x4'),'as':_0xce1a('0x5'),'attributes':['id',_0xce1a('0x6'),'operator',_0xce1a('0x7')]},{'model':_0xce1a('0x4'),'as':_0xce1a('0x8'),'attributes':['id',_0xce1a('0x6'),_0xce1a('0x9'),'value']},{'model':_0xce1a('0xa'),'as':_0xce1a('0xb'),'attributes':['id',_0xce1a('0xc'),'data1',_0xce1a('0xd'),_0xce1a('0xe'),'data4',_0xce1a('0xf'),_0xce1a('0x10'),_0xce1a('0x11')]}]},'log':_0xce1a('0x1')});};};
\ No newline at end of file
+var _0xdf21=['operator','value','AnyConditions','Action','action','data3','data6','data7','../client','getTriggers','GetTrigger','name','channel','status','Condition','AllConditions','field'];(function(_0x121450,_0x106bfa){var _0x4d480a=function(_0x53e807){while(--_0x53e807){_0x121450['push'](_0x121450['shift']());}};_0x4d480a(++_0x106bfa);}(_0xdf21,0xe5));var _0x1df2=function(_0x5eff5c,_0x63e6c1){_0x5eff5c=_0x5eff5c-0x0;var _0x4c7c80=_0xdf21[_0x5eff5c];return _0x4c7c80;};'use strict';var client=require(_0x1df2('0x0'));exports[_0x1df2('0x1')]=function(_0x72500){return function(_0x207e2d){return client['Request'](_0x1df2('0x2'),{'options':{'raw':![],'attributes':['id',_0x1df2('0x3'),_0x1df2('0x4'),_0x1df2('0x5')],'include':[{'model':_0x1df2('0x6'),'as':_0x1df2('0x7'),'attributes':['id',_0x1df2('0x8'),_0x1df2('0x9'),_0x1df2('0xa')]},{'model':'Condition','as':_0x1df2('0xb'),'attributes':['id',_0x1df2('0x8'),'operator','value']},{'model':_0x1df2('0xc'),'as':'Actions','attributes':['id',_0x1df2('0xd'),'data1','data2',_0x1df2('0xe'),'data4','data5',_0x1df2('0xf'),_0x1df2('0x10')]}]},'log':_0x1df2('0x2')});};};
\ No newline at end of file
index b1ec4ab..fdf0b47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24ca=['../client','Request','name','registry','defaultuser','GetTrunk'];(function(_0x40b74c,_0x2f1fc1){var _0x5e0420=function(_0x1f0b21){while(--_0x1f0b21){_0x40b74c['push'](_0x40b74c['shift']());}};_0x5e0420(++_0x2f1fc1);}(_0x24ca,0x1bc));var _0xa24c=function(_0x202d24,_0x5e8641){_0x202d24=_0x202d24-0x0;var _0x2b3a8e=_0x24ca[_0x202d24];return _0x2b3a8e;};'use strict';var client=require(_0xa24c('0x0'));exports['getTrunks']=function(_0x2cf7df){return function(_0x4ebab4){return client[_0xa24c('0x1')]('GetTrunk',{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0xa24c('0x2'),_0xa24c('0x3'),_0xa24c('0x4')]},'log':_0xa24c('0x5')});};};
\ No newline at end of file
+var _0xd420=['getTrunks','Request','GetTrunk','registry','defaultuser','../client'];(function(_0x239dba,_0x309e95){var _0x1ceb11=function(_0x14efe6){while(--_0x14efe6){_0x239dba['push'](_0x239dba['shift']());}};_0x1ceb11(++_0x309e95);}(_0xd420,0x1d9));var _0x0d42=function(_0x5d29b4,_0x5a46b9){_0x5d29b4=_0x5d29b4-0x0;var _0x5a293a=_0xd420[_0x5d29b4];return _0x5a293a;};'use strict';var client=require(_0x0d42('0x0'));exports[_0x0d42('0x1')]=function(_0x49674e){return function(_0x49e2bf){return client[_0x0d42('0x2')](_0x0d42('0x3'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id','name',_0x0d42('0x4'),_0x0d42('0x5')]},'log':_0x0d42('0x3')});};};
\ No newline at end of file
index 99ffe3d..ed00de1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['../client','getAgents','Request','GetUser','name','email','accountcode','fullname','online','lastLoginAt','pauseType','voicePause','mobile','interface','getTelephones','telephone','internal','savePause','PauseUser','saveUnpause','UnpauseUser','getAgent','ShowUser','agent','lastPauseAt'];(function(_0x5592c7,_0x3ab141){var _0x420128=function(_0x1e2ca8){while(--_0x1e2ca8){_0x5592c7['push'](_0x5592c7['shift']());}};_0x420128(++_0x3ab141);}(_0x34e8,0x12c));var _0x834e=function(_0x1b5875,_0x35feb8){_0x1b5875=_0x1b5875-0x0;var _0x104722=_0x34e8[_0x1b5875];return _0x104722;};'use strict';var client=require(_0x834e('0x0'));exports[_0x834e('0x1')]=function(){return function(){return client[_0x834e('0x2')](_0x834e('0x3'),{'options':{'raw':![],'where':{'role':'agent'},'attributes':['id',_0x834e('0x4'),_0x834e('0x5'),_0x834e('0x6'),_0x834e('0x7'),_0x834e('0x8'),_0x834e('0x9'),_0x834e('0xa'),'lastPauseAt',_0x834e('0xb'),'phone',_0x834e('0xc'),_0x834e('0xd')]},'log':_0x834e('0x1')});};};exports[_0x834e('0xe')]=function(){return function(){return client[_0x834e('0x2')](_0x834e('0x3'),{'options':{'raw':!![],'where':{'role':_0x834e('0xf')},'attributes':['id',_0x834e('0x4'),_0x834e('0x6'),_0x834e('0x10')]},'log':_0x834e('0xe')});};};exports[_0x834e('0x11')]=function(_0x14038b,_0x2e1a37,_0x293514){return client[_0x834e('0x2')](_0x834e('0x12'),{'body':{'type':_0x2e1a37,'uniqueid':_0x293514},'options':{'where':{'id':_0x14038b['id']}},'log':'savePause'});};exports[_0x834e('0x13')]=function(_0x6cd9b9){return client['Request'](_0x834e('0x14'),{'body':{},'options':{'where':{'id':_0x6cd9b9['id']}},'log':_0x834e('0x11')});};exports[_0x834e('0x15')]=function(_0x21cc0a){return client['Request'](_0x834e('0x16'),{'options':{'raw':![],'where':{'role':_0x834e('0x17'),'id':_0x21cc0a},'attributes':['id','name',_0x834e('0x5'),'accountcode',_0x834e('0x7'),_0x834e('0x8'),'lastLoginAt',_0x834e('0xa'),_0x834e('0x18'),_0x834e('0xb'),'interface']},'log':_0x834e('0x15')});};
\ No newline at end of file
+var _0xedd9=['mobile','getTelephones','internal','PauseUser','savePause','saveUnpause','UnpauseUser','ShowUser','interface','getAgent','getAgents','Request','GetUser','agent','name','email','accountcode','fullname','lastLoginAt','pauseType','lastPauseAt','voicePause'];(function(_0x5d0e5a,_0x20f2fb){var _0x55a318=function(_0x576923){while(--_0x576923){_0x5d0e5a['push'](_0x5d0e5a['shift']());}};_0x55a318(++_0x20f2fb);}(_0xedd9,0xfc));var _0x9edd=function(_0x38f035,_0x262035){_0x38f035=_0x38f035-0x0;var _0x3cd4be=_0xedd9[_0x38f035];return _0x3cd4be;};'use strict';var client=require('../client');exports[_0x9edd('0x0')]=function(){return function(){return client[_0x9edd('0x1')](_0x9edd('0x2'),{'options':{'raw':![],'where':{'role':_0x9edd('0x3')},'attributes':['id',_0x9edd('0x4'),_0x9edd('0x5'),_0x9edd('0x6'),_0x9edd('0x7'),'online',_0x9edd('0x8'),_0x9edd('0x9'),_0x9edd('0xa'),_0x9edd('0xb'),'phone',_0x9edd('0xc'),'interface']},'log':_0x9edd('0x0')});};};exports[_0x9edd('0xd')]=function(){return function(){return client[_0x9edd('0x1')](_0x9edd('0x2'),{'options':{'raw':!![],'where':{'role':'telephone'},'attributes':['id',_0x9edd('0x4'),'accountcode',_0x9edd('0xe')]},'log':_0x9edd('0xd')});};};exports['savePause']=function(_0xbf9da6,_0x13dc4f,_0x5b6c00){return client[_0x9edd('0x1')](_0x9edd('0xf'),{'body':{'type':_0x13dc4f,'uniqueid':_0x5b6c00},'options':{'where':{'id':_0xbf9da6['id']}},'log':_0x9edd('0x10')});};exports[_0x9edd('0x11')]=function(_0x287ddd){return client[_0x9edd('0x1')](_0x9edd('0x12'),{'body':{},'options':{'where':{'id':_0x287ddd['id']}},'log':_0x9edd('0x10')});};exports['getAgent']=function(_0x176bfa){return client[_0x9edd('0x1')](_0x9edd('0x13'),{'options':{'raw':![],'where':{'role':_0x9edd('0x3'),'id':_0x176bfa},'attributes':['id',_0x9edd('0x4'),_0x9edd('0x5'),_0x9edd('0x6'),_0x9edd('0x7'),'online',_0x9edd('0x8'),_0x9edd('0x9'),_0x9edd('0xa'),'voicePause',_0x9edd('0x14')]},'log':_0x9edd('0x15')});};
\ No newline at end of file
index 26887e0..e85688f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c07=['Request','CreateVoiceAgentReport','update'];(function(_0x1c9140,_0x215c11){var _0x21d8f9=function(_0x193c9f){while(--_0x193c9f){_0x1c9140['push'](_0x1c9140['shift']());}};_0x21d8f9(++_0x215c11);}(_0x0c07,0x171));var _0x70c0=function(_0xf8baeb,_0x4c83e8){_0xf8baeb=_0xf8baeb-0x0;var _0x5997a4=_0x0c07[_0xf8baeb];return _0x5997a4;};'use strict';var client=require('../client');exports['create']=function(_0x395dd6){return client[_0x70c0('0x0')]('CreateVoiceAgentReport',{'body':_0x395dd6,'log':_0x70c0('0x1')});};exports[_0x70c0('0x2')]=function(_0x34e137,_0x4d232c,_0x85756e){return client[_0x70c0('0x0')]('UpdateVoiceAgentReport',{'body':_0x34e137,'options':{'where':{'uniqueid':_0x4d232c,'interface':_0x85756e,'agentcomplete':!![]}},'log':'UpdateVoiceAgentReport'});};
\ No newline at end of file
+var _0xe758=['UpdateVoiceAgentReport','create','CreateVoiceAgentReport','update'];(function(_0x1ce0a7,_0x497e53){var _0x3a753e=function(_0x141643){while(--_0x141643){_0x1ce0a7['push'](_0x1ce0a7['shift']());}};_0x3a753e(++_0x497e53);}(_0xe758,0x65));var _0x8e75=function(_0x59ebd0,_0x2ce7db){_0x59ebd0=_0x59ebd0-0x0;var _0xbbaa50=_0xe758[_0x59ebd0];return _0xbbaa50;};'use strict';var client=require('../client');exports[_0x8e75('0x0')]=function(_0x302c15){return client['Request']('CreateVoiceAgentReport',{'body':_0x302c15,'log':_0x8e75('0x1')});};exports[_0x8e75('0x2')]=function(_0x134387,_0x24b61b,_0x46a16c){return client['Request'](_0x8e75('0x3'),{'body':_0x134387,'options':{'where':{'uniqueid':_0x24b61b,'interface':_0x46a16c,'agentcomplete':!![]}},'log':_0x8e75('0x3')});};
\ No newline at end of file
index 3b6ee3e..6227a37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9682=['endOf','type','disposition','duration','GetVoiceCallReports','moment','lodash','../client','create','Request','CreateVoiceCallReport','calleridnum','context','DOCUMENTATION','outbound','startOf','day','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x1bf055,_0x381586){var _0xd70b6d=function(_0x462a53){while(--_0x462a53){_0x1bf055['push'](_0x1bf055['shift']());}};_0xd70b6d(++_0x381586);}(_0x9682,0x122));var _0x2968=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x9682[_0x397e5f];return _0x5302b8;};'use strict';var moment=require(_0x2968('0x0'));var util=require('util');var _=require(_0x2968('0x1'));var client=require(_0x2968('0x2'));exports[_0x2968('0x3')]=function(_0x25b086){return client[_0x2968('0x4')](_0x2968('0x5'),{'body':_['merge'](_0x25b086,{'source':_0x25b086[_0x2968('0x6')],'destinationcontext':_0x25b086[_0x2968('0x7')],'callerid':_0x25b086['callerid'],'amaflags':_0x2968('0x8')}),'log':_0x2968('0x5')});};exports['getVoiceCallReports']=function(){return function(){return client[_0x2968('0x4')]('GetVoiceCallReport',{'options':{'where':{'type':[_0x2968('0x9')],'createdAt':{'$between':[moment()[_0x2968('0xa')](_0x2968('0xb'))[_0x2968('0xc')](_0x2968('0xd')),moment()[_0x2968('0xe')](_0x2968('0xb'))[_0x2968('0xc')]('YYYY-MM-DD\x20HH:mm:ss')]}},'attributes':[_0x2968('0xf'),_0x2968('0x10'),_0x2968('0x11'),'billableseconds']},'log':_0x2968('0x12')});};};
\ No newline at end of file
+var _0xa753=['billableseconds','moment','lodash','../client','create','Request','CreateVoiceCallReport','merge','calleridnum','context','callerid','DOCUMENTATION','getVoiceCallReports','GetVoiceCallReport','outbound','startOf','day','format','YYYY-MM-DD\x20HH:mm:ss','endOf','disposition','duration'];(function(_0x140d26,_0x1a5ad2){var _0x36c952=function(_0x428044){while(--_0x428044){_0x140d26['push'](_0x140d26['shift']());}};_0x36c952(++_0x1a5ad2);}(_0xa753,0x161));var _0x3a75=function(_0x315ba7,_0x1b6006){_0x315ba7=_0x315ba7-0x0;var _0x4d253b=_0xa753[_0x315ba7];return _0x4d253b;};'use strict';var moment=require(_0x3a75('0x0'));var util=require('util');var _=require(_0x3a75('0x1'));var client=require(_0x3a75('0x2'));exports[_0x3a75('0x3')]=function(_0x301f88){return client[_0x3a75('0x4')](_0x3a75('0x5'),{'body':_[_0x3a75('0x6')](_0x301f88,{'source':_0x301f88[_0x3a75('0x7')],'destinationcontext':_0x301f88[_0x3a75('0x8')],'callerid':_0x301f88[_0x3a75('0x9')],'amaflags':_0x3a75('0xa')}),'log':_0x3a75('0x5')});};exports[_0x3a75('0xb')]=function(){return function(){return client['Request'](_0x3a75('0xc'),{'options':{'where':{'type':[_0x3a75('0xd')],'createdAt':{'$between':[moment()[_0x3a75('0xe')](_0x3a75('0xf'))[_0x3a75('0x10')](_0x3a75('0x11')),moment()[_0x3a75('0x12')]('day')['format'](_0x3a75('0x11'))]}},'attributes':['type',_0x3a75('0x13'),_0x3a75('0x14'),_0x3a75('0x15')]},'log':'GetVoiceCallReports'});};};
\ No newline at end of file
index 1dc3093..7e044b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4791=['CreateVoiceDialReport','../client','create','Request'];(function(_0x5243d6,_0x365800){var _0x3cd8dd=function(_0x1cb9c9){while(--_0x1cb9c9){_0x5243d6['push'](_0x5243d6['shift']());}};_0x3cd8dd(++_0x365800);}(_0x4791,0x155));var _0x1479=function(_0x1c470d,_0x81d66b){_0x1c470d=_0x1c470d-0x0;var _0x12141b=_0x4791[_0x1c470d];return _0x12141b;};'use strict';var client=require(_0x1479('0x0'));exports[_0x1479('0x1')]=function(_0x39c14a){return client[_0x1479('0x2')](_0x1479('0x3'),{'body':_0x39c14a,'log':_0x1479('0x3')});};
\ No newline at end of file
+var _0xb2ed=['create','Request','CreateVoiceDialReport','../client'];(function(_0xe3a16b,_0x9da32a){var _0xf208b9=function(_0x5ac8a0){while(--_0x5ac8a0){_0xe3a16b['push'](_0xe3a16b['shift']());}};_0xf208b9(++_0x9da32a);}(_0xb2ed,0x1c7));var _0xdb2e=function(_0x344adc,_0x183c37){_0x344adc=_0x344adc-0x0;var _0x4014b2=_0xb2ed[_0x344adc];return _0x4014b2;};'use strict';var client=require(_0xdb2e('0x0'));exports[_0xdb2e('0x1')]=function(_0x1451cb){return client[_0xdb2e('0x2')]('CreateVoiceDialReport',{'body':_0x1451cb,'log':_0xdb2e('0x3')});};
\ No newline at end of file
index 40f3c08..5bc9c44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3276=['GetVoiceExtension','exten','recordingFormat','getVoiceExtensions','../client'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0x3276,0xc7));var _0x6327=function(_0x5bd255,_0xcd13ad){_0x5bd255=_0x5bd255-0x0;var _0x5332d2=_0x3276[_0x5bd255];return _0x5332d2;};'use strict';var client=require(_0x6327('0x0'));exports['getVoiceExtensions']=function(){return function(){return client['Request'](_0x6327('0x1'),{'options':{'raw':!![],'attributes':['id',_0x6327('0x2'),_0x6327('0x3')],'where':{'VoiceExtensionId':null}},'log':_0x6327('0x4')});};};
\ No newline at end of file
+var _0x6b24=['GetVoiceExtension','exten','getVoiceExtensions','Request'];(function(_0x1e7bd5,_0x4fc7ee){var _0x2573a4=function(_0x43bbec){while(--_0x43bbec){_0x1e7bd5['push'](_0x1e7bd5['shift']());}};_0x2573a4(++_0x4fc7ee);}(_0x6b24,0x1ce));var _0x46b2=function(_0x13d46e,_0xb71980){_0x13d46e=_0x13d46e-0x0;var _0x30e59b=_0x6b24[_0x13d46e];return _0x30e59b;};'use strict';var client=require('../client');exports[_0x46b2('0x0')]=function(){return function(){return client[_0x46b2('0x1')](_0x46b2('0x2'),{'options':{'raw':!![],'attributes':['id',_0x46b2('0x3'),'recordingFormat'],'where':{'VoiceExtensionId':null}},'log':'getVoiceExtensions'});};};
\ No newline at end of file
index f3c7ae6..3afb445 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3126=['dialNoSuchNumberRetryFrequency','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMinThreshold','Trunk','callerid','active','Pause','mandatoryDispositionPause','TrunkBackup','Interval','Intervals','../client','Request','GetVoiceQueue','name','acw','autopause','monitor_format','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveInterval','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialTimezone','dialGlobalInterval','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialRecallInQueue','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','dialQueueProject2','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberMaxRetry'];(function(_0x37bd26,_0x5ad346){var _0xe83dc4=function(_0x1ac229){while(--_0x1ac229){_0x37bd26['push'](_0x37bd26['shift']());}};_0xe83dc4(++_0x5ad346);}(_0x3126,0x1c3));var _0x6312=function(_0x718143,_0x5c668e){_0x718143=_0x718143-0x0;var _0x498601=_0x3126[_0x718143];return _0x498601;};'use strict';var client=require(_0x6312('0x0'));exports['getVoiceQueues']=function(){return function(){return client[_0x6312('0x1')](_0x6312('0x2'),{'options':{'raw':![],'attributes':['id',_0x6312('0x3'),_0x6312('0x4'),'acwTimeout',_0x6312('0x5'),_0x6312('0x6'),'type',_0x6312('0x7'),_0x6312('0x8'),_0x6312('0x9'),_0x6312('0xa'),_0x6312('0xb'),_0x6312('0xc'),'dialPredictiveOptimizationPercentage',_0x6312('0xd'),'dialOriginateCallerIdName',_0x6312('0xe'),_0x6312('0xf'),_0x6312('0x10'),_0x6312('0x11'),_0x6312('0x12'),_0x6312('0x13'),_0x6312('0x14'),_0x6312('0x15'),'dialBusyRetryFrequency',_0x6312('0x16'),_0x6312('0x17'),_0x6312('0x18'),_0x6312('0x19'),_0x6312('0x1a'),'dialPrefix','dialCheckDuplicateType',_0x6312('0x1b'),_0x6312('0x1c'),_0x6312('0x1d'),'dialAMDAfterGreetingSilence',_0x6312('0x1e'),_0x6312('0x1f'),_0x6312('0x20'),_0x6312('0x21'),_0x6312('0x22'),_0x6312('0x23'),'timeout','dialRecallMeTimeout',_0x6312('0x24'),_0x6312('0x25'),_0x6312('0x26'),_0x6312('0x27'),_0x6312('0x28'),_0x6312('0x6'),_0x6312('0x29'),_0x6312('0x2a'),_0x6312('0x2b'),_0x6312('0x2c'),_0x6312('0x2d'),'dialDropMaxRetry',_0x6312('0x2e'),_0x6312('0x2f'),_0x6312('0x30'),_0x6312('0x31'),_0x6312('0x32'),'dialAgentRejectMaxRetry',_0x6312('0x33'),_0x6312('0x34'),'dialPredictiveIntervalMaxThreshold',_0x6312('0x35')],'include':[{'model':_0x6312('0x36'),'as':_0x6312('0x36'),'attributes':['id',_0x6312('0x3'),_0x6312('0x37'),_0x6312('0x38')]},{'model':_0x6312('0x39'),'as':_0x6312('0x3a'),'attributes':['id',_0x6312('0x3')]},{'model':_0x6312('0x36'),'as':_0x6312('0x3b'),'attributes':['id',_0x6312('0x3'),'callerid',_0x6312('0x38')]},{'model':_0x6312('0x3c'),'as':'Interval','attributes':['id',_0x6312('0x3')],'include':[{'model':'Interval','as':_0x6312('0x3d'),'attributes':['id',_0x6312('0x3'),'interval']}]}]},'log':'getVoiceQueues'});};};
\ No newline at end of file
+var _0x79ff=['dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialPrefix','dialCheckDuplicateType','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','timeout','dialRecallMeTimeout','dialRecallInQueue','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','dialQueueProject2','monitor_format','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','Trunk','callerid','active','Pause','mandatoryDispositionPause','TrunkBackup','Interval','Intervals','../client','getVoiceQueues','Request','GetVoiceQueue','name','acw','acwTimeout','type','dialActive'];(function(_0x3ba367,_0x2ed555){var _0x3d7f4b=function(_0x18d6ae){while(--_0x18d6ae){_0x3ba367['push'](_0x3ba367['shift']());}};_0x3d7f4b(++_0x2ed555);}(_0x79ff,0x1df));var _0xf79f=function(_0x3a1b90,_0x3c0158){_0x3a1b90=_0x3a1b90-0x0;var _0xf6de77=_0x79ff[_0x3a1b90];return _0xf6de77;};'use strict';var client=require(_0xf79f('0x0'));exports[_0xf79f('0x1')]=function(){return function(){return client[_0xf79f('0x2')](_0xf79f('0x3'),{'options':{'raw':![],'attributes':['id',_0xf79f('0x4'),_0xf79f('0x5'),_0xf79f('0x6'),'autopause','monitor_format',_0xf79f('0x7'),_0xf79f('0x8'),_0xf79f('0x9'),_0xf79f('0xa'),_0xf79f('0xb'),_0xf79f('0xc'),_0xf79f('0xd'),_0xf79f('0xe'),'dialPredictiveInterval',_0xf79f('0xf'),_0xf79f('0x10'),_0xf79f('0x11'),_0xf79f('0x12'),_0xf79f('0x13'),'dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency',_0xf79f('0x14'),_0xf79f('0x15'),_0xf79f('0x16'),_0xf79f('0x17'),'dialGlobalMaxRetry','dialTimezone','dialGlobalInterval',_0xf79f('0x18'),_0xf79f('0x19'),'dialAMDActive','dialAMDInitialSilence',_0xf79f('0x1a'),_0xf79f('0x1b'),_0xf79f('0x1c'),_0xf79f('0x1d'),_0xf79f('0x1e'),_0xf79f('0x1f'),'dialAMDSilenceThreshold','dialAMDMaximumWordLength',_0xf79f('0x20'),_0xf79f('0x21'),_0xf79f('0x22'),'dialOrderByScheduledAt',_0xf79f('0x23'),_0xf79f('0x24'),_0xf79f('0x25'),_0xf79f('0x26'),_0xf79f('0x27'),_0xf79f('0x28'),_0xf79f('0x29'),'dialNoSuchNumberMaxRetry',_0xf79f('0x2a'),_0xf79f('0x2b'),_0xf79f('0x2c'),_0xf79f('0x2d'),'dialAbandonedRetryFrequency',_0xf79f('0x2e'),_0xf79f('0x2f'),_0xf79f('0x30'),_0xf79f('0x31'),_0xf79f('0x32'),_0xf79f('0x33'),_0xf79f('0x34')],'include':[{'model':'Trunk','as':_0xf79f('0x35'),'attributes':['id',_0xf79f('0x4'),_0xf79f('0x36'),_0xf79f('0x37')]},{'model':_0xf79f('0x38'),'as':_0xf79f('0x39'),'attributes':['id',_0xf79f('0x4')]},{'model':_0xf79f('0x35'),'as':_0xf79f('0x3a'),'attributes':['id',_0xf79f('0x4'),_0xf79f('0x36'),'active']},{'model':_0xf79f('0x3b'),'as':_0xf79f('0x3b'),'attributes':['id',_0xf79f('0x4')],'include':[{'model':_0xf79f('0x3b'),'as':_0xf79f('0x3c'),'attributes':['id',_0xf79f('0x4'),'interval']}]}]},'log':_0xf79f('0x1')});};};
\ No newline at end of file
index 70f39c2..52e057d 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(_0x2ff980,_0xf5e589){var _0x3e4a63=function(_0xd40f69){while(--_0xd40f69){_0x2ff980['push'](_0x2ff980['shift']());}};_0x3e4a63(++_0xf5e589);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b78e8,_0x55096b){_0x5b78e8=_0x5b78e8-0x0;var _0xf2c321=_0xa9e0[_0x5b78e8];return _0xf2c321;};'use strict';var moment=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var client=require(_0x0a9e('0x2'));exports['create']=function(_0x550fbc){return client[_0x0a9e('0x3')]('CreateVoiceQueueReport',{'body':_0x550fbc,'log':_0x0a9e('0x4')});};exports[_0x0a9e('0x5')]=function(){return function(){return client[_0x0a9e('0x3')](_0x0a9e('0x6'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x0a9e('0x7')]('day')[_0x0a9e('0x8')](_0x0a9e('0x9')),moment()[_0x0a9e('0xa')]('day')['format'](_0x0a9e('0x9'))]}},'attributes':['uniqueid','queue',_0x0a9e('0xb'),_0x0a9e('0xc'),_0x0a9e('0xd'),_0x0a9e('0xe'),_0x0a9e('0xf'),_0x0a9e('0x10'),'queuecallerabandon','queuecallerabandonAt']},'log':'GetVoiceQueueReports'});};};
\ No newline at end of file
+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(_0x44623d,_0x38a498){var _0xefe681=function(_0x67f68b){while(--_0x67f68b){_0x44623d['push'](_0x44623d['shift']());}};_0xefe681(++_0x38a498);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b78e8,_0x55096b){_0x5b78e8=_0x5b78e8-0x0;var _0xf2c321=_0xa9e0[_0x5b78e8];return _0xf2c321;};'use strict';var moment=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var client=require(_0x0a9e('0x2'));exports['create']=function(_0x550fbc){return client[_0x0a9e('0x3')]('CreateVoiceQueueReport',{'body':_0x550fbc,'log':_0x0a9e('0x4')});};exports[_0x0a9e('0x5')]=function(){return function(){return client[_0x0a9e('0x3')](_0x0a9e('0x6'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x0a9e('0x7')]('day')[_0x0a9e('0x8')](_0x0a9e('0x9')),moment()[_0x0a9e('0xa')]('day')['format'](_0x0a9e('0x9'))]}},'attributes':['uniqueid','queue',_0x0a9e('0xb'),_0x0a9e('0xc'),_0x0a9e('0xd'),_0x0a9e('0xe'),_0x0a9e('0xf'),_0x0a9e('0x10'),'queuecallerabandon','queuecallerabandonAt']},'log':'GetVoiceQueueReports'});};};
\ No newline at end of file
index 9af3b9d..c255c80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a9c=['GetVoiceQueueRtPauses','../client','getVoiceQueueRtPauses','Request'];(function(_0x54b6d5,_0x1f21ed){var _0x34e56d=function(_0x26a1c0){while(--_0x26a1c0){_0x54b6d5['push'](_0x54b6d5['shift']());}};_0x34e56d(++_0x1f21ed);}(_0x2a9c,0xdd));var _0xc2a9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2a9c[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xc2a9('0x0'));exports[_0xc2a9('0x1')]=function(_0x4016e7){return function(){return client[_0xc2a9('0x2')](_0xc2a9('0x3'),{'options':{'where':{'VoiceQueueId':_0x4016e7,'paused':!![]},'raw':!![]},'log':_0xc2a9('0x1')});};};
\ No newline at end of file
+var _0x7ab5=['getVoiceQueueRtPauses','Request','GetVoiceQueueRtPauses','../client'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x7ab5,0xb7));var _0x57ab=function(_0x526f6d,_0x755026){_0x526f6d=_0x526f6d-0x0;var _0x10224d=_0x7ab5[_0x526f6d];return _0x10224d;};'use strict';var client=require(_0x57ab('0x0'));exports[_0x57ab('0x1')]=function(_0x343f37){return function(){return client[_0x57ab('0x2')](_0x57ab('0x3'),{'options':{'where':{'VoiceQueueId':_0x343f37,'paused':!![]},'raw':!![]},'log':'getVoiceQueueRtPauses'});};};
\ No newline at end of file
index 0bb846d..7163b03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x5f1696,_0x51ff8e){var _0x50894b=function(_0x1b8238){while(--_0x1b8238){_0x5f1696['push'](_0x5f1696['shift']());}};_0x50894b(++_0x51ff8e);}(_0x7a54,0x106));var _0x47a5=function(_0x380299,_0x438874){_0x380299=_0x380299-0x0;var _0x1ff983=_0x7a54[_0x380299];return _0x1ff983;};'use strict';var _=require(_0x47a5('0x0'));var client=require(_0x47a5('0x1'));exports[_0x47a5('0x2')]=function(_0x58157c){return client[_0x47a5('0x3')](_0x47a5('0x4'),{'body':_['merge'](_0x58157c,{'value':_0x58157c[_0x47a5('0x5')]}),'log':_0x47a5('0x4')});};
\ No newline at end of file
+var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x331540,_0x22a981){var _0x2ae9aa=function(_0x2d3664){while(--_0x2d3664){_0x331540['push'](_0x331540['shift']());}};_0x2ae9aa(++_0x22a981);}(_0x7a54,0x106));var _0x47a5=function(_0x39bbb2,_0xe27c5e){_0x39bbb2=_0x39bbb2-0x0;var _0x5da762=_0x7a54[_0x39bbb2];return _0x5da762;};'use strict';var _=require(_0x47a5('0x0'));var client=require(_0x47a5('0x1'));exports[_0x47a5('0x2')]=function(_0x58157c){return client[_0x47a5('0x3')](_0x47a5('0x4'),{'body':_['merge'](_0x58157c,{'value':_0x58157c[_0x47a5('0x5')]}),'log':_0x47a5('0x4')});};
\ No newline at end of file
index 7e47c27..aaa22c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef18=['secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetcontext','transfertargetlinkedid','origtransferercontext','origtransfererexten','attended','../client','transfers','blindTransfer','Request','CreateVoiceTransferReport','result','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transfereraccountcode','transferercontext','transfererlinkedid','transfereechannel','transfereecalleridnum','transfereecalleridname','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeaccountcode','transfereeexten','isexternal','blind','attendedTransfer','origtransfererchannel','origtransferercalleridnum','secondtransfererconnectedlinenum'];(function(_0x3abf9a,_0x417e69){var _0x258ac7=function(_0x133f65){while(--_0x133f65){_0x3abf9a['push'](_0x3abf9a['shift']());}};_0x258ac7(++_0x417e69);}(_0xef18,0xe1));var _0x8ef1=function(_0x580647,_0x43d2c3){_0x580647=_0x580647-0x0;var _0x5f0792=_0xef18[_0x580647];return _0x5f0792;};'use strict';var client=require(_0x8ef1('0x0'));exports[_0x8ef1('0x1')]={};exports[_0x8ef1('0x2')]=function(_0x2f4a59){return client[_0x8ef1('0x3')](_0x8ef1('0x4'),{'body':{'result':_0x2f4a59[_0x8ef1('0x5')],'transfererchannel':_0x2f4a59[_0x8ef1('0x6')],'transferercalleridnum':_0x2f4a59[_0x8ef1('0x7')],'transferercalleridname':_0x2f4a59[_0x8ef1('0x8')],'transfererconnectedlinenum':_0x2f4a59[_0x8ef1('0x9')],'transfererconnectedlinename':_0x2f4a59[_0x8ef1('0xa')],'transfereraccountcode':_0x2f4a59[_0x8ef1('0xb')],'transferercontext':_0x2f4a59[_0x8ef1('0xc')],'transfererexten':_0x2f4a59['transfererexten'],'transfererlinkedid':_0x2f4a59[_0x8ef1('0xd')],'transfereechannel':_0x2f4a59[_0x8ef1('0xe')],'transfereecalleridnum':_0x2f4a59[_0x8ef1('0xf')],'transfereecalleridname':_0x2f4a59[_0x8ef1('0x10')],'transfereeconnectedlinenum':_0x2f4a59[_0x8ef1('0x11')],'transfereeconnectedlinename':_0x2f4a59[_0x8ef1('0x12')],'transfereeaccountcode':_0x2f4a59[_0x8ef1('0x13')],'transfereecontext':_0x2f4a59['transfereecontext'],'transfereeexten':_0x2f4a59[_0x8ef1('0x14')],'transfereelinkedid':_0x2f4a59['transfereelinkedid'],'isexternal':_0x2f4a59[_0x8ef1('0x15')],'context':_0x2f4a59['context'],'extension':_0x2f4a59['extension'],'type':_0x8ef1('0x16')},'log':_0x8ef1('0x4')});};exports[_0x8ef1('0x17')]=function(_0x5d35cd){return client[_0x8ef1('0x3')](_0x8ef1('0x4'),{'body':{'result':_0x5d35cd[_0x8ef1('0x5')],'transfererchannel':_0x5d35cd[_0x8ef1('0x18')],'transferercalleridnum':_0x5d35cd[_0x8ef1('0x19')],'transferercalleridname':_0x5d35cd['origtransferercalleridname'],'transfererconnectedlinenum':_0x5d35cd[_0x8ef1('0x1a')],'transfererconnectedlinename':_0x5d35cd[_0x8ef1('0x1b')],'transfereraccountcode':_0x5d35cd[_0x8ef1('0x1c')],'transferercontext':_0x5d35cd[_0x8ef1('0x1d')],'transfererexten':_0x5d35cd[_0x8ef1('0x1e')],'transfererlinkedid':_0x5d35cd[_0x8ef1('0x1f')],'transfereechannel':_0x5d35cd[_0x8ef1('0x20')],'transfereecalleridnum':_0x5d35cd[_0x8ef1('0x21')],'transfereecalleridname':_0x5d35cd[_0x8ef1('0x22')],'transfereeconnectedlinenum':_0x5d35cd[_0x8ef1('0x23')],'transfereeconnectedlinename':_0x5d35cd[_0x8ef1('0x24')],'transfereeaccountcode':_0x5d35cd['transfertargetaccountcode'],'transfereecontext':_0x5d35cd[_0x8ef1('0x25')],'transfereeexten':_0x5d35cd['transfertargetexten'],'transfereelinkedid':_0x5d35cd[_0x8ef1('0x26')],'isexternal':_0x5d35cd[_0x8ef1('0x15')],'context':_0x5d35cd[_0x8ef1('0x27')],'extension':_0x5d35cd[_0x8ef1('0x28')],'type':_0x8ef1('0x29')},'log':_0x8ef1('0x4')});};
\ No newline at end of file
+var _0x0271=['transfererexten','transfererlinkedid','transfereechannel','transfereecalleridnum','transfereeaccountcode','transfereecontext','transfereeexten','transfereelinkedid','context','blind','CreateVoiceTransferReport','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','isexternal','origtransferercontext','origtransfererexten','attended','../client','transfers','Request','result','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinename','transfereraccountcode','transferercontext'];(function(_0x1149fd,_0x5dc34d){var _0x36ee9e=function(_0x461980){while(--_0x461980){_0x1149fd['push'](_0x1149fd['shift']());}};_0x36ee9e(++_0x5dc34d);}(_0x0271,0x167));var _0x1027=function(_0x1c0648,_0xf8feb0){_0x1c0648=_0x1c0648-0x0;var _0x2770f5=_0x0271[_0x1c0648];return _0x2770f5;};'use strict';var client=require(_0x1027('0x0'));exports[_0x1027('0x1')]={};exports['blindTransfer']=function(_0x1a5adc){return client[_0x1027('0x2')]('CreateVoiceTransferReport',{'body':{'result':_0x1a5adc[_0x1027('0x3')],'transfererchannel':_0x1a5adc[_0x1027('0x4')],'transferercalleridnum':_0x1a5adc[_0x1027('0x5')],'transferercalleridname':_0x1a5adc[_0x1027('0x6')],'transfererconnectedlinenum':_0x1a5adc['transfererconnectedlinenum'],'transfererconnectedlinename':_0x1a5adc[_0x1027('0x7')],'transfereraccountcode':_0x1a5adc[_0x1027('0x8')],'transferercontext':_0x1a5adc[_0x1027('0x9')],'transfererexten':_0x1a5adc[_0x1027('0xa')],'transfererlinkedid':_0x1a5adc[_0x1027('0xb')],'transfereechannel':_0x1a5adc[_0x1027('0xc')],'transfereecalleridnum':_0x1a5adc[_0x1027('0xd')],'transfereecalleridname':_0x1a5adc['transfereecalleridname'],'transfereeconnectedlinenum':_0x1a5adc['transfereeconnectedlinenum'],'transfereeconnectedlinename':_0x1a5adc['transfereeconnectedlinename'],'transfereeaccountcode':_0x1a5adc[_0x1027('0xe')],'transfereecontext':_0x1a5adc[_0x1027('0xf')],'transfereeexten':_0x1a5adc[_0x1027('0x10')],'transfereelinkedid':_0x1a5adc[_0x1027('0x11')],'isexternal':_0x1a5adc['isexternal'],'context':_0x1a5adc[_0x1027('0x12')],'extension':_0x1a5adc['extension'],'type':_0x1027('0x13')},'log':_0x1027('0x14')});};exports['attendedTransfer']=function(_0x3d225f){return client[_0x1027('0x2')](_0x1027('0x14'),{'body':{'result':_0x3d225f[_0x1027('0x3')],'transfererchannel':_0x3d225f[_0x1027('0x15')],'transferercalleridnum':_0x3d225f[_0x1027('0x16')],'transferercalleridname':_0x3d225f[_0x1027('0x17')],'transfererconnectedlinenum':_0x3d225f[_0x1027('0x18')],'transfererconnectedlinename':_0x3d225f[_0x1027('0x19')],'transfereraccountcode':_0x3d225f[_0x1027('0x1a')],'transferercontext':_0x3d225f[_0x1027('0x1b')],'transfererexten':_0x3d225f[_0x1027('0x1c')],'transfererlinkedid':_0x3d225f[_0x1027('0x1d')],'transfereechannel':_0x3d225f[_0x1027('0x1e')],'transfereecalleridnum':_0x3d225f[_0x1027('0x1f')],'transfereecalleridname':_0x3d225f[_0x1027('0x20')],'transfereeconnectedlinenum':_0x3d225f[_0x1027('0x21')],'transfereeconnectedlinename':_0x3d225f[_0x1027('0x22')],'transfereeaccountcode':_0x3d225f[_0x1027('0x23')],'transfereecontext':_0x3d225f[_0x1027('0x24')],'transfereeexten':_0x3d225f['transfertargetexten'],'transfereelinkedid':_0x3d225f['transfertargetlinkedid'],'isexternal':_0x3d225f[_0x1027('0x25')],'context':_0x3d225f[_0x1027('0x26')],'extension':_0x3d225f[_0x1027('0x27')],'type':_0x1027('0x28')},'log':_0x1027('0x14')});};
\ No newline at end of file
index 972504e..1465f6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fb4=['format','%s/%s','SIP','name','timers','timer','updateAcw','agents','updateStatusRealtime','pause','QueuePause','isConnected','error','asterisk','username','ami\x20disconnected','join','pick','keys','module','action','Action','then','message','catch','Command','content','voiceQueues','strategy','answered','available','loggedIn','pTalking','sumBillable','total','unmanaged','abandoned','loggedInDb','type','outbound','dialActive','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','Interval','find','omit','undefined','channels','uniqueid','channel','%s.%s','filename','wav','MixMonitor','isNil','monitors','push','/var/spool/asterisk/monitor/','toLowerCase','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','status','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','voicechannel','length','map','StopMixMonitor','destinationchannel','stop','StopMixMonitor\x20Success','values','queueChannels','voicequeuechannelhangup','Redirect','exten','context','trunks','campaigns','run','event','Event\x20name\x20mandatory','emit','custom:','faxAccounts','send','server','http','127.0.0.1','log','RPC\x20listening\x20on\x20port:','util','jayson/promise','validate','bluebird','moment','../../../config/environment','../ami','listen'];(function(_0x592804,_0x335584){var _0x4a4a0f=function(_0xea45a7){while(--_0xea45a7){_0x592804['push'](_0x592804['shift']());}};_0x4a4a0f(++_0x335584);}(_0x4fb4,0x190));var _0x44fb=function(_0x1cae94,_0x131b14){_0x1cae94=_0x1cae94-0x0;var _0x1b2988=_0x4fb4[_0x1cae94];return _0x1b2988;};'use strict';var _=require('lodash');var util=require(_0x44fb('0x0'));var jayson=require(_0x44fb('0x1'));var schema=require(_0x44fb('0x2'));var BPromise=require(_0x44fb('0x3'));var moment=require(_0x44fb('0x4'));var config=require(_0x44fb('0x5'));var properties=require('../properties');var ami=require(_0x44fb('0x6'));exports[_0x44fb('0x7')]=function(_0x308b96,_0x26fbd6,_0x375d33){return new BPromise(function(_0x173e70,_0x464af5){var _0x2a4d75={'QueuePause':function(_0x59aa6d){return new Promise(function(_0x87f716,_0xd4ead0){var _0x5405a8=util[_0x44fb('0x8')](_0x44fb('0x9'),_0x44fb('0xa'),_0x59aa6d[_0x44fb('0xb')]);if(_0x308b96[_0x44fb('0xc')]&&_0x308b96[_0x44fb('0xc')][_0x5405a8]&&_0x308b96[_0x44fb('0xc')][_0x5405a8][_0x44fb('0xd')]){_0x308b96[_0x44fb('0xc')][_0x5405a8][_0x44fb('0xe')]();}if(_0x308b96['agents'][_0x5405a8]){_0x308b96[_0x44fb('0xf')][_0x5405a8][_0x44fb('0x10')]({'statePause':_0x59aa6d[_0x44fb('0x11')]?!![]:![]});}_0x87f716({'code':0xc8,'message':_0x44fb('0x12')});});},'Reload':function(_0x1c1cbc){var _0x47c87b=this;return new Promise(function(_0x1fc8fa,_0xaedd7f){if(ami[_0x44fb('0x13')]()==![]){return _0xaedd7f(_0x47c87b[_0x44fb('0x14')](0x1f4,[config[_0x44fb('0x15')]['ip'],config['asterisk'][_0x44fb('0x16')],_0x44fb('0x17')][_0x44fb('0x18')]('\x20')));}_0x1c1cbc=_[_0x44fb('0x19')](_0x1c1cbc,_[_0x44fb('0x1a')](properties[_0x44fb('0x1b')]));_0x1c1cbc[_0x44fb('0x1c')]='Reload';return ami[_0x44fb('0x1d')](_0x1c1cbc)[_0x44fb('0x1e')](function(_0x2e0efd){_0x1fc8fa({'code':0xc8,'message':_0x2e0efd[_0x44fb('0x1f')]});})[_0x44fb('0x20')](function(_0x22c2eb){_0xaedd7f(_0x47c87b[_0x44fb('0x14')](0x1f5,_0x22c2eb[_0x44fb('0x1f')]));});});},'Command':function(_0x44e6de){var _0x1fc48c=this;return new Promise(function(_0x5eafcb,_0x4bd157){if(ami['isConnected']()==![]){return _0x4bd157(_0x1fc48c[_0x44fb('0x14')](0x1f4,[config[_0x44fb('0x15')]['ip'],config[_0x44fb('0x15')]['username'],_0x44fb('0x17')][_0x44fb('0x18')]('\x20')));}_0x44e6de=_[_0x44fb('0x19')](_0x44e6de,'command');_0x44e6de['action']=_0x44fb('0x21');return ami[_0x44fb('0x1d')](_0x44e6de)[_0x44fb('0x1e')](function(_0x4fc66d){_0x5eafcb({'code':0xc8,'message':_0x4fc66d[_0x44fb('0x22')]});})[_0x44fb('0x20')](function(_0x1f3d5c){_0x4bd157(_0x1fc48c['error'](0x1f5,_0x1f3d5c['message']));});});},'VoiceQueues':function(_0x105b88){return new Promise(function(_0xa50a49,_0x1c831e){var _0x733c=[];for(var _0x5e7116 in _0x308b96[_0x44fb('0x23')]){if(_0x308b96[_0x44fb('0x23')]['hasOwnProperty'](_0x5e7116)){var _0x5b6ce5=_0x308b96[_0x44fb('0x23')][_0x5e7116];var _0x2611d6={'id':_0x5b6ce5['id'],'name':_0x5b6ce5[_0x44fb('0xb')],'strategy':_0x5b6ce5[_0x44fb('0x24')],'answered':_0x5b6ce5[_0x44fb('0x25')],'available':_0x5b6ce5[_0x44fb('0x26')],'loggedIn':_0x5b6ce5[_0x44fb('0x27')],'pTalking':_0x5b6ce5[_0x44fb('0x28')],'sumBillable':_0x5b6ce5[_0x44fb('0x29')],'sumDuration':_0x5b6ce5['sumDuration'],'sumHoldTime':_0x5b6ce5['sumHoldTime']||0x0,'talking':_0x5b6ce5['talking'],'total':_0x5b6ce5[_0x44fb('0x2a')],'type':_0x5b6ce5['type'],'unmanaged':_0x5b6ce5[_0x44fb('0x2b')],'abandoned':_0x5b6ce5[_0x44fb('0x2c')],'waiting':_0x5b6ce5['waiting'],'loggedInDb':_0x5b6ce5[_0x44fb('0x2d')]};if(_0x5b6ce5[_0x44fb('0x2e')]===_0x44fb('0x2f')){_0x2611d6[_0x44fb('0x30')]=_0x5b6ce5[_0x44fb('0x30')];_0x2611d6['dialMethod']=_0x5b6ce5['dialMethod'];_0x2611d6[_0x44fb('0x31')]=_0x5b6ce5['dialOriginateCallerIdName'];_0x2611d6[_0x44fb('0x32')]=_0x5b6ce5[_0x44fb('0x32')];_0x2611d6[_0x44fb('0x33')]=_0x5b6ce5[_0x44fb('0x33')];_0x2611d6[_0x44fb('0x34')]=_0x5b6ce5[_0x44fb('0x34')];_0x2611d6[_0x44fb('0x35')]=_0x5b6ce5[_0x44fb('0x35')];_0x2611d6[_0x44fb('0x36')]=_0x5b6ce5[_0x44fb('0x36')];_0x2611d6[_0x44fb('0x37')]=_0x5b6ce5[_0x44fb('0x37')];_0x2611d6[_0x44fb('0x38')]=_0x5b6ce5[_0x44fb('0x38')];_0x2611d6[_0x44fb('0x39')]=_0x5b6ce5['outboundBusyCallsDay'];_0x2611d6['outboundCongestionCallsDay']=_0x5b6ce5['outboundCongestionCallsDay'];_0x2611d6[_0x44fb('0x3a')]=_0x5b6ce5[_0x44fb('0x3a')];_0x2611d6[_0x44fb('0x3b')]=_0x5b6ce5[_0x44fb('0x3b')];_0x2611d6['outboundDropCallsDayTimeout']=_0x5b6ce5[_0x44fb('0x3c')];_0x2611d6[_0x44fb('0x3d')]=_0x5b6ce5['outboundNoAnswerCallsDay'];_0x2611d6[_0x44fb('0x3e')]=_0x5b6ce5['outboundNoSuchCallsDay'];_0x2611d6[_0x44fb('0x3f')]=_0x5b6ce5['outboundOriginateFailureCallsDay'];_0x2611d6[_0x44fb('0x40')]=_0x5b6ce5['outboundReCallsDay'];_0x2611d6[_0x44fb('0x41')]=_0x5b6ce5['outboundRejectCallsDay'];_0x2611d6['outboundUnknownCallsDay']=_0x5b6ce5[_0x44fb('0x42')];_0x2611d6[_0x44fb('0x43')]=_0x5b6ce5[_0x44fb('0x43')];_0x2611d6[_0x44fb('0x44')]=_0x5b6ce5[_0x44fb('0x44')];_0x2611d6[_0x44fb('0x45')]=_0x5b6ce5[_0x44fb('0x45')];_0x2611d6[_0x44fb('0x46')]=_0x5b6ce5[_0x44fb('0x46')];_0x2611d6[_0x44fb('0x47')]=_0x5b6ce5['predictiveIntervalDroppedCallsTimeout'];_0x2611d6[_0x44fb('0x48')]=_0x5b6ce5[_0x44fb('0x48')];_0x2611d6[_0x44fb('0x49')]=_0x5b6ce5[_0x44fb('0x49')];_0x2611d6[_0x44fb('0x4a')]=_0x5b6ce5['predictiveIntervalHitRate'];_0x2611d6[_0x44fb('0x4b')]=_0x5b6ce5[_0x44fb('0x4b')];_0x2611d6['predictiveIntervalPauses']=_0x5b6ce5['predictiveIntervalPauses'];_0x2611d6[_0x44fb('0x4c')]=_0x5b6ce5[_0x44fb('0x4c')];_0x2611d6[_0x44fb('0x4d')]=_0x5b6ce5['predictiveIntervalTotalCalls'];_0x2611d6[_0x44fb('0x1f')]=_0x5b6ce5[_0x44fb('0x1f')];_0x2611d6[_0x44fb('0x4e')]=_0x5b6ce5[_0x44fb('0x4e')];_0x2611d6[_0x44fb('0x4f')]=_0x5b6ce5[_0x44fb('0x4f')];_0x2611d6['erlangCallToSecond']=_0x5b6ce5[_0x44fb('0x50')];_0x2611d6['erlangAbandonmentRate']=_0x5b6ce5[_0x44fb('0x51')];_0x2611d6[_0x44fb('0x52')]=_0x5b6ce5[_0x44fb('0x52')];_0x2611d6[_0x44fb('0x53')]=_0x5b6ce5['startPredictive'];_0x2611d6[_0x44fb('0x54')]=_0x5b6ce5[_0x44fb('0x54')];}if(_0x5b6ce5[_0x44fb('0x55')]){_0x2611d6[_0x44fb('0x55')]={'id':_0x5b6ce5[_0x44fb('0x55')]['id'],'name':_0x5b6ce5['Trunk'][_0x44fb('0xb')],'active':_0x5b6ce5[_0x44fb('0x55')][_0x44fb('0x56')],'callerid':_0x5b6ce5[_0x44fb('0x55')]['callerid']};}if(_0x5b6ce5['Interval']){_0x2611d6[_0x44fb('0x57')]={'id':_0x5b6ce5[_0x44fb('0x57')]['id'],'name':_0x5b6ce5['Interval'][_0x44fb('0xb')]};}_0x733c['push'](_0x2611d6);}}_0xa50a49({'count':_0x733c['length'],'rows':_0x733c});});},'UpdateVoiceQueue':function(_0x5519d9){return new Promise(function(_0x5d5317,_0x396bdc){var _0x1a7acd=_[_0x44fb('0x58')](_0x308b96[_0x44fb('0x23')],{'id':parseInt(_0x5519d9['id'])});var _0x48fc96=_[_0x44fb('0x59')](_0x5519d9,['id']);if(_0x1a7acd){for(var _0x2bf1e0 in _0x48fc96){if(typeof _0x48fc96[_0x2bf1e0]!==_0x44fb('0x5a')&&typeof _0x1a7acd[_0x2bf1e0]!==_0x44fb('0x5a')){_0x1a7acd[_0x2bf1e0]=_0x48fc96[_0x2bf1e0];}}_0x5d5317(_0x1a7acd);}else{_0x396bdc();}});},'VoiceChannels':function(_0x1b6495){return new Promise(function(_0x204d54,_0x3eb4a1){var _0x15084d=_['values'](_0x308b96[_0x44fb('0x5b')]);_0x204d54({'count':_0x15084d['length'],'rows':_0x15084d});});},'VoiceChannelMixMonitor':function(_0x484529){var _0x304a0f=this;return new Promise(function(_0x16d8c2,_0x174e33){if(ami['isConnected']()==![]){return _0x174e33(_0x304a0f[_0x44fb('0x14')](0x1f4,[config[_0x44fb('0x15')]['ip'],config[_0x44fb('0x15')][_0x44fb('0x16')],_0x44fb('0x17')][_0x44fb('0x18')]('\x20')));}var _0x24eb8a=schema(properties['voicechannel'])[_0x44fb('0x2')](_0x484529);if(_0x24eb8a['length']>0x0){return _0x174e33(_0x304a0f[_0x44fb('0x14')](0x1f4,_['map'](_0x24eb8a,_0x44fb('0x1f'))[_0x44fb('0x18')](',\x20')));}var _0xf56878=_[_0x44fb('0x58')](_0x308b96['channels'],{'uniqueid':_0x484529[_0x44fb('0x5c')]});if(_0xf56878&&_0xf56878[_0x44fb('0x5d')]){var _0x247266=util[_0x44fb('0x8')](_0x44fb('0x5e'),_0x484529[_0x44fb('0x5f')]||_0x484529[_0x44fb('0x5c')],_0x484529[_0x44fb('0x8')]||_0x44fb('0x60'));return ami[_0x44fb('0x1d')]({'action':_0x44fb('0x61'),'channel':_0xf56878[_0x44fb('0x5d')],'file':_0x247266,'options':'ai(mixmonitorid)'})[_0x44fb('0x1e')](function(_0x4d0803){var _0x13a799=_[_0x44fb('0x58')](_0xf56878['monitors'],{'filename':'/var/spool/asterisk/monitor/'+_0x247266['toLowerCase']()});if(_[_0x44fb('0x62')](_0x13a799)){_0xf56878[_0x44fb('0x63')][_0x44fb('0x64')]({'filename':_0x44fb('0x65')+_0x247266[_0x44fb('0x66')](),'createdAt':moment()[_0x44fb('0x8')](_0x44fb('0x67')),'mixmonitorid':_0x4d0803[_0x44fb('0x68')],'status':_0x44fb('0x69')});}else{_0x13a799[_0x44fb('0x68')]=_0x4d0803[_0x44fb('0x68')];_0x13a799[_0x44fb('0x6a')]=_0x44fb('0x69');}_0x16d8c2({'code':0xc8,'message':[_0x484529[_0x44fb('0x5c')],_0x44fb('0x6b'),_0x4d0803[_0x44fb('0x68')]][_0x44fb('0x18')]('\x20'),'mixmonitorid':_0x4d0803[_0x44fb('0x68')]});})[_0x44fb('0x20')](function(_0x4dfba3){_0x174e33(_0x304a0f['error'](0x1f5,[_0x484529[_0x44fb('0x5c')],_0x4dfba3['message']['toLowerCase']()]['join']('\x20')));});}else{return _0x174e33(_0x304a0f[_0x44fb('0x14')](0x1f5,_0x44fb('0x6c')));}});},'VoiceChannelStopMixMonitor':function(_0x174fcf){var _0x55f28f=this;return new Promise(function(_0x986ca,_0x5ad3af){if(ami[_0x44fb('0x13')]()==![]){return _0x5ad3af(_0x55f28f['error'](0x1f4,[config[_0x44fb('0x15')]['ip'],config[_0x44fb('0x15')][_0x44fb('0x16')],'ami\x20disconnected'][_0x44fb('0x18')]('\x20')));}var _0x14cfc4=schema(properties[_0x44fb('0x6d')])['validate'](_0x174fcf);if(_0x14cfc4[_0x44fb('0x6e')]>0x0){return _0x5ad3af(_0x55f28f[_0x44fb('0x14')](0x1f4,_[_0x44fb('0x6f')](_0x14cfc4,'message')['join'](',\x20')));}var _0x1ed4a0=_[_0x44fb('0x58')](_0x308b96[_0x44fb('0x5b')],{'uniqueid':_0x174fcf[_0x44fb('0x5c')]});if(_0x1ed4a0){return BPromise['resolve']()['then'](function(){if(_0x1ed4a0[_0x44fb('0x5d')]){return ami[_0x44fb('0x1d')]({'action':_0x44fb('0x70'),'channel':_0x1ed4a0[_0x44fb('0x5d')],'mixmonitorid':_0x174fcf[_0x44fb('0x68')]})[_0x44fb('0x20')](function(_0x5a7d27){});}})[_0x44fb('0x1e')](function(){if(_0x1ed4a0[_0x44fb('0x71')]){return ami[_0x44fb('0x1d')]({'action':_0x44fb('0x70'),'channel':_0x1ed4a0['destinationchannel'],'mixmonitorid':_0x174fcf['mixmonitorid']})[_0x44fb('0x20')](function(_0xf0c095){});}})[_0x44fb('0x1e')](function(_0x5edbb9){var _0x269270=_['find'](_0x1ed4a0[_0x44fb('0x63')],{'mixmonitorid':_0x174fcf[_0x44fb('0x68')]});if(_0x269270){_0x269270[_0x44fb('0x6a')]=_0x44fb('0x72');}})[_0x44fb('0x1e')](function(){var _0x4796b1=util[_0x44fb('0x8')](_0x44fb('0x5e'),_0x174fcf[_0x44fb('0x5f')]||_0x174fcf[_0x44fb('0x5c')],_0x174fcf['format']||_0x44fb('0x60'));var _0x26a86e=_[_0x44fb('0x58')](_0x1ed4a0[_0x44fb('0x63')],{'filename':_0x44fb('0x65')+_0x4796b1[_0x44fb('0x66')]()});if(_0x26a86e){_0x26a86e[_0x44fb('0x6a')]=_0x44fb('0x72');}})[_0x44fb('0x1e')](function(){_0x986ca({'code':0xc8,'message':[_0x174fcf[_0x44fb('0x5c')],_0x44fb('0x73')][_0x44fb('0x18')]('\x20')});})[_0x44fb('0x20')](function(_0x2cb5c5){_0x5ad3af(_0x55f28f[_0x44fb('0x14')](0x1f5,[_0x174fcf[_0x44fb('0x5c')],_0x2cb5c5[_0x44fb('0x1f')][_0x44fb('0x66')]()][_0x44fb('0x18')]('\x20')));});}else{return _0x5ad3af(_0x55f28f['error'](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannels':function(_0x3d51db){return new Promise(function(_0x3cc62c,_0x3781a9){var _0x1feabd=_[_0x44fb('0x74')](_0x308b96[_0x44fb('0x75')]);_0x3cc62c({'count':_0x1feabd['length'],'rows':_0x1feabd});});},'VoiceQueuesChannel':function(_0x56e968){var _0x40a471=this;return new Promise(function(_0x443b6b,_0x149e96){var _0x25d64f=schema(properties['voicequeuechannel'])[_0x44fb('0x2')](_0x56e968);if(_0x25d64f[_0x44fb('0x6e')]>0x0){return _0x149e96(_0x40a471[_0x44fb('0x14')](0x1f4,_[_0x44fb('0x6f')](_0x25d64f,_0x44fb('0x1f'))[_0x44fb('0x18')](',\x20')));}var _0xf77a1a=_[_0x44fb('0x58')](_0x308b96[_0x44fb('0x75')],{'uniqueid':_0x56e968[_0x44fb('0x5c')]});if(_0xf77a1a){_0x443b6b(_0xf77a1a);}else{return _0x149e96(_0x40a471['error'](0x1f5,_0x44fb('0x6c')));}});},'VoiceQueuesChannelHangup':function(_0x2d1bb9){var _0x5b9ba8=this;return new Promise(function(_0x4395ae,_0x443e66){if(ami['isConnected']()==![]){return _0x443e66(_0x5b9ba8[_0x44fb('0x14')](0x1f4,[config[_0x44fb('0x15')]['ip'],config[_0x44fb('0x15')]['username'],'ami\x20disconnected']['join']('\x20')));}var _0x1e506a=schema(properties[_0x44fb('0x76')])[_0x44fb('0x2')](_0x2d1bb9);if(_0x1e506a[_0x44fb('0x6e')]>0x0){return _0x443e66(_0x5b9ba8[_0x44fb('0x14')](0x1f4,_[_0x44fb('0x6f')](_0x1e506a,_0x44fb('0x1f'))[_0x44fb('0x18')](',\x20')));}var _0x55905f=_[_0x44fb('0x58')](_0x308b96[_0x44fb('0x75')],{'uniqueid':_0x2d1bb9[_0x44fb('0x5c')]});if(_0x55905f&&_0x55905f[_0x44fb('0x5d')]){return ami[_0x44fb('0x1d')]({'action':'Hangup','channel':_0x55905f[_0x44fb('0x5d')]})[_0x44fb('0x1e')](function(_0x31d02d){_0x4395ae({'code':0xc8,'message':[_0x2d1bb9['uniqueid'],_0x31d02d[_0x44fb('0x1f')][_0x44fb('0x66')]()][_0x44fb('0x18')]('\x20')});})[_0x44fb('0x20')](function(_0xcc7787){_0x443e66(_0x5b9ba8[_0x44fb('0x14')](0x1f5,[_0x2d1bb9[_0x44fb('0x5c')],_0xcc7787[_0x44fb('0x1f')][_0x44fb('0x66')]()][_0x44fb('0x18')]('\x20')));});}else{return _0x443e66(_0x5b9ba8[_0x44fb('0x14')](0x1f5,_0x44fb('0x6c')));}});},'VoiceQueuesChannelRedirect':function(_0x3d1f34){var _0x650ea9=this;return new Promise(function(_0x5aef90,_0x45045e){if(ami[_0x44fb('0x13')]()==![]){return _0x45045e(_0x650ea9[_0x44fb('0x14')](0x1f4,[config[_0x44fb('0x15')]['ip'],config[_0x44fb('0x15')][_0x44fb('0x16')],_0x44fb('0x17')][_0x44fb('0x18')]('\x20')));}var _0x34268f=schema(properties['voicequeuechannelredirect'])[_0x44fb('0x2')](_0x3d1f34);if(_0x34268f['length']>0x0){return _0x45045e(_0x650ea9[_0x44fb('0x14')](0x1f4,_[_0x44fb('0x6f')](_0x34268f,'message')['join'](',\x20')));}var _0x358042=_[_0x44fb('0x58')](_0x308b96['queueChannels'],{'uniqueid':_0x3d1f34[_0x44fb('0x5c')]});if(_0x358042&&_0x358042['channel']){return ami['Action']({'action':_0x44fb('0x77'),'channel':_0x358042[_0x44fb('0x5d')],'exten':_0x3d1f34[_0x44fb('0x78')],'context':_0x3d1f34[_0x44fb('0x79')]||_0x358042[_0x44fb('0x79')],'priority':0x1})['then'](function(_0x57191f){_0x5aef90({'code':0xc8,'message':[_0x3d1f34['uniqueid'],_0x57191f[_0x44fb('0x1f')][_0x44fb('0x66')]()][_0x44fb('0x18')]('\x20')});})[_0x44fb('0x20')](function(_0x2be4c5){_0x45045e(_0x650ea9[_0x44fb('0x14')](0x1f5,[_0x3d1f34[_0x44fb('0x5c')],_0x2be4c5[_0x44fb('0x1f')][_0x44fb('0x66')]()][_0x44fb('0x18')]('\x20')));});}else{return _0x45045e(_0x650ea9[_0x44fb('0x14')](0x1f5,_0x44fb('0x6c')));}});},'Agents':function(_0xf37376){return new Promise(function(_0x26c134,_0x55f5c8){var _0x8b4613=_['values'](_0x308b96[_0x44fb('0xf')]);_0x26c134({'count':_0x8b4613[_0x44fb('0x6e')],'rows':_0x8b4613});});},'Telephones':function(_0x5e1c14){return new Promise(function(_0x1792e7,_0x152963){var _0x2b5583=_[_0x44fb('0x74')](_0x308b96['telephones']);_0x1792e7({'count':_0x2b5583['length'],'rows':_0x2b5583});});},'Trunks':function(_0x173b35){return new Promise(function(_0x385c6b,_0x4a88bd){var _0x399142=_[_0x44fb('0x74')](_0x308b96[_0x44fb('0x7a')]);_0x385c6b({'count':_0x399142[_0x44fb('0x6e')],'rows':_0x399142});});},'OutboundChannels':function(_0x3fac48){return new Promise(function(_0x37db10,_0x1e7329){var _0x4f5c7f=_['values'](_0x308b96['outboundChannels']);_0x37db10({'count':_0x4f5c7f[_0x44fb('0x6e')],'rows':_0x4f5c7f});});},'Outbound':function(_0x4fd096){return new Promise(function(_0x385e5e,_0x2f677f){_0x385e5e(_0x308b96[_0x44fb('0x2f')]);});},'Campaigns':function(_0x15c6ee){return new Promise(function(_0x1294c1,_0x55a021){var _0x498fff=_['values'](_0x308b96[_0x44fb('0x7b')]);_0x1294c1({'count':_0x498fff[_0x44fb('0x6e')],'rows':_0x498fff});});},'VoiceQueuesPreview':function(_0x5ee6e1){var _0x268197=this;return new Promise(function(_0x55be2f,_0x4e7074){_0x26fbd6[_0x44fb('0x7c')](_0x5ee6e1['id'])[_0x44fb('0x1e')](function(_0x4c4843){_0x55be2f({'code':0xc8,'message':_0x4c4843[_0x44fb('0x1f')]});})[_0x44fb('0x20')](function(_0x214496){_0x4e7074(_0x268197[_0x44fb('0x14')](0x1f4,_0x214496['message']));});});},'EventManager':function(_0x20a3ec){var _0x35b928=this;return new Promise(function(_0x145f21,_0x11f460){if(!_0x20a3ec[_0x44fb('0x7d')]){return _0x11f460(_0x35b928[_0x44fb('0x14')](0x1f4,_0x44fb('0x7e')));}ami[_0x44fb('0x7f')](_0x44fb('0x80')+_0x20a3ec[_0x44fb('0x7d')],_0x20a3ec[_0x44fb('0x1f')]);_0x145f21({'code':0xc8,'message':_0x20a3ec});});},'FaxAccounts':function(_0x127bec){return new Promise(function(_0x10c4c9,_0x172fba){var _0x167293=_[_0x44fb('0x74')](_0x308b96[_0x44fb('0x81')]);_0x10c4c9({'count':_0x167293['length'],'rows':_0x167293});});},'SendFax':function(_0x3607a7){var _0x4bf099=this;return new Promise(function(_0x50f5bd,_0x215272){_0x375d33[_0x44fb('0x82')](_0x3607a7)[_0x44fb('0x1e')](function(_0x5a6ac3){_0x50f5bd({'code':0xc8,'message':_0x5a6ac3[_0x44fb('0x1f')]});})[_0x44fb('0x20')](function(_0x2a7f1a){_0x215272(_0x4bf099[_0x44fb('0x14')](0x1f4,_0x2a7f1a[_0x44fb('0x1f')]));});});},'CheckAfterSend':function(_0x158bfd){var _0x37aa8c=this;return new Promise(function(_0x45f8d3,_0x190e04){_0x375d33['checkAfterSend'](_0x158bfd)[_0x44fb('0x1e')](function(_0x41726c){_0x45f8d3({'code':0xc8,'message':_0x41726c['message']});})[_0x44fb('0x20')](function(_0x1a0c70){_0x190e04(_0x37aa8c[_0x44fb('0x14')](0x1f4,_0x1a0c70['message']));});});}};var _0x404e4a=jayson[_0x44fb('0x83')](_0x2a4d75)[_0x44fb('0x84')]();_0x404e4a['on'](_0x44fb('0x14'),function(_0x2257be){return _0x464af5(_0x2257be);});_0x404e4a[_0x44fb('0x7')](0x232a,_0x44fb('0x85'),function(){console[_0x44fb('0x86')]('AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232a);return _0x173e70(_0x44fb('0x87')+0x232a);});});};
\ No newline at end of file
+var _0xa0a1=['outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','push','omit','values','channels','length','voicechannel','channel','%s.%s','filename','uniqueid','wav','MixMonitor','ai(mixmonitorid)','/var/spool/asterisk/monitor/','toLowerCase','mixmonitorid','rec','MixMonitor\x20Success','map','find','resolve','StopMixMonitor','destinationchannel','status','stop','monitors','StopMixMonitor\x20Success','queueChannels','voicequeuechannel','Channel\x20doesn\x27t\x20exist','voicequeuechannelhangup','voicequeuechannelredirect','Redirect','context','outboundChannels','campaigns','run','event','emit','faxAccounts','send','checkAfterSend','server','http','listen','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','jayson/promise','validate','bluebird','../properties','../ami','format','%s/%s','timers','timer','updateAcw','agents','updateStatusRealtime','pause','QueuePause','isConnected','error','asterisk','username','join','pick','keys','action','Action','message','catch','ami\x20disconnected','command','Command','then','content','voiceQueues','hasOwnProperty','name','strategy','answered','available','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','unmanaged','abandoned','waiting','loggedInDb','type','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit'];(function(_0x2991ea,_0x4a0231){var _0x4e1c51=function(_0x59ed64){while(--_0x59ed64){_0x2991ea['push'](_0x2991ea['shift']());}};_0x4e1c51(++_0x4a0231);}(_0xa0a1,0x15b));var _0x1a0a=function(_0x46a17f,_0x1aca1f){_0x46a17f=_0x46a17f-0x0;var _0x435507=_0xa0a1[_0x46a17f];return _0x435507;};'use strict';var _=require(_0x1a0a('0x0'));var util=require('util');var jayson=require(_0x1a0a('0x1'));var schema=require(_0x1a0a('0x2'));var BPromise=require(_0x1a0a('0x3'));var moment=require('moment');var config=require('../../../config/environment');var properties=require(_0x1a0a('0x4'));var ami=require(_0x1a0a('0x5'));exports['listen']=function(_0x27077a,_0x31e85b,_0x4b5573){return new BPromise(function(_0x2d4b04,_0xe59f97){var _0x3fe29f={'QueuePause':function(_0x245f3d){return new Promise(function(_0x9da67c,_0x48d604){var _0x2e5bec=util[_0x1a0a('0x6')](_0x1a0a('0x7'),'SIP',_0x245f3d['name']);if(_0x27077a['timers']&&_0x27077a[_0x1a0a('0x8')][_0x2e5bec]&&_0x27077a[_0x1a0a('0x8')][_0x2e5bec][_0x1a0a('0x9')]){_0x27077a['timers'][_0x2e5bec][_0x1a0a('0xa')]();}if(_0x27077a['agents'][_0x2e5bec]){_0x27077a[_0x1a0a('0xb')][_0x2e5bec][_0x1a0a('0xc')]({'statePause':_0x245f3d[_0x1a0a('0xd')]?!![]:![]});}_0x9da67c({'code':0xc8,'message':_0x1a0a('0xe')});});},'Reload':function(_0x289046){var _0x2dee74=this;return new Promise(function(_0x3f34d2,_0x4f2b35){if(ami[_0x1a0a('0xf')]()==![]){return _0x4f2b35(_0x2dee74[_0x1a0a('0x10')](0x1f4,[config[_0x1a0a('0x11')]['ip'],config[_0x1a0a('0x11')][_0x1a0a('0x12')],'ami\x20disconnected'][_0x1a0a('0x13')]('\x20')));}_0x289046=_[_0x1a0a('0x14')](_0x289046,_[_0x1a0a('0x15')](properties['module']));_0x289046[_0x1a0a('0x16')]='Reload';return ami[_0x1a0a('0x17')](_0x289046)['then'](function(_0x54bfbe){_0x3f34d2({'code':0xc8,'message':_0x54bfbe[_0x1a0a('0x18')]});})[_0x1a0a('0x19')](function(_0x307fdc){_0x4f2b35(_0x2dee74[_0x1a0a('0x10')](0x1f5,_0x307fdc['message']));});});},'Command':function(_0x56b8a5){var _0x239065=this;return new Promise(function(_0x40903a,_0xfa74ce){if(ami['isConnected']()==![]){return _0xfa74ce(_0x239065[_0x1a0a('0x10')](0x1f4,[config[_0x1a0a('0x11')]['ip'],config['asterisk'][_0x1a0a('0x12')],_0x1a0a('0x1a')][_0x1a0a('0x13')]('\x20')));}_0x56b8a5=_['pick'](_0x56b8a5,_0x1a0a('0x1b'));_0x56b8a5[_0x1a0a('0x16')]=_0x1a0a('0x1c');return ami['Action'](_0x56b8a5)[_0x1a0a('0x1d')](function(_0x47ef88){_0x40903a({'code':0xc8,'message':_0x47ef88[_0x1a0a('0x1e')]});})[_0x1a0a('0x19')](function(_0x2d7967){_0xfa74ce(_0x239065[_0x1a0a('0x10')](0x1f5,_0x2d7967[_0x1a0a('0x18')]));});});},'VoiceQueues':function(_0x578995){return new Promise(function(_0x1e2b28,_0x8e4151){var _0x561407=[];for(var _0x4cf939 in _0x27077a[_0x1a0a('0x1f')]){if(_0x27077a[_0x1a0a('0x1f')][_0x1a0a('0x20')](_0x4cf939)){var _0x365ab5=_0x27077a[_0x1a0a('0x1f')][_0x4cf939];var _0x244bbf={'id':_0x365ab5['id'],'name':_0x365ab5[_0x1a0a('0x21')],'strategy':_0x365ab5[_0x1a0a('0x22')],'answered':_0x365ab5[_0x1a0a('0x23')],'available':_0x365ab5[_0x1a0a('0x24')],'loggedIn':_0x365ab5[_0x1a0a('0x25')],'pTalking':_0x365ab5[_0x1a0a('0x26')],'sumBillable':_0x365ab5[_0x1a0a('0x27')],'sumDuration':_0x365ab5[_0x1a0a('0x28')],'sumHoldTime':_0x365ab5[_0x1a0a('0x29')]||0x0,'talking':_0x365ab5[_0x1a0a('0x2a')],'total':_0x365ab5[_0x1a0a('0x2b')],'type':_0x365ab5['type'],'unmanaged':_0x365ab5[_0x1a0a('0x2c')],'abandoned':_0x365ab5[_0x1a0a('0x2d')],'waiting':_0x365ab5[_0x1a0a('0x2e')],'loggedInDb':_0x365ab5[_0x1a0a('0x2f')]};if(_0x365ab5[_0x1a0a('0x30')]===_0x1a0a('0x31')){_0x244bbf[_0x1a0a('0x32')]=_0x365ab5[_0x1a0a('0x32')];_0x244bbf[_0x1a0a('0x33')]=_0x365ab5[_0x1a0a('0x33')];_0x244bbf['dialOriginateCallerIdName']=_0x365ab5[_0x1a0a('0x34')];_0x244bbf[_0x1a0a('0x35')]=_0x365ab5['dialOriginateCallerIdNumber'];_0x244bbf[_0x1a0a('0x36')]=_0x365ab5['dialOriginateTimeout'];_0x244bbf['dialPrefix']=_0x365ab5[_0x1a0a('0x37')];_0x244bbf[_0x1a0a('0x38')]=_0x365ab5['temp'];_0x244bbf[_0x1a0a('0x39')]=_0x365ab5[_0x1a0a('0x39')];_0x244bbf[_0x1a0a('0x3a')]=_0x365ab5['outboundAnswerCallsDay'];_0x244bbf[_0x1a0a('0x3b')]=_0x365ab5[_0x1a0a('0x3b')];_0x244bbf['outboundBusyCallsDay']=_0x365ab5[_0x1a0a('0x3c')];_0x244bbf[_0x1a0a('0x3d')]=_0x365ab5['outboundCongestionCallsDay'];_0x244bbf[_0x1a0a('0x3e')]=_0x365ab5[_0x1a0a('0x3e')];_0x244bbf[_0x1a0a('0x3f')]=_0x365ab5[_0x1a0a('0x3f')];_0x244bbf['outboundDropCallsDayTimeout']=_0x365ab5[_0x1a0a('0x40')];_0x244bbf[_0x1a0a('0x41')]=_0x365ab5[_0x1a0a('0x41')];_0x244bbf[_0x1a0a('0x42')]=_0x365ab5[_0x1a0a('0x42')];_0x244bbf[_0x1a0a('0x43')]=_0x365ab5[_0x1a0a('0x43')];_0x244bbf[_0x1a0a('0x44')]=_0x365ab5[_0x1a0a('0x44')];_0x244bbf['outboundRejectCallsDay']=_0x365ab5['outboundRejectCallsDay'];_0x244bbf['outboundUnknownCallsDay']=_0x365ab5['outboundUnknownCallsDay'];_0x244bbf[_0x1a0a('0x45')]=_0x365ab5['predictiveIntervalAnsweredCalls'];_0x244bbf[_0x1a0a('0x46')]=_0x365ab5[_0x1a0a('0x46')];_0x244bbf['predictiveIntervalAvgTalktime']=_0x365ab5['predictiveIntervalAvgTalktime'];_0x244bbf[_0x1a0a('0x47')]=_0x365ab5[_0x1a0a('0x47')];_0x244bbf[_0x1a0a('0x48')]=_0x365ab5[_0x1a0a('0x48')];_0x244bbf['predictiveIntervalErlangCalls']=_0x365ab5[_0x1a0a('0x49')];_0x244bbf['predictiveIntervalErlangCallsDroppedCalls']=_0x365ab5['predictiveIntervalErlangCallsDroppedCalls'];_0x244bbf['predictiveIntervalHitRate']=_0x365ab5[_0x1a0a('0x4a')];_0x244bbf[_0x1a0a('0x4b')]=_0x365ab5['predictiveIntervalMultiplicativeFactor'];_0x244bbf[_0x1a0a('0x4c')]=_0x365ab5[_0x1a0a('0x4c')];_0x244bbf['predictiveIntervalAvailable']=_0x365ab5['predictiveIntervalAvailable'];_0x244bbf[_0x1a0a('0x4d')]=_0x365ab5[_0x1a0a('0x4d')];_0x244bbf['message']=_0x365ab5[_0x1a0a('0x18')];_0x244bbf[_0x1a0a('0x4e')]=_0x365ab5['originated'];_0x244bbf[_0x1a0a('0x4f')]=_0x365ab5['erlangCalls'];_0x244bbf[_0x1a0a('0x50')]=_0x365ab5['erlangCallToSecond'];_0x244bbf[_0x1a0a('0x51')]=_0x365ab5[_0x1a0a('0x51')];_0x244bbf[_0x1a0a('0x52')]=_0x365ab5[_0x1a0a('0x52')];_0x244bbf['startPredictive']=_0x365ab5[_0x1a0a('0x53')];_0x244bbf[_0x1a0a('0x54')]=_0x365ab5[_0x1a0a('0x54')];}if(_0x365ab5[_0x1a0a('0x55')]){_0x244bbf['Trunk']={'id':_0x365ab5[_0x1a0a('0x55')]['id'],'name':_0x365ab5[_0x1a0a('0x55')]['name'],'active':_0x365ab5[_0x1a0a('0x55')][_0x1a0a('0x56')],'callerid':_0x365ab5[_0x1a0a('0x55')][_0x1a0a('0x57')]};}if(_0x365ab5[_0x1a0a('0x58')]){_0x244bbf[_0x1a0a('0x58')]={'id':_0x365ab5[_0x1a0a('0x58')]['id'],'name':_0x365ab5[_0x1a0a('0x58')][_0x1a0a('0x21')]};}_0x561407[_0x1a0a('0x59')](_0x244bbf);}}_0x1e2b28({'count':_0x561407['length'],'rows':_0x561407});});},'UpdateVoiceQueue':function(_0x35c133){return new Promise(function(_0x2a5a04,_0x4ba9ca){var _0x493083=_['find'](_0x27077a['voiceQueues'],{'id':parseInt(_0x35c133['id'])});var _0x455f57=_[_0x1a0a('0x5a')](_0x35c133,['id']);if(_0x493083){for(var _0x48711d in _0x455f57){if(typeof _0x455f57[_0x48711d]!=='undefined'&&typeof _0x493083[_0x48711d]!=='undefined'){_0x493083[_0x48711d]=_0x455f57[_0x48711d];}}_0x2a5a04(_0x493083);}else{_0x4ba9ca();}});},'VoiceChannels':function(_0x423f52){return new Promise(function(_0x1185e9,_0x144360){var _0x2c58a9=_[_0x1a0a('0x5b')](_0x27077a[_0x1a0a('0x5c')]);_0x1185e9({'count':_0x2c58a9[_0x1a0a('0x5d')],'rows':_0x2c58a9});});},'VoiceChannelMixMonitor':function(_0x683bdc){var _0x9a2756=this;return new Promise(function(_0xf729c7,_0x1ed012){if(ami[_0x1a0a('0xf')]()==![]){return _0x1ed012(_0x9a2756[_0x1a0a('0x10')](0x1f4,[config['asterisk']['ip'],config[_0x1a0a('0x11')][_0x1a0a('0x12')],_0x1a0a('0x1a')]['join']('\x20')));}var _0x14b07a=schema(properties[_0x1a0a('0x5e')])['validate'](_0x683bdc);if(_0x14b07a[_0x1a0a('0x5d')]>0x0){return _0x1ed012(_0x9a2756[_0x1a0a('0x10')](0x1f4,_['map'](_0x14b07a,'message')[_0x1a0a('0x13')](',\x20')));}var _0x498118=_['find'](_0x27077a[_0x1a0a('0x5c')],{'uniqueid':_0x683bdc['uniqueid']});if(_0x498118&&_0x498118[_0x1a0a('0x5f')]){var _0x217073=util[_0x1a0a('0x6')](_0x1a0a('0x60'),_0x683bdc[_0x1a0a('0x61')]||_0x683bdc[_0x1a0a('0x62')],_0x683bdc[_0x1a0a('0x6')]||_0x1a0a('0x63'));return ami[_0x1a0a('0x17')]({'action':_0x1a0a('0x64'),'channel':_0x498118['channel'],'file':_0x217073,'options':_0x1a0a('0x65')})['then'](function(_0x9e897f){var _0x1e97d2=_['find'](_0x498118['monitors'],{'filename':_0x1a0a('0x66')+_0x217073[_0x1a0a('0x67')]()});if(_['isNil'](_0x1e97d2)){_0x498118['monitors'][_0x1a0a('0x59')]({'filename':'/var/spool/asterisk/monitor/'+_0x217073[_0x1a0a('0x67')](),'createdAt':moment()[_0x1a0a('0x6')]('YYYY-MM-DD\x20HH:mm:ss'),'mixmonitorid':_0x9e897f[_0x1a0a('0x68')],'status':'rec'});}else{_0x1e97d2[_0x1a0a('0x68')]=_0x9e897f[_0x1a0a('0x68')];_0x1e97d2['status']=_0x1a0a('0x69');}_0xf729c7({'code':0xc8,'message':[_0x683bdc[_0x1a0a('0x62')],_0x1a0a('0x6a'),_0x9e897f['mixmonitorid']][_0x1a0a('0x13')]('\x20'),'mixmonitorid':_0x9e897f[_0x1a0a('0x68')]});})['catch'](function(_0x5dac09){_0x1ed012(_0x9a2756[_0x1a0a('0x10')](0x1f5,[_0x683bdc[_0x1a0a('0x62')],_0x5dac09[_0x1a0a('0x18')][_0x1a0a('0x67')]()]['join']('\x20')));});}else{return _0x1ed012(_0x9a2756['error'](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceChannelStopMixMonitor':function(_0x2fef04){var _0x5e1eaa=this;return new Promise(function(_0x10fd71,_0x2953c1){if(ami[_0x1a0a('0xf')]()==![]){return _0x2953c1(_0x5e1eaa[_0x1a0a('0x10')](0x1f4,[config[_0x1a0a('0x11')]['ip'],config[_0x1a0a('0x11')][_0x1a0a('0x12')],_0x1a0a('0x1a')][_0x1a0a('0x13')]('\x20')));}var _0x34dd54=schema(properties[_0x1a0a('0x5e')])[_0x1a0a('0x2')](_0x2fef04);if(_0x34dd54[_0x1a0a('0x5d')]>0x0){return _0x2953c1(_0x5e1eaa[_0x1a0a('0x10')](0x1f4,_[_0x1a0a('0x6b')](_0x34dd54,'message')[_0x1a0a('0x13')](',\x20')));}var _0x26cb74=_[_0x1a0a('0x6c')](_0x27077a[_0x1a0a('0x5c')],{'uniqueid':_0x2fef04['uniqueid']});if(_0x26cb74){return BPromise[_0x1a0a('0x6d')]()[_0x1a0a('0x1d')](function(){if(_0x26cb74[_0x1a0a('0x5f')]){return ami[_0x1a0a('0x17')]({'action':_0x1a0a('0x6e'),'channel':_0x26cb74[_0x1a0a('0x5f')],'mixmonitorid':_0x2fef04[_0x1a0a('0x68')]})[_0x1a0a('0x19')](function(_0x224eac){});}})[_0x1a0a('0x1d')](function(){if(_0x26cb74[_0x1a0a('0x6f')]){return ami['Action']({'action':_0x1a0a('0x6e'),'channel':_0x26cb74['destinationchannel'],'mixmonitorid':_0x2fef04[_0x1a0a('0x68')]})['catch'](function(_0x1c2b41){});}})[_0x1a0a('0x1d')](function(_0x3ccce6){var _0x1aadbd=_[_0x1a0a('0x6c')](_0x26cb74['monitors'],{'mixmonitorid':_0x2fef04[_0x1a0a('0x68')]});if(_0x1aadbd){_0x1aadbd[_0x1a0a('0x70')]=_0x1a0a('0x71');}})[_0x1a0a('0x1d')](function(){var _0x36c617=util[_0x1a0a('0x6')](_0x1a0a('0x60'),_0x2fef04['filename']||_0x2fef04[_0x1a0a('0x62')],_0x2fef04[_0x1a0a('0x6')]||_0x1a0a('0x63'));var _0x5e2d94=_['find'](_0x26cb74[_0x1a0a('0x72')],{'filename':_0x1a0a('0x66')+_0x36c617[_0x1a0a('0x67')]()});if(_0x5e2d94){_0x5e2d94[_0x1a0a('0x70')]=_0x1a0a('0x71');}})['then'](function(){_0x10fd71({'code':0xc8,'message':[_0x2fef04[_0x1a0a('0x62')],_0x1a0a('0x73')][_0x1a0a('0x13')]('\x20')});})['catch'](function(_0x4629b7){_0x2953c1(_0x5e1eaa[_0x1a0a('0x10')](0x1f5,[_0x2fef04[_0x1a0a('0x62')],_0x4629b7[_0x1a0a('0x18')][_0x1a0a('0x67')]()][_0x1a0a('0x13')]('\x20')));});}else{return _0x2953c1(_0x5e1eaa[_0x1a0a('0x10')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannels':function(_0x33a0eb){return new Promise(function(_0x239262,_0x1a903c){var _0x569ecb=_[_0x1a0a('0x5b')](_0x27077a[_0x1a0a('0x74')]);_0x239262({'count':_0x569ecb[_0x1a0a('0x5d')],'rows':_0x569ecb});});},'VoiceQueuesChannel':function(_0x2c757f){var _0xec020d=this;return new Promise(function(_0x471c4e,_0x3ef0cc){var _0x488f43=schema(properties[_0x1a0a('0x75')])[_0x1a0a('0x2')](_0x2c757f);if(_0x488f43[_0x1a0a('0x5d')]>0x0){return _0x3ef0cc(_0xec020d[_0x1a0a('0x10')](0x1f4,_[_0x1a0a('0x6b')](_0x488f43,_0x1a0a('0x18'))[_0x1a0a('0x13')](',\x20')));}var _0x56756e=_[_0x1a0a('0x6c')](_0x27077a['queueChannels'],{'uniqueid':_0x2c757f[_0x1a0a('0x62')]});if(_0x56756e){_0x471c4e(_0x56756e);}else{return _0x3ef0cc(_0xec020d[_0x1a0a('0x10')](0x1f5,_0x1a0a('0x76')));}});},'VoiceQueuesChannelHangup':function(_0x221201){var _0x24cca3=this;return new Promise(function(_0x55ce61,_0x21baea){if(ami[_0x1a0a('0xf')]()==![]){return _0x21baea(_0x24cca3[_0x1a0a('0x10')](0x1f4,[config[_0x1a0a('0x11')]['ip'],config[_0x1a0a('0x11')][_0x1a0a('0x12')],'ami\x20disconnected']['join']('\x20')));}var _0x4f5e24=schema(properties[_0x1a0a('0x77')])[_0x1a0a('0x2')](_0x221201);if(_0x4f5e24[_0x1a0a('0x5d')]>0x0){return _0x21baea(_0x24cca3['error'](0x1f4,_[_0x1a0a('0x6b')](_0x4f5e24,_0x1a0a('0x18'))[_0x1a0a('0x13')](',\x20')));}var _0x4ef8e7=_[_0x1a0a('0x6c')](_0x27077a[_0x1a0a('0x74')],{'uniqueid':_0x221201['uniqueid']});if(_0x4ef8e7&&_0x4ef8e7[_0x1a0a('0x5f')]){return ami['Action']({'action':'Hangup','channel':_0x4ef8e7[_0x1a0a('0x5f')]})[_0x1a0a('0x1d')](function(_0xeb1468){_0x55ce61({'code':0xc8,'message':[_0x221201[_0x1a0a('0x62')],_0xeb1468[_0x1a0a('0x18')][_0x1a0a('0x67')]()][_0x1a0a('0x13')]('\x20')});})[_0x1a0a('0x19')](function(_0x51d91f){_0x21baea(_0x24cca3[_0x1a0a('0x10')](0x1f5,[_0x221201[_0x1a0a('0x62')],_0x51d91f[_0x1a0a('0x18')]['toLowerCase']()][_0x1a0a('0x13')]('\x20')));});}else{return _0x21baea(_0x24cca3[_0x1a0a('0x10')](0x1f5,_0x1a0a('0x76')));}});},'VoiceQueuesChannelRedirect':function(_0x3e5323){var _0x59e463=this;return new Promise(function(_0x348d33,_0x5b35a8){if(ami[_0x1a0a('0xf')]()==![]){return _0x5b35a8(_0x59e463['error'](0x1f4,[config['asterisk']['ip'],config[_0x1a0a('0x11')][_0x1a0a('0x12')],_0x1a0a('0x1a')]['join']('\x20')));}var _0x190000=schema(properties[_0x1a0a('0x78')])[_0x1a0a('0x2')](_0x3e5323);if(_0x190000[_0x1a0a('0x5d')]>0x0){return _0x5b35a8(_0x59e463['error'](0x1f4,_[_0x1a0a('0x6b')](_0x190000,_0x1a0a('0x18'))[_0x1a0a('0x13')](',\x20')));}var _0x5c73ad=_[_0x1a0a('0x6c')](_0x27077a[_0x1a0a('0x74')],{'uniqueid':_0x3e5323[_0x1a0a('0x62')]});if(_0x5c73ad&&_0x5c73ad[_0x1a0a('0x5f')]){return ami[_0x1a0a('0x17')]({'action':_0x1a0a('0x79'),'channel':_0x5c73ad[_0x1a0a('0x5f')],'exten':_0x3e5323['exten'],'context':_0x3e5323[_0x1a0a('0x7a')]||_0x5c73ad['context'],'priority':0x1})[_0x1a0a('0x1d')](function(_0x367830){_0x348d33({'code':0xc8,'message':[_0x3e5323['uniqueid'],_0x367830['message']['toLowerCase']()][_0x1a0a('0x13')]('\x20')});})['catch'](function(_0x21146e){_0x5b35a8(_0x59e463[_0x1a0a('0x10')](0x1f5,[_0x3e5323[_0x1a0a('0x62')],_0x21146e['message']['toLowerCase']()][_0x1a0a('0x13')]('\x20')));});}else{return _0x5b35a8(_0x59e463[_0x1a0a('0x10')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'Agents':function(_0x47fb42){return new Promise(function(_0x32fbc5,_0x32bab1){var _0xe85959=_[_0x1a0a('0x5b')](_0x27077a[_0x1a0a('0xb')]);_0x32fbc5({'count':_0xe85959[_0x1a0a('0x5d')],'rows':_0xe85959});});},'Telephones':function(_0x577e25){return new Promise(function(_0x116934,_0xf2bdec){var _0x50f111=_[_0x1a0a('0x5b')](_0x27077a['telephones']);_0x116934({'count':_0x50f111[_0x1a0a('0x5d')],'rows':_0x50f111});});},'Trunks':function(_0x48c39f){return new Promise(function(_0x5187b7,_0x534aeb){var _0x3767ef=_['values'](_0x27077a['trunks']);_0x5187b7({'count':_0x3767ef[_0x1a0a('0x5d')],'rows':_0x3767ef});});},'OutboundChannels':function(_0x45d13a){return new Promise(function(_0x5f3fe6,_0x1a8641){var _0x2400a6=_[_0x1a0a('0x5b')](_0x27077a[_0x1a0a('0x7b')]);_0x5f3fe6({'count':_0x2400a6['length'],'rows':_0x2400a6});});},'Outbound':function(_0x2d1482){return new Promise(function(_0x552617,_0x2b6e84){_0x552617(_0x27077a[_0x1a0a('0x31')]);});},'Campaigns':function(_0x420de6){return new Promise(function(_0x4ca92c,_0x5b87dd){var _0x18e50a=_[_0x1a0a('0x5b')](_0x27077a[_0x1a0a('0x7c')]);_0x4ca92c({'count':_0x18e50a[_0x1a0a('0x5d')],'rows':_0x18e50a});});},'VoiceQueuesPreview':function(_0x3f0ec9){var _0x260122=this;return new Promise(function(_0x106b45,_0x92a816){_0x31e85b[_0x1a0a('0x7d')](_0x3f0ec9['id'])[_0x1a0a('0x1d')](function(_0x1431af){_0x106b45({'code':0xc8,'message':_0x1431af[_0x1a0a('0x18')]});})[_0x1a0a('0x19')](function(_0x20cebc){_0x92a816(_0x260122[_0x1a0a('0x10')](0x1f4,_0x20cebc[_0x1a0a('0x18')]));});});},'EventManager':function(_0x3b8bb7){var _0x575bd=this;return new Promise(function(_0x2bf3a,_0x22ad6d){if(!_0x3b8bb7[_0x1a0a('0x7e')]){return _0x22ad6d(_0x575bd[_0x1a0a('0x10')](0x1f4,'Event\x20name\x20mandatory'));}ami[_0x1a0a('0x7f')]('custom:'+_0x3b8bb7[_0x1a0a('0x7e')],_0x3b8bb7['message']);_0x2bf3a({'code':0xc8,'message':_0x3b8bb7});});},'FaxAccounts':function(_0x2c632f){return new Promise(function(_0x36eb72,_0x4cdbf1){var _0x59c6fb=_[_0x1a0a('0x5b')](_0x27077a[_0x1a0a('0x80')]);_0x36eb72({'count':_0x59c6fb[_0x1a0a('0x5d')],'rows':_0x59c6fb});});},'SendFax':function(_0x5d46b3){var _0x4a18dc=this;return new Promise(function(_0x94f975,_0x1c5f0c){_0x4b5573[_0x1a0a('0x81')](_0x5d46b3)[_0x1a0a('0x1d')](function(_0x59eafe){_0x94f975({'code':0xc8,'message':_0x59eafe[_0x1a0a('0x18')]});})[_0x1a0a('0x19')](function(_0x12e46f){_0x1c5f0c(_0x4a18dc[_0x1a0a('0x10')](0x1f4,_0x12e46f[_0x1a0a('0x18')]));});});},'CheckAfterSend':function(_0x159137){var _0x20d586=this;return new Promise(function(_0xe3e686,_0x2c8065){_0x4b5573[_0x1a0a('0x82')](_0x159137)[_0x1a0a('0x1d')](function(_0x269a94){_0xe3e686({'code':0xc8,'message':_0x269a94[_0x1a0a('0x18')]});})[_0x1a0a('0x19')](function(_0x3754a7){_0x2c8065(_0x20d586[_0x1a0a('0x10')](0x1f4,_0x3754a7['message']));});});}};var _0x57ef20=jayson[_0x1a0a('0x83')](_0x3fe29f)[_0x1a0a('0x84')]();_0x57ef20['on']('error',function(_0x1ac840){return _0xe59f97(_0x1ac840);});_0x57ef20[_0x1a0a('0x85')](0x232a,_0x1a0a('0x86'),function(){console[_0x1a0a('0x87')](_0x1a0a('0x88'),0x232a);return _0x2d4b04('RPC\x20listening\x20on\x20port:'+0x232a);});});};
\ No newline at end of file
index fdc22f0..ac36fae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x752d=['toLowerCase','merge','lodash','bluebird','../../../../config/logger','trigger','../../rpc/cmContact','localhost','redis','info','[CM][%s][%s]','stringify','emit','data1','data2','xmd-contactid','ListId','data3','split','$or','map','routeId','destcalleridnum','calleridnum','firstName','lastName','phone','mobile','fax','createdAt','scheduledAt','updatedAt','union','resolve','then','getContacts','length','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','join','data4','[CM][%s][%s]\x20Autocreate\x20enabled','isNil','<unknown>','calleridname','destcalleridname','Unknown','createContact','push','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','format','user:%s','trigger:%s','action'];(function(_0x2485f0,_0x4c7e92){var _0x541fb1=function(_0x59f00e){while(--_0x59f00e){_0x2485f0['push'](_0x2485f0['shift']());}};_0x541fb1(++_0x4c7e92);}(_0x752d,0xaa));var _0xd752=function(_0x2bb94b,_0x39ebc2){_0x2bb94b=_0x2bb94b-0x0;var _0x203521=_0x752d[_0x2bb94b];return _0x203521;};'use strict';var _=require(_0xd752('0x0'));var BPromise=require(_0xd752('0x1'));var Redis=require('ioredis');var util=require('util');var config=require('../../../../config/environment');var logger=require(_0xd752('0x2'))(_0xd752('0x3'));var cmContactRpc=require(_0xd752('0x4'));config['redis']=_['defaults'](config['redis'],{'host':_0xd752('0x5'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xd752('0x6')]));function emit(_0x22da26,_0x58e748,_0x3ab286,_0x15e3cd,_0x54229a){logger[_0xd752('0x7')](_0xd752('0x8'),_0x22da26,_0x58e748['id'],_0x3ab286,_0x15e3cd,JSON[_0xd752('0x9')](_0x54229a));io['to'](_0x3ab286)[_0xd752('0xa')](_0x15e3cd,_0x54229a);}exports['exec']=function(_0x19cca5,_0x29d7d1,_0x49e602,_0x40ebf2){var _0x8c0019,_0x4ef51a;var _0x41becf={};var _0x4842ca=Number(_0x49e602[_0xd752('0xb')]);var _0x54b2bf=_0x49e602[_0xd752('0xc')]?Boolean(Number(_0x49e602[_0xd752('0xc')])):![];var _0x50840a;if(_0x40ebf2['xmd-contactid']){_0x41becf['id']=_0x40ebf2[_0xd752('0xd')];}if(!_0x41becf['id']){_0x41becf[_0xd752('0xe')]=_0x4842ca;_0x50840a=_0x49e602[_0xd752('0xf')]&&_0x49e602[_0xd752('0xf')]!=='0'?_0x49e602['data3'][_0xd752('0x10')](','):['phone'];_0x41becf[_0xd752('0x11')]=_[_0xd752('0x12')](_0x50840a,function(_0x337a5b){var _0x1e9635={};_0x1e9635[_0x337a5b]=_0x40ebf2[_0xd752('0x13')]?_0x40ebf2[_0xd752('0x14')]:_0x40ebf2[_0xd752('0x15')];return _0x1e9635;});}var _0x3d940c=['id',_0xd752('0x16'),_0xd752('0x17'),_0xd752('0x18'),_0xd752('0x19'),_0xd752('0x1a'),_0xd752('0xe'),_0xd752('0x1b'),_0xd752('0x1c'),_0xd752('0x1d')];var _0x57fed1=_[_0xd752('0x1e')](_0x3d940c,_0x50840a);BPromise[_0xd752('0x1f')]()[_0xd752('0x20')](cmContactRpc[_0xd752('0x21')]({'attributes':_0x57fed1,'where':_0x41becf}))['then'](function(_0x50a254){_0x4ef51a=_0x50a254;if(!_['isEmpty'](_0x4ef51a)){if(_0x4ef51a[_0xd752('0x22')]===0x1){_0x8c0019=_0x4ef51a[0x0];logger[_0xd752('0x7')](_0xd752('0x23'),_0x40ebf2[_0xd752('0x24')],_0x29d7d1['id'],_0x8c0019['id']);}else{logger['info'](_0xd752('0x25'),_0x40ebf2['uniqueid'],_0x29d7d1['id'],_[_0xd752('0x12')](_0x4ef51a,'id')[_0xd752('0x26')](','));}return;}else{logger[_0xd752('0x7')]('[CM][%s][%s]\x20Contact\x20not\x20found',_0x40ebf2[_0xd752('0x24')],_0x29d7d1['id']);var _0x5bb4d3={'ListId':_0x4842ca};var _0x3ef683=_0x49e602[_0xd752('0x27')]&&_0x49e602[_0xd752('0x27')]!=='0'?_0x49e602[_0xd752('0x27')]:_0xd752('0x18');if(_0x54b2bf){logger[_0xd752('0x7')](_0xd752('0x28'),_0x40ebf2['uniqueid'],_0x29d7d1['id']);_0x5bb4d3[_0x3ef683]=_[_0xd752('0x29')](_0x40ebf2[_0xd752('0x13')])?_0x40ebf2['calleridnum']:_0x40ebf2[_0xd752('0x14')];if(_[_0xd752('0x29')](_0x40ebf2['routeId'])){_0x5bb4d3[_0xd752('0x16')]=_0x40ebf2['calleridname']&&_0x40ebf2['calleridname']!==_0xd752('0x2a')?_0x40ebf2[_0xd752('0x2b')]:'Unknown';}else{_0x5bb4d3['firstName']=_0x40ebf2['destcalleridname']&&_0x40ebf2['destcalleridname']!==_0xd752('0x2a')?_0x40ebf2[_0xd752('0x2c')]:_0xd752('0x2d');}return BPromise[_0xd752('0x1f')]()[_0xd752('0x20')](cmContactRpc[_0xd752('0x2e')](_0x5bb4d3))[_0xd752('0x20')](function(_0x130718){_0x8c0019=_0x130718;_0x4ef51a[_0xd752('0x2f')](_0x130718);if(_0x8c0019){logger[_0xd752('0x7')](_0xd752('0x30'),_0x40ebf2['uniqueid'],_0x29d7d1['id'],_0x8c0019['id']);}return;});}else{logger[_0xd752('0x7')](_0xd752('0x31'),_0x40ebf2['uniqueid'],_0x29d7d1['id']);_0x5bb4d3[_0x3ef683]=_['isNil'](_0x40ebf2[_0xd752('0x13')])?_0x40ebf2['calleridnum']:_0x40ebf2[_0xd752('0x14')];if(_['isNil'](_0x40ebf2[_0xd752('0x13')])){_0x5bb4d3['firstName']=_0x40ebf2[_0xd752('0x2b')]&&_0x40ebf2['calleridname']!==_0xd752('0x2a')?_0x40ebf2[_0xd752('0x2b')]:_0xd752('0x2d');}else{_0x5bb4d3['firstName']=_0x40ebf2['destcalleridname']&&_0x40ebf2[_0xd752('0x2c')]!==_0xd752('0x2a')?_0x40ebf2[_0xd752('0x2c')]:_0xd752('0x2d');}_0x8c0019=_0x5bb4d3;_0x4ef51a['push'](_0x5bb4d3);return;}}})[_0xd752('0x20')](function(){if(_0x19cca5){emit(_0x40ebf2[_0xd752('0x24')],_0x29d7d1,util[_0xd752('0x32')](_0xd752('0x33'),_0x19cca5['name']),util[_0xd752('0x32')](_0xd752('0x34'),_0x49e602[_0xd752('0x35')][_0xd752('0x36')]()),{'evt':_[_0xd752('0x37')](_0x40ebf2,{'autoCreate':_0x54b2bf}),'contact':_0x8c0019===undefined?{}:_0x8c0019,'contacts':_0x4ef51a[_0xd752('0x22')]===0x0?undefined:_0x4ef51a});}});};
\ No newline at end of file
+var _0x355c=['<unknown>','createContact','push','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','format','name','trigger:%s','action','merge','bluebird','ioredis','../../../../config/logger','trigger','../../rpc/cmContact','redis','socket.io-emitter','info','[CM][%s][%s]','exec','data1','data2','xmd-contactid','ListId','data3','split','$or','map','destcalleridnum','calleridnum','firstName','lastName','phone','mobile','fax','createdAt','scheduledAt','updatedAt','union','resolve','then','getContacts','isEmpty','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','routeId','calleridname','Unknown','destcalleridname'];(function(_0x13d5a5,_0x41b1a4){var _0x1b4122=function(_0x3cd411){while(--_0x3cd411){_0x13d5a5['push'](_0x13d5a5['shift']());}};_0x1b4122(++_0x41b1a4);}(_0x355c,0x122));var _0xc355=function(_0x266945,_0x5c5e8c){_0x266945=_0x266945-0x0;var _0x4477d5=_0x355c[_0x266945];return _0x4477d5;};'use strict';var _=require('lodash');var BPromise=require(_0xc355('0x0'));var Redis=require(_0xc355('0x1'));var util=require('util');var config=require('../../../../config/environment');var logger=require(_0xc355('0x2'))(_0xc355('0x3'));var cmContactRpc=require(_0xc355('0x4'));config[_0xc355('0x5')]=_['defaults'](config[_0xc355('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0xc355('0x6'))(new Redis(config[_0xc355('0x5')]));function emit(_0x59e024,_0x57f2bb,_0x5f1046,_0x476653,_0x2c5d41){logger[_0xc355('0x7')](_0xc355('0x8'),_0x59e024,_0x57f2bb['id'],_0x5f1046,_0x476653,JSON['stringify'](_0x2c5d41));io['to'](_0x5f1046)['emit'](_0x476653,_0x2c5d41);}exports[_0xc355('0x9')]=function(_0x4a3361,_0x99093c,_0x3fcfc8,_0x52df6d){var _0x3a71f6,_0x3a14a3;var _0x32b2a8={};var _0x199889=Number(_0x3fcfc8[_0xc355('0xa')]);var _0x33ebdf=_0x3fcfc8[_0xc355('0xb')]?Boolean(Number(_0x3fcfc8[_0xc355('0xb')])):![];var _0x1360f9;if(_0x52df6d[_0xc355('0xc')]){_0x32b2a8['id']=_0x52df6d['xmd-contactid'];}if(!_0x32b2a8['id']){_0x32b2a8[_0xc355('0xd')]=_0x199889;_0x1360f9=_0x3fcfc8[_0xc355('0xe')]&&_0x3fcfc8[_0xc355('0xe')]!=='0'?_0x3fcfc8[_0xc355('0xe')][_0xc355('0xf')](','):['phone'];_0x32b2a8[_0xc355('0x10')]=_[_0xc355('0x11')](_0x1360f9,function(_0x3a5725){var _0x26a9d5={};_0x26a9d5[_0x3a5725]=_0x52df6d['routeId']?_0x52df6d[_0xc355('0x12')]:_0x52df6d[_0xc355('0x13')];return _0x26a9d5;});}var _0x1d782d=['id',_0xc355('0x14'),_0xc355('0x15'),_0xc355('0x16'),_0xc355('0x17'),_0xc355('0x18'),_0xc355('0xd'),_0xc355('0x19'),_0xc355('0x1a'),_0xc355('0x1b')];var _0x18186e=_[_0xc355('0x1c')](_0x1d782d,_0x1360f9);BPromise[_0xc355('0x1d')]()[_0xc355('0x1e')](cmContactRpc[_0xc355('0x1f')]({'attributes':_0x18186e,'where':_0x32b2a8}))['then'](function(_0x47d11e){_0x3a14a3=_0x47d11e;if(!_[_0xc355('0x20')](_0x3a14a3)){if(_0x3a14a3[_0xc355('0x21')]===0x1){_0x3a71f6=_0x3a14a3[0x0];logger[_0xc355('0x7')](_0xc355('0x22'),_0x52df6d['uniqueid'],_0x99093c['id'],_0x3a71f6['id']);}else{logger[_0xc355('0x7')](_0xc355('0x23'),_0x52df6d[_0xc355('0x24')],_0x99093c['id'],_['map'](_0x3a14a3,'id')[_0xc355('0x25')](','));}return;}else{logger[_0xc355('0x7')](_0xc355('0x26'),_0x52df6d[_0xc355('0x24')],_0x99093c['id']);var _0x4fcc7d={'ListId':_0x199889};var _0x219e5b=_0x3fcfc8[_0xc355('0x27')]&&_0x3fcfc8['data4']!=='0'?_0x3fcfc8[_0xc355('0x27')]:_0xc355('0x16');if(_0x33ebdf){logger[_0xc355('0x7')](_0xc355('0x28'),_0x52df6d[_0xc355('0x24')],_0x99093c['id']);_0x4fcc7d[_0x219e5b]=_[_0xc355('0x29')](_0x52df6d[_0xc355('0x2a')])?_0x52df6d[_0xc355('0x13')]:_0x52df6d['destcalleridnum'];if(_[_0xc355('0x29')](_0x52df6d[_0xc355('0x2a')])){_0x4fcc7d[_0xc355('0x14')]=_0x52df6d[_0xc355('0x2b')]&&_0x52df6d['calleridname']!=='<unknown>'?_0x52df6d['calleridname']:_0xc355('0x2c');}else{_0x4fcc7d[_0xc355('0x14')]=_0x52df6d[_0xc355('0x2d')]&&_0x52df6d[_0xc355('0x2d')]!==_0xc355('0x2e')?_0x52df6d[_0xc355('0x2d')]:_0xc355('0x2c');}return BPromise[_0xc355('0x1d')]()[_0xc355('0x1e')](cmContactRpc[_0xc355('0x2f')](_0x4fcc7d))['then'](function(_0x4a1e4c){_0x3a71f6=_0x4a1e4c;_0x3a14a3[_0xc355('0x30')](_0x4a1e4c);if(_0x3a71f6){logger[_0xc355('0x7')](_0xc355('0x31'),_0x52df6d[_0xc355('0x24')],_0x99093c['id'],_0x3a71f6['id']);}return;});}else{logger[_0xc355('0x7')](_0xc355('0x32'),_0x52df6d[_0xc355('0x24')],_0x99093c['id']);_0x4fcc7d[_0x219e5b]=_[_0xc355('0x29')](_0x52df6d[_0xc355('0x2a')])?_0x52df6d[_0xc355('0x13')]:_0x52df6d[_0xc355('0x12')];if(_[_0xc355('0x29')](_0x52df6d[_0xc355('0x2a')])){_0x4fcc7d[_0xc355('0x14')]=_0x52df6d[_0xc355('0x2b')]&&_0x52df6d[_0xc355('0x2b')]!==_0xc355('0x2e')?_0x52df6d[_0xc355('0x2b')]:_0xc355('0x2c');}else{_0x4fcc7d[_0xc355('0x14')]=_0x52df6d['destcalleridname']&&_0x52df6d['destcalleridname']!==_0xc355('0x2e')?_0x52df6d[_0xc355('0x2d')]:_0xc355('0x2c');}_0x3a71f6=_0x4fcc7d;_0x3a14a3[_0xc355('0x30')](_0x4fcc7d);return;}}})[_0xc355('0x1e')](function(){if(_0x4a3361){emit(_0x52df6d[_0xc355('0x24')],_0x99093c,util[_0xc355('0x33')]('user:%s',_0x4a3361[_0xc355('0x34')]),util['format'](_0xc355('0x35'),_0x3fcfc8[_0xc355('0x36')]['toLowerCase']()),{'evt':_[_0xc355('0x37')](_0x52df6d,{'autoCreate':_0x33ebdf}),'contact':_0x3a71f6===undefined?{}:_0x3a71f6,'contacts':_0x3a14a3[_0xc355('0x21')]===0x0?undefined:_0x3a14a3});}});};
\ No newline at end of file
index e41ad44..6a0a43b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5c9=['custom:agentreject','custom:amd','custom:queuecallerabandon','custom:timeout','syncAgentDial','custom:dialconnect','custom:dialend','custom:newinteraction','custom:closedinteraction','custom:incomingmessage','custom:acceptmessage','custom:rejectmessage','emit','stringify','clone','undefined','motionChannel','voice','checkTriggers','prototype','hasOwnProperty','status','merge','variables','Actions','length','interface','action','toLowerCase','contactmanager','motionbar','data1','TemplateId','data2','html','render','template\x20not\x20found','buildUri','data3','uriLocation','windowWidth','isNil','800','data5','data6','winapp','winApplication','winArguments','format','name','trigger:%s:%s','user:%s','trigger:%s','exec','integration','queue','routeId','urlforward','script','parse','query','search','replace','channel','AllConditions','every','AnyConditions','some','checkConditions','field','account','chat','ChatWebsiteId','value','upperFirst','operator','AccountId','interaction','message','event','agent','membername','lastevent','util','lodash','url','mustache','./integration','./cmContact','trigger','../ami','redis','defaults','localhost','popup','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','custom:agentcalled','syncCustomEvent','custom:agentconnect','custom:agentringnoanswer','bind','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion'];(function(_0x4e198a,_0x5a6bad){var _0xb84bfe=function(_0x58d2b2){while(--_0x58d2b2){_0x4e198a['push'](_0x4e198a['shift']());}};_0xb84bfe(++_0x5a6bad);}(_0xa5c9,0x143));var _0x9a5c=function(_0x420b24,_0x382adc){_0x420b24=_0x420b24-0x0;var _0x4da552=_0xa5c9[_0x420b24];return _0x4da552;};'use strict';var util=require(_0x9a5c('0x0'));var _=require(_0x9a5c('0x1'));var url=require(_0x9a5c('0x2'));var Mustache=require(_0x9a5c('0x3'));var Redis=require('ioredis');var urlforward=require('./urlforward');var integration=require(_0x9a5c('0x4'));var cmContact=require(_0x9a5c('0x5'));var script=require('./script');var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x9a5c('0x6'));var ami=require(_0x9a5c('0x7'));config[_0x9a5c('0x8')]=_[_0x9a5c('0x9')](config['redis'],{'host':_0x9a5c('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x9a5c('0x8')]));var operators={'equals':function(_0x33fcd8,_0x5332fe){return _0x33fcd8==_0x5332fe;},'not_equals':function(_0x127932,_0x29cf77){return _0x127932!=_0x29cf77;}};var barAndWebActions=[_0x9a5c('0xb'),'url','winapp'];function Trigger(_0x2530fb){this[_0x9a5c('0xc')]=_0x2530fb[_0x9a5c('0xc')];this[_0x9a5c('0xd')]=_0x2530fb[_0x9a5c('0xd')];this[_0x9a5c('0xe')]=_0x2530fb[_0x9a5c('0xe')];this[_0x9a5c('0xf')]=_0x2530fb[_0x9a5c('0xf')];this[_0x9a5c('0x10')]=_0x2530fb[_0x9a5c('0x10')];this[_0x9a5c('0x11')]=_0x2530fb['zendeskAccounts'];this[_0x9a5c('0x12')]=_0x2530fb[_0x9a5c('0x12')];this[_0x9a5c('0x13')]=_0x2530fb['salesforceAccounts'];this[_0x9a5c('0x14')]=_0x2530fb[_0x9a5c('0x14')];this['zohoAccounts']=_0x2530fb[_0x9a5c('0x15')];this['deskAccounts']=_0x2530fb[_0x9a5c('0x16')];this['vtigerAccounts']=_0x2530fb[_0x9a5c('0x17')];this[_0x9a5c('0x18')]=_0x2530fb['servicenowAccounts'];this[_0x9a5c('0x19')]=_0x2530fb[_0x9a5c('0x19')];this[_0x9a5c('0x1a')]=_0x2530fb['freshsalesAccounts'];this[_0x9a5c('0x1b')]={'zendesk':this[_0x9a5c('0x11')],'salesforce':this[_0x9a5c('0x13')],'freshdesk':this['freshdeskAccounts'],'sugarcrm':this[_0x9a5c('0x14')],'zoho':this[_0x9a5c('0x15')],'desk':this['deskAccounts'],'vtiger':this[_0x9a5c('0x17')],'dynamics365':this[_0x9a5c('0x19')],'freshsales':this[_0x9a5c('0x1a')],'servicenow':this['servicenowAccounts']};ami['on'](_0x9a5c('0x1c'),this[_0x9a5c('0x1d')]['bind'](this));ami['on'](_0x9a5c('0x1e'),this[_0x9a5c('0x1d')]['bind'](this));ami['on'](_0x9a5c('0x1f'),this[_0x9a5c('0x1d')][_0x9a5c('0x20')](this));ami['on']('custom:agentcomplete',this[_0x9a5c('0x1d')][_0x9a5c('0x20')](this));ami['on'](_0x9a5c('0x21'),this[_0x9a5c('0x1d')][_0x9a5c('0x20')](this));ami['on'](_0x9a5c('0x22'),this['syncCustomEvent']['bind'](this));ami['on'](_0x9a5c('0x23'),this[_0x9a5c('0x1d')][_0x9a5c('0x20')](this));ami['on'](_0x9a5c('0x24'),this['syncCustomEvent'][_0x9a5c('0x20')](this));ami['on'](_0x9a5c('0x25'),this[_0x9a5c('0x1d')][_0x9a5c('0x20')](this));ami['on'](_0x9a5c('0x26'),this[_0x9a5c('0x1d')][_0x9a5c('0x20')](this));ami['on'](_0x9a5c('0x27'),this[_0x9a5c('0x1d')]['bind'](this));ami['on'](_0x9a5c('0x28'),this['syncCustomEvent']['bind'](this));ami['on']('custom:dialbegin',this[_0x9a5c('0x29')][_0x9a5c('0x20')](this));ami['on'](_0x9a5c('0x2a'),this[_0x9a5c('0x29')][_0x9a5c('0x20')](this));ami['on'](_0x9a5c('0x2b'),this['syncAgentDial'][_0x9a5c('0x20')](this));ami['on'](_0x9a5c('0x2c'),this[_0x9a5c('0x1d')]['bind'](this));ami['on'](_0x9a5c('0x2d'),this[_0x9a5c('0x1d')][_0x9a5c('0x20')](this));ami['on'](_0x9a5c('0x2e'),this['syncCustomEvent'][_0x9a5c('0x20')](this));ami['on']('custom:outgoingmessage',this[_0x9a5c('0x1d')]['bind'](this));ami['on'](_0x9a5c('0x2f'),this[_0x9a5c('0x1d')][_0x9a5c('0x20')](this));ami['on'](_0x9a5c('0x30'),this[_0x9a5c('0x1d')][_0x9a5c('0x20')](this));}Trigger['prototype'][_0x9a5c('0x31')]=function(_0x350bd4,_0x3afd1e,_0x2b1497){logger['info'](_0x350bd4,_0x3afd1e,JSON[_0x9a5c('0x32')](_0x2b1497));io['to'](_0x350bd4)[_0x9a5c('0x31')](_0x3afd1e,_0x2b1497);};Trigger['prototype'][_0x9a5c('0x1d')]=function(_0x2d02cf){var _0x574dd1=_[_0x9a5c('0x33')](_0x2d02cf);if(typeof _0x574dd1['motionChannel']===_0x9a5c('0x34')){_0x574dd1[_0x9a5c('0x35')]=_0x9a5c('0x36');}this[_0x9a5c('0x37')](_0x574dd1);};Trigger[_0x9a5c('0x38')]['syncAgentDial']=function(_0x5ca745){if(this['agents'][_0x5ca745['interface']]){this[_0x9a5c('0x1d')](_0x5ca745);}};Trigger[_0x9a5c('0x38')][_0x9a5c('0x37')]=function(_0x2918d9){var _0x27de82;for(var _0x465c33 in this[_0x9a5c('0xc')]){if(this[_0x9a5c('0xc')][_0x9a5c('0x39')](_0x465c33)){if(this[_0x9a5c('0xc')][_0x465c33][_0x9a5c('0x3a')]){_0x27de82=this['checkTrigger'](this[_0x9a5c('0xc')][_0x465c33],_0x2918d9);if(_0x27de82){_[_0x9a5c('0x3b')](_0x2918d9,_0x2918d9[_0x9a5c('0x3c')]);for(var _0x1f9e8d=0x0,_0x4b4a6e,_0x4217c4,_0x3394a8;_0x1f9e8d<this['triggers'][_0x465c33][_0x9a5c('0x3d')][_0x9a5c('0x3e')];_0x1f9e8d+=0x1){_0x4b4a6e=this[_0x9a5c('0xc')][_0x465c33][_0x9a5c('0x3d')][_0x1f9e8d];if(this[_0x9a5c('0xd')][_0x2918d9[_0x9a5c('0x3f')]]){switch(_0x4b4a6e[_0x9a5c('0x40')][_0x9a5c('0x41')]()){case _0x9a5c('0x42'):break;case _0x9a5c('0x43'):case'browser':var _0x5886a1={};switch(barAndWebActions[_0x4b4a6e[_0x9a5c('0x44')]]){case _0x9a5c('0xb'):_0x5886a1[_0x9a5c('0x45')]=_0x4b4a6e[_0x9a5c('0x46')];_0x5886a1[_0x9a5c('0x47')]=this[_0x9a5c('0xf')][_0x4b4a6e[_0x9a5c('0x46')]]?Mustache[_0x9a5c('0x48')](this[_0x9a5c('0xf')][_0x4b4a6e[_0x9a5c('0x46')]][_0x9a5c('0x47')],_0x2918d9):_0x9a5c('0x49');break;case'url':_0x5886a1['uri']=this[_0x9a5c('0x4a')](_0x4b4a6e[_0x9a5c('0x46')],_0x2918d9,_['isNil'](_0x4b4a6e[_0x9a5c('0x4b')])?!![]:parseInt(_0x4b4a6e[_0x9a5c('0x4b')],0xa));if(_['isNil'](_0x4b4a6e['data4'])){_0x5886a1['location']='0';}else{_0x5886a1[_0x9a5c('0x4c')]=_0x4b4a6e['data4'];_0x5886a1[_0x9a5c('0x4d')]=_[_0x9a5c('0x4e')](_0x4b4a6e['data5'])?_0x9a5c('0x4f'):_0x4b4a6e[_0x9a5c('0x50')];_0x5886a1['windowHeight']=_[_0x9a5c('0x4e')](_0x4b4a6e[_0x9a5c('0x51')])?'600':_0x4b4a6e['data6'];}break;case _0x9a5c('0x52'):_0x5886a1[_0x9a5c('0x53')]=_0x4b4a6e[_0x9a5c('0x46')]?Mustache['render'](_0x4b4a6e[_0x9a5c('0x46')],_0x2918d9):'';_0x5886a1[_0x9a5c('0x54')]=_0x4b4a6e[_0x9a5c('0x4b')]?Mustache[_0x9a5c('0x48')](_0x4b4a6e['data3'],_0x2918d9):'';break;}this[_0x9a5c('0x31')](util[_0x9a5c('0x55')]('user:%s',this[_0x9a5c('0xd')][_0x2918d9[_0x9a5c('0x3f')]][_0x9a5c('0x56')]),util[_0x9a5c('0x55')](_0x9a5c('0x57'),_0x4b4a6e[_0x9a5c('0x40')][_0x9a5c('0x41')](),barAndWebActions[_0x4b4a6e['data1']]),_[_0x9a5c('0x3b')](_0x5886a1,_0x2918d9));break;case'jscripty':this[_0x9a5c('0x31')](util['format'](_0x9a5c('0x58'),this[_0x9a5c('0xd')][_0x2918d9['interface']][_0x9a5c('0x56')]),util['format']('trigger:%s',_0x4b4a6e[_0x9a5c('0x40')][_0x9a5c('0x41')]()),_[_0x9a5c('0x3b')]({'ProjectId':parseInt(_0x4b4a6e['data1'],0xa)},_0x2918d9));break;default:this[_0x9a5c('0x31')](util[_0x9a5c('0x55')](_0x9a5c('0x58'),this[_0x9a5c('0xd')][_0x2918d9[_0x9a5c('0x3f')]][_0x9a5c('0x56')]),util[_0x9a5c('0x55')](_0x9a5c('0x59'),_0x4b4a6e[_0x9a5c('0x40')][_0x9a5c('0x41')]()),_['merge']({},_0x4b4a6e,_0x2918d9));}}switch(_0x4b4a6e['action'][_0x9a5c('0x41')]()){case _0x9a5c('0x42'):cmContact[_0x9a5c('0x5a')](this[_0x9a5c('0xd')][_0x2918d9['interface']],this['triggers'][_0x465c33],_0x4b4a6e,_0x2918d9);break;case _0x9a5c('0x5b'):integration[_0x9a5c('0x5a')](_0x4b4a6e,_0x2918d9,this[_0x9a5c('0x1b')],this[_0x9a5c('0xd')][_0x2918d9['interface']],this[_0x9a5c('0xe')][_0x2918d9[_0x9a5c('0x5c')]],this['voiceExtensions'][_0x2918d9[_0x9a5c('0x5d')]]);break;case _0x9a5c('0x5e'):urlforward[_0x9a5c('0x5a')](_0x4b4a6e,_0x2918d9);break;case _0x9a5c('0x5f'):script['exec'](_0x4b4a6e,_0x2918d9);break;}}}}}}};Trigger['prototype']['buildUri']=function(_0x3802f6,_0x3e3a78,_0x546083){var _0x40b041=url[_0x9a5c('0x60')](Mustache[_0x9a5c('0x48')](_0x3802f6,_0x3e3a78),!![]);if(_0x546083){_['merge'](_0x40b041[_0x9a5c('0x61')],_0x3e3a78);}delete _0x40b041[_0x9a5c('0x62')];var _0x2d8d6f=url[_0x9a5c('0x55')](_0x40b041);_0x2d8d6f=_0x2d8d6f[_0x9a5c('0x63')](/\/\?/g,'?');return _0x2d8d6f;};Trigger[_0x9a5c('0x38')]['checkTrigger']=function(_0x1fd30b,_0x36f5f3){var _0x465919=!![];var _0xaaa426=!![];var _0x29c80d=![];if(_0x1fd30b[_0x9a5c('0x64')]===_0x36f5f3['motionChannel']){_0x29c80d=!![];}if(_0x1fd30b[_0x9a5c('0x65')][_0x9a5c('0x3e')]){_0x465919=_[_0x9a5c('0x66')](_0x1fd30b[_0x9a5c('0x65')],this['checkConditions'](_0x36f5f3,_0x1fd30b[_0x9a5c('0x64')]));}if(_0x1fd30b[_0x9a5c('0x67')][_0x9a5c('0x3e')]){_0xaaa426=_[_0x9a5c('0x68')](_0x1fd30b[_0x9a5c('0x67')],this['checkConditions'](_0x36f5f3,_0x1fd30b[_0x9a5c('0x64')]));}return _0x29c80d&&_0x465919&&_0xaaa426;};Trigger[_0x9a5c('0x38')][_0x9a5c('0x69')]=function(_0x33a39f,_0x28805d){return function(_0x1b385c){switch(_0x1b385c[_0x9a5c('0x6a')]){case _0x9a5c('0x6b'):if(_0x33a39f['channel']===_0x28805d){if(_0x28805d===_0x9a5c('0x6c')){return _0x33a39f[_0x9a5c('0x6d')]?operators[_0x1b385c['operator']](Number(_0x1b385c[_0x9a5c('0x6e')]),_0x33a39f['ChatWebsiteId']):![];}else{return _0x33a39f[_[_0x9a5c('0x6f')](_0x28805d)+'AccountId']?operators[_0x1b385c[_0x9a5c('0x70')]](Number(_0x1b385c[_0x9a5c('0x6e')]),_0x33a39f[_['upperFirst'](_0x28805d)+_0x9a5c('0x71')]):![];}}break;case _0x9a5c('0x72'):case _0x9a5c('0x73'):if(_0x33a39f[_0x9a5c('0x64')]===_0x28805d){return _0x33a39f[_0x9a5c('0x74')]?operators[_0x1b385c[_0x9a5c('0x70')]](_0x1b385c[_0x9a5c('0x6e')],_0x33a39f[_0x9a5c('0x74')]):![];}break;case _0x9a5c('0x5c'):return _0x33a39f[_0x9a5c('0x5c')]?operators[_0x1b385c[_0x9a5c('0x70')]](_0x1b385c[_0x9a5c('0x6e')],_0x33a39f['queue']):![];case _0x9a5c('0x75'):return _0x33a39f[_0x9a5c('0x76')]?operators[_0x1b385c[_0x9a5c('0x70')]](_0x1b385c[_0x9a5c('0x6e')],_0x33a39f[_0x9a5c('0x76')]):![];case _0x9a5c('0x77'):return _0x33a39f[_0x9a5c('0x77')]?operators[_0x1b385c[_0x9a5c('0x70')]](_0x1b385c[_0x9a5c('0x6e')],_0x33a39f[_0x9a5c('0x77')]):![];case _0x9a5c('0x5d'):return _0x33a39f[_0x9a5c('0x5d')]?operators[_0x1b385c['operator']](_0x1b385c[_0x9a5c('0x6e')],_0x33a39f[_0x9a5c('0x5d')]):![];}return![];};};module['exports']=Trigger;
\ No newline at end of file
+var _0xc736=['custom:agentconnect','custom:agentringnoanswer','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentcongestion','custom:agentreject','custom:amd','custom:timeout','custom:dialbegin','syncAgentDial','custom:dialconnect','custom:dialend','custom:newinteraction','custom:closedinteraction','custom:outgoingmessage','custom:acceptmessage','prototype','info','stringify','emit','clone','interface','checkTriggers','hasOwnProperty','status','merge','variables','Actions','length','action','contactmanager','motionbar','data1','TemplateId','data2','render','html','template\x20not\x20found','uri','data3','isNil','data4','location','uriLocation','windowWidth','data5','800','windowHeight','data6','winapp','winArguments','format','trigger:%s:%s','toLowerCase','jscripty','user:%s','name','trigger:%s','exec','integration','queue','routeId','urlforward','script','buildUri','parse','search','checkTrigger','AllConditions','every','checkConditions','channel','AnyConditions','some','field','account','chat','ChatWebsiteId','operator','value','upperFirst','AccountId','interaction','message','event','agent','membername','lastevent','exports','lodash','url','mustache','ioredis','./urlforward','./cmContact','./script','trigger','../ami','redis','defaults','localhost','socket.io-emitter','popup','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','syncCustomEvent','bind'];(function(_0x339484,_0x170ec3){var _0x9ce0cc=function(_0xe944c8){while(--_0xe944c8){_0x339484['push'](_0x339484['shift']());}};_0x9ce0cc(++_0x170ec3);}(_0xc736,0xd4));var _0x6c73=function(_0x1bd90f,_0xd6debc){_0x1bd90f=_0x1bd90f-0x0;var _0x25d38b=_0xc736[_0x1bd90f];return _0x25d38b;};'use strict';var util=require('util');var _=require(_0x6c73('0x0'));var url=require(_0x6c73('0x1'));var Mustache=require(_0x6c73('0x2'));var Redis=require(_0x6c73('0x3'));var urlforward=require(_0x6c73('0x4'));var integration=require('./integration');var cmContact=require(_0x6c73('0x5'));var script=require(_0x6c73('0x6'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x6c73('0x7'));var ami=require(_0x6c73('0x8'));config[_0x6c73('0x9')]=_[_0x6c73('0xa')](config['redis'],{'host':_0x6c73('0xb'),'port':0x18eb});var io=require(_0x6c73('0xc'))(new Redis(config[_0x6c73('0x9')]));var operators={'equals':function(_0x532110,_0x3f9667){return _0x532110==_0x3f9667;},'not_equals':function(_0x23452a,_0x5f57a5){return _0x23452a!=_0x5f57a5;}};var barAndWebActions=[_0x6c73('0xd'),_0x6c73('0x1'),'winapp'];function Trigger(_0x1d0345){this[_0x6c73('0xe')]=_0x1d0345['triggers'];this[_0x6c73('0xf')]=_0x1d0345[_0x6c73('0xf')];this[_0x6c73('0x10')]=_0x1d0345['voiceQueues'];this['templates']=_0x1d0345[_0x6c73('0x11')];this[_0x6c73('0x12')]=_0x1d0345[_0x6c73('0x12')];this[_0x6c73('0x13')]=_0x1d0345['zendeskAccounts'];this[_0x6c73('0x14')]=_0x1d0345[_0x6c73('0x14')];this[_0x6c73('0x15')]=_0x1d0345[_0x6c73('0x15')];this[_0x6c73('0x16')]=_0x1d0345[_0x6c73('0x16')];this[_0x6c73('0x17')]=_0x1d0345[_0x6c73('0x17')];this[_0x6c73('0x18')]=_0x1d0345['deskAccounts'];this[_0x6c73('0x19')]=_0x1d0345['vtigerAccounts'];this[_0x6c73('0x1a')]=_0x1d0345[_0x6c73('0x1a')];this[_0x6c73('0x1b')]=_0x1d0345[_0x6c73('0x1b')];this['freshsalesAccounts']=_0x1d0345[_0x6c73('0x1c')];this[_0x6c73('0x1d')]={'zendesk':this['zendeskAccounts'],'salesforce':this[_0x6c73('0x15')],'freshdesk':this[_0x6c73('0x14')],'sugarcrm':this[_0x6c73('0x16')],'zoho':this[_0x6c73('0x17')],'desk':this[_0x6c73('0x18')],'vtiger':this['vtigerAccounts'],'dynamics365':this[_0x6c73('0x1b')],'freshsales':this[_0x6c73('0x1c')],'servicenow':this[_0x6c73('0x1a')]};ami['on']('custom:agentcalled',this[_0x6c73('0x1e')][_0x6c73('0x1f')](this));ami['on'](_0x6c73('0x20'),this[_0x6c73('0x1e')][_0x6c73('0x1f')](this));ami['on'](_0x6c73('0x21'),this[_0x6c73('0x1e')][_0x6c73('0x1f')](this));ami['on'](_0x6c73('0x22'),this['syncCustomEvent'][_0x6c73('0x1f')](this));ami['on'](_0x6c73('0x23'),this['syncCustomEvent'][_0x6c73('0x1f')](this));ami['on'](_0x6c73('0x24'),this[_0x6c73('0x1e')]['bind'](this));ami['on']('custom:agentbusy',this['syncCustomEvent'][_0x6c73('0x1f')](this));ami['on'](_0x6c73('0x25'),this['syncCustomEvent'][_0x6c73('0x1f')](this));ami['on'](_0x6c73('0x26'),this[_0x6c73('0x1e')]['bind'](this));ami['on'](_0x6c73('0x27'),this['syncCustomEvent'][_0x6c73('0x1f')](this));ami['on']('custom:queuecallerabandon',this[_0x6c73('0x1e')][_0x6c73('0x1f')](this));ami['on'](_0x6c73('0x28'),this[_0x6c73('0x1e')]['bind'](this));ami['on'](_0x6c73('0x29'),this[_0x6c73('0x2a')][_0x6c73('0x1f')](this));ami['on'](_0x6c73('0x2b'),this[_0x6c73('0x2a')]['bind'](this));ami['on'](_0x6c73('0x2c'),this['syncAgentDial'][_0x6c73('0x1f')](this));ami['on'](_0x6c73('0x2d'),this[_0x6c73('0x1e')][_0x6c73('0x1f')](this));ami['on'](_0x6c73('0x2e'),this[_0x6c73('0x1e')][_0x6c73('0x1f')](this));ami['on']('custom:incomingmessage',this['syncCustomEvent'][_0x6c73('0x1f')](this));ami['on'](_0x6c73('0x2f'),this[_0x6c73('0x1e')][_0x6c73('0x1f')](this));ami['on'](_0x6c73('0x30'),this[_0x6c73('0x1e')]['bind'](this));ami['on']('custom:rejectmessage',this[_0x6c73('0x1e')][_0x6c73('0x1f')](this));}Trigger[_0x6c73('0x31')]['emit']=function(_0x51f98a,_0x18d4e9,_0xe40d58){logger[_0x6c73('0x32')](_0x51f98a,_0x18d4e9,JSON[_0x6c73('0x33')](_0xe40d58));io['to'](_0x51f98a)[_0x6c73('0x34')](_0x18d4e9,_0xe40d58);};Trigger['prototype'][_0x6c73('0x1e')]=function(_0x216ea6){var _0x1b8833=_[_0x6c73('0x35')](_0x216ea6);this['checkTriggers'](_0x1b8833);};Trigger['prototype'][_0x6c73('0x2a')]=function(_0x392398){if(this['agents'][_0x392398[_0x6c73('0x36')]]){this[_0x6c73('0x1e')](_0x392398);}};Trigger[_0x6c73('0x31')][_0x6c73('0x37')]=function(_0x553c3c){var _0x533ffb;for(var _0x10cfb4 in this['triggers']){if(this['triggers'][_0x6c73('0x38')](_0x10cfb4)){if(this[_0x6c73('0xe')][_0x10cfb4][_0x6c73('0x39')]){_0x533ffb=this['checkTrigger'](this[_0x6c73('0xe')][_0x10cfb4],_0x553c3c);if(_0x533ffb){_[_0x6c73('0x3a')](_0x553c3c,_0x553c3c[_0x6c73('0x3b')]);for(var _0x3b686a=0x0,_0x301557,_0xa9c4e5,_0x10b00c;_0x3b686a<this[_0x6c73('0xe')][_0x10cfb4][_0x6c73('0x3c')][_0x6c73('0x3d')];_0x3b686a+=0x1){_0x301557=this[_0x6c73('0xe')][_0x10cfb4][_0x6c73('0x3c')][_0x3b686a];if(this[_0x6c73('0xf')][_0x553c3c['interface']]){switch(_0x301557[_0x6c73('0x3e')]['toLowerCase']()){case _0x6c73('0x3f'):break;case _0x6c73('0x40'):case'browser':var _0x479ab9={};switch(barAndWebActions[_0x301557[_0x6c73('0x41')]]){case _0x6c73('0xd'):_0x479ab9[_0x6c73('0x42')]=_0x301557[_0x6c73('0x43')];_0x479ab9['html']=this[_0x6c73('0x11')][_0x301557[_0x6c73('0x43')]]?Mustache[_0x6c73('0x44')](this[_0x6c73('0x11')][_0x301557['data2']][_0x6c73('0x45')],_0x553c3c):_0x6c73('0x46');break;case _0x6c73('0x1'):_0x479ab9[_0x6c73('0x47')]=this['buildUri'](_0x301557[_0x6c73('0x43')],_0x553c3c,_['isNil'](_0x301557[_0x6c73('0x48')])?!![]:parseInt(_0x301557[_0x6c73('0x48')],0xa));if(_[_0x6c73('0x49')](_0x301557[_0x6c73('0x4a')])){_0x479ab9[_0x6c73('0x4b')]='0';}else{_0x479ab9[_0x6c73('0x4c')]=_0x301557[_0x6c73('0x4a')];_0x479ab9[_0x6c73('0x4d')]=_[_0x6c73('0x49')](_0x301557[_0x6c73('0x4e')])?_0x6c73('0x4f'):_0x301557[_0x6c73('0x4e')];_0x479ab9[_0x6c73('0x50')]=_['isNil'](_0x301557[_0x6c73('0x51')])?'600':_0x301557[_0x6c73('0x51')];}break;case _0x6c73('0x52'):_0x479ab9['winApplication']=_0x301557[_0x6c73('0x43')]?Mustache[_0x6c73('0x44')](_0x301557[_0x6c73('0x43')],_0x553c3c):'';_0x479ab9[_0x6c73('0x53')]=_0x301557['data3']?Mustache[_0x6c73('0x44')](_0x301557['data3'],_0x553c3c):'';break;}this[_0x6c73('0x34')](util[_0x6c73('0x54')]('user:%s',this[_0x6c73('0xf')][_0x553c3c[_0x6c73('0x36')]]['name']),util[_0x6c73('0x54')](_0x6c73('0x55'),_0x301557[_0x6c73('0x3e')][_0x6c73('0x56')](),barAndWebActions[_0x301557['data1']]),_['merge'](_0x479ab9,_0x553c3c));break;case _0x6c73('0x57'):this['emit'](util['format'](_0x6c73('0x58'),this['agents'][_0x553c3c['interface']][_0x6c73('0x59')]),util[_0x6c73('0x54')](_0x6c73('0x5a'),_0x301557['action'][_0x6c73('0x56')]()),_['merge']({'ProjectId':parseInt(_0x301557[_0x6c73('0x41')],0xa)},_0x553c3c));break;default:this[_0x6c73('0x34')](util[_0x6c73('0x54')](_0x6c73('0x58'),this[_0x6c73('0xf')][_0x553c3c[_0x6c73('0x36')]][_0x6c73('0x59')]),util[_0x6c73('0x54')]('trigger:%s',_0x301557['action'][_0x6c73('0x56')]()),_[_0x6c73('0x3a')]({},_0x301557,_0x553c3c));}}switch(_0x301557[_0x6c73('0x3e')][_0x6c73('0x56')]()){case'contactmanager':cmContact[_0x6c73('0x5b')](this[_0x6c73('0xf')][_0x553c3c[_0x6c73('0x36')]],this['triggers'][_0x10cfb4],_0x301557,_0x553c3c);break;case _0x6c73('0x5c'):integration['exec'](_0x301557,_0x553c3c,this['accounts'],this[_0x6c73('0xf')][_0x553c3c[_0x6c73('0x36')]],this[_0x6c73('0x10')][_0x553c3c[_0x6c73('0x5d')]],this[_0x6c73('0x12')][_0x553c3c[_0x6c73('0x5e')]]);break;case _0x6c73('0x5f'):urlforward[_0x6c73('0x5b')](_0x301557,_0x553c3c);break;case _0x6c73('0x60'):script[_0x6c73('0x5b')](_0x301557,_0x553c3c);break;}}}}}}};Trigger['prototype'][_0x6c73('0x61')]=function(_0x276df7,_0x1ff88e,_0x1e3f10){var _0x5c8b39=url[_0x6c73('0x62')](Mustache['render'](_0x276df7,_0x1ff88e),!![]);if(_0x1e3f10){_[_0x6c73('0x3a')](_0x5c8b39['query'],_0x1ff88e);}delete _0x5c8b39[_0x6c73('0x63')];var _0x3fb34d=url[_0x6c73('0x54')](_0x5c8b39);_0x3fb34d=_0x3fb34d['replace'](/\/\?/g,'?');return _0x3fb34d;};Trigger[_0x6c73('0x31')][_0x6c73('0x64')]=function(_0x5860e6,_0x3ea2cb){var _0x17ddf0=!![],_0x355423=!![];if(_0x5860e6[_0x6c73('0x65')][_0x6c73('0x3d')]){_0x17ddf0=_[_0x6c73('0x66')](_0x5860e6[_0x6c73('0x65')],this[_0x6c73('0x67')](_0x3ea2cb,_0x5860e6[_0x6c73('0x68')]));}if(_0x5860e6[_0x6c73('0x69')][_0x6c73('0x3d')]){_0x355423=_[_0x6c73('0x6a')](_0x5860e6['AnyConditions'],this['checkConditions'](_0x3ea2cb,_0x5860e6[_0x6c73('0x68')]));}return _0x17ddf0&&_0x355423;};Trigger[_0x6c73('0x31')][_0x6c73('0x67')]=function(_0x3afbfc,_0x38b5b4){return function(_0x1b5959){switch(_0x1b5959[_0x6c73('0x6b')]){case _0x6c73('0x6c'):if(_0x3afbfc['channel']===_0x38b5b4){if(_0x38b5b4===_0x6c73('0x6d')){return _0x3afbfc[_0x6c73('0x6e')]?operators[_0x1b5959[_0x6c73('0x6f')]](Number(_0x1b5959[_0x6c73('0x70')]),_0x3afbfc[_0x6c73('0x6e')]):![];}else{return _0x3afbfc[_[_0x6c73('0x71')](_0x38b5b4)+_0x6c73('0x72')]?operators[_0x1b5959[_0x6c73('0x6f')]](Number(_0x1b5959[_0x6c73('0x70')]),_0x3afbfc[_[_0x6c73('0x71')](_0x38b5b4)+_0x6c73('0x72')]):![];}}break;case _0x6c73('0x73'):case _0x6c73('0x74'):if(_0x3afbfc[_0x6c73('0x68')]===_0x38b5b4){return _0x3afbfc['event']?operators[_0x1b5959[_0x6c73('0x6f')]](_0x1b5959[_0x6c73('0x70')],_0x3afbfc[_0x6c73('0x75')]):![];}break;case'queue':return _0x3afbfc['queue']?operators[_0x1b5959[_0x6c73('0x6f')]](_0x1b5959[_0x6c73('0x70')],_0x3afbfc['queue']):![];case _0x6c73('0x76'):return _0x3afbfc[_0x6c73('0x77')]?operators[_0x1b5959[_0x6c73('0x6f')]](_0x1b5959[_0x6c73('0x70')],_0x3afbfc[_0x6c73('0x77')]):![];case _0x6c73('0x78'):return _0x3afbfc[_0x6c73('0x78')]?operators[_0x1b5959[_0x6c73('0x6f')]](_0x1b5959[_0x6c73('0x70')],_0x3afbfc[_0x6c73('0x78')]):![];case _0x6c73('0x5e'):return _0x3afbfc[_0x6c73('0x5e')]?operators[_0x1b5959[_0x6c73('0x6f')]](_0x1b5959[_0x6c73('0x70')],_0x3afbfc[_0x6c73('0x5e')]):![];}return![];};};module[_0x6c73('0x79')]=Trigger;
\ No newline at end of file
index 5ff9185..9a8d493 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['debug','[HTTP]','stringify','GET','authType','basic','%s:%s','username','token','%s/token:%s','toString','base64','Searching\x20enduser\x20with\x20phone','Enduser\x20found!','_embedded','entries','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/customers','POST','length','forEach','includes','picklist','type','nameField','customField','toLowerCase','content','string','idField','custom_fields','variable','variableName','customVariable','Variable','name','priority','merge','xCALLY','Motion','CTI','concat','Tags','getString','Descriptions','/api/v2/users/%d','user','Fields','stripTrailingSlash','serverUrl','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','calleridname','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','integrationTab','user:%s','trigger:desk:display','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','error','Desk\x20account\x20type\x20not\x20recognized','outbound','recordingFormat','none','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','%s/agent/tickets/%s','catch','unmanaged','monitor_format','lastevent','toUpperCase','Recording\x20is\x20enabled!','lodash','request-promise','./util','../../../../config/environment','desk','redis','defaults','localhost','socket.io-emitter','application/json','validateEmail','info','Getting\x20agent\x20with\x20email','format','%s/users','remoteUri','then','total_entries','find','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me'];(function(_0x3dc969,_0x224fea){var _0x52725a=function(_0x49aec2){while(--_0x49aec2){_0x3dc969['push'](_0x3dc969['shift']());}};_0x52725a(++_0x224fea);}(_0x55ca,0x126));var _0xa55c=function(_0x3212cc,_0x3bfe46){_0x3212cc=_0x3212cc-0x0;var _0x3ecd2c=_0x55ca[_0x3212cc];return _0x3ecd2c;};'use strict';var _=require(_0xa55c('0x0'));var rp=require(_0xa55c('0x1'));var md5=require('md5');var util=require('util');var Redis=require('ioredis');var intUtil=require(_0xa55c('0x2'));var config=require(_0xa55c('0x3'));var logger=require('../../../../config/logger')(_0xa55c('0x4'));config[_0xa55c('0x5')]=_[_0xa55c('0x6')](config[_0xa55c('0x5')],{'host':_0xa55c('0x7'),'port':0x18eb});var io=require(_0xa55c('0x8'))(new Redis(config[_0xa55c('0x5')]));function emit(_0x4d0624,_0x2121fd,_0x2537f0){io['to'](_0x4d0624)['emit'](_0x2121fd,_0x2537f0);}var headers={'Content-Type':_0xa55c('0x9'),'Accept':_0xa55c('0x9')};function getUser(_0x52a3bc,_0x5849ad){if(intUtil[_0xa55c('0xa')](_0x5849ad)===!![]){logger[_0xa55c('0xb')](_0xa55c('0xc'),_0x5849ad);return request({'uri':util[_0xa55c('0xd')](_0xa55c('0xe'),_0x52a3bc[_0xa55c('0xf')])})[_0xa55c('0x10')](function(_0x70c2de){if(_0x70c2de[_0xa55c('0x11')]){return _[_0xa55c('0x12')](_0x70c2de['_embedded']['entries'],{'email':_0x5849ad});}})[_0xa55c('0x10')](function(_0x576044){if(_0x576044){logger['info']('Agent\x20found!');return _0x576044;}else{logger[_0xa55c('0xb')](_0xa55c('0x13'));return request({'uri':util[_0xa55c('0xd')](_0xa55c('0x14'),_0x52a3bc[_0xa55c('0xf')])});}});}else{logger[_0xa55c('0xb')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xa55c('0xd')](_0xa55c('0x14'),_0x52a3bc[_0xa55c('0xf')])});}}function request(_0x31e10d){logger[_0xa55c('0x15')](_0xa55c('0x16'),JSON[_0xa55c('0x17')](_0x31e10d));return rp(_[_0xa55c('0x6')](_0x31e10d,{'method':_0xa55c('0x18'),'headers':headers,'json':!![]}));}function getAuth(_0x4cee3c){var _0x3d4c9e;if(_0x4cee3c[_0xa55c('0x19')]===_0xa55c('0x1a')){_0x3d4c9e=util[_0xa55c('0xd')](_0xa55c('0x1b'),_0x4cee3c[_0xa55c('0x1c')],_0x4cee3c['password']);}else if(_0x4cee3c['authType']===_0xa55c('0x1d')){_0x3d4c9e=util[_0xa55c('0xd')](_0xa55c('0x1e'),_0x4cee3c['username'],_0x4cee3c[_0xa55c('0x1d')]);}return util[_0xa55c('0xd')]('Basic\x20%s',new Buffer(_0x3d4c9e)[_0xa55c('0x1f')](_0xa55c('0x20')));}function getEndUser(_0x940f28,_0x1965f1,_0x234372){logger['info'](_0xa55c('0x21'),_0x234372);return request({'uri':util['format']('%s/customers/search',_0x940f28['remoteUri']),'qs':{'phone':_0x234372}})[_0xa55c('0x10')](function(_0x54b038){if(_0x54b038[_0xa55c('0x11')]){logger[_0xa55c('0xb')](_0xa55c('0x22'));return _0x54b038[_0xa55c('0x23')][_0xa55c('0x24')][0x0];}else{logger[_0xa55c('0xb')](_0xa55c('0x25'));return request({'uri':util[_0xa55c('0xd')](_0xa55c('0x26'),_0x940f28[_0xa55c('0xf')]),'method':_0xa55c('0x27'),'body':{'first_name':_0x1965f1,'title':_0x1965f1,'phone_numbers':[{'type':'work','value':_0x234372}]}});}});}function getTags(_0x430d55,_0x28814f){var _0x1c9f6b=[];if(_0x430d55&&_0x430d55[_0xa55c('0x28')]>0x0){_0x1c9f6b=_['map'](_0x430d55,_0x28814f);}return _0x1c9f6b;}function getCustomFields(_0x1377b0,_0x22f6b6){var _0x1b8388=[];var _0x201941={'custom_fields':{}};if(_0x1377b0[_0xa55c('0x28')]>0x0){_[_0xa55c('0x29')](_0x1377b0,function(_0x52d37f){if(_[_0xa55c('0x2a')](['string',_0xa55c('0x2b')],_0x52d37f[_0xa55c('0x2c')])&&_0x52d37f[_0xa55c('0x2d')]&&!_0x52d37f[_0xa55c('0x2e')]){_0x201941[_0x52d37f['nameField'][_0xa55c('0x2f')]()]=_0x52d37f[_0xa55c('0x30')][_0xa55c('0x1f')]();}else if(_[_0xa55c('0x2a')]([_0xa55c('0x31'),_0xa55c('0x2b')],_0x52d37f[_0xa55c('0x2c')])&&_0x52d37f[_0xa55c('0x32')]&&_0x52d37f[_0xa55c('0x2e')]){_0x201941[_0xa55c('0x33')][_0x52d37f[_0xa55c('0x32')]]=_0x52d37f['content']['toString']();}else if(_0x52d37f[_0xa55c('0x2c')]===_0xa55c('0x34')&&_0x52d37f['variableName']&&_0x52d37f[_0xa55c('0x32')]&&_0x52d37f[_0xa55c('0x2e')]){_0x22f6b6[_0x52d37f[_0xa55c('0x35')]]&&(_0x201941[_0xa55c('0x33')][_0x52d37f[_0xa55c('0x32')]]=_0x22f6b6[_0x52d37f[_0xa55c('0x35')]][_0xa55c('0x1f')]());}else if(_0x52d37f[_0xa55c('0x2c')]===_0xa55c('0x36')&&_0x52d37f['Variable']&&_0x52d37f['Variable']['name']&&_0x52d37f[_0xa55c('0x32')]&&_0x52d37f[_0xa55c('0x2e')]){_0x22f6b6[_0x52d37f[_0xa55c('0x37')]['name'][_0xa55c('0x2f')]()]&&(_0x201941['custom_fields'][_0x52d37f[_0xa55c('0x32')]]=_0x22f6b6[_0x52d37f['Variable'][_0xa55c('0x38')][_0xa55c('0x2f')]()][_0xa55c('0x1f')]());}});}if(_0x201941['priority']){_0x201941[_0xa55c('0x39')]=Number(_0x201941[_0xa55c('0x39')]);}return _0x201941;}function getTicket(_0x47e93c,_0x6f9c4c,_0x194e78,_0x4d9083,_0x529ff8){logger[_0xa55c('0xb')]('Creating\x20new\x20ticket...');var _0x1e75dc=_[_0xa55c('0x3a')]({'subject':intUtil['getString'](_0x4d9083['Subjects'],_0x529ff8,'\x20'),'type':'phone','status':'new','labels':[_0xa55c('0x3b'),_0xa55c('0x3c'),_0xa55c('0x3d')][_0xa55c('0x3e')](getTags(_0x4d9083[_0xa55c('0x3f')],'name')),'description':intUtil[_0xa55c('0x40')](_0x4d9083[_0xa55c('0x41')],_0x529ff8,'\x0a'),'_links':{'assigned_user':{'href':util[_0xa55c('0xd')](_0xa55c('0x42'),_0x6f9c4c['id']),'class':_0xa55c('0x43')}},'message':{'direction':'in','body':intUtil[_0xa55c('0x40')](_0x4d9083['Descriptions'],_0x529ff8,'\x0a')}},getCustomFields(_0x4d9083[_0xa55c('0x44')],_0x529ff8));return request({'uri':util['format']('%s/customers/%d/cases',_0x47e93c[_0xa55c('0xf')],_0x194e78['id']),'method':_0xa55c('0x27'),'body':_0x1e75dc});}exports['queue']=function(_0x2bd98b,_0x508bd3,_0x5f25f7,_0x2f8449,_0x3fea03,_0x1630ac){var _0x540337,_0x1b2708;_0x1630ac[_0xa55c('0xf')]=intUtil['stripTrailingSlash'](_0x1630ac[_0xa55c('0xf')]);_0x1630ac['serverUrl']=intUtil[_0xa55c('0x45')](_0x1630ac[_0xa55c('0x46')]);if(_0x3fea03&&_0x3fea03['monitor_format']){logger[_0xa55c('0xb')](_0xa55c('0x47'),'Recording\x20is\x20enabled!');_0x508bd3[_0xa55c('0x48')]=util[_0xa55c('0xd')](_0xa55c('0x49'),_0x1630ac['serverUrl'],_0x508bd3[_0xa55c('0x4a')],md5(_0x508bd3['uniqueid']));}else{_0x508bd3[_0xa55c('0x48')]='';}headers[_0xa55c('0x4b')]=getAuth(_0x1630ac);return getUser(_0x1630ac,_0x2f8449[_0xa55c('0x4c')])['then'](function(_0x41eab1){_0x540337=_0x41eab1;logger[_0xa55c('0xb')]('The\x20User\x20ID\x20is:',_0x540337['id']);return getEndUser(_0x1630ac,_0x508bd3[_0xa55c('0x4d')],_0x508bd3[_0xa55c('0x4e')]);})['then'](function(_0x11ff1d){_0x1b2708=_0x11ff1d;logger[_0xa55c('0xb')]('The\x20Enduser\x20ID\x20is:',_0x1b2708['id']);return getTicket(_0x1630ac,_0x540337,_0x1b2708,_0x5f25f7,_0x508bd3);})[_0xa55c('0x10')](function(_0x81cee8){if(_0x81cee8){logger[_0xa55c('0xb')](_0xa55c('0x4f'));logger['info'](_0xa55c('0x50'),_0x81cee8['id']);switch(_0x1630ac['type']){case _0xa55c('0x51'):logger[_0xa55c('0xb')](_0xa55c('0x47'),'Displaying\x20ticket\x20to\x20agent...');emit(util[_0xa55c('0xd')](_0xa55c('0x52'),_0x2f8449['name']),_0xa55c('0x53'),{'recordId':_0x81cee8['id']});break;case _0xa55c('0x54'):logger[_0xa55c('0xb')](_0xa55c('0x47'),_0xa55c('0x55'));emit(util[_0xa55c('0xd')](_0xa55c('0x52'),_0x2f8449[_0xa55c('0x38')]),_0xa55c('0x56'),{'uri':util[_0xa55c('0xd')]('https://xcally.desk.com/web/agent/case/%d',_0x81cee8['id'])});break;default:logger[_0xa55c('0x57')](_0xa55c('0x47'),_0xa55c('0x58'));}}})['catch'](function(_0x4c3095){console[_0xa55c('0x57')](_0x4c3095);logger['error'](_0xa55c('0x47'),JSON['stringify'](_0x4c3095));});};exports[_0xa55c('0x59')]=function(_0x228df4,_0x181802,_0x3f9313,_0x2ecf79,_0x5b1cf3,_0x44b7c1,_0x4607ca){var _0x4b85cc,_0x3929a6;_0x44b7c1[_0xa55c('0xf')]=intUtil[_0xa55c('0x45')](_0x44b7c1[_0xa55c('0xf')]);_0x44b7c1['serverUrl']=intUtil['stripTrailingSlash'](_0x44b7c1[_0xa55c('0x46')]);if(_0x4607ca&&_0x4607ca[_0xa55c('0x5a')]&&_0x4607ca[_0xa55c('0x5a')]!==_0xa55c('0x5b')){logger['info'](_0xa55c('0x5c'),'Recording\x20is\x20enabled!');_0x181802[_0xa55c('0x48')]=util[_0xa55c('0xd')](_0xa55c('0x49'),_0x44b7c1[_0xa55c('0x46')],_0x181802[_0xa55c('0x4a')],md5(_0x181802['uniqueid']));}headers[_0xa55c('0x4b')]=getAuth(_0x44b7c1);return getUser(_0x44b7c1,_0x2ecf79['email'])[_0xa55c('0x10')](function(_0x157afe){_0x4b85cc=_0x157afe;logger[_0xa55c('0xb')](_0xa55c('0x5d'),_0x4b85cc['id']);return getEndUser(_0x44b7c1,_0x181802[_0xa55c('0x5e')],_0x181802[_0xa55c('0x5f')]);})[_0xa55c('0x10')](function(_0x53e2be){_0x3929a6=_0x53e2be;logger[_0xa55c('0xb')](_0xa55c('0x60'),_0x3929a6['id']);return getTicket(_0x44b7c1,_0x4b85cc,_0x3929a6,_0x3f9313,_0x181802);})[_0xa55c('0x10')](function(_0x23a30e){if(_0x23a30e){logger[_0xa55c('0xb')]('Ticket\x20created!');logger[_0xa55c('0xb')](_0xa55c('0x50'),_0x23a30e['id']);switch(_0x44b7c1[_0xa55c('0x2c')]){case _0xa55c('0x51'):logger[_0xa55c('0xb')]('[QUEUE]',_0xa55c('0x61'));emit(util[_0xa55c('0xd')](_0xa55c('0x52'),_0x2ecf79[_0xa55c('0x38')]),_0xa55c('0x53'),{'recordId':_0x23a30e['id']});break;case'newTab':logger[_0xa55c('0xb')]('[QUEUE]',_0xa55c('0x55'));emit(util['format'](_0xa55c('0x52'),_0x2ecf79['name']),_0xa55c('0x56'),{'uri':util[_0xa55c('0xd')](_0xa55c('0x62'),_0x44b7c1[_0xa55c('0xf')],_0x23a30e['id'])});break;default:logger[_0xa55c('0x57')](_0xa55c('0x5c'),_0xa55c('0x58'));}}})[_0xa55c('0x63')](function(_0x14b515){logger[_0xa55c('0x57')]('[OUTBOUND]',JSON[_0xa55c('0x17')](_0x14b515));});};exports[_0xa55c('0x64')]=function(_0x4ef914,_0x18b928,_0x2b8b88,_0x3e3b4b,_0x9fe234,_0x1b8b06){var _0xa38271,_0x3cef1f;_0x1b8b06[_0xa55c('0xf')]=intUtil['stripTrailingSlash'](_0x1b8b06[_0xa55c('0xf')]);_0x1b8b06[_0xa55c('0x46')]=intUtil[_0xa55c('0x45')](_0x1b8b06[_0xa55c('0x46')]);if(_0x9fe234&&_0x9fe234[_0xa55c('0x65')]){logger[_0xa55c('0xb')]('['+_0x18b928[_0xa55c('0x66')][_0xa55c('0x67')]()+']',_0xa55c('0x68'));_0x18b928['recordingURL']=util[_0xa55c('0xd')](_0xa55c('0x49'),_0x1b8b06[_0xa55c('0x46')],_0x18b928[_0xa55c('0x4a')],md5(_0x18b928[_0xa55c('0x4a')]));}else{_0x18b928[_0xa55c('0x48')]='';}headers[_0xa55c('0x4b')]=getAuth(_0x1b8b06);return getUser(_0x1b8b06)[_0xa55c('0x10')](function(_0x2e4cf7){_0xa38271=_0x2e4cf7;logger[_0xa55c('0xb')](_0xa55c('0x5d'),_0xa38271['id']);return getEndUser(_0x1b8b06,_0x18b928['calleridname'],_0x18b928[_0xa55c('0x4e')]);})['then'](function(_0x1228a4){_0x3cef1f=_0x1228a4;logger[_0xa55c('0xb')](_0xa55c('0x60'),_0x3cef1f['id']);return getTicket(_0x1b8b06,_0xa38271,_0x3cef1f,_0x2b8b88,_0x18b928);})['then'](function(_0x4d9722){if(_0x4d9722){logger[_0xa55c('0xb')](_0xa55c('0x4f'));logger[_0xa55c('0xb')](_0xa55c('0x50'),_0x4d9722['id']);}})['catch'](function(_0x149cb9){logger[_0xa55c('0x57')]('['+_0x18b928[_0xa55c('0x66')][_0xa55c('0x67')]()+']',JSON[_0xa55c('0x17')](_0x149cb9));});};
\ No newline at end of file
+var _0x9957=['Motion','CTI','concat','Tags','/api/v2/users/%d','Descriptions','%s/customers/%d/cases','serverUrl','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','Displaying\x20ticket\x20to\x20agent...','user:%s','trigger:desk:display','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','Desk\x20account\x20type\x20not\x20recognized','error','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','integrationTab','newTab','%s/agent/tickets/%s','catch','unmanaged','monitor_format','lastevent','The\x20Ticket\x20ID\x20is:','toUpperCase','lodash','request-promise','md5','util','./util','../../../../config/environment','../../../../config/logger','desk','defaults','redis','localhost','socket.io-emitter','emit','application/json','validateEmail','info','Getting\x20agent\x20with\x20email','format','remoteUri','then','total_entries','find','_embedded','entries','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','[HTTP]','stringify','GET','password','authType','token','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/customers','POST','work','map','includes','string','picklist','type','nameField','customField','content','idField','custom_fields','variable','variableName','customVariable','name','Variable','toLowerCase','priority','Creating\x20new\x20ticket...','merge','getString','Subjects','phone','new','xCALLY'];(function(_0x4a9a3c,_0x589175){var _0x1925fb=function(_0x1a2450){while(--_0x1a2450){_0x4a9a3c['push'](_0x4a9a3c['shift']());}};_0x1925fb(++_0x589175);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require(_0x7995('0x0'));var rp=require(_0x7995('0x1'));var md5=require(_0x7995('0x2'));var util=require(_0x7995('0x3'));var Redis=require('ioredis');var intUtil=require(_0x7995('0x4'));var config=require(_0x7995('0x5'));var logger=require(_0x7995('0x6'))(_0x7995('0x7'));config['redis']=_[_0x7995('0x8')](config[_0x7995('0x9')],{'host':_0x7995('0xa'),'port':0x18eb});var io=require(_0x7995('0xb'))(new Redis(config[_0x7995('0x9')]));function emit(_0x326741,_0x4996ca,_0x465276){io['to'](_0x326741)[_0x7995('0xc')](_0x4996ca,_0x465276);}var headers={'Content-Type':'application/json','Accept':_0x7995('0xd')};function getUser(_0x3116fb,_0x18c8a3){if(intUtil[_0x7995('0xe')](_0x18c8a3)===!![]){logger[_0x7995('0xf')](_0x7995('0x10'),_0x18c8a3);return request({'uri':util[_0x7995('0x11')]('%s/users',_0x3116fb[_0x7995('0x12')])})[_0x7995('0x13')](function(_0x581f22){if(_0x581f22[_0x7995('0x14')]){return _[_0x7995('0x15')](_0x581f22[_0x7995('0x16')][_0x7995('0x17')],{'email':_0x18c8a3});}})[_0x7995('0x13')](function(_0x23999f){if(_0x23999f){logger[_0x7995('0xf')]('Agent\x20found!');return _0x23999f;}else{logger['info'](_0x7995('0x18'));return request({'uri':util[_0x7995('0x11')](_0x7995('0x19'),_0x3116fb[_0x7995('0x12')])});}});}else{logger[_0x7995('0xf')](_0x7995('0x1a'));return request({'uri':util[_0x7995('0x11')](_0x7995('0x19'),_0x3116fb['remoteUri'])});}}function request(_0x2eeacc){logger['debug'](_0x7995('0x1b'),JSON[_0x7995('0x1c')](_0x2eeacc));return rp(_[_0x7995('0x8')](_0x2eeacc,{'method':_0x7995('0x1d'),'headers':headers,'json':!![]}));}function getAuth(_0x1e1415){var _0x37a7d4;if(_0x1e1415['authType']==='basic'){_0x37a7d4=util[_0x7995('0x11')]('%s:%s',_0x1e1415['username'],_0x1e1415[_0x7995('0x1e')]);}else if(_0x1e1415[_0x7995('0x1f')]==='token'){_0x37a7d4=util[_0x7995('0x11')]('%s/token:%s',_0x1e1415['username'],_0x1e1415[_0x7995('0x20')]);}return util[_0x7995('0x11')](_0x7995('0x21'),new Buffer(_0x37a7d4)[_0x7995('0x22')](_0x7995('0x23')));}function getEndUser(_0x1c278a,_0x5d40ae,_0x32a09a){logger[_0x7995('0xf')](_0x7995('0x24'),_0x32a09a);return request({'uri':util[_0x7995('0x11')](_0x7995('0x25'),_0x1c278a[_0x7995('0x12')]),'qs':{'phone':_0x32a09a}})[_0x7995('0x13')](function(_0x472195){if(_0x472195['total_entries']){logger[_0x7995('0xf')](_0x7995('0x26'));return _0x472195[_0x7995('0x16')][_0x7995('0x17')][0x0];}else{logger[_0x7995('0xf')](_0x7995('0x27'));return request({'uri':util['format'](_0x7995('0x28'),_0x1c278a['remoteUri']),'method':_0x7995('0x29'),'body':{'first_name':_0x5d40ae,'title':_0x5d40ae,'phone_numbers':[{'type':_0x7995('0x2a'),'value':_0x32a09a}]}});}});}function getTags(_0xf16cc2,_0x132a42){var _0x11c1eb=[];if(_0xf16cc2&&_0xf16cc2['length']>0x0){_0x11c1eb=_[_0x7995('0x2b')](_0xf16cc2,_0x132a42);}return _0x11c1eb;}function getCustomFields(_0x514445,_0x456a28){var _0x3250e0=[];var _0x4253e5={'custom_fields':{}};if(_0x514445['length']>0x0){_['forEach'](_0x514445,function(_0x48e573){if(_[_0x7995('0x2c')]([_0x7995('0x2d'),_0x7995('0x2e')],_0x48e573[_0x7995('0x2f')])&&_0x48e573[_0x7995('0x30')]&&!_0x48e573[_0x7995('0x31')]){_0x4253e5[_0x48e573['nameField']['toLowerCase']()]=_0x48e573[_0x7995('0x32')]['toString']();}else if(_[_0x7995('0x2c')]([_0x7995('0x2d'),_0x7995('0x2e')],_0x48e573[_0x7995('0x2f')])&&_0x48e573[_0x7995('0x33')]&&_0x48e573['customField']){_0x4253e5[_0x7995('0x34')][_0x48e573[_0x7995('0x33')]]=_0x48e573['content']['toString']();}else if(_0x48e573['type']===_0x7995('0x35')&&_0x48e573[_0x7995('0x36')]&&_0x48e573['idField']&&_0x48e573[_0x7995('0x31')]){_0x456a28[_0x48e573['variableName']]&&(_0x4253e5[_0x7995('0x34')][_0x48e573[_0x7995('0x33')]]=_0x456a28[_0x48e573[_0x7995('0x36')]]['toString']());}else if(_0x48e573['type']===_0x7995('0x37')&&_0x48e573['Variable']&&_0x48e573['Variable'][_0x7995('0x38')]&&_0x48e573[_0x7995('0x33')]&&_0x48e573['customField']){_0x456a28[_0x48e573[_0x7995('0x39')][_0x7995('0x38')][_0x7995('0x3a')]()]&&(_0x4253e5[_0x7995('0x34')][_0x48e573[_0x7995('0x33')]]=_0x456a28[_0x48e573['Variable'][_0x7995('0x38')][_0x7995('0x3a')]()][_0x7995('0x22')]());}});}if(_0x4253e5[_0x7995('0x3b')]){_0x4253e5['priority']=Number(_0x4253e5[_0x7995('0x3b')]);}return _0x4253e5;}function getTicket(_0x235df7,_0x3eb04f,_0xe5ea43,_0x1f5bee,_0x1035dc){logger['info'](_0x7995('0x3c'));var _0x3be298=_[_0x7995('0x3d')]({'subject':intUtil[_0x7995('0x3e')](_0x1f5bee[_0x7995('0x3f')],_0x1035dc,'\x20'),'type':_0x7995('0x40'),'status':_0x7995('0x41'),'labels':[_0x7995('0x42'),_0x7995('0x43'),_0x7995('0x44')][_0x7995('0x45')](getTags(_0x1f5bee[_0x7995('0x46')],_0x7995('0x38'))),'description':intUtil['getString'](_0x1f5bee['Descriptions'],_0x1035dc,'\x0a'),'_links':{'assigned_user':{'href':util[_0x7995('0x11')](_0x7995('0x47'),_0x3eb04f['id']),'class':'user'}},'message':{'direction':'in','body':intUtil['getString'](_0x1f5bee[_0x7995('0x48')],_0x1035dc,'\x0a')}},getCustomFields(_0x1f5bee['Fields'],_0x1035dc));return request({'uri':util['format'](_0x7995('0x49'),_0x235df7[_0x7995('0x12')],_0xe5ea43['id']),'method':_0x7995('0x29'),'body':_0x3be298});}exports['queue']=function(_0x46ac4f,_0x5e85b9,_0x3993b5,_0x5a8881,_0x493066,_0x39c5b8){var _0x403f54,_0xc04e5;_0x39c5b8[_0x7995('0x12')]=intUtil['stripTrailingSlash'](_0x39c5b8[_0x7995('0x12')]);_0x39c5b8[_0x7995('0x4a')]=intUtil[_0x7995('0x4b')](_0x39c5b8[_0x7995('0x4a')]);if(_0x493066&&_0x493066['monitor_format']){logger['info'](_0x7995('0x4c'),'Recording\x20is\x20enabled!');_0x5e85b9[_0x7995('0x4d')]=util['format'](_0x7995('0x4e'),_0x39c5b8['serverUrl'],_0x5e85b9[_0x7995('0x4f')],md5(_0x5e85b9[_0x7995('0x4f')]));}else{_0x5e85b9['recordingURL']='';}headers[_0x7995('0x50')]=getAuth(_0x39c5b8);return getUser(_0x39c5b8,_0x5a8881[_0x7995('0x51')])[_0x7995('0x13')](function(_0xb70a51){_0x403f54=_0xb70a51;logger['info'](_0x7995('0x52'),_0x403f54['id']);return getEndUser(_0x39c5b8,_0x5e85b9[_0x7995('0x53')],_0x5e85b9[_0x7995('0x54')]);})['then'](function(_0xe228a5){_0xc04e5=_0xe228a5;logger[_0x7995('0xf')](_0x7995('0x55'),_0xc04e5['id']);return getTicket(_0x39c5b8,_0x403f54,_0xc04e5,_0x3993b5,_0x5e85b9);})[_0x7995('0x13')](function(_0x255313){if(_0x255313){logger['info'](_0x7995('0x56'));logger[_0x7995('0xf')]('The\x20Ticket\x20ID\x20is:',_0x255313['id']);switch(_0x39c5b8[_0x7995('0x2f')]){case'integrationTab':logger[_0x7995('0xf')](_0x7995('0x4c'),_0x7995('0x57'));emit(util[_0x7995('0x11')](_0x7995('0x58'),_0x5a8881[_0x7995('0x38')]),_0x7995('0x59'),{'recordId':_0x255313['id']});break;case'newTab':logger[_0x7995('0xf')](_0x7995('0x4c'),_0x7995('0x5a'));emit(util['format'](_0x7995('0x58'),_0x5a8881[_0x7995('0x38')]),_0x7995('0x5b'),{'uri':util['format']('https://xcally.desk.com/web/agent/case/%d',_0x255313['id'])});break;default:logger['error'](_0x7995('0x4c'),_0x7995('0x5c'));}}})['catch'](function(_0x1cd85){console[_0x7995('0x5d')](_0x1cd85);logger[_0x7995('0x5d')](_0x7995('0x4c'),JSON[_0x7995('0x1c')](_0x1cd85));});};exports['outbound']=function(_0x29ee32,_0x4ab09f,_0x14fe7f,_0x33c801,_0x206d2a,_0x50c7b5,_0x5e1f34){var _0x54e2b1,_0x563f8e;_0x50c7b5[_0x7995('0x12')]=intUtil[_0x7995('0x4b')](_0x50c7b5[_0x7995('0x12')]);_0x50c7b5[_0x7995('0x4a')]=intUtil[_0x7995('0x4b')](_0x50c7b5[_0x7995('0x4a')]);if(_0x5e1f34&&_0x5e1f34[_0x7995('0x5e')]&&_0x5e1f34[_0x7995('0x5e')]!==_0x7995('0x5f')){logger[_0x7995('0xf')](_0x7995('0x60'),_0x7995('0x61'));_0x4ab09f[_0x7995('0x4d')]=util[_0x7995('0x11')](_0x7995('0x4e'),_0x50c7b5[_0x7995('0x4a')],_0x4ab09f[_0x7995('0x4f')],md5(_0x4ab09f[_0x7995('0x4f')]));}headers[_0x7995('0x50')]=getAuth(_0x50c7b5);return getUser(_0x50c7b5,_0x33c801['email'])[_0x7995('0x13')](function(_0x630737){_0x54e2b1=_0x630737;logger[_0x7995('0xf')](_0x7995('0x52'),_0x54e2b1['id']);return getEndUser(_0x50c7b5,_0x4ab09f['destcalleridname'],_0x4ab09f['destcalleridnum']);})[_0x7995('0x13')](function(_0x197b52){_0x563f8e=_0x197b52;logger[_0x7995('0xf')](_0x7995('0x55'),_0x563f8e['id']);return getTicket(_0x50c7b5,_0x54e2b1,_0x563f8e,_0x14fe7f,_0x4ab09f);})['then'](function(_0x13cd7b){if(_0x13cd7b){logger[_0x7995('0xf')](_0x7995('0x56'));logger[_0x7995('0xf')]('The\x20Ticket\x20ID\x20is:',_0x13cd7b['id']);switch(_0x50c7b5['type']){case _0x7995('0x62'):logger[_0x7995('0xf')](_0x7995('0x4c'),_0x7995('0x57'));emit(util[_0x7995('0x11')](_0x7995('0x58'),_0x33c801[_0x7995('0x38')]),_0x7995('0x59'),{'recordId':_0x13cd7b['id']});break;case _0x7995('0x63'):logger['info'](_0x7995('0x4c'),_0x7995('0x5a'));emit(util[_0x7995('0x11')](_0x7995('0x58'),_0x33c801['name']),'trigger:browser:url',{'uri':util[_0x7995('0x11')](_0x7995('0x64'),_0x50c7b5['remoteUri'],_0x13cd7b['id'])});break;default:logger[_0x7995('0x5d')](_0x7995('0x60'),_0x7995('0x5c'));}}})[_0x7995('0x65')](function(_0x32cb04){logger['error'](_0x7995('0x60'),JSON['stringify'](_0x32cb04));});};exports[_0x7995('0x66')]=function(_0xe31dcb,_0x1722e2,_0x25b534,_0x4388c1,_0xeb8920,_0x2b3c1d){var _0x44372a,_0x10f012;_0x2b3c1d[_0x7995('0x12')]=intUtil[_0x7995('0x4b')](_0x2b3c1d[_0x7995('0x12')]);_0x2b3c1d['serverUrl']=intUtil[_0x7995('0x4b')](_0x2b3c1d[_0x7995('0x4a')]);if(_0xeb8920&&_0xeb8920[_0x7995('0x67')]){logger[_0x7995('0xf')]('['+_0x1722e2[_0x7995('0x68')]['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x1722e2[_0x7995('0x4d')]=util[_0x7995('0x11')](_0x7995('0x4e'),_0x2b3c1d[_0x7995('0x4a')],_0x1722e2['uniqueid'],md5(_0x1722e2[_0x7995('0x4f')]));}else{_0x1722e2['recordingURL']='';}headers['Authorization']=getAuth(_0x2b3c1d);return getUser(_0x2b3c1d)[_0x7995('0x13')](function(_0x36d27d){_0x44372a=_0x36d27d;logger[_0x7995('0xf')](_0x7995('0x52'),_0x44372a['id']);return getEndUser(_0x2b3c1d,_0x1722e2[_0x7995('0x53')],_0x1722e2[_0x7995('0x54')]);})[_0x7995('0x13')](function(_0x13dc73){_0x10f012=_0x13dc73;logger[_0x7995('0xf')](_0x7995('0x55'),_0x10f012['id']);return getTicket(_0x2b3c1d,_0x44372a,_0x10f012,_0x25b534,_0x1722e2);})['then'](function(_0x2dc1f7){if(_0x2dc1f7){logger[_0x7995('0xf')](_0x7995('0x56'));logger['info'](_0x7995('0x69'),_0x2dc1f7['id']);}})[_0x7995('0x65')](function(_0x705f0){logger[_0x7995('0x5d')]('['+_0x1722e2[_0x7995('0x68')][_0x7995('0x6a')]()+']',JSON[_0x7995('0x1c')](_0x705f0));});};
\ No newline at end of file
index 8beba4e..3a7aa9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99b0=['content','ticketType','incident','incidents','assign','getString','Subjects','Descriptions','phonecall','phonecalls','/contacts(','callDirection','queue','Fields','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','tenantId','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Dynamics365\x20integration','lodash','bluebird','util','./util','md5','ioredis','../../../../config/logger','../../../../config/environment','redis','localhost','POST','clientId','remoteUri','username','password','clientSecret','then','catch','error','toUpperCase',']\x20Wrong\x20credentials!','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','isNil','validateEmail','email','internalemailaddress','info',']\x20Agent\x20found\x20','userId','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userEmail','length','outbound','destcalleridnum','calleridnum','contacts','/systemusers(','headers','odata-entityid','substring','lastIndexOf','toLowerCase','contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27','replace','%2b','telephone1','enduserId','contactid','forEach','includes','string','nameField','customField','indexOf'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x99b0,0xf0));var _0x099b=function(_0x3afb31,_0x324f2a){_0x3afb31=_0x3afb31-0x0;var _0x4a0a8b=_0x99b0[_0x3afb31];return _0x4a0a8b;};'use strict';var _=require(_0x099b('0x0'));var BPromise=require(_0x099b('0x1'));var rp=require('request-promise');var util=require(_0x099b('0x2'));var intUtil=require(_0x099b('0x3'));var md5=require(_0x099b('0x4'));var Redis=require(_0x099b('0x5'));var logger=require(_0x099b('0x6'))('dynamics365');var config=require(_0x099b('0x7'));config[_0x099b('0x8')]=_['defaults'](config[_0x099b('0x8')],{'host':_0x099b('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x099b('0x8')]));function getAuthToken(_0x1359e0,_0x4bfc94,_0xdc76d3){var _0x5a8f69={'method':_0x099b('0xa'),'uri':_0x4bfc94,'form':{'client_id':_0x1359e0[_0x099b('0xb')],'resource':_0x1359e0[_0x099b('0xc')],'username':_0x1359e0[_0x099b('0xd')],'password':_0x1359e0[_0x099b('0xe')],'grant_type':_0x099b('0xe'),'client_secret':_0x1359e0[_0x099b('0xf')]},'json':!![]};return rp(_0x5a8f69)[_0x099b('0x10')](function(_0x26744c){return _0x26744c['access_token'];})[_0x099b('0x11')](function(_0x7ff466){logger[_0x099b('0x12')]('['+[_0xdc76d3[_0x099b('0x13')]()]+_0x099b('0x14'));return _0x7ff466[_0x099b('0x15')];});}function getUser(_0x1e1ace,_0x3a858e,_0xec72,_0x633ce7,_0x4ce5c9,_0x70a6b4){return new BPromise(function(_0xd7b250,_0x5f2ba9){return getAuthToken(_0x3a858e,_0x633ce7,_0x70a6b4)[_0x099b('0x10')](function(_0x1f1802){var _0x5cb141={'method':_0x099b('0x16'),'uri':_0x4ce5c9+_0x099b('0x17'),'headers':{'Authorization':_0x099b('0x18')+_0x1f1802,'OData-Version':_0x099b('0x19')},'json':!![]};return rp(_0x5cb141);})[_0x099b('0x10')](function(_0x12e0cc){var _0x15a833=_0x12e0cc[_0x099b('0x1a')];var _0x5591b3=![];var _0x263fa3=null;if(!_[_0x099b('0x1b')](_0xec72)){if(intUtil[_0x099b('0x1c')](_0xec72[_0x099b('0x1d')])){_0x1e1ace['userEmail']=_0xec72[_0x099b('0x1d')];for(_0x263fa3=0x0;_0x263fa3<_0x15a833['length'];_0x263fa3++){if(_0x15a833[_0x263fa3][_0x099b('0x1e')]===_0xec72[_0x099b('0x1d')]&&!_0x15a833[_0x263fa3]['isdisabled']){_0x5591b3=!![];logger[_0x099b('0x1f')]('['+[_0x70a6b4[_0x099b('0x13')]()]+_0x099b('0x20')+_0x15a833[_0x263fa3]['systemuserid']+'!');_0x1e1ace[_0x099b('0x21')]=_0x15a833[_0x263fa3][_0x099b('0x22')];}}}}if(!_0x5591b3){logger[_0x099b('0x1f')]('['+[_0x70a6b4[_0x099b('0x13')]()]+_0x099b('0x23'));_0x1e1ace[_0x099b('0x24')]=_0x3a858e[_0x099b('0xd')];for(_0x263fa3=0x0;_0x263fa3<_0x15a833[_0x099b('0x25')];_0x263fa3++){if(_0x15a833[_0x263fa3][_0x099b('0x1e')]===_0x3a858e[_0x099b('0xd')]){_0x1e1ace['userId']=_0x15a833[_0x263fa3][_0x099b('0x22')];}}}_0xd7b250(_0x1e1ace);})[_0x099b('0x11')](function(_0x3d834b){_0x5f2ba9(_0x3d834b[_0x099b('0x15')]);});});}function createEndUser(_0x347984,_0x29ac41,_0x4f3de6,_0x51661b,_0x4ef86d,_0x5724b6){return new BPromise(function(_0x431e82,_0x35e21c){return getAuthToken(_0x29ac41,_0x4f3de6,_0x5724b6)[_0x099b('0x10')](function(_0x4af4ea){var _0x5f4b24=_0x5724b6['toLowerCase']()===_0x099b('0x26')?_0x4ef86d[_0x099b('0x27')]:_0x4ef86d[_0x099b('0x28')];var _0x4370a0={'method':_0x099b('0xa'),'uri':_0x51661b+_0x099b('0x29'),'body':{'telephone1':_0x5f4b24,'fullname':_0x5f4b24,'firstname':_0x5f4b24,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x099b('0x2a')+_0x347984['userId']+')'},'headers':{'Authorization':_0x099b('0x18')+_0x4af4ea,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x4370a0);})['then'](function(_0x31f698){var _0x1bdea5=_0x31f698[_0x099b('0x2b')][_0x099b('0x2c')];var _0x17c106=_0x1bdea5[_0x099b('0x2d')](_0x1bdea5['lastIndexOf']('(')+0x1,_0x1bdea5[_0x099b('0x2e')](')'));_0x347984['enduserId']=_0x17c106;_0x431e82(_0x347984);})[_0x099b('0x11')](function(_0x781bf7){_0x35e21c(_0x781bf7[_0x099b('0x15')]);});});}function getEndUser(_0x506f1e,_0x333120,_0xc09192,_0x31dca6,_0xc9f5bd,_0x16a40e){return new BPromise(function(_0x5b00ba,_0x1d310f){var _0x48013b=_0x16a40e[_0x099b('0x2f')]()===_0x099b('0x26')?_0xc9f5bd[_0x099b('0x27')]:_0xc9f5bd[_0x099b('0x28')];return getAuthToken(_0x333120,_0xc09192,_0x16a40e)['then'](function(_0x315b27){var _0x3975d3={'method':_0x099b('0x16'),'uri':_0x31dca6+_0x099b('0x30')+_0x48013b[_0x099b('0x31')]('+',_0x099b('0x32'))+'\x27','headers':{'Authorization':'Bearer\x20'+_0x315b27,'If-None-Match':null,'OData-Version':_0x099b('0x19')},'json':!![]};return rp(_0x3975d3);})[_0x099b('0x10')](function(_0xb4ac74){var _0x5074b6=null;if(_0xb4ac74){var _0x262799=_0xb4ac74[_0x099b('0x1a')];var _0x26a4ed=![];for(_0x5074b6=0x0;_0x5074b6<_0x262799['length'];_0x5074b6++){if(_0x262799[_0x5074b6][_0x099b('0x33')]===_0x48013b){_0x26a4ed=!![];_0x506f1e[_0x099b('0x34')]=_0x262799[_0x5074b6][_0x099b('0x35')];}}if(_0x26a4ed){_0x5b00ba(_0x506f1e);}else{return createEndUser(_0x506f1e,_0x333120,_0xc09192,_0x31dca6,_0xc9f5bd,_0x16a40e)[_0x099b('0x10')](function(_0xc5a14e){logger[_0x099b('0x1f')]('['+[_0x16a40e[_0x099b('0x13')]()]+']\x20Enduser\x20created!',_0xc5a14e['enduserId']);_0x5b00ba(_0xc5a14e);});}}else{return createEndUser(_0x506f1e,_0x333120,_0xc09192,_0x31dca6,_0xc9f5bd,_0x16a40e)[_0x099b('0x10')](function(_0x48a998){logger[_0x099b('0x1f')]('['+[_0x16a40e[_0x099b('0x13')]()]+']\x20Enduser\x20Created!',_0x48a998['enduserId']);_0x5b00ba(_0x48a998);});}});});}function getCustomFields(_0x421e74,_0x3271fb,_0xf88e0e){var _0x2ac009={};if(_0x421e74[_0x099b('0x25')]>0x0){_[_0x099b('0x36')](_0x421e74,function(_0x1346ed){if(_[_0x099b('0x37')]([_0x099b('0x38'),'picklist'],_0x1346ed['type'])&&_0x1346ed[_0x099b('0x39')]&&!_0x1346ed[_0x099b('0x3a')]){var _0x277964=_0x1346ed['idField'][_0x099b('0x2f')]();var _0x5ab559=_0x277964[_0x099b('0x2d')](0x0,_0x277964['indexOf']('_'));var _0x5efc63=_0x277964[_0x099b('0x2d')](_0x277964[_0x099b('0x3b')]('_')+0x1);if(_0x5ab559===_0xf88e0e){_0x2ac009[_0x5efc63]=_0x1346ed[_0x099b('0x3c')];}}});}return _0x2ac009;}function getTicket(_0x2e056d,_0xf6f08,_0x4279ea,_0x598588,_0x368acc,_0x138a2c,_0x4b1858){return new BPromise(function(_0x278c4e,_0x25906a){var _0x1c3eef;return getAuthToken(_0xf6f08,_0x4279ea,_0x4b1858)[_0x099b('0x10')](function(_0x5e44ea){if(_0x138a2c[_0x099b('0x3d')]===_0x099b('0x3e')){_0x1c3eef={'method':_0x099b('0xa'),'uri':_0x598588+_0x099b('0x3f'),'body':Object[_0x099b('0x40')]({},{'title':intUtil[_0x099b('0x41')](_0x138a2c[_0x099b('0x42')],_0x368acc,'\x20'),'description':intUtil['getString'](_0x138a2c[_0x099b('0x43')],_0x368acc,'\x0a'),'customerid_contact@odata.bind':'/contacts('+_0x2e056d[_0x099b('0x34')]+')','ownerid@odata.bind':_0x099b('0x2a')+_0x2e056d[_0x099b('0x21')]+')','caseorigincode':'1'},getCustomFields(_0x138a2c['Fields'],_0x368acc,_0x138a2c[_0x099b('0x3d')])),'headers':{'Authorization':_0x099b('0x18')+_0x5e44ea,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}if(_0x138a2c[_0x099b('0x3d')]===_0x099b('0x44')){_0x1c3eef={'method':_0x099b('0xa'),'uri':_0x598588+_0x099b('0x45'),'body':Object[_0x099b('0x40')]({},{'subject':intUtil['getString'](_0x138a2c[_0x099b('0x42')],_0x368acc,'\x20'),'phonenumber':String(_0x368acc[_0x099b('0x28')]),'description':intUtil[_0x099b('0x41')](_0x138a2c['Descriptions'],_0x368acc,'\x0a'),'regardingobjectid_contact@odata.bind':_0x099b('0x46')+_0x2e056d[_0x099b('0x34')]+')','ownerid@odata.bind':'/systemusers('+_0x2e056d[_0x099b('0x21')]+')','directioncode':_0x2e056d[_0x099b('0x47')]===_0x099b('0x48')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0x099b('0x2a')+_0x2e056d['userId']+')','participationtypemask':_0x2e056d[_0x099b('0x47')]===_0x099b('0x48')?0x2:0x1},{'partyid_contact@odata.bind':_0x099b('0x46')+_0x2e056d[_0x099b('0x34')]+')','participationtypemask':_0x2e056d[_0x099b('0x47')]===_0x099b('0x48')?0x1:0x2}]},getCustomFields(_0x138a2c[_0x099b('0x49')],_0x368acc,_0x138a2c[_0x099b('0x3d')])),'headers':{'Authorization':'Bearer\x20'+_0x5e44ea,'OData-Version':_0x099b('0x19')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x1c3eef);})[_0x099b('0x10')](function(_0x27a9dc){var _0x3ae028=_0x27a9dc['headers']['odata-entityid'];var _0x2024ae=_0x3ae028[_0x099b('0x2d')](_0x3ae028['lastIndexOf']('(')+0x1,_0x3ae028[_0x099b('0x2e')](')'));_0x2e056d[_0x099b('0x4a')]=_0x2024ae;_0x278c4e(_0x2e056d);})[_0x099b('0x11')](function(_0x595947){_0x25906a(_0x595947['message']);});});}function emit(_0x586026,_0x1a8694,_0x39ffe3,_0x18129d){var _0xa4c561={'uri':util[_0x099b('0x4b')](_0x099b('0x4c'),_0x586026,_0x39ffe3,_0x18129d)};io['to'](util['format'](_0x099b('0x4d'),_0x1a8694))[_0x099b('0x4e')]('trigger:browser:url',_0xa4c561);}exports['cs']=function(_0x5ecd51,_0x319309,_0x51febd,_0x271ef7,_0x1df1ac,_0x18185c,_0x266330,_0x196e5a){var _0x23f681={};_0x18185c[_0x099b('0xc')]=intUtil[_0x099b('0x4f')](_0x18185c[_0x099b('0xc')]);_0x18185c[_0x099b('0x50')]=intUtil['stripTrailingSlash'](_0x18185c[_0x099b('0x50')]);_0x23f681[_0x099b('0x47')]=_0x196e5a===_0x099b('0x48')||_0x196e5a===_0x099b('0x51')?_0x099b('0x48'):_0x099b('0x26');var _0xc04e8b=util['format'](_0x099b('0x52'),_0x18185c[_0x099b('0xc')]);var _0x56d91f=util[_0x099b('0x4b')](_0x099b('0x53'),_0x18185c[_0x099b('0x54')]);var _0x2fb14b=util[_0x099b('0x4b')](_0x099b('0x55'),_0x18185c[_0x099b('0x50')],_0x319309['uniqueid'],md5(_0x319309[_0x099b('0x56')]));if(_0x1df1ac&&_0x1df1ac[_0x099b('0x57')]){logger[_0x099b('0x1f')](_0x099b('0x58'),_0x099b('0x59'));_0x319309[_0x099b('0x5a')]=_0x2fb14b;}else if(_0x266330&&_0x266330[_0x099b('0x5b')]&&_0x266330[_0x099b('0x5b')]!==_0x099b('0x5c')){logger['info'](_0x099b('0x5d'),_0x099b('0x59'));_0x319309['recordingURL']=_0x2fb14b;}else{_0x319309[_0x099b('0x5a')]='';}return getUser(_0x23f681,_0x18185c,_0x271ef7,_0x56d91f,_0xc04e8b,_0x196e5a)[_0x099b('0x10')](function(_0x27f49f){logger[_0x099b('0x1f')]('['+_0x196e5a['toUpperCase']()+']\x20The\x20User\x20ID\x20is:',_0x27f49f['userId']);logger['info']('['+_0x196e5a[_0x099b('0x13')]()+_0x099b('0x5e'),_0x27f49f[_0x099b('0x24')]);return getEndUser(_0x27f49f,_0x18185c,_0x56d91f,_0xc04e8b,_0x319309,_0x196e5a);})[_0x099b('0x10')](function(_0x25ad41){logger[_0x099b('0x1f')]('['+_0x196e5a[_0x099b('0x13')]()+']\x20The\x20Enduser\x20ID\x20is:',_0x25ad41[_0x099b('0x34')]);logger['info']('['+_0x196e5a['toUpperCase']()+_0x099b('0x5f'),_0x319309[_0x099b('0x28')]);return getTicket(_0x25ad41,_0x18185c,_0x56d91f,_0xc04e8b,_0x319309,_0x51febd,_0x196e5a);})[_0x099b('0x10')](function(_0x3ba939){logger[_0x099b('0x1f')](util[_0x099b('0x4b')]('['+_0x196e5a[_0x099b('0x13')]()+_0x099b('0x60'),_0x51febd[_0x099b('0x3d')],_0x3ba939['ticketId']));logger['info'](util[_0x099b('0x4b')]('['+_0x196e5a[_0x099b('0x13')]()+']\x20Call\x20direction:\x20%s',_0x196e5a));if(_0x196e5a!=='unmanaged'){logger['info']('['+_0x196e5a[_0x099b('0x13')]()+']',_0x099b('0x61'));emit(_0x18185c[_0x099b('0xc')],_0x271ef7[_0x099b('0x62')],_0x51febd[_0x099b('0x3d')],_0x3ba939['ticketId']);}})['catch'](function(_0x146c8a){logger[_0x099b('0x12')]('['+_0x196e5a[_0x099b('0x13')]()+_0x099b('0x63'),util['inspect'](_0x146c8a,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xbbb4=['toUpperCase',']\x20Agent\x20found\x20','systemuserid','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','username','toLowerCase','outbound','contacts','/systemusers(','4.0','substring','enduserId','destcalleridnum','contactid',']\x20Enduser\x20created!',']\x20Enduser\x20Created!','forEach','includes','type','nameField','customField','idField','indexOf','ticketType','incident','assign','getString','Subjects','Descriptions','/contacts(','Fields','phonecall','POST','calleridnum','callDirection','queue','headers','odata-entityid','lastIndexOf','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','trigger:browser:url','remoteUri','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','tenantId','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','lodash','bluebird','request-promise','md5','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','clientId','password','clientSecret','then','access_token','catch','error','message','GET','Bearer\x20','value','isNil','validateEmail','userEmail','email','length','isdisabled','info'];(function(_0x471268,_0x5ce885){var _0x1298f3=function(_0x3f5110){while(--_0x3f5110){_0x471268['push'](_0x471268['shift']());}};_0x1298f3(++_0x5ce885);}(_0xbbb4,0x162));var _0x4bbb=function(_0x4a6f37,_0x8cfe47){_0x4a6f37=_0x4a6f37-0x0;var _0x3a4087=_0xbbb4[_0x4a6f37];return _0x3a4087;};'use strict';var _=require(_0x4bbb('0x0'));var BPromise=require(_0x4bbb('0x1'));var rp=require(_0x4bbb('0x2'));var util=require('util');var intUtil=require('./util');var md5=require(_0x4bbb('0x3'));var Redis=require(_0x4bbb('0x4'));var logger=require(_0x4bbb('0x5'))(_0x4bbb('0x6'));var config=require(_0x4bbb('0x7'));config[_0x4bbb('0x8')]=_[_0x4bbb('0x9')](config['redis'],{'host':_0x4bbb('0xa'),'port':0x18eb});var io=require(_0x4bbb('0xb'))(new Redis(config[_0x4bbb('0x8')]));function getAuthToken(_0x1ab640,_0x1bd919,_0x4dee7e){var _0x5041e3={'method':'POST','uri':_0x1bd919,'form':{'client_id':_0x1ab640[_0x4bbb('0xc')],'resource':_0x1ab640['remoteUri'],'username':_0x1ab640['username'],'password':_0x1ab640[_0x4bbb('0xd')],'grant_type':_0x4bbb('0xd'),'client_secret':_0x1ab640[_0x4bbb('0xe')]},'json':!![]};return rp(_0x5041e3)[_0x4bbb('0xf')](function(_0x41d0c6){return _0x41d0c6[_0x4bbb('0x10')];})[_0x4bbb('0x11')](function(_0x5c37a2){logger[_0x4bbb('0x12')]('['+[_0x4dee7e['toUpperCase']()]+']\x20Wrong\x20credentials!');return _0x5c37a2[_0x4bbb('0x13')];});}function getUser(_0x2d27f3,_0x2548db,_0x234d58,_0x2624ca,_0x32aea9,_0x3b73a9){return new BPromise(function(_0x502c3a,_0x19ee92){return getAuthToken(_0x2548db,_0x2624ca,_0x3b73a9)[_0x4bbb('0xf')](function(_0xe48b6a){var _0x398e9d={'method':_0x4bbb('0x14'),'uri':_0x32aea9+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':_0x4bbb('0x15')+_0xe48b6a,'OData-Version':'4.0'},'json':!![]};return rp(_0x398e9d);})['then'](function(_0x1952cc){var _0x2a1ce5=_0x1952cc[_0x4bbb('0x16')];var _0x23834c=![];var _0x1ea0ce=null;if(!_[_0x4bbb('0x17')](_0x234d58)){if(intUtil[_0x4bbb('0x18')](_0x234d58['email'])){_0x2d27f3[_0x4bbb('0x19')]=_0x234d58[_0x4bbb('0x1a')];for(_0x1ea0ce=0x0;_0x1ea0ce<_0x2a1ce5[_0x4bbb('0x1b')];_0x1ea0ce++){if(_0x2a1ce5[_0x1ea0ce]['internalemailaddress']===_0x234d58[_0x4bbb('0x1a')]&&!_0x2a1ce5[_0x1ea0ce][_0x4bbb('0x1c')]){_0x23834c=!![];logger[_0x4bbb('0x1d')]('['+[_0x3b73a9[_0x4bbb('0x1e')]()]+_0x4bbb('0x1f')+_0x2a1ce5[_0x1ea0ce][_0x4bbb('0x20')]+'!');_0x2d27f3[_0x4bbb('0x21')]=_0x2a1ce5[_0x1ea0ce]['systemuserid'];}}}}if(!_0x23834c){logger['info']('['+[_0x3b73a9['toUpperCase']()]+_0x4bbb('0x22'));_0x2d27f3[_0x4bbb('0x19')]=_0x2548db[_0x4bbb('0x23')];for(_0x1ea0ce=0x0;_0x1ea0ce<_0x2a1ce5['length'];_0x1ea0ce++){if(_0x2a1ce5[_0x1ea0ce]['internalemailaddress']===_0x2548db[_0x4bbb('0x23')]){_0x2d27f3[_0x4bbb('0x21')]=_0x2a1ce5[_0x1ea0ce][_0x4bbb('0x20')];}}}_0x502c3a(_0x2d27f3);})[_0x4bbb('0x11')](function(_0x1267a4){_0x19ee92(_0x1267a4[_0x4bbb('0x13')]);});});}function createEndUser(_0xa2fe2f,_0x1c1809,_0x979c86,_0x1d06a0,_0x1b8550,_0x5a6e01){return new BPromise(function(_0x14c7b8,_0x2ccbfa){return getAuthToken(_0x1c1809,_0x979c86,_0x5a6e01)[_0x4bbb('0xf')](function(_0x4444c1){var _0x55016f=_0x5a6e01[_0x4bbb('0x24')]()===_0x4bbb('0x25')?_0x1b8550['destcalleridnum']:_0x1b8550['calleridnum'];var _0x50b31e={'method':'POST','uri':_0x1d06a0+_0x4bbb('0x26'),'body':{'telephone1':_0x55016f,'fullname':_0x55016f,'firstname':_0x55016f,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x4bbb('0x27')+_0xa2fe2f[_0x4bbb('0x21')]+')'},'headers':{'Authorization':'Bearer\x20'+_0x4444c1,'OData-Version':_0x4bbb('0x28')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x50b31e);})[_0x4bbb('0xf')](function(_0x1755a6){var _0x325bf4=_0x1755a6['headers']['odata-entityid'];var _0x1e811e=_0x325bf4[_0x4bbb('0x29')](_0x325bf4['lastIndexOf']('(')+0x1,_0x325bf4['lastIndexOf'](')'));_0xa2fe2f[_0x4bbb('0x2a')]=_0x1e811e;_0x14c7b8(_0xa2fe2f);})[_0x4bbb('0x11')](function(_0xd7f5b1){_0x2ccbfa(_0xd7f5b1['message']);});});}function getEndUser(_0x58702f,_0x3c9c31,_0xb0fe09,_0x36a2dc,_0x42c785,_0x517870){return new BPromise(function(_0x46ad18,_0x40d23a){var _0x32c209=_0x517870[_0x4bbb('0x24')]()===_0x4bbb('0x25')?_0x42c785[_0x4bbb('0x2b')]:_0x42c785['calleridnum'];return getAuthToken(_0x3c9c31,_0xb0fe09,_0x517870)[_0x4bbb('0xf')](function(_0x1e9ce2){var _0x138693={'method':'GET','uri':_0x36a2dc+'contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27'+_0x32c209['replace']('+','%2b')+'\x27','headers':{'Authorization':_0x4bbb('0x15')+_0x1e9ce2,'If-None-Match':null,'OData-Version':_0x4bbb('0x28')},'json':!![]};return rp(_0x138693);})[_0x4bbb('0xf')](function(_0x146d0a){var _0x4c93b3=null;if(_0x146d0a){var _0x293d3d=_0x146d0a[_0x4bbb('0x16')];var _0x144301=![];for(_0x4c93b3=0x0;_0x4c93b3<_0x293d3d[_0x4bbb('0x1b')];_0x4c93b3++){if(_0x293d3d[_0x4c93b3]['telephone1']===_0x32c209){_0x144301=!![];_0x58702f['enduserId']=_0x293d3d[_0x4c93b3][_0x4bbb('0x2c')];}}if(_0x144301){_0x46ad18(_0x58702f);}else{return createEndUser(_0x58702f,_0x3c9c31,_0xb0fe09,_0x36a2dc,_0x42c785,_0x517870)[_0x4bbb('0xf')](function(_0x3131ed){logger['info']('['+[_0x517870['toUpperCase']()]+_0x4bbb('0x2d'),_0x3131ed[_0x4bbb('0x2a')]);_0x46ad18(_0x3131ed);});}}else{return createEndUser(_0x58702f,_0x3c9c31,_0xb0fe09,_0x36a2dc,_0x42c785,_0x517870)['then'](function(_0x4b4d82){logger[_0x4bbb('0x1d')]('['+[_0x517870[_0x4bbb('0x1e')]()]+_0x4bbb('0x2e'),_0x4b4d82[_0x4bbb('0x2a')]);_0x46ad18(_0x4b4d82);});}});});}function getCustomFields(_0x59dbae,_0x3e6f74,_0x2400d2){var _0x1200df={};if(_0x59dbae[_0x4bbb('0x1b')]>0x0){_[_0x4bbb('0x2f')](_0x59dbae,function(_0x1e04a5){if(_[_0x4bbb('0x30')](['string','picklist'],_0x1e04a5[_0x4bbb('0x31')])&&_0x1e04a5[_0x4bbb('0x32')]&&!_0x1e04a5[_0x4bbb('0x33')]){var _0x45283b=_0x1e04a5[_0x4bbb('0x34')][_0x4bbb('0x24')]();var _0x4bea46=_0x45283b['substring'](0x0,_0x45283b[_0x4bbb('0x35')]('_'));var _0x3025cc=_0x45283b[_0x4bbb('0x29')](_0x45283b[_0x4bbb('0x35')]('_')+0x1);if(_0x4bea46===_0x2400d2){_0x1200df[_0x3025cc]=_0x1e04a5['content'];}}});}return _0x1200df;}function getTicket(_0x5a34ec,_0x2f4000,_0x27665b,_0x52476c,_0x5e6394,_0x24addd,_0x22c6b2){return new BPromise(function(_0x2bd146,_0x4f8bda){var _0x45ae7d;return getAuthToken(_0x2f4000,_0x27665b,_0x22c6b2)[_0x4bbb('0xf')](function(_0xe9d062){if(_0x24addd[_0x4bbb('0x36')]===_0x4bbb('0x37')){_0x45ae7d={'method':'POST','uri':_0x52476c+'incidents','body':Object[_0x4bbb('0x38')]({},{'title':intUtil[_0x4bbb('0x39')](_0x24addd[_0x4bbb('0x3a')],_0x5e6394,'\x20'),'description':intUtil['getString'](_0x24addd[_0x4bbb('0x3b')],_0x5e6394,'\x0a'),'customerid_contact@odata.bind':_0x4bbb('0x3c')+_0x5a34ec['enduserId']+')','ownerid@odata.bind':_0x4bbb('0x27')+_0x5a34ec[_0x4bbb('0x21')]+')','caseorigincode':'1'},getCustomFields(_0x24addd[_0x4bbb('0x3d')],_0x5e6394,_0x24addd[_0x4bbb('0x36')])),'headers':{'Authorization':_0x4bbb('0x15')+_0xe9d062,'OData-Version':_0x4bbb('0x28')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x24addd[_0x4bbb('0x36')]===_0x4bbb('0x3e')){_0x45ae7d={'method':_0x4bbb('0x3f'),'uri':_0x52476c+'phonecalls','body':Object['assign']({},{'subject':intUtil[_0x4bbb('0x39')](_0x24addd[_0x4bbb('0x3a')],_0x5e6394,'\x20'),'phonenumber':String(_0x5e6394[_0x4bbb('0x40')]),'description':intUtil[_0x4bbb('0x39')](_0x24addd[_0x4bbb('0x3b')],_0x5e6394,'\x0a'),'regardingobjectid_contact@odata.bind':_0x4bbb('0x3c')+_0x5a34ec['enduserId']+')','ownerid@odata.bind':_0x4bbb('0x27')+_0x5a34ec[_0x4bbb('0x21')]+')','directioncode':_0x5a34ec['callDirection']==='queue'?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0x4bbb('0x27')+_0x5a34ec['userId']+')','participationtypemask':_0x5a34ec[_0x4bbb('0x41')]===_0x4bbb('0x42')?0x2:0x1},{'partyid_contact@odata.bind':_0x4bbb('0x3c')+_0x5a34ec[_0x4bbb('0x2a')]+')','participationtypemask':_0x5a34ec['callDirection']===_0x4bbb('0x42')?0x1:0x2}]},getCustomFields(_0x24addd[_0x4bbb('0x3d')],_0x5e6394,_0x24addd[_0x4bbb('0x36')])),'headers':{'Authorization':_0x4bbb('0x15')+_0xe9d062,'OData-Version':_0x4bbb('0x28')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x45ae7d);})[_0x4bbb('0xf')](function(_0x2272ed){var _0x1e6c79=_0x2272ed[_0x4bbb('0x43')][_0x4bbb('0x44')];var _0x1c59bf=_0x1e6c79[_0x4bbb('0x29')](_0x1e6c79[_0x4bbb('0x45')]('(')+0x1,_0x1e6c79[_0x4bbb('0x45')](')'));_0x5a34ec[_0x4bbb('0x46')]=_0x1c59bf;_0x2bd146(_0x5a34ec);})[_0x4bbb('0x11')](function(_0x19fde1){_0x4f8bda(_0x19fde1[_0x4bbb('0x13')]);});});}function emit(_0x129e03,_0x284158,_0x4535df,_0x252c44){var _0xde073e={'uri':util[_0x4bbb('0x47')](_0x4bbb('0x48'),_0x129e03,_0x4535df,_0x252c44)};io['to'](util[_0x4bbb('0x47')](_0x4bbb('0x49'),_0x284158))['emit'](_0x4bbb('0x4a'),_0xde073e);}exports['cs']=function(_0x11fdab,_0x5b983a,_0x42b58b,_0x160a2b,_0x37f1a6,_0x4e490e,_0x2cd978,_0x34572e){var _0x3863a4={};_0x4e490e[_0x4bbb('0x4b')]=intUtil[_0x4bbb('0x4c')](_0x4e490e['remoteUri']);_0x4e490e[_0x4bbb('0x4d')]=intUtil[_0x4bbb('0x4c')](_0x4e490e[_0x4bbb('0x4d')]);_0x3863a4[_0x4bbb('0x41')]=_0x34572e===_0x4bbb('0x42')||_0x34572e===_0x4bbb('0x4e')?_0x4bbb('0x42'):_0x4bbb('0x25');var _0x9a652=util[_0x4bbb('0x47')](_0x4bbb('0x4f'),_0x4e490e[_0x4bbb('0x4b')]);var _0x199dde=util[_0x4bbb('0x47')](_0x4bbb('0x50'),_0x4e490e[_0x4bbb('0x51')]);var _0x177a64=util[_0x4bbb('0x47')](_0x4bbb('0x52'),_0x4e490e[_0x4bbb('0x4d')],_0x5b983a[_0x4bbb('0x53')],md5(_0x5b983a[_0x4bbb('0x53')]));if(_0x37f1a6&&_0x37f1a6['monitor_format']){logger[_0x4bbb('0x1d')](_0x4bbb('0x54'),_0x4bbb('0x55'));_0x5b983a[_0x4bbb('0x56')]=_0x177a64;}else if(_0x2cd978&&_0x2cd978[_0x4bbb('0x57')]&&_0x2cd978[_0x4bbb('0x57')]!==_0x4bbb('0x58')){logger[_0x4bbb('0x1d')](_0x4bbb('0x59'),_0x4bbb('0x55'));_0x5b983a[_0x4bbb('0x56')]=_0x177a64;}else{_0x5b983a[_0x4bbb('0x56')]='';}return getUser(_0x3863a4,_0x4e490e,_0x160a2b,_0x199dde,_0x9a652,_0x34572e)[_0x4bbb('0xf')](function(_0x3cbfc5){logger[_0x4bbb('0x1d')]('['+_0x34572e[_0x4bbb('0x1e')]()+_0x4bbb('0x5a'),_0x3cbfc5[_0x4bbb('0x21')]);logger[_0x4bbb('0x1d')]('['+_0x34572e[_0x4bbb('0x1e')]()+_0x4bbb('0x5b'),_0x3cbfc5[_0x4bbb('0x19')]);return getEndUser(_0x3cbfc5,_0x4e490e,_0x199dde,_0x9a652,_0x5b983a,_0x34572e);})[_0x4bbb('0xf')](function(_0x3cdc04){logger['info']('['+_0x34572e[_0x4bbb('0x1e')]()+_0x4bbb('0x5c'),_0x3cdc04[_0x4bbb('0x2a')]);logger[_0x4bbb('0x1d')]('['+_0x34572e[_0x4bbb('0x1e')]()+']\x20The\x20Enduser\x20phone\x20is:',_0x5b983a[_0x4bbb('0x40')]);return getTicket(_0x3cdc04,_0x4e490e,_0x199dde,_0x9a652,_0x5b983a,_0x42b58b,_0x34572e);})[_0x4bbb('0xf')](function(_0x20b375){logger[_0x4bbb('0x1d')](util[_0x4bbb('0x47')]('['+_0x34572e['toUpperCase']()+_0x4bbb('0x5d'),_0x42b58b[_0x4bbb('0x36')],_0x20b375[_0x4bbb('0x46')]));logger['info'](util['format']('['+_0x34572e[_0x4bbb('0x1e')]()+_0x4bbb('0x5e'),_0x34572e));if(_0x34572e!==_0x4bbb('0x4e')){logger[_0x4bbb('0x1d')]('['+_0x34572e[_0x4bbb('0x1e')]()+']',_0x4bbb('0x5f'));emit(_0x4e490e[_0x4bbb('0x4b')],_0x160a2b['name'],_0x42b58b[_0x4bbb('0x36')],_0x20b375['ticketId']);}})['catch'](function(_0x76979c){logger[_0x4bbb('0x12')]('['+_0x34572e['toUpperCase']()+']\x20Error\x20running\x20Dynamics365\x20integration',util['inspect'](_0x76979c,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 45168ad..2e39e7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e24=['find','contact','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','%s/api/v2/agents/me','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','debug','[HTTP]','stringify','GET','map','forEach','string','picklist','type','nameField','toLowerCase','includes','idField','customField','content','variable','variableName','push','Variable','queue','serverUrl','stripTrailingSlash','recordingURL','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','%s/helpdesk/tickets/%d','error','[QUEUE]','none','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','[OUTBOUND]','user:%s','catch','monitor_format','lastevent','toUpperCase','lodash','request-promise','ioredis','./util','../../../../config/logger','freshdesk','redis','defaults','application/json','emit','info','Creating\x20new\x20ticket...','Caller\x20-\x20%s','calleridname','calleridnum','getString','Tags','name','custom_fields','mapValues','keyBy','value','format','%s/api/v2/tickets','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','remoteUri','length','Agent\x20found!'];(function(_0x238cff,_0x426708){var _0x13ed66=function(_0x28e0c9){while(--_0x28e0c9){_0x238cff['push'](_0x238cff['shift']());}};_0x13ed66(++_0x426708);}(_0x0e24,0x1eb));var _0x40e2=function(_0x5d2803,_0xf375bd){_0x5d2803=_0x5d2803-0x0;var _0xdcad2c=_0x0e24[_0x5d2803];return _0xdcad2c;};'use strict';var _=require(_0x40e2('0x0'));var rp=require(_0x40e2('0x1'));var md5=require('md5');var util=require('util');var Redis=require(_0x40e2('0x2'));var intUtil=require(_0x40e2('0x3'));var config=require('../../../../config/environment');var logger=require(_0x40e2('0x4'))(_0x40e2('0x5'));config[_0x40e2('0x6')]=_[_0x40e2('0x7')](config[_0x40e2('0x6')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var headers={'Content-Type':_0x40e2('0x8'),'Accept':_0x40e2('0x8')};function emit(_0x2799e7,_0x289615,_0x598f41){io['to'](_0x2799e7)[_0x40e2('0x9')](_0x289615,_0x598f41);}function getTicket(_0x44cb64,_0x213183,_0x1658b0,_0x58aa17,_0x3a4edc){logger[_0x40e2('0xa')](_0x40e2('0xb'));var _0x2dbc31=_['merge']({'responder_id':_0x213183['id'],'requester_id':_0x1658b0['id'],'name':util['format'](_0x40e2('0xc'),_0x3a4edc[_0x40e2('0xd')]),'phone':_0x3a4edc[_0x40e2('0xe')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x40e2('0xf')](_0x58aa17['Subjects'],_0x3a4edc,'\x20'),'description':intUtil[_0x40e2('0xf')](_0x58aa17['Descriptions'],_0x3a4edc,'<br>'),'tags':getTags(_0x58aa17[_0x40e2('0x10')],_0x40e2('0x11'))},getCustomFields(_0x58aa17['Fields'],_0x3a4edc));_0x2dbc31[_0x40e2('0x12')]=_[_0x40e2('0x13')](_[_0x40e2('0x14')](_0x2dbc31[_0x40e2('0x12')],'id'),_0x40e2('0x15'));return request({'uri':util[_0x40e2('0x16')](_0x40e2('0x17'),_0x44cb64['remoteUri']),'method':'POST','body':_0x2dbc31})[_0x40e2('0x18')](function(_0x98220c){logger[_0x40e2('0xa')](_0x40e2('0x19'));return _0x98220c;});}function getUser(_0x2bb9fb,_0xd6f495){if(intUtil[_0x40e2('0x1a')](_0xd6f495)){return request({'uri':util['format'](_0x40e2('0x1b'),_0x2bb9fb[_0x40e2('0x1c')]),'qs':{'email':_0xd6f495}})[_0x40e2('0x18')](function(_0x22493f){if(_0x22493f[_0x40e2('0x1d')]){logger[_0x40e2('0xa')](_0x40e2('0x1e'));return _[_0x40e2('0x1f')](_0x22493f,function(_0x509ba3){return _0x509ba3[_0x40e2('0x20')]['email']===_0xd6f495;});}else{logger[_0x40e2('0xa')](_0x40e2('0x21'));return request({'uri':util[_0x40e2('0x16')]('%s/api/v2/agents/me',_0x2bb9fb[_0x40e2('0x1c')])})[_0x40e2('0x18')](function(_0x1dffa8){logger[_0x40e2('0xa')](_0x40e2('0x22'));return _0x1dffa8;});}});}else{logger[_0x40e2('0xa')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x40e2('0x16')](_0x40e2('0x23'),_0x2bb9fb[_0x40e2('0x1c')])})[_0x40e2('0x18')](function(_0x352af3){logger[_0x40e2('0xa')](_0x40e2('0x22'));return _0x352af3;});}}function getEndUser(_0x323083,_0x59794a,_0x49aad0){logger[_0x40e2('0xa')]('Searching\x20enduser\x20with\x20phone',_0x49aad0);return request({'uri':util[_0x40e2('0x16')](_0x40e2('0x24'),_0x323083['remoteUri']),'qs':{'phone':_0x49aad0}})['then'](function(_0x8242d){if(_0x8242d['length']){logger[_0x40e2('0xa')](_0x40e2('0x25'));return _[_0x40e2('0x1f')](_0x8242d,{'phone':_0x49aad0});}else{logger[_0x40e2('0xa')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x40e2('0x16')](_0x40e2('0x24'),_0x323083[_0x40e2('0x1c')]),'method':'POST','body':{'name':_0x59794a,'phone':_0x49aad0}})[_0x40e2('0x18')](function(_0x3ea86f){logger['info'](_0x40e2('0x26'));return _0x3ea86f;});}});}function getAuth(_0x6352f9){return util['format'](_0x40e2('0x27'),new Buffer(_0x6352f9[_0x40e2('0x28')]+':X')[_0x40e2('0x29')](_0x40e2('0x2a')));}function request(_0x201c9d){logger[_0x40e2('0x2b')](_0x40e2('0x2c'),JSON[_0x40e2('0x2d')](_0x201c9d));return rp(_[_0x40e2('0x7')](_0x201c9d,{'method':_0x40e2('0x2e'),'headers':headers,'json':!![]}));}function getTags(_0x26031f,_0x6740b8){var _0x475152=[];if(_0x26031f&&_0x26031f[_0x40e2('0x1d')]>0x0){_0x475152=_[_0x40e2('0x2f')](_0x26031f,_0x6740b8);}return _0x475152;}function getCustomFields(_0x5a15d4,_0x56f0ff){var _0x424b21=[];var _0x4e1c86={'custom_fields':[]};if(_0x5a15d4['length']>0x0){_[_0x40e2('0x30')](_0x5a15d4,function(_0x5187e5){if(_['includes']([_0x40e2('0x31'),_0x40e2('0x32')],_0x5187e5[_0x40e2('0x33')])&&_0x5187e5[_0x40e2('0x34')]&&!_0x5187e5['customField']){_0x4e1c86[_0x5187e5[_0x40e2('0x34')][_0x40e2('0x35')]()]=_0x5187e5['content']['toString']();}else if(_[_0x40e2('0x36')]([_0x40e2('0x31'),_0x40e2('0x32')],_0x5187e5[_0x40e2('0x33')])&&_0x5187e5[_0x40e2('0x37')]&&_0x5187e5[_0x40e2('0x38')]){_0x4e1c86[_0x40e2('0x12')]['push']({'id':_0x5187e5[_0x40e2('0x37')],'value':_0x5187e5[_0x40e2('0x39')][_0x40e2('0x29')]()});}else if(_0x5187e5[_0x40e2('0x33')]===_0x40e2('0x3a')&&_0x5187e5['variableName']&&_0x5187e5[_0x40e2('0x37')]&&_0x5187e5[_0x40e2('0x38')]){_0x56f0ff[_0x5187e5[_0x40e2('0x3b')]]&&_0x4e1c86['custom_fields'][_0x40e2('0x3c')]({'id':_0x5187e5['idField'],'value':_0x56f0ff[_0x5187e5[_0x40e2('0x3b')]][_0x40e2('0x29')]()});}else if(_0x5187e5['type']==='customVariable'&&_0x5187e5['Variable']&&_0x5187e5[_0x40e2('0x3d')][_0x40e2('0x11')]&&_0x5187e5[_0x40e2('0x37')]&&_0x5187e5[_0x40e2('0x38')]){_0x56f0ff[_0x5187e5[_0x40e2('0x3d')][_0x40e2('0x11')][_0x40e2('0x35')]()]&&_0x4e1c86[_0x40e2('0x12')][_0x40e2('0x3c')]({'id':_0x5187e5['idField'],'value':_0x56f0ff[_0x5187e5[_0x40e2('0x3d')][_0x40e2('0x11')][_0x40e2('0x35')]()][_0x40e2('0x29')]()});}});}return _0x4e1c86;}exports[_0x40e2('0x3e')]=function(_0x5cdcb7,_0x43edce,_0x1024df,_0x12b5d7,_0x4951b8,_0xd61a5a){var _0x21a55f,_0x114a5a;_0xd61a5a[_0x40e2('0x1c')]=intUtil['stripTrailingSlash'](_0xd61a5a[_0x40e2('0x1c')]);_0xd61a5a[_0x40e2('0x3f')]=intUtil[_0x40e2('0x40')](_0xd61a5a[_0x40e2('0x3f')]);if(_0x4951b8&&_0x4951b8['monitor_format']){logger[_0x40e2('0xa')]('[QUEUE]','Recording\x20is\x20enabled!');_0x43edce[_0x40e2('0x41')]=util[_0x40e2('0x16')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0xd61a5a[_0x40e2('0x3f')],_0x43edce[_0x40e2('0x42')],md5(_0x43edce[_0x40e2('0x42')]));}else{_0x43edce[_0x40e2('0x41')]='';}headers[_0x40e2('0x43')]=getAuth(_0xd61a5a);return getUser(_0xd61a5a,_0x12b5d7[_0x40e2('0x44')])[_0x40e2('0x18')](function(_0x186130){_0x21a55f=_0x186130;logger['info'](_0x40e2('0x45'),_0x21a55f['id']);return getEndUser(_0xd61a5a,_0x43edce[_0x40e2('0xd')],_0x43edce[_0x40e2('0xe')]);})[_0x40e2('0x18')](function(_0x6096d8){_0x114a5a=_0x6096d8;logger[_0x40e2('0xa')]('The\x20Enduser\x20ID\x20is:',_0x114a5a['id']);return getTicket(_0xd61a5a,_0x21a55f,_0x114a5a,_0x1024df,_0x43edce);})[_0x40e2('0x18')](function(_0x59ba63){if(_0x59ba63&&_0x59ba63['id']){logger[_0x40e2('0xa')](_0x40e2('0x19'));logger[_0x40e2('0xa')](_0x40e2('0x46'),_0x59ba63['id']);logger[_0x40e2('0xa')]('[QUEUE]',_0x40e2('0x47'));emit(util[_0x40e2('0x16')]('user:%s',_0x12b5d7['name']),'trigger:browser:url',{'uri':util['format'](_0x40e2('0x48'),_0xd61a5a[_0x40e2('0x1c')],_0x59ba63['id'])});}})['catch'](function(_0x45281f){logger[_0x40e2('0x49')](_0x40e2('0x4a'),JSON[_0x40e2('0x2d')](_0x45281f));});};exports['outbound']=function(_0x29126c,_0x4ebff1,_0x4aa860,_0x5af268,_0x1cf69a,_0x5f3bd2,_0x2f11d8){var _0x1f2bd3,_0x53fee3;_0x5f3bd2['remoteUri']=intUtil[_0x40e2('0x40')](_0x5f3bd2[_0x40e2('0x1c')]);_0x5f3bd2[_0x40e2('0x3f')]=intUtil[_0x40e2('0x40')](_0x5f3bd2[_0x40e2('0x3f')]);if(_0x2f11d8&&_0x2f11d8['recordingFormat']&&_0x2f11d8['recordingFormat']!==_0x40e2('0x4b')){logger[_0x40e2('0xa')]('[OUTBOUND]',_0x40e2('0x4c'));_0x4ebff1[_0x40e2('0x41')]=util[_0x40e2('0x16')](_0x40e2('0x4d'),_0x5f3bd2[_0x40e2('0x3f')],_0x4ebff1[_0x40e2('0x42')],md5(_0x4ebff1[_0x40e2('0x42')]));}headers[_0x40e2('0x43')]=getAuth(_0x5f3bd2);return getUser(_0x5f3bd2,_0x5af268[_0x40e2('0x44')])['then'](function(_0x3b5711){_0x1f2bd3=_0x3b5711;logger['info'](_0x40e2('0x45'),_0x1f2bd3['id']);return getEndUser(_0x5f3bd2,_0x4ebff1[_0x40e2('0x4e')],_0x4ebff1[_0x40e2('0x4f')]);})['then'](function(_0x4bf13d){_0x53fee3=_0x4bf13d;logger[_0x40e2('0xa')](_0x40e2('0x50'),_0x53fee3['id']);return getTicket(_0x5f3bd2,_0x1f2bd3,_0x53fee3,_0x4aa860,_0x4ebff1);})['then'](function(_0x15367e){if(_0x15367e&&_0x15367e['id']){logger[_0x40e2('0xa')](_0x40e2('0x19'));logger[_0x40e2('0xa')](_0x40e2('0x46'),_0x15367e['id']);logger[_0x40e2('0xa')](_0x40e2('0x51'),_0x40e2('0x47'));emit(util[_0x40e2('0x16')](_0x40e2('0x52'),_0x5af268[_0x40e2('0x11')]),'trigger:browser:url',{'uri':util[_0x40e2('0x16')](_0x40e2('0x48'),_0x5f3bd2[_0x40e2('0x1c')],_0x15367e['id'])});}})[_0x40e2('0x53')](function(_0x34f3f3){logger[_0x40e2('0x49')](_0x40e2('0x51'),JSON[_0x40e2('0x2d')](_0x34f3f3));});};exports['unmanaged']=function(_0x2c4d90,_0x2985a6,_0x36ac16,_0x78f03e,_0x4ed44,_0x2c92c2){var _0x2d5874,_0x226634;_0x2c92c2[_0x40e2('0x1c')]=intUtil[_0x40e2('0x40')](_0x2c92c2['remoteUri']);_0x2c92c2[_0x40e2('0x3f')]=intUtil[_0x40e2('0x40')](_0x2c92c2[_0x40e2('0x3f')]);if(_0x4ed44&&_0x4ed44[_0x40e2('0x54')]){logger[_0x40e2('0xa')]('['+_0x2985a6[_0x40e2('0x55')][_0x40e2('0x56')]()+']',_0x40e2('0x4c'));_0x2985a6[_0x40e2('0x41')]=util[_0x40e2('0x16')](_0x40e2('0x4d'),_0x2c92c2[_0x40e2('0x3f')],_0x2985a6[_0x40e2('0x42')],md5(_0x2985a6[_0x40e2('0x42')]));}else{_0x2985a6[_0x40e2('0x41')]='';}headers[_0x40e2('0x43')]=getAuth(_0x2c92c2);return getUser(_0x2c92c2,'')[_0x40e2('0x18')](function(_0x4854b0){_0x2d5874=_0x4854b0;logger[_0x40e2('0xa')](_0x40e2('0x45'),_0x2d5874['id']);return getEndUser(_0x2c92c2,_0x2985a6[_0x40e2('0xd')],_0x2985a6['calleridnum']);})[_0x40e2('0x18')](function(_0x45a924){_0x226634=_0x45a924;logger[_0x40e2('0xa')](_0x40e2('0x50'),_0x226634['id']);return getTicket(_0x2c92c2,_0x2d5874,_0x226634,_0x36ac16,_0x2985a6);})[_0x40e2('0x18')](function(_0x488da9){if(_0x488da9){logger[_0x40e2('0xa')](_0x40e2('0x19'));logger['info'](_0x40e2('0x46'),_0x488da9['id']);}})['catch'](function(_0x5175ca){logger[_0x40e2('0x49')]('['+_0x2985a6[_0x40e2('0x55')][_0x40e2('0x56')]()+']',JSON[_0x40e2('0x2d')](_0x5175ca));});};
\ No newline at end of file
+var _0x12bb=['name','Fields','mapValues','keyBy','custom_fields','%s/api/v2/tickets','remoteUri','then','info','Ticket\x20created!','%s/api/v2/agents','Agent\x20found!','find','contact','email','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','length','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','Enduser\x20created.','Basic\x20%s','apiKey','toString','[HTTP]','stringify','GET','map','forEach','includes','string','type','nameField','customField','toLowerCase','content','picklist','idField','push','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','Authorization','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','%s/helpdesk/tickets/%d','catch','outbound','recordingFormat','[OUTBOUND]','uniqueid','destcalleridname','destcalleridnum','error','unmanaged','lastevent','toUpperCase','lodash','request-promise','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','localhost','application/json','emit','Creating\x20new\x20ticket...','format','calleridname','getString','<br>','Tags'];(function(_0x1c2f29,_0x5a2668){var _0x258465=function(_0x30332f){while(--_0x30332f){_0x1c2f29['push'](_0x1c2f29['shift']());}};_0x258465(++_0x5a2668);}(_0x12bb,0x1b0));var _0xb12b=function(_0x4d45bb,_0x2dccca){_0x4d45bb=_0x4d45bb-0x0;var _0x5eb1cb=_0x12bb[_0x4d45bb];return _0x5eb1cb;};'use strict';var _=require(_0xb12b('0x0'));var rp=require(_0xb12b('0x1'));var md5=require('md5');var util=require('util');var Redis=require(_0xb12b('0x2'));var intUtil=require(_0xb12b('0x3'));var config=require(_0xb12b('0x4'));var logger=require(_0xb12b('0x5'))(_0xb12b('0x6'));config[_0xb12b('0x7')]=_[_0xb12b('0x8')](config[_0xb12b('0x7')],{'host':_0xb12b('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var headers={'Content-Type':_0xb12b('0xa'),'Accept':'application/json'};function emit(_0x533f5e,_0x4301a2,_0x18eb2c){io['to'](_0x533f5e)[_0xb12b('0xb')](_0x4301a2,_0x18eb2c);}function getTicket(_0x29920d,_0x30e0c4,_0x31213a,_0x4d517e,_0x31b3c4){logger['info'](_0xb12b('0xc'));var _0x4cac69=_['merge']({'responder_id':_0x30e0c4['id'],'requester_id':_0x31213a['id'],'name':util[_0xb12b('0xd')]('Caller\x20-\x20%s',_0x31b3c4[_0xb12b('0xe')]),'phone':_0x31b3c4['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xb12b('0xf')](_0x4d517e['Subjects'],_0x31b3c4,'\x20'),'description':intUtil[_0xb12b('0xf')](_0x4d517e['Descriptions'],_0x31b3c4,_0xb12b('0x10')),'tags':getTags(_0x4d517e[_0xb12b('0x11')],_0xb12b('0x12'))},getCustomFields(_0x4d517e[_0xb12b('0x13')],_0x31b3c4));_0x4cac69['custom_fields']=_[_0xb12b('0x14')](_[_0xb12b('0x15')](_0x4cac69[_0xb12b('0x16')],'id'),'value');return request({'uri':util[_0xb12b('0xd')](_0xb12b('0x17'),_0x29920d[_0xb12b('0x18')]),'method':'POST','body':_0x4cac69})[_0xb12b('0x19')](function(_0x1ff122){logger[_0xb12b('0x1a')](_0xb12b('0x1b'));return _0x1ff122;});}function getUser(_0x7e563d,_0x2dfb3f){if(intUtil['validateEmail'](_0x2dfb3f)){return request({'uri':util[_0xb12b('0xd')](_0xb12b('0x1c'),_0x7e563d[_0xb12b('0x18')]),'qs':{'email':_0x2dfb3f}})[_0xb12b('0x19')](function(_0x446517){if(_0x446517['length']){logger[_0xb12b('0x1a')](_0xb12b('0x1d'));return _[_0xb12b('0x1e')](_0x446517,function(_0x3c6250){return _0x3c6250[_0xb12b('0x1f')][_0xb12b('0x20')]===_0x2dfb3f;});}else{logger['info']('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xb12b('0xd')]('%s/api/v2/agents/me',_0x7e563d['remoteUri'])})['then'](function(_0x48c917){logger[_0xb12b('0x1a')]('Admin\x20account\x20selected.');return _0x48c917;});}});}else{logger[_0xb12b('0x1a')](_0xb12b('0x21'));return request({'uri':util[_0xb12b('0xd')](_0xb12b('0x22'),_0x7e563d[_0xb12b('0x18')])})[_0xb12b('0x19')](function(_0x1672c4){logger[_0xb12b('0x1a')](_0xb12b('0x23'));return _0x1672c4;});}}function getEndUser(_0x11f18c,_0x1b2d89,_0x1dd3f3){logger[_0xb12b('0x1a')](_0xb12b('0x24'),_0x1dd3f3);return request({'uri':util['format'](_0xb12b('0x25'),_0x11f18c[_0xb12b('0x18')]),'qs':{'phone':_0x1dd3f3}})[_0xb12b('0x19')](function(_0x3380a5){if(_0x3380a5[_0xb12b('0x26')]){logger[_0xb12b('0x1a')](_0xb12b('0x27'));return _['find'](_0x3380a5,{'phone':_0x1dd3f3});}else{logger[_0xb12b('0x1a')](_0xb12b('0x28'));return request({'uri':util[_0xb12b('0xd')](_0xb12b('0x25'),_0x11f18c[_0xb12b('0x18')]),'method':_0xb12b('0x29'),'body':{'name':_0x1b2d89,'phone':_0x1dd3f3}})['then'](function(_0x543587){logger[_0xb12b('0x1a')](_0xb12b('0x2a'));return _0x543587;});}});}function getAuth(_0x4decc6){return util[_0xb12b('0xd')](_0xb12b('0x2b'),new Buffer(_0x4decc6[_0xb12b('0x2c')]+':X')[_0xb12b('0x2d')]('base64'));}function request(_0x530417){logger['debug'](_0xb12b('0x2e'),JSON[_0xb12b('0x2f')](_0x530417));return rp(_[_0xb12b('0x8')](_0x530417,{'method':_0xb12b('0x30'),'headers':headers,'json':!![]}));}function getTags(_0x1a7e85,_0xc96a9e){var _0x489baf=[];if(_0x1a7e85&&_0x1a7e85['length']>0x0){_0x489baf=_[_0xb12b('0x31')](_0x1a7e85,_0xc96a9e);}return _0x489baf;}function getCustomFields(_0x288606,_0x54716d){var _0x2a055e=[];var _0x2b05cb={'custom_fields':[]};if(_0x288606[_0xb12b('0x26')]>0x0){_[_0xb12b('0x32')](_0x288606,function(_0x3e6712){if(_[_0xb12b('0x33')]([_0xb12b('0x34'),'picklist'],_0x3e6712[_0xb12b('0x35')])&&_0x3e6712[_0xb12b('0x36')]&&!_0x3e6712[_0xb12b('0x37')]){_0x2b05cb[_0x3e6712[_0xb12b('0x36')][_0xb12b('0x38')]()]=_0x3e6712[_0xb12b('0x39')]['toString']();}else if(_[_0xb12b('0x33')](['string',_0xb12b('0x3a')],_0x3e6712['type'])&&_0x3e6712[_0xb12b('0x3b')]&&_0x3e6712[_0xb12b('0x37')]){_0x2b05cb[_0xb12b('0x16')][_0xb12b('0x3c')]({'id':_0x3e6712[_0xb12b('0x3b')],'value':_0x3e6712[_0xb12b('0x39')][_0xb12b('0x2d')]()});}else if(_0x3e6712[_0xb12b('0x35')]==='variable'&&_0x3e6712[_0xb12b('0x3d')]&&_0x3e6712[_0xb12b('0x3b')]&&_0x3e6712[_0xb12b('0x37')]){_0x54716d[_0x3e6712[_0xb12b('0x3d')]]&&_0x2b05cb['custom_fields']['push']({'id':_0x3e6712[_0xb12b('0x3b')],'value':_0x54716d[_0x3e6712[_0xb12b('0x3d')]][_0xb12b('0x2d')]()});}else if(_0x3e6712[_0xb12b('0x35')]===_0xb12b('0x3e')&&_0x3e6712[_0xb12b('0x3f')]&&_0x3e6712[_0xb12b('0x3f')][_0xb12b('0x12')]&&_0x3e6712[_0xb12b('0x3b')]&&_0x3e6712[_0xb12b('0x37')]){_0x54716d[_0x3e6712[_0xb12b('0x3f')][_0xb12b('0x12')][_0xb12b('0x38')]()]&&_0x2b05cb[_0xb12b('0x16')][_0xb12b('0x3c')]({'id':_0x3e6712['idField'],'value':_0x54716d[_0x3e6712['Variable'][_0xb12b('0x12')][_0xb12b('0x38')]()][_0xb12b('0x2d')]()});}});}return _0x2b05cb;}exports[_0xb12b('0x40')]=function(_0x3a50b3,_0x56adda,_0x160d84,_0x294df1,_0x572be0,_0x3bbf43){var _0x2f861f,_0x450da8;_0x3bbf43[_0xb12b('0x18')]=intUtil[_0xb12b('0x41')](_0x3bbf43['remoteUri']);_0x3bbf43[_0xb12b('0x42')]=intUtil['stripTrailingSlash'](_0x3bbf43['serverUrl']);if(_0x572be0&&_0x572be0[_0xb12b('0x43')]){logger[_0xb12b('0x1a')](_0xb12b('0x44'),_0xb12b('0x45'));_0x56adda[_0xb12b('0x46')]=util[_0xb12b('0xd')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3bbf43[_0xb12b('0x42')],_0x56adda['uniqueid'],md5(_0x56adda['uniqueid']));}else{_0x56adda[_0xb12b('0x46')]='';}headers[_0xb12b('0x47')]=getAuth(_0x3bbf43);return getUser(_0x3bbf43,_0x294df1[_0xb12b('0x20')])[_0xb12b('0x19')](function(_0x170539){_0x2f861f=_0x170539;logger[_0xb12b('0x1a')](_0xb12b('0x48'),_0x2f861f['id']);return getEndUser(_0x3bbf43,_0x56adda[_0xb12b('0xe')],_0x56adda[_0xb12b('0x49')]);})[_0xb12b('0x19')](function(_0x4cbc0d){_0x450da8=_0x4cbc0d;logger['info'](_0xb12b('0x4a'),_0x450da8['id']);return getTicket(_0x3bbf43,_0x2f861f,_0x450da8,_0x160d84,_0x56adda);})['then'](function(_0x1d67a7){if(_0x1d67a7&&_0x1d67a7['id']){logger[_0xb12b('0x1a')](_0xb12b('0x1b'));logger[_0xb12b('0x1a')](_0xb12b('0x4b'),_0x1d67a7['id']);logger['info'](_0xb12b('0x44'),_0xb12b('0x4c'));emit(util[_0xb12b('0xd')]('user:%s',_0x294df1[_0xb12b('0x12')]),_0xb12b('0x4d'),{'uri':util[_0xb12b('0xd')](_0xb12b('0x4e'),_0x3bbf43[_0xb12b('0x18')],_0x1d67a7['id'])});}})[_0xb12b('0x4f')](function(_0x285953){logger['error'](_0xb12b('0x44'),JSON[_0xb12b('0x2f')](_0x285953));});};exports[_0xb12b('0x50')]=function(_0x5e3535,_0x31e3ed,_0x12c617,_0x11293c,_0x5ce76c,_0x4c40a6,_0x14b47f){var _0x5b3551,_0x4760f9;_0x4c40a6[_0xb12b('0x18')]=intUtil['stripTrailingSlash'](_0x4c40a6[_0xb12b('0x18')]);_0x4c40a6[_0xb12b('0x42')]=intUtil[_0xb12b('0x41')](_0x4c40a6[_0xb12b('0x42')]);if(_0x14b47f&&_0x14b47f['recordingFormat']&&_0x14b47f[_0xb12b('0x51')]!=='none'){logger[_0xb12b('0x1a')](_0xb12b('0x52'),_0xb12b('0x45'));_0x31e3ed[_0xb12b('0x46')]=util[_0xb12b('0xd')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4c40a6[_0xb12b('0x42')],_0x31e3ed[_0xb12b('0x53')],md5(_0x31e3ed[_0xb12b('0x53')]));}headers[_0xb12b('0x47')]=getAuth(_0x4c40a6);return getUser(_0x4c40a6,_0x11293c[_0xb12b('0x20')])['then'](function(_0x5e6283){_0x5b3551=_0x5e6283;logger[_0xb12b('0x1a')]('The\x20User\x20ID\x20is:',_0x5b3551['id']);return getEndUser(_0x4c40a6,_0x31e3ed[_0xb12b('0x54')],_0x31e3ed[_0xb12b('0x55')]);})[_0xb12b('0x19')](function(_0x473d77){_0x4760f9=_0x473d77;logger[_0xb12b('0x1a')]('The\x20Enduser\x20ID\x20is:',_0x4760f9['id']);return getTicket(_0x4c40a6,_0x5b3551,_0x4760f9,_0x12c617,_0x31e3ed);})['then'](function(_0x3a454c){if(_0x3a454c&&_0x3a454c['id']){logger[_0xb12b('0x1a')](_0xb12b('0x1b'));logger[_0xb12b('0x1a')](_0xb12b('0x4b'),_0x3a454c['id']);logger[_0xb12b('0x1a')](_0xb12b('0x52'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format']('user:%s',_0x11293c[_0xb12b('0x12')]),_0xb12b('0x4d'),{'uri':util[_0xb12b('0xd')](_0xb12b('0x4e'),_0x4c40a6[_0xb12b('0x18')],_0x3a454c['id'])});}})['catch'](function(_0x3880fb){logger[_0xb12b('0x56')](_0xb12b('0x52'),JSON['stringify'](_0x3880fb));});};exports[_0xb12b('0x57')]=function(_0x331684,_0x161a2e,_0x21fc65,_0x578426,_0x3e7d21,_0x585a58){var _0x25265c,_0x1d797f;_0x585a58['remoteUri']=intUtil[_0xb12b('0x41')](_0x585a58['remoteUri']);_0x585a58[_0xb12b('0x42')]=intUtil['stripTrailingSlash'](_0x585a58[_0xb12b('0x42')]);if(_0x3e7d21&&_0x3e7d21['monitor_format']){logger[_0xb12b('0x1a')]('['+_0x161a2e[_0xb12b('0x58')][_0xb12b('0x59')]()+']',_0xb12b('0x45'));_0x161a2e[_0xb12b('0x46')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x585a58['serverUrl'],_0x161a2e[_0xb12b('0x53')],md5(_0x161a2e[_0xb12b('0x53')]));}else{_0x161a2e['recordingURL']='';}headers['Authorization']=getAuth(_0x585a58);return getUser(_0x585a58,'')[_0xb12b('0x19')](function(_0x14d6c5){_0x25265c=_0x14d6c5;logger[_0xb12b('0x1a')](_0xb12b('0x48'),_0x25265c['id']);return getEndUser(_0x585a58,_0x161a2e[_0xb12b('0xe')],_0x161a2e['calleridnum']);})['then'](function(_0x5a9913){_0x1d797f=_0x5a9913;logger['info'](_0xb12b('0x4a'),_0x1d797f['id']);return getTicket(_0x585a58,_0x25265c,_0x1d797f,_0x21fc65,_0x161a2e);})[_0xb12b('0x19')](function(_0x3e1d95){if(_0x3e1d95){logger['info'](_0xb12b('0x1b'));logger['info']('The\x20Ticket\x20ID\x20is:',_0x3e1d95['id']);}})[_0xb12b('0x4f')](function(_0x38189b){logger[_0xb12b('0x56')]('['+_0x161a2e['lastevent']['toUpperCase']()+']',JSON[_0xb12b('0x2f')](_0x38189b));});};
\ No newline at end of file
index 2c00b8e..fc4e5dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8507=['lodash','md5','util','moment','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','freshsales','redis','localhost','GET','/api/selector/owners','info','Getting\x20admin\x20information','then','users','email','adminEmail','adminId','Requested\x20Resource\x20not\x20Found','catch','error','message','headers','Getting\x20user\x20list','agentEmail','length','userId','User\x20found:','userEmail','toUpperCase','/api/lookup?q=','&entities=contact','find','contacts','format','contactNumber','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','Contact\x20created:','POST','YYYY-MM-DDTHH:mm:ss','contact','/api/tasks','getString','Subjects','Descriptions','Contact','add','task','Task\x20created:','ticketId','/contacts/','user:%s','trigger:browser:url','apiKey','remoteUri','stripTrailingSlash','serverUrl','outbound','calleridnum','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Freshsales\x20integration','inspect'];(function(_0x4ede7f,_0x669555){var _0x2877d1=function(_0x27816b){while(--_0x27816b){_0x4ede7f['push'](_0x4ede7f['shift']());}};_0x2877d1(++_0x669555);}(_0x8507,0x9a));var _0x7850=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x8507[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x7850('0x0'));var rp=require('request-promise');var md5=require(_0x7850('0x1'));var util=require(_0x7850('0x2'));var moment=require(_0x7850('0x3'));var Promise=require(_0x7850('0x4'));var Redis=require(_0x7850('0x5'));var intUtil=require(_0x7850('0x6'));var config=require(_0x7850('0x7'));var logger=require(_0x7850('0x8'))(_0x7850('0x9'));config[_0x7850('0xa')]=_['defaults'](config['redis'],{'host':_0x7850('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function getAdminId(_0x4767ad,_0x402b63,_0x527aee,_0x1806fc){return new Promise(function(_0x5921d0,_0x1b03df){var _0xd17f=![];var _0x3aebc6={'method':_0x7850('0xc'),'uri':_0x1806fc+_0x7850('0xd'),'json':!![]};_0x3aebc6['headers']=_0x527aee;logger[_0x7850('0xe')](_0x7850('0xf'));return rp(_0x3aebc6)[_0x7850('0x10')](function(_0x2ca75c){if(_0x2ca75c){var _0x3dbfee=_0x2ca75c[_0x7850('0x11')];var _0x517b9f=null;for(_0x517b9f=0x0;_0x517b9f<_0x3dbfee['length'];_0x517b9f++){if(_0x3dbfee[_0x517b9f][_0x7850('0x12')]===_0x4767ad[_0x7850('0x13')]){_0x4767ad[_0x7850('0x14')]=_0x3dbfee[_0x517b9f]['id'];_0xd17f=!![];}}if(_0xd17f){logger[_0x7850('0xe')]('Admin\x20found:',_0x4767ad[_0x7850('0x14')]);_0x5921d0(_0x4767ad);}else{_0x1b03df({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x1b03df({'statusCode':0x194,'message':_0x7850('0x15')});}})[_0x7850('0x16')](function(_0x1fd1c2){logger[_0x7850('0x17')]('['+[_0x402b63['toUpperCase']()]+']',_0x1fd1c2[_0x7850('0x18')]);_0x1b03df(_0x1fd1c2);});});}function getUser(_0x47e8a4,_0x115a6b,_0x1c3ebf){return function(_0x2431aa){return new Promise(function(_0x452edb,_0x2c36e0){var _0x3f7d06={'method':_0x7850('0xc'),'uri':_0x1c3ebf+'/api/selector/owners','json':!![]};_0x3f7d06[_0x7850('0x19')]=_0x115a6b;logger[_0x7850('0xe')](_0x7850('0x1a'));return rp(_0x3f7d06)['then'](function(_0x18fbe8){if(_0x18fbe8){var _0x79c380=_0x18fbe8[_0x7850('0x11')];var _0x50e304=![];var _0x2c703c=null;if(_0x2431aa[_0x7850('0x1b')]!==null){logger[_0x7850('0xe')]('Getting\x20user\x20with\x20email',_0x2431aa[_0x7850('0x1b')]);_0x2431aa['userEmail']=_0x2431aa[_0x7850('0x1b')];for(_0x2c703c=0x0;_0x2c703c<_0x79c380[_0x7850('0x1c')];_0x2c703c++){if(_0x79c380[_0x2c703c][_0x7850('0x12')]===_0x2431aa[_0x7850('0x1b')]){_0x50e304=!![];_0x2431aa[_0x7850('0x1d')]=_0x79c380[_0x2c703c]['id'];logger[_0x7850('0xe')](_0x7850('0x1e'),_0x2431aa[_0x7850('0x1d')]);}}}if(!_0x50e304){logger[_0x7850('0xe')]('Admin\x20selected');_0x2431aa[_0x7850('0x1f')]=_0x2431aa[_0x7850('0x13')];_0x2431aa[_0x7850('0x1d')]=_0x2431aa[_0x7850('0x14')];_0x50e304=!![];}if(_0x50e304){_0x452edb(_0x2431aa);}else{_0x2c36e0({'statusCode':0x194,'message':_0x7850('0x15')});}}else{_0x2c36e0({'statusCode':0x194,'message':_0x7850('0x15')});}})['catch'](function(_0x241398){logger[_0x7850('0x17')]('['+[_0x47e8a4[_0x7850('0x20')]()]+']',_0x241398[_0x7850('0x18')]);_0x2c36e0(_0x241398);});});};}function searchContact(_0x2cb3d0,_0x24b2bb,_0x573c9e,_0x28d648){return new Promise(function(_0x3c2869,_0x1c40fd){var _0x117c21={'method':'GET','headers':_0x24b2bb,'uri':_0x2cb3d0+_0x7850('0x21')+_0x28d648+'&f='+_0x573c9e+_0x7850('0x22'),'json':!![]};rp(_0x117c21)[_0x7850('0x10')](function(_0xe9f3cf){var _0x31496d=_[_0x7850('0x23')](_0xe9f3cf[_0x7850('0x24')][_0x7850('0x24')],[_0x573c9e,_0x28d648]);_0x3c2869(_0x31496d);})[_0x7850('0x16')](function(_0x5cd59e){_0x1c40fd(_0x5cd59e);});});}function getEndUser(_0x10355a,_0x4c3ca2,_0x4627ea){return function(_0x2e113e){return new Promise(function(_0x40d6a6,_0x4058a6){logger['info'](util[_0x7850('0x25')]('Searching\x20contact\x20with\x20phone\x20%s',_0x2e113e[_0x7850('0x26')]));searchContact(_0x4627ea,_0x4c3ca2,'mobile_number',_0x2e113e['contactNumber'])[_0x7850('0x10')](function(_0x21e43a){if(_0x21e43a){_0x2e113e[_0x7850('0x27')]=_0x21e43a['id'];logger['info'](_0x7850('0x28'),_0x2e113e[_0x7850('0x27')]);return _0x40d6a6(_0x2e113e);}searchContact(_0x4627ea,_0x4c3ca2,_0x7850('0x29'),_0x2e113e[_0x7850('0x26')])[_0x7850('0x10')](function(_0xf93901){if(_0xf93901){_0x2e113e[_0x7850('0x27')]=_0xf93901['id'];logger['info'](_0x7850('0x2a'),_0x2e113e[_0x7850('0x27')]);return _0x40d6a6(_0x2e113e);}createEndUser(_0x2e113e,_0x10355a,_0x4c3ca2,_0x4627ea)[_0x7850('0x10')](function(_0x108eb9){logger[_0x7850('0xe')](_0x7850('0x2b'),_0x108eb9[_0x7850('0x27')]);return _0x40d6a6(_0x108eb9);});});})[_0x7850('0x16')](function(_0x15d280){_0x4058a6(_0x15d280);});});};}function createEndUser(_0x57b61a,_0x11dd99,_0x544f15,_0x463242){return new Promise(function(_0x323f02,_0x1fa731){var _0x51253a=moment();var _0x2f004b={'method':_0x7850('0x2c'),'uri':_0x463242+'/api/contacts','body':{'contact':{'last_name':_0x57b61a['contactNumber'],'work_number':_0x57b61a[_0x7850('0x26')],'mobile_number':_0x57b61a[_0x7850('0x26')],'owner_id':_0x57b61a[_0x7850('0x1d')],'created_at':_0x51253a['format'](_0x7850('0x2d'))}},'json':!![]};_0x2f004b['headers']=_0x544f15;logger['info']('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x2f004b)[_0x7850('0x10')](function(_0x5c5f4c){_0x57b61a[_0x7850('0x27')]=_0x5c5f4c[_0x7850('0x2e')]['id'];_0x323f02(_0x57b61a);})[_0x7850('0x16')](function(_0x5eb1fc){logger[_0x7850('0x17')]('['+[_0x11dd99['toUpperCase']()]+']',_0x5eb1fc[_0x7850('0x18')]);_0x1fa731(_0x5eb1fc[_0x7850('0x18')]);});});}function getTicket(_0x3821fb,_0x6299e5,_0x22f2d4,_0x25ad56,_0x577f8a){return function(_0x5c2482){logger['info']('Creating\x20new\x20task');return new Promise(function(_0x48db54,_0x457458){var _0x19f32c=moment();var _0x1b51ce={'method':_0x7850('0x2c'),'uri':_0x22f2d4+_0x7850('0x2f'),'body':{'title':intUtil[_0x7850('0x30')](_0x25ad56[_0x7850('0x31')],_0x577f8a,'\x20'),'description':intUtil[_0x7850('0x30')](_0x25ad56[_0x7850('0x32')],_0x577f8a,'\x0a'),'owner_id':_0x5c2482['userId'],'creater_id':_0x5c2482[_0x7850('0x14')],'targetable_id':_0x5c2482[_0x7850('0x27')],'targetable_type':_0x7850('0x33'),'created_at':_0x19f32c[_0x7850('0x25')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x19f32c[_0x7850('0x34')](0x1e,'m')[_0x7850('0x25')](_0x7850('0x2d'))},'json':!![]};_0x1b51ce[_0x7850('0x19')]=_0x6299e5;return rp(_0x1b51ce)[_0x7850('0x10')](function(_0x4d2eab){_0x5c2482['ticketId']=_0x4d2eab[_0x7850('0x35')]['id'];logger['info'](_0x7850('0x36'),_0x5c2482[_0x7850('0x37')]);_0x48db54(_0x5c2482);})[_0x7850('0x16')](function(_0xdf6a76){logger[_0x7850('0x17')]('['+[_0x3821fb[_0x7850('0x20')]()]+']',_0xdf6a76[_0x7850('0x18')]);_0x457458(_0xdf6a76[_0x7850('0x18')]);});});};}function emit(_0x10cd80,_0x2edfc8,_0xe71e33){var _0x4ac0c9={'uri':_0x10cd80+_0x7850('0x38')+_0xe71e33};io['to'](util[_0x7850('0x25')](_0x7850('0x39'),_0x2edfc8))['emit'](_0x7850('0x3a'),_0x4ac0c9);}exports['cs']=function(_0x4254ba,_0x3f5b39,_0x3ab0b3,_0xe791cd,_0xc47c46,_0x5a9338,_0x3d8bf2,_0x5b41f7){var _0x1f7d32={};var _0x58fe08={'Authorization':'Token\x20token='+_0x5a9338[_0x7850('0x3b')]};_0x5a9338[_0x7850('0x3c')]=intUtil[_0x7850('0x3d')](_0x5a9338[_0x7850('0x3c')]);_0x5a9338['serverUrl']=intUtil[_0x7850('0x3d')](_0x5a9338[_0x7850('0x3e')]);var _0x1a4f84=_0x5a9338[_0x7850('0x3c')];_0x1f7d32[_0x7850('0x13')]=_0x5a9338['username'];_0x1f7d32[_0x7850('0x26')]=_0x5b41f7['toLowerCase']()===_0x7850('0x3f')?_0x3f5b39['destcalleridnum']:_0x3f5b39[_0x7850('0x40')];_0x1f7d32['callDirection']=_0x5b41f7===_0x7850('0x41')||_0x5b41f7===_0x7850('0x42')?_0x7850('0x41'):_0x7850('0x3f');if(_0xe791cd){_0x1f7d32[_0x7850('0x1b')]=_0xe791cd[_0x7850('0x12')];}var _0x5073e0=util[_0x7850('0x25')](_0x7850('0x43'),_0x5a9338[_0x7850('0x3e')],_0x3f5b39[_0x7850('0x44')],md5(_0x3f5b39['uniqueid']));if(_0xc47c46&&_0xc47c46['monitor_format']){logger[_0x7850('0xe')]('[QUEUE]','Recording\x20is\x20enabled!');_0x3f5b39[_0x7850('0x45')]=_0x5073e0;}else if(_0x3d8bf2&&_0x3d8bf2['recordingFormat']&&_0x3d8bf2[_0x7850('0x46')]!==_0x7850('0x47')){logger[_0x7850('0xe')](_0x7850('0x48'),'Recording\x20is\x20enabled!');_0x3f5b39[_0x7850('0x45')]=_0x5073e0;}else{_0x3f5b39[_0x7850('0x45')]='';}return getAdminId(_0x1f7d32,_0x5b41f7,_0x58fe08,_0x1a4f84)[_0x7850('0x10')](getUser(_0x5b41f7,_0x58fe08,_0x1a4f84))['then'](getEndUser(_0x5b41f7,_0x58fe08,_0x1a4f84))[_0x7850('0x10')](getTicket(_0x5b41f7,_0x58fe08,_0x1a4f84,_0x3ab0b3,_0x3f5b39))[_0x7850('0x10')](function(_0x1c4080){logger[_0x7850('0xe')](util[_0x7850('0x25')](_0x7850('0x49'),_0x1c4080[_0x7850('0x37')]));if(_0x5b41f7!==_0x7850('0x42')){logger[_0x7850('0xe')]('['+[_0x5b41f7[_0x7850('0x20')]()]+']',_0x7850('0x4a'));emit(_0x1a4f84,_0xe791cd['name'],_0x1c4080[_0x7850('0x27')]);}})[_0x7850('0x16')](function(_0x418557){logger[_0x7850('0x17')]('['+[_0x5b41f7[_0x7850('0x20')]()]+_0x7850('0x4b'),util[_0x7850('0x4c')](_0x418557,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x20be=['freshsales','redis','defaults','localhost','socket.io-emitter','GET','headers','info','Getting\x20admin\x20information','users','length','email','adminEmail','adminId','Requested\x20Resource\x20not\x20Found','catch','error','message','/api/selector/owners','Getting\x20user\x20list','then','agentEmail','userEmail','userId','User\x20found:','Admin\x20selected','toUpperCase','/api/lookup?q=','&f=','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','endUserId','Contact\x20found\x20mobile_number:','Contact\x20created:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','contact','Creating\x20new\x20task','/api/tasks','getString','Descriptions','add','Task\x20created:','ticketId','emit','trigger:browser:url','apiKey','remoteUri','serverUrl','stripTrailingSlash','username','toLowerCase','outbound','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','recordingFormat','none','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','lodash','request-promise','md5','ioredis','./util','../../../../config/environment','../../../../config/logger'];(function(_0x3d38ae,_0x51102b){var _0x3757ee=function(_0x22bac8){while(--_0x22bac8){_0x3d38ae['push'](_0x3d38ae['shift']());}};_0x3757ee(++_0x51102b);}(_0x20be,0xe3));var _0xe20b=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x20be[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0xe20b('0x0'));var rp=require(_0xe20b('0x1'));var md5=require(_0xe20b('0x2'));var util=require('util');var moment=require('moment');var Promise=require('bluebird');var Redis=require(_0xe20b('0x3'));var intUtil=require(_0xe20b('0x4'));var config=require(_0xe20b('0x5'));var logger=require(_0xe20b('0x6'))(_0xe20b('0x7'));config[_0xe20b('0x8')]=_[_0xe20b('0x9')](config[_0xe20b('0x8')],{'host':_0xe20b('0xa'),'port':0x18eb});var io=require(_0xe20b('0xb'))(new Redis(config['redis']));function getAdminId(_0x2135c2,_0x581a7c,_0x213c66,_0x547be6){return new Promise(function(_0x18d841,_0x22a3fa){var _0x43a484=![];var _0x4c2e44={'method':_0xe20b('0xc'),'uri':_0x547be6+'/api/selector/owners','json':!![]};_0x4c2e44[_0xe20b('0xd')]=_0x213c66;logger[_0xe20b('0xe')](_0xe20b('0xf'));return rp(_0x4c2e44)['then'](function(_0xa393ed){if(_0xa393ed){var _0x5d22da=_0xa393ed[_0xe20b('0x10')];var _0x20783e=null;for(_0x20783e=0x0;_0x20783e<_0x5d22da[_0xe20b('0x11')];_0x20783e++){if(_0x5d22da[_0x20783e][_0xe20b('0x12')]===_0x2135c2[_0xe20b('0x13')]){_0x2135c2[_0xe20b('0x14')]=_0x5d22da[_0x20783e]['id'];_0x43a484=!![];}}if(_0x43a484){logger[_0xe20b('0xe')]('Admin\x20found:',_0x2135c2[_0xe20b('0x14')]);_0x18d841(_0x2135c2);}else{_0x22a3fa({'statusCode':0x194,'message':_0xe20b('0x15')});}}else{_0x22a3fa({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0xe20b('0x16')](function(_0x3e01cc){logger[_0xe20b('0x17')]('['+[_0x581a7c['toUpperCase']()]+']',_0x3e01cc[_0xe20b('0x18')]);_0x22a3fa(_0x3e01cc);});});}function getUser(_0xc62d3d,_0x24b882,_0x245325){return function(_0x28391b){return new Promise(function(_0x5baf6c,_0x2d0b15){var _0xfe1dbd={'method':_0xe20b('0xc'),'uri':_0x245325+_0xe20b('0x19'),'json':!![]};_0xfe1dbd['headers']=_0x24b882;logger[_0xe20b('0xe')](_0xe20b('0x1a'));return rp(_0xfe1dbd)[_0xe20b('0x1b')](function(_0x5e2be2){if(_0x5e2be2){var _0x539f54=_0x5e2be2[_0xe20b('0x10')];var _0x494972=![];var _0xc8dee7=null;if(_0x28391b[_0xe20b('0x1c')]!==null){logger[_0xe20b('0xe')]('Getting\x20user\x20with\x20email',_0x28391b[_0xe20b('0x1c')]);_0x28391b[_0xe20b('0x1d')]=_0x28391b[_0xe20b('0x1c')];for(_0xc8dee7=0x0;_0xc8dee7<_0x539f54[_0xe20b('0x11')];_0xc8dee7++){if(_0x539f54[_0xc8dee7]['email']===_0x28391b[_0xe20b('0x1c')]){_0x494972=!![];_0x28391b[_0xe20b('0x1e')]=_0x539f54[_0xc8dee7]['id'];logger[_0xe20b('0xe')](_0xe20b('0x1f'),_0x28391b['userId']);}}}if(!_0x494972){logger[_0xe20b('0xe')](_0xe20b('0x20'));_0x28391b[_0xe20b('0x1d')]=_0x28391b['adminEmail'];_0x28391b[_0xe20b('0x1e')]=_0x28391b[_0xe20b('0x14')];_0x494972=!![];}if(_0x494972){_0x5baf6c(_0x28391b);}else{_0x2d0b15({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x2d0b15({'statusCode':0x194,'message':_0xe20b('0x15')});}})[_0xe20b('0x16')](function(_0x16deb8){logger['error']('['+[_0xc62d3d[_0xe20b('0x21')]()]+']',_0x16deb8[_0xe20b('0x18')]);_0x2d0b15(_0x16deb8);});});};}function searchContact(_0x352812,_0x1c34f8,_0x3217b7,_0x5259a4){return new Promise(function(_0x214189,_0x18cf47){var _0x3abee0={'method':_0xe20b('0xc'),'headers':_0x1c34f8,'uri':_0x352812+_0xe20b('0x22')+_0x5259a4+_0xe20b('0x23')+_0x3217b7+'&entities=contact','json':!![]};rp(_0x3abee0)['then'](function(_0x12d32d){var _0x215b54=_[_0xe20b('0x24')](_0x12d32d[_0xe20b('0x25')][_0xe20b('0x25')],[_0x3217b7,_0x5259a4]);_0x214189(_0x215b54);})[_0xe20b('0x16')](function(_0xd882a3){_0x18cf47(_0xd882a3);});});}function getEndUser(_0x4ac325,_0x38080a,_0x12305b){return function(_0x3f65ae){return new Promise(function(_0x14989f,_0x213639){logger[_0xe20b('0xe')](util[_0xe20b('0x26')](_0xe20b('0x27'),_0x3f65ae[_0xe20b('0x28')]));searchContact(_0x12305b,_0x38080a,'mobile_number',_0x3f65ae['contactNumber'])['then'](function(_0x5e74ea){if(_0x5e74ea){_0x3f65ae[_0xe20b('0x29')]=_0x5e74ea['id'];logger[_0xe20b('0xe')](_0xe20b('0x2a'),_0x3f65ae[_0xe20b('0x29')]);return _0x14989f(_0x3f65ae);}searchContact(_0x12305b,_0x38080a,'work_number',_0x3f65ae[_0xe20b('0x28')])[_0xe20b('0x1b')](function(_0x225760){if(_0x225760){_0x3f65ae[_0xe20b('0x29')]=_0x225760['id'];logger[_0xe20b('0xe')]('Contact\x20found\x20work_number:',_0x3f65ae['endUserId']);return _0x14989f(_0x3f65ae);}createEndUser(_0x3f65ae,_0x4ac325,_0x38080a,_0x12305b)[_0xe20b('0x1b')](function(_0x146246){logger[_0xe20b('0xe')](_0xe20b('0x2b'),_0x146246[_0xe20b('0x29')]);return _0x14989f(_0x146246);});});})[_0xe20b('0x16')](function(_0x12975f){_0x213639(_0x12975f);});});};}function createEndUser(_0x2f17b1,_0x371f1b,_0x447fd2,_0x3059d8){return new Promise(function(_0x346c12,_0x2af2f9){var _0x57ab96=moment();var _0x2aca43={'method':_0xe20b('0x2c'),'uri':_0x3059d8+_0xe20b('0x2d'),'body':{'contact':{'last_name':_0x2f17b1['contactNumber'],'work_number':_0x2f17b1[_0xe20b('0x28')],'mobile_number':_0x2f17b1[_0xe20b('0x28')],'owner_id':_0x2f17b1[_0xe20b('0x1e')],'created_at':_0x57ab96[_0xe20b('0x26')](_0xe20b('0x2e'))}},'json':!![]};_0x2aca43[_0xe20b('0xd')]=_0x447fd2;logger[_0xe20b('0xe')]('Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact');return rp(_0x2aca43)[_0xe20b('0x1b')](function(_0xae5c06){_0x2f17b1['endUserId']=_0xae5c06[_0xe20b('0x2f')]['id'];_0x346c12(_0x2f17b1);})[_0xe20b('0x16')](function(_0x28326b){logger[_0xe20b('0x17')]('['+[_0x371f1b['toUpperCase']()]+']',_0x28326b[_0xe20b('0x18')]);_0x2af2f9(_0x28326b[_0xe20b('0x18')]);});});}function getTicket(_0x1ffde2,_0xc4f1d4,_0x8172b4,_0x55d4a3,_0x1f6845){return function(_0x2d45f2){logger['info'](_0xe20b('0x30'));return new Promise(function(_0x287cbb,_0x5e5dbf){var _0x3d84d1=moment();var _0x108345={'method':_0xe20b('0x2c'),'uri':_0x8172b4+_0xe20b('0x31'),'body':{'title':intUtil['getString'](_0x55d4a3['Subjects'],_0x1f6845,'\x20'),'description':intUtil[_0xe20b('0x32')](_0x55d4a3[_0xe20b('0x33')],_0x1f6845,'\x0a'),'owner_id':_0x2d45f2[_0xe20b('0x1e')],'creater_id':_0x2d45f2['adminId'],'targetable_id':_0x2d45f2[_0xe20b('0x29')],'targetable_type':'Contact','created_at':_0x3d84d1[_0xe20b('0x26')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x3d84d1[_0xe20b('0x34')](0x1e,'m')[_0xe20b('0x26')](_0xe20b('0x2e'))},'json':!![]};_0x108345[_0xe20b('0xd')]=_0xc4f1d4;return rp(_0x108345)[_0xe20b('0x1b')](function(_0xe6d3d3){_0x2d45f2['ticketId']=_0xe6d3d3['task']['id'];logger[_0xe20b('0xe')](_0xe20b('0x35'),_0x2d45f2[_0xe20b('0x36')]);_0x287cbb(_0x2d45f2);})['catch'](function(_0x37fe33){logger[_0xe20b('0x17')]('['+[_0x1ffde2[_0xe20b('0x21')]()]+']',_0x37fe33['message']);_0x5e5dbf(_0x37fe33['message']);});});};}function emit(_0x2914e4,_0x4c9f1d,_0x35cbfa){var _0x3107ff={'uri':_0x2914e4+'/contacts/'+_0x35cbfa};io['to'](util[_0xe20b('0x26')]('user:%s',_0x4c9f1d))[_0xe20b('0x37')](_0xe20b('0x38'),_0x3107ff);}exports['cs']=function(_0x32b0d9,_0x1ff942,_0x1ac9a4,_0x2e119c,_0x3b31bc,_0x4e1946,_0x337f1a,_0x184c14){var _0x51c430={};var _0x85a737={'Authorization':'Token\x20token='+_0x4e1946[_0xe20b('0x39')]};_0x4e1946[_0xe20b('0x3a')]=intUtil['stripTrailingSlash'](_0x4e1946[_0xe20b('0x3a')]);_0x4e1946[_0xe20b('0x3b')]=intUtil[_0xe20b('0x3c')](_0x4e1946[_0xe20b('0x3b')]);var _0x14dd15=_0x4e1946['remoteUri'];_0x51c430[_0xe20b('0x13')]=_0x4e1946[_0xe20b('0x3d')];_0x51c430[_0xe20b('0x28')]=_0x184c14[_0xe20b('0x3e')]()===_0xe20b('0x3f')?_0x1ff942[_0xe20b('0x40')]:_0x1ff942[_0xe20b('0x41')];_0x51c430[_0xe20b('0x42')]=_0x184c14===_0xe20b('0x43')||_0x184c14===_0xe20b('0x44')?_0xe20b('0x43'):_0xe20b('0x3f');if(_0x2e119c){_0x51c430[_0xe20b('0x1c')]=_0x2e119c[_0xe20b('0x12')];}var _0x53d344=util[_0xe20b('0x26')](_0xe20b('0x45'),_0x4e1946[_0xe20b('0x3b')],_0x1ff942[_0xe20b('0x46')],md5(_0x1ff942[_0xe20b('0x46')]));if(_0x3b31bc&&_0x3b31bc[_0xe20b('0x47')]){logger[_0xe20b('0xe')](_0xe20b('0x48'),'Recording\x20is\x20enabled!');_0x1ff942['recordingURL']=_0x53d344;}else if(_0x337f1a&&_0x337f1a[_0xe20b('0x49')]&&_0x337f1a[_0xe20b('0x49')]!==_0xe20b('0x4a')){logger[_0xe20b('0xe')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x1ff942[_0xe20b('0x4b')]=_0x53d344;}else{_0x1ff942[_0xe20b('0x4b')]='';}return getAdminId(_0x51c430,_0x184c14,_0x85a737,_0x14dd15)[_0xe20b('0x1b')](getUser(_0x184c14,_0x85a737,_0x14dd15))[_0xe20b('0x1b')](getEndUser(_0x184c14,_0x85a737,_0x14dd15))[_0xe20b('0x1b')](getTicket(_0x184c14,_0x85a737,_0x14dd15,_0x1ac9a4,_0x1ff942))[_0xe20b('0x1b')](function(_0x425399){logger[_0xe20b('0xe')](util[_0xe20b('0x26')](_0xe20b('0x4c'),_0x425399[_0xe20b('0x36')]));if(_0x184c14!==_0xe20b('0x44')){logger[_0xe20b('0xe')]('['+[_0x184c14[_0xe20b('0x21')]()]+']',_0xe20b('0x4d'));emit(_0x14dd15,_0x2e119c['name'],_0x425399[_0xe20b('0x29')]);}})[_0xe20b('0x16')](function(_0x41e1d2){logger['error']('['+[_0x184c14[_0xe20b('0x21')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util['inspect'](_0x41e1d2,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 2cd058a..210d235 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x529f=['[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','lodash','./zendesk','./salesforce','./sugarcrm','./freshdesk','./zoho','./desk','./vtiger','./servicenow','./dynamics365','./freshsales','zendesk','sugarcrm','freshdesk','zoho','desk','vtiger','dynamics365','freshsales','servicenow','exec','data1','toLowerCase','data2','Configurations','data3','queue','routeId','outbound','EVENT\x20UNKNOWN','salesforce','log','unknown\x20integration','../../../../config/logger','error'];(function(_0x4039e9,_0x1d7872){var _0x144a0a=function(_0x127c98){while(--_0x127c98){_0x4039e9['push'](_0x4039e9['shift']());}};_0x144a0a(++_0x1d7872);}(_0x529f,0x159));var _0xf529=function(_0x88533b,_0x5e3c97){_0x88533b=_0x88533b-0x0;var _0x275928=_0x529f[_0x88533b];return _0x275928;};'use strict';var _=require(_0xf529('0x0'));var util=require('util');var zendesk=require(_0xf529('0x1'));var salesforce=require(_0xf529('0x2'));var sugarcrm=require(_0xf529('0x3'));var freshdesk=require(_0xf529('0x4'));var zoho=require(_0xf529('0x5'));var desk=require(_0xf529('0x6'));var vtiger=require(_0xf529('0x7'));var servicenow=require(_0xf529('0x8'));var dynamics365=require(_0xf529('0x9'));var freshsales=require(_0xf529('0xa'));var integrations=[_0xf529('0xb'),'salesforce',_0xf529('0xc'),_0xf529('0xd'),_0xf529('0xe'),_0xf529('0xf'),_0xf529('0x10'),_0xf529('0x11'),_0xf529('0x12'),_0xf529('0x13')];exports[_0xf529('0x14')]=function(_0x125c0c,_0x21ba58,_0x144657,_0x463de4,_0x43caca,_0x1df300){if(_0x144657){if(_['includes'](integrations,_0x125c0c[_0xf529('0x15')][_0xf529('0x16')]())){try{var _0x499a99=null;var _0x3dd61d='';var _0x459139=_0x144657[_0x125c0c[_0xf529('0x15')]['toLowerCase']()];if(_0x459139){var _0x21881b=_0x459139[_0x125c0c[_0xf529('0x17')]];if(_0x21881b){var _0x11605c=_['find'](_0x21881b[_0xf529('0x18')],{'id':parseInt(_0x125c0c[_0xf529('0x19')],0xa)});if(_0x11605c){if(_0x463de4){if(_0x43caca&&_0x21ba58[_0xf529('0x1a')]){_0x3dd61d='queue';}else if(_0x21ba58[_0xf529('0x1b')]){_0x3dd61d=_0xf529('0x1c');}else{console['log'](_0xf529('0x1d'),_0x21ba58);}}else{_0x3dd61d='unmanaged';}switch(_0x125c0c[_0xf529('0x15')]['toLowerCase']()){case _0xf529('0xb'):zendesk[_0x3dd61d](_0x125c0c,_0x21ba58,_0x11605c,_0x463de4,_0x43caca,_0x21881b,_0x1df300);break;case _0xf529('0x1e'):salesforce[_0x3dd61d](_0x125c0c,_0x21ba58,_0x11605c,_0x463de4,_0x43caca,_0x21881b,_0x1df300);break;case'sugarcrm':sugarcrm[_0x3dd61d](_0x125c0c,_0x21ba58,_0x11605c,_0x463de4,_0x43caca,_0x21881b,_0x1df300);break;case _0xf529('0xd'):freshdesk[_0x3dd61d](_0x125c0c,_0x21ba58,_0x11605c,_0x463de4,_0x43caca,_0x21881b,_0x1df300);break;case _0xf529('0xe'):zoho[_0x3dd61d](_0x125c0c,_0x21ba58,_0x11605c,_0x463de4,_0x43caca,_0x21881b,_0x1df300);break;case'desk':desk[_0x3dd61d](_0x125c0c,_0x21ba58,_0x11605c,_0x463de4,_0x43caca,_0x21881b,_0x1df300);break;case _0xf529('0x10'):vtiger[_0x3dd61d](_0x125c0c,_0x21ba58,_0x11605c,_0x463de4,_0x43caca,_0x21881b,_0x1df300);break;case _0xf529('0x12'):freshsales['cs'](_0x125c0c,_0x21ba58,_0x11605c,_0x463de4,_0x43caca,_0x21881b,_0x1df300,_0x3dd61d);break;case _0xf529('0x13'):servicenow['cs'](_0x125c0c,_0x21ba58,_0x11605c,_0x463de4,_0x43caca,_0x21881b,_0x1df300,_0x3dd61d);break;case _0xf529('0x11'):dynamics365['cs'](_0x125c0c,_0x21ba58,_0x11605c,_0x463de4,_0x43caca,_0x21881b,_0x1df300,_0x3dd61d);break;default:console[_0xf529('0x1f')](_0xf529('0x20'));}}else{_0x499a99=require(_0xf529('0x21'))(_0x125c0c[_0xf529('0x15')][_0xf529('0x16')]());_0x499a99[_0xf529('0x22')](_0xf529('0x23'),util[_0xf529('0x24')](_0xf529('0x25'),_0x125c0c[_0xf529('0x15')][_0xf529('0x16')](),_0x125c0c[_0xf529('0x19')]));}}else{_0x499a99=require('../../../../config/logger')(_0x125c0c[_0xf529('0x15')]['toLowerCase']());_0x499a99[_0xf529('0x22')](_0xf529('0x23'),util[_0xf529('0x24')]('%s\x20account\x20#%s\x20not\x20found',_0x125c0c['data1'][_0xf529('0x16')](),_0x125c0c['data2']));}}else{}}catch(_0x348d82){console[_0xf529('0x22')](_0x348d82);}}}};
\ No newline at end of file
+var _0x1b0b=['./salesforce','./sugarcrm','./freshdesk','./zoho','./desk','./vtiger','./servicenow','./dynamics365','./freshsales','sugarcrm','freshdesk','zoho','desk','vtiger','dynamics365','freshsales','servicenow','exec','includes','data1','toLowerCase','find','data3','queue','routeId','EVENT\x20UNKNOWN','unmanaged','zendesk','salesforce','log','unknown\x20integration','../../../../config/logger','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','%s\x20account\x20#%s\x20not\x20found','./zendesk'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x1b0b,0x1c7));var _0xb1b0=function(_0x2235bf,_0x3a06a7){_0x2235bf=_0x2235bf-0x0;var _0x4c3a64=_0x1b0b[_0x2235bf];return _0x4c3a64;};'use strict';var _=require('lodash');var util=require('util');var zendesk=require(_0xb1b0('0x0'));var salesforce=require(_0xb1b0('0x1'));var sugarcrm=require(_0xb1b0('0x2'));var freshdesk=require(_0xb1b0('0x3'));var zoho=require(_0xb1b0('0x4'));var desk=require(_0xb1b0('0x5'));var vtiger=require(_0xb1b0('0x6'));var servicenow=require(_0xb1b0('0x7'));var dynamics365=require(_0xb1b0('0x8'));var freshsales=require(_0xb1b0('0x9'));var integrations=['zendesk','salesforce',_0xb1b0('0xa'),_0xb1b0('0xb'),_0xb1b0('0xc'),_0xb1b0('0xd'),_0xb1b0('0xe'),_0xb1b0('0xf'),_0xb1b0('0x10'),_0xb1b0('0x11')];exports[_0xb1b0('0x12')]=function(_0x3b82db,_0x4f9267,_0x333dec,_0x251f04,_0x4a5e81,_0x2f4cf6){if(_0x333dec){if(_[_0xb1b0('0x13')](integrations,_0x3b82db[_0xb1b0('0x14')][_0xb1b0('0x15')]())){try{var _0x176054=null;var _0x4fff67='';var _0x5eafe4=_0x333dec[_0x3b82db[_0xb1b0('0x14')]['toLowerCase']()];if(_0x5eafe4){var _0x308915=_0x5eafe4[_0x3b82db['data2']];if(_0x308915){var _0x3362b4=_[_0xb1b0('0x16')](_0x308915['Configurations'],{'id':parseInt(_0x3b82db[_0xb1b0('0x17')],0xa)});if(_0x3362b4){if(_0x251f04){if(_0x4a5e81&&_0x4f9267[_0xb1b0('0x18')]){_0x4fff67=_0xb1b0('0x18');}else if(_0x4f9267[_0xb1b0('0x19')]){_0x4fff67='outbound';}else{console['log'](_0xb1b0('0x1a'),_0x4f9267);}}else{_0x4fff67=_0xb1b0('0x1b');}switch(_0x3b82db[_0xb1b0('0x14')][_0xb1b0('0x15')]()){case _0xb1b0('0x1c'):zendesk[_0x4fff67](_0x3b82db,_0x4f9267,_0x3362b4,_0x251f04,_0x4a5e81,_0x308915,_0x2f4cf6);break;case _0xb1b0('0x1d'):salesforce[_0x4fff67](_0x3b82db,_0x4f9267,_0x3362b4,_0x251f04,_0x4a5e81,_0x308915,_0x2f4cf6);break;case'sugarcrm':sugarcrm[_0x4fff67](_0x3b82db,_0x4f9267,_0x3362b4,_0x251f04,_0x4a5e81,_0x308915,_0x2f4cf6);break;case _0xb1b0('0xb'):freshdesk[_0x4fff67](_0x3b82db,_0x4f9267,_0x3362b4,_0x251f04,_0x4a5e81,_0x308915,_0x2f4cf6);break;case _0xb1b0('0xc'):zoho[_0x4fff67](_0x3b82db,_0x4f9267,_0x3362b4,_0x251f04,_0x4a5e81,_0x308915,_0x2f4cf6);break;case _0xb1b0('0xd'):desk[_0x4fff67](_0x3b82db,_0x4f9267,_0x3362b4,_0x251f04,_0x4a5e81,_0x308915,_0x2f4cf6);break;case _0xb1b0('0xe'):vtiger[_0x4fff67](_0x3b82db,_0x4f9267,_0x3362b4,_0x251f04,_0x4a5e81,_0x308915,_0x2f4cf6);break;case _0xb1b0('0x10'):freshsales['cs'](_0x3b82db,_0x4f9267,_0x3362b4,_0x251f04,_0x4a5e81,_0x308915,_0x2f4cf6,_0x4fff67);break;case'servicenow':servicenow['cs'](_0x3b82db,_0x4f9267,_0x3362b4,_0x251f04,_0x4a5e81,_0x308915,_0x2f4cf6,_0x4fff67);break;case _0xb1b0('0xf'):dynamics365['cs'](_0x3b82db,_0x4f9267,_0x3362b4,_0x251f04,_0x4a5e81,_0x308915,_0x2f4cf6,_0x4fff67);break;default:console[_0xb1b0('0x1e')](_0xb1b0('0x1f'));}}else{_0x176054=require(_0xb1b0('0x20'))(_0x3b82db[_0xb1b0('0x14')][_0xb1b0('0x15')]());_0x176054[_0xb1b0('0x21')](_0xb1b0('0x22'),util[_0xb1b0('0x23')](_0xb1b0('0x24'),_0x3b82db['data1']['toLowerCase'](),_0x3b82db['data3']));}}else{_0x176054=require(_0xb1b0('0x20'))(_0x3b82db[_0xb1b0('0x14')][_0xb1b0('0x15')]());_0x176054[_0xb1b0('0x21')](_0xb1b0('0x22'),util['format'](_0xb1b0('0x25'),_0x3b82db[_0xb1b0('0x14')][_0xb1b0('0x15')](),_0x3b82db['data2']));}}else{}}catch(_0x253646){console[_0xb1b0('0x21')](_0x253646);}}}};
\ No newline at end of file
index 35e2866..b4cf92b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff31=['integrationTab','user:%s','trigger:salesforce:display','newTab','trigger:browser:url','%s/%s/e','instanceUrl','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','error','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','Fields','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','Salesforce\x20account\x20type\x20not\x20recognized','catch','unmanaged','lastevent','toUpperCase',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','request-promise','moment','bluebird','md5','jsforce','util','ioredis','./util','salesforce','defaults','redis','localhost','socket.io-emitter','emit','assign','getString','Descriptions','ActivityDate','utc','IsReminderSet','IsRecurrence','endUserType','WhoId','account','ticketType','contact','ContactId','AccountId','lead','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','isNil','validateEmail','find','execute','then','length','Email','Agent\x20%s\x20found.','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','user_id','resolve','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','cloneDeep','additionalSearchContact','merge','$or','additionalSearchLead','Lead','account_contact_lead','additionalSearchAccount','Account','Contact','attributes','type','toLowerCase','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','moduleCreate','LastName','format','Caller\x20-\x20%s','Company','No\x20Company','upperFirst','includes','string','picklist','idField','content','toString','variableName','customVariable','Variable','name','password','concat','securityToken','Connection','remoteUri','Connection\x20established.','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','calleridname','calleridnum','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.'];(function(_0x3f88e5,_0x2119f1){var _0x1413d3=function(_0x27bc47){while(--_0x27bc47){_0x3f88e5['push'](_0x3f88e5['shift']());}};_0x1413d3(++_0x2119f1);}(_0xff31,0x98));var _0x1ff3=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0xff31[_0x2bf141];return _0x48277b;};'use strict';var _=require('lodash');var rp=require(_0x1ff3('0x0'));var moment=require(_0x1ff3('0x1'));var BPromise=require(_0x1ff3('0x2'));var md5=require(_0x1ff3('0x3'));var jsforce=require(_0x1ff3('0x4'));var util=require(_0x1ff3('0x5'));var Redis=require(_0x1ff3('0x6'));var intUtil=require(_0x1ff3('0x7'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0x1ff3('0x8'));config['redis']=_[_0x1ff3('0x9')](config[_0x1ff3('0xa')],{'host':_0x1ff3('0xb'),'port':0x18eb});var io=require(_0x1ff3('0xc'))(new Redis(config[_0x1ff3('0xa')]));function emit(_0x1f295a,_0x2598f1,_0x507957){io['to'](_0x1f295a)[_0x1ff3('0xd')](_0x2598f1,_0x507957);}function getTicket(_0x4f47da,_0x16b709,_0x528aff,_0x7651ac,_0x3de679,_0x167ce9,_0xf1dbbb,_0x215805){var _0x3b955a=Object[_0x1ff3('0xe')]({},{'OwnerId':_0x16b709['id'],'Subject':intUtil[_0x1ff3('0xf')](_0x7651ac['Subjects'],_0x3de679,'\x20'),'Description':intUtil[_0x1ff3('0xf')](_0x7651ac[_0x1ff3('0x10')],_0x3de679,'\x0a')},getCustomFields(_0x167ce9,_0x3de679));if(_0x528aff){if(_0x7651ac['ticketType']==='Task'){_0x3b955a[_0x1ff3('0x11')]=moment[_0x1ff3('0x12')]();_0x3b955a[_0x1ff3('0x13')]=![];_0x3b955a[_0x1ff3('0x14')]=![];if(_0x528aff[_0x1ff3('0x15')]==='contact'||_0x528aff[_0x1ff3('0x15')]==='lead'){_0x3b955a[_0x1ff3('0x16')]=_0x528aff['id'];}else if(_0x528aff[_0x1ff3('0x15')]===_0x1ff3('0x17')){_0x3b955a['WhatId']=_0x528aff['id'];}}else if(_0x7651ac[_0x1ff3('0x18')]==='Case'){if(_0x528aff[_0x1ff3('0x15')]===_0x1ff3('0x19')){_0x3b955a[_0x1ff3('0x1a')]=_0x528aff['id'];}else if(_0x528aff[_0x1ff3('0x15')]===_0x1ff3('0x17')){_0x3b955a[_0x1ff3('0x1b')]=_0x528aff['id'];}else if(_0x528aff[_0x1ff3('0x15')]===_0x1ff3('0x1c')&&_0x7651ac[_0x1ff3('0x1d')]){_0x3b955a[_0x7651ac[_0x1ff3('0x1d')]]=_0x528aff['id'];}else{logger[_0x1ff3('0x1e')](_0x1ff3('0x1f'));}}}return _0xf1dbbb[_0x1ff3('0x20')](_0x7651ac[_0x1ff3('0x18')])[_0x1ff3('0x21')](_0x3b955a);}function getUser(_0x38e1ee,_0x18f303,_0x13c73b){if(!_[_0x1ff3('0x22')](_0x18f303)&&intUtil[_0x1ff3('0x23')](_0x18f303)){var _0x2391a4={'Email':_0x18f303};var _0x5752fe={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x13c73b[_0x1ff3('0x20')]('User')[_0x1ff3('0x24')](_0x2391a4,_0x5752fe)[_0x1ff3('0x25')]()[_0x1ff3('0x26')](function(_0x433773){if(_0x433773[_0x1ff3('0x27')]){var _0x1b8395=_[_0x1ff3('0x24')](_0x433773,function(_0x10e240){return _0x10e240[_0x1ff3('0x28')]===_0x18f303;});if(_0x1b8395){logger[_0x1ff3('0x1e')](_0x1ff3('0x29'),_0x18f303);return BPromise['resolve']({'id':_0x1b8395['Id'],'name':_0x1b8395[_0x1ff3('0x2a')]});}}else{logger['info'](_0x1ff3('0x2b'),_0x18f303);return _0x13c73b[_0x1ff3('0x2c')]()[_0x1ff3('0x26')](function(_0x9eff5b){return BPromise['resolve']({'id':_0x9eff5b[_0x1ff3('0x2d')],'name':_0x9eff5b['display_name']});});}});}else{logger[_0x1ff3('0x1e')](_0x1ff3('0x2b'),_0x18f303);return _0x13c73b[_0x1ff3('0x2c')]()[_0x1ff3('0x26')](function(_0x5a259f){return BPromise[_0x1ff3('0x2e')]({'id':_0x5a259f[_0x1ff3('0x2d')],'name':_0x5a259f[_0x1ff3('0x2f')]});});}}function getEndUser(_0x5d03f0,_0x6bf9ef,_0x3a858b,_0x525227,_0x1aa80a){var _0x2d6b24={'$or':{'Phone':_0x525227}};var _0x51cd2d={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x1ff3('0x2e')]()[_0x1ff3('0x26')](function(){logger[_0x1ff3('0x1e')](_0x1ff3('0x30'),_0x525227,_0x6bf9ef[_0x1ff3('0x31')]);switch(_0x6bf9ef[_0x1ff3('0x31')]){case'contact_lead':var _0x440e3e=_[_0x1ff3('0x32')](_0x2d6b24);if(_0x6bf9ef[_0x1ff3('0x33')]){var _0x57e064={};_0x57e064[_0x6bf9ef[_0x1ff3('0x33')]]=_0x525227;_[_0x1ff3('0x34')](_0x440e3e[_0x1ff3('0x35')],_0x57e064);}return _0x1aa80a['sobject']('Contact')[_0x1ff3('0x24')](_0x440e3e,_0x51cd2d)[_0x1ff3('0x25')]()['then'](function(_0x275749){if(_0x275749&&_0x275749[_0x1ff3('0x27')]){return _0x275749;}else{var _0x60cc8=_['cloneDeep'](_0x2d6b24);if(_0x6bf9ef[_0x1ff3('0x36')]){var _0x467aba={};_0x467aba[_0x6bf9ef[_0x1ff3('0x36')]]=_0x525227;_[_0x1ff3('0x34')](_0x60cc8[_0x1ff3('0x35')],_0x467aba);}return _0x1aa80a['sobject'](_0x1ff3('0x37'))[_0x1ff3('0x24')](_0x60cc8,_0x51cd2d);}});case _0x1ff3('0x38'):var _0x4c99c9=_[_0x1ff3('0x32')](_0x2d6b24);if(_0x6bf9ef[_0x1ff3('0x39')]){var _0x57e064={};_0x57e064[_0x6bf9ef[_0x1ff3('0x39')]]=_0x525227;_[_0x1ff3('0x34')](_0x4c99c9[_0x1ff3('0x35')],_0x57e064);}return _0x1aa80a['sobject'](_0x1ff3('0x3a'))['find'](_0x4c99c9,_0x51cd2d)[_0x1ff3('0x25')]()[_0x1ff3('0x26')](function(_0x311828){if(_0x311828&&_0x311828[_0x1ff3('0x27')]){return _0x311828;}else{var _0x2a6bd9=_[_0x1ff3('0x32')](_0x2d6b24);if(_0x6bf9ef[_0x1ff3('0x33')]){var _0x1d922a={};_0x1d922a[_0x6bf9ef['additionalSearchContact']]=_0x525227;_[_0x1ff3('0x34')](_0x2a6bd9[_0x1ff3('0x35')],_0x1d922a);}return _0x1aa80a['sobject'](_0x1ff3('0x3b'))['find'](_0x2a6bd9,_0x51cd2d)[_0x1ff3('0x26')](function(_0x223d41){if(_0x223d41&&_0x223d41[_0x1ff3('0x27')]){return _0x223d41;}else{var _0x4b2d63=_['cloneDeep'](_0x2d6b24);if(_0x6bf9ef[_0x1ff3('0x36')]){var _0x259835={};_0x259835[_0x6bf9ef['additionalSearchLead']]=_0x525227;_[_0x1ff3('0x34')](_0x4b2d63['$or'],_0x259835);}return _0x1aa80a['sobject'](_0x1ff3('0x37'))['find'](_0x4b2d63,_0x51cd2d);}});}});case _0x1ff3('0x19'):var _0x440e3e=_[_0x1ff3('0x32')](_0x2d6b24);if(_0x6bf9ef['additionalSearchContact']){var _0x57e064={};_0x57e064[_0x6bf9ef[_0x1ff3('0x33')]]=_0x525227;_[_0x1ff3('0x34')](_0x440e3e[_0x1ff3('0x35')],_0x57e064);}return _0x1aa80a[_0x1ff3('0x20')]('Contact')[_0x1ff3('0x24')](_0x440e3e,_0x51cd2d)[_0x1ff3('0x25')]();case _0x1ff3('0x1c'):var _0x53aac8=_['cloneDeep'](_0x2d6b24);if(_0x6bf9ef[_0x1ff3('0x36')]){var _0x57e064={};_0x57e064[_0x6bf9ef['additionalSearchLead']]=_0x525227;_['merge'](_0x53aac8[_0x1ff3('0x35')],_0x57e064);}return _0x1aa80a[_0x1ff3('0x20')](_0x1ff3('0x37'))[_0x1ff3('0x24')](_0x53aac8,_0x51cd2d);case'account':var _0x4c99c9=_[_0x1ff3('0x32')](_0x2d6b24);if(_0x6bf9ef[_0x1ff3('0x39')]){var _0x57e064={};_0x57e064[_0x6bf9ef[_0x1ff3('0x39')]]=_0x525227;_[_0x1ff3('0x34')](_0x4c99c9[_0x1ff3('0x35')],_0x57e064);}return _0x1aa80a[_0x1ff3('0x20')](_0x1ff3('0x3a'))[_0x1ff3('0x24')](_0x4c99c9,_0x51cd2d);default:return null;}})['then'](function(_0x221bfe){if(_0x221bfe&&_0x221bfe[_0x1ff3('0x27')]){var _0x1c7e7d=_['first'](_0x221bfe);if(_0x1c7e7d){return BPromise[_0x1ff3('0x2e')]({'id':_0x1c7e7d['Id'],'name':_0x1c7e7d[_0x1ff3('0x2a')],'phone':_0x1c7e7d['Phone'],'endUserType':_0x1c7e7d[_0x1ff3('0x3c')][_0x1ff3('0x3d')][_0x1ff3('0x3e')]()});}}})[_0x1ff3('0x26')](function(_0x3dd4ba){if(_0x3dd4ba){logger[_0x1ff3('0x1e')](_0x1ff3('0x3f'),_0x3dd4ba[_0x1ff3('0x15')],_0x525227);return BPromise[_0x1ff3('0x2e')](_0x3dd4ba);}else{logger[_0x1ff3('0x1e')]('Enduser\x20with\x20phone\x20%s\x20not\x20found',_0x525227);var _0x185769={'Phone':_0x525227};if(_0x6bf9ef['moduleCreate']){if(_0x6bf9ef['moduleCreate']===_0x1ff3('0x19')){logger[_0x1ff3('0x1e')](_0x1ff3('0x40'),_0x525227,_0x6bf9ef[_0x1ff3('0x41')]);_0x185769[_0x1ff3('0x42')]=_0x3a858b!=='<unknown>'?_0x3a858b:util[_0x1ff3('0x43')]('Caller\x20-\x20%s',_0x525227);}else if(_0x6bf9ef[_0x1ff3('0x41')]===_0x1ff3('0x1c')){logger[_0x1ff3('0x1e')](_0x1ff3('0x40'),_0x525227,_0x6bf9ef[_0x1ff3('0x41')]);_0x185769[_0x1ff3('0x42')]=_0x3a858b!=='<unknown>'?_0x3a858b:util['format'](_0x1ff3('0x44'),_0x525227);_0x185769[_0x1ff3('0x45')]=_0x1ff3('0x46');}else if(_0x6bf9ef[_0x1ff3('0x41')]===_0x1ff3('0x17')){logger['info'](_0x1ff3('0x40'),_0x525227,_0x6bf9ef[_0x1ff3('0x41')]);_0x185769[_0x1ff3('0x2a')]=_0x3a858b!=='<unknown>'?_0x3a858b:util[_0x1ff3('0x43')](_0x1ff3('0x44'),_0x525227);}else{return null;}}return _0x1aa80a[_0x1ff3('0x20')](_[_0x1ff3('0x47')](_0x6bf9ef['moduleCreate']))[_0x1ff3('0x21')](_0x185769)[_0x1ff3('0x26')](function(_0x53d861){return BPromise['resolve']({'id':_0x53d861['id'],'endUserType':_0x6bf9ef[_0x1ff3('0x41')]});});}});}function getCustomFields(_0x1fcb5e,_0x9b04c1){var _0x2749cf={};if(_0x1fcb5e['length']>0x0){_['forEach'](_0x1fcb5e,function(_0x6070cd){if(_[_0x1ff3('0x48')]([_0x1ff3('0x49'),_0x1ff3('0x4a')],_0x6070cd[_0x1ff3('0x3d')])&&_0x6070cd[_0x1ff3('0x4b')]){_0x2749cf[_0x6070cd['idField']]=_0x6070cd[_0x1ff3('0x4c')][_0x1ff3('0x4d')]();}else if(_0x6070cd[_0x1ff3('0x3d')]==='variable'&&_0x6070cd['variableName']&&_0x6070cd['idField']){_0x9b04c1[_0x6070cd[_0x1ff3('0x4e')]]&&(_0x2749cf[_0x6070cd[_0x1ff3('0x4b')]]=_0x9b04c1[_0x6070cd['variableName']][_0x1ff3('0x4d')]());}else if(_0x6070cd[_0x1ff3('0x3d')]===_0x1ff3('0x4f')&&_0x6070cd[_0x1ff3('0x50')]&&_0x6070cd[_0x1ff3('0x50')][_0x1ff3('0x51')]&&_0x6070cd['idField']){_0x9b04c1[_0x6070cd[_0x1ff3('0x50')][_0x1ff3('0x51')]['toLowerCase']()]&&(_0x2749cf[_0x6070cd[_0x1ff3('0x4b')]]=_0x9b04c1[_0x6070cd[_0x1ff3('0x50')][_0x1ff3('0x51')]['toLowerCase']()]['toString']());}});}return _0x2749cf;}function getConnection(_0x332545){var _0x5106b0=_0x332545[_0x1ff3('0x52')][_0x1ff3('0x53')](_0x332545[_0x1ff3('0x54')]);var _0x1c807d=new jsforce[(_0x1ff3('0x55'))]({'oauth2':{'loginUrl':_0x332545[_0x1ff3('0x56')]||'https://login.salesforce.com','clientId':_0x332545['clientId'],'clientSecret':_0x332545['clientSecret']}});return _0x1c807d['login'](_0x332545['username'],_0x5106b0)[_0x1ff3('0x26')](function(){logger[_0x1ff3('0x1e')](_0x1ff3('0x57'));return _0x1c807d;});}exports[_0x1ff3('0x58')]=function(_0x1a328d,_0x2f882a,_0x1bbea5,_0xfec0d8,_0x28f965,_0x23e8b6){var _0x4f60f3,_0x49002a,_0x35dcc4,_0xf5bb55;_0x23e8b6[_0x1ff3('0x59')]=intUtil[_0x1ff3('0x5a')](_0x23e8b6['serverUrl']);_0x23e8b6[_0x1ff3('0x56')]=intUtil[_0x1ff3('0x5a')](_0x23e8b6[_0x1ff3('0x56')]);if(_0x28f965&&_0x28f965[_0x1ff3('0x5b')]){logger[_0x1ff3('0x1e')](_0x1ff3('0x5c'),_0x1ff3('0x5d'));_0x2f882a[_0x1ff3('0x5e')]=util[_0x1ff3('0x43')](_0x1ff3('0x5f'),_0x23e8b6[_0x1ff3('0x59')],_0x2f882a[_0x1ff3('0x60')],md5(_0x2f882a[_0x1ff3('0x60')]));}else{_0x2f882a[_0x1ff3('0x5e')]='';}return getConnection(_0x23e8b6)['then'](function(_0x28216b){_0xf5bb55=_0x28216b;return getUser(_0x23e8b6,_0xfec0d8[_0x1ff3('0x61')],_0xf5bb55);})[_0x1ff3('0x26')](function(_0x3cd998){_0x4f60f3=_0x3cd998;return getEndUser(_0x23e8b6,_0x1bbea5,_0x2f882a[_0x1ff3('0x62')],_0x2f882a[_0x1ff3('0x63')],_0xf5bb55);})[_0x1ff3('0x26')](function(_0x229c10){_0x49002a=_0x229c10;return getTicket(_0x23e8b6,_0x4f60f3,_0x49002a,_0x1bbea5,_0x2f882a,_0x1bbea5['Fields'],_0xf5bb55,_0x1ff3('0x58'));})['then'](function(_0x8dbae9){_0x35dcc4=_0x8dbae9;logger['info'](_0x1ff3('0x64'),_0x35dcc4['id']);logger[_0x1ff3('0x1e')](_0x1ff3('0x65'),_0x35dcc4['id'],_0xfec0d8['name'],_0x23e8b6['type']);switch(_0x23e8b6[_0x1ff3('0x3d')]){case _0x1ff3('0x66'):emit(util['format'](_0x1ff3('0x67'),_0xfec0d8['name']),_0x1ff3('0x68'),{'recordId':_0x35dcc4['id']});break;case _0x1ff3('0x69'):emit(util[_0x1ff3('0x43')](_0x1ff3('0x67'),_0xfec0d8[_0x1ff3('0x51')]),_0x1ff3('0x6a'),{'uri':util[_0x1ff3('0x43')](_0x1ff3('0x6b'),_0xf5bb55[_0x1ff3('0x6c')],_0x35dcc4['id'])});break;default:logger['error'](_0x1ff3('0x6d'));}})['catch'](function(_0xa1a7a9){logger[_0x1ff3('0x6e')](_0x1ff3('0x5c'),_0xa1a7a9);});};exports[_0x1ff3('0x6f')]=function(_0x6ab07d,_0xba27a4,_0xae702d,_0x33dda1,_0x50961a,_0x35db7e,_0x59b3bf){var _0x5b6a07,_0x3cbbff,_0x13a800,_0x5d1f88;_0x35db7e[_0x1ff3('0x59')]=intUtil[_0x1ff3('0x5a')](_0x35db7e[_0x1ff3('0x59')]);_0x35db7e['remoteUri']=intUtil['stripTrailingSlash'](_0x35db7e[_0x1ff3('0x56')]);if(_0x59b3bf&&_0x59b3bf[_0x1ff3('0x70')]&&_0x59b3bf[_0x1ff3('0x70')]!==_0x1ff3('0x71')){logger['info'](_0x1ff3('0x72'),_0x1ff3('0x5d'));_0xba27a4[_0x1ff3('0x5e')]=util[_0x1ff3('0x43')](_0x1ff3('0x5f'),_0x35db7e[_0x1ff3('0x59')],_0xba27a4[_0x1ff3('0x60')],md5(_0xba27a4['uniqueid']));}return getConnection(_0x35db7e)[_0x1ff3('0x26')](function(_0x466ad4){_0x5d1f88=_0x466ad4;return getUser(_0x35db7e,_0x33dda1[_0x1ff3('0x61')],_0x5d1f88);})[_0x1ff3('0x26')](function(_0x4e0102){_0x5b6a07=_0x4e0102;return getEndUser(_0x35db7e,_0xae702d,_0xba27a4[_0x1ff3('0x73')],_0xba27a4[_0x1ff3('0x74')],_0x5d1f88);})['then'](function(_0x1284b2){_0x3cbbff=_0x1284b2;return getTicket(_0x35db7e,_0x5b6a07,_0x3cbbff,_0xae702d,_0xba27a4,_0xae702d[_0x1ff3('0x75')],_0x5d1f88,_0x1ff3('0x6f'));})[_0x1ff3('0x26')](function(_0x32b065){_0x13a800=_0x32b065;logger[_0x1ff3('0x1e')](_0x1ff3('0x76'),_0x13a800['id']);logger[_0x1ff3('0x1e')](_0x1ff3('0x77'),_0x13a800['id'],_0x33dda1[_0x1ff3('0x51')],_0x35db7e[_0x1ff3('0x3d')]);switch(_0x35db7e['type']){case _0x1ff3('0x66'):emit(util[_0x1ff3('0x43')]('user:%s',_0x33dda1[_0x1ff3('0x51')]),_0x1ff3('0x68'),{'recordId':_0x13a800['id']});break;case _0x1ff3('0x69'):emit(util[_0x1ff3('0x43')](_0x1ff3('0x67'),_0x33dda1[_0x1ff3('0x51')]),_0x1ff3('0x6a'),{'uri':util[_0x1ff3('0x43')](_0x1ff3('0x6b'),_0x5d1f88['instanceUrl'],_0x13a800['id'])});break;default:logger['error'](_0x1ff3('0x72'),_0x1ff3('0x78'));}})[_0x1ff3('0x79')](function(_0x19c7e2){logger[_0x1ff3('0x6e')](_0x1ff3('0x72'),_0x19c7e2);});};exports[_0x1ff3('0x7a')]=function(_0x6cb0d0,_0x3b4801,_0x196109,_0x43aa3f,_0x20948b,_0x5eec28){var _0x31072d,_0x33dadd,_0x4dd975,_0x22f72e;_0x5eec28['serverUrl']=intUtil['stripTrailingSlash'](_0x5eec28[_0x1ff3('0x59')]);_0x5eec28[_0x1ff3('0x56')]=intUtil[_0x1ff3('0x5a')](_0x5eec28[_0x1ff3('0x56')]);if(_0x20948b&&_0x20948b[_0x1ff3('0x5b')]){logger[_0x1ff3('0x1e')]('['+_0x3b4801[_0x1ff3('0x7b')][_0x1ff3('0x7c')]()+']','Recording\x20is\x20enabled!');_0x3b4801[_0x1ff3('0x5e')]=util[_0x1ff3('0x43')](_0x1ff3('0x5f'),_0x5eec28[_0x1ff3('0x59')],_0x3b4801[_0x1ff3('0x60')],md5(_0x3b4801[_0x1ff3('0x60')]));}else{_0x3b4801[_0x1ff3('0x5e')]='';}return getConnection(_0x5eec28)[_0x1ff3('0x26')](function(_0x17038d){_0x22f72e=_0x17038d;if(!_['isNil'](_0x43aa3f)){return getUser(_0x5eec28,_0x43aa3f[_0x1ff3('0x51')],_0x22f72e);}else{return getUser(_0x5eec28,null,_0x22f72e);}})[_0x1ff3('0x26')](function(_0x4d1644){_0x31072d=_0x4d1644;return getEndUser(_0x5eec28,_0x196109,_0x3b4801[_0x1ff3('0x62')],_0x3b4801[_0x1ff3('0x63')],_0x22f72e);})[_0x1ff3('0x26')](function(_0x5a7882){_0x33dadd=_0x5a7882;return getTicket(_0x5eec28,_0x31072d,_0x33dadd,_0x196109,_0x3b4801,_0x196109[_0x1ff3('0x75')],_0x22f72e);})[_0x1ff3('0x26')](function(_0x3e95b8){_0x4dd975=_0x3e95b8;logger['info']('['+_0x3b4801['lastevent'][_0x1ff3('0x7c')]()+_0x1ff3('0x7d'),_0x4dd975['id']);logger[_0x1ff3('0x1e')]('['+_0x3b4801[_0x1ff3('0x7b')][_0x1ff3('0x7c')]()+_0x1ff3('0x7e'),_0x5eec28[_0x1ff3('0x3d')]);})[_0x1ff3('0x79')](function(_0x551559){logger[_0x1ff3('0x6e')]('['+_0x3b4801[_0x1ff3('0x7b')][_0x1ff3('0x7c')]()+']',_0x551559);});};
\ No newline at end of file
+var _0x3099=['lead','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','isNil','find','execute','then','Email','Agent\x20%s\x20found.','resolve','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','user_id','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','additionalSearchContact','merge','$or','Contact','length','cloneDeep','additionalSearchLead','account_contact_lead','additionalSearchAccount','Account','Lead','Phone','attributes','toLowerCase','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','<unknown>','format','Caller\x20-\x20%s','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','Company','forEach','includes','string','picklist','type','idField','content','variable','variableName','toString','customVariable','Variable','name','password','concat','securityToken','Connection','remoteUri','https://login.salesforce.com','clientId','clientSecret','login','Connection\x20established.','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','calleridname','calleridnum','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','user:%s','trigger:salesforce:display','%s/%s/e','instanceUrl','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','outbound','recordingFormat','destcalleridname','destcalleridnum','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','newTab','trigger:browser:url','[OUTBOUND]','unmanaged','lastevent','toUpperCase','Fields',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','moment','bluebird','md5','jsforce','util','ioredis','./util','../../../../config/environment','../../../../config/logger','salesforce','defaults','redis','localhost','socket.io-emitter','emit','assign','getString','Subjects','Descriptions','ticketType','Task','ActivityDate','IsReminderSet','IsRecurrence','contact','account','WhatId','Case','endUserType','AccountId'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0x3099,0xee));var _0x9309=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x3099[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x9309('0x0'));var rp=require(_0x9309('0x1'));var moment=require(_0x9309('0x2'));var BPromise=require(_0x9309('0x3'));var md5=require(_0x9309('0x4'));var jsforce=require(_0x9309('0x5'));var util=require(_0x9309('0x6'));var Redis=require(_0x9309('0x7'));var intUtil=require(_0x9309('0x8'));var config=require(_0x9309('0x9'));var logger=require(_0x9309('0xa'))(_0x9309('0xb'));config['redis']=_[_0x9309('0xc')](config[_0x9309('0xd')],{'host':_0x9309('0xe'),'port':0x18eb});var io=require(_0x9309('0xf'))(new Redis(config[_0x9309('0xd')]));function emit(_0x4ebf85,_0x4e6c7e,_0x2545eb){io['to'](_0x4ebf85)[_0x9309('0x10')](_0x4e6c7e,_0x2545eb);}function getTicket(_0x58f394,_0x4d34a1,_0x48fd5b,_0x2cbb29,_0x57634b,_0x57fb44,_0x27913e,_0x28c6a7){var _0xb87881=Object[_0x9309('0x11')]({},{'OwnerId':_0x4d34a1['id'],'Subject':intUtil[_0x9309('0x12')](_0x2cbb29[_0x9309('0x13')],_0x57634b,'\x20'),'Description':intUtil[_0x9309('0x12')](_0x2cbb29[_0x9309('0x14')],_0x57634b,'\x0a')},getCustomFields(_0x57fb44,_0x57634b));if(_0x48fd5b){if(_0x2cbb29[_0x9309('0x15')]===_0x9309('0x16')){_0xb87881[_0x9309('0x17')]=moment['utc']();_0xb87881[_0x9309('0x18')]=![];_0xb87881[_0x9309('0x19')]=![];if(_0x48fd5b['endUserType']===_0x9309('0x1a')||_0x48fd5b['endUserType']==='lead'){_0xb87881['WhoId']=_0x48fd5b['id'];}else if(_0x48fd5b['endUserType']===_0x9309('0x1b')){_0xb87881[_0x9309('0x1c')]=_0x48fd5b['id'];}}else if(_0x2cbb29[_0x9309('0x15')]===_0x9309('0x1d')){if(_0x48fd5b[_0x9309('0x1e')]==='contact'){_0xb87881['ContactId']=_0x48fd5b['id'];}else if(_0x48fd5b[_0x9309('0x1e')]==='account'){_0xb87881[_0x9309('0x1f')]=_0x48fd5b['id'];}else if(_0x48fd5b['endUserType']===_0x9309('0x20')&&_0x2cbb29[_0x9309('0x21')]){_0xb87881[_0x2cbb29['leadId']]=_0x48fd5b['id'];}else{logger[_0x9309('0x22')](_0x9309('0x23'));}}}return _0x27913e[_0x9309('0x24')](_0x2cbb29[_0x9309('0x15')])[_0x9309('0x25')](_0xb87881);}function getUser(_0x325f93,_0xc96a0b,_0x3fecd3){if(!_[_0x9309('0x26')](_0xc96a0b)&&intUtil['validateEmail'](_0xc96a0b)){var _0x1835ae={'Email':_0xc96a0b};var _0x3c2e6b={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x3fecd3['sobject']('User')[_0x9309('0x27')](_0x1835ae,_0x3c2e6b)[_0x9309('0x28')]()[_0x9309('0x29')](function(_0x1407fd){if(_0x1407fd['length']){var _0x24c29b=_[_0x9309('0x27')](_0x1407fd,function(_0x41434f){return _0x41434f[_0x9309('0x2a')]===_0xc96a0b;});if(_0x24c29b){logger[_0x9309('0x22')](_0x9309('0x2b'),_0xc96a0b);return BPromise[_0x9309('0x2c')]({'id':_0x24c29b['Id'],'name':_0x24c29b[_0x9309('0x2d')]});}}else{logger['info'](_0x9309('0x2e'),_0xc96a0b);return _0x3fecd3[_0x9309('0x2f')]()[_0x9309('0x29')](function(_0x48367d){return BPromise[_0x9309('0x2c')]({'id':_0x48367d['user_id'],'name':_0x48367d['display_name']});});}});}else{logger[_0x9309('0x22')](_0x9309('0x2e'),_0xc96a0b);return _0x3fecd3[_0x9309('0x2f')]()[_0x9309('0x29')](function(_0x40a158){return BPromise['resolve']({'id':_0x40a158[_0x9309('0x30')],'name':_0x40a158[_0x9309('0x31')]});});}}function getEndUser(_0x4d77fc,_0x22fb24,_0xde422b,_0x4fb285,_0xca59c1){var _0x23aebc={'$or':{'Phone':_0x4fb285}};var _0x4483b8={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x9309('0x2c')]()[_0x9309('0x29')](function(){logger['info'](_0x9309('0x32'),_0x4fb285,_0x22fb24['moduleSearch']);switch(_0x22fb24[_0x9309('0x33')]){case _0x9309('0x34'):var _0x52715d=_['cloneDeep'](_0x23aebc);if(_0x22fb24['additionalSearchContact']){var _0x353728={};_0x353728[_0x22fb24[_0x9309('0x35')]]=_0x4fb285;_[_0x9309('0x36')](_0x52715d[_0x9309('0x37')],_0x353728);}return _0xca59c1[_0x9309('0x24')](_0x9309('0x38'))['find'](_0x52715d,_0x4483b8)[_0x9309('0x28')]()[_0x9309('0x29')](function(_0x446f9f){if(_0x446f9f&&_0x446f9f[_0x9309('0x39')]){return _0x446f9f;}else{var _0x5e4176=_[_0x9309('0x3a')](_0x23aebc);if(_0x22fb24[_0x9309('0x3b')]){var _0x2c2815={};_0x2c2815[_0x22fb24['additionalSearchLead']]=_0x4fb285;_['merge'](_0x5e4176['$or'],_0x2c2815);}return _0xca59c1[_0x9309('0x24')]('Lead')[_0x9309('0x27')](_0x5e4176,_0x4483b8);}});case _0x9309('0x3c'):var _0x116660=_[_0x9309('0x3a')](_0x23aebc);if(_0x22fb24[_0x9309('0x3d')]){var _0x353728={};_0x353728[_0x22fb24[_0x9309('0x3d')]]=_0x4fb285;_[_0x9309('0x36')](_0x116660[_0x9309('0x37')],_0x353728);}return _0xca59c1[_0x9309('0x24')](_0x9309('0x3e'))[_0x9309('0x27')](_0x116660,_0x4483b8)[_0x9309('0x28')]()['then'](function(_0x180717){if(_0x180717&&_0x180717[_0x9309('0x39')]){return _0x180717;}else{var _0x271b3c=_[_0x9309('0x3a')](_0x23aebc);if(_0x22fb24[_0x9309('0x35')]){var _0x5380da={};_0x5380da[_0x22fb24['additionalSearchContact']]=_0x4fb285;_[_0x9309('0x36')](_0x271b3c[_0x9309('0x37')],_0x5380da);}return _0xca59c1[_0x9309('0x24')]('Contact')[_0x9309('0x27')](_0x271b3c,_0x4483b8)['then'](function(_0x210f2d){if(_0x210f2d&&_0x210f2d[_0x9309('0x39')]){return _0x210f2d;}else{var _0x49b6e7=_['cloneDeep'](_0x23aebc);if(_0x22fb24[_0x9309('0x3b')]){var _0x432f5a={};_0x432f5a[_0x22fb24[_0x9309('0x3b')]]=_0x4fb285;_[_0x9309('0x36')](_0x49b6e7[_0x9309('0x37')],_0x432f5a);}return _0xca59c1[_0x9309('0x24')](_0x9309('0x3f'))[_0x9309('0x27')](_0x49b6e7,_0x4483b8);}});}});case _0x9309('0x1a'):var _0x52715d=_['cloneDeep'](_0x23aebc);if(_0x22fb24[_0x9309('0x35')]){var _0x353728={};_0x353728[_0x22fb24[_0x9309('0x35')]]=_0x4fb285;_[_0x9309('0x36')](_0x52715d[_0x9309('0x37')],_0x353728);}return _0xca59c1[_0x9309('0x24')](_0x9309('0x38'))[_0x9309('0x27')](_0x52715d,_0x4483b8)['execute']();case _0x9309('0x20'):var _0x1fdbf2=_[_0x9309('0x3a')](_0x23aebc);if(_0x22fb24['additionalSearchLead']){var _0x353728={};_0x353728[_0x22fb24[_0x9309('0x3b')]]=_0x4fb285;_['merge'](_0x1fdbf2[_0x9309('0x37')],_0x353728);}return _0xca59c1[_0x9309('0x24')](_0x9309('0x3f'))[_0x9309('0x27')](_0x1fdbf2,_0x4483b8);case _0x9309('0x1b'):var _0x116660=_[_0x9309('0x3a')](_0x23aebc);if(_0x22fb24[_0x9309('0x3d')]){var _0x353728={};_0x353728[_0x22fb24[_0x9309('0x3d')]]=_0x4fb285;_[_0x9309('0x36')](_0x116660[_0x9309('0x37')],_0x353728);}return _0xca59c1[_0x9309('0x24')](_0x9309('0x3e'))[_0x9309('0x27')](_0x116660,_0x4483b8);default:return null;}})[_0x9309('0x29')](function(_0x54504d){if(_0x54504d&&_0x54504d[_0x9309('0x39')]){var _0x1a4c73=_['first'](_0x54504d);if(_0x1a4c73){return BPromise[_0x9309('0x2c')]({'id':_0x1a4c73['Id'],'name':_0x1a4c73[_0x9309('0x2d')],'phone':_0x1a4c73[_0x9309('0x40')],'endUserType':_0x1a4c73[_0x9309('0x41')]['type'][_0x9309('0x42')]()});}}})[_0x9309('0x29')](function(_0x34d24f){if(_0x34d24f){logger['info']('Enduser\x20(%s)\x20with\x20phone\x20%s\x20found',_0x34d24f[_0x9309('0x1e')],_0x4fb285);return BPromise[_0x9309('0x2c')](_0x34d24f);}else{logger[_0x9309('0x22')](_0x9309('0x43'),_0x4fb285);var _0x4d8d35={'Phone':_0x4fb285};if(_0x22fb24[_0x9309('0x44')]){if(_0x22fb24[_0x9309('0x44')]===_0x9309('0x1a')){logger['info']('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x4fb285,_0x22fb24[_0x9309('0x44')]);_0x4d8d35['LastName']=_0xde422b!==_0x9309('0x45')?_0xde422b:util[_0x9309('0x46')](_0x9309('0x47'),_0x4fb285);}else if(_0x22fb24[_0x9309('0x44')]===_0x9309('0x20')){logger['info'](_0x9309('0x48'),_0x4fb285,_0x22fb24['moduleCreate']);_0x4d8d35[_0x9309('0x49')]=_0xde422b!==_0x9309('0x45')?_0xde422b:util['format'](_0x9309('0x47'),_0x4fb285);_0x4d8d35[_0x9309('0x4a')]='No\x20Company';}else if(_0x22fb24['moduleCreate']===_0x9309('0x1b')){logger[_0x9309('0x22')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x4fb285,_0x22fb24[_0x9309('0x44')]);_0x4d8d35[_0x9309('0x2d')]=_0xde422b!==_0x9309('0x45')?_0xde422b:util[_0x9309('0x46')](_0x9309('0x47'),_0x4fb285);}else{return null;}}return _0xca59c1[_0x9309('0x24')](_['upperFirst'](_0x22fb24[_0x9309('0x44')]))['create'](_0x4d8d35)[_0x9309('0x29')](function(_0x231807){return BPromise[_0x9309('0x2c')]({'id':_0x231807['id'],'endUserType':_0x22fb24['moduleCreate']});});}});}function getCustomFields(_0x306ce5,_0x5a13b1){var _0xfd2396={};if(_0x306ce5[_0x9309('0x39')]>0x0){_[_0x9309('0x4b')](_0x306ce5,function(_0x41dd68){if(_[_0x9309('0x4c')]([_0x9309('0x4d'),_0x9309('0x4e')],_0x41dd68[_0x9309('0x4f')])&&_0x41dd68[_0x9309('0x50')]){_0xfd2396[_0x41dd68[_0x9309('0x50')]]=_0x41dd68[_0x9309('0x51')]['toString']();}else if(_0x41dd68[_0x9309('0x4f')]===_0x9309('0x52')&&_0x41dd68[_0x9309('0x53')]&&_0x41dd68[_0x9309('0x50')]){_0x5a13b1[_0x41dd68[_0x9309('0x53')]]&&(_0xfd2396[_0x41dd68[_0x9309('0x50')]]=_0x5a13b1[_0x41dd68[_0x9309('0x53')]][_0x9309('0x54')]());}else if(_0x41dd68['type']===_0x9309('0x55')&&_0x41dd68[_0x9309('0x56')]&&_0x41dd68['Variable'][_0x9309('0x57')]&&_0x41dd68[_0x9309('0x50')]){_0x5a13b1[_0x41dd68[_0x9309('0x56')]['name']['toLowerCase']()]&&(_0xfd2396[_0x41dd68['idField']]=_0x5a13b1[_0x41dd68[_0x9309('0x56')][_0x9309('0x57')]['toLowerCase']()][_0x9309('0x54')]());}});}return _0xfd2396;}function getConnection(_0x358a4e){var _0x10f5c6=_0x358a4e[_0x9309('0x58')][_0x9309('0x59')](_0x358a4e[_0x9309('0x5a')]);var _0xc19bae=new jsforce[(_0x9309('0x5b'))]({'oauth2':{'loginUrl':_0x358a4e[_0x9309('0x5c')]||_0x9309('0x5d'),'clientId':_0x358a4e[_0x9309('0x5e')],'clientSecret':_0x358a4e[_0x9309('0x5f')]}});return _0xc19bae[_0x9309('0x60')](_0x358a4e['username'],_0x10f5c6)[_0x9309('0x29')](function(){logger[_0x9309('0x22')](_0x9309('0x61'));return _0xc19bae;});}exports[_0x9309('0x62')]=function(_0x130db7,_0x223260,_0x4dc497,_0x455ed9,_0x226351,_0x1c6747){var _0x3e9264,_0x5cf6bc,_0x42b11a,_0x52694e;_0x1c6747[_0x9309('0x63')]=intUtil[_0x9309('0x64')](_0x1c6747[_0x9309('0x63')]);_0x1c6747[_0x9309('0x5c')]=intUtil['stripTrailingSlash'](_0x1c6747[_0x9309('0x5c')]);if(_0x226351&&_0x226351[_0x9309('0x65')]){logger[_0x9309('0x22')](_0x9309('0x66'),_0x9309('0x67'));_0x223260[_0x9309('0x68')]=util[_0x9309('0x46')](_0x9309('0x69'),_0x1c6747[_0x9309('0x63')],_0x223260[_0x9309('0x6a')],md5(_0x223260['uniqueid']));}else{_0x223260[_0x9309('0x68')]='';}return getConnection(_0x1c6747)[_0x9309('0x29')](function(_0x22ca31){_0x52694e=_0x22ca31;return getUser(_0x1c6747,_0x455ed9[_0x9309('0x6b')],_0x52694e);})[_0x9309('0x29')](function(_0x38e848){_0x3e9264=_0x38e848;return getEndUser(_0x1c6747,_0x4dc497,_0x223260[_0x9309('0x6c')],_0x223260[_0x9309('0x6d')],_0x52694e);})[_0x9309('0x29')](function(_0x5c4a03){_0x5cf6bc=_0x5c4a03;return getTicket(_0x1c6747,_0x3e9264,_0x5cf6bc,_0x4dc497,_0x223260,_0x4dc497['Fields'],_0x52694e,_0x9309('0x62'));})[_0x9309('0x29')](function(_0x161dc2){_0x42b11a=_0x161dc2;logger[_0x9309('0x22')](_0x9309('0x6e'),_0x42b11a['id']);logger['info'](_0x9309('0x6f'),_0x42b11a['id'],_0x455ed9['name'],_0x1c6747[_0x9309('0x4f')]);switch(_0x1c6747[_0x9309('0x4f')]){case'integrationTab':emit(util[_0x9309('0x46')](_0x9309('0x70'),_0x455ed9[_0x9309('0x57')]),_0x9309('0x71'),{'recordId':_0x42b11a['id']});break;case'newTab':emit(util[_0x9309('0x46')](_0x9309('0x70'),_0x455ed9['name']),'trigger:browser:url',{'uri':util[_0x9309('0x46')](_0x9309('0x72'),_0x52694e[_0x9309('0x73')],_0x42b11a['id'])});break;default:logger[_0x9309('0x74')](_0x9309('0x75'));}})[_0x9309('0x76')](function(_0x5a7668){logger[_0x9309('0x74')]('[QUEUE]',_0x5a7668);});};exports[_0x9309('0x77')]=function(_0x373222,_0x59d4a1,_0x161d1e,_0x5a54c7,_0x1ed2eb,_0x3d836b,_0xe800d6){var _0x1b5859,_0x189bf7,_0x272e2d,_0x5e5d89;_0x3d836b[_0x9309('0x63')]=intUtil[_0x9309('0x64')](_0x3d836b[_0x9309('0x63')]);_0x3d836b[_0x9309('0x5c')]=intUtil['stripTrailingSlash'](_0x3d836b['remoteUri']);if(_0xe800d6&&_0xe800d6[_0x9309('0x78')]&&_0xe800d6[_0x9309('0x78')]!=='none'){logger[_0x9309('0x22')]('[OUTBOUND]',_0x9309('0x67'));_0x59d4a1[_0x9309('0x68')]=util[_0x9309('0x46')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3d836b[_0x9309('0x63')],_0x59d4a1[_0x9309('0x6a')],md5(_0x59d4a1[_0x9309('0x6a')]));}return getConnection(_0x3d836b)[_0x9309('0x29')](function(_0x3b804e){_0x5e5d89=_0x3b804e;return getUser(_0x3d836b,_0x5a54c7[_0x9309('0x6b')],_0x5e5d89);})[_0x9309('0x29')](function(_0x86c467){_0x1b5859=_0x86c467;return getEndUser(_0x3d836b,_0x161d1e,_0x59d4a1[_0x9309('0x79')],_0x59d4a1[_0x9309('0x7a')],_0x5e5d89);})[_0x9309('0x29')](function(_0x2f4486){_0x189bf7=_0x2f4486;return getTicket(_0x3d836b,_0x1b5859,_0x189bf7,_0x161d1e,_0x59d4a1,_0x161d1e['Fields'],_0x5e5d89,_0x9309('0x77'));})['then'](function(_0x847b6e){_0x272e2d=_0x847b6e;logger[_0x9309('0x22')](_0x9309('0x7b'),_0x272e2d['id']);logger[_0x9309('0x22')](_0x9309('0x7c'),_0x272e2d['id'],_0x5a54c7[_0x9309('0x57')],_0x3d836b[_0x9309('0x4f')]);switch(_0x3d836b[_0x9309('0x4f')]){case _0x9309('0x7d'):emit(util['format']('user:%s',_0x5a54c7['name']),_0x9309('0x71'),{'recordId':_0x272e2d['id']});break;case _0x9309('0x7e'):emit(util[_0x9309('0x46')](_0x9309('0x70'),_0x5a54c7[_0x9309('0x57')]),_0x9309('0x7f'),{'uri':util[_0x9309('0x46')]('%s/%s/e',_0x5e5d89[_0x9309('0x73')],_0x272e2d['id'])});break;default:logger['error'](_0x9309('0x80'),'Salesforce\x20account\x20type\x20not\x20recognized');}})[_0x9309('0x76')](function(_0x5612a4){logger[_0x9309('0x74')](_0x9309('0x80'),_0x5612a4);});};exports[_0x9309('0x81')]=function(_0x1794b5,_0xc6fd86,_0x52033c,_0x563203,_0x53f495,_0x62936e){var _0x1d8182,_0x23b369,_0xc6f5bc,_0x63d7d6;_0x62936e[_0x9309('0x63')]=intUtil[_0x9309('0x64')](_0x62936e[_0x9309('0x63')]);_0x62936e[_0x9309('0x5c')]=intUtil[_0x9309('0x64')](_0x62936e[_0x9309('0x5c')]);if(_0x53f495&&_0x53f495[_0x9309('0x65')]){logger['info']('['+_0xc6fd86[_0x9309('0x82')][_0x9309('0x83')]()+']',_0x9309('0x67'));_0xc6fd86[_0x9309('0x68')]=util[_0x9309('0x46')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x62936e[_0x9309('0x63')],_0xc6fd86['uniqueid'],md5(_0xc6fd86[_0x9309('0x6a')]));}else{_0xc6fd86[_0x9309('0x68')]='';}return getConnection(_0x62936e)[_0x9309('0x29')](function(_0x455d15){_0x63d7d6=_0x455d15;if(!_['isNil'](_0x563203)){return getUser(_0x62936e,_0x563203[_0x9309('0x57')],_0x63d7d6);}else{return getUser(_0x62936e,null,_0x63d7d6);}})['then'](function(_0x51b370){_0x1d8182=_0x51b370;return getEndUser(_0x62936e,_0x52033c,_0xc6fd86[_0x9309('0x6c')],_0xc6fd86[_0x9309('0x6d')],_0x63d7d6);})[_0x9309('0x29')](function(_0xf5a6cf){_0x23b369=_0xf5a6cf;return getTicket(_0x62936e,_0x1d8182,_0x23b369,_0x52033c,_0xc6fd86,_0x52033c[_0x9309('0x84')],_0x63d7d6);})['then'](function(_0x63d1a0){_0xc6f5bc=_0x63d1a0;logger['info']('['+_0xc6fd86[_0x9309('0x82')][_0x9309('0x83')]()+_0x9309('0x85'),_0xc6f5bc['id']);logger[_0x9309('0x22')]('['+_0xc6fd86[_0x9309('0x82')]['toUpperCase']()+_0x9309('0x86'),_0x62936e[_0x9309('0x4f')]);})[_0x9309('0x76')](function(_0x20b641){logger['error']('['+_0xc6fd86[_0x9309('0x82')][_0x9309('0x83')]()+']',_0x20b641);});};
\ No newline at end of file
index 9c0a93f..c470076 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff24=['queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','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','ioredis','./util','../../../../config/environment','../../../../config/logger','servicenow','redis','defaults','localhost','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','adminId','info','],\x20getAdminUser\x20crm','catch','error','toUpperCase','],\x20getUser\x20input\x20crm','userEmail','GET','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','true','sys_id','userId','adminEmail','],\x20getUser\x20crm','message',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','sys_user?','endUserNumber','user','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','],\x20createEndUser\x20crm','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','toString','variableName','idField','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','incident','assign','Subjects','Descriptions','Fields','ticketId','ticketNumber','POST','label','label_entry','Incident','Incident\x20-\x20','push',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','all','map','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','/nav_to.do?uri=incident.do?sys_id%3D','user:%s','emit','username','password','sysparm_limit=1','sysparm_display_value=true','stripTrailingSlash','remoteUri','serverUrl','format','%s/api/now/table/','isNil','email','destcalleridnum','calleridnum','unmanaged'];(function(_0x3e6da0,_0x15e80b){var _0xf9ed05=function(_0x2a2e48){while(--_0x2a2e48){_0x3e6da0['push'](_0x3e6da0['shift']());}};_0xf9ed05(++_0x15e80b);}(_0xff24,0xec));var _0x4ff2=function(_0x3878e6,_0x33ea78){_0x3878e6=_0x3878e6-0x0;var _0x33680e=_0xff24[_0x3878e6];return _0x33680e;};'use strict';var _=require(_0x4ff2('0x0'));var Promise=require(_0x4ff2('0x1'));var rp=require(_0x4ff2('0x2'));var util=require(_0x4ff2('0x3'));var md5=require('md5');var Redis=require(_0x4ff2('0x4'));var intUtil=require(_0x4ff2('0x5'));var config=require(_0x4ff2('0x6'));var logger=require(_0x4ff2('0x7'))(_0x4ff2('0x8'));config[_0x4ff2('0x9')]=_[_0x4ff2('0xa')](config[_0x4ff2('0x9')],{'host':_0x4ff2('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x4ff2('0x9')]));function getAdminUser(_0x2ab2b0,_0x3e1cf6,_0x2f497b,_0x46abbe,_0x3f3d71,_0x571b8b){return new Promise(function(_0x42e316,_0x10bdcc){var _0x4b4e78={'method':'GET','uri':_0x46abbe+_0x4ff2('0xc')+'&'+_0x3f3d71+'&'+_0x571b8b,'auth':_0x3e1cf6,'json':!![]};return rp(_0x4b4e78)[_0x4ff2('0xd')](function(_0x3a4f16){if(_0x3a4f16[_0x4ff2('0xe')][_0x4ff2('0xf')]>0x0){_0x2f497b[_0x4ff2('0x10')]=_0x3a4f16[_0x4ff2('0xe')][0x0]['sys_id'];}logger[_0x4ff2('0x11')]('['+[_0x2ab2b0['toUpperCase']()]+_0x4ff2('0x12'),_0x2f497b);_0x42e316(_0x2f497b);})[_0x4ff2('0x13')](function(_0x493867){logger[_0x4ff2('0x14')]('['+[_0x2ab2b0[_0x4ff2('0x15')]()]+']',_0x493867['message']);_0x10bdcc(_0x493867['message']);});});}function getUser(_0x510e39,_0xfce35b,_0x237b15,_0x5a41e8,_0x275780){return function(_0xf261b0){logger['info']('['+[_0x510e39[_0x4ff2('0x15')]()]+_0x4ff2('0x16'),_0xf261b0);return new Promise(function(_0x32158b,_0x5aa81c){if(intUtil['validateEmail'](_0xf261b0[_0x4ff2('0x17')])){var _0x27c568={'method':_0x4ff2('0x18'),'uri':_0x237b15+_0x4ff2('0x19')+_0xf261b0[_0x4ff2('0x17')]+'&'+_0x5a41e8+'&'+_0x275780,'auth':_0xfce35b,'json':!![]};logger[_0x4ff2('0x11')]('['+[_0x510e39['toUpperCase']()]+_0x4ff2('0x1a'),_0x27c568);return rp(_0x27c568)[_0x4ff2('0xd')](function(_0x3ec448){logger[_0x4ff2('0x11')]('['+[_0x510e39[_0x4ff2('0x15')]()]+_0x4ff2('0x1b'),_0x3ec448);if(_0x3ec448[_0x4ff2('0xe')][_0x4ff2('0xf')]>0x0&&String(_0x3ec448[_0x4ff2('0xe')][0x0]['active'])===_0x4ff2('0x1c')){_0xf261b0['userId']=_0x3ec448[_0x4ff2('0xe')][0x0][_0x4ff2('0x1d')];}else{_0xf261b0[_0x4ff2('0x1e')]=_0xf261b0['adminId'];_0xf261b0['userEmail']=_0xf261b0[_0x4ff2('0x1f')];}logger['info']('['+[_0x510e39[_0x4ff2('0x15')]()]+_0x4ff2('0x20'),_0xf261b0);_0x32158b(_0xf261b0);})[_0x4ff2('0x13')](function(_0x2b0b46){logger[_0x4ff2('0x14')]('['+[_0x510e39[_0x4ff2('0x15')]()]+']',_0x2b0b46[_0x4ff2('0x21')]);_0x5aa81c(_0x2b0b46[_0x4ff2('0x21')]);});}else{logger[_0x4ff2('0x11')]('['+[_0x510e39[_0x4ff2('0x15')]()]+_0x4ff2('0x22'));_0xf261b0[_0x4ff2('0x1e')]=_0xf261b0[_0x4ff2('0x10')];_0xf261b0[_0x4ff2('0x17')]=_0xf261b0[_0x4ff2('0x1f')];_0x32158b(_0xf261b0);}});};}function createEndUser(_0x4c123e,_0x2637b0,_0x15ea72,_0x31f202,_0x17d839){logger[_0x4ff2('0x11')]('['+[_0x4c123e[_0x4ff2('0x15')]()]+_0x4ff2('0x23'),_0x15ea72);return new Promise(function(_0x1d1c78,_0x19dbb6){var _0x673f4f={'method':'POST','uri':_0x31f202+_0x4ff2('0x24')+_0x17d839,'body':{'user_name':_0x15ea72[_0x4ff2('0x25')],'roles':_0x4ff2('0x26'),'first_name':_0x15ea72[_0x4ff2('0x25')],'active':_0x4ff2('0x1c'),'date_format':_0x4ff2('0x27'),'phone':_0x15ea72[_0x4ff2('0x25')]},'auth':_0x2637b0,'json':!![]};return rp(_0x673f4f)[_0x4ff2('0xd')](function(_0x39c7fe){logger[_0x4ff2('0x11')]('['+[_0x4c123e['toUpperCase']()]+_0x4ff2('0x28'),_0x39c7fe[_0x4ff2('0xe')]);_0x15ea72[_0x4ff2('0x29')]=_0x39c7fe[_0x4ff2('0xe')][_0x4ff2('0x1d')];_0x1d1c78(_0x15ea72);})[_0x4ff2('0x13')](function(_0x56d36f){logger['error']('['+[_0x4c123e[_0x4ff2('0x15')]()]+']',_0x56d36f[_0x4ff2('0x21')]);_0x19dbb6(_0x56d36f[_0x4ff2('0x21')]);});});}function getEndUser(_0x1958c5,_0xd17201,_0x4991d5,_0x3a76cd,_0x11daa8){return function(_0x1cd392){logger[_0x4ff2('0x11')]('['+[_0x1958c5['toUpperCase']()]+_0x4ff2('0x2a'),_0x1cd392);return new Promise(function(_0x7f5329,_0xb70c6c){var _0x31230c={'method':'GET','uri':_0x4991d5+'sys_user?sysparm_query=phone%3D'+_0x1cd392[_0x4ff2('0x25')]+'&'+_0x3a76cd+'&'+_0x11daa8,'auth':_0xd17201,'json':!![]};return rp(_0x31230c)[_0x4ff2('0xd')](function(_0x522762){if(_0x522762[_0x4ff2('0xe')][_0x4ff2('0xf')]>0x0){_0x1cd392['endUserId']=_0x522762['result'][0x0][_0x4ff2('0x1d')];logger[_0x4ff2('0x11')]('['+[_0x1958c5[_0x4ff2('0x15')]()]+'],\x20getEndUser\x20crm',_0x1cd392);_0x7f5329(_0x1cd392);}else{return createEndUser(_0x1958c5,_0xd17201,_0x1cd392,_0x4991d5,_0x3a76cd)[_0x4ff2('0xd')](function(_0x169d40){logger['info']('['+[_0x1958c5[_0x4ff2('0x15')]()]+_0x4ff2('0x2b'),_0x169d40);_0x7f5329(_0x169d40);});}})[_0x4ff2('0x13')](function(_0x570f47){logger['error']('['+[_0x1958c5[_0x4ff2('0x15')]()]+']',_0x570f47[_0x4ff2('0x21')]);_0xb70c6c(_0x570f47['message']);});});};}function getCustomFields(_0x3a1f54,_0x4565b1){var _0x2850a7={};if(_0x3a1f54[_0x4ff2('0xf')]>0x0){_[_0x4ff2('0x2c')](_0x3a1f54,function(_0xe4edd9){if(_[_0x4ff2('0x2d')]([_0x4ff2('0x2e'),_0x4ff2('0x2f')],_0xe4edd9[_0x4ff2('0x30')])&&_0xe4edd9[_0x4ff2('0x31')]&&!_0xe4edd9[_0x4ff2('0x32')]){_0x2850a7[_0xe4edd9[_0x4ff2('0x31')][_0x4ff2('0x33')]()]=_0xe4edd9[_0x4ff2('0x34')][_0x4ff2('0x35')]();}else if(_[_0x4ff2('0x2d')]([_0x4ff2('0x2e'),_0x4ff2('0x2f')],_0xe4edd9[_0x4ff2('0x30')])&&_0xe4edd9['idField']&&_0xe4edd9['customField']){_0x2850a7[_0xe4edd9['idField']['toLowerCase']()]=_0xe4edd9['content']['toString']();}else if(_0xe4edd9['type']==='variable'&&_0xe4edd9[_0x4ff2('0x36')]&&_0xe4edd9[_0x4ff2('0x37')]&&_0xe4edd9[_0x4ff2('0x32')]){_0x2850a7[_0xe4edd9['idField'][_0x4ff2('0x33')]()]=_0x4565b1[_0xe4edd9[_0x4ff2('0x36')]][_0x4ff2('0x35')]();}else if(_0xe4edd9[_0x4ff2('0x30')]===_0x4ff2('0x38')&&_0xe4edd9[_0x4ff2('0x39')]&&_0xe4edd9[_0x4ff2('0x39')][_0x4ff2('0x3a')]&&_0xe4edd9['idField']&&_0xe4edd9['customField']){_0x2850a7[_0xe4edd9['idField']['toLowerCase']()]=_0x4565b1[_0xe4edd9[_0x4ff2('0x39')]['name'][_0x4ff2('0x33')]()]['toString']();}});}return _0x2850a7;}function getTicket(_0x39c13c,_0x4dc8e8,_0x4fd732,_0x768575,_0x25a5f6,_0x341b57){return function(_0x290329){logger[_0x4ff2('0x11')]('['+[_0x39c13c['toUpperCase']()]+_0x4ff2('0x3b'),_0x290329);return new Promise(function(_0x3cb35f,_0xa2ffbd){var _0x391678=_0x39c13c[_0x4ff2('0x33')]()===_0x4ff2('0x3c')?_0x290329[_0x4ff2('0x1e')]:_0x290329[_0x4ff2('0x29')];var _0x30de8a={'method':'POST','uri':_0x4fd732+_0x4ff2('0x3d')+'?'+_0x341b57,'body':Object[_0x4ff2('0x3e')]({},{'active':_0x4ff2('0x1c'),'caller_id':_0x391678,'assigned_to':_0x290329[_0x4ff2('0x1e')],'short_description':intUtil['getString'](_0x768575[_0x4ff2('0x3f')],_0x25a5f6,'\x20'),'description':intUtil['getString'](_0x768575[_0x4ff2('0x40')],_0x25a5f6,'\x0a')},getCustomFields(_0x768575[_0x4ff2('0x41')],_0x25a5f6)),'auth':_0x4dc8e8,'json':!![]};return rp(_0x30de8a)[_0x4ff2('0xd')](function(_0x2ae8c5){logger[_0x4ff2('0x11')]('['+[_0x39c13c['toUpperCase']()]+']\x20POST\x20incident\x20entity\x20schema',_0x2ae8c5[_0x4ff2('0xe')]);_0x290329[_0x4ff2('0x42')]=_0x2ae8c5[_0x4ff2('0xe')][_0x4ff2('0x1d')];_0x290329[_0x4ff2('0x43')]=_0x2ae8c5[_0x4ff2('0xe')]['number'];logger[_0x4ff2('0x11')]('['+[_0x39c13c[_0x4ff2('0x15')]()]+']\x20getTicket\x20crm',_0x290329);_0x3cb35f(_0x290329);})['catch'](function(_0x3bf8db){logger[_0x4ff2('0x14')]('['+[_0x39c13c[_0x4ff2('0x15')]()]+']',_0x3bf8db[_0x4ff2('0x21')]);_0xa2ffbd(_0x3bf8db[_0x4ff2('0x21')]);});});};}function createRemoteTag(_0x3ef8f8,_0xe13ba5,_0x3623b9,_0x210460){return new Promise(function(_0x310ae2,_0x91a1f1){var _0x345a66={'method':_0x4ff2('0x44'),'uri':_0x3623b9+_0x4ff2('0x45')+'?'+_0x210460,'body':{'short_description':_0x3ef8f8,'global':!![],'active':!![],'name':_0x3ef8f8},'auth':_0xe13ba5,'json':!![]};return rp(_0x345a66)[_0x4ff2('0xd')](function(_0x3dd151){var _0x3c717b=_0x3dd151[_0x4ff2('0xe')][_0x4ff2('0x1d')];_0x310ae2(_0x3c717b);});});}function getRemoteTag(_0x317912,_0x4a5293,_0x307beb,_0x5490c2,_0x6cdad8){return new Promise(function(_0x50d459,_0x44434c){var _0x13e704={'method':_0x4ff2('0x18'),'uri':_0x307beb+'label'+'?sysparm_query=name%3D'+_0x317912+'&'+_0x5490c2,'auth':_0x4a5293,'json':!![]};return rp(_0x13e704)[_0x4ff2('0xd')](function(_0x378824){if(_0x378824[_0x4ff2('0xe')][_0x4ff2('0xf')]>0x0){var _0x340ddf=_0x378824[_0x4ff2('0xe')][0x0]['sys_id'];_0x50d459(_0x340ddf);}else{return createRemoteTag(_0x317912,_0x4a5293,_0x307beb,_0x5490c2)[_0x4ff2('0xd')](function(_0x8f0693){_0x50d459(_0x8f0693);});}});});}function assignTagToIncident(_0x382378,_0xeaf973,_0x4d6452,_0xef675c,_0x558aef){return new Promise(function(_0x26c51e,_0x3ad6af){var _0x1f0c25={'method':_0x4ff2('0x44'),'uri':_0x4d6452+_0x4ff2('0x46')+'?'+_0x558aef,'body':{'label':_0x382378,'table':_0x4ff2('0x3d'),'id_type':_0x4ff2('0x47'),'table_key':_0xef675c[_0x4ff2('0x42')],'title':_0x4ff2('0x48')+_0xef675c[_0x4ff2('0x43')],'id_display':_0xef675c[_0x4ff2('0x43')]},'auth':_0xeaf973,'json':!![]};return rp(_0x1f0c25)[_0x4ff2('0xd')](function(_0x2c21c1){_0x26c51e();})['catch'](function(){_0x26c51e();});});}function manageTags(_0x2de6ce,_0x4e21b4,_0x581590,_0xc1ff2c,_0x1f936a,_0x1190fd,_0x2a93d6){return new Promise(function(_0x57aa1e,_0x6a7c13){var _0xc4bdc3=[];_0x4e21b4[_0x4ff2('0x2c')](function(_0x51f828){_0xc4bdc3[_0x4ff2('0x49')](getRemoteTag(_0x51f828,_0x581590,_0xc1ff2c,_0x1190fd,_0x2a93d6));});return Promise['all'](_0xc4bdc3)['then'](function(_0x5a9545){if(_0x5a9545[_0x4ff2('0xf')]){logger[_0x4ff2('0x11')]('['+[_0x2de6ce[_0x4ff2('0x15')]()]+_0x4ff2('0x4a'),_0x5a9545);var _0x1a9c34=[];_0x5a9545[_0x4ff2('0x2c')](function(_0x21dc1e){_0x1a9c34[_0x4ff2('0x49')](assignTagToIncident(_0x21dc1e,_0x581590,_0xc1ff2c,_0x1f936a,_0x1190fd));});return Promise[_0x4ff2('0x4b')](_0x1a9c34)['then'](function(){_0x57aa1e();})[_0x4ff2('0x13')](function(){_0x57aa1e();});}else{_0x57aa1e();}});});}function getTags(_0x52b4cb,_0x3f65e9,_0xa6b426,_0x1f0894,_0x52f30a,_0x254177){return function(_0x38ad6d){return new Promise(function(_0x13465b,_0x233ad7){var _0x5b18d6=[];var _0x59d58c=_0x1f0894['Tags'];if(_0x59d58c&&_0x59d58c['length']>0x0){_0x5b18d6=_[_0x4ff2('0x4c')](_0x59d58c,_0x4ff2('0x3a'));}if(_0x5b18d6['length']>0x0){return manageTags(_0x52b4cb,_0x5b18d6,_0x3f65e9,_0xa6b426,_0x38ad6d,_0x52f30a,_0x254177)[_0x4ff2('0xd')](function(){_0x13465b(_0x38ad6d);});}else{_0x13465b(_0x38ad6d);}});};}function emit(_0x483377,_0x16aa9f,_0x1211b7){var _0x2b0f99=_0x4ff2('0x4d')+_0x4ff2('0x4e')+_0x4ff2('0x4f')+'%255EORDERBYDESCnumber';var _0x5027b9={'uri':_0x483377+_0x4ff2('0x50')+_0x1211b7+_0x2b0f99};io['to'](util['format'](_0x4ff2('0x51'),_0x16aa9f))[_0x4ff2('0x52')]('trigger:browser:url',_0x5027b9);}exports['cs']=function(_0x25ba36,_0x4817f5,_0x40e6b3,_0x17defd,_0x1c54f7,_0x496685,_0x2835c3,_0xd7fed1){var _0x1710cf={};var _0xd1953a={'user':_0x496685[_0x4ff2('0x53')],'pass':_0x496685[_0x4ff2('0x54')]};var _0x192bad=_0x4ff2('0x55');var _0xc2a0ef=_0x4ff2('0x56');_0x496685['remoteUri']=intUtil[_0x4ff2('0x57')](_0x496685[_0x4ff2('0x58')]);_0x496685[_0x4ff2('0x59')]=intUtil[_0x4ff2('0x57')](_0x496685[_0x4ff2('0x59')]);var _0x82018a=util[_0x4ff2('0x5a')](_0x4ff2('0x5b'),_0x496685[_0x4ff2('0x58')]);_0x1710cf[_0x4ff2('0x17')]=!_[_0x4ff2('0x5c')](_0x17defd)?_0x17defd['email']:null;_0x1710cf[_0x4ff2('0x1f')]=_0x496685[_0x4ff2('0x5d')];_0x1710cf['endUserNumber']=_0xd7fed1[_0x4ff2('0x33')]()===_0x4ff2('0x3c')?_0x4817f5[_0x4ff2('0x5e')]:_0x4817f5[_0x4ff2('0x5f')];_0x1710cf['callDirection']=_0xd7fed1==='queue'||_0xd7fed1===_0x4ff2('0x60')?_0x4ff2('0x61'):_0x4ff2('0x3c');var _0x3101b2=util[_0x4ff2('0x5a')](_0x4ff2('0x62'),_0x496685['serverUrl'],_0x4817f5['uniqueid'],md5(_0x4817f5['uniqueid']));if(_0x1c54f7&&_0x1c54f7[_0x4ff2('0x63')]){logger['info'](_0x4ff2('0x64'),_0x4ff2('0x65'));_0x4817f5[_0x4ff2('0x66')]=_0x3101b2;}else if(_0x2835c3&&_0x2835c3['recordingFormat']&&_0x2835c3[_0x4ff2('0x67')]!==_0x4ff2('0x68')){logger[_0x4ff2('0x11')](_0x4ff2('0x69'),_0x4ff2('0x65'));_0x4817f5[_0x4ff2('0x66')]=_0x3101b2;}else{_0x4817f5[_0x4ff2('0x66')]='';}return getAdminUser(_0xd7fed1,_0xd1953a,_0x1710cf,_0x82018a,_0xc2a0ef,_0x192bad)[_0x4ff2('0xd')](getUser(_0xd7fed1,_0xd1953a,_0x82018a,_0xc2a0ef,_0x192bad))[_0x4ff2('0xd')](getEndUser(_0xd7fed1,_0xd1953a,_0x82018a,_0xc2a0ef,_0x192bad))['then'](getTicket(_0xd7fed1,_0xd1953a,_0x82018a,_0x40e6b3,_0x4817f5,_0xc2a0ef))[_0x4ff2('0xd')](function(_0xb6948d){logger['info'](util['format'](_0x4ff2('0x6a'),_0xb6948d[_0x4ff2('0x42')]));logger[_0x4ff2('0x11')](util[_0x4ff2('0x5a')](_0x4ff2('0x6b'),_0xd7fed1));if(_0xd7fed1!==_0x4ff2('0x60')){logger['info']('['+[_0xd7fed1[_0x4ff2('0x15')]()]+']',_0x4ff2('0x6c'));emit(_0x496685[_0x4ff2('0x58')],_0x17defd[_0x4ff2('0x3a')],_0xb6948d[_0x4ff2('0x42')]);}})[_0x4ff2('0x13')](function(_0x27e094){logger[_0x4ff2('0x14')]('['+[_0xd7fed1['toUpperCase']()]+_0x4ff2('0x6d'),util[_0x4ff2('0x6e')](_0x27e094,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x36db=['%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','user:%s','trigger:browser:url','username','sysparm_limit=1','stripTrailingSlash','remoteUri','serverUrl','format','email','queue','unmanaged','outbound','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','request-promise','ioredis','./util','../../../../config/environment','../../../../config/logger','servicenow','redis','defaults','localhost','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','adminId','sys_id','],\x20getAdminUser\x20crm','toUpperCase','message','info','],\x20getUser\x20input\x20crm','validateEmail','userEmail','],\x20getUser\x20entity','true','userId','adminEmail','],\x20getUser\x20crm','catch','error',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','sys_user?','endUserNumber','user','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','string','picklist','type','customField','nameField','toLowerCase','content','toString','idField','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','POST','incident','assign','getString','Subjects','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketNumber',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','Incident','ticketId','Incident\x20-\x20','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','%26sysparm_record_target%3Dincident','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39'];(function(_0x528c61,_0x41e87a){var _0x2defba=function(_0x375616){while(--_0x375616){_0x528c61['push'](_0x528c61['shift']());}};_0x2defba(++_0x41e87a);}(_0x36db,0xe6));var _0xb36d=function(_0x3a3fcc,_0x38afb3){_0x3a3fcc=_0x3a3fcc-0x0;var _0xe16438=_0x36db[_0x3a3fcc];return _0xe16438;};'use strict';var _=require(_0xb36d('0x0'));var Promise=require('bluebird');var rp=require(_0xb36d('0x1'));var util=require('util');var md5=require('md5');var Redis=require(_0xb36d('0x2'));var intUtil=require(_0xb36d('0x3'));var config=require(_0xb36d('0x4'));var logger=require(_0xb36d('0x5'))(_0xb36d('0x6'));config[_0xb36d('0x7')]=_[_0xb36d('0x8')](config[_0xb36d('0x7')],{'host':_0xb36d('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb36d('0x7')]));function getAdminUser(_0x35e41c,_0x4c0347,_0x22807f,_0x436436,_0x3986ff,_0x2d29b7){return new Promise(function(_0x55f25d,_0xd6c32e){var _0x1a4df0={'method':_0xb36d('0xa'),'uri':_0x436436+_0xb36d('0xb')+'&'+_0x3986ff+'&'+_0x2d29b7,'auth':_0x4c0347,'json':!![]};return rp(_0x1a4df0)[_0xb36d('0xc')](function(_0x4938e4){if(_0x4938e4[_0xb36d('0xd')][_0xb36d('0xe')]>0x0){_0x22807f[_0xb36d('0xf')]=_0x4938e4['result'][0x0][_0xb36d('0x10')];}logger['info']('['+[_0x35e41c['toUpperCase']()]+_0xb36d('0x11'),_0x22807f);_0x55f25d(_0x22807f);})['catch'](function(_0xd3a524){logger['error']('['+[_0x35e41c[_0xb36d('0x12')]()]+']',_0xd3a524[_0xb36d('0x13')]);_0xd6c32e(_0xd3a524[_0xb36d('0x13')]);});});}function getUser(_0x2832b4,_0x54e07b,_0x3aabda,_0x2d8614,_0x4b92cf){return function(_0x30d335){logger[_0xb36d('0x14')]('['+[_0x2832b4['toUpperCase']()]+_0xb36d('0x15'),_0x30d335);return new Promise(function(_0x3814f4,_0x4ec67f){if(intUtil[_0xb36d('0x16')](_0x30d335[_0xb36d('0x17')])){var _0x128b21={'method':_0xb36d('0xa'),'uri':_0x3aabda+'sys_user?sysparm_query=email%3D'+_0x30d335[_0xb36d('0x17')]+'&'+_0x2d8614+'&'+_0x4b92cf,'auth':_0x54e07b,'json':!![]};logger[_0xb36d('0x14')]('['+[_0x2832b4['toUpperCase']()]+'],\x20getUser\x20rp\x20obj',_0x128b21);return rp(_0x128b21)[_0xb36d('0xc')](function(_0x5757ff){logger[_0xb36d('0x14')]('['+[_0x2832b4['toUpperCase']()]+_0xb36d('0x18'),_0x5757ff);if(_0x5757ff[_0xb36d('0xd')]['length']>0x0&&String(_0x5757ff[_0xb36d('0xd')][0x0]['active'])===_0xb36d('0x19')){_0x30d335[_0xb36d('0x1a')]=_0x5757ff[_0xb36d('0xd')][0x0]['sys_id'];}else{_0x30d335[_0xb36d('0x1a')]=_0x30d335[_0xb36d('0xf')];_0x30d335[_0xb36d('0x17')]=_0x30d335[_0xb36d('0x1b')];}logger[_0xb36d('0x14')]('['+[_0x2832b4[_0xb36d('0x12')]()]+_0xb36d('0x1c'),_0x30d335);_0x3814f4(_0x30d335);})[_0xb36d('0x1d')](function(_0x2805ef){logger[_0xb36d('0x1e')]('['+[_0x2832b4[_0xb36d('0x12')]()]+']',_0x2805ef[_0xb36d('0x13')]);_0x4ec67f(_0x2805ef[_0xb36d('0x13')]);});}else{logger[_0xb36d('0x14')]('['+[_0x2832b4['toUpperCase']()]+_0xb36d('0x1f'));_0x30d335['userId']=_0x30d335[_0xb36d('0xf')];_0x30d335[_0xb36d('0x17')]=_0x30d335[_0xb36d('0x1b')];_0x3814f4(_0x30d335);}});};}function createEndUser(_0x199639,_0x431993,_0xb9588a,_0x150d88,_0x4f00a3){logger[_0xb36d('0x14')]('['+[_0x199639['toUpperCase']()]+_0xb36d('0x20'),_0xb9588a);return new Promise(function(_0x798ce8,_0x250c0f){var _0x3b8956={'method':'POST','uri':_0x150d88+_0xb36d('0x21')+_0x4f00a3,'body':{'user_name':_0xb9588a[_0xb36d('0x22')],'roles':_0xb36d('0x23'),'first_name':_0xb9588a['endUserNumber'],'active':_0xb36d('0x19'),'date_format':'System','phone':_0xb9588a[_0xb36d('0x22')]},'auth':_0x431993,'json':!![]};return rp(_0x3b8956)[_0xb36d('0xc')](function(_0x2e24af){logger[_0xb36d('0x14')]('['+[_0x199639[_0xb36d('0x12')]()]+_0xb36d('0x24'),_0x2e24af[_0xb36d('0xd')]);_0xb9588a[_0xb36d('0x25')]=_0x2e24af['result'][_0xb36d('0x10')];_0x798ce8(_0xb9588a);})[_0xb36d('0x1d')](function(_0x138089){logger[_0xb36d('0x1e')]('['+[_0x199639[_0xb36d('0x12')]()]+']',_0x138089[_0xb36d('0x13')]);_0x250c0f(_0x138089['message']);});});}function getEndUser(_0x2e1e26,_0x1c749a,_0x57826b,_0x336596,_0x43a4f1){return function(_0x1b0172){logger[_0xb36d('0x14')]('['+[_0x2e1e26[_0xb36d('0x12')]()]+'],\x20getEndUser\x20input\x20crm',_0x1b0172);return new Promise(function(_0x3332c5,_0x21c4c8){var _0x345183={'method':_0xb36d('0xa'),'uri':_0x57826b+'sys_user?sysparm_query=phone%3D'+_0x1b0172['endUserNumber']+'&'+_0x336596+'&'+_0x43a4f1,'auth':_0x1c749a,'json':!![]};return rp(_0x345183)[_0xb36d('0xc')](function(_0x20092d){if(_0x20092d[_0xb36d('0xd')]['length']>0x0){_0x1b0172[_0xb36d('0x25')]=_0x20092d[_0xb36d('0xd')][0x0][_0xb36d('0x10')];logger[_0xb36d('0x14')]('['+[_0x2e1e26['toUpperCase']()]+_0xb36d('0x26'),_0x1b0172);_0x3332c5(_0x1b0172);}else{return createEndUser(_0x2e1e26,_0x1c749a,_0x1b0172,_0x57826b,_0x336596)['then'](function(_0x2a6781){logger['info']('['+[_0x2e1e26[_0xb36d('0x12')]()]+_0xb36d('0x27'),_0x2a6781);_0x3332c5(_0x2a6781);});}})[_0xb36d('0x1d')](function(_0x56b186){logger[_0xb36d('0x1e')]('['+[_0x2e1e26['toUpperCase']()]+']',_0x56b186[_0xb36d('0x13')]);_0x21c4c8(_0x56b186['message']);});});};}function getCustomFields(_0x13ac19,_0x305acb){var _0x355a1d={};if(_0x13ac19[_0xb36d('0xe')]>0x0){_[_0xb36d('0x28')](_0x13ac19,function(_0x452019){if(_[_0xb36d('0x29')]([_0xb36d('0x2a'),_0xb36d('0x2b')],_0x452019[_0xb36d('0x2c')])&&_0x452019['nameField']&&!_0x452019[_0xb36d('0x2d')]){_0x355a1d[_0x452019[_0xb36d('0x2e')][_0xb36d('0x2f')]()]=_0x452019[_0xb36d('0x30')][_0xb36d('0x31')]();}else if(_[_0xb36d('0x29')]([_0xb36d('0x2a'),_0xb36d('0x2b')],_0x452019[_0xb36d('0x2c')])&&_0x452019[_0xb36d('0x32')]&&_0x452019[_0xb36d('0x2d')]){_0x355a1d[_0x452019[_0xb36d('0x32')]['toLowerCase']()]=_0x452019['content'][_0xb36d('0x31')]();}else if(_0x452019[_0xb36d('0x2c')]==='variable'&&_0x452019[_0xb36d('0x33')]&&_0x452019[_0xb36d('0x32')]&&_0x452019['customField']){_0x355a1d[_0x452019['idField'][_0xb36d('0x2f')]()]=_0x305acb[_0x452019[_0xb36d('0x33')]][_0xb36d('0x31')]();}else if(_0x452019[_0xb36d('0x2c')]===_0xb36d('0x34')&&_0x452019[_0xb36d('0x35')]&&_0x452019[_0xb36d('0x35')][_0xb36d('0x36')]&&_0x452019['idField']&&_0x452019['customField']){_0x355a1d[_0x452019[_0xb36d('0x32')][_0xb36d('0x2f')]()]=_0x305acb[_0x452019[_0xb36d('0x35')][_0xb36d('0x36')][_0xb36d('0x2f')]()]['toString']();}});}return _0x355a1d;}function getTicket(_0x4b12d2,_0x3284a3,_0x49bb56,_0x33aee1,_0x5cc939,_0x37fe4d){return function(_0x10a1a7){logger[_0xb36d('0x14')]('['+[_0x4b12d2['toUpperCase']()]+_0xb36d('0x37'),_0x10a1a7);return new Promise(function(_0x2fd13b,_0x3d0215){var _0x49100a=_0x4b12d2[_0xb36d('0x2f')]()==='outbound'?_0x10a1a7[_0xb36d('0x1a')]:_0x10a1a7[_0xb36d('0x25')];var _0x3ccc51={'method':_0xb36d('0x38'),'uri':_0x49bb56+_0xb36d('0x39')+'?'+_0x37fe4d,'body':Object[_0xb36d('0x3a')]({},{'active':'true','caller_id':_0x49100a,'assigned_to':_0x10a1a7[_0xb36d('0x1a')],'short_description':intUtil[_0xb36d('0x3b')](_0x33aee1[_0xb36d('0x3c')],_0x5cc939,'\x20'),'description':intUtil['getString'](_0x33aee1['Descriptions'],_0x5cc939,'\x0a')},getCustomFields(_0x33aee1[_0xb36d('0x3d')],_0x5cc939)),'auth':_0x3284a3,'json':!![]};return rp(_0x3ccc51)[_0xb36d('0xc')](function(_0x2f54e6){logger[_0xb36d('0x14')]('['+[_0x4b12d2[_0xb36d('0x12')]()]+_0xb36d('0x3e'),_0x2f54e6[_0xb36d('0xd')]);_0x10a1a7['ticketId']=_0x2f54e6[_0xb36d('0xd')][_0xb36d('0x10')];_0x10a1a7[_0xb36d('0x3f')]=_0x2f54e6['result']['number'];logger[_0xb36d('0x14')]('['+[_0x4b12d2['toUpperCase']()]+_0xb36d('0x40'),_0x10a1a7);_0x2fd13b(_0x10a1a7);})['catch'](function(_0x538015){logger['error']('['+[_0x4b12d2[_0xb36d('0x12')]()]+']',_0x538015[_0xb36d('0x13')]);_0x3d0215(_0x538015['message']);});});};}function createRemoteTag(_0x28b810,_0x2818e1,_0x3cc4c8,_0x1fffa5){return new Promise(function(_0x5c64ce,_0x228d91){var _0x257bf2={'method':_0xb36d('0x38'),'uri':_0x3cc4c8+_0xb36d('0x41')+'?'+_0x1fffa5,'body':{'short_description':_0x28b810,'global':!![],'active':!![],'name':_0x28b810},'auth':_0x2818e1,'json':!![]};return rp(_0x257bf2)[_0xb36d('0xc')](function(_0x4a5014){var _0x16a80d=_0x4a5014[_0xb36d('0xd')][_0xb36d('0x10')];_0x5c64ce(_0x16a80d);});});}function getRemoteTag(_0x15d33d,_0x43c0d6,_0x878348,_0x273d97,_0x8f7846){return new Promise(function(_0x13017e,_0x55c7c1){var _0x1947d1={'method':'GET','uri':_0x878348+_0xb36d('0x41')+_0xb36d('0x42')+_0x15d33d+'&'+_0x273d97,'auth':_0x43c0d6,'json':!![]};return rp(_0x1947d1)['then'](function(_0x193fcd){if(_0x193fcd[_0xb36d('0xd')][_0xb36d('0xe')]>0x0){var _0x14a40f=_0x193fcd[_0xb36d('0xd')][0x0][_0xb36d('0x10')];_0x13017e(_0x14a40f);}else{return createRemoteTag(_0x15d33d,_0x43c0d6,_0x878348,_0x273d97)[_0xb36d('0xc')](function(_0x3bb265){_0x13017e(_0x3bb265);});}});});}function assignTagToIncident(_0x3c8bf4,_0x4ce8f0,_0x4def7f,_0x41fa80,_0x2d796f){return new Promise(function(_0x3b6288,_0x410c53){var _0x183ea5={'method':'POST','uri':_0x4def7f+'label_entry'+'?'+_0x2d796f,'body':{'label':_0x3c8bf4,'table':'incident','id_type':_0xb36d('0x43'),'table_key':_0x41fa80[_0xb36d('0x44')],'title':_0xb36d('0x45')+_0x41fa80[_0xb36d('0x3f')],'id_display':_0x41fa80[_0xb36d('0x3f')]},'auth':_0x4ce8f0,'json':!![]};return rp(_0x183ea5)['then'](function(_0x55e6a7){_0x3b6288();})[_0xb36d('0x1d')](function(){_0x3b6288();});});}function manageTags(_0x2809be,_0x26bf55,_0x127cf9,_0x163ca8,_0x568367,_0x5306a0,_0x388719){return new Promise(function(_0x52f0e8,_0x1ebf4e){var _0x1dfbe9=[];_0x26bf55[_0xb36d('0x28')](function(_0x51c1e1){_0x1dfbe9[_0xb36d('0x46')](getRemoteTag(_0x51c1e1,_0x127cf9,_0x163ca8,_0x5306a0,_0x388719));});return Promise[_0xb36d('0x47')](_0x1dfbe9)[_0xb36d('0xc')](function(_0x4e6293){if(_0x4e6293[_0xb36d('0xe')]){logger[_0xb36d('0x14')]('['+[_0x2809be['toUpperCase']()]+_0xb36d('0x48'),_0x4e6293);var _0x49fc3d=[];_0x4e6293[_0xb36d('0x28')](function(_0x2c2587){_0x49fc3d[_0xb36d('0x46')](assignTagToIncident(_0x2c2587,_0x127cf9,_0x163ca8,_0x568367,_0x5306a0));});return Promise[_0xb36d('0x47')](_0x49fc3d)[_0xb36d('0xc')](function(){_0x52f0e8();})[_0xb36d('0x1d')](function(){_0x52f0e8();});}else{_0x52f0e8();}});});}function getTags(_0x4ad4bd,_0x139b3a,_0x3ac07c,_0x4366a1,_0x55dcbe,_0x5aeeae){return function(_0xd00c9b){return new Promise(function(_0x206965,_0x43eb3d){var _0x172a1d=[];var _0x470df8=_0x4366a1[_0xb36d('0x49')];if(_0x470df8&&_0x470df8[_0xb36d('0xe')]>0x0){_0x172a1d=_['map'](_0x470df8,_0xb36d('0x36'));}if(_0x172a1d[_0xb36d('0xe')]>0x0){return manageTags(_0x4ad4bd,_0x172a1d,_0x139b3a,_0x3ac07c,_0xd00c9b,_0x55dcbe,_0x5aeeae)[_0xb36d('0xc')](function(){_0x206965(_0xd00c9b);});}else{_0x206965(_0xd00c9b);}});};}function emit(_0x1f1aca,_0x353999,_0x383c88){var _0x2e7997=_0xb36d('0x4a')+_0xb36d('0x4b')+_0xb36d('0x4c')+_0xb36d('0x4d');var _0x5c9e38={'uri':_0x1f1aca+_0xb36d('0x4e')+_0x383c88+_0x2e7997};io['to'](util['format'](_0xb36d('0x4f'),_0x353999))['emit'](_0xb36d('0x50'),_0x5c9e38);}exports['cs']=function(_0xfdbdfc,_0x45e44c,_0x50a8e1,_0x38c678,_0xa520b,_0x2b85c1,_0x4495a8,_0x2cfb7b){var _0x89cd9b={};var _0x40ab21={'user':_0x2b85c1[_0xb36d('0x51')],'pass':_0x2b85c1['password']};var _0x5c255f=_0xb36d('0x52');var _0x4d5a8a='sysparm_display_value=true';_0x2b85c1['remoteUri']=intUtil[_0xb36d('0x53')](_0x2b85c1[_0xb36d('0x54')]);_0x2b85c1[_0xb36d('0x55')]=intUtil[_0xb36d('0x53')](_0x2b85c1[_0xb36d('0x55')]);var _0x1c5e02=util[_0xb36d('0x56')]('%s/api/now/table/',_0x2b85c1['remoteUri']);_0x89cd9b['userEmail']=!_['isNil'](_0x38c678)?_0x38c678[_0xb36d('0x57')]:null;_0x89cd9b['adminEmail']=_0x2b85c1['email'];_0x89cd9b[_0xb36d('0x22')]=_0x2cfb7b[_0xb36d('0x2f')]()==='outbound'?_0x45e44c['destcalleridnum']:_0x45e44c['calleridnum'];_0x89cd9b['callDirection']=_0x2cfb7b===_0xb36d('0x58')||_0x2cfb7b===_0xb36d('0x59')?_0xb36d('0x58'):_0xb36d('0x5a');var _0x184a65=util[_0xb36d('0x56')](_0xb36d('0x5b'),_0x2b85c1['serverUrl'],_0x45e44c[_0xb36d('0x5c')],md5(_0x45e44c[_0xb36d('0x5c')]));if(_0xa520b&&_0xa520b['monitor_format']){logger[_0xb36d('0x14')](_0xb36d('0x5d'),_0xb36d('0x5e'));_0x45e44c[_0xb36d('0x5f')]=_0x184a65;}else if(_0x4495a8&&_0x4495a8['recordingFormat']&&_0x4495a8[_0xb36d('0x60')]!==_0xb36d('0x61')){logger[_0xb36d('0x14')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x45e44c[_0xb36d('0x5f')]=_0x184a65;}else{_0x45e44c['recordingURL']='';}return getAdminUser(_0x2cfb7b,_0x40ab21,_0x89cd9b,_0x1c5e02,_0x4d5a8a,_0x5c255f)['then'](getUser(_0x2cfb7b,_0x40ab21,_0x1c5e02,_0x4d5a8a,_0x5c255f))[_0xb36d('0xc')](getEndUser(_0x2cfb7b,_0x40ab21,_0x1c5e02,_0x4d5a8a,_0x5c255f))[_0xb36d('0xc')](getTicket(_0x2cfb7b,_0x40ab21,_0x1c5e02,_0x50a8e1,_0x45e44c,_0x4d5a8a))[_0xb36d('0xc')](function(_0x54a559){logger[_0xb36d('0x14')](util['format'](_0xb36d('0x62'),_0x54a559[_0xb36d('0x44')]));logger[_0xb36d('0x14')](util['format'](_0xb36d('0x63'),_0x2cfb7b));if(_0x2cfb7b!=='unmanaged'){logger[_0xb36d('0x14')]('['+[_0x2cfb7b['toUpperCase']()]+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x2b85c1[_0xb36d('0x54')],_0x38c678['name'],_0x54a559[_0xb36d('0x44')]);}})['catch'](function(_0x4330f6){logger[_0xb36d('0x1e')]('['+[_0x2cfb7b['toUpperCase']()]+_0xb36d('0x64'),util[_0xb36d('0x65')](_0x4330f6,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index b4ba6d2..c814fbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2729=['contacts','version','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','user:%s','catch','error','outbound','none','[OUTBOUND]','Recording\x20is\x20enabled!','The\x20User\x20ID\x20is:','destcalleridname','The\x20Enduser\x20ID\x20is:','Outbound','Ticket\x20created!','charAt','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','unmanaged','lastevent','toUpperCase','Fields','request-promise','util','../../../../config/logger','sugarcrm','redis','defaults','socket.io-emitter','POST','Creating\x20new\x20ticket...','name','getString','Subjects','assigned_user_id','created_by','description','Descriptions','toISOString','slice','duration_hours','duration_minutes','parent_type','Contacts','direction','length','forEach','push','idField','set_entry','JSON','Calls','format','Basic\x20%s','apiKey','toString','base64','get_server_info','stringify','isNil','info','Getting\x20agent\x20with\x20name','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','entry_list','find','name_value_list','value','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','Searching\x20enduser\x20with\x20phone','phone_home','Enduser\x20found!','resolve','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','first_name','<unknown>','Enduser\x20created.','debug','[HTTP]','map','nameField','customField','toLowerCase','content','string','custom_fields','type','variableName','customVariable','Variable','login','password','xCALLY\x20Motion\x20integration','Account\x20%d\x20is\x20not\x20valid','set_relationship','queue','remoteUri','stripTrailingSlash','serverUrl','uri','%s/service/v4_1/rest.php','monitor_format','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','calleridname','calleridnum','Inbound','The\x20Ticket\x20ID\x20is:','users'];(function(_0x2fd6cd,_0x5ae381){var _0x2cc3e9=function(_0x2a14a5){while(--_0x2a14a5){_0x2fd6cd['push'](_0x2fd6cd['shift']());}};_0x2cc3e9(++_0x5ae381);}(_0x2729,0x8b));var _0x9272=function(_0x582d5a,_0x3b57c0){_0x582d5a=_0x582d5a-0x0;var _0x5625ef=_0x2729[_0x582d5a];return _0x5625ef;};'use strict';var _=require('lodash');var rp=require(_0x9272('0x0'));var BPromise=require('bluebird');var md5=require('md5');var util=require(_0x9272('0x1'));var Redis=require('ioredis');var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0x9272('0x2'))(_0x9272('0x3'));config[_0x9272('0x4')]=_[_0x9272('0x5')](config[_0x9272('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x9272('0x6'))(new Redis(config['redis']));var def={'method':_0x9272('0x7'),'json':!![]};function emit(_0x551498,_0x3584d1,_0x5e7a53){io['to'](_0x551498)['emit'](_0x3584d1,_0x5e7a53);}function getTicket(_0x180cb5,_0x4ae6b7,_0x3abcf5,_0x1fc3fa,_0x5a16df,_0x2defc6,_0x1db214,_0x43a7d1){logger['info'](_0x9272('0x8'));var _0xd4689b=new Date();var _0x226235=[{'name':_0x9272('0x9'),'value':intUtil[_0x9272('0xa')](_0x1fc3fa[_0x9272('0xb')],_0x5a16df,'\x20')},{'name':_0x9272('0xc'),'value':_0x4ae6b7['id']},{'name':_0x9272('0xd'),'value':_0x4ae6b7['id']},{'name':_0x9272('0xe'),'value':intUtil[_0x9272('0xa')](_0x1fc3fa[_0x9272('0xf')],_0x5a16df,'\x0a')},{'name':'date_start','value':_0xd4689b[_0x9272('0x10')]()[_0x9272('0x11')](0x0,0x13)['replace']('T','\x20')},{'name':_0x9272('0x12'),'value':'0'},{'name':_0x9272('0x13'),'value':'15'},{'name':'parent_id','value':_0x3abcf5['id']},{'name':_0x9272('0x14'),'value':_0x9272('0x15')},{'name':'parent_name','value':_0x3abcf5[_0x9272('0x9')]},{'name':_0x9272('0x16'),'value':_0x43a7d1}];if(_0x2defc6[_0x9272('0x17')]){_[_0x9272('0x18')](_0x2defc6,function(_0x162f89){if(_0x5a16df[_0x162f89['variableName']]){_0x226235[_0x9272('0x19')]({'name':_0x162f89[_0x9272('0x1a')],'value':_0x5a16df[_0x162f89['variableName']]});}});}return request({'form':{'method':_0x9272('0x1b'),'input_type':_0x9272('0x1c'),'response_type':_0x9272('0x1c'),'rest_data':JSON['stringify']({'session':_0x1db214['id'],'module_name':_0x9272('0x1d'),'name_value_list':_0x226235})}});}function getAuth(_0x486e97){return util[_0x9272('0x1e')](_0x9272('0x1f'),new Buffer(_0x486e97[_0x9272('0x20')]+':X')[_0x9272('0x21')](_0x9272('0x22')));}function getServerInfo(_0x49c856){return request({'form':{'method':_0x9272('0x23'),'input_type':_0x9272('0x1c'),'response_type':_0x9272('0x1c'),'rest_data':JSON[_0x9272('0x24')]({'session':_0x49c856['id']})}});}function getUser(_0x410283,_0x4ba66f,_0x26c93d){if(!_[_0x9272('0x25')](_0x4ba66f)){logger[_0x9272('0x26')](_0x9272('0x27'),_0x4ba66f);return request({'form':{'method':_0x9272('0x28'),'input_type':_0x9272('0x1c'),'response_type':_0x9272('0x1c'),'rest_data':JSON[_0x9272('0x24')]({'session':_0x26c93d['id'],'module_name':_0x9272('0x29'),'query':util[_0x9272('0x1e')](_0x9272('0x2a'),_0x4ba66f),'order_by':'','offset':'0','select_fields':['id',_0x9272('0x9'),_0x9272('0x2b')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x9272('0x2c')](function(_0x1efcdc){if(_0x1efcdc[_0x9272('0x2d')][_0x9272('0x17')]){var _0x24d8a8=_[_0x9272('0x2e')](_0x1efcdc['entry_list'],function(_0x59adc5){return _0x59adc5[_0x9272('0x2f')]['user_name'][_0x9272('0x30')]===_0x4ba66f;});if(_0x24d8a8){logger['info']('Agent\x20found!');return BPromise['resolve']({'id':_0x24d8a8[_0x9272('0x2f')]['id'][_0x9272('0x30')],'name':_0x24d8a8[_0x9272('0x2f')][_0x9272('0x9')][_0x9272('0x30')]});}}logger[_0x9272('0x26')](_0x9272('0x31'));return BPromise['resolve']({'id':_0x26c93d['name_value_list'][_0x9272('0x32')][_0x9272('0x30')],'name':_0x26c93d[_0x9272('0x2f')][_0x9272('0x2b')][_0x9272('0x30')]});});}else{logger[_0x9272('0x26')]('Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!');return BPromise['resolve']({'id':_0x26c93d['name_value_list'][_0x9272('0x32')]['value'],'name':_0x26c93d['name_value_list'][_0x9272('0x2b')][_0x9272('0x30')]});}}function getEndUser(_0x256e89,_0x25fa0a,_0x261402,_0x327dad){logger[_0x9272('0x26')](_0x9272('0x33'),_0x261402);return request({'form':{'method':_0x9272('0x28'),'input_type':_0x9272('0x1c'),'response_type':_0x9272('0x1c'),'rest_data':JSON[_0x9272('0x24')]({'session':_0x327dad['id'],'module_name':_0x9272('0x15'),'query':util['format']('contacts.phone_home\x20=\x20\x22%s\x22',_0x261402),'order_by':'','offset':'0','select_fields':['id',_0x9272('0x9'),_0x9272('0x34')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x9272('0x2c')](function(_0x45fe1e){if(_0x45fe1e[_0x9272('0x2d')][_0x9272('0x17')]){var _0x246abe=_[_0x9272('0x2e')](_0x45fe1e[_0x9272('0x2d')],function(_0x5b99f0){return _0x5b99f0[_0x9272('0x2f')][_0x9272('0x34')][_0x9272('0x30')]===_0x261402;});if(_0x246abe){logger[_0x9272('0x26')](_0x9272('0x35'));return BPromise[_0x9272('0x36')]({'id':_0x246abe[_0x9272('0x2f')]['id']['value'],'name':_0x246abe[_0x9272('0x2f')][_0x9272('0x9')][_0x9272('0x30')],'phone':_0x246abe['name_value_list'][_0x9272('0x34')]['value']});}}else{logger[_0x9272('0x26')](_0x9272('0x37'));return request({'form':{'method':_0x9272('0x1b'),'input_type':_0x9272('0x1c'),'response_type':_0x9272('0x1c'),'rest_data':JSON[_0x9272('0x24')]({'session':_0x327dad['id'],'module_name':'Contacts','name_value_list':[{'name':_0x9272('0x38'),'value':_0x25fa0a!==_0x9272('0x39')?_0x25fa0a:util[_0x9272('0x1e')]('Caller\x20-\x20%s',_0x261402)},{'name':_0x9272('0x34'),'value':_0x261402}]})}})[_0x9272('0x2c')](function(_0x2a6792){logger[_0x9272('0x26')](_0x9272('0x3a'));return BPromise[_0x9272('0x36')]({'id':_0x2a6792['id'],'name':_0x2a6792[_0x9272('0x2d')]['first_name'][_0x9272('0x30')],'phone':_0x2a6792[_0x9272('0x2d')]['phone_home']['value']});});}});}function request(_0x2287ab){logger[_0x9272('0x3b')](_0x9272('0x3c'),JSON['stringify'](_0x2287ab));return rp(_['merge'](def,_0x2287ab));}function getTags(_0x2216e7,_0x344a70){var _0x42d3d3=[];if(_0x2216e7&&_0x2216e7['length']>0x0){_0x42d3d3=_[_0x9272('0x3d')](_0x2216e7,_0x344a70);}return _0x42d3d3;}function getCustomFields(_0x78f609,_0x3b13ca){var _0x4c8435=[];var _0x5e41c0={'custom_fields':[]};if(_0x78f609['length']>0x0){_[_0x9272('0x18')](_0x78f609,function(_0x37e880){if(_0x37e880['type']==='string'&&_0x37e880[_0x9272('0x3e')]&&!_0x37e880[_0x9272('0x3f')]){_0x5e41c0[_0x37e880[_0x9272('0x3e')][_0x9272('0x40')]()]=_0x37e880[_0x9272('0x41')][_0x9272('0x21')]();}else if(_0x37e880['type']===_0x9272('0x42')&&_0x37e880[_0x9272('0x1a')]&&_0x37e880[_0x9272('0x3f')]){_0x5e41c0[_0x9272('0x43')]['push']({'id':_0x37e880[_0x9272('0x1a')],'value':_0x37e880['content'][_0x9272('0x21')]()});}else if(_0x37e880[_0x9272('0x44')]==='variable'&&_0x37e880[_0x9272('0x45')]&&_0x37e880[_0x9272('0x1a')]&&_0x37e880['customField']){_0x3b13ca[_0x37e880[_0x9272('0x45')]]&&_0x5e41c0[_0x9272('0x43')][_0x9272('0x19')]({'id':_0x37e880[_0x9272('0x1a')],'value':_0x3b13ca[_0x37e880[_0x9272('0x45')]]['toString']()});}else if(_0x37e880[_0x9272('0x44')]===_0x9272('0x46')&&_0x37e880[_0x9272('0x47')]&&_0x37e880[_0x9272('0x47')][_0x9272('0x9')]&&_0x37e880[_0x9272('0x1a')]&&_0x37e880['customField']){_0x3b13ca[_0x37e880['Variable'][_0x9272('0x9')][_0x9272('0x40')]()]&&_0x5e41c0['custom_fields'][_0x9272('0x19')]({'id':_0x37e880[_0x9272('0x1a')],'value':_0x3b13ca[_0x37e880['Variable'][_0x9272('0x9')][_0x9272('0x40')]()][_0x9272('0x21')]()});}});}return _0x5e41c0;}function getConnection(_0x14a5c6){return request({'method':_0x9272('0x7'),'form':{'method':_0x9272('0x48'),'input_type':_0x9272('0x1c'),'response_type':_0x9272('0x1c'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x14a5c6['username'],'password':_0x14a5c6[_0x9272('0x49')],'encryption':'PLAIN'},'application':_0x9272('0x4a')})}})[_0x9272('0x2c')](function(_0x403662){var _0x284afd=_0x403662;if(_0x284afd['id']){def['sessionID']=_0x284afd['id'];return BPromise[_0x9272('0x36')](_0x284afd);}else{throw new Error(util[_0x9272('0x1e')](_0x9272('0x4b'),_0x14a5c6['id']));}});}function setRelationship(_0x1ca32e,_0x259436,_0x583105,_0xb5375b){return request({'form':{'method':_0x9272('0x4c'),'input_type':'JSON','response_type':_0x9272('0x1c'),'rest_data':JSON[_0x9272('0x24')]({'session':_0x1ca32e['id'],'module_name':_0x9272('0x1d'),'module_id':_0x583105['id'],'link_field_name':_0xb5375b,'related_ids':[_0x259436['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x9272('0x4d')]=function(_0xb90a06,_0xddfa40,_0x163df1,_0x437e2b,_0x37e115,_0x37932a){var _0xa3209f,_0x3df75f,_0x52c0b5,_0x2d3543;_0x37932a[_0x9272('0x4e')]=intUtil[_0x9272('0x4f')](_0x37932a['remoteUri']);_0x37932a[_0x9272('0x50')]=intUtil[_0x9272('0x4f')](_0x37932a['serverUrl']);def[_0x9272('0x51')]=util['format'](_0x9272('0x52'),_0x37932a[_0x9272('0x4e')]);if(_0x37e115&&_0x37e115[_0x9272('0x53')]){logger[_0x9272('0x26')](_0x9272('0x54'),'Recording\x20is\x20enabled!');_0xddfa40['recordingURL']=util[_0x9272('0x1e')](_0x9272('0x55'),_0x37932a[_0x9272('0x50')],_0xddfa40['uniqueid'],md5(_0xddfa40[_0x9272('0x56')]));}else{_0xddfa40[_0x9272('0x57')]='';}return getConnection(_0x37932a)[_0x9272('0x2c')](function(_0x5595ac){_0x2d3543=_0x5595ac;return getUser(_0x37932a,_0x437e2b[_0x9272('0x9')],_0x2d3543);})[_0x9272('0x2c')](function(_0x55e4a4){_0xa3209f=_0x55e4a4;logger[_0x9272('0x26')]('The\x20User\x20ID\x20is:',_0xa3209f['id']);return getEndUser(_0x37932a,_0xddfa40[_0x9272('0x58')],_0xddfa40[_0x9272('0x59')],_0x2d3543);})[_0x9272('0x2c')](function(_0x281b86){_0x3df75f=_0x281b86;logger[_0x9272('0x26')]('The\x20Enduser\x20ID\x20is:',_0x3df75f['id']);return getTicket(_0x37932a,_0xa3209f,_0x3df75f,_0x163df1,_0xddfa40,_0x163df1['Fields'],_0x2d3543,_0x9272('0x5a'));})[_0x9272('0x2c')](function(_0x1fc4f5){_0x52c0b5=_0x1fc4f5;logger[_0x9272('0x26')]('Ticket\x20created!');logger[_0x9272('0x26')](_0x9272('0x5b'),_0x52c0b5['id']);return setRelationship(_0x2d3543,_0xa3209f,_0x52c0b5,_0x9272('0x5c'));})['then'](function(){return setRelationship(_0x2d3543,_0x3df75f,_0x52c0b5,_0x9272('0x5d'));})[_0x9272('0x2c')](function(){return getServerInfo(_0x2d3543);})['then'](function(_0x12a3c4){var _0x295085=parseInt(_0x12a3c4[_0x9272('0x5e')]['charAt'](0x0));var _0x151265=util[_0x9272('0x1e')](_0x9272('0x5f'),_0x37932a['remoteUri'],_0x52c0b5['id']);if(_0x295085>0x6){_0x151265=util[_0x9272('0x1e')](_0x9272('0x60'),_0x37932a[_0x9272('0x4e')],_0x52c0b5['id']);}logger['info'](_0x9272('0x54'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x9272('0x1e')](_0x9272('0x61'),_0x437e2b[_0x9272('0x9')]),'trigger:browser:url',{'uri':_0x151265});})[_0x9272('0x62')](function(_0x46c79a){logger[_0x9272('0x63')]('[QUEUE]',JSON[_0x9272('0x24')](_0x46c79a));});};exports[_0x9272('0x64')]=function(_0x241532,_0x3dba8b,_0x310a76,_0x5949c8,_0x1000f4,_0x4f5ee4,_0xc8d086){var _0x1baf37,_0x35de00,_0x411ab6,_0x1557e1;_0x4f5ee4[_0x9272('0x4e')]=intUtil[_0x9272('0x4f')](_0x4f5ee4[_0x9272('0x4e')]);_0x4f5ee4[_0x9272('0x50')]=intUtil[_0x9272('0x4f')](_0x4f5ee4[_0x9272('0x50')]);def[_0x9272('0x51')]=util[_0x9272('0x1e')](_0x9272('0x52'),_0x4f5ee4[_0x9272('0x4e')]);if(_0xc8d086&&_0xc8d086['recordingFormat']&&_0xc8d086['recordingFormat']!==_0x9272('0x65')){logger[_0x9272('0x26')](_0x9272('0x66'),_0x9272('0x67'));_0x3dba8b['recordingURL']=util[_0x9272('0x1e')](_0x9272('0x55'),_0x4f5ee4[_0x9272('0x50')],_0x3dba8b[_0x9272('0x56')],md5(_0x3dba8b[_0x9272('0x56')]));}return getConnection(_0x4f5ee4)['then'](function(_0x5b35ab){_0x1557e1=_0x5b35ab;return getUser(_0x4f5ee4,_0x5949c8[_0x9272('0x9')],_0x1557e1);})['then'](function(_0x21b369){_0x1baf37=_0x21b369;logger[_0x9272('0x26')](_0x9272('0x68'),_0x1baf37['id']);return getEndUser(_0x4f5ee4,_0x3dba8b[_0x9272('0x69')],_0x3dba8b['destcalleridnum'],_0x1557e1);})['then'](function(_0x5d08be){_0x35de00=_0x5d08be;logger[_0x9272('0x26')](_0x9272('0x6a'),_0x35de00['id']);return getTicket(_0x4f5ee4,_0x1baf37,_0x35de00,_0x310a76,_0x3dba8b,_0x310a76['Fields'],_0x1557e1,_0x9272('0x6b'));})[_0x9272('0x2c')](function(_0xd33897){_0x411ab6=_0xd33897;logger[_0x9272('0x26')](_0x9272('0x6c'));logger[_0x9272('0x26')](_0x9272('0x5b'),_0x411ab6['id']);return setRelationship(_0x1557e1,_0x1baf37,_0x411ab6,_0x9272('0x5c'));})[_0x9272('0x2c')](function(){return setRelationship(_0x1557e1,_0x35de00,_0x411ab6,'contacts');})[_0x9272('0x2c')](function(){return getServerInfo(_0x1557e1);})[_0x9272('0x2c')](function(_0x5c8473){var _0x5d8d5=parseInt(_0x5c8473[_0x9272('0x5e')][_0x9272('0x6d')](0x0));var _0x39473c=util[_0x9272('0x1e')](_0x9272('0x5f'),_0x4f5ee4[_0x9272('0x4e')],_0x411ab6['id']);if(_0x5d8d5>0x6){_0x39473c=util[_0x9272('0x1e')](_0x9272('0x60'),_0x4f5ee4[_0x9272('0x4e')],_0x411ab6['id']);}logger[_0x9272('0x26')](_0x9272('0x66'),_0x9272('0x6e'));emit(util['format'](_0x9272('0x61'),_0x5949c8['name']),_0x9272('0x6f'),{'uri':_0x39473c});})[_0x9272('0x62')](function(_0x15e4ed){logger['error'](_0x9272('0x66'),JSON[_0x9272('0x24')](_0x15e4ed));});};exports[_0x9272('0x70')]=function(_0x54accb,_0x2e2723,_0x3a9160,_0x5488bc,_0x853ed7,_0x400949){var _0x50732b,_0x5f1008,_0x1650e9,_0x35749f;_0x400949[_0x9272('0x4e')]=intUtil['stripTrailingSlash'](_0x400949[_0x9272('0x4e')]);_0x400949[_0x9272('0x50')]=intUtil['stripTrailingSlash'](_0x400949['serverUrl']);def['uri']=util[_0x9272('0x1e')](_0x9272('0x52'),_0x400949[_0x9272('0x4e')]);if(_0x853ed7&&_0x853ed7[_0x9272('0x53')]){logger[_0x9272('0x26')]('['+_0x2e2723[_0x9272('0x71')][_0x9272('0x72')]()+']','Recording\x20is\x20enabled!');_0x2e2723[_0x9272('0x57')]=util[_0x9272('0x1e')](_0x9272('0x55'),_0x400949['serverUrl'],_0x2e2723[_0x9272('0x56')],md5(_0x2e2723[_0x9272('0x56')]));}else{_0x2e2723['recordingURL']='';}return getConnection(_0x400949)[_0x9272('0x2c')](function(_0x133b6e){_0x35749f=_0x133b6e;if(!_[_0x9272('0x25')](_0x5488bc)){return getUser(_0x400949,_0x5488bc[_0x9272('0x9')],_0x35749f);}else{return getUser(_0x400949,null,_0x35749f);}})[_0x9272('0x2c')](function(_0x33bd69){_0x50732b=_0x33bd69;logger[_0x9272('0x26')](_0x9272('0x68'),_0x50732b['id']);return getEndUser(_0x400949,_0x2e2723[_0x9272('0x58')],_0x2e2723[_0x9272('0x59')],_0x35749f);})['then'](function(_0x578ed2){_0x5f1008=_0x578ed2;logger[_0x9272('0x26')]('The\x20Enduser\x20ID\x20is:',_0x5f1008['id']);return getTicket(_0x400949,_0x50732b,_0x5f1008,_0x3a9160,_0x2e2723,_0x3a9160[_0x9272('0x73')],_0x35749f,_0x9272('0x5a'));})[_0x9272('0x2c')](function(_0x146b40){_0x1650e9=_0x146b40;logger[_0x9272('0x26')](_0x9272('0x6c'));logger[_0x9272('0x26')](_0x9272('0x5b'),_0x1650e9['id']);return setRelationship(_0x35749f,_0x50732b,_0x1650e9,_0x9272('0x5c'));})[_0x9272('0x2c')](function(){return setRelationship(_0x35749f,_0x5f1008,_0x1650e9,'contacts');})[_0x9272('0x2c')](function(){return getServerInfo(_0x35749f);})[_0x9272('0x62')](function(_0x56f58e){logger[_0x9272('0x63')]('['+_0x2e2723[_0x9272('0x71')][_0x9272('0x72')]()+']',JSON['stringify'](_0x56f58e));});};
\ No newline at end of file
+var _0x4e10=['Getting\x20agent\x20with\x20name','get_entry_list','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','then','entry_list','name_value_list','user_name','value','Agent\x20found!','resolve','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','contacts.phone_home\x20=\x20\x22%s\x22','length','find','phone_home','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','<unknown>','Enduser\x20created.','[HTTP]','map','type','nameField','customField','toLowerCase','content','idField','custom_fields','customVariable','Variable','login','username','PLAIN','sessionID','Account\x20%d\x20is\x20not\x20valid','set_relationship','queue','remoteUri','stripTrailingSlash','serverUrl','uri','%s/service/v4_1/rest.php','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','The\x20User\x20ID\x20is:','calleridname','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','contacts','version','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','catch','error','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','Fields','Outbound','lastevent','calleridnum','toUpperCase','lodash','md5','util','./util','../../../../config/environment','../../../../config/logger','sugarcrm','redis','defaults','localhost','socket.io-emitter','Creating\x20new\x20ticket...','getString','Subjects','assigned_user_id','description','Descriptions','date_start','toISOString','slice','replace','duration_hours','duration_minutes','parent_id','Contacts','parent_name','name','direction','forEach','push','variableName','set_entry','JSON','Calls','format','Basic\x20%s','apiKey','toString','base64','stringify','isNil','info'];(function(_0x3d671c,_0x1da12f){var _0x1eb02a=function(_0x4a904e){while(--_0x4a904e){_0x3d671c['push'](_0x3d671c['shift']());}};_0x1eb02a(++_0x1da12f);}(_0x4e10,0x1ba));var _0x04e1=function(_0x538115,_0xc6b475){_0x538115=_0x538115-0x0;var _0x503486=_0x4e10[_0x538115];return _0x503486;};'use strict';var _=require(_0x04e1('0x0'));var rp=require('request-promise');var BPromise=require('bluebird');var md5=require(_0x04e1('0x1'));var util=require(_0x04e1('0x2'));var Redis=require('ioredis');var intUtil=require(_0x04e1('0x3'));var config=require(_0x04e1('0x4'));var logger=require(_0x04e1('0x5'))(_0x04e1('0x6'));config[_0x04e1('0x7')]=_[_0x04e1('0x8')](config[_0x04e1('0x7')],{'host':_0x04e1('0x9'),'port':0x18eb});var io=require(_0x04e1('0xa'))(new Redis(config['redis']));var def={'method':'POST','json':!![]};function emit(_0x3fb68d,_0x3e4a78,_0x5c48ff){io['to'](_0x3fb68d)['emit'](_0x3e4a78,_0x5c48ff);}function getTicket(_0x5bf632,_0x1d6d36,_0x399e83,_0xcfe209,_0x3622b1,_0x59c351,_0x4fdd44,_0x323340){logger['info'](_0x04e1('0xb'));var _0x89a33a=new Date();var _0x1d5b9f=[{'name':'name','value':intUtil[_0x04e1('0xc')](_0xcfe209[_0x04e1('0xd')],_0x3622b1,'\x20')},{'name':_0x04e1('0xe'),'value':_0x1d6d36['id']},{'name':'created_by','value':_0x1d6d36['id']},{'name':_0x04e1('0xf'),'value':intUtil[_0x04e1('0xc')](_0xcfe209[_0x04e1('0x10')],_0x3622b1,'\x0a')},{'name':_0x04e1('0x11'),'value':_0x89a33a[_0x04e1('0x12')]()[_0x04e1('0x13')](0x0,0x13)[_0x04e1('0x14')]('T','\x20')},{'name':_0x04e1('0x15'),'value':'0'},{'name':_0x04e1('0x16'),'value':'15'},{'name':_0x04e1('0x17'),'value':_0x399e83['id']},{'name':'parent_type','value':_0x04e1('0x18')},{'name':_0x04e1('0x19'),'value':_0x399e83[_0x04e1('0x1a')]},{'name':_0x04e1('0x1b'),'value':_0x323340}];if(_0x59c351['length']){_[_0x04e1('0x1c')](_0x59c351,function(_0x3cb622){if(_0x3622b1[_0x3cb622['variableName']]){_0x1d5b9f[_0x04e1('0x1d')]({'name':_0x3cb622['idField'],'value':_0x3622b1[_0x3cb622[_0x04e1('0x1e')]]});}});}return request({'form':{'method':_0x04e1('0x1f'),'input_type':_0x04e1('0x20'),'response_type':_0x04e1('0x20'),'rest_data':JSON['stringify']({'session':_0x4fdd44['id'],'module_name':_0x04e1('0x21'),'name_value_list':_0x1d5b9f})}});}function getAuth(_0x2d6d51){return util[_0x04e1('0x22')](_0x04e1('0x23'),new Buffer(_0x2d6d51[_0x04e1('0x24')]+':X')[_0x04e1('0x25')](_0x04e1('0x26')));}function getServerInfo(_0x33c1c2){return request({'form':{'method':'get_server_info','input_type':'JSON','response_type':_0x04e1('0x20'),'rest_data':JSON[_0x04e1('0x27')]({'session':_0x33c1c2['id']})}});}function getUser(_0x33a649,_0x2252d5,_0x30e811){if(!_[_0x04e1('0x28')](_0x2252d5)){logger[_0x04e1('0x29')](_0x04e1('0x2a'),_0x2252d5);return request({'form':{'method':_0x04e1('0x2b'),'input_type':_0x04e1('0x20'),'response_type':_0x04e1('0x20'),'rest_data':JSON[_0x04e1('0x27')]({'session':_0x30e811['id'],'module_name':'Employees','query':util[_0x04e1('0x22')](_0x04e1('0x2c'),_0x2252d5),'order_by':'','offset':'0','select_fields':['id','name','user_name'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x04e1('0x2d')](function(_0xb52a51){if(_0xb52a51[_0x04e1('0x2e')]['length']){var _0x4a1f3f=_['find'](_0xb52a51[_0x04e1('0x2e')],function(_0x2e8c77){return _0x2e8c77[_0x04e1('0x2f')][_0x04e1('0x30')][_0x04e1('0x31')]===_0x2252d5;});if(_0x4a1f3f){logger[_0x04e1('0x29')](_0x04e1('0x32'));return BPromise[_0x04e1('0x33')]({'id':_0x4a1f3f['name_value_list']['id'][_0x04e1('0x31')],'name':_0x4a1f3f[_0x04e1('0x2f')][_0x04e1('0x1a')][_0x04e1('0x31')]});}}logger[_0x04e1('0x29')](_0x04e1('0x34'));return BPromise[_0x04e1('0x33')]({'id':_0x30e811['name_value_list'][_0x04e1('0x35')][_0x04e1('0x31')],'name':_0x30e811[_0x04e1('0x2f')][_0x04e1('0x30')]['value']});});}else{logger['info'](_0x04e1('0x36'));return BPromise['resolve']({'id':_0x30e811[_0x04e1('0x2f')][_0x04e1('0x35')][_0x04e1('0x31')],'name':_0x30e811[_0x04e1('0x2f')]['user_name']['value']});}}function getEndUser(_0x2f3b74,_0x2cde28,_0xbc6727,_0x317b0c){logger[_0x04e1('0x29')](_0x04e1('0x37'),_0xbc6727);return request({'form':{'method':_0x04e1('0x2b'),'input_type':'JSON','response_type':_0x04e1('0x20'),'rest_data':JSON['stringify']({'session':_0x317b0c['id'],'module_name':_0x04e1('0x18'),'query':util[_0x04e1('0x22')](_0x04e1('0x38'),_0xbc6727),'order_by':'','offset':'0','select_fields':['id',_0x04e1('0x1a'),'phone_home'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x04e1('0x2d')](function(_0x4affe1){if(_0x4affe1[_0x04e1('0x2e')][_0x04e1('0x39')]){var _0x1e5b4d=_[_0x04e1('0x3a')](_0x4affe1[_0x04e1('0x2e')],function(_0x3fac00){return _0x3fac00['name_value_list'][_0x04e1('0x3b')][_0x04e1('0x31')]===_0xbc6727;});if(_0x1e5b4d){logger[_0x04e1('0x29')](_0x04e1('0x3c'));return BPromise['resolve']({'id':_0x1e5b4d[_0x04e1('0x2f')]['id'][_0x04e1('0x31')],'name':_0x1e5b4d[_0x04e1('0x2f')][_0x04e1('0x1a')]['value'],'phone':_0x1e5b4d[_0x04e1('0x2f')]['phone_home'][_0x04e1('0x31')]});}}else{logger[_0x04e1('0x29')](_0x04e1('0x3d'));return request({'form':{'method':'set_entry','input_type':'JSON','response_type':_0x04e1('0x20'),'rest_data':JSON[_0x04e1('0x27')]({'session':_0x317b0c['id'],'module_name':_0x04e1('0x18'),'name_value_list':[{'name':'first_name','value':_0x2cde28!==_0x04e1('0x3e')?_0x2cde28:util[_0x04e1('0x22')]('Caller\x20-\x20%s',_0xbc6727)},{'name':_0x04e1('0x3b'),'value':_0xbc6727}]})}})[_0x04e1('0x2d')](function(_0xe2c644){logger[_0x04e1('0x29')](_0x04e1('0x3f'));return BPromise[_0x04e1('0x33')]({'id':_0xe2c644['id'],'name':_0xe2c644[_0x04e1('0x2e')]['first_name']['value'],'phone':_0xe2c644[_0x04e1('0x2e')][_0x04e1('0x3b')][_0x04e1('0x31')]});});}});}function request(_0x58150c){logger['debug'](_0x04e1('0x40'),JSON[_0x04e1('0x27')](_0x58150c));return rp(_['merge'](def,_0x58150c));}function getTags(_0x269f32,_0x3dcab0){var _0x28d976=[];if(_0x269f32&&_0x269f32['length']>0x0){_0x28d976=_[_0x04e1('0x41')](_0x269f32,_0x3dcab0);}return _0x28d976;}function getCustomFields(_0x3b9445,_0x109d35){var _0x158840=[];var _0xe87c0f={'custom_fields':[]};if(_0x3b9445[_0x04e1('0x39')]>0x0){_['forEach'](_0x3b9445,function(_0x170df2){if(_0x170df2[_0x04e1('0x42')]==='string'&&_0x170df2[_0x04e1('0x43')]&&!_0x170df2[_0x04e1('0x44')]){_0xe87c0f[_0x170df2['nameField'][_0x04e1('0x45')]()]=_0x170df2[_0x04e1('0x46')][_0x04e1('0x25')]();}else if(_0x170df2['type']==='string'&&_0x170df2[_0x04e1('0x47')]&&_0x170df2[_0x04e1('0x44')]){_0xe87c0f[_0x04e1('0x48')]['push']({'id':_0x170df2[_0x04e1('0x47')],'value':_0x170df2[_0x04e1('0x46')][_0x04e1('0x25')]()});}else if(_0x170df2['type']==='variable'&&_0x170df2['variableName']&&_0x170df2[_0x04e1('0x47')]&&_0x170df2['customField']){_0x109d35[_0x170df2[_0x04e1('0x1e')]]&&_0xe87c0f[_0x04e1('0x48')][_0x04e1('0x1d')]({'id':_0x170df2['idField'],'value':_0x109d35[_0x170df2[_0x04e1('0x1e')]][_0x04e1('0x25')]()});}else if(_0x170df2['type']===_0x04e1('0x49')&&_0x170df2['Variable']&&_0x170df2[_0x04e1('0x4a')][_0x04e1('0x1a')]&&_0x170df2[_0x04e1('0x47')]&&_0x170df2[_0x04e1('0x44')]){_0x109d35[_0x170df2[_0x04e1('0x4a')][_0x04e1('0x1a')][_0x04e1('0x45')]()]&&_0xe87c0f[_0x04e1('0x48')][_0x04e1('0x1d')]({'id':_0x170df2[_0x04e1('0x47')],'value':_0x109d35[_0x170df2[_0x04e1('0x4a')]['name'][_0x04e1('0x45')]()][_0x04e1('0x25')]()});}});}return _0xe87c0f;}function getConnection(_0x4eaef7){return request({'method':'POST','form':{'method':_0x04e1('0x4b'),'input_type':_0x04e1('0x20'),'response_type':_0x04e1('0x20'),'rest_data':JSON[_0x04e1('0x27')]({'user_auth':{'user_name':_0x4eaef7[_0x04e1('0x4c')],'password':_0x4eaef7['password'],'encryption':_0x04e1('0x4d')},'application':'xCALLY\x20Motion\x20integration'})}})['then'](function(_0x40ce94){var _0x5ab2bb=_0x40ce94;if(_0x5ab2bb['id']){def[_0x04e1('0x4e')]=_0x5ab2bb['id'];return BPromise['resolve'](_0x5ab2bb);}else{throw new Error(util[_0x04e1('0x22')](_0x04e1('0x4f'),_0x4eaef7['id']));}});}function setRelationship(_0x1ba455,_0x362c89,_0x5e56e4,_0x172156){return request({'form':{'method':_0x04e1('0x50'),'input_type':_0x04e1('0x20'),'response_type':_0x04e1('0x20'),'rest_data':JSON[_0x04e1('0x27')]({'session':_0x1ba455['id'],'module_name':_0x04e1('0x21'),'module_id':_0x5e56e4['id'],'link_field_name':_0x172156,'related_ids':[_0x362c89['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x04e1('0x51')]=function(_0x22aa93,_0xf5cc36,_0x5b4888,_0x477df6,_0x463f07,_0xe27ba0){var _0x361150,_0x4b20d6,_0x464001,_0x1adc89;_0xe27ba0[_0x04e1('0x52')]=intUtil[_0x04e1('0x53')](_0xe27ba0['remoteUri']);_0xe27ba0['serverUrl']=intUtil[_0x04e1('0x53')](_0xe27ba0[_0x04e1('0x54')]);def[_0x04e1('0x55')]=util[_0x04e1('0x22')](_0x04e1('0x56'),_0xe27ba0['remoteUri']);if(_0x463f07&&_0x463f07[_0x04e1('0x57')]){logger['info'](_0x04e1('0x58'),_0x04e1('0x59'));_0xf5cc36['recordingURL']=util[_0x04e1('0x22')](_0x04e1('0x5a'),_0xe27ba0['serverUrl'],_0xf5cc36[_0x04e1('0x5b')],md5(_0xf5cc36['uniqueid']));}else{_0xf5cc36[_0x04e1('0x5c')]='';}return getConnection(_0xe27ba0)[_0x04e1('0x2d')](function(_0x10a787){_0x1adc89=_0x10a787;return getUser(_0xe27ba0,_0x477df6['name'],_0x1adc89);})['then'](function(_0x599a9f){_0x361150=_0x599a9f;logger[_0x04e1('0x29')](_0x04e1('0x5d'),_0x361150['id']);return getEndUser(_0xe27ba0,_0xf5cc36[_0x04e1('0x5e')],_0xf5cc36['calleridnum'],_0x1adc89);})[_0x04e1('0x2d')](function(_0x3067ea){_0x4b20d6=_0x3067ea;logger[_0x04e1('0x29')]('The\x20Enduser\x20ID\x20is:',_0x4b20d6['id']);return getTicket(_0xe27ba0,_0x361150,_0x4b20d6,_0x5b4888,_0xf5cc36,_0x5b4888['Fields'],_0x1adc89,_0x04e1('0x5f'));})[_0x04e1('0x2d')](function(_0x1a9a0d){_0x464001=_0x1a9a0d;logger[_0x04e1('0x29')](_0x04e1('0x60'));logger[_0x04e1('0x29')](_0x04e1('0x61'),_0x464001['id']);return setRelationship(_0x1adc89,_0x361150,_0x464001,_0x04e1('0x62'));})['then'](function(){return setRelationship(_0x1adc89,_0x4b20d6,_0x464001,_0x04e1('0x63'));})[_0x04e1('0x2d')](function(){return getServerInfo(_0x1adc89);})[_0x04e1('0x2d')](function(_0x4d87a2){var _0x55f254=parseInt(_0x4d87a2[_0x04e1('0x64')][_0x04e1('0x65')](0x0));var _0x17565c=util[_0x04e1('0x22')](_0x04e1('0x66'),_0xe27ba0[_0x04e1('0x52')],_0x464001['id']);if(_0x55f254>0x6){_0x17565c=util[_0x04e1('0x22')](_0x04e1('0x67'),_0xe27ba0['remoteUri'],_0x464001['id']);}logger[_0x04e1('0x29')]('[QUEUE]',_0x04e1('0x68'));emit(util['format'](_0x04e1('0x69'),_0x477df6[_0x04e1('0x1a')]),_0x04e1('0x6a'),{'uri':_0x17565c});})[_0x04e1('0x6b')](function(_0x1d8284){logger[_0x04e1('0x6c')](_0x04e1('0x58'),JSON[_0x04e1('0x27')](_0x1d8284));});};exports[_0x04e1('0x6d')]=function(_0x13b571,_0x272444,_0x335b2a,_0x167c64,_0x9ccb43,_0x5ebb14,_0x31f328){var _0x5ca0ec,_0x463345,_0x41b628,_0x270c99;_0x5ebb14['remoteUri']=intUtil[_0x04e1('0x53')](_0x5ebb14[_0x04e1('0x52')]);_0x5ebb14[_0x04e1('0x54')]=intUtil[_0x04e1('0x53')](_0x5ebb14[_0x04e1('0x54')]);def[_0x04e1('0x55')]=util[_0x04e1('0x22')]('%s/service/v4_1/rest.php',_0x5ebb14[_0x04e1('0x52')]);if(_0x31f328&&_0x31f328[_0x04e1('0x6e')]&&_0x31f328[_0x04e1('0x6e')]!==_0x04e1('0x6f')){logger[_0x04e1('0x29')](_0x04e1('0x70'),'Recording\x20is\x20enabled!');_0x272444[_0x04e1('0x5c')]=util[_0x04e1('0x22')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5ebb14[_0x04e1('0x54')],_0x272444['uniqueid'],md5(_0x272444[_0x04e1('0x5b')]));}return getConnection(_0x5ebb14)[_0x04e1('0x2d')](function(_0x108b74){_0x270c99=_0x108b74;return getUser(_0x5ebb14,_0x167c64['name'],_0x270c99);})[_0x04e1('0x2d')](function(_0x24aefc){_0x5ca0ec=_0x24aefc;logger[_0x04e1('0x29')]('The\x20User\x20ID\x20is:',_0x5ca0ec['id']);return getEndUser(_0x5ebb14,_0x272444[_0x04e1('0x71')],_0x272444[_0x04e1('0x72')],_0x270c99);})[_0x04e1('0x2d')](function(_0x56650a){_0x463345=_0x56650a;logger['info'](_0x04e1('0x73'),_0x463345['id']);return getTicket(_0x5ebb14,_0x5ca0ec,_0x463345,_0x335b2a,_0x272444,_0x335b2a[_0x04e1('0x74')],_0x270c99,_0x04e1('0x75'));})[_0x04e1('0x2d')](function(_0x2545a4){_0x41b628=_0x2545a4;logger['info']('Ticket\x20created!');logger[_0x04e1('0x29')]('The\x20Ticket\x20ID\x20is:',_0x41b628['id']);return setRelationship(_0x270c99,_0x5ca0ec,_0x41b628,_0x04e1('0x62'));})[_0x04e1('0x2d')](function(){return setRelationship(_0x270c99,_0x463345,_0x41b628,_0x04e1('0x63'));})['then'](function(){return getServerInfo(_0x270c99);})[_0x04e1('0x2d')](function(_0x3eab04){var _0x5c5b6e=parseInt(_0x3eab04['version'][_0x04e1('0x65')](0x0));var _0x138b6d=util[_0x04e1('0x22')](_0x04e1('0x66'),_0x5ebb14[_0x04e1('0x52')],_0x41b628['id']);if(_0x5c5b6e>0x6){_0x138b6d=util[_0x04e1('0x22')](_0x04e1('0x67'),_0x5ebb14[_0x04e1('0x52')],_0x41b628['id']);}logger[_0x04e1('0x29')](_0x04e1('0x70'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x04e1('0x22')](_0x04e1('0x69'),_0x167c64['name']),_0x04e1('0x6a'),{'uri':_0x138b6d});})[_0x04e1('0x6b')](function(_0x4910d2){logger['error'](_0x04e1('0x70'),JSON[_0x04e1('0x27')](_0x4910d2));});};exports['unmanaged']=function(_0x6df01b,_0x62effa,_0x30fb0c,_0x5c84eb,_0x1573de,_0x1ecf30){var _0x1081bb,_0x18971f,_0x3728b5,_0x372564;_0x1ecf30['remoteUri']=intUtil[_0x04e1('0x53')](_0x1ecf30['remoteUri']);_0x1ecf30[_0x04e1('0x54')]=intUtil[_0x04e1('0x53')](_0x1ecf30[_0x04e1('0x54')]);def[_0x04e1('0x55')]=util[_0x04e1('0x22')](_0x04e1('0x56'),_0x1ecf30['remoteUri']);if(_0x1573de&&_0x1573de[_0x04e1('0x57')]){logger[_0x04e1('0x29')]('['+_0x62effa[_0x04e1('0x76')]['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x62effa['recordingURL']=util[_0x04e1('0x22')](_0x04e1('0x5a'),_0x1ecf30[_0x04e1('0x54')],_0x62effa[_0x04e1('0x5b')],md5(_0x62effa[_0x04e1('0x5b')]));}else{_0x62effa[_0x04e1('0x5c')]='';}return getConnection(_0x1ecf30)[_0x04e1('0x2d')](function(_0x2080ab){_0x372564=_0x2080ab;if(!_['isNil'](_0x5c84eb)){return getUser(_0x1ecf30,_0x5c84eb['name'],_0x372564);}else{return getUser(_0x1ecf30,null,_0x372564);}})[_0x04e1('0x2d')](function(_0x1e6462){_0x1081bb=_0x1e6462;logger[_0x04e1('0x29')](_0x04e1('0x5d'),_0x1081bb['id']);return getEndUser(_0x1ecf30,_0x62effa['calleridname'],_0x62effa[_0x04e1('0x77')],_0x372564);})['then'](function(_0x52f79e){_0x18971f=_0x52f79e;logger['info']('The\x20Enduser\x20ID\x20is:',_0x18971f['id']);return getTicket(_0x1ecf30,_0x1081bb,_0x18971f,_0x30fb0c,_0x62effa,_0x30fb0c['Fields'],_0x372564,'Inbound');})[_0x04e1('0x2d')](function(_0x56965a){_0x3728b5=_0x56965a;logger[_0x04e1('0x29')](_0x04e1('0x60'));logger['info'](_0x04e1('0x61'),_0x3728b5['id']);return setRelationship(_0x372564,_0x1081bb,_0x3728b5,_0x04e1('0x62'));})[_0x04e1('0x2d')](function(){return setRelationship(_0x372564,_0x18971f,_0x3728b5,_0x04e1('0x63'));})['then'](function(){return getServerInfo(_0x372564);})[_0x04e1('0x6b')](function(_0x95d15f){logger[_0x04e1('0x6c')]('['+_0x62effa[_0x04e1('0x76')][_0x04e1('0x78')]()+']',JSON[_0x04e1('0x27')](_0x95d15f));});};
\ No newline at end of file
index 69d1422..de54d0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb03c=['content','variable','variableName','customVariable','Variable','name','toLowerCase','keyValue','%s:\x20%s','keyContent','keyType','key','format','join','lastIndexOf','validateEmail','isNil','test','lodash','getString','length','sortBy','type','string','push'];(function(_0x5cf137,_0x11d296){var _0x2ae93f=function(_0x147151){while(--_0x147151){_0x5cf137['push'](_0x5cf137['shift']());}};_0x2ae93f(++_0x11d296);}(_0xb03c,0x1a2));var _0xcb03=function(_0x421196,_0x1cbd94){_0x421196=_0x421196-0x0;var _0x2738af=_0xb03c[_0x421196];return _0x2738af;};'use strict';var _=require(_0xcb03('0x0'));var util=require('util');exports[_0xcb03('0x1')]=function(_0x230039,_0x4bb49c,_0x8d568f){var _0x43c7e1=[];if(_0x230039[_0xcb03('0x2')]>0x0){var _0x3aebb7=_[_0xcb03('0x3')](_0x230039,['id']);for(var _0x21232e=0x0;_0x21232e<_0x3aebb7[_0xcb03('0x2')];_0x21232e++){var _0x2de730=_0x3aebb7[_0x21232e];if(_0x2de730[_0xcb03('0x4')]===_0xcb03('0x5')){_0x43c7e1[_0xcb03('0x6')](_0x2de730[_0xcb03('0x7')]);}else if(_0x2de730['type']===_0xcb03('0x8')&&_0x2de730[_0xcb03('0x9')]){_0x4bb49c[_0x2de730[_0xcb03('0x9')]]&&_0x43c7e1[_0xcb03('0x6')](_0x4bb49c[_0x2de730['variableName']]['toString']());}else if(_0x2de730[_0xcb03('0x4')]===_0xcb03('0xa')&&_0x2de730['Variable']&&_0x2de730[_0xcb03('0xb')][_0xcb03('0xc')]){_0x4bb49c[_0x2de730[_0xcb03('0xb')][_0xcb03('0xc')][_0xcb03('0xd')]()]&&_0x43c7e1['push'](_0x4bb49c[_0x2de730[_0xcb03('0xb')][_0xcb03('0xc')][_0xcb03('0xd')]()]['toString']());}else if(_0x2de730[_0xcb03('0x4')]===_0xcb03('0xe')){if(_0x2de730['keyType']===_0xcb03('0x5')&&_0x2de730['key']){_0x43c7e1[_0xcb03('0x6')](util['format'](_0xcb03('0xf'),_0x2de730['key'],_0x2de730[_0xcb03('0x10')]));}else if(_0x2de730[_0xcb03('0x11')]===_0xcb03('0x8')&&_0x2de730[_0xcb03('0x9')]&&_0x2de730[_0xcb03('0x12')]){_0x4bb49c[_0x2de730[_0xcb03('0x9')]]&&_0x43c7e1[_0xcb03('0x6')](util[_0xcb03('0x13')](_0xcb03('0xf'),_0x2de730['key'],_0x4bb49c[_0x2de730[_0xcb03('0x9')]]));}else if(_0x2de730['keyType']==='customVariable'&&_0x2de730[_0xcb03('0xb')]&&_0x2de730[_0xcb03('0xb')][_0xcb03('0xc')]&&_0x2de730[_0xcb03('0x12')]){_0x4bb49c[_0x2de730['Variable'][_0xcb03('0xc')][_0xcb03('0xd')]()]&&_0x43c7e1['push'](util['format'](_0xcb03('0xf'),_0x2de730[_0xcb03('0x12')],_0x4bb49c[_0x2de730['Variable'][_0xcb03('0xc')][_0xcb03('0xd')]()]));}}}}return _0x43c7e1[_0xcb03('0x14')](_0x8d568f);};exports['stripTrailingSlash']=function(_0xa9fadf){var _0x1300bd=_0xa9fadf['slice'](-0x1);if(_0x1300bd==='/'){_0xa9fadf=_0xa9fadf['substring'](0x0,_0xa9fadf[_0xcb03('0x15')](_0x1300bd));}return _0xa9fadf;};exports[_0xcb03('0x16')]=function(_0x39cddc){if(!_[_0xcb03('0x17')](_0x39cddc)&&_0x39cddc!==''){var _0x17cb48=/^(([^<>()\[\]\\.,;:\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 _0x17cb48[_0xcb03('0x18')](String(_0x39cddc)[_0xcb03('0xd')]());}else{return![];}};
\ No newline at end of file
+var _0x876c=['variableName','push','toString','customVariable','Variable','name','toLowerCase','keyValue','keyType','key','%s:\x20%s','keyContent','format','slice','lastIndexOf','validateEmail','isNil','test','util','getString','sortBy','type','string','variable'];(function(_0x20c6b1,_0xf79785){var _0x59682d=function(_0x3d0266){while(--_0x3d0266){_0x20c6b1['push'](_0x20c6b1['shift']());}};_0x59682d(++_0xf79785);}(_0x876c,0xba));var _0xc876=function(_0xa9c44c,_0x3a105c){_0xa9c44c=_0xa9c44c-0x0;var _0x2bc959=_0x876c[_0xa9c44c];return _0x2bc959;};'use strict';var _=require('lodash');var util=require(_0xc876('0x0'));exports[_0xc876('0x1')]=function(_0xf40fb7,_0xd10b84,_0x238d5c){var _0x20f08d=[];if(_0xf40fb7['length']>0x0){var _0x2ed538=_[_0xc876('0x2')](_0xf40fb7,['id']);for(var _0x5960af=0x0;_0x5960af<_0x2ed538['length'];_0x5960af++){var _0x39f96f=_0x2ed538[_0x5960af];if(_0x39f96f[_0xc876('0x3')]===_0xc876('0x4')){_0x20f08d['push'](_0x39f96f['content']);}else if(_0x39f96f[_0xc876('0x3')]===_0xc876('0x5')&&_0x39f96f[_0xc876('0x6')]){_0xd10b84[_0x39f96f[_0xc876('0x6')]]&&_0x20f08d[_0xc876('0x7')](_0xd10b84[_0x39f96f[_0xc876('0x6')]][_0xc876('0x8')]());}else if(_0x39f96f[_0xc876('0x3')]===_0xc876('0x9')&&_0x39f96f[_0xc876('0xa')]&&_0x39f96f[_0xc876('0xa')][_0xc876('0xb')]){_0xd10b84[_0x39f96f[_0xc876('0xa')][_0xc876('0xb')]['toLowerCase']()]&&_0x20f08d[_0xc876('0x7')](_0xd10b84[_0x39f96f[_0xc876('0xa')][_0xc876('0xb')][_0xc876('0xc')]()][_0xc876('0x8')]());}else if(_0x39f96f[_0xc876('0x3')]===_0xc876('0xd')){if(_0x39f96f[_0xc876('0xe')]===_0xc876('0x4')&&_0x39f96f[_0xc876('0xf')]){_0x20f08d['push'](util['format'](_0xc876('0x10'),_0x39f96f[_0xc876('0xf')],_0x39f96f[_0xc876('0x11')]));}else if(_0x39f96f['keyType']===_0xc876('0x5')&&_0x39f96f[_0xc876('0x6')]&&_0x39f96f[_0xc876('0xf')]){_0xd10b84[_0x39f96f[_0xc876('0x6')]]&&_0x20f08d[_0xc876('0x7')](util[_0xc876('0x12')](_0xc876('0x10'),_0x39f96f['key'],_0xd10b84[_0x39f96f[_0xc876('0x6')]]));}else if(_0x39f96f[_0xc876('0xe')]==='customVariable'&&_0x39f96f['Variable']&&_0x39f96f[_0xc876('0xa')][_0xc876('0xb')]&&_0x39f96f[_0xc876('0xf')]){_0xd10b84[_0x39f96f['Variable'][_0xc876('0xb')][_0xc876('0xc')]()]&&_0x20f08d[_0xc876('0x7')](util[_0xc876('0x12')](_0xc876('0x10'),_0x39f96f[_0xc876('0xf')],_0xd10b84[_0x39f96f['Variable'][_0xc876('0xb')]['toLowerCase']()]));}}}}return _0x20f08d['join'](_0x238d5c);};exports['stripTrailingSlash']=function(_0x3c0226){var _0x1efed3=_0x3c0226[_0xc876('0x13')](-0x1);if(_0x1efed3==='/'){_0x3c0226=_0x3c0226['substring'](0x0,_0x3c0226[_0xc876('0x14')](_0x1efed3));}return _0x3c0226;};exports[_0xc876('0x15')]=function(_0x56e552){if(!_[_0xc876('0x16')](_0x56e552)&&_0x56e552!==''){var _0x16a9d3=/^(([^<>()\[\]\\.,;:\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 _0x16a9d3[_0xc876('0x17')](String(_0x56e552)[_0xc876('0xc')]());}else{return![];}};
\ No newline at end of file
index 2a0722a..95c8661 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['result','Agent\x20found!','email1','first_name','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','admin','getUser','username','Searching\x20end\x20user\x20with\x20phone','remoteUri','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','phone','catch','accessKey','getchallenge','token','Account\x20%d\x20is\x20not\x20valid','getConnection','queue','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Ticket\x20created!','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','split','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','user:%s','unmanaged','lastevent','toUpperCase','lodash','request-promise','bluebird','util','ioredis','./util','../../../../config/environment','../../../../config/logger','vTiger','redis','defaults','localhost','socket.io-emitter','emit','length','forEach','includes','string','idField','content','toString','type','variable','variableName','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','Open','Subjects','getString','Descriptions','POST','format','%s/webservice.php','create','stringify','then','success','resolve','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','statusCode','error','[vTiger],\x20%s,\x20%s,\x20%s','validateEmail','Getting\x20agent\x20with\x20email','GET','query','sessionName','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;'];(function(_0x1faf67,_0x7ad662){var _0x387342=function(_0x25dd4a){while(--_0x25dd4a){_0x1faf67['push'](_0x1faf67['shift']());}};_0x387342(++_0x7ad662);}(_0xe706,0xa3));var _0x6e70=function(_0x5b3447,_0x52bef4){_0x5b3447=_0x5b3447-0x0;var _0x2c10bf=_0xe706[_0x5b3447];return _0x2c10bf;};'use strict';var _=require(_0x6e70('0x0'));var rp=require(_0x6e70('0x1'));var BPromise=require(_0x6e70('0x2'));var md5=require('md5');var util=require(_0x6e70('0x3'));var Redis=require(_0x6e70('0x4'));var intUtil=require(_0x6e70('0x5'));var config=require(_0x6e70('0x6'));var logger=require(_0x6e70('0x7'))(_0x6e70('0x8'));config[_0x6e70('0x9')]=_[_0x6e70('0xa')](config[_0x6e70('0x9')],{'host':_0x6e70('0xb'),'port':0x18eb});var io=require(_0x6e70('0xc'))(new Redis(config[_0x6e70('0x9')]));function emit(_0x45a2d4,_0x188ed3,_0x3c4843){io['to'](_0x45a2d4)[_0x6e70('0xd')](_0x188ed3,_0x3c4843);}function getCustomFields(_0x954545,_0x25e61c){var _0x100eb7={};if(_0x954545[_0x6e70('0xe')]>0x0){_[_0x6e70('0xf')](_0x954545,function(_0x3f474a){if(_[_0x6e70('0x10')]([_0x6e70('0x11'),'picklist'],_0x3f474a['type'])&&_0x3f474a[_0x6e70('0x12')]){_0x100eb7[_0x3f474a[_0x6e70('0x12')]]=_0x3f474a[_0x6e70('0x13')][_0x6e70('0x14')]();}else if(_0x3f474a[_0x6e70('0x15')]===_0x6e70('0x16')&&_0x3f474a[_0x6e70('0x17')]&&_0x3f474a[_0x6e70('0x12')]&&_0x25e61c[_0x3f474a['variableName']]){_0x100eb7[_0x3f474a['idField']]=_0x25e61c[_0x3f474a['variableName']][_0x6e70('0x14')]();}else if(_0x3f474a['type']==='customVariable'&&_0x3f474a[_0x6e70('0x18')]&&_0x3f474a[_0x6e70('0x18')]['name']&&_0x3f474a[_0x6e70('0x12')]&&_0x25e61c[_0x3f474a['Variable'][_0x6e70('0x19')][_0x6e70('0x1a')]()]){_0x100eb7[_0x3f474a['idField']]=_0x25e61c[_0x3f474a['Variable'][_0x6e70('0x19')]['toLowerCase']()][_0x6e70('0x14')]();}});}return _0x100eb7;}function createTicket(_0x173afe,_0x53acdc,_0x497d61,_0xc238ba,_0x208e21,_0x2368eb,_0x3a9978){logger[_0x6e70('0x1b')](_0x6e70('0x1c'));var _0x1b2453=_[_0x6e70('0x1d')]({'parent_id':'','assigned_user_id':_0x53acdc['id'],'ticketpriorities':_0x6e70('0x1e'),'ticketstatus':_0x6e70('0x1f'),'ticket_title':intUtil['getString'](_0xc238ba[_0x6e70('0x20')],_0x208e21,'\x20'),'description':intUtil[_0x6e70('0x21')](_0xc238ba[_0x6e70('0x22')],_0x208e21,'\x0a'),'contact_id':_0x497d61['id']},getCustomFields(_0x2368eb,_0x208e21));var _0x502b2d={'method':_0x6e70('0x23'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x173afe['remoteUri']),'form':{'operation':_0x6e70('0x26'),'username':_0x173afe['username'],'sessionName':_0x3a9978['sessionName'],'elementType':'HelpDesk','element':JSON[_0x6e70('0x27')](_0x1b2453)},'json':!![]};return request(_0x502b2d)[_0x6e70('0x28')](function(_0x51d292){if(_0x51d292[_0x6e70('0x29')]){return BPromise[_0x6e70('0x2a')]({'id':_0x51d292['result']['id']});}else{throw new Error(util[_0x6e70('0x24')](_0x6e70('0x2b'),JSON[_0x6e70('0x27')](_0x51d292['error'])));}})['catch'](function(_0x2c4d37){var _0x3af17f=_0x2c4d37[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),'createTicket',_0x3af17f,JSON[_0x6e70('0x27')](_0x2c4d37));});}function getUser(_0x406f29,_0xecf336,_0x2864a0){if(intUtil[_0x6e70('0x2f')](_0xecf336)){logger[_0x6e70('0x1b')](_0x6e70('0x30'),_0xecf336);return request({'method':_0x6e70('0x31'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x406f29['remoteUri']),'qs':{'operation':_0x6e70('0x32'),'username':_0x406f29['username'],'sessionName':_0x2864a0[_0x6e70('0x33')],'query':util['format'](_0x6e70('0x34'),_0xecf336)},'json':!![]})[_0x6e70('0x28')](function(_0x30fa0b){if(_0x30fa0b['success']&&_0x30fa0b[_0x6e70('0x35')][_0x6e70('0xe')]){logger['info'](_0x6e70('0x36'));return BPromise[_0x6e70('0x2a')]({'id':_0x30fa0b['result'][0x0]['id'],'email':_0x30fa0b[_0x6e70('0x35')][0x0][_0x6e70('0x37')],'name':_0x30fa0b[_0x6e70('0x35')][0x0][_0x6e70('0x38')]+'\x20'+_0x30fa0b[_0x6e70('0x35')][_0x6e70('0x39')]});}else{logger[_0x6e70('0x1b')](_0x6e70('0x3a'));return BPromise[_0x6e70('0x2a')]({'id':_0x2864a0[_0x6e70('0x3b')],'email':_0x406f29['username'],'name':_0x6e70('0x3c')});}})['catch'](function(_0x23cd1a){var _0x3222a2=_0x23cd1a[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),_0x6e70('0x3d'),_0x3222a2,JSON[_0x6e70('0x27')](_0x23cd1a));});}else{logger[_0x6e70('0x1b')](_0x6e70('0x3a'));return BPromise[_0x6e70('0x2a')]({'id':_0x2864a0[_0x6e70('0x3b')],'email':_0x406f29[_0x6e70('0x3e')],'name':_0x6e70('0x3c')})['catch'](function(_0x5446a2){var _0x5424eb=_0x5446a2[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),_0x6e70('0x3d'),_0x5424eb,JSON[_0x6e70('0x27')](_0x5446a2));});}}function getEndUser(_0x3bdd87,_0x572a71,_0x3b508c,_0x9e7ad2){logger[_0x6e70('0x1b')](_0x6e70('0x3f'),_0x3b508c);return request({'method':_0x6e70('0x31'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x3bdd87[_0x6e70('0x40')]),'qs':{'operation':'query','username':_0x3bdd87[_0x6e70('0x3e')],'sessionName':_0x9e7ad2[_0x6e70('0x33')],'query':util[_0x6e70('0x24')](_0x6e70('0x41'),_0x3b508c,_0x3b508c,_0x3b508c,_0x3b508c,_0x3b508c)},'json':!![]})[_0x6e70('0x28')](function(_0x1de947){if(_0x1de947[_0x6e70('0x29')]&&_0x1de947['result']['length']){logger['info'](_0x6e70('0x42'));return BPromise[_0x6e70('0x2a')]({'id':_0x1de947[_0x6e70('0x35')][0x0]['id'],'name':_0x1de947[_0x6e70('0x35')][0x0][_0x6e70('0x43')]+'\x20'+_0x1de947['result'][0x0][_0x6e70('0x44')],'phone':_0x3b508c});}else{logger[_0x6e70('0x1b')](_0x6e70('0x45'));return request({'method':'POST','uri':util['format']('%s/webservice.php',_0x3bdd87[_0x6e70('0x40')]),'form':{'operation':'create','sessionName':_0x9e7ad2[_0x6e70('0x33')],'elementType':_0x6e70('0x46'),'element':JSON[_0x6e70('0x27')]({'lastname':_0x572a71,'phone':_0x3b508c,'assigned_user_id':'\x20'})},'json':!![]})[_0x6e70('0x28')](function(_0x59c87d){logger[_0x6e70('0x1b')]('Enduser\x20created.');return BPromise[_0x6e70('0x2a')]({'id':_0x59c87d[_0x6e70('0x35')]['id'],'name':_0x59c87d[_0x6e70('0x35')][_0x6e70('0x44')],'phone':_0x59c87d['result'][_0x6e70('0x47')]});})[_0x6e70('0x48')](function(_0x3d39c3){var _0xac87d6=_0x3d39c3[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),'getEndUser',_0xac87d6,JSON[_0x6e70('0x27')](_0x3d39c3));});}});}function getConnection(_0x3884a4){var _0x10de2a=_0x3884a4[_0x6e70('0x3e')];var _0x3f86cf=_0x3884a4[_0x6e70('0x49')];return request({'method':_0x6e70('0x31'),'uri':util['format'](_0x6e70('0x25'),_0x3884a4['remoteUri']),'qs':{'operation':_0x6e70('0x4a'),'username':_0x10de2a},'json':!![]})[_0x6e70('0x28')](function(_0x4b351e){if(_0x4b351e['success']){return request({'method':_0x6e70('0x23'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x3884a4['remoteUri']),'form':{'operation':'login','username':_0x10de2a,'accessKey':md5(_0x4b351e[_0x6e70('0x35')][_0x6e70('0x4b')]+_0x3f86cf)},'json':!![]});}})[_0x6e70('0x28')](function(_0x79653){if(_0x79653[_0x6e70('0x29')]){return BPromise[_0x6e70('0x2a')](_0x79653['result']);}else{throw new Error(util[_0x6e70('0x24')](_0x6e70('0x4c'),_0x3884a4['id']));}})[_0x6e70('0x48')](function(_0x6ed023){var _0x2c3a7d=_0x6ed023['statusCode']||0x1f4;logger['error'](_0x6e70('0x2e'),_0x6e70('0x4d'),_0x2c3a7d,JSON[_0x6e70('0x27')](_0x6ed023));});}function request(_0x15f994){logger[_0x6e70('0x1b')]('[HTTP]',JSON[_0x6e70('0x27')](_0x15f994));return rp(_0x15f994);}exports[_0x6e70('0x4e')]=function(_0x1fa320,_0x23ebfb,_0x3aba34,_0x4a111a,_0x1142cd,_0x1dd242){var _0x2c20d3,_0x3fb0d3,_0x8ef4f7,_0x3fd03d;_0x1dd242['remoteUri']=intUtil[_0x6e70('0x4f')](_0x1dd242[_0x6e70('0x40')]);if(_0x1142cd&&_0x1142cd['monitor_format']){logger[_0x6e70('0x1b')](_0x6e70('0x50'),'Recording\x20is\x20enabled!');_0x23ebfb[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x1dd242[_0x6e70('0x53')],_0x23ebfb[_0x6e70('0x54')],md5(_0x23ebfb['uniqueid']));}else{_0x23ebfb[_0x6e70('0x51')]='';}return getConnection(_0x1dd242)[_0x6e70('0x28')](function(_0x10d655){_0x3fd03d=_0x10d655;return getUser(_0x1dd242,_0x4a111a[_0x6e70('0x55')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x1fe13a){_0x2c20d3=_0x1fe13a;logger[_0x6e70('0x1b')](_0x6e70('0x56'),_0x2c20d3['id']);return getEndUser(_0x1dd242,_0x23ebfb[_0x6e70('0x57')],_0x23ebfb[_0x6e70('0x58')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x1b12a1){_0x3fb0d3=_0x1b12a1;logger[_0x6e70('0x1b')](_0x6e70('0x59'),_0x3fb0d3['id']);return createTicket(_0x1dd242,_0x2c20d3,_0x3fb0d3,_0x3aba34,_0x23ebfb,_0x3aba34[_0x6e70('0x5a')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x324fa6){_0x8ef4f7=_0x324fa6;logger[_0x6e70('0x1b')](_0x6e70('0x5b'));logger[_0x6e70('0x1b')]('The\x20Ticket\x20ID\x20is:',_0x8ef4f7['id']);var _0x28898a=util[_0x6e70('0x24')](_0x6e70('0x5c'),_0x1dd242[_0x6e70('0x40')],_[_0x6e70('0x5d')](_0x8ef4f7['id'],'x')[0x1]);logger[_0x6e70('0x1b')]('[QUEUE]',_0x6e70('0x5e'));emit(util[_0x6e70('0x24')]('user:%s',_0x4a111a[_0x6e70('0x19')]),_0x6e70('0x5f'),{'uri':_0x28898a});})[_0x6e70('0x48')](function(_0x590f7f){logger['error'](_0x6e70('0x50'),JSON[_0x6e70('0x27')](_0x590f7f));});};exports[_0x6e70('0x60')]=function(_0x41a861,_0x10d299,_0x739946,_0x30cd88,_0x57bfe5,_0x4d47e1,_0x2c8dc6){var _0x1e23c5,_0x2bf9ec,_0x2ad395,_0x5b1e6f;_0x4d47e1['remoteUri']=intUtil[_0x6e70('0x4f')](_0x4d47e1[_0x6e70('0x40')]);_0x4d47e1['serverUrl']=intUtil['stripTrailingSlash'](_0x4d47e1[_0x6e70('0x53')]);if(_0x2c8dc6&&_0x2c8dc6['recordingFormat']&&_0x2c8dc6[_0x6e70('0x61')]!==_0x6e70('0x62')){logger[_0x6e70('0x1b')](_0x6e70('0x63'),_0x6e70('0x64'));_0x10d299[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x4d47e1['serverUrl'],_0x10d299[_0x6e70('0x54')],md5(_0x10d299[_0x6e70('0x54')]));}return getConnection(_0x4d47e1)[_0x6e70('0x28')](function(_0x346c79){_0x5b1e6f=_0x346c79;return getUser(_0x4d47e1,_0x30cd88[_0x6e70('0x55')],_0x5b1e6f);})['then'](function(_0x5f5b02){_0x1e23c5=_0x5f5b02;logger['info'](_0x6e70('0x56'),_0x1e23c5['id']);return getEndUser(_0x4d47e1,_0x10d299[_0x6e70('0x65')],_0x10d299[_0x6e70('0x66')],_0x5b1e6f);})['then'](function(_0x58cf1c){_0x2bf9ec=_0x58cf1c;logger[_0x6e70('0x1b')](_0x6e70('0x59'),_0x2bf9ec['id']);return createTicket(_0x4d47e1,_0x1e23c5,_0x2bf9ec,_0x739946,_0x10d299,_0x739946[_0x6e70('0x5a')],_0x5b1e6f);})[_0x6e70('0x28')](function(_0x2285f1){_0x2ad395=_0x2285f1;logger[_0x6e70('0x1b')]('Ticket\x20created!');logger[_0x6e70('0x1b')](_0x6e70('0x67'),_0x2ad395['id']);var _0x30d11b=util[_0x6e70('0x24')]('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0x4d47e1[_0x6e70('0x40')],_['split'](_0x2ad395['id'],'x')[0x1]);logger['info'](_0x6e70('0x63'),_0x6e70('0x5e'));emit(util[_0x6e70('0x24')](_0x6e70('0x68'),_0x30cd88[_0x6e70('0x19')]),_0x6e70('0x5f'),{'uri':_0x30d11b});})['catch'](function(_0x370eeb){logger[_0x6e70('0x2d')](_0x6e70('0x63'),JSON[_0x6e70('0x27')](_0x370eeb));});};exports[_0x6e70('0x69')]=function(_0x13c092,_0x363722,_0xd9b4a9,_0x2f1362,_0x29621a,_0x575938){var _0x44c877,_0x303c5a,_0x577c3b,_0x5d398a;_0x575938['remoteUri']=intUtil[_0x6e70('0x4f')](_0x575938[_0x6e70('0x40')]);_0x575938[_0x6e70('0x53')]=intUtil[_0x6e70('0x4f')](_0x575938[_0x6e70('0x53')]);if(_0x29621a&&_0x29621a['monitor_format']){logger['info']('['+_0x363722[_0x6e70('0x6a')][_0x6e70('0x6b')]()+']','Recording\x20is\x20enabled!');_0x363722[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x575938[_0x6e70('0x53')],_0x363722[_0x6e70('0x54')],md5(_0x363722[_0x6e70('0x54')]));}else{_0x363722[_0x6e70('0x51')]='';}return getConnection(_0x575938)[_0x6e70('0x28')](function(_0x3650e9){_0x5d398a=_0x3650e9;return getUser(_0x575938,'',_0x5d398a);})[_0x6e70('0x28')](function(_0x347cc4){_0x44c877=_0x347cc4;logger[_0x6e70('0x1b')](_0x6e70('0x56'),_0x44c877['id']);return getEndUser(_0x575938,_0x363722[_0x6e70('0x57')],_0x363722['calleridnum'],_0x5d398a);})['then'](function(_0x39ed95){_0x303c5a=_0x39ed95;logger['info'](_0x6e70('0x59'),_0x303c5a['id']);return createTicket(_0x575938,_0x44c877,_0x303c5a,_0xd9b4a9,_0x363722,_0xd9b4a9['Fields'],_0x5d398a);})['then'](function(_0x402f6f){_0x577c3b=_0x402f6f;logger['info']('Ticket\x20created!');logger[_0x6e70('0x1b')](_0x6e70('0x67'),_0x577c3b['id']);})[_0x6e70('0x48')](function(_0x4e9fda){logger['error']('['+_0x363722['lastevent'][_0x6e70('0x6b')]()+']',JSON['stringify'](_0x4e9fda));});};
\ No newline at end of file
+var _0xe706=['result','Agent\x20found!','email1','first_name','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','admin','getUser','username','Searching\x20end\x20user\x20with\x20phone','remoteUri','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','phone','catch','accessKey','getchallenge','token','Account\x20%d\x20is\x20not\x20valid','getConnection','queue','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Ticket\x20created!','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','split','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','user:%s','unmanaged','lastevent','toUpperCase','lodash','request-promise','bluebird','util','ioredis','./util','../../../../config/environment','../../../../config/logger','vTiger','redis','defaults','localhost','socket.io-emitter','emit','length','forEach','includes','string','idField','content','toString','type','variable','variableName','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','Open','Subjects','getString','Descriptions','POST','format','%s/webservice.php','create','stringify','then','success','resolve','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','statusCode','error','[vTiger],\x20%s,\x20%s,\x20%s','validateEmail','Getting\x20agent\x20with\x20email','GET','query','sessionName','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;'];(function(_0x599346,_0x412daf){var _0x39f8c4=function(_0x3b445d){while(--_0x3b445d){_0x599346['push'](_0x599346['shift']());}};_0x39f8c4(++_0x412daf);}(_0xe706,0xa3));var _0x6e70=function(_0x12ff2c,_0x4cab86){_0x12ff2c=_0x12ff2c-0x0;var _0x2467a3=_0xe706[_0x12ff2c];return _0x2467a3;};'use strict';var _=require(_0x6e70('0x0'));var rp=require(_0x6e70('0x1'));var BPromise=require(_0x6e70('0x2'));var md5=require('md5');var util=require(_0x6e70('0x3'));var Redis=require(_0x6e70('0x4'));var intUtil=require(_0x6e70('0x5'));var config=require(_0x6e70('0x6'));var logger=require(_0x6e70('0x7'))(_0x6e70('0x8'));config[_0x6e70('0x9')]=_[_0x6e70('0xa')](config[_0x6e70('0x9')],{'host':_0x6e70('0xb'),'port':0x18eb});var io=require(_0x6e70('0xc'))(new Redis(config[_0x6e70('0x9')]));function emit(_0x45a2d4,_0x188ed3,_0x3c4843){io['to'](_0x45a2d4)[_0x6e70('0xd')](_0x188ed3,_0x3c4843);}function getCustomFields(_0x954545,_0x25e61c){var _0x100eb7={};if(_0x954545[_0x6e70('0xe')]>0x0){_[_0x6e70('0xf')](_0x954545,function(_0x3f474a){if(_[_0x6e70('0x10')]([_0x6e70('0x11'),'picklist'],_0x3f474a['type'])&&_0x3f474a[_0x6e70('0x12')]){_0x100eb7[_0x3f474a[_0x6e70('0x12')]]=_0x3f474a[_0x6e70('0x13')][_0x6e70('0x14')]();}else if(_0x3f474a[_0x6e70('0x15')]===_0x6e70('0x16')&&_0x3f474a[_0x6e70('0x17')]&&_0x3f474a[_0x6e70('0x12')]&&_0x25e61c[_0x3f474a['variableName']]){_0x100eb7[_0x3f474a['idField']]=_0x25e61c[_0x3f474a['variableName']][_0x6e70('0x14')]();}else if(_0x3f474a['type']==='customVariable'&&_0x3f474a[_0x6e70('0x18')]&&_0x3f474a[_0x6e70('0x18')]['name']&&_0x3f474a[_0x6e70('0x12')]&&_0x25e61c[_0x3f474a['Variable'][_0x6e70('0x19')][_0x6e70('0x1a')]()]){_0x100eb7[_0x3f474a['idField']]=_0x25e61c[_0x3f474a['Variable'][_0x6e70('0x19')]['toLowerCase']()][_0x6e70('0x14')]();}});}return _0x100eb7;}function createTicket(_0x173afe,_0x53acdc,_0x497d61,_0xc238ba,_0x208e21,_0x2368eb,_0x3a9978){logger[_0x6e70('0x1b')](_0x6e70('0x1c'));var _0x1b2453=_[_0x6e70('0x1d')]({'parent_id':'','assigned_user_id':_0x53acdc['id'],'ticketpriorities':_0x6e70('0x1e'),'ticketstatus':_0x6e70('0x1f'),'ticket_title':intUtil['getString'](_0xc238ba[_0x6e70('0x20')],_0x208e21,'\x20'),'description':intUtil[_0x6e70('0x21')](_0xc238ba[_0x6e70('0x22')],_0x208e21,'\x0a'),'contact_id':_0x497d61['id']},getCustomFields(_0x2368eb,_0x208e21));var _0x502b2d={'method':_0x6e70('0x23'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x173afe['remoteUri']),'form':{'operation':_0x6e70('0x26'),'username':_0x173afe['username'],'sessionName':_0x3a9978['sessionName'],'elementType':'HelpDesk','element':JSON[_0x6e70('0x27')](_0x1b2453)},'json':!![]};return request(_0x502b2d)[_0x6e70('0x28')](function(_0x51d292){if(_0x51d292[_0x6e70('0x29')]){return BPromise[_0x6e70('0x2a')]({'id':_0x51d292['result']['id']});}else{throw new Error(util[_0x6e70('0x24')](_0x6e70('0x2b'),JSON[_0x6e70('0x27')](_0x51d292['error'])));}})['catch'](function(_0x2c4d37){var _0x3af17f=_0x2c4d37[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),'createTicket',_0x3af17f,JSON[_0x6e70('0x27')](_0x2c4d37));});}function getUser(_0x406f29,_0xecf336,_0x2864a0){if(intUtil[_0x6e70('0x2f')](_0xecf336)){logger[_0x6e70('0x1b')](_0x6e70('0x30'),_0xecf336);return request({'method':_0x6e70('0x31'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x406f29['remoteUri']),'qs':{'operation':_0x6e70('0x32'),'username':_0x406f29['username'],'sessionName':_0x2864a0[_0x6e70('0x33')],'query':util['format'](_0x6e70('0x34'),_0xecf336)},'json':!![]})[_0x6e70('0x28')](function(_0x30fa0b){if(_0x30fa0b['success']&&_0x30fa0b[_0x6e70('0x35')][_0x6e70('0xe')]){logger['info'](_0x6e70('0x36'));return BPromise[_0x6e70('0x2a')]({'id':_0x30fa0b['result'][0x0]['id'],'email':_0x30fa0b[_0x6e70('0x35')][0x0][_0x6e70('0x37')],'name':_0x30fa0b[_0x6e70('0x35')][0x0][_0x6e70('0x38')]+'\x20'+_0x30fa0b[_0x6e70('0x35')][_0x6e70('0x39')]});}else{logger[_0x6e70('0x1b')](_0x6e70('0x3a'));return BPromise[_0x6e70('0x2a')]({'id':_0x2864a0[_0x6e70('0x3b')],'email':_0x406f29['username'],'name':_0x6e70('0x3c')});}})['catch'](function(_0x23cd1a){var _0x3222a2=_0x23cd1a[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),_0x6e70('0x3d'),_0x3222a2,JSON[_0x6e70('0x27')](_0x23cd1a));});}else{logger[_0x6e70('0x1b')](_0x6e70('0x3a'));return BPromise[_0x6e70('0x2a')]({'id':_0x2864a0[_0x6e70('0x3b')],'email':_0x406f29[_0x6e70('0x3e')],'name':_0x6e70('0x3c')})['catch'](function(_0x5446a2){var _0x5424eb=_0x5446a2[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),_0x6e70('0x3d'),_0x5424eb,JSON[_0x6e70('0x27')](_0x5446a2));});}}function getEndUser(_0x3bdd87,_0x572a71,_0x3b508c,_0x9e7ad2){logger[_0x6e70('0x1b')](_0x6e70('0x3f'),_0x3b508c);return request({'method':_0x6e70('0x31'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x3bdd87[_0x6e70('0x40')]),'qs':{'operation':'query','username':_0x3bdd87[_0x6e70('0x3e')],'sessionName':_0x9e7ad2[_0x6e70('0x33')],'query':util[_0x6e70('0x24')](_0x6e70('0x41'),_0x3b508c,_0x3b508c,_0x3b508c,_0x3b508c,_0x3b508c)},'json':!![]})[_0x6e70('0x28')](function(_0x1de947){if(_0x1de947[_0x6e70('0x29')]&&_0x1de947['result']['length']){logger['info'](_0x6e70('0x42'));return BPromise[_0x6e70('0x2a')]({'id':_0x1de947[_0x6e70('0x35')][0x0]['id'],'name':_0x1de947[_0x6e70('0x35')][0x0][_0x6e70('0x43')]+'\x20'+_0x1de947['result'][0x0][_0x6e70('0x44')],'phone':_0x3b508c});}else{logger[_0x6e70('0x1b')](_0x6e70('0x45'));return request({'method':'POST','uri':util['format']('%s/webservice.php',_0x3bdd87[_0x6e70('0x40')]),'form':{'operation':'create','sessionName':_0x9e7ad2[_0x6e70('0x33')],'elementType':_0x6e70('0x46'),'element':JSON[_0x6e70('0x27')]({'lastname':_0x572a71,'phone':_0x3b508c,'assigned_user_id':'\x20'})},'json':!![]})[_0x6e70('0x28')](function(_0x59c87d){logger[_0x6e70('0x1b')]('Enduser\x20created.');return BPromise[_0x6e70('0x2a')]({'id':_0x59c87d[_0x6e70('0x35')]['id'],'name':_0x59c87d[_0x6e70('0x35')][_0x6e70('0x44')],'phone':_0x59c87d['result'][_0x6e70('0x47')]});})[_0x6e70('0x48')](function(_0x3d39c3){var _0xac87d6=_0x3d39c3[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),'getEndUser',_0xac87d6,JSON[_0x6e70('0x27')](_0x3d39c3));});}});}function getConnection(_0x3884a4){var _0x10de2a=_0x3884a4[_0x6e70('0x3e')];var _0x3f86cf=_0x3884a4[_0x6e70('0x49')];return request({'method':_0x6e70('0x31'),'uri':util['format'](_0x6e70('0x25'),_0x3884a4['remoteUri']),'qs':{'operation':_0x6e70('0x4a'),'username':_0x10de2a},'json':!![]})[_0x6e70('0x28')](function(_0x4b351e){if(_0x4b351e['success']){return request({'method':_0x6e70('0x23'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x3884a4['remoteUri']),'form':{'operation':'login','username':_0x10de2a,'accessKey':md5(_0x4b351e[_0x6e70('0x35')][_0x6e70('0x4b')]+_0x3f86cf)},'json':!![]});}})[_0x6e70('0x28')](function(_0x79653){if(_0x79653[_0x6e70('0x29')]){return BPromise[_0x6e70('0x2a')](_0x79653['result']);}else{throw new Error(util[_0x6e70('0x24')](_0x6e70('0x4c'),_0x3884a4['id']));}})[_0x6e70('0x48')](function(_0x6ed023){var _0x2c3a7d=_0x6ed023['statusCode']||0x1f4;logger['error'](_0x6e70('0x2e'),_0x6e70('0x4d'),_0x2c3a7d,JSON[_0x6e70('0x27')](_0x6ed023));});}function request(_0x15f994){logger[_0x6e70('0x1b')]('[HTTP]',JSON[_0x6e70('0x27')](_0x15f994));return rp(_0x15f994);}exports[_0x6e70('0x4e')]=function(_0x1fa320,_0x23ebfb,_0x3aba34,_0x4a111a,_0x1142cd,_0x1dd242){var _0x2c20d3,_0x3fb0d3,_0x8ef4f7,_0x3fd03d;_0x1dd242['remoteUri']=intUtil[_0x6e70('0x4f')](_0x1dd242[_0x6e70('0x40')]);if(_0x1142cd&&_0x1142cd['monitor_format']){logger[_0x6e70('0x1b')](_0x6e70('0x50'),'Recording\x20is\x20enabled!');_0x23ebfb[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x1dd242[_0x6e70('0x53')],_0x23ebfb[_0x6e70('0x54')],md5(_0x23ebfb['uniqueid']));}else{_0x23ebfb[_0x6e70('0x51')]='';}return getConnection(_0x1dd242)[_0x6e70('0x28')](function(_0x10d655){_0x3fd03d=_0x10d655;return getUser(_0x1dd242,_0x4a111a[_0x6e70('0x55')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x1fe13a){_0x2c20d3=_0x1fe13a;logger[_0x6e70('0x1b')](_0x6e70('0x56'),_0x2c20d3['id']);return getEndUser(_0x1dd242,_0x23ebfb[_0x6e70('0x57')],_0x23ebfb[_0x6e70('0x58')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x1b12a1){_0x3fb0d3=_0x1b12a1;logger[_0x6e70('0x1b')](_0x6e70('0x59'),_0x3fb0d3['id']);return createTicket(_0x1dd242,_0x2c20d3,_0x3fb0d3,_0x3aba34,_0x23ebfb,_0x3aba34[_0x6e70('0x5a')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x324fa6){_0x8ef4f7=_0x324fa6;logger[_0x6e70('0x1b')](_0x6e70('0x5b'));logger[_0x6e70('0x1b')]('The\x20Ticket\x20ID\x20is:',_0x8ef4f7['id']);var _0x28898a=util[_0x6e70('0x24')](_0x6e70('0x5c'),_0x1dd242[_0x6e70('0x40')],_[_0x6e70('0x5d')](_0x8ef4f7['id'],'x')[0x1]);logger[_0x6e70('0x1b')]('[QUEUE]',_0x6e70('0x5e'));emit(util[_0x6e70('0x24')]('user:%s',_0x4a111a[_0x6e70('0x19')]),_0x6e70('0x5f'),{'uri':_0x28898a});})[_0x6e70('0x48')](function(_0x590f7f){logger['error'](_0x6e70('0x50'),JSON[_0x6e70('0x27')](_0x590f7f));});};exports[_0x6e70('0x60')]=function(_0x41a861,_0x10d299,_0x739946,_0x30cd88,_0x57bfe5,_0x4d47e1,_0x2c8dc6){var _0x1e23c5,_0x2bf9ec,_0x2ad395,_0x5b1e6f;_0x4d47e1['remoteUri']=intUtil[_0x6e70('0x4f')](_0x4d47e1[_0x6e70('0x40')]);_0x4d47e1['serverUrl']=intUtil['stripTrailingSlash'](_0x4d47e1[_0x6e70('0x53')]);if(_0x2c8dc6&&_0x2c8dc6['recordingFormat']&&_0x2c8dc6[_0x6e70('0x61')]!==_0x6e70('0x62')){logger[_0x6e70('0x1b')](_0x6e70('0x63'),_0x6e70('0x64'));_0x10d299[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x4d47e1['serverUrl'],_0x10d299[_0x6e70('0x54')],md5(_0x10d299[_0x6e70('0x54')]));}return getConnection(_0x4d47e1)[_0x6e70('0x28')](function(_0x346c79){_0x5b1e6f=_0x346c79;return getUser(_0x4d47e1,_0x30cd88[_0x6e70('0x55')],_0x5b1e6f);})['then'](function(_0x5f5b02){_0x1e23c5=_0x5f5b02;logger['info'](_0x6e70('0x56'),_0x1e23c5['id']);return getEndUser(_0x4d47e1,_0x10d299[_0x6e70('0x65')],_0x10d299[_0x6e70('0x66')],_0x5b1e6f);})['then'](function(_0x58cf1c){_0x2bf9ec=_0x58cf1c;logger[_0x6e70('0x1b')](_0x6e70('0x59'),_0x2bf9ec['id']);return createTicket(_0x4d47e1,_0x1e23c5,_0x2bf9ec,_0x739946,_0x10d299,_0x739946[_0x6e70('0x5a')],_0x5b1e6f);})[_0x6e70('0x28')](function(_0x2285f1){_0x2ad395=_0x2285f1;logger[_0x6e70('0x1b')]('Ticket\x20created!');logger[_0x6e70('0x1b')](_0x6e70('0x67'),_0x2ad395['id']);var _0x30d11b=util[_0x6e70('0x24')]('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0x4d47e1[_0x6e70('0x40')],_['split'](_0x2ad395['id'],'x')[0x1]);logger['info'](_0x6e70('0x63'),_0x6e70('0x5e'));emit(util[_0x6e70('0x24')](_0x6e70('0x68'),_0x30cd88[_0x6e70('0x19')]),_0x6e70('0x5f'),{'uri':_0x30d11b});})['catch'](function(_0x370eeb){logger[_0x6e70('0x2d')](_0x6e70('0x63'),JSON[_0x6e70('0x27')](_0x370eeb));});};exports[_0x6e70('0x69')]=function(_0x13c092,_0x363722,_0xd9b4a9,_0x2f1362,_0x29621a,_0x575938){var _0x44c877,_0x303c5a,_0x577c3b,_0x5d398a;_0x575938['remoteUri']=intUtil[_0x6e70('0x4f')](_0x575938[_0x6e70('0x40')]);_0x575938[_0x6e70('0x53')]=intUtil[_0x6e70('0x4f')](_0x575938[_0x6e70('0x53')]);if(_0x29621a&&_0x29621a['monitor_format']){logger['info']('['+_0x363722[_0x6e70('0x6a')][_0x6e70('0x6b')]()+']','Recording\x20is\x20enabled!');_0x363722[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x575938[_0x6e70('0x53')],_0x363722[_0x6e70('0x54')],md5(_0x363722[_0x6e70('0x54')]));}else{_0x363722[_0x6e70('0x51')]='';}return getConnection(_0x575938)[_0x6e70('0x28')](function(_0x3650e9){_0x5d398a=_0x3650e9;return getUser(_0x575938,'',_0x5d398a);})[_0x6e70('0x28')](function(_0x347cc4){_0x44c877=_0x347cc4;logger[_0x6e70('0x1b')](_0x6e70('0x56'),_0x44c877['id']);return getEndUser(_0x575938,_0x363722[_0x6e70('0x57')],_0x363722['calleridnum'],_0x5d398a);})['then'](function(_0x39ed95){_0x303c5a=_0x39ed95;logger['info'](_0x6e70('0x59'),_0x303c5a['id']);return createTicket(_0x575938,_0x44c877,_0x303c5a,_0xd9b4a9,_0x363722,_0xd9b4a9['Fields'],_0x5d398a);})['then'](function(_0x402f6f){_0x577c3b=_0x402f6f;logger['info']('Ticket\x20created!');logger[_0x6e70('0x1b')](_0x6e70('0x67'),_0x577c3b['id']);})[_0x6e70('0x48')](function(_0x4e9fda){logger['error']('['+_0x363722['lastevent'][_0x6e70('0x6b')]()+']',JSON['stringify'](_0x4e9fda));});};
\ No newline at end of file
index 27c0738..827635b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57b0=['The\x20User\x20ID\x20is:','calleridname','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','replace','Zendesk\x20account\x20type\x20not\x20recognized','catch','error','inspect','outbound','recordingFormat','none','[OUTBOUND]','recordingURL','email','destcalleridname','destcalleridnum','trigger:browser:url','%s/agent/tickets/%s','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','lastevent','toUpperCase','calleridnum','\x20Error\x20running\x20Zendesk\x20integration','request-promise','util','ioredis','./util','../../../../config/environment','../../../../config/logger','zendesk','redis','localhost','socket.io-emitter','emit','application/json','Creating\x20new\x20ticket...','format','POST','Tags','name','getString','Subjects','Descriptions','Fields','then','info','Ticket\x20created!','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','remoteUri','type:user\x20role:agent\x20email:%s','Agent\x20found!','find','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','length','results','filter','end-user','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','user','authType','password','username','token','%s/token:%s','Basic\x20%s','base64','debug','defaults','GET','map','forEach','string','picklist','customField','nameField','toLowerCase','content','toString','includes','type','custom_fields','push','idField','variable','variableName','customVariable','Variable','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','uniqueid','Authorization'];(function(_0x1e8520,_0x535abc){var _0x1f39bf=function(_0x5d1e4d){while(--_0x5d1e4d){_0x1e8520['push'](_0x1e8520['shift']());}};_0x1f39bf(++_0x535abc);}(_0x57b0,0xfd));var _0x057b=function(_0x63a9ba,_0x126def){_0x63a9ba=_0x63a9ba-0x0;var _0x5f2285=_0x57b0[_0x63a9ba];return _0x5f2285;};'use strict';var _=require('lodash');var rp=require(_0x057b('0x0'));var md5=require('md5');var util=require(_0x057b('0x1'));var Redis=require(_0x057b('0x2'));var intUtil=require(_0x057b('0x3'));var config=require(_0x057b('0x4'));var logger=require(_0x057b('0x5'))(_0x057b('0x6'));config[_0x057b('0x7')]=_['defaults'](config[_0x057b('0x7')],{'host':_0x057b('0x8'),'port':0x18eb});var io=require(_0x057b('0x9'))(new Redis(config[_0x057b('0x7')]));function emit(_0xf79d56,_0x3bbfee,_0x338dd6){io['to'](_0xf79d56)[_0x057b('0xa')](_0x3bbfee,_0x338dd6);}var headers={'Content-Type':_0x057b('0xb'),'Accept':'application/json'};function getTicket(_0x11e663,_0x5bc77f,_0x38ff12,_0x2efe15,_0x3d4352){logger['info'](_0x057b('0xc'));return request({'uri':util[_0x057b('0xd')]('%s/tickets.json',_0x11e663['remoteUri']),'method':_0x057b('0xe'),'body':{'ticket':_['merge']({'requester_id':_0x38ff12['id'],'submitter_id':_0x5bc77f?_0x5bc77f['id']:undefined,'assignee_id':_0x5bc77f?_0x5bc77f['id']:undefined,'tags':getTags(_0x2efe15[_0x057b('0xf')],_0x057b('0x10')),'subject':intUtil[_0x057b('0x11')](_0x2efe15[_0x057b('0x12')],_0x3d4352,'\x20'),'description':intUtil[_0x057b('0x11')](_0x2efe15[_0x057b('0x13')],_0x3d4352,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0x2efe15[_0x057b('0x13')],_0x3d4352,'\x0a')}},getCustomFields(_0x2efe15[_0x057b('0x14')],_0x3d4352))}})[_0x057b('0x15')](function(_0x4242bf){logger[_0x057b('0x16')](_0x057b('0x17'));return _0x4242bf['ticket'];});}function getUser(_0x315db5,_0x1f4de7){if(intUtil[_0x057b('0x18')](_0x1f4de7)){logger[_0x057b('0x16')](_0x057b('0x19'),_0x1f4de7);return request({'uri':util[_0x057b('0xd')](_0x057b('0x1a'),_0x315db5[_0x057b('0x1b')]),'qs':{'query':util[_0x057b('0xd')](_0x057b('0x1c'),_0x1f4de7)}})[_0x057b('0x15')](function(_0x2afa2f){if(_0x2afa2f['count']){logger[_0x057b('0x16')](_0x057b('0x1d'));return _[_0x057b('0x1e')](_0x2afa2f['results'],{'email':_0x1f4de7,'role':'agent'});}else{logger[_0x057b('0x16')](_0x057b('0x1f'));return request({'uri':util[_0x057b('0xd')](_0x057b('0x20'),_0x315db5[_0x057b('0x1b')])})[_0x057b('0x15')](function(_0x21656d){logger['info']('Admin\x20account\x20selected.');return _0x21656d['user'];});}});}else{logger[_0x057b('0x16')](_0x057b('0x1f'));return request({'uri':util['format'](_0x057b('0x20'),_0x315db5[_0x057b('0x1b')])})[_0x057b('0x15')](function(_0x5e0ed4){logger[_0x057b('0x16')](_0x057b('0x21'));return _0x5e0ed4['user'];});}}function getEndUser(_0x1a7691,_0x16ad6e,_0x23ceb3){logger['info'](_0x057b('0x22'),_0x23ceb3);return request({'uri':util[_0x057b('0xd')](_0x057b('0x1a'),_0x1a7691[_0x057b('0x1b')]),'qs':{'query':util[_0x057b('0xd')](_0x057b('0x23'),_0x23ceb3)}})[_0x057b('0x15')](function(_0xea46b3){var _0x1c4a3e;if(_0xea46b3['results'][_0x057b('0x24')]){_0xea46b3[_0x057b('0x25')]=_[_0x057b('0x26')](_0xea46b3[_0x057b('0x25')],{'suspended':![],'role':_0x057b('0x27')});if(_0xea46b3[_0x057b('0x25')][_0x057b('0x24')]){_0x1c4a3e=_[_0x057b('0x28')](_0xea46b3[_0x057b('0x25')]);}}if(_0x1c4a3e){logger[_0x057b('0x16')](_0x057b('0x29'));return _0x1c4a3e;}else{logger[_0x057b('0x16')](_0x057b('0x2a'));return request({'uri':util[_0x057b('0xd')](_0x057b('0x2b'),_0x1a7691['remoteUri']),'method':_0x057b('0xe'),'body':{'user':{'role':'end-user','name':util[_0x057b('0xd')](_0x057b('0x2c'),_0x16ad6e||_0x23ceb3),'phone':_0x23ceb3}}})[_0x057b('0x15')](function(_0x432422){logger[_0x057b('0x16')](_0x057b('0x2d'));return _0x432422[_0x057b('0x2e')];});}});}function getAuth(_0x25c01b){var _0x4a24d2;if(_0x25c01b[_0x057b('0x2f')]===_0x057b('0x30')){_0x4a24d2=util[_0x057b('0xd')]('%s:%s',_0x25c01b[_0x057b('0x31')],_0x25c01b[_0x057b('0x30')]);}else if(_0x25c01b[_0x057b('0x2f')]===_0x057b('0x32')){_0x4a24d2=util['format'](_0x057b('0x33'),_0x25c01b[_0x057b('0x31')],_0x25c01b[_0x057b('0x32')]);}return util[_0x057b('0xd')](_0x057b('0x34'),new Buffer(_0x4a24d2)['toString'](_0x057b('0x35')));}function request(_0x2076d7){logger[_0x057b('0x36')]('[HTTP]',JSON['stringify'](_0x2076d7));return rp(_[_0x057b('0x37')](_0x2076d7,{'method':_0x057b('0x38'),'headers':headers,'json':!![]}));}function getTags(_0x5cdbff,_0x478c5f){var _0x252e1f=[];if(_0x5cdbff&&_0x5cdbff[_0x057b('0x24')]>0x0){_0x252e1f=_[_0x057b('0x39')](_0x5cdbff,_0x478c5f);}return _0x252e1f;}function getCustomFields(_0x1fb929,_0x5ded4b){var _0x3e557f=[];var _0x4640ee={'custom_fields':[]};if(_0x1fb929['length']>0x0){_[_0x057b('0x3a')](_0x1fb929,function(_0x1a2da1){if(_['includes']([_0x057b('0x3b'),_0x057b('0x3c')],_0x1a2da1['type'])&&_0x1a2da1['nameField']&&!_0x1a2da1[_0x057b('0x3d')]){_0x4640ee[_0x1a2da1[_0x057b('0x3e')][_0x057b('0x3f')]()]=_0x1a2da1[_0x057b('0x40')][_0x057b('0x41')]();}else if(_[_0x057b('0x42')](['string',_0x057b('0x3c')],_0x1a2da1[_0x057b('0x43')])&&_0x1a2da1['idField']&&_0x1a2da1[_0x057b('0x3d')]){_0x4640ee[_0x057b('0x44')][_0x057b('0x45')]({'id':_0x1a2da1[_0x057b('0x46')],'value':_0x1a2da1['content'][_0x057b('0x41')]()});}else if(_0x1a2da1[_0x057b('0x43')]===_0x057b('0x47')&&_0x1a2da1[_0x057b('0x48')]&&_0x1a2da1[_0x057b('0x46')]&&_0x1a2da1[_0x057b('0x3d')]){_0x5ded4b[_0x1a2da1['variableName']]&&_0x4640ee[_0x057b('0x44')][_0x057b('0x45')]({'id':_0x1a2da1['idField'],'value':_0x5ded4b[_0x1a2da1[_0x057b('0x48')]][_0x057b('0x41')]()});}else if(_0x1a2da1['type']===_0x057b('0x49')&&_0x1a2da1[_0x057b('0x4a')]&&_0x1a2da1['Variable']['name']&&_0x1a2da1[_0x057b('0x46')]&&_0x1a2da1[_0x057b('0x3d')]){_0x5ded4b[_0x1a2da1[_0x057b('0x4a')][_0x057b('0x10')][_0x057b('0x3f')]()]&&_0x4640ee[_0x057b('0x44')][_0x057b('0x45')]({'id':_0x1a2da1[_0x057b('0x46')],'value':_0x5ded4b[_0x1a2da1[_0x057b('0x4a')][_0x057b('0x10')][_0x057b('0x3f')]()][_0x057b('0x41')]()});}});}return _0x4640ee;}exports[_0x057b('0x4b')]=function(_0x3236e5,_0x69801,_0x4b7cc2,_0x2aac75,_0x382922,_0x574f2c){var _0x47db27,_0x243597;_0x574f2c['remoteUri']=intUtil['stripTrailingSlash'](_0x574f2c[_0x057b('0x1b')]);_0x574f2c[_0x057b('0x4c')]=intUtil[_0x057b('0x4d')](_0x574f2c[_0x057b('0x4c')]);if(_0x382922&&_0x382922[_0x057b('0x4e')]){logger[_0x057b('0x16')](_0x057b('0x4f'),_0x057b('0x50'));_0x69801['recordingURL']=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x574f2c[_0x057b('0x4c')],_0x69801[_0x057b('0x51')],md5(_0x69801['uniqueid']));}else{_0x69801['recordingURL']='';}headers[_0x057b('0x52')]=getAuth(_0x574f2c);return getUser(_0x574f2c,_0x2aac75['email'])[_0x057b('0x15')](function(_0xcada77){_0x47db27=_0xcada77;logger[_0x057b('0x16')](_0x057b('0x53'),_0x47db27['id']);return getEndUser(_0x574f2c,_0x69801[_0x057b('0x54')],_0x69801['calleridnum']);})[_0x057b('0x15')](function(_0x3ebf06){_0x243597=_0x3ebf06;logger[_0x057b('0x16')]('The\x20Enduser\x20ID\x20is:',_0x243597['id']);return getTicket(_0x574f2c,_0x47db27,_0x243597,_0x4b7cc2,_0x69801);})[_0x057b('0x15')](function(_0x2713bb){if(_0x2713bb){logger[_0x057b('0x16')](_0x057b('0x55'),_0x2713bb['id']);switch(_0x574f2c['type']){case _0x057b('0x56'):logger[_0x057b('0x16')](_0x057b('0x4f'),_0x057b('0x57'));return request({'uri':util['format'](_0x057b('0x58'),_0x574f2c[_0x057b('0x1b')],_0x47db27['id'],_0x2713bb['id']),'method':_0x057b('0xe')});case _0x057b('0x59'):logger[_0x057b('0x16')]('[QUEUE]',_0x057b('0x5a'));emit(util[_0x057b('0xd')](_0x057b('0x5b'),_0x2aac75[_0x057b('0x10')]),'trigger:browser:url',{'uri':util[_0x057b('0xd')]('%s/agent/tickets/%s',_0x574f2c[_0x057b('0x1b')][_0x057b('0x5c')]('/api/v2',''),_0x2713bb['id'])});break;default:logger['error']('[QUEUE]',_0x057b('0x5d'));}}})[_0x057b('0x5e')](function(_0x18e933){logger[_0x057b('0x5f')]('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util[_0x057b('0x60')](_0x18e933,{'showHidden':!![],'depth':null}));});};exports[_0x057b('0x61')]=function(_0x276b67,_0x4f2f12,_0x2b70da,_0x7f15bf,_0x30c3e2,_0x5ea794,_0x374c51){var _0x503846,_0x4f1c5e;_0x5ea794[_0x057b('0x1b')]=intUtil[_0x057b('0x4d')](_0x5ea794[_0x057b('0x1b')]);_0x5ea794[_0x057b('0x4c')]=intUtil[_0x057b('0x4d')](_0x5ea794['serverUrl']);if(_0x374c51&&_0x374c51[_0x057b('0x62')]&&_0x374c51[_0x057b('0x62')]!==_0x057b('0x63')){logger[_0x057b('0x16')](_0x057b('0x64'),'Recording\x20is\x20enabled!');_0x4f2f12[_0x057b('0x65')]=util[_0x057b('0xd')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5ea794['serverUrl'],_0x4f2f12['uniqueid'],md5(_0x4f2f12[_0x057b('0x51')]));}headers[_0x057b('0x52')]=getAuth(_0x5ea794);return getUser(_0x5ea794,_0x7f15bf[_0x057b('0x66')])[_0x057b('0x15')](function(_0x377e95){_0x503846=_0x377e95;logger[_0x057b('0x16')](_0x057b('0x53'),_0x503846['id']);return getEndUser(_0x5ea794,_0x4f2f12[_0x057b('0x67')],_0x4f2f12[_0x057b('0x68')]);})[_0x057b('0x15')](function(_0x420f6d){_0x4f1c5e=_0x420f6d;logger[_0x057b('0x16')]('The\x20Enduser\x20ID\x20is:',_0x4f1c5e['id']);return getTicket(_0x5ea794,_0x503846,_0x4f1c5e,_0x2b70da,_0x4f2f12);})[_0x057b('0x15')](function(_0x588755){if(_0x588755){logger['info'](_0x057b('0x55'),_0x588755['id']);switch(_0x5ea794[_0x057b('0x43')]){case _0x057b('0x56'):logger[_0x057b('0x16')](_0x057b('0x64'),_0x057b('0x57'));return request({'uri':util[_0x057b('0xd')](_0x057b('0x58'),_0x5ea794[_0x057b('0x1b')],_0x503846['id'],_0x588755['id']),'method':'POST'});case'newTab':logger[_0x057b('0x16')](_0x057b('0x64'),_0x057b('0x5a'));emit(util[_0x057b('0xd')]('user:%s',_0x7f15bf[_0x057b('0x10')]),_0x057b('0x69'),{'uri':util[_0x057b('0xd')](_0x057b('0x6a'),_0x5ea794['remoteUri'][_0x057b('0x5c')]('/api/v2',''),_0x588755['id'])});break;default:logger[_0x057b('0x5f')](_0x057b('0x64'),_0x057b('0x5d'));}}})[_0x057b('0x5e')](function(_0x1acc65){logger[_0x057b('0x5f')](_0x057b('0x6b'),util['inspect'](_0x1acc65,{'showHidden':!![],'depth':null}));});};exports['unmanaged']=function(_0x2ad639,_0x4057f0,_0x47f660,_0x196583,_0x3667c5,_0x8b44a6){var _0x1f369f,_0x55a683;_0x8b44a6[_0x057b('0x1b')]=intUtil[_0x057b('0x4d')](_0x8b44a6['remoteUri']);_0x8b44a6['serverUrl']=intUtil[_0x057b('0x4d')](_0x8b44a6[_0x057b('0x4c')]);if(_0x3667c5&&_0x3667c5[_0x057b('0x4e')]){logger['info']('['+_0x4057f0[_0x057b('0x6c')][_0x057b('0x6d')]()+']','Recording\x20is\x20enabled!');_0x4057f0['recordingURL']=util[_0x057b('0xd')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x8b44a6['serverUrl'],_0x4057f0[_0x057b('0x51')],md5(_0x4057f0[_0x057b('0x51')]));}else{_0x4057f0[_0x057b('0x65')]='';}headers[_0x057b('0x52')]=getAuth(_0x8b44a6);return getUser(_0x8b44a6)[_0x057b('0x15')](function(_0x5c5fad){_0x1f369f=_0x5c5fad;logger[_0x057b('0x16')](_0x057b('0x53'),_0x1f369f['id']);return getEndUser(_0x8b44a6,_0x4057f0[_0x057b('0x54')],_0x4057f0[_0x057b('0x6e')]);})['then'](function(_0x331b1e){_0x55a683=_0x331b1e;logger[_0x057b('0x16')]('The\x20Enduser\x20ID\x20is:',_0x55a683['id']);return getTicket(_0x8b44a6,_0x1f369f,_0x55a683,_0x47f660,_0x4057f0);})[_0x057b('0x15')](function(_0x368b20){if(_0x368b20){logger['info']('The\x20Ticket\x20ID\x20is:',_0x368b20['id']);}})['catch'](function(_0x3d7439){logger[_0x057b('0x5f')]('['+_0x4057f0[_0x057b('0x6c')][_0x057b('0x6d')]()+']'+_0x057b('0x6f'),util[_0x057b('0x60')](_0x3d7439,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x0cbc=['outbound','recordingFormat','none','uniqueid','Authorization','destcalleridnum','[OUTBOUND]','Displaying\x20ticket\x20to\x20agent...','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','lastevent','toUpperCase','calleridname','\x20Error\x20running\x20Zendesk\x20integration','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','zendesk','redis','defaults','localhost','socket.io-emitter','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','merge','Tags','name','Subjects','getString','Descriptions','Fields','then','Ticket\x20created!','ticket','validateEmail','%s/search.json','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','find','results','agent','%s/users/me.json','Admin\x20account\x20selected.','user','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','type:user\x20role:end-user\x20phone:%s','length','end-user','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','password','%s:%s','authType','token','%s/token:%s','username','Basic\x20%s','toString','base64','debug','[HTTP]','stringify','GET','map','forEach','includes','string','picklist','type','nameField','customField','content','idField','custom_fields','variableName','customVariable','Variable','toLowerCase','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','email','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/agent/tickets/%s','replace','/api/v2','error','catch','inspect'];(function(_0x5e40ee,_0x67c271){var _0x1738b4=function(_0x2346cd){while(--_0x2346cd){_0x5e40ee['push'](_0x5e40ee['shift']());}};_0x1738b4(++_0x67c271);}(_0x0cbc,0x1cd));var _0xc0cb=function(_0x30bd4d,_0x50eb60){_0x30bd4d=_0x30bd4d-0x0;var _0x306915=_0x0cbc[_0x30bd4d];return _0x306915;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require(_0xc0cb('0x0'));var util=require(_0xc0cb('0x1'));var Redis=require(_0xc0cb('0x2'));var intUtil=require(_0xc0cb('0x3'));var config=require(_0xc0cb('0x4'));var logger=require(_0xc0cb('0x5'))(_0xc0cb('0x6'));config[_0xc0cb('0x7')]=_[_0xc0cb('0x8')](config[_0xc0cb('0x7')],{'host':_0xc0cb('0x9'),'port':0x18eb});var io=require(_0xc0cb('0xa'))(new Redis(config[_0xc0cb('0x7')]));function emit(_0x382afc,_0x1fa903,_0x46debc){io['to'](_0x382afc)['emit'](_0x1fa903,_0x46debc);}var headers={'Content-Type':_0xc0cb('0xb'),'Accept':'application/json'};function getTicket(_0x1c0f1b,_0x12f5d5,_0x33adcf,_0xc81337,_0x51ed8d){logger[_0xc0cb('0xc')](_0xc0cb('0xd'));return request({'uri':util[_0xc0cb('0xe')](_0xc0cb('0xf'),_0x1c0f1b[_0xc0cb('0x10')]),'method':_0xc0cb('0x11'),'body':{'ticket':_[_0xc0cb('0x12')]({'requester_id':_0x33adcf['id'],'submitter_id':_0x12f5d5?_0x12f5d5['id']:undefined,'assignee_id':_0x12f5d5?_0x12f5d5['id']:undefined,'tags':getTags(_0xc81337[_0xc0cb('0x13')],_0xc0cb('0x14')),'subject':intUtil['getString'](_0xc81337[_0xc0cb('0x15')],_0x51ed8d,'\x20'),'description':intUtil[_0xc0cb('0x16')](_0xc81337[_0xc0cb('0x17')],_0x51ed8d,'\x0a'),'comment':{'public':![],'body':intUtil[_0xc0cb('0x16')](_0xc81337['Descriptions'],_0x51ed8d,'\x0a')}},getCustomFields(_0xc81337[_0xc0cb('0x18')],_0x51ed8d))}})[_0xc0cb('0x19')](function(_0x5b5514){logger[_0xc0cb('0xc')](_0xc0cb('0x1a'));return _0x5b5514[_0xc0cb('0x1b')];});}function getUser(_0x315d31,_0x4299bb){if(intUtil[_0xc0cb('0x1c')](_0x4299bb)){logger['info']('Getting\x20agent\x20with\x20email',_0x4299bb);return request({'uri':util[_0xc0cb('0xe')](_0xc0cb('0x1d'),_0x315d31[_0xc0cb('0x10')]),'qs':{'query':util[_0xc0cb('0xe')](_0xc0cb('0x1e'),_0x4299bb)}})['then'](function(_0x2a1686){if(_0x2a1686[_0xc0cb('0x1f')]){logger[_0xc0cb('0xc')](_0xc0cb('0x20'));return _[_0xc0cb('0x21')](_0x2a1686[_0xc0cb('0x22')],{'email':_0x4299bb,'role':_0xc0cb('0x23')});}else{logger[_0xc0cb('0xc')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util['format'](_0xc0cb('0x24'),_0x315d31[_0xc0cb('0x10')])})[_0xc0cb('0x19')](function(_0x1c6833){logger[_0xc0cb('0xc')](_0xc0cb('0x25'));return _0x1c6833[_0xc0cb('0x26')];});}});}else{logger[_0xc0cb('0xc')](_0xc0cb('0x27'));return request({'uri':util[_0xc0cb('0xe')](_0xc0cb('0x24'),_0x315d31[_0xc0cb('0x10')])})[_0xc0cb('0x19')](function(_0x3a2b7a){logger['info'](_0xc0cb('0x25'));return _0x3a2b7a[_0xc0cb('0x26')];});}}function getEndUser(_0x2cae48,_0x13beb,_0x5497f3){logger[_0xc0cb('0xc')]('Searching\x20enduser\x20with\x20phone',_0x5497f3);return request({'uri':util[_0xc0cb('0xe')](_0xc0cb('0x1d'),_0x2cae48['remoteUri']),'qs':{'query':util[_0xc0cb('0xe')](_0xc0cb('0x28'),_0x5497f3)}})[_0xc0cb('0x19')](function(_0x3a1b84){var _0x46131b;if(_0x3a1b84[_0xc0cb('0x22')][_0xc0cb('0x29')]){_0x3a1b84[_0xc0cb('0x22')]=_['filter'](_0x3a1b84[_0xc0cb('0x22')],{'suspended':![],'role':_0xc0cb('0x2a')});if(_0x3a1b84[_0xc0cb('0x22')][_0xc0cb('0x29')]){_0x46131b=_[_0xc0cb('0x2b')](_0x3a1b84[_0xc0cb('0x22')]);}}if(_0x46131b){logger['info'](_0xc0cb('0x2c'));return _0x46131b;}else{logger[_0xc0cb('0xc')](_0xc0cb('0x2d'));return request({'uri':util[_0xc0cb('0xe')](_0xc0cb('0x2e'),_0x2cae48['remoteUri']),'method':_0xc0cb('0x11'),'body':{'user':{'role':'end-user','name':util['format']('Caller\x20-\x20%s',_0x13beb||_0x5497f3),'phone':_0x5497f3}}})[_0xc0cb('0x19')](function(_0x43104a){logger['info']('Enduser\x20created.');return _0x43104a[_0xc0cb('0x26')];});}});}function getAuth(_0x7f3e14){var _0x4e9b2a;if(_0x7f3e14['authType']===_0xc0cb('0x2f')){_0x4e9b2a=util[_0xc0cb('0xe')](_0xc0cb('0x30'),_0x7f3e14['username'],_0x7f3e14['password']);}else if(_0x7f3e14[_0xc0cb('0x31')]===_0xc0cb('0x32')){_0x4e9b2a=util[_0xc0cb('0xe')](_0xc0cb('0x33'),_0x7f3e14[_0xc0cb('0x34')],_0x7f3e14[_0xc0cb('0x32')]);}return util['format'](_0xc0cb('0x35'),new Buffer(_0x4e9b2a)[_0xc0cb('0x36')](_0xc0cb('0x37')));}function request(_0x1b0486){logger[_0xc0cb('0x38')](_0xc0cb('0x39'),JSON[_0xc0cb('0x3a')](_0x1b0486));return rp(_[_0xc0cb('0x8')](_0x1b0486,{'method':_0xc0cb('0x3b'),'headers':headers,'json':!![]}));}function getTags(_0x306d46,_0x467991){var _0x440268=[];if(_0x306d46&&_0x306d46['length']>0x0){_0x440268=_[_0xc0cb('0x3c')](_0x306d46,_0x467991);}return _0x440268;}function getCustomFields(_0x396eae,_0x343267){var _0x678738=[];var _0x4deea0={'custom_fields':[]};if(_0x396eae['length']>0x0){_[_0xc0cb('0x3d')](_0x396eae,function(_0x5a7753){if(_[_0xc0cb('0x3e')]([_0xc0cb('0x3f'),_0xc0cb('0x40')],_0x5a7753[_0xc0cb('0x41')])&&_0x5a7753[_0xc0cb('0x42')]&&!_0x5a7753[_0xc0cb('0x43')]){_0x4deea0[_0x5a7753[_0xc0cb('0x42')]['toLowerCase']()]=_0x5a7753[_0xc0cb('0x44')]['toString']();}else if(_['includes'](['string',_0xc0cb('0x40')],_0x5a7753['type'])&&_0x5a7753[_0xc0cb('0x45')]&&_0x5a7753[_0xc0cb('0x43')]){_0x4deea0[_0xc0cb('0x46')]['push']({'id':_0x5a7753[_0xc0cb('0x45')],'value':_0x5a7753[_0xc0cb('0x44')][_0xc0cb('0x36')]()});}else if(_0x5a7753['type']==='variable'&&_0x5a7753['variableName']&&_0x5a7753['idField']&&_0x5a7753[_0xc0cb('0x43')]){_0x343267[_0x5a7753[_0xc0cb('0x47')]]&&_0x4deea0[_0xc0cb('0x46')]['push']({'id':_0x5a7753[_0xc0cb('0x45')],'value':_0x343267[_0x5a7753[_0xc0cb('0x47')]][_0xc0cb('0x36')]()});}else if(_0x5a7753[_0xc0cb('0x41')]===_0xc0cb('0x48')&&_0x5a7753[_0xc0cb('0x49')]&&_0x5a7753[_0xc0cb('0x49')][_0xc0cb('0x14')]&&_0x5a7753[_0xc0cb('0x45')]&&_0x5a7753[_0xc0cb('0x43')]){_0x343267[_0x5a7753[_0xc0cb('0x49')]['name'][_0xc0cb('0x4a')]()]&&_0x4deea0[_0xc0cb('0x46')]['push']({'id':_0x5a7753[_0xc0cb('0x45')],'value':_0x343267[_0x5a7753['Variable'][_0xc0cb('0x14')][_0xc0cb('0x4a')]()]['toString']()});}});}return _0x4deea0;}exports[_0xc0cb('0x4b')]=function(_0x23cf71,_0x5373dc,_0x256dae,_0x53e43d,_0x2b1c56,_0x343273){var _0x5162f9,_0x3de4cf;_0x343273[_0xc0cb('0x10')]=intUtil[_0xc0cb('0x4c')](_0x343273[_0xc0cb('0x10')]);_0x343273[_0xc0cb('0x4d')]=intUtil[_0xc0cb('0x4c')](_0x343273[_0xc0cb('0x4d')]);if(_0x2b1c56&&_0x2b1c56[_0xc0cb('0x4e')]){logger[_0xc0cb('0xc')](_0xc0cb('0x4f'),_0xc0cb('0x50'));_0x5373dc[_0xc0cb('0x51')]=util[_0xc0cb('0xe')](_0xc0cb('0x52'),_0x343273[_0xc0cb('0x4d')],_0x5373dc['uniqueid'],md5(_0x5373dc['uniqueid']));}else{_0x5373dc[_0xc0cb('0x51')]='';}headers['Authorization']=getAuth(_0x343273);return getUser(_0x343273,_0x53e43d[_0xc0cb('0x53')])[_0xc0cb('0x19')](function(_0x47e23f){_0x5162f9=_0x47e23f;logger[_0xc0cb('0xc')](_0xc0cb('0x54'),_0x5162f9['id']);return getEndUser(_0x343273,_0x5373dc['calleridname'],_0x5373dc[_0xc0cb('0x55')]);})[_0xc0cb('0x19')](function(_0x5e2860){_0x3de4cf=_0x5e2860;logger[_0xc0cb('0xc')](_0xc0cb('0x56'),_0x3de4cf['id']);return getTicket(_0x343273,_0x5162f9,_0x3de4cf,_0x256dae,_0x5373dc);})[_0xc0cb('0x19')](function(_0x13d895){if(_0x13d895){logger['info'](_0xc0cb('0x57'),_0x13d895['id']);switch(_0x343273[_0xc0cb('0x41')]){case _0xc0cb('0x58'):logger[_0xc0cb('0xc')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0xc0cb('0xe')](_0xc0cb('0x59'),_0x343273[_0xc0cb('0x10')],_0x5162f9['id'],_0x13d895['id']),'method':_0xc0cb('0x11')});case _0xc0cb('0x5a'):logger[_0xc0cb('0xc')](_0xc0cb('0x4f'),_0xc0cb('0x5b'));emit(util[_0xc0cb('0xe')](_0xc0cb('0x5c'),_0x53e43d[_0xc0cb('0x14')]),'trigger:browser:url',{'uri':util[_0xc0cb('0xe')](_0xc0cb('0x5d'),_0x343273['remoteUri'][_0xc0cb('0x5e')](_0xc0cb('0x5f'),''),_0x13d895['id'])});break;default:logger[_0xc0cb('0x60')](_0xc0cb('0x4f'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0xc0cb('0x61')](function(_0x40e205){logger['error']('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util[_0xc0cb('0x62')](_0x40e205,{'showHidden':!![],'depth':null}));});};exports[_0xc0cb('0x63')]=function(_0x27c55f,_0x4ccb1e,_0x471236,_0x13ba0f,_0x23addf,_0x5e7603,_0x4e591a){var _0x359c97,_0x4b20b5;_0x5e7603['remoteUri']=intUtil[_0xc0cb('0x4c')](_0x5e7603[_0xc0cb('0x10')]);_0x5e7603[_0xc0cb('0x4d')]=intUtil[_0xc0cb('0x4c')](_0x5e7603[_0xc0cb('0x4d')]);if(_0x4e591a&&_0x4e591a[_0xc0cb('0x64')]&&_0x4e591a['recordingFormat']!==_0xc0cb('0x65')){logger[_0xc0cb('0xc')]('[OUTBOUND]',_0xc0cb('0x50'));_0x4ccb1e['recordingURL']=util[_0xc0cb('0xe')](_0xc0cb('0x52'),_0x5e7603[_0xc0cb('0x4d')],_0x4ccb1e['uniqueid'],md5(_0x4ccb1e[_0xc0cb('0x66')]));}headers[_0xc0cb('0x67')]=getAuth(_0x5e7603);return getUser(_0x5e7603,_0x13ba0f['email'])['then'](function(_0x1be052){_0x359c97=_0x1be052;logger[_0xc0cb('0xc')](_0xc0cb('0x54'),_0x359c97['id']);return getEndUser(_0x5e7603,_0x4ccb1e['destcalleridname'],_0x4ccb1e[_0xc0cb('0x68')]);})[_0xc0cb('0x19')](function(_0x1b7334){_0x4b20b5=_0x1b7334;logger[_0xc0cb('0xc')]('The\x20Enduser\x20ID\x20is:',_0x4b20b5['id']);return getTicket(_0x5e7603,_0x359c97,_0x4b20b5,_0x471236,_0x4ccb1e);})[_0xc0cb('0x19')](function(_0x1a6690){if(_0x1a6690){logger[_0xc0cb('0xc')](_0xc0cb('0x57'),_0x1a6690['id']);switch(_0x5e7603[_0xc0cb('0x41')]){case'integrationTab':logger[_0xc0cb('0xc')](_0xc0cb('0x69'),_0xc0cb('0x6a'));return request({'uri':util['format'](_0xc0cb('0x59'),_0x5e7603[_0xc0cb('0x10')],_0x359c97['id'],_0x1a6690['id']),'method':_0xc0cb('0x11')});case _0xc0cb('0x5a'):logger[_0xc0cb('0xc')]('[OUTBOUND]',_0xc0cb('0x5b'));emit(util[_0xc0cb('0xe')](_0xc0cb('0x5c'),_0x13ba0f[_0xc0cb('0x14')]),'trigger:browser:url',{'uri':util[_0xc0cb('0xe')](_0xc0cb('0x5d'),_0x5e7603['remoteUri'][_0xc0cb('0x5e')](_0xc0cb('0x5f'),''),_0x1a6690['id'])});break;default:logger[_0xc0cb('0x60')]('[OUTBOUND]','Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0xc0cb('0x61')](function(_0x15b2b9){logger[_0xc0cb('0x60')](_0xc0cb('0x6b'),util['inspect'](_0x15b2b9,{'showHidden':!![],'depth':null}));});};exports['unmanaged']=function(_0x1ac174,_0x41fa84,_0x36938c,_0x3ef1ec,_0x4ac8e1,_0x47086e){var _0x13d6fc,_0x45874c;_0x47086e[_0xc0cb('0x10')]=intUtil['stripTrailingSlash'](_0x47086e[_0xc0cb('0x10')]);_0x47086e[_0xc0cb('0x4d')]=intUtil[_0xc0cb('0x4c')](_0x47086e[_0xc0cb('0x4d')]);if(_0x4ac8e1&&_0x4ac8e1[_0xc0cb('0x4e')]){logger[_0xc0cb('0xc')]('['+_0x41fa84[_0xc0cb('0x6c')][_0xc0cb('0x6d')]()+']',_0xc0cb('0x50'));_0x41fa84['recordingURL']=util[_0xc0cb('0xe')](_0xc0cb('0x52'),_0x47086e['serverUrl'],_0x41fa84[_0xc0cb('0x66')],md5(_0x41fa84[_0xc0cb('0x66')]));}else{_0x41fa84[_0xc0cb('0x51')]='';}headers[_0xc0cb('0x67')]=getAuth(_0x47086e);return getUser(_0x47086e)['then'](function(_0xe3c954){_0x13d6fc=_0xe3c954;logger[_0xc0cb('0xc')](_0xc0cb('0x54'),_0x13d6fc['id']);return getEndUser(_0x47086e,_0x41fa84[_0xc0cb('0x6e')],_0x41fa84[_0xc0cb('0x55')]);})[_0xc0cb('0x19')](function(_0x53c6c8){_0x45874c=_0x53c6c8;logger['info']('The\x20Enduser\x20ID\x20is:',_0x45874c['id']);return getTicket(_0x47086e,_0x13d6fc,_0x45874c,_0x36938c,_0x41fa84);})[_0xc0cb('0x19')](function(_0x5b1968){if(_0x5b1968){logger['info'](_0xc0cb('0x57'),_0x5b1968['id']);}})['catch'](function(_0x42ef3f){logger[_0xc0cb('0x60')]('['+_0x41fa84[_0xc0cb('0x6c')]['toUpperCase']()+']'+_0xc0cb('0x6f'),util[_0xc0cb('0x62')](_0x42ef3f,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index b3699a1..33000ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7024=['/downloads?type=uniqueid&token=','zoho.eu','com','The\x20User\x20ID\x20is:','calleridname','calleridnum','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','https://crm.','/crm/EntityInfo.do?module=Calls&id=','none','destcalleridnum','Outbound','The\x20Call\x20ID\x20is:','[OUTBOUND]','user:%s','unmanaged','lodash','request-promise','md5','moment','ioredis','bluebird','../../../../config/environment','../../../../config/logger','zoho','redis','defaults','localhost','emit','debug','[HTTP]','stringify','forEach','includes','string','type','toString','variableName','idField','customVariable','name','Variable','split','isNil','access_token','expires_in','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','clientId','clientSecret','then','seconds','catch','stack','info','Search\x20user','GET','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','Zoho-oauthtoken\x20','users','isArrayLikeObject','findIndex','email','Agent\x20found!','Using\x20the\x20admin\x20account!','profile','user','error','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','data','/crm/v2/','moduleCreate','role','first_name','last_name','code','details','startCase','Error:\x20','log','CREATE\x20ERROR','contact_lead','uri','https://www.zohoapis.','/crm/v2/Contacts/search?criteria=((Phone:equals:','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','contact','Contacts','lead','Creating\x20new\x20call...','Subject','getString','Description','Full_Name','First_Name','Last_Name','enduserType','What_Id','$se_module','talktime','Call_Duration','utc','mm:ss','answertime','endtime','YYYY-MM-DDTHH:mm:ss','diff','starttime','lastevent','called','Call_Result','connect','Answered','rejected','Rejected','abandoned','Abandoned','timeout','Timeout','outbound','agentcalledAt','Call_Type','Inbound','merge','/crm/v2/Calls','Call\x20created!','err','host','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','/api/voice/recordings/','uniqueid'];(function(_0x4f3b2d,_0x3bbf46){var _0x3dddfa=function(_0xb8179a){while(--_0xb8179a){_0x4f3b2d['push'](_0x4f3b2d['shift']());}};_0x3dddfa(++_0x3bbf46);}(_0x7024,0x139));var _0x4702=function(_0x1dbd12,_0x350419){_0x1dbd12=_0x1dbd12-0x0;var _0x22c075=_0x7024[_0x1dbd12];return _0x22c075;};'use strict';var _=require(_0x4702('0x0'));var rp=require(_0x4702('0x1'));var md5=require(_0x4702('0x2'));var util=require('util');var intUtil=require('./util');var moment=require(_0x4702('0x3'));var Redis=require(_0x4702('0x4'));var BPromise=require(_0x4702('0x5'));var config=require(_0x4702('0x6'));var logger=require(_0x4702('0x7'))(_0x4702('0x8'));config[_0x4702('0x9')]=_[_0x4702('0xa')](config['redis'],{'host':_0x4702('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x4702('0x9')]));function emit(_0x3858c2,_0x5a99cc,_0xfadffb){io['to'](_0x3858c2)[_0x4702('0xc')](_0x5a99cc,_0xfadffb);}function request(_0x497aeb){logger[_0x4702('0xd')](_0x4702('0xe'),JSON[_0x4702('0xf')](_0x497aeb));return rp(_0x497aeb);}function getCustomFields(_0x149443,_0x31a0b5){var _0x34171b={};if(_0x149443['length']>0x0){_[_0x4702('0x10')](_0x149443,function(_0x166367){if(_[_0x4702('0x11')]([_0x4702('0x12'),'picklist'],_0x166367[_0x4702('0x13')])&&_0x166367['idField']){_0x34171b[_0x166367['idField']]=_0x166367['content'][_0x4702('0x14')]();}else if(_0x166367[_0x4702('0x13')]==='variable'&&_0x166367[_0x4702('0x15')]&&_0x166367[_0x4702('0x16')]&&_0x31a0b5[_0x166367[_0x4702('0x15')]]){_0x34171b[_0x166367[_0x4702('0x16')]]=_0x31a0b5[_0x166367[_0x4702('0x15')]][_0x4702('0x14')]();}else if(_0x166367['type']===_0x4702('0x17')&&_0x166367['Variable']&&_0x166367['Variable'][_0x4702('0x18')]&&_0x166367[_0x4702('0x16')]&&_0x31a0b5[_0x166367['Variable'][_0x4702('0x18')]['toLowerCase']()]){_0x34171b[_0x166367[_0x4702('0x16')]]=_0x31a0b5[_0x166367[_0x4702('0x19')][_0x4702('0x18')]['toLowerCase']()][_0x4702('0x14')]();}});}return _0x34171b;}function getName(_0x576c54){if(_0x576c54['indexOf']('\x20')>0x0){var _0x3dee2b=_0x576c54[_0x4702('0x1a')](/ (.+)/);if(_0x3dee2b[0x1]){return _0x3dee2b;}}return[_0x576c54,_0x576c54];}var accountsTokens={};function getAccessToken(_0x2795a4){return new Promise(function(_0x5a2966,_0x53f584){if(!_['isNil'](accountsTokens[_0x2795a4['id']])&&!_[_0x4702('0x1b')](accountsTokens[_0x2795a4['id']][_0x4702('0x1c')])){if(moment()['isBefore'](accountsTokens[_0x2795a4['id']][_0x4702('0x1d')])){_0x5a2966(accountsTokens[_0x2795a4['id']][_0x4702('0x1c')]);}}var _0x4ef338;switch(_0x2795a4[_0x4702('0x1e')]){case'US':_0x4ef338=_0x4702('0x1f');break;case'AU':_0x4ef338=_0x4702('0x20');break;case'EU':_0x4ef338=_0x4702('0x21');break;case'IN':_0x4ef338=_0x4702('0x22');break;case'CN':_0x4ef338=_0x4702('0x23');break;default:_0x4ef338=_0x4702('0x21');break;}var _0x15218e={'method':_0x4702('0x24'),'uri':_0x4ef338+_0x4702('0x25'),'qs':{'refresh_token':_0x2795a4['refreshToken'],'client_id':_0x2795a4[_0x4702('0x26')],'client_secret':_0x2795a4[_0x4702('0x27')],'grant_type':'refresh_token'},'json':!![]};return rp(_0x15218e)[_0x4702('0x28')](function(_0x5c7283){accountsTokens[_0x2795a4['id']]={'access_token':_0x5c7283[_0x4702('0x1c')],'expires_in':moment()['add'](_0x5c7283[_0x4702('0x1d')],_0x4702('0x29'))};_0x5a2966(_0x5c7283[_0x4702('0x1c')]);})[_0x4702('0x2a')](function(_0x1b13c6){logger['error']('Failing\x20creating\x20the\x20access_token',_0x1b13c6[_0x4702('0x2b')]);_0x53f584(_0x1b13c6);});});}function getUser(_0x5dde2f,_0xc0977,_0x1f0aa,_0xf88f0c){logger[_0x4702('0x2c')](_0x4702('0x2d'));return request({'method':_0x4702('0x2e'),'uri':util[_0x4702('0x2f')](_0x4702('0x30'),_0xc0977),'qs':{'type':_0x4702('0x31')},'headers':{'Authorization':_0x4702('0x32')+_0x5dde2f},'json':!![]})['then'](function(_0x15ba12){if(_0x15ba12[_0x4702('0x33')]){var _0x12c91d=-0x1;if(_[_0x4702('0x34')](_0x15ba12[_0x4702('0x33')])){if(!_[_0x4702('0x1b')](_0xf88f0c)){_0x12c91d=_[_0x4702('0x35')](_0x15ba12[_0x4702('0x33')],function(_0x186bf5){return _0x186bf5[_0x4702('0x36')]===_0xf88f0c;});}if(_0x12c91d>=0x0){logger[_0x4702('0x2c')](_0x4702('0x37'));}else{logger[_0x4702('0x2c')](_0x4702('0x38'));_0x12c91d=_[_0x4702('0x35')](_0x15ba12[_0x4702('0x33')],function(_0x12e70d){return _0x12e70d[_0x4702('0x39')][_0x4702('0x18')]==='Administrator';});}return _0x15ba12[_0x4702('0x33')][_0x12c91d];}else{if(_0x15ba12[_0x4702('0x3a')][_0x4702('0x39')]['name']==='Administrator'){logger[_0x4702('0x2c')](_0x4702('0x38'));user=_0x15ba12[_0x4702('0x3a')];return user;}else{logger[_0x4702('0x3b')](_0x4702('0x3c'),JSON[_0x4702('0xf')](_0x15ba12));throw new Error(_0x4702('0x3d')+JSON['stringify'](_0x15ba12));}}}else{logger[_0x4702('0x3b')](_0x4702('0x3c'),JSON[_0x4702('0xf')](_0x15ba12));throw new Error(_0x4702('0x3d')+JSON[_0x4702('0xf')](_0x15ba12));}})['catch'](function(_0x5e08f1){console[_0x4702('0x3b')](_0x5e08f1);});}function getZohoUser(_0x250966,_0x550033){return new BPromise(function(_0x2ab552,_0x34fab4){request(_0x250966)[_0x4702('0x28')](function(_0xacf309){var _0x49858b=null;if(_0xacf309){_0x49858b=_0xacf309[_0x4702('0x3e')][0x0];_0x49858b['enduserType']=_0x550033;}_0x2ab552(_0x49858b);})[_0x4702('0x2a')](function(_0x3803c8){_0x34fab4(_0x3803c8);});});}function createEndUser(_0x456924,_0x4c5cbc,_0x532e2e,_0x579e7f,_0x5166c5,_0xf9085d){var _0x532e2e=getName(_0x532e2e);return request({'method':'POST','uri':'https://www.zohoapis.'+_0x4c5cbc+_0x4702('0x3f')+_['startCase'](_0xf9085d[_0x4702('0x40')])+'s','body':{'data':[{'Last_Name':_0x532e2e[0x1],'First_Name':_0x532e2e[0x0],'Phone':_0x579e7f,'Owner':{'name':!_['isNil'](_0x5166c5[_0x4702('0x41')]['name'])?_0x5166c5[_0x4702('0x41')][_0x4702('0x18')]:!_['isNil'](_0x5166c5[_0x4702('0x42')])?_0x5166c5[_0x4702('0x42')]+'\x20'+_0x5166c5[_0x4702('0x43')]:_0x5166c5['last_name'],'id':_0x5166c5['id']}}]},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x456924},'json':!![]})[_0x4702('0x28')](function(_0x5d0de7){if(_0x5d0de7&&_0x5d0de7['data'][0x0][_0x4702('0x44')]==='SUCCESS'){var _0xfee159=_0x5d0de7[_0x4702('0x3e')][0x0][_0x4702('0x45')];_0xfee159['enduserType']=_[_0x4702('0x46')](_0xf9085d[_0x4702('0x40')])+'s';return _0xfee159;}logger[_0x4702('0x3b')](_0x4702('0x3c'),JSON[_0x4702('0xf')](data));throw new Error(_0x4702('0x47')+JSON[_0x4702('0xf')](data));})[_0x4702('0x2a')](function(_0x11bb88){console[_0x4702('0x48')](_0x4702('0x49'),_0x11bb88);});}function getEndUser(_0x22ba70,_0x51aa24,_0x2682a8,_0x255e35,_0x582d9e,_0x3b84ee,_0x3a8d7a){var _0x5cf851={'method':_0x4702('0x2e'),'uri':'','headers':{'Authorization':_0x4702('0x32')+_0x22ba70},'json':!![]};switch(_0x3a8d7a['moduleSearch']){case _0x4702('0x4a'):_0x5cf851[_0x4702('0x4b')]=_0x4702('0x4c')+_0x51aa24+_0x4702('0x4d')+_0x582d9e+'))';return getZohoUser(_0x5cf851,'Contacts')[_0x4702('0x28')](function(_0x50c0dd){if(_0x50c0dd)return _0x50c0dd;_0x5cf851[_0x4702('0x4b')]=_0x4702('0x4c')+_0x51aa24+_0x4702('0x4e')+_0x582d9e+'))';return getZohoUser(_0x5cf851,_0x4702('0x4f'))[_0x4702('0x28')](function(_0x54c5c4){if(_0x54c5c4)return _0x54c5c4;if(_0x3a8d7a[_0x4702('0x40')]!=_0x4702('0x50')){return createEndUser(_0x22ba70,_0x51aa24,_0x255e35,_0x582d9e,_0x3b84ee,_0x3a8d7a);}else{return{};}});});break;case _0x4702('0x51'):_0x5cf851[_0x4702('0x4b')]=_0x4702('0x4c')+_0x51aa24+_0x4702('0x4d')+_0x582d9e+'))';return getZohoUser(_0x5cf851,_0x4702('0x52'))[_0x4702('0x28')](function(_0x3d51d2){if(_0x3d51d2)return _0x3d51d2;if(_0x3a8d7a[_0x4702('0x40')]!='nothing'){return createEndUser(_0x22ba70,_0x51aa24,_0x255e35,_0x582d9e,_0x3b84ee,_0x3a8d7a);}else{return{};}});break;case _0x4702('0x53'):_0x5cf851['uri']='https://www.zohoapis.'+_0x51aa24+'/crm/v2/Leads/search?criteria=((Phone:equals:'+_0x582d9e+'))';return getZohoUser(_0x5cf851,_0x4702('0x4f'))[_0x4702('0x28')](function(_0x47b470){if(_0x47b470)return _0x47b470;if(_0x3a8d7a['moduleCreate']!=_0x4702('0x50')){return createEndUser(_0x22ba70,_0x51aa24,_0x255e35,_0x582d9e,_0x3b84ee,_0x3a8d7a);}else{return{};}});break;}}function getCall(_0x158f3a,_0x6b7e5b,_0x2e680a,_0x3c306c,_0x997a18,_0x372921,_0x96fa36,_0x2b4129){logger['info'](_0x4702('0x54'));var _0x411015={};_0x411015['Owner']={'name':!_['isNil'](_0x3c306c[_0x4702('0x41')][_0x4702('0x18')])&&!_['isNil'](_0x3c306c['profile']['name'])&&_0x3c306c['profile'][_0x4702('0x18')]==='administrator'?_0x3c306c['role']['name']:!_[_0x4702('0x1b')](_0x3c306c[_0x4702('0x42')])?_0x3c306c[_0x4702('0x42')]+'\x20'+_0x3c306c[_0x4702('0x43')]:_0x3c306c['last_name'],'id':_0x3c306c['id']};_0x411015[_0x4702('0x55')]=intUtil[_0x4702('0x56')](_0x372921['Subjects'],_0x96fa36,'\x20');_0x411015[_0x4702('0x57')]=intUtil[_0x4702('0x56')](_0x372921['Descriptions'],_0x96fa36,'\x0a');if(_0x997a18['enduserType']==='Contacts'){_0x411015['Who_Id']={'name':!_[_0x4702('0x1b')](_0x997a18[_0x4702('0x58')])?_0x997a18['Full_Name']:!_[_0x4702('0x1b')](_0x997a18[_0x4702('0x59')])?_0x997a18[_0x4702('0x59')]+'\x20'+_0x997a18[_0x4702('0x5a')]:_0x997a18[_0x4702('0x5a')],'id':_0x997a18['id']};}if(_0x997a18[_0x4702('0x5b')]==='Leads'){_0x411015[_0x4702('0x5c')]={'name':!_['isNil'](_0x997a18['Full_Name'])?_0x997a18[_0x4702('0x58')]:!_[_0x4702('0x1b')](_0x997a18[_0x4702('0x59')])?_0x997a18['First_Name']+'\x20'+_0x997a18[_0x4702('0x5a')]:_0x997a18[_0x4702('0x5a')],'id':_0x997a18['id']};_0x411015[_0x4702('0x5d')]=_[_0x4702('0x46')](_0x997a18[_0x4702('0x5b')]);}if(_0x96fa36[_0x4702('0x5e')]){_0x411015[_0x4702('0x5f')]=moment[_0x4702('0x60')](parseInt(_0x96fa36[_0x4702('0x5e')])*0x3e8)[_0x4702('0x2f')](_0x4702('0x61'));}else if(_0x96fa36[_0x4702('0x62')]&&_0x96fa36[_0x4702('0x63')]){_0x411015['Call_Duration']=moment[_0x4702('0x60')](moment(_0x96fa36[_0x4702('0x63')],_0x4702('0x64'))[_0x4702('0x65')](moment(_0x96fa36[_0x4702('0x66')],_0x4702('0x64'))))[_0x4702('0x2f')]('mm:ss');}switch(_0x96fa36[_0x4702('0x67')]){case _0x4702('0x68'):_0x411015[_0x4702('0x69')]='Called';break;case'complete':case _0x4702('0x6a'):_0x411015[_0x4702('0x69')]=_0x4702('0x6b');break;case _0x4702('0x6c'):_0x411015[_0x4702('0x69')]=_0x4702('0x6d');break;case _0x4702('0x6e'):_0x411015[_0x4702('0x69')]=_0x4702('0x6f');break;case _0x4702('0x70'):_0x411015[_0x4702('0x69')]=_0x4702('0x71');default:}_0x411015['Call_Start_Time']=(_0x2b4129===_0x4702('0x72')?moment(_0x96fa36[_0x4702('0x66')])[_0x4702('0x2f')](_0x4702('0x64')):moment(_0x96fa36[_0x4702('0x73')])[_0x4702('0x2f')]('YYYY-MM-DDTHH:mm:ss'))||moment()[_0x4702('0x2f')](_0x4702('0x64'));_0x411015[_0x4702('0x74')]=_0x2b4129||_0x4702('0x75');_0x411015=_[_0x4702('0x76')](_0x411015,getCustomFields(_0x372921['Fields'],_0x96fa36));return request({'method':_0x4702('0x24'),'uri':_0x4702('0x4c')+_0x6b7e5b+_0x4702('0x77'),'headers':{'Authorization':_0x4702('0x32')+_0x158f3a},'body':{'data':[_0x411015]},'json':!![]})['then'](function(_0x1fb40a){if(_0x1fb40a&&_0x1fb40a[_0x4702('0x3e')][0x0][_0x4702('0x44')]==='SUCCESS'){logger['info'](_0x4702('0x78'));return{'id':_0x1fb40a[_0x4702('0x3e')][0x0][_0x4702('0x45')]['id']};}})['catch'](function(_0x3cd062){logger[_0x4702('0x2c')](_0x4702('0x79'),_0x3cd062['stack']);console[_0x4702('0x48')]('err',_0x3cd062);});}exports['queue']=function(_0x4aa8f8,_0x284caf,_0x4003c7,_0x1ff5a6,_0x4afe48,_0x1137af){var _0xe78925,_0x12d916,_0x1c30da;_0x1137af['host']=intUtil['stripTrailingSlash'](_0x1137af[_0x4702('0x7a')]);_0x1137af[_0x4702('0x7b')]=intUtil[_0x4702('0x7c')](_0x1137af['serverUrl']);if(_0x4afe48&&_0x4afe48[_0x4702('0x7d')]){logger[_0x4702('0x2c')](_0x4702('0x7e'),_0x4702('0x7f'));_0x284caf[_0x4702('0x80')]=_0x1137af[_0x4702('0x7b')]+_0x4702('0x81')+_0x284caf[_0x4702('0x82')]+_0x4702('0x83')+md5(_0x284caf[_0x4702('0x82')]);}else{_0x284caf[_0x4702('0x80')]='';}var _0x24eb12=_0x1137af[_0x4702('0x7a')]===_0x4702('0x84')?'eu':_0x4702('0x85');return getAccessToken(_0x1137af)[_0x4702('0x28')](function(_0x5f5b54){_0x1c30da=_0x5f5b54;return getUser(_0x1c30da,_0x24eb12,_0x1137af,_0x1ff5a6[_0x4702('0x36')]);})[_0x4702('0x28')](function(_0xf4a791){_0xe78925=_0xf4a791;logger[_0x4702('0x2c')](_0x4702('0x86'),_0xe78925['id']);return getEndUser(_0x1c30da,_0x24eb12,_0x1137af,_0x284caf[_0x4702('0x87')],_0x284caf[_0x4702('0x88')],_0xe78925,_0x4003c7);})[_0x4702('0x28')](function(_0x3bd445){_0x12d916=_0x3bd445;return getCall(_0x1c30da,_0x24eb12,_0x1137af,_0xe78925,_0x12d916,_0x4003c7,_0x284caf,_0x4702('0x75'));})[_0x4702('0x28')](function(_0x4b5fa9){if(_0x4b5fa9){logger[_0x4702('0x2c')]('The\x20Call\x20ID\x20is:',_0x4b5fa9['id']);logger[_0x4702('0x2c')](_0x4702('0x7e'),_0x4702('0x89'));emit(util[_0x4702('0x2f')]('user:%s',_0x1ff5a6[_0x4702('0x18')]),_0x4702('0x8a'),{'uri':_0x4702('0x8b')+_0x1137af[_0x4702('0x7a')]+_0x4702('0x8c')+_0x4b5fa9['id']});}})[_0x4702('0x2a')](function(_0xe2dc5d){logger[_0x4702('0x3b')]('[QUEUE]',JSON[_0x4702('0xf')](_0xe2dc5d));});};exports[_0x4702('0x72')]=function(_0x1c3aac,_0x1294f3,_0x3d3ea2,_0x94253,_0x4cbbd3,_0x2de4e6,_0x574e61){var _0x303299,_0x49e833,_0x1a9cbe;_0x2de4e6[_0x4702('0x7a')]=intUtil[_0x4702('0x7c')](_0x2de4e6[_0x4702('0x7a')]);_0x2de4e6[_0x4702('0x7b')]=intUtil[_0x4702('0x7c')](_0x2de4e6[_0x4702('0x7b')]);if(_0x574e61&&_0x574e61['recordingFormat']&&_0x574e61['recordingFormat']!==_0x4702('0x8d')){logger['info']('[OUTBOUND]',_0x4702('0x7f'));_0x1294f3[_0x4702('0x80')]=_0x2de4e6[_0x4702('0x7b')]+'/api/voice/recordings/'+_0x1294f3[_0x4702('0x82')]+'/downloads?type=uniqueid&token='+md5(_0x1294f3[_0x4702('0x82')]);}var _0x3eb663=_0x2de4e6[_0x4702('0x7a')]===_0x4702('0x84')?'eu':_0x4702('0x85');return getAccessToken(_0x2de4e6)['then'](function(_0x4186d8){_0x1a9cbe=_0x4186d8;return getUser(_0x1a9cbe,_0x3eb663,_0x2de4e6,_0x94253['email']);})[_0x4702('0x28')](function(_0x49fa5e){_0x303299=_0x49fa5e;logger[_0x4702('0x2c')](_0x4702('0x86'),_0x303299['id']);return getEndUser(_0x1a9cbe,_0x3eb663,_0x2de4e6,_0x1294f3['destcalleridname'],_0x1294f3[_0x4702('0x8e')],_0x303299,_0x3d3ea2);})[_0x4702('0x28')](function(_0x2009e1){_0x49e833=_0x2009e1;return getCall(_0x1a9cbe,_0x3eb663,_0x2de4e6,_0x303299,_0x49e833,_0x3d3ea2,_0x1294f3,_0x4702('0x8f'));})['then'](function(_0x4d9c2f){if(_0x4d9c2f){logger[_0x4702('0x2c')](_0x4702('0x90'),_0x4d9c2f['id']);logger['info'](_0x4702('0x91'),_0x4702('0x89'));emit(util[_0x4702('0x2f')](_0x4702('0x92'),_0x94253[_0x4702('0x18')]),_0x4702('0x8a'),{'uri':_0x4702('0x8b')+_0x2de4e6[_0x4702('0x7a')]+_0x4702('0x8c')+_0x4d9c2f['id']});}})['catch'](function(_0x43e16b){logger['error']('[OUTBOUND]',JSON[_0x4702('0xf')](_0x43e16b));});};exports[_0x4702('0x93')]=function(_0x1e6fba,_0x352185,_0x47d43f,_0x4d9828,_0x398fff,_0x25bc57){var _0x1e577a,_0xd3388d,_0x44ac2f;_0x25bc57[_0x4702('0x7a')]=intUtil[_0x4702('0x7c')](_0x25bc57['host']);_0x25bc57[_0x4702('0x7b')]=intUtil[_0x4702('0x7c')](_0x25bc57[_0x4702('0x7b')]);if(_0x398fff&&_0x398fff[_0x4702('0x7d')]){logger['info']('['+_0x352185['lastevent']['toUpperCase']()+']',_0x4702('0x7f'));_0x352185[_0x4702('0x80')]=_0x25bc57[_0x4702('0x7b')]+'/api/voice/recordings/'+_0x352185[_0x4702('0x82')]+_0x4702('0x83')+md5(_0x352185[_0x4702('0x82')]);}else{_0x352185[_0x4702('0x80')]='';}var _0x3836c0=_0x25bc57[_0x4702('0x7a')]===_0x4702('0x84')?'eu':_0x4702('0x85');return getAccessToken(_0x25bc57)[_0x4702('0x28')](function(_0x3b3ce6){_0x44ac2f=_0x3b3ce6;return getUser(_0x44ac2f,_0x3836c0,_0x25bc57);})[_0x4702('0x28')](function(_0x585556){_0x1e577a=_0x585556;logger['info'](_0x4702('0x86'),_0x1e577a['id']);return getEndUser(_0x44ac2f,_0x3836c0,_0x25bc57,_0x352185[_0x4702('0x87')],_0x352185['calleridnum'],_0x1e577a,_0x47d43f);})[_0x4702('0x28')](function(_0x3bdb00){_0xd3388d=_0x3bdb00;return getCall(_0x44ac2f,_0x3836c0,_0x25bc57,_0x1e577a,_0xd3388d,_0x47d43f,_0x352185,_0x4702('0x75'));})[_0x4702('0x28')](function(_0x510a41){if(_0x510a41){logger[_0x4702('0x2c')](_0x4702('0x90'),_0x510a41['id']);}})[_0x4702('0x2a')](function(_0x3e960b){logger['error']('['+_0x352185['lastevent']['toUpperCase']()+']',JSON['stringify'](_0x3e960b));});};
\ No newline at end of file
+var _0xb578=['zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','clientSecret','refresh_token','add','expires_in','seconds','catch','Failing\x20creating\x20the\x20access_token','stack','Search\x20user','GET','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','users','isArrayLikeObject','email','info','Using\x20the\x20admin\x20account!','findIndex','Administrator','user','error','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','The\x20failing\x20result\x20is','then','data','enduserType','https://www.zohoapis.','/crm/v2/','moduleCreate','role','first_name','last_name','code','SUCCESS','details','Error:\x20','CREATE\x20ERROR','Zoho-oauthtoken\x20','moduleSearch','uri','/crm/v2/Contacts/search?criteria=((Phone:equals:','/crm/v2/Leads/search?criteria=((Phone:equals:','nothing','Contacts','Leads','Creating\x20new\x20call...','profile','Subject','getString','Subjects','Description','Descriptions','Who_Id','Full_Name','First_Name','Last_Name','What_Id','$se_module','startCase','talktime','Call_Duration','utc','diff','YYYY-MM-DDTHH:mm:ss','mm:ss','called','Call_Result','Called','Answered','rejected','Rejected','Abandoned','timeout','Timeout','outbound','starttime','Inbound','merge','Fields','/crm/v2/Calls','Call\x20created!','err','log','queue','stripTrailingSlash','host','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','/downloads?type=uniqueid&token=','zoho.eu','com','calleridname','calleridnum','The\x20Call\x20ID\x20is:','trigger:browser:url','https://crm.','recordingFormat','[OUTBOUND]','/api/voice/recordings/','uniqueid','destcalleridnum','Outbound','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','/crm/EntityInfo.do?module=Calls&id=','unmanaged','lastevent','toUpperCase','request-promise','util','ioredis','bluebird','../../../../config/environment','zoho','redis','defaults','emit','debug','[HTTP]','stringify','length','forEach','includes','picklist','type','idField','content','variable','variableName','toString','customVariable','Variable','name','toLowerCase','split','isNil','access_token','isBefore'];(function(_0x7432ce,_0x5dfe7c){var _0xe02f4b=function(_0x255b17){while(--_0x255b17){_0x7432ce['push'](_0x7432ce['shift']());}};_0xe02f4b(++_0x5dfe7c);}(_0xb578,0x78));var _0x8b57=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xb578[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var rp=require(_0x8b57('0x0'));var md5=require('md5');var util=require(_0x8b57('0x1'));var intUtil=require('./util');var moment=require('moment');var Redis=require(_0x8b57('0x2'));var BPromise=require(_0x8b57('0x3'));var config=require(_0x8b57('0x4'));var logger=require('../../../../config/logger')(_0x8b57('0x5'));config[_0x8b57('0x6')]=_[_0x8b57('0x7')](config[_0x8b57('0x6')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function emit(_0x55d91e,_0x57c3a4,_0x2c200f){io['to'](_0x55d91e)[_0x8b57('0x8')](_0x57c3a4,_0x2c200f);}function request(_0x45507d){logger[_0x8b57('0x9')](_0x8b57('0xa'),JSON[_0x8b57('0xb')](_0x45507d));return rp(_0x45507d);}function getCustomFields(_0x53268d,_0x58438a){var _0x3e3697={};if(_0x53268d[_0x8b57('0xc')]>0x0){_[_0x8b57('0xd')](_0x53268d,function(_0x41d659){if(_[_0x8b57('0xe')](['string',_0x8b57('0xf')],_0x41d659[_0x8b57('0x10')])&&_0x41d659[_0x8b57('0x11')]){_0x3e3697[_0x41d659[_0x8b57('0x11')]]=_0x41d659[_0x8b57('0x12')]['toString']();}else if(_0x41d659[_0x8b57('0x10')]===_0x8b57('0x13')&&_0x41d659[_0x8b57('0x14')]&&_0x41d659[_0x8b57('0x11')]&&_0x58438a[_0x41d659[_0x8b57('0x14')]]){_0x3e3697[_0x41d659[_0x8b57('0x11')]]=_0x58438a[_0x41d659[_0x8b57('0x14')]][_0x8b57('0x15')]();}else if(_0x41d659['type']===_0x8b57('0x16')&&_0x41d659['Variable']&&_0x41d659[_0x8b57('0x17')][_0x8b57('0x18')]&&_0x41d659[_0x8b57('0x11')]&&_0x58438a[_0x41d659['Variable'][_0x8b57('0x18')]['toLowerCase']()]){_0x3e3697[_0x41d659[_0x8b57('0x11')]]=_0x58438a[_0x41d659['Variable'][_0x8b57('0x18')][_0x8b57('0x19')]()][_0x8b57('0x15')]();}});}return _0x3e3697;}function getName(_0x39e30a){if(_0x39e30a['indexOf']('\x20')>0x0){var _0x9bad16=_0x39e30a[_0x8b57('0x1a')](/ (.+)/);if(_0x9bad16[0x1]){return _0x9bad16;}}return[_0x39e30a,_0x39e30a];}var accountsTokens={};function getAccessToken(_0x1acf1f){return new Promise(function(_0x508798,_0x1a3289){if(!_['isNil'](accountsTokens[_0x1acf1f['id']])&&!_[_0x8b57('0x1b')](accountsTokens[_0x1acf1f['id']][_0x8b57('0x1c')])){if(moment()[_0x8b57('0x1d')](accountsTokens[_0x1acf1f['id']]['expires_in'])){_0x508798(accountsTokens[_0x1acf1f['id']]['access_token']);}}var _0x58f67d;switch(_0x1acf1f[_0x8b57('0x1e')]){case'US':_0x58f67d=_0x8b57('0x1f');break;case'AU':_0x58f67d=_0x8b57('0x20');break;case'EU':_0x58f67d=_0x8b57('0x21');break;case'IN':_0x58f67d=_0x8b57('0x22');break;case'CN':_0x58f67d=_0x8b57('0x23');break;default:_0x58f67d=_0x8b57('0x21');break;}var _0x23909b={'method':_0x8b57('0x24'),'uri':_0x58f67d+_0x8b57('0x25'),'qs':{'refresh_token':_0x1acf1f['refreshToken'],'client_id':_0x1acf1f['clientId'],'client_secret':_0x1acf1f[_0x8b57('0x26')],'grant_type':_0x8b57('0x27')},'json':!![]};return rp(_0x23909b)['then'](function(_0x227fe4){accountsTokens[_0x1acf1f['id']]={'access_token':_0x227fe4[_0x8b57('0x1c')],'expires_in':moment()[_0x8b57('0x28')](_0x227fe4[_0x8b57('0x29')],_0x8b57('0x2a'))};_0x508798(_0x227fe4['access_token']);})[_0x8b57('0x2b')](function(_0x2f7ab5){logger['error'](_0x8b57('0x2c'),_0x2f7ab5[_0x8b57('0x2d')]);_0x1a3289(_0x2f7ab5);});});}function getUser(_0x201dc9,_0x54a993,_0x3e71b7,_0x1b19fd){logger['info'](_0x8b57('0x2e'));return request({'method':_0x8b57('0x2f'),'uri':util[_0x8b57('0x30')](_0x8b57('0x31'),_0x54a993),'qs':{'type':_0x8b57('0x32')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x201dc9},'json':!![]})['then'](function(_0x115169){if(_0x115169[_0x8b57('0x33')]){var _0x4e2a1e=-0x1;if(_[_0x8b57('0x34')](_0x115169[_0x8b57('0x33')])){if(!_[_0x8b57('0x1b')](_0x1b19fd)){_0x4e2a1e=_['findIndex'](_0x115169[_0x8b57('0x33')],function(_0x3c7217){return _0x3c7217[_0x8b57('0x35')]===_0x1b19fd;});}if(_0x4e2a1e>=0x0){logger['info']('Agent\x20found!');}else{logger[_0x8b57('0x36')](_0x8b57('0x37'));_0x4e2a1e=_[_0x8b57('0x38')](_0x115169[_0x8b57('0x33')],function(_0x3e958a){return _0x3e958a['profile'][_0x8b57('0x18')]==='Administrator';});}return _0x115169[_0x8b57('0x33')][_0x4e2a1e];}else{if(_0x115169['user']['profile'][_0x8b57('0x18')]===_0x8b57('0x39')){logger[_0x8b57('0x36')](_0x8b57('0x37'));user=_0x115169[_0x8b57('0x3a')];return user;}else{logger[_0x8b57('0x3b')]('The\x20failing\x20result\x20is',JSON['stringify'](_0x115169));throw new Error(_0x8b57('0x3c')+JSON[_0x8b57('0xb')](_0x115169));}}}else{logger['error'](_0x8b57('0x3d'),JSON[_0x8b57('0xb')](_0x115169));throw new Error(_0x8b57('0x3c')+JSON[_0x8b57('0xb')](_0x115169));}})[_0x8b57('0x2b')](function(_0x500a3d){console[_0x8b57('0x3b')](_0x500a3d);});}function getZohoUser(_0x56a12a,_0x35cb3c){return new BPromise(function(_0xa55a09,_0x4481d4){request(_0x56a12a)[_0x8b57('0x3e')](function(_0x1db0b4){var _0x287e52=null;if(_0x1db0b4){_0x287e52=_0x1db0b4[_0x8b57('0x3f')][0x0];_0x287e52[_0x8b57('0x40')]=_0x35cb3c;}_0xa55a09(_0x287e52);})[_0x8b57('0x2b')](function(_0x383998){_0x4481d4(_0x383998);});});}function createEndUser(_0x5d733e,_0x3c32f4,_0x1c09e4,_0x36e531,_0xfa64c6,_0x1cfef9){var _0x1c09e4=getName(_0x1c09e4);return request({'method':_0x8b57('0x24'),'uri':_0x8b57('0x41')+_0x3c32f4+_0x8b57('0x42')+_['startCase'](_0x1cfef9[_0x8b57('0x43')])+'s','body':{'data':[{'Last_Name':_0x1c09e4[0x1],'First_Name':_0x1c09e4[0x0],'Phone':_0x36e531,'Owner':{'name':!_[_0x8b57('0x1b')](_0xfa64c6[_0x8b57('0x44')]['name'])?_0xfa64c6[_0x8b57('0x44')]['name']:!_[_0x8b57('0x1b')](_0xfa64c6[_0x8b57('0x45')])?_0xfa64c6['first_name']+'\x20'+_0xfa64c6[_0x8b57('0x46')]:_0xfa64c6[_0x8b57('0x46')],'id':_0xfa64c6['id']}}]},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x5d733e},'json':!![]})[_0x8b57('0x3e')](function(_0x2535e1){if(_0x2535e1&&_0x2535e1[_0x8b57('0x3f')][0x0][_0x8b57('0x47')]===_0x8b57('0x48')){var _0xf51177=_0x2535e1[_0x8b57('0x3f')][0x0][_0x8b57('0x49')];_0xf51177['enduserType']=_['startCase'](_0x1cfef9[_0x8b57('0x43')])+'s';return _0xf51177;}logger['error'](_0x8b57('0x3d'),JSON[_0x8b57('0xb')](data));throw new Error(_0x8b57('0x4a')+JSON[_0x8b57('0xb')](data));})[_0x8b57('0x2b')](function(_0x8162b1){console['log'](_0x8b57('0x4b'),_0x8162b1);});}function getEndUser(_0x368e70,_0x5458ce,_0x4b2fc8,_0x13cce3,_0x4d0d9c,_0x3bca9c,_0x3eaa46){var _0x43c3b9={'method':_0x8b57('0x2f'),'uri':'','headers':{'Authorization':_0x8b57('0x4c')+_0x368e70},'json':!![]};switch(_0x3eaa46[_0x8b57('0x4d')]){case'contact_lead':_0x43c3b9[_0x8b57('0x4e')]=_0x8b57('0x41')+_0x5458ce+_0x8b57('0x4f')+_0x4d0d9c+'))';return getZohoUser(_0x43c3b9,'Contacts')[_0x8b57('0x3e')](function(_0x2a7ea2){if(_0x2a7ea2)return _0x2a7ea2;_0x43c3b9[_0x8b57('0x4e')]=_0x8b57('0x41')+_0x5458ce+_0x8b57('0x50')+_0x4d0d9c+'))';return getZohoUser(_0x43c3b9,'Leads')[_0x8b57('0x3e')](function(_0x284ada){if(_0x284ada)return _0x284ada;if(_0x3eaa46[_0x8b57('0x43')]!=_0x8b57('0x51')){return createEndUser(_0x368e70,_0x5458ce,_0x13cce3,_0x4d0d9c,_0x3bca9c,_0x3eaa46);}else{return{};}});});break;case'contact':_0x43c3b9[_0x8b57('0x4e')]=_0x8b57('0x41')+_0x5458ce+_0x8b57('0x4f')+_0x4d0d9c+'))';return getZohoUser(_0x43c3b9,_0x8b57('0x52'))['then'](function(_0x5040c7){if(_0x5040c7)return _0x5040c7;if(_0x3eaa46[_0x8b57('0x43')]!=_0x8b57('0x51')){return createEndUser(_0x368e70,_0x5458ce,_0x13cce3,_0x4d0d9c,_0x3bca9c,_0x3eaa46);}else{return{};}});break;case'lead':_0x43c3b9['uri']=_0x8b57('0x41')+_0x5458ce+'/crm/v2/Leads/search?criteria=((Phone:equals:'+_0x4d0d9c+'))';return getZohoUser(_0x43c3b9,_0x8b57('0x53'))[_0x8b57('0x3e')](function(_0x4ef0f4){if(_0x4ef0f4)return _0x4ef0f4;if(_0x3eaa46[_0x8b57('0x43')]!=_0x8b57('0x51')){return createEndUser(_0x368e70,_0x5458ce,_0x13cce3,_0x4d0d9c,_0x3bca9c,_0x3eaa46);}else{return{};}});break;}}function getCall(_0x3ca689,_0x176578,_0x4ec1a4,_0x5430c4,_0x3df107,_0x439ffd,_0x47e30f,_0x2c8f98){logger[_0x8b57('0x36')](_0x8b57('0x54'));var _0x2a0a56={};_0x2a0a56['Owner']={'name':!_[_0x8b57('0x1b')](_0x5430c4[_0x8b57('0x44')]['name'])&&!_[_0x8b57('0x1b')](_0x5430c4[_0x8b57('0x55')][_0x8b57('0x18')])&&_0x5430c4[_0x8b57('0x55')][_0x8b57('0x18')]==='administrator'?_0x5430c4[_0x8b57('0x44')]['name']:!_[_0x8b57('0x1b')](_0x5430c4[_0x8b57('0x45')])?_0x5430c4[_0x8b57('0x45')]+'\x20'+_0x5430c4[_0x8b57('0x46')]:_0x5430c4[_0x8b57('0x46')],'id':_0x5430c4['id']};_0x2a0a56[_0x8b57('0x56')]=intUtil[_0x8b57('0x57')](_0x439ffd[_0x8b57('0x58')],_0x47e30f,'\x20');_0x2a0a56[_0x8b57('0x59')]=intUtil[_0x8b57('0x57')](_0x439ffd[_0x8b57('0x5a')],_0x47e30f,'\x0a');if(_0x3df107['enduserType']===_0x8b57('0x52')){_0x2a0a56[_0x8b57('0x5b')]={'name':!_[_0x8b57('0x1b')](_0x3df107[_0x8b57('0x5c')])?_0x3df107[_0x8b57('0x5c')]:!_[_0x8b57('0x1b')](_0x3df107[_0x8b57('0x5d')])?_0x3df107[_0x8b57('0x5d')]+'\x20'+_0x3df107[_0x8b57('0x5e')]:_0x3df107[_0x8b57('0x5e')],'id':_0x3df107['id']};}if(_0x3df107[_0x8b57('0x40')]===_0x8b57('0x53')){_0x2a0a56[_0x8b57('0x5f')]={'name':!_[_0x8b57('0x1b')](_0x3df107['Full_Name'])?_0x3df107[_0x8b57('0x5c')]:!_[_0x8b57('0x1b')](_0x3df107[_0x8b57('0x5d')])?_0x3df107[_0x8b57('0x5d')]+'\x20'+_0x3df107[_0x8b57('0x5e')]:_0x3df107['Last_Name'],'id':_0x3df107['id']};_0x2a0a56[_0x8b57('0x60')]=_[_0x8b57('0x61')](_0x3df107[_0x8b57('0x40')]);}if(_0x47e30f[_0x8b57('0x62')]){_0x2a0a56[_0x8b57('0x63')]=moment[_0x8b57('0x64')](parseInt(_0x47e30f[_0x8b57('0x62')])*0x3e8)[_0x8b57('0x30')]('mm:ss');}else if(_0x47e30f['answertime']&&_0x47e30f['endtime']){_0x2a0a56[_0x8b57('0x63')]=moment[_0x8b57('0x64')](moment(_0x47e30f['endtime'],'YYYY-MM-DDTHH:mm:ss')[_0x8b57('0x65')](moment(_0x47e30f['starttime'],_0x8b57('0x66'))))[_0x8b57('0x30')](_0x8b57('0x67'));}switch(_0x47e30f['lastevent']){case _0x8b57('0x68'):_0x2a0a56[_0x8b57('0x69')]=_0x8b57('0x6a');break;case'complete':case'connect':_0x2a0a56[_0x8b57('0x69')]=_0x8b57('0x6b');break;case _0x8b57('0x6c'):_0x2a0a56[_0x8b57('0x69')]=_0x8b57('0x6d');break;case'abandoned':_0x2a0a56[_0x8b57('0x69')]=_0x8b57('0x6e');break;case _0x8b57('0x6f'):_0x2a0a56[_0x8b57('0x69')]=_0x8b57('0x70');default:}_0x2a0a56['Call_Start_Time']=(_0x2c8f98===_0x8b57('0x71')?moment(_0x47e30f[_0x8b57('0x72')])['format'](_0x8b57('0x66')):moment(_0x47e30f['agentcalledAt'])['format'](_0x8b57('0x66')))||moment()[_0x8b57('0x30')]('YYYY-MM-DDTHH:mm:ss');_0x2a0a56['Call_Type']=_0x2c8f98||_0x8b57('0x73');_0x2a0a56=_[_0x8b57('0x74')](_0x2a0a56,getCustomFields(_0x439ffd[_0x8b57('0x75')],_0x47e30f));return request({'method':_0x8b57('0x24'),'uri':_0x8b57('0x41')+_0x176578+_0x8b57('0x76'),'headers':{'Authorization':_0x8b57('0x4c')+_0x3ca689},'body':{'data':[_0x2a0a56]},'json':!![]})[_0x8b57('0x3e')](function(_0x56d8e0){if(_0x56d8e0&&_0x56d8e0['data'][0x0]['code']==='SUCCESS'){logger['info'](_0x8b57('0x77'));return{'id':_0x56d8e0['data'][0x0][_0x8b57('0x49')]['id']};}})[_0x8b57('0x2b')](function(_0x87d1ce){logger[_0x8b57('0x36')](_0x8b57('0x78'),_0x87d1ce[_0x8b57('0x2d')]);console[_0x8b57('0x79')](_0x8b57('0x78'),_0x87d1ce);});}exports[_0x8b57('0x7a')]=function(_0x50dd59,_0xe4eb22,_0x35e591,_0x3b046b,_0x3a0225,_0x5982a5){var _0x25e172,_0x49627c,_0x57271e;_0x5982a5['host']=intUtil[_0x8b57('0x7b')](_0x5982a5[_0x8b57('0x7c')]);_0x5982a5[_0x8b57('0x7d')]=intUtil[_0x8b57('0x7b')](_0x5982a5[_0x8b57('0x7d')]);if(_0x3a0225&&_0x3a0225[_0x8b57('0x7e')]){logger['info'](_0x8b57('0x7f'),_0x8b57('0x80'));_0xe4eb22[_0x8b57('0x81')]=_0x5982a5[_0x8b57('0x7d')]+'/api/voice/recordings/'+_0xe4eb22['uniqueid']+_0x8b57('0x82')+md5(_0xe4eb22['uniqueid']);}else{_0xe4eb22[_0x8b57('0x81')]='';}var _0x3faed6=_0x5982a5[_0x8b57('0x7c')]===_0x8b57('0x83')?'eu':_0x8b57('0x84');return getAccessToken(_0x5982a5)[_0x8b57('0x3e')](function(_0x451b32){_0x57271e=_0x451b32;return getUser(_0x57271e,_0x3faed6,_0x5982a5,_0x3b046b[_0x8b57('0x35')]);})[_0x8b57('0x3e')](function(_0x1004f3){_0x25e172=_0x1004f3;logger[_0x8b57('0x36')]('The\x20User\x20ID\x20is:',_0x25e172['id']);return getEndUser(_0x57271e,_0x3faed6,_0x5982a5,_0xe4eb22[_0x8b57('0x85')],_0xe4eb22[_0x8b57('0x86')],_0x25e172,_0x35e591);})[_0x8b57('0x3e')](function(_0x3ef1be){_0x49627c=_0x3ef1be;return getCall(_0x57271e,_0x3faed6,_0x5982a5,_0x25e172,_0x49627c,_0x35e591,_0xe4eb22,_0x8b57('0x73'));})[_0x8b57('0x3e')](function(_0x452c40){if(_0x452c40){logger[_0x8b57('0x36')](_0x8b57('0x87'),_0x452c40['id']);logger['info'](_0x8b57('0x7f'),'Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x8b57('0x30')]('user:%s',_0x3b046b['name']),_0x8b57('0x88'),{'uri':_0x8b57('0x89')+_0x5982a5[_0x8b57('0x7c')]+'/crm/EntityInfo.do?module=Calls&id='+_0x452c40['id']});}})['catch'](function(_0x2855c1){logger[_0x8b57('0x3b')](_0x8b57('0x7f'),JSON[_0x8b57('0xb')](_0x2855c1));});};exports[_0x8b57('0x71')]=function(_0x3915aa,_0x316d49,_0x188768,_0x2d8cfa,_0x4d3923,_0x25bf61,_0x5ffdde){var _0x22a61b,_0x3befff,_0x7aab23;_0x25bf61[_0x8b57('0x7c')]=intUtil[_0x8b57('0x7b')](_0x25bf61[_0x8b57('0x7c')]);_0x25bf61[_0x8b57('0x7d')]=intUtil['stripTrailingSlash'](_0x25bf61[_0x8b57('0x7d')]);if(_0x5ffdde&&_0x5ffdde['recordingFormat']&&_0x5ffdde[_0x8b57('0x8a')]!=='none'){logger[_0x8b57('0x36')](_0x8b57('0x8b'),_0x8b57('0x80'));_0x316d49[_0x8b57('0x81')]=_0x25bf61['serverUrl']+_0x8b57('0x8c')+_0x316d49[_0x8b57('0x8d')]+'/downloads?type=uniqueid&token='+md5(_0x316d49[_0x8b57('0x8d')]);}var _0x1483d5=_0x25bf61['host']===_0x8b57('0x83')?'eu':'com';return getAccessToken(_0x25bf61)[_0x8b57('0x3e')](function(_0x43f60c){_0x7aab23=_0x43f60c;return getUser(_0x7aab23,_0x1483d5,_0x25bf61,_0x2d8cfa[_0x8b57('0x35')]);})[_0x8b57('0x3e')](function(_0x333acc){_0x22a61b=_0x333acc;logger['info']('The\x20User\x20ID\x20is:',_0x22a61b['id']);return getEndUser(_0x7aab23,_0x1483d5,_0x25bf61,_0x316d49['destcalleridname'],_0x316d49[_0x8b57('0x8e')],_0x22a61b,_0x188768);})[_0x8b57('0x3e')](function(_0x1f2e9d){_0x3befff=_0x1f2e9d;return getCall(_0x7aab23,_0x1483d5,_0x25bf61,_0x22a61b,_0x3befff,_0x188768,_0x316d49,_0x8b57('0x8f'));})[_0x8b57('0x3e')](function(_0x2e591f){if(_0x2e591f){logger[_0x8b57('0x36')](_0x8b57('0x87'),_0x2e591f['id']);logger[_0x8b57('0x36')](_0x8b57('0x8b'),_0x8b57('0x90'));emit(util[_0x8b57('0x30')](_0x8b57('0x91'),_0x2d8cfa[_0x8b57('0x18')]),_0x8b57('0x88'),{'uri':_0x8b57('0x89')+_0x25bf61['host']+_0x8b57('0x92')+_0x2e591f['id']});}})[_0x8b57('0x2b')](function(_0x390d94){logger[_0x8b57('0x3b')]('[OUTBOUND]',JSON[_0x8b57('0xb')](_0x390d94));});};exports[_0x8b57('0x93')]=function(_0x19401a,_0x59d754,_0x5c07b5,_0x3fce90,_0x3234bc,_0x5f0aa1){var _0x45e3a0,_0x25c8f4,_0x1defe6;_0x5f0aa1[_0x8b57('0x7c')]=intUtil[_0x8b57('0x7b')](_0x5f0aa1[_0x8b57('0x7c')]);_0x5f0aa1['serverUrl']=intUtil[_0x8b57('0x7b')](_0x5f0aa1[_0x8b57('0x7d')]);if(_0x3234bc&&_0x3234bc[_0x8b57('0x7e')]){logger[_0x8b57('0x36')]('['+_0x59d754[_0x8b57('0x94')][_0x8b57('0x95')]()+']',_0x8b57('0x80'));_0x59d754['recordingURL']=_0x5f0aa1[_0x8b57('0x7d')]+_0x8b57('0x8c')+_0x59d754[_0x8b57('0x8d')]+_0x8b57('0x82')+md5(_0x59d754['uniqueid']);}else{_0x59d754[_0x8b57('0x81')]='';}var _0x494bfd=_0x5f0aa1[_0x8b57('0x7c')]===_0x8b57('0x83')?'eu':_0x8b57('0x84');return getAccessToken(_0x5f0aa1)[_0x8b57('0x3e')](function(_0x3ecd2d){_0x1defe6=_0x3ecd2d;return getUser(_0x1defe6,_0x494bfd,_0x5f0aa1);})[_0x8b57('0x3e')](function(_0x4f9f02){_0x45e3a0=_0x4f9f02;logger[_0x8b57('0x36')]('The\x20User\x20ID\x20is:',_0x45e3a0['id']);return getEndUser(_0x1defe6,_0x494bfd,_0x5f0aa1,_0x59d754['calleridname'],_0x59d754[_0x8b57('0x86')],_0x45e3a0,_0x5c07b5);})[_0x8b57('0x3e')](function(_0x717465){_0x25c8f4=_0x717465;return getCall(_0x1defe6,_0x494bfd,_0x5f0aa1,_0x45e3a0,_0x25c8f4,_0x5c07b5,_0x59d754,'Inbound');})['then'](function(_0x2d695c){if(_0x2d695c){logger[_0x8b57('0x36')](_0x8b57('0x87'),_0x2d695c['id']);}})[_0x8b57('0x2b')](function(_0x428a62){logger['error']('['+_0x59d754[_0x8b57('0x94')][_0x8b57('0x95')]()+']',JSON[_0x8b57('0xb')](_0x428a62));});};
\ No newline at end of file
index 4710305..8af8708 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec82=['%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','util','shelljs','mustache','../../../../config/logger','exec','data2','Script','render','error','format'];(function(_0x1e288b,_0x5ed08c){var _0x47a4c0=function(_0xfe838f){while(--_0xfe838f){_0x1e288b['push'](_0x1e288b['shift']());}};_0x47a4c0(++_0x5ed08c);}(_0xec82,0xce));var _0x2ec8=function(_0x12bffa,_0x550ab0){_0x12bffa=_0x12bffa-0x0;var _0x34032f=_0xec82[_0x12bffa];return _0x34032f;};'use strict';var util=require(_0x2ec8('0x0'));var sh=require(_0x2ec8('0x1'));var Mustache=require(_0x2ec8('0x2'));var logger=require(_0x2ec8('0x3'))('trigger');exports[_0x2ec8('0x4')]=function(_0x3050bb,_0x285989){var _0x292113=_0x3050bb['data2']?_0x3050bb[_0x2ec8('0x5')]:_0x2ec8('0x6');var _0x230c01=_0x3050bb['data3']?Mustache[_0x2ec8('0x7')](_0x3050bb['data3'],_0x285989):_0x285989;sh[_0x2ec8('0x4')](_0x230c01,function(_0x203efc,_0x1e6e6b,_0x14eb51){if(_0x203efc!==0x0){logger[_0x2ec8('0x8')](util[_0x2ec8('0x9')](_0x2ec8('0xa'),_0x292113,_0x230c01,_0x203efc,_0x14eb51));}else{logger[_0x2ec8('0xb')](util[_0x2ec8('0x9')]('%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s',_0x292113,_0x230c01,_0x1e6e6b));}});};
\ No newline at end of file
+var _0x4e8d=['data3','render','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','util','../../../../config/logger','exec','data2','Script'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x4e8d,0xc3));var _0xd4e8=function(_0x22e60f,_0x8bd946){_0x22e60f=_0x22e60f-0x0;var _0x4c87f3=_0x4e8d[_0x22e60f];return _0x4c87f3;};'use strict';var util=require(_0xd4e8('0x0'));var sh=require('shelljs');var Mustache=require('mustache');var logger=require(_0xd4e8('0x1'))('trigger');exports[_0xd4e8('0x2')]=function(_0x3c89b6,_0x11056d){var _0x12b30c=_0x3c89b6[_0xd4e8('0x3')]?_0x3c89b6[_0xd4e8('0x3')]:_0xd4e8('0x4');var _0x7a9e4=_0x3c89b6[_0xd4e8('0x5')]?Mustache[_0xd4e8('0x6')](_0x3c89b6[_0xd4e8('0x5')],_0x11056d):_0x11056d;sh['exec'](_0x7a9e4,function(_0x14e5de,_0x42f902,_0x493ff5){if(_0x14e5de!==0x0){logger['error'](util[_0xd4e8('0x7')](_0xd4e8('0x8'),_0x12b30c,_0x7a9e4,_0x14e5de,_0x493ff5));}else{logger[_0xd4e8('0x9')](util[_0xd4e8('0x7')]('%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s',_0x12b30c,_0x7a9e4,_0x42f902));}});};
\ No newline at end of file
index c0510aa..f54a9bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4953=['data6','error','stack','DELETE','POST','PUT','data7','parse','body','format','stringify','then','isNil',',\x20request\x20body:\x20','object','info','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','statusCode','name','message','request-promise','util','lodash','mustache','../../../../config/logger','trigger','exec','data1','toUpperCase','render','data2','data5','headers'];(function(_0x3c7e5e,_0x1e0698){var _0x9eef41=function(_0x594efd){while(--_0x594efd){_0x3c7e5e['push'](_0x3c7e5e['shift']());}};_0x9eef41(++_0x1e0698);}(_0x4953,0x98));var _0x3495=function(_0xcb5be4,_0x37a96f){_0xcb5be4=_0xcb5be4-0x0;var _0x21b73e=_0x4953[_0xcb5be4];return _0x21b73e;};'use strict';var rp=require(_0x3495('0x0'));var util=require(_0x3495('0x1'));var _=require(_0x3495('0x2'));var Mustache=require(_0x3495('0x3'));var logger=require(_0x3495('0x4'))(_0x3495('0x5'));exports[_0x3495('0x6')]=function(_0x103762,_0x4de34b){var _0x8da94c,_0x239fef;var _0x2143cf={'method':_0x103762[_0x3495('0x7')][_0x3495('0x8')](),'uri':Mustache[_0x3495('0x9')](_0x103762[_0x3495('0xa')],_0x4de34b),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x103762[_0x3495('0xb')])==='number'&&parseInt(_0x103762[_0x3495('0xb')])>=0x1&&parseInt(_0x103762[_0x3495('0xb')])<=0xa?parseInt(_0x103762[_0x3495('0xb')])*0x3e8:0x5*0x3e8};try{_0x2143cf[_0x3495('0xc')]=_0x103762[_0x3495('0xd')]?JSON['parse'](Mustache[_0x3495('0x9')](_0x103762['data6'],_0x4de34b)):{};}catch(_0x209dfd){logger[_0x3495('0xe')](_0x209dfd[_0x3495('0xf')]);}switch(_0x103762['data1'][_0x3495('0x8')]()){case'GET':case _0x3495('0x10'):_0x8da94c=null;_0x2143cf['qs']=_0x4de34b;break;case _0x3495('0x11'):case _0x3495('0x12'):if(_0x103762[_0x3495('0x13')]){try{_0x8da94c=JSON[_0x3495('0x14')](Mustache[_0x3495('0x9')](_0x103762[_0x3495('0x13')],_0x4de34b));_0x2143cf['body']=_0x8da94c;}catch(_0x3bde6a){logger[_0x3495('0xe')](_0x3bde6a[_0x3495('0xf')]);logger[_0x3495('0xe')]('body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format');}}else{_0x8da94c=_0x4de34b;_0x2143cf[_0x3495('0x15')]=_0x8da94c;}break;}logger['info'](util[_0x3495('0x16')]('%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s',_0x103762[_0x3495('0x7')],_0x103762[_0x3495('0xa')],JSON[_0x3495('0x17')](_0x2143cf)));rp(_0x2143cf)[_0x3495('0x18')](function(_0x494f7d){_0x8da94c=!_[_0x3495('0x19')](_0x8da94c)?_0x3495('0x1a')+_0x8da94c:'';_0x239fef=typeof _0x494f7d[_0x3495('0x15')]===_0x3495('0x1b')?JSON[_0x3495('0x17')](_0x494f7d['body']):_0x494f7d[_0x3495('0x15')];logger[_0x3495('0x1c')](util[_0x3495('0x16')](_0x3495('0x1d'),_0x103762[_0x3495('0x7')],_0x103762['data2'],_0x494f7d[_0x3495('0x1e')],_0x239fef));})['catch'](function(_0x295c00){logger[_0x3495('0xe')](util[_0x3495('0x16')]('%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s',_0x103762[_0x3495('0x7')],_0x103762[_0x3495('0xa')],_0x295c00['statusCode'],_0x295c00[_0x3495('0x1f')],_0x295c00[_0x3495('0x20')]));});};
\ No newline at end of file
+var _0x1355=['number','data5','data6','parse','error','stack','GET','DELETE','POST','data7','body','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','format','then','isNil',',\x20request\x20body:\x20','object','stringify','info','%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','data1','toUpperCase','render','data2'];(function(_0x263a74,_0xc31414){var _0x2aa86c=function(_0x382896){while(--_0x382896){_0x263a74['push'](_0x263a74['shift']());}};_0x2aa86c(++_0xc31414);}(_0x1355,0x14b));var _0x5135=function(_0x4c7d8b,_0x572388){_0x4c7d8b=_0x4c7d8b-0x0;var _0x187158=_0x1355[_0x4c7d8b];return _0x187158;};'use strict';var rp=require(_0x5135('0x0'));var util=require(_0x5135('0x1'));var _=require(_0x5135('0x2'));var Mustache=require(_0x5135('0x3'));var logger=require(_0x5135('0x4'))('trigger');exports['exec']=function(_0x56604a,_0x29123f){var _0x222486,_0x17ca08;var _0x33f4b7={'method':_0x56604a[_0x5135('0x5')][_0x5135('0x6')](),'uri':Mustache[_0x5135('0x7')](_0x56604a[_0x5135('0x8')],_0x29123f),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x56604a['data5'])===_0x5135('0x9')&&parseInt(_0x56604a[_0x5135('0xa')])>=0x1&&parseInt(_0x56604a[_0x5135('0xa')])<=0xa?parseInt(_0x56604a[_0x5135('0xa')])*0x3e8:0x5*0x3e8};try{_0x33f4b7['headers']=_0x56604a[_0x5135('0xb')]?JSON[_0x5135('0xc')](Mustache['render'](_0x56604a[_0x5135('0xb')],_0x29123f)):{};}catch(_0x19d601){logger[_0x5135('0xd')](_0x19d601[_0x5135('0xe')]);}switch(_0x56604a['data1'][_0x5135('0x6')]()){case _0x5135('0xf'):case _0x5135('0x10'):_0x222486=null;_0x33f4b7['qs']=_0x29123f;break;case _0x5135('0x11'):case'PUT':if(_0x56604a[_0x5135('0x12')]){try{_0x222486=JSON[_0x5135('0xc')](Mustache[_0x5135('0x7')](_0x56604a['data7'],_0x29123f));_0x33f4b7[_0x5135('0x13')]=_0x222486;}catch(_0x22accd){logger['error'](_0x22accd[_0x5135('0xe')]);logger[_0x5135('0xd')](_0x5135('0x14'));}}else{_0x222486=_0x29123f;_0x33f4b7[_0x5135('0x13')]=_0x222486;}break;}logger['info'](util[_0x5135('0x15')]('%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s',_0x56604a[_0x5135('0x5')],_0x56604a[_0x5135('0x8')],JSON['stringify'](_0x33f4b7)));rp(_0x33f4b7)[_0x5135('0x16')](function(_0x3b6f34){_0x222486=!_[_0x5135('0x17')](_0x222486)?_0x5135('0x18')+_0x222486:'';_0x17ca08=typeof _0x3b6f34['body']===_0x5135('0x19')?JSON[_0x5135('0x1a')](_0x3b6f34[_0x5135('0x13')]):_0x3b6f34[_0x5135('0x13')];logger[_0x5135('0x1b')](util[_0x5135('0x15')](_0x5135('0x1c'),_0x56604a[_0x5135('0x5')],_0x56604a[_0x5135('0x8')],_0x3b6f34[_0x5135('0x1d')],_0x17ca08));})[_0x5135('0x1e')](function(_0x5f49e3){logger[_0x5135('0xd')](util['format'](_0x5135('0x1f'),_0x56604a['data1'],_0x56604a[_0x5135('0x8')],_0x5f49e3[_0x5135('0x1d')],_0x5f49e3[_0x5135('0x20')],_0x5f49e3[_0x5135('0x21')]));});};
\ No newline at end of file
index 73ffaa1..f7ed32a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f4e=['error','message','result','exports','jayson/promise','../../config/logger','routing','client','http','Request','request','then','debug','rpc'];(function(_0x1bf860,_0x124062){var _0x21fedc=function(_0x411906){while(--_0x411906){_0x1bf860['push'](_0x1bf860['shift']());}};_0x21fedc(++_0x124062);}(_0x2f4e,0x1a8));var _0xe2f4=function(_0x1d5a88,_0x7bbb0a){_0x1d5a88=_0x1d5a88-0x0;var _0x2e84f3=_0x2f4e[_0x1d5a88];return _0x2e84f3;};'use strict';var jayson=require(_0xe2f4('0x0'));var BPromise=require('bluebird');var logger=require(_0xe2f4('0x1'))(_0xe2f4('0x2'));var client=jayson[_0xe2f4('0x3')][_0xe2f4('0x4')]({'port':0x2329});client[_0xe2f4('0x5')]=function(_0x2792ec,_0xccf1f6){return new BPromise(function(_0x1a11d8,_0x3bddf7){return client[_0xe2f4('0x6')](_0x2792ec,_0xccf1f6)[_0xe2f4('0x7')](function(_0x450f9c){logger[_0xe2f4('0x8')](_0xe2f4('0x9'),_0xe2f4('0x2'),_0x2792ec,_0xccf1f6,_0x450f9c);if(_0x450f9c[_0xe2f4('0xa')]){logger['error']('rpc','routing',_0x2792ec,_0x450f9c['error'][_0xe2f4('0xb')],_0xccf1f6);return _0x3bddf7(_0x450f9c[_0xe2f4('0xa')]['message']);}else{return _0x1a11d8(_0x450f9c[_0xe2f4('0xc')]);}})['catch'](function(_0x47131e){logger[_0xe2f4('0xa')](_0xe2f4('0x9'),'routing',_0x2792ec,_0x47131e,_0xccf1f6);return _0x3bddf7(_0x47131e);});});};module[_0xe2f4('0xd')]=client;
\ No newline at end of file
+var _0xc857=['jayson/promise','bluebird','routing','client','http','Request','request','then','debug','error','rpc','message','result','catch','exports'];(function(_0xb3c0fd,_0x43de0f){var _0x231781=function(_0x22d4d8){while(--_0x22d4d8){_0xb3c0fd['push'](_0xb3c0fd['shift']());}};_0x231781(++_0x43de0f);}(_0xc857,0x1d1));var _0x7c85=function(_0x359fd3,_0x4b0949){_0x359fd3=_0x359fd3-0x0;var _0x5b81e0=_0xc857[_0x359fd3];return _0x5b81e0;};'use strict';var jayson=require(_0x7c85('0x0'));var BPromise=require(_0x7c85('0x1'));var logger=require('../../config/logger')(_0x7c85('0x2'));var client=jayson[_0x7c85('0x3')][_0x7c85('0x4')]({'port':0x2329});client[_0x7c85('0x5')]=function(_0x4306f0,_0x40de04){return new BPromise(function(_0x4d778d,_0x16fde1){return client[_0x7c85('0x6')](_0x4306f0,_0x40de04)[_0x7c85('0x7')](function(_0x2b505d){logger[_0x7c85('0x8')]('rpc',_0x7c85('0x2'),_0x4306f0,_0x40de04,_0x2b505d);if(_0x2b505d['error']){logger[_0x7c85('0x9')](_0x7c85('0xa'),_0x7c85('0x2'),_0x4306f0,_0x2b505d[_0x7c85('0x9')]['message'],_0x40de04);return _0x16fde1(_0x2b505d['error'][_0x7c85('0xb')]);}else{return _0x4d778d(_0x2b505d[_0x7c85('0xc')]);}})[_0x7c85('0xd')](function(_0x48a1df){logger[_0x7c85('0x9')]('rpc',_0x7c85('0x2'),_0x4306f0,_0x48a1df,_0x40de04);return _0x16fde1(_0x48a1df);});});};module[_0x7c85('0xe')]=client;
\ No newline at end of file
index fee983a..7fc0876 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7605=['initMailAccounts','refresh','loginMailFrequency','catch','./server','./realtime','./lib/email','./rpc/setting','resolve','then'];(function(_0x24562e,_0x2cc8af){var _0xab78e2=function(_0x4454f5){while(--_0x4454f5){_0x24562e['push'](_0x24562e['shift']());}};_0xab78e2(++_0x2cc8af);}(_0x7605,0xc2));var _0x5760=function(_0x472935,_0x4c7fae){_0x472935=_0x472935-0x0;var _0x1de59d=_0x7605[_0x472935];return _0x1de59d;};'use strict';var BPromise=require('bluebird');var server=require(_0x5760('0x0'));var Realtime=require(_0x5760('0x1'));var EmailChannel=require(_0x5760('0x2'));var mailAccount=require('./rpc/mailAccount');var setting=require(_0x5760('0x3'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0x5760('0x4')]()[_0x5760('0x5')](mailAccount['getMailAccounts']())[_0x5760('0x5')](realtime[_0x5760('0x6')]())[_0x5760('0x5')](function(){email[_0x5760('0x7')](realtime['mailAccounts']);return realtime;});}function main(){return server['listen'](realtime,email)[_0x5760('0x5')](function(){return initRealtime();})[_0x5760('0x5')](function(){return setting['getSettings']();})['then'](function(_0x1acd66){return setInterval(initRealtime,_0x1acd66[_0x5760('0x8')]*0x3e8);})[_0x5760('0x9')](function(_0x4d70ab){console['log'](_0x4d70ab);});}main();
\ No newline at end of file
+var _0x8619=['listen','loginMailFrequency','catch','bluebird','./server','./realtime','./lib/email','./rpc/mailAccount','resolve','then','getMailAccounts','initMailAccounts','refresh','mailAccounts'];(function(_0xbd77c1,_0x50b969){var _0x47fa83=function(_0x38dac1){while(--_0x38dac1){_0xbd77c1['push'](_0xbd77c1['shift']());}};_0x47fa83(++_0x50b969);}(_0x8619,0x18b));var _0x9861=function(_0x40949a,_0x10a831){_0x40949a=_0x40949a-0x0;var _0x1d2d33=_0x8619[_0x40949a];return _0x1d2d33;};'use strict';var BPromise=require(_0x9861('0x0'));var server=require(_0x9861('0x1'));var Realtime=require(_0x9861('0x2'));var EmailChannel=require(_0x9861('0x3'));var mailAccount=require(_0x9861('0x4'));var setting=require('./rpc/setting');var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0x9861('0x5')]()[_0x9861('0x6')](mailAccount[_0x9861('0x7')]())[_0x9861('0x6')](realtime[_0x9861('0x8')]())[_0x9861('0x6')](function(){email[_0x9861('0x9')](realtime[_0x9861('0xa')]);return realtime;});}function main(){return server[_0x9861('0xb')](realtime,email)[_0x9861('0x6')](function(){return initRealtime();})[_0x9861('0x6')](function(){return setting['getSettings']();})[_0x9861('0x6')](function(_0x16f589){return setInterval(initRealtime,_0x16f589[_0x9861('0xc')]*0x3e8);})[_0x9861('0xd')](function(_0x4b965f){console['log'](_0x4b965f);});}main();
\ No newline at end of file
index a5caf9e..b41c81b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f6a=['emit','prototype','refresh','hasOwnProperty','email','box','handleImapEmail','bind','handleImapEnd','error','disabled','handleImapBox','messages','info','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','from','notify','then','lastSync','verifySmtp','Smtp','verify','verified','catch','exports','lodash','bluebird','md5','../../../config/logger','redis','defaults','localhost','socket.io-emitter','./imap','../rpc/mailAccount','start\x20email\x20channel','mailAccounts','imapAccounts','smtp','name','key','active','Imap','status','messageStatus','total','isNil','stringify'];(function(_0x386311,_0x2d6cb9){var _0x5b4878=function(_0xc46c30){while(--_0xc46c30){_0x386311['push'](_0x386311['shift']());}};_0x5b4878(++_0x2d6cb9);}(_0x3f6a,0x10f));var _0xa3f6=function(_0x4c389c,_0x20e533){_0x4c389c=_0x4c389c-0x0;var _0x375bd2=_0x3f6a[_0x4c389c];return _0x375bd2;};'use strict';var _=require(_0xa3f6('0x0'));var moment=require('moment');var BPromise=require(_0xa3f6('0x1'));var md5=require(_0xa3f6('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require(_0xa3f6('0x3'))('email');config[_0xa3f6('0x4')]=_[_0xa3f6('0x5')](config[_0xa3f6('0x4')],{'host':_0xa3f6('0x6'),'port':0x18eb});var io=require(_0xa3f6('0x7'))(new Redis(config[_0xa3f6('0x4')]));var EmailImap=require(_0xa3f6('0x8'));var EmailSmtp=require('./smtp');var mailAccount=require(_0xa3f6('0x9'));var md5Accounts={};function EmailChannel(_0x35f7c6){logger['info'](_0xa3f6('0xa'));this['mailAccounts']=_0x35f7c6[_0xa3f6('0xb')];this[_0xa3f6('0xc')]={};this[_0xa3f6('0xd')]=new EmailSmtp();}EmailChannel['prototype']['emit']=function(_0x4dd9f5){var _0x1dc6cc=this['mailAccounts'][_0x4dd9f5];var _0x413c8a={'id':_0x1dc6cc['id'],'name':_0x1dc6cc[_0xa3f6('0xe')],'key':_0x1dc6cc[_0xa3f6('0xf')],'active':_0x1dc6cc[_0xa3f6('0x10')],'Imap':{'status':_0x1dc6cc[_0xa3f6('0x11')][_0xa3f6('0x12')],'messageStatus':_0x1dc6cc['Imap'][_0xa3f6('0x13')],'total':_0x1dc6cc[_0xa3f6('0x11')][_0xa3f6('0x14')]}};if(_[_0xa3f6('0x15')](md5Accounts[_0x4dd9f5])){md5Accounts[_0x4dd9f5]={};}var _0x4ee438=md5(JSON[_0xa3f6('0x16')](_0x413c8a));if(md5Accounts[_0x4dd9f5][_0xa3f6('0x2')]!==_0x4ee438){md5Accounts[_0x4dd9f5][_0xa3f6('0x2')]=_0x4ee438;io[_0xa3f6('0x17')]('mailAccount:update',_0x413c8a);}};EmailChannel[_0xa3f6('0x18')][_0xa3f6('0x19')]=function(_0x567142){for(var _0x4771bc in _0x567142){if(_0x567142[_0xa3f6('0x1a')](_0x4771bc)){if(_0x567142[_0x4771bc][_0xa3f6('0x11')]&&_0x567142[_0x4771bc]['active']){var _0xb3bbb3=_0x567142[_0x4771bc][_0xa3f6('0x11')];if(!this[_0xa3f6('0xc')]['hasOwnProperty'](_0xb3bbb3['id'])){this['imapAccounts'][_0xb3bbb3['id']]=new EmailImap(_0xb3bbb3,_0x567142[_0x4771bc][_0xa3f6('0x1b')]);this[_0xa3f6('0xc')][_0xb3bbb3['id']]['on'](_0xa3f6('0x1c'),this['handleImapBox']['bind'](this,_0x4771bc));this[_0xa3f6('0xc')][_0xb3bbb3['id']]['on'](_0xa3f6('0x1b'),this[_0xa3f6('0x1d')][_0xa3f6('0x1e')](this,_0x4771bc));this[_0xa3f6('0xc')][_0xb3bbb3['id']]['on']('end',this[_0xa3f6('0x1f')]['bind'](this,_0x4771bc));this[_0xa3f6('0xc')][_0xb3bbb3['id']]['on'](_0xa3f6('0x20'),this['handleImapError'][_0xa3f6('0x1e')](this,_0x4771bc));}}else{if(_[_0xa3f6('0x15')](this[_0xa3f6('0xb')][_0x4771bc][_0xa3f6('0x11')])){this[_0xa3f6('0xb')][_0x4771bc][_0xa3f6('0x11')]={};}this[_0xa3f6('0xb')][_0x4771bc][_0xa3f6('0x11')]['status']=_0xa3f6('0x21');this[_0xa3f6('0xb')][_0x4771bc]['Imap'][_0xa3f6('0x13')]='';this[_0xa3f6('0x17')](_0x4771bc);}}}};EmailChannel[_0xa3f6('0x18')][_0xa3f6('0x22')]=function(_0x1743d9,_0x113034){if(this[_0xa3f6('0xb')][_0x1743d9]){this[_0xa3f6('0xb')][_0x1743d9][_0xa3f6('0x11')][_0xa3f6('0x12')]='connected';this[_0xa3f6('0xb')][_0x1743d9][_0xa3f6('0x11')][_0xa3f6('0x13')]=_0x113034[_0xa3f6('0xe')];if(_0x113034['messages']){this[_0xa3f6('0xb')][_0x1743d9][_0xa3f6('0x11')][_0xa3f6('0x14')]=_0x113034[_0xa3f6('0x23')]['total'];}return this[_0xa3f6('0x17')](_0x1743d9);}};EmailChannel[_0xa3f6('0x18')][_0xa3f6('0x1d')]=function(_0x26a621,_0x2c902a){logger[_0xa3f6('0x24')](_0xa3f6('0x25'),_0x2c902a[_0xa3f6('0x26')],_0x2c902a['lastName'],_0x2c902a[_0xa3f6('0x27')],_0x26a621);if(this['mailAccounts'][_0x26a621]){return mailAccount[_0xa3f6('0x28')](_0x26a621,_0x2c902a)[_0xa3f6('0x29')](function(_0x3e6372){if(_0x3e6372){logger[_0xa3f6('0x24')]('Mail\x20accepted\x20from\x20routing');}})['catch'](function(_0x3c9df6){logger[_0xa3f6('0x20')]('Mail\x20not\x20accepted\x20from\x20routing\x20%s',JSON['stringify'](_0x3c9df6));});}};EmailChannel[_0xa3f6('0x18')]['handleImapEnd']=function(_0x2b5146){if(this[_0xa3f6('0xb')][_0x2b5146]&&this[_0xa3f6('0xb')][_0x2b5146]['Imap']){if(this[_0xa3f6('0xc')][this[_0xa3f6('0xb')][_0x2b5146][_0xa3f6('0x11')]['id']]){delete this['imapAccounts'][this[_0xa3f6('0xb')][_0x2b5146][_0xa3f6('0x11')]['id']];}this['mailAccounts'][_0x2b5146]['Imap'][_0xa3f6('0x2a')]=moment();this[_0xa3f6('0x17')](_0x2b5146);}};EmailChannel[_0xa3f6('0x18')]['handleImapError']=function(_0x27705c,_0x1887c2){if(this[_0xa3f6('0xb')][_0x27705c]){this[_0xa3f6('0xb')][_0x27705c]['Imap'][_0xa3f6('0x12')]=_0xa3f6('0x20');this[_0xa3f6('0xb')][_0x27705c]['Imap'][_0xa3f6('0x13')]=_0x1887c2;return this[_0xa3f6('0x17')](_0x27705c);}};EmailChannel[_0xa3f6('0x18')]['sendMail']=function(_0x159800,_0x3648db){return this[_0xa3f6('0xd')]['send'](_0x159800,_0x3648db);};EmailChannel['prototype'][_0xa3f6('0x2b')]=function(_0x2ff41e){var _0x1ffe41=this;if(this['mailAccounts'][_0x2ff41e['id']]){if(_[_0xa3f6('0x15')](this[_0xa3f6('0xb')][_0x2ff41e['id']][_0xa3f6('0x2c')])){this['mailAccounts'][_0x2ff41e['id']][_0xa3f6('0x2c')]={};}this[_0xa3f6('0xb')][_0x2ff41e['id']][_0xa3f6('0x2c')][_0xa3f6('0x2a')]=moment();return new BPromise(function(_0x5bdf4c,_0x2e3d73){return _0x1ffe41[_0xa3f6('0xd')][_0xa3f6('0x2d')](_0x2ff41e)[_0xa3f6('0x29')](function(_0x1d662a){_0x1ffe41[_0xa3f6('0xb')][_0x2ff41e['id']][_0xa3f6('0x2c')][_0xa3f6('0x12')]=_0xa3f6('0x2e');_0x1ffe41[_0xa3f6('0xb')][_0x2ff41e['id']][_0xa3f6('0x2c')]['messageStatus']='';_0x1ffe41[_0xa3f6('0x17')](_0x2ff41e['id']);_0x5bdf4c(_0x1d662a);})[_0xa3f6('0x2f')](function(_0x4fb332){_0x1ffe41[_0xa3f6('0xb')][_0x2ff41e['id']][_0xa3f6('0x2c')][_0xa3f6('0x12')]=_0xa3f6('0x20');_0x1ffe41[_0xa3f6('0xb')][_0x2ff41e['id']][_0xa3f6('0x2c')][_0xa3f6('0x13')]=_0x4fb332;_0x1ffe41[_0xa3f6('0x17')](_0x2ff41e['id']);_0x2e3d73(_0x4fb332);});});}return this[_0xa3f6('0xd')][_0xa3f6('0x2d')](_0x2ff41e);};module[_0xa3f6('0x30')]=EmailChannel;
\ No newline at end of file
+var _0xc4d0=['hasOwnProperty','box','handleImapBox','bind','handleImapEmail','end','handleImapEnd','error','handleImapError','status','disabled','connected','name','messages','total','info','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','from','notify','then','Mail\x20accepted\x20from\x20routing','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','stringify','sendMail','verifySmtp','Smtp','verify','verified','exports','lodash','moment','md5','ioredis','../../../config/environment','../../../config/logger','email','redis','socket.io-emitter','./imap','./smtp','../rpc/mailAccount','start\x20email\x20channel','mailAccounts','imapAccounts','smtp','prototype','emit','active','Imap','messageStatus','isNil','mailAccount:update','refresh'];(function(_0x4e7a40,_0x4d764f){var _0x233ae9=function(_0x5b4c40){while(--_0x5b4c40){_0x4e7a40['push'](_0x4e7a40['shift']());}};_0x233ae9(++_0x4d764f);}(_0xc4d0,0x1a0));var _0x0c4d=function(_0xdf6837,_0x440887){_0xdf6837=_0xdf6837-0x0;var _0x254cfa=_0xc4d0[_0xdf6837];return _0x254cfa;};'use strict';var _=require(_0x0c4d('0x0'));var moment=require(_0x0c4d('0x1'));var BPromise=require('bluebird');var md5=require(_0x0c4d('0x2'));var Redis=require(_0x0c4d('0x3'));var config=require(_0x0c4d('0x4'));var logger=require(_0x0c4d('0x5'))(_0x0c4d('0x6'));config['redis']=_['defaults'](config[_0x0c4d('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x0c4d('0x8'))(new Redis(config[_0x0c4d('0x7')]));var EmailImap=require(_0x0c4d('0x9'));var EmailSmtp=require(_0x0c4d('0xa'));var mailAccount=require(_0x0c4d('0xb'));var md5Accounts={};function EmailChannel(_0x486989){logger['info'](_0x0c4d('0xc'));this[_0x0c4d('0xd')]=_0x486989[_0x0c4d('0xd')];this[_0x0c4d('0xe')]={};this[_0x0c4d('0xf')]=new EmailSmtp();}EmailChannel[_0x0c4d('0x10')][_0x0c4d('0x11')]=function(_0x248538){var _0x296501=this[_0x0c4d('0xd')][_0x248538];var _0x4f8c5b={'id':_0x296501['id'],'name':_0x296501['name'],'key':_0x296501['key'],'active':_0x296501[_0x0c4d('0x12')],'Imap':{'status':_0x296501[_0x0c4d('0x13')]['status'],'messageStatus':_0x296501[_0x0c4d('0x13')][_0x0c4d('0x14')],'total':_0x296501['Imap']['total']}};if(_[_0x0c4d('0x15')](md5Accounts[_0x248538])){md5Accounts[_0x248538]={};}var _0x559667=md5(JSON['stringify'](_0x4f8c5b));if(md5Accounts[_0x248538][_0x0c4d('0x2')]!==_0x559667){md5Accounts[_0x248538][_0x0c4d('0x2')]=_0x559667;io[_0x0c4d('0x11')](_0x0c4d('0x16'),_0x4f8c5b);}};EmailChannel[_0x0c4d('0x10')][_0x0c4d('0x17')]=function(_0x3841df){for(var _0x1937ad in _0x3841df){if(_0x3841df[_0x0c4d('0x18')](_0x1937ad)){if(_0x3841df[_0x1937ad][_0x0c4d('0x13')]&&_0x3841df[_0x1937ad][_0x0c4d('0x12')]){var _0x3c97ba=_0x3841df[_0x1937ad][_0x0c4d('0x13')];if(!this[_0x0c4d('0xe')][_0x0c4d('0x18')](_0x3c97ba['id'])){this[_0x0c4d('0xe')][_0x3c97ba['id']]=new EmailImap(_0x3c97ba,_0x3841df[_0x1937ad][_0x0c4d('0x6')]);this[_0x0c4d('0xe')][_0x3c97ba['id']]['on'](_0x0c4d('0x19'),this[_0x0c4d('0x1a')][_0x0c4d('0x1b')](this,_0x1937ad));this[_0x0c4d('0xe')][_0x3c97ba['id']]['on'](_0x0c4d('0x6'),this[_0x0c4d('0x1c')][_0x0c4d('0x1b')](this,_0x1937ad));this['imapAccounts'][_0x3c97ba['id']]['on'](_0x0c4d('0x1d'),this[_0x0c4d('0x1e')]['bind'](this,_0x1937ad));this[_0x0c4d('0xe')][_0x3c97ba['id']]['on'](_0x0c4d('0x1f'),this[_0x0c4d('0x20')][_0x0c4d('0x1b')](this,_0x1937ad));}}else{if(_[_0x0c4d('0x15')](this[_0x0c4d('0xd')][_0x1937ad][_0x0c4d('0x13')])){this[_0x0c4d('0xd')][_0x1937ad]['Imap']={};}this[_0x0c4d('0xd')][_0x1937ad][_0x0c4d('0x13')][_0x0c4d('0x21')]=_0x0c4d('0x22');this[_0x0c4d('0xd')][_0x1937ad]['Imap'][_0x0c4d('0x14')]='';this[_0x0c4d('0x11')](_0x1937ad);}}}};EmailChannel['prototype'][_0x0c4d('0x1a')]=function(_0x28c590,_0xb47a5a){if(this[_0x0c4d('0xd')][_0x28c590]){this[_0x0c4d('0xd')][_0x28c590][_0x0c4d('0x13')][_0x0c4d('0x21')]=_0x0c4d('0x23');this[_0x0c4d('0xd')][_0x28c590][_0x0c4d('0x13')][_0x0c4d('0x14')]=_0xb47a5a[_0x0c4d('0x24')];if(_0xb47a5a[_0x0c4d('0x25')]){this[_0x0c4d('0xd')][_0x28c590]['Imap'][_0x0c4d('0x26')]=_0xb47a5a[_0x0c4d('0x25')][_0x0c4d('0x26')];}return this[_0x0c4d('0x11')](_0x28c590);}};EmailChannel['prototype'][_0x0c4d('0x1c')]=function(_0x4698a4,_0x6a00c2){logger[_0x0c4d('0x27')](_0x0c4d('0x28'),_0x6a00c2[_0x0c4d('0x29')],_0x6a00c2['lastName'],_0x6a00c2[_0x0c4d('0x2a')],_0x4698a4);if(this[_0x0c4d('0xd')][_0x4698a4]){return mailAccount[_0x0c4d('0x2b')](_0x4698a4,_0x6a00c2)[_0x0c4d('0x2c')](function(_0x75c574){if(_0x75c574){logger[_0x0c4d('0x27')](_0x0c4d('0x2d'));}})[_0x0c4d('0x2e')](function(_0x2e8d7d){logger[_0x0c4d('0x1f')](_0x0c4d('0x2f'),JSON[_0x0c4d('0x30')](_0x2e8d7d));});}};EmailChannel[_0x0c4d('0x10')][_0x0c4d('0x1e')]=function(_0x6aae4e){if(this[_0x0c4d('0xd')][_0x6aae4e]&&this[_0x0c4d('0xd')][_0x6aae4e]['Imap']){if(this[_0x0c4d('0xe')][this[_0x0c4d('0xd')][_0x6aae4e][_0x0c4d('0x13')]['id']]){delete this[_0x0c4d('0xe')][this['mailAccounts'][_0x6aae4e][_0x0c4d('0x13')]['id']];}this[_0x0c4d('0xd')][_0x6aae4e][_0x0c4d('0x13')]['lastSync']=moment();this['emit'](_0x6aae4e);}};EmailChannel[_0x0c4d('0x10')][_0x0c4d('0x20')]=function(_0x4c55f4,_0x5646c4){if(this[_0x0c4d('0xd')][_0x4c55f4]){this[_0x0c4d('0xd')][_0x4c55f4][_0x0c4d('0x13')]['status']=_0x0c4d('0x1f');this['mailAccounts'][_0x4c55f4][_0x0c4d('0x13')][_0x0c4d('0x14')]=_0x5646c4;return this[_0x0c4d('0x11')](_0x4c55f4);}};EmailChannel[_0x0c4d('0x10')][_0x0c4d('0x31')]=function(_0x465872,_0x3c11a0){return this['smtp']['send'](_0x465872,_0x3c11a0);};EmailChannel['prototype'][_0x0c4d('0x32')]=function(_0x442d89){var _0x348b8b=this;if(this[_0x0c4d('0xd')][_0x442d89['id']]){if(_['isNil'](this[_0x0c4d('0xd')][_0x442d89['id']][_0x0c4d('0x33')])){this[_0x0c4d('0xd')][_0x442d89['id']]['Smtp']={};}this[_0x0c4d('0xd')][_0x442d89['id']]['Smtp']['lastSync']=moment();return new BPromise(function(_0xa04d33,_0x237a6e){return _0x348b8b[_0x0c4d('0xf')][_0x0c4d('0x34')](_0x442d89)[_0x0c4d('0x2c')](function(_0x5683d4){_0x348b8b['mailAccounts'][_0x442d89['id']][_0x0c4d('0x33')][_0x0c4d('0x21')]=_0x0c4d('0x35');_0x348b8b['mailAccounts'][_0x442d89['id']][_0x0c4d('0x33')][_0x0c4d('0x14')]='';_0x348b8b[_0x0c4d('0x11')](_0x442d89['id']);_0xa04d33(_0x5683d4);})[_0x0c4d('0x2e')](function(_0x3befe4){_0x348b8b['mailAccounts'][_0x442d89['id']]['Smtp']['status']=_0x0c4d('0x1f');_0x348b8b[_0x0c4d('0xd')][_0x442d89['id']][_0x0c4d('0x33')][_0x0c4d('0x14')]=_0x3befe4;_0x348b8b[_0x0c4d('0x11')](_0x442d89['id']);_0x237a6e(_0x3befe4);});});}return this['smtp'][_0x0c4d('0x34')](_0x442d89);};module[_0x0c4d('0x36')]=EmailChannel;
\ No newline at end of file
index feb3b78..bc872ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c33=['autotls','required','email','handleReady','handleOpenBox','emit','box','readUnseen','handleCloseBox','handleReadUnseen','message','handleFetchMessage','error','handleFetchError','end','handleFetchEnd','closeBox','body','handleMessageBody','attributes','handleSimpleParser','handleMessageAttributes','handleMessageEnd','parser','stringify','textCode','hasOwnProperty','upperFirst','exports','path','imap','lodash','randomstring','mailparser','iconv','Iconv','events','../../../config/logger','mailbox','INBOX','account','getAccount','once','ready','bind','handleEnd','handleError','inherits','prototype','connTimeout','authTimeout','isNil','service','authentication','user','password','host','port','tls'];(function(_0x5a27e8,_0x492a2f){var _0x4e38f7=function(_0x2a4048){while(--_0x2a4048){_0x5a27e8['push'](_0x5a27e8['shift']());}};_0x4e38f7(++_0x492a2f);}(_0x4c33,0x93));var _0x34c3=function(_0x3c394c,_0x261b54){_0x3c394c=_0x3c394c-0x0;var _0x28d1fd=_0x4c33[_0x3c394c];return _0x28d1fd;};'use strict';var fs=require('fs');var path=require(_0x34c3('0x0'));var util=require('util');var Imap=require(_0x34c3('0x1'));var _=require(_0x34c3('0x2'));var rs=require(_0x34c3('0x3'));var simpleParser=require(_0x34c3('0x4'))['simpleParser'];var Iconv=require(_0x34c3('0x5'))[_0x34c3('0x6')];var EventEmitter=require(_0x34c3('0x7'))['EventEmitter'];var utils=require('./utils');var logger=require(_0x34c3('0x8'))('email');function EmailImap(_0x2b6638,_0x162211){this[_0x34c3('0x9')]=_0x34c3('0xa');this[_0x34c3('0xb')]=this[_0x34c3('0xc')](_0x2b6638,_0x162211);this[_0x34c3('0x1')]=new Imap(this[_0x34c3('0xb')]);this[_0x34c3('0x1')][_0x34c3('0xd')](_0x34c3('0xe'),this['handleReady'][_0x34c3('0xf')](this));this[_0x34c3('0x1')]['once']('end',this[_0x34c3('0x10')][_0x34c3('0xf')](this));this[_0x34c3('0x1')]['on']('error',this[_0x34c3('0x11')][_0x34c3('0xf')](this));this[_0x34c3('0x1')]['connect']();}util[_0x34c3('0x12')](EmailImap,EventEmitter);EmailImap[_0x34c3('0x13')][_0x34c3('0xc')]=function(_0x398359,_0x5dc454){var _0x4c95e8={'connTimeout':_0x398359[_0x34c3('0x14')]?_0x398359[_0x34c3('0x14')]*0x3e8:0x2710,'authTimeout':_0x398359[_0x34c3('0x15')]?_0x398359[_0x34c3('0x15')]*0x3e8:0x1388};if(_[_0x34c3('0x16')](_0x398359[_0x34c3('0x17')])){if(_0x398359[_0x34c3('0x18')]){_0x4c95e8[_0x34c3('0x19')]=_0x398359[_0x34c3('0x19')];_0x4c95e8[_0x34c3('0x1a')]=_0x398359[_0x34c3('0x1a')];}_0x4c95e8['host']=_0x398359[_0x34c3('0x1b')];_0x4c95e8[_0x34c3('0x1c')]=_0x398359[_0x34c3('0x1c')]||0x3e1;if(_0x398359[_0x34c3('0x1d')]){_0x4c95e8[_0x34c3('0x1d')]=!![];}else{_0x4c95e8[_0x34c3('0x1d')]=![];_0x4c95e8[_0x34c3('0x1e')]=_0x34c3('0x1f');}}else{_0x4c95e8[_0x34c3('0x19')]=_0x398359['user'];_0x4c95e8[_0x34c3('0x1a')]=_0x398359[_0x34c3('0x1a')];_0x4c95e8[_0x34c3('0x1b')]=utils['getHost'](_0x398359[_0x34c3('0x17')]);_0x4c95e8[_0x34c3('0x1c')]=0x3e1;_0x4c95e8['tls']=!![];}_0x4c95e8[_0x34c3('0x20')]=_0x5dc454||_0x398359['user']||'anonymous@xcally.com';return _0x4c95e8;};EmailImap['prototype'][_0x34c3('0x21')]=function(){this[_0x34c3('0x1')]['openBox'](this[_0x34c3('0x9')],![],this['handleOpenBox'][_0x34c3('0xf')](this));};EmailImap[_0x34c3('0x13')][_0x34c3('0x22')]=function(_0x35a045,_0x3759f8){if(_0x35a045){this[_0x34c3('0x11')](_0x35a045,!![]);}else{this[_0x34c3('0x23')](_0x34c3('0x24'),_0x3759f8);this[_0x34c3('0x25')]();}};EmailImap['prototype'][_0x34c3('0x26')]=function(_0x591091){if(_0x591091){this['handleError'](_0x591091,!![]);}else{this[_0x34c3('0x1')]['end']();}};EmailImap[_0x34c3('0x13')][_0x34c3('0x25')]=function(){this[_0x34c3('0x1')]['search'](['UNSEEN'],this[_0x34c3('0x27')][_0x34c3('0xf')](this));};EmailImap[_0x34c3('0x13')][_0x34c3('0x27')]=function(_0x1a1812,_0x274b0e){if(_0x1a1812){this[_0x34c3('0x11')](_0x1a1812,!![]);}else{if(_0x274b0e['length']){try{var _0x45a7d9=this[_0x34c3('0x1')]['fetch'](_0x274b0e,{'bodies':'','markSeen':!![]});_0x45a7d9['on'](_0x34c3('0x28'),this[_0x34c3('0x29')][_0x34c3('0xf')](this));_0x45a7d9[_0x34c3('0xd')](_0x34c3('0x2a'),this[_0x34c3('0x2b')]['bind'](this));_0x45a7d9['once'](_0x34c3('0x2c'),this[_0x34c3('0x2d')][_0x34c3('0xf')](this));}catch(_0x28c6c2){logger['error'](_0x28c6c2);}}else{this[_0x34c3('0x1')][_0x34c3('0x2e')](!![],this[_0x34c3('0x26')][_0x34c3('0xf')](this));}}};EmailImap[_0x34c3('0x13')]['handleFetchMessage']=function(_0xb650ee,_0x30a563){_0xb650ee['on'](_0x34c3('0x2f'),this[_0x34c3('0x30')]['bind'](this));_0xb650ee[_0x34c3('0xd')](_0x34c3('0x31'),this['handleMessageAttributes']['bind'](this));_0xb650ee['once']('end',this['handleMessageEnd'][_0x34c3('0xf')](this));};EmailImap[_0x34c3('0x13')][_0x34c3('0x30')]=function(_0x45a410,_0x1d8208){simpleParser(_0x45a410,{'Iconv':Iconv},this[_0x34c3('0x32')][_0x34c3('0xf')](this));};EmailImap[_0x34c3('0x13')][_0x34c3('0x33')]=function(_0xfdfda7){};EmailImap[_0x34c3('0x13')][_0x34c3('0x34')]=function(){};EmailImap[_0x34c3('0x13')][_0x34c3('0x32')]=function(_0x521925,_0x1f352c){if(_0x521925){logger[_0x34c3('0x2a')](_0x521925);}else{var _0x5a7887=this;utils[_0x34c3('0x35')](this[_0x34c3('0xb')],_0x1f352c,function(_0x4fbdb8){_0x5a7887['emit'](_0x34c3('0x20'),_0x4fbdb8);});}};EmailImap['prototype'][_0x34c3('0x2d')]=function(){this['imap'][_0x34c3('0x2e')](!![],this[_0x34c3('0x26')][_0x34c3('0xf')](this));};EmailImap[_0x34c3('0x13')]['handleFetchError']=function(_0x2159f8){this[_0x34c3('0x11')](_0x2159f8);this[_0x34c3('0x1')][_0x34c3('0x2e')](!![],this['handleCloseBox'][_0x34c3('0xf')](this));};EmailImap[_0x34c3('0x13')][_0x34c3('0x10')]=function(){this[_0x34c3('0x23')](_0x34c3('0x2c'));};EmailImap[_0x34c3('0x13')][_0x34c3('0x11')]=function(_0x1ecefc,_0x4a532b){logger['error'](_0x34c3('0x11'),this['account'][_0x34c3('0x20')],JSON[_0x34c3('0x36')](_0x1ecefc));var _0x11dc0c='';if(_0x1ecefc){if(_0x1ecefc[_0x34c3('0x37')]){_0x11dc0c=_0x1ecefc[_0x34c3('0x37')];}else{for(var _0x2c648e in _0x1ecefc){if(_0x1ecefc[_0x34c3('0x38')](_0x2c648e)){_0x11dc0c+=_[_0x34c3('0x39')](_0x2c648e)+':\x20'+_0x1ecefc[_0x2c648e]+'\x0a';}}}}if(_0x4a532b){this[_0x34c3('0x1')][_0x34c3('0x2c')]();}else{this['emit'](_0x34c3('0x2a'),_0x11dc0c);this[_0x34c3('0x23')]('end');}};module[_0x34c3('0x3a')]=EmailImap;
\ No newline at end of file
+var _0x35ca=['handleError','prototype','connTimeout','authTimeout','isNil','service','authentication','user','password','host','port','tls','required','getHost','handleOpenBox','emit','box','readUnseen','handleCloseBox','UNSEEN','handleReadUnseen','length','fetch','handleFetchMessage','handleFetchError','handleFetchEnd','body','attributes','handleMessageAttributes','handleMessageBody','handleSimpleParser','handleMessageEnd','parser','closeBox','textCode','hasOwnProperty','upperFirst','exports','path','util','imap','lodash','simpleParser','events','./utils','../../../config/logger','email','mailbox','getAccount','account','once','ready','handleReady','bind','end','handleEnd','error'];(function(_0x572944,_0xd5c0df){var _0x2f457a=function(_0x5ba3bf){while(--_0x5ba3bf){_0x572944['push'](_0x572944['shift']());}};_0x2f457a(++_0xd5c0df);}(_0x35ca,0x10a));var _0xa35c=function(_0x4b1554,_0x1f2dd5){_0x4b1554=_0x4b1554-0x0;var _0x5565cf=_0x35ca[_0x4b1554];return _0x5565cf;};'use strict';var fs=require('fs');var path=require(_0xa35c('0x0'));var util=require(_0xa35c('0x1'));var Imap=require(_0xa35c('0x2'));var _=require(_0xa35c('0x3'));var rs=require('randomstring');var simpleParser=require('mailparser')[_0xa35c('0x4')];var Iconv=require('iconv')['Iconv'];var EventEmitter=require(_0xa35c('0x5'))['EventEmitter'];var utils=require(_0xa35c('0x6'));var logger=require(_0xa35c('0x7'))(_0xa35c('0x8'));function EmailImap(_0x474d4b,_0x5cdceb){this[_0xa35c('0x9')]='INBOX';this['account']=this[_0xa35c('0xa')](_0x474d4b,_0x5cdceb);this[_0xa35c('0x2')]=new Imap(this[_0xa35c('0xb')]);this[_0xa35c('0x2')][_0xa35c('0xc')](_0xa35c('0xd'),this[_0xa35c('0xe')][_0xa35c('0xf')](this));this[_0xa35c('0x2')][_0xa35c('0xc')](_0xa35c('0x10'),this[_0xa35c('0x11')][_0xa35c('0xf')](this));this['imap']['on'](_0xa35c('0x12'),this[_0xa35c('0x13')]['bind'](this));this[_0xa35c('0x2')]['connect']();}util['inherits'](EmailImap,EventEmitter);EmailImap[_0xa35c('0x14')][_0xa35c('0xa')]=function(_0x4bac85,_0x4dec20){var _0x3443de={'connTimeout':_0x4bac85['connTimeout']?_0x4bac85[_0xa35c('0x15')]*0x3e8:0x2710,'authTimeout':_0x4bac85[_0xa35c('0x16')]?_0x4bac85[_0xa35c('0x16')]*0x3e8:0x1388};if(_[_0xa35c('0x17')](_0x4bac85[_0xa35c('0x18')])){if(_0x4bac85[_0xa35c('0x19')]){_0x3443de[_0xa35c('0x1a')]=_0x4bac85[_0xa35c('0x1a')];_0x3443de['password']=_0x4bac85[_0xa35c('0x1b')];}_0x3443de[_0xa35c('0x1c')]=_0x4bac85[_0xa35c('0x1c')];_0x3443de['port']=_0x4bac85[_0xa35c('0x1d')]||0x3e1;if(_0x4bac85['tls']){_0x3443de[_0xa35c('0x1e')]=!![];}else{_0x3443de[_0xa35c('0x1e')]=![];_0x3443de['autotls']=_0xa35c('0x1f');}}else{_0x3443de[_0xa35c('0x1a')]=_0x4bac85[_0xa35c('0x1a')];_0x3443de[_0xa35c('0x1b')]=_0x4bac85[_0xa35c('0x1b')];_0x3443de['host']=utils[_0xa35c('0x20')](_0x4bac85['service']);_0x3443de[_0xa35c('0x1d')]=0x3e1;_0x3443de[_0xa35c('0x1e')]=!![];}_0x3443de[_0xa35c('0x8')]=_0x4dec20||_0x4bac85[_0xa35c('0x1a')]||'anonymous@xcally.com';return _0x3443de;};EmailImap[_0xa35c('0x14')][_0xa35c('0xe')]=function(){this[_0xa35c('0x2')]['openBox'](this[_0xa35c('0x9')],![],this['handleOpenBox']['bind'](this));};EmailImap['prototype'][_0xa35c('0x21')]=function(_0x3c0623,_0x59542e){if(_0x3c0623){this[_0xa35c('0x13')](_0x3c0623,!![]);}else{this[_0xa35c('0x22')](_0xa35c('0x23'),_0x59542e);this[_0xa35c('0x24')]();}};EmailImap[_0xa35c('0x14')][_0xa35c('0x25')]=function(_0x19c94e){if(_0x19c94e){this[_0xa35c('0x13')](_0x19c94e,!![]);}else{this[_0xa35c('0x2')][_0xa35c('0x10')]();}};EmailImap[_0xa35c('0x14')][_0xa35c('0x24')]=function(){this[_0xa35c('0x2')]['search']([_0xa35c('0x26')],this[_0xa35c('0x27')]['bind'](this));};EmailImap[_0xa35c('0x14')][_0xa35c('0x27')]=function(_0x220f8f,_0x500715){if(_0x220f8f){this[_0xa35c('0x13')](_0x220f8f,!![]);}else{if(_0x500715[_0xa35c('0x28')]){try{var _0x3456af=this[_0xa35c('0x2')][_0xa35c('0x29')](_0x500715,{'bodies':'','markSeen':!![]});_0x3456af['on']('message',this[_0xa35c('0x2a')][_0xa35c('0xf')](this));_0x3456af[_0xa35c('0xc')](_0xa35c('0x12'),this[_0xa35c('0x2b')]['bind'](this));_0x3456af['once'](_0xa35c('0x10'),this[_0xa35c('0x2c')]['bind'](this));}catch(_0x55c553){logger[_0xa35c('0x12')](_0x55c553);}}else{this[_0xa35c('0x2')]['closeBox'](!![],this[_0xa35c('0x25')][_0xa35c('0xf')](this));}}};EmailImap[_0xa35c('0x14')][_0xa35c('0x2a')]=function(_0x5d9e49,_0x404109){_0x5d9e49['on'](_0xa35c('0x2d'),this['handleMessageBody']['bind'](this));_0x5d9e49['once'](_0xa35c('0x2e'),this[_0xa35c('0x2f')][_0xa35c('0xf')](this));_0x5d9e49[_0xa35c('0xc')](_0xa35c('0x10'),this['handleMessageEnd'][_0xa35c('0xf')](this));};EmailImap['prototype'][_0xa35c('0x30')]=function(_0x10a235,_0x5974e3){simpleParser(_0x10a235,{'Iconv':Iconv},this[_0xa35c('0x31')][_0xa35c('0xf')](this));};EmailImap[_0xa35c('0x14')]['handleMessageAttributes']=function(_0x3561c0){};EmailImap[_0xa35c('0x14')][_0xa35c('0x32')]=function(){};EmailImap['prototype']['handleSimpleParser']=function(_0xd1bb2c,_0x478bf0){if(_0xd1bb2c){logger['error'](_0xd1bb2c);}else{var _0x69a156=this;utils[_0xa35c('0x33')](this['account'],_0x478bf0,function(_0x1e54c1){_0x69a156[_0xa35c('0x22')](_0xa35c('0x8'),_0x1e54c1);});}};EmailImap[_0xa35c('0x14')]['handleFetchEnd']=function(){this[_0xa35c('0x2')][_0xa35c('0x34')](!![],this['handleCloseBox'][_0xa35c('0xf')](this));};EmailImap[_0xa35c('0x14')]['handleFetchError']=function(_0x801d2d){this[_0xa35c('0x13')](_0x801d2d);this[_0xa35c('0x2')][_0xa35c('0x34')](!![],this[_0xa35c('0x25')]['bind'](this));};EmailImap[_0xa35c('0x14')]['handleEnd']=function(){this['emit'](_0xa35c('0x10'));};EmailImap[_0xa35c('0x14')][_0xa35c('0x13')]=function(_0x2e7f4e,_0x241a5c){logger['error'](_0xa35c('0x13'),this[_0xa35c('0xb')][_0xa35c('0x8')],JSON['stringify'](_0x2e7f4e));var _0x4e669c='';if(_0x2e7f4e){if(_0x2e7f4e['textCode']){_0x4e669c=_0x2e7f4e[_0xa35c('0x35')];}else{for(var _0x122769 in _0x2e7f4e){if(_0x2e7f4e[_0xa35c('0x36')](_0x122769)){_0x4e669c+=_[_0xa35c('0x37')](_0x122769)+':\x20'+_0x2e7f4e[_0x122769]+'\x0a';}}}}if(_0x241a5c){this[_0xa35c('0x2')][_0xa35c('0x10')]();}else{this[_0xa35c('0x22')](_0xa35c('0x12'),_0x4e669c);this[_0xa35c('0x22')](_0xa35c('0x10'));}};module[_0xa35c('0x38')]=EmailImap;
\ No newline at end of file
index aa0d0a9..8cd981e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8925=['createTransport','verify','Not\x20verifired','exports','nodemailer','bluebird','nodemailer-plugin-inline-base64','send','use','compile','sendMail','toString'];(function(_0x583b56,_0x192c84){var _0x11ed7a=function(_0x3d1768){while(--_0x3d1768){_0x583b56['push'](_0x583b56['shift']());}};_0x11ed7a(++_0x192c84);}(_0x8925,0x154));var _0x5892=function(_0xe9f4a2,_0x50f0c4){_0xe9f4a2=_0xe9f4a2-0x0;var _0x25e066=_0x8925[_0xe9f4a2];return _0x25e066;};'use strict';var nodemailer=require(_0x5892('0x0'));var BPromise=require(_0x5892('0x1'));var inlineBase64=require(_0x5892('0x2'));function EmailSmtp(){}EmailSmtp['prototype'][_0x5892('0x3')]=function(_0x29277f,_0x1f8b32){return new BPromise(function(_0x313301,_0x26b682){var _0x5eaf61=nodemailer['createTransport'](_0x29277f);_0x5eaf61[_0x5892('0x4')](_0x5892('0x5'),inlineBase64());_0x5eaf61[_0x5892('0x6')](_0x1f8b32,function(_0x53046a,_0x420d65){if(_0x53046a){_0x26b682(_0x53046a[_0x5892('0x7')]());}else{_0x313301(_0x420d65);}});});};EmailSmtp['prototype']['verify']=function(_0x1d48e9){return new BPromise(function(_0x52f206,_0x3089ff){var _0x5071fc=nodemailer[_0x5892('0x8')](_0x1d48e9);_0x5071fc[_0x5892('0x9')](function(_0x4acc9b,_0x151b18){if(_0x4acc9b){_0x3089ff(_0x4acc9b[_0x5892('0x7')]());}else{if(_0x151b18){_0x52f206(_0x151b18);}else{_0x3089ff(_0x5892('0xa'));}}});});};module[_0x5892('0xb')]=EmailSmtp;
\ No newline at end of file
+var _0x7cc0=['nodemailer','bluebird','nodemailer-plugin-inline-base64','prototype','send','createTransport','use','toString','verify','Not\x20verifired'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x7cc0,0x96));var _0x07cc=function(_0x1d8d36,_0x117947){_0x1d8d36=_0x1d8d36-0x0;var _0x4c29d0=_0x7cc0[_0x1d8d36];return _0x4c29d0;};'use strict';var nodemailer=require(_0x07cc('0x0'));var BPromise=require(_0x07cc('0x1'));var inlineBase64=require(_0x07cc('0x2'));function EmailSmtp(){}EmailSmtp[_0x07cc('0x3')][_0x07cc('0x4')]=function(_0x2a9430,_0x914198){return new BPromise(function(_0x29f91a,_0x5dd407){var _0x5d9627=nodemailer[_0x07cc('0x5')](_0x2a9430);_0x5d9627[_0x07cc('0x6')]('compile',inlineBase64());_0x5d9627['sendMail'](_0x914198,function(_0x328f3b,_0x1a3c66){if(_0x328f3b){_0x5dd407(_0x328f3b[_0x07cc('0x7')]());}else{_0x29f91a(_0x1a3c66);}});});};EmailSmtp[_0x07cc('0x3')][_0x07cc('0x8')]=function(_0x1dd2cb){return new BPromise(function(_0x55f728,_0x44d7ca){var _0x46f026=nodemailer[_0x07cc('0x5')](_0x1dd2cb);_0x46f026[_0x07cc('0x8')](function(_0x4f131c,_0x413cff){if(_0x4f131c){_0x44d7ca(_0x4f131c[_0x07cc('0x7')]());}else{if(_0x413cff){_0x55f728(_0x413cff);}else{_0x44d7ca(_0x07cc('0x9'));}}});});};module['exports']=EmailSmtp;
\ No newline at end of file
index 658a8cf..b1aa746 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xceef=['line','isAutoreply','from','subject','messageId','inReplyTo','date','filter','application/ms-tnef','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','first','BodyHTML','Attachments','Title','Data','getHost','gmail','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook365','127.0.0.1','randomstring','path','node-tnef','email','../../../config/environment','head','address','anonymous','generate','value','name','indexOf','split','length','slice','join','pop','@xcally.com','html','replace','includes','<img','attachments','forEach','push','filename','_SRC','_IMG','\x20]</span>','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','message','originTo','isEmpty','originCc','attach','type','attachment','attachment-','format','root','server/files/attachments/','writeFileSync','content','contentType','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply'];(function(_0x10274d,_0x43574d){var _0x1af35c=function(_0x1fbf9d){while(--_0x1fbf9d){_0x10274d['push'](_0x10274d['shift']());}};_0x1af35c(++_0x43574d);}(_0xceef,0xf6));var _0xfcee=function(_0x5d28e2,_0x1e2167){_0x5d28e2=_0x5d28e2-0x0;var _0x5d748e=_0xceef[_0x5d28e2];return _0x5d748e;};'use strict';var _=require('lodash');var moment=require('moment');var random=require(_0xfcee('0x0'));var fs=require('fs');var path=require(_0xfcee('0x1'));var util=require('util');var tnef=require(_0xfcee('0x2'));var logger=require('../../../config/logger')(_0xfcee('0x3'));var config=require(_0xfcee('0x4'));function getAddress(_0x4eed34){var _0x225f98=_[_0xfcee('0x5')](_0x4eed34['value']);return _0x225f98&&_0x225f98['address']?_0x225f98[_0xfcee('0x6')]:_0xfcee('0x7')+random[_0xfcee('0x8')](0x6)+'@xcally.com';}function getFirstName(_0x513a59){var _0x2f8ae6=_[_0xfcee('0x5')](_0x513a59[_0xfcee('0x9')]);if(_0x2f8ae6&&_0x2f8ae6[_0xfcee('0xa')]){if(_0x2f8ae6[_0xfcee('0xa')]==_0x2f8ae6[_0xfcee('0x6')]){return _0x2f8ae6[_0xfcee('0xa')]['substring'](0x0,_0x2f8ae6[_0xfcee('0xa')][_0xfcee('0xb')]('@'));}var _0xbe2cc7=_0x2f8ae6[_0xfcee('0xa')][_0xfcee('0xc')](/\s+/);return _0xbe2cc7[_0xfcee('0xd')]>0x1?_0xbe2cc7[_0xfcee('0xe')](0x0,-0x1)[_0xfcee('0xf')]('\x20'):_0x2f8ae6[_0xfcee('0xa')];}return'Anonymous';}function getLastName(_0x364b51){var _0x3158e7=_['head'](_0x364b51['value']);if(_0x3158e7&&_0x3158e7[_0xfcee('0xa')]){var _0x39e61b=_0x3158e7[_0xfcee('0xa')][_0xfcee('0xc')](/\s+/);return _0x39e61b[_0xfcee('0xd')]>0x1?_0x39e61b[_0xfcee('0x10')]():'';}return'';}function getMails(_0x486334,_0x50543a){var _0xdec4d5='';for(var _0x38a971=0x0;_0x38a971<_0x50543a['value'][_0xfcee('0xd')];_0x38a971+=0x1){if(_0x50543a[_0xfcee('0x9')][_0x38a971][_0xfcee('0x6')]!==_0x486334){if(!_['isEmpty'](_0xdec4d5)){_0xdec4d5+=',';}_0xdec4d5+=_0x50543a[_0xfcee('0x9')][_0x38a971][_0xfcee('0xa')]||_0x50543a[_0xfcee('0x9')][_0x38a971][_0xfcee('0x6')]||'';_0xdec4d5+='\x20<';_0xdec4d5+=_0x50543a['value'][_0x38a971]['address']?_0x50543a[_0xfcee('0x9')][_0x38a971][_0xfcee('0x6')]:_0xfcee('0x7')+random[_0xfcee('0x8')](0x6)+_0xfcee('0x11');_0xdec4d5+='>';}}return _0xdec4d5;}function parseEmail(_0xb5f3db,_0x13d08d,_0x51eada){if(_0x13d08d[_0xfcee('0x12')]){var _0x513690=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x513690['test'](_0x13d08d[_0xfcee('0x12')])){_0x13d08d[_0xfcee('0x12')]=_0x13d08d[_0xfcee('0x12')][_0xfcee('0x13')](_0x513690,'');}if(_0x13d08d[_0xfcee('0x12')][_0xfcee('0x14')](_0xfcee('0x15'))){var _0x3cf678=[];_0x13d08d[_0xfcee('0x16')][_0xfcee('0x17')](_0x384a8f=>{_0x3cf678[_0xfcee('0x18')](_0x384a8f[_0xfcee('0x19')]);});var _0x37d46=/<img.*? _SRC(.*?)[^>]+>/g;var _0xf3c76c=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x4f18c2=_0x13d08d['html']['replace'](_0xf3c76c,_0xfcee('0x1a'));var _0x271d4d=_0x4f18c2[_0xfcee('0x13')](_0x37d46,_0xfcee('0x1b'));for(let _0x20a81d=0x0;_0x20a81d<_0x3cf678[_0xfcee('0xd')];_0x20a81d++){var _0xb30144=_0x271d4d[_0xfcee('0x13')](_0xfcee('0x1b'),'<span\x20style=font-weight:bold>\x20[Attachment:\x20'+_0x3cf678[_0x20a81d]+_0xfcee('0x1c'));_0x271d4d=_0xb30144;}_0x13d08d[_0xfcee('0x12')]=_0x271d4d;}_0x51eada[_0xfcee('0x1d')]=_0x13d08d[_0xfcee('0x12')];}else{_0x51eada[_0xfcee('0x1d')]=_0x13d08d[_0xfcee('0x1e')];}if(_0x51eada[_0xfcee('0x1d')]){_0x51eada['body']=_0x51eada[_0xfcee('0x1d')][_0xfcee('0x13')](/<a\s+/gi,_0xfcee('0x1f'));}if(_0x13d08d['to']){_0x51eada[_0xfcee('0x20')][_0xfcee('0x21')]=getMails(null,_0x13d08d['to']);var _0xe2063b=getMails(_0xb5f3db[_0xfcee('0x3')],_0x13d08d['to']);if(!_[_0xfcee('0x22')](_0xe2063b)){_0x51eada[_0xfcee('0x20')]['cc']+=_0xe2063b;}}if(_0x13d08d['cc']){_0x51eada[_0xfcee('0x20')]['originCc']=getMails(null,_0x13d08d['cc']);var _0x270dfa=getMails(_0xb5f3db['email'],_0x13d08d['cc']);if(!_[_0xfcee('0x22')](_0x270dfa)){if(!_[_0xfcee('0x22')](_0x51eada[_0xfcee('0x20')]['cc'])){_0x51eada['message']['cc']+=',';}_0x51eada['message']['cc']+=_0x270dfa;}}if(!_[_0xfcee('0x14')](_0x51eada['message'][_0xfcee('0x21')],_0xb5f3db[_0xfcee('0x3')])&&!_[_0xfcee('0x14')](_0x51eada[_0xfcee('0x20')][_0xfcee('0x23')],_0xb5f3db[_0xfcee('0x3')])){_0x51eada[_0xfcee('0x20')]['bcc']=_0xb5f3db['email'];}if(_0x13d08d[_0xfcee('0x16')]&&_0x13d08d['attachments'][_0xfcee('0xd')]){_0x51eada[_0xfcee('0x20')][_0xfcee('0x24')]=_0x13d08d[_0xfcee('0x16')][_0xfcee('0xd')];for(var _0x5de47d=0x0,_0x4a59cd,_0x477ad7,_0x2f6f51;_0x5de47d<_0x13d08d[_0xfcee('0x16')][_0xfcee('0xd')];_0x5de47d+=0x1){if(_0x13d08d[_0xfcee('0x16')][_0x5de47d][_0xfcee('0x25')]===_0xfcee('0x26')){_0x2f6f51=_0x13d08d['attachments'][_0x5de47d]['filename']||_0xfcee('0x27')+_0x5de47d;_0x4a59cd=util[_0xfcee('0x28')]('%s-%s',Date['now'](),_0x2f6f51);_0x477ad7=path[_0xfcee('0xf')](config[_0xfcee('0x29')],_0xfcee('0x2a'),_0x4a59cd);fs[_0xfcee('0x2b')](_0x477ad7,_0x13d08d[_0xfcee('0x16')][_0x5de47d][_0xfcee('0x2c')]);_0x51eada['message'][_0xfcee('0x16')][_0xfcee('0x18')]({'name':_0x2f6f51,'basename':_0x4a59cd,'type':_0x13d08d[_0xfcee('0x16')][_0x5de47d][_0xfcee('0x2d')],'filepath':_0x477ad7});}}}if(_0x13d08d[_0xfcee('0x2e')]&&_0x13d08d[_0xfcee('0x2e')]['length']>0x0){var _0x489f17=[_0xfcee('0x2f'),_0xfcee('0x30'),_0xfcee('0x31')];for(var _0x7c5d7=0x0;_0x7c5d7<_0x13d08d['headerLines'][_0xfcee('0xd')];_0x7c5d7++){var _0x7226f6=_[_0xfcee('0xb')](_0x489f17,_0x13d08d[_0xfcee('0x2e')][_0x7c5d7][_0xfcee('0x32')]);if(_0x7226f6>=0x0){_0x51eada[_0xfcee('0x33')]=!![];}}}return _0x51eada;}exports['parser']=function(_0x3ba3d1,_0x474ed9,_0x4b2bbf){var _0x3a0b77={'from':getAddress(_0x474ed9[_0xfcee('0x34')]),'firstName':getFirstName(_0x474ed9[_0xfcee('0x34')]),'lastName':getLastName(_0x474ed9['from']),'mapKey':_0xfcee('0x3'),'message':{'from':getMails(_0x3ba3d1[_0xfcee('0x3')],_0x474ed9[_0xfcee('0x34')]),'to':_0x3ba3d1['email'],'cc':'','subject':_0x474ed9[_0xfcee('0x35')]||'','messageId':_0x474ed9[_0xfcee('0x36')],'inReplyTo':_0x474ed9[_0xfcee('0x37')],'sentAt':moment(_0x474ed9[_0xfcee('0x38')])[_0xfcee('0x28')]('YYYY-MM-DD\x20HH:mm:ss'),'attach':![],'attachments':[]}};if(!_0x474ed9['html']&&!_0x474ed9[_0xfcee('0x1e')]){var _0x504417=_[_0xfcee('0x39')](_0x474ed9['attachments'],{'contentType':_0xfcee('0x3a')});if(_0x504417[_0xfcee('0xd')]){logger[_0xfcee('0x3b')](util[_0xfcee('0x28')](_0xfcee('0x3c'),_0x474ed9['messageId']));tnef[_0xfcee('0x3d')](_[_0xfcee('0x3e')](_0x504417)['content'],function(_0x15828c,_0x111077){if(_0x111077){_0x474ed9[_0xfcee('0x12')]=_0x111077[_0xfcee('0x3f')]||'<p>Empty\x20message</p>';if(_0x111077[_0xfcee('0x40')]){for(var _0x59f52e=0x0;_0x59f52e<_0x111077[_0xfcee('0x40')][_0xfcee('0xd')];_0x59f52e++){var _0x2c8334=_0x111077['Attachments'][_0x59f52e];_0x3a0b77[_0xfcee('0x20')]['attachments'][_0xfcee('0x18')]({'filename':_0x2c8334[_0xfcee('0x41')],'content':Buffer[_0xfcee('0x34')](_0x2c8334[_0xfcee('0x42')])});}}}_0x4b2bbf(parseEmail(_0x3ba3d1,_0x474ed9,_0x3a0b77));});}else{_0x474ed9[_0xfcee('0x12')]='<p>Empty\x20message</p>';_0x4b2bbf(parseEmail(_0x3ba3d1,_0x474ed9,_0x3a0b77));}}else{_0x4b2bbf(parseEmail(_0x3ba3d1,_0x474ed9,_0x3a0b77));}};exports[_0xfcee('0x43')]=function(_0x4d78a5){switch(_0x4d78a5){case _0xfcee('0x44'):return'imap.gmail.com';case'yahoo':return _0xfcee('0x45');case _0xfcee('0x46'):return _0xfcee('0x47');case _0xfcee('0x48'):return'outlook.office365.com';}return _0xfcee('0x49');};
\ No newline at end of file
+var _0x07e8=['_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','message','originTo','originCc','email','bcc','attach','type','attachment','filename','attachment-','format','%s-%s','root','writeFileSync','content','contentType','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','headerLines','line','isAutoreply','parser','from','subject','messageId','filter','application/ms-tnef','parseBuffer','first','BodyHTML','<p>Empty\x20message</p>','Attachments','Data','gmail','yahoo','imap.mail.yahoo.com','imap-mail.outlook.com','outlook365','outlook.office365.com','127.0.0.1','lodash','moment','randomstring','util','../../../config/logger','head','address','anonymous','generate','@xcally.com','value','name','substring','indexOf','split','length','join','Anonymous','pop','isEmpty','html','test','includes','<img','attachments','forEach','push','replace','_SRC'];(function(_0x3df571,_0x2369ed){var _0xfe8173=function(_0xe85a73){while(--_0xe85a73){_0x3df571['push'](_0x3df571['shift']());}};_0xfe8173(++_0x2369ed);}(_0x07e8,0x10f));var _0x807e=function(_0x1f9d1d,_0x1d0996){_0x1f9d1d=_0x1f9d1d-0x0;var _0xc818b1=_0x07e8[_0x1f9d1d];return _0xc818b1;};'use strict';var _=require(_0x807e('0x0'));var moment=require(_0x807e('0x1'));var random=require(_0x807e('0x2'));var fs=require('fs');var path=require('path');var util=require(_0x807e('0x3'));var tnef=require('node-tnef');var logger=require(_0x807e('0x4'))('email');var config=require('../../../config/environment');function getAddress(_0x2c423b){var _0x2dddb4=_[_0x807e('0x5')](_0x2c423b['value']);return _0x2dddb4&&_0x2dddb4[_0x807e('0x6')]?_0x2dddb4[_0x807e('0x6')]:_0x807e('0x7')+random[_0x807e('0x8')](0x6)+_0x807e('0x9');}function getFirstName(_0x54e3cb){var _0x31f652=_[_0x807e('0x5')](_0x54e3cb[_0x807e('0xa')]);if(_0x31f652&&_0x31f652[_0x807e('0xb')]){if(_0x31f652[_0x807e('0xb')]==_0x31f652[_0x807e('0x6')]){return _0x31f652[_0x807e('0xb')][_0x807e('0xc')](0x0,_0x31f652[_0x807e('0xb')][_0x807e('0xd')]('@'));}var _0x2ca6f0=_0x31f652[_0x807e('0xb')][_0x807e('0xe')](/\s+/);return _0x2ca6f0[_0x807e('0xf')]>0x1?_0x2ca6f0['slice'](0x0,-0x1)[_0x807e('0x10')]('\x20'):_0x31f652[_0x807e('0xb')];}return _0x807e('0x11');}function getLastName(_0x19e72f){var _0x2ce562=_[_0x807e('0x5')](_0x19e72f[_0x807e('0xa')]);if(_0x2ce562&&_0x2ce562['name']){var _0x51355b=_0x2ce562[_0x807e('0xb')][_0x807e('0xe')](/\s+/);return _0x51355b[_0x807e('0xf')]>0x1?_0x51355b[_0x807e('0x12')]():'';}return'';}function getMails(_0x5800b9,_0x13b760){var _0x367913='';for(var _0x1ffc81=0x0;_0x1ffc81<_0x13b760[_0x807e('0xa')][_0x807e('0xf')];_0x1ffc81+=0x1){if(_0x13b760[_0x807e('0xa')][_0x1ffc81]['address']!==_0x5800b9){if(!_[_0x807e('0x13')](_0x367913)){_0x367913+=',';}_0x367913+=_0x13b760['value'][_0x1ffc81][_0x807e('0xb')]||_0x13b760[_0x807e('0xa')][_0x1ffc81][_0x807e('0x6')]||'';_0x367913+='\x20<';_0x367913+=_0x13b760[_0x807e('0xa')][_0x1ffc81][_0x807e('0x6')]?_0x13b760[_0x807e('0xa')][_0x1ffc81][_0x807e('0x6')]:_0x807e('0x7')+random[_0x807e('0x8')](0x6)+'@xcally.com';_0x367913+='>';}}return _0x367913;}function parseEmail(_0x5ca377,_0x415eaa,_0x23db10){if(_0x415eaa[_0x807e('0x14')]){var _0x42358e=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x42358e[_0x807e('0x15')](_0x415eaa[_0x807e('0x14')])){_0x415eaa[_0x807e('0x14')]=_0x415eaa[_0x807e('0x14')]['replace'](_0x42358e,'');}if(_0x415eaa[_0x807e('0x14')][_0x807e('0x16')](_0x807e('0x17'))){var _0x3ee5ff=[];_0x415eaa[_0x807e('0x18')][_0x807e('0x19')](_0x55f7c9=>{_0x3ee5ff[_0x807e('0x1a')](_0x55f7c9['filename']);});var _0x33ba88=/<img.*? _SRC(.*?)[^>]+>/g;var _0x176274=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x141dbb=_0x415eaa['html'][_0x807e('0x1b')](_0x176274,_0x807e('0x1c'));var _0x16530c=_0x141dbb[_0x807e('0x1b')](_0x33ba88,_0x807e('0x1d'));for(let _0x3adcc4=0x0;_0x3adcc4<_0x3ee5ff['length'];_0x3adcc4++){var _0x289264=_0x16530c['replace'](_0x807e('0x1d'),_0x807e('0x1e')+_0x3ee5ff[_0x3adcc4]+_0x807e('0x1f'));_0x16530c=_0x289264;}_0x415eaa['html']=_0x16530c;}_0x23db10[_0x807e('0x20')]=_0x415eaa[_0x807e('0x14')];}else{_0x23db10['body']=_0x415eaa[_0x807e('0x21')];}if(_0x23db10[_0x807e('0x20')]){_0x23db10['body']=_0x23db10[_0x807e('0x20')][_0x807e('0x1b')](/<a\s+/gi,_0x807e('0x22'));}if(_0x415eaa['to']){_0x23db10[_0x807e('0x23')][_0x807e('0x24')]=getMails(null,_0x415eaa['to']);var _0x2a45d8=getMails(_0x5ca377['email'],_0x415eaa['to']);if(!_['isEmpty'](_0x2a45d8)){_0x23db10[_0x807e('0x23')]['cc']+=_0x2a45d8;}}if(_0x415eaa['cc']){_0x23db10[_0x807e('0x23')][_0x807e('0x25')]=getMails(null,_0x415eaa['cc']);var _0x1d43c0=getMails(_0x5ca377[_0x807e('0x26')],_0x415eaa['cc']);if(!_['isEmpty'](_0x1d43c0)){if(!_['isEmpty'](_0x23db10[_0x807e('0x23')]['cc'])){_0x23db10[_0x807e('0x23')]['cc']+=',';}_0x23db10['message']['cc']+=_0x1d43c0;}}if(!_[_0x807e('0x16')](_0x23db10[_0x807e('0x23')][_0x807e('0x24')],_0x5ca377[_0x807e('0x26')])&&!_[_0x807e('0x16')](_0x23db10[_0x807e('0x23')][_0x807e('0x25')],_0x5ca377[_0x807e('0x26')])){_0x23db10[_0x807e('0x23')][_0x807e('0x27')]=_0x5ca377['email'];}if(_0x415eaa[_0x807e('0x18')]&&_0x415eaa[_0x807e('0x18')][_0x807e('0xf')]){_0x23db10['message'][_0x807e('0x28')]=_0x415eaa[_0x807e('0x18')][_0x807e('0xf')];for(var _0x546370=0x0,_0x5a823b,_0x266017,_0x4ba037;_0x546370<_0x415eaa['attachments'][_0x807e('0xf')];_0x546370+=0x1){if(_0x415eaa[_0x807e('0x18')][_0x546370][_0x807e('0x29')]===_0x807e('0x2a')){_0x4ba037=_0x415eaa[_0x807e('0x18')][_0x546370][_0x807e('0x2b')]||_0x807e('0x2c')+_0x546370;_0x5a823b=util[_0x807e('0x2d')](_0x807e('0x2e'),Date['now'](),_0x4ba037);_0x266017=path['join'](config[_0x807e('0x2f')],'server/files/attachments/',_0x5a823b);fs[_0x807e('0x30')](_0x266017,_0x415eaa[_0x807e('0x18')][_0x546370][_0x807e('0x31')]);_0x23db10['message'][_0x807e('0x18')][_0x807e('0x1a')]({'name':_0x4ba037,'basename':_0x5a823b,'type':_0x415eaa[_0x807e('0x18')][_0x546370][_0x807e('0x32')],'filepath':_0x266017});}}}if(_0x415eaa['headerLines']&&_0x415eaa['headerLines'][_0x807e('0xf')]>0x0){var _0x4da2b5=[_0x807e('0x33'),_0x807e('0x34'),'Precedence:\x20auto_reply'];for(var _0x522146=0x0;_0x522146<_0x415eaa[_0x807e('0x35')][_0x807e('0xf')];_0x522146++){var _0x427998=_[_0x807e('0xd')](_0x4da2b5,_0x415eaa[_0x807e('0x35')][_0x522146][_0x807e('0x36')]);if(_0x427998>=0x0){_0x23db10[_0x807e('0x37')]=!![];}}}return _0x23db10;}exports[_0x807e('0x38')]=function(_0x383534,_0xaa20b5,_0x16d3b4){var _0x287cd0={'from':getAddress(_0xaa20b5[_0x807e('0x39')]),'firstName':getFirstName(_0xaa20b5['from']),'lastName':getLastName(_0xaa20b5[_0x807e('0x39')]),'mapKey':'email','message':{'from':getMails(_0x383534[_0x807e('0x26')],_0xaa20b5[_0x807e('0x39')]),'to':_0x383534['email'],'cc':'','subject':_0xaa20b5[_0x807e('0x3a')]||'','messageId':_0xaa20b5[_0x807e('0x3b')],'inReplyTo':_0xaa20b5['inReplyTo'],'sentAt':moment(_0xaa20b5['date'])['format']('YYYY-MM-DD\x20HH:mm:ss'),'attach':![],'attachments':[]}};if(!_0xaa20b5[_0x807e('0x14')]&&!_0xaa20b5[_0x807e('0x21')]){var _0x329cf1=_[_0x807e('0x3c')](_0xaa20b5[_0x807e('0x18')],{'contentType':_0x807e('0x3d')});if(_0x329cf1[_0x807e('0xf')]){logger['info'](util['format']('Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system',_0xaa20b5[_0x807e('0x3b')]));tnef[_0x807e('0x3e')](_[_0x807e('0x3f')](_0x329cf1)[_0x807e('0x31')],function(_0x30c9c8,_0x17da49){if(_0x17da49){_0xaa20b5['html']=_0x17da49[_0x807e('0x40')]||_0x807e('0x41');if(_0x17da49[_0x807e('0x42')]){for(var _0x2d87be=0x0;_0x2d87be<_0x17da49[_0x807e('0x42')][_0x807e('0xf')];_0x2d87be++){var _0x40fbe3=_0x17da49[_0x807e('0x42')][_0x2d87be];_0x287cd0[_0x807e('0x23')][_0x807e('0x18')][_0x807e('0x1a')]({'filename':_0x40fbe3['Title'],'content':Buffer['from'](_0x40fbe3[_0x807e('0x43')])});}}}_0x16d3b4(parseEmail(_0x383534,_0xaa20b5,_0x287cd0));});}else{_0xaa20b5['html']='<p>Empty\x20message</p>';_0x16d3b4(parseEmail(_0x383534,_0xaa20b5,_0x287cd0));}}else{_0x16d3b4(parseEmail(_0x383534,_0xaa20b5,_0x287cd0));}};exports['getHost']=function(_0x49844a){switch(_0x49844a){case _0x807e('0x44'):return'imap.gmail.com';case _0x807e('0x45'):return _0x807e('0x46');case'hotmail':return _0x807e('0x47');case _0x807e('0x48'):return _0x807e('0x49');}return _0x807e('0x4a');};
\ No newline at end of file
index ac9c3fc..d196cf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8142=['exports','lodash','name','key','SERV','active','Imap','Smtp'];(function(_0x41249e,_0x275d84){var _0x2bff48=function(_0x33a84d){while(--_0x33a84d){_0x41249e['push'](_0x41249e['shift']());}};_0x2bff48(++_0x275d84);}(_0x8142,0x131));var _0x2814=function(_0xa388a2,_0x40bde6){_0xa388a2=_0xa388a2-0x0;var _0x7ce7f6=_0x8142[_0xa388a2];return _0x7ce7f6;};'use strict';var _=require(_0x2814('0x0'));function MailAccount(_0x32a771){this['id']=_0x32a771['id']||0x0;this['name']=_0x32a771[_0x2814('0x1')]||'Service';this[_0x2814('0x2')]=_0x32a771[_0x2814('0x2')]||_0x2814('0x3');this[_0x2814('0x4')]=_0x32a771[_0x2814('0x4')]||![];this[_0x2814('0x5')]=_0x32a771[_0x2814('0x5')]||[];this[_0x2814('0x6')]=_0x32a771[_0x2814('0x6')]||[];}module[_0x2814('0x7')]=MailAccount;
\ No newline at end of file
+var _0xfa54=['Service','key','SERV','active','Imap','Smtp','name'];(function(_0x359a8a,_0x3c9b85){var _0x10d370=function(_0x4bbabc){while(--_0x4bbabc){_0x359a8a['push'](_0x359a8a['shift']());}};_0x10d370(++_0x3c9b85);}(_0xfa54,0x14f));var _0x4fa5=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xfa54[_0x122ef9];return _0x42fba0;};'use strict';var _=require('lodash');function MailAccount(_0x51dec8){this['id']=_0x51dec8['id']||0x0;this[_0x4fa5('0x0')]=_0x51dec8[_0x4fa5('0x0')]||_0x4fa5('0x1');this[_0x4fa5('0x2')]=_0x51dec8[_0x4fa5('0x2')]||_0x4fa5('0x3');this[_0x4fa5('0x4')]=_0x51dec8[_0x4fa5('0x4')]||![];this[_0x4fa5('0x5')]=_0x51dec8[_0x4fa5('0x5')]||[];this[_0x4fa5('0x6')]=_0x51dec8[_0x4fa5('0x6')]||[];}module['exports']=MailAccount;
\ No newline at end of file
index 116b1b5..8367336 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf886=['length','lodash','../model/mailAccount','mapKeys','hasOwnProperty','mergeFromDatabase','prototype','initMailAccounts','mailAccounts'];(function(_0x219e9b,_0x295d91){var _0x332e80=function(_0x567792){while(--_0x567792){_0x219e9b['push'](_0x219e9b['shift']());}};_0x332e80(++_0x295d91);}(_0xf886,0x17b));var _0x6f88=function(_0x18546c,_0x4daf94){_0x18546c=_0x18546c-0x0;var _0x46ef43=_0xf886[_0x18546c];return _0x46ef43;};'use strict';var _=require(_0x6f88('0x0'));var MailAccount=require(_0x6f88('0x1'));var Realtime=function(){this['mailAccounts']={};};function freeIsNotKey(_0x5323b6,_0x2f6f4c,_0x728cd2){var _0x310f78=_[_0x6f88('0x2')](_0x5323b6,function(_0x19adbe,_0x5282b9){return _0x19adbe[_0x728cd2];});for(var _0x1e86d1 in _0x2f6f4c){if(_0x2f6f4c[_0x6f88('0x3')](_0x1e86d1)){if(!_0x310f78[_0x1e86d1]){delete _0x2f6f4c[_0x1e86d1];}}}}Realtime['prototype'][_0x6f88('0x4')]=function(_0x53d45,_0x2c696f){for(var _0x5c6771 in _0x2c696f){if(_0x53d45[_0x6f88('0x3')](_0x5c6771)){_0x53d45[_0x5c6771]=_0x2c696f[_0x5c6771];}}};Realtime[_0x6f88('0x5')][_0x6f88('0x6')]=function(){var _0x5cdbc4=this;return function(_0x4082dc){if(_0x4082dc){freeIsNotKey(_0x4082dc,_0x5cdbc4[_0x6f88('0x7')],'id');for(var _0x13d604=0x0,_0x4d23d8={},_0x306d68={};_0x13d604<_0x4082dc[_0x6f88('0x8')];_0x13d604+=0x1){_0x4d23d8=_0x4082dc[_0x13d604];if(_['isUndefined'](_0x5cdbc4[_0x6f88('0x7')][_0x4d23d8['id']])){_0x5cdbc4[_0x6f88('0x7')][_0x4d23d8['id']]=new MailAccount(_0x4d23d8);}else{_['merge'](_0x5cdbc4[_0x6f88('0x7')][_0x4d23d8['id']],_0x4d23d8);}}}return _0x5cdbc4['mailAccounts'];};};module['exports']=Realtime;
\ No newline at end of file
+var _0x670d=['initMailAccounts','length','isUndefined','merge','exports','lodash','mailAccounts','hasOwnProperty','prototype','mergeFromDatabase'];(function(_0x4c4451,_0x1304c4){var _0x3603a9=function(_0x1afa23){while(--_0x1afa23){_0x4c4451['push'](_0x4c4451['shift']());}};_0x3603a9(++_0x1304c4);}(_0x670d,0x11d));var _0xd670=function(_0x55a1f7,_0x7f31e8){_0x55a1f7=_0x55a1f7-0x0;var _0x347561=_0x670d[_0x55a1f7];return _0x347561;};'use strict';var _=require(_0xd670('0x0'));var MailAccount=require('../model/mailAccount');var Realtime=function(){this[_0xd670('0x1')]={};};function freeIsNotKey(_0x5df602,_0x552192,_0x1bf71e){var _0x182c9d=_['mapKeys'](_0x5df602,function(_0x2c598d,_0x357b92){return _0x2c598d[_0x1bf71e];});for(var _0x3430b8 in _0x552192){if(_0x552192[_0xd670('0x2')](_0x3430b8)){if(!_0x182c9d[_0x3430b8]){delete _0x552192[_0x3430b8];}}}}Realtime[_0xd670('0x3')][_0xd670('0x4')]=function(_0x3cdcda,_0x400688){for(var _0x5497fe in _0x400688){if(_0x3cdcda['hasOwnProperty'](_0x5497fe)){_0x3cdcda[_0x5497fe]=_0x400688[_0x5497fe];}}};Realtime['prototype'][_0xd670('0x5')]=function(){var _0x3db616=this;return function(_0x46e3d2){if(_0x46e3d2){freeIsNotKey(_0x46e3d2,_0x3db616[_0xd670('0x1')],'id');for(var _0x5ecef6=0x0,_0x91eec3={},_0x56f4ed={};_0x5ecef6<_0x46e3d2[_0xd670('0x6')];_0x5ecef6+=0x1){_0x91eec3=_0x46e3d2[_0x5ecef6];if(_[_0xd670('0x7')](_0x3db616['mailAccounts'][_0x91eec3['id']])){_0x3db616['mailAccounts'][_0x91eec3['id']]=new MailAccount(_0x91eec3);}else{_[_0xd670('0x8')](_0x3db616['mailAccounts'][_0x91eec3['id']],_0x91eec3);}}}return _0x3db616[_0xd670('0x1')];};};module[_0xd670('0x9')]=Realtime;
\ No newline at end of file
index 236ef67..1f81aa1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1d2=['NotifyMailAccount','getMailAccounts','GetMailAccount','name','service','email','active','key','ListId','TemplateId','MailServerIn','MailServerOut','Smtp','getMailAccount','notify','Request'];(function(_0x3cd096,_0x116a5c){var _0x2e6df3=function(_0x42fc83){while(--_0x42fc83){_0x3cd096['push'](_0x3cd096['shift']());}};_0x2e6df3(++_0x116a5c);}(_0xa1d2,0x151));var _0x2a1d=function(_0x2655f1,_0x2bd462){_0x2655f1=_0x2655f1-0x0;var _0x4a492e=_0xa1d2[_0x2655f1];return _0x4a492e;};'use strict';var client=require('../client');exports[_0x2a1d('0x0')]=function(){return function(){return client['Request'](_0x2a1d('0x1'),{'options':{'attributes':['id',_0x2a1d('0x2'),_0x2a1d('0x3'),_0x2a1d('0x4'),_0x2a1d('0x5'),_0x2a1d('0x6'),_0x2a1d('0x7'),_0x2a1d('0x8')],'raw':![],'include':[{'model':_0x2a1d('0x9'),'as':'Imap'},{'model':_0x2a1d('0xa'),'as':_0x2a1d('0xb')}]},'log':_0x2a1d('0xc')});};};exports[_0x2a1d('0xd')]=function(_0x1ef91a,_0x3877e4){return client[_0x2a1d('0xe')](_0x2a1d('0xf'),{'account':{'id':_0x1ef91a},'body':_0x3877e4,'log':_0x2a1d('0xf')});};
\ No newline at end of file
+var _0x9147=['email','key','ListId','TemplateId','MailServerIn','Imap','Smtp','notify','NotifyMailAccount','../client','getMailAccounts','Request','GetMailAccount','name','service'];(function(_0x4ce79a,_0x161e09){var _0x228421=function(_0x281ae2){while(--_0x281ae2){_0x4ce79a['push'](_0x4ce79a['shift']());}};_0x228421(++_0x161e09);}(_0x9147,0x81));var _0x7914=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0x9147[_0x580576];return _0x3f55a0;};'use strict';var client=require(_0x7914('0x0'));exports[_0x7914('0x1')]=function(){return function(){return client[_0x7914('0x2')](_0x7914('0x3'),{'options':{'attributes':['id',_0x7914('0x4'),_0x7914('0x5'),_0x7914('0x6'),'active',_0x7914('0x7'),_0x7914('0x8'),_0x7914('0x9')],'raw':![],'include':[{'model':_0x7914('0xa'),'as':_0x7914('0xb')},{'model':'MailServerOut','as':_0x7914('0xc')}]},'log':'getMailAccount'});};};exports[_0x7914('0xd')]=function(_0x5efc62,_0x59c064){return client[_0x7914('0x2')](_0x7914('0xe'),{'account':{'id':_0x5efc62},'body':_0x59c064,'log':_0x7914('0xe')});};
\ No newline at end of file
index d8e0edc..a084005 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66b9=['../client','Request','loginMailFrequency'];(function(_0x19f55e,_0xd4ffc3){var _0x44cfee=function(_0x138a86){while(--_0x138a86){_0x19f55e['push'](_0x19f55e['shift']());}};_0x44cfee(++_0xd4ffc3);}(_0x66b9,0x135));var _0x966b=function(_0x532fae,_0x48fb05){_0x532fae=_0x532fae-0x0;var _0x37fbc9=_0x66b9[_0x532fae];return _0x37fbc9;};'use strict';var client=require(_0x966b('0x0'));exports['getSettings']=function(){return client[_0x966b('0x1')]('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x966b('0x2')]},'log':'GetSettings'});};
\ No newline at end of file
+var _0x28f8=['../client','getSettings','Request','GetSettings'];(function(_0x68c979,_0x431cff){var _0x4f0001=function(_0xa7595d){while(--_0xa7595d){_0x68c979['push'](_0x68c979['shift']());}};_0x4f0001(++_0x431cff);}(_0x28f8,0x1d8));var _0x828f=function(_0x1162f9,_0x35f87c){_0x1162f9=_0x1162f9-0x0;var _0x75257c=_0x28f8[_0x1162f9];return _0x75257c;};'use strict';var client=require(_0x828f('0x0'));exports[_0x828f('0x1')]=function(){return client[_0x828f('0x2')]('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':['loginMailFrequency']},'log':_0x828f('0x3')});};
\ No newline at end of file
index 487a38f..cb8f5e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['catch','values','mailAccounts','length','Imap','password','Smtp','pass','server','http','stringify','127.0.0.1','log','Email\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','jayson/promise','bluebird','lodash','listen','sendMail','then','error','Verified'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0xa9e0[_0x297fd3];return _0x2af381;};'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(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xa9e0,0x123));var _0x0a9e=function(_0x38a7ac,_0x45514b){_0x38a7ac=_0x38a7ac-0x0;var _0x53061a=_0xa9e0[_0x38a7ac];return _0x53061a;};'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 762d4e1..7cc8f34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaac1=['port','socket.io','websocket','redis','localhost','adapter','socket.io-redis','../../config/triggers','default','../../config/socketio','../../config/express','../../routes','once','listening','log','exports','lodash','http','express','sticky-session','ioredis','../../config/environment','createServer','listen'];(function(_0x9ba307,_0x570631){var _0x335d04=function(_0x3125d0){while(--_0x3125d0){_0x9ba307['push'](_0x9ba307['shift']());}};_0x335d04(++_0x570631);}(_0xaac1,0x1c0));var _0x1aac=function(_0x270aab,_0x30dbfa){_0x270aab=_0x270aab-0x0;var _0x3b4064=_0xaac1[_0x270aab];return _0x3b4064;};'use strict';var _=require(_0x1aac('0x0'));var http=require(_0x1aac('0x1'));var express=require(_0x1aac('0x2'));var sticky=require(_0x1aac('0x3'));var Redis=require(_0x1aac('0x4'));var config=require(_0x1aac('0x5'));var app=express();var server=http[_0x1aac('0x6')](app);server['timeout']=0xdbba0;if(sticky[_0x1aac('0x7')](server,config[_0x1aac('0x8')])){var socketio=require(_0x1aac('0x9'))(server,{'transports':[_0x1aac('0xa'),'polling']});config[_0x1aac('0xb')]=_['defaults'](config[_0x1aac('0xb')],{'host':_0x1aac('0xc'),'port':0x18eb});socketio[_0x1aac('0xd')](require(_0x1aac('0xe'))({'pubClient':new Redis(config[_0x1aac('0xb')]),'subClient':new Redis(config[_0x1aac('0xb')])}));require(_0x1aac('0xf'))[_0x1aac('0x10')]();require(_0x1aac('0x11'))[_0x1aac('0x10')](socketio);require(_0x1aac('0x12'))[_0x1aac('0x10')](app);require(_0x1aac('0x13'))[_0x1aac('0x10')](app);}else{server[_0x1aac('0x14')](_0x1aac('0x15'),function(){console[_0x1aac('0x16')]('Express\x20server\x20listening\x20on\x20port\x20%d!',config[_0x1aac('0x8')]);});}exports=module[_0x1aac('0x17')]=app;
\ No newline at end of file
+var _0x2fec=['redis','defaults','localhost','adapter','socket.io-redis','../../config/triggers','../../config/socketio','../../routes','default','once','listening','log','Express\x20server\x20listening\x20on\x20port\x20%d!','lodash','http','express','sticky-session','ioredis','createServer','timeout','listen','port','polling'];(function(_0x5a07e6,_0x2bf9bd){var _0x5a082c=function(_0x50c03a){while(--_0x50c03a){_0x5a07e6['push'](_0x5a07e6['shift']());}};_0x5a082c(++_0x2bf9bd);}(_0x2fec,0x97));var _0xc2fe=function(_0x481517,_0x64c69){_0x481517=_0x481517-0x0;var _0x37c2a4=_0x2fec[_0x481517];return _0x37c2a4;};'use strict';var _=require(_0xc2fe('0x0'));var http=require(_0xc2fe('0x1'));var express=require(_0xc2fe('0x2'));var sticky=require(_0xc2fe('0x3'));var Redis=require(_0xc2fe('0x4'));var config=require('../../config/environment');var app=express();var server=http[_0xc2fe('0x5')](app);server[_0xc2fe('0x6')]=0xdbba0;if(sticky[_0xc2fe('0x7')](server,config[_0xc2fe('0x8')])){var socketio=require('socket.io')(server,{'transports':['websocket',_0xc2fe('0x9')]});config[_0xc2fe('0xa')]=_[_0xc2fe('0xb')](config[_0xc2fe('0xa')],{'host':_0xc2fe('0xc'),'port':0x18eb});socketio[_0xc2fe('0xd')](require(_0xc2fe('0xe'))({'pubClient':new Redis(config[_0xc2fe('0xa')]),'subClient':new Redis(config[_0xc2fe('0xa')])}));require(_0xc2fe('0xf'))['default']();require(_0xc2fe('0x10'))['default'](socketio);require('../../config/express')['default'](app);require(_0xc2fe('0x11'))[_0xc2fe('0x12')](app);}else{server[_0xc2fe('0x13')](_0xc2fe('0x14'),function(){console[_0xc2fe('0x15')](_0xc2fe('0x16'),config[_0xc2fe('0x8')]);});}exports=module['exports']=app;
\ No newline at end of file
index d279a6d..f4b5e17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc4a=['routing','Request','request','debug','rpc','error','message','catch','exports','bluebird','../../config/logger'];(function(_0x117b1c,_0x4b02ae){var _0xa75073=function(_0x3dccc0){while(--_0x3dccc0){_0x117b1c['push'](_0x117b1c['shift']());}};_0xa75073(++_0x4b02ae);}(_0xfc4a,0x11c));var _0xafc4=function(_0x49ced3,_0x522155){_0x49ced3=_0x49ced3-0x0;var _0x58572b=_0xfc4a[_0x49ced3];return _0x58572b;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0xafc4('0x0'));var logger=require(_0xafc4('0x1'))(_0xafc4('0x2'));var client=jayson['client']['http']({'port':0x2329});client[_0xafc4('0x3')]=function(_0x1eb5db,_0x4058ca){return new BPromise(function(_0x452d47,_0x33d6ee){return client[_0xafc4('0x4')](_0x1eb5db,_0x4058ca)['then'](function(_0x359c31){logger[_0xafc4('0x5')](_0xafc4('0x6'),_0xafc4('0x2'),_0x1eb5db,_0x4058ca,_0x359c31);if(_0x359c31[_0xafc4('0x7')]){logger[_0xafc4('0x7')](_0xafc4('0x6'),_0xafc4('0x2'),_0x1eb5db,_0x359c31['error']['message'],_0x4058ca);return _0x33d6ee(_0x359c31[_0xafc4('0x7')][_0xafc4('0x8')]);}else{return _0x452d47(_0x359c31['result']);}})[_0xafc4('0x9')](function(_0x258dbe){logger[_0xafc4('0x7')](_0xafc4('0x6'),_0xafc4('0x2'),_0x1eb5db,_0x258dbe,_0x4058ca);return _0x33d6ee(_0x258dbe);});});};module[_0xafc4('0xa')]=client;
\ No newline at end of file
+var _0x1c7f=['http','request','then','debug','rpc','error','message','exports','jayson/promise','../../config/logger','routing','client'];(function(_0x1f816c,_0x51f22f){var _0x4878b6=function(_0xa70ac0){while(--_0xa70ac0){_0x1f816c['push'](_0x1f816c['shift']());}};_0x4878b6(++_0x51f22f);}(_0x1c7f,0x17c));var _0xf1c7=function(_0x126fb9,_0x122c59){_0x126fb9=_0x126fb9-0x0;var _0xc8a3b1=_0x1c7f[_0x126fb9];return _0xc8a3b1;};'use strict';var jayson=require(_0xf1c7('0x0'));var BPromise=require('bluebird');var logger=require(_0xf1c7('0x1'))(_0xf1c7('0x2'));var client=jayson[_0xf1c7('0x3')][_0xf1c7('0x4')]({'port':0x2329});client['Request']=function(_0x557858,_0x2c542e){return new BPromise(function(_0x96ff37,_0x24bf5e){return client[_0xf1c7('0x5')](_0x557858,_0x2c542e)[_0xf1c7('0x6')](function(_0x1de6d2){logger[_0xf1c7('0x7')](_0xf1c7('0x8'),_0xf1c7('0x2'),_0x557858,_0x2c542e,_0x1de6d2);if(_0x1de6d2[_0xf1c7('0x9')]){logger[_0xf1c7('0x9')](_0xf1c7('0x8'),_0xf1c7('0x2'),_0x557858,_0x1de6d2[_0xf1c7('0x9')]['message'],_0x2c542e);return _0x24bf5e(_0x1de6d2[_0xf1c7('0x9')][_0xf1c7('0xa')]);}else{return _0x96ff37(_0x1de6d2['result']);}})['catch'](function(_0x379d99){logger[_0xf1c7('0x9')](_0xf1c7('0x8'),_0xf1c7('0x2'),_0x557858,_0x379d99,_0x2c542e);return _0x24bf5e(_0x379d99);});});};module[_0xf1c7('0xb')]=client;
\ No newline at end of file
index 584d21c..e020a22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e8b=['./server','./rpc/user','./rpc/interval','./rpc/openchannelQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/faxQueue','./rpc/whatsappQueue','resolve','then','getAgents','initAgents','getIntervals','initIntervals','getOpenchannelQueues','getChatQueues','initChatQueues','getSmsQueues','initSmsQueues','getMailQueues','initMailQueues','initFaxQueues','initWhatsappQueues','listen','catch','bluebird'];(function(_0x112030,_0x517d87){var _0x3754d0=function(_0x536435){while(--_0x536435){_0x112030['push'](_0x112030['shift']());}};_0x3754d0(++_0x517d87);}(_0x4e8b,0x1b9));var _0xb4e8=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0x4e8b[_0x5c351c];return _0x26f3b3;};'use strict';var BPromise=require(_0xb4e8('0x0'));var server=require(_0xb4e8('0x1'));var Realtime=require('./realtime');var user=require(_0xb4e8('0x2'));var interval=require(_0xb4e8('0x3'));var openchannelQueue=require(_0xb4e8('0x4'));var chatQueue=require('./rpc/chatQueue');var smsQueue=require(_0xb4e8('0x5'));var mailQueue=require(_0xb4e8('0x6'));var faxQueue=require(_0xb4e8('0x7'));var whatsappQueue=require(_0xb4e8('0x8'));var realtime=new Realtime();function initRealtime(){return BPromise[_0xb4e8('0x9')]()[_0xb4e8('0xa')](user[_0xb4e8('0xb')]())[_0xb4e8('0xa')](realtime[_0xb4e8('0xc')]())[_0xb4e8('0xa')](interval[_0xb4e8('0xd')]())[_0xb4e8('0xa')](realtime[_0xb4e8('0xe')]())['then'](openchannelQueue[_0xb4e8('0xf')]())[_0xb4e8('0xa')](realtime['initOpenchannelQueues']())[_0xb4e8('0xa')](chatQueue[_0xb4e8('0x10')]())[_0xb4e8('0xa')](realtime[_0xb4e8('0x11')]())[_0xb4e8('0xa')](smsQueue[_0xb4e8('0x12')]())[_0xb4e8('0xa')](realtime[_0xb4e8('0x13')]())[_0xb4e8('0xa')](mailQueue[_0xb4e8('0x14')]())[_0xb4e8('0xa')](realtime[_0xb4e8('0x15')]())[_0xb4e8('0xa')](faxQueue['getFaxQueues']())['then'](realtime[_0xb4e8('0x16')]())['then'](whatsappQueue['getWhatsappQueues']())[_0xb4e8('0xa')](realtime[_0xb4e8('0x17')]())[_0xb4e8('0xa')](function(){return realtime;});}function main(){return server[_0xb4e8('0x18')](realtime)['then'](function(_0xecb3d0){return initRealtime();})[_0xb4e8('0xa')](function(_0x475698){return setInterval(initRealtime,0x1388);})[_0xb4e8('0x19')](function(_0x3f8477){console['log'](_0x3f8477);});}main();
\ No newline at end of file
+var _0x085d=['initOpenchannelQueues','getChatQueues','initChatQueues','getSmsQueues','initSmsQueues','getMailQueues','initMailQueues','getWhatsappQueues','initWhatsappQueues','listen','catch','log','bluebird','./server','./realtime','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/mailQueue','./rpc/faxQueue','./rpc/whatsappQueue','getAgents','then','initIntervals','getOpenchannelQueues'];(function(_0x1cdb2d,_0x8f1f76){var _0x4dafe3=function(_0xec694e){while(--_0xec694e){_0x1cdb2d['push'](_0x1cdb2d['shift']());}};_0x4dafe3(++_0x8f1f76);}(_0x085d,0x1d4));var _0xd085=function(_0x166e96,_0x55191d){_0x166e96=_0x166e96-0x0;var _0x553d73=_0x085d[_0x166e96];return _0x553d73;};'use strict';var BPromise=require(_0xd085('0x0'));var server=require(_0xd085('0x1'));var Realtime=require(_0xd085('0x2'));var user=require('./rpc/user');var interval=require('./rpc/interval');var openchannelQueue=require(_0xd085('0x3'));var chatQueue=require(_0xd085('0x4'));var smsQueue=require('./rpc/smsQueue');var mailQueue=require(_0xd085('0x5'));var faxQueue=require(_0xd085('0x6'));var whatsappQueue=require(_0xd085('0x7'));var realtime=new Realtime();function initRealtime(){return BPromise['resolve']()['then'](user[_0xd085('0x8')]())['then'](realtime['initAgents']())['then'](interval['getIntervals']())[_0xd085('0x9')](realtime[_0xd085('0xa')]())[_0xd085('0x9')](openchannelQueue[_0xd085('0xb')]())[_0xd085('0x9')](realtime[_0xd085('0xc')]())[_0xd085('0x9')](chatQueue[_0xd085('0xd')]())[_0xd085('0x9')](realtime[_0xd085('0xe')]())[_0xd085('0x9')](smsQueue[_0xd085('0xf')]())[_0xd085('0x9')](realtime[_0xd085('0x10')]())[_0xd085('0x9')](mailQueue[_0xd085('0x11')]())[_0xd085('0x9')](realtime[_0xd085('0x12')]())[_0xd085('0x9')](faxQueue['getFaxQueues']())[_0xd085('0x9')](realtime['initFaxQueues']())[_0xd085('0x9')](whatsappQueue[_0xd085('0x13')]())[_0xd085('0x9')](realtime[_0xd085('0x14')]())[_0xd085('0x9')](function(){return realtime;});}function main(){return server[_0xd085('0x15')](realtime)[_0xd085('0x9')](function(_0x3676a0){return initRealtime();})[_0xd085('0x9')](function(_0x798d39){return setInterval(initRealtime,0x1388);})[_0xd085('0x16')](function(_0x4b3a33){console[_0xd085('0x17')](_0x4b3a33);});}main();
\ No newline at end of file
index a739f1f..b048553 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(_0x2b8f25,_0x494682){var _0xdb4d96=function(_0x1ea982){while(--_0x1ea982){_0x2b8f25['push'](_0x2b8f25['shift']());}};_0xdb4d96(++_0x494682);}(_0x814b,0x1a2));var _0xb814=function(_0x50bf5a,_0x807bba){_0x50bf5a=_0x50bf5a-0x0;var _0x4ddc1d=_0x814b[_0x50bf5a];return _0x4ddc1d;};'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(_0x1a84b1,_0x3ca6d8){var _0x161938=function(_0x44e888){while(--_0x44e888){_0x1a84b1['push'](_0x1a84b1['shift']());}};_0x161938(++_0x3ca6d8);}(_0x326f,0xd1));var _0xf326=function(_0x1a7af0,_0x524cb7){_0x1a7af0=_0x1a7af0-0x0;var _0x3c2f06=_0x326f[_0x1a7af0];return _0x3c2f06;};'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 374e8b2..74d4d01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8260=['http','request','then','error','message','catch','sendMailMessage','SendMail','bluebird','client'];(function(_0x51db9d,_0x41161d){var _0x31f08b=function(_0x5c189a){while(--_0x5c189a){_0x51db9d['push'](_0x51db9d['shift']());}};_0x31f08b(++_0x41161d);}(_0x8260,0x1e8));var _0x0826=function(_0x2847d0,_0x10a787){_0x2847d0=_0x2847d0-0x0;var _0x1cc209=_0x8260[_0x2847d0];return _0x1cc209;};'use strict';var BPromise=require(_0x0826('0x0'));var jayson=require('jayson/promise');var client=jayson[_0x0826('0x1')][_0x0826('0x2')]({'port':0x232b});function request(_0x4553be,_0x2c1f05){return new BPromise(function(_0x42364f,_0x678569){return client[_0x0826('0x3')](_0x4553be,_0x2c1f05)[_0x0826('0x4')](function(_0x3a3f3c){if(_0x3a3f3c[_0x0826('0x5')]){return _0x678569(_0x3a3f3c[_0x0826('0x5')][_0x0826('0x6')]);}else{return _0x42364f(_0x3a3f3c['result']);}})[_0x0826('0x7')](function(_0x30411c){return _0x678569(_0x30411c);});});}exports[_0x0826('0x8')]=function(_0x11908c,_0x399026){return request(_0x0826('0x9'),{'account':_0x11908c,'message':_0x399026});};
\ No newline at end of file
+var _0xae87=['error','message','result','catch','sendMailMessage','bluebird','jayson/promise','http','request','then'];(function(_0x4a4b45,_0x5de197){var _0x40a7f8=function(_0x454140){while(--_0x454140){_0x4a4b45['push'](_0x4a4b45['shift']());}};_0x40a7f8(++_0x5de197);}(_0xae87,0x131));var _0x7ae8=function(_0x3932eb,_0x43b210){_0x3932eb=_0x3932eb-0x0;var _0x5316e5=_0xae87[_0x3932eb];return _0x5316e5;};'use strict';var BPromise=require(_0x7ae8('0x0'));var jayson=require(_0x7ae8('0x1'));var client=jayson['client'][_0x7ae8('0x2')]({'port':0x232b});function request(_0x2eed06,_0x740bf1){return new BPromise(function(_0xf4404c,_0x35cb4a){return client[_0x7ae8('0x3')](_0x2eed06,_0x740bf1)[_0x7ae8('0x4')](function(_0x361904){if(_0x361904[_0x7ae8('0x5')]){return _0x35cb4a(_0x361904[_0x7ae8('0x5')][_0x7ae8('0x6')]);}else{return _0xf4404c(_0x361904[_0x7ae8('0x7')]);}})[_0x7ae8('0x8')](function(_0x102c4d){return _0x35cb4a(_0x102c4d);});});}exports[_0x7ae8('0x9')]=function(_0x1417e6,_0x19ef8f){return request('SendMail',{'account':_0x1417e6,'message':_0x19ef8f});};
\ No newline at end of file
index a6faa10..ee5ecc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf7e=['socket.io-emitter','name','online','chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','unknown','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatusTime','mailCapacity','faxStatus','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','updateRealtime','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','working','idle','mail','chat','openchannel','fax','whatsapp','length','Status','toNumber','format','voicePause','mailCurrentCapacity','smsStatus','emit','user:save','exports','md5','ioredis','../../../config/environment','defaults','redis'];(function(_0x1df6d5,_0x3d9b53){var _0x227597=function(_0x43f5e2){while(--_0x43f5e2){_0x1df6d5['push'](_0x1df6d5['shift']());}};_0x227597(++_0x3d9b53);}(_0xcf7e,0xaf));var _0xecf7=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0xcf7e[_0x1035c1];return _0x308d67;};'use strict';var _=require('lodash');var moment=require('moment');var md5=require(_0xecf7('0x0'));var Redis=require(_0xecf7('0x1'));var config=require(_0xecf7('0x2'));config['redis']=_[_0xecf7('0x3')](config[_0xecf7('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0xecf7('0x5'))(new Redis(config[_0xecf7('0x4')]));function Agent(_0x535aa0){this['id']=_0x535aa0['id']||0x0;this[_0xecf7('0x6')]=_0x535aa0['name']||'';this[_0xecf7('0x7')]=_0x535aa0[_0xecf7('0x7')]||!![];this['voicePause']=_0x535aa0['voicePause']||![];this[_0xecf7('0x8')]=_0x535aa0['chatPause']||![];this[_0xecf7('0x9')]=_0x535aa0[_0xecf7('0x9')]||![];this[_0xecf7('0xa')]=_0x535aa0[_0xecf7('0xa')]||![];this[_0xecf7('0xb')]=_0x535aa0[_0xecf7('0xb')]||![];this[_0xecf7('0xc')]=_0x535aa0['openchannelPause']||![];this[_0xecf7('0xd')]=_0xecf7('0xe');this[_0xecf7('0xf')]=0x0;this[_0xecf7('0x10')]=_0x535aa0[_0xecf7('0x10')]||0x0;this[_0xecf7('0x11')]=0x0;this['mailStatus']='unknown';this[_0xecf7('0x12')]=0x0;this[_0xecf7('0x13')]=_0x535aa0[_0xecf7('0x13')]||0x0;this['mailCurrentCapacity']=0x0;this[_0xecf7('0x14')]='unknown';this[_0xecf7('0x15')]=0x0;this[_0xecf7('0x16')]=_0x535aa0['faxCapacity']||0x0;this[_0xecf7('0x17')]=0x0;this['smsStatus']='unknown';this[_0xecf7('0x18')]=0x0;this[_0xecf7('0x19')]=_0x535aa0[_0xecf7('0x19')]||0x0;this[_0xecf7('0x1a')]=0x0;this[_0xecf7('0x1b')]='unknown';this[_0xecf7('0x1c')]=0x0;this['whatsappCapacity']=_0x535aa0[_0xecf7('0x1d')]||0x0;this[_0xecf7('0x1e')]=0x0;this[_0xecf7('0x1f')]=_0xecf7('0xe');this[_0xecf7('0x20')]=0x0;this[_0xecf7('0x21')]=_0x535aa0[_0xecf7('0x21')]||0x0;this[_0xecf7('0x22')]=0x0;this[_0xecf7('0x23')]=![];this[_0xecf7('0x24')]=undefined;this[_0xecf7('0x0')]='';this[_0xecf7('0x25')]();}Agent[_0xecf7('0x26')][_0xecf7('0x27')]=function(_0x50e6ac){if(this[_0x50e6ac+'CurrentCapacity']>0x0){if(this[_0x50e6ac+'Capacity']>0x0&&this[_0x50e6ac+_0xecf7('0x28')]>=this[_0x50e6ac+_0xecf7('0x29')]){return _0xecf7('0x2a');}else{return _0xecf7('0x2b');}}else{return _0xecf7('0x2c');}};Agent[_0xecf7('0x26')][_0xecf7('0x25')]=function(){var _0x5579a6=[_0xecf7('0x2d'),_0xecf7('0x2e'),_0xecf7('0x2f'),_0xecf7('0x30'),'sms',_0xecf7('0x31')];for(var _0x118ab0=0x0;_0x118ab0<_0x5579a6[_0xecf7('0x32')];_0x118ab0+=0x1){var _0x183119=this[_0xecf7('0x27')](_0x5579a6[_0x118ab0]);if(this[_0x5579a6[_0x118ab0]+_0xecf7('0x33')]!==_0x183119){this[_0x5579a6[_0x118ab0]+'StatusTime']=_[_0xecf7('0x34')](moment()[_0xecf7('0x35')]('x'));}this[_0x5579a6[_0x118ab0]+_0xecf7('0x33')]=_0x183119;}var _0x567bf8={'id':this['id'],'name':this['name'],'online':this[_0xecf7('0x7')],'voicePause':this[_0xecf7('0x36')],'chatPause':this[_0xecf7('0x8')],'mailPause':this[_0xecf7('0x9')],'smsPause':this['smsPause'],'faxPause':this[_0xecf7('0xa')],'openchannelPause':this[_0xecf7('0xc')],'chatStatus':this['chatStatus'],'chatStatusTime':this[_0xecf7('0xf')],'chatCapacity':this['chatCapacity'],'chatCurrentCapacity':this['chatCurrentCapacity'],'mailStatus':this['mailStatus'],'mailStatusTime':this['mailStatusTime'],'mailCapacity':this['mailCapacity'],'mailCurrentCapacity':this[_0xecf7('0x37')],'faxStatus':this[_0xecf7('0x14')],'faxStatusTime':this[_0xecf7('0x15')],'faxCapacity':this[_0xecf7('0x16')],'faxCurrentCapacity':this[_0xecf7('0x17')],'smsStatus':this[_0xecf7('0x38')],'smsStatusTime':this['smsStatusTime'],'smsCapacity':this['smsCapacity'],'smsCurrentCapacity':this['smsCurrentCapacity'],'whatsappStatus':this['whatsappStatus'],'whatsappStatusTime':this[_0xecf7('0x1c')],'whatsappCapacity':this['whatsappCapacity'],'whatsappCurrentCapacity':this[_0xecf7('0x1e')],'openchannelStatus':this[_0xecf7('0x1f')],'openchannelStatusTime':this[_0xecf7('0x20')],'openchannelCapacity':this[_0xecf7('0x21')],'openchannelCurrentCapacity':this[_0xecf7('0x22')],'busy':this[_0xecf7('0x23')],'busyQueue':this[_0xecf7('0x24')]};var _0x3c360c=md5(JSON['stringify'](_0x567bf8));if(this['md5']!==_0x3c360c){this[_0xecf7('0x0')]=_0x3c360c;io[_0xecf7('0x39')](_0xecf7('0x3a'),_0x567bf8);}};module[_0xecf7('0x3b')]=Agent;
\ No newline at end of file
+var _0x05e3=['idle','mail','chat','openchannel','fax','length','Status','format','faxStatus','smsCurrentCapacity','whatsappCurrentCapacity','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','stringify','emit','user:save','exports','lodash','moment','md5','redis','defaults','localhost','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','unknown','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatus','smsCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','busy','busyQueue','updateRealtime','prototype','getChannelStatus','CurrentCapacity','Capacity','working'];(function(_0x35ce45,_0x57c22a){var _0x5cd865=function(_0x1100fd){while(--_0x1100fd){_0x35ce45['push'](_0x35ce45['shift']());}};_0x5cd865(++_0x57c22a);}(_0x05e3,0x86));var _0x305e=function(_0x2c1524,_0x311a60){_0x2c1524=_0x2c1524-0x0;var _0x4ddd51=_0x05e3[_0x2c1524];return _0x4ddd51;};'use strict';var _=require(_0x305e('0x0'));var moment=require(_0x305e('0x1'));var md5=require(_0x305e('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');config[_0x305e('0x3')]=_[_0x305e('0x4')](config['redis'],{'host':_0x305e('0x5'),'port':0x18eb});var io=require(_0x305e('0x6'))(new Redis(config['redis']));function Agent(_0xd743b8){this['id']=_0xd743b8['id']||0x0;this[_0x305e('0x7')]=_0xd743b8[_0x305e('0x7')]||'';this[_0x305e('0x8')]=_0xd743b8[_0x305e('0x8')]||!![];this[_0x305e('0x9')]=_0xd743b8[_0x305e('0x9')]||![];this[_0x305e('0xa')]=_0xd743b8['chatPause']||![];this[_0x305e('0xb')]=_0xd743b8['mailPause']||![];this[_0x305e('0xc')]=_0xd743b8[_0x305e('0xc')]||![];this['smsPause']=_0xd743b8[_0x305e('0xd')]||![];this[_0x305e('0xe')]=_0xd743b8[_0x305e('0xe')]||![];this[_0x305e('0xf')]=_0x305e('0x10');this[_0x305e('0x11')]=0x0;this[_0x305e('0x12')]=_0xd743b8[_0x305e('0x12')]||0x0;this[_0x305e('0x13')]=0x0;this[_0x305e('0x14')]=_0x305e('0x10');this[_0x305e('0x15')]=0x0;this['mailCapacity']=_0xd743b8[_0x305e('0x16')]||0x0;this[_0x305e('0x17')]=0x0;this['faxStatus']=_0x305e('0x10');this[_0x305e('0x18')]=0x0;this[_0x305e('0x19')]=_0xd743b8[_0x305e('0x19')]||0x0;this[_0x305e('0x1a')]=0x0;this[_0x305e('0x1b')]=_0x305e('0x10');this['smsStatusTime']=0x0;this[_0x305e('0x1c')]=_0xd743b8[_0x305e('0x1c')]||0x0;this['smsCurrentCapacity']=0x0;this[_0x305e('0x1d')]=_0x305e('0x10');this[_0x305e('0x1e')]=0x0;this[_0x305e('0x1f')]=_0xd743b8[_0x305e('0x1f')]||0x0;this['whatsappCurrentCapacity']=0x0;this['openchannelStatus']='unknown';this['openchannelStatusTime']=0x0;this['openchannelCapacity']=_0xd743b8['openchannelCapacity']||0x0;this['openchannelCurrentCapacity']=0x0;this[_0x305e('0x20')]=![];this[_0x305e('0x21')]=undefined;this[_0x305e('0x2')]='';this[_0x305e('0x22')]();}Agent[_0x305e('0x23')][_0x305e('0x24')]=function(_0x4a70d6){if(this[_0x4a70d6+_0x305e('0x25')]>0x0){if(this[_0x4a70d6+'Capacity']>0x0&&this[_0x4a70d6+_0x305e('0x25')]>=this[_0x4a70d6+_0x305e('0x26')]){return'maxcapacity';}else{return _0x305e('0x27');}}else{return _0x305e('0x28');}};Agent[_0x305e('0x23')][_0x305e('0x22')]=function(){var _0x151361=[_0x305e('0x29'),_0x305e('0x2a'),_0x305e('0x2b'),_0x305e('0x2c'),'sms','whatsapp'];for(var _0x1bda0f=0x0;_0x1bda0f<_0x151361[_0x305e('0x2d')];_0x1bda0f+=0x1){var _0x1aeb09=this[_0x305e('0x24')](_0x151361[_0x1bda0f]);if(this[_0x151361[_0x1bda0f]+_0x305e('0x2e')]!==_0x1aeb09){this[_0x151361[_0x1bda0f]+'StatusTime']=_['toNumber'](moment()[_0x305e('0x2f')]('x'));}this[_0x151361[_0x1bda0f]+_0x305e('0x2e')]=_0x1aeb09;}var _0x10b398={'id':this['id'],'name':this[_0x305e('0x7')],'online':this[_0x305e('0x8')],'voicePause':this['voicePause'],'chatPause':this['chatPause'],'mailPause':this[_0x305e('0xb')],'smsPause':this[_0x305e('0xd')],'faxPause':this[_0x305e('0xc')],'openchannelPause':this[_0x305e('0xe')],'chatStatus':this['chatStatus'],'chatStatusTime':this[_0x305e('0x11')],'chatCapacity':this[_0x305e('0x12')],'chatCurrentCapacity':this['chatCurrentCapacity'],'mailStatus':this[_0x305e('0x14')],'mailStatusTime':this[_0x305e('0x15')],'mailCapacity':this[_0x305e('0x16')],'mailCurrentCapacity':this[_0x305e('0x17')],'faxStatus':this[_0x305e('0x30')],'faxStatusTime':this['faxStatusTime'],'faxCapacity':this['faxCapacity'],'faxCurrentCapacity':this[_0x305e('0x1a')],'smsStatus':this[_0x305e('0x1b')],'smsStatusTime':this['smsStatusTime'],'smsCapacity':this['smsCapacity'],'smsCurrentCapacity':this[_0x305e('0x31')],'whatsappStatus':this[_0x305e('0x1d')],'whatsappStatusTime':this[_0x305e('0x1e')],'whatsappCapacity':this['whatsappCapacity'],'whatsappCurrentCapacity':this[_0x305e('0x32')],'openchannelStatus':this['openchannelStatus'],'openchannelStatusTime':this[_0x305e('0x33')],'openchannelCapacity':this[_0x305e('0x34')],'openchannelCurrentCapacity':this[_0x305e('0x35')],'busy':this[_0x305e('0x20')],'busyQueue':this[_0x305e('0x21')]};var _0x3d2afb=md5(JSON[_0x305e('0x36')](_0x10b398));if(this['md5']!==_0x3d2afb){this[_0x305e('0x2')]=_0x3d2afb;io[_0x305e('0x37')](_0x305e('0x38'),_0x10b398);}};module[_0x305e('0x39')]=Agent;
\ No newline at end of file
index fe27215..14d0170 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc25a=['prototype','loggedIn','length','online','chatPause','paused','available','stringify','format','emit','chat_queue:save','exports','md5','ioredis','../../../config/environment','redis','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','_rr','map'];(function(_0x25b78d,_0x347586){var _0x3d04f5=function(_0x1c0c81){while(--_0x1c0c81){_0x25b78d['push'](_0x25b78d['shift']());}};_0x3d04f5(++_0x347586);}(_0xc25a,0x15c));var _0xac25=function(_0x1da527,_0x2dc953){_0x1da527=_0x1da527-0x0;var _0x40fc7c=_0xc25a[_0x1da527];return _0x40fc7c;};'use strict';var _=require('lodash');var md5=require(_0xac25('0x0'));var util=require('util');var Redis=require(_0xac25('0x1'));var config=require(_0xac25('0x2'));config[_0xac25('0x3')]=_['defaults'](config[_0xac25('0x3')],{'host':'localhost','port':0x18eb});var io=require(_0xac25('0x4'))(new Redis(config['redis']));function ChatQueue(_0x20c811){this['id']=_0x20c811['id']||0x0;this[_0xac25('0x5')]=_0x20c811[_0xac25('0x5')]||'';this[_0xac25('0x6')]=_0x20c811[_0xac25('0x6')]||0xa;this[_0xac25('0x7')]=_0x20c811['strategy']||_0xac25('0x8');this[_0xac25('0x9')]=_0x20c811[_0xac25('0x9')];this[_0xac25('0xa')]={};this[_0xac25('0xb')]=0x0;this[_0xac25('0x0')]='';this[_0xac25('0xc')]();this[_0xac25('0xd')]();}ChatQueue['prototype'][_0xac25('0xc')]=function(){var _0x10e7ed=this[_0xac25('0xa')][_0xac25('0xe')];this[_0xac25('0xa')]=_[_0xac25('0xf')](this[_0xac25('0x9')],'id');this['mapAgentsId'][_0xac25('0xe')]=_0x10e7ed;};ChatQueue[_0xac25('0x10')][_0xac25('0xd')]=function(){this[_0xac25('0x11')]=0x0;this['paused']=0x0;for(var _0x369d2f=0x0;_0x369d2f<this[_0xac25('0x9')][_0xac25('0x12')];_0x369d2f+=0x1){if(this[_0xac25('0x9')][_0x369d2f][_0xac25('0x13')]){this[_0xac25('0x11')]+=0x1;}if(this[_0xac25('0x9')][_0x369d2f][_0xac25('0x14')]){this[_0xac25('0x15')]+=0x1;}}this[_0xac25('0x16')]=this[_0xac25('0x11')]-this['paused'];this[_0xac25('0x16')]=this[_0xac25('0x16')]>=0x0?this[_0xac25('0x16')]:0x0;var _0x43d12e={'id':this['id'],'available':this['available'],'loggedIn':this[_0xac25('0x11')],'name':this[_0xac25('0x5')],'paused':this[_0xac25('0x15')],'waiting':this[_0xac25('0xb')]};var _0x3f70ae=md5(JSON[_0xac25('0x17')](_0x43d12e));if(this[_0xac25('0x0')]!==_0x3f70ae){this[_0xac25('0x0')]=_0x3f70ae;io['to'](util[_0xac25('0x18')]('chat:queue:%s',_0x43d12e[_0xac25('0x5')]))[_0xac25('0x19')](_0xac25('0x1a'),_0x43d12e);}};module[_0xac25('0x1b')]=ChatQueue;
\ No newline at end of file
+var _0xe544=['strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','length','online','chatPause','available','stringify','md5','format','emit','chat_queue:save','util','../../../config/environment','redis','defaults','socket.io-emitter','name','timeout'];(function(_0x2c862c,_0x269b88){var _0x26403b=function(_0x33bb88){while(--_0x33bb88){_0x2c862c['push'](_0x2c862c['shift']());}};_0x26403b(++_0x269b88);}(_0xe544,0x181));var _0x4e54=function(_0x569cbe,_0x2b4cb4){_0x569cbe=_0x569cbe-0x0;var _0x2104a5=_0xe544[_0x569cbe];return _0x2104a5;};'use strict';var _=require('lodash');var md5=require('md5');var util=require(_0x4e54('0x0'));var Redis=require('ioredis');var config=require(_0x4e54('0x1'));config[_0x4e54('0x2')]=_[_0x4e54('0x3')](config[_0x4e54('0x2')],{'host':'localhost','port':0x18eb});var io=require(_0x4e54('0x4'))(new Redis(config[_0x4e54('0x2')]));function ChatQueue(_0xd4a5ac){this['id']=_0xd4a5ac['id']||0x0;this[_0x4e54('0x5')]=_0xd4a5ac[_0x4e54('0x5')]||'';this[_0x4e54('0x6')]=_0xd4a5ac[_0x4e54('0x6')]||0xa;this[_0x4e54('0x7')]=_0xd4a5ac[_0x4e54('0x7')]||_0x4e54('0x8');this['Agents']=_0xd4a5ac[_0x4e54('0x9')];this[_0x4e54('0xa')]={};this[_0x4e54('0xb')]=0x0;this['md5']='';this[_0x4e54('0xc')]();this[_0x4e54('0xd')]();}ChatQueue[_0x4e54('0xe')]['updateRouting']=function(){var _0x2f7757=this['mapAgentsId'][_0x4e54('0xf')];this[_0x4e54('0xa')]=_[_0x4e54('0x10')](this[_0x4e54('0x9')],'id');this['mapAgentsId']['_rr']=_0x2f7757;};ChatQueue[_0x4e54('0xe')][_0x4e54('0xd')]=function(){this[_0x4e54('0x11')]=0x0;this[_0x4e54('0x12')]=0x0;for(var _0x49706a=0x0;_0x49706a<this[_0x4e54('0x9')][_0x4e54('0x13')];_0x49706a+=0x1){if(this['Agents'][_0x49706a][_0x4e54('0x14')]){this['loggedIn']+=0x1;}if(this['Agents'][_0x49706a][_0x4e54('0x15')]){this[_0x4e54('0x12')]+=0x1;}}this[_0x4e54('0x16')]=this[_0x4e54('0x11')]-this[_0x4e54('0x12')];this['available']=this[_0x4e54('0x16')]>=0x0?this[_0x4e54('0x16')]:0x0;var _0x15998a={'id':this['id'],'available':this[_0x4e54('0x16')],'loggedIn':this[_0x4e54('0x11')],'name':this[_0x4e54('0x5')],'paused':this[_0x4e54('0x12')],'waiting':this[_0x4e54('0xb')]};var _0xa3619d=md5(JSON[_0x4e54('0x17')](_0x15998a));if(this[_0x4e54('0x18')]!==_0xa3619d){this[_0x4e54('0x18')]=_0xa3619d;io['to'](util[_0x4e54('0x19')]('chat:queue:%s',_0x15998a[_0x4e54('0x5')]))[_0x4e54('0x1a')](_0x4e54('0x1b'),_0x15998a);}};module['exports']=ChatQueue;
\ No newline at end of file
index 1735b73..b380ced 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0181=['format','emit','exports','lodash','md5','util','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','updateRouting','updateRealtime','prototype','map','_rr','length','online','faxPause','paused','available','loggedIn','waiting'];(function(_0x3d0366,_0x50211a){var _0x5ce75e=function(_0xc70777){while(--_0xc70777){_0x3d0366['push'](_0x3d0366['shift']());}};_0x5ce75e(++_0x50211a);}(_0x0181,0x6f));var _0x1018=function(_0x265aa2,_0x220072){_0x265aa2=_0x265aa2-0x0;var _0x447a3a=_0x0181[_0x265aa2];return _0x447a3a;};'use strict';var _=require(_0x1018('0x0'));var md5=require(_0x1018('0x1'));var util=require(_0x1018('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');config[_0x1018('0x3')]=_['defaults'](config[_0x1018('0x3')],{'host':_0x1018('0x4'),'port':0x18eb});var io=require(_0x1018('0x5'))(new Redis(config['redis']));function FaxQueue(_0x55625c){this['id']=_0x55625c['id']||0x0;this['name']=_0x55625c[_0x1018('0x6')]||'';this[_0x1018('0x7')]=_0x55625c[_0x1018('0x7')]||0xa;this[_0x1018('0x8')]=_0x55625c['strategy']||_0x1018('0x9');this[_0x1018('0xa')]=_0x55625c[_0x1018('0xa')];this[_0x1018('0xb')]={};this['waiting']=0x0;this[_0x1018('0x1')]='';this[_0x1018('0xc')]();this[_0x1018('0xd')]();}FaxQueue[_0x1018('0xe')]['updateRouting']=function(){var _0x1dac70=this['mapAgentsId']['_rr'];this['mapAgentsId']=_[_0x1018('0xf')](this[_0x1018('0xa')],'id');this[_0x1018('0xb')][_0x1018('0x10')]=_0x1dac70;};FaxQueue[_0x1018('0xe')][_0x1018('0xd')]=function(){this['loggedIn']=0x0;this['paused']=0x0;for(var _0x40b3eb=0x0;_0x40b3eb<this[_0x1018('0xa')][_0x1018('0x11')];_0x40b3eb+=0x1){if(this[_0x1018('0xa')][_0x40b3eb][_0x1018('0x12')]){this['loggedIn']+=0x1;}if(this[_0x1018('0xa')][_0x40b3eb][_0x1018('0x13')]){this[_0x1018('0x14')]+=0x1;}}this[_0x1018('0x15')]=this['loggedIn']-this[_0x1018('0x14')];this['available']=this[_0x1018('0x15')]>=0x0?this[_0x1018('0x15')]:0x0;var _0x3ae8b6={'id':this['id'],'available':this[_0x1018('0x15')],'loggedIn':this[_0x1018('0x16')],'name':this['name'],'paused':this[_0x1018('0x14')],'waiting':this[_0x1018('0x17')]};var _0x73b62e=md5(JSON['stringify'](_0x3ae8b6));if(this[_0x1018('0x1')]!==_0x73b62e){this[_0x1018('0x1')]=_0x73b62e;io['to'](util[_0x1018('0x18')]('fax:queue:%s',_0x3ae8b6['name']))[_0x1018('0x19')]('fax_queue:save',_0x3ae8b6);}};module[_0x1018('0x1a')]=FaxQueue;
\ No newline at end of file
+var _0xa15c=['ioredis','../../../config/environment','redis','defaults','localhost','name','timeout','strategy','Agents','waiting','updateRouting','updateRealtime','prototype','mapAgentsId','_rr','map','loggedIn','paused','length','available','stringify','fax:queue:%s','emit','fax_queue:save','exports','lodash','md5','util'];(function(_0x384231,_0x50be41){var _0x2480bf=function(_0x1c4838){while(--_0x1c4838){_0x384231['push'](_0x384231['shift']());}};_0x2480bf(++_0x50be41);}(_0xa15c,0x169));var _0xca15=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xa15c[_0x5ddb1c];return _0x354adc;};'use strict';var _=require(_0xca15('0x0'));var md5=require(_0xca15('0x1'));var util=require(_0xca15('0x2'));var Redis=require(_0xca15('0x3'));var config=require(_0xca15('0x4'));config[_0xca15('0x5')]=_[_0xca15('0x6')](config['redis'],{'host':_0xca15('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function FaxQueue(_0x16f5dc){this['id']=_0x16f5dc['id']||0x0;this[_0xca15('0x8')]=_0x16f5dc['name']||'';this[_0xca15('0x9')]=_0x16f5dc[_0xca15('0x9')]||0xa;this[_0xca15('0xa')]=_0x16f5dc[_0xca15('0xa')]||'beepall';this[_0xca15('0xb')]=_0x16f5dc[_0xca15('0xb')];this['mapAgentsId']={};this[_0xca15('0xc')]=0x0;this[_0xca15('0x1')]='';this[_0xca15('0xd')]();this[_0xca15('0xe')]();}FaxQueue[_0xca15('0xf')][_0xca15('0xd')]=function(){var _0x1ca18d=this[_0xca15('0x10')][_0xca15('0x11')];this[_0xca15('0x10')]=_[_0xca15('0x12')](this['Agents'],'id');this[_0xca15('0x10')][_0xca15('0x11')]=_0x1ca18d;};FaxQueue['prototype'][_0xca15('0xe')]=function(){this[_0xca15('0x13')]=0x0;this[_0xca15('0x14')]=0x0;for(var _0x5dfdcb=0x0;_0x5dfdcb<this[_0xca15('0xb')][_0xca15('0x15')];_0x5dfdcb+=0x1){if(this[_0xca15('0xb')][_0x5dfdcb]['online']){this['loggedIn']+=0x1;}if(this[_0xca15('0xb')][_0x5dfdcb]['faxPause']){this[_0xca15('0x14')]+=0x1;}}this[_0xca15('0x16')]=this[_0xca15('0x13')]-this[_0xca15('0x14')];this[_0xca15('0x16')]=this[_0xca15('0x16')]>=0x0?this['available']:0x0;var _0x3e6f59={'id':this['id'],'available':this[_0xca15('0x16')],'loggedIn':this['loggedIn'],'name':this[_0xca15('0x8')],'paused':this[_0xca15('0x14')],'waiting':this['waiting']};var _0x6fbd05=md5(JSON[_0xca15('0x17')](_0x3e6f59));if(this[_0xca15('0x1')]!==_0x6fbd05){this['md5']=_0x6fbd05;io['to'](util['format'](_0xca15('0x18'),_0x3e6f59[_0xca15('0x8')]))[_0xca15('0x19')](_0xca15('0x1a'),_0x3e6f59);}};module[_0xca15('0x1b')]=FaxQueue;
\ No newline at end of file
index 41c417f..9adbb0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e3a=['name','Intervals'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x5e3a,0xd2));var _0xa5e3=function(_0x2c9cb7,_0xca7d5b){_0x2c9cb7=_0x2c9cb7-0x0;var _0x123110=_0x5e3a[_0x2c9cb7];return _0x123110;};'use strict';function Interval(_0xf6f679){this['id']=_0xf6f679['id']||0x0;this['name']=_0xf6f679[_0xa5e3('0x0')]||'';this[_0xa5e3('0x1')]=_0xf6f679[_0xa5e3('0x1')]||{};}module['exports']=Interval;
\ No newline at end of file
+var _0xe5be=['name','Intervals','exports'];(function(_0x352864,_0x2b385c){var _0xd1e00e=function(_0xa023f4){while(--_0xa023f4){_0x352864['push'](_0x352864['shift']());}};_0xd1e00e(++_0x2b385c);}(_0xe5be,0x129));var _0xee5b=function(_0x495344,_0x541018){_0x495344=_0x495344-0x0;var _0x3d3fca=_0xe5be[_0x495344];return _0x3d3fca;};'use strict';function Interval(_0x358333){this['id']=_0x358333['id']||0x0;this[_0xee5b('0x0')]=_0x358333[_0xee5b('0x0')]||'';this[_0xee5b('0x1')]=_0x358333['Intervals']||{};}module[_0xee5b('0x2')]=Interval;
\ No newline at end of file
index 843ac6c..5a32336 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc28b=['strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','prototype','map','loggedIn','length','available','paused','stringify','format','emit','mail_queue:save','exports','lodash','md5','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout'];(function(_0x400016,_0x216c78){var _0x2679ec=function(_0x46882c){while(--_0x46882c){_0x400016['push'](_0x400016['shift']());}};_0x2679ec(++_0x216c78);}(_0xc28b,0x11f));var _0xbc28=function(_0x19077e,_0x1ae7cd){_0x19077e=_0x19077e-0x0;var _0x440fc3=_0xc28b[_0x19077e];return _0x440fc3;};'use strict';var _=require(_0xbc28('0x0'));var md5=require(_0xbc28('0x1'));var util=require('util');var Redis=require(_0xbc28('0x2'));var config=require(_0xbc28('0x3'));config[_0xbc28('0x4')]=_[_0xbc28('0x5')](config[_0xbc28('0x4')],{'host':_0xbc28('0x6'),'port':0x18eb});var io=require(_0xbc28('0x7'))(new Redis(config[_0xbc28('0x4')]));function MailQueue(_0x58212b){this['id']=_0x58212b['id']||0x0;this['name']=_0x58212b[_0xbc28('0x8')]||'';this['timeout']=_0x58212b[_0xbc28('0x9')]||0xa;this[_0xbc28('0xa')]=_0x58212b['strategy']||_0xbc28('0xb');this[_0xbc28('0xc')]=_0x58212b[_0xbc28('0xc')];this[_0xbc28('0xd')]={};this[_0xbc28('0xe')]=0x0;this[_0xbc28('0x1')]='';this[_0xbc28('0xf')]();this['updateRealtime']();}MailQueue[_0xbc28('0x10')][_0xbc28('0xf')]=function(){var _0x3a4827=this['mapAgentsId']['_rr'];this['mapAgentsId']=_[_0xbc28('0x11')](this[_0xbc28('0xc')],'id');this[_0xbc28('0xd')]['_rr']=_0x3a4827;};MailQueue['prototype']['updateRealtime']=function(){this[_0xbc28('0x12')]=0x0;this['paused']=0x0;for(var _0x34a897=0x0;_0x34a897<this[_0xbc28('0xc')][_0xbc28('0x13')];_0x34a897+=0x1){if(this[_0xbc28('0xc')][_0x34a897]['online']){this['loggedIn']+=0x1;}if(this[_0xbc28('0xc')][_0x34a897]['mailPause']){this['paused']+=0x1;}}this[_0xbc28('0x14')]=this['loggedIn']-this[_0xbc28('0x15')];this['available']=this[_0xbc28('0x14')]>=0x0?this[_0xbc28('0x14')]:0x0;var _0x139af0={'id':this['id'],'available':this[_0xbc28('0x14')],'loggedIn':this['loggedIn'],'name':this[_0xbc28('0x8')],'paused':this['paused'],'waiting':this[_0xbc28('0xe')]};var _0x152118=md5(JSON[_0xbc28('0x16')](_0x139af0));if(this[_0xbc28('0x1')]!==_0x152118){this[_0xbc28('0x1')]=_0x152118;io['to'](util[_0xbc28('0x17')]('mail:queue:%s',_0x139af0[_0xbc28('0x8')]))[_0xbc28('0x18')](_0xbc28('0x19'),_0x139af0);}};module[_0xbc28('0x1a')]=MailQueue;
\ No newline at end of file
+var _0x262a=['Agents','mapAgentsId','updateRouting','prototype','map','_rr','loggedIn','paused','length','mailPause','available','stringify','format','emit','mail_queue:save','exports','lodash','md5','util','../../../config/environment','redis','name','timeout','strategy','beepall'];(function(_0x3f92c5,_0x260799){var _0x4d5618=function(_0x2eb65a){while(--_0x2eb65a){_0x3f92c5['push'](_0x3f92c5['shift']());}};_0x4d5618(++_0x260799);}(_0x262a,0xf1));var _0xa262=function(_0x2872b0,_0x4b0855){_0x2872b0=_0x2872b0-0x0;var _0x58b379=_0x262a[_0x2872b0];return _0x58b379;};'use strict';var _=require(_0xa262('0x0'));var md5=require(_0xa262('0x1'));var util=require(_0xa262('0x2'));var Redis=require('ioredis');var config=require(_0xa262('0x3'));config[_0xa262('0x4')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xa262('0x4')]));function MailQueue(_0x53bf14){this['id']=_0x53bf14['id']||0x0;this[_0xa262('0x5')]=_0x53bf14['name']||'';this[_0xa262('0x6')]=_0x53bf14[_0xa262('0x6')]||0xa;this[_0xa262('0x7')]=_0x53bf14[_0xa262('0x7')]||_0xa262('0x8');this[_0xa262('0x9')]=_0x53bf14[_0xa262('0x9')];this[_0xa262('0xa')]={};this['waiting']=0x0;this['md5']='';this[_0xa262('0xb')]();this['updateRealtime']();}MailQueue[_0xa262('0xc')][_0xa262('0xb')]=function(){var _0x2bd957=this[_0xa262('0xa')]['_rr'];this[_0xa262('0xa')]=_[_0xa262('0xd')](this[_0xa262('0x9')],'id');this['mapAgentsId'][_0xa262('0xe')]=_0x2bd957;};MailQueue[_0xa262('0xc')]['updateRealtime']=function(){this[_0xa262('0xf')]=0x0;this[_0xa262('0x10')]=0x0;for(var _0x2f341b=0x0;_0x2f341b<this['Agents'][_0xa262('0x11')];_0x2f341b+=0x1){if(this['Agents'][_0x2f341b]['online']){this[_0xa262('0xf')]+=0x1;}if(this[_0xa262('0x9')][_0x2f341b][_0xa262('0x12')]){this[_0xa262('0x10')]+=0x1;}}this['available']=this['loggedIn']-this[_0xa262('0x10')];this[_0xa262('0x13')]=this[_0xa262('0x13')]>=0x0?this[_0xa262('0x13')]:0x0;var _0x4c8560={'id':this['id'],'available':this[_0xa262('0x13')],'loggedIn':this[_0xa262('0xf')],'name':this[_0xa262('0x5')],'paused':this[_0xa262('0x10')],'waiting':this['waiting']};var _0x1a1046=md5(JSON[_0xa262('0x14')](_0x4c8560));if(this[_0xa262('0x1')]!==_0x1a1046){this['md5']=_0x1a1046;io['to'](util[_0xa262('0x15')]('mail:queue:%s',_0x4c8560[_0xa262('0x5')]))[_0xa262('0x16')](_0xa262('0x17'),_0x4c8560);}};module[_0xa262('0x18')]=MailQueue;
\ No newline at end of file
index a390254..0d8e47d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['strategy','Agents','mapAgentsId','updateRouting','updateRealtime','map','_rr','prototype','loggedIn','paused','length','online','available','waiting','stringify','format','openchannel:queue:%s','emit','openchannel_queue:save','lodash','md5','util','ioredis','../../../config/environment','redis','socket.io-emitter','name','timeout'];(function(_0x1da527,_0x2dc953){var _0x40fc7c=function(_0x9949f5){while(--_0x9949f5){_0x1da527['push'](_0x1da527['shift']());}};_0x40fc7c(++_0x2dc953);}(_0xc4aa,0x1b7));var _0xac4a=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0xc4aa[_0xa148b7];return _0x51efd3;};'use strict';var _=require(_0xac4a('0x0'));var md5=require(_0xac4a('0x1'));var util=require(_0xac4a('0x2'));var Redis=require(_0xac4a('0x3'));var config=require(_0xac4a('0x4'));config[_0xac4a('0x5')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xac4a('0x6'))(new Redis(config[_0xac4a('0x5')]));function OpenchannelQueue(_0x730a38){this['id']=_0x730a38['id']||0x0;this[_0xac4a('0x7')]=_0x730a38[_0xac4a('0x7')]||'';this[_0xac4a('0x8')]=_0x730a38[_0xac4a('0x8')]||0xa;this[_0xac4a('0x9')]=_0x730a38['strategy']||'beepall';this[_0xac4a('0xa')]=_0x730a38[_0xac4a('0xa')];this[_0xac4a('0xb')]={};this['waiting']=0x0;this[_0xac4a('0x1')]='';this[_0xac4a('0xc')]();this[_0xac4a('0xd')]();}OpenchannelQueue['prototype'][_0xac4a('0xc')]=function(){var _0x488e3c=this[_0xac4a('0xb')]['_rr'];this[_0xac4a('0xb')]=_[_0xac4a('0xe')](this[_0xac4a('0xa')],'id');this['mapAgentsId'][_0xac4a('0xf')]=_0x488e3c;};OpenchannelQueue[_0xac4a('0x10')][_0xac4a('0xd')]=function(){this[_0xac4a('0x11')]=0x0;this[_0xac4a('0x12')]=0x0;for(var _0x3b71c0=0x0;_0x3b71c0<this[_0xac4a('0xa')][_0xac4a('0x13')];_0x3b71c0+=0x1){if(this[_0xac4a('0xa')][_0x3b71c0][_0xac4a('0x14')]){this[_0xac4a('0x11')]+=0x1;}if(this[_0xac4a('0xa')][_0x3b71c0]['openchannelPause']){this[_0xac4a('0x12')]+=0x1;}}this[_0xac4a('0x15')]=this[_0xac4a('0x11')]-this[_0xac4a('0x12')];this[_0xac4a('0x15')]=this[_0xac4a('0x15')]>=0x0?this[_0xac4a('0x15')]:0x0;var _0x44ec59={'id':this['id'],'available':this['available'],'loggedIn':this['loggedIn'],'name':this[_0xac4a('0x7')],'paused':this[_0xac4a('0x12')],'waiting':this[_0xac4a('0x16')]};var _0x4d837c=md5(JSON[_0xac4a('0x17')](_0x44ec59));if(this[_0xac4a('0x1')]!==_0x4d837c){this[_0xac4a('0x1')]=_0x4d837c;io['to'](util[_0xac4a('0x18')](_0xac4a('0x19'),_0x44ec59[_0xac4a('0x7')]))[_0xac4a('0x1a')](_0xac4a('0x1b'),_0x44ec59);}};module['exports']=OpenchannelQueue;
\ No newline at end of file
+var _0x7a54=['exports','lodash','md5','util','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','waiting','updateRealtime','mapAgentsId','_rr','map','Agents','prototype','loggedIn','paused','length','openchannelPause','available','stringify','format','openchannel:queue:%s','emit','openchannel_queue:save'];(function(_0x3305de,_0x16582f){var _0x3b5a84=function(_0x57d7e1){while(--_0x57d7e1){_0x3305de['push'](_0x3305de['shift']());}};_0x3b5a84(++_0x16582f);}(_0x7a54,0x106));var _0x47a5=function(_0x1cf211,_0x588cdb){_0x1cf211=_0x1cf211-0x0;var _0x29b8c7=_0x7a54[_0x1cf211];return _0x29b8c7;};'use strict';var _=require(_0x47a5('0x0'));var md5=require(_0x47a5('0x1'));var util=require(_0x47a5('0x2'));var Redis=require('ioredis');var config=require(_0x47a5('0x3'));config[_0x47a5('0x4')]=_['defaults'](config[_0x47a5('0x4')],{'host':_0x47a5('0x5'),'port':0x18eb});var io=require(_0x47a5('0x6'))(new Redis(config[_0x47a5('0x4')]));function OpenchannelQueue(_0xfdf934){this['id']=_0xfdf934['id']||0x0;this['name']=_0xfdf934[_0x47a5('0x7')]||'';this['timeout']=_0xfdf934[_0x47a5('0x8')]||0xa;this[_0x47a5('0x9')]=_0xfdf934['strategy']||_0x47a5('0xa');this['Agents']=_0xfdf934['Agents'];this['mapAgentsId']={};this[_0x47a5('0xb')]=0x0;this[_0x47a5('0x1')]='';this['updateRouting']();this[_0x47a5('0xc')]();}OpenchannelQueue['prototype']['updateRouting']=function(){var _0x1f47f4=this[_0x47a5('0xd')][_0x47a5('0xe')];this[_0x47a5('0xd')]=_[_0x47a5('0xf')](this[_0x47a5('0x10')],'id');this[_0x47a5('0xd')]['_rr']=_0x1f47f4;};OpenchannelQueue[_0x47a5('0x11')][_0x47a5('0xc')]=function(){this[_0x47a5('0x12')]=0x0;this[_0x47a5('0x13')]=0x0;for(var _0x139f25=0x0;_0x139f25<this[_0x47a5('0x10')][_0x47a5('0x14')];_0x139f25+=0x1){if(this[_0x47a5('0x10')][_0x139f25]['online']){this[_0x47a5('0x12')]+=0x1;}if(this[_0x47a5('0x10')][_0x139f25][_0x47a5('0x15')]){this[_0x47a5('0x13')]+=0x1;}}this[_0x47a5('0x16')]=this['loggedIn']-this['paused'];this[_0x47a5('0x16')]=this['available']>=0x0?this['available']:0x0;var _0x423a81={'id':this['id'],'available':this[_0x47a5('0x16')],'loggedIn':this[_0x47a5('0x12')],'name':this[_0x47a5('0x7')],'paused':this[_0x47a5('0x13')],'waiting':this[_0x47a5('0xb')]};var _0x2763d6=md5(JSON[_0x47a5('0x17')](_0x423a81));if(this[_0x47a5('0x1')]!==_0x2763d6){this['md5']=_0x2763d6;io['to'](util[_0x47a5('0x18')](_0x47a5('0x19'),_0x423a81['name']))[_0x47a5('0x1a')](_0x47a5('0x1b'),_0x423a81);}};module[_0x47a5('0x1c')]=OpenchannelQueue;
\ No newline at end of file
index a933e20..4376169 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5636=['stringify','format','sms:queue:%s','emit','sms_queue:save','exports','lodash','md5','redis','defaults','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','updateRouting','updateRealtime','_rr','map','prototype','paused','length','online','smsPause','available','waiting'];(function(_0x50007c,_0x1cbf11){var _0x5c1ec7=function(_0x52d038){while(--_0x52d038){_0x50007c['push'](_0x50007c['shift']());}};_0x5c1ec7(++_0x1cbf11);}(_0x5636,0x102));var _0x6563=function(_0x40bad2,_0x2c4d52){_0x40bad2=_0x40bad2-0x0;var _0x451eee=_0x5636[_0x40bad2];return _0x451eee;};'use strict';var _=require(_0x6563('0x0'));var md5=require(_0x6563('0x1'));var util=require('util');var Redis=require('ioredis');var config=require('../../../config/environment');config[_0x6563('0x2')]=_[_0x6563('0x3')](config[_0x6563('0x2')],{'host':'localhost','port':0x18eb});var io=require(_0x6563('0x4'))(new Redis(config[_0x6563('0x2')]));function SmsQueue(_0x453da9){this['id']=_0x453da9['id']||0x0;this[_0x6563('0x5')]=_0x453da9[_0x6563('0x5')]||'';this[_0x6563('0x6')]=_0x453da9[_0x6563('0x6')]||0xa;this[_0x6563('0x7')]=_0x453da9[_0x6563('0x7')]||_0x6563('0x8');this[_0x6563('0x9')]=_0x453da9[_0x6563('0x9')];this[_0x6563('0xa')]={};this['waiting']=0x0;this['md5']='';this[_0x6563('0xb')]();this[_0x6563('0xc')]();}SmsQueue['prototype']['updateRouting']=function(){var _0x5da960=this[_0x6563('0xa')][_0x6563('0xd')];this[_0x6563('0xa')]=_[_0x6563('0xe')](this[_0x6563('0x9')],'id');this[_0x6563('0xa')][_0x6563('0xd')]=_0x5da960;};SmsQueue[_0x6563('0xf')][_0x6563('0xc')]=function(){this['loggedIn']=0x0;this[_0x6563('0x10')]=0x0;for(var _0x5e9329=0x0;_0x5e9329<this[_0x6563('0x9')][_0x6563('0x11')];_0x5e9329+=0x1){if(this[_0x6563('0x9')][_0x5e9329][_0x6563('0x12')]){this['loggedIn']+=0x1;}if(this[_0x6563('0x9')][_0x5e9329][_0x6563('0x13')]){this[_0x6563('0x10')]+=0x1;}}this[_0x6563('0x14')]=this['loggedIn']-this[_0x6563('0x10')];this['available']=this['available']>=0x0?this['available']:0x0;var _0x14c6a6={'id':this['id'],'available':this['available'],'loggedIn':this['loggedIn'],'name':this[_0x6563('0x5')],'paused':this[_0x6563('0x10')],'waiting':this[_0x6563('0x15')]};var _0x37f493=md5(JSON[_0x6563('0x16')](_0x14c6a6));if(this[_0x6563('0x1')]!==_0x37f493){this[_0x6563('0x1')]=_0x37f493;io['to'](util[_0x6563('0x17')](_0x6563('0x18'),_0x14c6a6['name']))[_0x6563('0x19')](_0x6563('0x1a'),_0x14c6a6);}};module[_0x6563('0x1b')]=SmsQueue;
\ No newline at end of file
+var _0x27c5=['online','smsPause','paused','available','stringify','format','sms_queue:save','util','ioredis','../../../config/environment','defaults','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','md5','updateRouting','updateRealtime','prototype','mapAgentsId','_rr','map','loggedIn'];(function(_0x3ee1b9,_0x285336){var _0x53c7a7=function(_0x4b1b74){while(--_0x4b1b74){_0x3ee1b9['push'](_0x3ee1b9['shift']());}};_0x53c7a7(++_0x285336);}(_0x27c5,0x173));var _0x527c=function(_0x507403,_0x3f954d){_0x507403=_0x507403-0x0;var _0x1327c=_0x27c5[_0x507403];return _0x1327c;};'use strict';var _=require('lodash');var md5=require('md5');var util=require(_0x527c('0x0'));var Redis=require(_0x527c('0x1'));var config=require(_0x527c('0x2'));config['redis']=_[_0x527c('0x3')](config[_0x527c('0x4')],{'host':_0x527c('0x5'),'port':0x18eb});var io=require(_0x527c('0x6'))(new Redis(config[_0x527c('0x4')]));function SmsQueue(_0x2bb668){this['id']=_0x2bb668['id']||0x0;this[_0x527c('0x7')]=_0x2bb668['name']||'';this[_0x527c('0x8')]=_0x2bb668['timeout']||0xa;this[_0x527c('0x9')]=_0x2bb668['strategy']||_0x527c('0xa');this[_0x527c('0xb')]=_0x2bb668[_0x527c('0xb')];this['mapAgentsId']={};this[_0x527c('0xc')]=0x0;this[_0x527c('0xd')]='';this[_0x527c('0xe')]();this[_0x527c('0xf')]();}SmsQueue[_0x527c('0x10')][_0x527c('0xe')]=function(){var _0x8519ed=this[_0x527c('0x11')][_0x527c('0x12')];this[_0x527c('0x11')]=_[_0x527c('0x13')](this['Agents'],'id');this['mapAgentsId'][_0x527c('0x12')]=_0x8519ed;};SmsQueue[_0x527c('0x10')][_0x527c('0xf')]=function(){this[_0x527c('0x14')]=0x0;this['paused']=0x0;for(var _0x416ed8=0x0;_0x416ed8<this[_0x527c('0xb')]['length'];_0x416ed8+=0x1){if(this['Agents'][_0x416ed8][_0x527c('0x15')]){this['loggedIn']+=0x1;}if(this['Agents'][_0x416ed8][_0x527c('0x16')]){this[_0x527c('0x17')]+=0x1;}}this[_0x527c('0x18')]=this['loggedIn']-this[_0x527c('0x17')];this[_0x527c('0x18')]=this['available']>=0x0?this[_0x527c('0x18')]:0x0;var _0x478d6e={'id':this['id'],'available':this[_0x527c('0x18')],'loggedIn':this[_0x527c('0x14')],'name':this['name'],'paused':this['paused'],'waiting':this[_0x527c('0xc')]};var _0x1b157e=md5(JSON[_0x527c('0x19')](_0x478d6e));if(this[_0x527c('0xd')]!==_0x1b157e){this['md5']=_0x1b157e;io['to'](util[_0x527c('0x1a')]('sms:queue:%s',_0x478d6e[_0x527c('0x7')]))['emit'](_0x527c('0x1b'),_0x478d6e);}};module['exports']=SmsQueue;
\ No newline at end of file
index da5d7c5..10f11cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2350=['loggedIn','paused','length','whatsappPause','available','stringify','whatsapp:queue:%s','emit','whatsapp_queue:save','exports','lodash','md5','util','ioredis','redis','defaults','localhost','socket.io-emitter','name','timeout','Agents','mapAgentsId','updateRouting','updateRealtime','map','_rr','prototype'];(function(_0x1f5fa0,_0x3c182d){var _0x17e40d=function(_0x15dfa6){while(--_0x15dfa6){_0x1f5fa0['push'](_0x1f5fa0['shift']());}};_0x17e40d(++_0x3c182d);}(_0x2350,0x133));var _0x0235=function(_0x5192de,_0x4e91cd){_0x5192de=_0x5192de-0x0;var _0x4e287e=_0x2350[_0x5192de];return _0x4e287e;};'use strict';var _=require(_0x0235('0x0'));var md5=require(_0x0235('0x1'));var util=require(_0x0235('0x2'));var Redis=require(_0x0235('0x3'));var config=require('../../../config/environment');config[_0x0235('0x4')]=_[_0x0235('0x5')](config[_0x0235('0x4')],{'host':_0x0235('0x6'),'port':0x18eb});var io=require(_0x0235('0x7'))(new Redis(config[_0x0235('0x4')]));function WhatsappQueue(_0x460b30){this['id']=_0x460b30['id']||0x0;this[_0x0235('0x8')]=_0x460b30[_0x0235('0x8')]||'';this['timeout']=_0x460b30[_0x0235('0x9')]||0xa;this['strategy']=_0x460b30['strategy']||'beepall';this[_0x0235('0xa')]=_0x460b30[_0x0235('0xa')];this[_0x0235('0xb')]={};this['waiting']=0x0;this[_0x0235('0x1')]='';this[_0x0235('0xc')]();this[_0x0235('0xd')]();}WhatsappQueue['prototype']['updateRouting']=function(){var _0x3b95ac=this[_0x0235('0xb')]['_rr'];this[_0x0235('0xb')]=_[_0x0235('0xe')](this[_0x0235('0xa')],'id');this[_0x0235('0xb')][_0x0235('0xf')]=_0x3b95ac;};WhatsappQueue[_0x0235('0x10')][_0x0235('0xd')]=function(){this[_0x0235('0x11')]=0x0;this[_0x0235('0x12')]=0x0;for(var _0x4fc353=0x0;_0x4fc353<this[_0x0235('0xa')][_0x0235('0x13')];_0x4fc353+=0x1){if(this[_0x0235('0xa')][_0x4fc353]['online']){this[_0x0235('0x11')]+=0x1;}if(this[_0x0235('0xa')][_0x4fc353][_0x0235('0x14')]){this[_0x0235('0x12')]+=0x1;}}this[_0x0235('0x15')]=this['loggedIn']-this['paused'];this['available']=this['available']>=0x0?this[_0x0235('0x15')]:0x0;var _0x18a4d4={'id':this['id'],'available':this['available'],'loggedIn':this[_0x0235('0x11')],'name':this[_0x0235('0x8')],'paused':this[_0x0235('0x12')],'waiting':this['waiting']};var _0x325168=md5(JSON[_0x0235('0x16')](_0x18a4d4));if(this['md5']!==_0x325168){this[_0x0235('0x1')]=_0x325168;io['to'](util['format'](_0x0235('0x17'),_0x18a4d4[_0x0235('0x8')]))[_0x0235('0x18')](_0x0235('0x19'),_0x18a4d4);}};module[_0x0235('0x1a')]=WhatsappQueue;
\ No newline at end of file
+var _0xf1d0=['localhost','name','timeout','strategy','Agents','mapAgentsId','waiting','updateRealtime','_rr','prototype','loggedIn','paused','online','available','stringify','format','emit','lodash','md5','util','../../../config/environment','redis','defaults'];(function(_0x45e2a7,_0x4e8fa4){var _0x1cc813=function(_0x1d3fa4){while(--_0x1d3fa4){_0x45e2a7['push'](_0x45e2a7['shift']());}};_0x1cc813(++_0x4e8fa4);}(_0xf1d0,0x125));var _0x0f1d=function(_0x56460a,_0x4f8f01){_0x56460a=_0x56460a-0x0;var _0x53e918=_0xf1d0[_0x56460a];return _0x53e918;};'use strict';var _=require(_0x0f1d('0x0'));var md5=require(_0x0f1d('0x1'));var util=require(_0x0f1d('0x2'));var Redis=require('ioredis');var config=require(_0x0f1d('0x3'));config[_0x0f1d('0x4')]=_[_0x0f1d('0x5')](config['redis'],{'host':_0x0f1d('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0f1d('0x4')]));function WhatsappQueue(_0x5d9ea7){this['id']=_0x5d9ea7['id']||0x0;this[_0x0f1d('0x7')]=_0x5d9ea7['name']||'';this[_0x0f1d('0x8')]=_0x5d9ea7[_0x0f1d('0x8')]||0xa;this[_0x0f1d('0x9')]=_0x5d9ea7[_0x0f1d('0x9')]||'beepall';this['Agents']=_0x5d9ea7[_0x0f1d('0xa')];this[_0x0f1d('0xb')]={};this[_0x0f1d('0xc')]=0x0;this['md5']='';this['updateRouting']();this[_0x0f1d('0xd')]();}WhatsappQueue['prototype']['updateRouting']=function(){var _0x66dffc=this[_0x0f1d('0xb')][_0x0f1d('0xe')];this[_0x0f1d('0xb')]=_['map'](this[_0x0f1d('0xa')],'id');this[_0x0f1d('0xb')]['_rr']=_0x66dffc;};WhatsappQueue[_0x0f1d('0xf')][_0x0f1d('0xd')]=function(){this[_0x0f1d('0x10')]=0x0;this[_0x0f1d('0x11')]=0x0;for(var _0x47a1db=0x0;_0x47a1db<this['Agents']['length'];_0x47a1db+=0x1){if(this['Agents'][_0x47a1db][_0x0f1d('0x12')]){this[_0x0f1d('0x10')]+=0x1;}if(this[_0x0f1d('0xa')][_0x47a1db]['whatsappPause']){this[_0x0f1d('0x11')]+=0x1;}}this[_0x0f1d('0x13')]=this['loggedIn']-this[_0x0f1d('0x11')];this[_0x0f1d('0x13')]=this[_0x0f1d('0x13')]>=0x0?this[_0x0f1d('0x13')]:0x0;var _0x1e4478={'id':this['id'],'available':this['available'],'loggedIn':this[_0x0f1d('0x10')],'name':this[_0x0f1d('0x7')],'paused':this['paused'],'waiting':this[_0x0f1d('0xc')]};var _0x1f9fa5=md5(JSON[_0x0f1d('0x14')](_0x1e4478));if(this[_0x0f1d('0x1')]!==_0x1f9fa5){this[_0x0f1d('0x1')]=_0x1f9fa5;io['to'](util[_0x0f1d('0x15')]('whatsapp:queue:%s',_0x1e4478[_0x0f1d('0x7')]))[_0x0f1d('0x16')]('whatsapp_queue:save',_0x1e4478);}};module['exports']=WhatsappQueue;
\ No newline at end of file
index f31d3d3..27ba542 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(_0x4709c0,_0x3396c7){_0x4709c0=_0x4709c0-0x0;var _0x13348b=_0xa9e0[_0x4709c0];return _0x13348b;};'use strict';var BPromise=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var moment=require('moment');var Agent=require('../model/agent');var Interval=require(_0x0a9e('0x3'));var OpenchannelQueue=require('../model/openchannelQueue');var ChatQueue=require(_0x0a9e('0x4'));var SmsQueue=require(_0x0a9e('0x5'));var MailQueue=require(_0x0a9e('0x6'));var FaxQueue=require(_0x0a9e('0x7'));var WhatsappQueue=require(_0x0a9e('0x8'));var Realtime=function(){this['agents']={};this[_0x0a9e('0x9')]={};this[_0x0a9e('0xa')]={};this[_0x0a9e('0xb')]={};this['smsQueues']={};this['mailQueues']={};this[_0x0a9e('0xc')]={};this['whatsappQueues']={};this['chatQueuesWaitingInteractions']={};this[_0x0a9e('0xd')]={};this[_0x0a9e('0xe')]={};this[_0x0a9e('0xf')]={};this[_0x0a9e('0x10')]={};this[_0x0a9e('0x11')]={};};function freeIsNotKey(_0xbd1168,_0x4a4c56,_0x50dfb2){var _0x527cdd=_['mapKeys'](_0xbd1168,function(_0x273d4d,_0x36471c){return _0x273d4d[_0x50dfb2];});for(var _0xd5b662 in _0x4a4c56){if(_0x4a4c56[_0x0a9e('0x12')](_0xd5b662)){if(!_0x527cdd[_0xd5b662]){delete _0x4a4c56[_0xd5b662];}}}}Realtime[_0x0a9e('0x13')][_0x0a9e('0x14')]=function(_0x5db4b0,_0x4283ce){for(var _0x239b12 in _0x4283ce){if(_0x5db4b0[_0x0a9e('0x12')](_0x239b12)){_0x5db4b0[_0x239b12]=_0x4283ce[_0x239b12];}}};Realtime[_0x0a9e('0x13')][_0x0a9e('0x15')]=function(){var _0x4d5611=this;return function(_0x52a03d){if(_0x52a03d){freeIsNotKey(_0x52a03d,_0x4d5611[_0x0a9e('0x16')],'id');for(var _0x5d0880=0x0,_0x1985b6={},_0x519dfd={};_0x5d0880<_0x52a03d[_0x0a9e('0x17')];_0x5d0880+=0x1){_0x1985b6=_0x52a03d[_0x5d0880];if(_[_0x0a9e('0x18')](_0x4d5611['agents'][_0x1985b6['id']])){_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']]=new Agent(_0x1985b6);}else{_0x4d5611['mergeFromDatabase'](_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']],_0x1985b6);}}}return _0x4d5611[_0x0a9e('0x16')];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x19')]=function(){var _0x31b1ca=this;return function(_0x2eb11f){if(_0x2eb11f){freeIsNotKey(_0x2eb11f,_0x31b1ca[_0x0a9e('0x9')],'id');for(var _0x20559e=0x0,_0x1314ae={},_0x112016={};_0x20559e<_0x2eb11f[_0x0a9e('0x17')];_0x20559e+=0x1){_0x1314ae=_0x2eb11f[_0x20559e];if(_[_0x0a9e('0x18')](_0x31b1ca['intervals'][_0x1314ae['id']])){_0x31b1ca[_0x0a9e('0x9')][_0x1314ae['id']]=new Interval(_0x1314ae);}else{_0x31b1ca[_0x0a9e('0x14')](_0x31b1ca['intervals'][_0x1314ae['id']],_0x1314ae);}}}return _0x31b1ca[_0x0a9e('0x9')];};};Realtime['prototype']['initOpenchannelQueues']=function(){var _0x3a02e1=this;return function(_0x432e56){if(_0x432e56){freeIsNotKey(_0x432e56,_0x3a02e1[_0x0a9e('0xa')],'id');for(var _0x30bae6=0x0,_0x4abc77={},_0xfb6e48={};_0x30bae6<_0x432e56[_0x0a9e('0x17')];_0x30bae6+=0x1){_0x4abc77=_0x432e56[_0x30bae6];if(_[_0x0a9e('0x18')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']])){_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']]=new OpenchannelQueue(_0x4abc77);}else{_0x3a02e1[_0x0a9e('0x14')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']],_0x4abc77);}_0x3a02e1['openchannelQueues'][_0x4abc77['id']]['updateRouting']();_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']][_0x0a9e('0x1a')]();}}return _0x3a02e1[_0x0a9e('0xa')];};};Realtime[_0x0a9e('0x13')]['initChatQueues']=function(){var _0x384319=this;return function(_0x479bc4){if(_0x479bc4){freeIsNotKey(_0x479bc4,_0x384319[_0x0a9e('0xb')],'id');for(var _0x5bfb33=0x0,_0x1dc186={},_0x34dc65={};_0x5bfb33<_0x479bc4[_0x0a9e('0x17')];_0x5bfb33+=0x1){_0x1dc186=_0x479bc4[_0x5bfb33];if(_[_0x0a9e('0x18')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']])){_0x384319[_0x0a9e('0xb')][_0x1dc186['id']]=new ChatQueue(_0x1dc186);}else{_0x384319[_0x0a9e('0x14')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']],_0x1dc186);}_0x384319['chatQueues'][_0x1dc186['id']][_0x0a9e('0x1b')]();_0x384319[_0x0a9e('0xb')][_0x1dc186['id']][_0x0a9e('0x1a')]();}}return _0x384319[_0x0a9e('0xb')];};};Realtime['prototype'][_0x0a9e('0x1c')]=function(){var _0x40e7a3=this;return function(_0x1843b2){if(_0x1843b2){freeIsNotKey(_0x1843b2,_0x40e7a3[_0x0a9e('0x1d')],'id');for(var _0x58b06f=0x0,_0x563b45={},_0x296f41={};_0x58b06f<_0x1843b2[_0x0a9e('0x17')];_0x58b06f+=0x1){_0x563b45=_0x1843b2[_0x58b06f];if(_[_0x0a9e('0x18')](_0x40e7a3['smsQueues'][_0x563b45['id']])){_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']]=new SmsQueue(_0x563b45);}else{_0x40e7a3['mergeFromDatabase'](_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']],_0x563b45);}_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1b')]();_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1a')]();}}return _0x40e7a3['smsQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x1e')]=function(){var _0x40cb85=this;return function(_0x2da5c0){if(_0x2da5c0){freeIsNotKey(_0x2da5c0,_0x40cb85[_0x0a9e('0x1f')],'id');for(var _0x409319=0x0,_0x332d35={},_0x39e565={};_0x409319<_0x2da5c0['length'];_0x409319+=0x1){_0x332d35=_0x2da5c0[_0x409319];if(_[_0x0a9e('0x18')](_0x40cb85['mailQueues'][_0x332d35['id']])){_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]=new MailQueue(_0x332d35);}else{_0x40cb85[_0x0a9e('0x14')](_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']],_0x332d35);}_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]['updateRouting']();_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']][_0x0a9e('0x1a')]();}}return _0x40cb85[_0x0a9e('0x1f')];};};Realtime[_0x0a9e('0x13')]['initFaxQueues']=function(){var _0x54135e=this;return function(_0x1e8694){if(_0x1e8694){freeIsNotKey(_0x1e8694,_0x54135e['faxQueues'],'id');for(var _0x24936a=0x0,_0x3d9717={},_0x381c37={};_0x24936a<_0x1e8694[_0x0a9e('0x17')];_0x24936a+=0x1){_0x3d9717=_0x1e8694[_0x24936a];if(_['isUndefined'](_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']])){_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]=new FaxQueue(_0x3d9717);}else{_0x54135e[_0x0a9e('0x14')](_0x54135e['faxQueues'][_0x3d9717['id']],_0x3d9717);}_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']][_0x0a9e('0x1b')]();_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]['updateRealtime']();}}return _0x54135e['faxQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x20')]=function(){var _0x5adda1=this;return function(_0x2b814e){if(_0x2b814e){freeIsNotKey(_0x2b814e,_0x5adda1[_0x0a9e('0x21')],'id');for(var _0x2e1b3a=0x0,_0x148f55={},_0x4b38d9={};_0x2e1b3a<_0x2b814e['length'];_0x2e1b3a+=0x1){_0x148f55=_0x2b814e[_0x2e1b3a];if(_[_0x0a9e('0x18')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']])){_0x5adda1['whatsappQueues'][_0x148f55['id']]=new WhatsappQueue(_0x148f55);}else{_0x5adda1[_0x0a9e('0x14')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']],_0x148f55);}_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']]['updateRouting']();_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']][_0x0a9e('0x1a')]();}}return _0x5adda1[_0x0a9e('0x21')];};};module[_0x0a9e('0x22')]=Realtime;
\ No newline at end of file
+var _0xa9e0=['isUndefined','initIntervals','updateRealtime','updateRouting','initSmsQueues','smsQueues','initMailQueues','mailQueues','initWhatsappQueues','whatsappQueues','exports','bluebird','util','lodash','../model/interval','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','chatQueues','faxQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','length'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0xa9e0[_0x2bf141];return _0x48277b;};'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 4000a8f..0573840 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b29=['addTags','addTagsToChatInteraction','../client','update','Request','UpdateChatInteraction','updateChatInteraction'];(function(_0x2fd396,_0x15e495){var _0x2a4be2=function(_0x11c873){while(--_0x11c873){_0x2fd396['push'](_0x2fd396['shift']());}};_0x2a4be2(++_0x15e495);}(_0x9b29,0x1e5));var _0x99b2=function(_0x125145,_0x2154fd){_0x125145=_0x125145-0x0;var _0x5191ea=_0x9b29[_0x125145];return _0x5191ea;};'use strict';var client=require(_0x99b2('0x0'));exports[_0x99b2('0x1')]=function(_0x1d5c08,_0x52414b){return client[_0x99b2('0x2')](_0x99b2('0x3'),{'body':_0x52414b,'options':{'where':{'id':_0x1d5c08}},'log':_0x99b2('0x4')});};exports[_0x99b2('0x5')]=function(_0xe63a59,_0x4a5873){return client[_0x99b2('0x2')]('AddTagsToChatInteraction',{'body':_0x4a5873,'options':{'where':{'id':_0xe63a59}},'log':_0x99b2('0x6')});};
\ No newline at end of file
+var _0x709e=['../client','update','Request','UpdateChatInteraction','updateChatInteraction','addTags','AddTagsToChatInteraction'];(function(_0x295314,_0x17b250){var _0x584b0c=function(_0x51cc84){while(--_0x51cc84){_0x295314['push'](_0x295314['shift']());}};_0x584b0c(++_0x17b250);}(_0x709e,0x1e3));var _0xe709=function(_0x9eecdb,_0x38264c){_0x9eecdb=_0x9eecdb-0x0;var _0xdf9891=_0x709e[_0x9eecdb];return _0xdf9891;};'use strict';var client=require(_0xe709('0x0'));exports[_0xe709('0x1')]=function(_0x697b48,_0x190dd5){return client[_0xe709('0x2')](_0xe709('0x3'),{'body':_0x190dd5,'options':{'where':{'id':_0x697b48}},'log':_0xe709('0x4')});};exports[_0xe709('0x5')]=function(_0x309c19,_0x466507){return client[_0xe709('0x2')](_0xe709('0x6'),{'body':_0x466507,'options':{'where':{'id':_0x309c19}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
index 5ade43d..4f951a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x158e=['CreateChatMessage','../client','Request'];(function(_0x4e7987,_0x2b665b){var _0x153cbe=function(_0x579a4d){while(--_0x579a4d){_0x4e7987['push'](_0x4e7987['shift']());}};_0x153cbe(++_0x2b665b);}(_0x158e,0xf7));var _0xe158=function(_0x7b5ee,_0x3d76c5){_0x7b5ee=_0x7b5ee-0x0;var _0x329085=_0x158e[_0x7b5ee];return _0x329085;};'use strict';var client=require(_0xe158('0x0'));exports['create']=function(_0x3ddb8a){return client[_0xe158('0x1')](_0xe158('0x2'),{'body':_0x3ddb8a,'log':'createChatMessage'});};
\ No newline at end of file
+var _0x0387=['../client','create','Request','CreateChatMessage'];(function(_0x44e00a,_0x248bbc){var _0x2bdfba=function(_0x5e66c4){while(--_0x5e66c4){_0x44e00a['push'](_0x44e00a['shift']());}};_0x2bdfba(++_0x248bbc);}(_0x0387,0x180));var _0x7038=function(_0x23ece2,_0x234142){_0x23ece2=_0x23ece2-0x0;var _0x327aa8=_0x0387[_0x23ece2];return _0x327aa8;};'use strict';var client=require(_0x7038('0x0'));exports[_0x7038('0x1')]=function(_0x1a1a96){return client[_0x7038('0x2')](_0x7038('0x3'),{'body':_0x1a1a96,'log':'createChatMessage'});};
\ No newline at end of file
index 575d8db..bdb1b06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb82=['timeout','User','Agents','online','chatPause','../client','getChatQueues','Request','name'];(function(_0x3b5685,_0x5d5060){var _0x192312=function(_0x519d95){while(--_0x519d95){_0x3b5685['push'](_0x3b5685['shift']());}};_0x192312(++_0x5d5060);}(_0xfb82,0x17f));var _0x2fb8=function(_0x176815,_0x3bd94a){_0x176815=_0x176815-0x0;var _0x573475=_0xfb82[_0x176815];return _0x573475;};'use strict';var client=require(_0x2fb8('0x0'));exports[_0x2fb8('0x1')]=function(){return function(){return client[_0x2fb8('0x2')]('GetChatQueue',{'options':{'raw':![],'attributes':['id',_0x2fb8('0x3'),_0x2fb8('0x4'),'strategy'],'include':[{'model':_0x2fb8('0x5'),'as':_0x2fb8('0x6'),'attributes':['id',_0x2fb8('0x3'),_0x2fb8('0x7'),_0x2fb8('0x8')]}]},'log':_0x2fb8('0x1')});};};
\ No newline at end of file
+var _0x0fcd=['getChatQueues','Request','GetChatQueue','name','timeout','strategy','Agents','online','chatPause'];(function(_0x1ee049,_0x554b26){var _0x1643fb=function(_0x25ba1d){while(--_0x25ba1d){_0x1ee049['push'](_0x1ee049['shift']());}};_0x1643fb(++_0x554b26);}(_0x0fcd,0x129));var _0xd0fc=function(_0x520ef4,_0x2254c3){_0x520ef4=_0x520ef4-0x0;var _0x36d395=_0x0fcd[_0x520ef4];return _0x36d395;};'use strict';var client=require('../client');exports[_0xd0fc('0x0')]=function(){return function(){return client[_0xd0fc('0x1')](_0xd0fc('0x2'),{'options':{'raw':![],'attributes':['id',_0xd0fc('0x3'),_0xd0fc('0x4'),_0xd0fc('0x5')],'include':[{'model':'User','as':_0xd0fc('0x6'),'attributes':['id',_0xd0fc('0x3'),_0xd0fc('0x7'),_0xd0fc('0x8')]}]},'log':'getChatQueues'});};};
\ No newline at end of file
index 0b4854d..98f1594 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f17=['CreateChatQueueReport','update','UpdateChatQueueReport','../client','Request'];(function(_0x176789,_0x1463f8){var _0x3bf6c5=function(_0x1e22f3){while(--_0x1e22f3){_0x176789['push'](_0x176789['shift']());}};_0x3bf6c5(++_0x1463f8);}(_0x4f17,0x9e));var _0x74f1=function(_0x12a62c,_0xc9c41a){_0x12a62c=_0x12a62c-0x0;var _0x268a58=_0x4f17[_0x12a62c];return _0x268a58;};'use strict';var client=require(_0x74f1('0x0'));exports['create']=function(_0xc7f009){return client[_0x74f1('0x1')]('CreateChatQueueReport',{'body':_0xc7f009,'log':_0x74f1('0x2')});};exports[_0x74f1('0x3')]=function(_0x3f16b2,_0x62251d){return client[_0x74f1('0x1')]('UpdateChatQueueReport',{'body':_0x62251d,'options':{'where':{'uniqueid':_0x3f16b2},'order':[['id','DESC']],'limit':0x1},'log':_0x74f1('0x4')});};
\ No newline at end of file
+var _0x6ce9=['CreateChatQueueReport','Request','UpdateChatQueueReport','../client','create'];(function(_0x5c50c2,_0x371a23){var _0x3566e2=function(_0x57f124){while(--_0x57f124){_0x5c50c2['push'](_0x5c50c2['shift']());}};_0x3566e2(++_0x371a23);}(_0x6ce9,0x76));var _0x96ce=function(_0x4c531c,_0x22b7a6){_0x4c531c=_0x4c531c-0x0;var _0x3154b9=_0x6ce9[_0x4c531c];return _0x3154b9;};'use strict';var client=require(_0x96ce('0x0'));exports[_0x96ce('0x1')]=function(_0x1d736b){return client['Request']('CreateChatQueueReport',{'body':_0x1d736b,'log':_0x96ce('0x2')});};exports['update']=function(_0x28a6a3,_0x18a969){return client[_0x96ce('0x3')](_0x96ce('0x4'),{'body':_0x18a969,'options':{'where':{'uniqueid':_0x28a6a3},'order':[['id','DESC']],'limit':0x1},'log':_0x96ce('0x4')});};
\ No newline at end of file
index bf5ca3b..5f979be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['Request','UpdateFaxInteraction','addTags','AddTagsToFaxInteraction','../client','update'];(function(_0x4605dc,_0x3f7ae5){var _0x5d3e81=function(_0x1d0375){while(--_0x1d0375){_0x4605dc['push'](_0x4605dc['shift']());}};_0x5d3e81(++_0x3f7ae5);}(_0x7a54,0x106));var _0x47a5=function(_0x1ec712,_0x4265ac){_0x1ec712=_0x1ec712-0x0;var _0x50d1ea=_0x7a54[_0x1ec712];return _0x50d1ea;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(_0x44b31e,_0x58157c){return client[_0x47a5('0x2')](_0x47a5('0x3'),{'body':_0x58157c,'options':{'where':{'id':_0x44b31e}},'log':'updateFaxInteraction'});};exports[_0x47a5('0x4')]=function(_0x11bf85,_0x2a1a7e){return client[_0x47a5('0x2')](_0x47a5('0x5'),{'body':_0x2a1a7e,'options':{'where':{'id':_0x11bf85}},'log':'addTagsToFaxInteraction'});};
\ No newline at end of file
+var _0x7a54=['Request','UpdateFaxInteraction','addTags','AddTagsToFaxInteraction','../client','update'];(function(_0x2de020,_0x252df0){var _0x182b7c=function(_0xcbcdaa){while(--_0xcbcdaa){_0x2de020['push'](_0x2de020['shift']());}};_0x182b7c(++_0x252df0);}(_0x7a54,0x106));var _0x47a5=function(_0x525de6,_0x2e8b29){_0x525de6=_0x525de6-0x0;var _0x4ab846=_0x7a54[_0x525de6];return _0x4ab846;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(_0x44b31e,_0x58157c){return client[_0x47a5('0x2')](_0x47a5('0x3'),{'body':_0x58157c,'options':{'where':{'id':_0x44b31e}},'log':'updateFaxInteraction'});};exports[_0x47a5('0x4')]=function(_0x11bf85,_0x2a1a7e){return client[_0x47a5('0x2')](_0x47a5('0x5'),{'body':_0x2a1a7e,'options':{'where':{'id':_0x11bf85}},'log':'addTagsToFaxInteraction'});};
\ No newline at end of file
index c8f1065..9a724a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4534=['../client','create','Request','CreateFaxMessage','createFaxMessage'];(function(_0x362851,_0x4d3d0f){var _0x51f30e=function(_0x5dfccc){while(--_0x5dfccc){_0x362851['push'](_0x362851['shift']());}};_0x51f30e(++_0x4d3d0f);}(_0x4534,0x113));var _0x4453=function(_0x4be04c,_0x1371bc){_0x4be04c=_0x4be04c-0x0;var _0x5d3aab=_0x4534[_0x4be04c];return _0x5d3aab;};'use strict';var client=require(_0x4453('0x0'));exports[_0x4453('0x1')]=function(_0x572429){return client[_0x4453('0x2')](_0x4453('0x3'),{'body':_0x572429,'log':_0x4453('0x4')});};
\ No newline at end of file
+var _0x92b3=['Request','CreateFaxMessage','../client','create'];(function(_0x5078b1,_0x5be17f){var _0x1ac481=function(_0x4ca5a7){while(--_0x4ca5a7){_0x5078b1['push'](_0x5078b1['shift']());}};_0x1ac481(++_0x5be17f);}(_0x92b3,0xd2));var _0x392b=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0x92b3[_0x491a7f];return _0x3d8f44;};'use strict';var client=require(_0x392b('0x0'));exports[_0x392b('0x1')]=function(_0x34ecc9){return client[_0x392b('0x2')](_0x392b('0x3'),{'body':_0x34ecc9,'log':'createFaxMessage'});};
\ No newline at end of file
index 5fc02c4..b21fe00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f47=['name','timeout','strategy','User','../client','getFaxQueues','GetFaxQueue'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0x5f47,0xa5));var _0x75f4=function(_0x484e19,_0x5386da){_0x484e19=_0x484e19-0x0;var _0x1854c7=_0x5f47[_0x484e19];return _0x1854c7;};'use strict';var client=require(_0x75f4('0x0'));exports[_0x75f4('0x1')]=function(){return function(){return client['Request'](_0x75f4('0x2'),{'options':{'raw':![],'attributes':['id',_0x75f4('0x3'),_0x75f4('0x4'),_0x75f4('0x5')],'include':[{'model':_0x75f4('0x6'),'as':'Agents','attributes':['id',_0x75f4('0x3'),'online','faxPause']}]},'log':_0x75f4('0x1')});};};
\ No newline at end of file
+var _0x9185=['getFaxQueues','Request','name','strategy','User','Agents','faxPause','../client'];(function(_0x571c65,_0x321f37){var _0x563767=function(_0x2e9f2a){while(--_0x2e9f2a){_0x571c65['push'](_0x571c65['shift']());}};_0x563767(++_0x321f37);}(_0x9185,0xef));var _0x5918=function(_0x4a4922,_0x82cb8f){_0x4a4922=_0x4a4922-0x0;var _0x55a8c6=_0x9185[_0x4a4922];return _0x55a8c6;};'use strict';var client=require(_0x5918('0x0'));exports[_0x5918('0x1')]=function(){return function(){return client[_0x5918('0x2')]('GetFaxQueue',{'options':{'raw':![],'attributes':['id',_0x5918('0x3'),'timeout',_0x5918('0x4')],'include':[{'model':_0x5918('0x5'),'as':_0x5918('0x6'),'attributes':['id',_0x5918('0x3'),'online',_0x5918('0x7')]}]},'log':_0x5918('0x1')});};};
\ No newline at end of file
index 72b5e79..df159cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x273e=['../client','create','Request','CreateFaxQueueReport','update','UpdateFaxQueueReport','DESC'];(function(_0x457c3f,_0x41c7f6){var _0xe71fc3=function(_0x3864be){while(--_0x3864be){_0x457c3f['push'](_0x457c3f['shift']());}};_0xe71fc3(++_0x41c7f6);}(_0x273e,0x9a));var _0xe273=function(_0x1fa3eb,_0x17df64){_0x1fa3eb=_0x1fa3eb-0x0;var _0x3ffa05=_0x273e[_0x1fa3eb];return _0x3ffa05;};'use strict';var client=require(_0xe273('0x0'));exports[_0xe273('0x1')]=function(_0x56de98){return client[_0xe273('0x2')](_0xe273('0x3'),{'body':_0x56de98,'log':'CreateFaxQueueReport'});};exports[_0xe273('0x4')]=function(_0x3e457b,_0x3deda8){return client[_0xe273('0x2')](_0xe273('0x5'),{'body':_0x3deda8,'options':{'where':{'uniqueid':_0x3e457b},'order':[['id',_0xe273('0x6')]],'limit':0x1},'log':_0xe273('0x5')});};
\ No newline at end of file
+var _0x2531=['Request','UpdateFaxQueueReport','DESC','../client','create','CreateFaxQueueReport'];(function(_0x276491,_0xa30f49){var _0x4a67a2=function(_0x52115b){while(--_0x52115b){_0x276491['push'](_0x276491['shift']());}};_0x4a67a2(++_0xa30f49);}(_0x2531,0xb1));var _0x1253=function(_0x20293c,_0x19370f){_0x20293c=_0x20293c-0x0;var _0x5553e3=_0x2531[_0x20293c];return _0x5553e3;};'use strict';var client=require(_0x1253('0x0'));exports[_0x1253('0x1')]=function(_0x348933){return client['Request'](_0x1253('0x2'),{'body':_0x348933,'log':_0x1253('0x2')});};exports['update']=function(_0x3dbfdd,_0xab05e7){return client[_0x1253('0x3')](_0x1253('0x4'),{'body':_0xab05e7,'options':{'where':{'uniqueid':_0x3dbfdd},'order':[['id',_0x1253('0x5')]],'limit':0x1},'log':'UpdateFaxQueueReport'});};
\ No newline at end of file
index 540751d..f89757d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5450=['getIntervals','Request','name','Interval','Intervals','interval','../client'];(function(_0x5af565,_0xe531a7){var _0x2a311f=function(_0x59429a){while(--_0x59429a){_0x5af565['push'](_0x5af565['shift']());}};_0x2a311f(++_0xe531a7);}(_0x5450,0x84));var _0x0545=function(_0x13b02f,_0x462a53){_0x13b02f=_0x13b02f-0x0;var _0x12e9a6=_0x5450[_0x13b02f];return _0x12e9a6;};'use strict';var client=require(_0x0545('0x0'));exports[_0x0545('0x1')]=function(){return function(){return client[_0x0545('0x2')]('GetInterval',{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0x0545('0x3')],'include':[{'model':_0x0545('0x4'),'as':_0x0545('0x5'),'attributes':['id',_0x0545('0x3'),_0x0545('0x6')]}]},'log':_0x0545('0x1')});};};
\ No newline at end of file
+var _0x17bb=['getIntervals','GetInterval','name','Interval','Intervals','interval','../client'];(function(_0xcc117e,_0x7ebcdb){var _0x468b02=function(_0x14dc0c){while(--_0x14dc0c){_0xcc117e['push'](_0xcc117e['shift']());}};_0x468b02(++_0x7ebcdb);}(_0x17bb,0x84));var _0xb17b=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x17bb[_0x2641f9];return _0x585741;};'use strict';var client=require(_0xb17b('0x0'));exports[_0xb17b('0x1')]=function(){return function(){return client['Request'](_0xb17b('0x2'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0xb17b('0x3')],'include':[{'model':_0xb17b('0x4'),'as':_0xb17b('0x5'),'attributes':['id',_0xb17b('0x3'),_0xb17b('0x6')]}]},'log':'getIntervals'});};};
\ No newline at end of file
index fe8fb17..9f34ee4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa30a=['Request','UpdateMailInteraction','updateMailInteraction','addTags','addTagsToChatInteraction','../client','update'];(function(_0x5deae3,_0x52af2f){var _0x48f472=function(_0x58e9d2){while(--_0x58e9d2){_0x5deae3['push'](_0x5deae3['shift']());}};_0x48f472(++_0x52af2f);}(_0xa30a,0xd7));var _0xaa30=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa30a[_0x14add3];return _0x4a174f;};'use strict';var client=require(_0xaa30('0x0'));exports[_0xaa30('0x1')]=function(_0x25634b,_0x4dfa7e){return client[_0xaa30('0x2')](_0xaa30('0x3'),{'body':_0x4dfa7e,'options':{'where':{'id':_0x25634b}},'log':_0xaa30('0x4')});};exports[_0xaa30('0x5')]=function(_0x2a9b06,_0x271425){return client[_0xaa30('0x2')]('AddTagsToMailInteraction',{'body':_0x271425,'options':{'where':{'id':_0x2a9b06}},'log':_0xaa30('0x6')});};
\ No newline at end of file
+var _0xdb28=['addTags','AddTagsToMailInteraction','addTagsToChatInteraction','../client','update','UpdateMailInteraction','updateMailInteraction'];(function(_0x5440d3,_0x68412d){var _0x49b20a=function(_0x328c52){while(--_0x328c52){_0x5440d3['push'](_0x5440d3['shift']());}};_0x49b20a(++_0x68412d);}(_0xdb28,0x106));var _0x8db2=function(_0x26cc9d,_0x257cb7){_0x26cc9d=_0x26cc9d-0x0;var _0x371ba5=_0xdb28[_0x26cc9d];return _0x371ba5;};'use strict';var client=require(_0x8db2('0x0'));exports[_0x8db2('0x1')]=function(_0x1dc797,_0xf66e59){return client['Request'](_0x8db2('0x2'),{'body':_0xf66e59,'options':{'where':{'id':_0x1dc797}},'log':_0x8db2('0x3')});};exports[_0x8db2('0x4')]=function(_0x4426fe,_0x11109e){return client['Request'](_0x8db2('0x5'),{'body':_0x11109e,'options':{'where':{'id':_0x4426fe}},'log':_0x8db2('0x6')});};
\ No newline at end of file
index 9d8c3ef..c20ffd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4df=['Request','CreateMailMessage','createMailMessage','../client','create'];(function(_0x12533c,_0x8b53ae){var _0x5ee49e=function(_0x33e25c){while(--_0x33e25c){_0x12533c['push'](_0x12533c['shift']());}};_0x5ee49e(++_0x8b53ae);}(_0xc4df,0x1a7));var _0xfc4d=function(_0x40f9ef,_0x1bc8de){_0x40f9ef=_0x40f9ef-0x0;var _0x157001=_0xc4df[_0x40f9ef];return _0x157001;};'use strict';var client=require(_0xfc4d('0x0'));exports[_0xfc4d('0x1')]=function(_0x3ec053){return client[_0xfc4d('0x2')](_0xfc4d('0x3'),{'body':_0x3ec053,'log':_0xfc4d('0x4')});};
\ No newline at end of file
+var _0x30f9=['../client','create'];(function(_0x53588b,_0x4c0b60){var _0x34537e=function(_0x10af31){while(--_0x10af31){_0x53588b['push'](_0x53588b['shift']());}};_0x34537e(++_0x4c0b60);}(_0x30f9,0x6c));var _0x930f=function(_0x1da04e,_0x31024b){_0x1da04e=_0x1da04e-0x0;var _0xdd8c41=_0x30f9[_0x1da04e];return _0xdd8c41;};'use strict';var client=require(_0x930f('0x0'));exports[_0x930f('0x1')]=function(_0x518ba2){return client['Request']('CreateMailMessage',{'body':_0x518ba2,'log':'createMailMessage'});};
\ No newline at end of file
index 85e387d..4cd183d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0286=['Request','GetMailQueue','timeout','strategy','User','Agents','mailPause','../client','getMailQueues'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0x0286,0x7c));var _0x6028=function(_0x257e19,_0x56fca0){_0x257e19=_0x257e19-0x0;var _0x3c1c4e=_0x0286[_0x257e19];return _0x3c1c4e;};'use strict';var client=require(_0x6028('0x0'));exports[_0x6028('0x1')]=function(){return function(){return client[_0x6028('0x2')](_0x6028('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x6028('0x4'),_0x6028('0x5')],'include':[{'model':_0x6028('0x6'),'as':_0x6028('0x7'),'attributes':['id','name','online',_0x6028('0x8')]}]},'log':'getMailQueues'});};};
\ No newline at end of file
+var _0xb885=['strategy','Agents','online','getMailQueues','Request','name','timeout'];(function(_0x3412ba,_0x46fdae){var _0x5ec9b4=function(_0x5ebc10){while(--_0x5ebc10){_0x3412ba['push'](_0x3412ba['shift']());}};_0x5ec9b4(++_0x46fdae);}(_0xb885,0x1d8));var _0x5b88=function(_0x2a67fe,_0x295c09){_0x2a67fe=_0x2a67fe-0x0;var _0x57e726=_0xb885[_0x2a67fe];return _0x57e726;};'use strict';var client=require('../client');exports[_0x5b88('0x0')]=function(){return function(){return client[_0x5b88('0x1')]('GetMailQueue',{'options':{'raw':![],'attributes':['id',_0x5b88('0x2'),_0x5b88('0x3'),_0x5b88('0x4')],'include':[{'model':'User','as':_0x5b88('0x5'),'attributes':['id',_0x5b88('0x2'),_0x5b88('0x6'),'mailPause']}]},'log':'getMailQueues'});};};
\ No newline at end of file
index 8f011fb..97c38b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c51=['update','UpdateMailQueueReport','create','Request','CreateMailQueueReport'];(function(_0xfeb103,_0x395bf5){var _0x298dcc=function(_0x3d96e2){while(--_0x3d96e2){_0xfeb103['push'](_0xfeb103['shift']());}};_0x298dcc(++_0x395bf5);}(_0x9c51,0xc0));var _0x19c5=function(_0x3f429f,_0x2c0335){_0x3f429f=_0x3f429f-0x0;var _0x586356=_0x9c51[_0x3f429f];return _0x586356;};'use strict';var client=require('../client');exports[_0x19c5('0x0')]=function(_0x1646c8){return client[_0x19c5('0x1')](_0x19c5('0x2'),{'body':_0x1646c8,'log':'CreateMailQueueReport'});};exports[_0x19c5('0x3')]=function(_0x13383e,_0x31c127){return client[_0x19c5('0x1')](_0x19c5('0x4'),{'body':_0x31c127,'options':{'where':{'uniqueid':_0x13383e},'order':[['id','DESC']],'limit':0x1},'log':_0x19c5('0x4')});};
\ No newline at end of file
+var _0x7861=['UpdateMailQueueReport','../client','Request','CreateMailQueueReport','update','DESC'];(function(_0x5a6644,_0x45d612){var _0x3a2a5d=function(_0x54159e){while(--_0x54159e){_0x5a6644['push'](_0x5a6644['shift']());}};_0x3a2a5d(++_0x45d612);}(_0x7861,0xc7));var _0x1786=function(_0x5786e5,_0x74c262){_0x5786e5=_0x5786e5-0x0;var _0x1cb35b=_0x7861[_0x5786e5];return _0x1cb35b;};'use strict';var client=require(_0x1786('0x0'));exports['create']=function(_0x297e43){return client[_0x1786('0x1')](_0x1786('0x2'),{'body':_0x297e43,'log':_0x1786('0x2')});};exports[_0x1786('0x3')]=function(_0x22dd3b,_0x6709b0){return client['Request']('UpdateMailQueueReport',{'body':_0x6709b0,'options':{'where':{'uniqueid':_0x22dd3b},'order':[['id',_0x1786('0x4')]],'limit':0x1},'log':_0x1786('0x5')});};
\ No newline at end of file
index b5971ec..d523d49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4129=['updateOpenchannelInteraction','addTags','Request','AddTagsToOpenchannelInteraction','addTagsToChatInteraction','update','UpdateOpenchannelInteraction'];(function(_0x389be7,_0x5f0569){var _0x3f7222=function(_0x536424){while(--_0x536424){_0x389be7['push'](_0x389be7['shift']());}};_0x3f7222(++_0x5f0569);}(_0x4129,0x15c));var _0x9412=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x4129[_0x20a584];return _0x4b41a8;};'use strict';var client=require('../client');exports[_0x9412('0x0')]=function(_0x3c04a1,_0x3a0471){return client['Request'](_0x9412('0x1'),{'body':_0x3a0471,'options':{'where':{'id':_0x3c04a1}},'log':_0x9412('0x2')});};exports[_0x9412('0x3')]=function(_0x190106,_0x41655b){return client[_0x9412('0x4')](_0x9412('0x5'),{'body':_0x41655b,'options':{'where':{'id':_0x190106}},'log':_0x9412('0x6')});};
\ No newline at end of file
+var _0xfbaf=['Request','UpdateOpenchannelInteraction','addTags','../client','update'];(function(_0x298ffc,_0x47e773){var _0x2f9f91=function(_0x17ec45){while(--_0x17ec45){_0x298ffc['push'](_0x298ffc['shift']());}};_0x2f9f91(++_0x47e773);}(_0xfbaf,0x139));var _0xffba=function(_0x54a8c2,_0x507332){_0x54a8c2=_0x54a8c2-0x0;var _0x12dcac=_0xfbaf[_0x54a8c2];return _0x12dcac;};'use strict';var client=require(_0xffba('0x0'));exports[_0xffba('0x1')]=function(_0xf561c4,_0xb2f584){return client[_0xffba('0x2')](_0xffba('0x3'),{'body':_0xb2f584,'options':{'where':{'id':_0xf561c4}},'log':'updateOpenchannelInteraction'});};exports[_0xffba('0x4')]=function(_0x15d414,_0x4d0e5d){return client[_0xffba('0x2')]('AddTagsToOpenchannelInteraction',{'body':_0x4d0e5d,'options':{'where':{'id':_0x15d414}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
index 59c2400..96b5675 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd4e=['../client','create','CreateOpenchannelMessage','createOpenchannelMessage'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xfd4e,0x98));var _0xefd4=function(_0x552bd9,_0x57e2b9){_0x552bd9=_0x552bd9-0x0;var _0x529e83=_0xfd4e[_0x552bd9];return _0x529e83;};'use strict';var client=require(_0xefd4('0x0'));exports[_0xefd4('0x1')]=function(_0x246439){return client['Request'](_0xefd4('0x2'),{'body':_0x246439,'log':_0xefd4('0x3')});};
\ No newline at end of file
+var _0x5004=['../client','create'];(function(_0x448a99,_0x52bf78){var _0x37864b=function(_0xac9f){while(--_0xac9f){_0x448a99['push'](_0x448a99['shift']());}};_0x37864b(++_0x52bf78);}(_0x5004,0x1ae));var _0x4500=function(_0x2bade4,_0x1f31ee){_0x2bade4=_0x2bade4-0x0;var _0x53007b=_0x5004[_0x2bade4];return _0x53007b;};'use strict';var client=require(_0x4500('0x0'));exports[_0x4500('0x1')]=function(_0xb062d3){return client['Request']('CreateOpenchannelMessage',{'body':_0xb062d3,'log':'createOpenchannelMessage'});};
\ No newline at end of file
index a39afa6..d2c9808 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75bb=['online','../client','getOpenchannelQueues','Request','GetOpenchannelQueue','name','timeout','strategy','User','Agents'];(function(_0x4a228f,_0x44e160){var _0x13787a=function(_0x53b4cc){while(--_0x53b4cc){_0x4a228f['push'](_0x4a228f['shift']());}};_0x13787a(++_0x44e160);}(_0x75bb,0xb5));var _0xb75b=function(_0x36f797,_0x351603){_0x36f797=_0x36f797-0x0;var _0x44ba30=_0x75bb[_0x36f797];return _0x44ba30;};'use strict';var client=require(_0xb75b('0x0'));exports[_0xb75b('0x1')]=function(){return function(){return client[_0xb75b('0x2')](_0xb75b('0x3'),{'options':{'raw':![],'attributes':['id',_0xb75b('0x4'),_0xb75b('0x5'),_0xb75b('0x6')],'include':[{'model':_0xb75b('0x7'),'as':_0xb75b('0x8'),'attributes':['id',_0xb75b('0x4'),_0xb75b('0x9'),'openchannelPause']}]},'log':_0xb75b('0x1')});};};
\ No newline at end of file
+var _0x06c0=['getOpenchannelQueues','Request','GetOpenchannelQueue','timeout','User','Agents','name','online','openchannelPause','../client'];(function(_0x49dd3b,_0x37bcf3){var _0x4dc1c9=function(_0x352e2f){while(--_0x352e2f){_0x49dd3b['push'](_0x49dd3b['shift']());}};_0x4dc1c9(++_0x37bcf3);}(_0x06c0,0x1ad));var _0x006c=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0x06c0[_0x311c35];return _0x5cc50c;};'use strict';var client=require(_0x006c('0x0'));exports[_0x006c('0x1')]=function(){return function(){return client[_0x006c('0x2')](_0x006c('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x006c('0x4'),'strategy'],'include':[{'model':_0x006c('0x5'),'as':_0x006c('0x6'),'attributes':['id',_0x006c('0x7'),_0x006c('0x8'),_0x006c('0x9')]}]},'log':'getOpenchannelQueues'});};};
\ No newline at end of file
index 33c7867..9f655ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cc5=['../client','create','Request','CreateOpenchannelQueueReport','update','UpdateOpenchannelQueueReport'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x1cc5,0x132));var _0x51cc=function(_0x572438,_0x1b94fe){_0x572438=_0x572438-0x0;var _0xc6e9a7=_0x1cc5[_0x572438];return _0xc6e9a7;};'use strict';var client=require(_0x51cc('0x0'));exports[_0x51cc('0x1')]=function(_0x21b330){return client[_0x51cc('0x2')](_0x51cc('0x3'),{'body':_0x21b330,'log':_0x51cc('0x3')});};exports[_0x51cc('0x4')]=function(_0x26ed12,_0x194c58){return client['Request'](_0x51cc('0x5'),{'body':_0x194c58,'options':{'where':{'uniqueid':_0x26ed12},'order':[['id','DESC']],'limit':0x1},'log':_0x51cc('0x5')});};
\ No newline at end of file
+var _0x6a93=['DESC','UpdateOpenchannelQueueReport','../client','CreateOpenchannelQueueReport','update'];(function(_0x3a7373,_0xb53218){var _0x2ce783=function(_0xe5d98d){while(--_0xe5d98d){_0x3a7373['push'](_0x3a7373['shift']());}};_0x2ce783(++_0xb53218);}(_0x6a93,0x188));var _0x36a9=function(_0x402e14,_0x238581){_0x402e14=_0x402e14-0x0;var _0x5a3bda=_0x6a93[_0x402e14];return _0x5a3bda;};'use strict';var client=require(_0x36a9('0x0'));exports['create']=function(_0x322200){return client['Request'](_0x36a9('0x1'),{'body':_0x322200,'log':_0x36a9('0x1')});};exports[_0x36a9('0x2')]=function(_0x4b78ad,_0x93a67c){return client['Request']('UpdateOpenchannelQueueReport',{'body':_0x93a67c,'options':{'where':{'uniqueid':_0x4b78ad},'order':[['id',_0x36a9('0x3')]],'limit':0x1},'log':_0x36a9('0x4')});};
\ No newline at end of file
index 68f538a..02480c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb57=['../client','update','UpdateSmsInteraction','addTags','Request','AddTagsToSmsInteraction','addTagsToSmsInteraction'];(function(_0x2b85d5,_0x3115b7){var _0xe8c96f=function(_0x4bc25b){while(--_0x4bc25b){_0x2b85d5['push'](_0x2b85d5['shift']());}};_0xe8c96f(++_0x3115b7);}(_0xcb57,0xa1));var _0x7cb5=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0xcb57[_0x59ee6f];return _0x4c0979;};'use strict';var client=require(_0x7cb5('0x0'));exports[_0x7cb5('0x1')]=function(_0x5df18a,_0x21a4c6){return client['Request'](_0x7cb5('0x2'),{'body':_0x21a4c6,'options':{'where':{'id':_0x5df18a}},'log':'updateSmsInteraction'});};exports[_0x7cb5('0x3')]=function(_0x1b1ef7,_0x4850d6){return client[_0x7cb5('0x4')](_0x7cb5('0x5'),{'body':_0x4850d6,'options':{'where':{'id':_0x1b1ef7}},'log':_0x7cb5('0x6')});};
\ No newline at end of file
+var _0x39a9=['addTags','addTagsToSmsInteraction','../client','update','Request','UpdateSmsInteraction','updateSmsInteraction'];(function(_0x47408b,_0x3f0c47){var _0x2404ac=function(_0x348265){while(--_0x348265){_0x47408b['push'](_0x47408b['shift']());}};_0x2404ac(++_0x3f0c47);}(_0x39a9,0x1d0));var _0x939a=function(_0x47568e,_0x5ccdaf){_0x47568e=_0x47568e-0x0;var _0x33815b=_0x39a9[_0x47568e];return _0x33815b;};'use strict';var client=require(_0x939a('0x0'));exports[_0x939a('0x1')]=function(_0xb72a0,_0x119223){return client[_0x939a('0x2')](_0x939a('0x3'),{'body':_0x119223,'options':{'where':{'id':_0xb72a0}},'log':_0x939a('0x4')});};exports[_0x939a('0x5')]=function(_0x450b95,_0x1030c6){return client[_0x939a('0x2')]('AddTagsToSmsInteraction',{'body':_0x1030c6,'options':{'where':{'id':_0x450b95}},'log':_0x939a('0x6')});};
\ No newline at end of file
index d6cc2ef..cd83666 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08d1=['Request','CreateSmsMessage','createSmsMessage','../client'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x08d1,0x12b));var _0x108d=function(_0x1ebd30,_0x48ca2f){_0x1ebd30=_0x1ebd30-0x0;var _0x33c6c9=_0x08d1[_0x1ebd30];return _0x33c6c9;};'use strict';var client=require(_0x108d('0x0'));exports['create']=function(_0x25c355){return client[_0x108d('0x1')](_0x108d('0x2'),{'body':_0x25c355,'log':_0x108d('0x3')});};
\ No newline at end of file
+var _0x38d2=['create','Request','CreateSmsMessage','../client'];(function(_0x5608a3,_0x5b33c5){var _0x1ed50a=function(_0x959171){while(--_0x959171){_0x5608a3['push'](_0x5608a3['shift']());}};_0x1ed50a(++_0x5b33c5);}(_0x38d2,0x67));var _0x238d=function(_0x405292,_0x2ae10a){_0x405292=_0x405292-0x0;var _0xb3c050=_0x38d2[_0x405292];return _0xb3c050;};'use strict';var client=require(_0x238d('0x0'));exports[_0x238d('0x1')]=function(_0x434fd5){return client[_0x238d('0x2')](_0x238d('0x3'),{'body':_0x434fd5,'log':'createSmsMessage'});};
\ No newline at end of file
index 892d036..aa549a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['getSmsQueues','Request','GetSmsQueue','name','timeout','strategy','Agents','online','smsPause'];(function(_0x1e172a,_0x52102b){var _0x96338b=function(_0x307313){while(--_0x307313){_0x1e172a['push'](_0x1e172a['shift']());}};_0x96338b(++_0x52102b);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports['getSmsQueues']=function(){return function(){return client[_0x3071('0x0')](_0x3071('0x1'),{'options':{'raw':![],'attributes':['id',_0x3071('0x2'),_0x3071('0x3'),_0x3071('0x4')],'include':[{'model':'User','as':_0x3071('0x5'),'attributes':['id',_0x3071('0x2'),_0x3071('0x6'),_0x3071('0x7')]}]},'log':_0x3071('0x8')});};};
\ No newline at end of file
+var _0xcb91=['smsPause','Request','GetSmsQueue','name','timeout','User','Agents','online'];(function(_0x2101d3,_0x210818){var _0x3710ab=function(_0x4e16e1){while(--_0x4e16e1){_0x2101d3['push'](_0x2101d3['shift']());}};_0x3710ab(++_0x210818);}(_0xcb91,0x1a9));var _0x1cb9=function(_0xbc2974,_0xec3342){_0xbc2974=_0xbc2974-0x0;var _0x3a5b4f=_0xcb91[_0xbc2974];return _0x3a5b4f;};'use strict';var client=require('../client');exports['getSmsQueues']=function(){return function(){return client[_0x1cb9('0x0')](_0x1cb9('0x1'),{'options':{'raw':![],'attributes':['id',_0x1cb9('0x2'),_0x1cb9('0x3'),'strategy'],'include':[{'model':_0x1cb9('0x4'),'as':_0x1cb9('0x5'),'attributes':['id','name',_0x1cb9('0x6'),_0x1cb9('0x7')]}]},'log':'getSmsQueues'});};};
\ No newline at end of file
index 57e1e2b..4c747a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC'];(function(_0x284bc3,_0x22dffe){var _0x41ac81=function(_0x47031f){while(--_0x47031f){_0x284bc3['push'](_0x284bc3['shift']());}};_0x41ac81(++_0x22dffe);}(_0xedd9,0xfc));var _0x9edd=function(_0x5b0cee,_0x4f8539){_0x5b0cee=_0x5b0cee-0x0;var _0x1ff7d7=_0xedd9[_0x5b0cee];return _0x1ff7d7;};'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 _0x70e0=['create','CreateSmsQueueReport','update','UpdateSmsQueueReport','../client'];(function(_0x5d2516,_0x30862b){var _0x55cf98=function(_0x46c04f){while(--_0x46c04f){_0x5d2516['push'](_0x5d2516['shift']());}};_0x55cf98(++_0x30862b);}(_0x70e0,0x17b));var _0x070e=function(_0x383d9c,_0x4b83e7){_0x383d9c=_0x383d9c-0x0;var _0x276ea2=_0x70e0[_0x383d9c];return _0x276ea2;};'use strict';var client=require(_0x070e('0x0'));exports[_0x070e('0x1')]=function(_0x198c2e){return client['Request']('CreateSmsQueueReport',{'body':_0x198c2e,'log':_0x070e('0x2')});};exports[_0x070e('0x3')]=function(_0x277d32,_0x2593e5){return client['Request'](_0x070e('0x4'),{'body':_0x2593e5,'options':{'where':{'uniqueid':_0x277d32},'order':[['id','DESC']],'limit':0x1},'log':_0x070e('0x4')});};
\ No newline at end of file
index 60ae75e..8c93d5d 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(_0x28744c,_0x250ee4){var _0x4c1545=function(_0x212a45){while(--_0x212a45){_0x28744c['push'](_0x28744c['shift']());}};_0x4c1545(++_0x250ee4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0xa9e0[_0x220dbb];return _0x2b77de;};'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(_0x34b5d6,_0x2fc8ef){var _0x3fca14=function(_0x36acb8){while(--_0x36acb8){_0x34b5d6['push'](_0x34b5d6['shift']());}};_0x3fca14(++_0x2fc8ef);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b828b,_0x344400){_0x1b828b=_0x1b828b-0x0;var _0x98da1a=_0xa9e0[_0x1b828b];return _0x98da1a;};'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 3d5a63b..cc673d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3595=['Request','UpdateWhatsappInteraction','updateWhatsappInteraction','addTags','addTagsToWhatsappInteraction','../client','update'];(function(_0x30a31e,_0x31f766){var _0x170879=function(_0x313ee7){while(--_0x313ee7){_0x30a31e['push'](_0x30a31e['shift']());}};_0x170879(++_0x31f766);}(_0x3595,0x147));var _0x5359=function(_0x2f567a,_0xe22d76){_0x2f567a=_0x2f567a-0x0;var _0x884ecf=_0x3595[_0x2f567a];return _0x884ecf;};'use strict';var client=require(_0x5359('0x0'));exports[_0x5359('0x1')]=function(_0xa74118,_0x52b0f5){return client[_0x5359('0x2')](_0x5359('0x3'),{'body':_0x52b0f5,'options':{'where':{'id':_0xa74118}},'log':_0x5359('0x4')});};exports[_0x5359('0x5')]=function(_0x1fa814,_0x125c76){return client['Request']('AddTagsToWhatsappInteraction',{'body':_0x125c76,'options':{'where':{'id':_0x1fa814}},'log':_0x5359('0x6')});};
\ No newline at end of file
+var _0xdf98=['addTags','Request','AddTagsToWhatsappInteraction','addTagsToWhatsappInteraction','../client','UpdateWhatsappInteraction','updateWhatsappInteraction'];(function(_0x541557,_0x550d3f){var _0x28bbde=function(_0xf1a092){while(--_0xf1a092){_0x541557['push'](_0x541557['shift']());}};_0x28bbde(++_0x550d3f);}(_0xdf98,0xcf));var _0x8df9=function(_0x2da45d,_0x35397b){_0x2da45d=_0x2da45d-0x0;var _0x1012a0=_0xdf98[_0x2da45d];return _0x1012a0;};'use strict';var client=require(_0x8df9('0x0'));exports['update']=function(_0x1f9abd,_0x4bbb45){return client['Request'](_0x8df9('0x1'),{'body':_0x4bbb45,'options':{'where':{'id':_0x1f9abd}},'log':_0x8df9('0x2')});};exports[_0x8df9('0x3')]=function(_0xeec2ab,_0x3f2ade){return client[_0x8df9('0x4')](_0x8df9('0x5'),{'body':_0x3f2ade,'options':{'where':{'id':_0xeec2ab}},'log':_0x8df9('0x6')});};
\ No newline at end of file
index bf56740..ae4d0d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cfe=['CreateWhatsappMessage','createWhatsappMessage','create','Request'];(function(_0x451cb7,_0x17d7bf){var _0x2acd4e=function(_0x3a6b31){while(--_0x3a6b31){_0x451cb7['push'](_0x451cb7['shift']());}};_0x2acd4e(++_0x17d7bf);}(_0x0cfe,0x1ca));var _0xe0cf=function(_0x12290e,_0x230849){_0x12290e=_0x12290e-0x0;var _0x24d496=_0x0cfe[_0x12290e];return _0x24d496;};'use strict';var client=require('../client');exports[_0xe0cf('0x0')]=function(_0x411521){return client[_0xe0cf('0x1')](_0xe0cf('0x2'),{'body':_0x411521,'log':_0xe0cf('0x3')});};
\ No newline at end of file
+var _0x1de2=['create','Request','createWhatsappMessage'];(function(_0x7d5af1,_0x4ef29a){var _0x26862e=function(_0x3ef67a){while(--_0x3ef67a){_0x7d5af1['push'](_0x7d5af1['shift']());}};_0x26862e(++_0x4ef29a);}(_0x1de2,0xb7));var _0x21de=function(_0x483d8b,_0x526c52){_0x483d8b=_0x483d8b-0x0;var _0x6500f1=_0x1de2[_0x483d8b];return _0x6500f1;};'use strict';var client=require('../client');exports[_0x21de('0x0')]=function(_0x3e09cc){return client[_0x21de('0x1')]('CreateWhatsappMessage',{'body':_0x3e09cc,'log':_0x21de('0x2')});};
\ No newline at end of file
index 892bbdd..582c08a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01b2=['getWhatsappQueues','Request','GetWhatsappQueue','name','timeout','strategy','User'];(function(_0x1c6a53,_0x3356eb){var _0xdfedd=function(_0x1e3aa0){while(--_0x1e3aa0){_0x1c6a53['push'](_0x1c6a53['shift']());}};_0xdfedd(++_0x3356eb);}(_0x01b2,0xa8));var _0x201b=function(_0x19115e,_0x507bab){_0x19115e=_0x19115e-0x0;var _0x45bbd4=_0x01b2[_0x19115e];return _0x45bbd4;};'use strict';var client=require('../client');exports[_0x201b('0x0')]=function(){return function(){return client[_0x201b('0x1')](_0x201b('0x2'),{'options':{'raw':![],'attributes':['id',_0x201b('0x3'),_0x201b('0x4'),_0x201b('0x5')],'include':[{'model':_0x201b('0x6'),'as':'Agents','attributes':['id',_0x201b('0x3'),'online','whatsappPause']}]},'log':_0x201b('0x0')});};};
\ No newline at end of file
+var _0xb9cf=['whatsappPause','../client','Request','GetWhatsappQueue','name','timeout','strategy','User','Agents','online'];(function(_0x18f9a1,_0xe74040){var _0x3510c0=function(_0x353f49){while(--_0x353f49){_0x18f9a1['push'](_0x18f9a1['shift']());}};_0x3510c0(++_0xe74040);}(_0xb9cf,0x141));var _0xfb9c=function(_0x21351f,_0x3a745f){_0x21351f=_0x21351f-0x0;var _0x2ae5c1=_0xb9cf[_0x21351f];return _0x2ae5c1;};'use strict';var client=require(_0xfb9c('0x0'));exports['getWhatsappQueues']=function(){return function(){return client[_0xfb9c('0x1')](_0xfb9c('0x2'),{'options':{'raw':![],'attributes':['id',_0xfb9c('0x3'),_0xfb9c('0x4'),_0xfb9c('0x5')],'include':[{'model':_0xfb9c('0x6'),'as':_0xfb9c('0x7'),'attributes':['id',_0xfb9c('0x3'),_0xfb9c('0x8'),_0xfb9c('0x9')]}]},'log':'getWhatsappQueues'});};};
\ No newline at end of file
index f80cf42..f9ebd1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1970=['create','CreateWhatsappQueueReport','update','Request','DESC','UpdateWhatsappQueueReport'];(function(_0xe14332,_0x12d828){var _0xd781c=function(_0x2c2c8a){while(--_0x2c2c8a){_0xe14332['push'](_0xe14332['shift']());}};_0xd781c(++_0x12d828);}(_0x1970,0x14a));var _0x0197=function(_0x46fc28,_0x1f03b5){_0x46fc28=_0x46fc28-0x0;var _0x45f9ae=_0x1970[_0x46fc28];return _0x45f9ae;};'use strict';var client=require('../client');exports[_0x0197('0x0')]=function(_0x4e223a){return client['Request']('CreateWhatsappQueueReport',{'body':_0x4e223a,'log':_0x0197('0x1')});};exports[_0x0197('0x2')]=function(_0x2dcfc7,_0x507b60){return client[_0x0197('0x3')]('UpdateWhatsappQueueReport',{'body':_0x507b60,'options':{'where':{'uniqueid':_0x2dcfc7},'order':[['id',_0x0197('0x4')]],'limit':0x1},'log':_0x0197('0x5')});};
\ No newline at end of file
+var _0xf465=['CreateWhatsappQueueReport','UpdateWhatsappQueueReport','DESC','../client','create','Request'];(function(_0xd39959,_0x302d09){var _0x1ff69c=function(_0x17c97f){while(--_0x17c97f){_0xd39959['push'](_0xd39959['shift']());}};_0x1ff69c(++_0x302d09);}(_0xf465,0x1d1));var _0x5f46=function(_0x502c9b,_0xdaf0b3){_0x502c9b=_0x502c9b-0x0;var _0x344c36=_0xf465[_0x502c9b];return _0x344c36;};'use strict';var client=require(_0x5f46('0x0'));exports[_0x5f46('0x1')]=function(_0x190d4f){return client[_0x5f46('0x2')](_0x5f46('0x3'),{'body':_0x190d4f,'log':_0x5f46('0x3')});};exports['update']=function(_0x441364,_0x59d94f){return client[_0x5f46('0x2')](_0x5f46('0x4'),{'body':_0x59d94f,'options':{'where':{'uniqueid':_0x441364},'order':[['id',_0x5f46('0x5')]],'limit':0x1},'log':_0x5f46('0x4')});};
\ No newline at end of file
index 4fb0877..cf9aeeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8838=['stop','agents','timeout','atimeout','channel','format','START:%s','rules','end','[%s][AGENT]\x20ROUTING\x20STOPPED','close','complete','agent','error','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','validate','util','../../../../config/logger','routing','./strategy','number','info','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','[%s][AGENT]\x20%s','map','message'];(function(_0x321989,_0x47a57a){var _0x2ecfa9=function(_0x4db0c2){while(--_0x4db0c2){_0x321989['push'](_0x321989['shift']());}};_0x2ecfa9(++_0x47a57a);}(_0x8838,0xcb));var _0x8883=function(_0x1b693f,_0xb446b6){_0x1b693f=_0x1b693f-0x0;var _0x17938a=_0x8838[_0x1b693f];return _0x17938a;};'use strict';var schema=require(_0x8883('0x0'));var _=require('lodash');var util=require(_0x8883('0x1'));var seqqueue=require('seq-queue');var logger=require(_0x8883('0x2'))(_0x8883('0x3'));var strategy=require(_0x8883('0x4'));var queue=schema({'name':{'type':'string','required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0x8883('0x5'),'message':'timeout\x20is\x20a\x20number'}});function writeLog(_0x9769ee,_0x1c148f,_0x4fa9d6){return logger[_0x8883('0x6')](util['format'](_0x8883('0x7'),_0x9769ee,_0x1c148f[_0x8883('0x8')],_0x4fa9d6));}function handleFindAgent(_0x3a6b24){return function(_0x471e62){return _0x471e62['name']['toLowerCase']()===_0x3a6b24[_0x8883('0x9')]();};}exports[_0x8883('0xa')]=function(_0x5a1a00,_0x19f01b,_0x49ef69,_0x31f5e6){return function(_0x3b29e2){try{var _0x60cecd={'name':_0x19f01b[0x0],'timeout':_0x19f01b[0x1]};var _0x31543d=queue['validate'](_0x60cecd,{'typecast':!![]});if(_0x31543d['length']){logger['error'](_0x8883('0xb'),_0x5a1a00,_[_0x8883('0xc')](_0x31543d,_0x8883('0xd'))['join'](',\x20'));_0x3b29e2[_0x8883('0xe')]();}else{var _0x5e9efa=_['find'](_0x49ef69[_0x8883('0xf')],handleFindAgent(_0x60cecd[_0x8883('0x8')]));if(_0x5e9efa){var _0x51b295=(_0x60cecd[_0x8883('0x10')]||0xa)*0x3e8;var _0x6a6540,_0x7ee1f3;var _0x54bcd8=seqqueue['createQueue'](_0x51b295);_0x54bcd8['id']=_0x5a1a00;_0x54bcd8[_0x8883('0x11')]=_0x51b295;_0x54bcd8['channel']=_0x31f5e6[_0x8883('0x12')];writeLog(_0x5a1a00,_0x5e9efa,util[_0x8883('0x13')](_0x8883('0x14'),_0x51b295));_0x49ef69[_0x8883('0x15')][_0x5a1a00]['on'](_0x8883('0x16'),function(){logger[_0x8883('0x6')](_0x8883('0x17'),_0x5a1a00);clearTimeout(_0x7ee1f3);_0x7ee1f3=undefined;_0x54bcd8[_0x8883('0x18')]();if(_0x49ef69[_0x8883('0x15')][_0x5a1a00]){delete _0x49ef69[_0x8883('0x15')][_0x5a1a00];}_0x3b29e2['stop']();});_0x49ef69[_0x8883('0x15')][_0x5a1a00]['on'](_0x8883('0x19'),function(){if(_0x49ef69[_0x8883('0x15')][_0x5a1a00]){delete _0x49ef69['rules'][_0x5a1a00];}});_0x7ee1f3=setTimeout(function(){logger[_0x8883('0x6')]('[%s][AGENT]\x20ROUTING\x20END',_0x5a1a00);clearTimeout(_0x7ee1f3);_0x54bcd8[_0x8883('0x18')]();_0x3b29e2['next']();},_0x51b295);strategy[_0x8883('0x1a')](_0x54bcd8,_0x5e9efa,_0x49ef69,_0x31f5e6);}else{logger[_0x8883('0x1b')](_0x8883('0x1c'),_0x5a1a00,_0x60cecd[_0x8883('0x8')]);_0x3b29e2[_0x8883('0xe')]();}}}catch(_0x54c6b2){console[_0x8883('0x1d')](_0x54c6b2);logger[_0x8883('0x1b')](_0x8883('0x1e'),_0x5a1a00,_0x54c6b2['stack']);_0x3b29e2[_0x8883('0xe')]();}};};
\ No newline at end of file
+var _0x5dec=['name','toLowerCase','consequence','length','error','[%s][AGENT]\x20%s','message','join','stop','timeout','createQueue','atimeout','channel','START:%s','rules','end','[%s][AGENT]\x20ROUTING\x20STOPPED','close','complete','[%s][AGENT]\x20ROUTING\x20END','next','agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','[%s][QUEUE]\x20%s','../../../../config/logger','./strategy','string','number','timeout\x20is\x20a\x20number','info','[%s][AGENT][NAME:%s][STATUS:%s]'];(function(_0x21ec38,_0x3f9660){var _0x48f577=function(_0x3957b4){while(--_0x3957b4){_0x21ec38['push'](_0x21ec38['shift']());}};_0x48f577(++_0x3f9660);}(_0x5dec,0x1e9));var _0xc5de=function(_0x56feee,_0x4d26c7){_0x56feee=_0x56feee-0x0;var _0x554d3e=_0x5dec[_0x56feee];return _0x554d3e;};'use strict';var schema=require('validate');var _=require('lodash');var util=require('util');var seqqueue=require('seq-queue');var logger=require(_0xc5de('0x0'))('routing');var strategy=require(_0xc5de('0x1'));var queue=schema({'name':{'type':_0xc5de('0x2'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0xc5de('0x3'),'message':_0xc5de('0x4')}});function writeLog(_0x2e4fe9,_0x2028de,_0x190aa0){return logger[_0xc5de('0x5')](util['format'](_0xc5de('0x6'),_0x2e4fe9,_0x2028de[_0xc5de('0x7')],_0x190aa0));}function handleFindAgent(_0x516b1b){return function(_0x1f2e17){return _0x1f2e17[_0xc5de('0x7')][_0xc5de('0x8')]()===_0x516b1b['toLowerCase']();};}exports[_0xc5de('0x9')]=function(_0x301f78,_0x200825,_0x341446,_0x135604){return function(_0x2bca0c){try{var _0x2c0cec={'name':_0x200825[0x0],'timeout':_0x200825[0x1]};var _0xcf7cd4=queue['validate'](_0x2c0cec,{'typecast':!![]});if(_0xcf7cd4[_0xc5de('0xa')]){logger[_0xc5de('0xb')](_0xc5de('0xc'),_0x301f78,_['map'](_0xcf7cd4,_0xc5de('0xd'))[_0xc5de('0xe')](',\x20'));_0x2bca0c[_0xc5de('0xf')]();}else{var _0x2c1e29=_['find'](_0x341446['agents'],handleFindAgent(_0x2c0cec[_0xc5de('0x7')]));if(_0x2c1e29){var _0x4f78bd=(_0x2c0cec[_0xc5de('0x10')]||0xa)*0x3e8;var _0x4f0fe3,_0x2d93ff;var _0x53fb8f=seqqueue[_0xc5de('0x11')](_0x4f78bd);_0x53fb8f['id']=_0x301f78;_0x53fb8f[_0xc5de('0x12')]=_0x4f78bd;_0x53fb8f[_0xc5de('0x13')]=_0x135604['channel'];writeLog(_0x301f78,_0x2c1e29,util['format'](_0xc5de('0x14'),_0x4f78bd));_0x341446[_0xc5de('0x15')][_0x301f78]['on'](_0xc5de('0x16'),function(){logger['info'](_0xc5de('0x17'),_0x301f78);clearTimeout(_0x2d93ff);_0x2d93ff=undefined;_0x53fb8f[_0xc5de('0x18')]();if(_0x341446['rules'][_0x301f78]){delete _0x341446[_0xc5de('0x15')][_0x301f78];}_0x2bca0c['stop']();});_0x341446['rules'][_0x301f78]['on'](_0xc5de('0x19'),function(){if(_0x341446[_0xc5de('0x15')][_0x301f78]){delete _0x341446['rules'][_0x301f78];}});_0x2d93ff=setTimeout(function(){logger[_0xc5de('0x5')](_0xc5de('0x1a'),_0x301f78);clearTimeout(_0x2d93ff);_0x53fb8f[_0xc5de('0x18')]();_0x2bca0c[_0xc5de('0x1b')]();},_0x4f78bd);strategy[_0xc5de('0x1c')](_0x53fb8f,_0x2c1e29,_0x341446,_0x135604);}else{logger['error'](_0xc5de('0x1d'),_0x301f78,_0x2c0cec[_0xc5de('0x7')]);_0x2bca0c[_0xc5de('0xf')]();}}}catch(_0x123c81){console['log'](_0x123c81);logger[_0xc5de('0xb')](_0xc5de('0x1e'),_0x301f78,_0x123c81['stack']);_0x2bca0c[_0xc5de('0xf')]();}};};
\ No newline at end of file
index e0d9efe..488b01a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5421=['InteractionId','created','body','getMustacheRender','Message','create','then','catch','error','stringify','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','LexRuntime','$LATEST','message','toString','postText','next','amazonlex','providerName','providerResponse','dialogState','lodash','moment','aws-sdk','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','isNil','interaction','info','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','format','YYYY-MM-DD\x20HH:mm:ss','channel','sms','whatsapp','phone','chat','ChatWebsiteId','upperFirst','AccountId','account'];(function(_0xe0be82,_0x11d5a3){var _0x3297ee=function(_0x1779b7){while(--_0x1779b7){_0xe0be82['push'](_0xe0be82['shift']());}};_0x3297ee(++_0x11d5a3);}(_0x5421,0x1af));var _0x1542=function(_0x20c757,_0xf1f53b){_0x20c757=_0x20c757-0x0;var _0x2720f3=_0x5421[_0x20c757];return _0x2720f3;};'use strict';var _=require(_0x1542('0x0'));var moment=require(_0x1542('0x1'));var AWS=require(_0x1542('0x2'));var utils=require(_0x1542('0x3'));var logger=require(_0x1542('0x4'))('routing');var rpc={'chatMessage':require(_0x1542('0x5')),'openchannelMessage':require(_0x1542('0x6')),'mailMessage':require(_0x1542('0x7')),'smsMessage':require(_0x1542('0x8')),'faxMessage':require(_0x1542('0x9')),'whatsappMessage':require(_0x1542('0xa'))};exports['consequence']=function(_0x401bcd,_0x36eacf){return function(_0x359494){try{if(!_[_0x1542('0xb')](this[_0x1542('0xc')]['UserId'])){logger[_0x1542('0xd')](_0x1542('0xe'),_0x401bcd,_0x1542('0xf'));return _0x359494['next']();}var _0x5cf9f8={'ContactId':this[_0x1542('0x10')]['id'],'sentAt':moment()[_0x1542('0x11')](_0x1542('0x12')),'direction':'out'};if(this[_0x1542('0x13')]===_0x1542('0x14')||this['channel']===_0x1542('0x15')){_0x5cf9f8[_0x1542('0x16')]=this[_0x1542('0xc')][_0x1542('0x16')];}var _0x4fc7db=this[_0x1542('0x13')];if(_0x4fc7db===_0x1542('0x17')){_0x5cf9f8[_0x1542('0x18')]=this['account']['id'];}else{_0x5cf9f8[_[_0x1542('0x19')](_0x4fc7db)+_0x1542('0x1a')]=this[_0x1542('0x1b')]['id'];}_0x5cf9f8[_[_0x1542('0x19')](_0x4fc7db)+_0x1542('0x1c')]=this['interaction']['id'];if(this[_0x1542('0xc')][_0x1542('0x1d')]){var _0x139ab5=_0x36eacf[0x4];if(!_['isEmpty'](_0x139ab5)){_0x5cf9f8[_0x1542('0x1e')]=utils[_0x1542('0x1f')](_0x139ab5,this);return rpc[_0x4fc7db+_0x1542('0x20')][_0x1542('0x21')](_0x5cf9f8)[_0x1542('0x22')](function(_0x5c2bfb){logger[_0x1542('0xd')](_0x1542('0xe'),_0x401bcd,_0x5cf9f8[_0x1542('0x1e')]);})[_0x1542('0x23')](function(_0x459a75){logger[_0x1542('0x24')](_0x1542('0xe'),_0x401bcd,JSON[_0x1542('0x25')](_0x459a75));})[_0x1542('0x26')](function(){logger[_0x1542('0xd')](_0x1542('0x27'),_0x401bcd);_0x359494['stop']();});}else{logger[_0x1542('0xd')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x401bcd);_0x359494[_0x1542('0x28')]();}}else{var _0xc7c9ca=this;var _0x28cc0a=new AWS[(_0x1542('0x29'))]({'accessKeyId':_0x36eacf[0x0],'secretAccessKey':_0x36eacf[0x1],'region':_0x36eacf[0x2]});var _0x3fd6ca={'botAlias':_0x1542('0x2a'),'botName':_0x36eacf[0x3],'inputText':this[_0x1542('0x2b')][_0x1542('0x1e')],'userId':this[_0x1542('0x13')]+':'+this[_0x1542('0xc')]['id'][_0x1542('0x2c')]()};_0x28cc0a[_0x1542('0x2d')](_0x3fd6ca,function(_0x37c69e,_0x6094e4){if(_0x37c69e){logger[_0x1542('0x24')](_0x1542('0xe'),_0x401bcd,_0x37c69e[_0x1542('0x2b')]);_0x359494[_0x1542('0x2e')]();}else if(_0x6094e4&&_0x6094e4[_0x1542('0x2b')]){_0xc7c9ca[_0x1542('0x1e')][_0x1542('0x2f')]=_0x6094e4;_0x5cf9f8[_0x1542('0x1e')]=_0x6094e4[_0x1542('0x2b')];_0x5cf9f8[_0x1542('0x30')]=_0x1542('0x2f');_0x5cf9f8[_0x1542('0x31')]=JSON[_0x1542('0x25')](_0x6094e4);return rpc[_0x4fc7db+'Message'][_0x1542('0x21')](_0x5cf9f8)[_0x1542('0x22')](function(_0x305636){logger[_0x1542('0xd')]('[%s][AMAZONLEX]\x20%s',_0x401bcd,_0x5cf9f8[_0x1542('0x1e')]);if(_0x6094e4[_0x1542('0x32')]=='Failed'){_0x359494[_0x1542('0x2e')]();}else{_0x359494[_0x1542('0x28')]();}})['catch'](function(_0x398bc9){logger[_0x1542('0x24')]('[%s][AMAZONLEX]\x20%s',_0x401bcd,JSON[_0x1542('0x25')](_0x398bc9));_0x359494[_0x1542('0x2e')]();});}else{_0x359494[_0x1542('0x2e')]();}});}}catch(_0x48bb55){logger[_0x1542('0x24')]('[%s][AMAZONLEX]\x20%s',_0x401bcd,JSON[_0x1542('0x25')](_0x48bb55));_0x359494[_0x1542('0x28')]();}};};
\ No newline at end of file
+var _0xb0a2=['channel','sms','phone','chat','ChatWebsiteId','account','upperFirst','InteractionId','isEmpty','body','getMustacheRender','create','[%s][AMAZONLEX]\x20%s','catch','error','stringify','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','LexRuntime','$LATEST','message','toString','postText','amazonlex','providerName','providerResponse','Message','then','dialogState','Failed','lodash','moment','aws-sdk','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','isNil','interaction','UserId','info','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out'];(function(_0x516927,_0xb4aad0){var _0x30749b=function(_0x2ca6cc){while(--_0x2ca6cc){_0x516927['push'](_0x516927['shift']());}};_0x30749b(++_0xb4aad0);}(_0xb0a2,0xec));var _0x2b0a=function(_0x2f6cd7,_0x5ae901){_0x2f6cd7=_0x2f6cd7-0x0;var _0x4383a4=_0xb0a2[_0x2f6cd7];return _0x4383a4;};'use strict';var _=require(_0x2b0a('0x0'));var moment=require(_0x2b0a('0x1'));var AWS=require(_0x2b0a('0x2'));var utils=require('./utils');var logger=require('../../../../config/logger')(_0x2b0a('0x3'));var rpc={'chatMessage':require(_0x2b0a('0x4')),'openchannelMessage':require(_0x2b0a('0x5')),'mailMessage':require(_0x2b0a('0x6')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x2b0a('0x7')),'whatsappMessage':require(_0x2b0a('0x8'))};exports['consequence']=function(_0x4397bf,_0x29741d){return function(_0x4e5d13){try{if(!_[_0x2b0a('0x9')](this[_0x2b0a('0xa')][_0x2b0a('0xb')])){logger[_0x2b0a('0xc')]('[%s][AMAZONLEX]\x20%s',_0x4397bf,_0x2b0a('0xd'));return _0x4e5d13[_0x2b0a('0xe')]();}var _0xaf20db={'ContactId':this[_0x2b0a('0xf')]['id'],'sentAt':moment()[_0x2b0a('0x10')](_0x2b0a('0x11')),'direction':_0x2b0a('0x12')};if(this[_0x2b0a('0x13')]===_0x2b0a('0x14')||this['channel']==='whatsapp'){_0xaf20db[_0x2b0a('0x15')]=this[_0x2b0a('0xa')][_0x2b0a('0x15')];}var _0x24abc8=this[_0x2b0a('0x13')];if(_0x24abc8===_0x2b0a('0x16')){_0xaf20db[_0x2b0a('0x17')]=this[_0x2b0a('0x18')]['id'];}else{_0xaf20db[_['upperFirst'](_0x24abc8)+'AccountId']=this[_0x2b0a('0x18')]['id'];}_0xaf20db[_[_0x2b0a('0x19')](_0x24abc8)+_0x2b0a('0x1a')]=this[_0x2b0a('0xa')]['id'];if(this[_0x2b0a('0xa')]['created']){var _0xe5f3d6=_0x29741d[0x4];if(!_[_0x2b0a('0x1b')](_0xe5f3d6)){_0xaf20db[_0x2b0a('0x1c')]=utils[_0x2b0a('0x1d')](_0xe5f3d6,this);return rpc[_0x24abc8+'Message'][_0x2b0a('0x1e')](_0xaf20db)['then'](function(_0x3298ef){logger[_0x2b0a('0xc')](_0x2b0a('0x1f'),_0x4397bf,_0xaf20db['body']);})[_0x2b0a('0x20')](function(_0x3cef24){logger[_0x2b0a('0x21')](_0x2b0a('0x1f'),_0x4397bf,JSON[_0x2b0a('0x22')](_0x3cef24));})[_0x2b0a('0x23')](function(){logger[_0x2b0a('0xc')](_0x2b0a('0x24'),_0x4397bf);_0x4e5d13[_0x2b0a('0x25')]();});}else{logger['info'](_0x2b0a('0x26'),_0x4397bf);_0x4e5d13[_0x2b0a('0x25')]();}}else{var _0x4ca728=this;var _0x350ef0=new AWS[(_0x2b0a('0x27'))]({'accessKeyId':_0x29741d[0x0],'secretAccessKey':_0x29741d[0x1],'region':_0x29741d[0x2]});var _0x4716be={'botAlias':_0x2b0a('0x28'),'botName':_0x29741d[0x3],'inputText':this[_0x2b0a('0x29')][_0x2b0a('0x1c')],'userId':this[_0x2b0a('0x13')]+':'+this['interaction']['id'][_0x2b0a('0x2a')]()};_0x350ef0[_0x2b0a('0x2b')](_0x4716be,function(_0x5d1072,_0x46c640){if(_0x5d1072){logger[_0x2b0a('0x21')](_0x2b0a('0x1f'),_0x4397bf,_0x5d1072[_0x2b0a('0x29')]);_0x4e5d13['next']();}else if(_0x46c640&&_0x46c640[_0x2b0a('0x29')]){_0x4ca728[_0x2b0a('0x1c')][_0x2b0a('0x2c')]=_0x46c640;_0xaf20db[_0x2b0a('0x1c')]=_0x46c640[_0x2b0a('0x29')];_0xaf20db[_0x2b0a('0x2d')]=_0x2b0a('0x2c');_0xaf20db[_0x2b0a('0x2e')]=JSON[_0x2b0a('0x22')](_0x46c640);return rpc[_0x24abc8+_0x2b0a('0x2f')][_0x2b0a('0x1e')](_0xaf20db)[_0x2b0a('0x30')](function(_0x573545){logger[_0x2b0a('0xc')](_0x2b0a('0x1f'),_0x4397bf,_0xaf20db[_0x2b0a('0x1c')]);if(_0x46c640[_0x2b0a('0x31')]==_0x2b0a('0x32')){_0x4e5d13[_0x2b0a('0xe')]();}else{_0x4e5d13[_0x2b0a('0x25')]();}})['catch'](function(_0x1586e7){logger[_0x2b0a('0x21')](_0x2b0a('0x1f'),_0x4397bf,JSON[_0x2b0a('0x22')](_0x1586e7));_0x4e5d13['next']();});}else{_0x4e5d13[_0x2b0a('0xe')]();}});}}catch(_0x513851){logger[_0x2b0a('0x21')](_0x2b0a('0x1f'),_0x4397bf,JSON[_0x2b0a('0x22')](_0x513851));_0x4e5d13[_0x2b0a('0x25')]();}};};
\ No newline at end of file
index 55687c6..d19c0d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9d9=['../../rpc/whatsappMessage','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','mail','body','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','interaction','created','Autoreply\x20already\x20sent','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','getMustacheRender','message','from','channel','phone','read','subject','startsWith','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','Message','Smtp','service','host','port','secure','authentication','auth','user','messageId','html','replace','<div\x20id=\x22xm-mail-content\x22','<div','</div>','headers','auto-replied','All','sendMailMessage','[%s][AUTOREPLY]\x20SMTP\x20SENT','stringify','catch','[RPC][%s][AUTOREPLY]\x20%s','finally','then','Interaction','update','error','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','create','lodash','moment','./utils','../../rpc/chatMessage','../../rpc/smsMessage'];(function(_0x214991,_0x1fc255){var _0x13c48a=function(_0x1476d4){while(--_0x1476d4){_0x214991['push'](_0x214991['shift']());}};_0x13c48a(++_0x1fc255);}(_0xc9d9,0xd6));var _0x9c9d=function(_0x12d9f0,_0x59181d){_0x12d9f0=_0x12d9f0-0x0;var _0x473fb6=_0xc9d9[_0x12d9f0];return _0x473fb6;};'use strict';var _=require(_0x9c9d('0x0'));var moment=require(_0x9c9d('0x1'));var utils=require(_0x9c9d('0x2'));var logger=require('../../../../config/logger')('routing');var rpc={'chatMessage':require(_0x9c9d('0x3')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x9c9d('0x4')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x9c9d('0x5')),'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0x9c9d('0x6')),'mailInteraction':require(_0x9c9d('0x7')),'smsInteraction':require(_0x9c9d('0x8')),'faxInteraction':require(_0x9c9d('0x9')),'whatsappInteraction':require(_0x9c9d('0xa'))};var mailRpc=require(_0x9c9d('0xb'));exports[_0x9c9d('0xc')]=function(_0x426909,_0x222f48,_0x44f28d,_0x698649){return function(_0x52f30b){try{var _0x357d01=this['channel'];if(_0x357d01===_0x9c9d('0xd')&&_0x698649[_0x9c9d('0xe')]['isAutoreply']){logger[_0x9c9d('0xf')](_0x9c9d('0x10'),_0x426909,_0x9c9d('0x11'));return _0x52f30b['next']();}if(_0x222f48[0x0]==='1'&&(_['isNil'](this[_0x9c9d('0x12')]['created'])||!this['interaction'][_0x9c9d('0x13')])){logger[_0x9c9d('0xf')]('[%s][AUTOREPLY]\x20%s',_0x426909,_0x9c9d('0x14'));return _0x52f30b['next']();}if(_0x222f48[0x0]==='2'&&this[_0x9c9d('0x12')][_0x9c9d('0x15')]){logger[_0x9c9d('0xf')](_0x9c9d('0x16'),_0x426909,_0x9c9d('0x17'));return _0x52f30b[_0x9c9d('0x18')]();}var _0x285115={'ContactId':this[_0x9c9d('0x19')]['id'],'sentAt':moment()[_0x9c9d('0x1a')](_0x9c9d('0x1b')),'direction':_0x9c9d('0x1c')};if(this['channel']==='mail'){_0x285115['body']=utils[_0x9c9d('0x1d')](_0x222f48[0x2],this);}else{_0x285115[_0x9c9d('0xe')]=utils['getMustacheRender'](_0x222f48[0x1],this);}if(this[_0x9c9d('0x1e')]){_0x285115['to']=this[_0x9c9d('0x1e')][_0x9c9d('0x1f')]||'';if(this[_0x9c9d('0x20')]===_0x9c9d('0xd')&&_0x222f48[0x1]==='1'){_0x285115['cc']=this[_0x9c9d('0x1e')]['cc']||'';}_0x285115[_0x9c9d('0x1f')]=this[_0x9c9d('0x1e')]['to']||'';_0x285115['phone']=this[_0x9c9d('0x1e')][_0x9c9d('0x21')]||'';_0x285115[_0x9c9d('0x22')]=!![];if(this['message'][_0x9c9d('0x23')]){_0x285115['subject']='';_0x285115[_0x9c9d('0x23')]+=_[_0x9c9d('0x24')](this[_0x9c9d('0x1e')]['subject'],'Re:')?'':'Re:\x20';_0x285115['subject']+=this[_0x9c9d('0x1e')]['subject'];}}if(this['channel']===_0x9c9d('0x25')){_0x285115[_0x9c9d('0x26')]=this[_0x9c9d('0x27')]['id'];}else{_0x285115[_[_0x9c9d('0x28')](this[_0x9c9d('0x20')])+_0x9c9d('0x29')]=this[_0x9c9d('0x27')]['id'];}_0x285115[_[_0x9c9d('0x28')](this[_0x9c9d('0x20')])+_0x9c9d('0x2a')]=this[_0x9c9d('0x12')]['id'];var _0x13efc1=this[_0x9c9d('0x12')];if(rpc[this[_0x9c9d('0x20')]+_0x9c9d('0x2b')]){if(this[_0x9c9d('0x20')]===_0x9c9d('0xd')){var _0x279b88={'tls':{'rejectUnauthorized':![]}};if(this[_0x9c9d('0x27')][_0x9c9d('0x2c')][_0x9c9d('0x2d')]){_0x279b88[_0x9c9d('0x2d')]=this[_0x9c9d('0x27')][_0x9c9d('0x2c')][_0x9c9d('0x2d')];}else{_0x279b88[_0x9c9d('0x2e')]=this[_0x9c9d('0x27')]['Smtp'][_0x9c9d('0x2e')];_0x279b88[_0x9c9d('0x2f')]=this[_0x9c9d('0x27')]['Smtp'][_0x9c9d('0x2f')];_0x279b88[_0x9c9d('0x30')]=this[_0x9c9d('0x27')][_0x9c9d('0x2c')][_0x9c9d('0x30')];}if(this[_0x9c9d('0x27')][_0x9c9d('0x2c')][_0x9c9d('0x31')]){_0x279b88[_0x9c9d('0x32')]={'user':this[_0x9c9d('0x27')][_0x9c9d('0x2c')][_0x9c9d('0x33')],'pass':this['account'][_0x9c9d('0x2c')]['pass']};}_0x285115['inReplyTo']=this[_0x9c9d('0x1e')][_0x9c9d('0x34')];_0x285115[_0x9c9d('0x35')]='<div\x20id=\x22xm-mail-content\x22>'+_[_0x9c9d('0x36')](_0x285115[_0x9c9d('0xe')],_0x9c9d('0x37'),_0x9c9d('0x38'))+_0x9c9d('0x39');_0x285115[_0x9c9d('0x3a')]={'Auto-Submitted':_0x9c9d('0x3b'),'X-Auto-Response-Suppress':_0x9c9d('0x3c'),'Precedence':'auto_reply'};return mailRpc[_0x9c9d('0x3d')](_0x279b88,_0x285115)['then'](function(_0x16f58e){logger['info'](_0x9c9d('0x3e'),_0x426909);_0x285115['messageId']=_0x16f58e[_0x9c9d('0x1e')][_0x9c9d('0x34')];return rpc[_0x357d01+_0x9c9d('0x2b')]['create'](_0x285115);})['then'](function(_0x39aae5){logger[_0x9c9d('0xf')](_0x9c9d('0x10'),_0x426909,JSON[_0x9c9d('0x3f')](_0x39aae5));})[_0x9c9d('0x40')](function(_0x30ba61){logger['error'](_0x9c9d('0x41'),_0x426909,JSON[_0x9c9d('0x3f')](_0x30ba61));})[_0x9c9d('0x42')](function(){Promise['resolve']()[_0x9c9d('0x43')](function(){if(_0x222f48[0x0]!=='2'||_0x13efc1[_0x9c9d('0x15')])return;return rpc[_0x357d01+_0x9c9d('0x44')][_0x9c9d('0x45')](_0x13efc1['id'],{'autoreplyExecuted':!![]})['then'](function(_0x11e0bc){logger[_0x9c9d('0xf')](_0x9c9d('0x16'),_0x426909,JSON[_0x9c9d('0x3f')](_0x11e0bc));})['catch'](function(_0x1bda1b){logger[_0x9c9d('0x46')](_0x9c9d('0x47'),_0x426909,JSON[_0x9c9d('0x3f')](_0x1bda1b));});})['then'](function(){_0x52f30b[_0x9c9d('0x18')]();});});}else{return rpc[this[_0x9c9d('0x20')]+_0x9c9d('0x2b')][_0x9c9d('0x48')](_0x285115)['then'](function(_0x5107a9){logger['info'](_0x9c9d('0x10'),_0x426909,_0x285115[_0x9c9d('0xe')]);})[_0x9c9d('0x40')](function(_0x24317c){logger[_0x9c9d('0x46')](_0x9c9d('0x10'),_0x426909,JSON[_0x9c9d('0x3f')](_0x24317c));})[_0x9c9d('0x42')](function(){Promise['resolve']()['then'](function(){if(_0x222f48[0x0]!=='2'||_0x13efc1[_0x9c9d('0x15')])return;return rpc[_0x357d01+_0x9c9d('0x44')][_0x9c9d('0x45')](_0x13efc1['id'],{'autoreplyExecuted':!![]})[_0x9c9d('0x43')](function(_0x4d4826){logger[_0x9c9d('0xf')](_0x9c9d('0x16'),_0x426909,JSON[_0x9c9d('0x3f')](_0x4d4826));})[_0x9c9d('0x40')](function(_0x2a044a){logger[_0x9c9d('0x46')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x426909,JSON['stringify'](_0x2a044a));});})[_0x9c9d('0x43')](function(){_0x52f30b[_0x9c9d('0x18')]();});});}}}catch(_0x1df718){logger[_0x9c9d('0x46')]('[%s][AUTOREPLY]\x20%s',_0x426909,JSON[_0x9c9d('0x3f')](_0x1df718));_0x52f30b['stop']();}};};
\ No newline at end of file
+var _0xfe86=['../../rpc/chatInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','channel','mail','isAutoreply','info','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','next','interaction','created','Autoreply\x20already\x20sent','autoreplyExecuted','One\x20Time\x20already\x20sent','contact','format','out','body','getMustacheRender','message','phone','subject','startsWith','Re:','ChatWebsiteId','account','upperFirst','InteractionId','Message','Smtp','service','host','port','secure','auth','user','pass','inReplyTo','messageId','html','<div\x20id=\x22xm-mail-content\x22>','<div\x20id=\x22xm-mail-content\x22','<div','</div>','auto-replied','All','auto_reply','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','create','stringify','catch','error','[RPC][%s][AUTOREPLY]\x20%s','Interaction','update','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','[%s][AUTOREPLY]\x20%s','finally','resolve','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','stop','lodash','moment','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/smsMessage','../../rpc/whatsappMessage'];(function(_0x2165e3,_0x438638){var _0x3f7bd0=function(_0x329b40){while(--_0x329b40){_0x2165e3['push'](_0x2165e3['shift']());}};_0x3f7bd0(++_0x438638);}(_0xfe86,0xd3));var _0x6fe8=function(_0xe15270,_0x227d06){_0xe15270=_0xe15270-0x0;var _0x1e813b=_0xfe86[_0xe15270];return _0x1e813b;};'use strict';var _=require(_0x6fe8('0x0'));var moment=require(_0x6fe8('0x1'));var utils=require(_0x6fe8('0x2'));var logger=require(_0x6fe8('0x3'))(_0x6fe8('0x4'));var rpc={'chatMessage':require(_0x6fe8('0x5')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x6fe8('0x6')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x6fe8('0x7')),'chatInteraction':require(_0x6fe8('0x8')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'mailInteraction':require(_0x6fe8('0x9')),'smsInteraction':require('../../rpc/smsInteraction'),'faxInteraction':require(_0x6fe8('0xa')),'whatsappInteraction':require(_0x6fe8('0xb'))};var mailRpc=require(_0x6fe8('0xc'));exports[_0x6fe8('0xd')]=function(_0x3be10b,_0x46e3a1,_0x5bc4a1,_0x22798b){return function(_0x5562c9){try{var _0x4c9d2d=this[_0x6fe8('0xe')];if(_0x4c9d2d===_0x6fe8('0xf')&&_0x22798b['body'][_0x6fe8('0x10')]){logger[_0x6fe8('0x11')]('[%s][AUTOREPLY]\x20%s',_0x3be10b,_0x6fe8('0x12'));return _0x5562c9[_0x6fe8('0x13')]();}if(_0x46e3a1[0x0]==='1'&&(_['isNil'](this[_0x6fe8('0x14')][_0x6fe8('0x15')])||!this[_0x6fe8('0x14')]['created'])){logger[_0x6fe8('0x11')]('[%s][AUTOREPLY]\x20%s',_0x3be10b,_0x6fe8('0x16'));return _0x5562c9[_0x6fe8('0x13')]();}if(_0x46e3a1[0x0]==='2'&&this['interaction'][_0x6fe8('0x17')]){logger[_0x6fe8('0x11')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x3be10b,_0x6fe8('0x18'));return _0x5562c9[_0x6fe8('0x13')]();}var _0x5b60a4={'ContactId':this[_0x6fe8('0x19')]['id'],'sentAt':moment()[_0x6fe8('0x1a')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x6fe8('0x1b')};if(this[_0x6fe8('0xe')]===_0x6fe8('0xf')){_0x5b60a4['body']=utils['getMustacheRender'](_0x46e3a1[0x2],this);}else{_0x5b60a4[_0x6fe8('0x1c')]=utils[_0x6fe8('0x1d')](_0x46e3a1[0x1],this);}if(this['message']){_0x5b60a4['to']=this['message']['from']||'';if(this[_0x6fe8('0xe')]==='mail'&&_0x46e3a1[0x1]==='1'){_0x5b60a4['cc']=this[_0x6fe8('0x1e')]['cc']||'';}_0x5b60a4['from']=this[_0x6fe8('0x1e')]['to']||'';_0x5b60a4[_0x6fe8('0x1f')]=this['message'][_0x6fe8('0x1f')]||'';_0x5b60a4['read']=!![];if(this['message'][_0x6fe8('0x20')]){_0x5b60a4[_0x6fe8('0x20')]='';_0x5b60a4['subject']+=_[_0x6fe8('0x21')](this['message'][_0x6fe8('0x20')],_0x6fe8('0x22'))?'':'Re:\x20';_0x5b60a4['subject']+=this[_0x6fe8('0x1e')][_0x6fe8('0x20')];}}if(this['channel']==='chat'){_0x5b60a4[_0x6fe8('0x23')]=this[_0x6fe8('0x24')]['id'];}else{_0x5b60a4[_[_0x6fe8('0x25')](this[_0x6fe8('0xe')])+'AccountId']=this['account']['id'];}_0x5b60a4[_[_0x6fe8('0x25')](this['channel'])+_0x6fe8('0x26')]=this[_0x6fe8('0x14')]['id'];var _0x48a392=this[_0x6fe8('0x14')];if(rpc[this['channel']+_0x6fe8('0x27')]){if(this[_0x6fe8('0xe')]==='mail'){var _0x2e1a77={'tls':{'rejectUnauthorized':![]}};if(this[_0x6fe8('0x24')][_0x6fe8('0x28')]['service']){_0x2e1a77[_0x6fe8('0x29')]=this[_0x6fe8('0x24')][_0x6fe8('0x28')][_0x6fe8('0x29')];}else{_0x2e1a77[_0x6fe8('0x2a')]=this['account'][_0x6fe8('0x28')][_0x6fe8('0x2a')];_0x2e1a77[_0x6fe8('0x2b')]=this[_0x6fe8('0x24')]['Smtp'][_0x6fe8('0x2b')];_0x2e1a77[_0x6fe8('0x2c')]=this[_0x6fe8('0x24')][_0x6fe8('0x28')]['secure'];}if(this[_0x6fe8('0x24')][_0x6fe8('0x28')]['authentication']){_0x2e1a77[_0x6fe8('0x2d')]={'user':this[_0x6fe8('0x24')][_0x6fe8('0x28')][_0x6fe8('0x2e')],'pass':this[_0x6fe8('0x24')][_0x6fe8('0x28')][_0x6fe8('0x2f')]};}_0x5b60a4[_0x6fe8('0x30')]=this[_0x6fe8('0x1e')][_0x6fe8('0x31')];_0x5b60a4[_0x6fe8('0x32')]=_0x6fe8('0x33')+_['replace'](_0x5b60a4[_0x6fe8('0x1c')],_0x6fe8('0x34'),_0x6fe8('0x35'))+_0x6fe8('0x36');_0x5b60a4['headers']={'Auto-Submitted':_0x6fe8('0x37'),'X-Auto-Response-Suppress':_0x6fe8('0x38'),'Precedence':_0x6fe8('0x39')};return mailRpc['sendMailMessage'](_0x2e1a77,_0x5b60a4)[_0x6fe8('0x3a')](function(_0x5653d6){logger[_0x6fe8('0x11')](_0x6fe8('0x3b'),_0x3be10b);_0x5b60a4[_0x6fe8('0x31')]=_0x5653d6['message']['messageId'];return rpc[_0x4c9d2d+_0x6fe8('0x27')][_0x6fe8('0x3c')](_0x5b60a4);})['then'](function(_0x539bc3){logger[_0x6fe8('0x11')]('[%s][AUTOREPLY]\x20%s',_0x3be10b,JSON[_0x6fe8('0x3d')](_0x539bc3));})[_0x6fe8('0x3e')](function(_0x2f2f5c){logger[_0x6fe8('0x3f')](_0x6fe8('0x40'),_0x3be10b,JSON[_0x6fe8('0x3d')](_0x2f2f5c));})['finally'](function(){Promise['resolve']()['then'](function(){if(_0x46e3a1[0x0]!=='2'||_0x48a392[_0x6fe8('0x17')])return;return rpc[_0x4c9d2d+_0x6fe8('0x41')][_0x6fe8('0x42')](_0x48a392['id'],{'autoreplyExecuted':!![]})[_0x6fe8('0x3a')](function(_0x139d53){logger[_0x6fe8('0x11')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x3be10b,JSON[_0x6fe8('0x3d')](_0x139d53));})['catch'](function(_0x271205){logger['error'](_0x6fe8('0x43'),_0x3be10b,JSON['stringify'](_0x271205));});})[_0x6fe8('0x3a')](function(){_0x5562c9[_0x6fe8('0x13')]();});});}else{return rpc[this[_0x6fe8('0xe')]+'Message']['create'](_0x5b60a4)[_0x6fe8('0x3a')](function(_0x1b9d84){logger[_0x6fe8('0x11')](_0x6fe8('0x44'),_0x3be10b,_0x5b60a4[_0x6fe8('0x1c')]);})[_0x6fe8('0x3e')](function(_0xa29bf2){logger['error'](_0x6fe8('0x44'),_0x3be10b,JSON[_0x6fe8('0x3d')](_0xa29bf2));})[_0x6fe8('0x45')](function(){Promise[_0x6fe8('0x46')]()[_0x6fe8('0x3a')](function(){if(_0x46e3a1[0x0]!=='2'||_0x48a392['autoreplyExecuted'])return;return rpc[_0x4c9d2d+_0x6fe8('0x41')][_0x6fe8('0x42')](_0x48a392['id'],{'autoreplyExecuted':!![]})[_0x6fe8('0x3a')](function(_0x443336){logger[_0x6fe8('0x11')](_0x6fe8('0x47'),_0x3be10b,JSON[_0x6fe8('0x3d')](_0x443336));})[_0x6fe8('0x3e')](function(_0x14071c){logger['error'](_0x6fe8('0x43'),_0x3be10b,JSON[_0x6fe8('0x3d')](_0x14071c));});})['then'](function(){_0x5562c9['next']();});});}}}catch(_0xbffe30){logger[_0x6fe8('0x3f')]('[%s][AUTOREPLY]\x20%s',_0x3be10b,JSON[_0x6fe8('0x3d')](_0xbffe30));_0x5562c9[_0x6fe8('0x48')]();}};};
\ No newline at end of file
index 6f2e29a..d7bf550 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefed=['moment','../../../../config/logger','routing','../../rpc/chatInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','consequence','info','[%s][CLOSE]\x20reason\x20%s','YYYY-MM-DD\x20HH:mm:ss','Interaction','channel','update','interaction','then','catch','error','stringify','finally','stop','[%s][CLOSE]\x20%s'];(function(_0xf42eac,_0x5a74c7){var _0xc22667=function(_0x3dfbe3){while(--_0x3dfbe3){_0xf42eac['push'](_0xf42eac['shift']());}};_0xc22667(++_0x5a74c7);}(_0xefed,0x176));var _0xdefe=function(_0x39c734,_0x2f3e06){_0x39c734=_0x39c734-0x0;var _0xb2a2f9=_0xefed[_0x39c734];return _0xb2a2f9;};'use strict';var moment=require(_0xdefe('0x0'));var logger=require(_0xdefe('0x1'))(_0xdefe('0x2'));var rpc={'chatInteraction':require(_0xdefe('0x3')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require(_0xdefe('0x4')),'mailInteraction':require(_0xdefe('0x5')),'faxInteraction':require(_0xdefe('0x6')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};exports[_0xdefe('0x7')]=function(_0x1d5f81,_0x4b4879,_0x171979,_0x525534){return function(_0x21427b){try{logger[_0xdefe('0x8')](_0xdefe('0x9'),_0x1d5f81,_0x4b4879[0x0]);var _0x29cba4={'closed':0x1,'closedAt':moment()['format'](_0xdefe('0xa')),'closeReason':'system','disposition':_0x4b4879[0x0]};if(rpc[_0x525534['channel']+_0xdefe('0xb')]){rpc[_0x525534[_0xdefe('0xc')]+_0xdefe('0xb')][_0xdefe('0xd')](_0x525534[_0xdefe('0xe')]['id'],_0x29cba4)[_0xdefe('0xf')](function(_0x42f559){logger[_0xdefe('0x8')]('[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!',_0x1d5f81,_0x525534[_0xdefe('0xe')]['id']);})[_0xdefe('0x10')](function(_0x111f35){logger[_0xdefe('0x11')]('[%s][CLOSE]\x20%s',_0x1d5f81,JSON[_0xdefe('0x12')](_0x111f35));})[_0xdefe('0x13')](function(){_0x21427b[_0xdefe('0x14')]();});}}catch(_0x427437){logger[_0xdefe('0x11')](_0xdefe('0x15'),_0x1d5f81,JSON[_0xdefe('0x12')](_0x427437));_0x21427b['stop']();}};};
\ No newline at end of file
+var _0x8267=['[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','error','[%s][CLOSE]\x20%s','stringify','stop','moment','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','consequence','info','[%s][CLOSE]\x20reason\x20%s','format','YYYY-MM-DD\x20HH:mm:ss','channel','Interaction','update','interaction','then'];(function(_0x4279a1,_0x595ea5){var _0xbcaca9=function(_0x3fd3c1){while(--_0x3fd3c1){_0x4279a1['push'](_0x4279a1['shift']());}};_0xbcaca9(++_0x595ea5);}(_0x8267,0xcd));var _0x7826=function(_0x23037b,_0x5423b4){_0x23037b=_0x23037b-0x0;var _0x3310e6=_0x8267[_0x23037b];return _0x3310e6;};'use strict';var moment=require(_0x7826('0x0'));var logger=require('../../../../config/logger')('routing');var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0x7826('0x1')),'smsInteraction':require(_0x7826('0x2')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0x7826('0x3')),'whatsappInteraction':require(_0x7826('0x4'))};exports[_0x7826('0x5')]=function(_0x295f6a,_0x3b2595,_0xe849bd,_0x4b4ecc){return function(_0x190de2){try{logger[_0x7826('0x6')](_0x7826('0x7'),_0x295f6a,_0x3b2595[0x0]);var _0x3eaca3={'closed':0x1,'closedAt':moment()[_0x7826('0x8')](_0x7826('0x9')),'closeReason':'system','disposition':_0x3b2595[0x0]};if(rpc[_0x4b4ecc[_0x7826('0xa')]+_0x7826('0xb')]){rpc[_0x4b4ecc['channel']+_0x7826('0xb')][_0x7826('0xc')](_0x4b4ecc[_0x7826('0xd')]['id'],_0x3eaca3)[_0x7826('0xe')](function(_0x2cc875){logger[_0x7826('0x6')](_0x7826('0xf'),_0x295f6a,_0x4b4ecc['interaction']['id']);})['catch'](function(_0x296b7f){logger[_0x7826('0x10')](_0x7826('0x11'),_0x295f6a,JSON['stringify'](_0x296b7f));})['finally'](function(){_0x190de2['stop']();});}}catch(_0x132244){logger[_0x7826('0x10')](_0x7826('0x11'),_0x295f6a,JSON[_0x7826('0x12')](_0x132244));_0x190de2[_0x7826('0x13')]();}};};
\ No newline at end of file
index b012c04..1d9ba32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3595=['format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','chat','ChatWebsiteId','AccountId','account','upperFirst','InteractionId','isEmpty','body','Message','create','then','catch','stringify','finally','stop','textRequest','message','dialogflow','result','fulfillment','speech','providerName','providerResponse','endConversation','next','error','lodash','moment','apiai-promise','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','info','[%s][DIALOGFLOW]\x20%s'];(function(_0x4baf73,_0x4d5f13){var _0x14299d=function(_0x5f0f0a){while(--_0x5f0f0a){_0x4baf73['push'](_0x4baf73['shift']());}};_0x14299d(++_0x4d5f13);}(_0x3595,0x147));var _0x5359=function(_0x52d7ac,_0x42eec5){_0x52d7ac=_0x52d7ac-0x0;var _0x83b94d=_0x3595[_0x52d7ac];return _0x83b94d;};'use strict';var _=require(_0x5359('0x0'));var moment=require(_0x5359('0x1'));var apiai=require(_0x5359('0x2'));var md5=require('md5');var utils=require(_0x5359('0x3'));var logger=require(_0x5359('0x4'))(_0x5359('0x5'));var rpc={'chatMessage':require(_0x5359('0x6')),'openchannelMessage':require(_0x5359('0x7')),'mailMessage':require(_0x5359('0x8')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x5359('0x9'))};exports[_0x5359('0xa')]=function(_0x1b6f48,_0x29a776){return function(_0x39fcd8){try{if(!_[_0x5359('0xb')](this[_0x5359('0xc')][_0x5359('0xd')])){logger[_0x5359('0xe')](_0x5359('0xf'),_0x1b6f48,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x39fcd8['next']();}var _0x4c70d7={'ContactId':this['contact']['id'],'sentAt':moment()[_0x5359('0x10')](_0x5359('0x11')),'direction':_0x5359('0x12')};if(this[_0x5359('0x13')]===_0x5359('0x14')||this[_0x5359('0x13')]===_0x5359('0x15')){_0x4c70d7[_0x5359('0x16')]=this[_0x5359('0xc')][_0x5359('0x16')];}var _0x272dbc=this[_0x5359('0x13')];if(_0x272dbc===_0x5359('0x17')){_0x4c70d7[_0x5359('0x18')]=this['account']['id'];}else{_0x4c70d7[_['upperFirst'](_0x272dbc)+_0x5359('0x19')]=this[_0x5359('0x1a')]['id'];}_0x4c70d7[_[_0x5359('0x1b')](_0x272dbc)+_0x5359('0x1c')]=this[_0x5359('0xc')]['id'];if(this[_0x5359('0xc')]['created']){var _0x5399bb=_0x29a776[0x2];if(!_[_0x5359('0x1d')](_0x5399bb)){_0x4c70d7[_0x5359('0x1e')]=utils['getMustacheRender'](_0x5399bb,this);return rpc[_0x272dbc+_0x5359('0x1f')][_0x5359('0x20')](_0x4c70d7)[_0x5359('0x21')](function(_0x2d0962){logger['info']('[%s][DIALOGFLOW]\x20%s',_0x1b6f48,_0x4c70d7['body']);})[_0x5359('0x22')](function(_0x3f5ec2){logger['error'](_0x5359('0xf'),_0x1b6f48,JSON[_0x5359('0x23')](_0x3f5ec2));})[_0x5359('0x24')](function(){logger[_0x5359('0xe')]('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x1b6f48);_0x39fcd8[_0x5359('0x25')]();});}else{logger[_0x5359('0xe')]('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x1b6f48);_0x39fcd8[_0x5359('0x25')]();}}else{var _0x27749e=this;var _0x3d3c0c=apiai(_0x29a776[0x0],{'language':_0x29a776[0x1]||'en'});return _0x3d3c0c[_0x5359('0x26')](this[_0x5359('0x27')]['body'],{'sessionId':md5(this['interaction']['id'])})[_0x5359('0x21')](function(_0xc2eb10){_0x27749e[_0x5359('0x1e')][_0x5359('0x28')]=_0xc2eb10;_0x4c70d7[_0x5359('0x1e')]=_0xc2eb10[_0x5359('0x29')][_0x5359('0x2a')][_0x5359('0x2b')];_0x4c70d7[_0x5359('0x2c')]='dialogflow';_0x4c70d7[_0x5359('0x2d')]=JSON[_0x5359('0x23')](_0xc2eb10);return rpc[_0x272dbc+_0x5359('0x1f')][_0x5359('0x20')](_0x4c70d7)[_0x5359('0x21')](function(_0x402bce){logger['info'](_0x5359('0xf'),_0x1b6f48,_0x4c70d7['body']);if(_0xc2eb10[_0x5359('0x29')]['metadata'][_0x5359('0x2e')]){_0x39fcd8[_0x5359('0x2f')]();}else{_0x39fcd8['stop']();}})[_0x5359('0x22')](function(_0x5766e3){logger[_0x5359('0x30')](_0x5359('0xf'),_0x1b6f48,JSON[_0x5359('0x23')](_0x5766e3));_0x39fcd8[_0x5359('0x2f')]();});})[_0x5359('0x22')](function(_0x3a2552){logger[_0x5359('0x30')](_0x5359('0xf'),_0x1b6f48,_0x3a2552[_0x5359('0x27')]);_0x39fcd8[_0x5359('0x2f')]();});}}catch(_0xf952d8){logger[_0x5359('0x30')](_0x5359('0xf'),_0x1b6f48,JSON[_0x5359('0x23')](_0xf952d8));_0x39fcd8[_0x5359('0x25')]();}};};
\ No newline at end of file
+var _0x22da=['Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','format','YYYY-MM-DD\x20HH:mm:ss','sms','channel','phone','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','isEmpty','body','getMustacheRender','Message','create','then','info','catch','error','stringify','stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','textRequest','dialogflow','result','fulfillment','speech','providerResponse','metadata','next','message','apiai-promise','md5','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','[%s][DIALOGFLOW]\x20%s'];(function(_0x8df6a6,_0x19e5fc){var _0x1f6b7e=function(_0x435a9d){while(--_0x435a9d){_0x8df6a6['push'](_0x8df6a6['shift']());}};_0x1f6b7e(++_0x19e5fc);}(_0x22da,0x80));var _0xa22d=function(_0x2fa5bb,_0x2ac810){_0x2fa5bb=_0x2fa5bb-0x0;var _0x726336=_0x22da[_0x2fa5bb];return _0x726336;};'use strict';var _=require('lodash');var moment=require('moment');var apiai=require(_0xa22d('0x0'));var md5=require(_0xa22d('0x1'));var utils=require(_0xa22d('0x2'));var logger=require(_0xa22d('0x3'))('routing');var rpc={'chatMessage':require(_0xa22d('0x4')),'openchannelMessage':require(_0xa22d('0x5')),'mailMessage':require(_0xa22d('0x6')),'smsMessage':require(_0xa22d('0x7')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0xa22d('0x8'))};exports[_0xa22d('0x9')]=function(_0x4c67ad,_0x215529){return function(_0x44a5c7){try{if(!_[_0xa22d('0xa')](this[_0xa22d('0xb')]['UserId'])){logger['info'](_0xa22d('0xc'),_0x4c67ad,_0xa22d('0xd'));return _0x44a5c7['next']();}var _0x312520={'ContactId':this[_0xa22d('0xe')]['id'],'sentAt':moment()[_0xa22d('0xf')](_0xa22d('0x10')),'direction':'out'};if(this['channel']===_0xa22d('0x11')||this[_0xa22d('0x12')]==='whatsapp'){_0x312520[_0xa22d('0x13')]=this['interaction'][_0xa22d('0x13')];}var _0x3e49f4=this[_0xa22d('0x12')];if(_0x3e49f4==='chat'){_0x312520[_0xa22d('0x14')]=this[_0xa22d('0x15')]['id'];}else{_0x312520[_[_0xa22d('0x16')](_0x3e49f4)+_0xa22d('0x17')]=this[_0xa22d('0x15')]['id'];}_0x312520[_['upperFirst'](_0x3e49f4)+_0xa22d('0x18')]=this[_0xa22d('0xb')]['id'];if(this[_0xa22d('0xb')][_0xa22d('0x19')]){var _0x14a1a7=_0x215529[0x2];if(!_[_0xa22d('0x1a')](_0x14a1a7)){_0x312520[_0xa22d('0x1b')]=utils[_0xa22d('0x1c')](_0x14a1a7,this);return rpc[_0x3e49f4+_0xa22d('0x1d')][_0xa22d('0x1e')](_0x312520)[_0xa22d('0x1f')](function(_0x1ed22e){logger[_0xa22d('0x20')](_0xa22d('0xc'),_0x4c67ad,_0x312520[_0xa22d('0x1b')]);})[_0xa22d('0x21')](function(_0x47f683){logger[_0xa22d('0x22')](_0xa22d('0xc'),_0x4c67ad,JSON[_0xa22d('0x23')](_0x47f683));})['finally'](function(){logger['info']('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x4c67ad);_0x44a5c7[_0xa22d('0x24')]();});}else{logger[_0xa22d('0x20')](_0xa22d('0x25'),_0x4c67ad);_0x44a5c7['stop']();}}else{var _0x389675=this;var _0x45f528=apiai(_0x215529[0x0],{'language':_0x215529[0x1]||'en'});return _0x45f528[_0xa22d('0x26')](this['message'][_0xa22d('0x1b')],{'sessionId':md5(this[_0xa22d('0xb')]['id'])})['then'](function(_0x24701d){_0x389675[_0xa22d('0x1b')][_0xa22d('0x27')]=_0x24701d;_0x312520[_0xa22d('0x1b')]=_0x24701d[_0xa22d('0x28')][_0xa22d('0x29')][_0xa22d('0x2a')];_0x312520['providerName']='dialogflow';_0x312520[_0xa22d('0x2b')]=JSON[_0xa22d('0x23')](_0x24701d);return rpc[_0x3e49f4+_0xa22d('0x1d')][_0xa22d('0x1e')](_0x312520)[_0xa22d('0x1f')](function(_0x291763){logger[_0xa22d('0x20')](_0xa22d('0xc'),_0x4c67ad,_0x312520[_0xa22d('0x1b')]);if(_0x24701d[_0xa22d('0x28')][_0xa22d('0x2c')]['endConversation']){_0x44a5c7[_0xa22d('0x2d')]();}else{_0x44a5c7['stop']();}})['catch'](function(_0x1d7b33){logger[_0xa22d('0x22')](_0xa22d('0xc'),_0x4c67ad,JSON[_0xa22d('0x23')](_0x1d7b33));_0x44a5c7[_0xa22d('0x2d')]();});})[_0xa22d('0x21')](function(_0x1ef634){logger[_0xa22d('0x22')]('[%s][DIALOGFLOW]\x20%s',_0x4c67ad,_0x1ef634[_0xa22d('0x2e')]);_0x44a5c7[_0xa22d('0x2d')]();});}}catch(_0x301b96){logger[_0xa22d('0x22')](_0xa22d('0xc'),_0x4c67ad,JSON[_0xa22d('0x23')](_0x301b96));_0x44a5c7[_0xa22d('0x24')]();}};};
\ No newline at end of file
index c3ffcf8..02e3aab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52c1=['routing','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','clone','body','create','then','[%s][DIALOGFLOWV2]\x20%s','error','stringify','consequence','isNil','UserId','info','next','contact','out','channel','sms','phone','interaction','ChatWebsiteId','upperFirst','AccountId','created','isEmpty','getMustacheRender','Message','catch','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','SessionsClient','sessionPath','message','length','dialogflowV2','queryResult','fields','diagnosticInfo','end_conversation','boolValue','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerResponse','push','fulfillmentText','all','lodash','moment','bluebird','../../../../config/logger'];(function(_0x21c254,_0x51d2ff){var _0x442f28=function(_0x1ecbe7){while(--_0x1ecbe7){_0x21c254['push'](_0x21c254['shift']());}};_0x442f28(++_0x51d2ff);}(_0x52c1,0xce));var _0x152c=function(_0x477671,_0x247c67){_0x477671=_0x477671-0x0;var _0x467112=_0x52c1[_0x477671];return _0x467112;};'use strict';var _=require(_0x152c('0x0'));var dialogflow=require('dialogflow');var md5=require('md5');var moment=require(_0x152c('0x1'));var Promise=require(_0x152c('0x2'));var logger=require(_0x152c('0x3'))(_0x152c('0x4'));var utils=require(_0x152c('0x5'));var rpc={'chatMessage':require(_0x152c('0x6')),'openchannelMessage':require(_0x152c('0x7')),'mailMessage':require(_0x152c('0x8')),'smsMessage':require(_0x152c('0x9')),'faxMessage':require(_0x152c('0xa')),'whatsappMessage':require('../../rpc/whatsappMessage')};function createMessage(_0x507c6f,_0x11a673,_0x43217b,_0x4f032e){return new Promise(function(_0x255a67,_0x207885){var _0xb4a95f=_[_0x152c('0xb')](_0x43217b);_0xb4a95f[_0x152c('0xc')]=_0x4f032e;return rpc[_0x11a673+'Message'][_0x152c('0xd')](_0xb4a95f)[_0x152c('0xe')](function(){logger['info'](_0x152c('0xf'),_0x507c6f,_0xb4a95f['body']);_0x255a67();})['catch'](function(_0x5a8956){logger[_0x152c('0x10')]('[%s][DIALOGFLOWV2]\x20%s',_0x507c6f,JSON[_0x152c('0x11')](_0x5a8956));_0x207885(_0x5a8956);});});}exports[_0x152c('0x12')]=function(_0x1ae23e,_0x3a51ba){return function(_0x1fbb33){try{if(!_[_0x152c('0x13')](this['interaction'][_0x152c('0x14')])){logger[_0x152c('0x15')](_0x152c('0xf'),_0x1ae23e,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x1fbb33[_0x152c('0x16')]();}var _0x92508d={'ContactId':this[_0x152c('0x17')]['id'],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x152c('0x18')};if(this[_0x152c('0x19')]===_0x152c('0x1a')||this['channel']==='whatsapp'){_0x92508d[_0x152c('0x1b')]=this[_0x152c('0x1c')][_0x152c('0x1b')];}var _0x563be4=this['channel'];if(_0x563be4==='chat'){_0x92508d[_0x152c('0x1d')]=this['account']['id'];}else{_0x92508d[_[_0x152c('0x1e')](_0x563be4)+_0x152c('0x1f')]=this['account']['id'];}_0x92508d[_[_0x152c('0x1e')](_0x563be4)+'InteractionId']=this[_0x152c('0x1c')]['id'];if(this[_0x152c('0x1c')][_0x152c('0x20')]){var _0xb14731=_0x3a51ba[0x4];if(!_[_0x152c('0x21')](_0xb14731)){_0x92508d[_0x152c('0xc')]=utils[_0x152c('0x22')](_0xb14731,this);return rpc[_0x563be4+_0x152c('0x23')]['create'](_0x92508d)[_0x152c('0xe')](function(_0x3c13c3){logger[_0x152c('0x15')](_0x152c('0xf'),_0x1ae23e,_0x92508d[_0x152c('0xc')]);})[_0x152c('0x24')](function(_0x36fb91){logger['error'](_0x152c('0xf'),_0x1ae23e,JSON[_0x152c('0x11')](_0x36fb91));})[_0x152c('0x25')](function(){logger[_0x152c('0x15')](_0x152c('0x26'),_0x1ae23e);_0x1fbb33[_0x152c('0x27')]();});}else{logger['info'](_0x152c('0x28'),_0x1ae23e);_0x1fbb33[_0x152c('0x27')]();}}else{var _0x59e1ba=this;var _0x2c6976=_0x3a51ba[0x2][_0x152c('0x29')](/\\n/g,'\x0a');var _0x4dd2e0={'credentials':{'private_key':_0x2c6976,'client_email':_0x3a51ba[0x1]}};var _0x424b9c=new dialogflow[(_0x152c('0x2a'))](_0x4dd2e0);var _0x4da55d=_0x424b9c[_0x152c('0x2b')](_0x3a51ba[0x0],md5(_0x59e1ba[_0x152c('0x1c')]['id']));var _0x1588d4={'session':_0x4da55d,'queryInput':{'text':{'text':_0x59e1ba[_0x152c('0x2c')][_0x152c('0xc')],'languageCode':_0x3a51ba[0x3]||'en'}}};return _0x424b9c['detectIntent'](_0x1588d4)[_0x152c('0xe')](function(_0x5a9467){if(_0x5a9467&&_0x5a9467[_0x152c('0x2d')]){_0x59e1ba[_0x152c('0xc')][_0x152c('0x2e')]=_0x5a9467;var _0x3cf7f1=_0x5a9467[0x0];var _0x4b5a3f=_0x3cf7f1[_0x152c('0x2f')]['diagnosticInfo']&&_0x3cf7f1[_0x152c('0x2f')]['diagnosticInfo'][_0x152c('0x30')]?_0x3cf7f1[_0x152c('0x2f')][_0x152c('0x31')][_0x152c('0x30')][_0x152c('0x32')][_0x152c('0x33')]:![];_0x59e1ba[_0x152c('0xc')][_0x152c('0x34')]=_0x3cf7f1[_0x152c('0x2f')][_0x152c('0x35')];_0x59e1ba[_0x152c('0xc')][_0x152c('0x36')]=_0x3cf7f1['queryResult'][_0x152c('0x37')];_0x59e1ba[_0x152c('0xc')]['DIALOGFLOWV2_ENDCONVERSATION']=_0x3cf7f1['queryResult'][_0x152c('0x31')]&&_0x3cf7f1[_0x152c('0x2f')][_0x152c('0x31')]['fields']?_0x3cf7f1[_0x152c('0x2f')][_0x152c('0x31')][_0x152c('0x30')]['end_conversation'][_0x152c('0x33')]:![];_0x59e1ba[_0x152c('0xc')]['DIALOGFLOWV2_INTENTNAME']=_0x3cf7f1[_0x152c('0x2f')][_0x152c('0x38')][_0x152c('0x39')];_0x59e1ba[_0x152c('0xc')][_0x152c('0x3a')]=_0x3cf7f1['queryResult']['intent'][_0x152c('0x3b')];_0x59e1ba[_0x152c('0xc')][_0x152c('0x3c')]=_0x3cf7f1[_0x152c('0x2f')]['intent']['isFallback'];_0x59e1ba[_0x152c('0xc')][_0x152c('0x3d')]=_0x3cf7f1[_0x152c('0x2f')][_0x152c('0x3e')];_0x59e1ba['body'][_0x152c('0x3f')]=_0x3cf7f1[_0x152c('0x2f')]['queryText'];_0x59e1ba[_0x152c('0xc')][_0x152c('0x40')]=_0x3cf7f1[_0x152c('0x2f')][_0x152c('0x41')];_0x92508d['providerName']=_0x152c('0x2e');_0x92508d[_0x152c('0x42')]=JSON['stringify'](_0x5a9467);var _0x50bb9e=[];for(var _0x1f6150=0x0;_0x1f6150<_0x5a9467[_0x152c('0x2d')];_0x1f6150++){var _0xf9324a=_0x5a9467[_0x1f6150];if(_0xf9324a&&_0xf9324a[_0x152c('0x2f')]&&_0xf9324a[_0x152c('0x2f')]['fulfillmentText']){_0x50bb9e[_0x152c('0x43')](createMessage(_0x1ae23e,_0x563be4,_0x92508d,_0xf9324a[_0x152c('0x2f')][_0x152c('0x44')]));}}return Promise[_0x152c('0x45')](_0x50bb9e)[_0x152c('0xe')](function(){if(_0x4b5a3f){_0x1fbb33[_0x152c('0x16')]();}else{_0x1fbb33[_0x152c('0x27')]();}})[_0x152c('0x24')](function(_0x17a5a3){logger[_0x152c('0x10')](_0x152c('0xf'),_0x1ae23e,JSON[_0x152c('0x11')](_0x17a5a3));_0x1fbb33[_0x152c('0x16')]();});}})[_0x152c('0x24')](function(_0x4cd09d){logger[_0x152c('0x10')](_0x152c('0xf'),_0x1ae23e,_0x4cd09d[_0x152c('0x2c')]);_0x1fbb33['next']();});}}catch(_0x4bdcae){logger[_0x152c('0x10')](_0x152c('0xf'),_0x1ae23e,JSON[_0x152c('0x11')](_0x4bdcae));_0x1fbb33['stop']();}};};
\ No newline at end of file
+var _0xc8d3=['message','lodash','dialogflow','md5','moment','bluebird','routing','./utils','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','clone','body','Message','create','then','info','[%s][DIALOGFLOWV2]\x20%s','catch','error','isNil','interaction','UserId','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','format','out','channel','phone','ChatWebsiteId','account','upperFirst','created','isEmpty','getMustacheRender','stringify','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','stop','replace','sessionPath','detectIntent','length','diagnosticInfo','queryResult','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','providerName','dialogflowV2','providerResponse','fulfillmentText','push','all'];(function(_0x43fd08,_0x1b22d2){var _0xe50a56=function(_0x16148d){while(--_0x16148d){_0x43fd08['push'](_0x43fd08['shift']());}};_0xe50a56(++_0x1b22d2);}(_0xc8d3,0x1dd));var _0x3c8d=function(_0x5d2803,_0xf375bd){_0x5d2803=_0x5d2803-0x0;var _0xdcad2c=_0xc8d3[_0x5d2803];return _0xdcad2c;};'use strict';var _=require(_0x3c8d('0x0'));var dialogflow=require(_0x3c8d('0x1'));var md5=require(_0x3c8d('0x2'));var moment=require(_0x3c8d('0x3'));var Promise=require(_0x3c8d('0x4'));var logger=require('../../../../config/logger')(_0x3c8d('0x5'));var utils=require(_0x3c8d('0x6'));var rpc={'chatMessage':require(_0x3c8d('0x7')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x3c8d('0x8')),'smsMessage':require(_0x3c8d('0x9')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x3c8d('0xa'))};function createMessage(_0x515a4d,_0x4cbf39,_0x36b6ce,_0x53c9e2){return new Promise(function(_0x45cfbb,_0x392bf1){var _0x141445=_[_0x3c8d('0xb')](_0x36b6ce);_0x141445[_0x3c8d('0xc')]=_0x53c9e2;return rpc[_0x4cbf39+_0x3c8d('0xd')][_0x3c8d('0xe')](_0x141445)[_0x3c8d('0xf')](function(){logger[_0x3c8d('0x10')](_0x3c8d('0x11'),_0x515a4d,_0x141445[_0x3c8d('0xc')]);_0x45cfbb();})[_0x3c8d('0x12')](function(_0x369733){logger[_0x3c8d('0x13')]('[%s][DIALOGFLOWV2]\x20%s',_0x515a4d,JSON['stringify'](_0x369733));_0x392bf1(_0x369733);});});}exports['consequence']=function(_0x5045fa,_0x3be1af){return function(_0x1132f8){try{if(!_[_0x3c8d('0x14')](this[_0x3c8d('0x15')][_0x3c8d('0x16')])){logger[_0x3c8d('0x10')](_0x3c8d('0x11'),_0x5045fa,_0x3c8d('0x17'));return _0x1132f8[_0x3c8d('0x18')]();}var _0x5e1121={'ContactId':this['contact']['id'],'sentAt':moment()[_0x3c8d('0x19')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x3c8d('0x1a')};if(this[_0x3c8d('0x1b')]==='sms'||this[_0x3c8d('0x1b')]==='whatsapp'){_0x5e1121[_0x3c8d('0x1c')]=this[_0x3c8d('0x15')][_0x3c8d('0x1c')];}var _0xd90178=this['channel'];if(_0xd90178==='chat'){_0x5e1121[_0x3c8d('0x1d')]=this[_0x3c8d('0x1e')]['id'];}else{_0x5e1121[_[_0x3c8d('0x1f')](_0xd90178)+'AccountId']=this[_0x3c8d('0x1e')]['id'];}_0x5e1121[_[_0x3c8d('0x1f')](_0xd90178)+'InteractionId']=this['interaction']['id'];if(this[_0x3c8d('0x15')][_0x3c8d('0x20')]){var _0x397343=_0x3be1af[0x4];if(!_[_0x3c8d('0x21')](_0x397343)){_0x5e1121[_0x3c8d('0xc')]=utils[_0x3c8d('0x22')](_0x397343,this);return rpc[_0xd90178+_0x3c8d('0xd')][_0x3c8d('0xe')](_0x5e1121)[_0x3c8d('0xf')](function(_0x5711c3){logger[_0x3c8d('0x10')](_0x3c8d('0x11'),_0x5045fa,_0x5e1121[_0x3c8d('0xc')]);})[_0x3c8d('0x12')](function(_0x559cd9){logger['error'](_0x3c8d('0x11'),_0x5045fa,JSON[_0x3c8d('0x23')](_0x559cd9));})['finally'](function(){logger['info'](_0x3c8d('0x24'),_0x5045fa);_0x1132f8['stop']();});}else{logger[_0x3c8d('0x10')](_0x3c8d('0x25'),_0x5045fa);_0x1132f8[_0x3c8d('0x26')]();}}else{var _0x44b218=this;var _0x407135=_0x3be1af[0x2][_0x3c8d('0x27')](/\\n/g,'\x0a');var _0x58c929={'credentials':{'private_key':_0x407135,'client_email':_0x3be1af[0x1]}};var _0x505fed=new dialogflow['SessionsClient'](_0x58c929);var _0x410660=_0x505fed[_0x3c8d('0x28')](_0x3be1af[0x0],md5(_0x44b218['interaction']['id']));var _0x3f1f6c={'session':_0x410660,'queryInput':{'text':{'text':_0x44b218['message'][_0x3c8d('0xc')],'languageCode':_0x3be1af[0x3]||'en'}}};return _0x505fed[_0x3c8d('0x29')](_0x3f1f6c)['then'](function(_0x53c5e1){if(_0x53c5e1&&_0x53c5e1[_0x3c8d('0x2a')]){_0x44b218['body']['dialogflowV2']=_0x53c5e1;var _0x18c00b=_0x53c5e1[0x0];var _0x3b2238=_0x18c00b['queryResult'][_0x3c8d('0x2b')]&&_0x18c00b[_0x3c8d('0x2c')]['diagnosticInfo']['fields']?_0x18c00b['queryResult'][_0x3c8d('0x2b')][_0x3c8d('0x2d')][_0x3c8d('0x2e')][_0x3c8d('0x2f')]:![];_0x44b218[_0x3c8d('0xc')][_0x3c8d('0x30')]=_0x18c00b[_0x3c8d('0x2c')]['action'];_0x44b218[_0x3c8d('0xc')][_0x3c8d('0x31')]=_0x18c00b[_0x3c8d('0x2c')]['allRequiredParamsPresent'];_0x44b218[_0x3c8d('0xc')]['DIALOGFLOWV2_ENDCONVERSATION']=_0x18c00b['queryResult'][_0x3c8d('0x2b')]&&_0x18c00b['queryResult'][_0x3c8d('0x2b')][_0x3c8d('0x2d')]?_0x18c00b[_0x3c8d('0x2c')]['diagnosticInfo']['fields']['end_conversation'][_0x3c8d('0x2f')]:![];_0x44b218[_0x3c8d('0xc')]['DIALOGFLOWV2_INTENTNAME']=_0x18c00b[_0x3c8d('0x2c')][_0x3c8d('0x32')][_0x3c8d('0x33')];_0x44b218[_0x3c8d('0xc')][_0x3c8d('0x34')]=_0x18c00b[_0x3c8d('0x2c')][_0x3c8d('0x32')][_0x3c8d('0x35')];_0x44b218[_0x3c8d('0xc')][_0x3c8d('0x36')]=_0x18c00b[_0x3c8d('0x2c')][_0x3c8d('0x32')][_0x3c8d('0x37')];_0x44b218['body'][_0x3c8d('0x38')]=_0x18c00b[_0x3c8d('0x2c')][_0x3c8d('0x39')];_0x44b218['body'][_0x3c8d('0x3a')]=_0x18c00b['queryResult'][_0x3c8d('0x3b')];_0x44b218['body'][_0x3c8d('0x3c')]=_0x18c00b[_0x3c8d('0x2c')]['intentDetectionConfidence'];_0x5e1121[_0x3c8d('0x3d')]=_0x3c8d('0x3e');_0x5e1121[_0x3c8d('0x3f')]=JSON[_0x3c8d('0x23')](_0x53c5e1);var _0x5ee0df=[];for(var _0x4d8355=0x0;_0x4d8355<_0x53c5e1[_0x3c8d('0x2a')];_0x4d8355++){var _0x4a75fb=_0x53c5e1[_0x4d8355];if(_0x4a75fb&&_0x4a75fb[_0x3c8d('0x2c')]&&_0x4a75fb['queryResult'][_0x3c8d('0x40')]){_0x5ee0df[_0x3c8d('0x41')](createMessage(_0x5045fa,_0xd90178,_0x5e1121,_0x4a75fb[_0x3c8d('0x2c')][_0x3c8d('0x40')]));}}return Promise[_0x3c8d('0x42')](_0x5ee0df)[_0x3c8d('0xf')](function(){if(_0x3b2238){_0x1132f8[_0x3c8d('0x18')]();}else{_0x1132f8[_0x3c8d('0x26')]();}})[_0x3c8d('0x12')](function(_0x3698f9){logger[_0x3c8d('0x13')](_0x3c8d('0x11'),_0x5045fa,JSON[_0x3c8d('0x23')](_0x3698f9));_0x1132f8[_0x3c8d('0x18')]();});}})['catch'](function(_0x10218f){logger[_0x3c8d('0x13')]('[%s][DIALOGFLOWV2]\x20%s',_0x5045fa,_0x10218f[_0x3c8d('0x43')]);_0x1132f8[_0x3c8d('0x18')]();});}}catch(_0x344d84){logger[_0x3c8d('0x13')](_0x3c8d('0x11'),_0x5045fa,JSON[_0x3c8d('0x23')](_0x344d84));_0x1132f8[_0x3c8d('0x26')]();}};};
\ No newline at end of file
index 00ed8f9..ed72fd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x103e=['[%s][GOTOIF]\x20%s','map','join','stop','priorityTrue','priorityFalse','info','next','rules','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','[%s][GOTOIF]\x20eval\x20error:\x20%s','message','stringify','lodash','html-to-text','./utils','../../../../config/logger','routing','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','fromString','getMustacheRender','replace','validate','length'];(function(_0x14f7fe,_0x5132c4){var _0x3d8309=function(_0x22f5c7){while(--_0x22f5c7){_0x14f7fe['push'](_0x14f7fe['shift']());}};_0x3d8309(++_0x5132c4);}(_0x103e,0x160));var _0xe103=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x103e[_0x3947c9];return _0x2e7871;};'use strict';var schema=require('validate');var _=require(_0xe103('0x0'));var htmlToText=require(_0xe103('0x1'));var utils=require(_0xe103('0x2'));var logger=require(_0xe103('0x3'))(_0xe103('0x4'));var gotoif=schema({'condition':{'type':'string','required':!![],'message':_0xe103('0x5')},'priorityTrue':{'type':'number','message':'priority\x20true\x20is\x20a\x20number'},'priorityFalse':{'type':'number','message':'priority\x20false\x20is\x20a\x20number'}});exports[_0xe103('0x6')]=function(_0x5ceb8e,_0x16c0f8){return function(_0x5d3484){try{var _0x359d6d={'condition':htmlToText[_0xe103('0x7')](utils[_0xe103('0x8')](_0x16c0f8[0x0],this),{'wordwrap':![]})[_0xe103('0x9')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x16c0f8[0x1],'priorityFalse':_0x16c0f8[0x2]};var _0x5b6c37=gotoif[_0xe103('0xa')](_0x359d6d,{'typecast':!![]});if(_0x5b6c37[_0xe103('0xb')]){logger['error'](_0xe103('0xc'),_0x5ceb8e,_[_0xe103('0xd')](_0x5b6c37,'message')[_0xe103('0xe')](',\x20'));_0x5d3484[_0xe103('0xf')]();}else{try{var _0x5aa1eb=eval('('+_0x359d6d['condition']+')');var _0x31f653=_0x5aa1eb?_0x359d6d[_0xe103('0x10')]:_0x359d6d[_0xe103('0x11')];logger[_0xe103('0x12')]('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x5ceb8e,_0x359d6d['condition'],_0x5aa1eb,_0x31f653||_0xe103('0x13'));if(_0x31f653){var _0x46be7c=_['findIndex'](_0x5d3484[_0xe103('0x14')](),{'p':_0x31f653});if(_0x46be7c>=0x0){logger['info'](_0xe103('0x15'),_0x5ceb8e,_0x31f653||_0xe103('0x13'),_0x46be7c);_0x5d3484[_0xe103('0x13')](_0x46be7c);}else{logger[_0xe103('0x12')](_0xe103('0x16'),_0x5ceb8e,_0x31f653||'next');_0x5d3484[_0xe103('0xf')]();}}else{_0x5d3484[_0xe103('0x13')]();}}catch(_0x5943a2){logger['error'](_0xe103('0x17'),_0x5ceb8e,_0x5943a2[_0xe103('0x18')]);_0x5d3484[_0xe103('0xf')]();}}}catch(_0x2b5ba3){logger['error'](_0xe103('0xc'),_0x5ceb8e,JSON[_0xe103('0x19')](_0x2b5ba3));_0x5d3484['stop']();}};};
\ No newline at end of file
+var _0xbb38=['stop','condition','priorityTrue','priorityFalse','info','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s','rules','next','[%s][GOTOIF]\x20eval\x20error:\x20%s','stringify','validate','lodash','html-to-text','./utils','../../../../config/logger','routing','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','fromString','getMustacheRender','error','[%s][GOTOIF]\x20%s','message'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xbb38,0x1d2));var _0x8bb3=function(_0x4c7fb5,_0x2548ef){_0x4c7fb5=_0x4c7fb5-0x0;var _0x2e10ac=_0xbb38[_0x4c7fb5];return _0x2e10ac;};'use strict';var schema=require(_0x8bb3('0x0'));var _=require(_0x8bb3('0x1'));var htmlToText=require(_0x8bb3('0x2'));var utils=require(_0x8bb3('0x3'));var logger=require(_0x8bb3('0x4'))(_0x8bb3('0x5'));var gotoif=schema({'condition':{'type':'string','required':!![],'message':_0x8bb3('0x6')},'priorityTrue':{'type':_0x8bb3('0x7'),'message':_0x8bb3('0x8')},'priorityFalse':{'type':'number','message':'priority\x20false\x20is\x20a\x20number'}});exports['consequence']=function(_0x599993,_0x2825d0){return function(_0x9b0f0e){try{var _0x4d7fb7={'condition':htmlToText[_0x8bb3('0x9')](utils[_0x8bb3('0xa')](_0x2825d0[0x0],this),{'wordwrap':![]})['replace'](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x2825d0[0x1],'priorityFalse':_0x2825d0[0x2]};var _0x5b99e9=gotoif[_0x8bb3('0x0')](_0x4d7fb7,{'typecast':!![]});if(_0x5b99e9['length']){logger[_0x8bb3('0xb')](_0x8bb3('0xc'),_0x599993,_['map'](_0x5b99e9,_0x8bb3('0xd'))['join'](',\x20'));_0x9b0f0e[_0x8bb3('0xe')]();}else{try{var _0x116ef1=eval('('+_0x4d7fb7[_0x8bb3('0xf')]+')');var _0x13b30b=_0x116ef1?_0x4d7fb7[_0x8bb3('0x10')]:_0x4d7fb7[_0x8bb3('0x11')];logger[_0x8bb3('0x12')](_0x8bb3('0x13'),_0x599993,_0x4d7fb7['condition'],_0x116ef1,_0x13b30b||'next');if(_0x13b30b){var _0x41e59f=_['findIndex'](_0x9b0f0e[_0x8bb3('0x14')](),{'p':_0x13b30b});if(_0x41e59f>=0x0){logger[_0x8bb3('0x12')]('[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x599993,_0x13b30b||'next',_0x41e59f);_0x9b0f0e[_0x8bb3('0x15')](_0x41e59f);}else{logger[_0x8bb3('0x12')]('[%s][GOTOIF]\x20priority\x20%s\x20not\x20found',_0x599993,_0x13b30b||'next');_0x9b0f0e['stop']();}}else{_0x9b0f0e[_0x8bb3('0x15')]();}}catch(_0x1922d8){logger['error'](_0x8bb3('0x16'),_0x599993,_0x1922d8[_0x8bb3('0xd')]);_0x9b0f0e[_0x8bb3('0xe')]();}}}catch(_0x1abdca){logger[_0x8bb3('0xb')]('[%s][GOTOIF]\x20%s',_0x599993,JSON[_0x8bb3('0x17')](_0x1abdca));_0x9b0f0e[_0x8bb3('0xe')]();}};};
\ No newline at end of file
index 327a937..8c9ca36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6553=['message','join','stop','info','[%s][GOTOP]\x20priority\x20%s','priority','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence','validate','length','[%s][GOTOP]\x20%s','map'];(function(_0x1ace3e,_0x307801){var _0x5b92ac=function(_0x5ce841){while(--_0x5ce841){_0x1ace3e['push'](_0x1ace3e['shift']());}};_0x5b92ac(++_0x307801);}(_0x6553,0x1bc));var _0x3655=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x6553[_0x5b644e];return _0x49c6bf;};'use strict';var schema=require('validate');var _=require('lodash');var logger=require('../../../../config/logger')('routing');var gotop=schema({'priority':{'type':'number','required':!![],'message':_0x3655('0x0')}});exports[_0x3655('0x1')]=function(_0x320adf,_0x2e1ae2){return function(_0x3edcfe){try{var _0x32eeb9={'priority':_0x2e1ae2[0x0]};var _0x500be0=gotop[_0x3655('0x2')](_0x32eeb9,{'typecast':!![]});if(_0x500be0[_0x3655('0x3')]){logger['error'](_0x3655('0x4'),_0x320adf,_[_0x3655('0x5')](_0x500be0,_0x3655('0x6'))[_0x3655('0x7')](',\x20'));_0x3edcfe[_0x3655('0x8')]();}else{logger[_0x3655('0x9')](_0x3655('0xa'),_0x320adf,_0x32eeb9[_0x3655('0xb')]);if(_0x32eeb9[_0x3655('0xb')]){var _0x2240b0=_['findIndex'](_0x3edcfe['rules'](),{'p':_0x32eeb9[_0x3655('0xb')]});if(_0x2240b0>=0x0){logger[_0x3655('0x9')](_0x3655('0xc'),_0x320adf,_0x32eeb9[_0x3655('0xb')]||_0x3655('0xd'),_0x2240b0);_0x3edcfe[_0x3655('0xd')](_0x2240b0);}else{logger[_0x3655('0x9')](_0x3655('0xe'),_0x320adf,_0x32eeb9[_0x3655('0xb')]||_0x3655('0xd'));_0x3edcfe[_0x3655('0x8')]();}}else{_0x3edcfe[_0x3655('0xd')]();}}}catch(_0x13a155){logger['error'](_0x3655('0x4'),_0x320adf,JSON['stringify'](_0x13a155));_0x3edcfe[_0x3655('0x8')]();}};};
\ No newline at end of file
+var _0x2e61=['message','join','stop','info','priority','findIndex','rules','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stringify','validate','lodash','../../../../config/logger','number','consequence','length','error','[%s][GOTOP]\x20%s','map'];(function(_0x1b69a4,_0x3e9f5f){var _0x4ab6a6=function(_0x33697){while(--_0x33697){_0x1b69a4['push'](_0x1b69a4['shift']());}};_0x4ab6a6(++_0x3e9f5f);}(_0x2e61,0x1af));var _0x12e6=function(_0x2f1f14,_0x4c266b){_0x2f1f14=_0x2f1f14-0x0;var _0x2e81ba=_0x2e61[_0x2f1f14];return _0x2e81ba;};'use strict';var schema=require(_0x12e6('0x0'));var _=require(_0x12e6('0x1'));var logger=require(_0x12e6('0x2'))('routing');var gotop=schema({'priority':{'type':_0x12e6('0x3'),'required':!![],'message':'priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required'}});exports[_0x12e6('0x4')]=function(_0x462242,_0x7e86f2){return function(_0x2e3792){try{var _0x5db9e9={'priority':_0x7e86f2[0x0]};var _0x42fecd=gotop[_0x12e6('0x0')](_0x5db9e9,{'typecast':!![]});if(_0x42fecd[_0x12e6('0x5')]){logger[_0x12e6('0x6')](_0x12e6('0x7'),_0x462242,_[_0x12e6('0x8')](_0x42fecd,_0x12e6('0x9'))[_0x12e6('0xa')](',\x20'));_0x2e3792[_0x12e6('0xb')]();}else{logger[_0x12e6('0xc')]('[%s][GOTOP]\x20priority\x20%s',_0x462242,_0x5db9e9[_0x12e6('0xd')]);if(_0x5db9e9[_0x12e6('0xd')]){var _0x32c538=_[_0x12e6('0xe')](_0x2e3792[_0x12e6('0xf')](),{'p':_0x5db9e9[_0x12e6('0xd')]});if(_0x32c538>=0x0){logger[_0x12e6('0xc')](_0x12e6('0x10'),_0x462242,_0x5db9e9[_0x12e6('0xd')]||'next',_0x32c538);_0x2e3792[_0x12e6('0x11')](_0x32c538);}else{logger['info'](_0x12e6('0x12'),_0x462242,_0x5db9e9['priority']||_0x12e6('0x11'));_0x2e3792[_0x12e6('0xb')]();}}else{_0x2e3792[_0x12e6('0x11')]();}}}catch(_0x2c315a){logger[_0x12e6('0x6')](_0x12e6('0x7'),_0x462242,JSON[_0x12e6('0x13')](_0x2c315a));_0x2e3792[_0x12e6('0xb')]();}};};
\ No newline at end of file
index ba72e78..26c213c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5fe=['[%s][MESSAGE]\x20%s','stringify','stop','lodash','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','getMustacheRender','contact','channel','chat','account','upperFirst','InteractionId','interaction','Message','create','then','body','error'];(function(_0x9729d7,_0x1b79a8){var _0x3c4ac6=function(_0x401ba6){while(--_0x401ba6){_0x9729d7['push'](_0x9729d7['shift']());}};_0x3c4ac6(++_0x1b79a8);}(_0xe5fe,0x93));var _0xee5f=function(_0x7c3c27,_0x16c034){_0x7c3c27=_0x7c3c27-0x0;var _0x4a2c4b=_0xe5fe[_0x7c3c27];return _0x4a2c4b;};'use strict';var _=require(_0xee5f('0x0'));var utils=require('./utils');var logger=require('../../../../config/logger')(_0xee5f('0x1'));var rpc={'chatMessage':require(_0xee5f('0x2')),'openchannelMessage':require(_0xee5f('0x3')),'mailMessage':require(_0xee5f('0x4')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0xee5f('0x5')),'whatsappMessage':require(_0xee5f('0x6'))};exports[_0xee5f('0x7')]=function(_0x15d768,_0xc75f52){return function(_0x40124b){try{var _0x4490cf={'body':utils[_0xee5f('0x8')](_0xc75f52[0x0],this),'ContactId':this[_0xee5f('0x9')]['id']};if(this[_0xee5f('0xa')]===_0xee5f('0xb')){_0x4490cf['ChatWebsiteId']=this[_0xee5f('0xc')]['id'];}else{_0x4490cf[_[_0xee5f('0xd')](this[_0xee5f('0xa')])+'AccountId']=this['account']['id'];}_0x4490cf[_['upperFirst'](this['channel'])+_0xee5f('0xe')]=this[_0xee5f('0xf')]['id'];if(rpc[this[_0xee5f('0xa')]+_0xee5f('0x10')]){return rpc[this[_0xee5f('0xa')]+'Message'][_0xee5f('0x11')](_0x4490cf)[_0xee5f('0x12')](function(_0x189d37){logger['info']('[%s][MESSAGE]\x20%s',_0x15d768,_0x4490cf[_0xee5f('0x13')]);_0x40124b['next']();})['catch'](function(_0x5d3eda){logger[_0xee5f('0x14')](_0xee5f('0x15'),_0x15d768,JSON['stringify'](_0x5d3eda));_0x40124b['stop']();});}}catch(_0x3a730e){logger[_0xee5f('0x14')](_0xee5f('0x15'),_0x15d768,JSON[_0xee5f('0x16')](_0x3a730e));_0x40124b[_0xee5f('0x17')]();}};};
\ No newline at end of file
+var _0xa896=['info','[%s][MESSAGE]\x20%s','body','next','catch','error','stringify','stop','lodash','./utils','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','contact','channel','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','interaction','Message','create'];(function(_0x11f997,_0x2a4fb2){var _0x193fa0=function(_0x58b205){while(--_0x58b205){_0x11f997['push'](_0x11f997['shift']());}};_0x193fa0(++_0x2a4fb2);}(_0xa896,0xe0));var _0x6a89=function(_0x138c5c,_0x52b12b){_0x138c5c=_0x138c5c-0x0;var _0x27a56b=_0xa896[_0x138c5c];return _0x27a56b;};'use strict';var _=require(_0x6a89('0x0'));var utils=require(_0x6a89('0x1'));var logger=require('../../../../config/logger')(_0x6a89('0x2'));var rpc={'chatMessage':require(_0x6a89('0x3')),'openchannelMessage':require(_0x6a89('0x4')),'mailMessage':require(_0x6a89('0x5')),'smsMessage':require(_0x6a89('0x6')),'faxMessage':require(_0x6a89('0x7')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports['consequence']=function(_0x27a06c,_0x44495b){return function(_0x107439){try{var _0x12159a={'body':utils['getMustacheRender'](_0x44495b[0x0],this),'ContactId':this[_0x6a89('0x8')]['id']};if(this[_0x6a89('0x9')]===_0x6a89('0xa')){_0x12159a[_0x6a89('0xb')]=this[_0x6a89('0xc')]['id'];}else{_0x12159a[_[_0x6a89('0xd')](this[_0x6a89('0x9')])+_0x6a89('0xe')]=this[_0x6a89('0xc')]['id'];}_0x12159a[_['upperFirst'](this[_0x6a89('0x9')])+_0x6a89('0xf')]=this[_0x6a89('0x10')]['id'];if(rpc[this[_0x6a89('0x9')]+'Message']){return rpc[this[_0x6a89('0x9')]+_0x6a89('0x11')][_0x6a89('0x12')](_0x12159a)['then'](function(_0x5dbef6){logger[_0x6a89('0x13')](_0x6a89('0x14'),_0x27a06c,_0x12159a[_0x6a89('0x15')]);_0x107439[_0x6a89('0x16')]();})[_0x6a89('0x17')](function(_0x25b0d8){logger[_0x6a89('0x18')](_0x6a89('0x14'),_0x27a06c,JSON[_0x6a89('0x19')](_0x25b0d8));_0x107439[_0x6a89('0x1a')]();});}}catch(_0x1622f5){logger[_0x6a89('0x18')](_0x6a89('0x14'),_0x27a06c,JSON[_0x6a89('0x19')](_0x1622f5));_0x107439[_0x6a89('0x1a')]();}};};
\ No newline at end of file
index 76f9984..f6aca96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b74=['[%s][NOOP]\x20%s','getMustacheRender','next','error','stringify','stop','./utils','routing','info'];(function(_0x450cd9,_0x60332f){var _0x513992=function(_0x2805b3){while(--_0x2805b3){_0x450cd9['push'](_0x450cd9['shift']());}};_0x513992(++_0x60332f);}(_0x2b74,0x10b));var _0x42b7=function(_0x4830db,_0x2c3aa9){_0x4830db=_0x4830db-0x0;var _0x49970e=_0x2b74[_0x4830db];return _0x49970e;};'use strict';var utils=require(_0x42b7('0x0'));var logger=require('../../../../config/logger')(_0x42b7('0x1'));exports['consequence']=function(_0xca8802,_0x3465ad){return function(_0x218d92){try{logger[_0x42b7('0x2')](_0x42b7('0x3'),_0xca8802,utils[_0x42b7('0x4')](_0x3465ad[0x0],this));_0x218d92[_0x42b7('0x5')]();}catch(_0x150a92){logger[_0x42b7('0x6')](_0x42b7('0x3'),_0xca8802,JSON[_0x42b7('0x7')](_0x150a92));_0x218d92[_0x42b7('0x8')]();}};};
\ No newline at end of file
+var _0xfe08=['next','stop','./utils','routing','consequence','info','[%s][NOOP]\x20%s','getMustacheRender'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xfe08,0x7a));var _0x8fe0=function(_0x25bf94,_0x420e7e){_0x25bf94=_0x25bf94-0x0;var _0x24065b=_0xfe08[_0x25bf94];return _0x24065b;};'use strict';var utils=require(_0x8fe0('0x0'));var logger=require('../../../../config/logger')(_0x8fe0('0x1'));exports[_0x8fe0('0x2')]=function(_0x6031f6,_0x41a709){return function(_0x23c974){try{logger[_0x8fe0('0x3')](_0x8fe0('0x4'),_0x6031f6,utils[_0x8fe0('0x5')](_0x41a709[0x0],this));_0x23c974[_0x8fe0('0x6')]();}catch(_0x54a88){logger['error'](_0x8fe0('0x4'),_0x6031f6,JSON['stringify'](_0x54a88));_0x23c974[_0x8fe0('0x7')]();}};};
\ No newline at end of file
index cea7159..b1a284a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9cd=['format','%sQueuesWaitingInteractions','%s:queue:%s','save','remove','pick','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','timeout\x20is\x20a\x20number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','channel','upperFirst','InteractionId','interaction','MessageId','message','chat','AccountId','WebsiteId','account','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','error','create\x20queue\x20report','accepted','update','catch','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','length','map','join','stop','find','Queues','createQueue','atimeout','qtimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','complete','[%s][QUEUE]\x20APPLICATION\x20END','close','next','strategy','rrmemory','beepall','log','[%s][QUEUE]\x20%s','stack','validate','lodash','util','seq-queue','moment','ioredis','../../../../config/environment','../../../../config/logger','./strategy','redis','defaults','localhost','socket.io-emitter','queue','from','joinAt','emit','clone','queue_id'];(function(_0x2ab9e8,_0x525d53){var _0x153708=function(_0x3f0425){while(--_0x3f0425){_0x2ab9e8['push'](_0x2ab9e8['shift']());}};_0x153708(++_0x525d53);}(_0xa9cd,0x187));var _0xda9c=function(_0x37c653,_0x4427b1){_0x37c653=_0x37c653-0x0;var _0x3d45cf=_0xa9cd[_0x37c653];return _0x3d45cf;};'use strict';var schema=require(_0xda9c('0x0'));var _=require(_0xda9c('0x1'));var util=require(_0xda9c('0x2'));var seqqueue=require(_0xda9c('0x3'));var moment=require(_0xda9c('0x4'));var Redis=require(_0xda9c('0x5'));var config=require(_0xda9c('0x6'));var logger=require(_0xda9c('0x7'))('routing');var strategy=require(_0xda9c('0x8'));config[_0xda9c('0x9')]=_[_0xda9c('0xa')](config[_0xda9c('0x9')],{'host':_0xda9c('0xb'),'port':0x18eb});var io=require(_0xda9c('0xc'))(new Redis(config['redis']));var attributes=['id','queue_id','account',_0xda9c('0xd'),_0xda9c('0xe'),_0xda9c('0xf')];function emit(_0x208997,_0x59b9e5,_0x2debf6){io['to'](_0x208997)[_0xda9c('0x10')](_0x59b9e5,_0x2debf6);}function emitChannelQueueInteraction(_0x41898a,_0xd4578e,_0x17832b,_0x47fbe3,_0x449963,_0x2f2d0d,_0x5e1ba2,_0x4d12da){var _0x28c0a6=_[_0xda9c('0x11')](_0x17832b);_0x28c0a6[_0xda9c('0x12')]=_0x4d12da;_0x28c0a6[_0xda9c('0xd')]=_0xd4578e;_0x28c0a6['account']=_0x47fbe3;_0x28c0a6['id']=_0x449963;if(_0x2f2d0d){_0x5e1ba2[util[_0xda9c('0x13')]('%sQueuesWaitingInteractions',_0x41898a)][_0x449963]=_['pick'](_0x28c0a6,attributes);}else{delete _0x5e1ba2[util[_0xda9c('0x13')](_0xda9c('0x14'),_0x41898a)][_0x449963];}emit(util[_0xda9c('0x13')](_0xda9c('0x15'),_0x41898a,_0xd4578e),util[_0xda9c('0x13')]('%s_queue_waiting_interaction:%s',_0x41898a,_0x2f2d0d?_0xda9c('0x16'):_0xda9c('0x17')),_[_0xda9c('0x18')](_0x28c0a6,attributes));}var rpc={'openchannelQueueReport':require(_0xda9c('0x19')),'mailQueueReport':require(_0xda9c('0x1a')),'chatQueueReport':require(_0xda9c('0x1b')),'smsQueueReport':require(_0xda9c('0x1c')),'faxQueueReport':require(_0xda9c('0x1d')),'whatsappQueueReport':require('../../rpc/whatsappQueueReport')};var queue=schema({'name':{'type':_0xda9c('0x1e'),'required':!![],'message':_0xda9c('0x1f')},'timeout':{'type':'number','message':_0xda9c('0x20')}});function startRouting(_0x5bc4e1,_0x114e59,_0x5fd257,_0x1c6671){if(_0x5bc4e1&&_0x114e59&&_0x5fd257){_0x114e59[_0xda9c('0x21')]+=0x1;var _0xb42584={'uniqueid':_0x5bc4e1,'from':_0x5fd257['body']?_0x5fd257[_0xda9c('0x22')]['from']:'','joinAt':moment()[_0xda9c('0x13')](_0xda9c('0x23')),'ContactId':_0x5fd257[_0xda9c('0x24')]?_0x5fd257[_0xda9c('0x24')]['id']:null,'ListId':_0x5fd257[_0xda9c('0x25')]?_0x5fd257[_0xda9c('0x25')]['id']:null};_0xb42584[_['upperFirst'](_0x5fd257[_0xda9c('0x26')])+'QueueId']=_0x114e59['id']||null;_0xb42584[_[_0xda9c('0x27')](_0x5fd257[_0xda9c('0x26')])+_0xda9c('0x28')]=_0x5fd257[_0xda9c('0x29')]?_0x5fd257['interaction']['id']:null;_0xb42584[_['upperFirst'](_0x5fd257[_0xda9c('0x26')])+_0xda9c('0x2a')]=_0x5fd257[_0xda9c('0x2b')]?_0x5fd257[_0xda9c('0x2b')]['id']:null;_0xb42584[_['upperFirst'](_0x5fd257[_0xda9c('0x26')])+(_0x5fd257[_0xda9c('0x26')]!==_0xda9c('0x2c')?_0xda9c('0x2d'):_0xda9c('0x2e'))]=_0x5fd257[_0xda9c('0x2f')]?_0x5fd257['account']['id']:null;logger[_0xda9c('0x30')](util['format'](_0xda9c('0x31'),_0x5bc4e1,_0x114e59['name']));emitChannelQueueInteraction(_0x5fd257[_0xda9c('0x26')],_0x114e59[_0xda9c('0x32')],_0xb42584,_0x5fd257[_0xda9c('0x2f')][_0xda9c('0x32')],_0x5fd257['message']['id'],!![],_0x1c6671,_0x114e59['id']);if(rpc[_0x5fd257[_0xda9c('0x26')]+_0xda9c('0x33')]){return rpc[_0x5fd257[_0xda9c('0x26')]+'QueueReport']['create'](_0xb42584)['catch'](function(_0x467250){logger[_0xda9c('0x34')](_0xda9c('0x35'));});}}}function stopRouting(_0x272ae2,_0x20082d,_0x192ecd,_0x1b1515){if(_0x272ae2&&_0x20082d){_0x20082d[_0xda9c('0x21')]-=0x1;var _0x24fee1={'leaveAt':moment()[_0xda9c('0x13')](_0xda9c('0x23')),'acceptAt':moment()[_0xda9c('0x13')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0xda9c('0x36')};logger['info'](util[_0xda9c('0x13')]('[%s][STOP:QUEUE][NAME:%s]',_0x272ae2,_0x20082d['name']));emitChannelQueueInteraction(_0x192ecd[_0xda9c('0x26')],_0x20082d['name'],_0x192ecd[_0xda9c('0x22')],_0x192ecd[_0xda9c('0x2f')][_0xda9c('0x32')],_0x192ecd['message']['id'],![],_0x1b1515,_0x20082d['id']);if(rpc[_0x192ecd[_0xda9c('0x26')]+_0xda9c('0x33')]){return rpc[_0x192ecd[_0xda9c('0x26')]+_0xda9c('0x33')][_0xda9c('0x37')](_0x272ae2,_0x24fee1)[_0xda9c('0x38')](function(_0x2d3985){logger[_0xda9c('0x34')](_0xda9c('0x39'));});}}}function endRouting(_0x28a282,_0x23ac40,_0x37c84c,_0x4d7f25){if(_0x28a282&&_0x23ac40){_0x23ac40['waiting']-=0x1;var _0x50c264={'leaveAt':moment()[_0xda9c('0x13')](_0xda9c('0x23')),'exitAt':moment()['format'](_0xda9c('0x23')),'reason':_0xda9c('0x3a')};logger[_0xda9c('0x30')](util[_0xda9c('0x13')](_0xda9c('0x3b'),_0x28a282,_0x23ac40[_0xda9c('0x32')]));emitChannelQueueInteraction(_0x37c84c[_0xda9c('0x26')],_0x23ac40[_0xda9c('0x32')],_0x37c84c[_0xda9c('0x22')],_0x37c84c[_0xda9c('0x2f')][_0xda9c('0x32')],_0x37c84c[_0xda9c('0x2b')]['id'],![],_0x4d7f25);if(rpc[_0x37c84c[_0xda9c('0x26')]+_0xda9c('0x33')]){return rpc[_0x37c84c[_0xda9c('0x26')]+_0xda9c('0x33')][_0xda9c('0x37')](_0x28a282,_0x50c264)[_0xda9c('0x38')](function(_0x513ad4){logger[_0xda9c('0x34')]('update\x20queue\x20report');});}}}function handleFindQueue(_0x38df31){return function(_0x3b847e){return _0x3b847e[_0xda9c('0x32')]['toLowerCase']()===_0x38df31['toLowerCase']();};}exports['consequence']=function(_0x508d47,_0x15a44c,_0x4ee27e,_0x1e0d75){return function(_0x35178f){try{var _0x1e2fcb={'name':_0x15a44c[0x0],'timeout':_0x15a44c[0x1]};var _0x14f760=queue['validate'](_0x1e2fcb,{'typecast':!![]});if(_0x14f760[_0xda9c('0x3c')]){logger[_0xda9c('0x34')]('[%s][QUEUE]\x20%s',_0x508d47,_[_0xda9c('0x3d')](_0x14f760,_0xda9c('0x2b'))[_0xda9c('0x3e')](',\x20'));_0x35178f[_0xda9c('0x3f')]();}else{var _0x4927e5=_[_0xda9c('0x40')](_0x4ee27e[_0x1e0d75[_0xda9c('0x26')]+_0xda9c('0x41')],handleFindQueue(_0x1e2fcb[_0xda9c('0x32')]));if(_0x4927e5){startRouting(_0x508d47,_0x4927e5,_0x1e0d75,_0x4ee27e);var _0x10c25a=(_0x4927e5[_0xda9c('0x3a')]||0xa)*0x3e8;var _0x43f293=(_0x1e2fcb[_0xda9c('0x3a')]||0x14)*0x3e8;var _0x40a2dc,_0x5b70a5;if(_0x10c25a>_0x43f293){_0x43f293=_0x10c25a;}var _0x452187=seqqueue[_0xda9c('0x42')](_0x10c25a);_0x452187['id']=_0x508d47;_0x452187[_0xda9c('0x43')]=_0x10c25a;_0x452187[_0xda9c('0x44')]=_0x43f293;_0x452187['channel']=_0x1e0d75[_0xda9c('0x26')];_0x4ee27e[_0xda9c('0x45')][_0x508d47]['on'](_0xda9c('0x46'),function(){logger[_0xda9c('0x30')](_0xda9c('0x47'),_0x508d47);stopRouting(_0x508d47,_0x4927e5,_0x1e0d75,_0x4ee27e);clearTimeout(_0x40a2dc);_0x40a2dc=undefined;_0x452187['close'](!![]);if(_0x4ee27e['rules'][_0x508d47]){delete _0x4ee27e['rules'][_0x508d47];}_0x35178f[_0xda9c('0x3f')]();});_0x4ee27e[_0xda9c('0x45')][_0x508d47]['on'](_0xda9c('0x48'),function(){if(_0x4ee27e[_0xda9c('0x45')][_0x508d47]){delete _0x4ee27e[_0xda9c('0x45')][_0x508d47];}});_0x40a2dc=setTimeout(function(){logger[_0xda9c('0x30')](_0xda9c('0x49'),_0x508d47);endRouting(_0x508d47,_0x4927e5,_0x1e0d75,_0x4ee27e);clearTimeout(_0x40a2dc);_0x452187[_0xda9c('0x4a')](!![]);_0x35178f[_0xda9c('0x4b')]();},_0x43f293);switch(_0x4927e5[_0xda9c('0x4c')]){case _0xda9c('0x4d'):strategy[_0xda9c('0x4d')](_0x452187,_0x4927e5,_0x4ee27e,_0x1e0d75);break;default:strategy[_0xda9c('0x4e')](_0x452187,_0x4927e5,_0x4ee27e,_0x1e0d75);}}else{logger['error']('[%s][QUEUE]\x20queue\x20not\x20found\x20%s',_0x508d47,_0x1e2fcb['name']);_0x35178f[_0xda9c('0x3f')]();}}}catch(_0x4e627f){console[_0xda9c('0x4f')](_0x4e627f);logger[_0xda9c('0x34')](_0xda9c('0x50'),_0x508d47,_0x4e627f[_0xda9c('0x51')]);_0x35178f[_0xda9c('0x3f')]();}};};
\ No newline at end of file
+var _0x2e97=['InteractionId','interaction','MessageId','message','WebsiteId','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','error','create\x20queue\x20report','accepted','update','catch','timeout','[%s][END:QUEUE][NAME:%s]','body','update\x20queue\x20report','toLowerCase','validate','length','[%s][QUEUE]\x20%s','join','find','createQueue','qtimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','stop','complete','[%s][QUEUE]\x20APPLICATION\x20END','strategy','rrmemory','beepall','lodash','seq-queue','../../../../config/logger','./strategy','defaults','localhost','redis','account','from','emit','clone','queue_id','queue','format','%sQueuesWaitingInteractions','pick','%s:queue:%s','save','../../rpc/openchannelQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/whatsappQueueReport','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','waiting','YYYY-MM-DD\x20HH:mm:ss','contact','list','QueueId','upperFirst','channel'];(function(_0x4914e2,_0x48be8f){var _0x2dcd07=function(_0x1a2565){while(--_0x1a2565){_0x4914e2['push'](_0x4914e2['shift']());}};_0x2dcd07(++_0x48be8f);}(_0x2e97,0x13d));var _0x72e9=function(_0xaf52f9,_0x3608bc){_0xaf52f9=_0xaf52f9-0x0;var _0xd9e03e=_0x2e97[_0xaf52f9];return _0xd9e03e;};'use strict';var schema=require('validate');var _=require(_0x72e9('0x0'));var util=require('util');var seqqueue=require(_0x72e9('0x1'));var moment=require('moment');var Redis=require('ioredis');var config=require('../../../../config/environment');var logger=require(_0x72e9('0x2'))('routing');var strategy=require(_0x72e9('0x3'));config['redis']=_[_0x72e9('0x4')](config['redis'],{'host':_0x72e9('0x5'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x72e9('0x6')]));var attributes=['id','queue_id',_0x72e9('0x7'),'queue',_0x72e9('0x8'),'joinAt'];function emit(_0x3a90c4,_0x1fce67,_0x3d7bee){io['to'](_0x3a90c4)[_0x72e9('0x9')](_0x1fce67,_0x3d7bee);}function emitChannelQueueInteraction(_0x29f8da,_0x29c718,_0x307424,_0x3ae193,_0x2773e2,_0x1216bc,_0x354d76,_0x2757c0){var _0x56601e=_[_0x72e9('0xa')](_0x307424);_0x56601e[_0x72e9('0xb')]=_0x2757c0;_0x56601e[_0x72e9('0xc')]=_0x29c718;_0x56601e[_0x72e9('0x7')]=_0x3ae193;_0x56601e['id']=_0x2773e2;if(_0x1216bc){_0x354d76[util[_0x72e9('0xd')](_0x72e9('0xe'),_0x29f8da)][_0x2773e2]=_[_0x72e9('0xf')](_0x56601e,attributes);}else{delete _0x354d76[util[_0x72e9('0xd')](_0x72e9('0xe'),_0x29f8da)][_0x2773e2];}emit(util[_0x72e9('0xd')](_0x72e9('0x10'),_0x29f8da,_0x29c718),util[_0x72e9('0xd')]('%s_queue_waiting_interaction:%s',_0x29f8da,_0x1216bc?_0x72e9('0x11'):'remove'),_[_0x72e9('0xf')](_0x56601e,attributes));}var rpc={'openchannelQueueReport':require(_0x72e9('0x12')),'mailQueueReport':require('../../rpc/mailQueueReport'),'chatQueueReport':require(_0x72e9('0x13')),'smsQueueReport':require(_0x72e9('0x14')),'faxQueueReport':require('../../rpc/faxQueueReport'),'whatsappQueueReport':require(_0x72e9('0x15'))};var queue=schema({'name':{'type':_0x72e9('0x16'),'required':!![],'message':_0x72e9('0x17')},'timeout':{'type':_0x72e9('0x18'),'message':_0x72e9('0x19')}});function startRouting(_0x399da7,_0x9d09c1,_0x34e5c0,_0x15d0ff){if(_0x399da7&&_0x9d09c1&&_0x34e5c0){_0x9d09c1[_0x72e9('0x1a')]+=0x1;var _0xba29fa={'uniqueid':_0x399da7,'from':_0x34e5c0['body']?_0x34e5c0['body']['from']:'','joinAt':moment()['format'](_0x72e9('0x1b')),'ContactId':_0x34e5c0[_0x72e9('0x1c')]?_0x34e5c0[_0x72e9('0x1c')]['id']:null,'ListId':_0x34e5c0[_0x72e9('0x1d')]?_0x34e5c0[_0x72e9('0x1d')]['id']:null};_0xba29fa[_['upperFirst'](_0x34e5c0['channel'])+_0x72e9('0x1e')]=_0x9d09c1['id']||null;_0xba29fa[_[_0x72e9('0x1f')](_0x34e5c0[_0x72e9('0x20')])+_0x72e9('0x21')]=_0x34e5c0['interaction']?_0x34e5c0[_0x72e9('0x22')]['id']:null;_0xba29fa[_['upperFirst'](_0x34e5c0['channel'])+_0x72e9('0x23')]=_0x34e5c0[_0x72e9('0x24')]?_0x34e5c0['message']['id']:null;_0xba29fa[_[_0x72e9('0x1f')](_0x34e5c0[_0x72e9('0x20')])+(_0x34e5c0[_0x72e9('0x20')]!=='chat'?'AccountId':_0x72e9('0x25'))]=_0x34e5c0[_0x72e9('0x7')]?_0x34e5c0['account']['id']:null;logger[_0x72e9('0x26')](util[_0x72e9('0xd')](_0x72e9('0x27'),_0x399da7,_0x9d09c1['name']));emitChannelQueueInteraction(_0x34e5c0[_0x72e9('0x20')],_0x9d09c1[_0x72e9('0x28')],_0xba29fa,_0x34e5c0['account'][_0x72e9('0x28')],_0x34e5c0[_0x72e9('0x24')]['id'],!![],_0x15d0ff,_0x9d09c1['id']);if(rpc[_0x34e5c0[_0x72e9('0x20')]+_0x72e9('0x29')]){return rpc[_0x34e5c0[_0x72e9('0x20')]+_0x72e9('0x29')][_0x72e9('0x2a')](_0xba29fa)['catch'](function(_0x165327){logger[_0x72e9('0x2b')](_0x72e9('0x2c'));});}}}function stopRouting(_0x29420b,_0x3f8e0d,_0x3fe8a2,_0x54fa3e){if(_0x29420b&&_0x3f8e0d){_0x3f8e0d[_0x72e9('0x1a')]-=0x1;var _0x1b6a37={'leaveAt':moment()[_0x72e9('0xd')](_0x72e9('0x1b')),'acceptAt':moment()[_0x72e9('0xd')](_0x72e9('0x1b')),'reason':_0x72e9('0x2d')};logger['info'](util['format']('[%s][STOP:QUEUE][NAME:%s]',_0x29420b,_0x3f8e0d['name']));emitChannelQueueInteraction(_0x3fe8a2[_0x72e9('0x20')],_0x3f8e0d['name'],_0x3fe8a2['body'],_0x3fe8a2['account']['name'],_0x3fe8a2[_0x72e9('0x24')]['id'],![],_0x54fa3e,_0x3f8e0d['id']);if(rpc[_0x3fe8a2[_0x72e9('0x20')]+_0x72e9('0x29')]){return rpc[_0x3fe8a2[_0x72e9('0x20')]+_0x72e9('0x29')][_0x72e9('0x2e')](_0x29420b,_0x1b6a37)[_0x72e9('0x2f')](function(_0x244026){logger[_0x72e9('0x2b')]('update\x20queue\x20report');});}}}function endRouting(_0x586709,_0x5e10de,_0x23299c,_0x123e8d){if(_0x586709&&_0x5e10de){_0x5e10de[_0x72e9('0x1a')]-=0x1;var _0x3ae9ea={'leaveAt':moment()[_0x72e9('0xd')]('YYYY-MM-DD\x20HH:mm:ss'),'exitAt':moment()[_0x72e9('0xd')](_0x72e9('0x1b')),'reason':_0x72e9('0x30')};logger[_0x72e9('0x26')](util[_0x72e9('0xd')](_0x72e9('0x31'),_0x586709,_0x5e10de[_0x72e9('0x28')]));emitChannelQueueInteraction(_0x23299c[_0x72e9('0x20')],_0x5e10de['name'],_0x23299c[_0x72e9('0x32')],_0x23299c['account'][_0x72e9('0x28')],_0x23299c[_0x72e9('0x24')]['id'],![],_0x123e8d);if(rpc[_0x23299c['channel']+'QueueReport']){return rpc[_0x23299c['channel']+'QueueReport'][_0x72e9('0x2e')](_0x586709,_0x3ae9ea)[_0x72e9('0x2f')](function(_0x3fbb77){logger['error'](_0x72e9('0x33'));});}}}function handleFindQueue(_0x1470e7){return function(_0x315233){return _0x315233[_0x72e9('0x28')][_0x72e9('0x34')]()===_0x1470e7[_0x72e9('0x34')]();};}exports['consequence']=function(_0x445e15,_0x1f3a36,_0x22e022,_0x5eb9e7){return function(_0x950ef7){try{var _0x2814fe={'name':_0x1f3a36[0x0],'timeout':_0x1f3a36[0x1]};var _0x23f59b=queue[_0x72e9('0x35')](_0x2814fe,{'typecast':!![]});if(_0x23f59b[_0x72e9('0x36')]){logger[_0x72e9('0x2b')](_0x72e9('0x37'),_0x445e15,_['map'](_0x23f59b,_0x72e9('0x24'))[_0x72e9('0x38')](',\x20'));_0x950ef7['stop']();}else{var _0x20eea9=_[_0x72e9('0x39')](_0x22e022[_0x5eb9e7[_0x72e9('0x20')]+'Queues'],handleFindQueue(_0x2814fe['name']));if(_0x20eea9){startRouting(_0x445e15,_0x20eea9,_0x5eb9e7,_0x22e022);var _0x428433=(_0x20eea9[_0x72e9('0x30')]||0xa)*0x3e8;var _0x3bd9dd=(_0x2814fe[_0x72e9('0x30')]||0x14)*0x3e8;var _0x19f486,_0x35375c;if(_0x428433>_0x3bd9dd){_0x3bd9dd=_0x428433;}var _0x69bf8e=seqqueue[_0x72e9('0x3a')](_0x428433);_0x69bf8e['id']=_0x445e15;_0x69bf8e['atimeout']=_0x428433;_0x69bf8e[_0x72e9('0x3b')]=_0x3bd9dd;_0x69bf8e['channel']=_0x5eb9e7[_0x72e9('0x20')];_0x22e022[_0x72e9('0x3c')][_0x445e15]['on'](_0x72e9('0x3d'),function(){logger[_0x72e9('0x26')](_0x72e9('0x3e'),_0x445e15);stopRouting(_0x445e15,_0x20eea9,_0x5eb9e7,_0x22e022);clearTimeout(_0x19f486);_0x19f486=undefined;_0x69bf8e[_0x72e9('0x3f')](!![]);if(_0x22e022[_0x72e9('0x3c')][_0x445e15]){delete _0x22e022[_0x72e9('0x3c')][_0x445e15];}_0x950ef7[_0x72e9('0x40')]();});_0x22e022['rules'][_0x445e15]['on'](_0x72e9('0x41'),function(){if(_0x22e022[_0x72e9('0x3c')][_0x445e15]){delete _0x22e022[_0x72e9('0x3c')][_0x445e15];}});_0x19f486=setTimeout(function(){logger[_0x72e9('0x26')](_0x72e9('0x42'),_0x445e15);endRouting(_0x445e15,_0x20eea9,_0x5eb9e7,_0x22e022);clearTimeout(_0x19f486);_0x69bf8e['close'](!![]);_0x950ef7['next']();},_0x3bd9dd);switch(_0x20eea9[_0x72e9('0x43')]){case'rrmemory':strategy[_0x72e9('0x44')](_0x69bf8e,_0x20eea9,_0x22e022,_0x5eb9e7);break;default:strategy[_0x72e9('0x45')](_0x69bf8e,_0x20eea9,_0x22e022,_0x5eb9e7);}}else{logger[_0x72e9('0x2b')]('[%s][QUEUE]\x20queue\x20not\x20found\x20%s',_0x445e15,_0x2814fe['name']);_0x950ef7[_0x72e9('0x40')]();}}}catch(_0xc3baf6){console['log'](_0xc3baf6);logger[_0x72e9('0x2b')](_0x72e9('0x37'),_0x445e15,_0xc3baf6['stack']);_0x950ef7[_0x72e9('0x40')]();}};};
\ No newline at end of file
index 8cabee0..f3922be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe06a=['isAgentAvailable','busy','busyQueue','showNotification','writeLog','forcedOwnership','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20timeout\x20with\x20%s','STOP','TIMEOUT','exports','lodash','uuid','./util','../../../../../config/logger','notificationId','squeue','agent','realtime','routing','handleRun','bind','handleTimeout','timeout','drained','handleDrained','prototype','push','info','isNil','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s'];(function(_0x4dad84,_0x49c097){var _0x3420c3=function(_0x354dd3){while(--_0x354dd3){_0x4dad84['push'](_0x4dad84['shift']());}};_0x3420c3(++_0x49c097);}(_0xe06a,0x1ab));var _0xae06=function(_0x24f217,_0x5d5013){_0x24f217=_0x24f217-0x0;var _0xeec426=_0xe06a[_0x24f217];return _0xeec426;};'use strict';var _=require(_0xae06('0x0'));var uuid=require(_0xae06('0x1'));var util=require(_0xae06('0x2'));var logger=require(_0xae06('0x3'))('routing');var Agent=function(_0x3bdb19,_0x3ed66b,_0x2fad53,_0x539c94){this[_0xae06('0x4')]=uuid['v4']();this[_0xae06('0x5')]=_0x3bdb19;this[_0xae06('0x6')]=_0x3ed66b;this[_0xae06('0x7')]=_0x2fad53;this[_0xae06('0x8')]=_0x539c94;this[_0xae06('0x5')]['push'](this[_0xae06('0x9')][_0xae06('0xa')](this),this[_0xae06('0xb')][_0xae06('0xa')](this));this[_0xae06('0x5')]['on'](_0xae06('0xc'),this['handleTimeout'][_0xae06('0xa')](this));this[_0xae06('0x5')]['on'](_0xae06('0xd'),this[_0xae06('0xe')]['bind'](this));};Agent[_0xae06('0xf')][_0xae06('0x10')]=function(){this[_0xae06('0x5')][_0xae06('0x10')](this[_0xae06('0x9')]['bind'](this),this[_0xae06('0xb')]['bind'](this));};Agent[_0xae06('0xf')]['handleDrained']=function(){this[_0xae06('0xb')](!![]);};Agent[_0xae06('0xf')][_0xae06('0x9')]=function(_0x423727){logger[_0xae06('0x11')]('[%s][AGENT]\x20try\x20with\x20%s',this[_0xae06('0x5')]['id'],this[_0xae06('0x6')]['id']);if(_[_0xae06('0x12')](this[_0xae06('0x7')][_0xae06('0x13')][this[_0xae06('0x6')]['id']])){logger['info'](_0xae06('0x14'),this[_0xae06('0x5')]['id'],this[_0xae06('0x6')]['id']);setTimeout(this['push'][_0xae06('0xa')](this),0x3e8);}else{if(this[_0xae06('0x8')]['forcedOwnership']||util[_0xae06('0x15')](this['squeue']['id'],this[_0xae06('0x7')][_0xae06('0x13')][this['agent']['id']],this[_0xae06('0x5')]['channel'],![])){this[_0xae06('0x7')]['agents'][this['agent']['id']][_0xae06('0x16')]=!![];this[_0xae06('0x7')][_0xae06('0x13')][this['agent']['id']][_0xae06('0x17')]=undefined;util[_0xae06('0x18')](this[_0xae06('0x4')],this[_0xae06('0x5')]['id'],this[_0xae06('0x7')][_0xae06('0x13')][this[_0xae06('0x6')]['id']],null,this[_0xae06('0x8')]);util[_0xae06('0x19')](this[_0xae06('0x5')]['id'],this[_0xae06('0x7')][_0xae06('0x13')][this[_0xae06('0x6')]['id']],'RINGING'+(this[_0xae06('0x8')][_0xae06('0x1a')]?':FORCED':''));}else{logger[_0xae06('0x11')](_0xae06('0x1b'),this['squeue']['id'],this[_0xae06('0x6')]['id']);setTimeout(this[_0xae06('0x10')][_0xae06('0xa')](this),0x3e8);}}};Agent['prototype'][_0xae06('0xb')]=function(_0x54c3ec){if(_[_0xae06('0x12')](this['realtime'][_0xae06('0x13')][this['agent']['id']])){return logger['info'](_0xae06('0x14'),this[_0xae06('0x5')]['id'],this[_0xae06('0x6')]['id']);}else{logger[_0xae06('0x11')](_0xae06('0x1c'),this['squeue']['id'],this[_0xae06('0x6')]['id']);util['hideNotification'](this[_0xae06('0x4')],this['squeue']['id'],this[_0xae06('0x7')][_0xae06('0x13')][this[_0xae06('0x6')]['id']],null,this['routing']);this[_0xae06('0x7')][_0xae06('0x13')][this[_0xae06('0x6')]['id']]['busy']=![];this['realtime'][_0xae06('0x13')][this[_0xae06('0x6')]['id']]['busyQueue']=undefined;util['writeLog'](this[_0xae06('0x5')]['id'],this[_0xae06('0x7')]['agents'][this[_0xae06('0x6')]['id']],_0x54c3ec?_0xae06('0x1d'):_0xae06('0x1e'));}if(!_0x54c3ec){setTimeout(this[_0xae06('0x10')][_0xae06('0xa')](this),0x3e8);}};function agent(_0x3c3c54,_0x419365,_0x3140a2,_0x4e1861){return new Agent(_0x3c3c54,_0x419365,_0x3140a2,_0x4e1861);}module[_0xae06('0x1f')]=agent;
\ No newline at end of file
+var _0xfc20=['busyQueue','RINGING',':FORCED','hideNotification','writeLog','STOP','TIMEOUT','exports','lodash','uuid','./util','../../../../../config/logger','notificationId','squeue','agent','realtime','routing','push','handleRun','bind','handleTimeout','timeout','drained','prototype','handleDrained','info','[%s][AGENT]\x20try\x20with\x20%s','isNil','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','isAgentAvailable','channel','busy'];(function(_0xa3408d,_0x1f54ae){var _0x1b34c2=function(_0xe9587){while(--_0xe9587){_0xa3408d['push'](_0xa3408d['shift']());}};_0x1b34c2(++_0x1f54ae);}(_0xfc20,0x1e4));var _0x0fc2=function(_0x8f82df,_0x4ad0e9){_0x8f82df=_0x8f82df-0x0;var _0x19212a=_0xfc20[_0x8f82df];return _0x19212a;};'use strict';var _=require(_0x0fc2('0x0'));var uuid=require(_0x0fc2('0x1'));var util=require(_0x0fc2('0x2'));var logger=require(_0x0fc2('0x3'))('routing');var Agent=function(_0x36400e,_0x42e04d,_0x5be635,_0x35cb5f){this[_0x0fc2('0x4')]=uuid['v4']();this[_0x0fc2('0x5')]=_0x36400e;this[_0x0fc2('0x6')]=_0x42e04d;this[_0x0fc2('0x7')]=_0x5be635;this[_0x0fc2('0x8')]=_0x35cb5f;this[_0x0fc2('0x5')][_0x0fc2('0x9')](this[_0x0fc2('0xa')][_0x0fc2('0xb')](this),this[_0x0fc2('0xc')]['bind'](this));this[_0x0fc2('0x5')]['on'](_0x0fc2('0xd'),this[_0x0fc2('0xc')]['bind'](this));this[_0x0fc2('0x5')]['on'](_0x0fc2('0xe'),this['handleDrained'][_0x0fc2('0xb')](this));};Agent[_0x0fc2('0xf')][_0x0fc2('0x9')]=function(){this[_0x0fc2('0x5')]['push'](this['handleRun'][_0x0fc2('0xb')](this),this['handleTimeout'][_0x0fc2('0xb')](this));};Agent[_0x0fc2('0xf')][_0x0fc2('0x10')]=function(){this[_0x0fc2('0xc')](!![]);};Agent[_0x0fc2('0xf')][_0x0fc2('0xa')]=function(_0x6b184c){logger[_0x0fc2('0x11')](_0x0fc2('0x12'),this[_0x0fc2('0x5')]['id'],this['agent']['id']);if(_[_0x0fc2('0x13')](this[_0x0fc2('0x7')][_0x0fc2('0x14')][this['agent']['id']])){logger[_0x0fc2('0x11')](_0x0fc2('0x15'),this[_0x0fc2('0x5')]['id'],this[_0x0fc2('0x6')]['id']);setTimeout(this['push']['bind'](this),0x3e8);}else{if(this['routing'][_0x0fc2('0x16')]||util[_0x0fc2('0x17')](this[_0x0fc2('0x5')]['id'],this['realtime']['agents'][this['agent']['id']],this[_0x0fc2('0x5')][_0x0fc2('0x18')],![])){this[_0x0fc2('0x7')]['agents'][this['agent']['id']][_0x0fc2('0x19')]=!![];this[_0x0fc2('0x7')]['agents'][this[_0x0fc2('0x6')]['id']][_0x0fc2('0x1a')]=undefined;util['showNotification'](this[_0x0fc2('0x4')],this['squeue']['id'],this[_0x0fc2('0x7')][_0x0fc2('0x14')][this[_0x0fc2('0x6')]['id']],null,this['routing']);util['writeLog'](this['squeue']['id'],this[_0x0fc2('0x7')][_0x0fc2('0x14')][this['agent']['id']],_0x0fc2('0x1b')+(this[_0x0fc2('0x8')][_0x0fc2('0x16')]?_0x0fc2('0x1c'):''));}else{logger[_0x0fc2('0x11')]('[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available',this['squeue']['id'],this['agent']['id']);setTimeout(this[_0x0fc2('0x9')]['bind'](this),0x3e8);}}};Agent[_0x0fc2('0xf')][_0x0fc2('0xc')]=function(_0x19d9bf){if(_[_0x0fc2('0x13')](this[_0x0fc2('0x7')][_0x0fc2('0x14')][this['agent']['id']])){return logger[_0x0fc2('0x11')](_0x0fc2('0x15'),this[_0x0fc2('0x5')]['id'],this['agent']['id']);}else{logger[_0x0fc2('0x11')]('[%s][AGENT]\x20timeout\x20with\x20%s',this[_0x0fc2('0x5')]['id'],this[_0x0fc2('0x6')]['id']);util[_0x0fc2('0x1d')](this[_0x0fc2('0x4')],this[_0x0fc2('0x5')]['id'],this[_0x0fc2('0x7')][_0x0fc2('0x14')][this[_0x0fc2('0x6')]['id']],null,this[_0x0fc2('0x8')]);this['realtime'][_0x0fc2('0x14')][this['agent']['id']][_0x0fc2('0x19')]=![];this[_0x0fc2('0x7')]['agents'][this[_0x0fc2('0x6')]['id']][_0x0fc2('0x1a')]=undefined;util[_0x0fc2('0x1e')](this[_0x0fc2('0x5')]['id'],this[_0x0fc2('0x7')][_0x0fc2('0x14')][this[_0x0fc2('0x6')]['id']],_0x19d9bf?_0x0fc2('0x1f'):_0x0fc2('0x20'));}if(!_0x19d9bf){setTimeout(this['push'][_0x0fc2('0xb')](this),0x3e8);}};function agent(_0x809278,_0x3d571d,_0x4ab41b,_0x2ba61d){return new Agent(_0x809278,_0x3d571d,_0x4ab41b,_0x2ba61d);}module[_0x0fc2('0x21')]=agent;
\ No newline at end of file
index c572ed3..9958771 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2427=['isNil','Agents','length','realtime','info','isAgentAvailable','agents','channel','busy','busyQueue','[%s][QUEUE]\x20EMPTY','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','hideNotification','writeLog','TIMEOUT','exports','lodash','uuid','../../../../../config/logger','notificationId','queue','routing','squeue','push','handleRun','handleTimeout','bind','timeout','drained','handleDrained','prototype'];(function(_0x9010f2,_0x214ede){var _0x119785=function(_0x294dbd){while(--_0x294dbd){_0x9010f2['push'](_0x9010f2['shift']());}};_0x119785(++_0x214ede);}(_0x2427,0x165));var _0x7242=function(_0x4fb9d5,_0x4e937c){_0x4fb9d5=_0x4fb9d5-0x0;var _0x4908e4=_0x2427[_0x4fb9d5];return _0x4908e4;};'use strict';var _=require(_0x7242('0x0'));var uuid=require(_0x7242('0x1'));var util=require('./util');var logger=require(_0x7242('0x2'))('routing');var Beepall=function(_0x297a67,_0x4b0c46,_0x66fd49,_0x12766a){this[_0x7242('0x3')]=uuid['v4']();this['squeue']=_0x297a67;this[_0x7242('0x4')]=_0x4b0c46;this['realtime']=_0x66fd49;this[_0x7242('0x5')]=_0x12766a;this[_0x7242('0x6')][_0x7242('0x7')](this[_0x7242('0x8')]['bind'](this),this[_0x7242('0x9')][_0x7242('0xa')](this));this['squeue']['on'](_0x7242('0xb'),this[_0x7242('0x9')][_0x7242('0xa')](this));this['squeue']['on'](_0x7242('0xc'),this[_0x7242('0xd')][_0x7242('0xa')](this));};Beepall[_0x7242('0xe')]['push']=function(){this[_0x7242('0x6')][_0x7242('0x7')](this['handleRun'][_0x7242('0xa')](this),this[_0x7242('0x9')][_0x7242('0xa')](this));};Beepall['prototype']['handleDrained']=function(_0x25ed7a){this['handleTimeout'](!![]);};Beepall[_0x7242('0xe')][_0x7242('0x8')]=function(_0x294535){var _0x994188=!![];if(!_[_0x7242('0xf')](this[_0x7242('0x4')])&&!_[_0x7242('0xf')](this['queue'][_0x7242('0x10')])&&this['queue'][_0x7242('0x10')][_0x7242('0x11')]>0x0){for(var _0x4828a0=0x0,_0x517619;_0x4828a0<this['queue'][_0x7242('0x10')][_0x7242('0x11')];_0x4828a0+=0x1){_0x517619=this['queue']['Agents'][_0x4828a0]['id'];if(_['isNil'](this[_0x7242('0x12')]['agents'][_0x517619])){logger[_0x7242('0x13')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x7242('0x6')]['id'],_0x517619);}else{if(util[_0x7242('0x14')](this[_0x7242('0x6')]['id'],this[_0x7242('0x12')][_0x7242('0x15')][_0x517619],this[_0x7242('0x6')][_0x7242('0x16')],!![])){_0x994188=![];util['writeLog'](this[_0x7242('0x6')]['id'],this[_0x7242('0x12')][_0x7242('0x15')][_0x517619],'RINGING');this[_0x7242('0x12')][_0x7242('0x15')][_0x517619][_0x7242('0x17')]=!![];this[_0x7242('0x12')][_0x7242('0x15')][_0x517619][_0x7242('0x18')]=this[_0x7242('0x4')]['name'];util['showNotification'](this[_0x7242('0x3')],this[_0x7242('0x6')]['id'],this[_0x7242('0x12')][_0x7242('0x15')][_0x517619],this[_0x7242('0x4')],this[_0x7242('0x5')]);}}}if(_0x994188){logger[_0x7242('0x13')]('[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY',this[_0x7242('0x6')]['id']);setTimeout(this[_0x7242('0x7')][_0x7242('0xa')](this),0x3e8);}}else{logger['info'](_0x7242('0x19'),this[_0x7242('0x6')]['id']);setTimeout(this[_0x7242('0x7')][_0x7242('0xa')](this),0x3e8);}};Beepall[_0x7242('0xe')][_0x7242('0x9')]=function(_0x4ecf52){if(!_[_0x7242('0xf')](this[_0x7242('0x4')])&&!_[_0x7242('0xf')](this[_0x7242('0x4')]['Agents'])){for(var _0x13f986=0x0,_0x31adf5;_0x13f986<this[_0x7242('0x4')][_0x7242('0x10')][_0x7242('0x11')];_0x13f986+=0x1){_0x31adf5=this['queue'][_0x7242('0x10')][_0x13f986]['id'];if(_[_0x7242('0xf')](this['realtime'][_0x7242('0x15')][_0x31adf5])){logger[_0x7242('0x13')](_0x7242('0x1a'),this['squeue']['id'],_0x31adf5);}else{util[_0x7242('0x1b')](this['notificationId'],this['squeue']['id'],this[_0x7242('0x12')]['agents'][_0x31adf5],this[_0x7242('0x4')],this['routing']);util[_0x7242('0x1c')](this[_0x7242('0x6')]['id'],this[_0x7242('0x12')]['agents'][_0x31adf5],_0x4ecf52?'STOP':_0x7242('0x1d'));this[_0x7242('0x12')][_0x7242('0x15')][_0x31adf5][_0x7242('0x17')]=![];this[_0x7242('0x12')][_0x7242('0x15')][_0x31adf5]['busyQueue']=undefined;}}}if(!_0x4ecf52){setTimeout(this[_0x7242('0x7')]['bind'](this),0x3e8);}};function beepall(_0x404818,_0x2cc7f8,_0x2645eb,_0x1320f5){return new Beepall(_0x404818,_0x2cc7f8,_0x2645eb,_0x1320f5);}module[_0x7242('0x1e')]=beepall;
\ No newline at end of file
+var _0xdc97=['squeue','queue','realtime','bind','handleTimeout','timeout','drained','handleDrained','prototype','push','handleRun','isNil','Agents','length','agents','info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','writeLog','RINGING','busy','busyQueue','name','[%s][QUEUE]\x20EMPTY','hideNotification','STOP','exports','lodash','uuid','./util','routing','notificationId'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0xdc97,0x13b));var _0x7dc9=function(_0x238f6e,_0x58069a){_0x238f6e=_0x238f6e-0x0;var _0x5ba4f8=_0xdc97[_0x238f6e];return _0x5ba4f8;};'use strict';var _=require(_0x7dc9('0x0'));var uuid=require(_0x7dc9('0x1'));var util=require(_0x7dc9('0x2'));var logger=require('../../../../../config/logger')(_0x7dc9('0x3'));var Beepall=function(_0x4f5c88,_0x228e39,_0x2b86da,_0x478a95){this[_0x7dc9('0x4')]=uuid['v4']();this[_0x7dc9('0x5')]=_0x4f5c88;this[_0x7dc9('0x6')]=_0x228e39;this[_0x7dc9('0x7')]=_0x2b86da;this['routing']=_0x478a95;this[_0x7dc9('0x5')]['push'](this['handleRun'][_0x7dc9('0x8')](this),this[_0x7dc9('0x9')][_0x7dc9('0x8')](this));this[_0x7dc9('0x5')]['on'](_0x7dc9('0xa'),this['handleTimeout'][_0x7dc9('0x8')](this));this[_0x7dc9('0x5')]['on'](_0x7dc9('0xb'),this[_0x7dc9('0xc')][_0x7dc9('0x8')](this));};Beepall[_0x7dc9('0xd')][_0x7dc9('0xe')]=function(){this['squeue']['push'](this['handleRun']['bind'](this),this[_0x7dc9('0x9')][_0x7dc9('0x8')](this));};Beepall['prototype'][_0x7dc9('0xc')]=function(_0x2f3acd){this[_0x7dc9('0x9')](!![]);};Beepall[_0x7dc9('0xd')][_0x7dc9('0xf')]=function(_0x11af93){var _0x524d09=!![];if(!_[_0x7dc9('0x10')](this[_0x7dc9('0x6')])&&!_[_0x7dc9('0x10')](this[_0x7dc9('0x6')][_0x7dc9('0x11')])&&this[_0x7dc9('0x6')][_0x7dc9('0x11')][_0x7dc9('0x12')]>0x0){for(var _0x4778d5=0x0,_0x5a6e04;_0x4778d5<this[_0x7dc9('0x6')]['Agents'][_0x7dc9('0x12')];_0x4778d5+=0x1){_0x5a6e04=this[_0x7dc9('0x6')]['Agents'][_0x4778d5]['id'];if(_[_0x7dc9('0x10')](this[_0x7dc9('0x7')][_0x7dc9('0x13')][_0x5a6e04])){logger[_0x7dc9('0x14')](_0x7dc9('0x15'),this[_0x7dc9('0x5')]['id'],_0x5a6e04);}else{if(util[_0x7dc9('0x16')](this[_0x7dc9('0x5')]['id'],this[_0x7dc9('0x7')][_0x7dc9('0x13')][_0x5a6e04],this['squeue']['channel'],!![])){_0x524d09=![];util[_0x7dc9('0x17')](this[_0x7dc9('0x5')]['id'],this['realtime'][_0x7dc9('0x13')][_0x5a6e04],_0x7dc9('0x18'));this['realtime'][_0x7dc9('0x13')][_0x5a6e04][_0x7dc9('0x19')]=!![];this[_0x7dc9('0x7')]['agents'][_0x5a6e04][_0x7dc9('0x1a')]=this[_0x7dc9('0x6')][_0x7dc9('0x1b')];util['showNotification'](this['notificationId'],this['squeue']['id'],this[_0x7dc9('0x7')][_0x7dc9('0x13')][_0x5a6e04],this['queue'],this['routing']);}}}if(_0x524d09){logger[_0x7dc9('0x14')]('[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY',this[_0x7dc9('0x5')]['id']);setTimeout(this[_0x7dc9('0xe')][_0x7dc9('0x8')](this),0x3e8);}}else{logger[_0x7dc9('0x14')](_0x7dc9('0x1c'),this[_0x7dc9('0x5')]['id']);setTimeout(this[_0x7dc9('0xe')][_0x7dc9('0x8')](this),0x3e8);}};Beepall[_0x7dc9('0xd')][_0x7dc9('0x9')]=function(_0x14083d){if(!_[_0x7dc9('0x10')](this['queue'])&&!_['isNil'](this['queue']['Agents'])){for(var _0x4a68f0=0x0,_0x553a03;_0x4a68f0<this['queue']['Agents'][_0x7dc9('0x12')];_0x4a68f0+=0x1){_0x553a03=this[_0x7dc9('0x6')][_0x7dc9('0x11')][_0x4a68f0]['id'];if(_[_0x7dc9('0x10')](this[_0x7dc9('0x7')][_0x7dc9('0x13')][_0x553a03])){logger['info']('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],_0x553a03);}else{util[_0x7dc9('0x1d')](this['notificationId'],this[_0x7dc9('0x5')]['id'],this[_0x7dc9('0x7')][_0x7dc9('0x13')][_0x553a03],this[_0x7dc9('0x6')],this[_0x7dc9('0x3')]);util[_0x7dc9('0x17')](this[_0x7dc9('0x5')]['id'],this[_0x7dc9('0x7')]['agents'][_0x553a03],_0x14083d?_0x7dc9('0x1e'):'TIMEOUT');this[_0x7dc9('0x7')][_0x7dc9('0x13')][_0x553a03][_0x7dc9('0x19')]=![];this[_0x7dc9('0x7')]['agents'][_0x553a03][_0x7dc9('0x1a')]=undefined;}}}if(!_0x14083d){setTimeout(this['push'][_0x7dc9('0x8')](this),0x3e8);}};function beepall(_0x4f47af,_0x590bed,_0x265a5f,_0x45fd54){return new Beepall(_0x4f47af,_0x590bed,_0x265a5f,_0x45fd54);}module[_0x7dc9('0x1f')]=beepall;
\ No newline at end of file
index 7073783..54ca77f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1197=['./rrmemory','./beepall','./agent'];(function(_0x11c550,_0x2c3ac2){var _0x480a3c=function(_0x4da7fe){while(--_0x4da7fe){_0x11c550['push'](_0x11c550['shift']());}};_0x480a3c(++_0x2c3ac2);}(_0x1197,0x16e));var _0x7119=function(_0x5058c8,_0xab0919){_0x5058c8=_0x5058c8-0x0;var _0x4aab4f=_0x1197[_0x5058c8];return _0x4aab4f;};'use strict';module['exports']={'rrmemory':require(_0x7119('0x0')),'beepall':require(_0x7119('0x1')),'agent':require(_0x7119('0x2'))};
\ No newline at end of file
+var _0xb583=['./agent','exports','./rrmemory','./beepall'];(function(_0x2d4c16,_0x1cc64a){var _0x354ed8=function(_0x1aee44){while(--_0x1aee44){_0x2d4c16['push'](_0x2d4c16['shift']());}};_0x354ed8(++_0x1cc64a);}(_0xb583,0x141));var _0x3b58=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0xb583[_0x3bf83f];return _0x22c4a9;};'use strict';module[_0x3b58('0x0')]={'rrmemory':require(_0x3b58('0x1')),'beepall':require(_0x3b58('0x2')),'agent':require(_0x3b58('0x3'))};
\ No newline at end of file
index 2c6e253..ce649cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcb8=['channel','[%s][QUEUE]\x20available\x20again\x20%s','done','mapAgentsId','info','[%s][QUEUE]\x20try\x20with\x20%s','isNil','busy','agents','busyQueue','name','notificationId','RINGING','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','writeLog','lodash','uuid','./util','../../../../../config/logger','squeue','queue','routing','intervals','push','handleRun','bind','handleTimeout','module','timeout','drained','handleDrained','prototype','handleCheckReject','isAgentAvailable','realtime','agentId'];(function(_0x4ce108,_0x344513){var _0x302d8a=function(_0x2b603b){while(--_0x2b603b){_0x4ce108['push'](_0x4ce108['shift']());}};_0x302d8a(++_0x344513);}(_0xdcb8,0x83));var _0x8dcb=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xdcb8[_0x397e5f];return _0x5302b8;};'use strict';var rr=require('rr');var _=require(_0x8dcb('0x0'));var uuid=require(_0x8dcb('0x1'));var util=require(_0x8dcb('0x2'));var logger=require(_0x8dcb('0x3'))('routing');var RRMemory=function(_0x2dfac2,_0x1c7de8,_0x139e7c,_0x4651f2){this['notificationId']=uuid['v4']();this[_0x8dcb('0x4')]=_0x2dfac2;this[_0x8dcb('0x5')]=_0x1c7de8;this['realtime']=_0x139e7c;this[_0x8dcb('0x6')]=_0x4651f2;this[_0x8dcb('0x7')]={};this[_0x8dcb('0x4')][_0x8dcb('0x8')](this[_0x8dcb('0x9')][_0x8dcb('0xa')](this),this[_0x8dcb('0xb')]['bind'](this),this[_0x8dcb('0xc')]);this['squeue']['on'](_0x8dcb('0xd'),this['handleTimeout'][_0x8dcb('0xa')](this));this[_0x8dcb('0x4')]['on'](_0x8dcb('0xe'),this[_0x8dcb('0xf')][_0x8dcb('0xa')](this));};RRMemory[_0x8dcb('0x10')][_0x8dcb('0x8')]=function(){this[_0x8dcb('0x4')][_0x8dcb('0x8')](this[_0x8dcb('0x9')][_0x8dcb('0xa')](this),this[_0x8dcb('0xb')][_0x8dcb('0xa')](this));};RRMemory['prototype'][_0x8dcb('0xf')]=function(_0x2f990a){this[_0x8dcb('0xb')](!![]);};RRMemory[_0x8dcb('0x10')][_0x8dcb('0x11')]=function(_0x1587d0){if(util[_0x8dcb('0x12')](this[_0x8dcb('0x4')]['id'],this[_0x8dcb('0x13')]['agents'][this[_0x8dcb('0x14')]],this[_0x8dcb('0x4')][_0x8dcb('0x15')],!![])){logger['info'](_0x8dcb('0x16'),this['squeue']['id'],this[_0x8dcb('0x14')]);clearInterval(this[_0x8dcb('0x7')][this[_0x8dcb('0x14')]]);_0x1587d0[_0x8dcb('0x17')]();setTimeout(this['push'][_0x8dcb('0xa')](this),0x3e8);}};RRMemory['prototype'][_0x8dcb('0x9')]=function(_0x453545){this[_0x8dcb('0x14')]=rr(this['queue'][_0x8dcb('0x18')]);logger[_0x8dcb('0x19')](_0x8dcb('0x1a'),this[_0x8dcb('0x4')]['id'],this['agentId']);if(_[_0x8dcb('0x1b')](this[_0x8dcb('0x13')]['agents'][this[_0x8dcb('0x14')]])){logger['info']('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x8dcb('0x4')]['id'],this[_0x8dcb('0x14')]);_0x453545['done']();setTimeout(this[_0x8dcb('0x8')][_0x8dcb('0xa')](this),0x3e8);}else{if(util[_0x8dcb('0x12')](this[_0x8dcb('0x4')]['id'],this[_0x8dcb('0x13')]['agents'][this[_0x8dcb('0x14')]],this[_0x8dcb('0x4')][_0x8dcb('0x15')],!![])){this[_0x8dcb('0x13')]['agents'][this[_0x8dcb('0x14')]][_0x8dcb('0x1c')]=!![];this[_0x8dcb('0x13')][_0x8dcb('0x1d')][this[_0x8dcb('0x14')]][_0x8dcb('0x1e')]=this[_0x8dcb('0x5')][_0x8dcb('0x1f')];util['showNotification'](this[_0x8dcb('0x20')],this[_0x8dcb('0x4')]['id'],this[_0x8dcb('0x13')][_0x8dcb('0x1d')][this[_0x8dcb('0x14')]],this[_0x8dcb('0x5')],this[_0x8dcb('0x6')]);util['writeLog'](this['squeue']['id'],this['realtime'][_0x8dcb('0x1d')][this['agentId']],_0x8dcb('0x21'));this[_0x8dcb('0x7')][this[_0x8dcb('0x14')]]=setInterval(this[_0x8dcb('0x11')][_0x8dcb('0xa')](this,_0x453545),0x3e8);}else{logger[_0x8dcb('0x19')](_0x8dcb('0x22'),this['squeue']['id'],this['agentId']);_0x453545[_0x8dcb('0x17')]();setTimeout(this['push']['bind'](this),0x3e8);}}};RRMemory[_0x8dcb('0x10')]['handleTimeout']=function(_0x10b529){logger[_0x8dcb('0x19')](_0x8dcb('0x23'),this['squeue']['id'],this[_0x8dcb('0x14')]);if(_[_0x8dcb('0x1b')](this[_0x8dcb('0x13')]['agents'][this[_0x8dcb('0x14')]])){logger[_0x8dcb('0x19')](_0x8dcb('0x24'),this[_0x8dcb('0x4')]['id'],this[_0x8dcb('0x14')]);}else{clearInterval(this['intervals'][this['agentId']]);util['hideNotification'](this['notificationId'],this['squeue']['id'],this['realtime'][_0x8dcb('0x1d')][this[_0x8dcb('0x14')]],this[_0x8dcb('0x5')],this[_0x8dcb('0x6')]);util[_0x8dcb('0x25')](this[_0x8dcb('0x4')]['id'],this[_0x8dcb('0x13')][_0x8dcb('0x1d')][this['agentId']],'TIMEOUT');this[_0x8dcb('0x13')]['agents'][this[_0x8dcb('0x14')]][_0x8dcb('0x1c')]=![];this['realtime']['agents'][this[_0x8dcb('0x14')]][_0x8dcb('0x1e')]=undefined;}if(!_0x10b529){setTimeout(this[_0x8dcb('0x8')][_0x8dcb('0xa')](this),0x3e8);}};function rrmemory(_0x190654,_0x5b40fc,_0xb805e,_0x3dcaa4){return new RRMemory(_0x190654,_0x5b40fc,_0xb805e,_0x3dcaa4);}module['exports']=rrmemory;
\ No newline at end of file
+var _0x1308=['prototype','handleCheckReject','info','[%s][QUEUE]\x20available\x20again\x20%s','agentId','done','mapAgentsId','[%s][QUEUE]\x20try\x20with\x20%s','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','agents','channel','busy','busyQueue','showNotification','writeLog','RINGING','hideNotification','notificationId','TIMEOUT','exports','uuid','./util','../../../../../config/logger','routing','squeue','queue','realtime','intervals','push','handleRun','bind','handleTimeout','module','timeout','drained','handleDrained'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0x1308,0x17c));var _0x8130=function(_0x40d8d7,_0x30dd5e){_0x40d8d7=_0x40d8d7-0x0;var _0x3454cc=_0x1308[_0x40d8d7];return _0x3454cc;};'use strict';var rr=require('rr');var _=require('lodash');var uuid=require(_0x8130('0x0'));var util=require(_0x8130('0x1'));var logger=require(_0x8130('0x2'))(_0x8130('0x3'));var RRMemory=function(_0x36fc01,_0x1b2fc8,_0x29ae00,_0x19890a){this['notificationId']=uuid['v4']();this[_0x8130('0x4')]=_0x36fc01;this[_0x8130('0x5')]=_0x1b2fc8;this[_0x8130('0x6')]=_0x29ae00;this[_0x8130('0x3')]=_0x19890a;this[_0x8130('0x7')]={};this[_0x8130('0x4')][_0x8130('0x8')](this[_0x8130('0x9')][_0x8130('0xa')](this),this[_0x8130('0xb')]['bind'](this),this[_0x8130('0xc')]);this[_0x8130('0x4')]['on'](_0x8130('0xd'),this[_0x8130('0xb')][_0x8130('0xa')](this));this[_0x8130('0x4')]['on'](_0x8130('0xe'),this[_0x8130('0xf')][_0x8130('0xa')](this));};RRMemory[_0x8130('0x10')]['push']=function(){this['squeue'][_0x8130('0x8')](this[_0x8130('0x9')]['bind'](this),this[_0x8130('0xb')]['bind'](this));};RRMemory[_0x8130('0x10')][_0x8130('0xf')]=function(_0x2b4398){this['handleTimeout'](!![]);};RRMemory[_0x8130('0x10')][_0x8130('0x11')]=function(_0x15365e){if(util['isAgentAvailable'](this[_0x8130('0x4')]['id'],this[_0x8130('0x6')]['agents'][this['agentId']],this[_0x8130('0x4')]['channel'],!![])){logger[_0x8130('0x12')](_0x8130('0x13'),this[_0x8130('0x4')]['id'],this['agentId']);clearInterval(this[_0x8130('0x7')][this[_0x8130('0x14')]]);_0x15365e[_0x8130('0x15')]();setTimeout(this['push'][_0x8130('0xa')](this),0x3e8);}};RRMemory['prototype']['handleRun']=function(_0x20ed88){this[_0x8130('0x14')]=rr(this['queue'][_0x8130('0x16')]);logger[_0x8130('0x12')](_0x8130('0x17'),this[_0x8130('0x4')]['id'],this[_0x8130('0x14')]);if(_['isNil'](this['realtime']['agents'][this[_0x8130('0x14')]])){logger[_0x8130('0x12')](_0x8130('0x18'),this[_0x8130('0x4')]['id'],this[_0x8130('0x14')]);_0x20ed88[_0x8130('0x15')]();setTimeout(this[_0x8130('0x8')][_0x8130('0xa')](this),0x3e8);}else{if(util['isAgentAvailable'](this['squeue']['id'],this[_0x8130('0x6')][_0x8130('0x19')][this[_0x8130('0x14')]],this[_0x8130('0x4')][_0x8130('0x1a')],!![])){this[_0x8130('0x6')][_0x8130('0x19')][this[_0x8130('0x14')]][_0x8130('0x1b')]=!![];this[_0x8130('0x6')][_0x8130('0x19')][this[_0x8130('0x14')]][_0x8130('0x1c')]=this[_0x8130('0x5')]['name'];util[_0x8130('0x1d')](this['notificationId'],this[_0x8130('0x4')]['id'],this[_0x8130('0x6')][_0x8130('0x19')][this[_0x8130('0x14')]],this[_0x8130('0x5')],this[_0x8130('0x3')]);util[_0x8130('0x1e')](this[_0x8130('0x4')]['id'],this[_0x8130('0x6')]['agents'][this[_0x8130('0x14')]],_0x8130('0x1f'));this[_0x8130('0x7')][this[_0x8130('0x14')]]=setInterval(this[_0x8130('0x11')]['bind'](this,_0x20ed88),0x3e8);}else{logger[_0x8130('0x12')]('[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s',this[_0x8130('0x4')]['id'],this[_0x8130('0x14')]);_0x20ed88[_0x8130('0x15')]();setTimeout(this['push'][_0x8130('0xa')](this),0x3e8);}}};RRMemory['prototype'][_0x8130('0xb')]=function(_0x1772b0){logger[_0x8130('0x12')]('[%s][QUEUE]\x20timeout\x20with\x20%s',this[_0x8130('0x4')]['id'],this[_0x8130('0x14')]);if(_['isNil'](this[_0x8130('0x6')][_0x8130('0x19')][this[_0x8130('0x14')]])){logger[_0x8130('0x12')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x8130('0x4')]['id'],this['agentId']);}else{clearInterval(this[_0x8130('0x7')][this['agentId']]);util[_0x8130('0x20')](this[_0x8130('0x21')],this[_0x8130('0x4')]['id'],this[_0x8130('0x6')][_0x8130('0x19')][this[_0x8130('0x14')]],this[_0x8130('0x5')],this[_0x8130('0x3')]);util[_0x8130('0x1e')](this[_0x8130('0x4')]['id'],this[_0x8130('0x6')][_0x8130('0x19')][this[_0x8130('0x14')]],_0x8130('0x22'));this['realtime'][_0x8130('0x19')][this['agentId']][_0x8130('0x1b')]=![];this[_0x8130('0x6')]['agents'][this['agentId']]['busyQueue']=undefined;}if(!_0x1772b0){setTimeout(this['push']['bind'](this),0x3e8);}};function rrmemory(_0x4e43de,_0x4accf4,_0x315532,_0x4e89a0){return new RRMemory(_0x4e43de,_0x4accf4,_0x315532,_0x4e89a0);}module[_0x8130('0x23')]=rrmemory;
\ No newline at end of file
index b3627aa..1ac6765 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2542=['writeLog','lodash','util','../utils','mustache','../../../../../config/environment','routing','redis','defaults','localhost','emit','user:%s','name','user:save','split','\x20interaction','account','notificationSound','notificationShake','body','queue','getMustacheRender','notificationTemplate','msg','I\x20can\x27t\x20render\x20your\x20template','error','format','notification:%s','save','isAgentAvailable','OFFLINE','Pause','PAUSE','hasOwnProperty','Capacity','CurrentCapacity','toUpperCase','\x20MAXCAPACITY','showNotification','hideNotification'];(function(_0x348860,_0x4531f6){var _0x2fc2ad=function(_0x3b449f){while(--_0x3b449f){_0x348860['push'](_0x348860['shift']());}};_0x2fc2ad(++_0x4531f6);}(_0x2542,0x169));var _0x2254=function(_0x45d5bc,_0x42fc1e){_0x45d5bc=_0x45d5bc-0x0;var _0xb512e3=_0x2542[_0x45d5bc];return _0xb512e3;};'use strict';var _=require(_0x2254('0x0'));var util=require(_0x2254('0x1'));var utils=require(_0x2254('0x2'));var Mustache=require(_0x2254('0x3'));var Redis=require('ioredis');var config=require(_0x2254('0x4'));var logger=require('../../../../../config/logger')(_0x2254('0x5'));config[_0x2254('0x6')]=_[_0x2254('0x7')](config[_0x2254('0x6')],{'host':_0x2254('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x2254('0x6')]));function emit(_0xe8ca50,_0x2ee7ee,_0x3c45ec){io['to'](_0xe8ca50)[_0x2254('0x9')](_0x2ee7ee,_0x3c45ec);}function sendNotification(_0x477b47,_0x263459,_0xbf1c18,_0xb395da,_0x1ae415,_0x38fb2b){io['to'](util['format'](_0x2254('0xa'),_0xb395da[_0x2254('0xb')]))[_0x2254('0x9')](_0x2254('0xc'),_0xb395da);var _0x575d58=_0x38fb2b||{};var _0x524fad=_0xbf1c18[_0x2254('0xd')]('.');var _0x3e4213={'uniqueid':_0x263459,'channel':_0x524fad[0x0],'id':_0x524fad[0x1],'title':_0x524fad[0x0]+_0x2254('0xe'),'interactionId':_0x524fad[0x2],'queue':_0x1ae415?_0x1ae415[_0x2254('0xb')]:null,'sound':_0x575d58[_0x2254('0xf')][_0x2254('0x10')],'shake':_0x575d58['account'][_0x2254('0x11')]};try{if(!_0x575d58[_0x2254('0x12')]){_0x575d58['body']={};}if(_0x1ae415){_0x575d58[_0x2254('0x12')][_0x2254('0x13')]=_0x1ae415;}else if(_0x575d58[_0x2254('0x12')][_0x2254('0x13')]){delete _0x575d58[_0x2254('0x12')][_0x2254('0x13')];}_0x3e4213['msg']=utils[_0x2254('0x14')](_0x575d58['account'][_0x2254('0x15')],_0x575d58);}catch(_0x2a2470){_0x3e4213[_0x2254('0x16')]=_0x2254('0x17');logger[_0x2254('0x18')](util[_0x2254('0x19')]('[%s][QUEUE]\x20%s',_0x263459,_0x2a2470['message']));}io['to'](util['format'](_0x2254('0xa'),_0xb395da[_0x2254('0xb')]))[_0x2254('0x9')](util[_0x2254('0x19')](_0x2254('0x1a'),_0x477b47?_0x2254('0x1b'):'remove'),_0x3e4213);}function writeLog(_0x28381e,_0x16148d,_0x906cde){return logger['info'](util['format']('[%s][QUEUE][AGENT:%s][STATUS:%s]',_0x28381e,_0x16148d[_0x2254('0xb')],_0x906cde));}exports[_0x2254('0x1c')]=function(_0xf88b56,_0x56b91e,_0x5713e4,_0x4d8faf){if(_0x56b91e['busy']){writeLog(_0xf88b56,_0x56b91e,'BUSY');return![];}if(!_0x56b91e['online']){writeLog(_0xf88b56,_0x56b91e,_0x2254('0x1d'));return![];}if(_0x56b91e[_0x5713e4+_0x2254('0x1e')]){writeLog(_0xf88b56,_0x56b91e,_0x2254('0x1f'));return![];}if(_0x4d8faf&&_0x56b91e[_0x2254('0x20')](_0x5713e4+_0x2254('0x21'))&&_0x56b91e[_0x2254('0x20')](_0x5713e4+'CurrentCapacity')){if(_0x56b91e[_0x5713e4+'Capacity']>0x0&&_0x56b91e[_0x5713e4+_0x2254('0x22')]>=_0x56b91e[_0x5713e4+'Capacity']){writeLog(_0xf88b56,_0x56b91e,_0x5713e4[_0x2254('0x23')]()+_0x2254('0x24'));return![];}}return!![];};exports[_0x2254('0x25')]=function(_0x3aa0bd,_0x19043b,_0x482688,_0x1a8a0d,_0x2a789b){return sendNotification(!![],_0x3aa0bd,_0x19043b,_0x482688,_0x1a8a0d,_0x2a789b);};exports[_0x2254('0x26')]=function(_0x37af8b,_0x13366a,_0x377c41,_0x3214a7,_0x22e791){return sendNotification(![],_0x37af8b,_0x13366a,_0x377c41,_0x3214a7,_0x22e791);};exports[_0x2254('0x27')]=writeLog;
\ No newline at end of file
+var _0x2d72=['redis','defaults','localhost','socket.io-emitter','format','user:%s','name','emit','user:save','split','\x20interaction','notificationSound','account','notificationShake','body','queue','msg','I\x20can\x27t\x20render\x20your\x20template','error','message','notification:%s','save','remove','info','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','BUSY','online','OFFLINE','PAUSE','hasOwnProperty','CurrentCapacity','Capacity','\x20MAXCAPACITY','showNotification','hideNotification','lodash','util','../utils','mustache','ioredis','../../../../../config/environment','../../../../../config/logger','routing'];(function(_0x5d38f8,_0x5b3772){var _0x40ee60=function(_0xa93486){while(--_0xa93486){_0x5d38f8['push'](_0x5d38f8['shift']());}};_0x40ee60(++_0x5b3772);}(_0x2d72,0xa8));var _0x22d7=function(_0x3fdae9,_0x5c9bc4){_0x3fdae9=_0x3fdae9-0x0;var _0x3af699=_0x2d72[_0x3fdae9];return _0x3af699;};'use strict';var _=require(_0x22d7('0x0'));var util=require(_0x22d7('0x1'));var utils=require(_0x22d7('0x2'));var Mustache=require(_0x22d7('0x3'));var Redis=require(_0x22d7('0x4'));var config=require(_0x22d7('0x5'));var logger=require(_0x22d7('0x6'))(_0x22d7('0x7'));config[_0x22d7('0x8')]=_[_0x22d7('0x9')](config[_0x22d7('0x8')],{'host':_0x22d7('0xa'),'port':0x18eb});var io=require(_0x22d7('0xb'))(new Redis(config[_0x22d7('0x8')]));function emit(_0x52a3e3,_0x23a731,_0x3791d6){io['to'](_0x52a3e3)['emit'](_0x23a731,_0x3791d6);}function sendNotification(_0x3b12cd,_0x1abed9,_0x1c6aaf,_0x3c694f,_0x49f7e1,_0x5f56eb){io['to'](util[_0x22d7('0xc')](_0x22d7('0xd'),_0x3c694f[_0x22d7('0xe')]))[_0x22d7('0xf')](_0x22d7('0x10'),_0x3c694f);var _0x4db5dd=_0x5f56eb||{};var _0x47cec1=_0x1c6aaf[_0x22d7('0x11')]('.');var _0x4e1146={'uniqueid':_0x1abed9,'channel':_0x47cec1[0x0],'id':_0x47cec1[0x1],'title':_0x47cec1[0x0]+_0x22d7('0x12'),'interactionId':_0x47cec1[0x2],'queue':_0x49f7e1?_0x49f7e1[_0x22d7('0xe')]:null,'sound':_0x4db5dd['account'][_0x22d7('0x13')],'shake':_0x4db5dd[_0x22d7('0x14')][_0x22d7('0x15')]};try{if(!_0x4db5dd[_0x22d7('0x16')]){_0x4db5dd[_0x22d7('0x16')]={};}if(_0x49f7e1){_0x4db5dd[_0x22d7('0x16')][_0x22d7('0x17')]=_0x49f7e1;}else if(_0x4db5dd[_0x22d7('0x16')]['queue']){delete _0x4db5dd[_0x22d7('0x16')][_0x22d7('0x17')];}_0x4e1146[_0x22d7('0x18')]=utils['getMustacheRender'](_0x4db5dd['account']['notificationTemplate'],_0x4db5dd);}catch(_0x46f63d){_0x4e1146[_0x22d7('0x18')]=_0x22d7('0x19');logger[_0x22d7('0x1a')](util[_0x22d7('0xc')]('[%s][QUEUE]\x20%s',_0x1abed9,_0x46f63d[_0x22d7('0x1b')]));}io['to'](util[_0x22d7('0xc')](_0x22d7('0xd'),_0x3c694f['name']))[_0x22d7('0xf')](util[_0x22d7('0xc')](_0x22d7('0x1c'),_0x3b12cd?_0x22d7('0x1d'):_0x22d7('0x1e')),_0x4e1146);}function writeLog(_0x577400,_0x5e03d5,_0x219f7c){return logger[_0x22d7('0x1f')](util[_0x22d7('0xc')](_0x22d7('0x20'),_0x577400,_0x5e03d5['name'],_0x219f7c));}exports[_0x22d7('0x21')]=function(_0x141220,_0x1b7760,_0x5b6502,_0x459827){if(_0x1b7760['busy']){writeLog(_0x141220,_0x1b7760,_0x22d7('0x22'));return![];}if(!_0x1b7760[_0x22d7('0x23')]){writeLog(_0x141220,_0x1b7760,_0x22d7('0x24'));return![];}if(_0x1b7760[_0x5b6502+'Pause']){writeLog(_0x141220,_0x1b7760,_0x22d7('0x25'));return![];}if(_0x459827&&_0x1b7760['hasOwnProperty'](_0x5b6502+'Capacity')&&_0x1b7760[_0x22d7('0x26')](_0x5b6502+_0x22d7('0x27'))){if(_0x1b7760[_0x5b6502+_0x22d7('0x28')]>0x0&&_0x1b7760[_0x5b6502+_0x22d7('0x27')]>=_0x1b7760[_0x5b6502+_0x22d7('0x28')]){writeLog(_0x141220,_0x1b7760,_0x5b6502['toUpperCase']()+_0x22d7('0x29'));return![];}}return!![];};exports[_0x22d7('0x2a')]=function(_0xfbb9b,_0xce7f15,_0x45dc29,_0x49199a,_0x2606bd){return sendNotification(!![],_0xfbb9b,_0xce7f15,_0x45dc29,_0x49199a,_0x2606bd);};exports[_0x22d7('0x2b')]=function(_0x33c621,_0x2c0b24,_0x539ba0,_0x1195bc,_0x21c334){return sendNotification(![],_0x33c621,_0x2c0b24,_0x539ba0,_0x1195bc,_0x21c334);};exports['writeLog']=writeLog;
\ No newline at end of file
index c1e98ed..783ecb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a84=['command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','error','[%s][SYSTEM]\x20%s','map','join','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','getMustacheRender','info','[%s][SYSTEM]\x20commnad:\x20%s','exec','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','isObject','stringify','validate','shelljs','lodash','./utils'];(function(_0x158f01,_0x12af3e){var _0x5ef74e=function(_0x5e7adc){while(--_0x5e7adc){_0x158f01['push'](_0x158f01['shift']());}};_0x5ef74e(++_0x12af3e);}(_0x7a84,0x182));var _0x47a8=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7a84[_0x20a584];return _0x4b41a8;};'use strict';var schema=require(_0x47a8('0x0'));var sh=require(_0x47a8('0x1'));var _=require(_0x47a8('0x2'));var utils=require(_0x47a8('0x3'));var logger=require('../../../../config/logger')('routing');var system=schema({'command':{'type':'string','required':!![],'message':_0x47a8('0x4')}});exports[_0x47a8('0x5')]=function(_0x19c7a0,_0x24595f){return function(_0x582413){try{var _0x431bc9={'command':_0x24595f[0x0]};var _0x259aca=system['validate'](_0x431bc9,{'typecast':!![]});if(_0x259aca['length']){logger[_0x47a8('0x6')](_0x47a8('0x7'),_0x19c7a0,_[_0x47a8('0x8')](_0x259aca,'message')[_0x47a8('0x9')](',\x20'));logger['info'](_0x47a8('0xa'),_0x19c7a0);_0x582413[_0x47a8('0xb')]();}else{var _0x48f142=this;var _0x1dc630=utils[_0x47a8('0xc')](_0x24595f[0x0],this);logger[_0x47a8('0xd')](_0x47a8('0xe'),_0x19c7a0,_0x1dc630);sh[_0x47a8('0xf')](_[_0x47a8('0x10')](_0x1dc630),function(_0x3bdda2,_0xc3b51){logger['info'](_0x47a8('0x11'),_0x19c7a0,_0x3bdda2);if(_0x3bdda2==0x0){var _0x1f646b=_0xc3b51[_0x47a8('0x12')](/(\r\n|\n|\r)/gm,'');if(_[_0x47a8('0x13')](_0x24595f[0x1])||_[_0x47a8('0x14')](_0x24595f[0x1])){logger[_0x47a8('0xd')](_0x47a8('0x15'),_0x19c7a0);_0x48f142[_0x47a8('0x16')][_0x24595f[0x1]]=_0x1f646b;}else{logger[_0x47a8('0xd')](_0x47a8('0x17'),_0x19c7a0,_0x24595f[0x1],_0x1f646b);_0x48f142['body'][_0x24595f[0x1]]=_0x1f646b;}}_0x582413[_0x47a8('0xb')]();});}}catch(_0x25b779){logger[_0x47a8('0x6')](_0x47a8('0x7'),_0x19c7a0,_[_0x47a8('0x18')](_0x25b779)?JSON[_0x47a8('0x19')](_0x25b779):_0x25b779);logger[_0x47a8('0xd')](_0x47a8('0xa'),_0x19c7a0);_0x582413[_0x47a8('0xb')]();}};};
\ No newline at end of file
+var _0xfb09=['length','error','[%s][SYSTEM]\x20%s','map','message','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','getMustacheRender','info','[%s][SYSTEM]\x20commnad:\x20%s','exec','trim','replace','[%s][SYSTEM]\x20no\x20variable','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','stringify','validate','lodash','routing','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required'];(function(_0xb64c15,_0x5f5b4d){var _0x1cbf37=function(_0x3bf4f8){while(--_0x3bf4f8){_0xb64c15['push'](_0xb64c15['shift']());}};_0x1cbf37(++_0x5f5b4d);}(_0xfb09,0x19d));var _0x9fb0=function(_0x5501c4,_0x50e67d){_0x5501c4=_0x5501c4-0x0;var _0x546239=_0xfb09[_0x5501c4];return _0x546239;};'use strict';var schema=require(_0x9fb0('0x0'));var sh=require('shelljs');var _=require(_0x9fb0('0x1'));var utils=require('./utils');var logger=require('../../../../config/logger')(_0x9fb0('0x2'));var system=schema({'command':{'type':_0x9fb0('0x3'),'required':!![],'message':_0x9fb0('0x4')}});exports['consequence']=function(_0x2bf0ea,_0x1c334b){return function(_0x4f5701){try{var _0x3bad46={'command':_0x1c334b[0x0]};var _0x19b030=system['validate'](_0x3bad46,{'typecast':!![]});if(_0x19b030[_0x9fb0('0x5')]){logger[_0x9fb0('0x6')](_0x9fb0('0x7'),_0x2bf0ea,_[_0x9fb0('0x8')](_0x19b030,_0x9fb0('0x9'))['join'](',\x20'));logger['info'](_0x9fb0('0xa'),_0x2bf0ea);_0x4f5701[_0x9fb0('0xb')]();}else{var _0x4fbe2f=this;var _0x1bf925=utils[_0x9fb0('0xc')](_0x1c334b[0x0],this);logger[_0x9fb0('0xd')](_0x9fb0('0xe'),_0x2bf0ea,_0x1bf925);sh[_0x9fb0('0xf')](_[_0x9fb0('0x10')](_0x1bf925),function(_0x59c38,_0x1dbf84){logger['info']('[%s][SYSTEM]\x20result\x20code:\x20%s',_0x2bf0ea,_0x59c38);if(_0x59c38==0x0){var _0x349429=_0x1dbf84[_0x9fb0('0x11')](/(\r\n|\n|\r)/gm,'');if(_['isNil'](_0x1c334b[0x1])||_['isEmpty'](_0x1c334b[0x1])){logger['info'](_0x9fb0('0x12'),_0x2bf0ea);_0x4fbe2f[_0x9fb0('0x13')][_0x1c334b[0x1]]=_0x349429;}else{logger[_0x9fb0('0xd')](_0x9fb0('0x14'),_0x2bf0ea,_0x1c334b[0x1],_0x349429);_0x4fbe2f[_0x9fb0('0x13')][_0x1c334b[0x1]]=_0x349429;}}_0x4f5701[_0x9fb0('0xb')]();});}}catch(_0x4b9712){logger[_0x9fb0('0x6')](_0x9fb0('0x7'),_0x2bf0ea,_['isObject'](_0x4b9712)?JSON[_0x9fb0('0x15')](_0x4b9712):_0x4b9712);logger[_0x9fb0('0xd')](_0x9fb0('0xa'),_0x2bf0ea);_0x4f5701['next']();}};};
\ No newline at end of file
index e2d10f5..6b3b62e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xceec=['consequence','validate','error','map','message','info','channel','Interaction','addTags','interaction','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','finally','isObject','next','lodash','../../rpc/chatInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','routing','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required'];(function(_0x139cc2,_0x4f28c0){var _0x19f8c6=function(_0x46b58d){while(--_0x46b58d){_0x139cc2['push'](_0x139cc2['shift']());}};_0x19f8c6(++_0x4f28c0);}(_0xceec,0x178));var _0xccee=function(_0x4581d0,_0x22b8b1){_0x4581d0=_0x4581d0-0x0;var _0x4f9b64=_0xceec[_0x4581d0];return _0x4f9b64;};'use strict';var schema=require('validate');var _=require(_0xccee('0x0'));var rpc={'chatInteraction':require(_0xccee('0x1')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require('../../rpc/smsInteraction'),'mailInteraction':require(_0xccee('0x2')),'faxInteraction':require(_0xccee('0x3')),'whatsappInteraction':require(_0xccee('0x4'))};var logger=require('../../../../config/logger')(_0xccee('0x5'));var tag=schema({'tag':{'type':_0xccee('0x6'),'required':!![],'message':_0xccee('0x7')}});exports[_0xccee('0x8')]=function(_0xd77cce,_0xd01291,_0x3055a1,_0x30dbd9){return function(_0x104c3b){try{var _0x486837={'tag':_0xd01291[0x0]};var _0x57bf1f=tag[_0xccee('0x9')](_0x486837,{'typecast':!![]});if(_0x57bf1f['length']){logger[_0xccee('0xa')]('[%s][TAG]\x20%s',_0xd77cce,_[_0xccee('0xb')](_0x57bf1f,_0xccee('0xc'))['join'](',\x20'));logger[_0xccee('0xd')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0xd77cce);_0x104c3b['next']();}else{var _0xa20546={'ids':[_0xd01291[0x0]]};if(rpc[_0x30dbd9[_0xccee('0xe')]+_0xccee('0xf')]){rpc[_0x30dbd9['channel']+_0xccee('0xf')][_0xccee('0x10')](_0x30dbd9[_0xccee('0x11')]['id'],_0xa20546)['then'](function(_0x9bba98){logger[_0xccee('0xd')](_0xccee('0x12'),_0xd77cce,_0xd01291[0x1],_0x30dbd9[_0xccee('0xe')],_0x30dbd9[_0xccee('0x11')]['id']);})[_0xccee('0x13')](function(_0x590ed1){logger[_0xccee('0xa')]('[%s][TAG]\x20%s',_0xd77cce,JSON['stringify'](_0x590ed1));logger[_0xccee('0xd')](_0xccee('0x14'),_0xd77cce);})[_0xccee('0x15')](function(){_0x104c3b['next']();});}}}catch(_0x2ae21f){logger[_0xccee('0xa')]('[%s][TAG]\x20%s',_0xd77cce,_[_0xccee('0x16')](_0x2ae21f)?JSON['stringify'](_0x2ae21f):_0x2ae21f);logger[_0xccee('0xd')](_0xccee('0x14'),_0xd77cce);_0x104c3b[_0xccee('0x17')]();}};};
\ No newline at end of file
+var _0xf53d=['info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','next','channel','Interaction','addTags','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','error','stringify','finally','isObject','validate','lodash','../../rpc/chatInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger','routing','number','consequence','[%s][TAG]\x20%s'];(function(_0x5e8c92,_0x38fe8d){var _0x48686f=function(_0x7a53a6){while(--_0x7a53a6){_0x5e8c92['push'](_0x5e8c92['shift']());}};_0x48686f(++_0x38fe8d);}(_0xf53d,0x193));var _0xdf53=function(_0x19ef5d,_0x3e44c7){_0x19ef5d=_0x19ef5d-0x0;var _0x57f6f0=_0xf53d[_0x19ef5d];return _0x57f6f0;};'use strict';var schema=require(_0xdf53('0x0'));var _=require(_0xdf53('0x1'));var rpc={'chatInteraction':require(_0xdf53('0x2')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require(_0xdf53('0x3')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0xdf53('0x4')),'whatsappInteraction':require(_0xdf53('0x5'))};var logger=require(_0xdf53('0x6'))(_0xdf53('0x7'));var tag=schema({'tag':{'type':_0xdf53('0x8'),'required':!![],'message':'TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0xdf53('0x9')]=function(_0xe44035,_0x5a2494,_0x3a2f3d,_0x1e5351){return function(_0xf287de){try{var _0x468b74={'tag':_0x5a2494[0x0]};var _0x3a9c42=tag['validate'](_0x468b74,{'typecast':!![]});if(_0x3a9c42['length']){logger['error'](_0xdf53('0xa'),_0xe44035,_['map'](_0x3a9c42,'message')['join'](',\x20'));logger[_0xdf53('0xb')](_0xdf53('0xc'),_0xe44035);_0xf287de[_0xdf53('0xd')]();}else{var _0x38898e={'ids':[_0x5a2494[0x0]]};if(rpc[_0x1e5351[_0xdf53('0xe')]+_0xdf53('0xf')]){rpc[_0x1e5351[_0xdf53('0xe')]+_0xdf53('0xf')][_0xdf53('0x10')](_0x1e5351['interaction']['id'],_0x38898e)[_0xdf53('0x11')](function(_0x4bacf6){logger[_0xdf53('0xb')](_0xdf53('0x12'),_0xe44035,_0x5a2494[0x1],_0x1e5351[_0xdf53('0xe')],_0x1e5351['interaction']['id']);})['catch'](function(_0x53ab15){logger[_0xdf53('0x13')](_0xdf53('0xa'),_0xe44035,JSON[_0xdf53('0x14')](_0x53ab15));logger[_0xdf53('0xb')](_0xdf53('0xc'),_0xe44035);})[_0xdf53('0x15')](function(){_0xf287de[_0xdf53('0xd')]();});}}}catch(_0x5cdc63){logger[_0xdf53('0x13')]('[%s][TAG]\x20%s',_0xe44035,_[_0xdf53('0x16')](_0x5cdc63)?JSON['stringify'](_0x5cdc63):_0x5cdc63);logger['info']('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0xe44035);_0xf287de[_0xdf53('0xd')]();}};};
\ No newline at end of file
index 959ad1a..5276b89 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(_0x44c2eb,_0x3b5a6f){var _0x4a64b3=function(_0x14165e){while(--_0x14165e){_0x44c2eb['push'](_0x44c2eb['shift']());}};_0x4a64b3(++_0x3b5a6f);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var Mustache=require(_0x0d8b('0x0'));var _=require(_0x0d8b('0x1'));module['exports']={'getMustacheRender':function(_0x585166,_0x4b72b0){return Mustache[_0x0d8b('0x2')](_0x585166,_[_0x0d8b('0x3')](_0x4b72b0[_0x0d8b('0x4')],{'contact':_0x4b72b0[_0x0d8b('0x5')],'message':_0x4b72b0[_0x0d8b('0x6')],'account':_0x4b72b0['account'],'interaction':_0x4b72b0['interaction'],'list':_0x4b72b0[_0x0d8b('0x7')]}))||'';}};
\ No newline at end of file
+var _0xbaf0=['list','lodash','exports','render','merge','contact','message','account','interaction'];(function(_0x321d7e,_0x1c51db){var _0xf333b4=function(_0x5b8bbd){while(--_0x5b8bbd){_0x321d7e['push'](_0x321d7e['shift']());}};_0xf333b4(++_0x1c51db);}(_0xbaf0,0x12a));var _0x0baf=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xbaf0[_0x501510];return _0x1e6ee5;};'use strict';var Mustache=require('mustache');var _=require(_0x0baf('0x0'));module[_0x0baf('0x1')]={'getMustacheRender':function(_0x1e212d,_0x263f79){return Mustache[_0x0baf('0x2')](_0x1e212d,_[_0x0baf('0x3')](_0x263f79['body'],{'contact':_0x263f79[_0x0baf('0x4')],'message':_0x263f79[_0x0baf('0x5')],'account':_0x263f79[_0x0baf('0x6')],'interaction':_0x263f79[_0x0baf('0x7')],'list':_0x263f79[_0x0baf('0x8')]}))||'';}};
\ No newline at end of file
index 621576d..70c9254 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1c9=['available','name','paused','waiting','mailQueues','openchannelQueues','loggedIn','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http','stringify','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','path','jayson/promise','bluebird','uuid','../../../config/environment','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','%s.%s.%s','IntervalId','isNil','Intervals','map','interval','rules','channel','message','interaction','isArray','applications','length','existsSync','join','app','.js','autoreply','split','mail','slice','push','appdata','dialogflowv2','amazonlex','tag','TagId','format','%s:%s:%s','./interval','condition','./applications/','consequence','Push\x20new\x20rule','on\x20interval','intervals','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','execute','Applications\x20executed','emit','complete','info','No\x20applications\x20to\x20execute','routing\x20is\x20empty','agent','agents','busy','busyQueue','end','QueueReport','UserId','catch','error\x20update\x20queue\x20report','stack','message\x20is\x20empty','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','chatQueues'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0xd1c9,0x7c));var _0x9d1c=function(_0x4a209a,_0x575ff9){_0x4a209a=_0x4a209a-0x0;var _0x4b3c20=_0xd1c9[_0x4a209a];return _0x4b3c20;};'use strict';var _=require(_0x9d1c('0x0'));var util=require(_0x9d1c('0x1'));var path=require(_0x9d1c('0x2'));var fs=require('fs');var jayson=require(_0x9d1c('0x3'));var BPromise=require(_0x9d1c('0x4'));var uuid=require(_0x9d1c('0x5'));var config=require(_0x9d1c('0x6'));var logger=require(_0x9d1c('0x7'))(_0x9d1c('0x8'));var rpc={'openchannelQueueReport':require(_0x9d1c('0x9')),'mailQueueReport':require(_0x9d1c('0xa')),'chatQueueReport':require(_0x9d1c('0xb')),'smsQueueReport':require(_0x9d1c('0xc')),'faxQueueReport':require(_0x9d1c('0xd')),'whatsappQueueReport':require(_0x9d1c('0xe'))};var RuleEngine=require(_0x9d1c('0xf'));function getId(_0x83db27,_0xd908a4,_0x5ea6dc){return util['format'](_0x9d1c('0x10'),_0x83db27,_0xd908a4||0x0,_0x5ea6dc||0x0);}function getIntervals(_0x4ec974,_0x160ac1){var _0x27c498=[];if(!_['isNil'](_0x160ac1[_0x9d1c('0x11')])&&!_[_0x9d1c('0x12')](_0x4ec974[_0x160ac1[_0x9d1c('0x11')]])&&!_[_0x9d1c('0x12')](_0x4ec974[_0x160ac1[_0x9d1c('0x11')]][_0x9d1c('0x13')])){_0x27c498=_[_0x9d1c('0x14')](_0x4ec974[_0x160ac1[_0x9d1c('0x11')]][_0x9d1c('0x13')],_0x9d1c('0x15'));}else if(!_[_0x9d1c('0x12')](_0x160ac1[_0x9d1c('0x15')])){_0x27c498=[_0x160ac1[_0x9d1c('0x15')]];}return _0x27c498;}exports['listen']=function(_0x55428d){_0x55428d[_0x9d1c('0x16')]={};return new BPromise(function(_0x407aa9,_0x348b30){var _0x4eba82={'Start':function(_0x5141b1){var _0x429758=this;return new Promise(function(_0x4c0bfe,_0x233d21){if(_0x5141b1){try{var _0x19c0c7=[];var _0x4e9cd5=getId(_0x5141b1[_0x9d1c('0x17')],_0x5141b1['message']?_0x5141b1[_0x9d1c('0x18')]['id']:0x0,_0x5141b1[_0x9d1c('0x19')]?_0x5141b1['interaction']['id']:0x0);if(_0x5141b1['applications']&&_[_0x9d1c('0x1a')](_0x5141b1[_0x9d1c('0x1b')])&&_0x5141b1[_0x9d1c('0x1b')][_0x9d1c('0x1c')]){for(var _0x5e7086=0x0;_0x5e7086<_0x5141b1[_0x9d1c('0x1b')][_0x9d1c('0x1c')];_0x5e7086+=0x1){var _0x4bd142=_0x5141b1['applications'][_0x5e7086];if(fs[_0x9d1c('0x1d')](path[_0x9d1c('0x1e')](__dirname,_0x9d1c('0x1b'),_0x4bd142[_0x9d1c('0x1f')]+_0x9d1c('0x20')))){var _0x1158c7=[];switch(_0x4bd142[_0x9d1c('0x1f')]['toLowerCase']()){case _0x9d1c('0x21'):var _0x5bf36a=_0x4bd142['appdata'][_0x9d1c('0x22')](',');if(_0x5141b1['channel']===_0x9d1c('0x23')){_0x1158c7['push'](_0x5bf36a[0x0]);_0x1158c7['push'](_0x5bf36a[0x1]);_0x1158c7['push'](_0x5bf36a[_0x9d1c('0x24')](0x2,_0x5bf36a[_0x9d1c('0x1c')])[_0x9d1c('0x1e')](','));}else{_0x1158c7[_0x9d1c('0x25')](_0x5bf36a[0x0]);_0x1158c7[_0x9d1c('0x25')](_0x5bf36a[_0x9d1c('0x24')](0x1,_0x5bf36a[_0x9d1c('0x1c')])[_0x9d1c('0x1e')](','));}break;case'dialogflow':var _0x2f11bb=_0x4bd142[_0x9d1c('0x26')]['split'](',');_0x1158c7[_0x9d1c('0x25')](_0x2f11bb[0x0]);_0x1158c7['push'](_0x2f11bb[0x1]);_0x1158c7[_0x9d1c('0x25')](_0x2f11bb['slice'](0x2,_0x2f11bb[_0x9d1c('0x1c')])['join'](','));break;case _0x9d1c('0x27'):var _0x5664d2=_0x4bd142[_0x9d1c('0x26')][_0x9d1c('0x22')](',');_0x1158c7['push'](_0x5664d2[0x0]);_0x1158c7[_0x9d1c('0x25')](_0x5664d2[0x1]);_0x1158c7[_0x9d1c('0x25')](_0x5664d2[0x2]);_0x1158c7[_0x9d1c('0x25')](_0x5664d2[0x3]);_0x1158c7[_0x9d1c('0x25')](_0x5664d2[_0x9d1c('0x24')](0x4,_0x5664d2[_0x9d1c('0x1c')])[_0x9d1c('0x1e')](','));break;case _0x9d1c('0x28'):var _0x11baee=_0x4bd142[_0x9d1c('0x26')]['split'](',');_0x1158c7[_0x9d1c('0x25')](_0x11baee[0x0]);_0x1158c7[_0x9d1c('0x25')](_0x11baee[0x1]);_0x1158c7[_0x9d1c('0x25')](_0x11baee[0x2]);_0x1158c7['push'](_0x11baee[0x3]);_0x1158c7[_0x9d1c('0x25')](_0x11baee['slice'](0x4,_0x11baee[_0x9d1c('0x1c')])[_0x9d1c('0x1e')](','));break;case _0x9d1c('0x18'):_0x1158c7[_0x9d1c('0x25')](_0x4bd142[_0x9d1c('0x26')]);break;case _0x9d1c('0x29'):_0x1158c7[_0x9d1c('0x25')](_0x4bd142[_0x9d1c('0x2a')]);_0x1158c7['push'](_0x4bd142[_0x9d1c('0x26')]);break;default:_0x1158c7=_[_0x9d1c('0x12')](_0x4bd142[_0x9d1c('0x26')])?[]:_0x4bd142[_0x9d1c('0x26')][_0x9d1c('0x22')](',');}var _0x5626e7={'id':util[_0x9d1c('0x2b')](_0x9d1c('0x2c'),_0x4e9cd5,_0x4bd142['id'],_0x4bd142[_0x9d1c('0x1f')]),'condition':require(_0x9d1c('0x2d'))[_0x9d1c('0x2e')](_0x4e9cd5,getIntervals(_0x55428d['intervals'],_0x4bd142),_0x55428d),'consequence':require(_0x9d1c('0x2f')+_0x4bd142['app'])[_0x9d1c('0x30')](_0x4e9cd5,_0x1158c7,_0x55428d,_0x5141b1),'p':_0x4bd142['priority']||0x0};logger['info'](_0x9d1c('0x31'),_0x5626e7['id'],_0x9d1c('0x32'),getIntervals(_0x55428d[_0x9d1c('0x33')],_0x4bd142)[_0x9d1c('0x1e')](_0x9d1c('0x34')));_0x19c0c7[_0x9d1c('0x25')](_0x5626e7);}else{logger[_0x9d1c('0x35')](_0x9d1c('0x36'),path[_0x9d1c('0x1e')](__dirname,_0x9d1c('0x1b'),_0x4bd142[_0x9d1c('0x1f')]+_0x9d1c('0x20')));}}_0x55428d[_0x9d1c('0x16')][_0x4e9cd5]=new RuleEngine(_0x19c0c7);_0x55428d['rules'][_0x4e9cd5][_0x9d1c('0x37')](_0x5141b1,function(_0x5da86d){logger['info'](_0x9d1c('0x38'),JSON['stringify'](_0x5da86d['matchPath']));if(_0x55428d[_0x9d1c('0x16')][_0x4e9cd5]){_0x55428d[_0x9d1c('0x16')][_0x4e9cd5][_0x9d1c('0x39')](_0x9d1c('0x3a'));}});return _0x4c0bfe({'code':0xc8,'message':_0x5141b1});}else{logger[_0x9d1c('0x3b')](_0x9d1c('0x3c'));return _0x4c0bfe({'code':0xc8,'message':_0x5141b1});}}catch(_0x5cc523){logger[_0x9d1c('0x35')](_0x5cc523['stack']);return _0x233d21(_0x429758['error'](0x1f4,_0x5cc523));}}return _0x233d21(_0x9d1c('0x3d'));});},'AcceptMessage':function(_0x5ccb95){var _0x5ad23b=this;return new Promise(function(_0x796e0d,_0x2c6d19){if(_0x5ccb95[_0x9d1c('0x3e')]&&_0x5ccb95[_0x9d1c('0x3e')]['id']){if(_0x55428d[_0x9d1c('0x3f')][_0x5ccb95['agent']['id']]){_0x55428d[_0x9d1c('0x3f')][_0x5ccb95[_0x9d1c('0x3e')]['id']][_0x9d1c('0x40')]=![];_0x55428d[_0x9d1c('0x3f')][_0x5ccb95[_0x9d1c('0x3e')]['id']][_0x9d1c('0x41')]=undefined;}}if(_0x5ccb95[_0x9d1c('0x18')]&&_0x5ccb95[_0x9d1c('0x18')]['id']){try{var _0x53f912=getId(_0x5ccb95['channel'],_0x5ccb95[_0x9d1c('0x18')]?_0x5ccb95[_0x9d1c('0x18')]['id']:0x0,_0x5ccb95['interaction']?_0x5ccb95['interaction']['id']:0x0);if(_0x55428d['rules'][_0x53f912]){_0x55428d[_0x9d1c('0x16')][_0x53f912][_0x9d1c('0x39')](_0x9d1c('0x42'));if(rpc[_0x5ccb95['channel']+'QueueReport']){rpc[_0x5ccb95['channel']+_0x9d1c('0x43')]['update'](_0x53f912,{'UserId':_0x5ccb95[_0x9d1c('0x18')][_0x9d1c('0x44')]})[_0x9d1c('0x45')](function(_0x5e7fa3){logger[_0x9d1c('0x35')](_0x9d1c('0x46'));});}}return _0x796e0d({'code':0xc8,'message':_0x5ccb95});}catch(_0x23b4b8){logger[_0x9d1c('0x35')](_0x23b4b8[_0x9d1c('0x47')]);return _0x2c6d19(_0x5ad23b[_0x9d1c('0x35')](0x1f4,_0x23b4b8));}}logger[_0x9d1c('0x35')]('message\x20is\x20empty');return _0x2c6d19(_0x5ad23b[_0x9d1c('0x35')](0x1f4,_0x9d1c('0x48')));});},'RejectMessage':function(_0x27858c){var _0x2292b5=this;return new Promise(function(_0x4a8636,_0x57795d){if(_0x27858c[_0x9d1c('0x3e')]&&_0x27858c['agent']['id']){try{if(_0x55428d[_0x9d1c('0x3f')][_0x27858c[_0x9d1c('0x3e')]['id']]){_0x55428d[_0x9d1c('0x3f')][_0x27858c[_0x9d1c('0x3e')]['id']][_0x9d1c('0x40')]=![];_0x55428d[_0x9d1c('0x3f')][_0x27858c['agent']['id']][_0x9d1c('0x41')]=undefined;}return _0x4a8636({'code':0xc8,'message':_0x27858c});}catch(_0x558707){logger[_0x9d1c('0x35')](_0x558707[_0x9d1c('0x47')]);return _0x57795d(_0x2292b5[_0x9d1c('0x35')](0x1f4,_0x558707));}}logger[_0x9d1c('0x35')](_0x9d1c('0x48'));return _0x57795d(_0x2292b5['error'](0x1f4,_0x9d1c('0x48')));});},'AbandonInteraction':function(_0x22e2df){var _0x324d4d=this;return new Promise(function(_0x16ad77,_0x59d8ac){if(_0x22e2df['channel']&&_0x22e2df['interaction']&&_0x22e2df['interaction']['id']){try{var _0x5835d6=getId(_0x22e2df[_0x9d1c('0x17')],_0x22e2df[_0x9d1c('0x18')]?_0x22e2df[_0x9d1c('0x18')]['id']:0x0,_0x22e2df['interaction']?_0x22e2df['interaction']['id']:0x0);if(_0x55428d['rules'][_0x5835d6]){_0x55428d['rules'][_0x5835d6]['emit']('end');}return _0x16ad77({'code':0xc8,'message':_0x22e2df});}catch(_0x232d45){logger[_0x9d1c('0x35')](_0x232d45[_0x9d1c('0x47')]);return _0x59d8ac(_0x324d4d[_0x9d1c('0x35')](0x1f4,_0x232d45));}}logger[_0x9d1c('0x35')](_0x9d1c('0x48'));return _0x59d8ac(_0x324d4d[_0x9d1c('0x35')](0x1f4,_0x9d1c('0x48')));});},'AgentCapacity':function(_0x48982e){var _0x3a5ed4=this;return new Promise(function(_0x4ec8da,_0x49089d){if(_0x55428d[_0x9d1c('0x3f')][_0x9d1c('0x49')](_0x48982e['id'])){for(var _0xd08b76 in _0x48982e['capacity']){if(_0x48982e[_0x9d1c('0x4a')]['hasOwnProperty'](_0xd08b76)){if(_0x55428d['agents'][_0x48982e['id']][_0x9d1c('0x49')](_0xd08b76+_0x9d1c('0x4b'))){_0x55428d[_0x9d1c('0x3f')][_0x48982e['id']][_0xd08b76+_0x9d1c('0x4b')]=parseInt(_0x48982e[_0x9d1c('0x4a')][_0xd08b76],0xa);}}}_0x55428d[_0x9d1c('0x3f')][_0x48982e['id']][_0x9d1c('0x4c')]();return _0x4ec8da({'code':0xc8,'message':_0x55428d[_0x9d1c('0x3f')][_0x48982e['id']]});}else{return _0x49089d(_0x3a5ed4['error'](0x1f4,_0x9d1c('0x4d')));}});},'Agents':function(_0x36a329){return new Promise(function(_0x27ce55,_0x34a2fd){var _0x3800bf=_[_0x9d1c('0x4e')](_0x55428d['agents']);_0x27ce55({'count':_0x3800bf[_0x9d1c('0x1c')],'rows':_0x3800bf});});},'ChatQueues':function(_0x315635){return new Promise(function(_0x510e20,_0x29b0d9){var _0x5a4730=[];for(var _0x4dd614 in _0x55428d['chatQueues']){if(_0x55428d['chatQueues'][_0x9d1c('0x49')](_0x4dd614)){var _0x13f9f4=_0x55428d[_0x9d1c('0x4f')][_0x4dd614];var _0x4f410d={'id':_0x13f9f4['id'],'available':_0x13f9f4[_0x9d1c('0x50')],'loggedIn':_0x13f9f4['loggedIn'],'name':_0x13f9f4[_0x9d1c('0x51')],'paused':_0x13f9f4[_0x9d1c('0x52')],'waiting':_0x13f9f4[_0x9d1c('0x53')]};_0x5a4730[_0x9d1c('0x25')](_0x4f410d);}}_0x510e20({'count':_0x5a4730['length'],'rows':_0x5a4730});});},'MailQueues':function(_0x530df4){return new Promise(function(_0x15bc5a,_0x2dabba){var _0x40daf0=[];for(var _0x3a6772 in _0x55428d[_0x9d1c('0x54')]){if(_0x55428d[_0x9d1c('0x54')][_0x9d1c('0x49')](_0x3a6772)){var _0x18bdab=_0x55428d[_0x9d1c('0x54')][_0x3a6772];var _0x2f57d0={'id':_0x18bdab['id'],'available':_0x18bdab[_0x9d1c('0x50')],'loggedIn':_0x18bdab['loggedIn'],'name':_0x18bdab['name'],'paused':_0x18bdab[_0x9d1c('0x52')],'waiting':_0x18bdab[_0x9d1c('0x53')]};_0x40daf0['push'](_0x2f57d0);}}_0x15bc5a({'count':_0x40daf0[_0x9d1c('0x1c')],'rows':_0x40daf0});});},'OpenchannelQueues':function(_0x3e08e6){return new Promise(function(_0x432c45,_0x5b7eb1){var _0x305580=[];for(var _0x5b71a7 in _0x55428d['openchannelQueues']){if(_0x55428d[_0x9d1c('0x55')][_0x9d1c('0x49')](_0x5b71a7)){var _0x446583=_0x55428d[_0x9d1c('0x55')][_0x5b71a7];var _0xab2eeb={'id':_0x446583['id'],'available':_0x446583['available'],'loggedIn':_0x446583[_0x9d1c('0x56')],'name':_0x446583[_0x9d1c('0x51')],'paused':_0x446583[_0x9d1c('0x52')],'waiting':_0x446583[_0x9d1c('0x53')]};_0x305580[_0x9d1c('0x25')](_0xab2eeb);}}_0x432c45({'count':_0x305580[_0x9d1c('0x1c')],'rows':_0x305580});});},'SmsQueues':function(_0x26a655){return new Promise(function(_0x116802,_0x2d2d94){var _0x2fdaf1=[];for(var _0xa840ea in _0x55428d[_0x9d1c('0x57')]){if(_0x55428d[_0x9d1c('0x57')][_0x9d1c('0x49')](_0xa840ea)){var _0x3574f7=_0x55428d[_0x9d1c('0x57')][_0xa840ea];var _0x379191={'id':_0x3574f7['id'],'available':_0x3574f7[_0x9d1c('0x50')],'loggedIn':_0x3574f7[_0x9d1c('0x56')],'name':_0x3574f7[_0x9d1c('0x51')],'paused':_0x3574f7[_0x9d1c('0x52')],'waiting':_0x3574f7[_0x9d1c('0x53')]};_0x2fdaf1[_0x9d1c('0x25')](_0x379191);}}_0x116802({'count':_0x2fdaf1[_0x9d1c('0x1c')],'rows':_0x2fdaf1});});},'FaxQueues':function(_0x51394d){return new Promise(function(_0x342dcb,_0x134bfc){var _0x36f16c=[];for(var _0x1e710c in _0x55428d[_0x9d1c('0x58')]){if(_0x55428d[_0x9d1c('0x58')][_0x9d1c('0x49')](_0x1e710c)){var _0x3a1ec4=_0x55428d['faxQueues'][_0x1e710c];var _0x59560e={'id':_0x3a1ec4['id'],'available':_0x3a1ec4[_0x9d1c('0x50')],'loggedIn':_0x3a1ec4['loggedIn'],'name':_0x3a1ec4[_0x9d1c('0x51')],'paused':_0x3a1ec4[_0x9d1c('0x52')],'waiting':_0x3a1ec4['waiting']};_0x36f16c[_0x9d1c('0x25')](_0x59560e);}}_0x342dcb({'count':_0x36f16c['length'],'rows':_0x36f16c});});},'WhatsappQueues':function(_0x5d3689){return new Promise(function(_0x3a2d16,_0x1646c8){var _0xf39767=[];for(var _0x2e7a17 in _0x55428d['whatsappQueues']){if(_0x55428d[_0x9d1c('0x59')][_0x9d1c('0x49')](_0x2e7a17)){var _0x18ae81=_0x55428d[_0x9d1c('0x59')][_0x2e7a17];var _0x16bb5e={'id':_0x18ae81['id'],'available':_0x18ae81[_0x9d1c('0x50')],'loggedIn':_0x18ae81[_0x9d1c('0x56')],'name':_0x18ae81[_0x9d1c('0x51')],'paused':_0x18ae81['paused'],'waiting':_0x18ae81[_0x9d1c('0x53')]};_0xf39767[_0x9d1c('0x25')](_0x16bb5e);}}_0x3a2d16({'count':_0xf39767[_0x9d1c('0x1c')],'rows':_0xf39767});});},'ChatQueuesWaitingInteractions':function(_0xa1c570){return new Promise(function(_0x9fbb48,_0xff4dc4){var _0x3179c8=_['values'](_0x55428d[_0x9d1c('0x5a')]);_0x9fbb48({'count':_0x3179c8[_0x9d1c('0x1c')],'rows':_0x3179c8});});},'MailQueuesWaitingInteractions':function(_0x166752){return new Promise(function(_0x3bc782,_0x5f4161){var _0x241ed3=_['values'](_0x55428d[_0x9d1c('0x5b')]);_0x3bc782({'count':_0x241ed3[_0x9d1c('0x1c')],'rows':_0x241ed3});});},'OpenchannelQueuesWaitingInteractions':function(_0x5c8c91){return new Promise(function(_0x5ba912,_0x4b527d){var _0x3fc60d=_[_0x9d1c('0x4e')](_0x55428d[_0x9d1c('0x5c')]);_0x5ba912({'count':_0x3fc60d[_0x9d1c('0x1c')],'rows':_0x3fc60d});});},'SmsQueuesWaitingInteractions':function(_0x4546a7){return new Promise(function(_0x223171,_0x5148cb){var _0x237606=_['values'](_0x55428d[_0x9d1c('0x5d')]);_0x223171({'count':_0x237606['length'],'rows':_0x237606});});},'FaxQueuesWaitingInteractions':function(_0x5cbd73){return new Promise(function(_0x40f76e,_0x560b71){var _0xac1f96=_['values'](_0x55428d['faxQueuesWaitingInteractions']);_0x40f76e({'count':_0xac1f96['length'],'rows':_0xac1f96});});},'WhatsappQueuesWaitingInteractions':function(_0x2d8c95){return new Promise(function(_0x1fa0f2,_0x3578ed){var _0xc6c7aa=_['values'](_0x55428d[_0x9d1c('0x5e')]);_0x1fa0f2({'count':_0xc6c7aa[_0x9d1c('0x1c')],'rows':_0xc6c7aa});});}};var _0x5420c0=jayson[_0x9d1c('0x5f')](_0x4eba82)[_0x9d1c('0x60')]();_0x5420c0['on'](_0x9d1c('0x35'),function(_0x54b061){logger[_0x9d1c('0x35')](JSON[_0x9d1c('0x61')](_0x54b061));return _0x348b30(_0x54b061);});_0x5420c0['listen'](0x232c,_0x9d1c('0x62'),function(){console[_0x9d1c('0x63')](_0x9d1c('0x64'),0x232c);return _0x407aa9(_0x9d1c('0x65')+0x232c);});});};
\ No newline at end of file
+var _0xc26d=['bluebird','../../../config/environment','routing','../rpc/openchannelQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','%s.%s.%s','IntervalId','isNil','Intervals','interval','listen','channel','message','interaction','applications','length','app','toLowerCase','appdata','split','push','slice','join','dialogflowv2','tag','format','%s:%s:%s','./interval','condition','intervals','priority','info','Push\x20new\x20rule','\x20|\x20','error','.js','rules','execute','Applications\x20executed','stringify','matchPath','emit','complete','No\x20applications\x20to\x20execute','stack','routing\x20is\x20empty','agent','agents','end','update','UserId','error\x20update\x20queue\x20report','message\x20is\x20empty','busy','busyQueue','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','values','chatQueues','loggedIn','paused','waiting','mailQueues','name','openchannelQueues','available','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','log','RPC\x20listening\x20on\x20port:','lodash','util','path','jayson/promise'];(function(_0xb0bc32,_0x1e1409){var _0xdab0e2=function(_0x3035a){while(--_0x3035a){_0xb0bc32['push'](_0xb0bc32['shift']());}};_0xdab0e2(++_0x1e1409);}(_0xc26d,0x148));var _0xdc26=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xc26d[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xdc26('0x0'));var util=require(_0xdc26('0x1'));var path=require(_0xdc26('0x2'));var fs=require('fs');var jayson=require(_0xdc26('0x3'));var BPromise=require(_0xdc26('0x4'));var uuid=require('uuid');var config=require(_0xdc26('0x5'));var logger=require('../../../config/logger')(_0xdc26('0x6'));var rpc={'openchannelQueueReport':require(_0xdc26('0x7')),'mailQueueReport':require('../rpc/mailQueueReport'),'chatQueueReport':require('../rpc/chatQueueReport'),'smsQueueReport':require('../rpc/smsQueueReport'),'faxQueueReport':require('../rpc/faxQueueReport'),'whatsappQueueReport':require(_0xdc26('0x8'))};var RuleEngine=require(_0xdc26('0x9'));function getId(_0x4e8e04,_0x3c1474,_0x3eba82){return util['format'](_0xdc26('0xa'),_0x4e8e04,_0x3c1474||0x0,_0x3eba82||0x0);}function getIntervals(_0x99b0f4,_0x3567c3){var _0x359dc4=[];if(!_['isNil'](_0x3567c3[_0xdc26('0xb')])&&!_[_0xdc26('0xc')](_0x99b0f4[_0x3567c3[_0xdc26('0xb')]])&&!_[_0xdc26('0xc')](_0x99b0f4[_0x3567c3[_0xdc26('0xb')]]['Intervals'])){_0x359dc4=_['map'](_0x99b0f4[_0x3567c3[_0xdc26('0xb')]][_0xdc26('0xd')],'interval');}else if(!_[_0xdc26('0xc')](_0x3567c3[_0xdc26('0xe')])){_0x359dc4=[_0x3567c3[_0xdc26('0xe')]];}return _0x359dc4;}exports[_0xdc26('0xf')]=function(_0x3ba678){_0x3ba678['rules']={};return new BPromise(function(_0x1b261e,_0x4f2c85){var _0x34cc7b={'Start':function(_0x155b7c){var _0x314bb0=this;return new Promise(function(_0x314132,_0xe435b){if(_0x155b7c){try{var _0x5f2222=[];var _0x2cb271=getId(_0x155b7c[_0xdc26('0x10')],_0x155b7c[_0xdc26('0x11')]?_0x155b7c[_0xdc26('0x11')]['id']:0x0,_0x155b7c[_0xdc26('0x12')]?_0x155b7c[_0xdc26('0x12')]['id']:0x0);if(_0x155b7c['applications']&&_['isArray'](_0x155b7c[_0xdc26('0x13')])&&_0x155b7c['applications'][_0xdc26('0x14')]){for(var _0x412e0e=0x0;_0x412e0e<_0x155b7c[_0xdc26('0x13')]['length'];_0x412e0e+=0x1){var _0x59c7c5=_0x155b7c['applications'][_0x412e0e];if(fs['existsSync'](path['join'](__dirname,_0xdc26('0x13'),_0x59c7c5['app']+'.js'))){var _0x14eb49=[];switch(_0x59c7c5[_0xdc26('0x15')][_0xdc26('0x16')]()){case'autoreply':var _0x56ba8d=_0x59c7c5[_0xdc26('0x17')][_0xdc26('0x18')](',');if(_0x155b7c[_0xdc26('0x10')]==='mail'){_0x14eb49[_0xdc26('0x19')](_0x56ba8d[0x0]);_0x14eb49[_0xdc26('0x19')](_0x56ba8d[0x1]);_0x14eb49[_0xdc26('0x19')](_0x56ba8d['slice'](0x2,_0x56ba8d[_0xdc26('0x14')])['join'](','));}else{_0x14eb49[_0xdc26('0x19')](_0x56ba8d[0x0]);_0x14eb49['push'](_0x56ba8d['slice'](0x1,_0x56ba8d[_0xdc26('0x14')])['join'](','));}break;case'dialogflow':var _0x282c4d=_0x59c7c5[_0xdc26('0x17')][_0xdc26('0x18')](',');_0x14eb49[_0xdc26('0x19')](_0x282c4d[0x0]);_0x14eb49[_0xdc26('0x19')](_0x282c4d[0x1]);_0x14eb49[_0xdc26('0x19')](_0x282c4d[_0xdc26('0x1a')](0x2,_0x282c4d[_0xdc26('0x14')])[_0xdc26('0x1b')](','));break;case _0xdc26('0x1c'):var _0x5e8d2f=_0x59c7c5[_0xdc26('0x17')][_0xdc26('0x18')](',');_0x14eb49['push'](_0x5e8d2f[0x0]);_0x14eb49[_0xdc26('0x19')](_0x5e8d2f[0x1]);_0x14eb49[_0xdc26('0x19')](_0x5e8d2f[0x2]);_0x14eb49[_0xdc26('0x19')](_0x5e8d2f[0x3]);_0x14eb49['push'](_0x5e8d2f['slice'](0x4,_0x5e8d2f['length'])['join'](','));break;case'amazonlex':var _0x100fb1=_0x59c7c5[_0xdc26('0x17')]['split'](',');_0x14eb49['push'](_0x100fb1[0x0]);_0x14eb49[_0xdc26('0x19')](_0x100fb1[0x1]);_0x14eb49[_0xdc26('0x19')](_0x100fb1[0x2]);_0x14eb49[_0xdc26('0x19')](_0x100fb1[0x3]);_0x14eb49[_0xdc26('0x19')](_0x100fb1[_0xdc26('0x1a')](0x4,_0x100fb1[_0xdc26('0x14')])[_0xdc26('0x1b')](','));break;case _0xdc26('0x11'):_0x14eb49['push'](_0x59c7c5[_0xdc26('0x17')]);break;case _0xdc26('0x1d'):_0x14eb49[_0xdc26('0x19')](_0x59c7c5['TagId']);_0x14eb49['push'](_0x59c7c5['appdata']);break;default:_0x14eb49=_[_0xdc26('0xc')](_0x59c7c5[_0xdc26('0x17')])?[]:_0x59c7c5[_0xdc26('0x17')][_0xdc26('0x18')](',');}var _0x1537a6={'id':util[_0xdc26('0x1e')](_0xdc26('0x1f'),_0x2cb271,_0x59c7c5['id'],_0x59c7c5[_0xdc26('0x15')]),'condition':require(_0xdc26('0x20'))[_0xdc26('0x21')](_0x2cb271,getIntervals(_0x3ba678[_0xdc26('0x22')],_0x59c7c5),_0x3ba678),'consequence':require('./applications/'+_0x59c7c5[_0xdc26('0x15')])['consequence'](_0x2cb271,_0x14eb49,_0x3ba678,_0x155b7c),'p':_0x59c7c5[_0xdc26('0x23')]||0x0};logger[_0xdc26('0x24')](_0xdc26('0x25'),_0x1537a6['id'],'on\x20interval',getIntervals(_0x3ba678['intervals'],_0x59c7c5)['join'](_0xdc26('0x26')));_0x5f2222['push'](_0x1537a6);}else{logger[_0xdc26('0x27')]('Please\x20create\x20a\x20new\x20file\x20under',path['join'](__dirname,_0xdc26('0x13'),_0x59c7c5[_0xdc26('0x15')]+_0xdc26('0x28')));}}_0x3ba678[_0xdc26('0x29')][_0x2cb271]=new RuleEngine(_0x5f2222);_0x3ba678[_0xdc26('0x29')][_0x2cb271][_0xdc26('0x2a')](_0x155b7c,function(_0x2b72c2){logger['info'](_0xdc26('0x2b'),JSON[_0xdc26('0x2c')](_0x2b72c2[_0xdc26('0x2d')]));if(_0x3ba678[_0xdc26('0x29')][_0x2cb271]){_0x3ba678[_0xdc26('0x29')][_0x2cb271][_0xdc26('0x2e')](_0xdc26('0x2f'));}});return _0x314132({'code':0xc8,'message':_0x155b7c});}else{logger[_0xdc26('0x24')](_0xdc26('0x30'));return _0x314132({'code':0xc8,'message':_0x155b7c});}}catch(_0x2290e7){logger['error'](_0x2290e7[_0xdc26('0x31')]);return _0xe435b(_0x314bb0[_0xdc26('0x27')](0x1f4,_0x2290e7));}}return _0xe435b(_0xdc26('0x32'));});},'AcceptMessage':function(_0x53b2ba){var _0x4f2793=this;return new Promise(function(_0x4622bf,_0xd2fcc0){if(_0x53b2ba[_0xdc26('0x33')]&&_0x53b2ba[_0xdc26('0x33')]['id']){if(_0x3ba678['agents'][_0x53b2ba[_0xdc26('0x33')]['id']]){_0x3ba678[_0xdc26('0x34')][_0x53b2ba[_0xdc26('0x33')]['id']]['busy']=![];_0x3ba678['agents'][_0x53b2ba['agent']['id']]['busyQueue']=undefined;}}if(_0x53b2ba[_0xdc26('0x11')]&&_0x53b2ba[_0xdc26('0x11')]['id']){try{var _0x16c2f3=getId(_0x53b2ba['channel'],_0x53b2ba[_0xdc26('0x11')]?_0x53b2ba[_0xdc26('0x11')]['id']:0x0,_0x53b2ba[_0xdc26('0x12')]?_0x53b2ba[_0xdc26('0x12')]['id']:0x0);if(_0x3ba678[_0xdc26('0x29')][_0x16c2f3]){_0x3ba678[_0xdc26('0x29')][_0x16c2f3]['emit'](_0xdc26('0x35'));if(rpc[_0x53b2ba[_0xdc26('0x10')]+'QueueReport']){rpc[_0x53b2ba[_0xdc26('0x10')]+'QueueReport'][_0xdc26('0x36')](_0x16c2f3,{'UserId':_0x53b2ba['message'][_0xdc26('0x37')]})['catch'](function(_0x393bf1){logger[_0xdc26('0x27')](_0xdc26('0x38'));});}}return _0x4622bf({'code':0xc8,'message':_0x53b2ba});}catch(_0x4950da){logger[_0xdc26('0x27')](_0x4950da[_0xdc26('0x31')]);return _0xd2fcc0(_0x4f2793[_0xdc26('0x27')](0x1f4,_0x4950da));}}logger[_0xdc26('0x27')]('message\x20is\x20empty');return _0xd2fcc0(_0x4f2793[_0xdc26('0x27')](0x1f4,_0xdc26('0x39')));});},'RejectMessage':function(_0x5d028b){var _0x22f8e1=this;return new Promise(function(_0x23c68b,_0x1b5bd9){if(_0x5d028b[_0xdc26('0x33')]&&_0x5d028b[_0xdc26('0x33')]['id']){try{if(_0x3ba678[_0xdc26('0x34')][_0x5d028b['agent']['id']]){_0x3ba678[_0xdc26('0x34')][_0x5d028b[_0xdc26('0x33')]['id']][_0xdc26('0x3a')]=![];_0x3ba678[_0xdc26('0x34')][_0x5d028b[_0xdc26('0x33')]['id']][_0xdc26('0x3b')]=undefined;}return _0x23c68b({'code':0xc8,'message':_0x5d028b});}catch(_0x4308f1){logger[_0xdc26('0x27')](_0x4308f1[_0xdc26('0x31')]);return _0x1b5bd9(_0x22f8e1[_0xdc26('0x27')](0x1f4,_0x4308f1));}}logger[_0xdc26('0x27')](_0xdc26('0x39'));return _0x1b5bd9(_0x22f8e1[_0xdc26('0x27')](0x1f4,_0xdc26('0x39')));});},'AbandonInteraction':function(_0x2bd04d){var _0x1852e9=this;return new Promise(function(_0x5dde34,_0xc26fc6){if(_0x2bd04d[_0xdc26('0x10')]&&_0x2bd04d[_0xdc26('0x12')]&&_0x2bd04d['interaction']['id']){try{var _0x1accf4=getId(_0x2bd04d[_0xdc26('0x10')],_0x2bd04d['message']?_0x2bd04d[_0xdc26('0x11')]['id']:0x0,_0x2bd04d[_0xdc26('0x12')]?_0x2bd04d[_0xdc26('0x12')]['id']:0x0);if(_0x3ba678[_0xdc26('0x29')][_0x1accf4]){_0x3ba678['rules'][_0x1accf4][_0xdc26('0x2e')](_0xdc26('0x35'));}return _0x5dde34({'code':0xc8,'message':_0x2bd04d});}catch(_0x30cd15){logger[_0xdc26('0x27')](_0x30cd15[_0xdc26('0x31')]);return _0xc26fc6(_0x1852e9[_0xdc26('0x27')](0x1f4,_0x30cd15));}}logger[_0xdc26('0x27')]('message\x20is\x20empty');return _0xc26fc6(_0x1852e9[_0xdc26('0x27')](0x1f4,_0xdc26('0x39')));});},'AgentCapacity':function(_0x3c7f9e){var _0x31d53d=this;return new Promise(function(_0x44436e,_0x3e3f6c){if(_0x3ba678[_0xdc26('0x34')][_0xdc26('0x3c')](_0x3c7f9e['id'])){for(var _0xec2dff in _0x3c7f9e['capacity']){if(_0x3c7f9e[_0xdc26('0x3d')][_0xdc26('0x3c')](_0xec2dff)){if(_0x3ba678['agents'][_0x3c7f9e['id']]['hasOwnProperty'](_0xec2dff+_0xdc26('0x3e'))){_0x3ba678[_0xdc26('0x34')][_0x3c7f9e['id']][_0xec2dff+'CurrentCapacity']=parseInt(_0x3c7f9e[_0xdc26('0x3d')][_0xec2dff],0xa);}}}_0x3ba678['agents'][_0x3c7f9e['id']][_0xdc26('0x3f')]();return _0x44436e({'code':0xc8,'message':_0x3ba678[_0xdc26('0x34')][_0x3c7f9e['id']]});}else{return _0x3e3f6c(_0x31d53d[_0xdc26('0x27')](0x1f4,'agent\x20not\x20found'));}});},'Agents':function(_0x1ef0cb){return new Promise(function(_0x34a287,_0x1baae3){var _0x404412=_[_0xdc26('0x40')](_0x3ba678['agents']);_0x34a287({'count':_0x404412[_0xdc26('0x14')],'rows':_0x404412});});},'ChatQueues':function(_0x353e0a){return new Promise(function(_0x1eced0,_0x3a0e12){var _0x2990d2=[];for(var _0x949499 in _0x3ba678['chatQueues']){if(_0x3ba678[_0xdc26('0x41')][_0xdc26('0x3c')](_0x949499)){var _0x4a2ab5=_0x3ba678[_0xdc26('0x41')][_0x949499];var _0x33602f={'id':_0x4a2ab5['id'],'available':_0x4a2ab5['available'],'loggedIn':_0x4a2ab5[_0xdc26('0x42')],'name':_0x4a2ab5['name'],'paused':_0x4a2ab5[_0xdc26('0x43')],'waiting':_0x4a2ab5[_0xdc26('0x44')]};_0x2990d2[_0xdc26('0x19')](_0x33602f);}}_0x1eced0({'count':_0x2990d2[_0xdc26('0x14')],'rows':_0x2990d2});});},'MailQueues':function(_0x32be64){return new Promise(function(_0x5c7572,_0xde9d37){var _0x56396f=[];for(var _0x5b0d8d in _0x3ba678['mailQueues']){if(_0x3ba678[_0xdc26('0x45')]['hasOwnProperty'](_0x5b0d8d)){var _0x4466a1=_0x3ba678['mailQueues'][_0x5b0d8d];var _0x1a6efe={'id':_0x4466a1['id'],'available':_0x4466a1['available'],'loggedIn':_0x4466a1[_0xdc26('0x42')],'name':_0x4466a1[_0xdc26('0x46')],'paused':_0x4466a1[_0xdc26('0x43')],'waiting':_0x4466a1[_0xdc26('0x44')]};_0x56396f[_0xdc26('0x19')](_0x1a6efe);}}_0x5c7572({'count':_0x56396f[_0xdc26('0x14')],'rows':_0x56396f});});},'OpenchannelQueues':function(_0x3524a0){return new Promise(function(_0x3f6af3,_0x1c4d81){var _0x544ad4=[];for(var _0x55bf96 in _0x3ba678[_0xdc26('0x47')]){if(_0x3ba678['openchannelQueues'][_0xdc26('0x3c')](_0x55bf96)){var _0x26d4c9=_0x3ba678[_0xdc26('0x47')][_0x55bf96];var _0x363695={'id':_0x26d4c9['id'],'available':_0x26d4c9[_0xdc26('0x48')],'loggedIn':_0x26d4c9['loggedIn'],'name':_0x26d4c9[_0xdc26('0x46')],'paused':_0x26d4c9[_0xdc26('0x43')],'waiting':_0x26d4c9['waiting']};_0x544ad4['push'](_0x363695);}}_0x3f6af3({'count':_0x544ad4[_0xdc26('0x14')],'rows':_0x544ad4});});},'SmsQueues':function(_0x52d3b9){return new Promise(function(_0x20e532,_0x2e0955){var _0x358a18=[];for(var _0x4ae825 in _0x3ba678['smsQueues']){if(_0x3ba678[_0xdc26('0x49')][_0xdc26('0x3c')](_0x4ae825)){var _0x43849a=_0x3ba678['smsQueues'][_0x4ae825];var _0x423587={'id':_0x43849a['id'],'available':_0x43849a[_0xdc26('0x48')],'loggedIn':_0x43849a[_0xdc26('0x42')],'name':_0x43849a[_0xdc26('0x46')],'paused':_0x43849a[_0xdc26('0x43')],'waiting':_0x43849a[_0xdc26('0x44')]};_0x358a18['push'](_0x423587);}}_0x20e532({'count':_0x358a18['length'],'rows':_0x358a18});});},'FaxQueues':function(_0xd7dd89){return new Promise(function(_0x1e835a,_0x3528d0){var _0x5b8919=[];for(var _0x472420 in _0x3ba678[_0xdc26('0x4a')]){if(_0x3ba678[_0xdc26('0x4a')][_0xdc26('0x3c')](_0x472420)){var _0x504fa8=_0x3ba678[_0xdc26('0x4a')][_0x472420];var _0x4197a1={'id':_0x504fa8['id'],'available':_0x504fa8[_0xdc26('0x48')],'loggedIn':_0x504fa8[_0xdc26('0x42')],'name':_0x504fa8[_0xdc26('0x46')],'paused':_0x504fa8[_0xdc26('0x43')],'waiting':_0x504fa8[_0xdc26('0x44')]};_0x5b8919['push'](_0x4197a1);}}_0x1e835a({'count':_0x5b8919[_0xdc26('0x14')],'rows':_0x5b8919});});},'WhatsappQueues':function(_0x21515d){return new Promise(function(_0x478ec3,_0x81f5ca){var _0x40d660=[];for(var _0x1b5901 in _0x3ba678[_0xdc26('0x4b')]){if(_0x3ba678['whatsappQueues']['hasOwnProperty'](_0x1b5901)){var _0x1867bd=_0x3ba678[_0xdc26('0x4b')][_0x1b5901];var _0x2acb6a={'id':_0x1867bd['id'],'available':_0x1867bd['available'],'loggedIn':_0x1867bd[_0xdc26('0x42')],'name':_0x1867bd[_0xdc26('0x46')],'paused':_0x1867bd['paused'],'waiting':_0x1867bd[_0xdc26('0x44')]};_0x40d660[_0xdc26('0x19')](_0x2acb6a);}}_0x478ec3({'count':_0x40d660[_0xdc26('0x14')],'rows':_0x40d660});});},'ChatQueuesWaitingInteractions':function(_0x148190){return new Promise(function(_0xb02c49,_0x4f1710){var _0x1cc811=_[_0xdc26('0x40')](_0x3ba678[_0xdc26('0x4c')]);_0xb02c49({'count':_0x1cc811[_0xdc26('0x14')],'rows':_0x1cc811});});},'MailQueuesWaitingInteractions':function(_0x343dac){return new Promise(function(_0x3d19c8,_0x389357){var _0x177ea2=_['values'](_0x3ba678[_0xdc26('0x4d')]);_0x3d19c8({'count':_0x177ea2[_0xdc26('0x14')],'rows':_0x177ea2});});},'OpenchannelQueuesWaitingInteractions':function(_0x33ee3b){return new Promise(function(_0x41e62e,_0x1a986f){var _0x294a3c=_[_0xdc26('0x40')](_0x3ba678[_0xdc26('0x4e')]);_0x41e62e({'count':_0x294a3c[_0xdc26('0x14')],'rows':_0x294a3c});});},'SmsQueuesWaitingInteractions':function(_0x5ea59c){return new Promise(function(_0x2a49df,_0x260bf9){var _0x166eb8=_[_0xdc26('0x40')](_0x3ba678[_0xdc26('0x4f')]);_0x2a49df({'count':_0x166eb8[_0xdc26('0x14')],'rows':_0x166eb8});});},'FaxQueuesWaitingInteractions':function(_0x14d367){return new Promise(function(_0x4808a4,_0x3582a6){var _0x3375fa=_['values'](_0x3ba678[_0xdc26('0x50')]);_0x4808a4({'count':_0x3375fa[_0xdc26('0x14')],'rows':_0x3375fa});});},'WhatsappQueuesWaitingInteractions':function(_0x28f846){return new Promise(function(_0x1fe92d,_0x4d53ca){var _0xdef717=_[_0xdc26('0x40')](_0x3ba678['whatsappQueuesWaitingInteractions']);_0x1fe92d({'count':_0xdef717[_0xdc26('0x14')],'rows':_0xdef717});});}};var _0x5ea895=jayson['server'](_0x34cc7b)['http']();_0x5ea895['on'](_0xdc26('0x27'),function(_0x51e5d3){logger['error'](JSON[_0xdc26('0x2c')](_0x51e5d3));return _0x4f2c85(_0x51e5d3);});_0x5ea895[_0xdc26('0xf')](0x232c,'127.0.0.1',function(){console[_0xdc26('0x51')]('Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232c);return _0x1b261e(_0xdc26('0x52')+0x232c);});});};
\ No newline at end of file
index 83154bf..a0c33e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b78=['rules','info','length','push','Command','format','iftime\x20%s','message','indexOf','[%s][INTERVAL]\x20%s','all','some','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','when','log','stack','stop','util','jayson/promise','lodash','../../../config/logger','routing','client','http','request','then','error','result','catch','condition'];(function(_0x52e64,_0x6ba4e8){var _0x282b80=function(_0xc11939){while(--_0xc11939){_0x52e64['push'](_0x52e64['shift']());}};_0x282b80(++_0x6ba4e8);}(_0x0b78,0x73));var _0x80b7=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x0b78[_0x321bb2];return _0x9c12ed;};'use strict';var util=require(_0x80b7('0x0'));var BPromise=require('bluebird');var jayson=require(_0x80b7('0x1'));var _=require(_0x80b7('0x2'));var logger=require(_0x80b7('0x3'))(_0x80b7('0x4'));var client=jayson[_0x80b7('0x5')][_0x80b7('0x6')]({'port':0x232a});function request(_0x3b7a90,_0x3f5343){return new BPromise(function(_0x288a22,_0xf63e0f){return client[_0x80b7('0x7')](_0x3b7a90,_0x3f5343)[_0x80b7('0x8')](function(_0x3d44a3){if(_0x3d44a3[_0x80b7('0x9')]){return _0xf63e0f(_0x3d44a3[_0x80b7('0x9')]['message']);}else{return _0x288a22(_0x3d44a3[_0x80b7('0xa')]);}})[_0x80b7('0xb')](function(_0x4df368){return _0xf63e0f(_0x4df368);});});}exports[_0x80b7('0xc')]=function(_0x1c0986,_0xcdd58e,_0x3433d8){return function(_0x206951){if(_0x3433d8['rules']&&!_0x3433d8[_0x80b7('0xd')][_0x1c0986]){logger[_0x80b7('0xe')]('[%s][INTERVAL]\x20ROUTING\x20STOPPED',_0x1c0986);return _0x206951['stop']();}var _0x44355d=[];for(var _0x45d3e9=0x0;_0x45d3e9<_0xcdd58e[_0x80b7('0xf')];_0x45d3e9+=0x1){_0x44355d[_0x80b7('0x10')](request(_0x80b7('0x11'),{'command':util[_0x80b7('0x12')](_0x80b7('0x13'),_0xcdd58e[_0x45d3e9])})['then'](function(_0x4ae2fa){return _0x4ae2fa&&_0x4ae2fa[_0x80b7('0x14')]&&_0x4ae2fa['message'][_0x80b7('0x15')]('true')>=0x0?!![]:![];})['catch'](function(_0x2e5b03){logger[_0x80b7('0x9')](_0x80b7('0x16'),_0x1c0986,_0xcdd58e[_0x45d3e9]);}));}BPromise[_0x80b7('0x17')](_0x44355d)[_0x80b7('0x8')](function(_0x518c02){var _0x5dcff9=_[_0x80b7('0x18')](_0x518c02);logger[_0x80b7('0xe')](_0x80b7('0x19'),_0x1c0986,_0xcdd58e[_0x80b7('0x1a')](_0x80b7('0x1b')),_0x5dcff9);_0x206951[_0x80b7('0x1c')](_0x5dcff9);})[_0x80b7('0xb')](function(_0x2cf07f){console[_0x80b7('0x1d')](_0x2cf07f);logger['error'](_0x80b7('0x19'),_0x1c0986,_0xcdd58e['join'](_0x80b7('0x1b')),_0x2cf07f[_0x80b7('0x1e')]);_0x206951[_0x80b7('0x1f')]();});};};
\ No newline at end of file
+var _0xa54a=['routing','client','http','request','then','error','message','result','catch','condition','rules','info','stop','length','push','Command','format','iftime\x20%s','indexOf','true','[%s][INTERVAL]\x20%s','all','[%s][INTERVAL]\x20%s\x20%s','\x20|\x20','when','log','stack','util','jayson/promise','../../../config/logger'];(function(_0xb529a0,_0x5b607f){var _0x558689=function(_0x46b1d5){while(--_0x46b1d5){_0xb529a0['push'](_0xb529a0['shift']());}};_0x558689(++_0x5b607f);}(_0xa54a,0x1bf));var _0xaa54=function(_0x526c54,_0x5b4ab5){_0x526c54=_0x526c54-0x0;var _0x41ba47=_0xa54a[_0x526c54];return _0x41ba47;};'use strict';var util=require(_0xaa54('0x0'));var BPromise=require('bluebird');var jayson=require(_0xaa54('0x1'));var _=require('lodash');var logger=require(_0xaa54('0x2'))(_0xaa54('0x3'));var client=jayson[_0xaa54('0x4')][_0xaa54('0x5')]({'port':0x232a});function request(_0x527aab,_0x5e4b3a){return new BPromise(function(_0x191d67,_0x4e89d5){return client[_0xaa54('0x6')](_0x527aab,_0x5e4b3a)[_0xaa54('0x7')](function(_0x5a1d99){if(_0x5a1d99['error']){return _0x4e89d5(_0x5a1d99[_0xaa54('0x8')][_0xaa54('0x9')]);}else{return _0x191d67(_0x5a1d99[_0xaa54('0xa')]);}})[_0xaa54('0xb')](function(_0x17ffe4){return _0x4e89d5(_0x17ffe4);});});}exports[_0xaa54('0xc')]=function(_0x530a45,_0x65cf93,_0x32ac48){return function(_0x58c10c){if(_0x32ac48[_0xaa54('0xd')]&&!_0x32ac48['rules'][_0x530a45]){logger[_0xaa54('0xe')]('[%s][INTERVAL]\x20ROUTING\x20STOPPED',_0x530a45);return _0x58c10c[_0xaa54('0xf')]();}var _0x4776bd=[];for(var _0x9aaf83=0x0;_0x9aaf83<_0x65cf93[_0xaa54('0x10')];_0x9aaf83+=0x1){_0x4776bd[_0xaa54('0x11')](request(_0xaa54('0x12'),{'command':util[_0xaa54('0x13')](_0xaa54('0x14'),_0x65cf93[_0x9aaf83])})['then'](function(_0x1024cc){return _0x1024cc&&_0x1024cc[_0xaa54('0x9')]&&_0x1024cc['message'][_0xaa54('0x15')](_0xaa54('0x16'))>=0x0?!![]:![];})[_0xaa54('0xb')](function(_0x4db675){logger['error'](_0xaa54('0x17'),_0x530a45,_0x65cf93[_0x9aaf83]);}));}BPromise[_0xaa54('0x18')](_0x4776bd)['then'](function(_0xe2384){var _0x5853a7=_['some'](_0xe2384);logger[_0xaa54('0xe')](_0xaa54('0x19'),_0x530a45,_0x65cf93['join'](_0xaa54('0x1a')),_0x5853a7);_0x58c10c[_0xaa54('0x1b')](_0x5853a7);})[_0xaa54('0xb')](function(_0x11af85){console[_0xaa54('0x1c')](_0x11af85);logger[_0xaa54('0x8')](_0xaa54('0x19'),_0x530a45,_0x65cf93['join'](_0xaa54('0x1a')),_0x11af85[_0xaa54('0x1d')]);_0x58c10c[_0xaa54('0xf')]();});};};
\ No newline at end of file
index ed4399a..a03409e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c76=['answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diffTime','agentcompleteAt','agentconnectAt','complete','[%s][agents][agentcomplete]','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfertype','transferexten','extension','transferuniqueid','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','transfer','ATTENDED','origtransfererexten','transfereeuniqueid','agententerreason','calleridnum','calleridname','agentcalledAt','secondtransfererexten','transfertargetuniqueid','clone','hangup','[%s][agents][hangup]','cause','rejected','splice','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','agent','lodash','util','./utils','info','uniqueid','channel','membername','interface','connectedlinenum','getVoiceQueueByName','queue','then','type','agentacw','agentcomplete','acwtime','acwTimeout','request','CreateVoiceAgentReport','destuniqueid','agentcalled','debug','format','[%s][agents][agentcalled]','now','lastevent','called','error','isNil','[%s][agents][agentringnoanswer]','agentringnoanswer','timeout','holdtime','ringtime','talktime','push','queuecallerabandon','forIn','[%s][agents][queuecallerabandon]','agentringnoanswerAt','abandoned','reason','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','connectedlinename','answered_elsewhere'];(function(_0x5dbbbc,_0x5f3b29){var _0x66461=function(_0x4030d2){while(--_0x4030d2){_0x5dbbbc['push'](_0x5dbbbc['shift']());}};_0x66461(++_0x5f3b29);}(_0x6c76,0x184));var _0x66c7=function(_0x20a137,_0x4d9549){_0x20a137=_0x20a137-0x0;var _0x3dc414=_0x6c76[_0x20a137];return _0x3dc414;};'use strict';var _=require(_0x66c7('0x0'));var util=require(_0x66c7('0x1'));var utils=require(_0x66c7('0x2'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x55604c,_0x203e75){utils[_0x66c7('0x3')](util['format']('[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x55604c[_0x66c7('0x4')],_0x55604c[_0x66c7('0x5')],_0x55604c['queue'],_0x55604c[_0x66c7('0x6')],_0x55604c[_0x66c7('0x7')],_0x55604c['calleridnum'],_0x55604c[_0x66c7('0x8')],_0x55604c['lastevent']));if(_0x55604c['queue']){utils[_0x66c7('0x9')](_0x55604c[_0x66c7('0xa')])[_0x66c7('0xb')](function(_0x53a81c){if(_0x53a81c){_0x55604c[_0x66c7('0xc')]=_0x53a81c[_0x66c7('0xc')];_0x55604c[_0x66c7('0xd')]=_0x55604c[_0x66c7('0xe')]?_0x53a81c['acw']:![];_0x55604c[_0x66c7('0xf')]=_0x55604c[_0x66c7('0xd')]?_0x53a81c[_0x66c7('0x10')]:0x0;}utils[_0x66c7('0x11')](_0x66c7('0x12'),_0x55604c);});}else{utils[_0x66c7('0x11')](_0x66c7('0x12'),_0x55604c);}if(_0x203e75){delete transfers[_0x55604c['uniqueid']];}else{delete agents[_0x55604c[_0x66c7('0x13')]];}}exports[_0x66c7('0x14')]=function(_0x35cbc2){try{utils[_0x66c7('0x15')](util[_0x66c7('0x16')](_0x66c7('0x17'),_0x35cbc2[_0x66c7('0x4')]),_0x35cbc2);agents[_0x35cbc2[_0x66c7('0x13')]]=_0x35cbc2;agents[_0x35cbc2[_0x66c7('0x13')]]['agentcalledAt']=utils[_0x66c7('0x18')]();agents[_0x35cbc2['destuniqueid']][_0x66c7('0x19')]=_0x66c7('0x1a');agents[_0x35cbc2[_0x66c7('0x13')]][_0x66c7('0x8')]=null;agents[_0x35cbc2[_0x66c7('0x13')]]['connectedlinename']=null;utils['info'](util['format']('[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x35cbc2[_0x66c7('0x4')],agents[_0x35cbc2[_0x66c7('0x13')]]['membername'],_0x35cbc2['destuniqueid']));}catch(_0x256b0a){utils[_0x66c7('0x1b')](util[_0x66c7('0x16')](_0x66c7('0x17'),_0x35cbc2['uniqueid']),_0x256b0a);}};exports['agentringnoanswer']=function(_0x1853b2){try{if(!_[_0x66c7('0x1c')](agents[_0x1853b2[_0x66c7('0x13')]])){utils[_0x66c7('0x15')](util[_0x66c7('0x16')](_0x66c7('0x1d'),_0x1853b2['uniqueid']),_0x1853b2);utils[_0x66c7('0x3')](util[_0x66c7('0x16')]('[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout',_0x1853b2[_0x66c7('0x4')],agents[_0x1853b2[_0x66c7('0x13')]][_0x66c7('0x6')],_0x1853b2[_0x66c7('0x13')]));agents[_0x1853b2['destuniqueid']][_0x66c7('0x1e')]=!![];agents[_0x1853b2[_0x66c7('0x13')]]['agentringnoanswerAt']=utils[_0x66c7('0x18')]();agents[_0x1853b2[_0x66c7('0x13')]][_0x66c7('0x19')]=_0x66c7('0x1f');agents[_0x1853b2[_0x66c7('0x13')]]['reason']='timeout';agents[_0x1853b2['destuniqueid']][_0x66c7('0x20')]=_0x1853b2[_0x66c7('0x21')]?parseInt(_0x1853b2['ringtime'])/0x3e8:0x0;agents[_0x1853b2[_0x66c7('0x13')]][_0x66c7('0x22')]=0x0;unanswered[_0x66c7('0x23')](_0x1853b2[_0x66c7('0x13')]);}}catch(_0x36a830){utils[_0x66c7('0x1b')](util['format'](_0x66c7('0x1d'),_0x1853b2[_0x66c7('0x4')]),_0x36a830);}};exports[_0x66c7('0x24')]=function(_0x33be23){try{_[_0x66c7('0x25')](agents,function(_0x592f0e,_0x263b48){if(_0x592f0e['uniqueid']==_0x33be23[_0x66c7('0x4')]&&!_['includes'](unanswered,_0x592f0e[_0x66c7('0x13')])){utils[_0x66c7('0x15')](util[_0x66c7('0x16')](_0x66c7('0x26'),_0x33be23[_0x66c7('0x4')]),_0x33be23);utils[_0x66c7('0x3')](util['format']('[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x33be23[_0x66c7('0x4')],_0x592f0e[_0x66c7('0x6')],_0x592f0e[_0x66c7('0x13')]));_0x592f0e[_0x66c7('0x1e')]=!![];_0x592f0e[_0x66c7('0x27')]=utils[_0x66c7('0x18')]();_0x592f0e[_0x66c7('0x19')]=_0x66c7('0x28');_0x592f0e[_0x66c7('0x29')]=_0x66c7('0x28');_0x592f0e[_0x66c7('0x20')]=_0x33be23[_0x66c7('0x20')];_0x592f0e['talktime']=0x0;writeDB(_0x592f0e);}});}catch(_0x562283){utils[_0x66c7('0x1b')](util[_0x66c7('0x16')](_0x66c7('0x26'),_0x33be23[_0x66c7('0x4')]),_0x562283);}};exports[_0x66c7('0x2a')]=function(_0x2bf7c2){try{if(agents[_0x2bf7c2[_0x66c7('0x13')]]){utils['debug'](util[_0x66c7('0x16')](_0x66c7('0x2b'),_0x2bf7c2[_0x66c7('0x4')]),_0x2bf7c2);utils[_0x66c7('0x3')](util[_0x66c7('0x16')](_0x66c7('0x2c'),_0x2bf7c2[_0x66c7('0x4')],agents[_0x2bf7c2[_0x66c7('0x13')]][_0x66c7('0x6')],_0x2bf7c2[_0x66c7('0x13')]));agents[_0x2bf7c2[_0x66c7('0x13')]]['agentconnectAt']=utils['now']();agents[_0x2bf7c2[_0x66c7('0x13')]][_0x66c7('0x8')]=_0x2bf7c2[_0x66c7('0x8')];agents[_0x2bf7c2['destuniqueid']]['connectedlinename']=_0x2bf7c2[_0x66c7('0x2d')];agents[_0x2bf7c2[_0x66c7('0x13')]]['holdtime']=_0x2bf7c2[_0x66c7('0x21')];agents[_0x2bf7c2[_0x66c7('0x13')]][_0x66c7('0x19')]='connect';_[_0x66c7('0x25')](agents,function(_0x16b754,_0x9f6ca8){if(_0x16b754[_0x66c7('0x13')]!=_0x2bf7c2[_0x66c7('0x13')]&&_0x16b754[_0x66c7('0x4')]==_0x2bf7c2[_0x66c7('0x4')]){_0x16b754[_0x66c7('0x22')]=0x0;_0x16b754[_0x66c7('0x20')]=_0x2bf7c2['ringtime'];_0x16b754[_0x66c7('0x1e')]=!![];_0x16b754[_0x66c7('0x27')]=utils[_0x66c7('0x18')]();_0x16b754[_0x66c7('0x19')]=_0x66c7('0x2e');_0x16b754[_0x66c7('0x29')]=_0x66c7('0x2e');_0x16b754[_0x66c7('0x2f')]=_0x2bf7c2[_0x66c7('0x13')];_0x16b754[_0x66c7('0x30')]=_0x2bf7c2['membername'];writeDB(_0x16b754);}});}}catch(_0x5bb5fc){utils['error'](util[_0x66c7('0x16')](_0x66c7('0x2b'),_0x2bf7c2['uniqueid']),_0x5bb5fc);}};exports['agentcomplete']=function(_0x34d002){try{if(!_[_0x66c7('0x1c')](agents[_0x34d002[_0x66c7('0x13')]])){utils[_0x66c7('0x15')](util[_0x66c7('0x16')]('[%s][agents][agentcomplete]',_0x34d002[_0x66c7('0x4')]),_0x34d002);utils['info'](util['format'](_0x66c7('0x31'),_0x34d002[_0x66c7('0x4')],agents[_0x34d002[_0x66c7('0x13')]][_0x66c7('0x6')],_0x34d002['destuniqueid']));agents[_0x34d002['destuniqueid']][_0x66c7('0xe')]=!![];agents[_0x34d002['destuniqueid']]['agentcompleteAt']=utils[_0x66c7('0x18')]();agents[_0x34d002[_0x66c7('0x13')]][_0x66c7('0x22')]=utils[_0x66c7('0x32')](agents[_0x34d002['destuniqueid']][_0x66c7('0x33')],agents[_0x34d002[_0x66c7('0x13')]][_0x66c7('0x34')]);agents[_0x34d002['destuniqueid']][_0x66c7('0x29')]=_0x34d002[_0x66c7('0x29')];agents[_0x34d002[_0x66c7('0x13')]][_0x66c7('0x19')]=_0x66c7('0x35');writeDB(agents[_0x34d002[_0x66c7('0x13')]]);}}catch(_0x2e3f06){utils[_0x66c7('0x1b')](util['format'](_0x66c7('0x36'),_0x34d002[_0x66c7('0x4')]),_0x2e3f06);}};exports[_0x66c7('0x37')]=function(_0x1386a2){try{if(!_[_0x66c7('0x1c')](agents[_0x1386a2[_0x66c7('0x38')]])){utils[_0x66c7('0x15')](util[_0x66c7('0x16')](_0x66c7('0x39'),_0x1386a2[_0x66c7('0x4')]),_0x1386a2);utils[_0x66c7('0x3')](util[_0x66c7('0x16')](_0x66c7('0x3a'),_0x1386a2[_0x66c7('0x4')],agents[_0x1386a2['transfereruniqueid']][_0x66c7('0x6')],agents[_0x1386a2[_0x66c7('0x38')]][_0x66c7('0x4')]));agents[_0x1386a2[_0x66c7('0x38')]]['transfer']=!![];agents[_0x1386a2[_0x66c7('0x38')]][_0x66c7('0x3b')]='blind';agents[_0x1386a2[_0x66c7('0x38')]][_0x66c7('0x3c')]=_0x1386a2[_0x66c7('0x3d')];agents[_0x1386a2[_0x66c7('0x38')]][_0x66c7('0x3e')]=agents[_0x1386a2[_0x66c7('0x38')]][_0x66c7('0x4')];}}catch(_0x5cd4e9){utils[_0x66c7('0x1b')](util[_0x66c7('0x16')]('[%s][agents][blindtransfer]',_0x1386a2[_0x66c7('0x4')]),_0x5cd4e9);}};exports[_0x66c7('0x3f')]=function(_0x3ef4cf){try{utils['debug'](util[_0x66c7('0x16')](_0x66c7('0x40'),_0x3ef4cf[_0x66c7('0x41')]),_0x3ef4cf);if(_0x3ef4cf[_0x66c7('0x41')]==_0x3ef4cf[_0x66c7('0x42')]){if(!_[_0x66c7('0x1c')](agents[_0x3ef4cf[_0x66c7('0x43')]])){utils[_0x66c7('0x3')](util['format'](_0x66c7('0x44'),_0x3ef4cf[_0x66c7('0x41')],agents[_0x3ef4cf['secondtransfereruniqueid']][_0x66c7('0x6')]));agents[_0x3ef4cf[_0x66c7('0x43')]][_0x66c7('0x45')]=!![];agents[_0x3ef4cf['secondtransfereruniqueid']]['transfertype']=_0x66c7('0x46');agents[_0x3ef4cf['secondtransfereruniqueid']][_0x66c7('0x3c')]=_0x3ef4cf[_0x66c7('0x47')];agents[_0x3ef4cf[_0x66c7('0x43')]][_0x66c7('0x3e')]=_0x3ef4cf[_0x66c7('0x41')];}if(_0x3ef4cf[_0x66c7('0x48')]&&agents[_0x3ef4cf['transfereeuniqueid']]){agents[_0x3ef4cf['transfereeuniqueid']][_0x66c7('0x49')]=0x1;transfers[_0x3ef4cf[_0x66c7('0x48')]]=_['clone'](agents[_0x3ef4cf['transfereeuniqueid']]);transfers[_0x3ef4cf[_0x66c7('0x48')]]['calleridnum']=agents[_0x3ef4cf[_0x66c7('0x43')]][_0x66c7('0x4a')];transfers[_0x3ef4cf[_0x66c7('0x48')]][_0x66c7('0x4b')]=agents[_0x3ef4cf['secondtransfereruniqueid']][_0x66c7('0x4b')];transfers[_0x3ef4cf[_0x66c7('0x48')]][_0x66c7('0x4c')]=utils[_0x66c7('0x18')]();transfers[_0x3ef4cf[_0x66c7('0x48')]][_0x66c7('0x34')]=utils['now']();transfers[_0x3ef4cf[_0x66c7('0x48')]][_0x66c7('0x20')]=0x0;transfers[_0x3ef4cf[_0x66c7('0x48')]]['agententerreason']=0x2;}}else if(_0x3ef4cf[_0x66c7('0x43')]==_0x3ef4cf['secondtransfererlinkedid']){if(!_[_0x66c7('0x1c')](agents[_0x3ef4cf[_0x66c7('0x41')]])){utils[_0x66c7('0x3')](util[_0x66c7('0x16')](_0x66c7('0x44'),_0x3ef4cf[_0x66c7('0x41')],agents[_0x3ef4cf['origtransfereruniqueid']][_0x66c7('0x6')]));agents[_0x3ef4cf[_0x66c7('0x41')]][_0x66c7('0x45')]=!![];agents[_0x3ef4cf[_0x66c7('0x41')]][_0x66c7('0x3b')]='ATTENDED';agents[_0x3ef4cf[_0x66c7('0x41')]][_0x66c7('0x3c')]=_0x3ef4cf[_0x66c7('0x4d')];agents[_0x3ef4cf[_0x66c7('0x41')]][_0x66c7('0x3e')]=_0x3ef4cf[_0x66c7('0x43')];}if(_0x3ef4cf[_0x66c7('0x4e')]&&agents[_0x3ef4cf[_0x66c7('0x4e')]]){agents[_0x3ef4cf[_0x66c7('0x4e')]][_0x66c7('0x49')]=0x1;transfers[_0x3ef4cf[_0x66c7('0x4e')]]=_[_0x66c7('0x4f')](agents[_0x3ef4cf['transfertargetuniqueid']]);transfers[_0x3ef4cf[_0x66c7('0x4e')]][_0x66c7('0x4a')]=agents[_0x3ef4cf[_0x66c7('0x41')]][_0x66c7('0x4a')];transfers[_0x3ef4cf[_0x66c7('0x4e')]][_0x66c7('0x4b')]=agents[_0x3ef4cf[_0x66c7('0x41')]]['calleridname'];transfers[_0x3ef4cf[_0x66c7('0x4e')]][_0x66c7('0x4c')]=utils[_0x66c7('0x18')]();transfers[_0x3ef4cf[_0x66c7('0x4e')]][_0x66c7('0x34')]=utils[_0x66c7('0x18')]();transfers[_0x3ef4cf[_0x66c7('0x4e')]][_0x66c7('0x20')]=0x0;transfers[_0x3ef4cf[_0x66c7('0x4e')]][_0x66c7('0x49')]=0x2;}}}catch(_0x21eb0a){utils[_0x66c7('0x1b')](util[_0x66c7('0x16')](_0x66c7('0x40'),_0x3ef4cf[_0x66c7('0x41')]),_0x21eb0a);}};exports[_0x66c7('0x50')]=function(_0x5bca99){try{utils[_0x66c7('0x15')](util[_0x66c7('0x16')](_0x66c7('0x51'),_0x5bca99[_0x66c7('0x4')]),_0x5bca99);if(agents[_0x5bca99[_0x66c7('0x4')]]&&agents[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x29')]===_0x66c7('0x1f')){if(_0x5bca99[_0x66c7('0x52')]==='21'){agents[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x29')]=_0x66c7('0x53');agents[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x19')]=_0x66c7('0x53');}utils[_0x66c7('0x3')](util[_0x66c7('0x16')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x5bca99[_0x66c7('0x4')],agents[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x6')],agents[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x29')],agents[_0x5bca99[_0x66c7('0x4')]]['lastevent']));writeDB(agents[_0x5bca99['uniqueid']]);var _0x34d4f7=unanswered['indexOf'](_0x5bca99[_0x66c7('0x4')]);if(_0x34d4f7>-0x1){unanswered[_0x66c7('0x54')](_0x34d4f7,0x1);}}if(transfers[_0x5bca99[_0x66c7('0x4')]]){transfers[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0xe')]=!![];transfers[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x33')]=utils[_0x66c7('0x18')]();transfers[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x22')]=utils[_0x66c7('0x32')](transfers[_0x5bca99[_0x66c7('0x4')]]['agentcompleteAt'],transfers[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x34')]);transfers[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x29')]='agent';transfers[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x19')]='complete';utils[_0x66c7('0x3')](util[_0x66c7('0x16')](_0x66c7('0x55'),_0x5bca99[_0x66c7('0x4')],transfers[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x6')],transfers[_0x5bca99['uniqueid']]['reason'],transfers[_0x5bca99[_0x66c7('0x4')]]['lastevent']));writeDB(transfers[_0x5bca99['uniqueid']],!![]);}if(agents[_0x5bca99[_0x66c7('0x4')]]&&agents[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x34')]){agents[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0xe')]=!![];agents[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x33')]=utils[_0x66c7('0x18')]();agents[_0x5bca99['uniqueid']][_0x66c7('0x22')]=utils[_0x66c7('0x32')](agents[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x33')],agents[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x34')]);agents[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x29')]=agents[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x45')]?_0x66c7('0x45'):_0x66c7('0x56');agents[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x19')]=_0x66c7('0x35');utils[_0x66c7('0x3')](util[_0x66c7('0x16')](_0x66c7('0x55'),_0x5bca99[_0x66c7('0x4')],agents[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x6')],agents[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x29')],agents[_0x5bca99[_0x66c7('0x4')]][_0x66c7('0x19')]));writeDB(agents[_0x5bca99[_0x66c7('0x4')]]);}}catch(_0x331acc){utils['error'](util[_0x66c7('0x16')](_0x66c7('0x51'),_0x5bca99[_0x66c7('0x4')]),_0x331acc);}};
\ No newline at end of file
+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(_0x2eb449,_0x15f81a){var _0x52542d=function(_0x10836d){while(--_0x10836d){_0x2eb449['push'](_0x2eb449['shift']());}};_0x52542d(++_0x15f81a);}(_0xb469,0x13b));var _0x9b46=function(_0x3baf8c,_0x2b2562){_0x3baf8c=_0x3baf8c-0x0;var _0x8e7dd8=_0xb469[_0x3baf8c];return _0x8e7dd8;};'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
index 7d528ba..834acb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x223b=['queue','membername','interface','connectedlinenum','lastevent','accountcode','getUserByInternal','then','UserId','request','CreateVoiceCallReport','newchannel','debug','format','[%s][calls][newchannel]','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','now','DOCUMENTATION','[%s][calls][newstate]','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','isNil','systemanswertime','linkedid','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','error','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','endtime','duration','diffTime','starttime','billableseconds','[%s][calls][hangup]','attendedtransfer','[%s][calls][attendedtransfer]','origtransfereruniqueid','localtwolinkedid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','transfertargetchannel','origtransfererchannel','userfield','_attended','[%s][calls][musiconholdstart]','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstartAt','musiconholdstop','[%s][calls][musiconholdstop]','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','[%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','xmd-contactid','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','appdata','application','toLowerCase','set','startsWith','cdr','split','substring','lastIndexOf','gotoif','lastdata','lodash','util','./transfers.controller','NO\x20ANSWER','FAILED','ANSWERED','BUSY','uniqueid','blinds','info','channel'];(function(_0x493e27,_0x5ede0b){var _0x5e2080=function(_0x23057c){while(--_0x23057c){_0x493e27['push'](_0x493e27['shift']());}};_0x5e2080(++_0x5ede0b);}(_0x223b,0xcd));var _0xb223=function(_0x1960df,_0x438ca5){_0x1960df=_0x1960df-0x0;var _0xd2c5aa=_0x223b[_0x1960df];return _0xd2c5aa;};'use strict';var _=require(_0xb223('0x0'));var util=require(_0xb223('0x1'));var utils=require('./utils');var transfers=require(_0xb223('0x2'));var dispositions=[_0xb223('0x3'),_0xb223('0x4'),'FAILED',_0xb223('0x3'),'NO\x20ANSWER',_0xb223('0x3'),_0xb223('0x5'),_0xb223('0x6'),_0xb223('0x4'),_0xb223('0x4'),_0xb223('0x4')];var channels={};function writeDB(_0x3ed323){var _0x3e2201;if(transfers['blinds'][_0x3ed323[_0xb223('0x7')]]){_0x3e2201=_0x3ed323[_0xb223('0x7')];_0x3ed323['uniqueid']=transfers[_0xb223('0x8')][_0x3ed323[_0xb223('0x7')]]['transfereeuniqueid'];}utils[_0xb223('0x9')](util['format']('[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x3ed323[_0xb223('0x7')],_0x3ed323[_0xb223('0xa')],_0x3ed323[_0xb223('0xb')],_0x3ed323[_0xb223('0xc')],_0x3ed323[_0xb223('0xd')],_0x3ed323['calleridnum'],_0x3ed323[_0xb223('0xe')],_0x3ed323[_0xb223('0xf')]));if(_0x3ed323[_0xb223('0x10')]){utils[_0xb223('0x11')](_0x3ed323[_0xb223('0x10')])[_0xb223('0x12')](function(_0xd1fa6d){if(_0xd1fa6d){_0x3ed323[_0xb223('0x13')]=_0xd1fa6d['id'];}utils[_0xb223('0x14')]('CreateVoiceCallReport',_0x3ed323);});}else{utils[_0xb223('0x14')](_0xb223('0x15'),_0x3ed323);}if(channels[_0x3ed323['uniqueid']]){delete channels[_0x3ed323['uniqueid']];}else if(_0x3e2201&&channels[_0x3e2201]){delete transfers['blinds'][_0x3e2201];delete channels[_0x3e2201];}}exports[_0xb223('0x16')]=function(_0x22f6f5){try{utils[_0xb223('0x17')](util[_0xb223('0x18')](_0xb223('0x19'),_0x22f6f5[_0xb223('0x7')]),_0x22f6f5);if(_0x22f6f5[_0xb223('0x7')]==_0x22f6f5['linkedid']&&_0x22f6f5[_0xb223('0xa')]!='OutgoingSpoolFailed'){utils['info'](util[_0xb223('0x18')](_0xb223('0x1a'),_0x22f6f5[_0xb223('0x7')],_0x22f6f5[_0xb223('0x1b')],_0x22f6f5[_0xb223('0x1c')]));channels[_0x22f6f5[_0xb223('0x7')]]={'uniqueid':_0x22f6f5[_0xb223('0x7')],'accountcode':_0x22f6f5[_0xb223('0x10')],'source':_0x22f6f5['calleridnum'],'destination':_0x22f6f5[_0xb223('0x1c')],'destinationcontext':_0x22f6f5[_0xb223('0x1b')],'channel':_0x22f6f5[_0xb223('0xa')],'starttime':utils[_0xb223('0x1d')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0xb223('0x3'),'amaflags':_0xb223('0x1e')};}}catch(_0x12e41b){utils['error'](util[_0xb223('0x18')]('[%s][calls][newchannel]',_0x22f6f5['uniqueid']),_0x12e41b);}};exports['newstate']=function(_0x35a196){try{utils[_0xb223('0x17')](util[_0xb223('0x18')](_0xb223('0x1f'),_0x35a196['uniqueid']),_0x35a196);if(!_['isNil'](channels[_0x35a196[_0xb223('0x7')]])&&_0x35a196[_0xb223('0x20')]==0x6){utils['info'](util[_0xb223('0x18')](_0xb223('0x21'),_0x35a196[_0xb223('0x7')],_0x35a196[_0xb223('0x1b')],_0x35a196[_0xb223('0xa')]));if(_[_0xb223('0x22')](channels[_0x35a196[_0xb223('0x7')]]['systemanswertime'])){channels[_0x35a196[_0xb223('0x7')]][_0xb223('0x23')]=utils[_0xb223('0x1d')]();}}else if(!_['isNil'](channels[_0x35a196[_0xb223('0x24')]])&&_0x35a196['channelstate']==0x6&&_0x35a196[_0xb223('0x1b')]!=_0xb223('0x25')){utils[_0xb223('0x9')](util[_0xb223('0x18')](_0xb223('0x26'),_0x35a196['uniqueid'],_0x35a196['linkedid'],_0x35a196['context'],_0x35a196[_0xb223('0xa')]));channels[_0x35a196[_0xb223('0x24')]][_0xb223('0x10')]=_0x35a196['accountcode'];channels[_0x35a196['linkedid']][_0xb223('0x27')]=_0x35a196['channel'];if(_[_0xb223('0x22')](channels[_0x35a196[_0xb223('0x24')]][_0xb223('0x28')])){channels[_0x35a196['linkedid']][_0xb223('0x28')]=utils[_0xb223('0x1d')]();}channels[_0x35a196[_0xb223('0x24')]][_0xb223('0x29')]=dispositions[_['toNumber'](_0x35a196[_0xb223('0x20')])]||_0xb223('0x5');}}catch(_0x2184ca){utils[_0xb223('0x2a')](util['format']('[%s][calls][newstate]',_0x35a196[_0xb223('0x7')]),_0x2184ca);}};exports['hangup']=function(_0x206263){try{if(!_['isNil'](channels[_0x206263['uniqueid']])){utils[_0xb223('0x17')](util[_0xb223('0x18')]('[%s][calls][hangup]',_0x206263[_0xb223('0x7')]),_0x206263);if(_[_0xb223('0x22')](channels[_0x206263[_0xb223('0x7')]]['callerid'])){channels[_0x206263[_0xb223('0x7')]][_0xb223('0x2b')]=_0x206263[_0xb223('0x2c')]+'\x20<'+_0x206263['calleridnum']+'>';}utils[_0xb223('0x9')](util[_0xb223('0x18')](_0xb223('0x2d'),_0x206263[_0xb223('0x7')],channels[_0x206263[_0xb223('0x7')]][_0xb223('0x2b')],_0x206263[_0xb223('0x2e')]));channels[_0x206263[_0xb223('0x7')]][_0xb223('0x2f')]=utils['now']();channels[_0x206263['uniqueid']][_0xb223('0x30')]=utils[_0xb223('0x31')](channels[_0x206263['uniqueid']][_0xb223('0x2f')],channels[_0x206263[_0xb223('0x7')]][_0xb223('0x32')]);channels[_0x206263[_0xb223('0x7')]][_0xb223('0x33')]=channels[_0x206263[_0xb223('0x7')]][_0xb223('0x28')]?utils[_0xb223('0x31')](channels[_0x206263[_0xb223('0x7')]]['endtime'],channels[_0x206263['uniqueid']][_0xb223('0x28')]):0x0;writeDB(channels[_0x206263[_0xb223('0x7')]]);}}catch(_0x5e3ba1){utils[_0xb223('0x2a')](util[_0xb223('0x18')](_0xb223('0x34'),_0x206263[_0xb223('0x7')]),_0x5e3ba1);}};exports[_0xb223('0x35')]=function(_0x4026d6){try{if(!_['isNil'](channels[_0x4026d6['localtwolinkedid']])){utils['debug'](util[_0xb223('0x18')](_0xb223('0x36'),_0x4026d6[_0xb223('0x37')]),_0x4026d6);if(channels[_0x4026d6[_0xb223('0x38')]][_0xb223('0xa')]==_0x4026d6[_0xb223('0x39')]){utils['info'](util[_0xb223('0x18')](_0xb223('0x3a'),_0x4026d6[_0xb223('0x37')],_0x4026d6['localtwolinkedid'],_0x4026d6[_0xb223('0x3b')]));channels[_0x4026d6['localtwolinkedid']][_0xb223('0x27')]=_0x4026d6[_0xb223('0x3b')];channels[_0x4026d6[_0xb223('0x38')]]['userfield']='_attended';}else if(channels[_0x4026d6[_0xb223('0x38')]][_0xb223('0xa')]=_0x4026d6[_0xb223('0x3c')]){utils[_0xb223('0x9')](util['format']('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x4026d6[_0xb223('0x37')],_0x4026d6['localtwolinkedid'],_0x4026d6[_0xb223('0x3d')]));channels[_0x4026d6[_0xb223('0x38')]][_0xb223('0x27')]=_0x4026d6[_0xb223('0x3d')];channels[_0x4026d6['localtwolinkedid']][_0xb223('0x3e')]=_0xb223('0x3f');}}}catch(_0x36b7fd){utils[_0xb223('0x2a')](util[_0xb223('0x18')](_0xb223('0x36'),_0x4026d6[_0xb223('0x37')]),_0x36b7fd);}};exports['musiconholdstart']=function(_0x30dc51){try{if(!_[_0xb223('0x22')](channels[_0x30dc51[_0xb223('0x7')]])){utils[_0xb223('0x17')](util['format'](_0xb223('0x40'),_0x30dc51[_0xb223('0x7')]),_0x30dc51);channels[_0x30dc51[_0xb223('0x7')]]['musiconholdstartAt']=utils['now']();utils[_0xb223('0x9')](util[_0xb223('0x18')](_0xb223('0x41'),_0x30dc51[_0xb223('0x7')],channels[_0x30dc51[_0xb223('0x7')]][_0xb223('0x42')]));}}catch(_0x43f5a0){utils[_0xb223('0x2a')](util[_0xb223('0x18')](_0xb223('0x40'),_0x30dc51[_0xb223('0x7')]),_0x43f5a0);}};exports[_0xb223('0x43')]=function(_0x3f6a3b){try{if(!_[_0xb223('0x22')](channels[_0x3f6a3b[_0xb223('0x7')]])){utils['debug'](util[_0xb223('0x18')](_0xb223('0x44'),_0x3f6a3b[_0xb223('0x7')]),_0x3f6a3b);if(!_['isNil'](channels[_0x3f6a3b[_0xb223('0x7')]][_0xb223('0x42')])){channels[_0x3f6a3b[_0xb223('0x7')]][_0xb223('0x45')]+=utils[_0xb223('0x31')](utils[_0xb223('0x1d')](),channels[_0x3f6a3b[_0xb223('0x7')]][_0xb223('0x42')]);utils[_0xb223('0x9')](util[_0xb223('0x18')](_0xb223('0x46'),_0x3f6a3b['uniqueid'],channels[_0x3f6a3b['uniqueid']][_0xb223('0x45')]));delete channels[_0x3f6a3b[_0xb223('0x7')]][_0xb223('0x42')];}}}catch(_0x29c877){utils[_0xb223('0x2a')](util[_0xb223('0x18')](_0xb223('0x44'),_0x3f6a3b[_0xb223('0x7')]),_0x29c877);}};exports['varset']=function(_0x42d768){try{if(!_[_0xb223('0x22')](channels[_0x42d768[_0xb223('0x7')]])){utils[_0xb223('0x17')](util[_0xb223('0x18')](_0xb223('0x47'),_0x42d768[_0xb223('0x7')]),_0x42d768);if(!_[_0xb223('0x22')](_0x42d768[_0xb223('0x48')][_0xb223('0x49')])){utils[_0xb223('0x9')](util[_0xb223('0x18')](_0xb223('0x4a'),_0x42d768[_0xb223('0x7')],_0x42d768[_0xb223('0x4b')]));channels[_0x42d768[_0xb223('0x7')]]['source']=_0x42d768['value'];}if(!_[_0xb223('0x22')](_0x42d768[_0xb223('0x48')][_0xb223('0x4c')])){utils[_0xb223('0x9')](util['format'](_0xb223('0x4d'),_0x42d768[_0xb223('0x7')],_0x42d768[_0xb223('0x4b')]));channels[_0x42d768['uniqueid']][_0xb223('0x4e')]=_0x42d768['value'];channels[_0x42d768[_0xb223('0x7')]][_0xb223('0x2b')]='\x22'+_0x42d768[_0xb223('0x4b')]+'\x22\x20<'+_0x42d768[_0xb223('0x4b')]+'>';}if(!_[_0xb223('0x22')](_0x42d768[_0xb223('0x48')][_0xb223('0x4f')])||!_[_0xb223('0x22')](_0x42d768[_0xb223('0x48')][_0xb223('0x50')])){utils['info'](util[_0xb223('0x18')](_0xb223('0x51'),_0x42d768[_0xb223('0x7')],!_[_0xb223('0x22')](_0x42d768[_0xb223('0x48')][_0xb223('0x4f')])?_0xb223('0x4f'):_0xb223('0x50'),_0x42d768[_0xb223('0x4b')]));channels[_0x42d768[_0xb223('0x7')]][_0xb223('0x2b')]=_0x42d768[_0xb223('0x4b')];}if(!_[_0xb223('0x22')](_0x42d768[_0xb223('0x48')][_0xb223('0x52')])||!_[_0xb223('0x22')](_0x42d768[_0xb223('0x48')]['xmcs-queue'])){utils[_0xb223('0x9')](util[_0xb223('0x18')](_0xb223('0x51'),_0x42d768[_0xb223('0x7')],!_[_0xb223('0x22')](_0x42d768['variable'][_0xb223('0x52')])?_0xb223('0x52'):_0xb223('0x53'),_0x42d768[_0xb223('0x4b')]));channels[_0x42d768[_0xb223('0x7')]][_0xb223('0x54')]='Queue';channels[_0x42d768[_0xb223('0x7')]]['lastdata']=_0x42d768[_0xb223('0x4b')];channels[_0x42d768[_0xb223('0x7')]][_0xb223('0xb')]=!![];}if(!_['isNil'](_0x42d768['variable'][_0xb223('0x55')])){utils[_0xb223('0x9')](util['format']('[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s',_0x42d768[_0xb223('0x7')],_0x42d768['value']));channels[_0x42d768[_0xb223('0x7')]][_0xb223('0x56')]=_0x42d768[_0xb223('0x4b')];}if(!_['isNil'](_0x42d768[_0xb223('0x48')][_0xb223('0x57')])){utils[_0xb223('0x9')](util[_0xb223('0x18')](_0xb223('0x58'),_0x42d768['uniqueid'],_0x42d768[_0xb223('0x4b')]));channels[_0x42d768[_0xb223('0x7')]][_0xb223('0x59')]=_0x42d768['value'];}if(!_[_0xb223('0x22')](_0x42d768[_0xb223('0x48')][_0xb223('0x5a')])){utils[_0xb223('0x9')](util['format'](_0xb223('0x5b'),_0x42d768[_0xb223('0x7')],_0x42d768[_0xb223('0x4b')]));channels[_0x42d768[_0xb223('0x7')]][_0xb223('0x5c')]=_0x42d768[_0xb223('0x4b')];}if(!_['isNil'](_0x42d768[_0xb223('0x48')][_0xb223('0x5d')])){utils['info'](util[_0xb223('0x18')](_0xb223('0x5e'),_0x42d768['uniqueid'],_0x42d768[_0xb223('0x4b')]));channels[_0x42d768[_0xb223('0x7')]][_0xb223('0x5d')]=_0x42d768['value'];}}}catch(_0x5d693f){utils[_0xb223('0x2a')](util['format'](_0xb223('0x47'),_0x42d768[_0xb223('0x7')]),_0x5d693f);}};exports['newexten']=function(_0x2849cf){try{if(!_['isNil'](channels[_0x2849cf[_0xb223('0x7')]])){utils[_0xb223('0x17')](util[_0xb223('0x18')](_0xb223('0x5f'),_0x2849cf[_0xb223('0x7')]),_0x2849cf);utils[_0xb223('0x9')](util[_0xb223('0x18')](_0xb223('0x60'),_0x2849cf[_0xb223('0x7')],_0x2849cf['application'],_0x2849cf[_0xb223('0x61')]));if(_0x2849cf[_0xb223('0x62')][_0xb223('0x63')]()==_0xb223('0x64')&&_[_0xb223('0x65')](_0x2849cf[_0xb223('0x61')][_0xb223('0x63')](),_0xb223('0x66'))){var _0x1045d6=_0x2849cf[_0xb223('0x61')][_0xb223('0x67')]('=');var _0x53f3f9=_0x1045d6[0x0][_0xb223('0x68')](_0x1045d6[0x0][_0xb223('0x69')]('(')+0x1,_0x1045d6[0x0][_0xb223('0x69')](')'));var _0x56a069=_0x1045d6[0x1];channels[_0x2849cf['uniqueid']][_0x53f3f9]=_0x56a069;}if(!_['includes'](['hangup','noop','execif','set',_0xb223('0x6a')],_0x2849cf[_0xb223('0x62')][_0xb223('0x63')]())){channels[_0x2849cf[_0xb223('0x7')]][_0xb223('0x54')]=_0x2849cf[_0xb223('0x62')];channels[_0x2849cf[_0xb223('0x7')]][_0xb223('0x6b')]=_0x2849cf[_0xb223('0x61')];}}}catch(_0x1d72f3){utils['error'](util[_0xb223('0x18')]('[%s][calls][newexten]',_0x2849cf[_0xb223('0x7')]),_0x1d72f3);}};
\ No newline at end of file
+var _0x58db=['then','request','CreateVoiceCallReport','newchannel','debug','[%s][calls][newchannel]','linkedid','OutgoingSpoolFailed','info','context','exten','now','DOCUMENTATION','newstate','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','isNil','systemanswertime','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','[%s][calls][newstate]','hangup','callerid','cause-txt','endtime','duration','billableseconds','diffTime','[%s][calls][hangup]','localtwolinkedid','[%s][calls][attendedtransfer]','origtransfereruniqueid','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','_attended','transfertargetchannel','origtransfererchannel','error','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstop','[%s][calls][musiconholdstop]','[%s][calls][musiconholdstop]\x20mohtime:%s','mohtime','varset','[%s][calls][varset]','variable','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','source','\x22\x20<','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','xmcs-queue','lastapplication','Queue','lastdata','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','toLowerCase','set','startsWith','appdata','split','lastIndexOf','includes','noop','gotoif','[%s][calls][newexten]','lodash','util','./utils','./transfers.controller','NO\x20ANSWER','FAILED','ANSWERED','blinds','uniqueid','transfereeuniqueid','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','interface','calleridnum','connectedlinenum','accountcode'];(function(_0x403c20,_0x4a7b99){var _0x2b271a=function(_0x106ecb){while(--_0x106ecb){_0x403c20['push'](_0x403c20['shift']());}};_0x2b271a(++_0x4a7b99);}(_0x58db,0x1f1));var _0xb58d=function(_0x5dd012,_0x253195){_0x5dd012=_0x5dd012-0x0;var _0x41b8bf=_0x58db[_0x5dd012];return _0x41b8bf;};'use strict';var _=require(_0xb58d('0x0'));var util=require(_0xb58d('0x1'));var utils=require(_0xb58d('0x2'));var transfers=require(_0xb58d('0x3'));var dispositions=[_0xb58d('0x4'),_0xb58d('0x5'),'FAILED',_0xb58d('0x4'),'NO\x20ANSWER',_0xb58d('0x4'),_0xb58d('0x6'),'BUSY',_0xb58d('0x5'),_0xb58d('0x5'),_0xb58d('0x5')];var channels={};function writeDB(_0x3107c4){var _0x17492e;if(transfers[_0xb58d('0x7')][_0x3107c4[_0xb58d('0x8')]]){_0x17492e=_0x3107c4[_0xb58d('0x8')];_0x3107c4['uniqueid']=transfers[_0xb58d('0x7')][_0x3107c4['uniqueid']][_0xb58d('0x9')];}utils['info'](util[_0xb58d('0xa')](_0xb58d('0xb'),_0x3107c4[_0xb58d('0x8')],_0x3107c4[_0xb58d('0xc')],_0x3107c4[_0xb58d('0xd')],_0x3107c4['membername'],_0x3107c4[_0xb58d('0xe')],_0x3107c4[_0xb58d('0xf')],_0x3107c4[_0xb58d('0x10')],_0x3107c4['lastevent']));if(_0x3107c4[_0xb58d('0x11')]){utils['getUserByInternal'](_0x3107c4[_0xb58d('0x11')])[_0xb58d('0x12')](function(_0x14c6d3){if(_0x14c6d3){_0x3107c4['UserId']=_0x14c6d3['id'];}utils[_0xb58d('0x13')]('CreateVoiceCallReport',_0x3107c4);});}else{utils[_0xb58d('0x13')](_0xb58d('0x14'),_0x3107c4);}if(channels[_0x3107c4['uniqueid']]){delete channels[_0x3107c4[_0xb58d('0x8')]];}else if(_0x17492e&&channels[_0x17492e]){delete transfers[_0xb58d('0x7')][_0x17492e];delete channels[_0x17492e];}}exports[_0xb58d('0x15')]=function(_0x54e54b){try{utils[_0xb58d('0x16')](util[_0xb58d('0xa')](_0xb58d('0x17'),_0x54e54b['uniqueid']),_0x54e54b);if(_0x54e54b[_0xb58d('0x8')]==_0x54e54b[_0xb58d('0x18')]&&_0x54e54b[_0xb58d('0xc')]!=_0xb58d('0x19')){utils[_0xb58d('0x1a')](util[_0xb58d('0xa')]('[%s][calls][newchannel]\x20context:%s\x20exten:%s',_0x54e54b[_0xb58d('0x8')],_0x54e54b[_0xb58d('0x1b')],_0x54e54b['exten']));channels[_0x54e54b[_0xb58d('0x8')]]={'uniqueid':_0x54e54b[_0xb58d('0x8')],'accountcode':_0x54e54b[_0xb58d('0x11')],'source':_0x54e54b['calleridnum'],'destination':_0x54e54b[_0xb58d('0x1c')],'destinationcontext':_0x54e54b[_0xb58d('0x1b')],'channel':_0x54e54b[_0xb58d('0xc')],'starttime':utils[_0xb58d('0x1d')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0xb58d('0x4'),'amaflags':_0xb58d('0x1e')};}}catch(_0x477d7f){utils['error'](util['format']('[%s][calls][newchannel]',_0x54e54b['uniqueid']),_0x477d7f);}};exports[_0xb58d('0x1f')]=function(_0x36e855){try{utils['debug'](util['format']('[%s][calls][newstate]',_0x36e855[_0xb58d('0x8')]),_0x36e855);if(!_['isNil'](channels[_0x36e855['uniqueid']])&&_0x36e855[_0xb58d('0x20')]==0x6){utils[_0xb58d('0x1a')](util['format'](_0xb58d('0x21'),_0x36e855[_0xb58d('0x8')],_0x36e855[_0xb58d('0x1b')],_0x36e855[_0xb58d('0xc')]));if(_[_0xb58d('0x22')](channels[_0x36e855['uniqueid']][_0xb58d('0x23')])){channels[_0x36e855[_0xb58d('0x8')]]['systemanswertime']=utils[_0xb58d('0x1d')]();}}else if(!_[_0xb58d('0x22')](channels[_0x36e855[_0xb58d('0x18')]])&&_0x36e855[_0xb58d('0x20')]==0x6&&_0x36e855[_0xb58d('0x1b')]!=_0xb58d('0x24')){utils[_0xb58d('0x1a')](util['format'](_0xb58d('0x25'),_0x36e855[_0xb58d('0x8')],_0x36e855[_0xb58d('0x18')],_0x36e855[_0xb58d('0x1b')],_0x36e855[_0xb58d('0xc')]));channels[_0x36e855[_0xb58d('0x18')]][_0xb58d('0x11')]=_0x36e855['accountcode'];channels[_0x36e855['linkedid']][_0xb58d('0x26')]=_0x36e855['channel'];if(_[_0xb58d('0x22')](channels[_0x36e855['linkedid']][_0xb58d('0x27')])){channels[_0x36e855[_0xb58d('0x18')]][_0xb58d('0x27')]=utils[_0xb58d('0x1d')]();}channels[_0x36e855['linkedid']][_0xb58d('0x28')]=dispositions[_['toNumber'](_0x36e855['channelstate'])]||_0xb58d('0x6');}}catch(_0x1de79c){utils['error'](util['format'](_0xb58d('0x29'),_0x36e855[_0xb58d('0x8')]),_0x1de79c);}};exports[_0xb58d('0x2a')]=function(_0x4e69e3){try{if(!_['isNil'](channels[_0x4e69e3[_0xb58d('0x8')]])){utils[_0xb58d('0x16')](util['format']('[%s][calls][hangup]',_0x4e69e3[_0xb58d('0x8')]),_0x4e69e3);if(_['isNil'](channels[_0x4e69e3[_0xb58d('0x8')]][_0xb58d('0x2b')])){channels[_0x4e69e3['uniqueid']]['callerid']=_0x4e69e3['calleridname']+'\x20<'+_0x4e69e3[_0xb58d('0xf')]+'>';}utils[_0xb58d('0x1a')](util[_0xb58d('0xa')]('[%s][calls][hangup]\x20callerid:%s\x20reason:%s',_0x4e69e3['uniqueid'],channels[_0x4e69e3[_0xb58d('0x8')]][_0xb58d('0x2b')],_0x4e69e3[_0xb58d('0x2c')]));channels[_0x4e69e3[_0xb58d('0x8')]][_0xb58d('0x2d')]=utils['now']();channels[_0x4e69e3[_0xb58d('0x8')]][_0xb58d('0x2e')]=utils['diffTime'](channels[_0x4e69e3[_0xb58d('0x8')]][_0xb58d('0x2d')],channels[_0x4e69e3['uniqueid']]['starttime']);channels[_0x4e69e3[_0xb58d('0x8')]][_0xb58d('0x2f')]=channels[_0x4e69e3[_0xb58d('0x8')]][_0xb58d('0x27')]?utils[_0xb58d('0x30')](channels[_0x4e69e3['uniqueid']][_0xb58d('0x2d')],channels[_0x4e69e3['uniqueid']][_0xb58d('0x27')]):0x0;writeDB(channels[_0x4e69e3[_0xb58d('0x8')]]);}}catch(_0x5f21d2){utils['error'](util['format'](_0xb58d('0x31'),_0x4e69e3[_0xb58d('0x8')]),_0x5f21d2);}};exports['attendedtransfer']=function(_0x2001d9){try{if(!_[_0xb58d('0x22')](channels[_0x2001d9[_0xb58d('0x32')]])){utils[_0xb58d('0x16')](util[_0xb58d('0xa')](_0xb58d('0x33'),_0x2001d9[_0xb58d('0x34')]),_0x2001d9);if(channels[_0x2001d9[_0xb58d('0x32')]][_0xb58d('0xc')]==_0x2001d9['transfereechannel']){utils[_0xb58d('0x1a')](util[_0xb58d('0xa')](_0xb58d('0x35'),_0x2001d9[_0xb58d('0x34')],_0x2001d9[_0xb58d('0x32')],_0x2001d9[_0xb58d('0x36')]));channels[_0x2001d9[_0xb58d('0x32')]][_0xb58d('0x26')]=_0x2001d9[_0xb58d('0x36')];channels[_0x2001d9[_0xb58d('0x32')]][_0xb58d('0x37')]=_0xb58d('0x38');}else if(channels[_0x2001d9[_0xb58d('0x32')]][_0xb58d('0xc')]=_0x2001d9[_0xb58d('0x39')]){utils[_0xb58d('0x1a')](util[_0xb58d('0xa')](_0xb58d('0x35'),_0x2001d9[_0xb58d('0x34')],_0x2001d9[_0xb58d('0x32')],_0x2001d9[_0xb58d('0x3a')]));channels[_0x2001d9['localtwolinkedid']][_0xb58d('0x26')]=_0x2001d9[_0xb58d('0x3a')];channels[_0x2001d9[_0xb58d('0x32')]][_0xb58d('0x37')]='_attended';}}}catch(_0x282e9d){utils[_0xb58d('0x3b')](util[_0xb58d('0xa')]('[%s][calls][attendedtransfer]',_0x2001d9['origtransfereruniqueid']),_0x282e9d);}};exports[_0xb58d('0x3c')]=function(_0x489daa){try{if(!_[_0xb58d('0x22')](channels[_0x489daa[_0xb58d('0x8')]])){utils[_0xb58d('0x16')](util['format'](_0xb58d('0x3d'),_0x489daa[_0xb58d('0x8')]),_0x489daa);channels[_0x489daa[_0xb58d('0x8')]][_0xb58d('0x3e')]=utils[_0xb58d('0x1d')]();utils[_0xb58d('0x1a')](util[_0xb58d('0xa')](_0xb58d('0x3f'),_0x489daa['uniqueid'],channels[_0x489daa['uniqueid']][_0xb58d('0x3e')]));}}catch(_0x2a32fb){utils[_0xb58d('0x3b')](util[_0xb58d('0xa')](_0xb58d('0x3d'),_0x489daa[_0xb58d('0x8')]),_0x2a32fb);}};exports[_0xb58d('0x40')]=function(_0x2908df){try{if(!_[_0xb58d('0x22')](channels[_0x2908df[_0xb58d('0x8')]])){utils[_0xb58d('0x16')](util[_0xb58d('0xa')](_0xb58d('0x41'),_0x2908df[_0xb58d('0x8')]),_0x2908df);if(!_[_0xb58d('0x22')](channels[_0x2908df[_0xb58d('0x8')]][_0xb58d('0x3e')])){channels[_0x2908df[_0xb58d('0x8')]]['mohtime']+=utils[_0xb58d('0x30')](utils[_0xb58d('0x1d')](),channels[_0x2908df[_0xb58d('0x8')]]['musiconholdstartAt']);utils[_0xb58d('0x1a')](util['format'](_0xb58d('0x42'),_0x2908df[_0xb58d('0x8')],channels[_0x2908df[_0xb58d('0x8')]][_0xb58d('0x43')]));delete channels[_0x2908df[_0xb58d('0x8')]]['musiconholdstartAt'];}}}catch(_0x19a61d){utils[_0xb58d('0x3b')](util[_0xb58d('0xa')](_0xb58d('0x41'),_0x2908df[_0xb58d('0x8')]),_0x19a61d);}};exports[_0xb58d('0x44')]=function(_0x220082){try{if(!_['isNil'](channels[_0x220082[_0xb58d('0x8')]])){utils[_0xb58d('0x16')](util[_0xb58d('0xa')](_0xb58d('0x45'),_0x220082['uniqueid']),_0x220082);if(!_[_0xb58d('0x22')](_0x220082[_0xb58d('0x46')][_0xb58d('0x47')])){utils['info'](util[_0xb58d('0xa')](_0xb58d('0x48'),_0x220082[_0xb58d('0x8')],_0x220082[_0xb58d('0x49')]));channels[_0x220082['uniqueid']][_0xb58d('0x4a')]=_0x220082[_0xb58d('0x49')];}if(!_['isNil'](_0x220082[_0xb58d('0x46')]['xmd-phone'])){utils[_0xb58d('0x1a')](util['format']('[%s][calls][varset]\x20variable:xmd-phone\x20value:%s',_0x220082[_0xb58d('0x8')],_0x220082['value']));channels[_0x220082[_0xb58d('0x8')]]['destination']=_0x220082['value'];channels[_0x220082['uniqueid']][_0xb58d('0x2b')]='\x22'+_0x220082[_0xb58d('0x49')]+_0xb58d('0x4b')+_0x220082[_0xb58d('0x49')]+'>';}if(!_[_0xb58d('0x22')](_0x220082[_0xb58d('0x46')][_0xb58d('0x4c')])||!_['isNil'](_0x220082['variable'][_0xb58d('0x4d')])){utils[_0xb58d('0x1a')](util[_0xb58d('0xa')](_0xb58d('0x4e'),_0x220082[_0xb58d('0x8')],!_[_0xb58d('0x22')](_0x220082[_0xb58d('0x46')]['xmd-callerid-preview'])?_0xb58d('0x4c'):_0xb58d('0x4d'),_0x220082[_0xb58d('0x49')]));channels[_0x220082[_0xb58d('0x8')]][_0xb58d('0x2b')]=_0x220082[_0xb58d('0x49')];}if(!_['isNil'](_0x220082[_0xb58d('0x46')][_0xb58d('0x4f')])||!_[_0xb58d('0x22')](_0x220082[_0xb58d('0x46')][_0xb58d('0x50')])){utils['info'](util[_0xb58d('0xa')](_0xb58d('0x4e'),_0x220082[_0xb58d('0x8')],!_[_0xb58d('0x22')](_0x220082[_0xb58d('0x46')]['xmd-queue'])?_0xb58d('0x4f'):'xmcs-queue',_0x220082['value']));channels[_0x220082[_0xb58d('0x8')]][_0xb58d('0x51')]=_0xb58d('0x52');channels[_0x220082['uniqueid']][_0xb58d('0x53')]=_0x220082[_0xb58d('0x49')];channels[_0x220082[_0xb58d('0x8')]][_0xb58d('0xd')]=!![];}if(!_[_0xb58d('0x22')](_0x220082[_0xb58d('0x46')]['xmd-contactid'])){utils[_0xb58d('0x1a')](util[_0xb58d('0xa')](_0xb58d('0x54'),_0x220082['uniqueid'],_0x220082[_0xb58d('0x49')]));channels[_0x220082[_0xb58d('0x8')]][_0xb58d('0x55')]=_0x220082[_0xb58d('0x49')];}if(!_[_0xb58d('0x22')](_0x220082[_0xb58d('0x46')]['xmd-cdrtype'])){utils[_0xb58d('0x1a')](util['format'](_0xb58d('0x56'),_0x220082[_0xb58d('0x8')],_0x220082[_0xb58d('0x49')]));channels[_0x220082[_0xb58d('0x8')]][_0xb58d('0x57')]=_0x220082['value'];}if(!_['isNil'](_0x220082[_0xb58d('0x46')]['outboundrouteid'])){utils[_0xb58d('0x1a')](util[_0xb58d('0xa')](_0xb58d('0x58'),_0x220082[_0xb58d('0x8')],_0x220082[_0xb58d('0x49')]));channels[_0x220082[_0xb58d('0x8')]]['routeid']=_0x220082[_0xb58d('0x49')];}if(!_[_0xb58d('0x22')](_0x220082[_0xb58d('0x46')][_0xb58d('0x59')])){utils[_0xb58d('0x1a')](util[_0xb58d('0xa')](_0xb58d('0x5a'),_0x220082[_0xb58d('0x8')],_0x220082[_0xb58d('0x49')]));channels[_0x220082[_0xb58d('0x8')]]['sipcallid']=_0x220082[_0xb58d('0x49')];}}}catch(_0xc72240){utils[_0xb58d('0x3b')](util[_0xb58d('0xa')](_0xb58d('0x45'),_0x220082[_0xb58d('0x8')]),_0xc72240);}};exports['newexten']=function(_0x4ff00b){try{if(!_['isNil'](channels[_0x4ff00b[_0xb58d('0x8')]])){utils[_0xb58d('0x16')](util[_0xb58d('0xa')]('[%s][calls][newexten]',_0x4ff00b[_0xb58d('0x8')]),_0x4ff00b);utils[_0xb58d('0x1a')](util[_0xb58d('0xa')](_0xb58d('0x5b'),_0x4ff00b[_0xb58d('0x8')],_0x4ff00b[_0xb58d('0x5c')],_0x4ff00b['appdata']));if(_0x4ff00b[_0xb58d('0x5c')][_0xb58d('0x5d')]()==_0xb58d('0x5e')&&_[_0xb58d('0x5f')](_0x4ff00b[_0xb58d('0x60')][_0xb58d('0x5d')](),'cdr')){var _0x109083=_0x4ff00b['appdata'][_0xb58d('0x61')]('=');var _0x32126c=_0x109083[0x0]['substring'](_0x109083[0x0][_0xb58d('0x62')]('(')+0x1,_0x109083[0x0][_0xb58d('0x62')](')'));var _0x38198c=_0x109083[0x1];channels[_0x4ff00b[_0xb58d('0x8')]][_0x32126c]=_0x38198c;}if(!_[_0xb58d('0x63')]([_0xb58d('0x2a'),_0xb58d('0x64'),'execif',_0xb58d('0x5e'),_0xb58d('0x65')],_0x4ff00b[_0xb58d('0x5c')]['toLowerCase']())){channels[_0x4ff00b[_0xb58d('0x8')]][_0xb58d('0x51')]=_0x4ff00b['application'];channels[_0x4ff00b['uniqueid']][_0xb58d('0x53')]=_0x4ff00b['appdata'];}}}catch(_0x2d4f49){utils[_0xb58d('0x3b')](util[_0xb58d('0xa')](_0xb58d('0x66'),_0x4ff00b['uniqueid']),_0x2d4f49);}};
\ No newline at end of file
index d6eac7f..ceadccd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x687d=['fullybooted','[core]\x20fullybooted','close','[core]\x20close','managerevent','connect','info','[core]\x20connected','shutdown'];(function(_0x57628c,_0x22c548){var _0x1ebbec=function(_0x4aa354){while(--_0x4aa354){_0x57628c['push'](_0x57628c['shift']());}};_0x1ebbec(++_0x22c548);}(_0x687d,0x191));var _0xd687=function(_0x42fe9c,_0x8ea8df){_0x42fe9c=_0x42fe9c-0x0;var _0xe8737f=_0x687d[_0x42fe9c];return _0xe8737f;};'use strict';var utils=require('./utils');exports[_0xd687('0x0')]=function(){utils[_0xd687('0x1')](_0xd687('0x2'));};exports[_0xd687('0x3')]=function(){utils[_0xd687('0x1')]('[core]\x20shutdown');};exports[_0xd687('0x4')]=function(){utils[_0xd687('0x1')](_0xd687('0x5'));};exports['error']=function(_0xdc8183){utils['error']('[core]\x20error',_0xdc8183);};exports[_0xd687('0x6')]=function(){utils[_0xd687('0x1')](_0xd687('0x7'));};exports[_0xd687('0x8')]=function(_0x5c23b4){};
\ No newline at end of file
+var _0xb602=['./utils','connect','info','[core]\x20connected','shutdown','[core]\x20fullybooted','error','[core]\x20error','managerevent'];(function(_0x1e03e6,_0x312c15){var _0xe6aa60=function(_0x1334fc){while(--_0x1334fc){_0x1e03e6['push'](_0x1e03e6['shift']());}};_0xe6aa60(++_0x312c15);}(_0xb602,0x156));var _0x2b60=function(_0x28e424,_0x4d6508){_0x28e424=_0x28e424-0x0;var _0x25ab59=_0xb602[_0x28e424];return _0x25ab59;};'use strict';var utils=require(_0x2b60('0x0'));exports[_0x2b60('0x1')]=function(){utils[_0x2b60('0x2')](_0x2b60('0x3'));};exports[_0x2b60('0x4')]=function(){utils[_0x2b60('0x2')]('[core]\x20shutdown');};exports['fullybooted']=function(){utils[_0x2b60('0x2')](_0x2b60('0x5'));};exports[_0x2b60('0x6')]=function(_0x2ae030){utils[_0x2b60('0x6')](_0x2b60('0x7'),_0x2ae030);};exports['close']=function(){utils['info']('[core]\x20close');};exports[_0x2b60('0x8')]=function(_0x55b75a){};
\ No newline at end of file
index e383fc7..b3d1313 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64aa=['varset','[%s][dials][varset]','isNil','variable','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','error','assign','starttime','now','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','dialstatus','answertime','lastevent','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]\x20dialstatus:%s','[%s][dials][dialend]','hangup','calleridname','complete','duration','diffTime','holdtime','endtime','billableseconds','[%s][dials][hangup]','lodash','util','./utils','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','channel','dialstring','calleridnum','connectedlinenum','request','CreateVoiceDialReport','debug','info','[%s][dials][newexten]\x20application:%s\x20appdata:%s','appdata','toLowerCase','set','startsWith','cdr(routeid)','split','uniqueid'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x64aa,0x1cb));var _0xa64a=function(_0x1b658,_0x344b6a){_0x1b658=_0x1b658-0x0;var _0x1d17e5=_0x64aa[_0x1b658];return _0x1d17e5;};'use strict';var _=require(_0xa64a('0x0'));var util=require(_0xa64a('0x1'));var utils=require(_0xa64a('0x2'));var dials={};function writeDB(_0x24ac02){utils['info'](util[_0xa64a('0x3')](_0xa64a('0x4'),_0x24ac02['uniqueid'],_0x24ac02[_0xa64a('0x5')],_0x24ac02[_0xa64a('0x6')],_0x24ac02[_0xa64a('0x7')],_0x24ac02[_0xa64a('0x8')],_0x24ac02['dialstatus']));utils[_0xa64a('0x9')](_0xa64a('0xa'),_0x24ac02);delete dials[_0x24ac02['uniqueid']];}exports['newexten']=function(_0x1355bb){try{utils[_0xa64a('0xb')](util[_0xa64a('0x3')]('[%s][dials][newexten]',_0x1355bb['uniqueid']),_0x1355bb);utils[_0xa64a('0xc')](util[_0xa64a('0x3')](_0xa64a('0xd'),_0x1355bb['uniqueid'],_0x1355bb['application'],_0x1355bb[_0xa64a('0xe')]));if(_0x1355bb['application'][_0xa64a('0xf')]()==_0xa64a('0x10')&&_[_0xa64a('0x11')](_0x1355bb[_0xa64a('0xe')][_0xa64a('0xf')](),_0xa64a('0x12'))){var _0x1d5862=_0x1355bb[_0xa64a('0xe')][_0xa64a('0x13')]('=');dials[_0x1355bb[_0xa64a('0x14')]]={'routeId':_0x1d5862[0x1]};}}catch(_0x1e31da){utils['error'](util[_0xa64a('0x3')]('[%s][dials][newexten]',_0x1355bb[_0xa64a('0x14')]),_0x1e31da);}};exports[_0xa64a('0x15')]=function(_0x12fa94){try{utils[_0xa64a('0xb')](util[_0xa64a('0x3')](_0xa64a('0x16'),_0x12fa94['uniqueid']),_0x12fa94);if(!_[_0xa64a('0x17')](_0x12fa94[_0xa64a('0x18')]['outboundrouteid'])){utils[_0xa64a('0xc')](util[_0xa64a('0x3')](_0xa64a('0x19'),_0x12fa94[_0xa64a('0x14')],_0x12fa94[_0xa64a('0x1a')]));dials[_0x12fa94[_0xa64a('0x14')]]={'routeId':_0x12fa94[_0xa64a('0x1a')]};}}catch(_0x321aae){utils[_0xa64a('0x1b')](util[_0xa64a('0x3')]('[%s][dials][varset]',_0x12fa94['uniqueid']),_0x321aae);}};exports['dialbegin']=function(_0x386082){try{if(!_[_0xa64a('0x17')](dials[_0x386082[_0xa64a('0x14')]])){utils['debug'](util[_0xa64a('0x3')]('[%s][dials][dialbegin]',_0x386082['uniqueid']),_0x386082);dials[_0x386082['uniqueid']]=_[_0xa64a('0x1c')](dials[_0x386082[_0xa64a('0x14')]],_0x386082);dials[_0x386082[_0xa64a('0x14')]][_0xa64a('0x1d')]=utils[_0xa64a('0x1e')]();dials[_0x386082['uniqueid']]['lastevent']=_0xa64a('0x1f');utils[_0xa64a('0xc')](util['format'](_0xa64a('0x20'),_0x386082[_0xa64a('0x14')],dials[_0x386082[_0xa64a('0x14')]][_0xa64a('0x1d')]));}}catch(_0x2529c7){utils[_0xa64a('0x1b')](util['format']('[%s][dials][dialbegin]',_0x386082[_0xa64a('0x14')]),_0x2529c7);}};exports['dialend']=function(_0x48a7c0){try{if(!_[_0xa64a('0x17')](dials[_0x48a7c0['uniqueid']])){utils[_0xa64a('0xb')](util[_0xa64a('0x3')]('[%s][dials][dialend]',_0x48a7c0[_0xa64a('0x14')]),_0x48a7c0);dials[_0x48a7c0['uniqueid']]['dialstatus']=_0x48a7c0['dialstatus'];if(_0x48a7c0[_0xa64a('0x21')]=='ANSWER'){dials[_0x48a7c0[_0xa64a('0x14')]]=_['assign'](dials[_0x48a7c0['uniqueid']],_0x48a7c0);dials[_0x48a7c0[_0xa64a('0x14')]][_0xa64a('0x22')]=utils[_0xa64a('0x1e')]();dials[_0x48a7c0['uniqueid']][_0xa64a('0x23')]='connect';utils[_0xa64a('0xc')](util[_0xa64a('0x3')](_0xa64a('0x24'),_0x48a7c0[_0xa64a('0x14')],_0x48a7c0['dialstatus'],dials[_0x48a7c0[_0xa64a('0x14')]][_0xa64a('0x22')]));}else{utils[_0xa64a('0xc')](util[_0xa64a('0x3')](_0xa64a('0x25'),_0x48a7c0[_0xa64a('0x14')],_0x48a7c0[_0xa64a('0x21')]));}}}catch(_0x124c3f){utils[_0xa64a('0x1b')](util[_0xa64a('0x3')](_0xa64a('0x26'),_0x48a7c0['uniqueid']),_0x124c3f);}};exports[_0xa64a('0x27')]=function(_0x29b464){try{if(!_['isNil'](dials[_0x29b464[_0xa64a('0x14')]])){utils[_0xa64a('0xb')](util[_0xa64a('0x3')]('[%s][dials][hangup]',_0x29b464[_0xa64a('0x14')]),_0x29b464);utils[_0xa64a('0xc')](util['format']('[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s',_0x29b464['uniqueid'],_0x29b464[_0xa64a('0x7')],_0x29b464[_0xa64a('0x28')],_0x29b464['cause-txt']));dials[_0x29b464[_0xa64a('0x14')]]=_[_0xa64a('0x1c')](dials[_0x29b464[_0xa64a('0x14')]],{'endtime':utils[_0xa64a('0x1e')](),'lastevent':_0xa64a('0x29')});dials[_0x29b464[_0xa64a('0x14')]][_0xa64a('0x2a')]=utils[_0xa64a('0x2b')](dials[_0x29b464[_0xa64a('0x14')]]['endtime'],dials[_0x29b464[_0xa64a('0x14')]][_0xa64a('0x1d')]);dials[_0x29b464[_0xa64a('0x14')]][_0xa64a('0x2c')]=utils['diffTime'](dials[_0x29b464[_0xa64a('0x14')]][_0xa64a('0x22')]||dials[_0x29b464['uniqueid']][_0xa64a('0x2d')],dials[_0x29b464['uniqueid']][_0xa64a('0x1d')]);dials[_0x29b464[_0xa64a('0x14')]][_0xa64a('0x2e')]=dials[_0x29b464[_0xa64a('0x14')]]['answertime']?utils['diffTime'](dials[_0x29b464[_0xa64a('0x14')]]['endtime'],dials[_0x29b464[_0xa64a('0x14')]][_0xa64a('0x22')]):0x0;writeDB(dials[_0x29b464[_0xa64a('0x14')]]);}}catch(_0x7349c5){utils[_0xa64a('0x1b')](util[_0xa64a('0x3')](_0xa64a('0x2f'),_0x29b464[_0xa64a('0x14')]),_0x7349c5);}};
\ No newline at end of file
+var _0x71f7=['util','./utils','info','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','dialstring','calleridnum','connectedlinenum','dialstatus','request','CreateVoiceDialReport','debug','[%s][dials][newexten]','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','cdr(routeid)','split','varset','[%s][dials][varset]','isNil','variable','outboundrouteid','value','error','dialbegin','[%s][dials][dialbegin]','assign','now','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','starttime','dialend','[%s][dials][dialend]','ANSWER','answertime','lastevent','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]\x20dialstatus:%s','hangup','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridname','cause-txt','complete','duration','diffTime','endtime','holdtime','billableseconds','lodash'];(function(_0x174623,_0x3c3372){var _0x7af0b4=function(_0x12fc64){while(--_0x12fc64){_0x174623['push'](_0x174623['shift']());}};_0x7af0b4(++_0x3c3372);}(_0x71f7,0x155));var _0x771f=function(_0x18cbe7,_0x27acd7){_0x18cbe7=_0x18cbe7-0x0;var _0x565136=_0x71f7[_0x18cbe7];return _0x565136;};'use strict';var _=require(_0x771f('0x0'));var util=require(_0x771f('0x1'));var utils=require(_0x771f('0x2'));var dials={};function writeDB(_0x21b2ad){utils[_0x771f('0x3')](util[_0x771f('0x4')](_0x771f('0x5'),_0x21b2ad[_0x771f('0x6')],_0x21b2ad[_0x771f('0x7')],_0x21b2ad[_0x771f('0x8')],_0x21b2ad[_0x771f('0x9')],_0x21b2ad[_0x771f('0xa')],_0x21b2ad[_0x771f('0xb')]));utils[_0x771f('0xc')](_0x771f('0xd'),_0x21b2ad);delete dials[_0x21b2ad[_0x771f('0x6')]];}exports['newexten']=function(_0x5f54ed){try{utils[_0x771f('0xe')](util[_0x771f('0x4')](_0x771f('0xf'),_0x5f54ed[_0x771f('0x6')]),_0x5f54ed);utils[_0x771f('0x3')](util['format'](_0x771f('0x10'),_0x5f54ed['uniqueid'],_0x5f54ed[_0x771f('0x11')],_0x5f54ed[_0x771f('0x12')]));if(_0x5f54ed[_0x771f('0x11')][_0x771f('0x13')]()==_0x771f('0x14')&&_[_0x771f('0x15')](_0x5f54ed[_0x771f('0x12')][_0x771f('0x13')](),_0x771f('0x16'))){var _0x2b07bb=_0x5f54ed[_0x771f('0x12')][_0x771f('0x17')]('=');dials[_0x5f54ed[_0x771f('0x6')]]={'routeId':_0x2b07bb[0x1]};}}catch(_0xeb8889){utils['error'](util[_0x771f('0x4')](_0x771f('0xf'),_0x5f54ed[_0x771f('0x6')]),_0xeb8889);}};exports[_0x771f('0x18')]=function(_0x2dde03){try{utils[_0x771f('0xe')](util[_0x771f('0x4')](_0x771f('0x19'),_0x2dde03['uniqueid']),_0x2dde03);if(!_[_0x771f('0x1a')](_0x2dde03[_0x771f('0x1b')][_0x771f('0x1c')])){utils[_0x771f('0x3')](util[_0x771f('0x4')]('[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s',_0x2dde03[_0x771f('0x6')],_0x2dde03[_0x771f('0x1d')]));dials[_0x2dde03[_0x771f('0x6')]]={'routeId':_0x2dde03[_0x771f('0x1d')]};}}catch(_0x528cbb){utils[_0x771f('0x1e')](util['format'](_0x771f('0x19'),_0x2dde03['uniqueid']),_0x528cbb);}};exports[_0x771f('0x1f')]=function(_0x57704f){try{if(!_[_0x771f('0x1a')](dials[_0x57704f['uniqueid']])){utils[_0x771f('0xe')](util['format'](_0x771f('0x20'),_0x57704f[_0x771f('0x6')]),_0x57704f);dials[_0x57704f[_0x771f('0x6')]]=_[_0x771f('0x21')](dials[_0x57704f[_0x771f('0x6')]],_0x57704f);dials[_0x57704f[_0x771f('0x6')]]['starttime']=utils[_0x771f('0x22')]();dials[_0x57704f[_0x771f('0x6')]]['lastevent']=_0x771f('0x23');utils[_0x771f('0x3')](util[_0x771f('0x4')](_0x771f('0x24'),_0x57704f[_0x771f('0x6')],dials[_0x57704f['uniqueid']][_0x771f('0x25')]));}}catch(_0x24abbc){utils[_0x771f('0x1e')](util[_0x771f('0x4')]('[%s][dials][dialbegin]',_0x57704f[_0x771f('0x6')]),_0x24abbc);}};exports[_0x771f('0x26')]=function(_0x17a1c5){try{if(!_[_0x771f('0x1a')](dials[_0x17a1c5[_0x771f('0x6')]])){utils[_0x771f('0xe')](util[_0x771f('0x4')](_0x771f('0x27'),_0x17a1c5[_0x771f('0x6')]),_0x17a1c5);dials[_0x17a1c5[_0x771f('0x6')]][_0x771f('0xb')]=_0x17a1c5['dialstatus'];if(_0x17a1c5['dialstatus']==_0x771f('0x28')){dials[_0x17a1c5['uniqueid']]=_['assign'](dials[_0x17a1c5[_0x771f('0x6')]],_0x17a1c5);dials[_0x17a1c5[_0x771f('0x6')]][_0x771f('0x29')]=utils[_0x771f('0x22')]();dials[_0x17a1c5[_0x771f('0x6')]][_0x771f('0x2a')]=_0x771f('0x2b');utils[_0x771f('0x3')](util['format'](_0x771f('0x2c'),_0x17a1c5[_0x771f('0x6')],_0x17a1c5['dialstatus'],dials[_0x17a1c5[_0x771f('0x6')]][_0x771f('0x29')]));}else{utils[_0x771f('0x3')](util['format'](_0x771f('0x2d'),_0x17a1c5[_0x771f('0x6')],_0x17a1c5[_0x771f('0xb')]));}}}catch(_0x459203){utils[_0x771f('0x1e')](util[_0x771f('0x4')]('[%s][dials][dialend]',_0x17a1c5[_0x771f('0x6')]),_0x459203);}};exports[_0x771f('0x2e')]=function(_0x5d147b){try{if(!_[_0x771f('0x1a')](dials[_0x5d147b[_0x771f('0x6')]])){utils['debug'](util['format'](_0x771f('0x2f'),_0x5d147b[_0x771f('0x6')]),_0x5d147b);utils['info'](util[_0x771f('0x4')](_0x771f('0x30'),_0x5d147b[_0x771f('0x6')],_0x5d147b[_0x771f('0x9')],_0x5d147b[_0x771f('0x31')],_0x5d147b[_0x771f('0x32')]));dials[_0x5d147b['uniqueid']]=_[_0x771f('0x21')](dials[_0x5d147b[_0x771f('0x6')]],{'endtime':utils['now'](),'lastevent':_0x771f('0x33')});dials[_0x5d147b[_0x771f('0x6')]][_0x771f('0x34')]=utils[_0x771f('0x35')](dials[_0x5d147b[_0x771f('0x6')]][_0x771f('0x36')],dials[_0x5d147b[_0x771f('0x6')]][_0x771f('0x25')]);dials[_0x5d147b[_0x771f('0x6')]][_0x771f('0x37')]=utils[_0x771f('0x35')](dials[_0x5d147b['uniqueid']][_0x771f('0x29')]||dials[_0x5d147b[_0x771f('0x6')]]['endtime'],dials[_0x5d147b['uniqueid']]['starttime']);dials[_0x5d147b[_0x771f('0x6')]][_0x771f('0x38')]=dials[_0x5d147b['uniqueid']][_0x771f('0x29')]?utils[_0x771f('0x35')](dials[_0x5d147b['uniqueid']]['endtime'],dials[_0x5d147b[_0x771f('0x6')]][_0x771f('0x29')]):0x0;writeDB(dials[_0x5d147b['uniqueid']]);}}catch(_0x576557){utils[_0x771f('0x1e')](util['format'](_0x771f('0x2f'),_0x5d147b[_0x771f('0x6')]),_0x576557);}};
\ No newline at end of file
index 46bb001..0db8bdd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3585=['shutdown','fullybooted','close','managerevent','format','device','devicestatechange','error','[%s][index][devicestatechange]','agentcalled','debug','uniqueid','[%s][index][agentringnoanswer]','agentconnect','agentcomplete','[%s][index][agentcomplete]','[%s][index][queuecallerabandon]','queuecallerabandon','queuecallerjoin','[%s][index][queuecallerjoin]','[%s][index][queuecallerleave]','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','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','./utils','util','asterisk','username','password','keepConnected','xdr','info','XDR\x20DISABLED','./calls.controller','./members.controller','./dials.controller','./transfers.controller','connect'];(function(_0x1a538f,_0x26124a){var _0x391040=function(_0xa0dad7){while(--_0xa0dad7){_0x1a538f['push'](_0x1a538f['shift']());}};_0x391040(++_0x26124a);}(_0x3585,0x6e));var _0x5358=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3585[_0x3dd15e];return _0x231fd0;};var AsteriskManager=require(_0x5358('0x0'));var config=require(_0x5358('0x1'));var utils=require(_0x5358('0x2'));var util=require(_0x5358('0x3'));var ami=new AsteriskManager(config['asterisk']['port'],config['asterisk']['ip'],config[_0x5358('0x4')][_0x5358('0x5')],config[_0x5358('0x4')][_0x5358('0x6')],!![]);ami[_0x5358('0x7')]();if(config[_0x5358('0x8')]&&config[_0x5358('0x8')]['disabled']){utils[_0x5358('0x9')](_0x5358('0xa'));}else{var agents=require('./agents.controller');var calls=require(_0x5358('0xb'));var queues=require('./queues.controller');var recordings=require('./recordings.controller');var members=require(_0x5358('0xc'));var dials=require(_0x5358('0xd'));var transfers=require(_0x5358('0xe'));var core=require('./core.controller');ami['on'](_0x5358('0xf'),core[_0x5358('0xf')]);ami['on'](_0x5358('0x10'),core[_0x5358('0x10')]);ami['on'](_0x5358('0x11'),core[_0x5358('0x11')]);ami['on']('error',core['error']);ami['on'](_0x5358('0x12'),core['close']);ami['on'](_0x5358('0x13'),core['managerevent']);ami['on']('devicestatechange',function(_0x1c4a7d){try{utils['debug'](util[_0x5358('0x14')]('[%s][index][devicestatechange]',_0x1c4a7d[_0x5358('0x15')]),_0x1c4a7d);members[_0x5358('0x16')](_0x1c4a7d);}catch(_0x218197){utils[_0x5358('0x17')](util[_0x5358('0x14')](_0x5358('0x18'),_0x1c4a7d[_0x5358('0x15')]),_0x218197);}});ami['on'](_0x5358('0x19'),function(_0x1a0f5e){try{utils[_0x5358('0x1a')](util[_0x5358('0x14')]('[%s][index][agentcalled]',_0x1a0f5e[_0x5358('0x1b')]),_0x1a0f5e);agents['agentcalled'](_0x1a0f5e);}catch(_0xc26d52){utils[_0x5358('0x17')](util[_0x5358('0x14')]('[%s][index][agentcalled]',_0x1a0f5e[_0x5358('0x1b')]),_0xc26d52);}});ami['on']('agentringnoanswer',function(_0x4257fa){try{utils['debug'](util[_0x5358('0x14')]('[%s][index][agentringnoanswer]',_0x4257fa['uniqueid']),_0x4257fa);agents['agentringnoanswer'](_0x4257fa);}catch(_0x1ff3c8){utils[_0x5358('0x17')](util[_0x5358('0x14')](_0x5358('0x1c'),_0x4257fa['uniqueid']),_0x1ff3c8);}});ami['on'](_0x5358('0x1d'),function(_0x2f0086){try{utils[_0x5358('0x1a')](util[_0x5358('0x14')]('[%s][index][agentconnect]',_0x2f0086[_0x5358('0x1b')]),_0x2f0086);agents[_0x5358('0x1d')](_0x2f0086);queues[_0x5358('0x1d')](_0x2f0086);}catch(_0x2b4726){utils[_0x5358('0x17')](util[_0x5358('0x14')]('[%s][index][agentconnect]',_0x2f0086[_0x5358('0x1b')]),_0x2b4726);}});ami['on'](_0x5358('0x1e'),function(_0x2cce3d){try{utils['debug'](util[_0x5358('0x14')](_0x5358('0x1f'),_0x2cce3d['uniqueid']),_0x2cce3d);agents[_0x5358('0x1e')](_0x2cce3d);queues[_0x5358('0x1e')](_0x2cce3d);members[_0x5358('0x1e')](_0x2cce3d);}catch(_0x2f7a3){utils['error'](util[_0x5358('0x14')](_0x5358('0x1f'),_0x2cce3d[_0x5358('0x1b')]),_0x2f7a3);}});ami['on']('queuecallerabandon',function(_0x57459a){try{utils['debug'](util['format'](_0x5358('0x20'),_0x57459a[_0x5358('0x1b')]),_0x57459a);agents['queuecallerabandon'](_0x57459a);queues[_0x5358('0x21')](_0x57459a);}catch(_0x1bd805){utils[_0x5358('0x17')](util[_0x5358('0x14')]('[%s][index][queuecallerabandon]',_0x57459a[_0x5358('0x1b')]),_0x1bd805);}});ami['on'](_0x5358('0x22'),function(_0x3c894b){try{utils['debug'](util[_0x5358('0x14')](_0x5358('0x23'),_0x3c894b[_0x5358('0x1b')]),_0x3c894b);queues[_0x5358('0x22')](_0x3c894b);recordings[_0x5358('0x22')](_0x3c894b);}catch(_0xb8ff96){utils[_0x5358('0x17')](util[_0x5358('0x14')](_0x5358('0x23'),_0x3c894b['uniqueid']),_0xb8ff96);}});ami['on']('queuecallerleave',function(_0x244bc7){try{utils[_0x5358('0x1a')](util[_0x5358('0x14')](_0x5358('0x24'),_0x244bc7[_0x5358('0x1b')]),_0x244bc7);queues[_0x5358('0x25')](_0x244bc7);}catch(_0x310dd8){utils[_0x5358('0x17')](util[_0x5358('0x14')](_0x5358('0x24'),_0x244bc7['uniqueid']),_0x310dd8);}});ami['on'](_0x5358('0x26'),function(_0x500524){try{utils[_0x5358('0x1a')](util[_0x5358('0x14')](_0x5358('0x27'),_0x500524['uniqueid']),_0x500524);queues[_0x5358('0x26')](_0x500524);calls[_0x5358('0x26')](_0x500524);}catch(_0x303528){utils['error'](util[_0x5358('0x14')](_0x5358('0x27'),_0x500524[_0x5358('0x1b')]),_0x303528);}});ami['on'](_0x5358('0x28'),function(_0x392223){try{utils['debug'](util[_0x5358('0x14')]('[%s][index][musiconholdstop]',_0x392223[_0x5358('0x1b')]),_0x392223);queues[_0x5358('0x28')](_0x392223);calls[_0x5358('0x28')](_0x392223);}catch(_0x561d48){utils['error'](util['format'](_0x5358('0x29'),_0x392223[_0x5358('0x1b')]),_0x561d48);}});ami['on'](_0x5358('0x2a'),function(_0x24930b){try{utils[_0x5358('0x1a')](util[_0x5358('0x14')]('[%s][index][newstate]',_0x24930b[_0x5358('0x1b')]),_0x24930b);calls[_0x5358('0x2a')](_0x24930b);recordings[_0x5358('0x2a')](_0x24930b);}catch(_0x555d39){utils['error'](util[_0x5358('0x14')](_0x5358('0x2b'),_0x24930b[_0x5358('0x1b')]),_0x555d39);}});ami['on'](_0x5358('0x2c'),function(_0x18881d){try{utils['debug'](util[_0x5358('0x14')]('[%s][index][hangup]',_0x18881d[_0x5358('0x1b')]),_0x18881d);calls[_0x5358('0x2c')](_0x18881d);recordings[_0x5358('0x2c')](_0x18881d);dials[_0x5358('0x2c')](_0x18881d);agents['hangup'](_0x18881d);queues['hangup'](_0x18881d);}catch(_0x467640){utils[_0x5358('0x17')](util[_0x5358('0x14')](_0x5358('0x2d'),_0x18881d[_0x5358('0x1b')]),_0x467640);}});ami['on']('cdr',function(_0x2be617){try{utils['debug'](util[_0x5358('0x14')]('[%s][index][cdr]',_0x2be617['uniqueid']),_0x2be617);members[_0x5358('0x2e')](_0x2be617);}catch(_0x3748dd){utils[_0x5358('0x17')](util['format'](_0x5358('0x2f'),_0x2be617['uniqueid']),_0x3748dd);}});ami['on'](_0x5358('0x30'),function(_0x4ed76e){try{utils['debug'](util[_0x5358('0x14')]('[%s][index][blindtransfer]',_0x4ed76e['uniqueid']),_0x4ed76e);queues[_0x5358('0x30')](_0x4ed76e);agents[_0x5358('0x30')](_0x4ed76e);transfers[_0x5358('0x30')](_0x4ed76e);}catch(_0x3781ab){utils['error'](util[_0x5358('0x14')](_0x5358('0x31'),_0x4ed76e[_0x5358('0x1b')]),_0x3781ab);}});ami['on'](_0x5358('0x32'),function(_0x1d42e3){try{utils['debug'](util[_0x5358('0x14')](_0x5358('0x33'),_0x1d42e3[_0x5358('0x34')]),_0x1d42e3);queues[_0x5358('0x32')](_0x1d42e3);transfers['attendedtransfer'](_0x1d42e3);agents[_0x5358('0x32')](_0x1d42e3);calls[_0x5358('0x32')](_0x1d42e3);}catch(_0x52d48f){utils[_0x5358('0x17')](util[_0x5358('0x14')](_0x5358('0x33'),_0x1d42e3[_0x5358('0x34')]),_0x52d48f);}});ami['on']('varset',function(_0x1967fc){try{utils[_0x5358('0x1a')](util[_0x5358('0x14')](_0x5358('0x35'),_0x1967fc[_0x5358('0x1b')]),_0x1967fc);queues[_0x5358('0x36')](_0x1967fc);recordings[_0x5358('0x36')](_0x1967fc);calls[_0x5358('0x36')](_0x1967fc);dials['varset'](_0x1967fc);}catch(_0x4b20fc){utils['error'](util[_0x5358('0x14')](_0x5358('0x35'),_0x1967fc[_0x5358('0x1b')]),_0x4b20fc);}});ami['on'](_0x5358('0x37'),function(_0x306a90){try{utils[_0x5358('0x1a')](util['format'](_0x5358('0x38'),_0x306a90[_0x5358('0x1b')]),_0x306a90);calls[_0x5358('0x37')](_0x306a90);recordings[_0x5358('0x37')](_0x306a90);dials[_0x5358('0x37')](_0x306a90);}catch(_0x419246){utils[_0x5358('0x17')](util['format'](_0x5358('0x38'),_0x306a90[_0x5358('0x1b')]),_0x419246);}});ami['on'](_0x5358('0x39'),function(_0x858c38){try{utils[_0x5358('0x1a')](util[_0x5358('0x14')](_0x5358('0x3a'),_0x858c38['uniqueid']),_0x858c38);calls[_0x5358('0x39')](_0x858c38);recordings[_0x5358('0x39')](_0x858c38);}catch(_0xfb3581){utils[_0x5358('0x17')](util['format'](_0x5358('0x3a'),_0x858c38[_0x5358('0x1b')]),_0xfb3581);}});ami['on'](_0x5358('0x3b'),function(_0x1b1c1f){try{utils[_0x5358('0x1a')](util[_0x5358('0x14')]('[%s][index][dialbegin]',_0x1b1c1f[_0x5358('0x1b')]),_0x1b1c1f);dials[_0x5358('0x3b')](_0x1b1c1f);}catch(_0x341047){utils[_0x5358('0x17')](util['format'](_0x5358('0x3c'),_0x1b1c1f['uniqueid']),_0x341047);}});ami['on'](_0x5358('0x3d'),function(_0x4364d5){try{utils[_0x5358('0x1a')](util[_0x5358('0x14')](_0x5358('0x3e'),_0x4364d5[_0x5358('0x1b')]),_0x4364d5);dials[_0x5358('0x3d')](_0x4364d5);}catch(_0x4f0f3f){utils[_0x5358('0x17')](util[_0x5358('0x14')]('[%s][index][dialend]',_0x4364d5[_0x5358('0x1b')]),_0x4f0f3f);}});}
\ No newline at end of file
+var _0x3f5e=['[%s][index][dialend]','dialend','../../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','./core.controller','connect','shutdown','fullybooted','error','close','managerevent','devicestatechange','debug','format','[%s][index][devicestatechange]','device','agentcalled','[%s][index][agentcalled]','uniqueid','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','[%s][index][queuecallerabandon]','[%s][index][queuecallerjoin]','queuecallerjoin','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','newstate','[%s][index][newstate]','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','[%s][index][blindtransfer]','blindtransfer','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s][index][dialbegin]','[%s]dialbegin'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3f5e,0xd7));var _0xe3f5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3f5e[_0x3dd15e];return _0x231fd0;};var AsteriskManager=require('asterisk-manager');var config=require(_0xe3f5('0x0'));var utils=require(_0xe3f5('0x1'));var util=require(_0xe3f5('0x2'));var ami=new AsteriskManager(config[_0xe3f5('0x3')][_0xe3f5('0x4')],config[_0xe3f5('0x3')]['ip'],config['asterisk'][_0xe3f5('0x5')],config[_0xe3f5('0x3')][_0xe3f5('0x6')],!![]);ami[_0xe3f5('0x7')]();if(config['xdr']&&config[_0xe3f5('0x8')]['disabled']){utils[_0xe3f5('0x9')](_0xe3f5('0xa'));}else{var agents=require(_0xe3f5('0xb'));var calls=require(_0xe3f5('0xc'));var queues=require(_0xe3f5('0xd'));var recordings=require(_0xe3f5('0xe'));var members=require(_0xe3f5('0xf'));var dials=require(_0xe3f5('0x10'));var transfers=require(_0xe3f5('0x11'));var core=require(_0xe3f5('0x12'));ami['on'](_0xe3f5('0x13'),core['connect']);ami['on'](_0xe3f5('0x14'),core[_0xe3f5('0x14')]);ami['on'](_0xe3f5('0x15'),core[_0xe3f5('0x15')]);ami['on'](_0xe3f5('0x16'),core[_0xe3f5('0x16')]);ami['on'](_0xe3f5('0x17'),core[_0xe3f5('0x17')]);ami['on'](_0xe3f5('0x18'),core['managerevent']);ami['on'](_0xe3f5('0x19'),function(_0xb8973c){try{utils[_0xe3f5('0x1a')](util[_0xe3f5('0x1b')](_0xe3f5('0x1c'),_0xb8973c[_0xe3f5('0x1d')]),_0xb8973c);members['devicestatechange'](_0xb8973c);}catch(_0x174992){utils[_0xe3f5('0x16')](util[_0xe3f5('0x1b')](_0xe3f5('0x1c'),_0xb8973c[_0xe3f5('0x1d')]),_0x174992);}});ami['on'](_0xe3f5('0x1e'),function(_0x211d79){try{utils[_0xe3f5('0x1a')](util['format'](_0xe3f5('0x1f'),_0x211d79[_0xe3f5('0x20')]),_0x211d79);agents[_0xe3f5('0x1e')](_0x211d79);}catch(_0x1a859d){utils[_0xe3f5('0x16')](util['format'](_0xe3f5('0x1f'),_0x211d79[_0xe3f5('0x20')]),_0x1a859d);}});ami['on'](_0xe3f5('0x21'),function(_0x5a5f6b){try{utils[_0xe3f5('0x1a')](util[_0xe3f5('0x1b')](_0xe3f5('0x22'),_0x5a5f6b[_0xe3f5('0x20')]),_0x5a5f6b);agents[_0xe3f5('0x21')](_0x5a5f6b);}catch(_0x50c48c){utils[_0xe3f5('0x16')](util[_0xe3f5('0x1b')](_0xe3f5('0x22'),_0x5a5f6b[_0xe3f5('0x20')]),_0x50c48c);}});ami['on'](_0xe3f5('0x23'),function(_0x4311b4){try{utils['debug'](util[_0xe3f5('0x1b')](_0xe3f5('0x24'),_0x4311b4['uniqueid']),_0x4311b4);agents[_0xe3f5('0x23')](_0x4311b4);queues[_0xe3f5('0x23')](_0x4311b4);}catch(_0x5677b1){utils['error'](util[_0xe3f5('0x1b')](_0xe3f5('0x24'),_0x4311b4[_0xe3f5('0x20')]),_0x5677b1);}});ami['on'](_0xe3f5('0x25'),function(_0x2dc734){try{utils['debug'](util[_0xe3f5('0x1b')](_0xe3f5('0x26'),_0x2dc734[_0xe3f5('0x20')]),_0x2dc734);agents[_0xe3f5('0x25')](_0x2dc734);queues[_0xe3f5('0x25')](_0x2dc734);members[_0xe3f5('0x25')](_0x2dc734);}catch(_0x4183d8){utils[_0xe3f5('0x16')](util[_0xe3f5('0x1b')](_0xe3f5('0x26'),_0x2dc734[_0xe3f5('0x20')]),_0x4183d8);}});ami['on'](_0xe3f5('0x27'),function(_0x117fa0){try{utils[_0xe3f5('0x1a')](util[_0xe3f5('0x1b')](_0xe3f5('0x28'),_0x117fa0['uniqueid']),_0x117fa0);agents[_0xe3f5('0x27')](_0x117fa0);queues['queuecallerabandon'](_0x117fa0);}catch(_0x24d668){utils[_0xe3f5('0x16')](util[_0xe3f5('0x1b')](_0xe3f5('0x28'),_0x117fa0[_0xe3f5('0x20')]),_0x24d668);}});ami['on']('queuecallerjoin',function(_0x124409){try{utils[_0xe3f5('0x1a')](util[_0xe3f5('0x1b')](_0xe3f5('0x29'),_0x124409['uniqueid']),_0x124409);queues['queuecallerjoin'](_0x124409);recordings[_0xe3f5('0x2a')](_0x124409);}catch(_0x175f69){utils[_0xe3f5('0x16')](util['format'](_0xe3f5('0x29'),_0x124409[_0xe3f5('0x20')]),_0x175f69);}});ami['on'](_0xe3f5('0x2b'),function(_0x2f6451){try{utils['debug'](util['format'](_0xe3f5('0x2c'),_0x2f6451[_0xe3f5('0x20')]),_0x2f6451);queues[_0xe3f5('0x2b')](_0x2f6451);}catch(_0x4ecf0b){utils[_0xe3f5('0x16')](util['format'](_0xe3f5('0x2c'),_0x2f6451[_0xe3f5('0x20')]),_0x4ecf0b);}});ami['on'](_0xe3f5('0x2d'),function(_0x4482a0){try{utils['debug'](util[_0xe3f5('0x1b')](_0xe3f5('0x2e'),_0x4482a0['uniqueid']),_0x4482a0);queues['musiconholdstart'](_0x4482a0);calls[_0xe3f5('0x2d')](_0x4482a0);}catch(_0x54a2be){utils[_0xe3f5('0x16')](util[_0xe3f5('0x1b')](_0xe3f5('0x2e'),_0x4482a0[_0xe3f5('0x20')]),_0x54a2be);}});ami['on'](_0xe3f5('0x2f'),function(_0x218f22){try{utils['debug'](util[_0xe3f5('0x1b')](_0xe3f5('0x30'),_0x218f22[_0xe3f5('0x20')]),_0x218f22);queues['musiconholdstop'](_0x218f22);calls['musiconholdstop'](_0x218f22);}catch(_0x5210c2){utils[_0xe3f5('0x16')](util[_0xe3f5('0x1b')]('[%s][index][musiconholdstop]',_0x218f22[_0xe3f5('0x20')]),_0x5210c2);}});ami['on'](_0xe3f5('0x31'),function(_0x1b6082){try{utils[_0xe3f5('0x1a')](util[_0xe3f5('0x1b')](_0xe3f5('0x32'),_0x1b6082['uniqueid']),_0x1b6082);calls[_0xe3f5('0x31')](_0x1b6082);recordings[_0xe3f5('0x31')](_0x1b6082);}catch(_0x514267){utils[_0xe3f5('0x16')](util['format']('[%s][index][newstate]',_0x1b6082['uniqueid']),_0x514267);}});ami['on'](_0xe3f5('0x33'),function(_0xd38a30){try{utils['debug'](util[_0xe3f5('0x1b')]('[%s][index][hangup]',_0xd38a30[_0xe3f5('0x20')]),_0xd38a30);calls[_0xe3f5('0x33')](_0xd38a30);recordings[_0xe3f5('0x33')](_0xd38a30);dials[_0xe3f5('0x33')](_0xd38a30);agents[_0xe3f5('0x33')](_0xd38a30);queues['hangup'](_0xd38a30);}catch(_0x4b8a7c){utils[_0xe3f5('0x16')](util[_0xe3f5('0x1b')](_0xe3f5('0x34'),_0xd38a30[_0xe3f5('0x20')]),_0x4b8a7c);}});ami['on'](_0xe3f5('0x35'),function(_0x2d9cf6){try{utils[_0xe3f5('0x1a')](util[_0xe3f5('0x1b')]('[%s][index][cdr]',_0x2d9cf6[_0xe3f5('0x20')]),_0x2d9cf6);members[_0xe3f5('0x35')](_0x2d9cf6);}catch(_0x3974cf){utils[_0xe3f5('0x16')](util[_0xe3f5('0x1b')](_0xe3f5('0x36'),_0x2d9cf6[_0xe3f5('0x20')]),_0x3974cf);}});ami['on']('blindtransfer',function(_0x3d9262){try{utils[_0xe3f5('0x1a')](util['format'](_0xe3f5('0x37'),_0x3d9262[_0xe3f5('0x20')]),_0x3d9262);queues['blindtransfer'](_0x3d9262);agents[_0xe3f5('0x38')](_0x3d9262);transfers['blindtransfer'](_0x3d9262);}catch(_0x2b8148){utils[_0xe3f5('0x16')](util[_0xe3f5('0x1b')](_0xe3f5('0x37'),_0x3d9262[_0xe3f5('0x20')]),_0x2b8148);}});ami['on'](_0xe3f5('0x39'),function(_0xe6bc9f){try{utils[_0xe3f5('0x1a')](util[_0xe3f5('0x1b')](_0xe3f5('0x3a'),_0xe6bc9f['origtransfereruniqueid']),_0xe6bc9f);queues[_0xe3f5('0x39')](_0xe6bc9f);transfers[_0xe3f5('0x39')](_0xe6bc9f);agents[_0xe3f5('0x39')](_0xe6bc9f);calls[_0xe3f5('0x39')](_0xe6bc9f);}catch(_0x1527db){utils[_0xe3f5('0x16')](util[_0xe3f5('0x1b')](_0xe3f5('0x3a'),_0xe6bc9f[_0xe3f5('0x3b')]),_0x1527db);}});ami['on'](_0xe3f5('0x3c'),function(_0x2eef05){try{utils['debug'](util[_0xe3f5('0x1b')](_0xe3f5('0x3d'),_0x2eef05[_0xe3f5('0x20')]),_0x2eef05);queues[_0xe3f5('0x3c')](_0x2eef05);recordings[_0xe3f5('0x3c')](_0x2eef05);calls['varset'](_0x2eef05);dials[_0xe3f5('0x3c')](_0x2eef05);}catch(_0x363f3d){utils[_0xe3f5('0x16')](util[_0xe3f5('0x1b')](_0xe3f5('0x3d'),_0x2eef05[_0xe3f5('0x20')]),_0x363f3d);}});ami['on'](_0xe3f5('0x3e'),function(_0x3edb2a){try{utils[_0xe3f5('0x1a')](util[_0xe3f5('0x1b')](_0xe3f5('0x3f'),_0x3edb2a[_0xe3f5('0x20')]),_0x3edb2a);calls[_0xe3f5('0x3e')](_0x3edb2a);recordings[_0xe3f5('0x3e')](_0x3edb2a);dials[_0xe3f5('0x3e')](_0x3edb2a);}catch(_0x390f40){utils['error'](util[_0xe3f5('0x1b')](_0xe3f5('0x3f'),_0x3edb2a[_0xe3f5('0x20')]),_0x390f40);}});ami['on'](_0xe3f5('0x40'),function(_0x465d67){try{utils['debug'](util['format'](_0xe3f5('0x41'),_0x465d67['uniqueid']),_0x465d67);calls[_0xe3f5('0x40')](_0x465d67);recordings[_0xe3f5('0x40')](_0x465d67);}catch(_0xe02134){utils[_0xe3f5('0x16')](util[_0xe3f5('0x1b')](_0xe3f5('0x41'),_0x465d67[_0xe3f5('0x20')]),_0xe02134);}});ami['on'](_0xe3f5('0x42'),function(_0x8a8b6c){try{utils['debug'](util[_0xe3f5('0x1b')](_0xe3f5('0x43'),_0x8a8b6c['uniqueid']),_0x8a8b6c);dials[_0xe3f5('0x42')](_0x8a8b6c);}catch(_0x439794){utils[_0xe3f5('0x16')](util[_0xe3f5('0x1b')](_0xe3f5('0x44'),_0x8a8b6c[_0xe3f5('0x20')]),_0x439794);}});ami['on']('dialend',function(_0xc666d9){try{utils[_0xe3f5('0x1a')](util[_0xe3f5('0x1b')](_0xe3f5('0x45'),_0xc666d9['uniqueid']),_0xc666d9);dials[_0xe3f5('0x46')](_0xc666d9);}catch(_0x47b7d6){utils[_0xe3f5('0x16')](util[_0xe3f5('0x1b')](_0xe3f5('0x45'),_0xc666d9[_0xe3f5('0x20')]),_0x47b7d6);}});}
\ No newline at end of file
index c1f1779..b3e058d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2242=['queue','error','[%s][members][agentcomplete]','cdr','[%s][members][cdr]','assign','data1','data3','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','destination','lodash','util','./utils','Queue:','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','interface','channel','data2','type','getUserByInterface','then','membername','name','internal','request','CreateMemberReport','getUserByName','split','catch','[%s][members][writeDB]','some','startsWith','devicestatechange','debug','[%s][members][devicestatechange]','device','uniqueid','info','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','voice','TALKING','now','agent','NOT_INUSE','isNil','exitAt','agentcomplete','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x2242,0x1a3));var _0x2224=function(_0x31b023,_0x33f225){_0x31b023=_0x31b023-0x0;var _0x1498f9=_0x2242[_0x31b023];return _0x1498f9;};'use strict';var _=require(_0x2224('0x0'));var util=require(_0x2224('0x1'));var utils=require(_0x2224('0x2'));var members={};var exclude=['Local/_attended@transfer',_0x2224('0x3')];function writeDB(_0x317565){utils['info'](util[_0x2224('0x4')](_0x2224('0x5'),_0x317565['uniqueid'],_0x317565[_0x2224('0x6')],_0x317565[_0x2224('0x7')],_0x317565[_0x2224('0x8')],_0x317565['membername'],_0x317565[_0x2224('0x9')]));if(_0x317565[_0x2224('0x6')]){utils[_0x2224('0xa')](_0x317565[_0x2224('0x6')])[_0x2224('0xb')](function(_0x1d3c0e){if(_0x1d3c0e){_0x317565[_0x2224('0xc')]=_0x1d3c0e[_0x2224('0xd')];_0x317565[_0x2224('0xe')]=_0x1d3c0e[_0x2224('0xe')];utils[_0x2224('0xf')](_0x2224('0x10'),_0x317565);}else{utils[_0x2224('0x11')](_0x317565[_0x2224('0x6')][_0x2224('0x12')]('/')[0x1])['then'](function(_0x54e6da){if(_0x54e6da){_0x317565[_0x2224('0xc')]=_0x54e6da[_0x2224('0xd')];_0x317565[_0x2224('0xe')]=_0x54e6da[_0x2224('0xe')];utils['request'](_0x2224('0x10'),_0x317565);}});}})[_0x2224('0x13')](function(_0x4bee99){utils['error'](util[_0x2224('0x4')](_0x2224('0x14'),_0x317565['uniqueid']),_0x4bee99);});}delete members[_0x317565['interface']];}function startsWith(_0x2a5845,_0x2596e0){return _[_0x2224('0x15')](_0x2a5845,function(_0x28956b){return _[_0x2224('0x16')](_0x2596e0,_0x28956b);});}exports[_0x2224('0x17')]=function(_0x34d045){try{utils[_0x2224('0x18')](util['format'](_0x2224('0x19'),members[_0x34d045[_0x2224('0x1a')]]?members[_0x34d045[_0x2224('0x1a')]][_0x2224('0x1b')]:_0x34d045[_0x2224('0x1a')]),_0x34d045);utils[_0x2224('0x1c')](util[_0x2224('0x4')](_0x2224('0x1d'),members[_0x34d045[_0x2224('0x1a')]]?members[_0x34d045[_0x2224('0x1a')]][_0x2224('0x1b')]:_0x34d045[_0x2224('0x1a')],_0x34d045[_0x2224('0x1e')],_0x34d045[_0x2224('0x1a')]));switch(_0x34d045[_0x2224('0x1e')]){case'INUSE':case'BUSY':if(!startsWith(exclude,_0x34d045[_0x2224('0x1a')])){members[_0x34d045[_0x2224('0x1a')]]={'channel':_0x2224('0x1f'),'interface':_0x34d045[_0x2224('0x1a')],'type':_0x2224('0x20'),'enterAt':utils[_0x2224('0x21')](),'role':_0x2224('0x22')};}break;case _0x2224('0x23'):if(!_[_0x2224('0x24')](members[_0x34d045[_0x2224('0x1a')]])){members[_0x34d045[_0x2224('0x1a')]][_0x2224('0x25')]=utils['now']();members[_0x34d045[_0x2224('0x1a')]]['duration']=utils['diffTime'](members[_0x34d045[_0x2224('0x1a')]][_0x2224('0x25')],members[_0x34d045['device']]['enterAt']);if(members[_0x34d045[_0x2224('0x1a')]][_0x2224('0x1b')]){writeDB(members[_0x34d045['device']]);}}break;default:break;}}catch(_0x408521){utils['error'](util[_0x2224('0x4')](_0x2224('0x19'),members[_0x34d045[_0x2224('0x1a')]]?members[_0x34d045[_0x2224('0x1a')]][_0x2224('0x1b')]:_0x34d045['device']),_0x408521);}};exports[_0x2224('0x26')]=function(_0x5bb00f){try{if(!_['isNil'](members[_0x5bb00f[_0x2224('0x6')]])){utils['debug'](util[_0x2224('0x4')]('[%s][members][agentcomplete]',_0x5bb00f['uniqueid']),_0x5bb00f);utils['info'](util[_0x2224('0x4')](_0x2224('0x27'),_0x5bb00f[_0x2224('0x1b')],_0x5bb00f[_0x2224('0x6')],_0x5bb00f['queue']));members[_0x5bb00f[_0x2224('0x6')]]=_['assign'](members[_0x5bb00f[_0x2224('0x6')]],{'data4':_0x5bb00f[_0x2224('0x28')],'uniqueid':_0x5bb00f[_0x2224('0x1b')]});}}catch(_0x53d0a4){utils[_0x2224('0x29')](util[_0x2224('0x4')](_0x2224('0x2a'),_0x5bb00f[_0x2224('0x1b')]),_0x53d0a4);}};exports[_0x2224('0x2b')]=function(_0x101900){try{utils['debug'](util[_0x2224('0x4')](_0x2224('0x2c'),_0x101900['uniqueid']),_0x101900);if(_0x101900[_0x2224('0x7')]){var _0x14540a=_0x101900[_0x2224('0x7')][_0x2224('0x12')]('-')[0x0];if(!_[_0x2224('0x24')](members[_0x14540a])){members[_0x14540a]=_[_0x2224('0x2d')](members[_0x14540a],{'data1':members[_0x14540a][_0x2224('0x2e')]||_0x101900['type'],'data2':members[_0x14540a][_0x2224('0x8')]||_0x101900['source'],'data3':members[_0x14540a][_0x2224('0x2f')]||_0x101900['destination'],'uniqueid':members[_0x14540a][_0x2224('0x1b')]||_0x101900[_0x2224('0x1b')]});utils['info'](util[_0x2224('0x4')](_0x2224('0x30'),_0x101900['uniqueid'],members[_0x14540a][_0x2224('0x2e')],members[_0x14540a][_0x2224('0x8')],members[_0x14540a]['data3']));if(members[_0x14540a][_0x2224('0x25')]){writeDB(members[_0x14540a]);}}}if(_0x101900[_0x2224('0x31')]){var _0x52a29f=_0x101900[_0x2224('0x31')]['split']('-')[0x0];if(!_[_0x2224('0x24')](members[_0x52a29f])){members[_0x52a29f]=_[_0x2224('0x2d')](members[_0x52a29f],{'data1':members[_0x52a29f][_0x2224('0x2e')]||_0x101900['type'],'data2':members[_0x52a29f][_0x2224('0x8')]||_0x101900['source'],'data3':members[_0x52a29f][_0x2224('0x2f')]||_0x101900[_0x2224('0x32')],'uniqueid':members[_0x52a29f][_0x2224('0x1b')]||_0x101900[_0x2224('0x1b')]});utils['info'](util[_0x2224('0x4')]('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0x101900[_0x2224('0x1b')],members[_0x52a29f][_0x2224('0x2e')],members[_0x52a29f]['data2'],members[_0x52a29f]['data3']));if(members[_0x52a29f][_0x2224('0x25')]){writeDB(members[_0x52a29f]);}}}}catch(_0x54f8ce){utils[_0x2224('0x29')](util[_0x2224('0x4')]('[%s][members][cdr]',_0x101900[_0x2224('0x1b')]),_0x54f8ce);}};
\ No newline at end of file
+var _0xcb97=['channel','data2','membername','type','getUserByInterface','internal','request','getUserByName','split','then','CreateMemberReport','catch','error','[%s][members][writeDB]','some','devicestatechange','debug','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE','BUSY','voice','now','agent','NOT_INUSE','isNil','exitAt','diffTime','[%s][members][devicestatechange]','agentcomplete','[%s][members][agentcomplete]','queue','assign','[%s][members][cdr]','data1','source','data3','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','destination','lodash','util','./utils','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','interface'];(function(_0x2b58d8,_0x10a0e7){var _0x4d633c=function(_0x2200ec){while(--_0x2200ec){_0x2b58d8['push'](_0x2b58d8['shift']());}};_0x4d633c(++_0x10a0e7);}(_0xcb97,0x14f));var _0x7cb9=function(_0x54365c,_0x2f52a5){_0x54365c=_0x54365c-0x0;var _0x41160c=_0xcb97[_0x54365c];return _0x41160c;};'use strict';var _=require(_0x7cb9('0x0'));var util=require(_0x7cb9('0x1'));var utils=require(_0x7cb9('0x2'));var members={};var exclude=['Local/_attended@transfer','Queue:'];function writeDB(_0x4b901a){utils[_0x7cb9('0x3')](util[_0x7cb9('0x4')](_0x7cb9('0x5'),_0x4b901a[_0x7cb9('0x6')],_0x4b901a[_0x7cb9('0x7')],_0x4b901a[_0x7cb9('0x8')],_0x4b901a[_0x7cb9('0x9')],_0x4b901a[_0x7cb9('0xa')],_0x4b901a[_0x7cb9('0xb')]));if(_0x4b901a[_0x7cb9('0x7')]){utils[_0x7cb9('0xc')](_0x4b901a[_0x7cb9('0x7')])['then'](function(_0x8f770f){if(_0x8f770f){_0x4b901a[_0x7cb9('0xa')]=_0x8f770f['name'];_0x4b901a['internal']=_0x8f770f[_0x7cb9('0xd')];utils[_0x7cb9('0xe')]('CreateMemberReport',_0x4b901a);}else{utils[_0x7cb9('0xf')](_0x4b901a[_0x7cb9('0x7')][_0x7cb9('0x10')]('/')[0x1])[_0x7cb9('0x11')](function(_0x3da12b){if(_0x3da12b){_0x4b901a[_0x7cb9('0xa')]=_0x3da12b['name'];_0x4b901a[_0x7cb9('0xd')]=_0x3da12b[_0x7cb9('0xd')];utils[_0x7cb9('0xe')](_0x7cb9('0x12'),_0x4b901a);}});}})[_0x7cb9('0x13')](function(_0x12c135){utils[_0x7cb9('0x14')](util[_0x7cb9('0x4')](_0x7cb9('0x15'),_0x4b901a[_0x7cb9('0x6')]),_0x12c135);});}delete members[_0x4b901a[_0x7cb9('0x7')]];}function startsWith(_0x5bb2cb,_0x515f5d){return _[_0x7cb9('0x16')](_0x5bb2cb,function(_0x203f09){return _['startsWith'](_0x515f5d,_0x203f09);});}exports[_0x7cb9('0x17')]=function(_0x386e4d){try{utils[_0x7cb9('0x18')](util[_0x7cb9('0x4')]('[%s][members][devicestatechange]',members[_0x386e4d['device']]?members[_0x386e4d['device']][_0x7cb9('0x6')]:_0x386e4d[_0x7cb9('0x19')]),_0x386e4d);utils[_0x7cb9('0x3')](util[_0x7cb9('0x4')](_0x7cb9('0x1a'),members[_0x386e4d[_0x7cb9('0x19')]]?members[_0x386e4d['device']][_0x7cb9('0x6')]:_0x386e4d[_0x7cb9('0x19')],_0x386e4d[_0x7cb9('0x1b')],_0x386e4d[_0x7cb9('0x19')]));switch(_0x386e4d['state']){case _0x7cb9('0x1c'):case _0x7cb9('0x1d'):if(!startsWith(exclude,_0x386e4d['device'])){members[_0x386e4d[_0x7cb9('0x19')]]={'channel':_0x7cb9('0x1e'),'interface':_0x386e4d[_0x7cb9('0x19')],'type':'TALKING','enterAt':utils[_0x7cb9('0x1f')](),'role':_0x7cb9('0x20')};}break;case _0x7cb9('0x21'):if(!_[_0x7cb9('0x22')](members[_0x386e4d[_0x7cb9('0x19')]])){members[_0x386e4d[_0x7cb9('0x19')]][_0x7cb9('0x23')]=utils[_0x7cb9('0x1f')]();members[_0x386e4d[_0x7cb9('0x19')]]['duration']=utils[_0x7cb9('0x24')](members[_0x386e4d[_0x7cb9('0x19')]][_0x7cb9('0x23')],members[_0x386e4d[_0x7cb9('0x19')]]['enterAt']);if(members[_0x386e4d[_0x7cb9('0x19')]][_0x7cb9('0x6')]){writeDB(members[_0x386e4d[_0x7cb9('0x19')]]);}}break;default:break;}}catch(_0x4a1bcb){utils[_0x7cb9('0x14')](util['format'](_0x7cb9('0x25'),members[_0x386e4d[_0x7cb9('0x19')]]?members[_0x386e4d['device']][_0x7cb9('0x6')]:_0x386e4d[_0x7cb9('0x19')]),_0x4a1bcb);}};exports[_0x7cb9('0x26')]=function(_0x21d77e){try{if(!_[_0x7cb9('0x22')](members[_0x21d77e['interface']])){utils[_0x7cb9('0x18')](util['format'](_0x7cb9('0x27'),_0x21d77e[_0x7cb9('0x6')]),_0x21d77e);utils[_0x7cb9('0x3')](util['format']('[%s][members][agentcomplete]\x20interface:%s\x20queue:%s',_0x21d77e[_0x7cb9('0x6')],_0x21d77e[_0x7cb9('0x7')],_0x21d77e[_0x7cb9('0x28')]));members[_0x21d77e[_0x7cb9('0x7')]]=_[_0x7cb9('0x29')](members[_0x21d77e[_0x7cb9('0x7')]],{'data4':_0x21d77e[_0x7cb9('0x28')],'uniqueid':_0x21d77e[_0x7cb9('0x6')]});}}catch(_0x801c9b){utils['error'](util[_0x7cb9('0x4')](_0x7cb9('0x27'),_0x21d77e['uniqueid']),_0x801c9b);}};exports['cdr']=function(_0x411eed){try{utils[_0x7cb9('0x18')](util[_0x7cb9('0x4')](_0x7cb9('0x2a'),_0x411eed[_0x7cb9('0x6')]),_0x411eed);if(_0x411eed['channel']){var _0x2ef55e=_0x411eed[_0x7cb9('0x8')][_0x7cb9('0x10')]('-')[0x0];if(!_[_0x7cb9('0x22')](members[_0x2ef55e])){members[_0x2ef55e]=_[_0x7cb9('0x29')](members[_0x2ef55e],{'data1':members[_0x2ef55e][_0x7cb9('0x2b')]||_0x411eed[_0x7cb9('0xb')],'data2':members[_0x2ef55e][_0x7cb9('0x9')]||_0x411eed[_0x7cb9('0x2c')],'data3':members[_0x2ef55e][_0x7cb9('0x2d')]||_0x411eed['destination'],'uniqueid':members[_0x2ef55e]['uniqueid']||_0x411eed[_0x7cb9('0x6')]});utils[_0x7cb9('0x3')](util[_0x7cb9('0x4')](_0x7cb9('0x2e'),_0x411eed[_0x7cb9('0x6')],members[_0x2ef55e][_0x7cb9('0x2b')],members[_0x2ef55e]['data2'],members[_0x2ef55e][_0x7cb9('0x2d')]));if(members[_0x2ef55e][_0x7cb9('0x23')]){writeDB(members[_0x2ef55e]);}}}if(_0x411eed[_0x7cb9('0x2f')]){var _0x12f8ef=_0x411eed[_0x7cb9('0x2f')][_0x7cb9('0x10')]('-')[0x0];if(!_[_0x7cb9('0x22')](members[_0x12f8ef])){members[_0x12f8ef]=_[_0x7cb9('0x29')](members[_0x12f8ef],{'data1':members[_0x12f8ef][_0x7cb9('0x2b')]||_0x411eed['type'],'data2':members[_0x12f8ef][_0x7cb9('0x9')]||_0x411eed[_0x7cb9('0x2c')],'data3':members[_0x12f8ef][_0x7cb9('0x2d')]||_0x411eed[_0x7cb9('0x30')],'uniqueid':members[_0x12f8ef][_0x7cb9('0x6')]||_0x411eed['uniqueid']});utils[_0x7cb9('0x3')](util[_0x7cb9('0x4')]('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0x411eed[_0x7cb9('0x6')],members[_0x12f8ef][_0x7cb9('0x2b')],members[_0x12f8ef]['data2'],members[_0x12f8ef][_0x7cb9('0x2d')]));if(members[_0x12f8ef][_0x7cb9('0x23')]){writeDB(members[_0x12f8ef]);}}}}catch(_0x5d43d9){utils[_0x7cb9('0x14')](util[_0x7cb9('0x4')](_0x7cb9('0x2a'),_0x411eed['uniqueid']),_0x5d43d9);}};
\ No newline at end of file
index e534e7a..4196cee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa219=['secondtransfereruniqueid','secondtransfererexten','transfertargetlinkedid','[%s][queues][attendedtransfer]','musiconholdstart','[%s][queues][musiconholdstart]','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','[%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','queue','lastAssignedTo','accountcode','queuecallerexitreason','getVoiceQueueByName','then','type','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','[%s][queues][queuecallerjoin]','info','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','assign','error','hangup','isNil','debug','[%s][queues][hangup]','queuecallerexit','queuecallercompleteAt','now','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','queuecallerenterreason','varset','[%s][queues][varset]','variable','toUpperCase','CONTINUE','queuecallerexitAt','value','queueposition','queuecallerabandon','queuecallerabandonAt','EXITWITHKEY','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','queuecallerleave','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','connectedlinename','queuecallerleaveAt','holdtime','count','[%s][queues][agentconnect]','membername','agentcomplete','assigned','reason','transfer','TRANSFER','[%s][queues][agentcomplete]','blindtransfer','transfereeuniqueid','transfertype','BLIND','extension','transferuniqueid','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','[%s][queues][blindtransfer]','attendedtransfer','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','origtransfererexten','transferexten','ATTENDEDTRANSFER','transfereelinkedid','clone','transfertargetuniqueid','calleridnum','calleridname','queuecallerjoinAt','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa219,0x70));var _0x9a21=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xa219[_0x167cc1];return _0x10bc4b;};'use strict';var _=require(_0x9a21('0x0'));var util=require(_0x9a21('0x1'));var utils=require(_0x9a21('0x2'));var queues={};function writeDB(_0x1a6cd2){utils['info'](util[_0x9a21('0x3')](_0x9a21('0x4'),_0x1a6cd2[_0x9a21('0x5')],_0x1a6cd2['channel'],_0x1a6cd2[_0x9a21('0x6')],_0x1a6cd2[_0x9a21('0x7')],_0x1a6cd2['calleridnum'],_0x1a6cd2[_0x9a21('0x8')],_0x1a6cd2[_0x9a21('0x9')]));if(_0x1a6cd2[_0x9a21('0x6')]){utils[_0x9a21('0xa')](_0x1a6cd2[_0x9a21('0x6')])[_0x9a21('0xb')](function(_0x447cde){if(_0x447cde){_0x1a6cd2[_0x9a21('0xc')]=_0x447cde[_0x9a21('0xc')];}utils[_0x9a21('0xd')](_0x9a21('0xe'),_0x1a6cd2);});}else{utils['request'](_0x9a21('0xe'),_0x1a6cd2);}if(_0x1a6cd2[_0x9a21('0xf')]){delete queues[_0x1a6cd2[_0x9a21('0xf')]];}else{delete queues[_0x1a6cd2[_0x9a21('0x5')]];}}exports[_0x9a21('0x10')]=function(_0x50e36b){try{utils['debug'](util[_0x9a21('0x3')](_0x9a21('0x11'),_0x50e36b['uniqueid']),_0x50e36b);utils[_0x9a21('0x12')](util[_0x9a21('0x3')](_0x9a21('0x13'),_0x50e36b[_0x9a21('0x5')],_0x50e36b[_0x9a21('0x6')],_0x50e36b[_0x9a21('0x14')]));queues[_0x50e36b['uniqueid']]=_[_0x9a21('0x15')](_0x50e36b,{'originalposition':_0x50e36b[_0x9a21('0x14')],'queuecallerjoinAt':utils['now'](),'mohtime':0x0});}catch(_0x29c49b){utils[_0x9a21('0x16')](util[_0x9a21('0x3')](_0x9a21('0x11'),_0x50e36b[_0x9a21('0x5')]),_0x29c49b);}};exports[_0x9a21('0x17')]=function(_0x4433f7){try{if(!_[_0x9a21('0x18')](queues[_0x4433f7[_0x9a21('0x5')]])){utils[_0x9a21('0x19')](util[_0x9a21('0x3')](_0x9a21('0x1a'),_0x4433f7[_0x9a21('0x5')]),_0x4433f7);if(queues[_0x4433f7[_0x9a21('0x5')]]['queuecallerleaveAt']){if(!queues[_0x4433f7[_0x9a21('0x5')]]['queuecallerabandon']&&!queues[_0x4433f7['uniqueid']][_0x9a21('0x1b')]){queues[_0x4433f7[_0x9a21('0x5')]]['queuecallercomplete']=!![];queues[_0x4433f7[_0x9a21('0x5')]][_0x9a21('0x1c')]=utils[_0x9a21('0x1d')]();queues[_0x4433f7[_0x9a21('0x5')]][_0x9a21('0x9')]=_0x9a21('0x1e');}utils['info'](util[_0x9a21('0x3')](_0x9a21('0x1f'),_0x4433f7['uniqueid'],queues[_0x4433f7[_0x9a21('0x5')]][_0x9a21('0x20')],queues[_0x4433f7[_0x9a21('0x5')]][_0x9a21('0x9')]));writeDB(queues[_0x4433f7[_0x9a21('0x5')]]);}else if(queues[_0x4433f7[_0x9a21('0x5')]][_0x9a21('0xf')]){utils[_0x9a21('0x12')](util[_0x9a21('0x3')](_0x9a21('0x21'),_0x4433f7['uniqueid'],queues[_0x4433f7['uniqueid']][_0x9a21('0x20')],queues[_0x4433f7[_0x9a21('0x5')]][_0x9a21('0xf')]));queues[queues[_0x4433f7['uniqueid']][_0x9a21('0xf')]]=queues[_0x4433f7[_0x9a21('0x5')]];queues[queues[_0x4433f7['uniqueid']][_0x9a21('0xf')]][_0x9a21('0x22')]=0x2;delete queues[_0x4433f7[_0x9a21('0x5')]];}}}catch(_0x27da6c){utils[_0x9a21('0x16')](util[_0x9a21('0x3')](_0x9a21('0x1a'),_0x4433f7[_0x9a21('0x5')]),_0x27da6c);}};exports[_0x9a21('0x23')]=function(_0x40d0f5){try{utils[_0x9a21('0x19')](util[_0x9a21('0x3')](_0x9a21('0x24'),_0x40d0f5[_0x9a21('0x5')]),_0x40d0f5);if(!_['isNil'](_0x40d0f5[_0x9a21('0x25')]['queuestatus'])&&_0x40d0f5['value'][_0x9a21('0x26')]()!==_0x9a21('0x27')){if(!_[_0x9a21('0x18')](queues[_0x40d0f5[_0x9a21('0x5')]])){queues[_0x40d0f5[_0x9a21('0x5')]]['queuecallerabandon']=![];queues[_0x40d0f5['uniqueid']]['queuecallerabandonAt']=null;queues[_0x40d0f5[_0x9a21('0x5')]][_0x9a21('0x1b')]=!![];queues[_0x40d0f5[_0x9a21('0x5')]][_0x9a21('0x28')]=utils[_0x9a21('0x1d')]();queues[_0x40d0f5[_0x9a21('0x5')]][_0x9a21('0x9')]=_0x40d0f5[_0x9a21('0x29')][_0x9a21('0x26')]();utils[_0x9a21('0x12')](util[_0x9a21('0x3')]('[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s',_0x40d0f5[_0x9a21('0x5')],queues[_0x40d0f5[_0x9a21('0x5')]][_0x9a21('0x20')],_0x40d0f5['value'],queues[_0x40d0f5[_0x9a21('0x5')]]['queuecallerexitreason']));writeDB(queues[_0x40d0f5['uniqueid']]);}}else if(!_['isNil'](_0x40d0f5[_0x9a21('0x25')][_0x9a21('0x2a')])){if(!_[_0x9a21('0x18')](queues[_0x40d0f5[_0x9a21('0x5')]])&&!queues[_0x40d0f5[_0x9a21('0x5')]][_0x9a21('0x2b')]){queues[_0x40d0f5[_0x9a21('0x5')]][_0x9a21('0x2b')]=![];queues[_0x40d0f5[_0x9a21('0x5')]][_0x9a21('0x2c')]=null;queues[_0x40d0f5[_0x9a21('0x5')]][_0x9a21('0x1b')]=!![];queues[_0x40d0f5[_0x9a21('0x5')]][_0x9a21('0x28')]=utils['now']();queues[_0x40d0f5['uniqueid']][_0x9a21('0x9')]=_0x9a21('0x2d');utils[_0x9a21('0x12')](util['format'](_0x9a21('0x2e'),_0x40d0f5[_0x9a21('0x5')],queues[_0x40d0f5[_0x9a21('0x5')]][_0x9a21('0x20')],_0x40d0f5['value'],queues[_0x40d0f5['uniqueid']]['queuecallerexitreason']));}}}catch(_0x37139b){utils['error'](util[_0x9a21('0x3')](_0x9a21('0x24'),_0x40d0f5[_0x9a21('0x5')]),_0x37139b);}};exports[_0x9a21('0x2b')]=function(_0x3efee9){try{if(!_['isNil'](queues[_0x3efee9[_0x9a21('0x5')]])){utils[_0x9a21('0x19')](util[_0x9a21('0x3')](_0x9a21('0x2f'),_0x3efee9['uniqueid']),_0x3efee9);queues[_0x3efee9['uniqueid']][_0x9a21('0x1b')]=![];queues[_0x3efee9['uniqueid']][_0x9a21('0x28')]=null;queues[_0x3efee9[_0x9a21('0x5')]][_0x9a21('0x2b')]=!![];queues[_0x3efee9['uniqueid']][_0x9a21('0x2c')]=utils[_0x9a21('0x1d')]();queues[_0x3efee9[_0x9a21('0x5')]][_0x9a21('0x9')]='ABANDONED';utils[_0x9a21('0x12')](util['format']('[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s',_0x3efee9['uniqueid'],queues[_0x3efee9[_0x9a21('0x5')]][_0x9a21('0x20')],queues[_0x3efee9['uniqueid']][_0x9a21('0x9')]));}}catch(_0x283c82){utils[_0x9a21('0x16')](util[_0x9a21('0x3')](_0x9a21('0x2f'),_0x3efee9[_0x9a21('0x5')]),_0x283c82);}};exports[_0x9a21('0x30')]=function(_0x5b23b4){try{if(!_[_0x9a21('0x18')](queues[_0x5b23b4['uniqueid']])){utils['debug'](util[_0x9a21('0x3')](_0x9a21('0x31'),_0x5b23b4[_0x9a21('0x5')]),_0x5b23b4);utils[_0x9a21('0x12')](util[_0x9a21('0x3')](_0x9a21('0x32'),_0x5b23b4[_0x9a21('0x5')],queues[_0x5b23b4[_0x9a21('0x5')]][_0x9a21('0x20')],_0x5b23b4[_0x9a21('0x33')],_0x5b23b4[_0x9a21('0x34')]));queues[_0x5b23b4['uniqueid']][_0x9a21('0x30')]=!![];queues[_0x5b23b4[_0x9a21('0x5')]][_0x9a21('0x35')]=utils[_0x9a21('0x1d')]();queues[_0x5b23b4[_0x9a21('0x5')]][_0x9a21('0x36')]=utils['diffTime'](queues[_0x5b23b4[_0x9a21('0x5')]][_0x9a21('0x35')],queues[_0x5b23b4[_0x9a21('0x5')]]['queuecallerjoinAt']);queues[_0x5b23b4[_0x9a21('0x5')]]['position']=_0x5b23b4[_0x9a21('0x14')];queues[_0x5b23b4[_0x9a21('0x5')]][_0x9a21('0x37')]=_0x5b23b4[_0x9a21('0x37')];queues[_0x5b23b4[_0x9a21('0x5')]][_0x9a21('0x33')]=_0x5b23b4[_0x9a21('0x33')];queues[_0x5b23b4[_0x9a21('0x5')]][_0x9a21('0x34')]=_0x5b23b4[_0x9a21('0x34')];}}catch(_0x5e0931){utils['error'](util[_0x9a21('0x3')](_0x9a21('0x31'),_0x5b23b4[_0x9a21('0x5')]),_0x5e0931);}};exports['agentconnect']=function(_0x5204b6){try{if(!_[_0x9a21('0x18')](queues[_0x5204b6[_0x9a21('0x5')]])){utils[_0x9a21('0x19')](util[_0x9a21('0x3')](_0x9a21('0x38'),_0x5204b6[_0x9a21('0x5')]),_0x5204b6);utils[_0x9a21('0x12')](util[_0x9a21('0x3')]('[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s',_0x5204b6[_0x9a21('0x5')],queues[_0x5204b6[_0x9a21('0x5')]]['name'],_0x5204b6['membername'],_0x5204b6['destaccountcode']));queues[_0x5204b6[_0x9a21('0x5')]]['queuecallerabandon']=![];queues[_0x5204b6['uniqueid']][_0x9a21('0x2b')]=![];queues[_0x5204b6[_0x9a21('0x5')]][_0x9a21('0x2c')]=null;queues[_0x5204b6['uniqueid']][_0x9a21('0x1b')]=![];queues[_0x5204b6[_0x9a21('0x5')]]['queuecallerexitreason']=null;queues[_0x5204b6['uniqueid']]['queuecallerexitAt']=null;queues[_0x5204b6[_0x9a21('0x5')]]['assigned']=!![];queues[_0x5204b6[_0x9a21('0x5')]][_0x9a21('0x8')]=_0x5204b6['destaccountcode'];queues[_0x5204b6['uniqueid']][_0x9a21('0x7')]=_0x5204b6[_0x9a21('0x39')];}}catch(_0x42d801){utils['error'](util[_0x9a21('0x3')]('[%s][queues][agentconnect]',_0x5204b6[_0x9a21('0x5')]),_0x42d801);}};exports[_0x9a21('0x3a')]=function(_0x1d97ed){try{if(!_['isNil'](queues[_0x1d97ed[_0x9a21('0x5')]])){if(queues[_0x1d97ed[_0x9a21('0x5')]][_0x9a21('0x35')]){utils[_0x9a21('0x19')](util['format']('[%s][queues][agentcomplete]',_0x1d97ed[_0x9a21('0x5')]),_0x1d97ed);queues[_0x1d97ed[_0x9a21('0x5')]]['queuecallerabandon']=![];queues[_0x1d97ed[_0x9a21('0x5')]][_0x9a21('0x2b')]=![];queues[_0x1d97ed[_0x9a21('0x5')]][_0x9a21('0x2c')]=null;queues[_0x1d97ed[_0x9a21('0x5')]][_0x9a21('0x1b')]=![];queues[_0x1d97ed[_0x9a21('0x5')]][_0x9a21('0x28')]=null;queues[_0x1d97ed['uniqueid']][_0x9a21('0x3b')]=!![];queues[_0x1d97ed[_0x9a21('0x5')]][_0x9a21('0x7')]=_0x1d97ed['membername'];queues[_0x1d97ed[_0x9a21('0x5')]]['queuecallercomplete']=!![];queues[_0x1d97ed[_0x9a21('0x5')]][_0x9a21('0x1c')]=utils['now']();if(_0x1d97ed[_0x9a21('0x3c')]==_0x9a21('0x3d')){if(!queues[_0x1d97ed[_0x9a21('0x5')]][_0x9a21('0x3d')]){queues[_0x1d97ed['uniqueid']][_0x9a21('0x9')]=_0x9a21('0x3e');}}else{queues[_0x1d97ed['uniqueid']]['queuecallerexitreason']='COMPLETEDBY'+_0x1d97ed[_0x9a21('0x3c')][_0x9a21('0x26')]();}utils[_0x9a21('0x12')](util[_0x9a21('0x3')]('[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s',_0x1d97ed[_0x9a21('0x5')],queues[_0x1d97ed['uniqueid']][_0x9a21('0x20')],_0x1d97ed[_0x9a21('0x39')],queues[_0x1d97ed['uniqueid']][_0x9a21('0x9')]));writeDB(queues[_0x1d97ed[_0x9a21('0x5')]]);}}}catch(_0x8ef55f){utils['error'](util[_0x9a21('0x3')](_0x9a21('0x3f'),_0x1d97ed[_0x9a21('0x5')]),_0x8ef55f);}};exports[_0x9a21('0x40')]=function(_0x222b0f){try{if(!_[_0x9a21('0x18')](queues[_0x222b0f[_0x9a21('0x41')]])){utils[_0x9a21('0x19')](util[_0x9a21('0x3')]('[%s][queues][blindtransfer]',_0x222b0f[_0x9a21('0x5')]),_0x222b0f);queues[_0x222b0f[_0x9a21('0x41')]]['transfer']=!![];queues[_0x222b0f['transfereeuniqueid']][_0x9a21('0x42')]=_0x9a21('0x43');queues[_0x222b0f[_0x9a21('0x41')]]['transferexten']=_0x222b0f[_0x9a21('0x44')];queues[_0x222b0f[_0x9a21('0x41')]][_0x9a21('0x45')]=_0x222b0f[_0x9a21('0x41')];queues[_0x222b0f[_0x9a21('0x41')]][_0x9a21('0x9')]=_0x9a21('0x46');utils['info'](util[_0x9a21('0x3')](_0x9a21('0x47'),_0x222b0f['uniqueid'],queues[_0x222b0f[_0x9a21('0x41')]][_0x9a21('0x20')],_0x222b0f[_0x9a21('0x41')],_0x222b0f[_0x9a21('0x44')]));}}catch(_0x203155){utils['error'](util[_0x9a21('0x3')](_0x9a21('0x48'),_0x222b0f[_0x9a21('0x5')]),_0x203155);}};exports[_0x9a21('0x49')]=function(_0x1f5363){try{utils['debug'](util[_0x9a21('0x3')]('[%s][queues][attendedtransfer]',_0x1f5363[_0x9a21('0x4a')]),_0x1f5363);if(_0x1f5363['origtransfereruniqueid']==_0x1f5363[_0x9a21('0x4b')]){if(!_[_0x9a21('0x18')](queues[_0x1f5363[_0x9a21('0x4c')]])){utils[_0x9a21('0x12')](util['format'](_0x9a21('0x4d'),_0x1f5363[_0x9a21('0x4a')],queues[_0x1f5363[_0x9a21('0x4c')]][_0x9a21('0x20')],_0x1f5363[_0x9a21('0x4e')]));queues[_0x1f5363['secondtransfererlinkedid']][_0x9a21('0x3d')]=!![];queues[_0x1f5363[_0x9a21('0x4c')]][_0x9a21('0x42')]='ATTENDED';queues[_0x1f5363['secondtransfererlinkedid']][_0x9a21('0x4f')]=_0x1f5363[_0x9a21('0x4e')];queues[_0x1f5363[_0x9a21('0x4c')]][_0x9a21('0x45')]=_0x1f5363[_0x9a21('0x4a')];queues[_0x1f5363[_0x9a21('0x4c')]][_0x9a21('0x9')]=_0x9a21('0x50');}if(!_[_0x9a21('0x18')](queues[_0x1f5363[_0x9a21('0x4b')]])){if(_0x1f5363['transfereelinkedid']&&queues[_0x1f5363['transfereelinkedid']]){queues[_0x1f5363[_0x9a21('0x51')]][_0x9a21('0x22')]=0x1;queues[_0x1f5363['transfereeuniqueid']]=_[_0x9a21('0x52')](queues[_0x1f5363[_0x9a21('0x51')]]);queues[_0x1f5363[_0x9a21('0x41')]][_0x9a21('0xf')]=_0x1f5363[_0x9a21('0x53')];queues[_0x1f5363[_0x9a21('0x41')]][_0x9a21('0x22')]=0x2;queues[_0x1f5363[_0x9a21('0x41')]][_0x9a21('0x54')]=queues[_0x1f5363[_0x9a21('0x4c')]]['calleridnum'];queues[_0x1f5363[_0x9a21('0x41')]][_0x9a21('0x55')]=queues[_0x1f5363['secondtransfererlinkedid']][_0x9a21('0x55')];queues[_0x1f5363[_0x9a21('0x41')]][_0x9a21('0x56')]=utils['now']();queues[_0x1f5363[_0x9a21('0x41')]]['queuecallerleaveAt']=utils[_0x9a21('0x1d')]();queues[_0x1f5363[_0x9a21('0x41')]][_0x9a21('0x36')]=0x0;queues[_0x1f5363[_0x9a21('0x41')]][_0x9a21('0x57')]=0x0;utils[_0x9a21('0x12')](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s',_0x1f5363['origtransfereruniqueid'],queues[_0x1f5363[_0x9a21('0x41')]][_0x9a21('0x20')],queues[_0x1f5363[_0x9a21('0x41')]][_0x9a21('0x54')],queues[_0x1f5363[_0x9a21('0x41')]][_0x9a21('0x55')]));}else{utils[_0x9a21('0x12')](util[_0x9a21('0x3')](_0x9a21('0x58'),_0x1f5363[_0x9a21('0x4a')],queues[_0x1f5363['origtransfererlinkedid']]['name'],_0x1f5363['secondtransfererlinkedid']));queues[_0x1f5363[_0x9a21('0x4b')]][_0x9a21('0xf')]=_0x1f5363[_0x9a21('0x4c')];}}}else if(_0x1f5363['secondtransfereruniqueid']==_0x1f5363[_0x9a21('0x4c')]){if(!_[_0x9a21('0x18')](queues[_0x1f5363[_0x9a21('0x4b')]])){utils['info'](util[_0x9a21('0x3')](_0x9a21('0x59'),_0x1f5363[_0x9a21('0x4a')],queues[_0x1f5363['origtransfererlinkedid']][_0x9a21('0x20')],_0x1f5363[_0x9a21('0x5a')],_0x1f5363[_0x9a21('0x5b')]));queues[_0x1f5363[_0x9a21('0x4b')]][_0x9a21('0x3d')]=!![];queues[_0x1f5363[_0x9a21('0x4b')]][_0x9a21('0x42')]='ATTENDED';queues[_0x1f5363[_0x9a21('0x4b')]][_0x9a21('0x4f')]=_0x1f5363[_0x9a21('0x5b')];queues[_0x1f5363['origtransfererlinkedid']][_0x9a21('0x45')]=_0x1f5363[_0x9a21('0x5a')];queues[_0x1f5363[_0x9a21('0x4b')]]['queuecallerexitreason']=_0x9a21('0x50');}if(!_[_0x9a21('0x18')](queues[_0x1f5363['secondtransfererlinkedid']])){if(_0x1f5363['transfertargetlinkedid']&&queues[_0x1f5363['transfertargetlinkedid']]){queues[_0x1f5363[_0x9a21('0x5c')]]['queuecallerenterreason']=0x1;queues[_0x1f5363[_0x9a21('0x53')]]=_['clone'](queues[_0x1f5363[_0x9a21('0x5c')]]);queues[_0x1f5363['transfertargetuniqueid']][_0x9a21('0xf')]=_0x1f5363[_0x9a21('0x53')];queues[_0x1f5363[_0x9a21('0x53')]]['queuecallerenterreason']=0x2;queues[_0x1f5363['transfertargetuniqueid']][_0x9a21('0x54')]=queues[_0x1f5363[_0x9a21('0x4b')]][_0x9a21('0x54')];queues[_0x1f5363[_0x9a21('0x53')]][_0x9a21('0x55')]=queues[_0x1f5363[_0x9a21('0x4b')]][_0x9a21('0x55')];queues[_0x1f5363[_0x9a21('0x53')]][_0x9a21('0x56')]=utils[_0x9a21('0x1d')]();queues[_0x1f5363[_0x9a21('0x53')]][_0x9a21('0x35')]=utils[_0x9a21('0x1d')]();queues[_0x1f5363[_0x9a21('0x53')]][_0x9a21('0x36')]=0x0;queues[_0x1f5363[_0x9a21('0x53')]][_0x9a21('0x57')]=0x0;utils[_0x9a21('0x12')](util[_0x9a21('0x3')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s',_0x1f5363[_0x9a21('0x4a')],queues[_0x1f5363[_0x9a21('0x53')]][_0x9a21('0x20')],queues[_0x1f5363[_0x9a21('0x53')]]['transfereduniqueid'],queues[_0x1f5363[_0x9a21('0x53')]]['calleridnum'],queues[_0x1f5363[_0x9a21('0x53')]][_0x9a21('0x55')]));}else{utils[_0x9a21('0x12')](util['format'](_0x9a21('0x58'),_0x1f5363[_0x9a21('0x4a')],queues[_0x1f5363[_0x9a21('0x4c')]]['name'],_0x1f5363[_0x9a21('0x4b')]));queues[_0x1f5363['secondtransfererlinkedid']][_0x9a21('0xf')]=_0x1f5363[_0x9a21('0x4b')];}}}}catch(_0x5789c4){utils['error'](util[_0x9a21('0x3')](_0x9a21('0x5d'),_0x1f5363['origtransfereruniqueid']),_0x5789c4);}};exports[_0x9a21('0x5e')]=function(_0x1979bb){try{if(!_['isNil'](queues[_0x1979bb[_0x9a21('0x5')]])){utils[_0x9a21('0x19')](util['format'](_0x9a21('0x5f'),_0x1979bb[_0x9a21('0x5')]),_0x1979bb);queues[_0x1979bb[_0x9a21('0x5')]][_0x9a21('0x60')]=utils[_0x9a21('0x1d')]();utils[_0x9a21('0x12')](util[_0x9a21('0x3')](_0x9a21('0x61'),_0x1979bb[_0x9a21('0x5')],queues[_0x1979bb['uniqueid']]['name'],queues[_0x1979bb[_0x9a21('0x5')]][_0x9a21('0x60')]));}}catch(_0x15872b){utils['error'](util['format']('[%s][queues][musiconholdstart]',_0x1979bb[_0x9a21('0x5')]),_0x15872b);}};exports['musiconholdstop']=function(_0x2cc646){try{if(!_[_0x9a21('0x18')](queues[_0x2cc646[_0x9a21('0x5')]])){if(!_['isNil'](queues[_0x2cc646[_0x9a21('0x5')]]['musiconholdstartAt'])){utils[_0x9a21('0x19')](util['format'](_0x9a21('0x62'),_0x2cc646[_0x9a21('0x5')]),_0x2cc646);queues[_0x2cc646[_0x9a21('0x5')]][_0x9a21('0x57')]+=utils[_0x9a21('0x63')](utils[_0x9a21('0x1d')](),queues[_0x2cc646['uniqueid']][_0x9a21('0x60')]);utils[_0x9a21('0x12')](util[_0x9a21('0x3')](_0x9a21('0x64'),_0x2cc646[_0x9a21('0x5')],queues[_0x2cc646[_0x9a21('0x5')]]['name'],queues[_0x2cc646[_0x9a21('0x5')]]['mohtime']));delete queues[_0x2cc646[_0x9a21('0x5')]][_0x9a21('0x60')];}}}catch(_0xb22b92){utils[_0x9a21('0x16')](util[_0x9a21('0x3')](_0x9a21('0x62'),_0x2cc646[_0x9a21('0x5')]),_0xb22b92);}};
\ No newline at end of file
+var _0x8a0d=['calleridnum','accountcode','queuecallerexitreason','getVoiceQueueByName','then','type','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','debug','format','[%s][queues][queuecallerjoin]','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','assign','now','error','isNil','[%s][queues][hangup]','queuecallerleaveAt','queuecallerabandon','queuecallerexit','queuecallercomplete','queuecallercompleteAt','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','queuecallerenterreason','varset','[%s][queues][varset]','variable','value','toUpperCase','CONTINUE','queuecallerabandonAt','queuecallerexitAt','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','queueposition','EXITWITHKEY','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','diffTime','queuecallerjoinAt','count','[%s][queues][queuecallerleave]','agentconnect','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','destaccountcode','assigned','lastAssignedTo','agentcomplete','[%s][queues][agentcomplete]','reason','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','transfereeuniqueid','[%s][queues][blindtransfer]','transfertype','BLIND','transferexten','extension','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','origtransfererexten','ATTENDED','transferuniqueid','ATTENDEDTRANSFER','transfereelinkedid','clone','transfertargetuniqueid','calleridname','holdtime','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','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','[%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','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','queue'];(function(_0x34c98e,_0x2cb42a){var _0x37f23c=function(_0x7887ef){while(--_0x7887ef){_0x34c98e['push'](_0x34c98e['shift']());}};_0x37f23c(++_0x2cb42a);}(_0x8a0d,0xd1));var _0xd8a0=function(_0x40c3c6,_0x169282){_0x40c3c6=_0x40c3c6-0x0;var _0x214c4b=_0x8a0d[_0x40c3c6];return _0x214c4b;};'use strict';var _=require(_0xd8a0('0x0'));var util=require('util');var utils=require(_0xd8a0('0x1'));var queues={};function writeDB(_0x1f4976){utils[_0xd8a0('0x2')](util['format'](_0xd8a0('0x3'),_0x1f4976[_0xd8a0('0x4')],_0x1f4976[_0xd8a0('0x5')],_0x1f4976[_0xd8a0('0x6')],_0x1f4976['lastAssignedTo'],_0x1f4976[_0xd8a0('0x7')],_0x1f4976[_0xd8a0('0x8')],_0x1f4976[_0xd8a0('0x9')]));if(_0x1f4976[_0xd8a0('0x6')]){utils[_0xd8a0('0xa')](_0x1f4976[_0xd8a0('0x6')])[_0xd8a0('0xb')](function(_0x240fa3){if(_0x240fa3){_0x1f4976[_0xd8a0('0xc')]=_0x240fa3['type'];}utils[_0xd8a0('0xd')](_0xd8a0('0xe'),_0x1f4976);});}else{utils[_0xd8a0('0xd')]('CreateVoiceQueueReport',_0x1f4976);}if(_0x1f4976[_0xd8a0('0xf')]){delete queues[_0x1f4976[_0xd8a0('0xf')]];}else{delete queues[_0x1f4976[_0xd8a0('0x4')]];}}exports[_0xd8a0('0x10')]=function(_0x426b4d){try{utils[_0xd8a0('0x11')](util[_0xd8a0('0x12')](_0xd8a0('0x13'),_0x426b4d[_0xd8a0('0x4')]),_0x426b4d);utils['info'](util[_0xd8a0('0x12')](_0xd8a0('0x14'),_0x426b4d[_0xd8a0('0x4')],_0x426b4d[_0xd8a0('0x6')],_0x426b4d[_0xd8a0('0x15')]));queues[_0x426b4d[_0xd8a0('0x4')]]=_[_0xd8a0('0x16')](_0x426b4d,{'originalposition':_0x426b4d[_0xd8a0('0x15')],'queuecallerjoinAt':utils[_0xd8a0('0x17')](),'mohtime':0x0});}catch(_0x1a9e0e){utils[_0xd8a0('0x18')](util[_0xd8a0('0x12')](_0xd8a0('0x13'),_0x426b4d['uniqueid']),_0x1a9e0e);}};exports['hangup']=function(_0x459fd8){try{if(!_[_0xd8a0('0x19')](queues[_0x459fd8[_0xd8a0('0x4')]])){utils['debug'](util[_0xd8a0('0x12')](_0xd8a0('0x1a'),_0x459fd8[_0xd8a0('0x4')]),_0x459fd8);if(queues[_0x459fd8['uniqueid']][_0xd8a0('0x1b')]){if(!queues[_0x459fd8[_0xd8a0('0x4')]][_0xd8a0('0x1c')]&&!queues[_0x459fd8[_0xd8a0('0x4')]][_0xd8a0('0x1d')]){queues[_0x459fd8[_0xd8a0('0x4')]][_0xd8a0('0x1e')]=!![];queues[_0x459fd8['uniqueid']][_0xd8a0('0x1f')]=utils['now']();queues[_0x459fd8[_0xd8a0('0x4')]][_0xd8a0('0x9')]=_0xd8a0('0x20');}utils[_0xd8a0('0x2')](util[_0xd8a0('0x12')](_0xd8a0('0x21'),_0x459fd8[_0xd8a0('0x4')],queues[_0x459fd8['uniqueid']][_0xd8a0('0x22')],queues[_0x459fd8[_0xd8a0('0x4')]]['queuecallerexitreason']));writeDB(queues[_0x459fd8[_0xd8a0('0x4')]]);}else if(queues[_0x459fd8[_0xd8a0('0x4')]][_0xd8a0('0xf')]){utils[_0xd8a0('0x2')](util[_0xd8a0('0x12')](_0xd8a0('0x23'),_0x459fd8[_0xd8a0('0x4')],queues[_0x459fd8[_0xd8a0('0x4')]][_0xd8a0('0x22')],queues[_0x459fd8[_0xd8a0('0x4')]][_0xd8a0('0xf')]));queues[queues[_0x459fd8[_0xd8a0('0x4')]][_0xd8a0('0xf')]]=queues[_0x459fd8[_0xd8a0('0x4')]];queues[queues[_0x459fd8[_0xd8a0('0x4')]][_0xd8a0('0xf')]][_0xd8a0('0x24')]=0x2;delete queues[_0x459fd8[_0xd8a0('0x4')]];}}}catch(_0xd52de7){utils[_0xd8a0('0x18')](util['format'](_0xd8a0('0x1a'),_0x459fd8['uniqueid']),_0xd52de7);}};exports[_0xd8a0('0x25')]=function(_0x49df85){try{utils[_0xd8a0('0x11')](util['format'](_0xd8a0('0x26'),_0x49df85[_0xd8a0('0x4')]),_0x49df85);if(!_[_0xd8a0('0x19')](_0x49df85[_0xd8a0('0x27')]['queuestatus'])&&_0x49df85[_0xd8a0('0x28')][_0xd8a0('0x29')]()!==_0xd8a0('0x2a')){if(!_[_0xd8a0('0x19')](queues[_0x49df85[_0xd8a0('0x4')]])){queues[_0x49df85[_0xd8a0('0x4')]]['queuecallerabandon']=![];queues[_0x49df85[_0xd8a0('0x4')]][_0xd8a0('0x2b')]=null;queues[_0x49df85[_0xd8a0('0x4')]][_0xd8a0('0x1d')]=!![];queues[_0x49df85['uniqueid']][_0xd8a0('0x2c')]=utils[_0xd8a0('0x17')]();queues[_0x49df85[_0xd8a0('0x4')]][_0xd8a0('0x9')]=_0x49df85[_0xd8a0('0x28')][_0xd8a0('0x29')]();utils[_0xd8a0('0x2')](util[_0xd8a0('0x12')](_0xd8a0('0x2d'),_0x49df85[_0xd8a0('0x4')],queues[_0x49df85['uniqueid']][_0xd8a0('0x22')],_0x49df85[_0xd8a0('0x28')],queues[_0x49df85[_0xd8a0('0x4')]]['queuecallerexitreason']));writeDB(queues[_0x49df85['uniqueid']]);}}else if(!_[_0xd8a0('0x19')](_0x49df85['variable'][_0xd8a0('0x2e')])){if(!_[_0xd8a0('0x19')](queues[_0x49df85[_0xd8a0('0x4')]])&&!queues[_0x49df85[_0xd8a0('0x4')]]['queuecallerabandon']){queues[_0x49df85[_0xd8a0('0x4')]]['queuecallerabandon']=![];queues[_0x49df85[_0xd8a0('0x4')]][_0xd8a0('0x2b')]=null;queues[_0x49df85[_0xd8a0('0x4')]][_0xd8a0('0x1d')]=!![];queues[_0x49df85[_0xd8a0('0x4')]]['queuecallerexitAt']=utils[_0xd8a0('0x17')]();queues[_0x49df85[_0xd8a0('0x4')]][_0xd8a0('0x9')]=_0xd8a0('0x2f');utils['info'](util[_0xd8a0('0x12')](_0xd8a0('0x30'),_0x49df85[_0xd8a0('0x4')],queues[_0x49df85['uniqueid']][_0xd8a0('0x22')],_0x49df85[_0xd8a0('0x28')],queues[_0x49df85[_0xd8a0('0x4')]][_0xd8a0('0x9')]));}}}catch(_0x4d3192){utils[_0xd8a0('0x18')](util[_0xd8a0('0x12')](_0xd8a0('0x26'),_0x49df85[_0xd8a0('0x4')]),_0x4d3192);}};exports[_0xd8a0('0x1c')]=function(_0x1feffa){try{if(!_[_0xd8a0('0x19')](queues[_0x1feffa[_0xd8a0('0x4')]])){utils[_0xd8a0('0x11')](util[_0xd8a0('0x12')](_0xd8a0('0x31'),_0x1feffa[_0xd8a0('0x4')]),_0x1feffa);queues[_0x1feffa[_0xd8a0('0x4')]][_0xd8a0('0x1d')]=![];queues[_0x1feffa[_0xd8a0('0x4')]][_0xd8a0('0x2c')]=null;queues[_0x1feffa[_0xd8a0('0x4')]][_0xd8a0('0x1c')]=!![];queues[_0x1feffa[_0xd8a0('0x4')]][_0xd8a0('0x2b')]=utils[_0xd8a0('0x17')]();queues[_0x1feffa[_0xd8a0('0x4')]][_0xd8a0('0x9')]=_0xd8a0('0x32');utils[_0xd8a0('0x2')](util[_0xd8a0('0x12')](_0xd8a0('0x33'),_0x1feffa[_0xd8a0('0x4')],queues[_0x1feffa[_0xd8a0('0x4')]][_0xd8a0('0x22')],queues[_0x1feffa['uniqueid']][_0xd8a0('0x9')]));}}catch(_0x292bbe){utils['error'](util[_0xd8a0('0x12')](_0xd8a0('0x31'),_0x1feffa['uniqueid']),_0x292bbe);}};exports[_0xd8a0('0x34')]=function(_0x35d224){try{if(!_[_0xd8a0('0x19')](queues[_0x35d224['uniqueid']])){utils[_0xd8a0('0x11')](util[_0xd8a0('0x12')]('[%s][queues][queuecallerleave]',_0x35d224[_0xd8a0('0x4')]),_0x35d224);utils[_0xd8a0('0x2')](util[_0xd8a0('0x12')](_0xd8a0('0x35'),_0x35d224['uniqueid'],queues[_0x35d224['uniqueid']][_0xd8a0('0x22')],_0x35d224[_0xd8a0('0x36')],_0x35d224['connectedlinename']));queues[_0x35d224['uniqueid']]['queuecallerleave']=!![];queues[_0x35d224[_0xd8a0('0x4')]][_0xd8a0('0x1b')]=utils['now']();queues[_0x35d224[_0xd8a0('0x4')]]['holdtime']=utils[_0xd8a0('0x37')](queues[_0x35d224['uniqueid']][_0xd8a0('0x1b')],queues[_0x35d224[_0xd8a0('0x4')]][_0xd8a0('0x38')]);queues[_0x35d224[_0xd8a0('0x4')]][_0xd8a0('0x15')]=_0x35d224[_0xd8a0('0x15')];queues[_0x35d224['uniqueid']][_0xd8a0('0x39')]=_0x35d224[_0xd8a0('0x39')];queues[_0x35d224['uniqueid']]['connectedlinenum']=_0x35d224[_0xd8a0('0x36')];queues[_0x35d224[_0xd8a0('0x4')]]['connectedlinename']=_0x35d224['connectedlinename'];}}catch(_0x16ed21){utils[_0xd8a0('0x18')](util[_0xd8a0('0x12')](_0xd8a0('0x3a'),_0x35d224[_0xd8a0('0x4')]),_0x16ed21);}};exports[_0xd8a0('0x3b')]=function(_0x345f58){try{if(!_[_0xd8a0('0x19')](queues[_0x345f58[_0xd8a0('0x4')]])){utils[_0xd8a0('0x11')](util[_0xd8a0('0x12')](_0xd8a0('0x3c'),_0x345f58[_0xd8a0('0x4')]),_0x345f58);utils[_0xd8a0('0x2')](util[_0xd8a0('0x12')](_0xd8a0('0x3d'),_0x345f58[_0xd8a0('0x4')],queues[_0x345f58['uniqueid']]['name'],_0x345f58[_0xd8a0('0x3e')],_0x345f58[_0xd8a0('0x3f')]));queues[_0x345f58[_0xd8a0('0x4')]][_0xd8a0('0x1c')]=![];queues[_0x345f58['uniqueid']][_0xd8a0('0x1c')]=![];queues[_0x345f58[_0xd8a0('0x4')]][_0xd8a0('0x2b')]=null;queues[_0x345f58[_0xd8a0('0x4')]][_0xd8a0('0x1d')]=![];queues[_0x345f58[_0xd8a0('0x4')]][_0xd8a0('0x9')]=null;queues[_0x345f58[_0xd8a0('0x4')]][_0xd8a0('0x2c')]=null;queues[_0x345f58[_0xd8a0('0x4')]][_0xd8a0('0x40')]=!![];queues[_0x345f58[_0xd8a0('0x4')]]['accountcode']=_0x345f58[_0xd8a0('0x3f')];queues[_0x345f58[_0xd8a0('0x4')]][_0xd8a0('0x41')]=_0x345f58[_0xd8a0('0x3e')];}}catch(_0x24f635){utils[_0xd8a0('0x18')](util['format']('[%s][queues][agentconnect]',_0x345f58['uniqueid']),_0x24f635);}};exports[_0xd8a0('0x42')]=function(_0x3c2504){try{if(!_[_0xd8a0('0x19')](queues[_0x3c2504[_0xd8a0('0x4')]])){if(queues[_0x3c2504[_0xd8a0('0x4')]][_0xd8a0('0x1b')]){utils['debug'](util['format'](_0xd8a0('0x43'),_0x3c2504['uniqueid']),_0x3c2504);queues[_0x3c2504[_0xd8a0('0x4')]][_0xd8a0('0x1c')]=![];queues[_0x3c2504[_0xd8a0('0x4')]][_0xd8a0('0x1c')]=![];queues[_0x3c2504['uniqueid']][_0xd8a0('0x2b')]=null;queues[_0x3c2504[_0xd8a0('0x4')]][_0xd8a0('0x1d')]=![];queues[_0x3c2504[_0xd8a0('0x4')]]['queuecallerexitAt']=null;queues[_0x3c2504[_0xd8a0('0x4')]][_0xd8a0('0x40')]=!![];queues[_0x3c2504[_0xd8a0('0x4')]][_0xd8a0('0x41')]=_0x3c2504[_0xd8a0('0x3e')];queues[_0x3c2504[_0xd8a0('0x4')]]['queuecallercomplete']=!![];queues[_0x3c2504[_0xd8a0('0x4')]]['queuecallercompleteAt']=utils['now']();if(_0x3c2504[_0xd8a0('0x44')]==_0xd8a0('0x45')){if(!queues[_0x3c2504[_0xd8a0('0x4')]][_0xd8a0('0x45')]){queues[_0x3c2504[_0xd8a0('0x4')]]['queuecallerexitreason']=_0xd8a0('0x46');}}else{queues[_0x3c2504['uniqueid']][_0xd8a0('0x9')]=_0xd8a0('0x47')+_0x3c2504[_0xd8a0('0x44')]['toUpperCase']();}utils[_0xd8a0('0x2')](util[_0xd8a0('0x12')](_0xd8a0('0x48'),_0x3c2504[_0xd8a0('0x4')],queues[_0x3c2504[_0xd8a0('0x4')]][_0xd8a0('0x22')],_0x3c2504[_0xd8a0('0x3e')],queues[_0x3c2504[_0xd8a0('0x4')]][_0xd8a0('0x9')]));writeDB(queues[_0x3c2504[_0xd8a0('0x4')]]);}}}catch(_0x3af7bc){utils[_0xd8a0('0x18')](util[_0xd8a0('0x12')]('[%s][queues][agentcomplete]',_0x3c2504[_0xd8a0('0x4')]),_0x3af7bc);}};exports['blindtransfer']=function(_0x3092d0){try{if(!_[_0xd8a0('0x19')](queues[_0x3092d0[_0xd8a0('0x49')]])){utils[_0xd8a0('0x11')](util[_0xd8a0('0x12')](_0xd8a0('0x4a'),_0x3092d0['uniqueid']),_0x3092d0);queues[_0x3092d0['transfereeuniqueid']][_0xd8a0('0x45')]=!![];queues[_0x3092d0[_0xd8a0('0x49')]][_0xd8a0('0x4b')]=_0xd8a0('0x4c');queues[_0x3092d0[_0xd8a0('0x49')]][_0xd8a0('0x4d')]=_0x3092d0[_0xd8a0('0x4e')];queues[_0x3092d0['transfereeuniqueid']]['transferuniqueid']=_0x3092d0[_0xd8a0('0x49')];queues[_0x3092d0[_0xd8a0('0x49')]]['queuecallerexitreason']=_0xd8a0('0x4f');utils[_0xd8a0('0x2')](util[_0xd8a0('0x12')](_0xd8a0('0x50'),_0x3092d0['uniqueid'],queues[_0x3092d0[_0xd8a0('0x49')]][_0xd8a0('0x22')],_0x3092d0[_0xd8a0('0x49')],_0x3092d0[_0xd8a0('0x4e')]));}}catch(_0x5dad86){utils[_0xd8a0('0x18')](util[_0xd8a0('0x12')](_0xd8a0('0x4a'),_0x3092d0[_0xd8a0('0x4')]),_0x5dad86);}};exports['attendedtransfer']=function(_0x1812ad){try{utils[_0xd8a0('0x11')](util[_0xd8a0('0x12')](_0xd8a0('0x51'),_0x1812ad[_0xd8a0('0x52')]),_0x1812ad);if(_0x1812ad['origtransfereruniqueid']==_0x1812ad[_0xd8a0('0x53')]){if(!_[_0xd8a0('0x19')](queues[_0x1812ad['secondtransfererlinkedid']])){utils['info'](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x1812ad['origtransfereruniqueid'],queues[_0x1812ad[_0xd8a0('0x54')]][_0xd8a0('0x22')],_0x1812ad[_0xd8a0('0x55')]));queues[_0x1812ad[_0xd8a0('0x54')]]['transfer']=!![];queues[_0x1812ad[_0xd8a0('0x54')]][_0xd8a0('0x4b')]=_0xd8a0('0x56');queues[_0x1812ad[_0xd8a0('0x54')]]['transferexten']=_0x1812ad[_0xd8a0('0x55')];queues[_0x1812ad['secondtransfererlinkedid']][_0xd8a0('0x57')]=_0x1812ad['origtransfereruniqueid'];queues[_0x1812ad[_0xd8a0('0x54')]][_0xd8a0('0x9')]=_0xd8a0('0x58');}if(!_[_0xd8a0('0x19')](queues[_0x1812ad[_0xd8a0('0x53')]])){if(_0x1812ad[_0xd8a0('0x59')]&&queues[_0x1812ad[_0xd8a0('0x59')]]){queues[_0x1812ad[_0xd8a0('0x59')]][_0xd8a0('0x24')]=0x1;queues[_0x1812ad['transfereeuniqueid']]=_[_0xd8a0('0x5a')](queues[_0x1812ad[_0xd8a0('0x59')]]);queues[_0x1812ad[_0xd8a0('0x49')]][_0xd8a0('0xf')]=_0x1812ad[_0xd8a0('0x5b')];queues[_0x1812ad[_0xd8a0('0x49')]]['queuecallerenterreason']=0x2;queues[_0x1812ad[_0xd8a0('0x49')]][_0xd8a0('0x7')]=queues[_0x1812ad[_0xd8a0('0x54')]][_0xd8a0('0x7')];queues[_0x1812ad[_0xd8a0('0x49')]][_0xd8a0('0x5c')]=queues[_0x1812ad[_0xd8a0('0x54')]][_0xd8a0('0x5c')];queues[_0x1812ad[_0xd8a0('0x49')]][_0xd8a0('0x38')]=utils[_0xd8a0('0x17')]();queues[_0x1812ad[_0xd8a0('0x49')]][_0xd8a0('0x1b')]=utils[_0xd8a0('0x17')]();queues[_0x1812ad[_0xd8a0('0x49')]][_0xd8a0('0x5d')]=0x0;queues[_0x1812ad['transfereeuniqueid']][_0xd8a0('0x5e')]=0x0;utils['info'](util[_0xd8a0('0x12')](_0xd8a0('0x5f'),_0x1812ad[_0xd8a0('0x52')],queues[_0x1812ad['transfereeuniqueid']][_0xd8a0('0x22')],queues[_0x1812ad[_0xd8a0('0x49')]][_0xd8a0('0x7')],queues[_0x1812ad['transfereeuniqueid']][_0xd8a0('0x5c')]));}else{utils[_0xd8a0('0x2')](util['format'](_0xd8a0('0x60'),_0x1812ad[_0xd8a0('0x52')],queues[_0x1812ad[_0xd8a0('0x53')]]['name'],_0x1812ad[_0xd8a0('0x54')]));queues[_0x1812ad[_0xd8a0('0x53')]][_0xd8a0('0xf')]=_0x1812ad[_0xd8a0('0x54')];}}}else if(_0x1812ad[_0xd8a0('0x61')]==_0x1812ad[_0xd8a0('0x54')]){if(!_[_0xd8a0('0x19')](queues[_0x1812ad[_0xd8a0('0x53')]])){utils['info'](util[_0xd8a0('0x12')](_0xd8a0('0x62'),_0x1812ad[_0xd8a0('0x52')],queues[_0x1812ad[_0xd8a0('0x53')]][_0xd8a0('0x22')],_0x1812ad[_0xd8a0('0x61')],_0x1812ad[_0xd8a0('0x63')]));queues[_0x1812ad[_0xd8a0('0x53')]][_0xd8a0('0x45')]=!![];queues[_0x1812ad[_0xd8a0('0x53')]][_0xd8a0('0x4b')]=_0xd8a0('0x56');queues[_0x1812ad[_0xd8a0('0x53')]]['transferexten']=_0x1812ad[_0xd8a0('0x63')];queues[_0x1812ad[_0xd8a0('0x53')]][_0xd8a0('0x57')]=_0x1812ad['secondtransfereruniqueid'];queues[_0x1812ad[_0xd8a0('0x53')]][_0xd8a0('0x9')]=_0xd8a0('0x58');}if(!_[_0xd8a0('0x19')](queues[_0x1812ad['secondtransfererlinkedid']])){if(_0x1812ad['transfertargetlinkedid']&&queues[_0x1812ad[_0xd8a0('0x64')]]){queues[_0x1812ad[_0xd8a0('0x64')]][_0xd8a0('0x24')]=0x1;queues[_0x1812ad[_0xd8a0('0x5b')]]=_['clone'](queues[_0x1812ad[_0xd8a0('0x64')]]);queues[_0x1812ad['transfertargetuniqueid']]['transfereduniqueid']=_0x1812ad[_0xd8a0('0x5b')];queues[_0x1812ad[_0xd8a0('0x5b')]][_0xd8a0('0x24')]=0x2;queues[_0x1812ad[_0xd8a0('0x5b')]][_0xd8a0('0x7')]=queues[_0x1812ad[_0xd8a0('0x53')]]['calleridnum'];queues[_0x1812ad[_0xd8a0('0x5b')]]['calleridname']=queues[_0x1812ad[_0xd8a0('0x53')]]['calleridname'];queues[_0x1812ad[_0xd8a0('0x5b')]][_0xd8a0('0x38')]=utils['now']();queues[_0x1812ad[_0xd8a0('0x5b')]][_0xd8a0('0x1b')]=utils[_0xd8a0('0x17')]();queues[_0x1812ad[_0xd8a0('0x5b')]][_0xd8a0('0x5d')]=0x0;queues[_0x1812ad['transfertargetuniqueid']][_0xd8a0('0x5e')]=0x0;utils[_0xd8a0('0x2')](util[_0xd8a0('0x12')](_0xd8a0('0x65'),_0x1812ad[_0xd8a0('0x52')],queues[_0x1812ad['transfertargetuniqueid']]['name'],queues[_0x1812ad[_0xd8a0('0x5b')]][_0xd8a0('0xf')],queues[_0x1812ad[_0xd8a0('0x5b')]][_0xd8a0('0x7')],queues[_0x1812ad['transfertargetuniqueid']]['calleridname']));}else{utils['info'](util[_0xd8a0('0x12')](_0xd8a0('0x60'),_0x1812ad['origtransfereruniqueid'],queues[_0x1812ad[_0xd8a0('0x54')]]['name'],_0x1812ad[_0xd8a0('0x53')]));queues[_0x1812ad[_0xd8a0('0x54')]][_0xd8a0('0xf')]=_0x1812ad[_0xd8a0('0x53')];}}}}catch(_0x1e580e){utils[_0xd8a0('0x18')](util[_0xd8a0('0x12')](_0xd8a0('0x51'),_0x1812ad[_0xd8a0('0x52')]),_0x1e580e);}};exports['musiconholdstart']=function(_0x5a37af){try{if(!_[_0xd8a0('0x19')](queues[_0x5a37af[_0xd8a0('0x4')]])){utils[_0xd8a0('0x11')](util[_0xd8a0('0x12')](_0xd8a0('0x66'),_0x5a37af[_0xd8a0('0x4')]),_0x5a37af);queues[_0x5a37af[_0xd8a0('0x4')]][_0xd8a0('0x67')]=utils[_0xd8a0('0x17')]();utils[_0xd8a0('0x2')](util[_0xd8a0('0x12')](_0xd8a0('0x68'),_0x5a37af[_0xd8a0('0x4')],queues[_0x5a37af[_0xd8a0('0x4')]][_0xd8a0('0x22')],queues[_0x5a37af['uniqueid']][_0xd8a0('0x67')]));}}catch(_0x16c78e){utils[_0xd8a0('0x18')](util[_0xd8a0('0x12')](_0xd8a0('0x66'),_0x5a37af[_0xd8a0('0x4')]),_0x16c78e);}};exports[_0xd8a0('0x69')]=function(_0x433c0a){try{if(!_[_0xd8a0('0x19')](queues[_0x433c0a['uniqueid']])){if(!_[_0xd8a0('0x19')](queues[_0x433c0a[_0xd8a0('0x4')]]['musiconholdstartAt'])){utils[_0xd8a0('0x11')](util['format'](_0xd8a0('0x6a'),_0x433c0a['uniqueid']),_0x433c0a);queues[_0x433c0a[_0xd8a0('0x4')]][_0xd8a0('0x5e')]+=utils['diffTime'](utils['now'](),queues[_0x433c0a[_0xd8a0('0x4')]][_0xd8a0('0x67')]);utils[_0xd8a0('0x2')](util[_0xd8a0('0x12')](_0xd8a0('0x6b'),_0x433c0a[_0xd8a0('0x4')],queues[_0x433c0a['uniqueid']][_0xd8a0('0x22')],queues[_0x433c0a[_0xd8a0('0x4')]][_0xd8a0('0x5e')]));delete queues[_0x433c0a[_0xd8a0('0x4')]]['musiconholdstartAt'];}}}catch(_0x6bbfdd){utils[_0xd8a0('0x18')](util[_0xd8a0('0x12')](_0xd8a0('0x6a'),_0x433c0a[_0xd8a0('0x4')]),_0x6bbfdd);}};
\ No newline at end of file
index b8046ee..629fe74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa767=['.WAV','find','monitors','push','hangup','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','connectedlinenum','connectedlinename','type','outbound','forEach','clone','[%s][recordings][newexten]','application','appdata','toLowerCase','startsWith','substring','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','[%s][recordings][queuecallerjoin]','util','./utils','info','format','[%s][recordings][writeDB]','uniqueid','accountcode','getUserByInternal','then','membername','name','UserId','request','CreateVoiceRecording','newchannel','debug','[%s][recordings][newchannel]','linkedid','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','exten','context','channel','error','newstate','[%s][recordings][newstate]','isNil','channelstate','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','variable','[%s][recordings][varset]','value','.wav49'];(function(_0x2cf2e9,_0xd58ea1){var _0xd3670d=function(_0x272868){while(--_0x272868){_0x2cf2e9['push'](_0x2cf2e9['shift']());}};_0xd3670d(++_0xd58ea1);}(_0xa767,0x8e));var _0x7a76=function(_0x441ac4,_0x934d4){_0x441ac4=_0x441ac4-0x0;var _0x1f19f1=_0xa767[_0x441ac4];return _0x1f19f1;};'use strict';var _=require('lodash');var util=require(_0x7a76('0x0'));var utils=require(_0x7a76('0x1'));var recordings={};function writeDB(_0x33eb24){utils[_0x7a76('0x2')](util[_0x7a76('0x3')](_0x7a76('0x4'),_0x33eb24[_0x7a76('0x5')]));if(_0x33eb24[_0x7a76('0x6')]){utils[_0x7a76('0x7')](_0x33eb24[_0x7a76('0x6')])[_0x7a76('0x8')](function(_0x337f35){if(_0x337f35){_0x33eb24[_0x7a76('0x9')]=_0x337f35[_0x7a76('0xa')];_0x33eb24[_0x7a76('0xb')]=_0x337f35['id'];}utils[_0x7a76('0xc')](_0x7a76('0xd'),_0x33eb24);});}else{utils[_0x7a76('0xc')](_0x7a76('0xd'),_0x33eb24);}}exports[_0x7a76('0xe')]=function(_0x45805c){try{utils[_0x7a76('0xf')](util['format'](_0x7a76('0x10'),_0x45805c[_0x7a76('0x5')]),_0x45805c);if(_0x45805c[_0x7a76('0x5')]==_0x45805c[_0x7a76('0x11')]){utils[_0x7a76('0x2')](util[_0x7a76('0x3')](_0x7a76('0x12'),_0x45805c[_0x7a76('0x5')],_0x45805c['context'],_0x45805c['exten']));recordings[_0x45805c[_0x7a76('0x5')]]={'uniqueid':_0x45805c['uniqueid'],'accountcode':_0x45805c['accountcode'],'exten':_0x45805c[_0x7a76('0x13')],'context':_0x45805c[_0x7a76('0x14')],'channel':_0x45805c[_0x7a76('0x15')],'monitors':[]};}}catch(_0x2eff47){utils[_0x7a76('0x16')](util['format'](_0x7a76('0x10'),_0x45805c[_0x7a76('0x5')]),_0x2eff47);}};exports[_0x7a76('0x17')]=function(_0x378c51){try{utils['debug'](util[_0x7a76('0x3')](_0x7a76('0x18'),_0x378c51[_0x7a76('0x5')]),_0x378c51);if(!_[_0x7a76('0x19')](recordings[_0x378c51['uniqueid']])&&_0x378c51[_0x7a76('0x1a')]==0x6){utils[_0x7a76('0x2')](util['format']('[%s][recordings][newstate]\x20context:%s\x20channel:%s',_0x378c51[_0x7a76('0x5')],_0x378c51[_0x7a76('0x14')],_0x378c51[_0x7a76('0x15')]));}else if(!_[_0x7a76('0x19')](recordings[_0x378c51['linkedid']])&&_0x378c51[_0x7a76('0x1a')]==0x6&&_0x378c51[_0x7a76('0x14')]!='transfer'){utils[_0x7a76('0x2')](util[_0x7a76('0x3')](_0x7a76('0x1b'),_0x378c51[_0x7a76('0x5')],_0x378c51[_0x7a76('0x11')],_0x378c51['context'],_0x378c51[_0x7a76('0x15')]));recordings[_0x378c51[_0x7a76('0x11')]]['accountcode']=_0x378c51['accountcode'];}}catch(_0x2458bf){utils[_0x7a76('0x16')](util[_0x7a76('0x3')](_0x7a76('0x18'),_0x378c51[_0x7a76('0x5')]),_0x2458bf);}};exports['varset']=function(_0x1f5786){try{if(!_[_0x7a76('0x19')](_0x1f5786['variable'])&&!_[_0x7a76('0x19')](_0x1f5786[_0x7a76('0x1c')]['mixmonitor_filename'])){utils[_0x7a76('0xf')](util[_0x7a76('0x3')](_0x7a76('0x1d'),_0x1f5786['uniqueid']),_0x1f5786);utils[_0x7a76('0x2')](util[_0x7a76('0x3')]('[%s][recordings][varset]\x20variable:%s\x20value:%s',_0x1f5786[_0x7a76('0x5')],_0x1f5786[_0x7a76('0x1c')],_0x1f5786[_0x7a76('0x1e')]));if(_['endsWith'](_0x1f5786[_0x7a76('0x1e')],_0x7a76('0x1f'))){_0x1f5786['value']=_0x1f5786[_0x7a76('0x1e')]['replace'](_0x7a76('0x1f'),_0x7a76('0x20'));}if(recordings[_0x1f5786['linkedid']]){var _0x80803f=_[_0x7a76('0x21')](recordings[_0x1f5786['linkedid']][_0x7a76('0x22')],{'value':_0x1f5786[_0x7a76('0x1e')]});if(_[_0x7a76('0x19')](_0x80803f)){recordings[_0x1f5786['linkedid']]['monitors'][_0x7a76('0x23')]({'value':_0x1f5786[_0x7a76('0x1e')]});}}}}catch(_0xbe3f59){utils[_0x7a76('0x16')](util[_0x7a76('0x3')](_0x7a76('0x1d'),_0x1f5786[_0x7a76('0x5')]),_0xbe3f59);}};exports[_0x7a76('0x24')]=function(_0x35bbc8){try{if(!_[_0x7a76('0x19')](recordings[_0x35bbc8[_0x7a76('0x5')]])){utils['debug'](util[_0x7a76('0x3')](_0x7a76('0x25'),_0x35bbc8[_0x7a76('0x5')]),_0x35bbc8);utils[_0x7a76('0x2')](util[_0x7a76('0x3')](_0x7a76('0x26'),_0x35bbc8[_0x7a76('0x5')],_0x35bbc8[_0x7a76('0x27')],_0x35bbc8[_0x7a76('0x28')],_0x35bbc8['cause-txt']));recordings[_0x35bbc8[_0x7a76('0x5')]][_0x7a76('0x27')]=_0x35bbc8['calleridnum'];recordings[_0x35bbc8['uniqueid']][_0x7a76('0x28')]=_0x35bbc8[_0x7a76('0x28')];recordings[_0x35bbc8[_0x7a76('0x5')]]['connectedlinenum']=_0x35bbc8[_0x7a76('0x29')];recordings[_0x35bbc8[_0x7a76('0x5')]][_0x7a76('0x2a')]=_0x35bbc8[_0x7a76('0x2a')];if(recordings[_0x35bbc8['uniqueid']][_0x7a76('0x2b')]==_0x7a76('0x2c')&&recordings[_0x35bbc8[_0x7a76('0x5')]][_0x7a76('0x6')]){recordings[_0x35bbc8[_0x7a76('0x5')]][_0x7a76('0x29')]=recordings[_0x35bbc8[_0x7a76('0x5')]][_0x7a76('0x6')];recordings[_0x35bbc8[_0x7a76('0x5')]][_0x7a76('0x2a')]='';}recordings[_0x35bbc8[_0x7a76('0x5')]][_0x7a76('0x22')][_0x7a76('0x2d')](function(_0x268f0e){var _0x5f50a0=_[_0x7a76('0x2e')](recordings[_0x35bbc8[_0x7a76('0x5')]]);_0x5f50a0[_0x7a76('0x1e')]=_0x268f0e[_0x7a76('0x1e')];writeDB(_0x5f50a0);});delete recordings[_0x35bbc8['uniqueid']];}}catch(_0x30d5bd){utils['error'](util['format'](_0x7a76('0x25'),_0x35bbc8[_0x7a76('0x5')]),_0x30d5bd);}};exports['newexten']=function(_0x26c50c){try{if(!_[_0x7a76('0x19')](recordings[_0x26c50c[_0x7a76('0x5')]])){utils[_0x7a76('0xf')](util[_0x7a76('0x3')](_0x7a76('0x2f'),_0x26c50c[_0x7a76('0x5')]),_0x26c50c);utils[_0x7a76('0x2')](util[_0x7a76('0x3')]('[%s][recordings][newexten]\x20application:%s\x20appdata:%s',_0x26c50c[_0x7a76('0x5')],_0x26c50c[_0x7a76('0x30')],_0x26c50c[_0x7a76('0x31')]));if(_0x26c50c[_0x7a76('0x30')][_0x7a76('0x32')]()=='set'&&_[_0x7a76('0x33')](_0x26c50c[_0x7a76('0x31')][_0x7a76('0x32')](),'cdr')){var _0x3f954e=_0x26c50c[_0x7a76('0x31')]['split']('=');var _0x31fe95=_0x3f954e[0x0][_0x7a76('0x34')](_0x3f954e[0x0][_0x7a76('0x35')]('(')+0x1,_0x3f954e[0x0][_0x7a76('0x35')](')'));var _0x51d2fa=_0x3f954e[0x1];recordings[_0x26c50c['uniqueid']][_0x31fe95]=_0x51d2fa;}}}catch(_0x44cdd0){utils['error'](util['format'](_0x7a76('0x2f'),_0x26c50c[_0x7a76('0x5')]),_0x44cdd0);}};exports[_0x7a76('0x36')]=function(_0x4057a5){try{if(!_[_0x7a76('0x19')](recordings[_0x4057a5[_0x7a76('0x5')]])){utils[_0x7a76('0xf')](util['format']('[%s][recordings][queuecallerjoin]',_0x4057a5[_0x7a76('0x5')]),_0x4057a5);utils['info'](util[_0x7a76('0x3')](_0x7a76('0x37'),_0x4057a5[_0x7a76('0x5')],_0x4057a5[_0x7a76('0x38')]));recordings[_0x4057a5[_0x7a76('0x5')]]['queue']=_0x4057a5[_0x7a76('0x38')];}}catch(_0xb3b37b){utils[_0x7a76('0x16')](util[_0x7a76('0x3')](_0x7a76('0x39'),_0x4057a5[_0x7a76('0x5')]),_0xb3b37b);}};
\ No newline at end of file
+var _0x92eb=['[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','varset','variable','mixmonitor_filename','value','endsWith','.wav49','replace','.WAV','monitors','push','[%s][recordings][varset]','hangup','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','connectedlinenum','connectedlinename','type','outbound','clone','newexten','appdata','toLowerCase','set','startsWith','substring','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]','queue','lodash','./utils','format','getUserByInternal','membername','UserId','CreateVoiceRecording','request','newchannel','debug','[%s][recordings][newchannel]','uniqueid','linkedid','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','accountcode','channel','error','newstate','[%s][recordings][newstate]','info','[%s][recordings][newstate]\x20context:%s\x20channel:%s','isNil','channelstate'];(function(_0x4596a1,_0x4a6fdc){var _0x5cc738=function(_0x1556f4){while(--_0x1556f4){_0x4596a1['push'](_0x4596a1['shift']());}};_0x5cc738(++_0x4a6fdc);}(_0x92eb,0x90));var _0xb92e=function(_0x6158fc,_0x20b38c){_0x6158fc=_0x6158fc-0x0;var _0x5b6e00=_0x92eb[_0x6158fc];return _0x5b6e00;};'use strict';var _=require(_0xb92e('0x0'));var util=require('util');var utils=require(_0xb92e('0x1'));var recordings={};function writeDB(_0x18e39c){utils['info'](util[_0xb92e('0x2')]('[%s][recordings][writeDB]',_0x18e39c['uniqueid']));if(_0x18e39c['accountcode']){utils[_0xb92e('0x3')](_0x18e39c['accountcode'])['then'](function(_0x422766){if(_0x422766){_0x18e39c[_0xb92e('0x4')]=_0x422766['name'];_0x18e39c[_0xb92e('0x5')]=_0x422766['id'];}utils['request'](_0xb92e('0x6'),_0x18e39c);});}else{utils[_0xb92e('0x7')](_0xb92e('0x6'),_0x18e39c);}}exports[_0xb92e('0x8')]=function(_0x305483){try{utils[_0xb92e('0x9')](util['format'](_0xb92e('0xa'),_0x305483['uniqueid']),_0x305483);if(_0x305483[_0xb92e('0xb')]==_0x305483[_0xb92e('0xc')]){utils['info'](util[_0xb92e('0x2')](_0xb92e('0xd'),_0x305483[_0xb92e('0xb')],_0x305483[_0xb92e('0xe')],_0x305483['exten']));recordings[_0x305483['uniqueid']]={'uniqueid':_0x305483['uniqueid'],'accountcode':_0x305483[_0xb92e('0xf')],'exten':_0x305483['exten'],'context':_0x305483[_0xb92e('0xe')],'channel':_0x305483[_0xb92e('0x10')],'monitors':[]};}}catch(_0x3adf07){utils[_0xb92e('0x11')](util['format'](_0xb92e('0xa'),_0x305483['uniqueid']),_0x3adf07);}};exports[_0xb92e('0x12')]=function(_0x28236c){try{utils[_0xb92e('0x9')](util[_0xb92e('0x2')](_0xb92e('0x13'),_0x28236c[_0xb92e('0xb')]),_0x28236c);if(!_['isNil'](recordings[_0x28236c[_0xb92e('0xb')]])&&_0x28236c['channelstate']==0x6){utils[_0xb92e('0x14')](util[_0xb92e('0x2')](_0xb92e('0x15'),_0x28236c[_0xb92e('0xb')],_0x28236c[_0xb92e('0xe')],_0x28236c[_0xb92e('0x10')]));}else if(!_[_0xb92e('0x16')](recordings[_0x28236c['linkedid']])&&_0x28236c[_0xb92e('0x17')]==0x6&&_0x28236c[_0xb92e('0xe')]!='transfer'){utils[_0xb92e('0x14')](util[_0xb92e('0x2')](_0xb92e('0x18'),_0x28236c[_0xb92e('0xb')],_0x28236c[_0xb92e('0xc')],_0x28236c['context'],_0x28236c[_0xb92e('0x10')]));recordings[_0x28236c['linkedid']][_0xb92e('0xf')]=_0x28236c[_0xb92e('0xf')];}}catch(_0x4979f2){utils[_0xb92e('0x11')](util[_0xb92e('0x2')](_0xb92e('0x13'),_0x28236c[_0xb92e('0xb')]),_0x4979f2);}};exports[_0xb92e('0x19')]=function(_0x18f0a3){try{if(!_[_0xb92e('0x16')](_0x18f0a3[_0xb92e('0x1a')])&&!_[_0xb92e('0x16')](_0x18f0a3[_0xb92e('0x1a')][_0xb92e('0x1b')])){utils[_0xb92e('0x9')](util[_0xb92e('0x2')]('[%s][recordings][varset]',_0x18f0a3['uniqueid']),_0x18f0a3);utils[_0xb92e('0x14')](util['format']('[%s][recordings][varset]\x20variable:%s\x20value:%s',_0x18f0a3[_0xb92e('0xb')],_0x18f0a3[_0xb92e('0x1a')],_0x18f0a3[_0xb92e('0x1c')]));if(_[_0xb92e('0x1d')](_0x18f0a3[_0xb92e('0x1c')],_0xb92e('0x1e'))){_0x18f0a3[_0xb92e('0x1c')]=_0x18f0a3[_0xb92e('0x1c')][_0xb92e('0x1f')]('.wav49',_0xb92e('0x20'));}if(recordings[_0x18f0a3[_0xb92e('0xc')]]){var _0x541754=_['find'](recordings[_0x18f0a3[_0xb92e('0xc')]][_0xb92e('0x21')],{'value':_0x18f0a3['value']});if(_[_0xb92e('0x16')](_0x541754)){recordings[_0x18f0a3[_0xb92e('0xc')]][_0xb92e('0x21')][_0xb92e('0x22')]({'value':_0x18f0a3[_0xb92e('0x1c')]});}}}}catch(_0x3381e2){utils[_0xb92e('0x11')](util[_0xb92e('0x2')](_0xb92e('0x23'),_0x18f0a3['uniqueid']),_0x3381e2);}};exports[_0xb92e('0x24')]=function(_0x2110ae){try{if(!_[_0xb92e('0x16')](recordings[_0x2110ae['uniqueid']])){utils[_0xb92e('0x9')](util[_0xb92e('0x2')](_0xb92e('0x25'),_0x2110ae[_0xb92e('0xb')]),_0x2110ae);utils[_0xb92e('0x14')](util[_0xb92e('0x2')](_0xb92e('0x26'),_0x2110ae[_0xb92e('0xb')],_0x2110ae[_0xb92e('0x27')],_0x2110ae[_0xb92e('0x28')],_0x2110ae['cause-txt']));recordings[_0x2110ae[_0xb92e('0xb')]][_0xb92e('0x27')]=_0x2110ae['calleridnum'];recordings[_0x2110ae[_0xb92e('0xb')]][_0xb92e('0x28')]=_0x2110ae[_0xb92e('0x28')];recordings[_0x2110ae[_0xb92e('0xb')]][_0xb92e('0x29')]=_0x2110ae[_0xb92e('0x29')];recordings[_0x2110ae[_0xb92e('0xb')]]['connectedlinename']=_0x2110ae[_0xb92e('0x2a')];if(recordings[_0x2110ae[_0xb92e('0xb')]][_0xb92e('0x2b')]==_0xb92e('0x2c')&&recordings[_0x2110ae[_0xb92e('0xb')]]['accountcode']){recordings[_0x2110ae[_0xb92e('0xb')]][_0xb92e('0x29')]=recordings[_0x2110ae['uniqueid']][_0xb92e('0xf')];recordings[_0x2110ae[_0xb92e('0xb')]][_0xb92e('0x2a')]='';}recordings[_0x2110ae[_0xb92e('0xb')]][_0xb92e('0x21')]['forEach'](function(_0x32f609){var _0x8c375f=_[_0xb92e('0x2d')](recordings[_0x2110ae[_0xb92e('0xb')]]);_0x8c375f[_0xb92e('0x1c')]=_0x32f609['value'];writeDB(_0x8c375f);});delete recordings[_0x2110ae[_0xb92e('0xb')]];}}catch(_0xa68fd4){utils['error'](util['format'](_0xb92e('0x25'),_0x2110ae[_0xb92e('0xb')]),_0xa68fd4);}};exports[_0xb92e('0x2e')]=function(_0x3743de){try{if(!_[_0xb92e('0x16')](recordings[_0x3743de[_0xb92e('0xb')]])){utils['debug'](util['format']('[%s][recordings][newexten]',_0x3743de[_0xb92e('0xb')]),_0x3743de);utils['info'](util[_0xb92e('0x2')]('[%s][recordings][newexten]\x20application:%s\x20appdata:%s',_0x3743de[_0xb92e('0xb')],_0x3743de['application'],_0x3743de[_0xb92e('0x2f')]));if(_0x3743de['application'][_0xb92e('0x30')]()==_0xb92e('0x31')&&_[_0xb92e('0x32')](_0x3743de[_0xb92e('0x2f')][_0xb92e('0x30')](),'cdr')){var _0x3125c3=_0x3743de['appdata']['split']('=');var _0x38063c=_0x3125c3[0x0][_0xb92e('0x33')](_0x3125c3[0x0]['lastIndexOf']('(')+0x1,_0x3125c3[0x0][_0xb92e('0x34')](')'));var _0x223cad=_0x3125c3[0x1];recordings[_0x3743de[_0xb92e('0xb')]][_0x38063c]=_0x223cad;}}}catch(_0x3b6f69){utils['error'](util[_0xb92e('0x2')]('[%s][recordings][newexten]',_0x3743de[_0xb92e('0xb')]),_0x3b6f69);}};exports[_0xb92e('0x35')]=function(_0x3aa03e){try{if(!_[_0xb92e('0x16')](recordings[_0x3aa03e[_0xb92e('0xb')]])){utils['debug'](util[_0xb92e('0x2')](_0xb92e('0x36'),_0x3aa03e[_0xb92e('0xb')]),_0x3aa03e);utils[_0xb92e('0x14')](util[_0xb92e('0x2')]('[%s][recordings][queuecallerjoin]\x20queue:%s',_0x3aa03e[_0xb92e('0xb')],_0x3aa03e['queue']));recordings[_0x3aa03e['uniqueid']][_0xb92e('0x37')]=_0x3aa03e[_0xb92e('0x37')];}}catch(_0x49397c){utils[_0xb92e('0x11')](util[_0xb92e('0x2')](_0xb92e('0x36'),_0x3aa03e['uniqueid']),_0x49397c);}};
\ No newline at end of file
index 8384138..a370005 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5348=['blinds','blindtransfer','[%s][transfers][blindtransfer]','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereecalleridname','blind','transfereruniqueid','error','attendedtransfer','debug','[%s][transfers][attendedtransfer]','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','transfertargetcalleridname','assign','origtransfererchannel','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','origtransferercontext','origtransfererexten','attended','isNil','transfereechannel','transfertargetchannel','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','lodash','util','./utils','info','format','type','origtransfereruniqueid','uniqueid','request'];(function(_0x185c8a,_0x15b86a){var _0x5be29a=function(_0x7a2df2){while(--_0x7a2df2){_0x185c8a['push'](_0x185c8a['shift']());}};_0x5be29a(++_0x15b86a);}(_0x5348,0x81));var _0x8534=function(_0x2ebc06,_0x2f480e){_0x2ebc06=_0x2ebc06-0x0;var _0x57ded5=_0x5348[_0x2ebc06];return _0x57ded5;};'use strict';var _=require(_0x8534('0x0'));var util=require(_0x8534('0x1'));var utils=require(_0x8534('0x2'));function writeDB(_0x378d5b){utils[_0x8534('0x3')](util[_0x8534('0x4')]('[%s][transfers][writeDB]\x20type:%s',_0x378d5b[_0x8534('0x5')]==='attended'?_0x378d5b[_0x8534('0x6')]:_0x378d5b[_0x8534('0x7')],_0x378d5b[_0x8534('0x5')]));utils[_0x8534('0x8')]('CreateVoiceTransferReport',_0x378d5b);}exports[_0x8534('0x9')]={};exports[_0x8534('0xa')]=function(_0x335c5b){try{utils['debug'](util[_0x8534('0x4')](_0x8534('0xb'),_0x335c5b['uniqueid']),_0x335c5b);utils['info'](util[_0x8534('0x4')]('[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x335c5b[_0x8534('0x7')],_0x335c5b[_0x8534('0xc')],_0x335c5b[_0x8534('0xd')],_0x335c5b[_0x8534('0xe')],_0x335c5b[_0x8534('0xf')]));_0x335c5b[_0x8534('0x5')]=_0x8534('0x10');exports['blinds'][_0x335c5b[_0x8534('0x11')]]=_0x335c5b;writeDB(_0x335c5b);}catch(_0x243422){utils[_0x8534('0x12')](util[_0x8534('0x4')](_0x8534('0xb'),_0x335c5b[_0x8534('0x7')]),_0x243422);}};exports[_0x8534('0x13')]=function(_0x13bbf1){try{utils[_0x8534('0x14')](util[_0x8534('0x4')](_0x8534('0x15'),_0x13bbf1[_0x8534('0x6')]),_0x13bbf1);utils[_0x8534('0x3')](util[_0x8534('0x4')](_0x8534('0x16'),_0x13bbf1[_0x8534('0x6')],_0x13bbf1[_0x8534('0x17')],_0x13bbf1[_0x8534('0x18')],_0x13bbf1[_0x8534('0x19')],_0x13bbf1[_0x8534('0x1a')]));_0x13bbf1=_[_0x8534('0x1b')](_0x13bbf1,{'transfererchannel':_0x13bbf1[_0x8534('0x1c')],'transferercalleridnum':_0x13bbf1[_0x8534('0x17')],'transferercalleridname':_0x13bbf1[_0x8534('0x18')],'transfererconnectedlinenum':_0x13bbf1['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x13bbf1[_0x8534('0x1d')],'transfereraccountcode':_0x13bbf1[_0x8534('0x1e')],'transferercontext':_0x13bbf1[_0x8534('0x1f')],'transfererexten':_0x13bbf1[_0x8534('0x20')],'transfererlinkedid':_0x13bbf1[_0x8534('0x21')],'context':_0x13bbf1[_0x8534('0x22')],'extension':_0x13bbf1[_0x8534('0x23')],'type':_0x8534('0x24')});if(_[_0x8534('0x25')](_0x13bbf1[_0x8534('0x26')])){_0x13bbf1=_[_0x8534('0x1b')](_0x13bbf1,{'transfereechannel':_0x13bbf1[_0x8534('0x27')],'transfereecalleridnum':_0x13bbf1['transfertargetcalleridnum'],'transfereecalleridname':_0x13bbf1['transfertargetcalleridname'],'transfereeconnectedlinenum':_0x13bbf1[_0x8534('0x28')],'transfereeconnectedlinename':_0x13bbf1[_0x8534('0x29')],'transfereeaccountcode':_0x13bbf1[_0x8534('0x2a')],'transfereecontext':_0x13bbf1[_0x8534('0x2b')],'transfereeexten':_0x13bbf1[_0x8534('0x2c')],'transfereelinkedid':_0x13bbf1[_0x8534('0x2d')]});}writeDB(_0x13bbf1);}catch(_0x4ed87f){utils[_0x8534('0x12')](util[_0x8534('0x4')]('[%s][transfers][attendedtransfer]',_0x13bbf1[_0x8534('0x6')]),_0x4ed87f);}};
\ No newline at end of file
+var _0xea85=['origtransfererlinkedid','origtransferercontext','origtransfererexten','isNil','transfereechannel','assign','transfertargetchannel','transfertargetconnectedlinenum','transfertargetaccountcode','transfertargetexten','lodash','util','./utils','info','format','[%s][transfers][writeDB]\x20type:%s','type','attended','origtransfereruniqueid','uniqueid','request','blinds','blindtransfer','debug','[%s][transfers][blindtransfer]','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridname','transfereecalleridnum','transfereruniqueid','error','attendedtransfer','[%s][transfers][attendedtransfer]','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','transfertargetcalleridname','origtransfererchannel','secondtransfererconnectedlinenum','origtransfereraccountcode','secondtransferercontext'];(function(_0x366fa0,_0x4e78ab){var _0x3f1962=function(_0x23f884){while(--_0x23f884){_0x366fa0['push'](_0x366fa0['shift']());}};_0x3f1962(++_0x4e78ab);}(_0xea85,0x17b));var _0x5ea8=function(_0x2e43aa,_0x5c6e3d){_0x2e43aa=_0x2e43aa-0x0;var _0xd2c4ff=_0xea85[_0x2e43aa];return _0xd2c4ff;};'use strict';var _=require(_0x5ea8('0x0'));var util=require(_0x5ea8('0x1'));var utils=require(_0x5ea8('0x2'));function writeDB(_0xeb0b58){utils[_0x5ea8('0x3')](util[_0x5ea8('0x4')](_0x5ea8('0x5'),_0xeb0b58[_0x5ea8('0x6')]===_0x5ea8('0x7')?_0xeb0b58[_0x5ea8('0x8')]:_0xeb0b58[_0x5ea8('0x9')],_0xeb0b58['type']));utils[_0x5ea8('0xa')]('CreateVoiceTransferReport',_0xeb0b58);}exports[_0x5ea8('0xb')]={};exports[_0x5ea8('0xc')]=function(_0x4e99f1){try{utils[_0x5ea8('0xd')](util[_0x5ea8('0x4')](_0x5ea8('0xe'),_0x4e99f1[_0x5ea8('0x9')]),_0x4e99f1);utils['info'](util['format'](_0x5ea8('0xf'),_0x4e99f1[_0x5ea8('0x9')],_0x4e99f1['transferercalleridnum'],_0x4e99f1[_0x5ea8('0x10')],_0x4e99f1[_0x5ea8('0x11')],_0x4e99f1['transfereecalleridname']));_0x4e99f1[_0x5ea8('0x6')]='blind';exports[_0x5ea8('0xb')][_0x4e99f1[_0x5ea8('0x12')]]=_0x4e99f1;writeDB(_0x4e99f1);}catch(_0x1eabd4){utils[_0x5ea8('0x13')](util[_0x5ea8('0x4')](_0x5ea8('0xe'),_0x4e99f1[_0x5ea8('0x9')]),_0x1eabd4);}};exports[_0x5ea8('0x14')]=function(_0x33edfc){try{utils[_0x5ea8('0xd')](util['format'](_0x5ea8('0x15'),_0x33edfc[_0x5ea8('0x8')]),_0x33edfc);utils['info'](util[_0x5ea8('0x4')](_0x5ea8('0x16'),_0x33edfc[_0x5ea8('0x8')],_0x33edfc[_0x5ea8('0x17')],_0x33edfc[_0x5ea8('0x18')],_0x33edfc[_0x5ea8('0x19')],_0x33edfc[_0x5ea8('0x1a')]));_0x33edfc=_['assign'](_0x33edfc,{'transfererchannel':_0x33edfc[_0x5ea8('0x1b')],'transferercalleridnum':_0x33edfc[_0x5ea8('0x17')],'transferercalleridname':_0x33edfc[_0x5ea8('0x18')],'transfererconnectedlinenum':_0x33edfc[_0x5ea8('0x1c')],'transfererconnectedlinename':_0x33edfc['secondtransfererconnectedlinename'],'transfereraccountcode':_0x33edfc[_0x5ea8('0x1d')],'transferercontext':_0x33edfc[_0x5ea8('0x1e')],'transfererexten':_0x33edfc['secondtransfererexten'],'transfererlinkedid':_0x33edfc[_0x5ea8('0x1f')],'context':_0x33edfc[_0x5ea8('0x20')],'extension':_0x33edfc[_0x5ea8('0x21')],'type':_0x5ea8('0x7')});if(_[_0x5ea8('0x22')](_0x33edfc[_0x5ea8('0x23')])){_0x33edfc=_[_0x5ea8('0x24')](_0x33edfc,{'transfereechannel':_0x33edfc[_0x5ea8('0x25')],'transfereecalleridnum':_0x33edfc[_0x5ea8('0x19')],'transfereecalleridname':_0x33edfc[_0x5ea8('0x1a')],'transfereeconnectedlinenum':_0x33edfc[_0x5ea8('0x26')],'transfereeconnectedlinename':_0x33edfc['transfertargetconnectedlinename'],'transfereeaccountcode':_0x33edfc[_0x5ea8('0x27')],'transfereecontext':_0x33edfc['transfertargetcontext'],'transfereeexten':_0x33edfc[_0x5ea8('0x28')],'transfereelinkedid':_0x33edfc['transfertargetlinkedid']});}writeDB(_0x33edfc);}catch(_0x473be0){utils[_0x5ea8('0x13')](util['format'](_0x5ea8('0x15'),_0x33edfc[_0x5ea8('0x8')]),_0x473be0);}};
\ No newline at end of file
index 189c32d..42eedae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1228=['getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','notfound','[utils][getUserByInternal]','[utils][getUserByInterface]\x20interface:%s\x20%s','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','length','[utils][getVoiceQueueByName]','addTime','add','seconds','subtractTime','subtract','YYYY-MM-DD\x20HH:mm:ss','diffTime','isAfter','isBefore','bluebird','moment','client','http','../../config/logger','info','inspect','error','request','debug','[utils][request]\x20name:%s','catch','GetUser','internal','name','interface','then','stringify','result'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x1228,0x12f));var _0x8122=function(_0x11eb9a,_0x22d3e1){_0x11eb9a=_0x11eb9a-0x0;var _0x3b98fc=_0x1228[_0x11eb9a];return _0x3b98fc;};'use strict';var BPromise=require(_0x8122('0x0'));var jayson=require('jayson/promise');var moment=require(_0x8122('0x1'));var util=require('util');var client=jayson[_0x8122('0x2')][_0x8122('0x3')]({'port':0x2329});var logger=require(_0x8122('0x4'))('xdr');exports[_0x8122('0x5')]=function(_0xf4d3e5,_0x4de3a0){logger[_0x8122('0x5')](_0xf4d3e5,_0x4de3a0?util[_0x8122('0x6')](_0x4de3a0,{'showHidden':![],'depth':null}):'');};exports['debug']=function(_0x21987a,_0x139c44){logger['debug'](_0x21987a,_0x139c44?util[_0x8122('0x6')](_0x139c44,{'showHidden':![],'depth':null}):'');};exports[_0x8122('0x7')]=function(_0x55078d,_0x2bfe98){logger[_0x8122('0x7')](_0x55078d,_0x2bfe98?util['inspect'](_0x2bfe98,{'showHidden':![],'depth':null}):'');};exports['request']=function(_0x4fa7b3,_0x52f48b){return client[_0x8122('0x8')](_0x4fa7b3,{'body':_0x52f48b})['then'](function(_0x352ba1){logger[_0x8122('0x9')](_0x8122('0xa'),_0x4fa7b3,_0x352ba1?util['inspect'](_0x352ba1,{'showHidden':![],'depth':null}):'');})[_0x8122('0xb')](function(_0x565f6e){logger[_0x8122('0x7')](_0x8122('0xa'),_0x4fa7b3,_0x565f6e?util[_0x8122('0x6')](_0x565f6e,{'showHidden':![],'depth':null}):'');});};function getUser(_0x2d2560){return client[_0x8122('0x8')](_0x8122('0xc'),{'options':{'raw':!![],'attributes':['id',_0x8122('0xd'),_0x8122('0xe'),_0x8122('0xf')],'where':_0x2d2560,'limit':0x1}})[_0x8122('0x10')](function(_0xfa15a2){logger[_0x8122('0x9')]('[utils][getUser]\x20where:%s',JSON[_0x8122('0x11')](_0x2d2560),_0xfa15a2?util['inspect'](_0xfa15a2,{'showHidden':![],'depth':null}):'');return _0xfa15a2[_0x8122('0x12')]['length']?_0xfa15a2[_0x8122('0x12')][0x0]:null;});}exports[_0x8122('0x13')]=function(_0x394b27){return new BPromise(function(_0x4bfb9e,_0x4e932f){if(_0x394b27){return getUser({'internal':_0x394b27})['then'](function(_0x5c93f6){logger['info'](_0x8122('0x14'),_0x394b27,_0x5c93f6?_0x8122('0x15'):_0x8122('0x16'));return _0x4bfb9e(_0x5c93f6);})['catch'](function(_0x5df55f){logger[_0x8122('0x7')](_0x8122('0x17'),_0x5df55f?util[_0x8122('0x6')](_0x5df55f,{'showHidden':![],'depth':null}):'');return _0x4bfb9e(null);});}return _0x4bfb9e(null);});};exports['getUserByInterface']=function(_0x15e635){return new BPromise(function(_0x1c0189,_0x27f204){if(_0x15e635){return getUser({'interface':_0x15e635})[_0x8122('0x10')](function(_0x3c6226){logger[_0x8122('0x5')](_0x8122('0x18'),_0x15e635,_0x3c6226?_0x8122('0x15'):'notfound');return _0x1c0189(_0x3c6226);})[_0x8122('0xb')](function(_0x5cfa77){logger[_0x8122('0x7')](_0x8122('0x19'),_0x5cfa77?util[_0x8122('0x6')](_0x5cfa77,{'showHidden':![],'depth':null}):'');return _0x1c0189(null);});}return _0x1c0189(null);});};exports[_0x8122('0x1a')]=function(_0x1c80f9){return new BPromise(function(_0x240a6d,_0x40e945){if(_0x1c80f9){return getUser({'name':_0x1c80f9})[_0x8122('0x10')](function(_0x22f094){logger['info'](_0x8122('0x1b'),_0x1c80f9,_0x22f094?_0x8122('0x15'):_0x8122('0x16'));return _0x240a6d(_0x22f094);})[_0x8122('0xb')](function(_0x2f8d73){logger[_0x8122('0x7')](_0x8122('0x1c'),_0x2f8d73?util[_0x8122('0x6')](_0x2f8d73,{'showHidden':![],'depth':null}):'');return _0x240a6d(null);});}return _0x240a6d(null);});};exports[_0x8122('0x1d')]=function(_0x4610b1){return new BPromise(function(_0x4c70f4,_0x49531a){if(_0x4610b1){return client[_0x8122('0x8')](_0x8122('0x1e'),{'options':{'raw':!![],'attributes':['id','name','type',_0x8122('0x1f'),_0x8122('0x20')],'where':{'name':_0x4610b1},'limit':0x1}})[_0x8122('0x10')](function(_0x552910){logger['debug'](_0x8122('0x21'),_0x4610b1,_0x552910?util[_0x8122('0x6')](_0x552910,{'showHidden':![],'depth':null}):'');logger[_0x8122('0x5')](_0x8122('0x22'),_0x4610b1,_0x552910?_0x8122('0x15'):_0x8122('0x16'));return _0x4c70f4(_0x552910[_0x8122('0x12')][_0x8122('0x23')]?_0x552910[_0x8122('0x12')][0x0]:null);})[_0x8122('0xb')](function(_0x51af4d){logger[_0x8122('0x7')](_0x8122('0x24'),_0x51af4d?util[_0x8122('0x6')](_0x51af4d,{'showHidden':![],'depth':null}):'');return _0x4c70f4(null);});}return _0x4c70f4(null);});};exports[_0x8122('0x25')]=function(_0x24481a,_0x5aeb14){return moment(_0x24481a)[_0x8122('0x26')](_0x5aeb14,_0x8122('0x27'))['format']('YYYY-MM-DD\x20HH:mm:ss');};exports[_0x8122('0x28')]=function(_0x4b4a3b,_0x5362fe){return moment(_0x4b4a3b)[_0x8122('0x29')](_0x5362fe,'seconds')['format'](_0x8122('0x2a'));};exports[_0x8122('0x2b')]=function(_0x5e2ffe,_0x3e9114){return moment(_0x5e2ffe)['diff'](moment(_0x3e9114),_0x8122('0x27'));};exports['sumTime']=function(_0x1fe9de,_0x4f1d9){return parseInt(_0x1fe9de,0xa)+parseInt(_0x4f1d9,0xa);};exports['now']=function(){return moment()['format']('YYYY-MM-DD\x20HH:mm:ss');};exports[_0x8122('0x2c')]=function(_0x119719,_0x54e826){if(_0x54e826){return moment(_0x119719)[_0x8122('0x2c')](_0x54e826);}return!![];};exports[_0x8122('0x2d')]=function(_0x373b17,_0x21dfce){if(_0x21dfce){return moment(_0x373b17)['isBefore'](_0x21dfce);}else if(_0x373b17){return!![];}return![];};
\ No newline at end of file
+var _0x1f0e=['notfound','[utils][getUserByName]','getVoiceQueueByName','type','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','[utils][getVoiceQueueByName]','add','seconds','format','YYYY-MM-DD\x20HH:mm:ss','diffTime','diff','sumTime','isAfter','isBefore','bluebird','moment','util','client','http','xdr','info','inspect','debug','error','request','then','[utils][request]\x20name:%s','GetUser','internal','name','interface','stringify','result','getUserByInternal','catch','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','found','[utils][getUserByInterface]','[utils][getUserByName]\x20name:%s\x20%s'];(function(_0x368fb9,_0x1a9895){var _0x4892fb=function(_0x28d735){while(--_0x28d735){_0x368fb9['push'](_0x368fb9['shift']());}};_0x4892fb(++_0x1a9895);}(_0x1f0e,0xe7));var _0xe1f0=function(_0x4bb2af,_0x47935f){_0x4bb2af=_0x4bb2af-0x0;var _0x67b257=_0x1f0e[_0x4bb2af];return _0x67b257;};'use strict';var BPromise=require(_0xe1f0('0x0'));var jayson=require('jayson/promise');var moment=require(_0xe1f0('0x1'));var util=require(_0xe1f0('0x2'));var client=jayson[_0xe1f0('0x3')][_0xe1f0('0x4')]({'port':0x2329});var logger=require('../../config/logger')(_0xe1f0('0x5'));exports[_0xe1f0('0x6')]=function(_0x5a853c,_0x4a3ffc){logger['info'](_0x5a853c,_0x4a3ffc?util[_0xe1f0('0x7')](_0x4a3ffc,{'showHidden':![],'depth':null}):'');};exports[_0xe1f0('0x8')]=function(_0x44b6fa,_0x313911){logger[_0xe1f0('0x8')](_0x44b6fa,_0x313911?util['inspect'](_0x313911,{'showHidden':![],'depth':null}):'');};exports[_0xe1f0('0x9')]=function(_0x19b440,_0x24726e){logger[_0xe1f0('0x9')](_0x19b440,_0x24726e?util[_0xe1f0('0x7')](_0x24726e,{'showHidden':![],'depth':null}):'');};exports[_0xe1f0('0xa')]=function(_0x131eba,_0x158c68){return client[_0xe1f0('0xa')](_0x131eba,{'body':_0x158c68})[_0xe1f0('0xb')](function(_0x4eee6){logger[_0xe1f0('0x8')](_0xe1f0('0xc'),_0x131eba,_0x4eee6?util[_0xe1f0('0x7')](_0x4eee6,{'showHidden':![],'depth':null}):'');})['catch'](function(_0x52b423){logger[_0xe1f0('0x9')]('[utils][request]\x20name:%s',_0x131eba,_0x52b423?util[_0xe1f0('0x7')](_0x52b423,{'showHidden':![],'depth':null}):'');});};function getUser(_0x4f9518){return client['request'](_0xe1f0('0xd'),{'options':{'raw':!![],'attributes':['id',_0xe1f0('0xe'),_0xe1f0('0xf'),_0xe1f0('0x10')],'where':_0x4f9518,'limit':0x1}})[_0xe1f0('0xb')](function(_0x575377){logger['debug']('[utils][getUser]\x20where:%s',JSON[_0xe1f0('0x11')](_0x4f9518),_0x575377?util[_0xe1f0('0x7')](_0x575377,{'showHidden':![],'depth':null}):'');return _0x575377[_0xe1f0('0x12')]['length']?_0x575377[_0xe1f0('0x12')][0x0]:null;});}exports[_0xe1f0('0x13')]=function(_0x3c475f){return new BPromise(function(_0xf37786,_0x1fce05){if(_0x3c475f){return getUser({'internal':_0x3c475f})['then'](function(_0x12fb24){logger[_0xe1f0('0x6')]('[utils][getUserByInternal]\x20internal:%s\x20%s',_0x3c475f,_0x12fb24?'found':'notfound');return _0xf37786(_0x12fb24);})[_0xe1f0('0x14')](function(_0xde495d){logger[_0xe1f0('0x9')](_0xe1f0('0x15'),_0xde495d?util[_0xe1f0('0x7')](_0xde495d,{'showHidden':![],'depth':null}):'');return _0xf37786(null);});}return _0xf37786(null);});};exports[_0xe1f0('0x16')]=function(_0xe9abf2){return new BPromise(function(_0x4367aa,_0x4cc41f){if(_0xe9abf2){return getUser({'interface':_0xe9abf2})[_0xe1f0('0xb')](function(_0x577c00){logger[_0xe1f0('0x6')](_0xe1f0('0x17'),_0xe9abf2,_0x577c00?_0xe1f0('0x18'):'notfound');return _0x4367aa(_0x577c00);})['catch'](function(_0xd8d7cf){logger['error'](_0xe1f0('0x19'),_0xd8d7cf?util[_0xe1f0('0x7')](_0xd8d7cf,{'showHidden':![],'depth':null}):'');return _0x4367aa(null);});}return _0x4367aa(null);});};exports['getUserByName']=function(_0x50d3c5){return new BPromise(function(_0x32b43b,_0x291a55){if(_0x50d3c5){return getUser({'name':_0x50d3c5})[_0xe1f0('0xb')](function(_0xc535c4){logger[_0xe1f0('0x6')](_0xe1f0('0x1a'),_0x50d3c5,_0xc535c4?_0xe1f0('0x18'):_0xe1f0('0x1b'));return _0x32b43b(_0xc535c4);})[_0xe1f0('0x14')](function(_0x3800f6){logger[_0xe1f0('0x9')](_0xe1f0('0x1c'),_0x3800f6?util[_0xe1f0('0x7')](_0x3800f6,{'showHidden':![],'depth':null}):'');return _0x32b43b(null);});}return _0x32b43b(null);});};exports[_0xe1f0('0x1d')]=function(_0x338168){return new BPromise(function(_0x2eb725,_0x542b67){if(_0x338168){return client['request']('GetVoiceQueue',{'options':{'raw':!![],'attributes':['id','name',_0xe1f0('0x1e'),'acw','acwTimeout'],'where':{'name':_0x338168},'limit':0x1}})['then'](function(_0xf6efd1){logger[_0xe1f0('0x8')](_0xe1f0('0x1f'),_0x338168,_0xf6efd1?util[_0xe1f0('0x7')](_0xf6efd1,{'showHidden':![],'depth':null}):'');logger[_0xe1f0('0x6')](_0xe1f0('0x20'),_0x338168,_0xf6efd1?_0xe1f0('0x18'):_0xe1f0('0x1b'));return _0x2eb725(_0xf6efd1[_0xe1f0('0x12')]['length']?_0xf6efd1[_0xe1f0('0x12')][0x0]:null);})[_0xe1f0('0x14')](function(_0x217fdb){logger[_0xe1f0('0x9')](_0xe1f0('0x21'),_0x217fdb?util['inspect'](_0x217fdb,{'showHidden':![],'depth':null}):'');return _0x2eb725(null);});}return _0x2eb725(null);});};exports['addTime']=function(_0x50f803,_0x24198d){return moment(_0x50f803)[_0xe1f0('0x22')](_0x24198d,_0xe1f0('0x23'))[_0xe1f0('0x24')]('YYYY-MM-DD\x20HH:mm:ss');};exports['subtractTime']=function(_0x7c4cb9,_0x397d32){return moment(_0x7c4cb9)['subtract'](_0x397d32,_0xe1f0('0x23'))[_0xe1f0('0x24')](_0xe1f0('0x25'));};exports[_0xe1f0('0x26')]=function(_0x184c85,_0x154ef2){return moment(_0x184c85)[_0xe1f0('0x27')](moment(_0x154ef2),'seconds');};exports[_0xe1f0('0x28')]=function(_0x583113,_0x11daa2){return parseInt(_0x583113,0xa)+parseInt(_0x11daa2,0xa);};exports['now']=function(){return moment()[_0xe1f0('0x24')]('YYYY-MM-DD\x20HH:mm:ss');};exports[_0xe1f0('0x29')]=function(_0x2afb9d,_0x3a20e3){if(_0x3a20e3){return moment(_0x2afb9d)[_0xe1f0('0x29')](_0x3a20e3);}return!![];};exports[_0xe1f0('0x2a')]=function(_0x3fbbe7,_0x2d7050){if(_0x2d7050){return moment(_0x3fbbe7)[_0xe1f0('0x2a')](_0x2d7050);}else if(_0x3fbbe7){return!![];}return![];};
\ No newline at end of file